ZGlmZiAtLWdpdCBhLy5naXRhdHRyaWJ1dGVzIGIvLmdpdGF0dHJpYnV0ZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGI3ZTRkYwotLS0gL2Rldi9udWxsCisrKyBiLy5naXRhdHRyaWJ1dGVzCkBAIC0wLDAgKzEsODIgQEAKKyogdGV4dD1hdXRvICFlb2wKKworKi5jIHRleHQgIWVvbAorKi5jYyB0ZXh0ICFlb2wKKyouY2xhc3NwYXRoIHRleHQgIWVvbAorKi5jcHAgdGV4dCAhZW9sCisqLmNzcyB0ZXh0ICFlb2wKKyouZHNwIHRleHQgIWVvbAorKi5kc3cgdGV4dCAhZW9sCisqLmZpbHRlcnMgdGV4dCAhZW9sCisqLmggdGV4dCAhZW9sCisqLmh0bSB0ZXh0ICFlb2wKKyouaHRtbCB0ZXh0ICFlb2wKKyouaW4gdGV4dCAhZW9sCisqLmphdmEgdGV4dCAhZW9sCisqLmxhdW5jaCB0ZXh0ICFlb2wKKyoubWFrIHRleHQgIWVvbAorKi5tZCB0ZXh0ICFlb2wKKyouTUYgdGV4dCAhZW9sCisqLm1rIHRleHQgIWVvbAorKi5wbCB0ZXh0ICFlb2wKKyoucG0gdGV4dCAhZW9sCisqLnByb2plY3QgdGV4dCAhZW9sCisqLnByb3BlcnRpZXMgdGV4dCAhZW9sCisqLnB5IHRleHQgIWVvbAorKi5yYyB0ZXh0ICFlb2wKKyouc2ggdGV4dCBlb2w9bGYKKyouc2xuIHRleHQgIWVvbAorKi5zdHViIHRleHQgIWVvbAorKi50eHQgdGV4dCAhZW9sCisqLnVjbSB0ZXh0ICFlb2wKKyoudmNwcm9qIHRleHQgIWVvbAorKi52Y3hwcm9qIHRleHQgIWVvbAorKi54bWwgdGV4dCAhZW9sCisqLnhzbCB0ZXh0ICFlb2wKKyoueHNsdCB0ZXh0ICFlb2wKK01ha2VmaWxlIHRleHQgIWVvbAorY29uZmlndXJlIHRleHQgIWVvbAorTElDRU5TRSB0ZXh0ICFlb2wKK1JFQURNRSB0ZXh0ICFlb2wKKworKi5iaW4gLXRleHQKKyouYnJrIC10ZXh0CisqLmNudiAtdGV4dAorKi5pY3UgLXRleHQKKyoucmVzIC10ZXh0CisqLm5ybSAtdGV4dAorKi5zcHAgLXRleHQKKyoudHJpMiAtdGV4dAorCitzcmMvY29tL2libS9pY3UvZGV2L2RhdGEvVGhhaVdvcmRGcmVxLnhscyAtdGV4dAorc3JjL2NvbS9pYm0vaWN1L2Rldi9kYXRhL2hvbGlkYXlzX2pwLnVjcyAtdGV4dAorc3JjL2NvbS9pYm0vaWN1L2Rldi9kYXRhL3JiYmkvZW5nbGlzaC5kaWN0IC10ZXh0CitzcmMvY29tL2libS9pY3UvZGV2L2RhdGEvdGhhaTYudWNzIC10ZXh0CitzcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvcGVyZi9kYXRhL2NvbGxhdGlvbi9UZXN0TmFtZXNfQXNpYW4udHh0IC10ZXh0CitzcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvcGVyZi9kYXRhL2NvbGxhdGlvbi9UZXN0TmFtZXNfQ2hpbmVzZS50eHQgLXRleHQKK3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9wZXJmL2RhdGEvY29sbGF0aW9uL1Rlc3ROYW1lc19KYXBhbmVzZS50eHQgLXRleHQKK3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9wZXJmL2RhdGEvY29sbGF0aW9uL1Rlc3ROYW1lc19KYXBhbmVzZV9oLnR4dCAtdGV4dAorc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3BlcmYvZGF0YS9jb2xsYXRpb24vVGVzdE5hbWVzX0phcGFuZXNlX2sudHh0IC10ZXh0CitzcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvcGVyZi9kYXRhL2NvbGxhdGlvbi9UZXN0TmFtZXNfS29yZWFuLnR4dCAtdGV4dAorc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3BlcmYvZGF0YS9jb2xsYXRpb24vVGVzdE5hbWVzX0xhdGluLnR4dCAtdGV4dAorc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3BlcmYvZGF0YS9jb2xsYXRpb24vVGVzdE5hbWVzX1NlcmJpYW5TSC50eHQgLXRleHQKK3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9wZXJmL2RhdGEvY29sbGF0aW9uL1Rlc3ROYW1lc19TZXJiaWFuU1IudHh0IC10ZXh0CitzcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvcGVyZi9kYXRhL2NvbGxhdGlvbi9UZXN0TmFtZXNfU2ltcGxpZmllZF9DaGluZXNlLnR4dCAtdGV4dAorc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3BlcmYvZGF0YS9jb2xsYXRpb24vVGVzdE5hbWVzX1RoYWkudHh0IC10ZXh0CitzcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0lDVUxvY2FsZURhdGEuamFyIC10ZXh0CitzcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL2ludnVjYS5pY3UgLXRleHQKK3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvcG5hbWVzLmljdSAtdGV4dAorc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS90aGFpX2RpY3QgLXRleHQKK3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvdWNhZGF0YS5pY3UgLXRleHQKK3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvdW5hbWVzLmljdSAtdGV4dAorc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS91bm9ybS5pY3UgLXRleHQKK3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvdXByb3BzLmljdSAtdGV4dAorCisjIFRoZSBmb2xsb3dpbmcgZmlsZSB0eXBlcyBhcmUgc3RvcmVkIGluIEdpdC1MRlMuCisqLmphciBmaWx0ZXI9bGZzIGRpZmY9bGZzIG1lcmdlPWxmcyAtdGV4dAorKi5kYXQgZmlsdGVyPWxmcyBkaWZmPWxmcyBtZXJnZT1sZnMgLXRleHQKKyouemlwIGZpbHRlcj1sZnMgZGlmZj1sZnMgbWVyZ2U9bGZzIC10ZXh0CisqLmd6IGZpbHRlcj1sZnMgZGlmZj1sZnMgbWVyZ2U9bGZzIC10ZXh0CisqLmJ6MiBmaWx0ZXI9bGZzIGRpZmY9bGZzIG1lcmdlPWxmcyAtdGV4dAorKi5naWYgZmlsdGVyPWxmcyBkaWZmPWxmcyBtZXJnZT1sZnMgLXRleHQKKwpkaWZmIC0tZ2l0IGEvYnVpbGQuYmF0IGIvYnVpbGQuYmF0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmZjM2I5M2UKLS0tIC9kZXYvbnVsbAorKysgYi9idWlsZC5iYXQKQEAgLTAsMCArMSwxNSBAQAorQGVjaG8gb2ZmCisKK1JFTSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitSRU0gKiBDb3B5cmlnaHQgKEMpIDE5OTcgLSAyMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAKK1JFTSAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK1JFTSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1JFTSAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9BdHRpYy9idWlsZC5iYXQsdiAkIAorUkVNICREYXRlOiAyMDAxLzExLzI5IDE4OjE4OjEwICQgCitSRU0gJFJldmlzaW9uOiAxLjUgJAorCitSRU0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitSRU0gY29udmllbmNlIGJhdCBmaWxlIHRvIGJ1aWxkIHdpdGgKK2phdmEgLWNsYXNzcGF0aCAiJUpBVkFfSE9NRSVcbGliXHRvb2xzLmphcjslQU5UX0hPTUUlXGxpYlxhbnQuamFyOyVDTEFTU1BBVEglIiBvcmcuYXBhY2hlLnRvb2xzLmFudC5NYWluICUxICUyICUzICU0ICU1CmRpZmYgLS1naXQgYS9idWlsZC5zaCBiL2J1aWxkLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjZhNjUzNGMKLS0tIC9kZXYvbnVsbAorKysgYi9idWlsZC5zaApAQCAtMCwwICsxLDE2IEBACisjLyoKKyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyMqIENvcHlyaWdodCAoQykgMTk5NyAtIDIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kCisjKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjKgorIyogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovQXR0aWMvYnVpbGQuc2gsdiAkIAorIyogJERhdGU6IDIwMDIvMDMvMTggMjI6MTE6MDQgJCAKKyMqICRSZXZpc2lvbjogMS41ICQKKyMqCisjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIyovCisjIS9iaW4vc2gKK0NMQVNTUEFUSD0kSkFWQV9IT01FL3Rvb2xzLmphcjokQU5UX0hPTUUvbGliL2FudC5qYXIKK2VjaG8gamF2YSAtY2xhc3NwYXRoICRDTEFTU1BBVEggb3JnLmFwYWNoZS50b29scy5hbnQuTWFpbiAkKiAKK2phdmEgLWNsYXNzcGF0aCAkQ0xBU1NQQVRIIG9yZy5hcGFjaGUudG9vbHMuYW50Lk1haW4gJCoKZGlmZiAtLWdpdCBhL2J1aWxkLnhtbCBiL2J1aWxkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDNmMWJmCi0tLSAvZGV2L251bGwKKysrIGIvYnVpbGQueG1sCkBAIC0wLDAgKzEsMzIxIEBACis8IS0tCisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmlnaHQgKEMpIDE5OTctMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9idWlsZC54bWwsdiAkCisqICREYXRlOiAyMDAyLzEyLzEzIDAwOjE5OjQwICQKKyogJFJldmlzaW9uOiAxLjYyICQKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogVGhpcyBpcyB0aGUgYW50IGJ1aWxkIGZpbGUgZm9yIElDVTRKLiAgU2VlIHJlYWRtZS5odG1sIGZvciBtb3JlIGluZm9ybWF0aW9uLgorKi8KKy0tPgorCis8cHJvamVjdCBuYW1lPSJJQ1U0SiIgZGVmYXVsdD0iY29yZSIgYmFzZWRpcj0iLiI+CisKKyAgICA8IS0tICMjIyBiZWdpbiBjbG92ZXIgc2V0dXAgIyMjIC0tPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJpY3U0ai50ZW1wZGlyIiB2YWx1ZT0idG1wIi8+CisgICAgPHByb3BlcnR5IG5hbWU9ImNsb3Zlci5pbml0c3RyaW5nIiB2YWx1ZT0iJHtpY3U0ai50ZW1wZGlyfS9pY3U0ai5kYiIvPgorICAgIDxwYXRoIGlkPSJjbG92ZXIuY2xhc3NwYXRoIj4KKwk8IS0tICoqKioqIHlvdSB3aWxsIG5lZWQgdG8gY2hhbmdlIHRoZSBwYXRocyBiZWxvdyB0byBwb2ludAorCSAgICAgICAgICAgdG8gY2xvdmVyLmphciBhbmQgdmVsb2NpdHkuamFyIG9uIHlvdXIgZmlsZXN5c3RlbSAqKioqKiAtLT4KKyAgICA8cGF0aGVsZW1lbnQgcGF0aD0iJHtqYXZhLmNsYXNzLnBhdGh9LyIvPgorCTxwYXRoZWxlbWVudCBsb2NhdGlvbj0iY2xvdmVyLmphciIvPgorCTxwYXRoZWxlbWVudCBsb2NhdGlvbj0idmVsb2NpdHkuamFyIi8+CisgICAgPC9wYXRoPgorCisgICAgPCEtLSB0YXJnZXQgdG8gc3dpdGNoIENsb3ZlciBvbiAtLT4KKyAgICA8dGFyZ2V0IG5hbWU9IndpdGguY2xvdmVyIj4KKwkJPHByb3BlcnR5IG5hbWU9ImJ1aWxkLmNvbXBpbGVyIiB2YWx1ZT0ib3JnLmFwYWNoZS50b29scy5hbnQudGFza2RlZnMuQ2xvdmVyQ29tcGlsZXJBZGFwdGVyIi8+CisKKwkJPCEtLSBpbnN0cnVjdCBjbG92ZXIgdG8gdXNlIGEgY2xhc3MtYmFzZWQgaW5zdHJ1bWVudGF0aW9uIHN0cmF0ZWd5IHdoZW4gaW5zdHJ1bWVudGluZyBTaW1wbGVUaW1lWm9uZS5qYXZhIC0tPgorCQk8cHJvcGVydHkgbmFtZT0iY2xvdmVyLnVzZWNsYXNzLmluY2x1ZGVzIiB2YWx1ZT0iKiovU2ltcGxlVGltZVpvbmUuamF2YSIvPgorICAgIDwvdGFyZ2V0PgorCisgICAgPCEtLSB0YXJnZXQgdG8gZ2VuZXJhdGUgYSBDbG92ZXIgaHRtbCByZXBvcnQgLS0+CisgICAgPHRhcmdldCBuYW1lPSJjbG92ZXIucmVwb3J0Ij4KKwk8amF2YSBjbGFzc25hbWU9ImNvbS5jb3J0ZXhlYi50b29scy5jbG92ZXIucmVwb3J0ZXJzLmh0bWwuSHRtbFJlcG9ydGVyIiBmb3JrPSJ5ZXMiPgorCSAgICA8YXJnIGxpbmU9Ii0tb3V0cHV0ZGlyICR7aWN1NGoudGVtcGRpcn0vaWN1NGpfaHRtbCAtLXNob3dTcmMgLS1pbml0c3RyaW5nICR7Y2xvdmVyLmluaXRzdHJpbmd9IC0tdGl0bGUgJ2ljdTRqIGNvcmUnIi8+CisJICAgIDxjbGFzc3BhdGggcmVmaWQ9ImNsb3Zlci5jbGFzc3BhdGgiLz4KKwk8L2phdmE+CisgICAgPC90YXJnZXQ+CisgICAgPCEtLSAjIyMgZW5kIGNsb3ZlciBzZXR1cCAjIyMgLS0+CisKKyAgICA8dGFyZ2V0IG5hbWU9ImFudGhhY2sxIj4KKyAgICAgICAgPCEtLSBJdCdzIGEgcmVhbCBwYWluIHRvIHNldCBwcm9wZXJ0aWVzIGNvbmRpdGlvbmFsbHkuCisgICAgICAgICAgQW50IDEuNSBpc24ndCByZWFsbHkgYW55IGJldHRlciB0aGFuIDEuNCwgaW4gZmFjdCAxLjUgZW5mb3JjZXMgdGhhdAorICAgICAgICAgIHByb3BlcnRpZXMgYXJlIHdyaXRlLW9uY2Ugc28geW91IGNhbid0IGV2ZW4gc2V0IGEgZGVmYXVsdCBhbmQgdGhlbgorICAgICAgICAgIG92ZXJyaWRlIGl0LCB3aGljaCB3ZSB1c2VkIHRvIGRvIGZvciBBbnQgMS40LiAtLT4KKyAgICAgICAgPGNvbmRpdGlvbiBwcm9wZXJ0eT0idmVyc2lvbi4xLjQiPgorICAgICAgICA8b3I+CisJICAgIDxlcXVhbHMgYXJnMT0iJHthbnQuamF2YS52ZXJzaW9ufSIgYXJnMj0iMS40Ii8+CisgICAgICAgIDwvb3I+CisgICAgICAgIDwvY29uZGl0aW9uPgorCisJPGNvbmRpdGlvbiBwcm9wZXJ0eT0iZG9jLnBhcmFtcyIKKwkgICAgdmFsdWU9Ii1icmVha2l0ZXJhdG9yIC11c2UgLXRhZ2xldHBhdGggLi9jbGFzc2VzIC10YWdsZXQgY29tLmlibS5pY3UuZGV2LnRvb2wuZG9jcy5JQ1VUYWdsZXQgLWdyb3VwICdJQ1UgQ29yZScgJ2NvbS5pYm0uaWN1LmxhbmcqOmNvbS5pYm0uaWN1Lm1hdGgqOmNvbS5pYm0uaWN1LnRleHQqOmNvbS5pYm0uaWN1LnV0aWwqJyAtZ3JvdXAgJ0lDVSBUb29scycgJ2NvbS5pYm0uaWN1LmRldionIC1ncm91cCAnUmljaCBUZXh0IEVkaXRpbmcnICdjb20uaWJtLnJpY2h0ZXh0KiciPgorICAgICAgICAgICAgPGVxdWFscyBhcmcxPSIke3ZlcnNpb24uMS40fSIgYXJnMj0idHJ1ZSIvPgorCTwvY29uZGl0aW9uPgorICAgIDwvdGFyZ2V0PgorCisgICAgPHRhcmdldCBuYW1lPSJhbnRoYWNrMiIgdW5sZXNzPSJkb2MucGFyYW1zIj4KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9ImRvYy5wYXJhbXMiIHZhbHVlPSIiLz4KKyAgICA8L3RhcmdldD4KKworICAgIDx0YXJnZXQgbmFtZT0iaW5pdCI+CisgICAgICAgIDx0c3RhbXAvPgorICAgICAgICA8cHJvcGVydHkgbmFtZT0ic3JjLmRpciIgdmFsdWU9InNyYyIvPgorICAgICAgICA8cHJvcGVydHkgbmFtZT0iYnVpbGQuZGlyIiB2YWx1ZT0iY2xhc3NlcyIvPgorICAgICAgICA8cHJvcGVydHkgbmFtZT0iZG9jLmRpciIgdmFsdWU9ImRvYyIvPgorICAgICAgICA8cHJvcGVydHkgbmFtZT0iamFyLmZpbGUiIHZhbHVlPSJpY3U0ai5qYXIiLz4KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9ImljdTRqLm1hbmlmZXN0IiB2YWx1ZT0iJHtzcmMuZGlyfS9jb20vaWJtL2ljdS9tYW5pZmVzdC5zdHViIi8+CisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ6aXAuZmlsZSIgdmFsdWU9Ii4uL2ljdTRqJHtEU1RBTVB9LnppcCIvPgorICAgICAgICA8cHJvcGVydHkgbmFtZT0iemlwU3JjLmZpbGUiIHZhbHVlPSIuLi9pY3U0alNyYyR7RFNUQU1QfS56aXAiLz4KKworCTxwYXRoIGlkPSJidWlsZC5jbGFzc3BhdGgiPgorCSAgICA8cGF0aGVsZW1lbnQgcGF0aD0iJHtidWlsZC5kaXJ9Ii8+CisJICAgIDxwYXRoIHJlZmlkPSJjbG92ZXIuY2xhc3NwYXRoIi8+CisJPC9wYXRoPgorCisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJyaWNoZWRpdC5kaXIiIHZhbHVlPSJyaWNoZWRpdCIvPgorICAgICAgICA8cHJvcGVydHkgbmFtZT0icmljaGVkaXQuZG9jLmRpciIgdmFsdWU9IiR7cmljaGVkaXQuZGlyfS9kb2MiLz4KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9InJpY2hlZGl0Lmphci5maWxlIiB2YWx1ZT0iJHtyaWNoZWRpdC5kaXJ9L3JpY2hlZGl0LmphciIvPgorICAgICAgICA8cHJvcGVydHkgbmFtZT0icmljaGVkaXQuemlwLmZpbGUiIHZhbHVlPSIke3JpY2hlZGl0LmRpcn0vcmljaGVkaXQuemlwIi8+CisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJyaWNoZWRpdC5tYW5pZmVzdCIgdmFsdWU9IiR7c3JjLmRpcn0vY29tL2libS9yaWNodGV4dC9tYW5pZmVzdC5zdHViIi8+CisKKyAgICAgICAgPG1rZGlyIGRpcj0iJHtidWlsZC5kaXJ9Ii8+CisJPHVwdG9kYXRlIHByb3BlcnR5PSJpY3U0ai5yZXNvdXJjZXMiIHRhcmdldGZpbGU9IiR7c3JjLmRpcn0vY29tL2libS9pY3UvaW1wbC9kYXRhL0lDVUxvY2FsZURhdGEuamFyIj4KKwkgICAgPCEtLSBub3RlIG11c3Qgbm90IGhhdmUgJy8nIGJlZm9yZSAnY29tJyBpbiBzcmNmaWxlcyBpbmNsdWRlcyBhcmchIC0tPgorCSAgICA8c3JjZmlsZXMgZGlyPSIke2J1aWxkLmRpcn0iIGluY2x1ZGVzPSJjb20vaWJtL2ljdS9pbXBsL2RhdGEvTG9jYWxlRWxlbWVudHNfaW5kZXguY2xhc3MiLz4KKwk8L3VwdG9kYXRlPgorICAgICAgICA8ZWNobyBtZXNzYWdlPSJqYXZhIGhvbWU6ICR7amF2YS5ob21lfSIvPgorICAgICAgICA8ZWNobyBtZXNzYWdlPSJqYXZhIHZlcnNpb246ICR7amF2YS52ZXJzaW9ufSIvPgorICAgICAgICA8ZWNobyBtZXNzYWdlPSJhbnQgamF2YSB2ZXJzaW9uOiAke2FudC5qYXZhLnZlcnNpb259Ii8+CisgICAgICAgIDxlY2hvIG1lc3NhZ2U9IiR7YW50LnZlcnNpb259Ii8+CisgICAgPC90YXJnZXQ+CisKKyAgICA8IS0tIGJ1aWxkIGV2ZXJ5dGhpbmcgYnV0IGRpc3QtcmVsYXRlZCBzdHVmZiAtLT4KKyAgICA8dGFyZ2V0IG5hbWU9ImFsbCIgZGVwZW5kcz0iY29yZSx0ZXN0cyx0b29scyxyaWNoZWRpdCxkZW1vcyxqYXIsZG9jcyIvPgorCisJPHRhcmdldCBuYW1lPSJyZXNvdXJjZXMiIGRlcGVuZHM9ImluaXQiPgorICAgIAk8IS0tIHVzZSB0aGlzIHRhcmdldCB0byBmb3JjZSByZXNvdXJjZXMgdG8gYmUgcmVidWlsdCAtLT4KKwkJPHVuamFyIHNyYz0iJHtzcmMuZGlyfS9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSUNVTG9jYWxlRGF0YS5qYXIiIGRlc3Q9IiR7YnVpbGQuZGlyfSIvPgorIAkJPHRvdWNoIGZpbGU9IiR7YnVpbGQuZGlyfS9jb20vaWJtL2ljdS9pbXBsL2RhdGEvTG9jYWxlRWxlbWVudHNfaW5kZXguY2xhc3MiLz4KKwk8L3RhcmdldD4KKworCTx0YXJnZXQgbmFtZT0iX3Jlc291cmNlcyIgZGVwZW5kcz0iaW5pdCIgaWY9ImljdTRqLnJlc291cmNlcyI+CisgICAgCTwhLS0gdXNlIHRoaXMgdGFyZ2V0IHRvIGNvbmRpdGlvbmFsbHkgYnVpbGQgcmVzb3VyY2VzIG9ubHkgaWYgaWN1NGoucmVzb3VyY2VzIGlzIHNldCAtLT4KKwkJPHVuamFyIHNyYz0iJHtzcmMuZGlyfS9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSUNVTG9jYWxlRGF0YS5qYXIiIGRlc3Q9IiR7YnVpbGQuZGlyfSIvPgorIAkJPHRvdWNoIGZpbGU9IiR7YnVpbGQuZGlyfS9jb20vaWJtL2ljdS9pbXBsL2RhdGEvTG9jYWxlRWxlbWVudHNfaW5kZXguY2xhc3MiLz4KKwk8L3RhcmdldD4KKworCTwhLS0gY29yZSBkb2VzIG5vdCBidWlsZCByaWNoZWRpdCBvciB0ZXN0cyAtLT4KKyAgICA8dGFyZ2V0IG5hbWU9ImNvcmUiIGRlcGVuZHM9ImluaXQsY29yZURhdGEsX3Jlc291cmNlcyI+CisgICAgICAgIDxjb3B5IGZpbGU9IiR7c3JjLmRpcn0vY29tL2libS9pY3UvaW1wbC9kYXRhL3RoYWlfZGljdCIKKyAgICAgICAgICAgIHRvZGlyPSIke2J1aWxkLmRpcn0vY29tL2libS9pY3UvaW1wbC9kYXRhLyIvPjwhLS0gb25seSBuZWVkZWQgaWYgeW91IGFyZSB1c2luZyBodG1sIHJlcG9ydGVyIC0tPgorICAgICAgICA8amF2YWMgaW5jbHVkZXM9ImNvbS9pYm0vaWN1L3V0aWwvKiovKi5qYXZhLGNvbS9pYm0vaWN1L3RleHQvKiovKi5qYXZhLGNvbS9pYm0vaWN1L21hdGgvKiovKi5qYXZhLGNvbS9pYm0vaWN1L2ltcGwvKiovKi5qYXZhLGNvbS9pYm0vaWN1L2xhbmcvKi5qYXZhIgorICAgICAgICAgICAgZXhjbHVkZXM9IioqL0NWUy8qKi8qIgorICAgICAgICAgICAgc3JjZGlyPSIke3NyYy5kaXJ9IgorICAgIAkgICAgZGVzdGRpcj0iJHtidWlsZC5kaXJ9IgorICAgIAkgICAgY2xhc3NwYXRocmVmPSJidWlsZC5jbGFzc3BhdGgiCisgICAgICAgICAgICBkZWJ1Zz0ib24iIGRlcHJlY2F0aW9uPSJvZmYiLz4KKyAgICA8L3RhcmdldD4KKworICAgIDx0YXJnZXQgbmFtZT0idGVzdHMiIGRlcGVuZHM9ImNvcmUsdGVzdERhdGEiPgorICAgICAgICA8amF2YWMgaW5jbHVkZXM9ImNvbS9pYm0vaWN1L2Rldi90ZXN0LyoqLyouamF2YSIKKyAgICAgICAgICAgIGV4Y2x1ZGVzPSIqKi9DVlMvKiovKiIKKyAgICAJICAgIHNyY2Rpcj0iJHtzcmMuZGlyfSIKKyAgICAJICAgIGRlc3RkaXI9IiR7YnVpbGQuZGlyfSIKKyAgICAJICAgIGNsYXNzcGF0aHJlZj0iYnVpbGQuY2xhc3NwYXRoIgorICAgICAgICAgICAgZGVidWc9Im9uIiBkZXByZWNhdGlvbj0ib2ZmIi8+CisgICAgPC90YXJnZXQ+CisKKyAgICA8dGFyZ2V0IG5hbWU9ImRlbW9zIiBkZXBlbmRzPSJjb3JlLHRlc3REYXRhIj4KKyAgICAgICAgPGphdmFjIGluY2x1ZGVzPSJjb20vaWJtL2ljdS9kZXYvZGVtby8qKi8qLmphdmEiCisgICAgICAgICAgICBleGNsdWRlcz0iKiovQ1ZTLyoqLyoiCisgICAgCSAgICBzcmNkaXI9IiR7c3JjLmRpcn0iCisgICAgCSAgICBkZXN0ZGlyPSIke2J1aWxkLmRpcn0iCisgICAgCSAgICBjbGFzc3BhdGhyZWY9ImJ1aWxkLmNsYXNzcGF0aCIKKyAgICAgICAgICAgIGRlYnVnPSJvbiIgZGVwcmVjYXRpb249Im9mZiIvPgorICAgIDwvdGFyZ2V0PgorCisgICAgPHRhcmdldCBuYW1lPSJvbmU0dG9vbHMiIGRlcGVuZHM9ImFudGhhY2sxLGFudGhhY2syIiBpZj0idmVyc2lvbi4xLjQiPgorICAgICAgICA8amF2YWMgaW5jbHVkZXM9ImNvbS9pYm0vaWN1L2Rldi90b29sL2RvY3MvKi5qYXZhIgorICAgICAgICAgICAgZXhjbHVkZXM9IioqL0NWUy8qKi8qIgorICAgIAkgICAgc3JjZGlyPSIke3NyYy5kaXJ9IgorICAgIAkgICAgZGVzdGRpcj0iJHtidWlsZC5kaXJ9IgorICAgIAkgICAgY2xhc3NwYXRocmVmPSJidWlsZC5jbGFzc3BhdGgiCisgICAgICAgICAgICBkZWJ1Zz0ib24iIGRlcHJlY2F0aW9uPSJvZmYiLz4KKyAgICA8L3RhcmdldD4KKworICAgIDx0YXJnZXQgbmFtZT0idG9vbHMiIGRlcGVuZHM9ImNvcmUsb25lNHRvb2xzIj4KKyAgICAgICAgPGphdmFjIGluY2x1ZGVzPSJjb20vaWJtL2ljdS9kZXYvdG9vbC8qKi8qLmphdmEiCisgICAgICAgICAgICBleGNsdWRlcz0iY29tL2libS9pY3UvZGV2L3Rvb2wvZG9jcy8qLCoqL0NWUy8qKi8qIgorICAgIAkgICAgc3JjZGlyPSIke3NyYy5kaXJ9IgorICAgIAkgICAgZGVzdGRpcj0iJHtidWlsZC5kaXJ9IgorICAgIAkgICAgY2xhc3NwYXRocmVmPSJidWlsZC5jbGFzc3BhdGgiCisgICAgICAgICAgICBkZWJ1Zz0ib24iIGRlcHJlY2F0aW9uPSJvZmYiLz4KKyAgICA8L3RhcmdldD4KKworPCEtLSB1c2UgZXhjbHVkZWZpbGVzIGJlbG93IHdoZW4gd2UgbW92ZSB0byBhbnQgMS41IC0tPgorCisgICAgPHRhcmdldCBuYW1lPSJkb2NzIiBkZXBlbmRzPSJhbnRoYWNrMSxhbnRoYWNrMix0b29scyI+CisgICAgICAgIDxlY2hvIG1lc3NhZ2U9ImRvYyBwYXJhbXM6ICR7ZG9jLnBhcmFtc30iLz4KKyAgICAgICAgPG1rZGlyIGRpcj0iJHtkb2MuZGlyfSIvPgorICAgICAgICA8amF2YWRvYworICAgICAgICAgICAgcGFja2FnZW5hbWVzPSJjb20uaWJtLmljdS5sYW5nLGNvbS5pYm0uaWN1LnRleHQsY29tLmlibS5pY3UudXRpbCxjb20uaWJtLmljdS5tYXRoLGNvbS5pYm0ucmljaHRleHQuZGVtbyxjb20uaWJtLnJpY2h0ZXh0LnRleHRsYXlvdXQuYXR0cmlidXRlcyxjb20uaWJtLnJpY2h0ZXh0LmF3dHVpLGNvbS5pYm0ucmljaHRleHQucHJpbnQsY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0LGNvbS5pYm0ucmljaHRleHQuc3dpbmd1aSxjb20uaWJtLnJpY2h0ZXh0LnRleHRmb3JtYXQsY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwiCisgICAgICAgICAgICBzb3VyY2VwYXRoPSIke3NyYy5kaXJ9IgorICAgICAgICAgICAgZGVzdGRpcj0iJHtkb2MuZGlyfSIKKyAgICAgICAgICAgIG5vZGVwcmVjYXRlZGxpc3Q9InRydWUiCisJICAgIHdpbmRvd3RpdGxlPSJpY3U0aiIKKwkgICAgZG9jdGl0bGU9ImljdTRqIgorCSAgICBlbmNvZGluZz0iaXNvLTg4NTktMSIKKwkgICAgZG9jZW5jb2Rpbmc9Imlzby04ODU5LTEiCisJICAgIGJvdHRvbT0iJmx0O2ZvbnQgc2l6ZT0tMT5Db3B5cmlnaHQgKGMpIDIwMDIgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuJmx0Oy9mb250PiIKKwkgICAgYWRkaXRpb25hbHBhcmFtPSIke2RvYy5wYXJhbXN9IgorICAgICAgICAvPgorICAgIDwvdGFyZ2V0PgorCisgICAgPHRhcmdldCBuYW1lID0iY29yZURhdGEiIGRlcGVuZHM9ImluaXQiPgorICAgICAgICA8Y29weSB0b2Rpcj0iJHtidWlsZC5kaXJ9L2NvbS9pYm0vaWN1L2ltcGwvZGF0YSI+CisgICAgICAgIDxmaWxlc2V0IGRpcj0iJHtzcmMuZGlyfS9jb20vaWJtL2ljdS9pbXBsL2RhdGEiCisgICAgICAgICAgICAgICAgIGluY2x1ZGVzPSJUcmFuc2xpdGVyYXRvcl8qLnR4dCwqLmljdSIvPgorICAgICAgICA8L2NvcHk+CisgICAgPC90YXJnZXQ+CisKKyAgICA8dGFyZ2V0IG5hbWUgPSJ0ZXN0RGF0YSIgZGVwZW5kcz0iaW5pdCI+CisgICAgICAgIDxjb3B5IGZpbGU9IiR7c3JjLmRpcn0vY29tL2libS9pY3UvZGV2L2RhdGEvcmJiaS9lbmdsaXNoLmRpY3QiCisgICAgCSAgICAgIHRvZGlyPSIke2J1aWxkLmRpcn0vY29tL2libS9pY3UvZGV2L2RhdGEvcmJiaSIvPgorICAgIAk8amF2YWMgaW5jbHVkZXM9ImNvbS9pYm0vaWN1L2Rldi9kYXRhLyouamF2YSIKKwkJICAgICAgICAgICAgZXhjbHVkZXM9IioqL0NWUy8qKi8qIgorCQkgICAgCSAgICBzcmNkaXI9IiR7c3JjLmRpcn0iCisJCSAgICAJICAgIGRlc3RkaXI9IiR7YnVpbGQuZGlyfSIKKwkJICAgIAkgICAgY2xhc3NwYXRocmVmPSJidWlsZC5jbGFzc3BhdGgiCisgICAgICAgICAgICBkZWJ1Zz0ib24iIGRlcHJlY2F0aW9uPSJvZmYiLz4KKyAgICA8L3RhcmdldD4KKworICAgIDwhLS0gYnVpbGRzIHJpY2hlZGl0IGFuZCByaWNoZWRpdCB0ZXN0cyAtLT4KKyAgICA8dGFyZ2V0IG5hbWU9InJpY2hlZGl0IiBkZXBlbmRzPSJpbml0Ij4KKyAgICAgICAgPGphdmFjIGluY2x1ZGVzPSJjb20vaWJtL3JpY2h0ZXh0LyoqLyouamF2YSIKKyAgICAgICAgICAgIGV4Y2x1ZGVzPSIqKi9DVlMvKiovKiIKKyAgICAJICAgIHNyY2Rpcj0iJHtzcmMuZGlyfSIKKyAgICAJICAgIGRlc3RkaXI9IiR7YnVpbGQuZGlyfSIKKyAgICAJICAgIGNsYXNzcGF0aHJlZj0iYnVpbGQuY2xhc3NwYXRoIgorICAgICAgICAgICAgZGVidWc9Im9uIiBkZXByZWNhdGlvbj0ib2ZmIi8+CisgICAgICAgIDxjb3B5IHRvZGlyPSIke2J1aWxkLmRpcn0vY29tL2libS9yaWNodGV4dC90ZXh0YXBwcy9yZXNvdXJjZXMiIG92ZXJ3cml0ZT0ieWVzIiBpbmNsdWRlRW1wdHlEaXJzPSJubyI+CisgICAgICAgICAgICA8ZmlsZXNldCBkaXI9IiR7c3JjLmRpcn0vY29tL2libS9yaWNodGV4dC90ZXh0YXBwcy9yZXNvdXJjZXMiIGluY2x1ZGVzPSIqLnJlZCIvPgorICAgICAgICA8L2NvcHk+CisgICAgPC90YXJnZXQ+CisKKyAgICA8dGFyZ2V0IG5hbWU9ImphciIgZGVwZW5kcz0iY29yZSI+CisgICAgICAgIDxqYXIgamFyZmlsZT0iJHtqYXIuZmlsZX0iCisgICAgICAgICAgICBjb21wcmVzcz0iZmFsc2UiCisgICAgICAgICAgICBpbmNsdWRlcz0iY29tL2libS9pY3UvdXRpbC8qKi8qLGNvbS9pYm0vaWN1L3RleHQvKiovKixjb20vaWJtL2ljdS9tYXRoLyoqLyosY29tL2libS9pY3UvaW1wbC8qKi8qLGNvbS9pYm0vaWN1L2xhbmcvKiovKiIKKyAgICAgICAgICAgIGJhc2VkaXI9IiR7YnVpbGQuZGlyfSIKKyAgICAgICAgICAgIG1hbmlmZXN0PSIke2ljdTRqLm1hbmlmZXN0fSIvPgorICAgIDwvdGFyZ2V0PgorCisgICAgPCEtLSBqYXJzIHVwIHJpY2hlZGl0IGJ1dCB3aXRob3V0IHRlc3RzIC0tPgorICAgIDx0YXJnZXQgbmFtZT0icmljaGVkaXRKYXIiIGRlcGVuZHM9InJpY2hlZGl0Ij4KKyAgICAgICAgPG1rZGlyIGRpcj0iJHtyaWNoZWRpdC5kaXJ9Ii8+CisgICAgICAgIDxqYXIgamFyZmlsZT0iJHtyaWNoZWRpdC5qYXIuZmlsZX0iCisgICAgICAgICAgICBjb21wcmVzcz0iZmFsc2UiCisgICAgICAgICAgICBpbmNsdWRlcz0iY29tL2libS9yaWNodGV4dC8qKi8qIgorCSAgICBleGNsdWRlcz0iY29tL2libS9yaWNodGV4dC90ZXN0LyoqLyoiCisgICAgICAgICAgICBiYXNlZGlyPSIke2J1aWxkLmRpcn0iCisgICAgICAgICAgICBtYW5pZmVzdD0iJHtyaWNoZWRpdC5tYW5pZmVzdH0iLz4KKyAgICA8L3RhcmdldD4KKworICAgIDwhLS0KKyAgICAgICAgTm90ZTogIEkgdXNlZCB0byB1c2UgLWxpbmtvZmZsaW5lIGh0dHA6Ly9qYXZhLnN1bi5jb20vcHJvZHVjdHMvamRrLzEuMi9kb2NzL2FwaS8gQzpcamRrMS4yLjJcZG9jc1xhcGkKKyAgICAgICAgVGhpcyBsaW5rcyB0byBjb3JlIGRvY3Mgb24gU3VuJ3Mgc2l0ZSAtIGEgdmVyeSBuaWNlIGZlYXR1cmUuICBCdXQgaXQgcmVxdWlyZXMgdGhlIDEuMiBkb2NzIHRvIGJlCisgICAgICAgIG9uIHRoZSBidWlsZCBtYWNoaW5lIGF0IGEga25vd24gbG9jYXRpb24uCisgICAgLS0+CisKKyAgICA8IS0tIHRoZSAncHVibGljJyBkb2NzIGZvciByaWNoZWRpdCAtLT4KKyAgICA8dGFyZ2V0IG5hbWU9InJpY2hlZGl0RG9jcyIgZGVwZW5kcz0iaW5pdCI+CisgICAgICAgIDxta2RpciBkaXI9IiR7cmljaGVkaXQuZG9jLmRpcn0iLz4KKyAgICAgICAgPGphdmFkb2MgIHBhY2thZ2VuYW1lcz0iY29tLmlibS5yaWNodGV4dC5kZW1vLGNvbS5pYm0ucmljaHRleHQuYXd0dWksY29tLmlibS5yaWNodGV4dC5zd2luZ3VpLGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dCxjb20uaWJtLnJpY2h0ZXh0LnRleHRsYXlvdXQuYXR0cmlidXRlcyxjb20uaWJtLnJpY2h0ZXh0LnByaW50IgorICAgICAgICAgICAgc291cmNlcGF0aD0iJHtzcmMuZGlyfSIKKyAgICAgICAgICAgIGRlc3RkaXI9IiR7cmljaGVkaXQuZG9jLmRpcn0iCisgICAgICAgICAgICBub2RlcHJlY2F0ZWRsaXN0PSJ0cnVlIgorCSAgICAgICAgd2luZG93dGl0bGU9IlJpY2hFZGl0IENvbnRyb2wiCisJICAgICAgICBkb2N0aXRsZT0iUmljaEVkaXQgQ29udHJvbCIKKwkgICAgICAgIGVuY29kaW5nPSJpc28tODg1OS0xIgorCSAgICAgICAgZG9jZW5jb2Rpbmc9Imlzby04ODU5LTEiCisJICAgICAgICBib3R0b209IiZsdDtmb250IHNpemU9LTE+Q29weXJpZ2h0IChjKSAxOTk4LTIwMDIgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuJmx0Oy9mb250PiIKKyAgICAJCSAgICAvPgorICAgIDwvdGFyZ2V0PgorCisgICAgPCEtLSByaWNoZWRpdCBhbHBoYXdvcmtzIGRpc3RyaWJ1dGlvbiAtIGphciBhbmQgZG9jcywgYnV0IG5vIHNvdXJjZSAtLT4KKyAgICA8dGFyZ2V0IG5hbWU9InJpY2hlZGl0WmlwIiBkZXBlbmRzPSJyaWNoZWRpdEphcixyaWNoZWRpdERvY3MiPgorICAgICAgICA8IS0tQ3JlYXRlIGEgemlwIGFyY2hpdmUgb2YgdGhlIHJpY2hlZGl0IGphciBhbmQgcmVhZG1lIC0tPgorCTxjb3B5IGZpbGU9ImxpY2Vuc2UuaHRtbCIgdG9kaXI9IiR7cmljaGVkaXQuZGlyfSIvPgorICAgICAgICA8emlwIHppcGZpbGU9IiR7cmljaGVkaXQuemlwLmZpbGV9IgorICAgICAgICAgICAgYmFzZWRpcj0iJHtyaWNoZWRpdC5kaXJ9IgorICAgICAgICAgICAgaW5jbHVkZXM9ImRvYy8qKi8qLHJpY2hlZGl0LmphcixsaWNlbnNlLmh0bWwiLz4KKyAgICA8L3RhcmdldD4KKworICAgIDx0YXJnZXQgbmFtZT0iemlwIiBkZXBlbmRzPSJkb2NzLGphciI+CisgICAgICAgIDwhLS1DcmVhdGUgYSB6aXAgYXJjaGl2ZSBvZiB0aGUgc291cmNlLCBkb2NzLCBhbmQgamFyIGZpbGUgZm9yCisgICAgICAgIGRpc3RyaWJ1dGlvbi4gIFRoZSB6aXAgZmlsZSB3aWxsIGJlIGNyZWF0ZWQgaW4gdGhlIGRpcmVjdG9yeSBhYm92ZQorICAgICAgICB0aGUgcm9vdCBJQ1U0SiBkaXJlY3RvcnkuIFRoZSBleGNsdWRlIHBhdHRlcm4gJHtzcmMuZGlyfS9jb20vaWJtL2ljdS9kZXYvZGF0YS91bmljb2RlL1VuaWNvZGVEYXRhLSoudHh0CisgICAgICAgIGFuZCAke3NyYy5kaXJ9L2RhdGEvdW5pY29kZS9TcGVjaWFsQ2FzaW5nLSoudHh0CisgICAgICAgIGVsaW1pbmF0ZXMgb2xkIGFyY2hpdmUgY29waWVzIGxpa2UgU3BlY2lhbENhc2luZy0yLnR4dCBhbmQKKyAgICAgICAgVW5pY29kZURhdGEtMi4xLjgudHh0IGV0YyAtLT4KKyAgICAgICAgPHppcCB6aXBmaWxlPSIke3ppcC5maWxlfSIKKyAgICAgICAgICAgIGJhc2VkaXI9Ii4iCisgICAgICAgICAgICBleGNsdWRlcz0iJHtyaWNoZWRpdC5kaXJ9LyoqLyosdGVzdF8qLCR7c3JjLmRpcn0vY29tL2libS9pY3UvZGV2L2RhdGEvdW5pY29kZS9Vbmljb2RlRGF0YS0qLnR4dCwke3NyYy5kaXJ9L2NvbS9pYm0vaWN1L2Rldi9kYXRhL3VuaWNvZGUvU3BlY2lhbENhc2luZy0qLnR4dCwke3NyYy5kaXJ9L2NvbS9pYm0vaWN1L2Rldi9kYXRhL3VuaWNvZGUvQ29tcG9zaXRpb25FeGNsdXNpb25zLSoudHh0LCR7b2Jzb2xldGUuZGlyfS8qKiwqKi8qfiwke3NyYy5kaXJ9LyoqLyouY2xhc3MsJHtidWlsZC5kaXJ9LyoqLCoqL0NWUy8qKi8qIi8+CisgICAgPC90YXJnZXQ+CisKKyAgICA8dGFyZ2V0IG5hbWU9InppcFNyYyIgZGVwZW5kcz0iaW5pdCI+CisgICAgICAgIDwhLS1DcmVhdGUgYSB6aXAgYXJjaGl2ZSBvZiBqdXN0IHRoZSBzb3VyY2UgZm9yIGRpc3RyaWJ1dGlvbi4gIFRoZQorICAgICAgICB6aXAgZmlsZSB3aWxsIGJlIGNyZWF0ZWQgaW4gdGhlIGRpcmVjdG9yeSBhYm92ZSB0aGUgcm9vdCBJQ1U0SgorICAgICAgICBkaXJlY3RvcnkuIFRoZSBleGNsdWRlIHBhdHRlcm4gJHtzcmMuZGlyfS9jb20vaWJtL2ljdS9kZXYvZGF0YS91bmljb2RlL1VuaWNvZGVEYXRhLSoudHh0CisgICAgICAgIGFuZCAke3NyYy5kaXJ9L2NvbS9pYm0vaWN1L2Rldi9kYXRhL3VuaWNvZGUvU3BlY2lhbENhc2luZy0qLnR4dAorICAgICAgICBlbGltaW5hdGVzIG9sZCBhcmNoaXZlIGNvcGllcyBsaWtlIFNwZWNpYWxDYXNpbmctMi50eHQgYW5kCisgICAgICAgIFVuaWNvZGVEYXRhLTIuMS44LnR4dCAtLT4KKyAgICAgICAgPHppcCB6aXBmaWxlPSIke3ppcFNyYy5maWxlfSIKKyAgICAgICAgICAgIGJhc2VkaXI9Ii4iCisgICAgICAgICAgICBleGNsdWRlcz0iJHtyaWNoZWRpdC5kaXJ9LyoqLyosdGVzdF8qLCR7c3JjLmRpcn0vY29tL2libS9pY3UvZGV2L2RhdGEvdW5pY29kZS8vVW5pY29kZURhdGEtKi50eHQsJHtzcmMuZGlyfS9jb20vaWJtL2ljdS9kZXYvZGF0YS91bmljb2RlL1NwZWNpYWxDYXNpbmctKi50eHQsJHtzcmMuZGlyfS9jb20vaWJtL2ljdS9kZXYvZGF0YS91bmljb2RlL0NvbXBvc2l0aW9uRXhjbHVzaW9ucy0qLnR4dCwke29ic29sZXRlLmRpcn0vKiosKiovKn4sJHtzcmMuZGlyfS8qKi8qLmNsYXNzLCR7YnVpbGQuZGlyfS8qKiwqKi9DVlMvKiovKiwke2RvYy5kaXJ9LyoqLCR7amFyLmZpbGV9Ii8+CisgICAgPC90YXJnZXQ+CisKKyAgICA8dGFyZ2V0IG5hbWU9ImNoZWNrIiBkZXBlbmRzPSJ0ZXN0cyI+CisJPGphdmEgY2xhc3NuYW1lPSJjb20uaWJtLmljdS5kZXYudGVzdC5UZXN0QWxsIj4KKwkgICAgPGNsYXNzcGF0aD4KKyAgICAgICAgICAgICAgICA8cGF0aGVsZW1lbnQgcGF0aD0iJHtqYXZhLmNsYXNzLnBhdGh9LyIvPgorICAgICAgICAgICAgICAgIDxwYXRoZWxlbWVudCBwYXRoPSIke2J1aWxkLmRpcn0iLz4KKyAgICAgICAgICAgIDwvY2xhc3NwYXRoPgorCTwvamF2YT4KKyAgICA8L3RhcmdldD4KKworICAgIDx0YXJnZXQgbmFtZT0iX3JlcXVpcmVzMTQiIHVubGVzcz0idmVyc2lvbi4xLjQiPgorICAgICAgICA8ZWNobyBtZXNzYWdlPSJPbmUgb2YgeW91ciB0YXJnZXRzIHJlcXVpcmVzIEpBVkFfSE9NRSB0byBiZSBzZXQgdG8gSkRLIHZlcnNpb24gMS40Ii8+CisgICAgPC90YXJnZXQ+CisKKyAgICA8dGFyZ2V0IG5hbWU9Il9jaGVja3RhZ3MiIGRlcGVuZHM9ImFudGhhY2sxLGFudGhhY2syLHRvb2xzIiBpZj0idmVyc2lvbi4xLjQiPgorICAgICAgICA8ZWNobyBtZXNzYWdlPSJkb2MgcGFyYW1zOiAke2RvYy5wYXJhbXN9Ii8+CisgICAgICAgIDxqYXZhZG9jIHNvdXJjZXBhdGg9IiR7c3JjLmRpcn0iIAorICAgICAgICAgICAgICAgICBwYWNrYWdlbmFtZXM9ImNvbS5pYm0uaWN1LioiCisgICAgICAgICAgICAgICAgIGV4Y2x1ZGVwYWNrYWdlbmFtZXM9ImNvbS5pYm0uaWN1LmRldi4qLGNvbS5pYm0uaWN1LmltcGwuKiIKKyAgICAgICAgICAgICAgICAgY2xhc3NwYXRoPSIke2J1aWxkLmRpcn0iPgorICAgICAgICAgICAgPGRvY2xldCBuYW1lPSJjb20uaWJtLmljdS5kZXYudG9vbC5kb2NzLkNoZWNrVGFncyIKKyAgICAgICAgICAgICAgICAgICAgcGF0aD0iJHtidWlsZC5kaXJ9Ij4KKyAgICAgICAgICAgICAgICA8cGFyYW0gbmFtZT0iLWJyaWVmIi8+CisgICAgICAgICAgICA8L2RvY2xldD4gICAgICAgCisgICAgICAgIDwvamF2YWRvYz4KKyAgICA8L3RhcmdldD4KKworICAgIDx0YXJnZXQgbmFtZT0iY2hlY2t0YWdzIiBkZXBlbmRzPSJhbnRoYWNrMSxhbnRoYWNrMixfcmVxdWlyZXMxNCxfY2hlY2t0YWdzIi8+CisKKyAgICA8dGFyZ2V0IG5hbWU9ImNsZWFuIiBkZXBlbmRzPSJpbml0Ij4KKyAgICAgICAgPGRlbGV0ZSBkaXI9IiR7YnVpbGQuZGlyfSIvPgorICAgICAgICA8ZGVsZXRlIGRpcj0iJHtkb2MuZGlyfSIvPgorICAgICAgICA8ZGVsZXRlIGZpbGU9IiR7amFyLmZpbGV9Ii8+CisJPGRlbGV0ZSBkaXI9IiR7cmljaGVkaXQuZGlyfSIvPgorICAgIDwvdGFyZ2V0PgorCis8L3Byb2plY3Q+CmRpZmYgLS1naXQgYS9saWNlbnNlLmh0bWwgYi9saWNlbnNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGFiMDc2YQotLS0gL2Rldi9udWxsCisrKyBiL2xpY2Vuc2UuaHRtbApAQCAtMCwwICsxLDM0IEBACis8aHRtbD4KKworPGhlYWQ+Cis8dGl0bGU+SUNVNEogbGljZW5zZSAtIElDVTRKIDEuMy4xIGFuZCBsYXRlcjwvdGl0bGU+Cis8L2hlYWQ+CisKKzxib2R5IEJHQ09MT1I9IiNmZmZmZmYiPgorPGgyPklDVTRKIGxpY2Vuc2UgLSBJQ1U0SiAxLjMuMSBhbmQgbGF0ZXI8L2gyPgorCis8cD5DT1BZUklHSFQgQU5EIFBFUk1JU1NJT04gTk9USUNFPC9wPgorCis8cD4KK0NvcHlyaWdodCAoYykgMTk5NS0yMDAxIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kIG90aGVycworPC9wPgorPHA+CitBbGwgcmlnaHRzIHJlc2VydmVkLgorPC9wPgorPHA+CitQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMKK3RvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZShzKSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUgYW5kIHRoYXQgYm90aCB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZShzKSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gc3VwcG9ydGluZyBkb2N1bWVudGF0aW9uLgorPC9wPgorPHA+CitUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVCBPRiBUSElSRCBQQVJUWSBSSUdIVFMuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIEhPTERFUlMgSU5DTFVERUQgSU4gVEhJUyBOT1RJQ0UgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIE9SIEFOWSBTUEVDSUFMIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUywgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCis8L3A+Cis8cD4KK0V4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lIG9mIGEgY29weXJpZ2h0IGhvbGRlciBzaGFsbCBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBvdGhlcndpc2UgdG8gcHJvbW90ZSB0aGUgc2FsZSwgdXNlIG9yIG90aGVyIGRlYWxpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuIGF1dGhvcml6YXRpb24gb2YgdGhlIGNvcHlyaWdodCBob2xkZXIuCis8L3A+CisKKzxocj4KKzxzbWFsbD4KK0FsbCB0cmFkZW1hcmtzIGFuZCByZWdpc3RlcmVkIHRyYWRlbWFya3MgbWVudGlvbmVkIGhlcmVpbiBhcmUgdGhlIHByb3BlcnR5IG9mIHRoZWlyIHJlc3BlY3RpdmUgb3duZXJzLgorPC9zbWFsbD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL3JlYWRtZS5odG1sIGIvcmVhZG1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTM4M2ZkZQotLS0gL2Rldi9udWxsCisrKyBiL3JlYWRtZS5odG1sCkBAIC0wLDAgKzEsNzM0IEBACis8IWRvY3R5cGUgaHRtbCBwdWJsaWMgIi0vL3czYy8vZHRkIGh0bWwgNC4wIHRyYW5zaXRpb25hbC8vZW4iPgorPGh0bWw+CisKKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Cis8dGl0bGU+UmVhZE1lIGZvciBJQ1U0SjwvdGl0bGU+Cis8IS0tCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIENvcHlyaWdodCAoQykgMjAwMS0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3JlYWRtZS5odG1sLHYgJAorKiAkRGF0ZTogMjAwMi8xMi8wNSAyMDoyOToyNyAkCisqICRSZXZpc2lvbjogMS4zOSAkCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistLT4KKzwvaGVhZD4KKworPGJvZHkgYmdjb2xvcj0iI0ZGRkZGRiIgbGluaz0iIzAwMDBGRiIgdmxpbms9IiM4MDAwODAiIGxhbmc9IkVOLVVTIj4KKworICAgIDxoMj5JbnRlcm5hdGlvbmFsIENvbXBvbmVudHMgZm9yIFVuaWNvZGUgZm9yIEphdmE8L2gyPgorICAgIDxoMz5SZWFkIE1lIGZvciBJQ1U0SiAyLjQ8L2gzPgorCis8aHIgc2l6ZT0iMiIgd2lkdGg9IjEwMCUiIGFsaWduPSJjZW50ZXIiPgorICAgIDxwPjxiPlJlbGVhc2UgRGF0ZTwvYj48YnI+CisgICAgRGVjZW1iZXIgMTV0aCwgMjAwMjwvcD4KKworPHA+Rm9yIHRoZSBtb3N0IHJlY2VudAorICAgICAgcmVsZWFzZSwgc2VlIHRoZSA8YSBocmVmPSJodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vaWN1NGovZG93bmxvYWQvaW5kZXguaHRtbCI+CisgICAgICBJQ1U0SiBkb3dubG9hZCBzaXRlPC9hPi4KKyAgICA8L1A+CisKKzxoMz48dT5Db250ZW50czwvdT48L2gzPgorCis8dWwgdHlwZT0iZGlzYyI+CisgIDxsaT48YSBocmVmPSIjaW50cm9kdWN0aW9uIj5JbnRyb2R1Y3Rpb24gdG8gSUNVNEogKEludGVybmF0aW9uYWwgQ29tcG9uZW50cyBmb3IgVW5pY29kZSBmb3IgSmF2YSk8L2E+PC9saT4KKyAgPGxpPjxhIGhyZWY9IiNsaWNlbnNlIj5MaWNlbnNlIEluZm9ybWF0aW9uPC9hPjwvbGk+CisgIDxsaT48YSBocmVmPSIjUGxhdGZvcm1EZXBlbmRlbmNpZXMiPlBsYXRmb3JtIERlcGVuZGVuY2llczwvYT48L2xpPgorICA8bGk+PGEgaHJlZj0iI2Rvd25sb2FkIj5Ib3cgdG8gRG93bmxvYWQgSUNVNEo8L2E+PC9saT4KKyAgPGxpPjxhIGhyZWY9IiNXaGF0Q29udGFpbiI+VGhlIFN0cnVjdHVyZSBhbmQgQ29udGVudHMgb2YgSUNVNEo8L2E+PC9saT4KKyAgPGxpPjxhIGhyZWY9IiNBUEkiPldoZXJlIHRvIEdldCBEb2N1bWVudGF0aW9uPC9hPjwvbGk+CisgIDxsaT48YSBocmVmPSIjSG93VG9JbnN0YWxsSmF2YWMiPkhvdyB0byBJbnN0YWxsIGFuZCBCdWlsZDwvYT48L2xpPgorICA8bGk+PGEgaHJlZj0iI3RyeWluZ291dCI+VHJ5aW5nIE91dCBJQ1U0SjwvYT48L2xpPgorICA8bGk+PGEgaHJlZj0iI3Jlc291cmNlcyI+SUNVNEogUmVzb3VyY2UgSW5mb3JtYXRpb248L2E+PC9saT4KKyAgPGxpPjxhIGhyZWY9IiNXaGVyZVRvRmluZE1vcmUiPldoZXJlIHRvIEZpbmQgTW9yZSBJbmZvcm1hdGlvbjwvYT48L2xpPgorICA8bGk+PGEgaHJlZj0iI1N1Ym1pdHRpbmdDb21tZW50cyI+U3VibWl0dGluZyBDb21tZW50cywgUmVxdWVzdGluZyBGZWF0dXJlcyBhbmQgUmVwb3J0aW5nCisgICAgQnVnczwvYT48L2xpPgorPC91bD4KKworPGgzPjxhIE5BTUU9ImludHJvZHVjdGlvbiI+PC9hPjx1PkludHJvZHVjdGlvbiB0byBJQ1U0SiAoSW50ZXJuYXRpb25hbCBDb21wb25lbnRzIGZvciBVbmljb2RlIGZvciBKYXZhKTwvdT48L2gzPgorCis8cD5Ub2RheSdzIGdsb2JhbCBtYXJrZXQgZGVtYW5kcyBwcm9ncmFtcyB0aGF0IHN1cHBvcnQgYSB3aWRlIHZhcmlldHkKKyAgICBvZiBsYW5ndWFnZXMgYW5kIG5hdGlvbmFsIGNvbnZlbnRpb25zLiZuYnNwOyBDdXN0b21lcnMgcHJlZmVyIHNvZnR3YXJlCisgICAgYW5kIHdlYiBwYWdlcyB0YWlsb3JlZCB0byB0aGVpciBuZWVkcywgc3R1ZGllcyBjb25maXJtIHRoYXQKKyAgICB0aGlzIGxlYWRzIHRvIGluY3JlYXNlZCBzYWxlcy4mbmJzcDsgIEphdmEgcHJvdmlkZXMgYSBzdHJvbmcKKyAgICBmb3VuZGF0aW9uIGZvciBnbG9iYWwgcHJvZ3JhbXMsIGFuZCBJQk0gYW5kIHRoZSBJQ1U0SiB0ZWFtIHBsYXllZAorICAgIGEga2V5IHJvbGUgaW4gcHJvdmlkaW5nIGdsb2JhbGl6YXRpb24gdGVjaG5vbG9neSB0byBTdW4gZm9yIHVzZSBpbgorICAgIEphdmEuIDwvcD4KKyAgICA8cD4KKyAgICBCdXQgSmF2YSBkb2VzIG5vdCB5ZXQgcHJvdmlkZSBhbGwgdGhlIGZlYXR1cmVzIHRoYXQgc29tZSBwcm9kdWN0cyByZXF1aXJlLiZuYnNwOyBJQ1U0SiBpcyBhbiBhZGQtb24gbGlicmFyeSB0aGF0IGV4dGVuZHMgSmF2YSdzIGdsb2JhbGl6YXRpb24gdGVjaG5vbG9neSBieSBwcm92aWRpbmcgdGhlIGZvbGxvd2luZyB0b29sczoKKyAgICA8dWw+IAorICAgIDxsaT4gCisgICAgVW5pY29kZSBOb3JtYWxpemF0aW9uIJYgTkZDLCBORkQsIE5GS0QsIE5GS0MKKyAgICAJPGJsb2NrcXVvdGU+UHJvZHVjZXMgY2Fub25pY2FsIHRleHQgcmVwcmVzZW50YXRpb25zLCBuZWVkZWQgZm9yIFhNTCBhbmQgdGhlIG5ldC48L2Jsb2NrcXVvdGU+CisgICAgPGxpPgorICAgIEludGVybmF0aW9uYWwgQ2FsZW5kYXJzIJYgQXJhYmljLCBCdWRkaGlzdCwgSGVicmV3LCBhbmQgSmFwYW5lc2U8YnI+CisgICAgICAgIDxibG9ja3F1b3RlPlJlcXVpcmVkIGZvciBjb3JyZWN0IHByZXNlbnRhdGlvbiBvZiBkYXRlcyBpbiBzb21lIGNvdW50cmllcy48L2Jsb2NrcXVvdGU+CisgICAgPGxpPiAKKyAgICBOdW1iZXIgRm9ybWF0IEVuaGFuY2VtZW50cyCWIFNjaWVudGlmaWMgTm90YXRpb24sIFNwZWxsZWQtb3V0IE51bWJlcnMKKyAgICAgICAgICAgICAgPGJsb2NrcXVvdGU+RW5oYW5jZXMgc3RhbmRhcmQgSmF2YSBudW1iZXIgZm9ybWF0dGluZy4gVGhlIHNwZWxsZWQtb3V0IGZvcm1hdCBpcyB1c2VkCitmb3IgY2hlY2tzIGFuZCBzaW1pbGFyIGRvY3VtZW50cy48L2Jsb2NrcXVvdGU+CisKKyAgICA8bGk+RW5oYW5jZWQgd29yZC1icmVhayBkZXRlY3Rpb24gliBSdWxlLWJhc2VkLCBzdXBwb3J0cyBUaGFpCisgICAgICAgICAgICAgIDxibG9ja3F1b3RlPlJlcXVpcmVkIGZvciBjb3JyZWN0IHN1cHBvcnQgb2YgVGhhaS48L2Jsb2NrcXVvdGU+CisKKyAgICA8bGk+VW5pY29kZSBUZXh0IENvbXByZXNzaW9uIJYgU3RhbmRhcmQgY29tcHJlc3Npb24gb2YgVW5pY29kZSB0ZXh0CisgICAgICAgICAgICAgIDxibG9ja3F1b3RlPlN1aXRhYmxlIGZvciBsYXJnZSBudW1iZXJzIG9mIHNtYWxsIGZpZWxkcywgd2hlcmUgTFpXIGFuZCBzaW1pbGFyIHNjaGVtZXMKK2RvIG5vdCBhcHBseS48L2Jsb2NrcXVvdGU+CisgICAgPGxpPkNvbGxhdGlvbiAtIFJ1bGUtYmFzZWQsIHVwLXRvLWRhdGUgVW5pY29kZSBDb2xsYXRpb24gQWxnb3JpdGhtIChVQ0EpIHNvcnRpbmcgb3JkZXIKKyAgICAgICAgPGJsb2NrcXVvdGU+Rm9yIGZhc3QgbXVsdGlsaW5ndWFsIHN0cmluZyBjb21wYXJpc29uPC9ibG9ja3F1b3RlPgorICAgIDwvdWw+CitJbiBzb21lIGNhc2VzLCB0aGUgYWJvdmUgc3VwcG9ydCBoYXMgYmVlbiByb2xsZWQgaW50byBhIGxhdGVyIHJlbGVhc2Ugb2YKK0phdmEuIEZvciBleGFtcGxlLCB0aGUgVGhhaSB3b3JkLWJyZWFrIGlzIG5vdyBpbiBKYXZhIDEuNC4gSG93ZXZlciwgaWYgeW91CithcmUgdXNpbmcgSmF2YSAxLjMsIHlvdSBjYW4gdXNlIHRoZSBJQ1U0SiBwYWNrYWdlIHVudGlsIHlvdSB1cGdyYWRlIHRvIDEuNC4KKzwvcD4KKworPGgzPjxhIG5hbWU9bGljZW5zZT48L2E+PHU+TGljZW5zZSBJbmZvcm1hdGlvbjwvdT48L2gzPgorPHA+CitUaGUgSUNVIHByb2plY3RzIChJQ1U0QyBhbmQgSUNVNEopIHVzZSB0aGUgWCBsaWNlbnNlLiZuYnNwOyBUaGUgWCBsaWNlbnNlIGlzIGEgPGI+bm9uLXZpcmFsPC9iPiBhbmQgcmVjb21tZW5kZWQgZnJlZSBzb2Z0d2FyZSBsaWNlbnNlIHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBHTlUgR1BMIGxpY2Vuc2UuJm5ic3A7IFRoaXMgYmVjYW1lIGVmZmVjdGl2ZSB3aXRoIHJlbGVhc2UgMS44LjEgb2YgSUNVNEMgYW5kIHJlbGVhc2UgMS4zLjEgb2YgSUNVNEogaW4gbWlkLTIwMDEuIEFsbCBuZXcgSUNVIHJlbGVhc2VzIHdpbGwgYWRvcHQgdGhlIFggbGljZW5zZTsgcHJldmlvdXMgSUNVIHJlbGVhc2VzIGNvbnRpbnVlIHRvIHV0aWxpemUgdGhlIElQTCAoSUJNIFB1YmxpYyBMaWNlbnNlKS4mbmJzcDsgVXNlcnMgb2YgcHJldmlvdXMgcmVsZWFzZXMgb2YgSUNVIHdobyB3YW50IHRvIGFkb3B0IG5ldyBJQ1UgcmVsZWFzZXMgd2lsbCBuZWVkIHRvIGFjY2VwdCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIFggbGljZW5zZS4KKzwvcD4KKzxwPgorVGhlIG1haW4gZWZmZWN0IG9mIHRoZSBjaGFuZ2UgaXMgdG8gcHJvdmlkZSBHUEwgY29tcGF0aWJpbGl0eS4mbmJzcDsgVGhlIFggbGljZW5zZSBpcyBsaXN0ZWQgYXMgR1BMIGNvbXBhdGlibGUsIHNlZSB0aGUgZ251IHBhZ2UgYXQgPGEgaHJlZj1odHRwOi8vd3d3LmdudS5vcmcvcGhpbG9zb3BoeS9saWNlbnNlLWxpc3QuaHRtbCNHUExDb21wYXRpYmxlTGljZW5zZXM+CitodHRwOi8vd3d3LmdudS5vcmcvcGhpbG9zb3BoeS9saWNlbnNlLWxpc3QuaHRtbCNHUExDb21wYXRpYmxlTGljZW5zZXM8L2E+LiAgVGhpcyBtZWFucyB0aGF0IEdQTCBwcm9qZWN0cyBjYW4gbm93IHVzZSBJQ1UgY29kZSwgaXQgZG9lcyA8Yj5ub3Q8L2I+IG1lYW4gdGhhdCBwcm9qZWN0cyB1c2luZyBJQ1UgYmVjb21lIHN1YmplY3QgdG8gR1BMLgorPC9wPgorPHA+CitUaGUgdGV4dCBvZiB0aGUgWCBsaWNlbnNlIGlzIGF2YWlsYWJsZSBhdCA8YSBocmVmPWh0dHA6Ly93d3cueC5vcmcvdGVybXMuaHRtPmh0dHA6Ly93d3cueC5vcmcvdGVybXMuaHRtPC9hPi4gVGhlIElCTSB2ZXJzaW9uIGNvbnRhaW5zIHRoZSBlc3NlbnRpYWwgdGV4dCBvZiB0aGUgbGljZW5zZSwgb21pdHRpbmcgdGhlIFgtc3BlY2lmaWMgdHJhZGVtYXJrcyBhbmQgY29weXJpZ2h0IG5vdGljZXMuICBUaGUgZnVsbCBjb3B5IG9mIDxhIGhyZWY9bGljZW5zZS5odG1sPklDVSdzIGxpY2Vuc2U8L2E+IGlzIGluY2x1ZGVkIGluIHRoZSBkb3dubG9hZCBwYWNrYWdlLgorPC9wPgorPHA+CitGb3IgbW9yZSBkZXRhaWxzIHBsZWFzZSBzZWUgdGhlIDxhIGhyZWY9aHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2ljdS9wcmVzcy5odG1sPnByZXNzIGFubm91bmNlbWVudDwvYT4gYW5kIHRoZSA8YSBocmVmPWh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3UvcHJvamVjdF9mYXEuaHRtbCNsaWNlbnNlPlByb2plY3QgRkFRPC9hPi4KKzwvcD4KKworPGgzPjxhIE5BTUU9IlBsYXRmb3JtRGVwZW5kZW5jaWVzIj48L2E+PHU+UGxhdGZvcm0gRGVwZW5kZW5jaWVzPC91PjwvaDM+CisgICAgICA8UD4KKyAgICAgIFBhcnRzIG9mIElDVTRKIGRlcGVuZCBvbiBmdW5jdGlvbmFsaXR5IHRoYXQgaXMgb25seSBhdmFpbGFibGUgaW4gSkRLIDEuMworICAgICAgb3IgbGF0ZXIsIGFsdGhvdWdoIHNvbWUgY29tcG9uZW50cyB3b3JrIHVuZGVyIGVhcmxpZXIgSlZNcy4gQWxsIAorICAgICAgY29tcG9uZW50cyBzaG91bGQgYmUgY29tcGlsZWQgdXNpbmcgYSBKYXZhMiBjb21waWxlciwgYXMgZXZlbiBjb21wb25lbnRzIAorICAgICAgdGhhdCBydW4gdW5kZXIgZWFybGllciBKVk1zIGNhbiByZXF1aXJlIGxhbmd1YWdlIGZlYXR1cmVzIHRoYXQgYXJlIG9ubHkgCisgICAgICBwcmVzZW50IGluIEphdmEyLiBDdXJyZW50bHkgMS4xLnggYW5kIDEuMi54IEpWTXMgYXJlIHVuc3VwcG9ydGVkIGFuZCB1bnRlc3RlZCwgYW5kIHlvdSB1c2UgCisgICAgICB0aGUgY29tcG9uZW50cyBvbiB0aGVzZSBKVk1zIGF0IHlvdXIgb3duIHJpc2suPC9QPgorICAgICAgPHA+CisgICAgICBUaGUgcmVmZXJlbmNlIHBsYXRmb3JtcyB3aGljaCB3ZSBzdXBwb3J0IGFuZCB0ZXN0IElDVTRKIG9uIGFyZTo8dWw+Cis8bGk+IFdpbjIwMDAsIElCTSBKREsgMS4zPC9saT4KKzxsaT4gU29sYXJpcyAyLjcsIFN1biBKREsgMS4zPC9saT4KKzxsaT4gQUlYIDUuMSwgSUJNIEpESyAxLjM8L2xpPgorPC91bD4KKzwvcD4KKzxwPlBsZWFzZSB1c2UgdGhlIG1vc3QgcmVjZW50IHVwZGF0ZXMgb2YgdGhlIHN1cHBvcnRlZCBKREsgdmVyc2lvbnMuPC9wPiAKKworPHA+QWRkaXRpb25hbGx5LCB3ZSBoYXZlIGJ1aWx0IGFuZCB0ZXN0ZWQgSUNVNEogb24gdGhlIGZvbGxvd2luZyA8Yj51bnN1cHBvcnRlZDwvYj4gcGxhdGZvcm1zOgorPHVsPgorPGxpPiBXaW45OCwgV2luTlQsIFdpblhQIC8gSUJNIEpESyAxLjMsIDEuMy4xLCBTdW4gSkRLIDEuMy4xLCAxLjQsIDEuNC4xPC9saT4KKzxsaT4gV2luMjAwMCAvIElCTSBKREsgMS4zLjEsIFN1biBKREsgMS4zLjEsIDEuNCwgMS40LjE8L2xpPgorPGxpPiBTb2xhcmlzIDIuNiAsIFNvbGFyaXMgMi44IC8gU3VuIEpESyAxLjMsIDEuMy4xLCAxLjQsIDEuNC4xPC9saT4KKzxsaT4gU29sYXJpcyAyLjcgLyBTdW4gSkRLIDEuMy4xLCAxLjQsIDEuNC4xPC9saT4KKzxsaT4gQUlYIDUuMSwgSUJNIEpESyAxLjMuMTwvbGk+Cis8L3VsPgorCis8aDM+PGEgTkFNRT0ib2J0YWluaW5nIj48L2E+PHU+SG93IHRvIERvd25sb2FkIElDVTRKPC91PjwvaDM+CisKKzxwPlRoZXJlIGFyZSB0d28gd2F5cyB0byBkb3dubG9hZCB0aGUgSUNVNEogcmVsZWFzZXMuCisKKzx1bCB0eXBlPSJkaXNjIj4KKyAgPGxpPjxiPk9mZmljaWFsIFJlbGVhc2UgU25hcHNob3Q6PC9iPjxicj4KKworICAgIElmIHlvdSB3YW50IHRvIHVzZSBJQ1U0SiAoYXMgb3Bwb3NlZCB0byBkZXZlbG9waW5nIGl0KSwgeW91ciBiZXN0CisgICAgYmV0IGlzIHRvIGRvd25sb2FkIGFuIG9mZmljaWFsLCBwYWNrYWdlZCB2ZXJzaW9uIG9mIHRoZSBJQ1U0SgorICAgIHNvdXJjZSBjb2RlLiZuYnNwOyBUaGVzZSB2ZXJzaW9ucyBhcmUgdGVzdGVkIG1vcmUgdGhvcm91Z2hseSB0aGFuCisgICAgZGF5LXRvLWRheSBkZXZlbG9wbWVudCBidWlsZHMsIGFuZCB0aGV5IGFyZSBwYWNrYWdlZCBpbiB6aXAgZmlsZXMKKyAgICBmb3IgY29udmVuaWVudCBkb3dubG9hZC4mbmJzcDsgVGhlc2UgcGFja2FnZWQgZmlsZXMgY2FuIGJlIGZvdW5kCisgICAgYXQgPGEgaHJlZj0iaHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2ljdTRqL2Rvd25sb2FkL2luZGV4Lmh0bWwiPmh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3U0ai9kb3dubG9hZC9pbmRleC5odG1sPC9hPi4mbmJzcDsgSWYgYSBwYWNrYWdlZCBzbmFwc2hvdCBpcyBuYW1lZCA8Yj5JQ1U0SlhYWFhYWC56aXA8L2I+LCB3aGVyZSBYWFhYWFggaXMKKyAgICB0aGUgcmVsZWFzZSB2ZXJzaW9uIG51bWJlci4mbmJzcDsgUGxlYXNlIHVuemlwIHRoaXMgZmlsZS4mbmJzcDsgSXQKKyAgICB3aWxsIHJlY29uc3RydWN0IHRoZSBzb3VyY2UgZGlyZWN0b3J5LiA8L2xpPgorPC91bD4KKworPHVsIHR5cGU9ImRpc2MiPgorICA8bGk+PGI+Q1ZTIFNvdXJjZSBSZXBvc2l0b3J5OjwvYj48YnI+CisgICAgSWYgeW91IGFyZSBpbnRlcmVzdGVkIGluIGRldmVsb3BpbmcgZmVhdHVyZXMsIHBhdGNoZXMsIG9yIGJ1ZyBmaXhlcyBmb3IgSUNVNEosIHlvdSBzaG91bGQKKyAgICBwcm9iYWJseSBiZSB3b3JraW5nIHdpdGggdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBJQ1U0SiBzb3VyY2UgY29kZS4gWW91IHdpbGwgbmVlZCB0bworICAgIGNoZWNrIHRoZSBjb2RlIG91dCBvZiBvdXIgQ1ZTIHJlcG9zaXRvcnkgdG8gZW5zdXJlIHRoYXQgeW91IGhhdmUgdGhlIG1vc3QgcmVjZW50IHZlcnNpb24KKyAgICBvZiBhbGwgb2YgdGhlIGZpbGVzLiBUaGVyZSBhcmUgc2V2ZXJhbCB3YXlzIHRvIGRvIHRoaXM6IDxicj4KKyAgICA8dWwgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaT5XZWJDVlM6PGJyPgorICAgICAgICBJZiB5b3Ugd2FudCB0byBicm93c2UgdGhlIGNvZGUgYW5kIG9ubHkgbWFrZSBvY2Nhc2lvbmFsIGRvd25sb2FkcywgeW91IG1heSB3YW50IHRvIHVzZQorICAgICAgICBXZWJDVlMuIEl0IHByb3ZpZGVzIGEgY29udmVuaWVudCwgd2ViLWJhc2VkIGludGVyZmFjZSBmb3IgYnJvd3NpbmcgYW5kIGRvd25sb2FkaW5nIHRoZQorICAgICAgICBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgSUNVNEogc291cmNlIGNvZGUgYW5kIGRvY3VtZW50YXRpb24uIFlvdSBjYW4gYWxzbyB2aWV3IGVhY2ggZmlsZSdzCisgICAgICAgIHJldmlzaW9uIGhpc3RvcnksIGRpc3BsYXkgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gaW5kaXZpZHVhbCByZXZpc2lvbnMsIGRldGVybWluZSB3aGljaAorICAgICAgICByZXZpc2lvbnMgd2VyZSBwYXJ0IG9mIHdoaWNoIG9mZmljaWFsIHJlbGVhc2UsIGFuZCBzbyBvbi4gPGJyPgorICAgICAgPC9saT4KKyAgICAgIDxsaT5XaW5DVlM6PGJyPgorICAgICAgICBJZiB5b3Ugd2lsbCBiZSBkb2luZyBzZXJpb3VzIHdvcmsgb24gSUNVNEosIHlvdSBzaG91bGQgcHJvYmFibHkgaW5zdGFsbCBhIENWUyBjbGllbnQgb24KKyAgICAgICAgeW91ciBvd24gbWFjaGluZSBzbyB0aGF0IHlvdSBjYW4gZG8gYmF0Y2ggb3BlcmF0aW9ucyB3aXRob3V0IGdvaW5nIHRocm91Z2ggdGhlIFdlYkNWUworICAgICAgICBpbnRlcmZhY2UuIE9uIFdpbmRvd3MsIHdlIHN1Z2dlc3QgdGhlIFdpbkNWUyBjbGllbnQuIFRvIGRvd25sb2FkIElDVTRKIHZpYSBXaW5DVlM6IDxvbD4KKyAgICAgICAgICA8bGk+SW5zdGFsbCB0aGUgV2luQ1ZTIGNsaWVudCwgd2hpY2ggeW91IGNhbiBkb3dubG9hZCBmcm9tIHRoZSA8YQorICAgICAgICAgICAgaHJlZj0iaHR0cDovL3d3dy53aW5jdnMub3JnIj5odHRwOi8vd3d3LndpbmN2cy5vcmc8L2E+LjwvbGk+CisgICAgICAgICAgPGxpPlNlbGVjdCA8c3Ryb25nPlByZWZlcmVuY2VzPC9zdHJvbmc+IGZyb20gdGhlIDxzdHJvbmc+QWRtaW48L3N0cm9uZz4gbWVudS48b2wgdHlwZT0iYSI+CisgICAgICAgICAgICAgIDxsaT5PbiB0aGUgPHN0cm9uZz5HZW5lcmFsPC9zdHJvbmc+IHRhYiBwYW5lbDogU2V0IHlvdXIgPHN0cm9uZz5DVlNST09UPC9zdHJvbmc+IHRvICZxdW90OzxzdHJvbmc+OnBzZXJ2ZXI6YW5vbmN2c0Bvc3Muc29mdHdhcmUuaWJtLmNvbTovdXNyL2N2cy9pY3U0ajwvc3Ryb25nPiZxdW90Oy48YnI+CisgICAgICAgICAgICAgICAgTGVhdmUgb3RoZXIgb3B0aW9ucyBvbiB0aGlzIHBhZ2UgYXQgdGhlaXIgZGVmYXVsdC48L2xpPgorICAgICAgICAgICAgICA8bGk+T24gdGhlIDxzdHJvbmc+UG9ydHM8L3N0cm9uZz4gdGFiIHBhbmVsOiBDaGVjayB0aGUgPHN0cm9uZz5wc2VydmVyPC9zdHJvbmc+IGNoZWNrYm94IGFuZAorICAgICAgICAgICAgICAgIGVudGVyIHBvcnQgPHN0cm9uZz4yNDAxPC9zdHJvbmc+LjwvbGk+CisgICAgICAgICAgICA8L29sPgorICAgICAgICAgIDwvbGk+CisgICAgICAgICAgPGxpPkNsaWNrIG9uIHRoZSBMb2dpbiBtZW51IGJ1dHRvbiAoPHN0cm9uZz5BZG1pbjwvc3Ryb25nPiBtZW51KS4gRW50ZXIgaW4gICZxdW90OzxzdHJvbmc+YW5vbmN2czwvc3Ryb25nPiZxdW90OyB3aGVuIHJlcXVlc3RlZC48L2xpPgorICAgICAgICAgIDxsaT5UbyBleHRyYWN0IHRoZSBtb3N0IHJlY2VudCB2ZXJzaW9uIG9mIElDVTRKLCBzZWxlY3QgPHN0cm9uZz5DaGVja291dCBtb2R1bGU8L3N0cm9uZz4KKyAgICAgICAgICAgIGZyb20gdGhlIDxzdHJvbmc+Q3JlYXRlPC9zdHJvbmc+IG1lbnUuIFNwZWNpZnkgJnF1b3Q7PHN0cm9uZz5pY3U0ajwvc3Ryb25nPiZxdW90OyBmb3IgdGhlCisgICAgICAgICAgICBtb2R1bGUgbmFtZS4gVGhpcyB3aWxsIGNyZWF0ZSBhIG5ldyBjb3B5IG9mIHRoZSB3b3Jrc3BhY2Ugb24geW91ciBsb2NhbCBoYXJkIGRyaXZlLjwvbGk+CisgICAgICAgICAgPGxpPkluIHRoZSBmdXR1cmUsIHlvdSBjYW4gZG93bmxvYWQgdXBkYXRlZCBmaWxlcyBmcm9tIHRoZSByZXBvc2l0b3J5IHRvIHlvdXIgaGFyZCBkcml2ZQorICAgICAgICAgICAgdXNpbmcgdGhlIDxzdHJvbmc+VXBkYXRlIHNlbGVjdGlvbjwvc3Ryb25nPiBpdGVtIGluIHRoZSA8c3Ryb25nPk1vZGlmeTwvc3Ryb25nPiBtZW51Ljxicj4KKyAgICAgICAgICA8L2xpPgorICAgICAgICA8L29sPgorICAgICAgPC9saT4KKyAgICAgIDxsaT5DVlMgY29tbWFuZCBsaW5lOjxicj4KKyAgICAgICAgWW91IGNhbiBhbHNvIGNoZWNrIG91dCB0aGUgcmVwb3NpdG9yeSBhbm9ueW1vdXNseSBvbiBVTklYIHVzaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMsCisgICAgICAgIGFmdGVyIGZpcnN0IHNldHRpbmcgeW91ciBDVlNST09UIHRvIHBvaW50IHRvIHRoZSBJQ1U0SiByZXBvc2l0b3J5OiA8cHJlPjxjb2RlPmV4cG9ydCBDVlNST09UPTpwc2VydmVyOmFub25jdnNAb3NzLnNvZnR3YXJlLmlibS5jb206L3Vzci9jdnMvaWN1NGogCitjdnMgbG9naW4gQ1ZTIHBhc3N3b3JkOiBhbm9uY3ZzIAorY3ZzIGNoZWNrb3V0IGljdTRqIAorY3ZzIGxvZ291dDwvY29kZT48L3ByZT4KKyAgICAgIDwvbGk+CisgICAgPC91bD4KKyAgPC9saT4KKzwvdWw+CisKKzxwPkZvciBtb3JlIGRldGFpbHMgb24gaG93IHRvIGRvd25sb2FkIElDVTRKIGRpcmVjdGx5IGZyb20gdGhlIHdlYiBzaXRlLCBwbGVhc2UgYWxzbyBzZWUgPGEKK2hyZWY9Imh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3U0ai9kb3dubG9hZC9pbmRleC5odG1sIj5odHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vaWN1NGovZG93bmxvYWQvaW5kZXguaHRtbDwvYT4KKzwvcD4KKworPGgzPjxhIE5BTUU9IldoYXRDb250YWluIj48L2E+PHU+VGhlIFN0cnVjdHVyZSBhbmQgQ29udGVudHMgb2YgSUNVNEo8L3U+PC9oMz4KKworPHA+QmVsb3csIDxiPiRSb290PC9iPiBpcyB0aGUgcGxhY2VtZW50IG9mIHRoZSBpY3UgZGlyZWN0b3J5IGluIHlvdXIgZmlsZSBzeXN0ZW0sIGxpa2UKKyZxdW90O2RyaXZlOlwuLi5caWN1NGomcXVvdDsgaW4geW91ciBlbnZpcm9ubWVudC4gJnF1b3Q7ZHJpdmU6XC4uLiZxdW90OyBzdGFuZHMgZm9yIGFueQorZHJpdmUgYW5kIGFueSBkaXJlY3Rvcnkgb24gdGhhdCBkcml2ZSB0aGF0IHlvdSBjaG9zZSB0byBpbnN0YWxsIGljdTRqIGludG8uIDwvcD4KKworPHA+PGI+SW5mb3JtYXRpb24gYW5kIGJ1aWxkIGZpbGVzOjwvYj48L3A+CisKKzx0YWJsZSBCT1JERVI9IjEiIENFTExQQURESU5HPSIzIj4KKyAgPHRyPgorICAgIDx0ZD5yZWFkbWUuaHRtbDxicj4KKyAgICAgICAgKHRoaXMgZmlsZSk8L3RkPgorICAgIDx0ZD5BIGRlc2NyaXB0aW9uIG9mIElDVTRKIChJbnRlcm5hdGlvbmFsIENvbXBvbmVudHMgZm9yIFVuaWNvZGUgZm9yIEphdmEpPC90ZD4KKyAgPC90cj4KKyAgPHRyPgorICAgIDx0ZD5yZWxlYXNlbm90ZXMuaHRtbAorICAgIDx0ZD5BIGRlc2NyaXB0aW9uIG9mIGZlYXR1cmVzIGFuZCBjaGFuZ2VzIGluIHRoaXMgYW5kIHByaW9yIHJlbGVhc2VzIG9mIElDVTRKPC90ZD4KKyAgPC90cj4KKyAgPHRyPgorICAgIDx0ZD5saWNlbnNlLmh0bWw8L3RkPgorICAgIDx0ZD5UaGUgWCBsaWNlbnNlLCB1c2VkIGJ5IElDVTRKPC90ZD4KKyAgPC90cj4KKyAgPHRyPgorICAgIDx0ZD5idWlsZC5iYXQ8L3RkPgorICAgIDx0ZD5BIGNvbnZlbmllbmNlIGJhdCBmaWxlIGZvciBidWlsZGluZyBJQ1U0SiB3aXRoIEFudCBvbiBXaW5kb3dzPC90ZD4KKyAgPC90cj4KKyAgPHRyPgorICAgIDx0ZD5idWlsZC5zaDwvdGQ+CisgICAgPHRkPkEgY29udmVuaWVuY2Ugc2ggZmlsZSBmb3IgYnVpbGRpbmcgSUNVNEogd2l0aCBBbnQgb24gVW5peDwvdGQ+CisgIDwvdHI+CisgIDx0cj4KKyAgICA8dGQ+YnVpbGQueG1sPC90ZD4KKyAgICA8dGQ+QW50IGJ1aWxkIGZpbGUuIFNlZSA8YSBocmVmPSIjSG93VG9JbnN0YWxsSmF2YWMiPkhvdyB0byBJbnN0YWxsIGFuZCBCdWlsZDwvYT4gZm9yIG1vcmUgaW5mb3JtYXRpb248L3RkPgorICA8L3RyPgorPC90YWJsZT4KKworPHA+PGI+VGhlIHNvdXJjZSBkaXJlY3RvcmllcyBtaXJyb3IgdGhlIHBhY2thZ2Ugc3RydWN0dXJlIG9mIHRoZSBjb2RlLjwvYj48YnI+PGZvbnQgY29sb3I9InJlZCI+Q29yZTwvZm9udD4gcGFja2FnZXMgYmVjb21lIHBhcnQgb2YgdGhlIElDVTRKIGphciBmaWxlLjxicj48Zm9udCBjb2xvcj0icmVkIj5BUEk8L2ZvbnQ+IHBhY2thZ2VzIGNvbnRhaW4gY2xhc3NlcyB3aXRoIHN1cHBvcnRlZCBBUEkuIDxicj48Zm9udCBjb2xvcj0icmVkIj5SaWNoVGV4dDwvZm9udD4gY2xhc3NlcyBhcmUgQ29yZSBhbmQgQVBJLCBidXQgY2FuIGJlIHJlbW92ZWQgZnJvbSBpY3U0ai5qYXIsIGFuZCBjYW4gYmUgYnVpbHQgaW50byB0aGVpciBvd24gamFyLjwvcD4KKworPHRhYmxlIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjMiIFdJRFRIPSI2MjMiPgorICA8dHI+CisgICAgPHRkPiRSb290L3NyYy9jb20vaWJtL2ljdS9kZXY8YnI+PGZvbnQgY29sb3I9InJlZCI+Tm9uLUNvcmUsIE5vbi1BUEk8L2ZvbnQ+PC90ZD4KKyAgICA8dGQ+UGFja2FnZXMgdXNlZCBmb3IgaW50ZXJuYWwgZGV2ZWxvcG1lbnQ6CisgICAgPHVsPgorICAgIDxsaT5EYXRhOiBkYXRhIHVzZWQgYnkgdGVzdHMgYW5kIGluIGJ1aWxkaW5nIElDVTwvbGk+CisgICAgPGxpPkRlbW9zOiBDYWxlbmRhciwgSG9saWRheSwgQnJlYWsgSXRlcmF0b3IsIFJ1bGUtYmFzZWQgTnVtYmVyIEZvcm1hdCwgVHJhbnNmb3JtYXRpb25zPGJyPihTZWUgPGEgaHJlZj0iI3RyeWluZ291dCI+YmVsb3c8L2E+IGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBkZW1vcy4pPC9saT4KKyAgICA8bGk+VGVzdHM6IEFQSSBhbmQgY292ZXJhZ2UgdGVzdHMgb2YgYWxsIGZ1bmN0aW9uYWxpdHkuPGJyPkZvciBpbmZvcm1hdGlvbiBhYm91dCBydW5uaW5nIHRoZSB0ZXN0cywgc2VlICRSb290L3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9UZXN0QWxsLmphdmEuPC9saT4KKyAgICA8bGk+VG9vbHM6IHRvb2xzIHVzZWQgdG8gYnVpbGQgZGF0YSB0YWJsZXMsIGV0Yy48L2xpPjwvdWw+PC90ZD4KKyAgPC90cj4KKyAgPHRyPgorICAgIDx0ZD4kUm9vdC9zcmMvY29tL2libS9pY3UvaW1wbDxicj48Zm9udCBjb2xvcj0icmVkIj5Db3JlLCBOb24tQVBJPC9mb250PjwvdGQ+CisgICAgPHRkPlRoZXNlIGFyZSB1dGlsaXR5IGNsYXNzZXMgdXNlZCBmcm9tIGRpZmZlcmVudCBJQ1U0SiBjb3JlIHBhY2thZ2VzLjwvdGQ+CisgIDwvdHI+CisgIDx0cj4KKyAgICA8dGQ+JFJvb3Qvc3JjL2NvbS9pYm0vaWN1L2xhbmc8YnI+PGZvbnQgY29sb3I9InJlZCI+Q29yZSwgQVBJPC9mb250PjwvdGQ+CisgICAgPHRkPkNoYXJhY3RlciBwcm9wZXJ0aWVzIHBhY2thZ2UuPC90ZD4KKyAgPC90cj4KKyAgPHRyPgorICAgIDx0ZD4kUm9vdC9zcmMvY29tL2libS9pY3UvbWF0aDxicj48Zm9udCBjb2xvcj0icmVkIj5Db3JlLCBBUEk8L2ZvbnQ+PC90ZD4KKyAgICA8dGQ+QWRkaXRpb25hbCBtYXRoIGNsYXNzZXMuPC90ZD4KKyAgPC90cj4KKyAgPHRyPgorICAgIDx0ZD4kUm9vdC9zcmMvY29tL2libS9pY3UvdGV4dDxicj48Zm9udCBjb2xvcj0icmVkIj5Db3JlLCBBUEk8L2ZvbnQ+PC90ZD4KKyAgICA8dGQ+QWRkaXRpb25hbCB0ZXh0IGNsYXNzZXMuICBUaGVzZSBhZGQgdG8sIGFuZCBpbiBzb21lIGNhc2VzIHJlcGxhY2UsIHJlbGF0ZWQgY29yZSBKYXZhIGNsYXNzZXM6CisgICAgICA8dWw+CisgICAgICA8bGk+QXJhYmljIHNoYXBpbmcKKyAgICAgIDxsaT5CcmVhayBpdGVyYXRpb24KKyAgICAgIDxsaT5EYXRlIGZvcm1hdHRpbmcKKyAgICAgIDxsaT5OdW1iZXIgZm9ybWF0dGluZworICAgICAgPGxpPlRyYW5zbGl0ZXJhdGlvbgorICAgICAgPGxpPk5vcm1hbGl6YXRpb24KKyAgICAgIDxsaT5TdHJpbmcgbWFuaXB1bGF0aW9uCisgICAgICA8bGk+Q29sbGF0aW9uCisgICAgICA8bGk+U3RyaW5nIHNlYXJjaAorICAgICAgPGxpPlVuaWNvZGUgY29tcHJlc3Npb24KKyAgICAgIDxsaT5Vbmljb2RlIHNldHMKKyAgICA8L3VsPgorICAgIDwvdGQ+CisgIDwvdHI+CisgIDx0cj4KKyAgICA8dGQ+JFJvb3Qvc3JjL2NvbS9pYm0vaWN1L3V0aWw8YnI+PGZvbnQgY29sb3I9InJlZCI+Q29yZSwgQVBJPC9mb250PjwvdGQ+CisgICAgPHRkPkFkZGl0aW9uYWwgdXRpbGl0eSBjbGFzc2VzOgorICAgIDx1bD4KKyAgICA8bGk+Q2FsZW5kYXJzIC0gR3JlZ29yaWFuLCBCdWRkaGlzdCwgSGVicmV3LCBJc2xhbWljLCBKYXBhbmVzZQorICAgIDxsaT5Ib2xpZGF5PC9saT4KKyAgICA8bGk+VGltZVpvbmU8L2xpPgorICAgIDxsaT5WZXJzaW9uSW5mbzwvbGk+CisgICAgPGxpPkl0ZXJhdGlvbjwvbGk+CisgICAgPC91bD4KKyAgICA8L3RkPgorICA8L3RyPgorICA8dHI+CisgICAgPHRkPiRSb290L3NyYy9jb20vaWJtL3JpY2h0ZXh0PGJyPjxmb250IGNvbG9yPSJyZWQiPlJpY2hUZXh0PC9mb250PjwvdGQ+IAorICAgIDx0ZD5TdHlsZWQgdGV4dCBlZGl0aW5nCisgICAgcGFja2FnZS4gVGhpcyBpbmNsdWRlcyBkZW1vcywgdGVzdHMsIGFuZCBHVUlzIGZvciBlZGl0aW5nIGFuZAorICAgIGRpc3BsYXlpbmcgc3R5bGVkIHRleHQuICBUaGUgcmljaHRleHQgcGFja2FnZSBwcm92aWRlcyBhCisgICAgc2Nyb2xsYWJsZSBkaXNwbGF5LCB0eXBpbmcsIGFycm93LWtleSBzdXBwb3J0LCB0YWJzLCBhbGlnbm1lbnQgYW5kCisgICAganVzdGlmaWNhdGlvbiwgd29yZC0gYW5kIHNlbnRlbmNlLXNlbGVjdGlvbiAoYnkgZG91YmxlLWNsaWNraW5nCisgICAgYW5kIHRyaXBsZS1jbGlja2luZywgcmVzcGVjdGl2ZWx5KSwgdGV4dCBzdHlsZXMsIGNsaXBib2FyZAorICAgIG9wZXJhdGlvbnMgKGN1dCwgY29weSBhbmQgcGFzdGUpIGFuZCBhIGxvZyBvZiBjaGFuZ2VzIGZvcgorICAgIHVuZG8tcmVkby4gIFJpY2h0ZXh0IHVzZXMgSmF2YSdzIFRleHRMYXlvdXQgYW5kIGNvbXBsZXgKKyAgICB0ZXh0IHN1cHBvcnQgKHByb3ZpZGVkIHRvIFN1biBieSB0aGUgSUNVNEogdGVhbSkuPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+CisKKzxwPjxiPkJ1aWxkaW5nIElDVTRKIGNyZWF0ZXMgYW5kIHBvcHVsYXRlcyB0aGUgZm9sbG93aW5nIGRpcmVjdG9yaWVzOjwvYj4gPC9wPgorCis8dGFibGUgQk9SREVSPSIxIiBDRUxMUEFERElORz0iMyI+CisgIDx0cj4KKyAgICA8dGQ+JFJvb3QvY2xhc3NlczwvdGQ+CisgICAgPHRkPmNvbnRhaW5zIGFsbCBjbGFzcyBmaWxlczwvdGQ+CisgIDwvdHI+CisgIDx0cj4KKyAgICA8dGQ+JFJvb3QvZG9jPC90ZD4KKyAgICA8dGQ+Y29udGFpbnMgSmF2YURvYyBmb3IgYWxsIHBhY2thZ2VzPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+CisKKzxwPjxiPkRhdGEgb3JnYW5pemF0aW9uOjwvYj4gPC9wPgorCis8cD5JQ1U0SiBkYXRhIGlzIHN0b3JlZCBpbiB0aGUgZm9sbG93aW5nIGxvY2F0aW9uczoKKworPHRhYmxlIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjMiIFdJRFRIPSI2MjMiPgorICA8dHI+CisgICAgPHRkPjxjb2RlPmNvbS5pYm0uaWN1LmltcGwuZGF0YTwvY29kZT48L3RkPgorICAgIDx0ZD5Ib2xkcyBkYXRhIHVzZWQgYnkgdGhlIElDVTRKIGNvcmUgcGFja2FnZXMgKDxjb2RlPmNvbS5pYm0uaWN1Lmxhbmc8L2NvZGU+LCA8Y29kZT5jb20uaWJtLmljdS50ZXh0PC9jb2RlPiwgPGNvZGU+Y29tLmlibS5pY3UudXRpbDwvY29kZT4sIDxjb2RlPmNvbS5pYm0uaWN1Lm1hdGg8L2NvZGU+IGFuZCA8Y29kZT5jb20uaWJtLmljdS50ZXh0PC9jb2RlPikuIEluIHBhcnRpY3VsYXIsIGFsbCByZXNvdXJjZSBpbmZvcm1hdGlvbiBpcyBzdG9yZWQgaGVyZS48L3RkPgorICA8L3RyPgorICA8dHI+CisgICAgPHRkPjxjb2RlPmNvbS5pYm0uaWN1LmRldi5kYXRhPC9jb2RlPjwvdGQ+CisgICAgPHRkPkhvbGRzIGRhdGEgdGhhdCBpcyBub3QgcGFydCBvZiBJQ1U0SiBjb3JlLCBidXQgcmF0aGVyIHBhcnQgb2YgYSB0ZXN0LCBzYW1wbGUsIG9yIGRlbW8uPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+CisKKzxoMz48dT48YSBuYW1lPSJBUEkiPjwvYT5XaGVyZSB0byBnZXQgRG9jdW1lbnRhdGlvbjwvdT48L2gzPgorCis8cD5UaGUgPGEgaHJlZj0iaHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2ljdS91c2VyZ3VpZGUvIj5JQ1UgdXNlcidzIGd1aWRlPC9hPiBjb250YWlucyBsb3RzIG9mIGdlbmVyYWwgaW5mb3JtYXRpb24gYWJvdXQgSUNVLCBpbiBpdHMgQywgQysrLCBhbmQgSmF2YSBpbmNhcm5hdGlvbnMuPC9wPgorCis8cD5UaGUgY29tcGxldGUgQVBJIGRvY3VtZW50YXRpb24gZm9yIElDVTRKIChqYXZhZG9jKSBpcyBhdmFpbGFibGUgb24gdGhlIElDVTRKIHdlYiBzaXRlLCBhbmQgY2FuIGJlIGJ1aWx0IGZyb20gdGhlIHNvdXJjZXM6IAorCis8dWw+CisgIDxsaT48YSBocmVmPSJodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vaWN1NGovZG9jL2luZGV4Lmh0bWwiPkluZGV4IHRvIGFsbCBJQ1U0SiBBUEk8L2E+PC9saT4KKyAgPGxpPkludGVybmF0aW9uYWwgQ2FsZW5kYXJzICYjMTUwOyA8YSBocmVmPSJodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vaWN1NGovZG9jL2NvbS9pYm0vaWN1L3V0aWwvSXNsYW1pY0NhbGVuZGFyLmh0bWwiPklzbGFtaWM8L2E+LAorICAgIDxhIGhyZWY9Imh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3U0ai9kb2MvY29tL2libS9pY3UvdXRpbC9CdWRkaGlzdENhbGVuZGFyLmh0bWwiPkJ1ZGRoaXN0PC9hPiwgPGEKKyAgICBocmVmPSJodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vaWN1NGovZG9jL2NvbS9pYm0vaWN1L3V0aWwvSGVicmV3Q2FsZW5kYXIuaHRtbCI+SGVicmV3PC9hPiwgPGEKKyAgICBocmVmPSJodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vaWN1NGovZG9jL2NvbS9pYm0vaWN1L3V0aWwvSmFwYW5lc2VDYWxlbmRhci5odG1sIj5KYXBhbmVzZTwvYT4uPC9saT4KKyAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3U0ai9kb2MvY29tL2libS9pY3UvdGV4dC9Ob3JtYWxpemVyLmh0bWwiPlVuaWNvZGUgTm9ybWFsaXphdGlvbjwvYT4gJiMxNTA7CisgICAgQ2Fub25pY2FsIHRleHQgcmVwcmVzZW50YXRpb24gZm9yIFczQy48L2xpPgorICA8bGk+PGEgaHJlZj0iaHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2ljdTRqL2RvYy9jb20vaWJtL2ljdS90ZXh0L051bWJlckZvcm1hdC5odG1sIj5OdW1iZXIgRm9ybWF0IEVuaGFuY2VtZW50czwvYT4gJiMxNTA7CisgICAgU2NpZW50aWZpYyBOb3RhdGlvbiwgU3BlbGxlZCBvdXQuPC9saT4KKyAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3U0ai9kb2MvY29tL2libS9pY3UvdGV4dC9CcmVha0l0ZXJhdG9yLmh0bWwiPkVuaGFuY2VkIHdvcmQtYnJlYWsgZGV0ZWN0aW9uPC9hPgorICAgICYjMTUwOyBSdWxlLWJhc2VkLCBzdXBwb3J0cyBUaGFpPC9saT4KKzxsaT48YSBocmVmPSJodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vaWN1NGovZG9jL2NvbS9pYm0vaWN1L3RleHQvVHJhbnNsaXRlcmF0b3IuaHRtbCI+VHJhbnNsaXRlcmF0aW9uPC9hPiAmIzE1MDsgQSBnZW5lcmFsIGZyYW1ld29yayBmb3Igb252ZXJ0aW5nIHRleHQgZnJvbSBvbmUgZm9ybWF0IHRvIGFub3RoZXIsIGUuZy4gQ3lyaWxsaWMgdG8gTGF0aW4sIG9yIEhleCB0byBVbmljb2RlLgorICA8bGk+VW5pY29kZSBUZXh0IDxhIGhyZWY9Imh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3U0ai9kb2MvY29tL2libS9pY3UvdGV4dC9Vbmljb2RlQ29tcHJlc3Nvci5odG1sIj5Db21wcmVzc2lvbjwvYT4gJmFtcDsKKyAgICA8YSBocmVmPSJodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vaWN1NGovZG9jL2NvbS9pYm0vaWN1L3RleHQvVW5pY29kZURlY29tcHJlc3Nvci5odG1sIj5EZWNvbXByZXNzaW9uPC9hPiAmIzE1MDsgMjoxCisgICAgY29tcHJlc3Npb24gb24gRW5nbGlzaCBVbmljb2RlIHRleHQuPC9saT4KKyAgPGxpPkNvbGxhdGlvbiAtIDxhIGhyZWY9Imh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3U0ai9kb2MvY29tL2libS9pY3UvdGV4dC9SdWxlQmFzZWRDb2xsYXRvci5odG1sIj5SdWxlLWJhc2VkIHNvcnRpbmc8L2E+LCA8YSBocmVmPSJodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vaWN1NGovZG9jL2NvbS9pYm0vaWN1L3RleHQvU3RyaW5nU2VhcmNoLmh0bWwiPkVmZmljaWVudCBtdWx0aS1saW5ndWFsIHNlYXJjaGluZzwvYT4gPC9saT4KKzwvdWw+CisKKzxoMz48YSBOQU1FPSJIb3dUb0luc3RhbGxKYXZhYyI+PC9hPjx1PkhvdyB0byBJbnN0YWxsIGFuZCBCdWlsZDwvdT48L2gzPgorCis8cD5UbyBpbnN0YWxsIElDVTRKLCBzaW1wbHkgcGxhY2UgdGhlIHByZWJ1aWx0IGphciBmaWxlIDxzdHJvbmc+aWN1NGouamFyPC9zdHJvbmc+IG9uIHlvdXIKK0phdmEgQ0xBU1NQQVRILiZuYnNwOyBObyBvdGhlciBmaWxlcyBhcmUgbmVlZGVkLjwvcD4KKworPHA+VG8gYnVpbGQgSUNVNEosIHlvdSB3aWxsIG5lZWQgYSBKYXZhMiBKREsgYW5kIHRoZSBBbnQgYnVpbGQgc3lzdGVtLgorV2Ugc3Ryb25nbHkgcmVjb21tZW5kIHVzaW5nIHRoZSBBbnQgYnVpbGQgc3lzdGVtIHRvIGJ1aWxkIElDVTRKOjwvcD4KKworPHVsPgorICA8bGk+SXQncyByZWNvbW1lbmRlZCB0byBpbnN0YWxsIGJvdGggdGhlIEpESyBhbmQgQW50IHNvbWV3aGVyZSA8ZW0+b3V0c2lkZTwvZW0+IHRoZSBJQ1U0SgorICAgIGRpcmVjdG9yeS4gRm9yIGV4YW1wbGUsIG9uIExpbnV4IHlvdSBtaWdodCBpbnN0YWxsIHRoZXNlCisgICAgaW4gL3Vzci9sb2NhbC48L2xpPgorICA8bGk+SW5zdGFsbCBhIHJlY2VudCBKREssIHZlcnNpb24gMS4zLnggb3IgMS40Lnggd2lsbCB3b3JrLjwvbGk+CisgIDxsaT48cD5OZXh0IGluc3RhbGwgdGhlIDxhIGhyZWY9Imh0dHA6Ly9qYWthcnRhLmFwYWNoZS5vcmcvYW50LyI+PHN0cm9uZz5BbnQ8L3N0cm9uZz48L2E+IGJ1aWxkCisgICAgc3lzdGVtLCBwYXJ0IG9mIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbidzIDxhIGhyZWY9Imh0dHA6Ly9qYWthcnRhLmFwYWNoZS5vcmcvIj48c3Ryb25nPkpha2FydGE8L3N0cm9uZz48L2E+CisgICAgcHJvamVjdC4gQW50IGlzIGEgcG9ydGFibGUsIEphdmEtYmFzZWQgYnVpbGQgc3lzdGVtIHNpbWlsYXIgdG8gbWFrZS4gSUNVNEogdXNlcyBBbnQKKyAgICBiZWNhdXNlIGl0IGludHJvZHVjZXMgbm8gb3RoZXIgZGVwZW5kZW5jaWVzLCBpdCdzIHBvcnRhYmxlLCBhbmQgaXQncyBlYXNpZXIgdG8gbWFuYWdlIHRoYW4KKyAgICBhIGNvbGxlY3Rpb24gb2YgbWFrZWZpbGVzLiBXZSBjdXJyZW50bHkgYnVpbGQgSUNVNEogdXNpbmcgYSBzaW5nbGUgbWFrZWZpbGUgb24gYm90aAorICAgIFdpbmRvd3MgOXggYW5kIExpbnV4IHVzaW5nIEFudC4gIFRoZSBidWlsZCBzeXN0ZW0gcmVxdWlyZXMgQW50IDEuNCBvciBsYXRlci48L3A+CisgICAgPHA+SW5zdGFsbGluZyBBbnQgaXMgc3RyYWlnaHRmb3J3YXJkLiBEb3dubG9hZCBpdCAoc2VlIDxhCisgICAgaHJlZj0iaHR0cDovL2pha2FydGEuYXBhY2hlLm9yZy9kb3dubG9hZHMvYmluaW5kZXguaHRtbCI+aHR0cDovL2pha2FydGEuYXBhY2hlLm9yZy9kb3dubG9hZHMvYmluaW5kZXguaHRtbDwvYT4pLAorICAgIGV4dHJhY3QgaXQgb250byB5b3VyIHN5c3RlbSwgc2V0IHNvbWUgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBhbmQgYWRkIGl0cyBiaW4gZGlyZWN0b3J5IHRvCisgICAgeW91ciBwYXRoLiBGb3IgZXhhbXBsZTo8cHJlPiAgICBzZXQgSkFWQV9IT01FPUM6XGpkazEuMy4xCisgICAgc2V0IEFOVF9IT01FPUM6XGpha2FydGEtYW50CisgICAgc2V0IFBBVEg9JVBBVEglOyVBTlRfSE9NRSVcYmluPC9wcmU+PC9wPgorICAgIDxwPlNlZSB0aGUgY3VycmVudCBBbnQgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy48L3A+CisgIDwvbGk+Cis8L3VsPgorCis8cD5PbmNlIHRoZSBKREsgYW5kIEFudCBhcmUgaW5zdGFsbGVkLCBidWlsZGluZyBpcyBqdXN0IGEgbWF0dGVyIG9mCit0eXBpbmcgPHN0cm9uZz5hbnQ8L3N0cm9uZz4gaW4gdGhlIElDVTRKIHJvb3QgZGlyZWN0b3J5LiBUaGlzIGNhdXNlcwordGhlIEFudCBidWlsZCBzeXN0ZW0gdG8gcGVyZm9ybSBhIGJ1aWxkIGFzIHNwZWNpZmllZCBieSB0aGUgZmlsZQorPHN0cm9uZz5idWlsZC54bWw8L3N0cm9uZz4sIGxvY2F0ZWQgaW4gdGhlIElDVTRKIHJvb3QgZGlyZWN0b3J5LiBZb3UKK2NhbiBnaXZlIEFudCBvcHRpb25zIGxpa2UgLXZlcmJvc2UsIGFuZCB5b3UgY2FuIHNwZWNpZnkgdGFyZ2V0cy4gQW50Cit3aWxsIG9ubHkgYnVpbGQgd2hhdCdzIGJlZW4gY2hhbmdlZCBhbmQgd2lsbCByZXNvbHZlIGRlcGVuZGVuY2llcworcHJvcGVybHkuICBGb3IgZXhhbXBsZTo8L3A+Cis8YmxvY2txdW90ZT4KKyAgPHByZT5GOlxpY3U0aiZndDthbnQgdGVzdHMKK0J1aWxkZmlsZTogYnVpbGQueG1sCitQcm9qZWN0IGJhc2UgZGlyIHNldCB0bzogRjpcaWN1NGoKK0V4ZWN1dGluZyBUYXJnZXQ6IGNvcmUKK0NvbXBpbGluZyA3MSBzb3VyY2UgZmlsZXMgdG8gRjpcaWN1NGpcY2xhc3NlcworRXhlY3V0aW5nIFRhcmdldDogdGVzdHMKK0NvbXBpbGluZyAyNCBzb3VyY2UgZmlsZXMgdG8gRjpcaWN1NGpcY2xhc3NlcworQ29tcGxldGVkIGluIDE5IHNlY29uZHM8L3ByZT4KKzwvYmxvY2txdW90ZT4KKworPHA+VGhlIGZvbGxvd2luZyBhcmUgc29tZSB0YXJnZXRzIHRoYXQgeW91IGNhbiBnaXZlIGFmdGVyIDxzdHJvbmc+YW50PC9zdHJvbmc+LiAgRm9yIG1vcmUKK3RhcmdldHMsIHNlZSB0aGUgYnVpbGQueG1sIGZpbGU6PC9wPgorPGRpdiBhbGlnbj0ibGVmdCI+CisKKzx0YWJsZSBib3JkZXI9IjEiIGNlbGxwYWRkaW5nPSIwIj4KKyAgPHRyPgorICAgIDx0ZD5hbGw8L3RkPgorICAgIDx0ZD5CdWlsZCBhbGwgdGFyZ2V0cy48L3RkPgorICA8L3RyPgorICA8dHI+CisgICAgPHRkPmNvcmU8L3RkPgorICAgIDx0ZD5CdWlsZCB0aGUgbWFpbiBjbGFzcyBmaWxlcyBpbiB0aGUgc3ViZGlyZWN0b3J5IDxzdHJvbmc+Y2xhc3Nlczwvc3Ryb25nPi4gSWYgbm8gdGFyZ2V0CisgICAgaXMgc3BlY2lmaWVkLCBjb3JlIGlzIGFzc3VtZWQuPC90ZD4KKyAgPC90cj4KKyAgPHRyPgorICAgIDx0ZD50ZXN0czwvdGQ+CisgICAgPHRkPkJ1aWxkIHRoZSB0ZXN0IGNsYXNzIGZpbGVzLjwvdGQ+CisgIDwvdHI+CisgIDx0cj4KKyAgICA8dGQ+ZGVtb3M8L3RkPgorICAgIDx0ZD5CdWlsZCB0aGUgZGVtb3MuPC90ZD4KKyAgPC90cj4KKyAgPHRyPgorICAgIDx0ZD50b29sczwvdGQ+CisgICAgPHRkPkJ1aWxkIHRoZSB0b29scy48L3RkPgorICA8L3RyPgorICA8dHI+CisgICAgPHRkPmRvY3M8L3RkPgorICAgIDx0ZD5SdW4gamF2YWRvYyBvdmVyIHRoZSBtYWluIGNsYXNzIGZpbGVzLCBnZW5lcmF0aW5nIGFuIEhUTUwgZG9jdW1lbnRhdGlvbiB0cmVlIGluIHRoZQorICAgIHN1YmRpcmVjdG9yeSA8c3Ryb25nPmRvYzwvc3Ryb25nPi48L3RkPgorICA8L3RyPgorICA8dHI+CisgICAgPHRkPmphcjwvdGQ+CisgICAgPHRkPkNyZWF0ZSBhIGphciBhcmNoaXZlIDxzdHJvbmc+aWN1NGouamFyPC9zdHJvbmc+IGluIHRoZSByb290IElDVTRKIGRpcmVjdG9yeSBjb250YWluaW5nCisgICAgdGhlIG1haW4gY2xhc3MgZmlsZXMuPC90ZD4KKyAgPC90cj4KKyAgPHRyPgorICAgIDx0ZD56aXA8L3RkPgorICAgIDx0ZD5DcmVhdGUgYSB6aXAgYXJjaGl2ZSBvZiB0aGUgc291cmNlLCBkb2NzLCBhbmQgamFyIGZpbGUgZm9yIGRpc3RyaWJ1dGlvbi4gVGhlIHppcCBmaWxlIDxzdHJvbmc+aWN1NGpZWVlZTU1ERC56aXA8L3N0cm9uZz4KKyAgICB3aWxsIGJlIGNyZWF0ZWQgaW4gdGhlIGRpcmVjdG9yeSA8ZW0+YWJvdmU8L2VtPiB0aGUgcm9vdCBJQ1U0SiBkaXJlY3RvcnksIHdoZXJlIFlZWVlNTURECisgICAgaXMgdG9kYXkncyBkYXRlLiBBbnkgZXhpc3RpbmcgZmlsZSBvZiB0aGF0IG5hbWUgd2lsbCBiZSBvdmVyd3JpdHRlbi48L3RkPgorICA8L3RyPgorICA8dHI+CisgICAgPHRkPnppcHNyYzwvdGQ+CisgICAgPHRkPkxpa2UgdGhlIDxzdHJvbmc+emlwPC9zdHJvbmc+IHRhcmdldCwgd2l0aG91dCB0aGUgZG9jcyBhbmQgdGhlIGphciBmaWxlLiBUaGUgemlwIGZpbGUgPHN0cm9uZz5pY3U0anNyY1lZWVlNTURELnppcDwvc3Ryb25nPgorICAgIHdpbGwgYmUgY3JlYXRlZCBpbiB0aGUgZGlyZWN0b3J5IDxlbT5hYm92ZTwvZW0+IHRoZSByb290IElDVTRKIGRpcmVjdG9yeS48L3RkPgorICA8L3RyPgorICA8dHI+CisgICAgPHRkPnJpY2hlZGl0PC90ZD4KKyAgICA8dGQ+QnVpbGQgdGhlIHJpY2hlZGl0IGNvcmUgY2xhc3MgZmlsZXMgYW5kIHRlc3RzLgorICA8L3RyPgorICA8dHI+CisgICAgPHRkPnJpY2hlZGl0SmFyPC90ZD4KKyAgICA8dGQ+Q3JlYXRlIHRoZSByaWNoZWRpdCBqYXIgZmlsZSAod2hpY2ggY29udGFpbnMgb25seSB0aGUgcmljaGVkaXQgY29yZSBjbGFzcyBmaWxlcykuCisgICAgVGhlIGZpbGUgPHN0cm9uZz5yaWNoZWRpdC5qYXI8L3N0cm9uZz4KKyAgICB3aWxsIGJlIGNyZWF0ZWQgaW4gdGhlIDxzdHJvbmc+Li9yaWNoZWRpdDwvc3Ryb25nPiBzdWJkaXJlY3RvcnkuIEFueSBleGlzdGluZyBmaWxlIG9mIAorICAgIHRoYXQgbmFtZSB3aWxsIGJlIG92ZXJ3cml0dGVuLjwvdGQ+CisgIDwvdHI+CisgIDx0cj4KKyAgICA8dGQ+cmljaGVkaXRaaXA8L3RkPgorICAgIDx0ZD5DcmVhdGUgYSB6aXAgYXJjaGl2ZSBvZiB0aGUgcmljaGVkaXQgZG9jcyBhbmQgamFyIGZpbGUgZm9yIGRpc3RyaWJ1dGlvbi4gVGhlIHppcCBmaWxlIDxzdHJvbmc+cmljaGVkaXQuemlwPC9zdHJvbmc+CisgICAgd2lsbCBiZSBjcmVhdGVkIGluIHRoZSA8c3Ryb25nPi4vcmljaGVkaXQ8L3N0cm9uZz4gc3ViZGlyZWN0b3J5LiBBbnkgZXhpc3RpbmcgZmlsZSBvZiAKKyAgICB0aGF0IG5hbWUgd2lsbCBiZSBvdmVyd3JpdHRlbi48L3RkPgorICA8L3RyPgorICA8dHI+CisgICAgPHRkPmNsZWFuPC90ZD4KKyAgICA8dGQ+UmVtb3ZlIGFsbCBidWlsdCB0YXJnZXRzLCBsZWF2aW5nIHRoZSBzb3VyY2UuPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+Cis8L2Rpdj4KKworPHA+Rm9yIG1vcmUgaW5mb3JtYXRpb24sIHJlYWQgdGhlIEFudCBkb2N1bWVudGF0aW9uIGFuZCB0aGUgPHN0cm9uZz5idWlsZC54bWw8L3N0cm9uZz4KK2ZpbGUuPC9wPgorCis8cD5BZnRlciBkb2luZyBhIGJ1aWxkIGl0IGlzIGEgZ29vZCBpZGVhIHRvIHJ1biBhbGwgdGhlIGljdTRqIHRlc3RzIGJ5IHR5cGluZyA8YnI+JnF1b3Q7amF2YQorLWNsYXNzcGF0aCAkUm9vdC9jbGFzc2VzIC1EVW5pY29kZURhdGE9JFJvb3Qvc3JjL2NvbS9pYm0vaWN1L2Rldi9kYXRhL3VuaWNvZGUgY29tLmlibS5kZXYudGVzdC5UZXN0QWxsJnF1b3Q7LjwvcD4KKworPHA+KElmIHlvdSBhcmUgYWxsZXJnaWMgdG8gYnVpbGQgc3lzdGVtcywgYXMgYW4gYWx0ZXJuYXRpdmUgdG8gdXNpbmcKK0FudCB5b3UgY2FuIGJ1aWxkIGJ5IHJ1bm5pbmcgamF2YWMgYW5kIGphdmFkb2MgZGlyZWN0bHkuIFRoaXMKK2lzIG5vdCByZWNvbW1lbmRlZC4gWW91IG1heSBoYXZlIHRvIG1hbnVhbGx5IGNyZWF0ZSBkZXN0aW5hdGlvbgorZGlyZWN0b3JpZXMuKTwvcD4KKworPGgzPjxhIG5hbWU9InRyeWluZ291dCI+PC9hPjx1PlRyeWluZyBPdXQgSUNVNEo8L3U+PC9oMz4KKworPHA+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiB0aGUgZGVtb3MgcHJvdmlkZWQgd2l0aCBJQ1U0SiBhcmUgZm9yIHRoZQorbW9zdCBwYXJ0IHVuZG9jdW1lbnRlZC4gIFRoaXMgbGlzdCBjYW4gc2hvdyB5b3Ugd2hlcmUgdG8gbG9vaywgYnV0IHlvdSdsbAoraGF2ZSB0byBleHBlcmltZW50IGEgYml0LiAgVGhlIGRlbW9zICh3aXRoIHRoZQorZXhjZXB0aW9uIG9mIHJpY2hlZGl0KSBhcmUgPHN0cm9uZz51bnN1cHBvcnRlZDwvc3Ryb25nPiBhbmQgbWF5IGNoYW5nZQorb3IgZGlzYXBwZWFyIHdpdGhvdXQgbm90aWNlLjwvcD4KKzxwPlRoZSBpY3U0ai5qYXIgZmlsZSBjb250YWlucyBvbmx5IHRoZSBjb3JlIElDVTRKIGNsYXNzZXMsIG5vdCB0aGUKK2RlbW8gY2xhc3Nlcywgc28gdW5sZXNzIHlvdSBidWlsZCBJQ1U0SiB0aGVyZSBpcyBsaXR0bGUgdG8gdHJ5IG91dC4KKworPGg0PlJpY2ggRWRpdDwvaDQ+CitUbyB0cnkgb3V0IHRoZSA8c3Ryb25nPnJpY2hlZGl0PC9zdHJvbmc+IHBhY2thZ2UsIGZpcnN0IGJ1aWxkIHRoZSByaWNoZWRpdEphciB0YXJnZXQuCitUaGlzIGlzIGEgJ3J1bm5hYmxlJyBqYXIgZmlsZS4gIFRvIHJ1biB0aGUgcmljaGVkaXQgZGVtbywgdHlwZTogCis8dHQ+PGJsb2NrcXVvdGU+ICBqYXZhIC1qYXIgJFJvb3QvcmljaGVkaXQvcmljaGVkaXQuamFyPC9ibG9ja3F1b3RlPjwvdHQ+CisKK1RoaXMgd2lsbCBwcmVzZW50IGFuIGVtcHR5IGVkaXQgcGFuZSB3aXRoIGFuIGF3dCBpbnRlcmZhY2UuPC9wPgorCis8cD5XaXRoIGEgZnVsbGVyIGNvbW1hbmQgbGluZSB5b3UgY2FuIHRyeSBvdXQgb3RoZXIgb3B0aW9ucywgZm9yIGV4YW1wbGU6Cis8dHQ+PGJsb2NrcXVvdGU+ICAgamF2YSAtY2xhc3NwYXRoICRSb290L3JpY2hlZGl0L3JpY2hlZGl0LmphciBjb20uaWJtLnJpY2h0ZXh0LmRlbW8uRWRpdERlbW8gWy1zd2luZ11bZmlsZV08L2Jsb2NrcXVvdGU+PC90dD4KK1RoaXMgd2lsbCB1c2UgYW4gYXd0IEdVSSwgb3IgYSBzd2luZyBHVUkgaWYKKzx0dD4tc3dpbmc8L3R0PiBpcyBwYXNzZWQgb24gdGhlIGNvbW1hbmQgbGluZS4gIEl0IHdpbGwgb3BlbiBhIHRleHQKK2ZpbGUgaWYgb25lIGlzIHByb3ZpZGVkLCBvdGhlcndpc2UgaXQgd2lsbCBvcGVuIGEgYmxhbmsgcGFnZS4gIENsaWNrCit0byB0eXBlLjwvcD4KKzxwPgorWW91IGNhbiBhZGQgdGFicyB0byB0aGUgdGFiIHJ1bGVyIGJ5IGNsaWNraW5nIGluIHRoZSBydWxlciB3aGlsZSBob2xkaW5nIGRvd24gdGhlIGNvbnRyb2wga2V5LgorQ2xpY2tpbmcgb24gYW4gZXhpc3RpbmcgdGFiIGNoYW5nZXMgYmV0d2VlbiBsZWZ0LCByaWdodCwgY2VudGVyLCBhbmQgZGVjaW1hbCB0YWJzLiAgRHJhZ2dpbmcKK2EgdGFiIG1vdmVzIGl0LCBkcmFnZ2luZyBpdCBvZmYgdGhlIHJ1bGVyIHJlbW92ZXMgaXQuPC9wPgorPHA+CitZb3UgY2FuIGV4cGVyaW1lbnQgd2l0aCBjb21wbGV4IHRleHQgYnkgdXNpbmcgdGhlIGtleW1hcCBmdW5jdGlvbnMuCitQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIGFyZSBtYWlubHkgZm9yIGRlbW8gcHVycG9zZXMsIGZvciByZWFsIHdvcmsKK3dpdGggQXJhYmljIG9yIEhlYnJldyB5b3Ugd2lsbCB3YW50IHRvIHVzZSBhbiBpbnB1dCBtZXRob2QuICBZb3Ugd2lsbAorbmVlZCB0byB1c2UgYSBmb250IHRoYXQgc3VwcG9ydHMgQXJhYmljIG9yIEhlYnJldywgJ0x1Y2lkYSBTYW5zJyAocHJvdmlkZWQKK3dpdGggSmF2YSkgc3VwcG9ydHMgdGhlc2UgbGFuZ3VhZ2VzLjwvcD4KKworPGg0Pk90aGVyIGRlbW9zPC9oND4KKzxwPlRoZSBvdGhlciBkZW1vIHByb2dyYW1zIGFyZSA8c3Ryb25nPm5vdCBzdXBwb3J0ZWQ8L3N0cm9uZz4gYW5kIGV4aXN0IG9ubHkgdG8gbGV0IHlvdQorZXhwZXJpbWVudCB3aXRoIHRoZSBJQ1U0SiBjbGFzc2VzLiAgRmlyc3QsIGJ1aWxkIElDVTRKIHVzaW5nIDx0dD5hbnQmbmJzcDthbGw8L3R0Pi4gIFRoZW4gdHJ5CitvbmUgb2YgdGhlIGZvbGxvd2luZzoKKzx1bD4KKzxsaT48dHQ+amF2YSAtY2xhc3NwYXRoIGNsYXNzZXMgY29tLmlibS5pY3UuZGV2LmRlbW8uY2FsZW5kYXIuQ2FsZW5kYXJBcHA8L3R0PgorPGxpPjx0dD5qYXZhIC1jbGFzc3BhdGggY2xhc3NlcyBjb20uaWJtLmljdS5kZXYuZGVtby5ob2xpZGF5LkhvbGlkYXlDYWxlbmRhckRlbW88L3R0PgorPGxpPjx0dD5qYXZhIC1jbGFzc3BhdGggY2xhc3NlcyBjb20uaWJtLmljdS5kZXYuZGVtby5yYmJpLlRleHRCb3VuZERlbW88L3R0Pjxicj4oQ2xpY2sgaW4gdGhlIHRleHQsIHRoZW4gdXNlIDx0dD5jdHJsLU48L3R0PiBhbmQgPHR0PmN0cmwtUDwvdHQ+IHRvIHNlbGVjdCB0aGUgbmV4dCBvciBwcmV2aW91cyBibG9jayBvZiB0ZXh0LikKKzxsaT48dHQ+amF2YSAtY2xhc3NwYXRoIGNsYXNzZXMgY29tLmlibS5pY3UuZGV2LmRlbW8ucmJuZi5SYm5mRGVtbzwvdHQ+Cis8bGk+PHR0PmphdmEgLWNsYXNzcGF0aCBjbGFzc2VzIGNvbS5pYm0uaWN1LmRldi5kZW1vLnRyYW5zbGl0LkRlbW88L3R0PgorPC91bD4KKzwvcD4KKworPGEgbmFtZT0icmVzb3VyY2VzIj4KKzxoMz48dT5JQ1U0SiBSZXNvdXJjZSBJbmZvcm1hdGlvbjwvdT48L2gzPgorPC9hPgorU3RhcnRpbmcgd2l0aCByZWxlYXNlIDIuMSwgSUNVNEogaW5jbHVkZXMgaXRzIG93biAKK3Jlc291cmNlIGluZm9ybWF0aW9uCit3aGljaCBpcyBjb21wbGV0ZWx5IGluZGVwZW5kZW50IG9mIHRoZSBKREsgcmVzb3VyY2UgaW5mb3JtYXRpb24uICBUaGUKK25ldyBJQ1U0SiBpbmZvcm1hdGlvbiBpcyBlcXVpdmFsZW50IHRvIHRoZSBpbmZvcm1hdGlvbiBpbiBJQ1U0QyBhbmQKK3VsdGltYXRlbHkgZGVyaXZlcyBmcm9tIHRoZSBzYW1lIHNvdXJjZS4gIFRoaXMgYWxsb3dzIElDVTRKIDIuMSBhbmQgYWJvdmUgCit0byBiZQorYnVpbHQgb24sIGFuZCBydW4gb24sIEpESyAxLjQuCis8L3A+Cis8cD4KK0J5IGRlZmF1bHQgdGhlIElDVTRKIGRpc3RyaWJ1dGlvbiBpbmNsdWRlcyBhbGwgb2YgdGhlIG5ldyByZXNvdXJjZQoraW5mb3JtYXRpb24uICBJdCBpcyBsb2NhdGVkIGluIHRoZSBwYWNrYWdlIGNvbS5pYm0uaWN1LmltcGwuZGF0YSwgYXMgYQorc2V0IG9mIGNsYXNzIGZpbGVzIG5hbWVkICJMb2NhbGVFbGVtZW50cyIgZm9sbG93ZWQgYnkgdGhlIG5hbWVzIG9mCitsb2NhbGVzIGluIHRoZSBmb3JtIF94eF9ZWV9aWlpaLCB3aGVyZSAneHgnIGlzIHRoZSB0d28tbGV0dGVyIGxhbmd1YWdlCitjb2RlLCAnWVknIGlzIHRoZSBjb3VudHJ5IGNvZGUsIGFuZCAnWlonICh3aGljaCBjYW4gYmUgYW55IGxlbmd0aCkgaXMKK2EgdmFyaWFudC4gIE1hbnkgb2YgdGhlc2UgZmllbGRzIGNhbiBiZSBvbWl0dGVkLiAgTG9jYWxlIG5hbWluZyBpcworZG9jdW1lbnRlZCB0aGUgTG9jYWxlIGNsYXNzLCBqYXZhLnV0aWwuTG9jYWxlLCBhbmQgdGhlIHVzZSBvZiB0aGVzZQorbmFtZXMgaW4gc2VhcmNoaW5nIGZvciByZXNvdXJjZXMgaXMgZG9jdW1lbnRlZCBpbgoramF2YS51dGlsLlJlc291cmNlQnVuZGxlLgorPC9wPgorPHA+CitTb21lIG9mIHRoZXNlIGZpbGVzIHJlcXVpcmUgc2VwYXJhdGUgYmluYXJ5IGRhdGEuICBUaGUgbmFtZXMgb2YgdGhlCitiaW5hcnkgZGF0YSBmaWxlcyBzdGFydCB3aXRoICJDb2xsYXRpb25FbGVtZW50cyIsIHRoZW4gdGhlCitjb3JyZXNwb25kaW5nIExvY2FsZSBzdHJpbmcsIGFuZCBlbmQgd2l0aCAnLnJlcycuICBBbm90aGVyIGRhdGEgZmlsZQorKG9ubHkgb25lIGF0IHRoZSBtb21lbnQpIHN0YXJ0cyB3aXRoIHRoZSBuYW1lICJCcmVha0RpY3Rpb25hcnlEYXRhIiwKK3RoZSBjb3JyZXNwb25kaW5nIExvY2FsZSBzdHJpbmcsIGFuZCBlbmRzIHdpdGggJy51Y3MnLgorPC9wPgorPHA+CitTb21lIG9mIHRoZSBMb2NhbGVFbGVtZW50cyBmaWxlcyBzaGFyZSBkYXRhIHdpdGggb3RoZXIgTG9jYWxlRWxlbWVudHMKK2ZpbGVzLCBiZWNhdXNlIHNvbWUgTG9jYWxlIG5hbWVzIGhhdmUgY2hhbmdlZC4gRm9yIGV4YW1wbGUsIGhlX0lMIHVzZWQKK3RvIGJlIGl3X0lMLiAgSW4gb3JkZXIgdG8gc3VwcG9ydCBib3RoIG5hbWVzIGJ1dCBub3QgZHVwbGljYXRlIHRoZQorZGF0YSwgb25lIG9mIHRoZSBjbGFzcyBmaWxlcyByZWZlcnMgdG8gdGhlIG90aGVyIGNsYXNzIGZpbGUncyBkYXRhLgorPC9wPgorPHA+CitUaGUgbGlzdCBvZiBzdXBwb3J0ZWQgcmVzb3VyY2VzIGlzIGZvdW5kIGluIGEgZmlsZSBjYWxsZWQKK0xvY2FsZUVsZW1lbnRzX2luZGV4LmNsYXNzLiAgVGhpcyBjb250YWlucyB0aGUgbmFtZXMgb2YgYWxsIHRoZQorTG9jYWxlRWxlbWVudHMgcmVzb3VyY2VzIGFuZCBpcyB0aGUgc291cmNlIG9mIHRoZSBpbmZvcm1hdGlvbiByZXR1cm5lZAorYnkgQVBJIHN1Y2ggYXMgQ2FsZW5kYXIuZ2V0QXZhaWxhYmxlTG9jYWxlcy4gKE5vdGU6IGZvciBlYXNlIG9mCitjdXN0b21pemF0aW9uIHRoaXMgcHJvYmFibHkgc2hvdWxkIGJlIGEgdGV4dCBmaWxlKS4KKzwvcD4KKzxwPgorTG9jYWxlRWxlbWVudHMgZmlsZXMgZm9ybSBhIGhpZXJhcmNoeSwgd2l0aCB1cCB0byBmb3VyIGxldmVsczogYSByb290LAorbGFuZ3VhZ2UsIHJlZ2lvbiAoY291bnRyeSksIGFuZCB2YXJpYW50LiAgU2VhcmNoZXMgZm9yIGxvY2FsZSBkYXRhCithdHRlbXB0IHRvIG1hdGNoIGFzIGZhciBkb3duIHRoZSBoaWVyYXJjaHkgYXMgcG9zc2libGUsIGZvciBleGFtcGxlLAorJ2hlX0lMJyB3aWxsIG1hdGNoIExvY2FsZUVsZW1lbnRzX2hlX0lMLCBidXQgJ2hlX1VTJyB3aWxsIG1hdGNoCitMb2NhbGVFbGVtZW50c19oZSAoc2luY2UgdGhlcmUgaXMgbm8gJ1VTJyB2YXJpYW50IGZvciAnaGUnLCBhbmQKKyd4eF9ZWScgd2lsbCBtYXRjaCBMb2NhbGVFbGVtZW50cyAoc2luY2UgdGhlcmUgaXMgbm8gJ3h4JyBsYW5ndWFnZQorY29kZSBpbiB0aGUgTG9jYWxlRWxlbWVudHMgaGllcmFyY2h5KS4gIEFnYWluLCBzZWUKK2phdmEudXRpbC5SZXNvdXJjZUJ1bmRsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKzwvcD4KKzxwPgorV2l0aCB0aGlzIGluIG1pbmQsIHRoZSB3YXkgdG8gcmVtb3ZlIExvY2FsZURhdGEgaXMgdG8gbWFrZSBzdXJlIHRvCityZW1vdmUgYWxsIGRlcGVuZGVuY2llcyBvbiB0aGF0IGRhdGEgYXMgd2VsbC4gIEZvciBleGFtcGxlLCBpZiB5b3UKK3JlbW92ZSBMb2NhbGVFbGVtZW50c19oZS5jbGFzcywgeW91IG5lZWQgdG8gcmVtb3ZlCitMb2NhbGVFbGVtZW50c19oZV9JTC5jbGFzcywgc2luY2UgaXQgaXMgbG93ZXIgaW4gdGhlIGhpZXJhcmNoeSwgYW5kCit5b3UgbXVzdCByZW1vdmUgTG9jYWxlRWxlbWVudHNfaXcuY2xhc3MsIHNpbmNlIGl0IHJlZmVyZW5jZXMKK0xvY2FsZUVsZW1lbnRzX2hlLCBhbmQgTG9jYWxlRUxlbWVudHNfaXdfSUwuY2xhc3MsIHNpbmNlIGl0IGRlcGVuZHMgb24KK2l0IChhbmQgYWxzbyByZWZlcmVuY2VzIExvY2FsZUVsZW1lbnRzX2hlX0lMKS4gIEZvciBhbm90aGVyIGV4YW1wbGUsCitpZiB5b3UgcmVtb3ZlIENvbGxhdGlvbkVsZW1lbnRzX3poX19QSU5ZSU4ucmVzLCB5b3UgbXVzdCBhbHNvIHJlbW92ZQorTG9jYWxlRWxlbWVudHNfemhfX1BJTllJTi5jbGFzcywgc2luY2UgaXQgZGVwZW5kcyBvbiB0aGUKK0NvbGxhdGlvbkVsZW1lbnRzX3poX19QSU5ZSU4ucmVzLgorPC9wPgorCis8cD4KK1VuZm9ydHVuYXRlbHksIHRoZSBqYXIgdG9vbCBpbiB0aGUgSkRLIHByb3ZpZGVzIG5vIHdheSB0byByZW1vdmUgaXRlbXMKK2Zyb20gYSBqYXIgZmlsZS4gIFRodXMgeW91IGhhdmUgdG8gZXh0cmFjdCB0aGUgcmVzb3VyY2VzLCByZW1vdmUgdGhlCitvbmVzIHlvdSBkb24ndCB3YW50LCBhbmQgdGhlbiBjcmVhdGUgYSBuZXcgamFyIGZpbGUgd2l0aCB0aGUgcmVtaW5pbmcKK3Jlc291cmNlcy4gIFNlZSB0aGUgamFyIHRvb2wgaW5mb3JtYXRpb24gZm9yIGhvdyB0byBkbyB0aGlzLiAgQmVmb3JlCisncmVqYXJpbmcnIHRoZSBmaWxlcywgYmUgc3VyZSB0byB0aG9yb3VnaGx5IHRlc3QgeW91ciBhcHBsaWNhdGlvbiB3aXRoCit0aGUgcmVtYWluaW5nIHJlc291cmNlcywgbWFraW5nIHN1cmUgZWFjaCByZXF1aXJlZCByZXNvdXJjZSBpcworcHJlc2VudC4KKzwvcD4KKworPGgzPkRldmVsb3BpbmcgUmVzb3VyY2VzIHRvIGJlIHVzZWQgd2l0aCBJQ1U0SjwvaDM+Cis8cD4KK0lDVTRKIDIuMSBhbmQgYWJvdmUgdXNlcyB0aGUgc3RhbmRhcmQgY2xhc3MgbG9va3VwIG1lY2hhbmlzbS4gIFRoaXMgbWVhbnMgCithbnkgcHByb3ByaWF0ZWx5IG5hbWVkIHJlc291cmNlIG9uIHRoZSBDTEFTU1BBVEggd2lsbCBiZSBsb2NhdGVkLCBpbiB0aGUKK29yZGVyIGxpc3RlZCBpbiB0aGUgY2xhc3NwYXRoLgorPC9wPgorPHA+CitJZiB5b3UgY3JlYXRlIGEgcmVzb3VyY2UgZmlsZQorY29tLmlibS5pY3UuaW1wbC5kYXRhLkxvY2FsZUVsZW1lbnRzX3h4X1lZLmNsYXNzLCBhbmQgbGlzdCBpdCBvbiB0aGUKK0NMQVNTUEFUSCBiZWZvcmUgaWN1NGouamFyLCB5b3VyIHJlc291cmNlIHdpbGwgYmUgdXNlZCBpbiBwbGFjZSBvZiBhbnkKK2V4aXN0aW5nIExvY2FsZUVsZW1lbnRzX3h4X1lZIHJlc291cmNlIGluIGljdTRqLiAgVGhpcyBpcyBhIGdvb2Qgd2F5Cit0byB0cnkgb3V0IGNoYW5nZXMgdG8gcmVzb3VyY2VzLiAgWW91IGNhbiwgZm9yIGV4YW1wbGUsIGluY2x1ZGUgdGhlCityZXNvdXJjZSBpbiB5b3VyIGFwcGxpY2F0aW9uJ3MgamFyIGZpbGUgYW5kIGxpc3QgaXQgYWhlYWQgb2YKK2ljdTRqLmphci4KKzwvcD4KKzxwPgorSW4gb3JkZXIgdG8gY3JlYXRlIG5ldyByZXNvdXJjZXMsIHlvdSBmaXJzdCBtdXN0IHRob3JvdWdobHkgdW5kZXJzdGFuZAordGhlIHZhcmlvdXMgZWxlbWVudHMgY29udGFpbmVkIGluIHRoZSByZXNvdXJjZSBmaWxlcywgdGhlaXIgc3ludGF4IGFuZAorZGVwZW5kZW5jaWVzLiAgWW91IGNhbm5vdCBzaW1wbHkgJ3BhdGNoJyBleGlzdGluZyByZXNvdXJjZSBmaWxlcyB3aXRoCithIHNpbmdsZSBjaGFuZ2UgYmVjYXVzZSB0aGUgbmV3IGZpbGUgY29tcGxldGVseSByZXBsYWNlcyB0aGUgb2xkIGZpbGUKK2luIHRoZSByZXNvdXJjZSBoaWVyYXJjaHkuICBJbiBnZW5lcmFsLCB0aGUgbmV3IHJlc291cmNlIGZpbGUgc2hvdWxkCitjb250YWluIGFsbCB0aGUgZGlmZmVyZW50IGRhdGEgdGhhdCB0aGUgb2xkIG9uZSBkaWQsIHBsdXMgeW91cgorY2hhbmdlcy4KKzwvcD4KKzxwPgorQWRkaW5nIGEgbmV3ICdsZWFmJyByZXNvdXJjZSBpcyBlYXNpZXN0LiAgRWxlbWVudHMgZGVmaW5lZCBpbiB0aGF0CityZXNvdXJjZSB3aWxsIG92ZXJyaWRlIGNvcnJlc3BvbmRpbmcgb25lcyBpbiB0aGUgcmVzb3VyY2VzIGZ1cnRoZXIgdXAKK3RoZSBoaWVyYXJjaHkuICBUaHVzIHlvdSBjYW4sIGZvciBleGFtcGxlLCB0cnkgb3V0IG5ldyBsb2NhbGl6ZWQgbmFtZXMKK29mIGRheXMgb2YgdGhlIHdlZWssIGFzIHRoZXkgYXJlIGFsbCBjb250YWluZWQgaW4gb25lIGVsZW1lbnQuICBUaGUKK3ZhcmlhbnQgbWVjaGFuaXNtIGNhbiBiZSB1c2VkIHRvIHRlbXBvcmFyaWx5IHRyeSBvdXQgbmV3IHZlcnNpb25zIG9mCitleGlzdGluZyByZXNvdXJjZSBlbGVtZW50cyAodGhvdWdoIHdlIGRvbid0IHJlY29tbWVuZCBzaGlwcGluZyB0aGlzCit3YXkpLiAgTm90ZSB0aG91Z2ggdGhhdCBzb21lIHJlc291cmNlcyBoYXZlIGRldGFpbGVkIGRlcGVuZGVuY2llcyBvbgorZWFjaCBvdGhlciwgc28gdGhhdCB5b3UgY2Fubm90IHNpbXBseSBhc3N1bWUgdGhhdCBhIG5ldyBlbGVtZW50IHdpdGgKK3RoZSBzYW1lIHN0cnVjdHVyZSBhbmQgbnVtYmVyIG9mIGNvbnRlbnRzIHdpbGwgJ2p1c3Qgd29yay4nCis8L3A+Cis8cD4KK1BhdGNoaW5nIGFuICdpbnRlcm5hbCcgcmVzb3VyY2UgKHNheSwgb25lIGNvcnJlc3BvbmRpbmcgdG8gYW4gZXhpc3RpbmcKK2xhbmd1YWdlIHJlc291cmNlIHRoYXQgaGFzIGNoaWxkcmVuKSByZXF1aXJlcyBjYXJlZnVsIGFuYWx5c2lzIG9mIHRoZQorY29udGVudHMgb2YgdGhlIHJlc291cmNlcy4KKzwvcD4KKworPHA+CitMb2NhbGVFbGVtZW50cyByZXNvdXJjZSBkYXRhIGluIElDVTRKIGlzIGNoZWNrZWQgaW4gdG8gdGhlCityZXBvc2l0b3J5IGFzIHByZWNvbXBpbGVkIGNsYXNzIGZpbGVzLiAgVGhpcyBtZWFucyB0aGF0IGluc3BlY3RpbmcgdGhlCitjb250ZW50cyBvZiB0aGVzZSByZXNvdXJjZXMgaXMgZGlmZmljdWx0LiAgVGhleSBhcmUgY29tcGlsZWQgZnJvbSBqYXZhCitmaWxlcyB0aGF0IGluIHR1cm4gYXJlIG1hY2hpbmUtZ2VuZXJhdGVkIGZyb20gSUNVNEMgYmluYXJ5IGRhdGEsIHVzaW5nCit0aGUgZ2VucmIgdG9vbCBpbiBJQ1U0Qy4gIFlvdSBjYW4gdmlldyB0aGUgY29udGVudHMgb2YgdGhlIElDVTRDIHRleHQKK3Jlc291cmNlIGZpbGVzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRlbnRzIG9mIHRoZSBJQ1U0SiByZXNvdXJjZXMsIGFzCit0aGV5IGFyZSB0aGUgc2FtZS4KKzwvcD4KKworPGgzPkRldmVsb3BpbmcgSUNVNEogUmVzb3VyY2VzPC9oMz4KKzxwPgorQ3VycmVudGx5IG9ubHkgdGhlIExvY2FsZUVsZW1lbnRzIHJlc291cmNlIGRhdGEgaXMgc2hhcmVkLCBvdGhlciBJQ1UKK3Jlc291cmNlcyAoY2FsZW5kYXIsIHRyYW5zbGl0ZXJhdG9yLCBldGMuKSBhcmUgc3RpbGwgY2hlY2tlZCBpbgorZGlyZWN0bHkgdG8gSUNVNEogYXMgc291cmNlIGZpbGVzLiAgVGhpcyBtZWFucyB0aGF0IGRldmVsb3BtZW50IGFuZAorbWFpbnRlbmFuY2Ugb2YgdGhlc2UgcmVzb3VyY2VzIGNvbnRpbnVlcyBhcyBiZWZvcmUsIG9ubHkKK0xvY2FsZUVsZW1lbnRzIHJlc291cmNlIGRhdGEgaGFzIGJlZW4gY2hhbmdlZCBpbiBJQ1U0SiAyLjEuICBUaGlzCitwcm9iYWJseSB3aWxsIGNoYW5nZSBpbiB0aGUgZnV0dXJlIG9uY2Ugd2Ugd29yayBvdXQgYSByZWFzb25hYmxlCittZWNoYW5pc20gZm9yIHN0b3JpbmcgYW5kIGdlbmVyYXRpbmcgdGhlIHJlc291cmNlIGRhdGEuCis8L3A+Cis8cD4KK09uZSBnb2FsIG9mIHVzaW5nIHRoZSBzYW1lIHJlc291cmNlIGRhdGEgYXMgSUNVNEMgaXMgdG8gYXZvaWQga2VlcGluZworcmVkdW5kYW50IGNvcGllcyBvZiB0aGUgcmVzb3VyY2UgZGF0YS4gIEN1cnJlbnRseSB0aGVyZSBpcyBubyBzZXBhcmF0ZQorcmVwb3NpdG9yeSBvZiB0aGUgJ21hc3RlcicgcmVzb3VyY2UgZGF0YSwgaXQgaXMgY2hlY2tlZCBpbiB0byBJQ1U0QywKK2FuZCB0aGUgdG9vbHMgZm9yIGNvbnZlcnRpbmcgaXQgdG8gLmphdmEgZmlsZXMgYXJlIElDVTRDIHRvb2xzLiAgVGhpcworaXMgaW5jb252ZW5pZW50IGZvciB3b3JraW5nIGluIEphdmEsIGJ1dCBzaW5jZSBtYWludGVuYW5jZSBvZiBJQ1U0SgorYW5kIElDVTRDIGlzIHN1cHBvc2VkIHRvIGdvIG9uICdpbiBwYXJhbGxlbCwnIGFzIGEgcHJhY3RpY2FsIG1hdHRlcgorcGVvcGxlIHdpbGwgaGF2ZSB0byBiZSBmYW1pbGlhciB3aXRoIGRldmVsb3BtZW50IGluIGJvdGggQyBhbmQgSmF2YSwKK2FuZCB3aXRoIHRoZSBjb252ZW50aW9ucyBhbmQgc3RydWN0dXJlIG9mIGVhY2ggcHJvamVjdC4gIEFkZGl0aW9uYWxseSwKK3NoYXJpbmcgb2YgZGF0YSBtZWFucyB0aGF0IG1vZGlmaWNhdGlvbnMgdG8gZGF0YSBpbW1lZGlhdGVseSBpbXBhY3QKK2JvdGggcHJvamVjdHMgKGFzIGl0IHNob3VsZCkgYW5kIHRodXMgYm90aCBwcm9qZWN0cyBuZWVkIHRvIGJlIHRlc3RlZAord2hlbiBzdWNoIGNoYW5nZXMgYXJlIG1hZGUuICBUaGUgYnVsayBvZiB0aGUgdG9vbHMgYXJlIGN1cnJlbnRseSBvbgordGhlIElDVTRDIHNpZGUsIGFuZCB3aWxsIGxpa2VseSBzdGF5IHRoYXQgd2F5LCBzbyB0aGlzIHNlZW1zIGxpa2UgYQorcmVhc29uYWJsZSBpbml0aWFsIGFwcHJvYWNoIHRvIHNoYXJpbmcgdGhlIGRhdGEuCis8L3A+CisKKzxwPgorV2hpbGUgcHJvdG90eXBpbmcgb2YgTG9jYWxlRWxlbWVudHMgZGF0YSBjYW4gb2NjdXIgaW4gZWl0aGVyIEphdmEgb3IKK0MsIHRoZSBmaW5hbCB2ZXJzaW9uIHNob3VsZCBiZSBjaGVja2VkIGluIHRvIElDVTRDIGluIHRleHQgZm9ybWF0LgorR2VucmIgaXMgdGhlbiBydW4gdG8gZ2VuZXJhdGUgdGhlIC5qYXZhIGFuZCAucmVzIGZpbGVzLiAgVGhleSBhcmUgdGhlbgorY29tcGlsZWQgYW5kIGphcidkIGludG8gdGhlIGZpbGUgSUNVTG9jYWxlRGF0YS5qYXIuICBUaGUgcmVzdWx0aW5nIGphcgorZmlsZSBpcyB0aGVuIGNoZWNrZWQgaW4gdG8gSUNVNEogYXMKK3NyYy9jb20vaWJtL2ljdS9kZXYvZGF0YS9JQ1VMb2NhbGVEYXRhLmphci4gIChUaGlzIGlzIG5vdCBncmVhdCBidXQgaXQKK2FsbG93cyBJQ1U0SiB0byBiZSBkb3dubG9hZGVkIGFuZCBidWlsdCBhcyBvbmUgcHJvamVjdCwgaW5zdGVhZCBvZgordHdvLCBvbmUgZm9yIGxvY2FsZSBkYXRhIGFuZCBvbmUgZm9yIElDVTRKIHByb3Blci4gIEdpdmVuIHRoZSAyLjQKK3NjaGVkdWxlIGl0IHdhc24ndCBwb3NzaWJsZSB0byB3b3JrIG91dCB0aGUgbGFyZ2VyIGRhdGEgc2hhcmluZworcHJvYmxlbSBpbiB0aW1lLCBzbyB3ZSB0cmllZCB0byBsaW1pdCB0aGUgaW1wYWN0IHRvIGp1c3Qgd2hhdCB3YXMKK25lZWRlZCB0byBnZXQgSkRLIDEuNCBzdXBwb3J0IHVwIGFuZCBydW5uaW5nLikKKzwvcD4KKworPHA+CitUaGUgZmlsZXMgaW4gSUNVTG9jYWxlRGF0YS5qYXIgZ2V0IGV4dHJhY3RlZCB0byBjb20vaWJtL2ljdS9pbXBsL2RhdGEgaW4KK3RoZSBidWlsZCBkaXJlY3Rvcnkgd2hlbiB0aGUgJ2NvcmUnIHRhcmdldCBpcyBidWlsdC4gIFRoZXJlYWZ0ZXIsIGFzCitsb25nIGFzIHRoZSBmaWxlIExvY2FsZUVsZW1lbnRzX2luZGV4LmNsYXNzIGZpbGUgaXMgdW50b3VjaGVkLCB0aGV5IHdpbGwKK25vdCBiZSBleHRyYWN0ZWQgYWdhaW4uICBCdWlsZGluZyB0aGUgJ3Jlc291cmNlJyB0YXJnZXQgd2lsbCBmb3JjZSB0aGUKK3Jlc291cmNlcyB0byBvbmNlIGFnYWluIGJlIGV4dHJhY3RlZC4gIEV4dHJhY3Rpb24gd2lsbCAKK292ZXJ3cml0ZSBhbnkgY29ycmVzcG9uZGluZyAuY2xhc3MgZmlsZXMgYWxyZWFkeSBpbiB0aGF0IGRpcmVjdG9yeS4KKzwvcD4KKworPGgzPjxhIG5hbWU9IldoZXJlVG9GaW5kTW9yZSI+PC9hPjx1PldoZXJlIHRvIEZpbmQgTW9yZSBJbmZvcm1hdGlvbjwvdT48L2gzPgorCis8cD5Gb3IgaW5mb3JtYXRpb24gc3BlY2lmaWMgdG8gdGhpcyBjdXJyZW50IHJlbGVhc2UsIHBsZWFzZSByZWZlciB0byB0aGUgPGEgaHJlZj0icmVsZWFzZW5vdGVzLmh0bWwiPnJlbGVhc2Vub3Rlcy5odG1sPC9hPjwvcD4KKworPHA+PGEgaHJlZj0iaHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2ljdTRqLyI+aHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2ljdTRqLzwvYT4gaXMgYQorcG9pbnRlciB0byBnZW5lcmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBJbnRlcm5hdGlvbmFsIENvbXBvbmVudHMgZm9yIFVuaWNvZGUgaW4gSmF2YSA8L3A+CisKKzxwPjxhIGhyZWY9Imh0dHA6Ly93d3cuaWJtLmNvbS9kZXZlbG9wZXIvdW5pY29kZSI+aHR0cDovL3d3dy5pYm0uY29tL2RldmVsb3Blci91bmljb2RlPC9hPiBpcyBhIHBvaW50ZXIgdG8KK2luZm9ybWF0aW9uIG9uIGhvdyB0byBtYWtlIGFwcGxpY2F0aW9ucyBnbG9iYWwuIDwvcD4KKworPGgzPjxhIE5BTUU9IlN1Ym1pdHRpbmdDb21tZW50cyI+PC9hPjx1PlN1Ym1pdHRpbmcgQ29tbWVudHMsIFJlcXVlc3RpbmcgRmVhdHVyZXMgYW5kCitSZXBvcnRpbmcgQnVnczwvdT48L2gzPgorCis8cD5Zb3VyIGNvbW1lbnRzIGFyZSBpbXBvcnRhbnQgdG8gbWFraW5nIElDVTRKIHN1Y2Nlc3NmdWwuJm5ic3A7IFdlIGFyZSBjb21taXR0ZWQKK3RvIGZpeGluZyBhbnkgYnVncywgYW5kIHdpbGwgdXNlIHlvdXIgZmVlZGJhY2sgdG8gaGVscCBwbGFuIGZ1dHVyZSByZWxlYXNlcy48L3A+CisKKzxwPlRvIHN1Ym1pdCBjb21tZW50cywgcmVxdWVzdCBmZWF0dXJlcyBhbmQgcmVwb3J0IGJ1Z3MsIGNvbnRhY3QgdXMgdGhyb3VnaCB0aGUgPGEgaHJlZj1odHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vaWN1NGovYXJjaGl2ZXMvaW5kZXguaHRtbD5JQ1U0SiBtYWlsaW5nIGxpc3Q8L2E+Ljxicj4KK1doaWxlIHdlIGFyZSBub3QgYWJsZSB0byByZXNwb25kIGluZGl2aWR1YWxseSB0byBlYWNoIGNvbW1lbnQsIHdlIGRvIHJldmlldyBhbGwgY29tbWVudHMuPC9wPgorPHA+VGhhbmtzIGZvciB5b3VyIGludGVyZXN0IGluIElDVTRKITwvcD4KKworPGhyIHNpemU9IjIiIHdpZHRoPSIxMDAlIiBhbGlnbj0iY2VudGVyIj4KKworPHA+PGk+PGZvbnQgc2l6ZT0iLTEiPkNvcHlyaWdodCCpIDIwMDIgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgUmlnaHRzCitSZXNlcnZlZC48YnI+Cis1NjAwIENvdHRsZSBSb2FkLCBTYW4gSm9z6SwgQ0EgOTUxOTMKKzwvZm9udD48L2k+PC9wPgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L2RhdGEvVGVzdERhdGFFbGVtZW50c190ZXN0YWxpYXNlcy5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi9kYXRhL1Rlc3REYXRhRWxlbWVudHNfdGVzdGFsaWFzZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDI4NjAyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi9kYXRhL1Rlc3REYXRhRWxlbWVudHNfdGVzdGFsaWFzZXMuamF2YQpAQCAtMCwwICsxLDcxIEBACisvKioKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi9kYXRhL1Rlc3REYXRhRWxlbWVudHNfdGVzdGFsaWFzZXMuamF2YSx2ICQKKyogJERhdGU6IDIwMDIvMDgvMTMgMjE6Mzk6MDEgJAorKiAkUmV2aXNpb246IDEuNCAkCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworcGFja2FnZSBjb20uaWJtLmljdS5kZXYuZGF0YTsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5JQ1VMaXN0UmVzb3VyY2VCdW5kbGU7CisKK3B1YmxpYyBjbGFzcyBUZXN0RGF0YUVsZW1lbnRzX3Rlc3RhbGlhc2VzIGV4dGVuZHMgSUNVTGlzdFJlc291cmNlQnVuZGxlIHsKKworICAgIHB1YmxpYyBUZXN0RGF0YUVsZW1lbnRzX3Rlc3RhbGlhc2VzICAoKSB7CisgICAgICAgICAgc3VwZXIuY29udGVudHMgPSBkYXRhOworICAgIH0KKyAgICBwcml2YXRlIHN0YXRpYyBPYmplY3RbXVtdIGRhdGEgPSBuZXcgT2JqZWN0W11bXSB7IAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgIkNvbGxhdGlvbkVsZW1lbnRzIiwKKyAgICAgICAgICAgICAgICAgICAgbmV3IElDVUxpc3RSZXNvdXJjZUJ1bmRsZS5BbGlhcygiL0lDVURBVEEvdWsiKSwKKyAgICAgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiYW5vdGhlcmFsaWFzIiwKKyAgICAgICAgICAgICAgICAgICAgbmV3IElDVUxpc3RSZXNvdXJjZUJ1bmRsZS5BbGlhcygiL0lDVURBVEEvdWsvQ29sbGF0aW9uRWxlbWVudHMiKSwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgIm5vbmV4aXN0aW5nIiwKKyAgICAgICAgICAgICAgICAgICAgbmV3IElDVUxpc3RSZXNvdXJjZUJ1bmRsZS5BbGlhcygiL0lDVURBVEEvdWsiKSwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgInJlZmVyZW5jaW5nYWxpYXMiLAorICAgICAgICAgICAgICAgICAgICBuZXcgSUNVTGlzdFJlc291cmNlQnVuZGxlLkFsaWFzKCJ0ZXN0YWxpYXNlcy9hbm90aGVyYWxpYXMvU2VxdWVuY2UiKSwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgInNpbXBsZWFsaWFzIiwKKyAgICAgICAgICAgICAgICAgICAgbmV3IElDVUxpc3RSZXNvdXJjZUJ1bmRsZS5BbGlhcygidGVzdHR5cGVzL21lbnUvZmlsZS9vcGVuIiksCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJ6b25lU3RyaW5ncyIsCisgICAgICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXXsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBJQ1VMaXN0UmVzb3VyY2VCdW5kbGUuQWxpYXMoIi9JQ1VEQVRBL2VuIiksCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgSUNVTGlzdFJlc291cmNlQnVuZGxlLkFsaWFzKCIvSUNVREFUQS9lbiIpLAorCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJ6b25lVGVzdHMiLAorICAgICAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W11bXXsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiem9uZUFsaWFzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgSUNVTGlzdFJlc291cmNlQnVuZGxlLkFsaWFzKCIvSUNVREFUQS9lbi96b25lU3RyaW5ncyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiem9uZUFsaWFzMSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IElDVUxpc3RSZXNvdXJjZUJ1bmRsZS5BbGlhcygiL0lDVURBVEEvZW4vem9uZVN0cmluZ3MvMyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiem9uZUFsaWFzMiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IElDVUxpc3RSZXNvdXJjZUJ1bmRsZS5BbGlhcygiL0lDVURBVEEvZW4vem9uZVN0cmluZ3MvMy8wIiksCisgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIH0sCisgICAgfTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvZGF0YS9UZXN0RGF0YUVsZW1lbnRzX3Rlc3RjaXJjdWxhcmFsaWFzLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L2RhdGEvVGVzdERhdGFFbGVtZW50c190ZXN0Y2lyY3VsYXJhbGlhcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2ZmQ5NDIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L2RhdGEvVGVzdERhdGFFbGVtZW50c190ZXN0Y2lyY3VsYXJhbGlhcy5qYXZhCkBAIC0wLDAgKzEsNDQgQEAKKy8qKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMS0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L2RhdGEvVGVzdERhdGFFbGVtZW50c190ZXN0Y2lyY3VsYXJhbGlhcy5qYXZhLHYgJAorICogJERhdGU6IDIwMDIvMDgvMTMgMjE6NDM6MzggJAorICogJFJldmlzaW9uOiAxLjIgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LmRhdGE7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuSUNVTGlzdFJlc291cmNlQnVuZGxlOworLyoqCisgKiBAYXV0aG9yIFJhbQorICoKKyAqIFRvIGNoYW5nZSB0aGlzIGdlbmVyYXRlZCBjb21tZW50IGVkaXQgdGhlIHRlbXBsYXRlIHZhcmlhYmxlICJ0eXBlY29tbWVudCI6CisgKiBXaW5kb3c+UHJlZmVyZW5jZXM+SmF2YT5UZW1wbGF0ZXMuCisgKiBUbyBlbmFibGUgYW5kIGRpc2FibGUgdGhlIGNyZWF0aW9uIG9mIHR5cGUgY29tbWVudHMgZ28gdG8KKyAqIFdpbmRvdz5QcmVmZXJlbmNlcz5KYXZhPkNvZGUgR2VuZXJhdGlvbi4KKyAqLworcHVibGljIGNsYXNzIFRlc3REYXRhRWxlbWVudHNfdGVzdGNpcmN1bGFyYWxpYXMgIGV4dGVuZHMgSUNVTGlzdFJlc291cmNlQnVuZGxlIHsKKyAgICBwdWJsaWMgVGVzdERhdGFFbGVtZW50c190ZXN0Y2lyY3VsYXJhbGlhcygpIHsKKyAgICAgICAgICBzdXBlci5jb250ZW50cyA9IGRhdGE7CisgICAgfQorICAgIHByaXZhdGUgc3RhdGljIE9iamVjdFtdW10gZGF0YSA9IG5ldyBPYmplY3RbXVtdIHsgCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiYWFhIiwKKyAgICAgICAgICAgICAgICAgICAgbmV3IElDVUxpc3RSZXNvdXJjZUJ1bmRsZS5BbGlhcygidGVzdGNpcmN1bGFyYWxpYXMvYWFiIiksCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJhYWIiLAorICAgICAgICAgICAgICAgICAgICBuZXcgSUNVTGlzdFJlc291cmNlQnVuZGxlLkFsaWFzKCJ0ZXN0Y2lyY3VsYXJhbGlhcy9hYWMiKSwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImFhYyIsCisgICAgICAgICAgICAgICAgICAgIG5ldyBJQ1VMaXN0UmVzb3VyY2VCdW5kbGUuQWxpYXMoInRlc3RjaXJjdWxhcmFsaWFzL2FhYSIpLAorICAgICAgICAgICAgICAgIH0gCisgICAgfTsKK30KKwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi9kYXRhL1Rlc3REYXRhRWxlbWVudHNfdGVzdHR5cGVzLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L2RhdGEvVGVzdERhdGFFbGVtZW50c190ZXN0dHlwZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjM4ZThkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi9kYXRhL1Rlc3REYXRhRWxlbWVudHNfdGVzdHR5cGVzLmphdmEKQEAgLTAsMCArMSwxNDUgQEAKKy8qKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMS0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L2RhdGEvVGVzdERhdGFFbGVtZW50c190ZXN0dHlwZXMuamF2YSx2ICQKKyAqICREYXRlOiAyMDAyLzA4LzEzIDIxOjQ3OjMwICQKKyAqICRSZXZpc2lvbjogMS4yICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi5kYXRhOworCitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLklDVUxpc3RSZXNvdXJjZUJ1bmRsZTsKKworcHVibGljIGNsYXNzIFRlc3REYXRhRWxlbWVudHNfdGVzdHR5cGVzIGV4dGVuZHMgSUNVTGlzdFJlc291cmNlQnVuZGxlIHsKKworICAgIHB1YmxpYyBUZXN0RGF0YUVsZW1lbnRzX3Rlc3R0eXBlcyAgKCkgeworICAgICAgICAgIHN1cGVyLmNvbnRlbnRzID0gZGF0YTsKKyAgICB9CisgICAgcHJpdmF0ZSBzdGF0aWMgT2JqZWN0W11bXSBkYXRhID0gbmV3IE9iamVjdFtdW10geyAKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJiaW5hcnl0ZXN0IiwKKyAgICAgICAgICAgICAgICAgICAgbmV3IElDVUxpc3RSZXNvdXJjZUJ1bmRsZS5Db21wcmVzc2VkQmluYXJ5KAorICAgICAgICAgICAgICAgICAgICAgICAgIlx1MDAwMFx1MDAwRlx1MDAwMVx1MDIwM1x1MDQwNVx1MDYwN1x1MDgwOVx1MEEwQiIgKworICAgICAgICAgICAgICAgICAgICAgICAgIlx1MEMwRFx1MEUwMCIpLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1wdHlhcnJheSIsCisgICAgICAgICAgICAgICAgICAgIG5ldyBTdHJpbmdbXSB7IAorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1wdHliaW4iLAorICAgICAgICAgICAgICAgICAgICBuZXcgSUNVTGlzdFJlc291cmNlQnVuZGxlLkNvbXByZXNzZWRCaW5hcnkobnVsbCksCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbXB0eWV4cGxpY2l0c3RyaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbXB0eWludCIsCisgICAgICAgICAgICAgICAgICAgIG5ldyBJbnRlZ2VyKDApLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1wdHlpbnR2IiwKKyAgICAgICAgICAgICAgICAgICAgbmV3IEludGVnZXJbXSB7CisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbXB0eXN0cmluZyIsCisgICAgICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1wdHl0YWJsZSIsCisgICAgICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXVtdeworICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiaW1wb3J0dGVzdCIsCisgICAgICAgICAgICAgICAgICAgIG5ldyBJQ1VMaXN0UmVzb3VyY2VCdW5kbGUuQ29tcHJlc3NlZEJpbmFyeSgKKyAgICAgICAgICAgICAgICAgICAgICAgICJcdTAwMDBcdTAwMEZcdTAwMDFcdTAyMDNcdTA0MDVcdTA2MDdcdTA4MDlcdTBBMEIiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICJcdTBDMERcdTBFMDAiKSwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImludGVnZXJhcnJheSIsCisgICAgICAgICAgICAgICAgICAgIG5ldyBJbnRlZ2VyW10geworICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEludGVnZXIoMSksCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgSW50ZWdlcigyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBJbnRlZ2VyKDMpLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEludGVnZXIoLTMpLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEludGVnZXIoNCksCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgSW50ZWdlcig1KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBJbnRlZ2VyKDYpLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEludGVnZXIoNyksCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJtZW51IiwKKyAgICAgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdW117CisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXVtdeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhpdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhpdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcGVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPcGVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNhdmUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNhdmUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAibWludXNvbmUiLAorICAgICAgICAgICAgICAgICAgICBuZXcgSW50ZWdlcigtMSksCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJvbmUiLAorICAgICAgICAgICAgICAgICAgICBuZXcgSW50ZWdlcigxKSwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgIm9uZWh1bmRyZWR0d2VudHl0aHJlZSIsCisgICAgICAgICAgICAgICAgICAgIG5ldyBJbnRlZ2VyKDEyMyksCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJwbHVzb25lIiwKKyAgICAgICAgICAgICAgICAgICAgbmV3IEludGVnZXIoMSksCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJzdHJpbmciLAorICAgICAgICAgICAgICAgICAgICBuZXcgU3RyaW5nW10geyAKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgInN0cmluZ1RhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdeworICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFN0cmluZ1tdIHsgCisgICAgICAgICAgICAgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJ0ZXN0X3VuZGVyc2NvcmVzIiwKKyAgICAgICAgICAgICAgICAgICAgInRlc3QgbWVzc2FnZSAuLi4uIiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgInRlc3Rlc2NhcGUiLAorICAgICAgICAgICAgICAgICAgICAidGFiOlx1MDAwOSBjcjpcZiBmZjpcdTAwMEMgbmV3bGluZTpcbiBiYWNrc2xhc2g6XFwiICsKKyAgICAgICAgICAgICAgICAgICAgIiBxdW90ZT1cXFwnIGRvdWJsZVF1b3RlPVxcXCIgc2luZ2xlcXVvdXRlcz0nJyIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJ6ZXJvdGVzdCIsCisgICAgICAgICAgICAgICAgICAgICJhYmNcdTAwMDBkZWYiLAorICAgICAgICAgICAgICAgIH0sCisgICAgfTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvZGF0YS9UaGFpV29yZEZyZXEueGxzIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi9kYXRhL1RoYWlXb3JkRnJlcS54bHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTI2MjAzOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvZGF0YS9UaGFpV29yZEZyZXEueGxzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvZGF0YS9ob2xpZGF5c19qcC51Y3MgYi9zcmMvY29tL2libS9pY3UvZGV2L2RhdGEvaG9saWRheXNfanAudWNzCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjJlNmJjNDkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L2RhdGEvaG9saWRheXNfanAudWNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvZGF0YS9yYmJpL2VuZ2xpc2guZGljdCBiL3NyYy9jb20vaWJtL2ljdS9kZXYvZGF0YS9yYmJpL2VuZ2xpc2guZGljdApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xMGY0MzBiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi9kYXRhL3JiYmkvZW5nbGlzaC5kaWN0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvZGF0YS9yYmJpL3dvcmRzLnR4dCBiL3NyYy9jb20vaWJtL2ljdS9kZXYvZGF0YS9yYmJpL3dvcmRzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hN2UwNmFjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi9kYXRhL3JiYmkvd29yZHMudHh0CkBAIC0wLDAgKzEsMjk5MCBAQAorLS0KKy0tc3VjaAorYQorYSdiZWwtbWl6cmFpbQorYSdpYWgKK2FiYXRlCithYmF0ZWQKK2FiZGljYXRlZAorYWJlbAorYWJpJ2RhCithYmlkZQorYWJpbSdhLWVsCithYmltJ2VsZWNoCithYmltJ2VsZWNoJ3MKK2FibGUKK2Fib2xpc2gKK2Fib2xpc2hpbmcKK2Fib21pbmF0aW9uCithYm91dAorYWJvdmUKK2FicmFoYW0KK2FicmFoYW0ncworYWJyYW0KK2FicmFtJ3MKK2Ficm9hZAorYWJzZW50CithYnNvbHV0ZQorYWJzb2x2ZWQKK2FidW5kYW5jZQorYWJ1bmRhbnRseQorYWJ1c2VzCithY2NhZAorYWNjZXB0CithY2NlcHRlZAorYWNjb21tb2RhdGlvbgorYWNjb3JkaW5nCithY2NvcmRpbmdseQorYWNjb3VudAorYWNjdXN0b21lZAorYWNoYm9yCithY2tub3dsZWRnZWQKK2FjcXVpZXNjZQorYWNxdWlyZWQKK2Fjcm9zcworYWN0CithY3RzCithZGFoCithZGFtCithZGJlZWwKK2FkZAorYWRkZWQKK2FkbWFoCithZG1pbmlzdHJhdGlvbgorYWR1bGxhbWl0ZQorYWR2YW5jZWQKK2FkdmlzZXIKK2FmYXIKK2FmZmVjdGVkCithZmZsaWN0ZWQKK2FmZmxpY3Rpb24KK2FmcmFpZAorYWZ0ZXIKK2FmdGVyd2FyZAorYWZ0ZXJ3YXJkcworYWdhaW4KK2FnYWluc3QKK2FnZQorYWdlcworYWdpbGUKK2FncmVlCithZ3JlZWQKK2FodXonemF0aAorYWkKK2FpZAorYWlyCitha2FuCithbCdsb24tYmFjdXRoCithbGlnaHRlZAorYWxpdmUKK2FsbAorYWxsZWdpYW5jZQorYWxsaWFuY2VzCithbGxpZXMKK2FsbG93CithbGxvd2FuY2UKK2FsbWlnaHR5CithbG1vJ2RhZAorYWxtb25kCithbG1vbmRzCithbG9uZQorYWxvbmcKK2Fsb3VkCithbHJlYWR5CithbHNvCithbHRhcgorYWx0ZXIKK2FsdGVyaW5nCithbHRob3VnaAorYWx0b2dldGhlcgorYWx2YWgKK2FsdmFuCithbQorYW0nYWxlaworYW0ncmFwaGVsCithbWFsJ2VraXRlcworYW1hemVtZW50CithbWVyaWNhCithbW1vbml0ZXMKK2Ftb25nCithbW9uZ3N0CithbW9yaXRlCithbW9yaXRlcworYW1vdW50CithbgorYW4nYW1pbQorYW5haAorYW5kCithbmVyCithbmdlbAorYW5nZWxzCithbmdlcgorYW5ncnkKK2FuaW1hbAorYW5pbWFscworYW5uaWhpbGF0aW9uCithbm9pbnRlZAorYW5vdGhlcgorYW5vdGhlcidzCithbnN3ZXIKK2Fuc3dlcmVkCithbnkKK2FueXRoaW5nCithbnl3aGVyZQorYXBhcnQKK2FwcGVhbGVkCithcHBlYWxpbmcKK2FwcGVhcgorYXBwZWFyZWQKK2FwcGVhc2UKK2FwcG9pbnQKK2FwcG9pbnRlZAorYXBwcm9hY2hlZAorYXBwcm9hY2hpbmcKK2FwcHJvcHJpYXRpb25zCithcHJvbnMKK2FyJ2FyYXQKK2FyJ2lvY2gKK2FyJ3ZhZGl0ZXMKK2FyYW0KK2FyYW1lYW4KK2FyYW4KK2FyYml0cmFyeQorYXJjaGVycworYXJkCithcmUKK2FyZSdsaQorYXJlYQorYXJpc2UKK2FyaworYXJraXRlcworYXJtZWQKK2FybWllcworYXJtcworYXJteQorYXJvJ2RpCithcm9zZQorYXJvdW5kCithcnBhY2gnc2hhZAorYXJyYXllZAorYXJyaXZlCithcnQKK2FzCithcydlbmF0aAorYXNjZW5kaW5nCithc2gna2VuYXoKK2FzaCd0ZXJvdGgta2FybmEnaW0KK2FzaGFtZWQKK2FzaGJlbAorYXNoZXIKK2FzaGVyJ3MKK2FzaGVzCithc2lkZQorYXNrCithc2tlZAorYXNrcworYXNsZWVwCithc3MKK2FzcydzCithc3NlbWJsZQorYXNzZW1ibGVkCithc3NlbnQKK2Fzc2VzCithc3NodSdyaW0KK2Fzc2h1cgorYXNzdW1lCithc3N1cmVkCithc3N5cmlhCithdAorYXRhZAorYXRlCithdHRhY2sKK2F0dGFja2VkCithdHRhaW5lZAorYXR0ZW1wdHMKK2F0dGVuZAorYXR0ZW5kZWQKK2F0dGVudGlvbgorYXV0aG9yaXR5CithdmVuZ2VkCithdml0aAorYXdheQorYXdlc29tZQorYXdva2UKK2JhJ2FsLWhhJ25hbgorYmEnYmVsCitiYWNrCitiYWNrd2FyZAorYmFkCitiYWRlCitiYWdzCitiYWtlZAorYmFrZXIKK2JhbG0KK2JhbmsKK2JhbmtzCitiYXJiYXJvdXMKK2JhcnJlbgorYmFzJ2VtYXRoCitiYXNrZXQKK2Jhc2tldHMKK2JhdHRsZQorYmRlbGxpdW0KK2JlCitiZSdvcgorYmUtZSdyaQorYmVhcgorYmVhcmluZworYmVhcnMKK2JlYXN0CitiZWFzdHMKK2JlYXV0aWZ1bAorYmVjYW1lCitiZWNhdXNlCitiZWNoZXIKK2JlY29tZQorYmVjb21lcworYmVkCitiZWRhZAorYmVlbgorYmVlci1sYSdoYWktcm9pCitiZWVyLXNoZWJhCitiZWZhbGwKK2JlZmFsbGVuCitiZWZhbGxzCitiZWZvcmUKK2JlZworYmVnYW4KK2JlZ2lubmluZworYmVndWlsZWQKK2JlZ3VuCitiZWhlbGQKK2JlaGluZAorYmVob2xkCitiZWluZworYmVsYQorYmVsaWV2ZQorYmVsaWV2ZWQKK2JlbGx5CitiZWxvbmcKK2JlbG9uZ2luZworYmVsb25ncworYmVsb3cKK2Jlbi1hbW1pCitiZW4tbyduaQorYmVuZWF0aAorYmVuZWZpdHMKK2JlbmphbWluCitiZW5qYW1pbidzCitiZXJhCitiZXJlYXZlZAorYmVyZWQKK2JlcmVmdAorYmVyaSdhaAorYmVzaWRlCitiZXNpZGVzCitiZXNvdWdodAorYmVzdAorYmV0aGVsCitiZXRobGVoZW0KK2JldGh1J2VsCitiZXR0ZXIKK2JldHdlZW4KK2JleW9uZAorYmlsaGFoCitiaWxoYW4KK2JpbmRpbmcKK2JpcmQKK2JpcmRzCitiaXJzaGEKK2JpcnRoCitiaXJ0aGRheQorYmlydGhyaWdodAorYml0ZXMKK2JpdHRlcgorYml0dW1lbgorYmxhY2sKK2JsYW1lCitibGFtZWxlc3MKK2JsZXNzCitibGVzc2VkCitibGVzc2VzCitibGVzc2luZworYmxlc3NpbmdzCitibGlnaHRlZAorYmxpbmRuZXNzCitibG9vZAorYmxvc3NvbXMKK2Jsb3QKK2Jsb3R0ZWQKK2Jsb3cKK2JvZGllcworYm9keQorYm9pbGluZworYm9uZHMKK2JvbmUKK2JvbmVzCitib29rCitib290aHMKK2JvcmRlcgorYm9yZQorYm9ybgorYm9ybmUKK2JvdGgKK2JvdWdoCitib3VnaHQKK2JvdW5kCitib3VuZGFyaWVzCitib3VudGllcworYm93Citib3dlZAorYm93aW5nCitib3dzaG90Citib3lzCitib3pyYWgKK2JyYWNlbGV0cworYnJhbmNoZXMKK2JyZWFjaAorYnJlYWQKK2JyZWFkdGgKK2JyZWFrCiticmVha2luZworYnJlYXN0cworYnJlYXRoCiticmVhdGhlZAorYnJlZAorYnJlZWQKK2JyZWVkaW5nCiticmV0aHJlbgorYnJpY2sKK2JyaWNrcworYnJpbXN0b25lCiticmluZworYnJpdGFpbgorYnJpdGlzaAorYnJva2VuCiticm9uemUKK2Jyb3RoZXIKK2Jyb3RoZXIncworYnJvdGhlci1pbi1sYXcKK2Jyb3RoZXJzCiticm91Z2h0Citicm93CiticnVpc2UKK2J1ZGRlZAorYnVpbGQKK2J1aWxkaW5nCitidWlsdAorYnVsbHMKK2J1bmRsZQorYnVuZGxlcworYnVyaWVkCitidXJuCitidXJuZWQKK2J1cm50CitidXJzdAorYnVyeQorYnVyeWluZworYnVzaGVzCitidXQKK2J1dGxlcgorYnV0bGVyc2hpcAorYnV5CitidXoKK2J5CitjYWluCitjYWtlCitjYWtlcworY2FsYWgKK2NhbGYKK2NhbGwKK2NhbGxlZAorY2FsbHMKK2NhbWUKK2NhbWVsCitjYW1lbCdzCitjYW1lbHMKK2NhbXAKK2NhbXBlZAorY2FuCitjYW5hYW4KK2NhbmFhbicKK2NhbmFhbml0ZQorY2FuYWFuaXRlcworY2FuYWFuaXRpc2gKK2NhbmRpZAorY2Fubm90CitjYXBoJ3RvcmltCitjYXB0YWluCitjYXB0aXZlCitjYXB0aXZlcworY2FwdHVyZWQKK2NhcmF2YW4KK2NhcmNhc3NlcworY2FyZQorY2FyZWZ1bGx5CitjYXJtaQorY2FycmllZAorY2FycnkKK2Nhc2VzCitjYXNsdSdoaW0KK2Nhc3QKK2NhdHRsZQorY2F1Z2h0CitjYXVzZQorY2F1c2VkCitjYXVzZXMKK2NhdmUKK2NlYXNlCitjZWFzZWQKK2NlcnRhaW4KK2NoYWluCitjaGFsZGUnYW5zCitjaGFtYmVyCitjaGFuZ2UKK2NoYW5nZWQKK2NoYXJhY3RlcgorY2hhcmdlCitjaGFyZ2VkCitjaGFyZ2luZworY2hhcmlvdAorY2hhcmlvdHMKK2NoYXJ0ZXJzCitjaGVhdAorY2hlYXRlZAorY2hlZC1vci1sYW8nbWVyCitjaGVyYW4KK2NoZXJ1YmltCitjaGVzZWQKK2NoZXppYgorY2hpZWYKK2NoaWVmcworY2hpbGQKK2NoaWxkYmVhcmluZworY2hpbGRsZXNzCitjaGlsZHJlbgorY2hpbGRyZW4ncworY2hvaWNlCitjaG9pY2VzdAorY2hvc2UKK2Nob3NlbgorY2lyY3VtY2lzZWQKK2NpcmN1bXN0YW5jZXMKK2NpdGllcworY2l0aXplbnMKK2NpdHkKK2NpdmlsCitjaXZpbGl6ZWQKK2NsYW5zCitjbGVhbgorY2xlYXIKK2NsZWF2ZXMKK2Nsb3NlCitjbG9zZWQKK2Nsb3RoZWQKK2Nsb3RoZXMKK2Nsb3RoaW5nCitjbG91ZAorY2xvdWRzCitjbHVzdGVycworY29hc3RsYW5kCitjb2FzdHMKK2NvZmZpbgorY29sZAorY29sb25pZXMKK2NvbG9uaWVzOgorY29sdAorY29sdHMKK2NvbWJpbmVkCitjb21lCitjb21lbHkKK2NvbWVzCitjb21mb3J0Citjb21mb3J0ZWQKK2NvbWZvcnRzCitjb21pbmcKK2NvbW1hbmQKK2NvbW1hbmRlZAorY29tbWFuZGVyCitjb21tYW5kbWVudHMKK2NvbW1lcmNlCitjb21taXQKK2NvbW1pdHRlZAorY29tbW9uCitjb21wYW5pZXMKK2NvbXBhbnkKK2NvbXBsYWluZWQKK2NvbXBsZXRlCitjb21wbGV0ZWQKK2NvbXBsaWFuY2UKK2NvbmNlYWwKK2NvbmNlaXZlZAorY29uY2VybgorY29uY2VybmluZworY29uY2x1ZGUKK2NvbmN1YmluZQorY29uY3ViaW5lcworY29uZGl0aW9uCitjb25kaXRpb25zCitjb25maW5lZAorY29uZnVzZQorY29uZnVzZWQKK2NvbmdyZXNzCitjb25qdXJlZAorY29ubmVjdGVkCitjb25uZWN0aW9uCitjb25uZWN0aW9ucworY29uc2VudAorY29uc2VudDoKK2NvbnNwaXJlZAorY29uc3RpdHV0aW9uCitjb25zdHJhaW5lZAorY29uc3RyYWlucworY29uc3VtZQorY29uc3VtZWQKK2NvbnRlbXB0Citjb250ZW5kZWQKK2NvbnRpbnVhbGx5Citjb250aW51ZQorY29udGludWVkCitjb250cmFjdAorY29udHJvbAorY29udHJvbGxpbmcKK2NvbnZ1bHNpb25zCitjb29sCitjb3JkCitjb3JyZXNwb25kZW5jZQorY29ycnVwdAorY29ycnVwdGVkCitjb3N0bHkKK2NvdWNoCitjb3VjaGVkCitjb3VjaGVzCitjb3VjaGluZworY291bGQKK2NvdW5jaWwKK2NvdW50Citjb3VudGVkCitjb3VudGVuYW5jZQorY291bnRyeQorY291cnNlCitjb3ZlbmFudAorY292ZXIKK2NvdmVyZWQKK2NvdmVyaW5nCitjb3dzCitjcmVhdGVkCitjcmVhdGlvbgorY3JlYXRvcgorY3JlYXR1cmUKK2NyZWF0dXJlcworY3JlZXBpbmcKK2NyZWVwcworY3JpZWQKK2Nyb3NzZWQKK2Nyb3NzaW5nCitjcm91Y2hpbmcKK2Nyb3duCitjcnVlbAorY3J1ZWx0eQorY3J5CitjcnlpbmcKK2N1Yml0CitjdWJpdHMKK2N1cAorY3VyZHMKK2N1cnJlbnQKK2N1cnNlCitjdXJzZWQKK2N1cnNlcworY3VzaAorY3VzdG9keQorY3V0CitjdXR0aW5nCitkYWludGllcworZGFtYXNjdXMKK2RhbgorZGFuZ2VycworZGFyZXMKK2RhcmsKK2RhcmtuZXNzCitkYXVnaHRlcgorZGF1Z2h0ZXItaW4tbGF3CitkYXVnaHRlcnMKK2Rhd25lZAorZGF5CitkYXlzCitkZWFkCitkZWFsCitkZWFsdAorZGVhdGgKK2RlYidvcmFoCitkZWNlaXRmdWxseQorZGVjZWl2ZWQKK2RlY2VudAorZGVjaWRlCitkZWNrcworZGVjbGFyYXRpb24KK2RlY2xhcmUKK2RlY2xhcmluZworZGVkYW4KK2RlZWQKK2RlZXAKK2RlZmVhdAorZGVmZWF0ZWQKK2RlZmlsZWQKK2RlZmluZQorZGVsYXkKK2RlbGF5ZWQKK2RlbGlnaHQKK2RlbGl2ZXIKK2RlbGl2ZXJlZAorZGVsaXZlcnkKK2RlbmllZAorZGVub3VuY2VzCitkZXBhcnQKK2RlcGFydGVkCitkZXBhcnRpbmcKK2RlcGVuZGVudAorZGVwZW5kZW50cworZGVwb3NpdG9yeQorZGVwcml2aW5nCitkZXJpdmluZworZGVzY2VuZGFudHMKK2Rlc2NlbmRpbmcKK2Rlc2lnbgorZGVzaXJlCitkZXNpcmVkCitkZXNvbGF0ZQorZGVzb2xhdGlvbgorZGVzcGlzZWQKK2Rlc3BvdGlzbQorZGVzdHJveQorZGVzdHJveWVkCitkZXN0cm95cworZGVzdHJ1Y3Rpb24KK2Rlc3RydWN0aXZlCitkZXRlcm1pbmVkCitkZXZvdXJlZAorZGV2b3VyaW5nCitkZXcKK2RpY3RhdGUKK2RpZAorZGlkc3QKK2RpZQorZGllZAorZGllcworZGlrbGFoCitkaW0KK2RpbidoYWJhaAorZGluYWgKK2RpbmFoJ3MKK2RpbmUKK2RpcHBlZAorZGlyZWN0CitkaXJlY3Rpb24KK2Rpc2FzdGVyCitkaXNhdm93CitkaXNjcmVldAorZGlzZ3JhY2UKK2Rpc2hhbgorZGlzaG9uCitkaXNtYXllZAorZGlzcGxlYXNlZAorZGlzcGxlYXNpbmcKK2Rpc3Bvc2VkCitkaXNzb2x1dGlvbnMKK2Rpc3NvbHZlCitkaXNzb2x2ZWQKK2Rpc3RhbmNlCitkaXN0YW50CitkaXN0cmVzcworZGlzdHJlc3NlZAorZGlzdHJpY3RzCitkaXZpZGUKK2RpdmlkZWQKK2RpdmlkaW5nCitkaXZpbmF0aW9uCitkaXZpbmUKK2RpdmluZXMKK2RvCitkbydkYW5pbQorZG9lcgorZG9lcworZG9pbmcKK2RvbWVzdGljCitkb21pbmlvbgorZG9uZQorZG9vcgorZG90aGFuCitkb3VibGUKK2RvdWJsaW5nCitkb3VidAorZG92ZQorZG93bgorZG93bmNhc3QKK2Rvd3J5CitkcmFuaworZHJhdworZHJhd24KK2RyZWFkCitkcmVhbQorZHJlYW1lZAorZHJlYW1lcgorZHJlYW1zCitkcmV3CitkcmllZAorZHJpbmsKK2RyaW5raW5nCitkcmlua3MKK2RyaXZlbgorZHJvdmUKK2Ryb3ZlcworZHJ1bmsKK2RyeQorZHVnCitkdW1haAorZHVuZ2VvbgorZHVyaW5nCitkdXN0CitkdXR5Citkd2VsbAorZHdlbGxpbmcKK2R3ZWx0CitlJ2RvbWl0ZXMKK2UncGhyYWltCitlJ3BocmFpbSdzCitlYWNoCitlYXJseQorZWFycworZWFydGgKK2Vhc2lseQorZWFzdAorZWFzdHdhcmQKK2VhdAorZWF0ZW4KK2VhdGluZworZWJhbAorZWJlcgorZWRlbgorZWRlcgorZWRvbQorZWZmZWN0CitlZ3lwdAorZWd5cHRpYW4KK2VneXB0aWFuJ3MKK2VneXB0aWFucworZWhpCitlaWdodAorZWlnaHRlZW4KK2VpZ2h0eQorZWlnaHR5LXNldmVuCitlaWdodHktc2l4CitlaWdodHktdHdvCitlaXRoZXIKK2VsJ2lwaGF6CitlbC1iZXRoZWwKK2VsLWVsJ29oZS1pc3JhZWwKK2VsLXBhcmFuCitlbGFoCitlbGFtCitlbGRhJ2FoCitlbGRlcgorZWxkZXJzCitlbGRlc3QKK2VsZWN0ZWQKK2VsZXZlbgorZWxpJ3NoYWgKK2VsaWUnemVyCitlbGxhJ3NhcgorZWxvbgorZWxzZQorZW1iYWxtCitlbWJhbG1lZAorZW1iYWxtaW5nCitlbWJyYWNlCitlbWJyYWNlZAorZW1pZ3JhdGlvbgorZW1pbQorZW1wdGllZAorZW1wdHkKK2VtcHR5LWhhbmRlZAorZW5haW0KK2VuY2FtcGVkCitlbmNhbXBtZW50cworZW5jb3VyYWdlCitlbmQKK2VuZGVhdm9yZWQKK2VuZGVkCitlbmRpbmcKK2VuZG93ZWQKK2VuZHMKK2VuZW1pZXMKK2VuZW15CitlbmdsaXNoCitlbmxhcmdlCitlbmxhcmdpbmcKK2VubWlzaCdwYXQKK2VubWl0eQorZW5vY2gKK2Vub3NoCitlbm91Z2gKK2VudGVyCitlbnRlcmVkCitlbnRpdGxlCitlbnRyYW5jZQorZW50cmVhdAorZW52aWVkCitlcGhhaAorZXBoZXIKK2VwaHJhdGgKK2VwaHJvbgorZXF1YWwKK2VyCitlcmVjaAorZXJlY3RlZAorZXJpCitlcnJhbmQKK2VzYXUKK2VzYXUncworZXNjYXBlCitlc2NhcGVkCitlc2VrCitlc2hiYW4KK2VzaGNvbAorZXN0YWJsaXNoCitlc3RhYmxpc2hlZAorZXN0YWJsaXNoaW5nCitlc3RhYmxpc2htZW50CitldGVybmFsCitldXBocmEndGVzCitldXBocmF0ZXMKK2V2ZQorZXZlbgorZXZlbmluZworZXZlbnRzCitldmVyCitldmVybGFzdGluZworZXZlcnkKK2V2ZXJ5dGhpbmcKK2V2ZXJ5d2hlcmUKK2V2aWwKK2V2aWxzCitldmluY2VzCitld2UKK2V3ZXMKK2V4YW1wbGUKK2V4Y2VlZGluZ2x5CitleGNlcHQKK2V4Y2hhbmdlCitleGNpdGVkCitleGVjdXRpb25lcnMKK2V4ZXJjaXNlCitleHBlcmllbmNlCitleHBlcnQKK2V4cGxhaW4KK2V4cG9zZWQKK2V4cG9zaW5nCitleHRlbmQKK2V4dGVuZGVkCitleWVzCitlemJvbgorZXplcgorZmFjZQorZmFjZXMKK2ZhY3RzCitmYWlsZWQKK2ZhaW50ZWQKK2ZhaXIKK2ZhaXRoZnVsbmVzcworZmFsbAorZmFsbGVuCitmYWxscworZmFsc2VseQorZmFtaWxpZXMKK2ZhbWlseQorZmFtaW5lCitmYW1pc2hlZAorZmFyCitmYXJlCitmYXJlZAorZmFyZXdlbGwKK2Zhc3QKK2ZhdAorZmF0aGVyCitmYXRoZXIncworZmF0aGVyLWluLWxhdworZmF0aGVycworZmF0aWd1aW5nCitmYXRuZXNzCitmYXVsdHMKK2Zhdm9yCitmYXZvcmFibGUKK2Zhd25zCitmZWFyCitmZWFyZWQKK2ZlYXN0CitmZWQKK2ZlZWJsZXIKK2ZlZWQKK2ZlZWwKK2ZlZXQKK2ZlbGwKK2ZlbGxvdworZmVsdAorZmVtYWxlCitmZXN0YWwKK2ZldGNoCitmZXcKK2ZpZWxkCitmaWVsZHMKK2ZpZXJjZQorZmllcmNlbHkKK2ZpZnRlZW4KK2ZpZnRoCitmaWZ0aHMKK2ZpZnR5CitmaWcKK2ZpbGwKK2ZpbGxlZAorZmluZAorZmluZHMKK2ZpbmUKK2ZpbmlzaAorZmluaXNoZWQKK2ZpcmUKK2Zpcm0KK2Zpcm1hbWVudAorZmlybW5lc3MKK2ZpcnN0CitmaXJzdC0KK2ZpcnN0LWJvcm4KK2ZpcnN0bGluZ3MKK2Zpc2gKK2ZpdAorZml2ZQorZml4ZWQKK2ZsYW1pbmcKK2ZsZWQKK2ZsZWUKK2ZsZWVpbmcKK2ZsZXNoCitmbG9hdGVkCitmbG9jaworZmxvY2tzCitmbG9vZAorZmxvb3IKK2Zsb3dlZAorZmxvd3MKK2ZseQorZm9hbAorZm9sbG93Citmb2xsb3dlZAorZm9sbG93aW5nCitmb2xsb3dzCitmb2xseQorZm9uZGxpbmcKK2Zvb2QKK2Zvb2xpc2hseQorZm9vdAorZm9yCitmb3JiaWRkZW4KK2ZvcmNlCitmb3JjZWQKK2ZvcmNlcworZm9yZAorZm9yZWlnbgorZm9yZWlnbmVyCitmb3JlaWduZXJzCitmb3JlbW9zdAorZm9yZXNraW4KK2ZvcmVza2lucworZm9yZ2VyCitmb3JnZXQKK2ZvcmdldHMKK2ZvcmdpdmUKK2ZvcmdvdAorZm9yZ290dGVuCitmb3JtCitmb3JtZWQKK2Zvcm1lcgorZm9ybWVybHkKK2Zvcm1pZGFibGUKK2Zvcm1zCitmb3JzYWtlbgorZm9ydGgKK2ZvcnR1bmUKK2ZvcnR1bmVzCitmb3J0eQorZm9ydHktZml2ZQorZm9ydHktc2V2ZW4KK2ZvdW5kCitmb3VuZGF0aW9uCitmb3VudGFpbnMKK2ZvdXIKK2ZvdXJ0ZWVuCitmb3VydGVlbnRoCitmb3VydGgKK2ZyYWlsCitmcmVlCitmcmVlbHkKK2ZyZXNoCitmcmVzaGx5CitmcmllbmQKK2ZyaWVuZGx5CitmcmllbmRzCitmcm8KK2Zyb20KK2Zyb250Citmcm9udGllcnMKK2ZydWl0CitmcnVpdGZ1bAorZnJ1aXRzCitmdWdpdGl2ZQorZnVsZmlsCitmdWxmaWxsZWQKK2Z1bGwKK2Z1bmRhbWVudGFsbHkKK2Z1cm5hY2UKK2Z1cnkKK2Z1dHVyZQorZ2FkCitnYWhhbQorZ2FpbmVkCitnYWxlZWQKK2dhbWUKK2dhcmRlbgorZ2FybWVudAorZ2FybWVudHMKK2dhdGFtCitnYXRlCitnYXRoZXIKK2dhdGhlcmVkCitnYXVudAorZ2F2ZQorZ2F2ZXN0CitnYXphCitnYXplZAorZ2VuZWFsb2dpZXMKK2dlbmVyYWwKK2dlbmVyYXRpb24KK2dlbmVyYXRpb25zCitnZXJhCitnZXJhcgorZ2Vyc2hvbgorZ2V0CitnZXRoZXIKK2dpZnQKK2dpZnRzCitnaWhvbgorZ2lsZWFkCitnaXInZ2FzaGl0ZXMKK2dpdmUKK2dpdmVuCitnaXZlc3QKK2dpdmluZworZ28KK2dvYXQKK2dvYXRzCitnb2QKK2dvZCdzCitnb2RzCitnb2VzCitnb2knaW0KK2dvaW5nCitnb2xkCitnb21lcgorZ29tb3IncmFoCitnb25lCitnb29kCitnb29kLWxvb2tpbmcKK2dvb2RzCitnb3BoZXIKK2dvc2hlbgorZ290Citnb3R0ZW4KK2dvdmVybmVkCitnb3Zlcm5tZW50Citnb3Zlcm5tZW50cworZ292ZXJubWVudHM6Citnb3Zlcm5vcgorZ292ZXJub3JzCitncmFjaW91cworZ3JhY2lvdXNseQorZ3JhaW4KK2dyYW5kY2hpbGRyZW4KK2dyYW5kc29uCitncmFudAorZ3JhbnRlZAorZ3JhcGVzCitncmFzcworZ3JhdmUKK2dyYXkKK2dyZWF0CitncmVhdGVyCitncmVhdGx5CitncmVlbgorZ3JldworZ3JpZXZlZAorZ3JpZXZvdXMKK2dyb3BpbmcKK2dyb3VuZAorZ3JvdworZ3Jvd2luZworZ3Jvd24KK2dyb3dzCitndWFyZAorZ3VhcmRzCitndWlsZQorZ3VpbHQKK2d1aWx0eQorZ3VtCitndW5pCitoYSdtYXRoaXRlcworaGFkCitoYWRhZAoraGFkYXIKK2hhZG9yJ2FtCitoYWdhcgoraGFnZ2kKK2hhaXJzCitoYWlyeQoraGFsZgoraGFsbG93ZWQKK2hhbQoraGFtb3IKK2hhbW9yJ3MKK2hhbXN0cmluZworaGFtdWwKK2hhbmQKK2hhbmRzCitoYW5kc29tZQoraGFuZworaGFuZ2VkCitoYW5vY2gKK2hhcHBlbmVkCitoYXBwaW5lc3MKK2hhcHB5CitoYXJhbgoraGFyYXNzCitoYXJhc3NlZAoraGFyZAoraGFyZHNoaXAKK2hhcmxvdAoraGFybG90cnkKK2hhcm0KK2hhcnNobHkKK2hhcnZlc3QKK2hhcnZlc3RzCitoYXMKK2hhc3QKK2hhc3RlCitoYXN0ZW5lZAoraGFzdGlseQoraGF0ZQoraGF0ZWQKK2hhdGgKK2hhdidpbGFoCitoYXZlCitoYXZlbgoraGF2aWxhaAoraGF2aW5nCitoYXonYXpvbi10YSdtYXIKK2hhemFybWEndmV0aAoraGF6bworaGUKK2hlLWFzc2VzCitoZS1nb2F0cworaGVhZAoraGVhZHMKK2hlYWxlZAoraGVhcAoraGVhcgoraGVhcmQKK2hlYXJpbmcKK2hlYXJrZW4KK2hlYXJrZW5lZAoraGVhcnMKK2hlYXJ0CitoZWFydHMKK2hlYXQKK2hlYXZlbgoraGVhdmVucworaGViZXIKK2hlYnJldworaGVicmV3cworaGVicm9uCitoZWVkCitoZWVkZWQKK2hlZWwKK2hlZWxzCitoZWlmZXIKK2hlaWdodAoraGVpcgoraGVsZAoraGVscAoraGVscGVyCitoZW1hbgoraGVtZGFuCitoZXIKK2hlcmIKK2hlcmQKK2hlcmRzCitoZXJkc21lbgoraGVyZQoraGVyc2VsZgoraGV0aAoraGV3ZWQKK2hlenJvbgoraGlkCitoaWRkZW4KK2hpZGUKK2hpZ2gKK2hpbGwKK2hpbGxzCitoaW0KK2hpbXNlbGYKK2hpbmQKK2hpbmRlcgoraGlwCitoaXJhaAoraGlyZQoraGlyZWQKK2hpcworaGlzdG9yeQoraGl0aGVyCitoaXR0aXRlCitoaXR0aXRlcworaGl2aXRlCitoaXZpdGVzCitob2JhaAoraG9sZAoraG9sbG93Citob21lCitob25lc3QKK2hvbmVzdHkKK2hvbmV5Citob25vcgoraG9ub3JlZAoraG9yaQoraG9yaXRlCitob3JpdGVzCitob3JucworaG9yc2UncworaG9yc2VtZW4KK2hvcnNlcworaG9zdAoraG90Citob3RseQoraG91c2UKK2hvdXNlaG9sZAoraG91c2Vob2xkcworaG91c2VzCitob3cKK2h1bAoraHVtYW4KK2h1bWFuZQoraHVtYmxlCitodW1ibGVkCitodW5kcmVkCitodW5kcmVkZm9sZAoraHVuZHJlZHRoCitodW50CitodW50ZWQKK2h1bnRlcgoraHVudGluZworaHVwcGltCitodXNiYW5kCitodXNoYW0KK2h1c2hpbQoraQoraWYKK2lsbAoraWxsLXRyZWF0CitpbWFnZQoraW1hZ2luYXRpb24KK2ltbWVkaWF0ZQoraW1uYWgKK2ltcGVsCitpbXBvcnRhbmNlCitpbXBvc2luZworaW1wb3NzaWJsZQoraW4KK2luYXNtdWNoCitpbmNhcGFibGUKK2luY2x1ZGluZworaW5jcmVhc2VkCitpbmRlZWQKK2luZGVwZW5kZW50CitpbmRpYW4KK2luZGlnbmFudAoraW5lc3RpbWFibGUKK2luZXZpdGFibHkKK2luaGFiaXRhbnRzCitpbmhlcml0YW5jZQoraW5pcXVpdHkKK2luanVyaWVzCitpbmp1cnkKK2lubm9jZW5jZQoraW5ub2NlbnQKK2lucXVpcmUKK2lucXVpcmVkCitpbnNpZGUKK2luc3RlYWQKK2luc3RpdHV0ZQoraW5zdGl0dXRlZAoraW5zdHJ1Y3RlZAoraW5zdHJ1Y3RpbmcKK2luc3RydW1lbnQKK2luc3RydW1lbnRzCitpbnN1bHQKK2luc3VycmVjdGlvbnMKK2ludGVncml0eQoraW50ZW5kZWQKK2ludGVudGlvbnMKK2ludGVycHJldAoraW50ZXJwcmV0YXRpb24KK2ludGVycHJldGF0aW9ucworaW50ZXJwcmV0ZWQKK2ludGVycHJldGVyCitpbnRlcnJ1cHQKK2ludG8KK2ludHJvZHVjaW5nCitpbnZhcmlhYmx5CitpbnZhc2lvbgoraW52YXNpb25zCitpbnZlc3RlZAoraW9iCitpcmFkCitpcmFtCitpcm9uCitpcworaXMnc2FjaGFyCitpc2FhYworaXNhYWMncworaXNjYWgKK2lzaCdtYWVsCitpc2gnbWFlbCdzCitpc2gnbWFlbGl0ZXMKK2lzaGJhaworaXNodmFoCitpc2h2aQoraXNyYWVsCitpc3JhZWwncworaXNyYWVsaXRlcworaXQKK2l0aHJhbgoraXRzCitpdHNlbGYKK2phYmFsCitqYWJib2sKK2phY2hpbgoramFjb2IKK2phY29iJ3MKK2phaCdsZWVsCitqYWh6ZWVsCitqYWxhbQoramFtaW4KK2phcGhldGgKK2phcgoramFyZWQKK2phdmFuCitqZSdnYXItc2FoYWR1J3RoYQoramUndXNoCitqZWFsb3VzCitqZWIndXNpdGVzCitqZW11J2VsCitqZXJhaAoramVzdGluZworamV0aGV0aAoramV0dXIKK2pld2VscnkKK2plemVyCitqaWRsYXBoCitqb2JhYgoram9pbmVkCitqb2ludAoram9rc2hhbgoram9rdGFuCitqb3JkYW4KK2pvc2VwaAoram9zZXBoJ3MKK2pvdXJuZXkKK2pvdXJuZXllZAoranViYWwKK2p1ZGFoCitqdWRhaCdzCitqdWRnZQoranVkZ2VkCitqdWRnZXMKK2p1ZGdtZW50CitqdWRpY2lhcnkKK2p1ZGl0aAoranVyaXNkaWN0aW9uCitqdXJ5OgoranVzdAoranVzdGljZQora2FkJ21vbml0ZXMKK2thZGVzaAora2VkJ2VtYWgKK2tlZGFyCitrZWVwCitrZWVwZXIKK2tlZXBlcnMKK2tlbXUnZWwKK2tlbidpdGVzCitrZW4naXp6aXRlcwora2VuYW4KK2tlbmF6CitrZXB0CitrZXR1J3JhaAora2lkCitraWRzCitraWxsCitraWxsZWQKK2tpbmQKK2tpbmRsZWQKK2tpbmRuZXNzCitraW5kcmVkCitraW5kcwora2luZwora2luZydzCitraW5nZG9tCitraW5ncwora2luc21hbgora2luc21lbgora2lyJ2lhdGgtYXInYmEKK2tpc3MKK2tpc3NlZAora2l0dGltCitrbmVhZAora25lZQora25lZWwKK2tuZWVzCitrbmV3CitrbmlmZQora25vdwora25vd2luZwora25vd2xlZGdlCitrbm93bgora25vd3MKK2tvaGF0aAora29yYWgKK2xhYmFuCitsYWJhbidzCitsYWJvcgorbGFjaworbGFja2luZworbGFkCitsYWQncworbGFkZGVyCitsYWRzCitsYWlkCitsYWluCitsYW1iCitsYW1icworbGFtZWNoCitsYW1lbnRhdGlvbgorbGFtZW50ZWQKK2xhbmQKK2xhbmRzCitsYW5ndWFnZQorbGFuZ3VhZ2VzCitsYW5ndWlzaGVkCitsYXJnZQorbGFzaGEKK2xhc3QKK2xhdGVyCitsYXVnaAorbGF1Z2hlZAorbGF1Z2h0ZXIKK2xhd3MKK2xheQorbGF5aW5nCitsZS11bSdtaW0KK2xlYWQKK2xlYWYKK2xlYWgKK2xlYWgncworbGVhbgorbGVhcAorbGVhcGVkCitsZWFybgorbGVhcm5lZAorbGVhc3QKK2xlYXZlCitsZWF2ZXMKK2xlZAorbGVmdAorbGVnaXNsYXRlCitsZWdpc2xhdGlvbjoKK2xlZ2lzbGF0aXZlCitsZWdpc2xhdHVyZQorbGVnaXNsYXR1cmVzCitsZWhhJ2JpbQorbGVuZ3RoCitsZW50aWxzCitsZXNzZXIKK2xlc3QKK2xldAorbGV0dSdzaGltCitsZXZleQorbGV2aQorbGliZXJ0eQorbGllCitsaWVzCitsaWZlCitsaWZlYmxvb2QKK2xpZnQKK2xpZnRlZAorbGlnaHQKK2xpZ2h0cworbGlrZQorbGlrZWx5CitsaWtlbmVzcworbGlrZXdpc2UKK2xpbXBpbmcKK2xpbmVuCitsaW5nZXJlZAorbGlvbgorbGlvbidzCitsaW9uZXNzCitsaXN0ZW4KK2xpc3RlbmVkCitsaXN0ZW5pbmcKK2xpdHRsZQorbGl2ZQorbGl2ZWQKK2xpdmVzCitsaXZlc3RvY2sKK2xpdmluZworbG8KK2xvYWQKK2xvYWRlZAorbG9kZ2UKK2xvZGdlZAorbG9kZ2luZworbG9pbnMKK2xvbmcKK2xvbmdlZAorbG9uZ2VyCitsb25ncworbG9vaworbG9va2VkCitsb29raW5nCitsb29zZQorbG9yZAorbG9yZCdzCitsb3JkcworbG9zcworbG90Citsb3QncworbG90YW4KK2xvdGFuJ3MKK2xvdWQKK2xvdmUKK2xvdmVkCitsb3ZlbHkKK2xvdmVzCitsb3dlcgorbG93ZXJlZAorbG95YWxseQorbHVkCitsdWRpbQorbHV6CitseWluZworbHlyZQorbWEnYWNhaAorbWEnaGFsYXRoCittYS1oYWwnYWxlbAorbWFjaC0KK21hY2gtcGUnbGFoCittYWNoaXIKK21hZGFpCittYWRlCittYWcnZGllbAorbWFnaWNpYW5zCittYWduYW5pbWl0eQorbWFnb2cKK21haGFuYSdpbQorbWFpZAorbWFpZGVuCittYWlkcworbWFpZHNlcnZhbnRzCittYWtlCittYWtlcgorbWFraW5nCittYWwnY2hpLWVsCittYWxlCittYWxlcworbWFtcmUKK21hbgorbWFuJ2FoYXRoCittYW4ncworbWFuYXMnc2VoCittYW5hcydzZWgncworbWFuZHJha2VzCittYW5raW5kCittYW5seQorbWFubmVyCittYW50bGUKK21hbnkKK21hcmsKK21hcmtlZAorbWFycmlhZ2UKK21hcnJpYWdlcworbWFycmllZAorbWFycmllcworbWFycnkKK21hc2gKK21hc3JlJ2thaAorbWFzc2EKK21hc3RlcgorbWFzdGVyJ3MKK21hdGUKK21hdGluZworbWF0cmVkCittYXR0ZXIKK21heQorbWUKK21lJ3phaGFiCittZS1odSdqYS1lbAorbWUtdGh1J3NoYS1lbAorbWVhbAorbWVhbgorbWVhbmluZworbWVhbnMKK21lYW50CittZWFudGltZQorbWVhbndoaWxlCittZWFzdXJlCittZWFzdXJlZAorbWVhc3VyZXMKK21lZGFuCittZWRpdGF0ZQorbWVldAorbWVldHMKK21laGV0J2FiZWwKK21lbC1jaGl6J2VkZWsKK21lbWJlcnMKK21lbgorbWVuJ3MKK21lbmQKK21lbmRlZAorbWVuc2VydmFudHMKK21lbnRpb24KK21lcmFyJ2kKK21lcmNlbmFyaWVzCittZXJjaGFudHMKK21lcmNpZnVsCittZXJjaWxlc3MKK21lcmN5CittZXJyeQorbWVzaGEKK21lc2hlY2gKK21lc29wb3RhJ21pYQorbWVzc2FnZQorbWVzc2VuZ2VycworbWV0CittZXRodSdzZWxhaAorbWlic2FtCittaWJ6YXIKK21pZCdpYW4KK21pZCdpYW5pdGUKK21pZCdpYW5pdGVzCittaWRzdAorbWlkd2lmZQorbWlnaHQKK21pZ2h0aWVyCittaWdodGlseQorbWlnaHR5CittaWdyYXRlZAorbWlncmF0aW9uCittaWxjYWgKK21pbGNoCittaWxpdGFyeQorbWlsaworbWluZAorbWluZQorbWlydGgKK21pc2NhcnJpZWQKK21pc2htYQorbWlzdAorbWlzdHJlc3MKK21penBhaAorbWl6emFoCittb2FiCittb2FiaXRlcworbW9jaworbW9ja2luZworbW9uZXkKK21vbnN0ZXJzCittb250aAorbW9udGhzCittb29uCittb3JlCittb3JlaAorbW9yZW92ZXIKK21vcmknYWgKK21vcm5pbmcKK21vcnNlbAorbW9ydGFyCittb3N0Cittb3RoZXIKK21vdGhlcidzCittb3RoZXJzCittb3R0bGVkCittb3VudAorbW91bnRhaW4KK21vdW50YWlucworbW91cm4KK21vdXJuZWQKK21vdXJuaW5nCittb3V0aAorbW92ZWQKK21vdmVzCittb3ZpbmcKK211Y2gKK211bHRpcGxpZWQKK211bHRpcGx5CittdWx0aXR1ZGUKK211cHBpbQorbXVyZGVycworbXVzdAorbXV0dWFsbHkKK215CitteXJyaAorbXlzZWxmCituYSdhbWFoCituYSdhbWFuCituYWhhdGgKK25haG9yCituYWhvcidzCituYWtlZAorbmFrZWRuZXNzCituYW1lCituYW1lZAorbmFtZXMKK25hcGgndGFsaQorbmFwaC10dSdoaW0KK25hcGhpc2gKK25hdGlvbgorbmF0aW9ucworbmF0aXZlCituYXR1cmFsaXphdGlvbgorbmF0dXJlCituYXR1cmUncworbmVhcgorbmViYSdpb3RoCituZWNlc3NhcnkKK25lY2Vzc2l0eQorbmVjaworbmVlZAorbmVnZWIKK25lZ2xlY3RlZAorbmVpZ2hib3JpbmcKK25laXRoZXIKK25lcGhpbGltCituZXZlcgorbmV2ZXJ0aGVsZXNzCituZXcKK25leHQKK25pZ2h0CituaWdodHMKK25pbGUKK25pbXJvZAorbmluJ2V2ZWgKK25pbmUKK25pbmV0ZWVuCituaW5ldHkKK25pbmV0eS1maXZlCituaW5ldHktbmluZQorbm8KK25vYWgKK25vYWgncworbm9kCitub25lCitub29uCitub3IKK25vcnRoCitub3J0aHdhcmQKK25vc2UKK25vc3RyaWxzCitub3QKK25vdGhpbmcKK25vdworbnVtYmVyCitudW1iZXJlZAorbnVtYmVycworbnVyc2UKK251dHMKK28KK29haworb2Frcworb2F0aAorb2JhbAorb2JlZGllbmNlCitvYmVpc2FuY2UKK29iZXkKK29iZXllZAorb2JqZWN0CitvYnN0cnVjdGVkCitvYnN0cnVjdGluZworb2J0YWluCitvYnRhaW5lZAorb2NjYXNpb24KK29jY3VwYXRpb24KK29kaW91cworb2Rvcgorb2YKK29mZgorb2ZmZW5kZWQKK29mZmVuc2UKK29mZmVuc2VzOgorb2ZmZXIKK29mZmVyZWQKK29mZmVyaW5nCitvZmZlcmluZ3MKK29mZmljZQorb2ZmaWNlcgorb2ZmaWNlcnMKK29mZmljZXMKK29mZnNwcmluZworb2gKK29oYWQKK29ob2xpYmEnbWFoCitvaWwKK29sZAorb2xkZXIKK29sZGVzdAorb2xpdmUKK29tYXIKK29uCitvbmFtCitvbmFuCitvbmNlCitvbmUKK29uZXMKK29ubHkKK29ueXgKK29wZW4KK29wZW5lZAorb3BlcmF0aW9uCitvcGhpcgorb3BpbmlvbnMKK29wcG9zaW5nCitvcHBvc2l0ZQorb3BwcmVzc2VkCitvcHByZXNzaW9ucworb3IKK29yZGVyCitvcmRlcnMKK29yZ2FuaXppbmcKK29ybmFtZW50cworb3RoZXIKK290aGVycworb3VnaHQKK291cgorb3Vycworb3Vyc2VsdmVzCitvdXQKK291dGNyeQorb3V0c2lkZQorb3V0d2l0dGVkCitvdmVyCitvdmVyZHJpdmVuCitvdmVyc2Vlcgorb3ZlcnNlZXJzCitvdmVyc2lnaHQKK292ZXJ0YWtlCitvdmVydGhyZXcKK292ZXJ0aHJvdworb3ZlcnRvb2sKK293bgorb3ducworb3hlbgorcGFjZQorcGFkZGFuCitwYWRkYW4tYXJhbQorcGFpZAorcGFpbgorcGFpcgorcGFpcnMKK3BhbGx1CitwYXJhbGxlbGVkCitwYXJhbgorcGFydAorcGFydHMKK3Bhc3MKK3Bhc3NlZAorcGFzdAorcGFzdHVyZQorcGFzdHVyZWQKK3Bhc3R1cmluZworcGF0aAorcGF0aHJ1J3NpbQorcGF0aWVudAorcGF1CitwYXkKK3BheW1lbnQKK3BlJ2xhaAorcGVhY2UKK3BlYWNlYWJseQorcGVlbGVkCitwZWxlZworcGVuaSdlbAorcGVudSdlbAorcGVvcGxlCitwZW9wbGVkCitwZW9wbGVzCitwZXInaXp6aXRlcworcGVyZXoKK3BlcmZpZHkKK3BlcmZvcm0KK3BlcmhhcHMKK3BlcmlzaAorcGVybWl0CitwZXJwZXR1YXRlZAorcGVyc29ucworcGV0aXRpb25lZAorcGV0aXRpb25zCitwaGFyYW9oCitwaGFyYW9oJ3MKK3BoaWNvbAorcGhpbGlzdGluZXMKK3BoeXNpY2lhbnMKK3BpZWNlCitwaWVjZXMKK3BpZ2VvbgorcGlsZGFzaAorcGlsbGFyCitwaW5vbgorcGlwZQorcGlzaG9uCitwaXN0YWNoaW8KK3BpdAorcGl0Y2gKK3BpdGNoZWQKK3BpdHMKK3BsYWNlCitwbGFjZWQKK3BsYWNlcworcGxhZ3VlcworcGxhaW4KK3BsYWlubHkKK3BsYW5lCitwbGFubmluZworcGxhbnQKK3BsYW50ZWQKK3BsYW50cworcGxheQorcGxheWVkCitwbGF5aW5nCitwbGVhc2FudAorcGxlYXNlCitwbGVhc2VkCitwbGVhc2VzCitwbGVhc2luZworcGxlYXN1cmUKK3BsZWRnZQorcGxlbnRlb3VzCitwbGVudHkKK3Bsb3dpbmcKK3BsdWNrZWQKK3BsdW1wCitwbHVuZGVyZWQKK3BvaW50Citwb2xpdGljYWwKK3Bvb3IKK3BvcGxhcgorcG9wdWxhdGlvbgorcG9ydGlvbgorcG9ydGlvbnMKK3Bvc3Nlc3MKK3Bvc3Nlc3Npb24KK3Bvc3Nlc3Npb25zCitwb3N0ZXJpdHkKK3BvdAorcG90J2ktcGhhcgorcG90aSdwaGVyYQorcG90dGFnZQorcG91cmVkCitwb3ZlcnR5Citwb3dlcgorcG93ZXJzCitwcmFpc2UKK3ByYWlzZWQKK3ByYXkKK3ByYXllZAorcHJheWVyCitwcmUtZW1pbmVuY2UKK3ByZS1lbWluZW50CitwcmVwYXJlCitwcmVwYXJlZAorcHJlc2VuY2UKK3ByZXNlbnQKK3ByZXNlbnRlZAorcHJlc2VydmUKK3ByZXNlcnZlZAorcHJlc3NlZAorcHJlc3NpbmcKK3ByZXRlbmRlZAorcHJldmFpbAorcHJldmFpbGVkCitwcmV2ZW50CitwcmV2ZW50ZWQKK3ByZXkKK3ByaWNlCitwcmlkZQorcHJpZXN0Citwcmllc3RzCitwcmluY2UKK3ByaW5jZXMKK3ByaW5jaXBsZXMKK3ByaXNvbgorcHJpc29uZXJzCitwcm9jZWVkCitwcm9kdWNlCitwcm9maXQKK3Byb21pc2UKK3Byb21pc2VkCitwcm9ub3VuY2UKK3Byb3BlcnR5Citwcm9waGV0Citwcm9wb3NhbAorcHJvcG9zZQorcHJvc3BlcgorcHJvc3BlcmVkCitwcm90ZWN0aW5nCitwcm90ZWN0aW9uCitwcm92ZQorcHJvdmVuZGVyCitwcm92aWRlCitwcm92aWRlZAorcHJvdmlkZW5jZQorcHJvdmluY2UKK3Byb3Zpc2lvbgorcHJvdmlzaW9ucworcHJ1ZGVuY2UKK3B1YmxpYworcHVibGlzaAorcHVuaXNobWVudAorcHVyY2hhc2VkCitwdXJpZnkKK3B1cnBvc2UKK3B1cnN1ZQorcHVyc3VlZAorcHVyc3VpbmcKK3B1cnN1aXQKK3B1dAorcHV0dGluZworcHV2YWgKK3F1YXJyZWwKK3F1YXJyZWxlZAorcXVhcnRlcmluZworcXVlc3Rpb25lZAorcXVlc3Rpb25zCitxdWlja2x5CitxdWlldAorcXVpdmVyCityYSdhbWFoCityYWNoZWwKK3JhY2hlbCdzCityYWlkCityYWlkZXJzCityYWltZW50CityYWluCityYWluZWQKK3JhaXNlCityYWlzZWQKK3JhaXNpbmcKK3JhbQorcmFtJ2VzZXMKK3JhbXMKK3JhbgorcmF0aGVyCityYXZhZ2VkCityYXZlbgorcmF2ZW5vdXMKK3JlJ3UKK3JlYWNoZWQKK3JlYWR5CityZWFsbHkKK3JlYXBlZAorcmVhc29uCityZWFzc3VyZWQKK3JlYmVrYWgKK3JlYmVrYWgncworcmViZWxsZWQKK3JlYnVrZWQKK3JlY2VkZWQKK3JlY2VpdmUKK3JlY2VpdmVkCityZWNrb25lZAorcmVja29uaW5nCityZWNvZ25pemUKK3JlY29nbml6ZWQKK3JlY29yZHMKK3JlY3RpdHVkZQorcmVkCityZWRlZW1lZAorcmVkcmVzcworcmVkdWNlCityZWVkCityZWZyZXNoCityZWZ1c2VkCityZWZ1c2luZworcmVnYXJkCityZWdhcmRlZAorcmVnYXJkcworcmVobydib3RoCityZWhvJ2JvdGgtaXIKK3JlaWduCityZWlnbmVkCityZWxpYW5jZQorcmVsaWVmCityZWxpbnF1aXNoCityZW1haW4KK3JlbWFpbmVkCityZW1haW5pbmcKK3JlbWFpbnMKK3JlbWVtYmVyCityZW1lbWJlcmVkCityZW1pbmRlZAorcmVtbmFudAorcmVtb3ZlCityZW1vdmVkCityZW1vdmluZworcmVuZGVyCityZW5vd24KK3JlbnQKK3JlcGVhdGVkCityZXBlYXRlZGx5CityZXBoJ2FpbQorcmVwbGFjZQorcmVwbGFjZWQKK3JlcGxpZWQKK3JlcG9ydAorcmVwcmVzZW50YXRpb24KK3JlcHJlc2VudGF0aXZlCityZXByZXNlbnRhdGl2ZXMKK3JlcHJvYWNoCityZXF1aXJlCityZXF1aXJlZAorcmVxdWlyZXMKK3Jlc2N1ZQorcmVzZW4KK3Jlc2VydmUKK3Jlc2VydmVkCityZXNwZWN0CityZXN0CityZXN0ZWQKK3Jlc3RpbmcKK3Jlc3RvcmUKK3Jlc3RvcmVkCityZXN0cmFpbmVkCityZXR1cm4KK3JldHVybmVkCityZXUnZWwKK3JldWJlbgorcmV1bWFoCityZXZlYWxlZAorcmV2aXZlZAorcmV3YXJkCityaWIKK3JpYnMKK3JpY2gKK3JpZGUKK3JpZGVyCityaWdodAorcmlnaHRlZAorcmlnaHRlb3VzCityaWdodGVvdXNuZXNzCityaWdodGx5CityaWdodHMKK3JpbmcKK3JpbmdzCityaXBlbmVkCityaXBoYXRoCityaXNlCityaXNlbgorcml2ZXIKK3JpdmVycworcm9hZAorcm9iZQorcm9jaworcm9kZQorcm9kcworcm9sbAorcm9sbGVkCityb29mCityb29tCityb29tcworcm9zZQorcm9zaAorcm91Z2hseQorcm91bmQKK3JvdXNlCityb3V0ZWQKK3JveWFsCitydWxlCitydWxlcgorcnVsZXIncworcnVuCitydW5uZWxzCitzYWIndGVjYQorc2FidGFoCitzYWNrCitzYWNrY2xvdGgKK3NhY2tzCitzYWNyZWQKK3NhY3JpZmljZQorc2FjcmlmaWNlcworc2FkZGxlCitzYWRkbGVkCitzYWZlbHkKK3NhZmV0eQorc2FpZAorc2FrZQorc2FsYXJpZXMKK3NhbGVtCitzYWx0CitzYWx2YXRpb24KK3NhbWUKK3NhbWxhaAorc2FuZAorc2FuZGFsLXRob25nCitzYXInYWkKK3NhcmFoCitzYXJhaCdzCitzYXQKK3NhdmFnZXMKK3NhdmVkCitzYXZpbmcKK3Nhdm9yeQorc2F3CitzYXkKK3NheWluZworc2F5cworc2NhcmNlbHkKK3NjYXJsZXQKK3NjYXR0ZXIKK3NjYXR0ZXJlZAorc2NlcHRlcgorc2UnaXIKK3NlYQorc2VhcmNoZWQKK3NlYXMKK3NlYXNob3JlCitzZWFzb24KK3NlYXNvbnMKK3NlYmEKK3NlY29uZAorc2VjcmV0bHkKK3NlY3VyZQorc2VjdXJpdHkKK3NlZQorc2VlZAorc2VlZHRpbWUKK3NlZWluZworc2Vlaworc2Vla2luZworc2VlbQorc2VlbWVkCitzZWVuCitzZWVzCitzZWl6ZQorc2VpemVkCitzZWxlY3QKK3NlbGYtZXZpZGVudAorc2VsbAorc2VtZW4KK3NlbmQKK3NlbnQKK3NlcGFyYXRlCitzZXBhcmF0ZWQKK3NlcGFyYXRpb24KK3NlcGhhcgorc2VwdWxjaHJlCitzZXB1bGNocmVzCitzZXJhaAorc2VyZWQKK3NlcnBlbnQKK3NlcnVnCitzZXJ2YW50CitzZXJ2YW50J3MKK3NlcnZhbnRzCitzZXJ2ZQorc2VydmVkCitzZXJ2aWNlCitzZXJ2aW5nCitzZXQKK3NldGgKK3NldHRsZQorc2V0dGxlZAorc2V0dGxlbWVudAorc2V2ZW4KK3NldmVuZm9sZAorc2V2ZW50ZWVuCitzZXZlbnRlZW50aAorc2V2ZW50aAorc2V2ZW50eQorc2V2ZW50eS1maXZlCitzZXZlbnR5LXNldmVuCitzZXZlbnR5LXNldmVuZm9sZAorc2V2ZXJlCitzZXdlZAorc2V4ZXMKK3NoYSd2ZWgta2lyaWF0aGEnaW0KK3NoYWxsCitzaGFtbWFoCitzaGFyZQorc2hhdWwKK3NoYXZlZAorc2hhdmVoCitzaGUKK3NoZS1hc3Nlcworc2hlLWdvYXQKK3NoZS1nb2F0cworc2hlYWYKK3NoZWFyCitzaGVhdmVzCitzaGViYQorc2hlY2hlbQorc2hlY2hlbSdzCitzaGVkCitzaGVkcworc2hlZXAKK3NoZWVwZm9sZHMKK3NoZWVwc2hlYXJlcnMKK3NoZWtlbAorc2hla2Vscworc2hlbGFoCitzaGVsZXBoCitzaGVsdGVyCitzaGVtCitzaGVtZSdiZXIKK3NoZW9sCitzaGVwaGVyZAorc2hlcGhlcmRpbmcKK3NoZXBoZXJkcworc2hlcGhvCitzaGliYWgKK3NoaWVsZAorc2hpbGxlbQorc2hpbXJvbgorc2hpbmFiCitzaGluYXIKK3NoaXBzCitzaG9iYWwKK3Nob3JlCitzaG9ydAorc2hvcnRseQorc2hvdAorc2hvdWxkCitzaG91bGRlcgorc2hvdWxkZXJzCitzaG93CitzaG93ZWQKK3Nob3duCitzaHVhCitzaHVhJ3MKK3NodWFoCitzaHVuaQorc2h1cgorc2h1dAorc2lkZGltCitzaWRlCitzaWRvbgorc2lnaHQKK3NpZ24KK3NpZ25ldAorc2lnbnMKK3NpbGVuY2UKK3NpbHZlcgorc2ltZW9uCitzaW4KK3NpbmNlCitzaW5ldworc2luaXRlcworc2lubmVkCitzaW5uZXJzCitzaW5uaW5nCitzaXN0ZXIKK3Npc3RlcidzCitzaXQKK3NpdG5haAorc2l0dGluZworc2l4CitzaXh0ZWVuCitzaXh0aAorc2l4dHkKK3NpeHR5LWZpdmUKK3NpeHR5LW5pbmUKK3NpeHR5LXNpeAorc2l4dHktdHdvCitza2lsZnVsCitza2luCitza2lucworc2xhaW4KK3NsYXVnaHRlcgorc2xhdmUKK3NsYXZlcworc2xheQorc2xheXMKK3NsZWVrCitzbGVlcAorc2xlZXZlcworc2xlcHQKK3NsZXcKK3Nsb3BlCitzbG93bHkKK3NtYWxsCitzbWVsbAorc21lbGxlZAorc21va2UKK3Ntb2tpbmcKK3Ntb290aAorc28KK3NvZG9tCitzb2lsCitzb2pvdXJuCitzb2pvdXJuZWQKK3Nvam91cm5lcgorc29qb3VybmVycworc29qb3VybmluZworc29qb3VybmluZ3MKK3NvbGQKK3NvbGUKK3NvbGVtbmx5Citzb21lCitzb24KK3NvbidzCitzb25ncworc29ucworc29ucycKK3NvbnMtaW4tbGF3Citzb29uCitzb3JlCitzb3JlbHkKK3NvcnJvdworc29ycm93ZnVsCitzb3JyeQorc29ydAorc29ydHMKK3NvdWdodAorc291bAorc291bmQKK3NvdXRoCitzb3V0aHdhcmQKK3Nvdworc293ZWQKK3NwYWNlCitzcGFyZQorc3BhcmVkCitzcGVhaworc3BlYWtpbmcKK3NwZWFrcworc3BlY2tsZWQKK3NwZWVjaAorc3BlbmQKK3NwZW50CitzcGllcworc3BpbGxlZAorc3Bpcml0CitzcGxlbmRvcgorc3BvaWwKK3Nwb2tlCitzcG9rZW4KK3Nwb3R0ZWQKK3NwcmVhZAorc3ByaW5nCitzcHJpbmdpbmcKK3NwcmluZ3MKK3Nwcm91dGVkCitzcHJ1bmcKK3N0YWZmCitzdGFnZQorc3RhbGsKK3N0YW5kCitzdGFuZGluZworc3RhbmRzCitzdGFycworc3RhdGUKK3N0YXRlcworc3RhdGVzOgorc3RhdGlvbgorc3RhdHV0ZQorc3RhdHV0ZXMKK3N0YXkKK3N0YXllZAorc3RlYWQKK3N0ZWFkZmFzdAorc3RlYWwKK3N0ZXdhcmQKK3N0aWxsCitzdG9sZQorc3RvbGVuCitzdG9uZQorc3RvbmVzCitzdG9vZAorc3Rvb3BlZAorc3RvcAorc3RvcHBlZAorc3RvcmUKK3N0b3JlZAorc3RvcmVob3VzZXMKK3N0b3J5CitzdHJhbmdlcgorc3RyYW5nZXJzCitzdHJhdworc3RyZWFrcworc3RyZWFtCitzdHJlZXQKK3N0cmVuZ3RoCitzdHJldGNoZWQKK3N0cmlmZQorc3RyaWtpbmcKK3N0cmlwZWQKK3N0cmlwcGVkCitzdHJpdmVuCitzdHJvbmcKK3N0cm9uZ2VyCitzdHJvbmdseQorc3RydWNrCitzdHJ1Z2dsZWQKK3N1YmR1ZQorc3ViZHVlZAorc3ViamVjdAorc3VibWl0CitzdWJtaXR0ZWQKK3N1YnNpZGVkCitzdWJzdGFuY2UKK3N1YnRsZQorc3VjY2Vzcworc3VjY2Vzc2Z1bAorc3VjY290aAorc3VjaAorc3Vjaworc3Vja2xlCitzdWZmZXIKK3N1ZmZlcmFibGUKK3N1ZmZlcmFuY2UKK3N1aXRhYmxlCitzdW1tZXIKK3N1bW1vbmVkCitzdW4KK3N1cGVyaW9yCitzdXBwbGFudGVkCitzdXBwbGllZAorc3VwcG9ydAorc3VwcG9zZQorc3VwcmVtZQorc3VyZWx5CitzdXJldHkKK3N1cnJvdW5kZWQKK3N1cnZpdm9ycworc3VzcGVuZGVkCitzdXNwZW5kaW5nCitzdXN0YWluZWQKK3N3YWxsb3dlZAorc3dhcm0KK3N3YXJtaW5nCitzd2FybXMKK3N3ZWFyCitzd2VhdAorc3dvcmQKK3N3b3Jkcworc3dvcmUKK3N3b3JuCitzeXN0ZW0KK3N5c3RlbXMKK3RhYmxlCit0YWhhc2gKK3Rha2UKK3Rha2VuCit0YWtpbmcKK3RhbGtlZAordGFsa2luZwordGFtYXIKK3RhbWFyaXNrCit0YW1ib3VyaW5lCit0YXJyaWVkCit0YXJyeQordGFyc2hpc2gKK3RheGVzCit0ZSdtYW5pdGVzCit0ZWJhaAordGVldGgKK3RlbGwKK3RlbGxzCit0ZW1hCit0ZW1hbgordGVuCit0ZW5kZXIKK3RlbmRlcmx5Cit0ZW50Cit0ZW50aAordGVudHMKK3RlbnVyZQordGVyYWgKK3Rlcm1zOgordGVycml0b3J5Cit0ZXJyb3IKK3Rlc3RlZAordGhhbgordGhhdAordGhlCit0aGVlCit0aGVpcgordGhlaXJzCit0aGVtCit0aGVtc2VsdmVzCit0aGVuCit0aGVuY2UKK3RoZXJlCit0aGVyZWZvcmUKK3RoZXJlaW4KK3RoZXNlCit0aGV5Cit0aGlja2V0Cit0aGlnaAordGhpbgordGhpbmcKK3RoaW5ncwordGhpbmtpbmcKK3RoaXJkCit0aGlydGVlbgordGhpcnRlZW50aAordGhpcnR5Cit0aGlydHktZml2ZQordGhpcnR5LWZvdXIKK3RoaXJ0eS1zZXZlbgordGhpcnR5LXRocmVlCit0aGlydHktdHdvCit0aGlzCit0aGlzdGxlcwordGhvcm5zCit0aG9yb3VnaGx5Cit0aG9zZQordGhvdQordGhvdWdodAordGhvdWdodHMKK3Rob3VzYW5kCit0aG91c2FuZHMKK3RocmVhZAordGhyZWUKK3RocmVzaGluZwordGhyb25lCit0aHJvdWdoCit0aHJvdWdob3V0Cit0aHJvdwordGh1cwordGh5Cit0aWRhbAordGlkaW5ncwordGllcwordGlncmlzCit0aWxsCit0aWxsZXIKK3RpbWUKK3RpbWVzCit0aW1uYQordGltbmFoCit0aXJhcwordG8KK3RvZGF5Cit0b2dhcidtYWgKK3RvZ2V0aGVyCit0b2lsCit0b2xhCit0b2xkCit0b21iCit0b25pZ2h0Cit0b28KK3Rvb2sKK3RvcAordG9wcwordG9yY2gKK3Rvcm4KK3RvdGFsbHkKK3RvdGFseQordG91Y2gKK3RvdWNoZWQKK3RvdWNoZXMKK3Rvd2FyZAordG93ZXIKK3Rvd25zCit0cmFkZQordHJhZGVycwordHJhaW4KK3RyYWluZWQKK3RyYW5zZ3Jlc3Npb24KK3RyYW5zaWVudAordHJhbnNwb3J0aW5nCit0cmF2YWlsZWQKK3RyZWFzdXJlCit0cmVhdAordHJlYXRlZAordHJlZQordHJlZXMKK3RyZW1ibGVkCit0cmVtYmxpbmcKK3RyaWFsCit0cmliZXMKK3RyaWVkCit0cm9vcHMKK3Ryb3VibGUKK3Ryb3VibGVkCit0cm91YmxlcwordHJvdWdoCit0cm91Z2hzCit0cnVseQordHJ1dGgKK3RydXRocwordHViYWwKK3R1YmFsLQordHViYWwtY2FpbgordHVybgordHVybmVkCit0dXJucwordHVydGxlZG92ZQordHdlbHZlCit0d2VudHkKK3R3ZW50eS1uaW5lCit0d2VudHktc2V2ZW4KK3R3ZW50eS1zZXZlbnRoCit0d2ljZQordHdpbnMKK3R3bwordHlyYW5ueQordHlyYW50Cit0eXJhbnRzCit1bmFja25vd2xlZGdlZAordW5hbGllbmFibGUKK3VuYXdhcmVzCit1bmNpcmN1bWNpc2VkCit1bmNvbWZvcnRhYmxlCit1bmNvdmVyZWQKK3VuZGVyCit1bmRlcnN0YW5kCit1bmRlcnN0b29kCit1bmRpc3Rpbmd1aXNoZWQKK3VuZml0Cit1bmdpcmRlZAordW5pdGVkCit1bmtub3duCit1bmxlYXZlbmVkCit1bmxlc3MKK3VubW92ZWQKK3Vuc3RhYmxlCit1bnRpbAordW51c3VhbAordW53YXJyYW50YWJsZQordW53b3J0aAordXAKK3VwYnJhaWRlZAordXBvbgordXBwZXJtb3N0Cit1cHJpZ2h0Cit1cgordXJnZWQKK3VzCit1czoKK3VzZQordXNpbmcKK3VzdXJwYXRpb25zCit1dHRlcmx5Cit1egordXphbAordmFsbGV5Cit2YWx1YWJsZQordmVnZXRhdGlvbgordmVpbAordmVuZ2VhbmNlCit2ZW50Cit2ZW50cwordmVyaWZpZWQKK3ZlcnkKK3Zlc3R1cmUKK3ZpbGxhZ2VzCit2aW5kaWNhdGlvbgordmluZQordmluZXlhcmQKK3Zpb2xlbmNlCit2aW9sZW50bHkKK3ZpcGVyCit2aXJnaW4KK3Zpc2lvbgordmlzaW9ucwordmlzaXQKK3Zpc2l0ZWQKK3ZvaWNlCit2b2lkCit2b3cKK3dhZ2VzCit3YWdpbmcKK3dhZ29ucword2FpdAord2FpdGVkCit3YWxrCit3YWxrZWQKK3dhbGtpbmcKK3dhbGwKK3dhbmRlcgord2FuZGVyZWQKK3dhbmRlcmVyCit3YW5kZXJpbmcKK3dhbnRpbmcKK3dhbnRvbm5lc3MKK3dhcgord2FyZmFyZQord2FybmVkCit3YXMKK3dhc2gKK3dhc2hlZAord2FzaGVzCit3YXRjaAord2F0ZXIKK3dhdGVyZWQKK3dhdGVyaW5nCit3YXRlcnMKK3dheQord2F5c2lkZQord2UKK3dlYWsKK3dlYWtuZXNzCit3ZWFsdGgKK3dlYWx0aHkKK3dlYW5lZAord2VhcG9ucword2Vhcgord2VhcmllZAord2VhcnkKK3dlZWsKK3dlZXAKK3dlZXBpbmcKK3dlaWdoZWQKK3dlaWdoaW5nCit3ZWlnaHQKK3dlaWdodHMKK3dlbGZhcmUKK3dlbGwKK3dlbGwncword2VsbHMKK3dlbnQKK3dlcHQKK3dlcmUKK3dlc3QKK3dlc3R3YXJkCit3aGF0Cit3aGF0ZXZlcgord2hhdHNvZXZlcgord2hlYXQKK3doZWxwCit3aGVuCit3aGVuY2UKK3doZW5ldmVyCit3aGVyZQord2hlcmVieQord2hlcmV2ZXIKK3doZXRoZXIKK3doaWNoCit3aGlsZQord2hpdGUKK3dobword2hvZXZlcgord2hvbGUKK3dob2xlc29tZQord2hvbQord2hvbWV2ZXIKK3dob3NlCit3aHkKK3dpY2tlZAord2lja2VkbHkKK3dpY2tlZG5lc3MKK3dpZG93Cit3aWRvdydzCit3aWRvd2hvb2QKK3dpZmUKK3dpZmUncword2lsZAord2lsZGVybmVzcword2lsbAord2lsbGluZword2lsdAord2luZAord2luZG93Cit3aW5kb3dzCit3aW5lCit3aW5nZWQKK3dpbnRlcgord2lzZQord2l0aAord2l0aGVyZWQKK3dpdGhoZWxkCit3aXRoaG9sZAord2l0aGluCit3aXRob3V0Cit3aXRuZXNzCit3aXZlcword29sZgord29tYW4KK3dvbWFuJ3MKK3dvbWIKK3dvbWJzCit3b21lbgord29vZAord29yZAord29yZHMKK3dvcmUKK3dvcmsKK3dvcmtzCit3b3JsZAord29ybGQ6Cit3b3JzZQord29yc2hpcAord29yc2hpcGVkCit3b3J0aAord29ydGh5Cit3b3VsZAord291bmRpbmcKK3dyYXBwaW5nCit3cmF0aAord3Jlc3RsZWQKK3dyZXN0bGluZ3MKK3dyb25nCit3cm91Z2h0Cit5ZWFyCit5ZWFybmVkCit5ZWFycworeWVzCit5ZXQKK3lpZWxkCit5aWVsZGluZworeW9rZQoreW9uZGVyCit5b3UKK3lvdW5nCit5b3VuZ2VyCit5b3VuZ2VzdAoreW91cgoreW91cnMKK3lvdXJzZWxmCit5b3Vyc2VsdmVzCit5b3V0aAoremEnYXZhbgoremFwaCdlbmF0aC1wYW5lJ2FoCit6ZWIndWx1bgoremVib2knaW0KK3plbSdhcml0ZXMKK3plcGhvCit6ZXJhaAoremliJ2VvbgoremlsbGFoCit6aWxwYWgKK3ppbXJhbgoremlwaCdpb24KK3pvJ2FyCit6b2hhcgorenV6aW0KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvZGF0YS90aDE4MDU3LnR4dCBiL3NyYy9jb20vaWJtL2ljdS9kZXYvZGF0YS90aDE4MDU3LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzYxMDY3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi9kYXRhL3RoMTgwNTcudHh0CkBAIC0wLDAgKzEsMTc5MTkgQEAKK++7vyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjKgorIyogICBDb3B5cmlnaHQgKEMpIDE5OTgtMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworIyogICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMqCisjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCisjCisjIEAoIykkUkNTZmlsZTogdGgxODA1Ny50eHQsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDIvMDcvMTYgMDA6Mjk6MzkgJAorIyAKKyMgU29ydGVkIFRoYWkgd29yZCBsaXN0IHVzZWQgZm9yIHRlc3RpbmcgdGhlIFRoYWlDb2xsYXRvciBjbGFzcy4KKyMgVGhpcyBsaXN0IHdhcyB0YWtlbiBmcm9tIHRoZSBXZWI6IDxodHRwOi8vc2Vhc3JjLnRoLm5ldC9kaWN0L2RpY3QuaHRtPgorIyBhbmQgc29tZSBvYnZpb3VzIGdhcmJhZ2UgbGluZXMgKG51bGxzLCBldGMpIHdlcmUgZGVsZXRlZAorIworIyBMaW5lcyBzdGFydGluZyB3aXRoICcjJyBhcmUgaWdub3JlZDsgb3RoZXJzIGFyZSB0cmVhdGVkIGFzIHNpbmdsZSB3b3JkcworIyBpbiB0aGUgVVRGLTggZW5jb2RpbmcuCisjCisjIFsxMi8xNS85OSBhbGl1XSByZWNvZGVkIGZyb20gVElTLTYyMCB0byBVVEYtOAorIwor4LiBCivguIHguYcKK+C4geC4gQor4LiB4LmK4LiBCivguIHguIHguILguJnguLLguIEKK+C4geC4geC4seC4k+C4j+C4geC4sAor4LiB4LiB4Li44LiPCivguIHguIHguLjguJcKK+C4geC4geC4uOC4mOC4oOC4seC4k+C4keC5jAor4LiB4LiB4Li44Liq4Lix4LiZ4LmC4LiYCivguIHguIcKK+C4geC5iOC4hwor4LiB4LmJ4LiHCivguIHguYrguIcKK+C4geC4h+C4geC4reC4mQor4LiB4LiH4LiB4Liy4LijCivguIHguIfguYLguIHguYkKK+C4geC5ieC4h+C5guC4hOC5ieC4hwor4LiB4LmJ4LiH4LiHCivguIHguIfguInguLLguIEKK+C4geC4h+C5hOC4ieC5iAor4LiB4LiH4LmA4LiV4LmH4LiBCivguIHguIfguKrguLUKK+C4geC4h+C4quC4uOC4pQor4LiB4LiKCivguIHguIrguIHguKMKK+C4geC4juC4uOC4oeC4nuC4tQor4LiB4LiPCivguIHguI/guKvguKHguLLguKIKK+C4geC4j+C4sAor4LiB4LiP4Liy4Lir4LiwCivguIHguI/guLQKK+C4geC4j+C4uOC4gQor4LiB4LiQ4Li04LiZCivguIHguJDguLTguJnguIHguLLguKUKK+C4geC4kOC4tOC4meC4leC5ieC4mQor4LiB4LiQ4Li04LiZ4LiX4Liy4LiZCivguIHguJDguLTguJnguKPguLLguKnguI7guKPguYwKK+C4geC4kOC4tOC4meC4q+C4peC4p+C4hwor4LiB4LiQ4Li04LiZ4Lix4LiV4LiW4Liy4Lij4LiB4Lij4Lij4LihCivguIHguJDguLTguJnguLjguJfguJjguLLguKPguLAKK+C4geC4k+C4tOC4geC4meC4seC4meC4leC5jAor4LiB4LiT4Li04LiB4Liy4Lij4LmMCivguIHguYDguJPguKPguLgKK+C4geC5gOC4k+C4o+C4uOC4geC4sgor4LiB4LiUCivguIHguJTguITguLHguIcKK+C4geC4lOC5geC4lOC4hwor4LiB4LiU4LiX4Liw4LmA4LilCivguIHguJTguYLguJvguYrguLAKK+C4geC4lOC4q+C4seC4p+C5guC4lQor4LiB4LiU4LmA4Lir4Lil4Li34Lit4LiHCivguIHguJXguI3guLLguJMKK+C4geC4leC4oeC4suC4peC4tQor4LiB4LiV4LmA4Lin4LiX4Li04LiV4LiyCivguIHguJXguYDguKfguJfguLUKK+C4geC4leC4seC4jeC4iuC4peC4tQor4LiB4LiV4Lix4LiN4LiN4Li44LiV4LiyCivguIHguJXguLHguI3guI3guLkKK+C4geC4leC4suC4mOC4tOC4geC4suC4owor4LiB4LiV4Liy4Lig4Li04LiZ4Li04Lir4Liy4LijCivguIHguJXguLTguIHguLIKK+C4geC4luC4sgor4LiB4LiW4Li04LiBCivguIHguJbguLTguIHguLLguIjguLLguKPguKLguYwKK+C4geC4l+C4o+C4o+C4mwor4LiB4LiX4Lil4Li04Lih4Lik4LiECivguIHguJfguKXguLUKK+C4geC4mQor4LiB4LmI4LiZCivguIHguYnguJkKK+C4geC4meC4gQor4LiB4LiZ4LiZCivguIHguJnguJnguYDguIrguK0KK+C4geC5iOC4meC4meC5guC4luC4hwor4LiB4LiZ4LiZ4LmA4Lir4Li04LihCivguIHguJnguLTguKnguJDguYwKK+C4geC4meC4tOC4qeC4kOC4sgor4LiB4LiaCivguIHguJrguI8KK+C4geC4muC4lOC4suC4mQor4LiB4Lia4LiU4Liz4LiB4Lia4LmB4LiU4LiHCivguIHguJrguJfguLkKK+C4geC4muC4suC4pQor4LiB4Lia4Li04LiZ4LiX4Lij4LmMCivguIHguJrguLTguKUKK+C4geC4muC4tOC4peC4nuC4seC4quC4lOC4uOC5jAor4LiB4Lia4Li14LmICivguIHguJrguLnguKMKK+C4geC5gOC4muC4meC4l+C4o+C5jAor4LiB4LmC4Lia4LijCivguIHguYLguJrguKUKK+C4geC4m+C4kwor4LiB4Lib4LiT4LiBCivguIHguJvguJPguLIKK+C4geC4m+C4tAor4LiB4Lib4Li04LiV4Lix4LiZCivguIHguKEKK+C4geC5ieC4oQor4LiB4Lih4LiT4LiR4Lil4Liy4Lig4Li04LmA4Lip4LiBCivguIHguKHguJPguJHguYLguKXguJfguIEKK+C4geC4oeC4pQor4LiB4Lih4Lil4LiC4Lix4LiT4LiR4LmMCivguIHguKHguKXguITguKPguKPguKDguYwKK+C4geC4oeC4peC4ieC4seC4meC4l+C5jAor4LiB4Lih4Lil4Lie4Liy4LiZ4LiY4LieCivguIHguKHguKXguLIKK+C4geC4oeC4peC4suC4qAor4LiB4Lih4Lil4Liy4Liq4LiZ4LmMCivguIHguKHguYDguKXguKgKK+C4geC4oeC4seC4k+C4keC4peC4uAor4LiB4Lih4Li44LiXCivguIHguKMKK+C4geC4o+C4gQor4LiB4Lij4LiB4LiOCivguIHguKPguIHguI7guLLguITguKEKK+C4geC4o+C4hwor4LiB4Lij4LiK4LiB4Liy4LiiCivguIHguKPguJPguJHguYwKK+C4geC4o+C4k+C4tOC4geC4suC4o+C5jAor4LiB4Lij4LiT4Li1CivguIHguKPguJPguLXguKLguYwKK+C4geC4o+C4k+C4teC4ouC4sAor4LiB4Lij4LiUCivguIHguKPguJkKK+C4geC4o+C4meC4l+C4sgor4LiB4Lij4LiZ4LiZ4LmA4LiK4LmJ4LiyCivguIHguKPguJoKK+C4geC4o+C4muC4ueC4owor4LiB4Lij4Lie4Li04LiZ4LiY4Li44LmMCivguIHguKPguKDguIEKK+C4geC4o+C4oOC4tOC4mQor4LiB4Lij4Lig4Li14Lij4LmMCivguIHguKPguKDguLjguKEKK+C4geC4o+C4oQor4LiB4Lij4Lih4LiB4Lij4Lit4LihCivguIHguKPguKHguIHguLLguKMKK+C4geC4o+C4oeC4geC4suC4o+C4nuC4tOC5gOC4qOC4qQor4LiB4Lij4Lih4LmA4LiB4Lij4Li14Lii4LihCivguIHguKPguKHguILguLjguJkKK+C4geC4o+C4oeC4iuC4sOC5geC4oeC5iAor4LiB4Lij4Lih4LiX4LmI4LiyCivguIHguKPguKHguJfguYjguLLguIHguKXguLLguIcKK+C4geC4o+C4oeC4l+C5iOC4suC4guC4p+C4sgor4LiB4Lij4Lih4LiX4LmI4Liy4LiL4LmJ4Liy4LiiCivguIHguKPguKHguJjguKPguKPguKHguYwKK+C4geC4o+C4oeC4meC4hOC4o+C4muC4suC4pQor4LiB4Lij4Lih4LiZ4LiyCivguIHguKPguKHguJ7guKPguLAKK+C4geC4o+C4oeC4nuC4o+C4sOC4geC4peC4suC5guC4q+C4oQor4LiB4Lij4Lih4Lie4Lij4Liw4Lii4LiyCivguIHguKPguKHguKHguKvguLLguJTguYTguJfguKIKK+C4geC4o+C4oeC5gOC4oeC4t+C4reC4hwor4LiB4Lij4Lih4Lin4Lix4LiHCivguIHguKPguKHguKjguLHguIHguJTguLQKK+C4geC4o+C4oeC4quC4oeC5gOC4lOC5h+C4iAor4LiB4Lij4Lih4Lir4Lih4Li34LmI4LiZCivguIHguKPguKHguKvguKXguKfguIcKK+C4geC4o+C4oeC4seC4j+C4j+C5jAor4LiB4Lij4LijCivguIHguKPguKPguYTguIHguKMKK+C4geC4o+C4o+C5gOC4iOC4teC4ouC4gQor4LiB4Lij4Lij4LiK4Li04LiHCivguIHguKPguKPguIrguLTguJQKK+C4geC4o+C4o+C5gOC4iuC4rQor4LiB4Lij4Lij4LmA4LiK4LmJ4LiyCivguIHguKPguKPguYDguIrguLXguKLguIcKK+C4geC4o+C4o+C5guC4iuC4gQor4LiB4Lij4Lij4LiL4LmJ4LiZ4LiZCivguIHguKPguKPguYHguIvguIcKK+C4geC4o+C4o+C4kOC5jAor4LiB4Lij4Lij4LiQ4LiyCivguIHguKPguKPguJMKK+C4geC4o+C4o+C4k+C4tOC4geC4suC4o+C5jAor4LiB4Lij4Lij4LiU4Li0CivguIHguKPguKPguJTguLTguIEKK+C4geC4o+C4o+C4lOC4tuC4gQor4LiB4Lij4Lij4LiV4Li4CivguIHguKPguKPguYTguJXguKMKK+C4geC4o+C4o+C4l+C4mgor4LiB4Lij4Lij4LmB4LiX4LiBCivguIHguKPguKPguYHguJfguKPguIEKK+C4geC4o+C4o+C4muC4suC4quC4tOC4gQor4LiB4Lij4Lij4Lia4Li04LiUCivguIHguKPguKPguJrguLnguKMKK+C4geC4o+C4o+C4m+C4suC4quC4tOC4gQor4LiB4Lij4Lij4Lib4Li44Lij4LiwCivguIHguKPguKPguJ7guLjguKEKK+C4geC4o+C4o+C4nuC4uOC5iOC4oQor4LiB4Lij4Lij4Lig4Li04Lij4Lih4Lii4LmMCivguIHguKPguKPguKEKK+C4geC4o+C4o+C4oeC5jAor4LiB4Lij4Lij4Lih4Liy4LiK4Li14LieCivguIHguKPguKPguKHguLLguJjguLTguIHguLLguKMKK+C4geC4o+C4o+C4oeC4suC4owor4LiB4Lij4Lij4Lil4Li1CivguIHguKPguKPguKXguLbguIcKK+C4geC4o+C4o+C4qeC4gQor4LiB4Lij4Lij4Liq4LiwCivguIHguKPguKPguYHguKrguIcKK+C4geC4o+C4o+C4q+C4suC4ogor4LiB4Lij4Lij4LmA4Lir4Li04LihCivguIHguKPguKPguYLguKvguKIKK+C4geC4o+C4o+C5gOC4reC4sgor4LiB4Lij4Lij4Li44LiT4LiyCivguIHguKPguKfguJQKK+C4geC4o+C4p+C4mQor4LiB4Lij4Lin4LiaCivguIHguKPguKfguKEKK+C4geC4o+C5ieC4p+C4oQor4LiB4Lij4Lin4LiiCivguIHguKPguKfguLTguIEKK+C4geC4o+C4quC4suC4m+C4meC5jAor4LiB4Lij4Liq4Li44LiX4LiY4Li04LmMCivguIHguKPguK0KK+C4geC4o+C5ieC4rQor4LiB4Lij4Lit4LiBCivguIHguKPguYfguK3guIHguIHguKPguYvguK3guKIKK+C4geC4o+C4reC4geC5geC4geC4o+C4gQor4LiB4Lij4Lit4LiHCivguIHguKPguK3guIfguIHguKPguK3guKIKK+C4geC4o+C4reC4lAor4LiB4Lij4LmI4Lit4LiZCivguIHguKPguK3guJoKK+C4geC4o+C4reC4oQor4LiB4Lij4LmI4Lit4LihCivguIHguKPguYjguK3guKIKK+C4geC4o+C4sAor4LiB4Lij4Liw4LiB4LijCivguIHguKPguLDguIHguKPguLHguJrguIHguKPguLDguYDguIHguKPguLXguKLguJoKK+C4geC4o+C4sOC4geC4o+C4teC5iuC4lAor4LiB4Lij4Liw4LiB4Lij4Li44LmI4LiZCivguIHguKPguLDguIHguKXguLHguJrguIHguKXguK3guIEKK+C4geC4o+C4sOC4geC4p+C4lAor4LiB4Lij4Liw4LiB4Lit4LiHCivguIHguKPguLDguIHguLHguJQKK+C4geC4o+C4sOC4geC4teC5iQor4LiB4Lij4Liw4LiB4Li54LilCivguIHguKPguLDguYDguIHguKPguK3guIEKK+C4geC4o+C4sOC5gOC4geC4o+C4tOC4gQor4LiB4Lij4Liw4LmA4LiB4Lij4Li04LmI4LiZCivguIHguKPguLDguYDguIHguKPguLXguKLguJoKK+C4geC4o+C4sOC5gOC4geC4o+C4teC4ouC4oQor4LiB4Lij4Liw4LmA4LiB4Lij4Li14Lii4LinCivguIHguKPguLDguYDguIHguKPguLXguYnguKLguKcKK+C4geC4o+C4sOC5gOC4geC4peC4t+C4reC4gQor4LiB4Lij4Liw4LiE4LiZCivguIHguKPguLDguITguLLguKIKK+C4geC4o+C4sOC4hOC4uOC4gQor4LiB4Lij4Liw4LiH4LiB4LiB4Lij4Liw4LiH4Lix4LiZCivguIHguKPguLDguIfguIHguIHguKPguLDguYDguIfguLTguYjguJkKK+C4geC4o+C4sOC4h+C5iOC4reC4h+C4geC4o+C4sOC5geC4h+C5iOC4hwor4LiB4Lij4Liw4LiH4Lit4LiUCivguIHguKPguLDguIfguYjguK3guJnguIHguKPguLDguYHguIfguYjguJkKK+C4geC4o+C4sOC5guC4h+C4gQor4LiB4Lij4Liw4LiI4LiBCivguIHguKPguLDguIjguIcKK+C4geC4o+C4sOC4iOC4owor4LiB4Lij4Liw4LiI4Lit4LiBCivguIHguKPguLDguIjguK3guIfguKvguIfguYjguK3guIcKK+C4geC4o+C4sOC4iOC4reC4h+C4reC5geC4hwor4LiB4Lij4Liw4LiI4LmJ4Lit4LiZCivguIHguKPguLDguIjguK3guJnguKvguLkKK+C4geC4o+C4sOC4iOC5ieC4reC4ogor4LiB4Lij4Liw4LiI4LmL4Lit4Lir4Lin4LitCivguIHguKPguLDguIjguLAKK+C4geC4o+C4sOC4iOC4seC4gQor4LiB4Lij4Liw4LiI4Lix4LiHCivguIHguKPguLDguIjguLHguIfguKvguKXguLHguIfguYDguJrguLXguYnguKIKK+C4geC4o+C4sOC4iOC4seC4lAor4LiB4Lij4Liw4LiI4Lix4LiaCivguIHguKPguLDguIjguLHguJrguJvguLTguYnguIcKK+C4geC4o+C4sOC4iOC4seC4muC4m+C4teC5iAor4LiB4Lij4Liw4LiI4LmI4LiyCivguIHguKPguLDguIjguYjguLLguIcKK+C4geC4o+C4sOC4iOC4suC4lAor4LiB4Lij4Liw4LiI4Liy4LiZCivguIHguKPguLDguIjguLLguJoKK+C4geC4o+C4sOC4iOC4suC4oQor4LiB4Lij4Liw4LiI4Liy4LiiCivguIHguKPguLDguIjguLLguKcKK+C4geC4o+C4sOC4iOC4tOC4gQor4LiB4Lij4Liw4LiI4Li04LmL4LiHCivguIHguKPguLDguIjguLTguJQKK+C4geC4o+C4sOC4iOC4tOC4mgor4LiB4Lij4Liw4LiI4Li04LmL4LihCivguIHguKPguLDguIjguLTguKPguLTguJQKK+C4geC4o+C4sOC4iOC4tOC5i+C4pwor4LiB4Lij4Liw4LiI4Li14LmJCivguIHguKPguLDguIjguLXguYsKK+C4geC4o+C4sOC4iOC4uOC4gQor4LiB4Lij4Liw4LiI4Li44LmL4LiH4LiB4Lij4Liw4LiI4Li04LmL4LiHCivguIHguKPguLDguIjguLjguJoKK+C4geC4o+C4sOC4iOC4uOC5iuC4mgor4LiB4Lij4Liw4LiI4Li44Lia4LiB4Lij4Liw4LiI4Li04LiaCivguIHguKPguLDguIjguLjguYvguKHguIHguKPguLDguIjguLTguYvguKEKK+C4geC4o+C4sOC4iOC4uOC4ogor4LiB4Lij4Liw4LiI4Li54LmJCivguIHguKPguLDguIjguLnguYvguIHguKPguLDguIjguLXguYsKK+C4geC4o+C4sOC4iOC4ueC4lAor4LiB4Lij4Liw4LmA4LiI4Lit4Liw4LiB4Lij4Liw4LmA4LiI4Li04LiHCivguIHguKPguLDguYDguIjguLIKK+C4geC4o+C4sOC5gOC4iOC5iOC4sgor4LiB4Lij4Liw4LmA4LiI4LmJ4LiyCivguIHguKPguLDguYDguIjguLLguLAKK+C4geC4o+C4sOC5gOC4iOC4tOC4hwor4LiB4Lij4Liw4LmA4LiI4Li04LiU4LiB4Lij4Liw4LmA4LiI4Li04LiHCivguIHguKPguLDguYDguIjguLXguYnguKLguIcKK+C4geC4o+C4sOC5gOC4iOC4teC5iuC4ouC4mgor4LiB4Lij4Liw4LmA4LiI4Li14Lii4LinCivguIHguKPguLDguYDguIjguLXguYrguKLguKcKK+C4geC4o+C4sOC5geC4iOC4sAor4LiB4Lij4Liw4LmC4LiI4LiZCivguIHguKPguLDguYLguIjguKEKK+C4geC4o+C4sOC4ieC4hwor4LiB4Lij4Liw4LiJ4Lit4LiBCivguIHguKPguLDguInguYjguK3guJkKK+C4geC4o+C4sOC4ieC4seC4muC4geC4o+C4sOC5gOC4ieC4hwor4LiB4Lij4Liw4LiJ4Li04LmI4LiHCivguIHguKPguLDguInguLXguIEKK+C4geC4o+C4sOC4ieC4uOC4gQor4LiB4Lij4Liw4LiJ4Li54LiUCivguIHguKPguLDguYDguInguIEKK+C4geC4o+C4sOC5gOC4ieC4hwor4LiB4Lij4Liw4LmA4LiJ4LiUCivguIHguKPguLDguYHguInguIEKK+C4geC4o+C4sOC5geC4ieC5iOC4mQor4LiB4Lij4Liw4LmC4LiJ4LiB4LiB4Lij4Liw4LmA4LiJ4LiBCivguIHguKPguLDguYLguInguKEKK+C4geC4o+C4sOC4iuC4hwor4LiB4Lij4Liw4LiK4LiU4LiB4Lij4Liw4LiK4LmJ4Lit4LiiCivguIHguKPguLDguIrguKfguKIKK+C4geC4o+C4sOC4iuC4reC4gQor4LiB4Lij4Liw4LiK4Lit4LiZCivguIHguKPguLDguIrguK3guKEKK+C4geC4o+C4sOC4iuC4reC4oeC4lOC4reC4gQor4LiB4Lij4Liw4LiK4LmJ4Lit4LiiCivguIHguKPguLDguIrguYnguK3guKLguJnguLLguIfguKPguLMKK+C4geC4o+C4sOC4iuC4seC4hwor4LiB4Lij4Liw4LiK4Lix4LmJ4LiZCivguIHguKPguLDguIrguLHguJoKK+C4geC4o+C4sOC4iuC4suC4gQor4LiB4Lij4Liw4LiK4LmI4Liy4LiHCivguIHguKPguLDguIrguLLguYDguJTguLTguKEKK+C4geC4o+C4sOC4iuC4suC4ogor4LiB4Lij4Liw4LiK4Li04LiHCivguIHguKPguLDguIrguLTguJQKK+C4geC4o+C4sOC4iuC4uAor4LiB4Lij4Liw4LiK4Li44LiBCivguIHguKPguLDguIrguLjguYjguKHguIHguKPguLDguIrguKfguKIKK+C4geC4o+C4sOC5gOC4iuC4rQor4LiB4Lij4Liw4LmA4LiK4LiyCivguIHguKPguLDguYDguIrguYnguLIKK+C4geC4o+C4sOC5gOC4iuC4teC4ouC4hwor4LiB4Lij4Liw4LmB4LiK4LiHCivguIHguKPguLDguYHguIrguLAKK+C4geC4o+C4sOC5guC4iuC4gQor4LiB4Lij4Liw4LiL4Lin4LiiCivguIHguKPguLDguIvguYnguK0KK+C4geC4o+C4sOC4i+C5iOC4reC4h+C4geC4o+C4sOC5geC4i+C5iOC4hwor4LiB4Lij4Liw4LiL4Lix4LiaCivguIHguKPguLDguIvguLHguJrguJvguLLguIHguYDguKPguLfguK0KK+C4geC4o+C4sOC4i+C5iOC4suC4hwor4LiB4Lij4Liw4LiL4Liy4LiaCivguIHguKPguLDguIvguLTguIEKK+C4geC4o+C4sOC4i+C4tOC4mgor4LiB4Lij4Liw4LiL4Li14LmJCivguIHguKPguLDguIvguLXguYnguIHguKPguLDguIvguYnguK0KK+C4geC4o+C4sOC4i+C4uOC4hwor4LiB4Lij4Liw4LiL4Li44Lia4LiB4Lij4Liw4LiL4Li04LiaCivguIHguKPguLDguIvguLjguYnguKEKK+C4geC4o+C4sOC4i+C4ueC5iAor4LiB4Lij4Liw4LmA4LiLCivguIHguKPguLDguYDguIvguYfguJkKK+C4geC4o+C4sOC5gOC4i+C4rQor4LiB4Lij4Liw4LmA4LiL4Lit4Liw4LiB4Lij4Liw4LmA4LiL4LitCivguIHguKPguLDguYDguIvguK3guLDguIHguKPguLDguYDguIvguLTguIcKK+C4geC4o+C4sOC5gOC4i+C5ieC4sgor4LiB4Lij4Liw4LmA4LiL4Li04LiHCivguIHguKPguLDguYHguIsKK+C4geC4o+C4sOC5geC4i+C4sAor4LiB4Lij4Liw4LmC4LiL4LiB4Lij4Liw4LmA4LiLCivguIHguKPguLDguI7guLUKK+C4geC4o+C4sOC4juC4uOC4oeC4nuC4tQor4LiB4Lij4Liw4LiU4LiBCivguIHguKPguLDguJTguYnguIcKK+C4geC4o+C4sOC4lOC4meC5guC4lOC5iAor4LiB4Lij4Liw4LiU4Lin4LiHCivguIHguKPguLDguJTguKfguJkKK+C4geC4o+C4sOC4lOC5ieC4p+C4oeC4geC4o+C4sOC5gOC4lOC4teC5ieC4ouC4oQor4LiB4Lij4Liw4LiU4LitCivguIHguKPguLDguJTguK3guIcKK+C4geC4o+C4sOC4lOC4reC4h+C4q+C4suC4ogor4LiB4Lij4Liw4LiU4Lit4LiZCivguIHguKPguLDguJTguK3guKEKK+C4geC4o+C4sOC4lOC4seC4geC4geC4o+C4sOC5gOC4lOC4teC5ieC4ogor4LiB4Lij4Liw4LiU4Lix4LiH4LiH4Lix4LinCivguIHguKPguLDguJTguLHguIfguIfguLIKK+C4geC4o+C4sOC4lOC4suC4gQor4LiB4Lij4Liw4LiU4LmJ4Liy4LiHCivguIHguKPguLDguJTguLLguIfguKXguLLguIcKK+C4geC4o+C4sOC4lOC4suC4lAor4LiB4Lij4Liw4LiU4Liy4LiU4LiC4Liy4LinCivguIHguKPguLDguJTguLLguJkKK+C4geC4o+C4sOC4lOC4suC4qQor4LiB4Lij4Liw4LiU4Liy4Lip4LmA4LiX4LioCivguIHguKPguLDguJTguLPguIHguKPguLDguJTguYjguLLguIcKK+C4geC4o+C4sOC4lOC4tOC4gQor4LiB4Lij4Liw4LiU4Li04LmI4LiHCivguIHguKPguLDguJTguLTguYnguIcKK+C4geC4o+C4sOC4lOC4tOC5iOC4h+C4l+C4reC4hwor4LiB4Lij4Liw4LiU4Li04Lia4LmGCivguIHguKPguLDguJTguLXguYgKK+C4geC4o+C4sOC4lOC4teC5ieC4geC4o+C4sOC5gOC4lOC4teC4ouC4oQor4LiB4Lij4Liw4LiU4Li14LmI4Lir4Lih4LmJ4LitCivguIHguKPguLDguJTguLbguIcKK+C4geC4o+C4sOC4lOC4t+C4mgor4LiB4Lij4Liw4LiU4Li4CivguIHguKPguLDguJTguLjguIHguIHguKPguLDguJTguLTguIEKK+C4geC4o+C4sOC4lOC4uOC5ieC4h+C4geC4o+C4sOC4lOC4tOC5ieC4hwor4LiB4Lij4Liw4LiU4Li44Lia4LmGCivguIHguKPguLDguJTguLjguJrguIHguKPguLDguJTguLTguJoKK+C4geC4o+C4sOC4lOC4uOC4oQor4LiB4Lij4Liw4LiU4Li54LiBCivguIHguKPguLDguYDguJTguYnguIcKK+C4geC4o+C4sOC5gOC4lOC5h+C4mQor4LiB4Lij4Liw4LmA4LiU4LmJ4LiyCivguIHguKPguLDguYDguJTguLLguLAKK+C4geC4o+C4sOC5gOC4lOC4tOC4lAor4LiB4Lij4Liw4LmA4LiU4Li14LmJ4LiiCivguIHguKPguLDguYDguJTguLXguKLguJQKK+C4geC4o+C4sOC5gOC4lOC4teC4ouC4oQor4LiB4Lij4Liw4LmA4LiU4Li14LmJ4Lii4LihCivguIHguKPguLDguYDguJTguLfguK3guIEKK+C4geC4o+C4sOC5gOC4lOC4t+C5iOC4reC4hwor4LiB4Lij4Liw4LmB4LiU4LmH4LiB4LmGCivguIHguKPguLDguYHguJTguYnguIcKK+C4geC4o+C4sOC5geC4lOC5ieC5geC4o+C5iAor4LiB4Lij4Liw4LmB4LiU4LmI4Lin4LmGCivguIHguKPguLDguYHguJTguLAKK+C4geC4o+C4sOC5guC4lOC4gQor4LiB4Lij4Liw4LmC4LiU4LiHCivguIHguKPguLDguYLguJTguIfguYHguJTguIcKK+C4geC4o+C4sOC5guC4lOC4lAor4LiB4Lij4Liw4LmC4LiU4LiZCivguIHguKPguLDguYPguJQKK+C4geC4o+C4sOC5hOC4lAor4LiB4Lij4Liw4LiV4Lij4LiB4LiB4Lij4Liw4LiV4Lij4LizCivguIHguKPguLDguJXguKPguYnguK0KK+C4geC4o+C4sOC4leC4o+C4seC4mgor4LiB4Lij4Liw4LiV4Lij4Liy4LiBCivguIHguKPguLDguJXguKPguLMKK+C4geC4o+C4sOC4leC4o+C4uOC4lAor4LiB4Lij4Liw4LiV4Lij4Li44LihCivguIHguKPguLDguJXguYnguKfguKHguIHguKPguLDguYDguJXguLXguYnguKLguKEKK+C4geC4o+C4sOC4leC5ieC4rQor4LiB4Lij4Liw4LiV4LmI4Lit4LiH4LiB4Lij4Liw4LmB4LiV4LmI4LiHCivguIHguKPguLDguJXguYrguK3guJoKK+C4geC4o+C4sOC4leC5iOC4reC4oSB7IOC4geC4uuC4o+C4sOC4leC5iOC4reC4oSB9CivguIHguKPguLDguJXguYnguK3guKLguJXguLXguKfguLTguJQKK+C4geC4o+C4sOC4leC4seC4gQor4LiB4Lij4Liw4LiV4Lix4LmJ4LinCivguIHguKPguLDguJXguLLguIEKK+C4geC4o+C4sOC4leC5iuC4suC4gQor4LiB4Lij4Liw4LiV4LmI4Liy4LiiCivguIHguKPguLDguJXguLTguIEKK+C4geC4o+C4sOC4leC4tOC5ieC4hwor4LiB4Lij4Liw4LiV4Li04LmK4LiUCivguIHguKPguLDguJXguLTguJoKK+C4geC4o+C4sOC4leC4t+C4reC4o+C4t+C4reC4o+C5ieC4mQor4LiB4Lij4Liw4LiV4Li44LiBCivguIHguKPguLDguJXguLjguIHguIHguKPguLDguJXguLTguIEKK+C4geC4o+C4sOC4leC4uOC5ieC4h+C4geC4o+C4sOC4leC4tOC5ieC4hwor4LiB4Lij4Liw4LiV4Li44LmI4LiZCivguIHguKPguLDguJXguLjguYnguJkKK+C4geC4o+C4sOC4leC4ueC4mgor4LiB4Lij4Liw4LmA4LiV4LiHCivguIHguKPguLDguYDguJXguYfguJkKK+C4geC4o+C4sOC5gOC4leC4reC4sAor4LiB4Lij4Liw4LmA4LiV4LmI4LiyCivguIHguKPguLDguYDguJXguLLguLAKK+C4geC4o+C4sOC5gOC4leC4suC4sOC4geC4o+C4sOC5geC4leC4sAor4LiB4Lij4Liw4LmA4LiV4Li14LmJ4Lii4LihCivguIHguKPguLDguYDguJXguLfguYnguK3guIcKK+C4geC4o+C4sOC5geC4lQor4LiB4Lij4Liw4LmB4LiV4LmI4LiHCivguIHguKPguLDguYHguJXguYHguJXguYnguYHguKfguYnguJQKK+C4geC4o+C4sOC5geC4leC4p+C4seC4mgor4LiB4Lij4Liw4LmB4LiV4LiwCivguIHguKPguLDguYLguJXguIHguIHguKPguLDguJXguLLguIEKK+C4geC4o+C4sOC5guC4leC4mQor4LiB4Lij4Liw4LmE4LiV4LijCivguIHguKPguLDguJbguJQKK+C4geC4o+C4sOC4luC4reC4mgor4LiB4Lij4Liw4LiW4Lix4LmI4LinCivguIHguKPguLDguJbguLLguIcKK+C4geC4o+C4sOC4luC4tOC4gQor4LiB4Lij4Liw4LiW4Li04LiZCivguIHguKPguLDguJbguLbguIEKK+C4geC4o+C4sOC5gOC4luC4tOC4mgor4LiB4Lij4Liw4LmC4LiW4LiZCivguIHguKPguLDguJfguIEKK+C4geC4o+C4sOC4l+C4hwor4LiB4Lij4Liw4LiX4LiH4Lil4Liy4LiiCivguIHguKPguLDguJfguJQKK+C4geC4o+C4sOC4l+C4mgor4LiB4Lij4Liw4LiX4Lij4Lin4LiHCivguIHguKPguLDguJfguKfguKIgeyDguIHguLrguKPguLDguJfguKfguKIgfQor4LiB4Lij4Liw4LiX4Lit4LiBCivguIHguKPguLDguJfguYnguK3guJkKK+C4geC4o+C4sOC4l+C5iOC4reC4meC4geC4o+C4sOC5geC4l+C5iOC4mQor4LiB4Lij4Liw4LiX4LmI4Lit4LihCivguIHguKPguLDguJfguYnguK3guKHguIHguKPguLDguYHguJfguYnguKEKK+C4geC4o+C4sOC4l+C4sAor4LiB4Lij4Liw4LiX4Lix4LmI4LiHCivguIHguKPguLDguJfguLHguYjguIfguJXguLTguJQKK+C4geC4o+C4sOC4l+C4seC4mQor4LiB4Lij4Liw4LiX4Lix4LmJ4LiZCivguIHguKPguLDguJfguLIKK+C4geC4o+C4sOC4l+C4suC4iuC4suC4ogor4LiB4Lij4Liw4LiX4Liy4LiiCivguIHguKPguLDguJfguLLguKLguYDguKvguLTguJkKK+C4geC4o+C4sOC4l+C4suC4quC4tQor4LiB4Lij4Liw4LiX4Liy4Lir4Lit4LiHCivguIHguKPguLDguJfguLMKK+C4geC4o+C4sOC4l+C4tOC4geC4geC4o+C4sOC4l+C4p+C4ogor4LiB4Lij4Liw4LiX4Li04LiHCivguIHguKPguLDguJfguLbguIcKK+C4geC4o+C4sOC4l+C4t+C4mgor4LiB4Lij4Liw4LiX4Li4CivguIHguKPguLDguJfguLjguIcKK+C4geC4o+C4sOC4l+C4uOC5ieC4hwor4LiB4Lij4Liw4LiX4Li44LiH4Lil4Liy4LiiCivguIHguKPguLDguJfguLjguIfguKvguKHguLLguJrguYnguLIKK+C4geC4o+C4sOC4l+C4uOC4h+C5gOC4q+C4pwor4LiB4Lij4Liw4LiX4Li44LmI4LihCivguIHguKPguLDguJfguLjguYjguKHguILguLXguYnguKvguKHguLkKK+C4geC4o+C4sOC4l+C4uOC5iOC4oeC4meC4sgor4LiB4Lij4Liw4LiX4Li44LmI4Lih4Lir4Lih4Li5CivguIHguKPguLDguJfguLnguYkKK+C4geC4o+C4sOC5gOC4l+C5iAor4LiB4Lij4Liw4LmA4LiX4Li14Lii4LiaCivguIHguKPguLDguYDguJfguLXguKLguKEKK+C4geC4o+C4sOC5gOC4l+C4t+C4reC4mQor4LiB4Lij4Liw4LmA4LiX4Li34LmJ4Lit4LihCivguIHguKPguLDguYHguJfguIEKK+C4geC4o+C4sOC5geC4l+C5iOC4mQor4LiB4Lij4Liw4LmB4LiX4LmJ4LihCivguIHguKPguLDguYHguJfguLAKK+C4geC4o+C4sOC5hOC4l+C4iuC4suC4ogor4LiB4Lij4Liw4LiZ4LiBCivguIHguKPguLDguJnguYjguK3guIcKK+C4geC4o+C4sOC4meC4seC5ieC4mQor4LiB4Lij4Liw4LiZ4Li14LmJCivguIHguKPguLDguYLguJnguYnguJkKK+C4geC4o+C4sOC5hOC4mQor4LiB4Lij4Liw4Lia4LiBCivguIHguKPguLDguJrguIHguITguLLguKIKK+C4geC4o+C4sOC4muC4lgor4LiB4Lij4Liw4Lia4Lin4LiZCivguIHguKPguLDguJrguKfguKIKK+C4geC4o+C4sOC4muC4p+C4owor4LiB4Lij4Liw4Lia4Lit4LiBCivguIHguKPguLDguJrguK3guIHguYDguKrguLXguKLguIcKK+C4geC4o+C4sOC4muC4reC4hwor4LiB4Lij4Liw4Lia4Lit4LiH4LiB4Lix4LiZCivguIHguKPguLDguJrguK3guIfguYDguJ7guIrguKMKK+C4geC4o+C4sOC4muC4reC4h+C4o+C4suC4q+C4uQor4LiB4Lij4Liw4Lia4LiwCivguIHguKPguLDguJrguLHguJQKK+C4geC4o+C4sOC4muC4seC5ieC4p+C4geC4o+C4sOC5gOC4muC4teC5ieC4ogor4LiB4Lij4Liw4Lia4LmI4LiyCivguIHguKPguLDguJrguYnguLIKK+C4geC4o+C4sOC4muC4suC4gQor4LiB4Lij4Liw4Lia4Liy4LiiCivguIHguKPguLDguJrguLLguKUgeyDguIHguLrguKPguLDguJrguLLguJkgfQor4LiB4Lij4Liw4Lia4Li0CivguIHguKPguLDguJrguLTguYnguIcKK+C4geC4o+C4sOC4muC4tOC4lAor4LiB4Lij4Liw4Lia4Li04LilCivguIHguKPguLDguJrguLXguYgKK+C4geC4o+C4sOC4muC4t+C4rQor4LiB4Lij4Liw4Lia4Li44LiHCivguIHguKPguLDguJrguLjguKEKK+C4geC4o+C4sOC4muC4uOC5iOC4oeC4geC4o+C4sOC4muC5iOC4suC4oQor4LiB4Lij4Liw4Lia4Li54LmJ4LiB4Lij4Liw4Lia4Li14LmJCivguIHguKPguLDguJrguLnguJkKK+C4geC4o+C4sOC4muC4ueC4owor4LiB4Lij4Liw4LmA4Lia4LiHCivguIHguKPguLDguYDguJrguI0KK+C4geC4o+C4sOC5gOC4muC5h+C4lOC4geC4o+C4sOC4muC4p+C4mQor4LiB4Lij4Liw4LmA4Lia4LiZCivguIHguKPguLDguYDguJrguLIKK+C4geC4o+C4sOC5gOC4muC4tOC4gQor4LiB4Lij4Liw4LmA4Lia4Li14LmJ4LiiCivguIHguKPguLDguYDguJrguLXguKLguJQKK+C4geC4o+C4sOC5gOC4muC4teC4ouC4mQor4LiB4Lij4Liw4LmA4Lia4Li34LmJ4Lit4LiHCivguIHguKPguLDguYDguJrguLfguYnguK3guIfguJbguYnguKfguKIKK+C4geC4o+C4sOC5geC4muC5iAor4LiB4Lij4Liw4LmB4Lia4LiBCivguIHguKPguLDguYHguJrguIHguIfguLIKK+C4geC4o+C4sOC5geC4muC4sAor4LiB4Lij4Liw4LmC4Lia4LihCivguIHguKPguLDguJvguKHguIHguKPguLDguJvguLMKK+C4geC4o+C4sOC4m+C4oeC4geC4o+C4sOC5gOC4m+C4sgor4LiB4Lij4Liw4Lib4Lij4Lit4LiBCivguIHguKPguLDguJvguKPguK3guIHguKfguYjguLLguKcKK+C4geC4o+C4sOC4m+C4o+C4teC5ieC4geC4o+C4sOC5gOC4m+C4o+C5iOC4sgor4LiB4Lij4Liw4Lib4Lit4LiBCivguIHguKPguLDguJvguYnguK3guIHguKPguLDguYHguJvguYkKK+C4geC4o+C4sOC4m+C5iOC4reC4hwor4LiB4Lij4Liw4Lib4LmL4Lit4LiHCivguIHguKPguLDguJvguK3guJTguIHguKPguLDguYHguJvguJQKK+C4geC4o+C4sOC4m+C5i+C4reC4q+C4peC4rQor4LiB4Lij4Liw4Lib4Lix4LmJ4Lin4LiB4Lij4Liw4LmA4Lib4Li14LmJ4LiiCivguIHguKPguLDguJvguYjguLMKK+C4geC4o+C4sOC4m+C4tOC5iOC4oQor4LiB4Lij4Liw4Lib4Li44LiBCivguIHguKPguLDguJvguLjguYjguKEKK+C4geC4o+C4sOC4m+C4uOC5iOC4oeC4geC4o+C4sOC4m+C5iOC4swor4LiB4Lij4Liw4Lib4Li44LmI4Lih4LiB4Lij4Liw4Lib4Li04LmI4LihCivguIHguKPguLDguYDguJvguLIKK+C4geC4o+C4sOC5gOC4m+C5i+C4sgor4LiB4Lij4Liw4LmA4Lib4Liy4LiwCivguIHguKPguLDguYDguJvguLXguYnguKIgeyDguIHguLrguKPguLDguYDguJvguLXguYnguKIgfQor4LiB4Lij4Liw4LmB4Lib4LmJCivguIHguKPguLDguYHguJvguJQKK+C4geC4o+C4sOC5guC4m+C4gQor4LiB4Lij4Liw4LmC4Lib4Lij4LiHCivguIHguKPguLDguYLguJvguKPguIfguJfguK3guIcKK+C4geC4o+C4sOC4nOC4oQor4LiB4Lij4Liw4Lic4Lil4Liy4LihCivguIHguKPguLDguJzguKXguLXguIHguKPguLDguJzguKXguLLguKEKK+C4geC4o+C4sOC4nOC4suC4mQor4LiB4Lij4Liw4Lic4Li14LiBCivguIHguKPguLDguJ7guKPguKfguJkKK+C4geC4o+C4sOC4nuC4o+C4tOC5ieC4oQor4LiB4Lij4Liw4Lie4Lit4LiBCivguIHguKPguLDguJ7guK3guIHguKfguLHguKcKK+C4geC4o+C4sOC4nuC4reC4hwor4LiB4Lij4Liw4Lie4LmJ4Lit4LihCivguIHguKPguLDguJ7guLHguIEKK+C4geC4o+C4sOC4nuC4seC4hwor4LiB4Lij4Liw4Lie4Lix4LiH4LmA4Lir4Li04LijCivguIHguKPguLDguJ7guLHguIfguYLguKvguKEKK+C4geC4o+C4sOC4nuC4seC4lAor4LiB4Lij4Liw4Lie4Lix4LiU4LmB4Lih4LmI4Lih4LmI4Liy4LiiCivguIHguKPguLDguJ7guLHguJXguKMKK+C4geC4o+C4sOC4nuC4seC4mQor4LiB4Lij4Liw4Lie4Lix4LmI4LiZCivguIHguKPguLDguJ7guLIKK+C4geC4o+C4sOC4nuC4suC4gSB7IOC4geC4uuC4o+C4sOC4nuC4suC4gSB9CivguIHguKPguLDguJ7guLXguYkKK+C4geC4o+C4sOC4nuC4t+C4rQor4LiB4Lij4Liw4Lie4Li44LmJ4LiHCivguIHguKPguLDguJ7guLjguYjguKEKK+C4geC4o+C4sOC5gOC4nuC4peC4tOC4qAor4LiB4Lij4Liw4LmA4Lie4Liy4LiwCivguIHguKPguLDguYDguJ7guLLguLDguJvguKXguLIKK+C4geC4o+C4sOC5gOC4nuC4tOC4hwor4LiB4Lij4Liw4LmA4Lie4Li34LmI4Lit4LihCivguIHguKPguLDguYHguJ7guIcKK+C4geC4o+C4sOC5geC4nuC5ieC4hwor4LiB4Lij4Liw4Lif4Lix4LiU4LiB4Lij4Liw4LmA4Lif4Li14Lii4LiUCivguIHguKPguLDguJ/guLLguKIKK+C4geC4o+C4sOC4n+C4ueC4oeC4geC4o+C4sOC4n+C4suC4ogor4LiB4Lij4Liw4LmA4Lif4Li14Lii4LiUCivguIHguKPguLDguKHguKUKK+C4geC4o+C4sOC4oeC4reC4mgor4LiB4Lij4Liw4Lih4Lit4Lih4LiB4Lij4Liw4LmB4Lih4LihCivguIHguKPguLDguKHguLHguIcKK+C4geC4o+C4sOC4oeC4seC4mQor4LiB4Lij4Liw4Lih4Li04LiU4LiB4Lij4Liw4LmA4Lih4Li14LmJ4Lii4LiZCivguIHguKPguLDguKHguLbguJkKK+C4geC4o+C4sOC4oeC4uOC4lwor4LiB4Lij4Liw4LmA4Lih4Liy4LiwCivguIHguKPguLDguYDguKHguLXguYnguKLguJkKK+C4geC4o+C4sOC5geC4oeC4oQor4LiB4Lij4Liw4Lii4LmI4Lit4LiHCivguIHguKPguLDguKLguYjguK3guIfguIHguKPguLDguYHguKLguYjguIcKK+C4geC4o+C4sOC4ouC5iOC4reC4mQor4LiB4Lij4Liw4Lii4LmI4Lit4LihCivguIHguKPguLDguKLguLIKK+C4geC4o+C4sOC4ouC4suC4hwor4LiB4Lij4Liw4Lii4Liy4LiI4LiBCivguIHguKPguLDguKLguLLguJQKK+C4geC4o+C4sOC4ouC4suC4q+C4h+C4seC4mQor4LiB4Lij4Liw4Lii4Li04LiBCivguIHguKPguLDguKLguLTguYnguKHguIHguKPguLDguKLguYjguK3guIcKK+C4geC4o+C4sOC4ouC4tuC4geC4geC4o+C4sOC4ouC4t+C4rQor4LiB4Lij4Liw4Lii4Li24LiU4LiB4Lij4Liw4Lii4Liy4LiUCivguIHguKPguLDguYDguKLguYnguK3guIHguKPguLDguYHguKvguKLguYjguIcKK+C4geC4o+C4sOC5geC4ouC5iOC4hwor4LiB4Lij4Liw4Lij4Lit4LiBCivguIHguKPguLDguKPguK3guIHguJnguYnguLPguILguYnguLLguKcKK+C4geC4o+C4sOC5gOC4o+C4teC4ouC4mQor4LiB4Lij4Liw4LmC4Lij4LiB4LiZ4LmJ4Liz4LiC4LmJ4Liy4LinCivguIHguKPguLDguYLguKPguIHguYPguKvguI3guYgKK+C4geC4o+C4sOC5hOC4owor4LiB4Lij4Liw4Lil4LiUCivguIHguKPguLDguKXguJoKK+C4geC4o+C4sOC4peC4reC4gQor4LiB4Lij4Liw4Lil4Lit4LihCivguIHguKPguLDguKXguLDguKvguKXguYjguLMKK+C4geC4o+C4sOC4peC4seC4lAor4LiB4Lij4Liw4Lil4Lix4LiaCivguIHguKPguLDguKXguLHguKHguJ7guKMKK+C4geC4o+C4sOC4peC4sgor4LiB4Lij4Liw4Lil4Liy4LiB4Liy4LijCivguIHguKPguLDguKXguLLguKLguIHguKPguLDguKXguK3guIEKK+C4geC4o+C4sOC4peC4swor4LiB4Lij4Liw4Lil4Liz4Lie4LijCivguIHguKPguLDguKXguLPguJ7guLHguIEKK+C4geC4o+C4sOC4peC4s+C4nuC4uOC4gQor4LiB4Lij4Liw4Lil4Li04LiHCivguIHguKPguLDguKXguLUKK+C4geC4o+C4sOC4peC4tuC4hwor4LiB4Lij4Liw4Lil4Li44Lih4Lie4Liy4LiHCivguIHguKPguLDguKXguLjguKHguJ7guLjguIEKK+C4geC4o+C4sOC4peC4uOC4oeC4nuC4uQor4LiB4Lij4Liw4Lil4Li54LiZCivguIHguKPguLDguKXguLnguYjguJnguYwKK+C4geC4o+C4sOC5gOC4peC5h+C4mQor4LiB4Lij4Liw4LmA4Lil4Li14Lii4LiUCivguIHguKPguLDguYDguKXguLfguK3guIEKK+C4geC4o+C4sOC5guC4peC4hwor4LiB4Lij4Liw4Lin4LiZCivguIHguKPguLDguKfguLHguJQKK+C4geC4o+C4sOC4p+C5iOC4sgor4LiB4Lij4Liw4Lin4Liy4LiUCivguIHguKPguLDguKfguLLguJkKK+C4geC4o+C4sOC4p+C4suC4ogor4LiB4Lij4Liw4Lin4Li04LiZCivguIHguKPguLDguKfguLUKK+C4geC4o+C4sOC4p+C4teC4geC4o+C4sOC4p+C4suC4lAor4LiB4Lij4Liw4Lin4Li54LiU4LiB4Lij4Liw4Lin4Liy4LiUCivguIHguKPguLDguYDguKfguJkKK+C4geC4o+C4sOC5gOC4p+C4ouC4geC4o+C4sOC4p+C4suC4ogor4LiB4Lij4Liw4LmB4Lin4LiZCivguIHguKPguLDguYLguKfguKLguIHguKPguLDguKfguLLguKIKK+C4geC4o+C4sOC4qOC4gQor4LiB4Lij4Liw4Lio4Lix4LiiCivguIHguKPguLDguKnguLHguJXguKPguLTguKLguYwKK+C4geC4o+C4sOC4qeC4seC4leC4o+C4tQor4LiB4Lij4Liw4Lip4Lix4LiiCivguIHguKPguLDguKnguLLguJvguJPguYwKK+C4geC4o+C4sOC4qeC4tOC4owor4LiB4Lij4Liw4LmA4Lip4LihCivguIHguKPguLDguYDguKnguLXguKLguKMKK+C4geC4o+C4sOC4quC4hwor4LiB4Lij4Liw4Liq4LiZCivguIHguKPguLDguKrguJoKK+C4geC4o+C4sOC4quC4oQor4LiB4Lij4Liw4Liq4Lij4Lin4LilCivguIHguKPguLDguKrguKPguYnguK3guKIKK+C4geC4o+C4sOC4quC4p+C4mQor4LiB4Lij4Liw4Liq4Lin4LiiCivguIHguKPguLDguKrguK3guJoKK+C4geC4o+C4sOC4quC4sAor4LiB4Lij4Liw4Liq4Lix4LiHCivguIHguKPguLDguKrguLHguJkKK+C4geC4o+C4sOC4quC4seC4muC4geC4o+C4sOC4quC5iOC4suC4ogor4LiB4Lij4Liw4Liq4LiyCivguIHguKPguLDguKrguLLguJnguJXguLTguYwKK+C4geC4o+C4sOC4quC4suC4mgor4LiB4Lij4Liw4Liq4Liy4LiiCivguIHguKPguLDguKrguYjguLLguKIKK+C4geC4o+C4sOC4quC4tOC4meC4mOC4uAor4LiB4Lij4Liw4Liq4Li34LitCivguIHguKPguLDguKrguLjguIfguIHguKPguLDguKrguLTguIcKK+C4geC4o+C4sOC4quC4uOC4mQor4LiB4Lij4Liw4Liq4Li54LiX4LiY4Li04LmMCivguIHguKPguLDguKrguLnguJoKK+C4geC4o+C4sOC5gOC4quC4lAor4LiB4Lij4Liw4LmA4Liq4LmH4LiZ4LiB4Lij4Liw4Liq4Liy4LiiCivguIHguKPguLDguYDguKrguYjguLIKK+C4geC4o+C4sOC5gOC4quC4suC4sOC4geC4o+C4sOC5geC4quC4sAor4LiB4Lij4Liw4LmA4Liq4Li14Lii4LiZCivguIHguKPguLDguYDguKrguLXguKLguKMKK+C4geC4o+C4sOC5gOC4quC4t+C4reC4geC4geC4o+C4sOC4quC4mQor4LiB4Lij4Liw4LmB4LiqCivguIHguKPguLDguYHguKrguIcKK+C4geC4o+C4sOC5geC4quC4sCB7IOC4geC4uuC4o+C4sOC5geC4quC4sCB9CivguIHguKPguLDguYLguKrguIcKK+C4geC4o+C4sOC5hOC4qgor4LiB4Lij4Liw4Lir4LiH4LmI4Lit4LiHCivguIHguKPguLDguKvguJkKK+C4geC4o+C4sOC4q+C4meC4gQor4LiB4Lij4Liw4Lir4LiZ4LiB4LiB4Li04LiZ4Lij4Li1CivguIHguKPguLDguKvguJnguIHguJnguKTguKHguLTguJUKK+C4geC4o+C4sOC4q+C4meC4geC4meC4suC4o+C4tQor4LiB4Lij4Liw4Lir4LiZ4LmI4Lit4LiHCivguIHguKPguLDguKvguJnguLLguIEKK+C4geC4o+C4sOC4q+C4meC5iOC4swor4LiB4Lij4Liw4Lir4Lih4Lin4LiUCivguIHguKPguLDguKvguKHguK3guJoKK+C4geC4o+C4sOC4q+C4oeC5iOC4reC4oQor4LiB4Lij4Liw4Lir4Lih4Lix4LmI4LiHCivguIHguKPguLDguKvguKHguYjguLIKK+C4geC4o+C4sOC4q+C4oeC4tOC4lAor4LiB4Lij4Liw4Lir4Lih4Li04LiaCivguIHguKPguLDguKvguKHguLjguJTguIHguKPguLDguKvguKHguLTguJQKK+C4geC4o+C4sOC4q+C4oeC4uOC5iOC4mQor4LiB4Lij4Liw4Lir4Lih4Li44LiaCivguIHguKPguLDguKvguKLguYjguIcKK+C4geC4o+C4sOC4q+C4ouC4lAor4LiB4Lij4Liw4Lir4Lii4LiaCivguIHguKPguLDguKvguKLguYjguK3guJkKK+C4geC4o+C4sOC4q+C4ouC5iOC4reC4oQor4LiB4Lij4Liw4Lir4Lii4LiwCivguIHguKPguLDguKvguKLguLHguIcKK+C4geC4o+C4sOC4q+C4ouC4seC4mgor4LiB4Lij4Liw4Lir4Lii4Li04LmI4LihCivguIHguKPguLDguKvguKPguK3guJQKK+C4geC4o+C4sOC4q+C4o+C4tOC5iOC4hwor4LiB4Lij4Liw4Lir4Lin4LiZCivguIHguKPguLDguKvguKfguLHguJQKK+C4geC4o+C4sOC4q+C4p+C4seC4lOC5gOC4geC4peC5ieC4sgor4LiB4Lij4Liw4Lir4Lin4LmI4LiyCivguIHguKPguLDguKvguK3guIcKK+C4geC4o+C4sOC4q+C4seC4hwor4LiB4Lij4Liw4Lir4Lix4LiUCivguIHguKPguLDguKvguLLguIcgeyDguIHguLrguKPguLDguKvguLLguIcgfQor4LiB4Lij4Liw4Lir4Liy4LiiCivguIHguKPguLDguKvguLbguKEKK+C4geC4o+C4sOC4q+C4tuC5iOC4oQor4LiB4Lij4Liw4Lir4Li34LiU4LiB4Lij4Liw4Lir4Lit4LiaCivguIHguKPguLDguYDguKvguYfguJkKK+C4geC4o+C4sOC5gOC4q+C4meC5h+C4iAor4LiB4Lij4Liw4LmA4Lir4LiZ4Li14Lii4LiUCivguIHguKPguLDguYDguKvguKHguYfguJTguIHguKPguLDguYDguKvguKHguLXguKLguJQKK+C4geC4o+C4sOC5gOC4q+C4oeC5h+C4lOC4geC4o+C4sOC5geC4q+C4oeC5iAor4LiB4Lij4Liw4LmA4Lir4Lih4LmI4LiZCivguIHguKPguLDguYDguKvguKHguYjguLIKK+C4geC4o+C4sOC5gOC4q+C4peC4teC4ouC4gQor4LiB4Lij4Liw4LmA4Lir4Lin4LmI4LiyCivguIHguKPguLDguYDguKvguYjguK0KK+C4geC4o+C4sOC5gOC4q+C4tOC4oQor4LiB4Lij4Liw4LmA4Lir4Li14LmJ4Lii4LiZ4LiB4Lij4Liw4Lir4Li34Lit4Lij4Li34LitCivguIHguKPguLDguYHguKvguJfguK3guIcKK+C4geC4o+C4sOC5geC4q+C4mQor4LiB4Lij4Liw4LmB4Lir4LiZ4LmICivguIHguKPguLDguYHguKvguJnguJoKK+C4geC4o+C4sOC5geC4q+C4meC4sAor4LiB4Lij4Liw4LmB4Lir4Lih4LiaCivguIHguKPguLDguYHguKvguKHguYjguKcKK+C4geC4o+C4sOC5geC4q+C4ouC5iOC4hwor4LiB4Lij4Liw4LmB4Lir4Lij4LmI4LihCivguIHguKPguLDguYHguKvguKXguYjguIcKK+C4geC4o+C4sOC5guC4q+C5iQor4LiB4Lij4Liw4LmC4Lir4LiZ4LiUCivguIHguKPguLDguYLguKvguKEKK+C4geC4o+C4sOC5guC4q+C4ogor4LiB4Lij4Liw4LmC4Lir4Lii4LmI4LiHCivguIHguKPguLDguK3guYjguKfguJkKK+C4geC4o+C4sOC4reC4p+C4pQor4LiB4Lij4Liw4Lit4LmJ4Lit4LiB4Lij4Liw4LmB4Lit4LmJCivguIHguKPguLDguK3guK3guJTguIHguKPguLDguYHguK3guJQKK+C4geC4o+C4sOC4reC4reC4mgor4LiB4Lij4Liw4Lit4Lit4LihCivguIHguKPguLDguK3guYnguK3guKHguIHguKPguLDguYHguK3guYnguKEKK+C4geC4o+C4sOC4reC4reC4oeC4meC5ieC4swor4LiB4Lij4Liw4Lit4Lix4LiBCivguIHguKPguLDguK3guLHguIHguIHguKPguLDguK3guYjguKfguJkKK+C4geC4o+C4sOC4reC4seC4geC4geC4o+C4sOC5hOC4rQor4LiB4Lij4Liw4Lit4Lix4LmJ4Lin4LmB4LiX4LiH4LiE4Lin4Liy4LiiCivguIHguKPguLDguK3guYnguLIKK+C4geC4o+C4sOC4reC4suC4mQor4LiB4Lij4Liw4Lit4Li04LiUCivguIHguKPguLDguK3guLTguJTguIHguKPguLDguYDguK3guLfguYnguK3guJkKK+C4geC4o+C4sOC4reC4tuC4gQor4LiB4Lij4Liw4Lit4Li24LiB4LiB4Lij4Liw4Lit4Lix4LiBCivguIHguKPguLDguK3guLbguJQKK+C4geC4o+C4sOC4reC4t+C4lAor4LiB4Lij4Liw4Lit4Li4CivguIHguKPguLDguK3guLjguIEKK+C4geC4o+C4sOC5gOC4reC4mgor4LiB4Lij4Liw4LmA4Lit4LiyCivguIHguKPguLDguYDguK3guLTguIEKK+C4geC4o+C4sOC5gOC4reC4tOC4mgor4LiB4Lij4Liw4LmB4Lit4LmJCivguIHguKPguLDguYHguK3guIEKK+C4geC4o+C4sOC5geC4reC4lAor4LiB4Lij4Liw4LmB4Lit4LiaCivguIHguKPguLDguYHguK3guKEKK+C4geC4o+C4sOC5geC4reC5ieC4oQor4LiB4Lij4Liw4LmE4LitCivguIHguKPguLHguIEKK+C4geC4o+C4seC4geC4guC4tQor4LiB4Lij4Lix4LiHCivguIHguKPguLHguIrguIHguLLguKIKK+C4geC4o+C4seC4k+C4keC5jAor4LiB4Lij4Lix4LiT4Lii4LmMCivguIHguKPguLHguJkKK+C4geC4o+C4seC4mgor4LiB4Lij4Lix4LihCivguIHguKPguLLguIEKK+C4geC4o+C4suC4hwor4LiB4Lij4LmI4Liy4LiHCivguIHguKPguLLguJQKK+C4geC4o+C4suC4lOC5gOC4geC4o+C4teC5ieC4ouC4pwor4LiB4Lij4Liy4LiU4Lin4LiHCivguIHguKPguLLguJkKK+C4geC4o+C5ieC4suC4mQor4LiB4Lij4Liy4LiaCivguIHguKPguLLguJ8KK+C4geC4o+C4suC4oQor4LiB4Lij4Liy4Lih4Lie4Lil4Li5CivguIHguKPguLLguKIKK+C4geC4o+C5iOC4suC4ogor4LiB4Lij4Liy4LilCivguIHguKPguLLguKcKK+C4geC4o+C5ieC4suC4pwor4LiB4Lij4Liy4Lin4LiU4LmI4Liy4LiHCivguIHguKPguLLguKfguKPguLnguJQKK+C4geC4o+C4suC4quC4tOC4gQor4LiB4Lij4LizCivguIHguKPguYjguLMKK+C4geC4o+C5iOC4s+C4geC4o+C4uOC5iOC4mQor4LiB4Lij4Li04LiBCivguIHguKPguLTguYrguIEKK+C4geC4o+C4tOC4geC4geC4o+C4tOC4pwor4LiB4Lij4Li04LiB4LiB4Lij4Li1CivguIHguKPguLTguYjguIcKK+C4geC4o+C4tOC5iuC4hwor4LiB4Lij4Li04LiH4LiB4Lij4Li04LinCivguIHguKPguLTguYnguIfguIHguKPguLTguYnguKcKK+C4geC4o+C4tOC4igor4LiB4Lij4Li04LiT4Li1CivguIHguKPguLTguJXguKIKK+C4geC4o+C4tOC4mQor4LiB4Lij4Li04LiZ4Li1CivguIHguKPguLTguJoKK+C4geC4o+C4tOC4oQor4LiB4Lij4Li04LmI4LihCivguIHguKPguLTguKLguLIKK+C4geC4o+C4tOC4pwor4LiB4Lij4Li04LmJ4LinCivguIHguKPguLUKK+C4geC4o+C4teC4keC4sgor4LiB4Lij4Li14LiUCivguIHguKPguLXguYrguJQKK+C4geC4o+C4teC4mOC4sgor4LiB4Lij4Li14LipCivguIHguKPguLXguKoKK+C4geC4o+C4tuC4hwor4LiB4Lij4Li4CivguIHguKPguLjguIEKK+C4geC4o+C4uOC4geC4geC4o+C4ueC5igor4LiB4Lij4Li44LiHCivguIHguKPguLjguYnguIfguIHguKPguLTguYjguIcKK+C4geC4o+C4uOC4h+C5gOC4guC4oeC4sgor4LiB4Lij4Li44LiH4Lie4Liy4Lil4Li1CivguIHguKPguLjguJMKK+C4geC4o+C4uOC4k+C4sgor4LiB4Lij4Li44LiZCivguIHguKPguLjguYjguJkKK+C4geC4o+C4uOC4mgor4LiB4Lij4Li44LmI4LihCivguIHguKPguLjguYnguKHguIHguKPguLTguYjguKEKK+C4geC4o+C4uOC4ogor4LiB4Lij4Li44Lii4LmA4LiB4Lij4Li14Lii4LinCivguIHguKPguLkKK+C4geC4o+C4ueC4lAor4LiB4Lij4Li54LihCivguIHguYDguKPguJPguLgKK+C4geC5gOC4o+C4meC4l+C4owor4LiB4LmA4Lij4LiZ4LiX4Lij4LmMCivguIHguKTguIoKK+C4geC4pOC4lOC4ouC4suC5gOC4geC4teC4ouC4o+C4kwor4LiB4Lik4LiU4LiyCivguIHguKTguJTguLLguIHguLLguKMKK+C4geC4pOC4lOC4suC4reC4seC4jeC4iuC4peC4tQor4LiB4Lik4LiU4Li0CivguIHguKTguJTguLXguIHguLIKK+C4geC4pOC4lQor4LiB4Lik4LiV4LiB4LiyCivguIHguKTguJXguKLguI7guLXguIHguLIKK+C4geC4pOC4leC4tOC4geC4sgor4LiB4Lik4LioCivguIHguKTguYLguKjguJfguKMKK+C4geC4pOC4qeC4juC4sgor4LiB4Lik4Lip4LiO4Liy4LiNCivguIHguKTguKnguI7guLLguI3guIrguKXguLTguJUKK+C4geC4pOC4qeC4juC4suC4jeC4iuC4peC4tQor4LiB4Lik4Lip4LiO4Liy4LiN4LiK4Lin4Lil4Li04LiV4Lin4LiyCivguIHguKTguKnguI7guLLguI3guIrguKfguKXguLTguKgKK+C4geC4pOC4qeC4juC4suC4jeC4iuC4p+C5gOC4peC4qAor4LiB4Lik4Lip4LiO4Liy4LiN4LiK4Li44Lil4Li1CivguIHguKTguKnguI7guLLguJjguLLguKMKK+C4geC4pOC4qeC4juC4tQor4LiB4Lik4Lip4LiO4Li14LiB4LiyCivguIHguKTguKnguJMKK+C4geC4pOC4qeC4k+C4sgor4LiB4Lik4Lip4Liy4LiTCivguIHguKTguKnguLQKK+C4geC4pQor4LiB4Lil4LiUCivguIHguKXguYjguJkKK+C4geC4peC4mgor4LiB4Lil4Lia4LiXCivguIHguKXguKEKK+C4geC4peC4oeC4oAor4LiB4Lil4LmA4Lih4LmH4LiUCivguIHguKXguKLguLjguJfguJjguYwKK+C4geC4peC4peC4sAor4LiB4Lil4Lin4LiHCivguIHguKXguKfguKEKK+C4geC4peC5ieC4p+C4ogor4LiB4Lil4LmJ4Lin4Lii4LiZ4LmJ4Lit4LiiCivguIHguKXguYnguKfguKLguYTguKHguYkKK+C4geC4peC5ieC4p+C4ouC4q+C4oeC4ueC4quC4seC4hwor4LiB4Lil4Lin4Li04LiY4Li1CivguIHguKXguKgKK+C4geC4peC4qOC4suC4quC4leC4o+C5jAor4LiB4Lil4Lio4Li24LiBCivguIHguKXguKvguLLguKIKK+C4geC4peC5gOC4q+C4ogor4LiB4Lil4LmJ4LitCivguIHguKXguK3guIEKK+C4geC4peC4reC4hwor4LiB4Lil4LmI4Lit4LiHCivguIHguKXguYnguK3guIcKK+C4geC4peC5ieC4reC4h+C5geC4geC4peC5ieC4hwor4LiB4Lil4Lit4LiZCivguIHguKXguYjguK3guJkKK+C4geC4peC5ieC4reC4mQor4LiB4Lil4LmI4Lit4LihCivguIHguKXguYnguK3guKHguYHguIHguKXguYnguKEKK+C4geC4peC4reC4ogor4LiB4Lil4Lix4LiBCivguIHguKXguLHguIcKK+C4geC4peC4seC4lAor4LiB4Lil4Lix4LmI4LiZCivguIHguKXguLHguYnguJkKK+C4geC4peC4seC4meC4lwor4LiB4Lil4Lix4LiZ4LiX4LiB4LmMCivguIHguKXguLHguJnguJfguIHguJnguLTguKfguLLguJvguKrguJbguLLguJkKK+C4geC4peC4seC4mgor4LiB4Lil4Lix4Lih4Lie4LiBCivguIHguKXguLHguKHguJ7guKMKK+C4geC4peC4seC4oeC4nuC4seC4gQor4LiB4Lil4Lix4LinCivguIHguKXguLHguYnguKcKK+C4geC4peC4sgor4LiB4Lil4LmI4LiyCivguIHguKXguYnguLIKK+C4geC4peC4suC4gQor4LiB4Lil4Liy4LiB4Lil4Liy4LiUCivguIHguKXguLLguIcKK+C4geC4peC4suC5gOC4i+C4teC4ouC4o+C5jAor4LiB4Lil4Liy4LiUCivguIHguKXguLLguJrguLLguJUKK+C4geC4peC4suC4mwor4LiB4Lil4LmJ4Liy4LihCivguIHguKXguLLguKIKK+C4geC4peC5ieC4suC4ogor4LiB4Lil4Liy4Lii4LiB4Lil4Lit4LiBCivguIHguKXguYjguLLguKcKK+C4geC4peC4suC5guC4q+C4oQor4LiB4Lil4LmI4LizCivguIHguKXguYnguLMKK+C4geC4peC4tAor4LiB4Lil4Li04LiB4Liy4LilCivguIHguKXguLTguIHguLjguI3guIjguLTguIHguLIKK+C4geC4peC4tOC5iOC4hwor4LiB4Lil4Li04LmJ4LiHCivguIHguKXguLTguYnguIfguIHguKXguLLguIfguJTguIcKK+C4geC4peC4tOC4h+C4hOC5jAor4LiB4Lil4Li04LmI4LiZCivguIHguKXguLTguJvguKPguLXguKLguYwKK+C4geC4peC4tOC5ieC4oQor4LiB4Lil4Li04Lii4Li44LiECivguIHguKXguLUKK+C4geC4peC4teC5iAor4LiB4Lil4Li14LmA4LiL4Lit4Lij4Li14LiZCivguIHguKXguLXguJoKK+C4geC4peC4tuC4hwor4LiB4Lil4Li24LmJ4LiHCivguIHguKXguLbguIfguIHguKXguYjguK3guKEKK+C4geC4peC4tuC4h+C4hOC5jAor4LiB4Lil4Li34LiZCivguIHguKXguLjguYjguKEKK+C4geC4peC4uOC5ieC4oQor4LiB4Lil4Li54LmICivguIHguKXguLnguYLguITguKoKK+C4geC4peC4ueC4mQor4LiB4Lil4Li54LiZ4LmMCivguIHguYDguKXguKfguKPguLAKK+C4geC4p+C4lAor4LiB4Lin4LiZCivguIHguYrguKfguJkKK+C4geC4p+C4meC4reC4tOC4oQor4LiB4Lin4LihCivguIHguKfguKIKK+C4geC4p+C4ouC4iOC4seC5iuC4mgor4LiB4Lin4Lii4LiI4Li14LmKCivguIHguYvguKfguKLguYDguJXguLXguYvguKLguKcKK+C4geC5i+C4p+C4ouC4quC4peC4suC4gQor4LiB4Lin4Lis4Li04LiH4LiB4Liy4Lij4Liy4Lir4Liy4LijCivguIHguKfguLAKK+C4geC4p+C4sOC4geC4p+C4seC4gQor4LiB4Lin4Liw4LmB4LiB4Lin4LmI4LiHCivguIHguKfguLHguIEKK+C4geC4p+C4seC4lAor4LiB4Lin4LiyCivguIHguKfguYjguLIKK+C4geC4p+C5ieC4sgor4LiB4Lin4Liy4LiHCivguIHguKfguYjguLLguIcKK+C4geC4p+C5ieC4suC4hwor4LiB4Lin4Liy4LiH4LmA4LiC4LiZCivguIHguKfguLLguIfguYLguIjguJkKK+C4geC4p+C5iOC4suC4h+C4iuC4mQor4LiB4Lin4Liy4LiH4LiK4Liw4Lih4LiUCivguIHguKfguYjguLLguIfguYLguIvguYnguIcKK+C4geC4p+C4suC4h+C4leC4uOC5ieC4hwor4LiB4Lin4Liy4LiH4LiX4Lit4LiHCivguIHguKfguLLguIfguJvguYjguLIKK+C4geC4p+C4suC4h+C4oeC5ieC4sgor4LiB4Lin4Liy4LiUCivguIHguKfguLLguJkKK+C4geC4p+C5iOC4suC4mQor4LiB4Lin4LmJ4Liy4LiZCivguIHguKfguYrguLLguJkKK+C4geC4p+C5ieC4suC4pwor4LiB4Lin4Liy4Lin4LmA4LiE4Lij4Li34LitCivguIHguKfguLTguJkKK+C4geC4p+C4tQor4LiB4Lip4LiT4LiwCivguIHguKnguKHguLIKK+C4geC4qeC4seC4leC4owor4LiB4Lip4Lix4LiV4Lij4LiyCivguIHguKnguLHguJXguKPguLTguKLguYwKK+C4geC4qeC4seC4leC4o+C4tQor4LiB4Lip4Lix4LiV4Lij4Li14Lii4LmMCivguIHguKnguLHguJXguKPguLXguKjguLnguKMKK+C4geC4qeC4seC4ogor4LiB4Lip4Lix4Lii4LiB4Liy4LijCivguIHguKnguLLguJvguJPguYwKK+C4geC4qeC4suC4ogor4LiB4Lip4Li04LiU4Li0CivguIHguKnguLTguJTguLTguJnguJfguKMKK+C4geC4qeC4tOC4lOC4tOC4meC4l+C4o+C5jAor4LiB4Lip4Li14LiT4Liy4Lio4Lij4LieCivguIHguKnguLXguJTguLQKK+C4geC4qeC4teC4owor4LiB4Lip4Li14Lij4Liy4Lih4Lie4Li4CivguIHguKnguLXguKPguLLguKPguJPguJ4KK+C4geC4qeC4uOC4mOC4sgor4LiB4Lip4Li44Lij4Li1CivguIHguKrguLLguJnguJXguLTguYwKK+C4geC4quC4tAor4LiB4Liq4Li04LiTCivguIHguKsKK+C4geC4q+C4seC4h+C4m+C4suC4ouC4sgor4LiB4Lir4Liy4Lib4LiT4LiwCivguIHguYDguKzguKfguKPguLLguIEKK+C4geC4rQor4LiB4LmI4LitCivguIHguYnguK0KK+C4geC5iuC4rQor4LiB4Lit4LiBCivguIHguYrguK3guIEKK+C4geC4reC5geC4gQor4LiB4Lit4LiHCivguIHguYjguK3guIcKK+C4geC5ieC4reC4hwor4LiB4Lit4LiH4LiB4Lit4LiiCivguIHguK3guIsKK+C4geC4reC4lAor4LiB4LmI4Lit4LiZCivguIHguYnguK3guJkKK+C4geC4reC4mgor4LiB4Lit4Lia4LiZ4Liy4LiHCivguIHguYrguK3guJrguJvguLXguYkKK+C4geC4reC4m+C4owor4LiB4LmJ4Lit4LihCivguIHguK3guKHguIHguYnguK0KK+C4geC5iOC4reC4oeC4geC5ieC4rQor4LiB4LmJ4Lit4Lih4LiB4LmJ4LitCivguIHguK3guKIKK+C4geC5ieC4reC4ogor4LiB4LmL4Lit4LiiCivguIHguK3guKPguLTguKXguKXguLIKK+C4geC4reC4peC5jOC4nwor4LiB4Lit4LmB4Lir4Lil4LiwCivguIHguK3guYDguK3guLXguYrguKLguLAKK+C4geC4sAor4LiB4Liw4LiB4Lij4LmI4Lit4LihCivguIHguLDguIHguKPguYnguLLguKcKK+C4geC4sOC4geC4peC4tOC5ieC4hwor4LiB4Liw4LiB4LmI4Lit4LiHCivguIHguLDguIHguLHguIcKK+C4geC4sOC4geC4tuC4gQor4LiB4Liw4LmA4LiB4Liy4LiwCivguIHguLDguYLguIHguKPguLAKK+C4geC4sOC4h+C5ieC4reC4meC4geC4sOC5geC4h+C5ieC4mQor4LiB4Liw4LiI4Lix4LiHCivguIHguLDguIjguLHguYrguKcKK+C4geC4sOC5geC4iOC4sAor4LiB4Liw4LiK4LiwCivguIHguLDguIrguLHguIcKK+C4geC4sOC4iuC4suC4oeC4suC4qAor4LiB4Liw4LiK4Li04LiHCivguIHguLDguIrguLbguYjguIHguIHguLDguIrguLHguYjguIEKK+C4geC4sOC5geC4iuC5iAor4LiB4Liw4LiL4Lin4LiBCivguIHguLDguIvguYnguLLguKvguK3guKIKK+C4geC4sOC4i+C4teC5iAor4LiB4Liw4LiL4Li14LmJCivguIHguLDguYLguIvguYgKK+C4geC4sOC5guC4i+C5iQor4LiB4Liw4LiU4LiBCivguIHguLDguJTguIcKK+C4geC4sOC4lOC4p+C4mQor4LiB4Liw4LiU4Lit4LiB4LmGCivguIHguLDguJTguLAKK+C4geC4sOC4lOC4seC4h+C4muC4suC4ogor4LiB4Liw4LiU4Lix4LiUCivguIHguLDguJTguYnguLLguIcKK+C4geC4sOC4lOC4s+C4geC4sOC4lOC5iOC4suC4hwor4LiB4Liw4LiU4Li1CivguIHguLDguJTguLXguYgKK+C4geC4sOC4lOC4uOC5ieC4hwor4LiB4Liw4LmA4LiU4LmJCivguIHguLDguYDguJTguIEKK+C4geC4sOC5gOC4lOC4teC5i+C4ouC4pwor4LiB4Liw4LmE4LiUCivguIHguLDguJXguKPguLjguJQKK+C4geC4sOC4leC4reC4gQor4LiB4Liw4LiV4LmI4Lit4LiiCivguIHguLDguJXguLHguIEKK+C4geC4sOC4leC4seC4hwor4LiB4Liw4LiV4Lix4LiH4LiB4Liw4LiV4Li04LmJ4LinCivguIHguLDguJXguLHguIfguYPguJoKK+C4geC4sOC4leC5iOC4sgor4LiB4Liw4LiV4LmK4Liy4LiBCivguIHguLDguJXguYnguLMKK+C4geC4sOC4leC4tOC5iuC4geC4o+C4tOC4gQor4LiB4Liw4LiV4Li04LiH4LiB4Liw4LmB4LiV4LiHCivguIHguLDguJXguLXguJoKK+C4geC4sOC4leC4tuC4h+C4geC4sOC5geC4leC4hwor4LiB4Liw4LiV4Li44LmK4LiBCivguIHguLDguJXguLjguJQKK+C4geC4sOC4leC4uOC4oeC4uQor4LiB4Liw4LiV4Li54LiBCivguIHguLDguJXguLnguYnguKfguLnguYkKK+C4geC4sOC5gOC4leC4gQor4LiB4Liw4LmA4LiV4LiH4LmGCivguIHguLDguYDguJXguIfguYDguKPguIcKK+C4geC4sOC5geC4leC4pwor4LiB4Liw4LmB4LiV4LmI4LinCivguIHguLDguYLguJXguYrguIEKK+C4geC4sOC5guC4leC4geC4geC4sOC4leC4suC4gQor4LiB4Liw4LmC4LiV4LiH4LiB4Liw4LmA4LiV4LiHCivguIHguLDguYLguJXguYnguIfguYLguKvguYjguIcKK+C4geC4sOC4luC4seC4pwor4LiB4Liw4LiX4LiB4Lij4LiBCivguIHguLDguJfguK0KK+C4geC4sOC4l+C4seC4hwor4LiB4Liw4LiX4Lix4LiU4Lij4Lix4LiUCivguIHguLDguJfguLHguJkKK+C4geC4sOC4l+C4seC4meC4q+C4seC4mQor4LiB4Liw4LiX4Lix4LiaCivguIHguLDguJfguLMKK+C4geC4sOC4l+C4tAor4LiB4Liw4LiX4Li34LitCivguIHguLDguJfguLjguJkKK+C4geC4sOC4l+C4ueC5ieC5gOC4iOC5h+C4lOC4leC4seC4pwor4LiB4Liw4LmA4LiX4LiiCivguIHguLDguYDguJfguYjguYDguKPguYgKK+C4geC4sOC5gOC4l+C4suC4sAor4LiB4Liw4LmB4LiX4LmJCivguIHguLDguYHguJfguYjguIcKK+C4geC4sOC5geC4l+C4mQor4LiB4Liw4LiZ4Lin4LilCivguIHguLDguJnguLHguJQKK+C4geC4sOC4muC4reC4hwor4LiB4Liw4Lia4Lit4LiZ4LiB4Liw4Lia4Li24LiHCivguIHguLDguJrguYjguK3guJnguIHguLDguYHguJrguYjguJkKK+C4geC4sOC4muC4seC4hwor4LiB4Liw4Lia4Lix4LmJ4LiHCivguIHguLDguJrguLHguIfguKPguLHguIfguYDguJ3guLfguK3guIEKK+C4geC4sOC4muC4tAor4LiB4Liw4Lia4Li04LmJ4LiHCivguIHguLDguJrguLTguKUKK+C4geC4sOC4muC4tuC4h+C4geC4sOC4muC4reC4mQor4LiB4Liw4Lia4Li44LiUCivguIHguLDguYDguJrguYnguK0KK+C4geC4sOC5gOC4muC4teC4ouC4mQor4LiB4Liw4LmA4Lia4Li34LitCivguIHguLDguYHguJrguIcKK+C4geC4sOC4m+C4o+C4tOC4lOC4geC4sOC4m+C4o+C4reC4ogor4LiB4Liw4Lib4Lij4Li04LiaCivguIHguLDguJvguKXguIHguIHguLDguYDguJvguKXguLXguYnguKIKK+C4geC4sOC4m+C4p+C4geC4geC4sOC5gOC4m+C4teC4ouC4gQor4LiB4Liw4Lib4Lit4LihCivguIHguLDguJvguK3guKHguILguLLguIcKK+C4geC4sOC4m+C4sAor4LiB4Liw4Lib4Lix4LmI4LiZCivguIHguLDguJvguYnguLPguIHguLDguYDguJvguYvguK0KK+C4geC4sOC4m+C4tAor4LiB4Liw4Lib4Li5CivguIHguLDguJvguLnguJQKK+C4geC4sOC4m+C4ueC4lOC4q+C4peC4ueC4lAor4LiB4Liw4LmA4Lib4LiwCivguIHguLDguYDguJvguLIKK+C4geC4sOC5gOC4m+C4tOC5iuC4muC4geC4sOC4m+C5iuC4suC4mgor4LiB4Liw4LmA4Lib4Li14Lii4LiUCivguIHguLDguYHguJvguYnguJkKK+C4geC4sOC5geC4m+C4sAor4LiB4Liw4LmC4Lib4Lij4LiHCivguIHguLDguYLguJvguYLguKUKK+C4geC4sOC4nOC4peC4tuC4geC4geC4sOC4nOC4peC4suC4oQor4LiB4Liw4Lic4Lil4Li44Lia4LiB4Liw4LmC4Lic4Lil4LmICivguIHguLDguYDguJzguYjguJkKK+C4geC4sOC5gOC4nOC4peC4gQor4LiB4Liw4LmC4Lic4Lil4LiB4LiB4Liw4LmA4Lic4Lil4LiBCivguIHguLDguJ7guIcKK+C4geC4sOC4nuC4o+C4p+C4lOC4geC4sOC4nuC4o+C4suC4lAor4LiB4Liw4Lie4Lij4LmI4Lit4LiH4LiB4Liw4LmB4Lie4Lij4LmI4LiHCivguIHguLDguJ7guKPguLTguJoKK+C4geC4sOC4nuC4o+C4uOC4mQor4LiB4Liw4Lie4Lij4Li54LiU4LiB4Liw4Lie4Lij4Liy4LiUCivguIHguLDguJ7guKXguYnguK0KK+C4geC4sOC4nuC4peC5iOC4reC4h+C4geC4sOC5geC4nuC4peC5iOC4hwor4LiB4Liw4Lie4LmJ4LitCivguIHguLDguJ7guK3guIEKK+C4geC4sOC4nuC4reC4hwor4LiB4Liw4Lie4Lix4LiHCivguIHguLDguYDguJ7guKPguLIKK+C4geC4sOC5gOC4nuC4teC4ouC4lAor4LiB4Liw4LmA4Lie4Li14Lii4LiU4LiK4LmJ4Liy4LiHCivguIHguLDguYDguJ7guLXguKLguJTguKvguJnguLkKK+C4geC4sOC4oeC4tOC4lOC4geC4sOC5gOC4oeC4teC5ieC4ouC4mQor4LiB4Liw4Lih4Li54LiV4Li04LiHCivguIHguLDguYDguKHguYfguIcKK+C4geC4sOC5gOC4oeC4teC4ogor4LiB4Liw4Lii4Liy4Lir4LiH4Lix4LiZCivguIHguLDguKLguLbguIHguIHguLDguKLguLfguK0KK+C4geC4sOC4ouC4uAor4LiB4Liw4Lij4LmI4Lit4LiH4LiB4Liw4LmB4Lij4LmI4LiHCivguIHguLDguKPguLDguJXguLAKK+C4geC4sOC4o+C4sOC4q+C4meC4sAor4LiB4Liw4Lij4Lix4LiHCivguIHguLDguKPguLHguJUKK+C4geC4sOC4o+C4suC4hwor4LiB4Liw4Lij4Li04LiHCivguIHguLDguKPguLTguIfguIHguLDguYDguKPguLXguKLguJQKK+C4geC4sOC4o+C4uOC4h+C4geC4sOC4o+C4seC4hwor4LiB4Liw4Lij4Li44LmI4LiH4LiB4Liw4Lij4Li04LmI4LiHCivguIHguLDguKPguLjguJkKK+C4geC4sOC5gOC4owor4LiB4Liw4LmA4Lij4LiB4Liw4Lij4LmI4Lit4LiZCivguIHguLDguYDguKPguYjguIHguLDguKPguYjguK3guJkKK+C4geC4sOC5gOC4o+C5iOC4rQor4LiB4Liw4LmA4Lij4Li14LmI4Lii4LiB4Liw4Lij4Liy4LiUCivguIHguLDguYLguKPguIHguLDguYDguKMKK+C4geC4sOC4peC4p+C4ogor4LiB4Liw4Lil4LitCivguIHguLDguKXguYjguK3guIHguLDguYHguKXguYgKK+C4geC4sOC4peC4reC4iOC4teC5igor4LiB4Liw4Lil4LmI4Lit4LiZCivguIHguLDguKXguYjguK3guKHguIHguLDguYHguKXguYjguKEKK+C4geC4sOC4peC5iOC4reC4ouC4geC4sOC4q+C4peC4tOC4mgor4LiB4Liw4Lil4Liw4Lib4Lix4LiH4Lir4LiyCivguIHguLDguKXguLDguKHguLHguIcKK+C4geC4sOC4peC4sOC5geC4oQor4LiB4Liw4Lil4Liw4Lit4Lit4LihCivguIHguLDguKXguLHguIfguJXguLHguIfguYTguIHguYgKK+C4geC4sOC4peC4seC4mQor4LiB4Liw4Lil4Lix4LiZ4LiX4LiyCivguIHguLDguKXguLIKK+C4geC4sOC4peC4suC4hwor4LiB4Liw4Lil4Liy4Liq4Li1CivguIHguLDguKXguLLguKvguJnguLIKK+C4geC4sOC4peC4s+C4nuC4rQor4LiB4Liw4Lil4Liz4Lie4Lix4LiBCivguIHguLDguKXguLPguYDguJ7guLLguLAKK+C4geC4sOC4peC4tOC4hwor4LiB4Liw4Lil4Li04LmJ4Lih4LiB4Liw4LmA4Lir4Lil4Li14LmI4LiiCivguIHguLDguKXguLTguK3guYjguK3guIcKK+C4geC4sOC4peC4uOC4oeC4nuC4tQor4LiB4Liw4LmA4Lil4LmH4LiHCivguIHguLDguYDguKXguYjguK3guIHguLDguKXguYjguLIKK+C4geC4sOC5gOC4peC4tOC4lAor4LiB4Liw4LmA4Lil4Li14Lii4LinCivguIHguLDguYHguKUKK+C4geC4sOC5guC4peC5iAor4LiB4Liw4LmC4Lil4LiHCivguIHguLDguKfguK3guIHguIHguLDguYHguKfguIEKK+C4geC4sOC4p+C4sAor4LiB4Liw4Liq4LmJ4Lih4LiK4Li34LmI4LiZCivguIHguLDguKrguYnguLLguKvguK3guKIKK+C4geC4sOC4q+C4meC4reC4geC4sOC5geC4q+C4mQor4LiB4Liw4Lir4LiZ4LmH4Lit4LiH4LiB4Liw4LmB4Lir4LiZ4LmH4LiHCivguIHguLDguKvguJnguLAKK+C4geC4sOC4q+C4meC4uOC4h+C4geC4sOC4q+C4meC4tOC4hwor4LiB4Liw4Lir4Lih4Lit4LiBCivguIHguLDguKvguKPguYjguK3guIcKK+C4geC4sOC4q+C4o+C4reC4lAor4LiB4Liw4Lir4Lij4LmH4Lit4Lih4LiB4Liw4LmB4Lir4Lij4LmH4LihCivguIHguLDguKvguKPguLHguJTguIHguLDguJXguLXguIHguLIKK+C4geC4sOC4q+C4o+C4seC4lOC4leC4sOC4m+C4suC4leC4tQor4LiB4Liw4Lir4Lij4LmI4Liy4LiHCivguIHguLDguKvguKPguLLguJkKK+C4geC4sOC4q+C4o+C4tOC5iOC4hwor4LiB4Liw4Lir4Lij4Li14LmICivguIHguLDguKvguKPguLXguYjguJvguLHguYrguJoKK+C4geC4sOC4q+C4peC4seC4muC4geC4sOC5gOC4q+C4peC4t+C4reC4gQor4LiB4Liw4Lir4Lil4Liy4Lib4LmL4LiyCivguIHguLDguKvguKXguYjguLMKK+C4geC4sOC4q+C4peC4teC5iAor4LiB4Liw4Lir4Lil4Li14LiB4Liw4Lir4Lil4LitCivguIHguLDguKvguKXguLjguIHguIHguLDguKvguKXguLTguIEKK+C4geC4sOC4q+C4swor4LiB4Liw4Lir4Li24LihCivguIHguLDguKvguLfguJTguIHguLDguKvguK3guJoKK+C4geC4sOC4q+C4t+C4rQor4LiB4Liw4Lir4Li54LiUCivguIHguLDguYDguKvguJnguYfguJQKK+C4geC4sOC5gOC4q+C4o+C4teC5iOC4ouC4hwor4LiB4Liw4LmA4Lir4Lil4Liy4Liw4LmA4Lib4Liy4LiwCivguIHguLDguYDguKvguKfguLXguKLguIEKK+C4geC4sOC5geC4qwor4LiB4Liw4LmB4Lir4LiZ4LmICivguIHguLDguYHguKvguJnguLAKK+C4geC4sOC5geC4q+C4ouC4gQor4LiB4Liw4LmB4Lir4LiwCivguIHguLDguYLguKvguYkKK+C4geC4sOC5guC4q+C4peC4gQor4LiB4Liw4LmC4Lir4Lil4LmJ4LiHCivguIHguLDguYTguKvguKXguYgKK+C4geC4sOC4reC4p+C4oQor4LiB4Liw4Lit4LmJ4Lit4LiB4Liw4LmB4Lit4LmJCivguIHguLDguK3guK3guKEKK+C4geC4sOC4reC5ieC4reC4oeC4geC4sOC5geC4reC5ieC4oQor4LiB4Liw4Lit4Lix4LiBCivguIHguLDguK3guLHguIHguIHguLDguYTguK0KK+C4geC4sOC4reC4suC4mQor4LiB4Liw4Lit4Liy4LihCivguIHguLDguK3guLTguJQKK+C4geC4sOC4reC4uOC4mgor4LiB4Liw4LmB4LitCivguIHguLDguYHguK3guIEKK+C4geC4sOC5geC4reC4mQor4LiB4Liw4LmB4Lit4LiaCivguIHguLDguYHguK3guKEKK+C4geC4sOC5geC4reC4pwor4LiB4Lix4LiBCivguIHguLHguYrguIEKK+C4geC4seC5ieC4geC5hgor4LiB4Lix4LiB4LiB4Lij4LiyCivguIHguLHguIHguIHguKrguLAKK+C4geC4seC4geC4geC4sAor4LiB4Lix4LiB4LiB4Liy4Lij4Li1CivguIHguLHguIHguIHguLLguKPguLgKK+C4geC4seC4geC4guC4rOC4sAor4LiB4Lix4LiB4Lip4Lix4LiZ4LiV4Lij4Lix4LiHCivguIHguLHguIcKK+C4geC4seC5ieC4hwor4LiB4Lix4LiH4LiBCivguIHguLHguYnguIfguIHguKPguLDguJTguLLguJkKK+C4geC4seC4h+C4geC5ieC4sgor4LiB4Lix4LiH4LmA4LiB4Li14Lii4LiHCivguIHguLHguIfguILguLIKK+C4geC4seC4h+C4guC4suC4p+C4tOC4leC4o+C4k+C4p+C4tOC4quC4uOC4l+C4mOC4tAor4LiB4Lix4LiH4LiE4Li4CivguIHguLHguIfguInguLTguJkKK+C4geC4seC4h+C4n+C4uQor4LiB4Lix4LiH4Lin4LilCivguIHguLHguIfguKfguLLguJkKK+C4geC4seC4h+C5gOC4p+C4teC4ouC4mQor4LiB4Lix4LiH4LiqCivguIHguLHguIfguKrguJTguLLguKUKK+C4geC4seC4h+C5hOC4qgor4LiB4Lix4LiH4Lir4Lix4LiZCivguIHguLHguIjguInguJvguLAKK+C4geC4seC4iOC4ieC4sAor4LiB4Lix4LiI4LiJ4LiyCivguIHguLHguIjguInguLgKK+C4geC4seC4iOC5guC4ieC4l+C4gQor4LiB4Lix4LiNCivguIHguLHguI3guIjguLjguIEKK+C4geC4seC4jeC4iOC4uOC4geC4suC4o+C4sgor4LiB4Lix4LiN4LiK4LiyCivguIHguLHguI3guI3guLIKK+C4geC4seC4jeC4kOC4geC4sAor4LiB4Lix4LiQCivguIHguLHguJPguI/guIHguLAKK+C4geC4seC4k+C4kOC4gQor4LiB4Lix4LiT4LiQ4Lix4LioCivguIHguLHguJPguJDguLHguKjguKfguYwKK+C4geC4seC4k+C4kOC4sgor4LiB4Lix4LiT4LiQ4Li1CivguIHguLHguJPguJHguYwKK+C4geC4seC4k+C4keC4oeC4suC4meC4p+C4gQor4LiB4Lix4LiT4LiR4Lij4LiyCivguIHguLHguJPguJHguLgKK+C4geC4seC4k+C4keC4ueC4p+C4meC4sAor4LiB4Lix4LiT4LiT4LmMCivguIHguLHguJPguKsKK+C4geC4seC4lAor4LiB4Lix4LiV4LiV4Li04LiB4Lih4Liy4LiqCivguIHguLHguJXguJXguLTguIHguLIKK+C4geC4seC4leC4leC4tOC5gOC4geC4ouC4sgor4LiB4Lix4LiV4Lij4LiX4Lix4LiT4LiR4LmMCivguIHguLHguJXguKPguLIKK+C4geC4seC4l+C4peC4tQor4LiB4Lix4LiZCivguIHguLHguYjguJkKK+C4geC4seC5ieC4mQor4LiB4Lix4LiZ4LmA4LiB4Lij4LiyCivguIHguLHguJnguYTguIHguKMKK+C4geC4seC4meC4iuC4tOC4hwor4LiB4Lix4LiZ4LmA4LiK4LitCivguIHguLHguYnguJnguIvguLnguYgKK+C4geC4seC4meC5geC4i+C4hwor4LiB4Lix4LiZ4LiU4Lit4LiHCivguIHguLHguJnguJTguLLguKMKK+C4geC4seC4meC4lOC4suC4pQor4LiB4Lix4LiZ4LmE4LiUCivguIHguLHguJnguJXguYwKK+C4geC4seC4meC4leC4seC4hwor4LiB4Lix4LiZ4LmE4LiV4LijCivguIHguLHguJnguJfguKMKK+C4geC4seC4meC4l+C4o+C4suC4geC4owor4LiB4Lix4LiZ4LiX4LiwCivguIHguLHguYnguJnguJrguLHguIcKK+C4geC4seC4meC4oOC4seC4ogor4LiB4Lix4LiZ4Lig4Li04Lij4Lih4Lii4LmMCivguIHguLHguJnguYDguKHguLXguKLguIcKK+C4geC4seC4meC4ouC5jAor4LiB4Lix4LiZ4Lii4LiyCivguIHguLHguJnguKXguIcKK+C4geC4seC4meC4peC4reC4hwor4LiB4Lix4LiZ4Lil4Li24LiHCivguIHguLHguJnguYHguKrguIcKK+C4geC4seC5ieC4meC4q+C4ouC4seC5iOC4mQor4LiB4Lix4LiZ4LmA4Lit4LiyCivguIHguLHguJoKK+C4geC4seC4muC5geC4geC5iQor4LiB4Lix4Lia4LmB4LiB4Lil4LmJ4LihCivguIHguLHguJrguJrguLjguYDguKPguKgKK+C4geC4seC4mwor4LiB4Lix4Lib4LiV4Lix4LiZCivguIHguLHguJvguJnguIEKK+C4geC4seC4m+C4muC4suC4quC4tOC4gQor4LiB4Lix4Lib4Lib4Liy4Liq4Li04LiBCivguIHguLHguJvguJvguLTguKLguLAKK+C4geC4seC4m+C4m+C4teC4ouC5jAor4LiB4Lix4Lih4Lia4LiZCivguIHguLHguKHguJvguJnguLLguIHguLLguKMKK+C4geC4seC4oeC4m+C4meC4suC4lwor4LiB4Lix4Lih4Lib4LiZ4Li1CivguIHguLHguKHguJvguKPguLDguYLguJQKK+C4geC4seC4oeC4m+C4tQor4LiB4Lix4Lih4Lie4LilCivguIHguLHguKHguJ7guLjguIoKK+C4geC4seC4oeC4nuC4uOC4iuC4nuC4suC4geC4ouC5jAor4LiB4Lix4Lih4Lie4Li5CivguIHguLHguKHguJ7guLnguIrguLIKK+C4geC4seC4oeC5guC4nuC4igor4LiB4Lix4Lih4Lih4Liq4Lix4LiX4LiY4LiyCivguIHguLHguKHguKHguLHguIrguKfguLLguJUKK+C4geC4seC4oeC4oeC4seC4j+C4kOC4suC4mQor4LiB4Lix4Lih4Lih4Lix4LiZ4LiV4Lig4Liy4Lie4Lij4Lix4LiH4Liq4Li1CivguIHguLHguKHguKHguLHguJnguJXguKPguLHguIfguKrguLUKK+C4geC4seC4oeC4oeC4seC4quC4quC4geC4leC4sgor4LiB4Lix4Lih4Lih4Liy4LijCivguIHguLHguKHguKXguLLguKgKK+C4geC4seC4ouC4p+C4tOC4geC4seC4ogor4LiB4Lix4Lil4LiK4Liy4LiNCivguIHguLHguKXguJrguIEKK+C4geC4seC4peC4m+C5jAor4LiB4Lix4Lil4Lib4LiZ4LiyCivguIHguLHguKXguJvguLHguIfguKvguLIKK+C4geC4seC4peC4m+C4suC4p+C4quC4suC4mQor4LiB4Lix4Lil4Lib4Li04LiVCivguIHguLHguKXguJ7guLjguKEKK+C4geC4seC4peC5gOC4oeC5h+C4lAor4LiB4Lix4Lil4Lii4LiyCivguIHguLHguKXguKLguLLguJPguKHguLTguJXguKMKK+C4geC4seC4peC4ouC4suC4k+C4tQor4LiB4Lix4Lil4LmA4Lin4LmJ4LiyCivguIHguLHguKXguKvguLLguKIKK+C4geC4seC4peC5guC4q+C4ogor4LiB4Lix4Lil4Lit4Lit4LihCivguIHguLHguKXguYDguK3guLIKK+C4geC4seC4qOC4oeC4pQor4LiB4Lix4Lio4Lii4LibCivguIHguLHguKnguJMKK+C4geC4sgor4LiB4LmL4LiyCivguIHguLLguIEKK+C4geC4suC4geC4hOC4leC4tAor4LiB4Liy4LiB4LiT4Li24LiBCivguIHguLLguIHguJnguLLguKrguLnguKMKK+C4geC4suC4geC4muC4suC4lwor4LiB4Liy4LiB4Lig4Liy4Lip4LiyCivguIHguLLguIHguKrguLnguKMKK+C4geC4suC4geC4sOC4l+C4tOC4hwor4LiB4Liy4LiB4Liw4LmA4Lii4Li14LiiCivguIHguLLguIHguLUKK+C4geC4suC4hwor4LiB4LmJ4Liy4LiHCivguIHguLLguIfguYDguIHguIcKK+C4geC4suC4h+C5gOC4geC4teC4ouC4hwor4LiB4Liy4LiH4LiC4Lit4LiHCivguIHguLLguIfguYDguILguJkKK+C4geC4suC4iAor4LiB4LmK4Liy4LiLCivguIHguLLguIvguLDguKXguK3guIcKK+C4geC4suC4i+C4sOC4peC4reC4h+C4hOC4swor4LiB4Liy4LiN4LiI4LiZ4LiyCivguIHguLLguJAKK+C4geC4suC4lAor4LiB4LmK4Liy4LiUCivguIHguLLguJkKK+C4geC5iOC4suC4mQor4LiB4LmJ4Liy4LiZCivguIHguYrguLLguJkKK+C4geC4suC4meC4lOC4sgor4LiB4Liy4LiZ4LiV4LmMCivguIHguLLguJnguJfguYwKK+C4geC4suC4meC4mQor4LiB4Liy4LiZ4Lie4Lil4Li5CivguIHguLLguJnguYnguLIKK+C4geC4suC4mgor4LiB4LmJ4Liy4Lia4LmGCivguIHguLLguJrguJrguLHguKcKK+C4geC4suC4muC4sAor4LiB4Liy4Lia4Li44Lij4Li44LipCivguIHguLLguJrguLkKK+C4geC4suC5gOC4m+C4teC5ieC4ouC4lAor4LiB4Liy4Lie4Lii4LmMCivguIHguLLguYDguJ/guK3guLXguJkKK+C4geC4suC5geC4nwor4LiB4Liy4LihCivguIHguYnguLLguKEKK+C4geC4suC4oeC4geC4p+C4oQor4LiB4LmJ4Liy4Lih4LiB4Li44LmJ4LiHCivguIHguLLguKHguJcKK+C4geC4suC4oeC4mQor4LiB4LmJ4Liy4Lih4Lib4Li5CivguIHguYnguLLguKHguJvguLnguKvguKXguLjguJQKK+C4geC4suC4oeC5guC4oeC4l+C4ogor4LiB4Liy4Lih4Lin4Li04LiV4LiW4Liy4LijCivguIHguLLguKHguLHguIoKK+C4geC4suC4oeC4sgor4LiB4Liy4Lih4Liy4LiX4Li14LiZ4LieCivguIHguLLguKHguLLguJ7guIjguKMKK+C4geC4suC4oeC4suC4oeC4tOC4qAor4LiB4Liy4Lih4Liy4Lij4Lih4LiT4LmMCivguIHguLLguKHguLLguKfguIjguKMKK+C4geC4suC4oeC4tOC4meC4tQor4LiB4Liy4Lih4Li04LioCivguIHguLLguYDguKHguKgKK+C4geC4suC5gOC4oeC4quC4uOC4oeC4tOC4iOC4ieC4suC4iOC4suC4owor4LiB4Liy4LiiCivguIHguYjguLLguKIKK+C4geC4suC4ouC4geC4o+C4o+C4oQor4LiB4Liy4Lii4LiE4LiV4Liy4Liq4LiV4Li0CivguIHguLLguKLguJfguKfguLLguKMKK+C4geC4suC4ouC4l+C4uOC4iOC4o+C4tOC4lQor4LiB4Liy4Lii4Lia4Lij4Li04Lir4Liy4LijCivguIHguLLguKLguJ7guLHguJnguJjguJnguYwKK+C4geC4suC4ouC4oOC4suC4ngor4LiB4Liy4Lii4Lig4Liy4Lie4Lia4Liz4Lia4Lix4LiUCivguIHguLLguKLguKfguLTguKDguLLguITguKjguLLguKrguJXguKPguYwKK+C4geC4suC4ouC4quC4tOC4l+C4mOC4tOC5jAor4LiB4Liy4Lii4Liq4Li44LiI4Lij4Li04LiVCivguIHguLLguKLguLLguJ7guKLguJ4KK+C4geC4suC4ouC4tOC4meC4l+C4o+C4teC4ouC5jAor4LiB4Liy4LmA4Lii4LiZCivguIHguLLguYDguKLguJnguJfguKPguLXguKLguYwKK+C4geC4suC4owor4LiB4Liy4Lij4LiBCivguIHguLLguKPguJPguYwKK+C4geC4suC4o+C5jOC4lAor4LiB4Liy4Lij4LiV4Li04LmA4LiB4Lii4LiwCivguIHguLLguKPguYzguJXguLnguJkKK+C4geC4suC4o+C5gOC4lQor4LiB4Liy4Lij4LmC4LiZ4LmJ4Lih4LiW4LmI4Lin4LiHCivguIHguLLguKPguJrguLnguKMKK+C4geC4suC4o+C4muC4ueC4o+C4m+C5iOC4sgor4LiB4Liy4Lij4Lii4LmMCivguIHguLLguKPguKXguLDguYDguKXguYjguJkKK+C4geC4suC4o+C4p+C4tOC4gQor4LiB4Liy4Lij4LmA4Lin4LiBCivguIHguLLguKPguLDguYDguIHguJQKK+C4geC4suC4o+C4sOC4muC4uOC4q+C4meC4tOC4hwor4LiB4Liy4Lij4Lix4LiT4LiR4Lin4LiwCivguIHguLLguKPguLHguJPguKLguYwKK+C4geC4suC4o+C4seC4meC4leC5jAor4LiB4Liy4Lij4Liy4LiH4Lir4Lix4Lin4LiC4Lin4Liy4LiZCivguIHguLLguKPguLjguI0KK+C4geC4suC4o+C4uOC4k+C4ouC5jAor4LiB4Liy4LmA4Lij4LiB4Liy4Lij4LmI4Lit4LiZCivguIHguLLguYDguKPguLXguKLguJkKK+C4geC4suC4pQor4LiB4Liy4Lil4LiB4Lij4Lij4LiT4Li1CivguIHguLLguKXguIHguLHguI3guIrguLTguIHguLLguKrguLnguKMKK+C4geC4suC4peC4geC4tOC4k+C4tQor4LiB4Liy4Lil4LiI4Lix4LiB4LijCivguIHguLLguKXguLHguI3guI3guLjguJXguLIKK+C4geC4suC4peC4seC4jeC4jeC4uQor4LiB4Liy4Lil4Lix4LiUCivguIHguLLguKXguLLguJnguLjguIHguLLguKUKK+C4geC4suC4peC4suC4oeC4quC4ueC4leC4owor4LiB4Liy4Lil4Li04LiBCivguIHguLLguKXguLUKK+C4geC4suC5geC4peC5h+C4geC4i+C4teC5iAor4LiB4Liy4LinCivguIHguYnguLLguKcKK+C4geC4suC4p+C4p+C4suC4pwor4LiB4Liy4LmB4Lin4LiZCivguIHguLLguKjguLTguIEKK+C4geC4suC4qeC4kOC4sAor4LiB4Liy4Lip4LiyCivguIHguLLguKrguKMKK+C4geC4suC4quC4sAor4LiB4Liy4Liq4LiyCivguIHguLLguKrguLLguKMKK+C4geC4suC4quC4suC4p+C4sAor4LiB4Liy4Liq4Li04LmC4LiZCivguIHguLLguKvguKUKK+C4geC4suC4q+C4peC4sgor4LiB4Liy4Lir4Lil4Li04LiaCivguIHguLLguKvguLHguIEKK+C4geC4suC5gOC4q+C4p+C5iOC4sgor4LiB4Liy4LmE4Lir4Lil4LmICivguIHguLLguKwKK+C4geC4suC4rOC4geC4ueC4jwor4LiB4Liy4Lis4Lib4Lix4LiB4Lip4LmMCivguIHguLLguKzguJvguLHguIHguKnguLUKK+C4geC4suC4rOC4nuC4pOC4geC4qeC5jAor4LiB4Liy4Lis4LmC4Lij4LiECivguIHguLLguKzguKfguLLguJUKK+C4geC4suC4rOC4suC4p+C4gQor4LiB4Liy4Liu4Lix4LiHCivguIHguLMKK+C4geC5iOC4swor4LiB4LmJ4LizCivguIHguLPguIHguKfguKEKK+C4geC4s+C4geC4seC4lAor4LiB4Liz4LiB4Lix4LiaCivguIHguYnguLPguIHguLbguYjguIcKK+C4geC4s+C4geC4ueC4mQor4LiB4LmJ4Liz4LmA4LiB4Li04LiZCivguIHguLPguYDguIHguLXguKLguIcKK+C4geC4s+C4hOC4ueC4mQor4LiB4LmI4Liz4LmA4LiE4Li34LitCivguIHguLPguIjguKMKK+C4geC4s+C4iOC4seC4lAor4LiB4Liz4LiI4Liy4LiiCivguIHguLPguIrguLHguJoKK+C4geC4s+C4iuC4swor4LiB4Liz4LmC4LiK4LiBCivguIHguLPguIvguLLguJoKK+C4geC4s+C4i+C4swor4LiB4Liz4LiU4LmJ4LiZCivguIHguLPguJTguLHguJQKK+C4geC4s+C4lOC4suC4pQor4LiB4Liz4LmA4LiU4LiyCivguIHguLPguYDguJTguLLguLAKK+C4geC4s+C4leC4suC4gQor4LiB4Liz4LiX4Lin4LiUCivguIHguLPguJfguKfguJkKK+C4geC4s+C4mOC4owor4LiB4Liz4LiZ4LilCivguIHguLPguJnguLHguJQKK+C4geC4s+C4meC4seC4mQor4LiB4Liz4LiZ4Lix4LilCivguIHguLPguYDguJnguLTguJQKK+C4geC4s+C5gOC4meC4teC4ouC4iAor4LiB4Liz4Lia4LiUCivguIHguLPguJrguJkKK+C4geC4s+C4muC4seC4hwor4LiB4Liz4Lia4Lix4LiUCivguIHguLPguJrguLTguJQKK+C4geC4s+C5gOC4muC5ieC4rQor4LiB4Liz4LmC4Lia4LilCivguIHguLPguJvguK0KK+C4geC4s+C4m+C4seC5iOC4mQor4LiB4Liz4Lib4Lix4LmJ4LiZCivguIHguLPguJzguKXguLIKK+C4geC4s+C4nuC4hwor4LiB4Liz4Lie4LiUCivguIHguLPguJ7guJUKK+C4geC4s+C4nuC4o+C5ieC4sgor4LiB4Liz4Lie4Lij4Liy4LiBCivguIHguLPguJ7guKfguJQKK+C4geC4s+C4nuC4reC4hwor4LiB4Liz4Lie4Li34LiUCivguIHguLPguJ7guLkKK+C4geC4s+C5gOC4nuC4peC4tOC4hwor4LiB4Liz4LmB4Lie4LiHCivguIHguLPguYHguJ7guYnguIcKK+C4geC4s+C4oOC4uQor4LiB4Liz4Lih4Lie4Lik4LiB4Lip4LmMCivguIHguLPguKHguKXguLLguKjguJnguYwKK+C4geC4s+C4oeC5gOC4peC4qAor4LiB4Liz4Lih4Liw4LiW4Lix4LiZCivguIHguLPguKHguLDguKXguK0KK+C4geC4s+C4oeC4sOC4q+C4ouC4teC5iAor4LiB4Liz4Lih4Liw4Lir4Lij4Li04LiUCivguIHguLPguKHguLHguIfguKXguLDguIHguLLguKMKK+C4geC4s+C4oeC4seC4h+C4p+C4tOC4peC4tOC4lQor4LiB4Liz4Lih4Lix4LiK4Lie4LilCivguIHguLPguKLguLLguJkKK+C4geC4s+C4ouC4swor4LiB4Liz4Lij4LitCivguIHguLPguKPguLLguIEKK+C4geC4s+C4o+C4suC4mgor4LiB4Liz4Lij4Liy4LilCivguIHguLPguKPguLkKK+C4geC4s+C5gOC4o+C4tOC4mgor4LiB4Liz4LmE4LijCivguIHguLPguKXguK3guIcKK+C4geC4s+C4peC4seC4hwor4LiB4Liz4Lil4Lix4LiH4LiK4LmJ4Liy4LiH4LmA4Lic4Li34Lit4LiBCivguIHguLPguKXguLHguIfguIrguYnguLLguIfguKrguLLguKMKK+C4geC4s+C4peC4seC4h+C4p+C4seC4p+C5gOC4luC4peC4tOC4hwor4LiB4Liz4Lil4Li44LiHCivguIHguLPguKXguLnguJkKK+C4geC4s+C5gOC4peC4sgor4LiB4Liz4LmA4Lil4Liy4LiwCivguIHguLPguYTguKUKK+C4geC4s+C4quC4o+C4lAor4LiB4Liz4Liq4Lij4Lin4LilCivguIHguLPguYDguKrguLLguLAKK+C4geC4s+C5geC4quC4hwor4LiB4Liz4Lir4LiZ4LiUCivguIHguLPguKvguJnguLHguJQKK+C4geC4s+C4q+C4o+C4suC4gQor4LiB4Liz4LmA4Lir4LiZ4LmH4LiICivguIHguLPguYHguKvguIcKK+C4geC4tOC4gQor4LiB4Li04LmK4LiBCivguIHguLTguYjguIcKK+C4geC4tOC5ieC4h+C4geC5iOC4sgor4LiB4Li04LmJ4LiH4LiB4Li34LitCivguIHguLTguYnguIfguYLguITguKPguIcKK+C4geC4tOC4h+C4muC4uOC4o+C4uOC4qQor4LiB4Li04LiH4Liq4Li44LiBCivguIHguLTguYjguIfguKvguLLguKIKK+C4geC4tOC4iAor4LiB4Li04LiI4LiI4LiwCivguIHguLTguIjguIjguLDguKXguLHguIHguKnguJPguLAKK+C4geC4tOC4iOC4iOC4sgor4LiB4Li04LiU4Liy4LiB4Liy4LijCivguIHguLTguJTguLLguKvguKLguLHguJkKK+C4geC4tOC4leC4leC4tAor4LiB4Li04LiV4Liy4Lir4Lij4Lix4LiHCivguIHguLTguJkKK+C4geC4tOC4meC5gOC4hOC4o+C4sgor4LiB4Li04LiZ4LiZ4LijCivguIHguLTguJnguKPguLTguJkKK+C4geC4tOC4meC4o+C4tQor4LiB4Li04LiZ4Li54LiZCivguIHguLTguYrguJoKK+C4geC4tOC4oQor4LiB4Li04Lih4LiV4Li24LmL4LiHCivguIHguLTguKHguLTguIrguLLguJXguLQKK+C4geC4tOC4oeC4tOC4p+C4tOC4l+C4ouC4sgor4LiB4Li04LmC4Lih4LmC4LiZCivguIHguLTguYLguKLguJXguLXguJkKK+C4geC4tOC4o+C4sAor4LiB4Li04Lij4Li04LiT4Li1CivguIHguLTguKPguLTguJnguJcKK+C4geC4tOC4o+C4tOC5gOC4meC4qOC4p+C4owor4LiB4Li04Lij4Li04Lii4LiyCivguIHguLTguKXguKHguLAKK+C4geC4tOC5gOC4peC4mQor4LiB4Li04LmA4Lil4LiqCivguIHguLTguYLguKUKK+C4geC4tOC5guC4peC4oeC4geC4sAor4LiB4Li04LmI4LinCivguIHguLTguYvguKcKK+C4geC4teC5iAor4LiB4Li14LmJCivguIHguLXguYsKK+C4geC4teC4jwor4LiB4Li14LiUCivguIHguLXguJXguLLguKPguYwKK+C4geC4teC4mgor4LiB4Li14Lij4LiV4Li0CivguIHguLXguKfguLUKK+C4geC4teC4rOC4sgor4LiB4Li24LiBCivguIHguLbguIHguJbguK3guIcKK+C4geC4tuC4hwor4LiB4Li24LmI4LiHCivguIHguLbguYvguJkKK+C4geC4uAor4LiB4Li44LiBCivguIHguLjguYrguIEKK+C4geC4uOC4geC5huC4geC4seC4geC5hgor4LiB4Li44LmK4LiB4LmG4LiB4Li04LmK4LiB4LmGCivguIHguLjguIHguIHguLHguIEKK+C4geC4uOC5iuC4geC4geC4tOC5iuC4gQor4LiB4Li44LiB4LiB4Li44LiPCivguIHguLjguIHguIHguLjguKMKK+C4geC4uOC4geC4guC4teC5ieC4q+C4oeC4uQor4LiB4Li44LiB4Lij4Lij4LihCivguIHguLjguIHguYjguK3guIcKK+C4geC4uOC4geC4sAor4LiB4Li44LiB4Li44LiY4Lig4Lix4LiT4LiR4LmMCivguIHguLjguYnguIcKK+C4geC4uOC5ieC4h+C5gOC4leC5ieC4mQor4LiB4Li44LmJ4LiH4Lii4Li04LiHCivguIHguLjguIfguK3guJkKK+C4geC4uOC4h+C4suC4mQor4LiB4Li44LmC4LiH4LiBCivguIHguLjguIjguLUKK+C4geC4uOC4jeC5geC4iAor4LiB4Li44LiN4LiK4LijCivguIHguLjguI4KK+C4geC4uOC4juC4sgor4LiB4Li44LiO4Liy4LiY4Liy4LijCivguIHguLjguI7guLUKK+C4geC4uOC4j+C4kOC4seC4hwor4LiB4Li44LiP4Li0CivguIHguLjguJPguJHguYwKK+C4geC4uOC4k+C4keC4pQor4LiB4Li44LiT4LiR4Li04LiZCivguIHguLjguJPguJHguLUKK+C4geC4uOC4k+C5guC4kQor4LiB4Li44LiT4Liy4LilCivguIHguLjguJPguLQKK+C4geC4uOC4k+C4tQor4LiB4Li44LiUCivguIHguLjguJTguLHguIcKK+C4geC4uOC4lOC4seC5iOC4mQor4LiB4Li44LiU4LiyCivguIHguLjguJfguLHguJPguJHguYwKK+C4geC4uOC4mQor4LiB4Li44LmK4LiZCivguIHguLjguJnguYDguIrguLXguKLguIcKK+C4geC4uOC4meC4i+C4t+C4rQor4LiB4Li44LiZ4LiX4Li1CivguIHguLjguYLguJnguIHguLLguKHguK0KK+C4geC4uOC4mgor4LiB4Li44Lia4LiB4Lix4LiaCivguIHguLjguKEKK+C4geC4uOC5iOC4oQor4LiB4Li44Lih4Lid4Lit4LiiCivguIHguLjguKHguKDguYwKK+C4geC4uOC4oeC4oOC4meC4tOC4ouC4sgor4LiB4Li44Lih4Lig4Lix4LiT4LiR4LmMCivguIHguLjguKHguKDguLIKK+C4geC4uOC4oeC4oOC4tOC4pQor4LiB4Li44Lih4Lig4Li14Lil4LmMCivguIHguLjguKHguKHguLLguKoKK+C4geC4uOC4oeC5gOC4q+C4hwor4LiB4Li44Lih4Liy4LijCivguIHguLjguKHguLLguKPguKXguKzguLTguJXguLIKK+C4geC4uOC4oeC4suC4o+C4sgor4LiB4Li44Lih4Liy4Lij4Li04LiB4LiyCivguIHguLjguKHguLLguKPguLUKK+C4geC4uOC4oeC4uOC4lwor4LiB4Li44LiiCivguIHguLjguYrguKIKK+C4geC4uOC5i+C4ogor4LiB4Li44LmL4Lii4LmGCivguIHguLjguKLguIrguYjguLLguKIKK+C4geC4uOC5iOC4ouC4q+C4peC4uOC5iOC4ouC4quC5ieC4oQor4LiB4Li44Lii4LmA4Liu4LiHCivguIHguLjguKPguKMKK+C4geC4uOC4o+C4sAor4LiB4Li44Lij4Li44LmA4LiB4Lip4LiV4LijCivguIHguLjguKPguLjguIcKK+C4geC4uOC4o+C4uOC4nuC4tOC4meC4l+C5jAor4LiB4Li44Lij4Li44LijCivguIHguLjguYDguKPguLIKK+C4geC4uOC4pQor4LiB4Li44Lil4LiB4Lix4Lil4Lii4LiyCivguIHguLjguKXguIHguLnguJPguLUKK+C4geC4uOC4peC4hOC4uOC4o+C4uAor4LiB4Li44Lil4LiK4LiZCivguIHguLjguKXguIrguLLguJUKK+C4geC4uOC4peC4lOC4tOC4peC4gQor4LiB4Li44Lil4LiX4Li54Liq4LiBCivguIHguLjguKXguJjguKPguKPguKEKK+C4geC4uOC4peC4mOC4tOC4lOC4sgor4LiB4Li44Lil4LiZ4Liy4LiECivguIHguLjguKXguJnguLLguKPguLUKK+C4geC4uOC4peC4meC4suC4qAor4LiB4Li44Lil4Lia4LiU4Li1CivguIHguLjguKXguJrguLjguJXguKMKK+C4geC4uOC4peC4muC4uOC4o+C4uOC4qQor4LiB4Li44Lil4Lie4LiY4Li5CivguIHguLjguKXguKHguLHguIjguInguKPguLTguKLguLAKK+C4geC4uOC4peC4oeC4tOC4leC4owor4LiB4Li44Lil4Lin4Liy4LijCivguIHguLjguKXguYDguKfguJfguLTguJXguLIKK+C4geC4uOC4peC4quC4leC4o+C4tQor4LiB4Li44Lil4Liq4Lix4Lih4Lie4Lix4LiZ4LiY4LmMCivguIHguLjguKXguLIKK+C4geC4uOC4peC4suC4q+C4pQor4LiB4Li44Lil4Li1CivguIHguLjguKXguLXguIHguLjguIjguK0KK+C4geC4uOC4peC4uOC4m+C4geC4suC4iOC4suC4o+C4ouC5jAor4LiB4Li44LmA4Lil4LiyCivguIHguLjguYHguKUKK+C4geC4uOC5hOC4pQor4LiB4Li44Lin4LiwCivguIHguLjguYDguKfguKMKK+C4geC4uOC4qOC4o+C4suC4igor4LiB4Li44Lio4LilCivguIHguLjguKjguYLguKXguJrguLLguKIKK+C4geC4uOC4quC4pQor4LiB4Li44Liq4LiwCivguIHguLjguKrguLjguKEKK+C4geC4uOC4quC4uOC4oeC4oOC5jAor4LiB4Li44Liq4Li44Lih4LiyCivguIHguLjguKrguLjguKHguLLguKXguKLguYwKK+C4geC4uOC4quC4uOC4oeC4tOC4leC4peC4lOC4suC5gOC4p+C4peC4peC4tOC4leC4sgor4LiB4Li44Lir4LiBCivguIHguLjguKvguJnguLUKK+C4geC4uOC4q+C4meC4uOC4hwor4LiB4Li44Lir4Lij4LmI4LiyCivguIHguLjguKvguKXguYjguLIKK+C4geC4uOC4q+C4peC4suC4mgor4LiB4Li44LmB4Lir4Lil4LiwCivguIHguLkKK+C4geC4ueC5iAor4LiB4Li54LmJCivguIHguLnguYrguIEKK+C4geC4ueC4jwor4LiB4Li54LiP4LiyCivguIHguLnguYLguI/guJrguLLguKIKK+C4geC4ueC4k+C4keC5jAor4LiB4Li54LiUCivguIHguLnguJkKK+C4geC4ueC4mgor4LiB4Li54Lib4Lij4Li1CivguIHguLnguKPguKHguLAKK+C4geC4ueC4o+C4oeC4suC4p+C4leC4suC4owor4LiB4Li54Lij4LizCivguYDguIEKK+C5gOC4geC5iAor4LmA4LiB4LmKCivguYDguIHguYsKK+C5gOC4geC5ieC5huC4geC4seC4h+C5hgor4LmA4LiB4LiBCivguYDguIHguYrguIEKK+C5gOC4geC4geC4oeC4sOC5gOC4q+C4o+C4gQor4LmA4LiB4LmK4LiB4Liu4Lin4LiiCivguYDguIHguYnguIHguLHguIcKK+C5gOC4geC5h+C4hwor4LmA4LiB4LmI4LiHCivguYDguIHguYnguIcKK+C5gOC4geC5i+C4hwor4LmA4LiB4LiH4LiB4Lit4LiiCivguYDguIHguYnguIfguIHguYnguLLguIcKK+C5gOC4geC4h+C5gOC4guC4hwor4LmA4LiB4LmL4LiH4LmA4LiE4LiHCivguYDguIHguYfguIgKK+C5gOC4geC4iOC4tOC4reC4suC4iOC4suC4o+C4ouC5jAor4LmA4LiB4LiK4LiyCivguYDguIHguJPguJHguYwKK+C5gOC4geC4k+C4keC5jOC4leC4sOC4nuC4seC4lAor4LmA4LiB4LiUCivguYDguIHguYfguJQKK+C5gOC4geC4leC4uAor4LmA4LiB4LiZCivguYDguIHguYjguJkKK+C5gOC4geC4meC5hgor4LmA4LiB4LmH4LiaCivguYDguIHguKEKK+C5gOC4geC4ogor4LmA4LiB4Lii4LmMCivguYDguIHguKLguLnguKMKK+C5gOC4geC4o+C4hwor4LmA4LiB4Lij4LmH4LiHCivguYDguIHguKPguJQKK+C5gOC4geC4o+C5h+C4lAor4LmA4LiB4Lij4LiZCivguYDguIHguKPguYjguK0KK+C5gOC4geC4o+C4reC4sAor4LmA4LiB4Lij4Liy4LiwCivguYDguIHguKPguLLguLDguYDguJ7guIrguKPguYTguJ7guJHguLnguKPguKLguYwKK+C5gOC4geC4o+C4tOC4gQor4LmA4LiB4Lij4Li04LiZCivguYDguIHguKPguLTguYjguJkKK+C5gOC4geC4o+C4teC4ouC4gQor4LmA4LiB4Lij4Li14Lii4LiHCivguYDguIHguKPguLXguKLguJQKK+C5gOC4geC4o+C4teC4ouC4mQor4LmA4LiB4Lij4Li14Lii4LiaCivguYDguIHguKPguLXguKLguKEKK+C5gOC4geC4o+C4teC4ouC4oeC4geC4o+C4oQor4LmA4LiB4Lij4Li14Lii4LinCivguYDguIHguKPguLXguYnguKLguKcKK+C5gOC4geC4o+C4teC5ieC4ouC4p+C5hgor4LmA4LiB4LmA4LijCivguYDguIHguKXguYfguJQKK+C5gOC4geC4peC4qAor4LmA4LiB4Lil4LitCivguYDguIHguKXguLIKK+C5gOC4geC4peC5ieC4sgor4LmA4LiB4Lil4Liy4LiwCivguYDguIHguKXguLXguYjguKIKK+C5gOC4geC4peC4teC5ieC4ogor4LmA4LiB4Lil4Li14Lii4LiHCivguYDguIHguKXguLXguYnguKLguIcKK+C5gOC4geC4peC4teC4ouC4lAor4LmA4LiB4Lil4Li14Lii4LinCivguYDguIHguKXguLXguYjguKLguKfguJTguLMKK+C5gOC4geC4peC4t+C4rQor4LmA4LiB4Lil4Li34LmJ4LitCivguYDguIHguKXguLfguK3guIEKK+C5gOC4geC4peC4t+C5iOC4reC4mQor4LmA4LiB4Lil4Li34LmJ4Lit4LiZCivguYDguIHguYTguKUKK+C5gOC4geC4p+C4pQor4LmA4LiB4Lin4Lil4Liy4LiX4Li1CivguYDguIHguKfguKXguLTguJkKK+C5gOC4geC4p+C4peC4tQor4LmA4LiB4Lin4Lix4LiPCivguYDguIHguKfguLXguKLguJkKK+C5gOC4geC4qAor4LmA4LiB4Lio4LieCivguYDguIHguKjguKcKK+C5gOC4geC4qOC4sgor4LmA4LiB4Lio4Li04LiZ4Li1CivguYDguIHguKjguLUKK+C5gOC4geC4qeC4leC4owor4LmA4LiB4Lip4LiV4Lij4LiB4LijCivguYDguIHguKnguJXguKPguIHguKPguKPguKEKK+C5gOC4geC4qeC4leC4o+C4muC4lOC4tQor4LmA4LiB4Lip4LiV4Lij4Lio4Liy4Liq4LiV4Lij4LmMCivguYDguIHguKnguKEKK+C5gOC4geC4qeC4teC4ouC4kwor4LmA4LiB4Lip4Li14Lii4LiZCivguYDguIHguKnguLXguKLguKMKK+C5gOC4geC4qgor4LmA4LiB4Liq4LiV4Liy4LmC4LibCivguYDguIHguKrguKMKK+C5gOC4geC4quC4o+C4tQor4LmA4LiB4Liq4LiyCivguYDguIHguKrguLUKK+C5gOC4geC5iOC4q+C4peC4tQor4LmA4LiB4LmJ4LitCivguYDguIHguK3guLTguIrguLIKK+C5gOC4geC4sAor4LmA4LiB4Liw4LiB4LiwCivguYDguIHguLIKK+C5gOC4geC5iOC4sgor4LmA4LiB4LmJ4LiyCivguYDguIHguYvguLIKK+C5gOC4geC4suC4leC5jAor4LmA4LiB4Liy4LiX4Lix4LiT4LiR4LmMCivguYDguIHguLLguJfguLjguKHguJ7guKMKK+C5gOC4geC4suC4muC4tOC4mQor4LmA4LiB4Liy4Lia4Li04LilCivguYDguIHguLLguKHguLLguKMKK+C5gOC4geC4suC4peC4seC4lAor4LmA4LiB4Liy4Lil4Li04LiZCivguYDguIHguLLguKjguLHguKXguKLguYwKK+C5gOC4geC4suC5hOC4qOC4ogor4LmA4LiB4Liy4LmA4Lir4Lil4LiyCivguYDguIHguLLguYDguKvguKXguLXguKLguIcKK+C5gOC4geC5ieC4suC4reC4teC5iQor4LmA4LiB4Liy4LiwCivguYDguIHguLLguLDguYHguIHguLAKK+C5gOC4geC4tOC4hwor4LmA4LiB4Li04LmJ4LiHCivguYDguIHguLTguJQKK+C5gOC4geC4tOC4mQor4LmA4LiB4Li04LiaCivguYDguIHguLXguKIKK+C5gOC4geC4teC4ouC4geC4geC4suC4ogor4LmA4LiB4Li14Lii4LiHCivguYDguIHguLXguYjguKLguIcKK+C5gOC4geC4teC5i+C4ouC4hwor4LmA4LiB4Li14Lii4LiICivguYDguIHguLXguKLguJQKK+C5gOC4geC4teC4ouC4mQor4LmA4LiB4Li14LmJ4Lii4Lih4LmE4LiJ4LmICivguYDguIHguLXguYnguKLguKHguK3guLXguYsKK+C5gOC4geC4teC4ouC4o+C4leC4tAor4LmA4LiB4Li14Lii4Lij4LiV4Li04LmMCivguYDguIHguLXguYjguKLguKcKK+C5gOC4geC4teC5ieC4ouC4pwor4LmA4LiB4Li14LmK4Lii4LinCivguYDguIHguLXguYrguKLguLAKK+C5gOC4geC4t+C5ieC4rQor4LmA4LiB4Li34Lit4LiBCivguYDguIHguLfguYnguK3guIHguLnguKUKK+C5gOC4geC4t+C4reC4mgor4LmB4LiBCivguYHguIHguYgKK+C5geC4geC5iQor4LmB4LiB4LiHCivguYHguIHguYjguIcKK+C5geC4geC5ieC4hwor4LmB4LiB4LmK4LiHCivguYHguIHguIfguILguKEKK+C5geC4geC4h+C5hOC4lAor4LmB4LiB4LiH4LmB4LiZ4LiHCivguYHguIHguYjguIfguYHguKLguYjguIcKK+C5geC4geC5guC4lOC4peC4tOC5gOC4meC4teC4ouC4oQor4LmB4LiB4LiZCivguYHguIHguYjguJkKK+C5geC4geC4meC4sAor4LmB4LiB4LmB4LiZCivguYHguIHguYrguJsKK+C5geC4geC4oQor4LmB4LiB4LmJ4LihCivguYHguIHguKHguKHguLIKK+C5geC4geC4o+C4gQor4LmB4LiB4Lij4LmI4LiHCivguYHguIHguKPguYfguJkKK+C5geC4geC4o+C4meC4tOC4lQor4LmB4LiB4Lij4LmE4Lif4LiV4LmMCivguYHguIHguKPguYjguKcKK+C5geC4geC4o+C4sAor4LmB4LiB4LilCivguYHguIHguKXguYgKK+C5geC4geC4peC5ieC4hwor4LmB4LiB4Lil4LiZCivguYHguIHguKXguJoKK+C5geC4geC4peC5ieC4oQor4LmB4LiB4Lil4Lil4Lit4LiZCivguYHguIHguKXguYDguKXguLXguKLguKEKK+C5geC4geC4peC5ieC4pwor4LmB4LiB4Lil4LiwCivguYHguIHguYHguKUKK+C5geC4geC4pwor4LmB4LiB4LmJ4LinCivguYHguIHguKfguYjguIcKK+C5geC4geC4p+C5iOC4mQor4LmB4LiB4LmH4LiqCivguYHguIHguYrguKoKK+C5geC4geC4sAor4LmC4LiBCivguYLguIHguYgKK+C5guC4geC5iQor4LmC4LiB4LmLCivguYLguIHguIEKK+C5guC4geC4geC4meC4uOC4lwor4LmC4LiB4LiB4Li04LilCivguYLguIHguIHguLTguKXguLIKK+C5guC4geC5guC4geC5iQor4LmC4LiB4LiHCivguYLguIHguYjguIcKK+C5guC4geC4h+C4geC4suC4hwor4LmC4LiB4LmJ4LiH4LmA4LiB4LmJ4LiHCivguYLguIHguIfguYLguIHguYkKK+C5guC4geC5ieC4h+C5guC4hOC5ieC4hwor4LmC4LiB4LmA4LiK4Liy4Lin4LmMCivguYLguIHguI3guIjguJkKK+C5guC4geC4jeC4iOC4sgor4LmC4LiB4LiP4Li0CivguYLguIHguJAKK+C5guC4geC4kOC4suC4qgor4LmC4LiB4LiTCivguYLguIHguJPguIEKK+C5guC4geC4k+C4keC4seC4jeC4jeC4sAor4LmC4LiB4LiU4Lix4LiHCivguYLguIHguJXguYTguJUKK+C5guC4geC4l+C4seC4k+C4keC5jAor4LmC4LiB4LiZCivguYLguIHguYjguJkKK+C5guC4geC5i+C4mQor4LmC4LiB4LiZ4Liy4LiE4Lih4LiZ4LmMCivguYLguIHguYLguJnguYDguKPguLXguKIKK+C5guC4geC4m+C4tOC4meC4swor4LmC4LiB4Lih4LilCivguYLguIHguKHguLLguKPguKDguLHguIjguIjguYwKK+C5guC4geC4oeC4uOC4lwor4LmC4LiB4LmA4Lih4LiZCivguYLguIHguYDguKHguKgKK+C5guC4geC4ogor4LmC4LiB4Lij4LmJCivguYLguIHguKPguIEKK+C5guC4geC4o+C4geC4geC4o+C4suC4gQor4LmC4LiB4Lij4LiHCivguYLguIHguKPguYjguIcKK+C5guC4geC4o+C5iOC4h+C4geC4o+C5iOC4suC4hwor4LmC4LiB4Lij4LiH4LmA4LiB4Lij4LiHCivguYLguIHguKPguYvguIfguYDguIHguKPguYvguIcKK+C5guC4geC4o+C4jeC4iAor4LmC4LiB4Lij4LiUCivguYLguIHguKPguJXguYvguJkKK+C5guC4geC4o+C4mAor4LmC4LiB4Lij4LiY4LiyCivguYLguIHguKPguYvguJkKK+C5guC4geC4o+C4oQor4LmC4LiB4Lij4LiiCivguYLguIHguKPguKgKK+C5guC4geC5guC4o+C5guC4geC5gOC4lQor4LmC4LiB4LmC4Lij4LmC4LiB4LmC4Lij4LiBCivguYLguIHguYLguKPguYLguIHguYLguKoKK+C5guC4geC4peC4hwor4LmC4LiB4Lil4LiZCivguYLguIHguKXguLLguKvguKUKK+C5guC4geC5hOC4pQor4LmC4LiB4Lin4Li04LiXCivguYLguIHguKfguLTguKzguLLguKMKK+C5guC4geC4qAor4LmC4LiB4Lio4LilCivguYLguIHguKkKK+C5guC4geC4qeC4oQor4LmC4LiB4Lip4LiiCivguYLguIHguKoKK+C5guC4geC4quC4mQor4LmC4LiB4Liq4Lix4LiKCivguYLguIHguKrguLTguJnguJfguKPguYwKK+C5guC4geC4quC4teC4ouC5jAor4LmC4LiB4Liq4Li44LihCivguYLguIHguYTguKrguKIKK+C5guC4geC4q+C4gQor4LmC4LiB4Lir4Lin4LiyCivguYLguIHguKvguLHguI0KK+C5g+C4geC4peC5iQor4LmE4LiBCivguYTguIHguYgKK+C5hOC4geC5iQor4LmE4LiB4LmKCivguYTguIHguYsKK+C5hOC4geC5iOC4geC4reC4oQor4LmE4LiB4LmL4LmB4LiU4LiHCivguYTguIHguYjguYDguJXguLXguYnguKIKK+C5hOC4geC5iOC4meC4sgor4LmE4LiB4LmI4Lie4Lix4LilCivguYTguIHguYjguJ/guYnguLIKK+C5hOC4geC4owor4LmE4LiB4Lij4LieCivguYTguIHguKPguKXguLLguKoKK+C5hOC4geC4o+C4qOC4owor4LmE4LiB4Lij4Lio4Lij4Li1CivguYTguIHguKPguKrguKMKK+C5hOC4geC4o+C4quC4tOC4l+C4mOC4tAor4LmE4LiB4LilCivguYTguIHguKXguYgKK+C5hOC4geC4peC4suC4qgor4LmE4LiB4LinCivguYTguIHguKfguLHguKUKK+C5hOC4geC5iOC5hOC4q+C5iQor4LiCCivguILguITguLAKK+C4guC4hOC4suC4mOC4tOC4mwor4LiC4LiE4Liy4Lig4Li04Lij4Liy4LihCivguILguITguLLguKrguJnguLAKK+C4guC5gOC4hOC4qOC4p+C4owor4LiC4LiHCivguILguIfguIjguLfguYrguK0KK+C4guC4iOC4owor4LiC4LiI4Lit4LiBCivguILguIjguLHguJQKK+C4guC4iOC5iOC4suC4hwor4LiC4LiI4Liy4LiiCivguILguIjguLLguKcKK+C4guC4iOC4tOC4lQor4LiC4LiI4Li04Lij4Li04LiUCivguILguIjguLUKK+C4guC4iOC4uOC4ogor4LiC4LmA4LiI4LiyCivguILguJPguLAKK+C4guC4k+C4sOC4iOC4tOC4lQor4LiC4LiT4Li04LiBCivguILguJPguLTguIHguKrguKHguLLguJjguLQKK+C4guC4lAor4LiC4LiU4Liy4LiZCivguILguJXguK3guKIKK+C4guC4l+C4tOC4hwor4LiC4LiX4Li24LiHCivguILguJkKK+C4guC5ieC4mQor4LiC4LiZ4LiHCivguILguJnguIfguYDguJnguLfguYnguK0KK+C4guC4meC4lAor4LiC4LiZ4LiZCivguILguJnguJoKK+C4guC4meC4oQor4LiC4LiZ4Lih4LiI4Li14LiZCivguILguJnguKHguYDguJrguLfguYnguK3guIfguI3guKfguJkKK+C4guC4meC4oeC4m+C4seC4hwor4LiC4LiZ4Lih4Lic4Liq4Lih4LiZ4LmJ4Liz4Lii4LiyCivguILguJnguKHguJzguLHguIHguIHguLLguJQKK+C4guC4meC4oeC5gOC4quC5ieC4mQor4LiC4LiZ4Lih4Lir4Lix4Lin4Lic4Lix4LiB4LiB4Liy4LiUCivguILguJnguK3guIcKK+C4guC4meC4reC4mQor4LiC4LiZ4Lit4LiaCivguILguJnguLHguJQKK+C4guC4meC4seC4mQor4LiC4LiZ4Liy4LiBCivguILguJnguLLguIcKK+C4guC4meC4suC4lAor4LiC4LiZ4Liy4LiZCivguILguJnguLLguJoKK+C4guC4meC4suC4ogor4LiC4LiZ4LizCivguILguJnguLTguKnguJAKK+C4guC4meC4tOC4qeC4kOC4sgor4LiC4LiZ4Li44LiZCivguILguJoKK+C4guC4muC4guC4seC4mQor4LiC4Lia4LiWCivguILguJrguKfguJkKK+C4guC4muC4p+C4owor4LiC4Lia4Li54LijCivguILguKEKK+C4guC5iOC4oQor4LiC4Lih4LiH4LmC4LiB4Lij4LiiCivguILguKHguKEKK+C4guC4oeC4p+C4lAor4LiC4Lih4Lin4LiU4Lii4LiyCivguILguKHguKfguJkKK+C4guC4oeC4q+C4tOC4mQor4LiC4Lih4Lit4LiHCivguILguKHguYjguK3guKEKK+C4guC4oeC4reC4ogor4LiC4Lih4Lix4LiB4LmA4LiC4Lih4LmJ4LiZCivguILguKHguLHguIcKK+C4guC4oeC4seC4mgor4LiC4Lih4LiyCivguILguKHguYnguLMKK+C4guC4oeC4tOC5ieC4mQor4LiC4Lih4Li04LiaCivguILguKHguLXguILguKHguLHguJkKK+C4guC4oeC4tuC4hwor4LiC4Lih4Li4CivguILguKHguLjguIHguILguKHguK3guKEKK+C4guC4oeC4uOC4geC4guC4oeC4seC4pwor4LiC4Lih4Li44LiU4LiC4Lih4Li04LiUCivguILguKHguLjguJoKK+C4guC4oeC4uOC4oQor4LiC4LmC4Lih4LiiCivguILguKLguJQKK+C4guC4ouC4oQor4LiC4Lii4LmI4LihCivguILguKLguKUKK+C4guC4ouC4reC4gQor4LiC4Lii4Lit4LiHCivguILguKLguYjguK3guJkKK+C4guC4ouC5ieC4reC4mQor4LiC4Lii4LiwCivguILguKLguLDguYHguILguKLguIcKK+C4guC4ouC4seC4gQor4LiC4Lii4Lix4LiZCivguILguKLguLHguYnguJkKK+C4guC4ouC4seC4mgor4LiC4Lii4Liy4LiUCivguILguKLguLLguJoKK+C4guC4ouC4suC4ogor4LiC4Lii4LizCivguILguKLguYnguLMKK+C4guC4ouC4tOC4gQor4LiC4Lii4Li04LiaCivguILguKLguLTguYjguKEKK+C4guC4ouC4teC5iQor4LiC4Lii4Li14LmI4LiC4Lii4Lix4LiZCivguILguKLguLjguIHguILguKLguLTguIEKK+C4guC4ouC4uOC4geC4guC4ouC4uOC4ogor4LiC4Lii4Li44LiaCivguILguKLguLjguKEKK+C4guC4ouC4uOC5ieC4oQor4LiC4Lii4Li44LmJ4Lih4LiV4Li14LiZ4Lir4Lih4LiyCivguILguKLguLjguKIKK+C4guC4o+C4oQor4LiC4Lij4Lij4LiE4LmMCivguILguKPguLHguKcKK+C4guC4o+C4tOC4mgor4LiC4Lij4Li1CivguILguKPguLbguKEKK+C4guC4o+C4uOC4guC4o+C4sAor4LiC4Lil4LmJ4LiHCivguILguKXguJoKK+C4guC4peC4oQor4LiC4Lil4Lin4LiZCivguILguKXguYnguK0KK+C4guC4peC4seC4hwor4LiC4Lil4Lix4LiaCivguILguKXguLIKK+C4guC4peC4suC4lAor4LiC4Lil4Liy4LiiCivguILguKXguLTguJoKK+C4guC4peC4tOC4muC4l+C4reC4hwor4LiC4Lil4Li24LiHCivguILguKXguLjguIEKK+C4guC4peC4uOC4mgor4LiC4Lil4Li44LihCivguILguKXguLjguKHguJvguKPguLDguYDguIjguLXguKLguJQKK+C4guC4peC4uOC5iOC4ogor4LiC4Lil4Li5CivguILguKXguLnguYgKK+C4guC4p+C4hwor4LiC4LmI4Lin4LiHCivguILguKfguJQKK+C4guC4p+C4mQor4LiC4LmI4Lin4LiZCivguILguKfguJoKK+C4guC4p+C4ogor4LiC4Lin4Liw4LmE4LiC4Lin4LmI4LmA4LiC4Lin4Li14LmI4LiiCivguILguKfguLHguIHguYTguILguKfguYgKK+C4guC4p+C4seC4jQor4LiC4Lin4Lix4LiN4LmA4Lih4Li34Lit4LiHCivguILguKfguLHguI3guK3guYjguK3guJkKK+C4guC4p+C4seC4lAor4LiC4Lin4Lix4LiU4LiC4Lin4Li04LiUCivguILguKfguLHguJTguYHguITguKfguYnguIcKK+C4guC4p+C4seC5ieC4mQor4LiC4Lin4Lix4LiaCivguILguKfguLIKK+C4guC4p+C4suC4gQor4LiC4Lin4Liy4LiHCivguILguKfguYnguLLguIcKK+C4guC4p+C4suC4lAor4LiC4Lin4Liy4LiZCivguILguKfguLLguKLguILguKfguJkKK+C4guC4p+C4suC4pwor4LiC4Lin4LmJ4Liy4LinCivguILguKfguLTguJQKK+C4guC4qeC4k+C4sAor4LiC4Lip4Lix4LiiCivguILguKnguLXguJPguLLguKjguKPguJ4KK+C4guC4qeC4teC4owor4LiC4LitCivguILguYjguK0KK+C4guC5ieC4rQor4LiC4Lit4LiBCivguILguK3guIcKK+C4guC5ieC4reC4hwor4LiC4Lit4LiH4Lij4Liw4Lit4LiyCivguILguK3guInguLLguKIKK+C4guC4reC4lAor4LiC4Lit4LiZCivguILguYjguK3guJkKK+C4guC5ieC4reC4mQor4LiC4Lit4LiaCivguILguK3guJrguILguYjguLLguKIKK+C4guC4reC4muC5gOC4guC4lQor4LiC4Lit4Lia4LiE4Li44LiTCivguILguK3guJrguYPguIgKK+C4guC4reC4muC4nuC4o+C4sOC4hOC4uOC4kwor4LiC4Lit4Lia4LmA4Lir4Lil4LmH4LiBCivguILguK3guKEKK+C4guC5iOC4reC4ogor4LiC4LmJ4Lit4LiiCivguILguLDguILguLMKK+C4guC4sOC5geC4guC5iOC4mQor4LiC4Liw4LmB4LiC4LmJ4LiZCivguILguLDguYHguIjguLAKK+C4guC4sOC5geC4luC4gQor4LiC4Liw4LiZ4Liy4LiZCivguILguLDguYDguJnguYfguJQKK+C4guC4sOC4oeC4reC4oeC4guC4sOC5geC4oeC4oQor4LiC4Liw4LmB4Lih4LiL4LitCivguILguLDguYHguKHguJjguKEKK+C4guC4sOC4ouC4tOC4gQor4LiC4Liw4Lii4Li44LiBCivguILguLDguYDguKLguYnguK3guYHguILguKLguYjguIcKK+C4guC4sOC5geC4ouC4sAor4LiC4Lix4LiECivguILguLHguIcKK+C4guC4seC4h+C4guC4reC4gQor4LiC4Lix4LiKCivguILguLHguIrguIEKK+C4guC4seC4k+C4keC4quC4geC4owor4LiC4Lix4LiUCivguILguLHguJTguKHguK3guJkKK+C4guC4seC4mQor4LiC4Lix4LmJ4LiZCivguILguLHguJnguYHguILguYfguIcKK+C4guC4seC4meC4leC4tAor4LiC4Lix4LiZ4LiV4Li1CivguILguLHguJnguYLguJXguIEKK+C4guC4seC4meC4l+C4reC4h+C4nuC4ouC4suC4muC4suC4lwor4LiC4Lix4LiZ4LiX4Li1CivguILguLHguJnguJjguYwKK+C4guC4seC4meC4mOC4geC4uOC4oeC4suC4owor4LiC4Lix4LiZ4LiY4Liq4Lix4LiZ4LiU4Liy4LiZCivguILguLHguJnguJjguLLguKfguLLguKMKK+C4guC4seC4meC4q+C4oeC4suC4gQor4LiC4Lix4LiaCivguILguLHguKIKK+C4guC4seC4pwor4LiC4Lix4LmJ4LinCivguILguLIKK+C4guC5iOC4sgor4LiC4LmJ4LiyCivguILguLLguIEKK+C4guC4suC4geC5iuC4p+C4ogor4LiC4Liy4LmA4LiB4Lin4Li14Lii4LiZCivguILguLLguIcKK+C4guC5iOC4suC4hwor4LiC4LmJ4Liy4LiHCivguILguYnguLLguIfguIHguKPguLDguJTguLLguJkKK+C4guC5ieC4suC4h+C5gOC4h+C4tOC4mQor4LiC4Liy4LiH4LmB4LiU4LiHCivguILguYnguLLguIfguJXguLDguYDguKDguLIKK+C4guC5ieC4suC4h+C4peC4suC4ogor4LiC4Liy4LiT4Li4CivguILguLLguJQKK+C4guC4suC4l+C4meC4teC4ouC4sAor4LiC4Liy4LiZCivguILguYjguLLguJkKK+C4guC4suC4mgor4LiC4Liy4LihCivguILguYnguLLguKEKK+C4guC4suC4ogor4LiC4LmI4Liy4LiiCivguILguLLguKUKK+C4guC4suC4pwor4LiC4LmI4Liy4LinCivguILguYnguLLguKcKK+C4guC5ieC4suC4p+C4hOC4swor4LiC4LmJ4Liy4Lin4LiI4Li14LmICivguILguLLguKfguIjguLXguJoKK+C4guC5ieC4suC4p+C4leC5ieC4oQor4LiC4LmJ4Liy4Lin4LiV4Lit4LiBCivguILguYnguLLguKfguJnguIEKK+C4guC4suC4p+C4nuC4p+C4hwor4LiC4Liy4Lin4Lih4LmJ4LiyCivguILguYnguLLguKfguKHguLTguYjguJkKK+C4guC5ieC4suC4p+C5gOC4ouC5h+C4meC5g+C4leC5iQor4LiC4LmJ4Liy4Lin4LmA4Lii4LmH4LiZ4LmA4Lir4LiZ4Li34LitCivguILguYnguLLguKfguKrguLLguKMKK+C4guC5ieC4suC4p+C4q+C4suC4h+C4iuC5ieC4suC4hwor4LiC4Liy4Lin4LmD4Lir4LiN4LmICivguILguYnguLLguKfguYPguKvguKHguYjguJnguYnguK3guKIKK+C4guC5ieC4suC4p+C5g+C4q+C4oeC5iOC5g+C4q+C4jeC5iAor4LiC4LmJ4Liy4Lio4Li24LiBCivguILguYnguLLguKvguKXguKfguIcKK+C4guC5ieC4suC4q+C4peC4p+C4h+C4q+C4peC4seC4h+C4peC4suC4ogor4LiC4LizCivguILguYjguLPguYDguILguLXguKLguKcKK+C4guC4tOC4gQor4LiC4Li04LiB4LmGCivguILguLTguIcKK+C4guC4tOC5iOC4hwor4LiC4Li04Lib4Liq4Lix4LiX4LmC4LiXCivguILguLTguKEKK+C4guC4teC5iAor4LiC4Li14LmJCivguILguLXguYnguIHguLIKK+C4guC4teC5ieC4geC4suC4lOC4hwor4LiC4Li14LmJ4LiB4Liy4LmB4LiU4LiHCivguILguLXguYnguIHguLLguYDguKvguKXguLXguYjguKLguKEKK+C4guC4teC5ieC4guC4oQor4LiC4Li14LmJ4LiC4Lin4LiHCivguILguLXguYnguILguLjguKIKK+C4guC4teC5ieC4hOC4o+C4reC4gQor4LiC4Li14LmJ4LiE4Lin4Liy4LiiCivguILguLXguYnguYLguITguKPguIcKK+C4guC4teC4k+C4sAor4LiC4Li14LiT4Liy4Liq4LieCivguILguLXguJQKK+C4guC4teC5ieC4leC4seC4h+C4meC4tQor4LiC4Li14LmJ4LiV4Li04LmJ4LinCivguILguLXguYnguYTguJXguYkKK+C4guC4teC5ieC5hOC4lgor4LiC4Li14Lib4LiZ4Liy4Lin4Li44LiYCivguILguLXguYnguJzguLbguYnguIcKK+C4guC4teC5ieC4oeC4reC4lAor4LiC4Li14LmJ4Lii4Lit4LiBCivguILguLXguYnguKPguLLguJQKK+C4guC4teC5ieC5geC4o+C4lAor4LiC4Li14LmJ4Liq4Li54LiUCivguILguLXguYnguKvguJnguK3guJkKK+C4guC4teC5ieC4q+C4meC5ieC4sgor4LiC4Li14LmJ4Lir4LiZ4Li5CivguILguLXguYnguKvguKHguLkKK+C4guC4teC5ieC5gOC4q+C4peC5h+C4gQor4LiC4Li14LmJ4Lit4LmJ4LiZCivguILguLXguYnguK3guYnguLLguKIKK+C4guC4tuC4hwor4LiC4Li24LmJ4LiHCivguILguLbguYnguJkKK+C4guC4tuC5ieC4meC4ieC5iOC4suC4ogor4LiC4Li34LiZCivguILguLfguYjguJkKK+C4guC4t+C5iOC4rQor4LiC4Li34LmI4Lit4Lic4Li1CivguILguLjguIEKK+C4guC4uOC4lAor4LiC4Li44LiX4LiX4LiB4LiZ4Li04LiB4Liy4LiiCivguILguLjguJkKK+C4guC4uOC5iOC4mQor4LiC4Li44LiZ4LiX4Lit4LiHCivguILguLjguJnguYHguJzguJkKK+C4guC4uOC4meC5gOC4nuC5h+C4lAor4LiC4Li44Lib4Lib4Li04Lib4Liy4Liq4Li04LiB4LmA4Lib4Lij4LiVCivguILguLjguKEKK+C4guC4uOC4ogor4LiC4Li5CivguILguLnguYgKK+C4guC4ueC4lAor4LmA4LiCCivguYDguILguYkKK+C5gOC4guC4gQor4LmA4LiC4LmH4LiHCivguYDguILguYjguIcKK+C5gOC4guC4iOC4owor4LmA4LiC4LmH4LiNCivguYDguILguYfguI3guYPguIgKK+C5gOC4guC5h+C4lAor4LmA4LiC4LiU4LiyCivguYDguILguJUKK+C5gOC4guC4mQor4LmA4LiC4LmH4LiZCivguYDguILguYjguJkKK+C5gOC4guC4meC4hwor4LmA4LiC4LiZ4LmH4LiUCivguYDguILguJnguKIKK+C5gOC4guC4muC5h+C4iOC4guC4muC4p+C4mQor4LmA4LiC4Lia4LmH4LiVCivguYDguILguYfguKEKK+C5gOC4guC5ieC4oQor4LmA4LiC4LmJ4Lih4LiC4Liy4LiaCivguYDguILguKHguYfguIcKK+C5gOC4guC4oeC5h+C4lOC5geC4guC4oeC5iAor4LmA4LiC4Lih4LmI4LiZCivguYDguILguKHguYnguJkKK+C5gOC4guC4oeC5ieC4meC4guC4sOC4oeC4seC4gQor4LmA4LiC4Lih4LijCivguYDguILguKHguLIKK+C5gOC4guC4oeC5iOC4sgor4LmA4LiC4Lih4Liy4LmC4LiB4Lij4LiiCivguYDguILguKHguLfguK3guJoKK+C5gOC4guC4ogor4LmA4LiC4Lii4LiBCivguYDguILguKLguYjguIcKK+C5gOC4guC4ouC4leC4suC4ogor4LmA4LiC4Lii4LmJ4Lit4LmB4LiC4Lii4LmI4LiHCivguYDguILguKLguK3guLDguILguKLguLAKK+C5gOC4guC4ouC5iOC4sgor4LmA4LiC4Lii4Li04LiZCivguYDguILguKLguLTguJoKK+C5gOC4guC4ouC4teC4ouC4p+C4guC4ouC4reC4mQor4LmA4LiC4Lii4Li34LmJ4Lit4LiZCivguYDguILguKPguK3guLAKK+C5gOC4guC4peC4hwor4LmA4LiC4Lil4Lit4LiwCivguYDguILguKXguLAKK+C5gOC4guC4peC4sgor4LmA4LiC4Lil4Liy4LiwCivguYDguILguKcKK+C5gOC4guC4qeC4leC4owor4LmA4LiC4Lip4LihCivguYDguILguKnguLXguKLguKMKK+C5gOC4guC4rOC4sAor4LmA4LiC4Liw4LiC4LiwCivguYDguILguLIKK+C5gOC4guC5iOC4sgor4LmA4LiC4LmJ4LiyCivguYDguILguYnguLLguKvguKHguLTguYnguJkKK+C5gOC4guC4tOC4hwor4LmA4LiC4Li04LiZCivguYDguILguLTguJoKK+C5gOC4guC4teC5iOC4ogor4LmA4LiC4Li14Lii4LiHCivguYDguILguLXguKLguIfguJ7guKPguLDguJnguLLguIfguK3guLXguYgKK+C5gOC4guC4teC4ouC4h+C4nuC4o+C5ieC4sgor4LmA4LiC4Li14Lii4LiUCivguYDguILguLXguKLguJkKK+C5gOC4guC4teC5iOC4ouC4mQor4LmA4LiC4Li14Lii4LihCivguYDguILguLXguKLguKcKK+C5gOC4guC4teC5ieC4ouC4pwor4LmA4LiC4Li14Lii4LiwCivguYDguILguLfguK0KK+C5gOC4guC4t+C4reC4hwor4LmA4LiC4Li34LmI4Lit4LiHCivguYDguILguLfguYjguK3guJkKK+C5gOC4guC4t+C4reC4oQor4LmB4LiCCivguYHguILguYkKK+C5geC4guC4gQor4LmB4LiC4LiB4LmA4LiV4LmJ4LiyCivguYHguILguYfguIcKK+C5geC4guC5iOC4hwor4LmB4LiC4LmJ4LiHCivguYHguILguJkKK+C5geC4guC5iOC4mQor4LmB4LiC4LmJ4LiZCivguYHguILguJnguIcKK+C5geC4guC4meC4sAor4LmB4LiC4LihCivguYHguILguKHguYfguJoKK+C5geC4guC4oeC5iOC4pwor4LmB4LiC4Lii4LmH4LiB4LmGCivguYHguILguKLguIcKK+C5geC4guC4ouC5iOC4hwor4LmB4LiC4Lii4LiH4Lir4LiZ4Li5CivguYHguILguKXguLAKK+C5geC4guC4p+C4gQor4LmB4LiC4Lin4LiHCivguYHguILguKfguJkKK+C5geC4guC4p+C4meC4peC4reC4ogor4LmB4LiC4Lin4LiwCivguYHguILguKrguKPguYwKK+C5guC4ggor4LmC4LiC4LiBCivguYLguILguYjguIcKK+C5guC4guC4lAor4LmC4LiC4LiU4LiHCivguYLguILguJkKK+C5guC4guC4meC4hwor4LmC4LiC4LihCivguYLguILguKHguIcKK+C5guC4guC4oeC4lAor4LmC4LiC4Lih4LiU4Lii4LiyCivguYLguILguKLguIEKK+C5guC4guC4ouC4hwor4LmC4LiC4Lii4LmI4LiHCivguYLguILguKLguJQKK+C5guC4guC4ouC4oQor4LmC4LiC4Lil4LiBCivguYLguILguKXguIHguYYKK+C5guC4guC4peC4hwor4LmC4LiC4Lil4LiZCivguYLguILguKXguJnguJfguKfguLLguKMKK+C5guC4guC4qeC4oQor4LmE4LiCCivguYTguILguYgKK+C5hOC4guC5iQor4LmE4LiC4LmI4LiU4Lix4LiZCivguYTguILguYjguKHguLjguIEKK+C5hOC4guC4o+C4sgor4LmE4LiC4Lin4LmICivguYTguILguKfguYkKK+C5hOC4guC4qeC4ogor4LmE4LiC4Liq4Li34LitCivguYTguILguYDguKrguJnguLXguKLguJQKK+C5hOC4guC4q+C4uQor4LmE4LiC4LmI4LmA4Lir4Lil4Li34Lit4LiHCivguIQKK+C4hOC4gQor4LiE4LiE4LiZ4LiwCivguITguITguJnguLHguKHguJ7guKMKK+C4hOC4hOC4meC4suC4h+C4hOC5jAor4LiE4LiE4LiZ4Liy4LiZ4LiV4LmMCivguITguIcKK+C4hOC4h+C4hOC4sgor4LiE4LiH4LiE4Liy4LmA4LiU4Li34Lit4LiUCivguITguIfguYTguITguKIKK+C4hOC4iuC4o+C4suC4igor4LiE4LiK4Liq4LmI4Liy4LiZCivguITguIrguLLguIrguLLguJXguLQKK+C4hOC4iuC4suC4iuC4teC4ngor4LiE4LiK4Liy4LiY4Liy4LijCivguITguIrguLLguKDguKPguJPguYwKK+C4hOC4iuC4suC4ouC4uOC4o+C5gOC4p+C4igor4LiE4LiK4Liy4Lij4Li1CivguITguIrguLTguJnguJfguKMKK+C4hOC5gOC4iuC4meC4l+C4o+C5jAor4LiE4LiT4LiZCivguITguJPguJnguLIKK+C4hOC4k+C5guC4oOC4iuC4meC5jAor4LiE4LiT4LiwCivguITguJPguLTguIHguLIKK+C4hOC4k+C4tOC4lQor4LiE4LmA4LiT4LioCivguITguJQKK+C4hOC4lOC4tQor4LiE4LiVCivguITguJXguLQKK+C4hOC4l+C4sgor4LiE4LiZCivguITguYnguJkKK+C4hOC4meC4l+C4sgor4LiE4LiZ4LiX4Li04Liq4LitCivguITguJnguJfguLTguKrguK3guJfguLDguYDguKUKK+C4hOC4meC4l+C4tQor4LiE4LiZ4LiX4Li14LmA4LiC4Lih4LiyCivguITguJnguJfguLXguKrguK0KK+C4hOC4meC5guC4lwor4LiE4LiZ4LiY4LmMCivguITguJnguJjguKPguKPguJ7guYwKK+C4hOC4meC4peC4sAor4LiE4LmA4LiZ4LiI4LijCivguITguJoKK+C4hOC4oQor4LiE4Lih4LiZ4LmMCivguITguKHguJnguLLguIHguLLguKMKK+C4hOC4oeC4meC4suC4hOC4oQor4LiE4Lih4Li04LiB4Lig4Lix4LiVCivguITguKPguIEKK+C4hOC4o+C5iOC4hwor4LiE4Lij4LiaCivguITguKPguJrguJbguYnguKfguJkKK+C4hOC4o+C4o+C4iuC4tOC4lQor4LiE4Lij4Lij4LigCivguITguKPguKPguKDguYwKK+C4hOC4o+C4o+C4oOC4mOC4suC4leC4uAor4LiE4Lij4Lij4Lig4Lih4LilCivguITguKPguKPguKDguLLguJjguLLguJkKK+C4hOC4o+C4o+C5guC4oOC4l+C4owor4LiE4Lij4Lij4Lil4Lit4LiHCivguITguKPguKPguYLguKXguIcKK+C4hOC4o+C4o+C5hOC4pQor4LiE4Lij4Lij4Lir4Li04LiVCivguITguKPguKfguI0KK+C4hOC4o+C4p+C4jeC4q+C4sgor4LiE4Lij4Lin4Lix4LiBCivguITguKPguKfguLUKK+C4hOC4o+C4q+C4sgor4LiE4Lij4Lit4LiBCivguITguKPguK3guIcKK+C4hOC4o+C4reC4h+C5geC4hOC4o+C4hwor4LiE4Lij4LmI4Lit4LmA4LiH4Liy4LiwCivguITguKPguYjguK3guYDguJfguLXguKLguJkKK+C4hOC4o+C4reC4mgor4LiE4Lij4Lit4Lia4LiI4Lix4LiB4Lij4Lin4Liy4LilCivguITguKPguK3guJrguJXguKXguLHguJoKK+C4hOC4o+C5iOC4reC4oQor4LiE4Lij4LiwCivguITguKPguLDguYDguKHguLTguJkKK+C4hOC4o+C4sOC5geC4peC4hwor4LiE4Lij4Liw4LmE4LilCivguITguKPguLDguYHguKfguIcKK+C4hOC4o+C4sOC4q+C4mQor4LiE4Lij4Liw4Lir4Lin4LiZCivguITguKPguLDguKvguLLguKIKK+C4hOC4o+C4sOC4q+C4tOC4pwor4LiE4Lij4Liw4LmC4Lir4LiiCivguITguKPguLHguYjguIcKK+C4hOC4o+C4seC5ieC4hwor4LiE4Lij4Lix4LiU4LmA4LiE4Lij4LmI4LiHCivguITguKPguLHguJkKK+C4hOC4o+C4seC5iOC4mQor4LiE4Lij4Lix4LmJ4LiZCivguITguKPguLHguJoKK+C4hOC4o+C4seC4pwor4LiE4Lij4LiyCivguITguKPguYjguLIKK+C4hOC4o+C4suC4gQor4LiE4Lij4Liy4LiHCivguITguKPguLLguI0KK+C4hOC4o+C4suC4lAor4LiE4Lij4LmJ4Liy4LiZCivguITguKPguLLguJoKK+C4hOC4o+C4suC4muC4q+C4oeC4uQor4LiE4Lij4Liy4LihCivguITguKPguYnguLLguKEKK+C4hOC4o+C4suC4oeC4hOC4o+C4seC4mQor4LiE4Lij4Liy4LinCivguITguKPguYjguLLguKcKK+C4hOC4o+C4suC4qgor4LiE4Lij4LizCivguITguKPguYjguLMKK+C4hOC4o+C4tOC4m+C4l+C4reC4mQor4LiE4Lij4Li04Liq4LiV4LmMCivguITguKPguLXguITguKPguK0KK+C4hOC4o+C4teC4mgor4LiE4Lij4Li14LihCivguITguKPguLXguKnguKHguLLguKLguLHguJkKK+C4hOC4o+C4tgor4LiE4Lij4Li24LiB4LiE4Lij4Li34LmJ4LiZCivguITguKPguLbguIHguYLguITguKPguKEKK+C4hOC4o+C4tuC5iOC4hwor4LiE4Lij4Li24LiZCivguITguKPguLbguKEKK+C4hOC4o+C4tuC5ieC4oQor4LiE4Lij4Li24Lih4LiE4Lij4Li4CivguITguKPguLfguJQKK+C4hOC4o+C4t+C4mQor4LiE4Lij4Li34LmJ4LiZCivguITguKPguLfguJnguITguKPguLHguYjguJkKK+C4hOC4o+C4t+C5ieC4meC4hOC4o+C4tuC4gQor4LiE4Lij4Li34LmJ4LiZ4LmA4LiE4Lij4LiHCivguITguKPguLfguK0KK+C4hOC4o+C4uAor4LiE4Lij4Li44LiE4Lij4LiwCivguITguKPguLjguJEKK+C4hOC4o+C4uOC4keC4geC4o+C4sOC4l+C4hwor4LiE4Lij4Li44LmI4LiZCivguITguKPguLjguYjguJnguITguLTguJQKK+C4hOC4o+C4uOC4oeC5gOC4hOC4o+C4t+C4rQor4LiE4Lij4Li44LiiCivguITguKPguLjguKfguJnguLIKK+C4hOC4o+C4uQor4LiE4Lij4Li54LmICivguITguKPguLnguJQKK+C4hOC4pOC5guC4huC4qQor4LiE4Lik4LiZ4LiW4LmMCivguITguKTguKsKK+C4hOC4pOC4q+C4muC4lOC4tQor4LiE4Lik4Lir4Lib4Lix4LiV4LiZ4Li1CivguITguKTguKvguLHguKrguJbguYwKK+C4hOC4pOC4q+C4sgor4LiE4Lik4Lir4Liy4Liq4LiZ4LmMCivguITguKUKK+C4hOC4peC4p+C4hwor4LiE4Lil4LitCivguITguKXguYnguK0KK+C4hOC4peC4reC4gQor4LiE4Lil4Lit4LiHCivguITguKXguYjguK3guIcKK+C4hOC4peC5ieC4reC4hwor4LiE4Lil4Lit4LiUCivguITguKXguK3guJkKK+C4hOC4peC5ieC4reC4ogor4LiE4Lil4Lit4Lij4Li14LiZCivguITguKXguK3guYLguKPguJ/guK3guKPguKHguYwKK+C4hOC4peC4reC5guC4o+C4n+C4teC4peC4peC5jAor4LiE4Lil4LiwCivguITguKXguLDguITguKXguLjguYnguIcKK+C4hOC4peC4seC4gQor4LiE4Lil4Lix4LmI4LiBCivguITguKXguLHguYjguIHguYYKK+C4hOC4peC4seC4hwor4LiE4Lil4Lix4LmI4LiHCivguITguKXguLHguJXguIrguYwKK+C4hOC4peC4seC4mgor4LiE4Lil4Lix4Lia4LiE4Lil4LmJ4Liy4LiiCivguITguKXguLIKK+C4hOC4peC5ieC4sgor4LiE4Lil4Liy4LiH4LmB4LiE4Lil4LiHCivguITguKXguLLguJQKK+C4hOC4peC4suC4mQor4LiE4Lil4Liy4LiiCivguITguKXguYnguLLguKIKK+C4hOC4peC5ieC4suC4ouC4hOC4peC4tuC4hwor4LiE4Lil4LmI4Liy4LinCivguITguKXguLLguKgKK+C4hOC4peC4swor4LiE4Lil4LmI4LizCivguITguKXguYnguLMKK+C4hOC4peC4tOC4hwor4LiE4Lil4Li04LmJ4LiH4LmC4LiE4Lil4LiHCivguITguKXguLTguJnguLTguIEKK+C4hOC4peC4tQor4LiE4Lil4Li14LmICivguITguKXguLbguIcKK+C4hOC4peC4t+C5iOC4mQor4LiE4Lil4Li34LmI4LiZ4LmE4Liq4LmJCivguITguKXguLfguYjguJnguYDguKvguLXguKLguJkKK+C4hOC4peC4uOC4gQor4LiE4Lil4Li44LiB4LiE4Lil4Liy4LiZCivguITguKXguLjguYnguIcKK+C4hOC4peC4uOC4mgor4LiE4Lil4Li44LihCivguITguKXguLjguYjguKEKK+C4hOC4peC4uOC5ieC4oQor4LiE4Lin4LiHCivguITguKfguJMKK+C4hOC4p+C4mQor4LiE4Lin4LiaCivguITguKfguJrguYHguJnguYjguJkKK+C4hOC4p+C4ogor4LiE4Lin4LijCivguITguKfguLHguIEKK+C4hOC4p+C4seC4geC4hOC5ieC4reC4mQor4LiE4Lin4Lix4LmI4LiH4LiE4Lin4LmJ4Liy4LiHCivguITguKfguLHguJkKK+C4hOC4p+C4seC5iOC4mQor4LiE4Lin4LmJ4LiyCivguITguKfguLLguIEKK+C4hOC4p+C5ieC4suC4hwor4LiE4Lin4Liy4LiNCivguITguKfguLLguJkKK+C4hOC4p+C5ieC4suC4mQor4LiE4Lin4Liy4LihCivguITguKfguLLguKHguITguKXguLLguJQKK+C4hOC4p+C4suC4oeC5gOC4hOC4o+C4teC4ouC4lAor4LiE4Lin4Liy4Lih4LmB4LiE4LmJ4LiZCivguITguKfguLLguKHguYDguInguLfguYjguK3guKIKK+C4hOC4p+C4suC4oeC4iuC4t+C5ieC4mQor4LiE4Lin4Liy4Lih4LiW4LmI4Lin4LiHCivguITguKfguLLguKHguJbguLXguYgKK+C4hOC4p+C4suC4oeC4ouC4suC4p+C4hOC4peC4t+C5iOC4mQor4LiE4Lin4Liy4Lih4Lij4Li54LmJ4Liq4Li24LiB4LmA4LiC4Li34LmI4Lit4LiHCivguITguKfguLLguKHguKPguLnguYnguKrguLbguIHguJTguYnguK3guKIKK+C4hOC4p+C4suC4oeC4o+C4ueC5ieC4quC4tuC4geC5gOC4lOC5iOC4mQor4LiE4Lin4Liy4Lih4LmA4Lij4LmI4LiHCivguITguKfguLLguKHguYDguKPguYfguKcKK+C4hOC4p+C4suC4oeC4q+C4meC5iOC4p+C4hwor4LiE4Lin4Liy4LiiCivguITguKfguYjguLLguKcKK+C4hOC4p+C5iOC4swor4LiE4Lin4Li04LiZ4Li04LiZCivguITguKfguLTguKfguYYKK+C4hOC4p+C4tOC4p+C4hOC4p+C4seC4hwor4LiE4Lin4Li04Lin4LiE4Lin4LmI4Liy4LiHCivguITguKfguLTguKfguITguKfguYnguLLguIcKK+C4hOC4p+C4teC4meC4quC4tOC4o+C4tOC4geC4tOC4leC4tOC5jAor4LiE4Lir4Lix4LiQCivguITguK0KK+C4hOC5ieC4rQor4LiE4Lit4LiBCivguITguYfguK3guIHguITguLHguKoKK+C4hOC5h+C4reC4geC5gOC4l+C4pQor4LiE4Lit4LiE4Liy4LiZCivguITguK3guYDguITguIvguK3guKLguJTguYwKK+C4hOC4reC4h+C5gOC4geC4o+C4qgor4LiE4LmI4Lit4LiH4Lit4LmJ4Lit4LiiCivguITguK3guJQKK+C4hOC4reC5gOC4leC5h+C4mgor4LiE4Lit4LiZCivguITguYjguK3guJkKK+C4hOC5ieC4reC4mQor4LiE4Lit4LiZ4LiB4Lij4Li14LiVCivguITguYnguK3guJnguIHguKXguK3guIcKK+C4hOC4reC4meC5gOC4lOC4meC5gOC4i+C4reC4o+C5jAor4LiE4LmJ4Lit4LiZ4LiV4Li14LiZ4Lir4Lih4LiyCivguITguYnguK3guJnguJfguK3guIcKK+C4hOC4reC4meC4p+C4reC4ogor4LiE4Lit4LiZ4LmB4Lin4LiZ4LiV4LmMCivguITguK3guJnguYDguKrguLTguKPguYzguJUKK+C4hOC5ieC4reC4meC4q+C4reC4ogor4LiE4Lit4LiaCivguITguK3guKEKK+C4hOC5iOC4reC4oQor4LiE4LmJ4Lit4LihCivguITguK3guKHguJ7guLTguKfguYDguJXguK3guKPguYwKK+C4hOC4reC4oeC4oeC4suC4meC5guC4lAor4LiE4Lit4Lih4Lih4Li04Lin4LiZ4Li04Liq4LiV4LmMCivguITguK3guKIKK+C4hOC5iOC4reC4ogor4LiE4LmJ4Lit4LiiCivguITguYjguK3guKLguYYKK+C4hOC4reC4ouC4peC5jAor4LiE4Lit4Lij4LmM4LiUCivguITguK3guKPguYzguJUKK+C4hOC4reC4o+C4seC4m+C4iuC4seC5iOC4mQor4LiE4Lit4Lil4Lix4Lih4LiZ4LmMCivguITguK3guYDguKXguKrguYDguJXguK3guKPguK3guKUKK+C4hOC4reC5geC4peC4mQor4LiE4Lit4Liq4LiV4Li04LiB4LmC4LiL4LiU4LiyCivguITguK3guYHguKvguYnguIcKK+C4hOC4sAor4LiE4LmI4LiwCivguITguLDguYTguILguKfguYgKK+C4hOC4sOC4hOC5ieC4reC4ogor4LiE4Liw4LiE4Liy4LiZCivguITguLDguITguLbguIcKK+C4hOC4sOC4meC4mQor4LiE4Liw4LiZ4Lit4LiHCivguITguLDguJnguYnguLIKK+C4hOC4sOC4meC4tuC4hwor4LiE4Liw4LmA4LiZCivguITguLDguYDguJnguIfguKPguYnguLLguKIKK+C4hOC4sOC5gOC4meC5h+C4lAor4LiE4Liw4LmB4LiZ4LiZCivguITguLDguYPguJkKK+C4hOC4sOC4oeC4swor4LiE4Liw4Lih4Li24LiBCivguITguLDguKLguLHguYnguJnguITguLDguKLguK0KK+C4hOC4sOC5gOC4ouC4rQor4LiE4Lix4LiBCivguITguLHguYjguIEKK+C4hOC4seC4hOC4mQor4LiE4Lix4LiE4LiZ4LiwCivguITguLHguITguJnguLHguKHguJ7guKMKK+C4hOC4seC4hOC4meC4suC4h+C4hOC5jAor4LiE4Lix4LiE4LiZ4Liy4LiZ4LiV4LmMCivguITguLHguYjguIcKK+C4hOC4seC4h+C5hOC4hOC4ogor4LiE4Lix4LiI4LiJCivguITguLHguJPguJHguKHguLLguKXguLIKK+C4hOC4seC4k+C4keC4quC4ueC4leC4owor4LiE4Lix4LiUCivguITguLHguJTguYDguITguYnguLIKK+C4hOC4seC4lOC4iuC5ieC4reC4mQor4LiE4Lix4LiU4Lih4Lit4LiZCivguITguLHguJfguKXguLXguKLguLIKK+C4hOC4seC4mQor4LiE4Lix4LmI4LiZCivguITguLHguYnguJkKK+C4hOC4seC4meC4iOC4suC4oQor4LiE4Lix4LiZ4LiJ4Liy4LiiCivguITguLHguJnguYLguJTguIcKK+C4hOC4seC4meC4l+C4o+C4hwor4LiE4Lix4LiZ4LiYCivguITguLHguJnguJjguYwKK+C4hOC4seC4meC4mOC4suC4o+C4o+C4suC4qeC4juC4o+C5jAor4LiE4Lix4LiZ4Lir4Liy4Lih4LmA4Liq4Li34LitCivguITguLHguJoKK+C4hOC4seC4muC4hOC5ieC4reC4mQor4LiE4Lix4Lia4LiE4LiyCivguITguLHguJrguYHguIQKK+C4hOC4seC4nuC4oOC5jAor4LiE4Lix4Lie4LmC4Lig4LiX4LijCivguITguLHguKHguKDguLXguKPguYwKK+C4hOC4seC4pQor4LiE4Lix4LinCivguITguLHguYjguKcKK+C4hOC4sgor4LiE4LmI4LiyCivguITguYnguLIKK+C4hOC5iOC4suC4hOC4mgor4LiE4Liy4LiHCivguITguYjguLLguIcKK+C4hOC5ieC4suC4hwor4LiE4Liy4LiH4LiE4LiBCivguITguYnguLLguIfguITguLLguKcKK+C4hOC4suC4lAor4LiE4Liy4LiU4LiE4Lix4LmJ4LiZCivguITguLLguJbguLIKK+C4hOC4suC4l+C4reC4peC4tOC4gQor4LiE4LmI4Liy4LiX4Li14LmICivguITguLLguJgKK+C4hOC4suC5gOC4mOC4ouC5jAor4LiE4Liy4LiZCivguITguYnguLLguJkKK+C4hOC4suC4meC5ieC4sgor4LiE4Liy4LiaCivguITguLLguJ7guKLguLjguJUKK+C4hOC4suC4oQor4LiE4Liy4Lih4LiT4Li14Lii4LmMCivguITguLLguKHguKDguLXguKPguYwKK+C4hOC4suC4oeC4tQor4LiE4Liy4LiiCivguITguYjguLLguKIKK+C4hOC4suC4ouC4gQor4LiE4Liy4Lii4Lix4LiZCivguITguLLguKPguYzguJrguK3guJkKK+C4hOC4suC4o+C5jOC4muC4reC4meC5hOC4lOC4reC4reC4geC5hOC4i+C4lOC5jAor4LiE4Liy4Lij4LmM4Lia4Lit4LiZ4Lih4Lit4LiZ4Lit4LiB4LmE4LiL4LiU4LmMCivguITguLLguKPguYzguJrguK3guYDguJnguJUKK+C4hOC4suC4o+C5jOC4muC4reC4peC4tOC4gQor4LiE4Liy4Lij4LmM4Lia4Li54LmA4Lij4LmA4LiV4Lit4Lij4LmMCivguITguLLguKPguYzguYLguJrguKPguLHguJnguJTguLHguKEKK+C4hOC4suC4o+C5jOC5guC4muC5hOC4ruC5gOC4lOC4o+C4lQor4LiE4Liy4Lij4LieCivguITguLLguKPguKEKK+C4hOC4suC4o+C4p+C4sAor4LiE4Liy4Lij4Liy4LmA4LiV4LmJCivguITguLLguKPguLLguKfguLLguJkKK+C4hOC4suC4pwor4LiE4LmI4Liy4LinCivguITguYnguLLguKcKK+C4hOC4suC4p+C4leC4reC4hwor4LiE4Liy4Lin4Li1CivguITguLLguKfguLjguJUKK+C4hOC4suC4qgor4LiE4LmI4Liy4Lir4LiUCivguITguLMKK+C4hOC5iOC4swor4LiE4LmJ4LizCivguITguLPguJTguLXguITguKfguLLguKIKK+C4hOC4s+C5g+C4leC5iQor4LiE4Liz4LiZ4Lin4LiTCivguITguLPguJnguKfguKMKK+C4hOC4s+C4meC4seC4mgor4LiE4Liz4LiZ4Lix4LilCivguITguLPguJnguLbguIcKK+C4hOC4s+C4meC4ueC4kwor4LiE4Liz4LmC4Lia4LilCivguITguLPguJ3guK3guKIKK+C4hOC4s+C5gOC4nuC4peC4tOC4hwor4LiE4Liz4Lij4LiZCivguITguLPguKPguJoKK+C4hOC4s+C4o+C4suC4oQor4LiE4Liz4LmB4Liq4LiUCivguITguLPguYHguKvguIcKK+C4hOC4s+C5guC4reC4hwor4LiE4Li04LiB4LmGCivguITguLTguIcKK+C4hOC4tOC4lAor4LiE4Li04LiZ4Li0CivguITguLTguKHguKsKK+C4hOC4tOC4oeC4q+C4seC4meC4leC5jAor4LiE4Li04Lih4Lir4Liy4LiZ4LiwCivguITguLTguKPguLQKK+C4hOC4tOC4o+C4tQor4LiE4Li04Lil4Liy4LiZ4LiwCivguITguLTguKcKK+C4hOC4tOC5ieC4pwor4LiE4Li04Lir4Li04Liq4Li44LiCCivguITguLXguYgKK+C4hOC4teC4lQor4LiE4Li14LiV4LiB4LiwCivguITguLXguJoKK+C4hOC4teC4oQor4LiE4Li14Lij4Li1CivguITguLXguKPguLXguJrguLnguJkKK+C4hOC4tuC4gQor4LiE4Li24LmI4LiBCivguITguLbguYjguIHguYYKK+C4hOC4tuC4geC4hOC4seC4gQor4LiE4Li24LiB4LiE4Liy4LihCivguITguLfguJkKK+C4hOC4t+C4mgor4LiE4Li34LitCivguITguLgKK+C4hOC4uOC4gQor4LiE4Li44LiB4LiB4Li14LmJCivguITguLjguIHguYDguILguYjguLIKK+C4hOC4uOC4geC4hOC4peC4suC4mQor4LiE4Li44LiB4LiE4Liy4LihCivguITguLjguIHguJ7guLLguJfguKLguYwKK+C4hOC4uOC4hOC4sAor4LiE4Li44LiHCivguITguLjguYnguIcKK+C4hOC4uOC4kwor4LiE4Li44LiT4LiE4LmI4LiyCivguITguLjguJPguJjguKPguKPguKEKK+C4hOC4uOC4k+C4meC4suC4oQor4LiE4Li44LiT4Lia4LiXCivguITguLjguJPguJvguKPguLDguYLguKLguIrguJnguYwKK+C4hOC4uOC4k+C4nuC4tOC5gOC4qOC4qQor4LiE4Li44LiT4Lig4Liy4LieCivguITguLjguJPguKXguLHguIHguKnguJPguLAKK+C4hOC4uOC4k+C4peC4uOC4h+C4hOC4uOC4k+C4m+C5ieC4sgor4LiE4Li44LiT4Lin4Li04LmA4Lio4LipCivguITguLjguJPguKfguLjguJLguLQKK+C4hOC4uOC4k+C4qOC4seC4nuC4l+C5jAor4LiE4Li44LiT4Liq4Lih4Lia4Lix4LiV4Li0CivguITguLjguJPguLLguIHguKMKK+C4hOC4uOC4k+C4suC4peC4seC4ogor4LiE4Li44LiT4Li54Lib4LiB4Liy4LijCivguITguLjguYLguJPguJvguIHguLLguKMKK+C4hOC4uOC4lAor4LiE4Li44LiU4LiX4Liw4Lij4Liy4LiUCivguITguLjguJUKK+C4hOC4uOC4leC4leC4tAor4LiE4Li44LmI4LiZCivguITguLjguYnguJkKK+C4hOC4uOC4mwor4LiE4Li44Lib4LiV4LmMCivguITguLjguJvguJXguLQKK+C4hOC4uOC4oQor4LiE4Li44LmI4LihCivguITguLjguYnguKEKK+C4hOC4uOC5ieC4oeC4lOC4teC4hOC4uOC5ieC4oeC4o+C5ieC4suC4ogor4LiE4Li44LmJ4Lih4LmA4LiX4LmJ4LiyCivguITguLjguKHguJ3guK3guKIKK+C4hOC4uOC4ogor4LiE4Li44LmJ4LiiCivguITguLjguKPguLgKK+C4hOC4uOC4peC4sgor4LiE4Li44Lil4Li04LiB4LmI4LiyCivguITguLjguKXguLXguIHguLLguKMKK+C4hOC4uQor4LiE4Li54LmICivguITguLnguYkKK+C4hOC4ueC4kwor4LiE4Li54LiWCivguITguLnguJkKK+C4hOC4ueC4m+C4reC4hwor4LiE4Li54LmA4Lij4Li14Lii4LihCivguITguLnguKvguLIKK+C5gOC4hOC5ieC5gOC4geC5iQor4LmA4LiE4LmJ4LiHCivguYDguITguIjguIkKK+C5gOC4hOC4k+C4keC4sAor4LmA4LiE4LiUCivguYDguITguJkKK+C5gOC4hOC5gOC4muC4tOC4pQor4LmA4LiE4LmH4LihCivguYDguITguKHguLUKK+C5gOC4hOC4ogor4LmA4LiE4Lij4LiHCivguYDguITguKPguYjguIcKK+C5gOC4hOC4o+C4h+C4hOC4o+C4swor4LmA4LiE4Lij4LiH4LiE4Lij4LmI4LizCivguYDguITguKPguJTguLTguJUKK+C5gOC4hOC4o+C4mQor4LmA4LiE4Lij4LiyCivguYDguITguKPguYjguLIKK+C5gOC4hOC4o+C4suC4q+C4k+C4tQor4LmA4LiE4Lij4Liy4Liw4Lir4LmMCivguYDguITguKPguLXguKLguJQKK+C5gOC4hOC4o+C4teC4ouC4pwor4LmA4LiE4Lij4Li34LitCivguYDguITguKPguLfguK3guYDguILguLLguJnguYnguLMKK+C5gOC4hOC4o+C4t+C4reC5gOC4guC4suC4oeC4p+C4gQor4LmA4LiE4Lij4Li34LmI4Lit4LiHCivguYDguITguKPguLfguK3guIjguLHguIHguKPguKDguJ4KK+C5gOC4hOC4peC5ieC4hwor4LmA4LiE4Lil4LmH4LiUCivguYDguITguKXguYnguJkKK+C5gOC4hOC4peC5ieC4sgor4LmA4LiE4Lil4LmI4Liy4LiE4Lil4LmI4Lit4LiHCivguYDguITguKXguLTguJrguYDguITguKXguLTguYnguKEKK+C5gOC4hOC4peC4tOC5ieC4oQor4LmA4LiE4Lil4Li14LiiCivguYDguITguKXguLXguYnguKLguITguKXguLTguIcKK+C5gOC4hOC4peC4t+C5iOC4reC4mQor4LmA4LiE4Lil4Li34Lit4LiaCivguYDguITguKfguYnguIcKK+C5gOC4hOC4q+C4sAor4LmA4LiE4Lir4LiyCivguYDguITguK3guLAKK+C5gOC4hOC4sgor4LmA4LiE4LmJ4LiyCivguYDguITguLLguJnguYzguYDguJXguK3guKPguYwKK+C5gOC4hOC4suC5gOC4m+C5iwor4LmA4LiE4Liy4Lij4LieCivguYDguITguYnguLLguKrguJnguLLguKHguKvguKXguKfguIcKK+C5gOC4hOC4suC4sAor4LmA4LiE4Liy4Liw4LmB4LiE4LiwCivguYDguITguLXguYnguKIKK+C5gOC4hOC4teC4ouC4hwor4LmA4LiE4Li14Lii4LiUCivguYDguITguLXguKLguJkKK+C5gOC4hOC4teC4ouC4oQor4LmA4LiE4Li14LmI4Lii4LihCivguYDguITguLXguKLguKMKK+C5gOC4hOC4teC4ouC4pwor4LmA4LiE4Li14LmI4Lii4LinCivguYDguITguLXguYnguKLguKcKK+C5gOC4hOC4t+C5ieC4rQor4LmA4LiE4Li34Lit4LiHCivguYHguIQKK+C5geC4hOC5iAor4LmB4LiE4LmJCivguYHguITguYHguIHguKUKK+C5geC4hOC4iuC5gOC4iuC4teC4ouC4o+C5jAor4LmB4LiE4LiU4LmA4Lih4Li14Lii4LihCivguYHguITguYLguJfguJQKK+C5geC4hOC4mQor4LmB4LiE4LmI4LiZCivguYHguITguYnguJkKK+C5geC4hOC4mgor4LmB4LiE4Lia4Lir4Lih4Li5CivguYHguITguJvguIvguLnguKUKK+C5geC4hOC4oQor4LmB4LiE4Lij4LmICivguYHguITguKPguIEKK+C5geC4hOC4o+C4hOC4o+C4seC5iOC4hwor4LmB4LiE4Lij4LiHCivguYHguITguKPguIfguYDguITguKPguLXguKLguKcKK+C5geC4hOC4o+C4sAor4LmB4LiE4Lil4LiE4Li54Lil4Lix4LiqCivguYHguITguKXguIcKK+C5geC4hOC4peC5gOC4i+C4teC4ouC4oQor4LmB4LiE4Lil4LiZCivguYHguITguKXguYnguKcKK+C5geC4hOC4peC5iOC4p+C4hOC4peC5iOC4reC4hwor4LmB4LiE4Lil4Lit4Lij4Li1CivguYHguITguKXguLTguJ/guK3guKPguYzguYDguJnguLXguKLguKEKK+C5geC4hOC5geC4pQor4LmB4LiE4LinCivguYHguITguKfguIEKK+C5geC4hOC4p+C5ieC4hwor4LmB4LiE4Lin4LmJ4LiZCivguYHguITguLAKK+C5guC4hAor4LmC4LiE4LiBCivguYLguITguIHguIHguKPguLDguKrguLjguJkKK+C5guC4hOC4geC4geC4o+C4sOC4reC4reC4oQor4LmC4LiE4LiB4Lih4LmJ4LiyCivguYLguITguITguKXguLLguJkKK+C5guC4hOC5gOC4hOC4mQor4LmC4LiE4LmI4LiHCivguYLguITguYnguIcKK+C5guC4hOC4iOC4owor4LmC4LiE4LiI4Lij4LiE4Liy4LihCivguYLguITguYnguIoKK+C5guC4hOC5gOC4i+C5geC4hOC4meC4leC5jAor4LmC4LiE4LmE4LiL4LiZ4LmMCivguYLguITguJXguKMKK+C5guC4hOC5geC4l+C4meC5gOC4iOC4meC4leC5jAor4LmC4LiE4LiY4LiyCivguYLguITguJkKK+C5guC4hOC5iOC4mQor4LmC4LiE4LiZ4LiU4Li04LiZ4Liq4LitCivguYLguITguJnguJXguLLguKLguJvguKXguLLguKLguYDguJvguYfguJkKK+C5guC4hOC4meC4quC4oeC4rQor4LmC4LiE4Lia4Lit4Lil4LiV4LmMCivguYLguITguJvguJzguIHguLAKK+C5guC4hOC4oQor4LmC4LiE4Lih4LmI4LiyCivguYLguITguKPguIEKK+C5guC4hOC4o+C4geC4hOC4o+C4reC4gQor4LmC4LiE4Lij4LiB4LiE4Lij4Liy4LiBCivguYLguITguKPguIcKK+C5guC4hOC4o+C5iOC4hwor4LmC4LiE4Lij4LmI4LiH4LiE4Lij4LmI4Liy4LiHCivguYLguITguKPguIfguYHguITguKMKK+C5guC4hOC4o+C4oQor4LmC4LiE4Lij4LmA4Lih4Li14Lii4LihCivguYLguITguKPguYLguKHguYLguIvguKEKK+C5guC4hOC4o+C4suC4igor4LmC4LiE4LilCivguYLguITguKXguIcKK+C5guC4hOC4peC4mQor4LmC4LiE4Lin4LiV4LiyCivguYLguITguK3guK3guKPguYzguJTguLTguYDguJnguJUKK+C5g+C4hOC4owor4LmD4LiE4Lij4LmICivguYPguITguKPguYjguITguKPguKfguI0KK+C5hOC4hAor4LmE4LiE4LmJCivguYTguITguKPguYkKK+C5hOC4hOC4o+C5ieC5gOC4hOC4o+C4t+C4rQor4LmE4LiE4LilCivguYTguITguKXguYkKK+C4hgor4LiG4LiHCivguIbguI8KK+C4huC5guC4j+C4l+C4owor4LiG4LiVCivguIbguJkKK+C4huC4meC4suC4geC4owor4LiG4LiZ4Liy4LiE4LihCivguIbguJnguLLguKHguLHguKIKK+C4huC4meC4suC4qOC4seC4ogor4LiG4LmC4LiZ4Lia4LilCivguIbguKPguLLguKfguLLguKoKK+C4huC5ieC4reC4hwor4LiG4LmJ4Lit4LiH4Liq4Liy4Lih4Lii4LmI4Liy4LiZCivguIbguYjguLIKK+C4huC4suC4jwor4LiG4Liy4LiVCivguIbguLLguJkKK+C5gOC4huC4teC5iOC4ouC4mQor4LmC4LiG4Lij4Lin4Li04LiqCivguYLguIbguKkKK+C5guC4huC4qeC4gQor4LmC4LiG4Lip4LiT4LiyCivguYLguIbguKnguJPguLLguIHguLLguKMKK+C5guC4huC4qeC4k+C4suC4iuC4p+C4meC5gOC4iuC4t+C5iOC4rQor4LmC4LiG4Lip4Li04LiVCivguYLguIbguKrguKfguLHguJnguJXguYwKK+C4hwor4LiH4LiBCivguIfguIcKK+C4h+C4h+C4tOC4lAor4LiH4LiUCivguIfguJTguIfguLLguKEKK+C4h+C4mgor4LiH4LihCivguIfguKfguIcKK+C4h+C5iOC4p+C4hwor4LiH4Lin4LiUCivguIfguYjguKfguJkKK+C4h+C5ieC4p+C4mQor4LiH4Lin4Lii4LiH4LiHCivguIfguK0KK+C4h+C5ieC4rQor4LiH4Lit4LiBCivguIfguK3guIHguYHguIfguIEKK+C4h+C5iOC4reC4hwor4LiH4LmI4Lit4LiH4LmB4LiH4LmI4LiHCivguIfguK3guYHguIcKK+C4h+C4reC4lAor4LiH4Lit4LiU4LmB4LiH4LiUCivguIfguK3guJkKK+C4h+C5iOC4reC4mQor4LiH4LmI4Lit4LiZ4LmB4LiH4LmI4LiZCivguIfguK3guJnguKvguIfguYjguK0KK+C4h+C5ieC4reC4meC4q+C4oeC4uQor4LiH4Lit4LiaCivguIfguK3guKEKK+C4h+C5ieC4reC4oQor4LiH4Lit4LiiCivguIfguYjguK3guKIKK+C4h+C4sAor4LiH4Lix4LiB4LmGCivguIfguLHguYjguIHguYYKK+C4h+C4seC5iOC4hwor4LiH4Lix4LiH4LmGCivguIfguLHguJQKK+C4h+C4seC4mQor4LiH4Lix4LiZ4LiH4LiBCivguIfguLHguJoKK+C4h+C4seC4pwor4LiH4Lix4LmI4LinCivguIfguLHguKfguYDguIfguLXguKIKK+C4h+C4seC4p+C4i+C4seC4hwor4LiH4Lix4Lin4LmA4Lil4Li14LiiCivguIfguLIKK+C4h+C5iOC4sgor4LiH4LmJ4Liy4LiHCivguIfguYjguLLguYDguIfguKIKK+C4h+C4suC5hOC4iwor4LiH4Liy4LiZCivguIfguYjguLLguJkKK+C4h+C4suC4muC5hgor4LiH4Liy4LihCivguIfguYjguLLguKEKK+C4h+C4suC4ogor4LiH4LmI4Liy4LiiCivguIfguYjguLLguKLguYnguK3guKIKK+C4h+C5ieC4suC4pwor4LiH4LizCivguIfguYjguLMKK+C4h+C5ieC4swor4LiH4LmI4Liz4LmGCivguIfguLTguYnguKcKK+C4h+C4teC4mgor4LiH4Li24LiB4LmGCivguIfguLbguJkKK+C4h+C4tuC4oQor4LiH4Li24Lih4LiH4LizCivguIfguLjguJQKK+C4h+C4uOC4lOC5hgor4LiH4Li44LiZ4LiH4LiHCivguIfguLjguYjguJnguIfguYjguLLguJkKK+C4h+C4uOC4mgor4LiH4Li44Lia4LmGCivguIfguLjguJrguIfguLTguJoKK+C4h+C4uOC5ieC4oQor4LiH4Li44LmI4Lih4LiH4LmI4Liy4LihCivguIfguLjguKIKK+C4h+C4uQor4LiH4Li54LiaCivguIfguLnguYjguKvguJnguLUKK+C5gOC4h+C5iQor4LmA4LiH4LiBCivguYDguIfguYfguJkKK+C5gOC4h+C4ogor4LmA4LiH4LmI4Lir4Lih4Li24LiHCivguYDguIfguK3guLAKK+C5gOC4h+C4reC4sOC4h+C4sAor4LmA4LiH4LiyCivguYDguIfguYjguLIKK+C5gOC4h+C5ieC4sgor4LmA4LiH4Liy4LiwCivguYDguIfguLTguJkKK+C5gOC4h+C4teC5iOC4ogor4LmA4LiH4Li14LmI4Lii4LiHCivguYDguIfguLXguYjguKLguJkKK+C5gOC4h+C4teC4ouC4mgor4LmA4LiH4Li14LmJ4Lii4LinCivguYDguIfguLXguYnguKLguKfguKPguLDguYDguKPguLTguIcKK+C5gOC4h+C4teC5ieC4ouC4p+C4o+C4s+C4peC4tuC4gQor4LmA4LiH4Li14LmI4Lii4Lir4Li5CivguYDguIfguLfguYnguK0KK+C5gOC4h+C4t+C4reC4gQor4LmA4LiH4Li34LmI4Lit4LiHCivguYDguIfguLfguYjguK3guIfguYYKK+C5gOC4h+C4t+C4reC4lAor4LmA4LiH4Li34Lit4LiU4LiH4LiUCivguYDguIfguLfguK3guJkKK+C5gOC4h+C4t+C5iOC4reC4mQor4LmA4LiH4Li34Lit4LiaCivguYDguIfguLfguYnguK3guKEKK+C5geC4hwor4LmB4LiH4LmICivguYHguIfguYjguIcKK+C5geC4h+C5iOC4mQor4LmB4LiH4LmJ4LihCivguYHguIfguLAKK+C5guC4hwor4LmC4LiH4LmICivguYLguIfguIEKK+C5guC4h+C4geC5gOC4h+C4gQor4LmC4LiH4LiHCivguYLguIfguYnguIcKK+C5guC4h+C5iOC4h+C5hgor4LmC4LiH4LiH4LmA4LiH4LiHCivguYLguIfguYjguIfguYDguIfguYjguIcKK+C5guC4h+C5gOC4hwor4LmC4LiH4LiZCivguYTguIcKK+C5hOC4h+C5iQor4LiICivguIjguIEKK+C4iOC4hwor4LiI4LmI4LiHCivguIjguYvguIcKK+C4iOC4h+C4geC4o+C4oQor4LiI4LiH4LiB4LilCivguIjguIfguIHguKXguJnguLUKK+C4iOC4h+C5guC4hOC4o+C5iOC4hwor4LiI4LiH4Lit4LijCivguIjguIfguK3guLLguIcKK+C4iOC4jQor4LiI4LiUCivguIjguJTguLjguKPguIfguITguYwKK+C4iOC4lOC4uOC4o+C4sAor4LiI4LiV4Li44LiK4Liy4LiV4Li04Liq4Li44LiE4LiZ4LiY4LmMCivguIjguJXguLjguJXguJbguLUKK+C4iOC4leC4uOC4o+C4h+C4hOC5guC4iuC4hAor4LiI4LiV4Li44Lij4Liy4Lia4Liy4Lii4Lig4Li54Lih4Li0CivguIjguJXguLjguKPguLLguKPguLTguKLguKrguLHguIgKK+C4iOC4leC4uOC4quC4lOC4oeC4oOC5jAor4LiI4LiX4Li24LiHCivguIjguJkKK+C4iOC5ieC4mQor4LiI4LiaCivguIjguKEKK+C4iOC5iOC4oQor4LiI4Lih4LijCivguIjguKHguKPguLUKK+C4iOC4oeC4uQor4LiI4Lih4Li54LiBCivguIjguKHguLnguIHguJvguKXguLLguKvguKXguJQKK+C4iOC4oeC4ueC4geC4m+C4peC4suC5hOC4q+C4pQor4LiI4Lih4Li54LiB4Lir4Lil4Lit4LiUCivguIjguKLguLjguJXguLQKK+C4iOC4owor4LiI4Lij4LiBCivguIjguKPguIHguKXguLnguYgKK+C4iOC4o+C4geC4sgor4LiI4Lij4LmB4LiB4Lin4LmI4LiHCivguIjguKPguITguLHguYjguIcKK+C4iOC4o+C4iOC4o+C4seC4pQor4LiI4Lij4LiI4Lix4LiUCivguIjguKPguJPguLAKK+C4iOC4o+C4lAor4LiI4Lij4LiU4LilCivguIjguKPguJrguJkKK+C4iOC4o+C4muC4seC4mQor4LiI4Lij4Lia4Liy4LiXCivguIjguKPguKHguLHguJkKK+C4iOC4o+C4oeC4ueC4gQor4LiI4Lij4Lij4LiI4LiyCivguIjguKPguKPguYLguIjguKkKK+C4iOC4o+C4o+C4oQor4LiI4Lij4Lij4Lii4LiyCivguIjguKPguKPguYLguKXguIcKK+C4iOC4o+C4o+C5iOC4swor4LiI4Lij4Lil4Lin4LiHCivguIjguKPguKXguYjguKfguIcKK+C4iOC4o+C4peC4suC4lAor4LiI4Lij4Lil4Liy4LiiCivguIjguKPguKXguLTguYjguKcKK+C4iOC4o+C4peC4tQor4LiI4Lij4Lil4Li54LmICivguIjguKPguKfguIgKK+C4iOC4o+C4p+C4lAor4LiI4Lij4Lin4LiU4LiI4Lij4Li1CivguIjguKPguKfguLHguIEKK+C4iOC4o+C4qgor4LiI4Lij4Lit4LiBCivguIjguKPguLDguIHguKXguYnguLLguKIKK+C4iOC4o+C4sOC4guC4suC4mgor4LiI4Lij4Liw4LmA4LiC4LmJCivguIjguKPguLDguITguKXguLHguJoKK+C4iOC4o+C4sOC4hOC4peC5ieC4suC4ogor4LiI4Lij4Liw4LiE4Lil4Li44LmI4LihCivguIjguKPguLDguYHguITguIcKK+C4iOC4o+C4sOC4iOC4uOC5iOC4oQor4LiI4Lij4Liw4LiX4LiBCivguIjguKPguLDguYDguJfguLTguJkKK+C4iOC4o+C4sOC4meC4swor4LiI4Lij4Liw4Lia4Liy4LiZCivguIjguKPguLDguJrguLUKK+C4iOC4o+C4sOC4peC4tOC5iOC4hwor4LiI4Lij4Liw4Lil4Li24LiHCivguIjguKPguLDguKXguLjguIcKK+C4iOC4o+C4seC4pQor4LiI4Lij4Lix4LiqCivguIjguKPguLLguIEKK+C4iOC4o+C4suC4hwor4LiI4Lij4Liy4LiI4LijCivguIjguKPguLLguI0KK+C4iOC4o+C4suC4ogor4LiI4Lij4Liy4LinCivguIjguKPguLLguKoKK+C4iOC4o+C4tOC4gQor4LiI4Lij4Li04LiHCivguIjguKPguLTguIfguYYKK+C4iOC4o+C4tOC4kwor4LiI4Lij4Li04LiVCivguIjguKPguLTguKLguLIKK+C4iOC4o+C4tOC4pwor4LiI4Lij4Li1CivguIjguKPguLbguIcKK+C4iOC4o+C4uOC4gQor4LiI4Lij4Li44LiHCivguIjguKPguLnguIcKK+C4iOC4o+C4ueC4jQor4LiI4Lij4Li54LiqCivguIjguYDguKMKK+C4iOC4pQor4LiI4Lil4LiZ4Lie4Lil4Lio4Liy4Liq4LiV4Lij4LmMCivguIjguKXguJnguKjguLLguKrguJXguKPguYwKK+C4iOC4peC4meC4tQor4LiI4Lil4LiyCivguIjguKXguLLguIjguKUKK+C4iOC4p+C4gQor4LiI4LmK4Lin4LiBCivguIjguKfguIcKK+C4iOC5ieC4p+C4hwor4LiI4LmL4Lin4LiHCivguIjguKfguIfguKvguK3guKEKK+C4iOC4p+C4lAor4LiI4Lin4LiU4Lil4Liy4LiBCivguIjguKfguJkKK+C4iOC4p+C4mgor4LiI4Lin4Lix4LiBCivguIjguK0KK+C4iOC5iOC4rQor4LiI4LmJ4LitCivguIjguYvguK0KK+C4iOC4reC4gQor4LiI4LmJ4Lit4LiBCivguIjguYrguK3guIEKK+C4iOC5ieC4reC4geC5hgor4LiI4LmK4Lit4LiB4LmGCivguIjguYnguK3guIHguYHguIjguYnguIEKK+C4iOC5ieC4reC4geC4p+C4reC4gQor4LiI4Lit4LiHCivguIjguYjguK3guIcKK+C4iOC5ieC4reC4hwor4LiI4LmL4Lit4LiHCivguIjguYnguK3guIfguYDguJUKK+C4iOC4reC4h+C5gOC4m+C4o+C4teC4ouC4hwor4LiI4Lit4LiH4Lir4LiH4LmI4Lit4LiHCivguIjguYnguK3guIfguKvguJnguYjguK3guIcKK+C4iOC4reC4h+C4q+C4reC4hwor4LiI4Lit4LmB4LiICivguIjguYvguK3guYHguIjguYsKK+C4iOC5ieC4reC4iuC5ieC4suC4hwor4LiI4Lit4LiUCivguIjguK3guJkKK+C4iOC5ieC4reC4mQor4LiI4Lit4LiZ4LiI4LmI4LitCivguIjguK3guJnguKvguLkKK+C4iOC4reC4mgor4LiI4Lit4LihCivguIjguYjguK3guKEKK+C4iOC5iOC4reC4oeC4iOC5iOC4suC4ogor4LiI4Lit4Lih4LiX4Lit4LiHCivguIjguK3guKHguJvguKXguK3guKEKK+C4iOC5ieC4reC4oeC4m+C5ieC4reC4oQor4LiI4Lit4Lih4LmA4Lib4Liy4LiwCivguIjguK3guKHguKrguLjguKPguLLguIfguITguYwKK+C4iOC5iOC4reC4ogor4LiI4LmJ4Lit4LiiCivguIjguYvguK3guKIKK+C4iOC4sAor4LiI4LmJ4LiwCivguIjguYrguLAKK+C4iOC5i+C4sAor4LiI4Liw4LiB4Lij4Lix4LiU4LiI4Liw4LiB4Lij4Liy4LiUCivguIjguLDguIHguKPguLjguJkKK+C4iOC4sOC4geC4o+C4uOC4oeC4iOC4sOC4geC4o+C4suC4oQor4LiI4Liw4LiB4Lij4Li54LiZCivguIjguLDguIHguKXguLAKK+C4iOC4sOC4geC4p+C4lAor4LiI4Liw4LmA4LiB4Lij4LmH4LiHCivguIjguLDguILguLLguJoKK+C4iOC4sOC5gOC4guC5iQor4LiI4Liw4LmA4LiC4LmH4LiaCivguIjguLDguIfguK3guKIKK+C4iOC4sOC4iOC4sAor4LiI4Liw4LiI4LmJ4LiyCivguIjguLDguYHguIgKK+C4iOC4sOC5geC4iOC5ieC4hwor4LiI4Liw4LmB4LiI4LmJ4LiZCivguIjguLDguYHguIjguYjguKEKK+C4iOC4sOC5hOC4iOC5iQor4LiI4Liw4Lia4Lix4LiZCivguIjguLDguJvguLTguYnguIcKK+C4iOC4sOC5gOC4nuC4peC4tOC4hwor4LiI4Liw4Lil4Liw4LmA4Lih4LmH4LiUCivguIjguLDguKXguLDguKvguKfguLHguYjguJkKK+C4iOC4sOC4peC4uOC4hwor4LiI4Lix4LiBCivguIjguLHguYnguIHguYYKK+C4iOC4seC4geC4geC4suC4ogor4LiI4Lix4LmK4LiB4LiB4Li04LmJ4LihCivguIjguLHguIHguILguLgKK+C4iOC4seC4geC4iOC4seC5iOC4mQor4LiI4Lix4LiB4LiI4Li14LmJCivguIjguLHguYrguIHguIjguLXguYkKK+C4iOC4seC5iuC4geC5gOC4lOC4teC4ouC4oQor4LiI4Lix4LiB4LijCivguIjguLHguIHguKPguJ7guLLguIEKK+C4iOC4seC4geC4o+C4p+C4suC4gQor4LiI4Lix4LiB4Lij4Li04LiZCivguIjguLHguIHguKPguLUKK+C4iOC4seC5iuC4geC5gOC4peC5ieC4rQor4LiI4Lix4LiB4Lip4Li4CivguIjguLHguIHguYHguKvguKXguYjguJkKK+C4iOC4seC4hwor4LiI4Lix4LmJ4LiHCivguIjguLHguYvguIcKK+C4iOC4seC4h+C4geC4p+C4lAor4LiI4Lix4LiH4LiB4Lit4LiaCivguIjguLHguIfguIHguLIKK+C4iOC4seC4h+C4geC4ueC4lAor4LiI4Lix4LiH4LmA4LiBCivguIjguLHguIfguYLguIEKK+C4iOC4seC4h+C5guC4geC5iwor4LiI4Lix4LiH4LmC4LiB4LiP4LiB4LmMCivguIjguLHguIfguIfguLHguIcKK+C4iOC4seC4h+C4oeC4seC4hwor4LiI4Lix4LiH4LmE4LijCivguIjguLHguIfguKXguK3guJkKK+C4iOC4seC4h+C5gOC4p+C5h+C4iAor4LiI4Lix4LiH4Lir4LiZ4Lix4LiaCivguIjguLHguIfguKvguKPguLXguJQKK+C4iOC4seC4h+C4q+C4peC5iOC4rQor4LiI4Lix4LiH4Lir4Lin4LiwCivguIjguLHguIfguKvguKfguLHguJQKK+C4iOC4seC4h+C4q+C4seC4mQor4LiI4Lix4LiH4Lit4Lit4LiZCivguIjguLHguI3guYTguKMKK+C4iOC4seC4k+C4keC5jAor4LiI4Lix4LiT4LiR4Liy4LilCivguIjguLHguJQKK+C4iOC4seC4lOC4iOC4reC4hwor4LiI4Lix4LiV4LiV4Liy4Lis4Li14LiqCivguIjguLHguJXguKfguLIKK+C4iOC4seC4leC4uAor4LiI4Lix4LiV4Li44LijCivguIjguLHguJXguLjguYLguKXguIHguJrguLLguKUKK+C4iOC4seC4leC4uOC4quC4lOC4oeC4oOC5jAor4LiI4Lix4LiZCivguIjguLHguYjguJkKK+C4iOC4seC4meC5guC4iOC4qQor4LiI4Lix4LiZ4LiX4LmMCivguIjguLHguJnguJfguJnguYwKK+C4iOC4seC4meC4l+C4meC4sgor4LiI4Lix4LiZ4LiX4Lij4LmMCivguIjguLHguJnguJfguKPguIHguKXguLIKK+C4iOC4seC4meC4l+C4o+C4geC4qeC4seC4ogor4LiI4Lix4LiZ4LiX4Lij4LiB4Liy4LiZ4LiV4LmMCivguIjguLHguJnguJfguKPguIHguLjguI4KK+C4iOC4seC4meC4l+C4o+C5gOC4geC4leC4uAor4LiI4Lix4LiZ4LiX4Lij4LiE4LiV4Li0CivguIjguLHguJnguJfguKPguITguKPguLLguKoKK+C4iOC4seC4meC4l+C4o+C5gOC4hOC4o+C4suC4sOC4q+C5jAor4LiI4Lix4LiZ4LiX4Lij4LiK4LiZ4LiBCivguIjguLHguJnguJfguKPguJfguLHguIHguKnguLTguJMKK+C4iOC4seC4meC4l+C4o+C4l+C4suC4owor4LiI4Lix4LiZ4LiX4Lij4LiZ4Li04Lig4LiyCivguIjguLHguJnguJfguKPguJrguLjguJXguKMKK+C4iOC4seC4meC4l+C4o+C4m+C4o+C4sOC4oOC4suC4ngor4LiI4Lix4LiZ4LiX4Lij4Lie4Li04Lih4Lie4LmMCivguIjguLHguJnguJfguKPguKDguLLguKoKK+C4iOC4seC4meC4l+C4o+C4oOC4ueC4leC4tAor4LiI4Lix4LiZ4LiX4Lij4Lih4LiT4LiR4LilCivguIjguLHguJnguJfguKPguYDguKHguYfguJQKK+C4iOC4seC4meC4l+C4o+C5gOC4oeC4suC4sOC4q+C5jAor4LiI4Lix4LiZ4LiX4Lij4Lij4Lix4LiV4LiZ4LmMCivguIjguLHguJnguJfguKPguKfguIfguKjguYwKK+C4iOC4seC4meC4l+C4o+C4p+C4o+C4o+C4kwor4LiI4Lix4LiZ4LiX4Lij4LmA4Lio4LiC4LijCivguIjguLHguJnguJfguKPguLLguKPguLQKK+C4iOC4seC4meC4l+C4o+C4uOC4m+C4o+C4suC4hOC4sgor4LiI4Lix4LiZ4LiX4LmC4Lij4LiX4Lix4LiiCivguIjguLHguJnguJfguLHguJkKK+C4iOC4seC4meC4peC4reC4hwor4LiI4Lix4LiZ4LmA4Lil4LiyCivguIjguLHguJnguYDguKXguLLguLAKK+C4iOC4seC5ieC4meC4q+C4peC5iOC4rQor4LiI4Lix4LiZ4Lit4Lix4LiaCivguIjguLHguJoKK+C4iOC4seC4muC4geC4seC4hwor4LiI4Lix4Lia4LiI4LmI4Liy4LiiCivguIjguLHguJrguYDguIjguLXguYvguKLguKcKK+C4iOC4seC4muC4ieC5iOC4suC4ogor4LiI4Lix4Lia4LmA4LiU4Li04LihCivguIjguLHguJrguJvguLTguYnguIcKK+C4iOC4seC4muC5guC4m+C4hwor4LiI4Lix4Lia4Lii4Li14LmI4LiB4Li1CivguIjguLHguJrguKrguLHguYjguJkKK+C4iOC4seC4oeC4muC4gQor4LiI4Lix4Lih4Lib4LiBCivguIjguLHguKHguKHguLAKK+C4iOC4seC5iOC4pwor4LiI4Lix4Lin4LiI4Li14LmK4LiUCivguIjguLHguYrguKfguLAKK+C4iOC4sgor4LiI4LmI4LiyCivguIjguYnguLIKK+C4iOC5i+C4sgor4LiI4Liy4LiBCivguIjguLLguIHguJ7guKPguLLguIEKK+C4iOC4suC4geC4nuC4suC4gQor4LiI4Liy4LiE4LiwCivguIjguLLguITguLUKK+C4iOC4suC4hwor4LiI4LmI4Liy4LiHCivguIjguYnguLLguIcKK+C4iOC4suC4h+C4p+C4suC4hwor4LiI4Liy4LiUCivguIjguLLguJXguLgKK+C4iOC4suC4leC4uOC4o+C4h+C4hOC5jAor4LiI4Liy4LiV4Li44Lij4LiZ4LiV4LmMCivguIjguLLguJXguLjguKPguLHguJnguJXguYwKK+C4iOC4suC4leC4uOC4o+C4tOC4gQor4LiI4Liy4LiZCivguIjguYnguLLguJkKK+C4iOC4suC4mgor4LiI4Liy4Lia4Lix4LilCivguIjguLLguJrguLHguKXguKLguYwKK+C4iOC4suC4mwor4LiI4Liy4Lib4LiE4Li44LiTCivguIjguLLguJvguJjguKMKK+C4iOC4suC4m+C5gOC4p+C4lwor4LiI4Liy4LihCivguIjguLLguKHguIjguLjguKPguLUKK+C4iOC4suC4oeC4owor4LiI4Liy4Lih4Lij4Li1CivguIjguLLguKHguLXguIHguKMKK+C4iOC5iOC4suC4ogor4LiI4Liy4LijCivguIjguYjguLLguKPguIcKK+C4iOC4suC4o+C4p+C4suC4gQor4LiI4Liy4Lij4Liw4LmE4LiZCivguIjguLLguKPguLDguJrguLUKK+C4iOC4suC4o+C4tOC4gQor4LiI4Liy4Lij4Li1CivguIjguLLguKPguLXguJUKK+C4iOC4suC4o+C4tuC4gQor4LiI4Liy4Lij4Li4CivguIjguYnguLLguKXguLDguKvguKfguLHguYjguJkKK+C4iOC4suC4pwor4LiI4LmI4Liy4LinCivguIjguYnguLLguKcKK+C4iOC5iOC4suC4q+C4p+C4seC4gQor4LiI4LizCivguIjguYnguLMKK+C4iOC4s+C4geC4p+C5iOC4sgor4LiI4Liz4LiB4Lix4LiUCivguIjguLPguIfguLLguKIKK+C4iOC5ieC4s+C4iOC4teC5iQor4LiI4Liz4LmA4LiICivguIjguLPguYDguJTguLTguKEKK+C4iOC4s+C4l+C4p+C4ogor4LiI4Liz4LiX4Lix4LiaCivguIjguLPguJfguLLguJoKK+C4iOC4s+C5gOC4l+C4tOC4lAor4LiI4Liz4LmB4LiX4LiHCivguIjguLPguJnguIcKK+C4iOC4s+C4meC4mQor4LiI4Liz4LiZ4Lij4Lij4LiI4LmMCivguIjguLPguJnguKPguKPguIjguLIKK+C4iOC4s+C4meC4p+C4mQor4LiI4Liz4LiZ4Lit4LiHCivguIjguLPguJnguLHguJoKK+C4iOC4s+C4meC4seC4pQor4LiI4Liz4LiZ4LizCivguIjguLPguYDguJnguLXguKLguJkKK+C4iOC4s+C5gOC4meC4teC4ouC4oQor4LiI4Liz4LmA4LiZ4Li14Lii4LijCivguIjguLPguYHguJnguIEKK+C4iOC4s+C5guC4meC4l+C4ouC5jAor4LiI4Liz4Lia4LmI4LihCivguIjguYnguLPguJrguYrguLAKK+C4iOC4s+C4muC4seC4hwor4LiI4Liz4Lia4Lix4LiaCivguIjguLPguYDguJrguKgKK+C4iOC5ieC4s+C5gOC4muC5ieC4sgor4LiI4Liz4LmB4LiaCivguIjguLPguJvguLIKK+C4iOC4s+C4m+C4suC4lOC4sAor4LiI4Liz4Lib4Li1CivguIjguLPguJvguLnguJkKK+C4iOC4s+C4nuC4p+C4gQor4LiI4Liz4LmA4Lie4Liy4LiwCivguIjguLPguYHguJ7guKPguIEKK+C4iOC5ieC4s+C4oeC5iOC4swor4LiI4Liz4Lij4LiUCivguIjguLPguKPguLHguKoKK+C4iOC4s+C4o+C4suC4jQor4LiI4Liz4Lij4Liy4LiiCivguIjguLPguKPguLnguI0KK+C4iOC4s+C5gOC4o+C4tOC4jQor4LiI4Liz4LmA4Lij4Li14Lii4LiHCivguIjguLPguKXguK3guIcKK+C4iOC4s+C4peC4suC4ogor4LiI4Liz4LmA4Lil4Liy4LiwCivguIjguLPguYDguKXguLLguLDguJXguLIKK+C4iOC4s+C5geC4peC4hwor4LiI4Liz4LmB4Lil4LmI4LiZCivguIjguLPguKvguJnguLHguJoKK+C4iOC5i+C4s+C4q+C4meC4seC4mgor4LiI4Liz4Lir4LiZ4LmI4Liy4LiiCivguIjguLPguKvguKPguLAKK+C4iOC4s+C4q+C4peC5iOC4rQor4LiI4Liz4Lir4Lil4Lit4LiBCivguIjguLPguKvguKXguLHguIEKK+C4iOC4s+C4q+C4seC4mQor4LiI4Liz4Lir4Liy4LiiCivguIjguLPguKvguLjguJQKK+C4iOC4s+C5gOC4q+C4teC4ouC4hwor4LiI4Liz4Lit4Lin4LiUCivguIjguLPguK3guLfguYjguJkKK+C4iOC4tAor4LiI4Li04LiBCivguIjguLTguYrguIHguYLguIHguYsKK+C4iOC4tOC5iOC4hwor4LiI4Li04LmJ4LiH4LiI4LiBCivguIjguLTguIfguIjguYnguK0KK+C4iOC4tOC5ieC4h+C4iOC4reC4gQor4LiI4Li04LiH4LiI4Lix4LiHCivguIjguLTguYnguIfguIjguLHguIcKK+C4iOC4tOC4h+C5guC4iOC5iQor4LiI4Li04LmJ4LiH4Lir4Lij4Li14LiUCivguIjguLTguYnguIfguKvguKPguLXguJTguJzguLUKK+C4iOC4tOC4h+C4q+C4seC4mQor4LiI4Li04LiH4Lir4Li44LiZCivguIjguLTguYnguIfguYDguKvguKXguJkKK+C4iOC4tOC4lQor4LiI4Li04LiV4LiB4Liy4LiY4Liy4LiZCivguIjguLTguJXguIHguLbguYjguIfguKrguLPguJnguLbguIEKK+C4iOC4tOC4leC5g+C4iAor4LiI4Li04LiV4LiV4LmMCivguIjguLTguJXguJXguLLguJnguLjguJvguLHguKrguKrguJnguLIKK+C4iOC4tOC4leC4meC4suC4lgor4LiI4Li04LiV4LiZ4Li04Lii4LihCivguIjguLTguJXguJrguLPguJrguLHguJQKK+C4iOC4tOC4leC5geC4nuC4l+C4ouC5jAor4LiI4Li04LiV4Lig4Liy4LieCivguIjguLTguJXguKDguLkKK+C4iOC4tOC4leC4owor4LiI4Li04LiV4Lij4LiI4Li44LilCivguIjguLTguJXguKPguKXguJTguLIKK+C4iOC4tOC4leC4o+C4sgor4LiI4Li04LiV4Lij4Liy4Lij4LiI4Li04LiqCivguIjguLTguJXguYTguKPguYnguKrguLPguJnguLbguIEKK+C4iOC4tOC4leC4p+C4tOC4l+C4ouC4sgor4LiI4Li04LiV4Lin4Li04Liq4Lix4LiiCivguIjguLTguJXguYDguKfguIrguKjguLLguKrguJXguKPguYwKK+C4iOC4tOC4leC4qOC4suC4quC4leC4o+C5jAor4LiI4Li04LiV4Liq4Liz4LiZ4Li24LiBCivguIjguLTguJnguYDguIjguLIKK+C4iOC4tOC4meC4lOC4sgor4LiI4Li04LiZ4LiU4Liy4Liq4LmI4Liy4Lir4Lij4Li1CivguIjguLTguJnguJTguLLguKvguJnguLIKK+C4iOC4tOC4meC4lOC4suC4q+C4o+C4sgor4LiI4Li04LiZ4LiU4Liy4Lit4Lij4Liq4LiyCivguIjguLTguJnguJXguYwKK+C4iOC4tOC4mgor4LiI4Li04LmK4Lia4LiI4LmK4Lit4LiiCivguIjguLTguJvguLLguJbguLAKK+C4iOC4tOC5iOC4oQor4LiI4Li04LmJ4LihCivguIjguLTguYvguKEKK+C4iOC4tOC5ieC4oeC4geC5ieC4reC4hwor4LiI4Li04LmJ4Lih4Lil4Li04LmJ4LihCivguIjguLTguKPguLHguJnguJTguKMKK+C4iOC4tOC4o+C4suC4ouC4uOC4qgor4LiI4Li04LmK4LinCivguIjguLTguYvguKcKK+C4iOC4tQor4LiI4Li14LmICivguIjguLXguYkKK+C4iOC4teC5iwor4LiI4Li14LmL4LiI4LmJ4LitCivguIjguLXguIjguLnguYkKK+C4iOC4teC5iuC4iOC4ueC5iQor4LiI4Li14LmB4LiI4LmK4LiaCivguIjguLXguYrguJQKK+C4iOC4teC4mQor4LiI4Li14LiZ4LmB4LiqCivguIjguLXguJoKK+C4iOC4teC5guC4mgor4LiI4Li14Lie4LijCivguIjguLXguKEKK+C4iOC4teC4p+C4owor4LiI4Li24LiHCivguIjguLbguYjguIcKK+C4iOC4tuC5ieC4hwor4LiI4Li34LiUCivguIjguLfguYnguJnguYDguIjguLfguK3guIEKK+C4iOC4uAor4LiI4Li44LiBCivguIjguLjguYrguIHguIHguKPguLnguYoKK+C4iOC4uOC4geC4iOC4tOC4gQor4LiI4Li44LiB4LiK4Li1CivguIjguLjguIHguJzguLLguKEKK+C4iOC4uOC4geC4nuC4o+C4suC4q+C4oeC4k+C5jAor4LiI4Li44LiB4LmC4Lij4Lir4Li04LiZ4Li1CivguIjguLjguYjguIcKK+C4iOC4uOC5ieC4h+C4iOC4seC4hwor4LiI4Li44LmL4LiH4LiI4Li04LmL4LiHCivguIjguLjguYvguIjguLXguYsKK+C4iOC4uOC4keC4sgor4LiI4Li44LiTCivguIjguLjguJPguJPguLXguKLguJrguJcKK+C4iOC4uOC4lAor4LiI4Li44LiV4Li0CivguIjguLjguJXguLnguJvguJvguLLguJXguI3guLLguJMKK+C4iOC4uOC4l+C4qgor4LiI4Li44LiZCivguIjguLjguYjguJkKK+C4iOC4uOC5ieC4mQor4LiI4Li44LmJ4LiZ4LiI4LmJ4Liy4LiZCivguIjguLjguJnguIjguLnguYsKK+C4iOC4uOC5ieC4meC4iOC4ueC5igor4LiI4Li44LiZ4LiX4LiB4Liy4LijCivguIjguLjguJnguKrguLUKK+C4iOC4uOC4mgor4LiI4Li44LmK4LiaCivguIjguLjguJrguIjguLTguJoKK+C4iOC4uOC5iuC4muC5geC4iOC4hwor4LiI4Li44LmI4LihCivguIjguLjguYnguKEKK+C4iOC4uOC5i+C4oeC4iOC4tOC5i+C4oQor4LiI4Li44Lih4Lie4LiPCivguIjguLjguKHguJ7guKPguKfguJQKK+C4iOC4uOC4oeC4nuC4pQor4LiI4Li44Lih4Lie4Li04LiVCivguIjguLjguKHguYLguJ7guKXguYgKK+C4iOC4uOC5iOC4ogor4LiI4Li44LmJ4LiiCivguIjguLjguKPguJMKK+C4iOC4uOC4o+C4tQor4LiI4Li44LmE4LijCivguIjguLjguKXguIjguK3guKHguYDguIHguKXguYnguLIKK+C4iOC4uOC4peC4p+C4h+C4qOC5jAor4LiI4Li44Lis4LiyCivguIjguLjguKzguLLguKPguLLguIrguKHguJnguJXguKPguLUKK+C4iOC4uQor4LiI4Li54LmICivguIjguLnguYkKK+C4iOC4ueC5iwor4LiI4Li54LiHCivguIjguLnguYnguIjguLXguYkKK+C4iOC4ueC5iuC4lAor4LiI4Li54LiaCivguIjguLnguKPguJMKK+C5gOC4iAor4LmA4LiI4LmKCivguYDguIjguYrguIEKK+C5gOC4iOC5iOC4hwor4LmA4LiI4LmK4LiHCivguYDguIjguYfguJQKK+C5gOC4iOC5h+C4lOC4leC4sOC4hOC4peC4tQor4LmA4LiI4LiU4Li14Lii4LmMCivguYDguIjguJUKK+C5gOC4iOC4leC4meC4sgor4LmA4LiI4LiV4Lie4Lix4LiH4LiE4Li1CivguYDguIjguJXguKHguLnguKXguYDguJ7guKXguLTguIcKK+C5gOC4iOC4leC4quC4tOC4gQor4LmA4LiI4LiV4Li04LiiCivguYDguIjguYLguJXguJvguKPguLTguKLguI3guLLguJMKK+C5gOC4iOC5guC4leC4p+C4tOC4oeC4uOC4leC4tAor4LmA4LiI4LiZCivguYDguIjguYfguJoKK+C5gOC4iOC4o+C4iOC4sgor4LmA4LiI4Lij4Li04LiNCivguYDguIjguKPguLTguJQKK+C5gOC4iOC4o+C4teC4ouC4hwor4LmA4LiI4Lil4Li14Lii4LiHCivguYDguIjguKfguYfguJQKK+C5gOC4iOC4qeC4juC4sgor4LmA4LiI4LmK4Liq4Lix4LinCivguYDguIjguK0KK+C5gOC4iOC5iOC4rQor4LmA4LiI4LmL4LitCivguYDguIjguYvguK3guYDguIjguYrguK3guLAKK+C5gOC4iOC4reC4o+C5jOC5gOC4oeC5gOC4meC4teC4ouC4oQor4LmA4LiI4Lit4LiwCivguYDguIjguLIKK+C5gOC4iOC5iOC4sgor4LmA4LiI4LmJ4LiyCivguYDguIjguYrguLIKK+C5gOC4iOC5ieC4suC4nuC4o+C4sOC4ouC4sgor4LmA4LiI4LmJ4Liy4Lif4LmJ4Liy4Lir4LiN4Li04LiH4Liq4Li04Lij4Li04LiZ4LiY4LijCivguYDguIjguLLguLAKK+C5gOC4iOC4tOC5iOC4hwor4LmA4LiI4Li04LiUCivguYDguIjguLTguYjguJkKK+C5gOC4iOC4tOC4oQor4LmA4LiI4Li14LmK4Lii4LiBCivguYDguIjguLXguKLguIcKK+C5gOC4iOC4teC4ouC4lAor4LmA4LiI4Li14Lii4LiZCivguYDguIjguLXguYvguKLguJkKK+C5gOC4iOC4teC5iuC4ouC4mgor4LmA4LiI4Li14Lii4LihCivguYDguIjguLXguYvguKLguKHguYDguIjguLXguYnguKLguKEKK+C5gOC4iOC4teC4ouC4owor4LmA4LiI4Li14Lii4Lij4Liw4LmE4LiZCivguYDguIjguLXguKLguKPguLDguJrguLLguJQKK+C5gOC4iOC4teC4ouC4pwor4LmA4LiI4Li14LmK4Lii4Lin4LiI4LmK4Liy4LinCivguYDguIjguLfguK0KK+C5gOC4iOC4t+C5iOC4reC4mQor4LmA4LiI4Li34LmJ4Lit4LiiCivguYDguIjguLfguK3guKrguKEKK+C5geC4iAor4LmB4LiI4LmJCivguYHguIjguYsKK+C5geC4iOC4gQor4LmB4LiI4LiHCivguYHguIjguYnguIcKK+C5geC4iOC4h+C4peC4reC4mQor4LmB4LiI4LmK4LiUCivguYHguIjguJTguYHguIjguYkKK+C5geC4iOC5iuC4lOC5geC4iOC5iwor4LmB4LiI4LiV4LijCivguYHguIjguYnguJkKK+C5geC4iOC4mgor4LmB4LiI4LmI4LihCivguYHguIjguYjguKHguIjguLHguJnguJfguKPguYwKK+C5geC4iOC4owor4LmB4LiI4Lij4LiBCivguYHguIjguKPguIcKK+C5geC4iOC4pwor4LmB4LiI4LmJ4LinCivguYHguIjguYvguKcKK+C5geC4iOC5ieC4p+C5hgor4LmB4LiI4LiwCivguYLguIjguIEKK+C5guC4iOC5iuC4gQor4LmC4LiI4LiHCivguYLguIjguIfguIHguKPguLDguYDguJrguJnguJXguLXguYDguKvguKXguYfguIEKK+C5guC4iOC5iOC4h+C4hOC4o+C4tuC5iOC4oQor4LmC4LiI4LmL4LiH4LiE4Lij4Li24LmI4LihCivguYLguIjguYjguIfguITguKPguLjguYjguKEKK+C5guC4iOC4h+C5guC4hOC4o+C5iOC4hwor4LmC4LiI4LmL4LiH4LmA4LiI4LmL4LiHCivguYLguIjguYjguIfguYHguIjguYnguIcKK+C5guC4iOC4lwor4LmC4LiI4LiX4LiB4LmMCivguYLguIjguJfguJnguLIKK+C5guC4iOC4l+C4ouC5jAor4LmC4LiI4LiZCivguYLguIjguKEKK+C5guC4iOC4owor4LmC4LiI4Lij4LiB4Lij4Lij4LihCivguYLguIjguKUKK+C5guC4iOC4qQor4LmC4LiI4Lip4LiI4Lix4LiZCivguYPguIgKK+C5hOC4iAor4LmE4LiI4LmJCivguYTguIjguYnguYYKK+C5hOC4iOC4owor4LiJCivguInguIEKK+C4ieC4geC4oeC4suC4p+C4iOC4owor4LiJ4LiB4Lij4Lij4LiI4LmMCivguInguIHguLLguIgKK+C4ieC4geC4suC4iOC4ieC4geC4o+C4o+C4iOC5jAor4LiJ4LiB4Liy4Lih4Liy4Lie4LiI4LijCivguInguIfguJkKK+C4ieC4h+C4suC4ogor4LiJ4LiT4LiwCivguInguJfguKfguLLguKMKK+C4ieC4l+C4sAor4LiJ4LiX4Liy4LiZ4Lio4Liy4Lil4LiyCivguInguJfguLbguIcKK+C4ieC4meC4p+C4mQor4LiJ4LiZ4Lix4LiHCivguInguJnguLLguIEKK+C4ieC4meC4swor4LiJ4Lia4LiaCivguInguJrguLHguIcKK+C4ieC4muC4seC4lAor4LiJ4Lia4Lix4LiaCivguInguJrguLMKK+C4ieC4oQor4LiJ4Lih4LiaCivguInguKHguKfguIEKK+C4ieC4oeC4p+C4ogor4LiJ4Lih4LmI4Lit4LiHCivguInguKHguLHguIcKK+C4ieC4oeC4seC4mQor4LiJ4Lih4LiyCivguInguKHguLMKK+C4ieC4pQor4LiJ4Lil4Lin4LiiCivguInguKXguK3guIcKK+C4ieC4peC4reC4oQor4LiJ4Lil4Lix4LiBCivguInguKXguLHguJoKK+C4ieC4peC4suC4gQor4LiJ4Lil4Liy4LiB4Lia4Liy4LiHCivguInguKXguLLguIcKK+C4ieC4peC4suC4lAor4LiJ4Lil4Liy4LihCivguInguKXguLLguKIKK+C4ieC4peC4tOC4pwor4LiJ4Lil4Li14LiBCivguInguKXguLgKK+C4ieC4peC4uOC4geC4ieC4peC4p+C4ogor4LiJ4Lil4Li5CivguInguKfguKIKK+C4ieC4p+C4sAor4LiJ4Lin4Lix4LiU4LmA4LiJ4Lin4Li14Lii4LiZCivguInguKfguLLguIcKK+C4ieC4p+C4tQor4LiJ4Liq4LiBCivguInguKzguKDguLTguI3guYLguI0KK+C4ieC5ieC4rQor4LiJ4Lit4LiBCivguInguK3guIHguKnguLHguJXguKPguLTguKLguYwKK+C4ieC5iOC4reC4hwor4LiJ4Lit4LiU4LmGCivguInguLAKK+C4ieC4sOC4geC4sAor4LiJ4Liw4LiJ4Liy4LiUCivguInguLDguInguLLguJkKK+C4ieC4sOC4ieC5iOC4swor4LiJ4Liw4LiJ4Li14LmICivguInguLDguYDguInguLfguYjguK3guKIKK+C4ieC4sOC4leC5ieC4sgor4LiJ4Liw4LiZ4Lix4LmJ4LiZCivguInguLDguJnguLXguYkKK+C4ieC4sOC4reC5ieC4reC4mQor4LiJ4Lix4LiB4LiB4LiwCivguInguLHguJAKK+C4ieC4seC4kOC4oeC4sAor4LiJ4Lix4LiUCivguInguLHguJXguKMKK+C4ieC4seC4l+C4l+C4seC4meC4leC5jAor4LiJ4Lix4LiZCivguInguLHguJnguJfguYwKK+C4ieC4seC4meC4l+C4sAor4LiJ4Lix4LiZ4LiX4Li04LiVCivguInguLHguJnguKfguLjguJLguLQKK+C4ieC4seC4mgor4LiJ4Lix4Lia4LmGCivguInguLHguJ7guJ7guKPguKPguJPguKPguLHguIfguKrguLUKK+C4ieC4seC4ouC4ouC4sgor4LiJ4Liy4LiBCivguInguLLguIcKK+C4ieC5iOC4suC4hwor4LiJ4LmI4Liy4LiJ4Liy4LinCivguInguLLguJQKK+C4ieC4suC4lOC4ieC4suC4mQor4LiJ4Liy4LiV4LiB4Lig4Lix4LiiCivguInguLLguJfguJnguLAKK+C4ieC4suC4mQor4LiJ4Liy4LiaCivguInguLLguJrguInguKfguKIKK+C4ieC4suC4mwor4LiJ4Liy4LiiCivguInguLLguKLguLIKK+C4ieC4suC4o+C4tOC4geC4sgor4LiJ4Liy4LinCivguInguYjguLMKK+C4ieC4s+C4ieC4sgor4LiJ4Liz4LmA4LiJ4LiHCivguInguLPguYHguInguLAKK+C4ieC4tOC5iOC4hwor4LiJ4Li04LiZCivguInguLTguJnguJfguYwKK+C4ieC4tOC4mgor4LiJ4Li04Lih4Lie4Lil4Li1CivguInguLTguKcKK+C4ieC4teC5iAor4LiJ4Li14LiBCivguInguLXguJQKK+C4ieC4uAor4LiJ4Li44LiBCivguInguLjguJQKK+C4ieC4uOC4mQor4LiJ4Li44LibCivguInguLjguKIKK+C4ieC4uOC4ouC4ieC4suC4ogor4LiJ4Li44Lij4Li04LiB4LiyCivguInguLnguYgKK+C4ieC4ueC5iOC4ieC4teC5iAor4LiJ4Li54LiUCivguInguLnguJTguInguLLguJQKK+C5gOC4iQor4LmA4LiJ4LiBCivguYDguInguYLguIEKK+C5gOC4ieC5iOC4hwor4LmA4LiJ4LiUCivguYDguInguJcKK+C5gOC4ieC4meC4teC4ouC4mQor4LmA4LiJ4Lie4Liy4LiwCivguYDguInguKIKK+C5gOC4ieC4peC4ogor4LmA4LiJ4Lil4LinCivguYDguInguKXguLIKK+C5gOC4ieC4peC4tOC4oQor4LmA4LiJ4Lil4Li14LmI4LiiCivguYDguInguKXguLXguKLguIcKK+C5gOC4ieC4peC4teC5iOC4ouC4hwor4LmA4LiJ4Lil4Li14Lii4LiaCivguYDguInguKXguLXguKLguKcKK+C5gOC4ieC4p+C4teC4ouC4hwor4LmA4LiJ4Lin4Li14Lii4LiZCivguYDguInguK3guLAKK+C5gOC4ieC4sgor4LmA4LiJ4Liy4LiB4LmK4Lin4LiiCivguYDguInguLLguYLguInguJQKK+C5gOC4ieC4suC4ruC4t+C5ieC4rQor4LmA4LiJ4Liy4LiwCivguYDguInguLTguJQKK+C5gOC4ieC4tOC4mgor4LmA4LiJ4Li04Lia4LmGCivguYDguInguLXguKLguIcKK+C5gOC4ieC4teC4ouC4h+C4nuC4o+C5ieC4suC4lOC4swor4LmA4LiJ4Li14Lii4LiH4Lie4Lij4LmJ4Liy4LiZ4Liy4LiH4LmB4LitCivguYDguInguLXguKLguIfguJ7guKPguYnguLLguKHguK3guI0KK+C5gOC4ieC4teC4ouC4lAor4LmA4LiJ4Li14Lii4LiaCivguYDguInguLXguYjguKLguKcKK+C5gOC4ieC4t+C4reC4mQor4LmA4LiJ4Li34LmI4Lit4LiiCivguYHguIkKK+C5geC4ieC5iAor4LmB4LiJ4LiBCivguYHguInguIHguYYKK+C5geC4ieC4hwor4LmB4LiJ4LmI4LiHCivguYHguInguKXguJoKK+C5geC4ieC4peC5ieC4oQor4LmB4LiJ4Lil4LmJ4Lih4LmB4LiK4LmI4Lih4LiK4LmJ4Lit4LiiCivguYHguInguKXguLAKK+C5geC4ieC4pwor4LmB4LiJ4LiwCivguYLguIkKK+C5guC4ieC5iAor4LmC4LiJ4LmA4LiBCivguYLguInguYjguIfguInguYjguLLguIcKK+C5guC4ieC4h+C5gOC4ieC4hwor4LmC4LiJ4LiUCivguYLguInguJnguJQKK+C5guC4ieC4mgor4LmC4LiJ4LmA4Lia4LmKCivguYLguInguKEKK+C5guC4ieC4oeC4h+C4suC4oQor4LmC4LiJ4Lil4LiBCivguYTguInguJkKK+C5hOC4ieC5hOC4pQor4LiKCivguIrguIEKK+C4iuC4geC4sgor4LiK4LiE4LijCivguIrguITguLHguJUKK+C4iuC4hOC4seC4lwor4LiK4LiE4Lix4LiZCivguIrguIcKK+C4iuC4h+C4hOC4sgor4LiK4LiH4LmC4LiECivguIrguIfguIbguYwKK+C4iuC4h+C4huC4sgor4LiK4LiO4LiyCivguIrguI7guLTguKUKK+C4iuC4lAor4LiK4LiX4Li24LiHCivguIrguJkKK+C4iuC4meC4gQor4LiK4LiZ4LiB4LiB4Lij4Lij4LihCivguIrguJnguJnguLUKK+C4iuC4meC4muC4lwor4LiK4LiZ4Lih4LmMCivguIrguJnguKfguJkKK+C4iuC4meC4sAor4LiK4LiZ4Lix4LiBCivguIrguJnguLIKK+C4iuC4meC4suC4hwor4LiK4LiZ4Li0CivguIrguJnguLTguIEKK+C4iuC4meC4tOC4geC4sgor4LiK4LiZ4Li04LiUCivguIrguJnguLTguJTguLIKK+C4iuC4meC4tOC4qAor4LiK4LmA4LiZ4LiV4LiV4Li1CivguIrguJrguLIKK+C4iuC4m+C4mQor4LiK4Lib4LmC4Lii4LiECivguIrguKEKK+C4iuC4oeC4iuC4p+C4mQor4LiK4Lih4LiU4LiK4Lih4LmJ4Lit4LiiCivguIrguKHguJnguLLguJQKK+C4iuC4oeC4mgor4LiK4Lih4Lie4Li5CivguIrguKHguJ7guLnguYgKK+C4iuC4oeC4nuC4ueC4nuC4suC4lOC4muC5iOC4sgor4LiK4Lih4Lij4LihCivguIrguKHguYDguKXguLLguLAKK+C4iuC4oeC4quC4p+C4meC4quC4p+C4o+C4o+C4hOC5jAor4LiK4Lih4LmJ4Lit4LiiCivguIrguKHguLHguJkKK+C4iuC4oeC4sgor4LiK4Lih4LmJ4Liy4LiiCivguIrguYTguKEKK+C4iuC4ogor4LiK4Lii4Lix4Lih4Lia4LiU4Li1CivguIrguKLguLIKK+C4iuC4ouC4uOC4leC4tAor4LiK4LmC4LiiCivguIrguKMKK+C4iuC4o+C4leC4sgor4LiK4Lij4LiX4Li24LiHCivguIrguKPguYLguKHguKUKK+C4iuC4o+C5hOC4oQor4LiK4Lij4Lij4Liy4LiHCivguIrguKPguKPguLTguJkKK+C4iuC4o+C5geC4o+C4hwor4LiK4Lij4LmB4Lij4LmI4LiHCivguIrguKPguYDguKXguLfguK3guJQKK+C4iuC4o+C5guC4peC4hwor4LiK4Lij4Lit4LiB4LiK4Lij4Lix4LiHCivguIrguKPguK3guK3guJoKK+C4iuC4o+C4reC4seC4lAor4LiK4Lij4Lit4LmI4LizCivguIrguKPguK3guLfguYnguK0KK+C4iuC4o+C4reC4uOC5iOC4oQor4LiK4Lij4LiwCivguIrguKPguLDguIfguKEKK+C4iuC4o+C4sOC4h+C5iOC4reC4mQor4LiK4Lij4Liw4LiH4LizCivguIrguKPguLDguJTguLHguJQKK+C4iuC4o+C4sOC4lOC4t+C5iOC4mQor4LiK4Lij4Liw4LmA4LiU4Li14Lii4LiUCivguIrguKPguLDguJrguK3guJoKK+C4iuC4o+C4sOC4muC4suC4mgor4LiK4Lij4Liw4Lih4LiUCivguIrguKPguLDguKHguLHguKcKK+C4iuC4o+C4sOC4oeC4t+C5iOC4mQor4LiK4Lij4Liw4Lih4Li44LiB4LiK4Lij4Liw4Lih4Lit4LihCivguIrguKPguLDguKHguLjguYjguJkKK+C4iuC4o+C4sOC5gOC4oeC4teC4ouC4hwor4LiK4Lij4Liw4LmA4Lih4Li14Lii4LiZCivguIrguKPguLDguKXguK0KK+C4iuC4o+C4sOC4peC4reC4hwor4LiK4Lij4Liw4Lil4LmI4Lit4LiHCivguIrguKPguLDguKXguLHguYjguIcKK+C4iuC4o+C4sOC4peC4seC4lAor4LiK4Lij4Liw4Lil4LmJ4LizCivguIrguKPguLDguKXguLgKK+C4iuC4o+C4sOC5geC4peC4hwor4LiK4Lij4Liw4Lit4Lix4LiaCivguIrguKPguLDguK3guLLguJoKK+C4iuC4o+C4sOC5gOC4reC4oQor4LiK4Lij4Lix4LiUCivguIrguKPguLHguKcKK+C4iuC4o+C4sgor4LiK4Lij4Liy4LiB4Liy4LiB4Li1CivguIrguKPguLLguJoKK+C4iuC4o+C4suC4muC4iuC4o+C4seC4mgor4LiK4Lij4Liy4Lii4Li4CivguIrguKPguLTguJkKK+C4iuC4o+C4uOC4gQor4LiK4Lij4Li54LiaCivguIrguKUKK+C4iuC4peC4tQor4LiK4Lil4Li54LiB4LiyCivguIrguYDguKUKK+C4iuC5guC4peC4hwor4LiK4LmC4Lil4LihCivguIrguYjguKfguIcKK+C4iuC5iOC4p+C4h+C4l+C4o+C4seC4nuC4ouC5jAor4LiK4LmI4Lin4LiH4Liq4Li04LiX4LiY4Li04LmMCivguIrguKfguJQKK+C4iuC4p+C4mQor4LiK4Lin4LiiCivguIrguYjguKfguKIKK+C4iuC4p+C4owor4LiK4Lin4Lil4Li04LiVCivguIrguKfguLHguIEKK+C4iuC4p+C4sgor4LiK4Lin4Liy4LilCivguIrguKfguLLguKXguLIKK+C4iuC5geC4p+C4hwor4LiK4LmI4LitCivguIrguK3guIEKK+C4iuC5h+C4reC4gQor4LiK4LmH4Lit4LiB4LiB4Liy4Lij4Li1CivguIrguYfguK3guIHguYLguIHguYDguKXguJUKK+C4iuC5h+C4reC4geC5guC4geC5geC4peC4lQor4LiK4Lit4LiHCivguIrguYjguK3guIcKK+C4iuC5ieC4reC4hwor4LiK4LmJ4Lit4LiH4LiZ4Liy4LiHCivguIrguYnguK3guIfguJnguLLguIfguITguKXguLXguYgKK+C4iuC5ieC4reC4h+C5geC4oeC4pwor4LiK4Lit4LiZCivguIrguYjguK3guJkKK+C4iuC5ieC4reC4mQor4LiK4LmJ4Lit4LiZ4LiZ4Liy4LiHCivguIrguK3guJoKK+C4iuC4reC4oQor4LiK4LmI4Lit4LiiCivguIrguYnguK3guKIKK+C4iuC5ieC4reC4ouC4iuC5iOC4suC4h+C4o+C4swor4LiK4LmJ4Lit4Lii4LiZ4Liy4LiH4Lij4LizCivguIrguK3guKXguYzguIEKK+C4iuC4reC5iOC4swor4LiK4Lit4Li34LmJ4LitCivguIrguK3guLjguYjguKEKK+C4iuC4sAor4LiK4Liw4LiE4Lij4Liy4LihCivguIrguLDguIfguK3guIEKK+C4iuC4sOC4h+C5iOC4reC4mQor4LiK4Liw4LiH4Lix4LiBCivguIrguLDguIfguLHguJQKK+C4iuC4sOC4h+C4suC4mgor4LiK4Liw4LiH4LmJ4LizCivguIrguLDguIfguLjguYnguKEKK+C4iuC4sOC5gOC4h+C5ieC4rQor4LiK4Liw4LmA4LiH4Li34LmJ4Lit4LihCivguIrguLDguYHguIfguYkKK+C4iuC4sOC5guC4h+C4gQor4LiK4Liw4LiJ4LmI4LiyCivguIrguLDguIrguYjguK3guIcKK+C4iuC4sOC4iuC5ieC4sgor4LiK4Liw4LiK4Li04LiUCivguIrguLDguJTguLXguIrguLDguKPguYnguLLguKIKK+C4iuC4sOC5guC4lAor4LiK4Liw4LiV4LiyCivguIrguLDguJXguYnguLIKK+C4iuC4sOC4meC4tQor4LiK4Liw4LiZ4Li44LiHCivguIrguLDguYDguJnguLLguLAKK+C4iuC4sOC4nuC4peC4uQor4LiK4Liw4LmA4Lie4Lil4Li04LiHCivguIrguLDguKHguJQKK+C4iuC4sOC4oeC4lOC4leC5ieC4mQor4LiK4Liw4Lih4LiaCivguIrguLDguKHguKfguIcKK+C4iuC4sOC4oeC4seC4hwor4LiK4Liw4Lih4Lix4LiUCivguIrguLDguYHguKHguYgKK+C4iuC4sOC4o+C4reC4ogor4LiK4Liw4Lil4LitCivguIrguLDguKXguK3guKEKK+C4iuC4sOC4peC4sOC4geC4sgor4LiK4Liw4Lil4LmI4LiyCivguIrguLDguKXguLTguJkKK+C4iuC4sOC4peC4ueC4lAor4LiK4Liw4LmA4Lil4LiHCivguIrguLDguYDguKXguKIKK+C4iuC4sOC5geC4peC5h+C4gQor4LiK4Liw4LmB4Lil4LiHCivguIrguLDguKfguLHguIcKK+C4iuC4sOC4p+C4suC4gQor4LiK4Liw4Lin4Liy4LiUCivguIrguLDguKfguLjguYnguIcKK+C4iuC4sOC5gOC4p+C4tOC4geC4iuC4sOC4p+C4suC4gQor4LiK4Liw4LmB4Lin4LiHCivguIrguLDguK3guKEKK+C4iuC4sOC4reC5ieC4reC4mQor4LiK4Liw4LmA4Lit4LihCivguIrguLDguYLguK3guJkKK+C4iuC4seC4gQor4LiK4Lix4LiB4LiE4Lij4Liy4LihCivguIrguLHguIHguIrguYnguLIKK+C4iuC4seC4geC4q+C4meC5ieC4sgor4LiK4Lix4LiHCivguIrguLHguYjguIcKK+C4iuC4seC4h+C4hOC4sgor4LiK4Lix4LiH4LmA4LiG4Lii4Lii4LiB4LiwCivguIrguLHguIrguKfguLLguKUKK+C4iuC4seC4jwor4LiK4Lix4LiUCivguIrguLHguJTguIrguYnguLIKK+C4iuC4seC4mQor4LiK4Lix4LmJ4LiZCivguIrguLHguJnguIHguLLguJQKK+C4iuC4seC4meC4iuC4tQor4LiK4Lix4LiZ4LiV4Liy4LiG4LijCivguIrguLHguJnguJXguLgKK+C4iuC4seC4meC4meC4sOC4leC4uAor4LiK4Lix4LiZ4LiZ4Li4CivguIrguLHguJnguJnguLjguIHguLAKK+C4iuC4seC4meC5guC4o+C4hwor4LiK4Lix4LiZ4Lip4LiyCivguIrguLHguJnguKrguLnguJXguKMKK+C4iuC4seC4m+C4mQor4LiK4Lix4LieCivguIrguLHguKHguJ7guLnguJnguJcKK+C4iuC4seC4ogor4LiK4Lix4Lii4LiB4Lij4Liw4Liq4LieCivguIrguLHguKLguJrguLLguJkKK+C4iuC4seC4ouC4nuC4pOC4geC4qeC5jAor4LiK4Lix4Lii4Lig4Li54Lih4Li0CivguIrguLHguKLguYDguKDguKPguLUKK+C4iuC4seC4ouC4oeC4h+C4hOC4pQor4LiK4Lix4Lii4Lih4LiH4LiE4Lil4LiE4Liy4LiW4LiyCivguIrguLHguKXguKXguLjguIHguLIKK+C4iuC4seC5iOC4pwor4LiK4Lix4LmJ4LinCivguIrguLHguKfguIrguKEKK+C4iuC4seC5iOC4p+C5geC4leC5iOC4p+C5iOC4sgor4LiK4LiyCivguIrguYnguLIKK+C4iuC4suC4hOC4owor4LiK4Liy4LiE4Lij4Li04LiVCivguIrguLLguITguKPguLTguKLguLLguJnguLjguYLguKLguIQKK+C4iuC5iOC4suC4hwor4LiK4LmJ4Liy4LiHCivguIrguYnguLLguIfguIHguKPguLAKK+C4iuC5iOC4suC4h+C4geC4o+C4sOC5hOC4owor4LiK4LmJ4Liy4LiH4LiU4LizCivguIrguYnguLLguIfguYHguJTguIcKK+C4iuC5iOC4suC4h+C4l+C4reC4hwor4LiK4LmI4Liy4LiH4LiZ4LmJ4Liy4LinCivguIrguYnguLLguIfguYDguJzguLfguK3guIEKK+C4iuC5iOC4suC4h+C5gOC4q+C4peC5h+C4gQor4LiK4LmJ4Liy4LiK4LmI4Lit4LiZCivguIrguLLguI0KK+C4iuC4suC4lAor4LiK4Liy4LiU4LiBCivguIrguLLguJXguJrguLjguKnguKLguYwKK+C4iuC4suC4leC4o+C4tQor4LiK4Liy4LiV4LiwCivguIrguLLguJXguLIKK+C4iuC4suC4leC4tAor4LiK4Liy4LiV4Li04LiY4Lij4Lij4LihCivguIrguLLguJXguLTguJ7guLHguJnguJjguLjguYwKK+C4iuC4suC4leC4tOC4nuC4seC4meC4mOC4uOC5jOC4p+C4o+C4o+C4k+C4meC4sgor4LiK4Liy4LiV4Li04Lie4Lix4LiZ4LiY4Li44LmM4Lin4Li04LiX4Lii4LiyCivguIrguLLguJXguLTguKDguLnguKHguLQKK+C4iuC4suC4leC4tOC4oeC4suC4peC4sgor4LiK4Liy4LiV4Li04Lij4LiqCivguIrguLLguJXguLTguKrguLHguKHguJrguLHguJnguJnguYwKK+C4iuC4suC4mQor4LiK4Liy4LiZ4Lin4Liy4LiX4Li04LiBCivguIrguLLguJnguLgKK+C4iuC4suC4meC4uOC4geC4sAor4LiK4LmJ4Liy4Lib4Li14LmICivguIrguYnguLLguJvguLXguYjguYTguKvguJkKK+C4iuC5ieC4suC5geC4m+C5ieC4mQor4LiK4LmJ4Liy4Lie4Lil4Li5CivguIrguLLguKEKK+C4iuC4suC4oeC4nuC4ueC4meC4lwor4LiK4Liy4Lih4Liy4LiU4LijCivguIrguLLguKHguLLguJTguLIKK+C4iuC4suC4oeC4suC4leC4uAor4LiK4Liy4LiiCivguIrguLLguKLguJjguIcKK+C4iuC4suC4ouC4nOC5ieC4suC4quC4teC4lOC4sgor4LiK4Liy4Lii4LiyCivguIrguLLguKMKK+C4iuC4suC4o+C4tQor4LiK4Liy4LilCivguIrguLLguKXguLIKK+C4iuC4suC4peC4tOC4meC4tQor4LiK4LmJ4Liy4LmA4Lil4Li34Lit4LiUCivguIrguLLguKcKK+C4iuC4suC4p+C4tQor4LiK4Liy4Lir4LmMCivguIrguYnguLLguKvguKHguK3guIcKK+C4iuC4suC4q+C4o+C4seC4meC4meC4suC4p+C4tQor4LiK4LizCivguIrguYjguLMKK+C4iuC5ieC4swor4LiK4Liz4LiH4Lix4LiUCivguIrguLPguIfguLLguKIKK+C4iuC4s+C4h+C4t+C4rQor4LiK4LmI4Liz4LiK4Lit4LiHCivguIrguYjguLPguIrguYjguLIKK+C4iuC4s+C4meC4mQor4LiK4Liz4LiZ4Lij4LijCivguIrguLPguJnguLAKK+C4iuC4s+C4meC4seC4jQor4LiK4Liz4LiZ4Lix4LiZCivguIrguLPguJnguLLguI0KK+C4iuC4s+C4meC4tAor4LiK4Liz4LmA4LiZ4Li14Lii4LiZCivguIrguLPguYDguJnguLXguKLguKMKK+C4iuC4s+C4oeC4sOC4meC4suC4lAor4LiK4Liz4Lih4Liw4LmA4Lil4Li14Lii4LiHCivguIrguLPguKPguYjguKfguKIKK+C4iuC4s+C4o+C4sAor4LiK4LmJ4Liz4Lij4Lix4LmI4LinCivguIrguLPguKPguLjguJQKK+C4iuC4s+C5gOC4o+C4sgor4LiK4Liz4LmA4Lij4Liy4LiwCivguIrguLPguKXguLIKK+C4iuC4s+C5gOC4peC4t+C4reC4hwor4LiK4Liz4LmB4Lir4Lil4LiwCivguIrguLQKK+C4iuC4tOC4hwor4LiK4Li04LmI4LiHCivguIrguLTguIfguIrguLHguIcKK+C4iuC4tOC4h+C4iuC4seC4mQor4LiK4Li04LiH4LiK4LmJ4LiyCivguIrguLTguIfguIrguYnguLLguIrguLLguKXguLUKK+C4iuC4tOC4h+C4iuC4teC5iAor4LiK4Li04LiH4Lie4Lil4LiaCivguIrguLTguIfguK7guLfguYnguK0KK+C4iuC4tOC4iuC4sAor4LiK4Li04LiK4Li0CivguIrguLTguJPguJPguLAKK+C4iuC4tOC4lAor4LiK4Li04LmA4LiU4LiZ4LiX4Lij4Li14Lii4LmMCivguIrguLTguJUKK+C4iuC4tOC4mQor4LiK4Li04LmI4LiZCivguIrguLTguYnguJkKK+C4iuC4tOC4meC5guC4lQor4LiK4Li04LiZ4Lia4Li44LiV4LijCivguIrguLTguJnguKrguLLguKrguJnguYwKK+C4iuC4tOC4oQor4LiK4Li04Lih4LmB4Lib4LiZ4LiL4Li1CivguIrguLTguKLguLIKK+C4iuC4tOC4o+C4k+C4sAor4LiK4Li04Lij4LiwCivguIrguLTguKfguKvguLIKK+C4iuC4tOC4quC4sgor4LiK4Li1CivguIrguLXguYgKK+C4iuC4teC5iQor4LiK4Li14LieCivguIrguLXguJ/guK3guIcKK+C4iuC4teC4o+C4kwor4LiK4Li14Lij4LiwCivguIrguLXguKfguLAKK+C4iuC4teC4reC4sOC4q+C5jAor4LiK4Li34LiUCivguIrguLfguYjguJkKK+C4iuC4t+C5ieC4mQor4LiK4Li34LmI4LitCivguIrguLfguYnguK0KK+C4iuC4uAor4LiK4Li44LiBCivguIrguLjguIHguIrguLUKK+C4iuC4uOC5iOC4hwor4LiK4Li44LmJ4LiHCivguIrguLjguJQKK+C4iuC4uOC4leC4tAor4LiK4Li44LiZCivguIrguLjguJoKK+C4iuC4uOC4muC4iuC4uQor4LiK4Li44LihCivguIrguLjguYjguKEKK+C4iuC4uOC4oeC4meC4uOC4oQor4LiK4Li44Lih4Lie4LijCivguIrguLjguKHguJ7guLIKK+C4iuC4uOC4oeC5gOC4nuC5h+C4lAor4LiK4Li44Lih4LmB4Lie4Lij4LiBCivguIrguLjguKHguKPguLjguKEKK+C4iuC4uOC4oeC4quC4suC4ogor4LiK4Li44Lih4LmB4Liq4LiHCivguIrguLjguKHguYDguKvguYfguJQKK+C4iuC4uOC5iOC4ogor4LiK4Li44LmI4Lii4LmGCivguIrguLjguKXguKHguLjguJkKK+C4iuC4uOC4peC4tQor4LiK4Li44Lip4LiT4LiwCivguIrguLkKK+C4iuC4ueC5iQor4LmA4LiK4LmH4LiECivguYDguIrguYnguIcKK+C5gOC4iuC4h+C5gOC4peC4hwor4LmA4LiK4LmJ4LiH4Lin4Lix4LiaCivguYDguIrguYfguJQKK+C5gOC4iuC5h+C4lOC4q+C4meC5ieC4sgor4LmA4LiK4LiZCivguYDguIrguYjguJkKK+C5gOC4iuC4ogor4LmA4LiK4Lij4LiyCivguYDguIrguKPguLLguLAKK+C5gOC4iuC4o+C4tOC4lAor4LmA4LiK4Lil4LiHCivguYDguIrguKXguKIKK+C5gOC4iuC4peC5geC4peC5h+C4gQor4LmA4LiK4Lil4Li14Lii4LiHCivguYDguIrguKfguIcKK+C5gOC4iuC4qeC4kOC4sgor4LmA4LiK4LitCivguYDguIrguYjguLIKK+C5gOC4iuC5ieC4sgor4LmA4LiK4Liy4Lin4LmMCivguYDguIrguLLguKfguJnguYwKK+C5gOC4iuC4tOC4hwor4LmA4LiK4Li04LiH4LiB4LilCivguYDguIrguLTguIfguIvguYnguK3guJkKK+C5gOC4iuC4tOC4h+C5gOC4lOC4teC4ouC4pwor4LmA4LiK4Li04LiH4LmA4LiU4Li14LmI4Lii4LinCivguYDguIrguLTguIfguKHguLjguKEKK+C5gOC4iuC4tOC4h+C5gOC4p+C4teC4ouC4mQor4LmA4LiK4Li04LiH4Lit4Lij4Lij4LiWCivguYDguIrguLTguI0KK+C5gOC4iuC4tOC4lAor4LmA4LiK4Li04LmJ4LiVCivguYDguIrguLXguKIKK+C5gOC4iuC4teC5ieC4ogor4LmA4LiK4Li14Lii4LiHCivguYDguIrguLXguYjguKLguJkKK+C5gOC4iuC4teC5iOC4ouC4meC4q+C4oeC4suC4gQor4LmA4LiK4Li14Lii4LiaCivguYDguIrguLXguYjguKLguKEKK+C5gOC4iuC4teC4ouC4owor4LmA4LiK4Li14Lii4Lij4LmMCivguYDguIrguLXguKLguKPguJPguYwKK+C5gOC4iuC4teC4ouC4pwor4LmA4LiK4Li14LmI4Lii4LinCivguYDguIrguLfguYjguK0KK+C5gOC4iuC4t+C5ieC4rQor4LmA4LiK4Li34Lit4LiBCivguYDguIrguLfguYjguK3guIcKK+C5gOC4iuC4t+C5iOC4reC4h+C4iuC5ieC4sgor4LmA4LiK4Li34Lit4LiUCivguYDguIrguLfguK3guJkKK+C5gOC4iuC4t+C5iOC4reC4oQor4LmA4LiK4Li34LmI4Lit4Lin4Lix4LiZCivguYHguIoKK+C5geC4iuC5iAor4LmB4LiK4LmI4LiHCivguYHguIrguIfguKHguLIKK+C5geC4iuC4muC5iuC4p+C4ogor4LmB4LiK4LmI4LihCivguYHguIrguKHguYDguJvguI0KK+C5geC4iuC4oeC4oOC4uQor4LmB4LiK4Lij4LmMCivguYHguIrguKPguIcKK+C5geC4iuC4peC5iOC4oQor4LmB4LiK4LiwCivguYLguIrguIEKK+C5guC4iuC4geC5hgor4LmC4LiK4LiB4Li44LiZCivguYLguIrguIQKK+C5guC4iuC4h+C5guC4peC4hwor4LmC4LiK4LiU4LiBCivguYLguIrguJTguLbguIEKK+C5guC4iuC4lQor4LmC4LiK4LiV4LiBCivguYLguIrguJXguLQKK+C5guC4iuC4mQor4LmC4LiK4Lih4LmC4Lij4LihCivguYLguIrguKIKK+C5guC4iuC4ouC4h+C4geC4suC4owor4LmC4LiK4Lii4LiK4Liy4LiiCivguYLguIrguKLguJXguLTguKoKK+C5guC4iuC4o+C4oQor4LmC4LiK4Lin4LmMCivguYPguIrguYgKK+C5g+C4iuC5iQor4LmE4LiKCivguYTguIrguJnguLAKK+C5hOC4iuC4ogor4LmE4LiK4LmC4LiiCivguIsKK+C4i+C4gQor4LiL4LmI4LiBCivguIvguIfguJTguLMKK+C4i+C5iOC4h+C4ruC4t+C5ieC4rQor4LiL4LiH4LmJ4LiyCivguIvguJQKK+C4i+C4mQor4LiL4LmI4LiZCivguIvguYnguJkKK+C4i+C4mgor4LiL4LihCivguIvguKPguK3guIHguIvguKPguLHguIcKK+C4i+C4p+C4lAor4LiL4Lin4LiU4LmA4LiLCivguIvguKfguJTguJfguKPguIcKK+C4i+C4p+C4mQor4LiL4Lin4LiiCivguIvguK0KK+C4i+C4reC4gQor4LiL4Lit4LiHCivguIvguYjguK3guIcKK+C4i+C5ieC4reC4hwor4LiL4Lit4LiH4Lie4Lil4Li5CivguIvguK3guIfguYHguKHguKcKK+C4i+C5ieC4reC4h+C5geC4oeC4pwor4LiL4Lit4LmB4LiLCivguIvguYnguK3guYHguIvguYkKK+C4i+C4reC4mQor4LiL4LmI4Lit4LiZCivguIvguYnguK3guJkKK+C4i+C5iOC4reC4meC4geC4peC4tOC5iOC4mQor4LiL4LmI4Lit4LiZ4LiX4Lij4Liy4LiiCivguIvguK3guKEKK+C4i+C5iOC4reC4oQor4LiL4LmJ4Lit4LihCivguIvguK3guKHguIvguYjguK0KK+C4i+C4reC4ogor4LiL4Lit4LiqCivguIvguLDguIvguKPguYnguLLguKcKK+C4i+C4sOC4i+C5iOC4reC4hwor4LiL4Liw4LiL4Lit4LmA4LiL4Li14LiiCivguIvguLDguIvguLTguIHguIvguLDguYHguIsKK+C4i+C4sOC4i+C4tOC4mgor4LiL4Liw4LmA4LiL4Liy4LiwCivguIvguLDguYDguIvguLXguKLguJoKK+C4i+C4seC4gQor4LiL4Lix4LiB4Liq4LmJ4Liy4LinCivguIvguLHguIcKK+C4i+C4seC5ieC4hwor4LiL4Lix4LiH4LiB4Liw4LiV4Liy4LiiCivguIvguLHguIfguYHguIvguKcKK+C4i+C4seC4h+C4leC4suC4ogor4LiL4Lix4LiUCivguIvguLHguYnguJkKK+C4i+C4seC4meC4leC4suC4hOC4peC4reC4qgor4LiL4Lix4LiaCivguIvguLHguJrguIvguLXguYgKK+C4i+C4seC4oQor4LiL4Lix4Lil4Lif4LiyCivguIvguLHguKXguYLguKcKK+C4i+C4seC5ieC4pwor4LiL4Lix4Lin4Lib4LiyCivguIvguLIKK+C4i+C5iOC4sgor4LiL4Liy4LiBCivguIvguLLguIHguLjguKPguLAKK+C4i+C4suC5hOC4gQor4LiL4Liy4LiHCivguIvguYjguLLguIcKK+C4i+C4suC4lAor4LiL4Liy4LiZCivguIvguYjguLLguJkKK+C4i+C4suC4muC4i+C5iOC4suC4mQor4LiL4Liy4Lia4LiL4Li24LmJ4LiHCivguIvguYjguLLguYLguJrguLAKK+C4i+C4suC4m+C4seC5iuC4pwor4LiL4Liy4LmB4Lih4LmA4Lij4Li14Lii4LihCivguIvguYnguLLguKIKK+C4i+C4suC5guC4ouC4meC4suC4o+C4sAor4LiL4Liy4Lij4LmMCivguIvguLLguKPguLTguJnguLIKK+C4i+C4suC4peC4suC5gOC4m+C4sgor4LiL4Liy4LinCivguIvguYjguLLguKvguKPguLTguYjguKEKK+C4i+C5ieC4swor4LiL4Li0CivguIvguLTguIEKK+C4i+C4tOC4geC4i+C4teC5iQor4LiL4Li04LiB4LmB4LiL4LmH4LiBCivguIvguLTguIHguLLguKPguYwKK+C4i+C4tOC4h+C5guC4hOC4meC4sgor4LiL4Li04LmI4LiZCivguIvguLTguJnguJXguLbguYrguIcKK+C4i+C4tOC4meC4meC4suC4oeC4tOC4gQor4LiL4Li04LiZ4LmB4LiqCivguIvguLTguJoKK+C4i+C4tOC4muC5hgor4LiL4Li04LibCivguIvguLTguJ/guLTguKXguLTguKoKK+C4i+C4tOC5ieC4oQor4LiL4Li04Lil4Li04LiE4Lit4LiZCivguIvguLTguKcKK+C4i+C4tQor4LiL4Li14LmICivguIvguLXguIEKK+C4i+C4teC5ieC4i+C4reC4mQor4LiL4Li14LmJ4LiL4Lix4LmJ4LinCivguIvguLXguYDguIvguYfguIHguYTguInguYgKK+C4i+C4teC5gOC4i+C4teC4ouC4oQor4LiL4Li14LiUCivguIvguLXguJnguK3guJkKK+C4i+C4teC4m+C5iOC4suC4ogor4LiL4Li14LmA4Lih4LiZ4LiV4LmMCivguIvguLXguYDguKPguLXguKLguKEKK+C4i+C4teC4peC4teC5gOC4meC4teC4ouC4oQor4LiL4Li14Lit4Li04LmJ4LinCivguIvguLbguIEKK+C4i+C4tuC5iOC4hwor4LiL4Li24LmJ4LiHCivguIvguLbguKEKK+C4i+C4t+C5iOC4rQor4LiL4Li34LmJ4LitCivguIvguLfguYjguK3guYYKK+C4i+C4t+C5ieC4reC4q+C4meC5ieC4sgor4LiL4Li44LiBCivguIvguLjguIHguIvguJkKK+C4i+C4uOC4hwor4LiL4Li44LiZCivguIvguLjguJoKK+C4i+C4uOC4muC4i+C4tOC4mgor4LiL4Li44Lia4LiL4Li54LmICivguIvguLjguJsKK+C4i+C4uOC5iOC4oQor4LiL4Li44LmJ4LihCivguIvguLjguYnguKHguIHguKPguLDguJXguYjguLLguKIKK+C4i+C4uOC5iOC4oeC4i+C5iOC4suC4oQor4LiL4Li44Lih4LmB4LiL4LinCivguIvguLjguYjguKHguYDguKrguLXguKLguIcKK+C4i+C4uOC4ogor4LiL4Li54LmICivguIvguLnguYjguIHguLHguYnguJnguKPguLHguYnguKfguYTguIvguKHguLLguJkKK+C4i+C4ueC5guC4hOC4o+C4qgor4LiL4Li54LiUCivguIvguLnguYnguJQKK+C4i+C4ueC4lOC4i+C4suC4lAor4LiL4Li54LiaCivguYDguIsKK+C5gOC4i+C5h+C4gQor4LmA4LiL4LmB4LiE4LiZ4LiV4LmMCivguYDguIvguYfguIcKK+C5gOC4i+C5iOC4hwor4LmA4LiL4LmJ4LiHCivguYDguIvguYfguIfguYHguIvguYgKK+C5gOC4i+C4lQor4LmA4LiL4LiZCivguYDguIvguYfguJkKK+C5gOC4i+C5iOC4mQor4LmA4LiL4LiZ4LiV4Li04LiB4Lij4Lix4LihCivguYDguIvguJnguJXguLTguYDguKHguJXguKMKK+C5gOC4i+C4meC4leC4tOC4peC4tOC4leC4owor4LmA4LiL4LmI4LiZ4LmA4Lir4Lil4LmJ4LiyCivguYDguIvguJvguLHguIHguJXguLDguIHguKPguYnguK0KK+C5gOC4i+C4nwor4LmA4LiL4Lij4LiyCivguYDguIvguKPguLLguLAKK+C5gOC4i+C4o+C4uOC5iOC4oQor4LmA4LiL4Lil4LmA4LiL4Li14Lii4LiqCivguYDguIvguKXguKXguYwKK+C5gOC4i+C4peC4peC4ueC4peC4reC4ouC4lOC5jAor4LmA4LiL4Lil4Lil4Li54LmC4Lil4LiqCivguYDguIvguKXguKrguYzguYHguKHguJkKK+C5gOC4i+C5iOC4rQor4LmA4LiL4Lit4Lij4LmMCivguYDguIvguK3guKPguYzguYLguITguYDguJnguLXguKLguKEKK+C5gOC4i+C4reC4sAor4LmA4LiL4LiyCivguYDguIvguYnguLLguIvguLXguYkKK+C5gOC4i+C4suC4sAor4LmA4LiL4Li04LiHCivguYDguIvguLTguYnguIcKK+C5gOC4i+C4teC4ouC4mQor4LmA4LiL4Li14Lii4LiaCivguYDguIvguLXguKLguKHguIvguLUKK+C5gOC4i+C4teC4ouC4pwor4LmA4LiL4Li14LmI4Lii4LinCivguYDguIvguLXguYnguKLguKcKK+C5gOC4i+C4teC5iOC4ouC4p+C4geC4suC4hwor4LmA4LiL4Li34LmI4Lit4LiHCivguYHguIsKK+C5geC4i+C5iAor4LmB4LiL4LmH4LiB4LiE4Liy4Lij4Li04LiZCivguYHguIvguIHguLjguKIKK+C5geC4i+C4hwor4LmB4LiL4LiH4LmB4LiL4LinCivguYHguIvguJQKK+C5geC4i+C4lOC5hgor4LmB4LiL4LiZ4LiU4LmM4Lin4Li04LiKCivguYHguIvguJoKK+C5geC4i+C4oQor4LmB4LiL4Lii4Li04LiUCivguYHguIvguYjguKcKK+C5geC4i+C4sAor4LmC4LiLCivguYLguIvguYgKK+C5guC4i+C4gQor4LmC4LiL4LmI4LiHCivguYLguIvguIfguYLguILguJTguIcKK+C5guC4i+C5gOC4iwor4LmC4LiL4LiU4LiyCivguYLguIvguJTguLLguYHguJzguJTguYDguJzguLIKK+C5guC4i+C4lOC4suC5hOC4nwor4LmC4LiL4LmA4LiU4Li14Lii4LihCivguYLguIvguKEKK+C5guC4i+C4o+C4oQor4LmC4LiL4Lil4LiyCivguYTguIsKK+C5hOC4i+C5iQor4LmE4LiL4LmA4LiB4Li04LilCivguYTguIvguYLguITguKXguJkKK+C5hOC4i+C4meC5jAor4LmE4LiL4Lii4Liy4LmE4LiZ4LiU4LmMCivguYTguIvguKPguYkKK+C5hOC4i+C5gOC4o+C4mQor4LmE4LiL4LmC4LilCivguYTguIvguYjguKvguLnguYkKK+C4jAor4LiM4Lil4LiyCivguIzguKXguLQKK+C4jOC4qQor4LiM4Lix4Lil4Lil4LmMCivguIzguLHguKXguKXguIHguLHguJPguJDguYwKK+C4jOC4suC4mQor4LiM4Liy4LiZ4Lil4Liy4Lig4Li1CivguIzguLLguJnguLLguJfguLTguKrguLHguIfguIHguLTguYDguKXguKrguLLguJfguLTguIzguLLguJkKK+C4jOC4ueC4gQor4LmA4LiM4LitCivguYLguIzguJEKK+C4jQor4LiN4LiN4LmI4Liy4LiiCivguI3guKfguJkKK+C4jeC4seC4leC4leC4tAor4LiN4Liy4LiT4Li1CivguI3guLLguJTguLIKK+C4jeC4suC4leC4m+C4o+C4tOC4jeC4jeC4sgor4LiN4Liy4LiV4Lix4LiV4LiW4LiI4Lij4Li04Lii4LiyCivguI3guLLguJXguLQKK+C4jeC4suC4mQor4LiN4Liy4Lib4LiBCivguI3guLLguKLguJvguI/guLTguJrguLHguJXguLQKK+C4jeC4suC4ouC4m+C4j+C4tOC4m+C4seC4meC5guC4mQor4LiN4Li04LiZCivguI3guLTguJoKK+C4jeC4teC5iAor4LiN4Li14LmI4Lib4Li44LmI4LiZCivguYDguI3guKLguJjguKPguKPguKEKK+C5hOC4jeC4ouC4mOC4o+C4o+C4oQor4LiOCivguI7guITguKPguLAKK+C4juC4teC4geC4sgor4LiPCivguI/guLHguIfguIHguJrguJTguLUKK+C4j+C4seC4h+C4geC4qOC4suC4peC4sgor4LiP4Lix4LiH4LiB4LiwCivguI/guLHguIfguIHguLLguKMKK+C4j+C4seC4h+C4hOC4sAor4LiP4Lix4LiH4LiE4LiyCivguI/guLHguI/guI/guJnguLUKK+C4j+C4suC4h+C4geC4owor4LiP4Liy4LijCivguI/guLjguJPguJDguLjguIEKK+C4kAor4LiQ4LiB4Lix4LiUCivguJDguLLguIHguLnguKMKK+C4kOC4suC4mQor4LiQ4Liy4LiZ4LiwCivguJDguLLguJnguLXguKLguLAKK+C4kOC4suC4m+C4meC4sgor4LiQ4Liy4Lii4Li1CivguJDguLTguJUKK+C4kOC4tOC4leC4tAor4LiRCivguJHguLLguKvguIEKK+C4keC4suC4q+C4sAor4LiR4Li04Lih4Lig4LmMCivguJIKK+C5gOC4kuC5iOC4sgor4LiTCivguJPguKPguIfguITguYwKK+C4k+C4seC4kAor4LmA4LiT4LijCivguJQKK+C4lOC4gQor4LiU4LiHCivguJTguYnguIcKK+C4lOC4h+C4p+C4suC4ogor4LiU4LmJ4LiZCivguJTguJnguYLguJTguYgKK+C4lOC4meC4leC4o+C4tQor4LiU4LiZ4LiiCivguJTguJnguKLguLIKK+C4lOC4meC4seC4ogor4LiU4LiZ4Li4CivguJTguJnguLkKK+C4lOC4muC4seC4mQor4LiU4Lia4Lix4Liq4Lin4Li04LiZCivguJTguJrguLHguKrguKfguLTguJnguLUKK+C4lOC4muC4seC4quC4p+C4tQor4LiU4LihCivguJTguKHguYTguKMKK+C4lOC4owor4LiU4Lij4LiH4LiE4LmMCivguJTguKPguJPguLQKK+C4lOC4o+C4k+C4tQor4LiU4Lij4LiY4Liy4LiZCivguJTguKPguKPguIrguJnguLUKK+C4lOC4o+C4peC4sgor4LiU4Lij4Liy4Lif4LiV4LmMCivguJTguKPguLQKK+C4lOC4o+C4tQor4LiU4Lij4Li4CivguJTguKPguLjguJMKK+C4lOC4o+C4uOC4k+C4tQor4LiU4Lik4LiW4Li1CivguJTguKUKK+C4lOC4peC4oOC4suC4hAor4LiU4Lin4LiHCivguJTguYnguKfguIcKK+C4lOC4p+C4iAor4LiU4Lin4LiUCivguJTguYjguKfguJkKK+C4lOC5ieC4p+C4mQor4LiU4LmJ4Lin4Lih4LmA4LiU4Li14LmJ4Lii4LihCivguJTguYnguKfguKIKK+C4lOC4p+C4pQor4LiU4Lit4LiBCivguJTguK3guIHguIHguLDguJfguLfguK0KK+C4lOC4reC4geC4l+C4reC4hwor4LiU4Lit4LiB4Lif4LmJ4Lit4LiZCivguJTguK3guIHguYTguKHguYnguJfguLDguYDguKUKK+C4lOC4reC4geC4quC4o+C5ieC4reC4ogor4LiU4Lit4LiB4Lit4Liy4LinCivguJTguK3guIcKK+C4lOC5ieC4reC4hwor4LiU4LmI4Lit4LiH4LmGCivguJTguYnguK3guIfguYYKK+C4lOC4reC4h+C4ieC4suC4ogor4LiU4Lit4LiH4LiU4Li24LiHCivguJTguK3guIfguKvguLLguKIKK+C4lOC4reC4lAor4LiU4Lit4LiZCivguJTguYjguK3guJkKK+C4lOC4reC4oQor4LiU4LmJ4Lit4LihCivguJTguK3guKIKK+C4lOC5ieC4reC4ogor4LiU4Lit4Lil4Lil4Liy4Lij4LmMCivguJTguLAKK+C4lOC4sOC5guC4leC5iuC4sOC4ouC4uOC4leC4tOC4mOC4o+C4o+C4oQor4LiU4Liw4Lir4Lih4Lix4LiHCivguJTguLHguIEKK+C4lOC4seC4geC4lOC4mQor4LiU4Lix4LiB4LiU4Liy4LiZCivguJTguLHguIHguYDguJTguLXguYnguKIKK+C4lOC4seC4geC5geC4lOC5iQor4LiU4Lix4LiB4Lip4LiBCivguJTguLHguIHguKnguJMKK+C4lOC4seC4geC4qeC4k+C4tQor4LiU4Lix4LiB4Lip4Lix4LiZCivguJTguLHguIcKK+C4lOC4seC5iOC4hwor4LiU4Lix4LmJ4LiHCivguJTguLHguYnguIfguYDguJTguLTguKEKK+C4lOC4seC4iuC4meC4tQor4LiU4Lix4LiUCivguJTguLHguJTguJvguKXguLHguIEKK+C4lOC4seC4leC4iuC5jAor4LiU4Lix4LiZCivguJTguLHguYnguJkKK+C4lOC4seC4meC5gOC4q+C4tOC4oQor4LiU4Lix4LiaCivguJTguLHguKHguJ7guYwKK+C4lOC4seC5ieC4p+C5gOC4lOC4teC5ieC4ogor4LiU4Lix4Liq4LiB4LijCivguJTguLHguKrguIHguKPguLUKK+C4lOC4sgor4LiU4LmI4LiyCivguJTguLLguIEKK+C4lOC5iOC4suC4hwor4LiU4LmJ4Liy4LiHCivguJTguLLguJQKK+C4lOC4suC4lOC4leC4sOC4geC4seC5iOC4pwor4LiU4Liy4LiZCivguJTguYjguLLguJkKK+C4lOC5ieC4suC4mQor4LiU4Liy4LiaCivguJTguLLguJrguKoKK+C4lOC4suC4oQor4LiU4LmJ4Liy4LihCivguJTguYnguLLguKHguIjguLTguYnguKcKK+C4lOC4suC4oeC4nuC5jAor4LiU4Liy4Lih4LijCivguJTguLLguKIKK+C4lOC5ieC4suC4ogor4LiU4Liy4LijCivguJTguLLguKPguIEKK+C4lOC4suC4o+C4k+C4tQor4LiU4Liy4Lij4LiU4Liy4LipCivguJTguLLguKPguLIKK+C4lOC4suC4pQor4LiU4Liy4Lil4Lix4LiUCivguJTguLLguKXguLgKK+C4lOC4suC4peC4uOC4igor4LiU4Liy4LmE4Lil4Lil4Liy4Lih4LiwCivguJTguLLguKcKK+C4lOC5iOC4suC4pwor4LiU4LmJ4Liy4LinCivguJTguLLguKfguIHguKPguLDguIjguLLguKIKK+C4lOC4suC4p+C4lOC4tuC4h+C4quC5jAor4LiU4Liy4Lin4Lia4LiqCivguJTguLLguKfguYDguKPguLfguK3guIcKK+C4lOC4suC4qQor4LiU4Liy4Lir4LiH4Lix4LiZCivguJTguLLguKvguKXguLHguIcKK+C4lOC4suC4rAor4LiU4LizCivguJTguYjguLMKK+C4lOC5ieC4swor4LiU4Liz4LmG4LmB4LiU4LiH4LmGCivguJTguLPguIHguKUKK+C4lOC4s+C5gOC4geC4tOC4hwor4LiU4Liz4LmB4LiE4LiHCivguJTguLPguJTguIcKK+C4lOC4s+C4meC4suC4kwor4LiU4Liz4LiZ4Liy4LiZCivguJTguLPguJnguLkKK+C4lOC4s+C5gOC4meC4tOC4mQor4LiU4Liz4LmA4LiZ4Li14Lii4LiZCivguJTguLPguYDguJnguLXguKLguKMKK+C4lOC4s+C4muC4pQor4LiU4Liz4Lie4Lit4LiHCivguJTguLPguKPguLHguKoKK+C4lOC4s+C4o+C4tAor4LiU4Liz4Lij4Li1CivguJTguLPguKPguLkKK+C4lOC4s+C5hOC4owor4LiU4Liz4Lik4Lip4LiT4LiyCivguJTguLPguYDguKXguLTguIcKK+C4lOC4s+C5geC4peC4hwor4LiU4Liz4Lir4LiZ4Lix4LiBCivguJTguLPguKvguJnguLQKK+C4lOC4s+C4reC4p+C4lAor4LiU4Li04LiBCivguJTguLTguIHguYYKK+C4lOC4tOC4hwor4LiU4Li04LmI4LiHCivguJTguLTguInguLHguJkKK+C4lOC4tOC4kAor4LiU4Li04LiV4LiW4LmMCivguJTguLTguJbguLUKK+C4lOC4tOC4mQor4LiU4Li04LmJ4LiZCivguJTguLTguJoKK+C4lOC4tOC4muC4lOC4tQor4LiU4Li04Lij4Lix4LiI4LiJ4Liy4LiZCivguJTguLTguYDguKPguIEKK+C4lOC4tOC4peC4gQor4LiU4Li04LmI4LinCivguJTguLTguYnguKcKK+C4lOC4tOC5ieC4p+C5gOC4lOC4teC5ieC4ouC4pwor4LiU4Li04Lip4LiQ4LmMCivguJTguLTguKrguYLguJ7guKPguYDguIvguLXguKLguKEKK+C4lOC4tQor4LiU4Li14LiB4Lij4Li1CivguJTguLXguInguLHguJkKK+C4lOC4teC5gOC4i+C4pQor4LiU4Li14LiUCivguJTguLXguJTguLXguJfguLUKK+C4lOC4teC4meC4suC4hOC4o+C4suC4igor4LiU4Li14Lia4Li44LiBCivguJTguLXguJvguKXguLUKK+C4lOC4teC5gOC4m+C4o+C4quC4iuC4seC4mQor4LiU4Li14Lic4LiyCivguJTguLXguJ7guKMKK+C4lOC4teC4ouC4sgor4LiU4Li14Lir4Lih4Li1CivguJTguLXguKvguKXguLUKK+C4lOC4tuC4gQor4LiU4Li24LiHCivguJTguLbguYjguIcKK+C4lOC4tuC4h+C4quC4sAor4LiU4Li24LmI4LihCivguJTguLfguYjguJkKK+C4lOC4t+C5iOC4oQor4LiU4Li34LitCivguJTguLfguYnguK0KK+C4lOC4uAor4LiU4Li44LiBCivguJTguLjguIHguJTguLTguIEKK+C4lOC4uOC4geC4l+C4sOC5gOC4pQor4LiU4Li44LmJ4LiHCivguJTguLjguYnguIfguJTguLTguYnguIcKK+C4lOC4uOC4iAor4LiU4Li44LiI4LiU4Lix4LiHCivguJTguLjguIjguKvguJnguLbguYjguIcKK+C4lOC4uOC4lAor4LiU4Li44LiZCivguJTguLjguYnguJkKK+C4lOC4uOC4muC5hgor4LiU4Li44LihCivguJTguLjguYjguKEKK+C4lOC4uOC5iOC4oeC5hgor4LiU4Li44LmI4LiiCivguJTguLjguKPguIQKK+C4lOC4uOC4o+C4h+C4hOC5jAor4LiU4Li44Lij4LiH4LiE4Li1CivguJTguLjguKPguLTguKLguLAKK+C4lOC4uOC4o+C4tOC4ouC4suC4h+C4hOC5jAor4LiU4Li44LilCivguJTguLjguKnguI7guLUKK+C4lOC4uOC4qeC4k+C4tQor4LiU4Li44Lip4LiT4Li14Lig4Liy4LieCivguJTguLjguKnguLTguJUKK+C4lOC4uOC4quC4tOC4lQor4LiU4Li44LmA4Lir4Lin4LmI4LiyCivguJTguLkKK+C4lOC4ueC4geC5hOC4geC5iOC4lOC4swor4LiU4Li54LiB4LiE4LmI4Liy4LiHCivguJTguLnguIHguIrguYnguLLguIcKK+C4lOC4ueC4geC4owor4LiU4Li54LiUCivguYDguJQKK+C5gOC4lOC5iAor4LmA4LiU4LiBCivguYDguJTguYfguIEKK+C5gOC4lOC4geC4i+C5jOC5guC4l+C4o+C4qgor4LmA4LiU4LiE4Liy4LiB4Lij4Lix4LihCivguYDguJTguITguLLguYDguKHguJXguKMKK+C5gOC4lOC4hOC4suC4peC4tOC4leC4owor4LmA4LiU4LmJ4LiHCivguYDguJTguYfguIgKK+C5gOC4lOC4igor4LmA4LiU4LiK4LiZ4LmMCivguYDguJTguIrguJnguLAKK+C5gOC4lOC4iuC4sAor4LmA4LiU4LmC4LiKCivguYDguJTguIvguLTguIHguKPguLHguKEKK+C5gOC4lOC4i+C4tOC5gOC4oeC4leC4owor4LmA4LiU4LiL4Li04Lil4Li04LiV4LijCivguYDguJTguYfguJQKK+C5gOC4lOC4mQor4LmA4LiU4LmI4LiZCivguYDguJTguJnguKHguLLguKPguYzguIEKK+C5gOC4lOC4o+C4seC4iOC4ieC4suC4mQor4LmA4LiU4LmL4LitCivguYDguJTguYvguK3guJTguYvguLIKK+C5gOC4lOC4sgor4LmA4LiU4LmI4LiyCivguYDguJTguYnguLIKK+C5gOC4lOC5iOC4suC5hgor4LmA4LiU4LmJ4Liy4LiU4Li04LiZCivguYDguJTguYnguLLguKXguKEKK+C5gOC4lOC4suC4sAor4LmA4LiU4Li04LiZCivguYDguJTguLTguYjguJkKK+C5gOC4lOC4tOC4oQor4LmA4LiU4Li14LmJ4LiiCivguYDguJTguLXguKLguIcKK+C5gOC4lOC4teC4ouC4lAor4LmA4LiU4Li14Lii4LijCivguYDguJTguLXguKLguKPguJTguLLguKkKK+C5gOC4lOC4teC4ouC4o+C4luC5jAor4LmA4LiU4Li14Lii4Lij4LiW4Li14Lii4LmMCivguYDguJTguLXguKLguKPguLHguIjguInguLLguJkKK+C5gOC4lOC4teC4ouC4pwor4LmA4LiU4Li14LmI4Lii4LinCivguYDguJTguLXguYvguKLguKcKK+C5gOC4lOC4teC4ouC4sAor4LmA4LiU4Li34LmI4LitCivguYDguJTguLfguK3guIEKK+C5gOC4lOC4t+C5iOC4reC4hwor4LmA4LiU4Li34Lit4LiUCivguYDguJTguLfguK3guJkKK+C5gOC4lOC4t+C4reC4ogor4LmB4LiUCivguYHguJTguYgKK+C5geC4lOC4gQor4LmB4LiU4LmH4LiB4LmGCivguYHguJTguIHguIfguLIKK+C5geC4lOC4geC5geC4lOC5iQor4LmB4LiU4LmH4LiB4LmB4LiU4LmJCivguYHguJTguIcKK+C5geC4lOC4h+C4meC5ieC4swor4LmB4LiU4LiUCivguYHguJTguJkKK+C5geC4lOC5iOC4mQor4LmB4LiU4LmI4Lin4LmGCivguYHguJTguLAKK+C5guC4lAor4LmC4LiU4LmICivguYLguJTguIHguYDguJTguIEKK+C5guC4lOC5iOC4hwor4LmC4LiU4LiUCivguYLguJTguJkKK+C5guC4lOC4meC4seC4lQor4LmC4LiU4LmK4Lib4Lii4LiyCivguYLguJTguKEKK+C5guC4lOC4oeC4owor4LmC4LiU4LiiCivguYLguJTguKMKK+C5guC4lOC4o+C4kwor4LmD4LiUCivguYTguJQKK+C5hOC4lOC5iQor4LmE4LiU4LmB4LiL4LmH4LiB4LiE4Liy4LmE4Lij4LiE4LmMCivguYTguJTguJnguLLguYTguKHguJXguYwKK+C5hOC4lOC5guC4meC5gOC4quC4suC4o+C5jAor4LmE4LiU4LmA4Lij4LiB4LiV4Lij4Li04LiB4LiL4LmMCivguYTguJTguK3guLLguKPguLUKK+C4lQor4LiV4LiBCivguJXguYrguIHguYLguJUKK+C4leC4hwor4LiV4LmL4LiHCivguJXguIfguInguLTguJkKK+C4leC4h+C4tOC4lAor4LiV4LiH4Li44LmI4LiZCivguJXguJQKK+C4leC4luC4suC4hOC4lQor4LiV4LiX4Lix4LiH4LiE4Lin4Li04Lih4Li44LiV4LiV4Li0CivguJXguJkKK+C4leC5ieC4mQor4LiV4LiZ4Lix4LiiCivguJXguJnguLgKK+C4leC4mgor4LiV4Lia4Lii4Li44LiHCivguJXguJrguLAKK+C4leC4m+C4sOC4meC4teC4ouC4sAor4LiV4LihCivguJXguYnguKEKK+C4leC4oeC4ueC4gQor4LiV4LmC4Lih4LmC4LiK4LiV4Li04Lib4Lij4Liy4Lii4LmC4LiZCivguJXguYLguKHguJXguKHguJvguKPguLLguKLguYLguJkKK+C4leC5guC4oeC4meC4uOC4lwor4LiV4LmC4Lih4LmE4Lie4Lij4Li1CivguJXguYLguKHguKvguKMKK+C4leC4ouC4suC4hAor4LiV4Lii4Liy4LiE4Li1CivguJXguKLguLjguJXguLQKK+C4leC4o+C4hwor4LiV4Lij4LiH4LmGCivguJXguKPguJPguLUKK+C4leC4o+C4oQor4LiV4Lij4Lih4Lin4LilCivguJXguKPguKPguIHguLAKK+C4leC4o+C4peC4mgor4LiV4Lij4Lil4Lit4LiUCivguJXguKPguKXguLAKK+C4leC4o+C4peC4sgor4LiV4Lij4Lil4Liy4LiUCivguJXguKPguYDguKXguLTguJQKK+C4leC4o+C4p+C4iAor4LiV4Lij4Lin4LiUCivguJXguKPguKfguJkKK+C4leC4o+C4p+C4ogor4LiV4Lij4Lit4LiBCivguJXguKPguK3guIcKK+C4leC4o+C4reC4oeC5g+C4iAor4LiV4Lij4Lit4Lih4LiV4Lij4LihCivguJXguKPguLAKK+C4leC4o+C4sOC4geC4pQor4LiV4Lij4Liw4LiB4Lin4LiZCivguJXguKPguLDguIHguK3guIcKK+C4leC4o+C4sOC4geC4seC4lAor4LiV4Lij4Liw4LiB4Liy4LijCivguJXguKPguLDguIHguLnguKUKK+C4leC4o+C4sOC4hOC4seC4owor4LiV4Lij4Liw4LiH4LmI4Lit4LiHCivguJXguKPguLDguIjguLHguIEKK+C4leC4o+C4sOC4iuC4seC4gQor4LiV4Lij4Liw4LiU4LiBCivguJXguKPguLDguJTguLLguKkKK+C4leC4o+C4sOC5gOC4leC4o+C4teC4ouC4oQor4LiV4Lij4Liw4LmB4LiV4LmJ4LiZCivguJXguKPguLDguJfguKPguKfguIcKK+C4leC4o+C4sOC4meC4suC4pwor4LiV4Lij4Liw4LmE4LiZCivguJXguKPguLDguJrguIEKK+C4leC4o+C4sOC4muC4reC4gQor4LiV4Lij4Liw4Lia4Lit4LiHCivguJXguKPguLDguJrguLHguJQKK+C4leC4o+C4sOC4muC4seC4mQor4LiV4Lij4Liw4LmA4Lia4LmH4LiHCivguJXguKPguLDguYHguJrguYgKK+C4leC4o+C4sOC5geC4muC4gQor4LiV4Lij4Liw4LmB4Lia4LiHCivguJXguKPguLDguYHguJrguJkKK+C4leC4o+C4sOC5geC4muC5iOC4mQor4LiV4Lij4Liw4LmC4Lia4LihCivguJXguKPguLDguJ7guK3guIcKK+C4leC4o+C4sOC4nuC4seC4hwor4LiV4Lij4Liw4Lih4Li34LmI4LiZCivguJXguKPguLDguYLguKHguIgKK+C4leC4o+C4sOC4peC4suC4geC4suC4owor4LiV4Lij4Liw4Lin4Lix4LiZCivguJXguKPguLDguYDguKfguYfguJQKK+C4leC4o+C4sOC5gOC4p+C4mQor4LiV4Lij4Liw4LmA4Lin4LiZ4LmE4Lie4LijCivguJXguKPguLDguYDguKfguJnguKfguLHguJkKK+C4leC4o+C4sOC4quC4seC4gQor4LiV4Lij4Liw4Lir4LiH4LmI4Lit4LiHCivguJXguKPguLDguKvguIfguYjguLLguJkKK+C4leC4o+C4sOC4q+C4meC4gQor4LiV4Lij4Liw4Lir4LiZ4Lix4LiBCivguJXguKPguLDguKvguJnguYjguLMKK+C4leC4o+C4sOC4q+C4meC4teC5iAor4LiV4Lij4Liw4Lit4LijCivguJXguKPguLDguK3guLLguKUKK+C4leC4o+C4sOC5guC4reC4oQor4LiV4Lij4Lix4LiHCivguJXguKPguLHguIfguITguYwKK+C4leC4o+C4seC4mgor4LiV4Lij4Lix4Lia4Lif4Lix4LiHCivguJXguKPguLHguKIKK+C4leC4o+C4seC4ouC4leC4o+C4tuC4h+C4qOC5jAor4LiV4Lij4Lix4LiqCivguJXguKPguLHguKrguKrguLIKK+C4leC4o+C4sgor4LiV4Lij4Liy4LiB4LiV4Lij4LizCivguJXguKPguLLguIrguLkKK+C4leC4o+C4suC4mgor4LiV4Lij4Liy4Liq4Lix4LiHCivguJXguKPguLMKK+C4leC4o+C5iOC4swor4LiV4Lij4Li0CivguJXguKPguLTguKcKK+C4leC4o+C4tQor4LiV4Lij4Li14Lib4Lij4Liw4LiU4Lix4LiaCivguJXguKPguLXguJvguKfguLLguKIKK+C4leC4o+C4teC4nuC4tOC4mOC4nuC4o+C4o+C4kwor4LiV4Lij4Li14LmA4Lie4LiK4Lij4LiX4Lix4LiT4LiR4Li1CivguJXguKPguLXguYDguJ7guIrguKPguJ7guKfguIcKK+C4leC4o+C4teC4ouC4oeC4gQor4LiV4Lij4Li14Lii4Lix4Lih4Lib4Lin4Liy4LiiCivguJXguKPguLbguIEKK+C4leC4o+C4tuC4hwor4LiV4Lij4Li4CivguJXguKPguLjguJMKK+C4leC4o+C4uOC4ogor4LiV4Lij4Li44LipCivguJXguKPguLjguKnguIjguLXguJkKK+C4leC4o+C4uQor4LiV4Lij4Li54LmICivguJXguKTguJMKK+C4leC4pOC4leC4teC4ouC4sAor4LiV4Lik4LiXCivguJXguKTguJsKK+C4leC4pOC4qeC4k+C4sgor4LiV4Lik4LmFCivguJXguKUKK+C4leC4peC4gQor4LiV4Lil4LiB4Lia4Liy4LiV4LijCivguJXguKXguJoKK+C4leC4peC4reC4lAor4LiV4Lil4LiwCivguJXguKXguLHguJoKK+C4leC4peC4seC4muC4meC4suC4gQor4LiV4Lil4Liy4LiUCivguJXguKXguLTguYjguIcKK+C4leC4peC4tuC4hwor4LiV4Lin4LiHCivguJXguYjguKfguJkKK+C4leC5ieC4p+C4oeC5gOC4leC4teC5ieC4ouC4oQor4LiV4Lin4Lix4LiBCivguJXguKfguLHguJQKK+C4leC4p+C4suC4lAor4LiV4LitCivguJXguYjguK0KK+C4leC5ieC4rQor4LiV4Lit4LiBCivguJXguYrguK3guIEKK+C4leC5iuC4reC4geC4leC5i+C4reC4ogor4LiV4Lit4LiHCivguJXguYnguK3guIcKK+C4leC4reC4h+C4geC4o+C4suC4ogor4LiV4LmJ4Lit4LiH4LiB4Liy4LijCivguJXguK3guIfguJXguK3guKIKK+C4leC4reC4h+C4leC4tuC4hwor4LiV4LmJ4Lit4LiH4LmA4LiVCivguJXguK3guIfguYHguJXguIEKK+C4leC5iOC4reC4h+C5geC4leC5iOC4hwor4LiV4Lit4LiH4LmA4Lib4Lij4Li14Lii4LiHCivguJXguYnguK3guIfguKrguLnguYkKK+C4leC4reC4h+C5gOC4q+C4peC4t+C4reC4hwor4LiV4Lit4LiUCivguJXguK3guJTguJXguYjguK0KK+C4leC4reC4mQor4LiV4LmJ4Lit4LiZCivguJXguK3guJoKK+C4leC4reC5gOC4muC4sgor4LiV4Lit4LihCivguJXguYjguK3guKEKK+C4leC5i+C4reC4oQor4LiV4LmI4Lit4Lih4LiZ4LmJ4LizCivguJXguYjguK3guKIKK+C4leC5ieC4reC4ogor4LiV4LmJ4Lit4Lii4LiV4Lij4Li04LmI4LiHCivguJXguYnguK3guKLguJXguLTguYjguIcKK+C4leC5ieC4reC4ouC4leC4teC4p+C4tOC4lAor4LiV4Lit4LmB4LiiCivguJXguK3guKPguYzguJvguLTguYLguJQKK+C4leC5iOC4reC5hOC4quC5iQor4LiV4Lit4LmB4Lir4LilCivguJXguLAKK+C4leC4sOC4geC4o+C4mQor4LiV4Liw4LiB4Lij4LihCivguJXguLDguIHguKPguKfguKIKK+C4leC4sOC4geC4o+C5ieC4rQor4LiV4Liw4LiB4Lij4LmI4Lit4LihCivguJXguLDguIHguKPguLHguJkKK+C4leC4sOC4geC4o+C4seC4mgor4LiV4Liw4LiB4Lij4LmJ4LiyCivguJXguLDguIHguKPguLLguKEKK+C4leC4sOC4geC4o+C4uOC4lAor4LiV4Liw4LiB4Lij4Li44LihCivguJXguLDguIHguKPguLjguKHguJXguLDguIHguKPguLLguKEKK+C4leC4sOC4geC4peC4sAor4LiV4Liw4LiB4Lil4Liy4LihCivguJXguLDguIHguKfguJQKK+C4leC4sOC4geC4rQor4LiV4Liw4LiB4Lit4LiZCivguJXguLDguIHguLHguIcKK+C4leC4sOC4geC4seC5iOC4pwor4LiV4Liw4LiB4Liy4LiHCivguJXguLDguIHguLLguJQKK+C4leC4sOC4geC4suC4ogor4LiV4Liw4LiB4Liy4LinCivguJXguLDguIHguLXguYkKK+C4leC4sOC4geC4uOC4geC4leC4sOC4geC4seC4gQor4LiV4Liw4LiB4Li44LiiCivguJXguLDguIHguLkKK+C4leC4sOC4geC4ueC4lAor4LiV4Liw4LmA4LiB4Li14Lii4LiB4LiV4Liw4LiB4Liy4LiiCivguJXguLDguYDguIHguLXguKLguIcKK+C4leC4sOC5gOC4geC4teC4ouC4mgor4LiV4Liw4LmB4LiBCivguJXguLDguYHguIHguYgKK+C4leC4sOC5geC4geC4o+C4hwor4LiV4Liw4LmC4LiBCivguJXguLDguYLguIHguYkKK+C4leC4sOC5guC4geC4gQor4LiV4Liw4LmC4LiB4LiZCivguJXguLDguYLguIHguKPguIcKK+C4leC4sOC5guC4geC4o+C4oQor4LiV4Liw4LmE4LiB4LijCivguJXguLDguILguJoKK+C4leC4sOC4guC4rQor4LiV4Liw4LiC4Liy4LiaCivguJXguLDguILguLTguJTguJXguLDguILguKfguIcKK+C4leC4sOC5gOC4guC5iQor4LiV4Liw4LmA4LiC4LmH4LiaCivguJXguLDguYDguILguLTguIcKK+C4leC4sOC5guC4guC4hwor4LiV4Liw4LiE4Lij4LmJ4LitCivguJXguLDguITguKPguK3guIcKK+C4leC4sOC4hOC4o+C4seC5iOC4meC4leC4sOC4hOC4o+C4rQor4LiV4Liw4LiE4Lij4LmJ4LizCivguJXguLDguITguKPguLTguKcKK+C4leC4sOC4hOC4o+C4uOC4mgor4LiV4Liw4LiE4Lil4Lix4Lia4LiV4Liw4LiE4Lil4LmJ4Liy4LiiCivguJXguLDguITguK3guIEKK+C4leC4sOC4hOC4seC4mQor4LiV4Liw4LiE4LmJ4LiyCivguJXguLDguITguLLguIEKK+C4leC4sOC4hOC4suC4hwor4LiV4Liw4LiE4LmJ4Liy4LiZCivguJXguLDguITguLTguKcKK+C4leC4sOC4hOC4uOC5iOC4oQor4LiV4Liw4LmA4LiE4Lij4Li14Lii4LinCivguJXguLDguYDguITguLXguKLguJkKK+C4leC4sOC5gOC4hOC4teC4ouC4meC4l+C4reC4hwor4LiV4Liw4LmA4LiE4Li14Lii4LinCivguJXguLDguYHguITguIcKK+C4leC4sOC5hOC4hOC4o+C5iAor4LiV4Liw4LmE4LiE4Lij4LmJCivguJXguLDguYDguIbguYgKK+C4leC4sOC5geC4h+C5iQor4LiV4Liw4LiV4Li04LiZCivguJXguLDguYHguJXguKPguYnguJkKK+C4leC4sOC4meC4reC4ogor4LiV4Liw4LiZ4Liy4LinCivguJXguLDguJrguKEKK+C4leC4sOC4muC4reC4hwor4LiV4Liw4Lia4Lit4LiH4LiB4Lix4LiZCivguJXguLDguJrguK3guIfguYDguJ7guIrguKMKK+C4leC4sOC4muC4reC4ogor4LiV4Liw4Lia4Lix4LiZCivguJXguLDguJrguLTguYnguIcKK+C4leC4sOC4muC4tOC4lAor4LiV4Liw4Lia4Li04LiU4LiV4Liw4Lia4Lit4LiiCivguJXguLDguJrguLXguYnguJXguLDguJrguLHguJkKK+C4leC4sOC4muC4tuC4hwor4LiV4Liw4Lia4Li44LmJ4LiiCivguJXguLDguJrguLjguYnguKLguYYKK+C4leC4sOC4muC4ueC4mQor4LiV4Liw4LmA4Lia4LmH4LiHCivguJXguLDguYDguJrguYfguIfguKHguLLguJkKK+C4leC4sOC5geC4muC4gQor4LiV4Liw4LmB4Lia4LiHCivguJXguLDguYLguJrguKEKK+C4leC4sOC5hOC4mgor4LiV4Liw4Lib4LiaCivguJXguLDguJvguKXguLTguIcKK+C4leC4sOC4m+C4seC4lOC4leC4sOC4m+C5iOC4reC4hwor4LiV4Liw4Lib4Li04LmJ4LiHCivguJXguLDguJvguLjguYjguKHguJXguLDguJvguYjguLMKK+C4leC4sOC4m+C4uQor4LiV4Liw4Lie4LiHCivguJXguLDguJ7guJQKK+C4leC4sOC4nuC4reC4hwor4LiV4Liw4Lie4Lix4LiBCivguJXguLDguJ7guLHguIcKK+C4leC4sOC4nuC4seC4lAor4LiV4Liw4Lie4Lix4LmJ4LiZCivguJXguLDguJ7guLLguIEKK+C4leC4sOC4nuC4suC4mQor4LiV4Liw4Lie4Liy4LiaCivguJXguLDguJ7guLLguJrguJnguYnguLMKK+C4leC4sOC4nuC4suC4ogor4LiV4Liw4Lie4Li24LiUCivguJXguLDguJ7guLjguYjguJkKK+C4leC4sOC5gOC4nuC4o+C4sgor4LiV4Liw4LmA4Lie4Li04LiHCivguJXguLDguYDguJ7guLTguJQKK+C4leC4sOC5gOC4nuC4tOC5iOC4mQor4LiV4Liw4LmA4Lie4Li14Lii4LiZCivguJXguLDguYLguJ7guIEKK+C4leC4sOC5guC4nuC4hwor4LiV4Liw4LmC4Lie4LiZCivguJXguLDguYDguKDguLIKK+C4leC4sOC5g+C4oOC5iQor4LiV4Liw4Lih4LmI4LitCivguJXguLDguKHguK3guKIKK+C4leC4sOC4oeC4reC4ouC4quC4sOC4peC4sgor4LiV4Liw4Lij4Lix4LiHCivguJXguLDguKPguLHguIfguIHguLDguJnguLkKK+C4leC4sOC4o+C4seC4h+C4leC4seC4hwor4LiV4Liw4Lij4Liy4LiHCivguJXguLDguKXguK3guIcKK+C4leC4sOC4peC4reC4mQor4LiV4Liw4Lil4LmI4Lit4LihCivguJXguLDguKXguYjguK3guKHguJvguYnguK3guKEKK+C4leC4sOC4peC4sAor4LiV4Liw4Lil4Liy4LiZCivguJXguLDguKXguLTguIfguJvguKXguLTguIcKK+C4leC4sOC4peC4tOC4mgor4LiV4Liw4Lil4Li14LiV4Liw4Lil4Liy4LiZCivguJXguLDguKXguLbguIcKK+C4leC4sOC4peC4uOC4hwor4LiV4Liw4Lil4Li44LmI4LihCivguJXguLDguKXguLjguKHguJrguK3guJkKK+C4leC4sOC4peC4uOC5iOC4oeC5guC4m+C4hwor4LiV4Liw4Lil4Li44Lih4Lie4LitCivguJXguLDguKXguLjguKHguJ7guLjguIEKK+C4leC4sOC4peC4uOC5iOC4oeC4reC4tOC4lAor4LiV4Liw4Lil4Li44LiiCivguJXguLDguYDguKXguIcKK+C4leC4sOC5geC4peC4h+C5geC4geC4hwor4LiV4Liw4LmE4LilCivguJXguLDguKfguLHguJkKK+C4leC4sOC4p+C4suC4hwor4LiV4Liw4LmA4Lin4LiZCivguJXguLDguKvguJnguLbguYjguIfguKPguLHguJQKK+C4leC4sOC4q+C4peC4tOC4pwor4LiV4Liw4Lir4Lil4Li44LiBCivguJXguLDguKvguKXguLjguIcKK+C4leC4sOC5gOC4q+C4peC4meC5geC4m+C5i+C4mQor4LiV4Liw4LmA4Lir4Lil4Liy4Liw4LmA4Lib4Liy4LiwCivguJXguLDguYHguKvguIfguYjguKcKK+C4leC4sOC5geC4q+C4oeC4sOC5geC4guC4sAor4LiV4Liw4LmB4Lir4Lil4LiZ4LmB4Lib4LmL4LiZCivguJXguLDguYLguKvguIfguIEKK+C4leC4seC5iuC4gQor4LiV4Lix4LiB4LiB4LiwCivguJXguLHguIHguYDguJXguLfguK3guJkKK+C4leC4seC5iuC4geC5geC4leC4mQor4LiV4Lix4LiB4LijCivguJXguLHguIHguKnguIEKK+C4leC4seC4geC4qeC4kwor4LiV4Lix4LiB4Lip4LiT4Li1CivguJXguLHguIHguKnguLHguKIKK+C4leC4seC4hwor4LiV4Lix4LmI4LiHCivguJXguLHguYnguIcKK+C4leC4seC4h+C5gOC4gQor4LiV4Lix4LiH4LiJ4LmI4Liy4LiiCivguJXguLHguIfguJXguLTguJQKK+C4leC4seC4h+C5gOC4oQor4LiV4Lix4LiH4Lin4Liy4LiiCivguJXguLHguIfguYLguK3guYsKK+C4leC4seC4iOC4ieC4gQor4LiV4Lix4LiI4LiJ4LiZ4Li1CivguJXguLHguJPguJHguLjguKUKK+C4leC4seC4k+C4q+C4seC4geC4qeC4seC4ogor4LiV4Lix4LiT4Lir4LiyCivguJXguLHguJQKK+C4leC4seC4luC4ouC5jAor4LiV4Lix4LiZCivguJXguLHguJnguJXguKPguLAKK+C4leC4seC4meC4leC4tAor4LiV4Lix4LiZ4Lir4LiBCivguJXguLHguJnguKvguKLguIcKK+C4leC4seC4meC5gOC4q+C4tOC4oQor4LiV4Lix4LiaCivguJXguLHguJrguYDguJXguYjguLIKK+C4leC4seC4muC4m+C4tOC5ieC4hwor4LiV4Lix4Lia4LmA4Lib4LmH4LiUCivguJXguLHguKcKK+C4leC4seC5i+C4pwor4LiV4Lix4Lin4LiV4Li34LiUCivguJXguLHguYnguKfguYLguJwKK+C4leC4seC5ieC4p+C4quC4tOC4pwor4LiV4Lix4LmJ4Lin4LmA4Lir4Li14LmI4LiiCivguJXguLIKK+C4leC4suC4gQor4LiV4Liy4LiHCivguJXguYjguLLguIcKK+C4leC4suC4lAor4LiV4Liy4LiZCivguJXguYjguLLguJkKK+C4leC5ieC4suC4mQor4LiV4Liy4LiZ4LiZ4LiB4LiB4LiUCivguJXguLLguJnguYDguKrguLXguYnguKLguJkKK+C4leC4suC4meC4q+C4gQor4LiV4Liy4LiZ4Lir4Lih4LmI4Lit4LiZCivguJXguLLguJnguYDguKvguKXguLfguK3guIcKK+C4leC4suC4meC4tQor4LiV4Liy4LiaCivguJXguLLguJ3guLHguYjguIcKK+C4leC4suC4oQor4LiV4Liy4Lih4Lie4LiwCivguJXguLLguKHguLDguYHguJkKK+C4leC4suC4oeC4tOC4mQor4LiV4Liy4LiiCivguJXguYnguLLguKIKK+C4leC5iuC4suC4ouC4leC4suC4ogor4LiV4Liy4Lij4Liy4LmE4LiVCivguJXguLLguYDguKPguLfguK3guIrguLHguKIKK+C4leC4suC4pQor4LiV4Liy4Lil4Liy4LiZCivguJXguLLguKXguLgKK+C4leC4suC4peC4uOC4igor4LiV4Liy4LinCivguJXguLLguYDguKrguLfguK0KK+C4leC4suC4q+C4peC4tOC5iOC4hwor4LiV4Liy4LisCivguJXguLMKK+C4leC5iOC4swor4LiV4Liz4LiZ4Liy4LiZCivguJXguLPguYDguJnguLTguJkKK+C4leC4s+C5gOC4meC4teC4ouC4mQor4LiV4Liz4Lia4LilCivguJXguLPguYHguJoKK+C4leC5ieC4s+C4m+C4uOC4gQor4LiV4LmJ4Liz4Lic4Liy4LiHCivguJXguYnguLPguJ7guKPguKfguJQKK+C4leC4s+C4oeC4sOC4q+C4h+C4hwor4LiV4Liz4LmB4LiiCivguJXguLPguKPguKfguIgKK+C4leC4s+C4o+C4seC4mgor4LiV4Liz4Lij4LiyCivguJXguLPguKPguLgKK+C4leC4s+C4peC4tuC4hwor4LiV4Liz4LmA4Liq4LiyCivguJXguLPguKvguJnguLHguIEKK+C4leC4s+C4q+C4meC4tAor4LiV4Liz4Lir4Lij4LiwCivguJXguLPguYHguKvguJnguYjguIcKK+C4leC4tAor4LiV4Li04LiB4LiC4LiN4Liy4LiTCivguJXguLTguIHguLAKK+C4leC4tOC4geC4suC4q+C4peC4seC4hwor4LiV4Li04LiHCivguJXguLTguYjguIcKK+C4leC4tOC5i+C4hwor4LiV4Li04LmL4LiH4LmGCivguJXguLTguYjguIfguJXguLHguYjguIcKK+C4leC4tOC4h+C4quC4leC4tAor4LiV4Li04LmI4LiH4Lir4Liy4LiiCivguJXguLTguJMKK+C4leC4tOC4k+C4p+C4seC4leC4luC4suC4o+C4geC4p+C4tOC4meC4seC4ogor4LiV4Li04LiUCivguJXguLTguJTguYYKK+C4leC4tOC4leC4leC4tOC4gQor4LiV4Li04LiV4LiV4Li04LijCivguJXguLTguJXguJYKK+C4leC4tOC4luC4tQor4LiV4Li04Lib4LiyCivguJXguLTguJvguLLguJbguLAKK+C4leC4tOC4oeC4tAor4LiV4Li04Lih4Li04LiH4LiE4Lil4LiwCivguJXguLTguKMKK+C4leC4tOC4o+C4seC4iOC4ieC4suC4mQor4LiV4Li04LilCivguJXguLTguKXguIEKK+C4leC4tOC5ieC4pwor4LiV4Li04Liq4Lij4LiT4LiE4Lih4LiZ4Li54Lib4Liq4Lix4Lih4Lib4LiX4LiyCivguJXguLUKK+C4leC4teC5iAor4LiV4Li14LmLCivguJXguLXguJfguK3guIcKK+C4leC4teC4mQor4LiV4Li14LiZ4LiI4LmJ4LizCivguJXguLXguJnguYDguJfguLXguKLguJkKK+C4leC4teC4meC5geC4o+C4lAor4LiV4Li14LiaCivguJXguLXguKPguJbguLAKK+C4leC4teC4o+C4sAor4LiV4Li14Lir4Lih4LiyCivguJXguLYKK+C4leC4tuC5hgor4LiV4Li24LiBCivguJXguLbguIHguYYKK+C4leC4tuC5ieC4geC5hgor4LiV4Li24LmJ4LiB4LiV4Lix4LmJ4LiBCivguJXguLbguIcKK+C4leC4tuC4lOC4leC4t+C5i+C4rQor4LiV4Li24LmK4LiU4LiV4Li34LmL4LitCivguJXguLfguJQKK+C4leC4t+C5iOC4mQor4LiV4Li34LmJ4LiZCivguJXguLfguYnguK0KK+C4leC4t+C5iuC4rQor4LiV4Li34LmL4LitCivguJXguLfguK3guK7guKfguJkKK+C4leC4uAor4LiV4Li44LmKCivguJXguLjguYYKK+C4leC4uOC5iuC4geC5geC4gQor4LiV4Li44LmK4LiB4LiV4LiyCivguJXguLjguYrguIHguJXguYjguLMKK+C4leC4uOC5iuC4geC4leC5iOC4s+C4meC5ieC4s+C4l+C4reC4hwor4LiV4Li44LiB4LiV4Li04LiBCivguJXguLjguYrguIHguJXguLTguYrguIEKK+C4leC4uOC5iuC4geC4leC4uOC5iOC4mQor4LiV4Li44LmK4LiB4LiV4Li44LmL4LiiCivguJXguLjguIcKK+C4leC4uOC5ieC4h+C4geC5iOC4sgor4LiV4Li44LmJ4LiH4LiV4Li04LmJ4LiHCivguJXguLjguYrguJTguJXguLnguYgKK+C4leC4uOC4mQor4LiV4Li44LmI4LiZCivguJXguLjguYvguJkKK+C4leC4uOC5ieC4meC5geC4i+C4sAor4LiV4Li44LmI4LiZ4LiV4LmI4Liy4LiZCivguJXguLjguJnguLLguKvguIfguLHguJkKK+C4leC4uOC4muC5hgor4LiV4Li44LmJ4Lia4LmGCivguJXguLjguYrguJrguJvguYjguK3guIcKK+C4leC4uOC4m+C4seC4lOC4leC4uOC4m+C5iOC4reC4hwor4LiV4Li44Lib4Lix4LiU4LiV4Li44LmA4Lib4LmLCivguJXguLjguYjguKEKK+C4leC4uOC5ieC4oQor4LiV4Li44LmL4LihCivguJXguLjguYrguKHguYYKK+C4leC4uOC5iuC4oeC5huC4leC5ieC4reC4oeC5hgor4LiV4Li44LmJ4Lih4LiB4Lin4LmJ4Liy4LinCivguJXguLjguKHguIHguLIKK+C4leC4uOC5ieC4oeC5geC4i+C4sAor4LiV4Li44Lih4LiV4Lix4LiHCivguJXguLjguYnguKHguYDguJXguYvguJkKK+C4leC4uOC5ieC4oeC4m+C4teC5iAor4LiV4Li44Lih4LieCivguJXguLjguYjguKIKK+C4leC4uOC5ieC4ogor4LiV4Li44LmK4LiiCivguJXguLjguYjguKLguYYKK+C4leC4uOC5ieC4ouC5hgor4LiV4Li44LmL4Lii4LiV4Li44LmI4LiiCivguJXguLjguKPguIQKK+C4leC4uOC4o+C4h+C4hOC5jAor4LiV4Li44Lij4Li04Lii4Liy4LiH4LiE4LmMCivguJXguLjguKXguKrguLQKK+C4leC4uOC4peC4sgor4LiV4Li44Lir4Lij4Lix4LiU4LiV4Li44LmA4Lir4Lij4LmICivguJXguLkKK+C4leC4ueC5iAor4LiV4Li54LmJCivguJXguLnguIEKK+C4leC4ueC4lAor4LiV4Li54LiU4LiH4Lit4LiZCivguJXguLnguJoKK+C4leC4ueC4oQor4LiV4Li54Lil4Li04LmI4LiZ4Liu4Li34LmJ4LitCivguJXguLnguKvguJnguLIKK+C5gOC4lQor4LmA4LiV4LiBCivguYDguJXguYfguIEKK+C5gOC4leC5h+C4hwor4LmA4LiV4LmI4LiHCivguYDguJXguIoKK+C5gOC4leC5guC4igor4LmA4LiV4LmJ4LiZCivguYDguJXguYfguJnguJfguYwKK+C5gOC4leC5h+C4oQor4LmA4LiV4LiiCivguYDguJXguYnguKIKK+C5gOC4leC5iuC4ogor4LmA4LiV4Lij4LmICivguYDguJXguKPguYfguJQKK+C5gOC4leC4o+C5h+C4lOC5gOC4leC4o+C5iAor4LmA4LiV4Lij4LmH4LiU4LmA4LiV4Lij4LiZCivguYDguJXguKPguJkKK+C5gOC4leC4o+C4tOC4hwor4LmA4LiV4Lij4Li14Lii4LiUCivguYDguJXguKPguLXguKLguJoKK+C5gOC4leC4o+C4teC4ouC4oQor4LmA4LiV4Lij4Li14Lii4Lih4LiV4Lij4LihCivguYDguJXguKXguLAKK+C5gOC4leC4peC4tOC4lAor4LmA4LiV4Lin4LmH4LiUCivguYDguJXguYjguK0KK+C5gOC4leC4reC4sAor4LmA4LiV4LiwCivguYDguJXguYrguLAKK+C5gOC4leC5iuC4sOC4iOC4uOC5iuC4ogor4LmA4LiV4LmK4Liw4LiX4LmI4LiyCivguYDguJXguLIKK+C5gOC4leC5iOC4sgor4LmA4LiV4LmJ4LiyCivguYDguJXguYvguLIKK+C5gOC4leC5iOC4suC4geC4o+C4sOC4quC4uOC4mQor4LmA4LiV4LmI4Liy4LiB4Li04LiZ4Lic4Lix4LiB4Lia4Li44LmJ4LiHCivguYDguJXguYjguLLguYDguIHguLXguKLguJQKK+C5gOC4leC5ieC4suC5gOC4iOC4teC5ieC4ouC4pwor4LmA4LiV4LmI4Liy4LiX4Lit4LiHCivguYDguJXguYjguLLguJfguK3guYDguKrguLfguYjguK0KK+C5gOC4leC5ieC4suC4l+C4tuC4hwor4LmA4LiV4LmI4Liy4Lia4LmJ4LiyCivguYDguJXguYjguLLguKPguLHguYnguIcKK+C5gOC4leC5iOC4suC4o+C5ieC4suC4hwor4LmA4LiV4LmI4Liy4LmA4Lil4Li34Lit4LiZCivguYDguJXguYnguLLguKrguYjguKfguJkKK+C5gOC4leC5ieC4suC5gOC4quC4teC4ouC4mgor4LmA4LiV4LmI4Liy4Lir4Lix4LiaCivguYDguJXguYnguLLguKvguLnguYkKK+C5gOC4leC5ieC4suC4ruC4p+C4ogor4LmA4LiV4LmK4Liy4LiwCivguYDguJXguLLguLDguYHguJXguLAKK+C5gOC4leC4tOC5iOC4hwor4LmA4LiV4Li04LiZ4LmA4LiV4LmI4LitCivguYDguJXguLTguJoKK+C5gOC4leC4tOC4oQor4LmA4LiV4Li14LmI4LiiCivguYDguJXguLXguYnguKIKK+C5gOC4leC4teC4ouC4hwor4LmA4LiV4Li14Lii4LiZCivguYDguJXguLXguKLguJoKK+C5gOC4leC4teC5iuC4ouC4oQor4LmA4LiV4Li14LmL4Lii4LihCivguYDguJXguLXguKLguKPguJbguYwKK+C5gOC4leC4teC4ouC4pwor4LmA4LiV4Li14LmI4Lii4LinCivguYDguJXguLfguYnguK0KK+C5gOC4leC4t+C4reC4mQor4LmB4LiV4LmICivguYHguJXguYkKK+C5geC4leC5iOC5hgor4LmB4LiV4LiBCivguYHguJXguYjguIHguYjguK3guJnguYHguJXguYjguIHguLXguYkKK+C5geC4leC5iOC4geC4teC5ieC5geC4leC5iOC4geC5iOC4reC4mQor4LmB4LiV4LiHCivguYHguJXguYjguIcKK+C5geC4leC4h+C5gOC4oQor4LmB4LiV4LmJ4LiI4Li04LmL4LinCivguYHguJXguJQKK+C5geC4leC5iuC4lOC5geC4leC5iwor4LmB4LiV4LiZCivguYHguJXguYnguKEKK+C5geC4leC4owor4LmB4LiV4Lij4LiwCivguYHguJXguYnguKfguYHguKPguYnguKcKK+C5geC4leC4sAor4LmC4LiVCivguYLguJXguYkKK+C5guC4leC4gQor4LmC4LiV4LmJ4LiHCivguYLguJXguYnguIfguYYKK+C5guC4leC4h+C5huC5gOC4leC4h+C5hgor4LmC4LiV4LiH4LmA4LiV4LiHCivguYLguJXguI7guIEKK+C5guC4leC5iuC4lAor4LmC4LiV4LmL4LmA4LiV4LmLCivguYLguJXguJkKK+C5guC4leC4meC4lAor4LmC4LiV4LmJ4LmC4LicCivguYLguJXguKHguKMKK+C5guC4leC4oeC4o+C4mOC4owor4LmC4LiV4LiiCivguYLguJXguKPguIEKK+C5guC4leC4o+C4geC5hOC4leC4owor4LmC4LiV4Lij4LiUCivguYLguJXguYnguKvguKXguIcKK+C5guC4leC5iuC4sAor4LmD4LiV4LmJCivguYTguJUKK+C5hOC4leC5iAor4LmE4LiV4LmJCivguYTguJXguYsKK+C5hOC4leC5ieC4geC5i+C4hwor4LmE4LiV4LmJ4Lid4Li44LmI4LiZCivguYTguJXguYjguYTguKHguYkKK+C5hOC4leC4owor4LmE4LiV4Lij4LiB4Li04Lio4Lii4LiyCivguYTguJXguKPguJTguLLguKLguLjguIQKK+C5hOC4leC4o+C5iOC4leC4o+C4reC4hwor4LmE4LiV4Lij4LiiCivguYTguJXguYnguKvguKfguLHguJkKK+C5hOC4leC5ieC4reC5i+C4reC4hwor4LiWCivguJbguIEKK+C4luC4geC4pQor4LiW4LiH4Lix4LiZCivguJbguIfguLLguJQKK+C4luC4lAor4LiW4LiZCivguJbguJnguJkKK+C4luC4meC4mwor4LiW4LiZ4Lit4LihCivguJbguJnguLHguJQKK+C4luC4meC4seC4mQor4LiW4LiZ4LizCivguJbguJnguLTguKEKK+C4luC4meC4tOC4oeC4quC4o+C5ieC4reC4ogor4LiW4LiaCivguJbguJrguJTguLUKK+C4luC4oQor4LiW4LmI4LihCivguJbguKHguK0KK+C4luC4oeC4tuC4h+C4l+C4tuC4hwor4LiW4LilCivguJbguKXguIEKK+C4luC4peC4geC4muC4suC4leC4owor4LiW4Lil4LiZCivguJbguKXguKEKK+C4luC4peC5iOC4oQor4LiW4Lil4Lit4LiBCivguJbguKXguLHguIEKK+C4luC4peC4seC4mQor4LiW4Lil4LiyCivguJbguKXguLLguIEKK+C4luC4peC4suC4ogor4LiW4Lil4LizCivguJbguKXguLXguJbguKXguLMKK+C4luC4peC4tuC4h+C4leC4sgor4LiW4Lil4Li44LiHCivguJbguKXguLjguJkKK+C4luC5iOC4p+C4hwor4LiW4LmJ4Lin4LiZCivguJbguYnguKfguKIKK+C4luC5ieC4p+C4ouC5guC4luC4hwor4LiW4Lin4Lix4LiUCivguJbguKfguLHguKUKK+C4luC4p+C4seC4peC4ouC5jAor4LiW4Lin4Liy4LiiCivguJbguKfguLTguJkKK+C4luC4p+C4tOC4pQor4LiW4LmI4LitCivguJbguYnguK0KK+C4luC4reC4gQor4LiW4Lit4LiHCivguJbguYjguK3guIcKK+C4luC5ieC4reC4hwor4LiW4Lit4LiUCivguJbguK3guJkKK+C4luC4reC4mgor4LiW4Lit4Lia4LmB4LiW4LiaCivguJbguYjguK3guKEKK+C4luC4reC4ogor4LiW4LmI4Lit4LiiCivguJbguYnguK3guKIKK+C4luC4sAor4LiW4Liw4LiB4Lix4LiUCivguJbguLDguYDguIHguLTguJkKK+C4luC4sOC5guC4geC4mQor4LiW4Liw4LiW4Lix4LmI4LiZCivguJbguLDguJbguLHguJoKK+C4luC4sOC4luC4uOC4meC4luC4sOC4luC4seC4mQor4LiW4Liw4Lih4Lix4LiU4LiW4Liw4LmB4Lih4LiHCivguJbguLHguIEKK+C4luC4seC4hwor4LiW4Lix4LmI4LiHCivguJbguLHguJPguJHguLTguKUKK+C4luC4seC4lAor4LiW4Lix4LiX4LiYCivguJbguLHguJkKK+C4luC4seC5iOC4mQor4LiW4Lix4LmI4LiZ4LmGCivguJbguLHguJoKK+C4luC4seC4muC5hgor4LiW4Lix4Lih4Lig4LmMCivguJbguLHguKcKK+C4luC4seC5iOC4pwor4LiW4Lix4LmI4Lin4LiC4Liy4LinCivguJbguLIKK+C4luC5ieC4sgor4LiW4Liy4LiBCivguJbguLLguIcKK+C4luC5iOC4suC4hwor4LiW4Liy4LiUCivguJbguLLguJkKK+C4luC5iOC4suC4mQor4LiW4Liy4LiaCivguJbguLLguKEKK+C4luC4suC4oeC4sAor4LiW4LmI4Liy4LiiCivguJbguYjguLLguKLguYDguJTguLXguKLguKcKK+C4luC5iOC4suC4pwor4LiW4Liy4Lin4LijCivguJbguLLguKfguKPguJjguLTguKPguLIKK+C4luC4suC4p+C4o+C4p+C4seC4leC4luC4uAor4LiW4LmJ4LizCivguJbguLTguYjguJkKK+C4luC4tQor4LiW4Li14LmICivguJbguLXguYjguYYKK+C4luC4teC4mgor4LiW4Li14Lia4LiJ4Lix4LiUCivguJbguLbguIEKK+C4luC4tuC4hwor4LiW4Li34LitCivguJbguLjguIcKK+C4luC4uOC4mQor4LiW4Li44LiiCivguJbguLjguKUKK+C4luC4uOC4peC4peC4sAor4LiW4Li5CivguJbguLnguIEKK+C5gOC4luC4geC4tOC4hwor4LmA4LiW4LiZCivguYDguJbguKHguLTguJkKK+C5gOC4luC4owor4LmA4LiW4Lij4LiwCivguYDguJbguKXguYTguJbguKUKK+C5gOC4luC4peC4tOC4gQor4LmA4LiW4Lil4Li04LiHCivguYDguJbguKXguLfguK3guIHguJbguKXguJkKK+C5gOC4luC5iOC4rQor4LmA4LiW4Lit4LiwCivguYDguJbguLIKK+C5gOC4luC5ieC4sgor4LmA4LiW4Liy4LiE4Lix4LiZCivguYDguJbguLLguITguLHguJnguYDguKvguKXguYfguIEKK+C5gOC4luC4suC5gOC4h+C4suC4sAor4LmA4LiW4Liy4Lih4Lin4LiBCivguYDguJbguLLguKfguLHguKXguKLguYzguYDguILguLXguKLguKcKK+C5gOC4luC4suC4p+C4seC4peC4ouC5jOC4m+C4ueC4mQor4LmA4LiW4Liy4Lin4Lix4Lil4Lii4LmM4LmA4Lib4Lij4Li14Lii4LiHCivguYDguJbguLLguKfguLHguKXguKLguYzguKLguK3guJTguJTguYnguKfguJkKK+C5gOC4luC4suC4p+C4seC4peC4ouC5jOC5gOC4q+C4peC5h+C4gQor4LmA4LiW4Liy4Liq4Li04LiH4LmC4LiVCivguYDguJbguLLguKvguLHguKfguJTguYnguKfguJkKK+C5gOC4luC4suC4sAor4LmA4LiW4Li04LiBCivguYDguJbguLTguIcKK+C5gOC4luC4tOC4lAor4LmA4LiW4Li04LiU4LmA4LiX4Li04LiHCivguYDguJbguLTguJkKK+C5gOC4luC4teC4ouC4hwor4LmA4LiW4Li14Lii4LijCivguYDguJbguLfguK0KK+C5gOC4luC4t+C4reC4gQor4LmA4LiW4Li34LmI4Lit4LiZCivguYHguJYKK+C5geC4luC4gQor4LmB4LiW4LiHCivguYHguJbguJkKK+C5geC4luC4mgor4LmB4LiW4LihCivguYHguJbguKXguIcKK+C5geC4luC4peC4mgor4LmB4LiW4LinCivguYLguJYKK+C5guC4luC4hwor4LmC4LiW4LiH4LmA4LiW4LiHCivguYLguJbguJoKK+C5guC4luC4oQor4LmC4LiW4Lih4LiZ4Liy4LiB4Liy4LijCivguYTguJYKK+C5hOC4luC5iAor4LmE4LiW4LmJCivguYTguJbguIcKK+C5hOC4luC4pQor4LiXCivguJfguIEKK+C4l+C4geC4peC5ieC4sgor4LiX4LmB4LiB4Lil4LmJ4LinCivguJfguYjguIcKK+C4l+C4h+C4seC4mQor4LiX4LiK4Li1CivguJfguJQKK+C4l+C4lOC5guC4l+C4o+C5iOC4qwor4LiX4LiXCivguJfguJjguLQKK+C4l+C4mQor4LiX4LmJ4LiZCivguJfguJnguJTguLUKK+C4l+C4meC4leC5jAor4LiX4LiZ4LmC4LiX4LmICivguJfguJnguKEKK+C4l+C4meC4quC4oeC4uOC4l+C4owor4LiX4LiZ4Liy4LiiCivguJfguJoKK+C4l+C4muC4p+C4hwor4LiX4LihCivguJfguKHguIEKK+C4l+C4oeC4mQor4LiX4Lih4LiaCivguJfguKHguK0KK+C4l+C4oeC4tOC4rAor4LiX4LmA4Lih4Li04LiZCivguJfguYLguKHguJkKK+C4l+C4ouC4reC4ogor4LiX4Lii4LiyCivguJfguYHguKLguIcKK+C4l+C4owor4LiX4Lij4LiHCivguJfguKPguIfguIHguKPguLDguYDguJfguLXguKLguKEKK+C4l+C4o+C4h+C4muC4suC4lOC4suC4pQor4LiX4Lij4LiX4Li24LiHCivguJfguKPguJ7guLUKK+C4l+C4o+C4oeC4suC4l+C4o+C4geC4o+C4o+C4oQor4LiX4Lij4Lih4Liy4LiZCivguJfguKPguKHguLjguIEKK+C4l+C4o+C4o+C4l+C4tuC4hwor4LiX4Lij4Lij4LibCivguJfguKPguKPguJvguJPguYwKK+C4l+C4o+C4o+C4m+C4k+C4sAor4LiX4Lij4Lij4Lio4LiZ4LiwCivguJfguKPguKPguKjguJnguLXguKLguYwKK+C4l+C4o+C5gOC4peC5iOC4q+C5jAor4LiX4Lij4Lin4LiHCivguJfguKPguKfguJQKK+C4l+C4o+C4p+C4lOC4l+C4o+C4hwor4LiX4Lij4Lin4Liy4LijCivguJfguKPguKrguK3guIfguJfguKPguKrguLjguKEKK+C4l+C4o+C4quC4suC4ogor4LiX4Lij4Liq4Li44LihCivguJfguKPguKvguJQKK+C4l+C4o+C4q+C4mQor4LiX4Lij4Lir4Lin4LilCivguJfguKPguKvguLbguIcKK+C4l+C4o+C4q+C4tuC4h+C4l+C4o+C4q+C4p+C4pQor4LiX4Lij4Lir4Li5CivguJfguKPguYDguKvguKUKK+C4l+C4o+C4rQor4LiX4Lij4Lit4Lih4LmC4Lia4LiZCivguJfguKPguK3guLbguIcKK+C4l+C4o+C4reC4uOC5ieC4oQor4LiX4Lij4Liw4LiZ4LiHCivguJfguKPguLDguJnguLLguKcKK+C4l+C4o+C4seC4nuC4ouC5jAor4LiX4Lij4Lix4Lih4LmA4Lib4LmH4LiVCivguJfguKPguLHguKrguJXguYwKK+C4l+C4o+C4suC4meC4i+C4tOC4quC5gOC4leC4reC4o+C5jAor4LiX4Lij4Liy4LiaCivguJfguKPguLLguKEKK+C4l+C4o+C4suC4ogor4LiX4Lij4Liy4Lii4LiC4Liy4LinCivguJfguKPguLTguJfguKMKK+C4l+C4o+C4uOC4lAor4LiX4Lij4Li44LihCivguJfguKPguLjguKHguILguLHguJPguJHguYwKK+C4l+C4o+C4uOC4oeC4oeC4seC4ogor4LiX4Lij4Li44Lih4Lin4Liy4Liq4Li1CivguJfguKPguLjguKHguYDguKjguKPguKnguJDguYwKK+C4l+C4o+C4uOC4oeC4suC4o+C4tAor4LiX4Lij4Li44Lih4Liy4Lil4Lix4LiiCivguJfguKPguLnguYgKK+C4l+C4pOC4qeC4juC4tQor4LiX4LilCivguJfguKXguJrguKEKK+C4l+C4peC4reC4tuC4hwor4LiX4Lil4Liy4LiiCivguJfguKXguLTguJcKK+C4l+C4peC4tOC4l+C4l+C4gQor4LiX4Lin4LiHCivguJfguYnguKfguIcKK+C4l+C5iOC4p+C4h+C4l+C5iOC4sgor4LiX4LmI4Lin4LiH4LiX4Liz4LiZ4Lit4LiHCivguJfguYjguKfguIfguJfguLUKK+C4l+C4p+C4lAor4LiX4Lin4LiU4Li24LiH4Liq4LmMCivguJfguKfguJkKK+C4l+C5ieC4p+C4mQor4LiX4LmI4Lin4LihCivguJfguYnguKfguKEKK+C4l+C5ieC4p+C4oeC5hgor4LiX4Lin4LiiCivguJfguYjguKfguKIKK+C4l+C5ieC4p+C4ogor4LiX4Lin4Lii4LiwCivguJfguKfguK3guKIKK+C4l+C4p+C4seC4leC4lOC4tuC4h+C4quC5jAor4LiX4Lin4Lix4LiiCivguJfguKfguLIKK+C4l+C4p+C5iOC4sgor4LiX4Lin4Liy4Lia4Lij4Lii4Li44LiECivguJfguKfguLLguKIKK+C4l+C4p+C4suC4owor4LiX4Lin4Liy4Lij4Liy4Lin4LiU4Li1CivguJfguKfguLQKK+C4l+C4p+C4tOC4igor4LiX4Lin4Li04LiV4Li14LiiCivguJfguKfguLTguJXguLXguKLguLIKK+C4l+C4p+C4tOC4owor4LiX4Lin4Li1CivguJfguKfguLXguJsKK+C4l+C4p+C4teC4m+C4tQor4LiX4LioCivguJfguKjguLIKK+C4l+C4qOC4suC4h+C4hOC5jAor4LiX4Liq4Lih4Li1CivguJfguKrguLIKK+C4l+C4q+C4o+C4sAor4LiX4Lir4Liy4LijCivguJfguK0KK+C4l+C5iOC4rQor4LiX4LmJ4LitCivguJfguK3guIEKK+C4l+C4reC4hwor4LiX4LmI4Lit4LiHCivguJfguYnguK3guIcKK+C4l+C4reC4h+C4geC4p+C4suC4pwor4LiX4Lit4LiH4LmA4LiE4Lij4Li34LitCivguJfguK3guIfguJjguKPguKPguKHguIrguLLguJXguLQKK+C4l+C4reC4h+C5gOC4nOC4t+C4reC4gQor4LiX4Lit4LiH4Lie4Lij4Liw4LiC4Li44LiZCivguJfguK3guIfguJ7guKXguLgKK+C4l+C5ieC4reC4h+C4nuC4peC4uAor4LiX4Lit4LiH4Lie4Lix4LiZ4LiK4LmI4Liy4LiHCivguJfguK3guIfguJ7guLHguJnguJTguLjguKUKK+C4l+C4reC4h+C4oOC4uQor4LiX4Lit4LiH4Lih4LmJ4Lin4LiZCivguJfguK3guIfguKLguYnguK3guKIKK+C4l+C4reC4h+C4peC4tOC4mQor4LiX4Lit4LiH4Lir4Lil4Liy4LiHCivguJfguK3guIfguYLguKvguKXguIcKK+C4l+C4reC4h+C4reC4uOC5hOC4owor4LiX4Lit4LiUCivguJfguK3guJkKK+C4l+C5iOC4reC4mQor4LiX4Lit4LiZ4LiL4Li04LilCivguJfguK3guJ/guJ/guLXguYgKK+C4l+C4reC4oQor4LiX4LmI4Lit4Lih4LmGCivguJfguK3guKIKK+C4l+C4reC4o+C5jOC4meC4suC5guC4lAor4LiX4Lit4LmA4Lij4Li14Lii4LihCivguJfguLAKK+C4l+C4sOC4h+C4seC4mQor4LiX4Liw4LiX4LmI4Liy4LinCivguJfguLDguYDguJfguLXguKLguJQKK+C4l+C4sOC4meC4hwor4LiX4Liw4LiZ4LiZCivguJfguLDguJnguLAKK+C4l+C4sOC4meC4sgor4LiX4Liw4LiZ4Liy4LiZCivguJfguLDguJnguLgKK+C4l+C4sOC4muC4uQor4LiX4Liw4LmA4Lia4Li14Lii4LiZCivguJfguLDguKHguLHguJTguJfguLDguYHguKHguIcKK+C4l+C4sOC4oeC4tuC4mQor4LiX4Liw4Lih4Li34LmI4LiZCivguJfguLDguYHguKHguYjguIcKK+C4l+C4sOC4ouC4suC4l+C4sOC5geC4ouC5geC4qgor4LiX4Liw4Lii4Liy4LiZCivguJfguLDguYDguKLguK3guJfguLDguKLguLLguJkKK+C4l+C4sOC5geC4ogor4LiX4Liw4Lij4LmI4Lit4LiX4Liw4LmB4Lij4LmICivguJfguLDguKXguKfguIcKK+C4l+C4sOC4peC4reC4gQor4LiX4Liw4Lil4LmI4Lit4LiX4Liw4Lil4LmI4LiyCivguJfguLDguKXguLHguIEKK+C4l+C4sOC4peC4seC4geC4l+C4sOC5geC4peC4hwor4LiX4Liw4Lil4Liy4LiiCivguJfguLDguKXguLTguYjguJkKK+C4l+C4sOC4peC4tuC5iOC4hwor4LiX4Liw4Lil4Li4CivguJfguLDguKXguLjguJfguLDguKXguLLguJQKK+C4l+C4sOC5gOC4pQor4LiX4Liw4LmA4Lil4LmJ4LiZCivguJfguLDguYDguKXguLLguLAKK+C4l+C4sOC4p+C4suC4ogor4LiX4Liw4LmA4Lin4LiZCivguJfguLHguIEKK+C4l+C4seC4geC4guC5jAor4LiX4Lix4LiB4LiC4Li04LiNCivguJfguLHguIHguILguLTguJMKK+C4l+C4seC4geC4guC4tOC4k+C4sgor4LiX4Lix4LiB4LiC4Li04LiT4Liy4Lia4LiWCivguJfguLHguIHguILguLTguJPguLLguKfguLHguI8KK+C4l+C4seC4geC4guC4tOC5guC4k+C4l+C4gQor4LiX4Lix4LiB4LiC4Li04LmE4LiT4Lii4Lia4Li44LiE4LiE4LilCivguJfguLHguIHguJfguK0KK+C4l+C4seC4geC4l+C4tOC4mQor4LiX4Lix4LiB4Lip4LiwCivguJfguLHguIHguKnguLIKK+C4l+C4seC4geC4qeC4tOC4kwor4LiX4Lix4LiB4Lip4Li04LiT4LiyCivguJfguLHguITguJjguYwKK+C4l+C4seC4hwor4LiX4Lix4LmI4LiHCivguJfguLHguYnguIcKK+C4l+C4seC4h+C4p+C4pQor4LiX4Lix4LiH4Lin4Li14LmJ4LiX4Lix4LiH4Lin4LilCivguJfguLHguIfguKrguYDguJXguJkKK+C4l+C4seC4k+C4keC4geC4o+C4o+C4oQor4LiX4Lix4LiT4LiR4LiG4Liy4LiVCivguJfguLHguJPguJHguJjguKMKK+C4l+C4seC4k+C4keC4meC4suC4ouC4gQor4LiX4Lix4LiT4LiR4LiZ4Li04LiE4LihCivguJfguLHguJPguJHguJnguLXguJXguLQKK+C4l+C4seC4k+C4keC5jOC4muC4mQor4LiX4Lix4LiT4LiR4Lib4Liy4Lio4LiBCivguJfguLHguJPguJHguKDguLHguKIKK+C4l+C4seC4k+C4keC4oeC4uOC4ggor4LiX4Lix4LiT4LiR4Lii4Liy4LiV4Lij4LiyCivguJfguLHguJPguJHguKfguLTguJfguKLguLIKK+C4l+C4seC4k+C4keC4quC4luC4suC4mQor4LiX4Lix4LiT4LiR4Liq4Lii4Liy4LihCivguJfguLHguJPguJHguLAKK+C4l+C4seC4k+C4keC4tOC4geC4sgor4LiX4Lix4LiT4LiR4Li04Lih4LiyCivguJfguLHguJPguJHguLUKK+C4l+C4seC4k+C4keC4teC4muC4lwor4LiX4Lix4LiUCivguJfguLHguJTguJfguLIKK+C4l+C4seC4lQor4LiX4Lix4LiZCivguJfguLHguJnguJXguYwKK+C4l+C4seC4meC4leC4tOC4mQor4LiX4Lix4LiZ4LiV4Li1CivguJfguLHguJnguJjguYwKK+C4l+C4seC4mgor4LiX4Lix4Lia4LmA4LiB4Lip4LiV4LijCivguJfguLHguJrguJfguLTguKEKK+C4l+C4seC4muC5gOC4peC5h+C4gQor4LiX4Lix4Lia4Liq4Lih4Li04LiH4LiE4Lil4LiyCivguJfguLHguJsKK+C4l+C4seC4m+C4mQor4LiX4Lix4LieCivguJfguLHguJ7guJ7guLAKK+C4l+C4seC4nuC4nuC4tQor4LiX4Lix4Lih4Lih4LiwCivguJfguLHguYjguKcKK+C4l+C4seC4qAor4LiX4Lix4Lio4LiZ4LmMCivguJfguLHguKjguJnguLAKK+C4l+C4seC4qOC4meC4sgor4LiX4Lix4Lio4LiZ4Li14Lii4LmMCivguJfguLHguKjguYTguJnguKIKK+C4l+C4seC4quC4meC4suC4meC4uOC4leC4o+C4tOC4ouC4sAor4LiX4Lix4Lis4LirCivguJfguLHguKzguKvguLTguIHguKPguJPguYwKK+C4l+C4seC4rOC4q+C4teC4geC4o+C4o+C4oQor4LiX4LiyCivguJfguYjguLIKK+C4l+C5ieC4sgor4LiX4Liy4LiBCivguJfguLLguIcKK+C4l+C5ieC4suC4hwor4LiX4Liy4LiQ4LiwCivguJfguLLguJDguLTguIHguLAKK+C4l+C4suC4kuC4sAor4LiX4Liy4LiS4Li04LiB4LiwCivguJfguLLguJkKK+C4l+C5iOC4suC4mQor4LiX4Liy4LiZ4LiB4Lix4LiT4LiR4LmMCivguJfguLLguJnguIHguLLguKEKK+C4l+C4suC4meC4leC5jAor4LiX4Liy4LiZ4LiV4Liw4Lin4Lix4LiZCivguJfguLLguJnguJjguKPguKPguKEKK+C4l+C4suC4meC4muC4lOC4tQor4LiX4Liy4LiZ4Lia4Liy4Lij4Lih4Li1CivguJfguLLguJnguJ4KK+C4l+C4suC4meC4qOC4teC4pQor4LiX4Liy4LiZ4Liq4Lih4Liy4Lia4Lix4LiV4Li0CivguJfguLLguJnguLLguJjguLTguJrguJTguLUKK+C4l+C4suC4mgor4LiX4Liy4LihCivguJfguYjguLLguKHguIHguKXguLLguIcKK+C4l+C4suC4oeC4o+C4tOC4gQor4LiX4Liy4LiiCivguJfguYnguLLguKIKK+C4l+C4suC4ouC4gQor4LiX4Liy4Lii4Lix4LiKCivguJfguLLguKLguLIKK+C4l+C4suC4ouC4suC4lAor4LiX4Liy4Lii4Liy4LiXCivguJfguLLguKPguIEKK+C4l+C4suC4o+C5jOC4i+C4suC4mQor4LiX4Liy4Lij4Lie4Li1CivguJfguLLguKPguLTguIHguLIKK+C4l+C4suC4o+C4uAor4LiX4Liy4Lij4Li44LiTCivguJfguLLguKPguLjguJPguIHguKPguKPguKEKK+C4l+C4suC4pwor4LiX4LmI4Liy4LinCivguJfguYnguLLguKcKK+C4l+C4suC4qQor4LiX4Liy4LiqCivguJfguLLguKrguLUKK+C4l+C4swor4LiX4Liz4LiH4LiZCivguJfguLPguJnguJoKK+C4l+C4s+C4meC4p+C4ogor4LiX4Liz4LiZ4Lit4LiHCivguJfguLPguJnguLLguKIKK+C4l+C4s+C4meC4uAor4LiX4Liz4LiZ4Li54LilCivguJfguLPguYDguJnguLIKK+C4l+C4s+C5gOC4meC4teC4ouC4mgor4LiX4Liz4LmA4LiZ4Li14Lii4LihCivguJfguLPguKHguLHguIcKK+C4l+C4s+C5hOC4oQor4LiX4Liz4Lil4Liy4LiiCivguJfguLPguYDguKUKK+C4l+C4s+C4p+C4mQor4LiX4Li04LiE4Lix4Lih4Lie4LijCivguJfguLTguIbguLHguKHguJ7guKMKK+C4l+C4tOC5ieC4hwor4LiX4Li04LiH4LmA4LiI4Lit4Lij4LmMCivguJfguLTguYnguIfguJbguYjguK3guJkKK+C4l+C4tOC5ieC4h+C4l+C4ueC4lAor4LiX4Li04LiKCivguJfguLTguI/guJDguIrguLjguIHguKPguKPguKEKK+C4l+C4tOC4j+C4kOC4sAor4LiX4Li04LiP4LiQ4Liy4LiZ4Li44LiE4LiV4Li0CivguJfguLTguJDguLQKK+C4l+C4tOC4lAor4LiX4Li04LiVCivguJfguLTguJkKK+C4l+C4tOC4meC4suC4lwor4LiX4Li04LieCivguJfguLTguJ7guKLguYwKK+C4l+C4tOC4nuC4sgor4LiX4Li04LihCivguJfguLTguYjguKEKK+C4l+C4tOC4oeC4l+C4reC4hwor4LiX4Li04LinCivguJfguLTguKfguIfguITguJUKK+C4l+C4tOC4p+C4l+C4seC4qOC4meC5jAor4LiX4Li04Lin4Liq4LiwCivguJfguLTguKfguLIKK+C4l+C4tOC4qAor4LiX4Li04Lio4LiyCivguJfguLUKK+C4l+C4teC5iAor4LiX4Li14LibCivguJfguLXguKEKK+C4l+C4teC4p+C4tQor4LiX4Li14LmA4Lit4LiZ4LiX4Li1CivguJfguLbguIEKK+C4l+C4tuC5iOC4hwor4LiX4Li24LmJ4LiHCivguJfguLbguJTguJfguLfguK0KK+C4l+C4tuC4meC4l+C4tuC4gQor4LiX4Li24LiaCivguJfguLbguKEKK+C4l+C4tuC5iOC4oQor4LiX4Li34LmI4LitCivguJfguLgKK+C4l+C4uOC4gQor4LiX4Li44LiB4LiCCivguJfguLjguIHguILguYwKK+C4l+C4uOC4geC4guC4seC4geC4qeC4seC4ogor4LiX4Li44LiB4LiPCivguJfguLjguIHguKnguJTguKMKK+C4l+C4uOC4geC4sAor4LiX4Li44LiB4Lix4LiHCivguJfguLjguIHguLnguKUKK+C4l+C4uOC4hOC4leC4sAor4LiX4Li44LiE4LiV4Li0CivguJfguLjguYjguIcKK+C4l+C4uOC5ieC4hwor4LiX4Li44LiH4LiH4LiwCivguJfguLjguIfguYDguJfguIcKK+C4l+C4uOC4iOC4iOC4tOC4k+C4k+C4sAor4LiX4Li44LiI4Lij4Li04LiVCivguJfguLjguI/guJDguLAKK+C4l+C4uOC4j+C4kOC4uOC4peC4peC4sAor4LiX4Li44LiUCivguJfguLjguJXguKfguLTguKXguLHguKHguJ7guLTguJXguKHguLLguKXguLIKK+C4l+C4uOC4leC4tOC4ouC4suC4quC4suC4rOC4qwor4LiX4Li44LiX4Lij4Lij4Lio4LiZ4LiZ4Li04Lii4LihCivguJfguLjguJkKK+C4l+C4uOC5iOC4mQor4LiX4Li44LiZ4LiZ4Li04Lih4Li04LiVCivguJfguLjguJnguLTguKLguKEKK+C4l+C4uOC4mgor4LiX4Li44Lia4LiX4Li5CivguJfguLjguJvguJvguLHguI3guI3guLIKK+C4l+C4uOC4nuC4nuC4o+C4o+C4kwor4LiX4Li44Lie4Lie4LilCivguJfguLjguJ7guJ7guKXguKDguLLguJ4KK+C4l+C4uOC4nuC4oOC4tOC4geC4guC4oOC4seC4ogor4LiX4Li44Lie4Lig4Li04LiB4LiC4Lix4LiZ4LiU4Lij4LiB4Lix4LibCivguJfguLjguKEKK+C4l+C4uOC5iOC4oQor4LiX4Li44LmJ4LihCivguJfguLjguKHguYLguJkKK+C4l+C4uOC4ogor4LiX4Li44LmJ4LiiCivguJfguLjguKPguJkKK+C4l+C4uOC4o+C4seC4luC4ouC4sgor4LiX4Li44Lij4Lix4LioCivguJfguLjguKPguLLguITguKEKK+C4l+C4uOC4o+C4suC4iOC4suC4owor4LiX4Li44Lij4Liy4LiY4Lin4LiyCivguJfguLjguYDguKPguKgKK+C4l+C4uOC5gOC4o+C4teC4ouC4mQor4LiX4Li44LmA4Lij4Li14Lii4LiZ4LmB4LiC4LiBCivguJfguLjguKXguLHguIHguJfguLjguYDguKUKK+C4l+C4uOC5gOC4peC4sgor4LiX4Li44Lin4Li04LiK4Liy4LiZCivguJfguLjguKfguLTguJgKK+C4l+C4uOC4qOC4teC4pQor4LiX4Li44Liq4Liq4LiwCivguJfguLjguKrguKrguLXguKUKK+C4l+C4uQor4LiX4Li54LmICivguJfguLnguYkKK+C4l+C4ueC5iOC4i+C4teC5iQor4LiX4Li54LiVCivguJfguLnguJXguLLguJnguLjguJfguLnguJUKK+C4l+C4ueC4mQor4LiX4Li54LiaCivguJfguLnguKEKK+C4l+C4ueC5gOC4o+C4meC4tOC4l+C4suC4mQor4LiX4Li54LilCivguJfguLnguYDguKXguLXguKLguKEKK+C4l+C4ueC4qeC4gQor4LmA4LiXCivguYDguJfguYgKK+C5gOC4l+C4hOC4meC4tOC4hAor4LmA4LiX4LiE4LiZ4Li14LmA4LiL4Li14Lii4LihCivguYDguJfguITguYLguJnguYLguKXguKLguLUKK+C5gOC4l+C4hwor4LmA4LiX4LmJ4LiHCivguYDguJfguYnguIfguYDguJXguYnguIcKK+C5gOC4l+C5ieC4h+C4l+C4ueC4lAor4LmA4LiX4LmH4LiICivguYDguJfguJnguJnguLTguKoKK+C5gOC4l+C5gOC4muC4tOC4peC5gOC4l+C4meC4meC4tOC4qgor4LmA4LiX4LibCivguYDguJfguJ4KK+C5gOC4l+C4nuC4l+C4suC4o+C4uQor4LmA4LiX4Lie4LiX4Liy4LmC4LijCivguYDguJfguJ7guLIKK+C5gOC4l+C4nuC4tOC4mQor4LmA4LiX4Lie4Li1CivguYDguJfguJ7guLXguJvguLHguIHguKnguLUKK+C5gOC4l+C5guC4ngor4LmA4LiX4Lih4Lib4Li44Lij4LiwCivguYDguJfguKPguLTguJQKK+C5gOC4l+C4peC4peC4ueC5gOC4o+C4teC4ouC4oQor4LmA4LiX4Lin4LiU4LiyCivguYDguJfguKfguJnguLAKK+C5gOC4l+C4p+C4oOC4suC4p+C4sAor4LmA4LiX4Lin4Lij4LiwCivguYDguJfguKfguKfguLLguIjguLTguIHguLAKK+C5gOC4l+C4p+C4p+C4suC4iOC4tOC4quC4o+C4k+C4hOC4oeC4meC5jAor4LmA4LiX4Lin4LioCivguYDguJfguKfguKkKK+C5gOC4l+C4p+C4quC4uOC4hOC4meC4mOC5jAor4LmA4LiX4Lin4LitCivguYDguJfguKfguLHguI0KK+C5gOC4l+C4p+C4seC4mQor4LmA4LiX4Lin4Li1CivguYDguJfguKgKK+C5gOC4l+C4qOC4gQor4LmA4LiX4Lio4LiZ4LmMCivguYDguJfguKjguJnguLIKK+C5gOC4l+C4qOC4sAor4LmA4LiX4Lir4LmMCivguYDguJfguYjguKvguYwKK+C5gOC4l+C5iOC4rQor4LmA4LiX4LmJ4LitCivguYDguJfguK3guI0KK+C5gOC4l+C4reC4oQor4LmA4LiX4Lit4Lij4LmM4LmA4Lia4Li14Lii4LihCivguYDguJfguK3guKPguYzguYLguKHguKHguLTguYDguJXguK3guKPguYwKK+C5gOC4l+C4reC4sOC4l+C4sAor4LmA4LiX4LiyCivguYDguJfguYjguLIKK+C5gOC4l+C5ieC4sgor4LmA4LiX4LmJ4Liy4LiK4LmJ4Liy4LiHCivguYDguJfguYjguLLguKHguLHguIEKK+C5gOC4l+C5ieC4suC4ouC4suC4ouC4oeC5iOC4reC4oQor4LmA4LiX4LmI4Liy4Lij4Li24LiHCivguYDguJfguYnguLLguKrguLLguJkKK+C5gOC4l+C4suC4sOC4q+C5jAor4LmA4LiX4Li04LiBCivguYDguJfguLTguYjguIcKK+C5gOC4l+C4tOC4h+C4muC4reC4hwor4LmA4LiX4Li04LiUCivguYDguJfguLTguJkKK+C5gOC4l+C4tOC4mgor4LmA4LiX4Li04Lia4LmGCivguYDguJfguLTguYnguKEKK+C5gOC4l+C4teC4ouC4hwor4LmA4LiX4Li14Lii4LiZCivguYDguJfguLXguYnguKLguJkKK+C5gOC4l+C4teC4ouC4mgor4LmA4LiX4Li14Lii4LijCivguYDguJfguLXguYnguKLguKMKK+C5gOC4l+C4teC4ouC4pwor4LmA4LiX4Li14LmI4Lii4LinCivguYDguJfguLfguK0KK+C5gOC4l+C4t+C5iOC4rQor4LmA4LiX4Li34LmJ4LitCivguYDguJfguLfguK3guIEKK+C5gOC4l+C4t+C4reC4geC5gOC4guC4sgor4LmA4LiX4Li34Lit4LiB4LmA4LiW4Liy4LmA4Lir4Lil4LmI4Liy4LiB4LitCivguYDguJfguLfguK3guJkKK+C5geC4l+C5iAor4LmB4LiX4LmJCivguYHguJfguYfguIHguIvguLXguYgKK+C5geC4l+C4hwor4LmB4LiX4LmI4LiHCivguYHguJfguYnguIcKK+C5geC4l+C5h+C4h+C4geC5jOC4meC5ieC4swor4LmB4LiX4LiH4LiX4Lin4LiiCivguYHguJfguIfguKfguLTguKrguLHguKIKK+C5geC4l+C4leC4ouC5jAor4LmB4LiX4LiZCivguYHguJfguYjguJkKK+C5geC4l+C4meC5gOC4iOC4meC4leC5jAor4LmB4LiX4LiZ4LiX4Liy4Lil4Lix4LihCivguYHguJfguJoKK+C5geC4l+C4o+C4gQor4LmB4LiX4Lij4LiB4LmA4LiV4Lit4Lij4LmMCivguYHguJfguKXguYDguKXguLXguKLguKEKK+C5geC4l+C4sAor4LmC4LiXCivguYLguJfguYgKK+C5guC4l+C4geC5gOC4l+C4gQor4LmC4LiX4LiH4LmGCivguYLguJfguIfguYDguJfguIcKK+C5guC4l+C4k+C4sAor4LmC4LiX4LiY4LiBCivguYLguJfguJkKK+C5guC4l+C4meC5guC4l+C5iAor4LmC4LiX4Lih4LiZ4Lix4LiqCivguYLguJfguKPguJMKK+C5guC4l+C4o+C4oQor4LmC4LiX4Lij4Liy4Lin4Li04LiBCivguYLguJfguKXguLIKK+C5guC4l+C4qQor4LmC4LiX4Lip4LiB4Lij4LiT4LmMCivguYLguJfguKnguITguLjguJMKK+C5guC4l+C4qeC4leC4o+C4seC4ogor4LmC4LiX4Lip4LiX4Lix4LiT4LiR4LmMCivguYLguJfguKnguYLguJ7guKIKK+C5guC4l+C4qeC4oeC4q+C4seC4meC4leC5jAor4LmC4LiX4Lip4LiyCivguYLguJfguKrguLAKK+C5guC4l+C5guC4qgor4LmC4LiX4Lir4Lis4LiwCivguYLguJfguKvguKzguLTguJnguLUKK+C5hOC4lwor4LmE4LiX4LmJCivguYTguJfguIHguK0KK+C5hOC4l+C5gOC4l+C5gOC4meC4teC4ouC4oQor4LmE4LiX4Lif4Lit4Lii4LiU4LmMCivguYTguJfguKIKK+C5hOC4l+C4ouC4mOC4o+C4o+C4oQor4LmE4LiX4LijCivguYTguJfguKPguK3guKLguJTguYwKK+C5hOC4l+C4p+C4sAor4LiYCivguJjguIcKK+C4mOC4h+C4geC5jAor4LiY4LiKCivguJjguIrguLUKK+C4mOC4leC4o+C4kAor4LiY4LiZCivguJjguJnguLHguIcKK+C4mOC4meC4suC4hOC4suC4owor4LiY4LiZ4Liy4LiT4Lix4LiV4Li0CivguJjguJnguLLguJXguKEKK+C4mOC4meC4suC4mOC4suC4owor4LiY4LiZ4Liy4LiY4Li04Lia4LiU4Li1CivguJjguJnguLLguJjguLTguJsKK+C4mOC4meC4suC4mOC4tOC4m+C4seC4leC4ouC5jAor4LiY4LiZ4Liy4LiZ4Li44LmA4LiE4Lij4Liy4Liw4Lir4LmMCivguJjguJnguLLguKPguLHguIHguKnguYwKK+C4mOC4meC4tOC4lQor4LiY4LiZ4Li04Lip4LiQ4LiyCivguJjguJnguLgKK+C4mOC4meC4uQor4LiY4LmA4LiZ4LioCivguJjguYDguJnguKjguKfguKMKK+C4mOC5guC4meC4m+C4iOC4seC4ogor4LiY4LmE4LiZ4Lio4Lin4Lij4Lij4Lii4LmMCivguJjguKEKK+C4mOC4oeC4geC4o+C4gQor4LiY4LijCivguJjguKPguIcKK+C4mOC4o+C4kwor4LiY4Lij4LiT4Li04LiZCivguJjguKPguJPguLTguJnguJfguKPguYwKK+C4mOC4o+C4k+C4tOC4qAor4LiY4Lij4LiT4Li04Lio4LijCivguJjguKPguJPguLTguKjguKfguKPguYwKK+C4mOC4o+C4k+C4tQor4LiY4Lij4Lih4Liy4LiZCivguJjguKPguKPguKEKK+C4mOC4o+C4o+C4oeC4sAor4LiY4Lij4LiyCivguJjguKPguLTguKnguJXguKPguLUKK+C4mOC5gOC4o+C4qAor4LiY4LmA4Lij4Lip4LiV4Lij4Li1CivguJjguKfguLHguIoKK+C4mOC4seC4h+C4gQor4LiY4Lix4LiKCivguJjguLHguI0KK+C4mOC4seC4meC4ouC4sgor4LiY4Lix4LiZ4Lii4Liy4Lin4Liy4LiXCivguJjguLHguJnguKfguLLguITguKEKK+C4mOC4seC4oeC4oeC4sAor4LiY4Liy4LiU4LiyCivguJjguLLguJXguKPguLUKK+C4mOC4suC4leC4p+C4suC4geC4owor4LiY4Liy4LiV4Li4CivguJjguLLguJXguLjguKHguKHguLTguKrguKrguLIKK+C4mOC4suC4meC4tOC4mQor4LiY4Liy4LiZ4Li04LiZ4LiX4Lij4LmMCivguJjguLLguJnguLUKK+C4mOC4suC4owor4LiY4Liy4Lij4LiB4Liz4LiZ4Lix4LilCivguJjguLLguKPguITguLPguJnguLHguKUKK+C4mOC4suC4o+C4kwor4LiY4Liy4Lij4LiT4LiwCivguJjguLLguKPguJPguLIKK+C4mOC4suC4o+C4sgor4LiY4Liy4Lip4LiV4Lij4Li1CivguJjguLPguKHguKPguIfguITguYwKK+C4mOC4s+C4o+C4hwor4LiY4Li04LiU4LiyCivguJjguLTguJXguLQKK+C4mOC4teC4o+C4sAor4LiY4Li44LiKCivguJjguLjguJTguIfguITguYwKK+C4mOC4uOC4lQor4LiY4Li44LiV4LiV4LiwCivguJjguLjguKEKK+C4mOC4uOC4oeC4sAor4LiY4Li44Lij4LiwCivguJjguLjguKPguLMKK+C4mOC4uOC4peC4tQor4LiY4Li44Lir4Lij4LmI4LizCivguJjguLnguJsKK+C5gOC4mOC4meC4uAor4LmA4LiY4LitCivguYDguJjguLXguKLguKMKK+C5guC4mOC5iAor4LmC4LiY4Lin4LiZCivguJkKK+C4meC4gQor4LiZ4LiB4LiB4Lij4Liw4LiX4Li44LiHCivguJnguIHguLjguKUKK+C4meC4ggor4LiZ4LiECivguJnguITguKMKK+C4meC4hOC4o+C4geC4seC4k+C4keC5jAor4LiZ4LiE4Lij4Lia4Liy4LilCivguJnguITguKPguKHguLHguJPguJHguJnguLIKK+C4meC4hOC4o+C4o+C4seC4kAor4LiZ4LiE4Lij4Lin4Liy4Liq4Li1CivguJnguITguKPguYLguKrguKDguLTguJPguLUKK+C4meC4hOC4o+C5guC4quC5gOC4oOC4k+C4tQor4LiZ4LiE4Lij4Lir4Lil4Lin4LiHCivguJnguITguKPguLLguJfguKMKK+C4meC4hOC4o+C4tOC4meC4l+C4o+C5jAor4LiZ4LiE4LmA4Lij4LioCivguJnguIcKK+C4meC4h+C4hOC4uOC4kAor4LiZ4LiXCivguJnguJfguLUKK+C4meC4meC4leC4o+C4sgor4LiZ4LiZ4LiX4LmMCivguJnguJnguJfguIEKK+C4meC4meC4l+C4o+C4tQor4LiZ4LiZ4LiX4Lil4Li1CivguJnguJnguJfguLQKK+C4meC4mgor4LiZ4Lib4Li44LiH4Liq4LiB4Lil4Li04LiH4LiE4LmMCivguJnguJvguLjguIfguKrguIHguKXguLbguIfguITguYwKK+C4meC4nuC5gOC4geC4leC4meC5jAor4LiZ4Lie4LmA4LiB4LmJ4LiyCivguJnguJ7guITguLjguJMKK+C4meC4nuC5gOC4hOC4o+C4suC4sOC4q+C5jAor4LiZ4Lie4LiZ4Li04LiVCivguJnguJ7guJvguI7guKUKK+C4meC4nuC4nuC4pQor4LiZ4Lie4Lie4Lin4LiHCivguJnguJ7guJ7guLHguJkKK+C4meC4nuC4o+C4seC4leC4meC5jAor4LiZ4Lie4Lio4LiBCivguJnguJ7guKjguLnguKUKK+C4meC4oOC4geC4suC4meC4leC5jAor4LiZ4Lig4LiE4LiKCivguJnguKDguITguJXguLQKK+C4meC4oOC4iOC4owor4LiZ4Lig4LiI4Lix4LiB4Lip4Li4CivguJnguKDguJTguKUKK+C4meC4oOC4l+C4p+C4teC4mwor4LiZ4Lig4Lib4Lij4Liy4LiTCivguJnguKDguKHguJPguJHguKUKK+C4meC4oOC4oeC4k+C4tQor4LiZ4Lig4Lih4Lix4LiiCivguJnguKDguKPguLnguJsKK+C4meC4oOC5gOC4o+C4k+C4uQor4LiZ4Lig4Lin4Li04LiW4Li1CivguJnguKDguKjguLnguKUKK+C4meC4oOC4quC4tOC4meC4mOC4uOC5jAor4LiZ4Lig4LiyCivguJnguKDguLLguIHguLLguKgKK+C4meC4oOC4suC4peC4seC4ogor4LiZ4LihCivguJnguKHguJnguLLguJkKK+C4meC4oeC4sAor4LiZ4Lih4Lix4LiB4LiB4Liy4LijCivguJnguKHguLHguKrguIHguLLguKMKK+C4meC4oeC4suC4iwor4LiZ4Lii4LiZ4LiwCivguJnguKLguJnguLIKK+C4meC4ouC4sAor4LiZ4Lii4Lix4LiB4Lip4LmMCivguJnguKPguIEKK+C4meC4o+C4geC4suC4owor4LiZ4Lij4Liy4LiY4Li04LibCivguJnguKPguLTguJnguJfguKPguYwKK+C4meC4o+C4tOC4qAor4LiZ4Lij4Li04Lio4Lin4LijCivguJnguKPguLUKK+C4meC5gOC4o+C4meC4l+C4o+C4quC4ueC4owor4LiZ4LmA4Lij4LioCivguJnguYDguKPguKjguKfguKMKK+C4meC5gOC4o+C4qOC4p+C4o+C5jOC4iuC4meC4iuC5ieC4suC4hwor4LiZ4LmA4Lij4Lio4Li54LijCivguJnguKTguYLguIbguKkKK+C4meC4pOC4leC4ouC5jAor4LiZ4Lik4LiZ4Liy4LiXCivguJnguKTguJ7guLLguJkKK+C4meC4pOC4oeC4pQor4LiZ4Lik4Lih4Liy4LiTCivguJnguKTguKHguLTguJUKK+C4meC4peC4suC4jwor4LiZ4Lil4Li04LiZCivguJnguKfguIHguLAKK+C4meC4p+C4lAor4LiZ4Lin4LiZ4Li04Lii4Liy4LiiCivguJnguKfguKEKK+C4meC5iOC4p+C4oQor4LiZ4Lin4LiiCivguJnguKfguKUKK+C4meC4p+C4reC4o+C4q+C4suC4l+C4tOC4hOC4uOC4kwor4LiZ4Lin4Lix4LiH4LiE4Liq4Lix4LiV4LiW4Li44Lio4Liy4Liq4LiZ4LmMCivguJnguKfguLLguKPguLAKK+C4meC4p+C4suC4reC4o+C4q+C4suC4mOC4tOC4hOC4uOC4kwor4LiZ4Lir4Liy4LiU4LiBCivguJnguKvguLLguJkKK+C4meC4q+C4suC4o+C4uAor4LiZ4Lir4Li44LiVCivguJnguKwKK+C4meC4rOC4mwor4LiZ4LitCivguJnguK3guIEKK+C4meC4reC4hwor4LiZ4LmI4Lit4LiHCivguJnguYnguK3guIcKK+C4meC5iOC4reC4h+C5geC4meC5iOC4hwor4LiZ4Lit4LiVCivguJnguK3guJkKK+C4meC4reC4mgor4LiZ4LmJ4Lit4LihCivguJnguYnguK3guKIKK+C4meC5ieC4reC4ouC4q+C4meC5iOC4sgor4LiZ4LmJ4Lit4Lii4LmC4Lir4LiZ4LmI4LiHCivguJnguLAKK+C4meC4sOC5geC4meC5iOC4hwor4LiZ4Lix4LiBCivguJnguLHguIHguIHguLAKK+C4meC4seC4geC4guC4seC4lQor4LiZ4Lix4LiB4LiH4Liy4LiZCivguJnguLHguIHguJXguLAKK+C4meC4seC4geC4owor4LiZ4Lix4LiB4Lip4Lix4LiV4LijCivguJnguLHguIHguKrguKPguLLguIoKK+C4meC4seC4ggor4LiZ4Lix4LiECivguJnguLHguITguITguLAKK+C4meC4seC4hwor4LiZ4Lix4LmI4LiHCivguJnguLHguIfguITguLHguKUKK+C4meC4seC4iAor4LiZ4Lix4LiPCivguJnguLHguI/guIEKK+C4meC4seC4kQor4LiZ4Lix4LiUCivguJnguLHguJTguJTguLIKK+C4meC4seC4leC4luC4uOC5jAor4LiZ4Lix4LmI4LiZCivguJnguLHguYnguJkKK+C4meC4seC4meC4l+C4l+C4suC4ouC4tQor4LiZ4Lix4LiZ4LiX4LiZ4LmMCivguJnguLHguJnguJfguJnguLLguIHguLLguKMKK+C4meC4seC4meC4l+C4tAor4LiZ4Lix4LiaCivguJnguLHguJrguJvguKPguLDguKrguLIKK+C4meC4seC4muC4m+C4o+C4sOC4quC4suC4reC4sOC5hOC4owor4LiZ4Lix4LiiCivguJnguLHguKLguJnguYwKK+C4meC4seC4ouC4meC4sgor4LiZ4Lix4LinCivguJnguLIKK+C4meC5iOC4sgor4LiZ4LmJ4LiyCivguJnguLLguIEKK+C4meC4suC4geC4muC4uOC4lAor4LiZ4Liy4LiB4Liy4Liq4Liy4Lir4Lij4Li1CivguJnguLLguIQKK+C4meC4suC4hOC4owor4LiZ4Liy4LiE4LiyCivguJnguLLguITguLLguKfguYLguKXguIEKK+C4meC4suC4hOC4suC4quC4meC5jAor4LiZ4Liy4LiE4Li04LiZ4LiX4Lij4LmMCivguJnguLLguITguLUKK+C4meC4suC5gOC4hOC4meC4l+C4o+C5jAor4LiZ4Liy4LmA4LiE4LioCivguJnguLLguYDguITguKjguKfguKMKK+C4meC4suC5guC4hOC4o+C4hOC4tOC4meC4l+C4owor4LiZ4Liy4LiHCivguJnguLLguIfguJnguKfguKUKK+C4meC4suC4h+C4meC4ueC4mQor4LiZ4Liy4LiH4LmB4Lii4LmJ4LihCivguJnguLLguIfguKPguKEKK+C4meC4suC4h+C5gOC4peC5h+C4lAor4LiZ4Liy4LiH4LmA4Lil4Li04LmJ4LiHCivguJnguLLguIfguKvguIfguKrguYwKK+C4meC4suC4h+C4reC4suC4ogor4LiZ4Liy4LiH4LmB4Lit4LmI4LiZCivguJnguLLguIvguLIKK+C4meC4suC4i+C4tQor4LiZ4Liy4LiPCivguJnguLLguI/guIEKK+C4meC4suC4j+C4geC4o+C4o+C4oQor4LiZ4Liy4LiP4LiU4LiZ4LiV4Lij4Li1CivguJnguLLguI/guKjguLTguKXguJvguYwKK+C4meC4suC4lAor4LiZ4Liy4LiWCivguJnguLLguJcKK+C4meC4suC4l+C4tQor4LiZ4Liy4LiZCivguJnguYjguLLguJkKK+C4meC4suC4meC4seC4hOC4o+C4qgor4LiZ4Liy4LiZ4Lix4LiV4LinCivguJnguLLguJnguLHguJvguIHguLLguKMKK+C4meC4suC4meC4sgor4LiZ4Liy4LmA4LiZ4LiBCivguJnguLLguJoKK+C4meC4suC4oOC4tAor4LiZ4Liy4Lig4Li1CivguJnguLLguKEKK+C4meC4suC4oeC4muC4seC4leC4owor4LiZ4Liy4Lih4Lib4Liy4LiB4LiB4LiyCivguJnguLLguKHguYHguJ3guIcKK+C4meC4suC4oeC4quC4geC4uOC4pQor4LiZ4Liy4LiiCivguJnguYjguLLguKIKK+C4meC4suC4ouC4gQor4LiZ4Liy4Lii4Li04LiB4LiyCivguJnguLLguKPguJcKK+C4meC4suC4o+C4sgor4LiZ4Liy4Lij4Liy4Lii4LiT4LmMCivguJnguLLguKPguLUKK+C4meC4suC5gOC4o+C4qAor4LiZ4Liy4Lil4Li04Lin4Lix4LiZCivguJnguLLguKXguLUKK+C4meC4suC4pwor4LiZ4LmJ4Liy4LinCivguJnguLLguKfguLIKK+C4meC4suC4p+C4tOC4gQor4LiZ4Liy4Lin4Li04LiZCivguJnguLLguKfguLUKK+C4meC4suC5gOC4p+C4qAor4LiZ4Liy4LioCivguJnguLLguKrguJnguLAKK+C4meC4suC4quC4sgor4LiZ4Liy4Liq4Li04LiBCivguJnguLLguKzguLTguIHguLIKK+C4meC4suC4rOC4tOC5gOC4gQor4LiZ4Liy4Lis4Li1CivguJnguLMKK+C4meC5ieC4swor4LiZ4LmJ4Liz4LiV4Liw4LiB4Li5CivguJnguYnguLPguJXguLDguYLguIEKK+C4meC4tAor4LiZ4Li04LiB4LiC4LiwCivguJnguLTguIHguILguLHguJnguJXguYwKK+C4meC4tOC4geC5gOC4guC4mwor4LiZ4Li04LiB4LijCivguJnguLTguIHguKPguK3guKLguJTguYwKK+C4meC4tOC4geC4suC4ogor4LiZ4Li04LmA4LiB4Li04LilCivguJnguLTguITguKEKK+C4meC4tOC4hOC4o+C4meC4luC5jAor4LiZ4Li04LiE4Lir4LiwCivguJnguLTguITguKvguLTguJUKK+C4meC4tOC4hOC4suC4peC4seC4ogor4LiZ4Li04LmA4LiE4Lij4Liy4Liw4Lir4LmMCivguJnguLTguYLguITguJXguLTguJkKK+C4meC4tOC5guC4hOC4o+C4mAor4LiZ4Li04LmC4LiE4Lij4LihCivguJnguLTguIcKK+C4meC4tOC5iOC4hwor4LiZ4Li04LiICivguJnguLTguJQKK+C4meC4tOC4leC4ouC5jAor4LiZ4Li04LiV4Li0CivguJnguLTguJfguKMKK+C4meC4tOC4l+C4o+C4o+C4qOC4geC4suC4owor4LiZ4Li04LiX4Lij4LiyCivguJnguLTguJfguLHguKjguJnguYwKK+C4meC4tOC4l+C4suC4hgor4LiZ4Li04LiX4Liy4LiZCivguJnguLTguYDguJfguKgKK+C4meC4tOC5gOC4l+C4qOC4geC5jAor4LiZ4Li04LiY4Liy4LiZCivguJnguLTguJjguLQKK+C4meC4tOC4meC4l+C4sgor4LiZ4Li04LiZ4LiZ4LiwCivguJnguLTguJnguJnguLLguJcKK+C4meC4tOC4meC4q+C4uOC4lQor4LiZ4Li04LiZ4Liy4LiXCivguJnguLTguJrguLLguJUKK+C4meC4tOC4m+C4o+C4tOC4ouC4suC4ogor4LiZ4Li04Lib4Lix4LiI4LiB4Liy4LijCivguJnguLTguJ7guIjguJnguYwKK+C4meC4tOC4nuC4meC4mOC5jAor4LiZ4Li04Lie4Lie4Liy4LiZCivguJnguLTguJ7guJ7guLTguJfguLIKK+C4meC4tOC4nuC4seC4l+C4mOC5jAor4LiZ4Li04Lie4Lix4LiZ4LiY4LmMCivguJnguLTguJ7guLTguJcKK+C4meC4tOC5gOC4nuC4lwor4LiZ4Li04Lig4LiyCivguJnguLTguYjguKEKK+C4meC4tOC5ieC4oQor4LiZ4Li04Lih4LiZ4LiV4LmMCivguJnguLTguKHguKHguLLguJkKK+C4meC4tOC4oeC4oeC4suC4meC4o+C4lOC4tQor4LiZ4Li04Lih4Li04LiVCivguJnguLTguKLguJUKK+C4meC4tOC4ouC4oQor4LiZ4Li04Lii4Lii4Liy4LiZCivguJnguLTguKLguKLguLLguJnguLTguIEKK+C4meC4tOC4ouC4seC4leC4tOC4meC4tOC4ouC4oQor4LiZ4Li04Lii4Liy4LihCivguJnguLTguKLguLLguKIKK+C4meC4tOC4ouC4uOC4lQor4LiZ4Li04Lij4Lie4Lix4LiV4LijCivguJnguLTguKPguKHguLLguJMKK+C4meC4tOC4o+C4oeC4tOC4lQor4LiZ4Li04Lij4Lix4Lie4Lie4Li44LiXCivguJnguLTguKPguLLguKgKK+C4meC4tOC4o+C4uOC4geC4leC4tAor4LiZ4Li04Lij4Li44LiV4LiV4Li0CivguJnguLTguKPguLjguJfguJjguYwKK+C4meC4tOC5guC4o+C4mAor4LiZ4Li04LilCivguJnguLTguYjguKcKK+C4meC4tOC5ieC4pwor4LiZ4Li04Lin4LiE4Lil4Li14Lit4Li04LiBCivguJnguLTguKfguYDguITguKXguLXguKLguKPguYwKK+C4meC4tOC4p+C5gOC4hOC4peC4teC4ouC4qgor4LiZ4Li04Lin4LiV4Lij4Lit4LiZCivguJnguLTguKfguKPguJPguYwKK+C4meC4tOC4p+C4seC4leC4meC5jAor4LiZ4Li04Lin4Lix4LiV4Li0CivguJnguLTguKfguLLguJUKK+C4meC4tOC4p+C4suC4qgor4LiZ4Li04Lin4Liy4Liq4LiZ4LmMCivguJnguLTguYDguKfguKgKK+C4meC4tOC5gOC4p+C4qOC4meC5jAor4LiZ4Li04Lio4LiyCivguJnguLTguKnguIHguKPguKEKK+C4meC4tOC4qeC4suC4lwor4LiZ4Li04Liq4Liq4Lix4LiE4LiE4Li04Lii4Lin4Lix4LiV4LiW4Li4CivguJnguLTguKrguKrguLHguITguITguLXguKLguYwKK+C4meC4tOC4quC4seC4igor4LiZ4Li04Liq4Lix4LiiCivguJnguLTguKrguLLguJcKK+C4meC4tOC4quC4tOC4lQor4LiZ4Li04Liq4Li14LiX4LiZ4LiwCivguJnguLTguYDguKrguJgKK+C4meC4tOC4q+C4teC4meC4sAor4LiZ4Li14LmICivguJnguLXguYkKK+C4meC4teC4leC4tAor4LiZ4Li14LmI4LiZ4Lix4LiZCivguJnguLXguKPguJnguLLguJcKK+C4meC4teC4reC4reC4mQor4LiZ4Li14LmC4Lit4LiU4Li14LmA4Lih4Li14Lii4LihCivguJnguLbguIEKK+C4meC4tuC4hwor4LiZ4Li24LmI4LiHCivguJnguLgKK+C4meC4uOC4hwor4LiZ4Li44LmI4LiHCivguJnguLjguIoKK+C4meC4uOC4lAor4LiZ4Li44LiVCivguJnguLjguYjguJkKK+C4meC4uOC5ieC4ogor4LiZ4Li54LiZCivguJnguLnguYjguJkKK+C4meC4ueC5ieC4mQor4LmA4LiZ4LiB4LiC4LiwCivguYDguJnguIHguILguLHguKEKK+C5gOC4meC4hOC5hOC4lwor4LmA4LiZ4LiVCivguYDguJnguJXguJrguK3guKUKK+C5gOC4meC4leC4owor4LmA4LiZ4LiV4Li0CivguYDguJnguYnguJkKK+C5gOC4meC4muC4tOC4p+C4peC4sgor4LmA4LiZ4Lib4LiI4Li54LiZCivguYDguJnguJvguJfguLnguYDguJnguLXguKLguKEKK+C5gOC4meC4oeC4tAor4LmA4LiZ4Lih4Li04LiV4LiB4LiwCivguYDguJnguKHguLTguJnguJjguKMKK+C5gOC4meC4ogor4LmA4LiZ4Lii4Lii4LiwCivguYDguJnguKPguIHguLHguJPguJDguLUKK+C5gOC4meC4o+C4hOC4uOC4kwor4LmA4LiZ4Lij4LmA4LiX4LioCivguYDguJnguKPguJnguLLguJYKK+C5gOC4meC4o+C4oeC4tOC4lQor4LmA4LiZ4Lij4Liw4Lie4Li54Liq4Li1CivguYDguJnguKnguLLguJcKK+C5gOC4meC4rQor4LmA4LiZ4LmJ4LitCivguYDguJnguLIKK+C5gOC4meC5iOC4sgor4LmA4LiZ4Liy4Lin4LiZ4Li04LiVCivguYDguJnguLTguJkKK+C5gOC4meC4tOC5iOC4mQor4LmA4LiZ4Li04LiaCivguYDguJnguLXguKLguIcKK+C5gOC4meC4teC4ouC4mQor4LmA4LiZ4Li14Lii4LihCivguYDguJnguLXguKLguKMKK+C5gOC4meC4teC4ouC4o+C4l+C4uOC4geC4guC5jAor4LmA4LiZ4Li14Lii4Lij4LmA4LiX4LioCivguYDguJnguLXguKLguKPguJnguLLguJcKK+C5gOC4meC4t+C5ieC4rQor4LmA4LiZ4Li34Lit4LiHCivguYDguJnguLfguYjguK3guIcKK+C5gOC4meC4t+C4reC4ogor4LmA4LiZ4Li34LmJ4Lit4LmA4Lii4Li34LmJ4LitCivguYHguJnguYgKK+C5geC4meC5iOC4hwor4LmB4LiZ4LmI4LiZCivguYHguJnguJoKK+C5geC4meC4oQor4LmB4LiZ4LinCivguYHguJnguYjguKcKK+C5geC4meC4sAor4LmB4LiZ4Liw4LmB4Lir4LiZCivguYLguJkKK+C5guC4meC5ieC4lQor4LmC4LiZ4LiZCivguYLguJnguYjguJkKK+C5guC4meC5ieC4mQor4LmC4LiZ4LmA4LiZCivguYLguJnguYDguJrguYDguKXguLXguKLguKEKK+C5guC4meC5ieC4oQor4LmC4LiZ4Lih4Lie4Lij4Lij4LiTCivguYLguJnguKPguLIKK+C5guC4meC4o+C4tQor4LmD4LiZCivguYTguJkKK+C5hOC4meC4leC5jOC4hOC4peC4seC4mgor4LmE4LiZ4LmC4LiV4Lij4LmA4LiI4LiZCivguYTguJnguJfguYzguITguKXguLHguJoKK+C5hOC4meC4peC4reC4mQor4LmE4LiZ4Lit4Liy4LiL4Li14LiZCivguYTguJnguYLguK3guYDguJrguLXguKLguKEKK+C4mgor4Lia4LmICivguJrguIEKK+C4muC4hwor4Lia4LmI4LiHCivguJrguIfguIHguYwKK+C4muC5iuC4h+C5gOC4muC5iuC4hwor4Lia4LiH4Liq4Li44LmMCivguJrguIfguK3guLHguJrguJrguIfguKPguLIKK+C4muC5iOC4h+C4reC4seC4muC4muC5iOC4h+C4o+C4sgor4Lia4LiPCivguJrguJQKK+C4muC4lOC4tOC4meC4l+C4o+C5jAor4Lia4LiU4Li1CivguJrguJYKK+C4muC4lwor4Lia4LiX4LiZ4Li1CivguJrguJfguJrguIfguIHguIoKK+C4muC4l+C4muC4h+C4quC4uOC5jAor4Lia4LiX4Lia4Li54Lij4LiT4LmMCivguJrguJfguJ7guLHguJnguJjguYwKK+C4muC4l+C4oOC4suC4iuC4meC5jAor4Lia4LiX4Lig4Liy4LiK4LiZ4Li14Lii4LmMCivguJrguJfguKHguLLguKXguKLguYwKK+C4muC4l+C4o+C4seC4igor4Lia4LiX4Lin4LmA4Lij4LioCivguJrguJfguKfguKXguLHguI3guIrguYwKK+C4muC4l+C4p+C4suC4owor4Lia4LiX4Lio4Lij4Li1CivguJrguJfguKjguLHguJ7guJfguYwKK+C4muC4l+C4quC4luC4suC4mQor4Lia4LiX4Liy4Lih4Lie4Li44LiKCivguJrguYLguJfguJkKK+C4muC4mQor4Lia4LmI4LiZCivguJrguJ7guLTguJXguKMKK+C4muC4nuC4tOC4mAor4Lia4LmI4LihCivguJrguKPguKEKK+C4muC4o+C4oeC4seC4leC4luC5jAor4Lia4Lij4Lij4LiB4Lin4LiUCivguJrguKPguKPguIjguIcKK+C4muC4o+C4o+C4iOC4luC4o+C4k+C5jAor4Lia4Lij4Lij4LiI4LiaCivguJrguKPguKPguIjguKfguJoKK+C4muC4o+C4o+C4iOC4uAor4Lia4Lij4Lij4LmA4LiI4Li04LiUCivguJrguKPguKPguJMKK+C4muC4o+C4o+C4k+C4suC4geC4suC4owor4Lia4Lij4Lij4LiT4Liy4LiE4LihCivguJrguKPguKPguJPguLLguJjguLTguIHguLLguKMKK+C4muC4o+C4o+C4k+C4suC4meC4uOC4geC4o+C4oQor4Lia4Lij4Lij4LiT4Liy4Lij4Lix4LiB4Lip4LmMCivguJrguKPguKPguJPguLLguKPguLHguIHguKnguKjguLLguKrguJXguKPguYwKK+C4muC4o+C4o+C4lOC4sgor4Lia4Lij4Lij4LiU4Liy4LiBCivguJrguKPguKPguJTguLLguKjguLHguIHguJTguLTguYwKK+C4muC4o+C4o+C4leC4suC4meC4tuC4gQor4Lia4Lij4Lij4LiW4LijCivguJrguKPguKPguJfguKEKK+C4muC4o+C4o+C4l+C4seC4lAor4Lia4Lij4Lij4LiX4Lix4LiaCivguJrguKPguKPguJfguLLguJkKK+C4muC4o+C4o+C4l+C4uOC4gQor4Lia4Lij4Lij4LmA4LiX4LiyCivguJrguKPguKPguYDguJfguLfguK3guIcKK+C4muC4o+C4o+C4ngor4Lia4Lij4Lij4Lie4LmMCivguJrguKPguKPguJ7guIrguLIKK+C4muC4o+C4o+C4nuC4iuC4tOC4lQor4Lia4Lij4Lij4Lie4LiVCivguJrguKPguKPguKLguIcKK+C4muC4o+C4o+C4ouC4h+C4hOC5jAor4Lia4Lij4Lij4Lii4LmA4Lin4LiB4Lip4LiB4LmMCivguJrguKPguKPguKLguLLguIHguLLguKgKK+C4muC4o+C4o+C4ouC4suC4ogor4Lia4Lij4Lij4Lil4Lix4LiiCivguJrguKPguKPguKXguLLguKIKK+C4muC4o+C4o+C4peC4uAor4Lia4Lij4Lij4LmA4Lil4LiHCivguJrguKPguKPguYLguKXguKEKK+C4muC4o+C4o+C4qeC4seC4lwor4Lia4Lij4Lij4Liq4LiaCivguJrguKPguKPguKrguJ4KK+C4muC4o+C4o+C4quC4oQor4Lia4Lij4Lij4Liq4Liy4LiZCivguJrguKPguKPguKrguLLguKMKK+C4muC4o+C4o+C4q+C4suC4mQor4Lia4Lij4Lij4Lir4Liy4LijCivguJrguKPguLHguJQKK+C4muC4o+C4seC5iOC4meC4lOC4tQor4Lia4Lij4Lix4Lio4Lin4LmMCivguJrguKPguLLguIHguKPguKEKK+C4muC4o+C4suC4l+C4uOC4geC4o+C4sgor4Lia4Lij4Liy4Lil4Li1CivguJrguKPguLTguIHguKPguKEKK+C4muC4o+C4tOC4geC4o+C4o+C4oQor4Lia4Lij4Li04LiB4Lix4LibCivguJrguKPguLTguIHguLLguKMKK+C4muC4o+C4tOC4guC4sgor4Lia4Lij4Li04LiC4Liy4LijCivguJrguKPguLTguITguJPguKvguYwKK+C4muC4o+C4tOC4iOC4suC4hAor4Lia4Lij4Li04LiI4Liy4Lij4LiBCivguJrguKPguLTguIjguLLguKPguLTguIHguLIKK+C4muC4o+C4tOC5gOC4ieC4lwor4Lia4Lij4Li04LiK4LiZCivguJrguKPguLTguJPguLLguKLguIEKK+C4muC4o+C4tOC4lOC4iOC5jAor4Lia4Lij4Li04Lia4LiXCivguJrguKPguLTguJrguKfguKPguJPguYwKK+C4muC4o+C4tOC4muC4suC4pQor4Lia4Lij4Li04Lia4Li54Lij4LiT4LmMCivguJrguKPguLTguJ7guJnguJjguYwKK+C4muC4o+C4tOC4nuC4seC4leC4owor4Lia4Lij4Li04Lie4Lix4LiZ4LiY4LmMCivguJrguKPguLTguJ7guLLguIrguIEKK+C4muC4o+C4tOC4nuC4suC4iuC4tOC4geC4sgor4Lia4Lij4Li04Lie4Liy4LiK4Li1CivguJrguKPguLTguJ7guLLguKMKK+C4muC4o+C4tOC4oOC4seC4k+C4keC5jAor4Lia4Lij4Li04Lig4Liy4LipCivguJrguKPguLTguYLguKDguIQKK+C4muC4o+C4tOC4oeC4suC4qgor4Lia4Lij4Li04Lii4Liy4LiiCivguJrguKPguLTguKPguKEKK+C4muC4o+C4tOC4o+C4seC4geC4qeC5jAor4Lia4Lij4Li04Lij4Liy4LiKCivguJrguKPguLTguKfguKPguKPguJUKK+C4muC4o+C4tOC4p+C4suC4owor4Lia4Lij4Li04Lin4Liy4LiqCivguJrguKPguLTguYDguKfguJMKK+C4muC4o+C4tOC4qeC4geC4suC4owor4Lia4Lij4Li04Lip4Lix4LiXCivguJrguKPguLTguKrguIrguJkKK+C4muC4o+C4tOC4quC4uOC4l+C4mOC4tOC5jAor4Lia4Lij4Li04Lir4Liy4LijCivguJrguKPguLTguKvguLLguKoKK+C4muC4o+C4t+C5i+C4rQor4Lia4Lik4LiH4LiE4LieCivguJrguKXguYfguK3guIEKK+C4muC4p+C4gQor4Lia4Lin4LiHCivguJrguYjguKfguIcKK+C4muC4p+C4igor4Lia4Lin4LiZCivguJrguYnguKfguJkKK+C4muC4p+C4mgor4Lia4Lin4LihCivguJrguYrguKfguKIKK+C4muC4p+C4owor4Lia4Lin4Lij4LmC4LiV4LiO4LiBCivguJrguKvguKXguLTguYjguKEKK+C4muC4rQor4Lia4LmI4LitCivguJrguYnguK0KK+C4muC4reC4gQor4Lia4Lit4LiHCivguJrguYjguK3guIcKK+C4muC5ieC4reC4hwor4Lia4LmK4Lit4LiHCivguJrguYrguK3guIfguYYKK+C4muC5ieC4reC4h+C4leC4sOC4peC4sgor4Lia4LmJ4Lit4LiH4LmB4Lia4LmK4LinCivguJrguK3guIfguKvguKXguLIKK+C4muC4reC4lAor4Lia4Lit4LiZCivguJrguYjguK3guJkKK+C4muC4reC4meC4peC4suC4ouC4geC4o+C4sOC4q+C4meC4gQor4Lia4Lit4LiaCivguJrguYnguK3guKEKK+C4muC5i+C4reC4oQor4Lia4Lit4Lih4Lia4LmMCivguJrguYjguK3guKIKK+C4muC5i+C4reC4ogor4Lia4LmI4Lit4Lii4LmGCivguJrguK3guKPguLDguYDguJ7guYfguJQKK+C4muC4reC4o+C4sOC4oeC4suC4mQor4Lia4Lit4LilCivguJrguK3guKXguKXguLnguJkKK+C4muC5ieC4reC4q+C4uOC5ieC4mQor4Lia4LmK4LiwCivguJrguLDguInguYjguK0KK+C4muC4sOC4q+C4oeC4teC5iAor4Lia4Lix4LiBCivguJrguLHguITguYDguJXguKPguLUKK+C4muC4seC4hwor4Lia4Lix4LmJ4LiHCivguJrguLHguIfguIHguLDguYLguKUKK+C4muC4seC4h+C4geC4seC4lAor4Lia4Lix4LiH4LmA4LiB4Li04LiUCivguJrguLHguIfguYLguIHguKPguKLguJXguLHguKfguJzguLnguYkKK+C4muC4seC4h+C5guC4geC4o+C4ouC4leC4seC4p+C5gOC4oeC4teC4ogor4Lia4Lix4LiH4LmC4LiB4Lil4LiZCivguJrguLHguIfguITguJkKK+C4muC4seC4h+C4hOC4oQor4Lia4Lix4LiH4LiE4LilCivguJrguLHguIfguITguKfguKMKK+C4muC4seC4h+C4hOC4seC4mgor4Lia4Lix4LiH4LiE4Lix4LilCivguJrguLHguIfguYLguITguKXguJkKK+C4muC4seC4h+C5geC4l+C4o+C4gQor4Lia4Lix4LiH4Lin4Liy4LiiCivguJrguLHguIfguYDguKfguLXguKLguJkKK+C4muC4seC4h+C4quC4uOC4geC4uOC4pQor4Lia4Lix4LiH4Liq4Li44LiB4Li54Lil4Li04LiBCivguJrguLHguIfguKrguLnguKPguKLguYwKK+C4muC4seC4h+C4q+C4p+C4mQor4Lia4Lix4LiH4Lir4Lin4LiZ4LiE4Lin4Lix4LiZCivguJrguLHguIfguYDguKvguJXguLgKK+C4muC4seC4h+C5gOC4q+C4tOC4mQor4Lia4Lix4LiH4LmA4Lir4Li14Lii4LiZCivguJrguLHguIfguK3guKMKK+C4muC4seC4h+C4reC4p+C4iAor4Lia4Lix4LiH4Lit4Liy4LiICivguJrguLHguIfguK3guLTguIcKK+C4muC4seC4h+C4reC4ueC4owor4Lia4Lix4LiH4LmA4Lit4Li04LiNCivguJrguLHguI3guIjguIEKK+C4muC4seC4jeC4iOC4o+C4h+C4hOC5jAor4Lia4Lix4LiN4LiK4LijCivguJrguLHguI3guIrguLIKK+C4muC4seC4jeC4iuC4tQor4Lia4Lix4LiN4LiN4Lix4LiV4Li0CivguJrguLHguI3guKvguLIKK+C4muC4seC4jwor4Lia4Lix4LiQ4Lii4Liy4Lie4Lik4LiVCivguJrguLHguJPguJHguKMKK+C4muC4seC4k+C4keC4tOC4lQor4Lia4Lix4LiT4LiR4Li04LiV4Lii4LmMCivguJrguLHguJPguJHguLgKK+C4muC4seC4k+C4keC4ueC4owor4Lia4Lix4LiT4LmA4LiR4Liy4Liw4LiB4LmMCivguJrguLHguJPguJPguLLguKoKK+C4muC4seC4k+C4o+C4qgor4Lia4Lix4LiT4Lij4Liq4Li1CivguJrguLHguJQKK+C4muC4seC4lOC4geC4o+C4tQor4Lia4Lix4LiU4LiL4LiaCivguJrguLHguJTguJrguIcKK+C4muC4seC4lOC4quC4tQor4Lia4Lix4LiV4LijCivguJrguLHguJfguKHguYwKK+C4muC4seC4mQor4Lia4Lix4LmI4LiZCivguJrguLHguYnguJkKK+C4muC4seC4meC4geC4p+C4lAor4Lia4Lix4LiZ4LiI4Lin4LiaCivguJrguLHguJnguIjguK3guKIKK+C4muC4seC4meC4lOC4pQor4Lia4Lix4LiZ4LiU4Liy4LilCivguJrguLHguJnguYDguJTguLTguJkKK+C4muC4seC4meC5guC4lOC4ogor4Lia4Lix4LiZ4LmE4LiUCivguJrguLHguJnguJfguLLguKIKK+C4muC4seC4meC4l+C4tuC4gQor4Lia4Lix4LiZ4LiX4Li24LiHCivguJrguLHguJnguYDguJfguLTguIcKK+C4muC4seC4meC4ouC4sOC4muC4seC4meC4ouC4seC4hwor4Lia4Lix4LiZ4Lil4Li34LitCivguJrguLHguJnguYDguKvguLTguJkKK+C4muC4seC4m+C4nOC4suC4quC4sAor4Lia4Lix4LieCivguJrguLHguJ7guIrguLIKK+C4muC4seC4nuC4iuC4tOC4lQor4Lia4Lix4Lie4Lie4Liy4LiKCivguJrguLHguJ7guJ7guLLguIrguJnguYwKK+C4muC4seC4nuC4nuC4suC4iuC4meC4teC4ouC4geC4o+C4o+C4oQor4Lia4Lix4LilCivguJrguLHguKXguKXguJ4KK+C4muC4seC4peC4peC4seC4h+C4geC5jAor4Lia4Lix4Lil4Lil4Li54LiZCivguJrguLHguKXguYDguKXguYjguJXguYwKK+C4muC4seC4peC4p+C4sAor4Lia4Lix4LinCivguJrguLHguKfguYDguJTguLfguYjguK0KK+C4muC4seC4p+C4leC4ueC4oQor4Lia4Lix4Lin4Lia4LiBCivguJrguLHguKfguKrguKfguKPguKPguITguYwKK+C4muC4sgor4Lia4LmI4LiyCivguJrguYnguLIKK+C4muC5ieC4suC5hgor4Lia4Liy4LiBCivguJrguLLguIcKK+C4muC5iOC4suC4hwor4Lia4LmJ4Liy4LiHCivguJrguLLguIfguIHguK3guIEKK+C4muC4suC4h+C4quC4uAor4Lia4Liy4LiI4LiBCivguJrguLLguIjguKPguLXguKLguYwKK+C4muC4suC4iOC4tOC4geC4sgor4Lia4Liy4LiL4Liy4Lij4LmMCivguJrguLLguIvguLTguKXguKXguLHguKoKK+C4muC4suC4lAor4Lia4Liy4LiU4LiX4Liw4LiI4Li04LiVCivguJrguLLguJTguJfguLDguJ7guLTguKkKK+C4muC4suC4lOC4l+C4sOC4ouC4seC4gQor4Lia4Liy4LiU4Lir4Lih4Liy4LiiCivguJrguLLguJTguYTguKvguKEKK+C4muC4suC4lOC4suC4pQor4Lia4Liy4LmB4LiU4LiHCivguJrguLLguJUKK+C4muC4suC4leC4owor4Lia4Liy4LiXCivguJrguLLguJfguJoKK+C4muC4suC4l+C4muC4h+C4geC4igor4Lia4Liy4LiX4Lia4Lij4Li04LiI4Liy4Lij4Li04LiB4LiyCivguJrguLLguJfguKfguLTguJbguLUKK+C4muC4suC4l+C4quC4geC4uOC4k+C4tQor4Lia4Liy4LiX4Lir4Lil4Lin4LiHCivguJrguLLguJfguLLguJjguLbguIEKK+C4muC4suC4l+C4uOC4geC4sgor4Lia4Liy4LiZCivguJrguYnguLLguJkKK+C4muC4suC4meC4oeC4h+C4hOC4pQor4Lia4Liy4LiZ4Li14Lii4LiwCivguJrguYnguLLguJrguYjguJkKK+C4muC5ieC4suC4muC5i+C4sgor4Lia4Liy4Lia4Li1CivguJrguLLguJrguLkKK+C4muC4suC4muC4ueC4mQor4Lia4Liy4LibCivguJrguLLguJvguYDguITguKPguLLguLDguKvguYwKK+C4muC4suC4m+C4l+C4pOC4qeC4juC4tQor4Lia4Liy4Lib4Lih4Li04LiV4LijCivguJrguLLguJvguKfguLLguJcKK+C4muC4suC4nuC4gQor4Lia4LmI4Liy4Lie4LiBCivguJrguLLguKIKK+C4muC5iOC4suC4ogor4Lia4LmJ4Liy4LiiCivguJrguLLguKLguKrguLjguKvguKPguLUKK+C4muC4suC5gOC4ouC4teC4ogor4Lia4Liy4LmC4LiiCivguJrguLLguKPguYwKK+C4muC4suC4o+C4meC4tQor4Lia4Liy4Lij4LmM4Lia4Li04LiE4Li04LinCivguJrguLLguKPguYzguYDguJrguKUKK+C4muC4suC4o+C4oeC4tQor4Lia4Liy4Lij4LmM4LmA4Lij4LilCivguJrguLLguKPguYzguYDguKXguKLguYwKK+C4muC4suC4o+C4reC4oeC4tOC5gOC4leC4reC4o+C5jAor4Lia4LmJ4Liy4Lij4Liw4Lia4Li44LmI4LiZCivguJrguYnguLLguKPguYjguLLguJfguYjguLIKK+C4muC4suC5gOC4o+C4teC4ouC4mQor4Lia4Liy4LmA4Lij4Li14Lii4LihCivguJrguLLguKUKK+C4muC4suC4peC4tQor4Lia4LmI4Liy4LinCivguJrguYjguLLguKfguILguLjguJkKK+C4muC4suC4qAor4Lia4Liy4Lio4LiB4LmMCivguJrguLLguKrguYDguIHguJXguJrguK3guKUKK+C4muC5ieC4suC4q+C4oeC4uQor4Lia4Liy4Lir4Lil4Li1CivguJrguYnguLLguKvguKfguYjguLIKK+C4muC5iOC4suC4reC5ieC4suC4ogor4Lia4LmL4LizCivguJrguLPguYDguJfguLTguIcKK+C4muC4s+C4meC4suC4jQor4Lia4Liz4Lia4Lin4LiHCivguJrguLPguJrguLHguJQKK+C4muC4s+C5guC4mgor4Lia4Liz4LmC4Lia4LiiCivguJrguLPguYLguJrguKUKK+C4muC4s+C5gOC4nuC5h+C4jQor4Lia4Liz4Lij4Liy4LiaCivguJrguLPguKPguLLguKgKK+C4muC4s+C4o+C4uOC4hwor4Lia4Liz4Lij4Li5CivguJrguLPguYDguKPguK0KK+C4muC4s+C4q+C4ouC4seC4lAor4Lia4Liz4LmA4Lir4LiZ4LmH4LiICivguJrguLQKK+C4muC4tOC4geC4uQor4Lia4Li04LiQCivguJrguLTguJQKK+C4muC4tOC4lOC4owor4Lia4Li04LiU4Lir4Lil4LmI4LiyCivguJrguLTguJTguLIKK+C4muC4tOC4leC4uAor4Lia4Li04LiV4Li44LiI4LiJ4LiyCivguJrguLTguJXguLjguKPguIfguITguYwKK+C4muC4tOC4leC4uOC5gOC4o+C4qAor4Lia4Li04LiV4Li44LilCivguJrguLTguJXguLjguKXguLIKK+C4muC4tOC4leC4uOC4peC4suC4meC4tQor4Lia4Li04LiZCivguJrguLTguYjguJkKK+C4muC4tOC4meC4ouC4sgor4Lia4Li04Lil4LmA4Lil4Li14Lii4LiUCivguJrguLTguKfguYDguKPguJXguJXguYwKK+C4muC4tOC4qOC4suC4iAor4Lia4Li04Liq4Lih4Lix4LiXCivguJrguLXguYkKK+C4muC4teC4geC4uQor4Lia4Li14LiR4LiyCivguJrguLXguJXguLIKK+C4muC4teC4mgor4Lia4Li14LmA4Lii4LioCivguJrguLbguIEKK+C4muC4tuC4geC4muC4tuC4mQor4Lia4Li24LiHCivguJrguLbguYjguIcKK+C4muC4tuC5ieC4hwor4Lia4Li4CivguJrguLjguIEKK+C4muC4uOC4hOC4hOC4pQor4Lia4Li44LiE4Lil4Liy4LiB4LijCivguJrguLjguITguKXguLLguJjguLTguKnguJDguLLguJkKK+C4muC4uOC4hOC4peC4tOC4gQor4Lia4Li44LiHCivguJrguLjguYjguIcKK+C4muC4uOC5ieC4hwor4Lia4Li44LiNCivguJrguLjguI3guYDguILguJUKK+C4muC4uOC4jeC4jeC4suC4meC4uOC4oOC4suC4ngor4Lia4Li44LiN4LiN4Liy4Lig4Li04LiZ4Li04Lir4Liy4LijCivguJrguLjguI3guI3guLLguKDguLTguKrguLHguIfguILguLLguKMKK+C4muC4uOC4jeC4meC4tOC4mOC4tAor4Lia4Li44LiN4Lij4Liy4Lio4Li1CivguJrguLjguI3guKTguJfguJjguLTguYwKK+C4muC4uOC4k+C4keC4o+C4tOC4gQor4Lia4Li44LiT4Lih4Li1CivguJrguLjguJPguKLguYwKK+C4muC4uOC4leC4owor4Lia4Li44LiV4Lij4LiY4Lij4Lij4LihCivguJrguLjguJXguKPguLIKK+C4muC4uOC4leC4o+C4tQor4Lia4Li44LiV4Lij4Li14LiV4Lij4Liw4Liq4Li44LihCivguJrguLjguJbguLjguIrguJkKK+C4muC4uOC4l+C4hOC4pQor4Lia4Li44LmL4LiZCivguJrguLjguJnguJnguLDguJrguLjguJnguJnguLHguIcKK+C4muC4uOC4meC4meC4suC4hAor4Lia4Li44LiaCivguJrguLjguJ7guYDguJ7guJnguLTguKfguLLguKrguLLguJnguLjguKrguJXguLTguI3guLLguJMKK+C4muC4uOC4nuC5gOC4nuC4quC4seC4meC4meC4tOC4p+C4suC4qgor4Lia4Li44Lie4LmC4LieCivguJrguLjguJ/guYDguJ/guYjguJXguYwKK+C4muC4uOC5i+C4oQor4Lia4Li44LmI4Lih4Lia4LmI4Liy4LihCivguJrguLjguYnguKIKK+C4muC4uOC5ieC4ouC4m+C4suC4gQor4Lia4Li44Lij4LiT4LiwCivguJrguLjguKPguJ7guIHguLjguKjguKUKK+C4muC4uOC4o+C4nuC4l+C4tOC4qAor4Lia4Li44Lij4Lie4LiZ4Li04Lih4Li04LiVCivguJrguLjguKPguJ7guJrguJcKK+C4muC4uOC4o+C4nuC4oOC4seC4l+C4o+C4muC4lwor4Lia4Li44Lij4Lie4Liy4LiI4Liy4Lij4Lii4LmMCivguJrguLjguKPguJ7guLLguKnguLLguJIKK+C4muC4uOC4o+C4sAor4Lia4Li44Lij4Lix4LiV4LiW4Li04Lih4LiX4Li04LioCivguJrguLjguKPguLLguJMKK+C4muC4uOC4o+C4suC4k+C4l+C4uOC4leC4tOC4ouC4tOC4geC4sgor4Lia4Li44Lij4Li04LiZ4LiX4Lij4LmMCivguJrguLjguKPguLTguKHguJfguLTguKgKK+C4muC4uOC4o+C4tOC4oeC4nuC4o+C4o+C4qeC4sgor4Lia4Li44Lij4Li04Lih4Liq4Li04LiX4LiY4Li0CivguJrguLjguKPguLUKK+C4muC4uOC4o+C4uOC4qQor4Lia4Li44Lij4Li44Lip4LmC4LiX4LipCivguJrguLjguKPguLjguKnguJjguKPguKPguKEKK+C4muC4uOC5gOC4o+C4oOC4ngor4Lia4Li44LmA4Lij4Lig4Lix4LiVCivguJrguLjguYLguKPguJfguLHguYjguIcKK+C4muC4uOC4qeC4geC4owor4Lia4Li44Lip4Lia4LiBCivguJrguLjguKnguJrguIcKK+C4muC4uOC4qeC4muC4seC4mQor4Lia4Li44Lip4Lia4LiyCivguJrguLjguKnguJrguLLguKHguLTguJnguJXguKPguLIKK+C4muC4uOC4qeC4m+C4o+C4suC4hAor4Lia4Li44Lip4Lib4LiwCivguJrguLjguKnguKIKK+C4muC4uOC4qeC4ouC5jAor4Lia4Li44Lip4Lii4LmM4LiZ4LmJ4Liz4LiX4Lit4LiHCivguJrguLjguKnguKPguLLguITguLHguKEKK+C4muC4uOC4q+C4h+C4hwor4Lia4Li44Lir4LiH4Lix4LiZCivguJrguLjguKvguIfguLIKK+C4muC4uOC4q+C4o+C4hwor4Lia4Li44Lir4Lij4Li14LmICivguJrguLjguKvguKPguLXguYjguJ7guKPguLDguKPguLLguKEKK+C4muC4uOC4q+C4peC4seC4mQor4Lia4Li54LmICivguJrguLnguYkKK+C4muC4ueC5igor4Lia4Li54LiK4LiZ4Li14Lii4Liq4LiW4Liy4LiZCivguJrguLnguIrguLIKK+C4muC4ueC4iuC4tOC5guC4lAor4Lia4Li54LiK4Li04LiVCivguJrguLnguJQKK+C4muC4ueC4lOC4uQor4Lia4Li54LijCivguJrguLnguKPguJPguYwKK+C4muC4ueC4o+C4k+C4sAor4Lia4Li54Lij4LieCivguJrguLnguKPguJ7guLIKK+C4muC4ueC4o+C4nuC4suC4iOC4suC4o+C4ouC5jAor4Lia4Li54Lij4Li1CivguYDguJrguYkKK+C5gOC4muC5igor4LmA4Lia4LiE4Lit4LiZCivguYDguJrguYjguIcKK+C5gOC4muC4h+C4geC4suC4peC4sOC4meC4tQor4LmA4Lia4LmK4LiI4Li14LmLCivguYDguJrguI3guIHguLLguJnguLUKK+C5gOC4muC4jeC4iAor4LmA4Lia4LiN4LiI4LiBCivguYDguJrguI3guIjguKHguLLguKgKK+C5gOC4muC4jeC4iOC4sgor4LmA4Lia4LiN4LiI4Liy4LiH4LiE4LmMCivguYDguJrguI3guI3guLIKK+C5gOC4muC4jeC4nuC4suC4lAor4LmA4Lia4LmH4LiUCivguYDguJrguYfguJTguYDguJXguKXguYfguJQKK+C5gOC4muC5h+C4lOC5gOC4quC4o+C5h+C4iAor4LmA4Lia4LiV4LiyCivguYDguJrguJnguIvguLTguJkKK+C5gOC4muC4meC5hOC4i+C4meC5jAor4LmA4Lia4Lij4LiBCivguYDguJrguKPguLTguKXguYDguKXguLXguKLguKEKK+C5gOC4muC4o+C4teC4ouC4mQor4LmA4Lia4LmA4Lij4LmI4LiV4LmMCivguYDguJrguKoKK+C5gOC4muC4quC4muC4reC4pQor4LmA4Lia4LmJ4LitCivguYDguJrguK3guKPguYwKK+C5gOC4muC4reC4o+C5jOC4hOC4teC5gOC4peC4teC4ouC4oQor4LmA4Lia4LmJ4Lit4LmA4Lij4LmI4LitCivguYDguJrguYnguK3guYDguKPguYjguK3guYDguJfguYjguK0KK+C5gOC4muC5ieC4reC5gOC4o+C4tOC5iOC4oQor4LmA4Lia4LmJ4Lit4LmA4Lij4Li04LmI4Lih4LmA4LiX4Li04LmI4LihCivguYDguJrguK3guLAKK+C5gOC4muC4sAor4LmA4Lia4LiyCivguYDguJrguYnguLIKK+C5gOC4muC4suC4o+C4suC4kwor4LmA4Lia4Liy4LiwCivguYDguJrguLTguIEKK+C5gOC4muC4tOC5iOC4hwor4LmA4Lia4Li14LmJ4LiiCivguYDguJrguLXguKLguIEKK+C5gOC4muC4teC5iOC4ouC4hwor4LmA4Lia4Li14Lii4LiUCivguYDguJrguLXguKLguJkKK+C5gOC4muC4teC4ouC4o+C5jAor4LmA4Lia4Li14LmJ4Lii4LinCivguYDguJrguLfguK0KK+C5gOC4muC4t+C5iOC4rQor4LmA4Lia4Li34LmJ4LitCivguYDguJrguLfguYnguK3guIcKK+C5gOC4muC4t+C4reC4mQor4LmB4LiaCivguYHguJrguYkKK+C5geC4muC4gQor4LmB4Lia4LiE4LiX4Li14LmA4Lij4Li14LiiIEUKK+C5geC4muC5iOC4hwor4LmB4Lia4LiH4LiE4LmMCivguYHguJrguJTguKHguLTguJnguJXguLHguJkKK+C5geC4muC4leC5gOC4leC4reC4o+C4teC5iAor4LmB4Lia4LiZCivguYHguJrguJnguYLguIgKK+C5geC4muC4mgor4LmB4Lia4LmH4LiaCivguYHguJrguKPguIEKK+C5geC4muC5gOC4o+C4teC4ouC4oQor4LmB4Lia4Lir4Lil4LiyCivguYHguJrguLAKK+C5geC4muC4sOC5geC4iwor4LmC4LiaCivguYLguJrguYkKK+C5guC4muC5iwor4LmC4Lia4LiBCivguYLguJrguIHguILguKPguJPguLUKK+C5guC4muC4geC4teC5iQor4LmC4Lia4LiK4Li44LiBCivguYLguJrguJTguIEKK+C5guC4muC4lQor4LmC4Lia4LiV4Lix4LmL4LiZCivguYLguJrguJnguLHguKoKK+C5guC4muC5iuC5gOC4muC5igor4LmC4Lia4LiiCivguYLguJrguKPguKHguLXguJkKK+C5guC4muC4o+C4reC4mQor4LmC4Lia4Lij4Liy4LiTCivguYLguJrguKfguYzguKXguLTguYjguIcKK+C5guC4muC4quC4luC5jAor4LmD4LiaCivguYPguJrguYkKK+C5g+C4muC4o+C4sOC4geC4sgor4LmE4Lia4LmI4LmGCivguYTguJrguITguLLguKPguYzguJrguK3guYDguJnguJUKK+C5hOC4muC5gOC4muC4tOC4pQor4LibCivguJvguIEKK+C4m+C4geC4leC4tAor4Lib4LiB4Lij4LiT4LmMCivguJvguIHguKPguJPguLHguKEKK+C4m+C4geC4suC4owor4Lib4LiB4Li04LiT4LiB4LiwCivguJvguIHguLXguKPguJPguLHguKEKK+C4m+C5guC4geC4j+C4tAor4Lib4LiE4Li44LiTCivguJvguIcKK+C4m+C5iOC4hwor4Lib4LiH4Lib4Lix4LiHCivguJvguIrguLLguJrguJTguLUKK+C4m+C4juC4pQor4Lib4LiP4Lix4LiBCivguJvguI/guLTguIHguKPguJPguYwKK+C4m+C4j+C4tOC4geC4o+C4o+C4oQor4Lib4LiP4Li04LiB4Lij4Lij4Lih4Liq4LiH4LiE4Lij4Liy4LihCivguJvguI/guLTguIHguLLguKPguLAKK+C4m+C4j+C4tOC4geC4tOC4o+C4tOC4ouC4sgor4Lib4LiP4Li04LiB4Li54LilCivguJvguI/guLTguITguITguKvguLTguJUKK+C4m+C4j+C4tOC4hOC4oQor4Lib4LiP4Li04LiE4Liy4Lir4LiBCivguJvguI/guLTguIbguLAKK+C4m+C4j+C4tOC4iOC4iOC4quC4oeC4uOC4m+C4muC4suC4lwor4Lib4LiP4Li04LiK4Li14Lin4LiZ4LiwCivguJvguI/guLTguI3guI3guLIKK+C4m+C4j+C4tOC4jeC4suC4kwor4Lib4LiP4Li04LiX4Li04LiZCivguJvguI/guLTguJrguJYKK+C4m+C4j+C4tOC4muC4seC4leC4tAor4Lib4LiP4Li04Lib4LiX4LiyCivguJvguI/guLTguJvguLHguIHguKnguYwKK+C4m+C4j+C4tOC4m+C4seC4mQor4Lib4LiP4Li04Lib4Li44LiI4LiJ4Liy4Lie4Lii4Liy4LiB4Lij4LiT4LmMCivguJvguI/guLTguJvguLjguIjguInguLLguKfguLLguJfguLUKK+C4m+C4j+C4tOC4nuC4seC4l+C4mOC5jAor4Lib4LiP4Li04Lie4Liy4LiB4Lii4LmMCivguJvguI/guLTguKDguLLguIQKK+C4m+C4j+C4tOC4oOC4suC4kwor4Lib4LiP4Li04Lig4Liy4LiT4LiB4Lin4Li1CivguJvguI/guLTguKDguLLguJPguJvguI/guLTguKrguLHguKHguKDguLTguJfguLIKK+C4m+C4j+C4tOC4oOC4suC4k+C5guC4p+C4q+C4suC4owor4Lib4LiP4Li04Lih4LiyCivguJvguI/guLTguKHguLLguIHguKMKK+C4m+C4j+C4tOC4ouC4suC4ogor4Lib4LiP4Li04Lii4Li44LiX4LiY4LmMCivguJvguI/guLTguKPguJ4KK+C4m+C4j+C4tOC4o+C4ueC4mwor4Lib4LiP4Li04LmC4Lil4LihCivguJvguI/guLTguKfguLHguJXguLQKK+C4m+C4j+C4tOC4p+C4suC4lQor4Lib4LiP4Li04Lin4Liy4LiXCivguJvguI/guLTguYDguKfguJgKK+C4m+C4j+C4tOC4quC4meC4mOC4tAor4Lib4LiP4Li04Liq4Lin4LiwCivguJvguI/guLTguKrguLHguIfguILguKPguJPguYwKK+C4m+C4j+C4tOC4quC4seC4meC4luC4suC4owor4Lib4LiP4Li04Liq4Lix4Lih4Lig4Li04LiX4LiyCivguJvguI/guLTguYDguKrguJgKK+C4m+C4kOC4nuC4tQor4Lib4LiQ4LihCivguJvguJDguKHguJTguLjguKrguLTguJUKK+C4m+C4kOC4oeC4nuC4ouC4suC4muC4suC4pQor4Lib4LiQ4Lih4Liq4Lih4LmC4Lie4LiY4Li0CivguJvguJDguKHguLLguKrguLLguJIKK+C4m+C4kOC4p+C4tQor4Lib4LiT4LiVCivguJvguJPguLLguKEKK+C4m+C4k+C4tOC4mOC4suC4mQor4Lib4LiT4Li04LiY4Li0CivguJvguJPguLXguJUKK+C4m+C4lAor4Lib4LiU4LmC4Lib4LmJCivguJvguJTguLTguKfguKPguLHguJTguLIKK+C4m+C4leC4seC4leC4o+C4tQor4Lib4LiV4Li0CivguJvguJXguLTguKLguLHguJUKK+C4m+C4luC4nuC4tQor4Lib4LiW4Lih4Lix4LiHCivguJvguJbguKfguLUKK+C4m+C4l+C4seC4geC4guC4tOC4kwor4Lib4LiX4Lix4LiP4LiQ4Liy4LiZCivguJvguJfguLHguKrguJbguLLguJkKK+C4m+C4l+C4suC4mQor4Lib4LiX4Liy4LiZ4Li44LiB4Lij4LihCivguJvguJfguLXguJsKK+C4m+C4l+C4uOC4oQor4Lib4LiY4Liy4LiZCivguJvguJkKK+C4m+C5iOC4mQor4Lib4LiZ4Lix4LiU4LiU4LiyCivguJvguJnguLjguJcKK+C4m+C4mgor4Lib4Lib4Lix4LiN4LiI4LiwCivguJvguKEKK+C4m+C4o+C4gQor4Lib4Lij4LiB4LiV4Li0CivguJvguKPguIcKK+C4m+C4o+C4lAor4Lib4Lij4LiV4Lii4Lix4LiB4Lip4LmMCivguJvguKPguJXguKLguLLguIQKK+C4m+C4o+C4leC5gOC4ouC4gQor4Lib4Lij4LiX4Lix4LiV4LiV4Li54Lib4LiK4Li14Lin4Li1CivguJvguKPguJkKK+C4m+C4o+C4meC4meC4tOC4muC4seC4leC4tAor4Lib4Lij4LiZ4Lix4LiiCivguJvguKPguJoKK+C4m+C4o+C4m+C4seC4geC4qeC5jAor4Lib4Lij4LmA4Lih4Lir4LiwCivguJvguKPguYLguKXguIEKK+C4m+C4o+C4p+C4lAor4Lib4Lij4Lin4LiZ4LmB4Lib4LijCivguJvguKPguKfguLLguJfguLUKK+C4m+C4o+C4p+C4tOC4quC4seC4ouC4quC4teC4oeC4sgor4Lib4Lij4Lio4Li4CivguJvguKPguKrguLTguJUKK+C4m+C4o+C5i+C4rQor4Lib4Lij4Lit4LiH4LiU4Lit4LiHCivguJvguKPguK3guJQKK+C4m+C4o+C4reC4lOC5hgor4Lib4Lij4Lit4LiXCivguJvguKPguK3guKIKK+C4m+C4o+C4reC4ouC5hgor4Lib4Lij4LiwCivguJvguKPguLDguIHguJoKK+C4m+C4o+C4sOC4geC4pOC4lQor4Lib4Lij4Liw4LiB4Lik4LiV4Li0CivguJvguKPguLDguIHguKUKK+C4m+C4o+C4sOC4geC4p+C4lAor4Lib4Lij4Liw4LiB4Lit4LiaCivguJvguKPguLDguIHguLHguJkKK+C4m+C4o+C4sOC4geC4seC4mgor4Lib4Lij4Liw4LiB4Liy4LiiCivguJvguKPguLDguIHguLLguKMKK+C4m+C4o+C4sOC4geC4suC4qAor4Lib4Lij4Liw4LiB4Liy4Lio4LiBCivguJvguKPguLDguIHguLLguKjguJnguLXguKLguIHguKPguKPguKEKK+C4m+C4o+C4sOC4geC4suC4qOC4meC4teC4ouC4muC4seC4leC4owor4Lib4Lij4Liw4LiB4Liy4Lio4Li04LiVCivguJvguKPguLDguIHguLMKK+C4m+C4o+C4sOC4geC4tOC4lAor4Lib4Lij4Liw4LiB4Li04LiVCivguJvguKPguLDguIHguLXguKPguJPguIEKK+C4m+C4o+C4sOC5gOC4geC4teC4ouC4o+C4k+C4gQor4Lib4Lij4Liw4LmB4LiB4LiBCivguJvguKPguLDguITguJQKK+C4m+C4o+C4sOC4hOC4meC4mOC4o+C4o+C4ngor4Lib4Lij4Liw4LiE4LiZ4LiY4Lij4Lij4Lie4LmMCivguJvguKPguLDguITguJoKK+C4m+C4o+C4sOC4hOC4reC4hwor4Lib4Lij4Liw4LiE4Lix4Lia4Lib4Lij4Liw4LiE4Lit4LiHCivguJvguKPguLDguITguLHguKXguKDguYwKK+C4m+C4o+C4sOC4hOC4swor4Lib4Lij4Liw4LiE4Liz4LmE4LiB4LmICivguJvguKPguLDguITguLPguJTguLXguITguKfguLLguKIKK+C4m+C4o+C4sOC4hOC4tOC5iOC4mQor4Lib4Lij4Liw4LiE4Li04LmI4LiZ4Lin4Li04LiZ4LiK4LiyCivguJvguKPguLDguITguLjguJMKK+C4m+C4o+C4sOC5gOC4hOC4mQor4Lib4Lij4Liw4LmA4LiE4Lij4Liy4Liw4Lir4LmMCivguJvguKPguLDguYLguITguJkKK+C4m+C4o+C4sOC5guC4hOC4meC4mOC4o+C4o+C4mgor4Lib4Lij4Liw4LmC4LiE4LiZ4LiY4Lij4Lij4Lie4LmMCivguJvguKPguLDguYLguITguKEKK+C4m+C4o+C4sOC4iOC4hwor4Lib4Lij4Liw4LiI4LiNCivguJvguKPguLDguIjguJoKK+C4m+C4o+C4sOC4iOC4p+C4mgor4Lib4Lij4Liw4LiI4LmL4Lit4Lib4Lij4Liw4LmB4LiI4LmLCivguJvguKPguLDguIjguLHguIHguKnguYwKK+C4m+C4o+C4sOC4iOC4seC4jQor4Lib4Lij4Liw4LiI4Lix4LiZCivguJvguKPguLDguIjguLLguIEKK+C4m+C4o+C4sOC4iOC4suC4hAor4Lib4Lij4Liw4LiI4Liy4LiZCivguJvguKPguLDguIjguLMKK+C4m+C4o+C4sOC4iOC4tOC4oQor4Lib4Lij4Liw4LiI4Li04LmJ4Lih4Lib4Lij4Liw4LiI4LmI4Lit4LiHCivguJvguKPguLDguIjguLTguYnguKHguJvguKPguLDguYDguIjguYvguK0KK+C4m+C4o+C4sOC4iOC4uAor4Lib4Lij4Liw4LiI4Li44LiE4Lih4LiZ4LmMCivguJvguKPguLDguIjguLjguJrguLHguJkKK+C4m+C4o+C4sOC5gOC4iOC4gQor4Lib4Lij4Liw4LmA4LiI4Li04LiUCivguJvguKPguLDguYDguIjguLXguKLguJQKK+C4m+C4o+C4sOC5geC4iAor4Lib4Lij4Liw4LiK4LiUCivguJvguKPguLDguIrguJkKK+C4m+C4o+C4sOC4iuC4p+C4oQor4Lib4Lij4Liw4LiK4Lin4LijCivguJvguKPguLDguIrguLHguJkKK+C4m+C4o+C4sOC4iuC4sgor4Lib4Lij4Liw4LiK4Li04LiUCivguJvguKPguLDguIrguLUKK+C4m+C4o+C4sOC4iuC4uOC4oQor4Lib4Lij4Liw4LmA4LiK4Li04LiNCivguJvguKPguLDguJPguJUKK+C4m+C4o+C4sOC4k+C4oQor4Lib4Lij4Liw4LiT4Liy4LihCivguJvguKPguLDguJPguLTguJjguLLguJkKK+C4m+C4o+C4sOC4k+C4tOC4mOC4tAor4Lib4Lij4Liw4LiT4Li14LiVCivguJvguKPguLDguJPguLjguJcKK+C4m+C4o+C4sOC4lOC4hwor4Lib4Lij4Liw4LiU4LiH4LmB4LiU4LiHCivguJvguKPguLDguJTguJkKK+C4m+C4o+C4sOC4lOC4p+C4mQor4Lib4Lij4Liw4LiU4Lit4LiZCivguJvguKPguLDguJTguK3guKIKK+C4m+C4o+C4sOC4lOC4seC4gQor4Lib4Lij4Liw4LiU4Lix4LiHCivguJvguKPguLDguJTguLHguJoKK+C4m+C4o+C4sOC4lOC4sgor4Lib4Lij4Liw4LiU4Liy4LiBCivguJvguKPguLDguJTguLLguJsKK+C4m+C4o+C4sOC4lOC4suC4qQor4Lib4Lij4Liw4LiU4Li04LiK4LiN4LiyCivguJvguKPguLDguJTguLTguJTguJvguKPguLDguJTguK3guKIKK+C4m+C4o+C4sOC4lOC4tOC4l+C4tOC4mQor4Lib4Lij4Liw4LiU4Li04Lij4LieCivguJvguKPguLDguJTguLTguKnguJDguYwKK+C4m+C4o+C4sOC4lOC4tOC4qeC4kOC4suC4mQor4Lib4Lij4Liw4LiU4Li4CivguJvguKPguLDguJTguLjguIcKK+C4m+C4o+C4sOC4lOC4uOC4iAor4Lib4Lij4Liw4LiU4Li54LmICivguJvguKPguLDguYDguJQKK+C4m+C4o+C4sOC5gOC4lOC5h+C4mQor4Lib4Lij4Liw4LmA4LiU4Lii4LiBCivguJvguKPguLDguYDguJTguLTguKEKK+C4m+C4o+C4sOC5gOC4lOC4teC4ouC4hwor4Lib4Lij4Liw4LmA4LiU4Li14LmL4Lii4LinCivguJvguKPguLDguYHguJTguIcKK+C4m+C4o+C4sOC5geC4lOC4sAor4Lib4Lij4Liw4LmC4LiU4LiiCivguJvguKPguLDguJXguIcKK+C4m+C4o+C4sOC4leC4ouC4suC4hAor4Lib4Lij4Liw4LiV4Lix4LiBCivguJvguKPguLDguJXguLLguJvguLAKK+C4m+C4o+C4sOC4leC4tOC4iuC4jeC4sgor4Lib4Lij4Liw4LiV4Li04LiN4Liy4LiTCivguJvguKPguLDguJXguLTguJfguLTguJkKK+C4m+C4o+C4sOC4leC4tOC4oeC4suC4geC4o+C4o+C4oQor4Lib4Lij4Liw4LiV4Li04Lij4LieCivguJvguKPguLDguJXguLTguKjguKPguLHguJ4KK+C4m+C4o+C4sOC4leC4uQor4Lib4Lij4Liw4LiW4LihCivguJvguKPguLDguJbguKHguIjguLTguJnguJTguLIKK+C4m+C4o+C4sOC4l+C4oQor4Lib4Lij4Liw4LiX4Lii4LiUCivguJvguKPguLDguJfguYnguKfguIcKK+C4m+C4o+C4sOC4l+C4p+C4mQor4Lib4Lij4Liw4LiX4Lix4LiB4Lip4LmMCivguJvguKPguLDguJfguLHguIHguKnguLTguJMKK+C4m+C4o+C4sOC4l+C4seC4hwor4Lib4Lij4Liw4LiX4Lix4LiUCivguJvguKPguLDguJfguLHguJoKK+C4m+C4o+C4sOC4l+C5iOC4sgor4Lib4Lij4Liw4LiX4Liy4LiB4Lil4LmJ4Lit4LiHCivguJvguKPguLDguJfguLLguJkKK+C4m+C4o+C4sOC4l+C4suC4ogor4Lib4Lij4Liw4LiX4Liy4Lio4Li1CivguJvguKPguLDguJfguLTguJkKK+C4m+C4o+C4sOC4l+C4tOC5iOC4mQor4Lib4Lij4Liw4LiX4Li14LibCivguJvguKPguLDguJfguLjguIEKK+C4m+C4o+C4sOC4l+C4uOC4kAor4Lib4Lij4Liw4LiX4Li44LiQ4LiI4Li04LiVCivguJvguKPguLDguJfguLjguJkKK+C4m+C4o+C4sOC4l+C4uOC4oeC4o+C4suC4hAor4Lib4Lij4Liw4LiX4Li44LipCivguJvguKPguLDguJfguLjguKnguI/guYwKK+C4m+C4o+C4sOC4l+C4uOC4qeC4j+C4iOC4tOC4lQor4Lib4Lij4Liw4LiX4Li44Lip4LiQ4LmMCivguJvguKPguLDguJfguLjguKnguJDguIjguLTguJUKK+C4m+C4o+C4sOC5gOC4l+C4qAor4Lib4Lij4Liw4LmA4LiX4LiyCivguJvguKPguLDguYDguJfguYnguLIKK+C4m+C4o+C4sOC5gOC4l+C4teC4ouC4lAor4Lib4Lij4Liw4LmA4LiX4Li14Lii4LiaCivguJvguKPguLDguYDguJfguLfguK3guIcKK+C4m+C4o+C4sOC4mOC4suC4mQor4Lib4Lij4Liw4LiY4Liy4LiZ4Liy4LiY4Li04Lia4LiU4Li1CivguJvguKPguLDguJnguKEKK+C4m+C4o+C4sOC4meC4rQor4Lib4Lij4Liw4LiZ4Lit4LihCivguJvguKPguLDguJnguLHguIcKK+C4m+C4o+C4sOC4meC4seC4m+C4lOC4sgor4Lib4Lij4Liw4LiZ4Li14LmJCivguJvguKPguLDguJnguLXguJvguKPguLDguJnguK3guKEKK+C4m+C4o+C4sOC4muC4seC4lAor4Lib4Lij4Liw4Lia4Liy4LiVCivguJvguKPguLDguJvguKPguLLguJkKK+C4m+C4o+C4sOC4m+C4o+C4suC4ogor4Lib4Lij4Liw4Lib4LiyCivguJvguKPguLDguYDguJvguKPguLXguYnguKLguIcKK+C4m+C4o+C4sOC5gOC4m+C4o+C4teC5ieC4ouC4pwor4Lib4Lij4Liw4LmB4Lib4Lij4LmJ4LiZCivguJvguKPguLDguJ7guIjguJnguYwKK+C4m+C4o+C4sOC4nuC4meC4mOC5jAor4Lib4Lij4Liw4Lie4Lij4LihCivguJvguKPguLDguJ7guKTguJXguLQKK+C4m+C4o+C4sOC4nuC4pOC4l+C4mOC4tOC5jAor4Lib4Lij4Liw4Lie4Lix4LiUCivguJvguKPguLDguJ7guLHguJfguJjguYwKK+C4m+C4o+C4sOC4nuC4seC4meC4mOC5jAor4Lib4Lij4Liw4Lie4Liy4LiVCivguJvguKPguLDguJ7guLLguKjguKHguKvguKPguJPguJ4KK+C4m+C4o+C4sOC4nuC4suC4qgor4Lib4Lij4Liw4Lie4Liy4LisCivguJvguKPguLDguJ7guLTguJMKK+C4m+C4o+C4sOC4nuC4tOC4oeC4nuC5jOC4m+C4o+C4sOC4nuC4suC4ogor4Lib4Lij4Liw4Lie4Li44LiX4LiY4LmMCivguJvguKPguLDguYDguJ7guJPguLUKK+C4m+C4o+C4sOC5gOC4nuC5ieC4rQor4Lib4Lij4Liw4LmB4Lie4Lij4LmI4LiH4Lib4Lij4Liw4LmB4Lie4Lij4LinCivguJvguKPguLDguYLguJ7guJgKK+C4m+C4o+C4sOC5hOC4ngor4Lib4Lij4Liw4LmE4Lie4LijCivguJvguKPguLDguKDguJ4KK+C4m+C4o+C4sOC4oOC4seC4quC4quC4owor4Lib4Lij4Liw4Lig4LiyCivguJvguKPguLDguKDguLLguJ4KK+C4m+C4o+C4sOC4oOC4suC4qQor4Lib4Lij4Liw4Lig4Liy4LiqCivguJvguKPguLDguKDguLnguKjguLHguIHguJTguLTguYwKK+C4m+C4o+C4sOC5gOC4oOC4lwor4Lib4Lij4Liw4Lih4LiHCivguJvguKPguLDguKHguKfguI0KK+C4m+C4o+C4sOC4oeC4p+C4pQor4Lib4Lij4Liw4Lih4Lix4LiV4LiV4LiwCivguJvguKPguLDguKHguLLguJMKK+C4m+C4o+C4sOC4oeC4suC4lwor4Lib4Lij4Liw4Lih4Li44LiCCivguJvguKPguLDguKHguLjguJcKK+C4m+C4o+C4sOC4oeC4ueC4pQor4Lib4Lij4Liw4LmA4Lih4Li04LiZCivguJvguKPguLDguYLguKHguIcKK+C4m+C4o+C4sOC5guC4oeC4l+C4ouC5jAor4Lib4Lij4Liw4Lii4LiH4LiE4LmMCivguJvguKPguLDguKLguLjguIHguJXguYwKK+C4m+C4o+C4sOC4ouC4uOC4l+C4mOC5jAor4Lib4Lij4Liw4Lii4Li44LijCivguJvguKPguLDguKLguLnguKMKK+C4m+C4o+C4sOC5guC4ouC4hAor4Lib4Lij4Liw4LmC4Lii4LiE4Liq4Lix4Lih4Lib4LiX4LiyCivguJvguKPguLDguYLguKLguIrguJnguYwKK+C4m+C4o+C4sOC5guC4o+C4q+C4tOC4lQor4Lib4Lij4Liw4Lil4Lih4Lie4LmMCivguJvguKPguLDguKXguK3guIcKK+C4m+C4o+C4sOC4peC4seC4ogor4Lib4Lij4Liw4Lil4Liy4LiVCivguJvguKPguLDguKXguLLguKIKK+C4m+C4o+C4sOC4peC4tuC4hwor4Lib4Lij4Liw4Lil4Li4CivguJvguKPguLDguKXguLjguIcKK+C4m+C4o+C4sOC5gOC4peC5iOC4q+C5jAor4Lib4Lij4Liw4LmA4Lil4LmJ4Liy4Lib4Lij4Liw4LmC4Lil4LihCivguJvguKPguLDguYLguKXguJvguKPguLDguYDguKUKK+C4m+C4o+C4sOC5guC4peC4oQor4Lib4Lij4Liw4Lin4Lij4Lij4LiVCivguJvguKPguLDguKfguKPguKPguJXguJnguYwKK+C4m+C4o+C4sOC4p+C4seC4leC4tAor4Lib4Lij4Liw4Lin4Liy4LiVCivguJvguKPguLDguKfguLLguJfguLUKK+C4m+C4o+C4sOC4p+C4suC4pQor4Lib4Lij4Liw4Lin4Liy4Lil4Lib4Lix4LiX4Lih4LmMCivguJvguKPguLDguKfguLLguKXguJzguKUKK+C4m+C4o+C4sOC4p+C4suC4peC4p+C4o+C4o+C4kwor4Lib4Lij4Liw4Lin4Liy4LiqCivguJvguKPguLDguKfguLTguIcKK+C4m+C4o+C4sOC4p+C4tOC4igor4Lib4Lij4Liw4Lin4Li04LiV4LijCivguJvguKPguLDguKfguLXguJMKK+C4m+C4o+C4sOC5gOC4p+C4k+C4tQor4Lib4Lij4Liw4LmA4Lin4Lib4Lij4Liw4Lin4Li04LiHCivguJvguKPguLDguYDguKfguKgKK+C4m+C4o+C4sOC5gOC4p+C4qOC4meC5jAor4Lib4Lij4Liw4Lio4LihCivguJvguKPguLDguKjguLLguKrguJnguYwKK+C4m+C4o+C4sOC4qOC4uAor4Lib4Lij4Liw4Liq4LiBCivguJvguKPguLDguKrguIfguITguYwKK+C4m+C4o+C4sOC4quC4mgor4Lib4Lij4Liw4Liq4LieCivguJvguKPguLDguKrguKEKK+C4m+C4o+C4sOC4quC4sAor4Lib4Lij4Liw4Liq4Lix4LiBCivguJvguKPguLDguKrguLHguJnguJnguLLguIHguLLguKMKK+C4m+C4o+C4sOC4quC4seC4ouC4q+C5jAor4Lib4Lij4Liw4Liq4LiyCivguJvguKPguLDguKrguLLguJcKK+C4m+C4o+C4sOC4quC4suC4l+C4geC4suC4owor4Lib4Lij4Liw4Liq4Liy4LiX4Lij4Li54LibCivguJvguKPguLDguKrguLLguJjguJnguYwKK+C4m+C4o+C4sOC4quC4suC4mQor4Lib4Lij4Liw4Liq4Liy4LijCivguJvguKPguLDguKrguLTguJfguJjguLTguYwKK+C4m+C4o+C4sOC4quC4teC4m+C4o+C4sOC4quC4sgor4Lib4Lij4Liw4Liq4Li54LiVCivguJvguKPguLDguKrguLnguJXguLQKK+C4m+C4o+C4sOC5gOC4quC4muC4seC4meC4reC4suC4geC4hwor4Lib4Lij4Liw4LmA4Liq4Lij4Li04LiQCivguJvguKPguLDguYHguKrguJrguLHguJkKK+C4m+C4o+C4sOC4q+C4meC4tuC5iOC4hwor4Lib4Lij4Liw4Lir4Lih4Lix4LiZCivguJvguKPguLDguKvguKHguYjguLIKK+C4m+C4o+C4sOC4q+C4ouC4seC4lAor4Lib4Lij4Liw4Lir4Lij4LiT4LmMCivguJvguKPguLDguKvguKXguLLguJQKK+C4m+C4o+C4sOC4q+C4peC4suC4lwor4Lib4Lij4Liw4Lir4Lil4LmI4LizCivguJvguKPguLDguKvguKXguLTguYjguKEKK+C4m+C4o+C4sOC4q+C4p+C4seC4lAor4Lib4Lij4Liw4Lir4Lin4Lix4LmI4LiZCivguJvguKPguLDguKvguKfguYjguLIKK+C4m+C4o+C4sOC4q+C4seC4lQor4Lib4Lij4Liw4Lir4Liy4LiTCivguJvguKPguLDguKvguLLguKMKK+C4m+C4o+C4sOC4q+C4suC4qgor4Lib4Lij4Liw4LmA4Lir4LilCivguJvguKPguLDguYDguKvguKoKK+C4m+C4o+C4sOC5gOC4q+C4teC4ouC4pQor4Lib4Lij4Liw4LmE4Lir4Lih4Liq4Li44Lir4Lij4Li1CivguJvguKPguLDguK3guJoKK+C4m+C4o+C4sOC4reC4owor4Lib4Lij4Liw4Lit4Li24LiHCivguJvguKPguLDguK3guLjguIEKK+C4m+C4o+C4sOC5gOC4reC4teC4ouC4hwor4Lib4Lij4Liw4LmB4Lit4LiBCivguJvguKPguLDguK7guLLguKEKK+C4m+C4o+C4seC4gQor4Lib4Lij4Lix4LiB4Lib4Lij4LizCivguJvguKPguLHguIHguKHguLAKK+C4m+C4o+C4seC4geC4q+C4seC4geC4nuC4seC4hwor4Lib4Lij4Lix4LiHCivguJvguKPguLHguIrguI3guLIKK+C4m+C4o+C4seC4lAor4Lib4Lij4Lix4LiV4LiW4LiI4Lij4Li04Lii4LiyCivguJvguKPguLHguJXguKLguJnguJXguYwKK+C4m+C4o+C4seC4leC4ouC4seC4geC4qeC5jAor4Lib4Lij4Lix4LiV4Lii4Lix4LiZ4LiV4LmMCivguJvguKPguLHguJXguKLguLHguKIKK+C4m+C4o+C4seC4leC4ouC4uOC4leC4muC4seC4mQor4Lib4Lij4Lix4LiV4Lii4Li44Lia4Lix4LiZCivguJvguKPguLHguJXguKLguLnguKkKK+C4m+C4o+C4seC4leC4ouC4ueC4q+C5jAor4Lib4Lij4Lix4LiV4LmA4Lii4LiBCivguJvguKPguLHguJkKK+C4m+C4o+C4seC5iOC4mQor4Lib4Lij4Lix4LmJ4LiZCivguJvguKPguLHguJoKK+C4m+C4o+C4seC4m+C4p+C4suC4lwor4Lib4Lij4Lix4Lih4Lib4Lij4LiyCivguJvguKPguLHguKHguKHguLjguILguLIKK+C4m+C4o+C4seC4qOC4iOC4tOC4oQor4Lib4Lij4Lix4Lio4LiZ4LiyCivguJvguKPguLHguKjguJnguLUKK+C4m+C4o+C4seC4qOC4p+C5jAor4Lib4Lij4LmI4LiyCivguJvguKPguLLguIHguI8KK+C4m+C4o+C4suC4geC4o+C4oQor4Lib4Lij4Liy4LiB4Lik4LiVCivguJvguKPguLLguIHguLLguKMKK+C4m+C4o+C4suC4hOC4oOC4suC4owor4Lib4Lij4Liy4LiE4Liy4LijCivguJvguKPguLLguIcKK+C4m+C4o+C4suC4h+C4hOC5jAor4Lib4Lij4Liy4LiH4LiE4LiT4LiwCivguJvguKPguLLguIjguLXguJkKK+C4m+C4o+C4suC4iuC4jeC5jAor4Lib4Lij4Liy4LiK4LiN4LiyCivguJvguKPguLLguIrguLHguKIKK+C4m+C4o+C4suC4iuC4suC4m+C4seC4leC4ouC4p+C4tOC4p+C4suC4q+C4sAor4Lib4Lij4Liy4LiK4Li04LiVCivguJvguKPguLLguJMKK+C4m+C4o+C4suC4k+C4tQor4Lib4Lij4Liy4LiUCivguJvguKPguLLguJXguLTguKvguLLguKPguKLguYwKK+C4m+C4o+C4suC4l+C4uOC4geC4o+C4sgor4Lib4Lij4Liy4LiZCivguJvguKPguLLguJnguLUKK+C4m+C4o+C4suC4mgor4Lib4Lij4Liy4Lia4LiU4Liy4Lig4Li04LmA4Lip4LiBCivguJvguKPguLLguJvguJXguYwKK+C4m+C4o+C4suC4oOC4ngor4Lib4Lij4Liy4LihCivguJvguKPguLLguKHguLLguKoKK+C4m+C4o+C4suC5guC4oeC4igor4Lib4Lij4Liy4LmC4Lih4LiX4Lii4LmMCivguJvguKPguLLguKIKK+C4m+C4o+C4suC4o+C4luC4meC4sgor4Lib4Lij4Liy4Lij4LigCivguJvguKPguLLguKPguKHguKDguYwKK+C4m+C4o+C4suC4qAor4Lib4Lij4Liy4Lio4LiI4Liy4LiBCivguJvguKPguLLguKjguLHguKIKK+C4m+C4o+C4suC4qeC4k+C4tQor4Lib4Lij4Liy4Lip4Liy4LiTCivguJvguKPguLLguKrguLHguKIKK+C4m+C4o+C4suC4quC4suC4lwor4Lib4Lij4LizCivguJvguKPguLQKK+C4m+C4o+C4tOC4gQor4Lib4Lij4Li04LiB4LiC4Liy4LijCivguJvguKPguLTguIHguKPguKPguKEKK+C4m+C4o+C4tOC4geC4seC4mwor4Lib4Lij4Li04LiC4LiyCivguJvguKPguLTguITguJPguKvguYwKK+C4m+C4o+C4tOC4hgor4Lib4Lij4Li04LiI4Liy4LiECivguJvguKPguLTguIjguLLguKPguLTguIHguLIKK+C4m+C4o+C4tOC5gOC4ieC4lwor4Lib4Lij4Li04LiK4LiZCivguJvguKPguLTguIvguLbguKEKK+C4m+C4o+C4tOC4jeC4jeC4sgor4Lib4Lij4Li04LiT4Liy4LihCivguJvguKPguLTguJPguLLguKLguIEKK+C4m+C4o+C4tOC4leC4leC4sAor4Lib4Lij4Li04LiV4LmC4LiV4LiX4LiBCivguJvguKPguLTguJXguKLguLLguIQKK+C4m+C4o+C4tOC4leC4owor4Lib4Lij4Li04LiX4Lij4Lij4Lio4LiZ4LmMCivguJvguKPguLTguJfguLHguKLguKvguLHguITguITguLUKK+C4m+C4o+C4tOC4l+C4seC4qOC4meC5jAor4Lib4Lij4Li04LmA4LiX4LieCivguJvguKPguLTguYDguJfguJ7guJnguYwKK+C4m+C4o+C4tOC5gOC4l+C4p+C4meC4sAor4Lib4Lij4Li04LmA4LiX4Lin4LiwCivguJvguKPguLTguJnguLTguJ7guJ7guLLguJkKK+C4m+C4o+C4tOC4mgor4Lib4Lij4Li04Lib4Lix4LiZ4LiW4LmMCivguJvguKPguLTguJ7guJnguJjguYwKK+C4m+C4o+C4tOC4nuC4seC4leC4owor4Lib4Lij4Li04Lie4Lix4LiZ4LiY4LmMCivguJvguKPguLTguJ7guLLguIrguIEKK+C4m+C4o+C4tOC4oOC4seC4k+C4keC5jAor4Lib4Lij4Li04Lig4Liy4LipCivguJvguKPguLTguKDguLLguKnguJPguYwKK+C4m+C4o+C4tOC4oOC4uOC4jeC4iuC5jAor4Lib4Lij4Li04Lig4Li54Lih4Li0CivguJvguKPguLTguYLguKDguIQKK+C4m+C4o+C4tOC5iOC4oQor4Lib4Lij4Li04Lih4LiT4LiR4LilCivguJvguKPguLTguKHguLHguJcKK+C4m+C4o+C4tOC4oeC4suC4kwor4Lib4Lij4Li04Lih4Liy4LiV4LijCivguJvguKPguLTguKLguLHguJXguLQKK+C4m+C4o+C4tOC4ouC4seC4leC4tOC4mOC4o+C4o+C4oQor4Lib4Lij4Li04Lii4Liy4LiiCivguJvguKPguLTguYDguKLguKgKK+C4m+C4o+C4tOC5guC4ouC4quC4suC4mQor4Lib4Lij4Li04Lin4Lij4Lij4LiVCivguJvguKPguLTguKfguLHguJXguKMKK+C4m+C4o+C4tOC4p+C4suC4owor4Lib4Lij4Li04Lin4Liy4LiqCivguJvguKPguLTguKfguLTguJXguIEKK+C4m+C4o+C4tOC5gOC4p+C4kwor4Lib4Lij4Li04Lio4LiZ4LiyCivguJvguKPguLTguKnguIHguLLguKMKK+C4m+C4o+C4tOC4qeC4seC4lwor4Lib4Lij4Li04Liq4Lix4LiN4LiN4Li5CivguJvguKPguLTguKrguLjguJfguJjguLQKK+C4m+C4o+C4tOC4q+C4suC4mQor4Lib4Lij4Li04Lir4Liy4LijCivguJvguKPguLTguKvguLLguKoKK+C4m+C4o+C4teC5iAor4Lib4Lij4Li14LiK4LiN4LiyCivguJvguKPguLXguIrguLIKK+C4m+C4o+C4teC5iuC4lAor4Lib4Lij4Li14LiU4LiyCivguJvguKPguLXguJTguLQKK+C4m+C4o+C4teC4lOC4tOC5jAor4Lib4Lij4Li14LiU4Li1CivguJvguKPguLXguJXguLQKK+C4m+C4o+C4teC4ogor4Lib4Lij4Li14Lii4LiyCivguJvguKPguLbguIEKK+C4m+C4o+C4tuC4geC4qeC4sgor4Lib4Lij4Li24LiHCivguJvguKPguLfguK0KK+C4m+C4o+C4t+C5i+C4rQor4Lib4Lij4Li4CivguJvguKPguLjguIcKK+C4m+C4o+C4uQor4Lib4Lij4Li54LmLCivguJvguKPguLnguJQKK+C4m+C4o+C4ueC5iuC4nwor4Lib4Lik4LiH4LiE4LieCivguJvguKTguIjguInguLIKK+C4m+C4pOC4qeC4juC4suC4h+C4hOC5jAor4Lib4Lik4Lip4LiQCivguJvguKTguKnguJPguYwKK+C4m+C4peC4gQor4Lib4Lil4LiB4LmA4Lib4Lil4Li14LmJ4LiiCivguJvguKXguIcKK+C4m+C4peC5iOC4hwor4Lib4Lil4LiUCivguJvguKXguYnguJkKK+C4m+C4peC4p+C4gQor4Lib4Lil4Lit4LiBCivguJvguKXguYjguK3guIcKK+C4m+C4peC5ieC4reC4hwor4Lib4Lil4Lit4LiUCivguJvguKXguYnguK3guJkKK+C4m+C4peC4reC4mgor4Lib4Lil4Lit4LihCivguJvguKXguYjguK3guKIKK+C4m+C4peC4sAor4Lib4Lil4Lix4LiBCivguJvguKXguLHguYrguIEKK+C4m+C4peC4seC5iuC4geC5hOC4nwor4Lib4Lil4Lix4LiHCivguJvguKXguLHguYjguIcKK+C4m+C4peC4seC4lAor4Lib4Lil4Lix4LiU4LiC4Li04LiBCivguJvguKXguLIKK+C4m+C4peC4suC4gQor4Lib4Lil4Liy4LiU4Liy4LinCivguJvguKXguLLguJUKK+C4m+C4peC4suC4mgor4Lib4Lil4Liy4Lid4LiyCivguJvguKXguLLguKIKK+C4m+C4peC4suC4ouC4meC4suC4geC4suC4owor4Lib4Lil4Liy4LmC4Lil4Lih4LiyCivguJvguKXguLLguKfguLLguKwKK+C4m+C4peC4suC4quC5gOC4leC4reC4o+C5jAor4Lib4Lil4Liy4Liq4LiZ4Liy4LiB4Liy4LijCivguJvguKXguLLguKvguKHguLbguIEKK+C4m+C4peC5ieC4swor4Lib4Lil4LmJ4Liz4Lib4Lil4Li44LiBCivguJvguKXguLTguIcKK+C4m+C4peC4tOC4lAor4Lib4Lil4Li04LmJ4LiZCivguJvguKXguLTguYLguJ7guJgKK+C4m+C4peC4tOC4oQor4Lib4Lil4Li04LmI4LihCivguJvguKXguLTguKcKK+C4m+C4peC4tQor4Lib4Lil4Li14LiBCivguJvguKXguLfguYnguKEKK+C4m+C4peC4uOC4gQor4Lib4Lil4Li54LiBCivguJvguKfguIHguYDguJvguLXguKLguIEKK+C4m+C4p+C4hwor4Lib4LmI4Lin4LiHCivguJvguKfguJQKK+C4m+C5iOC4p+C4mQor4Lib4LmJ4Lin4LiZCivguJvguYnguKfguJnguYDguJvguLXguYnguKLguJkKK+C4m+C5iOC4p+C4ogor4Lib4Lin4Lix4LiV4LiZ4LmMCivguJvguKfguLHguJXguKLguLLguIHguLLguKMKK+C4m+C4p+C4suC4lQor4Lib4Lin4Liy4Lij4LiT4LiyCivguJvguKfguLLguKUKK+C4m+C4p+C4suC4qgor4Lib4Lin4Liy4LisCivguJvguKfguLTguIoKK+C4m+C4p+C4tOC4leC4owor4Lib4Lin4Li04LiYCivguJvguKfguLTguYDguKfguIEKK+C4m+C4p+C4teC4kwor4Lib4Lin4Li44LiV4Li0CivguJvguYDguKfguJPguLUKK+C4m+C5gOC4p+C4qgor4Lib4LmA4Lin4Liq4LiZ4LmMCivguJvguKjguLgKK+C4m+C4quC4ngor4Lib4Liq4Lix4LiZ4LiZ4LiwCivguJvguKrguLHguKLguKvguLAKK+C4m+C4quC4suC4lwor4Lib4Liq4Liy4LiZCivguJvguKrguLLguKrguJnguYwKK+C4m+C4quC4uAor4Lib4Liq4Li44LiVCivguJvguKrguLnguJXguLQKK+C4m+C4q+C4seC4h+C4qgor4Lib4Lir4Lix4LiH4Liq4LiZCivguJvguKvguLLguJkKK+C4m+C4q+C4suC4owor4Lib4Lir4Liy4LiqCivguJvguK0KK+C4m+C5ieC4rQor4Lib4LmL4LitCivguJvguK3guIEKK+C4m+C4reC4hwor4Lib4LmI4Lit4LiHCivguJvguYnguK3guIcKK+C4m+C4reC4lAor4Lib4Lit4LiZCivguJvguYnguK3guJkKK+C4m+C4reC4meC5hgor4Lib4Lit4LiZ4LiU4LmMCivguJvguK3guYDguJnguLLguLAKK+C4m+C4reC4mgor4Lib4Lit4LihCivguJvguYnguK3guKEKK+C4m+C5i+C4reC4oQor4Lib4Lit4LiiCivguJvguYnguK3guKIKK+C4m+C4sAor4Lib4Liw4LiB4LiZCivguJvguLDguIHguLHguIcKK+C4m+C4sOC4geC4suC4m+C4sOC4geC4seC4hwor4Lib4Liw4LiB4Liy4Lij4Lix4LiHCivguJvguLDguIHguLMKK+C4m+C4sOC4guC4suC4pwor4Lib4Liw4LiH4Lix4Lia4Lib4Liw4LiH4LmI4Lit4LiZCivguJvguLDguJXguLLguJnguLUKK+C4m+C4sOC4leC4suC4m+C4sgor4Lib4Liw4LiV4Liy4Lij4Liw4LiB4Liy4Lir4Lil4LiyCivguJvguLDguJXguLTguJTguJvguLDguJXguYjguK0KK+C4m+C4sOC4leC4tOC4ouC4suC4mQor4Lib4Liw4LmA4LiV4LiwCivguJvguLDguJfguLAKK+C4m+C4sOC4l+C4sOC4m+C4sOC4l+C4seC4hwor4Lib4Liw4LiX4Li4CivguJvguLDguJfguLjguJkKK+C4m+C4sOC4muC4uOC4gQor4Lib4Liw4Lib4LiZCivguJvguLDguKHguIcKK+C4m+C4sOC4o+C4suC4peC4tQor4Lib4Liw4Lij4LizCivguJvguLDguKXguK3guKEKK+C4m+C4sOC5gOC4peC4hwor4Lib4Liw4LmB4Lil4LmI4LihCivguJvguLDguYHguKXguYjguKHguYYKK+C4m+C4sOC5guC4peC4hwor4Lib4Liw4Lin4Liw4Lir4Lil4LizCivguJvguLDguKfguLDguKvguKXguLTguYjguKEKK+C4m+C4sOC5gOC4quC4q+C4o+C4seC4meC4reC4suC4geC4hwor4Lib4Liw4Lir4LiH4Lix4LiaCivguJvguLDguKvguIfguLHguJrguYYKK+C4m+C4sOC4q+C4meC4seC4mQor4Lib4Liw4Lir4Lih4Lix4LiZ4Lit4Liy4Lir4Lii4Li1CivguJvguLDguKvguKXguLTguYjguKEKK+C4m+C4sOC4q+C4seC4hwor4Lib4Liw4LmA4Lir4Lil4Liy4LiwCivguJvguLDguYDguKvguKXguLLguLDguJvguLDguYHguKvguKXguLAKK+C4m+C4seC4gQor4Lib4Lix4LiB4LiC4LmMCivguJvguLHguIHguYDguJvguYnguLIKK+C4m+C4seC4geC4qeC5jAor4Lib4Lix4LiB4Lip4LiyCivguJvguLHguIHguKnguLLguKrguKfguKPguKPguITguYwKK+C4m+C4seC4geC4qeC4tOC4mQor4Lib4Lix4LiB4Lip4Li04Lia4LiU4Li1CivguJvguLHguIHguKnguLTguKHguLLguKPguIQKK+C4m+C4seC4geC4qeC4tOC4o+C4suC4igor4Lib4Lix4LiB4Lip4Li04Liq4Li04LiH4Lir4LmMCivguJvguLHguIHguKnguLUKK+C4m+C4seC4hOC4q+C4sAor4Lib4Lix4LiHCivguJvguLHguYjguIcKK+C4m+C4seC4h+C4quC4uOC5jAor4Lib4Lix4LiH4Liq4Li44LiB4Li44LilCivguJvguLHguIjguIjguLHguJXguJXguLAKK+C4m+C4seC4iOC4iOC4seC4ogor4Lib4Lix4LiI4LiI4Liy4Lih4Li04LiV4LijCivguJvguLHguIjguIjguLjguITguKHguJnguYwKK+C4m+C4seC4iOC4iOC4uOC4l+C4mOC4o+C4k+C5jAor4Lib4Lix4LiI4LiI4Li44Lia4Lix4LiZCivguJvguLHguIjguIjguLnguKoKK+C4m+C4seC4iOC4iOC4ueC4q+C4sAor4Lib4Lix4LiI4LmA4LiI4LiBCivguJvguLHguIjguYDguIjguIHguIrguJkKK+C4m+C4seC4iOC5gOC4iOC4geC4muC4uOC4hOC4hOC4pQor4Lib4Lix4LiI4LmA4LiI4LiB4Lie4Li44LiX4LiY4LiwCivguJvguLHguIjguYDguIjguIHguYLguJ7guJjguLQKK+C4m+C4seC4iOC5gOC4iOC4geC4quC4oeC4suC4l+C4suC4mQor4Lib4Lix4LiI4LmC4LiI4Lib4LiB4Liy4Lij4LiB4Li04LiICivguJvguLHguIjguInguLIKK+C4m+C4seC4iOC4ieC4tOC4oQor4Lib4Lix4LiI4LiW4Lij4LiT4LmMCivguJvguLHguIjguJnguLbguIEKK+C4m+C4seC4iOC4ouC4suC4geC4suC4owor4Lib4Lix4LiI4LmA4Lin4LiB4LiC4LiT4LmMCivguJvguLHguIrguIrguKMKK+C4m+C4seC4iuC4iuC4uOC4mQor4Lib4Lix4LiN4LiI4LiBCivguJvguLHguI3guIjguKEKK+C4m+C4seC4jeC4iOC4p+C4teC4quC4leC4tAor4Lib4Lix4LiN4LiN4Lix4LiV4Li0CivguJvguLHguI3guI3guLIKK+C4m+C4seC4jeC4q+C4sgor4Lib4Lix4LiPCivguJvguLHguI/guJnguLAKK+C4m+C4seC4kOC4ouC4suC4p+C4seC4lQor4Lib4Lix4LiT4LiR4Lij4Lir4Lix4LiV4LiW4Li1CivguJvguLHguJPguJHguLjguJvguKXguLLguKoKK+C4m+C4seC4k+C4k+C4sAor4Lib4Lix4LiT4LiT4Lix4LiV4LiV4Li04LiB4Lin4Lix4LiK4LiK4LiwCivguJvguLHguJPguJPguLLguKoKK+C4m+C4seC4k+C4k+C4suC4quC4geC5jAor4Lib4Lix4LiT4Lij4Liq4LihCivguJvguLHguJPguKPguKrguLUKK+C4m+C4seC4k+C4q+C4tAor4Lib4Lix4LiUCivguJvguLHguJTguYYKK+C4m+C4seC4lOC5hOC4luC4oQor4Lib4Lix4LiV4LiE4Liy4LiUCivguJvguLHguJXguIjguLHguJXguJbguKPguJPguYwKK+C4m+C4seC4leC4iOC4seC4meC4leC5jAor4Lib4Lix4LiV4LiV4LiwCivguJvguLHguJXguJXguLDguYDguKXguLXguYjguKLguJkKK+C4m+C4seC4leC4leC4suC4meC4teC4geC4sAor4Lib4Lix4LiV4LiV4Liy4LiZ4Li24LiBCivguJvguLHguJXguJXguLLguKHguLjguYLguKHguJfguJnguLIKK+C4m+C4seC4leC4leC4suC5gOC4p+C4teC4ogor4Lib4Lix4LiV4LiV4Li0CivguJvguLHguJXguJXguLTguIEKK+C4m+C4seC4leC4luC4owor4Lib4Lix4LiV4LiW4LiwCivguJvguLHguJXguJnguLQKK+C4m+C4seC4leC4meC4tQor4Lib4Lix4LiV4Lii4Lix4LiiCivguJvguLHguJXguKvguKXguYjguLIKK+C4m+C4seC4luC4nuC4tQor4Lib4Lix4LiW4Lin4Li1CivguJvguLHguJkKK+C4m+C4seC5iOC4mQor4Lib4Lix4LmJ4LiZCivguJvguLHguYnguJnguIjguLHguYjguJkKK+C4m+C4seC4meC4iOC4uOC5gOC4q+C4o+C5h+C4iAor4Lib4Lix4LiZ4Lil4LihCivguJvguLHguYnguJnguKvguKLguLIKK+C4m+C4seC5ieC4meC5gOC4q+C4meC5iOC4hwor4Lib4Lix4LiaCivguJvguLHguYrguJoKK+C4m+C4seC4m+C4nOC4suC4quC4sAor4Lib4Lix4Lie4Lie4Liy4LiK4LiZ4LiwCivguJvguLHguJ7guJ7guLLguIrguJnguLXguKLguIHguKPguKPguKEKK+C4m+C4seC4nuC4oOC4suC4o+C4sAor4Lib4Lix4LmK4LihCivguJvguLHguYrguKHguYHguIHguYfguKoKK+C4m+C4seC5iuC4oeC4meC5ieC4s+C4oeC4seC4mQor4Lib4Lix4Lii4LiB4LiwCivguJvguLHguKLguIHguLIKK+C4m+C4seC4ouC4ouC4tOC4geC4sgor4Lib4Lix4LmI4LinCivguJvguLHguKfguYDguJvguLXguKIKK+C4m+C4seC5ieC4p+C5gOC4m+C4teC5ieC4ogor4Lib4Lix4Lio4LiI4Li04LihCivguJvguLHguKjguJXguLHguJkKK+C4m+C4seC4qOC4leC4uQor4Lib4Lix4Liq4Liq4Lix4LiX4LiY4Li0CivguJvguLHguKrguKrguLLguKfguLAKK+C4m+C4seC4quC4quC4suC4quC4sAor4Lib4LiyCivguJvguYjguLIKK+C4m+C5ieC4sgor4Lib4LmL4LiyCivguJvguLLguIEKK+C4m+C4suC4hwor4Lib4LmI4Liy4LiHCivguJvguYnguLLguIcKK+C4m+C5ieC4suC4h+C4m+C5iOC4sgor4Lib4Liy4LiI4LiZ4LiwCivguJvguLLguIjguKPguLXguKLguYwKK+C4m+C4suC4iOC4suC4o+C4ouC5jAor4Lib4Liy4LiI4Li04LiV4LiV4Li14Lii4LmMCivguJvguLLguIjguLXguJkKK+C4m+C4suC4j+C4peC4tAor4Lib4Liy4LiP4Li04Lia4LiXCivguJvguLLguI/guLTguJrguLjguITguITguKXguLTguIEKK+C4m+C4suC4j+C4tOC5guC4oOC4hAor4Lib4Liy4LiP4Li04Lir4Liy4Lij4Li04Lii4LmMCivguJvguLLguJDguLAKK+C4m+C4suC4k+C4sAor4Lib4Liy4LiT4Li0CivguJvguLLguJPguLUKK+C4m+C4suC4lAor4Lib4Liy4LiU4Lir4Liy4LinCivguJvguLLguJXguLTguYLguKHguIHguILguYwKK+C4m+C4suC4leC4tQor4Lib4Liy4LmA4LiV4LmK4LiwCivguJvguLLguJcKK+C4m+C4suC4l+C4mwor4Lib4Liy4LiX4LmI4Lit4LiH4LmC4LiB4LmLCivguJvguLLguJfguLHguIfguIHguLIKK+C4m+C4suC4l+C4suC4mQor4Lib4Liy4LiX4Li44LiB4LiyCivguJvguLLguJkKK+C4m+C5iOC4suC4mQor4Lib4LmJ4Liy4LiZCivguJvguLLguJnguJTguIcKK+C4m+C5ieC4suC4meC4peC4oQor4Lib4Liy4LiZ4LiwCivguJvguLLguJnguLTguYDguKLguJkKK+C4m+C4suC4meC4teC4ouC4sAor4Lib4LmJ4Liy4LiaCivguJvguYrguLLguJoKK+C4m+C4suC4m+C4reC4q+C4ouC4teC4quC4seC4h+C4huC4suC4leC4sgor4Lib4Liy4Lie4LiI4LiZ4LmMCivguJvguLLguKEKK+C4m+C4suC5guC4oeC4geC4guC5jAor4Lib4LmI4Liy4LiiCivguJvguYnguLLguKIKK+C4m+C4suC4ouC4suC4qgor4Lib4Liy4Lij4LmM4LiBCivguJvguLLguKPguYzguYDguIHguJXguYwKK+C4m+C4suC4o+C5jOC4leC4tQor4Lib4Liy4Lij4Lih4Li1CivguJvguLLguKPguKnguJPguLUKK+C4m+C4suC4o+C4suC4iuC4tOC4gQor4Lib4Liy4Lij4Li04LiJ4Lix4LiV4LijCivguJvguLLguKPguLTguIrguLLguJUKK+C4m+C4suC4o+C4tOC4quC4uOC4l+C4mOC4tOC4qOC4teC4pQor4Lib4Liy4Lij4Li44Lib4LiZ4LiwCivguJvguLLguKUKK+C4m+C4suC4peC5jOC4oQor4Lib4Liy4Lil4Li04LmE4Lil4Lii4LiB4LmMCivguJvguLLguKXguLUKK+C4m+C5iOC4suC4pwor4Lib4LmK4Liy4LinCivguJvguLLguKfguYYKK+C4m+C4suC4p+C4gQor4Lib4Liy4Lin4LiI4LiZ4LiwCivguJvguLLguKfguLLguKMKK+C4m+C4suC4qeC4suC4kwor4Lib4Liy4LiqCivguJvguLLguKrguLLguJMKK+C4m+C4suC4quC4suC4l+C4tOC4geC4sAor4Lib4Liy4Lir4LiZ4Lix4LiZCivguJvguLLguKvguLXguYgKK+C4m+C4suC4q+C4uOC4kwor4Lib4LizCivguJvguYnguLMKK+C4m+C5ieC4s+C5huC5gOC4m+C5i+C4reC5hgor4Lib4LmJ4Liz4LmA4Lib4LmJ4LitCivguJvguYnguLPguYDguJvguYvguK0KK+C4m+C4tOC4geC4meC4tOC4gQor4Lib4Li04LiB4Lit4Lix4LieCivguJvguLTguIfguITguKUKK+C4m+C4tOC4h+C4hOC4peC4sAor4Lib4Li04LiH4Lib4Lit4LiHCivguJvguLTguI7guIEKK+C4m+C4tOC4j+C4kOC4sAor4Lib4Li04LiQ4Li0CivguJvguLTguJPguJHguLAKK+C4m+C4tOC4lAor4Lib4Li04LiU4LmA4LiV4LmK4Liy4LiwCivguJvguLTguJXguJXguLAKK+C4m+C4tOC4leC4sgor4Lib4Li04LiV4Li4CivguJvguLTguJXguLjguIjguInguLIKK+C4m+C4tOC4leC4uOC4pQor4Lib4Li04LiV4Li44Lil4LiyCivguJvguLTguJXguLjguKXguLLguJnguLUKK+C4m+C4tOC5guC4leC4o+C5gOC4peC4teC4ouC4oQor4Lib4Li04LmI4LiZCivguJvguLTguYrguJkKK+C4m+C4tOC5iuC4meC5hgor4Lib4Li04LmI4LiZ4LiV4LitCivguJvguLTguYjguJnguYLguJUKK+C4m+C4tOC4m+C4nOC4peC4tQor4Lib4Li04LmI4LihCivguJvguLTguYnguKEKK+C4m+C4tOC4ouC4seC4h+C4hOC4uAor4Lib4Li04Lij4Lix4LiZ4Liu4LiyCivguJvguLTguKXguLHguJnguJjguJnguYwKK+C4m+C4tOC5i+C4pwor4Lib4Li04Lio4Liy4LiICivguJvguLTguKrguLHguIcKK+C4m+C4tOC5hOC4qgor4Lib4Li04Lir4LiBCivguJvguLTguKvguKXguLHguYjguJkKK+C4m+C4tQor4Lib4Li14LmICivguJvguLXguYkKK+C4m+C4teC5iwor4Lib4Li14LiBCivguJvguLXguI7guIHguIbguKMKK+C4m+C4teC4kOC4geC4sAor4Lib4Li14LiQ4LiwCivguJvguLXguYrguJQKK+C4m+C4teC4leC4geC4quC4tOC4kwor4Lib4Li14LiV4Li0CivguJvguLXguJkKK+C4m+C4teC4mgor4Lib4Li14LmK4LiaCivguJvguLXguYLguJvguYoKK+C4m+C4teC4qOC4suC4iAor4Lib4Li14LisCivguJvguLXguKzguIEKK+C4m+C4teC4rOC4sgor4Lib4Li24LiBCivguJvguLbguIcKK+C4m+C4tuC5iOC4hwor4Lib4Li24LmK4LiHCivguJvguLbguYvguIcKK+C4m+C4tuC5ieC4lAor4Lib4Li24LmJ4LiZCivguJvguLbguKHguJvguLfguYnguK0KK+C4m+C4t+C4lOC4m+C4tuC4hwor4Lib4Li34LiZCivguJvguLfguK0KK+C4m+C4t+C5ieC4rQor4Lib4Li34LmL4LitCivguJvguLgKK+C4m+C4uOC5igor4Lib4Li44LiBCivguJvguLjguIHguJvguLjguKIKK+C4m+C4uOC5iuC4geC4peC4uOC4gQor4Lib4Li44LiE4Lil4LiwCivguJvguLjguYnguIfguIHguLXguYsKK+C4m+C4uOC4h+C4hOC4ngor4Lib4Li44LiH4LiE4Lin4LiwCivguJvguLjguIfguKXguLTguIfguITguYwKK+C4m+C4uOC4h+C4peC4tuC4h+C4hOC5jAor4Lib4Li44LiI4LiJ4LiyCivguJvguLjguI8KK+C4m+C4uOC4k+C4keC4o+C4tOC4gQor4Lib4Li44LiUCivguJvguLjguJXguJXguLAKK+C4m+C4uOC4leC4l+C4suC4o+C4l+C4suC4mQor4Lib4Li44LiW4Li44LiK4LiZCivguJvguLjguJnguYDguJfguYjguLLguIHguYvguIcKK+C4m+C4uOC4meC4meC4suC4hAor4Lib4Li44LiZ4Lig4LieCivguJvguLjguJnguLHguJrguJvguLjguJnguLHguIcKK+C4m+C4uOC4meC4seC4nuC4quC4uAor4Lib4Li44LiaCivguJvguLjguYrguJoKK+C4m+C4uOC4muC4m+C4seC4mgor4Lib4Li44LmK4Lia4Lib4Lix4LmK4LiaCivguJvguLjguJvguJzguLAKK+C4m+C4uOC4m+C4sAor4Lib4Li44Lie4Lie4LiwCivguJvguLjguYjguKEKK+C4m+C4uOC5ieC4oQor4Lib4Li44LmL4LihCivguJvguLjguYjguKHguJvguKXguLIKK+C4m+C4uOC5ieC4oeC5gOC4m+C5ieC4hwor4Lib4Li44LmI4Lih4LmA4Lib4Li34Lit4LiBCivguJvguLjguYnguKHguYDguJvguLfguK3guIEKK+C4m+C4uOC4oeC4sgor4Lib4Li44LiiCivguJvguLjguYnguKIKK+C4m+C4uOC5i+C4ogor4Lib4Li44LijCivguJvguLjguKPguJPguLAKK+C4m+C4uOC4o+C4seC4leC4luC4tOC4oeC4l+C4tOC4qAor4Lib4Li44Lij4Liy4LiTCivguJvguLjguKPguLLguJPguLAKK+C4m+C4uOC4o+C4tOC4oeC4l+C4tOC4qAor4Lib4Li44Lij4Li04Lih4Lie4Lij4Lij4Lip4LiyCivguJvguLjguKPguLTguKrguKDguLLguKfguLAKK+C4m+C4uOC4o+C4tOC5guC4quC4lOC4oQor4Lib4Li44LmA4Lij4LiI4Liy4Lij4Li04LiBCivguJvguLjguYLguKPguKvguLTguJUKK+C4m+C4uOC4peC4peC4tOC4h+C4hOC5jAor4Lib4Li44Lil4Lil4Li24LiH4LiE4LmMCivguJvguLjguKXguLTguJnguJfguYwKK+C4m+C4uOC4peC4uQor4Lib4Li44LmA4Lil4LiHCivguJvguLjguYDguKXguIfguYYKK+C4m+C4uOC5guC4peC4m+C4uOC5gOC4pQor4Lib4Li44LmB4Lir4Lil4LiwCivguJvguLjguKzguKfguLAKK+C4m+C4uQor4Lib4Li54LmICivguJvguLnguIrguIHguLAKK+C4m+C4ueC4iuC4meC4teC4ouC4sAor4Lib4Li54LiK4LiyCivguJvguLnguIrguLTguJUKK+C4m+C4ueC4lAor4Lib4Li54LiU4LiB4LiB4Liq4LmJ4Lih4Lih4LitCivguJvguLnguJXguLQKK+C4m+C4ueC4mQor4Lib4Li54LihCivguJvguLnguYnguKLguKLguLXguYnguJvguLnguYnguKLguLMKK+C4m+C4ueC5iOC4ouC5iOC4sgor4Lib4Li54Lij4LiwCivguJvguLnguKXguLkKK+C4m+C4ueC4p+C4sgor4LmA4Lib4LmJCivguYDguJvguYsKK+C5gOC4m+C4gQor4LmA4Lib4LmK4LiBCivguYDguJvguIHguILguYwKK+C5gOC4m+C5iOC4hwor4LmA4Lib4LmJ4LiHCivguYDguJvguYrguIcKK+C5gOC4m+C5i+C4hwor4LmA4Lib4LmH4LiUCivguYDguJvguYfguJTguYTguIvguYnguYTguIHguYjguJXguK3guJTguKrguKXguLHguIHguKPguK3guJTguKvguKHguLnguKrguLUKK+C5gOC4m+C5h+C4mQor4LmA4Lib4LmH4LiZ4LiV4LmJ4LiZCivguYDguJvguKLguKLguLLguKUKK+C5gOC4m+C4owor4LmA4Lib4Lij4LmH4LiHCivguYDguJvguKPguJUKK+C5gOC4m+C4o+C4oQor4LmA4Lib4Lij4LiiCivguYDguJvguKPguKLguYYKK+C5gOC4m+C4o+C4rQor4LmA4Lib4Lij4Lit4LiwCivguYDguJvguKPguLIKK+C5gOC4m+C4o+C4suC4sAor4LmA4Lib4Lij4Liy4Liw4LmB4Lib4Lij4LiwCivguYDguJvguKPguLXguKLguIcKK+C5gOC4m+C4o+C4teC5ieC4ouC4hwor4LmA4Lib4Lij4Li14Lii4LiNCivguYDguJvguKPguLXguKLguJoKK+C5gOC4m+C4o+C4teC5iOC4ouC4oQor4LmA4Lib4Lij4Li14Lii4LinCivguYDguJvguKPguLXguYnguKLguKcKK+C5gOC4m+C4o+C4teC5ieC4ouC4p+C4q+C4p+C4suC4mQor4LmA4Lib4Lij4Li14Lii4LiwCivguYDguJvguKPguLXguYrguKLguLAKK+C5gOC4m+C4o+C4t+C5iOC4reC4hwor4LmA4Lib4Lij4Li34LmJ4Lit4LiiCivguYDguJvguKUKK+C5gOC4m+C4peC5iOC4hwor4LmA4Lib4Lil4LinCivguYDguJvguKXguLIKK+C5gOC4m+C4peC5iOC4sgor4LmA4Lib4Lil4LmJ4LiyCivguYDguJvguKXguLLguLAKK+C5gOC4m+C4peC4teC5ieC4ogor4LmA4Lib4Lil4Li14LmI4Lii4LiZCivguYDguJvguKXguLXguYjguKLguKEKK+C5gOC4m+C4peC4teC5iOC4ouC4pwor4LmA4Lib4Lil4Li14LmI4Lii4Lin4LiU4LizCivguYDguJvguKXguLfguK3guIEKK+C5gOC4m+C4peC4t+C4reC4geC4geC4o+C4sOC5gOC4l+C4teC4ouC4oQor4LmA4Lib4Lil4Li34Lit4LiHCivguYDguJvguKXguLfguYnguK3guIcKK+C5gOC4m+C4peC4t+C4reC4ogor4LmA4Lib4LioCivguYDguJvguKjguKUKK+C5gOC4m+C4qOC4seC4qgor4LmA4Lib4Liq4LiB4Liy4LijCivguYDguJvguKrguKUKK+C5gOC4m+C4quC4uOC4jQor4LmA4Lib4Liq4Li44LmE4LiT4LiiCivguYDguJvguYvguK0KK+C5gOC4m+C5ieC4reC5gOC4ouC5ieC4rQor4LmA4Lib4Lit4Lij4LmM4LmA4LiL4LmH4LiZ4LiV4LmMCivguYDguJvguYvguK3guYDguKvguKXguK0KK+C5gOC4m+C4sAor4LmA4Lib4Liw4Lib4LiwCivguYDguJvguLIKK+C5gOC4m+C5iOC4sgor4LmA4Lib4LmJ4LiyCivguYDguJvguYrguLIKK+C5gOC4m+C5i+C4sgor4LmA4Lib4LmL4Liy4Liu4Li34LmJ4LitCivguYDguJvguLLguLAKK+C5gOC4m+C4suC4sOC5gOC4m+C4teC5iuC4ouC4sAor4LmA4Lib4Liy4Liw4LmB4Lib4LiwCivguYDguJvguLLguLDguYDguKvguKXguLLguLAKK+C5gOC4m+C4tOC4gQor4LmA4Lib4Li04LiHCivguYDguJvguLTguIfguYYKK+C5gOC4m+C4tOC4h+C4oeC4suC4hwor4LmA4Lib4Li04LiUCivguYDguJvguLTguYjguJkKK+C5gOC4m+C4tOC4mgor4LmA4Lib4Li04LmK4LiaCivguYDguJvguLTguJrguILguYnguLLguKcKK+C5gOC4m+C4teC4ogor4LmA4Lib4Li14Lii4LiBCivguYDguJvguLXguYrguKLguIEKK+C5gOC4m+C4teC4ouC5geC4iuC4o+C5jAor4LmA4Lib4Li14LmK4Lii4LiaCivguYDguJvguLXguYjguKLguKEKK+C5gOC4m+C4teC4ouC4pwor4LmA4Lib4Li14LmJ4Lii4LinCivguYDguJvguLXguKLguKvguKfguKIKK+C5gOC4m+C4teC4ouC4sAor4LmA4Lib4Li34Lit4LiBCivguYDguJvguLfguYnguK3guJkKK+C5geC4mwor4LmB4Lib4LmJ4LiHCivguYHguJvguYvguIcKK+C5geC4m+C5ieC4h+C5geC4iuC5iAor4LmB4Lib4LiUCivguYHguJvguYrguJQKK+C5geC4m+C4l+C4uQor4LmB4Lib4LmJ4LiZCivguYHguJvguJoKK+C5geC4m+C5iuC4mgor4LmB4Lib4LihCivguYHguJvguKMKK+C5geC4m+C4o+C5iwor4LmB4Lib4Lij4LiBCivguYHguJvguKPguIcKK+C5geC4m+C4o+C5iOC4hwor4LmB4Lib4Lij4LiH4Lil4LmJ4Liy4LiH4LiC4Lin4LiUCivguYHguJvguKPguIfguKvguLnguKvguJnguLkKK+C5geC4m+C4o+C5iuC4lAor4LmB4Lib4Lij4LmJ4LiZCivguYHguJvguKPguYvguJkKK+C5geC4m+C4o+C5i+C5geC4m+C4o+C5ieC4mQor4LmB4Lib4Lij4LiwCivguYHguJvguKUKK+C5geC4m+C4peC5iQor4LmB4Lib4Lil4LiBCivguYHguJvguKXguIcKK+C5geC4m+C4peC4mQor4LmB4Lib4Lil4LiaCivguYHguJvguYnguKcKK+C5geC4m+C5iuC4pwor4LmB4Lib4LmL4LinCivguYHguJvguLAKK+C5geC4m+C5iuC4sAor4LmB4Lib4LmK4Liw4LiL4LiwCivguYLguJsKK+C5guC4m+C5iAor4LmC4Lib4LmJCivguYLguJvguYoKK+C5guC4m+C4gQor4LmC4Lib4LmK4LiBCivguYLguJvguYrguIHguYDguIHguK3guKPguYwKK+C5guC4m+C4geC4guC4o+C4k+C4tQor4LmC4Lib4LmA4LiBCivguYLguJvguIcKK+C5guC4m+C5iOC4hwor4LmC4Lib4LmJ4LiHCivguYLguJvguYjguIfguILguYjguLLguKEKK+C5guC4m+C4h+C4peC4suC4hwor4LmC4Lib4LmI4LiH4Lin4Li04LiUCivguYLguJvguYnguIfguYLguKvguKLguIcKK+C5guC4m+C4kOC4m+C4l+C4sgor4LmC4Lib4LiU4LiBCivguYLguJvguJXguJbguIHguLAKK+C5guC4m+C4mQor4LmC4Lib4LibCivguYLguJvguYrguKLguIHguLHguYnguIEKK+C5guC4m+C5iuC4ouC5gOC4i+C4teC4ouC4mQor4LmC4Lib4Lij4LiHCivguYLguJvguKPguYjguIcKK+C5guC4m+C4o+C4lAor4LmC4Lib4Lij4LiV4Lit4LiZCivguYLguJvguKPguJXguLXguJkKK+C5guC4m+C4o+C5gOC4leC4quC5geC4leC4meC4leC5jAor4LmC4Lib4Lij4LmB4LiX4Lij4LiB4LmA4LiV4Lit4Lij4LmMCivguYLguJvguKPguKIKK+C5guC4m+C4o+C4teC4quC4oOC4sgor4LmC4Lib4Lil4LmI4LiHCivguYLguJvguKXguLTguYLguK0KK+C5guC4m+C5guC4pQor4LmC4Lib4LiqCivguYLguJvguKrguIEKK+C5guC4m+C4quC4geC4suC4o+C5jOC4lAor4LmC4Lib4Liq4LmA4LiV4Lit4Lij4LmMCivguYLguJvguKrguLLguKfguJnguLTguIHguKHguLnguKUKK+C5guC4m+C4sAor4LmC4Lib4LmK4LiwCivguYLguJvguYrguLDguIjguYnguLLguKIKK+C5hOC4mwor4LmE4Lib4LmICivguYTguJvguYsKK+C5hOC4m+C5i+C5gOC4m+C5iwor4LmE4Lib4Lii4Liy4LilCivguYTguJvguKPguKnguJPguLXguKLguYwKK+C5hOC4m+C4peC5iAor4LmE4Lib4Lio4Liy4LiICivguYTguJvguKjguLLguIjguLUKK+C4nAor4Lic4LiBCivguJzguIHguYDguKPguLfguK3guIEKK+C4nOC4geC4sgor4Lic4LiB4Liy4LiiCivguJzguITguKEKK+C4nOC4hwor4Lic4LiH4LiBCivguJzguIfguKEKK+C4nOC4h+C4owor4Lic4LiH4Lit4LiZCivguJzguIfguK3guJoKK+C4nOC4h+C4sAor4Lic4LiH4Liy4LiUCivguJzguIfguYjguLLguJkKK+C4nOC4iOC4hwor4Lic4LiI4LiNCivguJzguIjguLHguI0KK+C4nOC4iOC4suC4mQor4Lic4LiK4Li44LihCivguJzguI3guLIKK+C4nOC4k+C4sAor4Lic4LiT4Li04LiZCivguJzguJQKK+C4nOC4lOC4uOC4hwor4Lic4LmA4LiU4Li04LiZCivguJzguJfguKEKK+C4nOC4meC4p+C4gQor4Lic4LiZ4Lin4LiKCivguJzguJnguLHguIcKK+C4nOC4meC4tOC4lAor4Lic4LiZ4Li24LiBCivguJzguKEKK+C4nOC4oeC4meC4suC4hwor4Lic4Lii4Lit4LiHCivguJzguKLguYjguLPguYDguJzguKLguK0KK+C4nOC4o+C4quC4uAor4Lic4Lij4Li04LiVCivguJzguKPguLjguJ7guIEKK+C4nOC4pQor4Lic4Lil4LiBCivguJzguKXguITguLjguJkKK+C4nOC4peC4hOC4uOC4meC4tQor4Lic4Lil4LiHCivguJzguKXguK0KK+C4nOC4peC5h+C4reC4hwor4Lic4Lil4LmH4Lit4LiiCivguJzguKXguLAKK+C4nOC4peC4seC4gQor4Lic4Lil4Lix4LiUCivguJzguKXguLHguJoKK+C4nOC4peC4seC4p+C4sAor4Lic4Lil4LiyCivguJzguKXguLLguI0KK+C4nOC4peC4tAor4Lic4Lil4Li04LiB4LiwCivguJzguKXguLTguJUKK+C4nOC4peC4tOC4mQor4Lic4Lil4Li1CivguJzguKXguLXguJzguKXguLLguKEKK+C4nOC4peC4tuC4gQor4Lic4Lil4Li24LmI4LiHCivguJzguKXguLfguK0KK+C4nOC4peC4uAor4Lic4Lil4Li44LiHCivguJzguKXguLjguJQKK+C4nOC4peC4uOC4mQor4Lic4Lil4Li44LiaCivguJzguKXguLjguKIKK+C4nOC4peC4uQor4Lic4Lin4LiyCivguJzguKrguKEKK+C4nOC4quC4oeC5gOC4quC4o+C5h+C4iAor4Lic4Liq4Liy4LiZCivguJzguKrguLLguKIKK+C4nOC4quC4suC4owor4Lic4Lit4LiBCivguJzguK3guIcKK+C4nOC5iOC4reC4hwor4Lic4LmI4Lit4LiZCivguJzguK3guJoKK+C4nOC4reC4oQor4Lic4LmH4Lit4LiiCivguJzguYjguK3guKIKK+C4nOC4reC4p+C4lAor4Lic4Lit4Li54LiZCivguJzguLAKK+C4nOC4sOC5geC4hOC4hwor4Lic4Liw4LiU4LiyCivguJzguLDguKrguLIKK+C4nOC4sOC4q+C4oeC4tQor4Lic4Liw4Lit4Lit4LiaCivguJzguLDguK3guLfguJTguJzguLDguK3guKEKK+C4nOC4seC4gQor4Lic4Lix4LiB4LmE4LiBCivguJzguLHguIHguILguKfguIcKK+C4nOC4seC4geC4guC4teC5ieC4guC4p+C4hwor4Lic4Lix4LiB4LmC4LiJ4LihCivguJzguLHguIHguIrguLUKK+C4nOC4seC4geC4leC4muC4iuC4p+C4sgor4Lic4Lix4LiB4LiX4Lit4LiU4Lii4Lit4LiUCivguJzguLHguIHguJrguLjguYnguIcKK+C4nOC4seC4geC4muC4uOC5ieC4h+C4guC4seC4mQor4Lic4Lix4LiB4Lia4Li44LmJ4LiH4LiI4Li14LiZCivguJzguLHguIHguJrguLjguYnguIfguJfguLDguYDguKUKK+C4nOC4seC4geC4muC4uOC5ieC4h+C4neC4o+C4seC5iOC4hwor4Lic4Lix4LiB4Lia4Li44LmJ4LiH4Lij4LmJ4Lin4LihCivguJzguLHguIHguJrguLjguYnguIfguKPguLHguYnguKcKK+C4nOC4seC4geC5gOC4muC4teC5ieC4ogor4Lic4Lix4LiB4LmA4Lia4Li14LmJ4Lii4LmD4Lir4LiN4LmICivguJzguLHguIHguJvguKXguLHguIcKK+C4nOC4seC4geC4m+C4uOC5iOC4oeC4m+C4peC4sgor4Lic4Lix4LiB4LmA4Lic4LmH4LiUCivguJzguLHguIHguYTguJzguYgKK+C4nOC4seC4geC4o+C4ueC5ieC4meC4reC4mQor4Lic4Lix4LiB4LmB4Lin4LmI4LiZCivguJzguLHguIHguKrguLLguJoKK+C4nOC4seC4geC4quC4suC4oeC4q+C4suC4pwor4Lic4Lix4LiB4LmA4Liq4Li14LmJ4Lii4LiZCivguJzguLHguIHguKvguJnguK3guIEKK+C4nOC4seC4geC4q+C4meC4reC4hwor4Lic4Lix4LiB4Lir4LiZ4Liy4LihCivguJzguLHguIHguKvguKfguLLguJkKK+C4nOC4seC4geC5hOC4q+C4oQor4Lic4Lix4LiB4Lit4Li14LmB4Lib4LiwCivguJzguLHguITguITguLjguJMKK+C4nOC4seC4hOC4hOC4uOC4k+C4tQor4Lic4Lix4LiHCivguJzguLHguJQKK+C4nOC4seC4mQor4Lic4Lix4LiaCivguJzguLHguKXguITguLjguJnguLUKK+C4nOC4seC4pwor4Lic4Lix4Lin4LiwCivguJzguLHguKrguKrguLAKK+C4nOC4sgor4Lic4LmI4LiyCivguJzguYnguLIKK+C4nOC4suC4gQor4Lic4Liy4LiHCivguJzguYjguLLguIcKK+C4nOC4suC4k+C4tOC4lQor4Lic4Liy4LiUCivguJzguLLguJXguLQKK+C4nOC5iOC4suC4mQor4Lic4Liy4LihCivguJzguLLguKIKK+C4nOC5iOC4suC4ogor4Lic4LmJ4Liy4LiiCivguJzguLLguKUKK+C4nOC4suC4peC4hOC4uOC4mQor4Lic4Liy4Lil4LiyCivguJzguYjguLLguKcKK+C4nOC4suC4quC4uOC4gQor4Lic4LmJ4Liy4Liu4Liy4LiUCivguJzguLMKK+C4nOC5ieC4s+C5hgor4Lic4Li0CivguJzguLTguIcKK+C4nOC4tOC4lAor4Lic4Li04LiU4LiBCivguJzguLTguJUKK+C4nOC4tOC4mQor4Lic4Li04LinCivguJzguLUKK+C4nOC4teC4leC4reC4h+C5gOC4q+C4peC4t+C4reC4hwor4Lic4Li14LmJ4Lin4LmMCivguJzguLbguIcKK+C4nOC4tuC5iOC4hwor4Lic4Li24LmJ4LiHCivguJzguLfguYjguJkKK+C4nOC4uAor4Lic4Li44LiUCivguJzguLjguKLguJzguIcKK+C4nOC4uOC4quC4o+C4suC4hOC4sgor4Lic4Li54LmJCivguJzguLnguIEKK+C5gOC4nAor4LmA4Lic4LiHCivguYDguJzguIrguLTguI0KK+C5gOC4nOC5h+C4lAor4LmA4Lic4LiU4LmH4LiICivguYDguJzguJTguLTguKEKK+C5gOC4nOC4lOC4teC4ouC4hwor4LmA4Lic4LmI4LiZCivguYDguJzguJnguLTguIEKK+C5gOC4nOC4ogor4LmA4Lic4Lii4LitCivguYDguJzguKLguLTguJoKK+C5gOC4nOC4pQor4LmA4Lic4Lil4LmICivguYDguJzguKXguYkKK+C5gOC4nOC4peC5h+C4lAor4LmA4Lic4Lil4LitCivguYDguJzguKXguLAKK+C5gOC4nOC4peC4suC4sAor4LmA4Lic4Lil4Liy4Liw4LmB4Lic4Lil4LiwCivguYDguJzguKXguLXguKLguIcKK+C5gOC4nOC4reC5gOC4o+C4rQor4LmA4Lic4Lit4Li04LiNCivguYDguJzguK3guLTguKUKK+C5gOC4nOC4sAor4LmA4Lic4LiyCivguYDguJzguYjguLIKK+C5gOC4nOC5ieC4sgor4LmA4Lic4LmJ4Liy4Lic4LiHCivguYDguJzguLLguLAKK+C5gOC4nOC4tOC5ieC4hwor4LmA4Lic4Li04LiZCivguYDguJzguLTguJnguYYKK+C5gOC4nOC4teC4ouC4mQor4LmA4Lic4Li14Lii4LiwCivguYDguJzguLfguK0KK+C5gOC4nOC4t+C5iOC4rQor4LmA4Lic4Li34Lit4LiBCivguYDguJzguLfguK3guJQKK+C5gOC4nOC4t+C4reC4mQor4LmA4Lic4Li34LmI4Lit4LiZCivguYHguJzguYgKK+C5geC4nOC4gQor4LmB4Lic4LiHCivguYHguJzguJQKK+C5geC4nOC4lOC5gOC4nOC4sgor4LmB4Lic4LiU4LmA4Liq4Li14Lii4LiHCivguYHguJzguJkKK+C5geC4nOC5iOC4mQor4LmB4Lic4LiZ4LiBCivguYHguJzguKUKK+C5geC4nOC4peC4hwor4LmB4Lic4Lil4LmH4LiaCivguYHguJzguKXguYfguJrguYYKK+C5geC4nOC4peC5h+C4pwor4LmB4Lic4Lil4LiwCivguYHguJzguYjguKcKK+C5geC4nOC5ieC4pwor4LmC4LicCivguYLguJzguIcKK+C5guC4nOC4j+C4kOC4seC4nuC4nuC4sAor4LmC4Lic4LiZCivguYLguJzguKIKK+C5guC4nOC4peC5iAor4LmC4Lic4Lil4LiB4LmA4Lic4Lil4LiBCivguYLguJzguKXguLAKK+C5guC4nOC4reC4mQor4LmC4Lic4LiwCivguYTguJwKK+C5hOC4nOC5iAor4LmE4Lic4LiXCivguYTguJzguYjguJzguLHguIcKK+C4nQor4Lid4LiZCivguJ3guKPguLHguYjguIcKK+C4neC4o+C4seC5iOC4h+C5gOC4qOC4qgor4Lid4Lij4Lix4LmI4LiZCivguJ3guYjguK0KK+C4neC4reC4ogor4Lid4Lix4LiBCivguJ3guLHguIHguJ3guYjguLLguKIKK+C4neC4seC4geC5g+C4neC5iAor4Lid4Lix4LiHCivguJ3guLHguYjguIcKK+C4neC4seC4lAor4Lid4Lix4LiZCivguJ3guLIKK+C4neC5iOC4sgor4Lid4LmJ4LiyCivguJ3guLLguIEKK+C4neC4suC4hwor4Lid4Liy4LiUCivguJ3guLLguJkKK+C4neC4suC4ogor4Lid4LmI4Liy4LiiCivguJ3guYnguLLguKIKK+C4neC4tOC5iOC4mQor4Lid4Li1CivguJ3guLXguYgKK+C4neC4teC4gQor4Lid4Li14Lir4Lih4Lit4LiaCivguJ3guLbguIEKK+C4neC4t+C4lAor4Lid4Li34LiZCivguJ3guLjguYjguJkKK+C4neC4ueC4hwor4LmA4Lid4LmJ4LiyCivguYDguJ3guLfguK0KK+C5gOC4neC4t+C4reC4gQor4LmA4Lid4Li34Lit4LiHCivguYDguJ3guLfguYjguK3guJkKK+C5geC4neC4gQor4LmB4Lid4LiHCivguYHguJ3guJQKK+C5g+C4neC5iAor4LmE4LidCivguJ4KK+C4nuC4gQor4Lie4LiB4LiI4LijCivguJ7guIHguJnguLjguYjguJkKK+C4nuC4geC4nuC5iOC4suC4ogor4Lie4LiB4Lil4LihCivguJ7guIHguKvguLTguJkKK+C4nuC4geC4reC4suC4p+C4uOC4mAor4Lie4LiB4LiyCivguJ7guIHguLjguKPguLAKK+C4nuC4geC4uOC4pQor4Lie4LiHCivguJ7guIfguKjguYwKK+C4nuC4iOC4meC5jAor4Lie4LiI4LiZ4LiyCivguJ7guIjguJnguLLguKPguJYKK+C4nuC4iOC4meC4teC4ouC5jAor4Lie4LiI4Lih4Liy4LiZCivguJ7guIjguLUKK+C4nuC4iuC4o+C4sAor4Lie4LiN4LiyCivguJ7guI3guLLguJMKK+C4nuC4jeC4suC5hOC4nwor4Lie4LiN4Liy4Lil4LitCivguJ7guJPguLTguIoKK+C4nuC4k+C4tOC4iuC4ouC5jAor4Lie4LiUCivguJ7guJjguLkKK+C4nuC4mQor4Lie4LmI4LiZCivguJ7guYnguJkKK+C4nuC4meC4oQor4Lie4LiZ4Lit4LiHCivguJ7guJnguK3guKEKK+C4nuC4meC4seC4gQor4Lie4LiZ4Lix4LiB4LiH4Liy4LiZCivguJ7guJnguLHguIcKK+C4nuC4meC4seC4lOC4owor4Lie4LiZ4Lix4LiZCivguJ7guJnguLHguKoKK+C4nuC4meC4sgor4Lie4LiZ4Liy4LiUCivguJ7guJnguLLguJnguJTguKMKK+C4nuC4meC4suC4meC4leC5jAor4Lie4LiZ4Liy4LiiCivguJ7guJnguLTguJTguLIKK+C4nuC4meC4tOC4lQor4Lie4LiZ4Li14Lii4LiBCivguJ7guYDguJnguIEKK+C4nuC5gOC4meC4iOC4owor4Lie4LiaCivguJ7guJrguLkKK+C4nuC4oeC5iOC4sgor4Lie4Lii4LiKCivguJ7guKLguIrguJnguYwKK+C4nuC4ouC4leC4tOC5gOC4o+C4gQor4Lie4Lii4LiZ4LiV4LmMCivguJ7guKLguKgKK+C4nuC4ouC4seC4gQor4Lie4Lii4Lix4LiE4LiG4LmMCivguJ7guKLguLHguIrguJnguYwKK+C4nuC4ouC4seC4jeC4iuC4meC4sAor4Lie4Lii4Lix4LiVCivguJ7guKLguLHguJoKK+C4nuC4ouC4suC4geC4o+C4k+C5jAor4Lie4Lii4Liy4LiG4Lij4LmMCivguJ7guKLguLLguIfguITguYwKK+C4nuC4ouC4suC4mOC4tAor4Lie4Lii4Liy4LiZCivguJ7guKLguLLguJrguLLguJcKK+C4nuC4ouC4suC4muC4suC4pQor4Lie4Lii4Liy4LihCivguJ7guKLguLLguKLguLLguKEKK+C4nuC4ouC4suC4pQor4Lie4Lii4Li4CivguJ7guKLguLjguIcKK+C4nuC4ouC4uOC4q+C4owor4Lie4Lii4Li44Lir4LiwCivguJ7guKLguLnguYjguKvguYwKK+C4nuC5gOC4ouC4teC4ogor4Lie4LijCivguJ7guKPguJUKK+C4nuC4o+C4oQor4Lie4Lij4Lih4LiE4LiUCivguJ7guKPguKHguYHguJTguJkKK+C4nuC4o+C4oeC4oeC4tAor4Lie4Lij4Lij4LiECivguJ7guKPguKPguITguYwKK+C4nuC4o+C4o+C4hOC4suC4meC4leC5jAor4Lie4Lij4Lij4LiTCivguJ7guKPguKPguJPguJnguLIKK+C4nuC4o+C4o+C4k+C4o+C4suC4ogor4Lie4Lij4Lij4LiU4Li24LiBCivguJ7guKPguKPguKXguLLguKIKK+C4nuC4o+C4o+C4qQor4Lie4Lij4Lij4LmA4Lir4LiyCivguJ7guKPguKPguYDguK3guLTguI0KK+C4nuC4o+C4p+C4h+C5gOC4nuC4o+C4teC4ouC4hwor4Lie4Lij4Lin4LiUCivguJ7guKPguKfguJkKK+C4nuC4o+C4q+C4oQor4Lie4Lij4Lit4LiBCivguJ7guKPguYjguK3guIcKK+C4nuC4o+C5ieC4reC4hwor4Lie4Lij4Lit4LiUCivguJ7guKPguYnguK3guKEKK+C4nuC4o+C5iOC4reC4oeC4nuC4o+C5ieC4rQor4Lie4Lij4LmI4Lit4LiiCivguJ7guKPguYnguK3guKIKK+C4nuC4o+C4sAor4Lie4Lij4Liw4LiI4Lix4LiZ4LiX4Lij4LmM4LiE4Lij4Li24LmI4LiH4LiL4Li14LiBCivguJ7guKPguLDguYDguIjguYnguLLguKXguK3guKLguJbguLLguJQKK+C4nuC4o+C4sOC5gOC4iOC5ieC4suC4q+C5ieC4suC4nuC4o+C4sOC4reC4h+C4hOC5jAor4Lie4Lij4Liw4LiZ4Lit4LihCivguJ7guKPguLDguJnguLLguJQKK+C4nuC4o+C4sOC4ouC4suC5gOC4peC5h+C4muC4hOC4o+C4uOC4kQor4Lie4Lij4Liw4Lii4Liy4Lin4Lix4LiZCivguJ7guKPguLDguKXguJoKK+C4nuC4o+C4sOC4peC4t+C4rQor4Lie4Lij4Liw4LmB4Lin4LinCivguJ7guKPguLDguKvguLIKK+C4nuC4o+C4sOC4q+C4suC4oQor4Lie4Lij4Liw4Lir4Li04LiUCivguJ7guKPguLDguK7guLLguKEKK+C4nuC4o+C4seC4geC4nuC4o+C5ieC4reC4oQor4Lie4Lij4Lix4LmI4LiHCivguJ7guKPguLHguJQKK+C4nuC4o+C4seC5iOC4mQor4Lie4Lij4Lix4LiaCivguJ7guKPguYjguLIKK+C4nuC4o+C5ieC4sgor4Lie4Lij4Liy4LiBCivguJ7guKPguLLguIcKK+C4nuC4o+C5iOC4suC4hwor4Lie4Lij4Liy4LiUCivguJ7guKPguLLguJkKK+C4nuC4o+C4suC4ogor4Lie4Lij4Liy4LinCivguJ7guKPguLLguKvguKHguJPguYwKK+C4nuC4o+C4suC4q+C4oeC4k+C4tQor4Lie4Lij4Liy4Lir4Lih4Li1CivguJ7guKPguLMKK+C4nuC4o+C5iOC4swor4Lie4Lij4LmJ4LizCivguJ7guKPguLPguYYKK+C4nuC4o+C4tOC4gQor4Lie4Lij4Li04LmJ4LiHCivguJ7guKPguLTguJoKK+C4nuC4o+C4tOC4muC5hOC4q+C4pwor4Lie4Lij4Li04LmJ4LihCivguJ7guKPguLbguIcKK+C4nuC4o+C4tuC4mQor4Lie4Lij4Li24LiaCivguJ7guKPguLfguJQKK+C4nuC4o+C4t+C5ieC4rQor4Lie4Lij4Li4CivguJ7guKPguLjguIEKK+C4nuC4o+C4uOC5iOC4hwor4Lie4Lij4Li44LmI4LiH4LiZ4Li14LmJCivguJ7guKPguLjguJkKK+C4nuC4o+C4uQor4Lie4Lij4Li54LiUCivguJ7guKTguIHguKnguYwKK+C4nuC4pOC4kgor4Lie4Lik4LiS4LiyCivguJ7guKTguJLguLQKK+C4nuC4pOC4lQor4Lie4Lik4LiV4Li0CivguJ7guKTguJfguJjguYwKK+C4nuC4pOC4l+C4mOC4tOC5jAor4Lie4Lik4LiZ4LiV4LmMCivguJ7guKTguJnguJfguYwKK+C4nuC4pOC4meC4l+C4suC4owor4Lie4Lik4LiZ4LiX4Li04LmMCivguJ7guKTguKDguLnguKnguJMKK+C4nuC4pOC4oOC4ueC4qeC4tOC4lQor4Lie4Lik4Lip4LiI4Li04LiBCivguJ7guKTguKnguKAKK+C4nuC4pOC4q+C4seC4quC4muC4lOC4tQor4Lie4LilCivguJ7guKXguIHguLLguKIKK+C4nuC4peC4geC4suC4owor4Lie4Lil4LiC4Lix4LiZ4LiY4LmMCivguJ7guKXguITguKfguLLguKEKK+C4nuC4peC5gOC4l+C4ngor4Lie4Lil4LiaCivguJ7guKXguYDguKHguLfguK3guIcKK+C4nuC4peC5gOC4o+C4t+C4reC4mQor4Lie4Lil4LmC4Lil4LiBCivguJ7guKXguKfguIEKK+C4nuC4peC4p+C4hwor4Lie4Lil4Lin4LiU4LiB4Li04LiZ4Lil4Li54LiBCivguJ7guKXguKfguJTguYPguKvguI3guYgKK+C4nuC4peC4p+C4seC4lQor4Lie4Lil4Lio4Liy4Liq4LiV4Lij4LmMCivguJ7guKXguKjguLXguIHguKnguLIKK+C4nuC4peC4quC4tOC4h+C4q+C5jAor4Lie4Lil4LitCivguJ7guKXguYnguK0KK+C4nuC4peC4reC4hwor4Lie4Lil4Lit4LiUCivguJ7guKXguK3guJkKK+C4nuC4peC4reC4oeC5geC4nuC4peC4oQor4Lie4Lil4Lit4LiiCivguJ7guKXguYjguK3guKIKK+C4nuC4peC4sAor4Lie4Lil4Liw4LiB4Liz4Lil4Lix4LiHCivguJ7guKXguLDguJ7guKXguLIKK+C4nuC4peC4seC5iOC4gQor4Lie4Lil4Lix4LiHCivguJ7guKXguLHguYjguIcKK+C4nuC4peC4seC5ieC4hwor4Lie4Lil4Lix4LiUCivguJ7guKXguLHguJkKK+C4nuC4peC4seC4mgor4Lie4Lil4Lix4Lia4Lie4Lil4LiyCivguJ7guKXguLHguJrguJ7guKXguLbguIcKK+C4nuC4peC4seC5iOC4pwor4Lie4Lil4LmI4LiyCivguJ7guKXguLLguIHguKMKK+C4nuC4peC4suC4hwor4Lie4Lil4Liy4LiNCivguJ7guKXguLLguJQKK+C4nuC4peC4suC4lOC4tOC4qOC4seC4ogor4Lie4Lil4Liy4LiY4Li04LiB4Liy4LijCivguJ7guKXguYjguLLguJkKK+C4nuC4peC4suC4meC4suC4oeC4seC4ogor4Lie4Lil4Liy4LiZ4Li24LiBCivguJ7guKXguLLguKEKK+C4nuC4peC5iOC4suC4oQor4Lie4Lil4Liy4LiiCivguJ7guKXguLLguKLguKHguYnguLIKK+C4nuC4peC4suC4quC4leC4tOC4gQor4Lie4Lil4Liy4Liq4Lih4LiyCivguJ7guKXguLLguKvguIEKK+C4nuC4peC4swor4Lie4Lil4LmJ4LizCivguJ7guKXguLPguKDguLHguIcKK+C4nuC4peC4tAor4Lie4Lil4Li04LiBCivguJ7guKXguLTguJ7guLHguJcKK+C4nuC4peC4tOC5ieC4pwor4Lie4Lil4Li1CivguJ7guKXguLXguKHguLjguIIKK+C4nuC4peC4uAor4Lie4Lil4Li44LiBCivguJ7guKXguLjguYjguIEKK+C4nuC4peC4uOC4geC4nuC4peC5iOC4suC4mQor4Lie4Lil4Li44LmI4LiHCivguJ7guKXguLjguYnguJkKK+C4nuC4peC4uOC5iOC4oeC4nuC4peC5iOC4suC4oQor4Lie4Lil4Li44LmI4LiiCivguJ7guKXguLjguYnguKIKK+C4nuC4peC4uQor4Lie4Lil4Li54LmB4LiBCivguJ7guKXguLnguITguLLguKcKK+C4nuC4peC4ueC4leC5ieC4mQor4Lie4Lil4Li54LmC4LiVCivguJ7guKXguLnguYLguJfguYDguJnguLXguKLguKEKK+C4nuC4p+C4gQor4Lie4Lin4LiHCivguJ7guYjguKfguIcKK+C4nuC4p+C4mQor4Lie4Lin4LiiCivguJ7guKrguIEKK+C4nuC4quC4mQor4Lie4Liq4Li4CivguJ7guKrguLjguKrguIfguIHguKPguLLguJnguJXguYwKK+C4nuC4q+C4pQor4Lie4Lir4Li4CivguJ7guKvguLjguKUKK+C4nuC4q+C4uQor4Lie4LitCivguJ7guYjguK0KK+C4nuC5ieC4rQor4Lie4Lit4LiBCivguJ7guK3guIHguJ7guLnguJkKK+C4nuC4reC4hOC5gOC4geC4leC4muC4uOC4hAor4Lie4LmI4Lit4LiE4LmJ4Liy4LiV4Li14LmA4Lih4Li14LiiCivguJ7guK3guIcKK+C4nuC5ieC4reC4hwor4Lie4Lit4LiZCivguJ7guYnguK3guKEKK+C4nuC4reC5guC4peC5gOC4meC4teC4ouC4oQor4Lie4LiwCivguJ7guYjguLAKK+C4nuC4sOC4h+C4sgor4Lie4Liw4LiH4Liy4LiaCivguJ7guLDguIfguLLguJrguYYKK+C4nuC4sOC4iOC4hwor4Lie4Liw4LiX4Liz4Lih4Liw4Lij4LiHCivguJ7guLDguJnguK0KK+C4nuC4sOC5gOC4meC5ieC4suC4nuC4sOC4meC4rQor4Lie4Liw4LmA4LiZ4LmJ4Liy4Lie4Liw4LiZ4Li24LiHCivguJ7guLDguYDguJnguLTguJkKK+C4nuC4sOC5gOC4meC4teC4ouC4hwor4Lie4Liw4LmB4LiZ4LiHCivguJ7guLDguYTguJnguKIKK+C4nuC4sOC4nuC4suC4mQor4Lie4Liw4Lie4Li04LiHCivguJ7guLDguYDguJ7guLTguIcKK+C4nuC4sOC4ouC4reC4oQor4Lie4Liw4Lii4Li44Lie4Lii4Li44LiHCivguJ7guLDguKLguLnguIcKK+C4nuC4sOC4ouC4ueC4mQor4Lie4Liw4LmA4Lii4Li04LiaCivguJ7guLDguYDguKLguLTguJrguYYKK+C4nuC4sOC5gOC4ouC4teC4ogor4Lie4Liw4Lij4Li44LiH4Lie4Liw4Lij4Lix4LiHCivguJ7guLDguYDguKXguKIKK+C4nuC4sOC5guC4peC5iQor4Lie4Liw4LmE4LilCivguJ7guLDguKfguIcKK+C4nuC4sOC4p+C4seC4geC4nuC4sOC4p+C4mQor4Lie4Liw4Lin4LiyCivguJ7guLDguKfguYnguLLguJ7guLDguKfguLHguIcKK+C4nuC4sOC4reC4hwor4Lie4Liw4Lit4Liy4LiB4Lie4Liw4Lit4LizCivguJ7guLDguK3guLfguJTguJ7guLDguK3guKEKK+C4nuC4seC4gQor4Lie4Lix4LiB4LiV4Lij4LmMCivguJ7guLHguIHguJXguKPguLIKK+C4nuC4seC4geC4leC4sgor4Lie4Lix4LiB4LmB4Lie4LinCivguJ7guLHguIHguKMKK+C4nuC4seC4hwor4Lie4Lix4LiH4LiB4LiyCivguJ7guLHguIfguITguLIKK+C4nuC4seC4h+C4h+C4sgor4Lie4Lix4LiH4Lic4Li34LiUCivguJ7guLHguIfguJ7guKfguKIKK+C4nuC4seC4h+C4nuC4reC4mQor4Lie4Lix4LiH4Lie4Liy4LiZCivguJ7guLHguIfguJ7guLLguJoKK+C4nuC4seC4h+C5gOC4nuC4ogor4Lie4Lix4LiH4Lil4Liy4LiHCivguJ7guLHguIoKK+C4nuC4seC4iuC4meC4tQor4Lie4Lix4LiK4LijCivguJ7guLHguI3guIjguIEKK+C4nuC4seC4jeC4iOC4meC5jAor4Lie4Lix4LiS4LiB4Li1CivguJ7guLHguJLguJnguLAKK+C4nuC4seC4kuC4meC4sgor4Lie4Lix4LiUCivguJ7guLHguJTguIrguLIKK+C4nuC4seC4lOC4i+C4suC4lAor4Lie4Lix4LiU4LiU4Li24LiH4Liq4LmMCivguJ7guLHguJTguYHguJ7guKcKK+C4nuC4seC4lOC4q+C4peC4p+C4hwor4Lie4Lix4LiV4LiV4Li04LiH4Liq4LiwCivguJ7guLHguJXguKMKK+C4nuC4seC4l+C4mOC5jAor4Lie4Lix4LiX4LiY4Lii4LiyCivguJ7guLHguJfguKMKK+C4nuC4seC4mQor4Lie4Lix4LiZ4LiH4Li5CivguJ7guLHguJnguIjguLMKK+C4nuC4seC4meC5hOC4ieC4mQor4Lie4Lix4LiZ4LiV4Lix4LiZCivguJ7guLHguJnguJXguLkKK+C4nuC4seC4meC4l+C4suC4hwor4Lie4Lix4LiZ4LiY4LmMCivguJ7guLHguJnguJjguJnguLAKK+C4nuC4seC4meC4mOC4meC4swor4Lie4Lix4LiZ4LiY4LiwCivguJ7guLHguJnguJjguLgKK+C4nuC4seC4meC4mOC4uOC5jAor4Lie4Lix4LiZ4Lil4Lit4LiBCivguJ7guLHguJnguKXguLLguKIKK+C4nuC4seC4meC4peC4swor4Lie4Lix4LiZ4Lil4Li24LiBCivguJ7guLHguJnguKXguLbguIHguJ7guLHguJnguKXguLfguK0KK+C4nuC4seC4meC5gOC4peC4tOC4qAor4Lie4Lix4LiZ4LmA4Lit4Li04LiNCivguJ7guLHguJoKK+C4nuC4seC4muC4nOC5iOC4sgor4Lie4Lix4LifCivguJ7guLHguKXguKXguKAKK+C4nuC4seC4peC4p+C4seC4mQor4Lie4Lix4LinCivguJ7guLHguKfguLAKK+C4nuC4seC4qOC4lOC4tQor4Lie4Lix4Liq4LiU4Li4CivguJ7guLHguKrguYDguJTguLIKK+C4nuC4seC4quC4leC4o+C5jAor4Lie4Lix4Liq4LiW4Liy4LiZCivguJ7guLIKK+C4nuC4suC4gQor4Lie4Liy4LiB4LmA4Lie4Li14Lii4LijCivguJ7guLLguIHguKLguYwKK+C4nuC4suC4hwor4Lie4LmI4Liy4LiHCivguJ7guLLguIrguLUKK+C4nuC4suC4kwor4Lie4Liy4LiT4Li04LiKCivguJ7guLLguJPguLTguIrguKLguYwKK+C4nuC4suC4k+C4tOC4meC4tQor4Lie4Liy4LiT4Li1CivguJ7guLLguJQKK+C4nuC4suC4lOC5hOC4ieC4mQor4Lie4Liy4LiVCivguJ7guLLguJcKK+C4nuC4suC4l+C4ouC5jAor4Lie4Liy4LiYCivguJ7guLLguJjguLIKK+C4nuC4suC4mQor4Lie4LmI4Liy4LiZCivguJ7guLLguJnguKMKK+C4nuC4suC4oQor4Lie4Liy4LiiCivguJ7guYjguLLguKIKK+C4nuC4suC4ouC4oeC5ieC4sgor4Lie4Liy4Lii4Lix4LieCivguJ7guLLguKLguLgKK+C4nuC4suC4o+C5jOC5gOC4i+C4gQor4Lie4Liy4Lij4LiTCivguJ7guLLguKPguJPguLAKK+C4nuC4suC4o+C5jOC4leC5gOC4meC4reC4o+C5jAor4Lie4Liy4Lij4LiyCivguJ7guLLguKPguLLguJ/guLTguJkKK+C4nuC4suC4pQor4Lie4Liy4Lil4LiyCivguJ7guLLguKXguLUKK+C4nuC4suC4peC4teC4q+C4peC4suC4ouC4q+C4meC5ieC4sgor4Lie4Liy4Lil4Li44LiBCivguJ7guLLguYLguKUKK+C4nuC4suC5hOC4pQor4Lie4Liy4LiqCivguJ7guLLguKrguJnguYwKK+C4nuC4suC4quC4meC4sgor4Lie4Liy4Liq4Li44LiB4Lij4Li1CivguJ7guYjguLLguKvguYwKK+C4nuC4suC4q+C4meC4sAor4Lie4Liy4Lir4LiwCivguJ7guLLguKvguLIKK+C4nuC4suC4q+C4tOC4o+C4geC4sAor4Lie4Liy4Lir4Li04Lij4LiwCivguJ7guLLguKvguLgKK+C4nuC4suC5gOC4q+C4o+C4lAor4Lie4Liy4LmA4Lir4Li14Lii4LijCivguJ7guLLguKwKK+C4nuC4suC4rOC4q+C4sAor4Lie4Liy4Lis4LiwCivguJ7guLMKK+C4nuC4s+C5huC4nuC4tuC4oeC5hgor4Lie4Liz4LiZ4Lix4LiBCivguJ7guLPguJ7guKfguIEKK+C4nuC4s+C4nuC4tuC4oQor4Lie4Liz4Lil4LiyCivguJ7guLTguIHguKUKK+C4nuC4tOC4geC4quC4tOC4lQor4Lie4Li04LiB4Lix4LiUCivguJ7guLTguIHguLHguJXguLQKK+C4nuC4tOC4geC4seC4mQor4Lie4Li04LiB4Liy4LijCivguJ7guLTguIHguLjguKUKK+C4nuC4tOC5gOC4hOC4o+C4suC4sOC4q+C5jAor4Lie4Li04LiG4LiZ4LmMCivguJ7guLTguIbguYDguJnguKgKK+C4nuC4tOC4huC5gOC4meC4qOC4p+C4owor4Lie4Li04LiG4Liy4LiVCivguJ7guLTguIcKK+C4nuC4tOC4iOC4pQor4Lie4Li04LiI4Lix4LiiCivguJ7guLTguIjguLLguKMKK+C4nuC4tOC4iOC4suC4o+C4k+C5jAor4Lie4Li04LiI4Liy4Lij4LiT4LiyCivguJ7guLTguIjguLTguJUKK+C4nuC4tOC4iOC4tOC4leC4owor4Lie4Li04LiK4LiN4LmMCivguJ7guLTguIrguKIKK+C4nuC4tOC4iuC4seC4ogor4Lie4Li04LiK4Liy4LiZCivguJ7guLTguIrguLTguJUKK+C4nuC4tOC5gOC4iuC4kAor4Lie4Li04LmA4LiK4Li14Lii4LijCivguJ7guLTguJHguLnguKPguKLguYwKK+C4nuC4tOC4kwor4Lie4Li04LiU4LiX4Li54LilCivguJ7guLTguJTguKPguIEKK+C4nuC4tOC4lOC4suC4mQor4Lie4Li04LmC4LiU4LijCivguJ7guLTguJXguKMKK+C4nuC4tOC4luC4tQor4Lie4Li04LiW4Li14Lie4Li04LiW4Lix4LiZCivguJ7guLTguJfguKLguYwKK+C4nuC4tOC4l+C4ouC4sgor4Lie4Li04LiX4Lix4LiB4Lip4LmMCivguJ7guLTguJfguLHguIHguKnguYzguKrguLHguJnguJXguLQKK+C4nuC4tOC4l+C4ueC4owor4Lie4Li04LmA4LiX4LioCivguJ7guLTguJjguLLguJkKK+C4nuC4tOC4mOC4tQor4Lie4Li04LiY4Li4CivguJ7guLTguJjguLjguKMKK+C4nuC4tOC5guC4mOC5iAor4Lie4Li04LiZ4LiX4Li4CivguJ7guLTguJnguJ7guIcKK+C4nuC4tOC5iOC4meC4nuC4seC5iOC4hwor4Lie4Li04LiZ4Lit4Lia4Lie4Li04LmA4LiX4LiyCivguJ7guLTguJnguLHguKIKK+C4nuC4tOC4meC4suC4qAor4Lie4Li04LiZ4Li04LiICivguJ7guLTguJnguLTguJUKK+C4nuC4tOC4meC4tOC4qAor4Lie4Li04LiZ4Li04Lio4LiI4Lix4LiiCivguJ7guLTguYDguJnguJUKK+C4nuC4tOC4muC4seC4leC4tAor4Lie4Li04Lia4Liy4LiBCivguJ7guLTguJrguLjguKUKK+C4nuC4tOC4muC4ueC4pQor4Lie4Li04Lib4Lij4Li04LiVCivguJ7guLTguJvguKXguLLguKgKK+C4nuC4tOC4m+C4seC4quC4quC4meC4sgor4Lie4Li04Lie4Lij4Lij4LiYCivguJ7guLTguJ7guKPguKPguJjguJnguYwKK+C4nuC4tOC4nuC4seC4geC4nuC4tOC4nuC5iOC4p+C4mQor4Lie4Li04Lie4Lix4LiSCivguJ7guLTguJ7guLHguJLguJnguYwKK+C4nuC4tOC4nuC4suC4geC4qeC5jAor4Lie4Li04Lie4Liy4LiB4Lip4LiyCivguJ7guLTguJ7guLLguJcKK+C4nuC4tOC4nuC4tOC4mAor4Lie4Li04Lig4LieCivguJ7guLTguKDguLHguIoKK+C4nuC4tOC4oOC4suC4hAor4Lie4Li04Lig4Li54Lip4LiT4LiwCivguJ7guLTguYDguKDguIEKK+C4nuC4tOC4oeC4nuC5jAor4Lie4Li04Lih4Lie4LiB4Liy4Lij4Lix4LiHCivguJ7guLTguKHguJ7guLIKK+C4nuC4tOC4oeC5guC4nuC4q+C4meC4sAor4Lie4Li04Lih4LilCivguJ7guLTguKHguYDguKrguJkKK+C4nuC4tOC4oeC4suC4mQor4Lie4Li04Lih4Li44LiCCivguJ7guLTguYLguKHguIHguILguYwKK+C4nuC4tOC5guC4oeC4geC4qeC5jAor4Lie4Li04LmC4Lii4LiB4Lie4Li04LmA4LiB4LiZCivguJ7guLTguYLguKLguIQKK+C4nuC4tOC4owor4Lie4Li04Lij4Lit4LiUCivguJ7guLTguKPguLLguIHguKUKK+C4nuC4tOC4o+C4suC4mgor4Lie4Li04Lij4Liy4LihCivguJ7guLTguKPguLLguKXguLHguKIKK+C4nuC4tOC4o+C4tOC4ouC4sAor4Lie4Li04Lij4Li14LmJ4Lie4Li04LmE4LijCivguJ7guLTguKPguLjguJMKK+C4nuC4tOC4o+C4uOC4mAor4Lie4Li04Lij4Li44Lis4Lir4LmMCivguJ7guLTguYDguKPguJnguJfguKPguYwKK+C4nuC4tOC5gOC4o+C4suC4sAor4Lie4Li04LmC4Lij4LiYCivguJ7guLTguYLguKPguJjguJnguLAKK+C4nuC4tOC5hOC4owor4Lie4Li04Lil4Lix4LiH4LiB4Liy4Liq4LiyCivguJ7guLTguKXguLLguJsKK+C4nuC4tOC4peC4suC4peC4qgor4Lie4Li04Lil4Liy4LiqCivguJ7guLTguKXguLTguJvguJTguLIKK+C4nuC4tOC5guC4peC4pQor4Lie4Li04LmE4LilCivguJ7guLTguKgKK+C4nuC4tOC4qOC4p+C4hwor4Lie4Li04Lio4Lin4Liy4LiqCivguJ7guLTguKjguLLguKUKK+C4nuC4tOC4qOC4uOC4l+C4mOC4tOC5jAor4Lie4Li04LmA4Lio4LipCivguJ7guLTguKkKK+C4nuC4tOC4qeC4kOC4suC4mQor4Lie4Li04Lip4LiZ4Liy4Lio4LiZ4LmMCivguJ7guLTguKrguJTguLLguKMKK+C4nuC4tOC4quC4oeC4owor4Lie4Li04Liq4Lih4Lix4LiiCivguJ7guLTguKrguLHguIcKK+C4nuC4tOC4quC4seC4igor4Lie4Li04Liq4Lix4LiN4LiN4Li1CivguJ7guLTguKrguLHguKIKK+C4nuC4tOC4quC4tOC4kAor4Lie4Li04Liq4Li44LiX4LiY4Li04LmMCivguJ7guLTguKrguLnguIjguJnguYwKK+C4nuC4tOC4q+C4hAor4Lie4Li04Lir4Liy4LijCivguJ7guLTguKzguLLguKMKK+C4nuC4tQor4Lie4Li14LmICivguJ7guLXguYkKK+C4nuC4teC4igor4Lie4Li14LiK4LiE4LiT4Li04LiVCivguJ7guLXguYnguYLguJ7guYkKK+C4nuC4teC4o+C4sOC4oeC4tOC4lAor4Lie4Li24LiHCivguJ7guLbguYjguIcKK+C4nuC4tuC5iOC4mgor4Lie4Li24LihCivguJ7guLbguKHguJ7guLMKK+C4nuC4t+C4igor4Lie4Li34LiUCivguJ7guLfguYnguJkKK+C4nuC4uAor4Lie4Li44LiBCivguJ7guLjguIHguLLguKEKK+C4nuC4uOC4hwor4Lie4Li44LmI4LiHCivguJ7guLjguIfguYHguIEKK+C4nuC4uOC4h+C4iOC4hwor4Lie4Li44LiH4LiU4LitCivguJ7guLjguIfguJfguLDguKXguLLguKIKK+C4nuC4uOC4h+C4m+C4peC4sgor4Lie4Li44LiSCivguJ7guLjguJLguLQKK+C4nuC4uOC4lAor4Lie4Li44LiU4LiV4Liy4LiZCivguJ7guLjguJfguJgKK+C4nuC4uOC4l+C4mOC4iuC4suC4lAor4Lie4Li44LiX4LiY4Lij4Lix4LiB4Lip4LiyCivguJ7guLjguJfguJjguLAKK+C4nuC4uOC4l+C4mOC4tAor4Lie4Li44LiX4LmC4LiY4LmICivguJ7guLjguJfguKPguLIKK+C4nuC4uOC4mAor4Lie4Li44LmI4LihCivguJ7guLjguKHguYDguKPguLXguKLguIcKK+C4nuC4uOC5ieC4ogor4Lie4Li5CivguJ7guLnguYgKK+C4nuC4ueC4geC4suC4oQor4Lie4Li54LiUCivguJ7guLnguJkKK+C4nuC4ueC5ieC4mQor4LmA4LieCivguYDguJ7guYfguIEKK+C5gOC4nuC4geC4sgor4LmA4Lie4LiE4LiwCivguYDguJ7guYfguIcKK+C5gOC4nuC5iOC4hwor4LmA4Lie4LmH4LiICivguYDguJ7guIrguInguKXguLnguIHguKPguKPguKEKK+C5gOC4nuC4iuC4jOC4huC4suC4lQor4LmA4Lie4LiK4LijCivguYDguJ7guIrguKPguIHguKXguLHguJoKK+C5gOC4nuC4iuC4o+C4lOC4sgor4LmA4Lie4LiK4Lij4LiZ4Li04Lil4LiI4Li04LiZ4LiU4LiyCivguYDguJ7guIrguKPguJvguKPguLLguJPguLUKK+C5gOC4nuC4iuC4o+C4pOC4geC4qeC5jAor4LmA4Lie4LiK4Lij4Liq4Lix4LiH4LiG4Liy4LiVCivguYDguJ7guIrguKPguKvguKXguLXguIEKK+C5gOC4nuC4iuC4o+C4q+C4tuC4hwor4LmA4Lie4LiK4Lij4Liy4Lii4Li44LiYCivguYDguJ7guYfguI0KK+C5gOC4nuC4keC4ueC4o+C4tOC4ouC5jAor4LmA4Lie4LiT4Li1CivguYDguJ7guYfguJTguJfguLnguKUKK+C5gOC4nuC4lOC4suC4mQor4LmA4Lie4LiV4LijCivguYDguJ7guJcKK+C5gOC4nuC4l+C4meC4sgor4LmA4Lie4LiX4Lii4Liy4LiY4LijCivguYDguJ7guJfguLLguKIKK+C5gOC4nuC4l+C4uOC4muC4suC4ogor4LmA4Lie4LmC4LiX4Lia4Liy4LiiCivguYDguJ7guJnguIHguKfguLTguJkKK+C5gOC4nuC5iOC4meC4nuC5iOC4suC4mQor4LmA4Lie4LiZ4Li14Lii4LiUCivguYDguJ7guYnguKIKK+C5gOC4nuC4o+C4hwor4LmA4Lie4Lij4LiL4Li14LmC4Lit4LiU4Li14LmA4Lih4Li14Lii4LihCivguYDguJ7guKPguLIKK+C5gOC4nuC4o+C4suC4sAor4LmA4Lie4Lij4Li04LiUCivguYDguJ7guKPguLTguKgKK+C5gOC4nuC4o+C4teC4ouC4gQor4LmA4Lie4Lij4Li14Lii4LiHCivguYDguJ7guKPguLXguKLguJoKK+C5gOC4nuC4o+C4teC5ieC4ouC4oQor4LmA4Lie4Lij4Li14Lii4LinCivguYDguJ7guKPguLfguYjguK0KK+C5gOC4nuC4o+C4t+C4reC4hwor4LmA4Lie4LilCivguYDguJ7guKXguIcKK+C5gOC4nuC4peC5h+C4lAor4LmA4Lie4Lil4LmJ4LmC4Lie4Lil4LmJCivguYDguJ7guKXguLIKK+C5gOC4nuC4peC4suC4sAor4LmA4Lie4Lil4Liy4Liw4LmB4Lie4Lil4LiwCivguYDguJ7guKXguLTguIcKK+C5gOC4nuC4peC4tOC4lOC5gOC4nuC4peC4tOC4mQor4LmA4Lie4Lil4Li04LiZCivguYDguJ7guKXguLXguKIKK+C5gOC4nuC4peC4teC5ieC4ogor4LmA4Lie4Lil4Li14LmI4Lii4LiHCivguYDguJ7guKgKK+C5gOC4nuC4qOC4ouC4seC4meC4lOC4owor4LmA4Lie4LiqCivguYDguJ7guKrguKXguLLguJQKK+C5gOC4nuC5iOC4rQor4LmA4Lie4LmJ4LitCivguYDguJ7guK3guLTguI0KK+C5gOC4nuC4sAor4LmA4Lie4Li04LiBCivguYDguJ7guLTguIHguYDguInguKIKK+C5gOC4nuC4tOC4hwor4LmA4Lie4Li04LmI4LiHCivguYDguJ7guLTguJTguYDguJ7guYnguKIKK+C5gOC4nuC4tOC5iOC4oQor4LmA4Lie4Li14LmJ4LiiCivguYDguJ7guLXguKLguIcKK+C5gOC4nuC4teC5ieC4ouC4hwor4LmA4Lie4Li14Lii4LiH4Lit4LitCivguYDguJ7guLXguKLguIrguJnguYwKK+C5gOC4nuC4teC4ouC4mQor4LmA4Lie4Li14LmJ4Lii4LiZCivguYDguJ7guLXguKLguJoKK+C5gOC4nuC4teC4ouC4owor4LmA4Lie4Li34LmI4LitCivguYDguJ7guLfguYjguK3guJkKK+C5geC4ngor4LmB4Lie4LmJCivguYHguJ7guIcKK+C5geC4nuC5iOC4hwor4LmB4Lie4LiH4Lie4Lin4LiiCivguYHguJ7guIfguJ7guKfguKLguJ3guKPguLHguYjguIcKK+C5geC4nuC5h+C4h+C5geC4nuC4pwor4LmB4Lie4LiX4Lii4LmMCivguYHguJ7guJfguKLguLIKK+C5geC4nuC4mQor4LmB4Lie4LmI4LiZCivguYHguJ7guJnguIEKK+C5geC4nuC4meC4h+C5gOC4iuC4tOC4hwor4LmB4Lie4LiZ4LiU4LiyCivguYHguJ7guKMKK+C5geC4nuC4o+C5iAor4LmB4Lie4Lij4LiBCivguYHguJ7guKPguYjguIcKK+C5geC4nuC4o+C4pwor4LmB4Lie4Lij4LmJ4LinCivguYHguJ7guKXguIcKK+C5geC4nuC4peC4l+C4tOC4meC4seC4oQor4LmB4Lie4Lil4LihCivguYHguJ7guKXguYDguKXguYDguJTguLXguKLguKEKK+C5geC4nuC4peC4sAor4LmB4Lie4Lil4Liw4LmC4Lil4LihCivguYHguJ7guKcKK+C5geC4nuC5ieC4pwor4LmB4Lie4Lio4Lii4LmMCivguYHguJ7guKjguKLguLIKK+C5geC4nuC4sAor4LmB4Lie4Liw4LmC4Lil4LihCivguYLguJ4KK+C5guC4nuC4gQor4LmC4Lie4LiB4Lie4Liy4LiiCivguYLguJ7guIcKK+C5guC4nuC4h+C4nuC4suC4hwor4LmC4Lie4LiK4LiM4LiH4LiE4LmMCivguYLguJ7guIvguLTguJXguKPguK3guJkKK+C5guC4nuC4lAor4LmC4Lie4LmB4LiX4Liq4LmA4LiL4Li14Lii4LihCivguYLguJ7guJgKK+C5guC4nuC4mOC4tOC5jAor4LmC4Lie4LiZCivguYLguJ7guYnguJkKK+C5guC4nuC4meC4l+C4sOC4meC4sgor4LmC4Lie4Lia4Liy4LiiCivguYLguJ7guJzguLHguJkKK+C5guC4nuC4ogor4LmC4Lie4Lii4LihCivguYLguJ7guKLguKHguLHguJkKK+C5guC4nuC4ouC4oeC4suC4mQor4LmC4Lie4Lij4LiBCivguYLguJ7guKPguIcKK+C5guC4nuC4o+C5guC4l+C5geC4reC4geC4l+C4tOC5gOC4meC4teC4ouC4oQor4LmC4Lie4Lij4Lih4Li14LmA4LiX4Li14Lii4LihCivguYLguJ7guKPguLDguJTguIEKK+C5guC4nuC4peC5iAor4LmC4Lie4Lil4LiHCivguYLguJ7guKXguYjguIcKK+C5guC4nuC4peC5ieC4hwor4LmC4Lie4Lil4LiZCivguYLguJ7guKXguYnguYDguJ7guKXguYkKK+C5guC4nuC4peC4sAor4LmC4Lie4Liq4LieCivguYTguJ4KK+C5hOC4nuC5iAor4LmE4Lie4LiI4Li04LiV4LijCivguYTguJ7guIrguJkKK+C5hOC4nuC4iuC4ouC4meC4leC5jAor4LmE4Lie4LiR4Li54Lij4Lii4LmMCivguYTguJ7guYLguJTguKMKK+C5hOC4nuC4l+C4tQor4LmE4Lie4Lia4Li54Lil4Lii4LmMCivguYTguJ7guJ7guKPguKPguJMKK+C5hOC4nuC5gOC4nuC4tOC4lAor4LmE4Lie4Lih4Lit4LiBCivguYTguJ7guKHguYnguLIKK+C5hOC4nuC4owor4LmE4Lie4Lij4LmICivguYTguJ7guKPguIjguLTguJXguKMKK+C5hOC4nuC4o+C4iuC4mQor4LmE4Lie4Lij4LiK4Lii4LiZ4LiV4LmMCivguYTguJ7guKPguJHguLnguKPguKLguYwKK+C5hOC4nuC4o+C4l+C4tQor4LmE4Lie4Lij4Lia4Li54Lil4Lii4LmMCivguYTguJ7guKPguYDguKPguLLguLAKK+C5hOC4nuC4o+C4quC4suC4oeC4geC4rQor4LmE4Lie4Lij4Lix4LiKCivguYTguJ7guKPguLMKK+C5hOC4nuC4o+C4tOC4mQor4LmE4Lie4Lij4Li1CivguYTguJ7guKPguLkKK+C5hOC4nuC5gOC4o+C4suC4sAor4LmE4Lie4LmC4Lij4LiI4LiZ4LmMCivguYTguJ7guKUKK+C5hOC4nuC4peC5iAor4LmE4Lie4Lio4Liy4LiCCivguYTguJ7guKjguLLguKUKK+C5hOC4nuC5gOC4qOC4qQor4LmE4Lie4Liq4LieCivguYTguJ7guKrguLTguJAKK+C5hOC4nuC4q+C4suC4owor4LifCivguJ/guIEKK+C4n+C5ieC4hwor4Lif4Lij4Lix4LiB4LmC4LiX4LiqCivguJ/guKPguLUKK+C4n+C4peC4reC4o+C5jOC5guC4iuC4p+C5jAor4Lif4Lil4Li54Lit4Lit4Lij4Li14LiZCivguJ/guYjguK0KK+C4n+C5ieC4rQor4Lif4Lit4LiBCivguJ/guK3guIcKK+C4n+C5iOC4reC4hwor4Lif4LmJ4Lit4LiHCivguJ/guK3guJQKK+C4n+C4reC4mQor4Lif4LmI4Lit4LiZCivguJ/guYnguK3guJkKK+C4n+C5ieC4reC5geC4n+C5iQor4Lif4Lit4Lij4LmM4LihCivguJ/guK3guKPguYzguKHguLLguKXguJTguLXguYTguK7guJTguYwKK+C4n+C4reC4o+C5jOC4oeC4suC4peC4tOC4mQor4Lif4Lit4Liq4LiL4Li04LilCivguJ/guK3guKrguJ/guK3guKPguLHguKoKK+C4n+C4reC4quC5gOC4n+C4lQor4Lif4Liw4Lif4Lix4LiUCivguJ/guLDguJ/guLHguYjguJkKK+C4n+C4sOC4n+C5iOC4suC4ogor4Lif4Lix4LiBCivguJ/guLHguIHguJ/guLjguYnguJkKK+C4n+C4seC4hwor4Lif4Lix4LiH4LiB4LmM4LiK4Lix4LiZCivguJ/guLHguIfguYDguJ7guKPguLLguLAKK+C4n+C4seC4lAor4Lif4Lix4LiZCivguJ/guLHguYjguJkKK+C4n+C4seC5ieC4mQor4Lif4Lix4LiZ4LiK4LmJ4Liy4LiHCivguJ/guYnguLIKK+C4n+C4suC4gQor4Lif4Liy4LiHCivguJ/guYjguLLguIcKK+C4n+C4suC4lAor4Lif4Liy4LiX4Lit4LihCivguJ/guLLguJkKK+C4n+C5ieC4suC4neC5iOC4rQor4Lif4LmI4Liy4LihCivguJ/guYnguLLguKHguLjguYjguKIKK+C4n+C4suC4ogor4Lif4Liy4Lij4LmM4LihCivguJ/guLLguKrguIvguLTguKrguJXguYwKK+C4n+C4tOC4gQor4Lif4Li04LiUCivguJ/guLTguJUKK+C4n+C4tOC4mgor4Lif4Li04Lil4LmM4LihCivguJ/guLTguKfguKrguYwKK+C4n+C4tOC4quC4tOC4geC4quC5jAor4Lif4Li14LmICivguJ/guLXguYkKK+C4n+C4t+C4mQor4Lif4Li34LmJ4LiZCivguJ/guLfguKEKK+C4n+C4uAor4Lif4Li44LmJ4LiHCivguJ/guLjguJUKK+C4n+C4uOC4mQor4Lif4Li44LiaCivguJ/guLjguYjguJoKK+C4n+C4uOC4n+C4sAor4Lif4Li44LmI4Lih4LmA4Lif4Li34Lit4LiiCivguJ/guLjguKXguKrguYHguIHguYrguJsKK+C4n+C4uQor4Lif4Li54LmICivguJ/guLnguIEKK+C4n+C4ueC4lAor4Lif4Li54LihCivguYDguJ/guYfguJQKK+C5gOC4n+C5ieC4mQor4LmA4Lif4Lil4LiU4LmM4Liq4Lib4Liy4Lij4LmMCivguYDguJ/guYnguK0KK+C5gOC4n+C4reC4o+C5jOC4meC4tOC5gOC4iOC4reC4o+C5jAor4LmA4Lif4Lit4Lij4LmM4LmA4Lih4Li14Lii4LihCivguYDguJ/guK3guLAKK+C5gOC4n+C4sAor4LmA4Lif4Li04LiZCivguYDguJ/guLTguKPguYzguJkKK+C5gOC4n+C4teC5ieC4ouC4oQor4LmA4Lif4Li14LmJ4Lii4LinCivguYDguJ/guLfguK0KK+C5gOC4n+C4t+C5iOC4rQor4LmA4Lif4Li34LmJ4LitCivguYDguJ/guLfguK3guIcKK+C5gOC4n+C4t+C5ieC4reC4hwor4LmA4Lif4Li34Lit4LiZCivguYDguJ/guLfguK3guKIKK+C5geC4n+C5iAor4LmB4Lif4LiHCivguYHguJ/guIrguLHguYjguJkKK+C5geC4n+C4mQor4LmB4Lif4LiZ4LiL4Li1CivguYHguJ/guJoKK+C5geC4n+C5ieC4oQor4LmB4Lif4Lij4LmMCivguYHguJ/guKPguJnguYDguIvguLXguKLguKEKK+C5geC4n+C4peC4geC4i+C5jAor4LmB4Lif4Lil4LiVCivguYHguJ/guLAKK+C5guC4n+C4geC4seC4qgor4LmE4LifCivguKAKK+C4oOC4hAor4Lig4LiE4Lin4LiU4Li1CivguKDguITguKfguLHguJUKK+C4oOC4hOC4p+C4seC4l+C4hOC4teC4leC4sgor4Lig4LiE4Lin4Lix4LiZ4LiV4LmMCivguKDguITguKfguLHguKEKK+C4oOC4hOC4p+C4sgor4Lig4LiE4Lin4Liy4LiZCivguKDguITguLHguJnguJfguKXguLIKK+C4oOC4hOC4tOC4meC4tQor4Lig4LiTCivguKDguJPguLTguJTguLIKK+C4oOC4ngor4Lig4Lih4LiB4Liy4LijCivguKDguKHguKMKK+C4oOC4oeC4uAor4Lig4Lih4Li44LiB4LiwCivguKDguKHguLjguIHguLIKK+C4oOC4ouC4seC4meC4leC4o+C4suC4ogor4Lig4Lii4Liy4LiE4LiV4Li0CivguKDguKMKK+C4oOC4o+C4k+C4tQor4Lig4Lij4LiVCivguKDguKPguJXguKfguKPguKPguKkKK+C4oOC4o+C4leC4qOC4suC4quC4leC4o+C5jAor4Lig4Lij4Lij4LiU4LijCivguKDguKPguKPguJTguLIKK+C4oOC4o+C4o+C4ouC4sgor4Lig4Lij4Liw4Lih4LijCivguKDguKPguLDguKHguKPguLUKK+C4oOC4o+C4seC4quC4lOC4suC4qQor4Lig4Lij4Liy4LiU4LijCivguKDguKPguLLguJTguLIKK+C4oOC4o+C4tOC4ouC4sgor4Lig4Lij4Li5CivguKDguKTguIfguITguLLguKMKK+C4oOC4pOC4lOC4gQor4Lig4Lik4LiU4Li1CivguKDguKTguJXguKLguYwKK+C4oOC4pOC4qAor4Lig4Lik4Lip4LiP4LmMCivguKDguKcKK+C4oOC4p+C4seC4hOC4owor4Lig4Lin4Lix4LiH4LiE4LmMCivguKDguLHguIHguILguLAKK+C4oOC4seC4geC4lOC4tQor4Lig4Lix4LiB4LiV4LiwCivguKDguLHguIHguJXguLQKK+C4oOC4seC4geC4qeC5jAor4Lig4Lix4LiECivguKDguLHguITguJnguYwKK+C4oOC4seC4h+C4hOC4sAor4Lig4Lix4LiH4LiE4Li1CivguKDguLHguIgKK+C4oOC4seC4jeC4iuC4sAor4Lig4Lix4LiT4LiR4LmMCivguKDguLHguJPguJHguITguKPguKPguKAKK+C4oOC4seC4k+C4keC4meC4sAor4Lig4Lix4LiT4LiR4Liy4LiE4Liy4LijCivguKDguLHguJPguJHguLLguITguLLguKPguLTguIEKK+C4oOC4seC4k+C4keC4suC4o+C4seC4geC4qeC5jAor4Lig4Lix4LiT4LiR4Li5CivguKDguLHguJUKK+C4oOC4seC4leC4owor4Lig4Lix4LiX4LijCivguKDguLHguJ4KK+C4oOC4seC4ogor4Lig4Lix4Liq4LiU4LiyCivguKDguLHguKrguJXguKPguLIKK+C4oOC4seC4quC4oeC4sAor4Lig4Lix4Liq4Liq4LijCivguKDguLIKK+C4oOC4suC4hAor4Lig4Liy4LiE4Lig4Li54Lih4Li0CivguKDguLLguITguKLguYwKK+C4oOC4suC4hOC4ouC4suC4meC4uOC4p+C4seC4leC4tAor4Lig4Liy4LiE4Li04LiZ4Li1CivguKDguLLguITguLTguYTguJnguKIKK+C4oOC4suC4hOC4tQor4Lig4Liy4LiE4Li14Lii4LiwCivguKDguLLguIrguJnguLAKK+C4oOC4suC4iuC4tQor4Lig4Liy4LiTCivguKDguLLguJPguIEKK+C4oOC4suC4k+C4tQor4Lig4Liy4LiT4Li4CivguKDguLLguJTguKMKK+C4oOC4suC4lOC4sgor4Lig4Liy4LiV4LijCivguKDguLLguJXguLIKK+C4oOC4suC4leC4tOC4geC4sAor4Lig4Liy4LiV4Li04Lii4LiwCivguKDguLLguJXguLgKK+C4oOC4suC4ngor4Lig4Liy4Lie4Lii4LmMCivguKDguLLguJ7guKLguJnguJXguYwKK+C4oOC4suC4oQor4Lig4Liy4LiiCivguKDguLLguKMKK+C4oOC4suC4o+C4lOC4tQor4Lig4Liy4Lij4LiVCivguKDguLLguKPguJXguLUKK+C4oOC4suC4o+C4ouC4l+C4o+C4seC4nuC4ouC5jAor4Lig4Liy4Lij4Lii4LiyCivguKDguLLguKPguYLguKPguIcKK+C4oOC4suC4o+C4sAor4Lig4Liy4Lij4LiyCivguKDguLLguKfguJnguLIKK+C4oOC4suC4p+C4sAor4Lig4Liy4LipCivguKDguLLguKnguIEKK+C4oOC4suC4qeC4k+C5jAor4Lig4Liy4Lip4LiyCivguKDguLLguKnguLTguJUKK+C4oOC4suC4qeC4tQor4Lig4Liy4LiqCivguKDguLLguKrguJnguYwKK+C4oOC4suC4quC4sgor4Lig4Liy4Liq4Li44LijCivguKDguLTguIHguILguLIKK+C4oOC4tOC4geC4guC4uAor4Lig4Li04LiB4LiC4Li44LiZ4Li1CivguKDguLTguIHguKnguLIKK+C4oOC4tOC4geC4qeC4uAor4Lig4Li04LiB4Lip4Li44LiT4Li1CivguKDguLTguIfguITguLLguKMKK+C4oOC4tOC4h+C4qgor4Lig4Li04LiH4Liq4LiZ4LiwCivguKDguLTguIfguKrguKMKK+C4oOC4tOC4jeC5guC4jQor4Lig4Li04LiV4LiV4Li0CivguKDguLTguJcKK+C4oOC4tOC4meC4l+C5jAor4Lig4Li04Lii4LmC4LiiCivguKDguLTguKPguKHguKLguYwKK+C4oOC4tOC4o+C4oeC4ouC5jOC4quC4uOC4o+C4suC4h+C4hOC5jAor4Lig4Li04Lip4Lix4LiKCivguKDguLTguKoKK+C4oOC4tOC4quC4seC4gQor4Lig4Li14LiV4LiwCivguKDguLXguKEKK+C4oOC4teC4o+C4uAor4Lig4Li44LiB4LiV4LmMCivguKDguLjguILguLHguJkKK+C4oOC4uOC4igor4Lig4Li44LiN4LiKCivguKDguLjguJUKK+C4oOC4uOC4oQor4Lig4Li44Lih4Lij4LiwCivguKDguLjguKHguKPguLIKK+C4oOC4uOC4oeC4o+C4tOC4mQor4Lig4Li44Lih4Lij4Li1CivguKDguLjguKHguYDguKPguKgKK+C4oOC4uOC4qgor4Lig4Li5CivguKDguLnguYgKK+C4oOC4ueC5guC4igor4Lig4Li54LiU4Liy4LiUCivguKDguLnguJUKK+C4oOC4ueC4leC4tAor4Lig4Li54LiV4Li1CivguKDguLnguKEKK+C4oOC4ueC4oeC4tAor4Lig4Li54Lih4Li04LiE4Li44LmJ4Lih4LiB4Lix4LiZCivguKDguLnguKHguLTguYHguJ7guYkKK+C4oOC4ueC4oeC4tQor4Lig4Li54Lij4LmC4Lil4LiBCivguKDguLnguKPguLQKK+C4oOC4ueC4o+C4tQor4Lig4Li54Lip4LiyCivguKDguLnguKnguLTguJUKK+C5gOC4oOC4geC4sAor4LmA4Lig4LiE4LiwCivguYDguKDguJXguKPguLIKK+C5gOC4oOC4lwor4LmA4Lig4Lij4LinCivguYDguKDguKPguLQKK+C5gOC4oOC4o+C4tQor4LmA4Lig4Liq4Lix4LiKCivguYDguKDguKrguLHguIrguYDguJ7guKXguLIKK+C5guC4oOC4hAor4LmC4Lig4LiE4LiX4Lij4Lix4Lie4Lii4LmMCivguYLguKDguITguKDguLHguJPguJHguYwKK+C5guC4oOC4hOC4ouC4l+C4o+C4seC4nuC4ouC5jAor4LmC4Lig4LiE4Li04LiZCivguYLguKDguITguLUKK+C5guC4oOC5hOC4hOC4ogor4LmC4Lig4LmE4LiE4Lio4Lin4Lij4Lij4Lii4LmMCivguYLguKDguIoKK+C5guC4oOC4iuC4gQor4LmC4Lig4LiK4LiZ4LmMCivguYLguKDguIrguJnguLAKK+C5guC4oOC4iuC4meC4suC4geC4owor4LmC4Lig4LiK4LiZ4Liy4LiB4Liy4LijCivguYLguKDguIrguJnguLLguKvguLLguKMKK+C5hOC4oOC4o+C4ngor4LmE4Lig4Lij4Li04LiZCivguYTguKDguKPguLUKK+C5hOC4oOC4qeC4seC4iuC4hOC4uOC4o+C4uAor4LmE4Lig4Lip4Lix4LiK4Lii4LmMCivguKEKK+C4oeC4gQor4Lih4LiB4LijCivguKHguIHguKPguIHguLjguJPguJHguKUKK+C4oeC4geC4o+C5gOC4geC4leC4meC5jAor4Lih4LiB4Lij4LiY4Lin4Lix4LiKCivguKHguIHguKPguJ7guLLguKvguJkKK+C4oeC4geC4o+C4suC4geC4owor4Lih4LiB4Lij4Liy4LiE4LihCivguKHguIHguKPguLLguKXguLHguKIKK+C4oeC4geC4o+C4suC4p+C4suC4qgor4Lih4LiB4LiqCivguKHguIHguLjguI4KK+C4oeC4geC4uOC4pQor4Lih4LiE4LiYCivguKHguIYKK+C4oeC4huC4p+C4seC4mQor4Lih4LiG4LiyCivguKHguYjguIcKK+C4oeC4h+C4geC4uOC4jgor4Lih4LiH4LmC4LiB4Lij4LiiCivguKHguIfguITguKUKK+C4oeC4h+C4hOC4peC4iOC4seC4geC4owor4Lih4LiH4LiE4Lil4Lie4Li04LiY4Li1CivguKHguIfguITguKXguKfguLLguJcKK+C4oeC4h+C4hOC4peC4p+C4suC4owor4Lih4LiH4LiE4Lil4Liq4Lih4Lij4LiqCivguKHguIfguITguKXguKrguKHguLHguKIKK+C4oeC4h+C4hOC4peC4quC4ueC4leC4owor4Lih4LiH4LiE4Lil4Lir4Lix4LiV4LiW4Li1CivguKHguJPguJHguYwKK+C4oeC4k+C4keC4gQor4Lih4LiT4LiR4LiZ4LiwCivguKHguJPguJHguJsKK+C4oeC4k+C4keC4pQor4Lih4LiT4LiR4LiyCivguKHguJPguJHguLLguKPguJ4KK+C4oeC4k+C4keC4tOC4owor4Lih4LiT4LmA4LiR4Li14Lii4LijCivguKHguJPguLUKK+C4oeC4lAor4Lih4LiU4LmA4LiX4LmH4LiICivguKHguJTguKLguK3guJoKK+C4oeC4lOC4peC4ueC4gQor4Lih4LiU4Liy4LiiCivguKHguJTguLUKK+C4oeC4leC4sAor4Lih4LiV4Li0CivguKHguJcKK+C4oeC4l+C4meC4sAor4Lih4LiX4LiZ4Li14Lii4LiwCivguKHguJjguLgKK+C4oeC4mOC4uOC4o+C4sAor4Lih4LiZCivguKHguYjguJkKK+C4oeC4meC4leC5jAor4Lih4LiZ4LiV4Lij4LmMCivguKHguJnguJXguKPguLUKK+C4oeC4meC4l+C5jAor4Lih4LiZ4LiX4Li04LijCivguKHguJnguJfguLTguKPguLLguKXguLHguKIKK+C4oeC4meC5gOC4l+C4teC4ouC4owor4Lih4LiZ4Liq4Li04LiB4Liy4LijCivguKHguJnguLHguKoKK+C4oeC4meC4suC5guC4mwor4Lih4LiZ4Li04Lih4LiZ4LiyCivguKHguJnguLTguKXguLIKK+C4oeC4meC4teC4oeC4meC4sgor4Lih4LiZ4Li4CivguKHguJnguLjguI0KK+C4oeC4meC4uOC4qeC4ouC5jAor4Lih4LiZ4Li44Liq4Liy4LijCivguKHguJnguLkKK+C4oeC4meC4ueC4quC4suC4owor4Lih4LmC4LiZCivguKHguYLguJnguKPguLLguKvguYwKK+C4oeC5guC4meC4quC4suC4owor4Lih4LmC4LiZ4Liq4Liy4LmA4Lij4LmICivguKHguYLguJnguKvguYzguKPguLIKK+C4oeC4oeC4seC4h+C4geC4suC4owor4Lih4Lih4Liy4LiBCivguKHguKLguLjguKPguLAKK+C4oeC4ouC4ueC4ggor4Lih4Lii4Li54LijCivguKHguKMKK+C4oeC4o+C4geC4lQor4Lih4Lij4LiE4LiyCivguKHguKPguJHguJsKK+C4oeC4o+C4k+C5jAor4Lih4Lij4LiT4LiwCivguKHguKPguJTguIEKK+C4oeC4o+C4o+C4hAor4Lih4Lij4Lij4LiE4LiyCivguKHguKPguKPguJXguKIKK+C4oeC4o+C4o+C4leC4seC4ogor4Lih4Lij4Lij4LiX4LiZCivguKHguKPguKPguKLguLLguJcKK+C4oeC4o+C4o+C4qQor4Lih4Lij4Liq4Li44LihCivguKHguKPguLHguKHguYDguJfguKgKK+C4oeC4o+C4suC4meC4hOC4p+C4suC4mQor4Lih4Lij4Li04LiICivguKHguKPguLTguKLguLLguJcKK+C4oeC4o+C4teC4iOC4tAor4Lih4Lij4Li4CivguKHguKPguLjguJUKK+C4oeC4pOC4hAor4Lih4Lik4LiE4Lii4LmMCivguKHguKTguIjguInguLIKK+C4oeC4pOC4lOC4gQor4Lih4Lik4LiVCivguKHguKTguJXguIEKK+C4oeC4pOC4leC4ouC4uQor4Lih4Lik4LiX4Li04LiH4LiE4LmMCivguKHguKTguJfguLgKK+C4oeC4pOC4mOC4uAor4Lih4Lik4Lip4LiyCivguKHguKUKK+C4oeC4peC5guC4hAor4Lih4Lil4LiX4Li04LiZCivguKHguKXguJkKK+C4oeC4peC5iOC4mQor4Lih4Lil4Lin4LiBCivguKHguKXguYjguK3guJkKK+C4oeC4peC5iOC4reC4ogor4Lih4Lil4LiwCivguKHguKXguLHguIEKK+C4oeC4peC4seC4h+C5gOC4oeC4peC4t+C4reC4hwor4Lih4Lil4LmJ4LiyCivguKHguKXguLLguIEKK+C4oeC4peC5ieC4suC4hwor4Lih4Lil4Liy4LiZCivguKHguKXguYjguLLguJkKK+C4oeC4peC4suC4ogor4Lih4Lil4Liy4Lii4Li5CivguKHguKXguLLguKcKK+C4oeC4peC5iOC4suC4p+C5gOC4oeC4peC4sgor4Lih4Lil4Liy4Lir4Lij4LiyCivguKHguKXguLTguJkKK+C4oeC4peC4tOC5ieC4mQor4Lih4Lil4Li34LmI4LiZCivguKHguKfguIEKK+C4oeC5iOC4p+C4hwor4Lih4Lin4LiZCivguKHguYjguKfguJkKK+C4oeC5ieC4p+C4mQor4Lih4Lin4LiiCivguKHguYjguKfguKIKK+C4oeC5ieC4p+C4ogor4Lih4Lin4LilCivguKHguKrguLLguKMKK+C4oeC4quC4suC4o+C4gQor4Lih4Liq4Liy4Lij4LiE4Lix4LilCivguKHguKrguLQKK+C4oeC4q+C4geC4o+C4o+C4oQor4Lih4Lir4Lij4LiT4LieCivguKHguKvguKPguKPguIYKK+C4oeC4q+C4o+C4o+C4k+C4ngor4Lih4Lir4Lij4Liq4LieCivguKHguKvguLHguIjguInguKPguLTguKLguLAKK+C4oeC4q+C4seC4k+C4k+C4ngor4Lih4Lir4Lix4LiVCivguKHguKvguLHguJXguIYKK+C4oeC4q+C4seC4l+C4mOC4meC4sAor4Lih4Lir4Lix4LiZ4LiV4LmMCivguKHguKvguLHguJ7guKDguLLguIQKK+C4oeC4q+C4seC4pQor4Lih4Lir4Lix4Lil4LiB4LiwCivguKHguKvguLHguKjguIjguKPguKPguKLguYwKK+C4oeC4q+C4sgor4Lih4Lir4Liy4LiB4LiQ4Li04LiZCivguKHguKvguLLguIHguLLguKwKK+C4oeC4q+C4suC4guC4seC4meC4mOC4gQor4Lih4Lir4Liy4LiI4Lix4LiB4LijCivguKHguKvguLLguIrguJkKK+C4oeC4q+C4suC4iuC4seC4ogor4Lih4Lir4Liy4LiK4Liy4LiV4Li0CivguKHguKvguLLguYLguIrguJXguKPguLHguJUKK+C4oeC4q+C4suC4lOC5hOC4l+C4ogor4Lih4Lir4Liy4LiU4LmA4Lil4LmH4LiBCivguKHguKvguLLguJXguKHguLAKK+C4oeC4q+C4suC5hOC4luC5iAor4Lih4Lir4Liy4LiX4Lin4Li14LibCivguKHguKvguLLguYDguJfguJ4KK+C4oeC4q+C4suC5gOC4l+C4nuC4tQor4Lih4Lir4Liy4LmA4LiX4Lin4Li1CivguKHguKvguLLguJjguLLguJXguLgKK+C4oeC4q+C4suC4meC4o+C4gQor4Lih4Lir4Liy4LiZ4Liq4LiwCivguKHguKvguLLguJnguLTguIHguLLguKIKK+C4oeC4q+C4suC4meC4tOC4pQor4Lih4Lir4Liy4Lia4Lie4Li04LiV4LijCivguKHguKvguLLguJrguKPguLTguIjguLLguIQKK+C4oeC4q+C4suC4muC4seC4k+C4keC4tOC4lQor4Lih4Lir4Liy4Lia4Li44Lij4Li44LipCivguKHguKvguLLguJ7guJkKK+C4oeC4q+C4suC4nuC4o+C4q+C4oQor4Lih4Lir4Liy4Lig4Liy4Lij4LiVCivguKHguKvguLLguKDguLTguYDguJnguKnguIHguKPguKHguJPguYwKK+C4oeC4q+C4suC4oOC4ueC4lQor4Lih4Lir4Liy4LmA4Lih4LiGCivguKHguKvguLLguKLguLLguJkKK+C4oeC4q+C4suC4ouC4uOC4hAor4Lih4Lir4Liy4Lij4LiT4LieCivguKHguKvguLLguKPguLLguIoKK+C4oeC4q+C4suC4o+C4suC4iuC4peC4teC4peC4sgor4Lih4Lir4Liy4Lik4LiB4Lip4LmMCivguKHguKvguLLguKXguLDguKXguKfguKIKK+C4oeC4q+C4suC4peC4sOC4peC4suC4ogor4Lih4Lir4Liy4Lin4LiH4Lio4LmMCivguKHguKvguLLguKfguKPguKPguIQKK+C4oeC4q+C4suC4p+C4seC4lQor4Lih4Lir4Liy4Lin4Li04LiX4Lii4Liy4Lil4Lix4LiiCivguKHguKvguLLguKjguLHguIHguKPguLLguIoKK+C4oeC4q+C4suC4qOC4suC4pQor4Lih4Lir4Liy4Lio4Li54LiZ4Lii4LmMCivguKHguKvguLLguYDguKjguKPguKnguJDguLUKK+C4oeC4q+C4suC4quC4h+C4geC4o+C4suC4meC4leC5jAor4Lih4Lir4Liy4Liq4LiH4LiE4Lij4Liy4LihCivguKHguKvguLLguKrguJTguKHguKDguYwKK+C4oeC4q+C4suC4quC4lOC4swor4Lih4Lir4Liy4Liq4Lih4Li44LiX4LijCivguKHguKvguLLguKrguLHguJnguJnguLTguJrguLLguJUKK+C4oeC4q+C4suC4quC4suC4p+C4gQor4Lih4Lir4Liy4Liq4Liy4Lin4Li04LiB4LiyCivguKHguKvguLLguKrguLTguJfguJjguLTguYLguIrguIQKK+C4oeC4q+C4suC4quC4teC4oeC4sgor4Lih4Lir4Liy4LmA4Liq4Lin4LiBCivguKHguKvguLLguKvguIfguKrguYwKK+C4oeC4q+C4suC4q+C4tOC4h+C4hOC4uOC5jAor4Lih4Lir4Liy4Lit4Liz4LiZ4Liy4LiICivguKHguKvguLLguK3guLPguKHguLLguJXguKLguYwKK+C4oeC4q+C4suC4reC4uOC4iAor4Lih4Lir4Liy4Lit4Li44LiUCivguKHguKvguLLguK3guLjguJvguKPguLLguIHguKMKK+C4oeC4q+C4tAor4Lih4Lir4Li04LiH4Liq4LmMCivguKHguKvguLTguJfguJjguLQKK+C4oeC4q+C4tOC4meC4l+C5jAor4Lih4Lir4Li04Lih4LiyCivguKHguKvguLTguKjguKMKK+C4oeC4q+C4tOC4qOC4p+C4owor4Lih4Lir4Li04LipCivguKHguKvguLTguKnguLUKK+C4oeC4q+C4tuC4oeC4sgor4Lih4Lir4Li44LiU4Li04Lik4LiB4Lip4LmMCivguKHguKvguLjguKPguJTguLUKK+C4oeC4q+C4uOC4o+C4leC4tOC4quC4seC4jeC4jeC4sgor4Lih4Lir4Li5CivguKHguYDguKvguJnguJfguKPguYwKK+C4oeC5gOC4q+C4ouC4h+C4hOC5jAor4Lih4LmA4Lir4LioCivguKHguYDguKvguKjguKfguKMKK+C4oeC5gOC4q+C4qOC4seC4geC4lOC4tOC5jAor4Lih4LmA4Lir4Liq4Lix4LiB4LiC4LmMCivguKHguYDguKvguKrguLQKK+C4oeC5gOC4q+C4quC4tQor4Lih4LmA4Lir4Liy4Lip4LiYCivguKHguYDguKvguLLguKzguLLguKMKK+C4oeC5guC4q+C4hgor4Lih4LmC4Lir4Lij4LiX4Li24LiBCivguKHguYLguKvguKPguKrguJ4KK+C4oeC5guC4q+C4o+C4tQor4Lih4LmC4Lir4Lip4LiYCivguKHguYLguKvguKzguLLguKMKK+C4oeC5hOC4q+C4qOC4p+C4o+C4o+C4ouC5jAor4Lih4LitCivguKHguK3guIcKK+C4oeC5iOC4reC4hwor4Lih4Lit4LiH4LmC4LiB4Lil4Lit4Lii4LiU4LmMCivguKHguK3guIfguITguKPguYjguK0KK+C4oeC5iOC4reC4h+C5gOC4l+C5iOC4hwor4Lih4Lit4LiNCivguKHguYjguK3guJXguYnguK0KK+C4oeC4reC5gOC4leC4reC4o+C5jAor4Lih4Lit4LiZCivguKHguYjguK3guJkKK+C4oeC4reC4meC5hOC4guC5iAor4Lih4Lit4LiaCivguKHguYjguK3guKIKK+C4oeC4reC4o+C5jOC4n+C4teC4mQor4Lih4Lit4Lij4Liw4LiB4Li54LmICivguKHguK3guKXguYLguJfguKoKK+C4oeC5iOC4reC4peC4reC4geC4oeC5iOC4reC5geC4peC4gQor4Lih4LmI4Lit4Liu4LmI4Lit4LihCivguKHguLAKK+C4oeC4sOC4geC4o+C4ueC4lAor4Lih4Liw4LiB4Lil4LmI4LizCivguKHguLDguIHguK3guIEKK+C4oeC4sOC4geC5iOC4reC4hwor4Lih4Liw4LiB4LmI4Lit4LiV4Liy4Lir4Lih4Li5CivguKHguLDguIHguLDguYLguKPguJnguLUKK+C4oeC4sOC4geC4sgor4Lih4Liw4LmA4LiB4Lil4Li34LitCivguKHguLDguYDguIHguLXguYvguKLguIcKK+C4oeC4sOC4guC5iOC4p+C4hwor4Lih4Liw4LiC4Lin4Li04LiUCivguKHguLDguILguLLguKEKK+C4oeC4sOC4guC4suC4oeC5gOC4l+C4qAor4Lih4Liw4LiC4Liy4Lih4Lib4LmJ4Lit4Lih4LiU4Li04LiZCivguKHguLDguYDguILguLfguK0KK+C4oeC4sOC5gOC4guC4t+C4reC4l+C4p+C4suC4ogor4Lih4Liw4LmA4LiC4Li34Lit4LmA4LiX4LioCivguKHguLDguYDguILguLfguK3guJ7guKfguIcKK+C4oeC4sOC5gOC4guC4t+C4reC4oeC4reC4jQor4Lih4Liw4LmB4LiC4LmI4LiZCivguKHguLDguITguLAKK+C4oeC4sOC4hOC4seC4h+C5geC4lOC4hwor4Lih4Liw4LiE4LmI4LiyCivguKHguLDguITguLPguYTguIHguYgKK+C4oeC4sOC4hOC4s+C4lOC4teC4hOC4p+C4suC4ogor4Lih4Liw4LiH4Lix4LiZCivguKHguLDguIfguLHguYjguKcKK+C4oeC4sOC4h+C4uOC4oeC4oeC4sOC4h+C4suC4q+C4peC4sgor4Lih4Liw4LiL4Lix4LiBCivguKHguLDguIvguLLguIcKK+C4oeC4sOC4i+C5iOC4suC4mQor4Lih4Liw4LiU4Liw4LiC4Li14LmJ4LiZ4LiBCivguKHguLDguJTguLHguJkKK+C4oeC4sOC4lOC4sgor4Lih4Liw4LiU4Li54LiBCivguKHguLDguYDguJTguKvguKfguLUKK+C4oeC4sOC5gOC4lOC4t+C5iOC4rQor4Lih4Liw4LiV4LmJ4Lit4LiHCivguKHguLDguJXguLDguJrguLAKK+C4oeC4sOC4leC4suC4lAor4Lih4Liw4LiV4Liy4Lir4Liw4Lij4Li1CivguKHguLDguJXguLUKK+C4oeC4sOC4leC4tuC5iOC4hwor4Lih4Liw4LiV4Li34LmL4LiZCivguKHguLDguJXguLnguKEKK+C4oeC4sOC5geC4leC4gQor4Lih4Liw4LiZ4Liy4LinCivguKHguLDguJvguKPguLLguIcKK+C4oeC4sOC4m+C4o+C4tOC4hwor4Lih4Liw4Lib4LmI4Lit4LiHCivguKHguLDguJ3guYjguK0KK+C4oeC4sOC4nuC4o+C5ieC4suC4pwor4Lih4Liw4Lie4Lil4Lix4LiaCivguKHguLDguJ7guLnguJQKK+C4oeC4sOC5geC4nuC4mQor4Lih4Liw4LmB4Lie4Lij4LmJ4LinCivguKHguLDguYDguJ/guLfguK3guIcKK+C4oeC4sOC5geC4n+C4mQor4Lih4Liw4LmE4LifCivguKHguLDguKHguYjguKfguIcKK+C4oeC4sOC4oeC5iOC4suC4pwor4Lih4Liw4Lih4Li14LmICivguKHguLDguKHguLfguYjguJkKK+C4oeC4sOC4oeC4uOC4lAor4Lih4Liw4LmA4Lih4LitCivguKHguLDguYDguKHguLXguKIKK+C4oeC4sOC5gOC4oeC4t+C5iOC4reC4ogor4Lih4Liw4LmB4LihCivguKHguLDguKLguIcKK+C4oeC4sOC4ouC4oQor4Lih4Liw4Lij4LiwCivguKHguLDguKPguLTguJQKK+C4oeC4sOC4o+C4t+C4mQor4Lih4Liw4Lij4Li44LihCivguKHguLDguKPguLjguKHguKHguLDguJXguLjguYnguKEKK+C4oeC4sOC5gOC4o+C5h+C4hwor4Lih4Liw4LmA4Lij4Li34LmI4Lit4LiHCivguKHguLDguYLguKPguIcKK+C4oeC4sOC4peC4sOC4geC4rQor4Lih4Liw4Lil4Liy4Lij4Lit4LiB4Lix4LiZCivguKHguLDguKXguLMKK+C4oeC4sOC4peC4tAor4Lih4Liw4Lil4Li04LiZCivguKHguLDguKXguLTguYjguKEKK+C4oeC4sOC4peC4tOC5gOC4peC4t+C5ieC4reC4ogor4Lih4Liw4Lil4Li04Lit4LmI4Lit4LiHCivguKHguLDguKXguLfguYjguJkKK+C4oeC4sOC4peC4t+C4oeC4lOC4swor4Lih4Liw4Lil4Li44Lil4Li1CivguKHguLDguKfguLLguKMKK+C4oeC4sOC4q+C4peC4tOC5iOC4oQor4Lih4Liw4Lir4Lin4LiUCivguKHguLDguKvguLDguKvguKHguLHguJQKK+C4oeC4sOC4q+C4seC4pQor4Lih4Liw4Lir4Liy4LiUCivguKHguLDguKvguLTguYjguIcKK+C4oeC4sOC5gOC4q+C4oeC4t+C5iOC4reC4ogor4Lih4Liw4Lit4Li24LiBCivguKHguLDguK7guK3guIHguIHguLLguJnguLUKK+C4oeC4seC4gQor4Lih4Lix4LiB4LiB4Liw4Lil4Li14Lic4LilCivguKHguLHguIHguIHguLDguKrguLHguJkKK+C4oeC4seC4geC4guC4sAor4Lih4Lix4LmI4LiB4LiC4Lix4LmJ4LiBCivguKHguLHguIHguILguLTguIHguLIKK+C4oeC4seC4geC4guC4tOC4geC4suC4iuC4suC4leC4tAor4Lih4Lix4LiB4LiP4LiB4LiwCivguKHguLHguIHguI/guLAKK+C4oeC4seC4hOC4hOC4sAor4Lih4Lix4LiE4LiE4Li44LmA4LiX4Lio4LiB4LmMCivguKHguLHguITguKrguLTguKPguLAKK+C4oeC4seC4huC4p+C4sgor4Lih4Lix4LiG4Lin4Liy4LiZCivguKHguLHguYjguIcKK+C4oeC4seC4h+C4geC4hwor4Lih4Lix4LiH4LiB4LijCivguKHguLHguIfguIHguLgKK+C4oeC4seC4h+C4hOC4peC4sAor4Lih4Lix4LiH4LiE4LmI4LiyCivguKHguLHguIfguITguLjguJQKK+C4oeC4seC4h+C4leC4suC4mQor4Lih4Lix4LiH4Liq4LiwCivguKHguLHguIfguKrguLUKK+C4oeC4seC4h+C4q+C4h+C4seC4mQor4Lih4Lix4LiI4LiI4LiwCivguKHguLHguIjguIjguLgKK+C4oeC4seC4iOC4ieC4o+C4sAor4Lih4Lix4LiI4LiJ4Lij4Li04Lii4LiwCivguKHguLHguIjguInguKPguLUKK+C4oeC4seC4iOC4ieC4sAor4Lih4Lix4LiI4LiJ4LiyCivguKHguLHguIrguIrguLAKK+C4oeC4seC4iuC4iuC4suC4owor4Lih4Lix4LiN4LiI4LiBCivguKHguLHguI3guIjguLIKK+C4oeC4seC4jeC4iuC4tOC4qeC4kAor4Lih4Lix4LiN4LiK4Li04Lip4LiQ4LiyCivguKHguLHguI3guIrguLXguKMKK+C4oeC4seC4jeC4iuC4uAor4Lih4Lix4LiN4LiK4Li44Liq4LiyCivguKHguLHguI3guIrguLnguKrguLIKK+C4oeC4seC4jeC5gOC4iuC4j+C4kOC4sAor4Lih4Lix4LiN4LmA4LiK4LiP4LiQ4Li04LiB4LiyCivguKHguLHguI3guYDguIrguLXguKLguKMKK+C4oeC4seC4j+C4kOC4sAor4Lih4Lix4LiT4LiR4LiZ4LiyCivguKHguLHguJPguJHguLjguIEKK+C4oeC4seC4lAor4Lih4Lix4LiU4Lir4Lih4Li14LmICivguKHguLHguJTguKvguKHguLkKK+C4oeC4seC4lOC4q+C4p+C4suC4ogor4Lih4Lix4LiV4LiV4LiwCivguKHguLHguJXguJXguLHguKIKK+C4oeC4seC4leC4leC4sgor4Lih4Lix4LiV4LiV4Li04LiB4LiyCivguKHguLHguJXguJbguIEKK+C4oeC4seC4leC4luC4peC4uOC4h+C4hOC5jAor4Lih4Lix4LiV4LiiCivguKHguLHguJXguKrguKLguLAKK+C4oeC4seC4leC4quC4ouC4sgor4Lih4Lix4LiV4Liq4LijCivguKHguLHguJXguKrguKPguKPguKLguYwKK+C4oeC4seC4l+C4meC4sAor4Lih4Lix4LiX4LiZ4Li14Lii4LiwCivguKHguLHguJfguKLguLAKK+C4oeC4seC4mOC4ouC4oQor4Lih4Lix4LiY4Lii4Lih4LiyCivguKHguLHguJjguKLguLHguJnguKvguYwKK+C4oeC4seC4mOC4ouC4seC4quC4luC5jAor4Lih4Lix4LiZCivguKHguLHguYjguJkKK+C4oeC4seC4meC4lOC4tQor4Lih4Lix4LiZ4LiV4LiyCivguKHguLHguJnguJbguLAKK+C4oeC4seC4meC4l+C4tOC4owor4Lih4Lix4LiZ4LiX4Li04Lij4Liy4Lil4Lix4LiiCivguKHguLHguJnguYTguKrguYkKK+C4oeC4seC4mgor4Lih4Lix4Lia4LmGCivguKHguLHguYnguKEKK+C4oeC4seC4oeC4oeC4teC5iAor4Lih4Lix4LiiCivguKHguLHguKXguIEKK+C4oeC4seC4peC4peC4sAor4Lih4Lix4Lil4Lil4Li04LiB4LiyCivguKHguLHguKcKK+C4oeC4seC5iOC4pwor4Lih4Lix4Lio4Lii4LiyCivguKHguLHguKrguJTguIEKK+C4oeC4seC4quC4lOC4uAor4Lih4Lix4Liq4LiV4Liy4Lij4LmM4LiUCivguKHguLHguKrguJXguLgKK+C4oeC4seC4quC4oeC4seC5iOC4mQor4Lih4Lix4Liq4Lii4Li04LiUCivguKHguLHguKrguKPguLnguYgKK+C4oeC4seC4quC4peC4tOC4mQor4Lih4Lix4Liq4Liq4Li4CivguKHguLIKK+C4oeC5ieC4sgor4Lih4Liy4LiBCivguKHguLLguITguKrguLTguKPguLAKK+C4oeC4suC4huC4sAor4Lih4LmJ4Liy4LiHCivguKHguLLguIfguKrguLAKK+C4oeC4suC4k+C4ngor4Lih4Liy4LiT4Lin4Li04LiB4LiyCivguKHguLLguJQKK+C4oeC4suC4lOC4sgor4Lih4Liy4LiV4LiH4LiE4LmMCivguKHguLLguJXguKMKK+C4oeC4suC4leC4o+C4geC4suC4owor4Lih4Liy4LiV4Lij4LiI4Lit4LiU4Lij4LiWCivguKHguLLguJXguKPguJDguLLguJkKK+C4oeC4suC4leC4o+C5geC4oeC5ieC4mQor4Lih4Liy4LiV4Lij4Lin4LmI4LiyCivguKHguLLguJXguKPguLIKK+C4oeC4suC4leC4pAor4Lih4Liy4LiV4Lik4LiB4LiwCivguKHguLLguJXguKrguKPguKPguKLguYwKK+C4oeC4suC4leC4seC4h+C4hAor4Lih4Liy4LiV4LiyCivguKHguLLguJXguLLguKHguKvguLAKK+C4oeC4suC4leC4suC4oeC4q+C4seC4ouC4geC4sAor4Lih4Liy4LiV4Liy4Lih4Lir4Lix4Lii4LiB4LiyCivguKHguLLguJXguLLguKHguKvguLHguKLguKLguLTguIHguLIKK+C4oeC4suC4leC4suC4oeC4q+C4sgor4Lih4Liy4LiV4Li04LiBCivguKHguLLguJXguLTguIHguLIKK+C4oeC4suC4leC4tQor4Lih4Liy4LiV4Li4CivguKHguLLguJXguLjguIjguInguLIKK+C4oeC4suC4leC4uOC4o+C4h+C4hOC5jAor4Lih4Liy4LiV4Li44LmA4Lij4LioCivguKHguLLguJXguLjguKXguLAKK+C4oeC4suC4leC4uOC4peC4sgor4Lih4Liy4LiV4Li44Lil4Liy4LiZ4Li1CivguKHguLLguJXguLjguKXguLjguIfguITguYwKK+C4oeC4suC4lwor4Lih4Liy4LiX4LiZCivguKHguYnguLLguJfguKXguLLguKLguYLguKPguIcKK+C4oeC4suC4mOC4ouC4oeC4tOC4geC4sAor4Lih4Liy4LiY4Li44LijCivguKHguLLguJjguLjguKrguKMKK+C4oeC4suC4mOC4ueC4owor4Lih4Liy4LiZCivguKHguYjguLLguJkKK+C4oeC5ieC4suC4mQor4Lih4Liy4LiZ4LieCivguKHguYjguLLguJnguKXguLLguKIKK+C4oeC5iOC4suC4meC4reC4tOC4meC4l+C4meC4tOC4pQor4Lih4Liy4LiZ4LiwCivguKHguLLguJnguLHguJUKK+C4oeC4suC4meC4seC4qgor4Lih4Liy4LiZ4Li04LiVCivguKHguLLguJnguLUKK+C4oeC4suC4meC4uOC4qQor4Lih4Liy4LmC4LiZ4LiK4LiN4LmMCivguKHguLLguJoKK+C4oeC4suC4m+C4gQor4Lih4Liy4Lig4LiyCivguKHguYnguLLguKEKK+C4oeC4suC4ogor4Lih4LmI4Liy4LiiCivguKHguYnguLLguKIKK+C4oeC4suC4ouC4seC4hwor4Lih4Liy4Lii4LiyCivguKHguLLguKMKK+C4oeC4suC4o+C4hAor4Lih4Liy4Lij4LiE4Lit4Lir4Lit4LiiCivguKHguLLguKPguIrguLQKK+C4oeC4suC4o+C4iuC4tOC4lQor4Lih4Liy4Lij4LiU4LijCivguKHguLLguKPguJTguLIKK+C4oeC4suC4o+C5jOC4lOC4tOC4geC4o+C4suC4quC5jAor4Lih4Liy4Lij4Lic4LiI4LiNCivguKHguLLguKPguKLguLIKK+C4oeC4suC4o+C4ouC4suC4lwor4Lih4Liy4Lij4Lin4Li04LiK4Lix4LiiCivguKHguLLguKPguKfguLTguIrguLTguJUKK+C4oeC4suC4o+C5gOC4p+C4leC4suC4pQor4Lih4Liy4Lij4Lio4Lij4Li1CivguKHguLLguKPguKnguLIKK+C4oeC4suC4o+C4quC4seC4h+C4hOC4oQor4Lih4Liy4Lij4Lir4Lix4Lin4LiC4LiZCivguKHguLLguKPguKvguLHguKfguYPguIgKK+C4oeC4suC4o+C4sAor4Lih4Liy4Lij4Liy4LiY4Lit4LiZCivguKHguYnguLLguKPguLMKK+C4oeC4suC4o+C4tAor4Lih4Liy4Lij4Li04LiVCivguKHguLLguKPguLTguKnguLAKK+C4oeC4suC4o+C4tOC4quC4sAor4Lih4Liy4Lij4Li44LiVCivguKHguLLguKPguLjguKHguKHguLLguJXguLjguYnguKEKK+C4oeC4suC4peC4ouC5jAor4Lih4Liy4Lil4Lix4LiiCivguKHguLLguKXguLIKK+C4oeC4suC4peC4suC4leC4tQor4Lih4Liy4Lil4Liy4LmA4Lij4Li14LiiCivguKHguLLguKXguLMKK+C4oeC4suC4peC4tOC4meC4tQor4Lih4Liy4Lil4Li1CivguKHguLLguKXguLjguJUKK+C4oeC4suC4p+C4quC4sAor4Lih4Liy4Lin4Liy4LijCivguKHguLLguKgKK+C4oeC4suC4qgor4Lih4Liy4Liq4LiBCivguKHguYnguLLguKrguLDguJrguLHguJTguIHguLXguJoKK+C4oeC4suC4q+C5jAor4Lih4LmI4Liy4Lir4LmMCivguKHguLLguKvguLTguKoKK+C4oeC5iOC4suC5gOC4q+C4oeC4teC5iOC4ouC4pwor4Lih4Liy4Lis4LiBCivguKHguYnguLLguK3guYnguKfguJkKK+C4oeC4s+C5gOC4peC4t+C4reC4hwor4Lih4Li0CivguKHguLTguIQKK+C4oeC4tOC5iOC4hwor4Lih4Li04LiH4LmC4LiECivguKHguLTguIjguInguLIKK+C4oeC4tOC4iuC4iuC4seC4meC4meC4suC4o+C4tQor4Lih4Li04LiL4LiL4Lix4LiHCivguKHguLTguJQKK+C4oeC4tOC4lOC4q+C4oeC4tQor4Lih4Li04LiV4LijCivguKHguLTguJXguLQKK+C4oeC4tOC4luC4ouC4sgor4Lih4Li04LiW4Li44LiZCivguKHguLTguJfguJjguLAKK+C4oeC4tOC4l+C4mOC4tQor4Lih4Li04LiZ4LiV4Lij4LiyCivguKHguLTguJnguJXguLIKK+C4oeC4tOC4meC4q+C4oeC5ieC4rQor4Lih4Li04LiZ4LmI4LiyCivguKHguLTguJnguYjguLLguKXguYjguLAKK+C4oeC4tOC4meC5iOC4suC5gOC4peC5iOC4sgor4Lih4Li04LmJ4LihCivguKHguLTguKLguLIKK+C4oeC4tOC5hOC4ogor4Lih4Li04Lij4Lix4LiZ4LiV4Li1CivguKHguLTguKXguKXguLTguIHguKPguLHguKEKK+C4oeC4tOC4peC4peC4tOC4muC4suC4o+C5jAor4Lih4Li04Lil4Lix4LiB4LiC4LiwCivguKHguLTguKXguLHguIHguILguLkKK+C4oeC4tOC4peC4suC4lQor4Lih4Li04Lil4Li04LmA4Lih4LiV4LijCivguKHguLTguKrguIHguKPguLUKK+C4oeC4tOC4quC4i+C4sgor4Lih4Li1CivguKHguLXguYgKK+C4oeC4teC4lAor4Lih4Li14LiU4Lii4Lix4LiaCivguKHguLXguYDguJfguJkKK+C4oeC4teC4mQor4Lih4Li14LmI4Liq4Lix4LmJ4LinCivguKHguLbguIEKK+C4oeC4tuC4hwor4Lih4Li24LiH4Lin4Liy4Lie4Liy4LmC4Lin4LiiCivguKHguLbguJkKK+C4oeC4t+C4lAor4Lih4Li34LiZCivguKHguLfguYjguJkKK+C4oeC4t+C4rQor4Lih4Li34LmJ4LitCivguKHguLgKK+C4oeC4uOC4gQor4Lih4Li44LiB4LiU4LiyCivguKHguLjguIHguJTguLLguKvguLLguKMKK+C4oeC4uOC4geC4uOC4owor4Lih4Li44LiB4Li44LilCivguKHguLjguIIKK+C4oeC4uOC5guC4guC5guC4peC4geC4meC4sAor4Lih4Li44LiE4LiE4LiwCivguKHguLjguITguJjguYwKK+C4oeC4uOC4hOC4owor4Lih4Li44LiHCivguKHguLjguYjguIcKK+C4oeC4uOC5ieC4hwor4Lih4Li44LiH4LiB4Lij4Liw4LiV4LmI4Liy4LiiCivguKHguLjguIjguInguLIKK+C4oeC4uOC4iOC4mQor4Lih4Li44LiI4Lil4Li04LiZ4LiX4LmMCivguKHguLjguI3guIjguJnguLAKK+C4oeC4uOC4jeC4igor4Lih4Li44LiQ4Li0CivguKHguLjguJPguJEKK+C4oeC4uOC4k+C4keC4gQor4Lih4Li44LiUCivguKHguLjguJUKK+C4oeC4uOC4leC4leC4sAor4Lih4Li44LiV4LiV4LiyCivguKHguLjguJXguJXguLQKK+C4oeC4uOC4leC4tAor4Lih4Li44LiV4Li04LiH4LiE4LmMCivguKHguLjguJfguIQKK+C4oeC4uOC4l+C4hOC4owor4Lih4Li44LiX4LiX4LiyCivguKHguLjguJfguJjguIrguLAKK+C4oeC4uOC4l+C4mOC4sgor4Lih4Li44LiX4Lij4LiyCivguKHguLjguJfguKPguLTguIHguLIKK+C4oeC4uOC4l+C4sOC4peC4uAor4Lih4Li44LiX4LiyCivguKHguLjguJfguLTguIHguLIKK+C4oeC4uOC4l+C4tOC4h+C4hOC5jAor4Lih4Li44LiX4Li04LiV4LiyCivguKHguLjguJfguLTguJkKK+C4oeC4uOC4l+C4uAor4Lih4Li44LmI4LiZCivguKHguLjguJnguLQKK+C4oeC4uOC4meC4tQor4Lih4Li44LiaCivguKHguLjguJrguYYKK+C4oeC4uOC4oQor4Lih4Li44LmI4LihCivguKHguLjguYnguKEKK+C4oeC4uOC5iOC4ogor4Lih4Li44Lij4LiKCivguKHguLjguKPguJjguLIKK+C4oeC4uOC4peC4quC4sAor4Lih4Li44Lil4Li44LiVCivguKHguLjguKXguLkKK+C4oeC4uOC4quC4peC4tOC4oQor4Lih4Li44Liq4LiwCivguKHguLjguKrguLIKK+C4oeC4uOC4quC4tOC4gQor4Lih4Li44Lir4LiH4Li04LiUCivguKHguLjguKvguJnguYjguLLguKIKK+C4oeC4uOC4q+C4uOC4lQor4Lih4Li54LiBCivguKHguLnguIHguKHguLHguJkKK+C4oeC4ueC4geC4q+C4peC4p+C4hwor4Lih4Li54LiL4Lix4LiHCivguKHguLnguYDguIvguK0KK+C4oeC4ueC4leC4owor4Lih4Li54LmI4LiX4Li54LmICivguKHguLnguJkKK+C4oeC4ueC4oeC4oeC4suC4oQor4Lih4Li54Lij4LiU4Li1CivguKHguLnguKPguJXguLQKK+C4oeC4ueC4o+C4mOC4sgor4Lih4Li54LilCivguKHguLnguKXguLIKK+C4oeC4ueC4peC4tOC4geC4suC4geC4owor4Lih4Li54LmI4Lil4Li14LmICivguKHguLnguYjguYDguKXguYgKK+C4oeC4ueC4quC4tOC4gQor4LmA4LihCivguYDguKHguYfguIEKK+C5gOC4oeC4geC4sOC5gOC4ruC4tOC4o+C4leC4i+C5jAor4LmA4Lih4LiC4Lil4LiyCivguYDguKHguIYKK+C5gOC4oeC4huC4ieC4suC4ogor4LmA4Lih4LiG4Lie4Lix4LiUCivguYDguKHguYfguIcKK+C5gOC4oeC4h+C4reC4sOC4m+C4sgor4LmA4Lih4LmH4LiUCivguYDguKHguJXguJXguLIKK+C5gOC4oeC4leC5hOC4leC4o+C4ogor4LmA4Lih4LiV4LijCivguYDguKHguJXguKPguLTguIEKK+C5gOC4oeC4leC4o+C4tOC4geC4leC4seC4mQor4LmA4Lih4LiW4Li44LiZCivguYDguKHguJcKK+C5gOC4oeC4l+C4meC4tQor4LmA4Lih4LiX4Li04LiZ4Li1CivguYDguKHguJfguLTguKXguYHguK3guKXguIHguK3guK7guK3guKXguYwKK+C5gOC4oeC5guC4lwor4LmA4Lih4LiYCivguYDguKHguJjguLIKK+C5gOC4oeC4mOC4suC4p+C4tQor4LmA4Lih4LiY4Li1CivguYDguKHguJkKK+C5gOC4oeC5iOC4mQor4LmA4Lih4LmJ4LiZCivguYDguKHguJnguYDguJTguKfguLXguYDguKXguLXguKLguKEKK+C5gOC4oeC4meC4l+C4reC4pQor4LmA4Lih4LiZ4Li5CivguYDguKHguYnguKEKK+C5gOC4oeC4ouC5jOC5gOC4lOC4ouC5jAor4LmA4Lih4Lij4Lix4LiiCivguYDguKHguKPguLgKK+C5gOC4oeC4peC5jAor4LmA4Lih4Lil4LiBCivguYDguKHguKXguYfguJQKK+C5gOC4oeC4peC4t+C4reC4hwor4LmA4Lih4Lil4Li34LmI4Lit4LiiCivguYDguKHguKXguLfguYnguK3guKIKK+C5gOC4oeC4qQor4LmA4Lih4LirCivguYDguKHguKvguYwKK+C5gOC4oeC4q+C4mQor4LmA4Lih4LiwCivguYDguKHguLIKK+C5gOC4oeC5iOC4sgor4LmA4Lih4LmJ4LiyCivguYDguKHguYnguLLguYDguITguYnguLIKK+C5gOC4oeC4suC4o+C4tQor4LmA4Lih4Liy4Lil4Li04LiUCivguYDguKHguLLguKXguLUKK+C5gOC4oeC4suC4q+C5jAor4LmA4Lih4Liy4LiwCivguYDguKHguLLguLDguJXguLLguYLguKLguIHguLHguIEKK+C5gOC4oeC4tOC4hwor4LmA4Lih4Li04LiZCivguYDguKHguLTguKUKK+C5gOC4oeC4teC4ogor4LmA4Lih4Li14Lii4LiHCivguYDguKHguLXguYjguKLguIcKK+C5gOC4oeC4teC5ieC4ouC4mQor4LmA4Lih4Li14LmJ4Lii4Lin4LmGCivguYDguKHguLfguK0KK+C5gOC4oeC4t+C5iOC4rQor4LmA4Lih4Li34LmJ4LitCivguYDguKHguLfguK3guIEKK+C5gOC4oeC4t+C4reC4hwor4LmA4Lih4Li34Lit4LiaCivguYDguKHguLfguYjguK3guKIKK+C5geC4oeC5iAor4LmB4Lih4LmJCivguYHguKHguIEKK+C5geC4oeC4geC4meC4teC5gOC4i+C4teC4ouC4oQor4LmB4Lih4LiHCivguYHguKHguIfguIHguLLguJnguLTguJkKK+C5geC4oeC4h+C4geC4suC4meC4teC4qgor4LmB4Lih4LiH4Lib4Liy4LiB4LiI4Lit4LiaCivguYHguKHguIfguYTguJ/guYDguJTguLfguK3guJnguKvguYnguLIKK+C5geC4oeC5iOC4h+C4oeC5ieC4suC4hwor4LmB4Lih4LiH4Lil4Lix4LiBCivguYHguKHguYjguJXguLDguIfguLLguKcKK+C5geC4oeC5iOC4leC4suC4ogor4LmB4Lih4LiZCivguYHguKHguYjguJkKK+C5geC4oeC5ieC4mQor4LmB4Lih4LmJ4LiZ4LmA4LiC4Li14Lii4LiZCivguYHguKHguJnguJTguLLguKPguLTguJkKK+C5geC4oeC5iOC4oeC5iOC4suC4meC4peC4reC4h+C5hOC4mQor4LmB4Lih4LijCivguYHguKHguKXguIcKK+C5geC4oeC4peC4mgor4LmB4Lih4LinCivguYHguKHguYnguKcKK+C5geC4oeC4sAor4LmC4LihCivguYLguKHguYgKK+C5guC4oeC5iQor4LmC4Lih4LiBCivguYLguKHguIHguILguYwKK+C5guC4oeC4geC5guC4hOC4gQor4LmC4Lih4LiB4Lip4LiwCivguYLguKHguIHguLjguKUKK+C5guC4oeC4huC4sAor4LmC4Lih4LiG4Li14Lii4LiwCivguYLguKHguIcKK+C5guC4oeC5iOC4hwor4LmC4Lih4LiH4LiE4Lij4Li44LmI4LihCivguYLguKHguYDguJXguYfguKUKK+C5guC4oeC4l+C4meC4sgor4LmC4Lih4LiZCivguYLguKHguYDguJnguJXguYwKK+C5guC4oeC5guC4meC5geC4i+C5h+C4geC4hOC4suC5hOC4o+C4lOC5jAor4LmC4Lih4LmE4LiZ4LiiCivguYLguKHguKHguLnguKvguYwKK+C5guC4oeC4oeC4ueC4q+C4sAor4LmC4Lih4LmA4LihCivguYLguKHguKPguLIKK+C5guC4oeC4o+C4tQor4LmC4Lih4LmA4Lij4LioCivguYLguKHguKXguLTguJrguJTguLXguJnguLHguKEKK+C5guC4oeC4peC4tQor4LmC4Lih4LmA4Lil4LiB4Li44LilCivguYLguKHguKkKK+C5guC4oeC4qeC4gQor4LmC4Lih4Lip4LiTCivguYLguKHguYDguKrguKoKK+C5guC4oeC5iOC4q+C5jAor4LmC4Lih4Lir4LiwCivguYLguKHguYLguKsKK+C5hOC4oeC4geC4sgor4LmE4Lih4LiE4Lij4Lit4LiZCivguYTguKHguYLguITguIHguKPguLHguKEKK+C5hOC4oeC5guC4hOC4o+C4n+C4tOC4peC5jOC4oQor4LmE4Lih4LmC4LiE4Lij4LmC4Lif4LiZCivguYTguKHguYLguITguKPguKHguLTguYDguJXguK3guKPguYwKK+C5hOC4oeC5guC4hOC4o+C5gOC4oeC4leC4owor4LmE4Lih4LmC4LiE4Lij4Lil4Li04LiV4LijCivguYTguKHguYLguITguKPguYDguKfguJ8KK+C5hOC4oeC4leC4o+C4tQor4LmE4Lih4LmI4LmE4Lih4LmJCivguYTguKHguKLguKPguLLguJoKK+C5hOC4oeC4peC5jAor4LiiCivguKLguIEKK+C4ouC4geC4geC4o+C4sOC4muC4seC4leC4owor4Lii4LiB4LiZCivguKLguIcKK+C4ouC4h+C4ouC4uOC4l+C4mOC5jAor4Lii4LiH4LmC4Lii4LmICivguKLguIrguLjguKPguYDguKfguJcKK+C4ouC4leC4tAor4Lii4LiW4LiyCivguKLguYjguJkKK+C4ouC4meC4leC5jAor4Lii4LiZ4LiV4Lij4LmMCivguKLguKEKK+C4ouC4oeC4gQor4Lii4Lih4LmC4LiU4LiiCivguKLguKHguJnguLIKK+C4ouC4oeC4pQor4Lii4Lij4Lij4Lii4LiHCivguKLguKUKK+C4ouC4pwor4Lii4Lin4LiB4Liq4LiyCivguKLguKfguIcKK+C4ouC4p+C4lAor4Lii4Lin4LiU4Lii4Liy4LiZCivguKLguKfguJkKK+C4ouC4p+C4mgor4Lii4LmJ4Lin4LiiCivguKLguKfguKPguKLguLLguJXguKMKK+C4ouC4p+C4sgor4Lii4Lin4Liy4LiE4Li4CivguKLguKgKK+C4ouC5guC4qgor4Lii4LitCivguKLguK3guIEKK+C4ouC4reC4geC4ouC5ieC4reC4mQor4Lii4LmH4Lit4LiB4LmB4Lii4LmH4LiBCivguKLguYfguK3guIHguYHguKLguYfguIHguYYKK+C4ouC4reC4hwor4Lii4LmI4Lit4LiHCivguKLguYnguK3guIcKK+C4ouC4reC4h+C5hgor4Lii4LmI4Lit4LiH4LmA4Lir4LiH4LmH4LiUCivguKLguK3guJQKK+C4ouC4reC4lOC4iOC4suC4gQor4Lii4Lit4LiZCivguKLguYnguK3guJkKK+C4ouC4reC4mgor4Lii4Lit4LihCivguKLguYjguK3guKEKK+C4ouC5ieC4reC4oQor4Lii4LmI4Lit4LiiCivguKLguYnguK3guKIKK+C4ouC5ieC4reC5geC4ouC5iQor4Lii4LiwCivguKLguYjguLAKK+C4ouC4sOC4h+C4seC4meC4iOC4sOC4hOC4seC4mgor4Lii4Liw4Lii4Lit4LiaCivguKLguLDguKLguLHguJkKK+C4ouC4sOC4ouC4seC4mgor4Lii4Liw4Lii4Liy4LiZCivguKLguLDguKLguYnguLLguKIKK+C4ouC4sOC4ouC5ieC4suC4pwor4Lii4Liw4LmB4Lii4LmJ4LiHCivguKLguLDguKvguLTguJfguLIKK+C4ouC4seC4gQor4Lii4Lix4LiB4LiC4LmMCivguKLguLHguIHguILguLTguJnguLUKK+C4ouC4seC4geC5gOC4nuC4o+C4teC4ogor4Lii4Lix4LiB4Lii4Li14LmI4Lii4Lix4LiB4Lii4Lix4LiZCivguKLguLHguIHguKLguLXguYjguKLguLHguIHguKvguKLguLIKK+C4ouC4seC4geC5geC4ouC5iOC4ouC4seC4geC4ouC4seC4mQor4Lii4Lix4LiB4Lip4LmMCivguKLguLHguIHguKnguLTguJPguLUKK+C4ouC4seC4geC4qeC4tQor4Lii4Lix4LiB4Lir4Lii4Liy4LinCivguKLguLHguIcKK+C4ouC4seC5ieC4hwor4Lii4Lix4LiH4LiB4Liy4Lir4Lil4LiyCivguKLguLHguYjguIfguKLguLfguJkKK+C4ouC4seC4h+C4q+C4ouC4seC4hwor4Lii4Lix4LiK4LmC4LiN4Lib4Lin4Li14LiVCivguKLguLHguIrguJkKK+C4ouC4seC4iuC4oeC4suC4mQor4Lii4Lix4LiNCivguKLguLHguI3guI3guLAKK+C4ouC4seC4jeC4jeC4seC4h+C4hOC5jAor4Lii4Lix4LiQ4Li0CivguKLguLHguJDguLTguKHguJjguLjguIHguLIKK+C4ouC4seC4lAor4Lii4Lix4LiV4Li04Lig4Lix4LiH4LiE4LmMCivguKLguLHguJkKK+C4ouC4seC5iOC4mQor4Lii4Lix4LiZ4LiV4LmMCivguKLguLHguJnguJXguKPguYwKK+C4ouC4seC5iOC4meC4leC4sOC4meC4tQor4Lii4Lix4LiZ4LmA4Lii4LmJ4LiyCivguKLguLHguJoKK+C4ouC4seC4muC5hgor4Lii4Lix4Lia4Lii4Lix4LmJ4LiHCivguKLguLHguYjguKcKK+C4ouC4seC5ieC4pwor4Lii4Lix4LmJ4Lin4LmA4Lii4Li14LmJ4LiiCivguKLguLHguKfguKPguKLguLLguJXguKMKK+C4ouC4seC4qeC4j+C4tAor4Lii4LiyCivguKLguYjguLIKK+C4ouC4suC4gQor4Lii4Liy4LiECivguKLguLLguITguLgKK+C4ouC4suC4hOC4uQor4Lii4Liy4LiHCivguKLguYjguLLguIcKK+C4ouC5iOC4suC4h+C4l+C4o+C4suC4ogor4Lii4Liy4LiI4LiBCivguKLguLLguIjguJkKK+C4ouC4suC4iOC4meC4gQor4Lii4Liy4LiI4LiZ4LiyCivguKLguLLguYTguInguJkKK+C4ouC4suC4iuC4gQor4Lii4Liy4LiUCivguKLguLLguJTguLIKK+C4ouC4suC4leC4meC4sgor4Lii4Liy4LiV4LijCivguKLguLLguJXguKPguLIKK+C4ouC4suC4mQor4Lii4LmI4Liy4LiZCivguKLguLLguJnguIEKK+C4ouC5iOC4suC4meC4geC4reC4muC4meC4suC4hwor4Lii4LmI4Liy4LiZ4LiX4Lij4Liy4LiiCivguKLguYjguLLguJnguJ7guLLguYLguKvguKEKK+C4ouC5iOC4suC4meC4oeC4hOC4p+C4suC4ogor4Lii4Liy4LiZ4Lih4Liy4LioCivguKLguYjguLLguJnguKXguLTguYDguKDguLIKK+C4ouC5iOC4suC4meC4suC4hwor4Lii4LmI4Liy4LiZ4Liy4LiH4LiK4LmJ4Liy4LiHCivguKLguLLguJnguLUKK+C4ouC4suC4meC4uOC4oeC4suC4qAor4Lii4Liy4LiaCivguKLguLLguJrguYYKK+C4ouC5iOC4suC4oQor4Lii4Liy4Lih4LiB4Liy4Lil4Li04LiBCivguKLguLLguKHguYDguIHguLIKK+C4ouC4suC4oeC4seC4geC4geC4suC4owor4Lii4Liy4Lih4Li04LiBCivguKLguLLguKIKK+C4ouC5ieC4suC4ogor4Lii4Liy4Lii4Li1CivguKLguLLguKcKK+C4ouC5ieC4suC4pwor4Lii4Liy4Lin4LiB4Liy4Lil4Li04LiBCivguKLguLLguKfguIrguLXguKfguLTguIEKK+C4ouC4suC4p+C4seC4qgor4Lii4Liy4Lir4Lii4Lix4LiHCivguKLguLLguKvguKLguLIKK+C4ouC4suC4q+C4ouC4tQor4Lii4LizCivguKLguYjguLMKK+C4ouC5ieC4swor4Lii4Liz4Lii4Liy4LihCivguKLguLPguYDguKLguLXguKIKK+C4ouC5iOC4s+C5geC4ouC5iAor4Lii4LmJ4Liz4LmA4Lir4Lii4LitCivguKLguLTguIEKK+C4ouC4tOC4geC5hgor4Lii4Li04LiHCivguKLguLTguYjguIcKK+C4ouC4tOC4h+C4n+C4seC4mQor4Lii4Li04LiP4LiQ4LiwCivguKLguLTguJAKK+C4ouC4tOC4mQor4Lii4Li04LiaCivguKLguLTguJrguYYKK+C4ouC4tOC4m+C4i+C4seC4oQor4Lii4Li04Lib4LiL4Li1CivguKLguLTguYnguKEKK+C4ouC4tOC4oeC4meC4suC4quC4leC4tOC4gQor4Lii4Li04Lir4Lin4LiyCivguKLguLUKK+C4ouC4teC5iAor4Lii4Li14LmI4LiB4LmI4LiyCivguKLguLXguYjguYDguIEKK+C4ouC4teC5iOC5gOC4guC5iOC4hwor4Lii4Li14LmI4LmC4LiWCivguKLguLXguJkKK+C4ouC4teC5iOC5guC4m+C5iQor4Lii4Li14LmI4Lig4Li54LmICivguKLguLXguKPguLLguJ8KK+C4ouC4teC5iOC4quC4gQor4Lii4Li14LmI4Liq4LiHCivguKLguLXguYjguKrguJkKK+C4ouC4teC5iOC4quC4suC4mQor4Lii4Li14LmI4Liq4LmI4Liy4LiZCivguKLguLXguYjguKrguLTguJoKK+C4ouC4teC5iOC4quC4uOC5iOC4mQor4Lii4Li14LmI4Lir4Lij4LiwCivguKLguLXguYjguKvguKPguYjguLIKK+C4ouC4teC5iOC4q+C5ieC4rQor4Lii4Li14LmI4Lir4Li44LiaCivguKLguLbguIHguKLguLfguK0KK+C4ouC4t+C4lAor4Lii4Li34LiZCivguKLguLfguYjguJkKK+C4ouC4t+C4oQor4Lii4Li34LmJ4LitCivguKLguLgKK+C4ouC4uOC4geC4geC4o+C4sOC4muC4seC4leC4owor4Lii4Li44LiB4LiU4Li0CivguKLguLjguIHguJXguYwKK+C4ouC4uOC4geC4leC4tAor4Lii4Li44LiECivguKLguLjguITguJnguJjguKMKK+C4ouC4uOC4hOC4pQor4Lii4Li44LiE4Lil4Lia4Liy4LiXCivguKLguLjguITguLHguJnguJXguYwKK+C4ouC4uOC4hOC4seC4meC4mOC4owor4Lii4Li44LiE4Li44LiZ4LiY4LijCivguKLguLjguIcKK+C4ouC4uOC5iOC4hwor4Lii4Li44LmJ4LiHCivguKLguLjguIfguIHguKfguLLguJQKK+C4ouC4uOC4h+C4m+C4seC4lAor4Lii4Li44LiUCivguKLguLjguJUKK+C4ouC4uOC4leC4tAor4Lii4Li44LiX4LiY4LmMCivguKLguLjguJfguJjguJnguLIKK+C4ouC4uOC4mgor4Lii4Li44LmI4Lia4Lii4Lix4LmI4LiaCivguKLguLjguJrguKLguLTguJoKK+C4ouC4uOC4muC4pQor4Lii4Li44Lie4LiU4Li1CivguKLguLjguJ7guLIKK+C4ouC4uOC4nuC4suC4mQor4Lii4Li44Lie4Liy4Lie4Liy4LilCivguKLguLjguJ7guLLguJ7guLTguJkKK+C4ouC4uOC5iOC4oeC4ouC5iOC4suC4oQor4Lii4Li44LmI4LiiCivguKLguLjguYnguKIKK+C4ouC4uOC4o+C4muC4suC4leC4owor4Lii4Li44Lij4Lii4Liy4LiV4LijCivguKLguLjguKfguJTguLUKK+C4ouC4uOC4p+C4sgor4Lii4Li44Lin4Liy4LiZCivguKLguLjguKvguJrguLLguJXguKMKK+C4ouC4uQor4Lii4Li54LmICivguKLguLnguITguLLguKXguLTguJvguJXguLHguKoKK+C4ouC4ueC4hwor4Lii4Li54LmC4LiUCivguKLguLnguJbguLAKK+C4ouC4ueC4luC4tOC4geC4sgor4Lii4Li54Lib4LiwCivguKLguLnguKPguKLguLLguJXguKMKK+C4ouC4ueC4o+C4tOC4gQor4Lii4Li54LmA4Lij4LiZ4Lix4LiqCivguKLguLnguYDguKPguYDguJnguLXguKLguKEKK+C4ouC4ueC5guC4o+C5gOC4nuC4teC4ouC4oQor4Lii4Li54Lip4LiwCivguKLguLnguYjguK3guLXguYgKK+C5gOC4ouC5iQor4LmA4Lii4LmGCivguYDguKLguIcKK+C5gOC4ouC4i+C4uQor4LmA4Lii4LmH4LiUCivguYDguKLguYfguJkKK+C5gOC4ouC5h+C4meC4leC4suC5guC4nwor4LmA4Lii4LmH4LiZ4LmA4LiV4Liy4LmC4LifCivguYDguKLguYfguJoKK+C5gOC4ouC4oOC4uOC4ouC4ouC4sAor4LmA4Lii4LmJ4LiiCivguYDguKLguK0KK+C5gOC4ouC5iOC4rQor4LmA4Lii4Lit4Lij4Lih4Lix4LiZCivguYDguKLguK3guKcKK+C5gOC4ouC5iOC4reC4q+C4ouC4tOC5iOC4hwor4LmA4Lii4Lit4LiwCivguYDguKLguLIKK+C5gOC4ouC5ieC4sgor4LmA4Lii4Liy4Lin4LmMCivguYDguKLguLLguKfguJ7guLIKK+C5gOC4ouC4suC4p+C4nuC4suC4k+C4tQor4LmA4Lii4Liy4Lin4Lie4Liy4LiZCivguYDguKLguLTguIcKK+C5gOC4ouC4tOC4mQor4LmA4Lii4Li04LmI4LiZCivguYDguKLguLTguJnguKLguK0KK+C5gOC4ouC4tOC4muC5hgor4LmA4Lii4Li04Lia4Lii4Liy4LiaCivguYDguKLguLTguYnguKEKK+C5gOC4ouC4teC4ogor4LmA4Lii4Li14LmI4Lii4LiHCivguYDguKLguLXguKLguIfguJzguLIKK+C5gOC4ouC4teC5iOC4ouC4h+C4reC4ouC5iOC4suC4hwor4LmA4Lii4Li14Lii4LiU4Lii4Lix4LiUCivguYDguKLguLXguKLguJkKK+C5gOC4ouC4teC4ouC4mgor4LmA4Lii4Li14LmI4Lii4LihCivguYDguKLguLXguYjguKLguKHguKfguLTguKHguLLguJkKK+C5gOC4ouC4teC4ouC4o+C4muC4seC4mgor4LmA4Lii4Li14Lii4Lij4Lii4LiHCivguYDguKLguLXguKLguKcKK+C5gOC4ouC4teC5iOC4ouC4pwor4LmA4Lii4Li14LmI4Lii4Lin4LiH4Li14LinCivguYDguKLguLXguKLguKfguKLguIcKK+C5gOC4ouC4teC4ouC4p+C4ouC4sgor4LmA4Lii4Li34LitCivguYDguKLguLfguYjguK0KK+C5gOC4ouC4t+C5ieC4rQor4LmA4Lii4Li34Lit4LiBCivguYDguKLguLfguK3guIcKK+C5gOC4ouC4t+C5iOC4reC4hwor4LmA4Lii4Li34LmJ4Lit4LiHCivguYDguKLguLfguK3guJkKK+C5gOC4ouC4t+C5ieC4reC4mQor4LmB4Lii4LmICivguYHguKLguYkKK+C5geC4ouC4gQor4LmB4Lii4LiHCivguYHguKLguYjguIcKK+C5geC4ouC5ieC4hwor4LmB4Lii4LiH4LmB4Lii4LmICivguYHguKLguIfguYHguKLguYkKK+C5geC4ouC4mgor4LmB4Lii4LmH4LiaCivguYHguKLguKEKK+C5geC4ouC5ieC4oQor4LmB4Lii4LmB4LiqCivguYHguKLguLAKK+C5guC4ogor4LmC4Lii4LmJCivguYLguKLguIEKK+C5guC4ouC4geC4leC4o+C5jAor4LmC4Lii4LiE4LmA4LiB4LiT4LiR4LmMCivguYLguKLguITguKLguLAKK+C5guC4ouC4hOC4sAor4LmC4Lii4LiE4Li04LiZCivguYLguKLguITguLUKK+C5guC4ouC4hwor4LmC4Lii4LmI4LiH4LmGCivguYLguKLguIfguYLguKLguYgKK+C5guC4ouC4iuC4gQor4LmC4Lii4LiK4LiZ4LmMCivguYLguKLguIrguJnguLIKK+C5guC4ouC4lAor4LmC4Lii4LiVCivguYLguKLguJbguLTguIHguLAKK+C5guC4ouC4l+C4sOC4geC4sgor4LmC4Lii4LiY4LiyCivguYLguKLguJkKK+C5guC4ouC4meC4gQor4LmC4Lii4LiZ4Li04LmC4LiqCivguYLguKLguJnguLTguYLguKrguKHguJnguKrguLTguIHguLLguKMKK+C5guC4ouC4meC4tQor4LmC4Lii4Lie4LiZ4LiwCivguYLguKLguKEKK+C5guC4ouC5guC4qgor4LmD4LiiCivguYTguKIKK+C5hOC4ouC5iAor4LmE4Lii4LiU4Li1CivguYTguKLguYTguJ4KK+C5hOC4ouC5hOC4ogor4LmE4Lii4LmI4LmE4Lii4LmICivguKMKK+C4o+C4gQor4Lij4LiB4LiK4LmJ4Liy4LiHCivguKPguIHguJ/guYnguLIKK+C4o+C4hwor4Lij4LiH4LiB4Li44LmMCivguKPguIfguITguYwKK+C4o+C4h+C4o+C4reC4hwor4Lij4LiI4LiZ4LiyCivguKPguIjguYDguKPguIIKK+C4o+C4iOC5gOC4peC4ggor4Lij4LiI4Li04LiVCivguKPguIrguIHguLAKK+C4o+C4iuC4leC4sAor4Lij4LiK4LiZ4Li0CivguKPguIrguJnguLUKK+C4o+C4iuC4meC4teC4ouC5jAor4Lij4LiK4LiwCivguKPguJMKK+C4o+C4lAor4Lij4LiU4Li1CivguKPguJXguJnguLAKK+C4o+C4leC4sAor4Lij4LiV4Li0CivguKPguJYKK+C4o+C4luC4m+C4uOC4h+C4hOC4ngor4Lij4LiW4Lib4Li44LiH4LiE4LinCivguKPguJbguKLguLIKK+C4o+C4luC4suC4meC4tuC4gQor4Lij4LmA4LiW4Liq4Lig4LiwCivguKPguJcKK+C4o+C4l+C4meC4sAor4Lij4LiZCivguKPguYjguJkKK+C4o+C5ieC4mQor4Lij4LiZ4LiUCivguKPguJoKK+C4o+C4muC4qgor4Lij4Lia4Liy4LiNCivguKPguJ4KK+C4o+C4nuC4sgor4Lij4Lie4Li0CivguKPguJ7guLUKK+C4o+C4oQor4Lij4Lih4LiT4Li14Lii4LmMCivguKPguKHguKLguYwKK+C4o+C4oeC5gOC4ouC4qAor4Lij4Lii4LiwCivguKPguKfguIEKK+C4o+C4p+C4hwor4Lij4LmI4Lin4LiHCivguKPguKfguJQKK+C4o+C4p+C4mQor4Lij4LmI4Lin4LiZCivguKPguKfguJoKK+C4o+C4p+C4oQor4Lij4LmI4Lin4LihCivguKPguKfguKIKK+C4o+C4p+C4ouC5hgor4Lij4Lin4LiwCivguKPguKfguLQKK+C4o+C4p+C4tQor4Lij4Lio4LiZ4LiyCivguKPguKoKK+C4o+C4quC4gQor4Lij4Liq4LiZ4LiyCivguKPguKrguKrguLjguITguJnguJjguYwKK+C4o+C4quC4suC4ouC4meC5gOC4p+C4lwor4Lij4Liq4Li04LiBCivguKPguKvguLHguJcKK+C4o+C4q+C4seC4qgor4Lij4Lir4Lix4Liq4Lii4LmMCivguKPguKvguLTguJUKK+C4o+C5guC4qwor4Lij4LitCivguKPguYjguK0KK+C4o+C4reC4gQor4Lij4Lit4LiHCivguKPguYjguK3guIcKK+C4o+C5ieC4reC4hwor4Lij4Lit4LiH4LmA4LiH4LmH4LiHCivguKPguYjguK3guIfguYHguKPguYjguIcKK+C4o+C4reC4lAor4Lij4Lit4LiZCivguKPguYjguK3guJkKK+C4o+C5ieC4reC4mQor4Lij4LmI4Lit4LiZ4LiX4Lit4LiHCivguKPguK3guJoKK+C4o+C4reC4oQor4Lij4Lit4Lih4LiK4Lit4LihCivguKPguK3guKHguKPguYjguK0KK+C4o+C4reC4ogor4Lij4LmI4Lit4LiiCivguKPguYnguK3guKIKK+C4o+C5ieC4reC4ouC4o+C4uQor4Lij4LmI4Lit4LmB4Lij4LmICivguKPguLAKK+C4o+C4sOC4geC4sAor4Lij4Liw4LiB4LiyCivguKPguLDguIHguLMKK+C4o+C4sOC5gOC4geC4sOC4o+C4sOC4geC4sAor4Lij4Liw4LiE4LiZCivguKPguLDguITguLLguIcKK+C4o+C4sOC4hOC4suC4ogor4Lij4Liw4LmA4LiE4LmH4LiU4Lij4Liw4LiE4Liy4LiiCivguKPguLDguYHguITguLAKK+C4o+C4sOC4huC4seC4hwor4Lij4Liw4LiH4LihCivguKPguLDguIfguKHguYTguJ7guKMKK+C4o+C4sOC4h+C4seC4mgor4Lij4Liw4LiH4Lix4Lia4Lie4Li04LipCivguKPguLDguIfguLXguYgKK+C4o+C4sOC5geC4h+C5iQor4Lij4Liw4LmC4LiH4LiB4Lir4Li04LiZCivguKPguLDguIrguKfguKIKK+C4o+C4sOC4lOC4oQor4Lij4Liw4LiU4LiwCivguKPguLDguJTguLHguJoKK+C4o+C4sOC4lOC4sgor4Lij4Liw4LiU4LmI4Liy4LinCivguKPguLDguJTguLkKK+C4o+C4sOC5gOC4lOC5iOC4mQor4Lij4Liw4LmA4LiU4Li14Lii4LiHCivguKPguLDguYHguJQKK+C4o+C4sOC4leC4uQor4Lij4Liw4LiX4LiBCivguKPguLDguJfguJQKK+C4o+C4sOC4l+C4oQor4Lij4Liw4LiX4Lin4LiiCivguKPguLDguJfguK3guJQKK+C4o+C4sOC4l+C4sgor4Lij4Liw4LiX4Li24LiBCivguKPguLDguJfguLbguIcKK+C4o+C4sOC5geC4l+C4sAor4Lij4Liw4LiZ4Lix4LihCivguKPguLDguJnguLLguJQKK+C4o+C4sOC4meC4suC4mgor4Lij4Liw4LiZ4Liy4LihCivguKPguLDguJnguLLguKcKK+C4o+C4sOC5gOC4meC4mQor4Lij4Liw4LmA4LiZ4LiZ4Lij4Liw4LiZ4Liy4LiUCivguKPguLDguYDguJnguKPguLDguJnguLLguJQKK+C4o+C4sOC5gOC4meC4teC4ouC4lAor4Lij4Liw4LmB4LiZ4LiHCivguKPguLDguYHguJnguLAKK+C4o+C4sOC4muC4mgor4Lij4Liw4Lia4LihCivguKPguLDguJrguK3guJoKK+C4o+C4sOC4muC4seC4lAor4Lij4Liw4Lia4Lix4LiaCivguKPguLDguJrguLLguI0KK+C4o+C4sOC4muC4suC4lAor4Lij4Liw4Lia4Liy4LiZ4Li1CivguKPguLDguJrguLLguJnguLXguYkKK+C4o+C4sOC4muC4suC4ogor4Lij4Liw4Lia4LizCivguKPguLDguJrguLQKK+C4o+C4sOC4muC4tOC4pQor4Lij4Liw4Lia4Li34LitCivguKPguLDguJrguLgKK+C4o+C4sOC4muC4uQor4Lij4Liw4LmA4Lia4LiHCivguKPguLDguYDguJrguYfguIcKK+C4o+C4sOC5gOC4muC4tOC4lAor4Lij4Liw4LmA4Lia4Li14Lii4LiHCivguKPguLDguYDguJrguLXguKLguJkKK+C4o+C4sOC5gOC4muC4teC4ouC4mgor4Lij4Liw4LmB4Lia4LiaCivguKPguLDguYPguJoKK+C4o+C4sOC4oeC4seC4lOC4o+C4sOC4p+C4seC4hwor4Lij4Liw4Lih4LiyCivguKPguLDguKHguLLguJQKK+C4o+C4sOC5gOC4oeC4teC4ouC4owor4Lij4Liw4Lii4LmI4LitCivguKPguLDguKLguYjguK3guKEKK+C4o+C4sOC4ouC4sAor4Lij4Liw4Lii4Lix4LiHCivguKPguLDguKLguLHguYnguIcKK+C4o+C4sOC4ouC4seC4lAor4Lij4Liw4Lii4Lix4LiaCivguKPguLDguKLguYnguLIKK+C4o+C4sOC4ouC4suC4mQor4Lij4Liw4Lii4Liy4LiaCivguKPguLDguKLguLLguKHguKPguLDguKLguLHguJoKK+C4o+C4sOC4ouC4swor4Lij4Liw4Lii4Li04Lia4Lij4Liw4Lii4Lix4LiaCivguKPguLDguYLguKLguIcKK+C4o+C4sOC4o+C4p+C4ogor4Lij4Liw4Lij4Lit4LiHCivguKPguLDguKPguYjguK3guJkKK+C4o+C4sOC4o+C4seC4pwor4Lij4Liw4Lij4Liy4LiZCivguKPguLDguKPguYjguLLguKIKK+C4o+C4sOC4o+C4suC4pwor4Lij4Liw4Lij4Li04LiBCivguKPguLDguKPguLXguYgKK+C4o+C4sOC4o+C4tuC4hwor4Lij4Liw4Lij4Li34LmI4LiZCivguKPguLDguKPguLfguYnguJkKK+C4o+C4sOC5gOC4owor4Lij4Liw4LmA4Lij4LmICivguKPguLDguYDguKPguYnguIcKK+C4o+C4sOC5gOC4o+C5h+C4pwor4Lij4Liw4LmA4Lij4Li04LiHCivguKPguLDguYDguKPguLXguKLguIcKK+C4o+C4sOC5gOC4o+C4teC4ouC4oQor4Lij4Liw4LmA4Lij4Li34LmI4Lit4LiiCivguKPguLDguYHguKPguYgKK+C4o+C4sOC5geC4o+C4hwor4Lij4Liw4Lil4LiHCivguKPguLDguKXguKfguIcKK+C4o+C4sOC4peC4reC4gQor4Lij4Liw4Lil4Lix4LiUCivguKPguLDguKXguLbguIEKK+C4o+C4sOC4peC4uOC4gQor4Lij4Liw4Lil4Li44LiHCivguKPguLDguYDguKXguLTguIcKK+C4o+C4sOC5gOC4peC4teC4ouC4lAor4Lij4Liw4Lin4Lix4LiHCivguKPguLDguKfguLHguIfguYTguJ7guKMKK+C4o+C4sOC4p+C4seC4h+C4p+C4seC4mQor4Lij4Liw4Lin4Liy4LiHCivguKPguLDguKfguLLguJTguKPguLDguYTguKcKK+C4o+C4sOC4p+C4suC4oQor4Lij4Liw4Lin4Liy4LiiCivguKPguLDguKfguLTguIcKK+C4o+C4sOC5geC4p+C4hwor4Lij4Liw4LmB4Lin4LiU4Lij4Liw4Lin4Lix4LiHCivguKPguLDguYTguKcKK+C4o+C4sOC4quC4suC4ogor4Lij4Liw4Liq4LmI4Liz4Lij4Liw4Liq4Liy4LiiCivguKPguLDguKrguLUKK+C4o+C4sOC5gOC4quC4tOC4lOC4o+C4sOC4quC4seC4hwor4Lij4Liw4Lir4LiB4Lij4Liw4LmA4Lir4Li04LiZCivguKPguLDguKvguIcKK+C4o+C4sOC4q+C4p+C4ogor4Lij4Liw4Lir4Lin4LmI4Liy4LiHCivguKPguLDguKvguK3guIfguKPguLDguYHguKvguIcKK+C4o+C4sOC4q+C4reC4mgor4Lij4Liw4Lir4Lix4LiUCivguKPguLDguKvguLLguKIKK+C4o+C4sOC4q+C4uOC4ogor4Lij4Liw4LmA4Lir4LmH4LiICivguKPguLDguYDguKvguKIKK+C4o+C4sOC5gOC4q+C4o+C4sOC4q+C4mQor4Lij4Liw4LmA4Lir4Lir4LiZCivguKPguLDguYDguKvguKvguLHguJkKK+C4o+C4sOC5gOC4q+C4tOC4lAor4Lij4Liw4LmA4Lir4Li04LiZ4Lij4Liw4Lir4LiBCivguKPguLDguYHguKvguIEKK+C4o+C4sOC5geC4q+C4hwor4Lij4Liw4LmC4Lir4LiiCivguKPguLDguK3guKHguKPguLDguK3guLIKK+C4o+C4sOC4reC4sgor4Lij4Liw4Lit4Li04LiU4Lij4Liw4Lit4LiyCivguKPguLDguK3guLbguIEKK+C4o+C4sOC4reC4uAor4Lij4Liw4LmB4Lit4LiZCivguKPguLHguIEKK+C4o+C4seC4geC4guC5jAor4Lij4Lix4LiB4LiC4Liq4LiwCivguKPguLHguIHguILguLIKK+C4o+C4seC4geC4guC4tOC4lQor4Lij4Lix4LiB4LiU4LibCivguKPguLHguIHguJTguLAKK+C4o+C4seC4geC4leC4sAor4Lij4Lix4LiB4Lia4Li14LmJCivguKPguLHguIHguYDguKPguYgKK+C4o+C4seC4geC5geC4o+C5iQor4Lij4Lix4LiB4Lip4LmMCivguKPguLHguIHguKnguLIKK+C4o+C4seC4hwor4Lij4Lix4LmJ4LiHCivguKPguLHguIfguYHguIEKK+C4o+C4seC4h+C4hOC5jAor4Lij4Lix4LiH4LiE4Lin4Liy4LiZCivguKPguLHguIfguYHguIQKK+C4o+C4seC4h+C4meC4suC4mQor4Lij4Lix4LiH4Lij4Lit4LiHCivguKPguLHguIfguKfguLHguJQKK+C4o+C4seC4h+C4quC4tAor4Lij4Lix4LiH4Liq4Li04Lih4Lix4LiZ4LiV4Li44LmMCivguKPguLHguIfguKrguLTguKHguLIKK+C4o+C4seC4h+C4quC4tQor4Lij4Lix4LiH4Lir4Lii4Liy4LinCivguKPguLHguIjguInguLIKK+C4o+C4seC4igor4Lij4Lix4LiK4LiB4LiwCivguKPguLHguIrguIrguLgKK+C4o+C4seC4iuC4juC4suC4oOC4tOC5gOC4qeC4gQor4Lij4Lix4LiK4LiZ4LiwCivguKPguLHguIrguJnguLUKK+C4o+C4seC4jeC4iOC4p+C4mQor4Lij4Lix4LiP4LiQ4Liy4Lig4Li04Lib4Liy4Lil4LmC4LiZ4Lia4Liy4LiiCivguKPguLHguJAKK+C4o+C4seC4lAor4Lij4Lix4LiVCivguKPguLHguJXguITguJkKK+C4o+C4seC4leC4leC4seC4jeC4jeC4uQor4Lij4Lix4LiV4LiV4Li0CivguKPguLHguJXguJnguYwKK+C4o+C4seC4leC4meC4sAor4Lij4Lix4LiV4Lih4LiyCivguKPguLHguJYKK+C4o+C4seC4luC4ouC4sgor4Lij4Lix4LiX4LmA4LiX4Lit4Lij4LmM4Lif4Lit4Lij4LmM4LmA4LiU4Li14Lii4LihCivguKPguLHguJkKK+C4o+C4seC5ieC4mQor4Lij4Lix4LiZ4LiK4LiZ4Lij4Lix4LiZ4LmB4LiK4LiHCivguKPguLHguJnguJfguJQKK+C4o+C4seC4meC4l+C4p+C4ogor4Lij4Lix4LiZ4LiX4LizCivguKPguLHguJnguYHguJfguLAKK+C4o+C4seC4meC4mOC4sAor4Lij4Lix4LiaCivguKPguLHguKHguKDguLIKK+C4o+C4seC4oeC4oeC4teC5iAor4Lij4Lix4Lih4Lii4LmMCivguKPguLHguKIKK+C4o+C4seC4pwor4Lij4Lix4LmI4LinCivguKPguLHguYnguKcKK+C4o+C4seC4qOC4oeC4tOC4oeC4seC4leC4tAor4Lij4Lix4Lio4Lih4Li04Lih4Liy4LiZCivguKPguLHguKjguKHguLUKK+C4o+C4seC4qeC4juC4suC4geC4owor4Lij4Lix4Liq4Liq4LiwCivguKPguLIKK+C4o+C5iOC4sgor4Lij4LmJ4LiyCivguKPguLLguIEKK+C4o+C4suC4geC4qeC4qgor4Lij4Liy4LiB4LmC4Lip4LiqCivguKPguLLguIHguKrguLLguJQKK+C4o+C4suC4hOC4sAor4Lij4Liy4LiE4LiyCivguKPguLLguITguLTguJkKK+C4o+C4suC4hOC4tQor4Lij4Liy4LiHCivguKPguYjguLLguIcKK+C4o+C5ieC4suC4hwor4Lij4Liy4LiH4LiI4Li34LiUCivguKPguLLguIfguIrguLLguIcKK+C4o+C4suC4h+C4lOC4swor4Lij4Liy4LiH4LmB4LiU4LiHCivguKPguLLguIfguJnguLLguJkKK+C4o+C4suC4h+C4p+C4seC4pQor4Lij4Liy4LiKCivguKPguLLguIrguI3guLUKK+C4o+C4suC4iuC4lOC4seC4lAor4Lij4Liy4LiK4Lie4Lik4LiB4Lip4LmMCivguKPguLLguIrguKHguLLguJPguJ4KK+C4o+C4suC4iuC4ouC5jAor4Lij4Liy4LiK4LiwCivguKPguLLguIrguLHguJkKK+C4o+C4suC4iuC4seC4meC4ouC5jAor4Lij4Liy4LiK4Lix4LiiCivguKPguLLguIrguLIKK+C4o+C4suC4iuC4suC4ouC4leC4meC4sAor4Lij4Liy4LiK4Liy4Lin4LiU4Li1CivguKPguLLguIrguLQKK+C4o+C4suC4iuC4tOC4meC4tQor4Lij4Liy4LiK4Li1CivguKPguLLguYDguIrguJkKK+C4o+C4suC5gOC4iuC4meC4l+C4o+C4ouC4suC4mQor4Lij4Liy4LiNCivguKPguLLguI3guKPguK3guJkKK+C4o+C4suC4lAor4Lij4Liy4LiVCivguKPguLLguJXguKMKK+C4o+C4suC4leC4o+C4tQor4Lij4Liy4LiV4Lij4Li14Lib4Lij4Liw4LiU4Lix4Lia4LiU4Liy4LinCivguKPguLLguYLguJcKK+C4o+C4suC4mOC4sgor4Lij4Liy4LiZCivguKPguYjguLLguJkKK+C4o+C5ieC4suC4mQor4Lij4Liy4LiaCivguKPguLLguJ7guJPguYwKK+C4o+C4suC4oQor4Lij4Liy4Lih4LmA4LiB4Li14Lii4Lij4LiV4Li04LmMCivguKPguLLguKHguKrguLnguKMKK+C4o+C4suC4oeC4seC4jQor4Lij4Liy4Lih4LiyCivguKPguLLguKIKK+C4o+C5iOC4suC4ogor4Lij4LmJ4Liy4LiiCivguKPguYjguLLguKLguKPguLHguIcKK+C4o+C4suC4pwor4Lij4LmJ4Liy4LinCivguKPguLLguKfguLUKK+C4o+C4suC4qOC4tQor4Lij4Liy4Lip4LiO4LijCivguKPguLLguKnguI7guKPguYwKK+C4o+C4suC4qeC4leC4o+C4tQor4Lij4Liy4Lip4Lij4Liy4LiV4Lij4Li04LiZCivguKPguLLguKnguKPguLLguJXguKPguLUKK+C4o+C4suC4quC4tQor4Lij4Liy4Lir4Li4CivguKPguYjguLLguKvguLjguYwKK+C4o+C4suC4q+C4uQor4Lij4LizCivguKPguYjguLMKK+C4o+C4s+C4hOC4suC4jQor4Lij4Liz4LiH4Lix4LiaCivguKPguLPguIjguKfguJkKK+C4o+C4s+C4i+C4uOC4ogor4Lij4Liz4Lia4Liy4LiNCivguKPguLPguJ7guLHguJkKK+C4o+C4s+C4nuC4suC4ogor4Lij4Liz4Lie4Li24LiHCivguKPguLPguYDguJ7guKIKK+C4o+C4s+C5hOC4ngor4Lij4Liz4Lih4Liw4LmA4LiCCivguKPguLPguKHguLDguJnguLIKK+C4o+C4s+C4oeC4sOC4meC4suC4lAor4Lij4Liz4Lih4Liw4Lij4LmI4LitCivguKPguLPguKLguKfguJkKK+C4o+C4s+C4ouC5ieC4reC4ogor4Lij4Liz4LmB4Lii4LmJCivguKPguYjguLPguKPguKfguKIKK+C4o+C4s+C4o+C4suC4jQor4Lij4Liz4Lij4LizCivguKPguLPguYDguKMKK+C4o+C4s+C5hOC4owor4Lij4Liz4Lil4Li24LiBCivguKPguLPguKvguLHguJQKK+C4o+C4s+C4q+C4seC4qgor4Lij4Li0CivguKPguLTguIEKK+C4o+C4tOC4geC5hgor4Lij4Li04LiU4Liq4Li14LiU4Lin4LiHCivguKPguLTguJkKK+C4o+C4tOC5ieC4mQor4Lij4Li04LiZ4LmGCivguKPguLTguJoKK+C4o+C4tOC4muC4muC4tOC5ieC4mQor4Lij4Li04Lia4Lij4Li14LmICivguKPguLTguJrguKvguKPguLXguYgKK+C4o+C4tOC4m+C4uAor4Lij4Li04Lib4Li5CivguKPguLTguKEKK+C4o+C4tOC5ieC4pwor4Lij4Li04Lip4Lii4LiyCivguKPguLUKK+C4o+C4teC5iAor4Lij4Li14LmJCivguKPguLXguYbguILguKfguLLguIfguYYKK+C4o+C4teC5huC4o+C4reC5hgor4Lij4Li14LiUCivguKPguLXguJTguLHguIHguIrguLHguJkKK+C4o+C4teC4lQor4Lij4Li14LmA4LiZ4Li14Lii4LihCivguKPguLXguJoKK+C4o+C4teC4oQor4Lij4Li14Lij4LitCivguKPguLXguYnguKPguLTguIEKK+C4o+C4tuC4geC4leC5jAor4Lij4Li24LiHCivguKPguLbguYnguIcKK+C4o+C4t+C5iOC4mQor4Lij4Li34LmJ4LiZCivguKPguLfguYnguK0KK+C4o+C4uAor4Lij4Li44LiBCivguKPguLjguIHguILguYwKK+C4o+C4uOC4geC4guC4geC4sAor4Lij4Li44LiB4LiC4LiyCivguKPguLjguIHguKPguLjguKIKK+C4o+C4uOC4geC4qeC4sAor4Lij4Li44LmI4LiHCivguKPguLjguYnguIcKK+C4o+C4uOC4h+C4o+C4seC4hwor4Lij4Li44LiICivguKPguLjguIjguJkKK+C4o+C4uOC4iOC4sgor4Lij4Li44LiI4Li0CivguKPguLjguIjguLTguKPguLAKK+C4o+C4uOC4iOC4tOC4o+C4sgor4Lij4Li44LiI4Li1CivguKPguLjguIrguLIKK+C4o+C4uOC4lAor4Lij4Li44LiVCivguKPguLjguJfguJjguYwKK+C4o+C4uOC4l+C4owor4Lij4Li44LiY4Li04LijCivguKPguLjguYDguJjguLXguKLguKMKK+C4o+C4uOC4mQor4Lij4Li44LmI4LiZCivguKPguLjguJrguKPguLnguYgKK+C4o+C4uOC4muC4suC4geC4suC4owor4Lij4Li44LihCivguKPguLjguYjguKEKK+C4o+C4uOC5iOC4oeC4o+C5iOC4suC4oQor4Lij4Li44LiiCivguKPguLjguYjguKIKK+C4o+C4uOC4o+C4uAor4Lij4Li44Lip4LiP4LmMCivguKPguLjguKvguLAKK+C4o+C4uOC4q+C4suC4jQor4Lij4Li5CivguKPguLnguYgKK+C4o+C4ueC5iQor4Lij4Li54LiI4Li1CivguKPguLnguJQKK+C4o+C4ueC4l+C4teC5gOC4meC4teC4ouC4oQor4Lij4Li54LmJ4LiZ4Lit4LiZCivguKPguLnguJrguLTguYDguJTguLXguKLguKEKK+C4o+C4ueC4mwor4Lij4Li54Lib4Li04Lii4LiwCivguKPguLnguJvguLUKK+C4o+C4ueC5gOC4peC5h+C4leC4leC5jAor4Lij4Li54Lir4LiyCivguYDguKPguYgKK+C5gOC4o+C4ggor4LmA4Lij4LiC4LiyCivguYDguKPguILguLLguITguJPguLTguJUKK+C5gOC4o+C5h+C4hwor4LmA4Lij4LmI4LiHCivguYDguKPguYnguIcKK+C5gOC4o+C4k+C4uAor4LmA4Lij4LiT4Li44LiBCivguYDguKPguJPguLkKK+C5gOC4o+C4lOC4reC4mQor4LmA4Lij4LiU4Liy4Lij4LmMCivguYDguKPguYDguJTguLXguKLguKEKK+C5gOC4o+C5ieC4mQor4LmA4Lij4Lii4Lit4LiHCivguYDguKPguKPguKfguJkKK+C5gOC4o+C5hOC4owor4LmA4Lij4LmH4LinCivguYDguKPguYjguKcKK+C5gOC4o+C4p+C4lOC4tQor4LmA4Lij4LitCivguYDguKPguYjguK0KK+C5gOC4o+C4sgor4LmA4Lij4LmI4LiyCivguYDguKPguYnguLIKK+C5gOC4o+C5iOC4suC5hgor4LmA4Lij4Liy4LiwCivguYDguKPguLTguIcKK+C5gOC4o+C4tOC4lAor4LmA4Lij4Li04LihCivguYDguKPguLTguYjguKEKK+C5gOC4o+C4tOC5ieC4oQor4LmA4Lij4Li04Lio4Lij4LmJ4Liy4LiHCivguYDguKPguLXguYjguKIKK+C5gOC4o+C4teC5ieC4ouC5hgor4LmA4Lij4Li14Lii4LiBCivguYDguKPguLXguKLguIcKK+C5gOC4o+C4teC4ouC4h+C5hgor4LmA4Lij4Li14Lii4LiUCivguYDguKPguLXguKLguJkKK+C5gOC4o+C4teC4ouC4mgor4LmA4Lij4Li14Lii4LihCivguYDguKPguLXguYjguKLguKEKK+C5gOC4o+C4teC4ouC4pwor4LmA4Lij4Li14LmI4Lii4LinCivguYDguKPguLXguYnguKLguKfguKPguIEKK+C5gOC4o+C4t+C4rQor4LmA4Lij4Li34LmI4LitCivguYDguKPguLfguYnguK0KK+C5gOC4o+C4t+C4reC4gQor4LmA4Lij4Li34Lit4LiB4Liq4Lin4LiZCivguYDguKPguLfguK3guIcKK+C5gOC4o+C4t+C5iOC4reC4hwor4LmA4Lij4Li34LmJ4Lit4LiHCivguYDguKPguLfguK3guIfguKPguK3guIcKK+C5gOC4o+C4t+C4reC4lAor4LmA4Lij4Li34Lit4LiZCivguYDguKPguLfguYnguK3guJkKK+C5gOC4o+C4t+C5ieC4reC4ogor4LmB4LijCivguYHguKPguYgKK+C5geC4o+C4gQor4LmB4Lij4LmH4LiB4LmA4LiB4LiVCivguYHguKPguIcKK+C5geC4o+C5iOC4hwor4LmB4Lij4LmJ4LiHCivguYHguKPguYjguIfguKPguLTguYnguKcKK+C5geC4o+C5iOC4h+C5hOC4q+C4oQor4LmB4Lij4LiUCivguYHguKPguYnguJnguYHguITguYnguJkKK+C5geC4o+C4oQor4LmB4Lij4LmJ4LinCivguYHguKPguLAKK+C5guC4owor4LmC4Lij4LmICivguYLguKPguIQKK+C5guC4o+C4hwor4LmC4Lij4LiICivguYLguKPguIjguJnguYwKK+C5guC4o+C5gOC4lOC4teC4ouC4oQor4LmC4Lij4LiV4Li1CivguYLguKPguJcKK+C5guC4o+C4l+C4meC4sAor4LmC4Lij4LiYCivguYLguKPguJjguKMKK+C5guC4o+C5gOC4meC4teC4ouC4pwor4LmC4Lij4Lib4LiZ4LiwCivguYLguKPguKEKK+C5guC4o+C4oeC4seC4jeC4iAor4LmC4Lij4Lih4Lix4LiZCivguYLguKPguKHguLHguJnguITguLLguJfguK3guKXguLTguIEKK+C5guC4o+C5gOC4oeC4reC4o+C5jAor4LmC4Lij4LiiCivguYLguKPguYDguKMKK+C5guC4o+C4qQor4LmC4Lij4Lip4LiT4LiwCivguYLguKPguKvguLTguJPguLUKK+C5guC4o+C4q+C4tOC4lQor4LmE4LijCivguYTguKPguYgKK+C5hOC4o+C5iQor4LmE4Lij4Lif4Lix4LiZCivguYTguKPguKLguYwKK+C4pAor4Lik4LiB4Lip4LmMCivguKTguIHguKnguJPguLAKK+C4pOC4hOC5gOC4p+C4lwor4Lik4LiK4LiyCivguKTguIrguLgKK+C4pOC4kwor4Lik4LiU4Li1CivguKTguJTguLXguKLguLIKK+C4pOC4lOC4uQor4Lik4LiVCivguKTguJXguLTguKLguLIKK+C4pOC4leC4uAor4Lik4LiV4Li44Liq4LiZ4Liy4LiZCivguKTguJfguJjguLIKK+C4pOC4l+C4mOC4tOC5jAor4Lik4LiX4Lix4LiiCivguKTguKnguKAKK+C4pOC4qeC4ouC4sgor4Lik4Lip4Li1CivguKTguYUKK+C4pOC5heC4iuC4uAor4Lik4LmF4LiU4Li1CivguKTguYXguJfguLHguKIKK+C4pOC5heC4qeC4tQor4Lik4LmF4Liq4Liy4LiiCivguKUKK+C4peC4gQor4Lil4LiB4Liy4LijCivguKXguIHguLjguIgKK+C4peC4hOC4uOC4kQor4Lil4LiE4Li44LisCivguKXguIbguLgKK+C4peC4hwor4Lil4LmI4LiHCivguKXguIfguIHguLIKK+C4peC5ieC4h+C5gOC4peC5ieC4hwor4Lil4LiUCivguKXguJTguLIKK+C4peC4mQor4Lil4LmI4LiZCivguKXguYnguJkKK+C4peC4mgor4Lil4Lia4LihCivguKXguJrguK3guIcKK+C4peC4m+C4gQor4Lil4Lib4LiZCivguKXguJ4KK+C4peC4nuC4uOC4igor4Lil4LihCivguKXguYjguKEKK+C4peC5ieC4oQor4Lil4Lih4Liy4LiUCivguKXguKPguKPguKXguLjguIcKK+C4peC4peC4meC4sgor4Lil4Lil4Liy4LiPCivguKXguKXguLTguJUKK+C4peC4p+C4gQor4Lil4Lin4LiHCivguKXguYjguKfguIcKK+C4peC5ieC4p+C4hwor4Lil4Lin4LiH4LiE4LmMCivguKXguKfguIfguYDguKXguYnguLIKK+C4peC4p+C4k+C4sAor4Lil4Lin4LiUCivguKXguYnguKfguJkKK+C4peC4p+C4meC4peC4suC4oQor4Lil4Lin4LiZ4LiwCivguKXguYjguKfguKEKK+C4peC4p+C4sAor4Lil4Lin4Li04LiV4LijCivguKXguKvguLgKK+C4peC4q+C4uOC4geC4sAor4Lil4LmI4LitCivguKXguYnguK0KK+C4peC4reC4gQor4Lil4LmH4Lit4LiB4LmA4LiB4LiVCivguKXguK3guIHguYHguKXguIEKK+C4peC4reC4geC4suC4o+C4tOC4l+C4tuC4oQor4Lil4Lit4LiHCivguKXguYjguK3guIcKK+C4peC4reC4h+C4geC4reC4hwor4Lil4Lit4LiH4LiI4Li04LiI4Li54LiUCivguKXguK3guIfguYTguJkKK+C4peC4reC4lAor4Lil4Lit4LiV4LmA4LiV4Lit4Lij4Li14LmICivguKXguK3guJkKK+C4peC5iOC4reC4mQor4Lil4Lit4LiaCivguKXguK3guKEKK+C4peC5ieC4reC4oQor4Lil4Lit4Lih4LiK4Lit4LihCivguKXguYnguK3guKHguJvguKPguKfguJQKK+C4peC4reC4oeC4nuC4reC4gQor4Lil4Lit4LiiCivguKXguYjguK3guKIKK+C4peC5iOC4reC5geC4peC5iAor4Lil4Lit4Lin4LmM4LmA4Lij4LiZ4LmA4LiL4Li14Lii4LihCivguKXguK3guK0KK+C4peC4sAor4Lil4LmI4LiwCivguKXguLDguIHguKUKK+C4peC4sOC4geC4ueC4oeC4sOC4meC4tOC4qgor4Lil4Liw4LiC4Lix4LiU4Lil4Liw4LiC4Li34LiZCivguKXguLDguITguKMKK+C4peC4sOC4hOC4tAor4Lil4Liw4LiE4Li24LiBCivguKXguLDguIfguLLguJQKK+C4peC4sOC4h+C4tOC4lAor4Lil4Liw4LiV4Li04LiI4Li54LiUCivguKXguLDguJrguKHguKXguLDguJrguK3guIcKK+C4peC4sOC4muC4seC4lAor4Lil4Liw4Lia4Li34LitCivguKXguLDguYDguJrguYfguIcKK+C4peC4sOC5guC4muC4oQor4Lil4Liw4Lih4LmI4Lit4LihCivguKXguLDguKHguLHguYjguIcKK+C4peC4sOC4oeC4sgor4Lil4Liw4Lih4Liy4LiZCivguKXguLDguKHguYnguLLguKIKK+C4peC4sOC4oeC4uAor4Lil4Liw4Lih4Li44LiUCivguKXguLDguKHguLjguJkKK+C4peC4sOC5gOC4oeC5h+C4h+C4peC4sOC4hOC4owor4Lil4Liw4LmA4Lih4LmH4LiUCivguKXguLDguYDguKHguK0KK+C4peC4sOC5gOC4oeC4suC4sAor4Lil4Liw4LmA4Lih4Li04LiUCivguKXguLDguYDguKHguLXguKLguJQKK+C4peC4sOC5gOC4oeC4teC4ouC4mgor4Lil4Liw4LmB4Lih4LiwCivguKXguLDguYLguKHguIEKK+C4peC4sOC5guC4oeC4mgor4Lil4Liw4LmE4LihCivguKXguLDguKPguLUKK+C4peC4sOC4peC4meC4peC4sOC4peC4suC4mQor4Lil4Liw4Lil4Lih4Lil4Liw4Lil4Liy4LiiCivguKXguLDguKXguKfguKIKK+C4peC4sOC4peC4reC4gQor4Lil4Liw4Lil4Lit4Lia4Lil4Liw4LmA4Lil4LmJ4LiyCivguKXguLDguKXguLHguIcKK+C4peC4sOC4peC4seC4lAor4Lil4Liw4Lil4LmJ4LiyCivguKXguLDguKXguLLguJkKK+C4peC4sOC4peC4suC4muC4peC4sOC4peC5ieC4p+C4hwor4Lil4Liw4Lil4Liy4LiiCivguKXguLDguKXguYnguLLguKcKK+C4peC4sOC4peC5iOC4s+C4peC4sOC4peC4seC4gQor4Lil4Liw4Lil4Li04LiaCivguKXguLDguKXguLjguIcKK+C4peC4sOC4peC4uOC4oQor4Lil4Liw4LmA4Lil4LiHCivguKXguLDguYDguKXguYnguLIKK+C4peC4sOC5gOC4peC4suC4sAor4Lil4Liw4LmA4Lil4Liy4Liw4Lil4Liw4Lil4Lit4LiHCivguKXguLDguYDguKXguLTguIcKK+C4peC4sOC5gOC4peC4teC4ouC4lAor4Lil4Liw4LmA4Lil4Li14Lii4LiaCivguKXguLDguYDguKXguLfguK3guIEKK+C4peC4sOC5hOC4peC5iQor4Lil4Liw4Lin4LilCivguKXguLDguKfguYnguK0KK+C4peC4sOC4p+C5ieC4sgor4Lil4Liw4Lin4Liy4LiUCivguKXguLDguYDguKfguIcKK+C4peC4sOC5geC4p+C4gQor4Lil4Liw4LmC4Lin4LmJCivguKXguLDguKvguKHguLLguJQKK+C4peC4sOC4q+C4oeC4suC4lOC4jeC4suC4meC4suC4i+C4sOC4ruC5jAor4Lil4Liw4Lir4Lil4Lix4LiUCivguKXguLDguKvguYnguK3guKIKK+C4peC4sOC4q+C4suC4mQor4Lil4Liw4Lir4Li44LmI4LiHCivguKXguLDguYDguKvguKIKK+C4peC4sOC5gOC4q+C4teC5iOC4ogor4Lil4Liw4Lit4Lit4LiHCivguKXguLDguK3guK3guIfguKHguLHguYjguIcKK+C4peC4sOC4reC4suC4ogor4Lil4Liw4LmA4Lit4Li14Lii4LiUCivguKXguLDguYHguK3guJkKK+C4peC4seC4gQor4Lil4Lix4LiB4LiC4LiT4LiwCivguKXguLHguIHguILguJPguLIKK+C4peC4seC4geC4guC4sAor4Lil4Lix4LiB4LiI4Lix4LmI4LiZCivguKXguLHguIHguJvguLTguJTguKXguLHguIHguYDguJvguLTguJQKK+C4peC4seC4geC4qeC4k+C4sAor4Lil4Lix4LiB4Lip4Lih4LiT4LmMCivguKXguLHguIHguKnguKHguLLguJPguLIKK+C4peC4seC4geC4qeC4oeC4tQor4Lil4Lix4LiB4Lip4LiwCivguKXguLHguITguITguLAKK+C4peC4seC4hOC4meC5jAor4Lil4Lix4LiE4LiZ4LiyCivguKXguLHguIcKK+C4peC4seC5iOC4hwor4Lil4Lix4LiH4LiB4LiyCivguKXguLHguIfguITguLQKK+C4peC4seC4h+C4hOC4tQor4Lil4Lix4LiH4LiW4Li24LiHCivguKXguLHguIfguKXguK3guIcKK+C4peC4seC4h+C5gOC4pQor4Lil4Lix4LiH4Liq4Liy4LiUCivguKXguLHguIrguIrguLIKK+C4peC4seC4iuC4iuC4tQor4Lil4Lix4LiN4LiI4LmMCivguKXguLHguI3guIjguIHguKMKK+C4peC4seC4jeC4iQor4Lil4Lix4LiN4LiJ4LiB4LijCivguKXguLHguI3guInguJnguYwKK+C4peC4seC4kOC4tAor4Lil4Lix4LiQ4Li04LiB4LiyCivguKXguLHguJQKK+C4peC4seC4lOC4sgor4Lil4Lix4LiX4LiY4LmMCivguKXguLHguJfguJjguLQKK+C4peC4seC4mQor4Lil4Lix4LmI4LiZCivguKXguLHguJnguYDguJUKK+C4peC4seC4meC5gOC4leC4sgor4Lil4Lix4LiZ4LmE4LiVCivguKXguLHguYjguJnguJbguLHguJkKK+C4peC4seC5iOC4meC4l+C4oQor4Lil4Lix4LiZ4LiX4Lin4LiiCivguKXguLHguJnguYLguJfguKEKK+C4peC4seC4mgor4Lil4Lix4Lie4LiY4LmMCivguKXguLHguJ7guJjguLQKK+C4peC4seC4oAor4Lil4Lix4Lig4LiZ4LiwCivguKXguLHguKDguKLguYwKK+C4peC4seC4oeC4nuC5jAor4Lil4Lix4LiiCivguKXguLHguKfguLAKK+C4peC4sgor4Lil4LmI4LiyCivguKXguYnguLIKK+C4peC4suC4gQor4Lil4Liy4LiB4Lip4LiyCivguKXguLLguILguLIKK+C4peC4suC4hwor4Lil4LmI4Liy4LiHCivguKXguYnguLLguIcKK+C4peC4suC4h+C4hOC4seC4pQor4Lil4Liy4LiH4LiH4Li04LiUCivguKXguLLguIfguKXguLTguIcKK+C4peC4suC4h+C4quC4suC4lAor4Lil4Liy4LiH4Liy4LiUCivguKXguYnguLLguIfguLLguJQKK+C4peC4suC5gOC4h+C5h+C4lAor4Lil4Liy4LiKCivguKXguLLguIrguLIKK+C4peC4suC4jQor4Lil4Liy4LiUCivguKXguLLguJTguYDguKXguLIKK+C4peC5ieC4suC4leC5ieC4sgor4Lil4LmI4Liy4LmA4LiV4Li14Lii4LiHCivguKXguYnguLLguYDguJXguLXguKLguIcKK+C4peC4suC4mQor4Lil4LmI4Liy4LiZCivguKXguLLguJoKK+C4peC4suC4mwor4Lil4Liy4Lie4Lit4LiZCivguKXguLLguJ7guLgKK+C4peC4suC5gOC4ngor4Lil4Liy4LmA4Lie4LiyCivguKXguLLguKAKK+C4peC4suC4oQor4Lil4LmI4Liy4LihCivguKXguLLguKHguLAKK+C4peC4suC4ogor4Lil4LmJ4Liy4LiiCivguKXguLLguKXguJnguLAKK+C4peC4suC4peC4qgor4Lil4Liy4Lil4LiyCivguKXguLLguKcKK+C4peC4suC4p+C4gQor4Lil4Liy4Lin4Lix4LiT4Lii4LmMCivguKXguLLguKfguLIKK+C4peC4suC4quC4meC4sAor4Lil4LizCivguKXguYjguLMKK+C4peC5ieC4swor4Lil4Liz4LmA4LiC4LmH4LiNCivguKXguLPguYHguIIKK+C4peC4s+C5gOC4hOC5h+C4jQor4Lil4Liz4LmA4LiE4Li34Lit4LiHCivguKXguLPguIfguLLguJQKK+C4peC4s+C5gOC4iOC4teC4ouC4gQor4Lil4Liz4LiU4Lin4LiZCivguKXguLPguJTguLHguJoKK+C4peC4s+C4meC4seC4gQor4Lil4Liz4LmA4LiZ4LiyCivguKXguLPguJrguK3guIcKK+C4peC4s+C4muC4suC4gQor4Lil4Liz4Lia4Li4CivguKXguLPguJvguLMKK+C4peC4s+C4nuC4p+C4mQor4Lil4Liz4Lie4Lit4LiHCivguKXguLPguJ7guLHguIcKK+C4peC4s+C4nuC4uQor4Lil4Liz4LmA4Lie4LmH4LiNCivguKXguLPguYDguJ7guLIKK+C4peC4s+C5geC4nuC4hwor4Lil4Liz4LmB4Lie4LiZCivguKXguLPguYLguJ7guIcKK+C4peC4s+C5hOC4nuC5iAor4Lil4Liz4Lig4Li44LiC4Lix4LiZCivguKXguLPguKHguLDguKXguK3guIEKK+C4peC4s+C4oeC4suC4lAor4Lil4Liz4LmA4Lih4Liy4LiwCivguKXguLPguYDguKHguLXguKLguJoKK+C4peC4s+C4ouC4reC4hwor4Lil4Liz4Lii4LiyCivguKXguLPguYTguKIKK+C4peC4s+C4peC4reC4hwor4Lil4LmI4Liz4Lil4LiyCivguKXguLPguKXguLLguJoKK+C4peC4s+C4peC4swor4Lil4Liz4Lil4Li24LiBCivguKXguLPguYDguKXguLLguLAKK+C4peC4s+C5gOC4peC4tOC4gQor4Lil4Liz4LmA4Lil4Li14Lii4LiHCivguKXguLPguYDguKXguLXguKLguJoKK+C4peC4s+C5gOC4p+C4teC4ouC4hwor4Lil4Liz4LmA4Lin4Li14Lii4LiZCivguKXguLPguK3guLjguJQKK+C4peC4s+C5gOC4reC4teC4ouC4gQor4Lil4Liz4LmC4Lit4LiHCivguKXguLQKK+C4peC4tOC4geC4guC4sgor4Lil4Li04LiB4LmE4LiZ4LiV4LmMCivguKXguLTguIHguKnguLIKK+C4peC4tOC4geC4uOC4iAor4Lil4Li04LmA4LiBCivguKXguLTguILguJnguLAKK+C4peC4tOC4guC4quC4tOC4l+C4mOC5jAor4Lil4Li04LiC4Li04LiVCivguKXguLTguIcKK+C4peC4tOC4h+C4hOC5jAor4Lil4Li04LiH4LmC4Lil4LiUCivguKXguLTguJQKK+C4peC4tOC4lQor4Lil4Li04LiV4Lih4Lix4LiqCivguKXguLTguJXguKMKK+C4peC4tOC5gOC4l+C4teC4ouC4oQor4Lil4Li04LmI4LiZCivguKXguLTguYnguJkKK+C4peC4tOC4meC5guC4geC4o+C4ogor4Lil4Li04LiZ4LiI4LiHCivguKXguLTguYnguJnguIjguLXguYgKK+C4peC4tOC5iOC4meC4leC5ieC4mQor4Lil4Li04LmI4LiZ4LiX4Liw4LmA4LilCivguKXguLTguYjguJnguK7guLfguYnguK0KK+C4peC4tOC4meC4tOC4mQor4Lil4Li04LiaCivguKXguLTguJvguJTguLIKK+C4peC4tOC4m+C4leC5jAor4Lil4Li04Lib4Liq4LiV4Li04LiBCivguKXguLTguJvguLQKK+C4peC4tOC4n+C4leC5jAor4Lil4Li04LmA4Lig4LiyCivguKXguLTguYjguKEKK+C4peC4tOC5ieC4oQor4Lil4Li04Lih4Lib4LmMCivguKXguLTguKHguJvguJnguLAKK+C4peC4tOC4peC4tOC4lQor4Lil4Li04LinCivguKXguLTguYjguKcKK+C4peC4tOC4quC4hwor4Lil4Li1CivguKXguLXguYgKK+C4peC4teC5iQor4Lil4Li14LiL4LitCivguKXguLXguJoKK+C4peC4teC4peC4sgor4Lil4Li14Lil4Liy4LioCivguKXguLXguKzguKvguLIKK+C4peC4tuC4gQor4Lil4Li24LiH4LiE4LmMCivguKXguLbguIfguITguYzguJnguLLguKLguJ7guKPguLLguJkKK+C4peC4t+C4lAor4Lil4Li34LmI4LiZCivguKXguLfguYnguJkKK+C4peC4t+C4mgor4Lil4Li34LihCivguKXguLfguK0KK+C4peC4t+C5iOC4rQor4Lil4Li34LmJ4LitCivguKXguLgKK+C4peC4uOC4gQor4Lil4Li44LiB4Lil4LiZCivguKXguLjguIHguKXguLXguYnguKXguLjguIHguKXguJkKK+C4peC4uOC4hwor4Lil4Li44LmJ4LiHCivguKXguLjguJUKK+C4peC4uOC4lwor4Lil4Li44LiX4LiB4LiwCivguKXguLjguJfguJjguYwKK+C4peC4uOC5iOC4mQor4Lil4Li44Lib4LiV4LmMCivguKXguLjguJ7guJjguYwKK+C4peC4uOC4nuC4mOC4geC4sAor4Lil4Li44LmI4LihCivguKXguLjguYjguKHguYDguJnguLfguYnguK0KK+C4peC4uOC4oeC4m+C5jAor4Lil4Li44Lih4Lie4Li1CivguKXguLjguKHguJ7guLkKK+C4peC4uOC4oeC4q+C4oeC4sgor4Lil4Li44LiiCivguKXguLjguYjguKIKK+C4peC4uOC5ieC4ogor4Lil4Li44Lil4Liy4LiiCivguKXguLjguKrguLIKK+C4peC4ueC5iAor4Lil4Li54LiBCivguKXguLnguIHguYDguILguKLguJXguLLguKLguYHguKHguYjguKLguLLguKLguIrguLHguIHguJvguKPguIEKK+C4peC4ueC4geC5gOC4hOC4peC5ieC4sgor4Lil4Li54LiB4Lib4Lij4Liw4LiE4Liz4Lic4Li1CivguKXguLnguIHguJvguLfguJnguYPguKvguI3guYgKK+C4peC4ueC4geC5gOC4reC5h+C4mQor4Lil4Li54LiB4LmA4Lit4LmH4LilCivguKXguLnguILguLAKK+C4peC4ueC4leC4sgor4Lil4Li54LiV4Li04LiB4LiyCivguKXguLnguJfguLXguYDguIrguLXguKLguKEKK+C4peC4ueC4meC4sAor4Lil4Li54LiaCivguKXguLnguYjguKvguKXguLXguYgKK+C5gOC4peC4gQor4LmA4Lil4LmH4LiBCivguYDguKXguYfguIHguJTguLIKK+C5gOC4peC5h+C4geC4ruC4reC4o+C5jOC4mQor4LmA4Lil4LiCCivguYDguKXguILguIHguLAKK+C5gOC4peC4guC4meC4sAor4LmA4Lil4LiC4Lii4LiwCivguYDguKXguILguLIKK+C5gOC4peC5h+C4hwor4LmA4Lil4LmJ4LiHCivguYDguKXguYjguIfguK7guLfguYnguK0KK+C5gOC4peC5gOC4i+C4reC4o+C5jAor4LmA4Lil4LiR4LiR4Li4CivguYDguKXguJMKK+C5gOC4peC4k+C4keC4uAor4LmA4Lil4LmH4LiUCivguYDguKXguJUKK+C5gOC4peC4mQor4LmA4Lil4LmH4LiZCivguYDguKXguYjguJkKK+C5gOC4peC4meC4iOC4hwor4LmA4Lil4LiZ4Liq4LmMCivguYDguKXguJnguKvguLDguKPguLUKK+C5gOC4peC5h+C4mgor4LmA4Lil4Lia4LiHCivguYDguKXguJvguIHguKMKK+C5gOC4peC4m+C4meC5jAor4LmA4Lil4LmA4LibCivguYDguKXguYDguJ4KK+C5gOC4peC5h+C4oQor4LmA4Lil4LmI4LihCivguYDguKXguKIKK+C5gOC4peC4pwor4LmA4Lil4Lin4LiHCivguYDguKXguKfguLnguYLguKXguKoKK+C5gOC4peC4qAor4LmA4Lil4Lip4LiP4Li4CivguYDguKXguKrguYDguJrguLXguKLguJkKK+C5gOC4peC4qwor4LmA4Lil4LmI4Lir4LmMCivguYDguKXguKvguKLguLAKK+C5gOC4peC4q+C4peC4seC4hwor4LmA4Lil4Lir4Lil4LiyCivguYDguKXguKvguLAKK+C5gOC4peC4rQor4LmA4Lil4LiwCivguYDguKXguLIKK+C5gOC4peC5iOC4sgor4LmA4Lil4LmJ4LiyCivguYDguKXguLLguIHguLHguKIKK+C5gOC4peC5iOC4suC5gOC4leC5iuC4hwor4LmA4Lil4LmJ4Liy4LmC4Lil4LihCivguYDguKXguLLguLAKK+C5gOC4peC4tOC4gQor4LmA4Lil4Li04LmJ4LiHCivguYDguKXguLTguJnguYDguKXguYjguK0KK+C5gOC4peC4tOC4qAor4LmA4Lil4Li14LiiCivguYDguKXguLXguKLguIcKK+C5gOC4peC4teC5iOC4ouC4hwor4LmA4Lil4Li14LmJ4Lii4LiHCivguYDguKXguLXguKLguIfguILguLLguKcKK+C5gOC4peC4teC4ouC4h+C4nOC4sgor4LmA4Lil4Li14Lii4LiH4Lid4LmJ4Liy4LiiCivguYDguKXguLXguKLguIfguKHguLHguJkKK+C5gOC4peC4teC4ouC4mQor4LmA4Lil4Li14LmI4Lii4LiZCivguYDguKXguLXguKLguJnguYTguJ8KK+C5gOC4peC4teC4ouC4mgor4LmA4Lil4Li14Lii4LihCivguYDguKXguLXguYjguKLguKEKK+C5gOC4peC4teC4ouC4pwor4LmA4Lil4Li14LmJ4Lii4LinCivguYDguKXguLfguK3guIEKK+C5gOC4peC4t+C4reC4hwor4LmA4Lil4Li34LmI4Lit4LiHCivguYDguKXguLfguK3guJQKK+C5gOC4peC4t+C4reC4mQor4LmA4Lil4Li34LmI4Lit4LiZCivguYDguKXguLfguYjguK3guKEKK+C5gOC4peC4t+C5iOC4reC4oeC5g+C4qgor4LmA4Lil4Li34LmI4Lit4LiiCivguYDguKXguLfguYnguK3guKIKK+C5gOC4peC4t+C5iOC4reC4ouC4peC5ieC4sgor4LmB4LilCivguYHguKXguYgKK+C5geC4peC5iQor4LmB4Lil4LiBCivguYHguKXguYfguIHguYLguJfguKoKK+C5geC4peC4hwor4LmB4Lil4LmI4LiHCivguYHguKXguYnguIcKK+C5geC4peC4mQor4LmB4Lil4LmI4LiZCivguYHguKXguJnguJfguLLguJnguLHguKEKK+C5geC4peC4mgor4LmB4Lil4LmJ4LinCivguYHguKXguLAKK+C5guC4peC5iAor4LmC4Lil4LmJCivguYLguKXguIEKK+C5guC4peC4geC4hOC4leC4tAor4LmC4Lil4LiB4LiI4Lix4LiB4Lip4Li4CivguYLguKXguIHguIrguJnguJnguLUKK+C5guC4peC4geC5gOC4iuC4qeC4kOC5jAor4LmC4Lil4LiB4LiY4Lij4Lij4LihCivguYLguKXguIHguJjguLLguJTguLIKK+C5guC4peC4geC4mOC4suC4leC4uAor4LmC4Lil4LiB4LiZ4Liy4LiWCivguYLguKXguIHguJrguJYKK+C5guC4peC4geC4muC4suC4pQor4LmC4Lil4LiB4Lia4Li04LiU4LijCivguYLguKXguIHguJvguKPguLDguJfguLXguJsKK+C5guC4peC4geC4oeC4suC4o+C4lOC4sgor4LmC4Lil4LiB4Lii4LmMCivguYLguKXguIHguKLguLLguJXguKPguLIKK+C5guC4peC4geC4p+C4seC4iuC4iuC4sAor4LmC4Lil4LiB4Lin4Li04LiX4Li5CivguYLguKXguIHguKjguLHguJ7guJfguYwKK+C5guC4peC4geC4quC4luC4tOC4leC4tAor4LmC4Lil4LiB4Lit4Li44LiU4LijCivguYLguKXguIHguLHguJXguJbguIjguKPguLTguKLguLIKK+C5guC4peC4geC4seC4meC4leC4o+C5jAor4LmC4Lil4LiB4LiyCivguYLguKXguIHguLTguKLguLAKK+C5guC4peC4geC4teC4ouC5jAor4LmC4Lil4LiB4Li14Lii4LiK4LiZCivguYLguKXguIHguLXguKLguKfguLHguJXguKMKK+C5guC4peC4geC4uOC4leC4owor4LmC4Lil4LiB4Li44LiV4Lij4LiY4Lij4Lij4LihCivguYLguKXguIHguLjguJXguKPguKDguLnguKHguLQKK+C5guC4peC5gOC4geC4qAor4LmC4Lil4LiHCivguYLguKXguYjguIcKK+C5guC4peC5ieC4hwor4LmC4Lil4LmJ4LiH4LmC4LiV4LmJ4LiHCivguYLguKXguIjguJnguLAKK+C5guC4peC4k+C4sAor4LmC4Lil4LiUCivguYLguKXguJTguJfguLDguJnguIcKK+C5guC4peC5iOC4leC4tOC5iuC4mQor4LmC4Lil4LmC4LiVCivguYLguKXguJcKK+C5guC4peC4mQor4LmC4Lil4LmJ4LiZCivguYLguKXguJvguLAKK+C5guC4peC4oAor4LmC4Lil4LihCivguYLguKXguKHguLAKK+C5guC4peC4oeC4sgor4LmC4Lil4LilCivguYLguKXguKXguLjguJsKK+C5guC4peC5gOC4pQor4LmC4Lil4LmJ4LmA4Lil4LmJCivguYLguKXguYLguKUKK+C5guC4peC5guC4peC5iQor4LmC4Lil4Lir4LiwCivguYLguKXguKvguLHguIoKK+C5guC4peC4q+C4tOC4lQor4LmC4Lil4LiwCivguYTguKXguYgKK+C5hOC4peC5iQor4LmE4Lil4LiiCivguYTguKXguKXguLIKK+C5hOC4peC5gOC4peC4ogor4LmE4Lil4LmE4Lil4LmJCivguKcKK+C4p+C4gQor4Lin4LiB4LiwCivguKfguIHguLjguKUKK+C4p+C4hwor4Lin4LiH4LiB4LmMCivguKfguIfguIHguJUKK+C4p+C4h+C4qOC5jAor4Lin4LiH4Lio4LiyCivguKfguIfguKnguYwKK+C4p+C4iOC4meC4sAor4Lin4LiI4LiwCivguKfguIjguLIKK+C4p+C4iOC4tQor4Lin4LiK4LiwCivguKfguIrguLTguKPguLAKK+C4p+C4j+C4sAor4Lin4LiP4Liy4LiB4Liy4LijCivguKfguI/guLjguKHguLAKK+C4p+C4k+C4sAor4Lin4LiT4Li04LiKCivguKfguJPguLTguIrguIrguLIKK+C4p+C4k+C4tOC4iuC4ouC5jAor4Lin4LiT4Li04LiK4Lii4LiyCivguKfguJPguLTguJ7guIEKK+C4p+C4lOC4o+C4meC4uQor4Lin4LiU4Li1CivguKfguJXguLAKK+C4p+C4l+C4meC4sAor4Lin4LiX4LiwCivguKfguJfguLHguI3guI3guLjguJXguLIKK+C4p+C4l+C4seC4jeC4jeC4uQor4Lin4LiY4Li44LiB4LiyCivguKfguJjguLkKK+C4p+C4mQor4Lin4LiZ4LiI4LijCivguKfguJnguLHguJvguJXguLQKK+C4p+C4meC4seC4qgor4Lin4LiZ4LiyCivguKfguJnguLLguJnguJXguYwKK+C4p+C4meC4tOC4lOC4sgor4Lin4LiZ4Li04Lie4LiBCivguKfguYDguJnguIjguKMKK+C4p+C5guC4meC4l+C4ouC4suC4mQor4Lin4Lib4LiZ4LiwCivguKfguJvguLgKK+C4p+C4ouC4seC4hOC4huC5jAor4Lin4Lii4Lix4LiN4LiK4LiZ4LiwCivguKfguKLguLHguKHguKvguLAKK+C4p+C4ouC4seC4quC4ouC5jAor4Lin4Lii4Liy4LiB4Lij4LiT4LmMCivguKfguKLguLLguIbguKPguYwKK+C4p+C4ouC4suC4mOC4tAor4Lin4Lii4Liy4LihCivguKfguKLguLLguKLguLLguKEKK+C4p+C4o+C4geC4seC4jeC4jeC4sgor4Lin4Lij4LiB4Liy4LiiCivguKfguKPguIfguITguYwKK+C4p+C4o+C4k+C4sAor4Lin4Lij4LiXCivguKfguKPguJfguLLguJkKK+C4p+C4o+C4meC4suC4o+C4tQor4Lin4Lij4Lib4Lix4LiB4Lip4LmMCivguKfguKPguJ7guJnguLTguJUKK+C4p+C4o+C4oeC4q+C4suC4p+C4tOC4q+C4suC4owor4Lin4Lij4Lii4Li04LiV4LiyCivguKfguKPguKPguIQKK+C4p+C4o+C4o+C4hOC4ouC5jAor4Lin4Lij4Lij4LiKCivguKfguKPguKPguIrguKLguYwKK+C4p+C4o+C4o+C4k+C4meC4sgor4Lin4Lij4Lij4LiT4Lie4Lik4LiV4Li0CivguKfguKPguKPguJPguLAKK+C4p+C4o+C4o+C4k+C4tuC4gQor4Lin4Lij4Lij4LiY4LiBCivguKfguKPguKPguJjguJnguLAKK+C4p+C4o+C4o+C4qQor4Lin4Lij4Lij4Lip4LiyCivguKfguKPguKPguLnguJsKK+C4p+C4o+C4p+C4o+C4o+C4k+C4tOC4meC4tQor4Lin4Lij4Lin4Li04Lir4Liy4LijCivguKfguKPguLHguI3guI3guLkKK+C4p+C4o+C4suC4geC4sAor4Lin4Lij4Liy4LiH4LiE4LiT4LiyCivguKfguKPguLLguKDguKPguJPguYwKK+C4p+C4o+C4suC4ouC4uOC4l+C4mAor4Lin4Lij4Liy4LmC4Lij4Lir4Liy4LijCivguKfguKPguLLguKvguYwKK+C4p+C4o+C4suC4q+C4owor4Lin4Lij4Liy4Lir4LiwCivguKfguKPguLjguJMKK+C4p+C4o+C4uOC4leC4lOC4oQor4Lin4Lij4Li44LiV4Lih4LiwCivguKfguKPguLnguJYKK+C4p+C5guC4o+C4lOC4oQor4Lin4LmC4Lij4LiV4Lih4LiwCivguKfguKTguIEKK+C4p+C4pOC4qeC4oAor4Lin4Lik4Lip4LilCivguKfguKXguLHguIoKK+C4p+C4peC4seC4jeC4iuC5jAor4Lin4Lil4Lix4LiT4LiK4LiZ4LmMCivguKfguKXguLHguKIKK+C4p+C4peC4suC4q+C4gQor4Lin4Lil4Li1CivguKfguKjguIQKK+C4p+C4qOC4sAor4Lin4Lio4Li04LiZCivguKfguKrguJnguLAKK+C4p+C4quC4oOC4sAor4Lin4Liq4Lil4LiwCivguKfguKrguKXguLUKK+C4p+C4quC4p+C4seC4lOC4lOC4tQor4Lin4Liq4Lin4Lix4LiV4LiV4Li1CivguKfguKrguLAKK+C4p+C4quC4seC4meC4leC5jAor4Lin4Liq4Lix4LiZ4LiV4LiU4Li04Lil4LiBCivguKfguKrguLIKK+C4p+C4quC4tQor4Lin4Liq4Li4CivguKfguKrguLjguJjguLIKK+C4p+C4quC4uOC4meC4mOC4o+C4sgor4Lin4Liq4Li44Lih4LiU4Li1CivguKfguKvguLAKK+C4p+C4q+C4sgor4Lin4LitCivguKfguK3guIEKK+C4p+C4reC4geC5geC4p+C4gQor4Lin4LmI4Lit4LiHCivguKfguYjguK3guIfguYTguKcKK+C4p+C4reC4lAor4Lin4Lit4LiZCivguKfguYjguK3guJkKK+C4p+C4reC4peC5gOC4peC4ouC5jOC4muC4reC4pQor4Lin4Lit4LmB4LinCivguKfguLAKK+C4p+C4seC4gQor4Lin4Lix4LiB4LiB4LiwCivguKfguLHguIQKK+C4p+C4seC4hOC4hOC4tOC4ogor4Lin4Lix4LiE4LiE4Li14Lii4LmMCivguKfguLHguITguITguLgKK+C4p+C4seC4hOC4i+C4teC4mQor4Lin4Lix4LiHCivguKfguLHguIfguIHguYwKK+C4p+C4seC4h+C4iuC4sgor4Lin4Lix4LiH4LmA4Lin4LiHCivguKfguLHguIfguKjguLAKK+C4p+C4seC4h+C4quC4sAor4Lin4Lix4LiI4LiI4LiwCivguKfguLHguIjguInguYwKK+C4p+C4seC4iOC4ieC4gQor4Lin4Lix4LiI4LiJ4Lil4LiwCivguKfguLHguIjguJnguYwKK+C4p+C4seC4igor4Lin4Lix4LiK4LiK4LiwCivguKfguLHguIrguIzguYwKK+C4p+C4seC4iuC4nuC4t+C4igor4Lin4Lix4LiK4Lij4LiwCivguKfguLHguI3guIjguIEKK+C4p+C4seC4jeC4iOC4meC4sAor4Lin4Lix4LiN4LiM4LmMCivguKfguLHguI/guIHguLAKK+C4p+C4seC4j+C4j+C4sAor4Lin4Lix4LiP4LiP4Li0CivguKfguLHguJLguIHguLAKK+C4p+C4seC4kuC4geC4tQor4Lin4Lix4LiS4LiZ4LiwCivguKfguLHguJLguJnguLIKK+C4p+C4seC4kwor4Lin4Lix4LiT4LiP4LmMCivguKfguLHguJPguJPguLAKK+C4p+C4seC4k+C4meC4sgor4Lin4Lix4LiUCivguKfguLHguJUKK+C4p+C4seC4leC4leC5jAor4Lin4Lix4LiV4LiV4LiyCivguKfguLHguJXguJbguYwKK+C4p+C4seC4leC4luC4uAor4Lin4Lix4LiV4LiZ4LiwCivguKfguLHguJXguKMKK+C4p+C4seC4leC4o+C4m+C4j+C4tOC4muC4seC4leC4tAor4Lin4Lix4LiV4Liq4LiU4LijCivguKfguLHguJXguKrguLAKK+C4p+C4seC4leC4tAor4Lin4Lix4LiX4LiZ4LmMCivguKfguLHguJkKK+C4p+C4seC4meC4leC5jAor4Lin4Lix4LiZ4LiX4LiZ4LiyCivguKfguLHguJnguJfguJnguLXguKLguYwKK+C4p+C4seC4meC4l+C4sgor4Lin4Lix4LiZ4LiX4Li0CivguKfguLHguJnguJnguLTguJ7guIEKK+C4p+C4seC4meC5gOC4p+C4ouC5jAor4Lin4Lix4LiaCivguKfguLHguJrguYbguKvguKfguLPguYYKK+C4p+C4seC4m+C4m+C4sAor4Lin4Lix4Lih4Lih4Li04LiBCivguKfguLHguKIKK+C4p+C4seC4peC4geC5jAor4Lin4Lix4Lil4LiE4Li4CivguKfguLHguKXguKLguYwKK+C4p+C4seC4peC4peC4oAor4Lin4Lix4Lil4Lil4Li1CivguKfguLHguKcKK+C4p+C4seC4quC4lOC4uAor4Lin4Lix4Liq4LiV4Lij4LmMCivguKfguLHguKrguJnguYwKK+C4p+C4seC4quC4meC4sAor4Lin4Lix4Liq4Liq4LiwCivguKfguLIKK+C4p+C5iOC4sgor4Lin4LmJ4LiyCivguKfguLLguIEKK+C4p+C5ieC4suC4geC5gOC4nuC5ieC4ogor4Lin4Liy4LiB4Lii4LiwCivguKfguLLguIHguKPguLIKK+C4p+C4suC4geC4sAor4Lin4Liy4LiHCivguKfguYjguLLguIcKK+C4p+C5ieC4suC4hwor4Lin4Liy4LiI4LiBCivguKfguLLguIjguLIKK+C4p+C4suC4iOC4suC5hOC4m+C4ouC4sAor4Lin4Liy4LiI4Liy4LilCivguKfguLLguIrguYDguJvguKLguLAKK+C4p+C4suC4j+C4geC4sAor4Lin4Liy4LiT4Li04LiKCivguKfguLLguJPguLTguIrguIHguLAKK+C4p+C4suC4k+C4tOC4iuC4ouC5jAor4Lin4Liy4LiT4Li1CivguKfguLLguJQKK+C4p+C4suC4leC4sAor4Lin4Liy4LiXCivguKfguLLguJfguIEKK+C4p+C4suC4l+C4mQor4Lin4Liy4LiX4Lii4LmMCivguKfguLLguJfguLTguJUKK+C4p+C4suC4l+C4tOC4mQor4Lin4Liy4LiX4Li1CivguKfguLLguJkKK+C4p+C5iOC4suC4mQor4Lin4LmI4Liy4LiZ4LmA4LiE4Lij4Li34LitCivguKfguLLguJnguKMKK+C4p+C4suC5gOC4meC5gOC4lOC4teC4ouC4oQor4Lin4Liy4LiaCivguKfguLLguJvguLAKK+C4p+C4suC4m+C4tOC4leC4sAor4Lin4Liy4Lib4Li1CivguKfguLLguKEKK+C4p+C4suC4oeC4sAor4Lin4Liy4LmC4Lih4LijCivguKfguLLguKIKK+C4p+C5iOC4suC4ogor4Lin4LmJ4Liy4LiiCivguKfguLLguKLguKrguLAKK+C4p+C4suC4ouC4sAor4Lin4Liy4Lii4Lix4LiHCivguKfguLLguKLguLLguKHguLAKK+C4p+C4suC4ouC4uAor4Lin4Liy4Lii4Li44LiB4Li54LilCivguKfguLLguKLguLjguJrguLjguJXguKPguKLguLLguJXguKPguLIKK+C4p+C4suC5guC4ogor4Lin4Liy4LijCivguKfguLLguKPguKfguLLguKPguLQKK+C4p+C4suC4o+C4sAor4Lin4Liy4Lij4Li0CivguKfguLLguKPguLUKK+C4p+C4suC4o+C4uOC4kwor4Lin4Liy4Lij4Li44LiT4Li1CivguKfguLLguKUKK+C4p+C4suC4peC5jOC4pwor4Lin4Liy4Lil4Li04LiB4LiyCivguKfguLLguKXguLjguIHguLIKK+C4p+C4suC4pwor4Lin4LmI4Liy4LinCivguKfguYnguLLguKfguYjguK3guJkKK+C4p+C5ieC4suC4p+C4uOC5iOC4mQor4Lin4Liy4Liq4LiZ4LiwCivguKfguLLguKrguJnguLIKK+C4p+C4suC4quC4ngor4Lin4Liy4Liq4LiwCivguKfguLLguKrguLTguJkKK+C4p+C4suC4quC4tQor4Lin4Liy4Liq4Li44LiB4Lij4Li1CivguKfguLLguKrguLjguIHguLUKK+C4p+C4suC4quC4uOC5gOC4l+C4ngor4Lin4Liy4Lir4LiZ4LiwCivguKfguLLguKvguLAKK+C4p+C4suC4q+C4tOC4meC4tQor4Lin4Liy4LisCivguKfguLQKK+C4p+C4tOC4gQor4Lin4Li04LiB4LiC4Lix4Lih4Lig4LmMCivguKfguLTguIHguILguLHguKHguKDguJnguLAKK+C4p+C4tOC4geC5gOC4guC4mwor4Lin4Li04LiB4LiI4LiwCivguKfguLTguIHguKPguKEKK+C4p+C4tOC4geC4o+C4seC4ogor4Lin4Li04LiB4Lij4Liy4LiZ4LiV4LmMCivguKfguLTguIHguKTguJUKK+C4p+C4tOC4geC4pOC4leC4tAor4Lin4Li04LiB4LilCivguKfguLTguIHguKXguIjguKPguLTguJUKK+C4p+C4tOC4geC4quC4tOC4lQor4Lin4Li04LiB4Lix4LiVCivguKfguLTguIHguLHguJXguLQKK+C4p+C4tOC4geC4seC4mwor4Lin4Li04LiB4Lix4LiiCivguKfguLTguIHguLLguKMKK+C4p+C4tOC4geC4suC4pQor4Lin4Li04LiE4LiV4Lib4Lix4LiI4LiI4Lix4LiiCivguKfguLTguITguKvguLAKK+C4p+C4tOC5gOC4hOC4o+C4suC4sOC4q+C5jAor4Lin4Li04LiG4LiZ4LiwCivguKfguLTguIbguYDguJnguKgKK+C4p+C4tOC4huC5gOC4meC4qOC4p+C4owor4Lin4Li04LiG4Liy4LiVCivguKfguLTguIbguLLguKoKK+C4p+C4tOC4hwor4Lin4Li04LmI4LiHCivguKfguLTguIfguKfguK3guJkKK+C4p+C4tOC4iOC4ieC4tOC4geC4sAor4Lin4Li04LiI4Lii4Li44LiVCivguKfguLTguIjguKPguJPguLAKK+C4p+C4tOC4iOC4pQor4Lin4Li04LiI4Lix4LiB4LiC4LiT4LmMCivguKfguLTguIjguLHguIHguKnguJPguYwKK+C4p+C4tOC4iOC4seC4ogor4Lin4Li04LiI4Liy4LijCivguKfguLTguIjguLLguKPguJPguYwKK+C4p+C4tOC4iOC4tAor4Lin4Li04LiI4Li04LiB4Li04LiI4LiJ4LiyCivguKfguLTguIjguLTguJUKK+C4p+C4tOC4iOC4tOC4leC4owor4Lin4Li04LiI4Li04LiZCivguKfguLTguIjguLjguJMKK+C4p+C4tOC4iOC4uOC4o+C4kwor4Lin4Li04LiK4LiK4LiyCivguKfguLTguIrguIrguLgKK+C4p+C4tOC4iuC4iuC4uOC4lOC4sgor4Lin4Li04LiK4LiK4Li44LiV4LiyCivguKfguLTguIrguIrguLjguKXguJTguLIKK+C4p+C4tOC4iuC4jeC4sAor4Lin4Li04LiK4LiZCivguKfguLTguIrguJnguLUKK+C4p+C4tOC4iuC4seC4ogor4Lin4Li04LiK4LiyCivguKfguLTguIrguLLguJnguJnguLAKK+C4p+C4tOC4iuC4tOC4lQor4Lin4Li04LmA4LiK4Li14Lii4LijCivguKfguLTguI3guI3guLHguJXguJXguLQKK+C4p+C4tOC4jeC4jeC4suC4kwor4Lin4Li04LiN4LiN4Liy4LiT4LiB4LiX4Lij4Lix4Lie4Lii4LmMCivguKfguLTguI3guI3guLkKK+C4p+C4tOC4keC4ueC4o+C4ouC5jAor4Lin4Li04LiT4Lir4Li4CivguKfguLTguJQKK+C4p+C4tOC4lOC4teC4quC4lOC4tQor4Lin4Li04LiV4LiBCivguKfguLTguJXguJbguLLguKMKK+C4p+C4tOC4leC4suC4oeC4tOC4mQor4Lin4Li04LiW4Li1CivguKfguLTguJfguJjguLAKK+C4p+C4tOC4l+C4mOC4seC4h+C4quC4sAor4Lin4Li04LiX4Lii4LiyCivguKfguLTguJfguKLguLgKK+C4p+C4tOC4l+C4ouC4uOC4lQor4Lin4Li04LiX4Lij4Li44Lih4LiwCivguKfguLTguJfguKfguLHguKoKK+C4p+C4tOC4l+C4seC4leC4luC4tAor4Lin4Li04LiX4Liy4Lij4LiT4LmMCivguKfguLTguJfguLLguKXguJnguYwKK+C4p+C4tOC4l+C4tOC4lQor4Lin4Li04LiX4Li5CivguKfguLTguJfguLnguKMKK+C4p+C4tOC5gOC4l+C4p+C4qQor4Lin4Li04LmA4LiX4LioCivguKfguLTguJgKK+C4p+C4tOC4mOC4p+C4sgor4Lin4Li04LiY4LiyCivguKfguLTguJjguLLguJkKK+C4p+C4tOC4mOC4tQor4Lin4Li04LiY4Li44Lij4LiwCivguKfguLTguJjguLkKK+C4p+C4tOC4mOC4ueC4m+C4meC4sAor4Lin4Li04LiZCivguKfguLTguYjguJkKK+C4p+C4tOC4meC4l+C5jAor4Lin4Li04LiZ4Lix4LiZ4LiV4Li5CivguKfguLTguJnguLHguKIKK+C4p+C4tOC4meC4suC4l+C4tQor4Lin4Li04LiZ4Liy4Lii4LiBCivguKfguLTguJnguLLguKgKK+C4p+C4tOC4meC4tOC4iAor4Lin4Li04LiZ4Li04LiI4LiJ4Lix4LiiCivguKfguLTguJnguLTguJUKK+C4p+C4tOC4meC4tOC4muC4suC4lQor4Lin4Li04LiZ4Li04Lib4Liy4LiV4Li04LiBCivguKfguLTguJnguLXguJUKK+C4p+C4tOC5gOC4meC4lQor4Lin4Li04LmC4LiZ4LiX4LiBCivguKfguLTguJrguLHguJXguLQKK+C4p+C4tOC4muC4suC4gQor4Lin4Li04Lia4Li44LilCivguKfguLTguJrguLnguKUKK+C4p+C4tOC4m+C4geC4suC4owor4Lin4Li04Lib4LiP4Li04Liq4Liy4LijCivguKfguLTguJvguYLguKLguIQKK+C4p+C4tOC4m+C4o+C4sOC4geC4suC4owor4Lin4Li04Lib4Lij4Liw4LiV4Li04Liq4Liy4LijCivguKfguLTguJvguKPguLDguYLguKLguIQKK+C4p+C4tOC4m+C4o+C4sOC4peC4suC4mwor4Lin4Li04Lib4Lij4Liw4Lin4Liy4LiqCivguKfguLTguJvguKPguLTguJPguLLguKHguJfguLjguIHguILguYwKK+C4p+C4tOC4m+C4o+C4tOC4lQor4Lin4Li04Lib4Lil4Liy4LibCivguKfguLTguJvguKXguLLguKoKK+C4p+C4tOC4m+C4p+C4suC4qgor4Lin4Li04Lib4Lix4LiB4Lip4LmMCivguKfguLTguJvguLHguKrguKrguIEKK+C4p+C4tOC4m+C4seC4quC4quC4meC4sgor4Lin4Li04Lib4Liy4LiB4LiC4Lix4LiZ4LiY4LmMCivguKfguLTguJ7guLLguIHguKnguYwKK+C4p+C4tOC4nuC4suC4geC4qeC5jOC4p+C4tOC4iOC4suC4o+C4k+C5jAor4Lin4Li04Lie4Li04LiY4LiX4Lix4Lio4LiZ4LiyCivguKfguLTguJ7guLjguJgKK+C4p+C4tOC4oOC4seC4h+C4hOC5jAor4Lin4Li04Lig4Lix4LiKCivguKfguLTguKDguLHguJXguJXguLQKK+C4p+C4tOC4oOC4sgor4Lin4Li04Lig4Liy4LiECivguKfguLTguKDguLLguIoKK+C4p+C4tOC4oOC4suC4lOC4sgor4Lin4Li04Lig4Liy4Lin4Li1CivguKfguLTguKDguLLguKkKK+C4p+C4tOC4oOC4suC4qgor4Lin4Li04Lig4Li5CivguKfguLTguKDguLnguKnguJPguLAKK+C4p+C4tOC4oOC4ueC4qeC4sgor4Lin4Li04Lig4Li54Lip4Li04LiVCivguKfguLTguYDguKDguJXguIHguYwKK+C4p+C4tOC5gOC4oOC4l+C4geC5jAor4Lin4Li04Lih4LiZCivguKfguLTguKHguKUKK+C4p+C4tOC4oeC4peC4seC4gQor4Lin4Li04Lih4Lil4Liy4LiBCivguKfguLTguKHguLHguIfguKrguLIKK+C4p+C4tOC4oeC4seC4leC4tAor4Lin4Li04Lih4Liy4LiZCivguKfguLTguKHguLLguJnguLTguIHguYDguJvguKPguJUKK+C4p+C4tOC4oeC4uOC4ggor4Lin4Li04Lih4Li44LiVCivguKfguLTguKHguLjguJXguJXguLQKK+C4p+C4tOC5gOC4oeC4peC4t+C4reC4hwor4Lin4Li04LmC4Lih4LiB4LiC4LmMCivguKfguLTguYLguKHguIHguKnguKfguLTguJbguLUKK+C4p+C4tOC5gOC4ouC4mQor4Lin4Li04LmC4Lii4LiECivguKfguLTguKPguIfguKPguK3guIcKK+C4p+C4tOC4o+C4leC4sAor4Lin4Li04Lij4Lih4LiT4LiwCivguKfguLTguKPguKfguLAKK+C4p+C4tOC4o+C4sAor4Lin4Li04Lij4Lix4LiH4Lij4Lit4LiHCivguKfguLTguKPguLHguIoKK+C4p+C4tOC4o+C4seC4lQor4Lin4Li04Lij4Lix4LiV4Li0CivguKfguLTguKPguLLguITguLAKK+C4p+C4tOC4o+C4suC4oQor4Lin4Li04Lij4Liy4Lin4LiwCivguKfguLTguKPguLjguJgKK+C4p+C4tOC4o+C4uOC4rOC4q+C5jAor4Lin4Li04Lij4Li44Lis4Lir4LiBCivguKfguLTguKPguLnguJsKK+C4p+C4tOC4o+C4ueC4m+C4seC4geC4qeC5jAor4Lin4Li04LmA4Lij4LiBCivguKfguLTguYDguKPguJnguJfguKPguYwKK+C4p+C4tOC5guC4o+C4hAor4Lin4Li04LmC4Lij4LiICivguKfguLTguYLguKPguIjguJnguYwKK+C4p+C4tOC5guC4o+C4kgor4Lin4Li04LmC4Lij4LiYCivguKfguLTguYLguKPguJjguJnguYwKK+C4p+C4tOC4peC4seC4meC4lOC4sgor4Lin4Li04Lil4Lix4LiiCivguKfguLTguKXguLLguJQKK+C4p+C4tOC4peC4suC4mwor4Lin4Li04Lil4Liy4Lin4Lix4LiT4Lii4LmMCivguKfguLTguKXguLLguKgKK+C4p+C4tOC4peC4suC4qgor4Lin4Li04Lil4Liy4Liq4Li04LiZ4Li1CivguKfguLTguKXguLTguJvguJTguLIKK+C4p+C4tOC4peC4tOC4qOC4oeC4suC4q+C4o+C4sgor4Lin4Li04LmA4Lil4LibCivguKfguLTguYDguKXguJvguJnguLAKK+C4p+C4tOC5guC4peC4gQor4Lin4Li04LmC4Lil4LiB4LiZ4LiwCivguKfguLTguYLguKXguIjguJnguLAKK+C4p+C4tOC5guC4peC4oQor4Lin4Li04LmE4LilCivguKfguLTguKcKK+C4p+C4tOC4p+C4o+C4k+C5jAor4Lin4Li04Lin4Lij4Lij4LiY4LiZ4LmMCivguKfguLTguKfguKPguLAKK+C4p+C4tOC4p+C4seC4jwor4Lin4Li04Lin4Lix4LiS4LiZ4LmMCivguKfguLTguKfguLHguJkKK+C4p+C4tOC4p+C4suC4lwor4Lin4Li04Lin4Liy4Lir4LmMCivguKfguLTguKfguLLguKvguLAKK+C4p+C4tOC4p+C4tOC4iAor4Lin4Li04Lin4Li04LiVCivguKfguLTguKfguLTguJgKK+C4p+C4tOC5gOC4p+C4gQor4Lin4Li04Lio4Lij4Li44LiVCivguKfguLTguKjguLHguJcKK+C4p+C4tOC4qOC4seC4peC4ouC5jAor4Lin4Li04Lio4Liy4LiC4LiwCivguKfguLTguKjguLLguILguLIKK+C4p+C4tOC4qOC4suC4h+C4hOC5jAor4Lin4Li04Lio4Liy4LilCivguKfguLTguKjguLTguKnguI/guYwKK+C4p+C4tOC4qOC4uOC4l+C4mOC5jAor4Lin4Li04Lio4Li44LiX4LiY4Li04LmMCivguKfguLTguYDguKjguKkKK+C4p+C4tOC5gOC4qOC4qeC4k+C5jAor4Lin4Li04Lip4LiT4Li4CivguKfguLTguKnguJPguLjguIHguKPguKPguKEKK+C4p+C4tOC4qeC4mOC4owor4Lin4Li04Lip4Lix4LiB4LiV4LmMCivguKfguLTguKnguLHguKIKK+C4p+C4tOC4qeC4suC4kwor4Lin4Li04Lip4Li44Lin4Lix4LiVCivguKfguLTguKrguIHguLXguYkKK+C4p+C4tOC4quC4o+C4o+C4iuC4meC4teC4ouC5jAor4Lin4Li04Liq4Lik4LiVCivguKfguLTguKrguKrguLjguIHguKPguKPguKEKK+C4p+C4tOC4quC4seC4h+C5guC4ouC4hAor4Lin4Li04Liq4Lix4LiK4LiZ4LiyCivguKfguLTguKrguLHguI3guI3guLUKK+C4p+C4tOC4quC4seC4ogor4Lin4Li04Liq4Liy4LiC4LiwCivguKfguLTguKrguLLguILguLIKK+C4p+C4tOC4quC4suC4oeC4seC4jQor4Lin4Li04Liq4Liy4LijCivguKfguLTguKrguLLguKPguJcKK+C4p+C4tOC4quC4suC4pQor4Lin4Li04Liq4Liy4Liq4LiwCivguKfguLTguKrguLLguKvguIHguLTguIgKK+C4p+C4tOC4quC4tOC4kAor4Lin4Li04Liq4Li44LiH4LiE4Liy4Lih4Liq4Li14Lih4LiyCivguKfguLTguKrguLjguJfguJjguYwKK+C4p+C4tOC4quC4uOC4l+C4mOC4tOC5jAor4Lin4Li04Liq4Li54LiV4LijCivguKfguLTguYDguKrguJcKK+C4p+C4tOC5gOC4quC4quC4meC4sAor4Lin4Li04Lir4LiECivguKfguLTguKvguIfguITguYwKK+C4p+C4tOC4q+C4peC4seC5iOC4mQor4Lin4Li04Lir4Lix4Lib4Lib4LiV4Li0CivguKfguLTguKvguLLguKLguKrguLAKK+C4p+C4tOC4q+C4suC4owor4Lin4Li04Lir4Li0CivguKfguLTguKvguLTguIfguKrguLAKK+C4p+C4tOC4q+C4tOC4h+C4quC4sgor4Lin4Li04LmA4Lir4Liq4Lig4Liy4LiE4Li1CivguKfguLTguYDguKvguKrguLIKK+C4p+C4tOC4rOC4seC4h+C4hOC5jAor4Lin4Li04Lis4Liy4LijCivguKfguLUKK+C4p+C4teC4iOC4tAor4Lin4Li14LiK4LiZ4Li1CivguKfguLXguIvguYjguLIKK+C4p+C4teC4k+C4sgor4Lin4Li14LmJ4LiUCivguKfguLXguYjguKfguLHguJkKK+C4p+C4teC5iOC5geC4p+C4pwor4Lin4Li14Liq4LiwCivguKfguLjguYnguIcKK+C4p+C4uOC4kOC4tAor4Lin4Li44LiSCivguKfguLjguJLguLQKK+C4p+C4uOC4lAor4Lin4Li44LmI4LiZCivguKfguLjguYnguJkKK+C4p+C4uOC4mgor4Lin4Li44LmJ4LiiCivguKfguLjguKXguYHguJ/guKPguKEKK+C4p+C4ueC5iQor4Lin4Li54LiU4Lin4Liy4LiUCivguKfguLnguJoKK+C4p+C4ueC5iOC4p+C4suC4oQor4LmA4Lin4LmJCivguYDguKfguIQKK+C5gOC4p+C4hOC4tOC4mQor4LmA4Lin4LiE4Li1CivguYDguKfguIgKK+C5gOC4p+C4igor4LmA4Lin4LiK4Lii4Lix4LiZ4LiV4LmMCivguYDguKfguYTguIrguKLguKLguLHguJnguJXguYzguKPguLLguIrguKPguJYKK+C5gOC4p+C4kOC4meC5jAor4LmA4Lin4LiT4LiwCivguYDguKfguJPguLQKK+C5gOC4p+C4k+C4tOC4gQor4LmA4Lin4LiT4Li4CivguYDguKfguJXguJnguYwKK+C5gOC4p+C4leC4owor4LmA4Lin4LiV4Liy4LilCivguYDguKfguJcKK+C5gOC4p+C4l+C4meC4sgor4LmA4Lin4LiX4Lii4LmMCivguYDguKfguJfguLLguIfguITguYwKK+C5gOC4p+C4l+C4suC4h+C4hOC4qOC4suC4quC4leC4o+C5jAor4LmA4Lin4LiX4Liy4LiZ4LiV4LmMCivguYDguKfguJfguLLguJnguJXguLAKK+C5gOC4p+C4l+C4tAor4LmA4Lin4LiX4Li1CivguYDguKfguJjguLAKK+C5gOC4p+C4mOC4tQor4LmA4Lin4LiZCivguYDguKfguYnguJkKK+C5gOC4p+C4meC5hOC4leC4ogor4LmA4Lin4LmE4LiZ4LiiCivguYDguKfguKHguLAKK+C5gOC4p+C4oeC4seC4lQor4LmA4Lin4Lih4Liy4LiV4Li04LiBCivguYDguKfguYnguKIKK+C5gOC4p+C4owor4LmA4Lin4Lij4Lih4LiT4Li1CivguYDguKfguKPguLUKK+C5gOC4p+C5guC4o+C4iOC4meC5jAor4LmA4Lin4Lil4LiyCivguYDguKfguYDguKXguJnguIvguLUKK+C5gOC4p+C4p+C4seC4kwor4LmA4Lin4Lin4Lix4LiT4LiT4Li04Lii4LiwCivguYDguKfguKjguKHguYwKK+C5gOC4p+C4qOC4ouC5jAor4LmA4Lin4Lio4Lii4LiyCivguYDguKfguKrguJnguYwKK+C5gOC4p+C4quC4oOC4uQor4LmA4Lin4Liq4Lih4LmMCivguYDguKfguKrguKHguLAKK+C5gOC4p+C4quC4p+C4seC4kwor4LmA4Lin4Liq4Liq4LiwCivguYDguKfguKrguKrguLHguJnguJTguKMKK+C5gOC4p+C4quC4quC4uOC4geC4o+C4o+C4oQor4LmA4Lin4Liq4Liq4Li44Lin4Lix4LiTCivguYDguKfguKrguLLguKPguLHguIoKK+C5gOC4p+C4quC4tAor4LmA4Lin4Liq4Li04Lii4LiyCivguYDguKfguKvguJkKK+C5gOC4p+C4q+C4sAor4LmA4Lin4Lir4Lix4LiH4LiE4LmMCivguYDguKfguKvguLHguJvguJXguLQKK+C5gOC4p+C4q+C4sgor4LmA4Lin4Lir4Liy4Lii4LiqCivguYDguKfguKzguLgKK+C5gOC4p+C4rOC4uOC4o+C4tOC4ogor4LmA4Lin4LmI4LitCivguYDguKfguYnguLIKK+C5gOC4p+C4tOC4gQor4LmA4Lin4Li04LmJ4LiHCivguYDguKfguLXguYjguKIKK+C5gOC4p+C4teC4ouC4hwor4LmA4Lin4Li14Lii4LiZCivguYDguKfguLXguKLguKMKK+C5gOC4p+C4teC5iOC4ouC4pwor4LmB4Lin4LmJCivguYHguKfguIcKK+C5geC4p+C5ieC4hwor4LmB4Lin4LiUCivguYHguKfguJXguKMKK+C5geC4p+C4mQor4LmB4Lin4LmI4LiZCivguYHguKfguJnguJTguLIKK+C5geC4p+C4mgor4LmB4Lin4LihCivguYHguKfguKcKK+C5geC4p+C5iOC4pwor4LmB4Lin4Lin4Lin4Li04LmA4LiK4Li14Lii4LijCivguYHguKfguLAKK+C5guC4pwor4LmC4Lin4LmICivguYLguKfguIHguLLguKMKK+C5guC4p+C5iOC4hwor4LmC4Lin4LiVCivguYLguKfguJfguLLguJkKK+C5guC4p+C4ogor4LmC4Lin4LmJ4LiiCivguYLguKfguKLguKfguLLguKIKK+C5guC4p+C5ieC5gOC4p+C5iQor4LmC4Lin4Liq4Liy4LiZCivguYLguKfguKvguLLguKMKK+C5hOC4pwor4LmE4Lin4LmJCivguYTguKfguIHguLnguJPguJDguYwKK+C5hOC4p+C4keC4ueC4o+C4ouC5jAor4LmE4Lin4LiX4Lii4LmMCivguYTguKfguJ7guIjguJnguYwKK+C5hOC4p+C4ouC4suC4geC4o+C4k+C5jAor4LmE4Lin4Lii4Liy4Lin4Lix4LiI4LiB4LijCivguYTguKfguKLguLLguKfguLHguIjguKHguLHguKIKK+C5hOC4p+C4o+C4seC4qgor4LmE4Lin4Lin4Lij4Lij4LiTCivguYTguKfguKnguJPguJ4KK+C5hOC4p+C5guC4reC4peC4tOC4mQor4LioCivguKjguIEKK+C4qOC4geC4jwor4Lio4LiB4LilCivguKjguIHguLjguJkKK+C4qOC4geC4uOC4meC4tAor4Lio4LiB4Li44LiZ4Li1CivguKjguIfguIHguLIKK+C4qOC4iOC4tOC4muC4lOC4tQor4Lio4LiI4Li1CivguKjguJAKK+C4qOC4lOC4gQor4Lio4LiVCivguKjguJXguIEKK+C4qOC4meC4tAor4Lio4LmE4LiZ4Liq4LmMCivguKjguJ4KK+C4qOC4nuC4pQor4Lio4LihCivguKjguKHguJkKK+C4qOC4oeC4meC4tQor4Lio4Lih4LiZ4Li14Lii4LmMCivguKjguKHguKjguLLguJkKK+C4qOC4ogor4Lio4Lii4LiZ4LiwCivguKjguKLguJnguLXguKLguYwKK+C4qOC4ouC4suC4oQor4Lio4Lii4Liy4Lih4LiB4Lix4LiT4LiQ4LmMCivguKjguKLguLLguKHguKUKK+C4qOC4owor4Lio4Lij4LiT4Li0CivguKjguKPguJnguLLguKPguLLguKLguJPguYwKK+C4qOC4o+C4oAor4Lio4Lij4Lih4LiT4LiwCivguKjguKPguKPguIHguKMKK+C4qOC4o+C4o+C4geC4o+C4sgor4Lio4Lij4Lij4Lie4Lij4Li1CivguKjguKPguKfguJPguLAKK+C4qOC4o+C4p+C4k+C4teC4ouC5jAor4Lio4Lij4Lin4Li04Lip4LiQ4LiyCivguKjguKPguLHguJYKK+C4qOC4o+C4seC4luC4meC4sAor4Lio4Lij4Lix4LiXCivguKjguKPguLHguJfguJjguLIKK+C4qOC4o+C4seC4meC4luC5jAor4Lio4Lij4Lix4LiZ4Lii4LmMCivguKjguKPguLHguJnguKLguLkKK+C4qOC4o+C4seC4ogor4Lio4Lij4Liy4LiX4LiY4LmMCivguKjguKPguLLguJnguJXguYwKK+C4qOC4o+C4suC4ngor4Lio4Lij4Liy4Lie4LiBCivguKjguKPguLLguKLguLAKK+C4qOC4o+C4suC4p+C4gQor4Lio4Lij4Liy4Lin4LiT4LiwCivguKjguKPguLLguKfguKPguJPguYwKK+C4qOC4o+C4suC4p+C4uOC4mAor4Lio4Lij4Liy4Liq4LiZ4LmMCivguKjguKPguLUKK+C4qOC4o+C4teC4leC4o+C4seC4hwor4Lio4Lij4Li14Lip4LiwCivguKjguKPguLXguKrguLHguIfguITguLXguJUKK+C4qOC4o+C4uOC4lQor4Lio4Lij4Li44LiV4Li0CivguKjguKTguIHguLLguKUKK+C4qOC4pOC4hOC4suC4pQor4Lio4Lik4LiH4LiE4LmMCivguKjguKTguIfguITguLLguKMKK+C4qOC4pOC4h+C4hOC4suC4o+C4tOC4mQor4Lio4Lik4LiH4LiE4Liy4Lij4Li1CivguKjguKXguKAKK+C4qOC4peC4seC4lgor4Lio4Lil4Li04Lip4LiP4LmMCivguKjguKXguLTguKnguLIKK+C4qOC4pwor4Lio4Lin4Lio4Li44LijCivguKjguKfguLHguKjguJkKK+C4qOC4p+C4seC4qgor4Lio4Lin4LiyCivguKjguKfguLLguJkKK+C4qOC4p+C4suC4qgor4Lio4Lin4Li04LiVCivguKjguKfguLTguJXguKMKK+C4qOC4qOC4sAor4Lio4Lio4Li0CivguKjguKjguLTguJkKK+C4qOC4qOC4tQor4Lio4Liq4LiyCivguKjguK0KK+C4qOC4reC4gQor4Lio4Lix4LiB4LiU4LiyCivguKjguLHguIHguJTguLQKK+C4qOC4seC4geC4lOC4tOC5jAor4Lio4Lix4LiB4LiV4Li0CivguKjguLHguIHguKLguYwKK+C4qOC4seC4geC4ouC4sAor4Lio4Lix4LiB4Lij4Liy4LiKCivguKjguLHguIfguIHguKMKK+C4qOC4seC4h+C4geC4sgor4Lio4Lix4LiH4LiB4Li4CivguKjguLHguJXguKPguLgKK+C4qOC4seC4leC4o+C4uQor4Lio4Lix4LiX4LiY4LiZ4LiwCivguKjguLHguJnguKrguJnguLAKK+C4qOC4seC4meC4quC4meC4teC4ouC5jAor4Lio4Lix4Lie4LiX4LmMCivguKjguLHguKHguKLguLgKK+C4qOC4seC4ouC4ouC4sgor4Lio4Lix4LilCivguKjguLHguKXguIEKK+C4qOC4seC4peC4geC4tQor4Lio4Lix4Liq4LiU4LijCivguKjguLHguKrguJXguKPguLIKK+C4qOC4seC4quC4leC4o+C4tQor4Lio4Lix4Liq4LiiCivguKjguLLguIEKK+C4qOC4suC4geC4leC4sAor4Lio4Liy4LiB4Lii4LiwCivguKjguLLguIHguKfguKMKK+C4qOC4suC4geC4suC4h+C4hOC5jAor4Lio4Liy4LiB4Li04LiZ4Li1CivguKjguLLguI7guIEKK+C4qOC4suC4kOC4ouC4sAor4Lio4Liy4LiTCivguKjguLLguJUKK+C4qOC4suC4mQor4Lio4Liy4LiZ4LiV4LmMCivguKjguLLguJnguJXguLQKK+C4qOC4suC4meC4tOC4lQor4Lio4Liy4LibCivguKjguLLguJ7guJfguYwKK+C4qOC4suC4nuC4owor4Lio4Liy4Lih4LiwCivguKjguLLguKHguLIKK+C4qOC4suC4oeC4teC4pQor4Lio4Liy4Lij4LiXCivguKjguLLguKPguJfguLnguKUKK+C4qOC4suC4o+C4tOC4geC4sgor4Lio4Liy4LilCivguKjguLLguKXguLIKK+C4qOC4suC4peC4tAor4Lio4Liy4Lio4Lin4Lix4LiVCivguKjguLLguKrguIEKK+C4qOC4suC4quC4lOC4sgor4Lio4Liy4Liq4LiV4Lij4LmMCivguKjguLLguKrguJXguKPguLIKK+C4qOC4suC4quC4meC5jAor4Lio4Liy4Liq4LiZ4LiyCivguKjguLLguKrguJnguLXguKLguYwKK+C4qOC4suC4quC5guC4meC4p+C4suC4lwor4Lio4Li04LiB4Lip4LiBCivguKjguLTguIHguLLguKMKK+C4qOC4tOC4guC4owor4Lio4Li04LiC4Lij4Li04LiZCivguKjguLTguILguKPguLUKK+C4qOC4tOC4guC4seC4k+C4keC5jAor4Lio4Li04LiC4LiyCivguKjguLTguITguLLguKUKK+C4qOC4tOC4h+C4guC4owor4Lio4Li04LiH4LiC4Lij4Li04LiZCivguKjguLTguJUKK+C4qOC4tOC4luC4tQor4Lio4Li04Lie4Li04Lij4LiwCivguKjguLTguKPguLAKK+C4qOC4tOC4o+C4sgor4Lio4Li04Lij4Liy4Lih4Lie4Li44LiKCivguKjguLTguYLguKPguKPguLLguJoKK+C4qOC4tOC4peC4m+C5jAor4Lio4Li04Lil4Lib4LiwCivguKjguLTguKXguLIKK+C4qOC4tOC4p+C4sAor4Lio4Li04Lin4Li04LiB4LiyCivguKjguLTguKjguLXguKPguLAKK+C4qOC4tOC4qOC4uAor4Lio4Li04Lip4LiO4Li0CivguKjguLTguKnguI/guYwKK+C4qOC4tOC4qeC4ouC5jAor4Lio4Li14LiB4LijCivguKjguLXguILguKMKK+C4qOC4teC4leC4pQor4Lio4Li14LilCivguKjguLbguIEKK+C4qOC4tuC4geC4qeC4sgor4Lio4Li44LiB4Lij4LmMCivguKjguLjguIHguKXguLHguKEKK+C4qOC4uOC4geC4sAor4Lio4Li44LiI4Li0CivguKjguLjguJPguJHguLIKK+C4qOC4uOC4k+C4keC4tQor4Lio4Li44LiX4LiYCivguKjguLjguJfguJjguLQKK+C4qOC4uOC4mQor4Lio4Li44LiZ4Lix4LiBCivguKjguLjguJnguLQKK+C4qOC4uOC4peC4tQor4Lio4Li44Lip4Li04LijCivguKjguLjguKnguLTguKUKK+C4qOC4ueC4geC4owor4Lio4Li54LiX4LijCivguKjguLnguJnguKLguYwKK+C4qOC4ueC4pQor4Lio4Li54Lil4Li04LiZCivguYDguKjguKPguJPguLUKK+C5gOC4qOC4o+C4qeC4kOC5jAor4LmA4Lio4Lij4Lip4LiQ4Li1CivguYDguKjguKPguYnguLIKK+C5gOC4qOC4peC4qQor4LmA4Lio4Lin4LiU4LiH4LiE4LmMCivguYDguKjguKfguJTguLXguKAKK+C5gOC4qOC4p+C4lQor4LmA4Lio4Lin4LiV4LijCivguYDguKjguKfguLLguKUKK+C5gOC4qOC4qQor4LmA4Lio4Liy4LmE4LiI4LiiCivguYDguKjguLLguKPguYwKK+C5gOC4qOC4suC4o+C4ouC4sAor4LmA4Lio4Li04LiBCivguYDguKjguLXguKLguKMKK+C5guC4qOC4gQor4LmC4Lio4LiB4LiyCivguYLguKjguIHguLUKK+C5guC4qOC4iOC4meC4sAor4LmC4Lio4LiI4LiZ4Li14Lii4LiwCivguYLguKjguIjguLQKK+C5guC4qOC4luC4sAor4LmC4Lio4LiY4LiZ4LiwCivguYLguKjguJzguLAKK+C5guC4qOC4oAor4LmC4Lio4Lig4LiZCivguYLguKjguKDguLIKK+C5guC4qOC4oOC4tOC4lQor4LmC4Lio4Lig4Li04LiZCivguYLguKjguKDguLTguKnguJDguYwKK+C5guC4qOC4oOC4tQor4LmC4Lio4Lij4LiT4Li0CivguYLguKjguKPguJPguLUKK+C5guC4qOC4o+C4lOC4sgor4LmC4Lio4Lij4LiV4LijCivguYLguKjguKXguIEKK+C5guC4qOC4p+C4oOC4suC4ngor4LmE4Lio4LilCivguYTguKjguKfguLAKK+C4qQor4Lip4Lih4LiyCivguKnguLHguI8KK+C4qeC4seC4j+C4geC4sAor4Lip4Lix4LiRCivguKnguLHguJMKK+C4qeC4seC4qQor4Lip4Lix4Lip4LiP4Li1CivguKnguLHguKnguJAKK+C4qeC4seC4qeC4kOC4tQor4Lip4Liy4Lij4Lig4Liy4LiE4Lit4LijCivguYLguKnguJHguKgKK+C5guC4qeC4keC4qOC4seC4mQor4LiqCivguKrguIEKK+C4quC4geC4j+C4sAor4Liq4LiB4LiQ4Liy4LiZCivguKrguIHguJfguLLguITguLLguKHguLUKK+C4quC4geC4meC4mOC5jAor4Liq4LiB4Lib4Lij4LiBCivguKrguIHguKPguJPguLXguKLguYwKK+C4quC4geC4o+C4o+C4iOC5jAor4Liq4LiB4Lij4Lij4LiWCivguKrguIHguKPguKPguKHguIHguKPguLTguKLguLIKK+C4quC4geC4o+C4seC4oQor4Liq4LiB4Lij4Li5CivguKrguIHguKUKK+C4quC4geC4seC4lAor4Liq4LiB4Lix4LiU4LmB4LiE4Lij4LmICivguKrguIHguLIKK+C4quC4geC4suC4ouC5geC4peC4mgor4Liq4LiB4Liy4LinCivguKrguIHguLTguJfguLLguITguLLguKHguLUKK+C4quC4geC4tQor4Liq4LiB4Li44LiTCivguKrguIHguLjguJPguLIKK+C4quC4geC4uOC4k+C4tQor4Liq4LiB4Li44LiZCivguKrguIHguLjguJnguJXguYwKK+C4quC4geC4uOC4pQor4Liq4LmA4LiB4LiVCivguKrguYHguIHguJnguYDguJTguLXguKLguKEKK+C4quC4guC4sAor4Liq4LiC4LiyCivguKrguILguLQKK+C4quC4hwor4Liq4LmI4LiHCivguKrguIfguIHguKMKK+C4quC4h+C4geC4o+C4suC4meC4leC5jAor4Liq4LiH4LiB4LiyCivguKrguIfguYLguIHguIgKK+C4quC4h+C4hOC5jAor4Liq4LiH4LiE4LijCivguKrguIfguITguKPguLLguKEKK+C4quC4h+C5gOC4hOC4o+C4suC4sOC4q+C5jAor4Liq4LiH4LiG4LmMCivguKrguIfguJoKK+C4quC4h+C4p+C4mQor4Liq4LiH4LmA4Lip4LibCivguKrguYjguIfguKrguIHguLLguKMKK+C4quC4h+C4quC4seC4ogor4Liq4LiH4Liq4Liy4LijCivguKrguIfguLHguJQKK+C4quC4h+C5iOC4sgor4Liq4LiI4LmK4Lin4LiUCivguKrguJAKK+C4quC4k+C4keC5jAor4Liq4LiUCivguKrguJTguIEKK+C4quC4lOC4mQor4Liq4LiU4Lih4Lig4LmMCivguKrguJTguLHguJkKK+C4quC4lOC4seC4mgor4Liq4LiU4Lix4Lia4Lib4LiB4Lij4LiT4LmMCivguKrguJTguLMKK+C4quC4lOC4tQor4Liq4LiU4Li44LiU4Li1CivguKrguJTguLnguJsKK+C4quC4lQor4Liq4LiV4LiBCivguKrguJXguJkKK+C4quC4leC4o+C4reC4meC5gOC4iuC4teC4ouC4oQor4Liq4LiV4Lij4Li04LiB4LiZ4Li04LiZCivguKrguJXguKPguLUKK+C4quC4leC4seC4mQor4Liq4LiV4Lix4LiZ4Lii4LmMCivguKrguJXguLHguJ7guJjguYwKK+C4quC4leC4seC4n+C4n+C5jAor4Liq4LiV4Lix4Lih4Lig4LmMCivguKrguJXguLLguIfguITguYwKK+C4quC4leC4suC4n+C4n+C5jAor4Liq4LiV4Li0CivguKrguJXguLTguYrguIEKK+C4quC4leC4tQor4Liq4LiV4Li14LihCivguKrguJXguLkKK+C4quC4leC4ueC4mwor4Liq4LmA4LiV4LmH4LiBCivguKrguYDguJXguJnguYDguKXguKoKK+C4quC5gOC4leC4ouC5jAor4Liq4LmE4LiV4Lij4LmK4LiE4LmMCivguKrguJbguJkKK+C4quC4luC4muC4lOC4tQor4Liq4LiW4LilCivguKrguJbguKfguLXguKPguLAKK+C4quC4luC4suC4mQor4Liq4LiW4Liy4LiZ4LiwCivguKrguJbguLLguJnguLUKK+C4quC4luC4suC4muC4gQor4Liq4LiW4Liy4Lia4Lix4LiZCivguKrguJbguLLguJvguJnguLIKK+C4quC4luC4suC4m+C4meC4tOC4gQor4Liq4LiW4Liy4Lib4LiZ4Li14Lii4Lie4Lii4Liy4LiB4Lij4LiT4LmMCivguKrguJbguLLguJvguJnguLXguKLguKfguLLguJfguLUKK+C4quC4luC4suC4m+C4seC4leC4ouC4geC4o+C4o+C4oQor4Liq4LiW4Liy4Lie4LijCivguKrguJbguLLguKUKK+C4quC4luC4suC4p+C4owor4Liq4LiW4Li04LiVCivguKrguJbguLTguJXguJnguKjguLLguKrguJXguKPguYwKK+C4quC4luC4tOC4leC4tAor4Liq4LiW4Li44LilCivguKrguJbguLnguJsKK+C4quC4l+C4suC4owor4Liq4LiX4Li24LiHCivguKrguJfguLjguKEKK+C4quC4mOC4mQor4Liq4LiY4Li44Liq4LiwCivguKrguJkKK+C4quC5ieC4mQor4Liq4LiZ4LmA4LiU4LiBCivguKrguJnguJfguJnguLIKK+C4quC4meC4l+C4o+C4o+C4qAor4Liq4LiZ4LiX4Lij4Lij4Lio4LiZ4LmMCivguKrguJnguJfguLTguKgKK+C4quC4meC5gOC4l+C4qAor4Liq4LiZ4LmA4LiX4LmI4Lir4LmMCivguKrguJnguJjguKLguLIKK+C4quC4meC4mOC4tAor4Liq4LiZ4LiY4Li04Lit4Lil4LiH4LiB4LiVCivguKrguJnguJnguKPguLLguITguLIKK+C4quC4meC4oQor4Liq4LiZ4Lin4LiZCivguKrguJnguKrguKPguYnguK3guKIKK+C4quC4meC4reC4hwor4Liq4LiZ4Lit4LiaCivguKrguJnguK3guKEKK+C4quC4meC4sAor4Liq4LiZ4Lix4LiUCivguKrguJnguLHguYjguJkKK+C4quC4meC4seC4mgor4Liq4LiZ4Lix4Lia4Liq4LiZ4Li44LiZCivguKrguJnguLLguJTguIEKK+C4quC4meC4suC4mQor4Liq4LiZ4Liy4Lia4LiBCivguKrguJnguLLguJrguLHguJkKK+C4quC4meC4suC4oQor4Liq4LiZ4Liy4Lii4Li4CivguKrguJnguLTguIEKK+C4quC4meC4tOC4lwor4Liq4LiZ4Li04LiYCivguKrguJnguLTguKEKK+C4quC4meC4tOC4oeC4quC4o+C5ieC4reC4ogor4Liq4LiZ4Li44LiBCivguKrguJnguLjguIHguYDguIHguK3guKPguYwKK+C4quC4meC4uOC4ggor4Liq4LiZ4Li44LiVCivguKrguJnguLjguYjguJkKK+C4quC4mgor4Liq4Lia4LiHCivguKrguJrguIgKK+C4quC4muC4lgor4Liq4Lia4LmA4Liq4Li14LiiCivguKrguJrguLHguJkKK+C4quC4muC4suC4ogor4Liq4Lia4Li54LmICivguKrguYTguJoKK+C4quC4m+C4o+C4tOC4hwor4Liq4Lib4Liy4LmA4LiB4LiV4LiV4Li1CivguKrguJvguLLguKIKK+C4quC4m+C4tOC4o+C4tOC4lQor4Liq4LmA4Lib4LiB4LiV4Lij4Lix4LihCivguKrguYDguJvguIHguYLguJfguKPguKrguYLguITguJsKK+C4quC5hOC4m+C4o+C4tOC4peC4peC4seC4oQor4Liq4Lie4Lix4LmJ4LiZCivguKrguJ7guLLguJoKK+C4quC4oOC4seC4h+C4hOC4oeC4k+C4keC4pQor4Liq4Lig4LiyCivguKrguKDguLLguIQKK+C4quC4oOC4suC4ngor4Liq4Lig4Liy4Lin4LiwCivguKrguKEKK+C4quC5ieC4oQor4Liq4Lih4LiB4Liy4LijCivguKrguKHguIjguLLguKPguLUKK+C4quC4oeC4iuC4teC4p+C4tOC4leC4sgor4Liq4Lih4LiK4Li14Lin4Li04LiY4Lij4Lij4LihCivguKrguKHguI3guLIKK+C4quC4oeC5gOC4jeC4qAor4Liq4Lih4LiT4LiwCivguKrguKHguJTguLbguIfguKrguYwKK+C4quC4oeC4lOC4uOC4pQor4Liq4Lih4LmA4LiU4LmH4LiICivguKrguKHguJbguLAKK+C4quC4oeC4meC4suC4hOC4uOC4kwor4Liq4Lih4Lia4Lix4LiV4Li0CivguKrguKHguJrguLjguIHguKrguKHguJrguLHguJkKK+C4quC4oeC4muC4ueC4o+C4k+C5jAor4Liq4Lih4Lia4Li54Lij4LiT4Liy4LiN4Liy4Liq4Li04LiX4LiY4Li04Lij4Liy4LiK4Lii4LmMCivguKrguKHguJvguKPguLDguJTguLUKK+C4quC4oeC4m+C4pOC4lOC4tQor4Liq4Lih4Lib4Lik4LmF4LiU4Li1CivguKrguKHguJzguLjguKoKK+C4quC4oeC4nuC4h+C4qOC5jAor4Liq4Lih4Lie4LilCivguKrguKHguJ7guLHguIHguJnguLHguIHguIHguLLguKMKK+C4quC4oeC4nuC4seC4leC4quC4owor4Liq4Lih4Lie4Liy4LiqCivguKrguKHguYDguJ7guIoKK+C4quC4oeC5guC4nuC4mOC4meC5jAor4Liq4Lih4LmC4Lie4LiY4Li0CivguKrguKHguKDguJ4KK+C4quC4oeC4oOC4suC4owor4Liq4Lih4LmC4Lig4LiECivguKrguKHguYLguKDguIoKK+C4quC4oeC4oeC4lQor4Liq4Lih4Lih4LiV4Li0CivguKrguKHguKHguLLguJXguKMKK+C4quC4oeC4oeC4uOC4leC4tAor4Liq4Lih4Lih4Li54LilCivguKrguKHguYLguKHguJcKK+C4quC4oeC5guC4ouC4hAor4Liq4Lih4LijCivguKrguKHguKPguJQKK+C4quC4oeC4o+C4o+C4lgor4Liq4Lih4Lij4LiqCivguKrguKHguKTguJTguLUKK+C4quC4oeC4pOC4leC4tAor4Liq4Lih4Lik4LmF4LiU4Li1CivguKrguKHguKfguLHguKIKK+C4quC4oeC4p+C4suC4ouC4sAor4Liq4Lih4LmA4Liq4Lij4LmH4LiICivguKrguKHguK0KK+C4quC4oeC4reC4hwor4Liq4Lih4Lit4Liq4Liz4LmA4Lig4LiyCivguKrguKHguLHguIQKK+C4quC4oeC4seC4hOC4owor4Liq4Lih4Lix4LiH4LiE4Li1CivguKrguKHguLHguIoKK+C4quC4oeC4seC4iuC4iuC4sgor4Liq4Lih4Lix4LiVCivguKrguKHguLHguJkKK+C4quC4oeC4seC4meC4leC5jAor4Liq4Lih4Lix4LiiCivguKrguKHguLIKK+C4quC4oeC4suC4hOC4oQor4Liq4Lih4Liy4LiI4Liy4LijCivguKrguKHguLLguIrguLTguIEKK+C4quC4oeC4suC4l+C4suC4mQor4Liq4Lih4Liy4LiY4Li0CivguKrguKHguLLguJkKK+C4quC4oeC4suC4meC4seC4leC4leC4sgor4Liq4Lih4Liy4LmC4LiZ4LiV4Lih4LmMCivguKrguKHguLLguJrguLHguJXguLQKK+C4quC4oeC4suC4nuC4seC4meC4mOC4o+C4seC4kAor4Liq4Lih4Liy4LiqCivguKrguKHguYjguLPguYDguKrguKHguK0KK+C4quC4oeC4tOC4hwor4Liq4Lih4Li04LiH4LiX4Lit4LiHCivguKrguKHguLTguJUKK+C4quC4oeC4tOC4leC4tAor4Liq4Lih4Li04LiX4LiY4LmMCivguKrguKHguLTguJfguJjguLQKK+C4quC4oeC4tQor4Liq4Lih4Li14LibCivguKrguKHguLXguKMKK+C4quC4oeC4uOC4gQor4Liq4Lih4Li44LiI4LiI4Lix4LiiCivguKrguKHguLjguIjguYDguInguJcKK+C4quC4oeC4uOC4j+C4kOC4suC4mQor4Liq4Lih4Li44LiUCivguKrguKHguLjguJXguJbguLLguJkKK+C4quC4oeC4uOC4l+C4owor4Liq4Lih4Li44LiX4Lij4LiBCivguKrguKHguLjguJfguLHguKIKK+C4quC4oeC4uOC4l+C4tOC4lQor4Liq4Lih4Li44LiZCivguKrguKHguLjguJnguYTguJ7guKMKK+C4quC4oeC4uOC4peC5geC4p+C5ieC4hwor4Liq4Lih4Li44Lir4LmMCivguKrguYLguKHguJjguLLguJkKK+C4quC5guC4oeC4quC4owor4Liq4Lii4LiUCivguKrguKLguJnguLAKK+C4quC4ouC4mgor4Liq4Lii4Lih4Lie4LijCivguKrguKLguKHguKDguLkKK+C4quC4ouC4reC4hwor4Liq4Lii4Lit4LiZCivguKrguKLguLHguKHguJ7guKMKK+C4quC4ouC4seC4oeC4p+C4o+C4sgor4Liq4Lii4Liy4LihCivguKrguKLguLLguKIKK+C4quC4ouC4tOC4pwor4Liq4Lii4Li04LmJ4LinCivguKrguKLguLjguYjguJkKK+C4quC4ouC4uOC4oeC4nuC4owor4Liq4Lii4Li44Lih4Lig4Li5CivguKrguKMKK+C4quC4o+C4gQor4Liq4Lij4LiHCivguKrguKPguYjguIcKK+C4quC4o+C4j+C4sAor4Liq4Lij4LiT4LiwCivguKrguKPguJTguLHguIEKK+C4quC4o+C4lOC4tuC5iOC4mQor4Liq4Lij4LiU4Li34LmI4LiZCivguKrguKPguJXguLAKK+C4quC4o+C4leC4seC4gQor4Liq4Lij4LiX4LiwCivguKrguKPguJfguLbguIcKK+C4quC4o+C5geC4l+C4mgor4Liq4Lij4LiZ4Li44LiBCivguKrguKPguYDguJnguLLguLAKK+C4quC4o+C5hOC4mQor4Liq4Lij4LiaCivguKrguKPguJrguJoKK+C4quC4o+C4muC4seC4mgor4Liq4Lij4LieCivguKrguKPguYDguJ7guIrguI0KK+C4quC4o+C4oOC4sAor4Liq4Lij4Lig4Lix4LiN4LiN4LiwCivguKrguKPguKDguLkKK+C4quC4o+C4oQor4Liq4Lij4LijCivguKrguKPguKPguITguYwKK+C4quC4o+C4o+C4ngor4Liq4Lij4Lij4Lie4Lix4LiK4LiNCivguKrguKPguKPguYDguJ7guIrguI0KK+C4quC4o+C4o+C5gOC4nuC4iuC4uOC4lOC4sgor4Liq4Lij4Lij4Lin4LiHCivguKrguKPguKPguYDguKrguKPguLTguI0KK+C4quC4o+C4peC4mQor4Liq4Lij4Lil4LihCivguKrguKPguKXguKHguKrguKXguKfguJkKK+C4quC4o+C4peC4reC4lAor4Liq4Lij4Lil4Lit4LiZCivguKrguKPguKXguLAKK+C4quC4o+C4peC5ieC4suC4ogor4Liq4Lij4Lil4Li04LiUCivguKrguKPguYDguKXguIIKK+C4quC4o+C4p+C4hwor4Liq4Lij4Lin4LibCivguKrguKPguKfguKEKK+C4quC4o+C4p+C4pQor4Liq4Lij4Lin4Lil4LmA4LiqCivguKrguKPguKfguKXguYDguKrguYDguK7guK7guLIKK+C4quC4o+C5gOC4quC4o+C4tOC4jQor4Liq4Lij4LmJ4Lit4LiiCivguKrguKPguYnguK3guKLguJfguLDguYHguKIKK+C4quC4o+C4sAor4Liq4Lij4Liw4LiB4LitCivguKrguKPguLDguITguKPguLLguI0KK+C4quC4o+C4sOC4lOC4sAor4Liq4Lij4Liw4LiX4LmJ4Lit4LiZCivguKrguKPguLDguJ7guKPguLHguYjguIcKK+C4quC4o+C4sOC4reC4suC4lAor4Liq4Lij4Liw4Lit4Li34LmJ4LiZCivguKrguKPguLHguYjguIcKK+C4quC4o+C4seC4quC4p+C4lOC4tQor4Liq4Lij4LmI4Liy4LiHCivguKrguKPguYnguLLguIcKK+C4quC4o+C4suC4jQor4Liq4Lij4LmJ4Liy4Lin4LmA4Liq4Li14Lii4LinCivguKrguKPguLTguJUKK+C4quC4o+C4teC5iQor4Liq4Lij4Li14Lij4LiwCivguKrguKPguLXguKrguKTguJoKK+C4quC4o+C4uOC4gQor4Liq4Lij4Li44LiHCivguKrguKPguLjguYLguJnguIEKK+C4quC4o+C4uOC4mwor4Liq4Lij4Li44Liq4Lij4LiwCivguKrguKPguLnguJsKK+C4quC5guC4o+C4igor4Liq4Lik4LiBCivguKrguKTguITguLLguKUKK+C4quC4pOC4lQor4Liq4Lik4Lip4LiO4LmMCivguKrguKTguKnguI7guLUKK+C4quC4pQor4Liq4Lil4LiUCivguKrguKXguJoKK+C4quC4peC4p+C4mQor4Liq4Lil4Lin4LiiCivguKrguKXguK3guJQKK+C4quC4peC4reC4mQor4Liq4Lil4Lit4LiiCivguKrguKXguLAKK+C4quC4peC4sOC4quC4peC4p+C4ogor4Liq4Lil4Lix4LiBCivguKrguKXguLHguIHguYDguJXguYkKK+C4quC4peC4seC4geC4quC4s+C4hOC4seC4jQor4Liq4Lil4Lix4LiUCivguKrguKXguLHguJTguYTguJQKK+C4quC4peC4seC4mgor4Liq4Lil4Lix4LihCivguKrguKXguLHguKcKK+C4quC4peC4sgor4Liq4Lil4Liy4LiBCivguKrguKXguLLguIHguLIKK+C4quC4peC4suC4hwor4Liq4Lil4LmJ4Liy4LiHCivguKrguKXguLLguJQKK+C4quC4peC4suC4leC4seC4mQor4Liq4Lil4Liy4LiaCivguKrguKXguLLguKEKK+C4quC4peC4suC4ogor4Liq4Lil4Li04LiUCivguKrguKXguLTguKUKK+C4quC4peC4tuC4gQor4Liq4Lil4Li24LiHCivguKrguKXguLjguJUKK+C4quC4peC4uOC4mgor4Liq4Lil4Li44Lih4Lie4LijCivguKrguYHguKXguIcKK+C4quC5guC4peC4lAor4Liq4LmE4Lil4LiU4LmMCivguKrguKfguIEKK+C4quC5ieC4p+C4hwor4Liq4Lin4LiUCivguKrguKfguJkKK+C4quC5iOC4p+C4mQor4Liq4Lin4LiZ4LiwCivguKrguKfguJnguLTguJUKK+C4quC4p+C4mgor4Liq4Lin4LihCivguKrguYnguKfguKEKK+C4quC4p+C4ogor4Liq4LmI4Lin4LiiCivguKrguYnguKfguKIKK+C4quC4p+C4ouC4oQor4Liq4Lin4LijCivguKrguKfguKPguKPguITguYwKK+C4quC4p+C4o+C4o+C4ouC4sgor4Liq4Lin4LiwCivguKrguKfguLHguKrguJTguLTguYwKK+C4quC4p+C4seC4quC4lOC4tQor4Liq4Lin4Lix4Liq4LiV4Li04LiB4LiwCivguKrguKfguLIKK+C4quC4p+C4suC4hOC4lQor4Liq4Lin4Liy4LiHCivguKrguKfguYjguLLguIcKK+C4quC4p+C4suC4lAor4Liq4Lin4Liy4LiU4Li0CivguKrguKfguLLguJcKK+C4quC4p+C4suC4mQor4Liq4Lin4LmI4Liy4LiZCivguKrguKfguYnguLLguJkKK+C4quC4p+C4suC4mgor4Liq4Lin4Liy4Lih4Li0CivguKrguKfguLLguKHguLUKK+C4quC4p+C4suC4ogor4Liq4Lin4Liy4Liq4LiU4Li04LmMCivguKrguKfguLLguKvguLAKK+C4quC4p+C4tOC4hwor4Liq4Lin4Li04LiH4Liq4Lin4Liy4LiiCivguKrguKfguLTguI3guI3guLLguJPguIHguJfguKPguLHguJ7guKLguYwKK+C4quC4p+C4tOC4leC4i+C5jAor4Liq4Liq4Liy4LijCivguKrguKrguLjguKPguLAKK+C4quC4quC4uOC4o+C4tQor4Liq4Lir4Lix4Lih4Lia4LiU4Li1CivguKrguKvguLHguKrguKPguLHguIfguKrguLUKK+C4quC4q+C4seC4quC4quC4sAor4Liq4Lir4Lix4Liq4LiyCivguKrguK0KK+C4quC5iOC4rQor4Liq4Lit4LiHCivguKrguYjguK3guIcKK+C4quC5ieC4reC4hwor4Liq4Lit4LiUCivguKrguK3guJkKK+C4quC5iOC4reC4mQor4Liq4Lit4LiaCivguKrguK3guJ7guKXguK0KK+C4quC5ieC4reC4oQor4Liq4Lit4LiiCivguKrguYjguK3guYDguKrguLXguKLguJQKK+C4quC4sAor4Liq4Liw4LiB4LiUCivguKrguLDguIHguK0KK+C4quC4sOC4geC4suC4hwor4Liq4Liw4LiB4Liy4Lij4LiwCivguKrguLDguIHguLLguKPguLDguJXguLLguKvguKPguLIKK+C4quC4sOC4geC4tOC4lAor4Liq4Liw4LmA4LiB4LmH4LiUCivguKrguLDguYHguIEKK+C4quC4sOC4hOC4o+C5ieC4rQor4Liq4Liw4LiE4Lij4Liy4LiNCivguKrguLDguITguYnguLLguJkKK+C4quC4sOC5gOC4h+C4suC4sOC4quC4sOC5geC4h+C4sAor4Liq4Liw4LmD4LiICivguKrguLDguJTguKEKK+C4quC4sOC4lOC4p+C4gQor4Liq4Liw4LiU4Lix4LiBCivguKrguLDguJTguLTguYnguIcKK+C4quC4sOC4lOC4tuC4hwor4Liq4Liw4LiU4Li34LitCivguKrguLDguJTguLjguYnguIcKK+C4quC4sOC4lOC4uOC4lAor4Liq4Liw4LmA4LiU4LmH4LiUCivguKrguLDguYDguJTguLIKK+C4quC4sOC5gOC4lOC4suC4sAor4Liq4Liw4LiV4LitCivguKrguLDguJXguLLguKvguKHguLHguJkKK+C4quC4sOC4leC4tgor4Liq4Liw4LiV4Li34LitCivguKrguLDguJXguLgKK+C4quC4sOC5gOC4leC5iuC4sAor4Liq4Liw4LmC4LiV4LiBCivguKrguLDguJfguIEKK+C4quC4sOC4l+C4mQor4Liq4Liw4LiX4LmJ4Lit4LiZCivguKrguLDguJfguYnguLLguJkKK+C4quC4sOC4l+C4tuC4gQor4Liq4Liw4LiX4Li24LiZCivguKrguLDguJfguLbguYjguJkKK+C4quC4sOC5gOC4l+C4tOC4mQor4Liq4Liw4LmA4LiX4Li04LmJ4LiZCivguKrguLDguYDguJfguLfguK3guJkKK+C4quC4sOC5gOC4l+C4t+C5ieC4reC4mQor4Liq4Liw4Lia4LiwCivguKrguLDguJrguLHguIEKK+C4quC4sOC4muC4seC4lAor4Liq4Liw4Lia4Lix4LmJ4LiZCivguKrguLDguJrguLHguJnguIfguLIKK+C4quC4sOC4muC4seC4meC4h+C4suC4leC5ieC4mQor4Liq4Liw4Lia4LmJ4LiyCivguKrguLDguJrguLkKK+C4quC4sOC5geC4muC4hwor4Liq4Liw4LmA4Lib4Liw4Liq4Liw4Lib4LiwCivguKrguLDguJ7guKPguLHguIEKK+C4quC4sOC4nuC4o+C4seC5iOC4hwor4Liq4Liw4Lie4Lij4Li24LiH4LiB4Lil4Lix4LinCivguKrguLDguJ7guKPguLbguJoKK+C4quC4sOC4nuC4seC4gQor4Liq4Liw4Lie4Lix4LiHCivguKrguLDguJ7guLHguJQKK+C4quC4sOC4nuC4seC5ieC4mQor4Liq4Liw4Lie4Liy4LiZCivguKrguLDguJ7guLLguKIKK+C4quC4sOC5gOC4nuC4o+C5iOC4sgor4Liq4Liw4LmC4Lie4LiBCivguKrguLDguYDguKDguLIKK+C4quC4sOC5g+C4oOC5iQor4Liq4Liw4LmC4Lih4LiHCivguKrguLDguKPguLDguJXguLAKK+C4quC4sOC4o+C4sOC5geC4q+C4meC5iAor4Liq4Liw4Lij4Li14LiV4Lie4LiH4Lio4LmMCivguKrguLDguKXguLDguJvguLDguJXguLjguYjguJkKK+C4quC4sOC4peC4suC4hwor4Liq4Liw4Lil4Li24Lih4Liq4Liw4Lil4Li34LitCivguKrguLDguKfguLXguYnguJTguKrguLDguKfguYnguLLguJQKK+C4quC4sOC4quC4oQor4Liq4Liw4Liq4Liy4LiHCivguKrguLDguK3guLLguIcKK+C4quC4sOC4reC4suC4lAor4Liq4Liw4Lit4LmJ4Liy4LiZCivguKrguLDguK3guLTguYnguIcKK+C4quC4sOC4reC4tOC4lOC4quC4sOC5gOC4reC4teC4ouC4mQor4Liq4Liw4Lit4Li24LiBCivguKrguLDguK3guLfguYnguJkKK+C4quC4sOC5gOC4reC4pwor4Liq4Liw4LmA4Lit4Lit4LiwCivguKrguLDguYLguK3guJTguKrguLDguK3guIcKK+C4quC4sOC5hOC4rQor4Liq4Lix4LiBCivguKrguLHguIHguIHguLAKK+C4quC4seC4geC4geC4seC4iOC4iOC4sAor4Liq4Lix4LiB4LiB4Liy4Lij4LiwCivguKrguLHguIHguILguKPguLIKK+C4quC4seC4geC4guC4tQor4Liq4Lix4LiB4LiP4LiwCivguKrguLHguIHguJXguLAKK+C4quC4seC4geC4ouC4sAor4Liq4Lix4LiB4Lin4LiyCivguKrguLHguIHguKvguKXguLLguJQKK+C4quC4seC4guC4ouC4sAor4Liq4Lix4LiECivguKrguLHguITguITguLAKK+C4quC4seC5iOC4hwor4Liq4Lix4LiH4LiB4Lih4LiX4Lij4Lix4Lie4Lii4LmMCivguKrguLHguIfguIHguKMKK+C4quC4seC4h+C4geC4sOC4leC4seC4hwor4Liq4Lix4LiH4LiB4Liw4Lin4Lix4LiHCivguKrguLHguIfguIHguLDguKfguLLguJQKK+C4quC4seC4h+C4geC4sOC4quC4tQor4Liq4Lix4LiH4LiB4Lix4LiUCivguKrguLHguIfguIHguLHguJvguJvguLAKK+C4quC4seC4h+C4geC4sgor4Liq4Lix4LiH4LiB4Liy4LijCivguKrguLHguIfguIHguLLguKgKK+C4quC4seC4h+C4geC4tOC5gOC4peC4qgor4Liq4Lix4LiH4LmA4LiB4LiVCivguKrguLHguIfguILguYwKK+C4quC4seC4h+C4guC4leC4sAor4Liq4Lix4LiH4LiC4Lii4LiyCivguKrguLHguIfguILguKXguLTguIEKK+C4quC4seC4h+C4guC4peC4tOC4geC4sgor4Liq4Lix4LiH4LiC4Lin4Liy4LiZ4LijCivguKrguLHguIfguILguLLguKMKK+C4quC4seC4h+C4guC4suC4o+C4l+C4uOC4geC4guC5jAor4Liq4Lix4LiH4LiC4Liy4Lij4LiY4Lij4Lij4LihCivguKrguLHguIfguILguLLguKPguYLguKXguIEKK+C4quC4seC4h+C4guC4suC4o+C4reC4uOC5gOC4muC4geC4guC4sgor4Liq4Lix4LiH4LmA4LiC4LibCivguKrguLHguIfguYLguILguKAKK+C4quC4seC4h+C4hOC5jAor4Liq4Lix4LiH4LiE4LihCivguKrguLHguIfguITguKHguJnguLTguKLguKEKK+C4quC4seC4h+C4hOC4oeC4p+C4tOC4l+C4ouC4sgor4Liq4Lix4LiH4LiE4Lih4Lio4Liy4Liq4LiV4Lij4LmMCivguKrguLHguIfguITguKHguKjguLbguIHguKnguLIKK+C4quC4seC4h+C4hOC4oeC4quC4h+C5gOC4hOC4o+C4suC4sOC4q+C5jAor4Liq4Lix4LiH4LiE4Lir4LiwCivguKrguLHguIfguITguLHguIcKK+C4quC4seC4h+C4hOC4suC4leC4sgor4Liq4Lix4LiH4LiE4Liy4Lii4LiZ4LiyCivguKrguLHguIfguITguLLguKLguJnguLLguKIKK+C4quC4seC4h+C4hOC4teC4lQor4Liq4Lix4LiH4LiE4Li14LiV4Li0CivguKrguLHguIfguYDguITguYfguJQKK+C4quC4seC4h+C5gOC4hOC4o+C4suC4sOC4q+C5jAor4Liq4Lix4LiH4LiG4Liy4LiP4Li0CivguKrguLHguIfguJTguLHguIEKK+C4quC4seC4h+C4m+C4sOC4leC4tOC5gOC4q+C4h+C4sAor4Liq4Lix4LiH4Lib4Liw4Lil4Li04LmA4Lir4LiH4LiwCivguKrguLHguIfguYLguKLguIQKK+C4quC4seC4h+C5guC4ouC4iuC4meC5jAor4Liq4Lix4LiH4Lin4LijCivguKrguLHguIfguKfguLHguIjguInguKPguLAKK+C4quC4seC4h+C4p+C4seC4mOC4ouC4suC4ogor4Liq4Lix4LiH4Lin4Liy4LilCivguKrguLHguIfguKfguLLguKoKK+C4quC4seC4h+C5gOC4p+C4igor4Liq4Lix4LiH4LmA4Lin4LiiCivguKrguLHguIfguYDguKfguLXguKLguJkKK+C4quC4seC4h+C4quC4geC4pOC4lQor4Liq4Lix4LiH4Liq4LiB4Liy4LijCivguKrguLHguIfguKrguJTguKHguKDguYwKK+C4quC4seC4h+C4quC4meC4l+C4meC4sgor4Liq4Lix4LmI4LiH4Liq4LiZ4LiX4LiZ4LiyCivguKrguLHguIfguKrguKPguKPguITguYwKK+C4quC4seC4h+C4quC4suC4o+C4p+C4seC4jwor4Liq4Lix4LiH4Liq4Li04LiX4LiY4Li0CivguKrguLHguIfguKrguLjguJfguJjguYwKK+C4quC4seC4h+C4quC4uOC4l+C4mOC4tAor4Liq4Lix4LiH4Lir4LijCivguKrguLHguIfguKvguKPguJPguYwKK+C4quC4seC4h+C4q+C4o+C4o+C4qQor4Liq4Lix4LiH4Lir4Liy4LijCivguKrguLHguIfguKvguLLguKPguLTguKHguJfguKPguLHguJ7guKLguYwKK+C4quC4seC4h+C4q+C4suC4o+C4tOC4oeC4sAor4Liq4Lix4LiH4Lir4Li04LiVCivguKrguLHguIgKK+C4quC4seC4iOC4iOC4sAor4Liq4Lix4LiI4LiI4LiyCivguKrguLHguIrguIzguLAKK+C4quC4seC4iuC4jOC4suC4ouC4sAor4Liq4Lix4LiK4LiM4Li4CivguKrguLHguI3guIjguKMKK+C4quC4seC4jeC4iOC4suC4owor4Liq4Lix4LiN4LmA4LiI4LiV4LiZ4LiyCivguKrguLHguI3guIrguLLguJXguI3guLLguJMKK+C4quC4seC4jeC4iuC4suC4leC4quC4o+C4sAor4Liq4Lix4LiN4LiK4Liy4LiV4Li0CivguKrguLHguI3guIrguLXguJ7guJnguKPguIEKK+C4quC4seC4jeC4jOC4sgor4Liq4Lix4LiN4LiN4LiyCivguKrguLHguI3guI3guLLguJMKK+C4quC4seC4jeC4jeC4tQor4Liq4Lix4LiN4LmC4LiN4LiK4LiZ4LmMCivguKrguLHguI3guYLguKLguIQKK+C4quC4seC4jeC4peC4seC4geC4qeC4k+C5jAor4Liq4Lix4LiQ4Li0CivguKrguLHguJPguJDguLLguJkKK+C4quC4seC4k+C4kOC4tOC4leC4tAor4Liq4Lix4LiT4LiR4LmMCivguKrguLHguJPguKvguYwKK+C4quC4seC4lAor4Liq4Lix4LiU4LiI4Lit4LiHCivguKrguLHguJUKK+C4quC4seC4leC4leC4muC4h+C4geC4igor4Liq4Lix4LiV4LiV4Lia4Lij4Lij4LiTCivguKrguLHguJXguJXguJrguLjguKnguKLguYwKK+C4quC4seC4leC4leC4p+C4k+C4tOC4iuC4iuC4sgor4Liq4Lix4LiV4LiV4LiwCivguKrguLHguJXguJXguLkKK+C4quC4seC4leC4lgor4Liq4Lix4LiV4LiW4Lix4LiZ4LiU4LijCivguKrguLHguJXguJbguLIKK+C4quC4seC4leC4luC4tAor4Liq4Lix4LiV4LiW4Li4CivguKrguLHguJXguJrguKPguKPguJMKK+C4quC4seC4leC4muC4o+C4tOC4oOC4seC4k+C4keC5jAor4Liq4Lix4LiV4Lii4LmMCivguKrguLHguJXguKfguYwKK+C4quC4seC4leC4p+C4sgor4Liq4Lix4LiX4LiY4Lij4Lij4LihCivguKrguLHguJfguJjguLIKK+C4quC4seC4l+C4mOC4tOC4h+C4p+C4tOC4q+C4suC4o+C4tOC4gQor4Liq4Lix4LiX4LiY4Li04Lin4Li04Lir4Liy4Lij4Li04LiBCivguKrguLHguJfguKjguLLguKrguJXguKPguYwKK+C4quC4seC4mQor4Liq4Lix4LmI4LiZCivguKrguLHguYnguJkKK+C4quC4seC4meC4lOC4suC4mQor4Liq4Lix4LiZ4LiU4Liy4LibCivguKrguLHguJnguJTguLjguKnguI7guLUKK+C4quC4seC4meC5gOC4lOC4gQor4Liq4Lix4LiZ4LmC4LiU4LipCivguKrguLHguJnguJXguYwKK+C4quC4seC4meC4leC4leC4tAor4Liq4Lix4LiZ4LiV4Liw4Lib4Liy4Lib4LiyCivguKrguLHguJnguJXguLDguYLguKMKK+C4quC4seC4meC4leC4sOC4p+C4sgor4Liq4Lix4LiZ4LiV4Li0CivguKrguLHguJnguJXguLTguIHguLAKK+C4quC4seC4meC4leC4tOC5gOC4geC4meC4tOC4l+C4suC4mQor4Liq4Lix4LiZ4LiV4Li44LiP4LiQ4Li1CivguKrguLHguJnguJbguKPguLAKK+C4quC4seC4meC4luC4p+C4sAor4Liq4Lix4LiZ4LiW4Lix4LiVCivguKrguLHguJnguJbguLLguKMKK+C4quC4seC4meC4l+C4meC4sAor4Liq4Lix4LiZ4LiX4LiZ4Liy4LiB4Liy4LijCivguKrguLHguJnguJfguLAKK+C4quC4seC4meC4l+C4seC4lAor4Liq4Lix4LiZ4LiX4Lix4Liq4LiZ4LiwCivguKrguLHguJnguJfguLLguJkKK+C4quC4seC4meC4l+C4tOC4kOC4tAor4Liq4Lix4LiZ4LiX4Li04LiqCivguKrguLHguJnguYDguJfguKoKK+C4quC4seC4meC5gOC4l+C4qwor4Liq4Lix4LiZ4LmA4LiX4LmI4Lir4LmMCivguKrguLHguJnguJjguLLguJkKK+C4quC4seC4meC4meC4tOC4mOC4tAor4Liq4Lix4LiZ4LiZ4Li04Lia4Liy4LiVCivguKrguLHguJnguJnguLTguKfguLLguKoKK+C4quC4seC4meC4meC4tOC5gOC4p+C4qgor4Liq4Lix4LiZ4LiZ4Li04Lip4LiQ4Liy4LiZCivguKrguLHguJnguJ7guKPguYnguLLguJnguLLguIfguYHguK0KK+C4quC4seC4meC4nuC4o+C5ieC4suC4oeC4reC4jQor4Liq4Lix4LiZ4Lie4Lij4LmJ4Liy4Lir4Lit4LihCivguKrguLHguJnguKPguKfguIcKK+C4quC4seC4meC4peC4tuC4gQor4Liq4Lix4LiZ4Liq4LiB4Lik4LiVCivguKrguLHguJoKK+C4quC4seC4muC4m+C4peC4seC4mgor4Liq4Lix4Lia4Lib4Lil4Li14LmJCivguKrguLHguJrguJvguLDguKPguLHguIfguYDguIQKK+C4quC4seC4muC4m+C4suC4gQor4Liq4Lix4Lib4LiE4Lix4LiaCivguKrguLHguJvguJTguJkKK+C4quC4seC4m+C5guC4lOC4gQor4Liq4Lix4Lib4LmC4LiU4LiB4Liq4Lix4Lib4LiU4LiZCivguKrguLHguJvguJfguJkKK+C4quC4seC4m+C4m+C4sAor4Liq4Lix4Lib4Lib4Liy4Lii4LiB4Liy4Lij4Li1CivguKrguLHguJvguJvguLQKK+C4quC4seC4m+C4m+C4uOC4o+C4uOC4qQor4Liq4Lix4Lib4Lij4Liw4Lii4Li44LiX4LiY4LmMCivguKrguLHguJvguKvguIfguIEKK+C4quC4seC4m+C5gOC4q+C4o+C5iOC4rQor4Liq4Lix4LieCivguKrguLHguJ7guJ7guLAKK+C4quC4seC4nuC4nuC4seC4jeC4jeC4uQor4Liq4Lix4Lie4LmA4Lie4Liq4Lix4LiV4LiV4LiyCivguKrguLHguJ7guYDguJ7guYDguKvguKPguLAKK+C4quC4seC4nuC4ouC4reC4gQor4Liq4Lix4Lif4Lix4LiZ4LiE4LiZ4LiX4LiyCivguKrguLHguKHguI3guI3guLIKK+C4quC4seC4oeC4muC4ueC4o+C4k+C5jAor4Liq4Lix4Lih4Lib4LiK4Lix4LiN4LiN4LiwCivguKrguLHguKHguJvguJfguLIKK+C4quC4seC4oeC4m+C4l+C4suC4mQor4Liq4Lix4Lih4Lib4Lii4Li44LiVCivguKrguLHguKHguJvguYLguKLguIQKK+C4quC4seC4oeC4m+C4o+C4sOC4quC4tOC4l+C4mOC4tOC5jAor4Liq4Lix4Lih4Lib4Lij4Liw4Lir4Liy4LijCivguKrguLHguKHguJvguKPguLLguKLguKDguJ4KK+C4quC4seC4oeC4m+C4o+C4suC4ouC4tOC4geC4oOC4ngor4Liq4Lix4Lih4Lib4Lix4LiV4LiV4Li0CivguKrguLHguKHguJzguLHguJvguKXguLLguJsKK+C4quC4seC4oeC4nOC4seC4qgor4Liq4Lix4Lih4Lie4LilCivguKrguLHguKHguJ7guKvguLjguKXguLIKK+C4quC4seC4oeC4nuC4seC4leC4quC4owor4Liq4Lix4Lih4Lie4Lix4LiX4LiY4LmMCivguKrguLHguKHguJ7guLHguJnguJjguYwKK+C4quC4seC4oeC4nuC4seC4meC4mOC4meC5jAor4Liq4Lix4Lih4Lie4Liy4LiY4LiwCivguKrguLHguKHguJ7guLLguKPguLAKK+C4quC4seC4oeC4nuC4suC4q+C4meC5jAor4Liq4Lix4Lih4Lie4Liy4Lir4LiwCivguKrguLHguKHguJ7guLjguJfguJjguLAKK+C4quC4seC4oeC5guC4nuC4mOC4tAor4Liq4Lix4Lih4Lig4Lin4LiwCivguKrguLHguKHguKDguYDguKfguKrguLUKK+C4quC4seC4oeC4oOC4seC4lQor4Liq4Lix4Lih4Lig4Lix4LiV4LiV4LiwCivguKrguLHguKHguKDguLLguKnguJPguYwKK+C4quC4seC4oeC5gOC4oOC4l+C4sAor4Liq4Lix4Lih4LmC4Lig4LiE4LiB4Liy4LiiCivguKrguLHguKHguKHguJnguLIKK+C4quC4seC4oeC4oeC4seC4m+C4mOC4suC4mQor4Liq4Lix4Lih4Lih4LiyCivguKrguLHguKHguYLguKHguJfguJnguLXguKLguIHguJbguLIKK+C4quC4seC4oeC4pOC4l+C4mOC4tAor4Liq4Lix4Lih4Lik4LiX4LiY4Li04LmMCivguKrguLHguKLguJnguYwKK+C4quC4seC4peC4peC4sAor4Liq4Lix4Lil4Lil4Liy4LibCivguKrguLHguKrguJTguLUKK+C4quC4seC4quC4quC4sAor4Liq4Lix4Liq4Liq4Li4CivguKrguLHguKrguKrguLkKK+C4quC4seC4quC4uOC4o+C4tQor4Liq4LiyCivguKrguYjguLIKK+C4quC4suC4gQor4Liq4Liy4LiB4Lij4Lij4LiI4LmMCivguKrguLLguIHguKUKK+C4quC4suC4geC4qeC4tOC4mQor4Liq4Liy4LiB4Lip4Li1CivguKrguLLguIHguLHguIjguInguLIKK+C4quC4suC4geC4seC4peC4ouC5jAor4Liq4Liy4LiB4Li04Lii4LiwCivguKrguLLguYDguIEKK+C4quC4suC4guC4sgor4Liq4Liy4LiE4LijCivguKrguLLguITguYDguKPguKgKK+C4quC4suC4hOC4uQor4Liq4Liy4LiHCivguKrguLLguIfguKvguYjguLIKK+C4quC4suC4juC4gQor4Liq4Liy4LiT4Li1CivguKrguLLguJQKK+C4quC4suC4lQor4Liq4Liy4LiV4Lij4LiyCivguKrguLLguYTguJbguKIKK+C4quC4suC4l+C4owor4Liq4Liy4LiX4Li04LiqCivguKrguLLguJfguLgKK+C4quC4suC5guC4lwor4Liq4Liy4LiY4LiBCivguKrguLLguJjguJkKK+C4quC4suC4mOC4ouC4sAor4Liq4Liy4LiY4Lii4Liy4LiiCivguKrguLLguJjguLLguKPguJPguYwKK+C4quC4suC4mOC4suC4o+C4k+C4sAor4Liq4Liy4LiY4Li04LiVCivguKrguLLguJjguLgKK+C4quC4suC4mOC4uOC4quC4sAor4Liq4Liy4LiZCivguKrguLLguJnguJXguKfguLAKK+C4quC4suC4meC4uAor4Liq4Liy4LiZ4Li44Lio4Li04Lip4Lii4LmMCivguKrguLLguJnguLkKK+C4quC4suC4mgor4Liq4Liy4Lia4Liq4Li54LiNCivguKrguLLguJrguLLguJkKK+C4quC4suC4mwor4Liq4Liy4Lib4LmE4LiV4LiiCivguKrguLLguJvguKrguKPguKMKK+C4quC4suC4oQor4Liq4Liy4Lih4LiK4Li44LiBCivguKrguLLguKHguYDguJPguKMKK+C4quC4suC4oeC5gOC4k+C4o+C4tQor4Liq4Liy4Lih4LiZ4LiV4LmMCivguKrguLLguKHguKLguJfguKPguLHguJ7guKLguYwKK+C4quC4suC4oeC4o+C4qgor4Liq4Liy4Lih4LilCivguKrguLLguKHguKrguLTguJoKK+C4quC4suC4oeC4seC4hOC4hOC4tQor4Liq4Liy4Lih4Lix4LiNCivguKrguLLguKHguLHguJXguJbguLTguKLguLAKK+C4quC4suC4oeC4suC4meC4ouC5jAor4Liq4Liy4Lih4Liy4Lij4LiWCivguKrguLLguKHguLTguIEKK+C4quC4suC4oeC4tOC4lQor4Liq4Liy4Lih4Li04LiZ4Li1CivguKrguLLguKHguLTguKDguLHguIHguJTguLTguYwKK+C4quC4suC4oeC4tOC4qgor4Liq4Liy4Lih4Li1CivguKrguLLguKHguLXguIjguLTguIHguKPguKPguKEKK+C4quC4suC4ogor4Liq4LmI4Liy4LiiCivguKrguYnguLLguKIKK+C4quC4suC4ouC4iuC4uQor4Liq4Liy4Lii4LiV4LiyCivguKrguLLguKLguYDguKfguJfguKLguYwKK+C4quC4suC4ouC4seC4k+C4q+C5jAor4Liq4Liy4Lii4Liy4Lir4LmMCivguKrguLLguKMKK+C4quC4suC4o+C4geC4o+C4oeC4mOC4o+C4o+C4oeC5jAor4Liq4Liy4Lij4LiE4LiU4Li1CivguKrguLLguKPguYDguITguKHguLUKK+C4quC4suC4o+C4k+C4teC4ouC4mOC4o+C4o+C4oQor4Liq4Liy4Lij4LiV4Lij4LiyCivguKrguLLguKPguJbguLUKK+C4quC4suC4o+C4lwor4Liq4Liy4Lij4LiX4LiyCivguKrguLLguKPguJfguLTguKgKK+C4quC4suC4o+C4l+C4uOC4geC4guC5jAor4Liq4Liy4Lij4LiY4Lij4Lij4LihCivguKrguLLguKPguJnguLTguYDguJfguKgKK+C4quC4suC4o+C4muC4mgor4Liq4Liy4Lij4Lia4Lij4Lij4LiTCivguKrguLLguKPguJrguKPguLTguKrguLjguJfguJjguLTguYwKK+C4quC4suC4o+C4muC4seC4jQor4Liq4Liy4Lij4Lia4Lix4LiaCivguKrguYnguLLguKPguJrguLHguJoKK+C4quC4suC4o+C4muC4suC4jQor4Liq4Liy4Lij4Lib4Lij4Liw4LiB4Lit4LiaCivguKrguLLguKPguJvguKPguLDguYLguKLguIrguJnguYwKK+C4quC4suC4o+C4nuC4seC4lAor4Liq4Liy4Lij4Lie4Lix4LiZCivguKrguLLguKPguJ7guLLguIfguITguYwKK+C4quC4suC4o+C4oOC4suC4ngor4Liq4Liy4Lij4Lig4Li1CivguKrguLLguKPguYTguKHguKIKK+C4quC4suC4o+C4o+C4seC4gQor4Liq4Liy4Lij4Lil4Liw4Lil4Liy4LiiCivguKrguLLguKPguYDguKXguKcKK+C4quC4suC4o+C4p+C4seC4lAor4Liq4Liy4Lij4Lin4Lix4LiV4LijCivguKrguLLguKPguKrguYnguKEKK+C4quC4suC4o+C4q+C4meC4uQor4Liq4Liy4Lij4LiwCivguKrguLLguKPguLDguYLguIHguIEKK+C4quC4suC4o+C4sOC5gOC4mQor4Liq4Liy4Lij4Liw4Lie4LiyCivguKrguLLguKPguLDguJ7guLLguYDguK7guYLguKUKK+C4quC4suC4o+C4sOC4p+C4reC4mQor4Liq4Liy4Lij4Liw4Lin4Liy4Lij4Li1CivguKrguLLguKPguLDguKrguLDguKHguLIKK+C4quC4suC4o+C4sOC4quC4s+C4hOC4seC4jQor4Liq4Liy4Lij4Lix4LiV4LiW4LiwCivguKrguLLguKPguLHguJfguJjguYwKK+C4quC4suC4o+C4seC4oeC4oOC5jAor4Liq4Liy4Lij4Liy4LiT4Li14Lii4LiB4LijCivguKrguLLguKPguLLguJPguLXguKLguLAKK+C4quC4suC4o+C4suC4meC4uOC4geC4o+C4oQor4Liq4Liy4Lij4Li14Lij4Li04LiB4LiY4Liy4LiV4Li4CivguKrguLLguKPguLnguJsKK+C4quC4suC5guC4o+C4igor4Liq4Liy4Lil4LiwCivguKrguLLguKXguLDguKfguJkKK+C4quC4suC4peC4tAor4Liq4Liy4Lil4Li04LiB4LiyCivguKrguLLguKXguLTguJnguLUKK+C4quC4suC4peC4tQor4Liq4Liy4Lil4Li14LmICivguKrguLLguKXguLkKK+C4quC4suC5guC4peC4q+C4tOC4lQor4Liq4Liy4LinCivguKrguLLguKfguIEKK+C4quC4suC4p+C4geC4o+C4sOC4l+C4t+C4muC4q+C4rQor4Liq4Liy4Lin4LiZ4LmJ4Lit4Lii4LmA4Lil4LmI4LiZ4LiZ4LmJ4LizCivguKrguLLguKfguJnguLAKK+C4quC4suC4p+C4tOC4geC4sgor4Liq4Liy4Lin4Li04LiV4LijCivguKrguLLguKfguLTguJXguKPguLUKK+C4quC4suC4quC4meC5jAor4Liq4Liy4Liq4LiZ4LiyCivguKrguLLguKvguKPguYjguLLguKIKK+C4quC4suC4q+C4o+C4tQor4Liq4LmI4Liy4Lir4Lij4Li1CivguKrguLLguKvguLHguKoKK+C4quC4suC5gOC4q+C4leC4uAor4Liq4Liy4LmB4Lir4Lij4LiBCivguKrguLLguKzguLjguKPguLAKK+C4quC4swor4Liq4LmI4LizCivguKrguLPguITguLHguI0KK+C4quC4s+C4i+C5iOC4suC4hwor4Liq4Liz4LmB4LiU4LiHCivguKrguLPguJfguLHguJoKK+C4quC4s+C4meC4p+C4lAor4Liq4Liz4LiZ4Lin4LiZCivguKrguLPguJnguK3guIcKK+C4quC4s+C4meC4seC4gQor4Liq4Liz4LiZ4Liy4LiZCivguKrguLPguJnguLbguIcKK+C4quC4s+C5gOC4meC4sgor4Liq4Liz4LmA4LiZ4Li14Lii4LiHCivguKrguLPguYDguJnguLXguKLguJkKK+C4quC4s+C4muC4reC4gQor4Liq4Liz4Lia4Lix4LiU4Liq4Liz4LiZ4Lin4LiZCivguKrguLPguJvguLDguKXguK0KK+C4quC4s+C4m+C4sOC4q+C4peC4seC4hwor4Liq4Liz4Lib4Lix4LmJ4LiZCivguKrguLPguJvguLHguJnguJnguLUKK+C4quC4s+C5gOC4oOC4sgor4Liq4Liz4LmA4Lig4Liy4LiX4Lit4LiHCivguKrguLPguKHguLDguIfguLIKK+C4quC4s+C4oeC4sOC5guC4meC4hOC4o+C4seC4pwor4Liq4Liz4Lih4Liw4LmC4LiZ4Lib4Liw4LiK4Liy4LiB4LijCivguKrguLPguKHguLDguKXguK0KK+C4quC4s+C4oeC4sOC5gOC4peC5gOC4l+C5gOC4oeC4sgor4Liq4Liz4Lih4Liw4Lir4LiyCivguKrguLPguKPguJQKK+C4quC4s+C4o+C4p+C4iAor4Liq4Liz4Lij4Lin4LihCivguKrguLPguKPguKfguKIKK+C4quC4s+C4o+C4p+C4pQor4Liq4Liz4Lij4Lit4LiBCivguKrguLPguKPguK3guIcKK+C4quC4s+C4o+C4seC4mgor4Liq4Liz4Lij4Liy4LiBCivguKrguLPguKPguLLguI0KK+C4quC4s+C4o+C4tOC4lAor4Liq4Liz4LmA4Lij4LmH4LiICivguKrguLPguYDguKPguLIKK+C4quC4s+C5gOC4o+C4tOC4hwor4Liq4Liz4LmC4Lij4LiHCivguKrguLPguKXguLHguIEKK+C4quC4s+C4peC4suC4mQor4Liq4Liz4Lil4Li1CivguKrguLPguYHguKXguIcKK+C4quC4s+C4quC4o+C5ieC4suC4hwor4Liq4Liz4Liq4LiyCivguKrguLPguYDguKrguYfguJQKK+C4quC5iOC4s+C5gOC4quC4teC4ogor4Liq4Liz4Lir4Lij4Lin4LiUCivguKrguLPguKvguKPguLHguJoKK+C4quC4s+C4q+C4sgor4Liq4Liz4LmA4Lir4LiZ4Li14Lii4LiBCivguKrguLPguYDguKvguKPguYgKK+C4quC4s+C4reC4reC4ogor4Liq4Liz4Lit4Liy4LiHCivguKrguLQKK+C4quC4tOC4geC4guC5jAor4Liq4Li04LiB4LiC4Lih4Liy4LiZ4LiyCivguKrguLTguIHguILguLIKK+C4quC4tOC4guC4owor4Liq4Li04LiC4Lij4Li1CivguKrguLTguILguYDguKPguKgKK+C4quC4tOC4guC4sgor4Liq4Li04LiC4Li1CivguKrguLTguITguLLguKUKK+C4quC4tOC4hwor4Liq4Li04LmI4LiHCivguKrguLTguIfguILguKMKK+C4quC4tOC4h+C4hOC5jAor4Liq4Li04LiH4LiE4Lil4Li04LmJ4LiHCivguKrguLTguIfguITguKXguLUKK+C4quC4tOC4h+C4hOC4suC4owor4Liq4Li04LiH4LiE4Liy4LilCivguKrguLTguIfguITguLUKK+C4quC4tOC4h+C5guC4lQor4Liq4Li04LiH4LmC4LiV4LiX4Liw4LmA4LilCivguKrguLTguIfguKrguLLguKPguLLguKrguLHguJXguKfguYwKK+C4quC4tOC4h+C4q+C5jAor4Liq4Li04LiH4Lir4LilCivguKrguLTguI3guIjguJnguYwKK+C4quC4tOC4lQor4Liq4Li04LmC4LiV4LiX4LiB4Lin4Liy4Lij4Li1CivguKrguLTguJbguLTguKUKK+C4quC4tOC4l+C4mOC5jAor4Liq4Li04LiX4LiY4Li0CivguKrguLTguJfguJjguLTguYwKK+C4quC4tOC4mOC4ouC4sAor4Liq4Li04LiZCivguKrguLTguYnguJkKK+C4quC4tOC4meC4l+C4ueC4o+C4sAor4Liq4Li04LiZ4LiY4LieCivguKrguLTguJnguJjguLgKK+C4quC4tOC4meC4mOC4uOC4o+C4sAor4Liq4Li04LiZ4LmA4LiY4Liy4Lin4LmMCivguKrguLTguJnguLAKK+C4quC4tOC4meC4suC4lAor4Liq4Li04LiZ4Li04LiX4LiY4LmMCivguKrguLTguJnguLUKK+C4quC4tOC5gOC4meC4o+C4uAor4Liq4Li04LmA4LiZ4Lir4LiBCivguKrguLTguYDguJnguKvguJnguLXguKLguLAKK+C4quC4tOC5gOC4meC4q+C4sAor4Liq4Li04LmA4LiZ4Lir4LiyCivguKrguLTguYDguJnguYjguKvguLIKK+C4quC4tOC4mgor4Liq4Li04Lib4Lib4LiwCivguKrguLTguJ7guJnguLAKK+C4quC4tOC4oeC4nuC4peC4tQor4Liq4Li04Lij4LiwCivguKrguLTguKPguLQKK+C4quC4tOC4o+C4tQor4Liq4Li04Lil4LiyCivguKrguLTguYLguKXguIEKK+C4quC4tOC4pwor4Liq4Li04LmI4LinCivguKrguLTguKfguLAKK+C4quC4tOC4p+C4tOC4geC4sgor4Liq4Li04Lir4LiZ4LiyCivguKrguLUKK+C4quC4teC5iAor4Liq4Li14LmJCivguKrguLXguIHguKPguLjguJQKK+C4quC4teC4geC4sgor4Liq4Li14LiB4Li44LiZCivguKrguLXguILguYnguLLguIcKK+C4quC4teC4iOC4seC4gQor4Liq4Li14LiK4Lih4Lie4Li54LiU4LiHCivguKrguLXguIrguKHguJ7guLnguKrguKfguJkKK+C4quC4teC4lAor4Liq4Li14LiU4LitCivguKrguLXguJXguYnguJkKK+C4quC4teC4l+C4seC4meC4lOC4owor4Liq4Li14LmI4Lia4LiXCivguKrguLXguJ/guLHguJnguJnguLLguIfguYHguK0KK+C4quC4teC4oeC4seC4meC4leC5jAor4Liq4Li14Lih4LiyCivguKrguLXguKXguLDguKHguLHguJkKK+C4quC4teC4peC4seC4nuC4nuC4leC4m+C4o+C4suC4oeC4suC4qgor4Liq4Li14Lin4Li04LiB4LiyCivguKrguLXguKfguLTguKDguLIKK+C4quC4teC4quC4rQor4Liq4Li14Liq4LiwCivguKrguLXguKrguLIKK+C4quC4teC4quC4uOC4gQor4Liq4Li14LmA4Liq4Li14Lii4LiUCivguKrguLXguYDguKrguLfguYnguK3guJnguYnguK3guKIKK+C4quC4teC4q+C5jAor4Liq4Li14Lir4LiwCivguKrguLbguIEKK+C4quC4tuC4hwor4Liq4Li34LiaCivguKrguLfguYjguK0KK+C4quC4uAor4Liq4Li44LiBCivguKrguLjguIHguILguYwKK+C4quC4uOC4geC4owor4Liq4Li44LiB4Lij4LihCivguKrguLjguIHguLMKK+C4quC4uOC4geC4teC5ieC4ouC4suC4geC4teC5iQor4Liq4Li44LiCCivguKrguLjguILguLTguJkKK+C4quC4uOC4guC4tQor4Liq4Li44LiC4Li44LihCivguKrguLjguILguLjguKHguLLguKUKK+C4quC4uOC4hOC4lQor4Liq4Li44LiE4LiV4Li0CivguKrguLjguITguJnguJjguYwKK+C4quC4uOC4hOC4seC4meC4mOC5jAor4Liq4Li44LiH4LiB4LiwCivguKrguLjguIfguKrguLTguIcKK+C4quC4uOC4h+C4quC4uOC4oeC4suC4owor4Liq4Li44LiH4Liq4Li44Lih4Liy4Lij4Li1CivguKrguLjguIjguKPguLTguJUKK+C4quC4uOC4iOC4q+C4meC4teC5iAor4Liq4Li44LiI4LiwCivguKrguLjguIjguLQKK+C4quC4uOC4iOC4tOC4lQor4Liq4Li44LiI4Li04LiV4LijCivguKrguLjguIrguJkKK+C4quC4uOC4iuC4seC4oeC4muC4lOC4tQor4Liq4Li44LiK4LiyCivguKrguLjguIrguLLguJTguLIKK+C4quC4uOC4jQor4Liq4Li44LiTCivguKrguLjguJPguKvguLIKK+C4quC4uOC4k+C4tOC4quC4sgor4Liq4Li44LiUCivguKrguLjguJTguKrguIfguKfguJkKK+C4quC4uOC4lOC4sgor4Liq4Li44LiVCivguKrguLjguJXguJXguLAKK+C4quC4uOC4leC4leC4seC4meC4leC4sAor4Liq4Li44LiV4LiV4Lix4LiZ4LiV4Liw4Lib4Li04LiO4LiBCivguKrguLjguJXguLQKK+C4quC4uOC4l+C4mOC5jAor4Liq4Li44LiX4LiY4Li0CivguKrguLjguJfguKPguKPguKjguJnguYwKK+C4quC4uOC4l+C4seC4qOC4meC5jAor4Liq4Li44LiY4Lij4Lij4Lih4LmA4LiX4Lin4Liq4Lig4LiyCivguKrguLjguJjguLIKK+C4quC4uOC4mOC4tQor4Liq4Li44LiZ4LiX4LijCivguKrguLjguJnguJfguKPguLUKK+C4quC4uOC4meC4l+C4o+C4teC4ouC4sAor4Liq4Li44LiZ4Lix4LiCCivguKrguLjguJnguLHguJnguJfguYwKK+C4quC4uOC5guC4meC4gQor4Liq4Li44Lia4LiU4Li1CivguKrguLjguJrguKPguKPguJMKK+C4quC4uOC4muC4tOC4mQor4Liq4Li44Lib4Lij4Li14LiU4Li04LmMCivguKrguLjguJvguKPguLXguKLguYwKK+C4quC4uOC4m+C4suC4k+C4tQor4Liq4Li44Lie4Lie4Lix4LiVCivguKrguLjguJ7guKPguKPguJMKK+C4quC4uOC4nuC4o+C4o+C4k+C4luC4seC4mQor4Liq4Li44Lie4Lij4Lij4LiT4Li04LiB4Liy4Lij4LmMCivguKrguLjguKDguKMKK+C4quC4uOC4oOC4seC4hAor4Liq4Li44Lig4LiyCivguKrguLjguKDguLLguJ4KK+C4quC4uOC4oOC4suC4qeC4tOC4lQor4Liq4Li44LihCivguKrguLjguYjguKEKK+C4quC4uOC4oeC4l+C4uOC4oQor4Liq4Li44Lih4LiZCivguKrguLjguKHguJnguLAKK+C4quC4uOC4oeC4meC4seC4qgor4Liq4Li44Lih4LiZ4LiyCivguKrguLjguYnguKHguYDguKrguLXguKLguIcKK+C4quC4uOC4oeC4sAor4Liq4Li44Lih4Liy4Lil4Li1CivguKrguLjguYDguKHguJgKK+C4quC4uOC5gOC4oeC4o+C4uAor4Liq4Li44LmJ4LiiCivguKrguLjguKPguIfguITguYwKK+C4quC4uOC4o+C4oOC4tQor4Liq4Li44Lij4Lix4LiH4LiE4LmMCivguKrguLjguKPguLHguJXguLQKK+C4quC4uOC4o+C4seC4quC4p+C4lOC4tQor4Liq4Li44Lij4LiyCivguKrguLjguKPguLLguIfguITguYzguIjguLPguYDguKPguLXguKLguIcKK+C4quC4uOC4o+C4suC4mOC4tOC4m+C5hOC4leC4ogor4Liq4Li44Lij4Li04LiZ4LiX4Lij4Liy4Lir4Li5CivguKrguLjguKPguLTguKLguIcKK+C4quC4uOC4o+C4tOC4ouC4mQor4Liq4Li44Lij4Li04Lii4LiwCivguKrguLjguKPguLTguKLguLHguJkKK+C4quC4uOC4o+C4tOC4ouC4sgor4Liq4Li44Lij4Li04Lii4Li44Lib4Lij4Liy4LiE4LiyCivguKrguLjguKPguLTguYDguKLguJnguJfguKPguYwKK+C4quC4uOC4o+C4tOC5gOC4ouC4qAor4Liq4Li44Lij4Li04LmC4LiiCivguKrguLjguKPguLjguYjguKLguKrguLjguKPguYjguLLguKIKK+C4quC4uOC4peC4leC5iOC4suC4mQor4Liq4Li44LinCivguKrguLjguKfguKDguLLguJ4KK+C4quC4uOC4p+C4o+C4o+C4kwor4Liq4Li44Lin4Liy4LiZCivguKrguLjguKfguLTguJnguLHguKIKK+C4quC4uOC4p+C4tOC4oeC4pQor4Liq4Li44Lip4Li04LijCivguKrguLjguKrguLLguJkKK+C4quC4uOC4q+C4meC4seC4lQor4Liq4Li44Lir4Lij4LmI4LiHCivguKrguLjguKvguKPguYjguLLguKIKK+C4quC4uOC4q+C4pOC4lwor4Liq4Li44Lir4Lix4LiXCivguKrguLjguYDguKvguKPguYjguLIKK+C4quC4uQor4Liq4Li54LmJCivguKrguLnguIHguKnguKEKK+C4quC4ueC4hwor4Liq4Li54LiI4LiB4LiwCivguKrguLnguIjguJnguLAKK+C4quC4ueC4iOC4tAor4Liq4Li54LiNCivguKrguLnguJQKK+C4quC4ueC4lQor4Liq4Li54LiV4LijCivguKrguLnguJXguLQKK+C4quC4ueC4lwor4Liq4Li54LiZ4Li4CivguKrguLnguJoKK+C4quC4ueC4m+C4sAor4Liq4Li54LijCivguKrguLnguKPguKLguYwKK+C4quC4ueC4o+C4tAor4Liq4Li54Liq4Li1CivguYDguKoKK+C5gOC4quC4gQor4LmA4Liq4LiB4LiC4LiwCivguYDguKrguILguLAKK+C5gOC4quC5h+C4hwor4LmA4Liq4LmJ4LiHCivguYDguKrguIfguLXguYjguKLguKEKK+C5gOC4quC4ieC4p+C4mQor4LmA4Liq4LiP4LiQ4Li1CivguYDguKrguJPguLUKK+C5gOC4quC4lAor4LmA4Liq4LiU4LmH4LiICivguYDguKrguJXguLgKK+C5gOC4quC4luC4teC4ouC4owor4LmA4Liq4LmC4LiXCivguYDguKrguJkKK+C5gOC4quC5ieC4mQor4LmA4Liq4LiZ4LiHCivguYDguKrguJnguYjguIcKK+C5gOC4quC4meC5iOC4q+C5jAor4LmA4Liq4LiZ4LmI4Lir4LmM4LiI4Lix4LiZ4LiX4Lij4LmM4LiC4Liy4LinCivguYDguKrguJnguYjguKvguYzguIjguLHguJnguJfguKPguYzguYHguJTguIcKK+C5gOC4quC4meC4q+C4sgor4LmA4Liq4LiZ4LmI4Lir4LiyCivguYDguKrguJnguK0KK+C5gOC4quC4meC4sAor4LmA4Liq4LiZ4LiyCivguYDguKrguJnguYjguLIKK+C5gOC4quC4meC4suC4geC4uOC4jgor4LmA4Liq4LiZ4Liy4LiH4LiE4LmMCivguYDguKrguJnguLLguIfguITguJnguLTguIHguKMKK+C5gOC4quC4meC4suC4meC4tQor4LmA4Liq4LiZ4Liy4Liq4LiZ4LiwCivguYDguKrguJnguLLguLAKK+C5gOC4quC4meC4tQor4LmA4Liq4LiZ4Li14Lii4LmMCivguYDguKrguJnguLXguKLguJQKK+C5gOC4quC4meC4teC4ouC4sAor4LmA4Liq4Lia4LiiCivguYDguKrguJrguLXguKLguIcKK+C5gOC4quC4ngor4LmA4Liq4Lie4Lii4LmMCivguYDguKrguYDguJ7guKUKK+C5gOC4quC4oOC4sgor4LmA4Liq4Lih4LmH4LiUCivguYDguKrguKHguK0KK+C5gOC4quC4oeC4sgor4LmA4Liq4Lih4Li14Lii4LiZCivguYDguKrguKHguLfguK3guJkKK+C5gOC4quC4ogor4LmA4Liq4Lij4LmH4LiICivguYDguKrguKPguLTguJQKK+C5gOC4quC4o+C4tOC4oQor4LmA4Liq4Lij4Li1CivguYDguKrguKXguJQKK+C5gOC4quC4peC4lOC4nuC4seC4h+C4nuC4reC4mQor4LmA4Liq4Lil4LiyCivguYDguKrguKXguLXguYjguKLguIcKK+C5gOC4quC4peC4t+C4reC4geC4quC4peC4mQor4LmA4Liq4LmC4LilCivguYDguKrguKfguIEKK+C5gOC4quC4p+C4geC4suC4oeC4suC4leC4ouC5jAor4LmA4Liq4Lin4LiZ4LiwCivguYDguKrguKfguJnguLIKK+C5gOC4quC4p+C4ogor4LmA4Liq4Lin4Lii4Lie4Lij4Liw4LiK4Liy4LiV4Li0CivguYDguKrguKfguLXguKLguJkKK+C5gOC4quC4quC4o+C4p+C4hwor4LmA4Liq4Liq4Lij4Lin4LilCivguYDguKrguLIKK+C5gOC4quC5ieC4sgor4LmA4Liq4Liy4Lij4LmMCivguYDguKrguLLguKPguKDguKLguYwKK+C5gOC4quC4suC4o+C4tQor4LmA4Liq4Liy4Lin4LiT4Li04LiVCivguYDguKrguLLguKfguJnguLAKK+C5gOC4quC4suC4p+C4meC4sgor4LmA4Liq4Liy4Lin4LiZ4Liy4LiB4Liy4LijCivguYDguKrguLLguKfguJnguLXguKLguYwKK+C5gOC4quC4suC4q+C4pOC4lwor4LmA4Liq4Liy4LiwCivguYDguKrguLLguLDguYHguKrguLAKK+C5gOC4quC4tOC4o+C5jOC4iAor4LmA4Liq4Li04Lij4LmM4LifCivguYDguKrguLXguKIKK+C5gOC4quC4teC5iOC4ogor4LmA4Liq4Li14Lii4LiHCivguYDguKrguLXguYjguKLguIcKK+C5gOC4quC4teC4ouC4lAor4LmA4Liq4Li14LmJ4Lii4LiZCivguYDguKrguLXguKLguJoKK+C5gOC4quC4teC4ouC4oQor4LmA4Liq4Li14LmI4Lii4LihCivguYDguKrguLXguYnguKLguKEKK+C5gOC4quC4teC4ouC4pwor4LmA4Liq4Li14LmI4Lii4LinCivguYDguKrguLXguYnguKLguKcKK+C5gOC4quC4t+C4rQor4LmA4Liq4Li34LmI4LitCivguYDguKrguLfguYnguK0KK+C5gOC4quC4t+C4reC4gQor4LmA4Liq4Li34LmI4Lit4LihCivguYHguKoKK+C5geC4quC5iAor4LmB4Liq4LmJCivguYHguKrguIEKK+C5geC4quC4hwor4LmB4Liq4LiUCivguYHguKrguJTguIcKK+C5geC4quC4leC4oeC4m+C5jAor4LmB4Liq4LiZCivguYHguKrguJnguIcKK+C5geC4quC4meC4ouC5jAor4LmB4Liq4LiZ4LmA4Liq4LiZ4Liy4LiwCivguYHguKrguJoKK+C5geC4quC4muC4gQor4LmB4Liq4LihCivguYHguKrguKLguIEKK+C5geC4quC4ouC4hwor4LmB4Liq4Lii4LiwCivguYHguKrguKPguIEKK+C5geC4quC4o+C5ieC4hwor4LmB4Liq4Lil4LiHCivguYHguKrguKXguIfguYPguIgKK+C5geC4quC4peC4h+C5gOC4muC4t+C5iOC4rQor4LmB4Liq4Lin4LiHCivguYHguKrguK3guIEKK+C5geC4quC4sAor4LmC4Liq4LiBCivguYLguKrguIHguYLguJTguIEKK+C5guC4quC4geC4seC4meC4leC5jAor4LmC4Liq4LiB4Liy4LiU4Liy4LiZ4LiyCivguYLguKrguYLguITguKPguIEKK+C5guC4quC4kwor4LmC4Liq4LiT4LiR4LmMCivguYLguKrguJPguLQKK+C5guC4quC4k+C4tQor4LmC4Liq4LiUCivguYLguKrguJTguIEKK+C5guC4quC4lOC4oQor4LmC4Liq4LiU4LiyCivguYLguKrguJUKK+C5guC4quC4leC4luC4tAor4LmC4Liq4LiX4LiBCivguYLguKrguJfguKMKK+C5guC4quC4mOC4gQor4LmC4Liq4LiY4LiZ4LiwCivguYLguKrguJkKK+C5guC4quC4m+C4suC4mQor4LmC4Liq4Lig4LiTCivguYLguKrguKDguLIKK+C5guC4quC4oOC4tOC4k+C4tQor4LmC4Liq4Lig4Li1CivguYLguKrguYDguKDguJPguLUKK+C5guC4quC4oQor4LmC4Liq4Lih4LiZ4Lix4LiqCivguYLguKrguKHguKEKK+C5guC4quC4oeC4ouC5jAor4LmC4Liq4Lih4Liq4LmI4Lit4LiH4LmB4Liq4LiHCivguYLguKrguKPguYjguIcKK+C5guC4quC4o+C4iAor4LmC4Liq4Lij4Lix4LiI4LiI4LiwCivguYLguKrguKfguKPguKPguJMKK+C5guC4quC4q+C4uOC5ieC4ogor4LmC4Liq4Lis4LiqCivguYPguKoKK+C5g+C4quC5iAor4LmE4LiqCivguYTguKrguYkKK+C5hOC4quC4ogor4LmE4Liq4Lii4LiyCivguYTguKrguKPguYkKK+C5hOC4quC4pwor4LmE4Liq4LmJ4Lir4Li54LmJCivguKsKK+C4q+C4gQor4Lir4LiB4Lia4LiXCivguKvguIHguYLguKXguYgKK+C4q+C4hwor4Lir4LiH4LiBCivguKvguIfguKrguYwKK+C4q+C4h+C4quC5jOC4l+C4reC4hwor4Lir4LiH4Liq4LmM4Lir4Lii4LiBCivguKvguIfguK0KK+C4q+C4h+C4reC4gQor4Lir4LiH4LmI4Lit4LiHCivguKvguIfguK3guIfguYHguKvguIfguIcKK+C4q+C4h+C4reC4lAor4Lir4LiH4Lit4LiU4LmGCivguKvguIfguK3guJkKK+C4q+C4h+C5iOC4reC4oQor4Lir4LiH4Lit4LiiCivguKvguIfguYjguK3guKIKK+C4q+C4h+C4seC4gQor4Lir4LiH4Lix4LiaCivguKvguIfguYjguLLguIcKK+C4q+C4h+C4suC4ogor4Lir4LiH4LmI4Liy4LinCivguKvguIfguLMKK+C4q+C4h+C4tOC4gQor4Lir4LiH4Li04LiHCivguKvguIfguLTguKEKK+C4q+C4h+C4tuC4gQor4Lir4LiH4Li44LiH4Lir4LiH4Li04LiHCivguKvguIfguLjguJTguKvguIfguLTguJQKK+C4q+C4h+C4uOC4mgor4Lir4LiH4Li44Lia4Lir4LiH4Lix4LiaCivguKvguIfguLjguYjguKIKK+C4q+C4jeC5ieC4sgor4Lir4LiN4LmJ4Liy4Lib4Liy4LiB4LiE4Lit4LiBCivguKvguI3guYnguLLguJ3guKPguLHguYjguJkKK+C4q+C4jeC5ieC4suC4ouC4reC4h+C5hOC4nwor4Lir4LiN4LmJ4Liy4Lir4LiZ4Lin4LiU4LmB4Lih4LinCivguKvguI3guLTguIcKK+C4q+C4jeC4tOC4mgor4Lir4LiUCivguKvguJXguLAKK+C4q+C4l+C4seC4ogor4Lir4LiZCivguKvguJnguKfguIEKK+C4q+C4meC5iOC4p+C4hwor4Lir4LiZ4Lin4LiUCivguKvguJnguKfguJTguJnguLLguITguKPguLLguIoKK+C4q+C4meC4p+C4lOC4nuC4o+C4suC4q+C4oeC4k+C5jAor4Lir4LiZ4Lin4LiU4LmB4Lih4LinCivguKvguJnguYjguKfguKIKK+C4q+C4meC5iOC4p+C4ouC4geC4tOC4lQor4Lir4LiZ4LitCivguKvguJnguYjguK0KK+C4q+C4meC4reC4gQor4Lir4LiZ4Lit4LiB4LiK4LmJ4Liy4LiHCivguKvguJnguK3guIcKK+C4q+C4meC4reC4h+C5geC4i+C4hwor4Lir4LiZ4Lit4LiZCivguKvguJnguK3guJnguJXguLLguJnguKvguKLguLLguIEKK+C4q+C4meC5iOC4reC4ogor4Lir4LiZ4LmH4Lit4Lii4LmB4LiZ4LmICivguKvguJnguLAKK+C4q+C4meC4seC4gQor4Lir4LiZ4Lix4LiHCivguKvguJnguLHguIfguIHguKXguLLguIfguKfguLHguJkKK+C4q+C4meC4seC4h+C4quC4t+C4rQor4Lir4LiZ4Lix4LmI4LiZCivguKvguJnguLHguJoKK+C4q+C4meC4sgor4Lir4LiZ4LmJ4LiyCivguKvguJnguLLguIHguLLguKrguKPguLUKK+C4q+C4meC5iOC4suC4hwor4Lir4LiZ4Liy4LiUCivguKvguJnguLLguJkKK+C4q+C4meC4suC4oQor4Lir4LiZ4LmI4Liy4LiiCivguKvguJnguLLguKcKK+C4q+C4meC4swor4Lir4LiZ4Liz4LmA4Lil4Li14LmJ4Lii4LiaCivguKvguJnguLUKK+C4q+C4meC4teC5iQor4Lir4LiZ4Li14LiaCivguKvguJnguLXguYDguKrguLfguK0KK+C4q+C4meC4tuC4gQor4Lir4LiZ4Li24LmI4LiHCivguKvguJnguLbguJoKK+C4q+C4meC4t+C4lAor4Lir4LiZ4Li4CivguKvguJnguLjguIfguKvguJnguLTguIcKK+C4q+C4meC4uOC4mQor4Lir4LiZ4Li44LiaCivguKvguJnguLjguYjguKEKK+C4q+C4meC4uOC5iOC4ogor4Lir4LiZ4Li5CivguKvguYjguKEKK+C4q+C4oeC4gQor4Lir4Lih4LiUCivguKvguKHguYjguJkKK+C4q+C4oeC4p+C4gQor4Lir4Lih4Lin4LiUCivguKvguKHguK0KK+C4q+C4oeC5iOC4rQor4Lir4Lih4LmJ4LitCivguKvguKHguK3guIEKK+C4q+C4oeC4reC4hwor4Lir4Lih4LmI4Lit4LiHCivguKvguKHguK3guJkKK+C4q+C4oeC5iOC4reC4mQor4Lir4Lih4Lit4LiaCivguKvguKHguYjguK3guKEKK+C4q+C4oeC4reC4ogor4Lir4Lih4Lix4LiBCivguKvguKHguLHguJQKK+C4q+C4oeC4seC4mQor4Lir4Lih4Lix4LmI4LiZCivguKvguKHguLHguYnguJkKK+C4q+C4oeC4seC5iOC4meC5hOC4quC5iQor4Lir4Lih4Lix4LiaCivguKvguKHguLIKK+C4q+C4oeC5iOC4sgor4Lir4Lih4LmJ4LiyCivguKvguKHguLLguIEKK+C4q+C4oeC4suC4hwor4Lir4Lih4Liy4LiI4LmI4LitCivguKvguKHguLLguJQKK+C4q+C4oeC4suC4leC5i+C4sgor4Lir4Lih4Liy4Lih4Li44LmI4LiiCivguKvguKHguLLguKHguLjguYnguKIKK+C4q+C4oeC4suC5hOC4oeC5iQor4Lir4Lih4Liy4LiiCivguKvguKHguYnguLLguKIKK+C4q+C4oeC4suC4o+C5iOC4sgor4Lir4Lih4LmI4LizCivguKvguKHguLTguYjguJkKK+C4q+C4oeC4tQor4Lir4Lih4Li14LmICivguKvguKHguLXguYDguKvguKHguYfguJkKK+C4q+C4oeC4tuC4gQor4Lir4Lih4Li34LiZCivguKvguKHguLfguYjguJkKK+C4q+C4oeC4uOC4lAor4Lir4Lih4Li44LiZCivguKvguKHguLjguJoKK+C4q+C4oeC4uOC5iOC4ogor4Lir4Lih4Li44Lii4LiC4Liy4LinCivguKvguKHguLkKK+C4q+C4oeC4ueC5iAor4Lir4Lih4Li54Liq4Lix4LiHCivguKvguKHguLnguKrguLUKK+C4q+C4ouC4gQor4Lir4Lii4LmI4LiHCivguKvguKLguJQKK+C4q+C4ouC4p+C4gQor4Lir4Lii4Lin4LiZCivguKvguKLguKfguJnguYLguKXguYkKK+C4q+C4ouC4p+C4mgor4Lir4Lii4Lit4LiBCivguKvguKLguYfguK3guIHguKvguKLguYfguK3guKIKK+C4q+C4ouC4reC4hwor4Lir4Lii4LmI4Lit4LiHCivguKvguKLguYfguK3guIfguYHguKvguKLguYfguIcKK+C4q+C4ouC4reC4lAor4Lir4Lii4Lit4LiZCivguKvguKLguYjguK3guJkKK+C4q+C4ouC5iOC4reC4oQor4Lir4Lii4Lit4Lih4LmB4Lir4Lii4LihCivguKvguKLguK3guKIKK+C4q+C4ouC5iOC4reC4ogor4Lir4Lii4Lix4LiBCivguKvguKLguLHguIHguYDguKvguKLguLIKK+C4q+C4ouC4seC4hwor4Lir4Lii4Lix4LmI4LiHCivguKvguKLguLHguIfguKvguKLguLHguIcKK+C4q+C4ouC4seC4lAor4Lir4Lii4Lix4LiZCivguKvguKLguLHguJoKK+C4q+C4ouC4seC5iOC4p+C5gOC4oeC4t+C4reC4hwor4Lir4Lii4LmI4LiyCivguKvguKLguLLguIHguYDguKLguLfguYjguK0KK+C4q+C4ouC4suC4geC5hOC4ouC5iAor4Lir4Lii4LmI4Liy4LiH4LiE4LmJ4LizCivguKvguKLguLLguJQKK+C4q+C4ouC4suC4mgor4Lir4Lii4Liy4LihCivguKvguKLguLLguKcKK+C4q+C4ouC5ieC4suC4pwor4Lir4Lii4Liz4LiJ4LmI4LiyCivguKvguKLguLPguYDguJsKK+C4q+C4ouC4s+C5geC4q+C4ouC4reC4sAor4Lir4Lii4Liz4LmB4Lir4Lii4LiwCivguKvguKLguLTguIEKK+C4q+C4ouC4tOC5iOC4hwor4Lir4Lii4Li04LiaCivguKvguKLguLTguKEKK+C4q+C4ouC4tQor4Lir4Lii4Li14LmICivguKvguKLguLgKK+C4q+C4ouC4uOC4geC4q+C4ouC4tOC4gQor4Lir4Lii4Li44LiUCivguKvguKLguLjguYjguJkKK+C4q+C4ouC4uOC4muC5hgor4Lir4Lii4Li44Lih4Lir4Lii4Li04LihCivguKvguKLguLnguIHguKLguLIKK+C4q+C4owor4Lir4Lij4LiE4Li44LiTCivguKvguKPguJTguLLguKUKK+C4q+C4o+C4lOC4tQor4Lir4Lij4LiaCivguKvguKPguKPguKkKK+C4q+C4o+C4o+C4qeC4sgor4Lir4Lij4LitCivguKvguKPguK3guIEKK+C4q+C4o+C5h+C4reC4oeC5geC4q+C4o+C5h+C4oQor4Lir4Lij4Lit4Lii4LmGCivguKvguKPguLAKK+C4q+C4o+C4seC4muC5hgor4Lir4Lij4LiyCivguKvguKPguLQKK+C4q+C4o+C4tOC5iOC4hwor4Lir4Lij4Li04LiT4LiwCivguKvguKPguLTguJPguLHguIfguITguYwKK+C4q+C4o+C4tOC4lQor4Lir4Lij4Li04LiV4LiB4Li1CivguKvguKPguLXguYgKK+C4q+C4o+C4teC4lAor4Lir4Lij4Li14LiV4LiB4Li1CivguKvguKPguLfguK0KK+C4q+C4o+C4uOC5iOC4mQor4Lir4Lij4Li44Lia4LmGCivguKvguKPguLjguJrguKPguLnguYgKK+C4q+C4o+C4uOC4muC4q+C4o+C4ueC5iAor4Lir4Lij4Li44LmI4LihCivguKvguKPguLkKK+C4q+C4o+C4ueC4q+C4o+C4sgor4Lir4Lik4LiX4LiiCivguKvguKTguJfguKLguYwKK+C4q+C4pOC4l+C4seC4ogor4Lir4Lik4Lip4LiO4LmMCivguKvguKTguKnguI7guLUKK+C4q+C4pOC4q+C4o+C4o+C4qeC5jAor4Lir4Lik4LmC4Lir4LiUCivguKvguKUKK+C4q+C4peC4hwor4Lir4Lil4LiUCivguKvguKXguJkKK+C4q+C4peC5iOC4mQor4Lir4Lil4LiaCivguKvguKXguYjguKEKK+C4q+C4peC4p+C4hwor4Lir4Lil4Lin4LihCivguKvguKXguK0KK+C4q+C4peC5iOC4rQor4Lir4Lil4Lit4LiBCivguKvguKXguK3guJQKK+C4q+C4peC4reC4mQor4Lir4Lil4LmH4Lit4LiZCivguKvguKXguYjguK3guJkKK+C4q+C4peC5h+C4reC4meC5hgor4Lir4Lil4Lit4LihCivguKvguKXguLAKK+C4q+C4peC4sOC4q+C4peC4p+C4oQor4Lir4Lil4Lix4LiBCivguKvguKXguLHguIcKK+C4q+C4peC4seC5iOC4hwor4Lir4Lil4Lix4LiU4LmGCivguKvguKXguLHguYjguJkKK+C4q+C4peC4seC4mgor4Lir4Lil4Lix4LinCivguKvguKXguLIKK+C4q+C4peC5ieC4sgor4Lir4Lil4Liy4LiBCivguKvguKXguLLguJcKK+C4q+C4peC4suC4l+C4p+C4lAor4Lir4Lil4Liy4LiZCivguKvguKXguLLguJoKK+C4q+C4peC4suC4oQor4Lir4Lil4Liy4LiiCivguKvguKXguLLguKcKK+C4q+C4peC4suC4q+C4pQor4Lir4Lil4Li04LiBCivguKvguKXguLTguYjguIcKK+C4q+C4peC4tOC4lwor4Lir4Lil4Li04LiZCivguKvguKXguLTguKEKK+C4q+C4peC4tOC4pwor4Lir4Lil4Li04LmI4LinCivguKvguKXguLUKK+C4q+C4peC4teC4gQor4Lir4Lil4Li14LmC4LiBCivguKvguKXguLXguJoKK+C4q+C4peC4teC4ruC4t+C5ieC4rQor4Lir4Lil4Li34LiaCivguKvguKXguLjguIHguKvguKXguLTguIEKK+C4q+C4peC4uOC4lAor4Lir4Lil4Li44LiZ4LmGCivguKvguKXguLjguJoKK+C4q+C4peC4uOC4oQor4Lir4Lil4Li44Lih4Lie4LitCivguKvguKXguLjguKHguJ7guLUKK+C4q+C4peC4ueC5iAor4Lir4Lin4LiHCivguKvguYjguKfguIcKK+C4q+C5ieC4p+C4hwor4Lir4Lin4LiUCivguKvguKfguJkKK+C4q+C5ieC4p+C4mQor4Lir4Lin4LiZ4LiE4Liz4LiZ4Li24LiHCivguKvguKfguKIKK+C4q+C5iOC4p+C4ogor4Lir4LmJ4Lin4LiiCivguKvguKfguK0KK+C4q+C4p+C4reC4lAor4Lir4Lin4LmH4Lit4Lii4LmGCivguKvguKfguLAKK+C4q+C4p+C4seC4hwor4Lir4Lin4Lix4LiUCivguKvguKfguLHguYjguJkKK+C4q+C4p+C4seC4meC4ouC4tOC4q+C4p+C4sgor4Lir4Lin4Lix4LinCivguKvguKfguLHguKfguKPguYjguK0KK+C4q+C4p+C4seC4p+C5gOC4o+C4suC4sAor4Lir4Lin4LiyCivguKvguKfguYjguLIKK+C4q+C4p+C5ieC4sgor4Lir4Lin4Liy4LiBCivguKvguKfguYjguLLguIcKK+C4q+C4p+C4suC4lAor4Lir4Lin4Liy4LiZCivguKvguKfguYjguLLguJkKK+C4q+C4p+C4suC4oQor4Lir4Lin4Liy4LiiCivguKvguKfguLMKK+C4q+C4p+C4tOC4lAor4Lir4Lin4Li04LinCivguKvguKfguLUKK+C4q+C4p+C4teC5iAor4Lir4Lin4Li14LiUCivguKvguKfguLfguK0KK+C4q+C4p+C4uOC4lOC4q+C4p+C4tOC4lAor4Lir4Lin4Li44LihCivguKvguKfguLnguJQKK+C4q+C4rQor4Lir4LmI4LitCivguKvguYnguK0KK+C4q+C4reC4gQor4Lir4Lit4LiHCivguKvguYnguK3guIcKK+C4q+C4reC4mQor4Lir4LmI4Lit4LiZCivguKvguK3guJoKK+C4q+C4reC4oQor4Lir4LmJ4Lit4LihCivguKvguK3guKEw77+9CivguYDguKvguKHguLHguJnguJXguYwKK+C5gOC4q+C4oeC4sgor4LmA4Lir4Lih4Liy4Lii4Lix4LiZCivguYDguKvguKHguLLguLAKK+C5gOC4q+C4oeC4teC4ouC4pwor4LmA4Lir4Lih4Li14LmI4Lii4LinCivguYDguKvguKHguLfguK3guIcKK+C5gOC4q+C4oeC4t+C4reC4lAor4LmA4Lir4Lih4Li34Lit4LiU4LiE4LiZCivguYDguKvguKHguLfguK3guJTguYLguKXguJQKK+C5gOC4q+C4oeC4t+C4reC4mQor4LmA4Lir4Lih4Li34LmI4Lit4LiiCivguYDguKvguKHguLfguYjguK3guKLguYYKK+C5gOC4q+C4ogor4LmA4Lir4Lii4LiHCivguYDguKvguKLguYjguK3guKIKK+C5gOC4q+C4ouC4sgor4LmA4Lir4Lii4LmI4LiyCivguYDguKvguKLguYnguLIKK+C5gOC4q+C4ouC5iOC4suC5hgor4LmA4Lir4Lii4Liy4LiwCivguYDguKvguKLguLLguLDguYYKK+C5gOC4q+C4ouC4suC4sOC4ouC5iOC4suC4hwor4LmA4Lir4Lii4Liy4Liw4LmB4Lir4Lii4LiwCivguYDguKvguKLguLTguIcKK+C5gOC4q+C4ouC4tOC4muC5hgor4LmA4Lir4Lii4Li14Lii4LiUCivguYDguKvguKLguLXguKLguJoKK+C5gOC4q+C4ouC4teC5iOC4ouC4pwor4LmA4Lir4Lii4Li34LmI4LitCivguYDguKvguKLguLfguK3guIEKK+C5gOC4q+C4o+C4seC4jeC4jeC4tOC4gQor4LmA4Lir4Lij4LiyCivguYDguKvguKPguLLguLDguYYKK+C5gOC4q+C4o+C4teC4ouC4jQor4LmA4Lir4Lil4LmICivguYDguKvguKXguYfguIEKK+C5gOC4q+C4peC4mQor4LmA4Lir4Lil4LinCivguYDguKvguKXguK0KK+C5gOC4q+C4peC4sgor4LmA4Lir4Lil4LmI4LiyCivguYDguKvguKXguYnguLIKK+C5gOC4q+C4peC4suC4iuC4sOC5guC4reC4mQor4LmA4Lir4Lil4Liy4Lir4Lil4LiBCivguYDguKvguKXguLLguYDguKvguKLguYgKK+C5gOC4q+C4peC4suC4sOC5geC4q+C4peC4sAor4LmA4Lir4Lil4Li04LiHCivguYDguKvguKXguLTguIfguYDguIjguLTguYnguIcKK+C5gOC4q+C4peC4teC4ouC4mQor4LmA4Lir4Lil4Li14LmI4Lii4LihCivguYDguKvguKXguLXguKLguKcKK+C5gOC4q+C4peC4t+C4rQor4LmA4Lir4Lil4Li34Lit4LiBCivguYDguKvguKXguLfguK3guIcKK+C5gOC4q+C4peC4t+C4reC4mgor4LmA4Lir4Lil4Li34Lit4LihCivguYDguKvguKXguLfguYjguK3guKEKK+C5gOC4q+C4pwor4LmA4Lir4Lin4LmICivguYDguKvguKfguIcKK+C5gOC4q+C4p+C4ogor4LmA4Lir4Lin4Lit4LiwCivguYDguKvguKfguK3guLDguKvguKfguLAKK+C5gOC4q+C4p+C4teC5iOC4ouC4hwor4LmA4Lir4LmI4LitCivguYDguKvguK3guLAKK+C5gOC4q+C4sAor4LmA4Lir4Liw4Lir4LiwCivguYDguKvguLIKK+C5gOC4q+C5iOC4sgor4LmA4Lir4Liy4LiwCivguYDguKvguLTguJkKK+C5gOC4q+C4tOC4oQor4LmA4Lir4Li14LmJ4LiiCivguYDguKvguLXguKLguIcKK+C5gOC4q+C4teC4ouC4mQor4LmA4Lir4Li14LmJ4Lii4LiZCivguYDguKvguLXguYnguKLguKEKK+C5gOC4q+C4teC5iOC4ouC4pwor4LmA4Lir4Li34LmI4LitCivguYDguKvguLfguK3guJQKK+C5geC4qwor4LmB4Lir4LmICivguYHguKvguYkKK+C5geC4q+C4gQor4LmB4Lir4LiHCivguYHguKvguIfguYgKK+C5geC4q+C5iOC4hwor4LmB4Lir4LmJ4LiHCivguYHguKvguIfguYfguIEKK+C5geC4q+C4h+C5geC4geC5iwor4LmB4Lir4LiH4LmI4LiHCivguYHguKvguIfguJkKK+C5geC4q+C4mQor4LmB4Lir4LmJ4LiZCivguYHguKvguJnguIcKK+C5geC4q+C4meC4mgor4LmB4Lir4LiZ4LihCivguYHguKvguJoKK+C5geC4q+C4oQor4LmB4Lir4Lih4LmICivguYHguKvguKHguYjguKEKK+C5geC4q+C4oeC4sAor4LmB4Lir4LiiCivguYHguKvguKLguYgKK+C5geC4q+C4ouC4hwor4LmB4Lir4Lii4LmI4LiHCivguYHguKvguKLguKEKK+C5geC4q+C4ouC4sAor4LmB4Lir4Lii4Liw4LmGCivguYHguKvguKUKK+C5geC4q+C4peC5iAor4LmB4Lir4Lil4LiBCivguYHguKvguKXguYjguIcKK+C5geC4q+C4peC4mQor4LmB4Lir4Lil4LihCivguYHguKvguKXguLAKK+C5geC4q+C4pwor4LmB4Lir4LmJ4LinCivguYHguKvguKfguIEKK+C5geC4q+C4p+C5iOC4hwor4LmB4Lir4Lin4LiUCivguYHguKvguKfguJkKK+C5geC4q+C4p+C4sAor4LmB4Lir4LiwCivguYHguKvguLDguYYKK+C5guC4q+C5iAor4LmC4Lir4LiBCivguYLguKvguIcKK+C5guC4q+C4lAor4LmC4Lir4LiZCivguYLguKvguJnguIEKK+C5guC4q+C4meC5iOC4hwor4LmC4Lir4LihCivguYLguKvguKHguYgKK+C5guC4q+C4oeC4geC4o+C4o+C4oQor4LmC4Lir4Lih4LiB4Li54LiT4LiR4LmMCivguYLguKvguKHguYjguIcKK+C5guC4q+C4oeC4lAor4LmC4Lir4LiiCivguYLguKvguKLguIHguYDguKvguKLguIEKK+C5guC4q+C4ouC4hwor4LmC4Lir4Lii4LmI4LiHCivguYLguKvguKMKK+C5guC4q+C4o+C4hwor4LmC4Lir4Lij4LiH4LmA4Lir4Lij4LiHCivguYLguKvguKPguJTguLLguIjguLLguKPguKLguYwKK+C5guC4q+C4o+C4sOC4nuC4sgor4LmC4Lir4LilCivguYLguKvguKXguYgKK+C5guC4q+C4peC4h+C5guC4iOC5ieC4hwor4LmC4Lir4LinCivguYLguKvguKfguYgKK+C5guC4q+C4p+C5iQor4LmC4Lir4Lin4LiB4LmA4Lir4Lin4LiBCivguYLguKvguKfguIcKK+C5guC4q+C4p+C4lAor4LmC4Lir4Lin4LiVCivguYPguKvguYkKK+C5g+C4q+C4jeC5iAor4LmD4Lir4Lih4LmICivguYTguKsKK+C5hOC4q+C5iAor4LmE4Lir4LmJCivguYTguKvguJkKK+C5hOC4q+C4oQor4LmE4Lir4Lih4LmJCivguYTguKvguKPguJMKK+C5hOC4q+C4pQor4LmE4Lir4Lil4LmICivguYTguKvguKcKK+C5hOC4q+C4p+C5iQor4LmE4Lir4Lin4LmGCivguYTguKvguKvguKXguLMKK+C4rQor4Lit4LiBCivguK3guIHguJXguLHguI3guI3guLjguJXguLIKK+C4reC4geC4leC4seC4jeC4jeC4uQor4Lit4LiB4LiZ4Li04Lip4LiQ4LmMCivguK3guIHguKPguJPguLXguKLguYwKK+C4reC4geC4o+C4o+C4oeC4geC4o+C4tOC4ouC4sgor4Lit4LiB4Lix4Lib4Lib4Li04Lii4LiwCivguK3guIHguLLguKXguIjguLXguKfguKMKK+C4reC4geC4suC4peC4tOC5guC4gQor4Lit4LiB4Li04Lij4Li04Lii4LiX4Li04LiQ4Li0CivguK3guIHguLjguKjguKUKK+C4reC4hOC4leC4tAor4Lit4LiE4LmA4LiZ4Liq4Lix4LiZCivguK3guITguLLguJgKK+C4reC4hgor4Lit4LiHCivguK3guIfguIHguYwKK+C4reC4h+C4hOC5jAor4Lit4LiH4LiE4Lih4LiZ4LiV4Lij4Li1CivguK3guIfguITguKHguKPguKPguKkKK+C4reC4h+C4hOC4uOC4pQor4Lit4LiH4LiE4Li44Lil4Li1CivguK3guIfguKjguYwKK+C4reC4h+C4qOC4sgor4Lit4LiH4Lit4Liy4LiICivguK3guIfguLjguYjguJkKK+C4reC4iOC4owor4Lit4LiI4Lil4LiyCivguK3guIjguLTguJXguJXguLQKK+C4reC4iOC4tOC4meC4leC4sgor4Lit4LiI4Li04LiZ4LmE4LiV4LiiCivguK3guIjguLTguKPguLAKK+C4reC5gOC4iOC4peC4gQor4Lit4LmA4LiI4Lil4LiwCivguK3guIoKK+C4reC4iuC4tOC4mQor4Lit4LiK4Li04LiZ4Li1CivguK3guIrguLTguKMKK+C4reC4iuC4teC4p+C4p+C4tOC4l+C4ogor4Lit4LiP4Lin4Li1CivguK3guJPguLQKK+C4reC4k+C4uAor4Lit4LiT4Li5CivguK3guYLguJPguJfguLHguKIKK+C4reC4lAor4Lit4LiU4Li0CivguK3guJTguLTguJbguLUKK+C4reC4lOC4tOC5gOC4l+C4ngor4Lit4LiU4Li04LmA4Lij4LiBCivguK3guJTguLTguKjguKMKK+C4reC4lOC4tOC4qOC4p+C4owor4Lit4LiU4Li04Lio4Lix4LiiCivguK3guJTguLXguJUKK+C4reC4lOC4uOC4pQor4Lit4LiU4Li44Lil4Lii4LmMCivguK3guJXguLQKK+C4reC4leC4tOC4iuC4suC4lQor4Lit4LiV4Li04LiV4Lix4LiT4Lir4LiyCivguK3guJXguLTguJbguLTguJ7guKXguLUKK+C4reC4leC4tOC5gOC4l+C4ngor4Lit4LiV4Li04Lij4Liy4LiKCivguK3guJXguLTguYDguKPguIEKK+C4reC4leC4tOC4quC4suC4owor4Lit4LiV4Li04Liy4Lih4LiZ4LiwCivguK3guJXguLXguJXguLHguIfguKrguI3guLLguJMKK+C4reC4luC4o+C4o+C4nuC5gOC4p+C4lwor4Lit4LiX4Li04LiV4Li0CivguK3guJfguLTguJnguJnguLLguJfguLLguJkKK+C4reC4l+C4tOC4meC4meC4suC4l+C4suC4ouC4tQor4Lit4LiY4Lij4Lij4LihCivguK3guJjguLQKK+C4reC4mOC4tOC4geC4o+C4k+C5jAor4Lit4LiY4Li04LiB4Liy4LijCivguK3guJjguLTguITguKEKK+C4reC4mOC4tOC4iOC4tOC4lQor4Lit4LiY4Li04LiP4LiQ4Liy4LiZCivguK3guJjguLTguJrguJTguLUKK+C4reC4mOC4tOC4muC4suC4ogor4Lit4LiY4Li04LibCivguK3guJjguLTguKHguLLguJXguKMKK+C4reC4mOC4tOC4oeC4uOC4leC4leC4tAor4Lit4LiY4Li04LmC4Lih4LiB4LiC4LmMCivguK3guJjguLTguKPguLLguIoKK+C4reC4mOC4tOC4p+C4suC4qgor4Lit4LiY4Li04Lin4Liy4Liq4LiZ4LiwCivguK3guJjguLTguKjguLXguKUKK+C4reC4mOC4tOC4qeC4kOC4suC4mQor4Lit4LiY4Li24LiBCivguK3guYnguJkKK+C4reC4meC4h+C4hOC5jAor4Lit4LiZ4LiH4LiE4LiT4LiwCivguK3guJnguJjguLTguKfguKMKK+C4reC4meC4meC4leC5jAor4Lit4LiZ4Lig4Li04Lij4LiV4Li0CivguK3guJnguKLguLAKK+C4reC4meC4o+C4o+C4hgor4Lit4LiZ4Lij4Lij4LiWCivguK3guJnguKPguLTguKLguJvguKPguLTguYDguKLguKrguJnguLIKK+C4reC4meC4pQor4Lit4LiZ4Lin4Lix4LiKCivguK3guYnguJnguK3guYnguK0KK+C4reC4meC4seC4jQor4Lit4LiZ4Lix4LiV4LiV4Lil4Lix4LiB4Lip4LiT4LiwCivguK3guJnguLHguJXguJXguLIKK+C4reC4meC4seC4meC4leC5jAor4Lit4LiZ4Lix4LihCivguK3guJnguLLguITguJUKK+C4reC4meC4suC4hOC4suC4oeC4tQor4Lit4LiZ4Liy4LiE4Liy4Lij4Li04LiBCivguK3guJnguLLguITguLLguKPguLTguKLguYDguJ7guKgKK+C4reC4meC4suC4iOC4suC4owor4Lit4LiZ4Liy4LiWCivguK3guJnguLLguJbguLIKK+C4reC4meC4suC4l+C4owor4Lit4LiZ4Liy4LiY4Li04Lib4LmE4LiV4LiiCivguK3guJnguLLguKHguLHguKIKK+C4reC4meC4suC4o+C4ouC4sAor4Lit4LiZ4Liy4Lil4Lix4LiiCivguK3guJnguLLguKfguKPguJPguI3guLLguJMKK+C4reC4meC4swor4Lit4LiZ4Li04LiICivguK3guJnguLTguIjguIjguLHguIcKK+C4reC4meC4tOC4iOC4iOC4sgor4Lit4LiZ4Li04LiP4LiQ4Liy4Lij4Lih4LiT4LmMCivguK3guJnguLTguKLguJUKK+C4reC4meC4tOC4ouC4oQor4Lit4LiZ4Li04LilCivguK3guJnguLTguKfguKPguKPguJUKK+C4reC4meC4tOC4p+C4o+C4o+C4leC4meC5jAor4Lit4LiZ4Li04Lip4LiP4LmMCivguK3guJnguLXguIHguLAKK+C4reC4meC4teC4iAor4Lit4LiZ4Li24LiBCivguK3guJnguLbguYjguIcKK+C4reC4meC4uAor4Lit4LiZ4Li44LiB4LijCivguK3guJnguLjguIHguKPguKEKK+C4reC4meC4uOC4geC4o+C4o+C4oeC4geC4suC4owor4Lit4LiZ4Li44LiB4Lij4Liw4LmA4Lia4Li14Lii4LiUCivguK3guJnguLjguIHguLLguIrguLLguJQKK+C4reC4meC4uOC4geC4suC4owor4Lit4LiZ4Li44LiB4Li54LilCivguK3guJnguLjguITguLLguKHguLTguIEKK+C4reC4meC4uOC4hOC4suC4oeC4tQor4Lit4LiZ4Li44LmA4LiE4Lij4Liy4Liw4Lir4LmMCivguK3guJnguLjguIjguKMKK+C4reC4meC4uOC4igor4Lit4LiZ4Li44LiK4LiyCivguK3guJnguLjguIrguLLguJUKK+C4reC4meC4uOC4iuC4tOC4lQor4Lit4LiZ4Li44LiN4Liy4LiVCivguK3guJnguLjguI3guLLguYLguJXguJXguLjguKXguLLguIHguLLguKMKK+C4reC4meC4uOC5gOC4luC4o+C4sAor4Lit4LiZ4Li44LiX4Li04LiZCivguK3guJnguLjguJrguJcKK+C4reC4meC4uOC4muC4suC4pQor4Lit4LiZ4Li44Lia4Li44LieCivguK3guJnguLjguJvguKPguLTguI3guI3guLIKK+C4reC4meC4uOC4m+C4quC4seC4oeC4muC4seC4mQor4Lit4LiZ4Li44Lib4Lix4Liq4LiZ4LiyCivguK3guJnguLjguJ7guIfguKjguYwKK+C4reC4meC4uOC4nuC4meC4mOC5jAor4Lit4LiZ4Li44Lie4Lix4LiZ4LiY4LmMCivguK3guJnguLjguYLguJ7guJgKK+C4reC4meC4uOC4oOC4o+C4o+C4ouC4sgor4Lit4LiZ4Li44Lig4Liy4LiECivguK3guJnguLjguKDguLLguKkKK+C4reC4meC4uOC4oeC4seC4leC4tAor4Lit4LiZ4Li44Lih4Liy4LiV4Lij4LiyCivguK3guJnguLjguKHguLLguJkKK+C4reC4meC4uOC4oeC4ueC4pQor4Lit4LiZ4Li44LmC4Lih4LiX4LiZ4LiyCivguK3guJnguLjguYLguKLguIQKK+C4reC4meC4uOC4o+C4seC4geC4qeC5jAor4Lit4LiZ4Li44Lij4Liy4LiKCivguK3guJnguLjguKPguLLguJjguLIKK+C4reC4meC4uOC4o+C4ueC4mwor4Lit4LiZ4Li44LmC4Lil4LihCivguK3guJnguLjguKfguIfguKjguYwKK+C4reC4meC4uOC4p+C4seC4lQor4Lit4LiZ4Li44Lin4Liy4LiVCivguK3guJnguLjguKjguLLguKrguIEKK+C4reC4meC4uOC4qOC4suC4quC4meC5jAor4Lit4LiZ4Li44Lio4Liy4Liq4LiZ4Liy4LiI4Liy4Lij4Lii4LmMCivguK3guJnguLjguKjguLTguKnguI/guYwKK+C4reC4meC4uOC4quC4leC4tAor4Lit4LiZ4Li44Liq4LiZ4LiY4Li0CivguK3guJnguLjguKrguKDguLLguIHguLLguIrguLLguJQKK+C4reC4meC4uOC4quC4owor4Lit4LiZ4Li44Liq4Lij4LiT4LmMCivguK3guJnguLjguKrguLHguI3guI3guLIKK+C4reC4meC4uOC4quC4seC4ogor4Lit4LiZ4Li44Liq4Liy4Lin4Lij4Li14Lii4LmMCivguK3guJnguLjguKrguLLguKrguJnguLUKK+C4reC5gOC4meC4gQor4Lit4LmA4LiZ4LiB4LiE4Li44LiTCivguK3guYDguJnguIHguKfguLTguJgKK+C4reC5gOC4meC4iOC4reC4meC4suC4lgor4Lit4LmA4LiZ4LiN4LiK4Liy4Lig4Li04Liq4Lix4LiH4LiC4Liy4LijCivguK3guYDguJnguKrguJnguLIKK+C4reC5guC4meC4iuC4sgor4Lit4LmC4LiZ4LiU4Liy4LiVCivguK3guJoKK+C4reC4muC5gOC4iuC4ogor4Lit4Lia4Liy4LiiCivguK3guJsKK+C4reC4m+C4geC4suC4owor4Lit4Lib4LiX4Liy4LiZCivguK3guJvguYDguJfguKgKK+C4reC4m+C4oOC4suC4hOC4ouC5jAor4Lit4Lib4Lih4LiH4LiE4LilCivguK3guJvguKHguLLguJkKK+C4reC4m+C4ouC4qAor4Lit4Lib4Lij4LiB4LiV4Li0CivguK3guJvguKPguLDguKHguLLguJMKK+C4reC4m+C4o+C4sOC4oeC4suC4lwor4Lit4Lib4Lij4Liw4LmE4Lih4LiiCivguK3guJvguKPguLHguJMKK+C4reC4m+C4o+C4sgor4Lit4Lib4Lij4Liy4LiK4Lix4LiiCivguK3guJvguKPguLLguIrguLTguJUKK+C4reC4m+C4o+C4suC4mAor4Lit4Lib4Lij4Liy4Lib4Lij4LmA4LiI4LiV4LiZ4LiyCivguK3guJvguKPguLLguJvguKPguYDguKfguJfguJnguLXguKLguIHguKPguKPguKEKK+C4reC4m+C4o+C4tOC4oeC4suC4kwor4Lit4Lib4Lij4Li04Lir4Liy4Lij4Li04Lii4LiY4Lij4Lij4LihCivguK3guJvguKXguLHguIHguKnguJPguYwKK+C4reC4m+C5guC4peC4geC4meC5jAor4Lit4Lib4Lin4Liy4LiXCivguK3guJvguKvguLLguKMKK+C4reC4m+C4seC4k+C4k+C4geC4m+C4j+C4tOC4m+C4l+C4sgor4Lit4Lib4Lix4LiX4Lij4LieCivguK3guJvguLLguIjguLLguKLguJnguLAKK+C4reC4m+C4suC4iOC4tQor4Lit4Lib4Liy4LiI4Li14LiZCivguK3guJvguLjguI3guI3guLLguKDguLTguKrguLHguIfguILguLLguKMKK+C4reC5gOC4m+C4q+C4tAor4Lit4Lie4LiI4LiZ4LmMCivguK3guJ7guJ7guLAKK+C4reC4nuC4ouC4ngor4Lit4Lie4Lii4Liy4Lia4Liy4LiX4Lin4Li04LiV4LiBCivguK3guJ7guKUKK+C4reC4nuC4peC4sgor4Lit4Lie4Liy4Lij4LmM4LiV4LmA4Lih4LiZ4LiV4LmMCivguK3guKDguKcKK+C4reC4oOC4seC4ngor4Lit4Lig4Lix4LiiCivguK3guKDguLQKK+C4reC4oOC4tOC4hOC4oQor4Lit4Lig4Li04LiG4Liy4LiVCivguK3guKDguLTguIjguInguLIKK+C4reC4oOC4tOC4iOC4jOC4sgor4Lit4Lig4Li04LiK4LiZCivguK3guKDguLTguIrguLHguKIKK+C4reC4oOC4tOC4iuC4suC4lQor4Lit4Lig4Li04LiK4Li04LiVCivguK3guKDguLTguI3guI3guLIKK+C4reC4oOC4tOC4jeC4jeC4suC4kwor4Lit4Lig4Li04LiQ4Liy4LiZCivguK3guKDguLTguJjguKPguKPguKEKK+C4reC4oOC4tOC4mOC4suC4mQor4Lit4Lig4Li04LmE4LiY4LiiCivguK3guKDguLTguJnguLHguJnguJfguYwKK+C4reC4oOC4tOC4meC4seC4ogor4Lit4Lig4Li04LiZ4Liy4LiXCivguK3guKDguLTguJnguLTguKvguLLguKMKK+C4reC4oOC4tOC5gOC4meC4qeC4geC4o+C4oeC4k+C5jAor4Lit4Lig4Li04Lia4Liy4LilCivguK3guKDguLTguJvguKPguLHguIrguI3guLIKK+C4reC4oOC4tOC4m+C4o+C4suC4ogor4Lit4Lig4Li04Lih4Lir4Liy4Lit4Liz4LiZ4Liy4LiICivguK3guKDguLTguKHguLLguJnguLAKK+C4reC4oOC4tOC4oeC4uOC4ggor4Lit4Lig4Li04Lij4LiU4Li1CivguK3guKDguLTguKPguJXguLQKK+C4reC4oOC4tOC4o+C4oeC4ouC5jAor4Lit4Lig4Li04Lij4Lix4LiB4Lip4LmMCivguK3guKDguLTguKPguLHguJDguKHguJnguJXguKPguLUKK+C4reC4oOC4tOC4o+C4suC4oQor4Lit4Lig4Li04Lij4Li44LiVCivguK3guKDguLTguKPguLjguKEKK+C4reC4oOC4tOC4o+C4ueC4mwor4Lit4Lig4Li04Lil4Lix4LiB4LiC4Li04LiVCivguK3guKDguLTguKXguLLguKoKK+C4reC4oOC4tOC5gOC4peC4m+C4meC5jAor4Lit4Lig4Li04Lin4Lix4LiZ4LiX4LmMCivguK3guKDguLTguKfguLLguJcKK+C4reC4oOC4tOC4p+C4suC4l+C4meC5jAor4Lit4Lig4Li04LmA4Lip4LiBCivguK3guKDguLTguKrguJfguJjguLTguYwKK+C4reC4oOC4tOC4quC4oeC5guC4nuC4mOC4tAor4Lit4Lig4Li04Liq4Lih4Lix4LiiCivguK3guKDguLTguKrguLHguIfguILguLLguKMKK+C4reC4oOC4tOC4quC4seC4oeC5guC4nuC4mOC4tAor4Lit4Lig4Li04Liq4Li04LiVCivguK3guKDguLnguJUKK+C4reC4oQor4Lit4LmJ4LihCivguK3guKHguJXguLAKK+C4reC4oeC4meC4uOC4qeC4ouC5jAor4Lit4Lih4LijCivguK3guKHguKPguJrguJTguLUKK+C4reC4oeC4o+C4m+C4uOC4o+C4sAor4Lit4Lih4Lij4Lij4Lix4LiV4LiZ4LmMCivguK3guKHguKPguKPguLLguIoKK+C4reC4oeC4o+C4quC4leC4o+C4tQor4Lit4Lih4LmA4Lij4LioCivguK3guKHguYDguKPguKjguKfguKMKK+C4reC4oeC4pOC4lQor4Lit4Lih4Lik4LiV4Lii4Li5CivguK3guKHguLHguIjguIjguLAKK+C4reC4oeC4seC4leC4owor4Lit4Lih4Liy4LiV4Lii4LmMCivguK3guKHguLLguKfguKrguLgKK+C4reC4oeC4suC4p+C4suC4quC4tQor4Lit4Lih4Li04LiV4LijCivguK3guYDguKHguKPguLTguIHguLHguJkKK+C4reC4ogor4Lit4Lii4LiZCivguK3guKLguLHguKoKK+C4reC4ouC5iOC4sgor4Lit4Lii4Liy4LiBCivguK3guKLguYjguLLguIcKK+C4reC4ouC4uOC4leC4tOC4mOC4o+C4o+C4oQor4Lit4Lii4Li44LiX4LiY4LmMCivguK3guKLguLnguYgKK+C4reC4owor4Lit4Lij4LiKCivguK3guKPguIrguKMKK+C4reC4o+C4iuC4uOC4mQor4Lit4Lij4LiTCivguK3guKPguJTguLUKK+C4reC4o+C4leC4tAor4Lit4Lij4LmE4LiXCivguK3guKPguJjguLLguJkKK+C4reC4o+C4meC4uOC4igor4Lit4Lij4Lie4Li04LiZ4LiX4LmMCivguK3guKPguJ7guLTguKEKK+C4reC4o+C4o+C4hAor4Lit4Lij4Lij4LiGCivguK3guKPguKPguIbguKLguYwKK+C4reC4o+C4o+C4iOC4meC5jAor4Lit4Lij4Lij4LiT4LieCivguK3guKPguKPguJYKK+C4reC4o+C4o+C4mAor4Lit4Lij4Lij4LiY4Liy4LiH4LiE4LmMCivguK3guKPguKrguLjguKEKK+C4reC4o+C4q+C4sAor4Lit4Lij4Lir4Lix4LiHCivguK3guKPguKvguLHguJUKK+C4reC4o+C4q+C4seC4mQor4Lit4Lij4Lir4Lix4LiZ4LiV4LmMCivguK3guKPguYjguK3guKIKK+C4reC4o+C4seC4jQor4Lit4Lij4Lix4LiZ4LiV4LmMCivguK3guKPguLLguJTguLUKK+C4reC4o+C4suC4leC4tAor4Lit4Lij4LmI4Liy4LihCivguK3guKPguLQKK+C4reC4o+C4tOC4mQor4Lit4Lij4Li04Lii4LiB4LiwCivguK3guKPguLTguKLguLAKK+C4reC4o+C4uAor4Lit4Lij4Li44LiTCivguK3guKPguLjguYjguKEKK+C4reC4o+C4ueC4mwor4Lit4Lil4LiH4LiB4LiVCivguK3guKXguIfguIHguKPguJPguYwKK+C4reC4peC4h+C4geC4suC4owor4Lit4Lil4Lin4LiZCivguK3guKXguYDguKfguIcKK+C4reC4peC4q+C4oeC5iOC4suC4mQor4Lit4Lil4LmI4Lit4LiH4LiJ4LmI4Lit4LiHCivguK3guKXguLHguIHguYDguK3guKXguLfguYjguK0KK+C4reC4peC4seC4iuC4iuC4tQor4Lit4Lil4LmI4Liy4LiH4LiJ4LmI4Liy4LiHCivguK3guKXguLQKK+C4reC4peC4tOC4h+C4hOC5jAor4Lit4Lil4Li24LiH4LiE4LmMCivguK3guKXguLbguYjguIfguInguLbguYjguIcKK+C4reC5guC4peC4q+C4sAor4Lit4Lin4LiBCivguK3guYnguKfguIEKK+C4reC4p+C4geC4suC4qAor4Lit4Lin4LmA4LiE4Lij4Liy4Liw4Lir4LmMCivguK3guKfguIjguKMKK+C4reC4p+C4iuC4seC4ogor4Lit4Lin4LiK4Liy4LiVCivguK3guKfguJQKK+C4reC4p+C4leC4suC4owor4Lit4Lin4LiZCivguK3guYnguKfguJkKK+C4reC4p+C4meC4tAor4Lit4Lin4LiaCivguK3guKfguKHguIfguITguKUKK+C4reC4p+C4oeC4reC4swor4Lit4LmJ4Lin4Lih4LmA4Lit4Li14LiiCivguK3guKfguKIKK+C4reC4p+C4ouC4p+C4sAor4Lit4Lin4Lij4Li44LiX4LiY4LmMCivguK3guKfguKPguLjguJjguJfguIEKK+C4reC4p+C4pQor4Lit4Lin4Liq4Liy4LiZCivguK3guKfguKvguLLguKMKK+C4reC4p+C4seC4leC4luC4sgor4Lit4Lin4Lix4Lii4Lin4LiwCivguK3guKfguLHguKrguJTguLIKK+C4reC4p+C4suC4iOC4tQor4Lit4Lin4Li04LiI4Li1CivguK3guKfguLTguIrguIrguLIKK+C4reC4p+C4tOC4jeC4jeC4uQor4Lit4Lin4Li04Lij4Li44LiX4LiY4LmMCivguK3guKfguLTguYLguKPguJjguJnguYwKK+C4reC4p+C4teC4iOC4tAor4Lit4LmA4Lin4LiI4Li1CivguK3guYDguKfguYTguJnguKLguKrguLHguJXguKfguYwKK+C4reC5guC4qOC4gQor4Lit4Liq4LiH4LmE4LiC4LiiCivguK3guKrguJnguLUKK+C4reC4quC4oAor4Lit4Liq4Lih4LiB4Liy4LijCivguK3guKrguKHguKHguLLguJXguKMKK+C4reC4quC4o+C4nuC4tOC4qQor4Lit4Liq4Lix4LiH4LiB4Lih4LiX4Lij4Lix4Lie4Lii4LmMCivguK3guKrguLHguIfguILguJXguJjguKPguKPguKEKK+C4reC4quC4seC4h+C4q+C4suC4o+C4tOC4oeC4sAor4Lit4Liq4Lix4LiN4LiN4Li1CivguK3guKrguLHguI3guYHguJTguKvguKfguLIKK+C4reC4quC4seC4leC4luC4nuC4pOC4geC4qeC5jAor4Lit4Liq4Lix4LiV4Lii4LmMCivguK3guKrguLLguJjguKMKK+C4reC4quC4suC4mOC4uAor4Lit4Liq4Liy4Lie4LiV4Li0CivguK3guKrguLQKK+C4reC4quC4tOC4lQor4Lit4Liq4Li14LiV4Lii4Liy4LiZ4Li44Lie4Lii4Lix4LiN4LiK4LiZ4LiwCivguK3guKrguLXguJXguLQKK+C4reC4quC4uAor4Lit4Liq4Li44LiI4Li0CivguK3guKrguLjguI3guIHguLHguKXguJvguYwKK+C4reC4quC4uOC4meC4teC4muC4suC4lQor4Lit4Liq4Li44LigCivguK3guKrguLjguKPguLTguJnguJfguKPguYwKK+C4reC4quC4uOC4o+C4tQor4Lit4Liq4Li44LmA4Lij4LiZ4LiX4Lij4LmMCivguK3guKrguLjguYDguKPguKgKK+C4reC4quC4ueC4owor4Lit4LmA4LiqCivguK3guYDguKrguIHguILguLAKK+C4reC5gOC4quC4guC4sAor4Lit4LmA4Liq4Lin4LiZ4LiwCivguK3guYDguKrguKfguJnguLIKK+C4reC4qwor4Lit4Lir4Lix4LiH4LiB4Liy4LijCivguK3guKvguLQKK+C4reC4q+C4tOC4h+C4quC4sgor4Lit4Lir4Li24LiH4Liq4LiyCivguK3guYDguKvguJXguLjguIHguJfguLTguJDguLQKK+C4reC5guC4q+C4quC4tAor4Lit4LitCivguK3guYnguK0KK+C4reC5i+C4rQor4Lit4Lit4LiBCivguK3guK3guIHguIvguLTguYDguIjguJkKK+C4reC4reC4geC4i+C4tOC5gOC4lOC4iuC4seC4mQor4Lit4Lit4LiB4LmE4LiL4LiU4LmMCivguK3guYjguK3guIcKK+C4reC5i+C4reC4hwor4Lit4LmJ4Lit4LiH4LmB4Lit4LmJ4LiHCivguK3guK3guYDguIvguLLguLAKK+C4reC4reC4lAor4Lit4LmK4Lit4LiU4LmG4LmB4Lit4LmK4LiU4LmGCivguK3guYrguK3guJTguYHguK3guYrguJQKK+C4reC5iOC4reC4mQor4Lit4LmJ4Lit4LiZCivguK3guK3guJnguIvguYwKK+C4reC4reC4meC4i+C4reC4mQor4Lit4LmI4Lit4LiZ4LiL4Lit4LiZCivguK3guYnguK3guJnguYHguK3guYnguJkKK+C4reC4reC4n+C4n+C4tOC4qAor4Lit4Lit4LihCivguK3guYjguK3guKEKK+C4reC5ieC4reC4oQor4Lit4Lit4Lih4LiE4Lij4Lit4LihCivguK3guK3guKHguIrguK3guKEKK+C4reC4reC4oeC4i+C4reC4oQor4Lit4LmJ4Lit4Lih4LmB4Lit4LmJ4LihCivguK3guYjguK3guKIKK+C4reC5ieC4reC4ogor4Lit4LmL4Lit4LiiCivguK3guYnguK3guKLguKrguYnguK3guKIKK+C4reC5ieC4reC4ouC4reC4tOC5iOC4hwor4Lit4Lit4Lij4LmM4LmB4LiB4LiZCivguK3guK3guKPguYzguYDguJTguLTguKPguYzguJ8KK+C4reC4reC4quC5gOC4oeC4teC4ouC4oQor4Lit4LmJ4Lit4LmB4Lit4LmJCivguK3guYrguLAKK+C4reC4sOC4hOC4o+C5ieC4suC4pwor4Lit4Liw4LmA4LiE4Li34LmJ4LitCivguK3guLDguIjguLXguJkKK+C4reC4sOC5geC4iAor4Lit4Liw4LmA4LiL4LiX4Li04Lil4Li14LiZCivguK3guLDguJTguKPguLfguJnguLLguKXguLTguJkKK+C4reC4sOC4lOC4seC4gQor4Lit4Liw4LiU4Li44LiHCivguK3guLDguJXguK3guKEKK+C4reC4sOC4meC4sAor4Lit4Liw4LiZ4Lix4LmJ4LiZCivguK3guLDguJnguLXguYkKK+C4reC4sOC4oeC4teC4muC4sgor4Lit4Liw4LmA4Lih4Lij4Li04LmA4LiL4Li14Lii4LihCivguK3guLDguKPguYnguLLguK3guKPguYjguLLguKEKK+C4reC4sOC5hOC4owor4Lit4Liw4Lil4Lix4LiH4LiB4Liy4LijCivguK3guLDguKXguLjguYjguKHguK3guKXguYjguKfguKIKK+C4reC4sOC4peC4uOC5ieC4oeC4reC4peC5iOC4p+C4ogor4Lit4Liw4Lil4Li54Lih4Li04LmA4LiZ4Li14Lii4LihCivguK3guLDguKvguKEKK+C4reC4sOC5hOC4q+C4peC5iAor4Lit4Liw4Lit4Li34LmJ4LitCivguK3guLDguYDguK3guLfguYnguK3guKIKK+C4reC4seC4gQor4Lit4Lix4LmJ4LiBCivguK3guLHguYrguIEKK+C4reC4seC5ieC4geC5hgor4Lit4Lix4LmK4LiB4LmGCivguK3guLHguIHguIHguLAKK+C4reC4seC4geC5guC4geC4mOC4sAor4Lit4Lix4LiB4LmC4LiB4Liq4Lin4Lix4LiV4LiW4Li4CivguK3guLHguIHguIIKK+C4reC4seC4geC4guC4o+C4sAor4Lit4Lix4LiB4LiC4Lij4Liy4LiZ4Li44LiB4Lij4Lih4Lig4Li54Lih4Li04Lio4Liy4Liq4LiV4Lij4LmMCivguK3guLHguIHguILguLLguJkKK+C4reC4seC4geC5guC4ggor4Lit4Lix4LiB4LmC4LiC4Lig4Li04LiT4Li1CivguK3guLHguIHguYLguILguYDguKDguJPguLUKK+C4reC4seC4geC4qeC4owor4Lit4Lix4LiB4Lip4LiwCivguK3guLHguIHguYDguKnguLLguKvguLTguJPguLUKK+C4reC4seC4geC5gOC4quC4mgor4Lit4Lix4LiB4Lit4LmI4Lin4LiZCivguK3guLHguITguITguLAKK+C4reC4seC4hOC4hOC4tAor4Lit4Lix4LiE4LiE4Li1CivguK3guLHguITguJnguLQKK+C4reC4seC4hOC4meC4tQor4Lit4Lix4LiE4LiZ4Li14LiB4Lij4Li14LiR4LiyCivguK3guLHguIcKK+C4reC4seC4h+C4geC5jAor4Lit4Lix4LiH4LiB4LiZ4LiwCivguK3guLHguIfguIHguKTguKkKK+C4reC4seC4h+C4geC4p+C4lAor4Lit4Lix4LiH4LiB4Liw4Lil4Li44LiHCivguK3guLHguIfguIHguLIKK+C4reC4seC4h+C4geC4suC4mgor4Lit4Lix4LiH4LiB4Li44LijCivguK3guLHguIfguIHguLjguKgKK+C4reC4seC4h+C4geC4ueC4owor4Lit4Lix4LiH4LiE4LiT4LiwCivguK3guLHguIfguITguJPguLIKK+C4reC4seC4h+C4hOC4sAor4Lit4Lix4LiH4LiE4Liy4LijCivguK3guLHguIfguITguLLguKoKK+C4reC4seC4h+C4hOC4teC4o+C4qgor4Lit4Lix4LiH4LiE4Li44LiQCivguK3guLHguIfguIbguLLguJUKK+C4reC4seC5ieC4h+C5gOC4m+C4sgor4Lit4Lix4LmJ4LiH4Lih4LmJ4LitCivguK3guLHguYnguIfguKLguLXguYgKK+C4reC4seC5ieC4h+C5guC4peC5iAor4Lit4Lix4LiH4Lio4LiwCivguK3guLHguIfguKjguLgKK+C4reC4seC4h+C4qOC4uOC4gQor4Lit4Lix4LiH4Liq4LiV4Lij4Lit4LihCivguK3guLHguIfguKrguJnguLIKK+C4reC4seC4h+C4quC4sAor4Lit4Lix4LiI4LiB4Lil4Lix4LiaCivguK3guLHguIjguIjguLHguJnguJXguYwKK+C4reC4seC4iOC4iOC4seC4ogor4Lit4Lix4LiI4LiI4Li0CivguK3guLHguIjguIjguLjguJUKK+C4reC4seC4iOC5gOC4iOC4geC4sAor4Lit4Lix4LiI4LiJ4Lij4LiyCivguK3guLHguIjguInguKPguLTguKLguLAKK+C4reC4seC4iOC4meC4sgor4Lit4Lix4LiK4LiM4LiyCivguK3guLHguIrguIzguLLguIjguLLguKMKK+C4reC4seC4iuC4jOC4suC4qOC4seC4ogor4Lit4Lix4LiK4LiM4Liy4Liq4Lix4LiiCivguK3guLHguIrguJrguLLguKUKK+C4reC4seC4jeC4guC4ouC4oQor4Lit4Lix4LiN4LiK4LiZ4LiwCivguK3guLHguI3guIrguKXguLUKK+C4reC4seC4jeC4iuC4seC4mQor4Lit4Lix4LiN4LmA4LiK4Li04LiNCivguK3guLHguI3guI3guLAKK+C4reC4seC4jeC4m+C4o+C4sOC4geC4suC4qAor4Lit4Lix4LiN4Lih4Lix4LiN4LiN4LiwCivguK3guLHguI3guKPguLnguJsKK+C4reC4seC4jwor4Lit4Lix4LiP4LiQCivguK3guLHguI/guJnguLIKK+C4reC4seC4kAor4Lit4Lix4LiQ4Lih4LiwCivguK3guLHguJDguKzguKoKK+C4reC4seC4kOC4tAor4Lit4Lix4LiT4LiR4LiwCivguK3guLHguJPguJPguJ4KK+C4reC4seC4lAor4Lit4Lix4LiU4LmB4LiICivguK3guLHguJXguITguLHguJQKK+C4reC4seC4leC4iOC4o+C4tOC4ouC4sgor4Lit4Lix4LiV4LiV4LiwCivguK3guLHguJXguJXguLIKK+C4reC4seC4leC4luC5jAor4Lit4Lix4LiV4LiW4LiwCivguK3guLHguJXguYLguJnguKHguLHguJXguLQKK+C4reC4seC4leC4o+C4iuC4sAor4Lit4Lix4LiV4Lij4LiyCivguK3guLHguJXguKXguLHguJQKK+C4reC4seC4l+C4l+C4sgor4Lit4Lix4LiX4LiY4LmMCivguK3guLHguJfguJjguLIKK+C4reC4seC4l+C4mOC4suC4mQor4Lit4Lix4LiY4Lii4Liy4LiV4Lih4Lin4Li04LiX4Lii4LiyCivguK3guLHguJjguKLguLLguKIKK+C4reC4seC4mOC4ouC4suC4qOC4seC4ogor4Lit4Lix4LiZCivguK3guLHguYnguJkKK+C4reC4seC5i+C4mQor4Lit4Lix4LiZ4LiU4LiBCivguK3guLHguJnguJTguKMKK+C4reC4seC4meC4lOC4seC4mgor4Lit4Lix4LiZ4LiU4LmK4Liy4LiBCivguK3guLHguJnguYLguJTguYrguIEKK+C4reC4seC4meC4leC4owor4Lit4Lix4LiZ4LiV4Lij4LiY4Liy4LiZCivguK3guLHguJnguJXguKPguLIKK+C4reC4seC4meC4leC4o+C4suC4ogor4Lit4Lix4LiZ4LiV4Li04LiBCivguK3guLHguJnguJXguLTguKHguLAKK+C4reC4seC4meC5gOC4lQor4Lit4Lix4LiZ4LmC4LiVCivguK3guLHguJnguYHguJbguYnguIcKK+C4reC4seC4meC4l+C4uAor4Lit4Lix4LiZ4LmC4LiX4LilCivguK3guLHguJnguJnguLAKK+C4reC4seC4meC4ouC4sAor4Lit4Lix4LiZ4LmC4Lii4LiZ4Lii4LiwCivguK3guLHguJnguKfguLHguKIKK+C4reC4seC4meC5gOC4p+C4qgor4Lit4Lix4LiaCivguK3guLHguJrguJvguLLguIcKK+C4reC4seC4m+C4geC4sAor4Lit4Lix4Lib4LiB4Liy4LijCivguK3guLHguJvguI/guLTguIbguLAKK+C4reC4seC4m+C4j+C4tOC4oOC4suC4hAor4Lit4Lix4Lib4Lib4LiwCivguK3guLHguJvguKDguLLguITguKLguYwKK+C4reC4seC4m+C4oeC4h+C4hOC4pQor4Lit4Lix4Lib4Lii4LioCivguK3guLHguJvguKPguLDguKHguLLguJMKK+C4reC4seC4m+C4o+C4sOC4oeC4suC4lwor4Lit4Lix4Lib4Lij4Liw4LmE4Lih4LiiCivguK3guLHguJvguKPguLLguIrguLHguKIKK+C4reC4seC4m+C4o+C4teC4ouC5jAor4Lit4Lix4Lib4Lil4Lix4LiB4Lip4LiT4LmMCivguK3guLHguJvguKrguKMKK+C4reC4seC4nuC4nuC4uOC4lwor4Lit4Lix4Lie4LmC4Lie4Lir4Liy4Lij4Li04LiBCivguK3guLHguJ7guKDguLHguJnguJTguKMKK+C4reC4seC4nuC4oOC4suC4mQor4Lit4Lix4Lie4Lig4Liy4LiqCivguK3guLHguKEKK+C4reC4seC4oeC4nuC4owor4Lit4Lix4Lih4Lie4LiyCivguK3guLHguKHguJ7guLTguKUKK+C4reC4seC4oeC4nuC4uAor4Lit4Lix4Lii4LiB4LiwCivguK3guLHguKLguIHguLIKK+C4reC4seC4ouC4geC4suC4owor4Lit4Lix4Lii4LiB4Li1CivguK3guLHguKLguKLguLAKK+C4reC4seC4ouC4ouC4suC4oOC4o+C4tOC4ouC4sgor4Lit4Lix4Lii4Lii4Li04LiB4LiyCivguK3guLHguKXguJXguKPguLLguYTguKfguYLguK3guYDguKXguJUKK+C4reC4seC5iOC4pwor4Lit4Lix4LmK4LinCivguK3guLHguKjguIjguKPguKPguKLguYwKK+C4reC4seC4qOC5gOC4iOC4o+C4teC4ouC5jAor4Lit4Lix4Lip4LiO4Lih4LiwCivguK3guLHguKrguJTguIcKK+C4reC4seC4quC4lOC4oQor4Lit4Lix4Liq4LiZ4Li1CivguK3guLHguKrguKHguLTguKHguLLguJnguLAKK+C4reC4seC4quC4quC4sAor4Lit4Lix4Liq4Liq4Lix4LiV4LiW4Lie4Lik4LiB4Lip4LmMCivguK3guLHguKrguKrguLgKK+C4reC4sgor4Lit4LmI4LiyCivguK3guYnguLIKK+C4reC4suC4geC4hwor4Lit4Liy4LiB4LijCivguK3guLLguIHguLHguIfguILguLIKK+C4reC4suC4geC4seC4mwor4Lit4Liy4LiB4Lix4Lih4Lib4LiZ4LiwCivguK3guLLguIHguLHguKHguJvguLAKK+C4reC4suC4geC4suC4owor4Lit4Liy4LiB4Liy4LioCivguK3guLLguIHguLTguI3guIjguLHguI3guI3guLAKK+C4reC4suC4geC4ueC4pQor4Lit4Liy4LmA4LiB4Li14Lii4Lij4LiT4LmMCivguK3guLLguILguKLguLLguJUKK+C4reC4suC4guC4ouC4suC4mQor4Lit4Liy4LiE4LmA4LiZ4Lii4LmMCivguK3guLLguITguKEKK+C4reC4suC4hOC4o+C4q+C4suC4ouC4k+C4tQor4Lit4Liy4LiE4Lix4LiZ4LiV4Li44LiB4LiwCivguK3guLLguITguLLguKMKK+C4reC4suC4huC4suC4lQor4Lit4Liy4LiG4Liy4LiV4LiZ4LiwCivguK3guYjguLLguIcKK+C4reC5ieC4suC4hwor4Lit4Liy4LiH4LiC4LiZ4Liy4LiHCivguK3guYnguLLguIfguKfguYnguLLguIcKK+C4reC4suC4iAor4Lit4Liy4LiI4LihCivguK3guLLguIjguKHguJkKK+C4reC4suC4iOC4suC4lAor4Lit4Liy4LiI4Liy4LijCivguK3guLLguIjguLLguKPguKLguYwKK+C4reC4suC4iOC4tOC4kwor4Lit4Liy4LmA4LiI4Li14Lii4LiZCivguK3guLLguIrguI3guLHguJvguJXguLQKK+C4reC4suC4iuC4jeC4seC4m+C4leC4tOC5jAor4Lit4Liy4LiK4LiN4LiyCivguK3guLLguIrguKfguLAKK+C4reC4suC4iuC4sgor4Lit4Liy4LiK4Liy4LiZCivguK3guLLguIrguLLguJnguLQKK+C4reC4suC4iuC4suC5hOC4meC4ogor4Lit4Liy4LiK4Li14LieCivguK3guLLguIrguLXguKfguIEKK+C4reC4suC4iuC4teC4p+C4meC4sAor4Lit4Liy4LiK4Li14Lin4LiwCivguK3guLLguI3guLIKK+C4reC4suC4j+C4suC4leC4sgor4Lit4Liy4LiT4Lix4LiV4Li0CivguK3guLLguJPguLIKK+C4reC4suC4k+C4suC4m+C4gQor4Lit4Liy4LiT4Liy4Lib4LiZCivguK3guLLguJQKK+C4reC4suC4lOC5hgor4Lit4Liy4LiU4Li44Lil4Lii4LmMCivguK3guLLguJTguLnguKMKK+C4reC4suC4lOC4ueC4peC4ouC5jAor4Lit4Liy4LmA4LiU4LmK4LiwCivguK3guLLguJXguKHguLHguJkKK+C4reC4suC4leC4uOC4owor4Lit4Liy4LiW4Lij4Lij4Lie4LmMCivguK3guLLguJbguKPguKPguJ7guJPguYwKK+C4reC4suC4luC4o+C4o+C4nuC4k+C4sAor4Lit4Liy4LiX4Lih4Liy4LiPCivguK3guLLguJfguKMKK+C4reC4suC4l+C4suC4leC4sgor4Lit4Liy4LiX4Liy4LiZCivguK3guLLguJfguLTguIHguKfguLUKK+C4reC4suC4l+C4tOC4leC4ouC5jAor4Lit4Liy4LiX4Li14LiZ4LieCivguK3guLLguJfguLXguJnguKcKK+C4reC4suC4l+C4tuC4gQor4Lit4Liy4LmA4LiX4LioCivguK3guLLguJjguKPguKPguKEKK+C4reC4suC4mOC4o+C4o+C4oeC5jAor4Lit4Liy4LiY4Lij4Lij4Lih4Li04LiBCivguK3guLLguJjguKPguKPguKHguLbguIEKK+C4reC4suC4mOC4suC4mQor4Lit4Liy4LiY4Liy4LijCivguK3guLLguJkKK+C4reC5iOC4suC4mQor4Lit4Liy4LiZ4LiBCivguK3guLLguJnguJkKK+C4reC4suC4meC4meC4l+C5jAor4Lit4Liy4LiZ4LiwCivguK3guLLguJnguLHguJnguJfguYwKK+C4reC4suC4meC4seC4meC4l+C4meC4sAor4Lit4Liy4LiZ4Lix4LihCivguK3guLLguJnguLMKK+C4reC4suC4meC4tOC4gQor4Lit4Liy4LiZ4Li04Liq4LiH4LiG4LmMCivguK3guLLguJnguLjguKDguLLguJ4KK+C4reC4suC4meC4uOC4oOC4suC4p+C4sAor4Lit4Liy4LiaCivguK3guLLguJrguLHguIcKK+C4reC4suC4muC4seC4leC4tAor4Lit4Liy4Lia4Lix4LiZCivguK3guLLguJrguLkKK+C4reC4suC4m+C4k+C4sAor4Lit4Liy4Lib4LiwCivguK3guLLguJvguLLguJnguLAKK+C4reC4suC5guC4mwor4Lit4Liy4Lie4Lix4LiUCivguK3guLLguJ7guLHguJfguJjguYwKK+C4reC4suC4nuC4seC4meC4mOC5jAor4Lit4Liy4Lie4Lix4LiZ4LiY4LiZ4LiwCivguK3guLLguJ7guLLguJgKK+C4reC4suC4nuC4tOC4pQor4Lit4Liy4LmA4Lie4LioCivguK3guLLguKDguKPguJPguYwKK+C4reC4suC4oOC4seC4ngor4Lit4Liy4Lig4Lix4Liq4Lij4LiwCivguK3guLLguKDguLIKK+C4reC4suC4oOC4suC4qgor4Lit4Liy4LmC4Lig4LiECivguK3guLLguKHguKXguIEKK+C4reC4suC4oeC4seC4ogor4Lit4Liy4Lih4LiyCivguK3guLLguKHguLTguKkKK+C4reC4suC4oeC4tOC4qgor4Lit4Liy4LiiCivguK3guYnguLLguKIKK+C4reC4suC4ouC4lQor4Lit4Liy4Lii4LiV4LiZ4LiwCivguK3guLLguKLguJkKK+C4reC4suC4ouC4seC4lAor4Lit4Liy4Lii4Lix4LiVCivguK3guLLguKLguLHguJkKK+C4reC4suC4ouC4suC4iOC4meC4sAor4Lit4Liy4Lii4Liy4LiZCivguK3guLLguKLguLgKK+C4reC4suC4ouC4uOC4geC4leC4geC4sAor4Lit4Liy4Lii4Li44LiV4LiB4LiwCivguK3guLLguKLguLjguJgKK+C4reC4suC4ouC4uOC4qQor4Lit4Liy4Lij4LmM4LiB4Lit4LiZCivguK3guLLguKPguJTguLUKK+C4reC4suC4o+C5jOC4lQor4Lit4Liy4Lij4LiV4Li0CivguK3guLLguKPguJfguKPguLIKK+C4reC4suC4o+C4muC4tOC4hAor4Lit4Liy4Lij4LmM4LihCivguK3guLLguKPguKHguJPguYwKK+C4reC4suC4o+C4ouC4sAor4Lit4Liy4Lij4LiwCivguK3guLLguKPguLHguIHguILguLIKK+C4reC4suC4o+C4seC4geC4qeC5jAor4Lit4Liy4Lij4Lix4LiNCivguK3guLLguKPguLHguI3guI3guLTguIEKK+C4reC4suC4o+C4seC4k+C4ouC5jAor4Lit4Liy4Lij4Lix4LiT4Lii4LiB4LiwCivguK3guLLguKPguLHguJXguLQKK+C4reC4suC4o+C4seC4oeC4oOC5jAor4Lit4Liy4Lij4Liy4LiY4LiZ4LmMCivguK3guLLguKPguLLguJjguJnguLIKK+C4reC4suC4o+C4suC4oQor4Lit4Liy4Lij4Li1CivguK3guLLguKPguLjguKEKK+C4reC4suC4peC4m+C4meC5jAor4Lit4Liy4Lil4Lib4LiZ4LiwCivguK3guLLguKXguLDguKfguLLguJQKK+C4reC4suC4peC4seC4geC4qeC4k+C5jAor4Lit4Liy4Lil4Lix4LiiCivguK3guLLguKXguLHguKcKK+C4reC4suC4peC4tAor4Lit4Liy4Lil4Li1CivguK3guLLguYLguKXguIEKK+C4reC4suC4pwor4Lit4LmI4Liy4LinCivguK3guYnguLLguKcKK+C4reC4suC4p+C4o+C4k+C5jAor4Lit4Liy4Lin4Lix4LiK4LiZ4Liy4LiB4Liy4LijCivguK3guLLguKfguLLguKoKK+C4reC4suC4p+C4suC4q+C4sAor4Lit4Liy4Lin4Li04LilCivguK3guLLguKfguLjguJUKK+C4reC4suC4p+C4uOC4mAor4Lit4Liy4Lin4Li44LmC4LiqCivguK3guLLguYDguKfguIQKK+C4reC4suC5gOC4p+C4qAor4Lit4Liy4Lio4Lij4LihCivguK3guLLguKjguKPguKHguJrguJcKK+C4reC4suC4qOC5gOC4peC4qeC4sgor4Lit4Liy4Lio4Lix4LiiCivguK3guLLguKjguLgKK+C4reC4suC5gOC4qOC4teC4ouC4owor4Lit4Liy4Lip4Liy4LiSCivguK3guLLguKrguJnguLAKK+C4reC4suC4quC4oOC4tOC4p+C4suC4iOC4sgor4Lit4Liy4Liq4Lii4Liy4LiZ4Li44Liq4Lix4LiiCivguK3guLLguKrguKfguIHguKnguLHguKIKK+C4reC4suC4quC4p+C4geC4tOC5gOC4peC4qgor4Lit4Liy4Liq4Lix4LiNCivguK3guLLguKrguLHguJXguKLguYwKK+C4reC4suC4quC4seC4meC4meC4sAor4Lit4Liy4Liq4LiyCivguK3guLLguKrguLLguKzguKvguYwKK+C4reC4suC4quC4tOC4jeC4iOC5jAor4Lit4Liy4Liq4Li04LiZCivguK3guLLguKrguLnguKMKK+C4reC4suC5gOC4quC4teC5iOC4ogor4Lit4Liy4LmB4Liq4LiwCivguK3guLLguKvguJUKK+C4reC4suC4q+C4leC4tQor4Lit4Liy4Lir4LiZ4Li1CivguK3guLLguKvguJnguLkKK+C4reC4suC4q+C4oQor4Lit4Liy4Lir4Lii4Lix4LiHCivguK3guLLguKvguKLguLHguJkKK+C4reC4suC4q+C4owor4Lit4Liy4Lir4Lij4Lix4LiU4LiB4Lix4LiU4LiV4Li04LiB4LiyCivguK3guLLguKvguKPguLHguJoKK+C4reC4suC4q+C4peC4seC4geC4reC4suC5gOC4q+C4peC4t+C5iOC4rQor4Lit4Liy4Lir4Liy4LijCivguK3guLLguKvguLjguJTguLUKK+C4reC4suC4rOC4q+C4gQor4Lit4Liy4Lis4Liy4Lir4LiZ4LiwCivguK3guLMKK+C4reC5iOC4swor4Lit4Liz4LmB4LiU4LiHCivguK3guLPguJnguJQKK+C4reC4s+C4meC4meC4leC5jAor4Lit4Liz4LiZ4Lij4Lij4LiGCivguK3guLPguJnguKfguKIKK+C4reC4s+C4meC4suC4iAor4Lit4Liz4LiZ4Liy4LiWCivguK3guLPguJnguLTguJAKK+C4reC4s+C4meC4tOC4qeC4kOC5jAor4Lit4Liz4Lib4Lil4Lix4LiHCivguK3guLPguJ7guJkKK+C4reC4s+C4nuC4sOC4meC4swor4Lit4Liz4Lie4Lix4LiZCivguK3guLPguYTguJ4KK+C4reC4s+C5gOC4oOC4rQor4Lit4Liz4LmA4Lig4Lit4LmD4LiICivguK3guLPguKHguKMKK+C4reC4s+C4oeC4pOC4hOC5guC4iuC4hAor4Lit4Liz4Lih4Lik4LiVCivguK3guLPguKHguKvguLTguJUKK+C4reC4s+C4oeC4suC4leC4ouC5jAor4Lit4Liz4Lii4Lin4LiZCivguK3guLPguKPguLjguIcKK+C4reC4s+C4peC4sgor4Lit4Liz4Lit4Lin4LihCivguK3guYnguLPguK3guLbguYnguIcKK+C4reC4tOC4gQor4Lit4Li04LiHCivguK3guLTguIfguITguYwKK+C4reC4tOC4h+C4reC4owor4Lit4Li04LiI4LiJ4LiyCivguK3guLTguInguLHguJkKK+C4reC4tOC4iuC4ouC4sgor4Lit4Li04LiQCivguK3guLTguJMKK+C4reC4tOC4lAor4Lit4Li04LiV4LiW4Li1CivguK3guLTguJXguYDguJfguKPguLXguKLguKEKK+C4reC4tOC4leC5gOC4l+C4reC4o+C5jOC5gOC4muC4teC4ouC4oQor4Lit4Li04LiV4Li04Lir4Liy4LiqCivguK3guLTguJfguJjguLQKK+C4reC4tOC4mOC5guC4peC4gQor4Lit4Li04LiZCivguK3guLTguJnguIvguLnguKXguLTguJkKK+C4reC4tOC4meC5gOC4lOC4teC4ogor4Lit4Li04LiZ4LmA4LiU4Li14Lii4LiZ4LmB4LiU4LiHCivguK3guLTguJnguYDguJTguLXguKLguKEKK+C4reC4tOC4meC4l+C5jAor4Lit4Li04LiZ4LiX4LiC4Li14LilCivguK3guLTguJnguJfguJnguLTguKUKK+C4reC4tOC4meC4l+C4meC4tOC4peC4meC5ieC4swor4Lit4Li04LiZ4LiX4Lic4Lil4Lix4LihCivguK3guLTguJnguJfguKPguYwKK+C4reC4tOC4meC4l+C4o+C4tQor4Lit4Li04LiZ4LiX4Lij4Li14Lii4LmMCivguK3guLTguJnguJfguLXguKfguKMKK+C4reC4tOC4meC4l+C4uAor4Lit4Li04LiZ4LiY4LiZ4LmMCivguK3guLTguJnguJ/guKPguLLguYDguKPguJQKK+C4reC4tOC4meC5geC4peC4sOC4q+C4ouC4seC4hwor4Lit4Li04LiZ4Lin4Lit4Lii4LiL4LmMCivguK3guLTguYjguKEKK+C4reC4tOC4oeC4seC4peC4iuC4seC4mQor4Lit4Li04Lij4Li04LmA4LiU4Li14Lii4LihCivguK3guLTguKPguLTguKLguLIKK+C4reC4tOC4o+C4uOC4nuC5gOC4nuC4lwor4Lit4Li04Lil4Li5CivguK3guLTguYDguKXguYfguIHguJXguKPguK3guJkKK+C4reC4tOC5gOC4peC5h+C4geC4l+C4o+C4reC4meC4tOC4geC4quC5jAor4Lit4Li04LmA4Lil4LmH4LiB4LmC4LiX4LiZCivguK3guLTguKgKK+C4reC4tOC4qOC4owor4Lit4Li04Lio4Lin4LijCivguK3guLTguKnguI/guYwKK+C4reC4tOC4qeC4j+C4tQor4Lit4Li04LiqCivguK3guLTguKrguJXguKPguLUKK+C4reC4tOC4quC4o+C4sAor4Lit4Li04Liq4Lij4Li04Lii4LiwCivguK3guLTguKrguKrguLIKK+C4reC4tOC4quC4seC4leC4o+C4tQor4Lit4Li04Liq4Li0CivguK3guLTguKrguLUKK+C4reC4tOC4q+C4oeC5iOC4suC4oQor4Lit4Li1CivguK3guLXguYgKK+C4reC4teC5iQor4Lit4Li14LmKCivguK3guLXguYsKK+C4reC4teC4gQor4Lit4Li14LiB4LmJ4LitCivguK3guLXguIHguYvguK3guKIKK+C4reC4teC4geC4sgor4Lit4Li14LiB4LmL4LiyCivguK3guLXguYDguIHguYnguIcKK+C4reC4teC5gOC4geC4o+C5h+C4hwor4Lit4Li14LmA4LiB4LmJ4Lit4Li14LiB4Lix4LiHCivguK3guLXguYHguIEKK+C4reC4teC5geC4geC5iAor4Lit4Li14LmB4LiB4LmJCivguK3guLXguYLguIHguYnguIcKK+C4reC4teC5guC4geC5iuC4sAor4Lit4Li14LiE4Lin4LmI4Liz4Lit4Li14Lir4LiH4Liy4LiiCivguK3guLXguIjguLnguYkKK+C4reC4teC4ieC4seC4mQor4Lit4Li14LiJ4Li44Lii4Lit4Li14LmB4LiJ4LiBCivguK3guLXguIrguLjguIEKK+C4reC4teC5iuC4lAor4Lit4Li14LiU4Lit4LiBCivguK3guLXguJTguLPguK3guLXguYHguJTguIcKK+C4reC4teC4leC4seC4pwor4Lit4Li14LiV4Liy4LilCivguK3guLXguYDguJXguYnguK0KK+C4reC4teC5guC4leC5iQor4Lit4Li14LiW4LmI4Liy4LiHCivguK3guLXguJfguLjguIEKK+C4reC4teC4l+C4uOC4mgor4Lit4Li14LmA4LiX4Lit4Lij4LmMCivguK3guLXguJnguLjguIfguJXguLjguIfguJnguLHguIcKK+C4reC4teC4meC4ueC4mQor4Lit4Li14LmC4LiZCivguK3guLXguYLguJnguIfguYLguJXguIfguYDguJnguIcKK+C4reC4teC4muC4tuC5ieC4hwor4Lit4Li14Lib4Li44LiUCivguK3guLXguYDguJvguYfguJQKK+C4reC4teC5gOC4m+C5ieC4sgor4Lit4Li14LmB4Lib4LiwCivguK3guLXguYLguJvguIcKK+C4reC4teC5gOC4nuC4sgor4Lit4Li14Lih4Li5CivguK3guLXguKPguKEKK+C4reC4teC4o+C4uOC5ieC4hwor4Lit4Li14LmB4Lij4LiU4LmB4LiI4LmK4LiU4LmB4LiI4LmLCivguK3guLXguYHguKPguYnguYHguJfguYnguYHguJXguYgKK+C4reC4teC4peC4reC4hwor4Lit4Li14Lil4LmI4Lit4Lii4Lib4LmI4Lit4Lii4LmB4LitCivguK3guLXguKXguLjguYnguKEKK+C4reC4teC4peC4uOC5iOC4ouC4ieC4uOC4ouC5geC4ieC4gQor4Lit4Li14LmA4Lil4Li04LmJ4LiHCivguK3guLXguYHguKXguYjguIcKK+C4reC4teC5guC4peC4hwor4Lit4Li14Lio4Lin4LijCivguK3guLXguKoKK+C4reC4teC4quC5gOC4leC4reC4o+C5jAor4Lit4Li14Liq4LiyCivguK3guLXguKrguLLguJkKK+C4reC4teC4quC4uOC4geC4reC4teC5g+C4qgor4Lit4Li14Lir4LiZ4Lit4LiH4Lit4Li14LmB4Lir4LiZ4LiHCivguK3guLXguKvguKPguK3guJoKK+C4reC4teC4q+C4peC4seC4geC4reC4teC5gOC4q+C4peC4t+C5iOC4rQor4Lit4Li14Lir4Lil4Lix4LiU4LiW4Lix4LiU4LiX4LiyCivguK3guLXguKvguKXguLUKK+C4reC4teC4q+C4peC4uOC4geC4guC4peC4uOC4geC4guC4peC4seC4gQor4Lit4Li14Lir4Lil4Li44LiB4LiC4Lil4Li44LiB4LiC4Lil4Li44LmI4LiiCivguK3guLXguKvguKXguLjguKLguInguLjguKLguYHguInguIEKK+C4reC4teC5gOC4q+C5h+C4mQor4Lit4Li14LmA4Lir4LiZ4LmH4LiaCivguK3guLXguYDguKvguJnguLXguKLguKcKK+C4reC4teC5gOC4q+C4ouC4teC5iOC4ouC4pwor4Lit4Li14LmA4Lir4Lil4Liw4LmA4LiC4Lil4Liw4LiC4Lil4LiwCivguK3guLXguYDguKvguKXguLDguYDguILguLDguILguLAKK+C4reC4teC5guC4q+C4meC5iOC4reC4teC5gOC4q+C4meC5iAor4Lit4Li14LmC4Lir4Lil4LiB4LmC4LiC4Lil4LiB4LmA4LiC4Lil4LiBCivguK3guLXguYHguK3guYjguJkKK+C4reC4tgor4Lit4Li24LiBCivguK3guLbguYrguIEKK+C4reC4tuC4geC4l+C4tuC4gQor4Lit4Li24LiB4Lit4Lix4LiBCivguK3guLbguIcKK+C4reC4tuC5iOC4hwor4Lit4Li24LmJ4LiHCivguK3guLbguJQKK+C4reC4tuC4lOC4leC4sOC4m+C4t+C4rQor4Lit4Li24LmJ4LiU4LiX4Li24LmI4LiUCivguK3guLbguJkKK+C4reC4t+C4lAor4Lit4Li34LmI4LiZCivguK3guLfguYnguJkKK+C4reC4t+C4rQor4Lit4Li34LmJ4LitCivguK3guLgKK+C4reC4uOC4gQor4Lit4Li44LiB4LiB4LiyCivguK3guLjguIHguKTguKnguI/guYwKK+C4reC4uOC4geC4peC4sgor4Lit4Li44LiECivguK3guLjguITguKMKK+C4reC4uOC4hOC4q+C4meC4tOC4oeC4tOC4lQor4Lit4Li44LiE4Lir4LiwCivguK3guLjguYLguIbguKkKK+C4reC4uOC5ieC4hwor4Lit4Li44LiICivguK3guLjguIjguIjguLLguKPguLAKK+C4reC4uOC4iOC4ieC4uAor4Lit4Li44LiI4LmA4LiJ4LiXCivguK3guLjguIjguLLguJQKK+C4reC4uOC4iuC4uAor4Lit4Li44LiN4LiJ4Liy4LiI4Lij4Li04Lii4LiyCivguK3guLjguI/guJDguLLguIHguLLguKMKK+C4reC4uOC4k+C4q+C4sAor4Lit4Li44LiT4Lir4Li04LiqCivguK3guLjguJPguLIKK+C4reC4uOC4lAor4Lit4Li44LiU4LmA4LiV4LiyCivguK3guLjguJTguKEKK+C4reC4uOC4lOC4owor4Lit4Li44LiU4Lir4LiZ4Li44LiZCivguK3guLjguJTguLLguIHguLHguJkKK+C4reC4uOC4leC4lOC4oQor4Lit4Li44LiV4LiU4LijCivguK3guLjguJXguJXguKHguLAKK+C4reC4uOC4leC4muC4pQor4Lit4Li44LiV4Lie4Li04LiUCivguK3guLjguJXguKPguLIKK+C4reC4uOC4leC4o+C4tAor4Lit4Li44LiV4Lil4Li44LiUCivguK3guLjguJXguKrguYjguLLguKvguYwKK+C4reC4uOC4leC4quC4suC4q+C4sAor4Lit4Li44LiV4Li4CivguK3guLjguJfguIEKK+C4reC4uOC4l+C4l+C4suC4oQor4Lit4Li44LiX4LiY4Lij4LiT4LmMCivguK3guLjguJfguJjguLHguIgKK+C4reC4uOC4l+C4ouC4suC4mQor4Lit4Li44LiX4LijCivguK3guLjguJfguKPguLTguKLguLAKK+C4reC4uOC4l+C4peC4uOC4oQor4Lit4Li44LiX4Lix4LiiCivguK3guLjguJfguLLguJkKK+C4reC4uOC4l+C4suC4owor4Lit4Li44LiX4Liy4Lir4Lij4LiT4LmMCivguK3guLjguJfguLTguKgKK+C4reC4uOC4l+C4uOC4oeC4nuC4owor4Lit4Li44LmA4LiX4LioCivguK3guLjguYDguJfguKrguLTguIHguYDguIjguJTguLXguKLguYwKK+C4reC4uOC4mOC4seC4iAor4Lit4Li44LmI4LiZCivguK3guLjguJnguLLguIHguLHguJkKK+C4reC4uOC4mgor4Lit4Li44Lia4LilCivguK3guLjguJrguLAKK+C4reC4uOC4muC5iuC4sAor4Lit4Li44Lia4Lix4LiV4Li0CivguK3guLjguJrguLLguJcKK+C4reC4uOC4muC4suC4l+C4p+C5jAor4Lit4Li44Lia4Liy4LiiCivguK3guLjguJrguLLguKrguIEKK+C4reC4uOC4muC4suC4quC4tOC4geC4sgor4Lit4Li44LmA4Lia4LiB4LiC4LiyCivguK3guLjguYLguJrguKrguJYKK+C4reC4uOC5guC4muC4quC4luC4q+C4seC4leC4luC4tQor4Lit4Li44LibCivguK3guLjguJvguIHguKPguJPguYwKK+C4reC4uOC4m+C4geC4o+C4oQor4Lit4Li44Lib4LiB4Liy4LijCivguK3guLjguJvguIHguLLguKPguLAKK+C4reC4uOC4m+C4geC4suC4qOC4quC4suC4owor4Lit4Li44Lib4LiB4Li04LiT4LiT4LiwCivguK3guLjguJvguIHguLTguYDguKXguKoKK+C4reC4uOC4m+C4huC4suC4leC4geC4geC4o+C4o+C4oQor4Lit4Li44Lib4LiI4Liy4LijCivguK3guLjguJvguJbguLHguKHguKDguYwKK+C4reC4uOC4m+C4luC4seC4oeC4oOC4gQor4Lit4Li44Lib4LiX4LihCivguK3guLjguJvguJfguLnguJUKK+C4reC4uOC4m+C5gOC4l+C4qAor4Lit4Li44Lib4LmA4LiX4LmI4Lir4LmMCivguK3guLjguJvguJjguLQKK+C4reC4uOC4m+C4mOC4tOC4p+C4tOC5gOC4p+C4gQor4Lit4Li44Lib4LiZ4Lix4LiiCivguK3guLjguJvguJnguLLguKLguIEKK+C4reC4uOC4m+C4meC4suC4ouC4mQor4Lit4Li44Lib4LiZ4Li04LiB4LiC4Li04LiVCivguK3guLjguJvguJnguLTguIHguKnguLTguJUKK+C4reC4uOC4m+C4meC4tOC4qeC4seC4lwor4Lit4Li44Lib4LiZ4Li04Liq4Lix4LiiCivguK3guLjguJvguJrguKUKK+C4reC4uOC4m+C4muC4seC4leC4tAor4Lit4Li44Lib4Lia4Liy4LiXCivguK3guLjguJvguJ7guLHguJfguJjguYwKK+C4reC4uOC4m+C4nuC4seC4meC4mOC5jAor4Lit4Li44Lib4Lig4Li04LmA4Lip4LiBCivguK3guLjguJvguYLguKDguIQKK+C4reC4uOC4m+C4oeC4sgor4Lit4Li44Lib4Lih4Liy4LiZCivguK3guLjguJvguKHguLLguK3guLjguJvguYTguKHguKIKK+C4reC4uOC4m+C5hOC4oeC4ogor4Lit4Li44Lib4Lii4Li44Lin4Lij4Liy4LiKCivguK3guLjguJvguYLguKLguIQKK+C4reC4uOC4m+C5guC4ouC4o+C4suC4igor4Lit4Li44Lib4Lij4Liy4LiB4LijCivguK3guLjguJvguKPguLLguITguLIKK+C4reC4uOC4m+C4o+C4suC4igor4Lit4Li44Lib4Lij4Li0CivguK3guLjguJvguYLguKXguIHguJnguYwKK+C4reC4uOC4m+C5guC4peC4geC4q+C5jAor4Lit4Li44Lib4Liq4Lih4Lia4LiXCivguK3guLjguJvguKrguKHguJrguLHguJkKK+C4reC4uOC4m+C4quC4o+C4o+C4hAor4Lit4Li44Lib4Liq4Lix4Lih4Lia4Lix4LiZCivguK3guLjguJvguKrguLHguKHguJvguJfguLIKK+C4reC4uOC4m+C4ruC4suC4lAor4Lit4Li44Lib4Lix4LiK4LiM4Liy4Lii4LmMCivguK3guLjguJvguLHguIrguIzguLLguKLguLAKK+C4reC4uOC4m+C4seC4j+C4kOC4suC4gQor4Lit4Li44Lib4Lix4LiP4LiQ4Liy4LiZ4LiwCivguK3guLjguJvguLHguJfguKfguLAKK+C4reC4uOC4m+C4suC4guC4ouC4suC4mQor4Lit4Li44Lib4Liy4LiY4Lii4Liy4LiiCivguK3guLjguJvguLLguKLguLLguKoKK+C4reC4uOC4m+C4suC4q+C4meC4sgor4Lit4Li44Lig4LmC4LiV4Liq4LiH4LiG4LmMCivguK3guLjguKDguLHguKIKK+C4reC4uOC5ieC4oQor4Lit4Li44Lih4LiH4LiE4LmMCivguK3guLjguKHguKHguLHguJUKK+C4reC4uOC4oeC4sgor4Lit4Li44LmC4Lih4LiH4LiE4LmMCivguK3guLjguKIKK+C4reC4uOC5ieC4ogor4Lit4Li44LmK4LiiCivguK3guLjguKLguKLguLLguJkKK+C4reC4uOC4ouC4ouC4suC4oQor4Lit4Li44Lii4LmC4Lii4LiECivguK3guLjguKPguIQKK+C4reC4uOC4o+C4kwor4Lit4Li44Lij4Lie4Li1CivguK3guLjguKPguKoKK+C4reC4uOC4o+C4sAor4Lit4Li44Lij4Lix4LiH4Lit4Li44LiV4Lix4LiHCivguK3guLjguKPguLHguIjguInguJfguLAKK+C4reC4uOC4o+C4seC4iOC4ieC4seC4lwor4Lit4Li44Lij4LiyCivguK3guLjguKPguLgKK+C4reC4uOC5hOC4owor4Lit4Li44Lil4Lib4LiZ4LiwCivguK3guLjguKXguYLguKXguIgKK+C4reC4uOC4peC5guC4peC4peC4sAor4Lit4Li44Lil4Liy4Lih4LiBCivguK3guLjguKXguLTguJQKK+C4reC4uOC4peC4ueC4gQor4Lit4Li44LmC4Lil4LiBCivguK3guLjguKfguLAKK+C4reC4uOC5geC4p+C5iQor4Lit4Li44Lip4LiT4Li14Lip4LmMCivguK3guLjguKnguKEKK+C4reC4uOC4qeC4oeC4seC4mQor4Lit4Li44Lip4LiyCivguK3guLjguKnguLLguKvguLAKK+C4reC4uOC4quC4oAor4Lit4Li44Liq4Lin4LiwCivguK3guLjguKrguKrguYjguLLguKvguYwKK+C4reC4uOC4quC4quC4suC4q+C4sAor4Lit4Li44Liq4LiyCivguK3guLjguKrguLgKK+C4reC4uOC4quC4uOC4oAor4Lit4Li44Liq4Li44LihCivguK3guLjguKvguKPguLHguJoKK+C4reC4uOC4q+C4peC4mgor4Lit4Li44LmA4Lir4Lih4LmICivguK3guLjguKzguLLguKMKK+C4reC4uQor4Lit4Li54LmICivguK3guLnguYkKK+C4reC4ueC5iwor4Lit4Li54LiQCivguK3guLnguJQKK+C4reC4ueC4oQor4Lit4Li54Lij4Li5CivguK3guLnguYvguK3guLXguYsKK+C5gOC4rQor4LmA4Lit4LmJCivguYDguK3guYnguYbguYHguK3guYjguJkKK+C5gOC4reC4gQor4LmA4Lit4LmK4LiBCivguYDguK3guIHguYDguILguJnguIEKK+C5gOC4reC4geC4iOC4seC4geC4qeC4uAor4LmA4Lit4LiB4LiI4Li04LiVCivguYDguK3guIHguInguLHguJnguJfguYwKK+C5gOC4reC4geC4iuC4mQor4LmA4Lit4LiB4LiL4LmC4LibCivguYDguK3guIHguIvguYDguKPguKLguYwKK+C5gOC4reC4geC5gOC4l+C4qAor4LmA4Lit4LiB4LmC4LiX4LipCivguYDguK3guIHguJnguLHguKIKK+C5gOC4reC4geC4muC4uOC4hOC4hOC4pQor4LmA4Lit4LiB4Lia4Li44Lij4Li44LipCivguYDguK3guIHguJ7guIjguJnguYwKK+C5gOC4reC4geC4nuC4seC4meC4mOC5jAor4LmA4Lit4LiB4Lig4LieCivguYDguK3guIHguKDguKPguLTguKLguLIKK+C5gOC4reC4geC4oOC4seC4geC4lOC4tOC5jAor4LmA4Lit4LiB4Lig4Liy4LiE4Li1CivguYDguK3guIHguKDguLLguJ4KK+C5gOC4reC4geC4oQor4LmA4Lit4LiB4Lih4LiV4Li0CivguYDguK3guIHguKHguLHguKIKK+C5gOC4reC4geC4o+C4o+C4luC4m+C4o+C4sOC5guC4ouC4hAor4LmA4Lit4LiB4Lij4LiqCivguYDguK3guIHguKPguLAKK+C5gOC4reC4geC4o+C4suC4igor4LmA4Lit4LiB4Lil4Lix4LiB4Lip4LiT4LmMCivguYDguK3guIHguKjguIEKK+C5gOC4reC4geC4qgor4LmA4Lit4LiB4Liq4Lih4Lix4LiH4LiE4Li1CivguYDguK3guIHguKrguLLguKMKK+C5gOC4reC4geC4quC4tOC4l+C4mOC4tOC5jAor4LmA4Lit4LiB4Lit4Lix4LiE4Lij4Lij4Liy4LiK4LiX4Li54LiVCivguYDguK3guIHguK3guLgKK+C5gOC4reC4geC4seC4hOC4leC4sgor4LmA4Lit4LiB4Lix4LiH4Liq4Lie4Lii4Liy4LiB4Lij4LiT4LmMCivguYDguK3guIHguLHguIfguKrguKfguLLguJfguLUKK+C5gOC4reC4geC4seC4leC4oOC4suC4ngor4LmA4Lit4LiB4LiyCivguYDguK3guYnguIHguLIKK+C5gOC4reC4geC4tOC4geC4sgor4LmA4Lit4LiB4Li14Lig4Li54LiVCivguYDguK3guYDguITguK3guKPguYwKK+C5gOC4reC4hwor4LmA4Lit4LmH4LiHCivguYDguK3guYvguIcKK+C5gOC4reC5gOC4iuC4teC5iOC4ouC4meC5gOC4geC4oeC4quC5jAor4LmA4Lit4LmH4LiUCivguYDguK3guJTguKrguYwKK+C5gOC4reC4leC4l+C4seC4hOC4hOC4sAor4LmA4Lit4LmJ4LmA4LiVCivguYDguK3guJfguLTguKXguYHguK3guKXguIHguK3guK7guK3guKXguYwKK+C5gOC4reC4mQor4LmA4Lit4LmH4LiZCivguYDguK3guJnguYTguIvguKHguYwKK+C5gOC4reC5h+C4meC4lOC4uQor4LmA4Lit4LiZ4LiX4Lij4Liy4LiZ4LiL4LmMCivguYDguK3guKEKK+C5gOC4reC5h+C4oeC4muC4o+C4tOC5guC4rQor4LmA4Lit4LiiCivguYDguK3guYjguKIKK+C5gOC4reC5iuC4ogor4LmA4Lit4LmL4LiiCivguYDguK3guYDguKLguYjguJnguJXguYwKK+C5gOC4reC4o+C5h+C4lOC4reC4o+C5iOC4reC4ogor4LmA4Lit4Lij4Liy4Lin4Lix4LiTCivguYDguK3guKXguLIKK+C5gOC4reC4peC4suC4rOC4uOC4gQor4LmA4Lit4LinCivguYDguK3guYrguKcKK+C5gOC4reC4p+C4seC4hwor4LmA4Lit4LmJ4Lir4Lih4Li24LiHCivguYDguK3guKvguLTguJvguLHguKrguKrguLTguYLguIEKK+C5gOC4reC4q+C4tOC4oOC4tOC4geC4guC4uOC4reC4uOC4m+C4quC4seC4oeC4m+C4l+C4sgor4LmA4Lit4Lis4LiBCivguYDguK3guKzguLIKK+C5gOC4reC4rQor4LmA4Lit4LmI4LitCivguYDguK3guK3guKPguYzguYDguJrguLXguKLguKEKK+C5gOC4reC5ieC4reC4o+C4sOC5gOC4q+C4ogor4LmA4Lit4LmJ4Lit4LmA4Lij4LmJ4LitCivguYDguK3guYnguK3guYDguK7guK0KK+C5gOC4reC5ieC5geC4reC5iOC4mQor4LmA4Lit4LmK4LiwCivguYDguK3guLDguYPguIgKK+C5gOC4reC4sOC4reC4sAor4LmA4Lit4LiyCivguYDguK3guYnguLIKK+C5gOC4reC4suC4l+C4suC4owor4LmA4Lit4Liy4LiX4Liy4Lij4Lii4LmMCivguYDguK3guLLguKPguKoKK+C5gOC4reC4suC4rOC4suC4owor4LmA4Lit4Liy4Liw4Lil4Liy4LiiCivguYDguK3guLTguIEKK+C5gOC4reC4tOC5ieC4gQor4LmA4Lit4Li04LiZCivguYDguK3guLTguYnguJkKK+C5gOC4reC4tOC4mgor4LmA4Lit4Li14Lii4LiHCivguYDguK3guLXguYnguKLguIcKK+C5gOC4reC4teC4ouC4lAor4LmA4Lit4Li14LmK4Lii4LiUCivguYDguK3guLXguKLguJkKK+C5gOC4reC4teC5iOC4ouC4mQor4LmA4Lit4Li14LmI4Lii4LihCivguYDguK3guLXguYrguKLguKEKK+C5gOC4reC4teC5ieC4ouC4oeC4iOC4uOC5iuC4mQor4LmA4Lit4Li14LmJ4Lii4Lih4LmA4Lif4Li14LmJ4Lii4LihCivguYDguK3guLXguYjguKLguKcKK+C5gOC4reC4teC5ieC4ouC4pwor4LmA4Lit4Li34LmJ4LitCivguYDguK3guLfguYnguK3guIcKK+C5gOC4reC4t+C5ieC4reC4h+C4iuC4seC4mQor4LmA4Lit4Li34Lit4LiUCivguYDguK3guLfguK3guJkKK+C5gOC4reC4t+C5ieC4reC4mQor4LmA4Lit4Li34Lit4LihCivguYDguK3guLfguYnguK3guKEKK+C5gOC4reC4t+C5iOC4reC4ogor4LmA4Lit4Li34LmJ4Lit4LiiCivguYDguK3guLfguYjguK3guKLguYYKK+C5geC4rQor4LmB4Lit4LmJCivguYHguK3guYsKK+C5geC4reC4gQor4LmB4Lit4LiB4LiX4Li04LmA4LiZ4Li14Lii4LihCivguYHguK3guYjguIcKK+C5geC4reC5ieC4h+C5geC4oeC5ieC4hwor4LmB4Lit4LiUCivguYHguK3guYnguJQKK+C5geC4reC5iuC4lAor4LmB4Lit4LiU4LmGCivguYHguK3guYrguJTguYYKK+C5geC4reC5iOC4mQor4LmB4Lit4LiZ4LiV4Li04LmA4LiI4LiZCivguYHguK3guJnguJXguLTguJrguK3guJTguLUKK+C5geC4reC4meC4leC4tOC4reC4tOC5gOC4peC5h+C4geC4leC4o+C4reC4mQor4LmB4Lit4LmI4LiZ4Lil4LihCivguYHguK3guYLguJnguJQKK+C5geC4reC4mgor4LmB4Lit4LmJ4LihCivguYHguK3guKHguYHguJvguKPguYwKK+C5geC4reC4oeC5gOC4n+C4leC4suC4oeC4teC4mQor4LmB4Lit4Lih4Lih4Li04LmA4LiV4Lit4Lij4LmMCivguYHguK3guKHguYLguKHguYDguJnguLXguKIKK+C5geC4reC4o+C5iOC4oQor4LmB4Lit4Lij4LmM4LmC4Liu4Liq4LmA4LiV4LiqCivguYHguK3guKXguIHguK3guK7guK3guKXguYwKK+C5geC4reC4peC4n+C4sgor4LmB4Lit4LinCivguYHguK3guYjguKcKK+C5geC4reC5ieC4p+C5geC4i+C5iOC4pwor4LmB4Lit4Liq4LiX4Liy4LiX4Li14LiZCivguYHguK3guKrguYTguJ7guKPguLTguJkKK+C5geC4reC4quC4n+C4seC4peC4leC5jAor4LmB4Lit4Lir4LiZ4Lix4LiHCivguYHguK3guK3guKfguKIKK+C5geC4reC4reC4seC4lAor4LmC4LitCivguYLguK3guYgKK+C5guC4reC5iQor4LmC4Lit4LmLCivguYLguK3guIEKK+C5guC4reC5ieC4gQor4LmC4Lit4LmK4LiBCivguYLguK3guIHguLLguKoKK+C5guC4reC4huC4sAor4LmC4Lit4LmI4LiHCivguYLguK3guIfguIHguLLguKMKK+C5guC4reC4h+C5guC4guC4lOC4hwor4LmC4Lit4LiK4LiwCivguYLguK3guIrguLIKK+C5guC4reC5guC4i+C4mQor4LmC4Lit4LiQCivguYLguK3guJQKK+C5guC4reC4lQor4LmC4Lit4LiV4LiV4Lix4Lib4Lib4LiwCivguYLguK3guJfguJnguLAKK+C5guC4reC4mQor4LmC4Lit4LiaCivguYLguK3guJvguJvguLLguJXguLTguIHguLAKK+C5guC4reC5gOC4m+C4gQor4LmC4Lit4Lig4LiyCivguYLguK3guKDguLLguKoKK+C5guC4reC4oQor4LmC4Lit4LiiCivguYLguK3guYrguKIKK+C5guC4reC4o+C4qgor4LmC4Lit4Lil4Liw4Lie4LmI4LitCivguYLguK3guKXguLTguKHguJvguLTguIEKK+C5guC4reC5gOC4peC4teC5ieC4ouC4hwor4LmC4Lit4Lin4Liy4LiXCivguYLguK3guKnguJDguYwKK+C5guC4reC4quC4lgor4LmC4Lit4Liq4Liy4LiZCivguYLguK3guKvguJnguK0KK+C5guC4reC4q+C5jOC4oQor4LmC4Lit4Lir4Lix4LiHCivguYLguK3guKzguLLguKMKK+C5guC4reC5ieC5gOC4reC5iQor4LmC4Lit4LmA4Lit4LiL4Li04LiqCivguYLguK3guYnguYLguK4KK+C5hOC4rQor4LmE4Lit4LmJ4LmA4LiC4LmJCivguYTguK3guYLguIvguYLguJfguJsKK+C5hOC4reC4meC5jOC4quC5hOC4leC5gOC4meC4teC4ouC4oQor4LmE4Lit4Lii4Lij4LiyCivguYTguK3guKLguYDguKPguKgKK+C5hOC4reC4o+C4suC4nuC4lQor4LmE4Lit4Lij4Liy4Lin4Lix4LiTCivguYTguK3guKjguIHguKPguLXguKEKK+C5hOC4reC4qOC4p+C4o+C4o+C4ouC5jAor4LmE4Lit4Lit4Lit4LiZCivguYTguK3guYLguK3guJTguLXguJkKK+C4rgor4Liu4LiB4LmA4LiB4Li14LmJ4Lii4LiZCivguK7guIHguKXguIHguIvguLTguYjguKcKK+C4ruC5ieC4hwor4Liu4LiUCivguK7guKfguIfguIvguLjguYnguKIKK+C4ruC4p+C4mQor4Liu4LmJ4Lin4LiZCivguK7guYnguKfguJnguKvguKHguLkKK+C4ruC4p+C4mgor4Liu4Lin4LiiCivguK7guYjguK0KK+C4ruC5ieC4rQor4Liu4Lit4LiB4LiB4Li14LmJCivguK7guYjguK3guIcKK+C4ruC5iOC4reC4h+C5gOC4leC5iQor4Liu4Lit4LiH4LmA4Liu4LiyCivguK7guK3guJQKK+C4ruC4reC4leC4lOC4reC4gQor4Liu4LmI4Lit4LihCivguK7guYjguK3guKHguJTguIcKK+C4ruC5iOC4reC4oeC5gOC4oeC4t+C4reC4hwor4Liu4LmI4Lit4Lih4Lij4Li04LiZCivguK7guK3guKPguYzguYLguKHguJkKK+C4ruC4reC4peC5geC4peC4meC4lOC5jAor4Liu4Lit4Lil4Lix4LiZ4LiU4LiyCivguK7guLAKK+C4ruC4seC4gQor4Liu4Lix4LiB4LmGCivguK7guLHguIfguYDguKUKK+C4ruC4seC4lOC5gOC4iuC5ieC4ogor4Liu4Lix4LmI4LiZCivguK7guLHguYnguKcKK+C4ruC4sgor4Liu4LmJ4LiyCivguK7guYjguLLguYYKK+C4ruC5iOC4suC4h+C4q+C4peC4p+C4hwor4Liu4Liy4LihCivguK7guLLguKPguLLguITguLXguKPguLUKK+C4ruC4suC5gOC4o+C5h+C4oQor4Liu4Liy4Lir4LmM4LmA4LiZ4Li14Lii4LihCivguK7guLTguYYKK+C4ruC4tOC4iOC5gOC4o+C4suC4sOC4q+C5jAor4Liu4Li04LiZ4LiU4Li5CivguK7guLTguJvguJvguLXguYkKK+C4ruC4tOC4m+C5guC4m+C5guC4m+C5gOC4leC4oeC4seC4qgor4Liu4Li04Liq4LiX4Li14LmA4Lij4Li14LiiCivguK7guLXguYkKK+C4ruC4teC5gOC4peC4teC4ouC4oQor4Liu4Li2CivguK7guLbguIEKK+C4ruC4tuC4lAor4Liu4Li24LihCivguK7guLbguYjguKEKK+C4ruC4tuC4ogor4Liu4Li34LiU4Liu4Liy4LiUCivguK7guLfguK0KK+C4ruC4t+C5iOC4rQor4Liu4Li34LmJ4LitCivguK7guLjguJQKK+C4ruC4uOC4mgor4Liu4Li44Lii4LmA4Lil4Liu4Li44LiiCivguK7guLnguYkKK+C4ruC4ueC4gQor4Liu4Li54LihCivguYDguK4KK+C5gOC4ruC5iQor4LmA4Liu4LiB4LiV4Liy4Lij4LmMCivguYDguK7guIHguYLguJXguIHguKPguLHguKEKK+C5gOC4ruC4geC5guC4leC5gOC4oeC4leC4owor4LmA4Liu4LiB4LmC4LiV4Lil4Li04LiV4LijCivguYDguK7guIcKK+C5gOC4ruC5guC4oeC5guC4geC4peC4muC4tOC4mQor4LmA4Liu4LiiCivguYDguK7guYnguKIKK+C5gOC4ruC5guC4o+C4reC4teC4mQor4LmA4Liu4Lil4Li04LiE4Lit4Lib4LmA4LiV4Lit4Lij4LmMCivguYDguK7guYnguKcKK+C5gOC4ruC4rQor4LmA4Liu4LmJ4LitCivguYDguK7guLTguKPguJXguIvguYwKK+C5gOC4ruC4teC4ogor4LmA4Liu4Li14LmJ4Lii4LiZCivguYDguK7guLXguYnguKLguJoKK+C5gOC4ruC4teC5ieC4ouC4pwor4LmA4Liu4Li34Lit4LiBCivguYDguK7guLfguK3guJkKK+C5geC4rgor4LmB4Liu4LmICivguYHguK7guYjguIHguLbguYrguJkKK+C5geC4ruC4meC4lOC5jOC4muC4reC4pQor4LmB4Liu4Lif4LmA4LiZ4Li14Lii4LihCivguYHguK7guKEKK+C5geC4ruC4oeC5gOC4muC4reC4o+C5jOC5gOC4geC4reC4o+C5jAor4LmB4Liu4LiwCivguYLguK4KK+C5guC4ruC4gQor4LmC4Liu4LmA4LiV4LmH4LilCivguYLguK7guKXguYDguKHguLXguKLguKEKK+C5guC4ruC4sAor4LmE4Liu4LmJCivguYTguK7guYLguIHguKPguKHguLTguYDguJXguK3guKPguYwKK+C5hOC4ruC4lOC5jOC4m+C4suC4o+C5jOC4gQor4LmE4Liu4LiU4Lij4LiyCivguYTguK7guYLguJTguKPguITguLLguKPguYzguJrguK3guJkKK+C5hOC4ruC5guC4lOC4o+C5gOC4iOC4mQor4LmE4Liu4LmC4LiU4Lij4LmA4LiI4LiZ4LiL4Lix4Lil4LmE4Lif4LiU4LmMCivguYTguK7guYLguJTguKPguYDguIjguJnguYDguJ7guK3guKPguYzguK3guK3guIHguYTguIvguJTguYwKK+C5hOC4ruC5guC4lOC4o+C4oeC4tOC5gOC4leC4reC4o+C5jAor4LmE4Liu4LmE4LifCivguYTguK7guYLguKUKK+C5hOC4ruC4ruC4tQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi9kYXRhL3RoYWk2LnVjcyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvZGF0YS90aGFpNi51Y3MKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYmFiMDU0MwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvZGF0YS90aGFpNi51Y3MKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi9kYXRhL3VuaWNvZGUvQ29tcG9zaXRpb25FeGNsdXNpb25zLnR4dCBiL3NyYy9jb20vaWJtL2ljdS9kZXYvZGF0YS91bmljb2RlL0NvbXBvc2l0aW9uRXhjbHVzaW9ucy50eHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMDdhNjBiOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvZGF0YS91bmljb2RlL0NvbXBvc2l0aW9uRXhjbHVzaW9ucy50eHQKQEAgLTAsMCArMSwxNzYgQEAKKyMgQ29tcG9zaXRpb25FeGNsdXNpb25zLTMuMi4wLnR4dAorIyBEYXRlOiAyMDAyLTAzLTE5LDIzOjMwOjI4IEdNVCBbTURdCisjCisjIFRoaXMgZmlsZSBsaXN0cyB0aGUgY2hhcmFjdGVycyBmcm9tIHRoZSBVQVggIzE1IENvbXBvc2l0aW9uIEV4Y2x1c2lvbiBUYWJsZS4KKyMKKyMgVGhlIGZvcm1hdCBvZiB0aGUgY29tbWVudHMgaW4gdGhpcyBmaWxlIGhhcyBiZWVuIHVwZGF0ZWQgc2luY2UgdGhlIGxhc3QgdmVyc2lvbiwKKyMgQ29tcG9zaXRpb25FeGNsdXNpb25zLTMudHh0LiBUaGUgb25seSBzdWJzdGFudGl2ZSBjaGFuZ2UgdG8gdGhpcyBmaWxlIGJldHdlZW4gdGhhdAorIyB2ZXJzaW9uIGFuZCB0aGlzIG9uZSBpcyB0aGUgYWRkaXRpb24gb2YgVSsyQURDIEZPUktJTkcuCisjCisjIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUKKyMgaHR0cDovL3d3dy51bmljb2RlLm9yZy91bmljb2RlL3JlcG9ydHMvdHIxNS8jUHJpbWFyeSBFeGNsdXNpb24gTGlzdCBUYWJsZQorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyAoMSkgU2NyaXB0IFNwZWNpZmljcworIyBUaGlzIGxpc3Qgb2YgY2hhcmFjdGVycyBjYW5ub3QgYmUgZGVyaXZlZCBmcm9tIHRoZSBVbmljb2RlRGF0YSBmaWxlLgorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworMDk1OCAgICAjICBERVZBTkFHQVJJIExFVFRFUiBRQQorMDk1OSAgICAjICBERVZBTkFHQVJJIExFVFRFUiBLSEhBCiswOTVBICAgICMgIERFVkFOQUdBUkkgTEVUVEVSIEdISEEKKzA5NUIgICAgIyAgREVWQU5BR0FSSSBMRVRURVIgWkEKKzA5NUMgICAgIyAgREVWQU5BR0FSSSBMRVRURVIgRERESEEKKzA5NUQgICAgIyAgREVWQU5BR0FSSSBMRVRURVIgUkhBCiswOTVFICAgICMgIERFVkFOQUdBUkkgTEVUVEVSIEZBCiswOTVGICAgICMgIERFVkFOQUdBUkkgTEVUVEVSIFlZQQorMDlEQyAgICAjICBCRU5HQUxJIExFVFRFUiBSUkEKKzA5REQgICAgIyAgQkVOR0FMSSBMRVRURVIgUkhBCiswOURGICAgICMgIEJFTkdBTEkgTEVUVEVSIFlZQQorMEEzMyAgICAjICBHVVJNVUtISSBMRVRURVIgTExBCiswQTM2ICAgICMgIEdVUk1VS0hJIExFVFRFUiBTSEEKKzBBNTkgICAgIyAgR1VSTVVLSEkgTEVUVEVSIEtISEEKKzBBNUEgICAgIyAgR1VSTVVLSEkgTEVUVEVSIEdISEEKKzBBNUIgICAgIyAgR1VSTVVLSEkgTEVUVEVSIFpBCiswQTVFICAgICMgIEdVUk1VS0hJIExFVFRFUiBGQQorMEI1QyAgICAjICBPUklZQSBMRVRURVIgUlJBCiswQjVEICAgICMgIE9SSVlBIExFVFRFUiBSSEEKKzBGNDMgICAgIyAgVElCRVRBTiBMRVRURVIgR0hBCiswRjREICAgICMgIFRJQkVUQU4gTEVUVEVSIERESEEKKzBGNTIgICAgIyAgVElCRVRBTiBMRVRURVIgREhBCiswRjU3ICAgICMgIFRJQkVUQU4gTEVUVEVSIEJIQQorMEY1QyAgICAjICBUSUJFVEFOIExFVFRFUiBEWkhBCiswRjY5ICAgICMgIFRJQkVUQU4gTEVUVEVSIEtTU0EKKzBGNzYgICAgIyAgVElCRVRBTiBWT1dFTCBTSUdOIFZPQ0FMSUMgUgorMEY3OCAgICAjICBUSUJFVEFOIFZPV0VMIFNJR04gVk9DQUxJQyBMCiswRjkzICAgICMgIFRJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBHSEEKKzBGOUQgICAgIyAgVElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIERESEEKKzBGQTIgICAgIyAgVElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIERIQQorMEZBNyAgICAjICBUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgQkhBCiswRkFDICAgICMgIFRJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBEWkhBCiswRkI5ICAgICMgIFRJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBLU1NBCitGQjFEICAgICMgIEhFQlJFVyBMRVRURVIgWU9EIFdJVEggSElSSVEKK0ZCMUYgICAgIyAgSEVCUkVXIExJR0FUVVJFIFlJRERJU0ggWU9EIFlPRCBQQVRBSAorRkIyQSAgICAjICBIRUJSRVcgTEVUVEVSIFNISU4gV0lUSCBTSElOIERPVAorRkIyQiAgICAjICBIRUJSRVcgTEVUVEVSIFNISU4gV0lUSCBTSU4gRE9UCitGQjJDICAgICMgIEhFQlJFVyBMRVRURVIgU0hJTiBXSVRIIERBR0VTSCBBTkQgU0hJTiBET1QKK0ZCMkQgICAgIyAgSEVCUkVXIExFVFRFUiBTSElOIFdJVEggREFHRVNIIEFORCBTSU4gRE9UCitGQjJFICAgICMgIEhFQlJFVyBMRVRURVIgQUxFRiBXSVRIIFBBVEFICitGQjJGICAgICMgIEhFQlJFVyBMRVRURVIgQUxFRiBXSVRIIFFBTUFUUworRkIzMCAgICAjICBIRUJSRVcgTEVUVEVSIEFMRUYgV0lUSCBNQVBJUQorRkIzMSAgICAjICBIRUJSRVcgTEVUVEVSIEJFVCBXSVRIIERBR0VTSAorRkIzMiAgICAjICBIRUJSRVcgTEVUVEVSIEdJTUVMIFdJVEggREFHRVNICitGQjMzICAgICMgIEhFQlJFVyBMRVRURVIgREFMRVQgV0lUSCBEQUdFU0gKK0ZCMzQgICAgIyAgSEVCUkVXIExFVFRFUiBIRSBXSVRIIE1BUElRCitGQjM1ICAgICMgIEhFQlJFVyBMRVRURVIgVkFWIFdJVEggREFHRVNICitGQjM2ICAgICMgIEhFQlJFVyBMRVRURVIgWkFZSU4gV0lUSCBEQUdFU0gKK0ZCMzggICAgIyAgSEVCUkVXIExFVFRFUiBURVQgV0lUSCBEQUdFU0gKK0ZCMzkgICAgIyAgSEVCUkVXIExFVFRFUiBZT0QgV0lUSCBEQUdFU0gKK0ZCM0EgICAgIyAgSEVCUkVXIExFVFRFUiBGSU5BTCBLQUYgV0lUSCBEQUdFU0gKK0ZCM0IgICAgIyAgSEVCUkVXIExFVFRFUiBLQUYgV0lUSCBEQUdFU0gKK0ZCM0MgICAgIyAgSEVCUkVXIExFVFRFUiBMQU1FRCBXSVRIIERBR0VTSAorRkIzRSAgICAjICBIRUJSRVcgTEVUVEVSIE1FTSBXSVRIIERBR0VTSAorRkI0MCAgICAjICBIRUJSRVcgTEVUVEVSIE5VTiBXSVRIIERBR0VTSAorRkI0MSAgICAjICBIRUJSRVcgTEVUVEVSIFNBTUVLSCBXSVRIIERBR0VTSAorRkI0MyAgICAjICBIRUJSRVcgTEVUVEVSIEZJTkFMIFBFIFdJVEggREFHRVNICitGQjQ0ICAgICMgIEhFQlJFVyBMRVRURVIgUEUgV0lUSCBEQUdFU0gKK0ZCNDYgICAgIyAgSEVCUkVXIExFVFRFUiBUU0FESSBXSVRIIERBR0VTSAorRkI0NyAgICAjICBIRUJSRVcgTEVUVEVSIFFPRiBXSVRIIERBR0VTSAorRkI0OCAgICAjICBIRUJSRVcgTEVUVEVSIFJFU0ggV0lUSCBEQUdFU0gKK0ZCNDkgICAgIyAgSEVCUkVXIExFVFRFUiBTSElOIFdJVEggREFHRVNICitGQjRBICAgICMgIEhFQlJFVyBMRVRURVIgVEFWIFdJVEggREFHRVNICitGQjRCICAgICMgIEhFQlJFVyBMRVRURVIgVkFWIFdJVEggSE9MQU0KK0ZCNEMgICAgIyAgSEVCUkVXIExFVFRFUiBCRVQgV0lUSCBSQUZFCitGQjREICAgICMgIEhFQlJFVyBMRVRURVIgS0FGIFdJVEggUkFGRQorRkI0RSAgICAjICBIRUJSRVcgTEVUVEVSIFBFIFdJVEggUkFGRQorCisjIFRvdGFsIGNvZGUgcG9pbnRzOiA2NworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAoMikgUG9zdCBDb21wb3NpdGlvbiBWZXJzaW9uIHByZWNvbXBvc2VkIGNoYXJhY3RlcnMKKyMgVGhlc2UgY2hhcmFjdGVycyBjYW5ub3QgYmUgZGVyaXZlZCBzb2xlbHkgZnJvbSB0aGUgVW5pY29kZURhdGEudHh0IGZpbGUKKyMgaW4gdGhpcyB2ZXJzaW9uIG9mIFVuaWNvZGUuCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisyQURDICAgICMgIEZPUktJTkcKKzFEMTVFICAgIyAgTVVTSUNBTCBTWU1CT0wgSEFMRiBOT1RFCisxRDE1RiAgICMgIE1VU0lDQUwgU1lNQk9MIFFVQVJURVIgTk9URQorMUQxNjAgICAjICBNVVNJQ0FMIFNZTUJPTCBFSUdIVEggTk9URQorMUQxNjEgICAjICBNVVNJQ0FMIFNZTUJPTCBTSVhURUVOVEggTk9URQorMUQxNjIgICAjICBNVVNJQ0FMIFNZTUJPTCBUSElSVFktU0VDT05EIE5PVEUKKzFEMTYzICAgIyAgTVVTSUNBTCBTWU1CT0wgU0lYVFktRk9VUlRIIE5PVEUKKzFEMTY0ICAgIyAgTVVTSUNBTCBTWU1CT0wgT05FIEhVTkRSRUQgVFdFTlRZLUVJR0hUSCBOT1RFCisxRDFCQiAgICMgIE1VU0lDQUwgU1lNQk9MIE1JTklNQQorMUQxQkMgICAjICBNVVNJQ0FMIFNZTUJPTCBNSU5JTUEgQkxBQ0sKKzFEMUJEICAgIyAgTVVTSUNBTCBTWU1CT0wgU0VNSU1JTklNQSBXSElURQorMUQxQkUgICAjICBNVVNJQ0FMIFNZTUJPTCBTRU1JTUlOSU1BIEJMQUNLCisxRDFCRiAgICMgIE1VU0lDQUwgU1lNQk9MIEZVU0EgV0hJVEUKKzFEMUMwICAgIyAgTVVTSUNBTCBTWU1CT0wgRlVTQSBCTEFDSworCisjIFRvdGFsIGNvZGUgcG9pbnRzOiAxNAorCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAoMykgU2luZ2xldG9uIERlY29tcG9zaXRpb25zCisjIFRoZXNlIGNoYXJhY3RlcnMgY2FuIGJlIGRlcml2ZWQgZnJvbSB0aGUgVW5pY29kZURhdGEgZmlsZQorIyBieSBpbmNsdWRpbmcgYWxsIGNoYXJhY3RlcnMgd2hvc2UgY2Fub25pY2FsIGRlY29tcG9zaXRpb24KKyMgY29uc2lzdHMgb2YgYSBzaW5nbGUgY2hhcmFjdGVyLgorIyBUaGVzZSBjaGFyYWN0ZXJzIGFyZSBzaW1wbHkgcXVvdGVkIGhlcmUgZm9yIHJlZmVyZW5jZS4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyMgMDM0MC4uMDM0MSAgICAgICBbMl0gQ09NQklOSU5HIEdSQVZFIFRPTkUgTUFSSy4uQ09NQklOSU5HIEFDVVRFIFRPTkUgTUFSSworIyAwMzQzICAgICAgICAgICAgICAgICBDT01CSU5JTkcgR1JFRUsgS09ST05JUworIyAwMzc0ICAgICAgICAgICAgICAgICBHUkVFSyBOVU1FUkFMIFNJR04KKyMgMDM3RSAgICAgICAgICAgICAgICAgR1JFRUsgUVVFU1RJT04gTUFSSworIyAwMzg3ICAgICAgICAgICAgICAgICBHUkVFSyBBTk8gVEVMRUlBCisjIDFGNzEgICAgICAgICAgICAgICAgIEdSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIE9YSUEKKyMgMUY3MyAgICAgICAgICAgICAgICAgR1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04gV0lUSCBPWElBCisjIDFGNzUgICAgICAgICAgICAgICAgIEdSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBPWElBCisjIDFGNzcgICAgICAgICAgICAgICAgIEdSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggT1hJQQorIyAxRjc5ICAgICAgICAgICAgICAgICBHUkVFSyBTTUFMTCBMRVRURVIgT01JQ1JPTiBXSVRIIE9YSUEKKyMgMUY3QiAgICAgICAgICAgICAgICAgR1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBPWElBCisjIDFGN0QgICAgICAgICAgICAgICAgIEdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIE9YSUEKKyMgMUZCQiAgICAgICAgICAgICAgICAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBPWElBCisjIDFGQkUgICAgICAgICAgICAgICAgIEdSRUVLIFBST1NHRUdSQU1NRU5JCisjIDFGQzkgICAgICAgICAgICAgICAgIEdSRUVLIENBUElUQUwgTEVUVEVSIEVQU0lMT04gV0lUSCBPWElBCisjIDFGQ0IgICAgICAgICAgICAgICAgIEdSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIE9YSUEKKyMgMUZEMyAgICAgICAgICAgICAgICAgR1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBESUFMWVRJS0EgQU5EIE9YSUEKKyMgMUZEQiAgICAgICAgICAgICAgICAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIE9YSUEKKyMgMUZFMyAgICAgICAgICAgICAgICAgR1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBESUFMWVRJS0EgQU5EIE9YSUEKKyMgMUZFQiAgICAgICAgICAgICAgICAgR1JFRUsgQ0FQSVRBTCBMRVRURVIgVVBTSUxPTiBXSVRIIE9YSUEKKyMgMUZFRS4uMUZFRiAgICAgICBbMl0gR1JFRUsgRElBTFlUSUtBIEFORCBPWElBLi5HUkVFSyBWQVJJQQorIyAxRkY5ICAgICAgICAgICAgICAgICBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OIFdJVEggT1hJQQorIyAxRkZCICAgICAgICAgICAgICAgICBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIE9YSUEKKyMgMUZGRCAgICAgICAgICAgICAgICAgR1JFRUsgT1hJQQorIyAyMDAwLi4yMDAxICAgICAgIFsyXSBFTiBRVUFELi5FTSBRVUFECisjIDIxMjYgICAgICAgICAgICAgICAgIE9ITSBTSUdOCisjIDIxMkEuLjIxMkIgICAgICAgWzJdIEtFTFZJTiBTSUdOLi5BTkdTVFJPTSBTSUdOCisjIDIzMjkgICAgICAgICAgICAgICAgIExFRlQtUE9JTlRJTkcgQU5HTEUgQlJBQ0tFVAorIyAyMzJBICAgICAgICAgICAgICAgICBSSUdIVC1QT0lOVElORyBBTkdMRSBCUkFDS0VUCisjIEY5MDAuLkZBMEQgICAgIFsyNzBdIENKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTAwLi5DSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwRAorIyBGQTEwICAgICAgICAgICAgICAgICBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExMAorIyBGQTEyICAgICAgICAgICAgICAgICBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExMgorIyBGQTE1Li5GQTFFICAgICAgWzEwXSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExNS4uQ0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMUUKKyMgRkEyMCAgICAgICAgICAgICAgICAgQ0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMjAKKyMgRkEyMiAgICAgICAgICAgICAgICAgQ0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMjIKKyMgRkEyNS4uRkEyNiAgICAgICBbMl0gQ0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMjUuLkNKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTI2CisjIEZBMkEuLkZBMkQgICAgICAgWzRdIENKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTJBLi5DSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEyRAorIyBGQTMwLi5GQTZBICAgICAgWzU5XSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEzMC4uQ0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBNkEKKyMgMkY4MDAuLjJGQTFEICAgWzU0Ml0gQ0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODAwLi5DSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkZBMUQKKworIyBUb3RhbCBjb2RlIHBvaW50czogOTI0CisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICg0KSBOb24tU3RhcnRlciBEZWNvbXBvc2l0aW9ucworIyBUaGVzZSBjaGFyYWN0ZXJzIGNhbiBiZSBkZXJpdmVkIGZyb20gdGhlIFVuaWNvZGVEYXRhIGZpbGUKKyMgYnkgaW5jbHVkaW5nIGFsbCBjaGFyYWN0ZXJzIHdob3NlIGNhbm9uaWNhbCBkZWNvbXBvc2l0aW9uIGNvbnNpc3RzCisjIG9mIGEgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycywgdGhlIGZpcnN0IG9mIHdoaWNoIGhhcyBhIG5vbi16ZXJvCisjIGNvbWJpbmluZyBjbGFzcy4KKyMgVGhlc2UgY2hhcmFjdGVycyBhcmUgc2ltcGx5IHF1b3RlZCBoZXJlIGZvciByZWZlcmVuY2UuCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisjIDAzNDQgICAgICAgICAgICAgICAgIENPTUJJTklORyBHUkVFSyBESUFMWVRJS0EgVE9OT1MKKyMgMEY3MyAgICAgICAgICAgICAgICAgVElCRVRBTiBWT1dFTCBTSUdOIElJCisjIDBGNzUgICAgICAgICAgICAgICAgIFRJQkVUQU4gVk9XRUwgU0lHTiBVVQorIyAwRjgxICAgICAgICAgICAgICAgICBUSUJFVEFOIFZPV0VMIFNJR04gUkVWRVJTRUQgSUkKKworIyBUb3RhbCBjb2RlIHBvaW50czogNAorCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L2RhdGEvdW5pY29kZS9Ob3JtYWxpemF0aW9uVGVzdC50eHQgYi9zcmMvY29tL2libS9pY3UvZGV2L2RhdGEvdW5pY29kZS9Ob3JtYWxpemF0aW9uVGVzdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDRkZWM0ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvZGF0YS91bmljb2RlL05vcm1hbGl6YXRpb25UZXN0LnR4dApAQCAtMCwwICsxLDE3MDM1IEBACisjIE5vcm1hbGl6YXRpb25UZXN0LTMuMi4wLnR4dAorIyBEYXRlOiAyMDAyLTAzLTE5LDIzOjMxOjE4IEdNVCBbTURdCisjCisjIE5vcm1hbGl6YXRpb24gVGVzdCBTdWl0ZQorIyBGb3JtYXQ6CisjCisjICAgQ29sdW1ucyAoYzEsIGMyLC4uLikgYXJlIHNlcGFyYXRlZCBieSBzZW1pY29sb25zCisjICAgQ29tbWVudHMgYXJlIGluZGljYXRlZCB3aXRoIGhhc2ggbWFya3MKKyMKKyMgQ09ORk9STUFOQ0U6CisjIDEuIFRoZSBmb2xsb3dpbmcgaW52YXJpYW50cyBtdXN0IGJlIHRydWUgZm9yIGFsbCBjb25mb3JtYW50IGltcGxlbWVudGF0aW9ucworIworIyAgICBORkMKKyMgICAgICBjMiA9PSAgTkZDKGMxKSA9PSAgTkZDKGMyKSA9PSAgTkZDKGMzKQorIyAgICAgIGM0ID09ICBORkMoYzQpID09ICBORkMoYzUpCisjCisjICAgIE5GRAorIyAgICAgIGMzID09ICBORkQoYzEpID09ICBORkQoYzIpID09ICBORkQoYzMpCisjICAgICAgYzUgPT0gIE5GRChjNCkgPT0gIE5GRChjNSkKKyMKKyMgICAgTkZLQworIyAgICAgIGM0ID09IE5GS0MoYzEpID09IE5GS0MoYzIpID09IE5GS0MoYzMpID09IE5GS0MoYzQpID09IE5GS0MoYzUpCisjCisjICAgIE5GS0QKKyMgICAgICBjNSA9PSBORktEKGMxKSA9PSBORktEKGMyKSA9PSBORktEKGMzKSA9PSBORktEKGM0KSA9PSBORktEKGM1KQorIworIyAyLiBGb3IgZXZlcnkgYXNzaWduZWQgVW5pY29kZSAzLjEuMCBjb2RlIHBvaW50IFggdGhhdCBpcyBub3Qgc3BlY2lmaWNhbGx5CisjICAgIGxpc3RlZCBpbiBQYXJ0IDEsIHRoZSBmb2xsb3dpbmcgaW52YXJpYW50cyBtdXN0IGJlIHRydWUgZm9yIGFsbCBjb25mb3JtYW50CisjICAgIGltcGxlbWVudGF0aW9uczoKKyMKKyMgICAgICBYID09IE5GQyhYKSA9PSBORkQoWCkgPT0gTkZLQyhYKSA9PSBORktEKFgpCisjCitAUGFydDAgIyBTcGVjaWZpYyBjYXNlcworIworMUUwQTsxRTBBOzAwNDQgMDMwNzsxRTBBOzAwNDQgMDMwNzsKKzFFMEM7MUUwQzswMDQ0IDAzMjM7MUUwQzswMDQ0IDAzMjM7CisxRTBBIDAzMjM7MUUwQyAwMzA3OzAwNDQgMDMyMyAwMzA3OzFFMEMgMDMwNzswMDQ0IDAzMjMgMDMwNzsKKzFFMEMgMDMwNzsxRTBDIDAzMDc7MDA0NCAwMzIzIDAzMDc7MUUwQyAwMzA3OzAwNDQgMDMyMyAwMzA3OworMDA0NCAwMzA3IDAzMjM7MUUwQyAwMzA3OzAwNDQgMDMyMyAwMzA3OzFFMEMgMDMwNzswMDQ0IDAzMjMgMDMwNzsKKzAwNDQgMDMyMyAwMzA3OzFFMEMgMDMwNzswMDQ0IDAzMjMgMDMwNzsxRTBDIDAzMDc7MDA0NCAwMzIzIDAzMDc7CisxRTBBIDAzMUI7MUUwQSAwMzFCOzAwNDQgMDMxQiAwMzA3OzFFMEEgMDMxQjswMDQ0IDAzMUIgMDMwNzsKKzFFMEMgMDMxQjsxRTBDIDAzMUI7MDA0NCAwMzFCIDAzMjM7MUUwQyAwMzFCOzAwNDQgMDMxQiAwMzIzOworMUUwQSAwMzFCIDAzMjM7MUUwQyAwMzFCIDAzMDc7MDA0NCAwMzFCIDAzMjMgMDMwNzsxRTBDIDAzMUIgMDMwNzswMDQ0IDAzMUIgMDMyMyAwMzA3OworMUUwQyAwMzFCIDAzMDc7MUUwQyAwMzFCIDAzMDc7MDA0NCAwMzFCIDAzMjMgMDMwNzsxRTBDIDAzMUIgMDMwNzswMDQ0IDAzMUIgMDMyMyAwMzA3OworMDA0NCAwMzFCIDAzMDcgMDMyMzsxRTBDIDAzMUIgMDMwNzswMDQ0IDAzMUIgMDMyMyAwMzA3OzFFMEMgMDMxQiAwMzA3OzAwNDQgMDMxQiAwMzIzIDAzMDc7CiswMDQ0IDAzMUIgMDMyMyAwMzA3OzFFMEMgMDMxQiAwMzA3OzAwNDQgMDMxQiAwMzIzIDAzMDc7MUUwQyAwMzFCIDAzMDc7MDA0NCAwMzFCIDAzMjMgMDMwNzsKKzAwQzg7MDBDODswMDQ1IDAzMDA7MDBDODswMDQ1IDAzMDA7CiswMTEyOzAxMTI7MDA0NSAwMzA0OzAxMTI7MDA0NSAwMzA0OworMDA0NSAwMzAwOzAwQzg7MDA0NSAwMzAwOzAwQzg7MDA0NSAwMzAwOworMDA0NSAwMzA0OzAxMTI7MDA0NSAwMzA0OzAxMTI7MDA0NSAwMzA0OworMUUxNDsxRTE0OzAwNDUgMDMwNCAwMzAwOzFFMTQ7MDA0NSAwMzA0IDAzMDA7CiswMTEyIDAzMDA7MUUxNDswMDQ1IDAzMDQgMDMwMDsxRTE0OzAwNDUgMDMwNCAwMzAwOworMUUxNCAwMzA0OzFFMTQgMDMwNDswMDQ1IDAzMDQgMDMwMCAwMzA0OzFFMTQgMDMwNDswMDQ1IDAzMDQgMDMwMCAwMzA0OworMDA0NSAwMzA0IDAzMDA7MUUxNDswMDQ1IDAzMDQgMDMwMDsxRTE0OzAwNDUgMDMwNCAwMzAwOworMDA0NSAwMzAwIDAzMDQ7MDBDOCAwMzA0OzAwNDUgMDMwMCAwMzA0OzAwQzggMDMwNDswMDQ1IDAzMDAgMDMwNDsKKzA1QjggMDVCOSAwNUIxIDA1OTEgMDVDMyAwNUIwIDA1QUMgMDU5RjswNUIxIDA1QjggMDVCOSAwNTkxIDA1QzMgMDVCMCAwNUFDIDA1OUY7MDVCMSAwNUI4IDA1QjkgMDU5MSAwNUMzIDA1QjAgMDVBQyAwNTlGOzA1QjEgMDVCOCAwNUI5IDA1OTEgMDVDMyAwNUIwIDA1QUMgMDU5RjswNUIxIDA1QjggMDVCOSAwNTkxIDA1QzMgMDVCMCAwNUFDIDA1OUY7CiswNTkyIDA1QjcgMDVCQyAwNUE1IDA1QjAgMDVDMCAwNUM0IDA1QUQ7MDVCMCAwNUI3IDA1QkMgMDVBNSAwNTkyIDA1QzAgMDVBRCAwNUM0OzA1QjAgMDVCNyAwNUJDIDA1QTUgMDU5MiAwNUMwIDA1QUQgMDVDNDswNUIwIDA1QjcgMDVCQyAwNUE1IDA1OTIgMDVDMCAwNUFEIDA1QzQ7MDVCMCAwNUI3IDA1QkMgMDVBNSAwNTkyIDA1QzAgMDVBRCAwNUM0OworIworQFBhcnQxICMgQ2hhcmFjdGVyIGJ5IGNoYXJhY3RlciB0ZXN0CisjIEFsbCBjaGFyYWN0ZXJzIG5vdCBleHBsaWNpdGx5IG9jY3VycmluZyBpbiBjMSBvZiBQYXJ0IDEgaGF2ZSBpZGVudGljYWwgTkZDLCBELCBLQywgS0QgZm9ybXMuCisjCiswMEEwOzAwQTA7MDBBMDswMDIwOzAwMjA7CiswMEE4OzAwQTg7MDBBODswMDIwIDAzMDg7MDAyMCAwMzA4OworMDBBQTswMEFBOzAwQUE7MDA2MTswMDYxOworMDBBRjswMEFGOzAwQUY7MDAyMCAwMzA0OzAwMjAgMDMwNDsKKzAwQjI7MDBCMjswMEIyOzAwMzI7MDAzMjsKKzAwQjM7MDBCMzswMEIzOzAwMzM7MDAzMzsKKzAwQjQ7MDBCNDswMEI0OzAwMjAgMDMwMTswMDIwIDAzMDE7CiswMEI1OzAwQjU7MDBCNTswM0JDOzAzQkM7CiswMEI4OzAwQjg7MDBCODswMDIwIDAzMjc7MDAyMCAwMzI3OworMDBCOTswMEI5OzAwQjk7MDAzMTswMDMxOworMDBCQTswMEJBOzAwQkE7MDA2RjswMDZGOworMDBCQzswMEJDOzAwQkM7MDAzMSAyMDQ0IDAwMzQ7MDAzMSAyMDQ0IDAwMzQ7CiswMEJEOzAwQkQ7MDBCRDswMDMxIDIwNDQgMDAzMjswMDMxIDIwNDQgMDAzMjsKKzAwQkU7MDBCRTswMEJFOzAwMzMgMjA0NCAwMDM0OzAwMzMgMjA0NCAwMDM0OworMDBDMDswMEMwOzAwNDEgMDMwMDswMEMwOzAwNDEgMDMwMDsKKzAwQzE7MDBDMTswMDQxIDAzMDE7MDBDMTswMDQxIDAzMDE7CiswMEMyOzAwQzI7MDA0MSAwMzAyOzAwQzI7MDA0MSAwMzAyOworMDBDMzswMEMzOzAwNDEgMDMwMzswMEMzOzAwNDEgMDMwMzsKKzAwQzQ7MDBDNDswMDQxIDAzMDg7MDBDNDswMDQxIDAzMDg7CiswMEM1OzAwQzU7MDA0MSAwMzBBOzAwQzU7MDA0MSAwMzBBOworMDBDNzswMEM3OzAwNDMgMDMyNzswMEM3OzAwNDMgMDMyNzsKKzAwQzg7MDBDODswMDQ1IDAzMDA7MDBDODswMDQ1IDAzMDA7CiswMEM5OzAwQzk7MDA0NSAwMzAxOzAwQzk7MDA0NSAwMzAxOworMDBDQTswMENBOzAwNDUgMDMwMjswMENBOzAwNDUgMDMwMjsKKzAwQ0I7MDBDQjswMDQ1IDAzMDg7MDBDQjswMDQ1IDAzMDg7CiswMENDOzAwQ0M7MDA0OSAwMzAwOzAwQ0M7MDA0OSAwMzAwOworMDBDRDswMENEOzAwNDkgMDMwMTswMENEOzAwNDkgMDMwMTsKKzAwQ0U7MDBDRTswMDQ5IDAzMDI7MDBDRTswMDQ5IDAzMDI7CiswMENGOzAwQ0Y7MDA0OSAwMzA4OzAwQ0Y7MDA0OSAwMzA4OworMDBEMTswMEQxOzAwNEUgMDMwMzswMEQxOzAwNEUgMDMwMzsKKzAwRDI7MDBEMjswMDRGIDAzMDA7MDBEMjswMDRGIDAzMDA7CiswMEQzOzAwRDM7MDA0RiAwMzAxOzAwRDM7MDA0RiAwMzAxOworMDBENDswMEQ0OzAwNEYgMDMwMjswMEQ0OzAwNEYgMDMwMjsKKzAwRDU7MDBENTswMDRGIDAzMDM7MDBENTswMDRGIDAzMDM7CiswMEQ2OzAwRDY7MDA0RiAwMzA4OzAwRDY7MDA0RiAwMzA4OworMDBEOTswMEQ5OzAwNTUgMDMwMDswMEQ5OzAwNTUgMDMwMDsKKzAwREE7MDBEQTswMDU1IDAzMDE7MDBEQTswMDU1IDAzMDE7CiswMERCOzAwREI7MDA1NSAwMzAyOzAwREI7MDA1NSAwMzAyOworMDBEQzswMERDOzAwNTUgMDMwODswMERDOzAwNTUgMDMwODsKKzAwREQ7MDBERDswMDU5IDAzMDE7MDBERDswMDU5IDAzMDE7CiswMEUwOzAwRTA7MDA2MSAwMzAwOzAwRTA7MDA2MSAwMzAwOworMDBFMTswMEUxOzAwNjEgMDMwMTswMEUxOzAwNjEgMDMwMTsKKzAwRTI7MDBFMjswMDYxIDAzMDI7MDBFMjswMDYxIDAzMDI7CiswMEUzOzAwRTM7MDA2MSAwMzAzOzAwRTM7MDA2MSAwMzAzOworMDBFNDswMEU0OzAwNjEgMDMwODswMEU0OzAwNjEgMDMwODsKKzAwRTU7MDBFNTswMDYxIDAzMEE7MDBFNTswMDYxIDAzMEE7CiswMEU3OzAwRTc7MDA2MyAwMzI3OzAwRTc7MDA2MyAwMzI3OworMDBFODswMEU4OzAwNjUgMDMwMDswMEU4OzAwNjUgMDMwMDsKKzAwRTk7MDBFOTswMDY1IDAzMDE7MDBFOTswMDY1IDAzMDE7CiswMEVBOzAwRUE7MDA2NSAwMzAyOzAwRUE7MDA2NSAwMzAyOworMDBFQjswMEVCOzAwNjUgMDMwODswMEVCOzAwNjUgMDMwODsKKzAwRUM7MDBFQzswMDY5IDAzMDA7MDBFQzswMDY5IDAzMDA7CiswMEVEOzAwRUQ7MDA2OSAwMzAxOzAwRUQ7MDA2OSAwMzAxOworMDBFRTswMEVFOzAwNjkgMDMwMjswMEVFOzAwNjkgMDMwMjsKKzAwRUY7MDBFRjswMDY5IDAzMDg7MDBFRjswMDY5IDAzMDg7CiswMEYxOzAwRjE7MDA2RSAwMzAzOzAwRjE7MDA2RSAwMzAzOworMDBGMjswMEYyOzAwNkYgMDMwMDswMEYyOzAwNkYgMDMwMDsKKzAwRjM7MDBGMzswMDZGIDAzMDE7MDBGMzswMDZGIDAzMDE7CiswMEY0OzAwRjQ7MDA2RiAwMzAyOzAwRjQ7MDA2RiAwMzAyOworMDBGNTswMEY1OzAwNkYgMDMwMzswMEY1OzAwNkYgMDMwMzsKKzAwRjY7MDBGNjswMDZGIDAzMDg7MDBGNjswMDZGIDAzMDg7CiswMEY5OzAwRjk7MDA3NSAwMzAwOzAwRjk7MDA3NSAwMzAwOworMDBGQTswMEZBOzAwNzUgMDMwMTswMEZBOzAwNzUgMDMwMTsKKzAwRkI7MDBGQjswMDc1IDAzMDI7MDBGQjswMDc1IDAzMDI7CiswMEZDOzAwRkM7MDA3NSAwMzA4OzAwRkM7MDA3NSAwMzA4OworMDBGRDswMEZEOzAwNzkgMDMwMTswMEZEOzAwNzkgMDMwMTsKKzAwRkY7MDBGRjswMDc5IDAzMDg7MDBGRjswMDc5IDAzMDg7CiswMTAwOzAxMDA7MDA0MSAwMzA0OzAxMDA7MDA0MSAwMzA0OworMDEwMTswMTAxOzAwNjEgMDMwNDswMTAxOzAwNjEgMDMwNDsKKzAxMDI7MDEwMjswMDQxIDAzMDY7MDEwMjswMDQxIDAzMDY7CiswMTAzOzAxMDM7MDA2MSAwMzA2OzAxMDM7MDA2MSAwMzA2OworMDEwNDswMTA0OzAwNDEgMDMyODswMTA0OzAwNDEgMDMyODsKKzAxMDU7MDEwNTswMDYxIDAzMjg7MDEwNTswMDYxIDAzMjg7CiswMTA2OzAxMDY7MDA0MyAwMzAxOzAxMDY7MDA0MyAwMzAxOworMDEwNzswMTA3OzAwNjMgMDMwMTswMTA3OzAwNjMgMDMwMTsKKzAxMDg7MDEwODswMDQzIDAzMDI7MDEwODswMDQzIDAzMDI7CiswMTA5OzAxMDk7MDA2MyAwMzAyOzAxMDk7MDA2MyAwMzAyOworMDEwQTswMTBBOzAwNDMgMDMwNzswMTBBOzAwNDMgMDMwNzsKKzAxMEI7MDEwQjswMDYzIDAzMDc7MDEwQjswMDYzIDAzMDc7CiswMTBDOzAxMEM7MDA0MyAwMzBDOzAxMEM7MDA0MyAwMzBDOworMDEwRDswMTBEOzAwNjMgMDMwQzswMTBEOzAwNjMgMDMwQzsKKzAxMEU7MDEwRTswMDQ0IDAzMEM7MDEwRTswMDQ0IDAzMEM7CiswMTBGOzAxMEY7MDA2NCAwMzBDOzAxMEY7MDA2NCAwMzBDOworMDExMjswMTEyOzAwNDUgMDMwNDswMTEyOzAwNDUgMDMwNDsKKzAxMTM7MDExMzswMDY1IDAzMDQ7MDExMzswMDY1IDAzMDQ7CiswMTE0OzAxMTQ7MDA0NSAwMzA2OzAxMTQ7MDA0NSAwMzA2OworMDExNTswMTE1OzAwNjUgMDMwNjswMTE1OzAwNjUgMDMwNjsKKzAxMTY7MDExNjswMDQ1IDAzMDc7MDExNjswMDQ1IDAzMDc7CiswMTE3OzAxMTc7MDA2NSAwMzA3OzAxMTc7MDA2NSAwMzA3OworMDExODswMTE4OzAwNDUgMDMyODswMTE4OzAwNDUgMDMyODsKKzAxMTk7MDExOTswMDY1IDAzMjg7MDExOTswMDY1IDAzMjg7CiswMTFBOzAxMUE7MDA0NSAwMzBDOzAxMUE7MDA0NSAwMzBDOworMDExQjswMTFCOzAwNjUgMDMwQzswMTFCOzAwNjUgMDMwQzsKKzAxMUM7MDExQzswMDQ3IDAzMDI7MDExQzswMDQ3IDAzMDI7CiswMTFEOzAxMUQ7MDA2NyAwMzAyOzAxMUQ7MDA2NyAwMzAyOworMDExRTswMTFFOzAwNDcgMDMwNjswMTFFOzAwNDcgMDMwNjsKKzAxMUY7MDExRjswMDY3IDAzMDY7MDExRjswMDY3IDAzMDY7CiswMTIwOzAxMjA7MDA0NyAwMzA3OzAxMjA7MDA0NyAwMzA3OworMDEyMTswMTIxOzAwNjcgMDMwNzswMTIxOzAwNjcgMDMwNzsKKzAxMjI7MDEyMjswMDQ3IDAzMjc7MDEyMjswMDQ3IDAzMjc7CiswMTIzOzAxMjM7MDA2NyAwMzI3OzAxMjM7MDA2NyAwMzI3OworMDEyNDswMTI0OzAwNDggMDMwMjswMTI0OzAwNDggMDMwMjsKKzAxMjU7MDEyNTswMDY4IDAzMDI7MDEyNTswMDY4IDAzMDI7CiswMTI4OzAxMjg7MDA0OSAwMzAzOzAxMjg7MDA0OSAwMzAzOworMDEyOTswMTI5OzAwNjkgMDMwMzswMTI5OzAwNjkgMDMwMzsKKzAxMkE7MDEyQTswMDQ5IDAzMDQ7MDEyQTswMDQ5IDAzMDQ7CiswMTJCOzAxMkI7MDA2OSAwMzA0OzAxMkI7MDA2OSAwMzA0OworMDEyQzswMTJDOzAwNDkgMDMwNjswMTJDOzAwNDkgMDMwNjsKKzAxMkQ7MDEyRDswMDY5IDAzMDY7MDEyRDswMDY5IDAzMDY7CiswMTJFOzAxMkU7MDA0OSAwMzI4OzAxMkU7MDA0OSAwMzI4OworMDEyRjswMTJGOzAwNjkgMDMyODswMTJGOzAwNjkgMDMyODsKKzAxMzA7MDEzMDswMDQ5IDAzMDc7MDEzMDswMDQ5IDAzMDc7CiswMTMyOzAxMzI7MDEzMjswMDQ5IDAwNEE7MDA0OSAwMDRBOworMDEzMzswMTMzOzAxMzM7MDA2OSAwMDZBOzAwNjkgMDA2QTsKKzAxMzQ7MDEzNDswMDRBIDAzMDI7MDEzNDswMDRBIDAzMDI7CiswMTM1OzAxMzU7MDA2QSAwMzAyOzAxMzU7MDA2QSAwMzAyOworMDEzNjswMTM2OzAwNEIgMDMyNzswMTM2OzAwNEIgMDMyNzsKKzAxMzc7MDEzNzswMDZCIDAzMjc7MDEzNzswMDZCIDAzMjc7CiswMTM5OzAxMzk7MDA0QyAwMzAxOzAxMzk7MDA0QyAwMzAxOworMDEzQTswMTNBOzAwNkMgMDMwMTswMTNBOzAwNkMgMDMwMTsKKzAxM0I7MDEzQjswMDRDIDAzMjc7MDEzQjswMDRDIDAzMjc7CiswMTNDOzAxM0M7MDA2QyAwMzI3OzAxM0M7MDA2QyAwMzI3OworMDEzRDswMTNEOzAwNEMgMDMwQzswMTNEOzAwNEMgMDMwQzsKKzAxM0U7MDEzRTswMDZDIDAzMEM7MDEzRTswMDZDIDAzMEM7CiswMTNGOzAxM0Y7MDEzRjswMDRDIDAwQjc7MDA0QyAwMEI3OworMDE0MDswMTQwOzAxNDA7MDA2QyAwMEI3OzAwNkMgMDBCNzsKKzAxNDM7MDE0MzswMDRFIDAzMDE7MDE0MzswMDRFIDAzMDE7CiswMTQ0OzAxNDQ7MDA2RSAwMzAxOzAxNDQ7MDA2RSAwMzAxOworMDE0NTswMTQ1OzAwNEUgMDMyNzswMTQ1OzAwNEUgMDMyNzsKKzAxNDY7MDE0NjswMDZFIDAzMjc7MDE0NjswMDZFIDAzMjc7CiswMTQ3OzAxNDc7MDA0RSAwMzBDOzAxNDc7MDA0RSAwMzBDOworMDE0ODswMTQ4OzAwNkUgMDMwQzswMTQ4OzAwNkUgMDMwQzsKKzAxNDk7MDE0OTswMTQ5OzAyQkMgMDA2RTswMkJDIDAwNkU7CiswMTRDOzAxNEM7MDA0RiAwMzA0OzAxNEM7MDA0RiAwMzA0OworMDE0RDswMTREOzAwNkYgMDMwNDswMTREOzAwNkYgMDMwNDsKKzAxNEU7MDE0RTswMDRGIDAzMDY7MDE0RTswMDRGIDAzMDY7CiswMTRGOzAxNEY7MDA2RiAwMzA2OzAxNEY7MDA2RiAwMzA2OworMDE1MDswMTUwOzAwNEYgMDMwQjswMTUwOzAwNEYgMDMwQjsKKzAxNTE7MDE1MTswMDZGIDAzMEI7MDE1MTswMDZGIDAzMEI7CiswMTU0OzAxNTQ7MDA1MiAwMzAxOzAxNTQ7MDA1MiAwMzAxOworMDE1NTswMTU1OzAwNzIgMDMwMTswMTU1OzAwNzIgMDMwMTsKKzAxNTY7MDE1NjswMDUyIDAzMjc7MDE1NjswMDUyIDAzMjc7CiswMTU3OzAxNTc7MDA3MiAwMzI3OzAxNTc7MDA3MiAwMzI3OworMDE1ODswMTU4OzAwNTIgMDMwQzswMTU4OzAwNTIgMDMwQzsKKzAxNTk7MDE1OTswMDcyIDAzMEM7MDE1OTswMDcyIDAzMEM7CiswMTVBOzAxNUE7MDA1MyAwMzAxOzAxNUE7MDA1MyAwMzAxOworMDE1QjswMTVCOzAwNzMgMDMwMTswMTVCOzAwNzMgMDMwMTsKKzAxNUM7MDE1QzswMDUzIDAzMDI7MDE1QzswMDUzIDAzMDI7CiswMTVEOzAxNUQ7MDA3MyAwMzAyOzAxNUQ7MDA3MyAwMzAyOworMDE1RTswMTVFOzAwNTMgMDMyNzswMTVFOzAwNTMgMDMyNzsKKzAxNUY7MDE1RjswMDczIDAzMjc7MDE1RjswMDczIDAzMjc7CiswMTYwOzAxNjA7MDA1MyAwMzBDOzAxNjA7MDA1MyAwMzBDOworMDE2MTswMTYxOzAwNzMgMDMwQzswMTYxOzAwNzMgMDMwQzsKKzAxNjI7MDE2MjswMDU0IDAzMjc7MDE2MjswMDU0IDAzMjc7CiswMTYzOzAxNjM7MDA3NCAwMzI3OzAxNjM7MDA3NCAwMzI3OworMDE2NDswMTY0OzAwNTQgMDMwQzswMTY0OzAwNTQgMDMwQzsKKzAxNjU7MDE2NTswMDc0IDAzMEM7MDE2NTswMDc0IDAzMEM7CiswMTY4OzAxNjg7MDA1NSAwMzAzOzAxNjg7MDA1NSAwMzAzOworMDE2OTswMTY5OzAwNzUgMDMwMzswMTY5OzAwNzUgMDMwMzsKKzAxNkE7MDE2QTswMDU1IDAzMDQ7MDE2QTswMDU1IDAzMDQ7CiswMTZCOzAxNkI7MDA3NSAwMzA0OzAxNkI7MDA3NSAwMzA0OworMDE2QzswMTZDOzAwNTUgMDMwNjswMTZDOzAwNTUgMDMwNjsKKzAxNkQ7MDE2RDswMDc1IDAzMDY7MDE2RDswMDc1IDAzMDY7CiswMTZFOzAxNkU7MDA1NSAwMzBBOzAxNkU7MDA1NSAwMzBBOworMDE2RjswMTZGOzAwNzUgMDMwQTswMTZGOzAwNzUgMDMwQTsKKzAxNzA7MDE3MDswMDU1IDAzMEI7MDE3MDswMDU1IDAzMEI7CiswMTcxOzAxNzE7MDA3NSAwMzBCOzAxNzE7MDA3NSAwMzBCOworMDE3MjswMTcyOzAwNTUgMDMyODswMTcyOzAwNTUgMDMyODsKKzAxNzM7MDE3MzswMDc1IDAzMjg7MDE3MzswMDc1IDAzMjg7CiswMTc0OzAxNzQ7MDA1NyAwMzAyOzAxNzQ7MDA1NyAwMzAyOworMDE3NTswMTc1OzAwNzcgMDMwMjswMTc1OzAwNzcgMDMwMjsKKzAxNzY7MDE3NjswMDU5IDAzMDI7MDE3NjswMDU5IDAzMDI7CiswMTc3OzAxNzc7MDA3OSAwMzAyOzAxNzc7MDA3OSAwMzAyOworMDE3ODswMTc4OzAwNTkgMDMwODswMTc4OzAwNTkgMDMwODsKKzAxNzk7MDE3OTswMDVBIDAzMDE7MDE3OTswMDVBIDAzMDE7CiswMTdBOzAxN0E7MDA3QSAwMzAxOzAxN0E7MDA3QSAwMzAxOworMDE3QjswMTdCOzAwNUEgMDMwNzswMTdCOzAwNUEgMDMwNzsKKzAxN0M7MDE3QzswMDdBIDAzMDc7MDE3QzswMDdBIDAzMDc7CiswMTdEOzAxN0Q7MDA1QSAwMzBDOzAxN0Q7MDA1QSAwMzBDOworMDE3RTswMTdFOzAwN0EgMDMwQzswMTdFOzAwN0EgMDMwQzsKKzAxN0Y7MDE3RjswMTdGOzAwNzM7MDA3MzsKKzAxQTA7MDFBMDswMDRGIDAzMUI7MDFBMDswMDRGIDAzMUI7CiswMUExOzAxQTE7MDA2RiAwMzFCOzAxQTE7MDA2RiAwMzFCOworMDFBRjswMUFGOzAwNTUgMDMxQjswMUFGOzAwNTUgMDMxQjsKKzAxQjA7MDFCMDswMDc1IDAzMUI7MDFCMDswMDc1IDAzMUI7CiswMUM0OzAxQzQ7MDFDNDswMDQ0IDAxN0Q7MDA0NCAwMDVBIDAzMEM7CiswMUM1OzAxQzU7MDFDNTswMDQ0IDAxN0U7MDA0NCAwMDdBIDAzMEM7CiswMUM2OzAxQzY7MDFDNjswMDY0IDAxN0U7MDA2NCAwMDdBIDAzMEM7CiswMUM3OzAxQzc7MDFDNzswMDRDIDAwNEE7MDA0QyAwMDRBOworMDFDODswMUM4OzAxQzg7MDA0QyAwMDZBOzAwNEMgMDA2QTsKKzAxQzk7MDFDOTswMUM5OzAwNkMgMDA2QTswMDZDIDAwNkE7CiswMUNBOzAxQ0E7MDFDQTswMDRFIDAwNEE7MDA0RSAwMDRBOworMDFDQjswMUNCOzAxQ0I7MDA0RSAwMDZBOzAwNEUgMDA2QTsKKzAxQ0M7MDFDQzswMUNDOzAwNkUgMDA2QTswMDZFIDAwNkE7CiswMUNEOzAxQ0Q7MDA0MSAwMzBDOzAxQ0Q7MDA0MSAwMzBDOworMDFDRTswMUNFOzAwNjEgMDMwQzswMUNFOzAwNjEgMDMwQzsKKzAxQ0Y7MDFDRjswMDQ5IDAzMEM7MDFDRjswMDQ5IDAzMEM7CiswMUQwOzAxRDA7MDA2OSAwMzBDOzAxRDA7MDA2OSAwMzBDOworMDFEMTswMUQxOzAwNEYgMDMwQzswMUQxOzAwNEYgMDMwQzsKKzAxRDI7MDFEMjswMDZGIDAzMEM7MDFEMjswMDZGIDAzMEM7CiswMUQzOzAxRDM7MDA1NSAwMzBDOzAxRDM7MDA1NSAwMzBDOworMDFENDswMUQ0OzAwNzUgMDMwQzswMUQ0OzAwNzUgMDMwQzsKKzAxRDU7MDFENTswMDU1IDAzMDggMDMwNDswMUQ1OzAwNTUgMDMwOCAwMzA0OworMDFENjswMUQ2OzAwNzUgMDMwOCAwMzA0OzAxRDY7MDA3NSAwMzA4IDAzMDQ7CiswMUQ3OzAxRDc7MDA1NSAwMzA4IDAzMDE7MDFENzswMDU1IDAzMDggMDMwMTsKKzAxRDg7MDFEODswMDc1IDAzMDggMDMwMTswMUQ4OzAwNzUgMDMwOCAwMzAxOworMDFEOTswMUQ5OzAwNTUgMDMwOCAwMzBDOzAxRDk7MDA1NSAwMzA4IDAzMEM7CiswMURBOzAxREE7MDA3NSAwMzA4IDAzMEM7MDFEQTswMDc1IDAzMDggMDMwQzsKKzAxREI7MDFEQjswMDU1IDAzMDggMDMwMDswMURCOzAwNTUgMDMwOCAwMzAwOworMDFEQzswMURDOzAwNzUgMDMwOCAwMzAwOzAxREM7MDA3NSAwMzA4IDAzMDA7CiswMURFOzAxREU7MDA0MSAwMzA4IDAzMDQ7MDFERTswMDQxIDAzMDggMDMwNDsKKzAxREY7MDFERjswMDYxIDAzMDggMDMwNDswMURGOzAwNjEgMDMwOCAwMzA0OworMDFFMDswMUUwOzAwNDEgMDMwNyAwMzA0OzAxRTA7MDA0MSAwMzA3IDAzMDQ7CiswMUUxOzAxRTE7MDA2MSAwMzA3IDAzMDQ7MDFFMTswMDYxIDAzMDcgMDMwNDsKKzAxRTI7MDFFMjswMEM2IDAzMDQ7MDFFMjswMEM2IDAzMDQ7CiswMUUzOzAxRTM7MDBFNiAwMzA0OzAxRTM7MDBFNiAwMzA0OworMDFFNjswMUU2OzAwNDcgMDMwQzswMUU2OzAwNDcgMDMwQzsKKzAxRTc7MDFFNzswMDY3IDAzMEM7MDFFNzswMDY3IDAzMEM7CiswMUU4OzAxRTg7MDA0QiAwMzBDOzAxRTg7MDA0QiAwMzBDOworMDFFOTswMUU5OzAwNkIgMDMwQzswMUU5OzAwNkIgMDMwQzsKKzAxRUE7MDFFQTswMDRGIDAzMjg7MDFFQTswMDRGIDAzMjg7CiswMUVCOzAxRUI7MDA2RiAwMzI4OzAxRUI7MDA2RiAwMzI4OworMDFFQzswMUVDOzAwNEYgMDMyOCAwMzA0OzAxRUM7MDA0RiAwMzI4IDAzMDQ7CiswMUVEOzAxRUQ7MDA2RiAwMzI4IDAzMDQ7MDFFRDswMDZGIDAzMjggMDMwNDsKKzAxRUU7MDFFRTswMUI3IDAzMEM7MDFFRTswMUI3IDAzMEM7CiswMUVGOzAxRUY7MDI5MiAwMzBDOzAxRUY7MDI5MiAwMzBDOworMDFGMDswMUYwOzAwNkEgMDMwQzswMUYwOzAwNkEgMDMwQzsKKzAxRjE7MDFGMTswMUYxOzAwNDQgMDA1QTswMDQ0IDAwNUE7CiswMUYyOzAxRjI7MDFGMjswMDQ0IDAwN0E7MDA0NCAwMDdBOworMDFGMzswMUYzOzAxRjM7MDA2NCAwMDdBOzAwNjQgMDA3QTsKKzAxRjQ7MDFGNDswMDQ3IDAzMDE7MDFGNDswMDQ3IDAzMDE7CiswMUY1OzAxRjU7MDA2NyAwMzAxOzAxRjU7MDA2NyAwMzAxOworMDFGODswMUY4OzAwNEUgMDMwMDswMUY4OzAwNEUgMDMwMDsKKzAxRjk7MDFGOTswMDZFIDAzMDA7MDFGOTswMDZFIDAzMDA7CiswMUZBOzAxRkE7MDA0MSAwMzBBIDAzMDE7MDFGQTswMDQxIDAzMEEgMDMwMTsKKzAxRkI7MDFGQjswMDYxIDAzMEEgMDMwMTswMUZCOzAwNjEgMDMwQSAwMzAxOworMDFGQzswMUZDOzAwQzYgMDMwMTswMUZDOzAwQzYgMDMwMTsKKzAxRkQ7MDFGRDswMEU2IDAzMDE7MDFGRDswMEU2IDAzMDE7CiswMUZFOzAxRkU7MDBEOCAwMzAxOzAxRkU7MDBEOCAwMzAxOworMDFGRjswMUZGOzAwRjggMDMwMTswMUZGOzAwRjggMDMwMTsKKzAyMDA7MDIwMDswMDQxIDAzMEY7MDIwMDswMDQxIDAzMEY7CiswMjAxOzAyMDE7MDA2MSAwMzBGOzAyMDE7MDA2MSAwMzBGOworMDIwMjswMjAyOzAwNDEgMDMxMTswMjAyOzAwNDEgMDMxMTsKKzAyMDM7MDIwMzswMDYxIDAzMTE7MDIwMzswMDYxIDAzMTE7CiswMjA0OzAyMDQ7MDA0NSAwMzBGOzAyMDQ7MDA0NSAwMzBGOworMDIwNTswMjA1OzAwNjUgMDMwRjswMjA1OzAwNjUgMDMwRjsKKzAyMDY7MDIwNjswMDQ1IDAzMTE7MDIwNjswMDQ1IDAzMTE7CiswMjA3OzAyMDc7MDA2NSAwMzExOzAyMDc7MDA2NSAwMzExOworMDIwODswMjA4OzAwNDkgMDMwRjswMjA4OzAwNDkgMDMwRjsKKzAyMDk7MDIwOTswMDY5IDAzMEY7MDIwOTswMDY5IDAzMEY7CiswMjBBOzAyMEE7MDA0OSAwMzExOzAyMEE7MDA0OSAwMzExOworMDIwQjswMjBCOzAwNjkgMDMxMTswMjBCOzAwNjkgMDMxMTsKKzAyMEM7MDIwQzswMDRGIDAzMEY7MDIwQzswMDRGIDAzMEY7CiswMjBEOzAyMEQ7MDA2RiAwMzBGOzAyMEQ7MDA2RiAwMzBGOworMDIwRTswMjBFOzAwNEYgMDMxMTswMjBFOzAwNEYgMDMxMTsKKzAyMEY7MDIwRjswMDZGIDAzMTE7MDIwRjswMDZGIDAzMTE7CiswMjEwOzAyMTA7MDA1MiAwMzBGOzAyMTA7MDA1MiAwMzBGOworMDIxMTswMjExOzAwNzIgMDMwRjswMjExOzAwNzIgMDMwRjsKKzAyMTI7MDIxMjswMDUyIDAzMTE7MDIxMjswMDUyIDAzMTE7CiswMjEzOzAyMTM7MDA3MiAwMzExOzAyMTM7MDA3MiAwMzExOworMDIxNDswMjE0OzAwNTUgMDMwRjswMjE0OzAwNTUgMDMwRjsKKzAyMTU7MDIxNTswMDc1IDAzMEY7MDIxNTswMDc1IDAzMEY7CiswMjE2OzAyMTY7MDA1NSAwMzExOzAyMTY7MDA1NSAwMzExOworMDIxNzswMjE3OzAwNzUgMDMxMTswMjE3OzAwNzUgMDMxMTsKKzAyMTg7MDIxODswMDUzIDAzMjY7MDIxODswMDUzIDAzMjY7CiswMjE5OzAyMTk7MDA3MyAwMzI2OzAyMTk7MDA3MyAwMzI2OworMDIxQTswMjFBOzAwNTQgMDMyNjswMjFBOzAwNTQgMDMyNjsKKzAyMUI7MDIxQjswMDc0IDAzMjY7MDIxQjswMDc0IDAzMjY7CiswMjFFOzAyMUU7MDA0OCAwMzBDOzAyMUU7MDA0OCAwMzBDOworMDIxRjswMjFGOzAwNjggMDMwQzswMjFGOzAwNjggMDMwQzsKKzAyMjY7MDIyNjswMDQxIDAzMDc7MDIyNjswMDQxIDAzMDc7CiswMjI3OzAyMjc7MDA2MSAwMzA3OzAyMjc7MDA2MSAwMzA3OworMDIyODswMjI4OzAwNDUgMDMyNzswMjI4OzAwNDUgMDMyNzsKKzAyMjk7MDIyOTswMDY1IDAzMjc7MDIyOTswMDY1IDAzMjc7CiswMjJBOzAyMkE7MDA0RiAwMzA4IDAzMDQ7MDIyQTswMDRGIDAzMDggMDMwNDsKKzAyMkI7MDIyQjswMDZGIDAzMDggMDMwNDswMjJCOzAwNkYgMDMwOCAwMzA0OworMDIyQzswMjJDOzAwNEYgMDMwMyAwMzA0OzAyMkM7MDA0RiAwMzAzIDAzMDQ7CiswMjJEOzAyMkQ7MDA2RiAwMzAzIDAzMDQ7MDIyRDswMDZGIDAzMDMgMDMwNDsKKzAyMkU7MDIyRTswMDRGIDAzMDc7MDIyRTswMDRGIDAzMDc7CiswMjJGOzAyMkY7MDA2RiAwMzA3OzAyMkY7MDA2RiAwMzA3OworMDIzMDswMjMwOzAwNEYgMDMwNyAwMzA0OzAyMzA7MDA0RiAwMzA3IDAzMDQ7CiswMjMxOzAyMzE7MDA2RiAwMzA3IDAzMDQ7MDIzMTswMDZGIDAzMDcgMDMwNDsKKzAyMzI7MDIzMjswMDU5IDAzMDQ7MDIzMjswMDU5IDAzMDQ7CiswMjMzOzAyMzM7MDA3OSAwMzA0OzAyMzM7MDA3OSAwMzA0OworMDJCMDswMkIwOzAyQjA7MDA2ODswMDY4OworMDJCMTswMkIxOzAyQjE7MDI2NjswMjY2OworMDJCMjswMkIyOzAyQjI7MDA2QTswMDZBOworMDJCMzswMkIzOzAyQjM7MDA3MjswMDcyOworMDJCNDswMkI0OzAyQjQ7MDI3OTswMjc5OworMDJCNTswMkI1OzAyQjU7MDI3QjswMjdCOworMDJCNjswMkI2OzAyQjY7MDI4MTswMjgxOworMDJCNzswMkI3OzAyQjc7MDA3NzswMDc3OworMDJCODswMkI4OzAyQjg7MDA3OTswMDc5OworMDJEODswMkQ4OzAyRDg7MDAyMCAwMzA2OzAwMjAgMDMwNjsKKzAyRDk7MDJEOTswMkQ5OzAwMjAgMDMwNzswMDIwIDAzMDc7CiswMkRBOzAyREE7MDJEQTswMDIwIDAzMEE7MDAyMCAwMzBBOworMDJEQjswMkRCOzAyREI7MDAyMCAwMzI4OzAwMjAgMDMyODsKKzAyREM7MDJEQzswMkRDOzAwMjAgMDMwMzswMDIwIDAzMDM7CiswMkREOzAyREQ7MDJERDswMDIwIDAzMEI7MDAyMCAwMzBCOworMDJFMDswMkUwOzAyRTA7MDI2MzswMjYzOworMDJFMTswMkUxOzAyRTE7MDA2QzswMDZDOworMDJFMjswMkUyOzAyRTI7MDA3MzswMDczOworMDJFMzswMkUzOzAyRTM7MDA3ODswMDc4OworMDJFNDswMkU0OzAyRTQ7MDI5NTswMjk1OworMDM0MDswMzAwOzAzMDA7MDMwMDswMzAwOworMDM0MTswMzAxOzAzMDE7MDMwMTswMzAxOworMDM0MzswMzEzOzAzMTM7MDMxMzswMzEzOworMDM0NDswMzA4IDAzMDE7MDMwOCAwMzAxOzAzMDggMDMwMTswMzA4IDAzMDE7CiswMzc0OzAyQjk7MDJCOTswMkI5OzAyQjk7CiswMzdBOzAzN0E7MDM3QTswMDIwIDAzNDU7MDAyMCAwMzQ1OworMDM3RTswMDNCOzAwM0I7MDAzQjswMDNCOworMDM4NDswMzg0OzAzODQ7MDAyMCAwMzAxOzAwMjAgMDMwMTsKKzAzODU7MDM4NTswMEE4IDAzMDE7MDAyMCAwMzA4IDAzMDE7MDAyMCAwMzA4IDAzMDE7CiswMzg2OzAzODY7MDM5MSAwMzAxOzAzODY7MDM5MSAwMzAxOworMDM4NzswMEI3OzAwQjc7MDBCNzswMEI3OworMDM4ODswMzg4OzAzOTUgMDMwMTswMzg4OzAzOTUgMDMwMTsKKzAzODk7MDM4OTswMzk3IDAzMDE7MDM4OTswMzk3IDAzMDE7CiswMzhBOzAzOEE7MDM5OSAwMzAxOzAzOEE7MDM5OSAwMzAxOworMDM4QzswMzhDOzAzOUYgMDMwMTswMzhDOzAzOUYgMDMwMTsKKzAzOEU7MDM4RTswM0E1IDAzMDE7MDM4RTswM0E1IDAzMDE7CiswMzhGOzAzOEY7MDNBOSAwMzAxOzAzOEY7MDNBOSAwMzAxOworMDM5MDswMzkwOzAzQjkgMDMwOCAwMzAxOzAzOTA7MDNCOSAwMzA4IDAzMDE7CiswM0FBOzAzQUE7MDM5OSAwMzA4OzAzQUE7MDM5OSAwMzA4OworMDNBQjswM0FCOzAzQTUgMDMwODswM0FCOzAzQTUgMDMwODsKKzAzQUM7MDNBQzswM0IxIDAzMDE7MDNBQzswM0IxIDAzMDE7CiswM0FEOzAzQUQ7MDNCNSAwMzAxOzAzQUQ7MDNCNSAwMzAxOworMDNBRTswM0FFOzAzQjcgMDMwMTswM0FFOzAzQjcgMDMwMTsKKzAzQUY7MDNBRjswM0I5IDAzMDE7MDNBRjswM0I5IDAzMDE7CiswM0IwOzAzQjA7MDNDNSAwMzA4IDAzMDE7MDNCMDswM0M1IDAzMDggMDMwMTsKKzAzQ0E7MDNDQTswM0I5IDAzMDg7MDNDQTswM0I5IDAzMDg7CiswM0NCOzAzQ0I7MDNDNSAwMzA4OzAzQ0I7MDNDNSAwMzA4OworMDNDQzswM0NDOzAzQkYgMDMwMTswM0NDOzAzQkYgMDMwMTsKKzAzQ0Q7MDNDRDswM0M1IDAzMDE7MDNDRDswM0M1IDAzMDE7CiswM0NFOzAzQ0U7MDNDOSAwMzAxOzAzQ0U7MDNDOSAwMzAxOworMDNEMDswM0QwOzAzRDA7MDNCMjswM0IyOworMDNEMTswM0QxOzAzRDE7MDNCODswM0I4OworMDNEMjswM0QyOzAzRDI7MDNBNTswM0E1OworMDNEMzswM0QzOzAzRDIgMDMwMTswMzhFOzAzQTUgMDMwMTsKKzAzRDQ7MDNENDswM0QyIDAzMDg7MDNBQjswM0E1IDAzMDg7CiswM0Q1OzAzRDU7MDNENTswM0M2OzAzQzY7CiswM0Q2OzAzRDY7MDNENjswM0MwOzAzQzA7CiswM0YwOzAzRjA7MDNGMDswM0JBOzAzQkE7CiswM0YxOzAzRjE7MDNGMTswM0MxOzAzQzE7CiswM0YyOzAzRjI7MDNGMjswM0MyOzAzQzI7CiswM0Y0OzAzRjQ7MDNGNDswMzk4OzAzOTg7CiswM0Y1OzAzRjU7MDNGNTswM0I1OzAzQjU7CiswNDAwOzA0MDA7MDQxNSAwMzAwOzA0MDA7MDQxNSAwMzAwOworMDQwMTswNDAxOzA0MTUgMDMwODswNDAxOzA0MTUgMDMwODsKKzA0MDM7MDQwMzswNDEzIDAzMDE7MDQwMzswNDEzIDAzMDE7CiswNDA3OzA0MDc7MDQwNiAwMzA4OzA0MDc7MDQwNiAwMzA4OworMDQwQzswNDBDOzA0MUEgMDMwMTswNDBDOzA0MUEgMDMwMTsKKzA0MEQ7MDQwRDswNDE4IDAzMDA7MDQwRDswNDE4IDAzMDA7CiswNDBFOzA0MEU7MDQyMyAwMzA2OzA0MEU7MDQyMyAwMzA2OworMDQxOTswNDE5OzA0MTggMDMwNjswNDE5OzA0MTggMDMwNjsKKzA0Mzk7MDQzOTswNDM4IDAzMDY7MDQzOTswNDM4IDAzMDY7CiswNDUwOzA0NTA7MDQzNSAwMzAwOzA0NTA7MDQzNSAwMzAwOworMDQ1MTswNDUxOzA0MzUgMDMwODswNDUxOzA0MzUgMDMwODsKKzA0NTM7MDQ1MzswNDMzIDAzMDE7MDQ1MzswNDMzIDAzMDE7CiswNDU3OzA0NTc7MDQ1NiAwMzA4OzA0NTc7MDQ1NiAwMzA4OworMDQ1QzswNDVDOzA0M0EgMDMwMTswNDVDOzA0M0EgMDMwMTsKKzA0NUQ7MDQ1RDswNDM4IDAzMDA7MDQ1RDswNDM4IDAzMDA7CiswNDVFOzA0NUU7MDQ0MyAwMzA2OzA0NUU7MDQ0MyAwMzA2OworMDQ3NjswNDc2OzA0NzQgMDMwRjswNDc2OzA0NzQgMDMwRjsKKzA0Nzc7MDQ3NzswNDc1IDAzMEY7MDQ3NzswNDc1IDAzMEY7CiswNEMxOzA0QzE7MDQxNiAwMzA2OzA0QzE7MDQxNiAwMzA2OworMDRDMjswNEMyOzA0MzYgMDMwNjswNEMyOzA0MzYgMDMwNjsKKzA0RDA7MDREMDswNDEwIDAzMDY7MDREMDswNDEwIDAzMDY7CiswNEQxOzA0RDE7MDQzMCAwMzA2OzA0RDE7MDQzMCAwMzA2OworMDREMjswNEQyOzA0MTAgMDMwODswNEQyOzA0MTAgMDMwODsKKzA0RDM7MDREMzswNDMwIDAzMDg7MDREMzswNDMwIDAzMDg7CiswNEQ2OzA0RDY7MDQxNSAwMzA2OzA0RDY7MDQxNSAwMzA2OworMDRENzswNEQ3OzA0MzUgMDMwNjswNEQ3OzA0MzUgMDMwNjsKKzA0REE7MDREQTswNEQ4IDAzMDg7MDREQTswNEQ4IDAzMDg7CiswNERCOzA0REI7MDREOSAwMzA4OzA0REI7MDREOSAwMzA4OworMDREQzswNERDOzA0MTYgMDMwODswNERDOzA0MTYgMDMwODsKKzA0REQ7MDRERDswNDM2IDAzMDg7MDRERDswNDM2IDAzMDg7CiswNERFOzA0REU7MDQxNyAwMzA4OzA0REU7MDQxNyAwMzA4OworMDRERjswNERGOzA0MzcgMDMwODswNERGOzA0MzcgMDMwODsKKzA0RTI7MDRFMjswNDE4IDAzMDQ7MDRFMjswNDE4IDAzMDQ7CiswNEUzOzA0RTM7MDQzOCAwMzA0OzA0RTM7MDQzOCAwMzA0OworMDRFNDswNEU0OzA0MTggMDMwODswNEU0OzA0MTggMDMwODsKKzA0RTU7MDRFNTswNDM4IDAzMDg7MDRFNTswNDM4IDAzMDg7CiswNEU2OzA0RTY7MDQxRSAwMzA4OzA0RTY7MDQxRSAwMzA4OworMDRFNzswNEU3OzA0M0UgMDMwODswNEU3OzA0M0UgMDMwODsKKzA0RUE7MDRFQTswNEU4IDAzMDg7MDRFQTswNEU4IDAzMDg7CiswNEVCOzA0RUI7MDRFOSAwMzA4OzA0RUI7MDRFOSAwMzA4OworMDRFQzswNEVDOzA0MkQgMDMwODswNEVDOzA0MkQgMDMwODsKKzA0RUQ7MDRFRDswNDREIDAzMDg7MDRFRDswNDREIDAzMDg7CiswNEVFOzA0RUU7MDQyMyAwMzA0OzA0RUU7MDQyMyAwMzA0OworMDRFRjswNEVGOzA0NDMgMDMwNDswNEVGOzA0NDMgMDMwNDsKKzA0RjA7MDRGMDswNDIzIDAzMDg7MDRGMDswNDIzIDAzMDg7CiswNEYxOzA0RjE7MDQ0MyAwMzA4OzA0RjE7MDQ0MyAwMzA4OworMDRGMjswNEYyOzA0MjMgMDMwQjswNEYyOzA0MjMgMDMwQjsKKzA0RjM7MDRGMzswNDQzIDAzMEI7MDRGMzswNDQzIDAzMEI7CiswNEY0OzA0RjQ7MDQyNyAwMzA4OzA0RjQ7MDQyNyAwMzA4OworMDRGNTswNEY1OzA0NDcgMDMwODswNEY1OzA0NDcgMDMwODsKKzA0Rjg7MDRGODswNDJCIDAzMDg7MDRGODswNDJCIDAzMDg7CiswNEY5OzA0Rjk7MDQ0QiAwMzA4OzA0Rjk7MDQ0QiAwMzA4OworMDU4NzswNTg3OzA1ODc7MDU2NSAwNTgyOzA1NjUgMDU4MjsKKzA2MjI7MDYyMjswNjI3IDA2NTM7MDYyMjswNjI3IDA2NTM7CiswNjIzOzA2MjM7MDYyNyAwNjU0OzA2MjM7MDYyNyAwNjU0OworMDYyNDswNjI0OzA2NDggMDY1NDswNjI0OzA2NDggMDY1NDsKKzA2MjU7MDYyNTswNjI3IDA2NTU7MDYyNTswNjI3IDA2NTU7CiswNjI2OzA2MjY7MDY0QSAwNjU0OzA2MjY7MDY0QSAwNjU0OworMDY3NTswNjc1OzA2NzU7MDYyNyAwNjc0OzA2MjcgMDY3NDsKKzA2NzY7MDY3NjswNjc2OzA2NDggMDY3NDswNjQ4IDA2NzQ7CiswNjc3OzA2Nzc7MDY3NzswNkM3IDA2NzQ7MDZDNyAwNjc0OworMDY3ODswNjc4OzA2Nzg7MDY0QSAwNjc0OzA2NEEgMDY3NDsKKzA2QzA7MDZDMDswNkQ1IDA2NTQ7MDZDMDswNkQ1IDA2NTQ7CiswNkMyOzA2QzI7MDZDMSAwNjU0OzA2QzI7MDZDMSAwNjU0OworMDZEMzswNkQzOzA2RDIgMDY1NDswNkQzOzA2RDIgMDY1NDsKKzA5Mjk7MDkyOTswOTI4IDA5M0M7MDkyOTswOTI4IDA5M0M7CiswOTMxOzA5MzE7MDkzMCAwOTNDOzA5MzE7MDkzMCAwOTNDOworMDkzNDswOTM0OzA5MzMgMDkzQzswOTM0OzA5MzMgMDkzQzsKKzA5NTg7MDkxNSAwOTNDOzA5MTUgMDkzQzswOTE1IDA5M0M7MDkxNSAwOTNDOworMDk1OTswOTE2IDA5M0M7MDkxNiAwOTNDOzA5MTYgMDkzQzswOTE2IDA5M0M7CiswOTVBOzA5MTcgMDkzQzswOTE3IDA5M0M7MDkxNyAwOTNDOzA5MTcgMDkzQzsKKzA5NUI7MDkxQyAwOTNDOzA5MUMgMDkzQzswOTFDIDA5M0M7MDkxQyAwOTNDOworMDk1QzswOTIxIDA5M0M7MDkyMSAwOTNDOzA5MjEgMDkzQzswOTIxIDA5M0M7CiswOTVEOzA5MjIgMDkzQzswOTIyIDA5M0M7MDkyMiAwOTNDOzA5MjIgMDkzQzsKKzA5NUU7MDkyQiAwOTNDOzA5MkIgMDkzQzswOTJCIDA5M0M7MDkyQiAwOTNDOworMDk1RjswOTJGIDA5M0M7MDkyRiAwOTNDOzA5MkYgMDkzQzswOTJGIDA5M0M7CiswOUNCOzA5Q0I7MDlDNyAwOUJFOzA5Q0I7MDlDNyAwOUJFOworMDlDQzswOUNDOzA5QzcgMDlENzswOUNDOzA5QzcgMDlENzsKKzA5REM7MDlBMSAwOUJDOzA5QTEgMDlCQzswOUExIDA5QkM7MDlBMSAwOUJDOworMDlERDswOUEyIDA5QkM7MDlBMiAwOUJDOzA5QTIgMDlCQzswOUEyIDA5QkM7CiswOURGOzA5QUYgMDlCQzswOUFGIDA5QkM7MDlBRiAwOUJDOzA5QUYgMDlCQzsKKzBBMzM7MEEzMiAwQTNDOzBBMzIgMEEzQzswQTMyIDBBM0M7MEEzMiAwQTNDOworMEEzNjswQTM4IDBBM0M7MEEzOCAwQTNDOzBBMzggMEEzQzswQTM4IDBBM0M7CiswQTU5OzBBMTYgMEEzQzswQTE2IDBBM0M7MEExNiAwQTNDOzBBMTYgMEEzQzsKKzBBNUE7MEExNyAwQTNDOzBBMTcgMEEzQzswQTE3IDBBM0M7MEExNyAwQTNDOworMEE1QjswQTFDIDBBM0M7MEExQyAwQTNDOzBBMUMgMEEzQzswQTFDIDBBM0M7CiswQTVFOzBBMkIgMEEzQzswQTJCIDBBM0M7MEEyQiAwQTNDOzBBMkIgMEEzQzsKKzBCNDg7MEI0ODswQjQ3IDBCNTY7MEI0ODswQjQ3IDBCNTY7CiswQjRCOzBCNEI7MEI0NyAwQjNFOzBCNEI7MEI0NyAwQjNFOworMEI0QzswQjRDOzBCNDcgMEI1NzswQjRDOzBCNDcgMEI1NzsKKzBCNUM7MEIyMSAwQjNDOzBCMjEgMEIzQzswQjIxIDBCM0M7MEIyMSAwQjNDOworMEI1RDswQjIyIDBCM0M7MEIyMiAwQjNDOzBCMjIgMEIzQzswQjIyIDBCM0M7CiswQjk0OzBCOTQ7MEI5MiAwQkQ3OzBCOTQ7MEI5MiAwQkQ3OworMEJDQTswQkNBOzBCQzYgMEJCRTswQkNBOzBCQzYgMEJCRTsKKzBCQ0I7MEJDQjswQkM3IDBCQkU7MEJDQjswQkM3IDBCQkU7CiswQkNDOzBCQ0M7MEJDNiAwQkQ3OzBCQ0M7MEJDNiAwQkQ3OworMEM0ODswQzQ4OzBDNDYgMEM1NjswQzQ4OzBDNDYgMEM1NjsKKzBDQzA7MENDMDswQ0JGIDBDRDU7MENDMDswQ0JGIDBDRDU7CiswQ0M3OzBDQzc7MENDNiAwQ0Q1OzBDQzc7MENDNiAwQ0Q1OworMENDODswQ0M4OzBDQzYgMENENjswQ0M4OzBDQzYgMENENjsKKzBDQ0E7MENDQTswQ0M2IDBDQzI7MENDQTswQ0M2IDBDQzI7CiswQ0NCOzBDQ0I7MENDNiAwQ0MyIDBDRDU7MENDQjswQ0M2IDBDQzIgMENENTsKKzBENEE7MEQ0QTswRDQ2IDBEM0U7MEQ0QTswRDQ2IDBEM0U7CiswRDRCOzBENEI7MEQ0NyAwRDNFOzBENEI7MEQ0NyAwRDNFOworMEQ0QzswRDRDOzBENDYgMEQ1NzswRDRDOzBENDYgMEQ1NzsKKzBEREE7MEREQTswREQ5IDBEQ0E7MEREQTswREQ5IDBEQ0E7CiswRERDOzBEREM7MEREOSAwRENGOzBEREM7MEREOSAwRENGOworMERERDswREREOzBERDkgMERDRiAwRENBOzBEREQ7MEREOSAwRENGIDBEQ0E7CiswRERFOzBEREU7MEREOSAwRERGOzBEREU7MEREOSAwRERGOworMEUzMzswRTMzOzBFMzM7MEU0RCAwRTMyOzBFNEQgMEUzMjsKKzBFQjM7MEVCMzswRUIzOzBFQ0QgMEVCMjswRUNEIDBFQjI7CiswRURDOzBFREM7MEVEQzswRUFCIDBFOTk7MEVBQiAwRTk5OworMEVERDswRUREOzBFREQ7MEVBQiAwRUExOzBFQUIgMEVBMTsKKzBGMEM7MEYwQzswRjBDOzBGMEI7MEYwQjsKKzBGNDM7MEY0MiAwRkI3OzBGNDIgMEZCNzswRjQyIDBGQjc7MEY0MiAwRkI3OworMEY0RDswRjRDIDBGQjc7MEY0QyAwRkI3OzBGNEMgMEZCNzswRjRDIDBGQjc7CiswRjUyOzBGNTEgMEZCNzswRjUxIDBGQjc7MEY1MSAwRkI3OzBGNTEgMEZCNzsKKzBGNTc7MEY1NiAwRkI3OzBGNTYgMEZCNzswRjU2IDBGQjc7MEY1NiAwRkI3OworMEY1QzswRjVCIDBGQjc7MEY1QiAwRkI3OzBGNUIgMEZCNzswRjVCIDBGQjc7CiswRjY5OzBGNDAgMEZCNTswRjQwIDBGQjU7MEY0MCAwRkI1OzBGNDAgMEZCNTsKKzBGNzM7MEY3MSAwRjcyOzBGNzEgMEY3MjswRjcxIDBGNzI7MEY3MSAwRjcyOworMEY3NTswRjcxIDBGNzQ7MEY3MSAwRjc0OzBGNzEgMEY3NDswRjcxIDBGNzQ7CiswRjc2OzBGQjIgMEY4MDswRkIyIDBGODA7MEZCMiAwRjgwOzBGQjIgMEY4MDsKKzBGNzc7MEY3NzswRjc3OzBGQjIgMEY3MSAwRjgwOzBGQjIgMEY3MSAwRjgwOworMEY3ODswRkIzIDBGODA7MEZCMyAwRjgwOzBGQjMgMEY4MDswRkIzIDBGODA7CiswRjc5OzBGNzk7MEY3OTswRkIzIDBGNzEgMEY4MDswRkIzIDBGNzEgMEY4MDsKKzBGODE7MEY3MSAwRjgwOzBGNzEgMEY4MDswRjcxIDBGODA7MEY3MSAwRjgwOworMEY5MzswRjkyIDBGQjc7MEY5MiAwRkI3OzBGOTIgMEZCNzswRjkyIDBGQjc7CiswRjlEOzBGOUMgMEZCNzswRjlDIDBGQjc7MEY5QyAwRkI3OzBGOUMgMEZCNzsKKzBGQTI7MEZBMSAwRkI3OzBGQTEgMEZCNzswRkExIDBGQjc7MEZBMSAwRkI3OworMEZBNzswRkE2IDBGQjc7MEZBNiAwRkI3OzBGQTYgMEZCNzswRkE2IDBGQjc7CiswRkFDOzBGQUIgMEZCNzswRkFCIDBGQjc7MEZBQiAwRkI3OzBGQUIgMEZCNzsKKzBGQjk7MEY5MCAwRkI1OzBGOTAgMEZCNTswRjkwIDBGQjU7MEY5MCAwRkI1OworMTAyNjsxMDI2OzEwMjUgMTAyRTsxMDI2OzEwMjUgMTAyRTsKKzFFMDA7MUUwMDswMDQxIDAzMjU7MUUwMDswMDQxIDAzMjU7CisxRTAxOzFFMDE7MDA2MSAwMzI1OzFFMDE7MDA2MSAwMzI1OworMUUwMjsxRTAyOzAwNDIgMDMwNzsxRTAyOzAwNDIgMDMwNzsKKzFFMDM7MUUwMzswMDYyIDAzMDc7MUUwMzswMDYyIDAzMDc7CisxRTA0OzFFMDQ7MDA0MiAwMzIzOzFFMDQ7MDA0MiAwMzIzOworMUUwNTsxRTA1OzAwNjIgMDMyMzsxRTA1OzAwNjIgMDMyMzsKKzFFMDY7MUUwNjswMDQyIDAzMzE7MUUwNjswMDQyIDAzMzE7CisxRTA3OzFFMDc7MDA2MiAwMzMxOzFFMDc7MDA2MiAwMzMxOworMUUwODsxRTA4OzAwNDMgMDMyNyAwMzAxOzFFMDg7MDA0MyAwMzI3IDAzMDE7CisxRTA5OzFFMDk7MDA2MyAwMzI3IDAzMDE7MUUwOTswMDYzIDAzMjcgMDMwMTsKKzFFMEE7MUUwQTswMDQ0IDAzMDc7MUUwQTswMDQ0IDAzMDc7CisxRTBCOzFFMEI7MDA2NCAwMzA3OzFFMEI7MDA2NCAwMzA3OworMUUwQzsxRTBDOzAwNDQgMDMyMzsxRTBDOzAwNDQgMDMyMzsKKzFFMEQ7MUUwRDswMDY0IDAzMjM7MUUwRDswMDY0IDAzMjM7CisxRTBFOzFFMEU7MDA0NCAwMzMxOzFFMEU7MDA0NCAwMzMxOworMUUwRjsxRTBGOzAwNjQgMDMzMTsxRTBGOzAwNjQgMDMzMTsKKzFFMTA7MUUxMDswMDQ0IDAzMjc7MUUxMDswMDQ0IDAzMjc7CisxRTExOzFFMTE7MDA2NCAwMzI3OzFFMTE7MDA2NCAwMzI3OworMUUxMjsxRTEyOzAwNDQgMDMyRDsxRTEyOzAwNDQgMDMyRDsKKzFFMTM7MUUxMzswMDY0IDAzMkQ7MUUxMzswMDY0IDAzMkQ7CisxRTE0OzFFMTQ7MDA0NSAwMzA0IDAzMDA7MUUxNDswMDQ1IDAzMDQgMDMwMDsKKzFFMTU7MUUxNTswMDY1IDAzMDQgMDMwMDsxRTE1OzAwNjUgMDMwNCAwMzAwOworMUUxNjsxRTE2OzAwNDUgMDMwNCAwMzAxOzFFMTY7MDA0NSAwMzA0IDAzMDE7CisxRTE3OzFFMTc7MDA2NSAwMzA0IDAzMDE7MUUxNzswMDY1IDAzMDQgMDMwMTsKKzFFMTg7MUUxODswMDQ1IDAzMkQ7MUUxODswMDQ1IDAzMkQ7CisxRTE5OzFFMTk7MDA2NSAwMzJEOzFFMTk7MDA2NSAwMzJEOworMUUxQTsxRTFBOzAwNDUgMDMzMDsxRTFBOzAwNDUgMDMzMDsKKzFFMUI7MUUxQjswMDY1IDAzMzA7MUUxQjswMDY1IDAzMzA7CisxRTFDOzFFMUM7MDA0NSAwMzI3IDAzMDY7MUUxQzswMDQ1IDAzMjcgMDMwNjsKKzFFMUQ7MUUxRDswMDY1IDAzMjcgMDMwNjsxRTFEOzAwNjUgMDMyNyAwMzA2OworMUUxRTsxRTFFOzAwNDYgMDMwNzsxRTFFOzAwNDYgMDMwNzsKKzFFMUY7MUUxRjswMDY2IDAzMDc7MUUxRjswMDY2IDAzMDc7CisxRTIwOzFFMjA7MDA0NyAwMzA0OzFFMjA7MDA0NyAwMzA0OworMUUyMTsxRTIxOzAwNjcgMDMwNDsxRTIxOzAwNjcgMDMwNDsKKzFFMjI7MUUyMjswMDQ4IDAzMDc7MUUyMjswMDQ4IDAzMDc7CisxRTIzOzFFMjM7MDA2OCAwMzA3OzFFMjM7MDA2OCAwMzA3OworMUUyNDsxRTI0OzAwNDggMDMyMzsxRTI0OzAwNDggMDMyMzsKKzFFMjU7MUUyNTswMDY4IDAzMjM7MUUyNTswMDY4IDAzMjM7CisxRTI2OzFFMjY7MDA0OCAwMzA4OzFFMjY7MDA0OCAwMzA4OworMUUyNzsxRTI3OzAwNjggMDMwODsxRTI3OzAwNjggMDMwODsKKzFFMjg7MUUyODswMDQ4IDAzMjc7MUUyODswMDQ4IDAzMjc7CisxRTI5OzFFMjk7MDA2OCAwMzI3OzFFMjk7MDA2OCAwMzI3OworMUUyQTsxRTJBOzAwNDggMDMyRTsxRTJBOzAwNDggMDMyRTsKKzFFMkI7MUUyQjswMDY4IDAzMkU7MUUyQjswMDY4IDAzMkU7CisxRTJDOzFFMkM7MDA0OSAwMzMwOzFFMkM7MDA0OSAwMzMwOworMUUyRDsxRTJEOzAwNjkgMDMzMDsxRTJEOzAwNjkgMDMzMDsKKzFFMkU7MUUyRTswMDQ5IDAzMDggMDMwMTsxRTJFOzAwNDkgMDMwOCAwMzAxOworMUUyRjsxRTJGOzAwNjkgMDMwOCAwMzAxOzFFMkY7MDA2OSAwMzA4IDAzMDE7CisxRTMwOzFFMzA7MDA0QiAwMzAxOzFFMzA7MDA0QiAwMzAxOworMUUzMTsxRTMxOzAwNkIgMDMwMTsxRTMxOzAwNkIgMDMwMTsKKzFFMzI7MUUzMjswMDRCIDAzMjM7MUUzMjswMDRCIDAzMjM7CisxRTMzOzFFMzM7MDA2QiAwMzIzOzFFMzM7MDA2QiAwMzIzOworMUUzNDsxRTM0OzAwNEIgMDMzMTsxRTM0OzAwNEIgMDMzMTsKKzFFMzU7MUUzNTswMDZCIDAzMzE7MUUzNTswMDZCIDAzMzE7CisxRTM2OzFFMzY7MDA0QyAwMzIzOzFFMzY7MDA0QyAwMzIzOworMUUzNzsxRTM3OzAwNkMgMDMyMzsxRTM3OzAwNkMgMDMyMzsKKzFFMzg7MUUzODswMDRDIDAzMjMgMDMwNDsxRTM4OzAwNEMgMDMyMyAwMzA0OworMUUzOTsxRTM5OzAwNkMgMDMyMyAwMzA0OzFFMzk7MDA2QyAwMzIzIDAzMDQ7CisxRTNBOzFFM0E7MDA0QyAwMzMxOzFFM0E7MDA0QyAwMzMxOworMUUzQjsxRTNCOzAwNkMgMDMzMTsxRTNCOzAwNkMgMDMzMTsKKzFFM0M7MUUzQzswMDRDIDAzMkQ7MUUzQzswMDRDIDAzMkQ7CisxRTNEOzFFM0Q7MDA2QyAwMzJEOzFFM0Q7MDA2QyAwMzJEOworMUUzRTsxRTNFOzAwNEQgMDMwMTsxRTNFOzAwNEQgMDMwMTsKKzFFM0Y7MUUzRjswMDZEIDAzMDE7MUUzRjswMDZEIDAzMDE7CisxRTQwOzFFNDA7MDA0RCAwMzA3OzFFNDA7MDA0RCAwMzA3OworMUU0MTsxRTQxOzAwNkQgMDMwNzsxRTQxOzAwNkQgMDMwNzsKKzFFNDI7MUU0MjswMDREIDAzMjM7MUU0MjswMDREIDAzMjM7CisxRTQzOzFFNDM7MDA2RCAwMzIzOzFFNDM7MDA2RCAwMzIzOworMUU0NDsxRTQ0OzAwNEUgMDMwNzsxRTQ0OzAwNEUgMDMwNzsKKzFFNDU7MUU0NTswMDZFIDAzMDc7MUU0NTswMDZFIDAzMDc7CisxRTQ2OzFFNDY7MDA0RSAwMzIzOzFFNDY7MDA0RSAwMzIzOworMUU0NzsxRTQ3OzAwNkUgMDMyMzsxRTQ3OzAwNkUgMDMyMzsKKzFFNDg7MUU0ODswMDRFIDAzMzE7MUU0ODswMDRFIDAzMzE7CisxRTQ5OzFFNDk7MDA2RSAwMzMxOzFFNDk7MDA2RSAwMzMxOworMUU0QTsxRTRBOzAwNEUgMDMyRDsxRTRBOzAwNEUgMDMyRDsKKzFFNEI7MUU0QjswMDZFIDAzMkQ7MUU0QjswMDZFIDAzMkQ7CisxRTRDOzFFNEM7MDA0RiAwMzAzIDAzMDE7MUU0QzswMDRGIDAzMDMgMDMwMTsKKzFFNEQ7MUU0RDswMDZGIDAzMDMgMDMwMTsxRTREOzAwNkYgMDMwMyAwMzAxOworMUU0RTsxRTRFOzAwNEYgMDMwMyAwMzA4OzFFNEU7MDA0RiAwMzAzIDAzMDg7CisxRTRGOzFFNEY7MDA2RiAwMzAzIDAzMDg7MUU0RjswMDZGIDAzMDMgMDMwODsKKzFFNTA7MUU1MDswMDRGIDAzMDQgMDMwMDsxRTUwOzAwNEYgMDMwNCAwMzAwOworMUU1MTsxRTUxOzAwNkYgMDMwNCAwMzAwOzFFNTE7MDA2RiAwMzA0IDAzMDA7CisxRTUyOzFFNTI7MDA0RiAwMzA0IDAzMDE7MUU1MjswMDRGIDAzMDQgMDMwMTsKKzFFNTM7MUU1MzswMDZGIDAzMDQgMDMwMTsxRTUzOzAwNkYgMDMwNCAwMzAxOworMUU1NDsxRTU0OzAwNTAgMDMwMTsxRTU0OzAwNTAgMDMwMTsKKzFFNTU7MUU1NTswMDcwIDAzMDE7MUU1NTswMDcwIDAzMDE7CisxRTU2OzFFNTY7MDA1MCAwMzA3OzFFNTY7MDA1MCAwMzA3OworMUU1NzsxRTU3OzAwNzAgMDMwNzsxRTU3OzAwNzAgMDMwNzsKKzFFNTg7MUU1ODswMDUyIDAzMDc7MUU1ODswMDUyIDAzMDc7CisxRTU5OzFFNTk7MDA3MiAwMzA3OzFFNTk7MDA3MiAwMzA3OworMUU1QTsxRTVBOzAwNTIgMDMyMzsxRTVBOzAwNTIgMDMyMzsKKzFFNUI7MUU1QjswMDcyIDAzMjM7MUU1QjswMDcyIDAzMjM7CisxRTVDOzFFNUM7MDA1MiAwMzIzIDAzMDQ7MUU1QzswMDUyIDAzMjMgMDMwNDsKKzFFNUQ7MUU1RDswMDcyIDAzMjMgMDMwNDsxRTVEOzAwNzIgMDMyMyAwMzA0OworMUU1RTsxRTVFOzAwNTIgMDMzMTsxRTVFOzAwNTIgMDMzMTsKKzFFNUY7MUU1RjswMDcyIDAzMzE7MUU1RjswMDcyIDAzMzE7CisxRTYwOzFFNjA7MDA1MyAwMzA3OzFFNjA7MDA1MyAwMzA3OworMUU2MTsxRTYxOzAwNzMgMDMwNzsxRTYxOzAwNzMgMDMwNzsKKzFFNjI7MUU2MjswMDUzIDAzMjM7MUU2MjswMDUzIDAzMjM7CisxRTYzOzFFNjM7MDA3MyAwMzIzOzFFNjM7MDA3MyAwMzIzOworMUU2NDsxRTY0OzAwNTMgMDMwMSAwMzA3OzFFNjQ7MDA1MyAwMzAxIDAzMDc7CisxRTY1OzFFNjU7MDA3MyAwMzAxIDAzMDc7MUU2NTswMDczIDAzMDEgMDMwNzsKKzFFNjY7MUU2NjswMDUzIDAzMEMgMDMwNzsxRTY2OzAwNTMgMDMwQyAwMzA3OworMUU2NzsxRTY3OzAwNzMgMDMwQyAwMzA3OzFFNjc7MDA3MyAwMzBDIDAzMDc7CisxRTY4OzFFNjg7MDA1MyAwMzIzIDAzMDc7MUU2ODswMDUzIDAzMjMgMDMwNzsKKzFFNjk7MUU2OTswMDczIDAzMjMgMDMwNzsxRTY5OzAwNzMgMDMyMyAwMzA3OworMUU2QTsxRTZBOzAwNTQgMDMwNzsxRTZBOzAwNTQgMDMwNzsKKzFFNkI7MUU2QjswMDc0IDAzMDc7MUU2QjswMDc0IDAzMDc7CisxRTZDOzFFNkM7MDA1NCAwMzIzOzFFNkM7MDA1NCAwMzIzOworMUU2RDsxRTZEOzAwNzQgMDMyMzsxRTZEOzAwNzQgMDMyMzsKKzFFNkU7MUU2RTswMDU0IDAzMzE7MUU2RTswMDU0IDAzMzE7CisxRTZGOzFFNkY7MDA3NCAwMzMxOzFFNkY7MDA3NCAwMzMxOworMUU3MDsxRTcwOzAwNTQgMDMyRDsxRTcwOzAwNTQgMDMyRDsKKzFFNzE7MUU3MTswMDc0IDAzMkQ7MUU3MTswMDc0IDAzMkQ7CisxRTcyOzFFNzI7MDA1NSAwMzI0OzFFNzI7MDA1NSAwMzI0OworMUU3MzsxRTczOzAwNzUgMDMyNDsxRTczOzAwNzUgMDMyNDsKKzFFNzQ7MUU3NDswMDU1IDAzMzA7MUU3NDswMDU1IDAzMzA7CisxRTc1OzFFNzU7MDA3NSAwMzMwOzFFNzU7MDA3NSAwMzMwOworMUU3NjsxRTc2OzAwNTUgMDMyRDsxRTc2OzAwNTUgMDMyRDsKKzFFNzc7MUU3NzswMDc1IDAzMkQ7MUU3NzswMDc1IDAzMkQ7CisxRTc4OzFFNzg7MDA1NSAwMzAzIDAzMDE7MUU3ODswMDU1IDAzMDMgMDMwMTsKKzFFNzk7MUU3OTswMDc1IDAzMDMgMDMwMTsxRTc5OzAwNzUgMDMwMyAwMzAxOworMUU3QTsxRTdBOzAwNTUgMDMwNCAwMzA4OzFFN0E7MDA1NSAwMzA0IDAzMDg7CisxRTdCOzFFN0I7MDA3NSAwMzA0IDAzMDg7MUU3QjswMDc1IDAzMDQgMDMwODsKKzFFN0M7MUU3QzswMDU2IDAzMDM7MUU3QzswMDU2IDAzMDM7CisxRTdEOzFFN0Q7MDA3NiAwMzAzOzFFN0Q7MDA3NiAwMzAzOworMUU3RTsxRTdFOzAwNTYgMDMyMzsxRTdFOzAwNTYgMDMyMzsKKzFFN0Y7MUU3RjswMDc2IDAzMjM7MUU3RjswMDc2IDAzMjM7CisxRTgwOzFFODA7MDA1NyAwMzAwOzFFODA7MDA1NyAwMzAwOworMUU4MTsxRTgxOzAwNzcgMDMwMDsxRTgxOzAwNzcgMDMwMDsKKzFFODI7MUU4MjswMDU3IDAzMDE7MUU4MjswMDU3IDAzMDE7CisxRTgzOzFFODM7MDA3NyAwMzAxOzFFODM7MDA3NyAwMzAxOworMUU4NDsxRTg0OzAwNTcgMDMwODsxRTg0OzAwNTcgMDMwODsKKzFFODU7MUU4NTswMDc3IDAzMDg7MUU4NTswMDc3IDAzMDg7CisxRTg2OzFFODY7MDA1NyAwMzA3OzFFODY7MDA1NyAwMzA3OworMUU4NzsxRTg3OzAwNzcgMDMwNzsxRTg3OzAwNzcgMDMwNzsKKzFFODg7MUU4ODswMDU3IDAzMjM7MUU4ODswMDU3IDAzMjM7CisxRTg5OzFFODk7MDA3NyAwMzIzOzFFODk7MDA3NyAwMzIzOworMUU4QTsxRThBOzAwNTggMDMwNzsxRThBOzAwNTggMDMwNzsKKzFFOEI7MUU4QjswMDc4IDAzMDc7MUU4QjswMDc4IDAzMDc7CisxRThDOzFFOEM7MDA1OCAwMzA4OzFFOEM7MDA1OCAwMzA4OworMUU4RDsxRThEOzAwNzggMDMwODsxRThEOzAwNzggMDMwODsKKzFFOEU7MUU4RTswMDU5IDAzMDc7MUU4RTswMDU5IDAzMDc7CisxRThGOzFFOEY7MDA3OSAwMzA3OzFFOEY7MDA3OSAwMzA3OworMUU5MDsxRTkwOzAwNUEgMDMwMjsxRTkwOzAwNUEgMDMwMjsKKzFFOTE7MUU5MTswMDdBIDAzMDI7MUU5MTswMDdBIDAzMDI7CisxRTkyOzFFOTI7MDA1QSAwMzIzOzFFOTI7MDA1QSAwMzIzOworMUU5MzsxRTkzOzAwN0EgMDMyMzsxRTkzOzAwN0EgMDMyMzsKKzFFOTQ7MUU5NDswMDVBIDAzMzE7MUU5NDswMDVBIDAzMzE7CisxRTk1OzFFOTU7MDA3QSAwMzMxOzFFOTU7MDA3QSAwMzMxOworMUU5NjsxRTk2OzAwNjggMDMzMTsxRTk2OzAwNjggMDMzMTsKKzFFOTc7MUU5NzswMDc0IDAzMDg7MUU5NzswMDc0IDAzMDg7CisxRTk4OzFFOTg7MDA3NyAwMzBBOzFFOTg7MDA3NyAwMzBBOworMUU5OTsxRTk5OzAwNzkgMDMwQTsxRTk5OzAwNzkgMDMwQTsKKzFFOUE7MUU5QTsxRTlBOzAwNjEgMDJCRTswMDYxIDAyQkU7CisxRTlCOzFFOUI7MDE3RiAwMzA3OzFFNjE7MDA3MyAwMzA3OworMUVBMDsxRUEwOzAwNDEgMDMyMzsxRUEwOzAwNDEgMDMyMzsKKzFFQTE7MUVBMTswMDYxIDAzMjM7MUVBMTswMDYxIDAzMjM7CisxRUEyOzFFQTI7MDA0MSAwMzA5OzFFQTI7MDA0MSAwMzA5OworMUVBMzsxRUEzOzAwNjEgMDMwOTsxRUEzOzAwNjEgMDMwOTsKKzFFQTQ7MUVBNDswMDQxIDAzMDIgMDMwMTsxRUE0OzAwNDEgMDMwMiAwMzAxOworMUVBNTsxRUE1OzAwNjEgMDMwMiAwMzAxOzFFQTU7MDA2MSAwMzAyIDAzMDE7CisxRUE2OzFFQTY7MDA0MSAwMzAyIDAzMDA7MUVBNjswMDQxIDAzMDIgMDMwMDsKKzFFQTc7MUVBNzswMDYxIDAzMDIgMDMwMDsxRUE3OzAwNjEgMDMwMiAwMzAwOworMUVBODsxRUE4OzAwNDEgMDMwMiAwMzA5OzFFQTg7MDA0MSAwMzAyIDAzMDk7CisxRUE5OzFFQTk7MDA2MSAwMzAyIDAzMDk7MUVBOTswMDYxIDAzMDIgMDMwOTsKKzFFQUE7MUVBQTswMDQxIDAzMDIgMDMwMzsxRUFBOzAwNDEgMDMwMiAwMzAzOworMUVBQjsxRUFCOzAwNjEgMDMwMiAwMzAzOzFFQUI7MDA2MSAwMzAyIDAzMDM7CisxRUFDOzFFQUM7MDA0MSAwMzIzIDAzMDI7MUVBQzswMDQxIDAzMjMgMDMwMjsKKzFFQUQ7MUVBRDswMDYxIDAzMjMgMDMwMjsxRUFEOzAwNjEgMDMyMyAwMzAyOworMUVBRTsxRUFFOzAwNDEgMDMwNiAwMzAxOzFFQUU7MDA0MSAwMzA2IDAzMDE7CisxRUFGOzFFQUY7MDA2MSAwMzA2IDAzMDE7MUVBRjswMDYxIDAzMDYgMDMwMTsKKzFFQjA7MUVCMDswMDQxIDAzMDYgMDMwMDsxRUIwOzAwNDEgMDMwNiAwMzAwOworMUVCMTsxRUIxOzAwNjEgMDMwNiAwMzAwOzFFQjE7MDA2MSAwMzA2IDAzMDA7CisxRUIyOzFFQjI7MDA0MSAwMzA2IDAzMDk7MUVCMjswMDQxIDAzMDYgMDMwOTsKKzFFQjM7MUVCMzswMDYxIDAzMDYgMDMwOTsxRUIzOzAwNjEgMDMwNiAwMzA5OworMUVCNDsxRUI0OzAwNDEgMDMwNiAwMzAzOzFFQjQ7MDA0MSAwMzA2IDAzMDM7CisxRUI1OzFFQjU7MDA2MSAwMzA2IDAzMDM7MUVCNTswMDYxIDAzMDYgMDMwMzsKKzFFQjY7MUVCNjswMDQxIDAzMjMgMDMwNjsxRUI2OzAwNDEgMDMyMyAwMzA2OworMUVCNzsxRUI3OzAwNjEgMDMyMyAwMzA2OzFFQjc7MDA2MSAwMzIzIDAzMDY7CisxRUI4OzFFQjg7MDA0NSAwMzIzOzFFQjg7MDA0NSAwMzIzOworMUVCOTsxRUI5OzAwNjUgMDMyMzsxRUI5OzAwNjUgMDMyMzsKKzFFQkE7MUVCQTswMDQ1IDAzMDk7MUVCQTswMDQ1IDAzMDk7CisxRUJCOzFFQkI7MDA2NSAwMzA5OzFFQkI7MDA2NSAwMzA5OworMUVCQzsxRUJDOzAwNDUgMDMwMzsxRUJDOzAwNDUgMDMwMzsKKzFFQkQ7MUVCRDswMDY1IDAzMDM7MUVCRDswMDY1IDAzMDM7CisxRUJFOzFFQkU7MDA0NSAwMzAyIDAzMDE7MUVCRTswMDQ1IDAzMDIgMDMwMTsKKzFFQkY7MUVCRjswMDY1IDAzMDIgMDMwMTsxRUJGOzAwNjUgMDMwMiAwMzAxOworMUVDMDsxRUMwOzAwNDUgMDMwMiAwMzAwOzFFQzA7MDA0NSAwMzAyIDAzMDA7CisxRUMxOzFFQzE7MDA2NSAwMzAyIDAzMDA7MUVDMTswMDY1IDAzMDIgMDMwMDsKKzFFQzI7MUVDMjswMDQ1IDAzMDIgMDMwOTsxRUMyOzAwNDUgMDMwMiAwMzA5OworMUVDMzsxRUMzOzAwNjUgMDMwMiAwMzA5OzFFQzM7MDA2NSAwMzAyIDAzMDk7CisxRUM0OzFFQzQ7MDA0NSAwMzAyIDAzMDM7MUVDNDswMDQ1IDAzMDIgMDMwMzsKKzFFQzU7MUVDNTswMDY1IDAzMDIgMDMwMzsxRUM1OzAwNjUgMDMwMiAwMzAzOworMUVDNjsxRUM2OzAwNDUgMDMyMyAwMzAyOzFFQzY7MDA0NSAwMzIzIDAzMDI7CisxRUM3OzFFQzc7MDA2NSAwMzIzIDAzMDI7MUVDNzswMDY1IDAzMjMgMDMwMjsKKzFFQzg7MUVDODswMDQ5IDAzMDk7MUVDODswMDQ5IDAzMDk7CisxRUM5OzFFQzk7MDA2OSAwMzA5OzFFQzk7MDA2OSAwMzA5OworMUVDQTsxRUNBOzAwNDkgMDMyMzsxRUNBOzAwNDkgMDMyMzsKKzFFQ0I7MUVDQjswMDY5IDAzMjM7MUVDQjswMDY5IDAzMjM7CisxRUNDOzFFQ0M7MDA0RiAwMzIzOzFFQ0M7MDA0RiAwMzIzOworMUVDRDsxRUNEOzAwNkYgMDMyMzsxRUNEOzAwNkYgMDMyMzsKKzFFQ0U7MUVDRTswMDRGIDAzMDk7MUVDRTswMDRGIDAzMDk7CisxRUNGOzFFQ0Y7MDA2RiAwMzA5OzFFQ0Y7MDA2RiAwMzA5OworMUVEMDsxRUQwOzAwNEYgMDMwMiAwMzAxOzFFRDA7MDA0RiAwMzAyIDAzMDE7CisxRUQxOzFFRDE7MDA2RiAwMzAyIDAzMDE7MUVEMTswMDZGIDAzMDIgMDMwMTsKKzFFRDI7MUVEMjswMDRGIDAzMDIgMDMwMDsxRUQyOzAwNEYgMDMwMiAwMzAwOworMUVEMzsxRUQzOzAwNkYgMDMwMiAwMzAwOzFFRDM7MDA2RiAwMzAyIDAzMDA7CisxRUQ0OzFFRDQ7MDA0RiAwMzAyIDAzMDk7MUVENDswMDRGIDAzMDIgMDMwOTsKKzFFRDU7MUVENTswMDZGIDAzMDIgMDMwOTsxRUQ1OzAwNkYgMDMwMiAwMzA5OworMUVENjsxRUQ2OzAwNEYgMDMwMiAwMzAzOzFFRDY7MDA0RiAwMzAyIDAzMDM7CisxRUQ3OzFFRDc7MDA2RiAwMzAyIDAzMDM7MUVENzswMDZGIDAzMDIgMDMwMzsKKzFFRDg7MUVEODswMDRGIDAzMjMgMDMwMjsxRUQ4OzAwNEYgMDMyMyAwMzAyOworMUVEOTsxRUQ5OzAwNkYgMDMyMyAwMzAyOzFFRDk7MDA2RiAwMzIzIDAzMDI7CisxRURBOzFFREE7MDA0RiAwMzFCIDAzMDE7MUVEQTswMDRGIDAzMUIgMDMwMTsKKzFFREI7MUVEQjswMDZGIDAzMUIgMDMwMTsxRURCOzAwNkYgMDMxQiAwMzAxOworMUVEQzsxRURDOzAwNEYgMDMxQiAwMzAwOzFFREM7MDA0RiAwMzFCIDAzMDA7CisxRUREOzFFREQ7MDA2RiAwMzFCIDAzMDA7MUVERDswMDZGIDAzMUIgMDMwMDsKKzFFREU7MUVERTswMDRGIDAzMUIgMDMwOTsxRURFOzAwNEYgMDMxQiAwMzA5OworMUVERjsxRURGOzAwNkYgMDMxQiAwMzA5OzFFREY7MDA2RiAwMzFCIDAzMDk7CisxRUUwOzFFRTA7MDA0RiAwMzFCIDAzMDM7MUVFMDswMDRGIDAzMUIgMDMwMzsKKzFFRTE7MUVFMTswMDZGIDAzMUIgMDMwMzsxRUUxOzAwNkYgMDMxQiAwMzAzOworMUVFMjsxRUUyOzAwNEYgMDMxQiAwMzIzOzFFRTI7MDA0RiAwMzFCIDAzMjM7CisxRUUzOzFFRTM7MDA2RiAwMzFCIDAzMjM7MUVFMzswMDZGIDAzMUIgMDMyMzsKKzFFRTQ7MUVFNDswMDU1IDAzMjM7MUVFNDswMDU1IDAzMjM7CisxRUU1OzFFRTU7MDA3NSAwMzIzOzFFRTU7MDA3NSAwMzIzOworMUVFNjsxRUU2OzAwNTUgMDMwOTsxRUU2OzAwNTUgMDMwOTsKKzFFRTc7MUVFNzswMDc1IDAzMDk7MUVFNzswMDc1IDAzMDk7CisxRUU4OzFFRTg7MDA1NSAwMzFCIDAzMDE7MUVFODswMDU1IDAzMUIgMDMwMTsKKzFFRTk7MUVFOTswMDc1IDAzMUIgMDMwMTsxRUU5OzAwNzUgMDMxQiAwMzAxOworMUVFQTsxRUVBOzAwNTUgMDMxQiAwMzAwOzFFRUE7MDA1NSAwMzFCIDAzMDA7CisxRUVCOzFFRUI7MDA3NSAwMzFCIDAzMDA7MUVFQjswMDc1IDAzMUIgMDMwMDsKKzFFRUM7MUVFQzswMDU1IDAzMUIgMDMwOTsxRUVDOzAwNTUgMDMxQiAwMzA5OworMUVFRDsxRUVEOzAwNzUgMDMxQiAwMzA5OzFFRUQ7MDA3NSAwMzFCIDAzMDk7CisxRUVFOzFFRUU7MDA1NSAwMzFCIDAzMDM7MUVFRTswMDU1IDAzMUIgMDMwMzsKKzFFRUY7MUVFRjswMDc1IDAzMUIgMDMwMzsxRUVGOzAwNzUgMDMxQiAwMzAzOworMUVGMDsxRUYwOzAwNTUgMDMxQiAwMzIzOzFFRjA7MDA1NSAwMzFCIDAzMjM7CisxRUYxOzFFRjE7MDA3NSAwMzFCIDAzMjM7MUVGMTswMDc1IDAzMUIgMDMyMzsKKzFFRjI7MUVGMjswMDU5IDAzMDA7MUVGMjswMDU5IDAzMDA7CisxRUYzOzFFRjM7MDA3OSAwMzAwOzFFRjM7MDA3OSAwMzAwOworMUVGNDsxRUY0OzAwNTkgMDMyMzsxRUY0OzAwNTkgMDMyMzsKKzFFRjU7MUVGNTswMDc5IDAzMjM7MUVGNTswMDc5IDAzMjM7CisxRUY2OzFFRjY7MDA1OSAwMzA5OzFFRjY7MDA1OSAwMzA5OworMUVGNzsxRUY3OzAwNzkgMDMwOTsxRUY3OzAwNzkgMDMwOTsKKzFFRjg7MUVGODswMDU5IDAzMDM7MUVGODswMDU5IDAzMDM7CisxRUY5OzFFRjk7MDA3OSAwMzAzOzFFRjk7MDA3OSAwMzAzOworMUYwMDsxRjAwOzAzQjEgMDMxMzsxRjAwOzAzQjEgMDMxMzsKKzFGMDE7MUYwMTswM0IxIDAzMTQ7MUYwMTswM0IxIDAzMTQ7CisxRjAyOzFGMDI7MDNCMSAwMzEzIDAzMDA7MUYwMjswM0IxIDAzMTMgMDMwMDsKKzFGMDM7MUYwMzswM0IxIDAzMTQgMDMwMDsxRjAzOzAzQjEgMDMxNCAwMzAwOworMUYwNDsxRjA0OzAzQjEgMDMxMyAwMzAxOzFGMDQ7MDNCMSAwMzEzIDAzMDE7CisxRjA1OzFGMDU7MDNCMSAwMzE0IDAzMDE7MUYwNTswM0IxIDAzMTQgMDMwMTsKKzFGMDY7MUYwNjswM0IxIDAzMTMgMDM0MjsxRjA2OzAzQjEgMDMxMyAwMzQyOworMUYwNzsxRjA3OzAzQjEgMDMxNCAwMzQyOzFGMDc7MDNCMSAwMzE0IDAzNDI7CisxRjA4OzFGMDg7MDM5MSAwMzEzOzFGMDg7MDM5MSAwMzEzOworMUYwOTsxRjA5OzAzOTEgMDMxNDsxRjA5OzAzOTEgMDMxNDsKKzFGMEE7MUYwQTswMzkxIDAzMTMgMDMwMDsxRjBBOzAzOTEgMDMxMyAwMzAwOworMUYwQjsxRjBCOzAzOTEgMDMxNCAwMzAwOzFGMEI7MDM5MSAwMzE0IDAzMDA7CisxRjBDOzFGMEM7MDM5MSAwMzEzIDAzMDE7MUYwQzswMzkxIDAzMTMgMDMwMTsKKzFGMEQ7MUYwRDswMzkxIDAzMTQgMDMwMTsxRjBEOzAzOTEgMDMxNCAwMzAxOworMUYwRTsxRjBFOzAzOTEgMDMxMyAwMzQyOzFGMEU7MDM5MSAwMzEzIDAzNDI7CisxRjBGOzFGMEY7MDM5MSAwMzE0IDAzNDI7MUYwRjswMzkxIDAzMTQgMDM0MjsKKzFGMTA7MUYxMDswM0I1IDAzMTM7MUYxMDswM0I1IDAzMTM7CisxRjExOzFGMTE7MDNCNSAwMzE0OzFGMTE7MDNCNSAwMzE0OworMUYxMjsxRjEyOzAzQjUgMDMxMyAwMzAwOzFGMTI7MDNCNSAwMzEzIDAzMDA7CisxRjEzOzFGMTM7MDNCNSAwMzE0IDAzMDA7MUYxMzswM0I1IDAzMTQgMDMwMDsKKzFGMTQ7MUYxNDswM0I1IDAzMTMgMDMwMTsxRjE0OzAzQjUgMDMxMyAwMzAxOworMUYxNTsxRjE1OzAzQjUgMDMxNCAwMzAxOzFGMTU7MDNCNSAwMzE0IDAzMDE7CisxRjE4OzFGMTg7MDM5NSAwMzEzOzFGMTg7MDM5NSAwMzEzOworMUYxOTsxRjE5OzAzOTUgMDMxNDsxRjE5OzAzOTUgMDMxNDsKKzFGMUE7MUYxQTswMzk1IDAzMTMgMDMwMDsxRjFBOzAzOTUgMDMxMyAwMzAwOworMUYxQjsxRjFCOzAzOTUgMDMxNCAwMzAwOzFGMUI7MDM5NSAwMzE0IDAzMDA7CisxRjFDOzFGMUM7MDM5NSAwMzEzIDAzMDE7MUYxQzswMzk1IDAzMTMgMDMwMTsKKzFGMUQ7MUYxRDswMzk1IDAzMTQgMDMwMTsxRjFEOzAzOTUgMDMxNCAwMzAxOworMUYyMDsxRjIwOzAzQjcgMDMxMzsxRjIwOzAzQjcgMDMxMzsKKzFGMjE7MUYyMTswM0I3IDAzMTQ7MUYyMTswM0I3IDAzMTQ7CisxRjIyOzFGMjI7MDNCNyAwMzEzIDAzMDA7MUYyMjswM0I3IDAzMTMgMDMwMDsKKzFGMjM7MUYyMzswM0I3IDAzMTQgMDMwMDsxRjIzOzAzQjcgMDMxNCAwMzAwOworMUYyNDsxRjI0OzAzQjcgMDMxMyAwMzAxOzFGMjQ7MDNCNyAwMzEzIDAzMDE7CisxRjI1OzFGMjU7MDNCNyAwMzE0IDAzMDE7MUYyNTswM0I3IDAzMTQgMDMwMTsKKzFGMjY7MUYyNjswM0I3IDAzMTMgMDM0MjsxRjI2OzAzQjcgMDMxMyAwMzQyOworMUYyNzsxRjI3OzAzQjcgMDMxNCAwMzQyOzFGMjc7MDNCNyAwMzE0IDAzNDI7CisxRjI4OzFGMjg7MDM5NyAwMzEzOzFGMjg7MDM5NyAwMzEzOworMUYyOTsxRjI5OzAzOTcgMDMxNDsxRjI5OzAzOTcgMDMxNDsKKzFGMkE7MUYyQTswMzk3IDAzMTMgMDMwMDsxRjJBOzAzOTcgMDMxMyAwMzAwOworMUYyQjsxRjJCOzAzOTcgMDMxNCAwMzAwOzFGMkI7MDM5NyAwMzE0IDAzMDA7CisxRjJDOzFGMkM7MDM5NyAwMzEzIDAzMDE7MUYyQzswMzk3IDAzMTMgMDMwMTsKKzFGMkQ7MUYyRDswMzk3IDAzMTQgMDMwMTsxRjJEOzAzOTcgMDMxNCAwMzAxOworMUYyRTsxRjJFOzAzOTcgMDMxMyAwMzQyOzFGMkU7MDM5NyAwMzEzIDAzNDI7CisxRjJGOzFGMkY7MDM5NyAwMzE0IDAzNDI7MUYyRjswMzk3IDAzMTQgMDM0MjsKKzFGMzA7MUYzMDswM0I5IDAzMTM7MUYzMDswM0I5IDAzMTM7CisxRjMxOzFGMzE7MDNCOSAwMzE0OzFGMzE7MDNCOSAwMzE0OworMUYzMjsxRjMyOzAzQjkgMDMxMyAwMzAwOzFGMzI7MDNCOSAwMzEzIDAzMDA7CisxRjMzOzFGMzM7MDNCOSAwMzE0IDAzMDA7MUYzMzswM0I5IDAzMTQgMDMwMDsKKzFGMzQ7MUYzNDswM0I5IDAzMTMgMDMwMTsxRjM0OzAzQjkgMDMxMyAwMzAxOworMUYzNTsxRjM1OzAzQjkgMDMxNCAwMzAxOzFGMzU7MDNCOSAwMzE0IDAzMDE7CisxRjM2OzFGMzY7MDNCOSAwMzEzIDAzNDI7MUYzNjswM0I5IDAzMTMgMDM0MjsKKzFGMzc7MUYzNzswM0I5IDAzMTQgMDM0MjsxRjM3OzAzQjkgMDMxNCAwMzQyOworMUYzODsxRjM4OzAzOTkgMDMxMzsxRjM4OzAzOTkgMDMxMzsKKzFGMzk7MUYzOTswMzk5IDAzMTQ7MUYzOTswMzk5IDAzMTQ7CisxRjNBOzFGM0E7MDM5OSAwMzEzIDAzMDA7MUYzQTswMzk5IDAzMTMgMDMwMDsKKzFGM0I7MUYzQjswMzk5IDAzMTQgMDMwMDsxRjNCOzAzOTkgMDMxNCAwMzAwOworMUYzQzsxRjNDOzAzOTkgMDMxMyAwMzAxOzFGM0M7MDM5OSAwMzEzIDAzMDE7CisxRjNEOzFGM0Q7MDM5OSAwMzE0IDAzMDE7MUYzRDswMzk5IDAzMTQgMDMwMTsKKzFGM0U7MUYzRTswMzk5IDAzMTMgMDM0MjsxRjNFOzAzOTkgMDMxMyAwMzQyOworMUYzRjsxRjNGOzAzOTkgMDMxNCAwMzQyOzFGM0Y7MDM5OSAwMzE0IDAzNDI7CisxRjQwOzFGNDA7MDNCRiAwMzEzOzFGNDA7MDNCRiAwMzEzOworMUY0MTsxRjQxOzAzQkYgMDMxNDsxRjQxOzAzQkYgMDMxNDsKKzFGNDI7MUY0MjswM0JGIDAzMTMgMDMwMDsxRjQyOzAzQkYgMDMxMyAwMzAwOworMUY0MzsxRjQzOzAzQkYgMDMxNCAwMzAwOzFGNDM7MDNCRiAwMzE0IDAzMDA7CisxRjQ0OzFGNDQ7MDNCRiAwMzEzIDAzMDE7MUY0NDswM0JGIDAzMTMgMDMwMTsKKzFGNDU7MUY0NTswM0JGIDAzMTQgMDMwMTsxRjQ1OzAzQkYgMDMxNCAwMzAxOworMUY0ODsxRjQ4OzAzOUYgMDMxMzsxRjQ4OzAzOUYgMDMxMzsKKzFGNDk7MUY0OTswMzlGIDAzMTQ7MUY0OTswMzlGIDAzMTQ7CisxRjRBOzFGNEE7MDM5RiAwMzEzIDAzMDA7MUY0QTswMzlGIDAzMTMgMDMwMDsKKzFGNEI7MUY0QjswMzlGIDAzMTQgMDMwMDsxRjRCOzAzOUYgMDMxNCAwMzAwOworMUY0QzsxRjRDOzAzOUYgMDMxMyAwMzAxOzFGNEM7MDM5RiAwMzEzIDAzMDE7CisxRjREOzFGNEQ7MDM5RiAwMzE0IDAzMDE7MUY0RDswMzlGIDAzMTQgMDMwMTsKKzFGNTA7MUY1MDswM0M1IDAzMTM7MUY1MDswM0M1IDAzMTM7CisxRjUxOzFGNTE7MDNDNSAwMzE0OzFGNTE7MDNDNSAwMzE0OworMUY1MjsxRjUyOzAzQzUgMDMxMyAwMzAwOzFGNTI7MDNDNSAwMzEzIDAzMDA7CisxRjUzOzFGNTM7MDNDNSAwMzE0IDAzMDA7MUY1MzswM0M1IDAzMTQgMDMwMDsKKzFGNTQ7MUY1NDswM0M1IDAzMTMgMDMwMTsxRjU0OzAzQzUgMDMxMyAwMzAxOworMUY1NTsxRjU1OzAzQzUgMDMxNCAwMzAxOzFGNTU7MDNDNSAwMzE0IDAzMDE7CisxRjU2OzFGNTY7MDNDNSAwMzEzIDAzNDI7MUY1NjswM0M1IDAzMTMgMDM0MjsKKzFGNTc7MUY1NzswM0M1IDAzMTQgMDM0MjsxRjU3OzAzQzUgMDMxNCAwMzQyOworMUY1OTsxRjU5OzAzQTUgMDMxNDsxRjU5OzAzQTUgMDMxNDsKKzFGNUI7MUY1QjswM0E1IDAzMTQgMDMwMDsxRjVCOzAzQTUgMDMxNCAwMzAwOworMUY1RDsxRjVEOzAzQTUgMDMxNCAwMzAxOzFGNUQ7MDNBNSAwMzE0IDAzMDE7CisxRjVGOzFGNUY7MDNBNSAwMzE0IDAzNDI7MUY1RjswM0E1IDAzMTQgMDM0MjsKKzFGNjA7MUY2MDswM0M5IDAzMTM7MUY2MDswM0M5IDAzMTM7CisxRjYxOzFGNjE7MDNDOSAwMzE0OzFGNjE7MDNDOSAwMzE0OworMUY2MjsxRjYyOzAzQzkgMDMxMyAwMzAwOzFGNjI7MDNDOSAwMzEzIDAzMDA7CisxRjYzOzFGNjM7MDNDOSAwMzE0IDAzMDA7MUY2MzswM0M5IDAzMTQgMDMwMDsKKzFGNjQ7MUY2NDswM0M5IDAzMTMgMDMwMTsxRjY0OzAzQzkgMDMxMyAwMzAxOworMUY2NTsxRjY1OzAzQzkgMDMxNCAwMzAxOzFGNjU7MDNDOSAwMzE0IDAzMDE7CisxRjY2OzFGNjY7MDNDOSAwMzEzIDAzNDI7MUY2NjswM0M5IDAzMTMgMDM0MjsKKzFGNjc7MUY2NzswM0M5IDAzMTQgMDM0MjsxRjY3OzAzQzkgMDMxNCAwMzQyOworMUY2ODsxRjY4OzAzQTkgMDMxMzsxRjY4OzAzQTkgMDMxMzsKKzFGNjk7MUY2OTswM0E5IDAzMTQ7MUY2OTswM0E5IDAzMTQ7CisxRjZBOzFGNkE7MDNBOSAwMzEzIDAzMDA7MUY2QTswM0E5IDAzMTMgMDMwMDsKKzFGNkI7MUY2QjswM0E5IDAzMTQgMDMwMDsxRjZCOzAzQTkgMDMxNCAwMzAwOworMUY2QzsxRjZDOzAzQTkgMDMxMyAwMzAxOzFGNkM7MDNBOSAwMzEzIDAzMDE7CisxRjZEOzFGNkQ7MDNBOSAwMzE0IDAzMDE7MUY2RDswM0E5IDAzMTQgMDMwMTsKKzFGNkU7MUY2RTswM0E5IDAzMTMgMDM0MjsxRjZFOzAzQTkgMDMxMyAwMzQyOworMUY2RjsxRjZGOzAzQTkgMDMxNCAwMzQyOzFGNkY7MDNBOSAwMzE0IDAzNDI7CisxRjcwOzFGNzA7MDNCMSAwMzAwOzFGNzA7MDNCMSAwMzAwOworMUY3MTswM0FDOzAzQjEgMDMwMTswM0FDOzAzQjEgMDMwMTsKKzFGNzI7MUY3MjswM0I1IDAzMDA7MUY3MjswM0I1IDAzMDA7CisxRjczOzAzQUQ7MDNCNSAwMzAxOzAzQUQ7MDNCNSAwMzAxOworMUY3NDsxRjc0OzAzQjcgMDMwMDsxRjc0OzAzQjcgMDMwMDsKKzFGNzU7MDNBRTswM0I3IDAzMDE7MDNBRTswM0I3IDAzMDE7CisxRjc2OzFGNzY7MDNCOSAwMzAwOzFGNzY7MDNCOSAwMzAwOworMUY3NzswM0FGOzAzQjkgMDMwMTswM0FGOzAzQjkgMDMwMTsKKzFGNzg7MUY3ODswM0JGIDAzMDA7MUY3ODswM0JGIDAzMDA7CisxRjc5OzAzQ0M7MDNCRiAwMzAxOzAzQ0M7MDNCRiAwMzAxOworMUY3QTsxRjdBOzAzQzUgMDMwMDsxRjdBOzAzQzUgMDMwMDsKKzFGN0I7MDNDRDswM0M1IDAzMDE7MDNDRDswM0M1IDAzMDE7CisxRjdDOzFGN0M7MDNDOSAwMzAwOzFGN0M7MDNDOSAwMzAwOworMUY3RDswM0NFOzAzQzkgMDMwMTswM0NFOzAzQzkgMDMwMTsKKzFGODA7MUY4MDswM0IxIDAzMTMgMDM0NTsxRjgwOzAzQjEgMDMxMyAwMzQ1OworMUY4MTsxRjgxOzAzQjEgMDMxNCAwMzQ1OzFGODE7MDNCMSAwMzE0IDAzNDU7CisxRjgyOzFGODI7MDNCMSAwMzEzIDAzMDAgMDM0NTsxRjgyOzAzQjEgMDMxMyAwMzAwIDAzNDU7CisxRjgzOzFGODM7MDNCMSAwMzE0IDAzMDAgMDM0NTsxRjgzOzAzQjEgMDMxNCAwMzAwIDAzNDU7CisxRjg0OzFGODQ7MDNCMSAwMzEzIDAzMDEgMDM0NTsxRjg0OzAzQjEgMDMxMyAwMzAxIDAzNDU7CisxRjg1OzFGODU7MDNCMSAwMzE0IDAzMDEgMDM0NTsxRjg1OzAzQjEgMDMxNCAwMzAxIDAzNDU7CisxRjg2OzFGODY7MDNCMSAwMzEzIDAzNDIgMDM0NTsxRjg2OzAzQjEgMDMxMyAwMzQyIDAzNDU7CisxRjg3OzFGODc7MDNCMSAwMzE0IDAzNDIgMDM0NTsxRjg3OzAzQjEgMDMxNCAwMzQyIDAzNDU7CisxRjg4OzFGODg7MDM5MSAwMzEzIDAzNDU7MUY4ODswMzkxIDAzMTMgMDM0NTsKKzFGODk7MUY4OTswMzkxIDAzMTQgMDM0NTsxRjg5OzAzOTEgMDMxNCAwMzQ1OworMUY4QTsxRjhBOzAzOTEgMDMxMyAwMzAwIDAzNDU7MUY4QTswMzkxIDAzMTMgMDMwMCAwMzQ1OworMUY4QjsxRjhCOzAzOTEgMDMxNCAwMzAwIDAzNDU7MUY4QjswMzkxIDAzMTQgMDMwMCAwMzQ1OworMUY4QzsxRjhDOzAzOTEgMDMxMyAwMzAxIDAzNDU7MUY4QzswMzkxIDAzMTMgMDMwMSAwMzQ1OworMUY4RDsxRjhEOzAzOTEgMDMxNCAwMzAxIDAzNDU7MUY4RDswMzkxIDAzMTQgMDMwMSAwMzQ1OworMUY4RTsxRjhFOzAzOTEgMDMxMyAwMzQyIDAzNDU7MUY4RTswMzkxIDAzMTMgMDM0MiAwMzQ1OworMUY4RjsxRjhGOzAzOTEgMDMxNCAwMzQyIDAzNDU7MUY4RjswMzkxIDAzMTQgMDM0MiAwMzQ1OworMUY5MDsxRjkwOzAzQjcgMDMxMyAwMzQ1OzFGOTA7MDNCNyAwMzEzIDAzNDU7CisxRjkxOzFGOTE7MDNCNyAwMzE0IDAzNDU7MUY5MTswM0I3IDAzMTQgMDM0NTsKKzFGOTI7MUY5MjswM0I3IDAzMTMgMDMwMCAwMzQ1OzFGOTI7MDNCNyAwMzEzIDAzMDAgMDM0NTsKKzFGOTM7MUY5MzswM0I3IDAzMTQgMDMwMCAwMzQ1OzFGOTM7MDNCNyAwMzE0IDAzMDAgMDM0NTsKKzFGOTQ7MUY5NDswM0I3IDAzMTMgMDMwMSAwMzQ1OzFGOTQ7MDNCNyAwMzEzIDAzMDEgMDM0NTsKKzFGOTU7MUY5NTswM0I3IDAzMTQgMDMwMSAwMzQ1OzFGOTU7MDNCNyAwMzE0IDAzMDEgMDM0NTsKKzFGOTY7MUY5NjswM0I3IDAzMTMgMDM0MiAwMzQ1OzFGOTY7MDNCNyAwMzEzIDAzNDIgMDM0NTsKKzFGOTc7MUY5NzswM0I3IDAzMTQgMDM0MiAwMzQ1OzFGOTc7MDNCNyAwMzE0IDAzNDIgMDM0NTsKKzFGOTg7MUY5ODswMzk3IDAzMTMgMDM0NTsxRjk4OzAzOTcgMDMxMyAwMzQ1OworMUY5OTsxRjk5OzAzOTcgMDMxNCAwMzQ1OzFGOTk7MDM5NyAwMzE0IDAzNDU7CisxRjlBOzFGOUE7MDM5NyAwMzEzIDAzMDAgMDM0NTsxRjlBOzAzOTcgMDMxMyAwMzAwIDAzNDU7CisxRjlCOzFGOUI7MDM5NyAwMzE0IDAzMDAgMDM0NTsxRjlCOzAzOTcgMDMxNCAwMzAwIDAzNDU7CisxRjlDOzFGOUM7MDM5NyAwMzEzIDAzMDEgMDM0NTsxRjlDOzAzOTcgMDMxMyAwMzAxIDAzNDU7CisxRjlEOzFGOUQ7MDM5NyAwMzE0IDAzMDEgMDM0NTsxRjlEOzAzOTcgMDMxNCAwMzAxIDAzNDU7CisxRjlFOzFGOUU7MDM5NyAwMzEzIDAzNDIgMDM0NTsxRjlFOzAzOTcgMDMxMyAwMzQyIDAzNDU7CisxRjlGOzFGOUY7MDM5NyAwMzE0IDAzNDIgMDM0NTsxRjlGOzAzOTcgMDMxNCAwMzQyIDAzNDU7CisxRkEwOzFGQTA7MDNDOSAwMzEzIDAzNDU7MUZBMDswM0M5IDAzMTMgMDM0NTsKKzFGQTE7MUZBMTswM0M5IDAzMTQgMDM0NTsxRkExOzAzQzkgMDMxNCAwMzQ1OworMUZBMjsxRkEyOzAzQzkgMDMxMyAwMzAwIDAzNDU7MUZBMjswM0M5IDAzMTMgMDMwMCAwMzQ1OworMUZBMzsxRkEzOzAzQzkgMDMxNCAwMzAwIDAzNDU7MUZBMzswM0M5IDAzMTQgMDMwMCAwMzQ1OworMUZBNDsxRkE0OzAzQzkgMDMxMyAwMzAxIDAzNDU7MUZBNDswM0M5IDAzMTMgMDMwMSAwMzQ1OworMUZBNTsxRkE1OzAzQzkgMDMxNCAwMzAxIDAzNDU7MUZBNTswM0M5IDAzMTQgMDMwMSAwMzQ1OworMUZBNjsxRkE2OzAzQzkgMDMxMyAwMzQyIDAzNDU7MUZBNjswM0M5IDAzMTMgMDM0MiAwMzQ1OworMUZBNzsxRkE3OzAzQzkgMDMxNCAwMzQyIDAzNDU7MUZBNzswM0M5IDAzMTQgMDM0MiAwMzQ1OworMUZBODsxRkE4OzAzQTkgMDMxMyAwMzQ1OzFGQTg7MDNBOSAwMzEzIDAzNDU7CisxRkE5OzFGQTk7MDNBOSAwMzE0IDAzNDU7MUZBOTswM0E5IDAzMTQgMDM0NTsKKzFGQUE7MUZBQTswM0E5IDAzMTMgMDMwMCAwMzQ1OzFGQUE7MDNBOSAwMzEzIDAzMDAgMDM0NTsKKzFGQUI7MUZBQjswM0E5IDAzMTQgMDMwMCAwMzQ1OzFGQUI7MDNBOSAwMzE0IDAzMDAgMDM0NTsKKzFGQUM7MUZBQzswM0E5IDAzMTMgMDMwMSAwMzQ1OzFGQUM7MDNBOSAwMzEzIDAzMDEgMDM0NTsKKzFGQUQ7MUZBRDswM0E5IDAzMTQgMDMwMSAwMzQ1OzFGQUQ7MDNBOSAwMzE0IDAzMDEgMDM0NTsKKzFGQUU7MUZBRTswM0E5IDAzMTMgMDM0MiAwMzQ1OzFGQUU7MDNBOSAwMzEzIDAzNDIgMDM0NTsKKzFGQUY7MUZBRjswM0E5IDAzMTQgMDM0MiAwMzQ1OzFGQUY7MDNBOSAwMzE0IDAzNDIgMDM0NTsKKzFGQjA7MUZCMDswM0IxIDAzMDY7MUZCMDswM0IxIDAzMDY7CisxRkIxOzFGQjE7MDNCMSAwMzA0OzFGQjE7MDNCMSAwMzA0OworMUZCMjsxRkIyOzAzQjEgMDMwMCAwMzQ1OzFGQjI7MDNCMSAwMzAwIDAzNDU7CisxRkIzOzFGQjM7MDNCMSAwMzQ1OzFGQjM7MDNCMSAwMzQ1OworMUZCNDsxRkI0OzAzQjEgMDMwMSAwMzQ1OzFGQjQ7MDNCMSAwMzAxIDAzNDU7CisxRkI2OzFGQjY7MDNCMSAwMzQyOzFGQjY7MDNCMSAwMzQyOworMUZCNzsxRkI3OzAzQjEgMDM0MiAwMzQ1OzFGQjc7MDNCMSAwMzQyIDAzNDU7CisxRkI4OzFGQjg7MDM5MSAwMzA2OzFGQjg7MDM5MSAwMzA2OworMUZCOTsxRkI5OzAzOTEgMDMwNDsxRkI5OzAzOTEgMDMwNDsKKzFGQkE7MUZCQTswMzkxIDAzMDA7MUZCQTswMzkxIDAzMDA7CisxRkJCOzAzODY7MDM5MSAwMzAxOzAzODY7MDM5MSAwMzAxOworMUZCQzsxRkJDOzAzOTEgMDM0NTsxRkJDOzAzOTEgMDM0NTsKKzFGQkQ7MUZCRDsxRkJEOzAwMjAgMDMxMzswMDIwIDAzMTM7CisxRkJFOzAzQjk7MDNCOTswM0I5OzAzQjk7CisxRkJGOzFGQkY7MUZCRjswMDIwIDAzMTM7MDAyMCAwMzEzOworMUZDMDsxRkMwOzFGQzA7MDAyMCAwMzQyOzAwMjAgMDM0MjsKKzFGQzE7MUZDMTswMEE4IDAzNDI7MDAyMCAwMzA4IDAzNDI7MDAyMCAwMzA4IDAzNDI7CisxRkMyOzFGQzI7MDNCNyAwMzAwIDAzNDU7MUZDMjswM0I3IDAzMDAgMDM0NTsKKzFGQzM7MUZDMzswM0I3IDAzNDU7MUZDMzswM0I3IDAzNDU7CisxRkM0OzFGQzQ7MDNCNyAwMzAxIDAzNDU7MUZDNDswM0I3IDAzMDEgMDM0NTsKKzFGQzY7MUZDNjswM0I3IDAzNDI7MUZDNjswM0I3IDAzNDI7CisxRkM3OzFGQzc7MDNCNyAwMzQyIDAzNDU7MUZDNzswM0I3IDAzNDIgMDM0NTsKKzFGQzg7MUZDODswMzk1IDAzMDA7MUZDODswMzk1IDAzMDA7CisxRkM5OzAzODg7MDM5NSAwMzAxOzAzODg7MDM5NSAwMzAxOworMUZDQTsxRkNBOzAzOTcgMDMwMDsxRkNBOzAzOTcgMDMwMDsKKzFGQ0I7MDM4OTswMzk3IDAzMDE7MDM4OTswMzk3IDAzMDE7CisxRkNDOzFGQ0M7MDM5NyAwMzQ1OzFGQ0M7MDM5NyAwMzQ1OworMUZDRDsxRkNEOzFGQkYgMDMwMDswMDIwIDAzMTMgMDMwMDswMDIwIDAzMTMgMDMwMDsKKzFGQ0U7MUZDRTsxRkJGIDAzMDE7MDAyMCAwMzEzIDAzMDE7MDAyMCAwMzEzIDAzMDE7CisxRkNGOzFGQ0Y7MUZCRiAwMzQyOzAwMjAgMDMxMyAwMzQyOzAwMjAgMDMxMyAwMzQyOworMUZEMDsxRkQwOzAzQjkgMDMwNjsxRkQwOzAzQjkgMDMwNjsKKzFGRDE7MUZEMTswM0I5IDAzMDQ7MUZEMTswM0I5IDAzMDQ7CisxRkQyOzFGRDI7MDNCOSAwMzA4IDAzMDA7MUZEMjswM0I5IDAzMDggMDMwMDsKKzFGRDM7MDM5MDswM0I5IDAzMDggMDMwMTswMzkwOzAzQjkgMDMwOCAwMzAxOworMUZENjsxRkQ2OzAzQjkgMDM0MjsxRkQ2OzAzQjkgMDM0MjsKKzFGRDc7MUZENzswM0I5IDAzMDggMDM0MjsxRkQ3OzAzQjkgMDMwOCAwMzQyOworMUZEODsxRkQ4OzAzOTkgMDMwNjsxRkQ4OzAzOTkgMDMwNjsKKzFGRDk7MUZEOTswMzk5IDAzMDQ7MUZEOTswMzk5IDAzMDQ7CisxRkRBOzFGREE7MDM5OSAwMzAwOzFGREE7MDM5OSAwMzAwOworMUZEQjswMzhBOzAzOTkgMDMwMTswMzhBOzAzOTkgMDMwMTsKKzFGREQ7MUZERDsxRkZFIDAzMDA7MDAyMCAwMzE0IDAzMDA7MDAyMCAwMzE0IDAzMDA7CisxRkRFOzFGREU7MUZGRSAwMzAxOzAwMjAgMDMxNCAwMzAxOzAwMjAgMDMxNCAwMzAxOworMUZERjsxRkRGOzFGRkUgMDM0MjswMDIwIDAzMTQgMDM0MjswMDIwIDAzMTQgMDM0MjsKKzFGRTA7MUZFMDswM0M1IDAzMDY7MUZFMDswM0M1IDAzMDY7CisxRkUxOzFGRTE7MDNDNSAwMzA0OzFGRTE7MDNDNSAwMzA0OworMUZFMjsxRkUyOzAzQzUgMDMwOCAwMzAwOzFGRTI7MDNDNSAwMzA4IDAzMDA7CisxRkUzOzAzQjA7MDNDNSAwMzA4IDAzMDE7MDNCMDswM0M1IDAzMDggMDMwMTsKKzFGRTQ7MUZFNDswM0MxIDAzMTM7MUZFNDswM0MxIDAzMTM7CisxRkU1OzFGRTU7MDNDMSAwMzE0OzFGRTU7MDNDMSAwMzE0OworMUZFNjsxRkU2OzAzQzUgMDM0MjsxRkU2OzAzQzUgMDM0MjsKKzFGRTc7MUZFNzswM0M1IDAzMDggMDM0MjsxRkU3OzAzQzUgMDMwOCAwMzQyOworMUZFODsxRkU4OzAzQTUgMDMwNjsxRkU4OzAzQTUgMDMwNjsKKzFGRTk7MUZFOTswM0E1IDAzMDQ7MUZFOTswM0E1IDAzMDQ7CisxRkVBOzFGRUE7MDNBNSAwMzAwOzFGRUE7MDNBNSAwMzAwOworMUZFQjswMzhFOzAzQTUgMDMwMTswMzhFOzAzQTUgMDMwMTsKKzFGRUM7MUZFQzswM0ExIDAzMTQ7MUZFQzswM0ExIDAzMTQ7CisxRkVEOzFGRUQ7MDBBOCAwMzAwOzAwMjAgMDMwOCAwMzAwOzAwMjAgMDMwOCAwMzAwOworMUZFRTswMzg1OzAwQTggMDMwMTswMDIwIDAzMDggMDMwMTswMDIwIDAzMDggMDMwMTsKKzFGRUY7MDA2MDswMDYwOzAwNjA7MDA2MDsKKzFGRjI7MUZGMjswM0M5IDAzMDAgMDM0NTsxRkYyOzAzQzkgMDMwMCAwMzQ1OworMUZGMzsxRkYzOzAzQzkgMDM0NTsxRkYzOzAzQzkgMDM0NTsKKzFGRjQ7MUZGNDswM0M5IDAzMDEgMDM0NTsxRkY0OzAzQzkgMDMwMSAwMzQ1OworMUZGNjsxRkY2OzAzQzkgMDM0MjsxRkY2OzAzQzkgMDM0MjsKKzFGRjc7MUZGNzswM0M5IDAzNDIgMDM0NTsxRkY3OzAzQzkgMDM0MiAwMzQ1OworMUZGODsxRkY4OzAzOUYgMDMwMDsxRkY4OzAzOUYgMDMwMDsKKzFGRjk7MDM4QzswMzlGIDAzMDE7MDM4QzswMzlGIDAzMDE7CisxRkZBOzFGRkE7MDNBOSAwMzAwOzFGRkE7MDNBOSAwMzAwOworMUZGQjswMzhGOzAzQTkgMDMwMTswMzhGOzAzQTkgMDMwMTsKKzFGRkM7MUZGQzswM0E5IDAzNDU7MUZGQzswM0E5IDAzNDU7CisxRkZEOzAwQjQ7MDBCNDswMDIwIDAzMDE7MDAyMCAwMzAxOworMUZGRTsxRkZFOzFGRkU7MDAyMCAwMzE0OzAwMjAgMDMxNDsKKzIwMDA7MjAwMjsyMDAyOzAwMjA7MDAyMDsKKzIwMDE7MjAwMzsyMDAzOzAwMjA7MDAyMDsKKzIwMDI7MjAwMjsyMDAyOzAwMjA7MDAyMDsKKzIwMDM7MjAwMzsyMDAzOzAwMjA7MDAyMDsKKzIwMDQ7MjAwNDsyMDA0OzAwMjA7MDAyMDsKKzIwMDU7MjAwNTsyMDA1OzAwMjA7MDAyMDsKKzIwMDY7MjAwNjsyMDA2OzAwMjA7MDAyMDsKKzIwMDc7MjAwNzsyMDA3OzAwMjA7MDAyMDsKKzIwMDg7MjAwODsyMDA4OzAwMjA7MDAyMDsKKzIwMDk7MjAwOTsyMDA5OzAwMjA7MDAyMDsKKzIwMEE7MjAwQTsyMDBBOzAwMjA7MDAyMDsKKzIwMTE7MjAxMTsyMDExOzIwMTA7MjAxMDsKKzIwMTc7MjAxNzsyMDE3OzAwMjAgMDMzMzswMDIwIDAzMzM7CisyMDI0OzIwMjQ7MjAyNDswMDJFOzAwMkU7CisyMDI1OzIwMjU7MjAyNTswMDJFIDAwMkU7MDAyRSAwMDJFOworMjAyNjsyMDI2OzIwMjY7MDAyRSAwMDJFIDAwMkU7MDAyRSAwMDJFIDAwMkU7CisyMDJGOzIwMkY7MjAyRjswMDIwOzAwMjA7CisyMDMzOzIwMzM7MjAzMzsyMDMyIDIwMzI7MjAzMiAyMDMyOworMjAzNDsyMDM0OzIwMzQ7MjAzMiAyMDMyIDIwMzI7MjAzMiAyMDMyIDIwMzI7CisyMDM2OzIwMzY7MjAzNjsyMDM1IDIwMzU7MjAzNSAyMDM1OworMjAzNzsyMDM3OzIwMzc7MjAzNSAyMDM1IDIwMzU7MjAzNSAyMDM1IDIwMzU7CisyMDNDOzIwM0M7MjAzQzswMDIxIDAwMjE7MDAyMSAwMDIxOworMjAzRTsyMDNFOzIwM0U7MDAyMCAwMzA1OzAwMjAgMDMwNTsKKzIwNDc7MjA0NzsyMDQ3OzAwM0YgMDAzRjswMDNGIDAwM0Y7CisyMDQ4OzIwNDg7MjA0ODswMDNGIDAwMjE7MDAzRiAwMDIxOworMjA0OTsyMDQ5OzIwNDk7MDAyMSAwMDNGOzAwMjEgMDAzRjsKKzIwNTc7MjA1NzsyMDU3OzIwMzIgMjAzMiAyMDMyIDIwMzI7MjAzMiAyMDMyIDIwMzIgMjAzMjsKKzIwNUY7MjA1RjsyMDVGOzAwMjA7MDAyMDsKKzIwNzA7MjA3MDsyMDcwOzAwMzA7MDAzMDsKKzIwNzE7MjA3MTsyMDcxOzAwNjk7MDA2OTsKKzIwNzQ7MjA3NDsyMDc0OzAwMzQ7MDAzNDsKKzIwNzU7MjA3NTsyMDc1OzAwMzU7MDAzNTsKKzIwNzY7MjA3NjsyMDc2OzAwMzY7MDAzNjsKKzIwNzc7MjA3NzsyMDc3OzAwMzc7MDAzNzsKKzIwNzg7MjA3ODsyMDc4OzAwMzg7MDAzODsKKzIwNzk7MjA3OTsyMDc5OzAwMzk7MDAzOTsKKzIwN0E7MjA3QTsyMDdBOzAwMkI7MDAyQjsKKzIwN0I7MjA3QjsyMDdCOzIyMTI7MjIxMjsKKzIwN0M7MjA3QzsyMDdDOzAwM0Q7MDAzRDsKKzIwN0Q7MjA3RDsyMDdEOzAwMjg7MDAyODsKKzIwN0U7MjA3RTsyMDdFOzAwMjk7MDAyOTsKKzIwN0Y7MjA3RjsyMDdGOzAwNkU7MDA2RTsKKzIwODA7MjA4MDsyMDgwOzAwMzA7MDAzMDsKKzIwODE7MjA4MTsyMDgxOzAwMzE7MDAzMTsKKzIwODI7MjA4MjsyMDgyOzAwMzI7MDAzMjsKKzIwODM7MjA4MzsyMDgzOzAwMzM7MDAzMzsKKzIwODQ7MjA4NDsyMDg0OzAwMzQ7MDAzNDsKKzIwODU7MjA4NTsyMDg1OzAwMzU7MDAzNTsKKzIwODY7MjA4NjsyMDg2OzAwMzY7MDAzNjsKKzIwODc7MjA4NzsyMDg3OzAwMzc7MDAzNzsKKzIwODg7MjA4ODsyMDg4OzAwMzg7MDAzODsKKzIwODk7MjA4OTsyMDg5OzAwMzk7MDAzOTsKKzIwOEE7MjA4QTsyMDhBOzAwMkI7MDAyQjsKKzIwOEI7MjA4QjsyMDhCOzIyMTI7MjIxMjsKKzIwOEM7MjA4QzsyMDhDOzAwM0Q7MDAzRDsKKzIwOEQ7MjA4RDsyMDhEOzAwMjg7MDAyODsKKzIwOEU7MjA4RTsyMDhFOzAwMjk7MDAyOTsKKzIwQTg7MjBBODsyMEE4OzAwNTIgMDA3MzswMDUyIDAwNzM7CisyMTAwOzIxMDA7MjEwMDswMDYxIDAwMkYgMDA2MzswMDYxIDAwMkYgMDA2MzsKKzIxMDE7MjEwMTsyMTAxOzAwNjEgMDAyRiAwMDczOzAwNjEgMDAyRiAwMDczOworMjEwMjsyMTAyOzIxMDI7MDA0MzswMDQzOworMjEwMzsyMTAzOzIxMDM7MDBCMCAwMDQzOzAwQjAgMDA0MzsKKzIxMDU7MjEwNTsyMTA1OzAwNjMgMDAyRiAwMDZGOzAwNjMgMDAyRiAwMDZGOworMjEwNjsyMTA2OzIxMDY7MDA2MyAwMDJGIDAwNzU7MDA2MyAwMDJGIDAwNzU7CisyMTA3OzIxMDc7MjEwNzswMTkwOzAxOTA7CisyMTA5OzIxMDk7MjEwOTswMEIwIDAwNDY7MDBCMCAwMDQ2OworMjEwQTsyMTBBOzIxMEE7MDA2NzswMDY3OworMjEwQjsyMTBCOzIxMEI7MDA0ODswMDQ4OworMjEwQzsyMTBDOzIxMEM7MDA0ODswMDQ4OworMjEwRDsyMTBEOzIxMEQ7MDA0ODswMDQ4OworMjEwRTsyMTBFOzIxMEU7MDA2ODswMDY4OworMjEwRjsyMTBGOzIxMEY7MDEyNzswMTI3OworMjExMDsyMTEwOzIxMTA7MDA0OTswMDQ5OworMjExMTsyMTExOzIxMTE7MDA0OTswMDQ5OworMjExMjsyMTEyOzIxMTI7MDA0QzswMDRDOworMjExMzsyMTEzOzIxMTM7MDA2QzswMDZDOworMjExNTsyMTE1OzIxMTU7MDA0RTswMDRFOworMjExNjsyMTE2OzIxMTY7MDA0RSAwMDZGOzAwNEUgMDA2RjsKKzIxMTk7MjExOTsyMTE5OzAwNTA7MDA1MDsKKzIxMUE7MjExQTsyMTFBOzAwNTE7MDA1MTsKKzIxMUI7MjExQjsyMTFCOzAwNTI7MDA1MjsKKzIxMUM7MjExQzsyMTFDOzAwNTI7MDA1MjsKKzIxMUQ7MjExRDsyMTFEOzAwNTI7MDA1MjsKKzIxMjA7MjEyMDsyMTIwOzAwNTMgMDA0RDswMDUzIDAwNEQ7CisyMTIxOzIxMjE7MjEyMTswMDU0IDAwNDUgMDA0QzswMDU0IDAwNDUgMDA0QzsKKzIxMjI7MjEyMjsyMTIyOzAwNTQgMDA0RDswMDU0IDAwNEQ7CisyMTI0OzIxMjQ7MjEyNDswMDVBOzAwNUE7CisyMTI2OzAzQTk7MDNBOTswM0E5OzAzQTk7CisyMTI4OzIxMjg7MjEyODswMDVBOzAwNUE7CisyMTJBOzAwNEI7MDA0QjswMDRCOzAwNEI7CisyMTJCOzAwQzU7MDA0MSAwMzBBOzAwQzU7MDA0MSAwMzBBOworMjEyQzsyMTJDOzIxMkM7MDA0MjswMDQyOworMjEyRDsyMTJEOzIxMkQ7MDA0MzswMDQzOworMjEyRjsyMTJGOzIxMkY7MDA2NTswMDY1OworMjEzMDsyMTMwOzIxMzA7MDA0NTswMDQ1OworMjEzMTsyMTMxOzIxMzE7MDA0NjswMDQ2OworMjEzMzsyMTMzOzIxMzM7MDA0RDswMDREOworMjEzNDsyMTM0OzIxMzQ7MDA2RjswMDZGOworMjEzNTsyMTM1OzIxMzU7MDVEMDswNUQwOworMjEzNjsyMTM2OzIxMzY7MDVEMTswNUQxOworMjEzNzsyMTM3OzIxMzc7MDVEMjswNUQyOworMjEzODsyMTM4OzIxMzg7MDVEMzswNUQzOworMjEzOTsyMTM5OzIxMzk7MDA2OTswMDY5OworMjEzRDsyMTNEOzIxM0Q7MDNCMzswM0IzOworMjEzRTsyMTNFOzIxM0U7MDM5MzswMzkzOworMjEzRjsyMTNGOzIxM0Y7MDNBMDswM0EwOworMjE0MDsyMTQwOzIxNDA7MjIxMTsyMjExOworMjE0NTsyMTQ1OzIxNDU7MDA0NDswMDQ0OworMjE0NjsyMTQ2OzIxNDY7MDA2NDswMDY0OworMjE0NzsyMTQ3OzIxNDc7MDA2NTswMDY1OworMjE0ODsyMTQ4OzIxNDg7MDA2OTswMDY5OworMjE0OTsyMTQ5OzIxNDk7MDA2QTswMDZBOworMjE1MzsyMTUzOzIxNTM7MDAzMSAyMDQ0IDAwMzM7MDAzMSAyMDQ0IDAwMzM7CisyMTU0OzIxNTQ7MjE1NDswMDMyIDIwNDQgMDAzMzswMDMyIDIwNDQgMDAzMzsKKzIxNTU7MjE1NTsyMTU1OzAwMzEgMjA0NCAwMDM1OzAwMzEgMjA0NCAwMDM1OworMjE1NjsyMTU2OzIxNTY7MDAzMiAyMDQ0IDAwMzU7MDAzMiAyMDQ0IDAwMzU7CisyMTU3OzIxNTc7MjE1NzswMDMzIDIwNDQgMDAzNTswMDMzIDIwNDQgMDAzNTsKKzIxNTg7MjE1ODsyMTU4OzAwMzQgMjA0NCAwMDM1OzAwMzQgMjA0NCAwMDM1OworMjE1OTsyMTU5OzIxNTk7MDAzMSAyMDQ0IDAwMzY7MDAzMSAyMDQ0IDAwMzY7CisyMTVBOzIxNUE7MjE1QTswMDM1IDIwNDQgMDAzNjswMDM1IDIwNDQgMDAzNjsKKzIxNUI7MjE1QjsyMTVCOzAwMzEgMjA0NCAwMDM4OzAwMzEgMjA0NCAwMDM4OworMjE1QzsyMTVDOzIxNUM7MDAzMyAyMDQ0IDAwMzg7MDAzMyAyMDQ0IDAwMzg7CisyMTVEOzIxNUQ7MjE1RDswMDM1IDIwNDQgMDAzODswMDM1IDIwNDQgMDAzODsKKzIxNUU7MjE1RTsyMTVFOzAwMzcgMjA0NCAwMDM4OzAwMzcgMjA0NCAwMDM4OworMjE1RjsyMTVGOzIxNUY7MDAzMSAyMDQ0OzAwMzEgMjA0NDsKKzIxNjA7MjE2MDsyMTYwOzAwNDk7MDA0OTsKKzIxNjE7MjE2MTsyMTYxOzAwNDkgMDA0OTswMDQ5IDAwNDk7CisyMTYyOzIxNjI7MjE2MjswMDQ5IDAwNDkgMDA0OTswMDQ5IDAwNDkgMDA0OTsKKzIxNjM7MjE2MzsyMTYzOzAwNDkgMDA1NjswMDQ5IDAwNTY7CisyMTY0OzIxNjQ7MjE2NDswMDU2OzAwNTY7CisyMTY1OzIxNjU7MjE2NTswMDU2IDAwNDk7MDA1NiAwMDQ5OworMjE2NjsyMTY2OzIxNjY7MDA1NiAwMDQ5IDAwNDk7MDA1NiAwMDQ5IDAwNDk7CisyMTY3OzIxNjc7MjE2NzswMDU2IDAwNDkgMDA0OSAwMDQ5OzAwNTYgMDA0OSAwMDQ5IDAwNDk7CisyMTY4OzIxNjg7MjE2ODswMDQ5IDAwNTg7MDA0OSAwMDU4OworMjE2OTsyMTY5OzIxNjk7MDA1ODswMDU4OworMjE2QTsyMTZBOzIxNkE7MDA1OCAwMDQ5OzAwNTggMDA0OTsKKzIxNkI7MjE2QjsyMTZCOzAwNTggMDA0OSAwMDQ5OzAwNTggMDA0OSAwMDQ5OworMjE2QzsyMTZDOzIxNkM7MDA0QzswMDRDOworMjE2RDsyMTZEOzIxNkQ7MDA0MzswMDQzOworMjE2RTsyMTZFOzIxNkU7MDA0NDswMDQ0OworMjE2RjsyMTZGOzIxNkY7MDA0RDswMDREOworMjE3MDsyMTcwOzIxNzA7MDA2OTswMDY5OworMjE3MTsyMTcxOzIxNzE7MDA2OSAwMDY5OzAwNjkgMDA2OTsKKzIxNzI7MjE3MjsyMTcyOzAwNjkgMDA2OSAwMDY5OzAwNjkgMDA2OSAwMDY5OworMjE3MzsyMTczOzIxNzM7MDA2OSAwMDc2OzAwNjkgMDA3NjsKKzIxNzQ7MjE3NDsyMTc0OzAwNzY7MDA3NjsKKzIxNzU7MjE3NTsyMTc1OzAwNzYgMDA2OTswMDc2IDAwNjk7CisyMTc2OzIxNzY7MjE3NjswMDc2IDAwNjkgMDA2OTswMDc2IDAwNjkgMDA2OTsKKzIxNzc7MjE3NzsyMTc3OzAwNzYgMDA2OSAwMDY5IDAwNjk7MDA3NiAwMDY5IDAwNjkgMDA2OTsKKzIxNzg7MjE3ODsyMTc4OzAwNjkgMDA3ODswMDY5IDAwNzg7CisyMTc5OzIxNzk7MjE3OTswMDc4OzAwNzg7CisyMTdBOzIxN0E7MjE3QTswMDc4IDAwNjk7MDA3OCAwMDY5OworMjE3QjsyMTdCOzIxN0I7MDA3OCAwMDY5IDAwNjk7MDA3OCAwMDY5IDAwNjk7CisyMTdDOzIxN0M7MjE3QzswMDZDOzAwNkM7CisyMTdEOzIxN0Q7MjE3RDswMDYzOzAwNjM7CisyMTdFOzIxN0U7MjE3RTswMDY0OzAwNjQ7CisyMTdGOzIxN0Y7MjE3RjswMDZEOzAwNkQ7CisyMTlBOzIxOUE7MjE5MCAwMzM4OzIxOUE7MjE5MCAwMzM4OworMjE5QjsyMTlCOzIxOTIgMDMzODsyMTlCOzIxOTIgMDMzODsKKzIxQUU7MjFBRTsyMTk0IDAzMzg7MjFBRTsyMTk0IDAzMzg7CisyMUNEOzIxQ0Q7MjFEMCAwMzM4OzIxQ0Q7MjFEMCAwMzM4OworMjFDRTsyMUNFOzIxRDQgMDMzODsyMUNFOzIxRDQgMDMzODsKKzIxQ0Y7MjFDRjsyMUQyIDAzMzg7MjFDRjsyMUQyIDAzMzg7CisyMjA0OzIyMDQ7MjIwMyAwMzM4OzIyMDQ7MjIwMyAwMzM4OworMjIwOTsyMjA5OzIyMDggMDMzODsyMjA5OzIyMDggMDMzODsKKzIyMEM7MjIwQzsyMjBCIDAzMzg7MjIwQzsyMjBCIDAzMzg7CisyMjI0OzIyMjQ7MjIyMyAwMzM4OzIyMjQ7MjIyMyAwMzM4OworMjIyNjsyMjI2OzIyMjUgMDMzODsyMjI2OzIyMjUgMDMzODsKKzIyMkM7MjIyQzsyMjJDOzIyMkIgMjIyQjsyMjJCIDIyMkI7CisyMjJEOzIyMkQ7MjIyRDsyMjJCIDIyMkIgMjIyQjsyMjJCIDIyMkIgMjIyQjsKKzIyMkY7MjIyRjsyMjJGOzIyMkUgMjIyRTsyMjJFIDIyMkU7CisyMjMwOzIyMzA7MjIzMDsyMjJFIDIyMkUgMjIyRTsyMjJFIDIyMkUgMjIyRTsKKzIyNDE7MjI0MTsyMjNDIDAzMzg7MjI0MTsyMjNDIDAzMzg7CisyMjQ0OzIyNDQ7MjI0MyAwMzM4OzIyNDQ7MjI0MyAwMzM4OworMjI0NzsyMjQ3OzIyNDUgMDMzODsyMjQ3OzIyNDUgMDMzODsKKzIyNDk7MjI0OTsyMjQ4IDAzMzg7MjI0OTsyMjQ4IDAzMzg7CisyMjYwOzIyNjA7MDAzRCAwMzM4OzIyNjA7MDAzRCAwMzM4OworMjI2MjsyMjYyOzIyNjEgMDMzODsyMjYyOzIyNjEgMDMzODsKKzIyNkQ7MjI2RDsyMjREIDAzMzg7MjI2RDsyMjREIDAzMzg7CisyMjZFOzIyNkU7MDAzQyAwMzM4OzIyNkU7MDAzQyAwMzM4OworMjI2RjsyMjZGOzAwM0UgMDMzODsyMjZGOzAwM0UgMDMzODsKKzIyNzA7MjI3MDsyMjY0IDAzMzg7MjI3MDsyMjY0IDAzMzg7CisyMjcxOzIyNzE7MjI2NSAwMzM4OzIyNzE7MjI2NSAwMzM4OworMjI3NDsyMjc0OzIyNzIgMDMzODsyMjc0OzIyNzIgMDMzODsKKzIyNzU7MjI3NTsyMjczIDAzMzg7MjI3NTsyMjczIDAzMzg7CisyMjc4OzIyNzg7MjI3NiAwMzM4OzIyNzg7MjI3NiAwMzM4OworMjI3OTsyMjc5OzIyNzcgMDMzODsyMjc5OzIyNzcgMDMzODsKKzIyODA7MjI4MDsyMjdBIDAzMzg7MjI4MDsyMjdBIDAzMzg7CisyMjgxOzIyODE7MjI3QiAwMzM4OzIyODE7MjI3QiAwMzM4OworMjI4NDsyMjg0OzIyODIgMDMzODsyMjg0OzIyODIgMDMzODsKKzIyODU7MjI4NTsyMjgzIDAzMzg7MjI4NTsyMjgzIDAzMzg7CisyMjg4OzIyODg7MjI4NiAwMzM4OzIyODg7MjI4NiAwMzM4OworMjI4OTsyMjg5OzIyODcgMDMzODsyMjg5OzIyODcgMDMzODsKKzIyQUM7MjJBQzsyMkEyIDAzMzg7MjJBQzsyMkEyIDAzMzg7CisyMkFEOzIyQUQ7MjJBOCAwMzM4OzIyQUQ7MjJBOCAwMzM4OworMjJBRTsyMkFFOzIyQTkgMDMzODsyMkFFOzIyQTkgMDMzODsKKzIyQUY7MjJBRjsyMkFCIDAzMzg7MjJBRjsyMkFCIDAzMzg7CisyMkUwOzIyRTA7MjI3QyAwMzM4OzIyRTA7MjI3QyAwMzM4OworMjJFMTsyMkUxOzIyN0QgMDMzODsyMkUxOzIyN0QgMDMzODsKKzIyRTI7MjJFMjsyMjkxIDAzMzg7MjJFMjsyMjkxIDAzMzg7CisyMkUzOzIyRTM7MjI5MiAwMzM4OzIyRTM7MjI5MiAwMzM4OworMjJFQTsyMkVBOzIyQjIgMDMzODsyMkVBOzIyQjIgMDMzODsKKzIyRUI7MjJFQjsyMkIzIDAzMzg7MjJFQjsyMkIzIDAzMzg7CisyMkVDOzIyRUM7MjJCNCAwMzM4OzIyRUM7MjJCNCAwMzM4OworMjJFRDsyMkVEOzIyQjUgMDMzODsyMkVEOzIyQjUgMDMzODsKKzIzMjk7MzAwODszMDA4OzMwMDg7MzAwODsKKzIzMkE7MzAwOTszMDA5OzMwMDk7MzAwOTsKKzI0NjA7MjQ2MDsyNDYwOzAwMzE7MDAzMTsKKzI0NjE7MjQ2MTsyNDYxOzAwMzI7MDAzMjsKKzI0NjI7MjQ2MjsyNDYyOzAwMzM7MDAzMzsKKzI0NjM7MjQ2MzsyNDYzOzAwMzQ7MDAzNDsKKzI0NjQ7MjQ2NDsyNDY0OzAwMzU7MDAzNTsKKzI0NjU7MjQ2NTsyNDY1OzAwMzY7MDAzNjsKKzI0NjY7MjQ2NjsyNDY2OzAwMzc7MDAzNzsKKzI0Njc7MjQ2NzsyNDY3OzAwMzg7MDAzODsKKzI0Njg7MjQ2ODsyNDY4OzAwMzk7MDAzOTsKKzI0Njk7MjQ2OTsyNDY5OzAwMzEgMDAzMDswMDMxIDAwMzA7CisyNDZBOzI0NkE7MjQ2QTswMDMxIDAwMzE7MDAzMSAwMDMxOworMjQ2QjsyNDZCOzI0NkI7MDAzMSAwMDMyOzAwMzEgMDAzMjsKKzI0NkM7MjQ2QzsyNDZDOzAwMzEgMDAzMzswMDMxIDAwMzM7CisyNDZEOzI0NkQ7MjQ2RDswMDMxIDAwMzQ7MDAzMSAwMDM0OworMjQ2RTsyNDZFOzI0NkU7MDAzMSAwMDM1OzAwMzEgMDAzNTsKKzI0NkY7MjQ2RjsyNDZGOzAwMzEgMDAzNjswMDMxIDAwMzY7CisyNDcwOzI0NzA7MjQ3MDswMDMxIDAwMzc7MDAzMSAwMDM3OworMjQ3MTsyNDcxOzI0NzE7MDAzMSAwMDM4OzAwMzEgMDAzODsKKzI0NzI7MjQ3MjsyNDcyOzAwMzEgMDAzOTswMDMxIDAwMzk7CisyNDczOzI0NzM7MjQ3MzswMDMyIDAwMzA7MDAzMiAwMDMwOworMjQ3NDsyNDc0OzI0NzQ7MDAyOCAwMDMxIDAwMjk7MDAyOCAwMDMxIDAwMjk7CisyNDc1OzI0NzU7MjQ3NTswMDI4IDAwMzIgMDAyOTswMDI4IDAwMzIgMDAyOTsKKzI0NzY7MjQ3NjsyNDc2OzAwMjggMDAzMyAwMDI5OzAwMjggMDAzMyAwMDI5OworMjQ3NzsyNDc3OzI0Nzc7MDAyOCAwMDM0IDAwMjk7MDAyOCAwMDM0IDAwMjk7CisyNDc4OzI0Nzg7MjQ3ODswMDI4IDAwMzUgMDAyOTswMDI4IDAwMzUgMDAyOTsKKzI0Nzk7MjQ3OTsyNDc5OzAwMjggMDAzNiAwMDI5OzAwMjggMDAzNiAwMDI5OworMjQ3QTsyNDdBOzI0N0E7MDAyOCAwMDM3IDAwMjk7MDAyOCAwMDM3IDAwMjk7CisyNDdCOzI0N0I7MjQ3QjswMDI4IDAwMzggMDAyOTswMDI4IDAwMzggMDAyOTsKKzI0N0M7MjQ3QzsyNDdDOzAwMjggMDAzOSAwMDI5OzAwMjggMDAzOSAwMDI5OworMjQ3RDsyNDdEOzI0N0Q7MDAyOCAwMDMxIDAwMzAgMDAyOTswMDI4IDAwMzEgMDAzMCAwMDI5OworMjQ3RTsyNDdFOzI0N0U7MDAyOCAwMDMxIDAwMzEgMDAyOTswMDI4IDAwMzEgMDAzMSAwMDI5OworMjQ3RjsyNDdGOzI0N0Y7MDAyOCAwMDMxIDAwMzIgMDAyOTswMDI4IDAwMzEgMDAzMiAwMDI5OworMjQ4MDsyNDgwOzI0ODA7MDAyOCAwMDMxIDAwMzMgMDAyOTswMDI4IDAwMzEgMDAzMyAwMDI5OworMjQ4MTsyNDgxOzI0ODE7MDAyOCAwMDMxIDAwMzQgMDAyOTswMDI4IDAwMzEgMDAzNCAwMDI5OworMjQ4MjsyNDgyOzI0ODI7MDAyOCAwMDMxIDAwMzUgMDAyOTswMDI4IDAwMzEgMDAzNSAwMDI5OworMjQ4MzsyNDgzOzI0ODM7MDAyOCAwMDMxIDAwMzYgMDAyOTswMDI4IDAwMzEgMDAzNiAwMDI5OworMjQ4NDsyNDg0OzI0ODQ7MDAyOCAwMDMxIDAwMzcgMDAyOTswMDI4IDAwMzEgMDAzNyAwMDI5OworMjQ4NTsyNDg1OzI0ODU7MDAyOCAwMDMxIDAwMzggMDAyOTswMDI4IDAwMzEgMDAzOCAwMDI5OworMjQ4NjsyNDg2OzI0ODY7MDAyOCAwMDMxIDAwMzkgMDAyOTswMDI4IDAwMzEgMDAzOSAwMDI5OworMjQ4NzsyNDg3OzI0ODc7MDAyOCAwMDMyIDAwMzAgMDAyOTswMDI4IDAwMzIgMDAzMCAwMDI5OworMjQ4ODsyNDg4OzI0ODg7MDAzMSAwMDJFOzAwMzEgMDAyRTsKKzI0ODk7MjQ4OTsyNDg5OzAwMzIgMDAyRTswMDMyIDAwMkU7CisyNDhBOzI0OEE7MjQ4QTswMDMzIDAwMkU7MDAzMyAwMDJFOworMjQ4QjsyNDhCOzI0OEI7MDAzNCAwMDJFOzAwMzQgMDAyRTsKKzI0OEM7MjQ4QzsyNDhDOzAwMzUgMDAyRTswMDM1IDAwMkU7CisyNDhEOzI0OEQ7MjQ4RDswMDM2IDAwMkU7MDAzNiAwMDJFOworMjQ4RTsyNDhFOzI0OEU7MDAzNyAwMDJFOzAwMzcgMDAyRTsKKzI0OEY7MjQ4RjsyNDhGOzAwMzggMDAyRTswMDM4IDAwMkU7CisyNDkwOzI0OTA7MjQ5MDswMDM5IDAwMkU7MDAzOSAwMDJFOworMjQ5MTsyNDkxOzI0OTE7MDAzMSAwMDMwIDAwMkU7MDAzMSAwMDMwIDAwMkU7CisyNDkyOzI0OTI7MjQ5MjswMDMxIDAwMzEgMDAyRTswMDMxIDAwMzEgMDAyRTsKKzI0OTM7MjQ5MzsyNDkzOzAwMzEgMDAzMiAwMDJFOzAwMzEgMDAzMiAwMDJFOworMjQ5NDsyNDk0OzI0OTQ7MDAzMSAwMDMzIDAwMkU7MDAzMSAwMDMzIDAwMkU7CisyNDk1OzI0OTU7MjQ5NTswMDMxIDAwMzQgMDAyRTswMDMxIDAwMzQgMDAyRTsKKzI0OTY7MjQ5NjsyNDk2OzAwMzEgMDAzNSAwMDJFOzAwMzEgMDAzNSAwMDJFOworMjQ5NzsyNDk3OzI0OTc7MDAzMSAwMDM2IDAwMkU7MDAzMSAwMDM2IDAwMkU7CisyNDk4OzI0OTg7MjQ5ODswMDMxIDAwMzcgMDAyRTswMDMxIDAwMzcgMDAyRTsKKzI0OTk7MjQ5OTsyNDk5OzAwMzEgMDAzOCAwMDJFOzAwMzEgMDAzOCAwMDJFOworMjQ5QTsyNDlBOzI0OUE7MDAzMSAwMDM5IDAwMkU7MDAzMSAwMDM5IDAwMkU7CisyNDlCOzI0OUI7MjQ5QjswMDMyIDAwMzAgMDAyRTswMDMyIDAwMzAgMDAyRTsKKzI0OUM7MjQ5QzsyNDlDOzAwMjggMDA2MSAwMDI5OzAwMjggMDA2MSAwMDI5OworMjQ5RDsyNDlEOzI0OUQ7MDAyOCAwMDYyIDAwMjk7MDAyOCAwMDYyIDAwMjk7CisyNDlFOzI0OUU7MjQ5RTswMDI4IDAwNjMgMDAyOTswMDI4IDAwNjMgMDAyOTsKKzI0OUY7MjQ5RjsyNDlGOzAwMjggMDA2NCAwMDI5OzAwMjggMDA2NCAwMDI5OworMjRBMDsyNEEwOzI0QTA7MDAyOCAwMDY1IDAwMjk7MDAyOCAwMDY1IDAwMjk7CisyNEExOzI0QTE7MjRBMTswMDI4IDAwNjYgMDAyOTswMDI4IDAwNjYgMDAyOTsKKzI0QTI7MjRBMjsyNEEyOzAwMjggMDA2NyAwMDI5OzAwMjggMDA2NyAwMDI5OworMjRBMzsyNEEzOzI0QTM7MDAyOCAwMDY4IDAwMjk7MDAyOCAwMDY4IDAwMjk7CisyNEE0OzI0QTQ7MjRBNDswMDI4IDAwNjkgMDAyOTswMDI4IDAwNjkgMDAyOTsKKzI0QTU7MjRBNTsyNEE1OzAwMjggMDA2QSAwMDI5OzAwMjggMDA2QSAwMDI5OworMjRBNjsyNEE2OzI0QTY7MDAyOCAwMDZCIDAwMjk7MDAyOCAwMDZCIDAwMjk7CisyNEE3OzI0QTc7MjRBNzswMDI4IDAwNkMgMDAyOTswMDI4IDAwNkMgMDAyOTsKKzI0QTg7MjRBODsyNEE4OzAwMjggMDA2RCAwMDI5OzAwMjggMDA2RCAwMDI5OworMjRBOTsyNEE5OzI0QTk7MDAyOCAwMDZFIDAwMjk7MDAyOCAwMDZFIDAwMjk7CisyNEFBOzI0QUE7MjRBQTswMDI4IDAwNkYgMDAyOTswMDI4IDAwNkYgMDAyOTsKKzI0QUI7MjRBQjsyNEFCOzAwMjggMDA3MCAwMDI5OzAwMjggMDA3MCAwMDI5OworMjRBQzsyNEFDOzI0QUM7MDAyOCAwMDcxIDAwMjk7MDAyOCAwMDcxIDAwMjk7CisyNEFEOzI0QUQ7MjRBRDswMDI4IDAwNzIgMDAyOTswMDI4IDAwNzIgMDAyOTsKKzI0QUU7MjRBRTsyNEFFOzAwMjggMDA3MyAwMDI5OzAwMjggMDA3MyAwMDI5OworMjRBRjsyNEFGOzI0QUY7MDAyOCAwMDc0IDAwMjk7MDAyOCAwMDc0IDAwMjk7CisyNEIwOzI0QjA7MjRCMDswMDI4IDAwNzUgMDAyOTswMDI4IDAwNzUgMDAyOTsKKzI0QjE7MjRCMTsyNEIxOzAwMjggMDA3NiAwMDI5OzAwMjggMDA3NiAwMDI5OworMjRCMjsyNEIyOzI0QjI7MDAyOCAwMDc3IDAwMjk7MDAyOCAwMDc3IDAwMjk7CisyNEIzOzI0QjM7MjRCMzswMDI4IDAwNzggMDAyOTswMDI4IDAwNzggMDAyOTsKKzI0QjQ7MjRCNDsyNEI0OzAwMjggMDA3OSAwMDI5OzAwMjggMDA3OSAwMDI5OworMjRCNTsyNEI1OzI0QjU7MDAyOCAwMDdBIDAwMjk7MDAyOCAwMDdBIDAwMjk7CisyNEI2OzI0QjY7MjRCNjswMDQxOzAwNDE7CisyNEI3OzI0Qjc7MjRCNzswMDQyOzAwNDI7CisyNEI4OzI0Qjg7MjRCODswMDQzOzAwNDM7CisyNEI5OzI0Qjk7MjRCOTswMDQ0OzAwNDQ7CisyNEJBOzI0QkE7MjRCQTswMDQ1OzAwNDU7CisyNEJCOzI0QkI7MjRCQjswMDQ2OzAwNDY7CisyNEJDOzI0QkM7MjRCQzswMDQ3OzAwNDc7CisyNEJEOzI0QkQ7MjRCRDswMDQ4OzAwNDg7CisyNEJFOzI0QkU7MjRCRTswMDQ5OzAwNDk7CisyNEJGOzI0QkY7MjRCRjswMDRBOzAwNEE7CisyNEMwOzI0QzA7MjRDMDswMDRCOzAwNEI7CisyNEMxOzI0QzE7MjRDMTswMDRDOzAwNEM7CisyNEMyOzI0QzI7MjRDMjswMDREOzAwNEQ7CisyNEMzOzI0QzM7MjRDMzswMDRFOzAwNEU7CisyNEM0OzI0QzQ7MjRDNDswMDRGOzAwNEY7CisyNEM1OzI0QzU7MjRDNTswMDUwOzAwNTA7CisyNEM2OzI0QzY7MjRDNjswMDUxOzAwNTE7CisyNEM3OzI0Qzc7MjRDNzswMDUyOzAwNTI7CisyNEM4OzI0Qzg7MjRDODswMDUzOzAwNTM7CisyNEM5OzI0Qzk7MjRDOTswMDU0OzAwNTQ7CisyNENBOzI0Q0E7MjRDQTswMDU1OzAwNTU7CisyNENCOzI0Q0I7MjRDQjswMDU2OzAwNTY7CisyNENDOzI0Q0M7MjRDQzswMDU3OzAwNTc7CisyNENEOzI0Q0Q7MjRDRDswMDU4OzAwNTg7CisyNENFOzI0Q0U7MjRDRTswMDU5OzAwNTk7CisyNENGOzI0Q0Y7MjRDRjswMDVBOzAwNUE7CisyNEQwOzI0RDA7MjREMDswMDYxOzAwNjE7CisyNEQxOzI0RDE7MjREMTswMDYyOzAwNjI7CisyNEQyOzI0RDI7MjREMjswMDYzOzAwNjM7CisyNEQzOzI0RDM7MjREMzswMDY0OzAwNjQ7CisyNEQ0OzI0RDQ7MjRENDswMDY1OzAwNjU7CisyNEQ1OzI0RDU7MjRENTswMDY2OzAwNjY7CisyNEQ2OzI0RDY7MjRENjswMDY3OzAwNjc7CisyNEQ3OzI0RDc7MjRENzswMDY4OzAwNjg7CisyNEQ4OzI0RDg7MjREODswMDY5OzAwNjk7CisyNEQ5OzI0RDk7MjREOTswMDZBOzAwNkE7CisyNERBOzI0REE7MjREQTswMDZCOzAwNkI7CisyNERCOzI0REI7MjREQjswMDZDOzAwNkM7CisyNERDOzI0REM7MjREQzswMDZEOzAwNkQ7CisyNEREOzI0REQ7MjRERDswMDZFOzAwNkU7CisyNERFOzI0REU7MjRERTswMDZGOzAwNkY7CisyNERGOzI0REY7MjRERjswMDcwOzAwNzA7CisyNEUwOzI0RTA7MjRFMDswMDcxOzAwNzE7CisyNEUxOzI0RTE7MjRFMTswMDcyOzAwNzI7CisyNEUyOzI0RTI7MjRFMjswMDczOzAwNzM7CisyNEUzOzI0RTM7MjRFMzswMDc0OzAwNzQ7CisyNEU0OzI0RTQ7MjRFNDswMDc1OzAwNzU7CisyNEU1OzI0RTU7MjRFNTswMDc2OzAwNzY7CisyNEU2OzI0RTY7MjRFNjswMDc3OzAwNzc7CisyNEU3OzI0RTc7MjRFNzswMDc4OzAwNzg7CisyNEU4OzI0RTg7MjRFODswMDc5OzAwNzk7CisyNEU5OzI0RTk7MjRFOTswMDdBOzAwN0E7CisyNEVBOzI0RUE7MjRFQTswMDMwOzAwMzA7CisyQTBDOzJBMEM7MkEwQzsyMjJCIDIyMkIgMjIyQiAyMjJCOzIyMkIgMjIyQiAyMjJCIDIyMkI7CisyQTc0OzJBNzQ7MkE3NDswMDNBIDAwM0EgMDAzRDswMDNBIDAwM0EgMDAzRDsKKzJBNzU7MkE3NTsyQTc1OzAwM0QgMDAzRDswMDNEIDAwM0Q7CisyQTc2OzJBNzY7MkE3NjswMDNEIDAwM0QgMDAzRDswMDNEIDAwM0QgMDAzRDsKKzJBREM7MkFERCAwMzM4OzJBREQgMDMzODsyQUREIDAzMzg7MkFERCAwMzM4OworMkU5RjsyRTlGOzJFOUY7NkJDRDs2QkNEOworMkVGMzsyRUYzOzJFRjM7OUY5Rjs5RjlGOworMkYwMDsyRjAwOzJGMDA7NEUwMDs0RTAwOworMkYwMTsyRjAxOzJGMDE7NEUyODs0RTI4OworMkYwMjsyRjAyOzJGMDI7NEUzNjs0RTM2OworMkYwMzsyRjAzOzJGMDM7NEUzRjs0RTNGOworMkYwNDsyRjA0OzJGMDQ7NEU1OTs0RTU5OworMkYwNTsyRjA1OzJGMDU7NEU4NTs0RTg1OworMkYwNjsyRjA2OzJGMDY7NEU4Qzs0RThDOworMkYwNzsyRjA3OzJGMDc7NEVBMDs0RUEwOworMkYwODsyRjA4OzJGMDg7NEVCQTs0RUJBOworMkYwOTsyRjA5OzJGMDk7NTEzRjs1MTNGOworMkYwQTsyRjBBOzJGMEE7NTE2NTs1MTY1OworMkYwQjsyRjBCOzJGMEI7NTE2Qjs1MTZCOworMkYwQzsyRjBDOzJGMEM7NTE4Mjs1MTgyOworMkYwRDsyRjBEOzJGMEQ7NTE5Njs1MTk2OworMkYwRTsyRjBFOzJGMEU7NTFBQjs1MUFCOworMkYwRjsyRjBGOzJGMEY7NTFFMDs1MUUwOworMkYxMDsyRjEwOzJGMTA7NTFGNTs1MUY1OworMkYxMTsyRjExOzJGMTE7NTIwMDs1MjAwOworMkYxMjsyRjEyOzJGMTI7NTI5Qjs1MjlCOworMkYxMzsyRjEzOzJGMTM7NTJGOTs1MkY5OworMkYxNDsyRjE0OzJGMTQ7NTMxNTs1MzE1OworMkYxNTsyRjE1OzJGMTU7NTMxQTs1MzFBOworMkYxNjsyRjE2OzJGMTY7NTMzODs1MzM4OworMkYxNzsyRjE3OzJGMTc7NTM0MTs1MzQxOworMkYxODsyRjE4OzJGMTg7NTM1Qzs1MzVDOworMkYxOTsyRjE5OzJGMTk7NTM2OTs1MzY5OworMkYxQTsyRjFBOzJGMUE7NTM4Mjs1MzgyOworMkYxQjsyRjFCOzJGMUI7NTNCNjs1M0I2OworMkYxQzsyRjFDOzJGMUM7NTNDODs1M0M4OworMkYxRDsyRjFEOzJGMUQ7NTNFMzs1M0UzOworMkYxRTsyRjFFOzJGMUU7NTZENzs1NkQ3OworMkYxRjsyRjFGOzJGMUY7NTcxRjs1NzFGOworMkYyMDsyRjIwOzJGMjA7NThFQjs1OEVCOworMkYyMTsyRjIxOzJGMjE7NTkwMjs1OTAyOworMkYyMjsyRjIyOzJGMjI7NTkwQTs1OTBBOworMkYyMzsyRjIzOzJGMjM7NTkxNTs1OTE1OworMkYyNDsyRjI0OzJGMjQ7NTkyNzs1OTI3OworMkYyNTsyRjI1OzJGMjU7NTk3Mzs1OTczOworMkYyNjsyRjI2OzJGMjY7NUI1MDs1QjUwOworMkYyNzsyRjI3OzJGMjc7NUI4MDs1QjgwOworMkYyODsyRjI4OzJGMjg7NUJGODs1QkY4OworMkYyOTsyRjI5OzJGMjk7NUMwRjs1QzBGOworMkYyQTsyRjJBOzJGMkE7NUMyMjs1QzIyOworMkYyQjsyRjJCOzJGMkI7NUMzODs1QzM4OworMkYyQzsyRjJDOzJGMkM7NUM2RTs1QzZFOworMkYyRDsyRjJEOzJGMkQ7NUM3MTs1QzcxOworMkYyRTsyRjJFOzJGMkU7NUREQjs1RERCOworMkYyRjsyRjJGOzJGMkY7NURFNTs1REU1OworMkYzMDsyRjMwOzJGMzA7NURGMTs1REYxOworMkYzMTsyRjMxOzJGMzE7NURGRTs1REZFOworMkYzMjsyRjMyOzJGMzI7NUU3Mjs1RTcyOworMkYzMzsyRjMzOzJGMzM7NUU3QTs1RTdBOworMkYzNDsyRjM0OzJGMzQ7NUU3Rjs1RTdGOworMkYzNTsyRjM1OzJGMzU7NUVGNDs1RUY0OworMkYzNjsyRjM2OzJGMzY7NUVGRTs1RUZFOworMkYzNzsyRjM3OzJGMzc7NUYwQjs1RjBCOworMkYzODsyRjM4OzJGMzg7NUYxMzs1RjEzOworMkYzOTsyRjM5OzJGMzk7NUY1MDs1RjUwOworMkYzQTsyRjNBOzJGM0E7NUY2MTs1RjYxOworMkYzQjsyRjNCOzJGM0I7NUY3Mzs1RjczOworMkYzQzsyRjNDOzJGM0M7NUZDMzs1RkMzOworMkYzRDsyRjNEOzJGM0Q7NjIwODs2MjA4OworMkYzRTsyRjNFOzJGM0U7NjIzNjs2MjM2OworMkYzRjsyRjNGOzJGM0Y7NjI0Qjs2MjRCOworMkY0MDsyRjQwOzJGNDA7NjUyRjs2NTJGOworMkY0MTsyRjQxOzJGNDE7NjUzNDs2NTM0OworMkY0MjsyRjQyOzJGNDI7NjU4Nzs2NTg3OworMkY0MzsyRjQzOzJGNDM7NjU5Nzs2NTk3OworMkY0NDsyRjQ0OzJGNDQ7NjVBNDs2NUE0OworMkY0NTsyRjQ1OzJGNDU7NjVCOTs2NUI5OworMkY0NjsyRjQ2OzJGNDY7NjVFMDs2NUUwOworMkY0NzsyRjQ3OzJGNDc7NjVFNTs2NUU1OworMkY0ODsyRjQ4OzJGNDg7NjZGMDs2NkYwOworMkY0OTsyRjQ5OzJGNDk7NjcwODs2NzA4OworMkY0QTsyRjRBOzJGNEE7NjcyODs2NzI4OworMkY0QjsyRjRCOzJGNEI7NkIyMDs2QjIwOworMkY0QzsyRjRDOzJGNEM7NkI2Mjs2QjYyOworMkY0RDsyRjREOzJGNEQ7NkI3OTs2Qjc5OworMkY0RTsyRjRFOzJGNEU7NkJCMzs2QkIzOworMkY0RjsyRjRGOzJGNEY7NkJDQjs2QkNCOworMkY1MDsyRjUwOzJGNTA7NkJENDs2QkQ0OworMkY1MTsyRjUxOzJGNTE7NkJEQjs2QkRCOworMkY1MjsyRjUyOzJGNTI7NkMwRjs2QzBGOworMkY1MzsyRjUzOzJGNTM7NkMxNDs2QzE0OworMkY1NDsyRjU0OzJGNTQ7NkMzNDs2QzM0OworMkY1NTsyRjU1OzJGNTU7NzA2Qjs3MDZCOworMkY1NjsyRjU2OzJGNTY7NzIyQTs3MjJBOworMkY1NzsyRjU3OzJGNTc7NzIzNjs3MjM2OworMkY1ODsyRjU4OzJGNTg7NzIzQjs3MjNCOworMkY1OTsyRjU5OzJGNTk7NzIzRjs3MjNGOworMkY1QTsyRjVBOzJGNUE7NzI0Nzs3MjQ3OworMkY1QjsyRjVCOzJGNUI7NzI1OTs3MjU5OworMkY1QzsyRjVDOzJGNUM7NzI1Qjs3MjVCOworMkY1RDsyRjVEOzJGNUQ7NzJBQzs3MkFDOworMkY1RTsyRjVFOzJGNUU7NzM4NDs3Mzg0OworMkY1RjsyRjVGOzJGNUY7NzM4OTs3Mzg5OworMkY2MDsyRjYwOzJGNjA7NzREQzs3NERDOworMkY2MTsyRjYxOzJGNjE7NzRFNjs3NEU2OworMkY2MjsyRjYyOzJGNjI7NzUxODs3NTE4OworMkY2MzsyRjYzOzJGNjM7NzUxRjs3NTFGOworMkY2NDsyRjY0OzJGNjQ7NzUyODs3NTI4OworMkY2NTsyRjY1OzJGNjU7NzUzMDs3NTMwOworMkY2NjsyRjY2OzJGNjY7NzU4Qjs3NThCOworMkY2NzsyRjY3OzJGNjc7NzU5Mjs3NTkyOworMkY2ODsyRjY4OzJGNjg7NzY3Njs3Njc2OworMkY2OTsyRjY5OzJGNjk7NzY3RDs3NjdEOworMkY2QTsyRjZBOzJGNkE7NzZBRTs3NkFFOworMkY2QjsyRjZCOzJGNkI7NzZCRjs3NkJGOworMkY2QzsyRjZDOzJGNkM7NzZFRTs3NkVFOworMkY2RDsyRjZEOzJGNkQ7NzdEQjs3N0RCOworMkY2RTsyRjZFOzJGNkU7NzdFMjs3N0UyOworMkY2RjsyRjZGOzJGNkY7NzdGMzs3N0YzOworMkY3MDsyRjcwOzJGNzA7NzkzQTs3OTNBOworMkY3MTsyRjcxOzJGNzE7NzlCODs3OUI4OworMkY3MjsyRjcyOzJGNzI7NzlCRTs3OUJFOworMkY3MzsyRjczOzJGNzM7N0E3NDs3QTc0OworMkY3NDsyRjc0OzJGNzQ7N0FDQjs3QUNCOworMkY3NTsyRjc1OzJGNzU7N0FGOTs3QUY5OworMkY3NjsyRjc2OzJGNzY7N0M3Mzs3QzczOworMkY3NzsyRjc3OzJGNzc7N0NGODs3Q0Y4OworMkY3ODsyRjc4OzJGNzg7N0YzNjs3RjM2OworMkY3OTsyRjc5OzJGNzk7N0Y1MTs3RjUxOworMkY3QTsyRjdBOzJGN0E7N0Y4QTs3RjhBOworMkY3QjsyRjdCOzJGN0I7N0ZCRDs3RkJEOworMkY3QzsyRjdDOzJGN0M7ODAwMTs4MDAxOworMkY3RDsyRjdEOzJGN0Q7ODAwQzs4MDBDOworMkY3RTsyRjdFOzJGN0U7ODAxMjs4MDEyOworMkY3RjsyRjdGOzJGN0Y7ODAzMzs4MDMzOworMkY4MDsyRjgwOzJGODA7ODA3Rjs4MDdGOworMkY4MTsyRjgxOzJGODE7ODA4OTs4MDg5OworMkY4MjsyRjgyOzJGODI7ODFFMzs4MUUzOworMkY4MzsyRjgzOzJGODM7ODFFQTs4MUVBOworMkY4NDsyRjg0OzJGODQ7ODFGMzs4MUYzOworMkY4NTsyRjg1OzJGODU7ODFGQzs4MUZDOworMkY4NjsyRjg2OzJGODY7ODIwQzs4MjBDOworMkY4NzsyRjg3OzJGODc7ODIxQjs4MjFCOworMkY4ODsyRjg4OzJGODg7ODIxRjs4MjFGOworMkY4OTsyRjg5OzJGODk7ODI2RTs4MjZFOworMkY4QTsyRjhBOzJGOEE7ODI3Mjs4MjcyOworMkY4QjsyRjhCOzJGOEI7ODI3ODs4Mjc4OworMkY4QzsyRjhDOzJGOEM7ODY0RDs4NjREOworMkY4RDsyRjhEOzJGOEQ7ODY2Qjs4NjZCOworMkY4RTsyRjhFOzJGOEU7ODg0MDs4ODQwOworMkY4RjsyRjhGOzJGOEY7ODg0Qzs4ODRDOworMkY5MDsyRjkwOzJGOTA7ODg2Mzs4ODYzOworMkY5MTsyRjkxOzJGOTE7ODk3RTs4OTdFOworMkY5MjsyRjkyOzJGOTI7ODk4Qjs4OThCOworMkY5MzsyRjkzOzJGOTM7ODlEMjs4OUQyOworMkY5NDsyRjk0OzJGOTQ7OEEwMDs4QTAwOworMkY5NTsyRjk1OzJGOTU7OEMzNzs4QzM3OworMkY5NjsyRjk2OzJGOTY7OEM0Njs4QzQ2OworMkY5NzsyRjk3OzJGOTc7OEM1NTs4QzU1OworMkY5ODsyRjk4OzJGOTg7OEM3ODs4Qzc4OworMkY5OTsyRjk5OzJGOTk7OEM5RDs4QzlEOworMkY5QTsyRjlBOzJGOUE7OEQ2NDs4RDY0OworMkY5QjsyRjlCOzJGOUI7OEQ3MDs4RDcwOworMkY5QzsyRjlDOzJGOUM7OERCMzs4REIzOworMkY5RDsyRjlEOzJGOUQ7OEVBQjs4RUFCOworMkY5RTsyRjlFOzJGOUU7OEVDQTs4RUNBOworMkY5RjsyRjlGOzJGOUY7OEY5Qjs4RjlCOworMkZBMDsyRkEwOzJGQTA7OEZCMDs4RkIwOworMkZBMTsyRkExOzJGQTE7OEZCNTs4RkI1OworMkZBMjsyRkEyOzJGQTI7OTA5MTs5MDkxOworMkZBMzsyRkEzOzJGQTM7OTE0OTs5MTQ5OworMkZBNDsyRkE0OzJGQTQ7OTFDNjs5MUM2OworMkZBNTsyRkE1OzJGQTU7OTFDQzs5MUNDOworMkZBNjsyRkE2OzJGQTY7OTFEMTs5MUQxOworMkZBNzsyRkE3OzJGQTc7OTU3Nzs5NTc3OworMkZBODsyRkE4OzJGQTg7OTU4MDs5NTgwOworMkZBOTsyRkE5OzJGQTk7OTYxQzs5NjFDOworMkZBQTsyRkFBOzJGQUE7OTZCNjs5NkI2OworMkZBQjsyRkFCOzJGQUI7OTZCOTs5NkI5OworMkZBQzsyRkFDOzJGQUM7OTZFODs5NkU4OworMkZBRDsyRkFEOzJGQUQ7OTc1MTs5NzUxOworMkZBRTsyRkFFOzJGQUU7OTc1RTs5NzVFOworMkZBRjsyRkFGOzJGQUY7OTc2Mjs5NzYyOworMkZCMDsyRkIwOzJGQjA7OTc2OTs5NzY5OworMkZCMTsyRkIxOzJGQjE7OTdDQjs5N0NCOworMkZCMjsyRkIyOzJGQjI7OTdFRDs5N0VEOworMkZCMzsyRkIzOzJGQjM7OTdGMzs5N0YzOworMkZCNDsyRkI0OzJGQjQ7OTgwMTs5ODAxOworMkZCNTsyRkI1OzJGQjU7OThBODs5OEE4OworMkZCNjsyRkI2OzJGQjY7OThEQjs5OERCOworMkZCNzsyRkI3OzJGQjc7OThERjs5OERGOworMkZCODsyRkI4OzJGQjg7OTk5Njs5OTk2OworMkZCOTsyRkI5OzJGQjk7OTk5OTs5OTk5OworMkZCQTsyRkJBOzJGQkE7OTlBQzs5OUFDOworMkZCQjsyRkJCOzJGQkI7OUFBODs5QUE4OworMkZCQzsyRkJDOzJGQkM7OUFEODs5QUQ4OworMkZCRDsyRkJEOzJGQkQ7OUFERjs5QURGOworMkZCRTsyRkJFOzJGQkU7OUIyNTs5QjI1OworMkZCRjsyRkJGOzJGQkY7OUIyRjs5QjJGOworMkZDMDsyRkMwOzJGQzA7OUIzMjs5QjMyOworMkZDMTsyRkMxOzJGQzE7OUIzQzs5QjNDOworMkZDMjsyRkMyOzJGQzI7OUI1QTs5QjVBOworMkZDMzsyRkMzOzJGQzM7OUNFNTs5Q0U1OworMkZDNDsyRkM0OzJGQzQ7OUU3NTs5RTc1OworMkZDNTsyRkM1OzJGQzU7OUU3Rjs5RTdGOworMkZDNjsyRkM2OzJGQzY7OUVBNTs5RUE1OworMkZDNzsyRkM3OzJGQzc7OUVCQjs5RUJCOworMkZDODsyRkM4OzJGQzg7OUVDMzs5RUMzOworMkZDOTsyRkM5OzJGQzk7OUVDRDs5RUNEOworMkZDQTsyRkNBOzJGQ0E7OUVEMTs5RUQxOworMkZDQjsyRkNCOzJGQ0I7OUVGOTs5RUY5OworMkZDQzsyRkNDOzJGQ0M7OUVGRDs5RUZEOworMkZDRDsyRkNEOzJGQ0Q7OUYwRTs5RjBFOworMkZDRTsyRkNFOzJGQ0U7OUYxMzs5RjEzOworMkZDRjsyRkNGOzJGQ0Y7OUYyMDs5RjIwOworMkZEMDsyRkQwOzJGRDA7OUYzQjs5RjNCOworMkZEMTsyRkQxOzJGRDE7OUY0QTs5RjRBOworMkZEMjsyRkQyOzJGRDI7OUY1Mjs5RjUyOworMkZEMzsyRkQzOzJGRDM7OUY4RDs5RjhEOworMkZENDsyRkQ0OzJGRDQ7OUY5Qzs5RjlDOworMkZENTsyRkQ1OzJGRDU7OUZBMDs5RkEwOworMzAwMDszMDAwOzMwMDA7MDAyMDswMDIwOworMzAzNjszMDM2OzMwMzY7MzAxMjszMDEyOworMzAzODszMDM4OzMwMzg7NTM0MTs1MzQxOworMzAzOTszMDM5OzMwMzk7NTM0NDs1MzQ0OworMzAzQTszMDNBOzMwM0E7NTM0NTs1MzQ1OworMzA0QzszMDRDOzMwNEIgMzA5OTszMDRDOzMwNEIgMzA5OTsKKzMwNEU7MzA0RTszMDREIDMwOTk7MzA0RTszMDREIDMwOTk7CiszMDUwOzMwNTA7MzA0RiAzMDk5OzMwNTA7MzA0RiAzMDk5OworMzA1MjszMDUyOzMwNTEgMzA5OTszMDUyOzMwNTEgMzA5OTsKKzMwNTQ7MzA1NDszMDUzIDMwOTk7MzA1NDszMDUzIDMwOTk7CiszMDU2OzMwNTY7MzA1NSAzMDk5OzMwNTY7MzA1NSAzMDk5OworMzA1ODszMDU4OzMwNTcgMzA5OTszMDU4OzMwNTcgMzA5OTsKKzMwNUE7MzA1QTszMDU5IDMwOTk7MzA1QTszMDU5IDMwOTk7CiszMDVDOzMwNUM7MzA1QiAzMDk5OzMwNUM7MzA1QiAzMDk5OworMzA1RTszMDVFOzMwNUQgMzA5OTszMDVFOzMwNUQgMzA5OTsKKzMwNjA7MzA2MDszMDVGIDMwOTk7MzA2MDszMDVGIDMwOTk7CiszMDYyOzMwNjI7MzA2MSAzMDk5OzMwNjI7MzA2MSAzMDk5OworMzA2NTszMDY1OzMwNjQgMzA5OTszMDY1OzMwNjQgMzA5OTsKKzMwNjc7MzA2NzszMDY2IDMwOTk7MzA2NzszMDY2IDMwOTk7CiszMDY5OzMwNjk7MzA2OCAzMDk5OzMwNjk7MzA2OCAzMDk5OworMzA3MDszMDcwOzMwNkYgMzA5OTszMDcwOzMwNkYgMzA5OTsKKzMwNzE7MzA3MTszMDZGIDMwOUE7MzA3MTszMDZGIDMwOUE7CiszMDczOzMwNzM7MzA3MiAzMDk5OzMwNzM7MzA3MiAzMDk5OworMzA3NDszMDc0OzMwNzIgMzA5QTszMDc0OzMwNzIgMzA5QTsKKzMwNzY7MzA3NjszMDc1IDMwOTk7MzA3NjszMDc1IDMwOTk7CiszMDc3OzMwNzc7MzA3NSAzMDlBOzMwNzc7MzA3NSAzMDlBOworMzA3OTszMDc5OzMwNzggMzA5OTszMDc5OzMwNzggMzA5OTsKKzMwN0E7MzA3QTszMDc4IDMwOUE7MzA3QTszMDc4IDMwOUE7CiszMDdDOzMwN0M7MzA3QiAzMDk5OzMwN0M7MzA3QiAzMDk5OworMzA3RDszMDdEOzMwN0IgMzA5QTszMDdEOzMwN0IgMzA5QTsKKzMwOTQ7MzA5NDszMDQ2IDMwOTk7MzA5NDszMDQ2IDMwOTk7CiszMDlCOzMwOUI7MzA5QjswMDIwIDMwOTk7MDAyMCAzMDk5OworMzA5QzszMDlDOzMwOUM7MDAyMCAzMDlBOzAwMjAgMzA5QTsKKzMwOUU7MzA5RTszMDlEIDMwOTk7MzA5RTszMDlEIDMwOTk7CiszMDlGOzMwOUY7MzA5RjszMDg4IDMwOEE7MzA4OCAzMDhBOworMzBBQzszMEFDOzMwQUIgMzA5OTszMEFDOzMwQUIgMzA5OTsKKzMwQUU7MzBBRTszMEFEIDMwOTk7MzBBRTszMEFEIDMwOTk7CiszMEIwOzMwQjA7MzBBRiAzMDk5OzMwQjA7MzBBRiAzMDk5OworMzBCMjszMEIyOzMwQjEgMzA5OTszMEIyOzMwQjEgMzA5OTsKKzMwQjQ7MzBCNDszMEIzIDMwOTk7MzBCNDszMEIzIDMwOTk7CiszMEI2OzMwQjY7MzBCNSAzMDk5OzMwQjY7MzBCNSAzMDk5OworMzBCODszMEI4OzMwQjcgMzA5OTszMEI4OzMwQjcgMzA5OTsKKzMwQkE7MzBCQTszMEI5IDMwOTk7MzBCQTszMEI5IDMwOTk7CiszMEJDOzMwQkM7MzBCQiAzMDk5OzMwQkM7MzBCQiAzMDk5OworMzBCRTszMEJFOzMwQkQgMzA5OTszMEJFOzMwQkQgMzA5OTsKKzMwQzA7MzBDMDszMEJGIDMwOTk7MzBDMDszMEJGIDMwOTk7CiszMEMyOzMwQzI7MzBDMSAzMDk5OzMwQzI7MzBDMSAzMDk5OworMzBDNTszMEM1OzMwQzQgMzA5OTszMEM1OzMwQzQgMzA5OTsKKzMwQzc7MzBDNzszMEM2IDMwOTk7MzBDNzszMEM2IDMwOTk7CiszMEM5OzMwQzk7MzBDOCAzMDk5OzMwQzk7MzBDOCAzMDk5OworMzBEMDszMEQwOzMwQ0YgMzA5OTszMEQwOzMwQ0YgMzA5OTsKKzMwRDE7MzBEMTszMENGIDMwOUE7MzBEMTszMENGIDMwOUE7CiszMEQzOzMwRDM7MzBEMiAzMDk5OzMwRDM7MzBEMiAzMDk5OworMzBENDszMEQ0OzMwRDIgMzA5QTszMEQ0OzMwRDIgMzA5QTsKKzMwRDY7MzBENjszMEQ1IDMwOTk7MzBENjszMEQ1IDMwOTk7CiszMEQ3OzMwRDc7MzBENSAzMDlBOzMwRDc7MzBENSAzMDlBOworMzBEOTszMEQ5OzMwRDggMzA5OTszMEQ5OzMwRDggMzA5OTsKKzMwREE7MzBEQTszMEQ4IDMwOUE7MzBEQTszMEQ4IDMwOUE7CiszMERDOzMwREM7MzBEQiAzMDk5OzMwREM7MzBEQiAzMDk5OworMzBERDszMEREOzMwREIgMzA5QTszMEREOzMwREIgMzA5QTsKKzMwRjQ7MzBGNDszMEE2IDMwOTk7MzBGNDszMEE2IDMwOTk7CiszMEY3OzMwRjc7MzBFRiAzMDk5OzMwRjc7MzBFRiAzMDk5OworMzBGODszMEY4OzMwRjAgMzA5OTszMEY4OzMwRjAgMzA5OTsKKzMwRjk7MzBGOTszMEYxIDMwOTk7MzBGOTszMEYxIDMwOTk7CiszMEZBOzMwRkE7MzBGMiAzMDk5OzMwRkE7MzBGMiAzMDk5OworMzBGRTszMEZFOzMwRkQgMzA5OTszMEZFOzMwRkQgMzA5OTsKKzMwRkY7MzBGRjszMEZGOzMwQjMgMzBDODszMEIzIDMwQzg7CiszMTMxOzMxMzE7MzEzMTsxMTAwOzExMDA7CiszMTMyOzMxMzI7MzEzMjsxMTAxOzExMDE7CiszMTMzOzMxMzM7MzEzMzsxMUFBOzExQUE7CiszMTM0OzMxMzQ7MzEzNDsxMTAyOzExMDI7CiszMTM1OzMxMzU7MzEzNTsxMUFDOzExQUM7CiszMTM2OzMxMzY7MzEzNjsxMUFEOzExQUQ7CiszMTM3OzMxMzc7MzEzNzsxMTAzOzExMDM7CiszMTM4OzMxMzg7MzEzODsxMTA0OzExMDQ7CiszMTM5OzMxMzk7MzEzOTsxMTA1OzExMDU7CiszMTNBOzMxM0E7MzEzQTsxMUIwOzExQjA7CiszMTNCOzMxM0I7MzEzQjsxMUIxOzExQjE7CiszMTNDOzMxM0M7MzEzQzsxMUIyOzExQjI7CiszMTNEOzMxM0Q7MzEzRDsxMUIzOzExQjM7CiszMTNFOzMxM0U7MzEzRTsxMUI0OzExQjQ7CiszMTNGOzMxM0Y7MzEzRjsxMUI1OzExQjU7CiszMTQwOzMxNDA7MzE0MDsxMTFBOzExMUE7CiszMTQxOzMxNDE7MzE0MTsxMTA2OzExMDY7CiszMTQyOzMxNDI7MzE0MjsxMTA3OzExMDc7CiszMTQzOzMxNDM7MzE0MzsxMTA4OzExMDg7CiszMTQ0OzMxNDQ7MzE0NDsxMTIxOzExMjE7CiszMTQ1OzMxNDU7MzE0NTsxMTA5OzExMDk7CiszMTQ2OzMxNDY7MzE0NjsxMTBBOzExMEE7CiszMTQ3OzMxNDc7MzE0NzsxMTBCOzExMEI7CiszMTQ4OzMxNDg7MzE0ODsxMTBDOzExMEM7CiszMTQ5OzMxNDk7MzE0OTsxMTBEOzExMEQ7CiszMTRBOzMxNEE7MzE0QTsxMTBFOzExMEU7CiszMTRCOzMxNEI7MzE0QjsxMTBGOzExMEY7CiszMTRDOzMxNEM7MzE0QzsxMTEwOzExMTA7CiszMTREOzMxNEQ7MzE0RDsxMTExOzExMTE7CiszMTRFOzMxNEU7MzE0RTsxMTEyOzExMTI7CiszMTRGOzMxNEY7MzE0RjsxMTYxOzExNjE7CiszMTUwOzMxNTA7MzE1MDsxMTYyOzExNjI7CiszMTUxOzMxNTE7MzE1MTsxMTYzOzExNjM7CiszMTUyOzMxNTI7MzE1MjsxMTY0OzExNjQ7CiszMTUzOzMxNTM7MzE1MzsxMTY1OzExNjU7CiszMTU0OzMxNTQ7MzE1NDsxMTY2OzExNjY7CiszMTU1OzMxNTU7MzE1NTsxMTY3OzExNjc7CiszMTU2OzMxNTY7MzE1NjsxMTY4OzExNjg7CiszMTU3OzMxNTc7MzE1NzsxMTY5OzExNjk7CiszMTU4OzMxNTg7MzE1ODsxMTZBOzExNkE7CiszMTU5OzMxNTk7MzE1OTsxMTZCOzExNkI7CiszMTVBOzMxNUE7MzE1QTsxMTZDOzExNkM7CiszMTVCOzMxNUI7MzE1QjsxMTZEOzExNkQ7CiszMTVDOzMxNUM7MzE1QzsxMTZFOzExNkU7CiszMTVEOzMxNUQ7MzE1RDsxMTZGOzExNkY7CiszMTVFOzMxNUU7MzE1RTsxMTcwOzExNzA7CiszMTVGOzMxNUY7MzE1RjsxMTcxOzExNzE7CiszMTYwOzMxNjA7MzE2MDsxMTcyOzExNzI7CiszMTYxOzMxNjE7MzE2MTsxMTczOzExNzM7CiszMTYyOzMxNjI7MzE2MjsxMTc0OzExNzQ7CiszMTYzOzMxNjM7MzE2MzsxMTc1OzExNzU7CiszMTY0OzMxNjQ7MzE2NDsxMTYwOzExNjA7CiszMTY1OzMxNjU7MzE2NTsxMTE0OzExMTQ7CiszMTY2OzMxNjY7MzE2NjsxMTE1OzExMTU7CiszMTY3OzMxNjc7MzE2NzsxMUM3OzExQzc7CiszMTY4OzMxNjg7MzE2ODsxMUM4OzExQzg7CiszMTY5OzMxNjk7MzE2OTsxMUNDOzExQ0M7CiszMTZBOzMxNkE7MzE2QTsxMUNFOzExQ0U7CiszMTZCOzMxNkI7MzE2QjsxMUQzOzExRDM7CiszMTZDOzMxNkM7MzE2QzsxMUQ3OzExRDc7CiszMTZEOzMxNkQ7MzE2RDsxMUQ5OzExRDk7CiszMTZFOzMxNkU7MzE2RTsxMTFDOzExMUM7CiszMTZGOzMxNkY7MzE2RjsxMUREOzExREQ7CiszMTcwOzMxNzA7MzE3MDsxMURGOzExREY7CiszMTcxOzMxNzE7MzE3MTsxMTFEOzExMUQ7CiszMTcyOzMxNzI7MzE3MjsxMTFFOzExMUU7CiszMTczOzMxNzM7MzE3MzsxMTIwOzExMjA7CiszMTc0OzMxNzQ7MzE3NDsxMTIyOzExMjI7CiszMTc1OzMxNzU7MzE3NTsxMTIzOzExMjM7CiszMTc2OzMxNzY7MzE3NjsxMTI3OzExMjc7CiszMTc3OzMxNzc7MzE3NzsxMTI5OzExMjk7CiszMTc4OzMxNzg7MzE3ODsxMTJCOzExMkI7CiszMTc5OzMxNzk7MzE3OTsxMTJDOzExMkM7CiszMTdBOzMxN0E7MzE3QTsxMTJEOzExMkQ7CiszMTdCOzMxN0I7MzE3QjsxMTJFOzExMkU7CiszMTdDOzMxN0M7MzE3QzsxMTJGOzExMkY7CiszMTdEOzMxN0Q7MzE3RDsxMTMyOzExMzI7CiszMTdFOzMxN0U7MzE3RTsxMTM2OzExMzY7CiszMTdGOzMxN0Y7MzE3RjsxMTQwOzExNDA7CiszMTgwOzMxODA7MzE4MDsxMTQ3OzExNDc7CiszMTgxOzMxODE7MzE4MTsxMTRDOzExNEM7CiszMTgyOzMxODI7MzE4MjsxMUYxOzExRjE7CiszMTgzOzMxODM7MzE4MzsxMUYyOzExRjI7CiszMTg0OzMxODQ7MzE4NDsxMTU3OzExNTc7CiszMTg1OzMxODU7MzE4NTsxMTU4OzExNTg7CiszMTg2OzMxODY7MzE4NjsxMTU5OzExNTk7CiszMTg3OzMxODc7MzE4NzsxMTg0OzExODQ7CiszMTg4OzMxODg7MzE4ODsxMTg1OzExODU7CiszMTg5OzMxODk7MzE4OTsxMTg4OzExODg7CiszMThBOzMxOEE7MzE4QTsxMTkxOzExOTE7CiszMThCOzMxOEI7MzE4QjsxMTkyOzExOTI7CiszMThDOzMxOEM7MzE4QzsxMTk0OzExOTQ7CiszMThEOzMxOEQ7MzE4RDsxMTlFOzExOUU7CiszMThFOzMxOEU7MzE4RTsxMUExOzExQTE7CiszMTkyOzMxOTI7MzE5Mjs0RTAwOzRFMDA7CiszMTkzOzMxOTM7MzE5Mzs0RThDOzRFOEM7CiszMTk0OzMxOTQ7MzE5NDs0RTA5OzRFMDk7CiszMTk1OzMxOTU7MzE5NTs1NkRCOzU2REI7CiszMTk2OzMxOTY7MzE5Njs0RTBBOzRFMEE7CiszMTk3OzMxOTc7MzE5Nzs0RTJEOzRFMkQ7CiszMTk4OzMxOTg7MzE5ODs0RTBCOzRFMEI7CiszMTk5OzMxOTk7MzE5OTs3NTMyOzc1MzI7CiszMTlBOzMxOUE7MzE5QTs0RTU5OzRFNTk7CiszMTlCOzMxOUI7MzE5Qjs0RTE5OzRFMTk7CiszMTlDOzMxOUM7MzE5Qzs0RTAxOzRFMDE7CiszMTlEOzMxOUQ7MzE5RDs1OTI5OzU5Mjk7CiszMTlFOzMxOUU7MzE5RTs1NzMwOzU3MzA7CiszMTlGOzMxOUY7MzE5Rjs0RUJBOzRFQkE7CiszMjAwOzMyMDA7MzIwMDswMDI4IDExMDAgMDAyOTswMDI4IDExMDAgMDAyOTsKKzMyMDE7MzIwMTszMjAxOzAwMjggMTEwMiAwMDI5OzAwMjggMTEwMiAwMDI5OworMzIwMjszMjAyOzMyMDI7MDAyOCAxMTAzIDAwMjk7MDAyOCAxMTAzIDAwMjk7CiszMjAzOzMyMDM7MzIwMzswMDI4IDExMDUgMDAyOTswMDI4IDExMDUgMDAyOTsKKzMyMDQ7MzIwNDszMjA0OzAwMjggMTEwNiAwMDI5OzAwMjggMTEwNiAwMDI5OworMzIwNTszMjA1OzMyMDU7MDAyOCAxMTA3IDAwMjk7MDAyOCAxMTA3IDAwMjk7CiszMjA2OzMyMDY7MzIwNjswMDI4IDExMDkgMDAyOTswMDI4IDExMDkgMDAyOTsKKzMyMDc7MzIwNzszMjA3OzAwMjggMTEwQiAwMDI5OzAwMjggMTEwQiAwMDI5OworMzIwODszMjA4OzMyMDg7MDAyOCAxMTBDIDAwMjk7MDAyOCAxMTBDIDAwMjk7CiszMjA5OzMyMDk7MzIwOTswMDI4IDExMEUgMDAyOTswMDI4IDExMEUgMDAyOTsKKzMyMEE7MzIwQTszMjBBOzAwMjggMTEwRiAwMDI5OzAwMjggMTEwRiAwMDI5OworMzIwQjszMjBCOzMyMEI7MDAyOCAxMTEwIDAwMjk7MDAyOCAxMTEwIDAwMjk7CiszMjBDOzMyMEM7MzIwQzswMDI4IDExMTEgMDAyOTswMDI4IDExMTEgMDAyOTsKKzMyMEQ7MzIwRDszMjBEOzAwMjggMTExMiAwMDI5OzAwMjggMTExMiAwMDI5OworMzIwRTszMjBFOzMyMEU7MDAyOCBBQzAwIDAwMjk7MDAyOCAxMTAwIDExNjEgMDAyOTsKKzMyMEY7MzIwRjszMjBGOzAwMjggQjA5OCAwMDI5OzAwMjggMTEwMiAxMTYxIDAwMjk7CiszMjEwOzMyMTA7MzIxMDswMDI4IEIyRTQgMDAyOTswMDI4IDExMDMgMTE2MSAwMDI5OworMzIxMTszMjExOzMyMTE7MDAyOCBCNzdDIDAwMjk7MDAyOCAxMTA1IDExNjEgMDAyOTsKKzMyMTI7MzIxMjszMjEyOzAwMjggQjlDOCAwMDI5OzAwMjggMTEwNiAxMTYxIDAwMjk7CiszMjEzOzMyMTM7MzIxMzswMDI4IEJDMTQgMDAyOTswMDI4IDExMDcgMTE2MSAwMDI5OworMzIxNDszMjE0OzMyMTQ7MDAyOCBDMEFDIDAwMjk7MDAyOCAxMTA5IDExNjEgMDAyOTsKKzMyMTU7MzIxNTszMjE1OzAwMjggQzU0NCAwMDI5OzAwMjggMTEwQiAxMTYxIDAwMjk7CiszMjE2OzMyMTY7MzIxNjswMDI4IEM3OTAgMDAyOTswMDI4IDExMEMgMTE2MSAwMDI5OworMzIxNzszMjE3OzMyMTc7MDAyOCBDQzI4IDAwMjk7MDAyOCAxMTBFIDExNjEgMDAyOTsKKzMyMTg7MzIxODszMjE4OzAwMjggQ0U3NCAwMDI5OzAwMjggMTEwRiAxMTYxIDAwMjk7CiszMjE5OzMyMTk7MzIxOTswMDI4IEQwQzAgMDAyOTswMDI4IDExMTAgMTE2MSAwMDI5OworMzIxQTszMjFBOzMyMUE7MDAyOCBEMzBDIDAwMjk7MDAyOCAxMTExIDExNjEgMDAyOTsKKzMyMUI7MzIxQjszMjFCOzAwMjggRDU1OCAwMDI5OzAwMjggMTExMiAxMTYxIDAwMjk7CiszMjFDOzMyMUM7MzIxQzswMDI4IEM4RkMgMDAyOTswMDI4IDExMEMgMTE2RSAwMDI5OworMzIyMDszMjIwOzMyMjA7MDAyOCA0RTAwIDAwMjk7MDAyOCA0RTAwIDAwMjk7CiszMjIxOzMyMjE7MzIyMTswMDI4IDRFOEMgMDAyOTswMDI4IDRFOEMgMDAyOTsKKzMyMjI7MzIyMjszMjIyOzAwMjggNEUwOSAwMDI5OzAwMjggNEUwOSAwMDI5OworMzIyMzszMjIzOzMyMjM7MDAyOCA1NkRCIDAwMjk7MDAyOCA1NkRCIDAwMjk7CiszMjI0OzMyMjQ7MzIyNDswMDI4IDRFOTQgMDAyOTswMDI4IDRFOTQgMDAyOTsKKzMyMjU7MzIyNTszMjI1OzAwMjggNTE2RCAwMDI5OzAwMjggNTE2RCAwMDI5OworMzIyNjszMjI2OzMyMjY7MDAyOCA0RTAzIDAwMjk7MDAyOCA0RTAzIDAwMjk7CiszMjI3OzMyMjc7MzIyNzswMDI4IDUxNkIgMDAyOTswMDI4IDUxNkIgMDAyOTsKKzMyMjg7MzIyODszMjI4OzAwMjggNEU1RCAwMDI5OzAwMjggNEU1RCAwMDI5OworMzIyOTszMjI5OzMyMjk7MDAyOCA1MzQxIDAwMjk7MDAyOCA1MzQxIDAwMjk7CiszMjJBOzMyMkE7MzIyQTswMDI4IDY3MDggMDAyOTswMDI4IDY3MDggMDAyOTsKKzMyMkI7MzIyQjszMjJCOzAwMjggNzA2QiAwMDI5OzAwMjggNzA2QiAwMDI5OworMzIyQzszMjJDOzMyMkM7MDAyOCA2QzM0IDAwMjk7MDAyOCA2QzM0IDAwMjk7CiszMjJEOzMyMkQ7MzIyRDswMDI4IDY3MjggMDAyOTswMDI4IDY3MjggMDAyOTsKKzMyMkU7MzIyRTszMjJFOzAwMjggOTFEMSAwMDI5OzAwMjggOTFEMSAwMDI5OworMzIyRjszMjJGOzMyMkY7MDAyOCA1NzFGIDAwMjk7MDAyOCA1NzFGIDAwMjk7CiszMjMwOzMyMzA7MzIzMDswMDI4IDY1RTUgMDAyOTswMDI4IDY1RTUgMDAyOTsKKzMyMzE7MzIzMTszMjMxOzAwMjggNjgyQSAwMDI5OzAwMjggNjgyQSAwMDI5OworMzIzMjszMjMyOzMyMzI7MDAyOCA2NzA5IDAwMjk7MDAyOCA2NzA5IDAwMjk7CiszMjMzOzMyMzM7MzIzMzswMDI4IDc5M0UgMDAyOTswMDI4IDc5M0UgMDAyOTsKKzMyMzQ7MzIzNDszMjM0OzAwMjggNTQwRCAwMDI5OzAwMjggNTQwRCAwMDI5OworMzIzNTszMjM1OzMyMzU7MDAyOCA3Mjc5IDAwMjk7MDAyOCA3Mjc5IDAwMjk7CiszMjM2OzMyMzY7MzIzNjswMDI4IDhDQTEgMDAyOTswMDI4IDhDQTEgMDAyOTsKKzMyMzc7MzIzNzszMjM3OzAwMjggNzk1RCAwMDI5OzAwMjggNzk1RCAwMDI5OworMzIzODszMjM4OzMyMzg7MDAyOCA1MkI0IDAwMjk7MDAyOCA1MkI0IDAwMjk7CiszMjM5OzMyMzk7MzIzOTswMDI4IDRFRTMgMDAyOTswMDI4IDRFRTMgMDAyOTsKKzMyM0E7MzIzQTszMjNBOzAwMjggNTQ3QyAwMDI5OzAwMjggNTQ3QyAwMDI5OworMzIzQjszMjNCOzMyM0I7MDAyOCA1QjY2IDAwMjk7MDAyOCA1QjY2IDAwMjk7CiszMjNDOzMyM0M7MzIzQzswMDI4IDc2RTMgMDAyOTswMDI4IDc2RTMgMDAyOTsKKzMyM0Q7MzIzRDszMjNEOzAwMjggNEYwMSAwMDI5OzAwMjggNEYwMSAwMDI5OworMzIzRTszMjNFOzMyM0U7MDAyOCA4Q0M3IDAwMjk7MDAyOCA4Q0M3IDAwMjk7CiszMjNGOzMyM0Y7MzIzRjswMDI4IDUzNTQgMDAyOTswMDI4IDUzNTQgMDAyOTsKKzMyNDA7MzI0MDszMjQwOzAwMjggNzk2RCAwMDI5OzAwMjggNzk2RCAwMDI5OworMzI0MTszMjQxOzMyNDE7MDAyOCA0RjExIDAwMjk7MDAyOCA0RjExIDAwMjk7CiszMjQyOzMyNDI7MzI0MjswMDI4IDgxRUEgMDAyOTswMDI4IDgxRUEgMDAyOTsKKzMyNDM7MzI0MzszMjQzOzAwMjggODFGMyAwMDI5OzAwMjggODFGMyAwMDI5OworMzI1MTszMjUxOzMyNTE7MDAzMiAwMDMxOzAwMzIgMDAzMTsKKzMyNTI7MzI1MjszMjUyOzAwMzIgMDAzMjswMDMyIDAwMzI7CiszMjUzOzMyNTM7MzI1MzswMDMyIDAwMzM7MDAzMiAwMDMzOworMzI1NDszMjU0OzMyNTQ7MDAzMiAwMDM0OzAwMzIgMDAzNDsKKzMyNTU7MzI1NTszMjU1OzAwMzIgMDAzNTswMDMyIDAwMzU7CiszMjU2OzMyNTY7MzI1NjswMDMyIDAwMzY7MDAzMiAwMDM2OworMzI1NzszMjU3OzMyNTc7MDAzMiAwMDM3OzAwMzIgMDAzNzsKKzMyNTg7MzI1ODszMjU4OzAwMzIgMDAzODswMDMyIDAwMzg7CiszMjU5OzMyNTk7MzI1OTswMDMyIDAwMzk7MDAzMiAwMDM5OworMzI1QTszMjVBOzMyNUE7MDAzMyAwMDMwOzAwMzMgMDAzMDsKKzMyNUI7MzI1QjszMjVCOzAwMzMgMDAzMTswMDMzIDAwMzE7CiszMjVDOzMyNUM7MzI1QzswMDMzIDAwMzI7MDAzMyAwMDMyOworMzI1RDszMjVEOzMyNUQ7MDAzMyAwMDMzOzAwMzMgMDAzMzsKKzMyNUU7MzI1RTszMjVFOzAwMzMgMDAzNDswMDMzIDAwMzQ7CiszMjVGOzMyNUY7MzI1RjswMDMzIDAwMzU7MDAzMyAwMDM1OworMzI2MDszMjYwOzMyNjA7MTEwMDsxMTAwOworMzI2MTszMjYxOzMyNjE7MTEwMjsxMTAyOworMzI2MjszMjYyOzMyNjI7MTEwMzsxMTAzOworMzI2MzszMjYzOzMyNjM7MTEwNTsxMTA1OworMzI2NDszMjY0OzMyNjQ7MTEwNjsxMTA2OworMzI2NTszMjY1OzMyNjU7MTEwNzsxMTA3OworMzI2NjszMjY2OzMyNjY7MTEwOTsxMTA5OworMzI2NzszMjY3OzMyNjc7MTEwQjsxMTBCOworMzI2ODszMjY4OzMyNjg7MTEwQzsxMTBDOworMzI2OTszMjY5OzMyNjk7MTEwRTsxMTBFOworMzI2QTszMjZBOzMyNkE7MTEwRjsxMTBGOworMzI2QjszMjZCOzMyNkI7MTExMDsxMTEwOworMzI2QzszMjZDOzMyNkM7MTExMTsxMTExOworMzI2RDszMjZEOzMyNkQ7MTExMjsxMTEyOworMzI2RTszMjZFOzMyNkU7QUMwMDsxMTAwIDExNjE7CiszMjZGOzMyNkY7MzI2RjtCMDk4OzExMDIgMTE2MTsKKzMyNzA7MzI3MDszMjcwO0IyRTQ7MTEwMyAxMTYxOworMzI3MTszMjcxOzMyNzE7Qjc3QzsxMTA1IDExNjE7CiszMjcyOzMyNzI7MzI3MjtCOUM4OzExMDYgMTE2MTsKKzMyNzM7MzI3MzszMjczO0JDMTQ7MTEwNyAxMTYxOworMzI3NDszMjc0OzMyNzQ7QzBBQzsxMTA5IDExNjE7CiszMjc1OzMyNzU7MzI3NTtDNTQ0OzExMEIgMTE2MTsKKzMyNzY7MzI3NjszMjc2O0M3OTA7MTEwQyAxMTYxOworMzI3NzszMjc3OzMyNzc7Q0MyODsxMTBFIDExNjE7CiszMjc4OzMyNzg7MzI3ODtDRTc0OzExMEYgMTE2MTsKKzMyNzk7MzI3OTszMjc5O0QwQzA7MTExMCAxMTYxOworMzI3QTszMjdBOzMyN0E7RDMwQzsxMTExIDExNjE7CiszMjdCOzMyN0I7MzI3QjtENTU4OzExMTIgMTE2MTsKKzMyODA7MzI4MDszMjgwOzRFMDA7NEUwMDsKKzMyODE7MzI4MTszMjgxOzRFOEM7NEU4QzsKKzMyODI7MzI4MjszMjgyOzRFMDk7NEUwOTsKKzMyODM7MzI4MzszMjgzOzU2REI7NTZEQjsKKzMyODQ7MzI4NDszMjg0OzRFOTQ7NEU5NDsKKzMyODU7MzI4NTszMjg1OzUxNkQ7NTE2RDsKKzMyODY7MzI4NjszMjg2OzRFMDM7NEUwMzsKKzMyODc7MzI4NzszMjg3OzUxNkI7NTE2QjsKKzMyODg7MzI4ODszMjg4OzRFNUQ7NEU1RDsKKzMyODk7MzI4OTszMjg5OzUzNDE7NTM0MTsKKzMyOEE7MzI4QTszMjhBOzY3MDg7NjcwODsKKzMyOEI7MzI4QjszMjhCOzcwNkI7NzA2QjsKKzMyOEM7MzI4QzszMjhDOzZDMzQ7NkMzNDsKKzMyOEQ7MzI4RDszMjhEOzY3Mjg7NjcyODsKKzMyOEU7MzI4RTszMjhFOzkxRDE7OTFEMTsKKzMyOEY7MzI4RjszMjhGOzU3MUY7NTcxRjsKKzMyOTA7MzI5MDszMjkwOzY1RTU7NjVFNTsKKzMyOTE7MzI5MTszMjkxOzY4MkE7NjgyQTsKKzMyOTI7MzI5MjszMjkyOzY3MDk7NjcwOTsKKzMyOTM7MzI5MzszMjkzOzc5M0U7NzkzRTsKKzMyOTQ7MzI5NDszMjk0OzU0MEQ7NTQwRDsKKzMyOTU7MzI5NTszMjk1OzcyNzk7NzI3OTsKKzMyOTY7MzI5NjszMjk2OzhDQTE7OENBMTsKKzMyOTc7MzI5NzszMjk3Ozc5NUQ7Nzk1RDsKKzMyOTg7MzI5ODszMjk4OzUyQjQ7NTJCNDsKKzMyOTk7MzI5OTszMjk5Ozc5RDg7NzlEODsKKzMyOUE7MzI5QTszMjlBOzc1Mzc7NzUzNzsKKzMyOUI7MzI5QjszMjlCOzU5NzM7NTk3MzsKKzMyOUM7MzI5QzszMjlDOzkwNjk7OTA2OTsKKzMyOUQ7MzI5RDszMjlEOzUxMkE7NTEyQTsKKzMyOUU7MzI5RTszMjlFOzUzNzA7NTM3MDsKKzMyOUY7MzI5RjszMjlGOzZDRTg7NkNFODsKKzMyQTA7MzJBMDszMkEwOzk4MDU7OTgwNTsKKzMyQTE7MzJBMTszMkExOzRGMTE7NEYxMTsKKzMyQTI7MzJBMjszMkEyOzUxOTk7NTE5OTsKKzMyQTM7MzJBMzszMkEzOzZCNjM7NkI2MzsKKzMyQTQ7MzJBNDszMkE0OzRFMEE7NEUwQTsKKzMyQTU7MzJBNTszMkE1OzRFMkQ7NEUyRDsKKzMyQTY7MzJBNjszMkE2OzRFMEI7NEUwQjsKKzMyQTc7MzJBNzszMkE3OzVERTY7NURFNjsKKzMyQTg7MzJBODszMkE4OzUzRjM7NTNGMzsKKzMyQTk7MzJBOTszMkE5OzUzM0I7NTMzQjsKKzMyQUE7MzJBQTszMkFBOzVCOTc7NUI5NzsKKzMyQUI7MzJBQjszMkFCOzVCNjY7NUI2NjsKKzMyQUM7MzJBQzszMkFDOzc2RTM7NzZFMzsKKzMyQUQ7MzJBRDszMkFEOzRGMDE7NEYwMTsKKzMyQUU7MzJBRTszMkFFOzhDQzc7OENDNzsKKzMyQUY7MzJBRjszMkFGOzUzNTQ7NTM1NDsKKzMyQjA7MzJCMDszMkIwOzU5MUM7NTkxQzsKKzMyQjE7MzJCMTszMkIxOzAwMzMgMDAzNjswMDMzIDAwMzY7CiszMkIyOzMyQjI7MzJCMjswMDMzIDAwMzc7MDAzMyAwMDM3OworMzJCMzszMkIzOzMyQjM7MDAzMyAwMDM4OzAwMzMgMDAzODsKKzMyQjQ7MzJCNDszMkI0OzAwMzMgMDAzOTswMDMzIDAwMzk7CiszMkI1OzMyQjU7MzJCNTswMDM0IDAwMzA7MDAzNCAwMDMwOworMzJCNjszMkI2OzMyQjY7MDAzNCAwMDMxOzAwMzQgMDAzMTsKKzMyQjc7MzJCNzszMkI3OzAwMzQgMDAzMjswMDM0IDAwMzI7CiszMkI4OzMyQjg7MzJCODswMDM0IDAwMzM7MDAzNCAwMDMzOworMzJCOTszMkI5OzMyQjk7MDAzNCAwMDM0OzAwMzQgMDAzNDsKKzMyQkE7MzJCQTszMkJBOzAwMzQgMDAzNTswMDM0IDAwMzU7CiszMkJCOzMyQkI7MzJCQjswMDM0IDAwMzY7MDAzNCAwMDM2OworMzJCQzszMkJDOzMyQkM7MDAzNCAwMDM3OzAwMzQgMDAzNzsKKzMyQkQ7MzJCRDszMkJEOzAwMzQgMDAzODswMDM0IDAwMzg7CiszMkJFOzMyQkU7MzJCRTswMDM0IDAwMzk7MDAzNCAwMDM5OworMzJCRjszMkJGOzMyQkY7MDAzNSAwMDMwOzAwMzUgMDAzMDsKKzMyQzA7MzJDMDszMkMwOzAwMzEgNjcwODswMDMxIDY3MDg7CiszMkMxOzMyQzE7MzJDMTswMDMyIDY3MDg7MDAzMiA2NzA4OworMzJDMjszMkMyOzMyQzI7MDAzMyA2NzA4OzAwMzMgNjcwODsKKzMyQzM7MzJDMzszMkMzOzAwMzQgNjcwODswMDM0IDY3MDg7CiszMkM0OzMyQzQ7MzJDNDswMDM1IDY3MDg7MDAzNSA2NzA4OworMzJDNTszMkM1OzMyQzU7MDAzNiA2NzA4OzAwMzYgNjcwODsKKzMyQzY7MzJDNjszMkM2OzAwMzcgNjcwODswMDM3IDY3MDg7CiszMkM3OzMyQzc7MzJDNzswMDM4IDY3MDg7MDAzOCA2NzA4OworMzJDODszMkM4OzMyQzg7MDAzOSA2NzA4OzAwMzkgNjcwODsKKzMyQzk7MzJDOTszMkM5OzAwMzEgMDAzMCA2NzA4OzAwMzEgMDAzMCA2NzA4OworMzJDQTszMkNBOzMyQ0E7MDAzMSAwMDMxIDY3MDg7MDAzMSAwMDMxIDY3MDg7CiszMkNCOzMyQ0I7MzJDQjswMDMxIDAwMzIgNjcwODswMDMxIDAwMzIgNjcwODsKKzMyRDA7MzJEMDszMkQwOzMwQTI7MzBBMjsKKzMyRDE7MzJEMTszMkQxOzMwQTQ7MzBBNDsKKzMyRDI7MzJEMjszMkQyOzMwQTY7MzBBNjsKKzMyRDM7MzJEMzszMkQzOzMwQTg7MzBBODsKKzMyRDQ7MzJENDszMkQ0OzMwQUE7MzBBQTsKKzMyRDU7MzJENTszMkQ1OzMwQUI7MzBBQjsKKzMyRDY7MzJENjszMkQ2OzMwQUQ7MzBBRDsKKzMyRDc7MzJENzszMkQ3OzMwQUY7MzBBRjsKKzMyRDg7MzJEODszMkQ4OzMwQjE7MzBCMTsKKzMyRDk7MzJEOTszMkQ5OzMwQjM7MzBCMzsKKzMyREE7MzJEQTszMkRBOzMwQjU7MzBCNTsKKzMyREI7MzJEQjszMkRCOzMwQjc7MzBCNzsKKzMyREM7MzJEQzszMkRDOzMwQjk7MzBCOTsKKzMyREQ7MzJERDszMkREOzMwQkI7MzBCQjsKKzMyREU7MzJERTszMkRFOzMwQkQ7MzBCRDsKKzMyREY7MzJERjszMkRGOzMwQkY7MzBCRjsKKzMyRTA7MzJFMDszMkUwOzMwQzE7MzBDMTsKKzMyRTE7MzJFMTszMkUxOzMwQzQ7MzBDNDsKKzMyRTI7MzJFMjszMkUyOzMwQzY7MzBDNjsKKzMyRTM7MzJFMzszMkUzOzMwQzg7MzBDODsKKzMyRTQ7MzJFNDszMkU0OzMwQ0E7MzBDQTsKKzMyRTU7MzJFNTszMkU1OzMwQ0I7MzBDQjsKKzMyRTY7MzJFNjszMkU2OzMwQ0M7MzBDQzsKKzMyRTc7MzJFNzszMkU3OzMwQ0Q7MzBDRDsKKzMyRTg7MzJFODszMkU4OzMwQ0U7MzBDRTsKKzMyRTk7MzJFOTszMkU5OzMwQ0Y7MzBDRjsKKzMyRUE7MzJFQTszMkVBOzMwRDI7MzBEMjsKKzMyRUI7MzJFQjszMkVCOzMwRDU7MzBENTsKKzMyRUM7MzJFQzszMkVDOzMwRDg7MzBEODsKKzMyRUQ7MzJFRDszMkVEOzMwREI7MzBEQjsKKzMyRUU7MzJFRTszMkVFOzMwREU7MzBERTsKKzMyRUY7MzJFRjszMkVGOzMwREY7MzBERjsKKzMyRjA7MzJGMDszMkYwOzMwRTA7MzBFMDsKKzMyRjE7MzJGMTszMkYxOzMwRTE7MzBFMTsKKzMyRjI7MzJGMjszMkYyOzMwRTI7MzBFMjsKKzMyRjM7MzJGMzszMkYzOzMwRTQ7MzBFNDsKKzMyRjQ7MzJGNDszMkY0OzMwRTY7MzBFNjsKKzMyRjU7MzJGNTszMkY1OzMwRTg7MzBFODsKKzMyRjY7MzJGNjszMkY2OzMwRTk7MzBFOTsKKzMyRjc7MzJGNzszMkY3OzMwRUE7MzBFQTsKKzMyRjg7MzJGODszMkY4OzMwRUI7MzBFQjsKKzMyRjk7MzJGOTszMkY5OzMwRUM7MzBFQzsKKzMyRkE7MzJGQTszMkZBOzMwRUQ7MzBFRDsKKzMyRkI7MzJGQjszMkZCOzMwRUY7MzBFRjsKKzMyRkM7MzJGQzszMkZDOzMwRjA7MzBGMDsKKzMyRkQ7MzJGRDszMkZEOzMwRjE7MzBGMTsKKzMyRkU7MzJGRTszMkZFOzMwRjI7MzBGMjsKKzMzMDA7MzMwMDszMzAwOzMwQTIgMzBEMSAzMEZDIDMwQzg7MzBBMiAzMENGIDMwOUEgMzBGQyAzMEM4OworMzMwMTszMzAxOzMzMDE7MzBBMiAzMEVCIDMwRDUgMzBBMTszMEEyIDMwRUIgMzBENSAzMEExOworMzMwMjszMzAyOzMzMDI7MzBBMiAzMEYzIDMwREEgMzBBMjszMEEyIDMwRjMgMzBEOCAzMDlBIDMwQTI7CiszMzAzOzMzMDM7MzMwMzszMEEyIDMwRkMgMzBFQjszMEEyIDMwRkMgMzBFQjsKKzMzMDQ7MzMwNDszMzA0OzMwQTQgMzBDQiAzMEYzIDMwQjA7MzBBNCAzMENCIDMwRjMgMzBBRiAzMDk5OworMzMwNTszMzA1OzMzMDU7MzBBNCAzMEYzIDMwQzE7MzBBNCAzMEYzIDMwQzE7CiszMzA2OzMzMDY7MzMwNjszMEE2IDMwQTkgMzBGMzszMEE2IDMwQTkgMzBGMzsKKzMzMDc7MzMwNzszMzA3OzMwQTggMzBCOSAzMEFGIDMwRkMgMzBDOTszMEE4IDMwQjkgMzBBRiAzMEZDIDMwQzggMzA5OTsKKzMzMDg7MzMwODszMzA4OzMwQTggMzBGQyAzMEFCIDMwRkM7MzBBOCAzMEZDIDMwQUIgMzBGQzsKKzMzMDk7MzMwOTszMzA5OzMwQUEgMzBGMyAzMEI5OzMwQUEgMzBGMyAzMEI5OworMzMwQTszMzBBOzMzMEE7MzBBQSAzMEZDIDMwRTA7MzBBQSAzMEZDIDMwRTA7CiszMzBCOzMzMEI7MzMwQjszMEFCIDMwQTQgMzBFQTszMEFCIDMwQTQgMzBFQTsKKzMzMEM7MzMwQzszMzBDOzMwQUIgMzBFOSAzMEMzIDMwQzg7MzBBQiAzMEU5IDMwQzMgMzBDODsKKzMzMEQ7MzMwRDszMzBEOzMwQUIgMzBFRCAzMEVBIDMwRkM7MzBBQiAzMEVEIDMwRUEgMzBGQzsKKzMzMEU7MzMwRTszMzBFOzMwQUMgMzBFRCAzMEYzOzMwQUIgMzA5OSAzMEVEIDMwRjM7CiszMzBGOzMzMEY7MzMwRjszMEFDIDMwRjMgMzBERTszMEFCIDMwOTkgMzBGMyAzMERFOworMzMxMDszMzEwOzMzMTA7MzBBRSAzMEFDOzMwQUQgMzA5OSAzMEFCIDMwOTk7CiszMzExOzMzMTE7MzMxMTszMEFFIDMwQ0IgMzBGQzszMEFEIDMwOTkgMzBDQiAzMEZDOworMzMxMjszMzEyOzMzMTI7MzBBRCAzMEU1IDMwRUEgMzBGQzszMEFEIDMwRTUgMzBFQSAzMEZDOworMzMxMzszMzEzOzMzMTM7MzBBRSAzMEVCIDMwQzAgMzBGQzszMEFEIDMwOTkgMzBFQiAzMEJGIDMwOTkgMzBGQzsKKzMzMTQ7MzMxNDszMzE0OzMwQUQgMzBFRDszMEFEIDMwRUQ7CiszMzE1OzMzMTU7MzMxNTszMEFEIDMwRUQgMzBCMCAzMEU5IDMwRTA7MzBBRCAzMEVEIDMwQUYgMzA5OSAzMEU5IDMwRTA7CiszMzE2OzMzMTY7MzMxNjszMEFEIDMwRUQgMzBFMSAzMEZDIDMwQzggMzBFQjszMEFEIDMwRUQgMzBFMSAzMEZDIDMwQzggMzBFQjsKKzMzMTc7MzMxNzszMzE3OzMwQUQgMzBFRCAzMEVGIDMwQzMgMzBDODszMEFEIDMwRUQgMzBFRiAzMEMzIDMwQzg7CiszMzE4OzMzMTg7MzMxODszMEIwIDMwRTkgMzBFMDszMEFGIDMwOTkgMzBFOSAzMEUwOworMzMxOTszMzE5OzMzMTk7MzBCMCAzMEU5IDMwRTAgMzBDOCAzMEYzOzMwQUYgMzA5OSAzMEU5IDMwRTAgMzBDOCAzMEYzOworMzMxQTszMzFBOzMzMUE7MzBBRiAzMEVCIDMwQkMgMzBBNCAzMEVEOzMwQUYgMzBFQiAzMEJCIDMwOTkgMzBBNCAzMEVEOworMzMxQjszMzFCOzMzMUI7MzBBRiAzMEVEIDMwRkMgMzBDRDszMEFGIDMwRUQgMzBGQyAzMENEOworMzMxQzszMzFDOzMzMUM7MzBCMSAzMEZDIDMwQjk7MzBCMSAzMEZDIDMwQjk7CiszMzFEOzMzMUQ7MzMxRDszMEIzIDMwRUIgMzBDQTszMEIzIDMwRUIgMzBDQTsKKzMzMUU7MzMxRTszMzFFOzMwQjMgMzBGQyAzMEREOzMwQjMgMzBGQyAzMERCIDMwOUE7CiszMzFGOzMzMUY7MzMxRjszMEI1IDMwQTQgMzBBRiAzMEVCOzMwQjUgMzBBNCAzMEFGIDMwRUI7CiszMzIwOzMzMjA7MzMyMDszMEI1IDMwRjMgMzBDMSAzMEZDIDMwRTA7MzBCNSAzMEYzIDMwQzEgMzBGQyAzMEUwOworMzMyMTszMzIxOzMzMjE7MzBCNyAzMEVBIDMwRjMgMzBCMDszMEI3IDMwRUEgMzBGMyAzMEFGIDMwOTk7CiszMzIyOzMzMjI7MzMyMjszMEJCIDMwRjMgMzBDMTszMEJCIDMwRjMgMzBDMTsKKzMzMjM7MzMyMzszMzIzOzMwQkIgMzBGMyAzMEM4OzMwQkIgMzBGMyAzMEM4OworMzMyNDszMzI0OzMzMjQ7MzBDMCAzMEZDIDMwQjk7MzBCRiAzMDk5IDMwRkMgMzBCOTsKKzMzMjU7MzMyNTszMzI1OzMwQzcgMzBCNzszMEM2IDMwOTkgMzBCNzsKKzMzMjY7MzMyNjszMzI2OzMwQzkgMzBFQjszMEM4IDMwOTkgMzBFQjsKKzMzMjc7MzMyNzszMzI3OzMwQzggMzBGMzszMEM4IDMwRjM7CiszMzI4OzMzMjg7MzMyODszMENBIDMwQ0U7MzBDQSAzMENFOworMzMyOTszMzI5OzMzMjk7MzBDRSAzMEMzIDMwQzg7MzBDRSAzMEMzIDMwQzg7CiszMzJBOzMzMkE7MzMyQTszMENGIDMwQTQgMzBDNDszMENGIDMwQTQgMzBDNDsKKzMzMkI7MzMyQjszMzJCOzMwRDEgMzBGQyAzMEJCIDMwRjMgMzBDODszMENGIDMwOUEgMzBGQyAzMEJCIDMwRjMgMzBDODsKKzMzMkM7MzMyQzszMzJDOzMwRDEgMzBGQyAzMEM0OzMwQ0YgMzA5QSAzMEZDIDMwQzQ7CiszMzJEOzMzMkQ7MzMyRDszMEQwIDMwRkMgMzBFQyAzMEVCOzMwQ0YgMzA5OSAzMEZDIDMwRUMgMzBFQjsKKzMzMkU7MzMyRTszMzJFOzMwRDQgMzBBMiAzMEI5IDMwQzggMzBFQjszMEQyIDMwOUEgMzBBMiAzMEI5IDMwQzggMzBFQjsKKzMzMkY7MzMyRjszMzJGOzMwRDQgMzBBRiAzMEVCOzMwRDIgMzA5QSAzMEFGIDMwRUI7CiszMzMwOzMzMzA7MzMzMDszMEQ0IDMwQjM7MzBEMiAzMDlBIDMwQjM7CiszMzMxOzMzMzE7MzMzMTszMEQzIDMwRUI7MzBEMiAzMDk5IDMwRUI7CiszMzMyOzMzMzI7MzMzMjszMEQ1IDMwQTEgMzBFOSAzMEMzIDMwQzk7MzBENSAzMEExIDMwRTkgMzBDMyAzMEM4IDMwOTk7CiszMzMzOzMzMzM7MzMzMzszMEQ1IDMwQTMgMzBGQyAzMEM4OzMwRDUgMzBBMyAzMEZDIDMwQzg7CiszMzM0OzMzMzQ7MzMzNDszMEQ2IDMwQzMgMzBCNyAzMEE3IDMwRUI7MzBENSAzMDk5IDMwQzMgMzBCNyAzMEE3IDMwRUI7CiszMzM1OzMzMzU7MzMzNTszMEQ1IDMwRTkgMzBGMzszMEQ1IDMwRTkgMzBGMzsKKzMzMzY7MzMzNjszMzM2OzMwRDggMzBBRiAzMEJGIDMwRkMgMzBFQjszMEQ4IDMwQUYgMzBCRiAzMEZDIDMwRUI7CiszMzM3OzMzMzc7MzMzNzszMERBIDMwQkQ7MzBEOCAzMDlBIDMwQkQ7CiszMzM4OzMzMzg7MzMzODszMERBIDMwQ0IgMzBEMjszMEQ4IDMwOUEgMzBDQiAzMEQyOworMzMzOTszMzM5OzMzMzk7MzBEOCAzMEVCIDMwQzQ7MzBEOCAzMEVCIDMwQzQ7CiszMzNBOzMzM0E7MzMzQTszMERBIDMwRjMgMzBCOTszMEQ4IDMwOUEgMzBGMyAzMEI5OworMzMzQjszMzNCOzMzM0I7MzBEQSAzMEZDIDMwQjg7MzBEOCAzMDlBIDMwRkMgMzBCNyAzMDk5OworMzMzQzszMzNDOzMzM0M7MzBEOSAzMEZDIDMwQkY7MzBEOCAzMDk5IDMwRkMgMzBCRjsKKzMzM0Q7MzMzRDszMzNEOzMwREQgMzBBNCAzMEYzIDMwQzg7MzBEQiAzMDlBIDMwQTQgMzBGMyAzMEM4OworMzMzRTszMzNFOzMzM0U7MzBEQyAzMEVCIDMwQzg7MzBEQiAzMDk5IDMwRUIgMzBDODsKKzMzM0Y7MzMzRjszMzNGOzMwREIgMzBGMzszMERCIDMwRjM7CiszMzQwOzMzNDA7MzM0MDszMEREIDMwRjMgMzBDOTszMERCIDMwOUEgMzBGMyAzMEM4IDMwOTk7CiszMzQxOzMzNDE7MzM0MTszMERCIDMwRkMgMzBFQjszMERCIDMwRkMgMzBFQjsKKzMzNDI7MzM0MjszMzQyOzMwREIgMzBGQyAzMEYzOzMwREIgMzBGQyAzMEYzOworMzM0MzszMzQzOzMzNDM7MzBERSAzMEE0IDMwQUYgMzBFRDszMERFIDMwQTQgMzBBRiAzMEVEOworMzM0NDszMzQ0OzMzNDQ7MzBERSAzMEE0IDMwRUI7MzBERSAzMEE0IDMwRUI7CiszMzQ1OzMzNDU7MzM0NTszMERFIDMwQzMgMzBDRjszMERFIDMwQzMgMzBDRjsKKzMzNDY7MzM0NjszMzQ2OzMwREUgMzBFQiAzMEFGOzMwREUgMzBFQiAzMEFGOworMzM0NzszMzQ3OzMzNDc7MzBERSAzMEYzIDMwQjcgMzBFNyAzMEYzOzMwREUgMzBGMyAzMEI3IDMwRTcgMzBGMzsKKzMzNDg7MzM0ODszMzQ4OzMwREYgMzBBRiAzMEVEIDMwRjM7MzBERiAzMEFGIDMwRUQgMzBGMzsKKzMzNDk7MzM0OTszMzQ5OzMwREYgMzBFQTszMERGIDMwRUE7CiszMzRBOzMzNEE7MzM0QTszMERGIDMwRUEgMzBEMCAzMEZDIDMwRUI7MzBERiAzMEVBIDMwQ0YgMzA5OSAzMEZDIDMwRUI7CiszMzRCOzMzNEI7MzM0QjszMEUxIDMwQUM7MzBFMSAzMEFCIDMwOTk7CiszMzRDOzMzNEM7MzM0QzszMEUxIDMwQUMgMzBDOCAzMEYzOzMwRTEgMzBBQiAzMDk5IDMwQzggMzBGMzsKKzMzNEQ7MzM0RDszMzREOzMwRTEgMzBGQyAzMEM4IDMwRUI7MzBFMSAzMEZDIDMwQzggMzBFQjsKKzMzNEU7MzM0RTszMzRFOzMwRTQgMzBGQyAzMEM5OzMwRTQgMzBGQyAzMEM4IDMwOTk7CiszMzRGOzMzNEY7MzM0RjszMEU0IDMwRkMgMzBFQjszMEU0IDMwRkMgMzBFQjsKKzMzNTA7MzM1MDszMzUwOzMwRTYgMzBBMiAzMEYzOzMwRTYgMzBBMiAzMEYzOworMzM1MTszMzUxOzMzNTE7MzBFQSAzMEMzIDMwQzggMzBFQjszMEVBIDMwQzMgMzBDOCAzMEVCOworMzM1MjszMzUyOzMzNTI7MzBFQSAzMEU5OzMwRUEgMzBFOTsKKzMzNTM7MzM1MzszMzUzOzMwRUIgMzBENCAzMEZDOzMwRUIgMzBEMiAzMDlBIDMwRkM7CiszMzU0OzMzNTQ7MzM1NDszMEVCIDMwRkMgMzBENiAzMEVCOzMwRUIgMzBGQyAzMEQ1IDMwOTkgMzBFQjsKKzMzNTU7MzM1NTszMzU1OzMwRUMgMzBFMDszMEVDIDMwRTA7CiszMzU2OzMzNTY7MzM1NjszMEVDIDMwRjMgMzBDOCAzMEIyIDMwRjM7MzBFQyAzMEYzIDMwQzggMzBCMSAzMDk5IDMwRjM7CiszMzU3OzMzNTc7MzM1NzszMEVGIDMwQzMgMzBDODszMEVGIDMwQzMgMzBDODsKKzMzNTg7MzM1ODszMzU4OzAwMzAgNzBCOTswMDMwIDcwQjk7CiszMzU5OzMzNTk7MzM1OTswMDMxIDcwQjk7MDAzMSA3MEI5OworMzM1QTszMzVBOzMzNUE7MDAzMiA3MEI5OzAwMzIgNzBCOTsKKzMzNUI7MzM1QjszMzVCOzAwMzMgNzBCOTswMDMzIDcwQjk7CiszMzVDOzMzNUM7MzM1QzswMDM0IDcwQjk7MDAzNCA3MEI5OworMzM1RDszMzVEOzMzNUQ7MDAzNSA3MEI5OzAwMzUgNzBCOTsKKzMzNUU7MzM1RTszMzVFOzAwMzYgNzBCOTswMDM2IDcwQjk7CiszMzVGOzMzNUY7MzM1RjswMDM3IDcwQjk7MDAzNyA3MEI5OworMzM2MDszMzYwOzMzNjA7MDAzOCA3MEI5OzAwMzggNzBCOTsKKzMzNjE7MzM2MTszMzYxOzAwMzkgNzBCOTswMDM5IDcwQjk7CiszMzYyOzMzNjI7MzM2MjswMDMxIDAwMzAgNzBCOTswMDMxIDAwMzAgNzBCOTsKKzMzNjM7MzM2MzszMzYzOzAwMzEgMDAzMSA3MEI5OzAwMzEgMDAzMSA3MEI5OworMzM2NDszMzY0OzMzNjQ7MDAzMSAwMDMyIDcwQjk7MDAzMSAwMDMyIDcwQjk7CiszMzY1OzMzNjU7MzM2NTswMDMxIDAwMzMgNzBCOTswMDMxIDAwMzMgNzBCOTsKKzMzNjY7MzM2NjszMzY2OzAwMzEgMDAzNCA3MEI5OzAwMzEgMDAzNCA3MEI5OworMzM2NzszMzY3OzMzNjc7MDAzMSAwMDM1IDcwQjk7MDAzMSAwMDM1IDcwQjk7CiszMzY4OzMzNjg7MzM2ODswMDMxIDAwMzYgNzBCOTswMDMxIDAwMzYgNzBCOTsKKzMzNjk7MzM2OTszMzY5OzAwMzEgMDAzNyA3MEI5OzAwMzEgMDAzNyA3MEI5OworMzM2QTszMzZBOzMzNkE7MDAzMSAwMDM4IDcwQjk7MDAzMSAwMDM4IDcwQjk7CiszMzZCOzMzNkI7MzM2QjswMDMxIDAwMzkgNzBCOTswMDMxIDAwMzkgNzBCOTsKKzMzNkM7MzM2QzszMzZDOzAwMzIgMDAzMCA3MEI5OzAwMzIgMDAzMCA3MEI5OworMzM2RDszMzZEOzMzNkQ7MDAzMiAwMDMxIDcwQjk7MDAzMiAwMDMxIDcwQjk7CiszMzZFOzMzNkU7MzM2RTswMDMyIDAwMzIgNzBCOTswMDMyIDAwMzIgNzBCOTsKKzMzNkY7MzM2RjszMzZGOzAwMzIgMDAzMyA3MEI5OzAwMzIgMDAzMyA3MEI5OworMzM3MDszMzcwOzMzNzA7MDAzMiAwMDM0IDcwQjk7MDAzMiAwMDM0IDcwQjk7CiszMzcxOzMzNzE7MzM3MTswMDY4IDAwNTAgMDA2MTswMDY4IDAwNTAgMDA2MTsKKzMzNzI7MzM3MjszMzcyOzAwNjQgMDA2MTswMDY0IDAwNjE7CiszMzczOzMzNzM7MzM3MzswMDQxIDAwNTU7MDA0MSAwMDU1OworMzM3NDszMzc0OzMzNzQ7MDA2MiAwMDYxIDAwNzI7MDA2MiAwMDYxIDAwNzI7CiszMzc1OzMzNzU7MzM3NTswMDZGIDAwNTY7MDA2RiAwMDU2OworMzM3NjszMzc2OzMzNzY7MDA3MCAwMDYzOzAwNzAgMDA2MzsKKzMzN0I7MzM3QjszMzdCOzVFNzMgNjIxMDs1RTczIDYyMTA7CiszMzdDOzMzN0M7MzM3Qzs2NjJEIDU0OEM7NjYyRCA1NDhDOworMzM3RDszMzdEOzMzN0Q7NTkyNyA2QjYzOzU5MjcgNkI2MzsKKzMzN0U7MzM3RTszMzdFOzY2MEUgNkNCQjs2NjBFIDZDQkI7CiszMzdGOzMzN0Y7MzM3Rjs2ODJBIDVGMEYgNEYxQSA3OTNFOzY4MkEgNUYwRiA0RjFBIDc5M0U7CiszMzgwOzMzODA7MzM4MDswMDcwIDAwNDE7MDA3MCAwMDQxOworMzM4MTszMzgxOzMzODE7MDA2RSAwMDQxOzAwNkUgMDA0MTsKKzMzODI7MzM4MjszMzgyOzAzQkMgMDA0MTswM0JDIDAwNDE7CiszMzgzOzMzODM7MzM4MzswMDZEIDAwNDE7MDA2RCAwMDQxOworMzM4NDszMzg0OzMzODQ7MDA2QiAwMDQxOzAwNkIgMDA0MTsKKzMzODU7MzM4NTszMzg1OzAwNEIgMDA0MjswMDRCIDAwNDI7CiszMzg2OzMzODY7MzM4NjswMDREIDAwNDI7MDA0RCAwMDQyOworMzM4NzszMzg3OzMzODc7MDA0NyAwMDQyOzAwNDcgMDA0MjsKKzMzODg7MzM4ODszMzg4OzAwNjMgMDA2MSAwMDZDOzAwNjMgMDA2MSAwMDZDOworMzM4OTszMzg5OzMzODk7MDA2QiAwMDYzIDAwNjEgMDA2QzswMDZCIDAwNjMgMDA2MSAwMDZDOworMzM4QTszMzhBOzMzOEE7MDA3MCAwMDQ2OzAwNzAgMDA0NjsKKzMzOEI7MzM4QjszMzhCOzAwNkUgMDA0NjswMDZFIDAwNDY7CiszMzhDOzMzOEM7MzM4QzswM0JDIDAwNDY7MDNCQyAwMDQ2OworMzM4RDszMzhEOzMzOEQ7MDNCQyAwMDY3OzAzQkMgMDA2NzsKKzMzOEU7MzM4RTszMzhFOzAwNkQgMDA2NzswMDZEIDAwNjc7CiszMzhGOzMzOEY7MzM4RjswMDZCIDAwNjc7MDA2QiAwMDY3OworMzM5MDszMzkwOzMzOTA7MDA0OCAwMDdBOzAwNDggMDA3QTsKKzMzOTE7MzM5MTszMzkxOzAwNkIgMDA0OCAwMDdBOzAwNkIgMDA0OCAwMDdBOworMzM5MjszMzkyOzMzOTI7MDA0RCAwMDQ4IDAwN0E7MDA0RCAwMDQ4IDAwN0E7CiszMzkzOzMzOTM7MzM5MzswMDQ3IDAwNDggMDA3QTswMDQ3IDAwNDggMDA3QTsKKzMzOTQ7MzM5NDszMzk0OzAwNTQgMDA0OCAwMDdBOzAwNTQgMDA0OCAwMDdBOworMzM5NTszMzk1OzMzOTU7MDNCQyAwMDZDOzAzQkMgMDA2QzsKKzMzOTY7MzM5NjszMzk2OzAwNkQgMDA2QzswMDZEIDAwNkM7CiszMzk3OzMzOTc7MzM5NzswMDY0IDAwNkM7MDA2NCAwMDZDOworMzM5ODszMzk4OzMzOTg7MDA2QiAwMDZDOzAwNkIgMDA2QzsKKzMzOTk7MzM5OTszMzk5OzAwNjYgMDA2RDswMDY2IDAwNkQ7CiszMzlBOzMzOUE7MzM5QTswMDZFIDAwNkQ7MDA2RSAwMDZEOworMzM5QjszMzlCOzMzOUI7MDNCQyAwMDZEOzAzQkMgMDA2RDsKKzMzOUM7MzM5QzszMzlDOzAwNkQgMDA2RDswMDZEIDAwNkQ7CiszMzlEOzMzOUQ7MzM5RDswMDYzIDAwNkQ7MDA2MyAwMDZEOworMzM5RTszMzlFOzMzOUU7MDA2QiAwMDZEOzAwNkIgMDA2RDsKKzMzOUY7MzM5RjszMzlGOzAwNkQgMDA2RCAwMDMyOzAwNkQgMDA2RCAwMDMyOworMzNBMDszM0EwOzMzQTA7MDA2MyAwMDZEIDAwMzI7MDA2MyAwMDZEIDAwMzI7CiszM0ExOzMzQTE7MzNBMTswMDZEIDAwMzI7MDA2RCAwMDMyOworMzNBMjszM0EyOzMzQTI7MDA2QiAwMDZEIDAwMzI7MDA2QiAwMDZEIDAwMzI7CiszM0EzOzMzQTM7MzNBMzswMDZEIDAwNkQgMDAzMzswMDZEIDAwNkQgMDAzMzsKKzMzQTQ7MzNBNDszM0E0OzAwNjMgMDA2RCAwMDMzOzAwNjMgMDA2RCAwMDMzOworMzNBNTszM0E1OzMzQTU7MDA2RCAwMDMzOzAwNkQgMDAzMzsKKzMzQTY7MzNBNjszM0E2OzAwNkIgMDA2RCAwMDMzOzAwNkIgMDA2RCAwMDMzOworMzNBNzszM0E3OzMzQTc7MDA2RCAyMjE1IDAwNzM7MDA2RCAyMjE1IDAwNzM7CiszM0E4OzMzQTg7MzNBODswMDZEIDIyMTUgMDA3MyAwMDMyOzAwNkQgMjIxNSAwMDczIDAwMzI7CiszM0E5OzMzQTk7MzNBOTswMDUwIDAwNjE7MDA1MCAwMDYxOworMzNBQTszM0FBOzMzQUE7MDA2QiAwMDUwIDAwNjE7MDA2QiAwMDUwIDAwNjE7CiszM0FCOzMzQUI7MzNBQjswMDREIDAwNTAgMDA2MTswMDREIDAwNTAgMDA2MTsKKzMzQUM7MzNBQzszM0FDOzAwNDcgMDA1MCAwMDYxOzAwNDcgMDA1MCAwMDYxOworMzNBRDszM0FEOzMzQUQ7MDA3MiAwMDYxIDAwNjQ7MDA3MiAwMDYxIDAwNjQ7CiszM0FFOzMzQUU7MzNBRTswMDcyIDAwNjEgMDA2NCAyMjE1IDAwNzM7MDA3MiAwMDYxIDAwNjQgMjIxNSAwMDczOworMzNBRjszM0FGOzMzQUY7MDA3MiAwMDYxIDAwNjQgMjIxNSAwMDczIDAwMzI7MDA3MiAwMDYxIDAwNjQgMjIxNSAwMDczIDAwMzI7CiszM0IwOzMzQjA7MzNCMDswMDcwIDAwNzM7MDA3MCAwMDczOworMzNCMTszM0IxOzMzQjE7MDA2RSAwMDczOzAwNkUgMDA3MzsKKzMzQjI7MzNCMjszM0IyOzAzQkMgMDA3MzswM0JDIDAwNzM7CiszM0IzOzMzQjM7MzNCMzswMDZEIDAwNzM7MDA2RCAwMDczOworMzNCNDszM0I0OzMzQjQ7MDA3MCAwMDU2OzAwNzAgMDA1NjsKKzMzQjU7MzNCNTszM0I1OzAwNkUgMDA1NjswMDZFIDAwNTY7CiszM0I2OzMzQjY7MzNCNjswM0JDIDAwNTY7MDNCQyAwMDU2OworMzNCNzszM0I3OzMzQjc7MDA2RCAwMDU2OzAwNkQgMDA1NjsKKzMzQjg7MzNCODszM0I4OzAwNkIgMDA1NjswMDZCIDAwNTY7CiszM0I5OzMzQjk7MzNCOTswMDREIDAwNTY7MDA0RCAwMDU2OworMzNCQTszM0JBOzMzQkE7MDA3MCAwMDU3OzAwNzAgMDA1NzsKKzMzQkI7MzNCQjszM0JCOzAwNkUgMDA1NzswMDZFIDAwNTc7CiszM0JDOzMzQkM7MzNCQzswM0JDIDAwNTc7MDNCQyAwMDU3OworMzNCRDszM0JEOzMzQkQ7MDA2RCAwMDU3OzAwNkQgMDA1NzsKKzMzQkU7MzNCRTszM0JFOzAwNkIgMDA1NzswMDZCIDAwNTc7CiszM0JGOzMzQkY7MzNCRjswMDREIDAwNTc7MDA0RCAwMDU3OworMzNDMDszM0MwOzMzQzA7MDA2QiAwM0E5OzAwNkIgMDNBOTsKKzMzQzE7MzNDMTszM0MxOzAwNEQgMDNBOTswMDREIDAzQTk7CiszM0MyOzMzQzI7MzNDMjswMDYxIDAwMkUgMDA2RCAwMDJFOzAwNjEgMDAyRSAwMDZEIDAwMkU7CiszM0MzOzMzQzM7MzNDMzswMDQyIDAwNzE7MDA0MiAwMDcxOworMzNDNDszM0M0OzMzQzQ7MDA2MyAwMDYzOzAwNjMgMDA2MzsKKzMzQzU7MzNDNTszM0M1OzAwNjMgMDA2NDswMDYzIDAwNjQ7CiszM0M2OzMzQzY7MzNDNjswMDQzIDIyMTUgMDA2QiAwMDY3OzAwNDMgMjIxNSAwMDZCIDAwNjc7CiszM0M3OzMzQzc7MzNDNzswMDQzIDAwNkYgMDAyRTswMDQzIDAwNkYgMDAyRTsKKzMzQzg7MzNDODszM0M4OzAwNjQgMDA0MjswMDY0IDAwNDI7CiszM0M5OzMzQzk7MzNDOTswMDQ3IDAwNzk7MDA0NyAwMDc5OworMzNDQTszM0NBOzMzQ0E7MDA2OCAwMDYxOzAwNjggMDA2MTsKKzMzQ0I7MzNDQjszM0NCOzAwNDggMDA1MDswMDQ4IDAwNTA7CiszM0NDOzMzQ0M7MzNDQzswMDY5IDAwNkU7MDA2OSAwMDZFOworMzNDRDszM0NEOzMzQ0Q7MDA0QiAwMDRCOzAwNEIgMDA0QjsKKzMzQ0U7MzNDRTszM0NFOzAwNEIgMDA0RDswMDRCIDAwNEQ7CiszM0NGOzMzQ0Y7MzNDRjswMDZCIDAwNzQ7MDA2QiAwMDc0OworMzNEMDszM0QwOzMzRDA7MDA2QyAwMDZEOzAwNkMgMDA2RDsKKzMzRDE7MzNEMTszM0QxOzAwNkMgMDA2RTswMDZDIDAwNkU7CiszM0QyOzMzRDI7MzNEMjswMDZDIDAwNkYgMDA2NzswMDZDIDAwNkYgMDA2NzsKKzMzRDM7MzNEMzszM0QzOzAwNkMgMDA3ODswMDZDIDAwNzg7CiszM0Q0OzMzRDQ7MzNENDswMDZEIDAwNjI7MDA2RCAwMDYyOworMzNENTszM0Q1OzMzRDU7MDA2RCAwMDY5IDAwNkM7MDA2RCAwMDY5IDAwNkM7CiszM0Q2OzMzRDY7MzNENjswMDZEIDAwNkYgMDA2QzswMDZEIDAwNkYgMDA2QzsKKzMzRDc7MzNENzszM0Q3OzAwNTAgMDA0ODswMDUwIDAwNDg7CiszM0Q4OzMzRDg7MzNEODswMDcwIDAwMkUgMDA2RCAwMDJFOzAwNzAgMDAyRSAwMDZEIDAwMkU7CiszM0Q5OzMzRDk7MzNEOTswMDUwIDAwNTAgMDA0RDswMDUwIDAwNTAgMDA0RDsKKzMzREE7MzNEQTszM0RBOzAwNTAgMDA1MjswMDUwIDAwNTI7CiszM0RCOzMzREI7MzNEQjswMDczIDAwNzI7MDA3MyAwMDcyOworMzNEQzszM0RDOzMzREM7MDA1MyAwMDc2OzAwNTMgMDA3NjsKKzMzREQ7MzNERDszM0REOzAwNTcgMDA2MjswMDU3IDAwNjI7CiszM0UwOzMzRTA7MzNFMDswMDMxIDY1RTU7MDAzMSA2NUU1OworMzNFMTszM0UxOzMzRTE7MDAzMiA2NUU1OzAwMzIgNjVFNTsKKzMzRTI7MzNFMjszM0UyOzAwMzMgNjVFNTswMDMzIDY1RTU7CiszM0UzOzMzRTM7MzNFMzswMDM0IDY1RTU7MDAzNCA2NUU1OworMzNFNDszM0U0OzMzRTQ7MDAzNSA2NUU1OzAwMzUgNjVFNTsKKzMzRTU7MzNFNTszM0U1OzAwMzYgNjVFNTswMDM2IDY1RTU7CiszM0U2OzMzRTY7MzNFNjswMDM3IDY1RTU7MDAzNyA2NUU1OworMzNFNzszM0U3OzMzRTc7MDAzOCA2NUU1OzAwMzggNjVFNTsKKzMzRTg7MzNFODszM0U4OzAwMzkgNjVFNTswMDM5IDY1RTU7CiszM0U5OzMzRTk7MzNFOTswMDMxIDAwMzAgNjVFNTswMDMxIDAwMzAgNjVFNTsKKzMzRUE7MzNFQTszM0VBOzAwMzEgMDAzMSA2NUU1OzAwMzEgMDAzMSA2NUU1OworMzNFQjszM0VCOzMzRUI7MDAzMSAwMDMyIDY1RTU7MDAzMSAwMDMyIDY1RTU7CiszM0VDOzMzRUM7MzNFQzswMDMxIDAwMzMgNjVFNTswMDMxIDAwMzMgNjVFNTsKKzMzRUQ7MzNFRDszM0VEOzAwMzEgMDAzNCA2NUU1OzAwMzEgMDAzNCA2NUU1OworMzNFRTszM0VFOzMzRUU7MDAzMSAwMDM1IDY1RTU7MDAzMSAwMDM1IDY1RTU7CiszM0VGOzMzRUY7MzNFRjswMDMxIDAwMzYgNjVFNTswMDMxIDAwMzYgNjVFNTsKKzMzRjA7MzNGMDszM0YwOzAwMzEgMDAzNyA2NUU1OzAwMzEgMDAzNyA2NUU1OworMzNGMTszM0YxOzMzRjE7MDAzMSAwMDM4IDY1RTU7MDAzMSAwMDM4IDY1RTU7CiszM0YyOzMzRjI7MzNGMjswMDMxIDAwMzkgNjVFNTswMDMxIDAwMzkgNjVFNTsKKzMzRjM7MzNGMzszM0YzOzAwMzIgMDAzMCA2NUU1OzAwMzIgMDAzMCA2NUU1OworMzNGNDszM0Y0OzMzRjQ7MDAzMiAwMDMxIDY1RTU7MDAzMiAwMDMxIDY1RTU7CiszM0Y1OzMzRjU7MzNGNTswMDMyIDAwMzIgNjVFNTswMDMyIDAwMzIgNjVFNTsKKzMzRjY7MzNGNjszM0Y2OzAwMzIgMDAzMyA2NUU1OzAwMzIgMDAzMyA2NUU1OworMzNGNzszM0Y3OzMzRjc7MDAzMiAwMDM0IDY1RTU7MDAzMiAwMDM0IDY1RTU7CiszM0Y4OzMzRjg7MzNGODswMDMyIDAwMzUgNjVFNTswMDMyIDAwMzUgNjVFNTsKKzMzRjk7MzNGOTszM0Y5OzAwMzIgMDAzNiA2NUU1OzAwMzIgMDAzNiA2NUU1OworMzNGQTszM0ZBOzMzRkE7MDAzMiAwMDM3IDY1RTU7MDAzMiAwMDM3IDY1RTU7CiszM0ZCOzMzRkI7MzNGQjswMDMyIDAwMzggNjVFNTswMDMyIDAwMzggNjVFNTsKKzMzRkM7MzNGQzszM0ZDOzAwMzIgMDAzOSA2NUU1OzAwMzIgMDAzOSA2NUU1OworMzNGRDszM0ZEOzMzRkQ7MDAzMyAwMDMwIDY1RTU7MDAzMyAwMDMwIDY1RTU7CiszM0ZFOzMzRkU7MzNGRTswMDMzIDAwMzEgNjVFNTswMDMzIDAwMzEgNjVFNTsKK0FDMDA7QUMwMDsxMTAwIDExNjE7QUMwMDsxMTAwIDExNjE7CitBQzAxO0FDMDE7MTEwMCAxMTYxIDExQTg7QUMwMTsxMTAwIDExNjEgMTFBODsKK0FDMDI7QUMwMjsxMTAwIDExNjEgMTFBOTtBQzAyOzExMDAgMTE2MSAxMUE5OworQUMwMztBQzAzOzExMDAgMTE2MSAxMUFBO0FDMDM7MTEwMCAxMTYxIDExQUE7CitBQzA0O0FDMDQ7MTEwMCAxMTYxIDExQUI7QUMwNDsxMTAwIDExNjEgMTFBQjsKK0FDMDU7QUMwNTsxMTAwIDExNjEgMTFBQztBQzA1OzExMDAgMTE2MSAxMUFDOworQUMwNjtBQzA2OzExMDAgMTE2MSAxMUFEO0FDMDY7MTEwMCAxMTYxIDExQUQ7CitBQzA3O0FDMDc7MTEwMCAxMTYxIDExQUU7QUMwNzsxMTAwIDExNjEgMTFBRTsKK0FDMDg7QUMwODsxMTAwIDExNjEgMTFBRjtBQzA4OzExMDAgMTE2MSAxMUFGOworQUMwOTtBQzA5OzExMDAgMTE2MSAxMUIwO0FDMDk7MTEwMCAxMTYxIDExQjA7CitBQzBBO0FDMEE7MTEwMCAxMTYxIDExQjE7QUMwQTsxMTAwIDExNjEgMTFCMTsKK0FDMEI7QUMwQjsxMTAwIDExNjEgMTFCMjtBQzBCOzExMDAgMTE2MSAxMUIyOworQUMwQztBQzBDOzExMDAgMTE2MSAxMUIzO0FDMEM7MTEwMCAxMTYxIDExQjM7CitBQzBEO0FDMEQ7MTEwMCAxMTYxIDExQjQ7QUMwRDsxMTAwIDExNjEgMTFCNDsKK0FDMEU7QUMwRTsxMTAwIDExNjEgMTFCNTtBQzBFOzExMDAgMTE2MSAxMUI1OworQUMwRjtBQzBGOzExMDAgMTE2MSAxMUI2O0FDMEY7MTEwMCAxMTYxIDExQjY7CitBQzEwO0FDMTA7MTEwMCAxMTYxIDExQjc7QUMxMDsxMTAwIDExNjEgMTFCNzsKK0FDMTE7QUMxMTsxMTAwIDExNjEgMTFCODtBQzExOzExMDAgMTE2MSAxMUI4OworQUMxMjtBQzEyOzExMDAgMTE2MSAxMUI5O0FDMTI7MTEwMCAxMTYxIDExQjk7CitBQzEzO0FDMTM7MTEwMCAxMTYxIDExQkE7QUMxMzsxMTAwIDExNjEgMTFCQTsKK0FDMTQ7QUMxNDsxMTAwIDExNjEgMTFCQjtBQzE0OzExMDAgMTE2MSAxMUJCOworQUMxNTtBQzE1OzExMDAgMTE2MSAxMUJDO0FDMTU7MTEwMCAxMTYxIDExQkM7CitBQzE2O0FDMTY7MTEwMCAxMTYxIDExQkQ7QUMxNjsxMTAwIDExNjEgMTFCRDsKK0FDMTc7QUMxNzsxMTAwIDExNjEgMTFCRTtBQzE3OzExMDAgMTE2MSAxMUJFOworQUMxODtBQzE4OzExMDAgMTE2MSAxMUJGO0FDMTg7MTEwMCAxMTYxIDExQkY7CitBQzE5O0FDMTk7MTEwMCAxMTYxIDExQzA7QUMxOTsxMTAwIDExNjEgMTFDMDsKK0FDMUE7QUMxQTsxMTAwIDExNjEgMTFDMTtBQzFBOzExMDAgMTE2MSAxMUMxOworQUMxQjtBQzFCOzExMDAgMTE2MSAxMUMyO0FDMUI7MTEwMCAxMTYxIDExQzI7CitBQzFDO0FDMUM7MTEwMCAxMTYyO0FDMUM7MTEwMCAxMTYyOworQUMxRDtBQzFEOzExMDAgMTE2MiAxMUE4O0FDMUQ7MTEwMCAxMTYyIDExQTg7CitBQzFFO0FDMUU7MTEwMCAxMTYyIDExQTk7QUMxRTsxMTAwIDExNjIgMTFBOTsKK0FDMUY7QUMxRjsxMTAwIDExNjIgMTFBQTtBQzFGOzExMDAgMTE2MiAxMUFBOworQUMyMDtBQzIwOzExMDAgMTE2MiAxMUFCO0FDMjA7MTEwMCAxMTYyIDExQUI7CitBQzIxO0FDMjE7MTEwMCAxMTYyIDExQUM7QUMyMTsxMTAwIDExNjIgMTFBQzsKK0FDMjI7QUMyMjsxMTAwIDExNjIgMTFBRDtBQzIyOzExMDAgMTE2MiAxMUFEOworQUMyMztBQzIzOzExMDAgMTE2MiAxMUFFO0FDMjM7MTEwMCAxMTYyIDExQUU7CitBQzI0O0FDMjQ7MTEwMCAxMTYyIDExQUY7QUMyNDsxMTAwIDExNjIgMTFBRjsKK0FDMjU7QUMyNTsxMTAwIDExNjIgMTFCMDtBQzI1OzExMDAgMTE2MiAxMUIwOworQUMyNjtBQzI2OzExMDAgMTE2MiAxMUIxO0FDMjY7MTEwMCAxMTYyIDExQjE7CitBQzI3O0FDMjc7MTEwMCAxMTYyIDExQjI7QUMyNzsxMTAwIDExNjIgMTFCMjsKK0FDMjg7QUMyODsxMTAwIDExNjIgMTFCMztBQzI4OzExMDAgMTE2MiAxMUIzOworQUMyOTtBQzI5OzExMDAgMTE2MiAxMUI0O0FDMjk7MTEwMCAxMTYyIDExQjQ7CitBQzJBO0FDMkE7MTEwMCAxMTYyIDExQjU7QUMyQTsxMTAwIDExNjIgMTFCNTsKK0FDMkI7QUMyQjsxMTAwIDExNjIgMTFCNjtBQzJCOzExMDAgMTE2MiAxMUI2OworQUMyQztBQzJDOzExMDAgMTE2MiAxMUI3O0FDMkM7MTEwMCAxMTYyIDExQjc7CitBQzJEO0FDMkQ7MTEwMCAxMTYyIDExQjg7QUMyRDsxMTAwIDExNjIgMTFCODsKK0FDMkU7QUMyRTsxMTAwIDExNjIgMTFCOTtBQzJFOzExMDAgMTE2MiAxMUI5OworQUMyRjtBQzJGOzExMDAgMTE2MiAxMUJBO0FDMkY7MTEwMCAxMTYyIDExQkE7CitBQzMwO0FDMzA7MTEwMCAxMTYyIDExQkI7QUMzMDsxMTAwIDExNjIgMTFCQjsKK0FDMzE7QUMzMTsxMTAwIDExNjIgMTFCQztBQzMxOzExMDAgMTE2MiAxMUJDOworQUMzMjtBQzMyOzExMDAgMTE2MiAxMUJEO0FDMzI7MTEwMCAxMTYyIDExQkQ7CitBQzMzO0FDMzM7MTEwMCAxMTYyIDExQkU7QUMzMzsxMTAwIDExNjIgMTFCRTsKK0FDMzQ7QUMzNDsxMTAwIDExNjIgMTFCRjtBQzM0OzExMDAgMTE2MiAxMUJGOworQUMzNTtBQzM1OzExMDAgMTE2MiAxMUMwO0FDMzU7MTEwMCAxMTYyIDExQzA7CitBQzM2O0FDMzY7MTEwMCAxMTYyIDExQzE7QUMzNjsxMTAwIDExNjIgMTFDMTsKK0FDMzc7QUMzNzsxMTAwIDExNjIgMTFDMjtBQzM3OzExMDAgMTE2MiAxMUMyOworQUMzODtBQzM4OzExMDAgMTE2MztBQzM4OzExMDAgMTE2MzsKK0FDMzk7QUMzOTsxMTAwIDExNjMgMTFBODtBQzM5OzExMDAgMTE2MyAxMUE4OworQUMzQTtBQzNBOzExMDAgMTE2MyAxMUE5O0FDM0E7MTEwMCAxMTYzIDExQTk7CitBQzNCO0FDM0I7MTEwMCAxMTYzIDExQUE7QUMzQjsxMTAwIDExNjMgMTFBQTsKK0FDM0M7QUMzQzsxMTAwIDExNjMgMTFBQjtBQzNDOzExMDAgMTE2MyAxMUFCOworQUMzRDtBQzNEOzExMDAgMTE2MyAxMUFDO0FDM0Q7MTEwMCAxMTYzIDExQUM7CitBQzNFO0FDM0U7MTEwMCAxMTYzIDExQUQ7QUMzRTsxMTAwIDExNjMgMTFBRDsKK0FDM0Y7QUMzRjsxMTAwIDExNjMgMTFBRTtBQzNGOzExMDAgMTE2MyAxMUFFOworQUM0MDtBQzQwOzExMDAgMTE2MyAxMUFGO0FDNDA7MTEwMCAxMTYzIDExQUY7CitBQzQxO0FDNDE7MTEwMCAxMTYzIDExQjA7QUM0MTsxMTAwIDExNjMgMTFCMDsKK0FDNDI7QUM0MjsxMTAwIDExNjMgMTFCMTtBQzQyOzExMDAgMTE2MyAxMUIxOworQUM0MztBQzQzOzExMDAgMTE2MyAxMUIyO0FDNDM7MTEwMCAxMTYzIDExQjI7CitBQzQ0O0FDNDQ7MTEwMCAxMTYzIDExQjM7QUM0NDsxMTAwIDExNjMgMTFCMzsKK0FDNDU7QUM0NTsxMTAwIDExNjMgMTFCNDtBQzQ1OzExMDAgMTE2MyAxMUI0OworQUM0NjtBQzQ2OzExMDAgMTE2MyAxMUI1O0FDNDY7MTEwMCAxMTYzIDExQjU7CitBQzQ3O0FDNDc7MTEwMCAxMTYzIDExQjY7QUM0NzsxMTAwIDExNjMgMTFCNjsKK0FDNDg7QUM0ODsxMTAwIDExNjMgMTFCNztBQzQ4OzExMDAgMTE2MyAxMUI3OworQUM0OTtBQzQ5OzExMDAgMTE2MyAxMUI4O0FDNDk7MTEwMCAxMTYzIDExQjg7CitBQzRBO0FDNEE7MTEwMCAxMTYzIDExQjk7QUM0QTsxMTAwIDExNjMgMTFCOTsKK0FDNEI7QUM0QjsxMTAwIDExNjMgMTFCQTtBQzRCOzExMDAgMTE2MyAxMUJBOworQUM0QztBQzRDOzExMDAgMTE2MyAxMUJCO0FDNEM7MTEwMCAxMTYzIDExQkI7CitBQzREO0FDNEQ7MTEwMCAxMTYzIDExQkM7QUM0RDsxMTAwIDExNjMgMTFCQzsKK0FDNEU7QUM0RTsxMTAwIDExNjMgMTFCRDtBQzRFOzExMDAgMTE2MyAxMUJEOworQUM0RjtBQzRGOzExMDAgMTE2MyAxMUJFO0FDNEY7MTEwMCAxMTYzIDExQkU7CitBQzUwO0FDNTA7MTEwMCAxMTYzIDExQkY7QUM1MDsxMTAwIDExNjMgMTFCRjsKK0FDNTE7QUM1MTsxMTAwIDExNjMgMTFDMDtBQzUxOzExMDAgMTE2MyAxMUMwOworQUM1MjtBQzUyOzExMDAgMTE2MyAxMUMxO0FDNTI7MTEwMCAxMTYzIDExQzE7CitBQzUzO0FDNTM7MTEwMCAxMTYzIDExQzI7QUM1MzsxMTAwIDExNjMgMTFDMjsKK0FDNTQ7QUM1NDsxMTAwIDExNjQ7QUM1NDsxMTAwIDExNjQ7CitBQzU1O0FDNTU7MTEwMCAxMTY0IDExQTg7QUM1NTsxMTAwIDExNjQgMTFBODsKK0FDNTY7QUM1NjsxMTAwIDExNjQgMTFBOTtBQzU2OzExMDAgMTE2NCAxMUE5OworQUM1NztBQzU3OzExMDAgMTE2NCAxMUFBO0FDNTc7MTEwMCAxMTY0IDExQUE7CitBQzU4O0FDNTg7MTEwMCAxMTY0IDExQUI7QUM1ODsxMTAwIDExNjQgMTFBQjsKK0FDNTk7QUM1OTsxMTAwIDExNjQgMTFBQztBQzU5OzExMDAgMTE2NCAxMUFDOworQUM1QTtBQzVBOzExMDAgMTE2NCAxMUFEO0FDNUE7MTEwMCAxMTY0IDExQUQ7CitBQzVCO0FDNUI7MTEwMCAxMTY0IDExQUU7QUM1QjsxMTAwIDExNjQgMTFBRTsKK0FDNUM7QUM1QzsxMTAwIDExNjQgMTFBRjtBQzVDOzExMDAgMTE2NCAxMUFGOworQUM1RDtBQzVEOzExMDAgMTE2NCAxMUIwO0FDNUQ7MTEwMCAxMTY0IDExQjA7CitBQzVFO0FDNUU7MTEwMCAxMTY0IDExQjE7QUM1RTsxMTAwIDExNjQgMTFCMTsKK0FDNUY7QUM1RjsxMTAwIDExNjQgMTFCMjtBQzVGOzExMDAgMTE2NCAxMUIyOworQUM2MDtBQzYwOzExMDAgMTE2NCAxMUIzO0FDNjA7MTEwMCAxMTY0IDExQjM7CitBQzYxO0FDNjE7MTEwMCAxMTY0IDExQjQ7QUM2MTsxMTAwIDExNjQgMTFCNDsKK0FDNjI7QUM2MjsxMTAwIDExNjQgMTFCNTtBQzYyOzExMDAgMTE2NCAxMUI1OworQUM2MztBQzYzOzExMDAgMTE2NCAxMUI2O0FDNjM7MTEwMCAxMTY0IDExQjY7CitBQzY0O0FDNjQ7MTEwMCAxMTY0IDExQjc7QUM2NDsxMTAwIDExNjQgMTFCNzsKK0FDNjU7QUM2NTsxMTAwIDExNjQgMTFCODtBQzY1OzExMDAgMTE2NCAxMUI4OworQUM2NjtBQzY2OzExMDAgMTE2NCAxMUI5O0FDNjY7MTEwMCAxMTY0IDExQjk7CitBQzY3O0FDNjc7MTEwMCAxMTY0IDExQkE7QUM2NzsxMTAwIDExNjQgMTFCQTsKK0FDNjg7QUM2ODsxMTAwIDExNjQgMTFCQjtBQzY4OzExMDAgMTE2NCAxMUJCOworQUM2OTtBQzY5OzExMDAgMTE2NCAxMUJDO0FDNjk7MTEwMCAxMTY0IDExQkM7CitBQzZBO0FDNkE7MTEwMCAxMTY0IDExQkQ7QUM2QTsxMTAwIDExNjQgMTFCRDsKK0FDNkI7QUM2QjsxMTAwIDExNjQgMTFCRTtBQzZCOzExMDAgMTE2NCAxMUJFOworQUM2QztBQzZDOzExMDAgMTE2NCAxMUJGO0FDNkM7MTEwMCAxMTY0IDExQkY7CitBQzZEO0FDNkQ7MTEwMCAxMTY0IDExQzA7QUM2RDsxMTAwIDExNjQgMTFDMDsKK0FDNkU7QUM2RTsxMTAwIDExNjQgMTFDMTtBQzZFOzExMDAgMTE2NCAxMUMxOworQUM2RjtBQzZGOzExMDAgMTE2NCAxMUMyO0FDNkY7MTEwMCAxMTY0IDExQzI7CitBQzcwO0FDNzA7MTEwMCAxMTY1O0FDNzA7MTEwMCAxMTY1OworQUM3MTtBQzcxOzExMDAgMTE2NSAxMUE4O0FDNzE7MTEwMCAxMTY1IDExQTg7CitBQzcyO0FDNzI7MTEwMCAxMTY1IDExQTk7QUM3MjsxMTAwIDExNjUgMTFBOTsKK0FDNzM7QUM3MzsxMTAwIDExNjUgMTFBQTtBQzczOzExMDAgMTE2NSAxMUFBOworQUM3NDtBQzc0OzExMDAgMTE2NSAxMUFCO0FDNzQ7MTEwMCAxMTY1IDExQUI7CitBQzc1O0FDNzU7MTEwMCAxMTY1IDExQUM7QUM3NTsxMTAwIDExNjUgMTFBQzsKK0FDNzY7QUM3NjsxMTAwIDExNjUgMTFBRDtBQzc2OzExMDAgMTE2NSAxMUFEOworQUM3NztBQzc3OzExMDAgMTE2NSAxMUFFO0FDNzc7MTEwMCAxMTY1IDExQUU7CitBQzc4O0FDNzg7MTEwMCAxMTY1IDExQUY7QUM3ODsxMTAwIDExNjUgMTFBRjsKK0FDNzk7QUM3OTsxMTAwIDExNjUgMTFCMDtBQzc5OzExMDAgMTE2NSAxMUIwOworQUM3QTtBQzdBOzExMDAgMTE2NSAxMUIxO0FDN0E7MTEwMCAxMTY1IDExQjE7CitBQzdCO0FDN0I7MTEwMCAxMTY1IDExQjI7QUM3QjsxMTAwIDExNjUgMTFCMjsKK0FDN0M7QUM3QzsxMTAwIDExNjUgMTFCMztBQzdDOzExMDAgMTE2NSAxMUIzOworQUM3RDtBQzdEOzExMDAgMTE2NSAxMUI0O0FDN0Q7MTEwMCAxMTY1IDExQjQ7CitBQzdFO0FDN0U7MTEwMCAxMTY1IDExQjU7QUM3RTsxMTAwIDExNjUgMTFCNTsKK0FDN0Y7QUM3RjsxMTAwIDExNjUgMTFCNjtBQzdGOzExMDAgMTE2NSAxMUI2OworQUM4MDtBQzgwOzExMDAgMTE2NSAxMUI3O0FDODA7MTEwMCAxMTY1IDExQjc7CitBQzgxO0FDODE7MTEwMCAxMTY1IDExQjg7QUM4MTsxMTAwIDExNjUgMTFCODsKK0FDODI7QUM4MjsxMTAwIDExNjUgMTFCOTtBQzgyOzExMDAgMTE2NSAxMUI5OworQUM4MztBQzgzOzExMDAgMTE2NSAxMUJBO0FDODM7MTEwMCAxMTY1IDExQkE7CitBQzg0O0FDODQ7MTEwMCAxMTY1IDExQkI7QUM4NDsxMTAwIDExNjUgMTFCQjsKK0FDODU7QUM4NTsxMTAwIDExNjUgMTFCQztBQzg1OzExMDAgMTE2NSAxMUJDOworQUM4NjtBQzg2OzExMDAgMTE2NSAxMUJEO0FDODY7MTEwMCAxMTY1IDExQkQ7CitBQzg3O0FDODc7MTEwMCAxMTY1IDExQkU7QUM4NzsxMTAwIDExNjUgMTFCRTsKK0FDODg7QUM4ODsxMTAwIDExNjUgMTFCRjtBQzg4OzExMDAgMTE2NSAxMUJGOworQUM4OTtBQzg5OzExMDAgMTE2NSAxMUMwO0FDODk7MTEwMCAxMTY1IDExQzA7CitBQzhBO0FDOEE7MTEwMCAxMTY1IDExQzE7QUM4QTsxMTAwIDExNjUgMTFDMTsKK0FDOEI7QUM4QjsxMTAwIDExNjUgMTFDMjtBQzhCOzExMDAgMTE2NSAxMUMyOworQUM4QztBQzhDOzExMDAgMTE2NjtBQzhDOzExMDAgMTE2NjsKK0FDOEQ7QUM4RDsxMTAwIDExNjYgMTFBODtBQzhEOzExMDAgMTE2NiAxMUE4OworQUM4RTtBQzhFOzExMDAgMTE2NiAxMUE5O0FDOEU7MTEwMCAxMTY2IDExQTk7CitBQzhGO0FDOEY7MTEwMCAxMTY2IDExQUE7QUM4RjsxMTAwIDExNjYgMTFBQTsKK0FDOTA7QUM5MDsxMTAwIDExNjYgMTFBQjtBQzkwOzExMDAgMTE2NiAxMUFCOworQUM5MTtBQzkxOzExMDAgMTE2NiAxMUFDO0FDOTE7MTEwMCAxMTY2IDExQUM7CitBQzkyO0FDOTI7MTEwMCAxMTY2IDExQUQ7QUM5MjsxMTAwIDExNjYgMTFBRDsKK0FDOTM7QUM5MzsxMTAwIDExNjYgMTFBRTtBQzkzOzExMDAgMTE2NiAxMUFFOworQUM5NDtBQzk0OzExMDAgMTE2NiAxMUFGO0FDOTQ7MTEwMCAxMTY2IDExQUY7CitBQzk1O0FDOTU7MTEwMCAxMTY2IDExQjA7QUM5NTsxMTAwIDExNjYgMTFCMDsKK0FDOTY7QUM5NjsxMTAwIDExNjYgMTFCMTtBQzk2OzExMDAgMTE2NiAxMUIxOworQUM5NztBQzk3OzExMDAgMTE2NiAxMUIyO0FDOTc7MTEwMCAxMTY2IDExQjI7CitBQzk4O0FDOTg7MTEwMCAxMTY2IDExQjM7QUM5ODsxMTAwIDExNjYgMTFCMzsKK0FDOTk7QUM5OTsxMTAwIDExNjYgMTFCNDtBQzk5OzExMDAgMTE2NiAxMUI0OworQUM5QTtBQzlBOzExMDAgMTE2NiAxMUI1O0FDOUE7MTEwMCAxMTY2IDExQjU7CitBQzlCO0FDOUI7MTEwMCAxMTY2IDExQjY7QUM5QjsxMTAwIDExNjYgMTFCNjsKK0FDOUM7QUM5QzsxMTAwIDExNjYgMTFCNztBQzlDOzExMDAgMTE2NiAxMUI3OworQUM5RDtBQzlEOzExMDAgMTE2NiAxMUI4O0FDOUQ7MTEwMCAxMTY2IDExQjg7CitBQzlFO0FDOUU7MTEwMCAxMTY2IDExQjk7QUM5RTsxMTAwIDExNjYgMTFCOTsKK0FDOUY7QUM5RjsxMTAwIDExNjYgMTFCQTtBQzlGOzExMDAgMTE2NiAxMUJBOworQUNBMDtBQ0EwOzExMDAgMTE2NiAxMUJCO0FDQTA7MTEwMCAxMTY2IDExQkI7CitBQ0ExO0FDQTE7MTEwMCAxMTY2IDExQkM7QUNBMTsxMTAwIDExNjYgMTFCQzsKK0FDQTI7QUNBMjsxMTAwIDExNjYgMTFCRDtBQ0EyOzExMDAgMTE2NiAxMUJEOworQUNBMztBQ0EzOzExMDAgMTE2NiAxMUJFO0FDQTM7MTEwMCAxMTY2IDExQkU7CitBQ0E0O0FDQTQ7MTEwMCAxMTY2IDExQkY7QUNBNDsxMTAwIDExNjYgMTFCRjsKK0FDQTU7QUNBNTsxMTAwIDExNjYgMTFDMDtBQ0E1OzExMDAgMTE2NiAxMUMwOworQUNBNjtBQ0E2OzExMDAgMTE2NiAxMUMxO0FDQTY7MTEwMCAxMTY2IDExQzE7CitBQ0E3O0FDQTc7MTEwMCAxMTY2IDExQzI7QUNBNzsxMTAwIDExNjYgMTFDMjsKK0FDQTg7QUNBODsxMTAwIDExNjc7QUNBODsxMTAwIDExNjc7CitBQ0E5O0FDQTk7MTEwMCAxMTY3IDExQTg7QUNBOTsxMTAwIDExNjcgMTFBODsKK0FDQUE7QUNBQTsxMTAwIDExNjcgMTFBOTtBQ0FBOzExMDAgMTE2NyAxMUE5OworQUNBQjtBQ0FCOzExMDAgMTE2NyAxMUFBO0FDQUI7MTEwMCAxMTY3IDExQUE7CitBQ0FDO0FDQUM7MTEwMCAxMTY3IDExQUI7QUNBQzsxMTAwIDExNjcgMTFBQjsKK0FDQUQ7QUNBRDsxMTAwIDExNjcgMTFBQztBQ0FEOzExMDAgMTE2NyAxMUFDOworQUNBRTtBQ0FFOzExMDAgMTE2NyAxMUFEO0FDQUU7MTEwMCAxMTY3IDExQUQ7CitBQ0FGO0FDQUY7MTEwMCAxMTY3IDExQUU7QUNBRjsxMTAwIDExNjcgMTFBRTsKK0FDQjA7QUNCMDsxMTAwIDExNjcgMTFBRjtBQ0IwOzExMDAgMTE2NyAxMUFGOworQUNCMTtBQ0IxOzExMDAgMTE2NyAxMUIwO0FDQjE7MTEwMCAxMTY3IDExQjA7CitBQ0IyO0FDQjI7MTEwMCAxMTY3IDExQjE7QUNCMjsxMTAwIDExNjcgMTFCMTsKK0FDQjM7QUNCMzsxMTAwIDExNjcgMTFCMjtBQ0IzOzExMDAgMTE2NyAxMUIyOworQUNCNDtBQ0I0OzExMDAgMTE2NyAxMUIzO0FDQjQ7MTEwMCAxMTY3IDExQjM7CitBQ0I1O0FDQjU7MTEwMCAxMTY3IDExQjQ7QUNCNTsxMTAwIDExNjcgMTFCNDsKK0FDQjY7QUNCNjsxMTAwIDExNjcgMTFCNTtBQ0I2OzExMDAgMTE2NyAxMUI1OworQUNCNztBQ0I3OzExMDAgMTE2NyAxMUI2O0FDQjc7MTEwMCAxMTY3IDExQjY7CitBQ0I4O0FDQjg7MTEwMCAxMTY3IDExQjc7QUNCODsxMTAwIDExNjcgMTFCNzsKK0FDQjk7QUNCOTsxMTAwIDExNjcgMTFCODtBQ0I5OzExMDAgMTE2NyAxMUI4OworQUNCQTtBQ0JBOzExMDAgMTE2NyAxMUI5O0FDQkE7MTEwMCAxMTY3IDExQjk7CitBQ0JCO0FDQkI7MTEwMCAxMTY3IDExQkE7QUNCQjsxMTAwIDExNjcgMTFCQTsKK0FDQkM7QUNCQzsxMTAwIDExNjcgMTFCQjtBQ0JDOzExMDAgMTE2NyAxMUJCOworQUNCRDtBQ0JEOzExMDAgMTE2NyAxMUJDO0FDQkQ7MTEwMCAxMTY3IDExQkM7CitBQ0JFO0FDQkU7MTEwMCAxMTY3IDExQkQ7QUNCRTsxMTAwIDExNjcgMTFCRDsKK0FDQkY7QUNCRjsxMTAwIDExNjcgMTFCRTtBQ0JGOzExMDAgMTE2NyAxMUJFOworQUNDMDtBQ0MwOzExMDAgMTE2NyAxMUJGO0FDQzA7MTEwMCAxMTY3IDExQkY7CitBQ0MxO0FDQzE7MTEwMCAxMTY3IDExQzA7QUNDMTsxMTAwIDExNjcgMTFDMDsKK0FDQzI7QUNDMjsxMTAwIDExNjcgMTFDMTtBQ0MyOzExMDAgMTE2NyAxMUMxOworQUNDMztBQ0MzOzExMDAgMTE2NyAxMUMyO0FDQzM7MTEwMCAxMTY3IDExQzI7CitBQ0M0O0FDQzQ7MTEwMCAxMTY4O0FDQzQ7MTEwMCAxMTY4OworQUNDNTtBQ0M1OzExMDAgMTE2OCAxMUE4O0FDQzU7MTEwMCAxMTY4IDExQTg7CitBQ0M2O0FDQzY7MTEwMCAxMTY4IDExQTk7QUNDNjsxMTAwIDExNjggMTFBOTsKK0FDQzc7QUNDNzsxMTAwIDExNjggMTFBQTtBQ0M3OzExMDAgMTE2OCAxMUFBOworQUNDODtBQ0M4OzExMDAgMTE2OCAxMUFCO0FDQzg7MTEwMCAxMTY4IDExQUI7CitBQ0M5O0FDQzk7MTEwMCAxMTY4IDExQUM7QUNDOTsxMTAwIDExNjggMTFBQzsKK0FDQ0E7QUNDQTsxMTAwIDExNjggMTFBRDtBQ0NBOzExMDAgMTE2OCAxMUFEOworQUNDQjtBQ0NCOzExMDAgMTE2OCAxMUFFO0FDQ0I7MTEwMCAxMTY4IDExQUU7CitBQ0NDO0FDQ0M7MTEwMCAxMTY4IDExQUY7QUNDQzsxMTAwIDExNjggMTFBRjsKK0FDQ0Q7QUNDRDsxMTAwIDExNjggMTFCMDtBQ0NEOzExMDAgMTE2OCAxMUIwOworQUNDRTtBQ0NFOzExMDAgMTE2OCAxMUIxO0FDQ0U7MTEwMCAxMTY4IDExQjE7CitBQ0NGO0FDQ0Y7MTEwMCAxMTY4IDExQjI7QUNDRjsxMTAwIDExNjggMTFCMjsKK0FDRDA7QUNEMDsxMTAwIDExNjggMTFCMztBQ0QwOzExMDAgMTE2OCAxMUIzOworQUNEMTtBQ0QxOzExMDAgMTE2OCAxMUI0O0FDRDE7MTEwMCAxMTY4IDExQjQ7CitBQ0QyO0FDRDI7MTEwMCAxMTY4IDExQjU7QUNEMjsxMTAwIDExNjggMTFCNTsKK0FDRDM7QUNEMzsxMTAwIDExNjggMTFCNjtBQ0QzOzExMDAgMTE2OCAxMUI2OworQUNENDtBQ0Q0OzExMDAgMTE2OCAxMUI3O0FDRDQ7MTEwMCAxMTY4IDExQjc7CitBQ0Q1O0FDRDU7MTEwMCAxMTY4IDExQjg7QUNENTsxMTAwIDExNjggMTFCODsKK0FDRDY7QUNENjsxMTAwIDExNjggMTFCOTtBQ0Q2OzExMDAgMTE2OCAxMUI5OworQUNENztBQ0Q3OzExMDAgMTE2OCAxMUJBO0FDRDc7MTEwMCAxMTY4IDExQkE7CitBQ0Q4O0FDRDg7MTEwMCAxMTY4IDExQkI7QUNEODsxMTAwIDExNjggMTFCQjsKK0FDRDk7QUNEOTsxMTAwIDExNjggMTFCQztBQ0Q5OzExMDAgMTE2OCAxMUJDOworQUNEQTtBQ0RBOzExMDAgMTE2OCAxMUJEO0FDREE7MTEwMCAxMTY4IDExQkQ7CitBQ0RCO0FDREI7MTEwMCAxMTY4IDExQkU7QUNEQjsxMTAwIDExNjggMTFCRTsKK0FDREM7QUNEQzsxMTAwIDExNjggMTFCRjtBQ0RDOzExMDAgMTE2OCAxMUJGOworQUNERDtBQ0REOzExMDAgMTE2OCAxMUMwO0FDREQ7MTEwMCAxMTY4IDExQzA7CitBQ0RFO0FDREU7MTEwMCAxMTY4IDExQzE7QUNERTsxMTAwIDExNjggMTFDMTsKK0FDREY7QUNERjsxMTAwIDExNjggMTFDMjtBQ0RGOzExMDAgMTE2OCAxMUMyOworQUNFMDtBQ0UwOzExMDAgMTE2OTtBQ0UwOzExMDAgMTE2OTsKK0FDRTE7QUNFMTsxMTAwIDExNjkgMTFBODtBQ0UxOzExMDAgMTE2OSAxMUE4OworQUNFMjtBQ0UyOzExMDAgMTE2OSAxMUE5O0FDRTI7MTEwMCAxMTY5IDExQTk7CitBQ0UzO0FDRTM7MTEwMCAxMTY5IDExQUE7QUNFMzsxMTAwIDExNjkgMTFBQTsKK0FDRTQ7QUNFNDsxMTAwIDExNjkgMTFBQjtBQ0U0OzExMDAgMTE2OSAxMUFCOworQUNFNTtBQ0U1OzExMDAgMTE2OSAxMUFDO0FDRTU7MTEwMCAxMTY5IDExQUM7CitBQ0U2O0FDRTY7MTEwMCAxMTY5IDExQUQ7QUNFNjsxMTAwIDExNjkgMTFBRDsKK0FDRTc7QUNFNzsxMTAwIDExNjkgMTFBRTtBQ0U3OzExMDAgMTE2OSAxMUFFOworQUNFODtBQ0U4OzExMDAgMTE2OSAxMUFGO0FDRTg7MTEwMCAxMTY5IDExQUY7CitBQ0U5O0FDRTk7MTEwMCAxMTY5IDExQjA7QUNFOTsxMTAwIDExNjkgMTFCMDsKK0FDRUE7QUNFQTsxMTAwIDExNjkgMTFCMTtBQ0VBOzExMDAgMTE2OSAxMUIxOworQUNFQjtBQ0VCOzExMDAgMTE2OSAxMUIyO0FDRUI7MTEwMCAxMTY5IDExQjI7CitBQ0VDO0FDRUM7MTEwMCAxMTY5IDExQjM7QUNFQzsxMTAwIDExNjkgMTFCMzsKK0FDRUQ7QUNFRDsxMTAwIDExNjkgMTFCNDtBQ0VEOzExMDAgMTE2OSAxMUI0OworQUNFRTtBQ0VFOzExMDAgMTE2OSAxMUI1O0FDRUU7MTEwMCAxMTY5IDExQjU7CitBQ0VGO0FDRUY7MTEwMCAxMTY5IDExQjY7QUNFRjsxMTAwIDExNjkgMTFCNjsKK0FDRjA7QUNGMDsxMTAwIDExNjkgMTFCNztBQ0YwOzExMDAgMTE2OSAxMUI3OworQUNGMTtBQ0YxOzExMDAgMTE2OSAxMUI4O0FDRjE7MTEwMCAxMTY5IDExQjg7CitBQ0YyO0FDRjI7MTEwMCAxMTY5IDExQjk7QUNGMjsxMTAwIDExNjkgMTFCOTsKK0FDRjM7QUNGMzsxMTAwIDExNjkgMTFCQTtBQ0YzOzExMDAgMTE2OSAxMUJBOworQUNGNDtBQ0Y0OzExMDAgMTE2OSAxMUJCO0FDRjQ7MTEwMCAxMTY5IDExQkI7CitBQ0Y1O0FDRjU7MTEwMCAxMTY5IDExQkM7QUNGNTsxMTAwIDExNjkgMTFCQzsKK0FDRjY7QUNGNjsxMTAwIDExNjkgMTFCRDtBQ0Y2OzExMDAgMTE2OSAxMUJEOworQUNGNztBQ0Y3OzExMDAgMTE2OSAxMUJFO0FDRjc7MTEwMCAxMTY5IDExQkU7CitBQ0Y4O0FDRjg7MTEwMCAxMTY5IDExQkY7QUNGODsxMTAwIDExNjkgMTFCRjsKK0FDRjk7QUNGOTsxMTAwIDExNjkgMTFDMDtBQ0Y5OzExMDAgMTE2OSAxMUMwOworQUNGQTtBQ0ZBOzExMDAgMTE2OSAxMUMxO0FDRkE7MTEwMCAxMTY5IDExQzE7CitBQ0ZCO0FDRkI7MTEwMCAxMTY5IDExQzI7QUNGQjsxMTAwIDExNjkgMTFDMjsKK0FDRkM7QUNGQzsxMTAwIDExNkE7QUNGQzsxMTAwIDExNkE7CitBQ0ZEO0FDRkQ7MTEwMCAxMTZBIDExQTg7QUNGRDsxMTAwIDExNkEgMTFBODsKK0FDRkU7QUNGRTsxMTAwIDExNkEgMTFBOTtBQ0ZFOzExMDAgMTE2QSAxMUE5OworQUNGRjtBQ0ZGOzExMDAgMTE2QSAxMUFBO0FDRkY7MTEwMCAxMTZBIDExQUE7CitBRDAwO0FEMDA7MTEwMCAxMTZBIDExQUI7QUQwMDsxMTAwIDExNkEgMTFBQjsKK0FEMDE7QUQwMTsxMTAwIDExNkEgMTFBQztBRDAxOzExMDAgMTE2QSAxMUFDOworQUQwMjtBRDAyOzExMDAgMTE2QSAxMUFEO0FEMDI7MTEwMCAxMTZBIDExQUQ7CitBRDAzO0FEMDM7MTEwMCAxMTZBIDExQUU7QUQwMzsxMTAwIDExNkEgMTFBRTsKK0FEMDQ7QUQwNDsxMTAwIDExNkEgMTFBRjtBRDA0OzExMDAgMTE2QSAxMUFGOworQUQwNTtBRDA1OzExMDAgMTE2QSAxMUIwO0FEMDU7MTEwMCAxMTZBIDExQjA7CitBRDA2O0FEMDY7MTEwMCAxMTZBIDExQjE7QUQwNjsxMTAwIDExNkEgMTFCMTsKK0FEMDc7QUQwNzsxMTAwIDExNkEgMTFCMjtBRDA3OzExMDAgMTE2QSAxMUIyOworQUQwODtBRDA4OzExMDAgMTE2QSAxMUIzO0FEMDg7MTEwMCAxMTZBIDExQjM7CitBRDA5O0FEMDk7MTEwMCAxMTZBIDExQjQ7QUQwOTsxMTAwIDExNkEgMTFCNDsKK0FEMEE7QUQwQTsxMTAwIDExNkEgMTFCNTtBRDBBOzExMDAgMTE2QSAxMUI1OworQUQwQjtBRDBCOzExMDAgMTE2QSAxMUI2O0FEMEI7MTEwMCAxMTZBIDExQjY7CitBRDBDO0FEMEM7MTEwMCAxMTZBIDExQjc7QUQwQzsxMTAwIDExNkEgMTFCNzsKK0FEMEQ7QUQwRDsxMTAwIDExNkEgMTFCODtBRDBEOzExMDAgMTE2QSAxMUI4OworQUQwRTtBRDBFOzExMDAgMTE2QSAxMUI5O0FEMEU7MTEwMCAxMTZBIDExQjk7CitBRDBGO0FEMEY7MTEwMCAxMTZBIDExQkE7QUQwRjsxMTAwIDExNkEgMTFCQTsKK0FEMTA7QUQxMDsxMTAwIDExNkEgMTFCQjtBRDEwOzExMDAgMTE2QSAxMUJCOworQUQxMTtBRDExOzExMDAgMTE2QSAxMUJDO0FEMTE7MTEwMCAxMTZBIDExQkM7CitBRDEyO0FEMTI7MTEwMCAxMTZBIDExQkQ7QUQxMjsxMTAwIDExNkEgMTFCRDsKK0FEMTM7QUQxMzsxMTAwIDExNkEgMTFCRTtBRDEzOzExMDAgMTE2QSAxMUJFOworQUQxNDtBRDE0OzExMDAgMTE2QSAxMUJGO0FEMTQ7MTEwMCAxMTZBIDExQkY7CitBRDE1O0FEMTU7MTEwMCAxMTZBIDExQzA7QUQxNTsxMTAwIDExNkEgMTFDMDsKK0FEMTY7QUQxNjsxMTAwIDExNkEgMTFDMTtBRDE2OzExMDAgMTE2QSAxMUMxOworQUQxNztBRDE3OzExMDAgMTE2QSAxMUMyO0FEMTc7MTEwMCAxMTZBIDExQzI7CitBRDE4O0FEMTg7MTEwMCAxMTZCO0FEMTg7MTEwMCAxMTZCOworQUQxOTtBRDE5OzExMDAgMTE2QiAxMUE4O0FEMTk7MTEwMCAxMTZCIDExQTg7CitBRDFBO0FEMUE7MTEwMCAxMTZCIDExQTk7QUQxQTsxMTAwIDExNkIgMTFBOTsKK0FEMUI7QUQxQjsxMTAwIDExNkIgMTFBQTtBRDFCOzExMDAgMTE2QiAxMUFBOworQUQxQztBRDFDOzExMDAgMTE2QiAxMUFCO0FEMUM7MTEwMCAxMTZCIDExQUI7CitBRDFEO0FEMUQ7MTEwMCAxMTZCIDExQUM7QUQxRDsxMTAwIDExNkIgMTFBQzsKK0FEMUU7QUQxRTsxMTAwIDExNkIgMTFBRDtBRDFFOzExMDAgMTE2QiAxMUFEOworQUQxRjtBRDFGOzExMDAgMTE2QiAxMUFFO0FEMUY7MTEwMCAxMTZCIDExQUU7CitBRDIwO0FEMjA7MTEwMCAxMTZCIDExQUY7QUQyMDsxMTAwIDExNkIgMTFBRjsKK0FEMjE7QUQyMTsxMTAwIDExNkIgMTFCMDtBRDIxOzExMDAgMTE2QiAxMUIwOworQUQyMjtBRDIyOzExMDAgMTE2QiAxMUIxO0FEMjI7MTEwMCAxMTZCIDExQjE7CitBRDIzO0FEMjM7MTEwMCAxMTZCIDExQjI7QUQyMzsxMTAwIDExNkIgMTFCMjsKK0FEMjQ7QUQyNDsxMTAwIDExNkIgMTFCMztBRDI0OzExMDAgMTE2QiAxMUIzOworQUQyNTtBRDI1OzExMDAgMTE2QiAxMUI0O0FEMjU7MTEwMCAxMTZCIDExQjQ7CitBRDI2O0FEMjY7MTEwMCAxMTZCIDExQjU7QUQyNjsxMTAwIDExNkIgMTFCNTsKK0FEMjc7QUQyNzsxMTAwIDExNkIgMTFCNjtBRDI3OzExMDAgMTE2QiAxMUI2OworQUQyODtBRDI4OzExMDAgMTE2QiAxMUI3O0FEMjg7MTEwMCAxMTZCIDExQjc7CitBRDI5O0FEMjk7MTEwMCAxMTZCIDExQjg7QUQyOTsxMTAwIDExNkIgMTFCODsKK0FEMkE7QUQyQTsxMTAwIDExNkIgMTFCOTtBRDJBOzExMDAgMTE2QiAxMUI5OworQUQyQjtBRDJCOzExMDAgMTE2QiAxMUJBO0FEMkI7MTEwMCAxMTZCIDExQkE7CitBRDJDO0FEMkM7MTEwMCAxMTZCIDExQkI7QUQyQzsxMTAwIDExNkIgMTFCQjsKK0FEMkQ7QUQyRDsxMTAwIDExNkIgMTFCQztBRDJEOzExMDAgMTE2QiAxMUJDOworQUQyRTtBRDJFOzExMDAgMTE2QiAxMUJEO0FEMkU7MTEwMCAxMTZCIDExQkQ7CitBRDJGO0FEMkY7MTEwMCAxMTZCIDExQkU7QUQyRjsxMTAwIDExNkIgMTFCRTsKK0FEMzA7QUQzMDsxMTAwIDExNkIgMTFCRjtBRDMwOzExMDAgMTE2QiAxMUJGOworQUQzMTtBRDMxOzExMDAgMTE2QiAxMUMwO0FEMzE7MTEwMCAxMTZCIDExQzA7CitBRDMyO0FEMzI7MTEwMCAxMTZCIDExQzE7QUQzMjsxMTAwIDExNkIgMTFDMTsKK0FEMzM7QUQzMzsxMTAwIDExNkIgMTFDMjtBRDMzOzExMDAgMTE2QiAxMUMyOworQUQzNDtBRDM0OzExMDAgMTE2QztBRDM0OzExMDAgMTE2QzsKK0FEMzU7QUQzNTsxMTAwIDExNkMgMTFBODtBRDM1OzExMDAgMTE2QyAxMUE4OworQUQzNjtBRDM2OzExMDAgMTE2QyAxMUE5O0FEMzY7MTEwMCAxMTZDIDExQTk7CitBRDM3O0FEMzc7MTEwMCAxMTZDIDExQUE7QUQzNzsxMTAwIDExNkMgMTFBQTsKK0FEMzg7QUQzODsxMTAwIDExNkMgMTFBQjtBRDM4OzExMDAgMTE2QyAxMUFCOworQUQzOTtBRDM5OzExMDAgMTE2QyAxMUFDO0FEMzk7MTEwMCAxMTZDIDExQUM7CitBRDNBO0FEM0E7MTEwMCAxMTZDIDExQUQ7QUQzQTsxMTAwIDExNkMgMTFBRDsKK0FEM0I7QUQzQjsxMTAwIDExNkMgMTFBRTtBRDNCOzExMDAgMTE2QyAxMUFFOworQUQzQztBRDNDOzExMDAgMTE2QyAxMUFGO0FEM0M7MTEwMCAxMTZDIDExQUY7CitBRDNEO0FEM0Q7MTEwMCAxMTZDIDExQjA7QUQzRDsxMTAwIDExNkMgMTFCMDsKK0FEM0U7QUQzRTsxMTAwIDExNkMgMTFCMTtBRDNFOzExMDAgMTE2QyAxMUIxOworQUQzRjtBRDNGOzExMDAgMTE2QyAxMUIyO0FEM0Y7MTEwMCAxMTZDIDExQjI7CitBRDQwO0FENDA7MTEwMCAxMTZDIDExQjM7QUQ0MDsxMTAwIDExNkMgMTFCMzsKK0FENDE7QUQ0MTsxMTAwIDExNkMgMTFCNDtBRDQxOzExMDAgMTE2QyAxMUI0OworQUQ0MjtBRDQyOzExMDAgMTE2QyAxMUI1O0FENDI7MTEwMCAxMTZDIDExQjU7CitBRDQzO0FENDM7MTEwMCAxMTZDIDExQjY7QUQ0MzsxMTAwIDExNkMgMTFCNjsKK0FENDQ7QUQ0NDsxMTAwIDExNkMgMTFCNztBRDQ0OzExMDAgMTE2QyAxMUI3OworQUQ0NTtBRDQ1OzExMDAgMTE2QyAxMUI4O0FENDU7MTEwMCAxMTZDIDExQjg7CitBRDQ2O0FENDY7MTEwMCAxMTZDIDExQjk7QUQ0NjsxMTAwIDExNkMgMTFCOTsKK0FENDc7QUQ0NzsxMTAwIDExNkMgMTFCQTtBRDQ3OzExMDAgMTE2QyAxMUJBOworQUQ0ODtBRDQ4OzExMDAgMTE2QyAxMUJCO0FENDg7MTEwMCAxMTZDIDExQkI7CitBRDQ5O0FENDk7MTEwMCAxMTZDIDExQkM7QUQ0OTsxMTAwIDExNkMgMTFCQzsKK0FENEE7QUQ0QTsxMTAwIDExNkMgMTFCRDtBRDRBOzExMDAgMTE2QyAxMUJEOworQUQ0QjtBRDRCOzExMDAgMTE2QyAxMUJFO0FENEI7MTEwMCAxMTZDIDExQkU7CitBRDRDO0FENEM7MTEwMCAxMTZDIDExQkY7QUQ0QzsxMTAwIDExNkMgMTFCRjsKK0FENEQ7QUQ0RDsxMTAwIDExNkMgMTFDMDtBRDREOzExMDAgMTE2QyAxMUMwOworQUQ0RTtBRDRFOzExMDAgMTE2QyAxMUMxO0FENEU7MTEwMCAxMTZDIDExQzE7CitBRDRGO0FENEY7MTEwMCAxMTZDIDExQzI7QUQ0RjsxMTAwIDExNkMgMTFDMjsKK0FENTA7QUQ1MDsxMTAwIDExNkQ7QUQ1MDsxMTAwIDExNkQ7CitBRDUxO0FENTE7MTEwMCAxMTZEIDExQTg7QUQ1MTsxMTAwIDExNkQgMTFBODsKK0FENTI7QUQ1MjsxMTAwIDExNkQgMTFBOTtBRDUyOzExMDAgMTE2RCAxMUE5OworQUQ1MztBRDUzOzExMDAgMTE2RCAxMUFBO0FENTM7MTEwMCAxMTZEIDExQUE7CitBRDU0O0FENTQ7MTEwMCAxMTZEIDExQUI7QUQ1NDsxMTAwIDExNkQgMTFBQjsKK0FENTU7QUQ1NTsxMTAwIDExNkQgMTFBQztBRDU1OzExMDAgMTE2RCAxMUFDOworQUQ1NjtBRDU2OzExMDAgMTE2RCAxMUFEO0FENTY7MTEwMCAxMTZEIDExQUQ7CitBRDU3O0FENTc7MTEwMCAxMTZEIDExQUU7QUQ1NzsxMTAwIDExNkQgMTFBRTsKK0FENTg7QUQ1ODsxMTAwIDExNkQgMTFBRjtBRDU4OzExMDAgMTE2RCAxMUFGOworQUQ1OTtBRDU5OzExMDAgMTE2RCAxMUIwO0FENTk7MTEwMCAxMTZEIDExQjA7CitBRDVBO0FENUE7MTEwMCAxMTZEIDExQjE7QUQ1QTsxMTAwIDExNkQgMTFCMTsKK0FENUI7QUQ1QjsxMTAwIDExNkQgMTFCMjtBRDVCOzExMDAgMTE2RCAxMUIyOworQUQ1QztBRDVDOzExMDAgMTE2RCAxMUIzO0FENUM7MTEwMCAxMTZEIDExQjM7CitBRDVEO0FENUQ7MTEwMCAxMTZEIDExQjQ7QUQ1RDsxMTAwIDExNkQgMTFCNDsKK0FENUU7QUQ1RTsxMTAwIDExNkQgMTFCNTtBRDVFOzExMDAgMTE2RCAxMUI1OworQUQ1RjtBRDVGOzExMDAgMTE2RCAxMUI2O0FENUY7MTEwMCAxMTZEIDExQjY7CitBRDYwO0FENjA7MTEwMCAxMTZEIDExQjc7QUQ2MDsxMTAwIDExNkQgMTFCNzsKK0FENjE7QUQ2MTsxMTAwIDExNkQgMTFCODtBRDYxOzExMDAgMTE2RCAxMUI4OworQUQ2MjtBRDYyOzExMDAgMTE2RCAxMUI5O0FENjI7MTEwMCAxMTZEIDExQjk7CitBRDYzO0FENjM7MTEwMCAxMTZEIDExQkE7QUQ2MzsxMTAwIDExNkQgMTFCQTsKK0FENjQ7QUQ2NDsxMTAwIDExNkQgMTFCQjtBRDY0OzExMDAgMTE2RCAxMUJCOworQUQ2NTtBRDY1OzExMDAgMTE2RCAxMUJDO0FENjU7MTEwMCAxMTZEIDExQkM7CitBRDY2O0FENjY7MTEwMCAxMTZEIDExQkQ7QUQ2NjsxMTAwIDExNkQgMTFCRDsKK0FENjc7QUQ2NzsxMTAwIDExNkQgMTFCRTtBRDY3OzExMDAgMTE2RCAxMUJFOworQUQ2ODtBRDY4OzExMDAgMTE2RCAxMUJGO0FENjg7MTEwMCAxMTZEIDExQkY7CitBRDY5O0FENjk7MTEwMCAxMTZEIDExQzA7QUQ2OTsxMTAwIDExNkQgMTFDMDsKK0FENkE7QUQ2QTsxMTAwIDExNkQgMTFDMTtBRDZBOzExMDAgMTE2RCAxMUMxOworQUQ2QjtBRDZCOzExMDAgMTE2RCAxMUMyO0FENkI7MTEwMCAxMTZEIDExQzI7CitBRDZDO0FENkM7MTEwMCAxMTZFO0FENkM7MTEwMCAxMTZFOworQUQ2RDtBRDZEOzExMDAgMTE2RSAxMUE4O0FENkQ7MTEwMCAxMTZFIDExQTg7CitBRDZFO0FENkU7MTEwMCAxMTZFIDExQTk7QUQ2RTsxMTAwIDExNkUgMTFBOTsKK0FENkY7QUQ2RjsxMTAwIDExNkUgMTFBQTtBRDZGOzExMDAgMTE2RSAxMUFBOworQUQ3MDtBRDcwOzExMDAgMTE2RSAxMUFCO0FENzA7MTEwMCAxMTZFIDExQUI7CitBRDcxO0FENzE7MTEwMCAxMTZFIDExQUM7QUQ3MTsxMTAwIDExNkUgMTFBQzsKK0FENzI7QUQ3MjsxMTAwIDExNkUgMTFBRDtBRDcyOzExMDAgMTE2RSAxMUFEOworQUQ3MztBRDczOzExMDAgMTE2RSAxMUFFO0FENzM7MTEwMCAxMTZFIDExQUU7CitBRDc0O0FENzQ7MTEwMCAxMTZFIDExQUY7QUQ3NDsxMTAwIDExNkUgMTFBRjsKK0FENzU7QUQ3NTsxMTAwIDExNkUgMTFCMDtBRDc1OzExMDAgMTE2RSAxMUIwOworQUQ3NjtBRDc2OzExMDAgMTE2RSAxMUIxO0FENzY7MTEwMCAxMTZFIDExQjE7CitBRDc3O0FENzc7MTEwMCAxMTZFIDExQjI7QUQ3NzsxMTAwIDExNkUgMTFCMjsKK0FENzg7QUQ3ODsxMTAwIDExNkUgMTFCMztBRDc4OzExMDAgMTE2RSAxMUIzOworQUQ3OTtBRDc5OzExMDAgMTE2RSAxMUI0O0FENzk7MTEwMCAxMTZFIDExQjQ7CitBRDdBO0FEN0E7MTEwMCAxMTZFIDExQjU7QUQ3QTsxMTAwIDExNkUgMTFCNTsKK0FEN0I7QUQ3QjsxMTAwIDExNkUgMTFCNjtBRDdCOzExMDAgMTE2RSAxMUI2OworQUQ3QztBRDdDOzExMDAgMTE2RSAxMUI3O0FEN0M7MTEwMCAxMTZFIDExQjc7CitBRDdEO0FEN0Q7MTEwMCAxMTZFIDExQjg7QUQ3RDsxMTAwIDExNkUgMTFCODsKK0FEN0U7QUQ3RTsxMTAwIDExNkUgMTFCOTtBRDdFOzExMDAgMTE2RSAxMUI5OworQUQ3RjtBRDdGOzExMDAgMTE2RSAxMUJBO0FEN0Y7MTEwMCAxMTZFIDExQkE7CitBRDgwO0FEODA7MTEwMCAxMTZFIDExQkI7QUQ4MDsxMTAwIDExNkUgMTFCQjsKK0FEODE7QUQ4MTsxMTAwIDExNkUgMTFCQztBRDgxOzExMDAgMTE2RSAxMUJDOworQUQ4MjtBRDgyOzExMDAgMTE2RSAxMUJEO0FEODI7MTEwMCAxMTZFIDExQkQ7CitBRDgzO0FEODM7MTEwMCAxMTZFIDExQkU7QUQ4MzsxMTAwIDExNkUgMTFCRTsKK0FEODQ7QUQ4NDsxMTAwIDExNkUgMTFCRjtBRDg0OzExMDAgMTE2RSAxMUJGOworQUQ4NTtBRDg1OzExMDAgMTE2RSAxMUMwO0FEODU7MTEwMCAxMTZFIDExQzA7CitBRDg2O0FEODY7MTEwMCAxMTZFIDExQzE7QUQ4NjsxMTAwIDExNkUgMTFDMTsKK0FEODc7QUQ4NzsxMTAwIDExNkUgMTFDMjtBRDg3OzExMDAgMTE2RSAxMUMyOworQUQ4ODtBRDg4OzExMDAgMTE2RjtBRDg4OzExMDAgMTE2RjsKK0FEODk7QUQ4OTsxMTAwIDExNkYgMTFBODtBRDg5OzExMDAgMTE2RiAxMUE4OworQUQ4QTtBRDhBOzExMDAgMTE2RiAxMUE5O0FEOEE7MTEwMCAxMTZGIDExQTk7CitBRDhCO0FEOEI7MTEwMCAxMTZGIDExQUE7QUQ4QjsxMTAwIDExNkYgMTFBQTsKK0FEOEM7QUQ4QzsxMTAwIDExNkYgMTFBQjtBRDhDOzExMDAgMTE2RiAxMUFCOworQUQ4RDtBRDhEOzExMDAgMTE2RiAxMUFDO0FEOEQ7MTEwMCAxMTZGIDExQUM7CitBRDhFO0FEOEU7MTEwMCAxMTZGIDExQUQ7QUQ4RTsxMTAwIDExNkYgMTFBRDsKK0FEOEY7QUQ4RjsxMTAwIDExNkYgMTFBRTtBRDhGOzExMDAgMTE2RiAxMUFFOworQUQ5MDtBRDkwOzExMDAgMTE2RiAxMUFGO0FEOTA7MTEwMCAxMTZGIDExQUY7CitBRDkxO0FEOTE7MTEwMCAxMTZGIDExQjA7QUQ5MTsxMTAwIDExNkYgMTFCMDsKK0FEOTI7QUQ5MjsxMTAwIDExNkYgMTFCMTtBRDkyOzExMDAgMTE2RiAxMUIxOworQUQ5MztBRDkzOzExMDAgMTE2RiAxMUIyO0FEOTM7MTEwMCAxMTZGIDExQjI7CitBRDk0O0FEOTQ7MTEwMCAxMTZGIDExQjM7QUQ5NDsxMTAwIDExNkYgMTFCMzsKK0FEOTU7QUQ5NTsxMTAwIDExNkYgMTFCNDtBRDk1OzExMDAgMTE2RiAxMUI0OworQUQ5NjtBRDk2OzExMDAgMTE2RiAxMUI1O0FEOTY7MTEwMCAxMTZGIDExQjU7CitBRDk3O0FEOTc7MTEwMCAxMTZGIDExQjY7QUQ5NzsxMTAwIDExNkYgMTFCNjsKK0FEOTg7QUQ5ODsxMTAwIDExNkYgMTFCNztBRDk4OzExMDAgMTE2RiAxMUI3OworQUQ5OTtBRDk5OzExMDAgMTE2RiAxMUI4O0FEOTk7MTEwMCAxMTZGIDExQjg7CitBRDlBO0FEOUE7MTEwMCAxMTZGIDExQjk7QUQ5QTsxMTAwIDExNkYgMTFCOTsKK0FEOUI7QUQ5QjsxMTAwIDExNkYgMTFCQTtBRDlCOzExMDAgMTE2RiAxMUJBOworQUQ5QztBRDlDOzExMDAgMTE2RiAxMUJCO0FEOUM7MTEwMCAxMTZGIDExQkI7CitBRDlEO0FEOUQ7MTEwMCAxMTZGIDExQkM7QUQ5RDsxMTAwIDExNkYgMTFCQzsKK0FEOUU7QUQ5RTsxMTAwIDExNkYgMTFCRDtBRDlFOzExMDAgMTE2RiAxMUJEOworQUQ5RjtBRDlGOzExMDAgMTE2RiAxMUJFO0FEOUY7MTEwMCAxMTZGIDExQkU7CitBREEwO0FEQTA7MTEwMCAxMTZGIDExQkY7QURBMDsxMTAwIDExNkYgMTFCRjsKK0FEQTE7QURBMTsxMTAwIDExNkYgMTFDMDtBREExOzExMDAgMTE2RiAxMUMwOworQURBMjtBREEyOzExMDAgMTE2RiAxMUMxO0FEQTI7MTEwMCAxMTZGIDExQzE7CitBREEzO0FEQTM7MTEwMCAxMTZGIDExQzI7QURBMzsxMTAwIDExNkYgMTFDMjsKK0FEQTQ7QURBNDsxMTAwIDExNzA7QURBNDsxMTAwIDExNzA7CitBREE1O0FEQTU7MTEwMCAxMTcwIDExQTg7QURBNTsxMTAwIDExNzAgMTFBODsKK0FEQTY7QURBNjsxMTAwIDExNzAgMTFBOTtBREE2OzExMDAgMTE3MCAxMUE5OworQURBNztBREE3OzExMDAgMTE3MCAxMUFBO0FEQTc7MTEwMCAxMTcwIDExQUE7CitBREE4O0FEQTg7MTEwMCAxMTcwIDExQUI7QURBODsxMTAwIDExNzAgMTFBQjsKK0FEQTk7QURBOTsxMTAwIDExNzAgMTFBQztBREE5OzExMDAgMTE3MCAxMUFDOworQURBQTtBREFBOzExMDAgMTE3MCAxMUFEO0FEQUE7MTEwMCAxMTcwIDExQUQ7CitBREFCO0FEQUI7MTEwMCAxMTcwIDExQUU7QURBQjsxMTAwIDExNzAgMTFBRTsKK0FEQUM7QURBQzsxMTAwIDExNzAgMTFBRjtBREFDOzExMDAgMTE3MCAxMUFGOworQURBRDtBREFEOzExMDAgMTE3MCAxMUIwO0FEQUQ7MTEwMCAxMTcwIDExQjA7CitBREFFO0FEQUU7MTEwMCAxMTcwIDExQjE7QURBRTsxMTAwIDExNzAgMTFCMTsKK0FEQUY7QURBRjsxMTAwIDExNzAgMTFCMjtBREFGOzExMDAgMTE3MCAxMUIyOworQURCMDtBREIwOzExMDAgMTE3MCAxMUIzO0FEQjA7MTEwMCAxMTcwIDExQjM7CitBREIxO0FEQjE7MTEwMCAxMTcwIDExQjQ7QURCMTsxMTAwIDExNzAgMTFCNDsKK0FEQjI7QURCMjsxMTAwIDExNzAgMTFCNTtBREIyOzExMDAgMTE3MCAxMUI1OworQURCMztBREIzOzExMDAgMTE3MCAxMUI2O0FEQjM7MTEwMCAxMTcwIDExQjY7CitBREI0O0FEQjQ7MTEwMCAxMTcwIDExQjc7QURCNDsxMTAwIDExNzAgMTFCNzsKK0FEQjU7QURCNTsxMTAwIDExNzAgMTFCODtBREI1OzExMDAgMTE3MCAxMUI4OworQURCNjtBREI2OzExMDAgMTE3MCAxMUI5O0FEQjY7MTEwMCAxMTcwIDExQjk7CitBREI3O0FEQjc7MTEwMCAxMTcwIDExQkE7QURCNzsxMTAwIDExNzAgMTFCQTsKK0FEQjg7QURCODsxMTAwIDExNzAgMTFCQjtBREI4OzExMDAgMTE3MCAxMUJCOworQURCOTtBREI5OzExMDAgMTE3MCAxMUJDO0FEQjk7MTEwMCAxMTcwIDExQkM7CitBREJBO0FEQkE7MTEwMCAxMTcwIDExQkQ7QURCQTsxMTAwIDExNzAgMTFCRDsKK0FEQkI7QURCQjsxMTAwIDExNzAgMTFCRTtBREJCOzExMDAgMTE3MCAxMUJFOworQURCQztBREJDOzExMDAgMTE3MCAxMUJGO0FEQkM7MTEwMCAxMTcwIDExQkY7CitBREJEO0FEQkQ7MTEwMCAxMTcwIDExQzA7QURCRDsxMTAwIDExNzAgMTFDMDsKK0FEQkU7QURCRTsxMTAwIDExNzAgMTFDMTtBREJFOzExMDAgMTE3MCAxMUMxOworQURCRjtBREJGOzExMDAgMTE3MCAxMUMyO0FEQkY7MTEwMCAxMTcwIDExQzI7CitBREMwO0FEQzA7MTEwMCAxMTcxO0FEQzA7MTEwMCAxMTcxOworQURDMTtBREMxOzExMDAgMTE3MSAxMUE4O0FEQzE7MTEwMCAxMTcxIDExQTg7CitBREMyO0FEQzI7MTEwMCAxMTcxIDExQTk7QURDMjsxMTAwIDExNzEgMTFBOTsKK0FEQzM7QURDMzsxMTAwIDExNzEgMTFBQTtBREMzOzExMDAgMTE3MSAxMUFBOworQURDNDtBREM0OzExMDAgMTE3MSAxMUFCO0FEQzQ7MTEwMCAxMTcxIDExQUI7CitBREM1O0FEQzU7MTEwMCAxMTcxIDExQUM7QURDNTsxMTAwIDExNzEgMTFBQzsKK0FEQzY7QURDNjsxMTAwIDExNzEgMTFBRDtBREM2OzExMDAgMTE3MSAxMUFEOworQURDNztBREM3OzExMDAgMTE3MSAxMUFFO0FEQzc7MTEwMCAxMTcxIDExQUU7CitBREM4O0FEQzg7MTEwMCAxMTcxIDExQUY7QURDODsxMTAwIDExNzEgMTFBRjsKK0FEQzk7QURDOTsxMTAwIDExNzEgMTFCMDtBREM5OzExMDAgMTE3MSAxMUIwOworQURDQTtBRENBOzExMDAgMTE3MSAxMUIxO0FEQ0E7MTEwMCAxMTcxIDExQjE7CitBRENCO0FEQ0I7MTEwMCAxMTcxIDExQjI7QURDQjsxMTAwIDExNzEgMTFCMjsKK0FEQ0M7QURDQzsxMTAwIDExNzEgMTFCMztBRENDOzExMDAgMTE3MSAxMUIzOworQURDRDtBRENEOzExMDAgMTE3MSAxMUI0O0FEQ0Q7MTEwMCAxMTcxIDExQjQ7CitBRENFO0FEQ0U7MTEwMCAxMTcxIDExQjU7QURDRTsxMTAwIDExNzEgMTFCNTsKK0FEQ0Y7QURDRjsxMTAwIDExNzEgMTFCNjtBRENGOzExMDAgMTE3MSAxMUI2OworQUREMDtBREQwOzExMDAgMTE3MSAxMUI3O0FERDA7MTEwMCAxMTcxIDExQjc7CitBREQxO0FERDE7MTEwMCAxMTcxIDExQjg7QUREMTsxMTAwIDExNzEgMTFCODsKK0FERDI7QUREMjsxMTAwIDExNzEgMTFCOTtBREQyOzExMDAgMTE3MSAxMUI5OworQUREMztBREQzOzExMDAgMTE3MSAxMUJBO0FERDM7MTEwMCAxMTcxIDExQkE7CitBREQ0O0FERDQ7MTEwMCAxMTcxIDExQkI7QURENDsxMTAwIDExNzEgMTFCQjsKK0FERDU7QURENTsxMTAwIDExNzEgMTFCQztBREQ1OzExMDAgMTE3MSAxMUJDOworQURENjtBREQ2OzExMDAgMTE3MSAxMUJEO0FERDY7MTEwMCAxMTcxIDExQkQ7CitBREQ3O0FERDc7MTEwMCAxMTcxIDExQkU7QURENzsxMTAwIDExNzEgMTFCRTsKK0FERDg7QUREODsxMTAwIDExNzEgMTFCRjtBREQ4OzExMDAgMTE3MSAxMUJGOworQUREOTtBREQ5OzExMDAgMTE3MSAxMUMwO0FERDk7MTEwMCAxMTcxIDExQzA7CitBRERBO0FEREE7MTEwMCAxMTcxIDExQzE7QUREQTsxMTAwIDExNzEgMTFDMTsKK0FEREI7QUREQjsxMTAwIDExNzEgMTFDMjtBRERCOzExMDAgMTE3MSAxMUMyOworQUREQztBRERDOzExMDAgMTE3MjtBRERDOzExMDAgMTE3MjsKK0FEREQ7QURERDsxMTAwIDExNzIgMTFBODtBREREOzExMDAgMTE3MiAxMUE4OworQURERTtBRERFOzExMDAgMTE3MiAxMUE5O0FEREU7MTEwMCAxMTcyIDExQTk7CitBRERGO0FEREY7MTEwMCAxMTcyIDExQUE7QURERjsxMTAwIDExNzIgMTFBQTsKK0FERTA7QURFMDsxMTAwIDExNzIgMTFBQjtBREUwOzExMDAgMTE3MiAxMUFCOworQURFMTtBREUxOzExMDAgMTE3MiAxMUFDO0FERTE7MTEwMCAxMTcyIDExQUM7CitBREUyO0FERTI7MTEwMCAxMTcyIDExQUQ7QURFMjsxMTAwIDExNzIgMTFBRDsKK0FERTM7QURFMzsxMTAwIDExNzIgMTFBRTtBREUzOzExMDAgMTE3MiAxMUFFOworQURFNDtBREU0OzExMDAgMTE3MiAxMUFGO0FERTQ7MTEwMCAxMTcyIDExQUY7CitBREU1O0FERTU7MTEwMCAxMTcyIDExQjA7QURFNTsxMTAwIDExNzIgMTFCMDsKK0FERTY7QURFNjsxMTAwIDExNzIgMTFCMTtBREU2OzExMDAgMTE3MiAxMUIxOworQURFNztBREU3OzExMDAgMTE3MiAxMUIyO0FERTc7MTEwMCAxMTcyIDExQjI7CitBREU4O0FERTg7MTEwMCAxMTcyIDExQjM7QURFODsxMTAwIDExNzIgMTFCMzsKK0FERTk7QURFOTsxMTAwIDExNzIgMTFCNDtBREU5OzExMDAgMTE3MiAxMUI0OworQURFQTtBREVBOzExMDAgMTE3MiAxMUI1O0FERUE7MTEwMCAxMTcyIDExQjU7CitBREVCO0FERUI7MTEwMCAxMTcyIDExQjY7QURFQjsxMTAwIDExNzIgMTFCNjsKK0FERUM7QURFQzsxMTAwIDExNzIgMTFCNztBREVDOzExMDAgMTE3MiAxMUI3OworQURFRDtBREVEOzExMDAgMTE3MiAxMUI4O0FERUQ7MTEwMCAxMTcyIDExQjg7CitBREVFO0FERUU7MTEwMCAxMTcyIDExQjk7QURFRTsxMTAwIDExNzIgMTFCOTsKK0FERUY7QURFRjsxMTAwIDExNzIgMTFCQTtBREVGOzExMDAgMTE3MiAxMUJBOworQURGMDtBREYwOzExMDAgMTE3MiAxMUJCO0FERjA7MTEwMCAxMTcyIDExQkI7CitBREYxO0FERjE7MTEwMCAxMTcyIDExQkM7QURGMTsxMTAwIDExNzIgMTFCQzsKK0FERjI7QURGMjsxMTAwIDExNzIgMTFCRDtBREYyOzExMDAgMTE3MiAxMUJEOworQURGMztBREYzOzExMDAgMTE3MiAxMUJFO0FERjM7MTEwMCAxMTcyIDExQkU7CitBREY0O0FERjQ7MTEwMCAxMTcyIDExQkY7QURGNDsxMTAwIDExNzIgMTFCRjsKK0FERjU7QURGNTsxMTAwIDExNzIgMTFDMDtBREY1OzExMDAgMTE3MiAxMUMwOworQURGNjtBREY2OzExMDAgMTE3MiAxMUMxO0FERjY7MTEwMCAxMTcyIDExQzE7CitBREY3O0FERjc7MTEwMCAxMTcyIDExQzI7QURGNzsxMTAwIDExNzIgMTFDMjsKK0FERjg7QURGODsxMTAwIDExNzM7QURGODsxMTAwIDExNzM7CitBREY5O0FERjk7MTEwMCAxMTczIDExQTg7QURGOTsxMTAwIDExNzMgMTFBODsKK0FERkE7QURGQTsxMTAwIDExNzMgMTFBOTtBREZBOzExMDAgMTE3MyAxMUE5OworQURGQjtBREZCOzExMDAgMTE3MyAxMUFBO0FERkI7MTEwMCAxMTczIDExQUE7CitBREZDO0FERkM7MTEwMCAxMTczIDExQUI7QURGQzsxMTAwIDExNzMgMTFBQjsKK0FERkQ7QURGRDsxMTAwIDExNzMgMTFBQztBREZEOzExMDAgMTE3MyAxMUFDOworQURGRTtBREZFOzExMDAgMTE3MyAxMUFEO0FERkU7MTEwMCAxMTczIDExQUQ7CitBREZGO0FERkY7MTEwMCAxMTczIDExQUU7QURGRjsxMTAwIDExNzMgMTFBRTsKK0FFMDA7QUUwMDsxMTAwIDExNzMgMTFBRjtBRTAwOzExMDAgMTE3MyAxMUFGOworQUUwMTtBRTAxOzExMDAgMTE3MyAxMUIwO0FFMDE7MTEwMCAxMTczIDExQjA7CitBRTAyO0FFMDI7MTEwMCAxMTczIDExQjE7QUUwMjsxMTAwIDExNzMgMTFCMTsKK0FFMDM7QUUwMzsxMTAwIDExNzMgMTFCMjtBRTAzOzExMDAgMTE3MyAxMUIyOworQUUwNDtBRTA0OzExMDAgMTE3MyAxMUIzO0FFMDQ7MTEwMCAxMTczIDExQjM7CitBRTA1O0FFMDU7MTEwMCAxMTczIDExQjQ7QUUwNTsxMTAwIDExNzMgMTFCNDsKK0FFMDY7QUUwNjsxMTAwIDExNzMgMTFCNTtBRTA2OzExMDAgMTE3MyAxMUI1OworQUUwNztBRTA3OzExMDAgMTE3MyAxMUI2O0FFMDc7MTEwMCAxMTczIDExQjY7CitBRTA4O0FFMDg7MTEwMCAxMTczIDExQjc7QUUwODsxMTAwIDExNzMgMTFCNzsKK0FFMDk7QUUwOTsxMTAwIDExNzMgMTFCODtBRTA5OzExMDAgMTE3MyAxMUI4OworQUUwQTtBRTBBOzExMDAgMTE3MyAxMUI5O0FFMEE7MTEwMCAxMTczIDExQjk7CitBRTBCO0FFMEI7MTEwMCAxMTczIDExQkE7QUUwQjsxMTAwIDExNzMgMTFCQTsKK0FFMEM7QUUwQzsxMTAwIDExNzMgMTFCQjtBRTBDOzExMDAgMTE3MyAxMUJCOworQUUwRDtBRTBEOzExMDAgMTE3MyAxMUJDO0FFMEQ7MTEwMCAxMTczIDExQkM7CitBRTBFO0FFMEU7MTEwMCAxMTczIDExQkQ7QUUwRTsxMTAwIDExNzMgMTFCRDsKK0FFMEY7QUUwRjsxMTAwIDExNzMgMTFCRTtBRTBGOzExMDAgMTE3MyAxMUJFOworQUUxMDtBRTEwOzExMDAgMTE3MyAxMUJGO0FFMTA7MTEwMCAxMTczIDExQkY7CitBRTExO0FFMTE7MTEwMCAxMTczIDExQzA7QUUxMTsxMTAwIDExNzMgMTFDMDsKK0FFMTI7QUUxMjsxMTAwIDExNzMgMTFDMTtBRTEyOzExMDAgMTE3MyAxMUMxOworQUUxMztBRTEzOzExMDAgMTE3MyAxMUMyO0FFMTM7MTEwMCAxMTczIDExQzI7CitBRTE0O0FFMTQ7MTEwMCAxMTc0O0FFMTQ7MTEwMCAxMTc0OworQUUxNTtBRTE1OzExMDAgMTE3NCAxMUE4O0FFMTU7MTEwMCAxMTc0IDExQTg7CitBRTE2O0FFMTY7MTEwMCAxMTc0IDExQTk7QUUxNjsxMTAwIDExNzQgMTFBOTsKK0FFMTc7QUUxNzsxMTAwIDExNzQgMTFBQTtBRTE3OzExMDAgMTE3NCAxMUFBOworQUUxODtBRTE4OzExMDAgMTE3NCAxMUFCO0FFMTg7MTEwMCAxMTc0IDExQUI7CitBRTE5O0FFMTk7MTEwMCAxMTc0IDExQUM7QUUxOTsxMTAwIDExNzQgMTFBQzsKK0FFMUE7QUUxQTsxMTAwIDExNzQgMTFBRDtBRTFBOzExMDAgMTE3NCAxMUFEOworQUUxQjtBRTFCOzExMDAgMTE3NCAxMUFFO0FFMUI7MTEwMCAxMTc0IDExQUU7CitBRTFDO0FFMUM7MTEwMCAxMTc0IDExQUY7QUUxQzsxMTAwIDExNzQgMTFBRjsKK0FFMUQ7QUUxRDsxMTAwIDExNzQgMTFCMDtBRTFEOzExMDAgMTE3NCAxMUIwOworQUUxRTtBRTFFOzExMDAgMTE3NCAxMUIxO0FFMUU7MTEwMCAxMTc0IDExQjE7CitBRTFGO0FFMUY7MTEwMCAxMTc0IDExQjI7QUUxRjsxMTAwIDExNzQgMTFCMjsKK0FFMjA7QUUyMDsxMTAwIDExNzQgMTFCMztBRTIwOzExMDAgMTE3NCAxMUIzOworQUUyMTtBRTIxOzExMDAgMTE3NCAxMUI0O0FFMjE7MTEwMCAxMTc0IDExQjQ7CitBRTIyO0FFMjI7MTEwMCAxMTc0IDExQjU7QUUyMjsxMTAwIDExNzQgMTFCNTsKK0FFMjM7QUUyMzsxMTAwIDExNzQgMTFCNjtBRTIzOzExMDAgMTE3NCAxMUI2OworQUUyNDtBRTI0OzExMDAgMTE3NCAxMUI3O0FFMjQ7MTEwMCAxMTc0IDExQjc7CitBRTI1O0FFMjU7MTEwMCAxMTc0IDExQjg7QUUyNTsxMTAwIDExNzQgMTFCODsKK0FFMjY7QUUyNjsxMTAwIDExNzQgMTFCOTtBRTI2OzExMDAgMTE3NCAxMUI5OworQUUyNztBRTI3OzExMDAgMTE3NCAxMUJBO0FFMjc7MTEwMCAxMTc0IDExQkE7CitBRTI4O0FFMjg7MTEwMCAxMTc0IDExQkI7QUUyODsxMTAwIDExNzQgMTFCQjsKK0FFMjk7QUUyOTsxMTAwIDExNzQgMTFCQztBRTI5OzExMDAgMTE3NCAxMUJDOworQUUyQTtBRTJBOzExMDAgMTE3NCAxMUJEO0FFMkE7MTEwMCAxMTc0IDExQkQ7CitBRTJCO0FFMkI7MTEwMCAxMTc0IDExQkU7QUUyQjsxMTAwIDExNzQgMTFCRTsKK0FFMkM7QUUyQzsxMTAwIDExNzQgMTFCRjtBRTJDOzExMDAgMTE3NCAxMUJGOworQUUyRDtBRTJEOzExMDAgMTE3NCAxMUMwO0FFMkQ7MTEwMCAxMTc0IDExQzA7CitBRTJFO0FFMkU7MTEwMCAxMTc0IDExQzE7QUUyRTsxMTAwIDExNzQgMTFDMTsKK0FFMkY7QUUyRjsxMTAwIDExNzQgMTFDMjtBRTJGOzExMDAgMTE3NCAxMUMyOworQUUzMDtBRTMwOzExMDAgMTE3NTtBRTMwOzExMDAgMTE3NTsKK0FFMzE7QUUzMTsxMTAwIDExNzUgMTFBODtBRTMxOzExMDAgMTE3NSAxMUE4OworQUUzMjtBRTMyOzExMDAgMTE3NSAxMUE5O0FFMzI7MTEwMCAxMTc1IDExQTk7CitBRTMzO0FFMzM7MTEwMCAxMTc1IDExQUE7QUUzMzsxMTAwIDExNzUgMTFBQTsKK0FFMzQ7QUUzNDsxMTAwIDExNzUgMTFBQjtBRTM0OzExMDAgMTE3NSAxMUFCOworQUUzNTtBRTM1OzExMDAgMTE3NSAxMUFDO0FFMzU7MTEwMCAxMTc1IDExQUM7CitBRTM2O0FFMzY7MTEwMCAxMTc1IDExQUQ7QUUzNjsxMTAwIDExNzUgMTFBRDsKK0FFMzc7QUUzNzsxMTAwIDExNzUgMTFBRTtBRTM3OzExMDAgMTE3NSAxMUFFOworQUUzODtBRTM4OzExMDAgMTE3NSAxMUFGO0FFMzg7MTEwMCAxMTc1IDExQUY7CitBRTM5O0FFMzk7MTEwMCAxMTc1IDExQjA7QUUzOTsxMTAwIDExNzUgMTFCMDsKK0FFM0E7QUUzQTsxMTAwIDExNzUgMTFCMTtBRTNBOzExMDAgMTE3NSAxMUIxOworQUUzQjtBRTNCOzExMDAgMTE3NSAxMUIyO0FFM0I7MTEwMCAxMTc1IDExQjI7CitBRTNDO0FFM0M7MTEwMCAxMTc1IDExQjM7QUUzQzsxMTAwIDExNzUgMTFCMzsKK0FFM0Q7QUUzRDsxMTAwIDExNzUgMTFCNDtBRTNEOzExMDAgMTE3NSAxMUI0OworQUUzRTtBRTNFOzExMDAgMTE3NSAxMUI1O0FFM0U7MTEwMCAxMTc1IDExQjU7CitBRTNGO0FFM0Y7MTEwMCAxMTc1IDExQjY7QUUzRjsxMTAwIDExNzUgMTFCNjsKK0FFNDA7QUU0MDsxMTAwIDExNzUgMTFCNztBRTQwOzExMDAgMTE3NSAxMUI3OworQUU0MTtBRTQxOzExMDAgMTE3NSAxMUI4O0FFNDE7MTEwMCAxMTc1IDExQjg7CitBRTQyO0FFNDI7MTEwMCAxMTc1IDExQjk7QUU0MjsxMTAwIDExNzUgMTFCOTsKK0FFNDM7QUU0MzsxMTAwIDExNzUgMTFCQTtBRTQzOzExMDAgMTE3NSAxMUJBOworQUU0NDtBRTQ0OzExMDAgMTE3NSAxMUJCO0FFNDQ7MTEwMCAxMTc1IDExQkI7CitBRTQ1O0FFNDU7MTEwMCAxMTc1IDExQkM7QUU0NTsxMTAwIDExNzUgMTFCQzsKK0FFNDY7QUU0NjsxMTAwIDExNzUgMTFCRDtBRTQ2OzExMDAgMTE3NSAxMUJEOworQUU0NztBRTQ3OzExMDAgMTE3NSAxMUJFO0FFNDc7MTEwMCAxMTc1IDExQkU7CitBRTQ4O0FFNDg7MTEwMCAxMTc1IDExQkY7QUU0ODsxMTAwIDExNzUgMTFCRjsKK0FFNDk7QUU0OTsxMTAwIDExNzUgMTFDMDtBRTQ5OzExMDAgMTE3NSAxMUMwOworQUU0QTtBRTRBOzExMDAgMTE3NSAxMUMxO0FFNEE7MTEwMCAxMTc1IDExQzE7CitBRTRCO0FFNEI7MTEwMCAxMTc1IDExQzI7QUU0QjsxMTAwIDExNzUgMTFDMjsKK0FFNEM7QUU0QzsxMTAxIDExNjE7QUU0QzsxMTAxIDExNjE7CitBRTREO0FFNEQ7MTEwMSAxMTYxIDExQTg7QUU0RDsxMTAxIDExNjEgMTFBODsKK0FFNEU7QUU0RTsxMTAxIDExNjEgMTFBOTtBRTRFOzExMDEgMTE2MSAxMUE5OworQUU0RjtBRTRGOzExMDEgMTE2MSAxMUFBO0FFNEY7MTEwMSAxMTYxIDExQUE7CitBRTUwO0FFNTA7MTEwMSAxMTYxIDExQUI7QUU1MDsxMTAxIDExNjEgMTFBQjsKK0FFNTE7QUU1MTsxMTAxIDExNjEgMTFBQztBRTUxOzExMDEgMTE2MSAxMUFDOworQUU1MjtBRTUyOzExMDEgMTE2MSAxMUFEO0FFNTI7MTEwMSAxMTYxIDExQUQ7CitBRTUzO0FFNTM7MTEwMSAxMTYxIDExQUU7QUU1MzsxMTAxIDExNjEgMTFBRTsKK0FFNTQ7QUU1NDsxMTAxIDExNjEgMTFBRjtBRTU0OzExMDEgMTE2MSAxMUFGOworQUU1NTtBRTU1OzExMDEgMTE2MSAxMUIwO0FFNTU7MTEwMSAxMTYxIDExQjA7CitBRTU2O0FFNTY7MTEwMSAxMTYxIDExQjE7QUU1NjsxMTAxIDExNjEgMTFCMTsKK0FFNTc7QUU1NzsxMTAxIDExNjEgMTFCMjtBRTU3OzExMDEgMTE2MSAxMUIyOworQUU1ODtBRTU4OzExMDEgMTE2MSAxMUIzO0FFNTg7MTEwMSAxMTYxIDExQjM7CitBRTU5O0FFNTk7MTEwMSAxMTYxIDExQjQ7QUU1OTsxMTAxIDExNjEgMTFCNDsKK0FFNUE7QUU1QTsxMTAxIDExNjEgMTFCNTtBRTVBOzExMDEgMTE2MSAxMUI1OworQUU1QjtBRTVCOzExMDEgMTE2MSAxMUI2O0FFNUI7MTEwMSAxMTYxIDExQjY7CitBRTVDO0FFNUM7MTEwMSAxMTYxIDExQjc7QUU1QzsxMTAxIDExNjEgMTFCNzsKK0FFNUQ7QUU1RDsxMTAxIDExNjEgMTFCODtBRTVEOzExMDEgMTE2MSAxMUI4OworQUU1RTtBRTVFOzExMDEgMTE2MSAxMUI5O0FFNUU7MTEwMSAxMTYxIDExQjk7CitBRTVGO0FFNUY7MTEwMSAxMTYxIDExQkE7QUU1RjsxMTAxIDExNjEgMTFCQTsKK0FFNjA7QUU2MDsxMTAxIDExNjEgMTFCQjtBRTYwOzExMDEgMTE2MSAxMUJCOworQUU2MTtBRTYxOzExMDEgMTE2MSAxMUJDO0FFNjE7MTEwMSAxMTYxIDExQkM7CitBRTYyO0FFNjI7MTEwMSAxMTYxIDExQkQ7QUU2MjsxMTAxIDExNjEgMTFCRDsKK0FFNjM7QUU2MzsxMTAxIDExNjEgMTFCRTtBRTYzOzExMDEgMTE2MSAxMUJFOworQUU2NDtBRTY0OzExMDEgMTE2MSAxMUJGO0FFNjQ7MTEwMSAxMTYxIDExQkY7CitBRTY1O0FFNjU7MTEwMSAxMTYxIDExQzA7QUU2NTsxMTAxIDExNjEgMTFDMDsKK0FFNjY7QUU2NjsxMTAxIDExNjEgMTFDMTtBRTY2OzExMDEgMTE2MSAxMUMxOworQUU2NztBRTY3OzExMDEgMTE2MSAxMUMyO0FFNjc7MTEwMSAxMTYxIDExQzI7CitBRTY4O0FFNjg7MTEwMSAxMTYyO0FFNjg7MTEwMSAxMTYyOworQUU2OTtBRTY5OzExMDEgMTE2MiAxMUE4O0FFNjk7MTEwMSAxMTYyIDExQTg7CitBRTZBO0FFNkE7MTEwMSAxMTYyIDExQTk7QUU2QTsxMTAxIDExNjIgMTFBOTsKK0FFNkI7QUU2QjsxMTAxIDExNjIgMTFBQTtBRTZCOzExMDEgMTE2MiAxMUFBOworQUU2QztBRTZDOzExMDEgMTE2MiAxMUFCO0FFNkM7MTEwMSAxMTYyIDExQUI7CitBRTZEO0FFNkQ7MTEwMSAxMTYyIDExQUM7QUU2RDsxMTAxIDExNjIgMTFBQzsKK0FFNkU7QUU2RTsxMTAxIDExNjIgMTFBRDtBRTZFOzExMDEgMTE2MiAxMUFEOworQUU2RjtBRTZGOzExMDEgMTE2MiAxMUFFO0FFNkY7MTEwMSAxMTYyIDExQUU7CitBRTcwO0FFNzA7MTEwMSAxMTYyIDExQUY7QUU3MDsxMTAxIDExNjIgMTFBRjsKK0FFNzE7QUU3MTsxMTAxIDExNjIgMTFCMDtBRTcxOzExMDEgMTE2MiAxMUIwOworQUU3MjtBRTcyOzExMDEgMTE2MiAxMUIxO0FFNzI7MTEwMSAxMTYyIDExQjE7CitBRTczO0FFNzM7MTEwMSAxMTYyIDExQjI7QUU3MzsxMTAxIDExNjIgMTFCMjsKK0FFNzQ7QUU3NDsxMTAxIDExNjIgMTFCMztBRTc0OzExMDEgMTE2MiAxMUIzOworQUU3NTtBRTc1OzExMDEgMTE2MiAxMUI0O0FFNzU7MTEwMSAxMTYyIDExQjQ7CitBRTc2O0FFNzY7MTEwMSAxMTYyIDExQjU7QUU3NjsxMTAxIDExNjIgMTFCNTsKK0FFNzc7QUU3NzsxMTAxIDExNjIgMTFCNjtBRTc3OzExMDEgMTE2MiAxMUI2OworQUU3ODtBRTc4OzExMDEgMTE2MiAxMUI3O0FFNzg7MTEwMSAxMTYyIDExQjc7CitBRTc5O0FFNzk7MTEwMSAxMTYyIDExQjg7QUU3OTsxMTAxIDExNjIgMTFCODsKK0FFN0E7QUU3QTsxMTAxIDExNjIgMTFCOTtBRTdBOzExMDEgMTE2MiAxMUI5OworQUU3QjtBRTdCOzExMDEgMTE2MiAxMUJBO0FFN0I7MTEwMSAxMTYyIDExQkE7CitBRTdDO0FFN0M7MTEwMSAxMTYyIDExQkI7QUU3QzsxMTAxIDExNjIgMTFCQjsKK0FFN0Q7QUU3RDsxMTAxIDExNjIgMTFCQztBRTdEOzExMDEgMTE2MiAxMUJDOworQUU3RTtBRTdFOzExMDEgMTE2MiAxMUJEO0FFN0U7MTEwMSAxMTYyIDExQkQ7CitBRTdGO0FFN0Y7MTEwMSAxMTYyIDExQkU7QUU3RjsxMTAxIDExNjIgMTFCRTsKK0FFODA7QUU4MDsxMTAxIDExNjIgMTFCRjtBRTgwOzExMDEgMTE2MiAxMUJGOworQUU4MTtBRTgxOzExMDEgMTE2MiAxMUMwO0FFODE7MTEwMSAxMTYyIDExQzA7CitBRTgyO0FFODI7MTEwMSAxMTYyIDExQzE7QUU4MjsxMTAxIDExNjIgMTFDMTsKK0FFODM7QUU4MzsxMTAxIDExNjIgMTFDMjtBRTgzOzExMDEgMTE2MiAxMUMyOworQUU4NDtBRTg0OzExMDEgMTE2MztBRTg0OzExMDEgMTE2MzsKK0FFODU7QUU4NTsxMTAxIDExNjMgMTFBODtBRTg1OzExMDEgMTE2MyAxMUE4OworQUU4NjtBRTg2OzExMDEgMTE2MyAxMUE5O0FFODY7MTEwMSAxMTYzIDExQTk7CitBRTg3O0FFODc7MTEwMSAxMTYzIDExQUE7QUU4NzsxMTAxIDExNjMgMTFBQTsKK0FFODg7QUU4ODsxMTAxIDExNjMgMTFBQjtBRTg4OzExMDEgMTE2MyAxMUFCOworQUU4OTtBRTg5OzExMDEgMTE2MyAxMUFDO0FFODk7MTEwMSAxMTYzIDExQUM7CitBRThBO0FFOEE7MTEwMSAxMTYzIDExQUQ7QUU4QTsxMTAxIDExNjMgMTFBRDsKK0FFOEI7QUU4QjsxMTAxIDExNjMgMTFBRTtBRThCOzExMDEgMTE2MyAxMUFFOworQUU4QztBRThDOzExMDEgMTE2MyAxMUFGO0FFOEM7MTEwMSAxMTYzIDExQUY7CitBRThEO0FFOEQ7MTEwMSAxMTYzIDExQjA7QUU4RDsxMTAxIDExNjMgMTFCMDsKK0FFOEU7QUU4RTsxMTAxIDExNjMgMTFCMTtBRThFOzExMDEgMTE2MyAxMUIxOworQUU4RjtBRThGOzExMDEgMTE2MyAxMUIyO0FFOEY7MTEwMSAxMTYzIDExQjI7CitBRTkwO0FFOTA7MTEwMSAxMTYzIDExQjM7QUU5MDsxMTAxIDExNjMgMTFCMzsKK0FFOTE7QUU5MTsxMTAxIDExNjMgMTFCNDtBRTkxOzExMDEgMTE2MyAxMUI0OworQUU5MjtBRTkyOzExMDEgMTE2MyAxMUI1O0FFOTI7MTEwMSAxMTYzIDExQjU7CitBRTkzO0FFOTM7MTEwMSAxMTYzIDExQjY7QUU5MzsxMTAxIDExNjMgMTFCNjsKK0FFOTQ7QUU5NDsxMTAxIDExNjMgMTFCNztBRTk0OzExMDEgMTE2MyAxMUI3OworQUU5NTtBRTk1OzExMDEgMTE2MyAxMUI4O0FFOTU7MTEwMSAxMTYzIDExQjg7CitBRTk2O0FFOTY7MTEwMSAxMTYzIDExQjk7QUU5NjsxMTAxIDExNjMgMTFCOTsKK0FFOTc7QUU5NzsxMTAxIDExNjMgMTFCQTtBRTk3OzExMDEgMTE2MyAxMUJBOworQUU5ODtBRTk4OzExMDEgMTE2MyAxMUJCO0FFOTg7MTEwMSAxMTYzIDExQkI7CitBRTk5O0FFOTk7MTEwMSAxMTYzIDExQkM7QUU5OTsxMTAxIDExNjMgMTFCQzsKK0FFOUE7QUU5QTsxMTAxIDExNjMgMTFCRDtBRTlBOzExMDEgMTE2MyAxMUJEOworQUU5QjtBRTlCOzExMDEgMTE2MyAxMUJFO0FFOUI7MTEwMSAxMTYzIDExQkU7CitBRTlDO0FFOUM7MTEwMSAxMTYzIDExQkY7QUU5QzsxMTAxIDExNjMgMTFCRjsKK0FFOUQ7QUU5RDsxMTAxIDExNjMgMTFDMDtBRTlEOzExMDEgMTE2MyAxMUMwOworQUU5RTtBRTlFOzExMDEgMTE2MyAxMUMxO0FFOUU7MTEwMSAxMTYzIDExQzE7CitBRTlGO0FFOUY7MTEwMSAxMTYzIDExQzI7QUU5RjsxMTAxIDExNjMgMTFDMjsKK0FFQTA7QUVBMDsxMTAxIDExNjQ7QUVBMDsxMTAxIDExNjQ7CitBRUExO0FFQTE7MTEwMSAxMTY0IDExQTg7QUVBMTsxMTAxIDExNjQgMTFBODsKK0FFQTI7QUVBMjsxMTAxIDExNjQgMTFBOTtBRUEyOzExMDEgMTE2NCAxMUE5OworQUVBMztBRUEzOzExMDEgMTE2NCAxMUFBO0FFQTM7MTEwMSAxMTY0IDExQUE7CitBRUE0O0FFQTQ7MTEwMSAxMTY0IDExQUI7QUVBNDsxMTAxIDExNjQgMTFBQjsKK0FFQTU7QUVBNTsxMTAxIDExNjQgMTFBQztBRUE1OzExMDEgMTE2NCAxMUFDOworQUVBNjtBRUE2OzExMDEgMTE2NCAxMUFEO0FFQTY7MTEwMSAxMTY0IDExQUQ7CitBRUE3O0FFQTc7MTEwMSAxMTY0IDExQUU7QUVBNzsxMTAxIDExNjQgMTFBRTsKK0FFQTg7QUVBODsxMTAxIDExNjQgMTFBRjtBRUE4OzExMDEgMTE2NCAxMUFGOworQUVBOTtBRUE5OzExMDEgMTE2NCAxMUIwO0FFQTk7MTEwMSAxMTY0IDExQjA7CitBRUFBO0FFQUE7MTEwMSAxMTY0IDExQjE7QUVBQTsxMTAxIDExNjQgMTFCMTsKK0FFQUI7QUVBQjsxMTAxIDExNjQgMTFCMjtBRUFCOzExMDEgMTE2NCAxMUIyOworQUVBQztBRUFDOzExMDEgMTE2NCAxMUIzO0FFQUM7MTEwMSAxMTY0IDExQjM7CitBRUFEO0FFQUQ7MTEwMSAxMTY0IDExQjQ7QUVBRDsxMTAxIDExNjQgMTFCNDsKK0FFQUU7QUVBRTsxMTAxIDExNjQgMTFCNTtBRUFFOzExMDEgMTE2NCAxMUI1OworQUVBRjtBRUFGOzExMDEgMTE2NCAxMUI2O0FFQUY7MTEwMSAxMTY0IDExQjY7CitBRUIwO0FFQjA7MTEwMSAxMTY0IDExQjc7QUVCMDsxMTAxIDExNjQgMTFCNzsKK0FFQjE7QUVCMTsxMTAxIDExNjQgMTFCODtBRUIxOzExMDEgMTE2NCAxMUI4OworQUVCMjtBRUIyOzExMDEgMTE2NCAxMUI5O0FFQjI7MTEwMSAxMTY0IDExQjk7CitBRUIzO0FFQjM7MTEwMSAxMTY0IDExQkE7QUVCMzsxMTAxIDExNjQgMTFCQTsKK0FFQjQ7QUVCNDsxMTAxIDExNjQgMTFCQjtBRUI0OzExMDEgMTE2NCAxMUJCOworQUVCNTtBRUI1OzExMDEgMTE2NCAxMUJDO0FFQjU7MTEwMSAxMTY0IDExQkM7CitBRUI2O0FFQjY7MTEwMSAxMTY0IDExQkQ7QUVCNjsxMTAxIDExNjQgMTFCRDsKK0FFQjc7QUVCNzsxMTAxIDExNjQgMTFCRTtBRUI3OzExMDEgMTE2NCAxMUJFOworQUVCODtBRUI4OzExMDEgMTE2NCAxMUJGO0FFQjg7MTEwMSAxMTY0IDExQkY7CitBRUI5O0FFQjk7MTEwMSAxMTY0IDExQzA7QUVCOTsxMTAxIDExNjQgMTFDMDsKK0FFQkE7QUVCQTsxMTAxIDExNjQgMTFDMTtBRUJBOzExMDEgMTE2NCAxMUMxOworQUVCQjtBRUJCOzExMDEgMTE2NCAxMUMyO0FFQkI7MTEwMSAxMTY0IDExQzI7CitBRUJDO0FFQkM7MTEwMSAxMTY1O0FFQkM7MTEwMSAxMTY1OworQUVCRDtBRUJEOzExMDEgMTE2NSAxMUE4O0FFQkQ7MTEwMSAxMTY1IDExQTg7CitBRUJFO0FFQkU7MTEwMSAxMTY1IDExQTk7QUVCRTsxMTAxIDExNjUgMTFBOTsKK0FFQkY7QUVCRjsxMTAxIDExNjUgMTFBQTtBRUJGOzExMDEgMTE2NSAxMUFBOworQUVDMDtBRUMwOzExMDEgMTE2NSAxMUFCO0FFQzA7MTEwMSAxMTY1IDExQUI7CitBRUMxO0FFQzE7MTEwMSAxMTY1IDExQUM7QUVDMTsxMTAxIDExNjUgMTFBQzsKK0FFQzI7QUVDMjsxMTAxIDExNjUgMTFBRDtBRUMyOzExMDEgMTE2NSAxMUFEOworQUVDMztBRUMzOzExMDEgMTE2NSAxMUFFO0FFQzM7MTEwMSAxMTY1IDExQUU7CitBRUM0O0FFQzQ7MTEwMSAxMTY1IDExQUY7QUVDNDsxMTAxIDExNjUgMTFBRjsKK0FFQzU7QUVDNTsxMTAxIDExNjUgMTFCMDtBRUM1OzExMDEgMTE2NSAxMUIwOworQUVDNjtBRUM2OzExMDEgMTE2NSAxMUIxO0FFQzY7MTEwMSAxMTY1IDExQjE7CitBRUM3O0FFQzc7MTEwMSAxMTY1IDExQjI7QUVDNzsxMTAxIDExNjUgMTFCMjsKK0FFQzg7QUVDODsxMTAxIDExNjUgMTFCMztBRUM4OzExMDEgMTE2NSAxMUIzOworQUVDOTtBRUM5OzExMDEgMTE2NSAxMUI0O0FFQzk7MTEwMSAxMTY1IDExQjQ7CitBRUNBO0FFQ0E7MTEwMSAxMTY1IDExQjU7QUVDQTsxMTAxIDExNjUgMTFCNTsKK0FFQ0I7QUVDQjsxMTAxIDExNjUgMTFCNjtBRUNCOzExMDEgMTE2NSAxMUI2OworQUVDQztBRUNDOzExMDEgMTE2NSAxMUI3O0FFQ0M7MTEwMSAxMTY1IDExQjc7CitBRUNEO0FFQ0Q7MTEwMSAxMTY1IDExQjg7QUVDRDsxMTAxIDExNjUgMTFCODsKK0FFQ0U7QUVDRTsxMTAxIDExNjUgMTFCOTtBRUNFOzExMDEgMTE2NSAxMUI5OworQUVDRjtBRUNGOzExMDEgMTE2NSAxMUJBO0FFQ0Y7MTEwMSAxMTY1IDExQkE7CitBRUQwO0FFRDA7MTEwMSAxMTY1IDExQkI7QUVEMDsxMTAxIDExNjUgMTFCQjsKK0FFRDE7QUVEMTsxMTAxIDExNjUgMTFCQztBRUQxOzExMDEgMTE2NSAxMUJDOworQUVEMjtBRUQyOzExMDEgMTE2NSAxMUJEO0FFRDI7MTEwMSAxMTY1IDExQkQ7CitBRUQzO0FFRDM7MTEwMSAxMTY1IDExQkU7QUVEMzsxMTAxIDExNjUgMTFCRTsKK0FFRDQ7QUVENDsxMTAxIDExNjUgMTFCRjtBRUQ0OzExMDEgMTE2NSAxMUJGOworQUVENTtBRUQ1OzExMDEgMTE2NSAxMUMwO0FFRDU7MTEwMSAxMTY1IDExQzA7CitBRUQ2O0FFRDY7MTEwMSAxMTY1IDExQzE7QUVENjsxMTAxIDExNjUgMTFDMTsKK0FFRDc7QUVENzsxMTAxIDExNjUgMTFDMjtBRUQ3OzExMDEgMTE2NSAxMUMyOworQUVEODtBRUQ4OzExMDEgMTE2NjtBRUQ4OzExMDEgMTE2NjsKK0FFRDk7QUVEOTsxMTAxIDExNjYgMTFBODtBRUQ5OzExMDEgMTE2NiAxMUE4OworQUVEQTtBRURBOzExMDEgMTE2NiAxMUE5O0FFREE7MTEwMSAxMTY2IDExQTk7CitBRURCO0FFREI7MTEwMSAxMTY2IDExQUE7QUVEQjsxMTAxIDExNjYgMTFBQTsKK0FFREM7QUVEQzsxMTAxIDExNjYgMTFBQjtBRURDOzExMDEgMTE2NiAxMUFCOworQUVERDtBRUREOzExMDEgMTE2NiAxMUFDO0FFREQ7MTEwMSAxMTY2IDExQUM7CitBRURFO0FFREU7MTEwMSAxMTY2IDExQUQ7QUVERTsxMTAxIDExNjYgMTFBRDsKK0FFREY7QUVERjsxMTAxIDExNjYgMTFBRTtBRURGOzExMDEgMTE2NiAxMUFFOworQUVFMDtBRUUwOzExMDEgMTE2NiAxMUFGO0FFRTA7MTEwMSAxMTY2IDExQUY7CitBRUUxO0FFRTE7MTEwMSAxMTY2IDExQjA7QUVFMTsxMTAxIDExNjYgMTFCMDsKK0FFRTI7QUVFMjsxMTAxIDExNjYgMTFCMTtBRUUyOzExMDEgMTE2NiAxMUIxOworQUVFMztBRUUzOzExMDEgMTE2NiAxMUIyO0FFRTM7MTEwMSAxMTY2IDExQjI7CitBRUU0O0FFRTQ7MTEwMSAxMTY2IDExQjM7QUVFNDsxMTAxIDExNjYgMTFCMzsKK0FFRTU7QUVFNTsxMTAxIDExNjYgMTFCNDtBRUU1OzExMDEgMTE2NiAxMUI0OworQUVFNjtBRUU2OzExMDEgMTE2NiAxMUI1O0FFRTY7MTEwMSAxMTY2IDExQjU7CitBRUU3O0FFRTc7MTEwMSAxMTY2IDExQjY7QUVFNzsxMTAxIDExNjYgMTFCNjsKK0FFRTg7QUVFODsxMTAxIDExNjYgMTFCNztBRUU4OzExMDEgMTE2NiAxMUI3OworQUVFOTtBRUU5OzExMDEgMTE2NiAxMUI4O0FFRTk7MTEwMSAxMTY2IDExQjg7CitBRUVBO0FFRUE7MTEwMSAxMTY2IDExQjk7QUVFQTsxMTAxIDExNjYgMTFCOTsKK0FFRUI7QUVFQjsxMTAxIDExNjYgMTFCQTtBRUVCOzExMDEgMTE2NiAxMUJBOworQUVFQztBRUVDOzExMDEgMTE2NiAxMUJCO0FFRUM7MTEwMSAxMTY2IDExQkI7CitBRUVEO0FFRUQ7MTEwMSAxMTY2IDExQkM7QUVFRDsxMTAxIDExNjYgMTFCQzsKK0FFRUU7QUVFRTsxMTAxIDExNjYgMTFCRDtBRUVFOzExMDEgMTE2NiAxMUJEOworQUVFRjtBRUVGOzExMDEgMTE2NiAxMUJFO0FFRUY7MTEwMSAxMTY2IDExQkU7CitBRUYwO0FFRjA7MTEwMSAxMTY2IDExQkY7QUVGMDsxMTAxIDExNjYgMTFCRjsKK0FFRjE7QUVGMTsxMTAxIDExNjYgMTFDMDtBRUYxOzExMDEgMTE2NiAxMUMwOworQUVGMjtBRUYyOzExMDEgMTE2NiAxMUMxO0FFRjI7MTEwMSAxMTY2IDExQzE7CitBRUYzO0FFRjM7MTEwMSAxMTY2IDExQzI7QUVGMzsxMTAxIDExNjYgMTFDMjsKK0FFRjQ7QUVGNDsxMTAxIDExNjc7QUVGNDsxMTAxIDExNjc7CitBRUY1O0FFRjU7MTEwMSAxMTY3IDExQTg7QUVGNTsxMTAxIDExNjcgMTFBODsKK0FFRjY7QUVGNjsxMTAxIDExNjcgMTFBOTtBRUY2OzExMDEgMTE2NyAxMUE5OworQUVGNztBRUY3OzExMDEgMTE2NyAxMUFBO0FFRjc7MTEwMSAxMTY3IDExQUE7CitBRUY4O0FFRjg7MTEwMSAxMTY3IDExQUI7QUVGODsxMTAxIDExNjcgMTFBQjsKK0FFRjk7QUVGOTsxMTAxIDExNjcgMTFBQztBRUY5OzExMDEgMTE2NyAxMUFDOworQUVGQTtBRUZBOzExMDEgMTE2NyAxMUFEO0FFRkE7MTEwMSAxMTY3IDExQUQ7CitBRUZCO0FFRkI7MTEwMSAxMTY3IDExQUU7QUVGQjsxMTAxIDExNjcgMTFBRTsKK0FFRkM7QUVGQzsxMTAxIDExNjcgMTFBRjtBRUZDOzExMDEgMTE2NyAxMUFGOworQUVGRDtBRUZEOzExMDEgMTE2NyAxMUIwO0FFRkQ7MTEwMSAxMTY3IDExQjA7CitBRUZFO0FFRkU7MTEwMSAxMTY3IDExQjE7QUVGRTsxMTAxIDExNjcgMTFCMTsKK0FFRkY7QUVGRjsxMTAxIDExNjcgMTFCMjtBRUZGOzExMDEgMTE2NyAxMUIyOworQUYwMDtBRjAwOzExMDEgMTE2NyAxMUIzO0FGMDA7MTEwMSAxMTY3IDExQjM7CitBRjAxO0FGMDE7MTEwMSAxMTY3IDExQjQ7QUYwMTsxMTAxIDExNjcgMTFCNDsKK0FGMDI7QUYwMjsxMTAxIDExNjcgMTFCNTtBRjAyOzExMDEgMTE2NyAxMUI1OworQUYwMztBRjAzOzExMDEgMTE2NyAxMUI2O0FGMDM7MTEwMSAxMTY3IDExQjY7CitBRjA0O0FGMDQ7MTEwMSAxMTY3IDExQjc7QUYwNDsxMTAxIDExNjcgMTFCNzsKK0FGMDU7QUYwNTsxMTAxIDExNjcgMTFCODtBRjA1OzExMDEgMTE2NyAxMUI4OworQUYwNjtBRjA2OzExMDEgMTE2NyAxMUI5O0FGMDY7MTEwMSAxMTY3IDExQjk7CitBRjA3O0FGMDc7MTEwMSAxMTY3IDExQkE7QUYwNzsxMTAxIDExNjcgMTFCQTsKK0FGMDg7QUYwODsxMTAxIDExNjcgMTFCQjtBRjA4OzExMDEgMTE2NyAxMUJCOworQUYwOTtBRjA5OzExMDEgMTE2NyAxMUJDO0FGMDk7MTEwMSAxMTY3IDExQkM7CitBRjBBO0FGMEE7MTEwMSAxMTY3IDExQkQ7QUYwQTsxMTAxIDExNjcgMTFCRDsKK0FGMEI7QUYwQjsxMTAxIDExNjcgMTFCRTtBRjBCOzExMDEgMTE2NyAxMUJFOworQUYwQztBRjBDOzExMDEgMTE2NyAxMUJGO0FGMEM7MTEwMSAxMTY3IDExQkY7CitBRjBEO0FGMEQ7MTEwMSAxMTY3IDExQzA7QUYwRDsxMTAxIDExNjcgMTFDMDsKK0FGMEU7QUYwRTsxMTAxIDExNjcgMTFDMTtBRjBFOzExMDEgMTE2NyAxMUMxOworQUYwRjtBRjBGOzExMDEgMTE2NyAxMUMyO0FGMEY7MTEwMSAxMTY3IDExQzI7CitBRjEwO0FGMTA7MTEwMSAxMTY4O0FGMTA7MTEwMSAxMTY4OworQUYxMTtBRjExOzExMDEgMTE2OCAxMUE4O0FGMTE7MTEwMSAxMTY4IDExQTg7CitBRjEyO0FGMTI7MTEwMSAxMTY4IDExQTk7QUYxMjsxMTAxIDExNjggMTFBOTsKK0FGMTM7QUYxMzsxMTAxIDExNjggMTFBQTtBRjEzOzExMDEgMTE2OCAxMUFBOworQUYxNDtBRjE0OzExMDEgMTE2OCAxMUFCO0FGMTQ7MTEwMSAxMTY4IDExQUI7CitBRjE1O0FGMTU7MTEwMSAxMTY4IDExQUM7QUYxNTsxMTAxIDExNjggMTFBQzsKK0FGMTY7QUYxNjsxMTAxIDExNjggMTFBRDtBRjE2OzExMDEgMTE2OCAxMUFEOworQUYxNztBRjE3OzExMDEgMTE2OCAxMUFFO0FGMTc7MTEwMSAxMTY4IDExQUU7CitBRjE4O0FGMTg7MTEwMSAxMTY4IDExQUY7QUYxODsxMTAxIDExNjggMTFBRjsKK0FGMTk7QUYxOTsxMTAxIDExNjggMTFCMDtBRjE5OzExMDEgMTE2OCAxMUIwOworQUYxQTtBRjFBOzExMDEgMTE2OCAxMUIxO0FGMUE7MTEwMSAxMTY4IDExQjE7CitBRjFCO0FGMUI7MTEwMSAxMTY4IDExQjI7QUYxQjsxMTAxIDExNjggMTFCMjsKK0FGMUM7QUYxQzsxMTAxIDExNjggMTFCMztBRjFDOzExMDEgMTE2OCAxMUIzOworQUYxRDtBRjFEOzExMDEgMTE2OCAxMUI0O0FGMUQ7MTEwMSAxMTY4IDExQjQ7CitBRjFFO0FGMUU7MTEwMSAxMTY4IDExQjU7QUYxRTsxMTAxIDExNjggMTFCNTsKK0FGMUY7QUYxRjsxMTAxIDExNjggMTFCNjtBRjFGOzExMDEgMTE2OCAxMUI2OworQUYyMDtBRjIwOzExMDEgMTE2OCAxMUI3O0FGMjA7MTEwMSAxMTY4IDExQjc7CitBRjIxO0FGMjE7MTEwMSAxMTY4IDExQjg7QUYyMTsxMTAxIDExNjggMTFCODsKK0FGMjI7QUYyMjsxMTAxIDExNjggMTFCOTtBRjIyOzExMDEgMTE2OCAxMUI5OworQUYyMztBRjIzOzExMDEgMTE2OCAxMUJBO0FGMjM7MTEwMSAxMTY4IDExQkE7CitBRjI0O0FGMjQ7MTEwMSAxMTY4IDExQkI7QUYyNDsxMTAxIDExNjggMTFCQjsKK0FGMjU7QUYyNTsxMTAxIDExNjggMTFCQztBRjI1OzExMDEgMTE2OCAxMUJDOworQUYyNjtBRjI2OzExMDEgMTE2OCAxMUJEO0FGMjY7MTEwMSAxMTY4IDExQkQ7CitBRjI3O0FGMjc7MTEwMSAxMTY4IDExQkU7QUYyNzsxMTAxIDExNjggMTFCRTsKK0FGMjg7QUYyODsxMTAxIDExNjggMTFCRjtBRjI4OzExMDEgMTE2OCAxMUJGOworQUYyOTtBRjI5OzExMDEgMTE2OCAxMUMwO0FGMjk7MTEwMSAxMTY4IDExQzA7CitBRjJBO0FGMkE7MTEwMSAxMTY4IDExQzE7QUYyQTsxMTAxIDExNjggMTFDMTsKK0FGMkI7QUYyQjsxMTAxIDExNjggMTFDMjtBRjJCOzExMDEgMTE2OCAxMUMyOworQUYyQztBRjJDOzExMDEgMTE2OTtBRjJDOzExMDEgMTE2OTsKK0FGMkQ7QUYyRDsxMTAxIDExNjkgMTFBODtBRjJEOzExMDEgMTE2OSAxMUE4OworQUYyRTtBRjJFOzExMDEgMTE2OSAxMUE5O0FGMkU7MTEwMSAxMTY5IDExQTk7CitBRjJGO0FGMkY7MTEwMSAxMTY5IDExQUE7QUYyRjsxMTAxIDExNjkgMTFBQTsKK0FGMzA7QUYzMDsxMTAxIDExNjkgMTFBQjtBRjMwOzExMDEgMTE2OSAxMUFCOworQUYzMTtBRjMxOzExMDEgMTE2OSAxMUFDO0FGMzE7MTEwMSAxMTY5IDExQUM7CitBRjMyO0FGMzI7MTEwMSAxMTY5IDExQUQ7QUYzMjsxMTAxIDExNjkgMTFBRDsKK0FGMzM7QUYzMzsxMTAxIDExNjkgMTFBRTtBRjMzOzExMDEgMTE2OSAxMUFFOworQUYzNDtBRjM0OzExMDEgMTE2OSAxMUFGO0FGMzQ7MTEwMSAxMTY5IDExQUY7CitBRjM1O0FGMzU7MTEwMSAxMTY5IDExQjA7QUYzNTsxMTAxIDExNjkgMTFCMDsKK0FGMzY7QUYzNjsxMTAxIDExNjkgMTFCMTtBRjM2OzExMDEgMTE2OSAxMUIxOworQUYzNztBRjM3OzExMDEgMTE2OSAxMUIyO0FGMzc7MTEwMSAxMTY5IDExQjI7CitBRjM4O0FGMzg7MTEwMSAxMTY5IDExQjM7QUYzODsxMTAxIDExNjkgMTFCMzsKK0FGMzk7QUYzOTsxMTAxIDExNjkgMTFCNDtBRjM5OzExMDEgMTE2OSAxMUI0OworQUYzQTtBRjNBOzExMDEgMTE2OSAxMUI1O0FGM0E7MTEwMSAxMTY5IDExQjU7CitBRjNCO0FGM0I7MTEwMSAxMTY5IDExQjY7QUYzQjsxMTAxIDExNjkgMTFCNjsKK0FGM0M7QUYzQzsxMTAxIDExNjkgMTFCNztBRjNDOzExMDEgMTE2OSAxMUI3OworQUYzRDtBRjNEOzExMDEgMTE2OSAxMUI4O0FGM0Q7MTEwMSAxMTY5IDExQjg7CitBRjNFO0FGM0U7MTEwMSAxMTY5IDExQjk7QUYzRTsxMTAxIDExNjkgMTFCOTsKK0FGM0Y7QUYzRjsxMTAxIDExNjkgMTFCQTtBRjNGOzExMDEgMTE2OSAxMUJBOworQUY0MDtBRjQwOzExMDEgMTE2OSAxMUJCO0FGNDA7MTEwMSAxMTY5IDExQkI7CitBRjQxO0FGNDE7MTEwMSAxMTY5IDExQkM7QUY0MTsxMTAxIDExNjkgMTFCQzsKK0FGNDI7QUY0MjsxMTAxIDExNjkgMTFCRDtBRjQyOzExMDEgMTE2OSAxMUJEOworQUY0MztBRjQzOzExMDEgMTE2OSAxMUJFO0FGNDM7MTEwMSAxMTY5IDExQkU7CitBRjQ0O0FGNDQ7MTEwMSAxMTY5IDExQkY7QUY0NDsxMTAxIDExNjkgMTFCRjsKK0FGNDU7QUY0NTsxMTAxIDExNjkgMTFDMDtBRjQ1OzExMDEgMTE2OSAxMUMwOworQUY0NjtBRjQ2OzExMDEgMTE2OSAxMUMxO0FGNDY7MTEwMSAxMTY5IDExQzE7CitBRjQ3O0FGNDc7MTEwMSAxMTY5IDExQzI7QUY0NzsxMTAxIDExNjkgMTFDMjsKK0FGNDg7QUY0ODsxMTAxIDExNkE7QUY0ODsxMTAxIDExNkE7CitBRjQ5O0FGNDk7MTEwMSAxMTZBIDExQTg7QUY0OTsxMTAxIDExNkEgMTFBODsKK0FGNEE7QUY0QTsxMTAxIDExNkEgMTFBOTtBRjRBOzExMDEgMTE2QSAxMUE5OworQUY0QjtBRjRCOzExMDEgMTE2QSAxMUFBO0FGNEI7MTEwMSAxMTZBIDExQUE7CitBRjRDO0FGNEM7MTEwMSAxMTZBIDExQUI7QUY0QzsxMTAxIDExNkEgMTFBQjsKK0FGNEQ7QUY0RDsxMTAxIDExNkEgMTFBQztBRjREOzExMDEgMTE2QSAxMUFDOworQUY0RTtBRjRFOzExMDEgMTE2QSAxMUFEO0FGNEU7MTEwMSAxMTZBIDExQUQ7CitBRjRGO0FGNEY7MTEwMSAxMTZBIDExQUU7QUY0RjsxMTAxIDExNkEgMTFBRTsKK0FGNTA7QUY1MDsxMTAxIDExNkEgMTFBRjtBRjUwOzExMDEgMTE2QSAxMUFGOworQUY1MTtBRjUxOzExMDEgMTE2QSAxMUIwO0FGNTE7MTEwMSAxMTZBIDExQjA7CitBRjUyO0FGNTI7MTEwMSAxMTZBIDExQjE7QUY1MjsxMTAxIDExNkEgMTFCMTsKK0FGNTM7QUY1MzsxMTAxIDExNkEgMTFCMjtBRjUzOzExMDEgMTE2QSAxMUIyOworQUY1NDtBRjU0OzExMDEgMTE2QSAxMUIzO0FGNTQ7MTEwMSAxMTZBIDExQjM7CitBRjU1O0FGNTU7MTEwMSAxMTZBIDExQjQ7QUY1NTsxMTAxIDExNkEgMTFCNDsKK0FGNTY7QUY1NjsxMTAxIDExNkEgMTFCNTtBRjU2OzExMDEgMTE2QSAxMUI1OworQUY1NztBRjU3OzExMDEgMTE2QSAxMUI2O0FGNTc7MTEwMSAxMTZBIDExQjY7CitBRjU4O0FGNTg7MTEwMSAxMTZBIDExQjc7QUY1ODsxMTAxIDExNkEgMTFCNzsKK0FGNTk7QUY1OTsxMTAxIDExNkEgMTFCODtBRjU5OzExMDEgMTE2QSAxMUI4OworQUY1QTtBRjVBOzExMDEgMTE2QSAxMUI5O0FGNUE7MTEwMSAxMTZBIDExQjk7CitBRjVCO0FGNUI7MTEwMSAxMTZBIDExQkE7QUY1QjsxMTAxIDExNkEgMTFCQTsKK0FGNUM7QUY1QzsxMTAxIDExNkEgMTFCQjtBRjVDOzExMDEgMTE2QSAxMUJCOworQUY1RDtBRjVEOzExMDEgMTE2QSAxMUJDO0FGNUQ7MTEwMSAxMTZBIDExQkM7CitBRjVFO0FGNUU7MTEwMSAxMTZBIDExQkQ7QUY1RTsxMTAxIDExNkEgMTFCRDsKK0FGNUY7QUY1RjsxMTAxIDExNkEgMTFCRTtBRjVGOzExMDEgMTE2QSAxMUJFOworQUY2MDtBRjYwOzExMDEgMTE2QSAxMUJGO0FGNjA7MTEwMSAxMTZBIDExQkY7CitBRjYxO0FGNjE7MTEwMSAxMTZBIDExQzA7QUY2MTsxMTAxIDExNkEgMTFDMDsKK0FGNjI7QUY2MjsxMTAxIDExNkEgMTFDMTtBRjYyOzExMDEgMTE2QSAxMUMxOworQUY2MztBRjYzOzExMDEgMTE2QSAxMUMyO0FGNjM7MTEwMSAxMTZBIDExQzI7CitBRjY0O0FGNjQ7MTEwMSAxMTZCO0FGNjQ7MTEwMSAxMTZCOworQUY2NTtBRjY1OzExMDEgMTE2QiAxMUE4O0FGNjU7MTEwMSAxMTZCIDExQTg7CitBRjY2O0FGNjY7MTEwMSAxMTZCIDExQTk7QUY2NjsxMTAxIDExNkIgMTFBOTsKK0FGNjc7QUY2NzsxMTAxIDExNkIgMTFBQTtBRjY3OzExMDEgMTE2QiAxMUFBOworQUY2ODtBRjY4OzExMDEgMTE2QiAxMUFCO0FGNjg7MTEwMSAxMTZCIDExQUI7CitBRjY5O0FGNjk7MTEwMSAxMTZCIDExQUM7QUY2OTsxMTAxIDExNkIgMTFBQzsKK0FGNkE7QUY2QTsxMTAxIDExNkIgMTFBRDtBRjZBOzExMDEgMTE2QiAxMUFEOworQUY2QjtBRjZCOzExMDEgMTE2QiAxMUFFO0FGNkI7MTEwMSAxMTZCIDExQUU7CitBRjZDO0FGNkM7MTEwMSAxMTZCIDExQUY7QUY2QzsxMTAxIDExNkIgMTFBRjsKK0FGNkQ7QUY2RDsxMTAxIDExNkIgMTFCMDtBRjZEOzExMDEgMTE2QiAxMUIwOworQUY2RTtBRjZFOzExMDEgMTE2QiAxMUIxO0FGNkU7MTEwMSAxMTZCIDExQjE7CitBRjZGO0FGNkY7MTEwMSAxMTZCIDExQjI7QUY2RjsxMTAxIDExNkIgMTFCMjsKK0FGNzA7QUY3MDsxMTAxIDExNkIgMTFCMztBRjcwOzExMDEgMTE2QiAxMUIzOworQUY3MTtBRjcxOzExMDEgMTE2QiAxMUI0O0FGNzE7MTEwMSAxMTZCIDExQjQ7CitBRjcyO0FGNzI7MTEwMSAxMTZCIDExQjU7QUY3MjsxMTAxIDExNkIgMTFCNTsKK0FGNzM7QUY3MzsxMTAxIDExNkIgMTFCNjtBRjczOzExMDEgMTE2QiAxMUI2OworQUY3NDtBRjc0OzExMDEgMTE2QiAxMUI3O0FGNzQ7MTEwMSAxMTZCIDExQjc7CitBRjc1O0FGNzU7MTEwMSAxMTZCIDExQjg7QUY3NTsxMTAxIDExNkIgMTFCODsKK0FGNzY7QUY3NjsxMTAxIDExNkIgMTFCOTtBRjc2OzExMDEgMTE2QiAxMUI5OworQUY3NztBRjc3OzExMDEgMTE2QiAxMUJBO0FGNzc7MTEwMSAxMTZCIDExQkE7CitBRjc4O0FGNzg7MTEwMSAxMTZCIDExQkI7QUY3ODsxMTAxIDExNkIgMTFCQjsKK0FGNzk7QUY3OTsxMTAxIDExNkIgMTFCQztBRjc5OzExMDEgMTE2QiAxMUJDOworQUY3QTtBRjdBOzExMDEgMTE2QiAxMUJEO0FGN0E7MTEwMSAxMTZCIDExQkQ7CitBRjdCO0FGN0I7MTEwMSAxMTZCIDExQkU7QUY3QjsxMTAxIDExNkIgMTFCRTsKK0FGN0M7QUY3QzsxMTAxIDExNkIgMTFCRjtBRjdDOzExMDEgMTE2QiAxMUJGOworQUY3RDtBRjdEOzExMDEgMTE2QiAxMUMwO0FGN0Q7MTEwMSAxMTZCIDExQzA7CitBRjdFO0FGN0U7MTEwMSAxMTZCIDExQzE7QUY3RTsxMTAxIDExNkIgMTFDMTsKK0FGN0Y7QUY3RjsxMTAxIDExNkIgMTFDMjtBRjdGOzExMDEgMTE2QiAxMUMyOworQUY4MDtBRjgwOzExMDEgMTE2QztBRjgwOzExMDEgMTE2QzsKK0FGODE7QUY4MTsxMTAxIDExNkMgMTFBODtBRjgxOzExMDEgMTE2QyAxMUE4OworQUY4MjtBRjgyOzExMDEgMTE2QyAxMUE5O0FGODI7MTEwMSAxMTZDIDExQTk7CitBRjgzO0FGODM7MTEwMSAxMTZDIDExQUE7QUY4MzsxMTAxIDExNkMgMTFBQTsKK0FGODQ7QUY4NDsxMTAxIDExNkMgMTFBQjtBRjg0OzExMDEgMTE2QyAxMUFCOworQUY4NTtBRjg1OzExMDEgMTE2QyAxMUFDO0FGODU7MTEwMSAxMTZDIDExQUM7CitBRjg2O0FGODY7MTEwMSAxMTZDIDExQUQ7QUY4NjsxMTAxIDExNkMgMTFBRDsKK0FGODc7QUY4NzsxMTAxIDExNkMgMTFBRTtBRjg3OzExMDEgMTE2QyAxMUFFOworQUY4ODtBRjg4OzExMDEgMTE2QyAxMUFGO0FGODg7MTEwMSAxMTZDIDExQUY7CitBRjg5O0FGODk7MTEwMSAxMTZDIDExQjA7QUY4OTsxMTAxIDExNkMgMTFCMDsKK0FGOEE7QUY4QTsxMTAxIDExNkMgMTFCMTtBRjhBOzExMDEgMTE2QyAxMUIxOworQUY4QjtBRjhCOzExMDEgMTE2QyAxMUIyO0FGOEI7MTEwMSAxMTZDIDExQjI7CitBRjhDO0FGOEM7MTEwMSAxMTZDIDExQjM7QUY4QzsxMTAxIDExNkMgMTFCMzsKK0FGOEQ7QUY4RDsxMTAxIDExNkMgMTFCNDtBRjhEOzExMDEgMTE2QyAxMUI0OworQUY4RTtBRjhFOzExMDEgMTE2QyAxMUI1O0FGOEU7MTEwMSAxMTZDIDExQjU7CitBRjhGO0FGOEY7MTEwMSAxMTZDIDExQjY7QUY4RjsxMTAxIDExNkMgMTFCNjsKK0FGOTA7QUY5MDsxMTAxIDExNkMgMTFCNztBRjkwOzExMDEgMTE2QyAxMUI3OworQUY5MTtBRjkxOzExMDEgMTE2QyAxMUI4O0FGOTE7MTEwMSAxMTZDIDExQjg7CitBRjkyO0FGOTI7MTEwMSAxMTZDIDExQjk7QUY5MjsxMTAxIDExNkMgMTFCOTsKK0FGOTM7QUY5MzsxMTAxIDExNkMgMTFCQTtBRjkzOzExMDEgMTE2QyAxMUJBOworQUY5NDtBRjk0OzExMDEgMTE2QyAxMUJCO0FGOTQ7MTEwMSAxMTZDIDExQkI7CitBRjk1O0FGOTU7MTEwMSAxMTZDIDExQkM7QUY5NTsxMTAxIDExNkMgMTFCQzsKK0FGOTY7QUY5NjsxMTAxIDExNkMgMTFCRDtBRjk2OzExMDEgMTE2QyAxMUJEOworQUY5NztBRjk3OzExMDEgMTE2QyAxMUJFO0FGOTc7MTEwMSAxMTZDIDExQkU7CitBRjk4O0FGOTg7MTEwMSAxMTZDIDExQkY7QUY5ODsxMTAxIDExNkMgMTFCRjsKK0FGOTk7QUY5OTsxMTAxIDExNkMgMTFDMDtBRjk5OzExMDEgMTE2QyAxMUMwOworQUY5QTtBRjlBOzExMDEgMTE2QyAxMUMxO0FGOUE7MTEwMSAxMTZDIDExQzE7CitBRjlCO0FGOUI7MTEwMSAxMTZDIDExQzI7QUY5QjsxMTAxIDExNkMgMTFDMjsKK0FGOUM7QUY5QzsxMTAxIDExNkQ7QUY5QzsxMTAxIDExNkQ7CitBRjlEO0FGOUQ7MTEwMSAxMTZEIDExQTg7QUY5RDsxMTAxIDExNkQgMTFBODsKK0FGOUU7QUY5RTsxMTAxIDExNkQgMTFBOTtBRjlFOzExMDEgMTE2RCAxMUE5OworQUY5RjtBRjlGOzExMDEgMTE2RCAxMUFBO0FGOUY7MTEwMSAxMTZEIDExQUE7CitBRkEwO0FGQTA7MTEwMSAxMTZEIDExQUI7QUZBMDsxMTAxIDExNkQgMTFBQjsKK0FGQTE7QUZBMTsxMTAxIDExNkQgMTFBQztBRkExOzExMDEgMTE2RCAxMUFDOworQUZBMjtBRkEyOzExMDEgMTE2RCAxMUFEO0FGQTI7MTEwMSAxMTZEIDExQUQ7CitBRkEzO0FGQTM7MTEwMSAxMTZEIDExQUU7QUZBMzsxMTAxIDExNkQgMTFBRTsKK0FGQTQ7QUZBNDsxMTAxIDExNkQgMTFBRjtBRkE0OzExMDEgMTE2RCAxMUFGOworQUZBNTtBRkE1OzExMDEgMTE2RCAxMUIwO0FGQTU7MTEwMSAxMTZEIDExQjA7CitBRkE2O0FGQTY7MTEwMSAxMTZEIDExQjE7QUZBNjsxMTAxIDExNkQgMTFCMTsKK0FGQTc7QUZBNzsxMTAxIDExNkQgMTFCMjtBRkE3OzExMDEgMTE2RCAxMUIyOworQUZBODtBRkE4OzExMDEgMTE2RCAxMUIzO0FGQTg7MTEwMSAxMTZEIDExQjM7CitBRkE5O0FGQTk7MTEwMSAxMTZEIDExQjQ7QUZBOTsxMTAxIDExNkQgMTFCNDsKK0FGQUE7QUZBQTsxMTAxIDExNkQgMTFCNTtBRkFBOzExMDEgMTE2RCAxMUI1OworQUZBQjtBRkFCOzExMDEgMTE2RCAxMUI2O0FGQUI7MTEwMSAxMTZEIDExQjY7CitBRkFDO0FGQUM7MTEwMSAxMTZEIDExQjc7QUZBQzsxMTAxIDExNkQgMTFCNzsKK0FGQUQ7QUZBRDsxMTAxIDExNkQgMTFCODtBRkFEOzExMDEgMTE2RCAxMUI4OworQUZBRTtBRkFFOzExMDEgMTE2RCAxMUI5O0FGQUU7MTEwMSAxMTZEIDExQjk7CitBRkFGO0FGQUY7MTEwMSAxMTZEIDExQkE7QUZBRjsxMTAxIDExNkQgMTFCQTsKK0FGQjA7QUZCMDsxMTAxIDExNkQgMTFCQjtBRkIwOzExMDEgMTE2RCAxMUJCOworQUZCMTtBRkIxOzExMDEgMTE2RCAxMUJDO0FGQjE7MTEwMSAxMTZEIDExQkM7CitBRkIyO0FGQjI7MTEwMSAxMTZEIDExQkQ7QUZCMjsxMTAxIDExNkQgMTFCRDsKK0FGQjM7QUZCMzsxMTAxIDExNkQgMTFCRTtBRkIzOzExMDEgMTE2RCAxMUJFOworQUZCNDtBRkI0OzExMDEgMTE2RCAxMUJGO0FGQjQ7MTEwMSAxMTZEIDExQkY7CitBRkI1O0FGQjU7MTEwMSAxMTZEIDExQzA7QUZCNTsxMTAxIDExNkQgMTFDMDsKK0FGQjY7QUZCNjsxMTAxIDExNkQgMTFDMTtBRkI2OzExMDEgMTE2RCAxMUMxOworQUZCNztBRkI3OzExMDEgMTE2RCAxMUMyO0FGQjc7MTEwMSAxMTZEIDExQzI7CitBRkI4O0FGQjg7MTEwMSAxMTZFO0FGQjg7MTEwMSAxMTZFOworQUZCOTtBRkI5OzExMDEgMTE2RSAxMUE4O0FGQjk7MTEwMSAxMTZFIDExQTg7CitBRkJBO0FGQkE7MTEwMSAxMTZFIDExQTk7QUZCQTsxMTAxIDExNkUgMTFBOTsKK0FGQkI7QUZCQjsxMTAxIDExNkUgMTFBQTtBRkJCOzExMDEgMTE2RSAxMUFBOworQUZCQztBRkJDOzExMDEgMTE2RSAxMUFCO0FGQkM7MTEwMSAxMTZFIDExQUI7CitBRkJEO0FGQkQ7MTEwMSAxMTZFIDExQUM7QUZCRDsxMTAxIDExNkUgMTFBQzsKK0FGQkU7QUZCRTsxMTAxIDExNkUgMTFBRDtBRkJFOzExMDEgMTE2RSAxMUFEOworQUZCRjtBRkJGOzExMDEgMTE2RSAxMUFFO0FGQkY7MTEwMSAxMTZFIDExQUU7CitBRkMwO0FGQzA7MTEwMSAxMTZFIDExQUY7QUZDMDsxMTAxIDExNkUgMTFBRjsKK0FGQzE7QUZDMTsxMTAxIDExNkUgMTFCMDtBRkMxOzExMDEgMTE2RSAxMUIwOworQUZDMjtBRkMyOzExMDEgMTE2RSAxMUIxO0FGQzI7MTEwMSAxMTZFIDExQjE7CitBRkMzO0FGQzM7MTEwMSAxMTZFIDExQjI7QUZDMzsxMTAxIDExNkUgMTFCMjsKK0FGQzQ7QUZDNDsxMTAxIDExNkUgMTFCMztBRkM0OzExMDEgMTE2RSAxMUIzOworQUZDNTtBRkM1OzExMDEgMTE2RSAxMUI0O0FGQzU7MTEwMSAxMTZFIDExQjQ7CitBRkM2O0FGQzY7MTEwMSAxMTZFIDExQjU7QUZDNjsxMTAxIDExNkUgMTFCNTsKK0FGQzc7QUZDNzsxMTAxIDExNkUgMTFCNjtBRkM3OzExMDEgMTE2RSAxMUI2OworQUZDODtBRkM4OzExMDEgMTE2RSAxMUI3O0FGQzg7MTEwMSAxMTZFIDExQjc7CitBRkM5O0FGQzk7MTEwMSAxMTZFIDExQjg7QUZDOTsxMTAxIDExNkUgMTFCODsKK0FGQ0E7QUZDQTsxMTAxIDExNkUgMTFCOTtBRkNBOzExMDEgMTE2RSAxMUI5OworQUZDQjtBRkNCOzExMDEgMTE2RSAxMUJBO0FGQ0I7MTEwMSAxMTZFIDExQkE7CitBRkNDO0FGQ0M7MTEwMSAxMTZFIDExQkI7QUZDQzsxMTAxIDExNkUgMTFCQjsKK0FGQ0Q7QUZDRDsxMTAxIDExNkUgMTFCQztBRkNEOzExMDEgMTE2RSAxMUJDOworQUZDRTtBRkNFOzExMDEgMTE2RSAxMUJEO0FGQ0U7MTEwMSAxMTZFIDExQkQ7CitBRkNGO0FGQ0Y7MTEwMSAxMTZFIDExQkU7QUZDRjsxMTAxIDExNkUgMTFCRTsKK0FGRDA7QUZEMDsxMTAxIDExNkUgMTFCRjtBRkQwOzExMDEgMTE2RSAxMUJGOworQUZEMTtBRkQxOzExMDEgMTE2RSAxMUMwO0FGRDE7MTEwMSAxMTZFIDExQzA7CitBRkQyO0FGRDI7MTEwMSAxMTZFIDExQzE7QUZEMjsxMTAxIDExNkUgMTFDMTsKK0FGRDM7QUZEMzsxMTAxIDExNkUgMTFDMjtBRkQzOzExMDEgMTE2RSAxMUMyOworQUZENDtBRkQ0OzExMDEgMTE2RjtBRkQ0OzExMDEgMTE2RjsKK0FGRDU7QUZENTsxMTAxIDExNkYgMTFBODtBRkQ1OzExMDEgMTE2RiAxMUE4OworQUZENjtBRkQ2OzExMDEgMTE2RiAxMUE5O0FGRDY7MTEwMSAxMTZGIDExQTk7CitBRkQ3O0FGRDc7MTEwMSAxMTZGIDExQUE7QUZENzsxMTAxIDExNkYgMTFBQTsKK0FGRDg7QUZEODsxMTAxIDExNkYgMTFBQjtBRkQ4OzExMDEgMTE2RiAxMUFCOworQUZEOTtBRkQ5OzExMDEgMTE2RiAxMUFDO0FGRDk7MTEwMSAxMTZGIDExQUM7CitBRkRBO0FGREE7MTEwMSAxMTZGIDExQUQ7QUZEQTsxMTAxIDExNkYgMTFBRDsKK0FGREI7QUZEQjsxMTAxIDExNkYgMTFBRTtBRkRCOzExMDEgMTE2RiAxMUFFOworQUZEQztBRkRDOzExMDEgMTE2RiAxMUFGO0FGREM7MTEwMSAxMTZGIDExQUY7CitBRkREO0FGREQ7MTEwMSAxMTZGIDExQjA7QUZERDsxMTAxIDExNkYgMTFCMDsKK0FGREU7QUZERTsxMTAxIDExNkYgMTFCMTtBRkRFOzExMDEgMTE2RiAxMUIxOworQUZERjtBRkRGOzExMDEgMTE2RiAxMUIyO0FGREY7MTEwMSAxMTZGIDExQjI7CitBRkUwO0FGRTA7MTEwMSAxMTZGIDExQjM7QUZFMDsxMTAxIDExNkYgMTFCMzsKK0FGRTE7QUZFMTsxMTAxIDExNkYgMTFCNDtBRkUxOzExMDEgMTE2RiAxMUI0OworQUZFMjtBRkUyOzExMDEgMTE2RiAxMUI1O0FGRTI7MTEwMSAxMTZGIDExQjU7CitBRkUzO0FGRTM7MTEwMSAxMTZGIDExQjY7QUZFMzsxMTAxIDExNkYgMTFCNjsKK0FGRTQ7QUZFNDsxMTAxIDExNkYgMTFCNztBRkU0OzExMDEgMTE2RiAxMUI3OworQUZFNTtBRkU1OzExMDEgMTE2RiAxMUI4O0FGRTU7MTEwMSAxMTZGIDExQjg7CitBRkU2O0FGRTY7MTEwMSAxMTZGIDExQjk7QUZFNjsxMTAxIDExNkYgMTFCOTsKK0FGRTc7QUZFNzsxMTAxIDExNkYgMTFCQTtBRkU3OzExMDEgMTE2RiAxMUJBOworQUZFODtBRkU4OzExMDEgMTE2RiAxMUJCO0FGRTg7MTEwMSAxMTZGIDExQkI7CitBRkU5O0FGRTk7MTEwMSAxMTZGIDExQkM7QUZFOTsxMTAxIDExNkYgMTFCQzsKK0FGRUE7QUZFQTsxMTAxIDExNkYgMTFCRDtBRkVBOzExMDEgMTE2RiAxMUJEOworQUZFQjtBRkVCOzExMDEgMTE2RiAxMUJFO0FGRUI7MTEwMSAxMTZGIDExQkU7CitBRkVDO0FGRUM7MTEwMSAxMTZGIDExQkY7QUZFQzsxMTAxIDExNkYgMTFCRjsKK0FGRUQ7QUZFRDsxMTAxIDExNkYgMTFDMDtBRkVEOzExMDEgMTE2RiAxMUMwOworQUZFRTtBRkVFOzExMDEgMTE2RiAxMUMxO0FGRUU7MTEwMSAxMTZGIDExQzE7CitBRkVGO0FGRUY7MTEwMSAxMTZGIDExQzI7QUZFRjsxMTAxIDExNkYgMTFDMjsKK0FGRjA7QUZGMDsxMTAxIDExNzA7QUZGMDsxMTAxIDExNzA7CitBRkYxO0FGRjE7MTEwMSAxMTcwIDExQTg7QUZGMTsxMTAxIDExNzAgMTFBODsKK0FGRjI7QUZGMjsxMTAxIDExNzAgMTFBOTtBRkYyOzExMDEgMTE3MCAxMUE5OworQUZGMztBRkYzOzExMDEgMTE3MCAxMUFBO0FGRjM7MTEwMSAxMTcwIDExQUE7CitBRkY0O0FGRjQ7MTEwMSAxMTcwIDExQUI7QUZGNDsxMTAxIDExNzAgMTFBQjsKK0FGRjU7QUZGNTsxMTAxIDExNzAgMTFBQztBRkY1OzExMDEgMTE3MCAxMUFDOworQUZGNjtBRkY2OzExMDEgMTE3MCAxMUFEO0FGRjY7MTEwMSAxMTcwIDExQUQ7CitBRkY3O0FGRjc7MTEwMSAxMTcwIDExQUU7QUZGNzsxMTAxIDExNzAgMTFBRTsKK0FGRjg7QUZGODsxMTAxIDExNzAgMTFBRjtBRkY4OzExMDEgMTE3MCAxMUFGOworQUZGOTtBRkY5OzExMDEgMTE3MCAxMUIwO0FGRjk7MTEwMSAxMTcwIDExQjA7CitBRkZBO0FGRkE7MTEwMSAxMTcwIDExQjE7QUZGQTsxMTAxIDExNzAgMTFCMTsKK0FGRkI7QUZGQjsxMTAxIDExNzAgMTFCMjtBRkZCOzExMDEgMTE3MCAxMUIyOworQUZGQztBRkZDOzExMDEgMTE3MCAxMUIzO0FGRkM7MTEwMSAxMTcwIDExQjM7CitBRkZEO0FGRkQ7MTEwMSAxMTcwIDExQjQ7QUZGRDsxMTAxIDExNzAgMTFCNDsKK0FGRkU7QUZGRTsxMTAxIDExNzAgMTFCNTtBRkZFOzExMDEgMTE3MCAxMUI1OworQUZGRjtBRkZGOzExMDEgMTE3MCAxMUI2O0FGRkY7MTEwMSAxMTcwIDExQjY7CitCMDAwO0IwMDA7MTEwMSAxMTcwIDExQjc7QjAwMDsxMTAxIDExNzAgMTFCNzsKK0IwMDE7QjAwMTsxMTAxIDExNzAgMTFCODtCMDAxOzExMDEgMTE3MCAxMUI4OworQjAwMjtCMDAyOzExMDEgMTE3MCAxMUI5O0IwMDI7MTEwMSAxMTcwIDExQjk7CitCMDAzO0IwMDM7MTEwMSAxMTcwIDExQkE7QjAwMzsxMTAxIDExNzAgMTFCQTsKK0IwMDQ7QjAwNDsxMTAxIDExNzAgMTFCQjtCMDA0OzExMDEgMTE3MCAxMUJCOworQjAwNTtCMDA1OzExMDEgMTE3MCAxMUJDO0IwMDU7MTEwMSAxMTcwIDExQkM7CitCMDA2O0IwMDY7MTEwMSAxMTcwIDExQkQ7QjAwNjsxMTAxIDExNzAgMTFCRDsKK0IwMDc7QjAwNzsxMTAxIDExNzAgMTFCRTtCMDA3OzExMDEgMTE3MCAxMUJFOworQjAwODtCMDA4OzExMDEgMTE3MCAxMUJGO0IwMDg7MTEwMSAxMTcwIDExQkY7CitCMDA5O0IwMDk7MTEwMSAxMTcwIDExQzA7QjAwOTsxMTAxIDExNzAgMTFDMDsKK0IwMEE7QjAwQTsxMTAxIDExNzAgMTFDMTtCMDBBOzExMDEgMTE3MCAxMUMxOworQjAwQjtCMDBCOzExMDEgMTE3MCAxMUMyO0IwMEI7MTEwMSAxMTcwIDExQzI7CitCMDBDO0IwMEM7MTEwMSAxMTcxO0IwMEM7MTEwMSAxMTcxOworQjAwRDtCMDBEOzExMDEgMTE3MSAxMUE4O0IwMEQ7MTEwMSAxMTcxIDExQTg7CitCMDBFO0IwMEU7MTEwMSAxMTcxIDExQTk7QjAwRTsxMTAxIDExNzEgMTFBOTsKK0IwMEY7QjAwRjsxMTAxIDExNzEgMTFBQTtCMDBGOzExMDEgMTE3MSAxMUFBOworQjAxMDtCMDEwOzExMDEgMTE3MSAxMUFCO0IwMTA7MTEwMSAxMTcxIDExQUI7CitCMDExO0IwMTE7MTEwMSAxMTcxIDExQUM7QjAxMTsxMTAxIDExNzEgMTFBQzsKK0IwMTI7QjAxMjsxMTAxIDExNzEgMTFBRDtCMDEyOzExMDEgMTE3MSAxMUFEOworQjAxMztCMDEzOzExMDEgMTE3MSAxMUFFO0IwMTM7MTEwMSAxMTcxIDExQUU7CitCMDE0O0IwMTQ7MTEwMSAxMTcxIDExQUY7QjAxNDsxMTAxIDExNzEgMTFBRjsKK0IwMTU7QjAxNTsxMTAxIDExNzEgMTFCMDtCMDE1OzExMDEgMTE3MSAxMUIwOworQjAxNjtCMDE2OzExMDEgMTE3MSAxMUIxO0IwMTY7MTEwMSAxMTcxIDExQjE7CitCMDE3O0IwMTc7MTEwMSAxMTcxIDExQjI7QjAxNzsxMTAxIDExNzEgMTFCMjsKK0IwMTg7QjAxODsxMTAxIDExNzEgMTFCMztCMDE4OzExMDEgMTE3MSAxMUIzOworQjAxOTtCMDE5OzExMDEgMTE3MSAxMUI0O0IwMTk7MTEwMSAxMTcxIDExQjQ7CitCMDFBO0IwMUE7MTEwMSAxMTcxIDExQjU7QjAxQTsxMTAxIDExNzEgMTFCNTsKK0IwMUI7QjAxQjsxMTAxIDExNzEgMTFCNjtCMDFCOzExMDEgMTE3MSAxMUI2OworQjAxQztCMDFDOzExMDEgMTE3MSAxMUI3O0IwMUM7MTEwMSAxMTcxIDExQjc7CitCMDFEO0IwMUQ7MTEwMSAxMTcxIDExQjg7QjAxRDsxMTAxIDExNzEgMTFCODsKK0IwMUU7QjAxRTsxMTAxIDExNzEgMTFCOTtCMDFFOzExMDEgMTE3MSAxMUI5OworQjAxRjtCMDFGOzExMDEgMTE3MSAxMUJBO0IwMUY7MTEwMSAxMTcxIDExQkE7CitCMDIwO0IwMjA7MTEwMSAxMTcxIDExQkI7QjAyMDsxMTAxIDExNzEgMTFCQjsKK0IwMjE7QjAyMTsxMTAxIDExNzEgMTFCQztCMDIxOzExMDEgMTE3MSAxMUJDOworQjAyMjtCMDIyOzExMDEgMTE3MSAxMUJEO0IwMjI7MTEwMSAxMTcxIDExQkQ7CitCMDIzO0IwMjM7MTEwMSAxMTcxIDExQkU7QjAyMzsxMTAxIDExNzEgMTFCRTsKK0IwMjQ7QjAyNDsxMTAxIDExNzEgMTFCRjtCMDI0OzExMDEgMTE3MSAxMUJGOworQjAyNTtCMDI1OzExMDEgMTE3MSAxMUMwO0IwMjU7MTEwMSAxMTcxIDExQzA7CitCMDI2O0IwMjY7MTEwMSAxMTcxIDExQzE7QjAyNjsxMTAxIDExNzEgMTFDMTsKK0IwMjc7QjAyNzsxMTAxIDExNzEgMTFDMjtCMDI3OzExMDEgMTE3MSAxMUMyOworQjAyODtCMDI4OzExMDEgMTE3MjtCMDI4OzExMDEgMTE3MjsKK0IwMjk7QjAyOTsxMTAxIDExNzIgMTFBODtCMDI5OzExMDEgMTE3MiAxMUE4OworQjAyQTtCMDJBOzExMDEgMTE3MiAxMUE5O0IwMkE7MTEwMSAxMTcyIDExQTk7CitCMDJCO0IwMkI7MTEwMSAxMTcyIDExQUE7QjAyQjsxMTAxIDExNzIgMTFBQTsKK0IwMkM7QjAyQzsxMTAxIDExNzIgMTFBQjtCMDJDOzExMDEgMTE3MiAxMUFCOworQjAyRDtCMDJEOzExMDEgMTE3MiAxMUFDO0IwMkQ7MTEwMSAxMTcyIDExQUM7CitCMDJFO0IwMkU7MTEwMSAxMTcyIDExQUQ7QjAyRTsxMTAxIDExNzIgMTFBRDsKK0IwMkY7QjAyRjsxMTAxIDExNzIgMTFBRTtCMDJGOzExMDEgMTE3MiAxMUFFOworQjAzMDtCMDMwOzExMDEgMTE3MiAxMUFGO0IwMzA7MTEwMSAxMTcyIDExQUY7CitCMDMxO0IwMzE7MTEwMSAxMTcyIDExQjA7QjAzMTsxMTAxIDExNzIgMTFCMDsKK0IwMzI7QjAzMjsxMTAxIDExNzIgMTFCMTtCMDMyOzExMDEgMTE3MiAxMUIxOworQjAzMztCMDMzOzExMDEgMTE3MiAxMUIyO0IwMzM7MTEwMSAxMTcyIDExQjI7CitCMDM0O0IwMzQ7MTEwMSAxMTcyIDExQjM7QjAzNDsxMTAxIDExNzIgMTFCMzsKK0IwMzU7QjAzNTsxMTAxIDExNzIgMTFCNDtCMDM1OzExMDEgMTE3MiAxMUI0OworQjAzNjtCMDM2OzExMDEgMTE3MiAxMUI1O0IwMzY7MTEwMSAxMTcyIDExQjU7CitCMDM3O0IwMzc7MTEwMSAxMTcyIDExQjY7QjAzNzsxMTAxIDExNzIgMTFCNjsKK0IwMzg7QjAzODsxMTAxIDExNzIgMTFCNztCMDM4OzExMDEgMTE3MiAxMUI3OworQjAzOTtCMDM5OzExMDEgMTE3MiAxMUI4O0IwMzk7MTEwMSAxMTcyIDExQjg7CitCMDNBO0IwM0E7MTEwMSAxMTcyIDExQjk7QjAzQTsxMTAxIDExNzIgMTFCOTsKK0IwM0I7QjAzQjsxMTAxIDExNzIgMTFCQTtCMDNCOzExMDEgMTE3MiAxMUJBOworQjAzQztCMDNDOzExMDEgMTE3MiAxMUJCO0IwM0M7MTEwMSAxMTcyIDExQkI7CitCMDNEO0IwM0Q7MTEwMSAxMTcyIDExQkM7QjAzRDsxMTAxIDExNzIgMTFCQzsKK0IwM0U7QjAzRTsxMTAxIDExNzIgMTFCRDtCMDNFOzExMDEgMTE3MiAxMUJEOworQjAzRjtCMDNGOzExMDEgMTE3MiAxMUJFO0IwM0Y7MTEwMSAxMTcyIDExQkU7CitCMDQwO0IwNDA7MTEwMSAxMTcyIDExQkY7QjA0MDsxMTAxIDExNzIgMTFCRjsKK0IwNDE7QjA0MTsxMTAxIDExNzIgMTFDMDtCMDQxOzExMDEgMTE3MiAxMUMwOworQjA0MjtCMDQyOzExMDEgMTE3MiAxMUMxO0IwNDI7MTEwMSAxMTcyIDExQzE7CitCMDQzO0IwNDM7MTEwMSAxMTcyIDExQzI7QjA0MzsxMTAxIDExNzIgMTFDMjsKK0IwNDQ7QjA0NDsxMTAxIDExNzM7QjA0NDsxMTAxIDExNzM7CitCMDQ1O0IwNDU7MTEwMSAxMTczIDExQTg7QjA0NTsxMTAxIDExNzMgMTFBODsKK0IwNDY7QjA0NjsxMTAxIDExNzMgMTFBOTtCMDQ2OzExMDEgMTE3MyAxMUE5OworQjA0NztCMDQ3OzExMDEgMTE3MyAxMUFBO0IwNDc7MTEwMSAxMTczIDExQUE7CitCMDQ4O0IwNDg7MTEwMSAxMTczIDExQUI7QjA0ODsxMTAxIDExNzMgMTFBQjsKK0IwNDk7QjA0OTsxMTAxIDExNzMgMTFBQztCMDQ5OzExMDEgMTE3MyAxMUFDOworQjA0QTtCMDRBOzExMDEgMTE3MyAxMUFEO0IwNEE7MTEwMSAxMTczIDExQUQ7CitCMDRCO0IwNEI7MTEwMSAxMTczIDExQUU7QjA0QjsxMTAxIDExNzMgMTFBRTsKK0IwNEM7QjA0QzsxMTAxIDExNzMgMTFBRjtCMDRDOzExMDEgMTE3MyAxMUFGOworQjA0RDtCMDREOzExMDEgMTE3MyAxMUIwO0IwNEQ7MTEwMSAxMTczIDExQjA7CitCMDRFO0IwNEU7MTEwMSAxMTczIDExQjE7QjA0RTsxMTAxIDExNzMgMTFCMTsKK0IwNEY7QjA0RjsxMTAxIDExNzMgMTFCMjtCMDRGOzExMDEgMTE3MyAxMUIyOworQjA1MDtCMDUwOzExMDEgMTE3MyAxMUIzO0IwNTA7MTEwMSAxMTczIDExQjM7CitCMDUxO0IwNTE7MTEwMSAxMTczIDExQjQ7QjA1MTsxMTAxIDExNzMgMTFCNDsKK0IwNTI7QjA1MjsxMTAxIDExNzMgMTFCNTtCMDUyOzExMDEgMTE3MyAxMUI1OworQjA1MztCMDUzOzExMDEgMTE3MyAxMUI2O0IwNTM7MTEwMSAxMTczIDExQjY7CitCMDU0O0IwNTQ7MTEwMSAxMTczIDExQjc7QjA1NDsxMTAxIDExNzMgMTFCNzsKK0IwNTU7QjA1NTsxMTAxIDExNzMgMTFCODtCMDU1OzExMDEgMTE3MyAxMUI4OworQjA1NjtCMDU2OzExMDEgMTE3MyAxMUI5O0IwNTY7MTEwMSAxMTczIDExQjk7CitCMDU3O0IwNTc7MTEwMSAxMTczIDExQkE7QjA1NzsxMTAxIDExNzMgMTFCQTsKK0IwNTg7QjA1ODsxMTAxIDExNzMgMTFCQjtCMDU4OzExMDEgMTE3MyAxMUJCOworQjA1OTtCMDU5OzExMDEgMTE3MyAxMUJDO0IwNTk7MTEwMSAxMTczIDExQkM7CitCMDVBO0IwNUE7MTEwMSAxMTczIDExQkQ7QjA1QTsxMTAxIDExNzMgMTFCRDsKK0IwNUI7QjA1QjsxMTAxIDExNzMgMTFCRTtCMDVCOzExMDEgMTE3MyAxMUJFOworQjA1QztCMDVDOzExMDEgMTE3MyAxMUJGO0IwNUM7MTEwMSAxMTczIDExQkY7CitCMDVEO0IwNUQ7MTEwMSAxMTczIDExQzA7QjA1RDsxMTAxIDExNzMgMTFDMDsKK0IwNUU7QjA1RTsxMTAxIDExNzMgMTFDMTtCMDVFOzExMDEgMTE3MyAxMUMxOworQjA1RjtCMDVGOzExMDEgMTE3MyAxMUMyO0IwNUY7MTEwMSAxMTczIDExQzI7CitCMDYwO0IwNjA7MTEwMSAxMTc0O0IwNjA7MTEwMSAxMTc0OworQjA2MTtCMDYxOzExMDEgMTE3NCAxMUE4O0IwNjE7MTEwMSAxMTc0IDExQTg7CitCMDYyO0IwNjI7MTEwMSAxMTc0IDExQTk7QjA2MjsxMTAxIDExNzQgMTFBOTsKK0IwNjM7QjA2MzsxMTAxIDExNzQgMTFBQTtCMDYzOzExMDEgMTE3NCAxMUFBOworQjA2NDtCMDY0OzExMDEgMTE3NCAxMUFCO0IwNjQ7MTEwMSAxMTc0IDExQUI7CitCMDY1O0IwNjU7MTEwMSAxMTc0IDExQUM7QjA2NTsxMTAxIDExNzQgMTFBQzsKK0IwNjY7QjA2NjsxMTAxIDExNzQgMTFBRDtCMDY2OzExMDEgMTE3NCAxMUFEOworQjA2NztCMDY3OzExMDEgMTE3NCAxMUFFO0IwNjc7MTEwMSAxMTc0IDExQUU7CitCMDY4O0IwNjg7MTEwMSAxMTc0IDExQUY7QjA2ODsxMTAxIDExNzQgMTFBRjsKK0IwNjk7QjA2OTsxMTAxIDExNzQgMTFCMDtCMDY5OzExMDEgMTE3NCAxMUIwOworQjA2QTtCMDZBOzExMDEgMTE3NCAxMUIxO0IwNkE7MTEwMSAxMTc0IDExQjE7CitCMDZCO0IwNkI7MTEwMSAxMTc0IDExQjI7QjA2QjsxMTAxIDExNzQgMTFCMjsKK0IwNkM7QjA2QzsxMTAxIDExNzQgMTFCMztCMDZDOzExMDEgMTE3NCAxMUIzOworQjA2RDtCMDZEOzExMDEgMTE3NCAxMUI0O0IwNkQ7MTEwMSAxMTc0IDExQjQ7CitCMDZFO0IwNkU7MTEwMSAxMTc0IDExQjU7QjA2RTsxMTAxIDExNzQgMTFCNTsKK0IwNkY7QjA2RjsxMTAxIDExNzQgMTFCNjtCMDZGOzExMDEgMTE3NCAxMUI2OworQjA3MDtCMDcwOzExMDEgMTE3NCAxMUI3O0IwNzA7MTEwMSAxMTc0IDExQjc7CitCMDcxO0IwNzE7MTEwMSAxMTc0IDExQjg7QjA3MTsxMTAxIDExNzQgMTFCODsKK0IwNzI7QjA3MjsxMTAxIDExNzQgMTFCOTtCMDcyOzExMDEgMTE3NCAxMUI5OworQjA3MztCMDczOzExMDEgMTE3NCAxMUJBO0IwNzM7MTEwMSAxMTc0IDExQkE7CitCMDc0O0IwNzQ7MTEwMSAxMTc0IDExQkI7QjA3NDsxMTAxIDExNzQgMTFCQjsKK0IwNzU7QjA3NTsxMTAxIDExNzQgMTFCQztCMDc1OzExMDEgMTE3NCAxMUJDOworQjA3NjtCMDc2OzExMDEgMTE3NCAxMUJEO0IwNzY7MTEwMSAxMTc0IDExQkQ7CitCMDc3O0IwNzc7MTEwMSAxMTc0IDExQkU7QjA3NzsxMTAxIDExNzQgMTFCRTsKK0IwNzg7QjA3ODsxMTAxIDExNzQgMTFCRjtCMDc4OzExMDEgMTE3NCAxMUJGOworQjA3OTtCMDc5OzExMDEgMTE3NCAxMUMwO0IwNzk7MTEwMSAxMTc0IDExQzA7CitCMDdBO0IwN0E7MTEwMSAxMTc0IDExQzE7QjA3QTsxMTAxIDExNzQgMTFDMTsKK0IwN0I7QjA3QjsxMTAxIDExNzQgMTFDMjtCMDdCOzExMDEgMTE3NCAxMUMyOworQjA3QztCMDdDOzExMDEgMTE3NTtCMDdDOzExMDEgMTE3NTsKK0IwN0Q7QjA3RDsxMTAxIDExNzUgMTFBODtCMDdEOzExMDEgMTE3NSAxMUE4OworQjA3RTtCMDdFOzExMDEgMTE3NSAxMUE5O0IwN0U7MTEwMSAxMTc1IDExQTk7CitCMDdGO0IwN0Y7MTEwMSAxMTc1IDExQUE7QjA3RjsxMTAxIDExNzUgMTFBQTsKK0IwODA7QjA4MDsxMTAxIDExNzUgMTFBQjtCMDgwOzExMDEgMTE3NSAxMUFCOworQjA4MTtCMDgxOzExMDEgMTE3NSAxMUFDO0IwODE7MTEwMSAxMTc1IDExQUM7CitCMDgyO0IwODI7MTEwMSAxMTc1IDExQUQ7QjA4MjsxMTAxIDExNzUgMTFBRDsKK0IwODM7QjA4MzsxMTAxIDExNzUgMTFBRTtCMDgzOzExMDEgMTE3NSAxMUFFOworQjA4NDtCMDg0OzExMDEgMTE3NSAxMUFGO0IwODQ7MTEwMSAxMTc1IDExQUY7CitCMDg1O0IwODU7MTEwMSAxMTc1IDExQjA7QjA4NTsxMTAxIDExNzUgMTFCMDsKK0IwODY7QjA4NjsxMTAxIDExNzUgMTFCMTtCMDg2OzExMDEgMTE3NSAxMUIxOworQjA4NztCMDg3OzExMDEgMTE3NSAxMUIyO0IwODc7MTEwMSAxMTc1IDExQjI7CitCMDg4O0IwODg7MTEwMSAxMTc1IDExQjM7QjA4ODsxMTAxIDExNzUgMTFCMzsKK0IwODk7QjA4OTsxMTAxIDExNzUgMTFCNDtCMDg5OzExMDEgMTE3NSAxMUI0OworQjA4QTtCMDhBOzExMDEgMTE3NSAxMUI1O0IwOEE7MTEwMSAxMTc1IDExQjU7CitCMDhCO0IwOEI7MTEwMSAxMTc1IDExQjY7QjA4QjsxMTAxIDExNzUgMTFCNjsKK0IwOEM7QjA4QzsxMTAxIDExNzUgMTFCNztCMDhDOzExMDEgMTE3NSAxMUI3OworQjA4RDtCMDhEOzExMDEgMTE3NSAxMUI4O0IwOEQ7MTEwMSAxMTc1IDExQjg7CitCMDhFO0IwOEU7MTEwMSAxMTc1IDExQjk7QjA4RTsxMTAxIDExNzUgMTFCOTsKK0IwOEY7QjA4RjsxMTAxIDExNzUgMTFCQTtCMDhGOzExMDEgMTE3NSAxMUJBOworQjA5MDtCMDkwOzExMDEgMTE3NSAxMUJCO0IwOTA7MTEwMSAxMTc1IDExQkI7CitCMDkxO0IwOTE7MTEwMSAxMTc1IDExQkM7QjA5MTsxMTAxIDExNzUgMTFCQzsKK0IwOTI7QjA5MjsxMTAxIDExNzUgMTFCRDtCMDkyOzExMDEgMTE3NSAxMUJEOworQjA5MztCMDkzOzExMDEgMTE3NSAxMUJFO0IwOTM7MTEwMSAxMTc1IDExQkU7CitCMDk0O0IwOTQ7MTEwMSAxMTc1IDExQkY7QjA5NDsxMTAxIDExNzUgMTFCRjsKK0IwOTU7QjA5NTsxMTAxIDExNzUgMTFDMDtCMDk1OzExMDEgMTE3NSAxMUMwOworQjA5NjtCMDk2OzExMDEgMTE3NSAxMUMxO0IwOTY7MTEwMSAxMTc1IDExQzE7CitCMDk3O0IwOTc7MTEwMSAxMTc1IDExQzI7QjA5NzsxMTAxIDExNzUgMTFDMjsKK0IwOTg7QjA5ODsxMTAyIDExNjE7QjA5ODsxMTAyIDExNjE7CitCMDk5O0IwOTk7MTEwMiAxMTYxIDExQTg7QjA5OTsxMTAyIDExNjEgMTFBODsKK0IwOUE7QjA5QTsxMTAyIDExNjEgMTFBOTtCMDlBOzExMDIgMTE2MSAxMUE5OworQjA5QjtCMDlCOzExMDIgMTE2MSAxMUFBO0IwOUI7MTEwMiAxMTYxIDExQUE7CitCMDlDO0IwOUM7MTEwMiAxMTYxIDExQUI7QjA5QzsxMTAyIDExNjEgMTFBQjsKK0IwOUQ7QjA5RDsxMTAyIDExNjEgMTFBQztCMDlEOzExMDIgMTE2MSAxMUFDOworQjA5RTtCMDlFOzExMDIgMTE2MSAxMUFEO0IwOUU7MTEwMiAxMTYxIDExQUQ7CitCMDlGO0IwOUY7MTEwMiAxMTYxIDExQUU7QjA5RjsxMTAyIDExNjEgMTFBRTsKK0IwQTA7QjBBMDsxMTAyIDExNjEgMTFBRjtCMEEwOzExMDIgMTE2MSAxMUFGOworQjBBMTtCMEExOzExMDIgMTE2MSAxMUIwO0IwQTE7MTEwMiAxMTYxIDExQjA7CitCMEEyO0IwQTI7MTEwMiAxMTYxIDExQjE7QjBBMjsxMTAyIDExNjEgMTFCMTsKK0IwQTM7QjBBMzsxMTAyIDExNjEgMTFCMjtCMEEzOzExMDIgMTE2MSAxMUIyOworQjBBNDtCMEE0OzExMDIgMTE2MSAxMUIzO0IwQTQ7MTEwMiAxMTYxIDExQjM7CitCMEE1O0IwQTU7MTEwMiAxMTYxIDExQjQ7QjBBNTsxMTAyIDExNjEgMTFCNDsKK0IwQTY7QjBBNjsxMTAyIDExNjEgMTFCNTtCMEE2OzExMDIgMTE2MSAxMUI1OworQjBBNztCMEE3OzExMDIgMTE2MSAxMUI2O0IwQTc7MTEwMiAxMTYxIDExQjY7CitCMEE4O0IwQTg7MTEwMiAxMTYxIDExQjc7QjBBODsxMTAyIDExNjEgMTFCNzsKK0IwQTk7QjBBOTsxMTAyIDExNjEgMTFCODtCMEE5OzExMDIgMTE2MSAxMUI4OworQjBBQTtCMEFBOzExMDIgMTE2MSAxMUI5O0IwQUE7MTEwMiAxMTYxIDExQjk7CitCMEFCO0IwQUI7MTEwMiAxMTYxIDExQkE7QjBBQjsxMTAyIDExNjEgMTFCQTsKK0IwQUM7QjBBQzsxMTAyIDExNjEgMTFCQjtCMEFDOzExMDIgMTE2MSAxMUJCOworQjBBRDtCMEFEOzExMDIgMTE2MSAxMUJDO0IwQUQ7MTEwMiAxMTYxIDExQkM7CitCMEFFO0IwQUU7MTEwMiAxMTYxIDExQkQ7QjBBRTsxMTAyIDExNjEgMTFCRDsKK0IwQUY7QjBBRjsxMTAyIDExNjEgMTFCRTtCMEFGOzExMDIgMTE2MSAxMUJFOworQjBCMDtCMEIwOzExMDIgMTE2MSAxMUJGO0IwQjA7MTEwMiAxMTYxIDExQkY7CitCMEIxO0IwQjE7MTEwMiAxMTYxIDExQzA7QjBCMTsxMTAyIDExNjEgMTFDMDsKK0IwQjI7QjBCMjsxMTAyIDExNjEgMTFDMTtCMEIyOzExMDIgMTE2MSAxMUMxOworQjBCMztCMEIzOzExMDIgMTE2MSAxMUMyO0IwQjM7MTEwMiAxMTYxIDExQzI7CitCMEI0O0IwQjQ7MTEwMiAxMTYyO0IwQjQ7MTEwMiAxMTYyOworQjBCNTtCMEI1OzExMDIgMTE2MiAxMUE4O0IwQjU7MTEwMiAxMTYyIDExQTg7CitCMEI2O0IwQjY7MTEwMiAxMTYyIDExQTk7QjBCNjsxMTAyIDExNjIgMTFBOTsKK0IwQjc7QjBCNzsxMTAyIDExNjIgMTFBQTtCMEI3OzExMDIgMTE2MiAxMUFBOworQjBCODtCMEI4OzExMDIgMTE2MiAxMUFCO0IwQjg7MTEwMiAxMTYyIDExQUI7CitCMEI5O0IwQjk7MTEwMiAxMTYyIDExQUM7QjBCOTsxMTAyIDExNjIgMTFBQzsKK0IwQkE7QjBCQTsxMTAyIDExNjIgMTFBRDtCMEJBOzExMDIgMTE2MiAxMUFEOworQjBCQjtCMEJCOzExMDIgMTE2MiAxMUFFO0IwQkI7MTEwMiAxMTYyIDExQUU7CitCMEJDO0IwQkM7MTEwMiAxMTYyIDExQUY7QjBCQzsxMTAyIDExNjIgMTFBRjsKK0IwQkQ7QjBCRDsxMTAyIDExNjIgMTFCMDtCMEJEOzExMDIgMTE2MiAxMUIwOworQjBCRTtCMEJFOzExMDIgMTE2MiAxMUIxO0IwQkU7MTEwMiAxMTYyIDExQjE7CitCMEJGO0IwQkY7MTEwMiAxMTYyIDExQjI7QjBCRjsxMTAyIDExNjIgMTFCMjsKK0IwQzA7QjBDMDsxMTAyIDExNjIgMTFCMztCMEMwOzExMDIgMTE2MiAxMUIzOworQjBDMTtCMEMxOzExMDIgMTE2MiAxMUI0O0IwQzE7MTEwMiAxMTYyIDExQjQ7CitCMEMyO0IwQzI7MTEwMiAxMTYyIDExQjU7QjBDMjsxMTAyIDExNjIgMTFCNTsKK0IwQzM7QjBDMzsxMTAyIDExNjIgMTFCNjtCMEMzOzExMDIgMTE2MiAxMUI2OworQjBDNDtCMEM0OzExMDIgMTE2MiAxMUI3O0IwQzQ7MTEwMiAxMTYyIDExQjc7CitCMEM1O0IwQzU7MTEwMiAxMTYyIDExQjg7QjBDNTsxMTAyIDExNjIgMTFCODsKK0IwQzY7QjBDNjsxMTAyIDExNjIgMTFCOTtCMEM2OzExMDIgMTE2MiAxMUI5OworQjBDNztCMEM3OzExMDIgMTE2MiAxMUJBO0IwQzc7MTEwMiAxMTYyIDExQkE7CitCMEM4O0IwQzg7MTEwMiAxMTYyIDExQkI7QjBDODsxMTAyIDExNjIgMTFCQjsKK0IwQzk7QjBDOTsxMTAyIDExNjIgMTFCQztCMEM5OzExMDIgMTE2MiAxMUJDOworQjBDQTtCMENBOzExMDIgMTE2MiAxMUJEO0IwQ0E7MTEwMiAxMTYyIDExQkQ7CitCMENCO0IwQ0I7MTEwMiAxMTYyIDExQkU7QjBDQjsxMTAyIDExNjIgMTFCRTsKK0IwQ0M7QjBDQzsxMTAyIDExNjIgMTFCRjtCMENDOzExMDIgMTE2MiAxMUJGOworQjBDRDtCMENEOzExMDIgMTE2MiAxMUMwO0IwQ0Q7MTEwMiAxMTYyIDExQzA7CitCMENFO0IwQ0U7MTEwMiAxMTYyIDExQzE7QjBDRTsxMTAyIDExNjIgMTFDMTsKK0IwQ0Y7QjBDRjsxMTAyIDExNjIgMTFDMjtCMENGOzExMDIgMTE2MiAxMUMyOworQjBEMDtCMEQwOzExMDIgMTE2MztCMEQwOzExMDIgMTE2MzsKK0IwRDE7QjBEMTsxMTAyIDExNjMgMTFBODtCMEQxOzExMDIgMTE2MyAxMUE4OworQjBEMjtCMEQyOzExMDIgMTE2MyAxMUE5O0IwRDI7MTEwMiAxMTYzIDExQTk7CitCMEQzO0IwRDM7MTEwMiAxMTYzIDExQUE7QjBEMzsxMTAyIDExNjMgMTFBQTsKK0IwRDQ7QjBENDsxMTAyIDExNjMgMTFBQjtCMEQ0OzExMDIgMTE2MyAxMUFCOworQjBENTtCMEQ1OzExMDIgMTE2MyAxMUFDO0IwRDU7MTEwMiAxMTYzIDExQUM7CitCMEQ2O0IwRDY7MTEwMiAxMTYzIDExQUQ7QjBENjsxMTAyIDExNjMgMTFBRDsKK0IwRDc7QjBENzsxMTAyIDExNjMgMTFBRTtCMEQ3OzExMDIgMTE2MyAxMUFFOworQjBEODtCMEQ4OzExMDIgMTE2MyAxMUFGO0IwRDg7MTEwMiAxMTYzIDExQUY7CitCMEQ5O0IwRDk7MTEwMiAxMTYzIDExQjA7QjBEOTsxMTAyIDExNjMgMTFCMDsKK0IwREE7QjBEQTsxMTAyIDExNjMgMTFCMTtCMERBOzExMDIgMTE2MyAxMUIxOworQjBEQjtCMERCOzExMDIgMTE2MyAxMUIyO0IwREI7MTEwMiAxMTYzIDExQjI7CitCMERDO0IwREM7MTEwMiAxMTYzIDExQjM7QjBEQzsxMTAyIDExNjMgMTFCMzsKK0IwREQ7QjBERDsxMTAyIDExNjMgMTFCNDtCMEREOzExMDIgMTE2MyAxMUI0OworQjBERTtCMERFOzExMDIgMTE2MyAxMUI1O0IwREU7MTEwMiAxMTYzIDExQjU7CitCMERGO0IwREY7MTEwMiAxMTYzIDExQjY7QjBERjsxMTAyIDExNjMgMTFCNjsKK0IwRTA7QjBFMDsxMTAyIDExNjMgMTFCNztCMEUwOzExMDIgMTE2MyAxMUI3OworQjBFMTtCMEUxOzExMDIgMTE2MyAxMUI4O0IwRTE7MTEwMiAxMTYzIDExQjg7CitCMEUyO0IwRTI7MTEwMiAxMTYzIDExQjk7QjBFMjsxMTAyIDExNjMgMTFCOTsKK0IwRTM7QjBFMzsxMTAyIDExNjMgMTFCQTtCMEUzOzExMDIgMTE2MyAxMUJBOworQjBFNDtCMEU0OzExMDIgMTE2MyAxMUJCO0IwRTQ7MTEwMiAxMTYzIDExQkI7CitCMEU1O0IwRTU7MTEwMiAxMTYzIDExQkM7QjBFNTsxMTAyIDExNjMgMTFCQzsKK0IwRTY7QjBFNjsxMTAyIDExNjMgMTFCRDtCMEU2OzExMDIgMTE2MyAxMUJEOworQjBFNztCMEU3OzExMDIgMTE2MyAxMUJFO0IwRTc7MTEwMiAxMTYzIDExQkU7CitCMEU4O0IwRTg7MTEwMiAxMTYzIDExQkY7QjBFODsxMTAyIDExNjMgMTFCRjsKK0IwRTk7QjBFOTsxMTAyIDExNjMgMTFDMDtCMEU5OzExMDIgMTE2MyAxMUMwOworQjBFQTtCMEVBOzExMDIgMTE2MyAxMUMxO0IwRUE7MTEwMiAxMTYzIDExQzE7CitCMEVCO0IwRUI7MTEwMiAxMTYzIDExQzI7QjBFQjsxMTAyIDExNjMgMTFDMjsKK0IwRUM7QjBFQzsxMTAyIDExNjQ7QjBFQzsxMTAyIDExNjQ7CitCMEVEO0IwRUQ7MTEwMiAxMTY0IDExQTg7QjBFRDsxMTAyIDExNjQgMTFBODsKK0IwRUU7QjBFRTsxMTAyIDExNjQgMTFBOTtCMEVFOzExMDIgMTE2NCAxMUE5OworQjBFRjtCMEVGOzExMDIgMTE2NCAxMUFBO0IwRUY7MTEwMiAxMTY0IDExQUE7CitCMEYwO0IwRjA7MTEwMiAxMTY0IDExQUI7QjBGMDsxMTAyIDExNjQgMTFBQjsKK0IwRjE7QjBGMTsxMTAyIDExNjQgMTFBQztCMEYxOzExMDIgMTE2NCAxMUFDOworQjBGMjtCMEYyOzExMDIgMTE2NCAxMUFEO0IwRjI7MTEwMiAxMTY0IDExQUQ7CitCMEYzO0IwRjM7MTEwMiAxMTY0IDExQUU7QjBGMzsxMTAyIDExNjQgMTFBRTsKK0IwRjQ7QjBGNDsxMTAyIDExNjQgMTFBRjtCMEY0OzExMDIgMTE2NCAxMUFGOworQjBGNTtCMEY1OzExMDIgMTE2NCAxMUIwO0IwRjU7MTEwMiAxMTY0IDExQjA7CitCMEY2O0IwRjY7MTEwMiAxMTY0IDExQjE7QjBGNjsxMTAyIDExNjQgMTFCMTsKK0IwRjc7QjBGNzsxMTAyIDExNjQgMTFCMjtCMEY3OzExMDIgMTE2NCAxMUIyOworQjBGODtCMEY4OzExMDIgMTE2NCAxMUIzO0IwRjg7MTEwMiAxMTY0IDExQjM7CitCMEY5O0IwRjk7MTEwMiAxMTY0IDExQjQ7QjBGOTsxMTAyIDExNjQgMTFCNDsKK0IwRkE7QjBGQTsxMTAyIDExNjQgMTFCNTtCMEZBOzExMDIgMTE2NCAxMUI1OworQjBGQjtCMEZCOzExMDIgMTE2NCAxMUI2O0IwRkI7MTEwMiAxMTY0IDExQjY7CitCMEZDO0IwRkM7MTEwMiAxMTY0IDExQjc7QjBGQzsxMTAyIDExNjQgMTFCNzsKK0IwRkQ7QjBGRDsxMTAyIDExNjQgMTFCODtCMEZEOzExMDIgMTE2NCAxMUI4OworQjBGRTtCMEZFOzExMDIgMTE2NCAxMUI5O0IwRkU7MTEwMiAxMTY0IDExQjk7CitCMEZGO0IwRkY7MTEwMiAxMTY0IDExQkE7QjBGRjsxMTAyIDExNjQgMTFCQTsKK0IxMDA7QjEwMDsxMTAyIDExNjQgMTFCQjtCMTAwOzExMDIgMTE2NCAxMUJCOworQjEwMTtCMTAxOzExMDIgMTE2NCAxMUJDO0IxMDE7MTEwMiAxMTY0IDExQkM7CitCMTAyO0IxMDI7MTEwMiAxMTY0IDExQkQ7QjEwMjsxMTAyIDExNjQgMTFCRDsKK0IxMDM7QjEwMzsxMTAyIDExNjQgMTFCRTtCMTAzOzExMDIgMTE2NCAxMUJFOworQjEwNDtCMTA0OzExMDIgMTE2NCAxMUJGO0IxMDQ7MTEwMiAxMTY0IDExQkY7CitCMTA1O0IxMDU7MTEwMiAxMTY0IDExQzA7QjEwNTsxMTAyIDExNjQgMTFDMDsKK0IxMDY7QjEwNjsxMTAyIDExNjQgMTFDMTtCMTA2OzExMDIgMTE2NCAxMUMxOworQjEwNztCMTA3OzExMDIgMTE2NCAxMUMyO0IxMDc7MTEwMiAxMTY0IDExQzI7CitCMTA4O0IxMDg7MTEwMiAxMTY1O0IxMDg7MTEwMiAxMTY1OworQjEwOTtCMTA5OzExMDIgMTE2NSAxMUE4O0IxMDk7MTEwMiAxMTY1IDExQTg7CitCMTBBO0IxMEE7MTEwMiAxMTY1IDExQTk7QjEwQTsxMTAyIDExNjUgMTFBOTsKK0IxMEI7QjEwQjsxMTAyIDExNjUgMTFBQTtCMTBCOzExMDIgMTE2NSAxMUFBOworQjEwQztCMTBDOzExMDIgMTE2NSAxMUFCO0IxMEM7MTEwMiAxMTY1IDExQUI7CitCMTBEO0IxMEQ7MTEwMiAxMTY1IDExQUM7QjEwRDsxMTAyIDExNjUgMTFBQzsKK0IxMEU7QjEwRTsxMTAyIDExNjUgMTFBRDtCMTBFOzExMDIgMTE2NSAxMUFEOworQjEwRjtCMTBGOzExMDIgMTE2NSAxMUFFO0IxMEY7MTEwMiAxMTY1IDExQUU7CitCMTEwO0IxMTA7MTEwMiAxMTY1IDExQUY7QjExMDsxMTAyIDExNjUgMTFBRjsKK0IxMTE7QjExMTsxMTAyIDExNjUgMTFCMDtCMTExOzExMDIgMTE2NSAxMUIwOworQjExMjtCMTEyOzExMDIgMTE2NSAxMUIxO0IxMTI7MTEwMiAxMTY1IDExQjE7CitCMTEzO0IxMTM7MTEwMiAxMTY1IDExQjI7QjExMzsxMTAyIDExNjUgMTFCMjsKK0IxMTQ7QjExNDsxMTAyIDExNjUgMTFCMztCMTE0OzExMDIgMTE2NSAxMUIzOworQjExNTtCMTE1OzExMDIgMTE2NSAxMUI0O0IxMTU7MTEwMiAxMTY1IDExQjQ7CitCMTE2O0IxMTY7MTEwMiAxMTY1IDExQjU7QjExNjsxMTAyIDExNjUgMTFCNTsKK0IxMTc7QjExNzsxMTAyIDExNjUgMTFCNjtCMTE3OzExMDIgMTE2NSAxMUI2OworQjExODtCMTE4OzExMDIgMTE2NSAxMUI3O0IxMTg7MTEwMiAxMTY1IDExQjc7CitCMTE5O0IxMTk7MTEwMiAxMTY1IDExQjg7QjExOTsxMTAyIDExNjUgMTFCODsKK0IxMUE7QjExQTsxMTAyIDExNjUgMTFCOTtCMTFBOzExMDIgMTE2NSAxMUI5OworQjExQjtCMTFCOzExMDIgMTE2NSAxMUJBO0IxMUI7MTEwMiAxMTY1IDExQkE7CitCMTFDO0IxMUM7MTEwMiAxMTY1IDExQkI7QjExQzsxMTAyIDExNjUgMTFCQjsKK0IxMUQ7QjExRDsxMTAyIDExNjUgMTFCQztCMTFEOzExMDIgMTE2NSAxMUJDOworQjExRTtCMTFFOzExMDIgMTE2NSAxMUJEO0IxMUU7MTEwMiAxMTY1IDExQkQ7CitCMTFGO0IxMUY7MTEwMiAxMTY1IDExQkU7QjExRjsxMTAyIDExNjUgMTFCRTsKK0IxMjA7QjEyMDsxMTAyIDExNjUgMTFCRjtCMTIwOzExMDIgMTE2NSAxMUJGOworQjEyMTtCMTIxOzExMDIgMTE2NSAxMUMwO0IxMjE7MTEwMiAxMTY1IDExQzA7CitCMTIyO0IxMjI7MTEwMiAxMTY1IDExQzE7QjEyMjsxMTAyIDExNjUgMTFDMTsKK0IxMjM7QjEyMzsxMTAyIDExNjUgMTFDMjtCMTIzOzExMDIgMTE2NSAxMUMyOworQjEyNDtCMTI0OzExMDIgMTE2NjtCMTI0OzExMDIgMTE2NjsKK0IxMjU7QjEyNTsxMTAyIDExNjYgMTFBODtCMTI1OzExMDIgMTE2NiAxMUE4OworQjEyNjtCMTI2OzExMDIgMTE2NiAxMUE5O0IxMjY7MTEwMiAxMTY2IDExQTk7CitCMTI3O0IxMjc7MTEwMiAxMTY2IDExQUE7QjEyNzsxMTAyIDExNjYgMTFBQTsKK0IxMjg7QjEyODsxMTAyIDExNjYgMTFBQjtCMTI4OzExMDIgMTE2NiAxMUFCOworQjEyOTtCMTI5OzExMDIgMTE2NiAxMUFDO0IxMjk7MTEwMiAxMTY2IDExQUM7CitCMTJBO0IxMkE7MTEwMiAxMTY2IDExQUQ7QjEyQTsxMTAyIDExNjYgMTFBRDsKK0IxMkI7QjEyQjsxMTAyIDExNjYgMTFBRTtCMTJCOzExMDIgMTE2NiAxMUFFOworQjEyQztCMTJDOzExMDIgMTE2NiAxMUFGO0IxMkM7MTEwMiAxMTY2IDExQUY7CitCMTJEO0IxMkQ7MTEwMiAxMTY2IDExQjA7QjEyRDsxMTAyIDExNjYgMTFCMDsKK0IxMkU7QjEyRTsxMTAyIDExNjYgMTFCMTtCMTJFOzExMDIgMTE2NiAxMUIxOworQjEyRjtCMTJGOzExMDIgMTE2NiAxMUIyO0IxMkY7MTEwMiAxMTY2IDExQjI7CitCMTMwO0IxMzA7MTEwMiAxMTY2IDExQjM7QjEzMDsxMTAyIDExNjYgMTFCMzsKK0IxMzE7QjEzMTsxMTAyIDExNjYgMTFCNDtCMTMxOzExMDIgMTE2NiAxMUI0OworQjEzMjtCMTMyOzExMDIgMTE2NiAxMUI1O0IxMzI7MTEwMiAxMTY2IDExQjU7CitCMTMzO0IxMzM7MTEwMiAxMTY2IDExQjY7QjEzMzsxMTAyIDExNjYgMTFCNjsKK0IxMzQ7QjEzNDsxMTAyIDExNjYgMTFCNztCMTM0OzExMDIgMTE2NiAxMUI3OworQjEzNTtCMTM1OzExMDIgMTE2NiAxMUI4O0IxMzU7MTEwMiAxMTY2IDExQjg7CitCMTM2O0IxMzY7MTEwMiAxMTY2IDExQjk7QjEzNjsxMTAyIDExNjYgMTFCOTsKK0IxMzc7QjEzNzsxMTAyIDExNjYgMTFCQTtCMTM3OzExMDIgMTE2NiAxMUJBOworQjEzODtCMTM4OzExMDIgMTE2NiAxMUJCO0IxMzg7MTEwMiAxMTY2IDExQkI7CitCMTM5O0IxMzk7MTEwMiAxMTY2IDExQkM7QjEzOTsxMTAyIDExNjYgMTFCQzsKK0IxM0E7QjEzQTsxMTAyIDExNjYgMTFCRDtCMTNBOzExMDIgMTE2NiAxMUJEOworQjEzQjtCMTNCOzExMDIgMTE2NiAxMUJFO0IxM0I7MTEwMiAxMTY2IDExQkU7CitCMTNDO0IxM0M7MTEwMiAxMTY2IDExQkY7QjEzQzsxMTAyIDExNjYgMTFCRjsKK0IxM0Q7QjEzRDsxMTAyIDExNjYgMTFDMDtCMTNEOzExMDIgMTE2NiAxMUMwOworQjEzRTtCMTNFOzExMDIgMTE2NiAxMUMxO0IxM0U7MTEwMiAxMTY2IDExQzE7CitCMTNGO0IxM0Y7MTEwMiAxMTY2IDExQzI7QjEzRjsxMTAyIDExNjYgMTFDMjsKK0IxNDA7QjE0MDsxMTAyIDExNjc7QjE0MDsxMTAyIDExNjc7CitCMTQxO0IxNDE7MTEwMiAxMTY3IDExQTg7QjE0MTsxMTAyIDExNjcgMTFBODsKK0IxNDI7QjE0MjsxMTAyIDExNjcgMTFBOTtCMTQyOzExMDIgMTE2NyAxMUE5OworQjE0MztCMTQzOzExMDIgMTE2NyAxMUFBO0IxNDM7MTEwMiAxMTY3IDExQUE7CitCMTQ0O0IxNDQ7MTEwMiAxMTY3IDExQUI7QjE0NDsxMTAyIDExNjcgMTFBQjsKK0IxNDU7QjE0NTsxMTAyIDExNjcgMTFBQztCMTQ1OzExMDIgMTE2NyAxMUFDOworQjE0NjtCMTQ2OzExMDIgMTE2NyAxMUFEO0IxNDY7MTEwMiAxMTY3IDExQUQ7CitCMTQ3O0IxNDc7MTEwMiAxMTY3IDExQUU7QjE0NzsxMTAyIDExNjcgMTFBRTsKK0IxNDg7QjE0ODsxMTAyIDExNjcgMTFBRjtCMTQ4OzExMDIgMTE2NyAxMUFGOworQjE0OTtCMTQ5OzExMDIgMTE2NyAxMUIwO0IxNDk7MTEwMiAxMTY3IDExQjA7CitCMTRBO0IxNEE7MTEwMiAxMTY3IDExQjE7QjE0QTsxMTAyIDExNjcgMTFCMTsKK0IxNEI7QjE0QjsxMTAyIDExNjcgMTFCMjtCMTRCOzExMDIgMTE2NyAxMUIyOworQjE0QztCMTRDOzExMDIgMTE2NyAxMUIzO0IxNEM7MTEwMiAxMTY3IDExQjM7CitCMTREO0IxNEQ7MTEwMiAxMTY3IDExQjQ7QjE0RDsxMTAyIDExNjcgMTFCNDsKK0IxNEU7QjE0RTsxMTAyIDExNjcgMTFCNTtCMTRFOzExMDIgMTE2NyAxMUI1OworQjE0RjtCMTRGOzExMDIgMTE2NyAxMUI2O0IxNEY7MTEwMiAxMTY3IDExQjY7CitCMTUwO0IxNTA7MTEwMiAxMTY3IDExQjc7QjE1MDsxMTAyIDExNjcgMTFCNzsKK0IxNTE7QjE1MTsxMTAyIDExNjcgMTFCODtCMTUxOzExMDIgMTE2NyAxMUI4OworQjE1MjtCMTUyOzExMDIgMTE2NyAxMUI5O0IxNTI7MTEwMiAxMTY3IDExQjk7CitCMTUzO0IxNTM7MTEwMiAxMTY3IDExQkE7QjE1MzsxMTAyIDExNjcgMTFCQTsKK0IxNTQ7QjE1NDsxMTAyIDExNjcgMTFCQjtCMTU0OzExMDIgMTE2NyAxMUJCOworQjE1NTtCMTU1OzExMDIgMTE2NyAxMUJDO0IxNTU7MTEwMiAxMTY3IDExQkM7CitCMTU2O0IxNTY7MTEwMiAxMTY3IDExQkQ7QjE1NjsxMTAyIDExNjcgMTFCRDsKK0IxNTc7QjE1NzsxMTAyIDExNjcgMTFCRTtCMTU3OzExMDIgMTE2NyAxMUJFOworQjE1ODtCMTU4OzExMDIgMTE2NyAxMUJGO0IxNTg7MTEwMiAxMTY3IDExQkY7CitCMTU5O0IxNTk7MTEwMiAxMTY3IDExQzA7QjE1OTsxMTAyIDExNjcgMTFDMDsKK0IxNUE7QjE1QTsxMTAyIDExNjcgMTFDMTtCMTVBOzExMDIgMTE2NyAxMUMxOworQjE1QjtCMTVCOzExMDIgMTE2NyAxMUMyO0IxNUI7MTEwMiAxMTY3IDExQzI7CitCMTVDO0IxNUM7MTEwMiAxMTY4O0IxNUM7MTEwMiAxMTY4OworQjE1RDtCMTVEOzExMDIgMTE2OCAxMUE4O0IxNUQ7MTEwMiAxMTY4IDExQTg7CitCMTVFO0IxNUU7MTEwMiAxMTY4IDExQTk7QjE1RTsxMTAyIDExNjggMTFBOTsKK0IxNUY7QjE1RjsxMTAyIDExNjggMTFBQTtCMTVGOzExMDIgMTE2OCAxMUFBOworQjE2MDtCMTYwOzExMDIgMTE2OCAxMUFCO0IxNjA7MTEwMiAxMTY4IDExQUI7CitCMTYxO0IxNjE7MTEwMiAxMTY4IDExQUM7QjE2MTsxMTAyIDExNjggMTFBQzsKK0IxNjI7QjE2MjsxMTAyIDExNjggMTFBRDtCMTYyOzExMDIgMTE2OCAxMUFEOworQjE2MztCMTYzOzExMDIgMTE2OCAxMUFFO0IxNjM7MTEwMiAxMTY4IDExQUU7CitCMTY0O0IxNjQ7MTEwMiAxMTY4IDExQUY7QjE2NDsxMTAyIDExNjggMTFBRjsKK0IxNjU7QjE2NTsxMTAyIDExNjggMTFCMDtCMTY1OzExMDIgMTE2OCAxMUIwOworQjE2NjtCMTY2OzExMDIgMTE2OCAxMUIxO0IxNjY7MTEwMiAxMTY4IDExQjE7CitCMTY3O0IxNjc7MTEwMiAxMTY4IDExQjI7QjE2NzsxMTAyIDExNjggMTFCMjsKK0IxNjg7QjE2ODsxMTAyIDExNjggMTFCMztCMTY4OzExMDIgMTE2OCAxMUIzOworQjE2OTtCMTY5OzExMDIgMTE2OCAxMUI0O0IxNjk7MTEwMiAxMTY4IDExQjQ7CitCMTZBO0IxNkE7MTEwMiAxMTY4IDExQjU7QjE2QTsxMTAyIDExNjggMTFCNTsKK0IxNkI7QjE2QjsxMTAyIDExNjggMTFCNjtCMTZCOzExMDIgMTE2OCAxMUI2OworQjE2QztCMTZDOzExMDIgMTE2OCAxMUI3O0IxNkM7MTEwMiAxMTY4IDExQjc7CitCMTZEO0IxNkQ7MTEwMiAxMTY4IDExQjg7QjE2RDsxMTAyIDExNjggMTFCODsKK0IxNkU7QjE2RTsxMTAyIDExNjggMTFCOTtCMTZFOzExMDIgMTE2OCAxMUI5OworQjE2RjtCMTZGOzExMDIgMTE2OCAxMUJBO0IxNkY7MTEwMiAxMTY4IDExQkE7CitCMTcwO0IxNzA7MTEwMiAxMTY4IDExQkI7QjE3MDsxMTAyIDExNjggMTFCQjsKK0IxNzE7QjE3MTsxMTAyIDExNjggMTFCQztCMTcxOzExMDIgMTE2OCAxMUJDOworQjE3MjtCMTcyOzExMDIgMTE2OCAxMUJEO0IxNzI7MTEwMiAxMTY4IDExQkQ7CitCMTczO0IxNzM7MTEwMiAxMTY4IDExQkU7QjE3MzsxMTAyIDExNjggMTFCRTsKK0IxNzQ7QjE3NDsxMTAyIDExNjggMTFCRjtCMTc0OzExMDIgMTE2OCAxMUJGOworQjE3NTtCMTc1OzExMDIgMTE2OCAxMUMwO0IxNzU7MTEwMiAxMTY4IDExQzA7CitCMTc2O0IxNzY7MTEwMiAxMTY4IDExQzE7QjE3NjsxMTAyIDExNjggMTFDMTsKK0IxNzc7QjE3NzsxMTAyIDExNjggMTFDMjtCMTc3OzExMDIgMTE2OCAxMUMyOworQjE3ODtCMTc4OzExMDIgMTE2OTtCMTc4OzExMDIgMTE2OTsKK0IxNzk7QjE3OTsxMTAyIDExNjkgMTFBODtCMTc5OzExMDIgMTE2OSAxMUE4OworQjE3QTtCMTdBOzExMDIgMTE2OSAxMUE5O0IxN0E7MTEwMiAxMTY5IDExQTk7CitCMTdCO0IxN0I7MTEwMiAxMTY5IDExQUE7QjE3QjsxMTAyIDExNjkgMTFBQTsKK0IxN0M7QjE3QzsxMTAyIDExNjkgMTFBQjtCMTdDOzExMDIgMTE2OSAxMUFCOworQjE3RDtCMTdEOzExMDIgMTE2OSAxMUFDO0IxN0Q7MTEwMiAxMTY5IDExQUM7CitCMTdFO0IxN0U7MTEwMiAxMTY5IDExQUQ7QjE3RTsxMTAyIDExNjkgMTFBRDsKK0IxN0Y7QjE3RjsxMTAyIDExNjkgMTFBRTtCMTdGOzExMDIgMTE2OSAxMUFFOworQjE4MDtCMTgwOzExMDIgMTE2OSAxMUFGO0IxODA7MTEwMiAxMTY5IDExQUY7CitCMTgxO0IxODE7MTEwMiAxMTY5IDExQjA7QjE4MTsxMTAyIDExNjkgMTFCMDsKK0IxODI7QjE4MjsxMTAyIDExNjkgMTFCMTtCMTgyOzExMDIgMTE2OSAxMUIxOworQjE4MztCMTgzOzExMDIgMTE2OSAxMUIyO0IxODM7MTEwMiAxMTY5IDExQjI7CitCMTg0O0IxODQ7MTEwMiAxMTY5IDExQjM7QjE4NDsxMTAyIDExNjkgMTFCMzsKK0IxODU7QjE4NTsxMTAyIDExNjkgMTFCNDtCMTg1OzExMDIgMTE2OSAxMUI0OworQjE4NjtCMTg2OzExMDIgMTE2OSAxMUI1O0IxODY7MTEwMiAxMTY5IDExQjU7CitCMTg3O0IxODc7MTEwMiAxMTY5IDExQjY7QjE4NzsxMTAyIDExNjkgMTFCNjsKK0IxODg7QjE4ODsxMTAyIDExNjkgMTFCNztCMTg4OzExMDIgMTE2OSAxMUI3OworQjE4OTtCMTg5OzExMDIgMTE2OSAxMUI4O0IxODk7MTEwMiAxMTY5IDExQjg7CitCMThBO0IxOEE7MTEwMiAxMTY5IDExQjk7QjE4QTsxMTAyIDExNjkgMTFCOTsKK0IxOEI7QjE4QjsxMTAyIDExNjkgMTFCQTtCMThCOzExMDIgMTE2OSAxMUJBOworQjE4QztCMThDOzExMDIgMTE2OSAxMUJCO0IxOEM7MTEwMiAxMTY5IDExQkI7CitCMThEO0IxOEQ7MTEwMiAxMTY5IDExQkM7QjE4RDsxMTAyIDExNjkgMTFCQzsKK0IxOEU7QjE4RTsxMTAyIDExNjkgMTFCRDtCMThFOzExMDIgMTE2OSAxMUJEOworQjE4RjtCMThGOzExMDIgMTE2OSAxMUJFO0IxOEY7MTEwMiAxMTY5IDExQkU7CitCMTkwO0IxOTA7MTEwMiAxMTY5IDExQkY7QjE5MDsxMTAyIDExNjkgMTFCRjsKK0IxOTE7QjE5MTsxMTAyIDExNjkgMTFDMDtCMTkxOzExMDIgMTE2OSAxMUMwOworQjE5MjtCMTkyOzExMDIgMTE2OSAxMUMxO0IxOTI7MTEwMiAxMTY5IDExQzE7CitCMTkzO0IxOTM7MTEwMiAxMTY5IDExQzI7QjE5MzsxMTAyIDExNjkgMTFDMjsKK0IxOTQ7QjE5NDsxMTAyIDExNkE7QjE5NDsxMTAyIDExNkE7CitCMTk1O0IxOTU7MTEwMiAxMTZBIDExQTg7QjE5NTsxMTAyIDExNkEgMTFBODsKK0IxOTY7QjE5NjsxMTAyIDExNkEgMTFBOTtCMTk2OzExMDIgMTE2QSAxMUE5OworQjE5NztCMTk3OzExMDIgMTE2QSAxMUFBO0IxOTc7MTEwMiAxMTZBIDExQUE7CitCMTk4O0IxOTg7MTEwMiAxMTZBIDExQUI7QjE5ODsxMTAyIDExNkEgMTFBQjsKK0IxOTk7QjE5OTsxMTAyIDExNkEgMTFBQztCMTk5OzExMDIgMTE2QSAxMUFDOworQjE5QTtCMTlBOzExMDIgMTE2QSAxMUFEO0IxOUE7MTEwMiAxMTZBIDExQUQ7CitCMTlCO0IxOUI7MTEwMiAxMTZBIDExQUU7QjE5QjsxMTAyIDExNkEgMTFBRTsKK0IxOUM7QjE5QzsxMTAyIDExNkEgMTFBRjtCMTlDOzExMDIgMTE2QSAxMUFGOworQjE5RDtCMTlEOzExMDIgMTE2QSAxMUIwO0IxOUQ7MTEwMiAxMTZBIDExQjA7CitCMTlFO0IxOUU7MTEwMiAxMTZBIDExQjE7QjE5RTsxMTAyIDExNkEgMTFCMTsKK0IxOUY7QjE5RjsxMTAyIDExNkEgMTFCMjtCMTlGOzExMDIgMTE2QSAxMUIyOworQjFBMDtCMUEwOzExMDIgMTE2QSAxMUIzO0IxQTA7MTEwMiAxMTZBIDExQjM7CitCMUExO0IxQTE7MTEwMiAxMTZBIDExQjQ7QjFBMTsxMTAyIDExNkEgMTFCNDsKK0IxQTI7QjFBMjsxMTAyIDExNkEgMTFCNTtCMUEyOzExMDIgMTE2QSAxMUI1OworQjFBMztCMUEzOzExMDIgMTE2QSAxMUI2O0IxQTM7MTEwMiAxMTZBIDExQjY7CitCMUE0O0IxQTQ7MTEwMiAxMTZBIDExQjc7QjFBNDsxMTAyIDExNkEgMTFCNzsKK0IxQTU7QjFBNTsxMTAyIDExNkEgMTFCODtCMUE1OzExMDIgMTE2QSAxMUI4OworQjFBNjtCMUE2OzExMDIgMTE2QSAxMUI5O0IxQTY7MTEwMiAxMTZBIDExQjk7CitCMUE3O0IxQTc7MTEwMiAxMTZBIDExQkE7QjFBNzsxMTAyIDExNkEgMTFCQTsKK0IxQTg7QjFBODsxMTAyIDExNkEgMTFCQjtCMUE4OzExMDIgMTE2QSAxMUJCOworQjFBOTtCMUE5OzExMDIgMTE2QSAxMUJDO0IxQTk7MTEwMiAxMTZBIDExQkM7CitCMUFBO0IxQUE7MTEwMiAxMTZBIDExQkQ7QjFBQTsxMTAyIDExNkEgMTFCRDsKK0IxQUI7QjFBQjsxMTAyIDExNkEgMTFCRTtCMUFCOzExMDIgMTE2QSAxMUJFOworQjFBQztCMUFDOzExMDIgMTE2QSAxMUJGO0IxQUM7MTEwMiAxMTZBIDExQkY7CitCMUFEO0IxQUQ7MTEwMiAxMTZBIDExQzA7QjFBRDsxMTAyIDExNkEgMTFDMDsKK0IxQUU7QjFBRTsxMTAyIDExNkEgMTFDMTtCMUFFOzExMDIgMTE2QSAxMUMxOworQjFBRjtCMUFGOzExMDIgMTE2QSAxMUMyO0IxQUY7MTEwMiAxMTZBIDExQzI7CitCMUIwO0IxQjA7MTEwMiAxMTZCO0IxQjA7MTEwMiAxMTZCOworQjFCMTtCMUIxOzExMDIgMTE2QiAxMUE4O0IxQjE7MTEwMiAxMTZCIDExQTg7CitCMUIyO0IxQjI7MTEwMiAxMTZCIDExQTk7QjFCMjsxMTAyIDExNkIgMTFBOTsKK0IxQjM7QjFCMzsxMTAyIDExNkIgMTFBQTtCMUIzOzExMDIgMTE2QiAxMUFBOworQjFCNDtCMUI0OzExMDIgMTE2QiAxMUFCO0IxQjQ7MTEwMiAxMTZCIDExQUI7CitCMUI1O0IxQjU7MTEwMiAxMTZCIDExQUM7QjFCNTsxMTAyIDExNkIgMTFBQzsKK0IxQjY7QjFCNjsxMTAyIDExNkIgMTFBRDtCMUI2OzExMDIgMTE2QiAxMUFEOworQjFCNztCMUI3OzExMDIgMTE2QiAxMUFFO0IxQjc7MTEwMiAxMTZCIDExQUU7CitCMUI4O0IxQjg7MTEwMiAxMTZCIDExQUY7QjFCODsxMTAyIDExNkIgMTFBRjsKK0IxQjk7QjFCOTsxMTAyIDExNkIgMTFCMDtCMUI5OzExMDIgMTE2QiAxMUIwOworQjFCQTtCMUJBOzExMDIgMTE2QiAxMUIxO0IxQkE7MTEwMiAxMTZCIDExQjE7CitCMUJCO0IxQkI7MTEwMiAxMTZCIDExQjI7QjFCQjsxMTAyIDExNkIgMTFCMjsKK0IxQkM7QjFCQzsxMTAyIDExNkIgMTFCMztCMUJDOzExMDIgMTE2QiAxMUIzOworQjFCRDtCMUJEOzExMDIgMTE2QiAxMUI0O0IxQkQ7MTEwMiAxMTZCIDExQjQ7CitCMUJFO0IxQkU7MTEwMiAxMTZCIDExQjU7QjFCRTsxMTAyIDExNkIgMTFCNTsKK0IxQkY7QjFCRjsxMTAyIDExNkIgMTFCNjtCMUJGOzExMDIgMTE2QiAxMUI2OworQjFDMDtCMUMwOzExMDIgMTE2QiAxMUI3O0IxQzA7MTEwMiAxMTZCIDExQjc7CitCMUMxO0IxQzE7MTEwMiAxMTZCIDExQjg7QjFDMTsxMTAyIDExNkIgMTFCODsKK0IxQzI7QjFDMjsxMTAyIDExNkIgMTFCOTtCMUMyOzExMDIgMTE2QiAxMUI5OworQjFDMztCMUMzOzExMDIgMTE2QiAxMUJBO0IxQzM7MTEwMiAxMTZCIDExQkE7CitCMUM0O0IxQzQ7MTEwMiAxMTZCIDExQkI7QjFDNDsxMTAyIDExNkIgMTFCQjsKK0IxQzU7QjFDNTsxMTAyIDExNkIgMTFCQztCMUM1OzExMDIgMTE2QiAxMUJDOworQjFDNjtCMUM2OzExMDIgMTE2QiAxMUJEO0IxQzY7MTEwMiAxMTZCIDExQkQ7CitCMUM3O0IxQzc7MTEwMiAxMTZCIDExQkU7QjFDNzsxMTAyIDExNkIgMTFCRTsKK0IxQzg7QjFDODsxMTAyIDExNkIgMTFCRjtCMUM4OzExMDIgMTE2QiAxMUJGOworQjFDOTtCMUM5OzExMDIgMTE2QiAxMUMwO0IxQzk7MTEwMiAxMTZCIDExQzA7CitCMUNBO0IxQ0E7MTEwMiAxMTZCIDExQzE7QjFDQTsxMTAyIDExNkIgMTFDMTsKK0IxQ0I7QjFDQjsxMTAyIDExNkIgMTFDMjtCMUNCOzExMDIgMTE2QiAxMUMyOworQjFDQztCMUNDOzExMDIgMTE2QztCMUNDOzExMDIgMTE2QzsKK0IxQ0Q7QjFDRDsxMTAyIDExNkMgMTFBODtCMUNEOzExMDIgMTE2QyAxMUE4OworQjFDRTtCMUNFOzExMDIgMTE2QyAxMUE5O0IxQ0U7MTEwMiAxMTZDIDExQTk7CitCMUNGO0IxQ0Y7MTEwMiAxMTZDIDExQUE7QjFDRjsxMTAyIDExNkMgMTFBQTsKK0IxRDA7QjFEMDsxMTAyIDExNkMgMTFBQjtCMUQwOzExMDIgMTE2QyAxMUFCOworQjFEMTtCMUQxOzExMDIgMTE2QyAxMUFDO0IxRDE7MTEwMiAxMTZDIDExQUM7CitCMUQyO0IxRDI7MTEwMiAxMTZDIDExQUQ7QjFEMjsxMTAyIDExNkMgMTFBRDsKK0IxRDM7QjFEMzsxMTAyIDExNkMgMTFBRTtCMUQzOzExMDIgMTE2QyAxMUFFOworQjFENDtCMUQ0OzExMDIgMTE2QyAxMUFGO0IxRDQ7MTEwMiAxMTZDIDExQUY7CitCMUQ1O0IxRDU7MTEwMiAxMTZDIDExQjA7QjFENTsxMTAyIDExNkMgMTFCMDsKK0IxRDY7QjFENjsxMTAyIDExNkMgMTFCMTtCMUQ2OzExMDIgMTE2QyAxMUIxOworQjFENztCMUQ3OzExMDIgMTE2QyAxMUIyO0IxRDc7MTEwMiAxMTZDIDExQjI7CitCMUQ4O0IxRDg7MTEwMiAxMTZDIDExQjM7QjFEODsxMTAyIDExNkMgMTFCMzsKK0IxRDk7QjFEOTsxMTAyIDExNkMgMTFCNDtCMUQ5OzExMDIgMTE2QyAxMUI0OworQjFEQTtCMURBOzExMDIgMTE2QyAxMUI1O0IxREE7MTEwMiAxMTZDIDExQjU7CitCMURCO0IxREI7MTEwMiAxMTZDIDExQjY7QjFEQjsxMTAyIDExNkMgMTFCNjsKK0IxREM7QjFEQzsxMTAyIDExNkMgMTFCNztCMURDOzExMDIgMTE2QyAxMUI3OworQjFERDtCMUREOzExMDIgMTE2QyAxMUI4O0IxREQ7MTEwMiAxMTZDIDExQjg7CitCMURFO0IxREU7MTEwMiAxMTZDIDExQjk7QjFERTsxMTAyIDExNkMgMTFCOTsKK0IxREY7QjFERjsxMTAyIDExNkMgMTFCQTtCMURGOzExMDIgMTE2QyAxMUJBOworQjFFMDtCMUUwOzExMDIgMTE2QyAxMUJCO0IxRTA7MTEwMiAxMTZDIDExQkI7CitCMUUxO0IxRTE7MTEwMiAxMTZDIDExQkM7QjFFMTsxMTAyIDExNkMgMTFCQzsKK0IxRTI7QjFFMjsxMTAyIDExNkMgMTFCRDtCMUUyOzExMDIgMTE2QyAxMUJEOworQjFFMztCMUUzOzExMDIgMTE2QyAxMUJFO0IxRTM7MTEwMiAxMTZDIDExQkU7CitCMUU0O0IxRTQ7MTEwMiAxMTZDIDExQkY7QjFFNDsxMTAyIDExNkMgMTFCRjsKK0IxRTU7QjFFNTsxMTAyIDExNkMgMTFDMDtCMUU1OzExMDIgMTE2QyAxMUMwOworQjFFNjtCMUU2OzExMDIgMTE2QyAxMUMxO0IxRTY7MTEwMiAxMTZDIDExQzE7CitCMUU3O0IxRTc7MTEwMiAxMTZDIDExQzI7QjFFNzsxMTAyIDExNkMgMTFDMjsKK0IxRTg7QjFFODsxMTAyIDExNkQ7QjFFODsxMTAyIDExNkQ7CitCMUU5O0IxRTk7MTEwMiAxMTZEIDExQTg7QjFFOTsxMTAyIDExNkQgMTFBODsKK0IxRUE7QjFFQTsxMTAyIDExNkQgMTFBOTtCMUVBOzExMDIgMTE2RCAxMUE5OworQjFFQjtCMUVCOzExMDIgMTE2RCAxMUFBO0IxRUI7MTEwMiAxMTZEIDExQUE7CitCMUVDO0IxRUM7MTEwMiAxMTZEIDExQUI7QjFFQzsxMTAyIDExNkQgMTFBQjsKK0IxRUQ7QjFFRDsxMTAyIDExNkQgMTFBQztCMUVEOzExMDIgMTE2RCAxMUFDOworQjFFRTtCMUVFOzExMDIgMTE2RCAxMUFEO0IxRUU7MTEwMiAxMTZEIDExQUQ7CitCMUVGO0IxRUY7MTEwMiAxMTZEIDExQUU7QjFFRjsxMTAyIDExNkQgMTFBRTsKK0IxRjA7QjFGMDsxMTAyIDExNkQgMTFBRjtCMUYwOzExMDIgMTE2RCAxMUFGOworQjFGMTtCMUYxOzExMDIgMTE2RCAxMUIwO0IxRjE7MTEwMiAxMTZEIDExQjA7CitCMUYyO0IxRjI7MTEwMiAxMTZEIDExQjE7QjFGMjsxMTAyIDExNkQgMTFCMTsKK0IxRjM7QjFGMzsxMTAyIDExNkQgMTFCMjtCMUYzOzExMDIgMTE2RCAxMUIyOworQjFGNDtCMUY0OzExMDIgMTE2RCAxMUIzO0IxRjQ7MTEwMiAxMTZEIDExQjM7CitCMUY1O0IxRjU7MTEwMiAxMTZEIDExQjQ7QjFGNTsxMTAyIDExNkQgMTFCNDsKK0IxRjY7QjFGNjsxMTAyIDExNkQgMTFCNTtCMUY2OzExMDIgMTE2RCAxMUI1OworQjFGNztCMUY3OzExMDIgMTE2RCAxMUI2O0IxRjc7MTEwMiAxMTZEIDExQjY7CitCMUY4O0IxRjg7MTEwMiAxMTZEIDExQjc7QjFGODsxMTAyIDExNkQgMTFCNzsKK0IxRjk7QjFGOTsxMTAyIDExNkQgMTFCODtCMUY5OzExMDIgMTE2RCAxMUI4OworQjFGQTtCMUZBOzExMDIgMTE2RCAxMUI5O0IxRkE7MTEwMiAxMTZEIDExQjk7CitCMUZCO0IxRkI7MTEwMiAxMTZEIDExQkE7QjFGQjsxMTAyIDExNkQgMTFCQTsKK0IxRkM7QjFGQzsxMTAyIDExNkQgMTFCQjtCMUZDOzExMDIgMTE2RCAxMUJCOworQjFGRDtCMUZEOzExMDIgMTE2RCAxMUJDO0IxRkQ7MTEwMiAxMTZEIDExQkM7CitCMUZFO0IxRkU7MTEwMiAxMTZEIDExQkQ7QjFGRTsxMTAyIDExNkQgMTFCRDsKK0IxRkY7QjFGRjsxMTAyIDExNkQgMTFCRTtCMUZGOzExMDIgMTE2RCAxMUJFOworQjIwMDtCMjAwOzExMDIgMTE2RCAxMUJGO0IyMDA7MTEwMiAxMTZEIDExQkY7CitCMjAxO0IyMDE7MTEwMiAxMTZEIDExQzA7QjIwMTsxMTAyIDExNkQgMTFDMDsKK0IyMDI7QjIwMjsxMTAyIDExNkQgMTFDMTtCMjAyOzExMDIgMTE2RCAxMUMxOworQjIwMztCMjAzOzExMDIgMTE2RCAxMUMyO0IyMDM7MTEwMiAxMTZEIDExQzI7CitCMjA0O0IyMDQ7MTEwMiAxMTZFO0IyMDQ7MTEwMiAxMTZFOworQjIwNTtCMjA1OzExMDIgMTE2RSAxMUE4O0IyMDU7MTEwMiAxMTZFIDExQTg7CitCMjA2O0IyMDY7MTEwMiAxMTZFIDExQTk7QjIwNjsxMTAyIDExNkUgMTFBOTsKK0IyMDc7QjIwNzsxMTAyIDExNkUgMTFBQTtCMjA3OzExMDIgMTE2RSAxMUFBOworQjIwODtCMjA4OzExMDIgMTE2RSAxMUFCO0IyMDg7MTEwMiAxMTZFIDExQUI7CitCMjA5O0IyMDk7MTEwMiAxMTZFIDExQUM7QjIwOTsxMTAyIDExNkUgMTFBQzsKK0IyMEE7QjIwQTsxMTAyIDExNkUgMTFBRDtCMjBBOzExMDIgMTE2RSAxMUFEOworQjIwQjtCMjBCOzExMDIgMTE2RSAxMUFFO0IyMEI7MTEwMiAxMTZFIDExQUU7CitCMjBDO0IyMEM7MTEwMiAxMTZFIDExQUY7QjIwQzsxMTAyIDExNkUgMTFBRjsKK0IyMEQ7QjIwRDsxMTAyIDExNkUgMTFCMDtCMjBEOzExMDIgMTE2RSAxMUIwOworQjIwRTtCMjBFOzExMDIgMTE2RSAxMUIxO0IyMEU7MTEwMiAxMTZFIDExQjE7CitCMjBGO0IyMEY7MTEwMiAxMTZFIDExQjI7QjIwRjsxMTAyIDExNkUgMTFCMjsKK0IyMTA7QjIxMDsxMTAyIDExNkUgMTFCMztCMjEwOzExMDIgMTE2RSAxMUIzOworQjIxMTtCMjExOzExMDIgMTE2RSAxMUI0O0IyMTE7MTEwMiAxMTZFIDExQjQ7CitCMjEyO0IyMTI7MTEwMiAxMTZFIDExQjU7QjIxMjsxMTAyIDExNkUgMTFCNTsKK0IyMTM7QjIxMzsxMTAyIDExNkUgMTFCNjtCMjEzOzExMDIgMTE2RSAxMUI2OworQjIxNDtCMjE0OzExMDIgMTE2RSAxMUI3O0IyMTQ7MTEwMiAxMTZFIDExQjc7CitCMjE1O0IyMTU7MTEwMiAxMTZFIDExQjg7QjIxNTsxMTAyIDExNkUgMTFCODsKK0IyMTY7QjIxNjsxMTAyIDExNkUgMTFCOTtCMjE2OzExMDIgMTE2RSAxMUI5OworQjIxNztCMjE3OzExMDIgMTE2RSAxMUJBO0IyMTc7MTEwMiAxMTZFIDExQkE7CitCMjE4O0IyMTg7MTEwMiAxMTZFIDExQkI7QjIxODsxMTAyIDExNkUgMTFCQjsKK0IyMTk7QjIxOTsxMTAyIDExNkUgMTFCQztCMjE5OzExMDIgMTE2RSAxMUJDOworQjIxQTtCMjFBOzExMDIgMTE2RSAxMUJEO0IyMUE7MTEwMiAxMTZFIDExQkQ7CitCMjFCO0IyMUI7MTEwMiAxMTZFIDExQkU7QjIxQjsxMTAyIDExNkUgMTFCRTsKK0IyMUM7QjIxQzsxMTAyIDExNkUgMTFCRjtCMjFDOzExMDIgMTE2RSAxMUJGOworQjIxRDtCMjFEOzExMDIgMTE2RSAxMUMwO0IyMUQ7MTEwMiAxMTZFIDExQzA7CitCMjFFO0IyMUU7MTEwMiAxMTZFIDExQzE7QjIxRTsxMTAyIDExNkUgMTFDMTsKK0IyMUY7QjIxRjsxMTAyIDExNkUgMTFDMjtCMjFGOzExMDIgMTE2RSAxMUMyOworQjIyMDtCMjIwOzExMDIgMTE2RjtCMjIwOzExMDIgMTE2RjsKK0IyMjE7QjIyMTsxMTAyIDExNkYgMTFBODtCMjIxOzExMDIgMTE2RiAxMUE4OworQjIyMjtCMjIyOzExMDIgMTE2RiAxMUE5O0IyMjI7MTEwMiAxMTZGIDExQTk7CitCMjIzO0IyMjM7MTEwMiAxMTZGIDExQUE7QjIyMzsxMTAyIDExNkYgMTFBQTsKK0IyMjQ7QjIyNDsxMTAyIDExNkYgMTFBQjtCMjI0OzExMDIgMTE2RiAxMUFCOworQjIyNTtCMjI1OzExMDIgMTE2RiAxMUFDO0IyMjU7MTEwMiAxMTZGIDExQUM7CitCMjI2O0IyMjY7MTEwMiAxMTZGIDExQUQ7QjIyNjsxMTAyIDExNkYgMTFBRDsKK0IyMjc7QjIyNzsxMTAyIDExNkYgMTFBRTtCMjI3OzExMDIgMTE2RiAxMUFFOworQjIyODtCMjI4OzExMDIgMTE2RiAxMUFGO0IyMjg7MTEwMiAxMTZGIDExQUY7CitCMjI5O0IyMjk7MTEwMiAxMTZGIDExQjA7QjIyOTsxMTAyIDExNkYgMTFCMDsKK0IyMkE7QjIyQTsxMTAyIDExNkYgMTFCMTtCMjJBOzExMDIgMTE2RiAxMUIxOworQjIyQjtCMjJCOzExMDIgMTE2RiAxMUIyO0IyMkI7MTEwMiAxMTZGIDExQjI7CitCMjJDO0IyMkM7MTEwMiAxMTZGIDExQjM7QjIyQzsxMTAyIDExNkYgMTFCMzsKK0IyMkQ7QjIyRDsxMTAyIDExNkYgMTFCNDtCMjJEOzExMDIgMTE2RiAxMUI0OworQjIyRTtCMjJFOzExMDIgMTE2RiAxMUI1O0IyMkU7MTEwMiAxMTZGIDExQjU7CitCMjJGO0IyMkY7MTEwMiAxMTZGIDExQjY7QjIyRjsxMTAyIDExNkYgMTFCNjsKK0IyMzA7QjIzMDsxMTAyIDExNkYgMTFCNztCMjMwOzExMDIgMTE2RiAxMUI3OworQjIzMTtCMjMxOzExMDIgMTE2RiAxMUI4O0IyMzE7MTEwMiAxMTZGIDExQjg7CitCMjMyO0IyMzI7MTEwMiAxMTZGIDExQjk7QjIzMjsxMTAyIDExNkYgMTFCOTsKK0IyMzM7QjIzMzsxMTAyIDExNkYgMTFCQTtCMjMzOzExMDIgMTE2RiAxMUJBOworQjIzNDtCMjM0OzExMDIgMTE2RiAxMUJCO0IyMzQ7MTEwMiAxMTZGIDExQkI7CitCMjM1O0IyMzU7MTEwMiAxMTZGIDExQkM7QjIzNTsxMTAyIDExNkYgMTFCQzsKK0IyMzY7QjIzNjsxMTAyIDExNkYgMTFCRDtCMjM2OzExMDIgMTE2RiAxMUJEOworQjIzNztCMjM3OzExMDIgMTE2RiAxMUJFO0IyMzc7MTEwMiAxMTZGIDExQkU7CitCMjM4O0IyMzg7MTEwMiAxMTZGIDExQkY7QjIzODsxMTAyIDExNkYgMTFCRjsKK0IyMzk7QjIzOTsxMTAyIDExNkYgMTFDMDtCMjM5OzExMDIgMTE2RiAxMUMwOworQjIzQTtCMjNBOzExMDIgMTE2RiAxMUMxO0IyM0E7MTEwMiAxMTZGIDExQzE7CitCMjNCO0IyM0I7MTEwMiAxMTZGIDExQzI7QjIzQjsxMTAyIDExNkYgMTFDMjsKK0IyM0M7QjIzQzsxMTAyIDExNzA7QjIzQzsxMTAyIDExNzA7CitCMjNEO0IyM0Q7MTEwMiAxMTcwIDExQTg7QjIzRDsxMTAyIDExNzAgMTFBODsKK0IyM0U7QjIzRTsxMTAyIDExNzAgMTFBOTtCMjNFOzExMDIgMTE3MCAxMUE5OworQjIzRjtCMjNGOzExMDIgMTE3MCAxMUFBO0IyM0Y7MTEwMiAxMTcwIDExQUE7CitCMjQwO0IyNDA7MTEwMiAxMTcwIDExQUI7QjI0MDsxMTAyIDExNzAgMTFBQjsKK0IyNDE7QjI0MTsxMTAyIDExNzAgMTFBQztCMjQxOzExMDIgMTE3MCAxMUFDOworQjI0MjtCMjQyOzExMDIgMTE3MCAxMUFEO0IyNDI7MTEwMiAxMTcwIDExQUQ7CitCMjQzO0IyNDM7MTEwMiAxMTcwIDExQUU7QjI0MzsxMTAyIDExNzAgMTFBRTsKK0IyNDQ7QjI0NDsxMTAyIDExNzAgMTFBRjtCMjQ0OzExMDIgMTE3MCAxMUFGOworQjI0NTtCMjQ1OzExMDIgMTE3MCAxMUIwO0IyNDU7MTEwMiAxMTcwIDExQjA7CitCMjQ2O0IyNDY7MTEwMiAxMTcwIDExQjE7QjI0NjsxMTAyIDExNzAgMTFCMTsKK0IyNDc7QjI0NzsxMTAyIDExNzAgMTFCMjtCMjQ3OzExMDIgMTE3MCAxMUIyOworQjI0ODtCMjQ4OzExMDIgMTE3MCAxMUIzO0IyNDg7MTEwMiAxMTcwIDExQjM7CitCMjQ5O0IyNDk7MTEwMiAxMTcwIDExQjQ7QjI0OTsxMTAyIDExNzAgMTFCNDsKK0IyNEE7QjI0QTsxMTAyIDExNzAgMTFCNTtCMjRBOzExMDIgMTE3MCAxMUI1OworQjI0QjtCMjRCOzExMDIgMTE3MCAxMUI2O0IyNEI7MTEwMiAxMTcwIDExQjY7CitCMjRDO0IyNEM7MTEwMiAxMTcwIDExQjc7QjI0QzsxMTAyIDExNzAgMTFCNzsKK0IyNEQ7QjI0RDsxMTAyIDExNzAgMTFCODtCMjREOzExMDIgMTE3MCAxMUI4OworQjI0RTtCMjRFOzExMDIgMTE3MCAxMUI5O0IyNEU7MTEwMiAxMTcwIDExQjk7CitCMjRGO0IyNEY7MTEwMiAxMTcwIDExQkE7QjI0RjsxMTAyIDExNzAgMTFCQTsKK0IyNTA7QjI1MDsxMTAyIDExNzAgMTFCQjtCMjUwOzExMDIgMTE3MCAxMUJCOworQjI1MTtCMjUxOzExMDIgMTE3MCAxMUJDO0IyNTE7MTEwMiAxMTcwIDExQkM7CitCMjUyO0IyNTI7MTEwMiAxMTcwIDExQkQ7QjI1MjsxMTAyIDExNzAgMTFCRDsKK0IyNTM7QjI1MzsxMTAyIDExNzAgMTFCRTtCMjUzOzExMDIgMTE3MCAxMUJFOworQjI1NDtCMjU0OzExMDIgMTE3MCAxMUJGO0IyNTQ7MTEwMiAxMTcwIDExQkY7CitCMjU1O0IyNTU7MTEwMiAxMTcwIDExQzA7QjI1NTsxMTAyIDExNzAgMTFDMDsKK0IyNTY7QjI1NjsxMTAyIDExNzAgMTFDMTtCMjU2OzExMDIgMTE3MCAxMUMxOworQjI1NztCMjU3OzExMDIgMTE3MCAxMUMyO0IyNTc7MTEwMiAxMTcwIDExQzI7CitCMjU4O0IyNTg7MTEwMiAxMTcxO0IyNTg7MTEwMiAxMTcxOworQjI1OTtCMjU5OzExMDIgMTE3MSAxMUE4O0IyNTk7MTEwMiAxMTcxIDExQTg7CitCMjVBO0IyNUE7MTEwMiAxMTcxIDExQTk7QjI1QTsxMTAyIDExNzEgMTFBOTsKK0IyNUI7QjI1QjsxMTAyIDExNzEgMTFBQTtCMjVCOzExMDIgMTE3MSAxMUFBOworQjI1QztCMjVDOzExMDIgMTE3MSAxMUFCO0IyNUM7MTEwMiAxMTcxIDExQUI7CitCMjVEO0IyNUQ7MTEwMiAxMTcxIDExQUM7QjI1RDsxMTAyIDExNzEgMTFBQzsKK0IyNUU7QjI1RTsxMTAyIDExNzEgMTFBRDtCMjVFOzExMDIgMTE3MSAxMUFEOworQjI1RjtCMjVGOzExMDIgMTE3MSAxMUFFO0IyNUY7MTEwMiAxMTcxIDExQUU7CitCMjYwO0IyNjA7MTEwMiAxMTcxIDExQUY7QjI2MDsxMTAyIDExNzEgMTFBRjsKK0IyNjE7QjI2MTsxMTAyIDExNzEgMTFCMDtCMjYxOzExMDIgMTE3MSAxMUIwOworQjI2MjtCMjYyOzExMDIgMTE3MSAxMUIxO0IyNjI7MTEwMiAxMTcxIDExQjE7CitCMjYzO0IyNjM7MTEwMiAxMTcxIDExQjI7QjI2MzsxMTAyIDExNzEgMTFCMjsKK0IyNjQ7QjI2NDsxMTAyIDExNzEgMTFCMztCMjY0OzExMDIgMTE3MSAxMUIzOworQjI2NTtCMjY1OzExMDIgMTE3MSAxMUI0O0IyNjU7MTEwMiAxMTcxIDExQjQ7CitCMjY2O0IyNjY7MTEwMiAxMTcxIDExQjU7QjI2NjsxMTAyIDExNzEgMTFCNTsKK0IyNjc7QjI2NzsxMTAyIDExNzEgMTFCNjtCMjY3OzExMDIgMTE3MSAxMUI2OworQjI2ODtCMjY4OzExMDIgMTE3MSAxMUI3O0IyNjg7MTEwMiAxMTcxIDExQjc7CitCMjY5O0IyNjk7MTEwMiAxMTcxIDExQjg7QjI2OTsxMTAyIDExNzEgMTFCODsKK0IyNkE7QjI2QTsxMTAyIDExNzEgMTFCOTtCMjZBOzExMDIgMTE3MSAxMUI5OworQjI2QjtCMjZCOzExMDIgMTE3MSAxMUJBO0IyNkI7MTEwMiAxMTcxIDExQkE7CitCMjZDO0IyNkM7MTEwMiAxMTcxIDExQkI7QjI2QzsxMTAyIDExNzEgMTFCQjsKK0IyNkQ7QjI2RDsxMTAyIDExNzEgMTFCQztCMjZEOzExMDIgMTE3MSAxMUJDOworQjI2RTtCMjZFOzExMDIgMTE3MSAxMUJEO0IyNkU7MTEwMiAxMTcxIDExQkQ7CitCMjZGO0IyNkY7MTEwMiAxMTcxIDExQkU7QjI2RjsxMTAyIDExNzEgMTFCRTsKK0IyNzA7QjI3MDsxMTAyIDExNzEgMTFCRjtCMjcwOzExMDIgMTE3MSAxMUJGOworQjI3MTtCMjcxOzExMDIgMTE3MSAxMUMwO0IyNzE7MTEwMiAxMTcxIDExQzA7CitCMjcyO0IyNzI7MTEwMiAxMTcxIDExQzE7QjI3MjsxMTAyIDExNzEgMTFDMTsKK0IyNzM7QjI3MzsxMTAyIDExNzEgMTFDMjtCMjczOzExMDIgMTE3MSAxMUMyOworQjI3NDtCMjc0OzExMDIgMTE3MjtCMjc0OzExMDIgMTE3MjsKK0IyNzU7QjI3NTsxMTAyIDExNzIgMTFBODtCMjc1OzExMDIgMTE3MiAxMUE4OworQjI3NjtCMjc2OzExMDIgMTE3MiAxMUE5O0IyNzY7MTEwMiAxMTcyIDExQTk7CitCMjc3O0IyNzc7MTEwMiAxMTcyIDExQUE7QjI3NzsxMTAyIDExNzIgMTFBQTsKK0IyNzg7QjI3ODsxMTAyIDExNzIgMTFBQjtCMjc4OzExMDIgMTE3MiAxMUFCOworQjI3OTtCMjc5OzExMDIgMTE3MiAxMUFDO0IyNzk7MTEwMiAxMTcyIDExQUM7CitCMjdBO0IyN0E7MTEwMiAxMTcyIDExQUQ7QjI3QTsxMTAyIDExNzIgMTFBRDsKK0IyN0I7QjI3QjsxMTAyIDExNzIgMTFBRTtCMjdCOzExMDIgMTE3MiAxMUFFOworQjI3QztCMjdDOzExMDIgMTE3MiAxMUFGO0IyN0M7MTEwMiAxMTcyIDExQUY7CitCMjdEO0IyN0Q7MTEwMiAxMTcyIDExQjA7QjI3RDsxMTAyIDExNzIgMTFCMDsKK0IyN0U7QjI3RTsxMTAyIDExNzIgMTFCMTtCMjdFOzExMDIgMTE3MiAxMUIxOworQjI3RjtCMjdGOzExMDIgMTE3MiAxMUIyO0IyN0Y7MTEwMiAxMTcyIDExQjI7CitCMjgwO0IyODA7MTEwMiAxMTcyIDExQjM7QjI4MDsxMTAyIDExNzIgMTFCMzsKK0IyODE7QjI4MTsxMTAyIDExNzIgMTFCNDtCMjgxOzExMDIgMTE3MiAxMUI0OworQjI4MjtCMjgyOzExMDIgMTE3MiAxMUI1O0IyODI7MTEwMiAxMTcyIDExQjU7CitCMjgzO0IyODM7MTEwMiAxMTcyIDExQjY7QjI4MzsxMTAyIDExNzIgMTFCNjsKK0IyODQ7QjI4NDsxMTAyIDExNzIgMTFCNztCMjg0OzExMDIgMTE3MiAxMUI3OworQjI4NTtCMjg1OzExMDIgMTE3MiAxMUI4O0IyODU7MTEwMiAxMTcyIDExQjg7CitCMjg2O0IyODY7MTEwMiAxMTcyIDExQjk7QjI4NjsxMTAyIDExNzIgMTFCOTsKK0IyODc7QjI4NzsxMTAyIDExNzIgMTFCQTtCMjg3OzExMDIgMTE3MiAxMUJBOworQjI4ODtCMjg4OzExMDIgMTE3MiAxMUJCO0IyODg7MTEwMiAxMTcyIDExQkI7CitCMjg5O0IyODk7MTEwMiAxMTcyIDExQkM7QjI4OTsxMTAyIDExNzIgMTFCQzsKK0IyOEE7QjI4QTsxMTAyIDExNzIgMTFCRDtCMjhBOzExMDIgMTE3MiAxMUJEOworQjI4QjtCMjhCOzExMDIgMTE3MiAxMUJFO0IyOEI7MTEwMiAxMTcyIDExQkU7CitCMjhDO0IyOEM7MTEwMiAxMTcyIDExQkY7QjI4QzsxMTAyIDExNzIgMTFCRjsKK0IyOEQ7QjI4RDsxMTAyIDExNzIgMTFDMDtCMjhEOzExMDIgMTE3MiAxMUMwOworQjI4RTtCMjhFOzExMDIgMTE3MiAxMUMxO0IyOEU7MTEwMiAxMTcyIDExQzE7CitCMjhGO0IyOEY7MTEwMiAxMTcyIDExQzI7QjI4RjsxMTAyIDExNzIgMTFDMjsKK0IyOTA7QjI5MDsxMTAyIDExNzM7QjI5MDsxMTAyIDExNzM7CitCMjkxO0IyOTE7MTEwMiAxMTczIDExQTg7QjI5MTsxMTAyIDExNzMgMTFBODsKK0IyOTI7QjI5MjsxMTAyIDExNzMgMTFBOTtCMjkyOzExMDIgMTE3MyAxMUE5OworQjI5MztCMjkzOzExMDIgMTE3MyAxMUFBO0IyOTM7MTEwMiAxMTczIDExQUE7CitCMjk0O0IyOTQ7MTEwMiAxMTczIDExQUI7QjI5NDsxMTAyIDExNzMgMTFBQjsKK0IyOTU7QjI5NTsxMTAyIDExNzMgMTFBQztCMjk1OzExMDIgMTE3MyAxMUFDOworQjI5NjtCMjk2OzExMDIgMTE3MyAxMUFEO0IyOTY7MTEwMiAxMTczIDExQUQ7CitCMjk3O0IyOTc7MTEwMiAxMTczIDExQUU7QjI5NzsxMTAyIDExNzMgMTFBRTsKK0IyOTg7QjI5ODsxMTAyIDExNzMgMTFBRjtCMjk4OzExMDIgMTE3MyAxMUFGOworQjI5OTtCMjk5OzExMDIgMTE3MyAxMUIwO0IyOTk7MTEwMiAxMTczIDExQjA7CitCMjlBO0IyOUE7MTEwMiAxMTczIDExQjE7QjI5QTsxMTAyIDExNzMgMTFCMTsKK0IyOUI7QjI5QjsxMTAyIDExNzMgMTFCMjtCMjlCOzExMDIgMTE3MyAxMUIyOworQjI5QztCMjlDOzExMDIgMTE3MyAxMUIzO0IyOUM7MTEwMiAxMTczIDExQjM7CitCMjlEO0IyOUQ7MTEwMiAxMTczIDExQjQ7QjI5RDsxMTAyIDExNzMgMTFCNDsKK0IyOUU7QjI5RTsxMTAyIDExNzMgMTFCNTtCMjlFOzExMDIgMTE3MyAxMUI1OworQjI5RjtCMjlGOzExMDIgMTE3MyAxMUI2O0IyOUY7MTEwMiAxMTczIDExQjY7CitCMkEwO0IyQTA7MTEwMiAxMTczIDExQjc7QjJBMDsxMTAyIDExNzMgMTFCNzsKK0IyQTE7QjJBMTsxMTAyIDExNzMgMTFCODtCMkExOzExMDIgMTE3MyAxMUI4OworQjJBMjtCMkEyOzExMDIgMTE3MyAxMUI5O0IyQTI7MTEwMiAxMTczIDExQjk7CitCMkEzO0IyQTM7MTEwMiAxMTczIDExQkE7QjJBMzsxMTAyIDExNzMgMTFCQTsKK0IyQTQ7QjJBNDsxMTAyIDExNzMgMTFCQjtCMkE0OzExMDIgMTE3MyAxMUJCOworQjJBNTtCMkE1OzExMDIgMTE3MyAxMUJDO0IyQTU7MTEwMiAxMTczIDExQkM7CitCMkE2O0IyQTY7MTEwMiAxMTczIDExQkQ7QjJBNjsxMTAyIDExNzMgMTFCRDsKK0IyQTc7QjJBNzsxMTAyIDExNzMgMTFCRTtCMkE3OzExMDIgMTE3MyAxMUJFOworQjJBODtCMkE4OzExMDIgMTE3MyAxMUJGO0IyQTg7MTEwMiAxMTczIDExQkY7CitCMkE5O0IyQTk7MTEwMiAxMTczIDExQzA7QjJBOTsxMTAyIDExNzMgMTFDMDsKK0IyQUE7QjJBQTsxMTAyIDExNzMgMTFDMTtCMkFBOzExMDIgMTE3MyAxMUMxOworQjJBQjtCMkFCOzExMDIgMTE3MyAxMUMyO0IyQUI7MTEwMiAxMTczIDExQzI7CitCMkFDO0IyQUM7MTEwMiAxMTc0O0IyQUM7MTEwMiAxMTc0OworQjJBRDtCMkFEOzExMDIgMTE3NCAxMUE4O0IyQUQ7MTEwMiAxMTc0IDExQTg7CitCMkFFO0IyQUU7MTEwMiAxMTc0IDExQTk7QjJBRTsxMTAyIDExNzQgMTFBOTsKK0IyQUY7QjJBRjsxMTAyIDExNzQgMTFBQTtCMkFGOzExMDIgMTE3NCAxMUFBOworQjJCMDtCMkIwOzExMDIgMTE3NCAxMUFCO0IyQjA7MTEwMiAxMTc0IDExQUI7CitCMkIxO0IyQjE7MTEwMiAxMTc0IDExQUM7QjJCMTsxMTAyIDExNzQgMTFBQzsKK0IyQjI7QjJCMjsxMTAyIDExNzQgMTFBRDtCMkIyOzExMDIgMTE3NCAxMUFEOworQjJCMztCMkIzOzExMDIgMTE3NCAxMUFFO0IyQjM7MTEwMiAxMTc0IDExQUU7CitCMkI0O0IyQjQ7MTEwMiAxMTc0IDExQUY7QjJCNDsxMTAyIDExNzQgMTFBRjsKK0IyQjU7QjJCNTsxMTAyIDExNzQgMTFCMDtCMkI1OzExMDIgMTE3NCAxMUIwOworQjJCNjtCMkI2OzExMDIgMTE3NCAxMUIxO0IyQjY7MTEwMiAxMTc0IDExQjE7CitCMkI3O0IyQjc7MTEwMiAxMTc0IDExQjI7QjJCNzsxMTAyIDExNzQgMTFCMjsKK0IyQjg7QjJCODsxMTAyIDExNzQgMTFCMztCMkI4OzExMDIgMTE3NCAxMUIzOworQjJCOTtCMkI5OzExMDIgMTE3NCAxMUI0O0IyQjk7MTEwMiAxMTc0IDExQjQ7CitCMkJBO0IyQkE7MTEwMiAxMTc0IDExQjU7QjJCQTsxMTAyIDExNzQgMTFCNTsKK0IyQkI7QjJCQjsxMTAyIDExNzQgMTFCNjtCMkJCOzExMDIgMTE3NCAxMUI2OworQjJCQztCMkJDOzExMDIgMTE3NCAxMUI3O0IyQkM7MTEwMiAxMTc0IDExQjc7CitCMkJEO0IyQkQ7MTEwMiAxMTc0IDExQjg7QjJCRDsxMTAyIDExNzQgMTFCODsKK0IyQkU7QjJCRTsxMTAyIDExNzQgMTFCOTtCMkJFOzExMDIgMTE3NCAxMUI5OworQjJCRjtCMkJGOzExMDIgMTE3NCAxMUJBO0IyQkY7MTEwMiAxMTc0IDExQkE7CitCMkMwO0IyQzA7MTEwMiAxMTc0IDExQkI7QjJDMDsxMTAyIDExNzQgMTFCQjsKK0IyQzE7QjJDMTsxMTAyIDExNzQgMTFCQztCMkMxOzExMDIgMTE3NCAxMUJDOworQjJDMjtCMkMyOzExMDIgMTE3NCAxMUJEO0IyQzI7MTEwMiAxMTc0IDExQkQ7CitCMkMzO0IyQzM7MTEwMiAxMTc0IDExQkU7QjJDMzsxMTAyIDExNzQgMTFCRTsKK0IyQzQ7QjJDNDsxMTAyIDExNzQgMTFCRjtCMkM0OzExMDIgMTE3NCAxMUJGOworQjJDNTtCMkM1OzExMDIgMTE3NCAxMUMwO0IyQzU7MTEwMiAxMTc0IDExQzA7CitCMkM2O0IyQzY7MTEwMiAxMTc0IDExQzE7QjJDNjsxMTAyIDExNzQgMTFDMTsKK0IyQzc7QjJDNzsxMTAyIDExNzQgMTFDMjtCMkM3OzExMDIgMTE3NCAxMUMyOworQjJDODtCMkM4OzExMDIgMTE3NTtCMkM4OzExMDIgMTE3NTsKK0IyQzk7QjJDOTsxMTAyIDExNzUgMTFBODtCMkM5OzExMDIgMTE3NSAxMUE4OworQjJDQTtCMkNBOzExMDIgMTE3NSAxMUE5O0IyQ0E7MTEwMiAxMTc1IDExQTk7CitCMkNCO0IyQ0I7MTEwMiAxMTc1IDExQUE7QjJDQjsxMTAyIDExNzUgMTFBQTsKK0IyQ0M7QjJDQzsxMTAyIDExNzUgMTFBQjtCMkNDOzExMDIgMTE3NSAxMUFCOworQjJDRDtCMkNEOzExMDIgMTE3NSAxMUFDO0IyQ0Q7MTEwMiAxMTc1IDExQUM7CitCMkNFO0IyQ0U7MTEwMiAxMTc1IDExQUQ7QjJDRTsxMTAyIDExNzUgMTFBRDsKK0IyQ0Y7QjJDRjsxMTAyIDExNzUgMTFBRTtCMkNGOzExMDIgMTE3NSAxMUFFOworQjJEMDtCMkQwOzExMDIgMTE3NSAxMUFGO0IyRDA7MTEwMiAxMTc1IDExQUY7CitCMkQxO0IyRDE7MTEwMiAxMTc1IDExQjA7QjJEMTsxMTAyIDExNzUgMTFCMDsKK0IyRDI7QjJEMjsxMTAyIDExNzUgMTFCMTtCMkQyOzExMDIgMTE3NSAxMUIxOworQjJEMztCMkQzOzExMDIgMTE3NSAxMUIyO0IyRDM7MTEwMiAxMTc1IDExQjI7CitCMkQ0O0IyRDQ7MTEwMiAxMTc1IDExQjM7QjJENDsxMTAyIDExNzUgMTFCMzsKK0IyRDU7QjJENTsxMTAyIDExNzUgMTFCNDtCMkQ1OzExMDIgMTE3NSAxMUI0OworQjJENjtCMkQ2OzExMDIgMTE3NSAxMUI1O0IyRDY7MTEwMiAxMTc1IDExQjU7CitCMkQ3O0IyRDc7MTEwMiAxMTc1IDExQjY7QjJENzsxMTAyIDExNzUgMTFCNjsKK0IyRDg7QjJEODsxMTAyIDExNzUgMTFCNztCMkQ4OzExMDIgMTE3NSAxMUI3OworQjJEOTtCMkQ5OzExMDIgMTE3NSAxMUI4O0IyRDk7MTEwMiAxMTc1IDExQjg7CitCMkRBO0IyREE7MTEwMiAxMTc1IDExQjk7QjJEQTsxMTAyIDExNzUgMTFCOTsKK0IyREI7QjJEQjsxMTAyIDExNzUgMTFCQTtCMkRCOzExMDIgMTE3NSAxMUJBOworQjJEQztCMkRDOzExMDIgMTE3NSAxMUJCO0IyREM7MTEwMiAxMTc1IDExQkI7CitCMkREO0IyREQ7MTEwMiAxMTc1IDExQkM7QjJERDsxMTAyIDExNzUgMTFCQzsKK0IyREU7QjJERTsxMTAyIDExNzUgMTFCRDtCMkRFOzExMDIgMTE3NSAxMUJEOworQjJERjtCMkRGOzExMDIgMTE3NSAxMUJFO0IyREY7MTEwMiAxMTc1IDExQkU7CitCMkUwO0IyRTA7MTEwMiAxMTc1IDExQkY7QjJFMDsxMTAyIDExNzUgMTFCRjsKK0IyRTE7QjJFMTsxMTAyIDExNzUgMTFDMDtCMkUxOzExMDIgMTE3NSAxMUMwOworQjJFMjtCMkUyOzExMDIgMTE3NSAxMUMxO0IyRTI7MTEwMiAxMTc1IDExQzE7CitCMkUzO0IyRTM7MTEwMiAxMTc1IDExQzI7QjJFMzsxMTAyIDExNzUgMTFDMjsKK0IyRTQ7QjJFNDsxMTAzIDExNjE7QjJFNDsxMTAzIDExNjE7CitCMkU1O0IyRTU7MTEwMyAxMTYxIDExQTg7QjJFNTsxMTAzIDExNjEgMTFBODsKK0IyRTY7QjJFNjsxMTAzIDExNjEgMTFBOTtCMkU2OzExMDMgMTE2MSAxMUE5OworQjJFNztCMkU3OzExMDMgMTE2MSAxMUFBO0IyRTc7MTEwMyAxMTYxIDExQUE7CitCMkU4O0IyRTg7MTEwMyAxMTYxIDExQUI7QjJFODsxMTAzIDExNjEgMTFBQjsKK0IyRTk7QjJFOTsxMTAzIDExNjEgMTFBQztCMkU5OzExMDMgMTE2MSAxMUFDOworQjJFQTtCMkVBOzExMDMgMTE2MSAxMUFEO0IyRUE7MTEwMyAxMTYxIDExQUQ7CitCMkVCO0IyRUI7MTEwMyAxMTYxIDExQUU7QjJFQjsxMTAzIDExNjEgMTFBRTsKK0IyRUM7QjJFQzsxMTAzIDExNjEgMTFBRjtCMkVDOzExMDMgMTE2MSAxMUFGOworQjJFRDtCMkVEOzExMDMgMTE2MSAxMUIwO0IyRUQ7MTEwMyAxMTYxIDExQjA7CitCMkVFO0IyRUU7MTEwMyAxMTYxIDExQjE7QjJFRTsxMTAzIDExNjEgMTFCMTsKK0IyRUY7QjJFRjsxMTAzIDExNjEgMTFCMjtCMkVGOzExMDMgMTE2MSAxMUIyOworQjJGMDtCMkYwOzExMDMgMTE2MSAxMUIzO0IyRjA7MTEwMyAxMTYxIDExQjM7CitCMkYxO0IyRjE7MTEwMyAxMTYxIDExQjQ7QjJGMTsxMTAzIDExNjEgMTFCNDsKK0IyRjI7QjJGMjsxMTAzIDExNjEgMTFCNTtCMkYyOzExMDMgMTE2MSAxMUI1OworQjJGMztCMkYzOzExMDMgMTE2MSAxMUI2O0IyRjM7MTEwMyAxMTYxIDExQjY7CitCMkY0O0IyRjQ7MTEwMyAxMTYxIDExQjc7QjJGNDsxMTAzIDExNjEgMTFCNzsKK0IyRjU7QjJGNTsxMTAzIDExNjEgMTFCODtCMkY1OzExMDMgMTE2MSAxMUI4OworQjJGNjtCMkY2OzExMDMgMTE2MSAxMUI5O0IyRjY7MTEwMyAxMTYxIDExQjk7CitCMkY3O0IyRjc7MTEwMyAxMTYxIDExQkE7QjJGNzsxMTAzIDExNjEgMTFCQTsKK0IyRjg7QjJGODsxMTAzIDExNjEgMTFCQjtCMkY4OzExMDMgMTE2MSAxMUJCOworQjJGOTtCMkY5OzExMDMgMTE2MSAxMUJDO0IyRjk7MTEwMyAxMTYxIDExQkM7CitCMkZBO0IyRkE7MTEwMyAxMTYxIDExQkQ7QjJGQTsxMTAzIDExNjEgMTFCRDsKK0IyRkI7QjJGQjsxMTAzIDExNjEgMTFCRTtCMkZCOzExMDMgMTE2MSAxMUJFOworQjJGQztCMkZDOzExMDMgMTE2MSAxMUJGO0IyRkM7MTEwMyAxMTYxIDExQkY7CitCMkZEO0IyRkQ7MTEwMyAxMTYxIDExQzA7QjJGRDsxMTAzIDExNjEgMTFDMDsKK0IyRkU7QjJGRTsxMTAzIDExNjEgMTFDMTtCMkZFOzExMDMgMTE2MSAxMUMxOworQjJGRjtCMkZGOzExMDMgMTE2MSAxMUMyO0IyRkY7MTEwMyAxMTYxIDExQzI7CitCMzAwO0IzMDA7MTEwMyAxMTYyO0IzMDA7MTEwMyAxMTYyOworQjMwMTtCMzAxOzExMDMgMTE2MiAxMUE4O0IzMDE7MTEwMyAxMTYyIDExQTg7CitCMzAyO0IzMDI7MTEwMyAxMTYyIDExQTk7QjMwMjsxMTAzIDExNjIgMTFBOTsKK0IzMDM7QjMwMzsxMTAzIDExNjIgMTFBQTtCMzAzOzExMDMgMTE2MiAxMUFBOworQjMwNDtCMzA0OzExMDMgMTE2MiAxMUFCO0IzMDQ7MTEwMyAxMTYyIDExQUI7CitCMzA1O0IzMDU7MTEwMyAxMTYyIDExQUM7QjMwNTsxMTAzIDExNjIgMTFBQzsKK0IzMDY7QjMwNjsxMTAzIDExNjIgMTFBRDtCMzA2OzExMDMgMTE2MiAxMUFEOworQjMwNztCMzA3OzExMDMgMTE2MiAxMUFFO0IzMDc7MTEwMyAxMTYyIDExQUU7CitCMzA4O0IzMDg7MTEwMyAxMTYyIDExQUY7QjMwODsxMTAzIDExNjIgMTFBRjsKK0IzMDk7QjMwOTsxMTAzIDExNjIgMTFCMDtCMzA5OzExMDMgMTE2MiAxMUIwOworQjMwQTtCMzBBOzExMDMgMTE2MiAxMUIxO0IzMEE7MTEwMyAxMTYyIDExQjE7CitCMzBCO0IzMEI7MTEwMyAxMTYyIDExQjI7QjMwQjsxMTAzIDExNjIgMTFCMjsKK0IzMEM7QjMwQzsxMTAzIDExNjIgMTFCMztCMzBDOzExMDMgMTE2MiAxMUIzOworQjMwRDtCMzBEOzExMDMgMTE2MiAxMUI0O0IzMEQ7MTEwMyAxMTYyIDExQjQ7CitCMzBFO0IzMEU7MTEwMyAxMTYyIDExQjU7QjMwRTsxMTAzIDExNjIgMTFCNTsKK0IzMEY7QjMwRjsxMTAzIDExNjIgMTFCNjtCMzBGOzExMDMgMTE2MiAxMUI2OworQjMxMDtCMzEwOzExMDMgMTE2MiAxMUI3O0IzMTA7MTEwMyAxMTYyIDExQjc7CitCMzExO0IzMTE7MTEwMyAxMTYyIDExQjg7QjMxMTsxMTAzIDExNjIgMTFCODsKK0IzMTI7QjMxMjsxMTAzIDExNjIgMTFCOTtCMzEyOzExMDMgMTE2MiAxMUI5OworQjMxMztCMzEzOzExMDMgMTE2MiAxMUJBO0IzMTM7MTEwMyAxMTYyIDExQkE7CitCMzE0O0IzMTQ7MTEwMyAxMTYyIDExQkI7QjMxNDsxMTAzIDExNjIgMTFCQjsKK0IzMTU7QjMxNTsxMTAzIDExNjIgMTFCQztCMzE1OzExMDMgMTE2MiAxMUJDOworQjMxNjtCMzE2OzExMDMgMTE2MiAxMUJEO0IzMTY7MTEwMyAxMTYyIDExQkQ7CitCMzE3O0IzMTc7MTEwMyAxMTYyIDExQkU7QjMxNzsxMTAzIDExNjIgMTFCRTsKK0IzMTg7QjMxODsxMTAzIDExNjIgMTFCRjtCMzE4OzExMDMgMTE2MiAxMUJGOworQjMxOTtCMzE5OzExMDMgMTE2MiAxMUMwO0IzMTk7MTEwMyAxMTYyIDExQzA7CitCMzFBO0IzMUE7MTEwMyAxMTYyIDExQzE7QjMxQTsxMTAzIDExNjIgMTFDMTsKK0IzMUI7QjMxQjsxMTAzIDExNjIgMTFDMjtCMzFCOzExMDMgMTE2MiAxMUMyOworQjMxQztCMzFDOzExMDMgMTE2MztCMzFDOzExMDMgMTE2MzsKK0IzMUQ7QjMxRDsxMTAzIDExNjMgMTFBODtCMzFEOzExMDMgMTE2MyAxMUE4OworQjMxRTtCMzFFOzExMDMgMTE2MyAxMUE5O0IzMUU7MTEwMyAxMTYzIDExQTk7CitCMzFGO0IzMUY7MTEwMyAxMTYzIDExQUE7QjMxRjsxMTAzIDExNjMgMTFBQTsKK0IzMjA7QjMyMDsxMTAzIDExNjMgMTFBQjtCMzIwOzExMDMgMTE2MyAxMUFCOworQjMyMTtCMzIxOzExMDMgMTE2MyAxMUFDO0IzMjE7MTEwMyAxMTYzIDExQUM7CitCMzIyO0IzMjI7MTEwMyAxMTYzIDExQUQ7QjMyMjsxMTAzIDExNjMgMTFBRDsKK0IzMjM7QjMyMzsxMTAzIDExNjMgMTFBRTtCMzIzOzExMDMgMTE2MyAxMUFFOworQjMyNDtCMzI0OzExMDMgMTE2MyAxMUFGO0IzMjQ7MTEwMyAxMTYzIDExQUY7CitCMzI1O0IzMjU7MTEwMyAxMTYzIDExQjA7QjMyNTsxMTAzIDExNjMgMTFCMDsKK0IzMjY7QjMyNjsxMTAzIDExNjMgMTFCMTtCMzI2OzExMDMgMTE2MyAxMUIxOworQjMyNztCMzI3OzExMDMgMTE2MyAxMUIyO0IzMjc7MTEwMyAxMTYzIDExQjI7CitCMzI4O0IzMjg7MTEwMyAxMTYzIDExQjM7QjMyODsxMTAzIDExNjMgMTFCMzsKK0IzMjk7QjMyOTsxMTAzIDExNjMgMTFCNDtCMzI5OzExMDMgMTE2MyAxMUI0OworQjMyQTtCMzJBOzExMDMgMTE2MyAxMUI1O0IzMkE7MTEwMyAxMTYzIDExQjU7CitCMzJCO0IzMkI7MTEwMyAxMTYzIDExQjY7QjMyQjsxMTAzIDExNjMgMTFCNjsKK0IzMkM7QjMyQzsxMTAzIDExNjMgMTFCNztCMzJDOzExMDMgMTE2MyAxMUI3OworQjMyRDtCMzJEOzExMDMgMTE2MyAxMUI4O0IzMkQ7MTEwMyAxMTYzIDExQjg7CitCMzJFO0IzMkU7MTEwMyAxMTYzIDExQjk7QjMyRTsxMTAzIDExNjMgMTFCOTsKK0IzMkY7QjMyRjsxMTAzIDExNjMgMTFCQTtCMzJGOzExMDMgMTE2MyAxMUJBOworQjMzMDtCMzMwOzExMDMgMTE2MyAxMUJCO0IzMzA7MTEwMyAxMTYzIDExQkI7CitCMzMxO0IzMzE7MTEwMyAxMTYzIDExQkM7QjMzMTsxMTAzIDExNjMgMTFCQzsKK0IzMzI7QjMzMjsxMTAzIDExNjMgMTFCRDtCMzMyOzExMDMgMTE2MyAxMUJEOworQjMzMztCMzMzOzExMDMgMTE2MyAxMUJFO0IzMzM7MTEwMyAxMTYzIDExQkU7CitCMzM0O0IzMzQ7MTEwMyAxMTYzIDExQkY7QjMzNDsxMTAzIDExNjMgMTFCRjsKK0IzMzU7QjMzNTsxMTAzIDExNjMgMTFDMDtCMzM1OzExMDMgMTE2MyAxMUMwOworQjMzNjtCMzM2OzExMDMgMTE2MyAxMUMxO0IzMzY7MTEwMyAxMTYzIDExQzE7CitCMzM3O0IzMzc7MTEwMyAxMTYzIDExQzI7QjMzNzsxMTAzIDExNjMgMTFDMjsKK0IzMzg7QjMzODsxMTAzIDExNjQ7QjMzODsxMTAzIDExNjQ7CitCMzM5O0IzMzk7MTEwMyAxMTY0IDExQTg7QjMzOTsxMTAzIDExNjQgMTFBODsKK0IzM0E7QjMzQTsxMTAzIDExNjQgMTFBOTtCMzNBOzExMDMgMTE2NCAxMUE5OworQjMzQjtCMzNCOzExMDMgMTE2NCAxMUFBO0IzM0I7MTEwMyAxMTY0IDExQUE7CitCMzNDO0IzM0M7MTEwMyAxMTY0IDExQUI7QjMzQzsxMTAzIDExNjQgMTFBQjsKK0IzM0Q7QjMzRDsxMTAzIDExNjQgMTFBQztCMzNEOzExMDMgMTE2NCAxMUFDOworQjMzRTtCMzNFOzExMDMgMTE2NCAxMUFEO0IzM0U7MTEwMyAxMTY0IDExQUQ7CitCMzNGO0IzM0Y7MTEwMyAxMTY0IDExQUU7QjMzRjsxMTAzIDExNjQgMTFBRTsKK0IzNDA7QjM0MDsxMTAzIDExNjQgMTFBRjtCMzQwOzExMDMgMTE2NCAxMUFGOworQjM0MTtCMzQxOzExMDMgMTE2NCAxMUIwO0IzNDE7MTEwMyAxMTY0IDExQjA7CitCMzQyO0IzNDI7MTEwMyAxMTY0IDExQjE7QjM0MjsxMTAzIDExNjQgMTFCMTsKK0IzNDM7QjM0MzsxMTAzIDExNjQgMTFCMjtCMzQzOzExMDMgMTE2NCAxMUIyOworQjM0NDtCMzQ0OzExMDMgMTE2NCAxMUIzO0IzNDQ7MTEwMyAxMTY0IDExQjM7CitCMzQ1O0IzNDU7MTEwMyAxMTY0IDExQjQ7QjM0NTsxMTAzIDExNjQgMTFCNDsKK0IzNDY7QjM0NjsxMTAzIDExNjQgMTFCNTtCMzQ2OzExMDMgMTE2NCAxMUI1OworQjM0NztCMzQ3OzExMDMgMTE2NCAxMUI2O0IzNDc7MTEwMyAxMTY0IDExQjY7CitCMzQ4O0IzNDg7MTEwMyAxMTY0IDExQjc7QjM0ODsxMTAzIDExNjQgMTFCNzsKK0IzNDk7QjM0OTsxMTAzIDExNjQgMTFCODtCMzQ5OzExMDMgMTE2NCAxMUI4OworQjM0QTtCMzRBOzExMDMgMTE2NCAxMUI5O0IzNEE7MTEwMyAxMTY0IDExQjk7CitCMzRCO0IzNEI7MTEwMyAxMTY0IDExQkE7QjM0QjsxMTAzIDExNjQgMTFCQTsKK0IzNEM7QjM0QzsxMTAzIDExNjQgMTFCQjtCMzRDOzExMDMgMTE2NCAxMUJCOworQjM0RDtCMzREOzExMDMgMTE2NCAxMUJDO0IzNEQ7MTEwMyAxMTY0IDExQkM7CitCMzRFO0IzNEU7MTEwMyAxMTY0IDExQkQ7QjM0RTsxMTAzIDExNjQgMTFCRDsKK0IzNEY7QjM0RjsxMTAzIDExNjQgMTFCRTtCMzRGOzExMDMgMTE2NCAxMUJFOworQjM1MDtCMzUwOzExMDMgMTE2NCAxMUJGO0IzNTA7MTEwMyAxMTY0IDExQkY7CitCMzUxO0IzNTE7MTEwMyAxMTY0IDExQzA7QjM1MTsxMTAzIDExNjQgMTFDMDsKK0IzNTI7QjM1MjsxMTAzIDExNjQgMTFDMTtCMzUyOzExMDMgMTE2NCAxMUMxOworQjM1MztCMzUzOzExMDMgMTE2NCAxMUMyO0IzNTM7MTEwMyAxMTY0IDExQzI7CitCMzU0O0IzNTQ7MTEwMyAxMTY1O0IzNTQ7MTEwMyAxMTY1OworQjM1NTtCMzU1OzExMDMgMTE2NSAxMUE4O0IzNTU7MTEwMyAxMTY1IDExQTg7CitCMzU2O0IzNTY7MTEwMyAxMTY1IDExQTk7QjM1NjsxMTAzIDExNjUgMTFBOTsKK0IzNTc7QjM1NzsxMTAzIDExNjUgMTFBQTtCMzU3OzExMDMgMTE2NSAxMUFBOworQjM1ODtCMzU4OzExMDMgMTE2NSAxMUFCO0IzNTg7MTEwMyAxMTY1IDExQUI7CitCMzU5O0IzNTk7MTEwMyAxMTY1IDExQUM7QjM1OTsxMTAzIDExNjUgMTFBQzsKK0IzNUE7QjM1QTsxMTAzIDExNjUgMTFBRDtCMzVBOzExMDMgMTE2NSAxMUFEOworQjM1QjtCMzVCOzExMDMgMTE2NSAxMUFFO0IzNUI7MTEwMyAxMTY1IDExQUU7CitCMzVDO0IzNUM7MTEwMyAxMTY1IDExQUY7QjM1QzsxMTAzIDExNjUgMTFBRjsKK0IzNUQ7QjM1RDsxMTAzIDExNjUgMTFCMDtCMzVEOzExMDMgMTE2NSAxMUIwOworQjM1RTtCMzVFOzExMDMgMTE2NSAxMUIxO0IzNUU7MTEwMyAxMTY1IDExQjE7CitCMzVGO0IzNUY7MTEwMyAxMTY1IDExQjI7QjM1RjsxMTAzIDExNjUgMTFCMjsKK0IzNjA7QjM2MDsxMTAzIDExNjUgMTFCMztCMzYwOzExMDMgMTE2NSAxMUIzOworQjM2MTtCMzYxOzExMDMgMTE2NSAxMUI0O0IzNjE7MTEwMyAxMTY1IDExQjQ7CitCMzYyO0IzNjI7MTEwMyAxMTY1IDExQjU7QjM2MjsxMTAzIDExNjUgMTFCNTsKK0IzNjM7QjM2MzsxMTAzIDExNjUgMTFCNjtCMzYzOzExMDMgMTE2NSAxMUI2OworQjM2NDtCMzY0OzExMDMgMTE2NSAxMUI3O0IzNjQ7MTEwMyAxMTY1IDExQjc7CitCMzY1O0IzNjU7MTEwMyAxMTY1IDExQjg7QjM2NTsxMTAzIDExNjUgMTFCODsKK0IzNjY7QjM2NjsxMTAzIDExNjUgMTFCOTtCMzY2OzExMDMgMTE2NSAxMUI5OworQjM2NztCMzY3OzExMDMgMTE2NSAxMUJBO0IzNjc7MTEwMyAxMTY1IDExQkE7CitCMzY4O0IzNjg7MTEwMyAxMTY1IDExQkI7QjM2ODsxMTAzIDExNjUgMTFCQjsKK0IzNjk7QjM2OTsxMTAzIDExNjUgMTFCQztCMzY5OzExMDMgMTE2NSAxMUJDOworQjM2QTtCMzZBOzExMDMgMTE2NSAxMUJEO0IzNkE7MTEwMyAxMTY1IDExQkQ7CitCMzZCO0IzNkI7MTEwMyAxMTY1IDExQkU7QjM2QjsxMTAzIDExNjUgMTFCRTsKK0IzNkM7QjM2QzsxMTAzIDExNjUgMTFCRjtCMzZDOzExMDMgMTE2NSAxMUJGOworQjM2RDtCMzZEOzExMDMgMTE2NSAxMUMwO0IzNkQ7MTEwMyAxMTY1IDExQzA7CitCMzZFO0IzNkU7MTEwMyAxMTY1IDExQzE7QjM2RTsxMTAzIDExNjUgMTFDMTsKK0IzNkY7QjM2RjsxMTAzIDExNjUgMTFDMjtCMzZGOzExMDMgMTE2NSAxMUMyOworQjM3MDtCMzcwOzExMDMgMTE2NjtCMzcwOzExMDMgMTE2NjsKK0IzNzE7QjM3MTsxMTAzIDExNjYgMTFBODtCMzcxOzExMDMgMTE2NiAxMUE4OworQjM3MjtCMzcyOzExMDMgMTE2NiAxMUE5O0IzNzI7MTEwMyAxMTY2IDExQTk7CitCMzczO0IzNzM7MTEwMyAxMTY2IDExQUE7QjM3MzsxMTAzIDExNjYgMTFBQTsKK0IzNzQ7QjM3NDsxMTAzIDExNjYgMTFBQjtCMzc0OzExMDMgMTE2NiAxMUFCOworQjM3NTtCMzc1OzExMDMgMTE2NiAxMUFDO0IzNzU7MTEwMyAxMTY2IDExQUM7CitCMzc2O0IzNzY7MTEwMyAxMTY2IDExQUQ7QjM3NjsxMTAzIDExNjYgMTFBRDsKK0IzNzc7QjM3NzsxMTAzIDExNjYgMTFBRTtCMzc3OzExMDMgMTE2NiAxMUFFOworQjM3ODtCMzc4OzExMDMgMTE2NiAxMUFGO0IzNzg7MTEwMyAxMTY2IDExQUY7CitCMzc5O0IzNzk7MTEwMyAxMTY2IDExQjA7QjM3OTsxMTAzIDExNjYgMTFCMDsKK0IzN0E7QjM3QTsxMTAzIDExNjYgMTFCMTtCMzdBOzExMDMgMTE2NiAxMUIxOworQjM3QjtCMzdCOzExMDMgMTE2NiAxMUIyO0IzN0I7MTEwMyAxMTY2IDExQjI7CitCMzdDO0IzN0M7MTEwMyAxMTY2IDExQjM7QjM3QzsxMTAzIDExNjYgMTFCMzsKK0IzN0Q7QjM3RDsxMTAzIDExNjYgMTFCNDtCMzdEOzExMDMgMTE2NiAxMUI0OworQjM3RTtCMzdFOzExMDMgMTE2NiAxMUI1O0IzN0U7MTEwMyAxMTY2IDExQjU7CitCMzdGO0IzN0Y7MTEwMyAxMTY2IDExQjY7QjM3RjsxMTAzIDExNjYgMTFCNjsKK0IzODA7QjM4MDsxMTAzIDExNjYgMTFCNztCMzgwOzExMDMgMTE2NiAxMUI3OworQjM4MTtCMzgxOzExMDMgMTE2NiAxMUI4O0IzODE7MTEwMyAxMTY2IDExQjg7CitCMzgyO0IzODI7MTEwMyAxMTY2IDExQjk7QjM4MjsxMTAzIDExNjYgMTFCOTsKK0IzODM7QjM4MzsxMTAzIDExNjYgMTFCQTtCMzgzOzExMDMgMTE2NiAxMUJBOworQjM4NDtCMzg0OzExMDMgMTE2NiAxMUJCO0IzODQ7MTEwMyAxMTY2IDExQkI7CitCMzg1O0IzODU7MTEwMyAxMTY2IDExQkM7QjM4NTsxMTAzIDExNjYgMTFCQzsKK0IzODY7QjM4NjsxMTAzIDExNjYgMTFCRDtCMzg2OzExMDMgMTE2NiAxMUJEOworQjM4NztCMzg3OzExMDMgMTE2NiAxMUJFO0IzODc7MTEwMyAxMTY2IDExQkU7CitCMzg4O0IzODg7MTEwMyAxMTY2IDExQkY7QjM4ODsxMTAzIDExNjYgMTFCRjsKK0IzODk7QjM4OTsxMTAzIDExNjYgMTFDMDtCMzg5OzExMDMgMTE2NiAxMUMwOworQjM4QTtCMzhBOzExMDMgMTE2NiAxMUMxO0IzOEE7MTEwMyAxMTY2IDExQzE7CitCMzhCO0IzOEI7MTEwMyAxMTY2IDExQzI7QjM4QjsxMTAzIDExNjYgMTFDMjsKK0IzOEM7QjM4QzsxMTAzIDExNjc7QjM4QzsxMTAzIDExNjc7CitCMzhEO0IzOEQ7MTEwMyAxMTY3IDExQTg7QjM4RDsxMTAzIDExNjcgMTFBODsKK0IzOEU7QjM4RTsxMTAzIDExNjcgMTFBOTtCMzhFOzExMDMgMTE2NyAxMUE5OworQjM4RjtCMzhGOzExMDMgMTE2NyAxMUFBO0IzOEY7MTEwMyAxMTY3IDExQUE7CitCMzkwO0IzOTA7MTEwMyAxMTY3IDExQUI7QjM5MDsxMTAzIDExNjcgMTFBQjsKK0IzOTE7QjM5MTsxMTAzIDExNjcgMTFBQztCMzkxOzExMDMgMTE2NyAxMUFDOworQjM5MjtCMzkyOzExMDMgMTE2NyAxMUFEO0IzOTI7MTEwMyAxMTY3IDExQUQ7CitCMzkzO0IzOTM7MTEwMyAxMTY3IDExQUU7QjM5MzsxMTAzIDExNjcgMTFBRTsKK0IzOTQ7QjM5NDsxMTAzIDExNjcgMTFBRjtCMzk0OzExMDMgMTE2NyAxMUFGOworQjM5NTtCMzk1OzExMDMgMTE2NyAxMUIwO0IzOTU7MTEwMyAxMTY3IDExQjA7CitCMzk2O0IzOTY7MTEwMyAxMTY3IDExQjE7QjM5NjsxMTAzIDExNjcgMTFCMTsKK0IzOTc7QjM5NzsxMTAzIDExNjcgMTFCMjtCMzk3OzExMDMgMTE2NyAxMUIyOworQjM5ODtCMzk4OzExMDMgMTE2NyAxMUIzO0IzOTg7MTEwMyAxMTY3IDExQjM7CitCMzk5O0IzOTk7MTEwMyAxMTY3IDExQjQ7QjM5OTsxMTAzIDExNjcgMTFCNDsKK0IzOUE7QjM5QTsxMTAzIDExNjcgMTFCNTtCMzlBOzExMDMgMTE2NyAxMUI1OworQjM5QjtCMzlCOzExMDMgMTE2NyAxMUI2O0IzOUI7MTEwMyAxMTY3IDExQjY7CitCMzlDO0IzOUM7MTEwMyAxMTY3IDExQjc7QjM5QzsxMTAzIDExNjcgMTFCNzsKK0IzOUQ7QjM5RDsxMTAzIDExNjcgMTFCODtCMzlEOzExMDMgMTE2NyAxMUI4OworQjM5RTtCMzlFOzExMDMgMTE2NyAxMUI5O0IzOUU7MTEwMyAxMTY3IDExQjk7CitCMzlGO0IzOUY7MTEwMyAxMTY3IDExQkE7QjM5RjsxMTAzIDExNjcgMTFCQTsKK0IzQTA7QjNBMDsxMTAzIDExNjcgMTFCQjtCM0EwOzExMDMgMTE2NyAxMUJCOworQjNBMTtCM0ExOzExMDMgMTE2NyAxMUJDO0IzQTE7MTEwMyAxMTY3IDExQkM7CitCM0EyO0IzQTI7MTEwMyAxMTY3IDExQkQ7QjNBMjsxMTAzIDExNjcgMTFCRDsKK0IzQTM7QjNBMzsxMTAzIDExNjcgMTFCRTtCM0EzOzExMDMgMTE2NyAxMUJFOworQjNBNDtCM0E0OzExMDMgMTE2NyAxMUJGO0IzQTQ7MTEwMyAxMTY3IDExQkY7CitCM0E1O0IzQTU7MTEwMyAxMTY3IDExQzA7QjNBNTsxMTAzIDExNjcgMTFDMDsKK0IzQTY7QjNBNjsxMTAzIDExNjcgMTFDMTtCM0E2OzExMDMgMTE2NyAxMUMxOworQjNBNztCM0E3OzExMDMgMTE2NyAxMUMyO0IzQTc7MTEwMyAxMTY3IDExQzI7CitCM0E4O0IzQTg7MTEwMyAxMTY4O0IzQTg7MTEwMyAxMTY4OworQjNBOTtCM0E5OzExMDMgMTE2OCAxMUE4O0IzQTk7MTEwMyAxMTY4IDExQTg7CitCM0FBO0IzQUE7MTEwMyAxMTY4IDExQTk7QjNBQTsxMTAzIDExNjggMTFBOTsKK0IzQUI7QjNBQjsxMTAzIDExNjggMTFBQTtCM0FCOzExMDMgMTE2OCAxMUFBOworQjNBQztCM0FDOzExMDMgMTE2OCAxMUFCO0IzQUM7MTEwMyAxMTY4IDExQUI7CitCM0FEO0IzQUQ7MTEwMyAxMTY4IDExQUM7QjNBRDsxMTAzIDExNjggMTFBQzsKK0IzQUU7QjNBRTsxMTAzIDExNjggMTFBRDtCM0FFOzExMDMgMTE2OCAxMUFEOworQjNBRjtCM0FGOzExMDMgMTE2OCAxMUFFO0IzQUY7MTEwMyAxMTY4IDExQUU7CitCM0IwO0IzQjA7MTEwMyAxMTY4IDExQUY7QjNCMDsxMTAzIDExNjggMTFBRjsKK0IzQjE7QjNCMTsxMTAzIDExNjggMTFCMDtCM0IxOzExMDMgMTE2OCAxMUIwOworQjNCMjtCM0IyOzExMDMgMTE2OCAxMUIxO0IzQjI7MTEwMyAxMTY4IDExQjE7CitCM0IzO0IzQjM7MTEwMyAxMTY4IDExQjI7QjNCMzsxMTAzIDExNjggMTFCMjsKK0IzQjQ7QjNCNDsxMTAzIDExNjggMTFCMztCM0I0OzExMDMgMTE2OCAxMUIzOworQjNCNTtCM0I1OzExMDMgMTE2OCAxMUI0O0IzQjU7MTEwMyAxMTY4IDExQjQ7CitCM0I2O0IzQjY7MTEwMyAxMTY4IDExQjU7QjNCNjsxMTAzIDExNjggMTFCNTsKK0IzQjc7QjNCNzsxMTAzIDExNjggMTFCNjtCM0I3OzExMDMgMTE2OCAxMUI2OworQjNCODtCM0I4OzExMDMgMTE2OCAxMUI3O0IzQjg7MTEwMyAxMTY4IDExQjc7CitCM0I5O0IzQjk7MTEwMyAxMTY4IDExQjg7QjNCOTsxMTAzIDExNjggMTFCODsKK0IzQkE7QjNCQTsxMTAzIDExNjggMTFCOTtCM0JBOzExMDMgMTE2OCAxMUI5OworQjNCQjtCM0JCOzExMDMgMTE2OCAxMUJBO0IzQkI7MTEwMyAxMTY4IDExQkE7CitCM0JDO0IzQkM7MTEwMyAxMTY4IDExQkI7QjNCQzsxMTAzIDExNjggMTFCQjsKK0IzQkQ7QjNCRDsxMTAzIDExNjggMTFCQztCM0JEOzExMDMgMTE2OCAxMUJDOworQjNCRTtCM0JFOzExMDMgMTE2OCAxMUJEO0IzQkU7MTEwMyAxMTY4IDExQkQ7CitCM0JGO0IzQkY7MTEwMyAxMTY4IDExQkU7QjNCRjsxMTAzIDExNjggMTFCRTsKK0IzQzA7QjNDMDsxMTAzIDExNjggMTFCRjtCM0MwOzExMDMgMTE2OCAxMUJGOworQjNDMTtCM0MxOzExMDMgMTE2OCAxMUMwO0IzQzE7MTEwMyAxMTY4IDExQzA7CitCM0MyO0IzQzI7MTEwMyAxMTY4IDExQzE7QjNDMjsxMTAzIDExNjggMTFDMTsKK0IzQzM7QjNDMzsxMTAzIDExNjggMTFDMjtCM0MzOzExMDMgMTE2OCAxMUMyOworQjNDNDtCM0M0OzExMDMgMTE2OTtCM0M0OzExMDMgMTE2OTsKK0IzQzU7QjNDNTsxMTAzIDExNjkgMTFBODtCM0M1OzExMDMgMTE2OSAxMUE4OworQjNDNjtCM0M2OzExMDMgMTE2OSAxMUE5O0IzQzY7MTEwMyAxMTY5IDExQTk7CitCM0M3O0IzQzc7MTEwMyAxMTY5IDExQUE7QjNDNzsxMTAzIDExNjkgMTFBQTsKK0IzQzg7QjNDODsxMTAzIDExNjkgMTFBQjtCM0M4OzExMDMgMTE2OSAxMUFCOworQjNDOTtCM0M5OzExMDMgMTE2OSAxMUFDO0IzQzk7MTEwMyAxMTY5IDExQUM7CitCM0NBO0IzQ0E7MTEwMyAxMTY5IDExQUQ7QjNDQTsxMTAzIDExNjkgMTFBRDsKK0IzQ0I7QjNDQjsxMTAzIDExNjkgMTFBRTtCM0NCOzExMDMgMTE2OSAxMUFFOworQjNDQztCM0NDOzExMDMgMTE2OSAxMUFGO0IzQ0M7MTEwMyAxMTY5IDExQUY7CitCM0NEO0IzQ0Q7MTEwMyAxMTY5IDExQjA7QjNDRDsxMTAzIDExNjkgMTFCMDsKK0IzQ0U7QjNDRTsxMTAzIDExNjkgMTFCMTtCM0NFOzExMDMgMTE2OSAxMUIxOworQjNDRjtCM0NGOzExMDMgMTE2OSAxMUIyO0IzQ0Y7MTEwMyAxMTY5IDExQjI7CitCM0QwO0IzRDA7MTEwMyAxMTY5IDExQjM7QjNEMDsxMTAzIDExNjkgMTFCMzsKK0IzRDE7QjNEMTsxMTAzIDExNjkgMTFCNDtCM0QxOzExMDMgMTE2OSAxMUI0OworQjNEMjtCM0QyOzExMDMgMTE2OSAxMUI1O0IzRDI7MTEwMyAxMTY5IDExQjU7CitCM0QzO0IzRDM7MTEwMyAxMTY5IDExQjY7QjNEMzsxMTAzIDExNjkgMTFCNjsKK0IzRDQ7QjNENDsxMTAzIDExNjkgMTFCNztCM0Q0OzExMDMgMTE2OSAxMUI3OworQjNENTtCM0Q1OzExMDMgMTE2OSAxMUI4O0IzRDU7MTEwMyAxMTY5IDExQjg7CitCM0Q2O0IzRDY7MTEwMyAxMTY5IDExQjk7QjNENjsxMTAzIDExNjkgMTFCOTsKK0IzRDc7QjNENzsxMTAzIDExNjkgMTFCQTtCM0Q3OzExMDMgMTE2OSAxMUJBOworQjNEODtCM0Q4OzExMDMgMTE2OSAxMUJCO0IzRDg7MTEwMyAxMTY5IDExQkI7CitCM0Q5O0IzRDk7MTEwMyAxMTY5IDExQkM7QjNEOTsxMTAzIDExNjkgMTFCQzsKK0IzREE7QjNEQTsxMTAzIDExNjkgMTFCRDtCM0RBOzExMDMgMTE2OSAxMUJEOworQjNEQjtCM0RCOzExMDMgMTE2OSAxMUJFO0IzREI7MTEwMyAxMTY5IDExQkU7CitCM0RDO0IzREM7MTEwMyAxMTY5IDExQkY7QjNEQzsxMTAzIDExNjkgMTFCRjsKK0IzREQ7QjNERDsxMTAzIDExNjkgMTFDMDtCM0REOzExMDMgMTE2OSAxMUMwOworQjNERTtCM0RFOzExMDMgMTE2OSAxMUMxO0IzREU7MTEwMyAxMTY5IDExQzE7CitCM0RGO0IzREY7MTEwMyAxMTY5IDExQzI7QjNERjsxMTAzIDExNjkgMTFDMjsKK0IzRTA7QjNFMDsxMTAzIDExNkE7QjNFMDsxMTAzIDExNkE7CitCM0UxO0IzRTE7MTEwMyAxMTZBIDExQTg7QjNFMTsxMTAzIDExNkEgMTFBODsKK0IzRTI7QjNFMjsxMTAzIDExNkEgMTFBOTtCM0UyOzExMDMgMTE2QSAxMUE5OworQjNFMztCM0UzOzExMDMgMTE2QSAxMUFBO0IzRTM7MTEwMyAxMTZBIDExQUE7CitCM0U0O0IzRTQ7MTEwMyAxMTZBIDExQUI7QjNFNDsxMTAzIDExNkEgMTFBQjsKK0IzRTU7QjNFNTsxMTAzIDExNkEgMTFBQztCM0U1OzExMDMgMTE2QSAxMUFDOworQjNFNjtCM0U2OzExMDMgMTE2QSAxMUFEO0IzRTY7MTEwMyAxMTZBIDExQUQ7CitCM0U3O0IzRTc7MTEwMyAxMTZBIDExQUU7QjNFNzsxMTAzIDExNkEgMTFBRTsKK0IzRTg7QjNFODsxMTAzIDExNkEgMTFBRjtCM0U4OzExMDMgMTE2QSAxMUFGOworQjNFOTtCM0U5OzExMDMgMTE2QSAxMUIwO0IzRTk7MTEwMyAxMTZBIDExQjA7CitCM0VBO0IzRUE7MTEwMyAxMTZBIDExQjE7QjNFQTsxMTAzIDExNkEgMTFCMTsKK0IzRUI7QjNFQjsxMTAzIDExNkEgMTFCMjtCM0VCOzExMDMgMTE2QSAxMUIyOworQjNFQztCM0VDOzExMDMgMTE2QSAxMUIzO0IzRUM7MTEwMyAxMTZBIDExQjM7CitCM0VEO0IzRUQ7MTEwMyAxMTZBIDExQjQ7QjNFRDsxMTAzIDExNkEgMTFCNDsKK0IzRUU7QjNFRTsxMTAzIDExNkEgMTFCNTtCM0VFOzExMDMgMTE2QSAxMUI1OworQjNFRjtCM0VGOzExMDMgMTE2QSAxMUI2O0IzRUY7MTEwMyAxMTZBIDExQjY7CitCM0YwO0IzRjA7MTEwMyAxMTZBIDExQjc7QjNGMDsxMTAzIDExNkEgMTFCNzsKK0IzRjE7QjNGMTsxMTAzIDExNkEgMTFCODtCM0YxOzExMDMgMTE2QSAxMUI4OworQjNGMjtCM0YyOzExMDMgMTE2QSAxMUI5O0IzRjI7MTEwMyAxMTZBIDExQjk7CitCM0YzO0IzRjM7MTEwMyAxMTZBIDExQkE7QjNGMzsxMTAzIDExNkEgMTFCQTsKK0IzRjQ7QjNGNDsxMTAzIDExNkEgMTFCQjtCM0Y0OzExMDMgMTE2QSAxMUJCOworQjNGNTtCM0Y1OzExMDMgMTE2QSAxMUJDO0IzRjU7MTEwMyAxMTZBIDExQkM7CitCM0Y2O0IzRjY7MTEwMyAxMTZBIDExQkQ7QjNGNjsxMTAzIDExNkEgMTFCRDsKK0IzRjc7QjNGNzsxMTAzIDExNkEgMTFCRTtCM0Y3OzExMDMgMTE2QSAxMUJFOworQjNGODtCM0Y4OzExMDMgMTE2QSAxMUJGO0IzRjg7MTEwMyAxMTZBIDExQkY7CitCM0Y5O0IzRjk7MTEwMyAxMTZBIDExQzA7QjNGOTsxMTAzIDExNkEgMTFDMDsKK0IzRkE7QjNGQTsxMTAzIDExNkEgMTFDMTtCM0ZBOzExMDMgMTE2QSAxMUMxOworQjNGQjtCM0ZCOzExMDMgMTE2QSAxMUMyO0IzRkI7MTEwMyAxMTZBIDExQzI7CitCM0ZDO0IzRkM7MTEwMyAxMTZCO0IzRkM7MTEwMyAxMTZCOworQjNGRDtCM0ZEOzExMDMgMTE2QiAxMUE4O0IzRkQ7MTEwMyAxMTZCIDExQTg7CitCM0ZFO0IzRkU7MTEwMyAxMTZCIDExQTk7QjNGRTsxMTAzIDExNkIgMTFBOTsKK0IzRkY7QjNGRjsxMTAzIDExNkIgMTFBQTtCM0ZGOzExMDMgMTE2QiAxMUFBOworQjQwMDtCNDAwOzExMDMgMTE2QiAxMUFCO0I0MDA7MTEwMyAxMTZCIDExQUI7CitCNDAxO0I0MDE7MTEwMyAxMTZCIDExQUM7QjQwMTsxMTAzIDExNkIgMTFBQzsKK0I0MDI7QjQwMjsxMTAzIDExNkIgMTFBRDtCNDAyOzExMDMgMTE2QiAxMUFEOworQjQwMztCNDAzOzExMDMgMTE2QiAxMUFFO0I0MDM7MTEwMyAxMTZCIDExQUU7CitCNDA0O0I0MDQ7MTEwMyAxMTZCIDExQUY7QjQwNDsxMTAzIDExNkIgMTFBRjsKK0I0MDU7QjQwNTsxMTAzIDExNkIgMTFCMDtCNDA1OzExMDMgMTE2QiAxMUIwOworQjQwNjtCNDA2OzExMDMgMTE2QiAxMUIxO0I0MDY7MTEwMyAxMTZCIDExQjE7CitCNDA3O0I0MDc7MTEwMyAxMTZCIDExQjI7QjQwNzsxMTAzIDExNkIgMTFCMjsKK0I0MDg7QjQwODsxMTAzIDExNkIgMTFCMztCNDA4OzExMDMgMTE2QiAxMUIzOworQjQwOTtCNDA5OzExMDMgMTE2QiAxMUI0O0I0MDk7MTEwMyAxMTZCIDExQjQ7CitCNDBBO0I0MEE7MTEwMyAxMTZCIDExQjU7QjQwQTsxMTAzIDExNkIgMTFCNTsKK0I0MEI7QjQwQjsxMTAzIDExNkIgMTFCNjtCNDBCOzExMDMgMTE2QiAxMUI2OworQjQwQztCNDBDOzExMDMgMTE2QiAxMUI3O0I0MEM7MTEwMyAxMTZCIDExQjc7CitCNDBEO0I0MEQ7MTEwMyAxMTZCIDExQjg7QjQwRDsxMTAzIDExNkIgMTFCODsKK0I0MEU7QjQwRTsxMTAzIDExNkIgMTFCOTtCNDBFOzExMDMgMTE2QiAxMUI5OworQjQwRjtCNDBGOzExMDMgMTE2QiAxMUJBO0I0MEY7MTEwMyAxMTZCIDExQkE7CitCNDEwO0I0MTA7MTEwMyAxMTZCIDExQkI7QjQxMDsxMTAzIDExNkIgMTFCQjsKK0I0MTE7QjQxMTsxMTAzIDExNkIgMTFCQztCNDExOzExMDMgMTE2QiAxMUJDOworQjQxMjtCNDEyOzExMDMgMTE2QiAxMUJEO0I0MTI7MTEwMyAxMTZCIDExQkQ7CitCNDEzO0I0MTM7MTEwMyAxMTZCIDExQkU7QjQxMzsxMTAzIDExNkIgMTFCRTsKK0I0MTQ7QjQxNDsxMTAzIDExNkIgMTFCRjtCNDE0OzExMDMgMTE2QiAxMUJGOworQjQxNTtCNDE1OzExMDMgMTE2QiAxMUMwO0I0MTU7MTEwMyAxMTZCIDExQzA7CitCNDE2O0I0MTY7MTEwMyAxMTZCIDExQzE7QjQxNjsxMTAzIDExNkIgMTFDMTsKK0I0MTc7QjQxNzsxMTAzIDExNkIgMTFDMjtCNDE3OzExMDMgMTE2QiAxMUMyOworQjQxODtCNDE4OzExMDMgMTE2QztCNDE4OzExMDMgMTE2QzsKK0I0MTk7QjQxOTsxMTAzIDExNkMgMTFBODtCNDE5OzExMDMgMTE2QyAxMUE4OworQjQxQTtCNDFBOzExMDMgMTE2QyAxMUE5O0I0MUE7MTEwMyAxMTZDIDExQTk7CitCNDFCO0I0MUI7MTEwMyAxMTZDIDExQUE7QjQxQjsxMTAzIDExNkMgMTFBQTsKK0I0MUM7QjQxQzsxMTAzIDExNkMgMTFBQjtCNDFDOzExMDMgMTE2QyAxMUFCOworQjQxRDtCNDFEOzExMDMgMTE2QyAxMUFDO0I0MUQ7MTEwMyAxMTZDIDExQUM7CitCNDFFO0I0MUU7MTEwMyAxMTZDIDExQUQ7QjQxRTsxMTAzIDExNkMgMTFBRDsKK0I0MUY7QjQxRjsxMTAzIDExNkMgMTFBRTtCNDFGOzExMDMgMTE2QyAxMUFFOworQjQyMDtCNDIwOzExMDMgMTE2QyAxMUFGO0I0MjA7MTEwMyAxMTZDIDExQUY7CitCNDIxO0I0MjE7MTEwMyAxMTZDIDExQjA7QjQyMTsxMTAzIDExNkMgMTFCMDsKK0I0MjI7QjQyMjsxMTAzIDExNkMgMTFCMTtCNDIyOzExMDMgMTE2QyAxMUIxOworQjQyMztCNDIzOzExMDMgMTE2QyAxMUIyO0I0MjM7MTEwMyAxMTZDIDExQjI7CitCNDI0O0I0MjQ7MTEwMyAxMTZDIDExQjM7QjQyNDsxMTAzIDExNkMgMTFCMzsKK0I0MjU7QjQyNTsxMTAzIDExNkMgMTFCNDtCNDI1OzExMDMgMTE2QyAxMUI0OworQjQyNjtCNDI2OzExMDMgMTE2QyAxMUI1O0I0MjY7MTEwMyAxMTZDIDExQjU7CitCNDI3O0I0Mjc7MTEwMyAxMTZDIDExQjY7QjQyNzsxMTAzIDExNkMgMTFCNjsKK0I0Mjg7QjQyODsxMTAzIDExNkMgMTFCNztCNDI4OzExMDMgMTE2QyAxMUI3OworQjQyOTtCNDI5OzExMDMgMTE2QyAxMUI4O0I0Mjk7MTEwMyAxMTZDIDExQjg7CitCNDJBO0I0MkE7MTEwMyAxMTZDIDExQjk7QjQyQTsxMTAzIDExNkMgMTFCOTsKK0I0MkI7QjQyQjsxMTAzIDExNkMgMTFCQTtCNDJCOzExMDMgMTE2QyAxMUJBOworQjQyQztCNDJDOzExMDMgMTE2QyAxMUJCO0I0MkM7MTEwMyAxMTZDIDExQkI7CitCNDJEO0I0MkQ7MTEwMyAxMTZDIDExQkM7QjQyRDsxMTAzIDExNkMgMTFCQzsKK0I0MkU7QjQyRTsxMTAzIDExNkMgMTFCRDtCNDJFOzExMDMgMTE2QyAxMUJEOworQjQyRjtCNDJGOzExMDMgMTE2QyAxMUJFO0I0MkY7MTEwMyAxMTZDIDExQkU7CitCNDMwO0I0MzA7MTEwMyAxMTZDIDExQkY7QjQzMDsxMTAzIDExNkMgMTFCRjsKK0I0MzE7QjQzMTsxMTAzIDExNkMgMTFDMDtCNDMxOzExMDMgMTE2QyAxMUMwOworQjQzMjtCNDMyOzExMDMgMTE2QyAxMUMxO0I0MzI7MTEwMyAxMTZDIDExQzE7CitCNDMzO0I0MzM7MTEwMyAxMTZDIDExQzI7QjQzMzsxMTAzIDExNkMgMTFDMjsKK0I0MzQ7QjQzNDsxMTAzIDExNkQ7QjQzNDsxMTAzIDExNkQ7CitCNDM1O0I0MzU7MTEwMyAxMTZEIDExQTg7QjQzNTsxMTAzIDExNkQgMTFBODsKK0I0MzY7QjQzNjsxMTAzIDExNkQgMTFBOTtCNDM2OzExMDMgMTE2RCAxMUE5OworQjQzNztCNDM3OzExMDMgMTE2RCAxMUFBO0I0Mzc7MTEwMyAxMTZEIDExQUE7CitCNDM4O0I0Mzg7MTEwMyAxMTZEIDExQUI7QjQzODsxMTAzIDExNkQgMTFBQjsKK0I0Mzk7QjQzOTsxMTAzIDExNkQgMTFBQztCNDM5OzExMDMgMTE2RCAxMUFDOworQjQzQTtCNDNBOzExMDMgMTE2RCAxMUFEO0I0M0E7MTEwMyAxMTZEIDExQUQ7CitCNDNCO0I0M0I7MTEwMyAxMTZEIDExQUU7QjQzQjsxMTAzIDExNkQgMTFBRTsKK0I0M0M7QjQzQzsxMTAzIDExNkQgMTFBRjtCNDNDOzExMDMgMTE2RCAxMUFGOworQjQzRDtCNDNEOzExMDMgMTE2RCAxMUIwO0I0M0Q7MTEwMyAxMTZEIDExQjA7CitCNDNFO0I0M0U7MTEwMyAxMTZEIDExQjE7QjQzRTsxMTAzIDExNkQgMTFCMTsKK0I0M0Y7QjQzRjsxMTAzIDExNkQgMTFCMjtCNDNGOzExMDMgMTE2RCAxMUIyOworQjQ0MDtCNDQwOzExMDMgMTE2RCAxMUIzO0I0NDA7MTEwMyAxMTZEIDExQjM7CitCNDQxO0I0NDE7MTEwMyAxMTZEIDExQjQ7QjQ0MTsxMTAzIDExNkQgMTFCNDsKK0I0NDI7QjQ0MjsxMTAzIDExNkQgMTFCNTtCNDQyOzExMDMgMTE2RCAxMUI1OworQjQ0MztCNDQzOzExMDMgMTE2RCAxMUI2O0I0NDM7MTEwMyAxMTZEIDExQjY7CitCNDQ0O0I0NDQ7MTEwMyAxMTZEIDExQjc7QjQ0NDsxMTAzIDExNkQgMTFCNzsKK0I0NDU7QjQ0NTsxMTAzIDExNkQgMTFCODtCNDQ1OzExMDMgMTE2RCAxMUI4OworQjQ0NjtCNDQ2OzExMDMgMTE2RCAxMUI5O0I0NDY7MTEwMyAxMTZEIDExQjk7CitCNDQ3O0I0NDc7MTEwMyAxMTZEIDExQkE7QjQ0NzsxMTAzIDExNkQgMTFCQTsKK0I0NDg7QjQ0ODsxMTAzIDExNkQgMTFCQjtCNDQ4OzExMDMgMTE2RCAxMUJCOworQjQ0OTtCNDQ5OzExMDMgMTE2RCAxMUJDO0I0NDk7MTEwMyAxMTZEIDExQkM7CitCNDRBO0I0NEE7MTEwMyAxMTZEIDExQkQ7QjQ0QTsxMTAzIDExNkQgMTFCRDsKK0I0NEI7QjQ0QjsxMTAzIDExNkQgMTFCRTtCNDRCOzExMDMgMTE2RCAxMUJFOworQjQ0QztCNDRDOzExMDMgMTE2RCAxMUJGO0I0NEM7MTEwMyAxMTZEIDExQkY7CitCNDREO0I0NEQ7MTEwMyAxMTZEIDExQzA7QjQ0RDsxMTAzIDExNkQgMTFDMDsKK0I0NEU7QjQ0RTsxMTAzIDExNkQgMTFDMTtCNDRFOzExMDMgMTE2RCAxMUMxOworQjQ0RjtCNDRGOzExMDMgMTE2RCAxMUMyO0I0NEY7MTEwMyAxMTZEIDExQzI7CitCNDUwO0I0NTA7MTEwMyAxMTZFO0I0NTA7MTEwMyAxMTZFOworQjQ1MTtCNDUxOzExMDMgMTE2RSAxMUE4O0I0NTE7MTEwMyAxMTZFIDExQTg7CitCNDUyO0I0NTI7MTEwMyAxMTZFIDExQTk7QjQ1MjsxMTAzIDExNkUgMTFBOTsKK0I0NTM7QjQ1MzsxMTAzIDExNkUgMTFBQTtCNDUzOzExMDMgMTE2RSAxMUFBOworQjQ1NDtCNDU0OzExMDMgMTE2RSAxMUFCO0I0NTQ7MTEwMyAxMTZFIDExQUI7CitCNDU1O0I0NTU7MTEwMyAxMTZFIDExQUM7QjQ1NTsxMTAzIDExNkUgMTFBQzsKK0I0NTY7QjQ1NjsxMTAzIDExNkUgMTFBRDtCNDU2OzExMDMgMTE2RSAxMUFEOworQjQ1NztCNDU3OzExMDMgMTE2RSAxMUFFO0I0NTc7MTEwMyAxMTZFIDExQUU7CitCNDU4O0I0NTg7MTEwMyAxMTZFIDExQUY7QjQ1ODsxMTAzIDExNkUgMTFBRjsKK0I0NTk7QjQ1OTsxMTAzIDExNkUgMTFCMDtCNDU5OzExMDMgMTE2RSAxMUIwOworQjQ1QTtCNDVBOzExMDMgMTE2RSAxMUIxO0I0NUE7MTEwMyAxMTZFIDExQjE7CitCNDVCO0I0NUI7MTEwMyAxMTZFIDExQjI7QjQ1QjsxMTAzIDExNkUgMTFCMjsKK0I0NUM7QjQ1QzsxMTAzIDExNkUgMTFCMztCNDVDOzExMDMgMTE2RSAxMUIzOworQjQ1RDtCNDVEOzExMDMgMTE2RSAxMUI0O0I0NUQ7MTEwMyAxMTZFIDExQjQ7CitCNDVFO0I0NUU7MTEwMyAxMTZFIDExQjU7QjQ1RTsxMTAzIDExNkUgMTFCNTsKK0I0NUY7QjQ1RjsxMTAzIDExNkUgMTFCNjtCNDVGOzExMDMgMTE2RSAxMUI2OworQjQ2MDtCNDYwOzExMDMgMTE2RSAxMUI3O0I0NjA7MTEwMyAxMTZFIDExQjc7CitCNDYxO0I0NjE7MTEwMyAxMTZFIDExQjg7QjQ2MTsxMTAzIDExNkUgMTFCODsKK0I0NjI7QjQ2MjsxMTAzIDExNkUgMTFCOTtCNDYyOzExMDMgMTE2RSAxMUI5OworQjQ2MztCNDYzOzExMDMgMTE2RSAxMUJBO0I0NjM7MTEwMyAxMTZFIDExQkE7CitCNDY0O0I0NjQ7MTEwMyAxMTZFIDExQkI7QjQ2NDsxMTAzIDExNkUgMTFCQjsKK0I0NjU7QjQ2NTsxMTAzIDExNkUgMTFCQztCNDY1OzExMDMgMTE2RSAxMUJDOworQjQ2NjtCNDY2OzExMDMgMTE2RSAxMUJEO0I0NjY7MTEwMyAxMTZFIDExQkQ7CitCNDY3O0I0Njc7MTEwMyAxMTZFIDExQkU7QjQ2NzsxMTAzIDExNkUgMTFCRTsKK0I0Njg7QjQ2ODsxMTAzIDExNkUgMTFCRjtCNDY4OzExMDMgMTE2RSAxMUJGOworQjQ2OTtCNDY5OzExMDMgMTE2RSAxMUMwO0I0Njk7MTEwMyAxMTZFIDExQzA7CitCNDZBO0I0NkE7MTEwMyAxMTZFIDExQzE7QjQ2QTsxMTAzIDExNkUgMTFDMTsKK0I0NkI7QjQ2QjsxMTAzIDExNkUgMTFDMjtCNDZCOzExMDMgMTE2RSAxMUMyOworQjQ2QztCNDZDOzExMDMgMTE2RjtCNDZDOzExMDMgMTE2RjsKK0I0NkQ7QjQ2RDsxMTAzIDExNkYgMTFBODtCNDZEOzExMDMgMTE2RiAxMUE4OworQjQ2RTtCNDZFOzExMDMgMTE2RiAxMUE5O0I0NkU7MTEwMyAxMTZGIDExQTk7CitCNDZGO0I0NkY7MTEwMyAxMTZGIDExQUE7QjQ2RjsxMTAzIDExNkYgMTFBQTsKK0I0NzA7QjQ3MDsxMTAzIDExNkYgMTFBQjtCNDcwOzExMDMgMTE2RiAxMUFCOworQjQ3MTtCNDcxOzExMDMgMTE2RiAxMUFDO0I0NzE7MTEwMyAxMTZGIDExQUM7CitCNDcyO0I0NzI7MTEwMyAxMTZGIDExQUQ7QjQ3MjsxMTAzIDExNkYgMTFBRDsKK0I0NzM7QjQ3MzsxMTAzIDExNkYgMTFBRTtCNDczOzExMDMgMTE2RiAxMUFFOworQjQ3NDtCNDc0OzExMDMgMTE2RiAxMUFGO0I0NzQ7MTEwMyAxMTZGIDExQUY7CitCNDc1O0I0NzU7MTEwMyAxMTZGIDExQjA7QjQ3NTsxMTAzIDExNkYgMTFCMDsKK0I0NzY7QjQ3NjsxMTAzIDExNkYgMTFCMTtCNDc2OzExMDMgMTE2RiAxMUIxOworQjQ3NztCNDc3OzExMDMgMTE2RiAxMUIyO0I0Nzc7MTEwMyAxMTZGIDExQjI7CitCNDc4O0I0Nzg7MTEwMyAxMTZGIDExQjM7QjQ3ODsxMTAzIDExNkYgMTFCMzsKK0I0Nzk7QjQ3OTsxMTAzIDExNkYgMTFCNDtCNDc5OzExMDMgMTE2RiAxMUI0OworQjQ3QTtCNDdBOzExMDMgMTE2RiAxMUI1O0I0N0E7MTEwMyAxMTZGIDExQjU7CitCNDdCO0I0N0I7MTEwMyAxMTZGIDExQjY7QjQ3QjsxMTAzIDExNkYgMTFCNjsKK0I0N0M7QjQ3QzsxMTAzIDExNkYgMTFCNztCNDdDOzExMDMgMTE2RiAxMUI3OworQjQ3RDtCNDdEOzExMDMgMTE2RiAxMUI4O0I0N0Q7MTEwMyAxMTZGIDExQjg7CitCNDdFO0I0N0U7MTEwMyAxMTZGIDExQjk7QjQ3RTsxMTAzIDExNkYgMTFCOTsKK0I0N0Y7QjQ3RjsxMTAzIDExNkYgMTFCQTtCNDdGOzExMDMgMTE2RiAxMUJBOworQjQ4MDtCNDgwOzExMDMgMTE2RiAxMUJCO0I0ODA7MTEwMyAxMTZGIDExQkI7CitCNDgxO0I0ODE7MTEwMyAxMTZGIDExQkM7QjQ4MTsxMTAzIDExNkYgMTFCQzsKK0I0ODI7QjQ4MjsxMTAzIDExNkYgMTFCRDtCNDgyOzExMDMgMTE2RiAxMUJEOworQjQ4MztCNDgzOzExMDMgMTE2RiAxMUJFO0I0ODM7MTEwMyAxMTZGIDExQkU7CitCNDg0O0I0ODQ7MTEwMyAxMTZGIDExQkY7QjQ4NDsxMTAzIDExNkYgMTFCRjsKK0I0ODU7QjQ4NTsxMTAzIDExNkYgMTFDMDtCNDg1OzExMDMgMTE2RiAxMUMwOworQjQ4NjtCNDg2OzExMDMgMTE2RiAxMUMxO0I0ODY7MTEwMyAxMTZGIDExQzE7CitCNDg3O0I0ODc7MTEwMyAxMTZGIDExQzI7QjQ4NzsxMTAzIDExNkYgMTFDMjsKK0I0ODg7QjQ4ODsxMTAzIDExNzA7QjQ4ODsxMTAzIDExNzA7CitCNDg5O0I0ODk7MTEwMyAxMTcwIDExQTg7QjQ4OTsxMTAzIDExNzAgMTFBODsKK0I0OEE7QjQ4QTsxMTAzIDExNzAgMTFBOTtCNDhBOzExMDMgMTE3MCAxMUE5OworQjQ4QjtCNDhCOzExMDMgMTE3MCAxMUFBO0I0OEI7MTEwMyAxMTcwIDExQUE7CitCNDhDO0I0OEM7MTEwMyAxMTcwIDExQUI7QjQ4QzsxMTAzIDExNzAgMTFBQjsKK0I0OEQ7QjQ4RDsxMTAzIDExNzAgMTFBQztCNDhEOzExMDMgMTE3MCAxMUFDOworQjQ4RTtCNDhFOzExMDMgMTE3MCAxMUFEO0I0OEU7MTEwMyAxMTcwIDExQUQ7CitCNDhGO0I0OEY7MTEwMyAxMTcwIDExQUU7QjQ4RjsxMTAzIDExNzAgMTFBRTsKK0I0OTA7QjQ5MDsxMTAzIDExNzAgMTFBRjtCNDkwOzExMDMgMTE3MCAxMUFGOworQjQ5MTtCNDkxOzExMDMgMTE3MCAxMUIwO0I0OTE7MTEwMyAxMTcwIDExQjA7CitCNDkyO0I0OTI7MTEwMyAxMTcwIDExQjE7QjQ5MjsxMTAzIDExNzAgMTFCMTsKK0I0OTM7QjQ5MzsxMTAzIDExNzAgMTFCMjtCNDkzOzExMDMgMTE3MCAxMUIyOworQjQ5NDtCNDk0OzExMDMgMTE3MCAxMUIzO0I0OTQ7MTEwMyAxMTcwIDExQjM7CitCNDk1O0I0OTU7MTEwMyAxMTcwIDExQjQ7QjQ5NTsxMTAzIDExNzAgMTFCNDsKK0I0OTY7QjQ5NjsxMTAzIDExNzAgMTFCNTtCNDk2OzExMDMgMTE3MCAxMUI1OworQjQ5NztCNDk3OzExMDMgMTE3MCAxMUI2O0I0OTc7MTEwMyAxMTcwIDExQjY7CitCNDk4O0I0OTg7MTEwMyAxMTcwIDExQjc7QjQ5ODsxMTAzIDExNzAgMTFCNzsKK0I0OTk7QjQ5OTsxMTAzIDExNzAgMTFCODtCNDk5OzExMDMgMTE3MCAxMUI4OworQjQ5QTtCNDlBOzExMDMgMTE3MCAxMUI5O0I0OUE7MTEwMyAxMTcwIDExQjk7CitCNDlCO0I0OUI7MTEwMyAxMTcwIDExQkE7QjQ5QjsxMTAzIDExNzAgMTFCQTsKK0I0OUM7QjQ5QzsxMTAzIDExNzAgMTFCQjtCNDlDOzExMDMgMTE3MCAxMUJCOworQjQ5RDtCNDlEOzExMDMgMTE3MCAxMUJDO0I0OUQ7MTEwMyAxMTcwIDExQkM7CitCNDlFO0I0OUU7MTEwMyAxMTcwIDExQkQ7QjQ5RTsxMTAzIDExNzAgMTFCRDsKK0I0OUY7QjQ5RjsxMTAzIDExNzAgMTFCRTtCNDlGOzExMDMgMTE3MCAxMUJFOworQjRBMDtCNEEwOzExMDMgMTE3MCAxMUJGO0I0QTA7MTEwMyAxMTcwIDExQkY7CitCNEExO0I0QTE7MTEwMyAxMTcwIDExQzA7QjRBMTsxMTAzIDExNzAgMTFDMDsKK0I0QTI7QjRBMjsxMTAzIDExNzAgMTFDMTtCNEEyOzExMDMgMTE3MCAxMUMxOworQjRBMztCNEEzOzExMDMgMTE3MCAxMUMyO0I0QTM7MTEwMyAxMTcwIDExQzI7CitCNEE0O0I0QTQ7MTEwMyAxMTcxO0I0QTQ7MTEwMyAxMTcxOworQjRBNTtCNEE1OzExMDMgMTE3MSAxMUE4O0I0QTU7MTEwMyAxMTcxIDExQTg7CitCNEE2O0I0QTY7MTEwMyAxMTcxIDExQTk7QjRBNjsxMTAzIDExNzEgMTFBOTsKK0I0QTc7QjRBNzsxMTAzIDExNzEgMTFBQTtCNEE3OzExMDMgMTE3MSAxMUFBOworQjRBODtCNEE4OzExMDMgMTE3MSAxMUFCO0I0QTg7MTEwMyAxMTcxIDExQUI7CitCNEE5O0I0QTk7MTEwMyAxMTcxIDExQUM7QjRBOTsxMTAzIDExNzEgMTFBQzsKK0I0QUE7QjRBQTsxMTAzIDExNzEgMTFBRDtCNEFBOzExMDMgMTE3MSAxMUFEOworQjRBQjtCNEFCOzExMDMgMTE3MSAxMUFFO0I0QUI7MTEwMyAxMTcxIDExQUU7CitCNEFDO0I0QUM7MTEwMyAxMTcxIDExQUY7QjRBQzsxMTAzIDExNzEgMTFBRjsKK0I0QUQ7QjRBRDsxMTAzIDExNzEgMTFCMDtCNEFEOzExMDMgMTE3MSAxMUIwOworQjRBRTtCNEFFOzExMDMgMTE3MSAxMUIxO0I0QUU7MTEwMyAxMTcxIDExQjE7CitCNEFGO0I0QUY7MTEwMyAxMTcxIDExQjI7QjRBRjsxMTAzIDExNzEgMTFCMjsKK0I0QjA7QjRCMDsxMTAzIDExNzEgMTFCMztCNEIwOzExMDMgMTE3MSAxMUIzOworQjRCMTtCNEIxOzExMDMgMTE3MSAxMUI0O0I0QjE7MTEwMyAxMTcxIDExQjQ7CitCNEIyO0I0QjI7MTEwMyAxMTcxIDExQjU7QjRCMjsxMTAzIDExNzEgMTFCNTsKK0I0QjM7QjRCMzsxMTAzIDExNzEgMTFCNjtCNEIzOzExMDMgMTE3MSAxMUI2OworQjRCNDtCNEI0OzExMDMgMTE3MSAxMUI3O0I0QjQ7MTEwMyAxMTcxIDExQjc7CitCNEI1O0I0QjU7MTEwMyAxMTcxIDExQjg7QjRCNTsxMTAzIDExNzEgMTFCODsKK0I0QjY7QjRCNjsxMTAzIDExNzEgMTFCOTtCNEI2OzExMDMgMTE3MSAxMUI5OworQjRCNztCNEI3OzExMDMgMTE3MSAxMUJBO0I0Qjc7MTEwMyAxMTcxIDExQkE7CitCNEI4O0I0Qjg7MTEwMyAxMTcxIDExQkI7QjRCODsxMTAzIDExNzEgMTFCQjsKK0I0Qjk7QjRCOTsxMTAzIDExNzEgMTFCQztCNEI5OzExMDMgMTE3MSAxMUJDOworQjRCQTtCNEJBOzExMDMgMTE3MSAxMUJEO0I0QkE7MTEwMyAxMTcxIDExQkQ7CitCNEJCO0I0QkI7MTEwMyAxMTcxIDExQkU7QjRCQjsxMTAzIDExNzEgMTFCRTsKK0I0QkM7QjRCQzsxMTAzIDExNzEgMTFCRjtCNEJDOzExMDMgMTE3MSAxMUJGOworQjRCRDtCNEJEOzExMDMgMTE3MSAxMUMwO0I0QkQ7MTEwMyAxMTcxIDExQzA7CitCNEJFO0I0QkU7MTEwMyAxMTcxIDExQzE7QjRCRTsxMTAzIDExNzEgMTFDMTsKK0I0QkY7QjRCRjsxMTAzIDExNzEgMTFDMjtCNEJGOzExMDMgMTE3MSAxMUMyOworQjRDMDtCNEMwOzExMDMgMTE3MjtCNEMwOzExMDMgMTE3MjsKK0I0QzE7QjRDMTsxMTAzIDExNzIgMTFBODtCNEMxOzExMDMgMTE3MiAxMUE4OworQjRDMjtCNEMyOzExMDMgMTE3MiAxMUE5O0I0QzI7MTEwMyAxMTcyIDExQTk7CitCNEMzO0I0QzM7MTEwMyAxMTcyIDExQUE7QjRDMzsxMTAzIDExNzIgMTFBQTsKK0I0QzQ7QjRDNDsxMTAzIDExNzIgMTFBQjtCNEM0OzExMDMgMTE3MiAxMUFCOworQjRDNTtCNEM1OzExMDMgMTE3MiAxMUFDO0I0QzU7MTEwMyAxMTcyIDExQUM7CitCNEM2O0I0QzY7MTEwMyAxMTcyIDExQUQ7QjRDNjsxMTAzIDExNzIgMTFBRDsKK0I0Qzc7QjRDNzsxMTAzIDExNzIgMTFBRTtCNEM3OzExMDMgMTE3MiAxMUFFOworQjRDODtCNEM4OzExMDMgMTE3MiAxMUFGO0I0Qzg7MTEwMyAxMTcyIDExQUY7CitCNEM5O0I0Qzk7MTEwMyAxMTcyIDExQjA7QjRDOTsxMTAzIDExNzIgMTFCMDsKK0I0Q0E7QjRDQTsxMTAzIDExNzIgMTFCMTtCNENBOzExMDMgMTE3MiAxMUIxOworQjRDQjtCNENCOzExMDMgMTE3MiAxMUIyO0I0Q0I7MTEwMyAxMTcyIDExQjI7CitCNENDO0I0Q0M7MTEwMyAxMTcyIDExQjM7QjRDQzsxMTAzIDExNzIgMTFCMzsKK0I0Q0Q7QjRDRDsxMTAzIDExNzIgMTFCNDtCNENEOzExMDMgMTE3MiAxMUI0OworQjRDRTtCNENFOzExMDMgMTE3MiAxMUI1O0I0Q0U7MTEwMyAxMTcyIDExQjU7CitCNENGO0I0Q0Y7MTEwMyAxMTcyIDExQjY7QjRDRjsxMTAzIDExNzIgMTFCNjsKK0I0RDA7QjREMDsxMTAzIDExNzIgMTFCNztCNEQwOzExMDMgMTE3MiAxMUI3OworQjREMTtCNEQxOzExMDMgMTE3MiAxMUI4O0I0RDE7MTEwMyAxMTcyIDExQjg7CitCNEQyO0I0RDI7MTEwMyAxMTcyIDExQjk7QjREMjsxMTAzIDExNzIgMTFCOTsKK0I0RDM7QjREMzsxMTAzIDExNzIgMTFCQTtCNEQzOzExMDMgMTE3MiAxMUJBOworQjRENDtCNEQ0OzExMDMgMTE3MiAxMUJCO0I0RDQ7MTEwMyAxMTcyIDExQkI7CitCNEQ1O0I0RDU7MTEwMyAxMTcyIDExQkM7QjRENTsxMTAzIDExNzIgMTFCQzsKK0I0RDY7QjRENjsxMTAzIDExNzIgMTFCRDtCNEQ2OzExMDMgMTE3MiAxMUJEOworQjRENztCNEQ3OzExMDMgMTE3MiAxMUJFO0I0RDc7MTEwMyAxMTcyIDExQkU7CitCNEQ4O0I0RDg7MTEwMyAxMTcyIDExQkY7QjREODsxMTAzIDExNzIgMTFCRjsKK0I0RDk7QjREOTsxMTAzIDExNzIgMTFDMDtCNEQ5OzExMDMgMTE3MiAxMUMwOworQjREQTtCNERBOzExMDMgMTE3MiAxMUMxO0I0REE7MTEwMyAxMTcyIDExQzE7CitCNERCO0I0REI7MTEwMyAxMTcyIDExQzI7QjREQjsxMTAzIDExNzIgMTFDMjsKK0I0REM7QjREQzsxMTAzIDExNzM7QjREQzsxMTAzIDExNzM7CitCNEREO0I0REQ7MTEwMyAxMTczIDExQTg7QjRERDsxMTAzIDExNzMgMTFBODsKK0I0REU7QjRERTsxMTAzIDExNzMgMTFBOTtCNERFOzExMDMgMTE3MyAxMUE5OworQjRERjtCNERGOzExMDMgMTE3MyAxMUFBO0I0REY7MTEwMyAxMTczIDExQUE7CitCNEUwO0I0RTA7MTEwMyAxMTczIDExQUI7QjRFMDsxMTAzIDExNzMgMTFBQjsKK0I0RTE7QjRFMTsxMTAzIDExNzMgMTFBQztCNEUxOzExMDMgMTE3MyAxMUFDOworQjRFMjtCNEUyOzExMDMgMTE3MyAxMUFEO0I0RTI7MTEwMyAxMTczIDExQUQ7CitCNEUzO0I0RTM7MTEwMyAxMTczIDExQUU7QjRFMzsxMTAzIDExNzMgMTFBRTsKK0I0RTQ7QjRFNDsxMTAzIDExNzMgMTFBRjtCNEU0OzExMDMgMTE3MyAxMUFGOworQjRFNTtCNEU1OzExMDMgMTE3MyAxMUIwO0I0RTU7MTEwMyAxMTczIDExQjA7CitCNEU2O0I0RTY7MTEwMyAxMTczIDExQjE7QjRFNjsxMTAzIDExNzMgMTFCMTsKK0I0RTc7QjRFNzsxMTAzIDExNzMgMTFCMjtCNEU3OzExMDMgMTE3MyAxMUIyOworQjRFODtCNEU4OzExMDMgMTE3MyAxMUIzO0I0RTg7MTEwMyAxMTczIDExQjM7CitCNEU5O0I0RTk7MTEwMyAxMTczIDExQjQ7QjRFOTsxMTAzIDExNzMgMTFCNDsKK0I0RUE7QjRFQTsxMTAzIDExNzMgMTFCNTtCNEVBOzExMDMgMTE3MyAxMUI1OworQjRFQjtCNEVCOzExMDMgMTE3MyAxMUI2O0I0RUI7MTEwMyAxMTczIDExQjY7CitCNEVDO0I0RUM7MTEwMyAxMTczIDExQjc7QjRFQzsxMTAzIDExNzMgMTFCNzsKK0I0RUQ7QjRFRDsxMTAzIDExNzMgMTFCODtCNEVEOzExMDMgMTE3MyAxMUI4OworQjRFRTtCNEVFOzExMDMgMTE3MyAxMUI5O0I0RUU7MTEwMyAxMTczIDExQjk7CitCNEVGO0I0RUY7MTEwMyAxMTczIDExQkE7QjRFRjsxMTAzIDExNzMgMTFCQTsKK0I0RjA7QjRGMDsxMTAzIDExNzMgMTFCQjtCNEYwOzExMDMgMTE3MyAxMUJCOworQjRGMTtCNEYxOzExMDMgMTE3MyAxMUJDO0I0RjE7MTEwMyAxMTczIDExQkM7CitCNEYyO0I0RjI7MTEwMyAxMTczIDExQkQ7QjRGMjsxMTAzIDExNzMgMTFCRDsKK0I0RjM7QjRGMzsxMTAzIDExNzMgMTFCRTtCNEYzOzExMDMgMTE3MyAxMUJFOworQjRGNDtCNEY0OzExMDMgMTE3MyAxMUJGO0I0RjQ7MTEwMyAxMTczIDExQkY7CitCNEY1O0I0RjU7MTEwMyAxMTczIDExQzA7QjRGNTsxMTAzIDExNzMgMTFDMDsKK0I0RjY7QjRGNjsxMTAzIDExNzMgMTFDMTtCNEY2OzExMDMgMTE3MyAxMUMxOworQjRGNztCNEY3OzExMDMgMTE3MyAxMUMyO0I0Rjc7MTEwMyAxMTczIDExQzI7CitCNEY4O0I0Rjg7MTEwMyAxMTc0O0I0Rjg7MTEwMyAxMTc0OworQjRGOTtCNEY5OzExMDMgMTE3NCAxMUE4O0I0Rjk7MTEwMyAxMTc0IDExQTg7CitCNEZBO0I0RkE7MTEwMyAxMTc0IDExQTk7QjRGQTsxMTAzIDExNzQgMTFBOTsKK0I0RkI7QjRGQjsxMTAzIDExNzQgMTFBQTtCNEZCOzExMDMgMTE3NCAxMUFBOworQjRGQztCNEZDOzExMDMgMTE3NCAxMUFCO0I0RkM7MTEwMyAxMTc0IDExQUI7CitCNEZEO0I0RkQ7MTEwMyAxMTc0IDExQUM7QjRGRDsxMTAzIDExNzQgMTFBQzsKK0I0RkU7QjRGRTsxMTAzIDExNzQgMTFBRDtCNEZFOzExMDMgMTE3NCAxMUFEOworQjRGRjtCNEZGOzExMDMgMTE3NCAxMUFFO0I0RkY7MTEwMyAxMTc0IDExQUU7CitCNTAwO0I1MDA7MTEwMyAxMTc0IDExQUY7QjUwMDsxMTAzIDExNzQgMTFBRjsKK0I1MDE7QjUwMTsxMTAzIDExNzQgMTFCMDtCNTAxOzExMDMgMTE3NCAxMUIwOworQjUwMjtCNTAyOzExMDMgMTE3NCAxMUIxO0I1MDI7MTEwMyAxMTc0IDExQjE7CitCNTAzO0I1MDM7MTEwMyAxMTc0IDExQjI7QjUwMzsxMTAzIDExNzQgMTFCMjsKK0I1MDQ7QjUwNDsxMTAzIDExNzQgMTFCMztCNTA0OzExMDMgMTE3NCAxMUIzOworQjUwNTtCNTA1OzExMDMgMTE3NCAxMUI0O0I1MDU7MTEwMyAxMTc0IDExQjQ7CitCNTA2O0I1MDY7MTEwMyAxMTc0IDExQjU7QjUwNjsxMTAzIDExNzQgMTFCNTsKK0I1MDc7QjUwNzsxMTAzIDExNzQgMTFCNjtCNTA3OzExMDMgMTE3NCAxMUI2OworQjUwODtCNTA4OzExMDMgMTE3NCAxMUI3O0I1MDg7MTEwMyAxMTc0IDExQjc7CitCNTA5O0I1MDk7MTEwMyAxMTc0IDExQjg7QjUwOTsxMTAzIDExNzQgMTFCODsKK0I1MEE7QjUwQTsxMTAzIDExNzQgMTFCOTtCNTBBOzExMDMgMTE3NCAxMUI5OworQjUwQjtCNTBCOzExMDMgMTE3NCAxMUJBO0I1MEI7MTEwMyAxMTc0IDExQkE7CitCNTBDO0I1MEM7MTEwMyAxMTc0IDExQkI7QjUwQzsxMTAzIDExNzQgMTFCQjsKK0I1MEQ7QjUwRDsxMTAzIDExNzQgMTFCQztCNTBEOzExMDMgMTE3NCAxMUJDOworQjUwRTtCNTBFOzExMDMgMTE3NCAxMUJEO0I1MEU7MTEwMyAxMTc0IDExQkQ7CitCNTBGO0I1MEY7MTEwMyAxMTc0IDExQkU7QjUwRjsxMTAzIDExNzQgMTFCRTsKK0I1MTA7QjUxMDsxMTAzIDExNzQgMTFCRjtCNTEwOzExMDMgMTE3NCAxMUJGOworQjUxMTtCNTExOzExMDMgMTE3NCAxMUMwO0I1MTE7MTEwMyAxMTc0IDExQzA7CitCNTEyO0I1MTI7MTEwMyAxMTc0IDExQzE7QjUxMjsxMTAzIDExNzQgMTFDMTsKK0I1MTM7QjUxMzsxMTAzIDExNzQgMTFDMjtCNTEzOzExMDMgMTE3NCAxMUMyOworQjUxNDtCNTE0OzExMDMgMTE3NTtCNTE0OzExMDMgMTE3NTsKK0I1MTU7QjUxNTsxMTAzIDExNzUgMTFBODtCNTE1OzExMDMgMTE3NSAxMUE4OworQjUxNjtCNTE2OzExMDMgMTE3NSAxMUE5O0I1MTY7MTEwMyAxMTc1IDExQTk7CitCNTE3O0I1MTc7MTEwMyAxMTc1IDExQUE7QjUxNzsxMTAzIDExNzUgMTFBQTsKK0I1MTg7QjUxODsxMTAzIDExNzUgMTFBQjtCNTE4OzExMDMgMTE3NSAxMUFCOworQjUxOTtCNTE5OzExMDMgMTE3NSAxMUFDO0I1MTk7MTEwMyAxMTc1IDExQUM7CitCNTFBO0I1MUE7MTEwMyAxMTc1IDExQUQ7QjUxQTsxMTAzIDExNzUgMTFBRDsKK0I1MUI7QjUxQjsxMTAzIDExNzUgMTFBRTtCNTFCOzExMDMgMTE3NSAxMUFFOworQjUxQztCNTFDOzExMDMgMTE3NSAxMUFGO0I1MUM7MTEwMyAxMTc1IDExQUY7CitCNTFEO0I1MUQ7MTEwMyAxMTc1IDExQjA7QjUxRDsxMTAzIDExNzUgMTFCMDsKK0I1MUU7QjUxRTsxMTAzIDExNzUgMTFCMTtCNTFFOzExMDMgMTE3NSAxMUIxOworQjUxRjtCNTFGOzExMDMgMTE3NSAxMUIyO0I1MUY7MTEwMyAxMTc1IDExQjI7CitCNTIwO0I1MjA7MTEwMyAxMTc1IDExQjM7QjUyMDsxMTAzIDExNzUgMTFCMzsKK0I1MjE7QjUyMTsxMTAzIDExNzUgMTFCNDtCNTIxOzExMDMgMTE3NSAxMUI0OworQjUyMjtCNTIyOzExMDMgMTE3NSAxMUI1O0I1MjI7MTEwMyAxMTc1IDExQjU7CitCNTIzO0I1MjM7MTEwMyAxMTc1IDExQjY7QjUyMzsxMTAzIDExNzUgMTFCNjsKK0I1MjQ7QjUyNDsxMTAzIDExNzUgMTFCNztCNTI0OzExMDMgMTE3NSAxMUI3OworQjUyNTtCNTI1OzExMDMgMTE3NSAxMUI4O0I1MjU7MTEwMyAxMTc1IDExQjg7CitCNTI2O0I1MjY7MTEwMyAxMTc1IDExQjk7QjUyNjsxMTAzIDExNzUgMTFCOTsKK0I1Mjc7QjUyNzsxMTAzIDExNzUgMTFCQTtCNTI3OzExMDMgMTE3NSAxMUJBOworQjUyODtCNTI4OzExMDMgMTE3NSAxMUJCO0I1Mjg7MTEwMyAxMTc1IDExQkI7CitCNTI5O0I1Mjk7MTEwMyAxMTc1IDExQkM7QjUyOTsxMTAzIDExNzUgMTFCQzsKK0I1MkE7QjUyQTsxMTAzIDExNzUgMTFCRDtCNTJBOzExMDMgMTE3NSAxMUJEOworQjUyQjtCNTJCOzExMDMgMTE3NSAxMUJFO0I1MkI7MTEwMyAxMTc1IDExQkU7CitCNTJDO0I1MkM7MTEwMyAxMTc1IDExQkY7QjUyQzsxMTAzIDExNzUgMTFCRjsKK0I1MkQ7QjUyRDsxMTAzIDExNzUgMTFDMDtCNTJEOzExMDMgMTE3NSAxMUMwOworQjUyRTtCNTJFOzExMDMgMTE3NSAxMUMxO0I1MkU7MTEwMyAxMTc1IDExQzE7CitCNTJGO0I1MkY7MTEwMyAxMTc1IDExQzI7QjUyRjsxMTAzIDExNzUgMTFDMjsKK0I1MzA7QjUzMDsxMTA0IDExNjE7QjUzMDsxMTA0IDExNjE7CitCNTMxO0I1MzE7MTEwNCAxMTYxIDExQTg7QjUzMTsxMTA0IDExNjEgMTFBODsKK0I1MzI7QjUzMjsxMTA0IDExNjEgMTFBOTtCNTMyOzExMDQgMTE2MSAxMUE5OworQjUzMztCNTMzOzExMDQgMTE2MSAxMUFBO0I1MzM7MTEwNCAxMTYxIDExQUE7CitCNTM0O0I1MzQ7MTEwNCAxMTYxIDExQUI7QjUzNDsxMTA0IDExNjEgMTFBQjsKK0I1MzU7QjUzNTsxMTA0IDExNjEgMTFBQztCNTM1OzExMDQgMTE2MSAxMUFDOworQjUzNjtCNTM2OzExMDQgMTE2MSAxMUFEO0I1MzY7MTEwNCAxMTYxIDExQUQ7CitCNTM3O0I1Mzc7MTEwNCAxMTYxIDExQUU7QjUzNzsxMTA0IDExNjEgMTFBRTsKK0I1Mzg7QjUzODsxMTA0IDExNjEgMTFBRjtCNTM4OzExMDQgMTE2MSAxMUFGOworQjUzOTtCNTM5OzExMDQgMTE2MSAxMUIwO0I1Mzk7MTEwNCAxMTYxIDExQjA7CitCNTNBO0I1M0E7MTEwNCAxMTYxIDExQjE7QjUzQTsxMTA0IDExNjEgMTFCMTsKK0I1M0I7QjUzQjsxMTA0IDExNjEgMTFCMjtCNTNCOzExMDQgMTE2MSAxMUIyOworQjUzQztCNTNDOzExMDQgMTE2MSAxMUIzO0I1M0M7MTEwNCAxMTYxIDExQjM7CitCNTNEO0I1M0Q7MTEwNCAxMTYxIDExQjQ7QjUzRDsxMTA0IDExNjEgMTFCNDsKK0I1M0U7QjUzRTsxMTA0IDExNjEgMTFCNTtCNTNFOzExMDQgMTE2MSAxMUI1OworQjUzRjtCNTNGOzExMDQgMTE2MSAxMUI2O0I1M0Y7MTEwNCAxMTYxIDExQjY7CitCNTQwO0I1NDA7MTEwNCAxMTYxIDExQjc7QjU0MDsxMTA0IDExNjEgMTFCNzsKK0I1NDE7QjU0MTsxMTA0IDExNjEgMTFCODtCNTQxOzExMDQgMTE2MSAxMUI4OworQjU0MjtCNTQyOzExMDQgMTE2MSAxMUI5O0I1NDI7MTEwNCAxMTYxIDExQjk7CitCNTQzO0I1NDM7MTEwNCAxMTYxIDExQkE7QjU0MzsxMTA0IDExNjEgMTFCQTsKK0I1NDQ7QjU0NDsxMTA0IDExNjEgMTFCQjtCNTQ0OzExMDQgMTE2MSAxMUJCOworQjU0NTtCNTQ1OzExMDQgMTE2MSAxMUJDO0I1NDU7MTEwNCAxMTYxIDExQkM7CitCNTQ2O0I1NDY7MTEwNCAxMTYxIDExQkQ7QjU0NjsxMTA0IDExNjEgMTFCRDsKK0I1NDc7QjU0NzsxMTA0IDExNjEgMTFCRTtCNTQ3OzExMDQgMTE2MSAxMUJFOworQjU0ODtCNTQ4OzExMDQgMTE2MSAxMUJGO0I1NDg7MTEwNCAxMTYxIDExQkY7CitCNTQ5O0I1NDk7MTEwNCAxMTYxIDExQzA7QjU0OTsxMTA0IDExNjEgMTFDMDsKK0I1NEE7QjU0QTsxMTA0IDExNjEgMTFDMTtCNTRBOzExMDQgMTE2MSAxMUMxOworQjU0QjtCNTRCOzExMDQgMTE2MSAxMUMyO0I1NEI7MTEwNCAxMTYxIDExQzI7CitCNTRDO0I1NEM7MTEwNCAxMTYyO0I1NEM7MTEwNCAxMTYyOworQjU0RDtCNTREOzExMDQgMTE2MiAxMUE4O0I1NEQ7MTEwNCAxMTYyIDExQTg7CitCNTRFO0I1NEU7MTEwNCAxMTYyIDExQTk7QjU0RTsxMTA0IDExNjIgMTFBOTsKK0I1NEY7QjU0RjsxMTA0IDExNjIgMTFBQTtCNTRGOzExMDQgMTE2MiAxMUFBOworQjU1MDtCNTUwOzExMDQgMTE2MiAxMUFCO0I1NTA7MTEwNCAxMTYyIDExQUI7CitCNTUxO0I1NTE7MTEwNCAxMTYyIDExQUM7QjU1MTsxMTA0IDExNjIgMTFBQzsKK0I1NTI7QjU1MjsxMTA0IDExNjIgMTFBRDtCNTUyOzExMDQgMTE2MiAxMUFEOworQjU1MztCNTUzOzExMDQgMTE2MiAxMUFFO0I1NTM7MTEwNCAxMTYyIDExQUU7CitCNTU0O0I1NTQ7MTEwNCAxMTYyIDExQUY7QjU1NDsxMTA0IDExNjIgMTFBRjsKK0I1NTU7QjU1NTsxMTA0IDExNjIgMTFCMDtCNTU1OzExMDQgMTE2MiAxMUIwOworQjU1NjtCNTU2OzExMDQgMTE2MiAxMUIxO0I1NTY7MTEwNCAxMTYyIDExQjE7CitCNTU3O0I1NTc7MTEwNCAxMTYyIDExQjI7QjU1NzsxMTA0IDExNjIgMTFCMjsKK0I1NTg7QjU1ODsxMTA0IDExNjIgMTFCMztCNTU4OzExMDQgMTE2MiAxMUIzOworQjU1OTtCNTU5OzExMDQgMTE2MiAxMUI0O0I1NTk7MTEwNCAxMTYyIDExQjQ7CitCNTVBO0I1NUE7MTEwNCAxMTYyIDExQjU7QjU1QTsxMTA0IDExNjIgMTFCNTsKK0I1NUI7QjU1QjsxMTA0IDExNjIgMTFCNjtCNTVCOzExMDQgMTE2MiAxMUI2OworQjU1QztCNTVDOzExMDQgMTE2MiAxMUI3O0I1NUM7MTEwNCAxMTYyIDExQjc7CitCNTVEO0I1NUQ7MTEwNCAxMTYyIDExQjg7QjU1RDsxMTA0IDExNjIgMTFCODsKK0I1NUU7QjU1RTsxMTA0IDExNjIgMTFCOTtCNTVFOzExMDQgMTE2MiAxMUI5OworQjU1RjtCNTVGOzExMDQgMTE2MiAxMUJBO0I1NUY7MTEwNCAxMTYyIDExQkE7CitCNTYwO0I1NjA7MTEwNCAxMTYyIDExQkI7QjU2MDsxMTA0IDExNjIgMTFCQjsKK0I1NjE7QjU2MTsxMTA0IDExNjIgMTFCQztCNTYxOzExMDQgMTE2MiAxMUJDOworQjU2MjtCNTYyOzExMDQgMTE2MiAxMUJEO0I1NjI7MTEwNCAxMTYyIDExQkQ7CitCNTYzO0I1NjM7MTEwNCAxMTYyIDExQkU7QjU2MzsxMTA0IDExNjIgMTFCRTsKK0I1NjQ7QjU2NDsxMTA0IDExNjIgMTFCRjtCNTY0OzExMDQgMTE2MiAxMUJGOworQjU2NTtCNTY1OzExMDQgMTE2MiAxMUMwO0I1NjU7MTEwNCAxMTYyIDExQzA7CitCNTY2O0I1NjY7MTEwNCAxMTYyIDExQzE7QjU2NjsxMTA0IDExNjIgMTFDMTsKK0I1Njc7QjU2NzsxMTA0IDExNjIgMTFDMjtCNTY3OzExMDQgMTE2MiAxMUMyOworQjU2ODtCNTY4OzExMDQgMTE2MztCNTY4OzExMDQgMTE2MzsKK0I1Njk7QjU2OTsxMTA0IDExNjMgMTFBODtCNTY5OzExMDQgMTE2MyAxMUE4OworQjU2QTtCNTZBOzExMDQgMTE2MyAxMUE5O0I1NkE7MTEwNCAxMTYzIDExQTk7CitCNTZCO0I1NkI7MTEwNCAxMTYzIDExQUE7QjU2QjsxMTA0IDExNjMgMTFBQTsKK0I1NkM7QjU2QzsxMTA0IDExNjMgMTFBQjtCNTZDOzExMDQgMTE2MyAxMUFCOworQjU2RDtCNTZEOzExMDQgMTE2MyAxMUFDO0I1NkQ7MTEwNCAxMTYzIDExQUM7CitCNTZFO0I1NkU7MTEwNCAxMTYzIDExQUQ7QjU2RTsxMTA0IDExNjMgMTFBRDsKK0I1NkY7QjU2RjsxMTA0IDExNjMgMTFBRTtCNTZGOzExMDQgMTE2MyAxMUFFOworQjU3MDtCNTcwOzExMDQgMTE2MyAxMUFGO0I1NzA7MTEwNCAxMTYzIDExQUY7CitCNTcxO0I1NzE7MTEwNCAxMTYzIDExQjA7QjU3MTsxMTA0IDExNjMgMTFCMDsKK0I1NzI7QjU3MjsxMTA0IDExNjMgMTFCMTtCNTcyOzExMDQgMTE2MyAxMUIxOworQjU3MztCNTczOzExMDQgMTE2MyAxMUIyO0I1NzM7MTEwNCAxMTYzIDExQjI7CitCNTc0O0I1NzQ7MTEwNCAxMTYzIDExQjM7QjU3NDsxMTA0IDExNjMgMTFCMzsKK0I1NzU7QjU3NTsxMTA0IDExNjMgMTFCNDtCNTc1OzExMDQgMTE2MyAxMUI0OworQjU3NjtCNTc2OzExMDQgMTE2MyAxMUI1O0I1NzY7MTEwNCAxMTYzIDExQjU7CitCNTc3O0I1Nzc7MTEwNCAxMTYzIDExQjY7QjU3NzsxMTA0IDExNjMgMTFCNjsKK0I1Nzg7QjU3ODsxMTA0IDExNjMgMTFCNztCNTc4OzExMDQgMTE2MyAxMUI3OworQjU3OTtCNTc5OzExMDQgMTE2MyAxMUI4O0I1Nzk7MTEwNCAxMTYzIDExQjg7CitCNTdBO0I1N0E7MTEwNCAxMTYzIDExQjk7QjU3QTsxMTA0IDExNjMgMTFCOTsKK0I1N0I7QjU3QjsxMTA0IDExNjMgMTFCQTtCNTdCOzExMDQgMTE2MyAxMUJBOworQjU3QztCNTdDOzExMDQgMTE2MyAxMUJCO0I1N0M7MTEwNCAxMTYzIDExQkI7CitCNTdEO0I1N0Q7MTEwNCAxMTYzIDExQkM7QjU3RDsxMTA0IDExNjMgMTFCQzsKK0I1N0U7QjU3RTsxMTA0IDExNjMgMTFCRDtCNTdFOzExMDQgMTE2MyAxMUJEOworQjU3RjtCNTdGOzExMDQgMTE2MyAxMUJFO0I1N0Y7MTEwNCAxMTYzIDExQkU7CitCNTgwO0I1ODA7MTEwNCAxMTYzIDExQkY7QjU4MDsxMTA0IDExNjMgMTFCRjsKK0I1ODE7QjU4MTsxMTA0IDExNjMgMTFDMDtCNTgxOzExMDQgMTE2MyAxMUMwOworQjU4MjtCNTgyOzExMDQgMTE2MyAxMUMxO0I1ODI7MTEwNCAxMTYzIDExQzE7CitCNTgzO0I1ODM7MTEwNCAxMTYzIDExQzI7QjU4MzsxMTA0IDExNjMgMTFDMjsKK0I1ODQ7QjU4NDsxMTA0IDExNjQ7QjU4NDsxMTA0IDExNjQ7CitCNTg1O0I1ODU7MTEwNCAxMTY0IDExQTg7QjU4NTsxMTA0IDExNjQgMTFBODsKK0I1ODY7QjU4NjsxMTA0IDExNjQgMTFBOTtCNTg2OzExMDQgMTE2NCAxMUE5OworQjU4NztCNTg3OzExMDQgMTE2NCAxMUFBO0I1ODc7MTEwNCAxMTY0IDExQUE7CitCNTg4O0I1ODg7MTEwNCAxMTY0IDExQUI7QjU4ODsxMTA0IDExNjQgMTFBQjsKK0I1ODk7QjU4OTsxMTA0IDExNjQgMTFBQztCNTg5OzExMDQgMTE2NCAxMUFDOworQjU4QTtCNThBOzExMDQgMTE2NCAxMUFEO0I1OEE7MTEwNCAxMTY0IDExQUQ7CitCNThCO0I1OEI7MTEwNCAxMTY0IDExQUU7QjU4QjsxMTA0IDExNjQgMTFBRTsKK0I1OEM7QjU4QzsxMTA0IDExNjQgMTFBRjtCNThDOzExMDQgMTE2NCAxMUFGOworQjU4RDtCNThEOzExMDQgMTE2NCAxMUIwO0I1OEQ7MTEwNCAxMTY0IDExQjA7CitCNThFO0I1OEU7MTEwNCAxMTY0IDExQjE7QjU4RTsxMTA0IDExNjQgMTFCMTsKK0I1OEY7QjU4RjsxMTA0IDExNjQgMTFCMjtCNThGOzExMDQgMTE2NCAxMUIyOworQjU5MDtCNTkwOzExMDQgMTE2NCAxMUIzO0I1OTA7MTEwNCAxMTY0IDExQjM7CitCNTkxO0I1OTE7MTEwNCAxMTY0IDExQjQ7QjU5MTsxMTA0IDExNjQgMTFCNDsKK0I1OTI7QjU5MjsxMTA0IDExNjQgMTFCNTtCNTkyOzExMDQgMTE2NCAxMUI1OworQjU5MztCNTkzOzExMDQgMTE2NCAxMUI2O0I1OTM7MTEwNCAxMTY0IDExQjY7CitCNTk0O0I1OTQ7MTEwNCAxMTY0IDExQjc7QjU5NDsxMTA0IDExNjQgMTFCNzsKK0I1OTU7QjU5NTsxMTA0IDExNjQgMTFCODtCNTk1OzExMDQgMTE2NCAxMUI4OworQjU5NjtCNTk2OzExMDQgMTE2NCAxMUI5O0I1OTY7MTEwNCAxMTY0IDExQjk7CitCNTk3O0I1OTc7MTEwNCAxMTY0IDExQkE7QjU5NzsxMTA0IDExNjQgMTFCQTsKK0I1OTg7QjU5ODsxMTA0IDExNjQgMTFCQjtCNTk4OzExMDQgMTE2NCAxMUJCOworQjU5OTtCNTk5OzExMDQgMTE2NCAxMUJDO0I1OTk7MTEwNCAxMTY0IDExQkM7CitCNTlBO0I1OUE7MTEwNCAxMTY0IDExQkQ7QjU5QTsxMTA0IDExNjQgMTFCRDsKK0I1OUI7QjU5QjsxMTA0IDExNjQgMTFCRTtCNTlCOzExMDQgMTE2NCAxMUJFOworQjU5QztCNTlDOzExMDQgMTE2NCAxMUJGO0I1OUM7MTEwNCAxMTY0IDExQkY7CitCNTlEO0I1OUQ7MTEwNCAxMTY0IDExQzA7QjU5RDsxMTA0IDExNjQgMTFDMDsKK0I1OUU7QjU5RTsxMTA0IDExNjQgMTFDMTtCNTlFOzExMDQgMTE2NCAxMUMxOworQjU5RjtCNTlGOzExMDQgMTE2NCAxMUMyO0I1OUY7MTEwNCAxMTY0IDExQzI7CitCNUEwO0I1QTA7MTEwNCAxMTY1O0I1QTA7MTEwNCAxMTY1OworQjVBMTtCNUExOzExMDQgMTE2NSAxMUE4O0I1QTE7MTEwNCAxMTY1IDExQTg7CitCNUEyO0I1QTI7MTEwNCAxMTY1IDExQTk7QjVBMjsxMTA0IDExNjUgMTFBOTsKK0I1QTM7QjVBMzsxMTA0IDExNjUgMTFBQTtCNUEzOzExMDQgMTE2NSAxMUFBOworQjVBNDtCNUE0OzExMDQgMTE2NSAxMUFCO0I1QTQ7MTEwNCAxMTY1IDExQUI7CitCNUE1O0I1QTU7MTEwNCAxMTY1IDExQUM7QjVBNTsxMTA0IDExNjUgMTFBQzsKK0I1QTY7QjVBNjsxMTA0IDExNjUgMTFBRDtCNUE2OzExMDQgMTE2NSAxMUFEOworQjVBNztCNUE3OzExMDQgMTE2NSAxMUFFO0I1QTc7MTEwNCAxMTY1IDExQUU7CitCNUE4O0I1QTg7MTEwNCAxMTY1IDExQUY7QjVBODsxMTA0IDExNjUgMTFBRjsKK0I1QTk7QjVBOTsxMTA0IDExNjUgMTFCMDtCNUE5OzExMDQgMTE2NSAxMUIwOworQjVBQTtCNUFBOzExMDQgMTE2NSAxMUIxO0I1QUE7MTEwNCAxMTY1IDExQjE7CitCNUFCO0I1QUI7MTEwNCAxMTY1IDExQjI7QjVBQjsxMTA0IDExNjUgMTFCMjsKK0I1QUM7QjVBQzsxMTA0IDExNjUgMTFCMztCNUFDOzExMDQgMTE2NSAxMUIzOworQjVBRDtCNUFEOzExMDQgMTE2NSAxMUI0O0I1QUQ7MTEwNCAxMTY1IDExQjQ7CitCNUFFO0I1QUU7MTEwNCAxMTY1IDExQjU7QjVBRTsxMTA0IDExNjUgMTFCNTsKK0I1QUY7QjVBRjsxMTA0IDExNjUgMTFCNjtCNUFGOzExMDQgMTE2NSAxMUI2OworQjVCMDtCNUIwOzExMDQgMTE2NSAxMUI3O0I1QjA7MTEwNCAxMTY1IDExQjc7CitCNUIxO0I1QjE7MTEwNCAxMTY1IDExQjg7QjVCMTsxMTA0IDExNjUgMTFCODsKK0I1QjI7QjVCMjsxMTA0IDExNjUgMTFCOTtCNUIyOzExMDQgMTE2NSAxMUI5OworQjVCMztCNUIzOzExMDQgMTE2NSAxMUJBO0I1QjM7MTEwNCAxMTY1IDExQkE7CitCNUI0O0I1QjQ7MTEwNCAxMTY1IDExQkI7QjVCNDsxMTA0IDExNjUgMTFCQjsKK0I1QjU7QjVCNTsxMTA0IDExNjUgMTFCQztCNUI1OzExMDQgMTE2NSAxMUJDOworQjVCNjtCNUI2OzExMDQgMTE2NSAxMUJEO0I1QjY7MTEwNCAxMTY1IDExQkQ7CitCNUI3O0I1Qjc7MTEwNCAxMTY1IDExQkU7QjVCNzsxMTA0IDExNjUgMTFCRTsKK0I1Qjg7QjVCODsxMTA0IDExNjUgMTFCRjtCNUI4OzExMDQgMTE2NSAxMUJGOworQjVCOTtCNUI5OzExMDQgMTE2NSAxMUMwO0I1Qjk7MTEwNCAxMTY1IDExQzA7CitCNUJBO0I1QkE7MTEwNCAxMTY1IDExQzE7QjVCQTsxMTA0IDExNjUgMTFDMTsKK0I1QkI7QjVCQjsxMTA0IDExNjUgMTFDMjtCNUJCOzExMDQgMTE2NSAxMUMyOworQjVCQztCNUJDOzExMDQgMTE2NjtCNUJDOzExMDQgMTE2NjsKK0I1QkQ7QjVCRDsxMTA0IDExNjYgMTFBODtCNUJEOzExMDQgMTE2NiAxMUE4OworQjVCRTtCNUJFOzExMDQgMTE2NiAxMUE5O0I1QkU7MTEwNCAxMTY2IDExQTk7CitCNUJGO0I1QkY7MTEwNCAxMTY2IDExQUE7QjVCRjsxMTA0IDExNjYgMTFBQTsKK0I1QzA7QjVDMDsxMTA0IDExNjYgMTFBQjtCNUMwOzExMDQgMTE2NiAxMUFCOworQjVDMTtCNUMxOzExMDQgMTE2NiAxMUFDO0I1QzE7MTEwNCAxMTY2IDExQUM7CitCNUMyO0I1QzI7MTEwNCAxMTY2IDExQUQ7QjVDMjsxMTA0IDExNjYgMTFBRDsKK0I1QzM7QjVDMzsxMTA0IDExNjYgMTFBRTtCNUMzOzExMDQgMTE2NiAxMUFFOworQjVDNDtCNUM0OzExMDQgMTE2NiAxMUFGO0I1QzQ7MTEwNCAxMTY2IDExQUY7CitCNUM1O0I1QzU7MTEwNCAxMTY2IDExQjA7QjVDNTsxMTA0IDExNjYgMTFCMDsKK0I1QzY7QjVDNjsxMTA0IDExNjYgMTFCMTtCNUM2OzExMDQgMTE2NiAxMUIxOworQjVDNztCNUM3OzExMDQgMTE2NiAxMUIyO0I1Qzc7MTEwNCAxMTY2IDExQjI7CitCNUM4O0I1Qzg7MTEwNCAxMTY2IDExQjM7QjVDODsxMTA0IDExNjYgMTFCMzsKK0I1Qzk7QjVDOTsxMTA0IDExNjYgMTFCNDtCNUM5OzExMDQgMTE2NiAxMUI0OworQjVDQTtCNUNBOzExMDQgMTE2NiAxMUI1O0I1Q0E7MTEwNCAxMTY2IDExQjU7CitCNUNCO0I1Q0I7MTEwNCAxMTY2IDExQjY7QjVDQjsxMTA0IDExNjYgMTFCNjsKK0I1Q0M7QjVDQzsxMTA0IDExNjYgMTFCNztCNUNDOzExMDQgMTE2NiAxMUI3OworQjVDRDtCNUNEOzExMDQgMTE2NiAxMUI4O0I1Q0Q7MTEwNCAxMTY2IDExQjg7CitCNUNFO0I1Q0U7MTEwNCAxMTY2IDExQjk7QjVDRTsxMTA0IDExNjYgMTFCOTsKK0I1Q0Y7QjVDRjsxMTA0IDExNjYgMTFCQTtCNUNGOzExMDQgMTE2NiAxMUJBOworQjVEMDtCNUQwOzExMDQgMTE2NiAxMUJCO0I1RDA7MTEwNCAxMTY2IDExQkI7CitCNUQxO0I1RDE7MTEwNCAxMTY2IDExQkM7QjVEMTsxMTA0IDExNjYgMTFCQzsKK0I1RDI7QjVEMjsxMTA0IDExNjYgMTFCRDtCNUQyOzExMDQgMTE2NiAxMUJEOworQjVEMztCNUQzOzExMDQgMTE2NiAxMUJFO0I1RDM7MTEwNCAxMTY2IDExQkU7CitCNUQ0O0I1RDQ7MTEwNCAxMTY2IDExQkY7QjVENDsxMTA0IDExNjYgMTFCRjsKK0I1RDU7QjVENTsxMTA0IDExNjYgMTFDMDtCNUQ1OzExMDQgMTE2NiAxMUMwOworQjVENjtCNUQ2OzExMDQgMTE2NiAxMUMxO0I1RDY7MTEwNCAxMTY2IDExQzE7CitCNUQ3O0I1RDc7MTEwNCAxMTY2IDExQzI7QjVENzsxMTA0IDExNjYgMTFDMjsKK0I1RDg7QjVEODsxMTA0IDExNjc7QjVEODsxMTA0IDExNjc7CitCNUQ5O0I1RDk7MTEwNCAxMTY3IDExQTg7QjVEOTsxMTA0IDExNjcgMTFBODsKK0I1REE7QjVEQTsxMTA0IDExNjcgMTFBOTtCNURBOzExMDQgMTE2NyAxMUE5OworQjVEQjtCNURCOzExMDQgMTE2NyAxMUFBO0I1REI7MTEwNCAxMTY3IDExQUE7CitCNURDO0I1REM7MTEwNCAxMTY3IDExQUI7QjVEQzsxMTA0IDExNjcgMTFBQjsKK0I1REQ7QjVERDsxMTA0IDExNjcgMTFBQztCNUREOzExMDQgMTE2NyAxMUFDOworQjVERTtCNURFOzExMDQgMTE2NyAxMUFEO0I1REU7MTEwNCAxMTY3IDExQUQ7CitCNURGO0I1REY7MTEwNCAxMTY3IDExQUU7QjVERjsxMTA0IDExNjcgMTFBRTsKK0I1RTA7QjVFMDsxMTA0IDExNjcgMTFBRjtCNUUwOzExMDQgMTE2NyAxMUFGOworQjVFMTtCNUUxOzExMDQgMTE2NyAxMUIwO0I1RTE7MTEwNCAxMTY3IDExQjA7CitCNUUyO0I1RTI7MTEwNCAxMTY3IDExQjE7QjVFMjsxMTA0IDExNjcgMTFCMTsKK0I1RTM7QjVFMzsxMTA0IDExNjcgMTFCMjtCNUUzOzExMDQgMTE2NyAxMUIyOworQjVFNDtCNUU0OzExMDQgMTE2NyAxMUIzO0I1RTQ7MTEwNCAxMTY3IDExQjM7CitCNUU1O0I1RTU7MTEwNCAxMTY3IDExQjQ7QjVFNTsxMTA0IDExNjcgMTFCNDsKK0I1RTY7QjVFNjsxMTA0IDExNjcgMTFCNTtCNUU2OzExMDQgMTE2NyAxMUI1OworQjVFNztCNUU3OzExMDQgMTE2NyAxMUI2O0I1RTc7MTEwNCAxMTY3IDExQjY7CitCNUU4O0I1RTg7MTEwNCAxMTY3IDExQjc7QjVFODsxMTA0IDExNjcgMTFCNzsKK0I1RTk7QjVFOTsxMTA0IDExNjcgMTFCODtCNUU5OzExMDQgMTE2NyAxMUI4OworQjVFQTtCNUVBOzExMDQgMTE2NyAxMUI5O0I1RUE7MTEwNCAxMTY3IDExQjk7CitCNUVCO0I1RUI7MTEwNCAxMTY3IDExQkE7QjVFQjsxMTA0IDExNjcgMTFCQTsKK0I1RUM7QjVFQzsxMTA0IDExNjcgMTFCQjtCNUVDOzExMDQgMTE2NyAxMUJCOworQjVFRDtCNUVEOzExMDQgMTE2NyAxMUJDO0I1RUQ7MTEwNCAxMTY3IDExQkM7CitCNUVFO0I1RUU7MTEwNCAxMTY3IDExQkQ7QjVFRTsxMTA0IDExNjcgMTFCRDsKK0I1RUY7QjVFRjsxMTA0IDExNjcgMTFCRTtCNUVGOzExMDQgMTE2NyAxMUJFOworQjVGMDtCNUYwOzExMDQgMTE2NyAxMUJGO0I1RjA7MTEwNCAxMTY3IDExQkY7CitCNUYxO0I1RjE7MTEwNCAxMTY3IDExQzA7QjVGMTsxMTA0IDExNjcgMTFDMDsKK0I1RjI7QjVGMjsxMTA0IDExNjcgMTFDMTtCNUYyOzExMDQgMTE2NyAxMUMxOworQjVGMztCNUYzOzExMDQgMTE2NyAxMUMyO0I1RjM7MTEwNCAxMTY3IDExQzI7CitCNUY0O0I1RjQ7MTEwNCAxMTY4O0I1RjQ7MTEwNCAxMTY4OworQjVGNTtCNUY1OzExMDQgMTE2OCAxMUE4O0I1RjU7MTEwNCAxMTY4IDExQTg7CitCNUY2O0I1RjY7MTEwNCAxMTY4IDExQTk7QjVGNjsxMTA0IDExNjggMTFBOTsKK0I1Rjc7QjVGNzsxMTA0IDExNjggMTFBQTtCNUY3OzExMDQgMTE2OCAxMUFBOworQjVGODtCNUY4OzExMDQgMTE2OCAxMUFCO0I1Rjg7MTEwNCAxMTY4IDExQUI7CitCNUY5O0I1Rjk7MTEwNCAxMTY4IDExQUM7QjVGOTsxMTA0IDExNjggMTFBQzsKK0I1RkE7QjVGQTsxMTA0IDExNjggMTFBRDtCNUZBOzExMDQgMTE2OCAxMUFEOworQjVGQjtCNUZCOzExMDQgMTE2OCAxMUFFO0I1RkI7MTEwNCAxMTY4IDExQUU7CitCNUZDO0I1RkM7MTEwNCAxMTY4IDExQUY7QjVGQzsxMTA0IDExNjggMTFBRjsKK0I1RkQ7QjVGRDsxMTA0IDExNjggMTFCMDtCNUZEOzExMDQgMTE2OCAxMUIwOworQjVGRTtCNUZFOzExMDQgMTE2OCAxMUIxO0I1RkU7MTEwNCAxMTY4IDExQjE7CitCNUZGO0I1RkY7MTEwNCAxMTY4IDExQjI7QjVGRjsxMTA0IDExNjggMTFCMjsKK0I2MDA7QjYwMDsxMTA0IDExNjggMTFCMztCNjAwOzExMDQgMTE2OCAxMUIzOworQjYwMTtCNjAxOzExMDQgMTE2OCAxMUI0O0I2MDE7MTEwNCAxMTY4IDExQjQ7CitCNjAyO0I2MDI7MTEwNCAxMTY4IDExQjU7QjYwMjsxMTA0IDExNjggMTFCNTsKK0I2MDM7QjYwMzsxMTA0IDExNjggMTFCNjtCNjAzOzExMDQgMTE2OCAxMUI2OworQjYwNDtCNjA0OzExMDQgMTE2OCAxMUI3O0I2MDQ7MTEwNCAxMTY4IDExQjc7CitCNjA1O0I2MDU7MTEwNCAxMTY4IDExQjg7QjYwNTsxMTA0IDExNjggMTFCODsKK0I2MDY7QjYwNjsxMTA0IDExNjggMTFCOTtCNjA2OzExMDQgMTE2OCAxMUI5OworQjYwNztCNjA3OzExMDQgMTE2OCAxMUJBO0I2MDc7MTEwNCAxMTY4IDExQkE7CitCNjA4O0I2MDg7MTEwNCAxMTY4IDExQkI7QjYwODsxMTA0IDExNjggMTFCQjsKK0I2MDk7QjYwOTsxMTA0IDExNjggMTFCQztCNjA5OzExMDQgMTE2OCAxMUJDOworQjYwQTtCNjBBOzExMDQgMTE2OCAxMUJEO0I2MEE7MTEwNCAxMTY4IDExQkQ7CitCNjBCO0I2MEI7MTEwNCAxMTY4IDExQkU7QjYwQjsxMTA0IDExNjggMTFCRTsKK0I2MEM7QjYwQzsxMTA0IDExNjggMTFCRjtCNjBDOzExMDQgMTE2OCAxMUJGOworQjYwRDtCNjBEOzExMDQgMTE2OCAxMUMwO0I2MEQ7MTEwNCAxMTY4IDExQzA7CitCNjBFO0I2MEU7MTEwNCAxMTY4IDExQzE7QjYwRTsxMTA0IDExNjggMTFDMTsKK0I2MEY7QjYwRjsxMTA0IDExNjggMTFDMjtCNjBGOzExMDQgMTE2OCAxMUMyOworQjYxMDtCNjEwOzExMDQgMTE2OTtCNjEwOzExMDQgMTE2OTsKK0I2MTE7QjYxMTsxMTA0IDExNjkgMTFBODtCNjExOzExMDQgMTE2OSAxMUE4OworQjYxMjtCNjEyOzExMDQgMTE2OSAxMUE5O0I2MTI7MTEwNCAxMTY5IDExQTk7CitCNjEzO0I2MTM7MTEwNCAxMTY5IDExQUE7QjYxMzsxMTA0IDExNjkgMTFBQTsKK0I2MTQ7QjYxNDsxMTA0IDExNjkgMTFBQjtCNjE0OzExMDQgMTE2OSAxMUFCOworQjYxNTtCNjE1OzExMDQgMTE2OSAxMUFDO0I2MTU7MTEwNCAxMTY5IDExQUM7CitCNjE2O0I2MTY7MTEwNCAxMTY5IDExQUQ7QjYxNjsxMTA0IDExNjkgMTFBRDsKK0I2MTc7QjYxNzsxMTA0IDExNjkgMTFBRTtCNjE3OzExMDQgMTE2OSAxMUFFOworQjYxODtCNjE4OzExMDQgMTE2OSAxMUFGO0I2MTg7MTEwNCAxMTY5IDExQUY7CitCNjE5O0I2MTk7MTEwNCAxMTY5IDExQjA7QjYxOTsxMTA0IDExNjkgMTFCMDsKK0I2MUE7QjYxQTsxMTA0IDExNjkgMTFCMTtCNjFBOzExMDQgMTE2OSAxMUIxOworQjYxQjtCNjFCOzExMDQgMTE2OSAxMUIyO0I2MUI7MTEwNCAxMTY5IDExQjI7CitCNjFDO0I2MUM7MTEwNCAxMTY5IDExQjM7QjYxQzsxMTA0IDExNjkgMTFCMzsKK0I2MUQ7QjYxRDsxMTA0IDExNjkgMTFCNDtCNjFEOzExMDQgMTE2OSAxMUI0OworQjYxRTtCNjFFOzExMDQgMTE2OSAxMUI1O0I2MUU7MTEwNCAxMTY5IDExQjU7CitCNjFGO0I2MUY7MTEwNCAxMTY5IDExQjY7QjYxRjsxMTA0IDExNjkgMTFCNjsKK0I2MjA7QjYyMDsxMTA0IDExNjkgMTFCNztCNjIwOzExMDQgMTE2OSAxMUI3OworQjYyMTtCNjIxOzExMDQgMTE2OSAxMUI4O0I2MjE7MTEwNCAxMTY5IDExQjg7CitCNjIyO0I2MjI7MTEwNCAxMTY5IDExQjk7QjYyMjsxMTA0IDExNjkgMTFCOTsKK0I2MjM7QjYyMzsxMTA0IDExNjkgMTFCQTtCNjIzOzExMDQgMTE2OSAxMUJBOworQjYyNDtCNjI0OzExMDQgMTE2OSAxMUJCO0I2MjQ7MTEwNCAxMTY5IDExQkI7CitCNjI1O0I2MjU7MTEwNCAxMTY5IDExQkM7QjYyNTsxMTA0IDExNjkgMTFCQzsKK0I2MjY7QjYyNjsxMTA0IDExNjkgMTFCRDtCNjI2OzExMDQgMTE2OSAxMUJEOworQjYyNztCNjI3OzExMDQgMTE2OSAxMUJFO0I2Mjc7MTEwNCAxMTY5IDExQkU7CitCNjI4O0I2Mjg7MTEwNCAxMTY5IDExQkY7QjYyODsxMTA0IDExNjkgMTFCRjsKK0I2Mjk7QjYyOTsxMTA0IDExNjkgMTFDMDtCNjI5OzExMDQgMTE2OSAxMUMwOworQjYyQTtCNjJBOzExMDQgMTE2OSAxMUMxO0I2MkE7MTEwNCAxMTY5IDExQzE7CitCNjJCO0I2MkI7MTEwNCAxMTY5IDExQzI7QjYyQjsxMTA0IDExNjkgMTFDMjsKK0I2MkM7QjYyQzsxMTA0IDExNkE7QjYyQzsxMTA0IDExNkE7CitCNjJEO0I2MkQ7MTEwNCAxMTZBIDExQTg7QjYyRDsxMTA0IDExNkEgMTFBODsKK0I2MkU7QjYyRTsxMTA0IDExNkEgMTFBOTtCNjJFOzExMDQgMTE2QSAxMUE5OworQjYyRjtCNjJGOzExMDQgMTE2QSAxMUFBO0I2MkY7MTEwNCAxMTZBIDExQUE7CitCNjMwO0I2MzA7MTEwNCAxMTZBIDExQUI7QjYzMDsxMTA0IDExNkEgMTFBQjsKK0I2MzE7QjYzMTsxMTA0IDExNkEgMTFBQztCNjMxOzExMDQgMTE2QSAxMUFDOworQjYzMjtCNjMyOzExMDQgMTE2QSAxMUFEO0I2MzI7MTEwNCAxMTZBIDExQUQ7CitCNjMzO0I2MzM7MTEwNCAxMTZBIDExQUU7QjYzMzsxMTA0IDExNkEgMTFBRTsKK0I2MzQ7QjYzNDsxMTA0IDExNkEgMTFBRjtCNjM0OzExMDQgMTE2QSAxMUFGOworQjYzNTtCNjM1OzExMDQgMTE2QSAxMUIwO0I2MzU7MTEwNCAxMTZBIDExQjA7CitCNjM2O0I2MzY7MTEwNCAxMTZBIDExQjE7QjYzNjsxMTA0IDExNkEgMTFCMTsKK0I2Mzc7QjYzNzsxMTA0IDExNkEgMTFCMjtCNjM3OzExMDQgMTE2QSAxMUIyOworQjYzODtCNjM4OzExMDQgMTE2QSAxMUIzO0I2Mzg7MTEwNCAxMTZBIDExQjM7CitCNjM5O0I2Mzk7MTEwNCAxMTZBIDExQjQ7QjYzOTsxMTA0IDExNkEgMTFCNDsKK0I2M0E7QjYzQTsxMTA0IDExNkEgMTFCNTtCNjNBOzExMDQgMTE2QSAxMUI1OworQjYzQjtCNjNCOzExMDQgMTE2QSAxMUI2O0I2M0I7MTEwNCAxMTZBIDExQjY7CitCNjNDO0I2M0M7MTEwNCAxMTZBIDExQjc7QjYzQzsxMTA0IDExNkEgMTFCNzsKK0I2M0Q7QjYzRDsxMTA0IDExNkEgMTFCODtCNjNEOzExMDQgMTE2QSAxMUI4OworQjYzRTtCNjNFOzExMDQgMTE2QSAxMUI5O0I2M0U7MTEwNCAxMTZBIDExQjk7CitCNjNGO0I2M0Y7MTEwNCAxMTZBIDExQkE7QjYzRjsxMTA0IDExNkEgMTFCQTsKK0I2NDA7QjY0MDsxMTA0IDExNkEgMTFCQjtCNjQwOzExMDQgMTE2QSAxMUJCOworQjY0MTtCNjQxOzExMDQgMTE2QSAxMUJDO0I2NDE7MTEwNCAxMTZBIDExQkM7CitCNjQyO0I2NDI7MTEwNCAxMTZBIDExQkQ7QjY0MjsxMTA0IDExNkEgMTFCRDsKK0I2NDM7QjY0MzsxMTA0IDExNkEgMTFCRTtCNjQzOzExMDQgMTE2QSAxMUJFOworQjY0NDtCNjQ0OzExMDQgMTE2QSAxMUJGO0I2NDQ7MTEwNCAxMTZBIDExQkY7CitCNjQ1O0I2NDU7MTEwNCAxMTZBIDExQzA7QjY0NTsxMTA0IDExNkEgMTFDMDsKK0I2NDY7QjY0NjsxMTA0IDExNkEgMTFDMTtCNjQ2OzExMDQgMTE2QSAxMUMxOworQjY0NztCNjQ3OzExMDQgMTE2QSAxMUMyO0I2NDc7MTEwNCAxMTZBIDExQzI7CitCNjQ4O0I2NDg7MTEwNCAxMTZCO0I2NDg7MTEwNCAxMTZCOworQjY0OTtCNjQ5OzExMDQgMTE2QiAxMUE4O0I2NDk7MTEwNCAxMTZCIDExQTg7CitCNjRBO0I2NEE7MTEwNCAxMTZCIDExQTk7QjY0QTsxMTA0IDExNkIgMTFBOTsKK0I2NEI7QjY0QjsxMTA0IDExNkIgMTFBQTtCNjRCOzExMDQgMTE2QiAxMUFBOworQjY0QztCNjRDOzExMDQgMTE2QiAxMUFCO0I2NEM7MTEwNCAxMTZCIDExQUI7CitCNjREO0I2NEQ7MTEwNCAxMTZCIDExQUM7QjY0RDsxMTA0IDExNkIgMTFBQzsKK0I2NEU7QjY0RTsxMTA0IDExNkIgMTFBRDtCNjRFOzExMDQgMTE2QiAxMUFEOworQjY0RjtCNjRGOzExMDQgMTE2QiAxMUFFO0I2NEY7MTEwNCAxMTZCIDExQUU7CitCNjUwO0I2NTA7MTEwNCAxMTZCIDExQUY7QjY1MDsxMTA0IDExNkIgMTFBRjsKK0I2NTE7QjY1MTsxMTA0IDExNkIgMTFCMDtCNjUxOzExMDQgMTE2QiAxMUIwOworQjY1MjtCNjUyOzExMDQgMTE2QiAxMUIxO0I2NTI7MTEwNCAxMTZCIDExQjE7CitCNjUzO0I2NTM7MTEwNCAxMTZCIDExQjI7QjY1MzsxMTA0IDExNkIgMTFCMjsKK0I2NTQ7QjY1NDsxMTA0IDExNkIgMTFCMztCNjU0OzExMDQgMTE2QiAxMUIzOworQjY1NTtCNjU1OzExMDQgMTE2QiAxMUI0O0I2NTU7MTEwNCAxMTZCIDExQjQ7CitCNjU2O0I2NTY7MTEwNCAxMTZCIDExQjU7QjY1NjsxMTA0IDExNkIgMTFCNTsKK0I2NTc7QjY1NzsxMTA0IDExNkIgMTFCNjtCNjU3OzExMDQgMTE2QiAxMUI2OworQjY1ODtCNjU4OzExMDQgMTE2QiAxMUI3O0I2NTg7MTEwNCAxMTZCIDExQjc7CitCNjU5O0I2NTk7MTEwNCAxMTZCIDExQjg7QjY1OTsxMTA0IDExNkIgMTFCODsKK0I2NUE7QjY1QTsxMTA0IDExNkIgMTFCOTtCNjVBOzExMDQgMTE2QiAxMUI5OworQjY1QjtCNjVCOzExMDQgMTE2QiAxMUJBO0I2NUI7MTEwNCAxMTZCIDExQkE7CitCNjVDO0I2NUM7MTEwNCAxMTZCIDExQkI7QjY1QzsxMTA0IDExNkIgMTFCQjsKK0I2NUQ7QjY1RDsxMTA0IDExNkIgMTFCQztCNjVEOzExMDQgMTE2QiAxMUJDOworQjY1RTtCNjVFOzExMDQgMTE2QiAxMUJEO0I2NUU7MTEwNCAxMTZCIDExQkQ7CitCNjVGO0I2NUY7MTEwNCAxMTZCIDExQkU7QjY1RjsxMTA0IDExNkIgMTFCRTsKK0I2NjA7QjY2MDsxMTA0IDExNkIgMTFCRjtCNjYwOzExMDQgMTE2QiAxMUJGOworQjY2MTtCNjYxOzExMDQgMTE2QiAxMUMwO0I2NjE7MTEwNCAxMTZCIDExQzA7CitCNjYyO0I2NjI7MTEwNCAxMTZCIDExQzE7QjY2MjsxMTA0IDExNkIgMTFDMTsKK0I2NjM7QjY2MzsxMTA0IDExNkIgMTFDMjtCNjYzOzExMDQgMTE2QiAxMUMyOworQjY2NDtCNjY0OzExMDQgMTE2QztCNjY0OzExMDQgMTE2QzsKK0I2NjU7QjY2NTsxMTA0IDExNkMgMTFBODtCNjY1OzExMDQgMTE2QyAxMUE4OworQjY2NjtCNjY2OzExMDQgMTE2QyAxMUE5O0I2NjY7MTEwNCAxMTZDIDExQTk7CitCNjY3O0I2Njc7MTEwNCAxMTZDIDExQUE7QjY2NzsxMTA0IDExNkMgMTFBQTsKK0I2Njg7QjY2ODsxMTA0IDExNkMgMTFBQjtCNjY4OzExMDQgMTE2QyAxMUFCOworQjY2OTtCNjY5OzExMDQgMTE2QyAxMUFDO0I2Njk7MTEwNCAxMTZDIDExQUM7CitCNjZBO0I2NkE7MTEwNCAxMTZDIDExQUQ7QjY2QTsxMTA0IDExNkMgMTFBRDsKK0I2NkI7QjY2QjsxMTA0IDExNkMgMTFBRTtCNjZCOzExMDQgMTE2QyAxMUFFOworQjY2QztCNjZDOzExMDQgMTE2QyAxMUFGO0I2NkM7MTEwNCAxMTZDIDExQUY7CitCNjZEO0I2NkQ7MTEwNCAxMTZDIDExQjA7QjY2RDsxMTA0IDExNkMgMTFCMDsKK0I2NkU7QjY2RTsxMTA0IDExNkMgMTFCMTtCNjZFOzExMDQgMTE2QyAxMUIxOworQjY2RjtCNjZGOzExMDQgMTE2QyAxMUIyO0I2NkY7MTEwNCAxMTZDIDExQjI7CitCNjcwO0I2NzA7MTEwNCAxMTZDIDExQjM7QjY3MDsxMTA0IDExNkMgMTFCMzsKK0I2NzE7QjY3MTsxMTA0IDExNkMgMTFCNDtCNjcxOzExMDQgMTE2QyAxMUI0OworQjY3MjtCNjcyOzExMDQgMTE2QyAxMUI1O0I2NzI7MTEwNCAxMTZDIDExQjU7CitCNjczO0I2NzM7MTEwNCAxMTZDIDExQjY7QjY3MzsxMTA0IDExNkMgMTFCNjsKK0I2NzQ7QjY3NDsxMTA0IDExNkMgMTFCNztCNjc0OzExMDQgMTE2QyAxMUI3OworQjY3NTtCNjc1OzExMDQgMTE2QyAxMUI4O0I2NzU7MTEwNCAxMTZDIDExQjg7CitCNjc2O0I2NzY7MTEwNCAxMTZDIDExQjk7QjY3NjsxMTA0IDExNkMgMTFCOTsKK0I2Nzc7QjY3NzsxMTA0IDExNkMgMTFCQTtCNjc3OzExMDQgMTE2QyAxMUJBOworQjY3ODtCNjc4OzExMDQgMTE2QyAxMUJCO0I2Nzg7MTEwNCAxMTZDIDExQkI7CitCNjc5O0I2Nzk7MTEwNCAxMTZDIDExQkM7QjY3OTsxMTA0IDExNkMgMTFCQzsKK0I2N0E7QjY3QTsxMTA0IDExNkMgMTFCRDtCNjdBOzExMDQgMTE2QyAxMUJEOworQjY3QjtCNjdCOzExMDQgMTE2QyAxMUJFO0I2N0I7MTEwNCAxMTZDIDExQkU7CitCNjdDO0I2N0M7MTEwNCAxMTZDIDExQkY7QjY3QzsxMTA0IDExNkMgMTFCRjsKK0I2N0Q7QjY3RDsxMTA0IDExNkMgMTFDMDtCNjdEOzExMDQgMTE2QyAxMUMwOworQjY3RTtCNjdFOzExMDQgMTE2QyAxMUMxO0I2N0U7MTEwNCAxMTZDIDExQzE7CitCNjdGO0I2N0Y7MTEwNCAxMTZDIDExQzI7QjY3RjsxMTA0IDExNkMgMTFDMjsKK0I2ODA7QjY4MDsxMTA0IDExNkQ7QjY4MDsxMTA0IDExNkQ7CitCNjgxO0I2ODE7MTEwNCAxMTZEIDExQTg7QjY4MTsxMTA0IDExNkQgMTFBODsKK0I2ODI7QjY4MjsxMTA0IDExNkQgMTFBOTtCNjgyOzExMDQgMTE2RCAxMUE5OworQjY4MztCNjgzOzExMDQgMTE2RCAxMUFBO0I2ODM7MTEwNCAxMTZEIDExQUE7CitCNjg0O0I2ODQ7MTEwNCAxMTZEIDExQUI7QjY4NDsxMTA0IDExNkQgMTFBQjsKK0I2ODU7QjY4NTsxMTA0IDExNkQgMTFBQztCNjg1OzExMDQgMTE2RCAxMUFDOworQjY4NjtCNjg2OzExMDQgMTE2RCAxMUFEO0I2ODY7MTEwNCAxMTZEIDExQUQ7CitCNjg3O0I2ODc7MTEwNCAxMTZEIDExQUU7QjY4NzsxMTA0IDExNkQgMTFBRTsKK0I2ODg7QjY4ODsxMTA0IDExNkQgMTFBRjtCNjg4OzExMDQgMTE2RCAxMUFGOworQjY4OTtCNjg5OzExMDQgMTE2RCAxMUIwO0I2ODk7MTEwNCAxMTZEIDExQjA7CitCNjhBO0I2OEE7MTEwNCAxMTZEIDExQjE7QjY4QTsxMTA0IDExNkQgMTFCMTsKK0I2OEI7QjY4QjsxMTA0IDExNkQgMTFCMjtCNjhCOzExMDQgMTE2RCAxMUIyOworQjY4QztCNjhDOzExMDQgMTE2RCAxMUIzO0I2OEM7MTEwNCAxMTZEIDExQjM7CitCNjhEO0I2OEQ7MTEwNCAxMTZEIDExQjQ7QjY4RDsxMTA0IDExNkQgMTFCNDsKK0I2OEU7QjY4RTsxMTA0IDExNkQgMTFCNTtCNjhFOzExMDQgMTE2RCAxMUI1OworQjY4RjtCNjhGOzExMDQgMTE2RCAxMUI2O0I2OEY7MTEwNCAxMTZEIDExQjY7CitCNjkwO0I2OTA7MTEwNCAxMTZEIDExQjc7QjY5MDsxMTA0IDExNkQgMTFCNzsKK0I2OTE7QjY5MTsxMTA0IDExNkQgMTFCODtCNjkxOzExMDQgMTE2RCAxMUI4OworQjY5MjtCNjkyOzExMDQgMTE2RCAxMUI5O0I2OTI7MTEwNCAxMTZEIDExQjk7CitCNjkzO0I2OTM7MTEwNCAxMTZEIDExQkE7QjY5MzsxMTA0IDExNkQgMTFCQTsKK0I2OTQ7QjY5NDsxMTA0IDExNkQgMTFCQjtCNjk0OzExMDQgMTE2RCAxMUJCOworQjY5NTtCNjk1OzExMDQgMTE2RCAxMUJDO0I2OTU7MTEwNCAxMTZEIDExQkM7CitCNjk2O0I2OTY7MTEwNCAxMTZEIDExQkQ7QjY5NjsxMTA0IDExNkQgMTFCRDsKK0I2OTc7QjY5NzsxMTA0IDExNkQgMTFCRTtCNjk3OzExMDQgMTE2RCAxMUJFOworQjY5ODtCNjk4OzExMDQgMTE2RCAxMUJGO0I2OTg7MTEwNCAxMTZEIDExQkY7CitCNjk5O0I2OTk7MTEwNCAxMTZEIDExQzA7QjY5OTsxMTA0IDExNkQgMTFDMDsKK0I2OUE7QjY5QTsxMTA0IDExNkQgMTFDMTtCNjlBOzExMDQgMTE2RCAxMUMxOworQjY5QjtCNjlCOzExMDQgMTE2RCAxMUMyO0I2OUI7MTEwNCAxMTZEIDExQzI7CitCNjlDO0I2OUM7MTEwNCAxMTZFO0I2OUM7MTEwNCAxMTZFOworQjY5RDtCNjlEOzExMDQgMTE2RSAxMUE4O0I2OUQ7MTEwNCAxMTZFIDExQTg7CitCNjlFO0I2OUU7MTEwNCAxMTZFIDExQTk7QjY5RTsxMTA0IDExNkUgMTFBOTsKK0I2OUY7QjY5RjsxMTA0IDExNkUgMTFBQTtCNjlGOzExMDQgMTE2RSAxMUFBOworQjZBMDtCNkEwOzExMDQgMTE2RSAxMUFCO0I2QTA7MTEwNCAxMTZFIDExQUI7CitCNkExO0I2QTE7MTEwNCAxMTZFIDExQUM7QjZBMTsxMTA0IDExNkUgMTFBQzsKK0I2QTI7QjZBMjsxMTA0IDExNkUgMTFBRDtCNkEyOzExMDQgMTE2RSAxMUFEOworQjZBMztCNkEzOzExMDQgMTE2RSAxMUFFO0I2QTM7MTEwNCAxMTZFIDExQUU7CitCNkE0O0I2QTQ7MTEwNCAxMTZFIDExQUY7QjZBNDsxMTA0IDExNkUgMTFBRjsKK0I2QTU7QjZBNTsxMTA0IDExNkUgMTFCMDtCNkE1OzExMDQgMTE2RSAxMUIwOworQjZBNjtCNkE2OzExMDQgMTE2RSAxMUIxO0I2QTY7MTEwNCAxMTZFIDExQjE7CitCNkE3O0I2QTc7MTEwNCAxMTZFIDExQjI7QjZBNzsxMTA0IDExNkUgMTFCMjsKK0I2QTg7QjZBODsxMTA0IDExNkUgMTFCMztCNkE4OzExMDQgMTE2RSAxMUIzOworQjZBOTtCNkE5OzExMDQgMTE2RSAxMUI0O0I2QTk7MTEwNCAxMTZFIDExQjQ7CitCNkFBO0I2QUE7MTEwNCAxMTZFIDExQjU7QjZBQTsxMTA0IDExNkUgMTFCNTsKK0I2QUI7QjZBQjsxMTA0IDExNkUgMTFCNjtCNkFCOzExMDQgMTE2RSAxMUI2OworQjZBQztCNkFDOzExMDQgMTE2RSAxMUI3O0I2QUM7MTEwNCAxMTZFIDExQjc7CitCNkFEO0I2QUQ7MTEwNCAxMTZFIDExQjg7QjZBRDsxMTA0IDExNkUgMTFCODsKK0I2QUU7QjZBRTsxMTA0IDExNkUgMTFCOTtCNkFFOzExMDQgMTE2RSAxMUI5OworQjZBRjtCNkFGOzExMDQgMTE2RSAxMUJBO0I2QUY7MTEwNCAxMTZFIDExQkE7CitCNkIwO0I2QjA7MTEwNCAxMTZFIDExQkI7QjZCMDsxMTA0IDExNkUgMTFCQjsKK0I2QjE7QjZCMTsxMTA0IDExNkUgMTFCQztCNkIxOzExMDQgMTE2RSAxMUJDOworQjZCMjtCNkIyOzExMDQgMTE2RSAxMUJEO0I2QjI7MTEwNCAxMTZFIDExQkQ7CitCNkIzO0I2QjM7MTEwNCAxMTZFIDExQkU7QjZCMzsxMTA0IDExNkUgMTFCRTsKK0I2QjQ7QjZCNDsxMTA0IDExNkUgMTFCRjtCNkI0OzExMDQgMTE2RSAxMUJGOworQjZCNTtCNkI1OzExMDQgMTE2RSAxMUMwO0I2QjU7MTEwNCAxMTZFIDExQzA7CitCNkI2O0I2QjY7MTEwNCAxMTZFIDExQzE7QjZCNjsxMTA0IDExNkUgMTFDMTsKK0I2Qjc7QjZCNzsxMTA0IDExNkUgMTFDMjtCNkI3OzExMDQgMTE2RSAxMUMyOworQjZCODtCNkI4OzExMDQgMTE2RjtCNkI4OzExMDQgMTE2RjsKK0I2Qjk7QjZCOTsxMTA0IDExNkYgMTFBODtCNkI5OzExMDQgMTE2RiAxMUE4OworQjZCQTtCNkJBOzExMDQgMTE2RiAxMUE5O0I2QkE7MTEwNCAxMTZGIDExQTk7CitCNkJCO0I2QkI7MTEwNCAxMTZGIDExQUE7QjZCQjsxMTA0IDExNkYgMTFBQTsKK0I2QkM7QjZCQzsxMTA0IDExNkYgMTFBQjtCNkJDOzExMDQgMTE2RiAxMUFCOworQjZCRDtCNkJEOzExMDQgMTE2RiAxMUFDO0I2QkQ7MTEwNCAxMTZGIDExQUM7CitCNkJFO0I2QkU7MTEwNCAxMTZGIDExQUQ7QjZCRTsxMTA0IDExNkYgMTFBRDsKK0I2QkY7QjZCRjsxMTA0IDExNkYgMTFBRTtCNkJGOzExMDQgMTE2RiAxMUFFOworQjZDMDtCNkMwOzExMDQgMTE2RiAxMUFGO0I2QzA7MTEwNCAxMTZGIDExQUY7CitCNkMxO0I2QzE7MTEwNCAxMTZGIDExQjA7QjZDMTsxMTA0IDExNkYgMTFCMDsKK0I2QzI7QjZDMjsxMTA0IDExNkYgMTFCMTtCNkMyOzExMDQgMTE2RiAxMUIxOworQjZDMztCNkMzOzExMDQgMTE2RiAxMUIyO0I2QzM7MTEwNCAxMTZGIDExQjI7CitCNkM0O0I2QzQ7MTEwNCAxMTZGIDExQjM7QjZDNDsxMTA0IDExNkYgMTFCMzsKK0I2QzU7QjZDNTsxMTA0IDExNkYgMTFCNDtCNkM1OzExMDQgMTE2RiAxMUI0OworQjZDNjtCNkM2OzExMDQgMTE2RiAxMUI1O0I2QzY7MTEwNCAxMTZGIDExQjU7CitCNkM3O0I2Qzc7MTEwNCAxMTZGIDExQjY7QjZDNzsxMTA0IDExNkYgMTFCNjsKK0I2Qzg7QjZDODsxMTA0IDExNkYgMTFCNztCNkM4OzExMDQgMTE2RiAxMUI3OworQjZDOTtCNkM5OzExMDQgMTE2RiAxMUI4O0I2Qzk7MTEwNCAxMTZGIDExQjg7CitCNkNBO0I2Q0E7MTEwNCAxMTZGIDExQjk7QjZDQTsxMTA0IDExNkYgMTFCOTsKK0I2Q0I7QjZDQjsxMTA0IDExNkYgMTFCQTtCNkNCOzExMDQgMTE2RiAxMUJBOworQjZDQztCNkNDOzExMDQgMTE2RiAxMUJCO0I2Q0M7MTEwNCAxMTZGIDExQkI7CitCNkNEO0I2Q0Q7MTEwNCAxMTZGIDExQkM7QjZDRDsxMTA0IDExNkYgMTFCQzsKK0I2Q0U7QjZDRTsxMTA0IDExNkYgMTFCRDtCNkNFOzExMDQgMTE2RiAxMUJEOworQjZDRjtCNkNGOzExMDQgMTE2RiAxMUJFO0I2Q0Y7MTEwNCAxMTZGIDExQkU7CitCNkQwO0I2RDA7MTEwNCAxMTZGIDExQkY7QjZEMDsxMTA0IDExNkYgMTFCRjsKK0I2RDE7QjZEMTsxMTA0IDExNkYgMTFDMDtCNkQxOzExMDQgMTE2RiAxMUMwOworQjZEMjtCNkQyOzExMDQgMTE2RiAxMUMxO0I2RDI7MTEwNCAxMTZGIDExQzE7CitCNkQzO0I2RDM7MTEwNCAxMTZGIDExQzI7QjZEMzsxMTA0IDExNkYgMTFDMjsKK0I2RDQ7QjZENDsxMTA0IDExNzA7QjZENDsxMTA0IDExNzA7CitCNkQ1O0I2RDU7MTEwNCAxMTcwIDExQTg7QjZENTsxMTA0IDExNzAgMTFBODsKK0I2RDY7QjZENjsxMTA0IDExNzAgMTFBOTtCNkQ2OzExMDQgMTE3MCAxMUE5OworQjZENztCNkQ3OzExMDQgMTE3MCAxMUFBO0I2RDc7MTEwNCAxMTcwIDExQUE7CitCNkQ4O0I2RDg7MTEwNCAxMTcwIDExQUI7QjZEODsxMTA0IDExNzAgMTFBQjsKK0I2RDk7QjZEOTsxMTA0IDExNzAgMTFBQztCNkQ5OzExMDQgMTE3MCAxMUFDOworQjZEQTtCNkRBOzExMDQgMTE3MCAxMUFEO0I2REE7MTEwNCAxMTcwIDExQUQ7CitCNkRCO0I2REI7MTEwNCAxMTcwIDExQUU7QjZEQjsxMTA0IDExNzAgMTFBRTsKK0I2REM7QjZEQzsxMTA0IDExNzAgMTFBRjtCNkRDOzExMDQgMTE3MCAxMUFGOworQjZERDtCNkREOzExMDQgMTE3MCAxMUIwO0I2REQ7MTEwNCAxMTcwIDExQjA7CitCNkRFO0I2REU7MTEwNCAxMTcwIDExQjE7QjZERTsxMTA0IDExNzAgMTFCMTsKK0I2REY7QjZERjsxMTA0IDExNzAgMTFCMjtCNkRGOzExMDQgMTE3MCAxMUIyOworQjZFMDtCNkUwOzExMDQgMTE3MCAxMUIzO0I2RTA7MTEwNCAxMTcwIDExQjM7CitCNkUxO0I2RTE7MTEwNCAxMTcwIDExQjQ7QjZFMTsxMTA0IDExNzAgMTFCNDsKK0I2RTI7QjZFMjsxMTA0IDExNzAgMTFCNTtCNkUyOzExMDQgMTE3MCAxMUI1OworQjZFMztCNkUzOzExMDQgMTE3MCAxMUI2O0I2RTM7MTEwNCAxMTcwIDExQjY7CitCNkU0O0I2RTQ7MTEwNCAxMTcwIDExQjc7QjZFNDsxMTA0IDExNzAgMTFCNzsKK0I2RTU7QjZFNTsxMTA0IDExNzAgMTFCODtCNkU1OzExMDQgMTE3MCAxMUI4OworQjZFNjtCNkU2OzExMDQgMTE3MCAxMUI5O0I2RTY7MTEwNCAxMTcwIDExQjk7CitCNkU3O0I2RTc7MTEwNCAxMTcwIDExQkE7QjZFNzsxMTA0IDExNzAgMTFCQTsKK0I2RTg7QjZFODsxMTA0IDExNzAgMTFCQjtCNkU4OzExMDQgMTE3MCAxMUJCOworQjZFOTtCNkU5OzExMDQgMTE3MCAxMUJDO0I2RTk7MTEwNCAxMTcwIDExQkM7CitCNkVBO0I2RUE7MTEwNCAxMTcwIDExQkQ7QjZFQTsxMTA0IDExNzAgMTFCRDsKK0I2RUI7QjZFQjsxMTA0IDExNzAgMTFCRTtCNkVCOzExMDQgMTE3MCAxMUJFOworQjZFQztCNkVDOzExMDQgMTE3MCAxMUJGO0I2RUM7MTEwNCAxMTcwIDExQkY7CitCNkVEO0I2RUQ7MTEwNCAxMTcwIDExQzA7QjZFRDsxMTA0IDExNzAgMTFDMDsKK0I2RUU7QjZFRTsxMTA0IDExNzAgMTFDMTtCNkVFOzExMDQgMTE3MCAxMUMxOworQjZFRjtCNkVGOzExMDQgMTE3MCAxMUMyO0I2RUY7MTEwNCAxMTcwIDExQzI7CitCNkYwO0I2RjA7MTEwNCAxMTcxO0I2RjA7MTEwNCAxMTcxOworQjZGMTtCNkYxOzExMDQgMTE3MSAxMUE4O0I2RjE7MTEwNCAxMTcxIDExQTg7CitCNkYyO0I2RjI7MTEwNCAxMTcxIDExQTk7QjZGMjsxMTA0IDExNzEgMTFBOTsKK0I2RjM7QjZGMzsxMTA0IDExNzEgMTFBQTtCNkYzOzExMDQgMTE3MSAxMUFBOworQjZGNDtCNkY0OzExMDQgMTE3MSAxMUFCO0I2RjQ7MTEwNCAxMTcxIDExQUI7CitCNkY1O0I2RjU7MTEwNCAxMTcxIDExQUM7QjZGNTsxMTA0IDExNzEgMTFBQzsKK0I2RjY7QjZGNjsxMTA0IDExNzEgMTFBRDtCNkY2OzExMDQgMTE3MSAxMUFEOworQjZGNztCNkY3OzExMDQgMTE3MSAxMUFFO0I2Rjc7MTEwNCAxMTcxIDExQUU7CitCNkY4O0I2Rjg7MTEwNCAxMTcxIDExQUY7QjZGODsxMTA0IDExNzEgMTFBRjsKK0I2Rjk7QjZGOTsxMTA0IDExNzEgMTFCMDtCNkY5OzExMDQgMTE3MSAxMUIwOworQjZGQTtCNkZBOzExMDQgMTE3MSAxMUIxO0I2RkE7MTEwNCAxMTcxIDExQjE7CitCNkZCO0I2RkI7MTEwNCAxMTcxIDExQjI7QjZGQjsxMTA0IDExNzEgMTFCMjsKK0I2RkM7QjZGQzsxMTA0IDExNzEgMTFCMztCNkZDOzExMDQgMTE3MSAxMUIzOworQjZGRDtCNkZEOzExMDQgMTE3MSAxMUI0O0I2RkQ7MTEwNCAxMTcxIDExQjQ7CitCNkZFO0I2RkU7MTEwNCAxMTcxIDExQjU7QjZGRTsxMTA0IDExNzEgMTFCNTsKK0I2RkY7QjZGRjsxMTA0IDExNzEgMTFCNjtCNkZGOzExMDQgMTE3MSAxMUI2OworQjcwMDtCNzAwOzExMDQgMTE3MSAxMUI3O0I3MDA7MTEwNCAxMTcxIDExQjc7CitCNzAxO0I3MDE7MTEwNCAxMTcxIDExQjg7QjcwMTsxMTA0IDExNzEgMTFCODsKK0I3MDI7QjcwMjsxMTA0IDExNzEgMTFCOTtCNzAyOzExMDQgMTE3MSAxMUI5OworQjcwMztCNzAzOzExMDQgMTE3MSAxMUJBO0I3MDM7MTEwNCAxMTcxIDExQkE7CitCNzA0O0I3MDQ7MTEwNCAxMTcxIDExQkI7QjcwNDsxMTA0IDExNzEgMTFCQjsKK0I3MDU7QjcwNTsxMTA0IDExNzEgMTFCQztCNzA1OzExMDQgMTE3MSAxMUJDOworQjcwNjtCNzA2OzExMDQgMTE3MSAxMUJEO0I3MDY7MTEwNCAxMTcxIDExQkQ7CitCNzA3O0I3MDc7MTEwNCAxMTcxIDExQkU7QjcwNzsxMTA0IDExNzEgMTFCRTsKK0I3MDg7QjcwODsxMTA0IDExNzEgMTFCRjtCNzA4OzExMDQgMTE3MSAxMUJGOworQjcwOTtCNzA5OzExMDQgMTE3MSAxMUMwO0I3MDk7MTEwNCAxMTcxIDExQzA7CitCNzBBO0I3MEE7MTEwNCAxMTcxIDExQzE7QjcwQTsxMTA0IDExNzEgMTFDMTsKK0I3MEI7QjcwQjsxMTA0IDExNzEgMTFDMjtCNzBCOzExMDQgMTE3MSAxMUMyOworQjcwQztCNzBDOzExMDQgMTE3MjtCNzBDOzExMDQgMTE3MjsKK0I3MEQ7QjcwRDsxMTA0IDExNzIgMTFBODtCNzBEOzExMDQgMTE3MiAxMUE4OworQjcwRTtCNzBFOzExMDQgMTE3MiAxMUE5O0I3MEU7MTEwNCAxMTcyIDExQTk7CitCNzBGO0I3MEY7MTEwNCAxMTcyIDExQUE7QjcwRjsxMTA0IDExNzIgMTFBQTsKK0I3MTA7QjcxMDsxMTA0IDExNzIgMTFBQjtCNzEwOzExMDQgMTE3MiAxMUFCOworQjcxMTtCNzExOzExMDQgMTE3MiAxMUFDO0I3MTE7MTEwNCAxMTcyIDExQUM7CitCNzEyO0I3MTI7MTEwNCAxMTcyIDExQUQ7QjcxMjsxMTA0IDExNzIgMTFBRDsKK0I3MTM7QjcxMzsxMTA0IDExNzIgMTFBRTtCNzEzOzExMDQgMTE3MiAxMUFFOworQjcxNDtCNzE0OzExMDQgMTE3MiAxMUFGO0I3MTQ7MTEwNCAxMTcyIDExQUY7CitCNzE1O0I3MTU7MTEwNCAxMTcyIDExQjA7QjcxNTsxMTA0IDExNzIgMTFCMDsKK0I3MTY7QjcxNjsxMTA0IDExNzIgMTFCMTtCNzE2OzExMDQgMTE3MiAxMUIxOworQjcxNztCNzE3OzExMDQgMTE3MiAxMUIyO0I3MTc7MTEwNCAxMTcyIDExQjI7CitCNzE4O0I3MTg7MTEwNCAxMTcyIDExQjM7QjcxODsxMTA0IDExNzIgMTFCMzsKK0I3MTk7QjcxOTsxMTA0IDExNzIgMTFCNDtCNzE5OzExMDQgMTE3MiAxMUI0OworQjcxQTtCNzFBOzExMDQgMTE3MiAxMUI1O0I3MUE7MTEwNCAxMTcyIDExQjU7CitCNzFCO0I3MUI7MTEwNCAxMTcyIDExQjY7QjcxQjsxMTA0IDExNzIgMTFCNjsKK0I3MUM7QjcxQzsxMTA0IDExNzIgMTFCNztCNzFDOzExMDQgMTE3MiAxMUI3OworQjcxRDtCNzFEOzExMDQgMTE3MiAxMUI4O0I3MUQ7MTEwNCAxMTcyIDExQjg7CitCNzFFO0I3MUU7MTEwNCAxMTcyIDExQjk7QjcxRTsxMTA0IDExNzIgMTFCOTsKK0I3MUY7QjcxRjsxMTA0IDExNzIgMTFCQTtCNzFGOzExMDQgMTE3MiAxMUJBOworQjcyMDtCNzIwOzExMDQgMTE3MiAxMUJCO0I3MjA7MTEwNCAxMTcyIDExQkI7CitCNzIxO0I3MjE7MTEwNCAxMTcyIDExQkM7QjcyMTsxMTA0IDExNzIgMTFCQzsKK0I3MjI7QjcyMjsxMTA0IDExNzIgMTFCRDtCNzIyOzExMDQgMTE3MiAxMUJEOworQjcyMztCNzIzOzExMDQgMTE3MiAxMUJFO0I3MjM7MTEwNCAxMTcyIDExQkU7CitCNzI0O0I3MjQ7MTEwNCAxMTcyIDExQkY7QjcyNDsxMTA0IDExNzIgMTFCRjsKK0I3MjU7QjcyNTsxMTA0IDExNzIgMTFDMDtCNzI1OzExMDQgMTE3MiAxMUMwOworQjcyNjtCNzI2OzExMDQgMTE3MiAxMUMxO0I3MjY7MTEwNCAxMTcyIDExQzE7CitCNzI3O0I3Mjc7MTEwNCAxMTcyIDExQzI7QjcyNzsxMTA0IDExNzIgMTFDMjsKK0I3Mjg7QjcyODsxMTA0IDExNzM7QjcyODsxMTA0IDExNzM7CitCNzI5O0I3Mjk7MTEwNCAxMTczIDExQTg7QjcyOTsxMTA0IDExNzMgMTFBODsKK0I3MkE7QjcyQTsxMTA0IDExNzMgMTFBOTtCNzJBOzExMDQgMTE3MyAxMUE5OworQjcyQjtCNzJCOzExMDQgMTE3MyAxMUFBO0I3MkI7MTEwNCAxMTczIDExQUE7CitCNzJDO0I3MkM7MTEwNCAxMTczIDExQUI7QjcyQzsxMTA0IDExNzMgMTFBQjsKK0I3MkQ7QjcyRDsxMTA0IDExNzMgMTFBQztCNzJEOzExMDQgMTE3MyAxMUFDOworQjcyRTtCNzJFOzExMDQgMTE3MyAxMUFEO0I3MkU7MTEwNCAxMTczIDExQUQ7CitCNzJGO0I3MkY7MTEwNCAxMTczIDExQUU7QjcyRjsxMTA0IDExNzMgMTFBRTsKK0I3MzA7QjczMDsxMTA0IDExNzMgMTFBRjtCNzMwOzExMDQgMTE3MyAxMUFGOworQjczMTtCNzMxOzExMDQgMTE3MyAxMUIwO0I3MzE7MTEwNCAxMTczIDExQjA7CitCNzMyO0I3MzI7MTEwNCAxMTczIDExQjE7QjczMjsxMTA0IDExNzMgMTFCMTsKK0I3MzM7QjczMzsxMTA0IDExNzMgMTFCMjtCNzMzOzExMDQgMTE3MyAxMUIyOworQjczNDtCNzM0OzExMDQgMTE3MyAxMUIzO0I3MzQ7MTEwNCAxMTczIDExQjM7CitCNzM1O0I3MzU7MTEwNCAxMTczIDExQjQ7QjczNTsxMTA0IDExNzMgMTFCNDsKK0I3MzY7QjczNjsxMTA0IDExNzMgMTFCNTtCNzM2OzExMDQgMTE3MyAxMUI1OworQjczNztCNzM3OzExMDQgMTE3MyAxMUI2O0I3Mzc7MTEwNCAxMTczIDExQjY7CitCNzM4O0I3Mzg7MTEwNCAxMTczIDExQjc7QjczODsxMTA0IDExNzMgMTFCNzsKK0I3Mzk7QjczOTsxMTA0IDExNzMgMTFCODtCNzM5OzExMDQgMTE3MyAxMUI4OworQjczQTtCNzNBOzExMDQgMTE3MyAxMUI5O0I3M0E7MTEwNCAxMTczIDExQjk7CitCNzNCO0I3M0I7MTEwNCAxMTczIDExQkE7QjczQjsxMTA0IDExNzMgMTFCQTsKK0I3M0M7QjczQzsxMTA0IDExNzMgMTFCQjtCNzNDOzExMDQgMTE3MyAxMUJCOworQjczRDtCNzNEOzExMDQgMTE3MyAxMUJDO0I3M0Q7MTEwNCAxMTczIDExQkM7CitCNzNFO0I3M0U7MTEwNCAxMTczIDExQkQ7QjczRTsxMTA0IDExNzMgMTFCRDsKK0I3M0Y7QjczRjsxMTA0IDExNzMgMTFCRTtCNzNGOzExMDQgMTE3MyAxMUJFOworQjc0MDtCNzQwOzExMDQgMTE3MyAxMUJGO0I3NDA7MTEwNCAxMTczIDExQkY7CitCNzQxO0I3NDE7MTEwNCAxMTczIDExQzA7Qjc0MTsxMTA0IDExNzMgMTFDMDsKK0I3NDI7Qjc0MjsxMTA0IDExNzMgMTFDMTtCNzQyOzExMDQgMTE3MyAxMUMxOworQjc0MztCNzQzOzExMDQgMTE3MyAxMUMyO0I3NDM7MTEwNCAxMTczIDExQzI7CitCNzQ0O0I3NDQ7MTEwNCAxMTc0O0I3NDQ7MTEwNCAxMTc0OworQjc0NTtCNzQ1OzExMDQgMTE3NCAxMUE4O0I3NDU7MTEwNCAxMTc0IDExQTg7CitCNzQ2O0I3NDY7MTEwNCAxMTc0IDExQTk7Qjc0NjsxMTA0IDExNzQgMTFBOTsKK0I3NDc7Qjc0NzsxMTA0IDExNzQgMTFBQTtCNzQ3OzExMDQgMTE3NCAxMUFBOworQjc0ODtCNzQ4OzExMDQgMTE3NCAxMUFCO0I3NDg7MTEwNCAxMTc0IDExQUI7CitCNzQ5O0I3NDk7MTEwNCAxMTc0IDExQUM7Qjc0OTsxMTA0IDExNzQgMTFBQzsKK0I3NEE7Qjc0QTsxMTA0IDExNzQgMTFBRDtCNzRBOzExMDQgMTE3NCAxMUFEOworQjc0QjtCNzRCOzExMDQgMTE3NCAxMUFFO0I3NEI7MTEwNCAxMTc0IDExQUU7CitCNzRDO0I3NEM7MTEwNCAxMTc0IDExQUY7Qjc0QzsxMTA0IDExNzQgMTFBRjsKK0I3NEQ7Qjc0RDsxMTA0IDExNzQgMTFCMDtCNzREOzExMDQgMTE3NCAxMUIwOworQjc0RTtCNzRFOzExMDQgMTE3NCAxMUIxO0I3NEU7MTEwNCAxMTc0IDExQjE7CitCNzRGO0I3NEY7MTEwNCAxMTc0IDExQjI7Qjc0RjsxMTA0IDExNzQgMTFCMjsKK0I3NTA7Qjc1MDsxMTA0IDExNzQgMTFCMztCNzUwOzExMDQgMTE3NCAxMUIzOworQjc1MTtCNzUxOzExMDQgMTE3NCAxMUI0O0I3NTE7MTEwNCAxMTc0IDExQjQ7CitCNzUyO0I3NTI7MTEwNCAxMTc0IDExQjU7Qjc1MjsxMTA0IDExNzQgMTFCNTsKK0I3NTM7Qjc1MzsxMTA0IDExNzQgMTFCNjtCNzUzOzExMDQgMTE3NCAxMUI2OworQjc1NDtCNzU0OzExMDQgMTE3NCAxMUI3O0I3NTQ7MTEwNCAxMTc0IDExQjc7CitCNzU1O0I3NTU7MTEwNCAxMTc0IDExQjg7Qjc1NTsxMTA0IDExNzQgMTFCODsKK0I3NTY7Qjc1NjsxMTA0IDExNzQgMTFCOTtCNzU2OzExMDQgMTE3NCAxMUI5OworQjc1NztCNzU3OzExMDQgMTE3NCAxMUJBO0I3NTc7MTEwNCAxMTc0IDExQkE7CitCNzU4O0I3NTg7MTEwNCAxMTc0IDExQkI7Qjc1ODsxMTA0IDExNzQgMTFCQjsKK0I3NTk7Qjc1OTsxMTA0IDExNzQgMTFCQztCNzU5OzExMDQgMTE3NCAxMUJDOworQjc1QTtCNzVBOzExMDQgMTE3NCAxMUJEO0I3NUE7MTEwNCAxMTc0IDExQkQ7CitCNzVCO0I3NUI7MTEwNCAxMTc0IDExQkU7Qjc1QjsxMTA0IDExNzQgMTFCRTsKK0I3NUM7Qjc1QzsxMTA0IDExNzQgMTFCRjtCNzVDOzExMDQgMTE3NCAxMUJGOworQjc1RDtCNzVEOzExMDQgMTE3NCAxMUMwO0I3NUQ7MTEwNCAxMTc0IDExQzA7CitCNzVFO0I3NUU7MTEwNCAxMTc0IDExQzE7Qjc1RTsxMTA0IDExNzQgMTFDMTsKK0I3NUY7Qjc1RjsxMTA0IDExNzQgMTFDMjtCNzVGOzExMDQgMTE3NCAxMUMyOworQjc2MDtCNzYwOzExMDQgMTE3NTtCNzYwOzExMDQgMTE3NTsKK0I3NjE7Qjc2MTsxMTA0IDExNzUgMTFBODtCNzYxOzExMDQgMTE3NSAxMUE4OworQjc2MjtCNzYyOzExMDQgMTE3NSAxMUE5O0I3NjI7MTEwNCAxMTc1IDExQTk7CitCNzYzO0I3NjM7MTEwNCAxMTc1IDExQUE7Qjc2MzsxMTA0IDExNzUgMTFBQTsKK0I3NjQ7Qjc2NDsxMTA0IDExNzUgMTFBQjtCNzY0OzExMDQgMTE3NSAxMUFCOworQjc2NTtCNzY1OzExMDQgMTE3NSAxMUFDO0I3NjU7MTEwNCAxMTc1IDExQUM7CitCNzY2O0I3NjY7MTEwNCAxMTc1IDExQUQ7Qjc2NjsxMTA0IDExNzUgMTFBRDsKK0I3Njc7Qjc2NzsxMTA0IDExNzUgMTFBRTtCNzY3OzExMDQgMTE3NSAxMUFFOworQjc2ODtCNzY4OzExMDQgMTE3NSAxMUFGO0I3Njg7MTEwNCAxMTc1IDExQUY7CitCNzY5O0I3Njk7MTEwNCAxMTc1IDExQjA7Qjc2OTsxMTA0IDExNzUgMTFCMDsKK0I3NkE7Qjc2QTsxMTA0IDExNzUgMTFCMTtCNzZBOzExMDQgMTE3NSAxMUIxOworQjc2QjtCNzZCOzExMDQgMTE3NSAxMUIyO0I3NkI7MTEwNCAxMTc1IDExQjI7CitCNzZDO0I3NkM7MTEwNCAxMTc1IDExQjM7Qjc2QzsxMTA0IDExNzUgMTFCMzsKK0I3NkQ7Qjc2RDsxMTA0IDExNzUgMTFCNDtCNzZEOzExMDQgMTE3NSAxMUI0OworQjc2RTtCNzZFOzExMDQgMTE3NSAxMUI1O0I3NkU7MTEwNCAxMTc1IDExQjU7CitCNzZGO0I3NkY7MTEwNCAxMTc1IDExQjY7Qjc2RjsxMTA0IDExNzUgMTFCNjsKK0I3NzA7Qjc3MDsxMTA0IDExNzUgMTFCNztCNzcwOzExMDQgMTE3NSAxMUI3OworQjc3MTtCNzcxOzExMDQgMTE3NSAxMUI4O0I3NzE7MTEwNCAxMTc1IDExQjg7CitCNzcyO0I3NzI7MTEwNCAxMTc1IDExQjk7Qjc3MjsxMTA0IDExNzUgMTFCOTsKK0I3NzM7Qjc3MzsxMTA0IDExNzUgMTFCQTtCNzczOzExMDQgMTE3NSAxMUJBOworQjc3NDtCNzc0OzExMDQgMTE3NSAxMUJCO0I3NzQ7MTEwNCAxMTc1IDExQkI7CitCNzc1O0I3NzU7MTEwNCAxMTc1IDExQkM7Qjc3NTsxMTA0IDExNzUgMTFCQzsKK0I3NzY7Qjc3NjsxMTA0IDExNzUgMTFCRDtCNzc2OzExMDQgMTE3NSAxMUJEOworQjc3NztCNzc3OzExMDQgMTE3NSAxMUJFO0I3Nzc7MTEwNCAxMTc1IDExQkU7CitCNzc4O0I3Nzg7MTEwNCAxMTc1IDExQkY7Qjc3ODsxMTA0IDExNzUgMTFCRjsKK0I3Nzk7Qjc3OTsxMTA0IDExNzUgMTFDMDtCNzc5OzExMDQgMTE3NSAxMUMwOworQjc3QTtCNzdBOzExMDQgMTE3NSAxMUMxO0I3N0E7MTEwNCAxMTc1IDExQzE7CitCNzdCO0I3N0I7MTEwNCAxMTc1IDExQzI7Qjc3QjsxMTA0IDExNzUgMTFDMjsKK0I3N0M7Qjc3QzsxMTA1IDExNjE7Qjc3QzsxMTA1IDExNjE7CitCNzdEO0I3N0Q7MTEwNSAxMTYxIDExQTg7Qjc3RDsxMTA1IDExNjEgMTFBODsKK0I3N0U7Qjc3RTsxMTA1IDExNjEgMTFBOTtCNzdFOzExMDUgMTE2MSAxMUE5OworQjc3RjtCNzdGOzExMDUgMTE2MSAxMUFBO0I3N0Y7MTEwNSAxMTYxIDExQUE7CitCNzgwO0I3ODA7MTEwNSAxMTYxIDExQUI7Qjc4MDsxMTA1IDExNjEgMTFBQjsKK0I3ODE7Qjc4MTsxMTA1IDExNjEgMTFBQztCNzgxOzExMDUgMTE2MSAxMUFDOworQjc4MjtCNzgyOzExMDUgMTE2MSAxMUFEO0I3ODI7MTEwNSAxMTYxIDExQUQ7CitCNzgzO0I3ODM7MTEwNSAxMTYxIDExQUU7Qjc4MzsxMTA1IDExNjEgMTFBRTsKK0I3ODQ7Qjc4NDsxMTA1IDExNjEgMTFBRjtCNzg0OzExMDUgMTE2MSAxMUFGOworQjc4NTtCNzg1OzExMDUgMTE2MSAxMUIwO0I3ODU7MTEwNSAxMTYxIDExQjA7CitCNzg2O0I3ODY7MTEwNSAxMTYxIDExQjE7Qjc4NjsxMTA1IDExNjEgMTFCMTsKK0I3ODc7Qjc4NzsxMTA1IDExNjEgMTFCMjtCNzg3OzExMDUgMTE2MSAxMUIyOworQjc4ODtCNzg4OzExMDUgMTE2MSAxMUIzO0I3ODg7MTEwNSAxMTYxIDExQjM7CitCNzg5O0I3ODk7MTEwNSAxMTYxIDExQjQ7Qjc4OTsxMTA1IDExNjEgMTFCNDsKK0I3OEE7Qjc4QTsxMTA1IDExNjEgMTFCNTtCNzhBOzExMDUgMTE2MSAxMUI1OworQjc4QjtCNzhCOzExMDUgMTE2MSAxMUI2O0I3OEI7MTEwNSAxMTYxIDExQjY7CitCNzhDO0I3OEM7MTEwNSAxMTYxIDExQjc7Qjc4QzsxMTA1IDExNjEgMTFCNzsKK0I3OEQ7Qjc4RDsxMTA1IDExNjEgMTFCODtCNzhEOzExMDUgMTE2MSAxMUI4OworQjc4RTtCNzhFOzExMDUgMTE2MSAxMUI5O0I3OEU7MTEwNSAxMTYxIDExQjk7CitCNzhGO0I3OEY7MTEwNSAxMTYxIDExQkE7Qjc4RjsxMTA1IDExNjEgMTFCQTsKK0I3OTA7Qjc5MDsxMTA1IDExNjEgMTFCQjtCNzkwOzExMDUgMTE2MSAxMUJCOworQjc5MTtCNzkxOzExMDUgMTE2MSAxMUJDO0I3OTE7MTEwNSAxMTYxIDExQkM7CitCNzkyO0I3OTI7MTEwNSAxMTYxIDExQkQ7Qjc5MjsxMTA1IDExNjEgMTFCRDsKK0I3OTM7Qjc5MzsxMTA1IDExNjEgMTFCRTtCNzkzOzExMDUgMTE2MSAxMUJFOworQjc5NDtCNzk0OzExMDUgMTE2MSAxMUJGO0I3OTQ7MTEwNSAxMTYxIDExQkY7CitCNzk1O0I3OTU7MTEwNSAxMTYxIDExQzA7Qjc5NTsxMTA1IDExNjEgMTFDMDsKK0I3OTY7Qjc5NjsxMTA1IDExNjEgMTFDMTtCNzk2OzExMDUgMTE2MSAxMUMxOworQjc5NztCNzk3OzExMDUgMTE2MSAxMUMyO0I3OTc7MTEwNSAxMTYxIDExQzI7CitCNzk4O0I3OTg7MTEwNSAxMTYyO0I3OTg7MTEwNSAxMTYyOworQjc5OTtCNzk5OzExMDUgMTE2MiAxMUE4O0I3OTk7MTEwNSAxMTYyIDExQTg7CitCNzlBO0I3OUE7MTEwNSAxMTYyIDExQTk7Qjc5QTsxMTA1IDExNjIgMTFBOTsKK0I3OUI7Qjc5QjsxMTA1IDExNjIgMTFBQTtCNzlCOzExMDUgMTE2MiAxMUFBOworQjc5QztCNzlDOzExMDUgMTE2MiAxMUFCO0I3OUM7MTEwNSAxMTYyIDExQUI7CitCNzlEO0I3OUQ7MTEwNSAxMTYyIDExQUM7Qjc5RDsxMTA1IDExNjIgMTFBQzsKK0I3OUU7Qjc5RTsxMTA1IDExNjIgMTFBRDtCNzlFOzExMDUgMTE2MiAxMUFEOworQjc5RjtCNzlGOzExMDUgMTE2MiAxMUFFO0I3OUY7MTEwNSAxMTYyIDExQUU7CitCN0EwO0I3QTA7MTEwNSAxMTYyIDExQUY7QjdBMDsxMTA1IDExNjIgMTFBRjsKK0I3QTE7QjdBMTsxMTA1IDExNjIgMTFCMDtCN0ExOzExMDUgMTE2MiAxMUIwOworQjdBMjtCN0EyOzExMDUgMTE2MiAxMUIxO0I3QTI7MTEwNSAxMTYyIDExQjE7CitCN0EzO0I3QTM7MTEwNSAxMTYyIDExQjI7QjdBMzsxMTA1IDExNjIgMTFCMjsKK0I3QTQ7QjdBNDsxMTA1IDExNjIgMTFCMztCN0E0OzExMDUgMTE2MiAxMUIzOworQjdBNTtCN0E1OzExMDUgMTE2MiAxMUI0O0I3QTU7MTEwNSAxMTYyIDExQjQ7CitCN0E2O0I3QTY7MTEwNSAxMTYyIDExQjU7QjdBNjsxMTA1IDExNjIgMTFCNTsKK0I3QTc7QjdBNzsxMTA1IDExNjIgMTFCNjtCN0E3OzExMDUgMTE2MiAxMUI2OworQjdBODtCN0E4OzExMDUgMTE2MiAxMUI3O0I3QTg7MTEwNSAxMTYyIDExQjc7CitCN0E5O0I3QTk7MTEwNSAxMTYyIDExQjg7QjdBOTsxMTA1IDExNjIgMTFCODsKK0I3QUE7QjdBQTsxMTA1IDExNjIgMTFCOTtCN0FBOzExMDUgMTE2MiAxMUI5OworQjdBQjtCN0FCOzExMDUgMTE2MiAxMUJBO0I3QUI7MTEwNSAxMTYyIDExQkE7CitCN0FDO0I3QUM7MTEwNSAxMTYyIDExQkI7QjdBQzsxMTA1IDExNjIgMTFCQjsKK0I3QUQ7QjdBRDsxMTA1IDExNjIgMTFCQztCN0FEOzExMDUgMTE2MiAxMUJDOworQjdBRTtCN0FFOzExMDUgMTE2MiAxMUJEO0I3QUU7MTEwNSAxMTYyIDExQkQ7CitCN0FGO0I3QUY7MTEwNSAxMTYyIDExQkU7QjdBRjsxMTA1IDExNjIgMTFCRTsKK0I3QjA7QjdCMDsxMTA1IDExNjIgMTFCRjtCN0IwOzExMDUgMTE2MiAxMUJGOworQjdCMTtCN0IxOzExMDUgMTE2MiAxMUMwO0I3QjE7MTEwNSAxMTYyIDExQzA7CitCN0IyO0I3QjI7MTEwNSAxMTYyIDExQzE7QjdCMjsxMTA1IDExNjIgMTFDMTsKK0I3QjM7QjdCMzsxMTA1IDExNjIgMTFDMjtCN0IzOzExMDUgMTE2MiAxMUMyOworQjdCNDtCN0I0OzExMDUgMTE2MztCN0I0OzExMDUgMTE2MzsKK0I3QjU7QjdCNTsxMTA1IDExNjMgMTFBODtCN0I1OzExMDUgMTE2MyAxMUE4OworQjdCNjtCN0I2OzExMDUgMTE2MyAxMUE5O0I3QjY7MTEwNSAxMTYzIDExQTk7CitCN0I3O0I3Qjc7MTEwNSAxMTYzIDExQUE7QjdCNzsxMTA1IDExNjMgMTFBQTsKK0I3Qjg7QjdCODsxMTA1IDExNjMgMTFBQjtCN0I4OzExMDUgMTE2MyAxMUFCOworQjdCOTtCN0I5OzExMDUgMTE2MyAxMUFDO0I3Qjk7MTEwNSAxMTYzIDExQUM7CitCN0JBO0I3QkE7MTEwNSAxMTYzIDExQUQ7QjdCQTsxMTA1IDExNjMgMTFBRDsKK0I3QkI7QjdCQjsxMTA1IDExNjMgMTFBRTtCN0JCOzExMDUgMTE2MyAxMUFFOworQjdCQztCN0JDOzExMDUgMTE2MyAxMUFGO0I3QkM7MTEwNSAxMTYzIDExQUY7CitCN0JEO0I3QkQ7MTEwNSAxMTYzIDExQjA7QjdCRDsxMTA1IDExNjMgMTFCMDsKK0I3QkU7QjdCRTsxMTA1IDExNjMgMTFCMTtCN0JFOzExMDUgMTE2MyAxMUIxOworQjdCRjtCN0JGOzExMDUgMTE2MyAxMUIyO0I3QkY7MTEwNSAxMTYzIDExQjI7CitCN0MwO0I3QzA7MTEwNSAxMTYzIDExQjM7QjdDMDsxMTA1IDExNjMgMTFCMzsKK0I3QzE7QjdDMTsxMTA1IDExNjMgMTFCNDtCN0MxOzExMDUgMTE2MyAxMUI0OworQjdDMjtCN0MyOzExMDUgMTE2MyAxMUI1O0I3QzI7MTEwNSAxMTYzIDExQjU7CitCN0MzO0I3QzM7MTEwNSAxMTYzIDExQjY7QjdDMzsxMTA1IDExNjMgMTFCNjsKK0I3QzQ7QjdDNDsxMTA1IDExNjMgMTFCNztCN0M0OzExMDUgMTE2MyAxMUI3OworQjdDNTtCN0M1OzExMDUgMTE2MyAxMUI4O0I3QzU7MTEwNSAxMTYzIDExQjg7CitCN0M2O0I3QzY7MTEwNSAxMTYzIDExQjk7QjdDNjsxMTA1IDExNjMgMTFCOTsKK0I3Qzc7QjdDNzsxMTA1IDExNjMgMTFCQTtCN0M3OzExMDUgMTE2MyAxMUJBOworQjdDODtCN0M4OzExMDUgMTE2MyAxMUJCO0I3Qzg7MTEwNSAxMTYzIDExQkI7CitCN0M5O0I3Qzk7MTEwNSAxMTYzIDExQkM7QjdDOTsxMTA1IDExNjMgMTFCQzsKK0I3Q0E7QjdDQTsxMTA1IDExNjMgMTFCRDtCN0NBOzExMDUgMTE2MyAxMUJEOworQjdDQjtCN0NCOzExMDUgMTE2MyAxMUJFO0I3Q0I7MTEwNSAxMTYzIDExQkU7CitCN0NDO0I3Q0M7MTEwNSAxMTYzIDExQkY7QjdDQzsxMTA1IDExNjMgMTFCRjsKK0I3Q0Q7QjdDRDsxMTA1IDExNjMgMTFDMDtCN0NEOzExMDUgMTE2MyAxMUMwOworQjdDRTtCN0NFOzExMDUgMTE2MyAxMUMxO0I3Q0U7MTEwNSAxMTYzIDExQzE7CitCN0NGO0I3Q0Y7MTEwNSAxMTYzIDExQzI7QjdDRjsxMTA1IDExNjMgMTFDMjsKK0I3RDA7QjdEMDsxMTA1IDExNjQ7QjdEMDsxMTA1IDExNjQ7CitCN0QxO0I3RDE7MTEwNSAxMTY0IDExQTg7QjdEMTsxMTA1IDExNjQgMTFBODsKK0I3RDI7QjdEMjsxMTA1IDExNjQgMTFBOTtCN0QyOzExMDUgMTE2NCAxMUE5OworQjdEMztCN0QzOzExMDUgMTE2NCAxMUFBO0I3RDM7MTEwNSAxMTY0IDExQUE7CitCN0Q0O0I3RDQ7MTEwNSAxMTY0IDExQUI7QjdENDsxMTA1IDExNjQgMTFBQjsKK0I3RDU7QjdENTsxMTA1IDExNjQgMTFBQztCN0Q1OzExMDUgMTE2NCAxMUFDOworQjdENjtCN0Q2OzExMDUgMTE2NCAxMUFEO0I3RDY7MTEwNSAxMTY0IDExQUQ7CitCN0Q3O0I3RDc7MTEwNSAxMTY0IDExQUU7QjdENzsxMTA1IDExNjQgMTFBRTsKK0I3RDg7QjdEODsxMTA1IDExNjQgMTFBRjtCN0Q4OzExMDUgMTE2NCAxMUFGOworQjdEOTtCN0Q5OzExMDUgMTE2NCAxMUIwO0I3RDk7MTEwNSAxMTY0IDExQjA7CitCN0RBO0I3REE7MTEwNSAxMTY0IDExQjE7QjdEQTsxMTA1IDExNjQgMTFCMTsKK0I3REI7QjdEQjsxMTA1IDExNjQgMTFCMjtCN0RCOzExMDUgMTE2NCAxMUIyOworQjdEQztCN0RDOzExMDUgMTE2NCAxMUIzO0I3REM7MTEwNSAxMTY0IDExQjM7CitCN0REO0I3REQ7MTEwNSAxMTY0IDExQjQ7QjdERDsxMTA1IDExNjQgMTFCNDsKK0I3REU7QjdERTsxMTA1IDExNjQgMTFCNTtCN0RFOzExMDUgMTE2NCAxMUI1OworQjdERjtCN0RGOzExMDUgMTE2NCAxMUI2O0I3REY7MTEwNSAxMTY0IDExQjY7CitCN0UwO0I3RTA7MTEwNSAxMTY0IDExQjc7QjdFMDsxMTA1IDExNjQgMTFCNzsKK0I3RTE7QjdFMTsxMTA1IDExNjQgMTFCODtCN0UxOzExMDUgMTE2NCAxMUI4OworQjdFMjtCN0UyOzExMDUgMTE2NCAxMUI5O0I3RTI7MTEwNSAxMTY0IDExQjk7CitCN0UzO0I3RTM7MTEwNSAxMTY0IDExQkE7QjdFMzsxMTA1IDExNjQgMTFCQTsKK0I3RTQ7QjdFNDsxMTA1IDExNjQgMTFCQjtCN0U0OzExMDUgMTE2NCAxMUJCOworQjdFNTtCN0U1OzExMDUgMTE2NCAxMUJDO0I3RTU7MTEwNSAxMTY0IDExQkM7CitCN0U2O0I3RTY7MTEwNSAxMTY0IDExQkQ7QjdFNjsxMTA1IDExNjQgMTFCRDsKK0I3RTc7QjdFNzsxMTA1IDExNjQgMTFCRTtCN0U3OzExMDUgMTE2NCAxMUJFOworQjdFODtCN0U4OzExMDUgMTE2NCAxMUJGO0I3RTg7MTEwNSAxMTY0IDExQkY7CitCN0U5O0I3RTk7MTEwNSAxMTY0IDExQzA7QjdFOTsxMTA1IDExNjQgMTFDMDsKK0I3RUE7QjdFQTsxMTA1IDExNjQgMTFDMTtCN0VBOzExMDUgMTE2NCAxMUMxOworQjdFQjtCN0VCOzExMDUgMTE2NCAxMUMyO0I3RUI7MTEwNSAxMTY0IDExQzI7CitCN0VDO0I3RUM7MTEwNSAxMTY1O0I3RUM7MTEwNSAxMTY1OworQjdFRDtCN0VEOzExMDUgMTE2NSAxMUE4O0I3RUQ7MTEwNSAxMTY1IDExQTg7CitCN0VFO0I3RUU7MTEwNSAxMTY1IDExQTk7QjdFRTsxMTA1IDExNjUgMTFBOTsKK0I3RUY7QjdFRjsxMTA1IDExNjUgMTFBQTtCN0VGOzExMDUgMTE2NSAxMUFBOworQjdGMDtCN0YwOzExMDUgMTE2NSAxMUFCO0I3RjA7MTEwNSAxMTY1IDExQUI7CitCN0YxO0I3RjE7MTEwNSAxMTY1IDExQUM7QjdGMTsxMTA1IDExNjUgMTFBQzsKK0I3RjI7QjdGMjsxMTA1IDExNjUgMTFBRDtCN0YyOzExMDUgMTE2NSAxMUFEOworQjdGMztCN0YzOzExMDUgMTE2NSAxMUFFO0I3RjM7MTEwNSAxMTY1IDExQUU7CitCN0Y0O0I3RjQ7MTEwNSAxMTY1IDExQUY7QjdGNDsxMTA1IDExNjUgMTFBRjsKK0I3RjU7QjdGNTsxMTA1IDExNjUgMTFCMDtCN0Y1OzExMDUgMTE2NSAxMUIwOworQjdGNjtCN0Y2OzExMDUgMTE2NSAxMUIxO0I3RjY7MTEwNSAxMTY1IDExQjE7CitCN0Y3O0I3Rjc7MTEwNSAxMTY1IDExQjI7QjdGNzsxMTA1IDExNjUgMTFCMjsKK0I3Rjg7QjdGODsxMTA1IDExNjUgMTFCMztCN0Y4OzExMDUgMTE2NSAxMUIzOworQjdGOTtCN0Y5OzExMDUgMTE2NSAxMUI0O0I3Rjk7MTEwNSAxMTY1IDExQjQ7CitCN0ZBO0I3RkE7MTEwNSAxMTY1IDExQjU7QjdGQTsxMTA1IDExNjUgMTFCNTsKK0I3RkI7QjdGQjsxMTA1IDExNjUgMTFCNjtCN0ZCOzExMDUgMTE2NSAxMUI2OworQjdGQztCN0ZDOzExMDUgMTE2NSAxMUI3O0I3RkM7MTEwNSAxMTY1IDExQjc7CitCN0ZEO0I3RkQ7MTEwNSAxMTY1IDExQjg7QjdGRDsxMTA1IDExNjUgMTFCODsKK0I3RkU7QjdGRTsxMTA1IDExNjUgMTFCOTtCN0ZFOzExMDUgMTE2NSAxMUI5OworQjdGRjtCN0ZGOzExMDUgMTE2NSAxMUJBO0I3RkY7MTEwNSAxMTY1IDExQkE7CitCODAwO0I4MDA7MTEwNSAxMTY1IDExQkI7QjgwMDsxMTA1IDExNjUgMTFCQjsKK0I4MDE7QjgwMTsxMTA1IDExNjUgMTFCQztCODAxOzExMDUgMTE2NSAxMUJDOworQjgwMjtCODAyOzExMDUgMTE2NSAxMUJEO0I4MDI7MTEwNSAxMTY1IDExQkQ7CitCODAzO0I4MDM7MTEwNSAxMTY1IDExQkU7QjgwMzsxMTA1IDExNjUgMTFCRTsKK0I4MDQ7QjgwNDsxMTA1IDExNjUgMTFCRjtCODA0OzExMDUgMTE2NSAxMUJGOworQjgwNTtCODA1OzExMDUgMTE2NSAxMUMwO0I4MDU7MTEwNSAxMTY1IDExQzA7CitCODA2O0I4MDY7MTEwNSAxMTY1IDExQzE7QjgwNjsxMTA1IDExNjUgMTFDMTsKK0I4MDc7QjgwNzsxMTA1IDExNjUgMTFDMjtCODA3OzExMDUgMTE2NSAxMUMyOworQjgwODtCODA4OzExMDUgMTE2NjtCODA4OzExMDUgMTE2NjsKK0I4MDk7QjgwOTsxMTA1IDExNjYgMTFBODtCODA5OzExMDUgMTE2NiAxMUE4OworQjgwQTtCODBBOzExMDUgMTE2NiAxMUE5O0I4MEE7MTEwNSAxMTY2IDExQTk7CitCODBCO0I4MEI7MTEwNSAxMTY2IDExQUE7QjgwQjsxMTA1IDExNjYgMTFBQTsKK0I4MEM7QjgwQzsxMTA1IDExNjYgMTFBQjtCODBDOzExMDUgMTE2NiAxMUFCOworQjgwRDtCODBEOzExMDUgMTE2NiAxMUFDO0I4MEQ7MTEwNSAxMTY2IDExQUM7CitCODBFO0I4MEU7MTEwNSAxMTY2IDExQUQ7QjgwRTsxMTA1IDExNjYgMTFBRDsKK0I4MEY7QjgwRjsxMTA1IDExNjYgMTFBRTtCODBGOzExMDUgMTE2NiAxMUFFOworQjgxMDtCODEwOzExMDUgMTE2NiAxMUFGO0I4MTA7MTEwNSAxMTY2IDExQUY7CitCODExO0I4MTE7MTEwNSAxMTY2IDExQjA7QjgxMTsxMTA1IDExNjYgMTFCMDsKK0I4MTI7QjgxMjsxMTA1IDExNjYgMTFCMTtCODEyOzExMDUgMTE2NiAxMUIxOworQjgxMztCODEzOzExMDUgMTE2NiAxMUIyO0I4MTM7MTEwNSAxMTY2IDExQjI7CitCODE0O0I4MTQ7MTEwNSAxMTY2IDExQjM7QjgxNDsxMTA1IDExNjYgMTFCMzsKK0I4MTU7QjgxNTsxMTA1IDExNjYgMTFCNDtCODE1OzExMDUgMTE2NiAxMUI0OworQjgxNjtCODE2OzExMDUgMTE2NiAxMUI1O0I4MTY7MTEwNSAxMTY2IDExQjU7CitCODE3O0I4MTc7MTEwNSAxMTY2IDExQjY7QjgxNzsxMTA1IDExNjYgMTFCNjsKK0I4MTg7QjgxODsxMTA1IDExNjYgMTFCNztCODE4OzExMDUgMTE2NiAxMUI3OworQjgxOTtCODE5OzExMDUgMTE2NiAxMUI4O0I4MTk7MTEwNSAxMTY2IDExQjg7CitCODFBO0I4MUE7MTEwNSAxMTY2IDExQjk7QjgxQTsxMTA1IDExNjYgMTFCOTsKK0I4MUI7QjgxQjsxMTA1IDExNjYgMTFCQTtCODFCOzExMDUgMTE2NiAxMUJBOworQjgxQztCODFDOzExMDUgMTE2NiAxMUJCO0I4MUM7MTEwNSAxMTY2IDExQkI7CitCODFEO0I4MUQ7MTEwNSAxMTY2IDExQkM7QjgxRDsxMTA1IDExNjYgMTFCQzsKK0I4MUU7QjgxRTsxMTA1IDExNjYgMTFCRDtCODFFOzExMDUgMTE2NiAxMUJEOworQjgxRjtCODFGOzExMDUgMTE2NiAxMUJFO0I4MUY7MTEwNSAxMTY2IDExQkU7CitCODIwO0I4MjA7MTEwNSAxMTY2IDExQkY7QjgyMDsxMTA1IDExNjYgMTFCRjsKK0I4MjE7QjgyMTsxMTA1IDExNjYgMTFDMDtCODIxOzExMDUgMTE2NiAxMUMwOworQjgyMjtCODIyOzExMDUgMTE2NiAxMUMxO0I4MjI7MTEwNSAxMTY2IDExQzE7CitCODIzO0I4MjM7MTEwNSAxMTY2IDExQzI7QjgyMzsxMTA1IDExNjYgMTFDMjsKK0I4MjQ7QjgyNDsxMTA1IDExNjc7QjgyNDsxMTA1IDExNjc7CitCODI1O0I4MjU7MTEwNSAxMTY3IDExQTg7QjgyNTsxMTA1IDExNjcgMTFBODsKK0I4MjY7QjgyNjsxMTA1IDExNjcgMTFBOTtCODI2OzExMDUgMTE2NyAxMUE5OworQjgyNztCODI3OzExMDUgMTE2NyAxMUFBO0I4Mjc7MTEwNSAxMTY3IDExQUE7CitCODI4O0I4Mjg7MTEwNSAxMTY3IDExQUI7QjgyODsxMTA1IDExNjcgMTFBQjsKK0I4Mjk7QjgyOTsxMTA1IDExNjcgMTFBQztCODI5OzExMDUgMTE2NyAxMUFDOworQjgyQTtCODJBOzExMDUgMTE2NyAxMUFEO0I4MkE7MTEwNSAxMTY3IDExQUQ7CitCODJCO0I4MkI7MTEwNSAxMTY3IDExQUU7QjgyQjsxMTA1IDExNjcgMTFBRTsKK0I4MkM7QjgyQzsxMTA1IDExNjcgMTFBRjtCODJDOzExMDUgMTE2NyAxMUFGOworQjgyRDtCODJEOzExMDUgMTE2NyAxMUIwO0I4MkQ7MTEwNSAxMTY3IDExQjA7CitCODJFO0I4MkU7MTEwNSAxMTY3IDExQjE7QjgyRTsxMTA1IDExNjcgMTFCMTsKK0I4MkY7QjgyRjsxMTA1IDExNjcgMTFCMjtCODJGOzExMDUgMTE2NyAxMUIyOworQjgzMDtCODMwOzExMDUgMTE2NyAxMUIzO0I4MzA7MTEwNSAxMTY3IDExQjM7CitCODMxO0I4MzE7MTEwNSAxMTY3IDExQjQ7QjgzMTsxMTA1IDExNjcgMTFCNDsKK0I4MzI7QjgzMjsxMTA1IDExNjcgMTFCNTtCODMyOzExMDUgMTE2NyAxMUI1OworQjgzMztCODMzOzExMDUgMTE2NyAxMUI2O0I4MzM7MTEwNSAxMTY3IDExQjY7CitCODM0O0I4MzQ7MTEwNSAxMTY3IDExQjc7QjgzNDsxMTA1IDExNjcgMTFCNzsKK0I4MzU7QjgzNTsxMTA1IDExNjcgMTFCODtCODM1OzExMDUgMTE2NyAxMUI4OworQjgzNjtCODM2OzExMDUgMTE2NyAxMUI5O0I4MzY7MTEwNSAxMTY3IDExQjk7CitCODM3O0I4Mzc7MTEwNSAxMTY3IDExQkE7QjgzNzsxMTA1IDExNjcgMTFCQTsKK0I4Mzg7QjgzODsxMTA1IDExNjcgMTFCQjtCODM4OzExMDUgMTE2NyAxMUJCOworQjgzOTtCODM5OzExMDUgMTE2NyAxMUJDO0I4Mzk7MTEwNSAxMTY3IDExQkM7CitCODNBO0I4M0E7MTEwNSAxMTY3IDExQkQ7QjgzQTsxMTA1IDExNjcgMTFCRDsKK0I4M0I7QjgzQjsxMTA1IDExNjcgMTFCRTtCODNCOzExMDUgMTE2NyAxMUJFOworQjgzQztCODNDOzExMDUgMTE2NyAxMUJGO0I4M0M7MTEwNSAxMTY3IDExQkY7CitCODNEO0I4M0Q7MTEwNSAxMTY3IDExQzA7QjgzRDsxMTA1IDExNjcgMTFDMDsKK0I4M0U7QjgzRTsxMTA1IDExNjcgMTFDMTtCODNFOzExMDUgMTE2NyAxMUMxOworQjgzRjtCODNGOzExMDUgMTE2NyAxMUMyO0I4M0Y7MTEwNSAxMTY3IDExQzI7CitCODQwO0I4NDA7MTEwNSAxMTY4O0I4NDA7MTEwNSAxMTY4OworQjg0MTtCODQxOzExMDUgMTE2OCAxMUE4O0I4NDE7MTEwNSAxMTY4IDExQTg7CitCODQyO0I4NDI7MTEwNSAxMTY4IDExQTk7Qjg0MjsxMTA1IDExNjggMTFBOTsKK0I4NDM7Qjg0MzsxMTA1IDExNjggMTFBQTtCODQzOzExMDUgMTE2OCAxMUFBOworQjg0NDtCODQ0OzExMDUgMTE2OCAxMUFCO0I4NDQ7MTEwNSAxMTY4IDExQUI7CitCODQ1O0I4NDU7MTEwNSAxMTY4IDExQUM7Qjg0NTsxMTA1IDExNjggMTFBQzsKK0I4NDY7Qjg0NjsxMTA1IDExNjggMTFBRDtCODQ2OzExMDUgMTE2OCAxMUFEOworQjg0NztCODQ3OzExMDUgMTE2OCAxMUFFO0I4NDc7MTEwNSAxMTY4IDExQUU7CitCODQ4O0I4NDg7MTEwNSAxMTY4IDExQUY7Qjg0ODsxMTA1IDExNjggMTFBRjsKK0I4NDk7Qjg0OTsxMTA1IDExNjggMTFCMDtCODQ5OzExMDUgMTE2OCAxMUIwOworQjg0QTtCODRBOzExMDUgMTE2OCAxMUIxO0I4NEE7MTEwNSAxMTY4IDExQjE7CitCODRCO0I4NEI7MTEwNSAxMTY4IDExQjI7Qjg0QjsxMTA1IDExNjggMTFCMjsKK0I4NEM7Qjg0QzsxMTA1IDExNjggMTFCMztCODRDOzExMDUgMTE2OCAxMUIzOworQjg0RDtCODREOzExMDUgMTE2OCAxMUI0O0I4NEQ7MTEwNSAxMTY4IDExQjQ7CitCODRFO0I4NEU7MTEwNSAxMTY4IDExQjU7Qjg0RTsxMTA1IDExNjggMTFCNTsKK0I4NEY7Qjg0RjsxMTA1IDExNjggMTFCNjtCODRGOzExMDUgMTE2OCAxMUI2OworQjg1MDtCODUwOzExMDUgMTE2OCAxMUI3O0I4NTA7MTEwNSAxMTY4IDExQjc7CitCODUxO0I4NTE7MTEwNSAxMTY4IDExQjg7Qjg1MTsxMTA1IDExNjggMTFCODsKK0I4NTI7Qjg1MjsxMTA1IDExNjggMTFCOTtCODUyOzExMDUgMTE2OCAxMUI5OworQjg1MztCODUzOzExMDUgMTE2OCAxMUJBO0I4NTM7MTEwNSAxMTY4IDExQkE7CitCODU0O0I4NTQ7MTEwNSAxMTY4IDExQkI7Qjg1NDsxMTA1IDExNjggMTFCQjsKK0I4NTU7Qjg1NTsxMTA1IDExNjggMTFCQztCODU1OzExMDUgMTE2OCAxMUJDOworQjg1NjtCODU2OzExMDUgMTE2OCAxMUJEO0I4NTY7MTEwNSAxMTY4IDExQkQ7CitCODU3O0I4NTc7MTEwNSAxMTY4IDExQkU7Qjg1NzsxMTA1IDExNjggMTFCRTsKK0I4NTg7Qjg1ODsxMTA1IDExNjggMTFCRjtCODU4OzExMDUgMTE2OCAxMUJGOworQjg1OTtCODU5OzExMDUgMTE2OCAxMUMwO0I4NTk7MTEwNSAxMTY4IDExQzA7CitCODVBO0I4NUE7MTEwNSAxMTY4IDExQzE7Qjg1QTsxMTA1IDExNjggMTFDMTsKK0I4NUI7Qjg1QjsxMTA1IDExNjggMTFDMjtCODVCOzExMDUgMTE2OCAxMUMyOworQjg1QztCODVDOzExMDUgMTE2OTtCODVDOzExMDUgMTE2OTsKK0I4NUQ7Qjg1RDsxMTA1IDExNjkgMTFBODtCODVEOzExMDUgMTE2OSAxMUE4OworQjg1RTtCODVFOzExMDUgMTE2OSAxMUE5O0I4NUU7MTEwNSAxMTY5IDExQTk7CitCODVGO0I4NUY7MTEwNSAxMTY5IDExQUE7Qjg1RjsxMTA1IDExNjkgMTFBQTsKK0I4NjA7Qjg2MDsxMTA1IDExNjkgMTFBQjtCODYwOzExMDUgMTE2OSAxMUFCOworQjg2MTtCODYxOzExMDUgMTE2OSAxMUFDO0I4NjE7MTEwNSAxMTY5IDExQUM7CitCODYyO0I4NjI7MTEwNSAxMTY5IDExQUQ7Qjg2MjsxMTA1IDExNjkgMTFBRDsKK0I4NjM7Qjg2MzsxMTA1IDExNjkgMTFBRTtCODYzOzExMDUgMTE2OSAxMUFFOworQjg2NDtCODY0OzExMDUgMTE2OSAxMUFGO0I4NjQ7MTEwNSAxMTY5IDExQUY7CitCODY1O0I4NjU7MTEwNSAxMTY5IDExQjA7Qjg2NTsxMTA1IDExNjkgMTFCMDsKK0I4NjY7Qjg2NjsxMTA1IDExNjkgMTFCMTtCODY2OzExMDUgMTE2OSAxMUIxOworQjg2NztCODY3OzExMDUgMTE2OSAxMUIyO0I4Njc7MTEwNSAxMTY5IDExQjI7CitCODY4O0I4Njg7MTEwNSAxMTY5IDExQjM7Qjg2ODsxMTA1IDExNjkgMTFCMzsKK0I4Njk7Qjg2OTsxMTA1IDExNjkgMTFCNDtCODY5OzExMDUgMTE2OSAxMUI0OworQjg2QTtCODZBOzExMDUgMTE2OSAxMUI1O0I4NkE7MTEwNSAxMTY5IDExQjU7CitCODZCO0I4NkI7MTEwNSAxMTY5IDExQjY7Qjg2QjsxMTA1IDExNjkgMTFCNjsKK0I4NkM7Qjg2QzsxMTA1IDExNjkgMTFCNztCODZDOzExMDUgMTE2OSAxMUI3OworQjg2RDtCODZEOzExMDUgMTE2OSAxMUI4O0I4NkQ7MTEwNSAxMTY5IDExQjg7CitCODZFO0I4NkU7MTEwNSAxMTY5IDExQjk7Qjg2RTsxMTA1IDExNjkgMTFCOTsKK0I4NkY7Qjg2RjsxMTA1IDExNjkgMTFCQTtCODZGOzExMDUgMTE2OSAxMUJBOworQjg3MDtCODcwOzExMDUgMTE2OSAxMUJCO0I4NzA7MTEwNSAxMTY5IDExQkI7CitCODcxO0I4NzE7MTEwNSAxMTY5IDExQkM7Qjg3MTsxMTA1IDExNjkgMTFCQzsKK0I4NzI7Qjg3MjsxMTA1IDExNjkgMTFCRDtCODcyOzExMDUgMTE2OSAxMUJEOworQjg3MztCODczOzExMDUgMTE2OSAxMUJFO0I4NzM7MTEwNSAxMTY5IDExQkU7CitCODc0O0I4NzQ7MTEwNSAxMTY5IDExQkY7Qjg3NDsxMTA1IDExNjkgMTFCRjsKK0I4NzU7Qjg3NTsxMTA1IDExNjkgMTFDMDtCODc1OzExMDUgMTE2OSAxMUMwOworQjg3NjtCODc2OzExMDUgMTE2OSAxMUMxO0I4NzY7MTEwNSAxMTY5IDExQzE7CitCODc3O0I4Nzc7MTEwNSAxMTY5IDExQzI7Qjg3NzsxMTA1IDExNjkgMTFDMjsKK0I4Nzg7Qjg3ODsxMTA1IDExNkE7Qjg3ODsxMTA1IDExNkE7CitCODc5O0I4Nzk7MTEwNSAxMTZBIDExQTg7Qjg3OTsxMTA1IDExNkEgMTFBODsKK0I4N0E7Qjg3QTsxMTA1IDExNkEgMTFBOTtCODdBOzExMDUgMTE2QSAxMUE5OworQjg3QjtCODdCOzExMDUgMTE2QSAxMUFBO0I4N0I7MTEwNSAxMTZBIDExQUE7CitCODdDO0I4N0M7MTEwNSAxMTZBIDExQUI7Qjg3QzsxMTA1IDExNkEgMTFBQjsKK0I4N0Q7Qjg3RDsxMTA1IDExNkEgMTFBQztCODdEOzExMDUgMTE2QSAxMUFDOworQjg3RTtCODdFOzExMDUgMTE2QSAxMUFEO0I4N0U7MTEwNSAxMTZBIDExQUQ7CitCODdGO0I4N0Y7MTEwNSAxMTZBIDExQUU7Qjg3RjsxMTA1IDExNkEgMTFBRTsKK0I4ODA7Qjg4MDsxMTA1IDExNkEgMTFBRjtCODgwOzExMDUgMTE2QSAxMUFGOworQjg4MTtCODgxOzExMDUgMTE2QSAxMUIwO0I4ODE7MTEwNSAxMTZBIDExQjA7CitCODgyO0I4ODI7MTEwNSAxMTZBIDExQjE7Qjg4MjsxMTA1IDExNkEgMTFCMTsKK0I4ODM7Qjg4MzsxMTA1IDExNkEgMTFCMjtCODgzOzExMDUgMTE2QSAxMUIyOworQjg4NDtCODg0OzExMDUgMTE2QSAxMUIzO0I4ODQ7MTEwNSAxMTZBIDExQjM7CitCODg1O0I4ODU7MTEwNSAxMTZBIDExQjQ7Qjg4NTsxMTA1IDExNkEgMTFCNDsKK0I4ODY7Qjg4NjsxMTA1IDExNkEgMTFCNTtCODg2OzExMDUgMTE2QSAxMUI1OworQjg4NztCODg3OzExMDUgMTE2QSAxMUI2O0I4ODc7MTEwNSAxMTZBIDExQjY7CitCODg4O0I4ODg7MTEwNSAxMTZBIDExQjc7Qjg4ODsxMTA1IDExNkEgMTFCNzsKK0I4ODk7Qjg4OTsxMTA1IDExNkEgMTFCODtCODg5OzExMDUgMTE2QSAxMUI4OworQjg4QTtCODhBOzExMDUgMTE2QSAxMUI5O0I4OEE7MTEwNSAxMTZBIDExQjk7CitCODhCO0I4OEI7MTEwNSAxMTZBIDExQkE7Qjg4QjsxMTA1IDExNkEgMTFCQTsKK0I4OEM7Qjg4QzsxMTA1IDExNkEgMTFCQjtCODhDOzExMDUgMTE2QSAxMUJCOworQjg4RDtCODhEOzExMDUgMTE2QSAxMUJDO0I4OEQ7MTEwNSAxMTZBIDExQkM7CitCODhFO0I4OEU7MTEwNSAxMTZBIDExQkQ7Qjg4RTsxMTA1IDExNkEgMTFCRDsKK0I4OEY7Qjg4RjsxMTA1IDExNkEgMTFCRTtCODhGOzExMDUgMTE2QSAxMUJFOworQjg5MDtCODkwOzExMDUgMTE2QSAxMUJGO0I4OTA7MTEwNSAxMTZBIDExQkY7CitCODkxO0I4OTE7MTEwNSAxMTZBIDExQzA7Qjg5MTsxMTA1IDExNkEgMTFDMDsKK0I4OTI7Qjg5MjsxMTA1IDExNkEgMTFDMTtCODkyOzExMDUgMTE2QSAxMUMxOworQjg5MztCODkzOzExMDUgMTE2QSAxMUMyO0I4OTM7MTEwNSAxMTZBIDExQzI7CitCODk0O0I4OTQ7MTEwNSAxMTZCO0I4OTQ7MTEwNSAxMTZCOworQjg5NTtCODk1OzExMDUgMTE2QiAxMUE4O0I4OTU7MTEwNSAxMTZCIDExQTg7CitCODk2O0I4OTY7MTEwNSAxMTZCIDExQTk7Qjg5NjsxMTA1IDExNkIgMTFBOTsKK0I4OTc7Qjg5NzsxMTA1IDExNkIgMTFBQTtCODk3OzExMDUgMTE2QiAxMUFBOworQjg5ODtCODk4OzExMDUgMTE2QiAxMUFCO0I4OTg7MTEwNSAxMTZCIDExQUI7CitCODk5O0I4OTk7MTEwNSAxMTZCIDExQUM7Qjg5OTsxMTA1IDExNkIgMTFBQzsKK0I4OUE7Qjg5QTsxMTA1IDExNkIgMTFBRDtCODlBOzExMDUgMTE2QiAxMUFEOworQjg5QjtCODlCOzExMDUgMTE2QiAxMUFFO0I4OUI7MTEwNSAxMTZCIDExQUU7CitCODlDO0I4OUM7MTEwNSAxMTZCIDExQUY7Qjg5QzsxMTA1IDExNkIgMTFBRjsKK0I4OUQ7Qjg5RDsxMTA1IDExNkIgMTFCMDtCODlEOzExMDUgMTE2QiAxMUIwOworQjg5RTtCODlFOzExMDUgMTE2QiAxMUIxO0I4OUU7MTEwNSAxMTZCIDExQjE7CitCODlGO0I4OUY7MTEwNSAxMTZCIDExQjI7Qjg5RjsxMTA1IDExNkIgMTFCMjsKK0I4QTA7QjhBMDsxMTA1IDExNkIgMTFCMztCOEEwOzExMDUgMTE2QiAxMUIzOworQjhBMTtCOEExOzExMDUgMTE2QiAxMUI0O0I4QTE7MTEwNSAxMTZCIDExQjQ7CitCOEEyO0I4QTI7MTEwNSAxMTZCIDExQjU7QjhBMjsxMTA1IDExNkIgMTFCNTsKK0I4QTM7QjhBMzsxMTA1IDExNkIgMTFCNjtCOEEzOzExMDUgMTE2QiAxMUI2OworQjhBNDtCOEE0OzExMDUgMTE2QiAxMUI3O0I4QTQ7MTEwNSAxMTZCIDExQjc7CitCOEE1O0I4QTU7MTEwNSAxMTZCIDExQjg7QjhBNTsxMTA1IDExNkIgMTFCODsKK0I4QTY7QjhBNjsxMTA1IDExNkIgMTFCOTtCOEE2OzExMDUgMTE2QiAxMUI5OworQjhBNztCOEE3OzExMDUgMTE2QiAxMUJBO0I4QTc7MTEwNSAxMTZCIDExQkE7CitCOEE4O0I4QTg7MTEwNSAxMTZCIDExQkI7QjhBODsxMTA1IDExNkIgMTFCQjsKK0I4QTk7QjhBOTsxMTA1IDExNkIgMTFCQztCOEE5OzExMDUgMTE2QiAxMUJDOworQjhBQTtCOEFBOzExMDUgMTE2QiAxMUJEO0I4QUE7MTEwNSAxMTZCIDExQkQ7CitCOEFCO0I4QUI7MTEwNSAxMTZCIDExQkU7QjhBQjsxMTA1IDExNkIgMTFCRTsKK0I4QUM7QjhBQzsxMTA1IDExNkIgMTFCRjtCOEFDOzExMDUgMTE2QiAxMUJGOworQjhBRDtCOEFEOzExMDUgMTE2QiAxMUMwO0I4QUQ7MTEwNSAxMTZCIDExQzA7CitCOEFFO0I4QUU7MTEwNSAxMTZCIDExQzE7QjhBRTsxMTA1IDExNkIgMTFDMTsKK0I4QUY7QjhBRjsxMTA1IDExNkIgMTFDMjtCOEFGOzExMDUgMTE2QiAxMUMyOworQjhCMDtCOEIwOzExMDUgMTE2QztCOEIwOzExMDUgMTE2QzsKK0I4QjE7QjhCMTsxMTA1IDExNkMgMTFBODtCOEIxOzExMDUgMTE2QyAxMUE4OworQjhCMjtCOEIyOzExMDUgMTE2QyAxMUE5O0I4QjI7MTEwNSAxMTZDIDExQTk7CitCOEIzO0I4QjM7MTEwNSAxMTZDIDExQUE7QjhCMzsxMTA1IDExNkMgMTFBQTsKK0I4QjQ7QjhCNDsxMTA1IDExNkMgMTFBQjtCOEI0OzExMDUgMTE2QyAxMUFCOworQjhCNTtCOEI1OzExMDUgMTE2QyAxMUFDO0I4QjU7MTEwNSAxMTZDIDExQUM7CitCOEI2O0I4QjY7MTEwNSAxMTZDIDExQUQ7QjhCNjsxMTA1IDExNkMgMTFBRDsKK0I4Qjc7QjhCNzsxMTA1IDExNkMgMTFBRTtCOEI3OzExMDUgMTE2QyAxMUFFOworQjhCODtCOEI4OzExMDUgMTE2QyAxMUFGO0I4Qjg7MTEwNSAxMTZDIDExQUY7CitCOEI5O0I4Qjk7MTEwNSAxMTZDIDExQjA7QjhCOTsxMTA1IDExNkMgMTFCMDsKK0I4QkE7QjhCQTsxMTA1IDExNkMgMTFCMTtCOEJBOzExMDUgMTE2QyAxMUIxOworQjhCQjtCOEJCOzExMDUgMTE2QyAxMUIyO0I4QkI7MTEwNSAxMTZDIDExQjI7CitCOEJDO0I4QkM7MTEwNSAxMTZDIDExQjM7QjhCQzsxMTA1IDExNkMgMTFCMzsKK0I4QkQ7QjhCRDsxMTA1IDExNkMgMTFCNDtCOEJEOzExMDUgMTE2QyAxMUI0OworQjhCRTtCOEJFOzExMDUgMTE2QyAxMUI1O0I4QkU7MTEwNSAxMTZDIDExQjU7CitCOEJGO0I4QkY7MTEwNSAxMTZDIDExQjY7QjhCRjsxMTA1IDExNkMgMTFCNjsKK0I4QzA7QjhDMDsxMTA1IDExNkMgMTFCNztCOEMwOzExMDUgMTE2QyAxMUI3OworQjhDMTtCOEMxOzExMDUgMTE2QyAxMUI4O0I4QzE7MTEwNSAxMTZDIDExQjg7CitCOEMyO0I4QzI7MTEwNSAxMTZDIDExQjk7QjhDMjsxMTA1IDExNkMgMTFCOTsKK0I4QzM7QjhDMzsxMTA1IDExNkMgMTFCQTtCOEMzOzExMDUgMTE2QyAxMUJBOworQjhDNDtCOEM0OzExMDUgMTE2QyAxMUJCO0I4QzQ7MTEwNSAxMTZDIDExQkI7CitCOEM1O0I4QzU7MTEwNSAxMTZDIDExQkM7QjhDNTsxMTA1IDExNkMgMTFCQzsKK0I4QzY7QjhDNjsxMTA1IDExNkMgMTFCRDtCOEM2OzExMDUgMTE2QyAxMUJEOworQjhDNztCOEM3OzExMDUgMTE2QyAxMUJFO0I4Qzc7MTEwNSAxMTZDIDExQkU7CitCOEM4O0I4Qzg7MTEwNSAxMTZDIDExQkY7QjhDODsxMTA1IDExNkMgMTFCRjsKK0I4Qzk7QjhDOTsxMTA1IDExNkMgMTFDMDtCOEM5OzExMDUgMTE2QyAxMUMwOworQjhDQTtCOENBOzExMDUgMTE2QyAxMUMxO0I4Q0E7MTEwNSAxMTZDIDExQzE7CitCOENCO0I4Q0I7MTEwNSAxMTZDIDExQzI7QjhDQjsxMTA1IDExNkMgMTFDMjsKK0I4Q0M7QjhDQzsxMTA1IDExNkQ7QjhDQzsxMTA1IDExNkQ7CitCOENEO0I4Q0Q7MTEwNSAxMTZEIDExQTg7QjhDRDsxMTA1IDExNkQgMTFBODsKK0I4Q0U7QjhDRTsxMTA1IDExNkQgMTFBOTtCOENFOzExMDUgMTE2RCAxMUE5OworQjhDRjtCOENGOzExMDUgMTE2RCAxMUFBO0I4Q0Y7MTEwNSAxMTZEIDExQUE7CitCOEQwO0I4RDA7MTEwNSAxMTZEIDExQUI7QjhEMDsxMTA1IDExNkQgMTFBQjsKK0I4RDE7QjhEMTsxMTA1IDExNkQgMTFBQztCOEQxOzExMDUgMTE2RCAxMUFDOworQjhEMjtCOEQyOzExMDUgMTE2RCAxMUFEO0I4RDI7MTEwNSAxMTZEIDExQUQ7CitCOEQzO0I4RDM7MTEwNSAxMTZEIDExQUU7QjhEMzsxMTA1IDExNkQgMTFBRTsKK0I4RDQ7QjhENDsxMTA1IDExNkQgMTFBRjtCOEQ0OzExMDUgMTE2RCAxMUFGOworQjhENTtCOEQ1OzExMDUgMTE2RCAxMUIwO0I4RDU7MTEwNSAxMTZEIDExQjA7CitCOEQ2O0I4RDY7MTEwNSAxMTZEIDExQjE7QjhENjsxMTA1IDExNkQgMTFCMTsKK0I4RDc7QjhENzsxMTA1IDExNkQgMTFCMjtCOEQ3OzExMDUgMTE2RCAxMUIyOworQjhEODtCOEQ4OzExMDUgMTE2RCAxMUIzO0I4RDg7MTEwNSAxMTZEIDExQjM7CitCOEQ5O0I4RDk7MTEwNSAxMTZEIDExQjQ7QjhEOTsxMTA1IDExNkQgMTFCNDsKK0I4REE7QjhEQTsxMTA1IDExNkQgMTFCNTtCOERBOzExMDUgMTE2RCAxMUI1OworQjhEQjtCOERCOzExMDUgMTE2RCAxMUI2O0I4REI7MTEwNSAxMTZEIDExQjY7CitCOERDO0I4REM7MTEwNSAxMTZEIDExQjc7QjhEQzsxMTA1IDExNkQgMTFCNzsKK0I4REQ7QjhERDsxMTA1IDExNkQgMTFCODtCOEREOzExMDUgMTE2RCAxMUI4OworQjhERTtCOERFOzExMDUgMTE2RCAxMUI5O0I4REU7MTEwNSAxMTZEIDExQjk7CitCOERGO0I4REY7MTEwNSAxMTZEIDExQkE7QjhERjsxMTA1IDExNkQgMTFCQTsKK0I4RTA7QjhFMDsxMTA1IDExNkQgMTFCQjtCOEUwOzExMDUgMTE2RCAxMUJCOworQjhFMTtCOEUxOzExMDUgMTE2RCAxMUJDO0I4RTE7MTEwNSAxMTZEIDExQkM7CitCOEUyO0I4RTI7MTEwNSAxMTZEIDExQkQ7QjhFMjsxMTA1IDExNkQgMTFCRDsKK0I4RTM7QjhFMzsxMTA1IDExNkQgMTFCRTtCOEUzOzExMDUgMTE2RCAxMUJFOworQjhFNDtCOEU0OzExMDUgMTE2RCAxMUJGO0I4RTQ7MTEwNSAxMTZEIDExQkY7CitCOEU1O0I4RTU7MTEwNSAxMTZEIDExQzA7QjhFNTsxMTA1IDExNkQgMTFDMDsKK0I4RTY7QjhFNjsxMTA1IDExNkQgMTFDMTtCOEU2OzExMDUgMTE2RCAxMUMxOworQjhFNztCOEU3OzExMDUgMTE2RCAxMUMyO0I4RTc7MTEwNSAxMTZEIDExQzI7CitCOEU4O0I4RTg7MTEwNSAxMTZFO0I4RTg7MTEwNSAxMTZFOworQjhFOTtCOEU5OzExMDUgMTE2RSAxMUE4O0I4RTk7MTEwNSAxMTZFIDExQTg7CitCOEVBO0I4RUE7MTEwNSAxMTZFIDExQTk7QjhFQTsxMTA1IDExNkUgMTFBOTsKK0I4RUI7QjhFQjsxMTA1IDExNkUgMTFBQTtCOEVCOzExMDUgMTE2RSAxMUFBOworQjhFQztCOEVDOzExMDUgMTE2RSAxMUFCO0I4RUM7MTEwNSAxMTZFIDExQUI7CitCOEVEO0I4RUQ7MTEwNSAxMTZFIDExQUM7QjhFRDsxMTA1IDExNkUgMTFBQzsKK0I4RUU7QjhFRTsxMTA1IDExNkUgMTFBRDtCOEVFOzExMDUgMTE2RSAxMUFEOworQjhFRjtCOEVGOzExMDUgMTE2RSAxMUFFO0I4RUY7MTEwNSAxMTZFIDExQUU7CitCOEYwO0I4RjA7MTEwNSAxMTZFIDExQUY7QjhGMDsxMTA1IDExNkUgMTFBRjsKK0I4RjE7QjhGMTsxMTA1IDExNkUgMTFCMDtCOEYxOzExMDUgMTE2RSAxMUIwOworQjhGMjtCOEYyOzExMDUgMTE2RSAxMUIxO0I4RjI7MTEwNSAxMTZFIDExQjE7CitCOEYzO0I4RjM7MTEwNSAxMTZFIDExQjI7QjhGMzsxMTA1IDExNkUgMTFCMjsKK0I4RjQ7QjhGNDsxMTA1IDExNkUgMTFCMztCOEY0OzExMDUgMTE2RSAxMUIzOworQjhGNTtCOEY1OzExMDUgMTE2RSAxMUI0O0I4RjU7MTEwNSAxMTZFIDExQjQ7CitCOEY2O0I4RjY7MTEwNSAxMTZFIDExQjU7QjhGNjsxMTA1IDExNkUgMTFCNTsKK0I4Rjc7QjhGNzsxMTA1IDExNkUgMTFCNjtCOEY3OzExMDUgMTE2RSAxMUI2OworQjhGODtCOEY4OzExMDUgMTE2RSAxMUI3O0I4Rjg7MTEwNSAxMTZFIDExQjc7CitCOEY5O0I4Rjk7MTEwNSAxMTZFIDExQjg7QjhGOTsxMTA1IDExNkUgMTFCODsKK0I4RkE7QjhGQTsxMTA1IDExNkUgMTFCOTtCOEZBOzExMDUgMTE2RSAxMUI5OworQjhGQjtCOEZCOzExMDUgMTE2RSAxMUJBO0I4RkI7MTEwNSAxMTZFIDExQkE7CitCOEZDO0I4RkM7MTEwNSAxMTZFIDExQkI7QjhGQzsxMTA1IDExNkUgMTFCQjsKK0I4RkQ7QjhGRDsxMTA1IDExNkUgMTFCQztCOEZEOzExMDUgMTE2RSAxMUJDOworQjhGRTtCOEZFOzExMDUgMTE2RSAxMUJEO0I4RkU7MTEwNSAxMTZFIDExQkQ7CitCOEZGO0I4RkY7MTEwNSAxMTZFIDExQkU7QjhGRjsxMTA1IDExNkUgMTFCRTsKK0I5MDA7QjkwMDsxMTA1IDExNkUgMTFCRjtCOTAwOzExMDUgMTE2RSAxMUJGOworQjkwMTtCOTAxOzExMDUgMTE2RSAxMUMwO0I5MDE7MTEwNSAxMTZFIDExQzA7CitCOTAyO0I5MDI7MTEwNSAxMTZFIDExQzE7QjkwMjsxMTA1IDExNkUgMTFDMTsKK0I5MDM7QjkwMzsxMTA1IDExNkUgMTFDMjtCOTAzOzExMDUgMTE2RSAxMUMyOworQjkwNDtCOTA0OzExMDUgMTE2RjtCOTA0OzExMDUgMTE2RjsKK0I5MDU7QjkwNTsxMTA1IDExNkYgMTFBODtCOTA1OzExMDUgMTE2RiAxMUE4OworQjkwNjtCOTA2OzExMDUgMTE2RiAxMUE5O0I5MDY7MTEwNSAxMTZGIDExQTk7CitCOTA3O0I5MDc7MTEwNSAxMTZGIDExQUE7QjkwNzsxMTA1IDExNkYgMTFBQTsKK0I5MDg7QjkwODsxMTA1IDExNkYgMTFBQjtCOTA4OzExMDUgMTE2RiAxMUFCOworQjkwOTtCOTA5OzExMDUgMTE2RiAxMUFDO0I5MDk7MTEwNSAxMTZGIDExQUM7CitCOTBBO0I5MEE7MTEwNSAxMTZGIDExQUQ7QjkwQTsxMTA1IDExNkYgMTFBRDsKK0I5MEI7QjkwQjsxMTA1IDExNkYgMTFBRTtCOTBCOzExMDUgMTE2RiAxMUFFOworQjkwQztCOTBDOzExMDUgMTE2RiAxMUFGO0I5MEM7MTEwNSAxMTZGIDExQUY7CitCOTBEO0I5MEQ7MTEwNSAxMTZGIDExQjA7QjkwRDsxMTA1IDExNkYgMTFCMDsKK0I5MEU7QjkwRTsxMTA1IDExNkYgMTFCMTtCOTBFOzExMDUgMTE2RiAxMUIxOworQjkwRjtCOTBGOzExMDUgMTE2RiAxMUIyO0I5MEY7MTEwNSAxMTZGIDExQjI7CitCOTEwO0I5MTA7MTEwNSAxMTZGIDExQjM7QjkxMDsxMTA1IDExNkYgMTFCMzsKK0I5MTE7QjkxMTsxMTA1IDExNkYgMTFCNDtCOTExOzExMDUgMTE2RiAxMUI0OworQjkxMjtCOTEyOzExMDUgMTE2RiAxMUI1O0I5MTI7MTEwNSAxMTZGIDExQjU7CitCOTEzO0I5MTM7MTEwNSAxMTZGIDExQjY7QjkxMzsxMTA1IDExNkYgMTFCNjsKK0I5MTQ7QjkxNDsxMTA1IDExNkYgMTFCNztCOTE0OzExMDUgMTE2RiAxMUI3OworQjkxNTtCOTE1OzExMDUgMTE2RiAxMUI4O0I5MTU7MTEwNSAxMTZGIDExQjg7CitCOTE2O0I5MTY7MTEwNSAxMTZGIDExQjk7QjkxNjsxMTA1IDExNkYgMTFCOTsKK0I5MTc7QjkxNzsxMTA1IDExNkYgMTFCQTtCOTE3OzExMDUgMTE2RiAxMUJBOworQjkxODtCOTE4OzExMDUgMTE2RiAxMUJCO0I5MTg7MTEwNSAxMTZGIDExQkI7CitCOTE5O0I5MTk7MTEwNSAxMTZGIDExQkM7QjkxOTsxMTA1IDExNkYgMTFCQzsKK0I5MUE7QjkxQTsxMTA1IDExNkYgMTFCRDtCOTFBOzExMDUgMTE2RiAxMUJEOworQjkxQjtCOTFCOzExMDUgMTE2RiAxMUJFO0I5MUI7MTEwNSAxMTZGIDExQkU7CitCOTFDO0I5MUM7MTEwNSAxMTZGIDExQkY7QjkxQzsxMTA1IDExNkYgMTFCRjsKK0I5MUQ7QjkxRDsxMTA1IDExNkYgMTFDMDtCOTFEOzExMDUgMTE2RiAxMUMwOworQjkxRTtCOTFFOzExMDUgMTE2RiAxMUMxO0I5MUU7MTEwNSAxMTZGIDExQzE7CitCOTFGO0I5MUY7MTEwNSAxMTZGIDExQzI7QjkxRjsxMTA1IDExNkYgMTFDMjsKK0I5MjA7QjkyMDsxMTA1IDExNzA7QjkyMDsxMTA1IDExNzA7CitCOTIxO0I5MjE7MTEwNSAxMTcwIDExQTg7QjkyMTsxMTA1IDExNzAgMTFBODsKK0I5MjI7QjkyMjsxMTA1IDExNzAgMTFBOTtCOTIyOzExMDUgMTE3MCAxMUE5OworQjkyMztCOTIzOzExMDUgMTE3MCAxMUFBO0I5MjM7MTEwNSAxMTcwIDExQUE7CitCOTI0O0I5MjQ7MTEwNSAxMTcwIDExQUI7QjkyNDsxMTA1IDExNzAgMTFBQjsKK0I5MjU7QjkyNTsxMTA1IDExNzAgMTFBQztCOTI1OzExMDUgMTE3MCAxMUFDOworQjkyNjtCOTI2OzExMDUgMTE3MCAxMUFEO0I5MjY7MTEwNSAxMTcwIDExQUQ7CitCOTI3O0I5Mjc7MTEwNSAxMTcwIDExQUU7QjkyNzsxMTA1IDExNzAgMTFBRTsKK0I5Mjg7QjkyODsxMTA1IDExNzAgMTFBRjtCOTI4OzExMDUgMTE3MCAxMUFGOworQjkyOTtCOTI5OzExMDUgMTE3MCAxMUIwO0I5Mjk7MTEwNSAxMTcwIDExQjA7CitCOTJBO0I5MkE7MTEwNSAxMTcwIDExQjE7QjkyQTsxMTA1IDExNzAgMTFCMTsKK0I5MkI7QjkyQjsxMTA1IDExNzAgMTFCMjtCOTJCOzExMDUgMTE3MCAxMUIyOworQjkyQztCOTJDOzExMDUgMTE3MCAxMUIzO0I5MkM7MTEwNSAxMTcwIDExQjM7CitCOTJEO0I5MkQ7MTEwNSAxMTcwIDExQjQ7QjkyRDsxMTA1IDExNzAgMTFCNDsKK0I5MkU7QjkyRTsxMTA1IDExNzAgMTFCNTtCOTJFOzExMDUgMTE3MCAxMUI1OworQjkyRjtCOTJGOzExMDUgMTE3MCAxMUI2O0I5MkY7MTEwNSAxMTcwIDExQjY7CitCOTMwO0I5MzA7MTEwNSAxMTcwIDExQjc7QjkzMDsxMTA1IDExNzAgMTFCNzsKK0I5MzE7QjkzMTsxMTA1IDExNzAgMTFCODtCOTMxOzExMDUgMTE3MCAxMUI4OworQjkzMjtCOTMyOzExMDUgMTE3MCAxMUI5O0I5MzI7MTEwNSAxMTcwIDExQjk7CitCOTMzO0I5MzM7MTEwNSAxMTcwIDExQkE7QjkzMzsxMTA1IDExNzAgMTFCQTsKK0I5MzQ7QjkzNDsxMTA1IDExNzAgMTFCQjtCOTM0OzExMDUgMTE3MCAxMUJCOworQjkzNTtCOTM1OzExMDUgMTE3MCAxMUJDO0I5MzU7MTEwNSAxMTcwIDExQkM7CitCOTM2O0I5MzY7MTEwNSAxMTcwIDExQkQ7QjkzNjsxMTA1IDExNzAgMTFCRDsKK0I5Mzc7QjkzNzsxMTA1IDExNzAgMTFCRTtCOTM3OzExMDUgMTE3MCAxMUJFOworQjkzODtCOTM4OzExMDUgMTE3MCAxMUJGO0I5Mzg7MTEwNSAxMTcwIDExQkY7CitCOTM5O0I5Mzk7MTEwNSAxMTcwIDExQzA7QjkzOTsxMTA1IDExNzAgMTFDMDsKK0I5M0E7QjkzQTsxMTA1IDExNzAgMTFDMTtCOTNBOzExMDUgMTE3MCAxMUMxOworQjkzQjtCOTNCOzExMDUgMTE3MCAxMUMyO0I5M0I7MTEwNSAxMTcwIDExQzI7CitCOTNDO0I5M0M7MTEwNSAxMTcxO0I5M0M7MTEwNSAxMTcxOworQjkzRDtCOTNEOzExMDUgMTE3MSAxMUE4O0I5M0Q7MTEwNSAxMTcxIDExQTg7CitCOTNFO0I5M0U7MTEwNSAxMTcxIDExQTk7QjkzRTsxMTA1IDExNzEgMTFBOTsKK0I5M0Y7QjkzRjsxMTA1IDExNzEgMTFBQTtCOTNGOzExMDUgMTE3MSAxMUFBOworQjk0MDtCOTQwOzExMDUgMTE3MSAxMUFCO0I5NDA7MTEwNSAxMTcxIDExQUI7CitCOTQxO0I5NDE7MTEwNSAxMTcxIDExQUM7Qjk0MTsxMTA1IDExNzEgMTFBQzsKK0I5NDI7Qjk0MjsxMTA1IDExNzEgMTFBRDtCOTQyOzExMDUgMTE3MSAxMUFEOworQjk0MztCOTQzOzExMDUgMTE3MSAxMUFFO0I5NDM7MTEwNSAxMTcxIDExQUU7CitCOTQ0O0I5NDQ7MTEwNSAxMTcxIDExQUY7Qjk0NDsxMTA1IDExNzEgMTFBRjsKK0I5NDU7Qjk0NTsxMTA1IDExNzEgMTFCMDtCOTQ1OzExMDUgMTE3MSAxMUIwOworQjk0NjtCOTQ2OzExMDUgMTE3MSAxMUIxO0I5NDY7MTEwNSAxMTcxIDExQjE7CitCOTQ3O0I5NDc7MTEwNSAxMTcxIDExQjI7Qjk0NzsxMTA1IDExNzEgMTFCMjsKK0I5NDg7Qjk0ODsxMTA1IDExNzEgMTFCMztCOTQ4OzExMDUgMTE3MSAxMUIzOworQjk0OTtCOTQ5OzExMDUgMTE3MSAxMUI0O0I5NDk7MTEwNSAxMTcxIDExQjQ7CitCOTRBO0I5NEE7MTEwNSAxMTcxIDExQjU7Qjk0QTsxMTA1IDExNzEgMTFCNTsKK0I5NEI7Qjk0QjsxMTA1IDExNzEgMTFCNjtCOTRCOzExMDUgMTE3MSAxMUI2OworQjk0QztCOTRDOzExMDUgMTE3MSAxMUI3O0I5NEM7MTEwNSAxMTcxIDExQjc7CitCOTREO0I5NEQ7MTEwNSAxMTcxIDExQjg7Qjk0RDsxMTA1IDExNzEgMTFCODsKK0I5NEU7Qjk0RTsxMTA1IDExNzEgMTFCOTtCOTRFOzExMDUgMTE3MSAxMUI5OworQjk0RjtCOTRGOzExMDUgMTE3MSAxMUJBO0I5NEY7MTEwNSAxMTcxIDExQkE7CitCOTUwO0I5NTA7MTEwNSAxMTcxIDExQkI7Qjk1MDsxMTA1IDExNzEgMTFCQjsKK0I5NTE7Qjk1MTsxMTA1IDExNzEgMTFCQztCOTUxOzExMDUgMTE3MSAxMUJDOworQjk1MjtCOTUyOzExMDUgMTE3MSAxMUJEO0I5NTI7MTEwNSAxMTcxIDExQkQ7CitCOTUzO0I5NTM7MTEwNSAxMTcxIDExQkU7Qjk1MzsxMTA1IDExNzEgMTFCRTsKK0I5NTQ7Qjk1NDsxMTA1IDExNzEgMTFCRjtCOTU0OzExMDUgMTE3MSAxMUJGOworQjk1NTtCOTU1OzExMDUgMTE3MSAxMUMwO0I5NTU7MTEwNSAxMTcxIDExQzA7CitCOTU2O0I5NTY7MTEwNSAxMTcxIDExQzE7Qjk1NjsxMTA1IDExNzEgMTFDMTsKK0I5NTc7Qjk1NzsxMTA1IDExNzEgMTFDMjtCOTU3OzExMDUgMTE3MSAxMUMyOworQjk1ODtCOTU4OzExMDUgMTE3MjtCOTU4OzExMDUgMTE3MjsKK0I5NTk7Qjk1OTsxMTA1IDExNzIgMTFBODtCOTU5OzExMDUgMTE3MiAxMUE4OworQjk1QTtCOTVBOzExMDUgMTE3MiAxMUE5O0I5NUE7MTEwNSAxMTcyIDExQTk7CitCOTVCO0I5NUI7MTEwNSAxMTcyIDExQUE7Qjk1QjsxMTA1IDExNzIgMTFBQTsKK0I5NUM7Qjk1QzsxMTA1IDExNzIgMTFBQjtCOTVDOzExMDUgMTE3MiAxMUFCOworQjk1RDtCOTVEOzExMDUgMTE3MiAxMUFDO0I5NUQ7MTEwNSAxMTcyIDExQUM7CitCOTVFO0I5NUU7MTEwNSAxMTcyIDExQUQ7Qjk1RTsxMTA1IDExNzIgMTFBRDsKK0I5NUY7Qjk1RjsxMTA1IDExNzIgMTFBRTtCOTVGOzExMDUgMTE3MiAxMUFFOworQjk2MDtCOTYwOzExMDUgMTE3MiAxMUFGO0I5NjA7MTEwNSAxMTcyIDExQUY7CitCOTYxO0I5NjE7MTEwNSAxMTcyIDExQjA7Qjk2MTsxMTA1IDExNzIgMTFCMDsKK0I5NjI7Qjk2MjsxMTA1IDExNzIgMTFCMTtCOTYyOzExMDUgMTE3MiAxMUIxOworQjk2MztCOTYzOzExMDUgMTE3MiAxMUIyO0I5NjM7MTEwNSAxMTcyIDExQjI7CitCOTY0O0I5NjQ7MTEwNSAxMTcyIDExQjM7Qjk2NDsxMTA1IDExNzIgMTFCMzsKK0I5NjU7Qjk2NTsxMTA1IDExNzIgMTFCNDtCOTY1OzExMDUgMTE3MiAxMUI0OworQjk2NjtCOTY2OzExMDUgMTE3MiAxMUI1O0I5NjY7MTEwNSAxMTcyIDExQjU7CitCOTY3O0I5Njc7MTEwNSAxMTcyIDExQjY7Qjk2NzsxMTA1IDExNzIgMTFCNjsKK0I5Njg7Qjk2ODsxMTA1IDExNzIgMTFCNztCOTY4OzExMDUgMTE3MiAxMUI3OworQjk2OTtCOTY5OzExMDUgMTE3MiAxMUI4O0I5Njk7MTEwNSAxMTcyIDExQjg7CitCOTZBO0I5NkE7MTEwNSAxMTcyIDExQjk7Qjk2QTsxMTA1IDExNzIgMTFCOTsKK0I5NkI7Qjk2QjsxMTA1IDExNzIgMTFCQTtCOTZCOzExMDUgMTE3MiAxMUJBOworQjk2QztCOTZDOzExMDUgMTE3MiAxMUJCO0I5NkM7MTEwNSAxMTcyIDExQkI7CitCOTZEO0I5NkQ7MTEwNSAxMTcyIDExQkM7Qjk2RDsxMTA1IDExNzIgMTFCQzsKK0I5NkU7Qjk2RTsxMTA1IDExNzIgMTFCRDtCOTZFOzExMDUgMTE3MiAxMUJEOworQjk2RjtCOTZGOzExMDUgMTE3MiAxMUJFO0I5NkY7MTEwNSAxMTcyIDExQkU7CitCOTcwO0I5NzA7MTEwNSAxMTcyIDExQkY7Qjk3MDsxMTA1IDExNzIgMTFCRjsKK0I5NzE7Qjk3MTsxMTA1IDExNzIgMTFDMDtCOTcxOzExMDUgMTE3MiAxMUMwOworQjk3MjtCOTcyOzExMDUgMTE3MiAxMUMxO0I5NzI7MTEwNSAxMTcyIDExQzE7CitCOTczO0I5NzM7MTEwNSAxMTcyIDExQzI7Qjk3MzsxMTA1IDExNzIgMTFDMjsKK0I5NzQ7Qjk3NDsxMTA1IDExNzM7Qjk3NDsxMTA1IDExNzM7CitCOTc1O0I5NzU7MTEwNSAxMTczIDExQTg7Qjk3NTsxMTA1IDExNzMgMTFBODsKK0I5NzY7Qjk3NjsxMTA1IDExNzMgMTFBOTtCOTc2OzExMDUgMTE3MyAxMUE5OworQjk3NztCOTc3OzExMDUgMTE3MyAxMUFBO0I5Nzc7MTEwNSAxMTczIDExQUE7CitCOTc4O0I5Nzg7MTEwNSAxMTczIDExQUI7Qjk3ODsxMTA1IDExNzMgMTFBQjsKK0I5Nzk7Qjk3OTsxMTA1IDExNzMgMTFBQztCOTc5OzExMDUgMTE3MyAxMUFDOworQjk3QTtCOTdBOzExMDUgMTE3MyAxMUFEO0I5N0E7MTEwNSAxMTczIDExQUQ7CitCOTdCO0I5N0I7MTEwNSAxMTczIDExQUU7Qjk3QjsxMTA1IDExNzMgMTFBRTsKK0I5N0M7Qjk3QzsxMTA1IDExNzMgMTFBRjtCOTdDOzExMDUgMTE3MyAxMUFGOworQjk3RDtCOTdEOzExMDUgMTE3MyAxMUIwO0I5N0Q7MTEwNSAxMTczIDExQjA7CitCOTdFO0I5N0U7MTEwNSAxMTczIDExQjE7Qjk3RTsxMTA1IDExNzMgMTFCMTsKK0I5N0Y7Qjk3RjsxMTA1IDExNzMgMTFCMjtCOTdGOzExMDUgMTE3MyAxMUIyOworQjk4MDtCOTgwOzExMDUgMTE3MyAxMUIzO0I5ODA7MTEwNSAxMTczIDExQjM7CitCOTgxO0I5ODE7MTEwNSAxMTczIDExQjQ7Qjk4MTsxMTA1IDExNzMgMTFCNDsKK0I5ODI7Qjk4MjsxMTA1IDExNzMgMTFCNTtCOTgyOzExMDUgMTE3MyAxMUI1OworQjk4MztCOTgzOzExMDUgMTE3MyAxMUI2O0I5ODM7MTEwNSAxMTczIDExQjY7CitCOTg0O0I5ODQ7MTEwNSAxMTczIDExQjc7Qjk4NDsxMTA1IDExNzMgMTFCNzsKK0I5ODU7Qjk4NTsxMTA1IDExNzMgMTFCODtCOTg1OzExMDUgMTE3MyAxMUI4OworQjk4NjtCOTg2OzExMDUgMTE3MyAxMUI5O0I5ODY7MTEwNSAxMTczIDExQjk7CitCOTg3O0I5ODc7MTEwNSAxMTczIDExQkE7Qjk4NzsxMTA1IDExNzMgMTFCQTsKK0I5ODg7Qjk4ODsxMTA1IDExNzMgMTFCQjtCOTg4OzExMDUgMTE3MyAxMUJCOworQjk4OTtCOTg5OzExMDUgMTE3MyAxMUJDO0I5ODk7MTEwNSAxMTczIDExQkM7CitCOThBO0I5OEE7MTEwNSAxMTczIDExQkQ7Qjk4QTsxMTA1IDExNzMgMTFCRDsKK0I5OEI7Qjk4QjsxMTA1IDExNzMgMTFCRTtCOThCOzExMDUgMTE3MyAxMUJFOworQjk4QztCOThDOzExMDUgMTE3MyAxMUJGO0I5OEM7MTEwNSAxMTczIDExQkY7CitCOThEO0I5OEQ7MTEwNSAxMTczIDExQzA7Qjk4RDsxMTA1IDExNzMgMTFDMDsKK0I5OEU7Qjk4RTsxMTA1IDExNzMgMTFDMTtCOThFOzExMDUgMTE3MyAxMUMxOworQjk4RjtCOThGOzExMDUgMTE3MyAxMUMyO0I5OEY7MTEwNSAxMTczIDExQzI7CitCOTkwO0I5OTA7MTEwNSAxMTc0O0I5OTA7MTEwNSAxMTc0OworQjk5MTtCOTkxOzExMDUgMTE3NCAxMUE4O0I5OTE7MTEwNSAxMTc0IDExQTg7CitCOTkyO0I5OTI7MTEwNSAxMTc0IDExQTk7Qjk5MjsxMTA1IDExNzQgMTFBOTsKK0I5OTM7Qjk5MzsxMTA1IDExNzQgMTFBQTtCOTkzOzExMDUgMTE3NCAxMUFBOworQjk5NDtCOTk0OzExMDUgMTE3NCAxMUFCO0I5OTQ7MTEwNSAxMTc0IDExQUI7CitCOTk1O0I5OTU7MTEwNSAxMTc0IDExQUM7Qjk5NTsxMTA1IDExNzQgMTFBQzsKK0I5OTY7Qjk5NjsxMTA1IDExNzQgMTFBRDtCOTk2OzExMDUgMTE3NCAxMUFEOworQjk5NztCOTk3OzExMDUgMTE3NCAxMUFFO0I5OTc7MTEwNSAxMTc0IDExQUU7CitCOTk4O0I5OTg7MTEwNSAxMTc0IDExQUY7Qjk5ODsxMTA1IDExNzQgMTFBRjsKK0I5OTk7Qjk5OTsxMTA1IDExNzQgMTFCMDtCOTk5OzExMDUgMTE3NCAxMUIwOworQjk5QTtCOTlBOzExMDUgMTE3NCAxMUIxO0I5OUE7MTEwNSAxMTc0IDExQjE7CitCOTlCO0I5OUI7MTEwNSAxMTc0IDExQjI7Qjk5QjsxMTA1IDExNzQgMTFCMjsKK0I5OUM7Qjk5QzsxMTA1IDExNzQgMTFCMztCOTlDOzExMDUgMTE3NCAxMUIzOworQjk5RDtCOTlEOzExMDUgMTE3NCAxMUI0O0I5OUQ7MTEwNSAxMTc0IDExQjQ7CitCOTlFO0I5OUU7MTEwNSAxMTc0IDExQjU7Qjk5RTsxMTA1IDExNzQgMTFCNTsKK0I5OUY7Qjk5RjsxMTA1IDExNzQgMTFCNjtCOTlGOzExMDUgMTE3NCAxMUI2OworQjlBMDtCOUEwOzExMDUgMTE3NCAxMUI3O0I5QTA7MTEwNSAxMTc0IDExQjc7CitCOUExO0I5QTE7MTEwNSAxMTc0IDExQjg7QjlBMTsxMTA1IDExNzQgMTFCODsKK0I5QTI7QjlBMjsxMTA1IDExNzQgMTFCOTtCOUEyOzExMDUgMTE3NCAxMUI5OworQjlBMztCOUEzOzExMDUgMTE3NCAxMUJBO0I5QTM7MTEwNSAxMTc0IDExQkE7CitCOUE0O0I5QTQ7MTEwNSAxMTc0IDExQkI7QjlBNDsxMTA1IDExNzQgMTFCQjsKK0I5QTU7QjlBNTsxMTA1IDExNzQgMTFCQztCOUE1OzExMDUgMTE3NCAxMUJDOworQjlBNjtCOUE2OzExMDUgMTE3NCAxMUJEO0I5QTY7MTEwNSAxMTc0IDExQkQ7CitCOUE3O0I5QTc7MTEwNSAxMTc0IDExQkU7QjlBNzsxMTA1IDExNzQgMTFCRTsKK0I5QTg7QjlBODsxMTA1IDExNzQgMTFCRjtCOUE4OzExMDUgMTE3NCAxMUJGOworQjlBOTtCOUE5OzExMDUgMTE3NCAxMUMwO0I5QTk7MTEwNSAxMTc0IDExQzA7CitCOUFBO0I5QUE7MTEwNSAxMTc0IDExQzE7QjlBQTsxMTA1IDExNzQgMTFDMTsKK0I5QUI7QjlBQjsxMTA1IDExNzQgMTFDMjtCOUFCOzExMDUgMTE3NCAxMUMyOworQjlBQztCOUFDOzExMDUgMTE3NTtCOUFDOzExMDUgMTE3NTsKK0I5QUQ7QjlBRDsxMTA1IDExNzUgMTFBODtCOUFEOzExMDUgMTE3NSAxMUE4OworQjlBRTtCOUFFOzExMDUgMTE3NSAxMUE5O0I5QUU7MTEwNSAxMTc1IDExQTk7CitCOUFGO0I5QUY7MTEwNSAxMTc1IDExQUE7QjlBRjsxMTA1IDExNzUgMTFBQTsKK0I5QjA7QjlCMDsxMTA1IDExNzUgMTFBQjtCOUIwOzExMDUgMTE3NSAxMUFCOworQjlCMTtCOUIxOzExMDUgMTE3NSAxMUFDO0I5QjE7MTEwNSAxMTc1IDExQUM7CitCOUIyO0I5QjI7MTEwNSAxMTc1IDExQUQ7QjlCMjsxMTA1IDExNzUgMTFBRDsKK0I5QjM7QjlCMzsxMTA1IDExNzUgMTFBRTtCOUIzOzExMDUgMTE3NSAxMUFFOworQjlCNDtCOUI0OzExMDUgMTE3NSAxMUFGO0I5QjQ7MTEwNSAxMTc1IDExQUY7CitCOUI1O0I5QjU7MTEwNSAxMTc1IDExQjA7QjlCNTsxMTA1IDExNzUgMTFCMDsKK0I5QjY7QjlCNjsxMTA1IDExNzUgMTFCMTtCOUI2OzExMDUgMTE3NSAxMUIxOworQjlCNztCOUI3OzExMDUgMTE3NSAxMUIyO0I5Qjc7MTEwNSAxMTc1IDExQjI7CitCOUI4O0I5Qjg7MTEwNSAxMTc1IDExQjM7QjlCODsxMTA1IDExNzUgMTFCMzsKK0I5Qjk7QjlCOTsxMTA1IDExNzUgMTFCNDtCOUI5OzExMDUgMTE3NSAxMUI0OworQjlCQTtCOUJBOzExMDUgMTE3NSAxMUI1O0I5QkE7MTEwNSAxMTc1IDExQjU7CitCOUJCO0I5QkI7MTEwNSAxMTc1IDExQjY7QjlCQjsxMTA1IDExNzUgMTFCNjsKK0I5QkM7QjlCQzsxMTA1IDExNzUgMTFCNztCOUJDOzExMDUgMTE3NSAxMUI3OworQjlCRDtCOUJEOzExMDUgMTE3NSAxMUI4O0I5QkQ7MTEwNSAxMTc1IDExQjg7CitCOUJFO0I5QkU7MTEwNSAxMTc1IDExQjk7QjlCRTsxMTA1IDExNzUgMTFCOTsKK0I5QkY7QjlCRjsxMTA1IDExNzUgMTFCQTtCOUJGOzExMDUgMTE3NSAxMUJBOworQjlDMDtCOUMwOzExMDUgMTE3NSAxMUJCO0I5QzA7MTEwNSAxMTc1IDExQkI7CitCOUMxO0I5QzE7MTEwNSAxMTc1IDExQkM7QjlDMTsxMTA1IDExNzUgMTFCQzsKK0I5QzI7QjlDMjsxMTA1IDExNzUgMTFCRDtCOUMyOzExMDUgMTE3NSAxMUJEOworQjlDMztCOUMzOzExMDUgMTE3NSAxMUJFO0I5QzM7MTEwNSAxMTc1IDExQkU7CitCOUM0O0I5QzQ7MTEwNSAxMTc1IDExQkY7QjlDNDsxMTA1IDExNzUgMTFCRjsKK0I5QzU7QjlDNTsxMTA1IDExNzUgMTFDMDtCOUM1OzExMDUgMTE3NSAxMUMwOworQjlDNjtCOUM2OzExMDUgMTE3NSAxMUMxO0I5QzY7MTEwNSAxMTc1IDExQzE7CitCOUM3O0I5Qzc7MTEwNSAxMTc1IDExQzI7QjlDNzsxMTA1IDExNzUgMTFDMjsKK0I5Qzg7QjlDODsxMTA2IDExNjE7QjlDODsxMTA2IDExNjE7CitCOUM5O0I5Qzk7MTEwNiAxMTYxIDExQTg7QjlDOTsxMTA2IDExNjEgMTFBODsKK0I5Q0E7QjlDQTsxMTA2IDExNjEgMTFBOTtCOUNBOzExMDYgMTE2MSAxMUE5OworQjlDQjtCOUNCOzExMDYgMTE2MSAxMUFBO0I5Q0I7MTEwNiAxMTYxIDExQUE7CitCOUNDO0I5Q0M7MTEwNiAxMTYxIDExQUI7QjlDQzsxMTA2IDExNjEgMTFBQjsKK0I5Q0Q7QjlDRDsxMTA2IDExNjEgMTFBQztCOUNEOzExMDYgMTE2MSAxMUFDOworQjlDRTtCOUNFOzExMDYgMTE2MSAxMUFEO0I5Q0U7MTEwNiAxMTYxIDExQUQ7CitCOUNGO0I5Q0Y7MTEwNiAxMTYxIDExQUU7QjlDRjsxMTA2IDExNjEgMTFBRTsKK0I5RDA7QjlEMDsxMTA2IDExNjEgMTFBRjtCOUQwOzExMDYgMTE2MSAxMUFGOworQjlEMTtCOUQxOzExMDYgMTE2MSAxMUIwO0I5RDE7MTEwNiAxMTYxIDExQjA7CitCOUQyO0I5RDI7MTEwNiAxMTYxIDExQjE7QjlEMjsxMTA2IDExNjEgMTFCMTsKK0I5RDM7QjlEMzsxMTA2IDExNjEgMTFCMjtCOUQzOzExMDYgMTE2MSAxMUIyOworQjlENDtCOUQ0OzExMDYgMTE2MSAxMUIzO0I5RDQ7MTEwNiAxMTYxIDExQjM7CitCOUQ1O0I5RDU7MTEwNiAxMTYxIDExQjQ7QjlENTsxMTA2IDExNjEgMTFCNDsKK0I5RDY7QjlENjsxMTA2IDExNjEgMTFCNTtCOUQ2OzExMDYgMTE2MSAxMUI1OworQjlENztCOUQ3OzExMDYgMTE2MSAxMUI2O0I5RDc7MTEwNiAxMTYxIDExQjY7CitCOUQ4O0I5RDg7MTEwNiAxMTYxIDExQjc7QjlEODsxMTA2IDExNjEgMTFCNzsKK0I5RDk7QjlEOTsxMTA2IDExNjEgMTFCODtCOUQ5OzExMDYgMTE2MSAxMUI4OworQjlEQTtCOURBOzExMDYgMTE2MSAxMUI5O0I5REE7MTEwNiAxMTYxIDExQjk7CitCOURCO0I5REI7MTEwNiAxMTYxIDExQkE7QjlEQjsxMTA2IDExNjEgMTFCQTsKK0I5REM7QjlEQzsxMTA2IDExNjEgMTFCQjtCOURDOzExMDYgMTE2MSAxMUJCOworQjlERDtCOUREOzExMDYgMTE2MSAxMUJDO0I5REQ7MTEwNiAxMTYxIDExQkM7CitCOURFO0I5REU7MTEwNiAxMTYxIDExQkQ7QjlERTsxMTA2IDExNjEgMTFCRDsKK0I5REY7QjlERjsxMTA2IDExNjEgMTFCRTtCOURGOzExMDYgMTE2MSAxMUJFOworQjlFMDtCOUUwOzExMDYgMTE2MSAxMUJGO0I5RTA7MTEwNiAxMTYxIDExQkY7CitCOUUxO0I5RTE7MTEwNiAxMTYxIDExQzA7QjlFMTsxMTA2IDExNjEgMTFDMDsKK0I5RTI7QjlFMjsxMTA2IDExNjEgMTFDMTtCOUUyOzExMDYgMTE2MSAxMUMxOworQjlFMztCOUUzOzExMDYgMTE2MSAxMUMyO0I5RTM7MTEwNiAxMTYxIDExQzI7CitCOUU0O0I5RTQ7MTEwNiAxMTYyO0I5RTQ7MTEwNiAxMTYyOworQjlFNTtCOUU1OzExMDYgMTE2MiAxMUE4O0I5RTU7MTEwNiAxMTYyIDExQTg7CitCOUU2O0I5RTY7MTEwNiAxMTYyIDExQTk7QjlFNjsxMTA2IDExNjIgMTFBOTsKK0I5RTc7QjlFNzsxMTA2IDExNjIgMTFBQTtCOUU3OzExMDYgMTE2MiAxMUFBOworQjlFODtCOUU4OzExMDYgMTE2MiAxMUFCO0I5RTg7MTEwNiAxMTYyIDExQUI7CitCOUU5O0I5RTk7MTEwNiAxMTYyIDExQUM7QjlFOTsxMTA2IDExNjIgMTFBQzsKK0I5RUE7QjlFQTsxMTA2IDExNjIgMTFBRDtCOUVBOzExMDYgMTE2MiAxMUFEOworQjlFQjtCOUVCOzExMDYgMTE2MiAxMUFFO0I5RUI7MTEwNiAxMTYyIDExQUU7CitCOUVDO0I5RUM7MTEwNiAxMTYyIDExQUY7QjlFQzsxMTA2IDExNjIgMTFBRjsKK0I5RUQ7QjlFRDsxMTA2IDExNjIgMTFCMDtCOUVEOzExMDYgMTE2MiAxMUIwOworQjlFRTtCOUVFOzExMDYgMTE2MiAxMUIxO0I5RUU7MTEwNiAxMTYyIDExQjE7CitCOUVGO0I5RUY7MTEwNiAxMTYyIDExQjI7QjlFRjsxMTA2IDExNjIgMTFCMjsKK0I5RjA7QjlGMDsxMTA2IDExNjIgMTFCMztCOUYwOzExMDYgMTE2MiAxMUIzOworQjlGMTtCOUYxOzExMDYgMTE2MiAxMUI0O0I5RjE7MTEwNiAxMTYyIDExQjQ7CitCOUYyO0I5RjI7MTEwNiAxMTYyIDExQjU7QjlGMjsxMTA2IDExNjIgMTFCNTsKK0I5RjM7QjlGMzsxMTA2IDExNjIgMTFCNjtCOUYzOzExMDYgMTE2MiAxMUI2OworQjlGNDtCOUY0OzExMDYgMTE2MiAxMUI3O0I5RjQ7MTEwNiAxMTYyIDExQjc7CitCOUY1O0I5RjU7MTEwNiAxMTYyIDExQjg7QjlGNTsxMTA2IDExNjIgMTFCODsKK0I5RjY7QjlGNjsxMTA2IDExNjIgMTFCOTtCOUY2OzExMDYgMTE2MiAxMUI5OworQjlGNztCOUY3OzExMDYgMTE2MiAxMUJBO0I5Rjc7MTEwNiAxMTYyIDExQkE7CitCOUY4O0I5Rjg7MTEwNiAxMTYyIDExQkI7QjlGODsxMTA2IDExNjIgMTFCQjsKK0I5Rjk7QjlGOTsxMTA2IDExNjIgMTFCQztCOUY5OzExMDYgMTE2MiAxMUJDOworQjlGQTtCOUZBOzExMDYgMTE2MiAxMUJEO0I5RkE7MTEwNiAxMTYyIDExQkQ7CitCOUZCO0I5RkI7MTEwNiAxMTYyIDExQkU7QjlGQjsxMTA2IDExNjIgMTFCRTsKK0I5RkM7QjlGQzsxMTA2IDExNjIgMTFCRjtCOUZDOzExMDYgMTE2MiAxMUJGOworQjlGRDtCOUZEOzExMDYgMTE2MiAxMUMwO0I5RkQ7MTEwNiAxMTYyIDExQzA7CitCOUZFO0I5RkU7MTEwNiAxMTYyIDExQzE7QjlGRTsxMTA2IDExNjIgMTFDMTsKK0I5RkY7QjlGRjsxMTA2IDExNjIgMTFDMjtCOUZGOzExMDYgMTE2MiAxMUMyOworQkEwMDtCQTAwOzExMDYgMTE2MztCQTAwOzExMDYgMTE2MzsKK0JBMDE7QkEwMTsxMTA2IDExNjMgMTFBODtCQTAxOzExMDYgMTE2MyAxMUE4OworQkEwMjtCQTAyOzExMDYgMTE2MyAxMUE5O0JBMDI7MTEwNiAxMTYzIDExQTk7CitCQTAzO0JBMDM7MTEwNiAxMTYzIDExQUE7QkEwMzsxMTA2IDExNjMgMTFBQTsKK0JBMDQ7QkEwNDsxMTA2IDExNjMgMTFBQjtCQTA0OzExMDYgMTE2MyAxMUFCOworQkEwNTtCQTA1OzExMDYgMTE2MyAxMUFDO0JBMDU7MTEwNiAxMTYzIDExQUM7CitCQTA2O0JBMDY7MTEwNiAxMTYzIDExQUQ7QkEwNjsxMTA2IDExNjMgMTFBRDsKK0JBMDc7QkEwNzsxMTA2IDExNjMgMTFBRTtCQTA3OzExMDYgMTE2MyAxMUFFOworQkEwODtCQTA4OzExMDYgMTE2MyAxMUFGO0JBMDg7MTEwNiAxMTYzIDExQUY7CitCQTA5O0JBMDk7MTEwNiAxMTYzIDExQjA7QkEwOTsxMTA2IDExNjMgMTFCMDsKK0JBMEE7QkEwQTsxMTA2IDExNjMgMTFCMTtCQTBBOzExMDYgMTE2MyAxMUIxOworQkEwQjtCQTBCOzExMDYgMTE2MyAxMUIyO0JBMEI7MTEwNiAxMTYzIDExQjI7CitCQTBDO0JBMEM7MTEwNiAxMTYzIDExQjM7QkEwQzsxMTA2IDExNjMgMTFCMzsKK0JBMEQ7QkEwRDsxMTA2IDExNjMgMTFCNDtCQTBEOzExMDYgMTE2MyAxMUI0OworQkEwRTtCQTBFOzExMDYgMTE2MyAxMUI1O0JBMEU7MTEwNiAxMTYzIDExQjU7CitCQTBGO0JBMEY7MTEwNiAxMTYzIDExQjY7QkEwRjsxMTA2IDExNjMgMTFCNjsKK0JBMTA7QkExMDsxMTA2IDExNjMgMTFCNztCQTEwOzExMDYgMTE2MyAxMUI3OworQkExMTtCQTExOzExMDYgMTE2MyAxMUI4O0JBMTE7MTEwNiAxMTYzIDExQjg7CitCQTEyO0JBMTI7MTEwNiAxMTYzIDExQjk7QkExMjsxMTA2IDExNjMgMTFCOTsKK0JBMTM7QkExMzsxMTA2IDExNjMgMTFCQTtCQTEzOzExMDYgMTE2MyAxMUJBOworQkExNDtCQTE0OzExMDYgMTE2MyAxMUJCO0JBMTQ7MTEwNiAxMTYzIDExQkI7CitCQTE1O0JBMTU7MTEwNiAxMTYzIDExQkM7QkExNTsxMTA2IDExNjMgMTFCQzsKK0JBMTY7QkExNjsxMTA2IDExNjMgMTFCRDtCQTE2OzExMDYgMTE2MyAxMUJEOworQkExNztCQTE3OzExMDYgMTE2MyAxMUJFO0JBMTc7MTEwNiAxMTYzIDExQkU7CitCQTE4O0JBMTg7MTEwNiAxMTYzIDExQkY7QkExODsxMTA2IDExNjMgMTFCRjsKK0JBMTk7QkExOTsxMTA2IDExNjMgMTFDMDtCQTE5OzExMDYgMTE2MyAxMUMwOworQkExQTtCQTFBOzExMDYgMTE2MyAxMUMxO0JBMUE7MTEwNiAxMTYzIDExQzE7CitCQTFCO0JBMUI7MTEwNiAxMTYzIDExQzI7QkExQjsxMTA2IDExNjMgMTFDMjsKK0JBMUM7QkExQzsxMTA2IDExNjQ7QkExQzsxMTA2IDExNjQ7CitCQTFEO0JBMUQ7MTEwNiAxMTY0IDExQTg7QkExRDsxMTA2IDExNjQgMTFBODsKK0JBMUU7QkExRTsxMTA2IDExNjQgMTFBOTtCQTFFOzExMDYgMTE2NCAxMUE5OworQkExRjtCQTFGOzExMDYgMTE2NCAxMUFBO0JBMUY7MTEwNiAxMTY0IDExQUE7CitCQTIwO0JBMjA7MTEwNiAxMTY0IDExQUI7QkEyMDsxMTA2IDExNjQgMTFBQjsKK0JBMjE7QkEyMTsxMTA2IDExNjQgMTFBQztCQTIxOzExMDYgMTE2NCAxMUFDOworQkEyMjtCQTIyOzExMDYgMTE2NCAxMUFEO0JBMjI7MTEwNiAxMTY0IDExQUQ7CitCQTIzO0JBMjM7MTEwNiAxMTY0IDExQUU7QkEyMzsxMTA2IDExNjQgMTFBRTsKK0JBMjQ7QkEyNDsxMTA2IDExNjQgMTFBRjtCQTI0OzExMDYgMTE2NCAxMUFGOworQkEyNTtCQTI1OzExMDYgMTE2NCAxMUIwO0JBMjU7MTEwNiAxMTY0IDExQjA7CitCQTI2O0JBMjY7MTEwNiAxMTY0IDExQjE7QkEyNjsxMTA2IDExNjQgMTFCMTsKK0JBMjc7QkEyNzsxMTA2IDExNjQgMTFCMjtCQTI3OzExMDYgMTE2NCAxMUIyOworQkEyODtCQTI4OzExMDYgMTE2NCAxMUIzO0JBMjg7MTEwNiAxMTY0IDExQjM7CitCQTI5O0JBMjk7MTEwNiAxMTY0IDExQjQ7QkEyOTsxMTA2IDExNjQgMTFCNDsKK0JBMkE7QkEyQTsxMTA2IDExNjQgMTFCNTtCQTJBOzExMDYgMTE2NCAxMUI1OworQkEyQjtCQTJCOzExMDYgMTE2NCAxMUI2O0JBMkI7MTEwNiAxMTY0IDExQjY7CitCQTJDO0JBMkM7MTEwNiAxMTY0IDExQjc7QkEyQzsxMTA2IDExNjQgMTFCNzsKK0JBMkQ7QkEyRDsxMTA2IDExNjQgMTFCODtCQTJEOzExMDYgMTE2NCAxMUI4OworQkEyRTtCQTJFOzExMDYgMTE2NCAxMUI5O0JBMkU7MTEwNiAxMTY0IDExQjk7CitCQTJGO0JBMkY7MTEwNiAxMTY0IDExQkE7QkEyRjsxMTA2IDExNjQgMTFCQTsKK0JBMzA7QkEzMDsxMTA2IDExNjQgMTFCQjtCQTMwOzExMDYgMTE2NCAxMUJCOworQkEzMTtCQTMxOzExMDYgMTE2NCAxMUJDO0JBMzE7MTEwNiAxMTY0IDExQkM7CitCQTMyO0JBMzI7MTEwNiAxMTY0IDExQkQ7QkEzMjsxMTA2IDExNjQgMTFCRDsKK0JBMzM7QkEzMzsxMTA2IDExNjQgMTFCRTtCQTMzOzExMDYgMTE2NCAxMUJFOworQkEzNDtCQTM0OzExMDYgMTE2NCAxMUJGO0JBMzQ7MTEwNiAxMTY0IDExQkY7CitCQTM1O0JBMzU7MTEwNiAxMTY0IDExQzA7QkEzNTsxMTA2IDExNjQgMTFDMDsKK0JBMzY7QkEzNjsxMTA2IDExNjQgMTFDMTtCQTM2OzExMDYgMTE2NCAxMUMxOworQkEzNztCQTM3OzExMDYgMTE2NCAxMUMyO0JBMzc7MTEwNiAxMTY0IDExQzI7CitCQTM4O0JBMzg7MTEwNiAxMTY1O0JBMzg7MTEwNiAxMTY1OworQkEzOTtCQTM5OzExMDYgMTE2NSAxMUE4O0JBMzk7MTEwNiAxMTY1IDExQTg7CitCQTNBO0JBM0E7MTEwNiAxMTY1IDExQTk7QkEzQTsxMTA2IDExNjUgMTFBOTsKK0JBM0I7QkEzQjsxMTA2IDExNjUgMTFBQTtCQTNCOzExMDYgMTE2NSAxMUFBOworQkEzQztCQTNDOzExMDYgMTE2NSAxMUFCO0JBM0M7MTEwNiAxMTY1IDExQUI7CitCQTNEO0JBM0Q7MTEwNiAxMTY1IDExQUM7QkEzRDsxMTA2IDExNjUgMTFBQzsKK0JBM0U7QkEzRTsxMTA2IDExNjUgMTFBRDtCQTNFOzExMDYgMTE2NSAxMUFEOworQkEzRjtCQTNGOzExMDYgMTE2NSAxMUFFO0JBM0Y7MTEwNiAxMTY1IDExQUU7CitCQTQwO0JBNDA7MTEwNiAxMTY1IDExQUY7QkE0MDsxMTA2IDExNjUgMTFBRjsKK0JBNDE7QkE0MTsxMTA2IDExNjUgMTFCMDtCQTQxOzExMDYgMTE2NSAxMUIwOworQkE0MjtCQTQyOzExMDYgMTE2NSAxMUIxO0JBNDI7MTEwNiAxMTY1IDExQjE7CitCQTQzO0JBNDM7MTEwNiAxMTY1IDExQjI7QkE0MzsxMTA2IDExNjUgMTFCMjsKK0JBNDQ7QkE0NDsxMTA2IDExNjUgMTFCMztCQTQ0OzExMDYgMTE2NSAxMUIzOworQkE0NTtCQTQ1OzExMDYgMTE2NSAxMUI0O0JBNDU7MTEwNiAxMTY1IDExQjQ7CitCQTQ2O0JBNDY7MTEwNiAxMTY1IDExQjU7QkE0NjsxMTA2IDExNjUgMTFCNTsKK0JBNDc7QkE0NzsxMTA2IDExNjUgMTFCNjtCQTQ3OzExMDYgMTE2NSAxMUI2OworQkE0ODtCQTQ4OzExMDYgMTE2NSAxMUI3O0JBNDg7MTEwNiAxMTY1IDExQjc7CitCQTQ5O0JBNDk7MTEwNiAxMTY1IDExQjg7QkE0OTsxMTA2IDExNjUgMTFCODsKK0JBNEE7QkE0QTsxMTA2IDExNjUgMTFCOTtCQTRBOzExMDYgMTE2NSAxMUI5OworQkE0QjtCQTRCOzExMDYgMTE2NSAxMUJBO0JBNEI7MTEwNiAxMTY1IDExQkE7CitCQTRDO0JBNEM7MTEwNiAxMTY1IDExQkI7QkE0QzsxMTA2IDExNjUgMTFCQjsKK0JBNEQ7QkE0RDsxMTA2IDExNjUgMTFCQztCQTREOzExMDYgMTE2NSAxMUJDOworQkE0RTtCQTRFOzExMDYgMTE2NSAxMUJEO0JBNEU7MTEwNiAxMTY1IDExQkQ7CitCQTRGO0JBNEY7MTEwNiAxMTY1IDExQkU7QkE0RjsxMTA2IDExNjUgMTFCRTsKK0JBNTA7QkE1MDsxMTA2IDExNjUgMTFCRjtCQTUwOzExMDYgMTE2NSAxMUJGOworQkE1MTtCQTUxOzExMDYgMTE2NSAxMUMwO0JBNTE7MTEwNiAxMTY1IDExQzA7CitCQTUyO0JBNTI7MTEwNiAxMTY1IDExQzE7QkE1MjsxMTA2IDExNjUgMTFDMTsKK0JBNTM7QkE1MzsxMTA2IDExNjUgMTFDMjtCQTUzOzExMDYgMTE2NSAxMUMyOworQkE1NDtCQTU0OzExMDYgMTE2NjtCQTU0OzExMDYgMTE2NjsKK0JBNTU7QkE1NTsxMTA2IDExNjYgMTFBODtCQTU1OzExMDYgMTE2NiAxMUE4OworQkE1NjtCQTU2OzExMDYgMTE2NiAxMUE5O0JBNTY7MTEwNiAxMTY2IDExQTk7CitCQTU3O0JBNTc7MTEwNiAxMTY2IDExQUE7QkE1NzsxMTA2IDExNjYgMTFBQTsKK0JBNTg7QkE1ODsxMTA2IDExNjYgMTFBQjtCQTU4OzExMDYgMTE2NiAxMUFCOworQkE1OTtCQTU5OzExMDYgMTE2NiAxMUFDO0JBNTk7MTEwNiAxMTY2IDExQUM7CitCQTVBO0JBNUE7MTEwNiAxMTY2IDExQUQ7QkE1QTsxMTA2IDExNjYgMTFBRDsKK0JBNUI7QkE1QjsxMTA2IDExNjYgMTFBRTtCQTVCOzExMDYgMTE2NiAxMUFFOworQkE1QztCQTVDOzExMDYgMTE2NiAxMUFGO0JBNUM7MTEwNiAxMTY2IDExQUY7CitCQTVEO0JBNUQ7MTEwNiAxMTY2IDExQjA7QkE1RDsxMTA2IDExNjYgMTFCMDsKK0JBNUU7QkE1RTsxMTA2IDExNjYgMTFCMTtCQTVFOzExMDYgMTE2NiAxMUIxOworQkE1RjtCQTVGOzExMDYgMTE2NiAxMUIyO0JBNUY7MTEwNiAxMTY2IDExQjI7CitCQTYwO0JBNjA7MTEwNiAxMTY2IDExQjM7QkE2MDsxMTA2IDExNjYgMTFCMzsKK0JBNjE7QkE2MTsxMTA2IDExNjYgMTFCNDtCQTYxOzExMDYgMTE2NiAxMUI0OworQkE2MjtCQTYyOzExMDYgMTE2NiAxMUI1O0JBNjI7MTEwNiAxMTY2IDExQjU7CitCQTYzO0JBNjM7MTEwNiAxMTY2IDExQjY7QkE2MzsxMTA2IDExNjYgMTFCNjsKK0JBNjQ7QkE2NDsxMTA2IDExNjYgMTFCNztCQTY0OzExMDYgMTE2NiAxMUI3OworQkE2NTtCQTY1OzExMDYgMTE2NiAxMUI4O0JBNjU7MTEwNiAxMTY2IDExQjg7CitCQTY2O0JBNjY7MTEwNiAxMTY2IDExQjk7QkE2NjsxMTA2IDExNjYgMTFCOTsKK0JBNjc7QkE2NzsxMTA2IDExNjYgMTFCQTtCQTY3OzExMDYgMTE2NiAxMUJBOworQkE2ODtCQTY4OzExMDYgMTE2NiAxMUJCO0JBNjg7MTEwNiAxMTY2IDExQkI7CitCQTY5O0JBNjk7MTEwNiAxMTY2IDExQkM7QkE2OTsxMTA2IDExNjYgMTFCQzsKK0JBNkE7QkE2QTsxMTA2IDExNjYgMTFCRDtCQTZBOzExMDYgMTE2NiAxMUJEOworQkE2QjtCQTZCOzExMDYgMTE2NiAxMUJFO0JBNkI7MTEwNiAxMTY2IDExQkU7CitCQTZDO0JBNkM7MTEwNiAxMTY2IDExQkY7QkE2QzsxMTA2IDExNjYgMTFCRjsKK0JBNkQ7QkE2RDsxMTA2IDExNjYgMTFDMDtCQTZEOzExMDYgMTE2NiAxMUMwOworQkE2RTtCQTZFOzExMDYgMTE2NiAxMUMxO0JBNkU7MTEwNiAxMTY2IDExQzE7CitCQTZGO0JBNkY7MTEwNiAxMTY2IDExQzI7QkE2RjsxMTA2IDExNjYgMTFDMjsKK0JBNzA7QkE3MDsxMTA2IDExNjc7QkE3MDsxMTA2IDExNjc7CitCQTcxO0JBNzE7MTEwNiAxMTY3IDExQTg7QkE3MTsxMTA2IDExNjcgMTFBODsKK0JBNzI7QkE3MjsxMTA2IDExNjcgMTFBOTtCQTcyOzExMDYgMTE2NyAxMUE5OworQkE3MztCQTczOzExMDYgMTE2NyAxMUFBO0JBNzM7MTEwNiAxMTY3IDExQUE7CitCQTc0O0JBNzQ7MTEwNiAxMTY3IDExQUI7QkE3NDsxMTA2IDExNjcgMTFBQjsKK0JBNzU7QkE3NTsxMTA2IDExNjcgMTFBQztCQTc1OzExMDYgMTE2NyAxMUFDOworQkE3NjtCQTc2OzExMDYgMTE2NyAxMUFEO0JBNzY7MTEwNiAxMTY3IDExQUQ7CitCQTc3O0JBNzc7MTEwNiAxMTY3IDExQUU7QkE3NzsxMTA2IDExNjcgMTFBRTsKK0JBNzg7QkE3ODsxMTA2IDExNjcgMTFBRjtCQTc4OzExMDYgMTE2NyAxMUFGOworQkE3OTtCQTc5OzExMDYgMTE2NyAxMUIwO0JBNzk7MTEwNiAxMTY3IDExQjA7CitCQTdBO0JBN0E7MTEwNiAxMTY3IDExQjE7QkE3QTsxMTA2IDExNjcgMTFCMTsKK0JBN0I7QkE3QjsxMTA2IDExNjcgMTFCMjtCQTdCOzExMDYgMTE2NyAxMUIyOworQkE3QztCQTdDOzExMDYgMTE2NyAxMUIzO0JBN0M7MTEwNiAxMTY3IDExQjM7CitCQTdEO0JBN0Q7MTEwNiAxMTY3IDExQjQ7QkE3RDsxMTA2IDExNjcgMTFCNDsKK0JBN0U7QkE3RTsxMTA2IDExNjcgMTFCNTtCQTdFOzExMDYgMTE2NyAxMUI1OworQkE3RjtCQTdGOzExMDYgMTE2NyAxMUI2O0JBN0Y7MTEwNiAxMTY3IDExQjY7CitCQTgwO0JBODA7MTEwNiAxMTY3IDExQjc7QkE4MDsxMTA2IDExNjcgMTFCNzsKK0JBODE7QkE4MTsxMTA2IDExNjcgMTFCODtCQTgxOzExMDYgMTE2NyAxMUI4OworQkE4MjtCQTgyOzExMDYgMTE2NyAxMUI5O0JBODI7MTEwNiAxMTY3IDExQjk7CitCQTgzO0JBODM7MTEwNiAxMTY3IDExQkE7QkE4MzsxMTA2IDExNjcgMTFCQTsKK0JBODQ7QkE4NDsxMTA2IDExNjcgMTFCQjtCQTg0OzExMDYgMTE2NyAxMUJCOworQkE4NTtCQTg1OzExMDYgMTE2NyAxMUJDO0JBODU7MTEwNiAxMTY3IDExQkM7CitCQTg2O0JBODY7MTEwNiAxMTY3IDExQkQ7QkE4NjsxMTA2IDExNjcgMTFCRDsKK0JBODc7QkE4NzsxMTA2IDExNjcgMTFCRTtCQTg3OzExMDYgMTE2NyAxMUJFOworQkE4ODtCQTg4OzExMDYgMTE2NyAxMUJGO0JBODg7MTEwNiAxMTY3IDExQkY7CitCQTg5O0JBODk7MTEwNiAxMTY3IDExQzA7QkE4OTsxMTA2IDExNjcgMTFDMDsKK0JBOEE7QkE4QTsxMTA2IDExNjcgMTFDMTtCQThBOzExMDYgMTE2NyAxMUMxOworQkE4QjtCQThCOzExMDYgMTE2NyAxMUMyO0JBOEI7MTEwNiAxMTY3IDExQzI7CitCQThDO0JBOEM7MTEwNiAxMTY4O0JBOEM7MTEwNiAxMTY4OworQkE4RDtCQThEOzExMDYgMTE2OCAxMUE4O0JBOEQ7MTEwNiAxMTY4IDExQTg7CitCQThFO0JBOEU7MTEwNiAxMTY4IDExQTk7QkE4RTsxMTA2IDExNjggMTFBOTsKK0JBOEY7QkE4RjsxMTA2IDExNjggMTFBQTtCQThGOzExMDYgMTE2OCAxMUFBOworQkE5MDtCQTkwOzExMDYgMTE2OCAxMUFCO0JBOTA7MTEwNiAxMTY4IDExQUI7CitCQTkxO0JBOTE7MTEwNiAxMTY4IDExQUM7QkE5MTsxMTA2IDExNjggMTFBQzsKK0JBOTI7QkE5MjsxMTA2IDExNjggMTFBRDtCQTkyOzExMDYgMTE2OCAxMUFEOworQkE5MztCQTkzOzExMDYgMTE2OCAxMUFFO0JBOTM7MTEwNiAxMTY4IDExQUU7CitCQTk0O0JBOTQ7MTEwNiAxMTY4IDExQUY7QkE5NDsxMTA2IDExNjggMTFBRjsKK0JBOTU7QkE5NTsxMTA2IDExNjggMTFCMDtCQTk1OzExMDYgMTE2OCAxMUIwOworQkE5NjtCQTk2OzExMDYgMTE2OCAxMUIxO0JBOTY7MTEwNiAxMTY4IDExQjE7CitCQTk3O0JBOTc7MTEwNiAxMTY4IDExQjI7QkE5NzsxMTA2IDExNjggMTFCMjsKK0JBOTg7QkE5ODsxMTA2IDExNjggMTFCMztCQTk4OzExMDYgMTE2OCAxMUIzOworQkE5OTtCQTk5OzExMDYgMTE2OCAxMUI0O0JBOTk7MTEwNiAxMTY4IDExQjQ7CitCQTlBO0JBOUE7MTEwNiAxMTY4IDExQjU7QkE5QTsxMTA2IDExNjggMTFCNTsKK0JBOUI7QkE5QjsxMTA2IDExNjggMTFCNjtCQTlCOzExMDYgMTE2OCAxMUI2OworQkE5QztCQTlDOzExMDYgMTE2OCAxMUI3O0JBOUM7MTEwNiAxMTY4IDExQjc7CitCQTlEO0JBOUQ7MTEwNiAxMTY4IDExQjg7QkE5RDsxMTA2IDExNjggMTFCODsKK0JBOUU7QkE5RTsxMTA2IDExNjggMTFCOTtCQTlFOzExMDYgMTE2OCAxMUI5OworQkE5RjtCQTlGOzExMDYgMTE2OCAxMUJBO0JBOUY7MTEwNiAxMTY4IDExQkE7CitCQUEwO0JBQTA7MTEwNiAxMTY4IDExQkI7QkFBMDsxMTA2IDExNjggMTFCQjsKK0JBQTE7QkFBMTsxMTA2IDExNjggMTFCQztCQUExOzExMDYgMTE2OCAxMUJDOworQkFBMjtCQUEyOzExMDYgMTE2OCAxMUJEO0JBQTI7MTEwNiAxMTY4IDExQkQ7CitCQUEzO0JBQTM7MTEwNiAxMTY4IDExQkU7QkFBMzsxMTA2IDExNjggMTFCRTsKK0JBQTQ7QkFBNDsxMTA2IDExNjggMTFCRjtCQUE0OzExMDYgMTE2OCAxMUJGOworQkFBNTtCQUE1OzExMDYgMTE2OCAxMUMwO0JBQTU7MTEwNiAxMTY4IDExQzA7CitCQUE2O0JBQTY7MTEwNiAxMTY4IDExQzE7QkFBNjsxMTA2IDExNjggMTFDMTsKK0JBQTc7QkFBNzsxMTA2IDExNjggMTFDMjtCQUE3OzExMDYgMTE2OCAxMUMyOworQkFBODtCQUE4OzExMDYgMTE2OTtCQUE4OzExMDYgMTE2OTsKK0JBQTk7QkFBOTsxMTA2IDExNjkgMTFBODtCQUE5OzExMDYgMTE2OSAxMUE4OworQkFBQTtCQUFBOzExMDYgMTE2OSAxMUE5O0JBQUE7MTEwNiAxMTY5IDExQTk7CitCQUFCO0JBQUI7MTEwNiAxMTY5IDExQUE7QkFBQjsxMTA2IDExNjkgMTFBQTsKK0JBQUM7QkFBQzsxMTA2IDExNjkgMTFBQjtCQUFDOzExMDYgMTE2OSAxMUFCOworQkFBRDtCQUFEOzExMDYgMTE2OSAxMUFDO0JBQUQ7MTEwNiAxMTY5IDExQUM7CitCQUFFO0JBQUU7MTEwNiAxMTY5IDExQUQ7QkFBRTsxMTA2IDExNjkgMTFBRDsKK0JBQUY7QkFBRjsxMTA2IDExNjkgMTFBRTtCQUFGOzExMDYgMTE2OSAxMUFFOworQkFCMDtCQUIwOzExMDYgMTE2OSAxMUFGO0JBQjA7MTEwNiAxMTY5IDExQUY7CitCQUIxO0JBQjE7MTEwNiAxMTY5IDExQjA7QkFCMTsxMTA2IDExNjkgMTFCMDsKK0JBQjI7QkFCMjsxMTA2IDExNjkgMTFCMTtCQUIyOzExMDYgMTE2OSAxMUIxOworQkFCMztCQUIzOzExMDYgMTE2OSAxMUIyO0JBQjM7MTEwNiAxMTY5IDExQjI7CitCQUI0O0JBQjQ7MTEwNiAxMTY5IDExQjM7QkFCNDsxMTA2IDExNjkgMTFCMzsKK0JBQjU7QkFCNTsxMTA2IDExNjkgMTFCNDtCQUI1OzExMDYgMTE2OSAxMUI0OworQkFCNjtCQUI2OzExMDYgMTE2OSAxMUI1O0JBQjY7MTEwNiAxMTY5IDExQjU7CitCQUI3O0JBQjc7MTEwNiAxMTY5IDExQjY7QkFCNzsxMTA2IDExNjkgMTFCNjsKK0JBQjg7QkFCODsxMTA2IDExNjkgMTFCNztCQUI4OzExMDYgMTE2OSAxMUI3OworQkFCOTtCQUI5OzExMDYgMTE2OSAxMUI4O0JBQjk7MTEwNiAxMTY5IDExQjg7CitCQUJBO0JBQkE7MTEwNiAxMTY5IDExQjk7QkFCQTsxMTA2IDExNjkgMTFCOTsKK0JBQkI7QkFCQjsxMTA2IDExNjkgMTFCQTtCQUJCOzExMDYgMTE2OSAxMUJBOworQkFCQztCQUJDOzExMDYgMTE2OSAxMUJCO0JBQkM7MTEwNiAxMTY5IDExQkI7CitCQUJEO0JBQkQ7MTEwNiAxMTY5IDExQkM7QkFCRDsxMTA2IDExNjkgMTFCQzsKK0JBQkU7QkFCRTsxMTA2IDExNjkgMTFCRDtCQUJFOzExMDYgMTE2OSAxMUJEOworQkFCRjtCQUJGOzExMDYgMTE2OSAxMUJFO0JBQkY7MTEwNiAxMTY5IDExQkU7CitCQUMwO0JBQzA7MTEwNiAxMTY5IDExQkY7QkFDMDsxMTA2IDExNjkgMTFCRjsKK0JBQzE7QkFDMTsxMTA2IDExNjkgMTFDMDtCQUMxOzExMDYgMTE2OSAxMUMwOworQkFDMjtCQUMyOzExMDYgMTE2OSAxMUMxO0JBQzI7MTEwNiAxMTY5IDExQzE7CitCQUMzO0JBQzM7MTEwNiAxMTY5IDExQzI7QkFDMzsxMTA2IDExNjkgMTFDMjsKK0JBQzQ7QkFDNDsxMTA2IDExNkE7QkFDNDsxMTA2IDExNkE7CitCQUM1O0JBQzU7MTEwNiAxMTZBIDExQTg7QkFDNTsxMTA2IDExNkEgMTFBODsKK0JBQzY7QkFDNjsxMTA2IDExNkEgMTFBOTtCQUM2OzExMDYgMTE2QSAxMUE5OworQkFDNztCQUM3OzExMDYgMTE2QSAxMUFBO0JBQzc7MTEwNiAxMTZBIDExQUE7CitCQUM4O0JBQzg7MTEwNiAxMTZBIDExQUI7QkFDODsxMTA2IDExNkEgMTFBQjsKK0JBQzk7QkFDOTsxMTA2IDExNkEgMTFBQztCQUM5OzExMDYgMTE2QSAxMUFDOworQkFDQTtCQUNBOzExMDYgMTE2QSAxMUFEO0JBQ0E7MTEwNiAxMTZBIDExQUQ7CitCQUNCO0JBQ0I7MTEwNiAxMTZBIDExQUU7QkFDQjsxMTA2IDExNkEgMTFBRTsKK0JBQ0M7QkFDQzsxMTA2IDExNkEgMTFBRjtCQUNDOzExMDYgMTE2QSAxMUFGOworQkFDRDtCQUNEOzExMDYgMTE2QSAxMUIwO0JBQ0Q7MTEwNiAxMTZBIDExQjA7CitCQUNFO0JBQ0U7MTEwNiAxMTZBIDExQjE7QkFDRTsxMTA2IDExNkEgMTFCMTsKK0JBQ0Y7QkFDRjsxMTA2IDExNkEgMTFCMjtCQUNGOzExMDYgMTE2QSAxMUIyOworQkFEMDtCQUQwOzExMDYgMTE2QSAxMUIzO0JBRDA7MTEwNiAxMTZBIDExQjM7CitCQUQxO0JBRDE7MTEwNiAxMTZBIDExQjQ7QkFEMTsxMTA2IDExNkEgMTFCNDsKK0JBRDI7QkFEMjsxMTA2IDExNkEgMTFCNTtCQUQyOzExMDYgMTE2QSAxMUI1OworQkFEMztCQUQzOzExMDYgMTE2QSAxMUI2O0JBRDM7MTEwNiAxMTZBIDExQjY7CitCQUQ0O0JBRDQ7MTEwNiAxMTZBIDExQjc7QkFENDsxMTA2IDExNkEgMTFCNzsKK0JBRDU7QkFENTsxMTA2IDExNkEgMTFCODtCQUQ1OzExMDYgMTE2QSAxMUI4OworQkFENjtCQUQ2OzExMDYgMTE2QSAxMUI5O0JBRDY7MTEwNiAxMTZBIDExQjk7CitCQUQ3O0JBRDc7MTEwNiAxMTZBIDExQkE7QkFENzsxMTA2IDExNkEgMTFCQTsKK0JBRDg7QkFEODsxMTA2IDExNkEgMTFCQjtCQUQ4OzExMDYgMTE2QSAxMUJCOworQkFEOTtCQUQ5OzExMDYgMTE2QSAxMUJDO0JBRDk7MTEwNiAxMTZBIDExQkM7CitCQURBO0JBREE7MTEwNiAxMTZBIDExQkQ7QkFEQTsxMTA2IDExNkEgMTFCRDsKK0JBREI7QkFEQjsxMTA2IDExNkEgMTFCRTtCQURCOzExMDYgMTE2QSAxMUJFOworQkFEQztCQURDOzExMDYgMTE2QSAxMUJGO0JBREM7MTEwNiAxMTZBIDExQkY7CitCQUREO0JBREQ7MTEwNiAxMTZBIDExQzA7QkFERDsxMTA2IDExNkEgMTFDMDsKK0JBREU7QkFERTsxMTA2IDExNkEgMTFDMTtCQURFOzExMDYgMTE2QSAxMUMxOworQkFERjtCQURGOzExMDYgMTE2QSAxMUMyO0JBREY7MTEwNiAxMTZBIDExQzI7CitCQUUwO0JBRTA7MTEwNiAxMTZCO0JBRTA7MTEwNiAxMTZCOworQkFFMTtCQUUxOzExMDYgMTE2QiAxMUE4O0JBRTE7MTEwNiAxMTZCIDExQTg7CitCQUUyO0JBRTI7MTEwNiAxMTZCIDExQTk7QkFFMjsxMTA2IDExNkIgMTFBOTsKK0JBRTM7QkFFMzsxMTA2IDExNkIgMTFBQTtCQUUzOzExMDYgMTE2QiAxMUFBOworQkFFNDtCQUU0OzExMDYgMTE2QiAxMUFCO0JBRTQ7MTEwNiAxMTZCIDExQUI7CitCQUU1O0JBRTU7MTEwNiAxMTZCIDExQUM7QkFFNTsxMTA2IDExNkIgMTFBQzsKK0JBRTY7QkFFNjsxMTA2IDExNkIgMTFBRDtCQUU2OzExMDYgMTE2QiAxMUFEOworQkFFNztCQUU3OzExMDYgMTE2QiAxMUFFO0JBRTc7MTEwNiAxMTZCIDExQUU7CitCQUU4O0JBRTg7MTEwNiAxMTZCIDExQUY7QkFFODsxMTA2IDExNkIgMTFBRjsKK0JBRTk7QkFFOTsxMTA2IDExNkIgMTFCMDtCQUU5OzExMDYgMTE2QiAxMUIwOworQkFFQTtCQUVBOzExMDYgMTE2QiAxMUIxO0JBRUE7MTEwNiAxMTZCIDExQjE7CitCQUVCO0JBRUI7MTEwNiAxMTZCIDExQjI7QkFFQjsxMTA2IDExNkIgMTFCMjsKK0JBRUM7QkFFQzsxMTA2IDExNkIgMTFCMztCQUVDOzExMDYgMTE2QiAxMUIzOworQkFFRDtCQUVEOzExMDYgMTE2QiAxMUI0O0JBRUQ7MTEwNiAxMTZCIDExQjQ7CitCQUVFO0JBRUU7MTEwNiAxMTZCIDExQjU7QkFFRTsxMTA2IDExNkIgMTFCNTsKK0JBRUY7QkFFRjsxMTA2IDExNkIgMTFCNjtCQUVGOzExMDYgMTE2QiAxMUI2OworQkFGMDtCQUYwOzExMDYgMTE2QiAxMUI3O0JBRjA7MTEwNiAxMTZCIDExQjc7CitCQUYxO0JBRjE7MTEwNiAxMTZCIDExQjg7QkFGMTsxMTA2IDExNkIgMTFCODsKK0JBRjI7QkFGMjsxMTA2IDExNkIgMTFCOTtCQUYyOzExMDYgMTE2QiAxMUI5OworQkFGMztCQUYzOzExMDYgMTE2QiAxMUJBO0JBRjM7MTEwNiAxMTZCIDExQkE7CitCQUY0O0JBRjQ7MTEwNiAxMTZCIDExQkI7QkFGNDsxMTA2IDExNkIgMTFCQjsKK0JBRjU7QkFGNTsxMTA2IDExNkIgMTFCQztCQUY1OzExMDYgMTE2QiAxMUJDOworQkFGNjtCQUY2OzExMDYgMTE2QiAxMUJEO0JBRjY7MTEwNiAxMTZCIDExQkQ7CitCQUY3O0JBRjc7MTEwNiAxMTZCIDExQkU7QkFGNzsxMTA2IDExNkIgMTFCRTsKK0JBRjg7QkFGODsxMTA2IDExNkIgMTFCRjtCQUY4OzExMDYgMTE2QiAxMUJGOworQkFGOTtCQUY5OzExMDYgMTE2QiAxMUMwO0JBRjk7MTEwNiAxMTZCIDExQzA7CitCQUZBO0JBRkE7MTEwNiAxMTZCIDExQzE7QkFGQTsxMTA2IDExNkIgMTFDMTsKK0JBRkI7QkFGQjsxMTA2IDExNkIgMTFDMjtCQUZCOzExMDYgMTE2QiAxMUMyOworQkFGQztCQUZDOzExMDYgMTE2QztCQUZDOzExMDYgMTE2QzsKK0JBRkQ7QkFGRDsxMTA2IDExNkMgMTFBODtCQUZEOzExMDYgMTE2QyAxMUE4OworQkFGRTtCQUZFOzExMDYgMTE2QyAxMUE5O0JBRkU7MTEwNiAxMTZDIDExQTk7CitCQUZGO0JBRkY7MTEwNiAxMTZDIDExQUE7QkFGRjsxMTA2IDExNkMgMTFBQTsKK0JCMDA7QkIwMDsxMTA2IDExNkMgMTFBQjtCQjAwOzExMDYgMTE2QyAxMUFCOworQkIwMTtCQjAxOzExMDYgMTE2QyAxMUFDO0JCMDE7MTEwNiAxMTZDIDExQUM7CitCQjAyO0JCMDI7MTEwNiAxMTZDIDExQUQ7QkIwMjsxMTA2IDExNkMgMTFBRDsKK0JCMDM7QkIwMzsxMTA2IDExNkMgMTFBRTtCQjAzOzExMDYgMTE2QyAxMUFFOworQkIwNDtCQjA0OzExMDYgMTE2QyAxMUFGO0JCMDQ7MTEwNiAxMTZDIDExQUY7CitCQjA1O0JCMDU7MTEwNiAxMTZDIDExQjA7QkIwNTsxMTA2IDExNkMgMTFCMDsKK0JCMDY7QkIwNjsxMTA2IDExNkMgMTFCMTtCQjA2OzExMDYgMTE2QyAxMUIxOworQkIwNztCQjA3OzExMDYgMTE2QyAxMUIyO0JCMDc7MTEwNiAxMTZDIDExQjI7CitCQjA4O0JCMDg7MTEwNiAxMTZDIDExQjM7QkIwODsxMTA2IDExNkMgMTFCMzsKK0JCMDk7QkIwOTsxMTA2IDExNkMgMTFCNDtCQjA5OzExMDYgMTE2QyAxMUI0OworQkIwQTtCQjBBOzExMDYgMTE2QyAxMUI1O0JCMEE7MTEwNiAxMTZDIDExQjU7CitCQjBCO0JCMEI7MTEwNiAxMTZDIDExQjY7QkIwQjsxMTA2IDExNkMgMTFCNjsKK0JCMEM7QkIwQzsxMTA2IDExNkMgMTFCNztCQjBDOzExMDYgMTE2QyAxMUI3OworQkIwRDtCQjBEOzExMDYgMTE2QyAxMUI4O0JCMEQ7MTEwNiAxMTZDIDExQjg7CitCQjBFO0JCMEU7MTEwNiAxMTZDIDExQjk7QkIwRTsxMTA2IDExNkMgMTFCOTsKK0JCMEY7QkIwRjsxMTA2IDExNkMgMTFCQTtCQjBGOzExMDYgMTE2QyAxMUJBOworQkIxMDtCQjEwOzExMDYgMTE2QyAxMUJCO0JCMTA7MTEwNiAxMTZDIDExQkI7CitCQjExO0JCMTE7MTEwNiAxMTZDIDExQkM7QkIxMTsxMTA2IDExNkMgMTFCQzsKK0JCMTI7QkIxMjsxMTA2IDExNkMgMTFCRDtCQjEyOzExMDYgMTE2QyAxMUJEOworQkIxMztCQjEzOzExMDYgMTE2QyAxMUJFO0JCMTM7MTEwNiAxMTZDIDExQkU7CitCQjE0O0JCMTQ7MTEwNiAxMTZDIDExQkY7QkIxNDsxMTA2IDExNkMgMTFCRjsKK0JCMTU7QkIxNTsxMTA2IDExNkMgMTFDMDtCQjE1OzExMDYgMTE2QyAxMUMwOworQkIxNjtCQjE2OzExMDYgMTE2QyAxMUMxO0JCMTY7MTEwNiAxMTZDIDExQzE7CitCQjE3O0JCMTc7MTEwNiAxMTZDIDExQzI7QkIxNzsxMTA2IDExNkMgMTFDMjsKK0JCMTg7QkIxODsxMTA2IDExNkQ7QkIxODsxMTA2IDExNkQ7CitCQjE5O0JCMTk7MTEwNiAxMTZEIDExQTg7QkIxOTsxMTA2IDExNkQgMTFBODsKK0JCMUE7QkIxQTsxMTA2IDExNkQgMTFBOTtCQjFBOzExMDYgMTE2RCAxMUE5OworQkIxQjtCQjFCOzExMDYgMTE2RCAxMUFBO0JCMUI7MTEwNiAxMTZEIDExQUE7CitCQjFDO0JCMUM7MTEwNiAxMTZEIDExQUI7QkIxQzsxMTA2IDExNkQgMTFBQjsKK0JCMUQ7QkIxRDsxMTA2IDExNkQgMTFBQztCQjFEOzExMDYgMTE2RCAxMUFDOworQkIxRTtCQjFFOzExMDYgMTE2RCAxMUFEO0JCMUU7MTEwNiAxMTZEIDExQUQ7CitCQjFGO0JCMUY7MTEwNiAxMTZEIDExQUU7QkIxRjsxMTA2IDExNkQgMTFBRTsKK0JCMjA7QkIyMDsxMTA2IDExNkQgMTFBRjtCQjIwOzExMDYgMTE2RCAxMUFGOworQkIyMTtCQjIxOzExMDYgMTE2RCAxMUIwO0JCMjE7MTEwNiAxMTZEIDExQjA7CitCQjIyO0JCMjI7MTEwNiAxMTZEIDExQjE7QkIyMjsxMTA2IDExNkQgMTFCMTsKK0JCMjM7QkIyMzsxMTA2IDExNkQgMTFCMjtCQjIzOzExMDYgMTE2RCAxMUIyOworQkIyNDtCQjI0OzExMDYgMTE2RCAxMUIzO0JCMjQ7MTEwNiAxMTZEIDExQjM7CitCQjI1O0JCMjU7MTEwNiAxMTZEIDExQjQ7QkIyNTsxMTA2IDExNkQgMTFCNDsKK0JCMjY7QkIyNjsxMTA2IDExNkQgMTFCNTtCQjI2OzExMDYgMTE2RCAxMUI1OworQkIyNztCQjI3OzExMDYgMTE2RCAxMUI2O0JCMjc7MTEwNiAxMTZEIDExQjY7CitCQjI4O0JCMjg7MTEwNiAxMTZEIDExQjc7QkIyODsxMTA2IDExNkQgMTFCNzsKK0JCMjk7QkIyOTsxMTA2IDExNkQgMTFCODtCQjI5OzExMDYgMTE2RCAxMUI4OworQkIyQTtCQjJBOzExMDYgMTE2RCAxMUI5O0JCMkE7MTEwNiAxMTZEIDExQjk7CitCQjJCO0JCMkI7MTEwNiAxMTZEIDExQkE7QkIyQjsxMTA2IDExNkQgMTFCQTsKK0JCMkM7QkIyQzsxMTA2IDExNkQgMTFCQjtCQjJDOzExMDYgMTE2RCAxMUJCOworQkIyRDtCQjJEOzExMDYgMTE2RCAxMUJDO0JCMkQ7MTEwNiAxMTZEIDExQkM7CitCQjJFO0JCMkU7MTEwNiAxMTZEIDExQkQ7QkIyRTsxMTA2IDExNkQgMTFCRDsKK0JCMkY7QkIyRjsxMTA2IDExNkQgMTFCRTtCQjJGOzExMDYgMTE2RCAxMUJFOworQkIzMDtCQjMwOzExMDYgMTE2RCAxMUJGO0JCMzA7MTEwNiAxMTZEIDExQkY7CitCQjMxO0JCMzE7MTEwNiAxMTZEIDExQzA7QkIzMTsxMTA2IDExNkQgMTFDMDsKK0JCMzI7QkIzMjsxMTA2IDExNkQgMTFDMTtCQjMyOzExMDYgMTE2RCAxMUMxOworQkIzMztCQjMzOzExMDYgMTE2RCAxMUMyO0JCMzM7MTEwNiAxMTZEIDExQzI7CitCQjM0O0JCMzQ7MTEwNiAxMTZFO0JCMzQ7MTEwNiAxMTZFOworQkIzNTtCQjM1OzExMDYgMTE2RSAxMUE4O0JCMzU7MTEwNiAxMTZFIDExQTg7CitCQjM2O0JCMzY7MTEwNiAxMTZFIDExQTk7QkIzNjsxMTA2IDExNkUgMTFBOTsKK0JCMzc7QkIzNzsxMTA2IDExNkUgMTFBQTtCQjM3OzExMDYgMTE2RSAxMUFBOworQkIzODtCQjM4OzExMDYgMTE2RSAxMUFCO0JCMzg7MTEwNiAxMTZFIDExQUI7CitCQjM5O0JCMzk7MTEwNiAxMTZFIDExQUM7QkIzOTsxMTA2IDExNkUgMTFBQzsKK0JCM0E7QkIzQTsxMTA2IDExNkUgMTFBRDtCQjNBOzExMDYgMTE2RSAxMUFEOworQkIzQjtCQjNCOzExMDYgMTE2RSAxMUFFO0JCM0I7MTEwNiAxMTZFIDExQUU7CitCQjNDO0JCM0M7MTEwNiAxMTZFIDExQUY7QkIzQzsxMTA2IDExNkUgMTFBRjsKK0JCM0Q7QkIzRDsxMTA2IDExNkUgMTFCMDtCQjNEOzExMDYgMTE2RSAxMUIwOworQkIzRTtCQjNFOzExMDYgMTE2RSAxMUIxO0JCM0U7MTEwNiAxMTZFIDExQjE7CitCQjNGO0JCM0Y7MTEwNiAxMTZFIDExQjI7QkIzRjsxMTA2IDExNkUgMTFCMjsKK0JCNDA7QkI0MDsxMTA2IDExNkUgMTFCMztCQjQwOzExMDYgMTE2RSAxMUIzOworQkI0MTtCQjQxOzExMDYgMTE2RSAxMUI0O0JCNDE7MTEwNiAxMTZFIDExQjQ7CitCQjQyO0JCNDI7MTEwNiAxMTZFIDExQjU7QkI0MjsxMTA2IDExNkUgMTFCNTsKK0JCNDM7QkI0MzsxMTA2IDExNkUgMTFCNjtCQjQzOzExMDYgMTE2RSAxMUI2OworQkI0NDtCQjQ0OzExMDYgMTE2RSAxMUI3O0JCNDQ7MTEwNiAxMTZFIDExQjc7CitCQjQ1O0JCNDU7MTEwNiAxMTZFIDExQjg7QkI0NTsxMTA2IDExNkUgMTFCODsKK0JCNDY7QkI0NjsxMTA2IDExNkUgMTFCOTtCQjQ2OzExMDYgMTE2RSAxMUI5OworQkI0NztCQjQ3OzExMDYgMTE2RSAxMUJBO0JCNDc7MTEwNiAxMTZFIDExQkE7CitCQjQ4O0JCNDg7MTEwNiAxMTZFIDExQkI7QkI0ODsxMTA2IDExNkUgMTFCQjsKK0JCNDk7QkI0OTsxMTA2IDExNkUgMTFCQztCQjQ5OzExMDYgMTE2RSAxMUJDOworQkI0QTtCQjRBOzExMDYgMTE2RSAxMUJEO0JCNEE7MTEwNiAxMTZFIDExQkQ7CitCQjRCO0JCNEI7MTEwNiAxMTZFIDExQkU7QkI0QjsxMTA2IDExNkUgMTFCRTsKK0JCNEM7QkI0QzsxMTA2IDExNkUgMTFCRjtCQjRDOzExMDYgMTE2RSAxMUJGOworQkI0RDtCQjREOzExMDYgMTE2RSAxMUMwO0JCNEQ7MTEwNiAxMTZFIDExQzA7CitCQjRFO0JCNEU7MTEwNiAxMTZFIDExQzE7QkI0RTsxMTA2IDExNkUgMTFDMTsKK0JCNEY7QkI0RjsxMTA2IDExNkUgMTFDMjtCQjRGOzExMDYgMTE2RSAxMUMyOworQkI1MDtCQjUwOzExMDYgMTE2RjtCQjUwOzExMDYgMTE2RjsKK0JCNTE7QkI1MTsxMTA2IDExNkYgMTFBODtCQjUxOzExMDYgMTE2RiAxMUE4OworQkI1MjtCQjUyOzExMDYgMTE2RiAxMUE5O0JCNTI7MTEwNiAxMTZGIDExQTk7CitCQjUzO0JCNTM7MTEwNiAxMTZGIDExQUE7QkI1MzsxMTA2IDExNkYgMTFBQTsKK0JCNTQ7QkI1NDsxMTA2IDExNkYgMTFBQjtCQjU0OzExMDYgMTE2RiAxMUFCOworQkI1NTtCQjU1OzExMDYgMTE2RiAxMUFDO0JCNTU7MTEwNiAxMTZGIDExQUM7CitCQjU2O0JCNTY7MTEwNiAxMTZGIDExQUQ7QkI1NjsxMTA2IDExNkYgMTFBRDsKK0JCNTc7QkI1NzsxMTA2IDExNkYgMTFBRTtCQjU3OzExMDYgMTE2RiAxMUFFOworQkI1ODtCQjU4OzExMDYgMTE2RiAxMUFGO0JCNTg7MTEwNiAxMTZGIDExQUY7CitCQjU5O0JCNTk7MTEwNiAxMTZGIDExQjA7QkI1OTsxMTA2IDExNkYgMTFCMDsKK0JCNUE7QkI1QTsxMTA2IDExNkYgMTFCMTtCQjVBOzExMDYgMTE2RiAxMUIxOworQkI1QjtCQjVCOzExMDYgMTE2RiAxMUIyO0JCNUI7MTEwNiAxMTZGIDExQjI7CitCQjVDO0JCNUM7MTEwNiAxMTZGIDExQjM7QkI1QzsxMTA2IDExNkYgMTFCMzsKK0JCNUQ7QkI1RDsxMTA2IDExNkYgMTFCNDtCQjVEOzExMDYgMTE2RiAxMUI0OworQkI1RTtCQjVFOzExMDYgMTE2RiAxMUI1O0JCNUU7MTEwNiAxMTZGIDExQjU7CitCQjVGO0JCNUY7MTEwNiAxMTZGIDExQjY7QkI1RjsxMTA2IDExNkYgMTFCNjsKK0JCNjA7QkI2MDsxMTA2IDExNkYgMTFCNztCQjYwOzExMDYgMTE2RiAxMUI3OworQkI2MTtCQjYxOzExMDYgMTE2RiAxMUI4O0JCNjE7MTEwNiAxMTZGIDExQjg7CitCQjYyO0JCNjI7MTEwNiAxMTZGIDExQjk7QkI2MjsxMTA2IDExNkYgMTFCOTsKK0JCNjM7QkI2MzsxMTA2IDExNkYgMTFCQTtCQjYzOzExMDYgMTE2RiAxMUJBOworQkI2NDtCQjY0OzExMDYgMTE2RiAxMUJCO0JCNjQ7MTEwNiAxMTZGIDExQkI7CitCQjY1O0JCNjU7MTEwNiAxMTZGIDExQkM7QkI2NTsxMTA2IDExNkYgMTFCQzsKK0JCNjY7QkI2NjsxMTA2IDExNkYgMTFCRDtCQjY2OzExMDYgMTE2RiAxMUJEOworQkI2NztCQjY3OzExMDYgMTE2RiAxMUJFO0JCNjc7MTEwNiAxMTZGIDExQkU7CitCQjY4O0JCNjg7MTEwNiAxMTZGIDExQkY7QkI2ODsxMTA2IDExNkYgMTFCRjsKK0JCNjk7QkI2OTsxMTA2IDExNkYgMTFDMDtCQjY5OzExMDYgMTE2RiAxMUMwOworQkI2QTtCQjZBOzExMDYgMTE2RiAxMUMxO0JCNkE7MTEwNiAxMTZGIDExQzE7CitCQjZCO0JCNkI7MTEwNiAxMTZGIDExQzI7QkI2QjsxMTA2IDExNkYgMTFDMjsKK0JCNkM7QkI2QzsxMTA2IDExNzA7QkI2QzsxMTA2IDExNzA7CitCQjZEO0JCNkQ7MTEwNiAxMTcwIDExQTg7QkI2RDsxMTA2IDExNzAgMTFBODsKK0JCNkU7QkI2RTsxMTA2IDExNzAgMTFBOTtCQjZFOzExMDYgMTE3MCAxMUE5OworQkI2RjtCQjZGOzExMDYgMTE3MCAxMUFBO0JCNkY7MTEwNiAxMTcwIDExQUE7CitCQjcwO0JCNzA7MTEwNiAxMTcwIDExQUI7QkI3MDsxMTA2IDExNzAgMTFBQjsKK0JCNzE7QkI3MTsxMTA2IDExNzAgMTFBQztCQjcxOzExMDYgMTE3MCAxMUFDOworQkI3MjtCQjcyOzExMDYgMTE3MCAxMUFEO0JCNzI7MTEwNiAxMTcwIDExQUQ7CitCQjczO0JCNzM7MTEwNiAxMTcwIDExQUU7QkI3MzsxMTA2IDExNzAgMTFBRTsKK0JCNzQ7QkI3NDsxMTA2IDExNzAgMTFBRjtCQjc0OzExMDYgMTE3MCAxMUFGOworQkI3NTtCQjc1OzExMDYgMTE3MCAxMUIwO0JCNzU7MTEwNiAxMTcwIDExQjA7CitCQjc2O0JCNzY7MTEwNiAxMTcwIDExQjE7QkI3NjsxMTA2IDExNzAgMTFCMTsKK0JCNzc7QkI3NzsxMTA2IDExNzAgMTFCMjtCQjc3OzExMDYgMTE3MCAxMUIyOworQkI3ODtCQjc4OzExMDYgMTE3MCAxMUIzO0JCNzg7MTEwNiAxMTcwIDExQjM7CitCQjc5O0JCNzk7MTEwNiAxMTcwIDExQjQ7QkI3OTsxMTA2IDExNzAgMTFCNDsKK0JCN0E7QkI3QTsxMTA2IDExNzAgMTFCNTtCQjdBOzExMDYgMTE3MCAxMUI1OworQkI3QjtCQjdCOzExMDYgMTE3MCAxMUI2O0JCN0I7MTEwNiAxMTcwIDExQjY7CitCQjdDO0JCN0M7MTEwNiAxMTcwIDExQjc7QkI3QzsxMTA2IDExNzAgMTFCNzsKK0JCN0Q7QkI3RDsxMTA2IDExNzAgMTFCODtCQjdEOzExMDYgMTE3MCAxMUI4OworQkI3RTtCQjdFOzExMDYgMTE3MCAxMUI5O0JCN0U7MTEwNiAxMTcwIDExQjk7CitCQjdGO0JCN0Y7MTEwNiAxMTcwIDExQkE7QkI3RjsxMTA2IDExNzAgMTFCQTsKK0JCODA7QkI4MDsxMTA2IDExNzAgMTFCQjtCQjgwOzExMDYgMTE3MCAxMUJCOworQkI4MTtCQjgxOzExMDYgMTE3MCAxMUJDO0JCODE7MTEwNiAxMTcwIDExQkM7CitCQjgyO0JCODI7MTEwNiAxMTcwIDExQkQ7QkI4MjsxMTA2IDExNzAgMTFCRDsKK0JCODM7QkI4MzsxMTA2IDExNzAgMTFCRTtCQjgzOzExMDYgMTE3MCAxMUJFOworQkI4NDtCQjg0OzExMDYgMTE3MCAxMUJGO0JCODQ7MTEwNiAxMTcwIDExQkY7CitCQjg1O0JCODU7MTEwNiAxMTcwIDExQzA7QkI4NTsxMTA2IDExNzAgMTFDMDsKK0JCODY7QkI4NjsxMTA2IDExNzAgMTFDMTtCQjg2OzExMDYgMTE3MCAxMUMxOworQkI4NztCQjg3OzExMDYgMTE3MCAxMUMyO0JCODc7MTEwNiAxMTcwIDExQzI7CitCQjg4O0JCODg7MTEwNiAxMTcxO0JCODg7MTEwNiAxMTcxOworQkI4OTtCQjg5OzExMDYgMTE3MSAxMUE4O0JCODk7MTEwNiAxMTcxIDExQTg7CitCQjhBO0JCOEE7MTEwNiAxMTcxIDExQTk7QkI4QTsxMTA2IDExNzEgMTFBOTsKK0JCOEI7QkI4QjsxMTA2IDExNzEgMTFBQTtCQjhCOzExMDYgMTE3MSAxMUFBOworQkI4QztCQjhDOzExMDYgMTE3MSAxMUFCO0JCOEM7MTEwNiAxMTcxIDExQUI7CitCQjhEO0JCOEQ7MTEwNiAxMTcxIDExQUM7QkI4RDsxMTA2IDExNzEgMTFBQzsKK0JCOEU7QkI4RTsxMTA2IDExNzEgMTFBRDtCQjhFOzExMDYgMTE3MSAxMUFEOworQkI4RjtCQjhGOzExMDYgMTE3MSAxMUFFO0JCOEY7MTEwNiAxMTcxIDExQUU7CitCQjkwO0JCOTA7MTEwNiAxMTcxIDExQUY7QkI5MDsxMTA2IDExNzEgMTFBRjsKK0JCOTE7QkI5MTsxMTA2IDExNzEgMTFCMDtCQjkxOzExMDYgMTE3MSAxMUIwOworQkI5MjtCQjkyOzExMDYgMTE3MSAxMUIxO0JCOTI7MTEwNiAxMTcxIDExQjE7CitCQjkzO0JCOTM7MTEwNiAxMTcxIDExQjI7QkI5MzsxMTA2IDExNzEgMTFCMjsKK0JCOTQ7QkI5NDsxMTA2IDExNzEgMTFCMztCQjk0OzExMDYgMTE3MSAxMUIzOworQkI5NTtCQjk1OzExMDYgMTE3MSAxMUI0O0JCOTU7MTEwNiAxMTcxIDExQjQ7CitCQjk2O0JCOTY7MTEwNiAxMTcxIDExQjU7QkI5NjsxMTA2IDExNzEgMTFCNTsKK0JCOTc7QkI5NzsxMTA2IDExNzEgMTFCNjtCQjk3OzExMDYgMTE3MSAxMUI2OworQkI5ODtCQjk4OzExMDYgMTE3MSAxMUI3O0JCOTg7MTEwNiAxMTcxIDExQjc7CitCQjk5O0JCOTk7MTEwNiAxMTcxIDExQjg7QkI5OTsxMTA2IDExNzEgMTFCODsKK0JCOUE7QkI5QTsxMTA2IDExNzEgMTFCOTtCQjlBOzExMDYgMTE3MSAxMUI5OworQkI5QjtCQjlCOzExMDYgMTE3MSAxMUJBO0JCOUI7MTEwNiAxMTcxIDExQkE7CitCQjlDO0JCOUM7MTEwNiAxMTcxIDExQkI7QkI5QzsxMTA2IDExNzEgMTFCQjsKK0JCOUQ7QkI5RDsxMTA2IDExNzEgMTFCQztCQjlEOzExMDYgMTE3MSAxMUJDOworQkI5RTtCQjlFOzExMDYgMTE3MSAxMUJEO0JCOUU7MTEwNiAxMTcxIDExQkQ7CitCQjlGO0JCOUY7MTEwNiAxMTcxIDExQkU7QkI5RjsxMTA2IDExNzEgMTFCRTsKK0JCQTA7QkJBMDsxMTA2IDExNzEgMTFCRjtCQkEwOzExMDYgMTE3MSAxMUJGOworQkJBMTtCQkExOzExMDYgMTE3MSAxMUMwO0JCQTE7MTEwNiAxMTcxIDExQzA7CitCQkEyO0JCQTI7MTEwNiAxMTcxIDExQzE7QkJBMjsxMTA2IDExNzEgMTFDMTsKK0JCQTM7QkJBMzsxMTA2IDExNzEgMTFDMjtCQkEzOzExMDYgMTE3MSAxMUMyOworQkJBNDtCQkE0OzExMDYgMTE3MjtCQkE0OzExMDYgMTE3MjsKK0JCQTU7QkJBNTsxMTA2IDExNzIgMTFBODtCQkE1OzExMDYgMTE3MiAxMUE4OworQkJBNjtCQkE2OzExMDYgMTE3MiAxMUE5O0JCQTY7MTEwNiAxMTcyIDExQTk7CitCQkE3O0JCQTc7MTEwNiAxMTcyIDExQUE7QkJBNzsxMTA2IDExNzIgMTFBQTsKK0JCQTg7QkJBODsxMTA2IDExNzIgMTFBQjtCQkE4OzExMDYgMTE3MiAxMUFCOworQkJBOTtCQkE5OzExMDYgMTE3MiAxMUFDO0JCQTk7MTEwNiAxMTcyIDExQUM7CitCQkFBO0JCQUE7MTEwNiAxMTcyIDExQUQ7QkJBQTsxMTA2IDExNzIgMTFBRDsKK0JCQUI7QkJBQjsxMTA2IDExNzIgMTFBRTtCQkFCOzExMDYgMTE3MiAxMUFFOworQkJBQztCQkFDOzExMDYgMTE3MiAxMUFGO0JCQUM7MTEwNiAxMTcyIDExQUY7CitCQkFEO0JCQUQ7MTEwNiAxMTcyIDExQjA7QkJBRDsxMTA2IDExNzIgMTFCMDsKK0JCQUU7QkJBRTsxMTA2IDExNzIgMTFCMTtCQkFFOzExMDYgMTE3MiAxMUIxOworQkJBRjtCQkFGOzExMDYgMTE3MiAxMUIyO0JCQUY7MTEwNiAxMTcyIDExQjI7CitCQkIwO0JCQjA7MTEwNiAxMTcyIDExQjM7QkJCMDsxMTA2IDExNzIgMTFCMzsKK0JCQjE7QkJCMTsxMTA2IDExNzIgMTFCNDtCQkIxOzExMDYgMTE3MiAxMUI0OworQkJCMjtCQkIyOzExMDYgMTE3MiAxMUI1O0JCQjI7MTEwNiAxMTcyIDExQjU7CitCQkIzO0JCQjM7MTEwNiAxMTcyIDExQjY7QkJCMzsxMTA2IDExNzIgMTFCNjsKK0JCQjQ7QkJCNDsxMTA2IDExNzIgMTFCNztCQkI0OzExMDYgMTE3MiAxMUI3OworQkJCNTtCQkI1OzExMDYgMTE3MiAxMUI4O0JCQjU7MTEwNiAxMTcyIDExQjg7CitCQkI2O0JCQjY7MTEwNiAxMTcyIDExQjk7QkJCNjsxMTA2IDExNzIgMTFCOTsKK0JCQjc7QkJCNzsxMTA2IDExNzIgMTFCQTtCQkI3OzExMDYgMTE3MiAxMUJBOworQkJCODtCQkI4OzExMDYgMTE3MiAxMUJCO0JCQjg7MTEwNiAxMTcyIDExQkI7CitCQkI5O0JCQjk7MTEwNiAxMTcyIDExQkM7QkJCOTsxMTA2IDExNzIgMTFCQzsKK0JCQkE7QkJCQTsxMTA2IDExNzIgMTFCRDtCQkJBOzExMDYgMTE3MiAxMUJEOworQkJCQjtCQkJCOzExMDYgMTE3MiAxMUJFO0JCQkI7MTEwNiAxMTcyIDExQkU7CitCQkJDO0JCQkM7MTEwNiAxMTcyIDExQkY7QkJCQzsxMTA2IDExNzIgMTFCRjsKK0JCQkQ7QkJCRDsxMTA2IDExNzIgMTFDMDtCQkJEOzExMDYgMTE3MiAxMUMwOworQkJCRTtCQkJFOzExMDYgMTE3MiAxMUMxO0JCQkU7MTEwNiAxMTcyIDExQzE7CitCQkJGO0JCQkY7MTEwNiAxMTcyIDExQzI7QkJCRjsxMTA2IDExNzIgMTFDMjsKK0JCQzA7QkJDMDsxMTA2IDExNzM7QkJDMDsxMTA2IDExNzM7CitCQkMxO0JCQzE7MTEwNiAxMTczIDExQTg7QkJDMTsxMTA2IDExNzMgMTFBODsKK0JCQzI7QkJDMjsxMTA2IDExNzMgMTFBOTtCQkMyOzExMDYgMTE3MyAxMUE5OworQkJDMztCQkMzOzExMDYgMTE3MyAxMUFBO0JCQzM7MTEwNiAxMTczIDExQUE7CitCQkM0O0JCQzQ7MTEwNiAxMTczIDExQUI7QkJDNDsxMTA2IDExNzMgMTFBQjsKK0JCQzU7QkJDNTsxMTA2IDExNzMgMTFBQztCQkM1OzExMDYgMTE3MyAxMUFDOworQkJDNjtCQkM2OzExMDYgMTE3MyAxMUFEO0JCQzY7MTEwNiAxMTczIDExQUQ7CitCQkM3O0JCQzc7MTEwNiAxMTczIDExQUU7QkJDNzsxMTA2IDExNzMgMTFBRTsKK0JCQzg7QkJDODsxMTA2IDExNzMgMTFBRjtCQkM4OzExMDYgMTE3MyAxMUFGOworQkJDOTtCQkM5OzExMDYgMTE3MyAxMUIwO0JCQzk7MTEwNiAxMTczIDExQjA7CitCQkNBO0JCQ0E7MTEwNiAxMTczIDExQjE7QkJDQTsxMTA2IDExNzMgMTFCMTsKK0JCQ0I7QkJDQjsxMTA2IDExNzMgMTFCMjtCQkNCOzExMDYgMTE3MyAxMUIyOworQkJDQztCQkNDOzExMDYgMTE3MyAxMUIzO0JCQ0M7MTEwNiAxMTczIDExQjM7CitCQkNEO0JCQ0Q7MTEwNiAxMTczIDExQjQ7QkJDRDsxMTA2IDExNzMgMTFCNDsKK0JCQ0U7QkJDRTsxMTA2IDExNzMgMTFCNTtCQkNFOzExMDYgMTE3MyAxMUI1OworQkJDRjtCQkNGOzExMDYgMTE3MyAxMUI2O0JCQ0Y7MTEwNiAxMTczIDExQjY7CitCQkQwO0JCRDA7MTEwNiAxMTczIDExQjc7QkJEMDsxMTA2IDExNzMgMTFCNzsKK0JCRDE7QkJEMTsxMTA2IDExNzMgMTFCODtCQkQxOzExMDYgMTE3MyAxMUI4OworQkJEMjtCQkQyOzExMDYgMTE3MyAxMUI5O0JCRDI7MTEwNiAxMTczIDExQjk7CitCQkQzO0JCRDM7MTEwNiAxMTczIDExQkE7QkJEMzsxMTA2IDExNzMgMTFCQTsKK0JCRDQ7QkJENDsxMTA2IDExNzMgMTFCQjtCQkQ0OzExMDYgMTE3MyAxMUJCOworQkJENTtCQkQ1OzExMDYgMTE3MyAxMUJDO0JCRDU7MTEwNiAxMTczIDExQkM7CitCQkQ2O0JCRDY7MTEwNiAxMTczIDExQkQ7QkJENjsxMTA2IDExNzMgMTFCRDsKK0JCRDc7QkJENzsxMTA2IDExNzMgMTFCRTtCQkQ3OzExMDYgMTE3MyAxMUJFOworQkJEODtCQkQ4OzExMDYgMTE3MyAxMUJGO0JCRDg7MTEwNiAxMTczIDExQkY7CitCQkQ5O0JCRDk7MTEwNiAxMTczIDExQzA7QkJEOTsxMTA2IDExNzMgMTFDMDsKK0JCREE7QkJEQTsxMTA2IDExNzMgMTFDMTtCQkRBOzExMDYgMTE3MyAxMUMxOworQkJEQjtCQkRCOzExMDYgMTE3MyAxMUMyO0JCREI7MTEwNiAxMTczIDExQzI7CitCQkRDO0JCREM7MTEwNiAxMTc0O0JCREM7MTEwNiAxMTc0OworQkJERDtCQkREOzExMDYgMTE3NCAxMUE4O0JCREQ7MTEwNiAxMTc0IDExQTg7CitCQkRFO0JCREU7MTEwNiAxMTc0IDExQTk7QkJERTsxMTA2IDExNzQgMTFBOTsKK0JCREY7QkJERjsxMTA2IDExNzQgMTFBQTtCQkRGOzExMDYgMTE3NCAxMUFBOworQkJFMDtCQkUwOzExMDYgMTE3NCAxMUFCO0JCRTA7MTEwNiAxMTc0IDExQUI7CitCQkUxO0JCRTE7MTEwNiAxMTc0IDExQUM7QkJFMTsxMTA2IDExNzQgMTFBQzsKK0JCRTI7QkJFMjsxMTA2IDExNzQgMTFBRDtCQkUyOzExMDYgMTE3NCAxMUFEOworQkJFMztCQkUzOzExMDYgMTE3NCAxMUFFO0JCRTM7MTEwNiAxMTc0IDExQUU7CitCQkU0O0JCRTQ7MTEwNiAxMTc0IDExQUY7QkJFNDsxMTA2IDExNzQgMTFBRjsKK0JCRTU7QkJFNTsxMTA2IDExNzQgMTFCMDtCQkU1OzExMDYgMTE3NCAxMUIwOworQkJFNjtCQkU2OzExMDYgMTE3NCAxMUIxO0JCRTY7MTEwNiAxMTc0IDExQjE7CitCQkU3O0JCRTc7MTEwNiAxMTc0IDExQjI7QkJFNzsxMTA2IDExNzQgMTFCMjsKK0JCRTg7QkJFODsxMTA2IDExNzQgMTFCMztCQkU4OzExMDYgMTE3NCAxMUIzOworQkJFOTtCQkU5OzExMDYgMTE3NCAxMUI0O0JCRTk7MTEwNiAxMTc0IDExQjQ7CitCQkVBO0JCRUE7MTEwNiAxMTc0IDExQjU7QkJFQTsxMTA2IDExNzQgMTFCNTsKK0JCRUI7QkJFQjsxMTA2IDExNzQgMTFCNjtCQkVCOzExMDYgMTE3NCAxMUI2OworQkJFQztCQkVDOzExMDYgMTE3NCAxMUI3O0JCRUM7MTEwNiAxMTc0IDExQjc7CitCQkVEO0JCRUQ7MTEwNiAxMTc0IDExQjg7QkJFRDsxMTA2IDExNzQgMTFCODsKK0JCRUU7QkJFRTsxMTA2IDExNzQgMTFCOTtCQkVFOzExMDYgMTE3NCAxMUI5OworQkJFRjtCQkVGOzExMDYgMTE3NCAxMUJBO0JCRUY7MTEwNiAxMTc0IDExQkE7CitCQkYwO0JCRjA7MTEwNiAxMTc0IDExQkI7QkJGMDsxMTA2IDExNzQgMTFCQjsKK0JCRjE7QkJGMTsxMTA2IDExNzQgMTFCQztCQkYxOzExMDYgMTE3NCAxMUJDOworQkJGMjtCQkYyOzExMDYgMTE3NCAxMUJEO0JCRjI7MTEwNiAxMTc0IDExQkQ7CitCQkYzO0JCRjM7MTEwNiAxMTc0IDExQkU7QkJGMzsxMTA2IDExNzQgMTFCRTsKK0JCRjQ7QkJGNDsxMTA2IDExNzQgMTFCRjtCQkY0OzExMDYgMTE3NCAxMUJGOworQkJGNTtCQkY1OzExMDYgMTE3NCAxMUMwO0JCRjU7MTEwNiAxMTc0IDExQzA7CitCQkY2O0JCRjY7MTEwNiAxMTc0IDExQzE7QkJGNjsxMTA2IDExNzQgMTFDMTsKK0JCRjc7QkJGNzsxMTA2IDExNzQgMTFDMjtCQkY3OzExMDYgMTE3NCAxMUMyOworQkJGODtCQkY4OzExMDYgMTE3NTtCQkY4OzExMDYgMTE3NTsKK0JCRjk7QkJGOTsxMTA2IDExNzUgMTFBODtCQkY5OzExMDYgMTE3NSAxMUE4OworQkJGQTtCQkZBOzExMDYgMTE3NSAxMUE5O0JCRkE7MTEwNiAxMTc1IDExQTk7CitCQkZCO0JCRkI7MTEwNiAxMTc1IDExQUE7QkJGQjsxMTA2IDExNzUgMTFBQTsKK0JCRkM7QkJGQzsxMTA2IDExNzUgMTFBQjtCQkZDOzExMDYgMTE3NSAxMUFCOworQkJGRDtCQkZEOzExMDYgMTE3NSAxMUFDO0JCRkQ7MTEwNiAxMTc1IDExQUM7CitCQkZFO0JCRkU7MTEwNiAxMTc1IDExQUQ7QkJGRTsxMTA2IDExNzUgMTFBRDsKK0JCRkY7QkJGRjsxMTA2IDExNzUgMTFBRTtCQkZGOzExMDYgMTE3NSAxMUFFOworQkMwMDtCQzAwOzExMDYgMTE3NSAxMUFGO0JDMDA7MTEwNiAxMTc1IDExQUY7CitCQzAxO0JDMDE7MTEwNiAxMTc1IDExQjA7QkMwMTsxMTA2IDExNzUgMTFCMDsKK0JDMDI7QkMwMjsxMTA2IDExNzUgMTFCMTtCQzAyOzExMDYgMTE3NSAxMUIxOworQkMwMztCQzAzOzExMDYgMTE3NSAxMUIyO0JDMDM7MTEwNiAxMTc1IDExQjI7CitCQzA0O0JDMDQ7MTEwNiAxMTc1IDExQjM7QkMwNDsxMTA2IDExNzUgMTFCMzsKK0JDMDU7QkMwNTsxMTA2IDExNzUgMTFCNDtCQzA1OzExMDYgMTE3NSAxMUI0OworQkMwNjtCQzA2OzExMDYgMTE3NSAxMUI1O0JDMDY7MTEwNiAxMTc1IDExQjU7CitCQzA3O0JDMDc7MTEwNiAxMTc1IDExQjY7QkMwNzsxMTA2IDExNzUgMTFCNjsKK0JDMDg7QkMwODsxMTA2IDExNzUgMTFCNztCQzA4OzExMDYgMTE3NSAxMUI3OworQkMwOTtCQzA5OzExMDYgMTE3NSAxMUI4O0JDMDk7MTEwNiAxMTc1IDExQjg7CitCQzBBO0JDMEE7MTEwNiAxMTc1IDExQjk7QkMwQTsxMTA2IDExNzUgMTFCOTsKK0JDMEI7QkMwQjsxMTA2IDExNzUgMTFCQTtCQzBCOzExMDYgMTE3NSAxMUJBOworQkMwQztCQzBDOzExMDYgMTE3NSAxMUJCO0JDMEM7MTEwNiAxMTc1IDExQkI7CitCQzBEO0JDMEQ7MTEwNiAxMTc1IDExQkM7QkMwRDsxMTA2IDExNzUgMTFCQzsKK0JDMEU7QkMwRTsxMTA2IDExNzUgMTFCRDtCQzBFOzExMDYgMTE3NSAxMUJEOworQkMwRjtCQzBGOzExMDYgMTE3NSAxMUJFO0JDMEY7MTEwNiAxMTc1IDExQkU7CitCQzEwO0JDMTA7MTEwNiAxMTc1IDExQkY7QkMxMDsxMTA2IDExNzUgMTFCRjsKK0JDMTE7QkMxMTsxMTA2IDExNzUgMTFDMDtCQzExOzExMDYgMTE3NSAxMUMwOworQkMxMjtCQzEyOzExMDYgMTE3NSAxMUMxO0JDMTI7MTEwNiAxMTc1IDExQzE7CitCQzEzO0JDMTM7MTEwNiAxMTc1IDExQzI7QkMxMzsxMTA2IDExNzUgMTFDMjsKK0JDMTQ7QkMxNDsxMTA3IDExNjE7QkMxNDsxMTA3IDExNjE7CitCQzE1O0JDMTU7MTEwNyAxMTYxIDExQTg7QkMxNTsxMTA3IDExNjEgMTFBODsKK0JDMTY7QkMxNjsxMTA3IDExNjEgMTFBOTtCQzE2OzExMDcgMTE2MSAxMUE5OworQkMxNztCQzE3OzExMDcgMTE2MSAxMUFBO0JDMTc7MTEwNyAxMTYxIDExQUE7CitCQzE4O0JDMTg7MTEwNyAxMTYxIDExQUI7QkMxODsxMTA3IDExNjEgMTFBQjsKK0JDMTk7QkMxOTsxMTA3IDExNjEgMTFBQztCQzE5OzExMDcgMTE2MSAxMUFDOworQkMxQTtCQzFBOzExMDcgMTE2MSAxMUFEO0JDMUE7MTEwNyAxMTYxIDExQUQ7CitCQzFCO0JDMUI7MTEwNyAxMTYxIDExQUU7QkMxQjsxMTA3IDExNjEgMTFBRTsKK0JDMUM7QkMxQzsxMTA3IDExNjEgMTFBRjtCQzFDOzExMDcgMTE2MSAxMUFGOworQkMxRDtCQzFEOzExMDcgMTE2MSAxMUIwO0JDMUQ7MTEwNyAxMTYxIDExQjA7CitCQzFFO0JDMUU7MTEwNyAxMTYxIDExQjE7QkMxRTsxMTA3IDExNjEgMTFCMTsKK0JDMUY7QkMxRjsxMTA3IDExNjEgMTFCMjtCQzFGOzExMDcgMTE2MSAxMUIyOworQkMyMDtCQzIwOzExMDcgMTE2MSAxMUIzO0JDMjA7MTEwNyAxMTYxIDExQjM7CitCQzIxO0JDMjE7MTEwNyAxMTYxIDExQjQ7QkMyMTsxMTA3IDExNjEgMTFCNDsKK0JDMjI7QkMyMjsxMTA3IDExNjEgMTFCNTtCQzIyOzExMDcgMTE2MSAxMUI1OworQkMyMztCQzIzOzExMDcgMTE2MSAxMUI2O0JDMjM7MTEwNyAxMTYxIDExQjY7CitCQzI0O0JDMjQ7MTEwNyAxMTYxIDExQjc7QkMyNDsxMTA3IDExNjEgMTFCNzsKK0JDMjU7QkMyNTsxMTA3IDExNjEgMTFCODtCQzI1OzExMDcgMTE2MSAxMUI4OworQkMyNjtCQzI2OzExMDcgMTE2MSAxMUI5O0JDMjY7MTEwNyAxMTYxIDExQjk7CitCQzI3O0JDMjc7MTEwNyAxMTYxIDExQkE7QkMyNzsxMTA3IDExNjEgMTFCQTsKK0JDMjg7QkMyODsxMTA3IDExNjEgMTFCQjtCQzI4OzExMDcgMTE2MSAxMUJCOworQkMyOTtCQzI5OzExMDcgMTE2MSAxMUJDO0JDMjk7MTEwNyAxMTYxIDExQkM7CitCQzJBO0JDMkE7MTEwNyAxMTYxIDExQkQ7QkMyQTsxMTA3IDExNjEgMTFCRDsKK0JDMkI7QkMyQjsxMTA3IDExNjEgMTFCRTtCQzJCOzExMDcgMTE2MSAxMUJFOworQkMyQztCQzJDOzExMDcgMTE2MSAxMUJGO0JDMkM7MTEwNyAxMTYxIDExQkY7CitCQzJEO0JDMkQ7MTEwNyAxMTYxIDExQzA7QkMyRDsxMTA3IDExNjEgMTFDMDsKK0JDMkU7QkMyRTsxMTA3IDExNjEgMTFDMTtCQzJFOzExMDcgMTE2MSAxMUMxOworQkMyRjtCQzJGOzExMDcgMTE2MSAxMUMyO0JDMkY7MTEwNyAxMTYxIDExQzI7CitCQzMwO0JDMzA7MTEwNyAxMTYyO0JDMzA7MTEwNyAxMTYyOworQkMzMTtCQzMxOzExMDcgMTE2MiAxMUE4O0JDMzE7MTEwNyAxMTYyIDExQTg7CitCQzMyO0JDMzI7MTEwNyAxMTYyIDExQTk7QkMzMjsxMTA3IDExNjIgMTFBOTsKK0JDMzM7QkMzMzsxMTA3IDExNjIgMTFBQTtCQzMzOzExMDcgMTE2MiAxMUFBOworQkMzNDtCQzM0OzExMDcgMTE2MiAxMUFCO0JDMzQ7MTEwNyAxMTYyIDExQUI7CitCQzM1O0JDMzU7MTEwNyAxMTYyIDExQUM7QkMzNTsxMTA3IDExNjIgMTFBQzsKK0JDMzY7QkMzNjsxMTA3IDExNjIgMTFBRDtCQzM2OzExMDcgMTE2MiAxMUFEOworQkMzNztCQzM3OzExMDcgMTE2MiAxMUFFO0JDMzc7MTEwNyAxMTYyIDExQUU7CitCQzM4O0JDMzg7MTEwNyAxMTYyIDExQUY7QkMzODsxMTA3IDExNjIgMTFBRjsKK0JDMzk7QkMzOTsxMTA3IDExNjIgMTFCMDtCQzM5OzExMDcgMTE2MiAxMUIwOworQkMzQTtCQzNBOzExMDcgMTE2MiAxMUIxO0JDM0E7MTEwNyAxMTYyIDExQjE7CitCQzNCO0JDM0I7MTEwNyAxMTYyIDExQjI7QkMzQjsxMTA3IDExNjIgMTFCMjsKK0JDM0M7QkMzQzsxMTA3IDExNjIgMTFCMztCQzNDOzExMDcgMTE2MiAxMUIzOworQkMzRDtCQzNEOzExMDcgMTE2MiAxMUI0O0JDM0Q7MTEwNyAxMTYyIDExQjQ7CitCQzNFO0JDM0U7MTEwNyAxMTYyIDExQjU7QkMzRTsxMTA3IDExNjIgMTFCNTsKK0JDM0Y7QkMzRjsxMTA3IDExNjIgMTFCNjtCQzNGOzExMDcgMTE2MiAxMUI2OworQkM0MDtCQzQwOzExMDcgMTE2MiAxMUI3O0JDNDA7MTEwNyAxMTYyIDExQjc7CitCQzQxO0JDNDE7MTEwNyAxMTYyIDExQjg7QkM0MTsxMTA3IDExNjIgMTFCODsKK0JDNDI7QkM0MjsxMTA3IDExNjIgMTFCOTtCQzQyOzExMDcgMTE2MiAxMUI5OworQkM0MztCQzQzOzExMDcgMTE2MiAxMUJBO0JDNDM7MTEwNyAxMTYyIDExQkE7CitCQzQ0O0JDNDQ7MTEwNyAxMTYyIDExQkI7QkM0NDsxMTA3IDExNjIgMTFCQjsKK0JDNDU7QkM0NTsxMTA3IDExNjIgMTFCQztCQzQ1OzExMDcgMTE2MiAxMUJDOworQkM0NjtCQzQ2OzExMDcgMTE2MiAxMUJEO0JDNDY7MTEwNyAxMTYyIDExQkQ7CitCQzQ3O0JDNDc7MTEwNyAxMTYyIDExQkU7QkM0NzsxMTA3IDExNjIgMTFCRTsKK0JDNDg7QkM0ODsxMTA3IDExNjIgMTFCRjtCQzQ4OzExMDcgMTE2MiAxMUJGOworQkM0OTtCQzQ5OzExMDcgMTE2MiAxMUMwO0JDNDk7MTEwNyAxMTYyIDExQzA7CitCQzRBO0JDNEE7MTEwNyAxMTYyIDExQzE7QkM0QTsxMTA3IDExNjIgMTFDMTsKK0JDNEI7QkM0QjsxMTA3IDExNjIgMTFDMjtCQzRCOzExMDcgMTE2MiAxMUMyOworQkM0QztCQzRDOzExMDcgMTE2MztCQzRDOzExMDcgMTE2MzsKK0JDNEQ7QkM0RDsxMTA3IDExNjMgMTFBODtCQzREOzExMDcgMTE2MyAxMUE4OworQkM0RTtCQzRFOzExMDcgMTE2MyAxMUE5O0JDNEU7MTEwNyAxMTYzIDExQTk7CitCQzRGO0JDNEY7MTEwNyAxMTYzIDExQUE7QkM0RjsxMTA3IDExNjMgMTFBQTsKK0JDNTA7QkM1MDsxMTA3IDExNjMgMTFBQjtCQzUwOzExMDcgMTE2MyAxMUFCOworQkM1MTtCQzUxOzExMDcgMTE2MyAxMUFDO0JDNTE7MTEwNyAxMTYzIDExQUM7CitCQzUyO0JDNTI7MTEwNyAxMTYzIDExQUQ7QkM1MjsxMTA3IDExNjMgMTFBRDsKK0JDNTM7QkM1MzsxMTA3IDExNjMgMTFBRTtCQzUzOzExMDcgMTE2MyAxMUFFOworQkM1NDtCQzU0OzExMDcgMTE2MyAxMUFGO0JDNTQ7MTEwNyAxMTYzIDExQUY7CitCQzU1O0JDNTU7MTEwNyAxMTYzIDExQjA7QkM1NTsxMTA3IDExNjMgMTFCMDsKK0JDNTY7QkM1NjsxMTA3IDExNjMgMTFCMTtCQzU2OzExMDcgMTE2MyAxMUIxOworQkM1NztCQzU3OzExMDcgMTE2MyAxMUIyO0JDNTc7MTEwNyAxMTYzIDExQjI7CitCQzU4O0JDNTg7MTEwNyAxMTYzIDExQjM7QkM1ODsxMTA3IDExNjMgMTFCMzsKK0JDNTk7QkM1OTsxMTA3IDExNjMgMTFCNDtCQzU5OzExMDcgMTE2MyAxMUI0OworQkM1QTtCQzVBOzExMDcgMTE2MyAxMUI1O0JDNUE7MTEwNyAxMTYzIDExQjU7CitCQzVCO0JDNUI7MTEwNyAxMTYzIDExQjY7QkM1QjsxMTA3IDExNjMgMTFCNjsKK0JDNUM7QkM1QzsxMTA3IDExNjMgMTFCNztCQzVDOzExMDcgMTE2MyAxMUI3OworQkM1RDtCQzVEOzExMDcgMTE2MyAxMUI4O0JDNUQ7MTEwNyAxMTYzIDExQjg7CitCQzVFO0JDNUU7MTEwNyAxMTYzIDExQjk7QkM1RTsxMTA3IDExNjMgMTFCOTsKK0JDNUY7QkM1RjsxMTA3IDExNjMgMTFCQTtCQzVGOzExMDcgMTE2MyAxMUJBOworQkM2MDtCQzYwOzExMDcgMTE2MyAxMUJCO0JDNjA7MTEwNyAxMTYzIDExQkI7CitCQzYxO0JDNjE7MTEwNyAxMTYzIDExQkM7QkM2MTsxMTA3IDExNjMgMTFCQzsKK0JDNjI7QkM2MjsxMTA3IDExNjMgMTFCRDtCQzYyOzExMDcgMTE2MyAxMUJEOworQkM2MztCQzYzOzExMDcgMTE2MyAxMUJFO0JDNjM7MTEwNyAxMTYzIDExQkU7CitCQzY0O0JDNjQ7MTEwNyAxMTYzIDExQkY7QkM2NDsxMTA3IDExNjMgMTFCRjsKK0JDNjU7QkM2NTsxMTA3IDExNjMgMTFDMDtCQzY1OzExMDcgMTE2MyAxMUMwOworQkM2NjtCQzY2OzExMDcgMTE2MyAxMUMxO0JDNjY7MTEwNyAxMTYzIDExQzE7CitCQzY3O0JDNjc7MTEwNyAxMTYzIDExQzI7QkM2NzsxMTA3IDExNjMgMTFDMjsKK0JDNjg7QkM2ODsxMTA3IDExNjQ7QkM2ODsxMTA3IDExNjQ7CitCQzY5O0JDNjk7MTEwNyAxMTY0IDExQTg7QkM2OTsxMTA3IDExNjQgMTFBODsKK0JDNkE7QkM2QTsxMTA3IDExNjQgMTFBOTtCQzZBOzExMDcgMTE2NCAxMUE5OworQkM2QjtCQzZCOzExMDcgMTE2NCAxMUFBO0JDNkI7MTEwNyAxMTY0IDExQUE7CitCQzZDO0JDNkM7MTEwNyAxMTY0IDExQUI7QkM2QzsxMTA3IDExNjQgMTFBQjsKK0JDNkQ7QkM2RDsxMTA3IDExNjQgMTFBQztCQzZEOzExMDcgMTE2NCAxMUFDOworQkM2RTtCQzZFOzExMDcgMTE2NCAxMUFEO0JDNkU7MTEwNyAxMTY0IDExQUQ7CitCQzZGO0JDNkY7MTEwNyAxMTY0IDExQUU7QkM2RjsxMTA3IDExNjQgMTFBRTsKK0JDNzA7QkM3MDsxMTA3IDExNjQgMTFBRjtCQzcwOzExMDcgMTE2NCAxMUFGOworQkM3MTtCQzcxOzExMDcgMTE2NCAxMUIwO0JDNzE7MTEwNyAxMTY0IDExQjA7CitCQzcyO0JDNzI7MTEwNyAxMTY0IDExQjE7QkM3MjsxMTA3IDExNjQgMTFCMTsKK0JDNzM7QkM3MzsxMTA3IDExNjQgMTFCMjtCQzczOzExMDcgMTE2NCAxMUIyOworQkM3NDtCQzc0OzExMDcgMTE2NCAxMUIzO0JDNzQ7MTEwNyAxMTY0IDExQjM7CitCQzc1O0JDNzU7MTEwNyAxMTY0IDExQjQ7QkM3NTsxMTA3IDExNjQgMTFCNDsKK0JDNzY7QkM3NjsxMTA3IDExNjQgMTFCNTtCQzc2OzExMDcgMTE2NCAxMUI1OworQkM3NztCQzc3OzExMDcgMTE2NCAxMUI2O0JDNzc7MTEwNyAxMTY0IDExQjY7CitCQzc4O0JDNzg7MTEwNyAxMTY0IDExQjc7QkM3ODsxMTA3IDExNjQgMTFCNzsKK0JDNzk7QkM3OTsxMTA3IDExNjQgMTFCODtCQzc5OzExMDcgMTE2NCAxMUI4OworQkM3QTtCQzdBOzExMDcgMTE2NCAxMUI5O0JDN0E7MTEwNyAxMTY0IDExQjk7CitCQzdCO0JDN0I7MTEwNyAxMTY0IDExQkE7QkM3QjsxMTA3IDExNjQgMTFCQTsKK0JDN0M7QkM3QzsxMTA3IDExNjQgMTFCQjtCQzdDOzExMDcgMTE2NCAxMUJCOworQkM3RDtCQzdEOzExMDcgMTE2NCAxMUJDO0JDN0Q7MTEwNyAxMTY0IDExQkM7CitCQzdFO0JDN0U7MTEwNyAxMTY0IDExQkQ7QkM3RTsxMTA3IDExNjQgMTFCRDsKK0JDN0Y7QkM3RjsxMTA3IDExNjQgMTFCRTtCQzdGOzExMDcgMTE2NCAxMUJFOworQkM4MDtCQzgwOzExMDcgMTE2NCAxMUJGO0JDODA7MTEwNyAxMTY0IDExQkY7CitCQzgxO0JDODE7MTEwNyAxMTY0IDExQzA7QkM4MTsxMTA3IDExNjQgMTFDMDsKK0JDODI7QkM4MjsxMTA3IDExNjQgMTFDMTtCQzgyOzExMDcgMTE2NCAxMUMxOworQkM4MztCQzgzOzExMDcgMTE2NCAxMUMyO0JDODM7MTEwNyAxMTY0IDExQzI7CitCQzg0O0JDODQ7MTEwNyAxMTY1O0JDODQ7MTEwNyAxMTY1OworQkM4NTtCQzg1OzExMDcgMTE2NSAxMUE4O0JDODU7MTEwNyAxMTY1IDExQTg7CitCQzg2O0JDODY7MTEwNyAxMTY1IDExQTk7QkM4NjsxMTA3IDExNjUgMTFBOTsKK0JDODc7QkM4NzsxMTA3IDExNjUgMTFBQTtCQzg3OzExMDcgMTE2NSAxMUFBOworQkM4ODtCQzg4OzExMDcgMTE2NSAxMUFCO0JDODg7MTEwNyAxMTY1IDExQUI7CitCQzg5O0JDODk7MTEwNyAxMTY1IDExQUM7QkM4OTsxMTA3IDExNjUgMTFBQzsKK0JDOEE7QkM4QTsxMTA3IDExNjUgMTFBRDtCQzhBOzExMDcgMTE2NSAxMUFEOworQkM4QjtCQzhCOzExMDcgMTE2NSAxMUFFO0JDOEI7MTEwNyAxMTY1IDExQUU7CitCQzhDO0JDOEM7MTEwNyAxMTY1IDExQUY7QkM4QzsxMTA3IDExNjUgMTFBRjsKK0JDOEQ7QkM4RDsxMTA3IDExNjUgMTFCMDtCQzhEOzExMDcgMTE2NSAxMUIwOworQkM4RTtCQzhFOzExMDcgMTE2NSAxMUIxO0JDOEU7MTEwNyAxMTY1IDExQjE7CitCQzhGO0JDOEY7MTEwNyAxMTY1IDExQjI7QkM4RjsxMTA3IDExNjUgMTFCMjsKK0JDOTA7QkM5MDsxMTA3IDExNjUgMTFCMztCQzkwOzExMDcgMTE2NSAxMUIzOworQkM5MTtCQzkxOzExMDcgMTE2NSAxMUI0O0JDOTE7MTEwNyAxMTY1IDExQjQ7CitCQzkyO0JDOTI7MTEwNyAxMTY1IDExQjU7QkM5MjsxMTA3IDExNjUgMTFCNTsKK0JDOTM7QkM5MzsxMTA3IDExNjUgMTFCNjtCQzkzOzExMDcgMTE2NSAxMUI2OworQkM5NDtCQzk0OzExMDcgMTE2NSAxMUI3O0JDOTQ7MTEwNyAxMTY1IDExQjc7CitCQzk1O0JDOTU7MTEwNyAxMTY1IDExQjg7QkM5NTsxMTA3IDExNjUgMTFCODsKK0JDOTY7QkM5NjsxMTA3IDExNjUgMTFCOTtCQzk2OzExMDcgMTE2NSAxMUI5OworQkM5NztCQzk3OzExMDcgMTE2NSAxMUJBO0JDOTc7MTEwNyAxMTY1IDExQkE7CitCQzk4O0JDOTg7MTEwNyAxMTY1IDExQkI7QkM5ODsxMTA3IDExNjUgMTFCQjsKK0JDOTk7QkM5OTsxMTA3IDExNjUgMTFCQztCQzk5OzExMDcgMTE2NSAxMUJDOworQkM5QTtCQzlBOzExMDcgMTE2NSAxMUJEO0JDOUE7MTEwNyAxMTY1IDExQkQ7CitCQzlCO0JDOUI7MTEwNyAxMTY1IDExQkU7QkM5QjsxMTA3IDExNjUgMTFCRTsKK0JDOUM7QkM5QzsxMTA3IDExNjUgMTFCRjtCQzlDOzExMDcgMTE2NSAxMUJGOworQkM5RDtCQzlEOzExMDcgMTE2NSAxMUMwO0JDOUQ7MTEwNyAxMTY1IDExQzA7CitCQzlFO0JDOUU7MTEwNyAxMTY1IDExQzE7QkM5RTsxMTA3IDExNjUgMTFDMTsKK0JDOUY7QkM5RjsxMTA3IDExNjUgMTFDMjtCQzlGOzExMDcgMTE2NSAxMUMyOworQkNBMDtCQ0EwOzExMDcgMTE2NjtCQ0EwOzExMDcgMTE2NjsKK0JDQTE7QkNBMTsxMTA3IDExNjYgMTFBODtCQ0ExOzExMDcgMTE2NiAxMUE4OworQkNBMjtCQ0EyOzExMDcgMTE2NiAxMUE5O0JDQTI7MTEwNyAxMTY2IDExQTk7CitCQ0EzO0JDQTM7MTEwNyAxMTY2IDExQUE7QkNBMzsxMTA3IDExNjYgMTFBQTsKK0JDQTQ7QkNBNDsxMTA3IDExNjYgMTFBQjtCQ0E0OzExMDcgMTE2NiAxMUFCOworQkNBNTtCQ0E1OzExMDcgMTE2NiAxMUFDO0JDQTU7MTEwNyAxMTY2IDExQUM7CitCQ0E2O0JDQTY7MTEwNyAxMTY2IDExQUQ7QkNBNjsxMTA3IDExNjYgMTFBRDsKK0JDQTc7QkNBNzsxMTA3IDExNjYgMTFBRTtCQ0E3OzExMDcgMTE2NiAxMUFFOworQkNBODtCQ0E4OzExMDcgMTE2NiAxMUFGO0JDQTg7MTEwNyAxMTY2IDExQUY7CitCQ0E5O0JDQTk7MTEwNyAxMTY2IDExQjA7QkNBOTsxMTA3IDExNjYgMTFCMDsKK0JDQUE7QkNBQTsxMTA3IDExNjYgMTFCMTtCQ0FBOzExMDcgMTE2NiAxMUIxOworQkNBQjtCQ0FCOzExMDcgMTE2NiAxMUIyO0JDQUI7MTEwNyAxMTY2IDExQjI7CitCQ0FDO0JDQUM7MTEwNyAxMTY2IDExQjM7QkNBQzsxMTA3IDExNjYgMTFCMzsKK0JDQUQ7QkNBRDsxMTA3IDExNjYgMTFCNDtCQ0FEOzExMDcgMTE2NiAxMUI0OworQkNBRTtCQ0FFOzExMDcgMTE2NiAxMUI1O0JDQUU7MTEwNyAxMTY2IDExQjU7CitCQ0FGO0JDQUY7MTEwNyAxMTY2IDExQjY7QkNBRjsxMTA3IDExNjYgMTFCNjsKK0JDQjA7QkNCMDsxMTA3IDExNjYgMTFCNztCQ0IwOzExMDcgMTE2NiAxMUI3OworQkNCMTtCQ0IxOzExMDcgMTE2NiAxMUI4O0JDQjE7MTEwNyAxMTY2IDExQjg7CitCQ0IyO0JDQjI7MTEwNyAxMTY2IDExQjk7QkNCMjsxMTA3IDExNjYgMTFCOTsKK0JDQjM7QkNCMzsxMTA3IDExNjYgMTFCQTtCQ0IzOzExMDcgMTE2NiAxMUJBOworQkNCNDtCQ0I0OzExMDcgMTE2NiAxMUJCO0JDQjQ7MTEwNyAxMTY2IDExQkI7CitCQ0I1O0JDQjU7MTEwNyAxMTY2IDExQkM7QkNCNTsxMTA3IDExNjYgMTFCQzsKK0JDQjY7QkNCNjsxMTA3IDExNjYgMTFCRDtCQ0I2OzExMDcgMTE2NiAxMUJEOworQkNCNztCQ0I3OzExMDcgMTE2NiAxMUJFO0JDQjc7MTEwNyAxMTY2IDExQkU7CitCQ0I4O0JDQjg7MTEwNyAxMTY2IDExQkY7QkNCODsxMTA3IDExNjYgMTFCRjsKK0JDQjk7QkNCOTsxMTA3IDExNjYgMTFDMDtCQ0I5OzExMDcgMTE2NiAxMUMwOworQkNCQTtCQ0JBOzExMDcgMTE2NiAxMUMxO0JDQkE7MTEwNyAxMTY2IDExQzE7CitCQ0JCO0JDQkI7MTEwNyAxMTY2IDExQzI7QkNCQjsxMTA3IDExNjYgMTFDMjsKK0JDQkM7QkNCQzsxMTA3IDExNjc7QkNCQzsxMTA3IDExNjc7CitCQ0JEO0JDQkQ7MTEwNyAxMTY3IDExQTg7QkNCRDsxMTA3IDExNjcgMTFBODsKK0JDQkU7QkNCRTsxMTA3IDExNjcgMTFBOTtCQ0JFOzExMDcgMTE2NyAxMUE5OworQkNCRjtCQ0JGOzExMDcgMTE2NyAxMUFBO0JDQkY7MTEwNyAxMTY3IDExQUE7CitCQ0MwO0JDQzA7MTEwNyAxMTY3IDExQUI7QkNDMDsxMTA3IDExNjcgMTFBQjsKK0JDQzE7QkNDMTsxMTA3IDExNjcgMTFBQztCQ0MxOzExMDcgMTE2NyAxMUFDOworQkNDMjtCQ0MyOzExMDcgMTE2NyAxMUFEO0JDQzI7MTEwNyAxMTY3IDExQUQ7CitCQ0MzO0JDQzM7MTEwNyAxMTY3IDExQUU7QkNDMzsxMTA3IDExNjcgMTFBRTsKK0JDQzQ7QkNDNDsxMTA3IDExNjcgMTFBRjtCQ0M0OzExMDcgMTE2NyAxMUFGOworQkNDNTtCQ0M1OzExMDcgMTE2NyAxMUIwO0JDQzU7MTEwNyAxMTY3IDExQjA7CitCQ0M2O0JDQzY7MTEwNyAxMTY3IDExQjE7QkNDNjsxMTA3IDExNjcgMTFCMTsKK0JDQzc7QkNDNzsxMTA3IDExNjcgMTFCMjtCQ0M3OzExMDcgMTE2NyAxMUIyOworQkNDODtCQ0M4OzExMDcgMTE2NyAxMUIzO0JDQzg7MTEwNyAxMTY3IDExQjM7CitCQ0M5O0JDQzk7MTEwNyAxMTY3IDExQjQ7QkNDOTsxMTA3IDExNjcgMTFCNDsKK0JDQ0E7QkNDQTsxMTA3IDExNjcgMTFCNTtCQ0NBOzExMDcgMTE2NyAxMUI1OworQkNDQjtCQ0NCOzExMDcgMTE2NyAxMUI2O0JDQ0I7MTEwNyAxMTY3IDExQjY7CitCQ0NDO0JDQ0M7MTEwNyAxMTY3IDExQjc7QkNDQzsxMTA3IDExNjcgMTFCNzsKK0JDQ0Q7QkNDRDsxMTA3IDExNjcgMTFCODtCQ0NEOzExMDcgMTE2NyAxMUI4OworQkNDRTtCQ0NFOzExMDcgMTE2NyAxMUI5O0JDQ0U7MTEwNyAxMTY3IDExQjk7CitCQ0NGO0JDQ0Y7MTEwNyAxMTY3IDExQkE7QkNDRjsxMTA3IDExNjcgMTFCQTsKK0JDRDA7QkNEMDsxMTA3IDExNjcgMTFCQjtCQ0QwOzExMDcgMTE2NyAxMUJCOworQkNEMTtCQ0QxOzExMDcgMTE2NyAxMUJDO0JDRDE7MTEwNyAxMTY3IDExQkM7CitCQ0QyO0JDRDI7MTEwNyAxMTY3IDExQkQ7QkNEMjsxMTA3IDExNjcgMTFCRDsKK0JDRDM7QkNEMzsxMTA3IDExNjcgMTFCRTtCQ0QzOzExMDcgMTE2NyAxMUJFOworQkNENDtCQ0Q0OzExMDcgMTE2NyAxMUJGO0JDRDQ7MTEwNyAxMTY3IDExQkY7CitCQ0Q1O0JDRDU7MTEwNyAxMTY3IDExQzA7QkNENTsxMTA3IDExNjcgMTFDMDsKK0JDRDY7QkNENjsxMTA3IDExNjcgMTFDMTtCQ0Q2OzExMDcgMTE2NyAxMUMxOworQkNENztCQ0Q3OzExMDcgMTE2NyAxMUMyO0JDRDc7MTEwNyAxMTY3IDExQzI7CitCQ0Q4O0JDRDg7MTEwNyAxMTY4O0JDRDg7MTEwNyAxMTY4OworQkNEOTtCQ0Q5OzExMDcgMTE2OCAxMUE4O0JDRDk7MTEwNyAxMTY4IDExQTg7CitCQ0RBO0JDREE7MTEwNyAxMTY4IDExQTk7QkNEQTsxMTA3IDExNjggMTFBOTsKK0JDREI7QkNEQjsxMTA3IDExNjggMTFBQTtCQ0RCOzExMDcgMTE2OCAxMUFBOworQkNEQztCQ0RDOzExMDcgMTE2OCAxMUFCO0JDREM7MTEwNyAxMTY4IDExQUI7CitCQ0REO0JDREQ7MTEwNyAxMTY4IDExQUM7QkNERDsxMTA3IDExNjggMTFBQzsKK0JDREU7QkNERTsxMTA3IDExNjggMTFBRDtCQ0RFOzExMDcgMTE2OCAxMUFEOworQkNERjtCQ0RGOzExMDcgMTE2OCAxMUFFO0JDREY7MTEwNyAxMTY4IDExQUU7CitCQ0UwO0JDRTA7MTEwNyAxMTY4IDExQUY7QkNFMDsxMTA3IDExNjggMTFBRjsKK0JDRTE7QkNFMTsxMTA3IDExNjggMTFCMDtCQ0UxOzExMDcgMTE2OCAxMUIwOworQkNFMjtCQ0UyOzExMDcgMTE2OCAxMUIxO0JDRTI7MTEwNyAxMTY4IDExQjE7CitCQ0UzO0JDRTM7MTEwNyAxMTY4IDExQjI7QkNFMzsxMTA3IDExNjggMTFCMjsKK0JDRTQ7QkNFNDsxMTA3IDExNjggMTFCMztCQ0U0OzExMDcgMTE2OCAxMUIzOworQkNFNTtCQ0U1OzExMDcgMTE2OCAxMUI0O0JDRTU7MTEwNyAxMTY4IDExQjQ7CitCQ0U2O0JDRTY7MTEwNyAxMTY4IDExQjU7QkNFNjsxMTA3IDExNjggMTFCNTsKK0JDRTc7QkNFNzsxMTA3IDExNjggMTFCNjtCQ0U3OzExMDcgMTE2OCAxMUI2OworQkNFODtCQ0U4OzExMDcgMTE2OCAxMUI3O0JDRTg7MTEwNyAxMTY4IDExQjc7CitCQ0U5O0JDRTk7MTEwNyAxMTY4IDExQjg7QkNFOTsxMTA3IDExNjggMTFCODsKK0JDRUE7QkNFQTsxMTA3IDExNjggMTFCOTtCQ0VBOzExMDcgMTE2OCAxMUI5OworQkNFQjtCQ0VCOzExMDcgMTE2OCAxMUJBO0JDRUI7MTEwNyAxMTY4IDExQkE7CitCQ0VDO0JDRUM7MTEwNyAxMTY4IDExQkI7QkNFQzsxMTA3IDExNjggMTFCQjsKK0JDRUQ7QkNFRDsxMTA3IDExNjggMTFCQztCQ0VEOzExMDcgMTE2OCAxMUJDOworQkNFRTtCQ0VFOzExMDcgMTE2OCAxMUJEO0JDRUU7MTEwNyAxMTY4IDExQkQ7CitCQ0VGO0JDRUY7MTEwNyAxMTY4IDExQkU7QkNFRjsxMTA3IDExNjggMTFCRTsKK0JDRjA7QkNGMDsxMTA3IDExNjggMTFCRjtCQ0YwOzExMDcgMTE2OCAxMUJGOworQkNGMTtCQ0YxOzExMDcgMTE2OCAxMUMwO0JDRjE7MTEwNyAxMTY4IDExQzA7CitCQ0YyO0JDRjI7MTEwNyAxMTY4IDExQzE7QkNGMjsxMTA3IDExNjggMTFDMTsKK0JDRjM7QkNGMzsxMTA3IDExNjggMTFDMjtCQ0YzOzExMDcgMTE2OCAxMUMyOworQkNGNDtCQ0Y0OzExMDcgMTE2OTtCQ0Y0OzExMDcgMTE2OTsKK0JDRjU7QkNGNTsxMTA3IDExNjkgMTFBODtCQ0Y1OzExMDcgMTE2OSAxMUE4OworQkNGNjtCQ0Y2OzExMDcgMTE2OSAxMUE5O0JDRjY7MTEwNyAxMTY5IDExQTk7CitCQ0Y3O0JDRjc7MTEwNyAxMTY5IDExQUE7QkNGNzsxMTA3IDExNjkgMTFBQTsKK0JDRjg7QkNGODsxMTA3IDExNjkgMTFBQjtCQ0Y4OzExMDcgMTE2OSAxMUFCOworQkNGOTtCQ0Y5OzExMDcgMTE2OSAxMUFDO0JDRjk7MTEwNyAxMTY5IDExQUM7CitCQ0ZBO0JDRkE7MTEwNyAxMTY5IDExQUQ7QkNGQTsxMTA3IDExNjkgMTFBRDsKK0JDRkI7QkNGQjsxMTA3IDExNjkgMTFBRTtCQ0ZCOzExMDcgMTE2OSAxMUFFOworQkNGQztCQ0ZDOzExMDcgMTE2OSAxMUFGO0JDRkM7MTEwNyAxMTY5IDExQUY7CitCQ0ZEO0JDRkQ7MTEwNyAxMTY5IDExQjA7QkNGRDsxMTA3IDExNjkgMTFCMDsKK0JDRkU7QkNGRTsxMTA3IDExNjkgMTFCMTtCQ0ZFOzExMDcgMTE2OSAxMUIxOworQkNGRjtCQ0ZGOzExMDcgMTE2OSAxMUIyO0JDRkY7MTEwNyAxMTY5IDExQjI7CitCRDAwO0JEMDA7MTEwNyAxMTY5IDExQjM7QkQwMDsxMTA3IDExNjkgMTFCMzsKK0JEMDE7QkQwMTsxMTA3IDExNjkgMTFCNDtCRDAxOzExMDcgMTE2OSAxMUI0OworQkQwMjtCRDAyOzExMDcgMTE2OSAxMUI1O0JEMDI7MTEwNyAxMTY5IDExQjU7CitCRDAzO0JEMDM7MTEwNyAxMTY5IDExQjY7QkQwMzsxMTA3IDExNjkgMTFCNjsKK0JEMDQ7QkQwNDsxMTA3IDExNjkgMTFCNztCRDA0OzExMDcgMTE2OSAxMUI3OworQkQwNTtCRDA1OzExMDcgMTE2OSAxMUI4O0JEMDU7MTEwNyAxMTY5IDExQjg7CitCRDA2O0JEMDY7MTEwNyAxMTY5IDExQjk7QkQwNjsxMTA3IDExNjkgMTFCOTsKK0JEMDc7QkQwNzsxMTA3IDExNjkgMTFCQTtCRDA3OzExMDcgMTE2OSAxMUJBOworQkQwODtCRDA4OzExMDcgMTE2OSAxMUJCO0JEMDg7MTEwNyAxMTY5IDExQkI7CitCRDA5O0JEMDk7MTEwNyAxMTY5IDExQkM7QkQwOTsxMTA3IDExNjkgMTFCQzsKK0JEMEE7QkQwQTsxMTA3IDExNjkgMTFCRDtCRDBBOzExMDcgMTE2OSAxMUJEOworQkQwQjtCRDBCOzExMDcgMTE2OSAxMUJFO0JEMEI7MTEwNyAxMTY5IDExQkU7CitCRDBDO0JEMEM7MTEwNyAxMTY5IDExQkY7QkQwQzsxMTA3IDExNjkgMTFCRjsKK0JEMEQ7QkQwRDsxMTA3IDExNjkgMTFDMDtCRDBEOzExMDcgMTE2OSAxMUMwOworQkQwRTtCRDBFOzExMDcgMTE2OSAxMUMxO0JEMEU7MTEwNyAxMTY5IDExQzE7CitCRDBGO0JEMEY7MTEwNyAxMTY5IDExQzI7QkQwRjsxMTA3IDExNjkgMTFDMjsKK0JEMTA7QkQxMDsxMTA3IDExNkE7QkQxMDsxMTA3IDExNkE7CitCRDExO0JEMTE7MTEwNyAxMTZBIDExQTg7QkQxMTsxMTA3IDExNkEgMTFBODsKK0JEMTI7QkQxMjsxMTA3IDExNkEgMTFBOTtCRDEyOzExMDcgMTE2QSAxMUE5OworQkQxMztCRDEzOzExMDcgMTE2QSAxMUFBO0JEMTM7MTEwNyAxMTZBIDExQUE7CitCRDE0O0JEMTQ7MTEwNyAxMTZBIDExQUI7QkQxNDsxMTA3IDExNkEgMTFBQjsKK0JEMTU7QkQxNTsxMTA3IDExNkEgMTFBQztCRDE1OzExMDcgMTE2QSAxMUFDOworQkQxNjtCRDE2OzExMDcgMTE2QSAxMUFEO0JEMTY7MTEwNyAxMTZBIDExQUQ7CitCRDE3O0JEMTc7MTEwNyAxMTZBIDExQUU7QkQxNzsxMTA3IDExNkEgMTFBRTsKK0JEMTg7QkQxODsxMTA3IDExNkEgMTFBRjtCRDE4OzExMDcgMTE2QSAxMUFGOworQkQxOTtCRDE5OzExMDcgMTE2QSAxMUIwO0JEMTk7MTEwNyAxMTZBIDExQjA7CitCRDFBO0JEMUE7MTEwNyAxMTZBIDExQjE7QkQxQTsxMTA3IDExNkEgMTFCMTsKK0JEMUI7QkQxQjsxMTA3IDExNkEgMTFCMjtCRDFCOzExMDcgMTE2QSAxMUIyOworQkQxQztCRDFDOzExMDcgMTE2QSAxMUIzO0JEMUM7MTEwNyAxMTZBIDExQjM7CitCRDFEO0JEMUQ7MTEwNyAxMTZBIDExQjQ7QkQxRDsxMTA3IDExNkEgMTFCNDsKK0JEMUU7QkQxRTsxMTA3IDExNkEgMTFCNTtCRDFFOzExMDcgMTE2QSAxMUI1OworQkQxRjtCRDFGOzExMDcgMTE2QSAxMUI2O0JEMUY7MTEwNyAxMTZBIDExQjY7CitCRDIwO0JEMjA7MTEwNyAxMTZBIDExQjc7QkQyMDsxMTA3IDExNkEgMTFCNzsKK0JEMjE7QkQyMTsxMTA3IDExNkEgMTFCODtCRDIxOzExMDcgMTE2QSAxMUI4OworQkQyMjtCRDIyOzExMDcgMTE2QSAxMUI5O0JEMjI7MTEwNyAxMTZBIDExQjk7CitCRDIzO0JEMjM7MTEwNyAxMTZBIDExQkE7QkQyMzsxMTA3IDExNkEgMTFCQTsKK0JEMjQ7QkQyNDsxMTA3IDExNkEgMTFCQjtCRDI0OzExMDcgMTE2QSAxMUJCOworQkQyNTtCRDI1OzExMDcgMTE2QSAxMUJDO0JEMjU7MTEwNyAxMTZBIDExQkM7CitCRDI2O0JEMjY7MTEwNyAxMTZBIDExQkQ7QkQyNjsxMTA3IDExNkEgMTFCRDsKK0JEMjc7QkQyNzsxMTA3IDExNkEgMTFCRTtCRDI3OzExMDcgMTE2QSAxMUJFOworQkQyODtCRDI4OzExMDcgMTE2QSAxMUJGO0JEMjg7MTEwNyAxMTZBIDExQkY7CitCRDI5O0JEMjk7MTEwNyAxMTZBIDExQzA7QkQyOTsxMTA3IDExNkEgMTFDMDsKK0JEMkE7QkQyQTsxMTA3IDExNkEgMTFDMTtCRDJBOzExMDcgMTE2QSAxMUMxOworQkQyQjtCRDJCOzExMDcgMTE2QSAxMUMyO0JEMkI7MTEwNyAxMTZBIDExQzI7CitCRDJDO0JEMkM7MTEwNyAxMTZCO0JEMkM7MTEwNyAxMTZCOworQkQyRDtCRDJEOzExMDcgMTE2QiAxMUE4O0JEMkQ7MTEwNyAxMTZCIDExQTg7CitCRDJFO0JEMkU7MTEwNyAxMTZCIDExQTk7QkQyRTsxMTA3IDExNkIgMTFBOTsKK0JEMkY7QkQyRjsxMTA3IDExNkIgMTFBQTtCRDJGOzExMDcgMTE2QiAxMUFBOworQkQzMDtCRDMwOzExMDcgMTE2QiAxMUFCO0JEMzA7MTEwNyAxMTZCIDExQUI7CitCRDMxO0JEMzE7MTEwNyAxMTZCIDExQUM7QkQzMTsxMTA3IDExNkIgMTFBQzsKK0JEMzI7QkQzMjsxMTA3IDExNkIgMTFBRDtCRDMyOzExMDcgMTE2QiAxMUFEOworQkQzMztCRDMzOzExMDcgMTE2QiAxMUFFO0JEMzM7MTEwNyAxMTZCIDExQUU7CitCRDM0O0JEMzQ7MTEwNyAxMTZCIDExQUY7QkQzNDsxMTA3IDExNkIgMTFBRjsKK0JEMzU7QkQzNTsxMTA3IDExNkIgMTFCMDtCRDM1OzExMDcgMTE2QiAxMUIwOworQkQzNjtCRDM2OzExMDcgMTE2QiAxMUIxO0JEMzY7MTEwNyAxMTZCIDExQjE7CitCRDM3O0JEMzc7MTEwNyAxMTZCIDExQjI7QkQzNzsxMTA3IDExNkIgMTFCMjsKK0JEMzg7QkQzODsxMTA3IDExNkIgMTFCMztCRDM4OzExMDcgMTE2QiAxMUIzOworQkQzOTtCRDM5OzExMDcgMTE2QiAxMUI0O0JEMzk7MTEwNyAxMTZCIDExQjQ7CitCRDNBO0JEM0E7MTEwNyAxMTZCIDExQjU7QkQzQTsxMTA3IDExNkIgMTFCNTsKK0JEM0I7QkQzQjsxMTA3IDExNkIgMTFCNjtCRDNCOzExMDcgMTE2QiAxMUI2OworQkQzQztCRDNDOzExMDcgMTE2QiAxMUI3O0JEM0M7MTEwNyAxMTZCIDExQjc7CitCRDNEO0JEM0Q7MTEwNyAxMTZCIDExQjg7QkQzRDsxMTA3IDExNkIgMTFCODsKK0JEM0U7QkQzRTsxMTA3IDExNkIgMTFCOTtCRDNFOzExMDcgMTE2QiAxMUI5OworQkQzRjtCRDNGOzExMDcgMTE2QiAxMUJBO0JEM0Y7MTEwNyAxMTZCIDExQkE7CitCRDQwO0JENDA7MTEwNyAxMTZCIDExQkI7QkQ0MDsxMTA3IDExNkIgMTFCQjsKK0JENDE7QkQ0MTsxMTA3IDExNkIgMTFCQztCRDQxOzExMDcgMTE2QiAxMUJDOworQkQ0MjtCRDQyOzExMDcgMTE2QiAxMUJEO0JENDI7MTEwNyAxMTZCIDExQkQ7CitCRDQzO0JENDM7MTEwNyAxMTZCIDExQkU7QkQ0MzsxMTA3IDExNkIgMTFCRTsKK0JENDQ7QkQ0NDsxMTA3IDExNkIgMTFCRjtCRDQ0OzExMDcgMTE2QiAxMUJGOworQkQ0NTtCRDQ1OzExMDcgMTE2QiAxMUMwO0JENDU7MTEwNyAxMTZCIDExQzA7CitCRDQ2O0JENDY7MTEwNyAxMTZCIDExQzE7QkQ0NjsxMTA3IDExNkIgMTFDMTsKK0JENDc7QkQ0NzsxMTA3IDExNkIgMTFDMjtCRDQ3OzExMDcgMTE2QiAxMUMyOworQkQ0ODtCRDQ4OzExMDcgMTE2QztCRDQ4OzExMDcgMTE2QzsKK0JENDk7QkQ0OTsxMTA3IDExNkMgMTFBODtCRDQ5OzExMDcgMTE2QyAxMUE4OworQkQ0QTtCRDRBOzExMDcgMTE2QyAxMUE5O0JENEE7MTEwNyAxMTZDIDExQTk7CitCRDRCO0JENEI7MTEwNyAxMTZDIDExQUE7QkQ0QjsxMTA3IDExNkMgMTFBQTsKK0JENEM7QkQ0QzsxMTA3IDExNkMgMTFBQjtCRDRDOzExMDcgMTE2QyAxMUFCOworQkQ0RDtCRDREOzExMDcgMTE2QyAxMUFDO0JENEQ7MTEwNyAxMTZDIDExQUM7CitCRDRFO0JENEU7MTEwNyAxMTZDIDExQUQ7QkQ0RTsxMTA3IDExNkMgMTFBRDsKK0JENEY7QkQ0RjsxMTA3IDExNkMgMTFBRTtCRDRGOzExMDcgMTE2QyAxMUFFOworQkQ1MDtCRDUwOzExMDcgMTE2QyAxMUFGO0JENTA7MTEwNyAxMTZDIDExQUY7CitCRDUxO0JENTE7MTEwNyAxMTZDIDExQjA7QkQ1MTsxMTA3IDExNkMgMTFCMDsKK0JENTI7QkQ1MjsxMTA3IDExNkMgMTFCMTtCRDUyOzExMDcgMTE2QyAxMUIxOworQkQ1MztCRDUzOzExMDcgMTE2QyAxMUIyO0JENTM7MTEwNyAxMTZDIDExQjI7CitCRDU0O0JENTQ7MTEwNyAxMTZDIDExQjM7QkQ1NDsxMTA3IDExNkMgMTFCMzsKK0JENTU7QkQ1NTsxMTA3IDExNkMgMTFCNDtCRDU1OzExMDcgMTE2QyAxMUI0OworQkQ1NjtCRDU2OzExMDcgMTE2QyAxMUI1O0JENTY7MTEwNyAxMTZDIDExQjU7CitCRDU3O0JENTc7MTEwNyAxMTZDIDExQjY7QkQ1NzsxMTA3IDExNkMgMTFCNjsKK0JENTg7QkQ1ODsxMTA3IDExNkMgMTFCNztCRDU4OzExMDcgMTE2QyAxMUI3OworQkQ1OTtCRDU5OzExMDcgMTE2QyAxMUI4O0JENTk7MTEwNyAxMTZDIDExQjg7CitCRDVBO0JENUE7MTEwNyAxMTZDIDExQjk7QkQ1QTsxMTA3IDExNkMgMTFCOTsKK0JENUI7QkQ1QjsxMTA3IDExNkMgMTFCQTtCRDVCOzExMDcgMTE2QyAxMUJBOworQkQ1QztCRDVDOzExMDcgMTE2QyAxMUJCO0JENUM7MTEwNyAxMTZDIDExQkI7CitCRDVEO0JENUQ7MTEwNyAxMTZDIDExQkM7QkQ1RDsxMTA3IDExNkMgMTFCQzsKK0JENUU7QkQ1RTsxMTA3IDExNkMgMTFCRDtCRDVFOzExMDcgMTE2QyAxMUJEOworQkQ1RjtCRDVGOzExMDcgMTE2QyAxMUJFO0JENUY7MTEwNyAxMTZDIDExQkU7CitCRDYwO0JENjA7MTEwNyAxMTZDIDExQkY7QkQ2MDsxMTA3IDExNkMgMTFCRjsKK0JENjE7QkQ2MTsxMTA3IDExNkMgMTFDMDtCRDYxOzExMDcgMTE2QyAxMUMwOworQkQ2MjtCRDYyOzExMDcgMTE2QyAxMUMxO0JENjI7MTEwNyAxMTZDIDExQzE7CitCRDYzO0JENjM7MTEwNyAxMTZDIDExQzI7QkQ2MzsxMTA3IDExNkMgMTFDMjsKK0JENjQ7QkQ2NDsxMTA3IDExNkQ7QkQ2NDsxMTA3IDExNkQ7CitCRDY1O0JENjU7MTEwNyAxMTZEIDExQTg7QkQ2NTsxMTA3IDExNkQgMTFBODsKK0JENjY7QkQ2NjsxMTA3IDExNkQgMTFBOTtCRDY2OzExMDcgMTE2RCAxMUE5OworQkQ2NztCRDY3OzExMDcgMTE2RCAxMUFBO0JENjc7MTEwNyAxMTZEIDExQUE7CitCRDY4O0JENjg7MTEwNyAxMTZEIDExQUI7QkQ2ODsxMTA3IDExNkQgMTFBQjsKK0JENjk7QkQ2OTsxMTA3IDExNkQgMTFBQztCRDY5OzExMDcgMTE2RCAxMUFDOworQkQ2QTtCRDZBOzExMDcgMTE2RCAxMUFEO0JENkE7MTEwNyAxMTZEIDExQUQ7CitCRDZCO0JENkI7MTEwNyAxMTZEIDExQUU7QkQ2QjsxMTA3IDExNkQgMTFBRTsKK0JENkM7QkQ2QzsxMTA3IDExNkQgMTFBRjtCRDZDOzExMDcgMTE2RCAxMUFGOworQkQ2RDtCRDZEOzExMDcgMTE2RCAxMUIwO0JENkQ7MTEwNyAxMTZEIDExQjA7CitCRDZFO0JENkU7MTEwNyAxMTZEIDExQjE7QkQ2RTsxMTA3IDExNkQgMTFCMTsKK0JENkY7QkQ2RjsxMTA3IDExNkQgMTFCMjtCRDZGOzExMDcgMTE2RCAxMUIyOworQkQ3MDtCRDcwOzExMDcgMTE2RCAxMUIzO0JENzA7MTEwNyAxMTZEIDExQjM7CitCRDcxO0JENzE7MTEwNyAxMTZEIDExQjQ7QkQ3MTsxMTA3IDExNkQgMTFCNDsKK0JENzI7QkQ3MjsxMTA3IDExNkQgMTFCNTtCRDcyOzExMDcgMTE2RCAxMUI1OworQkQ3MztCRDczOzExMDcgMTE2RCAxMUI2O0JENzM7MTEwNyAxMTZEIDExQjY7CitCRDc0O0JENzQ7MTEwNyAxMTZEIDExQjc7QkQ3NDsxMTA3IDExNkQgMTFCNzsKK0JENzU7QkQ3NTsxMTA3IDExNkQgMTFCODtCRDc1OzExMDcgMTE2RCAxMUI4OworQkQ3NjtCRDc2OzExMDcgMTE2RCAxMUI5O0JENzY7MTEwNyAxMTZEIDExQjk7CitCRDc3O0JENzc7MTEwNyAxMTZEIDExQkE7QkQ3NzsxMTA3IDExNkQgMTFCQTsKK0JENzg7QkQ3ODsxMTA3IDExNkQgMTFCQjtCRDc4OzExMDcgMTE2RCAxMUJCOworQkQ3OTtCRDc5OzExMDcgMTE2RCAxMUJDO0JENzk7MTEwNyAxMTZEIDExQkM7CitCRDdBO0JEN0E7MTEwNyAxMTZEIDExQkQ7QkQ3QTsxMTA3IDExNkQgMTFCRDsKK0JEN0I7QkQ3QjsxMTA3IDExNkQgMTFCRTtCRDdCOzExMDcgMTE2RCAxMUJFOworQkQ3QztCRDdDOzExMDcgMTE2RCAxMUJGO0JEN0M7MTEwNyAxMTZEIDExQkY7CitCRDdEO0JEN0Q7MTEwNyAxMTZEIDExQzA7QkQ3RDsxMTA3IDExNkQgMTFDMDsKK0JEN0U7QkQ3RTsxMTA3IDExNkQgMTFDMTtCRDdFOzExMDcgMTE2RCAxMUMxOworQkQ3RjtCRDdGOzExMDcgMTE2RCAxMUMyO0JEN0Y7MTEwNyAxMTZEIDExQzI7CitCRDgwO0JEODA7MTEwNyAxMTZFO0JEODA7MTEwNyAxMTZFOworQkQ4MTtCRDgxOzExMDcgMTE2RSAxMUE4O0JEODE7MTEwNyAxMTZFIDExQTg7CitCRDgyO0JEODI7MTEwNyAxMTZFIDExQTk7QkQ4MjsxMTA3IDExNkUgMTFBOTsKK0JEODM7QkQ4MzsxMTA3IDExNkUgMTFBQTtCRDgzOzExMDcgMTE2RSAxMUFBOworQkQ4NDtCRDg0OzExMDcgMTE2RSAxMUFCO0JEODQ7MTEwNyAxMTZFIDExQUI7CitCRDg1O0JEODU7MTEwNyAxMTZFIDExQUM7QkQ4NTsxMTA3IDExNkUgMTFBQzsKK0JEODY7QkQ4NjsxMTA3IDExNkUgMTFBRDtCRDg2OzExMDcgMTE2RSAxMUFEOworQkQ4NztCRDg3OzExMDcgMTE2RSAxMUFFO0JEODc7MTEwNyAxMTZFIDExQUU7CitCRDg4O0JEODg7MTEwNyAxMTZFIDExQUY7QkQ4ODsxMTA3IDExNkUgMTFBRjsKK0JEODk7QkQ4OTsxMTA3IDExNkUgMTFCMDtCRDg5OzExMDcgMTE2RSAxMUIwOworQkQ4QTtCRDhBOzExMDcgMTE2RSAxMUIxO0JEOEE7MTEwNyAxMTZFIDExQjE7CitCRDhCO0JEOEI7MTEwNyAxMTZFIDExQjI7QkQ4QjsxMTA3IDExNkUgMTFCMjsKK0JEOEM7QkQ4QzsxMTA3IDExNkUgMTFCMztCRDhDOzExMDcgMTE2RSAxMUIzOworQkQ4RDtCRDhEOzExMDcgMTE2RSAxMUI0O0JEOEQ7MTEwNyAxMTZFIDExQjQ7CitCRDhFO0JEOEU7MTEwNyAxMTZFIDExQjU7QkQ4RTsxMTA3IDExNkUgMTFCNTsKK0JEOEY7QkQ4RjsxMTA3IDExNkUgMTFCNjtCRDhGOzExMDcgMTE2RSAxMUI2OworQkQ5MDtCRDkwOzExMDcgMTE2RSAxMUI3O0JEOTA7MTEwNyAxMTZFIDExQjc7CitCRDkxO0JEOTE7MTEwNyAxMTZFIDExQjg7QkQ5MTsxMTA3IDExNkUgMTFCODsKK0JEOTI7QkQ5MjsxMTA3IDExNkUgMTFCOTtCRDkyOzExMDcgMTE2RSAxMUI5OworQkQ5MztCRDkzOzExMDcgMTE2RSAxMUJBO0JEOTM7MTEwNyAxMTZFIDExQkE7CitCRDk0O0JEOTQ7MTEwNyAxMTZFIDExQkI7QkQ5NDsxMTA3IDExNkUgMTFCQjsKK0JEOTU7QkQ5NTsxMTA3IDExNkUgMTFCQztCRDk1OzExMDcgMTE2RSAxMUJDOworQkQ5NjtCRDk2OzExMDcgMTE2RSAxMUJEO0JEOTY7MTEwNyAxMTZFIDExQkQ7CitCRDk3O0JEOTc7MTEwNyAxMTZFIDExQkU7QkQ5NzsxMTA3IDExNkUgMTFCRTsKK0JEOTg7QkQ5ODsxMTA3IDExNkUgMTFCRjtCRDk4OzExMDcgMTE2RSAxMUJGOworQkQ5OTtCRDk5OzExMDcgMTE2RSAxMUMwO0JEOTk7MTEwNyAxMTZFIDExQzA7CitCRDlBO0JEOUE7MTEwNyAxMTZFIDExQzE7QkQ5QTsxMTA3IDExNkUgMTFDMTsKK0JEOUI7QkQ5QjsxMTA3IDExNkUgMTFDMjtCRDlCOzExMDcgMTE2RSAxMUMyOworQkQ5QztCRDlDOzExMDcgMTE2RjtCRDlDOzExMDcgMTE2RjsKK0JEOUQ7QkQ5RDsxMTA3IDExNkYgMTFBODtCRDlEOzExMDcgMTE2RiAxMUE4OworQkQ5RTtCRDlFOzExMDcgMTE2RiAxMUE5O0JEOUU7MTEwNyAxMTZGIDExQTk7CitCRDlGO0JEOUY7MTEwNyAxMTZGIDExQUE7QkQ5RjsxMTA3IDExNkYgMTFBQTsKK0JEQTA7QkRBMDsxMTA3IDExNkYgMTFBQjtCREEwOzExMDcgMTE2RiAxMUFCOworQkRBMTtCREExOzExMDcgMTE2RiAxMUFDO0JEQTE7MTEwNyAxMTZGIDExQUM7CitCREEyO0JEQTI7MTEwNyAxMTZGIDExQUQ7QkRBMjsxMTA3IDExNkYgMTFBRDsKK0JEQTM7QkRBMzsxMTA3IDExNkYgMTFBRTtCREEzOzExMDcgMTE2RiAxMUFFOworQkRBNDtCREE0OzExMDcgMTE2RiAxMUFGO0JEQTQ7MTEwNyAxMTZGIDExQUY7CitCREE1O0JEQTU7MTEwNyAxMTZGIDExQjA7QkRBNTsxMTA3IDExNkYgMTFCMDsKK0JEQTY7QkRBNjsxMTA3IDExNkYgMTFCMTtCREE2OzExMDcgMTE2RiAxMUIxOworQkRBNztCREE3OzExMDcgMTE2RiAxMUIyO0JEQTc7MTEwNyAxMTZGIDExQjI7CitCREE4O0JEQTg7MTEwNyAxMTZGIDExQjM7QkRBODsxMTA3IDExNkYgMTFCMzsKK0JEQTk7QkRBOTsxMTA3IDExNkYgMTFCNDtCREE5OzExMDcgMTE2RiAxMUI0OworQkRBQTtCREFBOzExMDcgMTE2RiAxMUI1O0JEQUE7MTEwNyAxMTZGIDExQjU7CitCREFCO0JEQUI7MTEwNyAxMTZGIDExQjY7QkRBQjsxMTA3IDExNkYgMTFCNjsKK0JEQUM7QkRBQzsxMTA3IDExNkYgMTFCNztCREFDOzExMDcgMTE2RiAxMUI3OworQkRBRDtCREFEOzExMDcgMTE2RiAxMUI4O0JEQUQ7MTEwNyAxMTZGIDExQjg7CitCREFFO0JEQUU7MTEwNyAxMTZGIDExQjk7QkRBRTsxMTA3IDExNkYgMTFCOTsKK0JEQUY7QkRBRjsxMTA3IDExNkYgMTFCQTtCREFGOzExMDcgMTE2RiAxMUJBOworQkRCMDtCREIwOzExMDcgMTE2RiAxMUJCO0JEQjA7MTEwNyAxMTZGIDExQkI7CitCREIxO0JEQjE7MTEwNyAxMTZGIDExQkM7QkRCMTsxMTA3IDExNkYgMTFCQzsKK0JEQjI7QkRCMjsxMTA3IDExNkYgMTFCRDtCREIyOzExMDcgMTE2RiAxMUJEOworQkRCMztCREIzOzExMDcgMTE2RiAxMUJFO0JEQjM7MTEwNyAxMTZGIDExQkU7CitCREI0O0JEQjQ7MTEwNyAxMTZGIDExQkY7QkRCNDsxMTA3IDExNkYgMTFCRjsKK0JEQjU7QkRCNTsxMTA3IDExNkYgMTFDMDtCREI1OzExMDcgMTE2RiAxMUMwOworQkRCNjtCREI2OzExMDcgMTE2RiAxMUMxO0JEQjY7MTEwNyAxMTZGIDExQzE7CitCREI3O0JEQjc7MTEwNyAxMTZGIDExQzI7QkRCNzsxMTA3IDExNkYgMTFDMjsKK0JEQjg7QkRCODsxMTA3IDExNzA7QkRCODsxMTA3IDExNzA7CitCREI5O0JEQjk7MTEwNyAxMTcwIDExQTg7QkRCOTsxMTA3IDExNzAgMTFBODsKK0JEQkE7QkRCQTsxMTA3IDExNzAgMTFBOTtCREJBOzExMDcgMTE3MCAxMUE5OworQkRCQjtCREJCOzExMDcgMTE3MCAxMUFBO0JEQkI7MTEwNyAxMTcwIDExQUE7CitCREJDO0JEQkM7MTEwNyAxMTcwIDExQUI7QkRCQzsxMTA3IDExNzAgMTFBQjsKK0JEQkQ7QkRCRDsxMTA3IDExNzAgMTFBQztCREJEOzExMDcgMTE3MCAxMUFDOworQkRCRTtCREJFOzExMDcgMTE3MCAxMUFEO0JEQkU7MTEwNyAxMTcwIDExQUQ7CitCREJGO0JEQkY7MTEwNyAxMTcwIDExQUU7QkRCRjsxMTA3IDExNzAgMTFBRTsKK0JEQzA7QkRDMDsxMTA3IDExNzAgMTFBRjtCREMwOzExMDcgMTE3MCAxMUFGOworQkRDMTtCREMxOzExMDcgMTE3MCAxMUIwO0JEQzE7MTEwNyAxMTcwIDExQjA7CitCREMyO0JEQzI7MTEwNyAxMTcwIDExQjE7QkRDMjsxMTA3IDExNzAgMTFCMTsKK0JEQzM7QkRDMzsxMTA3IDExNzAgMTFCMjtCREMzOzExMDcgMTE3MCAxMUIyOworQkRDNDtCREM0OzExMDcgMTE3MCAxMUIzO0JEQzQ7MTEwNyAxMTcwIDExQjM7CitCREM1O0JEQzU7MTEwNyAxMTcwIDExQjQ7QkRDNTsxMTA3IDExNzAgMTFCNDsKK0JEQzY7QkRDNjsxMTA3IDExNzAgMTFCNTtCREM2OzExMDcgMTE3MCAxMUI1OworQkRDNztCREM3OzExMDcgMTE3MCAxMUI2O0JEQzc7MTEwNyAxMTcwIDExQjY7CitCREM4O0JEQzg7MTEwNyAxMTcwIDExQjc7QkRDODsxMTA3IDExNzAgMTFCNzsKK0JEQzk7QkRDOTsxMTA3IDExNzAgMTFCODtCREM5OzExMDcgMTE3MCAxMUI4OworQkRDQTtCRENBOzExMDcgMTE3MCAxMUI5O0JEQ0E7MTEwNyAxMTcwIDExQjk7CitCRENCO0JEQ0I7MTEwNyAxMTcwIDExQkE7QkRDQjsxMTA3IDExNzAgMTFCQTsKK0JEQ0M7QkRDQzsxMTA3IDExNzAgMTFCQjtCRENDOzExMDcgMTE3MCAxMUJCOworQkRDRDtCRENEOzExMDcgMTE3MCAxMUJDO0JEQ0Q7MTEwNyAxMTcwIDExQkM7CitCRENFO0JEQ0U7MTEwNyAxMTcwIDExQkQ7QkRDRTsxMTA3IDExNzAgMTFCRDsKK0JEQ0Y7QkRDRjsxMTA3IDExNzAgMTFCRTtCRENGOzExMDcgMTE3MCAxMUJFOworQkREMDtCREQwOzExMDcgMTE3MCAxMUJGO0JERDA7MTEwNyAxMTcwIDExQkY7CitCREQxO0JERDE7MTEwNyAxMTcwIDExQzA7QkREMTsxMTA3IDExNzAgMTFDMDsKK0JERDI7QkREMjsxMTA3IDExNzAgMTFDMTtCREQyOzExMDcgMTE3MCAxMUMxOworQkREMztCREQzOzExMDcgMTE3MCAxMUMyO0JERDM7MTEwNyAxMTcwIDExQzI7CitCREQ0O0JERDQ7MTEwNyAxMTcxO0JERDQ7MTEwNyAxMTcxOworQkRENTtCREQ1OzExMDcgMTE3MSAxMUE4O0JERDU7MTEwNyAxMTcxIDExQTg7CitCREQ2O0JERDY7MTEwNyAxMTcxIDExQTk7QkRENjsxMTA3IDExNzEgMTFBOTsKK0JERDc7QkRENzsxMTA3IDExNzEgMTFBQTtCREQ3OzExMDcgMTE3MSAxMUFBOworQkREODtCREQ4OzExMDcgMTE3MSAxMUFCO0JERDg7MTEwNyAxMTcxIDExQUI7CitCREQ5O0JERDk7MTEwNyAxMTcxIDExQUM7QkREOTsxMTA3IDExNzEgMTFBQzsKK0JEREE7QkREQTsxMTA3IDExNzEgMTFBRDtCRERBOzExMDcgMTE3MSAxMUFEOworQkREQjtCRERCOzExMDcgMTE3MSAxMUFFO0JEREI7MTEwNyAxMTcxIDExQUU7CitCRERDO0JEREM7MTEwNyAxMTcxIDExQUY7QkREQzsxMTA3IDExNzEgMTFBRjsKK0JEREQ7QkRERDsxMTA3IDExNzEgMTFCMDtCREREOzExMDcgMTE3MSAxMUIwOworQkRERTtCRERFOzExMDcgMTE3MSAxMUIxO0JEREU7MTEwNyAxMTcxIDExQjE7CitCRERGO0JEREY7MTEwNyAxMTcxIDExQjI7QkRERjsxMTA3IDExNzEgMTFCMjsKK0JERTA7QkRFMDsxMTA3IDExNzEgMTFCMztCREUwOzExMDcgMTE3MSAxMUIzOworQkRFMTtCREUxOzExMDcgMTE3MSAxMUI0O0JERTE7MTEwNyAxMTcxIDExQjQ7CitCREUyO0JERTI7MTEwNyAxMTcxIDExQjU7QkRFMjsxMTA3IDExNzEgMTFCNTsKK0JERTM7QkRFMzsxMTA3IDExNzEgMTFCNjtCREUzOzExMDcgMTE3MSAxMUI2OworQkRFNDtCREU0OzExMDcgMTE3MSAxMUI3O0JERTQ7MTEwNyAxMTcxIDExQjc7CitCREU1O0JERTU7MTEwNyAxMTcxIDExQjg7QkRFNTsxMTA3IDExNzEgMTFCODsKK0JERTY7QkRFNjsxMTA3IDExNzEgMTFCOTtCREU2OzExMDcgMTE3MSAxMUI5OworQkRFNztCREU3OzExMDcgMTE3MSAxMUJBO0JERTc7MTEwNyAxMTcxIDExQkE7CitCREU4O0JERTg7MTEwNyAxMTcxIDExQkI7QkRFODsxMTA3IDExNzEgMTFCQjsKK0JERTk7QkRFOTsxMTA3IDExNzEgMTFCQztCREU5OzExMDcgMTE3MSAxMUJDOworQkRFQTtCREVBOzExMDcgMTE3MSAxMUJEO0JERUE7MTEwNyAxMTcxIDExQkQ7CitCREVCO0JERUI7MTEwNyAxMTcxIDExQkU7QkRFQjsxMTA3IDExNzEgMTFCRTsKK0JERUM7QkRFQzsxMTA3IDExNzEgMTFCRjtCREVDOzExMDcgMTE3MSAxMUJGOworQkRFRDtCREVEOzExMDcgMTE3MSAxMUMwO0JERUQ7MTEwNyAxMTcxIDExQzA7CitCREVFO0JERUU7MTEwNyAxMTcxIDExQzE7QkRFRTsxMTA3IDExNzEgMTFDMTsKK0JERUY7QkRFRjsxMTA3IDExNzEgMTFDMjtCREVGOzExMDcgMTE3MSAxMUMyOworQkRGMDtCREYwOzExMDcgMTE3MjtCREYwOzExMDcgMTE3MjsKK0JERjE7QkRGMTsxMTA3IDExNzIgMTFBODtCREYxOzExMDcgMTE3MiAxMUE4OworQkRGMjtCREYyOzExMDcgMTE3MiAxMUE5O0JERjI7MTEwNyAxMTcyIDExQTk7CitCREYzO0JERjM7MTEwNyAxMTcyIDExQUE7QkRGMzsxMTA3IDExNzIgMTFBQTsKK0JERjQ7QkRGNDsxMTA3IDExNzIgMTFBQjtCREY0OzExMDcgMTE3MiAxMUFCOworQkRGNTtCREY1OzExMDcgMTE3MiAxMUFDO0JERjU7MTEwNyAxMTcyIDExQUM7CitCREY2O0JERjY7MTEwNyAxMTcyIDExQUQ7QkRGNjsxMTA3IDExNzIgMTFBRDsKK0JERjc7QkRGNzsxMTA3IDExNzIgMTFBRTtCREY3OzExMDcgMTE3MiAxMUFFOworQkRGODtCREY4OzExMDcgMTE3MiAxMUFGO0JERjg7MTEwNyAxMTcyIDExQUY7CitCREY5O0JERjk7MTEwNyAxMTcyIDExQjA7QkRGOTsxMTA3IDExNzIgMTFCMDsKK0JERkE7QkRGQTsxMTA3IDExNzIgMTFCMTtCREZBOzExMDcgMTE3MiAxMUIxOworQkRGQjtCREZCOzExMDcgMTE3MiAxMUIyO0JERkI7MTEwNyAxMTcyIDExQjI7CitCREZDO0JERkM7MTEwNyAxMTcyIDExQjM7QkRGQzsxMTA3IDExNzIgMTFCMzsKK0JERkQ7QkRGRDsxMTA3IDExNzIgMTFCNDtCREZEOzExMDcgMTE3MiAxMUI0OworQkRGRTtCREZFOzExMDcgMTE3MiAxMUI1O0JERkU7MTEwNyAxMTcyIDExQjU7CitCREZGO0JERkY7MTEwNyAxMTcyIDExQjY7QkRGRjsxMTA3IDExNzIgMTFCNjsKK0JFMDA7QkUwMDsxMTA3IDExNzIgMTFCNztCRTAwOzExMDcgMTE3MiAxMUI3OworQkUwMTtCRTAxOzExMDcgMTE3MiAxMUI4O0JFMDE7MTEwNyAxMTcyIDExQjg7CitCRTAyO0JFMDI7MTEwNyAxMTcyIDExQjk7QkUwMjsxMTA3IDExNzIgMTFCOTsKK0JFMDM7QkUwMzsxMTA3IDExNzIgMTFCQTtCRTAzOzExMDcgMTE3MiAxMUJBOworQkUwNDtCRTA0OzExMDcgMTE3MiAxMUJCO0JFMDQ7MTEwNyAxMTcyIDExQkI7CitCRTA1O0JFMDU7MTEwNyAxMTcyIDExQkM7QkUwNTsxMTA3IDExNzIgMTFCQzsKK0JFMDY7QkUwNjsxMTA3IDExNzIgMTFCRDtCRTA2OzExMDcgMTE3MiAxMUJEOworQkUwNztCRTA3OzExMDcgMTE3MiAxMUJFO0JFMDc7MTEwNyAxMTcyIDExQkU7CitCRTA4O0JFMDg7MTEwNyAxMTcyIDExQkY7QkUwODsxMTA3IDExNzIgMTFCRjsKK0JFMDk7QkUwOTsxMTA3IDExNzIgMTFDMDtCRTA5OzExMDcgMTE3MiAxMUMwOworQkUwQTtCRTBBOzExMDcgMTE3MiAxMUMxO0JFMEE7MTEwNyAxMTcyIDExQzE7CitCRTBCO0JFMEI7MTEwNyAxMTcyIDExQzI7QkUwQjsxMTA3IDExNzIgMTFDMjsKK0JFMEM7QkUwQzsxMTA3IDExNzM7QkUwQzsxMTA3IDExNzM7CitCRTBEO0JFMEQ7MTEwNyAxMTczIDExQTg7QkUwRDsxMTA3IDExNzMgMTFBODsKK0JFMEU7QkUwRTsxMTA3IDExNzMgMTFBOTtCRTBFOzExMDcgMTE3MyAxMUE5OworQkUwRjtCRTBGOzExMDcgMTE3MyAxMUFBO0JFMEY7MTEwNyAxMTczIDExQUE7CitCRTEwO0JFMTA7MTEwNyAxMTczIDExQUI7QkUxMDsxMTA3IDExNzMgMTFBQjsKK0JFMTE7QkUxMTsxMTA3IDExNzMgMTFBQztCRTExOzExMDcgMTE3MyAxMUFDOworQkUxMjtCRTEyOzExMDcgMTE3MyAxMUFEO0JFMTI7MTEwNyAxMTczIDExQUQ7CitCRTEzO0JFMTM7MTEwNyAxMTczIDExQUU7QkUxMzsxMTA3IDExNzMgMTFBRTsKK0JFMTQ7QkUxNDsxMTA3IDExNzMgMTFBRjtCRTE0OzExMDcgMTE3MyAxMUFGOworQkUxNTtCRTE1OzExMDcgMTE3MyAxMUIwO0JFMTU7MTEwNyAxMTczIDExQjA7CitCRTE2O0JFMTY7MTEwNyAxMTczIDExQjE7QkUxNjsxMTA3IDExNzMgMTFCMTsKK0JFMTc7QkUxNzsxMTA3IDExNzMgMTFCMjtCRTE3OzExMDcgMTE3MyAxMUIyOworQkUxODtCRTE4OzExMDcgMTE3MyAxMUIzO0JFMTg7MTEwNyAxMTczIDExQjM7CitCRTE5O0JFMTk7MTEwNyAxMTczIDExQjQ7QkUxOTsxMTA3IDExNzMgMTFCNDsKK0JFMUE7QkUxQTsxMTA3IDExNzMgMTFCNTtCRTFBOzExMDcgMTE3MyAxMUI1OworQkUxQjtCRTFCOzExMDcgMTE3MyAxMUI2O0JFMUI7MTEwNyAxMTczIDExQjY7CitCRTFDO0JFMUM7MTEwNyAxMTczIDExQjc7QkUxQzsxMTA3IDExNzMgMTFCNzsKK0JFMUQ7QkUxRDsxMTA3IDExNzMgMTFCODtCRTFEOzExMDcgMTE3MyAxMUI4OworQkUxRTtCRTFFOzExMDcgMTE3MyAxMUI5O0JFMUU7MTEwNyAxMTczIDExQjk7CitCRTFGO0JFMUY7MTEwNyAxMTczIDExQkE7QkUxRjsxMTA3IDExNzMgMTFCQTsKK0JFMjA7QkUyMDsxMTA3IDExNzMgMTFCQjtCRTIwOzExMDcgMTE3MyAxMUJCOworQkUyMTtCRTIxOzExMDcgMTE3MyAxMUJDO0JFMjE7MTEwNyAxMTczIDExQkM7CitCRTIyO0JFMjI7MTEwNyAxMTczIDExQkQ7QkUyMjsxMTA3IDExNzMgMTFCRDsKK0JFMjM7QkUyMzsxMTA3IDExNzMgMTFCRTtCRTIzOzExMDcgMTE3MyAxMUJFOworQkUyNDtCRTI0OzExMDcgMTE3MyAxMUJGO0JFMjQ7MTEwNyAxMTczIDExQkY7CitCRTI1O0JFMjU7MTEwNyAxMTczIDExQzA7QkUyNTsxMTA3IDExNzMgMTFDMDsKK0JFMjY7QkUyNjsxMTA3IDExNzMgMTFDMTtCRTI2OzExMDcgMTE3MyAxMUMxOworQkUyNztCRTI3OzExMDcgMTE3MyAxMUMyO0JFMjc7MTEwNyAxMTczIDExQzI7CitCRTI4O0JFMjg7MTEwNyAxMTc0O0JFMjg7MTEwNyAxMTc0OworQkUyOTtCRTI5OzExMDcgMTE3NCAxMUE4O0JFMjk7MTEwNyAxMTc0IDExQTg7CitCRTJBO0JFMkE7MTEwNyAxMTc0IDExQTk7QkUyQTsxMTA3IDExNzQgMTFBOTsKK0JFMkI7QkUyQjsxMTA3IDExNzQgMTFBQTtCRTJCOzExMDcgMTE3NCAxMUFBOworQkUyQztCRTJDOzExMDcgMTE3NCAxMUFCO0JFMkM7MTEwNyAxMTc0IDExQUI7CitCRTJEO0JFMkQ7MTEwNyAxMTc0IDExQUM7QkUyRDsxMTA3IDExNzQgMTFBQzsKK0JFMkU7QkUyRTsxMTA3IDExNzQgMTFBRDtCRTJFOzExMDcgMTE3NCAxMUFEOworQkUyRjtCRTJGOzExMDcgMTE3NCAxMUFFO0JFMkY7MTEwNyAxMTc0IDExQUU7CitCRTMwO0JFMzA7MTEwNyAxMTc0IDExQUY7QkUzMDsxMTA3IDExNzQgMTFBRjsKK0JFMzE7QkUzMTsxMTA3IDExNzQgMTFCMDtCRTMxOzExMDcgMTE3NCAxMUIwOworQkUzMjtCRTMyOzExMDcgMTE3NCAxMUIxO0JFMzI7MTEwNyAxMTc0IDExQjE7CitCRTMzO0JFMzM7MTEwNyAxMTc0IDExQjI7QkUzMzsxMTA3IDExNzQgMTFCMjsKK0JFMzQ7QkUzNDsxMTA3IDExNzQgMTFCMztCRTM0OzExMDcgMTE3NCAxMUIzOworQkUzNTtCRTM1OzExMDcgMTE3NCAxMUI0O0JFMzU7MTEwNyAxMTc0IDExQjQ7CitCRTM2O0JFMzY7MTEwNyAxMTc0IDExQjU7QkUzNjsxMTA3IDExNzQgMTFCNTsKK0JFMzc7QkUzNzsxMTA3IDExNzQgMTFCNjtCRTM3OzExMDcgMTE3NCAxMUI2OworQkUzODtCRTM4OzExMDcgMTE3NCAxMUI3O0JFMzg7MTEwNyAxMTc0IDExQjc7CitCRTM5O0JFMzk7MTEwNyAxMTc0IDExQjg7QkUzOTsxMTA3IDExNzQgMTFCODsKK0JFM0E7QkUzQTsxMTA3IDExNzQgMTFCOTtCRTNBOzExMDcgMTE3NCAxMUI5OworQkUzQjtCRTNCOzExMDcgMTE3NCAxMUJBO0JFM0I7MTEwNyAxMTc0IDExQkE7CitCRTNDO0JFM0M7MTEwNyAxMTc0IDExQkI7QkUzQzsxMTA3IDExNzQgMTFCQjsKK0JFM0Q7QkUzRDsxMTA3IDExNzQgMTFCQztCRTNEOzExMDcgMTE3NCAxMUJDOworQkUzRTtCRTNFOzExMDcgMTE3NCAxMUJEO0JFM0U7MTEwNyAxMTc0IDExQkQ7CitCRTNGO0JFM0Y7MTEwNyAxMTc0IDExQkU7QkUzRjsxMTA3IDExNzQgMTFCRTsKK0JFNDA7QkU0MDsxMTA3IDExNzQgMTFCRjtCRTQwOzExMDcgMTE3NCAxMUJGOworQkU0MTtCRTQxOzExMDcgMTE3NCAxMUMwO0JFNDE7MTEwNyAxMTc0IDExQzA7CitCRTQyO0JFNDI7MTEwNyAxMTc0IDExQzE7QkU0MjsxMTA3IDExNzQgMTFDMTsKK0JFNDM7QkU0MzsxMTA3IDExNzQgMTFDMjtCRTQzOzExMDcgMTE3NCAxMUMyOworQkU0NDtCRTQ0OzExMDcgMTE3NTtCRTQ0OzExMDcgMTE3NTsKK0JFNDU7QkU0NTsxMTA3IDExNzUgMTFBODtCRTQ1OzExMDcgMTE3NSAxMUE4OworQkU0NjtCRTQ2OzExMDcgMTE3NSAxMUE5O0JFNDY7MTEwNyAxMTc1IDExQTk7CitCRTQ3O0JFNDc7MTEwNyAxMTc1IDExQUE7QkU0NzsxMTA3IDExNzUgMTFBQTsKK0JFNDg7QkU0ODsxMTA3IDExNzUgMTFBQjtCRTQ4OzExMDcgMTE3NSAxMUFCOworQkU0OTtCRTQ5OzExMDcgMTE3NSAxMUFDO0JFNDk7MTEwNyAxMTc1IDExQUM7CitCRTRBO0JFNEE7MTEwNyAxMTc1IDExQUQ7QkU0QTsxMTA3IDExNzUgMTFBRDsKK0JFNEI7QkU0QjsxMTA3IDExNzUgMTFBRTtCRTRCOzExMDcgMTE3NSAxMUFFOworQkU0QztCRTRDOzExMDcgMTE3NSAxMUFGO0JFNEM7MTEwNyAxMTc1IDExQUY7CitCRTREO0JFNEQ7MTEwNyAxMTc1IDExQjA7QkU0RDsxMTA3IDExNzUgMTFCMDsKK0JFNEU7QkU0RTsxMTA3IDExNzUgMTFCMTtCRTRFOzExMDcgMTE3NSAxMUIxOworQkU0RjtCRTRGOzExMDcgMTE3NSAxMUIyO0JFNEY7MTEwNyAxMTc1IDExQjI7CitCRTUwO0JFNTA7MTEwNyAxMTc1IDExQjM7QkU1MDsxMTA3IDExNzUgMTFCMzsKK0JFNTE7QkU1MTsxMTA3IDExNzUgMTFCNDtCRTUxOzExMDcgMTE3NSAxMUI0OworQkU1MjtCRTUyOzExMDcgMTE3NSAxMUI1O0JFNTI7MTEwNyAxMTc1IDExQjU7CitCRTUzO0JFNTM7MTEwNyAxMTc1IDExQjY7QkU1MzsxMTA3IDExNzUgMTFCNjsKK0JFNTQ7QkU1NDsxMTA3IDExNzUgMTFCNztCRTU0OzExMDcgMTE3NSAxMUI3OworQkU1NTtCRTU1OzExMDcgMTE3NSAxMUI4O0JFNTU7MTEwNyAxMTc1IDExQjg7CitCRTU2O0JFNTY7MTEwNyAxMTc1IDExQjk7QkU1NjsxMTA3IDExNzUgMTFCOTsKK0JFNTc7QkU1NzsxMTA3IDExNzUgMTFCQTtCRTU3OzExMDcgMTE3NSAxMUJBOworQkU1ODtCRTU4OzExMDcgMTE3NSAxMUJCO0JFNTg7MTEwNyAxMTc1IDExQkI7CitCRTU5O0JFNTk7MTEwNyAxMTc1IDExQkM7QkU1OTsxMTA3IDExNzUgMTFCQzsKK0JFNUE7QkU1QTsxMTA3IDExNzUgMTFCRDtCRTVBOzExMDcgMTE3NSAxMUJEOworQkU1QjtCRTVCOzExMDcgMTE3NSAxMUJFO0JFNUI7MTEwNyAxMTc1IDExQkU7CitCRTVDO0JFNUM7MTEwNyAxMTc1IDExQkY7QkU1QzsxMTA3IDExNzUgMTFCRjsKK0JFNUQ7QkU1RDsxMTA3IDExNzUgMTFDMDtCRTVEOzExMDcgMTE3NSAxMUMwOworQkU1RTtCRTVFOzExMDcgMTE3NSAxMUMxO0JFNUU7MTEwNyAxMTc1IDExQzE7CitCRTVGO0JFNUY7MTEwNyAxMTc1IDExQzI7QkU1RjsxMTA3IDExNzUgMTFDMjsKK0JFNjA7QkU2MDsxMTA4IDExNjE7QkU2MDsxMTA4IDExNjE7CitCRTYxO0JFNjE7MTEwOCAxMTYxIDExQTg7QkU2MTsxMTA4IDExNjEgMTFBODsKK0JFNjI7QkU2MjsxMTA4IDExNjEgMTFBOTtCRTYyOzExMDggMTE2MSAxMUE5OworQkU2MztCRTYzOzExMDggMTE2MSAxMUFBO0JFNjM7MTEwOCAxMTYxIDExQUE7CitCRTY0O0JFNjQ7MTEwOCAxMTYxIDExQUI7QkU2NDsxMTA4IDExNjEgMTFBQjsKK0JFNjU7QkU2NTsxMTA4IDExNjEgMTFBQztCRTY1OzExMDggMTE2MSAxMUFDOworQkU2NjtCRTY2OzExMDggMTE2MSAxMUFEO0JFNjY7MTEwOCAxMTYxIDExQUQ7CitCRTY3O0JFNjc7MTEwOCAxMTYxIDExQUU7QkU2NzsxMTA4IDExNjEgMTFBRTsKK0JFNjg7QkU2ODsxMTA4IDExNjEgMTFBRjtCRTY4OzExMDggMTE2MSAxMUFGOworQkU2OTtCRTY5OzExMDggMTE2MSAxMUIwO0JFNjk7MTEwOCAxMTYxIDExQjA7CitCRTZBO0JFNkE7MTEwOCAxMTYxIDExQjE7QkU2QTsxMTA4IDExNjEgMTFCMTsKK0JFNkI7QkU2QjsxMTA4IDExNjEgMTFCMjtCRTZCOzExMDggMTE2MSAxMUIyOworQkU2QztCRTZDOzExMDggMTE2MSAxMUIzO0JFNkM7MTEwOCAxMTYxIDExQjM7CitCRTZEO0JFNkQ7MTEwOCAxMTYxIDExQjQ7QkU2RDsxMTA4IDExNjEgMTFCNDsKK0JFNkU7QkU2RTsxMTA4IDExNjEgMTFCNTtCRTZFOzExMDggMTE2MSAxMUI1OworQkU2RjtCRTZGOzExMDggMTE2MSAxMUI2O0JFNkY7MTEwOCAxMTYxIDExQjY7CitCRTcwO0JFNzA7MTEwOCAxMTYxIDExQjc7QkU3MDsxMTA4IDExNjEgMTFCNzsKK0JFNzE7QkU3MTsxMTA4IDExNjEgMTFCODtCRTcxOzExMDggMTE2MSAxMUI4OworQkU3MjtCRTcyOzExMDggMTE2MSAxMUI5O0JFNzI7MTEwOCAxMTYxIDExQjk7CitCRTczO0JFNzM7MTEwOCAxMTYxIDExQkE7QkU3MzsxMTA4IDExNjEgMTFCQTsKK0JFNzQ7QkU3NDsxMTA4IDExNjEgMTFCQjtCRTc0OzExMDggMTE2MSAxMUJCOworQkU3NTtCRTc1OzExMDggMTE2MSAxMUJDO0JFNzU7MTEwOCAxMTYxIDExQkM7CitCRTc2O0JFNzY7MTEwOCAxMTYxIDExQkQ7QkU3NjsxMTA4IDExNjEgMTFCRDsKK0JFNzc7QkU3NzsxMTA4IDExNjEgMTFCRTtCRTc3OzExMDggMTE2MSAxMUJFOworQkU3ODtCRTc4OzExMDggMTE2MSAxMUJGO0JFNzg7MTEwOCAxMTYxIDExQkY7CitCRTc5O0JFNzk7MTEwOCAxMTYxIDExQzA7QkU3OTsxMTA4IDExNjEgMTFDMDsKK0JFN0E7QkU3QTsxMTA4IDExNjEgMTFDMTtCRTdBOzExMDggMTE2MSAxMUMxOworQkU3QjtCRTdCOzExMDggMTE2MSAxMUMyO0JFN0I7MTEwOCAxMTYxIDExQzI7CitCRTdDO0JFN0M7MTEwOCAxMTYyO0JFN0M7MTEwOCAxMTYyOworQkU3RDtCRTdEOzExMDggMTE2MiAxMUE4O0JFN0Q7MTEwOCAxMTYyIDExQTg7CitCRTdFO0JFN0U7MTEwOCAxMTYyIDExQTk7QkU3RTsxMTA4IDExNjIgMTFBOTsKK0JFN0Y7QkU3RjsxMTA4IDExNjIgMTFBQTtCRTdGOzExMDggMTE2MiAxMUFBOworQkU4MDtCRTgwOzExMDggMTE2MiAxMUFCO0JFODA7MTEwOCAxMTYyIDExQUI7CitCRTgxO0JFODE7MTEwOCAxMTYyIDExQUM7QkU4MTsxMTA4IDExNjIgMTFBQzsKK0JFODI7QkU4MjsxMTA4IDExNjIgMTFBRDtCRTgyOzExMDggMTE2MiAxMUFEOworQkU4MztCRTgzOzExMDggMTE2MiAxMUFFO0JFODM7MTEwOCAxMTYyIDExQUU7CitCRTg0O0JFODQ7MTEwOCAxMTYyIDExQUY7QkU4NDsxMTA4IDExNjIgMTFBRjsKK0JFODU7QkU4NTsxMTA4IDExNjIgMTFCMDtCRTg1OzExMDggMTE2MiAxMUIwOworQkU4NjtCRTg2OzExMDggMTE2MiAxMUIxO0JFODY7MTEwOCAxMTYyIDExQjE7CitCRTg3O0JFODc7MTEwOCAxMTYyIDExQjI7QkU4NzsxMTA4IDExNjIgMTFCMjsKK0JFODg7QkU4ODsxMTA4IDExNjIgMTFCMztCRTg4OzExMDggMTE2MiAxMUIzOworQkU4OTtCRTg5OzExMDggMTE2MiAxMUI0O0JFODk7MTEwOCAxMTYyIDExQjQ7CitCRThBO0JFOEE7MTEwOCAxMTYyIDExQjU7QkU4QTsxMTA4IDExNjIgMTFCNTsKK0JFOEI7QkU4QjsxMTA4IDExNjIgMTFCNjtCRThCOzExMDggMTE2MiAxMUI2OworQkU4QztCRThDOzExMDggMTE2MiAxMUI3O0JFOEM7MTEwOCAxMTYyIDExQjc7CitCRThEO0JFOEQ7MTEwOCAxMTYyIDExQjg7QkU4RDsxMTA4IDExNjIgMTFCODsKK0JFOEU7QkU4RTsxMTA4IDExNjIgMTFCOTtCRThFOzExMDggMTE2MiAxMUI5OworQkU4RjtCRThGOzExMDggMTE2MiAxMUJBO0JFOEY7MTEwOCAxMTYyIDExQkE7CitCRTkwO0JFOTA7MTEwOCAxMTYyIDExQkI7QkU5MDsxMTA4IDExNjIgMTFCQjsKK0JFOTE7QkU5MTsxMTA4IDExNjIgMTFCQztCRTkxOzExMDggMTE2MiAxMUJDOworQkU5MjtCRTkyOzExMDggMTE2MiAxMUJEO0JFOTI7MTEwOCAxMTYyIDExQkQ7CitCRTkzO0JFOTM7MTEwOCAxMTYyIDExQkU7QkU5MzsxMTA4IDExNjIgMTFCRTsKK0JFOTQ7QkU5NDsxMTA4IDExNjIgMTFCRjtCRTk0OzExMDggMTE2MiAxMUJGOworQkU5NTtCRTk1OzExMDggMTE2MiAxMUMwO0JFOTU7MTEwOCAxMTYyIDExQzA7CitCRTk2O0JFOTY7MTEwOCAxMTYyIDExQzE7QkU5NjsxMTA4IDExNjIgMTFDMTsKK0JFOTc7QkU5NzsxMTA4IDExNjIgMTFDMjtCRTk3OzExMDggMTE2MiAxMUMyOworQkU5ODtCRTk4OzExMDggMTE2MztCRTk4OzExMDggMTE2MzsKK0JFOTk7QkU5OTsxMTA4IDExNjMgMTFBODtCRTk5OzExMDggMTE2MyAxMUE4OworQkU5QTtCRTlBOzExMDggMTE2MyAxMUE5O0JFOUE7MTEwOCAxMTYzIDExQTk7CitCRTlCO0JFOUI7MTEwOCAxMTYzIDExQUE7QkU5QjsxMTA4IDExNjMgMTFBQTsKK0JFOUM7QkU5QzsxMTA4IDExNjMgMTFBQjtCRTlDOzExMDggMTE2MyAxMUFCOworQkU5RDtCRTlEOzExMDggMTE2MyAxMUFDO0JFOUQ7MTEwOCAxMTYzIDExQUM7CitCRTlFO0JFOUU7MTEwOCAxMTYzIDExQUQ7QkU5RTsxMTA4IDExNjMgMTFBRDsKK0JFOUY7QkU5RjsxMTA4IDExNjMgMTFBRTtCRTlGOzExMDggMTE2MyAxMUFFOworQkVBMDtCRUEwOzExMDggMTE2MyAxMUFGO0JFQTA7MTEwOCAxMTYzIDExQUY7CitCRUExO0JFQTE7MTEwOCAxMTYzIDExQjA7QkVBMTsxMTA4IDExNjMgMTFCMDsKK0JFQTI7QkVBMjsxMTA4IDExNjMgMTFCMTtCRUEyOzExMDggMTE2MyAxMUIxOworQkVBMztCRUEzOzExMDggMTE2MyAxMUIyO0JFQTM7MTEwOCAxMTYzIDExQjI7CitCRUE0O0JFQTQ7MTEwOCAxMTYzIDExQjM7QkVBNDsxMTA4IDExNjMgMTFCMzsKK0JFQTU7QkVBNTsxMTA4IDExNjMgMTFCNDtCRUE1OzExMDggMTE2MyAxMUI0OworQkVBNjtCRUE2OzExMDggMTE2MyAxMUI1O0JFQTY7MTEwOCAxMTYzIDExQjU7CitCRUE3O0JFQTc7MTEwOCAxMTYzIDExQjY7QkVBNzsxMTA4IDExNjMgMTFCNjsKK0JFQTg7QkVBODsxMTA4IDExNjMgMTFCNztCRUE4OzExMDggMTE2MyAxMUI3OworQkVBOTtCRUE5OzExMDggMTE2MyAxMUI4O0JFQTk7MTEwOCAxMTYzIDExQjg7CitCRUFBO0JFQUE7MTEwOCAxMTYzIDExQjk7QkVBQTsxMTA4IDExNjMgMTFCOTsKK0JFQUI7QkVBQjsxMTA4IDExNjMgMTFCQTtCRUFCOzExMDggMTE2MyAxMUJBOworQkVBQztCRUFDOzExMDggMTE2MyAxMUJCO0JFQUM7MTEwOCAxMTYzIDExQkI7CitCRUFEO0JFQUQ7MTEwOCAxMTYzIDExQkM7QkVBRDsxMTA4IDExNjMgMTFCQzsKK0JFQUU7QkVBRTsxMTA4IDExNjMgMTFCRDtCRUFFOzExMDggMTE2MyAxMUJEOworQkVBRjtCRUFGOzExMDggMTE2MyAxMUJFO0JFQUY7MTEwOCAxMTYzIDExQkU7CitCRUIwO0JFQjA7MTEwOCAxMTYzIDExQkY7QkVCMDsxMTA4IDExNjMgMTFCRjsKK0JFQjE7QkVCMTsxMTA4IDExNjMgMTFDMDtCRUIxOzExMDggMTE2MyAxMUMwOworQkVCMjtCRUIyOzExMDggMTE2MyAxMUMxO0JFQjI7MTEwOCAxMTYzIDExQzE7CitCRUIzO0JFQjM7MTEwOCAxMTYzIDExQzI7QkVCMzsxMTA4IDExNjMgMTFDMjsKK0JFQjQ7QkVCNDsxMTA4IDExNjQ7QkVCNDsxMTA4IDExNjQ7CitCRUI1O0JFQjU7MTEwOCAxMTY0IDExQTg7QkVCNTsxMTA4IDExNjQgMTFBODsKK0JFQjY7QkVCNjsxMTA4IDExNjQgMTFBOTtCRUI2OzExMDggMTE2NCAxMUE5OworQkVCNztCRUI3OzExMDggMTE2NCAxMUFBO0JFQjc7MTEwOCAxMTY0IDExQUE7CitCRUI4O0JFQjg7MTEwOCAxMTY0IDExQUI7QkVCODsxMTA4IDExNjQgMTFBQjsKK0JFQjk7QkVCOTsxMTA4IDExNjQgMTFBQztCRUI5OzExMDggMTE2NCAxMUFDOworQkVCQTtCRUJBOzExMDggMTE2NCAxMUFEO0JFQkE7MTEwOCAxMTY0IDExQUQ7CitCRUJCO0JFQkI7MTEwOCAxMTY0IDExQUU7QkVCQjsxMTA4IDExNjQgMTFBRTsKK0JFQkM7QkVCQzsxMTA4IDExNjQgMTFBRjtCRUJDOzExMDggMTE2NCAxMUFGOworQkVCRDtCRUJEOzExMDggMTE2NCAxMUIwO0JFQkQ7MTEwOCAxMTY0IDExQjA7CitCRUJFO0JFQkU7MTEwOCAxMTY0IDExQjE7QkVCRTsxMTA4IDExNjQgMTFCMTsKK0JFQkY7QkVCRjsxMTA4IDExNjQgMTFCMjtCRUJGOzExMDggMTE2NCAxMUIyOworQkVDMDtCRUMwOzExMDggMTE2NCAxMUIzO0JFQzA7MTEwOCAxMTY0IDExQjM7CitCRUMxO0JFQzE7MTEwOCAxMTY0IDExQjQ7QkVDMTsxMTA4IDExNjQgMTFCNDsKK0JFQzI7QkVDMjsxMTA4IDExNjQgMTFCNTtCRUMyOzExMDggMTE2NCAxMUI1OworQkVDMztCRUMzOzExMDggMTE2NCAxMUI2O0JFQzM7MTEwOCAxMTY0IDExQjY7CitCRUM0O0JFQzQ7MTEwOCAxMTY0IDExQjc7QkVDNDsxMTA4IDExNjQgMTFCNzsKK0JFQzU7QkVDNTsxMTA4IDExNjQgMTFCODtCRUM1OzExMDggMTE2NCAxMUI4OworQkVDNjtCRUM2OzExMDggMTE2NCAxMUI5O0JFQzY7MTEwOCAxMTY0IDExQjk7CitCRUM3O0JFQzc7MTEwOCAxMTY0IDExQkE7QkVDNzsxMTA4IDExNjQgMTFCQTsKK0JFQzg7QkVDODsxMTA4IDExNjQgMTFCQjtCRUM4OzExMDggMTE2NCAxMUJCOworQkVDOTtCRUM5OzExMDggMTE2NCAxMUJDO0JFQzk7MTEwOCAxMTY0IDExQkM7CitCRUNBO0JFQ0E7MTEwOCAxMTY0IDExQkQ7QkVDQTsxMTA4IDExNjQgMTFCRDsKK0JFQ0I7QkVDQjsxMTA4IDExNjQgMTFCRTtCRUNCOzExMDggMTE2NCAxMUJFOworQkVDQztCRUNDOzExMDggMTE2NCAxMUJGO0JFQ0M7MTEwOCAxMTY0IDExQkY7CitCRUNEO0JFQ0Q7MTEwOCAxMTY0IDExQzA7QkVDRDsxMTA4IDExNjQgMTFDMDsKK0JFQ0U7QkVDRTsxMTA4IDExNjQgMTFDMTtCRUNFOzExMDggMTE2NCAxMUMxOworQkVDRjtCRUNGOzExMDggMTE2NCAxMUMyO0JFQ0Y7MTEwOCAxMTY0IDExQzI7CitCRUQwO0JFRDA7MTEwOCAxMTY1O0JFRDA7MTEwOCAxMTY1OworQkVEMTtCRUQxOzExMDggMTE2NSAxMUE4O0JFRDE7MTEwOCAxMTY1IDExQTg7CitCRUQyO0JFRDI7MTEwOCAxMTY1IDExQTk7QkVEMjsxMTA4IDExNjUgMTFBOTsKK0JFRDM7QkVEMzsxMTA4IDExNjUgMTFBQTtCRUQzOzExMDggMTE2NSAxMUFBOworQkVENDtCRUQ0OzExMDggMTE2NSAxMUFCO0JFRDQ7MTEwOCAxMTY1IDExQUI7CitCRUQ1O0JFRDU7MTEwOCAxMTY1IDExQUM7QkVENTsxMTA4IDExNjUgMTFBQzsKK0JFRDY7QkVENjsxMTA4IDExNjUgMTFBRDtCRUQ2OzExMDggMTE2NSAxMUFEOworQkVENztCRUQ3OzExMDggMTE2NSAxMUFFO0JFRDc7MTEwOCAxMTY1IDExQUU7CitCRUQ4O0JFRDg7MTEwOCAxMTY1IDExQUY7QkVEODsxMTA4IDExNjUgMTFBRjsKK0JFRDk7QkVEOTsxMTA4IDExNjUgMTFCMDtCRUQ5OzExMDggMTE2NSAxMUIwOworQkVEQTtCRURBOzExMDggMTE2NSAxMUIxO0JFREE7MTEwOCAxMTY1IDExQjE7CitCRURCO0JFREI7MTEwOCAxMTY1IDExQjI7QkVEQjsxMTA4IDExNjUgMTFCMjsKK0JFREM7QkVEQzsxMTA4IDExNjUgMTFCMztCRURDOzExMDggMTE2NSAxMUIzOworQkVERDtCRUREOzExMDggMTE2NSAxMUI0O0JFREQ7MTEwOCAxMTY1IDExQjQ7CitCRURFO0JFREU7MTEwOCAxMTY1IDExQjU7QkVERTsxMTA4IDExNjUgMTFCNTsKK0JFREY7QkVERjsxMTA4IDExNjUgMTFCNjtCRURGOzExMDggMTE2NSAxMUI2OworQkVFMDtCRUUwOzExMDggMTE2NSAxMUI3O0JFRTA7MTEwOCAxMTY1IDExQjc7CitCRUUxO0JFRTE7MTEwOCAxMTY1IDExQjg7QkVFMTsxMTA4IDExNjUgMTFCODsKK0JFRTI7QkVFMjsxMTA4IDExNjUgMTFCOTtCRUUyOzExMDggMTE2NSAxMUI5OworQkVFMztCRUUzOzExMDggMTE2NSAxMUJBO0JFRTM7MTEwOCAxMTY1IDExQkE7CitCRUU0O0JFRTQ7MTEwOCAxMTY1IDExQkI7QkVFNDsxMTA4IDExNjUgMTFCQjsKK0JFRTU7QkVFNTsxMTA4IDExNjUgMTFCQztCRUU1OzExMDggMTE2NSAxMUJDOworQkVFNjtCRUU2OzExMDggMTE2NSAxMUJEO0JFRTY7MTEwOCAxMTY1IDExQkQ7CitCRUU3O0JFRTc7MTEwOCAxMTY1IDExQkU7QkVFNzsxMTA4IDExNjUgMTFCRTsKK0JFRTg7QkVFODsxMTA4IDExNjUgMTFCRjtCRUU4OzExMDggMTE2NSAxMUJGOworQkVFOTtCRUU5OzExMDggMTE2NSAxMUMwO0JFRTk7MTEwOCAxMTY1IDExQzA7CitCRUVBO0JFRUE7MTEwOCAxMTY1IDExQzE7QkVFQTsxMTA4IDExNjUgMTFDMTsKK0JFRUI7QkVFQjsxMTA4IDExNjUgMTFDMjtCRUVCOzExMDggMTE2NSAxMUMyOworQkVFQztCRUVDOzExMDggMTE2NjtCRUVDOzExMDggMTE2NjsKK0JFRUQ7QkVFRDsxMTA4IDExNjYgMTFBODtCRUVEOzExMDggMTE2NiAxMUE4OworQkVFRTtCRUVFOzExMDggMTE2NiAxMUE5O0JFRUU7MTEwOCAxMTY2IDExQTk7CitCRUVGO0JFRUY7MTEwOCAxMTY2IDExQUE7QkVFRjsxMTA4IDExNjYgMTFBQTsKK0JFRjA7QkVGMDsxMTA4IDExNjYgMTFBQjtCRUYwOzExMDggMTE2NiAxMUFCOworQkVGMTtCRUYxOzExMDggMTE2NiAxMUFDO0JFRjE7MTEwOCAxMTY2IDExQUM7CitCRUYyO0JFRjI7MTEwOCAxMTY2IDExQUQ7QkVGMjsxMTA4IDExNjYgMTFBRDsKK0JFRjM7QkVGMzsxMTA4IDExNjYgMTFBRTtCRUYzOzExMDggMTE2NiAxMUFFOworQkVGNDtCRUY0OzExMDggMTE2NiAxMUFGO0JFRjQ7MTEwOCAxMTY2IDExQUY7CitCRUY1O0JFRjU7MTEwOCAxMTY2IDExQjA7QkVGNTsxMTA4IDExNjYgMTFCMDsKK0JFRjY7QkVGNjsxMTA4IDExNjYgMTFCMTtCRUY2OzExMDggMTE2NiAxMUIxOworQkVGNztCRUY3OzExMDggMTE2NiAxMUIyO0JFRjc7MTEwOCAxMTY2IDExQjI7CitCRUY4O0JFRjg7MTEwOCAxMTY2IDExQjM7QkVGODsxMTA4IDExNjYgMTFCMzsKK0JFRjk7QkVGOTsxMTA4IDExNjYgMTFCNDtCRUY5OzExMDggMTE2NiAxMUI0OworQkVGQTtCRUZBOzExMDggMTE2NiAxMUI1O0JFRkE7MTEwOCAxMTY2IDExQjU7CitCRUZCO0JFRkI7MTEwOCAxMTY2IDExQjY7QkVGQjsxMTA4IDExNjYgMTFCNjsKK0JFRkM7QkVGQzsxMTA4IDExNjYgMTFCNztCRUZDOzExMDggMTE2NiAxMUI3OworQkVGRDtCRUZEOzExMDggMTE2NiAxMUI4O0JFRkQ7MTEwOCAxMTY2IDExQjg7CitCRUZFO0JFRkU7MTEwOCAxMTY2IDExQjk7QkVGRTsxMTA4IDExNjYgMTFCOTsKK0JFRkY7QkVGRjsxMTA4IDExNjYgMTFCQTtCRUZGOzExMDggMTE2NiAxMUJBOworQkYwMDtCRjAwOzExMDggMTE2NiAxMUJCO0JGMDA7MTEwOCAxMTY2IDExQkI7CitCRjAxO0JGMDE7MTEwOCAxMTY2IDExQkM7QkYwMTsxMTA4IDExNjYgMTFCQzsKK0JGMDI7QkYwMjsxMTA4IDExNjYgMTFCRDtCRjAyOzExMDggMTE2NiAxMUJEOworQkYwMztCRjAzOzExMDggMTE2NiAxMUJFO0JGMDM7MTEwOCAxMTY2IDExQkU7CitCRjA0O0JGMDQ7MTEwOCAxMTY2IDExQkY7QkYwNDsxMTA4IDExNjYgMTFCRjsKK0JGMDU7QkYwNTsxMTA4IDExNjYgMTFDMDtCRjA1OzExMDggMTE2NiAxMUMwOworQkYwNjtCRjA2OzExMDggMTE2NiAxMUMxO0JGMDY7MTEwOCAxMTY2IDExQzE7CitCRjA3O0JGMDc7MTEwOCAxMTY2IDExQzI7QkYwNzsxMTA4IDExNjYgMTFDMjsKK0JGMDg7QkYwODsxMTA4IDExNjc7QkYwODsxMTA4IDExNjc7CitCRjA5O0JGMDk7MTEwOCAxMTY3IDExQTg7QkYwOTsxMTA4IDExNjcgMTFBODsKK0JGMEE7QkYwQTsxMTA4IDExNjcgMTFBOTtCRjBBOzExMDggMTE2NyAxMUE5OworQkYwQjtCRjBCOzExMDggMTE2NyAxMUFBO0JGMEI7MTEwOCAxMTY3IDExQUE7CitCRjBDO0JGMEM7MTEwOCAxMTY3IDExQUI7QkYwQzsxMTA4IDExNjcgMTFBQjsKK0JGMEQ7QkYwRDsxMTA4IDExNjcgMTFBQztCRjBEOzExMDggMTE2NyAxMUFDOworQkYwRTtCRjBFOzExMDggMTE2NyAxMUFEO0JGMEU7MTEwOCAxMTY3IDExQUQ7CitCRjBGO0JGMEY7MTEwOCAxMTY3IDExQUU7QkYwRjsxMTA4IDExNjcgMTFBRTsKK0JGMTA7QkYxMDsxMTA4IDExNjcgMTFBRjtCRjEwOzExMDggMTE2NyAxMUFGOworQkYxMTtCRjExOzExMDggMTE2NyAxMUIwO0JGMTE7MTEwOCAxMTY3IDExQjA7CitCRjEyO0JGMTI7MTEwOCAxMTY3IDExQjE7QkYxMjsxMTA4IDExNjcgMTFCMTsKK0JGMTM7QkYxMzsxMTA4IDExNjcgMTFCMjtCRjEzOzExMDggMTE2NyAxMUIyOworQkYxNDtCRjE0OzExMDggMTE2NyAxMUIzO0JGMTQ7MTEwOCAxMTY3IDExQjM7CitCRjE1O0JGMTU7MTEwOCAxMTY3IDExQjQ7QkYxNTsxMTA4IDExNjcgMTFCNDsKK0JGMTY7QkYxNjsxMTA4IDExNjcgMTFCNTtCRjE2OzExMDggMTE2NyAxMUI1OworQkYxNztCRjE3OzExMDggMTE2NyAxMUI2O0JGMTc7MTEwOCAxMTY3IDExQjY7CitCRjE4O0JGMTg7MTEwOCAxMTY3IDExQjc7QkYxODsxMTA4IDExNjcgMTFCNzsKK0JGMTk7QkYxOTsxMTA4IDExNjcgMTFCODtCRjE5OzExMDggMTE2NyAxMUI4OworQkYxQTtCRjFBOzExMDggMTE2NyAxMUI5O0JGMUE7MTEwOCAxMTY3IDExQjk7CitCRjFCO0JGMUI7MTEwOCAxMTY3IDExQkE7QkYxQjsxMTA4IDExNjcgMTFCQTsKK0JGMUM7QkYxQzsxMTA4IDExNjcgMTFCQjtCRjFDOzExMDggMTE2NyAxMUJCOworQkYxRDtCRjFEOzExMDggMTE2NyAxMUJDO0JGMUQ7MTEwOCAxMTY3IDExQkM7CitCRjFFO0JGMUU7MTEwOCAxMTY3IDExQkQ7QkYxRTsxMTA4IDExNjcgMTFCRDsKK0JGMUY7QkYxRjsxMTA4IDExNjcgMTFCRTtCRjFGOzExMDggMTE2NyAxMUJFOworQkYyMDtCRjIwOzExMDggMTE2NyAxMUJGO0JGMjA7MTEwOCAxMTY3IDExQkY7CitCRjIxO0JGMjE7MTEwOCAxMTY3IDExQzA7QkYyMTsxMTA4IDExNjcgMTFDMDsKK0JGMjI7QkYyMjsxMTA4IDExNjcgMTFDMTtCRjIyOzExMDggMTE2NyAxMUMxOworQkYyMztCRjIzOzExMDggMTE2NyAxMUMyO0JGMjM7MTEwOCAxMTY3IDExQzI7CitCRjI0O0JGMjQ7MTEwOCAxMTY4O0JGMjQ7MTEwOCAxMTY4OworQkYyNTtCRjI1OzExMDggMTE2OCAxMUE4O0JGMjU7MTEwOCAxMTY4IDExQTg7CitCRjI2O0JGMjY7MTEwOCAxMTY4IDExQTk7QkYyNjsxMTA4IDExNjggMTFBOTsKK0JGMjc7QkYyNzsxMTA4IDExNjggMTFBQTtCRjI3OzExMDggMTE2OCAxMUFBOworQkYyODtCRjI4OzExMDggMTE2OCAxMUFCO0JGMjg7MTEwOCAxMTY4IDExQUI7CitCRjI5O0JGMjk7MTEwOCAxMTY4IDExQUM7QkYyOTsxMTA4IDExNjggMTFBQzsKK0JGMkE7QkYyQTsxMTA4IDExNjggMTFBRDtCRjJBOzExMDggMTE2OCAxMUFEOworQkYyQjtCRjJCOzExMDggMTE2OCAxMUFFO0JGMkI7MTEwOCAxMTY4IDExQUU7CitCRjJDO0JGMkM7MTEwOCAxMTY4IDExQUY7QkYyQzsxMTA4IDExNjggMTFBRjsKK0JGMkQ7QkYyRDsxMTA4IDExNjggMTFCMDtCRjJEOzExMDggMTE2OCAxMUIwOworQkYyRTtCRjJFOzExMDggMTE2OCAxMUIxO0JGMkU7MTEwOCAxMTY4IDExQjE7CitCRjJGO0JGMkY7MTEwOCAxMTY4IDExQjI7QkYyRjsxMTA4IDExNjggMTFCMjsKK0JGMzA7QkYzMDsxMTA4IDExNjggMTFCMztCRjMwOzExMDggMTE2OCAxMUIzOworQkYzMTtCRjMxOzExMDggMTE2OCAxMUI0O0JGMzE7MTEwOCAxMTY4IDExQjQ7CitCRjMyO0JGMzI7MTEwOCAxMTY4IDExQjU7QkYzMjsxMTA4IDExNjggMTFCNTsKK0JGMzM7QkYzMzsxMTA4IDExNjggMTFCNjtCRjMzOzExMDggMTE2OCAxMUI2OworQkYzNDtCRjM0OzExMDggMTE2OCAxMUI3O0JGMzQ7MTEwOCAxMTY4IDExQjc7CitCRjM1O0JGMzU7MTEwOCAxMTY4IDExQjg7QkYzNTsxMTA4IDExNjggMTFCODsKK0JGMzY7QkYzNjsxMTA4IDExNjggMTFCOTtCRjM2OzExMDggMTE2OCAxMUI5OworQkYzNztCRjM3OzExMDggMTE2OCAxMUJBO0JGMzc7MTEwOCAxMTY4IDExQkE7CitCRjM4O0JGMzg7MTEwOCAxMTY4IDExQkI7QkYzODsxMTA4IDExNjggMTFCQjsKK0JGMzk7QkYzOTsxMTA4IDExNjggMTFCQztCRjM5OzExMDggMTE2OCAxMUJDOworQkYzQTtCRjNBOzExMDggMTE2OCAxMUJEO0JGM0E7MTEwOCAxMTY4IDExQkQ7CitCRjNCO0JGM0I7MTEwOCAxMTY4IDExQkU7QkYzQjsxMTA4IDExNjggMTFCRTsKK0JGM0M7QkYzQzsxMTA4IDExNjggMTFCRjtCRjNDOzExMDggMTE2OCAxMUJGOworQkYzRDtCRjNEOzExMDggMTE2OCAxMUMwO0JGM0Q7MTEwOCAxMTY4IDExQzA7CitCRjNFO0JGM0U7MTEwOCAxMTY4IDExQzE7QkYzRTsxMTA4IDExNjggMTFDMTsKK0JGM0Y7QkYzRjsxMTA4IDExNjggMTFDMjtCRjNGOzExMDggMTE2OCAxMUMyOworQkY0MDtCRjQwOzExMDggMTE2OTtCRjQwOzExMDggMTE2OTsKK0JGNDE7QkY0MTsxMTA4IDExNjkgMTFBODtCRjQxOzExMDggMTE2OSAxMUE4OworQkY0MjtCRjQyOzExMDggMTE2OSAxMUE5O0JGNDI7MTEwOCAxMTY5IDExQTk7CitCRjQzO0JGNDM7MTEwOCAxMTY5IDExQUE7QkY0MzsxMTA4IDExNjkgMTFBQTsKK0JGNDQ7QkY0NDsxMTA4IDExNjkgMTFBQjtCRjQ0OzExMDggMTE2OSAxMUFCOworQkY0NTtCRjQ1OzExMDggMTE2OSAxMUFDO0JGNDU7MTEwOCAxMTY5IDExQUM7CitCRjQ2O0JGNDY7MTEwOCAxMTY5IDExQUQ7QkY0NjsxMTA4IDExNjkgMTFBRDsKK0JGNDc7QkY0NzsxMTA4IDExNjkgMTFBRTtCRjQ3OzExMDggMTE2OSAxMUFFOworQkY0ODtCRjQ4OzExMDggMTE2OSAxMUFGO0JGNDg7MTEwOCAxMTY5IDExQUY7CitCRjQ5O0JGNDk7MTEwOCAxMTY5IDExQjA7QkY0OTsxMTA4IDExNjkgMTFCMDsKK0JGNEE7QkY0QTsxMTA4IDExNjkgMTFCMTtCRjRBOzExMDggMTE2OSAxMUIxOworQkY0QjtCRjRCOzExMDggMTE2OSAxMUIyO0JGNEI7MTEwOCAxMTY5IDExQjI7CitCRjRDO0JGNEM7MTEwOCAxMTY5IDExQjM7QkY0QzsxMTA4IDExNjkgMTFCMzsKK0JGNEQ7QkY0RDsxMTA4IDExNjkgMTFCNDtCRjREOzExMDggMTE2OSAxMUI0OworQkY0RTtCRjRFOzExMDggMTE2OSAxMUI1O0JGNEU7MTEwOCAxMTY5IDExQjU7CitCRjRGO0JGNEY7MTEwOCAxMTY5IDExQjY7QkY0RjsxMTA4IDExNjkgMTFCNjsKK0JGNTA7QkY1MDsxMTA4IDExNjkgMTFCNztCRjUwOzExMDggMTE2OSAxMUI3OworQkY1MTtCRjUxOzExMDggMTE2OSAxMUI4O0JGNTE7MTEwOCAxMTY5IDExQjg7CitCRjUyO0JGNTI7MTEwOCAxMTY5IDExQjk7QkY1MjsxMTA4IDExNjkgMTFCOTsKK0JGNTM7QkY1MzsxMTA4IDExNjkgMTFCQTtCRjUzOzExMDggMTE2OSAxMUJBOworQkY1NDtCRjU0OzExMDggMTE2OSAxMUJCO0JGNTQ7MTEwOCAxMTY5IDExQkI7CitCRjU1O0JGNTU7MTEwOCAxMTY5IDExQkM7QkY1NTsxMTA4IDExNjkgMTFCQzsKK0JGNTY7QkY1NjsxMTA4IDExNjkgMTFCRDtCRjU2OzExMDggMTE2OSAxMUJEOworQkY1NztCRjU3OzExMDggMTE2OSAxMUJFO0JGNTc7MTEwOCAxMTY5IDExQkU7CitCRjU4O0JGNTg7MTEwOCAxMTY5IDExQkY7QkY1ODsxMTA4IDExNjkgMTFCRjsKK0JGNTk7QkY1OTsxMTA4IDExNjkgMTFDMDtCRjU5OzExMDggMTE2OSAxMUMwOworQkY1QTtCRjVBOzExMDggMTE2OSAxMUMxO0JGNUE7MTEwOCAxMTY5IDExQzE7CitCRjVCO0JGNUI7MTEwOCAxMTY5IDExQzI7QkY1QjsxMTA4IDExNjkgMTFDMjsKK0JGNUM7QkY1QzsxMTA4IDExNkE7QkY1QzsxMTA4IDExNkE7CitCRjVEO0JGNUQ7MTEwOCAxMTZBIDExQTg7QkY1RDsxMTA4IDExNkEgMTFBODsKK0JGNUU7QkY1RTsxMTA4IDExNkEgMTFBOTtCRjVFOzExMDggMTE2QSAxMUE5OworQkY1RjtCRjVGOzExMDggMTE2QSAxMUFBO0JGNUY7MTEwOCAxMTZBIDExQUE7CitCRjYwO0JGNjA7MTEwOCAxMTZBIDExQUI7QkY2MDsxMTA4IDExNkEgMTFBQjsKK0JGNjE7QkY2MTsxMTA4IDExNkEgMTFBQztCRjYxOzExMDggMTE2QSAxMUFDOworQkY2MjtCRjYyOzExMDggMTE2QSAxMUFEO0JGNjI7MTEwOCAxMTZBIDExQUQ7CitCRjYzO0JGNjM7MTEwOCAxMTZBIDExQUU7QkY2MzsxMTA4IDExNkEgMTFBRTsKK0JGNjQ7QkY2NDsxMTA4IDExNkEgMTFBRjtCRjY0OzExMDggMTE2QSAxMUFGOworQkY2NTtCRjY1OzExMDggMTE2QSAxMUIwO0JGNjU7MTEwOCAxMTZBIDExQjA7CitCRjY2O0JGNjY7MTEwOCAxMTZBIDExQjE7QkY2NjsxMTA4IDExNkEgMTFCMTsKK0JGNjc7QkY2NzsxMTA4IDExNkEgMTFCMjtCRjY3OzExMDggMTE2QSAxMUIyOworQkY2ODtCRjY4OzExMDggMTE2QSAxMUIzO0JGNjg7MTEwOCAxMTZBIDExQjM7CitCRjY5O0JGNjk7MTEwOCAxMTZBIDExQjQ7QkY2OTsxMTA4IDExNkEgMTFCNDsKK0JGNkE7QkY2QTsxMTA4IDExNkEgMTFCNTtCRjZBOzExMDggMTE2QSAxMUI1OworQkY2QjtCRjZCOzExMDggMTE2QSAxMUI2O0JGNkI7MTEwOCAxMTZBIDExQjY7CitCRjZDO0JGNkM7MTEwOCAxMTZBIDExQjc7QkY2QzsxMTA4IDExNkEgMTFCNzsKK0JGNkQ7QkY2RDsxMTA4IDExNkEgMTFCODtCRjZEOzExMDggMTE2QSAxMUI4OworQkY2RTtCRjZFOzExMDggMTE2QSAxMUI5O0JGNkU7MTEwOCAxMTZBIDExQjk7CitCRjZGO0JGNkY7MTEwOCAxMTZBIDExQkE7QkY2RjsxMTA4IDExNkEgMTFCQTsKK0JGNzA7QkY3MDsxMTA4IDExNkEgMTFCQjtCRjcwOzExMDggMTE2QSAxMUJCOworQkY3MTtCRjcxOzExMDggMTE2QSAxMUJDO0JGNzE7MTEwOCAxMTZBIDExQkM7CitCRjcyO0JGNzI7MTEwOCAxMTZBIDExQkQ7QkY3MjsxMTA4IDExNkEgMTFCRDsKK0JGNzM7QkY3MzsxMTA4IDExNkEgMTFCRTtCRjczOzExMDggMTE2QSAxMUJFOworQkY3NDtCRjc0OzExMDggMTE2QSAxMUJGO0JGNzQ7MTEwOCAxMTZBIDExQkY7CitCRjc1O0JGNzU7MTEwOCAxMTZBIDExQzA7QkY3NTsxMTA4IDExNkEgMTFDMDsKK0JGNzY7QkY3NjsxMTA4IDExNkEgMTFDMTtCRjc2OzExMDggMTE2QSAxMUMxOworQkY3NztCRjc3OzExMDggMTE2QSAxMUMyO0JGNzc7MTEwOCAxMTZBIDExQzI7CitCRjc4O0JGNzg7MTEwOCAxMTZCO0JGNzg7MTEwOCAxMTZCOworQkY3OTtCRjc5OzExMDggMTE2QiAxMUE4O0JGNzk7MTEwOCAxMTZCIDExQTg7CitCRjdBO0JGN0E7MTEwOCAxMTZCIDExQTk7QkY3QTsxMTA4IDExNkIgMTFBOTsKK0JGN0I7QkY3QjsxMTA4IDExNkIgMTFBQTtCRjdCOzExMDggMTE2QiAxMUFBOworQkY3QztCRjdDOzExMDggMTE2QiAxMUFCO0JGN0M7MTEwOCAxMTZCIDExQUI7CitCRjdEO0JGN0Q7MTEwOCAxMTZCIDExQUM7QkY3RDsxMTA4IDExNkIgMTFBQzsKK0JGN0U7QkY3RTsxMTA4IDExNkIgMTFBRDtCRjdFOzExMDggMTE2QiAxMUFEOworQkY3RjtCRjdGOzExMDggMTE2QiAxMUFFO0JGN0Y7MTEwOCAxMTZCIDExQUU7CitCRjgwO0JGODA7MTEwOCAxMTZCIDExQUY7QkY4MDsxMTA4IDExNkIgMTFBRjsKK0JGODE7QkY4MTsxMTA4IDExNkIgMTFCMDtCRjgxOzExMDggMTE2QiAxMUIwOworQkY4MjtCRjgyOzExMDggMTE2QiAxMUIxO0JGODI7MTEwOCAxMTZCIDExQjE7CitCRjgzO0JGODM7MTEwOCAxMTZCIDExQjI7QkY4MzsxMTA4IDExNkIgMTFCMjsKK0JGODQ7QkY4NDsxMTA4IDExNkIgMTFCMztCRjg0OzExMDggMTE2QiAxMUIzOworQkY4NTtCRjg1OzExMDggMTE2QiAxMUI0O0JGODU7MTEwOCAxMTZCIDExQjQ7CitCRjg2O0JGODY7MTEwOCAxMTZCIDExQjU7QkY4NjsxMTA4IDExNkIgMTFCNTsKK0JGODc7QkY4NzsxMTA4IDExNkIgMTFCNjtCRjg3OzExMDggMTE2QiAxMUI2OworQkY4ODtCRjg4OzExMDggMTE2QiAxMUI3O0JGODg7MTEwOCAxMTZCIDExQjc7CitCRjg5O0JGODk7MTEwOCAxMTZCIDExQjg7QkY4OTsxMTA4IDExNkIgMTFCODsKK0JGOEE7QkY4QTsxMTA4IDExNkIgMTFCOTtCRjhBOzExMDggMTE2QiAxMUI5OworQkY4QjtCRjhCOzExMDggMTE2QiAxMUJBO0JGOEI7MTEwOCAxMTZCIDExQkE7CitCRjhDO0JGOEM7MTEwOCAxMTZCIDExQkI7QkY4QzsxMTA4IDExNkIgMTFCQjsKK0JGOEQ7QkY4RDsxMTA4IDExNkIgMTFCQztCRjhEOzExMDggMTE2QiAxMUJDOworQkY4RTtCRjhFOzExMDggMTE2QiAxMUJEO0JGOEU7MTEwOCAxMTZCIDExQkQ7CitCRjhGO0JGOEY7MTEwOCAxMTZCIDExQkU7QkY4RjsxMTA4IDExNkIgMTFCRTsKK0JGOTA7QkY5MDsxMTA4IDExNkIgMTFCRjtCRjkwOzExMDggMTE2QiAxMUJGOworQkY5MTtCRjkxOzExMDggMTE2QiAxMUMwO0JGOTE7MTEwOCAxMTZCIDExQzA7CitCRjkyO0JGOTI7MTEwOCAxMTZCIDExQzE7QkY5MjsxMTA4IDExNkIgMTFDMTsKK0JGOTM7QkY5MzsxMTA4IDExNkIgMTFDMjtCRjkzOzExMDggMTE2QiAxMUMyOworQkY5NDtCRjk0OzExMDggMTE2QztCRjk0OzExMDggMTE2QzsKK0JGOTU7QkY5NTsxMTA4IDExNkMgMTFBODtCRjk1OzExMDggMTE2QyAxMUE4OworQkY5NjtCRjk2OzExMDggMTE2QyAxMUE5O0JGOTY7MTEwOCAxMTZDIDExQTk7CitCRjk3O0JGOTc7MTEwOCAxMTZDIDExQUE7QkY5NzsxMTA4IDExNkMgMTFBQTsKK0JGOTg7QkY5ODsxMTA4IDExNkMgMTFBQjtCRjk4OzExMDggMTE2QyAxMUFCOworQkY5OTtCRjk5OzExMDggMTE2QyAxMUFDO0JGOTk7MTEwOCAxMTZDIDExQUM7CitCRjlBO0JGOUE7MTEwOCAxMTZDIDExQUQ7QkY5QTsxMTA4IDExNkMgMTFBRDsKK0JGOUI7QkY5QjsxMTA4IDExNkMgMTFBRTtCRjlCOzExMDggMTE2QyAxMUFFOworQkY5QztCRjlDOzExMDggMTE2QyAxMUFGO0JGOUM7MTEwOCAxMTZDIDExQUY7CitCRjlEO0JGOUQ7MTEwOCAxMTZDIDExQjA7QkY5RDsxMTA4IDExNkMgMTFCMDsKK0JGOUU7QkY5RTsxMTA4IDExNkMgMTFCMTtCRjlFOzExMDggMTE2QyAxMUIxOworQkY5RjtCRjlGOzExMDggMTE2QyAxMUIyO0JGOUY7MTEwOCAxMTZDIDExQjI7CitCRkEwO0JGQTA7MTEwOCAxMTZDIDExQjM7QkZBMDsxMTA4IDExNkMgMTFCMzsKK0JGQTE7QkZBMTsxMTA4IDExNkMgMTFCNDtCRkExOzExMDggMTE2QyAxMUI0OworQkZBMjtCRkEyOzExMDggMTE2QyAxMUI1O0JGQTI7MTEwOCAxMTZDIDExQjU7CitCRkEzO0JGQTM7MTEwOCAxMTZDIDExQjY7QkZBMzsxMTA4IDExNkMgMTFCNjsKK0JGQTQ7QkZBNDsxMTA4IDExNkMgMTFCNztCRkE0OzExMDggMTE2QyAxMUI3OworQkZBNTtCRkE1OzExMDggMTE2QyAxMUI4O0JGQTU7MTEwOCAxMTZDIDExQjg7CitCRkE2O0JGQTY7MTEwOCAxMTZDIDExQjk7QkZBNjsxMTA4IDExNkMgMTFCOTsKK0JGQTc7QkZBNzsxMTA4IDExNkMgMTFCQTtCRkE3OzExMDggMTE2QyAxMUJBOworQkZBODtCRkE4OzExMDggMTE2QyAxMUJCO0JGQTg7MTEwOCAxMTZDIDExQkI7CitCRkE5O0JGQTk7MTEwOCAxMTZDIDExQkM7QkZBOTsxMTA4IDExNkMgMTFCQzsKK0JGQUE7QkZBQTsxMTA4IDExNkMgMTFCRDtCRkFBOzExMDggMTE2QyAxMUJEOworQkZBQjtCRkFCOzExMDggMTE2QyAxMUJFO0JGQUI7MTEwOCAxMTZDIDExQkU7CitCRkFDO0JGQUM7MTEwOCAxMTZDIDExQkY7QkZBQzsxMTA4IDExNkMgMTFCRjsKK0JGQUQ7QkZBRDsxMTA4IDExNkMgMTFDMDtCRkFEOzExMDggMTE2QyAxMUMwOworQkZBRTtCRkFFOzExMDggMTE2QyAxMUMxO0JGQUU7MTEwOCAxMTZDIDExQzE7CitCRkFGO0JGQUY7MTEwOCAxMTZDIDExQzI7QkZBRjsxMTA4IDExNkMgMTFDMjsKK0JGQjA7QkZCMDsxMTA4IDExNkQ7QkZCMDsxMTA4IDExNkQ7CitCRkIxO0JGQjE7MTEwOCAxMTZEIDExQTg7QkZCMTsxMTA4IDExNkQgMTFBODsKK0JGQjI7QkZCMjsxMTA4IDExNkQgMTFBOTtCRkIyOzExMDggMTE2RCAxMUE5OworQkZCMztCRkIzOzExMDggMTE2RCAxMUFBO0JGQjM7MTEwOCAxMTZEIDExQUE7CitCRkI0O0JGQjQ7MTEwOCAxMTZEIDExQUI7QkZCNDsxMTA4IDExNkQgMTFBQjsKK0JGQjU7QkZCNTsxMTA4IDExNkQgMTFBQztCRkI1OzExMDggMTE2RCAxMUFDOworQkZCNjtCRkI2OzExMDggMTE2RCAxMUFEO0JGQjY7MTEwOCAxMTZEIDExQUQ7CitCRkI3O0JGQjc7MTEwOCAxMTZEIDExQUU7QkZCNzsxMTA4IDExNkQgMTFBRTsKK0JGQjg7QkZCODsxMTA4IDExNkQgMTFBRjtCRkI4OzExMDggMTE2RCAxMUFGOworQkZCOTtCRkI5OzExMDggMTE2RCAxMUIwO0JGQjk7MTEwOCAxMTZEIDExQjA7CitCRkJBO0JGQkE7MTEwOCAxMTZEIDExQjE7QkZCQTsxMTA4IDExNkQgMTFCMTsKK0JGQkI7QkZCQjsxMTA4IDExNkQgMTFCMjtCRkJCOzExMDggMTE2RCAxMUIyOworQkZCQztCRkJDOzExMDggMTE2RCAxMUIzO0JGQkM7MTEwOCAxMTZEIDExQjM7CitCRkJEO0JGQkQ7MTEwOCAxMTZEIDExQjQ7QkZCRDsxMTA4IDExNkQgMTFCNDsKK0JGQkU7QkZCRTsxMTA4IDExNkQgMTFCNTtCRkJFOzExMDggMTE2RCAxMUI1OworQkZCRjtCRkJGOzExMDggMTE2RCAxMUI2O0JGQkY7MTEwOCAxMTZEIDExQjY7CitCRkMwO0JGQzA7MTEwOCAxMTZEIDExQjc7QkZDMDsxMTA4IDExNkQgMTFCNzsKK0JGQzE7QkZDMTsxMTA4IDExNkQgMTFCODtCRkMxOzExMDggMTE2RCAxMUI4OworQkZDMjtCRkMyOzExMDggMTE2RCAxMUI5O0JGQzI7MTEwOCAxMTZEIDExQjk7CitCRkMzO0JGQzM7MTEwOCAxMTZEIDExQkE7QkZDMzsxMTA4IDExNkQgMTFCQTsKK0JGQzQ7QkZDNDsxMTA4IDExNkQgMTFCQjtCRkM0OzExMDggMTE2RCAxMUJCOworQkZDNTtCRkM1OzExMDggMTE2RCAxMUJDO0JGQzU7MTEwOCAxMTZEIDExQkM7CitCRkM2O0JGQzY7MTEwOCAxMTZEIDExQkQ7QkZDNjsxMTA4IDExNkQgMTFCRDsKK0JGQzc7QkZDNzsxMTA4IDExNkQgMTFCRTtCRkM3OzExMDggMTE2RCAxMUJFOworQkZDODtCRkM4OzExMDggMTE2RCAxMUJGO0JGQzg7MTEwOCAxMTZEIDExQkY7CitCRkM5O0JGQzk7MTEwOCAxMTZEIDExQzA7QkZDOTsxMTA4IDExNkQgMTFDMDsKK0JGQ0E7QkZDQTsxMTA4IDExNkQgMTFDMTtCRkNBOzExMDggMTE2RCAxMUMxOworQkZDQjtCRkNCOzExMDggMTE2RCAxMUMyO0JGQ0I7MTEwOCAxMTZEIDExQzI7CitCRkNDO0JGQ0M7MTEwOCAxMTZFO0JGQ0M7MTEwOCAxMTZFOworQkZDRDtCRkNEOzExMDggMTE2RSAxMUE4O0JGQ0Q7MTEwOCAxMTZFIDExQTg7CitCRkNFO0JGQ0U7MTEwOCAxMTZFIDExQTk7QkZDRTsxMTA4IDExNkUgMTFBOTsKK0JGQ0Y7QkZDRjsxMTA4IDExNkUgMTFBQTtCRkNGOzExMDggMTE2RSAxMUFBOworQkZEMDtCRkQwOzExMDggMTE2RSAxMUFCO0JGRDA7MTEwOCAxMTZFIDExQUI7CitCRkQxO0JGRDE7MTEwOCAxMTZFIDExQUM7QkZEMTsxMTA4IDExNkUgMTFBQzsKK0JGRDI7QkZEMjsxMTA4IDExNkUgMTFBRDtCRkQyOzExMDggMTE2RSAxMUFEOworQkZEMztCRkQzOzExMDggMTE2RSAxMUFFO0JGRDM7MTEwOCAxMTZFIDExQUU7CitCRkQ0O0JGRDQ7MTEwOCAxMTZFIDExQUY7QkZENDsxMTA4IDExNkUgMTFBRjsKK0JGRDU7QkZENTsxMTA4IDExNkUgMTFCMDtCRkQ1OzExMDggMTE2RSAxMUIwOworQkZENjtCRkQ2OzExMDggMTE2RSAxMUIxO0JGRDY7MTEwOCAxMTZFIDExQjE7CitCRkQ3O0JGRDc7MTEwOCAxMTZFIDExQjI7QkZENzsxMTA4IDExNkUgMTFCMjsKK0JGRDg7QkZEODsxMTA4IDExNkUgMTFCMztCRkQ4OzExMDggMTE2RSAxMUIzOworQkZEOTtCRkQ5OzExMDggMTE2RSAxMUI0O0JGRDk7MTEwOCAxMTZFIDExQjQ7CitCRkRBO0JGREE7MTEwOCAxMTZFIDExQjU7QkZEQTsxMTA4IDExNkUgMTFCNTsKK0JGREI7QkZEQjsxMTA4IDExNkUgMTFCNjtCRkRCOzExMDggMTE2RSAxMUI2OworQkZEQztCRkRDOzExMDggMTE2RSAxMUI3O0JGREM7MTEwOCAxMTZFIDExQjc7CitCRkREO0JGREQ7MTEwOCAxMTZFIDExQjg7QkZERDsxMTA4IDExNkUgMTFCODsKK0JGREU7QkZERTsxMTA4IDExNkUgMTFCOTtCRkRFOzExMDggMTE2RSAxMUI5OworQkZERjtCRkRGOzExMDggMTE2RSAxMUJBO0JGREY7MTEwOCAxMTZFIDExQkE7CitCRkUwO0JGRTA7MTEwOCAxMTZFIDExQkI7QkZFMDsxMTA4IDExNkUgMTFCQjsKK0JGRTE7QkZFMTsxMTA4IDExNkUgMTFCQztCRkUxOzExMDggMTE2RSAxMUJDOworQkZFMjtCRkUyOzExMDggMTE2RSAxMUJEO0JGRTI7MTEwOCAxMTZFIDExQkQ7CitCRkUzO0JGRTM7MTEwOCAxMTZFIDExQkU7QkZFMzsxMTA4IDExNkUgMTFCRTsKK0JGRTQ7QkZFNDsxMTA4IDExNkUgMTFCRjtCRkU0OzExMDggMTE2RSAxMUJGOworQkZFNTtCRkU1OzExMDggMTE2RSAxMUMwO0JGRTU7MTEwOCAxMTZFIDExQzA7CitCRkU2O0JGRTY7MTEwOCAxMTZFIDExQzE7QkZFNjsxMTA4IDExNkUgMTFDMTsKK0JGRTc7QkZFNzsxMTA4IDExNkUgMTFDMjtCRkU3OzExMDggMTE2RSAxMUMyOworQkZFODtCRkU4OzExMDggMTE2RjtCRkU4OzExMDggMTE2RjsKK0JGRTk7QkZFOTsxMTA4IDExNkYgMTFBODtCRkU5OzExMDggMTE2RiAxMUE4OworQkZFQTtCRkVBOzExMDggMTE2RiAxMUE5O0JGRUE7MTEwOCAxMTZGIDExQTk7CitCRkVCO0JGRUI7MTEwOCAxMTZGIDExQUE7QkZFQjsxMTA4IDExNkYgMTFBQTsKK0JGRUM7QkZFQzsxMTA4IDExNkYgMTFBQjtCRkVDOzExMDggMTE2RiAxMUFCOworQkZFRDtCRkVEOzExMDggMTE2RiAxMUFDO0JGRUQ7MTEwOCAxMTZGIDExQUM7CitCRkVFO0JGRUU7MTEwOCAxMTZGIDExQUQ7QkZFRTsxMTA4IDExNkYgMTFBRDsKK0JGRUY7QkZFRjsxMTA4IDExNkYgMTFBRTtCRkVGOzExMDggMTE2RiAxMUFFOworQkZGMDtCRkYwOzExMDggMTE2RiAxMUFGO0JGRjA7MTEwOCAxMTZGIDExQUY7CitCRkYxO0JGRjE7MTEwOCAxMTZGIDExQjA7QkZGMTsxMTA4IDExNkYgMTFCMDsKK0JGRjI7QkZGMjsxMTA4IDExNkYgMTFCMTtCRkYyOzExMDggMTE2RiAxMUIxOworQkZGMztCRkYzOzExMDggMTE2RiAxMUIyO0JGRjM7MTEwOCAxMTZGIDExQjI7CitCRkY0O0JGRjQ7MTEwOCAxMTZGIDExQjM7QkZGNDsxMTA4IDExNkYgMTFCMzsKK0JGRjU7QkZGNTsxMTA4IDExNkYgMTFCNDtCRkY1OzExMDggMTE2RiAxMUI0OworQkZGNjtCRkY2OzExMDggMTE2RiAxMUI1O0JGRjY7MTEwOCAxMTZGIDExQjU7CitCRkY3O0JGRjc7MTEwOCAxMTZGIDExQjY7QkZGNzsxMTA4IDExNkYgMTFCNjsKK0JGRjg7QkZGODsxMTA4IDExNkYgMTFCNztCRkY4OzExMDggMTE2RiAxMUI3OworQkZGOTtCRkY5OzExMDggMTE2RiAxMUI4O0JGRjk7MTEwOCAxMTZGIDExQjg7CitCRkZBO0JGRkE7MTEwOCAxMTZGIDExQjk7QkZGQTsxMTA4IDExNkYgMTFCOTsKK0JGRkI7QkZGQjsxMTA4IDExNkYgMTFCQTtCRkZCOzExMDggMTE2RiAxMUJBOworQkZGQztCRkZDOzExMDggMTE2RiAxMUJCO0JGRkM7MTEwOCAxMTZGIDExQkI7CitCRkZEO0JGRkQ7MTEwOCAxMTZGIDExQkM7QkZGRDsxMTA4IDExNkYgMTFCQzsKK0JGRkU7QkZGRTsxMTA4IDExNkYgMTFCRDtCRkZFOzExMDggMTE2RiAxMUJEOworQkZGRjtCRkZGOzExMDggMTE2RiAxMUJFO0JGRkY7MTEwOCAxMTZGIDExQkU7CitDMDAwO0MwMDA7MTEwOCAxMTZGIDExQkY7QzAwMDsxMTA4IDExNkYgMTFCRjsKK0MwMDE7QzAwMTsxMTA4IDExNkYgMTFDMDtDMDAxOzExMDggMTE2RiAxMUMwOworQzAwMjtDMDAyOzExMDggMTE2RiAxMUMxO0MwMDI7MTEwOCAxMTZGIDExQzE7CitDMDAzO0MwMDM7MTEwOCAxMTZGIDExQzI7QzAwMzsxMTA4IDExNkYgMTFDMjsKK0MwMDQ7QzAwNDsxMTA4IDExNzA7QzAwNDsxMTA4IDExNzA7CitDMDA1O0MwMDU7MTEwOCAxMTcwIDExQTg7QzAwNTsxMTA4IDExNzAgMTFBODsKK0MwMDY7QzAwNjsxMTA4IDExNzAgMTFBOTtDMDA2OzExMDggMTE3MCAxMUE5OworQzAwNztDMDA3OzExMDggMTE3MCAxMUFBO0MwMDc7MTEwOCAxMTcwIDExQUE7CitDMDA4O0MwMDg7MTEwOCAxMTcwIDExQUI7QzAwODsxMTA4IDExNzAgMTFBQjsKK0MwMDk7QzAwOTsxMTA4IDExNzAgMTFBQztDMDA5OzExMDggMTE3MCAxMUFDOworQzAwQTtDMDBBOzExMDggMTE3MCAxMUFEO0MwMEE7MTEwOCAxMTcwIDExQUQ7CitDMDBCO0MwMEI7MTEwOCAxMTcwIDExQUU7QzAwQjsxMTA4IDExNzAgMTFBRTsKK0MwMEM7QzAwQzsxMTA4IDExNzAgMTFBRjtDMDBDOzExMDggMTE3MCAxMUFGOworQzAwRDtDMDBEOzExMDggMTE3MCAxMUIwO0MwMEQ7MTEwOCAxMTcwIDExQjA7CitDMDBFO0MwMEU7MTEwOCAxMTcwIDExQjE7QzAwRTsxMTA4IDExNzAgMTFCMTsKK0MwMEY7QzAwRjsxMTA4IDExNzAgMTFCMjtDMDBGOzExMDggMTE3MCAxMUIyOworQzAxMDtDMDEwOzExMDggMTE3MCAxMUIzO0MwMTA7MTEwOCAxMTcwIDExQjM7CitDMDExO0MwMTE7MTEwOCAxMTcwIDExQjQ7QzAxMTsxMTA4IDExNzAgMTFCNDsKK0MwMTI7QzAxMjsxMTA4IDExNzAgMTFCNTtDMDEyOzExMDggMTE3MCAxMUI1OworQzAxMztDMDEzOzExMDggMTE3MCAxMUI2O0MwMTM7MTEwOCAxMTcwIDExQjY7CitDMDE0O0MwMTQ7MTEwOCAxMTcwIDExQjc7QzAxNDsxMTA4IDExNzAgMTFCNzsKK0MwMTU7QzAxNTsxMTA4IDExNzAgMTFCODtDMDE1OzExMDggMTE3MCAxMUI4OworQzAxNjtDMDE2OzExMDggMTE3MCAxMUI5O0MwMTY7MTEwOCAxMTcwIDExQjk7CitDMDE3O0MwMTc7MTEwOCAxMTcwIDExQkE7QzAxNzsxMTA4IDExNzAgMTFCQTsKK0MwMTg7QzAxODsxMTA4IDExNzAgMTFCQjtDMDE4OzExMDggMTE3MCAxMUJCOworQzAxOTtDMDE5OzExMDggMTE3MCAxMUJDO0MwMTk7MTEwOCAxMTcwIDExQkM7CitDMDFBO0MwMUE7MTEwOCAxMTcwIDExQkQ7QzAxQTsxMTA4IDExNzAgMTFCRDsKK0MwMUI7QzAxQjsxMTA4IDExNzAgMTFCRTtDMDFCOzExMDggMTE3MCAxMUJFOworQzAxQztDMDFDOzExMDggMTE3MCAxMUJGO0MwMUM7MTEwOCAxMTcwIDExQkY7CitDMDFEO0MwMUQ7MTEwOCAxMTcwIDExQzA7QzAxRDsxMTA4IDExNzAgMTFDMDsKK0MwMUU7QzAxRTsxMTA4IDExNzAgMTFDMTtDMDFFOzExMDggMTE3MCAxMUMxOworQzAxRjtDMDFGOzExMDggMTE3MCAxMUMyO0MwMUY7MTEwOCAxMTcwIDExQzI7CitDMDIwO0MwMjA7MTEwOCAxMTcxO0MwMjA7MTEwOCAxMTcxOworQzAyMTtDMDIxOzExMDggMTE3MSAxMUE4O0MwMjE7MTEwOCAxMTcxIDExQTg7CitDMDIyO0MwMjI7MTEwOCAxMTcxIDExQTk7QzAyMjsxMTA4IDExNzEgMTFBOTsKK0MwMjM7QzAyMzsxMTA4IDExNzEgMTFBQTtDMDIzOzExMDggMTE3MSAxMUFBOworQzAyNDtDMDI0OzExMDggMTE3MSAxMUFCO0MwMjQ7MTEwOCAxMTcxIDExQUI7CitDMDI1O0MwMjU7MTEwOCAxMTcxIDExQUM7QzAyNTsxMTA4IDExNzEgMTFBQzsKK0MwMjY7QzAyNjsxMTA4IDExNzEgMTFBRDtDMDI2OzExMDggMTE3MSAxMUFEOworQzAyNztDMDI3OzExMDggMTE3MSAxMUFFO0MwMjc7MTEwOCAxMTcxIDExQUU7CitDMDI4O0MwMjg7MTEwOCAxMTcxIDExQUY7QzAyODsxMTA4IDExNzEgMTFBRjsKK0MwMjk7QzAyOTsxMTA4IDExNzEgMTFCMDtDMDI5OzExMDggMTE3MSAxMUIwOworQzAyQTtDMDJBOzExMDggMTE3MSAxMUIxO0MwMkE7MTEwOCAxMTcxIDExQjE7CitDMDJCO0MwMkI7MTEwOCAxMTcxIDExQjI7QzAyQjsxMTA4IDExNzEgMTFCMjsKK0MwMkM7QzAyQzsxMTA4IDExNzEgMTFCMztDMDJDOzExMDggMTE3MSAxMUIzOworQzAyRDtDMDJEOzExMDggMTE3MSAxMUI0O0MwMkQ7MTEwOCAxMTcxIDExQjQ7CitDMDJFO0MwMkU7MTEwOCAxMTcxIDExQjU7QzAyRTsxMTA4IDExNzEgMTFCNTsKK0MwMkY7QzAyRjsxMTA4IDExNzEgMTFCNjtDMDJGOzExMDggMTE3MSAxMUI2OworQzAzMDtDMDMwOzExMDggMTE3MSAxMUI3O0MwMzA7MTEwOCAxMTcxIDExQjc7CitDMDMxO0MwMzE7MTEwOCAxMTcxIDExQjg7QzAzMTsxMTA4IDExNzEgMTFCODsKK0MwMzI7QzAzMjsxMTA4IDExNzEgMTFCOTtDMDMyOzExMDggMTE3MSAxMUI5OworQzAzMztDMDMzOzExMDggMTE3MSAxMUJBO0MwMzM7MTEwOCAxMTcxIDExQkE7CitDMDM0O0MwMzQ7MTEwOCAxMTcxIDExQkI7QzAzNDsxMTA4IDExNzEgMTFCQjsKK0MwMzU7QzAzNTsxMTA4IDExNzEgMTFCQztDMDM1OzExMDggMTE3MSAxMUJDOworQzAzNjtDMDM2OzExMDggMTE3MSAxMUJEO0MwMzY7MTEwOCAxMTcxIDExQkQ7CitDMDM3O0MwMzc7MTEwOCAxMTcxIDExQkU7QzAzNzsxMTA4IDExNzEgMTFCRTsKK0MwMzg7QzAzODsxMTA4IDExNzEgMTFCRjtDMDM4OzExMDggMTE3MSAxMUJGOworQzAzOTtDMDM5OzExMDggMTE3MSAxMUMwO0MwMzk7MTEwOCAxMTcxIDExQzA7CitDMDNBO0MwM0E7MTEwOCAxMTcxIDExQzE7QzAzQTsxMTA4IDExNzEgMTFDMTsKK0MwM0I7QzAzQjsxMTA4IDExNzEgMTFDMjtDMDNCOzExMDggMTE3MSAxMUMyOworQzAzQztDMDNDOzExMDggMTE3MjtDMDNDOzExMDggMTE3MjsKK0MwM0Q7QzAzRDsxMTA4IDExNzIgMTFBODtDMDNEOzExMDggMTE3MiAxMUE4OworQzAzRTtDMDNFOzExMDggMTE3MiAxMUE5O0MwM0U7MTEwOCAxMTcyIDExQTk7CitDMDNGO0MwM0Y7MTEwOCAxMTcyIDExQUE7QzAzRjsxMTA4IDExNzIgMTFBQTsKK0MwNDA7QzA0MDsxMTA4IDExNzIgMTFBQjtDMDQwOzExMDggMTE3MiAxMUFCOworQzA0MTtDMDQxOzExMDggMTE3MiAxMUFDO0MwNDE7MTEwOCAxMTcyIDExQUM7CitDMDQyO0MwNDI7MTEwOCAxMTcyIDExQUQ7QzA0MjsxMTA4IDExNzIgMTFBRDsKK0MwNDM7QzA0MzsxMTA4IDExNzIgMTFBRTtDMDQzOzExMDggMTE3MiAxMUFFOworQzA0NDtDMDQ0OzExMDggMTE3MiAxMUFGO0MwNDQ7MTEwOCAxMTcyIDExQUY7CitDMDQ1O0MwNDU7MTEwOCAxMTcyIDExQjA7QzA0NTsxMTA4IDExNzIgMTFCMDsKK0MwNDY7QzA0NjsxMTA4IDExNzIgMTFCMTtDMDQ2OzExMDggMTE3MiAxMUIxOworQzA0NztDMDQ3OzExMDggMTE3MiAxMUIyO0MwNDc7MTEwOCAxMTcyIDExQjI7CitDMDQ4O0MwNDg7MTEwOCAxMTcyIDExQjM7QzA0ODsxMTA4IDExNzIgMTFCMzsKK0MwNDk7QzA0OTsxMTA4IDExNzIgMTFCNDtDMDQ5OzExMDggMTE3MiAxMUI0OworQzA0QTtDMDRBOzExMDggMTE3MiAxMUI1O0MwNEE7MTEwOCAxMTcyIDExQjU7CitDMDRCO0MwNEI7MTEwOCAxMTcyIDExQjY7QzA0QjsxMTA4IDExNzIgMTFCNjsKK0MwNEM7QzA0QzsxMTA4IDExNzIgMTFCNztDMDRDOzExMDggMTE3MiAxMUI3OworQzA0RDtDMDREOzExMDggMTE3MiAxMUI4O0MwNEQ7MTEwOCAxMTcyIDExQjg7CitDMDRFO0MwNEU7MTEwOCAxMTcyIDExQjk7QzA0RTsxMTA4IDExNzIgMTFCOTsKK0MwNEY7QzA0RjsxMTA4IDExNzIgMTFCQTtDMDRGOzExMDggMTE3MiAxMUJBOworQzA1MDtDMDUwOzExMDggMTE3MiAxMUJCO0MwNTA7MTEwOCAxMTcyIDExQkI7CitDMDUxO0MwNTE7MTEwOCAxMTcyIDExQkM7QzA1MTsxMTA4IDExNzIgMTFCQzsKK0MwNTI7QzA1MjsxMTA4IDExNzIgMTFCRDtDMDUyOzExMDggMTE3MiAxMUJEOworQzA1MztDMDUzOzExMDggMTE3MiAxMUJFO0MwNTM7MTEwOCAxMTcyIDExQkU7CitDMDU0O0MwNTQ7MTEwOCAxMTcyIDExQkY7QzA1NDsxMTA4IDExNzIgMTFCRjsKK0MwNTU7QzA1NTsxMTA4IDExNzIgMTFDMDtDMDU1OzExMDggMTE3MiAxMUMwOworQzA1NjtDMDU2OzExMDggMTE3MiAxMUMxO0MwNTY7MTEwOCAxMTcyIDExQzE7CitDMDU3O0MwNTc7MTEwOCAxMTcyIDExQzI7QzA1NzsxMTA4IDExNzIgMTFDMjsKK0MwNTg7QzA1ODsxMTA4IDExNzM7QzA1ODsxMTA4IDExNzM7CitDMDU5O0MwNTk7MTEwOCAxMTczIDExQTg7QzA1OTsxMTA4IDExNzMgMTFBODsKK0MwNUE7QzA1QTsxMTA4IDExNzMgMTFBOTtDMDVBOzExMDggMTE3MyAxMUE5OworQzA1QjtDMDVCOzExMDggMTE3MyAxMUFBO0MwNUI7MTEwOCAxMTczIDExQUE7CitDMDVDO0MwNUM7MTEwOCAxMTczIDExQUI7QzA1QzsxMTA4IDExNzMgMTFBQjsKK0MwNUQ7QzA1RDsxMTA4IDExNzMgMTFBQztDMDVEOzExMDggMTE3MyAxMUFDOworQzA1RTtDMDVFOzExMDggMTE3MyAxMUFEO0MwNUU7MTEwOCAxMTczIDExQUQ7CitDMDVGO0MwNUY7MTEwOCAxMTczIDExQUU7QzA1RjsxMTA4IDExNzMgMTFBRTsKK0MwNjA7QzA2MDsxMTA4IDExNzMgMTFBRjtDMDYwOzExMDggMTE3MyAxMUFGOworQzA2MTtDMDYxOzExMDggMTE3MyAxMUIwO0MwNjE7MTEwOCAxMTczIDExQjA7CitDMDYyO0MwNjI7MTEwOCAxMTczIDExQjE7QzA2MjsxMTA4IDExNzMgMTFCMTsKK0MwNjM7QzA2MzsxMTA4IDExNzMgMTFCMjtDMDYzOzExMDggMTE3MyAxMUIyOworQzA2NDtDMDY0OzExMDggMTE3MyAxMUIzO0MwNjQ7MTEwOCAxMTczIDExQjM7CitDMDY1O0MwNjU7MTEwOCAxMTczIDExQjQ7QzA2NTsxMTA4IDExNzMgMTFCNDsKK0MwNjY7QzA2NjsxMTA4IDExNzMgMTFCNTtDMDY2OzExMDggMTE3MyAxMUI1OworQzA2NztDMDY3OzExMDggMTE3MyAxMUI2O0MwNjc7MTEwOCAxMTczIDExQjY7CitDMDY4O0MwNjg7MTEwOCAxMTczIDExQjc7QzA2ODsxMTA4IDExNzMgMTFCNzsKK0MwNjk7QzA2OTsxMTA4IDExNzMgMTFCODtDMDY5OzExMDggMTE3MyAxMUI4OworQzA2QTtDMDZBOzExMDggMTE3MyAxMUI5O0MwNkE7MTEwOCAxMTczIDExQjk7CitDMDZCO0MwNkI7MTEwOCAxMTczIDExQkE7QzA2QjsxMTA4IDExNzMgMTFCQTsKK0MwNkM7QzA2QzsxMTA4IDExNzMgMTFCQjtDMDZDOzExMDggMTE3MyAxMUJCOworQzA2RDtDMDZEOzExMDggMTE3MyAxMUJDO0MwNkQ7MTEwOCAxMTczIDExQkM7CitDMDZFO0MwNkU7MTEwOCAxMTczIDExQkQ7QzA2RTsxMTA4IDExNzMgMTFCRDsKK0MwNkY7QzA2RjsxMTA4IDExNzMgMTFCRTtDMDZGOzExMDggMTE3MyAxMUJFOworQzA3MDtDMDcwOzExMDggMTE3MyAxMUJGO0MwNzA7MTEwOCAxMTczIDExQkY7CitDMDcxO0MwNzE7MTEwOCAxMTczIDExQzA7QzA3MTsxMTA4IDExNzMgMTFDMDsKK0MwNzI7QzA3MjsxMTA4IDExNzMgMTFDMTtDMDcyOzExMDggMTE3MyAxMUMxOworQzA3MztDMDczOzExMDggMTE3MyAxMUMyO0MwNzM7MTEwOCAxMTczIDExQzI7CitDMDc0O0MwNzQ7MTEwOCAxMTc0O0MwNzQ7MTEwOCAxMTc0OworQzA3NTtDMDc1OzExMDggMTE3NCAxMUE4O0MwNzU7MTEwOCAxMTc0IDExQTg7CitDMDc2O0MwNzY7MTEwOCAxMTc0IDExQTk7QzA3NjsxMTA4IDExNzQgMTFBOTsKK0MwNzc7QzA3NzsxMTA4IDExNzQgMTFBQTtDMDc3OzExMDggMTE3NCAxMUFBOworQzA3ODtDMDc4OzExMDggMTE3NCAxMUFCO0MwNzg7MTEwOCAxMTc0IDExQUI7CitDMDc5O0MwNzk7MTEwOCAxMTc0IDExQUM7QzA3OTsxMTA4IDExNzQgMTFBQzsKK0MwN0E7QzA3QTsxMTA4IDExNzQgMTFBRDtDMDdBOzExMDggMTE3NCAxMUFEOworQzA3QjtDMDdCOzExMDggMTE3NCAxMUFFO0MwN0I7MTEwOCAxMTc0IDExQUU7CitDMDdDO0MwN0M7MTEwOCAxMTc0IDExQUY7QzA3QzsxMTA4IDExNzQgMTFBRjsKK0MwN0Q7QzA3RDsxMTA4IDExNzQgMTFCMDtDMDdEOzExMDggMTE3NCAxMUIwOworQzA3RTtDMDdFOzExMDggMTE3NCAxMUIxO0MwN0U7MTEwOCAxMTc0IDExQjE7CitDMDdGO0MwN0Y7MTEwOCAxMTc0IDExQjI7QzA3RjsxMTA4IDExNzQgMTFCMjsKK0MwODA7QzA4MDsxMTA4IDExNzQgMTFCMztDMDgwOzExMDggMTE3NCAxMUIzOworQzA4MTtDMDgxOzExMDggMTE3NCAxMUI0O0MwODE7MTEwOCAxMTc0IDExQjQ7CitDMDgyO0MwODI7MTEwOCAxMTc0IDExQjU7QzA4MjsxMTA4IDExNzQgMTFCNTsKK0MwODM7QzA4MzsxMTA4IDExNzQgMTFCNjtDMDgzOzExMDggMTE3NCAxMUI2OworQzA4NDtDMDg0OzExMDggMTE3NCAxMUI3O0MwODQ7MTEwOCAxMTc0IDExQjc7CitDMDg1O0MwODU7MTEwOCAxMTc0IDExQjg7QzA4NTsxMTA4IDExNzQgMTFCODsKK0MwODY7QzA4NjsxMTA4IDExNzQgMTFCOTtDMDg2OzExMDggMTE3NCAxMUI5OworQzA4NztDMDg3OzExMDggMTE3NCAxMUJBO0MwODc7MTEwOCAxMTc0IDExQkE7CitDMDg4O0MwODg7MTEwOCAxMTc0IDExQkI7QzA4ODsxMTA4IDExNzQgMTFCQjsKK0MwODk7QzA4OTsxMTA4IDExNzQgMTFCQztDMDg5OzExMDggMTE3NCAxMUJDOworQzA4QTtDMDhBOzExMDggMTE3NCAxMUJEO0MwOEE7MTEwOCAxMTc0IDExQkQ7CitDMDhCO0MwOEI7MTEwOCAxMTc0IDExQkU7QzA4QjsxMTA4IDExNzQgMTFCRTsKK0MwOEM7QzA4QzsxMTA4IDExNzQgMTFCRjtDMDhDOzExMDggMTE3NCAxMUJGOworQzA4RDtDMDhEOzExMDggMTE3NCAxMUMwO0MwOEQ7MTEwOCAxMTc0IDExQzA7CitDMDhFO0MwOEU7MTEwOCAxMTc0IDExQzE7QzA4RTsxMTA4IDExNzQgMTFDMTsKK0MwOEY7QzA4RjsxMTA4IDExNzQgMTFDMjtDMDhGOzExMDggMTE3NCAxMUMyOworQzA5MDtDMDkwOzExMDggMTE3NTtDMDkwOzExMDggMTE3NTsKK0MwOTE7QzA5MTsxMTA4IDExNzUgMTFBODtDMDkxOzExMDggMTE3NSAxMUE4OworQzA5MjtDMDkyOzExMDggMTE3NSAxMUE5O0MwOTI7MTEwOCAxMTc1IDExQTk7CitDMDkzO0MwOTM7MTEwOCAxMTc1IDExQUE7QzA5MzsxMTA4IDExNzUgMTFBQTsKK0MwOTQ7QzA5NDsxMTA4IDExNzUgMTFBQjtDMDk0OzExMDggMTE3NSAxMUFCOworQzA5NTtDMDk1OzExMDggMTE3NSAxMUFDO0MwOTU7MTEwOCAxMTc1IDExQUM7CitDMDk2O0MwOTY7MTEwOCAxMTc1IDExQUQ7QzA5NjsxMTA4IDExNzUgMTFBRDsKK0MwOTc7QzA5NzsxMTA4IDExNzUgMTFBRTtDMDk3OzExMDggMTE3NSAxMUFFOworQzA5ODtDMDk4OzExMDggMTE3NSAxMUFGO0MwOTg7MTEwOCAxMTc1IDExQUY7CitDMDk5O0MwOTk7MTEwOCAxMTc1IDExQjA7QzA5OTsxMTA4IDExNzUgMTFCMDsKK0MwOUE7QzA5QTsxMTA4IDExNzUgMTFCMTtDMDlBOzExMDggMTE3NSAxMUIxOworQzA5QjtDMDlCOzExMDggMTE3NSAxMUIyO0MwOUI7MTEwOCAxMTc1IDExQjI7CitDMDlDO0MwOUM7MTEwOCAxMTc1IDExQjM7QzA5QzsxMTA4IDExNzUgMTFCMzsKK0MwOUQ7QzA5RDsxMTA4IDExNzUgMTFCNDtDMDlEOzExMDggMTE3NSAxMUI0OworQzA5RTtDMDlFOzExMDggMTE3NSAxMUI1O0MwOUU7MTEwOCAxMTc1IDExQjU7CitDMDlGO0MwOUY7MTEwOCAxMTc1IDExQjY7QzA5RjsxMTA4IDExNzUgMTFCNjsKK0MwQTA7QzBBMDsxMTA4IDExNzUgMTFCNztDMEEwOzExMDggMTE3NSAxMUI3OworQzBBMTtDMEExOzExMDggMTE3NSAxMUI4O0MwQTE7MTEwOCAxMTc1IDExQjg7CitDMEEyO0MwQTI7MTEwOCAxMTc1IDExQjk7QzBBMjsxMTA4IDExNzUgMTFCOTsKK0MwQTM7QzBBMzsxMTA4IDExNzUgMTFCQTtDMEEzOzExMDggMTE3NSAxMUJBOworQzBBNDtDMEE0OzExMDggMTE3NSAxMUJCO0MwQTQ7MTEwOCAxMTc1IDExQkI7CitDMEE1O0MwQTU7MTEwOCAxMTc1IDExQkM7QzBBNTsxMTA4IDExNzUgMTFCQzsKK0MwQTY7QzBBNjsxMTA4IDExNzUgMTFCRDtDMEE2OzExMDggMTE3NSAxMUJEOworQzBBNztDMEE3OzExMDggMTE3NSAxMUJFO0MwQTc7MTEwOCAxMTc1IDExQkU7CitDMEE4O0MwQTg7MTEwOCAxMTc1IDExQkY7QzBBODsxMTA4IDExNzUgMTFCRjsKK0MwQTk7QzBBOTsxMTA4IDExNzUgMTFDMDtDMEE5OzExMDggMTE3NSAxMUMwOworQzBBQTtDMEFBOzExMDggMTE3NSAxMUMxO0MwQUE7MTEwOCAxMTc1IDExQzE7CitDMEFCO0MwQUI7MTEwOCAxMTc1IDExQzI7QzBBQjsxMTA4IDExNzUgMTFDMjsKK0MwQUM7QzBBQzsxMTA5IDExNjE7QzBBQzsxMTA5IDExNjE7CitDMEFEO0MwQUQ7MTEwOSAxMTYxIDExQTg7QzBBRDsxMTA5IDExNjEgMTFBODsKK0MwQUU7QzBBRTsxMTA5IDExNjEgMTFBOTtDMEFFOzExMDkgMTE2MSAxMUE5OworQzBBRjtDMEFGOzExMDkgMTE2MSAxMUFBO0MwQUY7MTEwOSAxMTYxIDExQUE7CitDMEIwO0MwQjA7MTEwOSAxMTYxIDExQUI7QzBCMDsxMTA5IDExNjEgMTFBQjsKK0MwQjE7QzBCMTsxMTA5IDExNjEgMTFBQztDMEIxOzExMDkgMTE2MSAxMUFDOworQzBCMjtDMEIyOzExMDkgMTE2MSAxMUFEO0MwQjI7MTEwOSAxMTYxIDExQUQ7CitDMEIzO0MwQjM7MTEwOSAxMTYxIDExQUU7QzBCMzsxMTA5IDExNjEgMTFBRTsKK0MwQjQ7QzBCNDsxMTA5IDExNjEgMTFBRjtDMEI0OzExMDkgMTE2MSAxMUFGOworQzBCNTtDMEI1OzExMDkgMTE2MSAxMUIwO0MwQjU7MTEwOSAxMTYxIDExQjA7CitDMEI2O0MwQjY7MTEwOSAxMTYxIDExQjE7QzBCNjsxMTA5IDExNjEgMTFCMTsKK0MwQjc7QzBCNzsxMTA5IDExNjEgMTFCMjtDMEI3OzExMDkgMTE2MSAxMUIyOworQzBCODtDMEI4OzExMDkgMTE2MSAxMUIzO0MwQjg7MTEwOSAxMTYxIDExQjM7CitDMEI5O0MwQjk7MTEwOSAxMTYxIDExQjQ7QzBCOTsxMTA5IDExNjEgMTFCNDsKK0MwQkE7QzBCQTsxMTA5IDExNjEgMTFCNTtDMEJBOzExMDkgMTE2MSAxMUI1OworQzBCQjtDMEJCOzExMDkgMTE2MSAxMUI2O0MwQkI7MTEwOSAxMTYxIDExQjY7CitDMEJDO0MwQkM7MTEwOSAxMTYxIDExQjc7QzBCQzsxMTA5IDExNjEgMTFCNzsKK0MwQkQ7QzBCRDsxMTA5IDExNjEgMTFCODtDMEJEOzExMDkgMTE2MSAxMUI4OworQzBCRTtDMEJFOzExMDkgMTE2MSAxMUI5O0MwQkU7MTEwOSAxMTYxIDExQjk7CitDMEJGO0MwQkY7MTEwOSAxMTYxIDExQkE7QzBCRjsxMTA5IDExNjEgMTFCQTsKK0MwQzA7QzBDMDsxMTA5IDExNjEgMTFCQjtDMEMwOzExMDkgMTE2MSAxMUJCOworQzBDMTtDMEMxOzExMDkgMTE2MSAxMUJDO0MwQzE7MTEwOSAxMTYxIDExQkM7CitDMEMyO0MwQzI7MTEwOSAxMTYxIDExQkQ7QzBDMjsxMTA5IDExNjEgMTFCRDsKK0MwQzM7QzBDMzsxMTA5IDExNjEgMTFCRTtDMEMzOzExMDkgMTE2MSAxMUJFOworQzBDNDtDMEM0OzExMDkgMTE2MSAxMUJGO0MwQzQ7MTEwOSAxMTYxIDExQkY7CitDMEM1O0MwQzU7MTEwOSAxMTYxIDExQzA7QzBDNTsxMTA5IDExNjEgMTFDMDsKK0MwQzY7QzBDNjsxMTA5IDExNjEgMTFDMTtDMEM2OzExMDkgMTE2MSAxMUMxOworQzBDNztDMEM3OzExMDkgMTE2MSAxMUMyO0MwQzc7MTEwOSAxMTYxIDExQzI7CitDMEM4O0MwQzg7MTEwOSAxMTYyO0MwQzg7MTEwOSAxMTYyOworQzBDOTtDMEM5OzExMDkgMTE2MiAxMUE4O0MwQzk7MTEwOSAxMTYyIDExQTg7CitDMENBO0MwQ0E7MTEwOSAxMTYyIDExQTk7QzBDQTsxMTA5IDExNjIgMTFBOTsKK0MwQ0I7QzBDQjsxMTA5IDExNjIgMTFBQTtDMENCOzExMDkgMTE2MiAxMUFBOworQzBDQztDMENDOzExMDkgMTE2MiAxMUFCO0MwQ0M7MTEwOSAxMTYyIDExQUI7CitDMENEO0MwQ0Q7MTEwOSAxMTYyIDExQUM7QzBDRDsxMTA5IDExNjIgMTFBQzsKK0MwQ0U7QzBDRTsxMTA5IDExNjIgMTFBRDtDMENFOzExMDkgMTE2MiAxMUFEOworQzBDRjtDMENGOzExMDkgMTE2MiAxMUFFO0MwQ0Y7MTEwOSAxMTYyIDExQUU7CitDMEQwO0MwRDA7MTEwOSAxMTYyIDExQUY7QzBEMDsxMTA5IDExNjIgMTFBRjsKK0MwRDE7QzBEMTsxMTA5IDExNjIgMTFCMDtDMEQxOzExMDkgMTE2MiAxMUIwOworQzBEMjtDMEQyOzExMDkgMTE2MiAxMUIxO0MwRDI7MTEwOSAxMTYyIDExQjE7CitDMEQzO0MwRDM7MTEwOSAxMTYyIDExQjI7QzBEMzsxMTA5IDExNjIgMTFCMjsKK0MwRDQ7QzBENDsxMTA5IDExNjIgMTFCMztDMEQ0OzExMDkgMTE2MiAxMUIzOworQzBENTtDMEQ1OzExMDkgMTE2MiAxMUI0O0MwRDU7MTEwOSAxMTYyIDExQjQ7CitDMEQ2O0MwRDY7MTEwOSAxMTYyIDExQjU7QzBENjsxMTA5IDExNjIgMTFCNTsKK0MwRDc7QzBENzsxMTA5IDExNjIgMTFCNjtDMEQ3OzExMDkgMTE2MiAxMUI2OworQzBEODtDMEQ4OzExMDkgMTE2MiAxMUI3O0MwRDg7MTEwOSAxMTYyIDExQjc7CitDMEQ5O0MwRDk7MTEwOSAxMTYyIDExQjg7QzBEOTsxMTA5IDExNjIgMTFCODsKK0MwREE7QzBEQTsxMTA5IDExNjIgMTFCOTtDMERBOzExMDkgMTE2MiAxMUI5OworQzBEQjtDMERCOzExMDkgMTE2MiAxMUJBO0MwREI7MTEwOSAxMTYyIDExQkE7CitDMERDO0MwREM7MTEwOSAxMTYyIDExQkI7QzBEQzsxMTA5IDExNjIgMTFCQjsKK0MwREQ7QzBERDsxMTA5IDExNjIgMTFCQztDMEREOzExMDkgMTE2MiAxMUJDOworQzBERTtDMERFOzExMDkgMTE2MiAxMUJEO0MwREU7MTEwOSAxMTYyIDExQkQ7CitDMERGO0MwREY7MTEwOSAxMTYyIDExQkU7QzBERjsxMTA5IDExNjIgMTFCRTsKK0MwRTA7QzBFMDsxMTA5IDExNjIgMTFCRjtDMEUwOzExMDkgMTE2MiAxMUJGOworQzBFMTtDMEUxOzExMDkgMTE2MiAxMUMwO0MwRTE7MTEwOSAxMTYyIDExQzA7CitDMEUyO0MwRTI7MTEwOSAxMTYyIDExQzE7QzBFMjsxMTA5IDExNjIgMTFDMTsKK0MwRTM7QzBFMzsxMTA5IDExNjIgMTFDMjtDMEUzOzExMDkgMTE2MiAxMUMyOworQzBFNDtDMEU0OzExMDkgMTE2MztDMEU0OzExMDkgMTE2MzsKK0MwRTU7QzBFNTsxMTA5IDExNjMgMTFBODtDMEU1OzExMDkgMTE2MyAxMUE4OworQzBFNjtDMEU2OzExMDkgMTE2MyAxMUE5O0MwRTY7MTEwOSAxMTYzIDExQTk7CitDMEU3O0MwRTc7MTEwOSAxMTYzIDExQUE7QzBFNzsxMTA5IDExNjMgMTFBQTsKK0MwRTg7QzBFODsxMTA5IDExNjMgMTFBQjtDMEU4OzExMDkgMTE2MyAxMUFCOworQzBFOTtDMEU5OzExMDkgMTE2MyAxMUFDO0MwRTk7MTEwOSAxMTYzIDExQUM7CitDMEVBO0MwRUE7MTEwOSAxMTYzIDExQUQ7QzBFQTsxMTA5IDExNjMgMTFBRDsKK0MwRUI7QzBFQjsxMTA5IDExNjMgMTFBRTtDMEVCOzExMDkgMTE2MyAxMUFFOworQzBFQztDMEVDOzExMDkgMTE2MyAxMUFGO0MwRUM7MTEwOSAxMTYzIDExQUY7CitDMEVEO0MwRUQ7MTEwOSAxMTYzIDExQjA7QzBFRDsxMTA5IDExNjMgMTFCMDsKK0MwRUU7QzBFRTsxMTA5IDExNjMgMTFCMTtDMEVFOzExMDkgMTE2MyAxMUIxOworQzBFRjtDMEVGOzExMDkgMTE2MyAxMUIyO0MwRUY7MTEwOSAxMTYzIDExQjI7CitDMEYwO0MwRjA7MTEwOSAxMTYzIDExQjM7QzBGMDsxMTA5IDExNjMgMTFCMzsKK0MwRjE7QzBGMTsxMTA5IDExNjMgMTFCNDtDMEYxOzExMDkgMTE2MyAxMUI0OworQzBGMjtDMEYyOzExMDkgMTE2MyAxMUI1O0MwRjI7MTEwOSAxMTYzIDExQjU7CitDMEYzO0MwRjM7MTEwOSAxMTYzIDExQjY7QzBGMzsxMTA5IDExNjMgMTFCNjsKK0MwRjQ7QzBGNDsxMTA5IDExNjMgMTFCNztDMEY0OzExMDkgMTE2MyAxMUI3OworQzBGNTtDMEY1OzExMDkgMTE2MyAxMUI4O0MwRjU7MTEwOSAxMTYzIDExQjg7CitDMEY2O0MwRjY7MTEwOSAxMTYzIDExQjk7QzBGNjsxMTA5IDExNjMgMTFCOTsKK0MwRjc7QzBGNzsxMTA5IDExNjMgMTFCQTtDMEY3OzExMDkgMTE2MyAxMUJBOworQzBGODtDMEY4OzExMDkgMTE2MyAxMUJCO0MwRjg7MTEwOSAxMTYzIDExQkI7CitDMEY5O0MwRjk7MTEwOSAxMTYzIDExQkM7QzBGOTsxMTA5IDExNjMgMTFCQzsKK0MwRkE7QzBGQTsxMTA5IDExNjMgMTFCRDtDMEZBOzExMDkgMTE2MyAxMUJEOworQzBGQjtDMEZCOzExMDkgMTE2MyAxMUJFO0MwRkI7MTEwOSAxMTYzIDExQkU7CitDMEZDO0MwRkM7MTEwOSAxMTYzIDExQkY7QzBGQzsxMTA5IDExNjMgMTFCRjsKK0MwRkQ7QzBGRDsxMTA5IDExNjMgMTFDMDtDMEZEOzExMDkgMTE2MyAxMUMwOworQzBGRTtDMEZFOzExMDkgMTE2MyAxMUMxO0MwRkU7MTEwOSAxMTYzIDExQzE7CitDMEZGO0MwRkY7MTEwOSAxMTYzIDExQzI7QzBGRjsxMTA5IDExNjMgMTFDMjsKK0MxMDA7QzEwMDsxMTA5IDExNjQ7QzEwMDsxMTA5IDExNjQ7CitDMTAxO0MxMDE7MTEwOSAxMTY0IDExQTg7QzEwMTsxMTA5IDExNjQgMTFBODsKK0MxMDI7QzEwMjsxMTA5IDExNjQgMTFBOTtDMTAyOzExMDkgMTE2NCAxMUE5OworQzEwMztDMTAzOzExMDkgMTE2NCAxMUFBO0MxMDM7MTEwOSAxMTY0IDExQUE7CitDMTA0O0MxMDQ7MTEwOSAxMTY0IDExQUI7QzEwNDsxMTA5IDExNjQgMTFBQjsKK0MxMDU7QzEwNTsxMTA5IDExNjQgMTFBQztDMTA1OzExMDkgMTE2NCAxMUFDOworQzEwNjtDMTA2OzExMDkgMTE2NCAxMUFEO0MxMDY7MTEwOSAxMTY0IDExQUQ7CitDMTA3O0MxMDc7MTEwOSAxMTY0IDExQUU7QzEwNzsxMTA5IDExNjQgMTFBRTsKK0MxMDg7QzEwODsxMTA5IDExNjQgMTFBRjtDMTA4OzExMDkgMTE2NCAxMUFGOworQzEwOTtDMTA5OzExMDkgMTE2NCAxMUIwO0MxMDk7MTEwOSAxMTY0IDExQjA7CitDMTBBO0MxMEE7MTEwOSAxMTY0IDExQjE7QzEwQTsxMTA5IDExNjQgMTFCMTsKK0MxMEI7QzEwQjsxMTA5IDExNjQgMTFCMjtDMTBCOzExMDkgMTE2NCAxMUIyOworQzEwQztDMTBDOzExMDkgMTE2NCAxMUIzO0MxMEM7MTEwOSAxMTY0IDExQjM7CitDMTBEO0MxMEQ7MTEwOSAxMTY0IDExQjQ7QzEwRDsxMTA5IDExNjQgMTFCNDsKK0MxMEU7QzEwRTsxMTA5IDExNjQgMTFCNTtDMTBFOzExMDkgMTE2NCAxMUI1OworQzEwRjtDMTBGOzExMDkgMTE2NCAxMUI2O0MxMEY7MTEwOSAxMTY0IDExQjY7CitDMTEwO0MxMTA7MTEwOSAxMTY0IDExQjc7QzExMDsxMTA5IDExNjQgMTFCNzsKK0MxMTE7QzExMTsxMTA5IDExNjQgMTFCODtDMTExOzExMDkgMTE2NCAxMUI4OworQzExMjtDMTEyOzExMDkgMTE2NCAxMUI5O0MxMTI7MTEwOSAxMTY0IDExQjk7CitDMTEzO0MxMTM7MTEwOSAxMTY0IDExQkE7QzExMzsxMTA5IDExNjQgMTFCQTsKK0MxMTQ7QzExNDsxMTA5IDExNjQgMTFCQjtDMTE0OzExMDkgMTE2NCAxMUJCOworQzExNTtDMTE1OzExMDkgMTE2NCAxMUJDO0MxMTU7MTEwOSAxMTY0IDExQkM7CitDMTE2O0MxMTY7MTEwOSAxMTY0IDExQkQ7QzExNjsxMTA5IDExNjQgMTFCRDsKK0MxMTc7QzExNzsxMTA5IDExNjQgMTFCRTtDMTE3OzExMDkgMTE2NCAxMUJFOworQzExODtDMTE4OzExMDkgMTE2NCAxMUJGO0MxMTg7MTEwOSAxMTY0IDExQkY7CitDMTE5O0MxMTk7MTEwOSAxMTY0IDExQzA7QzExOTsxMTA5IDExNjQgMTFDMDsKK0MxMUE7QzExQTsxMTA5IDExNjQgMTFDMTtDMTFBOzExMDkgMTE2NCAxMUMxOworQzExQjtDMTFCOzExMDkgMTE2NCAxMUMyO0MxMUI7MTEwOSAxMTY0IDExQzI7CitDMTFDO0MxMUM7MTEwOSAxMTY1O0MxMUM7MTEwOSAxMTY1OworQzExRDtDMTFEOzExMDkgMTE2NSAxMUE4O0MxMUQ7MTEwOSAxMTY1IDExQTg7CitDMTFFO0MxMUU7MTEwOSAxMTY1IDExQTk7QzExRTsxMTA5IDExNjUgMTFBOTsKK0MxMUY7QzExRjsxMTA5IDExNjUgMTFBQTtDMTFGOzExMDkgMTE2NSAxMUFBOworQzEyMDtDMTIwOzExMDkgMTE2NSAxMUFCO0MxMjA7MTEwOSAxMTY1IDExQUI7CitDMTIxO0MxMjE7MTEwOSAxMTY1IDExQUM7QzEyMTsxMTA5IDExNjUgMTFBQzsKK0MxMjI7QzEyMjsxMTA5IDExNjUgMTFBRDtDMTIyOzExMDkgMTE2NSAxMUFEOworQzEyMztDMTIzOzExMDkgMTE2NSAxMUFFO0MxMjM7MTEwOSAxMTY1IDExQUU7CitDMTI0O0MxMjQ7MTEwOSAxMTY1IDExQUY7QzEyNDsxMTA5IDExNjUgMTFBRjsKK0MxMjU7QzEyNTsxMTA5IDExNjUgMTFCMDtDMTI1OzExMDkgMTE2NSAxMUIwOworQzEyNjtDMTI2OzExMDkgMTE2NSAxMUIxO0MxMjY7MTEwOSAxMTY1IDExQjE7CitDMTI3O0MxMjc7MTEwOSAxMTY1IDExQjI7QzEyNzsxMTA5IDExNjUgMTFCMjsKK0MxMjg7QzEyODsxMTA5IDExNjUgMTFCMztDMTI4OzExMDkgMTE2NSAxMUIzOworQzEyOTtDMTI5OzExMDkgMTE2NSAxMUI0O0MxMjk7MTEwOSAxMTY1IDExQjQ7CitDMTJBO0MxMkE7MTEwOSAxMTY1IDExQjU7QzEyQTsxMTA5IDExNjUgMTFCNTsKK0MxMkI7QzEyQjsxMTA5IDExNjUgMTFCNjtDMTJCOzExMDkgMTE2NSAxMUI2OworQzEyQztDMTJDOzExMDkgMTE2NSAxMUI3O0MxMkM7MTEwOSAxMTY1IDExQjc7CitDMTJEO0MxMkQ7MTEwOSAxMTY1IDExQjg7QzEyRDsxMTA5IDExNjUgMTFCODsKK0MxMkU7QzEyRTsxMTA5IDExNjUgMTFCOTtDMTJFOzExMDkgMTE2NSAxMUI5OworQzEyRjtDMTJGOzExMDkgMTE2NSAxMUJBO0MxMkY7MTEwOSAxMTY1IDExQkE7CitDMTMwO0MxMzA7MTEwOSAxMTY1IDExQkI7QzEzMDsxMTA5IDExNjUgMTFCQjsKK0MxMzE7QzEzMTsxMTA5IDExNjUgMTFCQztDMTMxOzExMDkgMTE2NSAxMUJDOworQzEzMjtDMTMyOzExMDkgMTE2NSAxMUJEO0MxMzI7MTEwOSAxMTY1IDExQkQ7CitDMTMzO0MxMzM7MTEwOSAxMTY1IDExQkU7QzEzMzsxMTA5IDExNjUgMTFCRTsKK0MxMzQ7QzEzNDsxMTA5IDExNjUgMTFCRjtDMTM0OzExMDkgMTE2NSAxMUJGOworQzEzNTtDMTM1OzExMDkgMTE2NSAxMUMwO0MxMzU7MTEwOSAxMTY1IDExQzA7CitDMTM2O0MxMzY7MTEwOSAxMTY1IDExQzE7QzEzNjsxMTA5IDExNjUgMTFDMTsKK0MxMzc7QzEzNzsxMTA5IDExNjUgMTFDMjtDMTM3OzExMDkgMTE2NSAxMUMyOworQzEzODtDMTM4OzExMDkgMTE2NjtDMTM4OzExMDkgMTE2NjsKK0MxMzk7QzEzOTsxMTA5IDExNjYgMTFBODtDMTM5OzExMDkgMTE2NiAxMUE4OworQzEzQTtDMTNBOzExMDkgMTE2NiAxMUE5O0MxM0E7MTEwOSAxMTY2IDExQTk7CitDMTNCO0MxM0I7MTEwOSAxMTY2IDExQUE7QzEzQjsxMTA5IDExNjYgMTFBQTsKK0MxM0M7QzEzQzsxMTA5IDExNjYgMTFBQjtDMTNDOzExMDkgMTE2NiAxMUFCOworQzEzRDtDMTNEOzExMDkgMTE2NiAxMUFDO0MxM0Q7MTEwOSAxMTY2IDExQUM7CitDMTNFO0MxM0U7MTEwOSAxMTY2IDExQUQ7QzEzRTsxMTA5IDExNjYgMTFBRDsKK0MxM0Y7QzEzRjsxMTA5IDExNjYgMTFBRTtDMTNGOzExMDkgMTE2NiAxMUFFOworQzE0MDtDMTQwOzExMDkgMTE2NiAxMUFGO0MxNDA7MTEwOSAxMTY2IDExQUY7CitDMTQxO0MxNDE7MTEwOSAxMTY2IDExQjA7QzE0MTsxMTA5IDExNjYgMTFCMDsKK0MxNDI7QzE0MjsxMTA5IDExNjYgMTFCMTtDMTQyOzExMDkgMTE2NiAxMUIxOworQzE0MztDMTQzOzExMDkgMTE2NiAxMUIyO0MxNDM7MTEwOSAxMTY2IDExQjI7CitDMTQ0O0MxNDQ7MTEwOSAxMTY2IDExQjM7QzE0NDsxMTA5IDExNjYgMTFCMzsKK0MxNDU7QzE0NTsxMTA5IDExNjYgMTFCNDtDMTQ1OzExMDkgMTE2NiAxMUI0OworQzE0NjtDMTQ2OzExMDkgMTE2NiAxMUI1O0MxNDY7MTEwOSAxMTY2IDExQjU7CitDMTQ3O0MxNDc7MTEwOSAxMTY2IDExQjY7QzE0NzsxMTA5IDExNjYgMTFCNjsKK0MxNDg7QzE0ODsxMTA5IDExNjYgMTFCNztDMTQ4OzExMDkgMTE2NiAxMUI3OworQzE0OTtDMTQ5OzExMDkgMTE2NiAxMUI4O0MxNDk7MTEwOSAxMTY2IDExQjg7CitDMTRBO0MxNEE7MTEwOSAxMTY2IDExQjk7QzE0QTsxMTA5IDExNjYgMTFCOTsKK0MxNEI7QzE0QjsxMTA5IDExNjYgMTFCQTtDMTRCOzExMDkgMTE2NiAxMUJBOworQzE0QztDMTRDOzExMDkgMTE2NiAxMUJCO0MxNEM7MTEwOSAxMTY2IDExQkI7CitDMTREO0MxNEQ7MTEwOSAxMTY2IDExQkM7QzE0RDsxMTA5IDExNjYgMTFCQzsKK0MxNEU7QzE0RTsxMTA5IDExNjYgMTFCRDtDMTRFOzExMDkgMTE2NiAxMUJEOworQzE0RjtDMTRGOzExMDkgMTE2NiAxMUJFO0MxNEY7MTEwOSAxMTY2IDExQkU7CitDMTUwO0MxNTA7MTEwOSAxMTY2IDExQkY7QzE1MDsxMTA5IDExNjYgMTFCRjsKK0MxNTE7QzE1MTsxMTA5IDExNjYgMTFDMDtDMTUxOzExMDkgMTE2NiAxMUMwOworQzE1MjtDMTUyOzExMDkgMTE2NiAxMUMxO0MxNTI7MTEwOSAxMTY2IDExQzE7CitDMTUzO0MxNTM7MTEwOSAxMTY2IDExQzI7QzE1MzsxMTA5IDExNjYgMTFDMjsKK0MxNTQ7QzE1NDsxMTA5IDExNjc7QzE1NDsxMTA5IDExNjc7CitDMTU1O0MxNTU7MTEwOSAxMTY3IDExQTg7QzE1NTsxMTA5IDExNjcgMTFBODsKK0MxNTY7QzE1NjsxMTA5IDExNjcgMTFBOTtDMTU2OzExMDkgMTE2NyAxMUE5OworQzE1NztDMTU3OzExMDkgMTE2NyAxMUFBO0MxNTc7MTEwOSAxMTY3IDExQUE7CitDMTU4O0MxNTg7MTEwOSAxMTY3IDExQUI7QzE1ODsxMTA5IDExNjcgMTFBQjsKK0MxNTk7QzE1OTsxMTA5IDExNjcgMTFBQztDMTU5OzExMDkgMTE2NyAxMUFDOworQzE1QTtDMTVBOzExMDkgMTE2NyAxMUFEO0MxNUE7MTEwOSAxMTY3IDExQUQ7CitDMTVCO0MxNUI7MTEwOSAxMTY3IDExQUU7QzE1QjsxMTA5IDExNjcgMTFBRTsKK0MxNUM7QzE1QzsxMTA5IDExNjcgMTFBRjtDMTVDOzExMDkgMTE2NyAxMUFGOworQzE1RDtDMTVEOzExMDkgMTE2NyAxMUIwO0MxNUQ7MTEwOSAxMTY3IDExQjA7CitDMTVFO0MxNUU7MTEwOSAxMTY3IDExQjE7QzE1RTsxMTA5IDExNjcgMTFCMTsKK0MxNUY7QzE1RjsxMTA5IDExNjcgMTFCMjtDMTVGOzExMDkgMTE2NyAxMUIyOworQzE2MDtDMTYwOzExMDkgMTE2NyAxMUIzO0MxNjA7MTEwOSAxMTY3IDExQjM7CitDMTYxO0MxNjE7MTEwOSAxMTY3IDExQjQ7QzE2MTsxMTA5IDExNjcgMTFCNDsKK0MxNjI7QzE2MjsxMTA5IDExNjcgMTFCNTtDMTYyOzExMDkgMTE2NyAxMUI1OworQzE2MztDMTYzOzExMDkgMTE2NyAxMUI2O0MxNjM7MTEwOSAxMTY3IDExQjY7CitDMTY0O0MxNjQ7MTEwOSAxMTY3IDExQjc7QzE2NDsxMTA5IDExNjcgMTFCNzsKK0MxNjU7QzE2NTsxMTA5IDExNjcgMTFCODtDMTY1OzExMDkgMTE2NyAxMUI4OworQzE2NjtDMTY2OzExMDkgMTE2NyAxMUI5O0MxNjY7MTEwOSAxMTY3IDExQjk7CitDMTY3O0MxNjc7MTEwOSAxMTY3IDExQkE7QzE2NzsxMTA5IDExNjcgMTFCQTsKK0MxNjg7QzE2ODsxMTA5IDExNjcgMTFCQjtDMTY4OzExMDkgMTE2NyAxMUJCOworQzE2OTtDMTY5OzExMDkgMTE2NyAxMUJDO0MxNjk7MTEwOSAxMTY3IDExQkM7CitDMTZBO0MxNkE7MTEwOSAxMTY3IDExQkQ7QzE2QTsxMTA5IDExNjcgMTFCRDsKK0MxNkI7QzE2QjsxMTA5IDExNjcgMTFCRTtDMTZCOzExMDkgMTE2NyAxMUJFOworQzE2QztDMTZDOzExMDkgMTE2NyAxMUJGO0MxNkM7MTEwOSAxMTY3IDExQkY7CitDMTZEO0MxNkQ7MTEwOSAxMTY3IDExQzA7QzE2RDsxMTA5IDExNjcgMTFDMDsKK0MxNkU7QzE2RTsxMTA5IDExNjcgMTFDMTtDMTZFOzExMDkgMTE2NyAxMUMxOworQzE2RjtDMTZGOzExMDkgMTE2NyAxMUMyO0MxNkY7MTEwOSAxMTY3IDExQzI7CitDMTcwO0MxNzA7MTEwOSAxMTY4O0MxNzA7MTEwOSAxMTY4OworQzE3MTtDMTcxOzExMDkgMTE2OCAxMUE4O0MxNzE7MTEwOSAxMTY4IDExQTg7CitDMTcyO0MxNzI7MTEwOSAxMTY4IDExQTk7QzE3MjsxMTA5IDExNjggMTFBOTsKK0MxNzM7QzE3MzsxMTA5IDExNjggMTFBQTtDMTczOzExMDkgMTE2OCAxMUFBOworQzE3NDtDMTc0OzExMDkgMTE2OCAxMUFCO0MxNzQ7MTEwOSAxMTY4IDExQUI7CitDMTc1O0MxNzU7MTEwOSAxMTY4IDExQUM7QzE3NTsxMTA5IDExNjggMTFBQzsKK0MxNzY7QzE3NjsxMTA5IDExNjggMTFBRDtDMTc2OzExMDkgMTE2OCAxMUFEOworQzE3NztDMTc3OzExMDkgMTE2OCAxMUFFO0MxNzc7MTEwOSAxMTY4IDExQUU7CitDMTc4O0MxNzg7MTEwOSAxMTY4IDExQUY7QzE3ODsxMTA5IDExNjggMTFBRjsKK0MxNzk7QzE3OTsxMTA5IDExNjggMTFCMDtDMTc5OzExMDkgMTE2OCAxMUIwOworQzE3QTtDMTdBOzExMDkgMTE2OCAxMUIxO0MxN0E7MTEwOSAxMTY4IDExQjE7CitDMTdCO0MxN0I7MTEwOSAxMTY4IDExQjI7QzE3QjsxMTA5IDExNjggMTFCMjsKK0MxN0M7QzE3QzsxMTA5IDExNjggMTFCMztDMTdDOzExMDkgMTE2OCAxMUIzOworQzE3RDtDMTdEOzExMDkgMTE2OCAxMUI0O0MxN0Q7MTEwOSAxMTY4IDExQjQ7CitDMTdFO0MxN0U7MTEwOSAxMTY4IDExQjU7QzE3RTsxMTA5IDExNjggMTFCNTsKK0MxN0Y7QzE3RjsxMTA5IDExNjggMTFCNjtDMTdGOzExMDkgMTE2OCAxMUI2OworQzE4MDtDMTgwOzExMDkgMTE2OCAxMUI3O0MxODA7MTEwOSAxMTY4IDExQjc7CitDMTgxO0MxODE7MTEwOSAxMTY4IDExQjg7QzE4MTsxMTA5IDExNjggMTFCODsKK0MxODI7QzE4MjsxMTA5IDExNjggMTFCOTtDMTgyOzExMDkgMTE2OCAxMUI5OworQzE4MztDMTgzOzExMDkgMTE2OCAxMUJBO0MxODM7MTEwOSAxMTY4IDExQkE7CitDMTg0O0MxODQ7MTEwOSAxMTY4IDExQkI7QzE4NDsxMTA5IDExNjggMTFCQjsKK0MxODU7QzE4NTsxMTA5IDExNjggMTFCQztDMTg1OzExMDkgMTE2OCAxMUJDOworQzE4NjtDMTg2OzExMDkgMTE2OCAxMUJEO0MxODY7MTEwOSAxMTY4IDExQkQ7CitDMTg3O0MxODc7MTEwOSAxMTY4IDExQkU7QzE4NzsxMTA5IDExNjggMTFCRTsKK0MxODg7QzE4ODsxMTA5IDExNjggMTFCRjtDMTg4OzExMDkgMTE2OCAxMUJGOworQzE4OTtDMTg5OzExMDkgMTE2OCAxMUMwO0MxODk7MTEwOSAxMTY4IDExQzA7CitDMThBO0MxOEE7MTEwOSAxMTY4IDExQzE7QzE4QTsxMTA5IDExNjggMTFDMTsKK0MxOEI7QzE4QjsxMTA5IDExNjggMTFDMjtDMThCOzExMDkgMTE2OCAxMUMyOworQzE4QztDMThDOzExMDkgMTE2OTtDMThDOzExMDkgMTE2OTsKK0MxOEQ7QzE4RDsxMTA5IDExNjkgMTFBODtDMThEOzExMDkgMTE2OSAxMUE4OworQzE4RTtDMThFOzExMDkgMTE2OSAxMUE5O0MxOEU7MTEwOSAxMTY5IDExQTk7CitDMThGO0MxOEY7MTEwOSAxMTY5IDExQUE7QzE4RjsxMTA5IDExNjkgMTFBQTsKK0MxOTA7QzE5MDsxMTA5IDExNjkgMTFBQjtDMTkwOzExMDkgMTE2OSAxMUFCOworQzE5MTtDMTkxOzExMDkgMTE2OSAxMUFDO0MxOTE7MTEwOSAxMTY5IDExQUM7CitDMTkyO0MxOTI7MTEwOSAxMTY5IDExQUQ7QzE5MjsxMTA5IDExNjkgMTFBRDsKK0MxOTM7QzE5MzsxMTA5IDExNjkgMTFBRTtDMTkzOzExMDkgMTE2OSAxMUFFOworQzE5NDtDMTk0OzExMDkgMTE2OSAxMUFGO0MxOTQ7MTEwOSAxMTY5IDExQUY7CitDMTk1O0MxOTU7MTEwOSAxMTY5IDExQjA7QzE5NTsxMTA5IDExNjkgMTFCMDsKK0MxOTY7QzE5NjsxMTA5IDExNjkgMTFCMTtDMTk2OzExMDkgMTE2OSAxMUIxOworQzE5NztDMTk3OzExMDkgMTE2OSAxMUIyO0MxOTc7MTEwOSAxMTY5IDExQjI7CitDMTk4O0MxOTg7MTEwOSAxMTY5IDExQjM7QzE5ODsxMTA5IDExNjkgMTFCMzsKK0MxOTk7QzE5OTsxMTA5IDExNjkgMTFCNDtDMTk5OzExMDkgMTE2OSAxMUI0OworQzE5QTtDMTlBOzExMDkgMTE2OSAxMUI1O0MxOUE7MTEwOSAxMTY5IDExQjU7CitDMTlCO0MxOUI7MTEwOSAxMTY5IDExQjY7QzE5QjsxMTA5IDExNjkgMTFCNjsKK0MxOUM7QzE5QzsxMTA5IDExNjkgMTFCNztDMTlDOzExMDkgMTE2OSAxMUI3OworQzE5RDtDMTlEOzExMDkgMTE2OSAxMUI4O0MxOUQ7MTEwOSAxMTY5IDExQjg7CitDMTlFO0MxOUU7MTEwOSAxMTY5IDExQjk7QzE5RTsxMTA5IDExNjkgMTFCOTsKK0MxOUY7QzE5RjsxMTA5IDExNjkgMTFCQTtDMTlGOzExMDkgMTE2OSAxMUJBOworQzFBMDtDMUEwOzExMDkgMTE2OSAxMUJCO0MxQTA7MTEwOSAxMTY5IDExQkI7CitDMUExO0MxQTE7MTEwOSAxMTY5IDExQkM7QzFBMTsxMTA5IDExNjkgMTFCQzsKK0MxQTI7QzFBMjsxMTA5IDExNjkgMTFCRDtDMUEyOzExMDkgMTE2OSAxMUJEOworQzFBMztDMUEzOzExMDkgMTE2OSAxMUJFO0MxQTM7MTEwOSAxMTY5IDExQkU7CitDMUE0O0MxQTQ7MTEwOSAxMTY5IDExQkY7QzFBNDsxMTA5IDExNjkgMTFCRjsKK0MxQTU7QzFBNTsxMTA5IDExNjkgMTFDMDtDMUE1OzExMDkgMTE2OSAxMUMwOworQzFBNjtDMUE2OzExMDkgMTE2OSAxMUMxO0MxQTY7MTEwOSAxMTY5IDExQzE7CitDMUE3O0MxQTc7MTEwOSAxMTY5IDExQzI7QzFBNzsxMTA5IDExNjkgMTFDMjsKK0MxQTg7QzFBODsxMTA5IDExNkE7QzFBODsxMTA5IDExNkE7CitDMUE5O0MxQTk7MTEwOSAxMTZBIDExQTg7QzFBOTsxMTA5IDExNkEgMTFBODsKK0MxQUE7QzFBQTsxMTA5IDExNkEgMTFBOTtDMUFBOzExMDkgMTE2QSAxMUE5OworQzFBQjtDMUFCOzExMDkgMTE2QSAxMUFBO0MxQUI7MTEwOSAxMTZBIDExQUE7CitDMUFDO0MxQUM7MTEwOSAxMTZBIDExQUI7QzFBQzsxMTA5IDExNkEgMTFBQjsKK0MxQUQ7QzFBRDsxMTA5IDExNkEgMTFBQztDMUFEOzExMDkgMTE2QSAxMUFDOworQzFBRTtDMUFFOzExMDkgMTE2QSAxMUFEO0MxQUU7MTEwOSAxMTZBIDExQUQ7CitDMUFGO0MxQUY7MTEwOSAxMTZBIDExQUU7QzFBRjsxMTA5IDExNkEgMTFBRTsKK0MxQjA7QzFCMDsxMTA5IDExNkEgMTFBRjtDMUIwOzExMDkgMTE2QSAxMUFGOworQzFCMTtDMUIxOzExMDkgMTE2QSAxMUIwO0MxQjE7MTEwOSAxMTZBIDExQjA7CitDMUIyO0MxQjI7MTEwOSAxMTZBIDExQjE7QzFCMjsxMTA5IDExNkEgMTFCMTsKK0MxQjM7QzFCMzsxMTA5IDExNkEgMTFCMjtDMUIzOzExMDkgMTE2QSAxMUIyOworQzFCNDtDMUI0OzExMDkgMTE2QSAxMUIzO0MxQjQ7MTEwOSAxMTZBIDExQjM7CitDMUI1O0MxQjU7MTEwOSAxMTZBIDExQjQ7QzFCNTsxMTA5IDExNkEgMTFCNDsKK0MxQjY7QzFCNjsxMTA5IDExNkEgMTFCNTtDMUI2OzExMDkgMTE2QSAxMUI1OworQzFCNztDMUI3OzExMDkgMTE2QSAxMUI2O0MxQjc7MTEwOSAxMTZBIDExQjY7CitDMUI4O0MxQjg7MTEwOSAxMTZBIDExQjc7QzFCODsxMTA5IDExNkEgMTFCNzsKK0MxQjk7QzFCOTsxMTA5IDExNkEgMTFCODtDMUI5OzExMDkgMTE2QSAxMUI4OworQzFCQTtDMUJBOzExMDkgMTE2QSAxMUI5O0MxQkE7MTEwOSAxMTZBIDExQjk7CitDMUJCO0MxQkI7MTEwOSAxMTZBIDExQkE7QzFCQjsxMTA5IDExNkEgMTFCQTsKK0MxQkM7QzFCQzsxMTA5IDExNkEgMTFCQjtDMUJDOzExMDkgMTE2QSAxMUJCOworQzFCRDtDMUJEOzExMDkgMTE2QSAxMUJDO0MxQkQ7MTEwOSAxMTZBIDExQkM7CitDMUJFO0MxQkU7MTEwOSAxMTZBIDExQkQ7QzFCRTsxMTA5IDExNkEgMTFCRDsKK0MxQkY7QzFCRjsxMTA5IDExNkEgMTFCRTtDMUJGOzExMDkgMTE2QSAxMUJFOworQzFDMDtDMUMwOzExMDkgMTE2QSAxMUJGO0MxQzA7MTEwOSAxMTZBIDExQkY7CitDMUMxO0MxQzE7MTEwOSAxMTZBIDExQzA7QzFDMTsxMTA5IDExNkEgMTFDMDsKK0MxQzI7QzFDMjsxMTA5IDExNkEgMTFDMTtDMUMyOzExMDkgMTE2QSAxMUMxOworQzFDMztDMUMzOzExMDkgMTE2QSAxMUMyO0MxQzM7MTEwOSAxMTZBIDExQzI7CitDMUM0O0MxQzQ7MTEwOSAxMTZCO0MxQzQ7MTEwOSAxMTZCOworQzFDNTtDMUM1OzExMDkgMTE2QiAxMUE4O0MxQzU7MTEwOSAxMTZCIDExQTg7CitDMUM2O0MxQzY7MTEwOSAxMTZCIDExQTk7QzFDNjsxMTA5IDExNkIgMTFBOTsKK0MxQzc7QzFDNzsxMTA5IDExNkIgMTFBQTtDMUM3OzExMDkgMTE2QiAxMUFBOworQzFDODtDMUM4OzExMDkgMTE2QiAxMUFCO0MxQzg7MTEwOSAxMTZCIDExQUI7CitDMUM5O0MxQzk7MTEwOSAxMTZCIDExQUM7QzFDOTsxMTA5IDExNkIgMTFBQzsKK0MxQ0E7QzFDQTsxMTA5IDExNkIgMTFBRDtDMUNBOzExMDkgMTE2QiAxMUFEOworQzFDQjtDMUNCOzExMDkgMTE2QiAxMUFFO0MxQ0I7MTEwOSAxMTZCIDExQUU7CitDMUNDO0MxQ0M7MTEwOSAxMTZCIDExQUY7QzFDQzsxMTA5IDExNkIgMTFBRjsKK0MxQ0Q7QzFDRDsxMTA5IDExNkIgMTFCMDtDMUNEOzExMDkgMTE2QiAxMUIwOworQzFDRTtDMUNFOzExMDkgMTE2QiAxMUIxO0MxQ0U7MTEwOSAxMTZCIDExQjE7CitDMUNGO0MxQ0Y7MTEwOSAxMTZCIDExQjI7QzFDRjsxMTA5IDExNkIgMTFCMjsKK0MxRDA7QzFEMDsxMTA5IDExNkIgMTFCMztDMUQwOzExMDkgMTE2QiAxMUIzOworQzFEMTtDMUQxOzExMDkgMTE2QiAxMUI0O0MxRDE7MTEwOSAxMTZCIDExQjQ7CitDMUQyO0MxRDI7MTEwOSAxMTZCIDExQjU7QzFEMjsxMTA5IDExNkIgMTFCNTsKK0MxRDM7QzFEMzsxMTA5IDExNkIgMTFCNjtDMUQzOzExMDkgMTE2QiAxMUI2OworQzFENDtDMUQ0OzExMDkgMTE2QiAxMUI3O0MxRDQ7MTEwOSAxMTZCIDExQjc7CitDMUQ1O0MxRDU7MTEwOSAxMTZCIDExQjg7QzFENTsxMTA5IDExNkIgMTFCODsKK0MxRDY7QzFENjsxMTA5IDExNkIgMTFCOTtDMUQ2OzExMDkgMTE2QiAxMUI5OworQzFENztDMUQ3OzExMDkgMTE2QiAxMUJBO0MxRDc7MTEwOSAxMTZCIDExQkE7CitDMUQ4O0MxRDg7MTEwOSAxMTZCIDExQkI7QzFEODsxMTA5IDExNkIgMTFCQjsKK0MxRDk7QzFEOTsxMTA5IDExNkIgMTFCQztDMUQ5OzExMDkgMTE2QiAxMUJDOworQzFEQTtDMURBOzExMDkgMTE2QiAxMUJEO0MxREE7MTEwOSAxMTZCIDExQkQ7CitDMURCO0MxREI7MTEwOSAxMTZCIDExQkU7QzFEQjsxMTA5IDExNkIgMTFCRTsKK0MxREM7QzFEQzsxMTA5IDExNkIgMTFCRjtDMURDOzExMDkgMTE2QiAxMUJGOworQzFERDtDMUREOzExMDkgMTE2QiAxMUMwO0MxREQ7MTEwOSAxMTZCIDExQzA7CitDMURFO0MxREU7MTEwOSAxMTZCIDExQzE7QzFERTsxMTA5IDExNkIgMTFDMTsKK0MxREY7QzFERjsxMTA5IDExNkIgMTFDMjtDMURGOzExMDkgMTE2QiAxMUMyOworQzFFMDtDMUUwOzExMDkgMTE2QztDMUUwOzExMDkgMTE2QzsKK0MxRTE7QzFFMTsxMTA5IDExNkMgMTFBODtDMUUxOzExMDkgMTE2QyAxMUE4OworQzFFMjtDMUUyOzExMDkgMTE2QyAxMUE5O0MxRTI7MTEwOSAxMTZDIDExQTk7CitDMUUzO0MxRTM7MTEwOSAxMTZDIDExQUE7QzFFMzsxMTA5IDExNkMgMTFBQTsKK0MxRTQ7QzFFNDsxMTA5IDExNkMgMTFBQjtDMUU0OzExMDkgMTE2QyAxMUFCOworQzFFNTtDMUU1OzExMDkgMTE2QyAxMUFDO0MxRTU7MTEwOSAxMTZDIDExQUM7CitDMUU2O0MxRTY7MTEwOSAxMTZDIDExQUQ7QzFFNjsxMTA5IDExNkMgMTFBRDsKK0MxRTc7QzFFNzsxMTA5IDExNkMgMTFBRTtDMUU3OzExMDkgMTE2QyAxMUFFOworQzFFODtDMUU4OzExMDkgMTE2QyAxMUFGO0MxRTg7MTEwOSAxMTZDIDExQUY7CitDMUU5O0MxRTk7MTEwOSAxMTZDIDExQjA7QzFFOTsxMTA5IDExNkMgMTFCMDsKK0MxRUE7QzFFQTsxMTA5IDExNkMgMTFCMTtDMUVBOzExMDkgMTE2QyAxMUIxOworQzFFQjtDMUVCOzExMDkgMTE2QyAxMUIyO0MxRUI7MTEwOSAxMTZDIDExQjI7CitDMUVDO0MxRUM7MTEwOSAxMTZDIDExQjM7QzFFQzsxMTA5IDExNkMgMTFCMzsKK0MxRUQ7QzFFRDsxMTA5IDExNkMgMTFCNDtDMUVEOzExMDkgMTE2QyAxMUI0OworQzFFRTtDMUVFOzExMDkgMTE2QyAxMUI1O0MxRUU7MTEwOSAxMTZDIDExQjU7CitDMUVGO0MxRUY7MTEwOSAxMTZDIDExQjY7QzFFRjsxMTA5IDExNkMgMTFCNjsKK0MxRjA7QzFGMDsxMTA5IDExNkMgMTFCNztDMUYwOzExMDkgMTE2QyAxMUI3OworQzFGMTtDMUYxOzExMDkgMTE2QyAxMUI4O0MxRjE7MTEwOSAxMTZDIDExQjg7CitDMUYyO0MxRjI7MTEwOSAxMTZDIDExQjk7QzFGMjsxMTA5IDExNkMgMTFCOTsKK0MxRjM7QzFGMzsxMTA5IDExNkMgMTFCQTtDMUYzOzExMDkgMTE2QyAxMUJBOworQzFGNDtDMUY0OzExMDkgMTE2QyAxMUJCO0MxRjQ7MTEwOSAxMTZDIDExQkI7CitDMUY1O0MxRjU7MTEwOSAxMTZDIDExQkM7QzFGNTsxMTA5IDExNkMgMTFCQzsKK0MxRjY7QzFGNjsxMTA5IDExNkMgMTFCRDtDMUY2OzExMDkgMTE2QyAxMUJEOworQzFGNztDMUY3OzExMDkgMTE2QyAxMUJFO0MxRjc7MTEwOSAxMTZDIDExQkU7CitDMUY4O0MxRjg7MTEwOSAxMTZDIDExQkY7QzFGODsxMTA5IDExNkMgMTFCRjsKK0MxRjk7QzFGOTsxMTA5IDExNkMgMTFDMDtDMUY5OzExMDkgMTE2QyAxMUMwOworQzFGQTtDMUZBOzExMDkgMTE2QyAxMUMxO0MxRkE7MTEwOSAxMTZDIDExQzE7CitDMUZCO0MxRkI7MTEwOSAxMTZDIDExQzI7QzFGQjsxMTA5IDExNkMgMTFDMjsKK0MxRkM7QzFGQzsxMTA5IDExNkQ7QzFGQzsxMTA5IDExNkQ7CitDMUZEO0MxRkQ7MTEwOSAxMTZEIDExQTg7QzFGRDsxMTA5IDExNkQgMTFBODsKK0MxRkU7QzFGRTsxMTA5IDExNkQgMTFBOTtDMUZFOzExMDkgMTE2RCAxMUE5OworQzFGRjtDMUZGOzExMDkgMTE2RCAxMUFBO0MxRkY7MTEwOSAxMTZEIDExQUE7CitDMjAwO0MyMDA7MTEwOSAxMTZEIDExQUI7QzIwMDsxMTA5IDExNkQgMTFBQjsKK0MyMDE7QzIwMTsxMTA5IDExNkQgMTFBQztDMjAxOzExMDkgMTE2RCAxMUFDOworQzIwMjtDMjAyOzExMDkgMTE2RCAxMUFEO0MyMDI7MTEwOSAxMTZEIDExQUQ7CitDMjAzO0MyMDM7MTEwOSAxMTZEIDExQUU7QzIwMzsxMTA5IDExNkQgMTFBRTsKK0MyMDQ7QzIwNDsxMTA5IDExNkQgMTFBRjtDMjA0OzExMDkgMTE2RCAxMUFGOworQzIwNTtDMjA1OzExMDkgMTE2RCAxMUIwO0MyMDU7MTEwOSAxMTZEIDExQjA7CitDMjA2O0MyMDY7MTEwOSAxMTZEIDExQjE7QzIwNjsxMTA5IDExNkQgMTFCMTsKK0MyMDc7QzIwNzsxMTA5IDExNkQgMTFCMjtDMjA3OzExMDkgMTE2RCAxMUIyOworQzIwODtDMjA4OzExMDkgMTE2RCAxMUIzO0MyMDg7MTEwOSAxMTZEIDExQjM7CitDMjA5O0MyMDk7MTEwOSAxMTZEIDExQjQ7QzIwOTsxMTA5IDExNkQgMTFCNDsKK0MyMEE7QzIwQTsxMTA5IDExNkQgMTFCNTtDMjBBOzExMDkgMTE2RCAxMUI1OworQzIwQjtDMjBCOzExMDkgMTE2RCAxMUI2O0MyMEI7MTEwOSAxMTZEIDExQjY7CitDMjBDO0MyMEM7MTEwOSAxMTZEIDExQjc7QzIwQzsxMTA5IDExNkQgMTFCNzsKK0MyMEQ7QzIwRDsxMTA5IDExNkQgMTFCODtDMjBEOzExMDkgMTE2RCAxMUI4OworQzIwRTtDMjBFOzExMDkgMTE2RCAxMUI5O0MyMEU7MTEwOSAxMTZEIDExQjk7CitDMjBGO0MyMEY7MTEwOSAxMTZEIDExQkE7QzIwRjsxMTA5IDExNkQgMTFCQTsKK0MyMTA7QzIxMDsxMTA5IDExNkQgMTFCQjtDMjEwOzExMDkgMTE2RCAxMUJCOworQzIxMTtDMjExOzExMDkgMTE2RCAxMUJDO0MyMTE7MTEwOSAxMTZEIDExQkM7CitDMjEyO0MyMTI7MTEwOSAxMTZEIDExQkQ7QzIxMjsxMTA5IDExNkQgMTFCRDsKK0MyMTM7QzIxMzsxMTA5IDExNkQgMTFCRTtDMjEzOzExMDkgMTE2RCAxMUJFOworQzIxNDtDMjE0OzExMDkgMTE2RCAxMUJGO0MyMTQ7MTEwOSAxMTZEIDExQkY7CitDMjE1O0MyMTU7MTEwOSAxMTZEIDExQzA7QzIxNTsxMTA5IDExNkQgMTFDMDsKK0MyMTY7QzIxNjsxMTA5IDExNkQgMTFDMTtDMjE2OzExMDkgMTE2RCAxMUMxOworQzIxNztDMjE3OzExMDkgMTE2RCAxMUMyO0MyMTc7MTEwOSAxMTZEIDExQzI7CitDMjE4O0MyMTg7MTEwOSAxMTZFO0MyMTg7MTEwOSAxMTZFOworQzIxOTtDMjE5OzExMDkgMTE2RSAxMUE4O0MyMTk7MTEwOSAxMTZFIDExQTg7CitDMjFBO0MyMUE7MTEwOSAxMTZFIDExQTk7QzIxQTsxMTA5IDExNkUgMTFBOTsKK0MyMUI7QzIxQjsxMTA5IDExNkUgMTFBQTtDMjFCOzExMDkgMTE2RSAxMUFBOworQzIxQztDMjFDOzExMDkgMTE2RSAxMUFCO0MyMUM7MTEwOSAxMTZFIDExQUI7CitDMjFEO0MyMUQ7MTEwOSAxMTZFIDExQUM7QzIxRDsxMTA5IDExNkUgMTFBQzsKK0MyMUU7QzIxRTsxMTA5IDExNkUgMTFBRDtDMjFFOzExMDkgMTE2RSAxMUFEOworQzIxRjtDMjFGOzExMDkgMTE2RSAxMUFFO0MyMUY7MTEwOSAxMTZFIDExQUU7CitDMjIwO0MyMjA7MTEwOSAxMTZFIDExQUY7QzIyMDsxMTA5IDExNkUgMTFBRjsKK0MyMjE7QzIyMTsxMTA5IDExNkUgMTFCMDtDMjIxOzExMDkgMTE2RSAxMUIwOworQzIyMjtDMjIyOzExMDkgMTE2RSAxMUIxO0MyMjI7MTEwOSAxMTZFIDExQjE7CitDMjIzO0MyMjM7MTEwOSAxMTZFIDExQjI7QzIyMzsxMTA5IDExNkUgMTFCMjsKK0MyMjQ7QzIyNDsxMTA5IDExNkUgMTFCMztDMjI0OzExMDkgMTE2RSAxMUIzOworQzIyNTtDMjI1OzExMDkgMTE2RSAxMUI0O0MyMjU7MTEwOSAxMTZFIDExQjQ7CitDMjI2O0MyMjY7MTEwOSAxMTZFIDExQjU7QzIyNjsxMTA5IDExNkUgMTFCNTsKK0MyMjc7QzIyNzsxMTA5IDExNkUgMTFCNjtDMjI3OzExMDkgMTE2RSAxMUI2OworQzIyODtDMjI4OzExMDkgMTE2RSAxMUI3O0MyMjg7MTEwOSAxMTZFIDExQjc7CitDMjI5O0MyMjk7MTEwOSAxMTZFIDExQjg7QzIyOTsxMTA5IDExNkUgMTFCODsKK0MyMkE7QzIyQTsxMTA5IDExNkUgMTFCOTtDMjJBOzExMDkgMTE2RSAxMUI5OworQzIyQjtDMjJCOzExMDkgMTE2RSAxMUJBO0MyMkI7MTEwOSAxMTZFIDExQkE7CitDMjJDO0MyMkM7MTEwOSAxMTZFIDExQkI7QzIyQzsxMTA5IDExNkUgMTFCQjsKK0MyMkQ7QzIyRDsxMTA5IDExNkUgMTFCQztDMjJEOzExMDkgMTE2RSAxMUJDOworQzIyRTtDMjJFOzExMDkgMTE2RSAxMUJEO0MyMkU7MTEwOSAxMTZFIDExQkQ7CitDMjJGO0MyMkY7MTEwOSAxMTZFIDExQkU7QzIyRjsxMTA5IDExNkUgMTFCRTsKK0MyMzA7QzIzMDsxMTA5IDExNkUgMTFCRjtDMjMwOzExMDkgMTE2RSAxMUJGOworQzIzMTtDMjMxOzExMDkgMTE2RSAxMUMwO0MyMzE7MTEwOSAxMTZFIDExQzA7CitDMjMyO0MyMzI7MTEwOSAxMTZFIDExQzE7QzIzMjsxMTA5IDExNkUgMTFDMTsKK0MyMzM7QzIzMzsxMTA5IDExNkUgMTFDMjtDMjMzOzExMDkgMTE2RSAxMUMyOworQzIzNDtDMjM0OzExMDkgMTE2RjtDMjM0OzExMDkgMTE2RjsKK0MyMzU7QzIzNTsxMTA5IDExNkYgMTFBODtDMjM1OzExMDkgMTE2RiAxMUE4OworQzIzNjtDMjM2OzExMDkgMTE2RiAxMUE5O0MyMzY7MTEwOSAxMTZGIDExQTk7CitDMjM3O0MyMzc7MTEwOSAxMTZGIDExQUE7QzIzNzsxMTA5IDExNkYgMTFBQTsKK0MyMzg7QzIzODsxMTA5IDExNkYgMTFBQjtDMjM4OzExMDkgMTE2RiAxMUFCOworQzIzOTtDMjM5OzExMDkgMTE2RiAxMUFDO0MyMzk7MTEwOSAxMTZGIDExQUM7CitDMjNBO0MyM0E7MTEwOSAxMTZGIDExQUQ7QzIzQTsxMTA5IDExNkYgMTFBRDsKK0MyM0I7QzIzQjsxMTA5IDExNkYgMTFBRTtDMjNCOzExMDkgMTE2RiAxMUFFOworQzIzQztDMjNDOzExMDkgMTE2RiAxMUFGO0MyM0M7MTEwOSAxMTZGIDExQUY7CitDMjNEO0MyM0Q7MTEwOSAxMTZGIDExQjA7QzIzRDsxMTA5IDExNkYgMTFCMDsKK0MyM0U7QzIzRTsxMTA5IDExNkYgMTFCMTtDMjNFOzExMDkgMTE2RiAxMUIxOworQzIzRjtDMjNGOzExMDkgMTE2RiAxMUIyO0MyM0Y7MTEwOSAxMTZGIDExQjI7CitDMjQwO0MyNDA7MTEwOSAxMTZGIDExQjM7QzI0MDsxMTA5IDExNkYgMTFCMzsKK0MyNDE7QzI0MTsxMTA5IDExNkYgMTFCNDtDMjQxOzExMDkgMTE2RiAxMUI0OworQzI0MjtDMjQyOzExMDkgMTE2RiAxMUI1O0MyNDI7MTEwOSAxMTZGIDExQjU7CitDMjQzO0MyNDM7MTEwOSAxMTZGIDExQjY7QzI0MzsxMTA5IDExNkYgMTFCNjsKK0MyNDQ7QzI0NDsxMTA5IDExNkYgMTFCNztDMjQ0OzExMDkgMTE2RiAxMUI3OworQzI0NTtDMjQ1OzExMDkgMTE2RiAxMUI4O0MyNDU7MTEwOSAxMTZGIDExQjg7CitDMjQ2O0MyNDY7MTEwOSAxMTZGIDExQjk7QzI0NjsxMTA5IDExNkYgMTFCOTsKK0MyNDc7QzI0NzsxMTA5IDExNkYgMTFCQTtDMjQ3OzExMDkgMTE2RiAxMUJBOworQzI0ODtDMjQ4OzExMDkgMTE2RiAxMUJCO0MyNDg7MTEwOSAxMTZGIDExQkI7CitDMjQ5O0MyNDk7MTEwOSAxMTZGIDExQkM7QzI0OTsxMTA5IDExNkYgMTFCQzsKK0MyNEE7QzI0QTsxMTA5IDExNkYgMTFCRDtDMjRBOzExMDkgMTE2RiAxMUJEOworQzI0QjtDMjRCOzExMDkgMTE2RiAxMUJFO0MyNEI7MTEwOSAxMTZGIDExQkU7CitDMjRDO0MyNEM7MTEwOSAxMTZGIDExQkY7QzI0QzsxMTA5IDExNkYgMTFCRjsKK0MyNEQ7QzI0RDsxMTA5IDExNkYgMTFDMDtDMjREOzExMDkgMTE2RiAxMUMwOworQzI0RTtDMjRFOzExMDkgMTE2RiAxMUMxO0MyNEU7MTEwOSAxMTZGIDExQzE7CitDMjRGO0MyNEY7MTEwOSAxMTZGIDExQzI7QzI0RjsxMTA5IDExNkYgMTFDMjsKK0MyNTA7QzI1MDsxMTA5IDExNzA7QzI1MDsxMTA5IDExNzA7CitDMjUxO0MyNTE7MTEwOSAxMTcwIDExQTg7QzI1MTsxMTA5IDExNzAgMTFBODsKK0MyNTI7QzI1MjsxMTA5IDExNzAgMTFBOTtDMjUyOzExMDkgMTE3MCAxMUE5OworQzI1MztDMjUzOzExMDkgMTE3MCAxMUFBO0MyNTM7MTEwOSAxMTcwIDExQUE7CitDMjU0O0MyNTQ7MTEwOSAxMTcwIDExQUI7QzI1NDsxMTA5IDExNzAgMTFBQjsKK0MyNTU7QzI1NTsxMTA5IDExNzAgMTFBQztDMjU1OzExMDkgMTE3MCAxMUFDOworQzI1NjtDMjU2OzExMDkgMTE3MCAxMUFEO0MyNTY7MTEwOSAxMTcwIDExQUQ7CitDMjU3O0MyNTc7MTEwOSAxMTcwIDExQUU7QzI1NzsxMTA5IDExNzAgMTFBRTsKK0MyNTg7QzI1ODsxMTA5IDExNzAgMTFBRjtDMjU4OzExMDkgMTE3MCAxMUFGOworQzI1OTtDMjU5OzExMDkgMTE3MCAxMUIwO0MyNTk7MTEwOSAxMTcwIDExQjA7CitDMjVBO0MyNUE7MTEwOSAxMTcwIDExQjE7QzI1QTsxMTA5IDExNzAgMTFCMTsKK0MyNUI7QzI1QjsxMTA5IDExNzAgMTFCMjtDMjVCOzExMDkgMTE3MCAxMUIyOworQzI1QztDMjVDOzExMDkgMTE3MCAxMUIzO0MyNUM7MTEwOSAxMTcwIDExQjM7CitDMjVEO0MyNUQ7MTEwOSAxMTcwIDExQjQ7QzI1RDsxMTA5IDExNzAgMTFCNDsKK0MyNUU7QzI1RTsxMTA5IDExNzAgMTFCNTtDMjVFOzExMDkgMTE3MCAxMUI1OworQzI1RjtDMjVGOzExMDkgMTE3MCAxMUI2O0MyNUY7MTEwOSAxMTcwIDExQjY7CitDMjYwO0MyNjA7MTEwOSAxMTcwIDExQjc7QzI2MDsxMTA5IDExNzAgMTFCNzsKK0MyNjE7QzI2MTsxMTA5IDExNzAgMTFCODtDMjYxOzExMDkgMTE3MCAxMUI4OworQzI2MjtDMjYyOzExMDkgMTE3MCAxMUI5O0MyNjI7MTEwOSAxMTcwIDExQjk7CitDMjYzO0MyNjM7MTEwOSAxMTcwIDExQkE7QzI2MzsxMTA5IDExNzAgMTFCQTsKK0MyNjQ7QzI2NDsxMTA5IDExNzAgMTFCQjtDMjY0OzExMDkgMTE3MCAxMUJCOworQzI2NTtDMjY1OzExMDkgMTE3MCAxMUJDO0MyNjU7MTEwOSAxMTcwIDExQkM7CitDMjY2O0MyNjY7MTEwOSAxMTcwIDExQkQ7QzI2NjsxMTA5IDExNzAgMTFCRDsKK0MyNjc7QzI2NzsxMTA5IDExNzAgMTFCRTtDMjY3OzExMDkgMTE3MCAxMUJFOworQzI2ODtDMjY4OzExMDkgMTE3MCAxMUJGO0MyNjg7MTEwOSAxMTcwIDExQkY7CitDMjY5O0MyNjk7MTEwOSAxMTcwIDExQzA7QzI2OTsxMTA5IDExNzAgMTFDMDsKK0MyNkE7QzI2QTsxMTA5IDExNzAgMTFDMTtDMjZBOzExMDkgMTE3MCAxMUMxOworQzI2QjtDMjZCOzExMDkgMTE3MCAxMUMyO0MyNkI7MTEwOSAxMTcwIDExQzI7CitDMjZDO0MyNkM7MTEwOSAxMTcxO0MyNkM7MTEwOSAxMTcxOworQzI2RDtDMjZEOzExMDkgMTE3MSAxMUE4O0MyNkQ7MTEwOSAxMTcxIDExQTg7CitDMjZFO0MyNkU7MTEwOSAxMTcxIDExQTk7QzI2RTsxMTA5IDExNzEgMTFBOTsKK0MyNkY7QzI2RjsxMTA5IDExNzEgMTFBQTtDMjZGOzExMDkgMTE3MSAxMUFBOworQzI3MDtDMjcwOzExMDkgMTE3MSAxMUFCO0MyNzA7MTEwOSAxMTcxIDExQUI7CitDMjcxO0MyNzE7MTEwOSAxMTcxIDExQUM7QzI3MTsxMTA5IDExNzEgMTFBQzsKK0MyNzI7QzI3MjsxMTA5IDExNzEgMTFBRDtDMjcyOzExMDkgMTE3MSAxMUFEOworQzI3MztDMjczOzExMDkgMTE3MSAxMUFFO0MyNzM7MTEwOSAxMTcxIDExQUU7CitDMjc0O0MyNzQ7MTEwOSAxMTcxIDExQUY7QzI3NDsxMTA5IDExNzEgMTFBRjsKK0MyNzU7QzI3NTsxMTA5IDExNzEgMTFCMDtDMjc1OzExMDkgMTE3MSAxMUIwOworQzI3NjtDMjc2OzExMDkgMTE3MSAxMUIxO0MyNzY7MTEwOSAxMTcxIDExQjE7CitDMjc3O0MyNzc7MTEwOSAxMTcxIDExQjI7QzI3NzsxMTA5IDExNzEgMTFCMjsKK0MyNzg7QzI3ODsxMTA5IDExNzEgMTFCMztDMjc4OzExMDkgMTE3MSAxMUIzOworQzI3OTtDMjc5OzExMDkgMTE3MSAxMUI0O0MyNzk7MTEwOSAxMTcxIDExQjQ7CitDMjdBO0MyN0E7MTEwOSAxMTcxIDExQjU7QzI3QTsxMTA5IDExNzEgMTFCNTsKK0MyN0I7QzI3QjsxMTA5IDExNzEgMTFCNjtDMjdCOzExMDkgMTE3MSAxMUI2OworQzI3QztDMjdDOzExMDkgMTE3MSAxMUI3O0MyN0M7MTEwOSAxMTcxIDExQjc7CitDMjdEO0MyN0Q7MTEwOSAxMTcxIDExQjg7QzI3RDsxMTA5IDExNzEgMTFCODsKK0MyN0U7QzI3RTsxMTA5IDExNzEgMTFCOTtDMjdFOzExMDkgMTE3MSAxMUI5OworQzI3RjtDMjdGOzExMDkgMTE3MSAxMUJBO0MyN0Y7MTEwOSAxMTcxIDExQkE7CitDMjgwO0MyODA7MTEwOSAxMTcxIDExQkI7QzI4MDsxMTA5IDExNzEgMTFCQjsKK0MyODE7QzI4MTsxMTA5IDExNzEgMTFCQztDMjgxOzExMDkgMTE3MSAxMUJDOworQzI4MjtDMjgyOzExMDkgMTE3MSAxMUJEO0MyODI7MTEwOSAxMTcxIDExQkQ7CitDMjgzO0MyODM7MTEwOSAxMTcxIDExQkU7QzI4MzsxMTA5IDExNzEgMTFCRTsKK0MyODQ7QzI4NDsxMTA5IDExNzEgMTFCRjtDMjg0OzExMDkgMTE3MSAxMUJGOworQzI4NTtDMjg1OzExMDkgMTE3MSAxMUMwO0MyODU7MTEwOSAxMTcxIDExQzA7CitDMjg2O0MyODY7MTEwOSAxMTcxIDExQzE7QzI4NjsxMTA5IDExNzEgMTFDMTsKK0MyODc7QzI4NzsxMTA5IDExNzEgMTFDMjtDMjg3OzExMDkgMTE3MSAxMUMyOworQzI4ODtDMjg4OzExMDkgMTE3MjtDMjg4OzExMDkgMTE3MjsKK0MyODk7QzI4OTsxMTA5IDExNzIgMTFBODtDMjg5OzExMDkgMTE3MiAxMUE4OworQzI4QTtDMjhBOzExMDkgMTE3MiAxMUE5O0MyOEE7MTEwOSAxMTcyIDExQTk7CitDMjhCO0MyOEI7MTEwOSAxMTcyIDExQUE7QzI4QjsxMTA5IDExNzIgMTFBQTsKK0MyOEM7QzI4QzsxMTA5IDExNzIgMTFBQjtDMjhDOzExMDkgMTE3MiAxMUFCOworQzI4RDtDMjhEOzExMDkgMTE3MiAxMUFDO0MyOEQ7MTEwOSAxMTcyIDExQUM7CitDMjhFO0MyOEU7MTEwOSAxMTcyIDExQUQ7QzI4RTsxMTA5IDExNzIgMTFBRDsKK0MyOEY7QzI4RjsxMTA5IDExNzIgMTFBRTtDMjhGOzExMDkgMTE3MiAxMUFFOworQzI5MDtDMjkwOzExMDkgMTE3MiAxMUFGO0MyOTA7MTEwOSAxMTcyIDExQUY7CitDMjkxO0MyOTE7MTEwOSAxMTcyIDExQjA7QzI5MTsxMTA5IDExNzIgMTFCMDsKK0MyOTI7QzI5MjsxMTA5IDExNzIgMTFCMTtDMjkyOzExMDkgMTE3MiAxMUIxOworQzI5MztDMjkzOzExMDkgMTE3MiAxMUIyO0MyOTM7MTEwOSAxMTcyIDExQjI7CitDMjk0O0MyOTQ7MTEwOSAxMTcyIDExQjM7QzI5NDsxMTA5IDExNzIgMTFCMzsKK0MyOTU7QzI5NTsxMTA5IDExNzIgMTFCNDtDMjk1OzExMDkgMTE3MiAxMUI0OworQzI5NjtDMjk2OzExMDkgMTE3MiAxMUI1O0MyOTY7MTEwOSAxMTcyIDExQjU7CitDMjk3O0MyOTc7MTEwOSAxMTcyIDExQjY7QzI5NzsxMTA5IDExNzIgMTFCNjsKK0MyOTg7QzI5ODsxMTA5IDExNzIgMTFCNztDMjk4OzExMDkgMTE3MiAxMUI3OworQzI5OTtDMjk5OzExMDkgMTE3MiAxMUI4O0MyOTk7MTEwOSAxMTcyIDExQjg7CitDMjlBO0MyOUE7MTEwOSAxMTcyIDExQjk7QzI5QTsxMTA5IDExNzIgMTFCOTsKK0MyOUI7QzI5QjsxMTA5IDExNzIgMTFCQTtDMjlCOzExMDkgMTE3MiAxMUJBOworQzI5QztDMjlDOzExMDkgMTE3MiAxMUJCO0MyOUM7MTEwOSAxMTcyIDExQkI7CitDMjlEO0MyOUQ7MTEwOSAxMTcyIDExQkM7QzI5RDsxMTA5IDExNzIgMTFCQzsKK0MyOUU7QzI5RTsxMTA5IDExNzIgMTFCRDtDMjlFOzExMDkgMTE3MiAxMUJEOworQzI5RjtDMjlGOzExMDkgMTE3MiAxMUJFO0MyOUY7MTEwOSAxMTcyIDExQkU7CitDMkEwO0MyQTA7MTEwOSAxMTcyIDExQkY7QzJBMDsxMTA5IDExNzIgMTFCRjsKK0MyQTE7QzJBMTsxMTA5IDExNzIgMTFDMDtDMkExOzExMDkgMTE3MiAxMUMwOworQzJBMjtDMkEyOzExMDkgMTE3MiAxMUMxO0MyQTI7MTEwOSAxMTcyIDExQzE7CitDMkEzO0MyQTM7MTEwOSAxMTcyIDExQzI7QzJBMzsxMTA5IDExNzIgMTFDMjsKK0MyQTQ7QzJBNDsxMTA5IDExNzM7QzJBNDsxMTA5IDExNzM7CitDMkE1O0MyQTU7MTEwOSAxMTczIDExQTg7QzJBNTsxMTA5IDExNzMgMTFBODsKK0MyQTY7QzJBNjsxMTA5IDExNzMgMTFBOTtDMkE2OzExMDkgMTE3MyAxMUE5OworQzJBNztDMkE3OzExMDkgMTE3MyAxMUFBO0MyQTc7MTEwOSAxMTczIDExQUE7CitDMkE4O0MyQTg7MTEwOSAxMTczIDExQUI7QzJBODsxMTA5IDExNzMgMTFBQjsKK0MyQTk7QzJBOTsxMTA5IDExNzMgMTFBQztDMkE5OzExMDkgMTE3MyAxMUFDOworQzJBQTtDMkFBOzExMDkgMTE3MyAxMUFEO0MyQUE7MTEwOSAxMTczIDExQUQ7CitDMkFCO0MyQUI7MTEwOSAxMTczIDExQUU7QzJBQjsxMTA5IDExNzMgMTFBRTsKK0MyQUM7QzJBQzsxMTA5IDExNzMgMTFBRjtDMkFDOzExMDkgMTE3MyAxMUFGOworQzJBRDtDMkFEOzExMDkgMTE3MyAxMUIwO0MyQUQ7MTEwOSAxMTczIDExQjA7CitDMkFFO0MyQUU7MTEwOSAxMTczIDExQjE7QzJBRTsxMTA5IDExNzMgMTFCMTsKK0MyQUY7QzJBRjsxMTA5IDExNzMgMTFCMjtDMkFGOzExMDkgMTE3MyAxMUIyOworQzJCMDtDMkIwOzExMDkgMTE3MyAxMUIzO0MyQjA7MTEwOSAxMTczIDExQjM7CitDMkIxO0MyQjE7MTEwOSAxMTczIDExQjQ7QzJCMTsxMTA5IDExNzMgMTFCNDsKK0MyQjI7QzJCMjsxMTA5IDExNzMgMTFCNTtDMkIyOzExMDkgMTE3MyAxMUI1OworQzJCMztDMkIzOzExMDkgMTE3MyAxMUI2O0MyQjM7MTEwOSAxMTczIDExQjY7CitDMkI0O0MyQjQ7MTEwOSAxMTczIDExQjc7QzJCNDsxMTA5IDExNzMgMTFCNzsKK0MyQjU7QzJCNTsxMTA5IDExNzMgMTFCODtDMkI1OzExMDkgMTE3MyAxMUI4OworQzJCNjtDMkI2OzExMDkgMTE3MyAxMUI5O0MyQjY7MTEwOSAxMTczIDExQjk7CitDMkI3O0MyQjc7MTEwOSAxMTczIDExQkE7QzJCNzsxMTA5IDExNzMgMTFCQTsKK0MyQjg7QzJCODsxMTA5IDExNzMgMTFCQjtDMkI4OzExMDkgMTE3MyAxMUJCOworQzJCOTtDMkI5OzExMDkgMTE3MyAxMUJDO0MyQjk7MTEwOSAxMTczIDExQkM7CitDMkJBO0MyQkE7MTEwOSAxMTczIDExQkQ7QzJCQTsxMTA5IDExNzMgMTFCRDsKK0MyQkI7QzJCQjsxMTA5IDExNzMgMTFCRTtDMkJCOzExMDkgMTE3MyAxMUJFOworQzJCQztDMkJDOzExMDkgMTE3MyAxMUJGO0MyQkM7MTEwOSAxMTczIDExQkY7CitDMkJEO0MyQkQ7MTEwOSAxMTczIDExQzA7QzJCRDsxMTA5IDExNzMgMTFDMDsKK0MyQkU7QzJCRTsxMTA5IDExNzMgMTFDMTtDMkJFOzExMDkgMTE3MyAxMUMxOworQzJCRjtDMkJGOzExMDkgMTE3MyAxMUMyO0MyQkY7MTEwOSAxMTczIDExQzI7CitDMkMwO0MyQzA7MTEwOSAxMTc0O0MyQzA7MTEwOSAxMTc0OworQzJDMTtDMkMxOzExMDkgMTE3NCAxMUE4O0MyQzE7MTEwOSAxMTc0IDExQTg7CitDMkMyO0MyQzI7MTEwOSAxMTc0IDExQTk7QzJDMjsxMTA5IDExNzQgMTFBOTsKK0MyQzM7QzJDMzsxMTA5IDExNzQgMTFBQTtDMkMzOzExMDkgMTE3NCAxMUFBOworQzJDNDtDMkM0OzExMDkgMTE3NCAxMUFCO0MyQzQ7MTEwOSAxMTc0IDExQUI7CitDMkM1O0MyQzU7MTEwOSAxMTc0IDExQUM7QzJDNTsxMTA5IDExNzQgMTFBQzsKK0MyQzY7QzJDNjsxMTA5IDExNzQgMTFBRDtDMkM2OzExMDkgMTE3NCAxMUFEOworQzJDNztDMkM3OzExMDkgMTE3NCAxMUFFO0MyQzc7MTEwOSAxMTc0IDExQUU7CitDMkM4O0MyQzg7MTEwOSAxMTc0IDExQUY7QzJDODsxMTA5IDExNzQgMTFBRjsKK0MyQzk7QzJDOTsxMTA5IDExNzQgMTFCMDtDMkM5OzExMDkgMTE3NCAxMUIwOworQzJDQTtDMkNBOzExMDkgMTE3NCAxMUIxO0MyQ0E7MTEwOSAxMTc0IDExQjE7CitDMkNCO0MyQ0I7MTEwOSAxMTc0IDExQjI7QzJDQjsxMTA5IDExNzQgMTFCMjsKK0MyQ0M7QzJDQzsxMTA5IDExNzQgMTFCMztDMkNDOzExMDkgMTE3NCAxMUIzOworQzJDRDtDMkNEOzExMDkgMTE3NCAxMUI0O0MyQ0Q7MTEwOSAxMTc0IDExQjQ7CitDMkNFO0MyQ0U7MTEwOSAxMTc0IDExQjU7QzJDRTsxMTA5IDExNzQgMTFCNTsKK0MyQ0Y7QzJDRjsxMTA5IDExNzQgMTFCNjtDMkNGOzExMDkgMTE3NCAxMUI2OworQzJEMDtDMkQwOzExMDkgMTE3NCAxMUI3O0MyRDA7MTEwOSAxMTc0IDExQjc7CitDMkQxO0MyRDE7MTEwOSAxMTc0IDExQjg7QzJEMTsxMTA5IDExNzQgMTFCODsKK0MyRDI7QzJEMjsxMTA5IDExNzQgMTFCOTtDMkQyOzExMDkgMTE3NCAxMUI5OworQzJEMztDMkQzOzExMDkgMTE3NCAxMUJBO0MyRDM7MTEwOSAxMTc0IDExQkE7CitDMkQ0O0MyRDQ7MTEwOSAxMTc0IDExQkI7QzJENDsxMTA5IDExNzQgMTFCQjsKK0MyRDU7QzJENTsxMTA5IDExNzQgMTFCQztDMkQ1OzExMDkgMTE3NCAxMUJDOworQzJENjtDMkQ2OzExMDkgMTE3NCAxMUJEO0MyRDY7MTEwOSAxMTc0IDExQkQ7CitDMkQ3O0MyRDc7MTEwOSAxMTc0IDExQkU7QzJENzsxMTA5IDExNzQgMTFCRTsKK0MyRDg7QzJEODsxMTA5IDExNzQgMTFCRjtDMkQ4OzExMDkgMTE3NCAxMUJGOworQzJEOTtDMkQ5OzExMDkgMTE3NCAxMUMwO0MyRDk7MTEwOSAxMTc0IDExQzA7CitDMkRBO0MyREE7MTEwOSAxMTc0IDExQzE7QzJEQTsxMTA5IDExNzQgMTFDMTsKK0MyREI7QzJEQjsxMTA5IDExNzQgMTFDMjtDMkRCOzExMDkgMTE3NCAxMUMyOworQzJEQztDMkRDOzExMDkgMTE3NTtDMkRDOzExMDkgMTE3NTsKK0MyREQ7QzJERDsxMTA5IDExNzUgMTFBODtDMkREOzExMDkgMTE3NSAxMUE4OworQzJERTtDMkRFOzExMDkgMTE3NSAxMUE5O0MyREU7MTEwOSAxMTc1IDExQTk7CitDMkRGO0MyREY7MTEwOSAxMTc1IDExQUE7QzJERjsxMTA5IDExNzUgMTFBQTsKK0MyRTA7QzJFMDsxMTA5IDExNzUgMTFBQjtDMkUwOzExMDkgMTE3NSAxMUFCOworQzJFMTtDMkUxOzExMDkgMTE3NSAxMUFDO0MyRTE7MTEwOSAxMTc1IDExQUM7CitDMkUyO0MyRTI7MTEwOSAxMTc1IDExQUQ7QzJFMjsxMTA5IDExNzUgMTFBRDsKK0MyRTM7QzJFMzsxMTA5IDExNzUgMTFBRTtDMkUzOzExMDkgMTE3NSAxMUFFOworQzJFNDtDMkU0OzExMDkgMTE3NSAxMUFGO0MyRTQ7MTEwOSAxMTc1IDExQUY7CitDMkU1O0MyRTU7MTEwOSAxMTc1IDExQjA7QzJFNTsxMTA5IDExNzUgMTFCMDsKK0MyRTY7QzJFNjsxMTA5IDExNzUgMTFCMTtDMkU2OzExMDkgMTE3NSAxMUIxOworQzJFNztDMkU3OzExMDkgMTE3NSAxMUIyO0MyRTc7MTEwOSAxMTc1IDExQjI7CitDMkU4O0MyRTg7MTEwOSAxMTc1IDExQjM7QzJFODsxMTA5IDExNzUgMTFCMzsKK0MyRTk7QzJFOTsxMTA5IDExNzUgMTFCNDtDMkU5OzExMDkgMTE3NSAxMUI0OworQzJFQTtDMkVBOzExMDkgMTE3NSAxMUI1O0MyRUE7MTEwOSAxMTc1IDExQjU7CitDMkVCO0MyRUI7MTEwOSAxMTc1IDExQjY7QzJFQjsxMTA5IDExNzUgMTFCNjsKK0MyRUM7QzJFQzsxMTA5IDExNzUgMTFCNztDMkVDOzExMDkgMTE3NSAxMUI3OworQzJFRDtDMkVEOzExMDkgMTE3NSAxMUI4O0MyRUQ7MTEwOSAxMTc1IDExQjg7CitDMkVFO0MyRUU7MTEwOSAxMTc1IDExQjk7QzJFRTsxMTA5IDExNzUgMTFCOTsKK0MyRUY7QzJFRjsxMTA5IDExNzUgMTFCQTtDMkVGOzExMDkgMTE3NSAxMUJBOworQzJGMDtDMkYwOzExMDkgMTE3NSAxMUJCO0MyRjA7MTEwOSAxMTc1IDExQkI7CitDMkYxO0MyRjE7MTEwOSAxMTc1IDExQkM7QzJGMTsxMTA5IDExNzUgMTFCQzsKK0MyRjI7QzJGMjsxMTA5IDExNzUgMTFCRDtDMkYyOzExMDkgMTE3NSAxMUJEOworQzJGMztDMkYzOzExMDkgMTE3NSAxMUJFO0MyRjM7MTEwOSAxMTc1IDExQkU7CitDMkY0O0MyRjQ7MTEwOSAxMTc1IDExQkY7QzJGNDsxMTA5IDExNzUgMTFCRjsKK0MyRjU7QzJGNTsxMTA5IDExNzUgMTFDMDtDMkY1OzExMDkgMTE3NSAxMUMwOworQzJGNjtDMkY2OzExMDkgMTE3NSAxMUMxO0MyRjY7MTEwOSAxMTc1IDExQzE7CitDMkY3O0MyRjc7MTEwOSAxMTc1IDExQzI7QzJGNzsxMTA5IDExNzUgMTFDMjsKK0MyRjg7QzJGODsxMTBBIDExNjE7QzJGODsxMTBBIDExNjE7CitDMkY5O0MyRjk7MTEwQSAxMTYxIDExQTg7QzJGOTsxMTBBIDExNjEgMTFBODsKK0MyRkE7QzJGQTsxMTBBIDExNjEgMTFBOTtDMkZBOzExMEEgMTE2MSAxMUE5OworQzJGQjtDMkZCOzExMEEgMTE2MSAxMUFBO0MyRkI7MTEwQSAxMTYxIDExQUE7CitDMkZDO0MyRkM7MTEwQSAxMTYxIDExQUI7QzJGQzsxMTBBIDExNjEgMTFBQjsKK0MyRkQ7QzJGRDsxMTBBIDExNjEgMTFBQztDMkZEOzExMEEgMTE2MSAxMUFDOworQzJGRTtDMkZFOzExMEEgMTE2MSAxMUFEO0MyRkU7MTEwQSAxMTYxIDExQUQ7CitDMkZGO0MyRkY7MTEwQSAxMTYxIDExQUU7QzJGRjsxMTBBIDExNjEgMTFBRTsKK0MzMDA7QzMwMDsxMTBBIDExNjEgMTFBRjtDMzAwOzExMEEgMTE2MSAxMUFGOworQzMwMTtDMzAxOzExMEEgMTE2MSAxMUIwO0MzMDE7MTEwQSAxMTYxIDExQjA7CitDMzAyO0MzMDI7MTEwQSAxMTYxIDExQjE7QzMwMjsxMTBBIDExNjEgMTFCMTsKK0MzMDM7QzMwMzsxMTBBIDExNjEgMTFCMjtDMzAzOzExMEEgMTE2MSAxMUIyOworQzMwNDtDMzA0OzExMEEgMTE2MSAxMUIzO0MzMDQ7MTEwQSAxMTYxIDExQjM7CitDMzA1O0MzMDU7MTEwQSAxMTYxIDExQjQ7QzMwNTsxMTBBIDExNjEgMTFCNDsKK0MzMDY7QzMwNjsxMTBBIDExNjEgMTFCNTtDMzA2OzExMEEgMTE2MSAxMUI1OworQzMwNztDMzA3OzExMEEgMTE2MSAxMUI2O0MzMDc7MTEwQSAxMTYxIDExQjY7CitDMzA4O0MzMDg7MTEwQSAxMTYxIDExQjc7QzMwODsxMTBBIDExNjEgMTFCNzsKK0MzMDk7QzMwOTsxMTBBIDExNjEgMTFCODtDMzA5OzExMEEgMTE2MSAxMUI4OworQzMwQTtDMzBBOzExMEEgMTE2MSAxMUI5O0MzMEE7MTEwQSAxMTYxIDExQjk7CitDMzBCO0MzMEI7MTEwQSAxMTYxIDExQkE7QzMwQjsxMTBBIDExNjEgMTFCQTsKK0MzMEM7QzMwQzsxMTBBIDExNjEgMTFCQjtDMzBDOzExMEEgMTE2MSAxMUJCOworQzMwRDtDMzBEOzExMEEgMTE2MSAxMUJDO0MzMEQ7MTEwQSAxMTYxIDExQkM7CitDMzBFO0MzMEU7MTEwQSAxMTYxIDExQkQ7QzMwRTsxMTBBIDExNjEgMTFCRDsKK0MzMEY7QzMwRjsxMTBBIDExNjEgMTFCRTtDMzBGOzExMEEgMTE2MSAxMUJFOworQzMxMDtDMzEwOzExMEEgMTE2MSAxMUJGO0MzMTA7MTEwQSAxMTYxIDExQkY7CitDMzExO0MzMTE7MTEwQSAxMTYxIDExQzA7QzMxMTsxMTBBIDExNjEgMTFDMDsKK0MzMTI7QzMxMjsxMTBBIDExNjEgMTFDMTtDMzEyOzExMEEgMTE2MSAxMUMxOworQzMxMztDMzEzOzExMEEgMTE2MSAxMUMyO0MzMTM7MTEwQSAxMTYxIDExQzI7CitDMzE0O0MzMTQ7MTEwQSAxMTYyO0MzMTQ7MTEwQSAxMTYyOworQzMxNTtDMzE1OzExMEEgMTE2MiAxMUE4O0MzMTU7MTEwQSAxMTYyIDExQTg7CitDMzE2O0MzMTY7MTEwQSAxMTYyIDExQTk7QzMxNjsxMTBBIDExNjIgMTFBOTsKK0MzMTc7QzMxNzsxMTBBIDExNjIgMTFBQTtDMzE3OzExMEEgMTE2MiAxMUFBOworQzMxODtDMzE4OzExMEEgMTE2MiAxMUFCO0MzMTg7MTEwQSAxMTYyIDExQUI7CitDMzE5O0MzMTk7MTEwQSAxMTYyIDExQUM7QzMxOTsxMTBBIDExNjIgMTFBQzsKK0MzMUE7QzMxQTsxMTBBIDExNjIgMTFBRDtDMzFBOzExMEEgMTE2MiAxMUFEOworQzMxQjtDMzFCOzExMEEgMTE2MiAxMUFFO0MzMUI7MTEwQSAxMTYyIDExQUU7CitDMzFDO0MzMUM7MTEwQSAxMTYyIDExQUY7QzMxQzsxMTBBIDExNjIgMTFBRjsKK0MzMUQ7QzMxRDsxMTBBIDExNjIgMTFCMDtDMzFEOzExMEEgMTE2MiAxMUIwOworQzMxRTtDMzFFOzExMEEgMTE2MiAxMUIxO0MzMUU7MTEwQSAxMTYyIDExQjE7CitDMzFGO0MzMUY7MTEwQSAxMTYyIDExQjI7QzMxRjsxMTBBIDExNjIgMTFCMjsKK0MzMjA7QzMyMDsxMTBBIDExNjIgMTFCMztDMzIwOzExMEEgMTE2MiAxMUIzOworQzMyMTtDMzIxOzExMEEgMTE2MiAxMUI0O0MzMjE7MTEwQSAxMTYyIDExQjQ7CitDMzIyO0MzMjI7MTEwQSAxMTYyIDExQjU7QzMyMjsxMTBBIDExNjIgMTFCNTsKK0MzMjM7QzMyMzsxMTBBIDExNjIgMTFCNjtDMzIzOzExMEEgMTE2MiAxMUI2OworQzMyNDtDMzI0OzExMEEgMTE2MiAxMUI3O0MzMjQ7MTEwQSAxMTYyIDExQjc7CitDMzI1O0MzMjU7MTEwQSAxMTYyIDExQjg7QzMyNTsxMTBBIDExNjIgMTFCODsKK0MzMjY7QzMyNjsxMTBBIDExNjIgMTFCOTtDMzI2OzExMEEgMTE2MiAxMUI5OworQzMyNztDMzI3OzExMEEgMTE2MiAxMUJBO0MzMjc7MTEwQSAxMTYyIDExQkE7CitDMzI4O0MzMjg7MTEwQSAxMTYyIDExQkI7QzMyODsxMTBBIDExNjIgMTFCQjsKK0MzMjk7QzMyOTsxMTBBIDExNjIgMTFCQztDMzI5OzExMEEgMTE2MiAxMUJDOworQzMyQTtDMzJBOzExMEEgMTE2MiAxMUJEO0MzMkE7MTEwQSAxMTYyIDExQkQ7CitDMzJCO0MzMkI7MTEwQSAxMTYyIDExQkU7QzMyQjsxMTBBIDExNjIgMTFCRTsKK0MzMkM7QzMyQzsxMTBBIDExNjIgMTFCRjtDMzJDOzExMEEgMTE2MiAxMUJGOworQzMyRDtDMzJEOzExMEEgMTE2MiAxMUMwO0MzMkQ7MTEwQSAxMTYyIDExQzA7CitDMzJFO0MzMkU7MTEwQSAxMTYyIDExQzE7QzMyRTsxMTBBIDExNjIgMTFDMTsKK0MzMkY7QzMyRjsxMTBBIDExNjIgMTFDMjtDMzJGOzExMEEgMTE2MiAxMUMyOworQzMzMDtDMzMwOzExMEEgMTE2MztDMzMwOzExMEEgMTE2MzsKK0MzMzE7QzMzMTsxMTBBIDExNjMgMTFBODtDMzMxOzExMEEgMTE2MyAxMUE4OworQzMzMjtDMzMyOzExMEEgMTE2MyAxMUE5O0MzMzI7MTEwQSAxMTYzIDExQTk7CitDMzMzO0MzMzM7MTEwQSAxMTYzIDExQUE7QzMzMzsxMTBBIDExNjMgMTFBQTsKK0MzMzQ7QzMzNDsxMTBBIDExNjMgMTFBQjtDMzM0OzExMEEgMTE2MyAxMUFCOworQzMzNTtDMzM1OzExMEEgMTE2MyAxMUFDO0MzMzU7MTEwQSAxMTYzIDExQUM7CitDMzM2O0MzMzY7MTEwQSAxMTYzIDExQUQ7QzMzNjsxMTBBIDExNjMgMTFBRDsKK0MzMzc7QzMzNzsxMTBBIDExNjMgMTFBRTtDMzM3OzExMEEgMTE2MyAxMUFFOworQzMzODtDMzM4OzExMEEgMTE2MyAxMUFGO0MzMzg7MTEwQSAxMTYzIDExQUY7CitDMzM5O0MzMzk7MTEwQSAxMTYzIDExQjA7QzMzOTsxMTBBIDExNjMgMTFCMDsKK0MzM0E7QzMzQTsxMTBBIDExNjMgMTFCMTtDMzNBOzExMEEgMTE2MyAxMUIxOworQzMzQjtDMzNCOzExMEEgMTE2MyAxMUIyO0MzM0I7MTEwQSAxMTYzIDExQjI7CitDMzNDO0MzM0M7MTEwQSAxMTYzIDExQjM7QzMzQzsxMTBBIDExNjMgMTFCMzsKK0MzM0Q7QzMzRDsxMTBBIDExNjMgMTFCNDtDMzNEOzExMEEgMTE2MyAxMUI0OworQzMzRTtDMzNFOzExMEEgMTE2MyAxMUI1O0MzM0U7MTEwQSAxMTYzIDExQjU7CitDMzNGO0MzM0Y7MTEwQSAxMTYzIDExQjY7QzMzRjsxMTBBIDExNjMgMTFCNjsKK0MzNDA7QzM0MDsxMTBBIDExNjMgMTFCNztDMzQwOzExMEEgMTE2MyAxMUI3OworQzM0MTtDMzQxOzExMEEgMTE2MyAxMUI4O0MzNDE7MTEwQSAxMTYzIDExQjg7CitDMzQyO0MzNDI7MTEwQSAxMTYzIDExQjk7QzM0MjsxMTBBIDExNjMgMTFCOTsKK0MzNDM7QzM0MzsxMTBBIDExNjMgMTFCQTtDMzQzOzExMEEgMTE2MyAxMUJBOworQzM0NDtDMzQ0OzExMEEgMTE2MyAxMUJCO0MzNDQ7MTEwQSAxMTYzIDExQkI7CitDMzQ1O0MzNDU7MTEwQSAxMTYzIDExQkM7QzM0NTsxMTBBIDExNjMgMTFCQzsKK0MzNDY7QzM0NjsxMTBBIDExNjMgMTFCRDtDMzQ2OzExMEEgMTE2MyAxMUJEOworQzM0NztDMzQ3OzExMEEgMTE2MyAxMUJFO0MzNDc7MTEwQSAxMTYzIDExQkU7CitDMzQ4O0MzNDg7MTEwQSAxMTYzIDExQkY7QzM0ODsxMTBBIDExNjMgMTFCRjsKK0MzNDk7QzM0OTsxMTBBIDExNjMgMTFDMDtDMzQ5OzExMEEgMTE2MyAxMUMwOworQzM0QTtDMzRBOzExMEEgMTE2MyAxMUMxO0MzNEE7MTEwQSAxMTYzIDExQzE7CitDMzRCO0MzNEI7MTEwQSAxMTYzIDExQzI7QzM0QjsxMTBBIDExNjMgMTFDMjsKK0MzNEM7QzM0QzsxMTBBIDExNjQ7QzM0QzsxMTBBIDExNjQ7CitDMzREO0MzNEQ7MTEwQSAxMTY0IDExQTg7QzM0RDsxMTBBIDExNjQgMTFBODsKK0MzNEU7QzM0RTsxMTBBIDExNjQgMTFBOTtDMzRFOzExMEEgMTE2NCAxMUE5OworQzM0RjtDMzRGOzExMEEgMTE2NCAxMUFBO0MzNEY7MTEwQSAxMTY0IDExQUE7CitDMzUwO0MzNTA7MTEwQSAxMTY0IDExQUI7QzM1MDsxMTBBIDExNjQgMTFBQjsKK0MzNTE7QzM1MTsxMTBBIDExNjQgMTFBQztDMzUxOzExMEEgMTE2NCAxMUFDOworQzM1MjtDMzUyOzExMEEgMTE2NCAxMUFEO0MzNTI7MTEwQSAxMTY0IDExQUQ7CitDMzUzO0MzNTM7MTEwQSAxMTY0IDExQUU7QzM1MzsxMTBBIDExNjQgMTFBRTsKK0MzNTQ7QzM1NDsxMTBBIDExNjQgMTFBRjtDMzU0OzExMEEgMTE2NCAxMUFGOworQzM1NTtDMzU1OzExMEEgMTE2NCAxMUIwO0MzNTU7MTEwQSAxMTY0IDExQjA7CitDMzU2O0MzNTY7MTEwQSAxMTY0IDExQjE7QzM1NjsxMTBBIDExNjQgMTFCMTsKK0MzNTc7QzM1NzsxMTBBIDExNjQgMTFCMjtDMzU3OzExMEEgMTE2NCAxMUIyOworQzM1ODtDMzU4OzExMEEgMTE2NCAxMUIzO0MzNTg7MTEwQSAxMTY0IDExQjM7CitDMzU5O0MzNTk7MTEwQSAxMTY0IDExQjQ7QzM1OTsxMTBBIDExNjQgMTFCNDsKK0MzNUE7QzM1QTsxMTBBIDExNjQgMTFCNTtDMzVBOzExMEEgMTE2NCAxMUI1OworQzM1QjtDMzVCOzExMEEgMTE2NCAxMUI2O0MzNUI7MTEwQSAxMTY0IDExQjY7CitDMzVDO0MzNUM7MTEwQSAxMTY0IDExQjc7QzM1QzsxMTBBIDExNjQgMTFCNzsKK0MzNUQ7QzM1RDsxMTBBIDExNjQgMTFCODtDMzVEOzExMEEgMTE2NCAxMUI4OworQzM1RTtDMzVFOzExMEEgMTE2NCAxMUI5O0MzNUU7MTEwQSAxMTY0IDExQjk7CitDMzVGO0MzNUY7MTEwQSAxMTY0IDExQkE7QzM1RjsxMTBBIDExNjQgMTFCQTsKK0MzNjA7QzM2MDsxMTBBIDExNjQgMTFCQjtDMzYwOzExMEEgMTE2NCAxMUJCOworQzM2MTtDMzYxOzExMEEgMTE2NCAxMUJDO0MzNjE7MTEwQSAxMTY0IDExQkM7CitDMzYyO0MzNjI7MTEwQSAxMTY0IDExQkQ7QzM2MjsxMTBBIDExNjQgMTFCRDsKK0MzNjM7QzM2MzsxMTBBIDExNjQgMTFCRTtDMzYzOzExMEEgMTE2NCAxMUJFOworQzM2NDtDMzY0OzExMEEgMTE2NCAxMUJGO0MzNjQ7MTEwQSAxMTY0IDExQkY7CitDMzY1O0MzNjU7MTEwQSAxMTY0IDExQzA7QzM2NTsxMTBBIDExNjQgMTFDMDsKK0MzNjY7QzM2NjsxMTBBIDExNjQgMTFDMTtDMzY2OzExMEEgMTE2NCAxMUMxOworQzM2NztDMzY3OzExMEEgMTE2NCAxMUMyO0MzNjc7MTEwQSAxMTY0IDExQzI7CitDMzY4O0MzNjg7MTEwQSAxMTY1O0MzNjg7MTEwQSAxMTY1OworQzM2OTtDMzY5OzExMEEgMTE2NSAxMUE4O0MzNjk7MTEwQSAxMTY1IDExQTg7CitDMzZBO0MzNkE7MTEwQSAxMTY1IDExQTk7QzM2QTsxMTBBIDExNjUgMTFBOTsKK0MzNkI7QzM2QjsxMTBBIDExNjUgMTFBQTtDMzZCOzExMEEgMTE2NSAxMUFBOworQzM2QztDMzZDOzExMEEgMTE2NSAxMUFCO0MzNkM7MTEwQSAxMTY1IDExQUI7CitDMzZEO0MzNkQ7MTEwQSAxMTY1IDExQUM7QzM2RDsxMTBBIDExNjUgMTFBQzsKK0MzNkU7QzM2RTsxMTBBIDExNjUgMTFBRDtDMzZFOzExMEEgMTE2NSAxMUFEOworQzM2RjtDMzZGOzExMEEgMTE2NSAxMUFFO0MzNkY7MTEwQSAxMTY1IDExQUU7CitDMzcwO0MzNzA7MTEwQSAxMTY1IDExQUY7QzM3MDsxMTBBIDExNjUgMTFBRjsKK0MzNzE7QzM3MTsxMTBBIDExNjUgMTFCMDtDMzcxOzExMEEgMTE2NSAxMUIwOworQzM3MjtDMzcyOzExMEEgMTE2NSAxMUIxO0MzNzI7MTEwQSAxMTY1IDExQjE7CitDMzczO0MzNzM7MTEwQSAxMTY1IDExQjI7QzM3MzsxMTBBIDExNjUgMTFCMjsKK0MzNzQ7QzM3NDsxMTBBIDExNjUgMTFCMztDMzc0OzExMEEgMTE2NSAxMUIzOworQzM3NTtDMzc1OzExMEEgMTE2NSAxMUI0O0MzNzU7MTEwQSAxMTY1IDExQjQ7CitDMzc2O0MzNzY7MTEwQSAxMTY1IDExQjU7QzM3NjsxMTBBIDExNjUgMTFCNTsKK0MzNzc7QzM3NzsxMTBBIDExNjUgMTFCNjtDMzc3OzExMEEgMTE2NSAxMUI2OworQzM3ODtDMzc4OzExMEEgMTE2NSAxMUI3O0MzNzg7MTEwQSAxMTY1IDExQjc7CitDMzc5O0MzNzk7MTEwQSAxMTY1IDExQjg7QzM3OTsxMTBBIDExNjUgMTFCODsKK0MzN0E7QzM3QTsxMTBBIDExNjUgMTFCOTtDMzdBOzExMEEgMTE2NSAxMUI5OworQzM3QjtDMzdCOzExMEEgMTE2NSAxMUJBO0MzN0I7MTEwQSAxMTY1IDExQkE7CitDMzdDO0MzN0M7MTEwQSAxMTY1IDExQkI7QzM3QzsxMTBBIDExNjUgMTFCQjsKK0MzN0Q7QzM3RDsxMTBBIDExNjUgMTFCQztDMzdEOzExMEEgMTE2NSAxMUJDOworQzM3RTtDMzdFOzExMEEgMTE2NSAxMUJEO0MzN0U7MTEwQSAxMTY1IDExQkQ7CitDMzdGO0MzN0Y7MTEwQSAxMTY1IDExQkU7QzM3RjsxMTBBIDExNjUgMTFCRTsKK0MzODA7QzM4MDsxMTBBIDExNjUgMTFCRjtDMzgwOzExMEEgMTE2NSAxMUJGOworQzM4MTtDMzgxOzExMEEgMTE2NSAxMUMwO0MzODE7MTEwQSAxMTY1IDExQzA7CitDMzgyO0MzODI7MTEwQSAxMTY1IDExQzE7QzM4MjsxMTBBIDExNjUgMTFDMTsKK0MzODM7QzM4MzsxMTBBIDExNjUgMTFDMjtDMzgzOzExMEEgMTE2NSAxMUMyOworQzM4NDtDMzg0OzExMEEgMTE2NjtDMzg0OzExMEEgMTE2NjsKK0MzODU7QzM4NTsxMTBBIDExNjYgMTFBODtDMzg1OzExMEEgMTE2NiAxMUE4OworQzM4NjtDMzg2OzExMEEgMTE2NiAxMUE5O0MzODY7MTEwQSAxMTY2IDExQTk7CitDMzg3O0MzODc7MTEwQSAxMTY2IDExQUE7QzM4NzsxMTBBIDExNjYgMTFBQTsKK0MzODg7QzM4ODsxMTBBIDExNjYgMTFBQjtDMzg4OzExMEEgMTE2NiAxMUFCOworQzM4OTtDMzg5OzExMEEgMTE2NiAxMUFDO0MzODk7MTEwQSAxMTY2IDExQUM7CitDMzhBO0MzOEE7MTEwQSAxMTY2IDExQUQ7QzM4QTsxMTBBIDExNjYgMTFBRDsKK0MzOEI7QzM4QjsxMTBBIDExNjYgMTFBRTtDMzhCOzExMEEgMTE2NiAxMUFFOworQzM4QztDMzhDOzExMEEgMTE2NiAxMUFGO0MzOEM7MTEwQSAxMTY2IDExQUY7CitDMzhEO0MzOEQ7MTEwQSAxMTY2IDExQjA7QzM4RDsxMTBBIDExNjYgMTFCMDsKK0MzOEU7QzM4RTsxMTBBIDExNjYgMTFCMTtDMzhFOzExMEEgMTE2NiAxMUIxOworQzM4RjtDMzhGOzExMEEgMTE2NiAxMUIyO0MzOEY7MTEwQSAxMTY2IDExQjI7CitDMzkwO0MzOTA7MTEwQSAxMTY2IDExQjM7QzM5MDsxMTBBIDExNjYgMTFCMzsKK0MzOTE7QzM5MTsxMTBBIDExNjYgMTFCNDtDMzkxOzExMEEgMTE2NiAxMUI0OworQzM5MjtDMzkyOzExMEEgMTE2NiAxMUI1O0MzOTI7MTEwQSAxMTY2IDExQjU7CitDMzkzO0MzOTM7MTEwQSAxMTY2IDExQjY7QzM5MzsxMTBBIDExNjYgMTFCNjsKK0MzOTQ7QzM5NDsxMTBBIDExNjYgMTFCNztDMzk0OzExMEEgMTE2NiAxMUI3OworQzM5NTtDMzk1OzExMEEgMTE2NiAxMUI4O0MzOTU7MTEwQSAxMTY2IDExQjg7CitDMzk2O0MzOTY7MTEwQSAxMTY2IDExQjk7QzM5NjsxMTBBIDExNjYgMTFCOTsKK0MzOTc7QzM5NzsxMTBBIDExNjYgMTFCQTtDMzk3OzExMEEgMTE2NiAxMUJBOworQzM5ODtDMzk4OzExMEEgMTE2NiAxMUJCO0MzOTg7MTEwQSAxMTY2IDExQkI7CitDMzk5O0MzOTk7MTEwQSAxMTY2IDExQkM7QzM5OTsxMTBBIDExNjYgMTFCQzsKK0MzOUE7QzM5QTsxMTBBIDExNjYgMTFCRDtDMzlBOzExMEEgMTE2NiAxMUJEOworQzM5QjtDMzlCOzExMEEgMTE2NiAxMUJFO0MzOUI7MTEwQSAxMTY2IDExQkU7CitDMzlDO0MzOUM7MTEwQSAxMTY2IDExQkY7QzM5QzsxMTBBIDExNjYgMTFCRjsKK0MzOUQ7QzM5RDsxMTBBIDExNjYgMTFDMDtDMzlEOzExMEEgMTE2NiAxMUMwOworQzM5RTtDMzlFOzExMEEgMTE2NiAxMUMxO0MzOUU7MTEwQSAxMTY2IDExQzE7CitDMzlGO0MzOUY7MTEwQSAxMTY2IDExQzI7QzM5RjsxMTBBIDExNjYgMTFDMjsKK0MzQTA7QzNBMDsxMTBBIDExNjc7QzNBMDsxMTBBIDExNjc7CitDM0ExO0MzQTE7MTEwQSAxMTY3IDExQTg7QzNBMTsxMTBBIDExNjcgMTFBODsKK0MzQTI7QzNBMjsxMTBBIDExNjcgMTFBOTtDM0EyOzExMEEgMTE2NyAxMUE5OworQzNBMztDM0EzOzExMEEgMTE2NyAxMUFBO0MzQTM7MTEwQSAxMTY3IDExQUE7CitDM0E0O0MzQTQ7MTEwQSAxMTY3IDExQUI7QzNBNDsxMTBBIDExNjcgMTFBQjsKK0MzQTU7QzNBNTsxMTBBIDExNjcgMTFBQztDM0E1OzExMEEgMTE2NyAxMUFDOworQzNBNjtDM0E2OzExMEEgMTE2NyAxMUFEO0MzQTY7MTEwQSAxMTY3IDExQUQ7CitDM0E3O0MzQTc7MTEwQSAxMTY3IDExQUU7QzNBNzsxMTBBIDExNjcgMTFBRTsKK0MzQTg7QzNBODsxMTBBIDExNjcgMTFBRjtDM0E4OzExMEEgMTE2NyAxMUFGOworQzNBOTtDM0E5OzExMEEgMTE2NyAxMUIwO0MzQTk7MTEwQSAxMTY3IDExQjA7CitDM0FBO0MzQUE7MTEwQSAxMTY3IDExQjE7QzNBQTsxMTBBIDExNjcgMTFCMTsKK0MzQUI7QzNBQjsxMTBBIDExNjcgMTFCMjtDM0FCOzExMEEgMTE2NyAxMUIyOworQzNBQztDM0FDOzExMEEgMTE2NyAxMUIzO0MzQUM7MTEwQSAxMTY3IDExQjM7CitDM0FEO0MzQUQ7MTEwQSAxMTY3IDExQjQ7QzNBRDsxMTBBIDExNjcgMTFCNDsKK0MzQUU7QzNBRTsxMTBBIDExNjcgMTFCNTtDM0FFOzExMEEgMTE2NyAxMUI1OworQzNBRjtDM0FGOzExMEEgMTE2NyAxMUI2O0MzQUY7MTEwQSAxMTY3IDExQjY7CitDM0IwO0MzQjA7MTEwQSAxMTY3IDExQjc7QzNCMDsxMTBBIDExNjcgMTFCNzsKK0MzQjE7QzNCMTsxMTBBIDExNjcgMTFCODtDM0IxOzExMEEgMTE2NyAxMUI4OworQzNCMjtDM0IyOzExMEEgMTE2NyAxMUI5O0MzQjI7MTEwQSAxMTY3IDExQjk7CitDM0IzO0MzQjM7MTEwQSAxMTY3IDExQkE7QzNCMzsxMTBBIDExNjcgMTFCQTsKK0MzQjQ7QzNCNDsxMTBBIDExNjcgMTFCQjtDM0I0OzExMEEgMTE2NyAxMUJCOworQzNCNTtDM0I1OzExMEEgMTE2NyAxMUJDO0MzQjU7MTEwQSAxMTY3IDExQkM7CitDM0I2O0MzQjY7MTEwQSAxMTY3IDExQkQ7QzNCNjsxMTBBIDExNjcgMTFCRDsKK0MzQjc7QzNCNzsxMTBBIDExNjcgMTFCRTtDM0I3OzExMEEgMTE2NyAxMUJFOworQzNCODtDM0I4OzExMEEgMTE2NyAxMUJGO0MzQjg7MTEwQSAxMTY3IDExQkY7CitDM0I5O0MzQjk7MTEwQSAxMTY3IDExQzA7QzNCOTsxMTBBIDExNjcgMTFDMDsKK0MzQkE7QzNCQTsxMTBBIDExNjcgMTFDMTtDM0JBOzExMEEgMTE2NyAxMUMxOworQzNCQjtDM0JCOzExMEEgMTE2NyAxMUMyO0MzQkI7MTEwQSAxMTY3IDExQzI7CitDM0JDO0MzQkM7MTEwQSAxMTY4O0MzQkM7MTEwQSAxMTY4OworQzNCRDtDM0JEOzExMEEgMTE2OCAxMUE4O0MzQkQ7MTEwQSAxMTY4IDExQTg7CitDM0JFO0MzQkU7MTEwQSAxMTY4IDExQTk7QzNCRTsxMTBBIDExNjggMTFBOTsKK0MzQkY7QzNCRjsxMTBBIDExNjggMTFBQTtDM0JGOzExMEEgMTE2OCAxMUFBOworQzNDMDtDM0MwOzExMEEgMTE2OCAxMUFCO0MzQzA7MTEwQSAxMTY4IDExQUI7CitDM0MxO0MzQzE7MTEwQSAxMTY4IDExQUM7QzNDMTsxMTBBIDExNjggMTFBQzsKK0MzQzI7QzNDMjsxMTBBIDExNjggMTFBRDtDM0MyOzExMEEgMTE2OCAxMUFEOworQzNDMztDM0MzOzExMEEgMTE2OCAxMUFFO0MzQzM7MTEwQSAxMTY4IDExQUU7CitDM0M0O0MzQzQ7MTEwQSAxMTY4IDExQUY7QzNDNDsxMTBBIDExNjggMTFBRjsKK0MzQzU7QzNDNTsxMTBBIDExNjggMTFCMDtDM0M1OzExMEEgMTE2OCAxMUIwOworQzNDNjtDM0M2OzExMEEgMTE2OCAxMUIxO0MzQzY7MTEwQSAxMTY4IDExQjE7CitDM0M3O0MzQzc7MTEwQSAxMTY4IDExQjI7QzNDNzsxMTBBIDExNjggMTFCMjsKK0MzQzg7QzNDODsxMTBBIDExNjggMTFCMztDM0M4OzExMEEgMTE2OCAxMUIzOworQzNDOTtDM0M5OzExMEEgMTE2OCAxMUI0O0MzQzk7MTEwQSAxMTY4IDExQjQ7CitDM0NBO0MzQ0E7MTEwQSAxMTY4IDExQjU7QzNDQTsxMTBBIDExNjggMTFCNTsKK0MzQ0I7QzNDQjsxMTBBIDExNjggMTFCNjtDM0NCOzExMEEgMTE2OCAxMUI2OworQzNDQztDM0NDOzExMEEgMTE2OCAxMUI3O0MzQ0M7MTEwQSAxMTY4IDExQjc7CitDM0NEO0MzQ0Q7MTEwQSAxMTY4IDExQjg7QzNDRDsxMTBBIDExNjggMTFCODsKK0MzQ0U7QzNDRTsxMTBBIDExNjggMTFCOTtDM0NFOzExMEEgMTE2OCAxMUI5OworQzNDRjtDM0NGOzExMEEgMTE2OCAxMUJBO0MzQ0Y7MTEwQSAxMTY4IDExQkE7CitDM0QwO0MzRDA7MTEwQSAxMTY4IDExQkI7QzNEMDsxMTBBIDExNjggMTFCQjsKK0MzRDE7QzNEMTsxMTBBIDExNjggMTFCQztDM0QxOzExMEEgMTE2OCAxMUJDOworQzNEMjtDM0QyOzExMEEgMTE2OCAxMUJEO0MzRDI7MTEwQSAxMTY4IDExQkQ7CitDM0QzO0MzRDM7MTEwQSAxMTY4IDExQkU7QzNEMzsxMTBBIDExNjggMTFCRTsKK0MzRDQ7QzNENDsxMTBBIDExNjggMTFCRjtDM0Q0OzExMEEgMTE2OCAxMUJGOworQzNENTtDM0Q1OzExMEEgMTE2OCAxMUMwO0MzRDU7MTEwQSAxMTY4IDExQzA7CitDM0Q2O0MzRDY7MTEwQSAxMTY4IDExQzE7QzNENjsxMTBBIDExNjggMTFDMTsKK0MzRDc7QzNENzsxMTBBIDExNjggMTFDMjtDM0Q3OzExMEEgMTE2OCAxMUMyOworQzNEODtDM0Q4OzExMEEgMTE2OTtDM0Q4OzExMEEgMTE2OTsKK0MzRDk7QzNEOTsxMTBBIDExNjkgMTFBODtDM0Q5OzExMEEgMTE2OSAxMUE4OworQzNEQTtDM0RBOzExMEEgMTE2OSAxMUE5O0MzREE7MTEwQSAxMTY5IDExQTk7CitDM0RCO0MzREI7MTEwQSAxMTY5IDExQUE7QzNEQjsxMTBBIDExNjkgMTFBQTsKK0MzREM7QzNEQzsxMTBBIDExNjkgMTFBQjtDM0RDOzExMEEgMTE2OSAxMUFCOworQzNERDtDM0REOzExMEEgMTE2OSAxMUFDO0MzREQ7MTEwQSAxMTY5IDExQUM7CitDM0RFO0MzREU7MTEwQSAxMTY5IDExQUQ7QzNERTsxMTBBIDExNjkgMTFBRDsKK0MzREY7QzNERjsxMTBBIDExNjkgMTFBRTtDM0RGOzExMEEgMTE2OSAxMUFFOworQzNFMDtDM0UwOzExMEEgMTE2OSAxMUFGO0MzRTA7MTEwQSAxMTY5IDExQUY7CitDM0UxO0MzRTE7MTEwQSAxMTY5IDExQjA7QzNFMTsxMTBBIDExNjkgMTFCMDsKK0MzRTI7QzNFMjsxMTBBIDExNjkgMTFCMTtDM0UyOzExMEEgMTE2OSAxMUIxOworQzNFMztDM0UzOzExMEEgMTE2OSAxMUIyO0MzRTM7MTEwQSAxMTY5IDExQjI7CitDM0U0O0MzRTQ7MTEwQSAxMTY5IDExQjM7QzNFNDsxMTBBIDExNjkgMTFCMzsKK0MzRTU7QzNFNTsxMTBBIDExNjkgMTFCNDtDM0U1OzExMEEgMTE2OSAxMUI0OworQzNFNjtDM0U2OzExMEEgMTE2OSAxMUI1O0MzRTY7MTEwQSAxMTY5IDExQjU7CitDM0U3O0MzRTc7MTEwQSAxMTY5IDExQjY7QzNFNzsxMTBBIDExNjkgMTFCNjsKK0MzRTg7QzNFODsxMTBBIDExNjkgMTFCNztDM0U4OzExMEEgMTE2OSAxMUI3OworQzNFOTtDM0U5OzExMEEgMTE2OSAxMUI4O0MzRTk7MTEwQSAxMTY5IDExQjg7CitDM0VBO0MzRUE7MTEwQSAxMTY5IDExQjk7QzNFQTsxMTBBIDExNjkgMTFCOTsKK0MzRUI7QzNFQjsxMTBBIDExNjkgMTFCQTtDM0VCOzExMEEgMTE2OSAxMUJBOworQzNFQztDM0VDOzExMEEgMTE2OSAxMUJCO0MzRUM7MTEwQSAxMTY5IDExQkI7CitDM0VEO0MzRUQ7MTEwQSAxMTY5IDExQkM7QzNFRDsxMTBBIDExNjkgMTFCQzsKK0MzRUU7QzNFRTsxMTBBIDExNjkgMTFCRDtDM0VFOzExMEEgMTE2OSAxMUJEOworQzNFRjtDM0VGOzExMEEgMTE2OSAxMUJFO0MzRUY7MTEwQSAxMTY5IDExQkU7CitDM0YwO0MzRjA7MTEwQSAxMTY5IDExQkY7QzNGMDsxMTBBIDExNjkgMTFCRjsKK0MzRjE7QzNGMTsxMTBBIDExNjkgMTFDMDtDM0YxOzExMEEgMTE2OSAxMUMwOworQzNGMjtDM0YyOzExMEEgMTE2OSAxMUMxO0MzRjI7MTEwQSAxMTY5IDExQzE7CitDM0YzO0MzRjM7MTEwQSAxMTY5IDExQzI7QzNGMzsxMTBBIDExNjkgMTFDMjsKK0MzRjQ7QzNGNDsxMTBBIDExNkE7QzNGNDsxMTBBIDExNkE7CitDM0Y1O0MzRjU7MTEwQSAxMTZBIDExQTg7QzNGNTsxMTBBIDExNkEgMTFBODsKK0MzRjY7QzNGNjsxMTBBIDExNkEgMTFBOTtDM0Y2OzExMEEgMTE2QSAxMUE5OworQzNGNztDM0Y3OzExMEEgMTE2QSAxMUFBO0MzRjc7MTEwQSAxMTZBIDExQUE7CitDM0Y4O0MzRjg7MTEwQSAxMTZBIDExQUI7QzNGODsxMTBBIDExNkEgMTFBQjsKK0MzRjk7QzNGOTsxMTBBIDExNkEgMTFBQztDM0Y5OzExMEEgMTE2QSAxMUFDOworQzNGQTtDM0ZBOzExMEEgMTE2QSAxMUFEO0MzRkE7MTEwQSAxMTZBIDExQUQ7CitDM0ZCO0MzRkI7MTEwQSAxMTZBIDExQUU7QzNGQjsxMTBBIDExNkEgMTFBRTsKK0MzRkM7QzNGQzsxMTBBIDExNkEgMTFBRjtDM0ZDOzExMEEgMTE2QSAxMUFGOworQzNGRDtDM0ZEOzExMEEgMTE2QSAxMUIwO0MzRkQ7MTEwQSAxMTZBIDExQjA7CitDM0ZFO0MzRkU7MTEwQSAxMTZBIDExQjE7QzNGRTsxMTBBIDExNkEgMTFCMTsKK0MzRkY7QzNGRjsxMTBBIDExNkEgMTFCMjtDM0ZGOzExMEEgMTE2QSAxMUIyOworQzQwMDtDNDAwOzExMEEgMTE2QSAxMUIzO0M0MDA7MTEwQSAxMTZBIDExQjM7CitDNDAxO0M0MDE7MTEwQSAxMTZBIDExQjQ7QzQwMTsxMTBBIDExNkEgMTFCNDsKK0M0MDI7QzQwMjsxMTBBIDExNkEgMTFCNTtDNDAyOzExMEEgMTE2QSAxMUI1OworQzQwMztDNDAzOzExMEEgMTE2QSAxMUI2O0M0MDM7MTEwQSAxMTZBIDExQjY7CitDNDA0O0M0MDQ7MTEwQSAxMTZBIDExQjc7QzQwNDsxMTBBIDExNkEgMTFCNzsKK0M0MDU7QzQwNTsxMTBBIDExNkEgMTFCODtDNDA1OzExMEEgMTE2QSAxMUI4OworQzQwNjtDNDA2OzExMEEgMTE2QSAxMUI5O0M0MDY7MTEwQSAxMTZBIDExQjk7CitDNDA3O0M0MDc7MTEwQSAxMTZBIDExQkE7QzQwNzsxMTBBIDExNkEgMTFCQTsKK0M0MDg7QzQwODsxMTBBIDExNkEgMTFCQjtDNDA4OzExMEEgMTE2QSAxMUJCOworQzQwOTtDNDA5OzExMEEgMTE2QSAxMUJDO0M0MDk7MTEwQSAxMTZBIDExQkM7CitDNDBBO0M0MEE7MTEwQSAxMTZBIDExQkQ7QzQwQTsxMTBBIDExNkEgMTFCRDsKK0M0MEI7QzQwQjsxMTBBIDExNkEgMTFCRTtDNDBCOzExMEEgMTE2QSAxMUJFOworQzQwQztDNDBDOzExMEEgMTE2QSAxMUJGO0M0MEM7MTEwQSAxMTZBIDExQkY7CitDNDBEO0M0MEQ7MTEwQSAxMTZBIDExQzA7QzQwRDsxMTBBIDExNkEgMTFDMDsKK0M0MEU7QzQwRTsxMTBBIDExNkEgMTFDMTtDNDBFOzExMEEgMTE2QSAxMUMxOworQzQwRjtDNDBGOzExMEEgMTE2QSAxMUMyO0M0MEY7MTEwQSAxMTZBIDExQzI7CitDNDEwO0M0MTA7MTEwQSAxMTZCO0M0MTA7MTEwQSAxMTZCOworQzQxMTtDNDExOzExMEEgMTE2QiAxMUE4O0M0MTE7MTEwQSAxMTZCIDExQTg7CitDNDEyO0M0MTI7MTEwQSAxMTZCIDExQTk7QzQxMjsxMTBBIDExNkIgMTFBOTsKK0M0MTM7QzQxMzsxMTBBIDExNkIgMTFBQTtDNDEzOzExMEEgMTE2QiAxMUFBOworQzQxNDtDNDE0OzExMEEgMTE2QiAxMUFCO0M0MTQ7MTEwQSAxMTZCIDExQUI7CitDNDE1O0M0MTU7MTEwQSAxMTZCIDExQUM7QzQxNTsxMTBBIDExNkIgMTFBQzsKK0M0MTY7QzQxNjsxMTBBIDExNkIgMTFBRDtDNDE2OzExMEEgMTE2QiAxMUFEOworQzQxNztDNDE3OzExMEEgMTE2QiAxMUFFO0M0MTc7MTEwQSAxMTZCIDExQUU7CitDNDE4O0M0MTg7MTEwQSAxMTZCIDExQUY7QzQxODsxMTBBIDExNkIgMTFBRjsKK0M0MTk7QzQxOTsxMTBBIDExNkIgMTFCMDtDNDE5OzExMEEgMTE2QiAxMUIwOworQzQxQTtDNDFBOzExMEEgMTE2QiAxMUIxO0M0MUE7MTEwQSAxMTZCIDExQjE7CitDNDFCO0M0MUI7MTEwQSAxMTZCIDExQjI7QzQxQjsxMTBBIDExNkIgMTFCMjsKK0M0MUM7QzQxQzsxMTBBIDExNkIgMTFCMztDNDFDOzExMEEgMTE2QiAxMUIzOworQzQxRDtDNDFEOzExMEEgMTE2QiAxMUI0O0M0MUQ7MTEwQSAxMTZCIDExQjQ7CitDNDFFO0M0MUU7MTEwQSAxMTZCIDExQjU7QzQxRTsxMTBBIDExNkIgMTFCNTsKK0M0MUY7QzQxRjsxMTBBIDExNkIgMTFCNjtDNDFGOzExMEEgMTE2QiAxMUI2OworQzQyMDtDNDIwOzExMEEgMTE2QiAxMUI3O0M0MjA7MTEwQSAxMTZCIDExQjc7CitDNDIxO0M0MjE7MTEwQSAxMTZCIDExQjg7QzQyMTsxMTBBIDExNkIgMTFCODsKK0M0MjI7QzQyMjsxMTBBIDExNkIgMTFCOTtDNDIyOzExMEEgMTE2QiAxMUI5OworQzQyMztDNDIzOzExMEEgMTE2QiAxMUJBO0M0MjM7MTEwQSAxMTZCIDExQkE7CitDNDI0O0M0MjQ7MTEwQSAxMTZCIDExQkI7QzQyNDsxMTBBIDExNkIgMTFCQjsKK0M0MjU7QzQyNTsxMTBBIDExNkIgMTFCQztDNDI1OzExMEEgMTE2QiAxMUJDOworQzQyNjtDNDI2OzExMEEgMTE2QiAxMUJEO0M0MjY7MTEwQSAxMTZCIDExQkQ7CitDNDI3O0M0Mjc7MTEwQSAxMTZCIDExQkU7QzQyNzsxMTBBIDExNkIgMTFCRTsKK0M0Mjg7QzQyODsxMTBBIDExNkIgMTFCRjtDNDI4OzExMEEgMTE2QiAxMUJGOworQzQyOTtDNDI5OzExMEEgMTE2QiAxMUMwO0M0Mjk7MTEwQSAxMTZCIDExQzA7CitDNDJBO0M0MkE7MTEwQSAxMTZCIDExQzE7QzQyQTsxMTBBIDExNkIgMTFDMTsKK0M0MkI7QzQyQjsxMTBBIDExNkIgMTFDMjtDNDJCOzExMEEgMTE2QiAxMUMyOworQzQyQztDNDJDOzExMEEgMTE2QztDNDJDOzExMEEgMTE2QzsKK0M0MkQ7QzQyRDsxMTBBIDExNkMgMTFBODtDNDJEOzExMEEgMTE2QyAxMUE4OworQzQyRTtDNDJFOzExMEEgMTE2QyAxMUE5O0M0MkU7MTEwQSAxMTZDIDExQTk7CitDNDJGO0M0MkY7MTEwQSAxMTZDIDExQUE7QzQyRjsxMTBBIDExNkMgMTFBQTsKK0M0MzA7QzQzMDsxMTBBIDExNkMgMTFBQjtDNDMwOzExMEEgMTE2QyAxMUFCOworQzQzMTtDNDMxOzExMEEgMTE2QyAxMUFDO0M0MzE7MTEwQSAxMTZDIDExQUM7CitDNDMyO0M0MzI7MTEwQSAxMTZDIDExQUQ7QzQzMjsxMTBBIDExNkMgMTFBRDsKK0M0MzM7QzQzMzsxMTBBIDExNkMgMTFBRTtDNDMzOzExMEEgMTE2QyAxMUFFOworQzQzNDtDNDM0OzExMEEgMTE2QyAxMUFGO0M0MzQ7MTEwQSAxMTZDIDExQUY7CitDNDM1O0M0MzU7MTEwQSAxMTZDIDExQjA7QzQzNTsxMTBBIDExNkMgMTFCMDsKK0M0MzY7QzQzNjsxMTBBIDExNkMgMTFCMTtDNDM2OzExMEEgMTE2QyAxMUIxOworQzQzNztDNDM3OzExMEEgMTE2QyAxMUIyO0M0Mzc7MTEwQSAxMTZDIDExQjI7CitDNDM4O0M0Mzg7MTEwQSAxMTZDIDExQjM7QzQzODsxMTBBIDExNkMgMTFCMzsKK0M0Mzk7QzQzOTsxMTBBIDExNkMgMTFCNDtDNDM5OzExMEEgMTE2QyAxMUI0OworQzQzQTtDNDNBOzExMEEgMTE2QyAxMUI1O0M0M0E7MTEwQSAxMTZDIDExQjU7CitDNDNCO0M0M0I7MTEwQSAxMTZDIDExQjY7QzQzQjsxMTBBIDExNkMgMTFCNjsKK0M0M0M7QzQzQzsxMTBBIDExNkMgMTFCNztDNDNDOzExMEEgMTE2QyAxMUI3OworQzQzRDtDNDNEOzExMEEgMTE2QyAxMUI4O0M0M0Q7MTEwQSAxMTZDIDExQjg7CitDNDNFO0M0M0U7MTEwQSAxMTZDIDExQjk7QzQzRTsxMTBBIDExNkMgMTFCOTsKK0M0M0Y7QzQzRjsxMTBBIDExNkMgMTFCQTtDNDNGOzExMEEgMTE2QyAxMUJBOworQzQ0MDtDNDQwOzExMEEgMTE2QyAxMUJCO0M0NDA7MTEwQSAxMTZDIDExQkI7CitDNDQxO0M0NDE7MTEwQSAxMTZDIDExQkM7QzQ0MTsxMTBBIDExNkMgMTFCQzsKK0M0NDI7QzQ0MjsxMTBBIDExNkMgMTFCRDtDNDQyOzExMEEgMTE2QyAxMUJEOworQzQ0MztDNDQzOzExMEEgMTE2QyAxMUJFO0M0NDM7MTEwQSAxMTZDIDExQkU7CitDNDQ0O0M0NDQ7MTEwQSAxMTZDIDExQkY7QzQ0NDsxMTBBIDExNkMgMTFCRjsKK0M0NDU7QzQ0NTsxMTBBIDExNkMgMTFDMDtDNDQ1OzExMEEgMTE2QyAxMUMwOworQzQ0NjtDNDQ2OzExMEEgMTE2QyAxMUMxO0M0NDY7MTEwQSAxMTZDIDExQzE7CitDNDQ3O0M0NDc7MTEwQSAxMTZDIDExQzI7QzQ0NzsxMTBBIDExNkMgMTFDMjsKK0M0NDg7QzQ0ODsxMTBBIDExNkQ7QzQ0ODsxMTBBIDExNkQ7CitDNDQ5O0M0NDk7MTEwQSAxMTZEIDExQTg7QzQ0OTsxMTBBIDExNkQgMTFBODsKK0M0NEE7QzQ0QTsxMTBBIDExNkQgMTFBOTtDNDRBOzExMEEgMTE2RCAxMUE5OworQzQ0QjtDNDRCOzExMEEgMTE2RCAxMUFBO0M0NEI7MTEwQSAxMTZEIDExQUE7CitDNDRDO0M0NEM7MTEwQSAxMTZEIDExQUI7QzQ0QzsxMTBBIDExNkQgMTFBQjsKK0M0NEQ7QzQ0RDsxMTBBIDExNkQgMTFBQztDNDREOzExMEEgMTE2RCAxMUFDOworQzQ0RTtDNDRFOzExMEEgMTE2RCAxMUFEO0M0NEU7MTEwQSAxMTZEIDExQUQ7CitDNDRGO0M0NEY7MTEwQSAxMTZEIDExQUU7QzQ0RjsxMTBBIDExNkQgMTFBRTsKK0M0NTA7QzQ1MDsxMTBBIDExNkQgMTFBRjtDNDUwOzExMEEgMTE2RCAxMUFGOworQzQ1MTtDNDUxOzExMEEgMTE2RCAxMUIwO0M0NTE7MTEwQSAxMTZEIDExQjA7CitDNDUyO0M0NTI7MTEwQSAxMTZEIDExQjE7QzQ1MjsxMTBBIDExNkQgMTFCMTsKK0M0NTM7QzQ1MzsxMTBBIDExNkQgMTFCMjtDNDUzOzExMEEgMTE2RCAxMUIyOworQzQ1NDtDNDU0OzExMEEgMTE2RCAxMUIzO0M0NTQ7MTEwQSAxMTZEIDExQjM7CitDNDU1O0M0NTU7MTEwQSAxMTZEIDExQjQ7QzQ1NTsxMTBBIDExNkQgMTFCNDsKK0M0NTY7QzQ1NjsxMTBBIDExNkQgMTFCNTtDNDU2OzExMEEgMTE2RCAxMUI1OworQzQ1NztDNDU3OzExMEEgMTE2RCAxMUI2O0M0NTc7MTEwQSAxMTZEIDExQjY7CitDNDU4O0M0NTg7MTEwQSAxMTZEIDExQjc7QzQ1ODsxMTBBIDExNkQgMTFCNzsKK0M0NTk7QzQ1OTsxMTBBIDExNkQgMTFCODtDNDU5OzExMEEgMTE2RCAxMUI4OworQzQ1QTtDNDVBOzExMEEgMTE2RCAxMUI5O0M0NUE7MTEwQSAxMTZEIDExQjk7CitDNDVCO0M0NUI7MTEwQSAxMTZEIDExQkE7QzQ1QjsxMTBBIDExNkQgMTFCQTsKK0M0NUM7QzQ1QzsxMTBBIDExNkQgMTFCQjtDNDVDOzExMEEgMTE2RCAxMUJCOworQzQ1RDtDNDVEOzExMEEgMTE2RCAxMUJDO0M0NUQ7MTEwQSAxMTZEIDExQkM7CitDNDVFO0M0NUU7MTEwQSAxMTZEIDExQkQ7QzQ1RTsxMTBBIDExNkQgMTFCRDsKK0M0NUY7QzQ1RjsxMTBBIDExNkQgMTFCRTtDNDVGOzExMEEgMTE2RCAxMUJFOworQzQ2MDtDNDYwOzExMEEgMTE2RCAxMUJGO0M0NjA7MTEwQSAxMTZEIDExQkY7CitDNDYxO0M0NjE7MTEwQSAxMTZEIDExQzA7QzQ2MTsxMTBBIDExNkQgMTFDMDsKK0M0NjI7QzQ2MjsxMTBBIDExNkQgMTFDMTtDNDYyOzExMEEgMTE2RCAxMUMxOworQzQ2MztDNDYzOzExMEEgMTE2RCAxMUMyO0M0NjM7MTEwQSAxMTZEIDExQzI7CitDNDY0O0M0NjQ7MTEwQSAxMTZFO0M0NjQ7MTEwQSAxMTZFOworQzQ2NTtDNDY1OzExMEEgMTE2RSAxMUE4O0M0NjU7MTEwQSAxMTZFIDExQTg7CitDNDY2O0M0NjY7MTEwQSAxMTZFIDExQTk7QzQ2NjsxMTBBIDExNkUgMTFBOTsKK0M0Njc7QzQ2NzsxMTBBIDExNkUgMTFBQTtDNDY3OzExMEEgMTE2RSAxMUFBOworQzQ2ODtDNDY4OzExMEEgMTE2RSAxMUFCO0M0Njg7MTEwQSAxMTZFIDExQUI7CitDNDY5O0M0Njk7MTEwQSAxMTZFIDExQUM7QzQ2OTsxMTBBIDExNkUgMTFBQzsKK0M0NkE7QzQ2QTsxMTBBIDExNkUgMTFBRDtDNDZBOzExMEEgMTE2RSAxMUFEOworQzQ2QjtDNDZCOzExMEEgMTE2RSAxMUFFO0M0NkI7MTEwQSAxMTZFIDExQUU7CitDNDZDO0M0NkM7MTEwQSAxMTZFIDExQUY7QzQ2QzsxMTBBIDExNkUgMTFBRjsKK0M0NkQ7QzQ2RDsxMTBBIDExNkUgMTFCMDtDNDZEOzExMEEgMTE2RSAxMUIwOworQzQ2RTtDNDZFOzExMEEgMTE2RSAxMUIxO0M0NkU7MTEwQSAxMTZFIDExQjE7CitDNDZGO0M0NkY7MTEwQSAxMTZFIDExQjI7QzQ2RjsxMTBBIDExNkUgMTFCMjsKK0M0NzA7QzQ3MDsxMTBBIDExNkUgMTFCMztDNDcwOzExMEEgMTE2RSAxMUIzOworQzQ3MTtDNDcxOzExMEEgMTE2RSAxMUI0O0M0NzE7MTEwQSAxMTZFIDExQjQ7CitDNDcyO0M0NzI7MTEwQSAxMTZFIDExQjU7QzQ3MjsxMTBBIDExNkUgMTFCNTsKK0M0NzM7QzQ3MzsxMTBBIDExNkUgMTFCNjtDNDczOzExMEEgMTE2RSAxMUI2OworQzQ3NDtDNDc0OzExMEEgMTE2RSAxMUI3O0M0NzQ7MTEwQSAxMTZFIDExQjc7CitDNDc1O0M0NzU7MTEwQSAxMTZFIDExQjg7QzQ3NTsxMTBBIDExNkUgMTFCODsKK0M0NzY7QzQ3NjsxMTBBIDExNkUgMTFCOTtDNDc2OzExMEEgMTE2RSAxMUI5OworQzQ3NztDNDc3OzExMEEgMTE2RSAxMUJBO0M0Nzc7MTEwQSAxMTZFIDExQkE7CitDNDc4O0M0Nzg7MTEwQSAxMTZFIDExQkI7QzQ3ODsxMTBBIDExNkUgMTFCQjsKK0M0Nzk7QzQ3OTsxMTBBIDExNkUgMTFCQztDNDc5OzExMEEgMTE2RSAxMUJDOworQzQ3QTtDNDdBOzExMEEgMTE2RSAxMUJEO0M0N0E7MTEwQSAxMTZFIDExQkQ7CitDNDdCO0M0N0I7MTEwQSAxMTZFIDExQkU7QzQ3QjsxMTBBIDExNkUgMTFCRTsKK0M0N0M7QzQ3QzsxMTBBIDExNkUgMTFCRjtDNDdDOzExMEEgMTE2RSAxMUJGOworQzQ3RDtDNDdEOzExMEEgMTE2RSAxMUMwO0M0N0Q7MTEwQSAxMTZFIDExQzA7CitDNDdFO0M0N0U7MTEwQSAxMTZFIDExQzE7QzQ3RTsxMTBBIDExNkUgMTFDMTsKK0M0N0Y7QzQ3RjsxMTBBIDExNkUgMTFDMjtDNDdGOzExMEEgMTE2RSAxMUMyOworQzQ4MDtDNDgwOzExMEEgMTE2RjtDNDgwOzExMEEgMTE2RjsKK0M0ODE7QzQ4MTsxMTBBIDExNkYgMTFBODtDNDgxOzExMEEgMTE2RiAxMUE4OworQzQ4MjtDNDgyOzExMEEgMTE2RiAxMUE5O0M0ODI7MTEwQSAxMTZGIDExQTk7CitDNDgzO0M0ODM7MTEwQSAxMTZGIDExQUE7QzQ4MzsxMTBBIDExNkYgMTFBQTsKK0M0ODQ7QzQ4NDsxMTBBIDExNkYgMTFBQjtDNDg0OzExMEEgMTE2RiAxMUFCOworQzQ4NTtDNDg1OzExMEEgMTE2RiAxMUFDO0M0ODU7MTEwQSAxMTZGIDExQUM7CitDNDg2O0M0ODY7MTEwQSAxMTZGIDExQUQ7QzQ4NjsxMTBBIDExNkYgMTFBRDsKK0M0ODc7QzQ4NzsxMTBBIDExNkYgMTFBRTtDNDg3OzExMEEgMTE2RiAxMUFFOworQzQ4ODtDNDg4OzExMEEgMTE2RiAxMUFGO0M0ODg7MTEwQSAxMTZGIDExQUY7CitDNDg5O0M0ODk7MTEwQSAxMTZGIDExQjA7QzQ4OTsxMTBBIDExNkYgMTFCMDsKK0M0OEE7QzQ4QTsxMTBBIDExNkYgMTFCMTtDNDhBOzExMEEgMTE2RiAxMUIxOworQzQ4QjtDNDhCOzExMEEgMTE2RiAxMUIyO0M0OEI7MTEwQSAxMTZGIDExQjI7CitDNDhDO0M0OEM7MTEwQSAxMTZGIDExQjM7QzQ4QzsxMTBBIDExNkYgMTFCMzsKK0M0OEQ7QzQ4RDsxMTBBIDExNkYgMTFCNDtDNDhEOzExMEEgMTE2RiAxMUI0OworQzQ4RTtDNDhFOzExMEEgMTE2RiAxMUI1O0M0OEU7MTEwQSAxMTZGIDExQjU7CitDNDhGO0M0OEY7MTEwQSAxMTZGIDExQjY7QzQ4RjsxMTBBIDExNkYgMTFCNjsKK0M0OTA7QzQ5MDsxMTBBIDExNkYgMTFCNztDNDkwOzExMEEgMTE2RiAxMUI3OworQzQ5MTtDNDkxOzExMEEgMTE2RiAxMUI4O0M0OTE7MTEwQSAxMTZGIDExQjg7CitDNDkyO0M0OTI7MTEwQSAxMTZGIDExQjk7QzQ5MjsxMTBBIDExNkYgMTFCOTsKK0M0OTM7QzQ5MzsxMTBBIDExNkYgMTFCQTtDNDkzOzExMEEgMTE2RiAxMUJBOworQzQ5NDtDNDk0OzExMEEgMTE2RiAxMUJCO0M0OTQ7MTEwQSAxMTZGIDExQkI7CitDNDk1O0M0OTU7MTEwQSAxMTZGIDExQkM7QzQ5NTsxMTBBIDExNkYgMTFCQzsKK0M0OTY7QzQ5NjsxMTBBIDExNkYgMTFCRDtDNDk2OzExMEEgMTE2RiAxMUJEOworQzQ5NztDNDk3OzExMEEgMTE2RiAxMUJFO0M0OTc7MTEwQSAxMTZGIDExQkU7CitDNDk4O0M0OTg7MTEwQSAxMTZGIDExQkY7QzQ5ODsxMTBBIDExNkYgMTFCRjsKK0M0OTk7QzQ5OTsxMTBBIDExNkYgMTFDMDtDNDk5OzExMEEgMTE2RiAxMUMwOworQzQ5QTtDNDlBOzExMEEgMTE2RiAxMUMxO0M0OUE7MTEwQSAxMTZGIDExQzE7CitDNDlCO0M0OUI7MTEwQSAxMTZGIDExQzI7QzQ5QjsxMTBBIDExNkYgMTFDMjsKK0M0OUM7QzQ5QzsxMTBBIDExNzA7QzQ5QzsxMTBBIDExNzA7CitDNDlEO0M0OUQ7MTEwQSAxMTcwIDExQTg7QzQ5RDsxMTBBIDExNzAgMTFBODsKK0M0OUU7QzQ5RTsxMTBBIDExNzAgMTFBOTtDNDlFOzExMEEgMTE3MCAxMUE5OworQzQ5RjtDNDlGOzExMEEgMTE3MCAxMUFBO0M0OUY7MTEwQSAxMTcwIDExQUE7CitDNEEwO0M0QTA7MTEwQSAxMTcwIDExQUI7QzRBMDsxMTBBIDExNzAgMTFBQjsKK0M0QTE7QzRBMTsxMTBBIDExNzAgMTFBQztDNEExOzExMEEgMTE3MCAxMUFDOworQzRBMjtDNEEyOzExMEEgMTE3MCAxMUFEO0M0QTI7MTEwQSAxMTcwIDExQUQ7CitDNEEzO0M0QTM7MTEwQSAxMTcwIDExQUU7QzRBMzsxMTBBIDExNzAgMTFBRTsKK0M0QTQ7QzRBNDsxMTBBIDExNzAgMTFBRjtDNEE0OzExMEEgMTE3MCAxMUFGOworQzRBNTtDNEE1OzExMEEgMTE3MCAxMUIwO0M0QTU7MTEwQSAxMTcwIDExQjA7CitDNEE2O0M0QTY7MTEwQSAxMTcwIDExQjE7QzRBNjsxMTBBIDExNzAgMTFCMTsKK0M0QTc7QzRBNzsxMTBBIDExNzAgMTFCMjtDNEE3OzExMEEgMTE3MCAxMUIyOworQzRBODtDNEE4OzExMEEgMTE3MCAxMUIzO0M0QTg7MTEwQSAxMTcwIDExQjM7CitDNEE5O0M0QTk7MTEwQSAxMTcwIDExQjQ7QzRBOTsxMTBBIDExNzAgMTFCNDsKK0M0QUE7QzRBQTsxMTBBIDExNzAgMTFCNTtDNEFBOzExMEEgMTE3MCAxMUI1OworQzRBQjtDNEFCOzExMEEgMTE3MCAxMUI2O0M0QUI7MTEwQSAxMTcwIDExQjY7CitDNEFDO0M0QUM7MTEwQSAxMTcwIDExQjc7QzRBQzsxMTBBIDExNzAgMTFCNzsKK0M0QUQ7QzRBRDsxMTBBIDExNzAgMTFCODtDNEFEOzExMEEgMTE3MCAxMUI4OworQzRBRTtDNEFFOzExMEEgMTE3MCAxMUI5O0M0QUU7MTEwQSAxMTcwIDExQjk7CitDNEFGO0M0QUY7MTEwQSAxMTcwIDExQkE7QzRBRjsxMTBBIDExNzAgMTFCQTsKK0M0QjA7QzRCMDsxMTBBIDExNzAgMTFCQjtDNEIwOzExMEEgMTE3MCAxMUJCOworQzRCMTtDNEIxOzExMEEgMTE3MCAxMUJDO0M0QjE7MTEwQSAxMTcwIDExQkM7CitDNEIyO0M0QjI7MTEwQSAxMTcwIDExQkQ7QzRCMjsxMTBBIDExNzAgMTFCRDsKK0M0QjM7QzRCMzsxMTBBIDExNzAgMTFCRTtDNEIzOzExMEEgMTE3MCAxMUJFOworQzRCNDtDNEI0OzExMEEgMTE3MCAxMUJGO0M0QjQ7MTEwQSAxMTcwIDExQkY7CitDNEI1O0M0QjU7MTEwQSAxMTcwIDExQzA7QzRCNTsxMTBBIDExNzAgMTFDMDsKK0M0QjY7QzRCNjsxMTBBIDExNzAgMTFDMTtDNEI2OzExMEEgMTE3MCAxMUMxOworQzRCNztDNEI3OzExMEEgMTE3MCAxMUMyO0M0Qjc7MTEwQSAxMTcwIDExQzI7CitDNEI4O0M0Qjg7MTEwQSAxMTcxO0M0Qjg7MTEwQSAxMTcxOworQzRCOTtDNEI5OzExMEEgMTE3MSAxMUE4O0M0Qjk7MTEwQSAxMTcxIDExQTg7CitDNEJBO0M0QkE7MTEwQSAxMTcxIDExQTk7QzRCQTsxMTBBIDExNzEgMTFBOTsKK0M0QkI7QzRCQjsxMTBBIDExNzEgMTFBQTtDNEJCOzExMEEgMTE3MSAxMUFBOworQzRCQztDNEJDOzExMEEgMTE3MSAxMUFCO0M0QkM7MTEwQSAxMTcxIDExQUI7CitDNEJEO0M0QkQ7MTEwQSAxMTcxIDExQUM7QzRCRDsxMTBBIDExNzEgMTFBQzsKK0M0QkU7QzRCRTsxMTBBIDExNzEgMTFBRDtDNEJFOzExMEEgMTE3MSAxMUFEOworQzRCRjtDNEJGOzExMEEgMTE3MSAxMUFFO0M0QkY7MTEwQSAxMTcxIDExQUU7CitDNEMwO0M0QzA7MTEwQSAxMTcxIDExQUY7QzRDMDsxMTBBIDExNzEgMTFBRjsKK0M0QzE7QzRDMTsxMTBBIDExNzEgMTFCMDtDNEMxOzExMEEgMTE3MSAxMUIwOworQzRDMjtDNEMyOzExMEEgMTE3MSAxMUIxO0M0QzI7MTEwQSAxMTcxIDExQjE7CitDNEMzO0M0QzM7MTEwQSAxMTcxIDExQjI7QzRDMzsxMTBBIDExNzEgMTFCMjsKK0M0QzQ7QzRDNDsxMTBBIDExNzEgMTFCMztDNEM0OzExMEEgMTE3MSAxMUIzOworQzRDNTtDNEM1OzExMEEgMTE3MSAxMUI0O0M0QzU7MTEwQSAxMTcxIDExQjQ7CitDNEM2O0M0QzY7MTEwQSAxMTcxIDExQjU7QzRDNjsxMTBBIDExNzEgMTFCNTsKK0M0Qzc7QzRDNzsxMTBBIDExNzEgMTFCNjtDNEM3OzExMEEgMTE3MSAxMUI2OworQzRDODtDNEM4OzExMEEgMTE3MSAxMUI3O0M0Qzg7MTEwQSAxMTcxIDExQjc7CitDNEM5O0M0Qzk7MTEwQSAxMTcxIDExQjg7QzRDOTsxMTBBIDExNzEgMTFCODsKK0M0Q0E7QzRDQTsxMTBBIDExNzEgMTFCOTtDNENBOzExMEEgMTE3MSAxMUI5OworQzRDQjtDNENCOzExMEEgMTE3MSAxMUJBO0M0Q0I7MTEwQSAxMTcxIDExQkE7CitDNENDO0M0Q0M7MTEwQSAxMTcxIDExQkI7QzRDQzsxMTBBIDExNzEgMTFCQjsKK0M0Q0Q7QzRDRDsxMTBBIDExNzEgMTFCQztDNENEOzExMEEgMTE3MSAxMUJDOworQzRDRTtDNENFOzExMEEgMTE3MSAxMUJEO0M0Q0U7MTEwQSAxMTcxIDExQkQ7CitDNENGO0M0Q0Y7MTEwQSAxMTcxIDExQkU7QzRDRjsxMTBBIDExNzEgMTFCRTsKK0M0RDA7QzREMDsxMTBBIDExNzEgMTFCRjtDNEQwOzExMEEgMTE3MSAxMUJGOworQzREMTtDNEQxOzExMEEgMTE3MSAxMUMwO0M0RDE7MTEwQSAxMTcxIDExQzA7CitDNEQyO0M0RDI7MTEwQSAxMTcxIDExQzE7QzREMjsxMTBBIDExNzEgMTFDMTsKK0M0RDM7QzREMzsxMTBBIDExNzEgMTFDMjtDNEQzOzExMEEgMTE3MSAxMUMyOworQzRENDtDNEQ0OzExMEEgMTE3MjtDNEQ0OzExMEEgMTE3MjsKK0M0RDU7QzRENTsxMTBBIDExNzIgMTFBODtDNEQ1OzExMEEgMTE3MiAxMUE4OworQzRENjtDNEQ2OzExMEEgMTE3MiAxMUE5O0M0RDY7MTEwQSAxMTcyIDExQTk7CitDNEQ3O0M0RDc7MTEwQSAxMTcyIDExQUE7QzRENzsxMTBBIDExNzIgMTFBQTsKK0M0RDg7QzREODsxMTBBIDExNzIgMTFBQjtDNEQ4OzExMEEgMTE3MiAxMUFCOworQzREOTtDNEQ5OzExMEEgMTE3MiAxMUFDO0M0RDk7MTEwQSAxMTcyIDExQUM7CitDNERBO0M0REE7MTEwQSAxMTcyIDExQUQ7QzREQTsxMTBBIDExNzIgMTFBRDsKK0M0REI7QzREQjsxMTBBIDExNzIgMTFBRTtDNERCOzExMEEgMTE3MiAxMUFFOworQzREQztDNERDOzExMEEgMTE3MiAxMUFGO0M0REM7MTEwQSAxMTcyIDExQUY7CitDNEREO0M0REQ7MTEwQSAxMTcyIDExQjA7QzRERDsxMTBBIDExNzIgMTFCMDsKK0M0REU7QzRERTsxMTBBIDExNzIgMTFCMTtDNERFOzExMEEgMTE3MiAxMUIxOworQzRERjtDNERGOzExMEEgMTE3MiAxMUIyO0M0REY7MTEwQSAxMTcyIDExQjI7CitDNEUwO0M0RTA7MTEwQSAxMTcyIDExQjM7QzRFMDsxMTBBIDExNzIgMTFCMzsKK0M0RTE7QzRFMTsxMTBBIDExNzIgMTFCNDtDNEUxOzExMEEgMTE3MiAxMUI0OworQzRFMjtDNEUyOzExMEEgMTE3MiAxMUI1O0M0RTI7MTEwQSAxMTcyIDExQjU7CitDNEUzO0M0RTM7MTEwQSAxMTcyIDExQjY7QzRFMzsxMTBBIDExNzIgMTFCNjsKK0M0RTQ7QzRFNDsxMTBBIDExNzIgMTFCNztDNEU0OzExMEEgMTE3MiAxMUI3OworQzRFNTtDNEU1OzExMEEgMTE3MiAxMUI4O0M0RTU7MTEwQSAxMTcyIDExQjg7CitDNEU2O0M0RTY7MTEwQSAxMTcyIDExQjk7QzRFNjsxMTBBIDExNzIgMTFCOTsKK0M0RTc7QzRFNzsxMTBBIDExNzIgMTFCQTtDNEU3OzExMEEgMTE3MiAxMUJBOworQzRFODtDNEU4OzExMEEgMTE3MiAxMUJCO0M0RTg7MTEwQSAxMTcyIDExQkI7CitDNEU5O0M0RTk7MTEwQSAxMTcyIDExQkM7QzRFOTsxMTBBIDExNzIgMTFCQzsKK0M0RUE7QzRFQTsxMTBBIDExNzIgMTFCRDtDNEVBOzExMEEgMTE3MiAxMUJEOworQzRFQjtDNEVCOzExMEEgMTE3MiAxMUJFO0M0RUI7MTEwQSAxMTcyIDExQkU7CitDNEVDO0M0RUM7MTEwQSAxMTcyIDExQkY7QzRFQzsxMTBBIDExNzIgMTFCRjsKK0M0RUQ7QzRFRDsxMTBBIDExNzIgMTFDMDtDNEVEOzExMEEgMTE3MiAxMUMwOworQzRFRTtDNEVFOzExMEEgMTE3MiAxMUMxO0M0RUU7MTEwQSAxMTcyIDExQzE7CitDNEVGO0M0RUY7MTEwQSAxMTcyIDExQzI7QzRFRjsxMTBBIDExNzIgMTFDMjsKK0M0RjA7QzRGMDsxMTBBIDExNzM7QzRGMDsxMTBBIDExNzM7CitDNEYxO0M0RjE7MTEwQSAxMTczIDExQTg7QzRGMTsxMTBBIDExNzMgMTFBODsKK0M0RjI7QzRGMjsxMTBBIDExNzMgMTFBOTtDNEYyOzExMEEgMTE3MyAxMUE5OworQzRGMztDNEYzOzExMEEgMTE3MyAxMUFBO0M0RjM7MTEwQSAxMTczIDExQUE7CitDNEY0O0M0RjQ7MTEwQSAxMTczIDExQUI7QzRGNDsxMTBBIDExNzMgMTFBQjsKK0M0RjU7QzRGNTsxMTBBIDExNzMgMTFBQztDNEY1OzExMEEgMTE3MyAxMUFDOworQzRGNjtDNEY2OzExMEEgMTE3MyAxMUFEO0M0RjY7MTEwQSAxMTczIDExQUQ7CitDNEY3O0M0Rjc7MTEwQSAxMTczIDExQUU7QzRGNzsxMTBBIDExNzMgMTFBRTsKK0M0Rjg7QzRGODsxMTBBIDExNzMgMTFBRjtDNEY4OzExMEEgMTE3MyAxMUFGOworQzRGOTtDNEY5OzExMEEgMTE3MyAxMUIwO0M0Rjk7MTEwQSAxMTczIDExQjA7CitDNEZBO0M0RkE7MTEwQSAxMTczIDExQjE7QzRGQTsxMTBBIDExNzMgMTFCMTsKK0M0RkI7QzRGQjsxMTBBIDExNzMgMTFCMjtDNEZCOzExMEEgMTE3MyAxMUIyOworQzRGQztDNEZDOzExMEEgMTE3MyAxMUIzO0M0RkM7MTEwQSAxMTczIDExQjM7CitDNEZEO0M0RkQ7MTEwQSAxMTczIDExQjQ7QzRGRDsxMTBBIDExNzMgMTFCNDsKK0M0RkU7QzRGRTsxMTBBIDExNzMgMTFCNTtDNEZFOzExMEEgMTE3MyAxMUI1OworQzRGRjtDNEZGOzExMEEgMTE3MyAxMUI2O0M0RkY7MTEwQSAxMTczIDExQjY7CitDNTAwO0M1MDA7MTEwQSAxMTczIDExQjc7QzUwMDsxMTBBIDExNzMgMTFCNzsKK0M1MDE7QzUwMTsxMTBBIDExNzMgMTFCODtDNTAxOzExMEEgMTE3MyAxMUI4OworQzUwMjtDNTAyOzExMEEgMTE3MyAxMUI5O0M1MDI7MTEwQSAxMTczIDExQjk7CitDNTAzO0M1MDM7MTEwQSAxMTczIDExQkE7QzUwMzsxMTBBIDExNzMgMTFCQTsKK0M1MDQ7QzUwNDsxMTBBIDExNzMgMTFCQjtDNTA0OzExMEEgMTE3MyAxMUJCOworQzUwNTtDNTA1OzExMEEgMTE3MyAxMUJDO0M1MDU7MTEwQSAxMTczIDExQkM7CitDNTA2O0M1MDY7MTEwQSAxMTczIDExQkQ7QzUwNjsxMTBBIDExNzMgMTFCRDsKK0M1MDc7QzUwNzsxMTBBIDExNzMgMTFCRTtDNTA3OzExMEEgMTE3MyAxMUJFOworQzUwODtDNTA4OzExMEEgMTE3MyAxMUJGO0M1MDg7MTEwQSAxMTczIDExQkY7CitDNTA5O0M1MDk7MTEwQSAxMTczIDExQzA7QzUwOTsxMTBBIDExNzMgMTFDMDsKK0M1MEE7QzUwQTsxMTBBIDExNzMgMTFDMTtDNTBBOzExMEEgMTE3MyAxMUMxOworQzUwQjtDNTBCOzExMEEgMTE3MyAxMUMyO0M1MEI7MTEwQSAxMTczIDExQzI7CitDNTBDO0M1MEM7MTEwQSAxMTc0O0M1MEM7MTEwQSAxMTc0OworQzUwRDtDNTBEOzExMEEgMTE3NCAxMUE4O0M1MEQ7MTEwQSAxMTc0IDExQTg7CitDNTBFO0M1MEU7MTEwQSAxMTc0IDExQTk7QzUwRTsxMTBBIDExNzQgMTFBOTsKK0M1MEY7QzUwRjsxMTBBIDExNzQgMTFBQTtDNTBGOzExMEEgMTE3NCAxMUFBOworQzUxMDtDNTEwOzExMEEgMTE3NCAxMUFCO0M1MTA7MTEwQSAxMTc0IDExQUI7CitDNTExO0M1MTE7MTEwQSAxMTc0IDExQUM7QzUxMTsxMTBBIDExNzQgMTFBQzsKK0M1MTI7QzUxMjsxMTBBIDExNzQgMTFBRDtDNTEyOzExMEEgMTE3NCAxMUFEOworQzUxMztDNTEzOzExMEEgMTE3NCAxMUFFO0M1MTM7MTEwQSAxMTc0IDExQUU7CitDNTE0O0M1MTQ7MTEwQSAxMTc0IDExQUY7QzUxNDsxMTBBIDExNzQgMTFBRjsKK0M1MTU7QzUxNTsxMTBBIDExNzQgMTFCMDtDNTE1OzExMEEgMTE3NCAxMUIwOworQzUxNjtDNTE2OzExMEEgMTE3NCAxMUIxO0M1MTY7MTEwQSAxMTc0IDExQjE7CitDNTE3O0M1MTc7MTEwQSAxMTc0IDExQjI7QzUxNzsxMTBBIDExNzQgMTFCMjsKK0M1MTg7QzUxODsxMTBBIDExNzQgMTFCMztDNTE4OzExMEEgMTE3NCAxMUIzOworQzUxOTtDNTE5OzExMEEgMTE3NCAxMUI0O0M1MTk7MTEwQSAxMTc0IDExQjQ7CitDNTFBO0M1MUE7MTEwQSAxMTc0IDExQjU7QzUxQTsxMTBBIDExNzQgMTFCNTsKK0M1MUI7QzUxQjsxMTBBIDExNzQgMTFCNjtDNTFCOzExMEEgMTE3NCAxMUI2OworQzUxQztDNTFDOzExMEEgMTE3NCAxMUI3O0M1MUM7MTEwQSAxMTc0IDExQjc7CitDNTFEO0M1MUQ7MTEwQSAxMTc0IDExQjg7QzUxRDsxMTBBIDExNzQgMTFCODsKK0M1MUU7QzUxRTsxMTBBIDExNzQgMTFCOTtDNTFFOzExMEEgMTE3NCAxMUI5OworQzUxRjtDNTFGOzExMEEgMTE3NCAxMUJBO0M1MUY7MTEwQSAxMTc0IDExQkE7CitDNTIwO0M1MjA7MTEwQSAxMTc0IDExQkI7QzUyMDsxMTBBIDExNzQgMTFCQjsKK0M1MjE7QzUyMTsxMTBBIDExNzQgMTFCQztDNTIxOzExMEEgMTE3NCAxMUJDOworQzUyMjtDNTIyOzExMEEgMTE3NCAxMUJEO0M1MjI7MTEwQSAxMTc0IDExQkQ7CitDNTIzO0M1MjM7MTEwQSAxMTc0IDExQkU7QzUyMzsxMTBBIDExNzQgMTFCRTsKK0M1MjQ7QzUyNDsxMTBBIDExNzQgMTFCRjtDNTI0OzExMEEgMTE3NCAxMUJGOworQzUyNTtDNTI1OzExMEEgMTE3NCAxMUMwO0M1MjU7MTEwQSAxMTc0IDExQzA7CitDNTI2O0M1MjY7MTEwQSAxMTc0IDExQzE7QzUyNjsxMTBBIDExNzQgMTFDMTsKK0M1Mjc7QzUyNzsxMTBBIDExNzQgMTFDMjtDNTI3OzExMEEgMTE3NCAxMUMyOworQzUyODtDNTI4OzExMEEgMTE3NTtDNTI4OzExMEEgMTE3NTsKK0M1Mjk7QzUyOTsxMTBBIDExNzUgMTFBODtDNTI5OzExMEEgMTE3NSAxMUE4OworQzUyQTtDNTJBOzExMEEgMTE3NSAxMUE5O0M1MkE7MTEwQSAxMTc1IDExQTk7CitDNTJCO0M1MkI7MTEwQSAxMTc1IDExQUE7QzUyQjsxMTBBIDExNzUgMTFBQTsKK0M1MkM7QzUyQzsxMTBBIDExNzUgMTFBQjtDNTJDOzExMEEgMTE3NSAxMUFCOworQzUyRDtDNTJEOzExMEEgMTE3NSAxMUFDO0M1MkQ7MTEwQSAxMTc1IDExQUM7CitDNTJFO0M1MkU7MTEwQSAxMTc1IDExQUQ7QzUyRTsxMTBBIDExNzUgMTFBRDsKK0M1MkY7QzUyRjsxMTBBIDExNzUgMTFBRTtDNTJGOzExMEEgMTE3NSAxMUFFOworQzUzMDtDNTMwOzExMEEgMTE3NSAxMUFGO0M1MzA7MTEwQSAxMTc1IDExQUY7CitDNTMxO0M1MzE7MTEwQSAxMTc1IDExQjA7QzUzMTsxMTBBIDExNzUgMTFCMDsKK0M1MzI7QzUzMjsxMTBBIDExNzUgMTFCMTtDNTMyOzExMEEgMTE3NSAxMUIxOworQzUzMztDNTMzOzExMEEgMTE3NSAxMUIyO0M1MzM7MTEwQSAxMTc1IDExQjI7CitDNTM0O0M1MzQ7MTEwQSAxMTc1IDExQjM7QzUzNDsxMTBBIDExNzUgMTFCMzsKK0M1MzU7QzUzNTsxMTBBIDExNzUgMTFCNDtDNTM1OzExMEEgMTE3NSAxMUI0OworQzUzNjtDNTM2OzExMEEgMTE3NSAxMUI1O0M1MzY7MTEwQSAxMTc1IDExQjU7CitDNTM3O0M1Mzc7MTEwQSAxMTc1IDExQjY7QzUzNzsxMTBBIDExNzUgMTFCNjsKK0M1Mzg7QzUzODsxMTBBIDExNzUgMTFCNztDNTM4OzExMEEgMTE3NSAxMUI3OworQzUzOTtDNTM5OzExMEEgMTE3NSAxMUI4O0M1Mzk7MTEwQSAxMTc1IDExQjg7CitDNTNBO0M1M0E7MTEwQSAxMTc1IDExQjk7QzUzQTsxMTBBIDExNzUgMTFCOTsKK0M1M0I7QzUzQjsxMTBBIDExNzUgMTFCQTtDNTNCOzExMEEgMTE3NSAxMUJBOworQzUzQztDNTNDOzExMEEgMTE3NSAxMUJCO0M1M0M7MTEwQSAxMTc1IDExQkI7CitDNTNEO0M1M0Q7MTEwQSAxMTc1IDExQkM7QzUzRDsxMTBBIDExNzUgMTFCQzsKK0M1M0U7QzUzRTsxMTBBIDExNzUgMTFCRDtDNTNFOzExMEEgMTE3NSAxMUJEOworQzUzRjtDNTNGOzExMEEgMTE3NSAxMUJFO0M1M0Y7MTEwQSAxMTc1IDExQkU7CitDNTQwO0M1NDA7MTEwQSAxMTc1IDExQkY7QzU0MDsxMTBBIDExNzUgMTFCRjsKK0M1NDE7QzU0MTsxMTBBIDExNzUgMTFDMDtDNTQxOzExMEEgMTE3NSAxMUMwOworQzU0MjtDNTQyOzExMEEgMTE3NSAxMUMxO0M1NDI7MTEwQSAxMTc1IDExQzE7CitDNTQzO0M1NDM7MTEwQSAxMTc1IDExQzI7QzU0MzsxMTBBIDExNzUgMTFDMjsKK0M1NDQ7QzU0NDsxMTBCIDExNjE7QzU0NDsxMTBCIDExNjE7CitDNTQ1O0M1NDU7MTEwQiAxMTYxIDExQTg7QzU0NTsxMTBCIDExNjEgMTFBODsKK0M1NDY7QzU0NjsxMTBCIDExNjEgMTFBOTtDNTQ2OzExMEIgMTE2MSAxMUE5OworQzU0NztDNTQ3OzExMEIgMTE2MSAxMUFBO0M1NDc7MTEwQiAxMTYxIDExQUE7CitDNTQ4O0M1NDg7MTEwQiAxMTYxIDExQUI7QzU0ODsxMTBCIDExNjEgMTFBQjsKK0M1NDk7QzU0OTsxMTBCIDExNjEgMTFBQztDNTQ5OzExMEIgMTE2MSAxMUFDOworQzU0QTtDNTRBOzExMEIgMTE2MSAxMUFEO0M1NEE7MTEwQiAxMTYxIDExQUQ7CitDNTRCO0M1NEI7MTEwQiAxMTYxIDExQUU7QzU0QjsxMTBCIDExNjEgMTFBRTsKK0M1NEM7QzU0QzsxMTBCIDExNjEgMTFBRjtDNTRDOzExMEIgMTE2MSAxMUFGOworQzU0RDtDNTREOzExMEIgMTE2MSAxMUIwO0M1NEQ7MTEwQiAxMTYxIDExQjA7CitDNTRFO0M1NEU7MTEwQiAxMTYxIDExQjE7QzU0RTsxMTBCIDExNjEgMTFCMTsKK0M1NEY7QzU0RjsxMTBCIDExNjEgMTFCMjtDNTRGOzExMEIgMTE2MSAxMUIyOworQzU1MDtDNTUwOzExMEIgMTE2MSAxMUIzO0M1NTA7MTEwQiAxMTYxIDExQjM7CitDNTUxO0M1NTE7MTEwQiAxMTYxIDExQjQ7QzU1MTsxMTBCIDExNjEgMTFCNDsKK0M1NTI7QzU1MjsxMTBCIDExNjEgMTFCNTtDNTUyOzExMEIgMTE2MSAxMUI1OworQzU1MztDNTUzOzExMEIgMTE2MSAxMUI2O0M1NTM7MTEwQiAxMTYxIDExQjY7CitDNTU0O0M1NTQ7MTEwQiAxMTYxIDExQjc7QzU1NDsxMTBCIDExNjEgMTFCNzsKK0M1NTU7QzU1NTsxMTBCIDExNjEgMTFCODtDNTU1OzExMEIgMTE2MSAxMUI4OworQzU1NjtDNTU2OzExMEIgMTE2MSAxMUI5O0M1NTY7MTEwQiAxMTYxIDExQjk7CitDNTU3O0M1NTc7MTEwQiAxMTYxIDExQkE7QzU1NzsxMTBCIDExNjEgMTFCQTsKK0M1NTg7QzU1ODsxMTBCIDExNjEgMTFCQjtDNTU4OzExMEIgMTE2MSAxMUJCOworQzU1OTtDNTU5OzExMEIgMTE2MSAxMUJDO0M1NTk7MTEwQiAxMTYxIDExQkM7CitDNTVBO0M1NUE7MTEwQiAxMTYxIDExQkQ7QzU1QTsxMTBCIDExNjEgMTFCRDsKK0M1NUI7QzU1QjsxMTBCIDExNjEgMTFCRTtDNTVCOzExMEIgMTE2MSAxMUJFOworQzU1QztDNTVDOzExMEIgMTE2MSAxMUJGO0M1NUM7MTEwQiAxMTYxIDExQkY7CitDNTVEO0M1NUQ7MTEwQiAxMTYxIDExQzA7QzU1RDsxMTBCIDExNjEgMTFDMDsKK0M1NUU7QzU1RTsxMTBCIDExNjEgMTFDMTtDNTVFOzExMEIgMTE2MSAxMUMxOworQzU1RjtDNTVGOzExMEIgMTE2MSAxMUMyO0M1NUY7MTEwQiAxMTYxIDExQzI7CitDNTYwO0M1NjA7MTEwQiAxMTYyO0M1NjA7MTEwQiAxMTYyOworQzU2MTtDNTYxOzExMEIgMTE2MiAxMUE4O0M1NjE7MTEwQiAxMTYyIDExQTg7CitDNTYyO0M1NjI7MTEwQiAxMTYyIDExQTk7QzU2MjsxMTBCIDExNjIgMTFBOTsKK0M1NjM7QzU2MzsxMTBCIDExNjIgMTFBQTtDNTYzOzExMEIgMTE2MiAxMUFBOworQzU2NDtDNTY0OzExMEIgMTE2MiAxMUFCO0M1NjQ7MTEwQiAxMTYyIDExQUI7CitDNTY1O0M1NjU7MTEwQiAxMTYyIDExQUM7QzU2NTsxMTBCIDExNjIgMTFBQzsKK0M1NjY7QzU2NjsxMTBCIDExNjIgMTFBRDtDNTY2OzExMEIgMTE2MiAxMUFEOworQzU2NztDNTY3OzExMEIgMTE2MiAxMUFFO0M1Njc7MTEwQiAxMTYyIDExQUU7CitDNTY4O0M1Njg7MTEwQiAxMTYyIDExQUY7QzU2ODsxMTBCIDExNjIgMTFBRjsKK0M1Njk7QzU2OTsxMTBCIDExNjIgMTFCMDtDNTY5OzExMEIgMTE2MiAxMUIwOworQzU2QTtDNTZBOzExMEIgMTE2MiAxMUIxO0M1NkE7MTEwQiAxMTYyIDExQjE7CitDNTZCO0M1NkI7MTEwQiAxMTYyIDExQjI7QzU2QjsxMTBCIDExNjIgMTFCMjsKK0M1NkM7QzU2QzsxMTBCIDExNjIgMTFCMztDNTZDOzExMEIgMTE2MiAxMUIzOworQzU2RDtDNTZEOzExMEIgMTE2MiAxMUI0O0M1NkQ7MTEwQiAxMTYyIDExQjQ7CitDNTZFO0M1NkU7MTEwQiAxMTYyIDExQjU7QzU2RTsxMTBCIDExNjIgMTFCNTsKK0M1NkY7QzU2RjsxMTBCIDExNjIgMTFCNjtDNTZGOzExMEIgMTE2MiAxMUI2OworQzU3MDtDNTcwOzExMEIgMTE2MiAxMUI3O0M1NzA7MTEwQiAxMTYyIDExQjc7CitDNTcxO0M1NzE7MTEwQiAxMTYyIDExQjg7QzU3MTsxMTBCIDExNjIgMTFCODsKK0M1NzI7QzU3MjsxMTBCIDExNjIgMTFCOTtDNTcyOzExMEIgMTE2MiAxMUI5OworQzU3MztDNTczOzExMEIgMTE2MiAxMUJBO0M1NzM7MTEwQiAxMTYyIDExQkE7CitDNTc0O0M1NzQ7MTEwQiAxMTYyIDExQkI7QzU3NDsxMTBCIDExNjIgMTFCQjsKK0M1NzU7QzU3NTsxMTBCIDExNjIgMTFCQztDNTc1OzExMEIgMTE2MiAxMUJDOworQzU3NjtDNTc2OzExMEIgMTE2MiAxMUJEO0M1NzY7MTEwQiAxMTYyIDExQkQ7CitDNTc3O0M1Nzc7MTEwQiAxMTYyIDExQkU7QzU3NzsxMTBCIDExNjIgMTFCRTsKK0M1Nzg7QzU3ODsxMTBCIDExNjIgMTFCRjtDNTc4OzExMEIgMTE2MiAxMUJGOworQzU3OTtDNTc5OzExMEIgMTE2MiAxMUMwO0M1Nzk7MTEwQiAxMTYyIDExQzA7CitDNTdBO0M1N0E7MTEwQiAxMTYyIDExQzE7QzU3QTsxMTBCIDExNjIgMTFDMTsKK0M1N0I7QzU3QjsxMTBCIDExNjIgMTFDMjtDNTdCOzExMEIgMTE2MiAxMUMyOworQzU3QztDNTdDOzExMEIgMTE2MztDNTdDOzExMEIgMTE2MzsKK0M1N0Q7QzU3RDsxMTBCIDExNjMgMTFBODtDNTdEOzExMEIgMTE2MyAxMUE4OworQzU3RTtDNTdFOzExMEIgMTE2MyAxMUE5O0M1N0U7MTEwQiAxMTYzIDExQTk7CitDNTdGO0M1N0Y7MTEwQiAxMTYzIDExQUE7QzU3RjsxMTBCIDExNjMgMTFBQTsKK0M1ODA7QzU4MDsxMTBCIDExNjMgMTFBQjtDNTgwOzExMEIgMTE2MyAxMUFCOworQzU4MTtDNTgxOzExMEIgMTE2MyAxMUFDO0M1ODE7MTEwQiAxMTYzIDExQUM7CitDNTgyO0M1ODI7MTEwQiAxMTYzIDExQUQ7QzU4MjsxMTBCIDExNjMgMTFBRDsKK0M1ODM7QzU4MzsxMTBCIDExNjMgMTFBRTtDNTgzOzExMEIgMTE2MyAxMUFFOworQzU4NDtDNTg0OzExMEIgMTE2MyAxMUFGO0M1ODQ7MTEwQiAxMTYzIDExQUY7CitDNTg1O0M1ODU7MTEwQiAxMTYzIDExQjA7QzU4NTsxMTBCIDExNjMgMTFCMDsKK0M1ODY7QzU4NjsxMTBCIDExNjMgMTFCMTtDNTg2OzExMEIgMTE2MyAxMUIxOworQzU4NztDNTg3OzExMEIgMTE2MyAxMUIyO0M1ODc7MTEwQiAxMTYzIDExQjI7CitDNTg4O0M1ODg7MTEwQiAxMTYzIDExQjM7QzU4ODsxMTBCIDExNjMgMTFCMzsKK0M1ODk7QzU4OTsxMTBCIDExNjMgMTFCNDtDNTg5OzExMEIgMTE2MyAxMUI0OworQzU4QTtDNThBOzExMEIgMTE2MyAxMUI1O0M1OEE7MTEwQiAxMTYzIDExQjU7CitDNThCO0M1OEI7MTEwQiAxMTYzIDExQjY7QzU4QjsxMTBCIDExNjMgMTFCNjsKK0M1OEM7QzU4QzsxMTBCIDExNjMgMTFCNztDNThDOzExMEIgMTE2MyAxMUI3OworQzU4RDtDNThEOzExMEIgMTE2MyAxMUI4O0M1OEQ7MTEwQiAxMTYzIDExQjg7CitDNThFO0M1OEU7MTEwQiAxMTYzIDExQjk7QzU4RTsxMTBCIDExNjMgMTFCOTsKK0M1OEY7QzU4RjsxMTBCIDExNjMgMTFCQTtDNThGOzExMEIgMTE2MyAxMUJBOworQzU5MDtDNTkwOzExMEIgMTE2MyAxMUJCO0M1OTA7MTEwQiAxMTYzIDExQkI7CitDNTkxO0M1OTE7MTEwQiAxMTYzIDExQkM7QzU5MTsxMTBCIDExNjMgMTFCQzsKK0M1OTI7QzU5MjsxMTBCIDExNjMgMTFCRDtDNTkyOzExMEIgMTE2MyAxMUJEOworQzU5MztDNTkzOzExMEIgMTE2MyAxMUJFO0M1OTM7MTEwQiAxMTYzIDExQkU7CitDNTk0O0M1OTQ7MTEwQiAxMTYzIDExQkY7QzU5NDsxMTBCIDExNjMgMTFCRjsKK0M1OTU7QzU5NTsxMTBCIDExNjMgMTFDMDtDNTk1OzExMEIgMTE2MyAxMUMwOworQzU5NjtDNTk2OzExMEIgMTE2MyAxMUMxO0M1OTY7MTEwQiAxMTYzIDExQzE7CitDNTk3O0M1OTc7MTEwQiAxMTYzIDExQzI7QzU5NzsxMTBCIDExNjMgMTFDMjsKK0M1OTg7QzU5ODsxMTBCIDExNjQ7QzU5ODsxMTBCIDExNjQ7CitDNTk5O0M1OTk7MTEwQiAxMTY0IDExQTg7QzU5OTsxMTBCIDExNjQgMTFBODsKK0M1OUE7QzU5QTsxMTBCIDExNjQgMTFBOTtDNTlBOzExMEIgMTE2NCAxMUE5OworQzU5QjtDNTlCOzExMEIgMTE2NCAxMUFBO0M1OUI7MTEwQiAxMTY0IDExQUE7CitDNTlDO0M1OUM7MTEwQiAxMTY0IDExQUI7QzU5QzsxMTBCIDExNjQgMTFBQjsKK0M1OUQ7QzU5RDsxMTBCIDExNjQgMTFBQztDNTlEOzExMEIgMTE2NCAxMUFDOworQzU5RTtDNTlFOzExMEIgMTE2NCAxMUFEO0M1OUU7MTEwQiAxMTY0IDExQUQ7CitDNTlGO0M1OUY7MTEwQiAxMTY0IDExQUU7QzU5RjsxMTBCIDExNjQgMTFBRTsKK0M1QTA7QzVBMDsxMTBCIDExNjQgMTFBRjtDNUEwOzExMEIgMTE2NCAxMUFGOworQzVBMTtDNUExOzExMEIgMTE2NCAxMUIwO0M1QTE7MTEwQiAxMTY0IDExQjA7CitDNUEyO0M1QTI7MTEwQiAxMTY0IDExQjE7QzVBMjsxMTBCIDExNjQgMTFCMTsKK0M1QTM7QzVBMzsxMTBCIDExNjQgMTFCMjtDNUEzOzExMEIgMTE2NCAxMUIyOworQzVBNDtDNUE0OzExMEIgMTE2NCAxMUIzO0M1QTQ7MTEwQiAxMTY0IDExQjM7CitDNUE1O0M1QTU7MTEwQiAxMTY0IDExQjQ7QzVBNTsxMTBCIDExNjQgMTFCNDsKK0M1QTY7QzVBNjsxMTBCIDExNjQgMTFCNTtDNUE2OzExMEIgMTE2NCAxMUI1OworQzVBNztDNUE3OzExMEIgMTE2NCAxMUI2O0M1QTc7MTEwQiAxMTY0IDExQjY7CitDNUE4O0M1QTg7MTEwQiAxMTY0IDExQjc7QzVBODsxMTBCIDExNjQgMTFCNzsKK0M1QTk7QzVBOTsxMTBCIDExNjQgMTFCODtDNUE5OzExMEIgMTE2NCAxMUI4OworQzVBQTtDNUFBOzExMEIgMTE2NCAxMUI5O0M1QUE7MTEwQiAxMTY0IDExQjk7CitDNUFCO0M1QUI7MTEwQiAxMTY0IDExQkE7QzVBQjsxMTBCIDExNjQgMTFCQTsKK0M1QUM7QzVBQzsxMTBCIDExNjQgMTFCQjtDNUFDOzExMEIgMTE2NCAxMUJCOworQzVBRDtDNUFEOzExMEIgMTE2NCAxMUJDO0M1QUQ7MTEwQiAxMTY0IDExQkM7CitDNUFFO0M1QUU7MTEwQiAxMTY0IDExQkQ7QzVBRTsxMTBCIDExNjQgMTFCRDsKK0M1QUY7QzVBRjsxMTBCIDExNjQgMTFCRTtDNUFGOzExMEIgMTE2NCAxMUJFOworQzVCMDtDNUIwOzExMEIgMTE2NCAxMUJGO0M1QjA7MTEwQiAxMTY0IDExQkY7CitDNUIxO0M1QjE7MTEwQiAxMTY0IDExQzA7QzVCMTsxMTBCIDExNjQgMTFDMDsKK0M1QjI7QzVCMjsxMTBCIDExNjQgMTFDMTtDNUIyOzExMEIgMTE2NCAxMUMxOworQzVCMztDNUIzOzExMEIgMTE2NCAxMUMyO0M1QjM7MTEwQiAxMTY0IDExQzI7CitDNUI0O0M1QjQ7MTEwQiAxMTY1O0M1QjQ7MTEwQiAxMTY1OworQzVCNTtDNUI1OzExMEIgMTE2NSAxMUE4O0M1QjU7MTEwQiAxMTY1IDExQTg7CitDNUI2O0M1QjY7MTEwQiAxMTY1IDExQTk7QzVCNjsxMTBCIDExNjUgMTFBOTsKK0M1Qjc7QzVCNzsxMTBCIDExNjUgMTFBQTtDNUI3OzExMEIgMTE2NSAxMUFBOworQzVCODtDNUI4OzExMEIgMTE2NSAxMUFCO0M1Qjg7MTEwQiAxMTY1IDExQUI7CitDNUI5O0M1Qjk7MTEwQiAxMTY1IDExQUM7QzVCOTsxMTBCIDExNjUgMTFBQzsKK0M1QkE7QzVCQTsxMTBCIDExNjUgMTFBRDtDNUJBOzExMEIgMTE2NSAxMUFEOworQzVCQjtDNUJCOzExMEIgMTE2NSAxMUFFO0M1QkI7MTEwQiAxMTY1IDExQUU7CitDNUJDO0M1QkM7MTEwQiAxMTY1IDExQUY7QzVCQzsxMTBCIDExNjUgMTFBRjsKK0M1QkQ7QzVCRDsxMTBCIDExNjUgMTFCMDtDNUJEOzExMEIgMTE2NSAxMUIwOworQzVCRTtDNUJFOzExMEIgMTE2NSAxMUIxO0M1QkU7MTEwQiAxMTY1IDExQjE7CitDNUJGO0M1QkY7MTEwQiAxMTY1IDExQjI7QzVCRjsxMTBCIDExNjUgMTFCMjsKK0M1QzA7QzVDMDsxMTBCIDExNjUgMTFCMztDNUMwOzExMEIgMTE2NSAxMUIzOworQzVDMTtDNUMxOzExMEIgMTE2NSAxMUI0O0M1QzE7MTEwQiAxMTY1IDExQjQ7CitDNUMyO0M1QzI7MTEwQiAxMTY1IDExQjU7QzVDMjsxMTBCIDExNjUgMTFCNTsKK0M1QzM7QzVDMzsxMTBCIDExNjUgMTFCNjtDNUMzOzExMEIgMTE2NSAxMUI2OworQzVDNDtDNUM0OzExMEIgMTE2NSAxMUI3O0M1QzQ7MTEwQiAxMTY1IDExQjc7CitDNUM1O0M1QzU7MTEwQiAxMTY1IDExQjg7QzVDNTsxMTBCIDExNjUgMTFCODsKK0M1QzY7QzVDNjsxMTBCIDExNjUgMTFCOTtDNUM2OzExMEIgMTE2NSAxMUI5OworQzVDNztDNUM3OzExMEIgMTE2NSAxMUJBO0M1Qzc7MTEwQiAxMTY1IDExQkE7CitDNUM4O0M1Qzg7MTEwQiAxMTY1IDExQkI7QzVDODsxMTBCIDExNjUgMTFCQjsKK0M1Qzk7QzVDOTsxMTBCIDExNjUgMTFCQztDNUM5OzExMEIgMTE2NSAxMUJDOworQzVDQTtDNUNBOzExMEIgMTE2NSAxMUJEO0M1Q0E7MTEwQiAxMTY1IDExQkQ7CitDNUNCO0M1Q0I7MTEwQiAxMTY1IDExQkU7QzVDQjsxMTBCIDExNjUgMTFCRTsKK0M1Q0M7QzVDQzsxMTBCIDExNjUgMTFCRjtDNUNDOzExMEIgMTE2NSAxMUJGOworQzVDRDtDNUNEOzExMEIgMTE2NSAxMUMwO0M1Q0Q7MTEwQiAxMTY1IDExQzA7CitDNUNFO0M1Q0U7MTEwQiAxMTY1IDExQzE7QzVDRTsxMTBCIDExNjUgMTFDMTsKK0M1Q0Y7QzVDRjsxMTBCIDExNjUgMTFDMjtDNUNGOzExMEIgMTE2NSAxMUMyOworQzVEMDtDNUQwOzExMEIgMTE2NjtDNUQwOzExMEIgMTE2NjsKK0M1RDE7QzVEMTsxMTBCIDExNjYgMTFBODtDNUQxOzExMEIgMTE2NiAxMUE4OworQzVEMjtDNUQyOzExMEIgMTE2NiAxMUE5O0M1RDI7MTEwQiAxMTY2IDExQTk7CitDNUQzO0M1RDM7MTEwQiAxMTY2IDExQUE7QzVEMzsxMTBCIDExNjYgMTFBQTsKK0M1RDQ7QzVENDsxMTBCIDExNjYgMTFBQjtDNUQ0OzExMEIgMTE2NiAxMUFCOworQzVENTtDNUQ1OzExMEIgMTE2NiAxMUFDO0M1RDU7MTEwQiAxMTY2IDExQUM7CitDNUQ2O0M1RDY7MTEwQiAxMTY2IDExQUQ7QzVENjsxMTBCIDExNjYgMTFBRDsKK0M1RDc7QzVENzsxMTBCIDExNjYgMTFBRTtDNUQ3OzExMEIgMTE2NiAxMUFFOworQzVEODtDNUQ4OzExMEIgMTE2NiAxMUFGO0M1RDg7MTEwQiAxMTY2IDExQUY7CitDNUQ5O0M1RDk7MTEwQiAxMTY2IDExQjA7QzVEOTsxMTBCIDExNjYgMTFCMDsKK0M1REE7QzVEQTsxMTBCIDExNjYgMTFCMTtDNURBOzExMEIgMTE2NiAxMUIxOworQzVEQjtDNURCOzExMEIgMTE2NiAxMUIyO0M1REI7MTEwQiAxMTY2IDExQjI7CitDNURDO0M1REM7MTEwQiAxMTY2IDExQjM7QzVEQzsxMTBCIDExNjYgMTFCMzsKK0M1REQ7QzVERDsxMTBCIDExNjYgMTFCNDtDNUREOzExMEIgMTE2NiAxMUI0OworQzVERTtDNURFOzExMEIgMTE2NiAxMUI1O0M1REU7MTEwQiAxMTY2IDExQjU7CitDNURGO0M1REY7MTEwQiAxMTY2IDExQjY7QzVERjsxMTBCIDExNjYgMTFCNjsKK0M1RTA7QzVFMDsxMTBCIDExNjYgMTFCNztDNUUwOzExMEIgMTE2NiAxMUI3OworQzVFMTtDNUUxOzExMEIgMTE2NiAxMUI4O0M1RTE7MTEwQiAxMTY2IDExQjg7CitDNUUyO0M1RTI7MTEwQiAxMTY2IDExQjk7QzVFMjsxMTBCIDExNjYgMTFCOTsKK0M1RTM7QzVFMzsxMTBCIDExNjYgMTFCQTtDNUUzOzExMEIgMTE2NiAxMUJBOworQzVFNDtDNUU0OzExMEIgMTE2NiAxMUJCO0M1RTQ7MTEwQiAxMTY2IDExQkI7CitDNUU1O0M1RTU7MTEwQiAxMTY2IDExQkM7QzVFNTsxMTBCIDExNjYgMTFCQzsKK0M1RTY7QzVFNjsxMTBCIDExNjYgMTFCRDtDNUU2OzExMEIgMTE2NiAxMUJEOworQzVFNztDNUU3OzExMEIgMTE2NiAxMUJFO0M1RTc7MTEwQiAxMTY2IDExQkU7CitDNUU4O0M1RTg7MTEwQiAxMTY2IDExQkY7QzVFODsxMTBCIDExNjYgMTFCRjsKK0M1RTk7QzVFOTsxMTBCIDExNjYgMTFDMDtDNUU5OzExMEIgMTE2NiAxMUMwOworQzVFQTtDNUVBOzExMEIgMTE2NiAxMUMxO0M1RUE7MTEwQiAxMTY2IDExQzE7CitDNUVCO0M1RUI7MTEwQiAxMTY2IDExQzI7QzVFQjsxMTBCIDExNjYgMTFDMjsKK0M1RUM7QzVFQzsxMTBCIDExNjc7QzVFQzsxMTBCIDExNjc7CitDNUVEO0M1RUQ7MTEwQiAxMTY3IDExQTg7QzVFRDsxMTBCIDExNjcgMTFBODsKK0M1RUU7QzVFRTsxMTBCIDExNjcgMTFBOTtDNUVFOzExMEIgMTE2NyAxMUE5OworQzVFRjtDNUVGOzExMEIgMTE2NyAxMUFBO0M1RUY7MTEwQiAxMTY3IDExQUE7CitDNUYwO0M1RjA7MTEwQiAxMTY3IDExQUI7QzVGMDsxMTBCIDExNjcgMTFBQjsKK0M1RjE7QzVGMTsxMTBCIDExNjcgMTFBQztDNUYxOzExMEIgMTE2NyAxMUFDOworQzVGMjtDNUYyOzExMEIgMTE2NyAxMUFEO0M1RjI7MTEwQiAxMTY3IDExQUQ7CitDNUYzO0M1RjM7MTEwQiAxMTY3IDExQUU7QzVGMzsxMTBCIDExNjcgMTFBRTsKK0M1RjQ7QzVGNDsxMTBCIDExNjcgMTFBRjtDNUY0OzExMEIgMTE2NyAxMUFGOworQzVGNTtDNUY1OzExMEIgMTE2NyAxMUIwO0M1RjU7MTEwQiAxMTY3IDExQjA7CitDNUY2O0M1RjY7MTEwQiAxMTY3IDExQjE7QzVGNjsxMTBCIDExNjcgMTFCMTsKK0M1Rjc7QzVGNzsxMTBCIDExNjcgMTFCMjtDNUY3OzExMEIgMTE2NyAxMUIyOworQzVGODtDNUY4OzExMEIgMTE2NyAxMUIzO0M1Rjg7MTEwQiAxMTY3IDExQjM7CitDNUY5O0M1Rjk7MTEwQiAxMTY3IDExQjQ7QzVGOTsxMTBCIDExNjcgMTFCNDsKK0M1RkE7QzVGQTsxMTBCIDExNjcgMTFCNTtDNUZBOzExMEIgMTE2NyAxMUI1OworQzVGQjtDNUZCOzExMEIgMTE2NyAxMUI2O0M1RkI7MTEwQiAxMTY3IDExQjY7CitDNUZDO0M1RkM7MTEwQiAxMTY3IDExQjc7QzVGQzsxMTBCIDExNjcgMTFCNzsKK0M1RkQ7QzVGRDsxMTBCIDExNjcgMTFCODtDNUZEOzExMEIgMTE2NyAxMUI4OworQzVGRTtDNUZFOzExMEIgMTE2NyAxMUI5O0M1RkU7MTEwQiAxMTY3IDExQjk7CitDNUZGO0M1RkY7MTEwQiAxMTY3IDExQkE7QzVGRjsxMTBCIDExNjcgMTFCQTsKK0M2MDA7QzYwMDsxMTBCIDExNjcgMTFCQjtDNjAwOzExMEIgMTE2NyAxMUJCOworQzYwMTtDNjAxOzExMEIgMTE2NyAxMUJDO0M2MDE7MTEwQiAxMTY3IDExQkM7CitDNjAyO0M2MDI7MTEwQiAxMTY3IDExQkQ7QzYwMjsxMTBCIDExNjcgMTFCRDsKK0M2MDM7QzYwMzsxMTBCIDExNjcgMTFCRTtDNjAzOzExMEIgMTE2NyAxMUJFOworQzYwNDtDNjA0OzExMEIgMTE2NyAxMUJGO0M2MDQ7MTEwQiAxMTY3IDExQkY7CitDNjA1O0M2MDU7MTEwQiAxMTY3IDExQzA7QzYwNTsxMTBCIDExNjcgMTFDMDsKK0M2MDY7QzYwNjsxMTBCIDExNjcgMTFDMTtDNjA2OzExMEIgMTE2NyAxMUMxOworQzYwNztDNjA3OzExMEIgMTE2NyAxMUMyO0M2MDc7MTEwQiAxMTY3IDExQzI7CitDNjA4O0M2MDg7MTEwQiAxMTY4O0M2MDg7MTEwQiAxMTY4OworQzYwOTtDNjA5OzExMEIgMTE2OCAxMUE4O0M2MDk7MTEwQiAxMTY4IDExQTg7CitDNjBBO0M2MEE7MTEwQiAxMTY4IDExQTk7QzYwQTsxMTBCIDExNjggMTFBOTsKK0M2MEI7QzYwQjsxMTBCIDExNjggMTFBQTtDNjBCOzExMEIgMTE2OCAxMUFBOworQzYwQztDNjBDOzExMEIgMTE2OCAxMUFCO0M2MEM7MTEwQiAxMTY4IDExQUI7CitDNjBEO0M2MEQ7MTEwQiAxMTY4IDExQUM7QzYwRDsxMTBCIDExNjggMTFBQzsKK0M2MEU7QzYwRTsxMTBCIDExNjggMTFBRDtDNjBFOzExMEIgMTE2OCAxMUFEOworQzYwRjtDNjBGOzExMEIgMTE2OCAxMUFFO0M2MEY7MTEwQiAxMTY4IDExQUU7CitDNjEwO0M2MTA7MTEwQiAxMTY4IDExQUY7QzYxMDsxMTBCIDExNjggMTFBRjsKK0M2MTE7QzYxMTsxMTBCIDExNjggMTFCMDtDNjExOzExMEIgMTE2OCAxMUIwOworQzYxMjtDNjEyOzExMEIgMTE2OCAxMUIxO0M2MTI7MTEwQiAxMTY4IDExQjE7CitDNjEzO0M2MTM7MTEwQiAxMTY4IDExQjI7QzYxMzsxMTBCIDExNjggMTFCMjsKK0M2MTQ7QzYxNDsxMTBCIDExNjggMTFCMztDNjE0OzExMEIgMTE2OCAxMUIzOworQzYxNTtDNjE1OzExMEIgMTE2OCAxMUI0O0M2MTU7MTEwQiAxMTY4IDExQjQ7CitDNjE2O0M2MTY7MTEwQiAxMTY4IDExQjU7QzYxNjsxMTBCIDExNjggMTFCNTsKK0M2MTc7QzYxNzsxMTBCIDExNjggMTFCNjtDNjE3OzExMEIgMTE2OCAxMUI2OworQzYxODtDNjE4OzExMEIgMTE2OCAxMUI3O0M2MTg7MTEwQiAxMTY4IDExQjc7CitDNjE5O0M2MTk7MTEwQiAxMTY4IDExQjg7QzYxOTsxMTBCIDExNjggMTFCODsKK0M2MUE7QzYxQTsxMTBCIDExNjggMTFCOTtDNjFBOzExMEIgMTE2OCAxMUI5OworQzYxQjtDNjFCOzExMEIgMTE2OCAxMUJBO0M2MUI7MTEwQiAxMTY4IDExQkE7CitDNjFDO0M2MUM7MTEwQiAxMTY4IDExQkI7QzYxQzsxMTBCIDExNjggMTFCQjsKK0M2MUQ7QzYxRDsxMTBCIDExNjggMTFCQztDNjFEOzExMEIgMTE2OCAxMUJDOworQzYxRTtDNjFFOzExMEIgMTE2OCAxMUJEO0M2MUU7MTEwQiAxMTY4IDExQkQ7CitDNjFGO0M2MUY7MTEwQiAxMTY4IDExQkU7QzYxRjsxMTBCIDExNjggMTFCRTsKK0M2MjA7QzYyMDsxMTBCIDExNjggMTFCRjtDNjIwOzExMEIgMTE2OCAxMUJGOworQzYyMTtDNjIxOzExMEIgMTE2OCAxMUMwO0M2MjE7MTEwQiAxMTY4IDExQzA7CitDNjIyO0M2MjI7MTEwQiAxMTY4IDExQzE7QzYyMjsxMTBCIDExNjggMTFDMTsKK0M2MjM7QzYyMzsxMTBCIDExNjggMTFDMjtDNjIzOzExMEIgMTE2OCAxMUMyOworQzYyNDtDNjI0OzExMEIgMTE2OTtDNjI0OzExMEIgMTE2OTsKK0M2MjU7QzYyNTsxMTBCIDExNjkgMTFBODtDNjI1OzExMEIgMTE2OSAxMUE4OworQzYyNjtDNjI2OzExMEIgMTE2OSAxMUE5O0M2MjY7MTEwQiAxMTY5IDExQTk7CitDNjI3O0M2Mjc7MTEwQiAxMTY5IDExQUE7QzYyNzsxMTBCIDExNjkgMTFBQTsKK0M2Mjg7QzYyODsxMTBCIDExNjkgMTFBQjtDNjI4OzExMEIgMTE2OSAxMUFCOworQzYyOTtDNjI5OzExMEIgMTE2OSAxMUFDO0M2Mjk7MTEwQiAxMTY5IDExQUM7CitDNjJBO0M2MkE7MTEwQiAxMTY5IDExQUQ7QzYyQTsxMTBCIDExNjkgMTFBRDsKK0M2MkI7QzYyQjsxMTBCIDExNjkgMTFBRTtDNjJCOzExMEIgMTE2OSAxMUFFOworQzYyQztDNjJDOzExMEIgMTE2OSAxMUFGO0M2MkM7MTEwQiAxMTY5IDExQUY7CitDNjJEO0M2MkQ7MTEwQiAxMTY5IDExQjA7QzYyRDsxMTBCIDExNjkgMTFCMDsKK0M2MkU7QzYyRTsxMTBCIDExNjkgMTFCMTtDNjJFOzExMEIgMTE2OSAxMUIxOworQzYyRjtDNjJGOzExMEIgMTE2OSAxMUIyO0M2MkY7MTEwQiAxMTY5IDExQjI7CitDNjMwO0M2MzA7MTEwQiAxMTY5IDExQjM7QzYzMDsxMTBCIDExNjkgMTFCMzsKK0M2MzE7QzYzMTsxMTBCIDExNjkgMTFCNDtDNjMxOzExMEIgMTE2OSAxMUI0OworQzYzMjtDNjMyOzExMEIgMTE2OSAxMUI1O0M2MzI7MTEwQiAxMTY5IDExQjU7CitDNjMzO0M2MzM7MTEwQiAxMTY5IDExQjY7QzYzMzsxMTBCIDExNjkgMTFCNjsKK0M2MzQ7QzYzNDsxMTBCIDExNjkgMTFCNztDNjM0OzExMEIgMTE2OSAxMUI3OworQzYzNTtDNjM1OzExMEIgMTE2OSAxMUI4O0M2MzU7MTEwQiAxMTY5IDExQjg7CitDNjM2O0M2MzY7MTEwQiAxMTY5IDExQjk7QzYzNjsxMTBCIDExNjkgMTFCOTsKK0M2Mzc7QzYzNzsxMTBCIDExNjkgMTFCQTtDNjM3OzExMEIgMTE2OSAxMUJBOworQzYzODtDNjM4OzExMEIgMTE2OSAxMUJCO0M2Mzg7MTEwQiAxMTY5IDExQkI7CitDNjM5O0M2Mzk7MTEwQiAxMTY5IDExQkM7QzYzOTsxMTBCIDExNjkgMTFCQzsKK0M2M0E7QzYzQTsxMTBCIDExNjkgMTFCRDtDNjNBOzExMEIgMTE2OSAxMUJEOworQzYzQjtDNjNCOzExMEIgMTE2OSAxMUJFO0M2M0I7MTEwQiAxMTY5IDExQkU7CitDNjNDO0M2M0M7MTEwQiAxMTY5IDExQkY7QzYzQzsxMTBCIDExNjkgMTFCRjsKK0M2M0Q7QzYzRDsxMTBCIDExNjkgMTFDMDtDNjNEOzExMEIgMTE2OSAxMUMwOworQzYzRTtDNjNFOzExMEIgMTE2OSAxMUMxO0M2M0U7MTEwQiAxMTY5IDExQzE7CitDNjNGO0M2M0Y7MTEwQiAxMTY5IDExQzI7QzYzRjsxMTBCIDExNjkgMTFDMjsKK0M2NDA7QzY0MDsxMTBCIDExNkE7QzY0MDsxMTBCIDExNkE7CitDNjQxO0M2NDE7MTEwQiAxMTZBIDExQTg7QzY0MTsxMTBCIDExNkEgMTFBODsKK0M2NDI7QzY0MjsxMTBCIDExNkEgMTFBOTtDNjQyOzExMEIgMTE2QSAxMUE5OworQzY0MztDNjQzOzExMEIgMTE2QSAxMUFBO0M2NDM7MTEwQiAxMTZBIDExQUE7CitDNjQ0O0M2NDQ7MTEwQiAxMTZBIDExQUI7QzY0NDsxMTBCIDExNkEgMTFBQjsKK0M2NDU7QzY0NTsxMTBCIDExNkEgMTFBQztDNjQ1OzExMEIgMTE2QSAxMUFDOworQzY0NjtDNjQ2OzExMEIgMTE2QSAxMUFEO0M2NDY7MTEwQiAxMTZBIDExQUQ7CitDNjQ3O0M2NDc7MTEwQiAxMTZBIDExQUU7QzY0NzsxMTBCIDExNkEgMTFBRTsKK0M2NDg7QzY0ODsxMTBCIDExNkEgMTFBRjtDNjQ4OzExMEIgMTE2QSAxMUFGOworQzY0OTtDNjQ5OzExMEIgMTE2QSAxMUIwO0M2NDk7MTEwQiAxMTZBIDExQjA7CitDNjRBO0M2NEE7MTEwQiAxMTZBIDExQjE7QzY0QTsxMTBCIDExNkEgMTFCMTsKK0M2NEI7QzY0QjsxMTBCIDExNkEgMTFCMjtDNjRCOzExMEIgMTE2QSAxMUIyOworQzY0QztDNjRDOzExMEIgMTE2QSAxMUIzO0M2NEM7MTEwQiAxMTZBIDExQjM7CitDNjREO0M2NEQ7MTEwQiAxMTZBIDExQjQ7QzY0RDsxMTBCIDExNkEgMTFCNDsKK0M2NEU7QzY0RTsxMTBCIDExNkEgMTFCNTtDNjRFOzExMEIgMTE2QSAxMUI1OworQzY0RjtDNjRGOzExMEIgMTE2QSAxMUI2O0M2NEY7MTEwQiAxMTZBIDExQjY7CitDNjUwO0M2NTA7MTEwQiAxMTZBIDExQjc7QzY1MDsxMTBCIDExNkEgMTFCNzsKK0M2NTE7QzY1MTsxMTBCIDExNkEgMTFCODtDNjUxOzExMEIgMTE2QSAxMUI4OworQzY1MjtDNjUyOzExMEIgMTE2QSAxMUI5O0M2NTI7MTEwQiAxMTZBIDExQjk7CitDNjUzO0M2NTM7MTEwQiAxMTZBIDExQkE7QzY1MzsxMTBCIDExNkEgMTFCQTsKK0M2NTQ7QzY1NDsxMTBCIDExNkEgMTFCQjtDNjU0OzExMEIgMTE2QSAxMUJCOworQzY1NTtDNjU1OzExMEIgMTE2QSAxMUJDO0M2NTU7MTEwQiAxMTZBIDExQkM7CitDNjU2O0M2NTY7MTEwQiAxMTZBIDExQkQ7QzY1NjsxMTBCIDExNkEgMTFCRDsKK0M2NTc7QzY1NzsxMTBCIDExNkEgMTFCRTtDNjU3OzExMEIgMTE2QSAxMUJFOworQzY1ODtDNjU4OzExMEIgMTE2QSAxMUJGO0M2NTg7MTEwQiAxMTZBIDExQkY7CitDNjU5O0M2NTk7MTEwQiAxMTZBIDExQzA7QzY1OTsxMTBCIDExNkEgMTFDMDsKK0M2NUE7QzY1QTsxMTBCIDExNkEgMTFDMTtDNjVBOzExMEIgMTE2QSAxMUMxOworQzY1QjtDNjVCOzExMEIgMTE2QSAxMUMyO0M2NUI7MTEwQiAxMTZBIDExQzI7CitDNjVDO0M2NUM7MTEwQiAxMTZCO0M2NUM7MTEwQiAxMTZCOworQzY1RDtDNjVEOzExMEIgMTE2QiAxMUE4O0M2NUQ7MTEwQiAxMTZCIDExQTg7CitDNjVFO0M2NUU7MTEwQiAxMTZCIDExQTk7QzY1RTsxMTBCIDExNkIgMTFBOTsKK0M2NUY7QzY1RjsxMTBCIDExNkIgMTFBQTtDNjVGOzExMEIgMTE2QiAxMUFBOworQzY2MDtDNjYwOzExMEIgMTE2QiAxMUFCO0M2NjA7MTEwQiAxMTZCIDExQUI7CitDNjYxO0M2NjE7MTEwQiAxMTZCIDExQUM7QzY2MTsxMTBCIDExNkIgMTFBQzsKK0M2NjI7QzY2MjsxMTBCIDExNkIgMTFBRDtDNjYyOzExMEIgMTE2QiAxMUFEOworQzY2MztDNjYzOzExMEIgMTE2QiAxMUFFO0M2NjM7MTEwQiAxMTZCIDExQUU7CitDNjY0O0M2NjQ7MTEwQiAxMTZCIDExQUY7QzY2NDsxMTBCIDExNkIgMTFBRjsKK0M2NjU7QzY2NTsxMTBCIDExNkIgMTFCMDtDNjY1OzExMEIgMTE2QiAxMUIwOworQzY2NjtDNjY2OzExMEIgMTE2QiAxMUIxO0M2NjY7MTEwQiAxMTZCIDExQjE7CitDNjY3O0M2Njc7MTEwQiAxMTZCIDExQjI7QzY2NzsxMTBCIDExNkIgMTFCMjsKK0M2Njg7QzY2ODsxMTBCIDExNkIgMTFCMztDNjY4OzExMEIgMTE2QiAxMUIzOworQzY2OTtDNjY5OzExMEIgMTE2QiAxMUI0O0M2Njk7MTEwQiAxMTZCIDExQjQ7CitDNjZBO0M2NkE7MTEwQiAxMTZCIDExQjU7QzY2QTsxMTBCIDExNkIgMTFCNTsKK0M2NkI7QzY2QjsxMTBCIDExNkIgMTFCNjtDNjZCOzExMEIgMTE2QiAxMUI2OworQzY2QztDNjZDOzExMEIgMTE2QiAxMUI3O0M2NkM7MTEwQiAxMTZCIDExQjc7CitDNjZEO0M2NkQ7MTEwQiAxMTZCIDExQjg7QzY2RDsxMTBCIDExNkIgMTFCODsKK0M2NkU7QzY2RTsxMTBCIDExNkIgMTFCOTtDNjZFOzExMEIgMTE2QiAxMUI5OworQzY2RjtDNjZGOzExMEIgMTE2QiAxMUJBO0M2NkY7MTEwQiAxMTZCIDExQkE7CitDNjcwO0M2NzA7MTEwQiAxMTZCIDExQkI7QzY3MDsxMTBCIDExNkIgMTFCQjsKK0M2NzE7QzY3MTsxMTBCIDExNkIgMTFCQztDNjcxOzExMEIgMTE2QiAxMUJDOworQzY3MjtDNjcyOzExMEIgMTE2QiAxMUJEO0M2NzI7MTEwQiAxMTZCIDExQkQ7CitDNjczO0M2NzM7MTEwQiAxMTZCIDExQkU7QzY3MzsxMTBCIDExNkIgMTFCRTsKK0M2NzQ7QzY3NDsxMTBCIDExNkIgMTFCRjtDNjc0OzExMEIgMTE2QiAxMUJGOworQzY3NTtDNjc1OzExMEIgMTE2QiAxMUMwO0M2NzU7MTEwQiAxMTZCIDExQzA7CitDNjc2O0M2NzY7MTEwQiAxMTZCIDExQzE7QzY3NjsxMTBCIDExNkIgMTFDMTsKK0M2Nzc7QzY3NzsxMTBCIDExNkIgMTFDMjtDNjc3OzExMEIgMTE2QiAxMUMyOworQzY3ODtDNjc4OzExMEIgMTE2QztDNjc4OzExMEIgMTE2QzsKK0M2Nzk7QzY3OTsxMTBCIDExNkMgMTFBODtDNjc5OzExMEIgMTE2QyAxMUE4OworQzY3QTtDNjdBOzExMEIgMTE2QyAxMUE5O0M2N0E7MTEwQiAxMTZDIDExQTk7CitDNjdCO0M2N0I7MTEwQiAxMTZDIDExQUE7QzY3QjsxMTBCIDExNkMgMTFBQTsKK0M2N0M7QzY3QzsxMTBCIDExNkMgMTFBQjtDNjdDOzExMEIgMTE2QyAxMUFCOworQzY3RDtDNjdEOzExMEIgMTE2QyAxMUFDO0M2N0Q7MTEwQiAxMTZDIDExQUM7CitDNjdFO0M2N0U7MTEwQiAxMTZDIDExQUQ7QzY3RTsxMTBCIDExNkMgMTFBRDsKK0M2N0Y7QzY3RjsxMTBCIDExNkMgMTFBRTtDNjdGOzExMEIgMTE2QyAxMUFFOworQzY4MDtDNjgwOzExMEIgMTE2QyAxMUFGO0M2ODA7MTEwQiAxMTZDIDExQUY7CitDNjgxO0M2ODE7MTEwQiAxMTZDIDExQjA7QzY4MTsxMTBCIDExNkMgMTFCMDsKK0M2ODI7QzY4MjsxMTBCIDExNkMgMTFCMTtDNjgyOzExMEIgMTE2QyAxMUIxOworQzY4MztDNjgzOzExMEIgMTE2QyAxMUIyO0M2ODM7MTEwQiAxMTZDIDExQjI7CitDNjg0O0M2ODQ7MTEwQiAxMTZDIDExQjM7QzY4NDsxMTBCIDExNkMgMTFCMzsKK0M2ODU7QzY4NTsxMTBCIDExNkMgMTFCNDtDNjg1OzExMEIgMTE2QyAxMUI0OworQzY4NjtDNjg2OzExMEIgMTE2QyAxMUI1O0M2ODY7MTEwQiAxMTZDIDExQjU7CitDNjg3O0M2ODc7MTEwQiAxMTZDIDExQjY7QzY4NzsxMTBCIDExNkMgMTFCNjsKK0M2ODg7QzY4ODsxMTBCIDExNkMgMTFCNztDNjg4OzExMEIgMTE2QyAxMUI3OworQzY4OTtDNjg5OzExMEIgMTE2QyAxMUI4O0M2ODk7MTEwQiAxMTZDIDExQjg7CitDNjhBO0M2OEE7MTEwQiAxMTZDIDExQjk7QzY4QTsxMTBCIDExNkMgMTFCOTsKK0M2OEI7QzY4QjsxMTBCIDExNkMgMTFCQTtDNjhCOzExMEIgMTE2QyAxMUJBOworQzY4QztDNjhDOzExMEIgMTE2QyAxMUJCO0M2OEM7MTEwQiAxMTZDIDExQkI7CitDNjhEO0M2OEQ7MTEwQiAxMTZDIDExQkM7QzY4RDsxMTBCIDExNkMgMTFCQzsKK0M2OEU7QzY4RTsxMTBCIDExNkMgMTFCRDtDNjhFOzExMEIgMTE2QyAxMUJEOworQzY4RjtDNjhGOzExMEIgMTE2QyAxMUJFO0M2OEY7MTEwQiAxMTZDIDExQkU7CitDNjkwO0M2OTA7MTEwQiAxMTZDIDExQkY7QzY5MDsxMTBCIDExNkMgMTFCRjsKK0M2OTE7QzY5MTsxMTBCIDExNkMgMTFDMDtDNjkxOzExMEIgMTE2QyAxMUMwOworQzY5MjtDNjkyOzExMEIgMTE2QyAxMUMxO0M2OTI7MTEwQiAxMTZDIDExQzE7CitDNjkzO0M2OTM7MTEwQiAxMTZDIDExQzI7QzY5MzsxMTBCIDExNkMgMTFDMjsKK0M2OTQ7QzY5NDsxMTBCIDExNkQ7QzY5NDsxMTBCIDExNkQ7CitDNjk1O0M2OTU7MTEwQiAxMTZEIDExQTg7QzY5NTsxMTBCIDExNkQgMTFBODsKK0M2OTY7QzY5NjsxMTBCIDExNkQgMTFBOTtDNjk2OzExMEIgMTE2RCAxMUE5OworQzY5NztDNjk3OzExMEIgMTE2RCAxMUFBO0M2OTc7MTEwQiAxMTZEIDExQUE7CitDNjk4O0M2OTg7MTEwQiAxMTZEIDExQUI7QzY5ODsxMTBCIDExNkQgMTFBQjsKK0M2OTk7QzY5OTsxMTBCIDExNkQgMTFBQztDNjk5OzExMEIgMTE2RCAxMUFDOworQzY5QTtDNjlBOzExMEIgMTE2RCAxMUFEO0M2OUE7MTEwQiAxMTZEIDExQUQ7CitDNjlCO0M2OUI7MTEwQiAxMTZEIDExQUU7QzY5QjsxMTBCIDExNkQgMTFBRTsKK0M2OUM7QzY5QzsxMTBCIDExNkQgMTFBRjtDNjlDOzExMEIgMTE2RCAxMUFGOworQzY5RDtDNjlEOzExMEIgMTE2RCAxMUIwO0M2OUQ7MTEwQiAxMTZEIDExQjA7CitDNjlFO0M2OUU7MTEwQiAxMTZEIDExQjE7QzY5RTsxMTBCIDExNkQgMTFCMTsKK0M2OUY7QzY5RjsxMTBCIDExNkQgMTFCMjtDNjlGOzExMEIgMTE2RCAxMUIyOworQzZBMDtDNkEwOzExMEIgMTE2RCAxMUIzO0M2QTA7MTEwQiAxMTZEIDExQjM7CitDNkExO0M2QTE7MTEwQiAxMTZEIDExQjQ7QzZBMTsxMTBCIDExNkQgMTFCNDsKK0M2QTI7QzZBMjsxMTBCIDExNkQgMTFCNTtDNkEyOzExMEIgMTE2RCAxMUI1OworQzZBMztDNkEzOzExMEIgMTE2RCAxMUI2O0M2QTM7MTEwQiAxMTZEIDExQjY7CitDNkE0O0M2QTQ7MTEwQiAxMTZEIDExQjc7QzZBNDsxMTBCIDExNkQgMTFCNzsKK0M2QTU7QzZBNTsxMTBCIDExNkQgMTFCODtDNkE1OzExMEIgMTE2RCAxMUI4OworQzZBNjtDNkE2OzExMEIgMTE2RCAxMUI5O0M2QTY7MTEwQiAxMTZEIDExQjk7CitDNkE3O0M2QTc7MTEwQiAxMTZEIDExQkE7QzZBNzsxMTBCIDExNkQgMTFCQTsKK0M2QTg7QzZBODsxMTBCIDExNkQgMTFCQjtDNkE4OzExMEIgMTE2RCAxMUJCOworQzZBOTtDNkE5OzExMEIgMTE2RCAxMUJDO0M2QTk7MTEwQiAxMTZEIDExQkM7CitDNkFBO0M2QUE7MTEwQiAxMTZEIDExQkQ7QzZBQTsxMTBCIDExNkQgMTFCRDsKK0M2QUI7QzZBQjsxMTBCIDExNkQgMTFCRTtDNkFCOzExMEIgMTE2RCAxMUJFOworQzZBQztDNkFDOzExMEIgMTE2RCAxMUJGO0M2QUM7MTEwQiAxMTZEIDExQkY7CitDNkFEO0M2QUQ7MTEwQiAxMTZEIDExQzA7QzZBRDsxMTBCIDExNkQgMTFDMDsKK0M2QUU7QzZBRTsxMTBCIDExNkQgMTFDMTtDNkFFOzExMEIgMTE2RCAxMUMxOworQzZBRjtDNkFGOzExMEIgMTE2RCAxMUMyO0M2QUY7MTEwQiAxMTZEIDExQzI7CitDNkIwO0M2QjA7MTEwQiAxMTZFO0M2QjA7MTEwQiAxMTZFOworQzZCMTtDNkIxOzExMEIgMTE2RSAxMUE4O0M2QjE7MTEwQiAxMTZFIDExQTg7CitDNkIyO0M2QjI7MTEwQiAxMTZFIDExQTk7QzZCMjsxMTBCIDExNkUgMTFBOTsKK0M2QjM7QzZCMzsxMTBCIDExNkUgMTFBQTtDNkIzOzExMEIgMTE2RSAxMUFBOworQzZCNDtDNkI0OzExMEIgMTE2RSAxMUFCO0M2QjQ7MTEwQiAxMTZFIDExQUI7CitDNkI1O0M2QjU7MTEwQiAxMTZFIDExQUM7QzZCNTsxMTBCIDExNkUgMTFBQzsKK0M2QjY7QzZCNjsxMTBCIDExNkUgMTFBRDtDNkI2OzExMEIgMTE2RSAxMUFEOworQzZCNztDNkI3OzExMEIgMTE2RSAxMUFFO0M2Qjc7MTEwQiAxMTZFIDExQUU7CitDNkI4O0M2Qjg7MTEwQiAxMTZFIDExQUY7QzZCODsxMTBCIDExNkUgMTFBRjsKK0M2Qjk7QzZCOTsxMTBCIDExNkUgMTFCMDtDNkI5OzExMEIgMTE2RSAxMUIwOworQzZCQTtDNkJBOzExMEIgMTE2RSAxMUIxO0M2QkE7MTEwQiAxMTZFIDExQjE7CitDNkJCO0M2QkI7MTEwQiAxMTZFIDExQjI7QzZCQjsxMTBCIDExNkUgMTFCMjsKK0M2QkM7QzZCQzsxMTBCIDExNkUgMTFCMztDNkJDOzExMEIgMTE2RSAxMUIzOworQzZCRDtDNkJEOzExMEIgMTE2RSAxMUI0O0M2QkQ7MTEwQiAxMTZFIDExQjQ7CitDNkJFO0M2QkU7MTEwQiAxMTZFIDExQjU7QzZCRTsxMTBCIDExNkUgMTFCNTsKK0M2QkY7QzZCRjsxMTBCIDExNkUgMTFCNjtDNkJGOzExMEIgMTE2RSAxMUI2OworQzZDMDtDNkMwOzExMEIgMTE2RSAxMUI3O0M2QzA7MTEwQiAxMTZFIDExQjc7CitDNkMxO0M2QzE7MTEwQiAxMTZFIDExQjg7QzZDMTsxMTBCIDExNkUgMTFCODsKK0M2QzI7QzZDMjsxMTBCIDExNkUgMTFCOTtDNkMyOzExMEIgMTE2RSAxMUI5OworQzZDMztDNkMzOzExMEIgMTE2RSAxMUJBO0M2QzM7MTEwQiAxMTZFIDExQkE7CitDNkM0O0M2QzQ7MTEwQiAxMTZFIDExQkI7QzZDNDsxMTBCIDExNkUgMTFCQjsKK0M2QzU7QzZDNTsxMTBCIDExNkUgMTFCQztDNkM1OzExMEIgMTE2RSAxMUJDOworQzZDNjtDNkM2OzExMEIgMTE2RSAxMUJEO0M2QzY7MTEwQiAxMTZFIDExQkQ7CitDNkM3O0M2Qzc7MTEwQiAxMTZFIDExQkU7QzZDNzsxMTBCIDExNkUgMTFCRTsKK0M2Qzg7QzZDODsxMTBCIDExNkUgMTFCRjtDNkM4OzExMEIgMTE2RSAxMUJGOworQzZDOTtDNkM5OzExMEIgMTE2RSAxMUMwO0M2Qzk7MTEwQiAxMTZFIDExQzA7CitDNkNBO0M2Q0E7MTEwQiAxMTZFIDExQzE7QzZDQTsxMTBCIDExNkUgMTFDMTsKK0M2Q0I7QzZDQjsxMTBCIDExNkUgMTFDMjtDNkNCOzExMEIgMTE2RSAxMUMyOworQzZDQztDNkNDOzExMEIgMTE2RjtDNkNDOzExMEIgMTE2RjsKK0M2Q0Q7QzZDRDsxMTBCIDExNkYgMTFBODtDNkNEOzExMEIgMTE2RiAxMUE4OworQzZDRTtDNkNFOzExMEIgMTE2RiAxMUE5O0M2Q0U7MTEwQiAxMTZGIDExQTk7CitDNkNGO0M2Q0Y7MTEwQiAxMTZGIDExQUE7QzZDRjsxMTBCIDExNkYgMTFBQTsKK0M2RDA7QzZEMDsxMTBCIDExNkYgMTFBQjtDNkQwOzExMEIgMTE2RiAxMUFCOworQzZEMTtDNkQxOzExMEIgMTE2RiAxMUFDO0M2RDE7MTEwQiAxMTZGIDExQUM7CitDNkQyO0M2RDI7MTEwQiAxMTZGIDExQUQ7QzZEMjsxMTBCIDExNkYgMTFBRDsKK0M2RDM7QzZEMzsxMTBCIDExNkYgMTFBRTtDNkQzOzExMEIgMTE2RiAxMUFFOworQzZENDtDNkQ0OzExMEIgMTE2RiAxMUFGO0M2RDQ7MTEwQiAxMTZGIDExQUY7CitDNkQ1O0M2RDU7MTEwQiAxMTZGIDExQjA7QzZENTsxMTBCIDExNkYgMTFCMDsKK0M2RDY7QzZENjsxMTBCIDExNkYgMTFCMTtDNkQ2OzExMEIgMTE2RiAxMUIxOworQzZENztDNkQ3OzExMEIgMTE2RiAxMUIyO0M2RDc7MTEwQiAxMTZGIDExQjI7CitDNkQ4O0M2RDg7MTEwQiAxMTZGIDExQjM7QzZEODsxMTBCIDExNkYgMTFCMzsKK0M2RDk7QzZEOTsxMTBCIDExNkYgMTFCNDtDNkQ5OzExMEIgMTE2RiAxMUI0OworQzZEQTtDNkRBOzExMEIgMTE2RiAxMUI1O0M2REE7MTEwQiAxMTZGIDExQjU7CitDNkRCO0M2REI7MTEwQiAxMTZGIDExQjY7QzZEQjsxMTBCIDExNkYgMTFCNjsKK0M2REM7QzZEQzsxMTBCIDExNkYgMTFCNztDNkRDOzExMEIgMTE2RiAxMUI3OworQzZERDtDNkREOzExMEIgMTE2RiAxMUI4O0M2REQ7MTEwQiAxMTZGIDExQjg7CitDNkRFO0M2REU7MTEwQiAxMTZGIDExQjk7QzZERTsxMTBCIDExNkYgMTFCOTsKK0M2REY7QzZERjsxMTBCIDExNkYgMTFCQTtDNkRGOzExMEIgMTE2RiAxMUJBOworQzZFMDtDNkUwOzExMEIgMTE2RiAxMUJCO0M2RTA7MTEwQiAxMTZGIDExQkI7CitDNkUxO0M2RTE7MTEwQiAxMTZGIDExQkM7QzZFMTsxMTBCIDExNkYgMTFCQzsKK0M2RTI7QzZFMjsxMTBCIDExNkYgMTFCRDtDNkUyOzExMEIgMTE2RiAxMUJEOworQzZFMztDNkUzOzExMEIgMTE2RiAxMUJFO0M2RTM7MTEwQiAxMTZGIDExQkU7CitDNkU0O0M2RTQ7MTEwQiAxMTZGIDExQkY7QzZFNDsxMTBCIDExNkYgMTFCRjsKK0M2RTU7QzZFNTsxMTBCIDExNkYgMTFDMDtDNkU1OzExMEIgMTE2RiAxMUMwOworQzZFNjtDNkU2OzExMEIgMTE2RiAxMUMxO0M2RTY7MTEwQiAxMTZGIDExQzE7CitDNkU3O0M2RTc7MTEwQiAxMTZGIDExQzI7QzZFNzsxMTBCIDExNkYgMTFDMjsKK0M2RTg7QzZFODsxMTBCIDExNzA7QzZFODsxMTBCIDExNzA7CitDNkU5O0M2RTk7MTEwQiAxMTcwIDExQTg7QzZFOTsxMTBCIDExNzAgMTFBODsKK0M2RUE7QzZFQTsxMTBCIDExNzAgMTFBOTtDNkVBOzExMEIgMTE3MCAxMUE5OworQzZFQjtDNkVCOzExMEIgMTE3MCAxMUFBO0M2RUI7MTEwQiAxMTcwIDExQUE7CitDNkVDO0M2RUM7MTEwQiAxMTcwIDExQUI7QzZFQzsxMTBCIDExNzAgMTFBQjsKK0M2RUQ7QzZFRDsxMTBCIDExNzAgMTFBQztDNkVEOzExMEIgMTE3MCAxMUFDOworQzZFRTtDNkVFOzExMEIgMTE3MCAxMUFEO0M2RUU7MTEwQiAxMTcwIDExQUQ7CitDNkVGO0M2RUY7MTEwQiAxMTcwIDExQUU7QzZFRjsxMTBCIDExNzAgMTFBRTsKK0M2RjA7QzZGMDsxMTBCIDExNzAgMTFBRjtDNkYwOzExMEIgMTE3MCAxMUFGOworQzZGMTtDNkYxOzExMEIgMTE3MCAxMUIwO0M2RjE7MTEwQiAxMTcwIDExQjA7CitDNkYyO0M2RjI7MTEwQiAxMTcwIDExQjE7QzZGMjsxMTBCIDExNzAgMTFCMTsKK0M2RjM7QzZGMzsxMTBCIDExNzAgMTFCMjtDNkYzOzExMEIgMTE3MCAxMUIyOworQzZGNDtDNkY0OzExMEIgMTE3MCAxMUIzO0M2RjQ7MTEwQiAxMTcwIDExQjM7CitDNkY1O0M2RjU7MTEwQiAxMTcwIDExQjQ7QzZGNTsxMTBCIDExNzAgMTFCNDsKK0M2RjY7QzZGNjsxMTBCIDExNzAgMTFCNTtDNkY2OzExMEIgMTE3MCAxMUI1OworQzZGNztDNkY3OzExMEIgMTE3MCAxMUI2O0M2Rjc7MTEwQiAxMTcwIDExQjY7CitDNkY4O0M2Rjg7MTEwQiAxMTcwIDExQjc7QzZGODsxMTBCIDExNzAgMTFCNzsKK0M2Rjk7QzZGOTsxMTBCIDExNzAgMTFCODtDNkY5OzExMEIgMTE3MCAxMUI4OworQzZGQTtDNkZBOzExMEIgMTE3MCAxMUI5O0M2RkE7MTEwQiAxMTcwIDExQjk7CitDNkZCO0M2RkI7MTEwQiAxMTcwIDExQkE7QzZGQjsxMTBCIDExNzAgMTFCQTsKK0M2RkM7QzZGQzsxMTBCIDExNzAgMTFCQjtDNkZDOzExMEIgMTE3MCAxMUJCOworQzZGRDtDNkZEOzExMEIgMTE3MCAxMUJDO0M2RkQ7MTEwQiAxMTcwIDExQkM7CitDNkZFO0M2RkU7MTEwQiAxMTcwIDExQkQ7QzZGRTsxMTBCIDExNzAgMTFCRDsKK0M2RkY7QzZGRjsxMTBCIDExNzAgMTFCRTtDNkZGOzExMEIgMTE3MCAxMUJFOworQzcwMDtDNzAwOzExMEIgMTE3MCAxMUJGO0M3MDA7MTEwQiAxMTcwIDExQkY7CitDNzAxO0M3MDE7MTEwQiAxMTcwIDExQzA7QzcwMTsxMTBCIDExNzAgMTFDMDsKK0M3MDI7QzcwMjsxMTBCIDExNzAgMTFDMTtDNzAyOzExMEIgMTE3MCAxMUMxOworQzcwMztDNzAzOzExMEIgMTE3MCAxMUMyO0M3MDM7MTEwQiAxMTcwIDExQzI7CitDNzA0O0M3MDQ7MTEwQiAxMTcxO0M3MDQ7MTEwQiAxMTcxOworQzcwNTtDNzA1OzExMEIgMTE3MSAxMUE4O0M3MDU7MTEwQiAxMTcxIDExQTg7CitDNzA2O0M3MDY7MTEwQiAxMTcxIDExQTk7QzcwNjsxMTBCIDExNzEgMTFBOTsKK0M3MDc7QzcwNzsxMTBCIDExNzEgMTFBQTtDNzA3OzExMEIgMTE3MSAxMUFBOworQzcwODtDNzA4OzExMEIgMTE3MSAxMUFCO0M3MDg7MTEwQiAxMTcxIDExQUI7CitDNzA5O0M3MDk7MTEwQiAxMTcxIDExQUM7QzcwOTsxMTBCIDExNzEgMTFBQzsKK0M3MEE7QzcwQTsxMTBCIDExNzEgMTFBRDtDNzBBOzExMEIgMTE3MSAxMUFEOworQzcwQjtDNzBCOzExMEIgMTE3MSAxMUFFO0M3MEI7MTEwQiAxMTcxIDExQUU7CitDNzBDO0M3MEM7MTEwQiAxMTcxIDExQUY7QzcwQzsxMTBCIDExNzEgMTFBRjsKK0M3MEQ7QzcwRDsxMTBCIDExNzEgMTFCMDtDNzBEOzExMEIgMTE3MSAxMUIwOworQzcwRTtDNzBFOzExMEIgMTE3MSAxMUIxO0M3MEU7MTEwQiAxMTcxIDExQjE7CitDNzBGO0M3MEY7MTEwQiAxMTcxIDExQjI7QzcwRjsxMTBCIDExNzEgMTFCMjsKK0M3MTA7QzcxMDsxMTBCIDExNzEgMTFCMztDNzEwOzExMEIgMTE3MSAxMUIzOworQzcxMTtDNzExOzExMEIgMTE3MSAxMUI0O0M3MTE7MTEwQiAxMTcxIDExQjQ7CitDNzEyO0M3MTI7MTEwQiAxMTcxIDExQjU7QzcxMjsxMTBCIDExNzEgMTFCNTsKK0M3MTM7QzcxMzsxMTBCIDExNzEgMTFCNjtDNzEzOzExMEIgMTE3MSAxMUI2OworQzcxNDtDNzE0OzExMEIgMTE3MSAxMUI3O0M3MTQ7MTEwQiAxMTcxIDExQjc7CitDNzE1O0M3MTU7MTEwQiAxMTcxIDExQjg7QzcxNTsxMTBCIDExNzEgMTFCODsKK0M3MTY7QzcxNjsxMTBCIDExNzEgMTFCOTtDNzE2OzExMEIgMTE3MSAxMUI5OworQzcxNztDNzE3OzExMEIgMTE3MSAxMUJBO0M3MTc7MTEwQiAxMTcxIDExQkE7CitDNzE4O0M3MTg7MTEwQiAxMTcxIDExQkI7QzcxODsxMTBCIDExNzEgMTFCQjsKK0M3MTk7QzcxOTsxMTBCIDExNzEgMTFCQztDNzE5OzExMEIgMTE3MSAxMUJDOworQzcxQTtDNzFBOzExMEIgMTE3MSAxMUJEO0M3MUE7MTEwQiAxMTcxIDExQkQ7CitDNzFCO0M3MUI7MTEwQiAxMTcxIDExQkU7QzcxQjsxMTBCIDExNzEgMTFCRTsKK0M3MUM7QzcxQzsxMTBCIDExNzEgMTFCRjtDNzFDOzExMEIgMTE3MSAxMUJGOworQzcxRDtDNzFEOzExMEIgMTE3MSAxMUMwO0M3MUQ7MTEwQiAxMTcxIDExQzA7CitDNzFFO0M3MUU7MTEwQiAxMTcxIDExQzE7QzcxRTsxMTBCIDExNzEgMTFDMTsKK0M3MUY7QzcxRjsxMTBCIDExNzEgMTFDMjtDNzFGOzExMEIgMTE3MSAxMUMyOworQzcyMDtDNzIwOzExMEIgMTE3MjtDNzIwOzExMEIgMTE3MjsKK0M3MjE7QzcyMTsxMTBCIDExNzIgMTFBODtDNzIxOzExMEIgMTE3MiAxMUE4OworQzcyMjtDNzIyOzExMEIgMTE3MiAxMUE5O0M3MjI7MTEwQiAxMTcyIDExQTk7CitDNzIzO0M3MjM7MTEwQiAxMTcyIDExQUE7QzcyMzsxMTBCIDExNzIgMTFBQTsKK0M3MjQ7QzcyNDsxMTBCIDExNzIgMTFBQjtDNzI0OzExMEIgMTE3MiAxMUFCOworQzcyNTtDNzI1OzExMEIgMTE3MiAxMUFDO0M3MjU7MTEwQiAxMTcyIDExQUM7CitDNzI2O0M3MjY7MTEwQiAxMTcyIDExQUQ7QzcyNjsxMTBCIDExNzIgMTFBRDsKK0M3Mjc7QzcyNzsxMTBCIDExNzIgMTFBRTtDNzI3OzExMEIgMTE3MiAxMUFFOworQzcyODtDNzI4OzExMEIgMTE3MiAxMUFGO0M3Mjg7MTEwQiAxMTcyIDExQUY7CitDNzI5O0M3Mjk7MTEwQiAxMTcyIDExQjA7QzcyOTsxMTBCIDExNzIgMTFCMDsKK0M3MkE7QzcyQTsxMTBCIDExNzIgMTFCMTtDNzJBOzExMEIgMTE3MiAxMUIxOworQzcyQjtDNzJCOzExMEIgMTE3MiAxMUIyO0M3MkI7MTEwQiAxMTcyIDExQjI7CitDNzJDO0M3MkM7MTEwQiAxMTcyIDExQjM7QzcyQzsxMTBCIDExNzIgMTFCMzsKK0M3MkQ7QzcyRDsxMTBCIDExNzIgMTFCNDtDNzJEOzExMEIgMTE3MiAxMUI0OworQzcyRTtDNzJFOzExMEIgMTE3MiAxMUI1O0M3MkU7MTEwQiAxMTcyIDExQjU7CitDNzJGO0M3MkY7MTEwQiAxMTcyIDExQjY7QzcyRjsxMTBCIDExNzIgMTFCNjsKK0M3MzA7QzczMDsxMTBCIDExNzIgMTFCNztDNzMwOzExMEIgMTE3MiAxMUI3OworQzczMTtDNzMxOzExMEIgMTE3MiAxMUI4O0M3MzE7MTEwQiAxMTcyIDExQjg7CitDNzMyO0M3MzI7MTEwQiAxMTcyIDExQjk7QzczMjsxMTBCIDExNzIgMTFCOTsKK0M3MzM7QzczMzsxMTBCIDExNzIgMTFCQTtDNzMzOzExMEIgMTE3MiAxMUJBOworQzczNDtDNzM0OzExMEIgMTE3MiAxMUJCO0M3MzQ7MTEwQiAxMTcyIDExQkI7CitDNzM1O0M3MzU7MTEwQiAxMTcyIDExQkM7QzczNTsxMTBCIDExNzIgMTFCQzsKK0M3MzY7QzczNjsxMTBCIDExNzIgMTFCRDtDNzM2OzExMEIgMTE3MiAxMUJEOworQzczNztDNzM3OzExMEIgMTE3MiAxMUJFO0M3Mzc7MTEwQiAxMTcyIDExQkU7CitDNzM4O0M3Mzg7MTEwQiAxMTcyIDExQkY7QzczODsxMTBCIDExNzIgMTFCRjsKK0M3Mzk7QzczOTsxMTBCIDExNzIgMTFDMDtDNzM5OzExMEIgMTE3MiAxMUMwOworQzczQTtDNzNBOzExMEIgMTE3MiAxMUMxO0M3M0E7MTEwQiAxMTcyIDExQzE7CitDNzNCO0M3M0I7MTEwQiAxMTcyIDExQzI7QzczQjsxMTBCIDExNzIgMTFDMjsKK0M3M0M7QzczQzsxMTBCIDExNzM7QzczQzsxMTBCIDExNzM7CitDNzNEO0M3M0Q7MTEwQiAxMTczIDExQTg7QzczRDsxMTBCIDExNzMgMTFBODsKK0M3M0U7QzczRTsxMTBCIDExNzMgMTFBOTtDNzNFOzExMEIgMTE3MyAxMUE5OworQzczRjtDNzNGOzExMEIgMTE3MyAxMUFBO0M3M0Y7MTEwQiAxMTczIDExQUE7CitDNzQwO0M3NDA7MTEwQiAxMTczIDExQUI7Qzc0MDsxMTBCIDExNzMgMTFBQjsKK0M3NDE7Qzc0MTsxMTBCIDExNzMgMTFBQztDNzQxOzExMEIgMTE3MyAxMUFDOworQzc0MjtDNzQyOzExMEIgMTE3MyAxMUFEO0M3NDI7MTEwQiAxMTczIDExQUQ7CitDNzQzO0M3NDM7MTEwQiAxMTczIDExQUU7Qzc0MzsxMTBCIDExNzMgMTFBRTsKK0M3NDQ7Qzc0NDsxMTBCIDExNzMgMTFBRjtDNzQ0OzExMEIgMTE3MyAxMUFGOworQzc0NTtDNzQ1OzExMEIgMTE3MyAxMUIwO0M3NDU7MTEwQiAxMTczIDExQjA7CitDNzQ2O0M3NDY7MTEwQiAxMTczIDExQjE7Qzc0NjsxMTBCIDExNzMgMTFCMTsKK0M3NDc7Qzc0NzsxMTBCIDExNzMgMTFCMjtDNzQ3OzExMEIgMTE3MyAxMUIyOworQzc0ODtDNzQ4OzExMEIgMTE3MyAxMUIzO0M3NDg7MTEwQiAxMTczIDExQjM7CitDNzQ5O0M3NDk7MTEwQiAxMTczIDExQjQ7Qzc0OTsxMTBCIDExNzMgMTFCNDsKK0M3NEE7Qzc0QTsxMTBCIDExNzMgMTFCNTtDNzRBOzExMEIgMTE3MyAxMUI1OworQzc0QjtDNzRCOzExMEIgMTE3MyAxMUI2O0M3NEI7MTEwQiAxMTczIDExQjY7CitDNzRDO0M3NEM7MTEwQiAxMTczIDExQjc7Qzc0QzsxMTBCIDExNzMgMTFCNzsKK0M3NEQ7Qzc0RDsxMTBCIDExNzMgMTFCODtDNzREOzExMEIgMTE3MyAxMUI4OworQzc0RTtDNzRFOzExMEIgMTE3MyAxMUI5O0M3NEU7MTEwQiAxMTczIDExQjk7CitDNzRGO0M3NEY7MTEwQiAxMTczIDExQkE7Qzc0RjsxMTBCIDExNzMgMTFCQTsKK0M3NTA7Qzc1MDsxMTBCIDExNzMgMTFCQjtDNzUwOzExMEIgMTE3MyAxMUJCOworQzc1MTtDNzUxOzExMEIgMTE3MyAxMUJDO0M3NTE7MTEwQiAxMTczIDExQkM7CitDNzUyO0M3NTI7MTEwQiAxMTczIDExQkQ7Qzc1MjsxMTBCIDExNzMgMTFCRDsKK0M3NTM7Qzc1MzsxMTBCIDExNzMgMTFCRTtDNzUzOzExMEIgMTE3MyAxMUJFOworQzc1NDtDNzU0OzExMEIgMTE3MyAxMUJGO0M3NTQ7MTEwQiAxMTczIDExQkY7CitDNzU1O0M3NTU7MTEwQiAxMTczIDExQzA7Qzc1NTsxMTBCIDExNzMgMTFDMDsKK0M3NTY7Qzc1NjsxMTBCIDExNzMgMTFDMTtDNzU2OzExMEIgMTE3MyAxMUMxOworQzc1NztDNzU3OzExMEIgMTE3MyAxMUMyO0M3NTc7MTEwQiAxMTczIDExQzI7CitDNzU4O0M3NTg7MTEwQiAxMTc0O0M3NTg7MTEwQiAxMTc0OworQzc1OTtDNzU5OzExMEIgMTE3NCAxMUE4O0M3NTk7MTEwQiAxMTc0IDExQTg7CitDNzVBO0M3NUE7MTEwQiAxMTc0IDExQTk7Qzc1QTsxMTBCIDExNzQgMTFBOTsKK0M3NUI7Qzc1QjsxMTBCIDExNzQgMTFBQTtDNzVCOzExMEIgMTE3NCAxMUFBOworQzc1QztDNzVDOzExMEIgMTE3NCAxMUFCO0M3NUM7MTEwQiAxMTc0IDExQUI7CitDNzVEO0M3NUQ7MTEwQiAxMTc0IDExQUM7Qzc1RDsxMTBCIDExNzQgMTFBQzsKK0M3NUU7Qzc1RTsxMTBCIDExNzQgMTFBRDtDNzVFOzExMEIgMTE3NCAxMUFEOworQzc1RjtDNzVGOzExMEIgMTE3NCAxMUFFO0M3NUY7MTEwQiAxMTc0IDExQUU7CitDNzYwO0M3NjA7MTEwQiAxMTc0IDExQUY7Qzc2MDsxMTBCIDExNzQgMTFBRjsKK0M3NjE7Qzc2MTsxMTBCIDExNzQgMTFCMDtDNzYxOzExMEIgMTE3NCAxMUIwOworQzc2MjtDNzYyOzExMEIgMTE3NCAxMUIxO0M3NjI7MTEwQiAxMTc0IDExQjE7CitDNzYzO0M3NjM7MTEwQiAxMTc0IDExQjI7Qzc2MzsxMTBCIDExNzQgMTFCMjsKK0M3NjQ7Qzc2NDsxMTBCIDExNzQgMTFCMztDNzY0OzExMEIgMTE3NCAxMUIzOworQzc2NTtDNzY1OzExMEIgMTE3NCAxMUI0O0M3NjU7MTEwQiAxMTc0IDExQjQ7CitDNzY2O0M3NjY7MTEwQiAxMTc0IDExQjU7Qzc2NjsxMTBCIDExNzQgMTFCNTsKK0M3Njc7Qzc2NzsxMTBCIDExNzQgMTFCNjtDNzY3OzExMEIgMTE3NCAxMUI2OworQzc2ODtDNzY4OzExMEIgMTE3NCAxMUI3O0M3Njg7MTEwQiAxMTc0IDExQjc7CitDNzY5O0M3Njk7MTEwQiAxMTc0IDExQjg7Qzc2OTsxMTBCIDExNzQgMTFCODsKK0M3NkE7Qzc2QTsxMTBCIDExNzQgMTFCOTtDNzZBOzExMEIgMTE3NCAxMUI5OworQzc2QjtDNzZCOzExMEIgMTE3NCAxMUJBO0M3NkI7MTEwQiAxMTc0IDExQkE7CitDNzZDO0M3NkM7MTEwQiAxMTc0IDExQkI7Qzc2QzsxMTBCIDExNzQgMTFCQjsKK0M3NkQ7Qzc2RDsxMTBCIDExNzQgMTFCQztDNzZEOzExMEIgMTE3NCAxMUJDOworQzc2RTtDNzZFOzExMEIgMTE3NCAxMUJEO0M3NkU7MTEwQiAxMTc0IDExQkQ7CitDNzZGO0M3NkY7MTEwQiAxMTc0IDExQkU7Qzc2RjsxMTBCIDExNzQgMTFCRTsKK0M3NzA7Qzc3MDsxMTBCIDExNzQgMTFCRjtDNzcwOzExMEIgMTE3NCAxMUJGOworQzc3MTtDNzcxOzExMEIgMTE3NCAxMUMwO0M3NzE7MTEwQiAxMTc0IDExQzA7CitDNzcyO0M3NzI7MTEwQiAxMTc0IDExQzE7Qzc3MjsxMTBCIDExNzQgMTFDMTsKK0M3NzM7Qzc3MzsxMTBCIDExNzQgMTFDMjtDNzczOzExMEIgMTE3NCAxMUMyOworQzc3NDtDNzc0OzExMEIgMTE3NTtDNzc0OzExMEIgMTE3NTsKK0M3NzU7Qzc3NTsxMTBCIDExNzUgMTFBODtDNzc1OzExMEIgMTE3NSAxMUE4OworQzc3NjtDNzc2OzExMEIgMTE3NSAxMUE5O0M3NzY7MTEwQiAxMTc1IDExQTk7CitDNzc3O0M3Nzc7MTEwQiAxMTc1IDExQUE7Qzc3NzsxMTBCIDExNzUgMTFBQTsKK0M3Nzg7Qzc3ODsxMTBCIDExNzUgMTFBQjtDNzc4OzExMEIgMTE3NSAxMUFCOworQzc3OTtDNzc5OzExMEIgMTE3NSAxMUFDO0M3Nzk7MTEwQiAxMTc1IDExQUM7CitDNzdBO0M3N0E7MTEwQiAxMTc1IDExQUQ7Qzc3QTsxMTBCIDExNzUgMTFBRDsKK0M3N0I7Qzc3QjsxMTBCIDExNzUgMTFBRTtDNzdCOzExMEIgMTE3NSAxMUFFOworQzc3QztDNzdDOzExMEIgMTE3NSAxMUFGO0M3N0M7MTEwQiAxMTc1IDExQUY7CitDNzdEO0M3N0Q7MTEwQiAxMTc1IDExQjA7Qzc3RDsxMTBCIDExNzUgMTFCMDsKK0M3N0U7Qzc3RTsxMTBCIDExNzUgMTFCMTtDNzdFOzExMEIgMTE3NSAxMUIxOworQzc3RjtDNzdGOzExMEIgMTE3NSAxMUIyO0M3N0Y7MTEwQiAxMTc1IDExQjI7CitDNzgwO0M3ODA7MTEwQiAxMTc1IDExQjM7Qzc4MDsxMTBCIDExNzUgMTFCMzsKK0M3ODE7Qzc4MTsxMTBCIDExNzUgMTFCNDtDNzgxOzExMEIgMTE3NSAxMUI0OworQzc4MjtDNzgyOzExMEIgMTE3NSAxMUI1O0M3ODI7MTEwQiAxMTc1IDExQjU7CitDNzgzO0M3ODM7MTEwQiAxMTc1IDExQjY7Qzc4MzsxMTBCIDExNzUgMTFCNjsKK0M3ODQ7Qzc4NDsxMTBCIDExNzUgMTFCNztDNzg0OzExMEIgMTE3NSAxMUI3OworQzc4NTtDNzg1OzExMEIgMTE3NSAxMUI4O0M3ODU7MTEwQiAxMTc1IDExQjg7CitDNzg2O0M3ODY7MTEwQiAxMTc1IDExQjk7Qzc4NjsxMTBCIDExNzUgMTFCOTsKK0M3ODc7Qzc4NzsxMTBCIDExNzUgMTFCQTtDNzg3OzExMEIgMTE3NSAxMUJBOworQzc4ODtDNzg4OzExMEIgMTE3NSAxMUJCO0M3ODg7MTEwQiAxMTc1IDExQkI7CitDNzg5O0M3ODk7MTEwQiAxMTc1IDExQkM7Qzc4OTsxMTBCIDExNzUgMTFCQzsKK0M3OEE7Qzc4QTsxMTBCIDExNzUgMTFCRDtDNzhBOzExMEIgMTE3NSAxMUJEOworQzc4QjtDNzhCOzExMEIgMTE3NSAxMUJFO0M3OEI7MTEwQiAxMTc1IDExQkU7CitDNzhDO0M3OEM7MTEwQiAxMTc1IDExQkY7Qzc4QzsxMTBCIDExNzUgMTFCRjsKK0M3OEQ7Qzc4RDsxMTBCIDExNzUgMTFDMDtDNzhEOzExMEIgMTE3NSAxMUMwOworQzc4RTtDNzhFOzExMEIgMTE3NSAxMUMxO0M3OEU7MTEwQiAxMTc1IDExQzE7CitDNzhGO0M3OEY7MTEwQiAxMTc1IDExQzI7Qzc4RjsxMTBCIDExNzUgMTFDMjsKK0M3OTA7Qzc5MDsxMTBDIDExNjE7Qzc5MDsxMTBDIDExNjE7CitDNzkxO0M3OTE7MTEwQyAxMTYxIDExQTg7Qzc5MTsxMTBDIDExNjEgMTFBODsKK0M3OTI7Qzc5MjsxMTBDIDExNjEgMTFBOTtDNzkyOzExMEMgMTE2MSAxMUE5OworQzc5MztDNzkzOzExMEMgMTE2MSAxMUFBO0M3OTM7MTEwQyAxMTYxIDExQUE7CitDNzk0O0M3OTQ7MTEwQyAxMTYxIDExQUI7Qzc5NDsxMTBDIDExNjEgMTFBQjsKK0M3OTU7Qzc5NTsxMTBDIDExNjEgMTFBQztDNzk1OzExMEMgMTE2MSAxMUFDOworQzc5NjtDNzk2OzExMEMgMTE2MSAxMUFEO0M3OTY7MTEwQyAxMTYxIDExQUQ7CitDNzk3O0M3OTc7MTEwQyAxMTYxIDExQUU7Qzc5NzsxMTBDIDExNjEgMTFBRTsKK0M3OTg7Qzc5ODsxMTBDIDExNjEgMTFBRjtDNzk4OzExMEMgMTE2MSAxMUFGOworQzc5OTtDNzk5OzExMEMgMTE2MSAxMUIwO0M3OTk7MTEwQyAxMTYxIDExQjA7CitDNzlBO0M3OUE7MTEwQyAxMTYxIDExQjE7Qzc5QTsxMTBDIDExNjEgMTFCMTsKK0M3OUI7Qzc5QjsxMTBDIDExNjEgMTFCMjtDNzlCOzExMEMgMTE2MSAxMUIyOworQzc5QztDNzlDOzExMEMgMTE2MSAxMUIzO0M3OUM7MTEwQyAxMTYxIDExQjM7CitDNzlEO0M3OUQ7MTEwQyAxMTYxIDExQjQ7Qzc5RDsxMTBDIDExNjEgMTFCNDsKK0M3OUU7Qzc5RTsxMTBDIDExNjEgMTFCNTtDNzlFOzExMEMgMTE2MSAxMUI1OworQzc5RjtDNzlGOzExMEMgMTE2MSAxMUI2O0M3OUY7MTEwQyAxMTYxIDExQjY7CitDN0EwO0M3QTA7MTEwQyAxMTYxIDExQjc7QzdBMDsxMTBDIDExNjEgMTFCNzsKK0M3QTE7QzdBMTsxMTBDIDExNjEgMTFCODtDN0ExOzExMEMgMTE2MSAxMUI4OworQzdBMjtDN0EyOzExMEMgMTE2MSAxMUI5O0M3QTI7MTEwQyAxMTYxIDExQjk7CitDN0EzO0M3QTM7MTEwQyAxMTYxIDExQkE7QzdBMzsxMTBDIDExNjEgMTFCQTsKK0M3QTQ7QzdBNDsxMTBDIDExNjEgMTFCQjtDN0E0OzExMEMgMTE2MSAxMUJCOworQzdBNTtDN0E1OzExMEMgMTE2MSAxMUJDO0M3QTU7MTEwQyAxMTYxIDExQkM7CitDN0E2O0M3QTY7MTEwQyAxMTYxIDExQkQ7QzdBNjsxMTBDIDExNjEgMTFCRDsKK0M3QTc7QzdBNzsxMTBDIDExNjEgMTFCRTtDN0E3OzExMEMgMTE2MSAxMUJFOworQzdBODtDN0E4OzExMEMgMTE2MSAxMUJGO0M3QTg7MTEwQyAxMTYxIDExQkY7CitDN0E5O0M3QTk7MTEwQyAxMTYxIDExQzA7QzdBOTsxMTBDIDExNjEgMTFDMDsKK0M3QUE7QzdBQTsxMTBDIDExNjEgMTFDMTtDN0FBOzExMEMgMTE2MSAxMUMxOworQzdBQjtDN0FCOzExMEMgMTE2MSAxMUMyO0M3QUI7MTEwQyAxMTYxIDExQzI7CitDN0FDO0M3QUM7MTEwQyAxMTYyO0M3QUM7MTEwQyAxMTYyOworQzdBRDtDN0FEOzExMEMgMTE2MiAxMUE4O0M3QUQ7MTEwQyAxMTYyIDExQTg7CitDN0FFO0M3QUU7MTEwQyAxMTYyIDExQTk7QzdBRTsxMTBDIDExNjIgMTFBOTsKK0M3QUY7QzdBRjsxMTBDIDExNjIgMTFBQTtDN0FGOzExMEMgMTE2MiAxMUFBOworQzdCMDtDN0IwOzExMEMgMTE2MiAxMUFCO0M3QjA7MTEwQyAxMTYyIDExQUI7CitDN0IxO0M3QjE7MTEwQyAxMTYyIDExQUM7QzdCMTsxMTBDIDExNjIgMTFBQzsKK0M3QjI7QzdCMjsxMTBDIDExNjIgMTFBRDtDN0IyOzExMEMgMTE2MiAxMUFEOworQzdCMztDN0IzOzExMEMgMTE2MiAxMUFFO0M3QjM7MTEwQyAxMTYyIDExQUU7CitDN0I0O0M3QjQ7MTEwQyAxMTYyIDExQUY7QzdCNDsxMTBDIDExNjIgMTFBRjsKK0M3QjU7QzdCNTsxMTBDIDExNjIgMTFCMDtDN0I1OzExMEMgMTE2MiAxMUIwOworQzdCNjtDN0I2OzExMEMgMTE2MiAxMUIxO0M3QjY7MTEwQyAxMTYyIDExQjE7CitDN0I3O0M3Qjc7MTEwQyAxMTYyIDExQjI7QzdCNzsxMTBDIDExNjIgMTFCMjsKK0M3Qjg7QzdCODsxMTBDIDExNjIgMTFCMztDN0I4OzExMEMgMTE2MiAxMUIzOworQzdCOTtDN0I5OzExMEMgMTE2MiAxMUI0O0M3Qjk7MTEwQyAxMTYyIDExQjQ7CitDN0JBO0M3QkE7MTEwQyAxMTYyIDExQjU7QzdCQTsxMTBDIDExNjIgMTFCNTsKK0M3QkI7QzdCQjsxMTBDIDExNjIgMTFCNjtDN0JCOzExMEMgMTE2MiAxMUI2OworQzdCQztDN0JDOzExMEMgMTE2MiAxMUI3O0M3QkM7MTEwQyAxMTYyIDExQjc7CitDN0JEO0M3QkQ7MTEwQyAxMTYyIDExQjg7QzdCRDsxMTBDIDExNjIgMTFCODsKK0M3QkU7QzdCRTsxMTBDIDExNjIgMTFCOTtDN0JFOzExMEMgMTE2MiAxMUI5OworQzdCRjtDN0JGOzExMEMgMTE2MiAxMUJBO0M3QkY7MTEwQyAxMTYyIDExQkE7CitDN0MwO0M3QzA7MTEwQyAxMTYyIDExQkI7QzdDMDsxMTBDIDExNjIgMTFCQjsKK0M3QzE7QzdDMTsxMTBDIDExNjIgMTFCQztDN0MxOzExMEMgMTE2MiAxMUJDOworQzdDMjtDN0MyOzExMEMgMTE2MiAxMUJEO0M3QzI7MTEwQyAxMTYyIDExQkQ7CitDN0MzO0M3QzM7MTEwQyAxMTYyIDExQkU7QzdDMzsxMTBDIDExNjIgMTFCRTsKK0M3QzQ7QzdDNDsxMTBDIDExNjIgMTFCRjtDN0M0OzExMEMgMTE2MiAxMUJGOworQzdDNTtDN0M1OzExMEMgMTE2MiAxMUMwO0M3QzU7MTEwQyAxMTYyIDExQzA7CitDN0M2O0M3QzY7MTEwQyAxMTYyIDExQzE7QzdDNjsxMTBDIDExNjIgMTFDMTsKK0M3Qzc7QzdDNzsxMTBDIDExNjIgMTFDMjtDN0M3OzExMEMgMTE2MiAxMUMyOworQzdDODtDN0M4OzExMEMgMTE2MztDN0M4OzExMEMgMTE2MzsKK0M3Qzk7QzdDOTsxMTBDIDExNjMgMTFBODtDN0M5OzExMEMgMTE2MyAxMUE4OworQzdDQTtDN0NBOzExMEMgMTE2MyAxMUE5O0M3Q0E7MTEwQyAxMTYzIDExQTk7CitDN0NCO0M3Q0I7MTEwQyAxMTYzIDExQUE7QzdDQjsxMTBDIDExNjMgMTFBQTsKK0M3Q0M7QzdDQzsxMTBDIDExNjMgMTFBQjtDN0NDOzExMEMgMTE2MyAxMUFCOworQzdDRDtDN0NEOzExMEMgMTE2MyAxMUFDO0M3Q0Q7MTEwQyAxMTYzIDExQUM7CitDN0NFO0M3Q0U7MTEwQyAxMTYzIDExQUQ7QzdDRTsxMTBDIDExNjMgMTFBRDsKK0M3Q0Y7QzdDRjsxMTBDIDExNjMgMTFBRTtDN0NGOzExMEMgMTE2MyAxMUFFOworQzdEMDtDN0QwOzExMEMgMTE2MyAxMUFGO0M3RDA7MTEwQyAxMTYzIDExQUY7CitDN0QxO0M3RDE7MTEwQyAxMTYzIDExQjA7QzdEMTsxMTBDIDExNjMgMTFCMDsKK0M3RDI7QzdEMjsxMTBDIDExNjMgMTFCMTtDN0QyOzExMEMgMTE2MyAxMUIxOworQzdEMztDN0QzOzExMEMgMTE2MyAxMUIyO0M3RDM7MTEwQyAxMTYzIDExQjI7CitDN0Q0O0M3RDQ7MTEwQyAxMTYzIDExQjM7QzdENDsxMTBDIDExNjMgMTFCMzsKK0M3RDU7QzdENTsxMTBDIDExNjMgMTFCNDtDN0Q1OzExMEMgMTE2MyAxMUI0OworQzdENjtDN0Q2OzExMEMgMTE2MyAxMUI1O0M3RDY7MTEwQyAxMTYzIDExQjU7CitDN0Q3O0M3RDc7MTEwQyAxMTYzIDExQjY7QzdENzsxMTBDIDExNjMgMTFCNjsKK0M3RDg7QzdEODsxMTBDIDExNjMgMTFCNztDN0Q4OzExMEMgMTE2MyAxMUI3OworQzdEOTtDN0Q5OzExMEMgMTE2MyAxMUI4O0M3RDk7MTEwQyAxMTYzIDExQjg7CitDN0RBO0M3REE7MTEwQyAxMTYzIDExQjk7QzdEQTsxMTBDIDExNjMgMTFCOTsKK0M3REI7QzdEQjsxMTBDIDExNjMgMTFCQTtDN0RCOzExMEMgMTE2MyAxMUJBOworQzdEQztDN0RDOzExMEMgMTE2MyAxMUJCO0M3REM7MTEwQyAxMTYzIDExQkI7CitDN0REO0M3REQ7MTEwQyAxMTYzIDExQkM7QzdERDsxMTBDIDExNjMgMTFCQzsKK0M3REU7QzdERTsxMTBDIDExNjMgMTFCRDtDN0RFOzExMEMgMTE2MyAxMUJEOworQzdERjtDN0RGOzExMEMgMTE2MyAxMUJFO0M3REY7MTEwQyAxMTYzIDExQkU7CitDN0UwO0M3RTA7MTEwQyAxMTYzIDExQkY7QzdFMDsxMTBDIDExNjMgMTFCRjsKK0M3RTE7QzdFMTsxMTBDIDExNjMgMTFDMDtDN0UxOzExMEMgMTE2MyAxMUMwOworQzdFMjtDN0UyOzExMEMgMTE2MyAxMUMxO0M3RTI7MTEwQyAxMTYzIDExQzE7CitDN0UzO0M3RTM7MTEwQyAxMTYzIDExQzI7QzdFMzsxMTBDIDExNjMgMTFDMjsKK0M3RTQ7QzdFNDsxMTBDIDExNjQ7QzdFNDsxMTBDIDExNjQ7CitDN0U1O0M3RTU7MTEwQyAxMTY0IDExQTg7QzdFNTsxMTBDIDExNjQgMTFBODsKK0M3RTY7QzdFNjsxMTBDIDExNjQgMTFBOTtDN0U2OzExMEMgMTE2NCAxMUE5OworQzdFNztDN0U3OzExMEMgMTE2NCAxMUFBO0M3RTc7MTEwQyAxMTY0IDExQUE7CitDN0U4O0M3RTg7MTEwQyAxMTY0IDExQUI7QzdFODsxMTBDIDExNjQgMTFBQjsKK0M3RTk7QzdFOTsxMTBDIDExNjQgMTFBQztDN0U5OzExMEMgMTE2NCAxMUFDOworQzdFQTtDN0VBOzExMEMgMTE2NCAxMUFEO0M3RUE7MTEwQyAxMTY0IDExQUQ7CitDN0VCO0M3RUI7MTEwQyAxMTY0IDExQUU7QzdFQjsxMTBDIDExNjQgMTFBRTsKK0M3RUM7QzdFQzsxMTBDIDExNjQgMTFBRjtDN0VDOzExMEMgMTE2NCAxMUFGOworQzdFRDtDN0VEOzExMEMgMTE2NCAxMUIwO0M3RUQ7MTEwQyAxMTY0IDExQjA7CitDN0VFO0M3RUU7MTEwQyAxMTY0IDExQjE7QzdFRTsxMTBDIDExNjQgMTFCMTsKK0M3RUY7QzdFRjsxMTBDIDExNjQgMTFCMjtDN0VGOzExMEMgMTE2NCAxMUIyOworQzdGMDtDN0YwOzExMEMgMTE2NCAxMUIzO0M3RjA7MTEwQyAxMTY0IDExQjM7CitDN0YxO0M3RjE7MTEwQyAxMTY0IDExQjQ7QzdGMTsxMTBDIDExNjQgMTFCNDsKK0M3RjI7QzdGMjsxMTBDIDExNjQgMTFCNTtDN0YyOzExMEMgMTE2NCAxMUI1OworQzdGMztDN0YzOzExMEMgMTE2NCAxMUI2O0M3RjM7MTEwQyAxMTY0IDExQjY7CitDN0Y0O0M3RjQ7MTEwQyAxMTY0IDExQjc7QzdGNDsxMTBDIDExNjQgMTFCNzsKK0M3RjU7QzdGNTsxMTBDIDExNjQgMTFCODtDN0Y1OzExMEMgMTE2NCAxMUI4OworQzdGNjtDN0Y2OzExMEMgMTE2NCAxMUI5O0M3RjY7MTEwQyAxMTY0IDExQjk7CitDN0Y3O0M3Rjc7MTEwQyAxMTY0IDExQkE7QzdGNzsxMTBDIDExNjQgMTFCQTsKK0M3Rjg7QzdGODsxMTBDIDExNjQgMTFCQjtDN0Y4OzExMEMgMTE2NCAxMUJCOworQzdGOTtDN0Y5OzExMEMgMTE2NCAxMUJDO0M3Rjk7MTEwQyAxMTY0IDExQkM7CitDN0ZBO0M3RkE7MTEwQyAxMTY0IDExQkQ7QzdGQTsxMTBDIDExNjQgMTFCRDsKK0M3RkI7QzdGQjsxMTBDIDExNjQgMTFCRTtDN0ZCOzExMEMgMTE2NCAxMUJFOworQzdGQztDN0ZDOzExMEMgMTE2NCAxMUJGO0M3RkM7MTEwQyAxMTY0IDExQkY7CitDN0ZEO0M3RkQ7MTEwQyAxMTY0IDExQzA7QzdGRDsxMTBDIDExNjQgMTFDMDsKK0M3RkU7QzdGRTsxMTBDIDExNjQgMTFDMTtDN0ZFOzExMEMgMTE2NCAxMUMxOworQzdGRjtDN0ZGOzExMEMgMTE2NCAxMUMyO0M3RkY7MTEwQyAxMTY0IDExQzI7CitDODAwO0M4MDA7MTEwQyAxMTY1O0M4MDA7MTEwQyAxMTY1OworQzgwMTtDODAxOzExMEMgMTE2NSAxMUE4O0M4MDE7MTEwQyAxMTY1IDExQTg7CitDODAyO0M4MDI7MTEwQyAxMTY1IDExQTk7QzgwMjsxMTBDIDExNjUgMTFBOTsKK0M4MDM7QzgwMzsxMTBDIDExNjUgMTFBQTtDODAzOzExMEMgMTE2NSAxMUFBOworQzgwNDtDODA0OzExMEMgMTE2NSAxMUFCO0M4MDQ7MTEwQyAxMTY1IDExQUI7CitDODA1O0M4MDU7MTEwQyAxMTY1IDExQUM7QzgwNTsxMTBDIDExNjUgMTFBQzsKK0M4MDY7QzgwNjsxMTBDIDExNjUgMTFBRDtDODA2OzExMEMgMTE2NSAxMUFEOworQzgwNztDODA3OzExMEMgMTE2NSAxMUFFO0M4MDc7MTEwQyAxMTY1IDExQUU7CitDODA4O0M4MDg7MTEwQyAxMTY1IDExQUY7QzgwODsxMTBDIDExNjUgMTFBRjsKK0M4MDk7QzgwOTsxMTBDIDExNjUgMTFCMDtDODA5OzExMEMgMTE2NSAxMUIwOworQzgwQTtDODBBOzExMEMgMTE2NSAxMUIxO0M4MEE7MTEwQyAxMTY1IDExQjE7CitDODBCO0M4MEI7MTEwQyAxMTY1IDExQjI7QzgwQjsxMTBDIDExNjUgMTFCMjsKK0M4MEM7QzgwQzsxMTBDIDExNjUgMTFCMztDODBDOzExMEMgMTE2NSAxMUIzOworQzgwRDtDODBEOzExMEMgMTE2NSAxMUI0O0M4MEQ7MTEwQyAxMTY1IDExQjQ7CitDODBFO0M4MEU7MTEwQyAxMTY1IDExQjU7QzgwRTsxMTBDIDExNjUgMTFCNTsKK0M4MEY7QzgwRjsxMTBDIDExNjUgMTFCNjtDODBGOzExMEMgMTE2NSAxMUI2OworQzgxMDtDODEwOzExMEMgMTE2NSAxMUI3O0M4MTA7MTEwQyAxMTY1IDExQjc7CitDODExO0M4MTE7MTEwQyAxMTY1IDExQjg7QzgxMTsxMTBDIDExNjUgMTFCODsKK0M4MTI7QzgxMjsxMTBDIDExNjUgMTFCOTtDODEyOzExMEMgMTE2NSAxMUI5OworQzgxMztDODEzOzExMEMgMTE2NSAxMUJBO0M4MTM7MTEwQyAxMTY1IDExQkE7CitDODE0O0M4MTQ7MTEwQyAxMTY1IDExQkI7QzgxNDsxMTBDIDExNjUgMTFCQjsKK0M4MTU7QzgxNTsxMTBDIDExNjUgMTFCQztDODE1OzExMEMgMTE2NSAxMUJDOworQzgxNjtDODE2OzExMEMgMTE2NSAxMUJEO0M4MTY7MTEwQyAxMTY1IDExQkQ7CitDODE3O0M4MTc7MTEwQyAxMTY1IDExQkU7QzgxNzsxMTBDIDExNjUgMTFCRTsKK0M4MTg7QzgxODsxMTBDIDExNjUgMTFCRjtDODE4OzExMEMgMTE2NSAxMUJGOworQzgxOTtDODE5OzExMEMgMTE2NSAxMUMwO0M4MTk7MTEwQyAxMTY1IDExQzA7CitDODFBO0M4MUE7MTEwQyAxMTY1IDExQzE7QzgxQTsxMTBDIDExNjUgMTFDMTsKK0M4MUI7QzgxQjsxMTBDIDExNjUgMTFDMjtDODFCOzExMEMgMTE2NSAxMUMyOworQzgxQztDODFDOzExMEMgMTE2NjtDODFDOzExMEMgMTE2NjsKK0M4MUQ7QzgxRDsxMTBDIDExNjYgMTFBODtDODFEOzExMEMgMTE2NiAxMUE4OworQzgxRTtDODFFOzExMEMgMTE2NiAxMUE5O0M4MUU7MTEwQyAxMTY2IDExQTk7CitDODFGO0M4MUY7MTEwQyAxMTY2IDExQUE7QzgxRjsxMTBDIDExNjYgMTFBQTsKK0M4MjA7QzgyMDsxMTBDIDExNjYgMTFBQjtDODIwOzExMEMgMTE2NiAxMUFCOworQzgyMTtDODIxOzExMEMgMTE2NiAxMUFDO0M4MjE7MTEwQyAxMTY2IDExQUM7CitDODIyO0M4MjI7MTEwQyAxMTY2IDExQUQ7QzgyMjsxMTBDIDExNjYgMTFBRDsKK0M4MjM7QzgyMzsxMTBDIDExNjYgMTFBRTtDODIzOzExMEMgMTE2NiAxMUFFOworQzgyNDtDODI0OzExMEMgMTE2NiAxMUFGO0M4MjQ7MTEwQyAxMTY2IDExQUY7CitDODI1O0M4MjU7MTEwQyAxMTY2IDExQjA7QzgyNTsxMTBDIDExNjYgMTFCMDsKK0M4MjY7QzgyNjsxMTBDIDExNjYgMTFCMTtDODI2OzExMEMgMTE2NiAxMUIxOworQzgyNztDODI3OzExMEMgMTE2NiAxMUIyO0M4Mjc7MTEwQyAxMTY2IDExQjI7CitDODI4O0M4Mjg7MTEwQyAxMTY2IDExQjM7QzgyODsxMTBDIDExNjYgMTFCMzsKK0M4Mjk7QzgyOTsxMTBDIDExNjYgMTFCNDtDODI5OzExMEMgMTE2NiAxMUI0OworQzgyQTtDODJBOzExMEMgMTE2NiAxMUI1O0M4MkE7MTEwQyAxMTY2IDExQjU7CitDODJCO0M4MkI7MTEwQyAxMTY2IDExQjY7QzgyQjsxMTBDIDExNjYgMTFCNjsKK0M4MkM7QzgyQzsxMTBDIDExNjYgMTFCNztDODJDOzExMEMgMTE2NiAxMUI3OworQzgyRDtDODJEOzExMEMgMTE2NiAxMUI4O0M4MkQ7MTEwQyAxMTY2IDExQjg7CitDODJFO0M4MkU7MTEwQyAxMTY2IDExQjk7QzgyRTsxMTBDIDExNjYgMTFCOTsKK0M4MkY7QzgyRjsxMTBDIDExNjYgMTFCQTtDODJGOzExMEMgMTE2NiAxMUJBOworQzgzMDtDODMwOzExMEMgMTE2NiAxMUJCO0M4MzA7MTEwQyAxMTY2IDExQkI7CitDODMxO0M4MzE7MTEwQyAxMTY2IDExQkM7QzgzMTsxMTBDIDExNjYgMTFCQzsKK0M4MzI7QzgzMjsxMTBDIDExNjYgMTFCRDtDODMyOzExMEMgMTE2NiAxMUJEOworQzgzMztDODMzOzExMEMgMTE2NiAxMUJFO0M4MzM7MTEwQyAxMTY2IDExQkU7CitDODM0O0M4MzQ7MTEwQyAxMTY2IDExQkY7QzgzNDsxMTBDIDExNjYgMTFCRjsKK0M4MzU7QzgzNTsxMTBDIDExNjYgMTFDMDtDODM1OzExMEMgMTE2NiAxMUMwOworQzgzNjtDODM2OzExMEMgMTE2NiAxMUMxO0M4MzY7MTEwQyAxMTY2IDExQzE7CitDODM3O0M4Mzc7MTEwQyAxMTY2IDExQzI7QzgzNzsxMTBDIDExNjYgMTFDMjsKK0M4Mzg7QzgzODsxMTBDIDExNjc7QzgzODsxMTBDIDExNjc7CitDODM5O0M4Mzk7MTEwQyAxMTY3IDExQTg7QzgzOTsxMTBDIDExNjcgMTFBODsKK0M4M0E7QzgzQTsxMTBDIDExNjcgMTFBOTtDODNBOzExMEMgMTE2NyAxMUE5OworQzgzQjtDODNCOzExMEMgMTE2NyAxMUFBO0M4M0I7MTEwQyAxMTY3IDExQUE7CitDODNDO0M4M0M7MTEwQyAxMTY3IDExQUI7QzgzQzsxMTBDIDExNjcgMTFBQjsKK0M4M0Q7QzgzRDsxMTBDIDExNjcgMTFBQztDODNEOzExMEMgMTE2NyAxMUFDOworQzgzRTtDODNFOzExMEMgMTE2NyAxMUFEO0M4M0U7MTEwQyAxMTY3IDExQUQ7CitDODNGO0M4M0Y7MTEwQyAxMTY3IDExQUU7QzgzRjsxMTBDIDExNjcgMTFBRTsKK0M4NDA7Qzg0MDsxMTBDIDExNjcgMTFBRjtDODQwOzExMEMgMTE2NyAxMUFGOworQzg0MTtDODQxOzExMEMgMTE2NyAxMUIwO0M4NDE7MTEwQyAxMTY3IDExQjA7CitDODQyO0M4NDI7MTEwQyAxMTY3IDExQjE7Qzg0MjsxMTBDIDExNjcgMTFCMTsKK0M4NDM7Qzg0MzsxMTBDIDExNjcgMTFCMjtDODQzOzExMEMgMTE2NyAxMUIyOworQzg0NDtDODQ0OzExMEMgMTE2NyAxMUIzO0M4NDQ7MTEwQyAxMTY3IDExQjM7CitDODQ1O0M4NDU7MTEwQyAxMTY3IDExQjQ7Qzg0NTsxMTBDIDExNjcgMTFCNDsKK0M4NDY7Qzg0NjsxMTBDIDExNjcgMTFCNTtDODQ2OzExMEMgMTE2NyAxMUI1OworQzg0NztDODQ3OzExMEMgMTE2NyAxMUI2O0M4NDc7MTEwQyAxMTY3IDExQjY7CitDODQ4O0M4NDg7MTEwQyAxMTY3IDExQjc7Qzg0ODsxMTBDIDExNjcgMTFCNzsKK0M4NDk7Qzg0OTsxMTBDIDExNjcgMTFCODtDODQ5OzExMEMgMTE2NyAxMUI4OworQzg0QTtDODRBOzExMEMgMTE2NyAxMUI5O0M4NEE7MTEwQyAxMTY3IDExQjk7CitDODRCO0M4NEI7MTEwQyAxMTY3IDExQkE7Qzg0QjsxMTBDIDExNjcgMTFCQTsKK0M4NEM7Qzg0QzsxMTBDIDExNjcgMTFCQjtDODRDOzExMEMgMTE2NyAxMUJCOworQzg0RDtDODREOzExMEMgMTE2NyAxMUJDO0M4NEQ7MTEwQyAxMTY3IDExQkM7CitDODRFO0M4NEU7MTEwQyAxMTY3IDExQkQ7Qzg0RTsxMTBDIDExNjcgMTFCRDsKK0M4NEY7Qzg0RjsxMTBDIDExNjcgMTFCRTtDODRGOzExMEMgMTE2NyAxMUJFOworQzg1MDtDODUwOzExMEMgMTE2NyAxMUJGO0M4NTA7MTEwQyAxMTY3IDExQkY7CitDODUxO0M4NTE7MTEwQyAxMTY3IDExQzA7Qzg1MTsxMTBDIDExNjcgMTFDMDsKK0M4NTI7Qzg1MjsxMTBDIDExNjcgMTFDMTtDODUyOzExMEMgMTE2NyAxMUMxOworQzg1MztDODUzOzExMEMgMTE2NyAxMUMyO0M4NTM7MTEwQyAxMTY3IDExQzI7CitDODU0O0M4NTQ7MTEwQyAxMTY4O0M4NTQ7MTEwQyAxMTY4OworQzg1NTtDODU1OzExMEMgMTE2OCAxMUE4O0M4NTU7MTEwQyAxMTY4IDExQTg7CitDODU2O0M4NTY7MTEwQyAxMTY4IDExQTk7Qzg1NjsxMTBDIDExNjggMTFBOTsKK0M4NTc7Qzg1NzsxMTBDIDExNjggMTFBQTtDODU3OzExMEMgMTE2OCAxMUFBOworQzg1ODtDODU4OzExMEMgMTE2OCAxMUFCO0M4NTg7MTEwQyAxMTY4IDExQUI7CitDODU5O0M4NTk7MTEwQyAxMTY4IDExQUM7Qzg1OTsxMTBDIDExNjggMTFBQzsKK0M4NUE7Qzg1QTsxMTBDIDExNjggMTFBRDtDODVBOzExMEMgMTE2OCAxMUFEOworQzg1QjtDODVCOzExMEMgMTE2OCAxMUFFO0M4NUI7MTEwQyAxMTY4IDExQUU7CitDODVDO0M4NUM7MTEwQyAxMTY4IDExQUY7Qzg1QzsxMTBDIDExNjggMTFBRjsKK0M4NUQ7Qzg1RDsxMTBDIDExNjggMTFCMDtDODVEOzExMEMgMTE2OCAxMUIwOworQzg1RTtDODVFOzExMEMgMTE2OCAxMUIxO0M4NUU7MTEwQyAxMTY4IDExQjE7CitDODVGO0M4NUY7MTEwQyAxMTY4IDExQjI7Qzg1RjsxMTBDIDExNjggMTFCMjsKK0M4NjA7Qzg2MDsxMTBDIDExNjggMTFCMztDODYwOzExMEMgMTE2OCAxMUIzOworQzg2MTtDODYxOzExMEMgMTE2OCAxMUI0O0M4NjE7MTEwQyAxMTY4IDExQjQ7CitDODYyO0M4NjI7MTEwQyAxMTY4IDExQjU7Qzg2MjsxMTBDIDExNjggMTFCNTsKK0M4NjM7Qzg2MzsxMTBDIDExNjggMTFCNjtDODYzOzExMEMgMTE2OCAxMUI2OworQzg2NDtDODY0OzExMEMgMTE2OCAxMUI3O0M4NjQ7MTEwQyAxMTY4IDExQjc7CitDODY1O0M4NjU7MTEwQyAxMTY4IDExQjg7Qzg2NTsxMTBDIDExNjggMTFCODsKK0M4NjY7Qzg2NjsxMTBDIDExNjggMTFCOTtDODY2OzExMEMgMTE2OCAxMUI5OworQzg2NztDODY3OzExMEMgMTE2OCAxMUJBO0M4Njc7MTEwQyAxMTY4IDExQkE7CitDODY4O0M4Njg7MTEwQyAxMTY4IDExQkI7Qzg2ODsxMTBDIDExNjggMTFCQjsKK0M4Njk7Qzg2OTsxMTBDIDExNjggMTFCQztDODY5OzExMEMgMTE2OCAxMUJDOworQzg2QTtDODZBOzExMEMgMTE2OCAxMUJEO0M4NkE7MTEwQyAxMTY4IDExQkQ7CitDODZCO0M4NkI7MTEwQyAxMTY4IDExQkU7Qzg2QjsxMTBDIDExNjggMTFCRTsKK0M4NkM7Qzg2QzsxMTBDIDExNjggMTFCRjtDODZDOzExMEMgMTE2OCAxMUJGOworQzg2RDtDODZEOzExMEMgMTE2OCAxMUMwO0M4NkQ7MTEwQyAxMTY4IDExQzA7CitDODZFO0M4NkU7MTEwQyAxMTY4IDExQzE7Qzg2RTsxMTBDIDExNjggMTFDMTsKK0M4NkY7Qzg2RjsxMTBDIDExNjggMTFDMjtDODZGOzExMEMgMTE2OCAxMUMyOworQzg3MDtDODcwOzExMEMgMTE2OTtDODcwOzExMEMgMTE2OTsKK0M4NzE7Qzg3MTsxMTBDIDExNjkgMTFBODtDODcxOzExMEMgMTE2OSAxMUE4OworQzg3MjtDODcyOzExMEMgMTE2OSAxMUE5O0M4NzI7MTEwQyAxMTY5IDExQTk7CitDODczO0M4NzM7MTEwQyAxMTY5IDExQUE7Qzg3MzsxMTBDIDExNjkgMTFBQTsKK0M4NzQ7Qzg3NDsxMTBDIDExNjkgMTFBQjtDODc0OzExMEMgMTE2OSAxMUFCOworQzg3NTtDODc1OzExMEMgMTE2OSAxMUFDO0M4NzU7MTEwQyAxMTY5IDExQUM7CitDODc2O0M4NzY7MTEwQyAxMTY5IDExQUQ7Qzg3NjsxMTBDIDExNjkgMTFBRDsKK0M4Nzc7Qzg3NzsxMTBDIDExNjkgMTFBRTtDODc3OzExMEMgMTE2OSAxMUFFOworQzg3ODtDODc4OzExMEMgMTE2OSAxMUFGO0M4Nzg7MTEwQyAxMTY5IDExQUY7CitDODc5O0M4Nzk7MTEwQyAxMTY5IDExQjA7Qzg3OTsxMTBDIDExNjkgMTFCMDsKK0M4N0E7Qzg3QTsxMTBDIDExNjkgMTFCMTtDODdBOzExMEMgMTE2OSAxMUIxOworQzg3QjtDODdCOzExMEMgMTE2OSAxMUIyO0M4N0I7MTEwQyAxMTY5IDExQjI7CitDODdDO0M4N0M7MTEwQyAxMTY5IDExQjM7Qzg3QzsxMTBDIDExNjkgMTFCMzsKK0M4N0Q7Qzg3RDsxMTBDIDExNjkgMTFCNDtDODdEOzExMEMgMTE2OSAxMUI0OworQzg3RTtDODdFOzExMEMgMTE2OSAxMUI1O0M4N0U7MTEwQyAxMTY5IDExQjU7CitDODdGO0M4N0Y7MTEwQyAxMTY5IDExQjY7Qzg3RjsxMTBDIDExNjkgMTFCNjsKK0M4ODA7Qzg4MDsxMTBDIDExNjkgMTFCNztDODgwOzExMEMgMTE2OSAxMUI3OworQzg4MTtDODgxOzExMEMgMTE2OSAxMUI4O0M4ODE7MTEwQyAxMTY5IDExQjg7CitDODgyO0M4ODI7MTEwQyAxMTY5IDExQjk7Qzg4MjsxMTBDIDExNjkgMTFCOTsKK0M4ODM7Qzg4MzsxMTBDIDExNjkgMTFCQTtDODgzOzExMEMgMTE2OSAxMUJBOworQzg4NDtDODg0OzExMEMgMTE2OSAxMUJCO0M4ODQ7MTEwQyAxMTY5IDExQkI7CitDODg1O0M4ODU7MTEwQyAxMTY5IDExQkM7Qzg4NTsxMTBDIDExNjkgMTFCQzsKK0M4ODY7Qzg4NjsxMTBDIDExNjkgMTFCRDtDODg2OzExMEMgMTE2OSAxMUJEOworQzg4NztDODg3OzExMEMgMTE2OSAxMUJFO0M4ODc7MTEwQyAxMTY5IDExQkU7CitDODg4O0M4ODg7MTEwQyAxMTY5IDExQkY7Qzg4ODsxMTBDIDExNjkgMTFCRjsKK0M4ODk7Qzg4OTsxMTBDIDExNjkgMTFDMDtDODg5OzExMEMgMTE2OSAxMUMwOworQzg4QTtDODhBOzExMEMgMTE2OSAxMUMxO0M4OEE7MTEwQyAxMTY5IDExQzE7CitDODhCO0M4OEI7MTEwQyAxMTY5IDExQzI7Qzg4QjsxMTBDIDExNjkgMTFDMjsKK0M4OEM7Qzg4QzsxMTBDIDExNkE7Qzg4QzsxMTBDIDExNkE7CitDODhEO0M4OEQ7MTEwQyAxMTZBIDExQTg7Qzg4RDsxMTBDIDExNkEgMTFBODsKK0M4OEU7Qzg4RTsxMTBDIDExNkEgMTFBOTtDODhFOzExMEMgMTE2QSAxMUE5OworQzg4RjtDODhGOzExMEMgMTE2QSAxMUFBO0M4OEY7MTEwQyAxMTZBIDExQUE7CitDODkwO0M4OTA7MTEwQyAxMTZBIDExQUI7Qzg5MDsxMTBDIDExNkEgMTFBQjsKK0M4OTE7Qzg5MTsxMTBDIDExNkEgMTFBQztDODkxOzExMEMgMTE2QSAxMUFDOworQzg5MjtDODkyOzExMEMgMTE2QSAxMUFEO0M4OTI7MTEwQyAxMTZBIDExQUQ7CitDODkzO0M4OTM7MTEwQyAxMTZBIDExQUU7Qzg5MzsxMTBDIDExNkEgMTFBRTsKK0M4OTQ7Qzg5NDsxMTBDIDExNkEgMTFBRjtDODk0OzExMEMgMTE2QSAxMUFGOworQzg5NTtDODk1OzExMEMgMTE2QSAxMUIwO0M4OTU7MTEwQyAxMTZBIDExQjA7CitDODk2O0M4OTY7MTEwQyAxMTZBIDExQjE7Qzg5NjsxMTBDIDExNkEgMTFCMTsKK0M4OTc7Qzg5NzsxMTBDIDExNkEgMTFCMjtDODk3OzExMEMgMTE2QSAxMUIyOworQzg5ODtDODk4OzExMEMgMTE2QSAxMUIzO0M4OTg7MTEwQyAxMTZBIDExQjM7CitDODk5O0M4OTk7MTEwQyAxMTZBIDExQjQ7Qzg5OTsxMTBDIDExNkEgMTFCNDsKK0M4OUE7Qzg5QTsxMTBDIDExNkEgMTFCNTtDODlBOzExMEMgMTE2QSAxMUI1OworQzg5QjtDODlCOzExMEMgMTE2QSAxMUI2O0M4OUI7MTEwQyAxMTZBIDExQjY7CitDODlDO0M4OUM7MTEwQyAxMTZBIDExQjc7Qzg5QzsxMTBDIDExNkEgMTFCNzsKK0M4OUQ7Qzg5RDsxMTBDIDExNkEgMTFCODtDODlEOzExMEMgMTE2QSAxMUI4OworQzg5RTtDODlFOzExMEMgMTE2QSAxMUI5O0M4OUU7MTEwQyAxMTZBIDExQjk7CitDODlGO0M4OUY7MTEwQyAxMTZBIDExQkE7Qzg5RjsxMTBDIDExNkEgMTFCQTsKK0M4QTA7QzhBMDsxMTBDIDExNkEgMTFCQjtDOEEwOzExMEMgMTE2QSAxMUJCOworQzhBMTtDOEExOzExMEMgMTE2QSAxMUJDO0M4QTE7MTEwQyAxMTZBIDExQkM7CitDOEEyO0M4QTI7MTEwQyAxMTZBIDExQkQ7QzhBMjsxMTBDIDExNkEgMTFCRDsKK0M4QTM7QzhBMzsxMTBDIDExNkEgMTFCRTtDOEEzOzExMEMgMTE2QSAxMUJFOworQzhBNDtDOEE0OzExMEMgMTE2QSAxMUJGO0M4QTQ7MTEwQyAxMTZBIDExQkY7CitDOEE1O0M4QTU7MTEwQyAxMTZBIDExQzA7QzhBNTsxMTBDIDExNkEgMTFDMDsKK0M4QTY7QzhBNjsxMTBDIDExNkEgMTFDMTtDOEE2OzExMEMgMTE2QSAxMUMxOworQzhBNztDOEE3OzExMEMgMTE2QSAxMUMyO0M4QTc7MTEwQyAxMTZBIDExQzI7CitDOEE4O0M4QTg7MTEwQyAxMTZCO0M4QTg7MTEwQyAxMTZCOworQzhBOTtDOEE5OzExMEMgMTE2QiAxMUE4O0M4QTk7MTEwQyAxMTZCIDExQTg7CitDOEFBO0M4QUE7MTEwQyAxMTZCIDExQTk7QzhBQTsxMTBDIDExNkIgMTFBOTsKK0M4QUI7QzhBQjsxMTBDIDExNkIgMTFBQTtDOEFCOzExMEMgMTE2QiAxMUFBOworQzhBQztDOEFDOzExMEMgMTE2QiAxMUFCO0M4QUM7MTEwQyAxMTZCIDExQUI7CitDOEFEO0M4QUQ7MTEwQyAxMTZCIDExQUM7QzhBRDsxMTBDIDExNkIgMTFBQzsKK0M4QUU7QzhBRTsxMTBDIDExNkIgMTFBRDtDOEFFOzExMEMgMTE2QiAxMUFEOworQzhBRjtDOEFGOzExMEMgMTE2QiAxMUFFO0M4QUY7MTEwQyAxMTZCIDExQUU7CitDOEIwO0M4QjA7MTEwQyAxMTZCIDExQUY7QzhCMDsxMTBDIDExNkIgMTFBRjsKK0M4QjE7QzhCMTsxMTBDIDExNkIgMTFCMDtDOEIxOzExMEMgMTE2QiAxMUIwOworQzhCMjtDOEIyOzExMEMgMTE2QiAxMUIxO0M4QjI7MTEwQyAxMTZCIDExQjE7CitDOEIzO0M4QjM7MTEwQyAxMTZCIDExQjI7QzhCMzsxMTBDIDExNkIgMTFCMjsKK0M4QjQ7QzhCNDsxMTBDIDExNkIgMTFCMztDOEI0OzExMEMgMTE2QiAxMUIzOworQzhCNTtDOEI1OzExMEMgMTE2QiAxMUI0O0M4QjU7MTEwQyAxMTZCIDExQjQ7CitDOEI2O0M4QjY7MTEwQyAxMTZCIDExQjU7QzhCNjsxMTBDIDExNkIgMTFCNTsKK0M4Qjc7QzhCNzsxMTBDIDExNkIgMTFCNjtDOEI3OzExMEMgMTE2QiAxMUI2OworQzhCODtDOEI4OzExMEMgMTE2QiAxMUI3O0M4Qjg7MTEwQyAxMTZCIDExQjc7CitDOEI5O0M4Qjk7MTEwQyAxMTZCIDExQjg7QzhCOTsxMTBDIDExNkIgMTFCODsKK0M4QkE7QzhCQTsxMTBDIDExNkIgMTFCOTtDOEJBOzExMEMgMTE2QiAxMUI5OworQzhCQjtDOEJCOzExMEMgMTE2QiAxMUJBO0M4QkI7MTEwQyAxMTZCIDExQkE7CitDOEJDO0M4QkM7MTEwQyAxMTZCIDExQkI7QzhCQzsxMTBDIDExNkIgMTFCQjsKK0M4QkQ7QzhCRDsxMTBDIDExNkIgMTFCQztDOEJEOzExMEMgMTE2QiAxMUJDOworQzhCRTtDOEJFOzExMEMgMTE2QiAxMUJEO0M4QkU7MTEwQyAxMTZCIDExQkQ7CitDOEJGO0M4QkY7MTEwQyAxMTZCIDExQkU7QzhCRjsxMTBDIDExNkIgMTFCRTsKK0M4QzA7QzhDMDsxMTBDIDExNkIgMTFCRjtDOEMwOzExMEMgMTE2QiAxMUJGOworQzhDMTtDOEMxOzExMEMgMTE2QiAxMUMwO0M4QzE7MTEwQyAxMTZCIDExQzA7CitDOEMyO0M4QzI7MTEwQyAxMTZCIDExQzE7QzhDMjsxMTBDIDExNkIgMTFDMTsKK0M4QzM7QzhDMzsxMTBDIDExNkIgMTFDMjtDOEMzOzExMEMgMTE2QiAxMUMyOworQzhDNDtDOEM0OzExMEMgMTE2QztDOEM0OzExMEMgMTE2QzsKK0M4QzU7QzhDNTsxMTBDIDExNkMgMTFBODtDOEM1OzExMEMgMTE2QyAxMUE4OworQzhDNjtDOEM2OzExMEMgMTE2QyAxMUE5O0M4QzY7MTEwQyAxMTZDIDExQTk7CitDOEM3O0M4Qzc7MTEwQyAxMTZDIDExQUE7QzhDNzsxMTBDIDExNkMgMTFBQTsKK0M4Qzg7QzhDODsxMTBDIDExNkMgMTFBQjtDOEM4OzExMEMgMTE2QyAxMUFCOworQzhDOTtDOEM5OzExMEMgMTE2QyAxMUFDO0M4Qzk7MTEwQyAxMTZDIDExQUM7CitDOENBO0M4Q0E7MTEwQyAxMTZDIDExQUQ7QzhDQTsxMTBDIDExNkMgMTFBRDsKK0M4Q0I7QzhDQjsxMTBDIDExNkMgMTFBRTtDOENCOzExMEMgMTE2QyAxMUFFOworQzhDQztDOENDOzExMEMgMTE2QyAxMUFGO0M4Q0M7MTEwQyAxMTZDIDExQUY7CitDOENEO0M4Q0Q7MTEwQyAxMTZDIDExQjA7QzhDRDsxMTBDIDExNkMgMTFCMDsKK0M4Q0U7QzhDRTsxMTBDIDExNkMgMTFCMTtDOENFOzExMEMgMTE2QyAxMUIxOworQzhDRjtDOENGOzExMEMgMTE2QyAxMUIyO0M4Q0Y7MTEwQyAxMTZDIDExQjI7CitDOEQwO0M4RDA7MTEwQyAxMTZDIDExQjM7QzhEMDsxMTBDIDExNkMgMTFCMzsKK0M4RDE7QzhEMTsxMTBDIDExNkMgMTFCNDtDOEQxOzExMEMgMTE2QyAxMUI0OworQzhEMjtDOEQyOzExMEMgMTE2QyAxMUI1O0M4RDI7MTEwQyAxMTZDIDExQjU7CitDOEQzO0M4RDM7MTEwQyAxMTZDIDExQjY7QzhEMzsxMTBDIDExNkMgMTFCNjsKK0M4RDQ7QzhENDsxMTBDIDExNkMgMTFCNztDOEQ0OzExMEMgMTE2QyAxMUI3OworQzhENTtDOEQ1OzExMEMgMTE2QyAxMUI4O0M4RDU7MTEwQyAxMTZDIDExQjg7CitDOEQ2O0M4RDY7MTEwQyAxMTZDIDExQjk7QzhENjsxMTBDIDExNkMgMTFCOTsKK0M4RDc7QzhENzsxMTBDIDExNkMgMTFCQTtDOEQ3OzExMEMgMTE2QyAxMUJBOworQzhEODtDOEQ4OzExMEMgMTE2QyAxMUJCO0M4RDg7MTEwQyAxMTZDIDExQkI7CitDOEQ5O0M4RDk7MTEwQyAxMTZDIDExQkM7QzhEOTsxMTBDIDExNkMgMTFCQzsKK0M4REE7QzhEQTsxMTBDIDExNkMgMTFCRDtDOERBOzExMEMgMTE2QyAxMUJEOworQzhEQjtDOERCOzExMEMgMTE2QyAxMUJFO0M4REI7MTEwQyAxMTZDIDExQkU7CitDOERDO0M4REM7MTEwQyAxMTZDIDExQkY7QzhEQzsxMTBDIDExNkMgMTFCRjsKK0M4REQ7QzhERDsxMTBDIDExNkMgMTFDMDtDOEREOzExMEMgMTE2QyAxMUMwOworQzhERTtDOERFOzExMEMgMTE2QyAxMUMxO0M4REU7MTEwQyAxMTZDIDExQzE7CitDOERGO0M4REY7MTEwQyAxMTZDIDExQzI7QzhERjsxMTBDIDExNkMgMTFDMjsKK0M4RTA7QzhFMDsxMTBDIDExNkQ7QzhFMDsxMTBDIDExNkQ7CitDOEUxO0M4RTE7MTEwQyAxMTZEIDExQTg7QzhFMTsxMTBDIDExNkQgMTFBODsKK0M4RTI7QzhFMjsxMTBDIDExNkQgMTFBOTtDOEUyOzExMEMgMTE2RCAxMUE5OworQzhFMztDOEUzOzExMEMgMTE2RCAxMUFBO0M4RTM7MTEwQyAxMTZEIDExQUE7CitDOEU0O0M4RTQ7MTEwQyAxMTZEIDExQUI7QzhFNDsxMTBDIDExNkQgMTFBQjsKK0M4RTU7QzhFNTsxMTBDIDExNkQgMTFBQztDOEU1OzExMEMgMTE2RCAxMUFDOworQzhFNjtDOEU2OzExMEMgMTE2RCAxMUFEO0M4RTY7MTEwQyAxMTZEIDExQUQ7CitDOEU3O0M4RTc7MTEwQyAxMTZEIDExQUU7QzhFNzsxMTBDIDExNkQgMTFBRTsKK0M4RTg7QzhFODsxMTBDIDExNkQgMTFBRjtDOEU4OzExMEMgMTE2RCAxMUFGOworQzhFOTtDOEU5OzExMEMgMTE2RCAxMUIwO0M4RTk7MTEwQyAxMTZEIDExQjA7CitDOEVBO0M4RUE7MTEwQyAxMTZEIDExQjE7QzhFQTsxMTBDIDExNkQgMTFCMTsKK0M4RUI7QzhFQjsxMTBDIDExNkQgMTFCMjtDOEVCOzExMEMgMTE2RCAxMUIyOworQzhFQztDOEVDOzExMEMgMTE2RCAxMUIzO0M4RUM7MTEwQyAxMTZEIDExQjM7CitDOEVEO0M4RUQ7MTEwQyAxMTZEIDExQjQ7QzhFRDsxMTBDIDExNkQgMTFCNDsKK0M4RUU7QzhFRTsxMTBDIDExNkQgMTFCNTtDOEVFOzExMEMgMTE2RCAxMUI1OworQzhFRjtDOEVGOzExMEMgMTE2RCAxMUI2O0M4RUY7MTEwQyAxMTZEIDExQjY7CitDOEYwO0M4RjA7MTEwQyAxMTZEIDExQjc7QzhGMDsxMTBDIDExNkQgMTFCNzsKK0M4RjE7QzhGMTsxMTBDIDExNkQgMTFCODtDOEYxOzExMEMgMTE2RCAxMUI4OworQzhGMjtDOEYyOzExMEMgMTE2RCAxMUI5O0M4RjI7MTEwQyAxMTZEIDExQjk7CitDOEYzO0M4RjM7MTEwQyAxMTZEIDExQkE7QzhGMzsxMTBDIDExNkQgMTFCQTsKK0M4RjQ7QzhGNDsxMTBDIDExNkQgMTFCQjtDOEY0OzExMEMgMTE2RCAxMUJCOworQzhGNTtDOEY1OzExMEMgMTE2RCAxMUJDO0M4RjU7MTEwQyAxMTZEIDExQkM7CitDOEY2O0M4RjY7MTEwQyAxMTZEIDExQkQ7QzhGNjsxMTBDIDExNkQgMTFCRDsKK0M4Rjc7QzhGNzsxMTBDIDExNkQgMTFCRTtDOEY3OzExMEMgMTE2RCAxMUJFOworQzhGODtDOEY4OzExMEMgMTE2RCAxMUJGO0M4Rjg7MTEwQyAxMTZEIDExQkY7CitDOEY5O0M4Rjk7MTEwQyAxMTZEIDExQzA7QzhGOTsxMTBDIDExNkQgMTFDMDsKK0M4RkE7QzhGQTsxMTBDIDExNkQgMTFDMTtDOEZBOzExMEMgMTE2RCAxMUMxOworQzhGQjtDOEZCOzExMEMgMTE2RCAxMUMyO0M4RkI7MTEwQyAxMTZEIDExQzI7CitDOEZDO0M4RkM7MTEwQyAxMTZFO0M4RkM7MTEwQyAxMTZFOworQzhGRDtDOEZEOzExMEMgMTE2RSAxMUE4O0M4RkQ7MTEwQyAxMTZFIDExQTg7CitDOEZFO0M4RkU7MTEwQyAxMTZFIDExQTk7QzhGRTsxMTBDIDExNkUgMTFBOTsKK0M4RkY7QzhGRjsxMTBDIDExNkUgMTFBQTtDOEZGOzExMEMgMTE2RSAxMUFBOworQzkwMDtDOTAwOzExMEMgMTE2RSAxMUFCO0M5MDA7MTEwQyAxMTZFIDExQUI7CitDOTAxO0M5MDE7MTEwQyAxMTZFIDExQUM7QzkwMTsxMTBDIDExNkUgMTFBQzsKK0M5MDI7QzkwMjsxMTBDIDExNkUgMTFBRDtDOTAyOzExMEMgMTE2RSAxMUFEOworQzkwMztDOTAzOzExMEMgMTE2RSAxMUFFO0M5MDM7MTEwQyAxMTZFIDExQUU7CitDOTA0O0M5MDQ7MTEwQyAxMTZFIDExQUY7QzkwNDsxMTBDIDExNkUgMTFBRjsKK0M5MDU7QzkwNTsxMTBDIDExNkUgMTFCMDtDOTA1OzExMEMgMTE2RSAxMUIwOworQzkwNjtDOTA2OzExMEMgMTE2RSAxMUIxO0M5MDY7MTEwQyAxMTZFIDExQjE7CitDOTA3O0M5MDc7MTEwQyAxMTZFIDExQjI7QzkwNzsxMTBDIDExNkUgMTFCMjsKK0M5MDg7QzkwODsxMTBDIDExNkUgMTFCMztDOTA4OzExMEMgMTE2RSAxMUIzOworQzkwOTtDOTA5OzExMEMgMTE2RSAxMUI0O0M5MDk7MTEwQyAxMTZFIDExQjQ7CitDOTBBO0M5MEE7MTEwQyAxMTZFIDExQjU7QzkwQTsxMTBDIDExNkUgMTFCNTsKK0M5MEI7QzkwQjsxMTBDIDExNkUgMTFCNjtDOTBCOzExMEMgMTE2RSAxMUI2OworQzkwQztDOTBDOzExMEMgMTE2RSAxMUI3O0M5MEM7MTEwQyAxMTZFIDExQjc7CitDOTBEO0M5MEQ7MTEwQyAxMTZFIDExQjg7QzkwRDsxMTBDIDExNkUgMTFCODsKK0M5MEU7QzkwRTsxMTBDIDExNkUgMTFCOTtDOTBFOzExMEMgMTE2RSAxMUI5OworQzkwRjtDOTBGOzExMEMgMTE2RSAxMUJBO0M5MEY7MTEwQyAxMTZFIDExQkE7CitDOTEwO0M5MTA7MTEwQyAxMTZFIDExQkI7QzkxMDsxMTBDIDExNkUgMTFCQjsKK0M5MTE7QzkxMTsxMTBDIDExNkUgMTFCQztDOTExOzExMEMgMTE2RSAxMUJDOworQzkxMjtDOTEyOzExMEMgMTE2RSAxMUJEO0M5MTI7MTEwQyAxMTZFIDExQkQ7CitDOTEzO0M5MTM7MTEwQyAxMTZFIDExQkU7QzkxMzsxMTBDIDExNkUgMTFCRTsKK0M5MTQ7QzkxNDsxMTBDIDExNkUgMTFCRjtDOTE0OzExMEMgMTE2RSAxMUJGOworQzkxNTtDOTE1OzExMEMgMTE2RSAxMUMwO0M5MTU7MTEwQyAxMTZFIDExQzA7CitDOTE2O0M5MTY7MTEwQyAxMTZFIDExQzE7QzkxNjsxMTBDIDExNkUgMTFDMTsKK0M5MTc7QzkxNzsxMTBDIDExNkUgMTFDMjtDOTE3OzExMEMgMTE2RSAxMUMyOworQzkxODtDOTE4OzExMEMgMTE2RjtDOTE4OzExMEMgMTE2RjsKK0M5MTk7QzkxOTsxMTBDIDExNkYgMTFBODtDOTE5OzExMEMgMTE2RiAxMUE4OworQzkxQTtDOTFBOzExMEMgMTE2RiAxMUE5O0M5MUE7MTEwQyAxMTZGIDExQTk7CitDOTFCO0M5MUI7MTEwQyAxMTZGIDExQUE7QzkxQjsxMTBDIDExNkYgMTFBQTsKK0M5MUM7QzkxQzsxMTBDIDExNkYgMTFBQjtDOTFDOzExMEMgMTE2RiAxMUFCOworQzkxRDtDOTFEOzExMEMgMTE2RiAxMUFDO0M5MUQ7MTEwQyAxMTZGIDExQUM7CitDOTFFO0M5MUU7MTEwQyAxMTZGIDExQUQ7QzkxRTsxMTBDIDExNkYgMTFBRDsKK0M5MUY7QzkxRjsxMTBDIDExNkYgMTFBRTtDOTFGOzExMEMgMTE2RiAxMUFFOworQzkyMDtDOTIwOzExMEMgMTE2RiAxMUFGO0M5MjA7MTEwQyAxMTZGIDExQUY7CitDOTIxO0M5MjE7MTEwQyAxMTZGIDExQjA7QzkyMTsxMTBDIDExNkYgMTFCMDsKK0M5MjI7QzkyMjsxMTBDIDExNkYgMTFCMTtDOTIyOzExMEMgMTE2RiAxMUIxOworQzkyMztDOTIzOzExMEMgMTE2RiAxMUIyO0M5MjM7MTEwQyAxMTZGIDExQjI7CitDOTI0O0M5MjQ7MTEwQyAxMTZGIDExQjM7QzkyNDsxMTBDIDExNkYgMTFCMzsKK0M5MjU7QzkyNTsxMTBDIDExNkYgMTFCNDtDOTI1OzExMEMgMTE2RiAxMUI0OworQzkyNjtDOTI2OzExMEMgMTE2RiAxMUI1O0M5MjY7MTEwQyAxMTZGIDExQjU7CitDOTI3O0M5Mjc7MTEwQyAxMTZGIDExQjY7QzkyNzsxMTBDIDExNkYgMTFCNjsKK0M5Mjg7QzkyODsxMTBDIDExNkYgMTFCNztDOTI4OzExMEMgMTE2RiAxMUI3OworQzkyOTtDOTI5OzExMEMgMTE2RiAxMUI4O0M5Mjk7MTEwQyAxMTZGIDExQjg7CitDOTJBO0M5MkE7MTEwQyAxMTZGIDExQjk7QzkyQTsxMTBDIDExNkYgMTFCOTsKK0M5MkI7QzkyQjsxMTBDIDExNkYgMTFCQTtDOTJCOzExMEMgMTE2RiAxMUJBOworQzkyQztDOTJDOzExMEMgMTE2RiAxMUJCO0M5MkM7MTEwQyAxMTZGIDExQkI7CitDOTJEO0M5MkQ7MTEwQyAxMTZGIDExQkM7QzkyRDsxMTBDIDExNkYgMTFCQzsKK0M5MkU7QzkyRTsxMTBDIDExNkYgMTFCRDtDOTJFOzExMEMgMTE2RiAxMUJEOworQzkyRjtDOTJGOzExMEMgMTE2RiAxMUJFO0M5MkY7MTEwQyAxMTZGIDExQkU7CitDOTMwO0M5MzA7MTEwQyAxMTZGIDExQkY7QzkzMDsxMTBDIDExNkYgMTFCRjsKK0M5MzE7QzkzMTsxMTBDIDExNkYgMTFDMDtDOTMxOzExMEMgMTE2RiAxMUMwOworQzkzMjtDOTMyOzExMEMgMTE2RiAxMUMxO0M5MzI7MTEwQyAxMTZGIDExQzE7CitDOTMzO0M5MzM7MTEwQyAxMTZGIDExQzI7QzkzMzsxMTBDIDExNkYgMTFDMjsKK0M5MzQ7QzkzNDsxMTBDIDExNzA7QzkzNDsxMTBDIDExNzA7CitDOTM1O0M5MzU7MTEwQyAxMTcwIDExQTg7QzkzNTsxMTBDIDExNzAgMTFBODsKK0M5MzY7QzkzNjsxMTBDIDExNzAgMTFBOTtDOTM2OzExMEMgMTE3MCAxMUE5OworQzkzNztDOTM3OzExMEMgMTE3MCAxMUFBO0M5Mzc7MTEwQyAxMTcwIDExQUE7CitDOTM4O0M5Mzg7MTEwQyAxMTcwIDExQUI7QzkzODsxMTBDIDExNzAgMTFBQjsKK0M5Mzk7QzkzOTsxMTBDIDExNzAgMTFBQztDOTM5OzExMEMgMTE3MCAxMUFDOworQzkzQTtDOTNBOzExMEMgMTE3MCAxMUFEO0M5M0E7MTEwQyAxMTcwIDExQUQ7CitDOTNCO0M5M0I7MTEwQyAxMTcwIDExQUU7QzkzQjsxMTBDIDExNzAgMTFBRTsKK0M5M0M7QzkzQzsxMTBDIDExNzAgMTFBRjtDOTNDOzExMEMgMTE3MCAxMUFGOworQzkzRDtDOTNEOzExMEMgMTE3MCAxMUIwO0M5M0Q7MTEwQyAxMTcwIDExQjA7CitDOTNFO0M5M0U7MTEwQyAxMTcwIDExQjE7QzkzRTsxMTBDIDExNzAgMTFCMTsKK0M5M0Y7QzkzRjsxMTBDIDExNzAgMTFCMjtDOTNGOzExMEMgMTE3MCAxMUIyOworQzk0MDtDOTQwOzExMEMgMTE3MCAxMUIzO0M5NDA7MTEwQyAxMTcwIDExQjM7CitDOTQxO0M5NDE7MTEwQyAxMTcwIDExQjQ7Qzk0MTsxMTBDIDExNzAgMTFCNDsKK0M5NDI7Qzk0MjsxMTBDIDExNzAgMTFCNTtDOTQyOzExMEMgMTE3MCAxMUI1OworQzk0MztDOTQzOzExMEMgMTE3MCAxMUI2O0M5NDM7MTEwQyAxMTcwIDExQjY7CitDOTQ0O0M5NDQ7MTEwQyAxMTcwIDExQjc7Qzk0NDsxMTBDIDExNzAgMTFCNzsKK0M5NDU7Qzk0NTsxMTBDIDExNzAgMTFCODtDOTQ1OzExMEMgMTE3MCAxMUI4OworQzk0NjtDOTQ2OzExMEMgMTE3MCAxMUI5O0M5NDY7MTEwQyAxMTcwIDExQjk7CitDOTQ3O0M5NDc7MTEwQyAxMTcwIDExQkE7Qzk0NzsxMTBDIDExNzAgMTFCQTsKK0M5NDg7Qzk0ODsxMTBDIDExNzAgMTFCQjtDOTQ4OzExMEMgMTE3MCAxMUJCOworQzk0OTtDOTQ5OzExMEMgMTE3MCAxMUJDO0M5NDk7MTEwQyAxMTcwIDExQkM7CitDOTRBO0M5NEE7MTEwQyAxMTcwIDExQkQ7Qzk0QTsxMTBDIDExNzAgMTFCRDsKK0M5NEI7Qzk0QjsxMTBDIDExNzAgMTFCRTtDOTRCOzExMEMgMTE3MCAxMUJFOworQzk0QztDOTRDOzExMEMgMTE3MCAxMUJGO0M5NEM7MTEwQyAxMTcwIDExQkY7CitDOTREO0M5NEQ7MTEwQyAxMTcwIDExQzA7Qzk0RDsxMTBDIDExNzAgMTFDMDsKK0M5NEU7Qzk0RTsxMTBDIDExNzAgMTFDMTtDOTRFOzExMEMgMTE3MCAxMUMxOworQzk0RjtDOTRGOzExMEMgMTE3MCAxMUMyO0M5NEY7MTEwQyAxMTcwIDExQzI7CitDOTUwO0M5NTA7MTEwQyAxMTcxO0M5NTA7MTEwQyAxMTcxOworQzk1MTtDOTUxOzExMEMgMTE3MSAxMUE4O0M5NTE7MTEwQyAxMTcxIDExQTg7CitDOTUyO0M5NTI7MTEwQyAxMTcxIDExQTk7Qzk1MjsxMTBDIDExNzEgMTFBOTsKK0M5NTM7Qzk1MzsxMTBDIDExNzEgMTFBQTtDOTUzOzExMEMgMTE3MSAxMUFBOworQzk1NDtDOTU0OzExMEMgMTE3MSAxMUFCO0M5NTQ7MTEwQyAxMTcxIDExQUI7CitDOTU1O0M5NTU7MTEwQyAxMTcxIDExQUM7Qzk1NTsxMTBDIDExNzEgMTFBQzsKK0M5NTY7Qzk1NjsxMTBDIDExNzEgMTFBRDtDOTU2OzExMEMgMTE3MSAxMUFEOworQzk1NztDOTU3OzExMEMgMTE3MSAxMUFFO0M5NTc7MTEwQyAxMTcxIDExQUU7CitDOTU4O0M5NTg7MTEwQyAxMTcxIDExQUY7Qzk1ODsxMTBDIDExNzEgMTFBRjsKK0M5NTk7Qzk1OTsxMTBDIDExNzEgMTFCMDtDOTU5OzExMEMgMTE3MSAxMUIwOworQzk1QTtDOTVBOzExMEMgMTE3MSAxMUIxO0M5NUE7MTEwQyAxMTcxIDExQjE7CitDOTVCO0M5NUI7MTEwQyAxMTcxIDExQjI7Qzk1QjsxMTBDIDExNzEgMTFCMjsKK0M5NUM7Qzk1QzsxMTBDIDExNzEgMTFCMztDOTVDOzExMEMgMTE3MSAxMUIzOworQzk1RDtDOTVEOzExMEMgMTE3MSAxMUI0O0M5NUQ7MTEwQyAxMTcxIDExQjQ7CitDOTVFO0M5NUU7MTEwQyAxMTcxIDExQjU7Qzk1RTsxMTBDIDExNzEgMTFCNTsKK0M5NUY7Qzk1RjsxMTBDIDExNzEgMTFCNjtDOTVGOzExMEMgMTE3MSAxMUI2OworQzk2MDtDOTYwOzExMEMgMTE3MSAxMUI3O0M5NjA7MTEwQyAxMTcxIDExQjc7CitDOTYxO0M5NjE7MTEwQyAxMTcxIDExQjg7Qzk2MTsxMTBDIDExNzEgMTFCODsKK0M5NjI7Qzk2MjsxMTBDIDExNzEgMTFCOTtDOTYyOzExMEMgMTE3MSAxMUI5OworQzk2MztDOTYzOzExMEMgMTE3MSAxMUJBO0M5NjM7MTEwQyAxMTcxIDExQkE7CitDOTY0O0M5NjQ7MTEwQyAxMTcxIDExQkI7Qzk2NDsxMTBDIDExNzEgMTFCQjsKK0M5NjU7Qzk2NTsxMTBDIDExNzEgMTFCQztDOTY1OzExMEMgMTE3MSAxMUJDOworQzk2NjtDOTY2OzExMEMgMTE3MSAxMUJEO0M5NjY7MTEwQyAxMTcxIDExQkQ7CitDOTY3O0M5Njc7MTEwQyAxMTcxIDExQkU7Qzk2NzsxMTBDIDExNzEgMTFCRTsKK0M5Njg7Qzk2ODsxMTBDIDExNzEgMTFCRjtDOTY4OzExMEMgMTE3MSAxMUJGOworQzk2OTtDOTY5OzExMEMgMTE3MSAxMUMwO0M5Njk7MTEwQyAxMTcxIDExQzA7CitDOTZBO0M5NkE7MTEwQyAxMTcxIDExQzE7Qzk2QTsxMTBDIDExNzEgMTFDMTsKK0M5NkI7Qzk2QjsxMTBDIDExNzEgMTFDMjtDOTZCOzExMEMgMTE3MSAxMUMyOworQzk2QztDOTZDOzExMEMgMTE3MjtDOTZDOzExMEMgMTE3MjsKK0M5NkQ7Qzk2RDsxMTBDIDExNzIgMTFBODtDOTZEOzExMEMgMTE3MiAxMUE4OworQzk2RTtDOTZFOzExMEMgMTE3MiAxMUE5O0M5NkU7MTEwQyAxMTcyIDExQTk7CitDOTZGO0M5NkY7MTEwQyAxMTcyIDExQUE7Qzk2RjsxMTBDIDExNzIgMTFBQTsKK0M5NzA7Qzk3MDsxMTBDIDExNzIgMTFBQjtDOTcwOzExMEMgMTE3MiAxMUFCOworQzk3MTtDOTcxOzExMEMgMTE3MiAxMUFDO0M5NzE7MTEwQyAxMTcyIDExQUM7CitDOTcyO0M5NzI7MTEwQyAxMTcyIDExQUQ7Qzk3MjsxMTBDIDExNzIgMTFBRDsKK0M5NzM7Qzk3MzsxMTBDIDExNzIgMTFBRTtDOTczOzExMEMgMTE3MiAxMUFFOworQzk3NDtDOTc0OzExMEMgMTE3MiAxMUFGO0M5NzQ7MTEwQyAxMTcyIDExQUY7CitDOTc1O0M5NzU7MTEwQyAxMTcyIDExQjA7Qzk3NTsxMTBDIDExNzIgMTFCMDsKK0M5NzY7Qzk3NjsxMTBDIDExNzIgMTFCMTtDOTc2OzExMEMgMTE3MiAxMUIxOworQzk3NztDOTc3OzExMEMgMTE3MiAxMUIyO0M5Nzc7MTEwQyAxMTcyIDExQjI7CitDOTc4O0M5Nzg7MTEwQyAxMTcyIDExQjM7Qzk3ODsxMTBDIDExNzIgMTFCMzsKK0M5Nzk7Qzk3OTsxMTBDIDExNzIgMTFCNDtDOTc5OzExMEMgMTE3MiAxMUI0OworQzk3QTtDOTdBOzExMEMgMTE3MiAxMUI1O0M5N0E7MTEwQyAxMTcyIDExQjU7CitDOTdCO0M5N0I7MTEwQyAxMTcyIDExQjY7Qzk3QjsxMTBDIDExNzIgMTFCNjsKK0M5N0M7Qzk3QzsxMTBDIDExNzIgMTFCNztDOTdDOzExMEMgMTE3MiAxMUI3OworQzk3RDtDOTdEOzExMEMgMTE3MiAxMUI4O0M5N0Q7MTEwQyAxMTcyIDExQjg7CitDOTdFO0M5N0U7MTEwQyAxMTcyIDExQjk7Qzk3RTsxMTBDIDExNzIgMTFCOTsKK0M5N0Y7Qzk3RjsxMTBDIDExNzIgMTFCQTtDOTdGOzExMEMgMTE3MiAxMUJBOworQzk4MDtDOTgwOzExMEMgMTE3MiAxMUJCO0M5ODA7MTEwQyAxMTcyIDExQkI7CitDOTgxO0M5ODE7MTEwQyAxMTcyIDExQkM7Qzk4MTsxMTBDIDExNzIgMTFCQzsKK0M5ODI7Qzk4MjsxMTBDIDExNzIgMTFCRDtDOTgyOzExMEMgMTE3MiAxMUJEOworQzk4MztDOTgzOzExMEMgMTE3MiAxMUJFO0M5ODM7MTEwQyAxMTcyIDExQkU7CitDOTg0O0M5ODQ7MTEwQyAxMTcyIDExQkY7Qzk4NDsxMTBDIDExNzIgMTFCRjsKK0M5ODU7Qzk4NTsxMTBDIDExNzIgMTFDMDtDOTg1OzExMEMgMTE3MiAxMUMwOworQzk4NjtDOTg2OzExMEMgMTE3MiAxMUMxO0M5ODY7MTEwQyAxMTcyIDExQzE7CitDOTg3O0M5ODc7MTEwQyAxMTcyIDExQzI7Qzk4NzsxMTBDIDExNzIgMTFDMjsKK0M5ODg7Qzk4ODsxMTBDIDExNzM7Qzk4ODsxMTBDIDExNzM7CitDOTg5O0M5ODk7MTEwQyAxMTczIDExQTg7Qzk4OTsxMTBDIDExNzMgMTFBODsKK0M5OEE7Qzk4QTsxMTBDIDExNzMgMTFBOTtDOThBOzExMEMgMTE3MyAxMUE5OworQzk4QjtDOThCOzExMEMgMTE3MyAxMUFBO0M5OEI7MTEwQyAxMTczIDExQUE7CitDOThDO0M5OEM7MTEwQyAxMTczIDExQUI7Qzk4QzsxMTBDIDExNzMgMTFBQjsKK0M5OEQ7Qzk4RDsxMTBDIDExNzMgMTFBQztDOThEOzExMEMgMTE3MyAxMUFDOworQzk4RTtDOThFOzExMEMgMTE3MyAxMUFEO0M5OEU7MTEwQyAxMTczIDExQUQ7CitDOThGO0M5OEY7MTEwQyAxMTczIDExQUU7Qzk4RjsxMTBDIDExNzMgMTFBRTsKK0M5OTA7Qzk5MDsxMTBDIDExNzMgMTFBRjtDOTkwOzExMEMgMTE3MyAxMUFGOworQzk5MTtDOTkxOzExMEMgMTE3MyAxMUIwO0M5OTE7MTEwQyAxMTczIDExQjA7CitDOTkyO0M5OTI7MTEwQyAxMTczIDExQjE7Qzk5MjsxMTBDIDExNzMgMTFCMTsKK0M5OTM7Qzk5MzsxMTBDIDExNzMgMTFCMjtDOTkzOzExMEMgMTE3MyAxMUIyOworQzk5NDtDOTk0OzExMEMgMTE3MyAxMUIzO0M5OTQ7MTEwQyAxMTczIDExQjM7CitDOTk1O0M5OTU7MTEwQyAxMTczIDExQjQ7Qzk5NTsxMTBDIDExNzMgMTFCNDsKK0M5OTY7Qzk5NjsxMTBDIDExNzMgMTFCNTtDOTk2OzExMEMgMTE3MyAxMUI1OworQzk5NztDOTk3OzExMEMgMTE3MyAxMUI2O0M5OTc7MTEwQyAxMTczIDExQjY7CitDOTk4O0M5OTg7MTEwQyAxMTczIDExQjc7Qzk5ODsxMTBDIDExNzMgMTFCNzsKK0M5OTk7Qzk5OTsxMTBDIDExNzMgMTFCODtDOTk5OzExMEMgMTE3MyAxMUI4OworQzk5QTtDOTlBOzExMEMgMTE3MyAxMUI5O0M5OUE7MTEwQyAxMTczIDExQjk7CitDOTlCO0M5OUI7MTEwQyAxMTczIDExQkE7Qzk5QjsxMTBDIDExNzMgMTFCQTsKK0M5OUM7Qzk5QzsxMTBDIDExNzMgMTFCQjtDOTlDOzExMEMgMTE3MyAxMUJCOworQzk5RDtDOTlEOzExMEMgMTE3MyAxMUJDO0M5OUQ7MTEwQyAxMTczIDExQkM7CitDOTlFO0M5OUU7MTEwQyAxMTczIDExQkQ7Qzk5RTsxMTBDIDExNzMgMTFCRDsKK0M5OUY7Qzk5RjsxMTBDIDExNzMgMTFCRTtDOTlGOzExMEMgMTE3MyAxMUJFOworQzlBMDtDOUEwOzExMEMgMTE3MyAxMUJGO0M5QTA7MTEwQyAxMTczIDExQkY7CitDOUExO0M5QTE7MTEwQyAxMTczIDExQzA7QzlBMTsxMTBDIDExNzMgMTFDMDsKK0M5QTI7QzlBMjsxMTBDIDExNzMgMTFDMTtDOUEyOzExMEMgMTE3MyAxMUMxOworQzlBMztDOUEzOzExMEMgMTE3MyAxMUMyO0M5QTM7MTEwQyAxMTczIDExQzI7CitDOUE0O0M5QTQ7MTEwQyAxMTc0O0M5QTQ7MTEwQyAxMTc0OworQzlBNTtDOUE1OzExMEMgMTE3NCAxMUE4O0M5QTU7MTEwQyAxMTc0IDExQTg7CitDOUE2O0M5QTY7MTEwQyAxMTc0IDExQTk7QzlBNjsxMTBDIDExNzQgMTFBOTsKK0M5QTc7QzlBNzsxMTBDIDExNzQgMTFBQTtDOUE3OzExMEMgMTE3NCAxMUFBOworQzlBODtDOUE4OzExMEMgMTE3NCAxMUFCO0M5QTg7MTEwQyAxMTc0IDExQUI7CitDOUE5O0M5QTk7MTEwQyAxMTc0IDExQUM7QzlBOTsxMTBDIDExNzQgMTFBQzsKK0M5QUE7QzlBQTsxMTBDIDExNzQgMTFBRDtDOUFBOzExMEMgMTE3NCAxMUFEOworQzlBQjtDOUFCOzExMEMgMTE3NCAxMUFFO0M5QUI7MTEwQyAxMTc0IDExQUU7CitDOUFDO0M5QUM7MTEwQyAxMTc0IDExQUY7QzlBQzsxMTBDIDExNzQgMTFBRjsKK0M5QUQ7QzlBRDsxMTBDIDExNzQgMTFCMDtDOUFEOzExMEMgMTE3NCAxMUIwOworQzlBRTtDOUFFOzExMEMgMTE3NCAxMUIxO0M5QUU7MTEwQyAxMTc0IDExQjE7CitDOUFGO0M5QUY7MTEwQyAxMTc0IDExQjI7QzlBRjsxMTBDIDExNzQgMTFCMjsKK0M5QjA7QzlCMDsxMTBDIDExNzQgMTFCMztDOUIwOzExMEMgMTE3NCAxMUIzOworQzlCMTtDOUIxOzExMEMgMTE3NCAxMUI0O0M5QjE7MTEwQyAxMTc0IDExQjQ7CitDOUIyO0M5QjI7MTEwQyAxMTc0IDExQjU7QzlCMjsxMTBDIDExNzQgMTFCNTsKK0M5QjM7QzlCMzsxMTBDIDExNzQgMTFCNjtDOUIzOzExMEMgMTE3NCAxMUI2OworQzlCNDtDOUI0OzExMEMgMTE3NCAxMUI3O0M5QjQ7MTEwQyAxMTc0IDExQjc7CitDOUI1O0M5QjU7MTEwQyAxMTc0IDExQjg7QzlCNTsxMTBDIDExNzQgMTFCODsKK0M5QjY7QzlCNjsxMTBDIDExNzQgMTFCOTtDOUI2OzExMEMgMTE3NCAxMUI5OworQzlCNztDOUI3OzExMEMgMTE3NCAxMUJBO0M5Qjc7MTEwQyAxMTc0IDExQkE7CitDOUI4O0M5Qjg7MTEwQyAxMTc0IDExQkI7QzlCODsxMTBDIDExNzQgMTFCQjsKK0M5Qjk7QzlCOTsxMTBDIDExNzQgMTFCQztDOUI5OzExMEMgMTE3NCAxMUJDOworQzlCQTtDOUJBOzExMEMgMTE3NCAxMUJEO0M5QkE7MTEwQyAxMTc0IDExQkQ7CitDOUJCO0M5QkI7MTEwQyAxMTc0IDExQkU7QzlCQjsxMTBDIDExNzQgMTFCRTsKK0M5QkM7QzlCQzsxMTBDIDExNzQgMTFCRjtDOUJDOzExMEMgMTE3NCAxMUJGOworQzlCRDtDOUJEOzExMEMgMTE3NCAxMUMwO0M5QkQ7MTEwQyAxMTc0IDExQzA7CitDOUJFO0M5QkU7MTEwQyAxMTc0IDExQzE7QzlCRTsxMTBDIDExNzQgMTFDMTsKK0M5QkY7QzlCRjsxMTBDIDExNzQgMTFDMjtDOUJGOzExMEMgMTE3NCAxMUMyOworQzlDMDtDOUMwOzExMEMgMTE3NTtDOUMwOzExMEMgMTE3NTsKK0M5QzE7QzlDMTsxMTBDIDExNzUgMTFBODtDOUMxOzExMEMgMTE3NSAxMUE4OworQzlDMjtDOUMyOzExMEMgMTE3NSAxMUE5O0M5QzI7MTEwQyAxMTc1IDExQTk7CitDOUMzO0M5QzM7MTEwQyAxMTc1IDExQUE7QzlDMzsxMTBDIDExNzUgMTFBQTsKK0M5QzQ7QzlDNDsxMTBDIDExNzUgMTFBQjtDOUM0OzExMEMgMTE3NSAxMUFCOworQzlDNTtDOUM1OzExMEMgMTE3NSAxMUFDO0M5QzU7MTEwQyAxMTc1IDExQUM7CitDOUM2O0M5QzY7MTEwQyAxMTc1IDExQUQ7QzlDNjsxMTBDIDExNzUgMTFBRDsKK0M5Qzc7QzlDNzsxMTBDIDExNzUgMTFBRTtDOUM3OzExMEMgMTE3NSAxMUFFOworQzlDODtDOUM4OzExMEMgMTE3NSAxMUFGO0M5Qzg7MTEwQyAxMTc1IDExQUY7CitDOUM5O0M5Qzk7MTEwQyAxMTc1IDExQjA7QzlDOTsxMTBDIDExNzUgMTFCMDsKK0M5Q0E7QzlDQTsxMTBDIDExNzUgMTFCMTtDOUNBOzExMEMgMTE3NSAxMUIxOworQzlDQjtDOUNCOzExMEMgMTE3NSAxMUIyO0M5Q0I7MTEwQyAxMTc1IDExQjI7CitDOUNDO0M5Q0M7MTEwQyAxMTc1IDExQjM7QzlDQzsxMTBDIDExNzUgMTFCMzsKK0M5Q0Q7QzlDRDsxMTBDIDExNzUgMTFCNDtDOUNEOzExMEMgMTE3NSAxMUI0OworQzlDRTtDOUNFOzExMEMgMTE3NSAxMUI1O0M5Q0U7MTEwQyAxMTc1IDExQjU7CitDOUNGO0M5Q0Y7MTEwQyAxMTc1IDExQjY7QzlDRjsxMTBDIDExNzUgMTFCNjsKK0M5RDA7QzlEMDsxMTBDIDExNzUgMTFCNztDOUQwOzExMEMgMTE3NSAxMUI3OworQzlEMTtDOUQxOzExMEMgMTE3NSAxMUI4O0M5RDE7MTEwQyAxMTc1IDExQjg7CitDOUQyO0M5RDI7MTEwQyAxMTc1IDExQjk7QzlEMjsxMTBDIDExNzUgMTFCOTsKK0M5RDM7QzlEMzsxMTBDIDExNzUgMTFCQTtDOUQzOzExMEMgMTE3NSAxMUJBOworQzlENDtDOUQ0OzExMEMgMTE3NSAxMUJCO0M5RDQ7MTEwQyAxMTc1IDExQkI7CitDOUQ1O0M5RDU7MTEwQyAxMTc1IDExQkM7QzlENTsxMTBDIDExNzUgMTFCQzsKK0M5RDY7QzlENjsxMTBDIDExNzUgMTFCRDtDOUQ2OzExMEMgMTE3NSAxMUJEOworQzlENztDOUQ3OzExMEMgMTE3NSAxMUJFO0M5RDc7MTEwQyAxMTc1IDExQkU7CitDOUQ4O0M5RDg7MTEwQyAxMTc1IDExQkY7QzlEODsxMTBDIDExNzUgMTFCRjsKK0M5RDk7QzlEOTsxMTBDIDExNzUgMTFDMDtDOUQ5OzExMEMgMTE3NSAxMUMwOworQzlEQTtDOURBOzExMEMgMTE3NSAxMUMxO0M5REE7MTEwQyAxMTc1IDExQzE7CitDOURCO0M5REI7MTEwQyAxMTc1IDExQzI7QzlEQjsxMTBDIDExNzUgMTFDMjsKK0M5REM7QzlEQzsxMTBEIDExNjE7QzlEQzsxMTBEIDExNjE7CitDOUREO0M5REQ7MTEwRCAxMTYxIDExQTg7QzlERDsxMTBEIDExNjEgMTFBODsKK0M5REU7QzlERTsxMTBEIDExNjEgMTFBOTtDOURFOzExMEQgMTE2MSAxMUE5OworQzlERjtDOURGOzExMEQgMTE2MSAxMUFBO0M5REY7MTEwRCAxMTYxIDExQUE7CitDOUUwO0M5RTA7MTEwRCAxMTYxIDExQUI7QzlFMDsxMTBEIDExNjEgMTFBQjsKK0M5RTE7QzlFMTsxMTBEIDExNjEgMTFBQztDOUUxOzExMEQgMTE2MSAxMUFDOworQzlFMjtDOUUyOzExMEQgMTE2MSAxMUFEO0M5RTI7MTEwRCAxMTYxIDExQUQ7CitDOUUzO0M5RTM7MTEwRCAxMTYxIDExQUU7QzlFMzsxMTBEIDExNjEgMTFBRTsKK0M5RTQ7QzlFNDsxMTBEIDExNjEgMTFBRjtDOUU0OzExMEQgMTE2MSAxMUFGOworQzlFNTtDOUU1OzExMEQgMTE2MSAxMUIwO0M5RTU7MTEwRCAxMTYxIDExQjA7CitDOUU2O0M5RTY7MTEwRCAxMTYxIDExQjE7QzlFNjsxMTBEIDExNjEgMTFCMTsKK0M5RTc7QzlFNzsxMTBEIDExNjEgMTFCMjtDOUU3OzExMEQgMTE2MSAxMUIyOworQzlFODtDOUU4OzExMEQgMTE2MSAxMUIzO0M5RTg7MTEwRCAxMTYxIDExQjM7CitDOUU5O0M5RTk7MTEwRCAxMTYxIDExQjQ7QzlFOTsxMTBEIDExNjEgMTFCNDsKK0M5RUE7QzlFQTsxMTBEIDExNjEgMTFCNTtDOUVBOzExMEQgMTE2MSAxMUI1OworQzlFQjtDOUVCOzExMEQgMTE2MSAxMUI2O0M5RUI7MTEwRCAxMTYxIDExQjY7CitDOUVDO0M5RUM7MTEwRCAxMTYxIDExQjc7QzlFQzsxMTBEIDExNjEgMTFCNzsKK0M5RUQ7QzlFRDsxMTBEIDExNjEgMTFCODtDOUVEOzExMEQgMTE2MSAxMUI4OworQzlFRTtDOUVFOzExMEQgMTE2MSAxMUI5O0M5RUU7MTEwRCAxMTYxIDExQjk7CitDOUVGO0M5RUY7MTEwRCAxMTYxIDExQkE7QzlFRjsxMTBEIDExNjEgMTFCQTsKK0M5RjA7QzlGMDsxMTBEIDExNjEgMTFCQjtDOUYwOzExMEQgMTE2MSAxMUJCOworQzlGMTtDOUYxOzExMEQgMTE2MSAxMUJDO0M5RjE7MTEwRCAxMTYxIDExQkM7CitDOUYyO0M5RjI7MTEwRCAxMTYxIDExQkQ7QzlGMjsxMTBEIDExNjEgMTFCRDsKK0M5RjM7QzlGMzsxMTBEIDExNjEgMTFCRTtDOUYzOzExMEQgMTE2MSAxMUJFOworQzlGNDtDOUY0OzExMEQgMTE2MSAxMUJGO0M5RjQ7MTEwRCAxMTYxIDExQkY7CitDOUY1O0M5RjU7MTEwRCAxMTYxIDExQzA7QzlGNTsxMTBEIDExNjEgMTFDMDsKK0M5RjY7QzlGNjsxMTBEIDExNjEgMTFDMTtDOUY2OzExMEQgMTE2MSAxMUMxOworQzlGNztDOUY3OzExMEQgMTE2MSAxMUMyO0M5Rjc7MTEwRCAxMTYxIDExQzI7CitDOUY4O0M5Rjg7MTEwRCAxMTYyO0M5Rjg7MTEwRCAxMTYyOworQzlGOTtDOUY5OzExMEQgMTE2MiAxMUE4O0M5Rjk7MTEwRCAxMTYyIDExQTg7CitDOUZBO0M5RkE7MTEwRCAxMTYyIDExQTk7QzlGQTsxMTBEIDExNjIgMTFBOTsKK0M5RkI7QzlGQjsxMTBEIDExNjIgMTFBQTtDOUZCOzExMEQgMTE2MiAxMUFBOworQzlGQztDOUZDOzExMEQgMTE2MiAxMUFCO0M5RkM7MTEwRCAxMTYyIDExQUI7CitDOUZEO0M5RkQ7MTEwRCAxMTYyIDExQUM7QzlGRDsxMTBEIDExNjIgMTFBQzsKK0M5RkU7QzlGRTsxMTBEIDExNjIgMTFBRDtDOUZFOzExMEQgMTE2MiAxMUFEOworQzlGRjtDOUZGOzExMEQgMTE2MiAxMUFFO0M5RkY7MTEwRCAxMTYyIDExQUU7CitDQTAwO0NBMDA7MTEwRCAxMTYyIDExQUY7Q0EwMDsxMTBEIDExNjIgMTFBRjsKK0NBMDE7Q0EwMTsxMTBEIDExNjIgMTFCMDtDQTAxOzExMEQgMTE2MiAxMUIwOworQ0EwMjtDQTAyOzExMEQgMTE2MiAxMUIxO0NBMDI7MTEwRCAxMTYyIDExQjE7CitDQTAzO0NBMDM7MTEwRCAxMTYyIDExQjI7Q0EwMzsxMTBEIDExNjIgMTFCMjsKK0NBMDQ7Q0EwNDsxMTBEIDExNjIgMTFCMztDQTA0OzExMEQgMTE2MiAxMUIzOworQ0EwNTtDQTA1OzExMEQgMTE2MiAxMUI0O0NBMDU7MTEwRCAxMTYyIDExQjQ7CitDQTA2O0NBMDY7MTEwRCAxMTYyIDExQjU7Q0EwNjsxMTBEIDExNjIgMTFCNTsKK0NBMDc7Q0EwNzsxMTBEIDExNjIgMTFCNjtDQTA3OzExMEQgMTE2MiAxMUI2OworQ0EwODtDQTA4OzExMEQgMTE2MiAxMUI3O0NBMDg7MTEwRCAxMTYyIDExQjc7CitDQTA5O0NBMDk7MTEwRCAxMTYyIDExQjg7Q0EwOTsxMTBEIDExNjIgMTFCODsKK0NBMEE7Q0EwQTsxMTBEIDExNjIgMTFCOTtDQTBBOzExMEQgMTE2MiAxMUI5OworQ0EwQjtDQTBCOzExMEQgMTE2MiAxMUJBO0NBMEI7MTEwRCAxMTYyIDExQkE7CitDQTBDO0NBMEM7MTEwRCAxMTYyIDExQkI7Q0EwQzsxMTBEIDExNjIgMTFCQjsKK0NBMEQ7Q0EwRDsxMTBEIDExNjIgMTFCQztDQTBEOzExMEQgMTE2MiAxMUJDOworQ0EwRTtDQTBFOzExMEQgMTE2MiAxMUJEO0NBMEU7MTEwRCAxMTYyIDExQkQ7CitDQTBGO0NBMEY7MTEwRCAxMTYyIDExQkU7Q0EwRjsxMTBEIDExNjIgMTFCRTsKK0NBMTA7Q0ExMDsxMTBEIDExNjIgMTFCRjtDQTEwOzExMEQgMTE2MiAxMUJGOworQ0ExMTtDQTExOzExMEQgMTE2MiAxMUMwO0NBMTE7MTEwRCAxMTYyIDExQzA7CitDQTEyO0NBMTI7MTEwRCAxMTYyIDExQzE7Q0ExMjsxMTBEIDExNjIgMTFDMTsKK0NBMTM7Q0ExMzsxMTBEIDExNjIgMTFDMjtDQTEzOzExMEQgMTE2MiAxMUMyOworQ0ExNDtDQTE0OzExMEQgMTE2MztDQTE0OzExMEQgMTE2MzsKK0NBMTU7Q0ExNTsxMTBEIDExNjMgMTFBODtDQTE1OzExMEQgMTE2MyAxMUE4OworQ0ExNjtDQTE2OzExMEQgMTE2MyAxMUE5O0NBMTY7MTEwRCAxMTYzIDExQTk7CitDQTE3O0NBMTc7MTEwRCAxMTYzIDExQUE7Q0ExNzsxMTBEIDExNjMgMTFBQTsKK0NBMTg7Q0ExODsxMTBEIDExNjMgMTFBQjtDQTE4OzExMEQgMTE2MyAxMUFCOworQ0ExOTtDQTE5OzExMEQgMTE2MyAxMUFDO0NBMTk7MTEwRCAxMTYzIDExQUM7CitDQTFBO0NBMUE7MTEwRCAxMTYzIDExQUQ7Q0ExQTsxMTBEIDExNjMgMTFBRDsKK0NBMUI7Q0ExQjsxMTBEIDExNjMgMTFBRTtDQTFCOzExMEQgMTE2MyAxMUFFOworQ0ExQztDQTFDOzExMEQgMTE2MyAxMUFGO0NBMUM7MTEwRCAxMTYzIDExQUY7CitDQTFEO0NBMUQ7MTEwRCAxMTYzIDExQjA7Q0ExRDsxMTBEIDExNjMgMTFCMDsKK0NBMUU7Q0ExRTsxMTBEIDExNjMgMTFCMTtDQTFFOzExMEQgMTE2MyAxMUIxOworQ0ExRjtDQTFGOzExMEQgMTE2MyAxMUIyO0NBMUY7MTEwRCAxMTYzIDExQjI7CitDQTIwO0NBMjA7MTEwRCAxMTYzIDExQjM7Q0EyMDsxMTBEIDExNjMgMTFCMzsKK0NBMjE7Q0EyMTsxMTBEIDExNjMgMTFCNDtDQTIxOzExMEQgMTE2MyAxMUI0OworQ0EyMjtDQTIyOzExMEQgMTE2MyAxMUI1O0NBMjI7MTEwRCAxMTYzIDExQjU7CitDQTIzO0NBMjM7MTEwRCAxMTYzIDExQjY7Q0EyMzsxMTBEIDExNjMgMTFCNjsKK0NBMjQ7Q0EyNDsxMTBEIDExNjMgMTFCNztDQTI0OzExMEQgMTE2MyAxMUI3OworQ0EyNTtDQTI1OzExMEQgMTE2MyAxMUI4O0NBMjU7MTEwRCAxMTYzIDExQjg7CitDQTI2O0NBMjY7MTEwRCAxMTYzIDExQjk7Q0EyNjsxMTBEIDExNjMgMTFCOTsKK0NBMjc7Q0EyNzsxMTBEIDExNjMgMTFCQTtDQTI3OzExMEQgMTE2MyAxMUJBOworQ0EyODtDQTI4OzExMEQgMTE2MyAxMUJCO0NBMjg7MTEwRCAxMTYzIDExQkI7CitDQTI5O0NBMjk7MTEwRCAxMTYzIDExQkM7Q0EyOTsxMTBEIDExNjMgMTFCQzsKK0NBMkE7Q0EyQTsxMTBEIDExNjMgMTFCRDtDQTJBOzExMEQgMTE2MyAxMUJEOworQ0EyQjtDQTJCOzExMEQgMTE2MyAxMUJFO0NBMkI7MTEwRCAxMTYzIDExQkU7CitDQTJDO0NBMkM7MTEwRCAxMTYzIDExQkY7Q0EyQzsxMTBEIDExNjMgMTFCRjsKK0NBMkQ7Q0EyRDsxMTBEIDExNjMgMTFDMDtDQTJEOzExMEQgMTE2MyAxMUMwOworQ0EyRTtDQTJFOzExMEQgMTE2MyAxMUMxO0NBMkU7MTEwRCAxMTYzIDExQzE7CitDQTJGO0NBMkY7MTEwRCAxMTYzIDExQzI7Q0EyRjsxMTBEIDExNjMgMTFDMjsKK0NBMzA7Q0EzMDsxMTBEIDExNjQ7Q0EzMDsxMTBEIDExNjQ7CitDQTMxO0NBMzE7MTEwRCAxMTY0IDExQTg7Q0EzMTsxMTBEIDExNjQgMTFBODsKK0NBMzI7Q0EzMjsxMTBEIDExNjQgMTFBOTtDQTMyOzExMEQgMTE2NCAxMUE5OworQ0EzMztDQTMzOzExMEQgMTE2NCAxMUFBO0NBMzM7MTEwRCAxMTY0IDExQUE7CitDQTM0O0NBMzQ7MTEwRCAxMTY0IDExQUI7Q0EzNDsxMTBEIDExNjQgMTFBQjsKK0NBMzU7Q0EzNTsxMTBEIDExNjQgMTFBQztDQTM1OzExMEQgMTE2NCAxMUFDOworQ0EzNjtDQTM2OzExMEQgMTE2NCAxMUFEO0NBMzY7MTEwRCAxMTY0IDExQUQ7CitDQTM3O0NBMzc7MTEwRCAxMTY0IDExQUU7Q0EzNzsxMTBEIDExNjQgMTFBRTsKK0NBMzg7Q0EzODsxMTBEIDExNjQgMTFBRjtDQTM4OzExMEQgMTE2NCAxMUFGOworQ0EzOTtDQTM5OzExMEQgMTE2NCAxMUIwO0NBMzk7MTEwRCAxMTY0IDExQjA7CitDQTNBO0NBM0E7MTEwRCAxMTY0IDExQjE7Q0EzQTsxMTBEIDExNjQgMTFCMTsKK0NBM0I7Q0EzQjsxMTBEIDExNjQgMTFCMjtDQTNCOzExMEQgMTE2NCAxMUIyOworQ0EzQztDQTNDOzExMEQgMTE2NCAxMUIzO0NBM0M7MTEwRCAxMTY0IDExQjM7CitDQTNEO0NBM0Q7MTEwRCAxMTY0IDExQjQ7Q0EzRDsxMTBEIDExNjQgMTFCNDsKK0NBM0U7Q0EzRTsxMTBEIDExNjQgMTFCNTtDQTNFOzExMEQgMTE2NCAxMUI1OworQ0EzRjtDQTNGOzExMEQgMTE2NCAxMUI2O0NBM0Y7MTEwRCAxMTY0IDExQjY7CitDQTQwO0NBNDA7MTEwRCAxMTY0IDExQjc7Q0E0MDsxMTBEIDExNjQgMTFCNzsKK0NBNDE7Q0E0MTsxMTBEIDExNjQgMTFCODtDQTQxOzExMEQgMTE2NCAxMUI4OworQ0E0MjtDQTQyOzExMEQgMTE2NCAxMUI5O0NBNDI7MTEwRCAxMTY0IDExQjk7CitDQTQzO0NBNDM7MTEwRCAxMTY0IDExQkE7Q0E0MzsxMTBEIDExNjQgMTFCQTsKK0NBNDQ7Q0E0NDsxMTBEIDExNjQgMTFCQjtDQTQ0OzExMEQgMTE2NCAxMUJCOworQ0E0NTtDQTQ1OzExMEQgMTE2NCAxMUJDO0NBNDU7MTEwRCAxMTY0IDExQkM7CitDQTQ2O0NBNDY7MTEwRCAxMTY0IDExQkQ7Q0E0NjsxMTBEIDExNjQgMTFCRDsKK0NBNDc7Q0E0NzsxMTBEIDExNjQgMTFCRTtDQTQ3OzExMEQgMTE2NCAxMUJFOworQ0E0ODtDQTQ4OzExMEQgMTE2NCAxMUJGO0NBNDg7MTEwRCAxMTY0IDExQkY7CitDQTQ5O0NBNDk7MTEwRCAxMTY0IDExQzA7Q0E0OTsxMTBEIDExNjQgMTFDMDsKK0NBNEE7Q0E0QTsxMTBEIDExNjQgMTFDMTtDQTRBOzExMEQgMTE2NCAxMUMxOworQ0E0QjtDQTRCOzExMEQgMTE2NCAxMUMyO0NBNEI7MTEwRCAxMTY0IDExQzI7CitDQTRDO0NBNEM7MTEwRCAxMTY1O0NBNEM7MTEwRCAxMTY1OworQ0E0RDtDQTREOzExMEQgMTE2NSAxMUE4O0NBNEQ7MTEwRCAxMTY1IDExQTg7CitDQTRFO0NBNEU7MTEwRCAxMTY1IDExQTk7Q0E0RTsxMTBEIDExNjUgMTFBOTsKK0NBNEY7Q0E0RjsxMTBEIDExNjUgMTFBQTtDQTRGOzExMEQgMTE2NSAxMUFBOworQ0E1MDtDQTUwOzExMEQgMTE2NSAxMUFCO0NBNTA7MTEwRCAxMTY1IDExQUI7CitDQTUxO0NBNTE7MTEwRCAxMTY1IDExQUM7Q0E1MTsxMTBEIDExNjUgMTFBQzsKK0NBNTI7Q0E1MjsxMTBEIDExNjUgMTFBRDtDQTUyOzExMEQgMTE2NSAxMUFEOworQ0E1MztDQTUzOzExMEQgMTE2NSAxMUFFO0NBNTM7MTEwRCAxMTY1IDExQUU7CitDQTU0O0NBNTQ7MTEwRCAxMTY1IDExQUY7Q0E1NDsxMTBEIDExNjUgMTFBRjsKK0NBNTU7Q0E1NTsxMTBEIDExNjUgMTFCMDtDQTU1OzExMEQgMTE2NSAxMUIwOworQ0E1NjtDQTU2OzExMEQgMTE2NSAxMUIxO0NBNTY7MTEwRCAxMTY1IDExQjE7CitDQTU3O0NBNTc7MTEwRCAxMTY1IDExQjI7Q0E1NzsxMTBEIDExNjUgMTFCMjsKK0NBNTg7Q0E1ODsxMTBEIDExNjUgMTFCMztDQTU4OzExMEQgMTE2NSAxMUIzOworQ0E1OTtDQTU5OzExMEQgMTE2NSAxMUI0O0NBNTk7MTEwRCAxMTY1IDExQjQ7CitDQTVBO0NBNUE7MTEwRCAxMTY1IDExQjU7Q0E1QTsxMTBEIDExNjUgMTFCNTsKK0NBNUI7Q0E1QjsxMTBEIDExNjUgMTFCNjtDQTVCOzExMEQgMTE2NSAxMUI2OworQ0E1QztDQTVDOzExMEQgMTE2NSAxMUI3O0NBNUM7MTEwRCAxMTY1IDExQjc7CitDQTVEO0NBNUQ7MTEwRCAxMTY1IDExQjg7Q0E1RDsxMTBEIDExNjUgMTFCODsKK0NBNUU7Q0E1RTsxMTBEIDExNjUgMTFCOTtDQTVFOzExMEQgMTE2NSAxMUI5OworQ0E1RjtDQTVGOzExMEQgMTE2NSAxMUJBO0NBNUY7MTEwRCAxMTY1IDExQkE7CitDQTYwO0NBNjA7MTEwRCAxMTY1IDExQkI7Q0E2MDsxMTBEIDExNjUgMTFCQjsKK0NBNjE7Q0E2MTsxMTBEIDExNjUgMTFCQztDQTYxOzExMEQgMTE2NSAxMUJDOworQ0E2MjtDQTYyOzExMEQgMTE2NSAxMUJEO0NBNjI7MTEwRCAxMTY1IDExQkQ7CitDQTYzO0NBNjM7MTEwRCAxMTY1IDExQkU7Q0E2MzsxMTBEIDExNjUgMTFCRTsKK0NBNjQ7Q0E2NDsxMTBEIDExNjUgMTFCRjtDQTY0OzExMEQgMTE2NSAxMUJGOworQ0E2NTtDQTY1OzExMEQgMTE2NSAxMUMwO0NBNjU7MTEwRCAxMTY1IDExQzA7CitDQTY2O0NBNjY7MTEwRCAxMTY1IDExQzE7Q0E2NjsxMTBEIDExNjUgMTFDMTsKK0NBNjc7Q0E2NzsxMTBEIDExNjUgMTFDMjtDQTY3OzExMEQgMTE2NSAxMUMyOworQ0E2ODtDQTY4OzExMEQgMTE2NjtDQTY4OzExMEQgMTE2NjsKK0NBNjk7Q0E2OTsxMTBEIDExNjYgMTFBODtDQTY5OzExMEQgMTE2NiAxMUE4OworQ0E2QTtDQTZBOzExMEQgMTE2NiAxMUE5O0NBNkE7MTEwRCAxMTY2IDExQTk7CitDQTZCO0NBNkI7MTEwRCAxMTY2IDExQUE7Q0E2QjsxMTBEIDExNjYgMTFBQTsKK0NBNkM7Q0E2QzsxMTBEIDExNjYgMTFBQjtDQTZDOzExMEQgMTE2NiAxMUFCOworQ0E2RDtDQTZEOzExMEQgMTE2NiAxMUFDO0NBNkQ7MTEwRCAxMTY2IDExQUM7CitDQTZFO0NBNkU7MTEwRCAxMTY2IDExQUQ7Q0E2RTsxMTBEIDExNjYgMTFBRDsKK0NBNkY7Q0E2RjsxMTBEIDExNjYgMTFBRTtDQTZGOzExMEQgMTE2NiAxMUFFOworQ0E3MDtDQTcwOzExMEQgMTE2NiAxMUFGO0NBNzA7MTEwRCAxMTY2IDExQUY7CitDQTcxO0NBNzE7MTEwRCAxMTY2IDExQjA7Q0E3MTsxMTBEIDExNjYgMTFCMDsKK0NBNzI7Q0E3MjsxMTBEIDExNjYgMTFCMTtDQTcyOzExMEQgMTE2NiAxMUIxOworQ0E3MztDQTczOzExMEQgMTE2NiAxMUIyO0NBNzM7MTEwRCAxMTY2IDExQjI7CitDQTc0O0NBNzQ7MTEwRCAxMTY2IDExQjM7Q0E3NDsxMTBEIDExNjYgMTFCMzsKK0NBNzU7Q0E3NTsxMTBEIDExNjYgMTFCNDtDQTc1OzExMEQgMTE2NiAxMUI0OworQ0E3NjtDQTc2OzExMEQgMTE2NiAxMUI1O0NBNzY7MTEwRCAxMTY2IDExQjU7CitDQTc3O0NBNzc7MTEwRCAxMTY2IDExQjY7Q0E3NzsxMTBEIDExNjYgMTFCNjsKK0NBNzg7Q0E3ODsxMTBEIDExNjYgMTFCNztDQTc4OzExMEQgMTE2NiAxMUI3OworQ0E3OTtDQTc5OzExMEQgMTE2NiAxMUI4O0NBNzk7MTEwRCAxMTY2IDExQjg7CitDQTdBO0NBN0E7MTEwRCAxMTY2IDExQjk7Q0E3QTsxMTBEIDExNjYgMTFCOTsKK0NBN0I7Q0E3QjsxMTBEIDExNjYgMTFCQTtDQTdCOzExMEQgMTE2NiAxMUJBOworQ0E3QztDQTdDOzExMEQgMTE2NiAxMUJCO0NBN0M7MTEwRCAxMTY2IDExQkI7CitDQTdEO0NBN0Q7MTEwRCAxMTY2IDExQkM7Q0E3RDsxMTBEIDExNjYgMTFCQzsKK0NBN0U7Q0E3RTsxMTBEIDExNjYgMTFCRDtDQTdFOzExMEQgMTE2NiAxMUJEOworQ0E3RjtDQTdGOzExMEQgMTE2NiAxMUJFO0NBN0Y7MTEwRCAxMTY2IDExQkU7CitDQTgwO0NBODA7MTEwRCAxMTY2IDExQkY7Q0E4MDsxMTBEIDExNjYgMTFCRjsKK0NBODE7Q0E4MTsxMTBEIDExNjYgMTFDMDtDQTgxOzExMEQgMTE2NiAxMUMwOworQ0E4MjtDQTgyOzExMEQgMTE2NiAxMUMxO0NBODI7MTEwRCAxMTY2IDExQzE7CitDQTgzO0NBODM7MTEwRCAxMTY2IDExQzI7Q0E4MzsxMTBEIDExNjYgMTFDMjsKK0NBODQ7Q0E4NDsxMTBEIDExNjc7Q0E4NDsxMTBEIDExNjc7CitDQTg1O0NBODU7MTEwRCAxMTY3IDExQTg7Q0E4NTsxMTBEIDExNjcgMTFBODsKK0NBODY7Q0E4NjsxMTBEIDExNjcgMTFBOTtDQTg2OzExMEQgMTE2NyAxMUE5OworQ0E4NztDQTg3OzExMEQgMTE2NyAxMUFBO0NBODc7MTEwRCAxMTY3IDExQUE7CitDQTg4O0NBODg7MTEwRCAxMTY3IDExQUI7Q0E4ODsxMTBEIDExNjcgMTFBQjsKK0NBODk7Q0E4OTsxMTBEIDExNjcgMTFBQztDQTg5OzExMEQgMTE2NyAxMUFDOworQ0E4QTtDQThBOzExMEQgMTE2NyAxMUFEO0NBOEE7MTEwRCAxMTY3IDExQUQ7CitDQThCO0NBOEI7MTEwRCAxMTY3IDExQUU7Q0E4QjsxMTBEIDExNjcgMTFBRTsKK0NBOEM7Q0E4QzsxMTBEIDExNjcgMTFBRjtDQThDOzExMEQgMTE2NyAxMUFGOworQ0E4RDtDQThEOzExMEQgMTE2NyAxMUIwO0NBOEQ7MTEwRCAxMTY3IDExQjA7CitDQThFO0NBOEU7MTEwRCAxMTY3IDExQjE7Q0E4RTsxMTBEIDExNjcgMTFCMTsKK0NBOEY7Q0E4RjsxMTBEIDExNjcgMTFCMjtDQThGOzExMEQgMTE2NyAxMUIyOworQ0E5MDtDQTkwOzExMEQgMTE2NyAxMUIzO0NBOTA7MTEwRCAxMTY3IDExQjM7CitDQTkxO0NBOTE7MTEwRCAxMTY3IDExQjQ7Q0E5MTsxMTBEIDExNjcgMTFCNDsKK0NBOTI7Q0E5MjsxMTBEIDExNjcgMTFCNTtDQTkyOzExMEQgMTE2NyAxMUI1OworQ0E5MztDQTkzOzExMEQgMTE2NyAxMUI2O0NBOTM7MTEwRCAxMTY3IDExQjY7CitDQTk0O0NBOTQ7MTEwRCAxMTY3IDExQjc7Q0E5NDsxMTBEIDExNjcgMTFCNzsKK0NBOTU7Q0E5NTsxMTBEIDExNjcgMTFCODtDQTk1OzExMEQgMTE2NyAxMUI4OworQ0E5NjtDQTk2OzExMEQgMTE2NyAxMUI5O0NBOTY7MTEwRCAxMTY3IDExQjk7CitDQTk3O0NBOTc7MTEwRCAxMTY3IDExQkE7Q0E5NzsxMTBEIDExNjcgMTFCQTsKK0NBOTg7Q0E5ODsxMTBEIDExNjcgMTFCQjtDQTk4OzExMEQgMTE2NyAxMUJCOworQ0E5OTtDQTk5OzExMEQgMTE2NyAxMUJDO0NBOTk7MTEwRCAxMTY3IDExQkM7CitDQTlBO0NBOUE7MTEwRCAxMTY3IDExQkQ7Q0E5QTsxMTBEIDExNjcgMTFCRDsKK0NBOUI7Q0E5QjsxMTBEIDExNjcgMTFCRTtDQTlCOzExMEQgMTE2NyAxMUJFOworQ0E5QztDQTlDOzExMEQgMTE2NyAxMUJGO0NBOUM7MTEwRCAxMTY3IDExQkY7CitDQTlEO0NBOUQ7MTEwRCAxMTY3IDExQzA7Q0E5RDsxMTBEIDExNjcgMTFDMDsKK0NBOUU7Q0E5RTsxMTBEIDExNjcgMTFDMTtDQTlFOzExMEQgMTE2NyAxMUMxOworQ0E5RjtDQTlGOzExMEQgMTE2NyAxMUMyO0NBOUY7MTEwRCAxMTY3IDExQzI7CitDQUEwO0NBQTA7MTEwRCAxMTY4O0NBQTA7MTEwRCAxMTY4OworQ0FBMTtDQUExOzExMEQgMTE2OCAxMUE4O0NBQTE7MTEwRCAxMTY4IDExQTg7CitDQUEyO0NBQTI7MTEwRCAxMTY4IDExQTk7Q0FBMjsxMTBEIDExNjggMTFBOTsKK0NBQTM7Q0FBMzsxMTBEIDExNjggMTFBQTtDQUEzOzExMEQgMTE2OCAxMUFBOworQ0FBNDtDQUE0OzExMEQgMTE2OCAxMUFCO0NBQTQ7MTEwRCAxMTY4IDExQUI7CitDQUE1O0NBQTU7MTEwRCAxMTY4IDExQUM7Q0FBNTsxMTBEIDExNjggMTFBQzsKK0NBQTY7Q0FBNjsxMTBEIDExNjggMTFBRDtDQUE2OzExMEQgMTE2OCAxMUFEOworQ0FBNztDQUE3OzExMEQgMTE2OCAxMUFFO0NBQTc7MTEwRCAxMTY4IDExQUU7CitDQUE4O0NBQTg7MTEwRCAxMTY4IDExQUY7Q0FBODsxMTBEIDExNjggMTFBRjsKK0NBQTk7Q0FBOTsxMTBEIDExNjggMTFCMDtDQUE5OzExMEQgMTE2OCAxMUIwOworQ0FBQTtDQUFBOzExMEQgMTE2OCAxMUIxO0NBQUE7MTEwRCAxMTY4IDExQjE7CitDQUFCO0NBQUI7MTEwRCAxMTY4IDExQjI7Q0FBQjsxMTBEIDExNjggMTFCMjsKK0NBQUM7Q0FBQzsxMTBEIDExNjggMTFCMztDQUFDOzExMEQgMTE2OCAxMUIzOworQ0FBRDtDQUFEOzExMEQgMTE2OCAxMUI0O0NBQUQ7MTEwRCAxMTY4IDExQjQ7CitDQUFFO0NBQUU7MTEwRCAxMTY4IDExQjU7Q0FBRTsxMTBEIDExNjggMTFCNTsKK0NBQUY7Q0FBRjsxMTBEIDExNjggMTFCNjtDQUFGOzExMEQgMTE2OCAxMUI2OworQ0FCMDtDQUIwOzExMEQgMTE2OCAxMUI3O0NBQjA7MTEwRCAxMTY4IDExQjc7CitDQUIxO0NBQjE7MTEwRCAxMTY4IDExQjg7Q0FCMTsxMTBEIDExNjggMTFCODsKK0NBQjI7Q0FCMjsxMTBEIDExNjggMTFCOTtDQUIyOzExMEQgMTE2OCAxMUI5OworQ0FCMztDQUIzOzExMEQgMTE2OCAxMUJBO0NBQjM7MTEwRCAxMTY4IDExQkE7CitDQUI0O0NBQjQ7MTEwRCAxMTY4IDExQkI7Q0FCNDsxMTBEIDExNjggMTFCQjsKK0NBQjU7Q0FCNTsxMTBEIDExNjggMTFCQztDQUI1OzExMEQgMTE2OCAxMUJDOworQ0FCNjtDQUI2OzExMEQgMTE2OCAxMUJEO0NBQjY7MTEwRCAxMTY4IDExQkQ7CitDQUI3O0NBQjc7MTEwRCAxMTY4IDExQkU7Q0FCNzsxMTBEIDExNjggMTFCRTsKK0NBQjg7Q0FCODsxMTBEIDExNjggMTFCRjtDQUI4OzExMEQgMTE2OCAxMUJGOworQ0FCOTtDQUI5OzExMEQgMTE2OCAxMUMwO0NBQjk7MTEwRCAxMTY4IDExQzA7CitDQUJBO0NBQkE7MTEwRCAxMTY4IDExQzE7Q0FCQTsxMTBEIDExNjggMTFDMTsKK0NBQkI7Q0FCQjsxMTBEIDExNjggMTFDMjtDQUJCOzExMEQgMTE2OCAxMUMyOworQ0FCQztDQUJDOzExMEQgMTE2OTtDQUJDOzExMEQgMTE2OTsKK0NBQkQ7Q0FCRDsxMTBEIDExNjkgMTFBODtDQUJEOzExMEQgMTE2OSAxMUE4OworQ0FCRTtDQUJFOzExMEQgMTE2OSAxMUE5O0NBQkU7MTEwRCAxMTY5IDExQTk7CitDQUJGO0NBQkY7MTEwRCAxMTY5IDExQUE7Q0FCRjsxMTBEIDExNjkgMTFBQTsKK0NBQzA7Q0FDMDsxMTBEIDExNjkgMTFBQjtDQUMwOzExMEQgMTE2OSAxMUFCOworQ0FDMTtDQUMxOzExMEQgMTE2OSAxMUFDO0NBQzE7MTEwRCAxMTY5IDExQUM7CitDQUMyO0NBQzI7MTEwRCAxMTY5IDExQUQ7Q0FDMjsxMTBEIDExNjkgMTFBRDsKK0NBQzM7Q0FDMzsxMTBEIDExNjkgMTFBRTtDQUMzOzExMEQgMTE2OSAxMUFFOworQ0FDNDtDQUM0OzExMEQgMTE2OSAxMUFGO0NBQzQ7MTEwRCAxMTY5IDExQUY7CitDQUM1O0NBQzU7MTEwRCAxMTY5IDExQjA7Q0FDNTsxMTBEIDExNjkgMTFCMDsKK0NBQzY7Q0FDNjsxMTBEIDExNjkgMTFCMTtDQUM2OzExMEQgMTE2OSAxMUIxOworQ0FDNztDQUM3OzExMEQgMTE2OSAxMUIyO0NBQzc7MTEwRCAxMTY5IDExQjI7CitDQUM4O0NBQzg7MTEwRCAxMTY5IDExQjM7Q0FDODsxMTBEIDExNjkgMTFCMzsKK0NBQzk7Q0FDOTsxMTBEIDExNjkgMTFCNDtDQUM5OzExMEQgMTE2OSAxMUI0OworQ0FDQTtDQUNBOzExMEQgMTE2OSAxMUI1O0NBQ0E7MTEwRCAxMTY5IDExQjU7CitDQUNCO0NBQ0I7MTEwRCAxMTY5IDExQjY7Q0FDQjsxMTBEIDExNjkgMTFCNjsKK0NBQ0M7Q0FDQzsxMTBEIDExNjkgMTFCNztDQUNDOzExMEQgMTE2OSAxMUI3OworQ0FDRDtDQUNEOzExMEQgMTE2OSAxMUI4O0NBQ0Q7MTEwRCAxMTY5IDExQjg7CitDQUNFO0NBQ0U7MTEwRCAxMTY5IDExQjk7Q0FDRTsxMTBEIDExNjkgMTFCOTsKK0NBQ0Y7Q0FDRjsxMTBEIDExNjkgMTFCQTtDQUNGOzExMEQgMTE2OSAxMUJBOworQ0FEMDtDQUQwOzExMEQgMTE2OSAxMUJCO0NBRDA7MTEwRCAxMTY5IDExQkI7CitDQUQxO0NBRDE7MTEwRCAxMTY5IDExQkM7Q0FEMTsxMTBEIDExNjkgMTFCQzsKK0NBRDI7Q0FEMjsxMTBEIDExNjkgMTFCRDtDQUQyOzExMEQgMTE2OSAxMUJEOworQ0FEMztDQUQzOzExMEQgMTE2OSAxMUJFO0NBRDM7MTEwRCAxMTY5IDExQkU7CitDQUQ0O0NBRDQ7MTEwRCAxMTY5IDExQkY7Q0FENDsxMTBEIDExNjkgMTFCRjsKK0NBRDU7Q0FENTsxMTBEIDExNjkgMTFDMDtDQUQ1OzExMEQgMTE2OSAxMUMwOworQ0FENjtDQUQ2OzExMEQgMTE2OSAxMUMxO0NBRDY7MTEwRCAxMTY5IDExQzE7CitDQUQ3O0NBRDc7MTEwRCAxMTY5IDExQzI7Q0FENzsxMTBEIDExNjkgMTFDMjsKK0NBRDg7Q0FEODsxMTBEIDExNkE7Q0FEODsxMTBEIDExNkE7CitDQUQ5O0NBRDk7MTEwRCAxMTZBIDExQTg7Q0FEOTsxMTBEIDExNkEgMTFBODsKK0NBREE7Q0FEQTsxMTBEIDExNkEgMTFBOTtDQURBOzExMEQgMTE2QSAxMUE5OworQ0FEQjtDQURCOzExMEQgMTE2QSAxMUFBO0NBREI7MTEwRCAxMTZBIDExQUE7CitDQURDO0NBREM7MTEwRCAxMTZBIDExQUI7Q0FEQzsxMTBEIDExNkEgMTFBQjsKK0NBREQ7Q0FERDsxMTBEIDExNkEgMTFBQztDQUREOzExMEQgMTE2QSAxMUFDOworQ0FERTtDQURFOzExMEQgMTE2QSAxMUFEO0NBREU7MTEwRCAxMTZBIDExQUQ7CitDQURGO0NBREY7MTEwRCAxMTZBIDExQUU7Q0FERjsxMTBEIDExNkEgMTFBRTsKK0NBRTA7Q0FFMDsxMTBEIDExNkEgMTFBRjtDQUUwOzExMEQgMTE2QSAxMUFGOworQ0FFMTtDQUUxOzExMEQgMTE2QSAxMUIwO0NBRTE7MTEwRCAxMTZBIDExQjA7CitDQUUyO0NBRTI7MTEwRCAxMTZBIDExQjE7Q0FFMjsxMTBEIDExNkEgMTFCMTsKK0NBRTM7Q0FFMzsxMTBEIDExNkEgMTFCMjtDQUUzOzExMEQgMTE2QSAxMUIyOworQ0FFNDtDQUU0OzExMEQgMTE2QSAxMUIzO0NBRTQ7MTEwRCAxMTZBIDExQjM7CitDQUU1O0NBRTU7MTEwRCAxMTZBIDExQjQ7Q0FFNTsxMTBEIDExNkEgMTFCNDsKK0NBRTY7Q0FFNjsxMTBEIDExNkEgMTFCNTtDQUU2OzExMEQgMTE2QSAxMUI1OworQ0FFNztDQUU3OzExMEQgMTE2QSAxMUI2O0NBRTc7MTEwRCAxMTZBIDExQjY7CitDQUU4O0NBRTg7MTEwRCAxMTZBIDExQjc7Q0FFODsxMTBEIDExNkEgMTFCNzsKK0NBRTk7Q0FFOTsxMTBEIDExNkEgMTFCODtDQUU5OzExMEQgMTE2QSAxMUI4OworQ0FFQTtDQUVBOzExMEQgMTE2QSAxMUI5O0NBRUE7MTEwRCAxMTZBIDExQjk7CitDQUVCO0NBRUI7MTEwRCAxMTZBIDExQkE7Q0FFQjsxMTBEIDExNkEgMTFCQTsKK0NBRUM7Q0FFQzsxMTBEIDExNkEgMTFCQjtDQUVDOzExMEQgMTE2QSAxMUJCOworQ0FFRDtDQUVEOzExMEQgMTE2QSAxMUJDO0NBRUQ7MTEwRCAxMTZBIDExQkM7CitDQUVFO0NBRUU7MTEwRCAxMTZBIDExQkQ7Q0FFRTsxMTBEIDExNkEgMTFCRDsKK0NBRUY7Q0FFRjsxMTBEIDExNkEgMTFCRTtDQUVGOzExMEQgMTE2QSAxMUJFOworQ0FGMDtDQUYwOzExMEQgMTE2QSAxMUJGO0NBRjA7MTEwRCAxMTZBIDExQkY7CitDQUYxO0NBRjE7MTEwRCAxMTZBIDExQzA7Q0FGMTsxMTBEIDExNkEgMTFDMDsKK0NBRjI7Q0FGMjsxMTBEIDExNkEgMTFDMTtDQUYyOzExMEQgMTE2QSAxMUMxOworQ0FGMztDQUYzOzExMEQgMTE2QSAxMUMyO0NBRjM7MTEwRCAxMTZBIDExQzI7CitDQUY0O0NBRjQ7MTEwRCAxMTZCO0NBRjQ7MTEwRCAxMTZCOworQ0FGNTtDQUY1OzExMEQgMTE2QiAxMUE4O0NBRjU7MTEwRCAxMTZCIDExQTg7CitDQUY2O0NBRjY7MTEwRCAxMTZCIDExQTk7Q0FGNjsxMTBEIDExNkIgMTFBOTsKK0NBRjc7Q0FGNzsxMTBEIDExNkIgMTFBQTtDQUY3OzExMEQgMTE2QiAxMUFBOworQ0FGODtDQUY4OzExMEQgMTE2QiAxMUFCO0NBRjg7MTEwRCAxMTZCIDExQUI7CitDQUY5O0NBRjk7MTEwRCAxMTZCIDExQUM7Q0FGOTsxMTBEIDExNkIgMTFBQzsKK0NBRkE7Q0FGQTsxMTBEIDExNkIgMTFBRDtDQUZBOzExMEQgMTE2QiAxMUFEOworQ0FGQjtDQUZCOzExMEQgMTE2QiAxMUFFO0NBRkI7MTEwRCAxMTZCIDExQUU7CitDQUZDO0NBRkM7MTEwRCAxMTZCIDExQUY7Q0FGQzsxMTBEIDExNkIgMTFBRjsKK0NBRkQ7Q0FGRDsxMTBEIDExNkIgMTFCMDtDQUZEOzExMEQgMTE2QiAxMUIwOworQ0FGRTtDQUZFOzExMEQgMTE2QiAxMUIxO0NBRkU7MTEwRCAxMTZCIDExQjE7CitDQUZGO0NBRkY7MTEwRCAxMTZCIDExQjI7Q0FGRjsxMTBEIDExNkIgMTFCMjsKK0NCMDA7Q0IwMDsxMTBEIDExNkIgMTFCMztDQjAwOzExMEQgMTE2QiAxMUIzOworQ0IwMTtDQjAxOzExMEQgMTE2QiAxMUI0O0NCMDE7MTEwRCAxMTZCIDExQjQ7CitDQjAyO0NCMDI7MTEwRCAxMTZCIDExQjU7Q0IwMjsxMTBEIDExNkIgMTFCNTsKK0NCMDM7Q0IwMzsxMTBEIDExNkIgMTFCNjtDQjAzOzExMEQgMTE2QiAxMUI2OworQ0IwNDtDQjA0OzExMEQgMTE2QiAxMUI3O0NCMDQ7MTEwRCAxMTZCIDExQjc7CitDQjA1O0NCMDU7MTEwRCAxMTZCIDExQjg7Q0IwNTsxMTBEIDExNkIgMTFCODsKK0NCMDY7Q0IwNjsxMTBEIDExNkIgMTFCOTtDQjA2OzExMEQgMTE2QiAxMUI5OworQ0IwNztDQjA3OzExMEQgMTE2QiAxMUJBO0NCMDc7MTEwRCAxMTZCIDExQkE7CitDQjA4O0NCMDg7MTEwRCAxMTZCIDExQkI7Q0IwODsxMTBEIDExNkIgMTFCQjsKK0NCMDk7Q0IwOTsxMTBEIDExNkIgMTFCQztDQjA5OzExMEQgMTE2QiAxMUJDOworQ0IwQTtDQjBBOzExMEQgMTE2QiAxMUJEO0NCMEE7MTEwRCAxMTZCIDExQkQ7CitDQjBCO0NCMEI7MTEwRCAxMTZCIDExQkU7Q0IwQjsxMTBEIDExNkIgMTFCRTsKK0NCMEM7Q0IwQzsxMTBEIDExNkIgMTFCRjtDQjBDOzExMEQgMTE2QiAxMUJGOworQ0IwRDtDQjBEOzExMEQgMTE2QiAxMUMwO0NCMEQ7MTEwRCAxMTZCIDExQzA7CitDQjBFO0NCMEU7MTEwRCAxMTZCIDExQzE7Q0IwRTsxMTBEIDExNkIgMTFDMTsKK0NCMEY7Q0IwRjsxMTBEIDExNkIgMTFDMjtDQjBGOzExMEQgMTE2QiAxMUMyOworQ0IxMDtDQjEwOzExMEQgMTE2QztDQjEwOzExMEQgMTE2QzsKK0NCMTE7Q0IxMTsxMTBEIDExNkMgMTFBODtDQjExOzExMEQgMTE2QyAxMUE4OworQ0IxMjtDQjEyOzExMEQgMTE2QyAxMUE5O0NCMTI7MTEwRCAxMTZDIDExQTk7CitDQjEzO0NCMTM7MTEwRCAxMTZDIDExQUE7Q0IxMzsxMTBEIDExNkMgMTFBQTsKK0NCMTQ7Q0IxNDsxMTBEIDExNkMgMTFBQjtDQjE0OzExMEQgMTE2QyAxMUFCOworQ0IxNTtDQjE1OzExMEQgMTE2QyAxMUFDO0NCMTU7MTEwRCAxMTZDIDExQUM7CitDQjE2O0NCMTY7MTEwRCAxMTZDIDExQUQ7Q0IxNjsxMTBEIDExNkMgMTFBRDsKK0NCMTc7Q0IxNzsxMTBEIDExNkMgMTFBRTtDQjE3OzExMEQgMTE2QyAxMUFFOworQ0IxODtDQjE4OzExMEQgMTE2QyAxMUFGO0NCMTg7MTEwRCAxMTZDIDExQUY7CitDQjE5O0NCMTk7MTEwRCAxMTZDIDExQjA7Q0IxOTsxMTBEIDExNkMgMTFCMDsKK0NCMUE7Q0IxQTsxMTBEIDExNkMgMTFCMTtDQjFBOzExMEQgMTE2QyAxMUIxOworQ0IxQjtDQjFCOzExMEQgMTE2QyAxMUIyO0NCMUI7MTEwRCAxMTZDIDExQjI7CitDQjFDO0NCMUM7MTEwRCAxMTZDIDExQjM7Q0IxQzsxMTBEIDExNkMgMTFCMzsKK0NCMUQ7Q0IxRDsxMTBEIDExNkMgMTFCNDtDQjFEOzExMEQgMTE2QyAxMUI0OworQ0IxRTtDQjFFOzExMEQgMTE2QyAxMUI1O0NCMUU7MTEwRCAxMTZDIDExQjU7CitDQjFGO0NCMUY7MTEwRCAxMTZDIDExQjY7Q0IxRjsxMTBEIDExNkMgMTFCNjsKK0NCMjA7Q0IyMDsxMTBEIDExNkMgMTFCNztDQjIwOzExMEQgMTE2QyAxMUI3OworQ0IyMTtDQjIxOzExMEQgMTE2QyAxMUI4O0NCMjE7MTEwRCAxMTZDIDExQjg7CitDQjIyO0NCMjI7MTEwRCAxMTZDIDExQjk7Q0IyMjsxMTBEIDExNkMgMTFCOTsKK0NCMjM7Q0IyMzsxMTBEIDExNkMgMTFCQTtDQjIzOzExMEQgMTE2QyAxMUJBOworQ0IyNDtDQjI0OzExMEQgMTE2QyAxMUJCO0NCMjQ7MTEwRCAxMTZDIDExQkI7CitDQjI1O0NCMjU7MTEwRCAxMTZDIDExQkM7Q0IyNTsxMTBEIDExNkMgMTFCQzsKK0NCMjY7Q0IyNjsxMTBEIDExNkMgMTFCRDtDQjI2OzExMEQgMTE2QyAxMUJEOworQ0IyNztDQjI3OzExMEQgMTE2QyAxMUJFO0NCMjc7MTEwRCAxMTZDIDExQkU7CitDQjI4O0NCMjg7MTEwRCAxMTZDIDExQkY7Q0IyODsxMTBEIDExNkMgMTFCRjsKK0NCMjk7Q0IyOTsxMTBEIDExNkMgMTFDMDtDQjI5OzExMEQgMTE2QyAxMUMwOworQ0IyQTtDQjJBOzExMEQgMTE2QyAxMUMxO0NCMkE7MTEwRCAxMTZDIDExQzE7CitDQjJCO0NCMkI7MTEwRCAxMTZDIDExQzI7Q0IyQjsxMTBEIDExNkMgMTFDMjsKK0NCMkM7Q0IyQzsxMTBEIDExNkQ7Q0IyQzsxMTBEIDExNkQ7CitDQjJEO0NCMkQ7MTEwRCAxMTZEIDExQTg7Q0IyRDsxMTBEIDExNkQgMTFBODsKK0NCMkU7Q0IyRTsxMTBEIDExNkQgMTFBOTtDQjJFOzExMEQgMTE2RCAxMUE5OworQ0IyRjtDQjJGOzExMEQgMTE2RCAxMUFBO0NCMkY7MTEwRCAxMTZEIDExQUE7CitDQjMwO0NCMzA7MTEwRCAxMTZEIDExQUI7Q0IzMDsxMTBEIDExNkQgMTFBQjsKK0NCMzE7Q0IzMTsxMTBEIDExNkQgMTFBQztDQjMxOzExMEQgMTE2RCAxMUFDOworQ0IzMjtDQjMyOzExMEQgMTE2RCAxMUFEO0NCMzI7MTEwRCAxMTZEIDExQUQ7CitDQjMzO0NCMzM7MTEwRCAxMTZEIDExQUU7Q0IzMzsxMTBEIDExNkQgMTFBRTsKK0NCMzQ7Q0IzNDsxMTBEIDExNkQgMTFBRjtDQjM0OzExMEQgMTE2RCAxMUFGOworQ0IzNTtDQjM1OzExMEQgMTE2RCAxMUIwO0NCMzU7MTEwRCAxMTZEIDExQjA7CitDQjM2O0NCMzY7MTEwRCAxMTZEIDExQjE7Q0IzNjsxMTBEIDExNkQgMTFCMTsKK0NCMzc7Q0IzNzsxMTBEIDExNkQgMTFCMjtDQjM3OzExMEQgMTE2RCAxMUIyOworQ0IzODtDQjM4OzExMEQgMTE2RCAxMUIzO0NCMzg7MTEwRCAxMTZEIDExQjM7CitDQjM5O0NCMzk7MTEwRCAxMTZEIDExQjQ7Q0IzOTsxMTBEIDExNkQgMTFCNDsKK0NCM0E7Q0IzQTsxMTBEIDExNkQgMTFCNTtDQjNBOzExMEQgMTE2RCAxMUI1OworQ0IzQjtDQjNCOzExMEQgMTE2RCAxMUI2O0NCM0I7MTEwRCAxMTZEIDExQjY7CitDQjNDO0NCM0M7MTEwRCAxMTZEIDExQjc7Q0IzQzsxMTBEIDExNkQgMTFCNzsKK0NCM0Q7Q0IzRDsxMTBEIDExNkQgMTFCODtDQjNEOzExMEQgMTE2RCAxMUI4OworQ0IzRTtDQjNFOzExMEQgMTE2RCAxMUI5O0NCM0U7MTEwRCAxMTZEIDExQjk7CitDQjNGO0NCM0Y7MTEwRCAxMTZEIDExQkE7Q0IzRjsxMTBEIDExNkQgMTFCQTsKK0NCNDA7Q0I0MDsxMTBEIDExNkQgMTFCQjtDQjQwOzExMEQgMTE2RCAxMUJCOworQ0I0MTtDQjQxOzExMEQgMTE2RCAxMUJDO0NCNDE7MTEwRCAxMTZEIDExQkM7CitDQjQyO0NCNDI7MTEwRCAxMTZEIDExQkQ7Q0I0MjsxMTBEIDExNkQgMTFCRDsKK0NCNDM7Q0I0MzsxMTBEIDExNkQgMTFCRTtDQjQzOzExMEQgMTE2RCAxMUJFOworQ0I0NDtDQjQ0OzExMEQgMTE2RCAxMUJGO0NCNDQ7MTEwRCAxMTZEIDExQkY7CitDQjQ1O0NCNDU7MTEwRCAxMTZEIDExQzA7Q0I0NTsxMTBEIDExNkQgMTFDMDsKK0NCNDY7Q0I0NjsxMTBEIDExNkQgMTFDMTtDQjQ2OzExMEQgMTE2RCAxMUMxOworQ0I0NztDQjQ3OzExMEQgMTE2RCAxMUMyO0NCNDc7MTEwRCAxMTZEIDExQzI7CitDQjQ4O0NCNDg7MTEwRCAxMTZFO0NCNDg7MTEwRCAxMTZFOworQ0I0OTtDQjQ5OzExMEQgMTE2RSAxMUE4O0NCNDk7MTEwRCAxMTZFIDExQTg7CitDQjRBO0NCNEE7MTEwRCAxMTZFIDExQTk7Q0I0QTsxMTBEIDExNkUgMTFBOTsKK0NCNEI7Q0I0QjsxMTBEIDExNkUgMTFBQTtDQjRCOzExMEQgMTE2RSAxMUFBOworQ0I0QztDQjRDOzExMEQgMTE2RSAxMUFCO0NCNEM7MTEwRCAxMTZFIDExQUI7CitDQjREO0NCNEQ7MTEwRCAxMTZFIDExQUM7Q0I0RDsxMTBEIDExNkUgMTFBQzsKK0NCNEU7Q0I0RTsxMTBEIDExNkUgMTFBRDtDQjRFOzExMEQgMTE2RSAxMUFEOworQ0I0RjtDQjRGOzExMEQgMTE2RSAxMUFFO0NCNEY7MTEwRCAxMTZFIDExQUU7CitDQjUwO0NCNTA7MTEwRCAxMTZFIDExQUY7Q0I1MDsxMTBEIDExNkUgMTFBRjsKK0NCNTE7Q0I1MTsxMTBEIDExNkUgMTFCMDtDQjUxOzExMEQgMTE2RSAxMUIwOworQ0I1MjtDQjUyOzExMEQgMTE2RSAxMUIxO0NCNTI7MTEwRCAxMTZFIDExQjE7CitDQjUzO0NCNTM7MTEwRCAxMTZFIDExQjI7Q0I1MzsxMTBEIDExNkUgMTFCMjsKK0NCNTQ7Q0I1NDsxMTBEIDExNkUgMTFCMztDQjU0OzExMEQgMTE2RSAxMUIzOworQ0I1NTtDQjU1OzExMEQgMTE2RSAxMUI0O0NCNTU7MTEwRCAxMTZFIDExQjQ7CitDQjU2O0NCNTY7MTEwRCAxMTZFIDExQjU7Q0I1NjsxMTBEIDExNkUgMTFCNTsKK0NCNTc7Q0I1NzsxMTBEIDExNkUgMTFCNjtDQjU3OzExMEQgMTE2RSAxMUI2OworQ0I1ODtDQjU4OzExMEQgMTE2RSAxMUI3O0NCNTg7MTEwRCAxMTZFIDExQjc7CitDQjU5O0NCNTk7MTEwRCAxMTZFIDExQjg7Q0I1OTsxMTBEIDExNkUgMTFCODsKK0NCNUE7Q0I1QTsxMTBEIDExNkUgMTFCOTtDQjVBOzExMEQgMTE2RSAxMUI5OworQ0I1QjtDQjVCOzExMEQgMTE2RSAxMUJBO0NCNUI7MTEwRCAxMTZFIDExQkE7CitDQjVDO0NCNUM7MTEwRCAxMTZFIDExQkI7Q0I1QzsxMTBEIDExNkUgMTFCQjsKK0NCNUQ7Q0I1RDsxMTBEIDExNkUgMTFCQztDQjVEOzExMEQgMTE2RSAxMUJDOworQ0I1RTtDQjVFOzExMEQgMTE2RSAxMUJEO0NCNUU7MTEwRCAxMTZFIDExQkQ7CitDQjVGO0NCNUY7MTEwRCAxMTZFIDExQkU7Q0I1RjsxMTBEIDExNkUgMTFCRTsKK0NCNjA7Q0I2MDsxMTBEIDExNkUgMTFCRjtDQjYwOzExMEQgMTE2RSAxMUJGOworQ0I2MTtDQjYxOzExMEQgMTE2RSAxMUMwO0NCNjE7MTEwRCAxMTZFIDExQzA7CitDQjYyO0NCNjI7MTEwRCAxMTZFIDExQzE7Q0I2MjsxMTBEIDExNkUgMTFDMTsKK0NCNjM7Q0I2MzsxMTBEIDExNkUgMTFDMjtDQjYzOzExMEQgMTE2RSAxMUMyOworQ0I2NDtDQjY0OzExMEQgMTE2RjtDQjY0OzExMEQgMTE2RjsKK0NCNjU7Q0I2NTsxMTBEIDExNkYgMTFBODtDQjY1OzExMEQgMTE2RiAxMUE4OworQ0I2NjtDQjY2OzExMEQgMTE2RiAxMUE5O0NCNjY7MTEwRCAxMTZGIDExQTk7CitDQjY3O0NCNjc7MTEwRCAxMTZGIDExQUE7Q0I2NzsxMTBEIDExNkYgMTFBQTsKK0NCNjg7Q0I2ODsxMTBEIDExNkYgMTFBQjtDQjY4OzExMEQgMTE2RiAxMUFCOworQ0I2OTtDQjY5OzExMEQgMTE2RiAxMUFDO0NCNjk7MTEwRCAxMTZGIDExQUM7CitDQjZBO0NCNkE7MTEwRCAxMTZGIDExQUQ7Q0I2QTsxMTBEIDExNkYgMTFBRDsKK0NCNkI7Q0I2QjsxMTBEIDExNkYgMTFBRTtDQjZCOzExMEQgMTE2RiAxMUFFOworQ0I2QztDQjZDOzExMEQgMTE2RiAxMUFGO0NCNkM7MTEwRCAxMTZGIDExQUY7CitDQjZEO0NCNkQ7MTEwRCAxMTZGIDExQjA7Q0I2RDsxMTBEIDExNkYgMTFCMDsKK0NCNkU7Q0I2RTsxMTBEIDExNkYgMTFCMTtDQjZFOzExMEQgMTE2RiAxMUIxOworQ0I2RjtDQjZGOzExMEQgMTE2RiAxMUIyO0NCNkY7MTEwRCAxMTZGIDExQjI7CitDQjcwO0NCNzA7MTEwRCAxMTZGIDExQjM7Q0I3MDsxMTBEIDExNkYgMTFCMzsKK0NCNzE7Q0I3MTsxMTBEIDExNkYgMTFCNDtDQjcxOzExMEQgMTE2RiAxMUI0OworQ0I3MjtDQjcyOzExMEQgMTE2RiAxMUI1O0NCNzI7MTEwRCAxMTZGIDExQjU7CitDQjczO0NCNzM7MTEwRCAxMTZGIDExQjY7Q0I3MzsxMTBEIDExNkYgMTFCNjsKK0NCNzQ7Q0I3NDsxMTBEIDExNkYgMTFCNztDQjc0OzExMEQgMTE2RiAxMUI3OworQ0I3NTtDQjc1OzExMEQgMTE2RiAxMUI4O0NCNzU7MTEwRCAxMTZGIDExQjg7CitDQjc2O0NCNzY7MTEwRCAxMTZGIDExQjk7Q0I3NjsxMTBEIDExNkYgMTFCOTsKK0NCNzc7Q0I3NzsxMTBEIDExNkYgMTFCQTtDQjc3OzExMEQgMTE2RiAxMUJBOworQ0I3ODtDQjc4OzExMEQgMTE2RiAxMUJCO0NCNzg7MTEwRCAxMTZGIDExQkI7CitDQjc5O0NCNzk7MTEwRCAxMTZGIDExQkM7Q0I3OTsxMTBEIDExNkYgMTFCQzsKK0NCN0E7Q0I3QTsxMTBEIDExNkYgMTFCRDtDQjdBOzExMEQgMTE2RiAxMUJEOworQ0I3QjtDQjdCOzExMEQgMTE2RiAxMUJFO0NCN0I7MTEwRCAxMTZGIDExQkU7CitDQjdDO0NCN0M7MTEwRCAxMTZGIDExQkY7Q0I3QzsxMTBEIDExNkYgMTFCRjsKK0NCN0Q7Q0I3RDsxMTBEIDExNkYgMTFDMDtDQjdEOzExMEQgMTE2RiAxMUMwOworQ0I3RTtDQjdFOzExMEQgMTE2RiAxMUMxO0NCN0U7MTEwRCAxMTZGIDExQzE7CitDQjdGO0NCN0Y7MTEwRCAxMTZGIDExQzI7Q0I3RjsxMTBEIDExNkYgMTFDMjsKK0NCODA7Q0I4MDsxMTBEIDExNzA7Q0I4MDsxMTBEIDExNzA7CitDQjgxO0NCODE7MTEwRCAxMTcwIDExQTg7Q0I4MTsxMTBEIDExNzAgMTFBODsKK0NCODI7Q0I4MjsxMTBEIDExNzAgMTFBOTtDQjgyOzExMEQgMTE3MCAxMUE5OworQ0I4MztDQjgzOzExMEQgMTE3MCAxMUFBO0NCODM7MTEwRCAxMTcwIDExQUE7CitDQjg0O0NCODQ7MTEwRCAxMTcwIDExQUI7Q0I4NDsxMTBEIDExNzAgMTFBQjsKK0NCODU7Q0I4NTsxMTBEIDExNzAgMTFBQztDQjg1OzExMEQgMTE3MCAxMUFDOworQ0I4NjtDQjg2OzExMEQgMTE3MCAxMUFEO0NCODY7MTEwRCAxMTcwIDExQUQ7CitDQjg3O0NCODc7MTEwRCAxMTcwIDExQUU7Q0I4NzsxMTBEIDExNzAgMTFBRTsKK0NCODg7Q0I4ODsxMTBEIDExNzAgMTFBRjtDQjg4OzExMEQgMTE3MCAxMUFGOworQ0I4OTtDQjg5OzExMEQgMTE3MCAxMUIwO0NCODk7MTEwRCAxMTcwIDExQjA7CitDQjhBO0NCOEE7MTEwRCAxMTcwIDExQjE7Q0I4QTsxMTBEIDExNzAgMTFCMTsKK0NCOEI7Q0I4QjsxMTBEIDExNzAgMTFCMjtDQjhCOzExMEQgMTE3MCAxMUIyOworQ0I4QztDQjhDOzExMEQgMTE3MCAxMUIzO0NCOEM7MTEwRCAxMTcwIDExQjM7CitDQjhEO0NCOEQ7MTEwRCAxMTcwIDExQjQ7Q0I4RDsxMTBEIDExNzAgMTFCNDsKK0NCOEU7Q0I4RTsxMTBEIDExNzAgMTFCNTtDQjhFOzExMEQgMTE3MCAxMUI1OworQ0I4RjtDQjhGOzExMEQgMTE3MCAxMUI2O0NCOEY7MTEwRCAxMTcwIDExQjY7CitDQjkwO0NCOTA7MTEwRCAxMTcwIDExQjc7Q0I5MDsxMTBEIDExNzAgMTFCNzsKK0NCOTE7Q0I5MTsxMTBEIDExNzAgMTFCODtDQjkxOzExMEQgMTE3MCAxMUI4OworQ0I5MjtDQjkyOzExMEQgMTE3MCAxMUI5O0NCOTI7MTEwRCAxMTcwIDExQjk7CitDQjkzO0NCOTM7MTEwRCAxMTcwIDExQkE7Q0I5MzsxMTBEIDExNzAgMTFCQTsKK0NCOTQ7Q0I5NDsxMTBEIDExNzAgMTFCQjtDQjk0OzExMEQgMTE3MCAxMUJCOworQ0I5NTtDQjk1OzExMEQgMTE3MCAxMUJDO0NCOTU7MTEwRCAxMTcwIDExQkM7CitDQjk2O0NCOTY7MTEwRCAxMTcwIDExQkQ7Q0I5NjsxMTBEIDExNzAgMTFCRDsKK0NCOTc7Q0I5NzsxMTBEIDExNzAgMTFCRTtDQjk3OzExMEQgMTE3MCAxMUJFOworQ0I5ODtDQjk4OzExMEQgMTE3MCAxMUJGO0NCOTg7MTEwRCAxMTcwIDExQkY7CitDQjk5O0NCOTk7MTEwRCAxMTcwIDExQzA7Q0I5OTsxMTBEIDExNzAgMTFDMDsKK0NCOUE7Q0I5QTsxMTBEIDExNzAgMTFDMTtDQjlBOzExMEQgMTE3MCAxMUMxOworQ0I5QjtDQjlCOzExMEQgMTE3MCAxMUMyO0NCOUI7MTEwRCAxMTcwIDExQzI7CitDQjlDO0NCOUM7MTEwRCAxMTcxO0NCOUM7MTEwRCAxMTcxOworQ0I5RDtDQjlEOzExMEQgMTE3MSAxMUE4O0NCOUQ7MTEwRCAxMTcxIDExQTg7CitDQjlFO0NCOUU7MTEwRCAxMTcxIDExQTk7Q0I5RTsxMTBEIDExNzEgMTFBOTsKK0NCOUY7Q0I5RjsxMTBEIDExNzEgMTFBQTtDQjlGOzExMEQgMTE3MSAxMUFBOworQ0JBMDtDQkEwOzExMEQgMTE3MSAxMUFCO0NCQTA7MTEwRCAxMTcxIDExQUI7CitDQkExO0NCQTE7MTEwRCAxMTcxIDExQUM7Q0JBMTsxMTBEIDExNzEgMTFBQzsKK0NCQTI7Q0JBMjsxMTBEIDExNzEgMTFBRDtDQkEyOzExMEQgMTE3MSAxMUFEOworQ0JBMztDQkEzOzExMEQgMTE3MSAxMUFFO0NCQTM7MTEwRCAxMTcxIDExQUU7CitDQkE0O0NCQTQ7MTEwRCAxMTcxIDExQUY7Q0JBNDsxMTBEIDExNzEgMTFBRjsKK0NCQTU7Q0JBNTsxMTBEIDExNzEgMTFCMDtDQkE1OzExMEQgMTE3MSAxMUIwOworQ0JBNjtDQkE2OzExMEQgMTE3MSAxMUIxO0NCQTY7MTEwRCAxMTcxIDExQjE7CitDQkE3O0NCQTc7MTEwRCAxMTcxIDExQjI7Q0JBNzsxMTBEIDExNzEgMTFCMjsKK0NCQTg7Q0JBODsxMTBEIDExNzEgMTFCMztDQkE4OzExMEQgMTE3MSAxMUIzOworQ0JBOTtDQkE5OzExMEQgMTE3MSAxMUI0O0NCQTk7MTEwRCAxMTcxIDExQjQ7CitDQkFBO0NCQUE7MTEwRCAxMTcxIDExQjU7Q0JBQTsxMTBEIDExNzEgMTFCNTsKK0NCQUI7Q0JBQjsxMTBEIDExNzEgMTFCNjtDQkFCOzExMEQgMTE3MSAxMUI2OworQ0JBQztDQkFDOzExMEQgMTE3MSAxMUI3O0NCQUM7MTEwRCAxMTcxIDExQjc7CitDQkFEO0NCQUQ7MTEwRCAxMTcxIDExQjg7Q0JBRDsxMTBEIDExNzEgMTFCODsKK0NCQUU7Q0JBRTsxMTBEIDExNzEgMTFCOTtDQkFFOzExMEQgMTE3MSAxMUI5OworQ0JBRjtDQkFGOzExMEQgMTE3MSAxMUJBO0NCQUY7MTEwRCAxMTcxIDExQkE7CitDQkIwO0NCQjA7MTEwRCAxMTcxIDExQkI7Q0JCMDsxMTBEIDExNzEgMTFCQjsKK0NCQjE7Q0JCMTsxMTBEIDExNzEgMTFCQztDQkIxOzExMEQgMTE3MSAxMUJDOworQ0JCMjtDQkIyOzExMEQgMTE3MSAxMUJEO0NCQjI7MTEwRCAxMTcxIDExQkQ7CitDQkIzO0NCQjM7MTEwRCAxMTcxIDExQkU7Q0JCMzsxMTBEIDExNzEgMTFCRTsKK0NCQjQ7Q0JCNDsxMTBEIDExNzEgMTFCRjtDQkI0OzExMEQgMTE3MSAxMUJGOworQ0JCNTtDQkI1OzExMEQgMTE3MSAxMUMwO0NCQjU7MTEwRCAxMTcxIDExQzA7CitDQkI2O0NCQjY7MTEwRCAxMTcxIDExQzE7Q0JCNjsxMTBEIDExNzEgMTFDMTsKK0NCQjc7Q0JCNzsxMTBEIDExNzEgMTFDMjtDQkI3OzExMEQgMTE3MSAxMUMyOworQ0JCODtDQkI4OzExMEQgMTE3MjtDQkI4OzExMEQgMTE3MjsKK0NCQjk7Q0JCOTsxMTBEIDExNzIgMTFBODtDQkI5OzExMEQgMTE3MiAxMUE4OworQ0JCQTtDQkJBOzExMEQgMTE3MiAxMUE5O0NCQkE7MTEwRCAxMTcyIDExQTk7CitDQkJCO0NCQkI7MTEwRCAxMTcyIDExQUE7Q0JCQjsxMTBEIDExNzIgMTFBQTsKK0NCQkM7Q0JCQzsxMTBEIDExNzIgMTFBQjtDQkJDOzExMEQgMTE3MiAxMUFCOworQ0JCRDtDQkJEOzExMEQgMTE3MiAxMUFDO0NCQkQ7MTEwRCAxMTcyIDExQUM7CitDQkJFO0NCQkU7MTEwRCAxMTcyIDExQUQ7Q0JCRTsxMTBEIDExNzIgMTFBRDsKK0NCQkY7Q0JCRjsxMTBEIDExNzIgMTFBRTtDQkJGOzExMEQgMTE3MiAxMUFFOworQ0JDMDtDQkMwOzExMEQgMTE3MiAxMUFGO0NCQzA7MTEwRCAxMTcyIDExQUY7CitDQkMxO0NCQzE7MTEwRCAxMTcyIDExQjA7Q0JDMTsxMTBEIDExNzIgMTFCMDsKK0NCQzI7Q0JDMjsxMTBEIDExNzIgMTFCMTtDQkMyOzExMEQgMTE3MiAxMUIxOworQ0JDMztDQkMzOzExMEQgMTE3MiAxMUIyO0NCQzM7MTEwRCAxMTcyIDExQjI7CitDQkM0O0NCQzQ7MTEwRCAxMTcyIDExQjM7Q0JDNDsxMTBEIDExNzIgMTFCMzsKK0NCQzU7Q0JDNTsxMTBEIDExNzIgMTFCNDtDQkM1OzExMEQgMTE3MiAxMUI0OworQ0JDNjtDQkM2OzExMEQgMTE3MiAxMUI1O0NCQzY7MTEwRCAxMTcyIDExQjU7CitDQkM3O0NCQzc7MTEwRCAxMTcyIDExQjY7Q0JDNzsxMTBEIDExNzIgMTFCNjsKK0NCQzg7Q0JDODsxMTBEIDExNzIgMTFCNztDQkM4OzExMEQgMTE3MiAxMUI3OworQ0JDOTtDQkM5OzExMEQgMTE3MiAxMUI4O0NCQzk7MTEwRCAxMTcyIDExQjg7CitDQkNBO0NCQ0E7MTEwRCAxMTcyIDExQjk7Q0JDQTsxMTBEIDExNzIgMTFCOTsKK0NCQ0I7Q0JDQjsxMTBEIDExNzIgMTFCQTtDQkNCOzExMEQgMTE3MiAxMUJBOworQ0JDQztDQkNDOzExMEQgMTE3MiAxMUJCO0NCQ0M7MTEwRCAxMTcyIDExQkI7CitDQkNEO0NCQ0Q7MTEwRCAxMTcyIDExQkM7Q0JDRDsxMTBEIDExNzIgMTFCQzsKK0NCQ0U7Q0JDRTsxMTBEIDExNzIgMTFCRDtDQkNFOzExMEQgMTE3MiAxMUJEOworQ0JDRjtDQkNGOzExMEQgMTE3MiAxMUJFO0NCQ0Y7MTEwRCAxMTcyIDExQkU7CitDQkQwO0NCRDA7MTEwRCAxMTcyIDExQkY7Q0JEMDsxMTBEIDExNzIgMTFCRjsKK0NCRDE7Q0JEMTsxMTBEIDExNzIgMTFDMDtDQkQxOzExMEQgMTE3MiAxMUMwOworQ0JEMjtDQkQyOzExMEQgMTE3MiAxMUMxO0NCRDI7MTEwRCAxMTcyIDExQzE7CitDQkQzO0NCRDM7MTEwRCAxMTcyIDExQzI7Q0JEMzsxMTBEIDExNzIgMTFDMjsKK0NCRDQ7Q0JENDsxMTBEIDExNzM7Q0JENDsxMTBEIDExNzM7CitDQkQ1O0NCRDU7MTEwRCAxMTczIDExQTg7Q0JENTsxMTBEIDExNzMgMTFBODsKK0NCRDY7Q0JENjsxMTBEIDExNzMgMTFBOTtDQkQ2OzExMEQgMTE3MyAxMUE5OworQ0JENztDQkQ3OzExMEQgMTE3MyAxMUFBO0NCRDc7MTEwRCAxMTczIDExQUE7CitDQkQ4O0NCRDg7MTEwRCAxMTczIDExQUI7Q0JEODsxMTBEIDExNzMgMTFBQjsKK0NCRDk7Q0JEOTsxMTBEIDExNzMgMTFBQztDQkQ5OzExMEQgMTE3MyAxMUFDOworQ0JEQTtDQkRBOzExMEQgMTE3MyAxMUFEO0NCREE7MTEwRCAxMTczIDExQUQ7CitDQkRCO0NCREI7MTEwRCAxMTczIDExQUU7Q0JEQjsxMTBEIDExNzMgMTFBRTsKK0NCREM7Q0JEQzsxMTBEIDExNzMgMTFBRjtDQkRDOzExMEQgMTE3MyAxMUFGOworQ0JERDtDQkREOzExMEQgMTE3MyAxMUIwO0NCREQ7MTEwRCAxMTczIDExQjA7CitDQkRFO0NCREU7MTEwRCAxMTczIDExQjE7Q0JERTsxMTBEIDExNzMgMTFCMTsKK0NCREY7Q0JERjsxMTBEIDExNzMgMTFCMjtDQkRGOzExMEQgMTE3MyAxMUIyOworQ0JFMDtDQkUwOzExMEQgMTE3MyAxMUIzO0NCRTA7MTEwRCAxMTczIDExQjM7CitDQkUxO0NCRTE7MTEwRCAxMTczIDExQjQ7Q0JFMTsxMTBEIDExNzMgMTFCNDsKK0NCRTI7Q0JFMjsxMTBEIDExNzMgMTFCNTtDQkUyOzExMEQgMTE3MyAxMUI1OworQ0JFMztDQkUzOzExMEQgMTE3MyAxMUI2O0NCRTM7MTEwRCAxMTczIDExQjY7CitDQkU0O0NCRTQ7MTEwRCAxMTczIDExQjc7Q0JFNDsxMTBEIDExNzMgMTFCNzsKK0NCRTU7Q0JFNTsxMTBEIDExNzMgMTFCODtDQkU1OzExMEQgMTE3MyAxMUI4OworQ0JFNjtDQkU2OzExMEQgMTE3MyAxMUI5O0NCRTY7MTEwRCAxMTczIDExQjk7CitDQkU3O0NCRTc7MTEwRCAxMTczIDExQkE7Q0JFNzsxMTBEIDExNzMgMTFCQTsKK0NCRTg7Q0JFODsxMTBEIDExNzMgMTFCQjtDQkU4OzExMEQgMTE3MyAxMUJCOworQ0JFOTtDQkU5OzExMEQgMTE3MyAxMUJDO0NCRTk7MTEwRCAxMTczIDExQkM7CitDQkVBO0NCRUE7MTEwRCAxMTczIDExQkQ7Q0JFQTsxMTBEIDExNzMgMTFCRDsKK0NCRUI7Q0JFQjsxMTBEIDExNzMgMTFCRTtDQkVCOzExMEQgMTE3MyAxMUJFOworQ0JFQztDQkVDOzExMEQgMTE3MyAxMUJGO0NCRUM7MTEwRCAxMTczIDExQkY7CitDQkVEO0NCRUQ7MTEwRCAxMTczIDExQzA7Q0JFRDsxMTBEIDExNzMgMTFDMDsKK0NCRUU7Q0JFRTsxMTBEIDExNzMgMTFDMTtDQkVFOzExMEQgMTE3MyAxMUMxOworQ0JFRjtDQkVGOzExMEQgMTE3MyAxMUMyO0NCRUY7MTEwRCAxMTczIDExQzI7CitDQkYwO0NCRjA7MTEwRCAxMTc0O0NCRjA7MTEwRCAxMTc0OworQ0JGMTtDQkYxOzExMEQgMTE3NCAxMUE4O0NCRjE7MTEwRCAxMTc0IDExQTg7CitDQkYyO0NCRjI7MTEwRCAxMTc0IDExQTk7Q0JGMjsxMTBEIDExNzQgMTFBOTsKK0NCRjM7Q0JGMzsxMTBEIDExNzQgMTFBQTtDQkYzOzExMEQgMTE3NCAxMUFBOworQ0JGNDtDQkY0OzExMEQgMTE3NCAxMUFCO0NCRjQ7MTEwRCAxMTc0IDExQUI7CitDQkY1O0NCRjU7MTEwRCAxMTc0IDExQUM7Q0JGNTsxMTBEIDExNzQgMTFBQzsKK0NCRjY7Q0JGNjsxMTBEIDExNzQgMTFBRDtDQkY2OzExMEQgMTE3NCAxMUFEOworQ0JGNztDQkY3OzExMEQgMTE3NCAxMUFFO0NCRjc7MTEwRCAxMTc0IDExQUU7CitDQkY4O0NCRjg7MTEwRCAxMTc0IDExQUY7Q0JGODsxMTBEIDExNzQgMTFBRjsKK0NCRjk7Q0JGOTsxMTBEIDExNzQgMTFCMDtDQkY5OzExMEQgMTE3NCAxMUIwOworQ0JGQTtDQkZBOzExMEQgMTE3NCAxMUIxO0NCRkE7MTEwRCAxMTc0IDExQjE7CitDQkZCO0NCRkI7MTEwRCAxMTc0IDExQjI7Q0JGQjsxMTBEIDExNzQgMTFCMjsKK0NCRkM7Q0JGQzsxMTBEIDExNzQgMTFCMztDQkZDOzExMEQgMTE3NCAxMUIzOworQ0JGRDtDQkZEOzExMEQgMTE3NCAxMUI0O0NCRkQ7MTEwRCAxMTc0IDExQjQ7CitDQkZFO0NCRkU7MTEwRCAxMTc0IDExQjU7Q0JGRTsxMTBEIDExNzQgMTFCNTsKK0NCRkY7Q0JGRjsxMTBEIDExNzQgMTFCNjtDQkZGOzExMEQgMTE3NCAxMUI2OworQ0MwMDtDQzAwOzExMEQgMTE3NCAxMUI3O0NDMDA7MTEwRCAxMTc0IDExQjc7CitDQzAxO0NDMDE7MTEwRCAxMTc0IDExQjg7Q0MwMTsxMTBEIDExNzQgMTFCODsKK0NDMDI7Q0MwMjsxMTBEIDExNzQgMTFCOTtDQzAyOzExMEQgMTE3NCAxMUI5OworQ0MwMztDQzAzOzExMEQgMTE3NCAxMUJBO0NDMDM7MTEwRCAxMTc0IDExQkE7CitDQzA0O0NDMDQ7MTEwRCAxMTc0IDExQkI7Q0MwNDsxMTBEIDExNzQgMTFCQjsKK0NDMDU7Q0MwNTsxMTBEIDExNzQgMTFCQztDQzA1OzExMEQgMTE3NCAxMUJDOworQ0MwNjtDQzA2OzExMEQgMTE3NCAxMUJEO0NDMDY7MTEwRCAxMTc0IDExQkQ7CitDQzA3O0NDMDc7MTEwRCAxMTc0IDExQkU7Q0MwNzsxMTBEIDExNzQgMTFCRTsKK0NDMDg7Q0MwODsxMTBEIDExNzQgMTFCRjtDQzA4OzExMEQgMTE3NCAxMUJGOworQ0MwOTtDQzA5OzExMEQgMTE3NCAxMUMwO0NDMDk7MTEwRCAxMTc0IDExQzA7CitDQzBBO0NDMEE7MTEwRCAxMTc0IDExQzE7Q0MwQTsxMTBEIDExNzQgMTFDMTsKK0NDMEI7Q0MwQjsxMTBEIDExNzQgMTFDMjtDQzBCOzExMEQgMTE3NCAxMUMyOworQ0MwQztDQzBDOzExMEQgMTE3NTtDQzBDOzExMEQgMTE3NTsKK0NDMEQ7Q0MwRDsxMTBEIDExNzUgMTFBODtDQzBEOzExMEQgMTE3NSAxMUE4OworQ0MwRTtDQzBFOzExMEQgMTE3NSAxMUE5O0NDMEU7MTEwRCAxMTc1IDExQTk7CitDQzBGO0NDMEY7MTEwRCAxMTc1IDExQUE7Q0MwRjsxMTBEIDExNzUgMTFBQTsKK0NDMTA7Q0MxMDsxMTBEIDExNzUgMTFBQjtDQzEwOzExMEQgMTE3NSAxMUFCOworQ0MxMTtDQzExOzExMEQgMTE3NSAxMUFDO0NDMTE7MTEwRCAxMTc1IDExQUM7CitDQzEyO0NDMTI7MTEwRCAxMTc1IDExQUQ7Q0MxMjsxMTBEIDExNzUgMTFBRDsKK0NDMTM7Q0MxMzsxMTBEIDExNzUgMTFBRTtDQzEzOzExMEQgMTE3NSAxMUFFOworQ0MxNDtDQzE0OzExMEQgMTE3NSAxMUFGO0NDMTQ7MTEwRCAxMTc1IDExQUY7CitDQzE1O0NDMTU7MTEwRCAxMTc1IDExQjA7Q0MxNTsxMTBEIDExNzUgMTFCMDsKK0NDMTY7Q0MxNjsxMTBEIDExNzUgMTFCMTtDQzE2OzExMEQgMTE3NSAxMUIxOworQ0MxNztDQzE3OzExMEQgMTE3NSAxMUIyO0NDMTc7MTEwRCAxMTc1IDExQjI7CitDQzE4O0NDMTg7MTEwRCAxMTc1IDExQjM7Q0MxODsxMTBEIDExNzUgMTFCMzsKK0NDMTk7Q0MxOTsxMTBEIDExNzUgMTFCNDtDQzE5OzExMEQgMTE3NSAxMUI0OworQ0MxQTtDQzFBOzExMEQgMTE3NSAxMUI1O0NDMUE7MTEwRCAxMTc1IDExQjU7CitDQzFCO0NDMUI7MTEwRCAxMTc1IDExQjY7Q0MxQjsxMTBEIDExNzUgMTFCNjsKK0NDMUM7Q0MxQzsxMTBEIDExNzUgMTFCNztDQzFDOzExMEQgMTE3NSAxMUI3OworQ0MxRDtDQzFEOzExMEQgMTE3NSAxMUI4O0NDMUQ7MTEwRCAxMTc1IDExQjg7CitDQzFFO0NDMUU7MTEwRCAxMTc1IDExQjk7Q0MxRTsxMTBEIDExNzUgMTFCOTsKK0NDMUY7Q0MxRjsxMTBEIDExNzUgMTFCQTtDQzFGOzExMEQgMTE3NSAxMUJBOworQ0MyMDtDQzIwOzExMEQgMTE3NSAxMUJCO0NDMjA7MTEwRCAxMTc1IDExQkI7CitDQzIxO0NDMjE7MTEwRCAxMTc1IDExQkM7Q0MyMTsxMTBEIDExNzUgMTFCQzsKK0NDMjI7Q0MyMjsxMTBEIDExNzUgMTFCRDtDQzIyOzExMEQgMTE3NSAxMUJEOworQ0MyMztDQzIzOzExMEQgMTE3NSAxMUJFO0NDMjM7MTEwRCAxMTc1IDExQkU7CitDQzI0O0NDMjQ7MTEwRCAxMTc1IDExQkY7Q0MyNDsxMTBEIDExNzUgMTFCRjsKK0NDMjU7Q0MyNTsxMTBEIDExNzUgMTFDMDtDQzI1OzExMEQgMTE3NSAxMUMwOworQ0MyNjtDQzI2OzExMEQgMTE3NSAxMUMxO0NDMjY7MTEwRCAxMTc1IDExQzE7CitDQzI3O0NDMjc7MTEwRCAxMTc1IDExQzI7Q0MyNzsxMTBEIDExNzUgMTFDMjsKK0NDMjg7Q0MyODsxMTBFIDExNjE7Q0MyODsxMTBFIDExNjE7CitDQzI5O0NDMjk7MTEwRSAxMTYxIDExQTg7Q0MyOTsxMTBFIDExNjEgMTFBODsKK0NDMkE7Q0MyQTsxMTBFIDExNjEgMTFBOTtDQzJBOzExMEUgMTE2MSAxMUE5OworQ0MyQjtDQzJCOzExMEUgMTE2MSAxMUFBO0NDMkI7MTEwRSAxMTYxIDExQUE7CitDQzJDO0NDMkM7MTEwRSAxMTYxIDExQUI7Q0MyQzsxMTBFIDExNjEgMTFBQjsKK0NDMkQ7Q0MyRDsxMTBFIDExNjEgMTFBQztDQzJEOzExMEUgMTE2MSAxMUFDOworQ0MyRTtDQzJFOzExMEUgMTE2MSAxMUFEO0NDMkU7MTEwRSAxMTYxIDExQUQ7CitDQzJGO0NDMkY7MTEwRSAxMTYxIDExQUU7Q0MyRjsxMTBFIDExNjEgMTFBRTsKK0NDMzA7Q0MzMDsxMTBFIDExNjEgMTFBRjtDQzMwOzExMEUgMTE2MSAxMUFGOworQ0MzMTtDQzMxOzExMEUgMTE2MSAxMUIwO0NDMzE7MTEwRSAxMTYxIDExQjA7CitDQzMyO0NDMzI7MTEwRSAxMTYxIDExQjE7Q0MzMjsxMTBFIDExNjEgMTFCMTsKK0NDMzM7Q0MzMzsxMTBFIDExNjEgMTFCMjtDQzMzOzExMEUgMTE2MSAxMUIyOworQ0MzNDtDQzM0OzExMEUgMTE2MSAxMUIzO0NDMzQ7MTEwRSAxMTYxIDExQjM7CitDQzM1O0NDMzU7MTEwRSAxMTYxIDExQjQ7Q0MzNTsxMTBFIDExNjEgMTFCNDsKK0NDMzY7Q0MzNjsxMTBFIDExNjEgMTFCNTtDQzM2OzExMEUgMTE2MSAxMUI1OworQ0MzNztDQzM3OzExMEUgMTE2MSAxMUI2O0NDMzc7MTEwRSAxMTYxIDExQjY7CitDQzM4O0NDMzg7MTEwRSAxMTYxIDExQjc7Q0MzODsxMTBFIDExNjEgMTFCNzsKK0NDMzk7Q0MzOTsxMTBFIDExNjEgMTFCODtDQzM5OzExMEUgMTE2MSAxMUI4OworQ0MzQTtDQzNBOzExMEUgMTE2MSAxMUI5O0NDM0E7MTEwRSAxMTYxIDExQjk7CitDQzNCO0NDM0I7MTEwRSAxMTYxIDExQkE7Q0MzQjsxMTBFIDExNjEgMTFCQTsKK0NDM0M7Q0MzQzsxMTBFIDExNjEgMTFCQjtDQzNDOzExMEUgMTE2MSAxMUJCOworQ0MzRDtDQzNEOzExMEUgMTE2MSAxMUJDO0NDM0Q7MTEwRSAxMTYxIDExQkM7CitDQzNFO0NDM0U7MTEwRSAxMTYxIDExQkQ7Q0MzRTsxMTBFIDExNjEgMTFCRDsKK0NDM0Y7Q0MzRjsxMTBFIDExNjEgMTFCRTtDQzNGOzExMEUgMTE2MSAxMUJFOworQ0M0MDtDQzQwOzExMEUgMTE2MSAxMUJGO0NDNDA7MTEwRSAxMTYxIDExQkY7CitDQzQxO0NDNDE7MTEwRSAxMTYxIDExQzA7Q0M0MTsxMTBFIDExNjEgMTFDMDsKK0NDNDI7Q0M0MjsxMTBFIDExNjEgMTFDMTtDQzQyOzExMEUgMTE2MSAxMUMxOworQ0M0MztDQzQzOzExMEUgMTE2MSAxMUMyO0NDNDM7MTEwRSAxMTYxIDExQzI7CitDQzQ0O0NDNDQ7MTEwRSAxMTYyO0NDNDQ7MTEwRSAxMTYyOworQ0M0NTtDQzQ1OzExMEUgMTE2MiAxMUE4O0NDNDU7MTEwRSAxMTYyIDExQTg7CitDQzQ2O0NDNDY7MTEwRSAxMTYyIDExQTk7Q0M0NjsxMTBFIDExNjIgMTFBOTsKK0NDNDc7Q0M0NzsxMTBFIDExNjIgMTFBQTtDQzQ3OzExMEUgMTE2MiAxMUFBOworQ0M0ODtDQzQ4OzExMEUgMTE2MiAxMUFCO0NDNDg7MTEwRSAxMTYyIDExQUI7CitDQzQ5O0NDNDk7MTEwRSAxMTYyIDExQUM7Q0M0OTsxMTBFIDExNjIgMTFBQzsKK0NDNEE7Q0M0QTsxMTBFIDExNjIgMTFBRDtDQzRBOzExMEUgMTE2MiAxMUFEOworQ0M0QjtDQzRCOzExMEUgMTE2MiAxMUFFO0NDNEI7MTEwRSAxMTYyIDExQUU7CitDQzRDO0NDNEM7MTEwRSAxMTYyIDExQUY7Q0M0QzsxMTBFIDExNjIgMTFBRjsKK0NDNEQ7Q0M0RDsxMTBFIDExNjIgMTFCMDtDQzREOzExMEUgMTE2MiAxMUIwOworQ0M0RTtDQzRFOzExMEUgMTE2MiAxMUIxO0NDNEU7MTEwRSAxMTYyIDExQjE7CitDQzRGO0NDNEY7MTEwRSAxMTYyIDExQjI7Q0M0RjsxMTBFIDExNjIgMTFCMjsKK0NDNTA7Q0M1MDsxMTBFIDExNjIgMTFCMztDQzUwOzExMEUgMTE2MiAxMUIzOworQ0M1MTtDQzUxOzExMEUgMTE2MiAxMUI0O0NDNTE7MTEwRSAxMTYyIDExQjQ7CitDQzUyO0NDNTI7MTEwRSAxMTYyIDExQjU7Q0M1MjsxMTBFIDExNjIgMTFCNTsKK0NDNTM7Q0M1MzsxMTBFIDExNjIgMTFCNjtDQzUzOzExMEUgMTE2MiAxMUI2OworQ0M1NDtDQzU0OzExMEUgMTE2MiAxMUI3O0NDNTQ7MTEwRSAxMTYyIDExQjc7CitDQzU1O0NDNTU7MTEwRSAxMTYyIDExQjg7Q0M1NTsxMTBFIDExNjIgMTFCODsKK0NDNTY7Q0M1NjsxMTBFIDExNjIgMTFCOTtDQzU2OzExMEUgMTE2MiAxMUI5OworQ0M1NztDQzU3OzExMEUgMTE2MiAxMUJBO0NDNTc7MTEwRSAxMTYyIDExQkE7CitDQzU4O0NDNTg7MTEwRSAxMTYyIDExQkI7Q0M1ODsxMTBFIDExNjIgMTFCQjsKK0NDNTk7Q0M1OTsxMTBFIDExNjIgMTFCQztDQzU5OzExMEUgMTE2MiAxMUJDOworQ0M1QTtDQzVBOzExMEUgMTE2MiAxMUJEO0NDNUE7MTEwRSAxMTYyIDExQkQ7CitDQzVCO0NDNUI7MTEwRSAxMTYyIDExQkU7Q0M1QjsxMTBFIDExNjIgMTFCRTsKK0NDNUM7Q0M1QzsxMTBFIDExNjIgMTFCRjtDQzVDOzExMEUgMTE2MiAxMUJGOworQ0M1RDtDQzVEOzExMEUgMTE2MiAxMUMwO0NDNUQ7MTEwRSAxMTYyIDExQzA7CitDQzVFO0NDNUU7MTEwRSAxMTYyIDExQzE7Q0M1RTsxMTBFIDExNjIgMTFDMTsKK0NDNUY7Q0M1RjsxMTBFIDExNjIgMTFDMjtDQzVGOzExMEUgMTE2MiAxMUMyOworQ0M2MDtDQzYwOzExMEUgMTE2MztDQzYwOzExMEUgMTE2MzsKK0NDNjE7Q0M2MTsxMTBFIDExNjMgMTFBODtDQzYxOzExMEUgMTE2MyAxMUE4OworQ0M2MjtDQzYyOzExMEUgMTE2MyAxMUE5O0NDNjI7MTEwRSAxMTYzIDExQTk7CitDQzYzO0NDNjM7MTEwRSAxMTYzIDExQUE7Q0M2MzsxMTBFIDExNjMgMTFBQTsKK0NDNjQ7Q0M2NDsxMTBFIDExNjMgMTFBQjtDQzY0OzExMEUgMTE2MyAxMUFCOworQ0M2NTtDQzY1OzExMEUgMTE2MyAxMUFDO0NDNjU7MTEwRSAxMTYzIDExQUM7CitDQzY2O0NDNjY7MTEwRSAxMTYzIDExQUQ7Q0M2NjsxMTBFIDExNjMgMTFBRDsKK0NDNjc7Q0M2NzsxMTBFIDExNjMgMTFBRTtDQzY3OzExMEUgMTE2MyAxMUFFOworQ0M2ODtDQzY4OzExMEUgMTE2MyAxMUFGO0NDNjg7MTEwRSAxMTYzIDExQUY7CitDQzY5O0NDNjk7MTEwRSAxMTYzIDExQjA7Q0M2OTsxMTBFIDExNjMgMTFCMDsKK0NDNkE7Q0M2QTsxMTBFIDExNjMgMTFCMTtDQzZBOzExMEUgMTE2MyAxMUIxOworQ0M2QjtDQzZCOzExMEUgMTE2MyAxMUIyO0NDNkI7MTEwRSAxMTYzIDExQjI7CitDQzZDO0NDNkM7MTEwRSAxMTYzIDExQjM7Q0M2QzsxMTBFIDExNjMgMTFCMzsKK0NDNkQ7Q0M2RDsxMTBFIDExNjMgMTFCNDtDQzZEOzExMEUgMTE2MyAxMUI0OworQ0M2RTtDQzZFOzExMEUgMTE2MyAxMUI1O0NDNkU7MTEwRSAxMTYzIDExQjU7CitDQzZGO0NDNkY7MTEwRSAxMTYzIDExQjY7Q0M2RjsxMTBFIDExNjMgMTFCNjsKK0NDNzA7Q0M3MDsxMTBFIDExNjMgMTFCNztDQzcwOzExMEUgMTE2MyAxMUI3OworQ0M3MTtDQzcxOzExMEUgMTE2MyAxMUI4O0NDNzE7MTEwRSAxMTYzIDExQjg7CitDQzcyO0NDNzI7MTEwRSAxMTYzIDExQjk7Q0M3MjsxMTBFIDExNjMgMTFCOTsKK0NDNzM7Q0M3MzsxMTBFIDExNjMgMTFCQTtDQzczOzExMEUgMTE2MyAxMUJBOworQ0M3NDtDQzc0OzExMEUgMTE2MyAxMUJCO0NDNzQ7MTEwRSAxMTYzIDExQkI7CitDQzc1O0NDNzU7MTEwRSAxMTYzIDExQkM7Q0M3NTsxMTBFIDExNjMgMTFCQzsKK0NDNzY7Q0M3NjsxMTBFIDExNjMgMTFCRDtDQzc2OzExMEUgMTE2MyAxMUJEOworQ0M3NztDQzc3OzExMEUgMTE2MyAxMUJFO0NDNzc7MTEwRSAxMTYzIDExQkU7CitDQzc4O0NDNzg7MTEwRSAxMTYzIDExQkY7Q0M3ODsxMTBFIDExNjMgMTFCRjsKK0NDNzk7Q0M3OTsxMTBFIDExNjMgMTFDMDtDQzc5OzExMEUgMTE2MyAxMUMwOworQ0M3QTtDQzdBOzExMEUgMTE2MyAxMUMxO0NDN0E7MTEwRSAxMTYzIDExQzE7CitDQzdCO0NDN0I7MTEwRSAxMTYzIDExQzI7Q0M3QjsxMTBFIDExNjMgMTFDMjsKK0NDN0M7Q0M3QzsxMTBFIDExNjQ7Q0M3QzsxMTBFIDExNjQ7CitDQzdEO0NDN0Q7MTEwRSAxMTY0IDExQTg7Q0M3RDsxMTBFIDExNjQgMTFBODsKK0NDN0U7Q0M3RTsxMTBFIDExNjQgMTFBOTtDQzdFOzExMEUgMTE2NCAxMUE5OworQ0M3RjtDQzdGOzExMEUgMTE2NCAxMUFBO0NDN0Y7MTEwRSAxMTY0IDExQUE7CitDQzgwO0NDODA7MTEwRSAxMTY0IDExQUI7Q0M4MDsxMTBFIDExNjQgMTFBQjsKK0NDODE7Q0M4MTsxMTBFIDExNjQgMTFBQztDQzgxOzExMEUgMTE2NCAxMUFDOworQ0M4MjtDQzgyOzExMEUgMTE2NCAxMUFEO0NDODI7MTEwRSAxMTY0IDExQUQ7CitDQzgzO0NDODM7MTEwRSAxMTY0IDExQUU7Q0M4MzsxMTBFIDExNjQgMTFBRTsKK0NDODQ7Q0M4NDsxMTBFIDExNjQgMTFBRjtDQzg0OzExMEUgMTE2NCAxMUFGOworQ0M4NTtDQzg1OzExMEUgMTE2NCAxMUIwO0NDODU7MTEwRSAxMTY0IDExQjA7CitDQzg2O0NDODY7MTEwRSAxMTY0IDExQjE7Q0M4NjsxMTBFIDExNjQgMTFCMTsKK0NDODc7Q0M4NzsxMTBFIDExNjQgMTFCMjtDQzg3OzExMEUgMTE2NCAxMUIyOworQ0M4ODtDQzg4OzExMEUgMTE2NCAxMUIzO0NDODg7MTEwRSAxMTY0IDExQjM7CitDQzg5O0NDODk7MTEwRSAxMTY0IDExQjQ7Q0M4OTsxMTBFIDExNjQgMTFCNDsKK0NDOEE7Q0M4QTsxMTBFIDExNjQgMTFCNTtDQzhBOzExMEUgMTE2NCAxMUI1OworQ0M4QjtDQzhCOzExMEUgMTE2NCAxMUI2O0NDOEI7MTEwRSAxMTY0IDExQjY7CitDQzhDO0NDOEM7MTEwRSAxMTY0IDExQjc7Q0M4QzsxMTBFIDExNjQgMTFCNzsKK0NDOEQ7Q0M4RDsxMTBFIDExNjQgMTFCODtDQzhEOzExMEUgMTE2NCAxMUI4OworQ0M4RTtDQzhFOzExMEUgMTE2NCAxMUI5O0NDOEU7MTEwRSAxMTY0IDExQjk7CitDQzhGO0NDOEY7MTEwRSAxMTY0IDExQkE7Q0M4RjsxMTBFIDExNjQgMTFCQTsKK0NDOTA7Q0M5MDsxMTBFIDExNjQgMTFCQjtDQzkwOzExMEUgMTE2NCAxMUJCOworQ0M5MTtDQzkxOzExMEUgMTE2NCAxMUJDO0NDOTE7MTEwRSAxMTY0IDExQkM7CitDQzkyO0NDOTI7MTEwRSAxMTY0IDExQkQ7Q0M5MjsxMTBFIDExNjQgMTFCRDsKK0NDOTM7Q0M5MzsxMTBFIDExNjQgMTFCRTtDQzkzOzExMEUgMTE2NCAxMUJFOworQ0M5NDtDQzk0OzExMEUgMTE2NCAxMUJGO0NDOTQ7MTEwRSAxMTY0IDExQkY7CitDQzk1O0NDOTU7MTEwRSAxMTY0IDExQzA7Q0M5NTsxMTBFIDExNjQgMTFDMDsKK0NDOTY7Q0M5NjsxMTBFIDExNjQgMTFDMTtDQzk2OzExMEUgMTE2NCAxMUMxOworQ0M5NztDQzk3OzExMEUgMTE2NCAxMUMyO0NDOTc7MTEwRSAxMTY0IDExQzI7CitDQzk4O0NDOTg7MTEwRSAxMTY1O0NDOTg7MTEwRSAxMTY1OworQ0M5OTtDQzk5OzExMEUgMTE2NSAxMUE4O0NDOTk7MTEwRSAxMTY1IDExQTg7CitDQzlBO0NDOUE7MTEwRSAxMTY1IDExQTk7Q0M5QTsxMTBFIDExNjUgMTFBOTsKK0NDOUI7Q0M5QjsxMTBFIDExNjUgMTFBQTtDQzlCOzExMEUgMTE2NSAxMUFBOworQ0M5QztDQzlDOzExMEUgMTE2NSAxMUFCO0NDOUM7MTEwRSAxMTY1IDExQUI7CitDQzlEO0NDOUQ7MTEwRSAxMTY1IDExQUM7Q0M5RDsxMTBFIDExNjUgMTFBQzsKK0NDOUU7Q0M5RTsxMTBFIDExNjUgMTFBRDtDQzlFOzExMEUgMTE2NSAxMUFEOworQ0M5RjtDQzlGOzExMEUgMTE2NSAxMUFFO0NDOUY7MTEwRSAxMTY1IDExQUU7CitDQ0EwO0NDQTA7MTEwRSAxMTY1IDExQUY7Q0NBMDsxMTBFIDExNjUgMTFBRjsKK0NDQTE7Q0NBMTsxMTBFIDExNjUgMTFCMDtDQ0ExOzExMEUgMTE2NSAxMUIwOworQ0NBMjtDQ0EyOzExMEUgMTE2NSAxMUIxO0NDQTI7MTEwRSAxMTY1IDExQjE7CitDQ0EzO0NDQTM7MTEwRSAxMTY1IDExQjI7Q0NBMzsxMTBFIDExNjUgMTFCMjsKK0NDQTQ7Q0NBNDsxMTBFIDExNjUgMTFCMztDQ0E0OzExMEUgMTE2NSAxMUIzOworQ0NBNTtDQ0E1OzExMEUgMTE2NSAxMUI0O0NDQTU7MTEwRSAxMTY1IDExQjQ7CitDQ0E2O0NDQTY7MTEwRSAxMTY1IDExQjU7Q0NBNjsxMTBFIDExNjUgMTFCNTsKK0NDQTc7Q0NBNzsxMTBFIDExNjUgMTFCNjtDQ0E3OzExMEUgMTE2NSAxMUI2OworQ0NBODtDQ0E4OzExMEUgMTE2NSAxMUI3O0NDQTg7MTEwRSAxMTY1IDExQjc7CitDQ0E5O0NDQTk7MTEwRSAxMTY1IDExQjg7Q0NBOTsxMTBFIDExNjUgMTFCODsKK0NDQUE7Q0NBQTsxMTBFIDExNjUgMTFCOTtDQ0FBOzExMEUgMTE2NSAxMUI5OworQ0NBQjtDQ0FCOzExMEUgMTE2NSAxMUJBO0NDQUI7MTEwRSAxMTY1IDExQkE7CitDQ0FDO0NDQUM7MTEwRSAxMTY1IDExQkI7Q0NBQzsxMTBFIDExNjUgMTFCQjsKK0NDQUQ7Q0NBRDsxMTBFIDExNjUgMTFCQztDQ0FEOzExMEUgMTE2NSAxMUJDOworQ0NBRTtDQ0FFOzExMEUgMTE2NSAxMUJEO0NDQUU7MTEwRSAxMTY1IDExQkQ7CitDQ0FGO0NDQUY7MTEwRSAxMTY1IDExQkU7Q0NBRjsxMTBFIDExNjUgMTFCRTsKK0NDQjA7Q0NCMDsxMTBFIDExNjUgMTFCRjtDQ0IwOzExMEUgMTE2NSAxMUJGOworQ0NCMTtDQ0IxOzExMEUgMTE2NSAxMUMwO0NDQjE7MTEwRSAxMTY1IDExQzA7CitDQ0IyO0NDQjI7MTEwRSAxMTY1IDExQzE7Q0NCMjsxMTBFIDExNjUgMTFDMTsKK0NDQjM7Q0NCMzsxMTBFIDExNjUgMTFDMjtDQ0IzOzExMEUgMTE2NSAxMUMyOworQ0NCNDtDQ0I0OzExMEUgMTE2NjtDQ0I0OzExMEUgMTE2NjsKK0NDQjU7Q0NCNTsxMTBFIDExNjYgMTFBODtDQ0I1OzExMEUgMTE2NiAxMUE4OworQ0NCNjtDQ0I2OzExMEUgMTE2NiAxMUE5O0NDQjY7MTEwRSAxMTY2IDExQTk7CitDQ0I3O0NDQjc7MTEwRSAxMTY2IDExQUE7Q0NCNzsxMTBFIDExNjYgMTFBQTsKK0NDQjg7Q0NCODsxMTBFIDExNjYgMTFBQjtDQ0I4OzExMEUgMTE2NiAxMUFCOworQ0NCOTtDQ0I5OzExMEUgMTE2NiAxMUFDO0NDQjk7MTEwRSAxMTY2IDExQUM7CitDQ0JBO0NDQkE7MTEwRSAxMTY2IDExQUQ7Q0NCQTsxMTBFIDExNjYgMTFBRDsKK0NDQkI7Q0NCQjsxMTBFIDExNjYgMTFBRTtDQ0JCOzExMEUgMTE2NiAxMUFFOworQ0NCQztDQ0JDOzExMEUgMTE2NiAxMUFGO0NDQkM7MTEwRSAxMTY2IDExQUY7CitDQ0JEO0NDQkQ7MTEwRSAxMTY2IDExQjA7Q0NCRDsxMTBFIDExNjYgMTFCMDsKK0NDQkU7Q0NCRTsxMTBFIDExNjYgMTFCMTtDQ0JFOzExMEUgMTE2NiAxMUIxOworQ0NCRjtDQ0JGOzExMEUgMTE2NiAxMUIyO0NDQkY7MTEwRSAxMTY2IDExQjI7CitDQ0MwO0NDQzA7MTEwRSAxMTY2IDExQjM7Q0NDMDsxMTBFIDExNjYgMTFCMzsKK0NDQzE7Q0NDMTsxMTBFIDExNjYgMTFCNDtDQ0MxOzExMEUgMTE2NiAxMUI0OworQ0NDMjtDQ0MyOzExMEUgMTE2NiAxMUI1O0NDQzI7MTEwRSAxMTY2IDExQjU7CitDQ0MzO0NDQzM7MTEwRSAxMTY2IDExQjY7Q0NDMzsxMTBFIDExNjYgMTFCNjsKK0NDQzQ7Q0NDNDsxMTBFIDExNjYgMTFCNztDQ0M0OzExMEUgMTE2NiAxMUI3OworQ0NDNTtDQ0M1OzExMEUgMTE2NiAxMUI4O0NDQzU7MTEwRSAxMTY2IDExQjg7CitDQ0M2O0NDQzY7MTEwRSAxMTY2IDExQjk7Q0NDNjsxMTBFIDExNjYgMTFCOTsKK0NDQzc7Q0NDNzsxMTBFIDExNjYgMTFCQTtDQ0M3OzExMEUgMTE2NiAxMUJBOworQ0NDODtDQ0M4OzExMEUgMTE2NiAxMUJCO0NDQzg7MTEwRSAxMTY2IDExQkI7CitDQ0M5O0NDQzk7MTEwRSAxMTY2IDExQkM7Q0NDOTsxMTBFIDExNjYgMTFCQzsKK0NDQ0E7Q0NDQTsxMTBFIDExNjYgMTFCRDtDQ0NBOzExMEUgMTE2NiAxMUJEOworQ0NDQjtDQ0NCOzExMEUgMTE2NiAxMUJFO0NDQ0I7MTEwRSAxMTY2IDExQkU7CitDQ0NDO0NDQ0M7MTEwRSAxMTY2IDExQkY7Q0NDQzsxMTBFIDExNjYgMTFCRjsKK0NDQ0Q7Q0NDRDsxMTBFIDExNjYgMTFDMDtDQ0NEOzExMEUgMTE2NiAxMUMwOworQ0NDRTtDQ0NFOzExMEUgMTE2NiAxMUMxO0NDQ0U7MTEwRSAxMTY2IDExQzE7CitDQ0NGO0NDQ0Y7MTEwRSAxMTY2IDExQzI7Q0NDRjsxMTBFIDExNjYgMTFDMjsKK0NDRDA7Q0NEMDsxMTBFIDExNjc7Q0NEMDsxMTBFIDExNjc7CitDQ0QxO0NDRDE7MTEwRSAxMTY3IDExQTg7Q0NEMTsxMTBFIDExNjcgMTFBODsKK0NDRDI7Q0NEMjsxMTBFIDExNjcgMTFBOTtDQ0QyOzExMEUgMTE2NyAxMUE5OworQ0NEMztDQ0QzOzExMEUgMTE2NyAxMUFBO0NDRDM7MTEwRSAxMTY3IDExQUE7CitDQ0Q0O0NDRDQ7MTEwRSAxMTY3IDExQUI7Q0NENDsxMTBFIDExNjcgMTFBQjsKK0NDRDU7Q0NENTsxMTBFIDExNjcgMTFBQztDQ0Q1OzExMEUgMTE2NyAxMUFDOworQ0NENjtDQ0Q2OzExMEUgMTE2NyAxMUFEO0NDRDY7MTEwRSAxMTY3IDExQUQ7CitDQ0Q3O0NDRDc7MTEwRSAxMTY3IDExQUU7Q0NENzsxMTBFIDExNjcgMTFBRTsKK0NDRDg7Q0NEODsxMTBFIDExNjcgMTFBRjtDQ0Q4OzExMEUgMTE2NyAxMUFGOworQ0NEOTtDQ0Q5OzExMEUgMTE2NyAxMUIwO0NDRDk7MTEwRSAxMTY3IDExQjA7CitDQ0RBO0NDREE7MTEwRSAxMTY3IDExQjE7Q0NEQTsxMTBFIDExNjcgMTFCMTsKK0NDREI7Q0NEQjsxMTBFIDExNjcgMTFCMjtDQ0RCOzExMEUgMTE2NyAxMUIyOworQ0NEQztDQ0RDOzExMEUgMTE2NyAxMUIzO0NDREM7MTEwRSAxMTY3IDExQjM7CitDQ0REO0NDREQ7MTEwRSAxMTY3IDExQjQ7Q0NERDsxMTBFIDExNjcgMTFCNDsKK0NDREU7Q0NERTsxMTBFIDExNjcgMTFCNTtDQ0RFOzExMEUgMTE2NyAxMUI1OworQ0NERjtDQ0RGOzExMEUgMTE2NyAxMUI2O0NDREY7MTEwRSAxMTY3IDExQjY7CitDQ0UwO0NDRTA7MTEwRSAxMTY3IDExQjc7Q0NFMDsxMTBFIDExNjcgMTFCNzsKK0NDRTE7Q0NFMTsxMTBFIDExNjcgMTFCODtDQ0UxOzExMEUgMTE2NyAxMUI4OworQ0NFMjtDQ0UyOzExMEUgMTE2NyAxMUI5O0NDRTI7MTEwRSAxMTY3IDExQjk7CitDQ0UzO0NDRTM7MTEwRSAxMTY3IDExQkE7Q0NFMzsxMTBFIDExNjcgMTFCQTsKK0NDRTQ7Q0NFNDsxMTBFIDExNjcgMTFCQjtDQ0U0OzExMEUgMTE2NyAxMUJCOworQ0NFNTtDQ0U1OzExMEUgMTE2NyAxMUJDO0NDRTU7MTEwRSAxMTY3IDExQkM7CitDQ0U2O0NDRTY7MTEwRSAxMTY3IDExQkQ7Q0NFNjsxMTBFIDExNjcgMTFCRDsKK0NDRTc7Q0NFNzsxMTBFIDExNjcgMTFCRTtDQ0U3OzExMEUgMTE2NyAxMUJFOworQ0NFODtDQ0U4OzExMEUgMTE2NyAxMUJGO0NDRTg7MTEwRSAxMTY3IDExQkY7CitDQ0U5O0NDRTk7MTEwRSAxMTY3IDExQzA7Q0NFOTsxMTBFIDExNjcgMTFDMDsKK0NDRUE7Q0NFQTsxMTBFIDExNjcgMTFDMTtDQ0VBOzExMEUgMTE2NyAxMUMxOworQ0NFQjtDQ0VCOzExMEUgMTE2NyAxMUMyO0NDRUI7MTEwRSAxMTY3IDExQzI7CitDQ0VDO0NDRUM7MTEwRSAxMTY4O0NDRUM7MTEwRSAxMTY4OworQ0NFRDtDQ0VEOzExMEUgMTE2OCAxMUE4O0NDRUQ7MTEwRSAxMTY4IDExQTg7CitDQ0VFO0NDRUU7MTEwRSAxMTY4IDExQTk7Q0NFRTsxMTBFIDExNjggMTFBOTsKK0NDRUY7Q0NFRjsxMTBFIDExNjggMTFBQTtDQ0VGOzExMEUgMTE2OCAxMUFBOworQ0NGMDtDQ0YwOzExMEUgMTE2OCAxMUFCO0NDRjA7MTEwRSAxMTY4IDExQUI7CitDQ0YxO0NDRjE7MTEwRSAxMTY4IDExQUM7Q0NGMTsxMTBFIDExNjggMTFBQzsKK0NDRjI7Q0NGMjsxMTBFIDExNjggMTFBRDtDQ0YyOzExMEUgMTE2OCAxMUFEOworQ0NGMztDQ0YzOzExMEUgMTE2OCAxMUFFO0NDRjM7MTEwRSAxMTY4IDExQUU7CitDQ0Y0O0NDRjQ7MTEwRSAxMTY4IDExQUY7Q0NGNDsxMTBFIDExNjggMTFBRjsKK0NDRjU7Q0NGNTsxMTBFIDExNjggMTFCMDtDQ0Y1OzExMEUgMTE2OCAxMUIwOworQ0NGNjtDQ0Y2OzExMEUgMTE2OCAxMUIxO0NDRjY7MTEwRSAxMTY4IDExQjE7CitDQ0Y3O0NDRjc7MTEwRSAxMTY4IDExQjI7Q0NGNzsxMTBFIDExNjggMTFCMjsKK0NDRjg7Q0NGODsxMTBFIDExNjggMTFCMztDQ0Y4OzExMEUgMTE2OCAxMUIzOworQ0NGOTtDQ0Y5OzExMEUgMTE2OCAxMUI0O0NDRjk7MTEwRSAxMTY4IDExQjQ7CitDQ0ZBO0NDRkE7MTEwRSAxMTY4IDExQjU7Q0NGQTsxMTBFIDExNjggMTFCNTsKK0NDRkI7Q0NGQjsxMTBFIDExNjggMTFCNjtDQ0ZCOzExMEUgMTE2OCAxMUI2OworQ0NGQztDQ0ZDOzExMEUgMTE2OCAxMUI3O0NDRkM7MTEwRSAxMTY4IDExQjc7CitDQ0ZEO0NDRkQ7MTEwRSAxMTY4IDExQjg7Q0NGRDsxMTBFIDExNjggMTFCODsKK0NDRkU7Q0NGRTsxMTBFIDExNjggMTFCOTtDQ0ZFOzExMEUgMTE2OCAxMUI5OworQ0NGRjtDQ0ZGOzExMEUgMTE2OCAxMUJBO0NDRkY7MTEwRSAxMTY4IDExQkE7CitDRDAwO0NEMDA7MTEwRSAxMTY4IDExQkI7Q0QwMDsxMTBFIDExNjggMTFCQjsKK0NEMDE7Q0QwMTsxMTBFIDExNjggMTFCQztDRDAxOzExMEUgMTE2OCAxMUJDOworQ0QwMjtDRDAyOzExMEUgMTE2OCAxMUJEO0NEMDI7MTEwRSAxMTY4IDExQkQ7CitDRDAzO0NEMDM7MTEwRSAxMTY4IDExQkU7Q0QwMzsxMTBFIDExNjggMTFCRTsKK0NEMDQ7Q0QwNDsxMTBFIDExNjggMTFCRjtDRDA0OzExMEUgMTE2OCAxMUJGOworQ0QwNTtDRDA1OzExMEUgMTE2OCAxMUMwO0NEMDU7MTEwRSAxMTY4IDExQzA7CitDRDA2O0NEMDY7MTEwRSAxMTY4IDExQzE7Q0QwNjsxMTBFIDExNjggMTFDMTsKK0NEMDc7Q0QwNzsxMTBFIDExNjggMTFDMjtDRDA3OzExMEUgMTE2OCAxMUMyOworQ0QwODtDRDA4OzExMEUgMTE2OTtDRDA4OzExMEUgMTE2OTsKK0NEMDk7Q0QwOTsxMTBFIDExNjkgMTFBODtDRDA5OzExMEUgMTE2OSAxMUE4OworQ0QwQTtDRDBBOzExMEUgMTE2OSAxMUE5O0NEMEE7MTEwRSAxMTY5IDExQTk7CitDRDBCO0NEMEI7MTEwRSAxMTY5IDExQUE7Q0QwQjsxMTBFIDExNjkgMTFBQTsKK0NEMEM7Q0QwQzsxMTBFIDExNjkgMTFBQjtDRDBDOzExMEUgMTE2OSAxMUFCOworQ0QwRDtDRDBEOzExMEUgMTE2OSAxMUFDO0NEMEQ7MTEwRSAxMTY5IDExQUM7CitDRDBFO0NEMEU7MTEwRSAxMTY5IDExQUQ7Q0QwRTsxMTBFIDExNjkgMTFBRDsKK0NEMEY7Q0QwRjsxMTBFIDExNjkgMTFBRTtDRDBGOzExMEUgMTE2OSAxMUFFOworQ0QxMDtDRDEwOzExMEUgMTE2OSAxMUFGO0NEMTA7MTEwRSAxMTY5IDExQUY7CitDRDExO0NEMTE7MTEwRSAxMTY5IDExQjA7Q0QxMTsxMTBFIDExNjkgMTFCMDsKK0NEMTI7Q0QxMjsxMTBFIDExNjkgMTFCMTtDRDEyOzExMEUgMTE2OSAxMUIxOworQ0QxMztDRDEzOzExMEUgMTE2OSAxMUIyO0NEMTM7MTEwRSAxMTY5IDExQjI7CitDRDE0O0NEMTQ7MTEwRSAxMTY5IDExQjM7Q0QxNDsxMTBFIDExNjkgMTFCMzsKK0NEMTU7Q0QxNTsxMTBFIDExNjkgMTFCNDtDRDE1OzExMEUgMTE2OSAxMUI0OworQ0QxNjtDRDE2OzExMEUgMTE2OSAxMUI1O0NEMTY7MTEwRSAxMTY5IDExQjU7CitDRDE3O0NEMTc7MTEwRSAxMTY5IDExQjY7Q0QxNzsxMTBFIDExNjkgMTFCNjsKK0NEMTg7Q0QxODsxMTBFIDExNjkgMTFCNztDRDE4OzExMEUgMTE2OSAxMUI3OworQ0QxOTtDRDE5OzExMEUgMTE2OSAxMUI4O0NEMTk7MTEwRSAxMTY5IDExQjg7CitDRDFBO0NEMUE7MTEwRSAxMTY5IDExQjk7Q0QxQTsxMTBFIDExNjkgMTFCOTsKK0NEMUI7Q0QxQjsxMTBFIDExNjkgMTFCQTtDRDFCOzExMEUgMTE2OSAxMUJBOworQ0QxQztDRDFDOzExMEUgMTE2OSAxMUJCO0NEMUM7MTEwRSAxMTY5IDExQkI7CitDRDFEO0NEMUQ7MTEwRSAxMTY5IDExQkM7Q0QxRDsxMTBFIDExNjkgMTFCQzsKK0NEMUU7Q0QxRTsxMTBFIDExNjkgMTFCRDtDRDFFOzExMEUgMTE2OSAxMUJEOworQ0QxRjtDRDFGOzExMEUgMTE2OSAxMUJFO0NEMUY7MTEwRSAxMTY5IDExQkU7CitDRDIwO0NEMjA7MTEwRSAxMTY5IDExQkY7Q0QyMDsxMTBFIDExNjkgMTFCRjsKK0NEMjE7Q0QyMTsxMTBFIDExNjkgMTFDMDtDRDIxOzExMEUgMTE2OSAxMUMwOworQ0QyMjtDRDIyOzExMEUgMTE2OSAxMUMxO0NEMjI7MTEwRSAxMTY5IDExQzE7CitDRDIzO0NEMjM7MTEwRSAxMTY5IDExQzI7Q0QyMzsxMTBFIDExNjkgMTFDMjsKK0NEMjQ7Q0QyNDsxMTBFIDExNkE7Q0QyNDsxMTBFIDExNkE7CitDRDI1O0NEMjU7MTEwRSAxMTZBIDExQTg7Q0QyNTsxMTBFIDExNkEgMTFBODsKK0NEMjY7Q0QyNjsxMTBFIDExNkEgMTFBOTtDRDI2OzExMEUgMTE2QSAxMUE5OworQ0QyNztDRDI3OzExMEUgMTE2QSAxMUFBO0NEMjc7MTEwRSAxMTZBIDExQUE7CitDRDI4O0NEMjg7MTEwRSAxMTZBIDExQUI7Q0QyODsxMTBFIDExNkEgMTFBQjsKK0NEMjk7Q0QyOTsxMTBFIDExNkEgMTFBQztDRDI5OzExMEUgMTE2QSAxMUFDOworQ0QyQTtDRDJBOzExMEUgMTE2QSAxMUFEO0NEMkE7MTEwRSAxMTZBIDExQUQ7CitDRDJCO0NEMkI7MTEwRSAxMTZBIDExQUU7Q0QyQjsxMTBFIDExNkEgMTFBRTsKK0NEMkM7Q0QyQzsxMTBFIDExNkEgMTFBRjtDRDJDOzExMEUgMTE2QSAxMUFGOworQ0QyRDtDRDJEOzExMEUgMTE2QSAxMUIwO0NEMkQ7MTEwRSAxMTZBIDExQjA7CitDRDJFO0NEMkU7MTEwRSAxMTZBIDExQjE7Q0QyRTsxMTBFIDExNkEgMTFCMTsKK0NEMkY7Q0QyRjsxMTBFIDExNkEgMTFCMjtDRDJGOzExMEUgMTE2QSAxMUIyOworQ0QzMDtDRDMwOzExMEUgMTE2QSAxMUIzO0NEMzA7MTEwRSAxMTZBIDExQjM7CitDRDMxO0NEMzE7MTEwRSAxMTZBIDExQjQ7Q0QzMTsxMTBFIDExNkEgMTFCNDsKK0NEMzI7Q0QzMjsxMTBFIDExNkEgMTFCNTtDRDMyOzExMEUgMTE2QSAxMUI1OworQ0QzMztDRDMzOzExMEUgMTE2QSAxMUI2O0NEMzM7MTEwRSAxMTZBIDExQjY7CitDRDM0O0NEMzQ7MTEwRSAxMTZBIDExQjc7Q0QzNDsxMTBFIDExNkEgMTFCNzsKK0NEMzU7Q0QzNTsxMTBFIDExNkEgMTFCODtDRDM1OzExMEUgMTE2QSAxMUI4OworQ0QzNjtDRDM2OzExMEUgMTE2QSAxMUI5O0NEMzY7MTEwRSAxMTZBIDExQjk7CitDRDM3O0NEMzc7MTEwRSAxMTZBIDExQkE7Q0QzNzsxMTBFIDExNkEgMTFCQTsKK0NEMzg7Q0QzODsxMTBFIDExNkEgMTFCQjtDRDM4OzExMEUgMTE2QSAxMUJCOworQ0QzOTtDRDM5OzExMEUgMTE2QSAxMUJDO0NEMzk7MTEwRSAxMTZBIDExQkM7CitDRDNBO0NEM0E7MTEwRSAxMTZBIDExQkQ7Q0QzQTsxMTBFIDExNkEgMTFCRDsKK0NEM0I7Q0QzQjsxMTBFIDExNkEgMTFCRTtDRDNCOzExMEUgMTE2QSAxMUJFOworQ0QzQztDRDNDOzExMEUgMTE2QSAxMUJGO0NEM0M7MTEwRSAxMTZBIDExQkY7CitDRDNEO0NEM0Q7MTEwRSAxMTZBIDExQzA7Q0QzRDsxMTBFIDExNkEgMTFDMDsKK0NEM0U7Q0QzRTsxMTBFIDExNkEgMTFDMTtDRDNFOzExMEUgMTE2QSAxMUMxOworQ0QzRjtDRDNGOzExMEUgMTE2QSAxMUMyO0NEM0Y7MTEwRSAxMTZBIDExQzI7CitDRDQwO0NENDA7MTEwRSAxMTZCO0NENDA7MTEwRSAxMTZCOworQ0Q0MTtDRDQxOzExMEUgMTE2QiAxMUE4O0NENDE7MTEwRSAxMTZCIDExQTg7CitDRDQyO0NENDI7MTEwRSAxMTZCIDExQTk7Q0Q0MjsxMTBFIDExNkIgMTFBOTsKK0NENDM7Q0Q0MzsxMTBFIDExNkIgMTFBQTtDRDQzOzExMEUgMTE2QiAxMUFBOworQ0Q0NDtDRDQ0OzExMEUgMTE2QiAxMUFCO0NENDQ7MTEwRSAxMTZCIDExQUI7CitDRDQ1O0NENDU7MTEwRSAxMTZCIDExQUM7Q0Q0NTsxMTBFIDExNkIgMTFBQzsKK0NENDY7Q0Q0NjsxMTBFIDExNkIgMTFBRDtDRDQ2OzExMEUgMTE2QiAxMUFEOworQ0Q0NztDRDQ3OzExMEUgMTE2QiAxMUFFO0NENDc7MTEwRSAxMTZCIDExQUU7CitDRDQ4O0NENDg7MTEwRSAxMTZCIDExQUY7Q0Q0ODsxMTBFIDExNkIgMTFBRjsKK0NENDk7Q0Q0OTsxMTBFIDExNkIgMTFCMDtDRDQ5OzExMEUgMTE2QiAxMUIwOworQ0Q0QTtDRDRBOzExMEUgMTE2QiAxMUIxO0NENEE7MTEwRSAxMTZCIDExQjE7CitDRDRCO0NENEI7MTEwRSAxMTZCIDExQjI7Q0Q0QjsxMTBFIDExNkIgMTFCMjsKK0NENEM7Q0Q0QzsxMTBFIDExNkIgMTFCMztDRDRDOzExMEUgMTE2QiAxMUIzOworQ0Q0RDtDRDREOzExMEUgMTE2QiAxMUI0O0NENEQ7MTEwRSAxMTZCIDExQjQ7CitDRDRFO0NENEU7MTEwRSAxMTZCIDExQjU7Q0Q0RTsxMTBFIDExNkIgMTFCNTsKK0NENEY7Q0Q0RjsxMTBFIDExNkIgMTFCNjtDRDRGOzExMEUgMTE2QiAxMUI2OworQ0Q1MDtDRDUwOzExMEUgMTE2QiAxMUI3O0NENTA7MTEwRSAxMTZCIDExQjc7CitDRDUxO0NENTE7MTEwRSAxMTZCIDExQjg7Q0Q1MTsxMTBFIDExNkIgMTFCODsKK0NENTI7Q0Q1MjsxMTBFIDExNkIgMTFCOTtDRDUyOzExMEUgMTE2QiAxMUI5OworQ0Q1MztDRDUzOzExMEUgMTE2QiAxMUJBO0NENTM7MTEwRSAxMTZCIDExQkE7CitDRDU0O0NENTQ7MTEwRSAxMTZCIDExQkI7Q0Q1NDsxMTBFIDExNkIgMTFCQjsKK0NENTU7Q0Q1NTsxMTBFIDExNkIgMTFCQztDRDU1OzExMEUgMTE2QiAxMUJDOworQ0Q1NjtDRDU2OzExMEUgMTE2QiAxMUJEO0NENTY7MTEwRSAxMTZCIDExQkQ7CitDRDU3O0NENTc7MTEwRSAxMTZCIDExQkU7Q0Q1NzsxMTBFIDExNkIgMTFCRTsKK0NENTg7Q0Q1ODsxMTBFIDExNkIgMTFCRjtDRDU4OzExMEUgMTE2QiAxMUJGOworQ0Q1OTtDRDU5OzExMEUgMTE2QiAxMUMwO0NENTk7MTEwRSAxMTZCIDExQzA7CitDRDVBO0NENUE7MTEwRSAxMTZCIDExQzE7Q0Q1QTsxMTBFIDExNkIgMTFDMTsKK0NENUI7Q0Q1QjsxMTBFIDExNkIgMTFDMjtDRDVCOzExMEUgMTE2QiAxMUMyOworQ0Q1QztDRDVDOzExMEUgMTE2QztDRDVDOzExMEUgMTE2QzsKK0NENUQ7Q0Q1RDsxMTBFIDExNkMgMTFBODtDRDVEOzExMEUgMTE2QyAxMUE4OworQ0Q1RTtDRDVFOzExMEUgMTE2QyAxMUE5O0NENUU7MTEwRSAxMTZDIDExQTk7CitDRDVGO0NENUY7MTEwRSAxMTZDIDExQUE7Q0Q1RjsxMTBFIDExNkMgMTFBQTsKK0NENjA7Q0Q2MDsxMTBFIDExNkMgMTFBQjtDRDYwOzExMEUgMTE2QyAxMUFCOworQ0Q2MTtDRDYxOzExMEUgMTE2QyAxMUFDO0NENjE7MTEwRSAxMTZDIDExQUM7CitDRDYyO0NENjI7MTEwRSAxMTZDIDExQUQ7Q0Q2MjsxMTBFIDExNkMgMTFBRDsKK0NENjM7Q0Q2MzsxMTBFIDExNkMgMTFBRTtDRDYzOzExMEUgMTE2QyAxMUFFOworQ0Q2NDtDRDY0OzExMEUgMTE2QyAxMUFGO0NENjQ7MTEwRSAxMTZDIDExQUY7CitDRDY1O0NENjU7MTEwRSAxMTZDIDExQjA7Q0Q2NTsxMTBFIDExNkMgMTFCMDsKK0NENjY7Q0Q2NjsxMTBFIDExNkMgMTFCMTtDRDY2OzExMEUgMTE2QyAxMUIxOworQ0Q2NztDRDY3OzExMEUgMTE2QyAxMUIyO0NENjc7MTEwRSAxMTZDIDExQjI7CitDRDY4O0NENjg7MTEwRSAxMTZDIDExQjM7Q0Q2ODsxMTBFIDExNkMgMTFCMzsKK0NENjk7Q0Q2OTsxMTBFIDExNkMgMTFCNDtDRDY5OzExMEUgMTE2QyAxMUI0OworQ0Q2QTtDRDZBOzExMEUgMTE2QyAxMUI1O0NENkE7MTEwRSAxMTZDIDExQjU7CitDRDZCO0NENkI7MTEwRSAxMTZDIDExQjY7Q0Q2QjsxMTBFIDExNkMgMTFCNjsKK0NENkM7Q0Q2QzsxMTBFIDExNkMgMTFCNztDRDZDOzExMEUgMTE2QyAxMUI3OworQ0Q2RDtDRDZEOzExMEUgMTE2QyAxMUI4O0NENkQ7MTEwRSAxMTZDIDExQjg7CitDRDZFO0NENkU7MTEwRSAxMTZDIDExQjk7Q0Q2RTsxMTBFIDExNkMgMTFCOTsKK0NENkY7Q0Q2RjsxMTBFIDExNkMgMTFCQTtDRDZGOzExMEUgMTE2QyAxMUJBOworQ0Q3MDtDRDcwOzExMEUgMTE2QyAxMUJCO0NENzA7MTEwRSAxMTZDIDExQkI7CitDRDcxO0NENzE7MTEwRSAxMTZDIDExQkM7Q0Q3MTsxMTBFIDExNkMgMTFCQzsKK0NENzI7Q0Q3MjsxMTBFIDExNkMgMTFCRDtDRDcyOzExMEUgMTE2QyAxMUJEOworQ0Q3MztDRDczOzExMEUgMTE2QyAxMUJFO0NENzM7MTEwRSAxMTZDIDExQkU7CitDRDc0O0NENzQ7MTEwRSAxMTZDIDExQkY7Q0Q3NDsxMTBFIDExNkMgMTFCRjsKK0NENzU7Q0Q3NTsxMTBFIDExNkMgMTFDMDtDRDc1OzExMEUgMTE2QyAxMUMwOworQ0Q3NjtDRDc2OzExMEUgMTE2QyAxMUMxO0NENzY7MTEwRSAxMTZDIDExQzE7CitDRDc3O0NENzc7MTEwRSAxMTZDIDExQzI7Q0Q3NzsxMTBFIDExNkMgMTFDMjsKK0NENzg7Q0Q3ODsxMTBFIDExNkQ7Q0Q3ODsxMTBFIDExNkQ7CitDRDc5O0NENzk7MTEwRSAxMTZEIDExQTg7Q0Q3OTsxMTBFIDExNkQgMTFBODsKK0NEN0E7Q0Q3QTsxMTBFIDExNkQgMTFBOTtDRDdBOzExMEUgMTE2RCAxMUE5OworQ0Q3QjtDRDdCOzExMEUgMTE2RCAxMUFBO0NEN0I7MTEwRSAxMTZEIDExQUE7CitDRDdDO0NEN0M7MTEwRSAxMTZEIDExQUI7Q0Q3QzsxMTBFIDExNkQgMTFBQjsKK0NEN0Q7Q0Q3RDsxMTBFIDExNkQgMTFBQztDRDdEOzExMEUgMTE2RCAxMUFDOworQ0Q3RTtDRDdFOzExMEUgMTE2RCAxMUFEO0NEN0U7MTEwRSAxMTZEIDExQUQ7CitDRDdGO0NEN0Y7MTEwRSAxMTZEIDExQUU7Q0Q3RjsxMTBFIDExNkQgMTFBRTsKK0NEODA7Q0Q4MDsxMTBFIDExNkQgMTFBRjtDRDgwOzExMEUgMTE2RCAxMUFGOworQ0Q4MTtDRDgxOzExMEUgMTE2RCAxMUIwO0NEODE7MTEwRSAxMTZEIDExQjA7CitDRDgyO0NEODI7MTEwRSAxMTZEIDExQjE7Q0Q4MjsxMTBFIDExNkQgMTFCMTsKK0NEODM7Q0Q4MzsxMTBFIDExNkQgMTFCMjtDRDgzOzExMEUgMTE2RCAxMUIyOworQ0Q4NDtDRDg0OzExMEUgMTE2RCAxMUIzO0NEODQ7MTEwRSAxMTZEIDExQjM7CitDRDg1O0NEODU7MTEwRSAxMTZEIDExQjQ7Q0Q4NTsxMTBFIDExNkQgMTFCNDsKK0NEODY7Q0Q4NjsxMTBFIDExNkQgMTFCNTtDRDg2OzExMEUgMTE2RCAxMUI1OworQ0Q4NztDRDg3OzExMEUgMTE2RCAxMUI2O0NEODc7MTEwRSAxMTZEIDExQjY7CitDRDg4O0NEODg7MTEwRSAxMTZEIDExQjc7Q0Q4ODsxMTBFIDExNkQgMTFCNzsKK0NEODk7Q0Q4OTsxMTBFIDExNkQgMTFCODtDRDg5OzExMEUgMTE2RCAxMUI4OworQ0Q4QTtDRDhBOzExMEUgMTE2RCAxMUI5O0NEOEE7MTEwRSAxMTZEIDExQjk7CitDRDhCO0NEOEI7MTEwRSAxMTZEIDExQkE7Q0Q4QjsxMTBFIDExNkQgMTFCQTsKK0NEOEM7Q0Q4QzsxMTBFIDExNkQgMTFCQjtDRDhDOzExMEUgMTE2RCAxMUJCOworQ0Q4RDtDRDhEOzExMEUgMTE2RCAxMUJDO0NEOEQ7MTEwRSAxMTZEIDExQkM7CitDRDhFO0NEOEU7MTEwRSAxMTZEIDExQkQ7Q0Q4RTsxMTBFIDExNkQgMTFCRDsKK0NEOEY7Q0Q4RjsxMTBFIDExNkQgMTFCRTtDRDhGOzExMEUgMTE2RCAxMUJFOworQ0Q5MDtDRDkwOzExMEUgMTE2RCAxMUJGO0NEOTA7MTEwRSAxMTZEIDExQkY7CitDRDkxO0NEOTE7MTEwRSAxMTZEIDExQzA7Q0Q5MTsxMTBFIDExNkQgMTFDMDsKK0NEOTI7Q0Q5MjsxMTBFIDExNkQgMTFDMTtDRDkyOzExMEUgMTE2RCAxMUMxOworQ0Q5MztDRDkzOzExMEUgMTE2RCAxMUMyO0NEOTM7MTEwRSAxMTZEIDExQzI7CitDRDk0O0NEOTQ7MTEwRSAxMTZFO0NEOTQ7MTEwRSAxMTZFOworQ0Q5NTtDRDk1OzExMEUgMTE2RSAxMUE4O0NEOTU7MTEwRSAxMTZFIDExQTg7CitDRDk2O0NEOTY7MTEwRSAxMTZFIDExQTk7Q0Q5NjsxMTBFIDExNkUgMTFBOTsKK0NEOTc7Q0Q5NzsxMTBFIDExNkUgMTFBQTtDRDk3OzExMEUgMTE2RSAxMUFBOworQ0Q5ODtDRDk4OzExMEUgMTE2RSAxMUFCO0NEOTg7MTEwRSAxMTZFIDExQUI7CitDRDk5O0NEOTk7MTEwRSAxMTZFIDExQUM7Q0Q5OTsxMTBFIDExNkUgMTFBQzsKK0NEOUE7Q0Q5QTsxMTBFIDExNkUgMTFBRDtDRDlBOzExMEUgMTE2RSAxMUFEOworQ0Q5QjtDRDlCOzExMEUgMTE2RSAxMUFFO0NEOUI7MTEwRSAxMTZFIDExQUU7CitDRDlDO0NEOUM7MTEwRSAxMTZFIDExQUY7Q0Q5QzsxMTBFIDExNkUgMTFBRjsKK0NEOUQ7Q0Q5RDsxMTBFIDExNkUgMTFCMDtDRDlEOzExMEUgMTE2RSAxMUIwOworQ0Q5RTtDRDlFOzExMEUgMTE2RSAxMUIxO0NEOUU7MTEwRSAxMTZFIDExQjE7CitDRDlGO0NEOUY7MTEwRSAxMTZFIDExQjI7Q0Q5RjsxMTBFIDExNkUgMTFCMjsKK0NEQTA7Q0RBMDsxMTBFIDExNkUgMTFCMztDREEwOzExMEUgMTE2RSAxMUIzOworQ0RBMTtDREExOzExMEUgMTE2RSAxMUI0O0NEQTE7MTEwRSAxMTZFIDExQjQ7CitDREEyO0NEQTI7MTEwRSAxMTZFIDExQjU7Q0RBMjsxMTBFIDExNkUgMTFCNTsKK0NEQTM7Q0RBMzsxMTBFIDExNkUgMTFCNjtDREEzOzExMEUgMTE2RSAxMUI2OworQ0RBNDtDREE0OzExMEUgMTE2RSAxMUI3O0NEQTQ7MTEwRSAxMTZFIDExQjc7CitDREE1O0NEQTU7MTEwRSAxMTZFIDExQjg7Q0RBNTsxMTBFIDExNkUgMTFCODsKK0NEQTY7Q0RBNjsxMTBFIDExNkUgMTFCOTtDREE2OzExMEUgMTE2RSAxMUI5OworQ0RBNztDREE3OzExMEUgMTE2RSAxMUJBO0NEQTc7MTEwRSAxMTZFIDExQkE7CitDREE4O0NEQTg7MTEwRSAxMTZFIDExQkI7Q0RBODsxMTBFIDExNkUgMTFCQjsKK0NEQTk7Q0RBOTsxMTBFIDExNkUgMTFCQztDREE5OzExMEUgMTE2RSAxMUJDOworQ0RBQTtDREFBOzExMEUgMTE2RSAxMUJEO0NEQUE7MTEwRSAxMTZFIDExQkQ7CitDREFCO0NEQUI7MTEwRSAxMTZFIDExQkU7Q0RBQjsxMTBFIDExNkUgMTFCRTsKK0NEQUM7Q0RBQzsxMTBFIDExNkUgMTFCRjtDREFDOzExMEUgMTE2RSAxMUJGOworQ0RBRDtDREFEOzExMEUgMTE2RSAxMUMwO0NEQUQ7MTEwRSAxMTZFIDExQzA7CitDREFFO0NEQUU7MTEwRSAxMTZFIDExQzE7Q0RBRTsxMTBFIDExNkUgMTFDMTsKK0NEQUY7Q0RBRjsxMTBFIDExNkUgMTFDMjtDREFGOzExMEUgMTE2RSAxMUMyOworQ0RCMDtDREIwOzExMEUgMTE2RjtDREIwOzExMEUgMTE2RjsKK0NEQjE7Q0RCMTsxMTBFIDExNkYgMTFBODtDREIxOzExMEUgMTE2RiAxMUE4OworQ0RCMjtDREIyOzExMEUgMTE2RiAxMUE5O0NEQjI7MTEwRSAxMTZGIDExQTk7CitDREIzO0NEQjM7MTEwRSAxMTZGIDExQUE7Q0RCMzsxMTBFIDExNkYgMTFBQTsKK0NEQjQ7Q0RCNDsxMTBFIDExNkYgMTFBQjtDREI0OzExMEUgMTE2RiAxMUFCOworQ0RCNTtDREI1OzExMEUgMTE2RiAxMUFDO0NEQjU7MTEwRSAxMTZGIDExQUM7CitDREI2O0NEQjY7MTEwRSAxMTZGIDExQUQ7Q0RCNjsxMTBFIDExNkYgMTFBRDsKK0NEQjc7Q0RCNzsxMTBFIDExNkYgMTFBRTtDREI3OzExMEUgMTE2RiAxMUFFOworQ0RCODtDREI4OzExMEUgMTE2RiAxMUFGO0NEQjg7MTEwRSAxMTZGIDExQUY7CitDREI5O0NEQjk7MTEwRSAxMTZGIDExQjA7Q0RCOTsxMTBFIDExNkYgMTFCMDsKK0NEQkE7Q0RCQTsxMTBFIDExNkYgMTFCMTtDREJBOzExMEUgMTE2RiAxMUIxOworQ0RCQjtDREJCOzExMEUgMTE2RiAxMUIyO0NEQkI7MTEwRSAxMTZGIDExQjI7CitDREJDO0NEQkM7MTEwRSAxMTZGIDExQjM7Q0RCQzsxMTBFIDExNkYgMTFCMzsKK0NEQkQ7Q0RCRDsxMTBFIDExNkYgMTFCNDtDREJEOzExMEUgMTE2RiAxMUI0OworQ0RCRTtDREJFOzExMEUgMTE2RiAxMUI1O0NEQkU7MTEwRSAxMTZGIDExQjU7CitDREJGO0NEQkY7MTEwRSAxMTZGIDExQjY7Q0RCRjsxMTBFIDExNkYgMTFCNjsKK0NEQzA7Q0RDMDsxMTBFIDExNkYgMTFCNztDREMwOzExMEUgMTE2RiAxMUI3OworQ0RDMTtDREMxOzExMEUgMTE2RiAxMUI4O0NEQzE7MTEwRSAxMTZGIDExQjg7CitDREMyO0NEQzI7MTEwRSAxMTZGIDExQjk7Q0RDMjsxMTBFIDExNkYgMTFCOTsKK0NEQzM7Q0RDMzsxMTBFIDExNkYgMTFCQTtDREMzOzExMEUgMTE2RiAxMUJBOworQ0RDNDtDREM0OzExMEUgMTE2RiAxMUJCO0NEQzQ7MTEwRSAxMTZGIDExQkI7CitDREM1O0NEQzU7MTEwRSAxMTZGIDExQkM7Q0RDNTsxMTBFIDExNkYgMTFCQzsKK0NEQzY7Q0RDNjsxMTBFIDExNkYgMTFCRDtDREM2OzExMEUgMTE2RiAxMUJEOworQ0RDNztDREM3OzExMEUgMTE2RiAxMUJFO0NEQzc7MTEwRSAxMTZGIDExQkU7CitDREM4O0NEQzg7MTEwRSAxMTZGIDExQkY7Q0RDODsxMTBFIDExNkYgMTFCRjsKK0NEQzk7Q0RDOTsxMTBFIDExNkYgMTFDMDtDREM5OzExMEUgMTE2RiAxMUMwOworQ0RDQTtDRENBOzExMEUgMTE2RiAxMUMxO0NEQ0E7MTEwRSAxMTZGIDExQzE7CitDRENCO0NEQ0I7MTEwRSAxMTZGIDExQzI7Q0RDQjsxMTBFIDExNkYgMTFDMjsKK0NEQ0M7Q0RDQzsxMTBFIDExNzA7Q0RDQzsxMTBFIDExNzA7CitDRENEO0NEQ0Q7MTEwRSAxMTcwIDExQTg7Q0RDRDsxMTBFIDExNzAgMTFBODsKK0NEQ0U7Q0RDRTsxMTBFIDExNzAgMTFBOTtDRENFOzExMEUgMTE3MCAxMUE5OworQ0RDRjtDRENGOzExMEUgMTE3MCAxMUFBO0NEQ0Y7MTEwRSAxMTcwIDExQUE7CitDREQwO0NERDA7MTEwRSAxMTcwIDExQUI7Q0REMDsxMTBFIDExNzAgMTFBQjsKK0NERDE7Q0REMTsxMTBFIDExNzAgMTFBQztDREQxOzExMEUgMTE3MCAxMUFDOworQ0REMjtDREQyOzExMEUgMTE3MCAxMUFEO0NERDI7MTEwRSAxMTcwIDExQUQ7CitDREQzO0NERDM7MTEwRSAxMTcwIDExQUU7Q0REMzsxMTBFIDExNzAgMTFBRTsKK0NERDQ7Q0RENDsxMTBFIDExNzAgMTFBRjtDREQ0OzExMEUgMTE3MCAxMUFGOworQ0RENTtDREQ1OzExMEUgMTE3MCAxMUIwO0NERDU7MTEwRSAxMTcwIDExQjA7CitDREQ2O0NERDY7MTEwRSAxMTcwIDExQjE7Q0RENjsxMTBFIDExNzAgMTFCMTsKK0NERDc7Q0RENzsxMTBFIDExNzAgMTFCMjtDREQ3OzExMEUgMTE3MCAxMUIyOworQ0REODtDREQ4OzExMEUgMTE3MCAxMUIzO0NERDg7MTEwRSAxMTcwIDExQjM7CitDREQ5O0NERDk7MTEwRSAxMTcwIDExQjQ7Q0REOTsxMTBFIDExNzAgMTFCNDsKK0NEREE7Q0REQTsxMTBFIDExNzAgMTFCNTtDRERBOzExMEUgMTE3MCAxMUI1OworQ0REQjtDRERCOzExMEUgMTE3MCAxMUI2O0NEREI7MTEwRSAxMTcwIDExQjY7CitDRERDO0NEREM7MTEwRSAxMTcwIDExQjc7Q0REQzsxMTBFIDExNzAgMTFCNzsKK0NEREQ7Q0RERDsxMTBFIDExNzAgMTFCODtDREREOzExMEUgMTE3MCAxMUI4OworQ0RERTtDRERFOzExMEUgMTE3MCAxMUI5O0NEREU7MTEwRSAxMTcwIDExQjk7CitDRERGO0NEREY7MTEwRSAxMTcwIDExQkE7Q0RERjsxMTBFIDExNzAgMTFCQTsKK0NERTA7Q0RFMDsxMTBFIDExNzAgMTFCQjtDREUwOzExMEUgMTE3MCAxMUJCOworQ0RFMTtDREUxOzExMEUgMTE3MCAxMUJDO0NERTE7MTEwRSAxMTcwIDExQkM7CitDREUyO0NERTI7MTEwRSAxMTcwIDExQkQ7Q0RFMjsxMTBFIDExNzAgMTFCRDsKK0NERTM7Q0RFMzsxMTBFIDExNzAgMTFCRTtDREUzOzExMEUgMTE3MCAxMUJFOworQ0RFNDtDREU0OzExMEUgMTE3MCAxMUJGO0NERTQ7MTEwRSAxMTcwIDExQkY7CitDREU1O0NERTU7MTEwRSAxMTcwIDExQzA7Q0RFNTsxMTBFIDExNzAgMTFDMDsKK0NERTY7Q0RFNjsxMTBFIDExNzAgMTFDMTtDREU2OzExMEUgMTE3MCAxMUMxOworQ0RFNztDREU3OzExMEUgMTE3MCAxMUMyO0NERTc7MTEwRSAxMTcwIDExQzI7CitDREU4O0NERTg7MTEwRSAxMTcxO0NERTg7MTEwRSAxMTcxOworQ0RFOTtDREU5OzExMEUgMTE3MSAxMUE4O0NERTk7MTEwRSAxMTcxIDExQTg7CitDREVBO0NERUE7MTEwRSAxMTcxIDExQTk7Q0RFQTsxMTBFIDExNzEgMTFBOTsKK0NERUI7Q0RFQjsxMTBFIDExNzEgMTFBQTtDREVCOzExMEUgMTE3MSAxMUFBOworQ0RFQztDREVDOzExMEUgMTE3MSAxMUFCO0NERUM7MTEwRSAxMTcxIDExQUI7CitDREVEO0NERUQ7MTEwRSAxMTcxIDExQUM7Q0RFRDsxMTBFIDExNzEgMTFBQzsKK0NERUU7Q0RFRTsxMTBFIDExNzEgMTFBRDtDREVFOzExMEUgMTE3MSAxMUFEOworQ0RFRjtDREVGOzExMEUgMTE3MSAxMUFFO0NERUY7MTEwRSAxMTcxIDExQUU7CitDREYwO0NERjA7MTEwRSAxMTcxIDExQUY7Q0RGMDsxMTBFIDExNzEgMTFBRjsKK0NERjE7Q0RGMTsxMTBFIDExNzEgMTFCMDtDREYxOzExMEUgMTE3MSAxMUIwOworQ0RGMjtDREYyOzExMEUgMTE3MSAxMUIxO0NERjI7MTEwRSAxMTcxIDExQjE7CitDREYzO0NERjM7MTEwRSAxMTcxIDExQjI7Q0RGMzsxMTBFIDExNzEgMTFCMjsKK0NERjQ7Q0RGNDsxMTBFIDExNzEgMTFCMztDREY0OzExMEUgMTE3MSAxMUIzOworQ0RGNTtDREY1OzExMEUgMTE3MSAxMUI0O0NERjU7MTEwRSAxMTcxIDExQjQ7CitDREY2O0NERjY7MTEwRSAxMTcxIDExQjU7Q0RGNjsxMTBFIDExNzEgMTFCNTsKK0NERjc7Q0RGNzsxMTBFIDExNzEgMTFCNjtDREY3OzExMEUgMTE3MSAxMUI2OworQ0RGODtDREY4OzExMEUgMTE3MSAxMUI3O0NERjg7MTEwRSAxMTcxIDExQjc7CitDREY5O0NERjk7MTEwRSAxMTcxIDExQjg7Q0RGOTsxMTBFIDExNzEgMTFCODsKK0NERkE7Q0RGQTsxMTBFIDExNzEgMTFCOTtDREZBOzExMEUgMTE3MSAxMUI5OworQ0RGQjtDREZCOzExMEUgMTE3MSAxMUJBO0NERkI7MTEwRSAxMTcxIDExQkE7CitDREZDO0NERkM7MTEwRSAxMTcxIDExQkI7Q0RGQzsxMTBFIDExNzEgMTFCQjsKK0NERkQ7Q0RGRDsxMTBFIDExNzEgMTFCQztDREZEOzExMEUgMTE3MSAxMUJDOworQ0RGRTtDREZFOzExMEUgMTE3MSAxMUJEO0NERkU7MTEwRSAxMTcxIDExQkQ7CitDREZGO0NERkY7MTEwRSAxMTcxIDExQkU7Q0RGRjsxMTBFIDExNzEgMTFCRTsKK0NFMDA7Q0UwMDsxMTBFIDExNzEgMTFCRjtDRTAwOzExMEUgMTE3MSAxMUJGOworQ0UwMTtDRTAxOzExMEUgMTE3MSAxMUMwO0NFMDE7MTEwRSAxMTcxIDExQzA7CitDRTAyO0NFMDI7MTEwRSAxMTcxIDExQzE7Q0UwMjsxMTBFIDExNzEgMTFDMTsKK0NFMDM7Q0UwMzsxMTBFIDExNzEgMTFDMjtDRTAzOzExMEUgMTE3MSAxMUMyOworQ0UwNDtDRTA0OzExMEUgMTE3MjtDRTA0OzExMEUgMTE3MjsKK0NFMDU7Q0UwNTsxMTBFIDExNzIgMTFBODtDRTA1OzExMEUgMTE3MiAxMUE4OworQ0UwNjtDRTA2OzExMEUgMTE3MiAxMUE5O0NFMDY7MTEwRSAxMTcyIDExQTk7CitDRTA3O0NFMDc7MTEwRSAxMTcyIDExQUE7Q0UwNzsxMTBFIDExNzIgMTFBQTsKK0NFMDg7Q0UwODsxMTBFIDExNzIgMTFBQjtDRTA4OzExMEUgMTE3MiAxMUFCOworQ0UwOTtDRTA5OzExMEUgMTE3MiAxMUFDO0NFMDk7MTEwRSAxMTcyIDExQUM7CitDRTBBO0NFMEE7MTEwRSAxMTcyIDExQUQ7Q0UwQTsxMTBFIDExNzIgMTFBRDsKK0NFMEI7Q0UwQjsxMTBFIDExNzIgMTFBRTtDRTBCOzExMEUgMTE3MiAxMUFFOworQ0UwQztDRTBDOzExMEUgMTE3MiAxMUFGO0NFMEM7MTEwRSAxMTcyIDExQUY7CitDRTBEO0NFMEQ7MTEwRSAxMTcyIDExQjA7Q0UwRDsxMTBFIDExNzIgMTFCMDsKK0NFMEU7Q0UwRTsxMTBFIDExNzIgMTFCMTtDRTBFOzExMEUgMTE3MiAxMUIxOworQ0UwRjtDRTBGOzExMEUgMTE3MiAxMUIyO0NFMEY7MTEwRSAxMTcyIDExQjI7CitDRTEwO0NFMTA7MTEwRSAxMTcyIDExQjM7Q0UxMDsxMTBFIDExNzIgMTFCMzsKK0NFMTE7Q0UxMTsxMTBFIDExNzIgMTFCNDtDRTExOzExMEUgMTE3MiAxMUI0OworQ0UxMjtDRTEyOzExMEUgMTE3MiAxMUI1O0NFMTI7MTEwRSAxMTcyIDExQjU7CitDRTEzO0NFMTM7MTEwRSAxMTcyIDExQjY7Q0UxMzsxMTBFIDExNzIgMTFCNjsKK0NFMTQ7Q0UxNDsxMTBFIDExNzIgMTFCNztDRTE0OzExMEUgMTE3MiAxMUI3OworQ0UxNTtDRTE1OzExMEUgMTE3MiAxMUI4O0NFMTU7MTEwRSAxMTcyIDExQjg7CitDRTE2O0NFMTY7MTEwRSAxMTcyIDExQjk7Q0UxNjsxMTBFIDExNzIgMTFCOTsKK0NFMTc7Q0UxNzsxMTBFIDExNzIgMTFCQTtDRTE3OzExMEUgMTE3MiAxMUJBOworQ0UxODtDRTE4OzExMEUgMTE3MiAxMUJCO0NFMTg7MTEwRSAxMTcyIDExQkI7CitDRTE5O0NFMTk7MTEwRSAxMTcyIDExQkM7Q0UxOTsxMTBFIDExNzIgMTFCQzsKK0NFMUE7Q0UxQTsxMTBFIDExNzIgMTFCRDtDRTFBOzExMEUgMTE3MiAxMUJEOworQ0UxQjtDRTFCOzExMEUgMTE3MiAxMUJFO0NFMUI7MTEwRSAxMTcyIDExQkU7CitDRTFDO0NFMUM7MTEwRSAxMTcyIDExQkY7Q0UxQzsxMTBFIDExNzIgMTFCRjsKK0NFMUQ7Q0UxRDsxMTBFIDExNzIgMTFDMDtDRTFEOzExMEUgMTE3MiAxMUMwOworQ0UxRTtDRTFFOzExMEUgMTE3MiAxMUMxO0NFMUU7MTEwRSAxMTcyIDExQzE7CitDRTFGO0NFMUY7MTEwRSAxMTcyIDExQzI7Q0UxRjsxMTBFIDExNzIgMTFDMjsKK0NFMjA7Q0UyMDsxMTBFIDExNzM7Q0UyMDsxMTBFIDExNzM7CitDRTIxO0NFMjE7MTEwRSAxMTczIDExQTg7Q0UyMTsxMTBFIDExNzMgMTFBODsKK0NFMjI7Q0UyMjsxMTBFIDExNzMgMTFBOTtDRTIyOzExMEUgMTE3MyAxMUE5OworQ0UyMztDRTIzOzExMEUgMTE3MyAxMUFBO0NFMjM7MTEwRSAxMTczIDExQUE7CitDRTI0O0NFMjQ7MTEwRSAxMTczIDExQUI7Q0UyNDsxMTBFIDExNzMgMTFBQjsKK0NFMjU7Q0UyNTsxMTBFIDExNzMgMTFBQztDRTI1OzExMEUgMTE3MyAxMUFDOworQ0UyNjtDRTI2OzExMEUgMTE3MyAxMUFEO0NFMjY7MTEwRSAxMTczIDExQUQ7CitDRTI3O0NFMjc7MTEwRSAxMTczIDExQUU7Q0UyNzsxMTBFIDExNzMgMTFBRTsKK0NFMjg7Q0UyODsxMTBFIDExNzMgMTFBRjtDRTI4OzExMEUgMTE3MyAxMUFGOworQ0UyOTtDRTI5OzExMEUgMTE3MyAxMUIwO0NFMjk7MTEwRSAxMTczIDExQjA7CitDRTJBO0NFMkE7MTEwRSAxMTczIDExQjE7Q0UyQTsxMTBFIDExNzMgMTFCMTsKK0NFMkI7Q0UyQjsxMTBFIDExNzMgMTFCMjtDRTJCOzExMEUgMTE3MyAxMUIyOworQ0UyQztDRTJDOzExMEUgMTE3MyAxMUIzO0NFMkM7MTEwRSAxMTczIDExQjM7CitDRTJEO0NFMkQ7MTEwRSAxMTczIDExQjQ7Q0UyRDsxMTBFIDExNzMgMTFCNDsKK0NFMkU7Q0UyRTsxMTBFIDExNzMgMTFCNTtDRTJFOzExMEUgMTE3MyAxMUI1OworQ0UyRjtDRTJGOzExMEUgMTE3MyAxMUI2O0NFMkY7MTEwRSAxMTczIDExQjY7CitDRTMwO0NFMzA7MTEwRSAxMTczIDExQjc7Q0UzMDsxMTBFIDExNzMgMTFCNzsKK0NFMzE7Q0UzMTsxMTBFIDExNzMgMTFCODtDRTMxOzExMEUgMTE3MyAxMUI4OworQ0UzMjtDRTMyOzExMEUgMTE3MyAxMUI5O0NFMzI7MTEwRSAxMTczIDExQjk7CitDRTMzO0NFMzM7MTEwRSAxMTczIDExQkE7Q0UzMzsxMTBFIDExNzMgMTFCQTsKK0NFMzQ7Q0UzNDsxMTBFIDExNzMgMTFCQjtDRTM0OzExMEUgMTE3MyAxMUJCOworQ0UzNTtDRTM1OzExMEUgMTE3MyAxMUJDO0NFMzU7MTEwRSAxMTczIDExQkM7CitDRTM2O0NFMzY7MTEwRSAxMTczIDExQkQ7Q0UzNjsxMTBFIDExNzMgMTFCRDsKK0NFMzc7Q0UzNzsxMTBFIDExNzMgMTFCRTtDRTM3OzExMEUgMTE3MyAxMUJFOworQ0UzODtDRTM4OzExMEUgMTE3MyAxMUJGO0NFMzg7MTEwRSAxMTczIDExQkY7CitDRTM5O0NFMzk7MTEwRSAxMTczIDExQzA7Q0UzOTsxMTBFIDExNzMgMTFDMDsKK0NFM0E7Q0UzQTsxMTBFIDExNzMgMTFDMTtDRTNBOzExMEUgMTE3MyAxMUMxOworQ0UzQjtDRTNCOzExMEUgMTE3MyAxMUMyO0NFM0I7MTEwRSAxMTczIDExQzI7CitDRTNDO0NFM0M7MTEwRSAxMTc0O0NFM0M7MTEwRSAxMTc0OworQ0UzRDtDRTNEOzExMEUgMTE3NCAxMUE4O0NFM0Q7MTEwRSAxMTc0IDExQTg7CitDRTNFO0NFM0U7MTEwRSAxMTc0IDExQTk7Q0UzRTsxMTBFIDExNzQgMTFBOTsKK0NFM0Y7Q0UzRjsxMTBFIDExNzQgMTFBQTtDRTNGOzExMEUgMTE3NCAxMUFBOworQ0U0MDtDRTQwOzExMEUgMTE3NCAxMUFCO0NFNDA7MTEwRSAxMTc0IDExQUI7CitDRTQxO0NFNDE7MTEwRSAxMTc0IDExQUM7Q0U0MTsxMTBFIDExNzQgMTFBQzsKK0NFNDI7Q0U0MjsxMTBFIDExNzQgMTFBRDtDRTQyOzExMEUgMTE3NCAxMUFEOworQ0U0MztDRTQzOzExMEUgMTE3NCAxMUFFO0NFNDM7MTEwRSAxMTc0IDExQUU7CitDRTQ0O0NFNDQ7MTEwRSAxMTc0IDExQUY7Q0U0NDsxMTBFIDExNzQgMTFBRjsKK0NFNDU7Q0U0NTsxMTBFIDExNzQgMTFCMDtDRTQ1OzExMEUgMTE3NCAxMUIwOworQ0U0NjtDRTQ2OzExMEUgMTE3NCAxMUIxO0NFNDY7MTEwRSAxMTc0IDExQjE7CitDRTQ3O0NFNDc7MTEwRSAxMTc0IDExQjI7Q0U0NzsxMTBFIDExNzQgMTFCMjsKK0NFNDg7Q0U0ODsxMTBFIDExNzQgMTFCMztDRTQ4OzExMEUgMTE3NCAxMUIzOworQ0U0OTtDRTQ5OzExMEUgMTE3NCAxMUI0O0NFNDk7MTEwRSAxMTc0IDExQjQ7CitDRTRBO0NFNEE7MTEwRSAxMTc0IDExQjU7Q0U0QTsxMTBFIDExNzQgMTFCNTsKK0NFNEI7Q0U0QjsxMTBFIDExNzQgMTFCNjtDRTRCOzExMEUgMTE3NCAxMUI2OworQ0U0QztDRTRDOzExMEUgMTE3NCAxMUI3O0NFNEM7MTEwRSAxMTc0IDExQjc7CitDRTREO0NFNEQ7MTEwRSAxMTc0IDExQjg7Q0U0RDsxMTBFIDExNzQgMTFCODsKK0NFNEU7Q0U0RTsxMTBFIDExNzQgMTFCOTtDRTRFOzExMEUgMTE3NCAxMUI5OworQ0U0RjtDRTRGOzExMEUgMTE3NCAxMUJBO0NFNEY7MTEwRSAxMTc0IDExQkE7CitDRTUwO0NFNTA7MTEwRSAxMTc0IDExQkI7Q0U1MDsxMTBFIDExNzQgMTFCQjsKK0NFNTE7Q0U1MTsxMTBFIDExNzQgMTFCQztDRTUxOzExMEUgMTE3NCAxMUJDOworQ0U1MjtDRTUyOzExMEUgMTE3NCAxMUJEO0NFNTI7MTEwRSAxMTc0IDExQkQ7CitDRTUzO0NFNTM7MTEwRSAxMTc0IDExQkU7Q0U1MzsxMTBFIDExNzQgMTFCRTsKK0NFNTQ7Q0U1NDsxMTBFIDExNzQgMTFCRjtDRTU0OzExMEUgMTE3NCAxMUJGOworQ0U1NTtDRTU1OzExMEUgMTE3NCAxMUMwO0NFNTU7MTEwRSAxMTc0IDExQzA7CitDRTU2O0NFNTY7MTEwRSAxMTc0IDExQzE7Q0U1NjsxMTBFIDExNzQgMTFDMTsKK0NFNTc7Q0U1NzsxMTBFIDExNzQgMTFDMjtDRTU3OzExMEUgMTE3NCAxMUMyOworQ0U1ODtDRTU4OzExMEUgMTE3NTtDRTU4OzExMEUgMTE3NTsKK0NFNTk7Q0U1OTsxMTBFIDExNzUgMTFBODtDRTU5OzExMEUgMTE3NSAxMUE4OworQ0U1QTtDRTVBOzExMEUgMTE3NSAxMUE5O0NFNUE7MTEwRSAxMTc1IDExQTk7CitDRTVCO0NFNUI7MTEwRSAxMTc1IDExQUE7Q0U1QjsxMTBFIDExNzUgMTFBQTsKK0NFNUM7Q0U1QzsxMTBFIDExNzUgMTFBQjtDRTVDOzExMEUgMTE3NSAxMUFCOworQ0U1RDtDRTVEOzExMEUgMTE3NSAxMUFDO0NFNUQ7MTEwRSAxMTc1IDExQUM7CitDRTVFO0NFNUU7MTEwRSAxMTc1IDExQUQ7Q0U1RTsxMTBFIDExNzUgMTFBRDsKK0NFNUY7Q0U1RjsxMTBFIDExNzUgMTFBRTtDRTVGOzExMEUgMTE3NSAxMUFFOworQ0U2MDtDRTYwOzExMEUgMTE3NSAxMUFGO0NFNjA7MTEwRSAxMTc1IDExQUY7CitDRTYxO0NFNjE7MTEwRSAxMTc1IDExQjA7Q0U2MTsxMTBFIDExNzUgMTFCMDsKK0NFNjI7Q0U2MjsxMTBFIDExNzUgMTFCMTtDRTYyOzExMEUgMTE3NSAxMUIxOworQ0U2MztDRTYzOzExMEUgMTE3NSAxMUIyO0NFNjM7MTEwRSAxMTc1IDExQjI7CitDRTY0O0NFNjQ7MTEwRSAxMTc1IDExQjM7Q0U2NDsxMTBFIDExNzUgMTFCMzsKK0NFNjU7Q0U2NTsxMTBFIDExNzUgMTFCNDtDRTY1OzExMEUgMTE3NSAxMUI0OworQ0U2NjtDRTY2OzExMEUgMTE3NSAxMUI1O0NFNjY7MTEwRSAxMTc1IDExQjU7CitDRTY3O0NFNjc7MTEwRSAxMTc1IDExQjY7Q0U2NzsxMTBFIDExNzUgMTFCNjsKK0NFNjg7Q0U2ODsxMTBFIDExNzUgMTFCNztDRTY4OzExMEUgMTE3NSAxMUI3OworQ0U2OTtDRTY5OzExMEUgMTE3NSAxMUI4O0NFNjk7MTEwRSAxMTc1IDExQjg7CitDRTZBO0NFNkE7MTEwRSAxMTc1IDExQjk7Q0U2QTsxMTBFIDExNzUgMTFCOTsKK0NFNkI7Q0U2QjsxMTBFIDExNzUgMTFCQTtDRTZCOzExMEUgMTE3NSAxMUJBOworQ0U2QztDRTZDOzExMEUgMTE3NSAxMUJCO0NFNkM7MTEwRSAxMTc1IDExQkI7CitDRTZEO0NFNkQ7MTEwRSAxMTc1IDExQkM7Q0U2RDsxMTBFIDExNzUgMTFCQzsKK0NFNkU7Q0U2RTsxMTBFIDExNzUgMTFCRDtDRTZFOzExMEUgMTE3NSAxMUJEOworQ0U2RjtDRTZGOzExMEUgMTE3NSAxMUJFO0NFNkY7MTEwRSAxMTc1IDExQkU7CitDRTcwO0NFNzA7MTEwRSAxMTc1IDExQkY7Q0U3MDsxMTBFIDExNzUgMTFCRjsKK0NFNzE7Q0U3MTsxMTBFIDExNzUgMTFDMDtDRTcxOzExMEUgMTE3NSAxMUMwOworQ0U3MjtDRTcyOzExMEUgMTE3NSAxMUMxO0NFNzI7MTEwRSAxMTc1IDExQzE7CitDRTczO0NFNzM7MTEwRSAxMTc1IDExQzI7Q0U3MzsxMTBFIDExNzUgMTFDMjsKK0NFNzQ7Q0U3NDsxMTBGIDExNjE7Q0U3NDsxMTBGIDExNjE7CitDRTc1O0NFNzU7MTEwRiAxMTYxIDExQTg7Q0U3NTsxMTBGIDExNjEgMTFBODsKK0NFNzY7Q0U3NjsxMTBGIDExNjEgMTFBOTtDRTc2OzExMEYgMTE2MSAxMUE5OworQ0U3NztDRTc3OzExMEYgMTE2MSAxMUFBO0NFNzc7MTEwRiAxMTYxIDExQUE7CitDRTc4O0NFNzg7MTEwRiAxMTYxIDExQUI7Q0U3ODsxMTBGIDExNjEgMTFBQjsKK0NFNzk7Q0U3OTsxMTBGIDExNjEgMTFBQztDRTc5OzExMEYgMTE2MSAxMUFDOworQ0U3QTtDRTdBOzExMEYgMTE2MSAxMUFEO0NFN0E7MTEwRiAxMTYxIDExQUQ7CitDRTdCO0NFN0I7MTEwRiAxMTYxIDExQUU7Q0U3QjsxMTBGIDExNjEgMTFBRTsKK0NFN0M7Q0U3QzsxMTBGIDExNjEgMTFBRjtDRTdDOzExMEYgMTE2MSAxMUFGOworQ0U3RDtDRTdEOzExMEYgMTE2MSAxMUIwO0NFN0Q7MTEwRiAxMTYxIDExQjA7CitDRTdFO0NFN0U7MTEwRiAxMTYxIDExQjE7Q0U3RTsxMTBGIDExNjEgMTFCMTsKK0NFN0Y7Q0U3RjsxMTBGIDExNjEgMTFCMjtDRTdGOzExMEYgMTE2MSAxMUIyOworQ0U4MDtDRTgwOzExMEYgMTE2MSAxMUIzO0NFODA7MTEwRiAxMTYxIDExQjM7CitDRTgxO0NFODE7MTEwRiAxMTYxIDExQjQ7Q0U4MTsxMTBGIDExNjEgMTFCNDsKK0NFODI7Q0U4MjsxMTBGIDExNjEgMTFCNTtDRTgyOzExMEYgMTE2MSAxMUI1OworQ0U4MztDRTgzOzExMEYgMTE2MSAxMUI2O0NFODM7MTEwRiAxMTYxIDExQjY7CitDRTg0O0NFODQ7MTEwRiAxMTYxIDExQjc7Q0U4NDsxMTBGIDExNjEgMTFCNzsKK0NFODU7Q0U4NTsxMTBGIDExNjEgMTFCODtDRTg1OzExMEYgMTE2MSAxMUI4OworQ0U4NjtDRTg2OzExMEYgMTE2MSAxMUI5O0NFODY7MTEwRiAxMTYxIDExQjk7CitDRTg3O0NFODc7MTEwRiAxMTYxIDExQkE7Q0U4NzsxMTBGIDExNjEgMTFCQTsKK0NFODg7Q0U4ODsxMTBGIDExNjEgMTFCQjtDRTg4OzExMEYgMTE2MSAxMUJCOworQ0U4OTtDRTg5OzExMEYgMTE2MSAxMUJDO0NFODk7MTEwRiAxMTYxIDExQkM7CitDRThBO0NFOEE7MTEwRiAxMTYxIDExQkQ7Q0U4QTsxMTBGIDExNjEgMTFCRDsKK0NFOEI7Q0U4QjsxMTBGIDExNjEgMTFCRTtDRThCOzExMEYgMTE2MSAxMUJFOworQ0U4QztDRThDOzExMEYgMTE2MSAxMUJGO0NFOEM7MTEwRiAxMTYxIDExQkY7CitDRThEO0NFOEQ7MTEwRiAxMTYxIDExQzA7Q0U4RDsxMTBGIDExNjEgMTFDMDsKK0NFOEU7Q0U4RTsxMTBGIDExNjEgMTFDMTtDRThFOzExMEYgMTE2MSAxMUMxOworQ0U4RjtDRThGOzExMEYgMTE2MSAxMUMyO0NFOEY7MTEwRiAxMTYxIDExQzI7CitDRTkwO0NFOTA7MTEwRiAxMTYyO0NFOTA7MTEwRiAxMTYyOworQ0U5MTtDRTkxOzExMEYgMTE2MiAxMUE4O0NFOTE7MTEwRiAxMTYyIDExQTg7CitDRTkyO0NFOTI7MTEwRiAxMTYyIDExQTk7Q0U5MjsxMTBGIDExNjIgMTFBOTsKK0NFOTM7Q0U5MzsxMTBGIDExNjIgMTFBQTtDRTkzOzExMEYgMTE2MiAxMUFBOworQ0U5NDtDRTk0OzExMEYgMTE2MiAxMUFCO0NFOTQ7MTEwRiAxMTYyIDExQUI7CitDRTk1O0NFOTU7MTEwRiAxMTYyIDExQUM7Q0U5NTsxMTBGIDExNjIgMTFBQzsKK0NFOTY7Q0U5NjsxMTBGIDExNjIgMTFBRDtDRTk2OzExMEYgMTE2MiAxMUFEOworQ0U5NztDRTk3OzExMEYgMTE2MiAxMUFFO0NFOTc7MTEwRiAxMTYyIDExQUU7CitDRTk4O0NFOTg7MTEwRiAxMTYyIDExQUY7Q0U5ODsxMTBGIDExNjIgMTFBRjsKK0NFOTk7Q0U5OTsxMTBGIDExNjIgMTFCMDtDRTk5OzExMEYgMTE2MiAxMUIwOworQ0U5QTtDRTlBOzExMEYgMTE2MiAxMUIxO0NFOUE7MTEwRiAxMTYyIDExQjE7CitDRTlCO0NFOUI7MTEwRiAxMTYyIDExQjI7Q0U5QjsxMTBGIDExNjIgMTFCMjsKK0NFOUM7Q0U5QzsxMTBGIDExNjIgMTFCMztDRTlDOzExMEYgMTE2MiAxMUIzOworQ0U5RDtDRTlEOzExMEYgMTE2MiAxMUI0O0NFOUQ7MTEwRiAxMTYyIDExQjQ7CitDRTlFO0NFOUU7MTEwRiAxMTYyIDExQjU7Q0U5RTsxMTBGIDExNjIgMTFCNTsKK0NFOUY7Q0U5RjsxMTBGIDExNjIgMTFCNjtDRTlGOzExMEYgMTE2MiAxMUI2OworQ0VBMDtDRUEwOzExMEYgMTE2MiAxMUI3O0NFQTA7MTEwRiAxMTYyIDExQjc7CitDRUExO0NFQTE7MTEwRiAxMTYyIDExQjg7Q0VBMTsxMTBGIDExNjIgMTFCODsKK0NFQTI7Q0VBMjsxMTBGIDExNjIgMTFCOTtDRUEyOzExMEYgMTE2MiAxMUI5OworQ0VBMztDRUEzOzExMEYgMTE2MiAxMUJBO0NFQTM7MTEwRiAxMTYyIDExQkE7CitDRUE0O0NFQTQ7MTEwRiAxMTYyIDExQkI7Q0VBNDsxMTBGIDExNjIgMTFCQjsKK0NFQTU7Q0VBNTsxMTBGIDExNjIgMTFCQztDRUE1OzExMEYgMTE2MiAxMUJDOworQ0VBNjtDRUE2OzExMEYgMTE2MiAxMUJEO0NFQTY7MTEwRiAxMTYyIDExQkQ7CitDRUE3O0NFQTc7MTEwRiAxMTYyIDExQkU7Q0VBNzsxMTBGIDExNjIgMTFCRTsKK0NFQTg7Q0VBODsxMTBGIDExNjIgMTFCRjtDRUE4OzExMEYgMTE2MiAxMUJGOworQ0VBOTtDRUE5OzExMEYgMTE2MiAxMUMwO0NFQTk7MTEwRiAxMTYyIDExQzA7CitDRUFBO0NFQUE7MTEwRiAxMTYyIDExQzE7Q0VBQTsxMTBGIDExNjIgMTFDMTsKK0NFQUI7Q0VBQjsxMTBGIDExNjIgMTFDMjtDRUFCOzExMEYgMTE2MiAxMUMyOworQ0VBQztDRUFDOzExMEYgMTE2MztDRUFDOzExMEYgMTE2MzsKK0NFQUQ7Q0VBRDsxMTBGIDExNjMgMTFBODtDRUFEOzExMEYgMTE2MyAxMUE4OworQ0VBRTtDRUFFOzExMEYgMTE2MyAxMUE5O0NFQUU7MTEwRiAxMTYzIDExQTk7CitDRUFGO0NFQUY7MTEwRiAxMTYzIDExQUE7Q0VBRjsxMTBGIDExNjMgMTFBQTsKK0NFQjA7Q0VCMDsxMTBGIDExNjMgMTFBQjtDRUIwOzExMEYgMTE2MyAxMUFCOworQ0VCMTtDRUIxOzExMEYgMTE2MyAxMUFDO0NFQjE7MTEwRiAxMTYzIDExQUM7CitDRUIyO0NFQjI7MTEwRiAxMTYzIDExQUQ7Q0VCMjsxMTBGIDExNjMgMTFBRDsKK0NFQjM7Q0VCMzsxMTBGIDExNjMgMTFBRTtDRUIzOzExMEYgMTE2MyAxMUFFOworQ0VCNDtDRUI0OzExMEYgMTE2MyAxMUFGO0NFQjQ7MTEwRiAxMTYzIDExQUY7CitDRUI1O0NFQjU7MTEwRiAxMTYzIDExQjA7Q0VCNTsxMTBGIDExNjMgMTFCMDsKK0NFQjY7Q0VCNjsxMTBGIDExNjMgMTFCMTtDRUI2OzExMEYgMTE2MyAxMUIxOworQ0VCNztDRUI3OzExMEYgMTE2MyAxMUIyO0NFQjc7MTEwRiAxMTYzIDExQjI7CitDRUI4O0NFQjg7MTEwRiAxMTYzIDExQjM7Q0VCODsxMTBGIDExNjMgMTFCMzsKK0NFQjk7Q0VCOTsxMTBGIDExNjMgMTFCNDtDRUI5OzExMEYgMTE2MyAxMUI0OworQ0VCQTtDRUJBOzExMEYgMTE2MyAxMUI1O0NFQkE7MTEwRiAxMTYzIDExQjU7CitDRUJCO0NFQkI7MTEwRiAxMTYzIDExQjY7Q0VCQjsxMTBGIDExNjMgMTFCNjsKK0NFQkM7Q0VCQzsxMTBGIDExNjMgMTFCNztDRUJDOzExMEYgMTE2MyAxMUI3OworQ0VCRDtDRUJEOzExMEYgMTE2MyAxMUI4O0NFQkQ7MTEwRiAxMTYzIDExQjg7CitDRUJFO0NFQkU7MTEwRiAxMTYzIDExQjk7Q0VCRTsxMTBGIDExNjMgMTFCOTsKK0NFQkY7Q0VCRjsxMTBGIDExNjMgMTFCQTtDRUJGOzExMEYgMTE2MyAxMUJBOworQ0VDMDtDRUMwOzExMEYgMTE2MyAxMUJCO0NFQzA7MTEwRiAxMTYzIDExQkI7CitDRUMxO0NFQzE7MTEwRiAxMTYzIDExQkM7Q0VDMTsxMTBGIDExNjMgMTFCQzsKK0NFQzI7Q0VDMjsxMTBGIDExNjMgMTFCRDtDRUMyOzExMEYgMTE2MyAxMUJEOworQ0VDMztDRUMzOzExMEYgMTE2MyAxMUJFO0NFQzM7MTEwRiAxMTYzIDExQkU7CitDRUM0O0NFQzQ7MTEwRiAxMTYzIDExQkY7Q0VDNDsxMTBGIDExNjMgMTFCRjsKK0NFQzU7Q0VDNTsxMTBGIDExNjMgMTFDMDtDRUM1OzExMEYgMTE2MyAxMUMwOworQ0VDNjtDRUM2OzExMEYgMTE2MyAxMUMxO0NFQzY7MTEwRiAxMTYzIDExQzE7CitDRUM3O0NFQzc7MTEwRiAxMTYzIDExQzI7Q0VDNzsxMTBGIDExNjMgMTFDMjsKK0NFQzg7Q0VDODsxMTBGIDExNjQ7Q0VDODsxMTBGIDExNjQ7CitDRUM5O0NFQzk7MTEwRiAxMTY0IDExQTg7Q0VDOTsxMTBGIDExNjQgMTFBODsKK0NFQ0E7Q0VDQTsxMTBGIDExNjQgMTFBOTtDRUNBOzExMEYgMTE2NCAxMUE5OworQ0VDQjtDRUNCOzExMEYgMTE2NCAxMUFBO0NFQ0I7MTEwRiAxMTY0IDExQUE7CitDRUNDO0NFQ0M7MTEwRiAxMTY0IDExQUI7Q0VDQzsxMTBGIDExNjQgMTFBQjsKK0NFQ0Q7Q0VDRDsxMTBGIDExNjQgMTFBQztDRUNEOzExMEYgMTE2NCAxMUFDOworQ0VDRTtDRUNFOzExMEYgMTE2NCAxMUFEO0NFQ0U7MTEwRiAxMTY0IDExQUQ7CitDRUNGO0NFQ0Y7MTEwRiAxMTY0IDExQUU7Q0VDRjsxMTBGIDExNjQgMTFBRTsKK0NFRDA7Q0VEMDsxMTBGIDExNjQgMTFBRjtDRUQwOzExMEYgMTE2NCAxMUFGOworQ0VEMTtDRUQxOzExMEYgMTE2NCAxMUIwO0NFRDE7MTEwRiAxMTY0IDExQjA7CitDRUQyO0NFRDI7MTEwRiAxMTY0IDExQjE7Q0VEMjsxMTBGIDExNjQgMTFCMTsKK0NFRDM7Q0VEMzsxMTBGIDExNjQgMTFCMjtDRUQzOzExMEYgMTE2NCAxMUIyOworQ0VENDtDRUQ0OzExMEYgMTE2NCAxMUIzO0NFRDQ7MTEwRiAxMTY0IDExQjM7CitDRUQ1O0NFRDU7MTEwRiAxMTY0IDExQjQ7Q0VENTsxMTBGIDExNjQgMTFCNDsKK0NFRDY7Q0VENjsxMTBGIDExNjQgMTFCNTtDRUQ2OzExMEYgMTE2NCAxMUI1OworQ0VENztDRUQ3OzExMEYgMTE2NCAxMUI2O0NFRDc7MTEwRiAxMTY0IDExQjY7CitDRUQ4O0NFRDg7MTEwRiAxMTY0IDExQjc7Q0VEODsxMTBGIDExNjQgMTFCNzsKK0NFRDk7Q0VEOTsxMTBGIDExNjQgMTFCODtDRUQ5OzExMEYgMTE2NCAxMUI4OworQ0VEQTtDRURBOzExMEYgMTE2NCAxMUI5O0NFREE7MTEwRiAxMTY0IDExQjk7CitDRURCO0NFREI7MTEwRiAxMTY0IDExQkE7Q0VEQjsxMTBGIDExNjQgMTFCQTsKK0NFREM7Q0VEQzsxMTBGIDExNjQgMTFCQjtDRURDOzExMEYgMTE2NCAxMUJCOworQ0VERDtDRUREOzExMEYgMTE2NCAxMUJDO0NFREQ7MTEwRiAxMTY0IDExQkM7CitDRURFO0NFREU7MTEwRiAxMTY0IDExQkQ7Q0VERTsxMTBGIDExNjQgMTFCRDsKK0NFREY7Q0VERjsxMTBGIDExNjQgMTFCRTtDRURGOzExMEYgMTE2NCAxMUJFOworQ0VFMDtDRUUwOzExMEYgMTE2NCAxMUJGO0NFRTA7MTEwRiAxMTY0IDExQkY7CitDRUUxO0NFRTE7MTEwRiAxMTY0IDExQzA7Q0VFMTsxMTBGIDExNjQgMTFDMDsKK0NFRTI7Q0VFMjsxMTBGIDExNjQgMTFDMTtDRUUyOzExMEYgMTE2NCAxMUMxOworQ0VFMztDRUUzOzExMEYgMTE2NCAxMUMyO0NFRTM7MTEwRiAxMTY0IDExQzI7CitDRUU0O0NFRTQ7MTEwRiAxMTY1O0NFRTQ7MTEwRiAxMTY1OworQ0VFNTtDRUU1OzExMEYgMTE2NSAxMUE4O0NFRTU7MTEwRiAxMTY1IDExQTg7CitDRUU2O0NFRTY7MTEwRiAxMTY1IDExQTk7Q0VFNjsxMTBGIDExNjUgMTFBOTsKK0NFRTc7Q0VFNzsxMTBGIDExNjUgMTFBQTtDRUU3OzExMEYgMTE2NSAxMUFBOworQ0VFODtDRUU4OzExMEYgMTE2NSAxMUFCO0NFRTg7MTEwRiAxMTY1IDExQUI7CitDRUU5O0NFRTk7MTEwRiAxMTY1IDExQUM7Q0VFOTsxMTBGIDExNjUgMTFBQzsKK0NFRUE7Q0VFQTsxMTBGIDExNjUgMTFBRDtDRUVBOzExMEYgMTE2NSAxMUFEOworQ0VFQjtDRUVCOzExMEYgMTE2NSAxMUFFO0NFRUI7MTEwRiAxMTY1IDExQUU7CitDRUVDO0NFRUM7MTEwRiAxMTY1IDExQUY7Q0VFQzsxMTBGIDExNjUgMTFBRjsKK0NFRUQ7Q0VFRDsxMTBGIDExNjUgMTFCMDtDRUVEOzExMEYgMTE2NSAxMUIwOworQ0VFRTtDRUVFOzExMEYgMTE2NSAxMUIxO0NFRUU7MTEwRiAxMTY1IDExQjE7CitDRUVGO0NFRUY7MTEwRiAxMTY1IDExQjI7Q0VFRjsxMTBGIDExNjUgMTFCMjsKK0NFRjA7Q0VGMDsxMTBGIDExNjUgMTFCMztDRUYwOzExMEYgMTE2NSAxMUIzOworQ0VGMTtDRUYxOzExMEYgMTE2NSAxMUI0O0NFRjE7MTEwRiAxMTY1IDExQjQ7CitDRUYyO0NFRjI7MTEwRiAxMTY1IDExQjU7Q0VGMjsxMTBGIDExNjUgMTFCNTsKK0NFRjM7Q0VGMzsxMTBGIDExNjUgMTFCNjtDRUYzOzExMEYgMTE2NSAxMUI2OworQ0VGNDtDRUY0OzExMEYgMTE2NSAxMUI3O0NFRjQ7MTEwRiAxMTY1IDExQjc7CitDRUY1O0NFRjU7MTEwRiAxMTY1IDExQjg7Q0VGNTsxMTBGIDExNjUgMTFCODsKK0NFRjY7Q0VGNjsxMTBGIDExNjUgMTFCOTtDRUY2OzExMEYgMTE2NSAxMUI5OworQ0VGNztDRUY3OzExMEYgMTE2NSAxMUJBO0NFRjc7MTEwRiAxMTY1IDExQkE7CitDRUY4O0NFRjg7MTEwRiAxMTY1IDExQkI7Q0VGODsxMTBGIDExNjUgMTFCQjsKK0NFRjk7Q0VGOTsxMTBGIDExNjUgMTFCQztDRUY5OzExMEYgMTE2NSAxMUJDOworQ0VGQTtDRUZBOzExMEYgMTE2NSAxMUJEO0NFRkE7MTEwRiAxMTY1IDExQkQ7CitDRUZCO0NFRkI7MTEwRiAxMTY1IDExQkU7Q0VGQjsxMTBGIDExNjUgMTFCRTsKK0NFRkM7Q0VGQzsxMTBGIDExNjUgMTFCRjtDRUZDOzExMEYgMTE2NSAxMUJGOworQ0VGRDtDRUZEOzExMEYgMTE2NSAxMUMwO0NFRkQ7MTEwRiAxMTY1IDExQzA7CitDRUZFO0NFRkU7MTEwRiAxMTY1IDExQzE7Q0VGRTsxMTBGIDExNjUgMTFDMTsKK0NFRkY7Q0VGRjsxMTBGIDExNjUgMTFDMjtDRUZGOzExMEYgMTE2NSAxMUMyOworQ0YwMDtDRjAwOzExMEYgMTE2NjtDRjAwOzExMEYgMTE2NjsKK0NGMDE7Q0YwMTsxMTBGIDExNjYgMTFBODtDRjAxOzExMEYgMTE2NiAxMUE4OworQ0YwMjtDRjAyOzExMEYgMTE2NiAxMUE5O0NGMDI7MTEwRiAxMTY2IDExQTk7CitDRjAzO0NGMDM7MTEwRiAxMTY2IDExQUE7Q0YwMzsxMTBGIDExNjYgMTFBQTsKK0NGMDQ7Q0YwNDsxMTBGIDExNjYgMTFBQjtDRjA0OzExMEYgMTE2NiAxMUFCOworQ0YwNTtDRjA1OzExMEYgMTE2NiAxMUFDO0NGMDU7MTEwRiAxMTY2IDExQUM7CitDRjA2O0NGMDY7MTEwRiAxMTY2IDExQUQ7Q0YwNjsxMTBGIDExNjYgMTFBRDsKK0NGMDc7Q0YwNzsxMTBGIDExNjYgMTFBRTtDRjA3OzExMEYgMTE2NiAxMUFFOworQ0YwODtDRjA4OzExMEYgMTE2NiAxMUFGO0NGMDg7MTEwRiAxMTY2IDExQUY7CitDRjA5O0NGMDk7MTEwRiAxMTY2IDExQjA7Q0YwOTsxMTBGIDExNjYgMTFCMDsKK0NGMEE7Q0YwQTsxMTBGIDExNjYgMTFCMTtDRjBBOzExMEYgMTE2NiAxMUIxOworQ0YwQjtDRjBCOzExMEYgMTE2NiAxMUIyO0NGMEI7MTEwRiAxMTY2IDExQjI7CitDRjBDO0NGMEM7MTEwRiAxMTY2IDExQjM7Q0YwQzsxMTBGIDExNjYgMTFCMzsKK0NGMEQ7Q0YwRDsxMTBGIDExNjYgMTFCNDtDRjBEOzExMEYgMTE2NiAxMUI0OworQ0YwRTtDRjBFOzExMEYgMTE2NiAxMUI1O0NGMEU7MTEwRiAxMTY2IDExQjU7CitDRjBGO0NGMEY7MTEwRiAxMTY2IDExQjY7Q0YwRjsxMTBGIDExNjYgMTFCNjsKK0NGMTA7Q0YxMDsxMTBGIDExNjYgMTFCNztDRjEwOzExMEYgMTE2NiAxMUI3OworQ0YxMTtDRjExOzExMEYgMTE2NiAxMUI4O0NGMTE7MTEwRiAxMTY2IDExQjg7CitDRjEyO0NGMTI7MTEwRiAxMTY2IDExQjk7Q0YxMjsxMTBGIDExNjYgMTFCOTsKK0NGMTM7Q0YxMzsxMTBGIDExNjYgMTFCQTtDRjEzOzExMEYgMTE2NiAxMUJBOworQ0YxNDtDRjE0OzExMEYgMTE2NiAxMUJCO0NGMTQ7MTEwRiAxMTY2IDExQkI7CitDRjE1O0NGMTU7MTEwRiAxMTY2IDExQkM7Q0YxNTsxMTBGIDExNjYgMTFCQzsKK0NGMTY7Q0YxNjsxMTBGIDExNjYgMTFCRDtDRjE2OzExMEYgMTE2NiAxMUJEOworQ0YxNztDRjE3OzExMEYgMTE2NiAxMUJFO0NGMTc7MTEwRiAxMTY2IDExQkU7CitDRjE4O0NGMTg7MTEwRiAxMTY2IDExQkY7Q0YxODsxMTBGIDExNjYgMTFCRjsKK0NGMTk7Q0YxOTsxMTBGIDExNjYgMTFDMDtDRjE5OzExMEYgMTE2NiAxMUMwOworQ0YxQTtDRjFBOzExMEYgMTE2NiAxMUMxO0NGMUE7MTEwRiAxMTY2IDExQzE7CitDRjFCO0NGMUI7MTEwRiAxMTY2IDExQzI7Q0YxQjsxMTBGIDExNjYgMTFDMjsKK0NGMUM7Q0YxQzsxMTBGIDExNjc7Q0YxQzsxMTBGIDExNjc7CitDRjFEO0NGMUQ7MTEwRiAxMTY3IDExQTg7Q0YxRDsxMTBGIDExNjcgMTFBODsKK0NGMUU7Q0YxRTsxMTBGIDExNjcgMTFBOTtDRjFFOzExMEYgMTE2NyAxMUE5OworQ0YxRjtDRjFGOzExMEYgMTE2NyAxMUFBO0NGMUY7MTEwRiAxMTY3IDExQUE7CitDRjIwO0NGMjA7MTEwRiAxMTY3IDExQUI7Q0YyMDsxMTBGIDExNjcgMTFBQjsKK0NGMjE7Q0YyMTsxMTBGIDExNjcgMTFBQztDRjIxOzExMEYgMTE2NyAxMUFDOworQ0YyMjtDRjIyOzExMEYgMTE2NyAxMUFEO0NGMjI7MTEwRiAxMTY3IDExQUQ7CitDRjIzO0NGMjM7MTEwRiAxMTY3IDExQUU7Q0YyMzsxMTBGIDExNjcgMTFBRTsKK0NGMjQ7Q0YyNDsxMTBGIDExNjcgMTFBRjtDRjI0OzExMEYgMTE2NyAxMUFGOworQ0YyNTtDRjI1OzExMEYgMTE2NyAxMUIwO0NGMjU7MTEwRiAxMTY3IDExQjA7CitDRjI2O0NGMjY7MTEwRiAxMTY3IDExQjE7Q0YyNjsxMTBGIDExNjcgMTFCMTsKK0NGMjc7Q0YyNzsxMTBGIDExNjcgMTFCMjtDRjI3OzExMEYgMTE2NyAxMUIyOworQ0YyODtDRjI4OzExMEYgMTE2NyAxMUIzO0NGMjg7MTEwRiAxMTY3IDExQjM7CitDRjI5O0NGMjk7MTEwRiAxMTY3IDExQjQ7Q0YyOTsxMTBGIDExNjcgMTFCNDsKK0NGMkE7Q0YyQTsxMTBGIDExNjcgMTFCNTtDRjJBOzExMEYgMTE2NyAxMUI1OworQ0YyQjtDRjJCOzExMEYgMTE2NyAxMUI2O0NGMkI7MTEwRiAxMTY3IDExQjY7CitDRjJDO0NGMkM7MTEwRiAxMTY3IDExQjc7Q0YyQzsxMTBGIDExNjcgMTFCNzsKK0NGMkQ7Q0YyRDsxMTBGIDExNjcgMTFCODtDRjJEOzExMEYgMTE2NyAxMUI4OworQ0YyRTtDRjJFOzExMEYgMTE2NyAxMUI5O0NGMkU7MTEwRiAxMTY3IDExQjk7CitDRjJGO0NGMkY7MTEwRiAxMTY3IDExQkE7Q0YyRjsxMTBGIDExNjcgMTFCQTsKK0NGMzA7Q0YzMDsxMTBGIDExNjcgMTFCQjtDRjMwOzExMEYgMTE2NyAxMUJCOworQ0YzMTtDRjMxOzExMEYgMTE2NyAxMUJDO0NGMzE7MTEwRiAxMTY3IDExQkM7CitDRjMyO0NGMzI7MTEwRiAxMTY3IDExQkQ7Q0YzMjsxMTBGIDExNjcgMTFCRDsKK0NGMzM7Q0YzMzsxMTBGIDExNjcgMTFCRTtDRjMzOzExMEYgMTE2NyAxMUJFOworQ0YzNDtDRjM0OzExMEYgMTE2NyAxMUJGO0NGMzQ7MTEwRiAxMTY3IDExQkY7CitDRjM1O0NGMzU7MTEwRiAxMTY3IDExQzA7Q0YzNTsxMTBGIDExNjcgMTFDMDsKK0NGMzY7Q0YzNjsxMTBGIDExNjcgMTFDMTtDRjM2OzExMEYgMTE2NyAxMUMxOworQ0YzNztDRjM3OzExMEYgMTE2NyAxMUMyO0NGMzc7MTEwRiAxMTY3IDExQzI7CitDRjM4O0NGMzg7MTEwRiAxMTY4O0NGMzg7MTEwRiAxMTY4OworQ0YzOTtDRjM5OzExMEYgMTE2OCAxMUE4O0NGMzk7MTEwRiAxMTY4IDExQTg7CitDRjNBO0NGM0E7MTEwRiAxMTY4IDExQTk7Q0YzQTsxMTBGIDExNjggMTFBOTsKK0NGM0I7Q0YzQjsxMTBGIDExNjggMTFBQTtDRjNCOzExMEYgMTE2OCAxMUFBOworQ0YzQztDRjNDOzExMEYgMTE2OCAxMUFCO0NGM0M7MTEwRiAxMTY4IDExQUI7CitDRjNEO0NGM0Q7MTEwRiAxMTY4IDExQUM7Q0YzRDsxMTBGIDExNjggMTFBQzsKK0NGM0U7Q0YzRTsxMTBGIDExNjggMTFBRDtDRjNFOzExMEYgMTE2OCAxMUFEOworQ0YzRjtDRjNGOzExMEYgMTE2OCAxMUFFO0NGM0Y7MTEwRiAxMTY4IDExQUU7CitDRjQwO0NGNDA7MTEwRiAxMTY4IDExQUY7Q0Y0MDsxMTBGIDExNjggMTFBRjsKK0NGNDE7Q0Y0MTsxMTBGIDExNjggMTFCMDtDRjQxOzExMEYgMTE2OCAxMUIwOworQ0Y0MjtDRjQyOzExMEYgMTE2OCAxMUIxO0NGNDI7MTEwRiAxMTY4IDExQjE7CitDRjQzO0NGNDM7MTEwRiAxMTY4IDExQjI7Q0Y0MzsxMTBGIDExNjggMTFCMjsKK0NGNDQ7Q0Y0NDsxMTBGIDExNjggMTFCMztDRjQ0OzExMEYgMTE2OCAxMUIzOworQ0Y0NTtDRjQ1OzExMEYgMTE2OCAxMUI0O0NGNDU7MTEwRiAxMTY4IDExQjQ7CitDRjQ2O0NGNDY7MTEwRiAxMTY4IDExQjU7Q0Y0NjsxMTBGIDExNjggMTFCNTsKK0NGNDc7Q0Y0NzsxMTBGIDExNjggMTFCNjtDRjQ3OzExMEYgMTE2OCAxMUI2OworQ0Y0ODtDRjQ4OzExMEYgMTE2OCAxMUI3O0NGNDg7MTEwRiAxMTY4IDExQjc7CitDRjQ5O0NGNDk7MTEwRiAxMTY4IDExQjg7Q0Y0OTsxMTBGIDExNjggMTFCODsKK0NGNEE7Q0Y0QTsxMTBGIDExNjggMTFCOTtDRjRBOzExMEYgMTE2OCAxMUI5OworQ0Y0QjtDRjRCOzExMEYgMTE2OCAxMUJBO0NGNEI7MTEwRiAxMTY4IDExQkE7CitDRjRDO0NGNEM7MTEwRiAxMTY4IDExQkI7Q0Y0QzsxMTBGIDExNjggMTFCQjsKK0NGNEQ7Q0Y0RDsxMTBGIDExNjggMTFCQztDRjREOzExMEYgMTE2OCAxMUJDOworQ0Y0RTtDRjRFOzExMEYgMTE2OCAxMUJEO0NGNEU7MTEwRiAxMTY4IDExQkQ7CitDRjRGO0NGNEY7MTEwRiAxMTY4IDExQkU7Q0Y0RjsxMTBGIDExNjggMTFCRTsKK0NGNTA7Q0Y1MDsxMTBGIDExNjggMTFCRjtDRjUwOzExMEYgMTE2OCAxMUJGOworQ0Y1MTtDRjUxOzExMEYgMTE2OCAxMUMwO0NGNTE7MTEwRiAxMTY4IDExQzA7CitDRjUyO0NGNTI7MTEwRiAxMTY4IDExQzE7Q0Y1MjsxMTBGIDExNjggMTFDMTsKK0NGNTM7Q0Y1MzsxMTBGIDExNjggMTFDMjtDRjUzOzExMEYgMTE2OCAxMUMyOworQ0Y1NDtDRjU0OzExMEYgMTE2OTtDRjU0OzExMEYgMTE2OTsKK0NGNTU7Q0Y1NTsxMTBGIDExNjkgMTFBODtDRjU1OzExMEYgMTE2OSAxMUE4OworQ0Y1NjtDRjU2OzExMEYgMTE2OSAxMUE5O0NGNTY7MTEwRiAxMTY5IDExQTk7CitDRjU3O0NGNTc7MTEwRiAxMTY5IDExQUE7Q0Y1NzsxMTBGIDExNjkgMTFBQTsKK0NGNTg7Q0Y1ODsxMTBGIDExNjkgMTFBQjtDRjU4OzExMEYgMTE2OSAxMUFCOworQ0Y1OTtDRjU5OzExMEYgMTE2OSAxMUFDO0NGNTk7MTEwRiAxMTY5IDExQUM7CitDRjVBO0NGNUE7MTEwRiAxMTY5IDExQUQ7Q0Y1QTsxMTBGIDExNjkgMTFBRDsKK0NGNUI7Q0Y1QjsxMTBGIDExNjkgMTFBRTtDRjVCOzExMEYgMTE2OSAxMUFFOworQ0Y1QztDRjVDOzExMEYgMTE2OSAxMUFGO0NGNUM7MTEwRiAxMTY5IDExQUY7CitDRjVEO0NGNUQ7MTEwRiAxMTY5IDExQjA7Q0Y1RDsxMTBGIDExNjkgMTFCMDsKK0NGNUU7Q0Y1RTsxMTBGIDExNjkgMTFCMTtDRjVFOzExMEYgMTE2OSAxMUIxOworQ0Y1RjtDRjVGOzExMEYgMTE2OSAxMUIyO0NGNUY7MTEwRiAxMTY5IDExQjI7CitDRjYwO0NGNjA7MTEwRiAxMTY5IDExQjM7Q0Y2MDsxMTBGIDExNjkgMTFCMzsKK0NGNjE7Q0Y2MTsxMTBGIDExNjkgMTFCNDtDRjYxOzExMEYgMTE2OSAxMUI0OworQ0Y2MjtDRjYyOzExMEYgMTE2OSAxMUI1O0NGNjI7MTEwRiAxMTY5IDExQjU7CitDRjYzO0NGNjM7MTEwRiAxMTY5IDExQjY7Q0Y2MzsxMTBGIDExNjkgMTFCNjsKK0NGNjQ7Q0Y2NDsxMTBGIDExNjkgMTFCNztDRjY0OzExMEYgMTE2OSAxMUI3OworQ0Y2NTtDRjY1OzExMEYgMTE2OSAxMUI4O0NGNjU7MTEwRiAxMTY5IDExQjg7CitDRjY2O0NGNjY7MTEwRiAxMTY5IDExQjk7Q0Y2NjsxMTBGIDExNjkgMTFCOTsKK0NGNjc7Q0Y2NzsxMTBGIDExNjkgMTFCQTtDRjY3OzExMEYgMTE2OSAxMUJBOworQ0Y2ODtDRjY4OzExMEYgMTE2OSAxMUJCO0NGNjg7MTEwRiAxMTY5IDExQkI7CitDRjY5O0NGNjk7MTEwRiAxMTY5IDExQkM7Q0Y2OTsxMTBGIDExNjkgMTFCQzsKK0NGNkE7Q0Y2QTsxMTBGIDExNjkgMTFCRDtDRjZBOzExMEYgMTE2OSAxMUJEOworQ0Y2QjtDRjZCOzExMEYgMTE2OSAxMUJFO0NGNkI7MTEwRiAxMTY5IDExQkU7CitDRjZDO0NGNkM7MTEwRiAxMTY5IDExQkY7Q0Y2QzsxMTBGIDExNjkgMTFCRjsKK0NGNkQ7Q0Y2RDsxMTBGIDExNjkgMTFDMDtDRjZEOzExMEYgMTE2OSAxMUMwOworQ0Y2RTtDRjZFOzExMEYgMTE2OSAxMUMxO0NGNkU7MTEwRiAxMTY5IDExQzE7CitDRjZGO0NGNkY7MTEwRiAxMTY5IDExQzI7Q0Y2RjsxMTBGIDExNjkgMTFDMjsKK0NGNzA7Q0Y3MDsxMTBGIDExNkE7Q0Y3MDsxMTBGIDExNkE7CitDRjcxO0NGNzE7MTEwRiAxMTZBIDExQTg7Q0Y3MTsxMTBGIDExNkEgMTFBODsKK0NGNzI7Q0Y3MjsxMTBGIDExNkEgMTFBOTtDRjcyOzExMEYgMTE2QSAxMUE5OworQ0Y3MztDRjczOzExMEYgMTE2QSAxMUFBO0NGNzM7MTEwRiAxMTZBIDExQUE7CitDRjc0O0NGNzQ7MTEwRiAxMTZBIDExQUI7Q0Y3NDsxMTBGIDExNkEgMTFBQjsKK0NGNzU7Q0Y3NTsxMTBGIDExNkEgMTFBQztDRjc1OzExMEYgMTE2QSAxMUFDOworQ0Y3NjtDRjc2OzExMEYgMTE2QSAxMUFEO0NGNzY7MTEwRiAxMTZBIDExQUQ7CitDRjc3O0NGNzc7MTEwRiAxMTZBIDExQUU7Q0Y3NzsxMTBGIDExNkEgMTFBRTsKK0NGNzg7Q0Y3ODsxMTBGIDExNkEgMTFBRjtDRjc4OzExMEYgMTE2QSAxMUFGOworQ0Y3OTtDRjc5OzExMEYgMTE2QSAxMUIwO0NGNzk7MTEwRiAxMTZBIDExQjA7CitDRjdBO0NGN0E7MTEwRiAxMTZBIDExQjE7Q0Y3QTsxMTBGIDExNkEgMTFCMTsKK0NGN0I7Q0Y3QjsxMTBGIDExNkEgMTFCMjtDRjdCOzExMEYgMTE2QSAxMUIyOworQ0Y3QztDRjdDOzExMEYgMTE2QSAxMUIzO0NGN0M7MTEwRiAxMTZBIDExQjM7CitDRjdEO0NGN0Q7MTEwRiAxMTZBIDExQjQ7Q0Y3RDsxMTBGIDExNkEgMTFCNDsKK0NGN0U7Q0Y3RTsxMTBGIDExNkEgMTFCNTtDRjdFOzExMEYgMTE2QSAxMUI1OworQ0Y3RjtDRjdGOzExMEYgMTE2QSAxMUI2O0NGN0Y7MTEwRiAxMTZBIDExQjY7CitDRjgwO0NGODA7MTEwRiAxMTZBIDExQjc7Q0Y4MDsxMTBGIDExNkEgMTFCNzsKK0NGODE7Q0Y4MTsxMTBGIDExNkEgMTFCODtDRjgxOzExMEYgMTE2QSAxMUI4OworQ0Y4MjtDRjgyOzExMEYgMTE2QSAxMUI5O0NGODI7MTEwRiAxMTZBIDExQjk7CitDRjgzO0NGODM7MTEwRiAxMTZBIDExQkE7Q0Y4MzsxMTBGIDExNkEgMTFCQTsKK0NGODQ7Q0Y4NDsxMTBGIDExNkEgMTFCQjtDRjg0OzExMEYgMTE2QSAxMUJCOworQ0Y4NTtDRjg1OzExMEYgMTE2QSAxMUJDO0NGODU7MTEwRiAxMTZBIDExQkM7CitDRjg2O0NGODY7MTEwRiAxMTZBIDExQkQ7Q0Y4NjsxMTBGIDExNkEgMTFCRDsKK0NGODc7Q0Y4NzsxMTBGIDExNkEgMTFCRTtDRjg3OzExMEYgMTE2QSAxMUJFOworQ0Y4ODtDRjg4OzExMEYgMTE2QSAxMUJGO0NGODg7MTEwRiAxMTZBIDExQkY7CitDRjg5O0NGODk7MTEwRiAxMTZBIDExQzA7Q0Y4OTsxMTBGIDExNkEgMTFDMDsKK0NGOEE7Q0Y4QTsxMTBGIDExNkEgMTFDMTtDRjhBOzExMEYgMTE2QSAxMUMxOworQ0Y4QjtDRjhCOzExMEYgMTE2QSAxMUMyO0NGOEI7MTEwRiAxMTZBIDExQzI7CitDRjhDO0NGOEM7MTEwRiAxMTZCO0NGOEM7MTEwRiAxMTZCOworQ0Y4RDtDRjhEOzExMEYgMTE2QiAxMUE4O0NGOEQ7MTEwRiAxMTZCIDExQTg7CitDRjhFO0NGOEU7MTEwRiAxMTZCIDExQTk7Q0Y4RTsxMTBGIDExNkIgMTFBOTsKK0NGOEY7Q0Y4RjsxMTBGIDExNkIgMTFBQTtDRjhGOzExMEYgMTE2QiAxMUFBOworQ0Y5MDtDRjkwOzExMEYgMTE2QiAxMUFCO0NGOTA7MTEwRiAxMTZCIDExQUI7CitDRjkxO0NGOTE7MTEwRiAxMTZCIDExQUM7Q0Y5MTsxMTBGIDExNkIgMTFBQzsKK0NGOTI7Q0Y5MjsxMTBGIDExNkIgMTFBRDtDRjkyOzExMEYgMTE2QiAxMUFEOworQ0Y5MztDRjkzOzExMEYgMTE2QiAxMUFFO0NGOTM7MTEwRiAxMTZCIDExQUU7CitDRjk0O0NGOTQ7MTEwRiAxMTZCIDExQUY7Q0Y5NDsxMTBGIDExNkIgMTFBRjsKK0NGOTU7Q0Y5NTsxMTBGIDExNkIgMTFCMDtDRjk1OzExMEYgMTE2QiAxMUIwOworQ0Y5NjtDRjk2OzExMEYgMTE2QiAxMUIxO0NGOTY7MTEwRiAxMTZCIDExQjE7CitDRjk3O0NGOTc7MTEwRiAxMTZCIDExQjI7Q0Y5NzsxMTBGIDExNkIgMTFCMjsKK0NGOTg7Q0Y5ODsxMTBGIDExNkIgMTFCMztDRjk4OzExMEYgMTE2QiAxMUIzOworQ0Y5OTtDRjk5OzExMEYgMTE2QiAxMUI0O0NGOTk7MTEwRiAxMTZCIDExQjQ7CitDRjlBO0NGOUE7MTEwRiAxMTZCIDExQjU7Q0Y5QTsxMTBGIDExNkIgMTFCNTsKK0NGOUI7Q0Y5QjsxMTBGIDExNkIgMTFCNjtDRjlCOzExMEYgMTE2QiAxMUI2OworQ0Y5QztDRjlDOzExMEYgMTE2QiAxMUI3O0NGOUM7MTEwRiAxMTZCIDExQjc7CitDRjlEO0NGOUQ7MTEwRiAxMTZCIDExQjg7Q0Y5RDsxMTBGIDExNkIgMTFCODsKK0NGOUU7Q0Y5RTsxMTBGIDExNkIgMTFCOTtDRjlFOzExMEYgMTE2QiAxMUI5OworQ0Y5RjtDRjlGOzExMEYgMTE2QiAxMUJBO0NGOUY7MTEwRiAxMTZCIDExQkE7CitDRkEwO0NGQTA7MTEwRiAxMTZCIDExQkI7Q0ZBMDsxMTBGIDExNkIgMTFCQjsKK0NGQTE7Q0ZBMTsxMTBGIDExNkIgMTFCQztDRkExOzExMEYgMTE2QiAxMUJDOworQ0ZBMjtDRkEyOzExMEYgMTE2QiAxMUJEO0NGQTI7MTEwRiAxMTZCIDExQkQ7CitDRkEzO0NGQTM7MTEwRiAxMTZCIDExQkU7Q0ZBMzsxMTBGIDExNkIgMTFCRTsKK0NGQTQ7Q0ZBNDsxMTBGIDExNkIgMTFCRjtDRkE0OzExMEYgMTE2QiAxMUJGOworQ0ZBNTtDRkE1OzExMEYgMTE2QiAxMUMwO0NGQTU7MTEwRiAxMTZCIDExQzA7CitDRkE2O0NGQTY7MTEwRiAxMTZCIDExQzE7Q0ZBNjsxMTBGIDExNkIgMTFDMTsKK0NGQTc7Q0ZBNzsxMTBGIDExNkIgMTFDMjtDRkE3OzExMEYgMTE2QiAxMUMyOworQ0ZBODtDRkE4OzExMEYgMTE2QztDRkE4OzExMEYgMTE2QzsKK0NGQTk7Q0ZBOTsxMTBGIDExNkMgMTFBODtDRkE5OzExMEYgMTE2QyAxMUE4OworQ0ZBQTtDRkFBOzExMEYgMTE2QyAxMUE5O0NGQUE7MTEwRiAxMTZDIDExQTk7CitDRkFCO0NGQUI7MTEwRiAxMTZDIDExQUE7Q0ZBQjsxMTBGIDExNkMgMTFBQTsKK0NGQUM7Q0ZBQzsxMTBGIDExNkMgMTFBQjtDRkFDOzExMEYgMTE2QyAxMUFCOworQ0ZBRDtDRkFEOzExMEYgMTE2QyAxMUFDO0NGQUQ7MTEwRiAxMTZDIDExQUM7CitDRkFFO0NGQUU7MTEwRiAxMTZDIDExQUQ7Q0ZBRTsxMTBGIDExNkMgMTFBRDsKK0NGQUY7Q0ZBRjsxMTBGIDExNkMgMTFBRTtDRkFGOzExMEYgMTE2QyAxMUFFOworQ0ZCMDtDRkIwOzExMEYgMTE2QyAxMUFGO0NGQjA7MTEwRiAxMTZDIDExQUY7CitDRkIxO0NGQjE7MTEwRiAxMTZDIDExQjA7Q0ZCMTsxMTBGIDExNkMgMTFCMDsKK0NGQjI7Q0ZCMjsxMTBGIDExNkMgMTFCMTtDRkIyOzExMEYgMTE2QyAxMUIxOworQ0ZCMztDRkIzOzExMEYgMTE2QyAxMUIyO0NGQjM7MTEwRiAxMTZDIDExQjI7CitDRkI0O0NGQjQ7MTEwRiAxMTZDIDExQjM7Q0ZCNDsxMTBGIDExNkMgMTFCMzsKK0NGQjU7Q0ZCNTsxMTBGIDExNkMgMTFCNDtDRkI1OzExMEYgMTE2QyAxMUI0OworQ0ZCNjtDRkI2OzExMEYgMTE2QyAxMUI1O0NGQjY7MTEwRiAxMTZDIDExQjU7CitDRkI3O0NGQjc7MTEwRiAxMTZDIDExQjY7Q0ZCNzsxMTBGIDExNkMgMTFCNjsKK0NGQjg7Q0ZCODsxMTBGIDExNkMgMTFCNztDRkI4OzExMEYgMTE2QyAxMUI3OworQ0ZCOTtDRkI5OzExMEYgMTE2QyAxMUI4O0NGQjk7MTEwRiAxMTZDIDExQjg7CitDRkJBO0NGQkE7MTEwRiAxMTZDIDExQjk7Q0ZCQTsxMTBGIDExNkMgMTFCOTsKK0NGQkI7Q0ZCQjsxMTBGIDExNkMgMTFCQTtDRkJCOzExMEYgMTE2QyAxMUJBOworQ0ZCQztDRkJDOzExMEYgMTE2QyAxMUJCO0NGQkM7MTEwRiAxMTZDIDExQkI7CitDRkJEO0NGQkQ7MTEwRiAxMTZDIDExQkM7Q0ZCRDsxMTBGIDExNkMgMTFCQzsKK0NGQkU7Q0ZCRTsxMTBGIDExNkMgMTFCRDtDRkJFOzExMEYgMTE2QyAxMUJEOworQ0ZCRjtDRkJGOzExMEYgMTE2QyAxMUJFO0NGQkY7MTEwRiAxMTZDIDExQkU7CitDRkMwO0NGQzA7MTEwRiAxMTZDIDExQkY7Q0ZDMDsxMTBGIDExNkMgMTFCRjsKK0NGQzE7Q0ZDMTsxMTBGIDExNkMgMTFDMDtDRkMxOzExMEYgMTE2QyAxMUMwOworQ0ZDMjtDRkMyOzExMEYgMTE2QyAxMUMxO0NGQzI7MTEwRiAxMTZDIDExQzE7CitDRkMzO0NGQzM7MTEwRiAxMTZDIDExQzI7Q0ZDMzsxMTBGIDExNkMgMTFDMjsKK0NGQzQ7Q0ZDNDsxMTBGIDExNkQ7Q0ZDNDsxMTBGIDExNkQ7CitDRkM1O0NGQzU7MTEwRiAxMTZEIDExQTg7Q0ZDNTsxMTBGIDExNkQgMTFBODsKK0NGQzY7Q0ZDNjsxMTBGIDExNkQgMTFBOTtDRkM2OzExMEYgMTE2RCAxMUE5OworQ0ZDNztDRkM3OzExMEYgMTE2RCAxMUFBO0NGQzc7MTEwRiAxMTZEIDExQUE7CitDRkM4O0NGQzg7MTEwRiAxMTZEIDExQUI7Q0ZDODsxMTBGIDExNkQgMTFBQjsKK0NGQzk7Q0ZDOTsxMTBGIDExNkQgMTFBQztDRkM5OzExMEYgMTE2RCAxMUFDOworQ0ZDQTtDRkNBOzExMEYgMTE2RCAxMUFEO0NGQ0E7MTEwRiAxMTZEIDExQUQ7CitDRkNCO0NGQ0I7MTEwRiAxMTZEIDExQUU7Q0ZDQjsxMTBGIDExNkQgMTFBRTsKK0NGQ0M7Q0ZDQzsxMTBGIDExNkQgMTFBRjtDRkNDOzExMEYgMTE2RCAxMUFGOworQ0ZDRDtDRkNEOzExMEYgMTE2RCAxMUIwO0NGQ0Q7MTEwRiAxMTZEIDExQjA7CitDRkNFO0NGQ0U7MTEwRiAxMTZEIDExQjE7Q0ZDRTsxMTBGIDExNkQgMTFCMTsKK0NGQ0Y7Q0ZDRjsxMTBGIDExNkQgMTFCMjtDRkNGOzExMEYgMTE2RCAxMUIyOworQ0ZEMDtDRkQwOzExMEYgMTE2RCAxMUIzO0NGRDA7MTEwRiAxMTZEIDExQjM7CitDRkQxO0NGRDE7MTEwRiAxMTZEIDExQjQ7Q0ZEMTsxMTBGIDExNkQgMTFCNDsKK0NGRDI7Q0ZEMjsxMTBGIDExNkQgMTFCNTtDRkQyOzExMEYgMTE2RCAxMUI1OworQ0ZEMztDRkQzOzExMEYgMTE2RCAxMUI2O0NGRDM7MTEwRiAxMTZEIDExQjY7CitDRkQ0O0NGRDQ7MTEwRiAxMTZEIDExQjc7Q0ZENDsxMTBGIDExNkQgMTFCNzsKK0NGRDU7Q0ZENTsxMTBGIDExNkQgMTFCODtDRkQ1OzExMEYgMTE2RCAxMUI4OworQ0ZENjtDRkQ2OzExMEYgMTE2RCAxMUI5O0NGRDY7MTEwRiAxMTZEIDExQjk7CitDRkQ3O0NGRDc7MTEwRiAxMTZEIDExQkE7Q0ZENzsxMTBGIDExNkQgMTFCQTsKK0NGRDg7Q0ZEODsxMTBGIDExNkQgMTFCQjtDRkQ4OzExMEYgMTE2RCAxMUJCOworQ0ZEOTtDRkQ5OzExMEYgMTE2RCAxMUJDO0NGRDk7MTEwRiAxMTZEIDExQkM7CitDRkRBO0NGREE7MTEwRiAxMTZEIDExQkQ7Q0ZEQTsxMTBGIDExNkQgMTFCRDsKK0NGREI7Q0ZEQjsxMTBGIDExNkQgMTFCRTtDRkRCOzExMEYgMTE2RCAxMUJFOworQ0ZEQztDRkRDOzExMEYgMTE2RCAxMUJGO0NGREM7MTEwRiAxMTZEIDExQkY7CitDRkREO0NGREQ7MTEwRiAxMTZEIDExQzA7Q0ZERDsxMTBGIDExNkQgMTFDMDsKK0NGREU7Q0ZERTsxMTBGIDExNkQgMTFDMTtDRkRFOzExMEYgMTE2RCAxMUMxOworQ0ZERjtDRkRGOzExMEYgMTE2RCAxMUMyO0NGREY7MTEwRiAxMTZEIDExQzI7CitDRkUwO0NGRTA7MTEwRiAxMTZFO0NGRTA7MTEwRiAxMTZFOworQ0ZFMTtDRkUxOzExMEYgMTE2RSAxMUE4O0NGRTE7MTEwRiAxMTZFIDExQTg7CitDRkUyO0NGRTI7MTEwRiAxMTZFIDExQTk7Q0ZFMjsxMTBGIDExNkUgMTFBOTsKK0NGRTM7Q0ZFMzsxMTBGIDExNkUgMTFBQTtDRkUzOzExMEYgMTE2RSAxMUFBOworQ0ZFNDtDRkU0OzExMEYgMTE2RSAxMUFCO0NGRTQ7MTEwRiAxMTZFIDExQUI7CitDRkU1O0NGRTU7MTEwRiAxMTZFIDExQUM7Q0ZFNTsxMTBGIDExNkUgMTFBQzsKK0NGRTY7Q0ZFNjsxMTBGIDExNkUgMTFBRDtDRkU2OzExMEYgMTE2RSAxMUFEOworQ0ZFNztDRkU3OzExMEYgMTE2RSAxMUFFO0NGRTc7MTEwRiAxMTZFIDExQUU7CitDRkU4O0NGRTg7MTEwRiAxMTZFIDExQUY7Q0ZFODsxMTBGIDExNkUgMTFBRjsKK0NGRTk7Q0ZFOTsxMTBGIDExNkUgMTFCMDtDRkU5OzExMEYgMTE2RSAxMUIwOworQ0ZFQTtDRkVBOzExMEYgMTE2RSAxMUIxO0NGRUE7MTEwRiAxMTZFIDExQjE7CitDRkVCO0NGRUI7MTEwRiAxMTZFIDExQjI7Q0ZFQjsxMTBGIDExNkUgMTFCMjsKK0NGRUM7Q0ZFQzsxMTBGIDExNkUgMTFCMztDRkVDOzExMEYgMTE2RSAxMUIzOworQ0ZFRDtDRkVEOzExMEYgMTE2RSAxMUI0O0NGRUQ7MTEwRiAxMTZFIDExQjQ7CitDRkVFO0NGRUU7MTEwRiAxMTZFIDExQjU7Q0ZFRTsxMTBGIDExNkUgMTFCNTsKK0NGRUY7Q0ZFRjsxMTBGIDExNkUgMTFCNjtDRkVGOzExMEYgMTE2RSAxMUI2OworQ0ZGMDtDRkYwOzExMEYgMTE2RSAxMUI3O0NGRjA7MTEwRiAxMTZFIDExQjc7CitDRkYxO0NGRjE7MTEwRiAxMTZFIDExQjg7Q0ZGMTsxMTBGIDExNkUgMTFCODsKK0NGRjI7Q0ZGMjsxMTBGIDExNkUgMTFCOTtDRkYyOzExMEYgMTE2RSAxMUI5OworQ0ZGMztDRkYzOzExMEYgMTE2RSAxMUJBO0NGRjM7MTEwRiAxMTZFIDExQkE7CitDRkY0O0NGRjQ7MTEwRiAxMTZFIDExQkI7Q0ZGNDsxMTBGIDExNkUgMTFCQjsKK0NGRjU7Q0ZGNTsxMTBGIDExNkUgMTFCQztDRkY1OzExMEYgMTE2RSAxMUJDOworQ0ZGNjtDRkY2OzExMEYgMTE2RSAxMUJEO0NGRjY7MTEwRiAxMTZFIDExQkQ7CitDRkY3O0NGRjc7MTEwRiAxMTZFIDExQkU7Q0ZGNzsxMTBGIDExNkUgMTFCRTsKK0NGRjg7Q0ZGODsxMTBGIDExNkUgMTFCRjtDRkY4OzExMEYgMTE2RSAxMUJGOworQ0ZGOTtDRkY5OzExMEYgMTE2RSAxMUMwO0NGRjk7MTEwRiAxMTZFIDExQzA7CitDRkZBO0NGRkE7MTEwRiAxMTZFIDExQzE7Q0ZGQTsxMTBGIDExNkUgMTFDMTsKK0NGRkI7Q0ZGQjsxMTBGIDExNkUgMTFDMjtDRkZCOzExMEYgMTE2RSAxMUMyOworQ0ZGQztDRkZDOzExMEYgMTE2RjtDRkZDOzExMEYgMTE2RjsKK0NGRkQ7Q0ZGRDsxMTBGIDExNkYgMTFBODtDRkZEOzExMEYgMTE2RiAxMUE4OworQ0ZGRTtDRkZFOzExMEYgMTE2RiAxMUE5O0NGRkU7MTEwRiAxMTZGIDExQTk7CitDRkZGO0NGRkY7MTEwRiAxMTZGIDExQUE7Q0ZGRjsxMTBGIDExNkYgMTFBQTsKK0QwMDA7RDAwMDsxMTBGIDExNkYgMTFBQjtEMDAwOzExMEYgMTE2RiAxMUFCOworRDAwMTtEMDAxOzExMEYgMTE2RiAxMUFDO0QwMDE7MTEwRiAxMTZGIDExQUM7CitEMDAyO0QwMDI7MTEwRiAxMTZGIDExQUQ7RDAwMjsxMTBGIDExNkYgMTFBRDsKK0QwMDM7RDAwMzsxMTBGIDExNkYgMTFBRTtEMDAzOzExMEYgMTE2RiAxMUFFOworRDAwNDtEMDA0OzExMEYgMTE2RiAxMUFGO0QwMDQ7MTEwRiAxMTZGIDExQUY7CitEMDA1O0QwMDU7MTEwRiAxMTZGIDExQjA7RDAwNTsxMTBGIDExNkYgMTFCMDsKK0QwMDY7RDAwNjsxMTBGIDExNkYgMTFCMTtEMDA2OzExMEYgMTE2RiAxMUIxOworRDAwNztEMDA3OzExMEYgMTE2RiAxMUIyO0QwMDc7MTEwRiAxMTZGIDExQjI7CitEMDA4O0QwMDg7MTEwRiAxMTZGIDExQjM7RDAwODsxMTBGIDExNkYgMTFCMzsKK0QwMDk7RDAwOTsxMTBGIDExNkYgMTFCNDtEMDA5OzExMEYgMTE2RiAxMUI0OworRDAwQTtEMDBBOzExMEYgMTE2RiAxMUI1O0QwMEE7MTEwRiAxMTZGIDExQjU7CitEMDBCO0QwMEI7MTEwRiAxMTZGIDExQjY7RDAwQjsxMTBGIDExNkYgMTFCNjsKK0QwMEM7RDAwQzsxMTBGIDExNkYgMTFCNztEMDBDOzExMEYgMTE2RiAxMUI3OworRDAwRDtEMDBEOzExMEYgMTE2RiAxMUI4O0QwMEQ7MTEwRiAxMTZGIDExQjg7CitEMDBFO0QwMEU7MTEwRiAxMTZGIDExQjk7RDAwRTsxMTBGIDExNkYgMTFCOTsKK0QwMEY7RDAwRjsxMTBGIDExNkYgMTFCQTtEMDBGOzExMEYgMTE2RiAxMUJBOworRDAxMDtEMDEwOzExMEYgMTE2RiAxMUJCO0QwMTA7MTEwRiAxMTZGIDExQkI7CitEMDExO0QwMTE7MTEwRiAxMTZGIDExQkM7RDAxMTsxMTBGIDExNkYgMTFCQzsKK0QwMTI7RDAxMjsxMTBGIDExNkYgMTFCRDtEMDEyOzExMEYgMTE2RiAxMUJEOworRDAxMztEMDEzOzExMEYgMTE2RiAxMUJFO0QwMTM7MTEwRiAxMTZGIDExQkU7CitEMDE0O0QwMTQ7MTEwRiAxMTZGIDExQkY7RDAxNDsxMTBGIDExNkYgMTFCRjsKK0QwMTU7RDAxNTsxMTBGIDExNkYgMTFDMDtEMDE1OzExMEYgMTE2RiAxMUMwOworRDAxNjtEMDE2OzExMEYgMTE2RiAxMUMxO0QwMTY7MTEwRiAxMTZGIDExQzE7CitEMDE3O0QwMTc7MTEwRiAxMTZGIDExQzI7RDAxNzsxMTBGIDExNkYgMTFDMjsKK0QwMTg7RDAxODsxMTBGIDExNzA7RDAxODsxMTBGIDExNzA7CitEMDE5O0QwMTk7MTEwRiAxMTcwIDExQTg7RDAxOTsxMTBGIDExNzAgMTFBODsKK0QwMUE7RDAxQTsxMTBGIDExNzAgMTFBOTtEMDFBOzExMEYgMTE3MCAxMUE5OworRDAxQjtEMDFCOzExMEYgMTE3MCAxMUFBO0QwMUI7MTEwRiAxMTcwIDExQUE7CitEMDFDO0QwMUM7MTEwRiAxMTcwIDExQUI7RDAxQzsxMTBGIDExNzAgMTFBQjsKK0QwMUQ7RDAxRDsxMTBGIDExNzAgMTFBQztEMDFEOzExMEYgMTE3MCAxMUFDOworRDAxRTtEMDFFOzExMEYgMTE3MCAxMUFEO0QwMUU7MTEwRiAxMTcwIDExQUQ7CitEMDFGO0QwMUY7MTEwRiAxMTcwIDExQUU7RDAxRjsxMTBGIDExNzAgMTFBRTsKK0QwMjA7RDAyMDsxMTBGIDExNzAgMTFBRjtEMDIwOzExMEYgMTE3MCAxMUFGOworRDAyMTtEMDIxOzExMEYgMTE3MCAxMUIwO0QwMjE7MTEwRiAxMTcwIDExQjA7CitEMDIyO0QwMjI7MTEwRiAxMTcwIDExQjE7RDAyMjsxMTBGIDExNzAgMTFCMTsKK0QwMjM7RDAyMzsxMTBGIDExNzAgMTFCMjtEMDIzOzExMEYgMTE3MCAxMUIyOworRDAyNDtEMDI0OzExMEYgMTE3MCAxMUIzO0QwMjQ7MTEwRiAxMTcwIDExQjM7CitEMDI1O0QwMjU7MTEwRiAxMTcwIDExQjQ7RDAyNTsxMTBGIDExNzAgMTFCNDsKK0QwMjY7RDAyNjsxMTBGIDExNzAgMTFCNTtEMDI2OzExMEYgMTE3MCAxMUI1OworRDAyNztEMDI3OzExMEYgMTE3MCAxMUI2O0QwMjc7MTEwRiAxMTcwIDExQjY7CitEMDI4O0QwMjg7MTEwRiAxMTcwIDExQjc7RDAyODsxMTBGIDExNzAgMTFCNzsKK0QwMjk7RDAyOTsxMTBGIDExNzAgMTFCODtEMDI5OzExMEYgMTE3MCAxMUI4OworRDAyQTtEMDJBOzExMEYgMTE3MCAxMUI5O0QwMkE7MTEwRiAxMTcwIDExQjk7CitEMDJCO0QwMkI7MTEwRiAxMTcwIDExQkE7RDAyQjsxMTBGIDExNzAgMTFCQTsKK0QwMkM7RDAyQzsxMTBGIDExNzAgMTFCQjtEMDJDOzExMEYgMTE3MCAxMUJCOworRDAyRDtEMDJEOzExMEYgMTE3MCAxMUJDO0QwMkQ7MTEwRiAxMTcwIDExQkM7CitEMDJFO0QwMkU7MTEwRiAxMTcwIDExQkQ7RDAyRTsxMTBGIDExNzAgMTFCRDsKK0QwMkY7RDAyRjsxMTBGIDExNzAgMTFCRTtEMDJGOzExMEYgMTE3MCAxMUJFOworRDAzMDtEMDMwOzExMEYgMTE3MCAxMUJGO0QwMzA7MTEwRiAxMTcwIDExQkY7CitEMDMxO0QwMzE7MTEwRiAxMTcwIDExQzA7RDAzMTsxMTBGIDExNzAgMTFDMDsKK0QwMzI7RDAzMjsxMTBGIDExNzAgMTFDMTtEMDMyOzExMEYgMTE3MCAxMUMxOworRDAzMztEMDMzOzExMEYgMTE3MCAxMUMyO0QwMzM7MTEwRiAxMTcwIDExQzI7CitEMDM0O0QwMzQ7MTEwRiAxMTcxO0QwMzQ7MTEwRiAxMTcxOworRDAzNTtEMDM1OzExMEYgMTE3MSAxMUE4O0QwMzU7MTEwRiAxMTcxIDExQTg7CitEMDM2O0QwMzY7MTEwRiAxMTcxIDExQTk7RDAzNjsxMTBGIDExNzEgMTFBOTsKK0QwMzc7RDAzNzsxMTBGIDExNzEgMTFBQTtEMDM3OzExMEYgMTE3MSAxMUFBOworRDAzODtEMDM4OzExMEYgMTE3MSAxMUFCO0QwMzg7MTEwRiAxMTcxIDExQUI7CitEMDM5O0QwMzk7MTEwRiAxMTcxIDExQUM7RDAzOTsxMTBGIDExNzEgMTFBQzsKK0QwM0E7RDAzQTsxMTBGIDExNzEgMTFBRDtEMDNBOzExMEYgMTE3MSAxMUFEOworRDAzQjtEMDNCOzExMEYgMTE3MSAxMUFFO0QwM0I7MTEwRiAxMTcxIDExQUU7CitEMDNDO0QwM0M7MTEwRiAxMTcxIDExQUY7RDAzQzsxMTBGIDExNzEgMTFBRjsKK0QwM0Q7RDAzRDsxMTBGIDExNzEgMTFCMDtEMDNEOzExMEYgMTE3MSAxMUIwOworRDAzRTtEMDNFOzExMEYgMTE3MSAxMUIxO0QwM0U7MTEwRiAxMTcxIDExQjE7CitEMDNGO0QwM0Y7MTEwRiAxMTcxIDExQjI7RDAzRjsxMTBGIDExNzEgMTFCMjsKK0QwNDA7RDA0MDsxMTBGIDExNzEgMTFCMztEMDQwOzExMEYgMTE3MSAxMUIzOworRDA0MTtEMDQxOzExMEYgMTE3MSAxMUI0O0QwNDE7MTEwRiAxMTcxIDExQjQ7CitEMDQyO0QwNDI7MTEwRiAxMTcxIDExQjU7RDA0MjsxMTBGIDExNzEgMTFCNTsKK0QwNDM7RDA0MzsxMTBGIDExNzEgMTFCNjtEMDQzOzExMEYgMTE3MSAxMUI2OworRDA0NDtEMDQ0OzExMEYgMTE3MSAxMUI3O0QwNDQ7MTEwRiAxMTcxIDExQjc7CitEMDQ1O0QwNDU7MTEwRiAxMTcxIDExQjg7RDA0NTsxMTBGIDExNzEgMTFCODsKK0QwNDY7RDA0NjsxMTBGIDExNzEgMTFCOTtEMDQ2OzExMEYgMTE3MSAxMUI5OworRDA0NztEMDQ3OzExMEYgMTE3MSAxMUJBO0QwNDc7MTEwRiAxMTcxIDExQkE7CitEMDQ4O0QwNDg7MTEwRiAxMTcxIDExQkI7RDA0ODsxMTBGIDExNzEgMTFCQjsKK0QwNDk7RDA0OTsxMTBGIDExNzEgMTFCQztEMDQ5OzExMEYgMTE3MSAxMUJDOworRDA0QTtEMDRBOzExMEYgMTE3MSAxMUJEO0QwNEE7MTEwRiAxMTcxIDExQkQ7CitEMDRCO0QwNEI7MTEwRiAxMTcxIDExQkU7RDA0QjsxMTBGIDExNzEgMTFCRTsKK0QwNEM7RDA0QzsxMTBGIDExNzEgMTFCRjtEMDRDOzExMEYgMTE3MSAxMUJGOworRDA0RDtEMDREOzExMEYgMTE3MSAxMUMwO0QwNEQ7MTEwRiAxMTcxIDExQzA7CitEMDRFO0QwNEU7MTEwRiAxMTcxIDExQzE7RDA0RTsxMTBGIDExNzEgMTFDMTsKK0QwNEY7RDA0RjsxMTBGIDExNzEgMTFDMjtEMDRGOzExMEYgMTE3MSAxMUMyOworRDA1MDtEMDUwOzExMEYgMTE3MjtEMDUwOzExMEYgMTE3MjsKK0QwNTE7RDA1MTsxMTBGIDExNzIgMTFBODtEMDUxOzExMEYgMTE3MiAxMUE4OworRDA1MjtEMDUyOzExMEYgMTE3MiAxMUE5O0QwNTI7MTEwRiAxMTcyIDExQTk7CitEMDUzO0QwNTM7MTEwRiAxMTcyIDExQUE7RDA1MzsxMTBGIDExNzIgMTFBQTsKK0QwNTQ7RDA1NDsxMTBGIDExNzIgMTFBQjtEMDU0OzExMEYgMTE3MiAxMUFCOworRDA1NTtEMDU1OzExMEYgMTE3MiAxMUFDO0QwNTU7MTEwRiAxMTcyIDExQUM7CitEMDU2O0QwNTY7MTEwRiAxMTcyIDExQUQ7RDA1NjsxMTBGIDExNzIgMTFBRDsKK0QwNTc7RDA1NzsxMTBGIDExNzIgMTFBRTtEMDU3OzExMEYgMTE3MiAxMUFFOworRDA1ODtEMDU4OzExMEYgMTE3MiAxMUFGO0QwNTg7MTEwRiAxMTcyIDExQUY7CitEMDU5O0QwNTk7MTEwRiAxMTcyIDExQjA7RDA1OTsxMTBGIDExNzIgMTFCMDsKK0QwNUE7RDA1QTsxMTBGIDExNzIgMTFCMTtEMDVBOzExMEYgMTE3MiAxMUIxOworRDA1QjtEMDVCOzExMEYgMTE3MiAxMUIyO0QwNUI7MTEwRiAxMTcyIDExQjI7CitEMDVDO0QwNUM7MTEwRiAxMTcyIDExQjM7RDA1QzsxMTBGIDExNzIgMTFCMzsKK0QwNUQ7RDA1RDsxMTBGIDExNzIgMTFCNDtEMDVEOzExMEYgMTE3MiAxMUI0OworRDA1RTtEMDVFOzExMEYgMTE3MiAxMUI1O0QwNUU7MTEwRiAxMTcyIDExQjU7CitEMDVGO0QwNUY7MTEwRiAxMTcyIDExQjY7RDA1RjsxMTBGIDExNzIgMTFCNjsKK0QwNjA7RDA2MDsxMTBGIDExNzIgMTFCNztEMDYwOzExMEYgMTE3MiAxMUI3OworRDA2MTtEMDYxOzExMEYgMTE3MiAxMUI4O0QwNjE7MTEwRiAxMTcyIDExQjg7CitEMDYyO0QwNjI7MTEwRiAxMTcyIDExQjk7RDA2MjsxMTBGIDExNzIgMTFCOTsKK0QwNjM7RDA2MzsxMTBGIDExNzIgMTFCQTtEMDYzOzExMEYgMTE3MiAxMUJBOworRDA2NDtEMDY0OzExMEYgMTE3MiAxMUJCO0QwNjQ7MTEwRiAxMTcyIDExQkI7CitEMDY1O0QwNjU7MTEwRiAxMTcyIDExQkM7RDA2NTsxMTBGIDExNzIgMTFCQzsKK0QwNjY7RDA2NjsxMTBGIDExNzIgMTFCRDtEMDY2OzExMEYgMTE3MiAxMUJEOworRDA2NztEMDY3OzExMEYgMTE3MiAxMUJFO0QwNjc7MTEwRiAxMTcyIDExQkU7CitEMDY4O0QwNjg7MTEwRiAxMTcyIDExQkY7RDA2ODsxMTBGIDExNzIgMTFCRjsKK0QwNjk7RDA2OTsxMTBGIDExNzIgMTFDMDtEMDY5OzExMEYgMTE3MiAxMUMwOworRDA2QTtEMDZBOzExMEYgMTE3MiAxMUMxO0QwNkE7MTEwRiAxMTcyIDExQzE7CitEMDZCO0QwNkI7MTEwRiAxMTcyIDExQzI7RDA2QjsxMTBGIDExNzIgMTFDMjsKK0QwNkM7RDA2QzsxMTBGIDExNzM7RDA2QzsxMTBGIDExNzM7CitEMDZEO0QwNkQ7MTEwRiAxMTczIDExQTg7RDA2RDsxMTBGIDExNzMgMTFBODsKK0QwNkU7RDA2RTsxMTBGIDExNzMgMTFBOTtEMDZFOzExMEYgMTE3MyAxMUE5OworRDA2RjtEMDZGOzExMEYgMTE3MyAxMUFBO0QwNkY7MTEwRiAxMTczIDExQUE7CitEMDcwO0QwNzA7MTEwRiAxMTczIDExQUI7RDA3MDsxMTBGIDExNzMgMTFBQjsKK0QwNzE7RDA3MTsxMTBGIDExNzMgMTFBQztEMDcxOzExMEYgMTE3MyAxMUFDOworRDA3MjtEMDcyOzExMEYgMTE3MyAxMUFEO0QwNzI7MTEwRiAxMTczIDExQUQ7CitEMDczO0QwNzM7MTEwRiAxMTczIDExQUU7RDA3MzsxMTBGIDExNzMgMTFBRTsKK0QwNzQ7RDA3NDsxMTBGIDExNzMgMTFBRjtEMDc0OzExMEYgMTE3MyAxMUFGOworRDA3NTtEMDc1OzExMEYgMTE3MyAxMUIwO0QwNzU7MTEwRiAxMTczIDExQjA7CitEMDc2O0QwNzY7MTEwRiAxMTczIDExQjE7RDA3NjsxMTBGIDExNzMgMTFCMTsKK0QwNzc7RDA3NzsxMTBGIDExNzMgMTFCMjtEMDc3OzExMEYgMTE3MyAxMUIyOworRDA3ODtEMDc4OzExMEYgMTE3MyAxMUIzO0QwNzg7MTEwRiAxMTczIDExQjM7CitEMDc5O0QwNzk7MTEwRiAxMTczIDExQjQ7RDA3OTsxMTBGIDExNzMgMTFCNDsKK0QwN0E7RDA3QTsxMTBGIDExNzMgMTFCNTtEMDdBOzExMEYgMTE3MyAxMUI1OworRDA3QjtEMDdCOzExMEYgMTE3MyAxMUI2O0QwN0I7MTEwRiAxMTczIDExQjY7CitEMDdDO0QwN0M7MTEwRiAxMTczIDExQjc7RDA3QzsxMTBGIDExNzMgMTFCNzsKK0QwN0Q7RDA3RDsxMTBGIDExNzMgMTFCODtEMDdEOzExMEYgMTE3MyAxMUI4OworRDA3RTtEMDdFOzExMEYgMTE3MyAxMUI5O0QwN0U7MTEwRiAxMTczIDExQjk7CitEMDdGO0QwN0Y7MTEwRiAxMTczIDExQkE7RDA3RjsxMTBGIDExNzMgMTFCQTsKK0QwODA7RDA4MDsxMTBGIDExNzMgMTFCQjtEMDgwOzExMEYgMTE3MyAxMUJCOworRDA4MTtEMDgxOzExMEYgMTE3MyAxMUJDO0QwODE7MTEwRiAxMTczIDExQkM7CitEMDgyO0QwODI7MTEwRiAxMTczIDExQkQ7RDA4MjsxMTBGIDExNzMgMTFCRDsKK0QwODM7RDA4MzsxMTBGIDExNzMgMTFCRTtEMDgzOzExMEYgMTE3MyAxMUJFOworRDA4NDtEMDg0OzExMEYgMTE3MyAxMUJGO0QwODQ7MTEwRiAxMTczIDExQkY7CitEMDg1O0QwODU7MTEwRiAxMTczIDExQzA7RDA4NTsxMTBGIDExNzMgMTFDMDsKK0QwODY7RDA4NjsxMTBGIDExNzMgMTFDMTtEMDg2OzExMEYgMTE3MyAxMUMxOworRDA4NztEMDg3OzExMEYgMTE3MyAxMUMyO0QwODc7MTEwRiAxMTczIDExQzI7CitEMDg4O0QwODg7MTEwRiAxMTc0O0QwODg7MTEwRiAxMTc0OworRDA4OTtEMDg5OzExMEYgMTE3NCAxMUE4O0QwODk7MTEwRiAxMTc0IDExQTg7CitEMDhBO0QwOEE7MTEwRiAxMTc0IDExQTk7RDA4QTsxMTBGIDExNzQgMTFBOTsKK0QwOEI7RDA4QjsxMTBGIDExNzQgMTFBQTtEMDhCOzExMEYgMTE3NCAxMUFBOworRDA4QztEMDhDOzExMEYgMTE3NCAxMUFCO0QwOEM7MTEwRiAxMTc0IDExQUI7CitEMDhEO0QwOEQ7MTEwRiAxMTc0IDExQUM7RDA4RDsxMTBGIDExNzQgMTFBQzsKK0QwOEU7RDA4RTsxMTBGIDExNzQgMTFBRDtEMDhFOzExMEYgMTE3NCAxMUFEOworRDA4RjtEMDhGOzExMEYgMTE3NCAxMUFFO0QwOEY7MTEwRiAxMTc0IDExQUU7CitEMDkwO0QwOTA7MTEwRiAxMTc0IDExQUY7RDA5MDsxMTBGIDExNzQgMTFBRjsKK0QwOTE7RDA5MTsxMTBGIDExNzQgMTFCMDtEMDkxOzExMEYgMTE3NCAxMUIwOworRDA5MjtEMDkyOzExMEYgMTE3NCAxMUIxO0QwOTI7MTEwRiAxMTc0IDExQjE7CitEMDkzO0QwOTM7MTEwRiAxMTc0IDExQjI7RDA5MzsxMTBGIDExNzQgMTFCMjsKK0QwOTQ7RDA5NDsxMTBGIDExNzQgMTFCMztEMDk0OzExMEYgMTE3NCAxMUIzOworRDA5NTtEMDk1OzExMEYgMTE3NCAxMUI0O0QwOTU7MTEwRiAxMTc0IDExQjQ7CitEMDk2O0QwOTY7MTEwRiAxMTc0IDExQjU7RDA5NjsxMTBGIDExNzQgMTFCNTsKK0QwOTc7RDA5NzsxMTBGIDExNzQgMTFCNjtEMDk3OzExMEYgMTE3NCAxMUI2OworRDA5ODtEMDk4OzExMEYgMTE3NCAxMUI3O0QwOTg7MTEwRiAxMTc0IDExQjc7CitEMDk5O0QwOTk7MTEwRiAxMTc0IDExQjg7RDA5OTsxMTBGIDExNzQgMTFCODsKK0QwOUE7RDA5QTsxMTBGIDExNzQgMTFCOTtEMDlBOzExMEYgMTE3NCAxMUI5OworRDA5QjtEMDlCOzExMEYgMTE3NCAxMUJBO0QwOUI7MTEwRiAxMTc0IDExQkE7CitEMDlDO0QwOUM7MTEwRiAxMTc0IDExQkI7RDA5QzsxMTBGIDExNzQgMTFCQjsKK0QwOUQ7RDA5RDsxMTBGIDExNzQgMTFCQztEMDlEOzExMEYgMTE3NCAxMUJDOworRDA5RTtEMDlFOzExMEYgMTE3NCAxMUJEO0QwOUU7MTEwRiAxMTc0IDExQkQ7CitEMDlGO0QwOUY7MTEwRiAxMTc0IDExQkU7RDA5RjsxMTBGIDExNzQgMTFCRTsKK0QwQTA7RDBBMDsxMTBGIDExNzQgMTFCRjtEMEEwOzExMEYgMTE3NCAxMUJGOworRDBBMTtEMEExOzExMEYgMTE3NCAxMUMwO0QwQTE7MTEwRiAxMTc0IDExQzA7CitEMEEyO0QwQTI7MTEwRiAxMTc0IDExQzE7RDBBMjsxMTBGIDExNzQgMTFDMTsKK0QwQTM7RDBBMzsxMTBGIDExNzQgMTFDMjtEMEEzOzExMEYgMTE3NCAxMUMyOworRDBBNDtEMEE0OzExMEYgMTE3NTtEMEE0OzExMEYgMTE3NTsKK0QwQTU7RDBBNTsxMTBGIDExNzUgMTFBODtEMEE1OzExMEYgMTE3NSAxMUE4OworRDBBNjtEMEE2OzExMEYgMTE3NSAxMUE5O0QwQTY7MTEwRiAxMTc1IDExQTk7CitEMEE3O0QwQTc7MTEwRiAxMTc1IDExQUE7RDBBNzsxMTBGIDExNzUgMTFBQTsKK0QwQTg7RDBBODsxMTBGIDExNzUgMTFBQjtEMEE4OzExMEYgMTE3NSAxMUFCOworRDBBOTtEMEE5OzExMEYgMTE3NSAxMUFDO0QwQTk7MTEwRiAxMTc1IDExQUM7CitEMEFBO0QwQUE7MTEwRiAxMTc1IDExQUQ7RDBBQTsxMTBGIDExNzUgMTFBRDsKK0QwQUI7RDBBQjsxMTBGIDExNzUgMTFBRTtEMEFCOzExMEYgMTE3NSAxMUFFOworRDBBQztEMEFDOzExMEYgMTE3NSAxMUFGO0QwQUM7MTEwRiAxMTc1IDExQUY7CitEMEFEO0QwQUQ7MTEwRiAxMTc1IDExQjA7RDBBRDsxMTBGIDExNzUgMTFCMDsKK0QwQUU7RDBBRTsxMTBGIDExNzUgMTFCMTtEMEFFOzExMEYgMTE3NSAxMUIxOworRDBBRjtEMEFGOzExMEYgMTE3NSAxMUIyO0QwQUY7MTEwRiAxMTc1IDExQjI7CitEMEIwO0QwQjA7MTEwRiAxMTc1IDExQjM7RDBCMDsxMTBGIDExNzUgMTFCMzsKK0QwQjE7RDBCMTsxMTBGIDExNzUgMTFCNDtEMEIxOzExMEYgMTE3NSAxMUI0OworRDBCMjtEMEIyOzExMEYgMTE3NSAxMUI1O0QwQjI7MTEwRiAxMTc1IDExQjU7CitEMEIzO0QwQjM7MTEwRiAxMTc1IDExQjY7RDBCMzsxMTBGIDExNzUgMTFCNjsKK0QwQjQ7RDBCNDsxMTBGIDExNzUgMTFCNztEMEI0OzExMEYgMTE3NSAxMUI3OworRDBCNTtEMEI1OzExMEYgMTE3NSAxMUI4O0QwQjU7MTEwRiAxMTc1IDExQjg7CitEMEI2O0QwQjY7MTEwRiAxMTc1IDExQjk7RDBCNjsxMTBGIDExNzUgMTFCOTsKK0QwQjc7RDBCNzsxMTBGIDExNzUgMTFCQTtEMEI3OzExMEYgMTE3NSAxMUJBOworRDBCODtEMEI4OzExMEYgMTE3NSAxMUJCO0QwQjg7MTEwRiAxMTc1IDExQkI7CitEMEI5O0QwQjk7MTEwRiAxMTc1IDExQkM7RDBCOTsxMTBGIDExNzUgMTFCQzsKK0QwQkE7RDBCQTsxMTBGIDExNzUgMTFCRDtEMEJBOzExMEYgMTE3NSAxMUJEOworRDBCQjtEMEJCOzExMEYgMTE3NSAxMUJFO0QwQkI7MTEwRiAxMTc1IDExQkU7CitEMEJDO0QwQkM7MTEwRiAxMTc1IDExQkY7RDBCQzsxMTBGIDExNzUgMTFCRjsKK0QwQkQ7RDBCRDsxMTBGIDExNzUgMTFDMDtEMEJEOzExMEYgMTE3NSAxMUMwOworRDBCRTtEMEJFOzExMEYgMTE3NSAxMUMxO0QwQkU7MTEwRiAxMTc1IDExQzE7CitEMEJGO0QwQkY7MTEwRiAxMTc1IDExQzI7RDBCRjsxMTBGIDExNzUgMTFDMjsKK0QwQzA7RDBDMDsxMTEwIDExNjE7RDBDMDsxMTEwIDExNjE7CitEMEMxO0QwQzE7MTExMCAxMTYxIDExQTg7RDBDMTsxMTEwIDExNjEgMTFBODsKK0QwQzI7RDBDMjsxMTEwIDExNjEgMTFBOTtEMEMyOzExMTAgMTE2MSAxMUE5OworRDBDMztEMEMzOzExMTAgMTE2MSAxMUFBO0QwQzM7MTExMCAxMTYxIDExQUE7CitEMEM0O0QwQzQ7MTExMCAxMTYxIDExQUI7RDBDNDsxMTEwIDExNjEgMTFBQjsKK0QwQzU7RDBDNTsxMTEwIDExNjEgMTFBQztEMEM1OzExMTAgMTE2MSAxMUFDOworRDBDNjtEMEM2OzExMTAgMTE2MSAxMUFEO0QwQzY7MTExMCAxMTYxIDExQUQ7CitEMEM3O0QwQzc7MTExMCAxMTYxIDExQUU7RDBDNzsxMTEwIDExNjEgMTFBRTsKK0QwQzg7RDBDODsxMTEwIDExNjEgMTFBRjtEMEM4OzExMTAgMTE2MSAxMUFGOworRDBDOTtEMEM5OzExMTAgMTE2MSAxMUIwO0QwQzk7MTExMCAxMTYxIDExQjA7CitEMENBO0QwQ0E7MTExMCAxMTYxIDExQjE7RDBDQTsxMTEwIDExNjEgMTFCMTsKK0QwQ0I7RDBDQjsxMTEwIDExNjEgMTFCMjtEMENCOzExMTAgMTE2MSAxMUIyOworRDBDQztEMENDOzExMTAgMTE2MSAxMUIzO0QwQ0M7MTExMCAxMTYxIDExQjM7CitEMENEO0QwQ0Q7MTExMCAxMTYxIDExQjQ7RDBDRDsxMTEwIDExNjEgMTFCNDsKK0QwQ0U7RDBDRTsxMTEwIDExNjEgMTFCNTtEMENFOzExMTAgMTE2MSAxMUI1OworRDBDRjtEMENGOzExMTAgMTE2MSAxMUI2O0QwQ0Y7MTExMCAxMTYxIDExQjY7CitEMEQwO0QwRDA7MTExMCAxMTYxIDExQjc7RDBEMDsxMTEwIDExNjEgMTFCNzsKK0QwRDE7RDBEMTsxMTEwIDExNjEgMTFCODtEMEQxOzExMTAgMTE2MSAxMUI4OworRDBEMjtEMEQyOzExMTAgMTE2MSAxMUI5O0QwRDI7MTExMCAxMTYxIDExQjk7CitEMEQzO0QwRDM7MTExMCAxMTYxIDExQkE7RDBEMzsxMTEwIDExNjEgMTFCQTsKK0QwRDQ7RDBENDsxMTEwIDExNjEgMTFCQjtEMEQ0OzExMTAgMTE2MSAxMUJCOworRDBENTtEMEQ1OzExMTAgMTE2MSAxMUJDO0QwRDU7MTExMCAxMTYxIDExQkM7CitEMEQ2O0QwRDY7MTExMCAxMTYxIDExQkQ7RDBENjsxMTEwIDExNjEgMTFCRDsKK0QwRDc7RDBENzsxMTEwIDExNjEgMTFCRTtEMEQ3OzExMTAgMTE2MSAxMUJFOworRDBEODtEMEQ4OzExMTAgMTE2MSAxMUJGO0QwRDg7MTExMCAxMTYxIDExQkY7CitEMEQ5O0QwRDk7MTExMCAxMTYxIDExQzA7RDBEOTsxMTEwIDExNjEgMTFDMDsKK0QwREE7RDBEQTsxMTEwIDExNjEgMTFDMTtEMERBOzExMTAgMTE2MSAxMUMxOworRDBEQjtEMERCOzExMTAgMTE2MSAxMUMyO0QwREI7MTExMCAxMTYxIDExQzI7CitEMERDO0QwREM7MTExMCAxMTYyO0QwREM7MTExMCAxMTYyOworRDBERDtEMEREOzExMTAgMTE2MiAxMUE4O0QwREQ7MTExMCAxMTYyIDExQTg7CitEMERFO0QwREU7MTExMCAxMTYyIDExQTk7RDBERTsxMTEwIDExNjIgMTFBOTsKK0QwREY7RDBERjsxMTEwIDExNjIgMTFBQTtEMERGOzExMTAgMTE2MiAxMUFBOworRDBFMDtEMEUwOzExMTAgMTE2MiAxMUFCO0QwRTA7MTExMCAxMTYyIDExQUI7CitEMEUxO0QwRTE7MTExMCAxMTYyIDExQUM7RDBFMTsxMTEwIDExNjIgMTFBQzsKK0QwRTI7RDBFMjsxMTEwIDExNjIgMTFBRDtEMEUyOzExMTAgMTE2MiAxMUFEOworRDBFMztEMEUzOzExMTAgMTE2MiAxMUFFO0QwRTM7MTExMCAxMTYyIDExQUU7CitEMEU0O0QwRTQ7MTExMCAxMTYyIDExQUY7RDBFNDsxMTEwIDExNjIgMTFBRjsKK0QwRTU7RDBFNTsxMTEwIDExNjIgMTFCMDtEMEU1OzExMTAgMTE2MiAxMUIwOworRDBFNjtEMEU2OzExMTAgMTE2MiAxMUIxO0QwRTY7MTExMCAxMTYyIDExQjE7CitEMEU3O0QwRTc7MTExMCAxMTYyIDExQjI7RDBFNzsxMTEwIDExNjIgMTFCMjsKK0QwRTg7RDBFODsxMTEwIDExNjIgMTFCMztEMEU4OzExMTAgMTE2MiAxMUIzOworRDBFOTtEMEU5OzExMTAgMTE2MiAxMUI0O0QwRTk7MTExMCAxMTYyIDExQjQ7CitEMEVBO0QwRUE7MTExMCAxMTYyIDExQjU7RDBFQTsxMTEwIDExNjIgMTFCNTsKK0QwRUI7RDBFQjsxMTEwIDExNjIgMTFCNjtEMEVCOzExMTAgMTE2MiAxMUI2OworRDBFQztEMEVDOzExMTAgMTE2MiAxMUI3O0QwRUM7MTExMCAxMTYyIDExQjc7CitEMEVEO0QwRUQ7MTExMCAxMTYyIDExQjg7RDBFRDsxMTEwIDExNjIgMTFCODsKK0QwRUU7RDBFRTsxMTEwIDExNjIgMTFCOTtEMEVFOzExMTAgMTE2MiAxMUI5OworRDBFRjtEMEVGOzExMTAgMTE2MiAxMUJBO0QwRUY7MTExMCAxMTYyIDExQkE7CitEMEYwO0QwRjA7MTExMCAxMTYyIDExQkI7RDBGMDsxMTEwIDExNjIgMTFCQjsKK0QwRjE7RDBGMTsxMTEwIDExNjIgMTFCQztEMEYxOzExMTAgMTE2MiAxMUJDOworRDBGMjtEMEYyOzExMTAgMTE2MiAxMUJEO0QwRjI7MTExMCAxMTYyIDExQkQ7CitEMEYzO0QwRjM7MTExMCAxMTYyIDExQkU7RDBGMzsxMTEwIDExNjIgMTFCRTsKK0QwRjQ7RDBGNDsxMTEwIDExNjIgMTFCRjtEMEY0OzExMTAgMTE2MiAxMUJGOworRDBGNTtEMEY1OzExMTAgMTE2MiAxMUMwO0QwRjU7MTExMCAxMTYyIDExQzA7CitEMEY2O0QwRjY7MTExMCAxMTYyIDExQzE7RDBGNjsxMTEwIDExNjIgMTFDMTsKK0QwRjc7RDBGNzsxMTEwIDExNjIgMTFDMjtEMEY3OzExMTAgMTE2MiAxMUMyOworRDBGODtEMEY4OzExMTAgMTE2MztEMEY4OzExMTAgMTE2MzsKK0QwRjk7RDBGOTsxMTEwIDExNjMgMTFBODtEMEY5OzExMTAgMTE2MyAxMUE4OworRDBGQTtEMEZBOzExMTAgMTE2MyAxMUE5O0QwRkE7MTExMCAxMTYzIDExQTk7CitEMEZCO0QwRkI7MTExMCAxMTYzIDExQUE7RDBGQjsxMTEwIDExNjMgMTFBQTsKK0QwRkM7RDBGQzsxMTEwIDExNjMgMTFBQjtEMEZDOzExMTAgMTE2MyAxMUFCOworRDBGRDtEMEZEOzExMTAgMTE2MyAxMUFDO0QwRkQ7MTExMCAxMTYzIDExQUM7CitEMEZFO0QwRkU7MTExMCAxMTYzIDExQUQ7RDBGRTsxMTEwIDExNjMgMTFBRDsKK0QwRkY7RDBGRjsxMTEwIDExNjMgMTFBRTtEMEZGOzExMTAgMTE2MyAxMUFFOworRDEwMDtEMTAwOzExMTAgMTE2MyAxMUFGO0QxMDA7MTExMCAxMTYzIDExQUY7CitEMTAxO0QxMDE7MTExMCAxMTYzIDExQjA7RDEwMTsxMTEwIDExNjMgMTFCMDsKK0QxMDI7RDEwMjsxMTEwIDExNjMgMTFCMTtEMTAyOzExMTAgMTE2MyAxMUIxOworRDEwMztEMTAzOzExMTAgMTE2MyAxMUIyO0QxMDM7MTExMCAxMTYzIDExQjI7CitEMTA0O0QxMDQ7MTExMCAxMTYzIDExQjM7RDEwNDsxMTEwIDExNjMgMTFCMzsKK0QxMDU7RDEwNTsxMTEwIDExNjMgMTFCNDtEMTA1OzExMTAgMTE2MyAxMUI0OworRDEwNjtEMTA2OzExMTAgMTE2MyAxMUI1O0QxMDY7MTExMCAxMTYzIDExQjU7CitEMTA3O0QxMDc7MTExMCAxMTYzIDExQjY7RDEwNzsxMTEwIDExNjMgMTFCNjsKK0QxMDg7RDEwODsxMTEwIDExNjMgMTFCNztEMTA4OzExMTAgMTE2MyAxMUI3OworRDEwOTtEMTA5OzExMTAgMTE2MyAxMUI4O0QxMDk7MTExMCAxMTYzIDExQjg7CitEMTBBO0QxMEE7MTExMCAxMTYzIDExQjk7RDEwQTsxMTEwIDExNjMgMTFCOTsKK0QxMEI7RDEwQjsxMTEwIDExNjMgMTFCQTtEMTBCOzExMTAgMTE2MyAxMUJBOworRDEwQztEMTBDOzExMTAgMTE2MyAxMUJCO0QxMEM7MTExMCAxMTYzIDExQkI7CitEMTBEO0QxMEQ7MTExMCAxMTYzIDExQkM7RDEwRDsxMTEwIDExNjMgMTFCQzsKK0QxMEU7RDEwRTsxMTEwIDExNjMgMTFCRDtEMTBFOzExMTAgMTE2MyAxMUJEOworRDEwRjtEMTBGOzExMTAgMTE2MyAxMUJFO0QxMEY7MTExMCAxMTYzIDExQkU7CitEMTEwO0QxMTA7MTExMCAxMTYzIDExQkY7RDExMDsxMTEwIDExNjMgMTFCRjsKK0QxMTE7RDExMTsxMTEwIDExNjMgMTFDMDtEMTExOzExMTAgMTE2MyAxMUMwOworRDExMjtEMTEyOzExMTAgMTE2MyAxMUMxO0QxMTI7MTExMCAxMTYzIDExQzE7CitEMTEzO0QxMTM7MTExMCAxMTYzIDExQzI7RDExMzsxMTEwIDExNjMgMTFDMjsKK0QxMTQ7RDExNDsxMTEwIDExNjQ7RDExNDsxMTEwIDExNjQ7CitEMTE1O0QxMTU7MTExMCAxMTY0IDExQTg7RDExNTsxMTEwIDExNjQgMTFBODsKK0QxMTY7RDExNjsxMTEwIDExNjQgMTFBOTtEMTE2OzExMTAgMTE2NCAxMUE5OworRDExNztEMTE3OzExMTAgMTE2NCAxMUFBO0QxMTc7MTExMCAxMTY0IDExQUE7CitEMTE4O0QxMTg7MTExMCAxMTY0IDExQUI7RDExODsxMTEwIDExNjQgMTFBQjsKK0QxMTk7RDExOTsxMTEwIDExNjQgMTFBQztEMTE5OzExMTAgMTE2NCAxMUFDOworRDExQTtEMTFBOzExMTAgMTE2NCAxMUFEO0QxMUE7MTExMCAxMTY0IDExQUQ7CitEMTFCO0QxMUI7MTExMCAxMTY0IDExQUU7RDExQjsxMTEwIDExNjQgMTFBRTsKK0QxMUM7RDExQzsxMTEwIDExNjQgMTFBRjtEMTFDOzExMTAgMTE2NCAxMUFGOworRDExRDtEMTFEOzExMTAgMTE2NCAxMUIwO0QxMUQ7MTExMCAxMTY0IDExQjA7CitEMTFFO0QxMUU7MTExMCAxMTY0IDExQjE7RDExRTsxMTEwIDExNjQgMTFCMTsKK0QxMUY7RDExRjsxMTEwIDExNjQgMTFCMjtEMTFGOzExMTAgMTE2NCAxMUIyOworRDEyMDtEMTIwOzExMTAgMTE2NCAxMUIzO0QxMjA7MTExMCAxMTY0IDExQjM7CitEMTIxO0QxMjE7MTExMCAxMTY0IDExQjQ7RDEyMTsxMTEwIDExNjQgMTFCNDsKK0QxMjI7RDEyMjsxMTEwIDExNjQgMTFCNTtEMTIyOzExMTAgMTE2NCAxMUI1OworRDEyMztEMTIzOzExMTAgMTE2NCAxMUI2O0QxMjM7MTExMCAxMTY0IDExQjY7CitEMTI0O0QxMjQ7MTExMCAxMTY0IDExQjc7RDEyNDsxMTEwIDExNjQgMTFCNzsKK0QxMjU7RDEyNTsxMTEwIDExNjQgMTFCODtEMTI1OzExMTAgMTE2NCAxMUI4OworRDEyNjtEMTI2OzExMTAgMTE2NCAxMUI5O0QxMjY7MTExMCAxMTY0IDExQjk7CitEMTI3O0QxMjc7MTExMCAxMTY0IDExQkE7RDEyNzsxMTEwIDExNjQgMTFCQTsKK0QxMjg7RDEyODsxMTEwIDExNjQgMTFCQjtEMTI4OzExMTAgMTE2NCAxMUJCOworRDEyOTtEMTI5OzExMTAgMTE2NCAxMUJDO0QxMjk7MTExMCAxMTY0IDExQkM7CitEMTJBO0QxMkE7MTExMCAxMTY0IDExQkQ7RDEyQTsxMTEwIDExNjQgMTFCRDsKK0QxMkI7RDEyQjsxMTEwIDExNjQgMTFCRTtEMTJCOzExMTAgMTE2NCAxMUJFOworRDEyQztEMTJDOzExMTAgMTE2NCAxMUJGO0QxMkM7MTExMCAxMTY0IDExQkY7CitEMTJEO0QxMkQ7MTExMCAxMTY0IDExQzA7RDEyRDsxMTEwIDExNjQgMTFDMDsKK0QxMkU7RDEyRTsxMTEwIDExNjQgMTFDMTtEMTJFOzExMTAgMTE2NCAxMUMxOworRDEyRjtEMTJGOzExMTAgMTE2NCAxMUMyO0QxMkY7MTExMCAxMTY0IDExQzI7CitEMTMwO0QxMzA7MTExMCAxMTY1O0QxMzA7MTExMCAxMTY1OworRDEzMTtEMTMxOzExMTAgMTE2NSAxMUE4O0QxMzE7MTExMCAxMTY1IDExQTg7CitEMTMyO0QxMzI7MTExMCAxMTY1IDExQTk7RDEzMjsxMTEwIDExNjUgMTFBOTsKK0QxMzM7RDEzMzsxMTEwIDExNjUgMTFBQTtEMTMzOzExMTAgMTE2NSAxMUFBOworRDEzNDtEMTM0OzExMTAgMTE2NSAxMUFCO0QxMzQ7MTExMCAxMTY1IDExQUI7CitEMTM1O0QxMzU7MTExMCAxMTY1IDExQUM7RDEzNTsxMTEwIDExNjUgMTFBQzsKK0QxMzY7RDEzNjsxMTEwIDExNjUgMTFBRDtEMTM2OzExMTAgMTE2NSAxMUFEOworRDEzNztEMTM3OzExMTAgMTE2NSAxMUFFO0QxMzc7MTExMCAxMTY1IDExQUU7CitEMTM4O0QxMzg7MTExMCAxMTY1IDExQUY7RDEzODsxMTEwIDExNjUgMTFBRjsKK0QxMzk7RDEzOTsxMTEwIDExNjUgMTFCMDtEMTM5OzExMTAgMTE2NSAxMUIwOworRDEzQTtEMTNBOzExMTAgMTE2NSAxMUIxO0QxM0E7MTExMCAxMTY1IDExQjE7CitEMTNCO0QxM0I7MTExMCAxMTY1IDExQjI7RDEzQjsxMTEwIDExNjUgMTFCMjsKK0QxM0M7RDEzQzsxMTEwIDExNjUgMTFCMztEMTNDOzExMTAgMTE2NSAxMUIzOworRDEzRDtEMTNEOzExMTAgMTE2NSAxMUI0O0QxM0Q7MTExMCAxMTY1IDExQjQ7CitEMTNFO0QxM0U7MTExMCAxMTY1IDExQjU7RDEzRTsxMTEwIDExNjUgMTFCNTsKK0QxM0Y7RDEzRjsxMTEwIDExNjUgMTFCNjtEMTNGOzExMTAgMTE2NSAxMUI2OworRDE0MDtEMTQwOzExMTAgMTE2NSAxMUI3O0QxNDA7MTExMCAxMTY1IDExQjc7CitEMTQxO0QxNDE7MTExMCAxMTY1IDExQjg7RDE0MTsxMTEwIDExNjUgMTFCODsKK0QxNDI7RDE0MjsxMTEwIDExNjUgMTFCOTtEMTQyOzExMTAgMTE2NSAxMUI5OworRDE0MztEMTQzOzExMTAgMTE2NSAxMUJBO0QxNDM7MTExMCAxMTY1IDExQkE7CitEMTQ0O0QxNDQ7MTExMCAxMTY1IDExQkI7RDE0NDsxMTEwIDExNjUgMTFCQjsKK0QxNDU7RDE0NTsxMTEwIDExNjUgMTFCQztEMTQ1OzExMTAgMTE2NSAxMUJDOworRDE0NjtEMTQ2OzExMTAgMTE2NSAxMUJEO0QxNDY7MTExMCAxMTY1IDExQkQ7CitEMTQ3O0QxNDc7MTExMCAxMTY1IDExQkU7RDE0NzsxMTEwIDExNjUgMTFCRTsKK0QxNDg7RDE0ODsxMTEwIDExNjUgMTFCRjtEMTQ4OzExMTAgMTE2NSAxMUJGOworRDE0OTtEMTQ5OzExMTAgMTE2NSAxMUMwO0QxNDk7MTExMCAxMTY1IDExQzA7CitEMTRBO0QxNEE7MTExMCAxMTY1IDExQzE7RDE0QTsxMTEwIDExNjUgMTFDMTsKK0QxNEI7RDE0QjsxMTEwIDExNjUgMTFDMjtEMTRCOzExMTAgMTE2NSAxMUMyOworRDE0QztEMTRDOzExMTAgMTE2NjtEMTRDOzExMTAgMTE2NjsKK0QxNEQ7RDE0RDsxMTEwIDExNjYgMTFBODtEMTREOzExMTAgMTE2NiAxMUE4OworRDE0RTtEMTRFOzExMTAgMTE2NiAxMUE5O0QxNEU7MTExMCAxMTY2IDExQTk7CitEMTRGO0QxNEY7MTExMCAxMTY2IDExQUE7RDE0RjsxMTEwIDExNjYgMTFBQTsKK0QxNTA7RDE1MDsxMTEwIDExNjYgMTFBQjtEMTUwOzExMTAgMTE2NiAxMUFCOworRDE1MTtEMTUxOzExMTAgMTE2NiAxMUFDO0QxNTE7MTExMCAxMTY2IDExQUM7CitEMTUyO0QxNTI7MTExMCAxMTY2IDExQUQ7RDE1MjsxMTEwIDExNjYgMTFBRDsKK0QxNTM7RDE1MzsxMTEwIDExNjYgMTFBRTtEMTUzOzExMTAgMTE2NiAxMUFFOworRDE1NDtEMTU0OzExMTAgMTE2NiAxMUFGO0QxNTQ7MTExMCAxMTY2IDExQUY7CitEMTU1O0QxNTU7MTExMCAxMTY2IDExQjA7RDE1NTsxMTEwIDExNjYgMTFCMDsKK0QxNTY7RDE1NjsxMTEwIDExNjYgMTFCMTtEMTU2OzExMTAgMTE2NiAxMUIxOworRDE1NztEMTU3OzExMTAgMTE2NiAxMUIyO0QxNTc7MTExMCAxMTY2IDExQjI7CitEMTU4O0QxNTg7MTExMCAxMTY2IDExQjM7RDE1ODsxMTEwIDExNjYgMTFCMzsKK0QxNTk7RDE1OTsxMTEwIDExNjYgMTFCNDtEMTU5OzExMTAgMTE2NiAxMUI0OworRDE1QTtEMTVBOzExMTAgMTE2NiAxMUI1O0QxNUE7MTExMCAxMTY2IDExQjU7CitEMTVCO0QxNUI7MTExMCAxMTY2IDExQjY7RDE1QjsxMTEwIDExNjYgMTFCNjsKK0QxNUM7RDE1QzsxMTEwIDExNjYgMTFCNztEMTVDOzExMTAgMTE2NiAxMUI3OworRDE1RDtEMTVEOzExMTAgMTE2NiAxMUI4O0QxNUQ7MTExMCAxMTY2IDExQjg7CitEMTVFO0QxNUU7MTExMCAxMTY2IDExQjk7RDE1RTsxMTEwIDExNjYgMTFCOTsKK0QxNUY7RDE1RjsxMTEwIDExNjYgMTFCQTtEMTVGOzExMTAgMTE2NiAxMUJBOworRDE2MDtEMTYwOzExMTAgMTE2NiAxMUJCO0QxNjA7MTExMCAxMTY2IDExQkI7CitEMTYxO0QxNjE7MTExMCAxMTY2IDExQkM7RDE2MTsxMTEwIDExNjYgMTFCQzsKK0QxNjI7RDE2MjsxMTEwIDExNjYgMTFCRDtEMTYyOzExMTAgMTE2NiAxMUJEOworRDE2MztEMTYzOzExMTAgMTE2NiAxMUJFO0QxNjM7MTExMCAxMTY2IDExQkU7CitEMTY0O0QxNjQ7MTExMCAxMTY2IDExQkY7RDE2NDsxMTEwIDExNjYgMTFCRjsKK0QxNjU7RDE2NTsxMTEwIDExNjYgMTFDMDtEMTY1OzExMTAgMTE2NiAxMUMwOworRDE2NjtEMTY2OzExMTAgMTE2NiAxMUMxO0QxNjY7MTExMCAxMTY2IDExQzE7CitEMTY3O0QxNjc7MTExMCAxMTY2IDExQzI7RDE2NzsxMTEwIDExNjYgMTFDMjsKK0QxNjg7RDE2ODsxMTEwIDExNjc7RDE2ODsxMTEwIDExNjc7CitEMTY5O0QxNjk7MTExMCAxMTY3IDExQTg7RDE2OTsxMTEwIDExNjcgMTFBODsKK0QxNkE7RDE2QTsxMTEwIDExNjcgMTFBOTtEMTZBOzExMTAgMTE2NyAxMUE5OworRDE2QjtEMTZCOzExMTAgMTE2NyAxMUFBO0QxNkI7MTExMCAxMTY3IDExQUE7CitEMTZDO0QxNkM7MTExMCAxMTY3IDExQUI7RDE2QzsxMTEwIDExNjcgMTFBQjsKK0QxNkQ7RDE2RDsxMTEwIDExNjcgMTFBQztEMTZEOzExMTAgMTE2NyAxMUFDOworRDE2RTtEMTZFOzExMTAgMTE2NyAxMUFEO0QxNkU7MTExMCAxMTY3IDExQUQ7CitEMTZGO0QxNkY7MTExMCAxMTY3IDExQUU7RDE2RjsxMTEwIDExNjcgMTFBRTsKK0QxNzA7RDE3MDsxMTEwIDExNjcgMTFBRjtEMTcwOzExMTAgMTE2NyAxMUFGOworRDE3MTtEMTcxOzExMTAgMTE2NyAxMUIwO0QxNzE7MTExMCAxMTY3IDExQjA7CitEMTcyO0QxNzI7MTExMCAxMTY3IDExQjE7RDE3MjsxMTEwIDExNjcgMTFCMTsKK0QxNzM7RDE3MzsxMTEwIDExNjcgMTFCMjtEMTczOzExMTAgMTE2NyAxMUIyOworRDE3NDtEMTc0OzExMTAgMTE2NyAxMUIzO0QxNzQ7MTExMCAxMTY3IDExQjM7CitEMTc1O0QxNzU7MTExMCAxMTY3IDExQjQ7RDE3NTsxMTEwIDExNjcgMTFCNDsKK0QxNzY7RDE3NjsxMTEwIDExNjcgMTFCNTtEMTc2OzExMTAgMTE2NyAxMUI1OworRDE3NztEMTc3OzExMTAgMTE2NyAxMUI2O0QxNzc7MTExMCAxMTY3IDExQjY7CitEMTc4O0QxNzg7MTExMCAxMTY3IDExQjc7RDE3ODsxMTEwIDExNjcgMTFCNzsKK0QxNzk7RDE3OTsxMTEwIDExNjcgMTFCODtEMTc5OzExMTAgMTE2NyAxMUI4OworRDE3QTtEMTdBOzExMTAgMTE2NyAxMUI5O0QxN0E7MTExMCAxMTY3IDExQjk7CitEMTdCO0QxN0I7MTExMCAxMTY3IDExQkE7RDE3QjsxMTEwIDExNjcgMTFCQTsKK0QxN0M7RDE3QzsxMTEwIDExNjcgMTFCQjtEMTdDOzExMTAgMTE2NyAxMUJCOworRDE3RDtEMTdEOzExMTAgMTE2NyAxMUJDO0QxN0Q7MTExMCAxMTY3IDExQkM7CitEMTdFO0QxN0U7MTExMCAxMTY3IDExQkQ7RDE3RTsxMTEwIDExNjcgMTFCRDsKK0QxN0Y7RDE3RjsxMTEwIDExNjcgMTFCRTtEMTdGOzExMTAgMTE2NyAxMUJFOworRDE4MDtEMTgwOzExMTAgMTE2NyAxMUJGO0QxODA7MTExMCAxMTY3IDExQkY7CitEMTgxO0QxODE7MTExMCAxMTY3IDExQzA7RDE4MTsxMTEwIDExNjcgMTFDMDsKK0QxODI7RDE4MjsxMTEwIDExNjcgMTFDMTtEMTgyOzExMTAgMTE2NyAxMUMxOworRDE4MztEMTgzOzExMTAgMTE2NyAxMUMyO0QxODM7MTExMCAxMTY3IDExQzI7CitEMTg0O0QxODQ7MTExMCAxMTY4O0QxODQ7MTExMCAxMTY4OworRDE4NTtEMTg1OzExMTAgMTE2OCAxMUE4O0QxODU7MTExMCAxMTY4IDExQTg7CitEMTg2O0QxODY7MTExMCAxMTY4IDExQTk7RDE4NjsxMTEwIDExNjggMTFBOTsKK0QxODc7RDE4NzsxMTEwIDExNjggMTFBQTtEMTg3OzExMTAgMTE2OCAxMUFBOworRDE4ODtEMTg4OzExMTAgMTE2OCAxMUFCO0QxODg7MTExMCAxMTY4IDExQUI7CitEMTg5O0QxODk7MTExMCAxMTY4IDExQUM7RDE4OTsxMTEwIDExNjggMTFBQzsKK0QxOEE7RDE4QTsxMTEwIDExNjggMTFBRDtEMThBOzExMTAgMTE2OCAxMUFEOworRDE4QjtEMThCOzExMTAgMTE2OCAxMUFFO0QxOEI7MTExMCAxMTY4IDExQUU7CitEMThDO0QxOEM7MTExMCAxMTY4IDExQUY7RDE4QzsxMTEwIDExNjggMTFBRjsKK0QxOEQ7RDE4RDsxMTEwIDExNjggMTFCMDtEMThEOzExMTAgMTE2OCAxMUIwOworRDE4RTtEMThFOzExMTAgMTE2OCAxMUIxO0QxOEU7MTExMCAxMTY4IDExQjE7CitEMThGO0QxOEY7MTExMCAxMTY4IDExQjI7RDE4RjsxMTEwIDExNjggMTFCMjsKK0QxOTA7RDE5MDsxMTEwIDExNjggMTFCMztEMTkwOzExMTAgMTE2OCAxMUIzOworRDE5MTtEMTkxOzExMTAgMTE2OCAxMUI0O0QxOTE7MTExMCAxMTY4IDExQjQ7CitEMTkyO0QxOTI7MTExMCAxMTY4IDExQjU7RDE5MjsxMTEwIDExNjggMTFCNTsKK0QxOTM7RDE5MzsxMTEwIDExNjggMTFCNjtEMTkzOzExMTAgMTE2OCAxMUI2OworRDE5NDtEMTk0OzExMTAgMTE2OCAxMUI3O0QxOTQ7MTExMCAxMTY4IDExQjc7CitEMTk1O0QxOTU7MTExMCAxMTY4IDExQjg7RDE5NTsxMTEwIDExNjggMTFCODsKK0QxOTY7RDE5NjsxMTEwIDExNjggMTFCOTtEMTk2OzExMTAgMTE2OCAxMUI5OworRDE5NztEMTk3OzExMTAgMTE2OCAxMUJBO0QxOTc7MTExMCAxMTY4IDExQkE7CitEMTk4O0QxOTg7MTExMCAxMTY4IDExQkI7RDE5ODsxMTEwIDExNjggMTFCQjsKK0QxOTk7RDE5OTsxMTEwIDExNjggMTFCQztEMTk5OzExMTAgMTE2OCAxMUJDOworRDE5QTtEMTlBOzExMTAgMTE2OCAxMUJEO0QxOUE7MTExMCAxMTY4IDExQkQ7CitEMTlCO0QxOUI7MTExMCAxMTY4IDExQkU7RDE5QjsxMTEwIDExNjggMTFCRTsKK0QxOUM7RDE5QzsxMTEwIDExNjggMTFCRjtEMTlDOzExMTAgMTE2OCAxMUJGOworRDE5RDtEMTlEOzExMTAgMTE2OCAxMUMwO0QxOUQ7MTExMCAxMTY4IDExQzA7CitEMTlFO0QxOUU7MTExMCAxMTY4IDExQzE7RDE5RTsxMTEwIDExNjggMTFDMTsKK0QxOUY7RDE5RjsxMTEwIDExNjggMTFDMjtEMTlGOzExMTAgMTE2OCAxMUMyOworRDFBMDtEMUEwOzExMTAgMTE2OTtEMUEwOzExMTAgMTE2OTsKK0QxQTE7RDFBMTsxMTEwIDExNjkgMTFBODtEMUExOzExMTAgMTE2OSAxMUE4OworRDFBMjtEMUEyOzExMTAgMTE2OSAxMUE5O0QxQTI7MTExMCAxMTY5IDExQTk7CitEMUEzO0QxQTM7MTExMCAxMTY5IDExQUE7RDFBMzsxMTEwIDExNjkgMTFBQTsKK0QxQTQ7RDFBNDsxMTEwIDExNjkgMTFBQjtEMUE0OzExMTAgMTE2OSAxMUFCOworRDFBNTtEMUE1OzExMTAgMTE2OSAxMUFDO0QxQTU7MTExMCAxMTY5IDExQUM7CitEMUE2O0QxQTY7MTExMCAxMTY5IDExQUQ7RDFBNjsxMTEwIDExNjkgMTFBRDsKK0QxQTc7RDFBNzsxMTEwIDExNjkgMTFBRTtEMUE3OzExMTAgMTE2OSAxMUFFOworRDFBODtEMUE4OzExMTAgMTE2OSAxMUFGO0QxQTg7MTExMCAxMTY5IDExQUY7CitEMUE5O0QxQTk7MTExMCAxMTY5IDExQjA7RDFBOTsxMTEwIDExNjkgMTFCMDsKK0QxQUE7RDFBQTsxMTEwIDExNjkgMTFCMTtEMUFBOzExMTAgMTE2OSAxMUIxOworRDFBQjtEMUFCOzExMTAgMTE2OSAxMUIyO0QxQUI7MTExMCAxMTY5IDExQjI7CitEMUFDO0QxQUM7MTExMCAxMTY5IDExQjM7RDFBQzsxMTEwIDExNjkgMTFCMzsKK0QxQUQ7RDFBRDsxMTEwIDExNjkgMTFCNDtEMUFEOzExMTAgMTE2OSAxMUI0OworRDFBRTtEMUFFOzExMTAgMTE2OSAxMUI1O0QxQUU7MTExMCAxMTY5IDExQjU7CitEMUFGO0QxQUY7MTExMCAxMTY5IDExQjY7RDFBRjsxMTEwIDExNjkgMTFCNjsKK0QxQjA7RDFCMDsxMTEwIDExNjkgMTFCNztEMUIwOzExMTAgMTE2OSAxMUI3OworRDFCMTtEMUIxOzExMTAgMTE2OSAxMUI4O0QxQjE7MTExMCAxMTY5IDExQjg7CitEMUIyO0QxQjI7MTExMCAxMTY5IDExQjk7RDFCMjsxMTEwIDExNjkgMTFCOTsKK0QxQjM7RDFCMzsxMTEwIDExNjkgMTFCQTtEMUIzOzExMTAgMTE2OSAxMUJBOworRDFCNDtEMUI0OzExMTAgMTE2OSAxMUJCO0QxQjQ7MTExMCAxMTY5IDExQkI7CitEMUI1O0QxQjU7MTExMCAxMTY5IDExQkM7RDFCNTsxMTEwIDExNjkgMTFCQzsKK0QxQjY7RDFCNjsxMTEwIDExNjkgMTFCRDtEMUI2OzExMTAgMTE2OSAxMUJEOworRDFCNztEMUI3OzExMTAgMTE2OSAxMUJFO0QxQjc7MTExMCAxMTY5IDExQkU7CitEMUI4O0QxQjg7MTExMCAxMTY5IDExQkY7RDFCODsxMTEwIDExNjkgMTFCRjsKK0QxQjk7RDFCOTsxMTEwIDExNjkgMTFDMDtEMUI5OzExMTAgMTE2OSAxMUMwOworRDFCQTtEMUJBOzExMTAgMTE2OSAxMUMxO0QxQkE7MTExMCAxMTY5IDExQzE7CitEMUJCO0QxQkI7MTExMCAxMTY5IDExQzI7RDFCQjsxMTEwIDExNjkgMTFDMjsKK0QxQkM7RDFCQzsxMTEwIDExNkE7RDFCQzsxMTEwIDExNkE7CitEMUJEO0QxQkQ7MTExMCAxMTZBIDExQTg7RDFCRDsxMTEwIDExNkEgMTFBODsKK0QxQkU7RDFCRTsxMTEwIDExNkEgMTFBOTtEMUJFOzExMTAgMTE2QSAxMUE5OworRDFCRjtEMUJGOzExMTAgMTE2QSAxMUFBO0QxQkY7MTExMCAxMTZBIDExQUE7CitEMUMwO0QxQzA7MTExMCAxMTZBIDExQUI7RDFDMDsxMTEwIDExNkEgMTFBQjsKK0QxQzE7RDFDMTsxMTEwIDExNkEgMTFBQztEMUMxOzExMTAgMTE2QSAxMUFDOworRDFDMjtEMUMyOzExMTAgMTE2QSAxMUFEO0QxQzI7MTExMCAxMTZBIDExQUQ7CitEMUMzO0QxQzM7MTExMCAxMTZBIDExQUU7RDFDMzsxMTEwIDExNkEgMTFBRTsKK0QxQzQ7RDFDNDsxMTEwIDExNkEgMTFBRjtEMUM0OzExMTAgMTE2QSAxMUFGOworRDFDNTtEMUM1OzExMTAgMTE2QSAxMUIwO0QxQzU7MTExMCAxMTZBIDExQjA7CitEMUM2O0QxQzY7MTExMCAxMTZBIDExQjE7RDFDNjsxMTEwIDExNkEgMTFCMTsKK0QxQzc7RDFDNzsxMTEwIDExNkEgMTFCMjtEMUM3OzExMTAgMTE2QSAxMUIyOworRDFDODtEMUM4OzExMTAgMTE2QSAxMUIzO0QxQzg7MTExMCAxMTZBIDExQjM7CitEMUM5O0QxQzk7MTExMCAxMTZBIDExQjQ7RDFDOTsxMTEwIDExNkEgMTFCNDsKK0QxQ0E7RDFDQTsxMTEwIDExNkEgMTFCNTtEMUNBOzExMTAgMTE2QSAxMUI1OworRDFDQjtEMUNCOzExMTAgMTE2QSAxMUI2O0QxQ0I7MTExMCAxMTZBIDExQjY7CitEMUNDO0QxQ0M7MTExMCAxMTZBIDExQjc7RDFDQzsxMTEwIDExNkEgMTFCNzsKK0QxQ0Q7RDFDRDsxMTEwIDExNkEgMTFCODtEMUNEOzExMTAgMTE2QSAxMUI4OworRDFDRTtEMUNFOzExMTAgMTE2QSAxMUI5O0QxQ0U7MTExMCAxMTZBIDExQjk7CitEMUNGO0QxQ0Y7MTExMCAxMTZBIDExQkE7RDFDRjsxMTEwIDExNkEgMTFCQTsKK0QxRDA7RDFEMDsxMTEwIDExNkEgMTFCQjtEMUQwOzExMTAgMTE2QSAxMUJCOworRDFEMTtEMUQxOzExMTAgMTE2QSAxMUJDO0QxRDE7MTExMCAxMTZBIDExQkM7CitEMUQyO0QxRDI7MTExMCAxMTZBIDExQkQ7RDFEMjsxMTEwIDExNkEgMTFCRDsKK0QxRDM7RDFEMzsxMTEwIDExNkEgMTFCRTtEMUQzOzExMTAgMTE2QSAxMUJFOworRDFENDtEMUQ0OzExMTAgMTE2QSAxMUJGO0QxRDQ7MTExMCAxMTZBIDExQkY7CitEMUQ1O0QxRDU7MTExMCAxMTZBIDExQzA7RDFENTsxMTEwIDExNkEgMTFDMDsKK0QxRDY7RDFENjsxMTEwIDExNkEgMTFDMTtEMUQ2OzExMTAgMTE2QSAxMUMxOworRDFENztEMUQ3OzExMTAgMTE2QSAxMUMyO0QxRDc7MTExMCAxMTZBIDExQzI7CitEMUQ4O0QxRDg7MTExMCAxMTZCO0QxRDg7MTExMCAxMTZCOworRDFEOTtEMUQ5OzExMTAgMTE2QiAxMUE4O0QxRDk7MTExMCAxMTZCIDExQTg7CitEMURBO0QxREE7MTExMCAxMTZCIDExQTk7RDFEQTsxMTEwIDExNkIgMTFBOTsKK0QxREI7RDFEQjsxMTEwIDExNkIgMTFBQTtEMURCOzExMTAgMTE2QiAxMUFBOworRDFEQztEMURDOzExMTAgMTE2QiAxMUFCO0QxREM7MTExMCAxMTZCIDExQUI7CitEMUREO0QxREQ7MTExMCAxMTZCIDExQUM7RDFERDsxMTEwIDExNkIgMTFBQzsKK0QxREU7RDFERTsxMTEwIDExNkIgMTFBRDtEMURFOzExMTAgMTE2QiAxMUFEOworRDFERjtEMURGOzExMTAgMTE2QiAxMUFFO0QxREY7MTExMCAxMTZCIDExQUU7CitEMUUwO0QxRTA7MTExMCAxMTZCIDExQUY7RDFFMDsxMTEwIDExNkIgMTFBRjsKK0QxRTE7RDFFMTsxMTEwIDExNkIgMTFCMDtEMUUxOzExMTAgMTE2QiAxMUIwOworRDFFMjtEMUUyOzExMTAgMTE2QiAxMUIxO0QxRTI7MTExMCAxMTZCIDExQjE7CitEMUUzO0QxRTM7MTExMCAxMTZCIDExQjI7RDFFMzsxMTEwIDExNkIgMTFCMjsKK0QxRTQ7RDFFNDsxMTEwIDExNkIgMTFCMztEMUU0OzExMTAgMTE2QiAxMUIzOworRDFFNTtEMUU1OzExMTAgMTE2QiAxMUI0O0QxRTU7MTExMCAxMTZCIDExQjQ7CitEMUU2O0QxRTY7MTExMCAxMTZCIDExQjU7RDFFNjsxMTEwIDExNkIgMTFCNTsKK0QxRTc7RDFFNzsxMTEwIDExNkIgMTFCNjtEMUU3OzExMTAgMTE2QiAxMUI2OworRDFFODtEMUU4OzExMTAgMTE2QiAxMUI3O0QxRTg7MTExMCAxMTZCIDExQjc7CitEMUU5O0QxRTk7MTExMCAxMTZCIDExQjg7RDFFOTsxMTEwIDExNkIgMTFCODsKK0QxRUE7RDFFQTsxMTEwIDExNkIgMTFCOTtEMUVBOzExMTAgMTE2QiAxMUI5OworRDFFQjtEMUVCOzExMTAgMTE2QiAxMUJBO0QxRUI7MTExMCAxMTZCIDExQkE7CitEMUVDO0QxRUM7MTExMCAxMTZCIDExQkI7RDFFQzsxMTEwIDExNkIgMTFCQjsKK0QxRUQ7RDFFRDsxMTEwIDExNkIgMTFCQztEMUVEOzExMTAgMTE2QiAxMUJDOworRDFFRTtEMUVFOzExMTAgMTE2QiAxMUJEO0QxRUU7MTExMCAxMTZCIDExQkQ7CitEMUVGO0QxRUY7MTExMCAxMTZCIDExQkU7RDFFRjsxMTEwIDExNkIgMTFCRTsKK0QxRjA7RDFGMDsxMTEwIDExNkIgMTFCRjtEMUYwOzExMTAgMTE2QiAxMUJGOworRDFGMTtEMUYxOzExMTAgMTE2QiAxMUMwO0QxRjE7MTExMCAxMTZCIDExQzA7CitEMUYyO0QxRjI7MTExMCAxMTZCIDExQzE7RDFGMjsxMTEwIDExNkIgMTFDMTsKK0QxRjM7RDFGMzsxMTEwIDExNkIgMTFDMjtEMUYzOzExMTAgMTE2QiAxMUMyOworRDFGNDtEMUY0OzExMTAgMTE2QztEMUY0OzExMTAgMTE2QzsKK0QxRjU7RDFGNTsxMTEwIDExNkMgMTFBODtEMUY1OzExMTAgMTE2QyAxMUE4OworRDFGNjtEMUY2OzExMTAgMTE2QyAxMUE5O0QxRjY7MTExMCAxMTZDIDExQTk7CitEMUY3O0QxRjc7MTExMCAxMTZDIDExQUE7RDFGNzsxMTEwIDExNkMgMTFBQTsKK0QxRjg7RDFGODsxMTEwIDExNkMgMTFBQjtEMUY4OzExMTAgMTE2QyAxMUFCOworRDFGOTtEMUY5OzExMTAgMTE2QyAxMUFDO0QxRjk7MTExMCAxMTZDIDExQUM7CitEMUZBO0QxRkE7MTExMCAxMTZDIDExQUQ7RDFGQTsxMTEwIDExNkMgMTFBRDsKK0QxRkI7RDFGQjsxMTEwIDExNkMgMTFBRTtEMUZCOzExMTAgMTE2QyAxMUFFOworRDFGQztEMUZDOzExMTAgMTE2QyAxMUFGO0QxRkM7MTExMCAxMTZDIDExQUY7CitEMUZEO0QxRkQ7MTExMCAxMTZDIDExQjA7RDFGRDsxMTEwIDExNkMgMTFCMDsKK0QxRkU7RDFGRTsxMTEwIDExNkMgMTFCMTtEMUZFOzExMTAgMTE2QyAxMUIxOworRDFGRjtEMUZGOzExMTAgMTE2QyAxMUIyO0QxRkY7MTExMCAxMTZDIDExQjI7CitEMjAwO0QyMDA7MTExMCAxMTZDIDExQjM7RDIwMDsxMTEwIDExNkMgMTFCMzsKK0QyMDE7RDIwMTsxMTEwIDExNkMgMTFCNDtEMjAxOzExMTAgMTE2QyAxMUI0OworRDIwMjtEMjAyOzExMTAgMTE2QyAxMUI1O0QyMDI7MTExMCAxMTZDIDExQjU7CitEMjAzO0QyMDM7MTExMCAxMTZDIDExQjY7RDIwMzsxMTEwIDExNkMgMTFCNjsKK0QyMDQ7RDIwNDsxMTEwIDExNkMgMTFCNztEMjA0OzExMTAgMTE2QyAxMUI3OworRDIwNTtEMjA1OzExMTAgMTE2QyAxMUI4O0QyMDU7MTExMCAxMTZDIDExQjg7CitEMjA2O0QyMDY7MTExMCAxMTZDIDExQjk7RDIwNjsxMTEwIDExNkMgMTFCOTsKK0QyMDc7RDIwNzsxMTEwIDExNkMgMTFCQTtEMjA3OzExMTAgMTE2QyAxMUJBOworRDIwODtEMjA4OzExMTAgMTE2QyAxMUJCO0QyMDg7MTExMCAxMTZDIDExQkI7CitEMjA5O0QyMDk7MTExMCAxMTZDIDExQkM7RDIwOTsxMTEwIDExNkMgMTFCQzsKK0QyMEE7RDIwQTsxMTEwIDExNkMgMTFCRDtEMjBBOzExMTAgMTE2QyAxMUJEOworRDIwQjtEMjBCOzExMTAgMTE2QyAxMUJFO0QyMEI7MTExMCAxMTZDIDExQkU7CitEMjBDO0QyMEM7MTExMCAxMTZDIDExQkY7RDIwQzsxMTEwIDExNkMgMTFCRjsKK0QyMEQ7RDIwRDsxMTEwIDExNkMgMTFDMDtEMjBEOzExMTAgMTE2QyAxMUMwOworRDIwRTtEMjBFOzExMTAgMTE2QyAxMUMxO0QyMEU7MTExMCAxMTZDIDExQzE7CitEMjBGO0QyMEY7MTExMCAxMTZDIDExQzI7RDIwRjsxMTEwIDExNkMgMTFDMjsKK0QyMTA7RDIxMDsxMTEwIDExNkQ7RDIxMDsxMTEwIDExNkQ7CitEMjExO0QyMTE7MTExMCAxMTZEIDExQTg7RDIxMTsxMTEwIDExNkQgMTFBODsKK0QyMTI7RDIxMjsxMTEwIDExNkQgMTFBOTtEMjEyOzExMTAgMTE2RCAxMUE5OworRDIxMztEMjEzOzExMTAgMTE2RCAxMUFBO0QyMTM7MTExMCAxMTZEIDExQUE7CitEMjE0O0QyMTQ7MTExMCAxMTZEIDExQUI7RDIxNDsxMTEwIDExNkQgMTFBQjsKK0QyMTU7RDIxNTsxMTEwIDExNkQgMTFBQztEMjE1OzExMTAgMTE2RCAxMUFDOworRDIxNjtEMjE2OzExMTAgMTE2RCAxMUFEO0QyMTY7MTExMCAxMTZEIDExQUQ7CitEMjE3O0QyMTc7MTExMCAxMTZEIDExQUU7RDIxNzsxMTEwIDExNkQgMTFBRTsKK0QyMTg7RDIxODsxMTEwIDExNkQgMTFBRjtEMjE4OzExMTAgMTE2RCAxMUFGOworRDIxOTtEMjE5OzExMTAgMTE2RCAxMUIwO0QyMTk7MTExMCAxMTZEIDExQjA7CitEMjFBO0QyMUE7MTExMCAxMTZEIDExQjE7RDIxQTsxMTEwIDExNkQgMTFCMTsKK0QyMUI7RDIxQjsxMTEwIDExNkQgMTFCMjtEMjFCOzExMTAgMTE2RCAxMUIyOworRDIxQztEMjFDOzExMTAgMTE2RCAxMUIzO0QyMUM7MTExMCAxMTZEIDExQjM7CitEMjFEO0QyMUQ7MTExMCAxMTZEIDExQjQ7RDIxRDsxMTEwIDExNkQgMTFCNDsKK0QyMUU7RDIxRTsxMTEwIDExNkQgMTFCNTtEMjFFOzExMTAgMTE2RCAxMUI1OworRDIxRjtEMjFGOzExMTAgMTE2RCAxMUI2O0QyMUY7MTExMCAxMTZEIDExQjY7CitEMjIwO0QyMjA7MTExMCAxMTZEIDExQjc7RDIyMDsxMTEwIDExNkQgMTFCNzsKK0QyMjE7RDIyMTsxMTEwIDExNkQgMTFCODtEMjIxOzExMTAgMTE2RCAxMUI4OworRDIyMjtEMjIyOzExMTAgMTE2RCAxMUI5O0QyMjI7MTExMCAxMTZEIDExQjk7CitEMjIzO0QyMjM7MTExMCAxMTZEIDExQkE7RDIyMzsxMTEwIDExNkQgMTFCQTsKK0QyMjQ7RDIyNDsxMTEwIDExNkQgMTFCQjtEMjI0OzExMTAgMTE2RCAxMUJCOworRDIyNTtEMjI1OzExMTAgMTE2RCAxMUJDO0QyMjU7MTExMCAxMTZEIDExQkM7CitEMjI2O0QyMjY7MTExMCAxMTZEIDExQkQ7RDIyNjsxMTEwIDExNkQgMTFCRDsKK0QyMjc7RDIyNzsxMTEwIDExNkQgMTFCRTtEMjI3OzExMTAgMTE2RCAxMUJFOworRDIyODtEMjI4OzExMTAgMTE2RCAxMUJGO0QyMjg7MTExMCAxMTZEIDExQkY7CitEMjI5O0QyMjk7MTExMCAxMTZEIDExQzA7RDIyOTsxMTEwIDExNkQgMTFDMDsKK0QyMkE7RDIyQTsxMTEwIDExNkQgMTFDMTtEMjJBOzExMTAgMTE2RCAxMUMxOworRDIyQjtEMjJCOzExMTAgMTE2RCAxMUMyO0QyMkI7MTExMCAxMTZEIDExQzI7CitEMjJDO0QyMkM7MTExMCAxMTZFO0QyMkM7MTExMCAxMTZFOworRDIyRDtEMjJEOzExMTAgMTE2RSAxMUE4O0QyMkQ7MTExMCAxMTZFIDExQTg7CitEMjJFO0QyMkU7MTExMCAxMTZFIDExQTk7RDIyRTsxMTEwIDExNkUgMTFBOTsKK0QyMkY7RDIyRjsxMTEwIDExNkUgMTFBQTtEMjJGOzExMTAgMTE2RSAxMUFBOworRDIzMDtEMjMwOzExMTAgMTE2RSAxMUFCO0QyMzA7MTExMCAxMTZFIDExQUI7CitEMjMxO0QyMzE7MTExMCAxMTZFIDExQUM7RDIzMTsxMTEwIDExNkUgMTFBQzsKK0QyMzI7RDIzMjsxMTEwIDExNkUgMTFBRDtEMjMyOzExMTAgMTE2RSAxMUFEOworRDIzMztEMjMzOzExMTAgMTE2RSAxMUFFO0QyMzM7MTExMCAxMTZFIDExQUU7CitEMjM0O0QyMzQ7MTExMCAxMTZFIDExQUY7RDIzNDsxMTEwIDExNkUgMTFBRjsKK0QyMzU7RDIzNTsxMTEwIDExNkUgMTFCMDtEMjM1OzExMTAgMTE2RSAxMUIwOworRDIzNjtEMjM2OzExMTAgMTE2RSAxMUIxO0QyMzY7MTExMCAxMTZFIDExQjE7CitEMjM3O0QyMzc7MTExMCAxMTZFIDExQjI7RDIzNzsxMTEwIDExNkUgMTFCMjsKK0QyMzg7RDIzODsxMTEwIDExNkUgMTFCMztEMjM4OzExMTAgMTE2RSAxMUIzOworRDIzOTtEMjM5OzExMTAgMTE2RSAxMUI0O0QyMzk7MTExMCAxMTZFIDExQjQ7CitEMjNBO0QyM0E7MTExMCAxMTZFIDExQjU7RDIzQTsxMTEwIDExNkUgMTFCNTsKK0QyM0I7RDIzQjsxMTEwIDExNkUgMTFCNjtEMjNCOzExMTAgMTE2RSAxMUI2OworRDIzQztEMjNDOzExMTAgMTE2RSAxMUI3O0QyM0M7MTExMCAxMTZFIDExQjc7CitEMjNEO0QyM0Q7MTExMCAxMTZFIDExQjg7RDIzRDsxMTEwIDExNkUgMTFCODsKK0QyM0U7RDIzRTsxMTEwIDExNkUgMTFCOTtEMjNFOzExMTAgMTE2RSAxMUI5OworRDIzRjtEMjNGOzExMTAgMTE2RSAxMUJBO0QyM0Y7MTExMCAxMTZFIDExQkE7CitEMjQwO0QyNDA7MTExMCAxMTZFIDExQkI7RDI0MDsxMTEwIDExNkUgMTFCQjsKK0QyNDE7RDI0MTsxMTEwIDExNkUgMTFCQztEMjQxOzExMTAgMTE2RSAxMUJDOworRDI0MjtEMjQyOzExMTAgMTE2RSAxMUJEO0QyNDI7MTExMCAxMTZFIDExQkQ7CitEMjQzO0QyNDM7MTExMCAxMTZFIDExQkU7RDI0MzsxMTEwIDExNkUgMTFCRTsKK0QyNDQ7RDI0NDsxMTEwIDExNkUgMTFCRjtEMjQ0OzExMTAgMTE2RSAxMUJGOworRDI0NTtEMjQ1OzExMTAgMTE2RSAxMUMwO0QyNDU7MTExMCAxMTZFIDExQzA7CitEMjQ2O0QyNDY7MTExMCAxMTZFIDExQzE7RDI0NjsxMTEwIDExNkUgMTFDMTsKK0QyNDc7RDI0NzsxMTEwIDExNkUgMTFDMjtEMjQ3OzExMTAgMTE2RSAxMUMyOworRDI0ODtEMjQ4OzExMTAgMTE2RjtEMjQ4OzExMTAgMTE2RjsKK0QyNDk7RDI0OTsxMTEwIDExNkYgMTFBODtEMjQ5OzExMTAgMTE2RiAxMUE4OworRDI0QTtEMjRBOzExMTAgMTE2RiAxMUE5O0QyNEE7MTExMCAxMTZGIDExQTk7CitEMjRCO0QyNEI7MTExMCAxMTZGIDExQUE7RDI0QjsxMTEwIDExNkYgMTFBQTsKK0QyNEM7RDI0QzsxMTEwIDExNkYgMTFBQjtEMjRDOzExMTAgMTE2RiAxMUFCOworRDI0RDtEMjREOzExMTAgMTE2RiAxMUFDO0QyNEQ7MTExMCAxMTZGIDExQUM7CitEMjRFO0QyNEU7MTExMCAxMTZGIDExQUQ7RDI0RTsxMTEwIDExNkYgMTFBRDsKK0QyNEY7RDI0RjsxMTEwIDExNkYgMTFBRTtEMjRGOzExMTAgMTE2RiAxMUFFOworRDI1MDtEMjUwOzExMTAgMTE2RiAxMUFGO0QyNTA7MTExMCAxMTZGIDExQUY7CitEMjUxO0QyNTE7MTExMCAxMTZGIDExQjA7RDI1MTsxMTEwIDExNkYgMTFCMDsKK0QyNTI7RDI1MjsxMTEwIDExNkYgMTFCMTtEMjUyOzExMTAgMTE2RiAxMUIxOworRDI1MztEMjUzOzExMTAgMTE2RiAxMUIyO0QyNTM7MTExMCAxMTZGIDExQjI7CitEMjU0O0QyNTQ7MTExMCAxMTZGIDExQjM7RDI1NDsxMTEwIDExNkYgMTFCMzsKK0QyNTU7RDI1NTsxMTEwIDExNkYgMTFCNDtEMjU1OzExMTAgMTE2RiAxMUI0OworRDI1NjtEMjU2OzExMTAgMTE2RiAxMUI1O0QyNTY7MTExMCAxMTZGIDExQjU7CitEMjU3O0QyNTc7MTExMCAxMTZGIDExQjY7RDI1NzsxMTEwIDExNkYgMTFCNjsKK0QyNTg7RDI1ODsxMTEwIDExNkYgMTFCNztEMjU4OzExMTAgMTE2RiAxMUI3OworRDI1OTtEMjU5OzExMTAgMTE2RiAxMUI4O0QyNTk7MTExMCAxMTZGIDExQjg7CitEMjVBO0QyNUE7MTExMCAxMTZGIDExQjk7RDI1QTsxMTEwIDExNkYgMTFCOTsKK0QyNUI7RDI1QjsxMTEwIDExNkYgMTFCQTtEMjVCOzExMTAgMTE2RiAxMUJBOworRDI1QztEMjVDOzExMTAgMTE2RiAxMUJCO0QyNUM7MTExMCAxMTZGIDExQkI7CitEMjVEO0QyNUQ7MTExMCAxMTZGIDExQkM7RDI1RDsxMTEwIDExNkYgMTFCQzsKK0QyNUU7RDI1RTsxMTEwIDExNkYgMTFCRDtEMjVFOzExMTAgMTE2RiAxMUJEOworRDI1RjtEMjVGOzExMTAgMTE2RiAxMUJFO0QyNUY7MTExMCAxMTZGIDExQkU7CitEMjYwO0QyNjA7MTExMCAxMTZGIDExQkY7RDI2MDsxMTEwIDExNkYgMTFCRjsKK0QyNjE7RDI2MTsxMTEwIDExNkYgMTFDMDtEMjYxOzExMTAgMTE2RiAxMUMwOworRDI2MjtEMjYyOzExMTAgMTE2RiAxMUMxO0QyNjI7MTExMCAxMTZGIDExQzE7CitEMjYzO0QyNjM7MTExMCAxMTZGIDExQzI7RDI2MzsxMTEwIDExNkYgMTFDMjsKK0QyNjQ7RDI2NDsxMTEwIDExNzA7RDI2NDsxMTEwIDExNzA7CitEMjY1O0QyNjU7MTExMCAxMTcwIDExQTg7RDI2NTsxMTEwIDExNzAgMTFBODsKK0QyNjY7RDI2NjsxMTEwIDExNzAgMTFBOTtEMjY2OzExMTAgMTE3MCAxMUE5OworRDI2NztEMjY3OzExMTAgMTE3MCAxMUFBO0QyNjc7MTExMCAxMTcwIDExQUE7CitEMjY4O0QyNjg7MTExMCAxMTcwIDExQUI7RDI2ODsxMTEwIDExNzAgMTFBQjsKK0QyNjk7RDI2OTsxMTEwIDExNzAgMTFBQztEMjY5OzExMTAgMTE3MCAxMUFDOworRDI2QTtEMjZBOzExMTAgMTE3MCAxMUFEO0QyNkE7MTExMCAxMTcwIDExQUQ7CitEMjZCO0QyNkI7MTExMCAxMTcwIDExQUU7RDI2QjsxMTEwIDExNzAgMTFBRTsKK0QyNkM7RDI2QzsxMTEwIDExNzAgMTFBRjtEMjZDOzExMTAgMTE3MCAxMUFGOworRDI2RDtEMjZEOzExMTAgMTE3MCAxMUIwO0QyNkQ7MTExMCAxMTcwIDExQjA7CitEMjZFO0QyNkU7MTExMCAxMTcwIDExQjE7RDI2RTsxMTEwIDExNzAgMTFCMTsKK0QyNkY7RDI2RjsxMTEwIDExNzAgMTFCMjtEMjZGOzExMTAgMTE3MCAxMUIyOworRDI3MDtEMjcwOzExMTAgMTE3MCAxMUIzO0QyNzA7MTExMCAxMTcwIDExQjM7CitEMjcxO0QyNzE7MTExMCAxMTcwIDExQjQ7RDI3MTsxMTEwIDExNzAgMTFCNDsKK0QyNzI7RDI3MjsxMTEwIDExNzAgMTFCNTtEMjcyOzExMTAgMTE3MCAxMUI1OworRDI3MztEMjczOzExMTAgMTE3MCAxMUI2O0QyNzM7MTExMCAxMTcwIDExQjY7CitEMjc0O0QyNzQ7MTExMCAxMTcwIDExQjc7RDI3NDsxMTEwIDExNzAgMTFCNzsKK0QyNzU7RDI3NTsxMTEwIDExNzAgMTFCODtEMjc1OzExMTAgMTE3MCAxMUI4OworRDI3NjtEMjc2OzExMTAgMTE3MCAxMUI5O0QyNzY7MTExMCAxMTcwIDExQjk7CitEMjc3O0QyNzc7MTExMCAxMTcwIDExQkE7RDI3NzsxMTEwIDExNzAgMTFCQTsKK0QyNzg7RDI3ODsxMTEwIDExNzAgMTFCQjtEMjc4OzExMTAgMTE3MCAxMUJCOworRDI3OTtEMjc5OzExMTAgMTE3MCAxMUJDO0QyNzk7MTExMCAxMTcwIDExQkM7CitEMjdBO0QyN0E7MTExMCAxMTcwIDExQkQ7RDI3QTsxMTEwIDExNzAgMTFCRDsKK0QyN0I7RDI3QjsxMTEwIDExNzAgMTFCRTtEMjdCOzExMTAgMTE3MCAxMUJFOworRDI3QztEMjdDOzExMTAgMTE3MCAxMUJGO0QyN0M7MTExMCAxMTcwIDExQkY7CitEMjdEO0QyN0Q7MTExMCAxMTcwIDExQzA7RDI3RDsxMTEwIDExNzAgMTFDMDsKK0QyN0U7RDI3RTsxMTEwIDExNzAgMTFDMTtEMjdFOzExMTAgMTE3MCAxMUMxOworRDI3RjtEMjdGOzExMTAgMTE3MCAxMUMyO0QyN0Y7MTExMCAxMTcwIDExQzI7CitEMjgwO0QyODA7MTExMCAxMTcxO0QyODA7MTExMCAxMTcxOworRDI4MTtEMjgxOzExMTAgMTE3MSAxMUE4O0QyODE7MTExMCAxMTcxIDExQTg7CitEMjgyO0QyODI7MTExMCAxMTcxIDExQTk7RDI4MjsxMTEwIDExNzEgMTFBOTsKK0QyODM7RDI4MzsxMTEwIDExNzEgMTFBQTtEMjgzOzExMTAgMTE3MSAxMUFBOworRDI4NDtEMjg0OzExMTAgMTE3MSAxMUFCO0QyODQ7MTExMCAxMTcxIDExQUI7CitEMjg1O0QyODU7MTExMCAxMTcxIDExQUM7RDI4NTsxMTEwIDExNzEgMTFBQzsKK0QyODY7RDI4NjsxMTEwIDExNzEgMTFBRDtEMjg2OzExMTAgMTE3MSAxMUFEOworRDI4NztEMjg3OzExMTAgMTE3MSAxMUFFO0QyODc7MTExMCAxMTcxIDExQUU7CitEMjg4O0QyODg7MTExMCAxMTcxIDExQUY7RDI4ODsxMTEwIDExNzEgMTFBRjsKK0QyODk7RDI4OTsxMTEwIDExNzEgMTFCMDtEMjg5OzExMTAgMTE3MSAxMUIwOworRDI4QTtEMjhBOzExMTAgMTE3MSAxMUIxO0QyOEE7MTExMCAxMTcxIDExQjE7CitEMjhCO0QyOEI7MTExMCAxMTcxIDExQjI7RDI4QjsxMTEwIDExNzEgMTFCMjsKK0QyOEM7RDI4QzsxMTEwIDExNzEgMTFCMztEMjhDOzExMTAgMTE3MSAxMUIzOworRDI4RDtEMjhEOzExMTAgMTE3MSAxMUI0O0QyOEQ7MTExMCAxMTcxIDExQjQ7CitEMjhFO0QyOEU7MTExMCAxMTcxIDExQjU7RDI4RTsxMTEwIDExNzEgMTFCNTsKK0QyOEY7RDI4RjsxMTEwIDExNzEgMTFCNjtEMjhGOzExMTAgMTE3MSAxMUI2OworRDI5MDtEMjkwOzExMTAgMTE3MSAxMUI3O0QyOTA7MTExMCAxMTcxIDExQjc7CitEMjkxO0QyOTE7MTExMCAxMTcxIDExQjg7RDI5MTsxMTEwIDExNzEgMTFCODsKK0QyOTI7RDI5MjsxMTEwIDExNzEgMTFCOTtEMjkyOzExMTAgMTE3MSAxMUI5OworRDI5MztEMjkzOzExMTAgMTE3MSAxMUJBO0QyOTM7MTExMCAxMTcxIDExQkE7CitEMjk0O0QyOTQ7MTExMCAxMTcxIDExQkI7RDI5NDsxMTEwIDExNzEgMTFCQjsKK0QyOTU7RDI5NTsxMTEwIDExNzEgMTFCQztEMjk1OzExMTAgMTE3MSAxMUJDOworRDI5NjtEMjk2OzExMTAgMTE3MSAxMUJEO0QyOTY7MTExMCAxMTcxIDExQkQ7CitEMjk3O0QyOTc7MTExMCAxMTcxIDExQkU7RDI5NzsxMTEwIDExNzEgMTFCRTsKK0QyOTg7RDI5ODsxMTEwIDExNzEgMTFCRjtEMjk4OzExMTAgMTE3MSAxMUJGOworRDI5OTtEMjk5OzExMTAgMTE3MSAxMUMwO0QyOTk7MTExMCAxMTcxIDExQzA7CitEMjlBO0QyOUE7MTExMCAxMTcxIDExQzE7RDI5QTsxMTEwIDExNzEgMTFDMTsKK0QyOUI7RDI5QjsxMTEwIDExNzEgMTFDMjtEMjlCOzExMTAgMTE3MSAxMUMyOworRDI5QztEMjlDOzExMTAgMTE3MjtEMjlDOzExMTAgMTE3MjsKK0QyOUQ7RDI5RDsxMTEwIDExNzIgMTFBODtEMjlEOzExMTAgMTE3MiAxMUE4OworRDI5RTtEMjlFOzExMTAgMTE3MiAxMUE5O0QyOUU7MTExMCAxMTcyIDExQTk7CitEMjlGO0QyOUY7MTExMCAxMTcyIDExQUE7RDI5RjsxMTEwIDExNzIgMTFBQTsKK0QyQTA7RDJBMDsxMTEwIDExNzIgMTFBQjtEMkEwOzExMTAgMTE3MiAxMUFCOworRDJBMTtEMkExOzExMTAgMTE3MiAxMUFDO0QyQTE7MTExMCAxMTcyIDExQUM7CitEMkEyO0QyQTI7MTExMCAxMTcyIDExQUQ7RDJBMjsxMTEwIDExNzIgMTFBRDsKK0QyQTM7RDJBMzsxMTEwIDExNzIgMTFBRTtEMkEzOzExMTAgMTE3MiAxMUFFOworRDJBNDtEMkE0OzExMTAgMTE3MiAxMUFGO0QyQTQ7MTExMCAxMTcyIDExQUY7CitEMkE1O0QyQTU7MTExMCAxMTcyIDExQjA7RDJBNTsxMTEwIDExNzIgMTFCMDsKK0QyQTY7RDJBNjsxMTEwIDExNzIgMTFCMTtEMkE2OzExMTAgMTE3MiAxMUIxOworRDJBNztEMkE3OzExMTAgMTE3MiAxMUIyO0QyQTc7MTExMCAxMTcyIDExQjI7CitEMkE4O0QyQTg7MTExMCAxMTcyIDExQjM7RDJBODsxMTEwIDExNzIgMTFCMzsKK0QyQTk7RDJBOTsxMTEwIDExNzIgMTFCNDtEMkE5OzExMTAgMTE3MiAxMUI0OworRDJBQTtEMkFBOzExMTAgMTE3MiAxMUI1O0QyQUE7MTExMCAxMTcyIDExQjU7CitEMkFCO0QyQUI7MTExMCAxMTcyIDExQjY7RDJBQjsxMTEwIDExNzIgMTFCNjsKK0QyQUM7RDJBQzsxMTEwIDExNzIgMTFCNztEMkFDOzExMTAgMTE3MiAxMUI3OworRDJBRDtEMkFEOzExMTAgMTE3MiAxMUI4O0QyQUQ7MTExMCAxMTcyIDExQjg7CitEMkFFO0QyQUU7MTExMCAxMTcyIDExQjk7RDJBRTsxMTEwIDExNzIgMTFCOTsKK0QyQUY7RDJBRjsxMTEwIDExNzIgMTFCQTtEMkFGOzExMTAgMTE3MiAxMUJBOworRDJCMDtEMkIwOzExMTAgMTE3MiAxMUJCO0QyQjA7MTExMCAxMTcyIDExQkI7CitEMkIxO0QyQjE7MTExMCAxMTcyIDExQkM7RDJCMTsxMTEwIDExNzIgMTFCQzsKK0QyQjI7RDJCMjsxMTEwIDExNzIgMTFCRDtEMkIyOzExMTAgMTE3MiAxMUJEOworRDJCMztEMkIzOzExMTAgMTE3MiAxMUJFO0QyQjM7MTExMCAxMTcyIDExQkU7CitEMkI0O0QyQjQ7MTExMCAxMTcyIDExQkY7RDJCNDsxMTEwIDExNzIgMTFCRjsKK0QyQjU7RDJCNTsxMTEwIDExNzIgMTFDMDtEMkI1OzExMTAgMTE3MiAxMUMwOworRDJCNjtEMkI2OzExMTAgMTE3MiAxMUMxO0QyQjY7MTExMCAxMTcyIDExQzE7CitEMkI3O0QyQjc7MTExMCAxMTcyIDExQzI7RDJCNzsxMTEwIDExNzIgMTFDMjsKK0QyQjg7RDJCODsxMTEwIDExNzM7RDJCODsxMTEwIDExNzM7CitEMkI5O0QyQjk7MTExMCAxMTczIDExQTg7RDJCOTsxMTEwIDExNzMgMTFBODsKK0QyQkE7RDJCQTsxMTEwIDExNzMgMTFBOTtEMkJBOzExMTAgMTE3MyAxMUE5OworRDJCQjtEMkJCOzExMTAgMTE3MyAxMUFBO0QyQkI7MTExMCAxMTczIDExQUE7CitEMkJDO0QyQkM7MTExMCAxMTczIDExQUI7RDJCQzsxMTEwIDExNzMgMTFBQjsKK0QyQkQ7RDJCRDsxMTEwIDExNzMgMTFBQztEMkJEOzExMTAgMTE3MyAxMUFDOworRDJCRTtEMkJFOzExMTAgMTE3MyAxMUFEO0QyQkU7MTExMCAxMTczIDExQUQ7CitEMkJGO0QyQkY7MTExMCAxMTczIDExQUU7RDJCRjsxMTEwIDExNzMgMTFBRTsKK0QyQzA7RDJDMDsxMTEwIDExNzMgMTFBRjtEMkMwOzExMTAgMTE3MyAxMUFGOworRDJDMTtEMkMxOzExMTAgMTE3MyAxMUIwO0QyQzE7MTExMCAxMTczIDExQjA7CitEMkMyO0QyQzI7MTExMCAxMTczIDExQjE7RDJDMjsxMTEwIDExNzMgMTFCMTsKK0QyQzM7RDJDMzsxMTEwIDExNzMgMTFCMjtEMkMzOzExMTAgMTE3MyAxMUIyOworRDJDNDtEMkM0OzExMTAgMTE3MyAxMUIzO0QyQzQ7MTExMCAxMTczIDExQjM7CitEMkM1O0QyQzU7MTExMCAxMTczIDExQjQ7RDJDNTsxMTEwIDExNzMgMTFCNDsKK0QyQzY7RDJDNjsxMTEwIDExNzMgMTFCNTtEMkM2OzExMTAgMTE3MyAxMUI1OworRDJDNztEMkM3OzExMTAgMTE3MyAxMUI2O0QyQzc7MTExMCAxMTczIDExQjY7CitEMkM4O0QyQzg7MTExMCAxMTczIDExQjc7RDJDODsxMTEwIDExNzMgMTFCNzsKK0QyQzk7RDJDOTsxMTEwIDExNzMgMTFCODtEMkM5OzExMTAgMTE3MyAxMUI4OworRDJDQTtEMkNBOzExMTAgMTE3MyAxMUI5O0QyQ0E7MTExMCAxMTczIDExQjk7CitEMkNCO0QyQ0I7MTExMCAxMTczIDExQkE7RDJDQjsxMTEwIDExNzMgMTFCQTsKK0QyQ0M7RDJDQzsxMTEwIDExNzMgMTFCQjtEMkNDOzExMTAgMTE3MyAxMUJCOworRDJDRDtEMkNEOzExMTAgMTE3MyAxMUJDO0QyQ0Q7MTExMCAxMTczIDExQkM7CitEMkNFO0QyQ0U7MTExMCAxMTczIDExQkQ7RDJDRTsxMTEwIDExNzMgMTFCRDsKK0QyQ0Y7RDJDRjsxMTEwIDExNzMgMTFCRTtEMkNGOzExMTAgMTE3MyAxMUJFOworRDJEMDtEMkQwOzExMTAgMTE3MyAxMUJGO0QyRDA7MTExMCAxMTczIDExQkY7CitEMkQxO0QyRDE7MTExMCAxMTczIDExQzA7RDJEMTsxMTEwIDExNzMgMTFDMDsKK0QyRDI7RDJEMjsxMTEwIDExNzMgMTFDMTtEMkQyOzExMTAgMTE3MyAxMUMxOworRDJEMztEMkQzOzExMTAgMTE3MyAxMUMyO0QyRDM7MTExMCAxMTczIDExQzI7CitEMkQ0O0QyRDQ7MTExMCAxMTc0O0QyRDQ7MTExMCAxMTc0OworRDJENTtEMkQ1OzExMTAgMTE3NCAxMUE4O0QyRDU7MTExMCAxMTc0IDExQTg7CitEMkQ2O0QyRDY7MTExMCAxMTc0IDExQTk7RDJENjsxMTEwIDExNzQgMTFBOTsKK0QyRDc7RDJENzsxMTEwIDExNzQgMTFBQTtEMkQ3OzExMTAgMTE3NCAxMUFBOworRDJEODtEMkQ4OzExMTAgMTE3NCAxMUFCO0QyRDg7MTExMCAxMTc0IDExQUI7CitEMkQ5O0QyRDk7MTExMCAxMTc0IDExQUM7RDJEOTsxMTEwIDExNzQgMTFBQzsKK0QyREE7RDJEQTsxMTEwIDExNzQgMTFBRDtEMkRBOzExMTAgMTE3NCAxMUFEOworRDJEQjtEMkRCOzExMTAgMTE3NCAxMUFFO0QyREI7MTExMCAxMTc0IDExQUU7CitEMkRDO0QyREM7MTExMCAxMTc0IDExQUY7RDJEQzsxMTEwIDExNzQgMTFBRjsKK0QyREQ7RDJERDsxMTEwIDExNzQgMTFCMDtEMkREOzExMTAgMTE3NCAxMUIwOworRDJERTtEMkRFOzExMTAgMTE3NCAxMUIxO0QyREU7MTExMCAxMTc0IDExQjE7CitEMkRGO0QyREY7MTExMCAxMTc0IDExQjI7RDJERjsxMTEwIDExNzQgMTFCMjsKK0QyRTA7RDJFMDsxMTEwIDExNzQgMTFCMztEMkUwOzExMTAgMTE3NCAxMUIzOworRDJFMTtEMkUxOzExMTAgMTE3NCAxMUI0O0QyRTE7MTExMCAxMTc0IDExQjQ7CitEMkUyO0QyRTI7MTExMCAxMTc0IDExQjU7RDJFMjsxMTEwIDExNzQgMTFCNTsKK0QyRTM7RDJFMzsxMTEwIDExNzQgMTFCNjtEMkUzOzExMTAgMTE3NCAxMUI2OworRDJFNDtEMkU0OzExMTAgMTE3NCAxMUI3O0QyRTQ7MTExMCAxMTc0IDExQjc7CitEMkU1O0QyRTU7MTExMCAxMTc0IDExQjg7RDJFNTsxMTEwIDExNzQgMTFCODsKK0QyRTY7RDJFNjsxMTEwIDExNzQgMTFCOTtEMkU2OzExMTAgMTE3NCAxMUI5OworRDJFNztEMkU3OzExMTAgMTE3NCAxMUJBO0QyRTc7MTExMCAxMTc0IDExQkE7CitEMkU4O0QyRTg7MTExMCAxMTc0IDExQkI7RDJFODsxMTEwIDExNzQgMTFCQjsKK0QyRTk7RDJFOTsxMTEwIDExNzQgMTFCQztEMkU5OzExMTAgMTE3NCAxMUJDOworRDJFQTtEMkVBOzExMTAgMTE3NCAxMUJEO0QyRUE7MTExMCAxMTc0IDExQkQ7CitEMkVCO0QyRUI7MTExMCAxMTc0IDExQkU7RDJFQjsxMTEwIDExNzQgMTFCRTsKK0QyRUM7RDJFQzsxMTEwIDExNzQgMTFCRjtEMkVDOzExMTAgMTE3NCAxMUJGOworRDJFRDtEMkVEOzExMTAgMTE3NCAxMUMwO0QyRUQ7MTExMCAxMTc0IDExQzA7CitEMkVFO0QyRUU7MTExMCAxMTc0IDExQzE7RDJFRTsxMTEwIDExNzQgMTFDMTsKK0QyRUY7RDJFRjsxMTEwIDExNzQgMTFDMjtEMkVGOzExMTAgMTE3NCAxMUMyOworRDJGMDtEMkYwOzExMTAgMTE3NTtEMkYwOzExMTAgMTE3NTsKK0QyRjE7RDJGMTsxMTEwIDExNzUgMTFBODtEMkYxOzExMTAgMTE3NSAxMUE4OworRDJGMjtEMkYyOzExMTAgMTE3NSAxMUE5O0QyRjI7MTExMCAxMTc1IDExQTk7CitEMkYzO0QyRjM7MTExMCAxMTc1IDExQUE7RDJGMzsxMTEwIDExNzUgMTFBQTsKK0QyRjQ7RDJGNDsxMTEwIDExNzUgMTFBQjtEMkY0OzExMTAgMTE3NSAxMUFCOworRDJGNTtEMkY1OzExMTAgMTE3NSAxMUFDO0QyRjU7MTExMCAxMTc1IDExQUM7CitEMkY2O0QyRjY7MTExMCAxMTc1IDExQUQ7RDJGNjsxMTEwIDExNzUgMTFBRDsKK0QyRjc7RDJGNzsxMTEwIDExNzUgMTFBRTtEMkY3OzExMTAgMTE3NSAxMUFFOworRDJGODtEMkY4OzExMTAgMTE3NSAxMUFGO0QyRjg7MTExMCAxMTc1IDExQUY7CitEMkY5O0QyRjk7MTExMCAxMTc1IDExQjA7RDJGOTsxMTEwIDExNzUgMTFCMDsKK0QyRkE7RDJGQTsxMTEwIDExNzUgMTFCMTtEMkZBOzExMTAgMTE3NSAxMUIxOworRDJGQjtEMkZCOzExMTAgMTE3NSAxMUIyO0QyRkI7MTExMCAxMTc1IDExQjI7CitEMkZDO0QyRkM7MTExMCAxMTc1IDExQjM7RDJGQzsxMTEwIDExNzUgMTFCMzsKK0QyRkQ7RDJGRDsxMTEwIDExNzUgMTFCNDtEMkZEOzExMTAgMTE3NSAxMUI0OworRDJGRTtEMkZFOzExMTAgMTE3NSAxMUI1O0QyRkU7MTExMCAxMTc1IDExQjU7CitEMkZGO0QyRkY7MTExMCAxMTc1IDExQjY7RDJGRjsxMTEwIDExNzUgMTFCNjsKK0QzMDA7RDMwMDsxMTEwIDExNzUgMTFCNztEMzAwOzExMTAgMTE3NSAxMUI3OworRDMwMTtEMzAxOzExMTAgMTE3NSAxMUI4O0QzMDE7MTExMCAxMTc1IDExQjg7CitEMzAyO0QzMDI7MTExMCAxMTc1IDExQjk7RDMwMjsxMTEwIDExNzUgMTFCOTsKK0QzMDM7RDMwMzsxMTEwIDExNzUgMTFCQTtEMzAzOzExMTAgMTE3NSAxMUJBOworRDMwNDtEMzA0OzExMTAgMTE3NSAxMUJCO0QzMDQ7MTExMCAxMTc1IDExQkI7CitEMzA1O0QzMDU7MTExMCAxMTc1IDExQkM7RDMwNTsxMTEwIDExNzUgMTFCQzsKK0QzMDY7RDMwNjsxMTEwIDExNzUgMTFCRDtEMzA2OzExMTAgMTE3NSAxMUJEOworRDMwNztEMzA3OzExMTAgMTE3NSAxMUJFO0QzMDc7MTExMCAxMTc1IDExQkU7CitEMzA4O0QzMDg7MTExMCAxMTc1IDExQkY7RDMwODsxMTEwIDExNzUgMTFCRjsKK0QzMDk7RDMwOTsxMTEwIDExNzUgMTFDMDtEMzA5OzExMTAgMTE3NSAxMUMwOworRDMwQTtEMzBBOzExMTAgMTE3NSAxMUMxO0QzMEE7MTExMCAxMTc1IDExQzE7CitEMzBCO0QzMEI7MTExMCAxMTc1IDExQzI7RDMwQjsxMTEwIDExNzUgMTFDMjsKK0QzMEM7RDMwQzsxMTExIDExNjE7RDMwQzsxMTExIDExNjE7CitEMzBEO0QzMEQ7MTExMSAxMTYxIDExQTg7RDMwRDsxMTExIDExNjEgMTFBODsKK0QzMEU7RDMwRTsxMTExIDExNjEgMTFBOTtEMzBFOzExMTEgMTE2MSAxMUE5OworRDMwRjtEMzBGOzExMTEgMTE2MSAxMUFBO0QzMEY7MTExMSAxMTYxIDExQUE7CitEMzEwO0QzMTA7MTExMSAxMTYxIDExQUI7RDMxMDsxMTExIDExNjEgMTFBQjsKK0QzMTE7RDMxMTsxMTExIDExNjEgMTFBQztEMzExOzExMTEgMTE2MSAxMUFDOworRDMxMjtEMzEyOzExMTEgMTE2MSAxMUFEO0QzMTI7MTExMSAxMTYxIDExQUQ7CitEMzEzO0QzMTM7MTExMSAxMTYxIDExQUU7RDMxMzsxMTExIDExNjEgMTFBRTsKK0QzMTQ7RDMxNDsxMTExIDExNjEgMTFBRjtEMzE0OzExMTEgMTE2MSAxMUFGOworRDMxNTtEMzE1OzExMTEgMTE2MSAxMUIwO0QzMTU7MTExMSAxMTYxIDExQjA7CitEMzE2O0QzMTY7MTExMSAxMTYxIDExQjE7RDMxNjsxMTExIDExNjEgMTFCMTsKK0QzMTc7RDMxNzsxMTExIDExNjEgMTFCMjtEMzE3OzExMTEgMTE2MSAxMUIyOworRDMxODtEMzE4OzExMTEgMTE2MSAxMUIzO0QzMTg7MTExMSAxMTYxIDExQjM7CitEMzE5O0QzMTk7MTExMSAxMTYxIDExQjQ7RDMxOTsxMTExIDExNjEgMTFCNDsKK0QzMUE7RDMxQTsxMTExIDExNjEgMTFCNTtEMzFBOzExMTEgMTE2MSAxMUI1OworRDMxQjtEMzFCOzExMTEgMTE2MSAxMUI2O0QzMUI7MTExMSAxMTYxIDExQjY7CitEMzFDO0QzMUM7MTExMSAxMTYxIDExQjc7RDMxQzsxMTExIDExNjEgMTFCNzsKK0QzMUQ7RDMxRDsxMTExIDExNjEgMTFCODtEMzFEOzExMTEgMTE2MSAxMUI4OworRDMxRTtEMzFFOzExMTEgMTE2MSAxMUI5O0QzMUU7MTExMSAxMTYxIDExQjk7CitEMzFGO0QzMUY7MTExMSAxMTYxIDExQkE7RDMxRjsxMTExIDExNjEgMTFCQTsKK0QzMjA7RDMyMDsxMTExIDExNjEgMTFCQjtEMzIwOzExMTEgMTE2MSAxMUJCOworRDMyMTtEMzIxOzExMTEgMTE2MSAxMUJDO0QzMjE7MTExMSAxMTYxIDExQkM7CitEMzIyO0QzMjI7MTExMSAxMTYxIDExQkQ7RDMyMjsxMTExIDExNjEgMTFCRDsKK0QzMjM7RDMyMzsxMTExIDExNjEgMTFCRTtEMzIzOzExMTEgMTE2MSAxMUJFOworRDMyNDtEMzI0OzExMTEgMTE2MSAxMUJGO0QzMjQ7MTExMSAxMTYxIDExQkY7CitEMzI1O0QzMjU7MTExMSAxMTYxIDExQzA7RDMyNTsxMTExIDExNjEgMTFDMDsKK0QzMjY7RDMyNjsxMTExIDExNjEgMTFDMTtEMzI2OzExMTEgMTE2MSAxMUMxOworRDMyNztEMzI3OzExMTEgMTE2MSAxMUMyO0QzMjc7MTExMSAxMTYxIDExQzI7CitEMzI4O0QzMjg7MTExMSAxMTYyO0QzMjg7MTExMSAxMTYyOworRDMyOTtEMzI5OzExMTEgMTE2MiAxMUE4O0QzMjk7MTExMSAxMTYyIDExQTg7CitEMzJBO0QzMkE7MTExMSAxMTYyIDExQTk7RDMyQTsxMTExIDExNjIgMTFBOTsKK0QzMkI7RDMyQjsxMTExIDExNjIgMTFBQTtEMzJCOzExMTEgMTE2MiAxMUFBOworRDMyQztEMzJDOzExMTEgMTE2MiAxMUFCO0QzMkM7MTExMSAxMTYyIDExQUI7CitEMzJEO0QzMkQ7MTExMSAxMTYyIDExQUM7RDMyRDsxMTExIDExNjIgMTFBQzsKK0QzMkU7RDMyRTsxMTExIDExNjIgMTFBRDtEMzJFOzExMTEgMTE2MiAxMUFEOworRDMyRjtEMzJGOzExMTEgMTE2MiAxMUFFO0QzMkY7MTExMSAxMTYyIDExQUU7CitEMzMwO0QzMzA7MTExMSAxMTYyIDExQUY7RDMzMDsxMTExIDExNjIgMTFBRjsKK0QzMzE7RDMzMTsxMTExIDExNjIgMTFCMDtEMzMxOzExMTEgMTE2MiAxMUIwOworRDMzMjtEMzMyOzExMTEgMTE2MiAxMUIxO0QzMzI7MTExMSAxMTYyIDExQjE7CitEMzMzO0QzMzM7MTExMSAxMTYyIDExQjI7RDMzMzsxMTExIDExNjIgMTFCMjsKK0QzMzQ7RDMzNDsxMTExIDExNjIgMTFCMztEMzM0OzExMTEgMTE2MiAxMUIzOworRDMzNTtEMzM1OzExMTEgMTE2MiAxMUI0O0QzMzU7MTExMSAxMTYyIDExQjQ7CitEMzM2O0QzMzY7MTExMSAxMTYyIDExQjU7RDMzNjsxMTExIDExNjIgMTFCNTsKK0QzMzc7RDMzNzsxMTExIDExNjIgMTFCNjtEMzM3OzExMTEgMTE2MiAxMUI2OworRDMzODtEMzM4OzExMTEgMTE2MiAxMUI3O0QzMzg7MTExMSAxMTYyIDExQjc7CitEMzM5O0QzMzk7MTExMSAxMTYyIDExQjg7RDMzOTsxMTExIDExNjIgMTFCODsKK0QzM0E7RDMzQTsxMTExIDExNjIgMTFCOTtEMzNBOzExMTEgMTE2MiAxMUI5OworRDMzQjtEMzNCOzExMTEgMTE2MiAxMUJBO0QzM0I7MTExMSAxMTYyIDExQkE7CitEMzNDO0QzM0M7MTExMSAxMTYyIDExQkI7RDMzQzsxMTExIDExNjIgMTFCQjsKK0QzM0Q7RDMzRDsxMTExIDExNjIgMTFCQztEMzNEOzExMTEgMTE2MiAxMUJDOworRDMzRTtEMzNFOzExMTEgMTE2MiAxMUJEO0QzM0U7MTExMSAxMTYyIDExQkQ7CitEMzNGO0QzM0Y7MTExMSAxMTYyIDExQkU7RDMzRjsxMTExIDExNjIgMTFCRTsKK0QzNDA7RDM0MDsxMTExIDExNjIgMTFCRjtEMzQwOzExMTEgMTE2MiAxMUJGOworRDM0MTtEMzQxOzExMTEgMTE2MiAxMUMwO0QzNDE7MTExMSAxMTYyIDExQzA7CitEMzQyO0QzNDI7MTExMSAxMTYyIDExQzE7RDM0MjsxMTExIDExNjIgMTFDMTsKK0QzNDM7RDM0MzsxMTExIDExNjIgMTFDMjtEMzQzOzExMTEgMTE2MiAxMUMyOworRDM0NDtEMzQ0OzExMTEgMTE2MztEMzQ0OzExMTEgMTE2MzsKK0QzNDU7RDM0NTsxMTExIDExNjMgMTFBODtEMzQ1OzExMTEgMTE2MyAxMUE4OworRDM0NjtEMzQ2OzExMTEgMTE2MyAxMUE5O0QzNDY7MTExMSAxMTYzIDExQTk7CitEMzQ3O0QzNDc7MTExMSAxMTYzIDExQUE7RDM0NzsxMTExIDExNjMgMTFBQTsKK0QzNDg7RDM0ODsxMTExIDExNjMgMTFBQjtEMzQ4OzExMTEgMTE2MyAxMUFCOworRDM0OTtEMzQ5OzExMTEgMTE2MyAxMUFDO0QzNDk7MTExMSAxMTYzIDExQUM7CitEMzRBO0QzNEE7MTExMSAxMTYzIDExQUQ7RDM0QTsxMTExIDExNjMgMTFBRDsKK0QzNEI7RDM0QjsxMTExIDExNjMgMTFBRTtEMzRCOzExMTEgMTE2MyAxMUFFOworRDM0QztEMzRDOzExMTEgMTE2MyAxMUFGO0QzNEM7MTExMSAxMTYzIDExQUY7CitEMzREO0QzNEQ7MTExMSAxMTYzIDExQjA7RDM0RDsxMTExIDExNjMgMTFCMDsKK0QzNEU7RDM0RTsxMTExIDExNjMgMTFCMTtEMzRFOzExMTEgMTE2MyAxMUIxOworRDM0RjtEMzRGOzExMTEgMTE2MyAxMUIyO0QzNEY7MTExMSAxMTYzIDExQjI7CitEMzUwO0QzNTA7MTExMSAxMTYzIDExQjM7RDM1MDsxMTExIDExNjMgMTFCMzsKK0QzNTE7RDM1MTsxMTExIDExNjMgMTFCNDtEMzUxOzExMTEgMTE2MyAxMUI0OworRDM1MjtEMzUyOzExMTEgMTE2MyAxMUI1O0QzNTI7MTExMSAxMTYzIDExQjU7CitEMzUzO0QzNTM7MTExMSAxMTYzIDExQjY7RDM1MzsxMTExIDExNjMgMTFCNjsKK0QzNTQ7RDM1NDsxMTExIDExNjMgMTFCNztEMzU0OzExMTEgMTE2MyAxMUI3OworRDM1NTtEMzU1OzExMTEgMTE2MyAxMUI4O0QzNTU7MTExMSAxMTYzIDExQjg7CitEMzU2O0QzNTY7MTExMSAxMTYzIDExQjk7RDM1NjsxMTExIDExNjMgMTFCOTsKK0QzNTc7RDM1NzsxMTExIDExNjMgMTFCQTtEMzU3OzExMTEgMTE2MyAxMUJBOworRDM1ODtEMzU4OzExMTEgMTE2MyAxMUJCO0QzNTg7MTExMSAxMTYzIDExQkI7CitEMzU5O0QzNTk7MTExMSAxMTYzIDExQkM7RDM1OTsxMTExIDExNjMgMTFCQzsKK0QzNUE7RDM1QTsxMTExIDExNjMgMTFCRDtEMzVBOzExMTEgMTE2MyAxMUJEOworRDM1QjtEMzVCOzExMTEgMTE2MyAxMUJFO0QzNUI7MTExMSAxMTYzIDExQkU7CitEMzVDO0QzNUM7MTExMSAxMTYzIDExQkY7RDM1QzsxMTExIDExNjMgMTFCRjsKK0QzNUQ7RDM1RDsxMTExIDExNjMgMTFDMDtEMzVEOzExMTEgMTE2MyAxMUMwOworRDM1RTtEMzVFOzExMTEgMTE2MyAxMUMxO0QzNUU7MTExMSAxMTYzIDExQzE7CitEMzVGO0QzNUY7MTExMSAxMTYzIDExQzI7RDM1RjsxMTExIDExNjMgMTFDMjsKK0QzNjA7RDM2MDsxMTExIDExNjQ7RDM2MDsxMTExIDExNjQ7CitEMzYxO0QzNjE7MTExMSAxMTY0IDExQTg7RDM2MTsxMTExIDExNjQgMTFBODsKK0QzNjI7RDM2MjsxMTExIDExNjQgMTFBOTtEMzYyOzExMTEgMTE2NCAxMUE5OworRDM2MztEMzYzOzExMTEgMTE2NCAxMUFBO0QzNjM7MTExMSAxMTY0IDExQUE7CitEMzY0O0QzNjQ7MTExMSAxMTY0IDExQUI7RDM2NDsxMTExIDExNjQgMTFBQjsKK0QzNjU7RDM2NTsxMTExIDExNjQgMTFBQztEMzY1OzExMTEgMTE2NCAxMUFDOworRDM2NjtEMzY2OzExMTEgMTE2NCAxMUFEO0QzNjY7MTExMSAxMTY0IDExQUQ7CitEMzY3O0QzNjc7MTExMSAxMTY0IDExQUU7RDM2NzsxMTExIDExNjQgMTFBRTsKK0QzNjg7RDM2ODsxMTExIDExNjQgMTFBRjtEMzY4OzExMTEgMTE2NCAxMUFGOworRDM2OTtEMzY5OzExMTEgMTE2NCAxMUIwO0QzNjk7MTExMSAxMTY0IDExQjA7CitEMzZBO0QzNkE7MTExMSAxMTY0IDExQjE7RDM2QTsxMTExIDExNjQgMTFCMTsKK0QzNkI7RDM2QjsxMTExIDExNjQgMTFCMjtEMzZCOzExMTEgMTE2NCAxMUIyOworRDM2QztEMzZDOzExMTEgMTE2NCAxMUIzO0QzNkM7MTExMSAxMTY0IDExQjM7CitEMzZEO0QzNkQ7MTExMSAxMTY0IDExQjQ7RDM2RDsxMTExIDExNjQgMTFCNDsKK0QzNkU7RDM2RTsxMTExIDExNjQgMTFCNTtEMzZFOzExMTEgMTE2NCAxMUI1OworRDM2RjtEMzZGOzExMTEgMTE2NCAxMUI2O0QzNkY7MTExMSAxMTY0IDExQjY7CitEMzcwO0QzNzA7MTExMSAxMTY0IDExQjc7RDM3MDsxMTExIDExNjQgMTFCNzsKK0QzNzE7RDM3MTsxMTExIDExNjQgMTFCODtEMzcxOzExMTEgMTE2NCAxMUI4OworRDM3MjtEMzcyOzExMTEgMTE2NCAxMUI5O0QzNzI7MTExMSAxMTY0IDExQjk7CitEMzczO0QzNzM7MTExMSAxMTY0IDExQkE7RDM3MzsxMTExIDExNjQgMTFCQTsKK0QzNzQ7RDM3NDsxMTExIDExNjQgMTFCQjtEMzc0OzExMTEgMTE2NCAxMUJCOworRDM3NTtEMzc1OzExMTEgMTE2NCAxMUJDO0QzNzU7MTExMSAxMTY0IDExQkM7CitEMzc2O0QzNzY7MTExMSAxMTY0IDExQkQ7RDM3NjsxMTExIDExNjQgMTFCRDsKK0QzNzc7RDM3NzsxMTExIDExNjQgMTFCRTtEMzc3OzExMTEgMTE2NCAxMUJFOworRDM3ODtEMzc4OzExMTEgMTE2NCAxMUJGO0QzNzg7MTExMSAxMTY0IDExQkY7CitEMzc5O0QzNzk7MTExMSAxMTY0IDExQzA7RDM3OTsxMTExIDExNjQgMTFDMDsKK0QzN0E7RDM3QTsxMTExIDExNjQgMTFDMTtEMzdBOzExMTEgMTE2NCAxMUMxOworRDM3QjtEMzdCOzExMTEgMTE2NCAxMUMyO0QzN0I7MTExMSAxMTY0IDExQzI7CitEMzdDO0QzN0M7MTExMSAxMTY1O0QzN0M7MTExMSAxMTY1OworRDM3RDtEMzdEOzExMTEgMTE2NSAxMUE4O0QzN0Q7MTExMSAxMTY1IDExQTg7CitEMzdFO0QzN0U7MTExMSAxMTY1IDExQTk7RDM3RTsxMTExIDExNjUgMTFBOTsKK0QzN0Y7RDM3RjsxMTExIDExNjUgMTFBQTtEMzdGOzExMTEgMTE2NSAxMUFBOworRDM4MDtEMzgwOzExMTEgMTE2NSAxMUFCO0QzODA7MTExMSAxMTY1IDExQUI7CitEMzgxO0QzODE7MTExMSAxMTY1IDExQUM7RDM4MTsxMTExIDExNjUgMTFBQzsKK0QzODI7RDM4MjsxMTExIDExNjUgMTFBRDtEMzgyOzExMTEgMTE2NSAxMUFEOworRDM4MztEMzgzOzExMTEgMTE2NSAxMUFFO0QzODM7MTExMSAxMTY1IDExQUU7CitEMzg0O0QzODQ7MTExMSAxMTY1IDExQUY7RDM4NDsxMTExIDExNjUgMTFBRjsKK0QzODU7RDM4NTsxMTExIDExNjUgMTFCMDtEMzg1OzExMTEgMTE2NSAxMUIwOworRDM4NjtEMzg2OzExMTEgMTE2NSAxMUIxO0QzODY7MTExMSAxMTY1IDExQjE7CitEMzg3O0QzODc7MTExMSAxMTY1IDExQjI7RDM4NzsxMTExIDExNjUgMTFCMjsKK0QzODg7RDM4ODsxMTExIDExNjUgMTFCMztEMzg4OzExMTEgMTE2NSAxMUIzOworRDM4OTtEMzg5OzExMTEgMTE2NSAxMUI0O0QzODk7MTExMSAxMTY1IDExQjQ7CitEMzhBO0QzOEE7MTExMSAxMTY1IDExQjU7RDM4QTsxMTExIDExNjUgMTFCNTsKK0QzOEI7RDM4QjsxMTExIDExNjUgMTFCNjtEMzhCOzExMTEgMTE2NSAxMUI2OworRDM4QztEMzhDOzExMTEgMTE2NSAxMUI3O0QzOEM7MTExMSAxMTY1IDExQjc7CitEMzhEO0QzOEQ7MTExMSAxMTY1IDExQjg7RDM4RDsxMTExIDExNjUgMTFCODsKK0QzOEU7RDM4RTsxMTExIDExNjUgMTFCOTtEMzhFOzExMTEgMTE2NSAxMUI5OworRDM4RjtEMzhGOzExMTEgMTE2NSAxMUJBO0QzOEY7MTExMSAxMTY1IDExQkE7CitEMzkwO0QzOTA7MTExMSAxMTY1IDExQkI7RDM5MDsxMTExIDExNjUgMTFCQjsKK0QzOTE7RDM5MTsxMTExIDExNjUgMTFCQztEMzkxOzExMTEgMTE2NSAxMUJDOworRDM5MjtEMzkyOzExMTEgMTE2NSAxMUJEO0QzOTI7MTExMSAxMTY1IDExQkQ7CitEMzkzO0QzOTM7MTExMSAxMTY1IDExQkU7RDM5MzsxMTExIDExNjUgMTFCRTsKK0QzOTQ7RDM5NDsxMTExIDExNjUgMTFCRjtEMzk0OzExMTEgMTE2NSAxMUJGOworRDM5NTtEMzk1OzExMTEgMTE2NSAxMUMwO0QzOTU7MTExMSAxMTY1IDExQzA7CitEMzk2O0QzOTY7MTExMSAxMTY1IDExQzE7RDM5NjsxMTExIDExNjUgMTFDMTsKK0QzOTc7RDM5NzsxMTExIDExNjUgMTFDMjtEMzk3OzExMTEgMTE2NSAxMUMyOworRDM5ODtEMzk4OzExMTEgMTE2NjtEMzk4OzExMTEgMTE2NjsKK0QzOTk7RDM5OTsxMTExIDExNjYgMTFBODtEMzk5OzExMTEgMTE2NiAxMUE4OworRDM5QTtEMzlBOzExMTEgMTE2NiAxMUE5O0QzOUE7MTExMSAxMTY2IDExQTk7CitEMzlCO0QzOUI7MTExMSAxMTY2IDExQUE7RDM5QjsxMTExIDExNjYgMTFBQTsKK0QzOUM7RDM5QzsxMTExIDExNjYgMTFBQjtEMzlDOzExMTEgMTE2NiAxMUFCOworRDM5RDtEMzlEOzExMTEgMTE2NiAxMUFDO0QzOUQ7MTExMSAxMTY2IDExQUM7CitEMzlFO0QzOUU7MTExMSAxMTY2IDExQUQ7RDM5RTsxMTExIDExNjYgMTFBRDsKK0QzOUY7RDM5RjsxMTExIDExNjYgMTFBRTtEMzlGOzExMTEgMTE2NiAxMUFFOworRDNBMDtEM0EwOzExMTEgMTE2NiAxMUFGO0QzQTA7MTExMSAxMTY2IDExQUY7CitEM0ExO0QzQTE7MTExMSAxMTY2IDExQjA7RDNBMTsxMTExIDExNjYgMTFCMDsKK0QzQTI7RDNBMjsxMTExIDExNjYgMTFCMTtEM0EyOzExMTEgMTE2NiAxMUIxOworRDNBMztEM0EzOzExMTEgMTE2NiAxMUIyO0QzQTM7MTExMSAxMTY2IDExQjI7CitEM0E0O0QzQTQ7MTExMSAxMTY2IDExQjM7RDNBNDsxMTExIDExNjYgMTFCMzsKK0QzQTU7RDNBNTsxMTExIDExNjYgMTFCNDtEM0E1OzExMTEgMTE2NiAxMUI0OworRDNBNjtEM0E2OzExMTEgMTE2NiAxMUI1O0QzQTY7MTExMSAxMTY2IDExQjU7CitEM0E3O0QzQTc7MTExMSAxMTY2IDExQjY7RDNBNzsxMTExIDExNjYgMTFCNjsKK0QzQTg7RDNBODsxMTExIDExNjYgMTFCNztEM0E4OzExMTEgMTE2NiAxMUI3OworRDNBOTtEM0E5OzExMTEgMTE2NiAxMUI4O0QzQTk7MTExMSAxMTY2IDExQjg7CitEM0FBO0QzQUE7MTExMSAxMTY2IDExQjk7RDNBQTsxMTExIDExNjYgMTFCOTsKK0QzQUI7RDNBQjsxMTExIDExNjYgMTFCQTtEM0FCOzExMTEgMTE2NiAxMUJBOworRDNBQztEM0FDOzExMTEgMTE2NiAxMUJCO0QzQUM7MTExMSAxMTY2IDExQkI7CitEM0FEO0QzQUQ7MTExMSAxMTY2IDExQkM7RDNBRDsxMTExIDExNjYgMTFCQzsKK0QzQUU7RDNBRTsxMTExIDExNjYgMTFCRDtEM0FFOzExMTEgMTE2NiAxMUJEOworRDNBRjtEM0FGOzExMTEgMTE2NiAxMUJFO0QzQUY7MTExMSAxMTY2IDExQkU7CitEM0IwO0QzQjA7MTExMSAxMTY2IDExQkY7RDNCMDsxMTExIDExNjYgMTFCRjsKK0QzQjE7RDNCMTsxMTExIDExNjYgMTFDMDtEM0IxOzExMTEgMTE2NiAxMUMwOworRDNCMjtEM0IyOzExMTEgMTE2NiAxMUMxO0QzQjI7MTExMSAxMTY2IDExQzE7CitEM0IzO0QzQjM7MTExMSAxMTY2IDExQzI7RDNCMzsxMTExIDExNjYgMTFDMjsKK0QzQjQ7RDNCNDsxMTExIDExNjc7RDNCNDsxMTExIDExNjc7CitEM0I1O0QzQjU7MTExMSAxMTY3IDExQTg7RDNCNTsxMTExIDExNjcgMTFBODsKK0QzQjY7RDNCNjsxMTExIDExNjcgMTFBOTtEM0I2OzExMTEgMTE2NyAxMUE5OworRDNCNztEM0I3OzExMTEgMTE2NyAxMUFBO0QzQjc7MTExMSAxMTY3IDExQUE7CitEM0I4O0QzQjg7MTExMSAxMTY3IDExQUI7RDNCODsxMTExIDExNjcgMTFBQjsKK0QzQjk7RDNCOTsxMTExIDExNjcgMTFBQztEM0I5OzExMTEgMTE2NyAxMUFDOworRDNCQTtEM0JBOzExMTEgMTE2NyAxMUFEO0QzQkE7MTExMSAxMTY3IDExQUQ7CitEM0JCO0QzQkI7MTExMSAxMTY3IDExQUU7RDNCQjsxMTExIDExNjcgMTFBRTsKK0QzQkM7RDNCQzsxMTExIDExNjcgMTFBRjtEM0JDOzExMTEgMTE2NyAxMUFGOworRDNCRDtEM0JEOzExMTEgMTE2NyAxMUIwO0QzQkQ7MTExMSAxMTY3IDExQjA7CitEM0JFO0QzQkU7MTExMSAxMTY3IDExQjE7RDNCRTsxMTExIDExNjcgMTFCMTsKK0QzQkY7RDNCRjsxMTExIDExNjcgMTFCMjtEM0JGOzExMTEgMTE2NyAxMUIyOworRDNDMDtEM0MwOzExMTEgMTE2NyAxMUIzO0QzQzA7MTExMSAxMTY3IDExQjM7CitEM0MxO0QzQzE7MTExMSAxMTY3IDExQjQ7RDNDMTsxMTExIDExNjcgMTFCNDsKK0QzQzI7RDNDMjsxMTExIDExNjcgMTFCNTtEM0MyOzExMTEgMTE2NyAxMUI1OworRDNDMztEM0MzOzExMTEgMTE2NyAxMUI2O0QzQzM7MTExMSAxMTY3IDExQjY7CitEM0M0O0QzQzQ7MTExMSAxMTY3IDExQjc7RDNDNDsxMTExIDExNjcgMTFCNzsKK0QzQzU7RDNDNTsxMTExIDExNjcgMTFCODtEM0M1OzExMTEgMTE2NyAxMUI4OworRDNDNjtEM0M2OzExMTEgMTE2NyAxMUI5O0QzQzY7MTExMSAxMTY3IDExQjk7CitEM0M3O0QzQzc7MTExMSAxMTY3IDExQkE7RDNDNzsxMTExIDExNjcgMTFCQTsKK0QzQzg7RDNDODsxMTExIDExNjcgMTFCQjtEM0M4OzExMTEgMTE2NyAxMUJCOworRDNDOTtEM0M5OzExMTEgMTE2NyAxMUJDO0QzQzk7MTExMSAxMTY3IDExQkM7CitEM0NBO0QzQ0E7MTExMSAxMTY3IDExQkQ7RDNDQTsxMTExIDExNjcgMTFCRDsKK0QzQ0I7RDNDQjsxMTExIDExNjcgMTFCRTtEM0NCOzExMTEgMTE2NyAxMUJFOworRDNDQztEM0NDOzExMTEgMTE2NyAxMUJGO0QzQ0M7MTExMSAxMTY3IDExQkY7CitEM0NEO0QzQ0Q7MTExMSAxMTY3IDExQzA7RDNDRDsxMTExIDExNjcgMTFDMDsKK0QzQ0U7RDNDRTsxMTExIDExNjcgMTFDMTtEM0NFOzExMTEgMTE2NyAxMUMxOworRDNDRjtEM0NGOzExMTEgMTE2NyAxMUMyO0QzQ0Y7MTExMSAxMTY3IDExQzI7CitEM0QwO0QzRDA7MTExMSAxMTY4O0QzRDA7MTExMSAxMTY4OworRDNEMTtEM0QxOzExMTEgMTE2OCAxMUE4O0QzRDE7MTExMSAxMTY4IDExQTg7CitEM0QyO0QzRDI7MTExMSAxMTY4IDExQTk7RDNEMjsxMTExIDExNjggMTFBOTsKK0QzRDM7RDNEMzsxMTExIDExNjggMTFBQTtEM0QzOzExMTEgMTE2OCAxMUFBOworRDNENDtEM0Q0OzExMTEgMTE2OCAxMUFCO0QzRDQ7MTExMSAxMTY4IDExQUI7CitEM0Q1O0QzRDU7MTExMSAxMTY4IDExQUM7RDNENTsxMTExIDExNjggMTFBQzsKK0QzRDY7RDNENjsxMTExIDExNjggMTFBRDtEM0Q2OzExMTEgMTE2OCAxMUFEOworRDNENztEM0Q3OzExMTEgMTE2OCAxMUFFO0QzRDc7MTExMSAxMTY4IDExQUU7CitEM0Q4O0QzRDg7MTExMSAxMTY4IDExQUY7RDNEODsxMTExIDExNjggMTFBRjsKK0QzRDk7RDNEOTsxMTExIDExNjggMTFCMDtEM0Q5OzExMTEgMTE2OCAxMUIwOworRDNEQTtEM0RBOzExMTEgMTE2OCAxMUIxO0QzREE7MTExMSAxMTY4IDExQjE7CitEM0RCO0QzREI7MTExMSAxMTY4IDExQjI7RDNEQjsxMTExIDExNjggMTFCMjsKK0QzREM7RDNEQzsxMTExIDExNjggMTFCMztEM0RDOzExMTEgMTE2OCAxMUIzOworRDNERDtEM0REOzExMTEgMTE2OCAxMUI0O0QzREQ7MTExMSAxMTY4IDExQjQ7CitEM0RFO0QzREU7MTExMSAxMTY4IDExQjU7RDNERTsxMTExIDExNjggMTFCNTsKK0QzREY7RDNERjsxMTExIDExNjggMTFCNjtEM0RGOzExMTEgMTE2OCAxMUI2OworRDNFMDtEM0UwOzExMTEgMTE2OCAxMUI3O0QzRTA7MTExMSAxMTY4IDExQjc7CitEM0UxO0QzRTE7MTExMSAxMTY4IDExQjg7RDNFMTsxMTExIDExNjggMTFCODsKK0QzRTI7RDNFMjsxMTExIDExNjggMTFCOTtEM0UyOzExMTEgMTE2OCAxMUI5OworRDNFMztEM0UzOzExMTEgMTE2OCAxMUJBO0QzRTM7MTExMSAxMTY4IDExQkE7CitEM0U0O0QzRTQ7MTExMSAxMTY4IDExQkI7RDNFNDsxMTExIDExNjggMTFCQjsKK0QzRTU7RDNFNTsxMTExIDExNjggMTFCQztEM0U1OzExMTEgMTE2OCAxMUJDOworRDNFNjtEM0U2OzExMTEgMTE2OCAxMUJEO0QzRTY7MTExMSAxMTY4IDExQkQ7CitEM0U3O0QzRTc7MTExMSAxMTY4IDExQkU7RDNFNzsxMTExIDExNjggMTFCRTsKK0QzRTg7RDNFODsxMTExIDExNjggMTFCRjtEM0U4OzExMTEgMTE2OCAxMUJGOworRDNFOTtEM0U5OzExMTEgMTE2OCAxMUMwO0QzRTk7MTExMSAxMTY4IDExQzA7CitEM0VBO0QzRUE7MTExMSAxMTY4IDExQzE7RDNFQTsxMTExIDExNjggMTFDMTsKK0QzRUI7RDNFQjsxMTExIDExNjggMTFDMjtEM0VCOzExMTEgMTE2OCAxMUMyOworRDNFQztEM0VDOzExMTEgMTE2OTtEM0VDOzExMTEgMTE2OTsKK0QzRUQ7RDNFRDsxMTExIDExNjkgMTFBODtEM0VEOzExMTEgMTE2OSAxMUE4OworRDNFRTtEM0VFOzExMTEgMTE2OSAxMUE5O0QzRUU7MTExMSAxMTY5IDExQTk7CitEM0VGO0QzRUY7MTExMSAxMTY5IDExQUE7RDNFRjsxMTExIDExNjkgMTFBQTsKK0QzRjA7RDNGMDsxMTExIDExNjkgMTFBQjtEM0YwOzExMTEgMTE2OSAxMUFCOworRDNGMTtEM0YxOzExMTEgMTE2OSAxMUFDO0QzRjE7MTExMSAxMTY5IDExQUM7CitEM0YyO0QzRjI7MTExMSAxMTY5IDExQUQ7RDNGMjsxMTExIDExNjkgMTFBRDsKK0QzRjM7RDNGMzsxMTExIDExNjkgMTFBRTtEM0YzOzExMTEgMTE2OSAxMUFFOworRDNGNDtEM0Y0OzExMTEgMTE2OSAxMUFGO0QzRjQ7MTExMSAxMTY5IDExQUY7CitEM0Y1O0QzRjU7MTExMSAxMTY5IDExQjA7RDNGNTsxMTExIDExNjkgMTFCMDsKK0QzRjY7RDNGNjsxMTExIDExNjkgMTFCMTtEM0Y2OzExMTEgMTE2OSAxMUIxOworRDNGNztEM0Y3OzExMTEgMTE2OSAxMUIyO0QzRjc7MTExMSAxMTY5IDExQjI7CitEM0Y4O0QzRjg7MTExMSAxMTY5IDExQjM7RDNGODsxMTExIDExNjkgMTFCMzsKK0QzRjk7RDNGOTsxMTExIDExNjkgMTFCNDtEM0Y5OzExMTEgMTE2OSAxMUI0OworRDNGQTtEM0ZBOzExMTEgMTE2OSAxMUI1O0QzRkE7MTExMSAxMTY5IDExQjU7CitEM0ZCO0QzRkI7MTExMSAxMTY5IDExQjY7RDNGQjsxMTExIDExNjkgMTFCNjsKK0QzRkM7RDNGQzsxMTExIDExNjkgMTFCNztEM0ZDOzExMTEgMTE2OSAxMUI3OworRDNGRDtEM0ZEOzExMTEgMTE2OSAxMUI4O0QzRkQ7MTExMSAxMTY5IDExQjg7CitEM0ZFO0QzRkU7MTExMSAxMTY5IDExQjk7RDNGRTsxMTExIDExNjkgMTFCOTsKK0QzRkY7RDNGRjsxMTExIDExNjkgMTFCQTtEM0ZGOzExMTEgMTE2OSAxMUJBOworRDQwMDtENDAwOzExMTEgMTE2OSAxMUJCO0Q0MDA7MTExMSAxMTY5IDExQkI7CitENDAxO0Q0MDE7MTExMSAxMTY5IDExQkM7RDQwMTsxMTExIDExNjkgMTFCQzsKK0Q0MDI7RDQwMjsxMTExIDExNjkgMTFCRDtENDAyOzExMTEgMTE2OSAxMUJEOworRDQwMztENDAzOzExMTEgMTE2OSAxMUJFO0Q0MDM7MTExMSAxMTY5IDExQkU7CitENDA0O0Q0MDQ7MTExMSAxMTY5IDExQkY7RDQwNDsxMTExIDExNjkgMTFCRjsKK0Q0MDU7RDQwNTsxMTExIDExNjkgMTFDMDtENDA1OzExMTEgMTE2OSAxMUMwOworRDQwNjtENDA2OzExMTEgMTE2OSAxMUMxO0Q0MDY7MTExMSAxMTY5IDExQzE7CitENDA3O0Q0MDc7MTExMSAxMTY5IDExQzI7RDQwNzsxMTExIDExNjkgMTFDMjsKK0Q0MDg7RDQwODsxMTExIDExNkE7RDQwODsxMTExIDExNkE7CitENDA5O0Q0MDk7MTExMSAxMTZBIDExQTg7RDQwOTsxMTExIDExNkEgMTFBODsKK0Q0MEE7RDQwQTsxMTExIDExNkEgMTFBOTtENDBBOzExMTEgMTE2QSAxMUE5OworRDQwQjtENDBCOzExMTEgMTE2QSAxMUFBO0Q0MEI7MTExMSAxMTZBIDExQUE7CitENDBDO0Q0MEM7MTExMSAxMTZBIDExQUI7RDQwQzsxMTExIDExNkEgMTFBQjsKK0Q0MEQ7RDQwRDsxMTExIDExNkEgMTFBQztENDBEOzExMTEgMTE2QSAxMUFDOworRDQwRTtENDBFOzExMTEgMTE2QSAxMUFEO0Q0MEU7MTExMSAxMTZBIDExQUQ7CitENDBGO0Q0MEY7MTExMSAxMTZBIDExQUU7RDQwRjsxMTExIDExNkEgMTFBRTsKK0Q0MTA7RDQxMDsxMTExIDExNkEgMTFBRjtENDEwOzExMTEgMTE2QSAxMUFGOworRDQxMTtENDExOzExMTEgMTE2QSAxMUIwO0Q0MTE7MTExMSAxMTZBIDExQjA7CitENDEyO0Q0MTI7MTExMSAxMTZBIDExQjE7RDQxMjsxMTExIDExNkEgMTFCMTsKK0Q0MTM7RDQxMzsxMTExIDExNkEgMTFCMjtENDEzOzExMTEgMTE2QSAxMUIyOworRDQxNDtENDE0OzExMTEgMTE2QSAxMUIzO0Q0MTQ7MTExMSAxMTZBIDExQjM7CitENDE1O0Q0MTU7MTExMSAxMTZBIDExQjQ7RDQxNTsxMTExIDExNkEgMTFCNDsKK0Q0MTY7RDQxNjsxMTExIDExNkEgMTFCNTtENDE2OzExMTEgMTE2QSAxMUI1OworRDQxNztENDE3OzExMTEgMTE2QSAxMUI2O0Q0MTc7MTExMSAxMTZBIDExQjY7CitENDE4O0Q0MTg7MTExMSAxMTZBIDExQjc7RDQxODsxMTExIDExNkEgMTFCNzsKK0Q0MTk7RDQxOTsxMTExIDExNkEgMTFCODtENDE5OzExMTEgMTE2QSAxMUI4OworRDQxQTtENDFBOzExMTEgMTE2QSAxMUI5O0Q0MUE7MTExMSAxMTZBIDExQjk7CitENDFCO0Q0MUI7MTExMSAxMTZBIDExQkE7RDQxQjsxMTExIDExNkEgMTFCQTsKK0Q0MUM7RDQxQzsxMTExIDExNkEgMTFCQjtENDFDOzExMTEgMTE2QSAxMUJCOworRDQxRDtENDFEOzExMTEgMTE2QSAxMUJDO0Q0MUQ7MTExMSAxMTZBIDExQkM7CitENDFFO0Q0MUU7MTExMSAxMTZBIDExQkQ7RDQxRTsxMTExIDExNkEgMTFCRDsKK0Q0MUY7RDQxRjsxMTExIDExNkEgMTFCRTtENDFGOzExMTEgMTE2QSAxMUJFOworRDQyMDtENDIwOzExMTEgMTE2QSAxMUJGO0Q0MjA7MTExMSAxMTZBIDExQkY7CitENDIxO0Q0MjE7MTExMSAxMTZBIDExQzA7RDQyMTsxMTExIDExNkEgMTFDMDsKK0Q0MjI7RDQyMjsxMTExIDExNkEgMTFDMTtENDIyOzExMTEgMTE2QSAxMUMxOworRDQyMztENDIzOzExMTEgMTE2QSAxMUMyO0Q0MjM7MTExMSAxMTZBIDExQzI7CitENDI0O0Q0MjQ7MTExMSAxMTZCO0Q0MjQ7MTExMSAxMTZCOworRDQyNTtENDI1OzExMTEgMTE2QiAxMUE4O0Q0MjU7MTExMSAxMTZCIDExQTg7CitENDI2O0Q0MjY7MTExMSAxMTZCIDExQTk7RDQyNjsxMTExIDExNkIgMTFBOTsKK0Q0Mjc7RDQyNzsxMTExIDExNkIgMTFBQTtENDI3OzExMTEgMTE2QiAxMUFBOworRDQyODtENDI4OzExMTEgMTE2QiAxMUFCO0Q0Mjg7MTExMSAxMTZCIDExQUI7CitENDI5O0Q0Mjk7MTExMSAxMTZCIDExQUM7RDQyOTsxMTExIDExNkIgMTFBQzsKK0Q0MkE7RDQyQTsxMTExIDExNkIgMTFBRDtENDJBOzExMTEgMTE2QiAxMUFEOworRDQyQjtENDJCOzExMTEgMTE2QiAxMUFFO0Q0MkI7MTExMSAxMTZCIDExQUU7CitENDJDO0Q0MkM7MTExMSAxMTZCIDExQUY7RDQyQzsxMTExIDExNkIgMTFBRjsKK0Q0MkQ7RDQyRDsxMTExIDExNkIgMTFCMDtENDJEOzExMTEgMTE2QiAxMUIwOworRDQyRTtENDJFOzExMTEgMTE2QiAxMUIxO0Q0MkU7MTExMSAxMTZCIDExQjE7CitENDJGO0Q0MkY7MTExMSAxMTZCIDExQjI7RDQyRjsxMTExIDExNkIgMTFCMjsKK0Q0MzA7RDQzMDsxMTExIDExNkIgMTFCMztENDMwOzExMTEgMTE2QiAxMUIzOworRDQzMTtENDMxOzExMTEgMTE2QiAxMUI0O0Q0MzE7MTExMSAxMTZCIDExQjQ7CitENDMyO0Q0MzI7MTExMSAxMTZCIDExQjU7RDQzMjsxMTExIDExNkIgMTFCNTsKK0Q0MzM7RDQzMzsxMTExIDExNkIgMTFCNjtENDMzOzExMTEgMTE2QiAxMUI2OworRDQzNDtENDM0OzExMTEgMTE2QiAxMUI3O0Q0MzQ7MTExMSAxMTZCIDExQjc7CitENDM1O0Q0MzU7MTExMSAxMTZCIDExQjg7RDQzNTsxMTExIDExNkIgMTFCODsKK0Q0MzY7RDQzNjsxMTExIDExNkIgMTFCOTtENDM2OzExMTEgMTE2QiAxMUI5OworRDQzNztENDM3OzExMTEgMTE2QiAxMUJBO0Q0Mzc7MTExMSAxMTZCIDExQkE7CitENDM4O0Q0Mzg7MTExMSAxMTZCIDExQkI7RDQzODsxMTExIDExNkIgMTFCQjsKK0Q0Mzk7RDQzOTsxMTExIDExNkIgMTFCQztENDM5OzExMTEgMTE2QiAxMUJDOworRDQzQTtENDNBOzExMTEgMTE2QiAxMUJEO0Q0M0E7MTExMSAxMTZCIDExQkQ7CitENDNCO0Q0M0I7MTExMSAxMTZCIDExQkU7RDQzQjsxMTExIDExNkIgMTFCRTsKK0Q0M0M7RDQzQzsxMTExIDExNkIgMTFCRjtENDNDOzExMTEgMTE2QiAxMUJGOworRDQzRDtENDNEOzExMTEgMTE2QiAxMUMwO0Q0M0Q7MTExMSAxMTZCIDExQzA7CitENDNFO0Q0M0U7MTExMSAxMTZCIDExQzE7RDQzRTsxMTExIDExNkIgMTFDMTsKK0Q0M0Y7RDQzRjsxMTExIDExNkIgMTFDMjtENDNGOzExMTEgMTE2QiAxMUMyOworRDQ0MDtENDQwOzExMTEgMTE2QztENDQwOzExMTEgMTE2QzsKK0Q0NDE7RDQ0MTsxMTExIDExNkMgMTFBODtENDQxOzExMTEgMTE2QyAxMUE4OworRDQ0MjtENDQyOzExMTEgMTE2QyAxMUE5O0Q0NDI7MTExMSAxMTZDIDExQTk7CitENDQzO0Q0NDM7MTExMSAxMTZDIDExQUE7RDQ0MzsxMTExIDExNkMgMTFBQTsKK0Q0NDQ7RDQ0NDsxMTExIDExNkMgMTFBQjtENDQ0OzExMTEgMTE2QyAxMUFCOworRDQ0NTtENDQ1OzExMTEgMTE2QyAxMUFDO0Q0NDU7MTExMSAxMTZDIDExQUM7CitENDQ2O0Q0NDY7MTExMSAxMTZDIDExQUQ7RDQ0NjsxMTExIDExNkMgMTFBRDsKK0Q0NDc7RDQ0NzsxMTExIDExNkMgMTFBRTtENDQ3OzExMTEgMTE2QyAxMUFFOworRDQ0ODtENDQ4OzExMTEgMTE2QyAxMUFGO0Q0NDg7MTExMSAxMTZDIDExQUY7CitENDQ5O0Q0NDk7MTExMSAxMTZDIDExQjA7RDQ0OTsxMTExIDExNkMgMTFCMDsKK0Q0NEE7RDQ0QTsxMTExIDExNkMgMTFCMTtENDRBOzExMTEgMTE2QyAxMUIxOworRDQ0QjtENDRCOzExMTEgMTE2QyAxMUIyO0Q0NEI7MTExMSAxMTZDIDExQjI7CitENDRDO0Q0NEM7MTExMSAxMTZDIDExQjM7RDQ0QzsxMTExIDExNkMgMTFCMzsKK0Q0NEQ7RDQ0RDsxMTExIDExNkMgMTFCNDtENDREOzExMTEgMTE2QyAxMUI0OworRDQ0RTtENDRFOzExMTEgMTE2QyAxMUI1O0Q0NEU7MTExMSAxMTZDIDExQjU7CitENDRGO0Q0NEY7MTExMSAxMTZDIDExQjY7RDQ0RjsxMTExIDExNkMgMTFCNjsKK0Q0NTA7RDQ1MDsxMTExIDExNkMgMTFCNztENDUwOzExMTEgMTE2QyAxMUI3OworRDQ1MTtENDUxOzExMTEgMTE2QyAxMUI4O0Q0NTE7MTExMSAxMTZDIDExQjg7CitENDUyO0Q0NTI7MTExMSAxMTZDIDExQjk7RDQ1MjsxMTExIDExNkMgMTFCOTsKK0Q0NTM7RDQ1MzsxMTExIDExNkMgMTFCQTtENDUzOzExMTEgMTE2QyAxMUJBOworRDQ1NDtENDU0OzExMTEgMTE2QyAxMUJCO0Q0NTQ7MTExMSAxMTZDIDExQkI7CitENDU1O0Q0NTU7MTExMSAxMTZDIDExQkM7RDQ1NTsxMTExIDExNkMgMTFCQzsKK0Q0NTY7RDQ1NjsxMTExIDExNkMgMTFCRDtENDU2OzExMTEgMTE2QyAxMUJEOworRDQ1NztENDU3OzExMTEgMTE2QyAxMUJFO0Q0NTc7MTExMSAxMTZDIDExQkU7CitENDU4O0Q0NTg7MTExMSAxMTZDIDExQkY7RDQ1ODsxMTExIDExNkMgMTFCRjsKK0Q0NTk7RDQ1OTsxMTExIDExNkMgMTFDMDtENDU5OzExMTEgMTE2QyAxMUMwOworRDQ1QTtENDVBOzExMTEgMTE2QyAxMUMxO0Q0NUE7MTExMSAxMTZDIDExQzE7CitENDVCO0Q0NUI7MTExMSAxMTZDIDExQzI7RDQ1QjsxMTExIDExNkMgMTFDMjsKK0Q0NUM7RDQ1QzsxMTExIDExNkQ7RDQ1QzsxMTExIDExNkQ7CitENDVEO0Q0NUQ7MTExMSAxMTZEIDExQTg7RDQ1RDsxMTExIDExNkQgMTFBODsKK0Q0NUU7RDQ1RTsxMTExIDExNkQgMTFBOTtENDVFOzExMTEgMTE2RCAxMUE5OworRDQ1RjtENDVGOzExMTEgMTE2RCAxMUFBO0Q0NUY7MTExMSAxMTZEIDExQUE7CitENDYwO0Q0NjA7MTExMSAxMTZEIDExQUI7RDQ2MDsxMTExIDExNkQgMTFBQjsKK0Q0NjE7RDQ2MTsxMTExIDExNkQgMTFBQztENDYxOzExMTEgMTE2RCAxMUFDOworRDQ2MjtENDYyOzExMTEgMTE2RCAxMUFEO0Q0NjI7MTExMSAxMTZEIDExQUQ7CitENDYzO0Q0NjM7MTExMSAxMTZEIDExQUU7RDQ2MzsxMTExIDExNkQgMTFBRTsKK0Q0NjQ7RDQ2NDsxMTExIDExNkQgMTFBRjtENDY0OzExMTEgMTE2RCAxMUFGOworRDQ2NTtENDY1OzExMTEgMTE2RCAxMUIwO0Q0NjU7MTExMSAxMTZEIDExQjA7CitENDY2O0Q0NjY7MTExMSAxMTZEIDExQjE7RDQ2NjsxMTExIDExNkQgMTFCMTsKK0Q0Njc7RDQ2NzsxMTExIDExNkQgMTFCMjtENDY3OzExMTEgMTE2RCAxMUIyOworRDQ2ODtENDY4OzExMTEgMTE2RCAxMUIzO0Q0Njg7MTExMSAxMTZEIDExQjM7CitENDY5O0Q0Njk7MTExMSAxMTZEIDExQjQ7RDQ2OTsxMTExIDExNkQgMTFCNDsKK0Q0NkE7RDQ2QTsxMTExIDExNkQgMTFCNTtENDZBOzExMTEgMTE2RCAxMUI1OworRDQ2QjtENDZCOzExMTEgMTE2RCAxMUI2O0Q0NkI7MTExMSAxMTZEIDExQjY7CitENDZDO0Q0NkM7MTExMSAxMTZEIDExQjc7RDQ2QzsxMTExIDExNkQgMTFCNzsKK0Q0NkQ7RDQ2RDsxMTExIDExNkQgMTFCODtENDZEOzExMTEgMTE2RCAxMUI4OworRDQ2RTtENDZFOzExMTEgMTE2RCAxMUI5O0Q0NkU7MTExMSAxMTZEIDExQjk7CitENDZGO0Q0NkY7MTExMSAxMTZEIDExQkE7RDQ2RjsxMTExIDExNkQgMTFCQTsKK0Q0NzA7RDQ3MDsxMTExIDExNkQgMTFCQjtENDcwOzExMTEgMTE2RCAxMUJCOworRDQ3MTtENDcxOzExMTEgMTE2RCAxMUJDO0Q0NzE7MTExMSAxMTZEIDExQkM7CitENDcyO0Q0NzI7MTExMSAxMTZEIDExQkQ7RDQ3MjsxMTExIDExNkQgMTFCRDsKK0Q0NzM7RDQ3MzsxMTExIDExNkQgMTFCRTtENDczOzExMTEgMTE2RCAxMUJFOworRDQ3NDtENDc0OzExMTEgMTE2RCAxMUJGO0Q0NzQ7MTExMSAxMTZEIDExQkY7CitENDc1O0Q0NzU7MTExMSAxMTZEIDExQzA7RDQ3NTsxMTExIDExNkQgMTFDMDsKK0Q0NzY7RDQ3NjsxMTExIDExNkQgMTFDMTtENDc2OzExMTEgMTE2RCAxMUMxOworRDQ3NztENDc3OzExMTEgMTE2RCAxMUMyO0Q0Nzc7MTExMSAxMTZEIDExQzI7CitENDc4O0Q0Nzg7MTExMSAxMTZFO0Q0Nzg7MTExMSAxMTZFOworRDQ3OTtENDc5OzExMTEgMTE2RSAxMUE4O0Q0Nzk7MTExMSAxMTZFIDExQTg7CitENDdBO0Q0N0E7MTExMSAxMTZFIDExQTk7RDQ3QTsxMTExIDExNkUgMTFBOTsKK0Q0N0I7RDQ3QjsxMTExIDExNkUgMTFBQTtENDdCOzExMTEgMTE2RSAxMUFBOworRDQ3QztENDdDOzExMTEgMTE2RSAxMUFCO0Q0N0M7MTExMSAxMTZFIDExQUI7CitENDdEO0Q0N0Q7MTExMSAxMTZFIDExQUM7RDQ3RDsxMTExIDExNkUgMTFBQzsKK0Q0N0U7RDQ3RTsxMTExIDExNkUgMTFBRDtENDdFOzExMTEgMTE2RSAxMUFEOworRDQ3RjtENDdGOzExMTEgMTE2RSAxMUFFO0Q0N0Y7MTExMSAxMTZFIDExQUU7CitENDgwO0Q0ODA7MTExMSAxMTZFIDExQUY7RDQ4MDsxMTExIDExNkUgMTFBRjsKK0Q0ODE7RDQ4MTsxMTExIDExNkUgMTFCMDtENDgxOzExMTEgMTE2RSAxMUIwOworRDQ4MjtENDgyOzExMTEgMTE2RSAxMUIxO0Q0ODI7MTExMSAxMTZFIDExQjE7CitENDgzO0Q0ODM7MTExMSAxMTZFIDExQjI7RDQ4MzsxMTExIDExNkUgMTFCMjsKK0Q0ODQ7RDQ4NDsxMTExIDExNkUgMTFCMztENDg0OzExMTEgMTE2RSAxMUIzOworRDQ4NTtENDg1OzExMTEgMTE2RSAxMUI0O0Q0ODU7MTExMSAxMTZFIDExQjQ7CitENDg2O0Q0ODY7MTExMSAxMTZFIDExQjU7RDQ4NjsxMTExIDExNkUgMTFCNTsKK0Q0ODc7RDQ4NzsxMTExIDExNkUgMTFCNjtENDg3OzExMTEgMTE2RSAxMUI2OworRDQ4ODtENDg4OzExMTEgMTE2RSAxMUI3O0Q0ODg7MTExMSAxMTZFIDExQjc7CitENDg5O0Q0ODk7MTExMSAxMTZFIDExQjg7RDQ4OTsxMTExIDExNkUgMTFCODsKK0Q0OEE7RDQ4QTsxMTExIDExNkUgMTFCOTtENDhBOzExMTEgMTE2RSAxMUI5OworRDQ4QjtENDhCOzExMTEgMTE2RSAxMUJBO0Q0OEI7MTExMSAxMTZFIDExQkE7CitENDhDO0Q0OEM7MTExMSAxMTZFIDExQkI7RDQ4QzsxMTExIDExNkUgMTFCQjsKK0Q0OEQ7RDQ4RDsxMTExIDExNkUgMTFCQztENDhEOzExMTEgMTE2RSAxMUJDOworRDQ4RTtENDhFOzExMTEgMTE2RSAxMUJEO0Q0OEU7MTExMSAxMTZFIDExQkQ7CitENDhGO0Q0OEY7MTExMSAxMTZFIDExQkU7RDQ4RjsxMTExIDExNkUgMTFCRTsKK0Q0OTA7RDQ5MDsxMTExIDExNkUgMTFCRjtENDkwOzExMTEgMTE2RSAxMUJGOworRDQ5MTtENDkxOzExMTEgMTE2RSAxMUMwO0Q0OTE7MTExMSAxMTZFIDExQzA7CitENDkyO0Q0OTI7MTExMSAxMTZFIDExQzE7RDQ5MjsxMTExIDExNkUgMTFDMTsKK0Q0OTM7RDQ5MzsxMTExIDExNkUgMTFDMjtENDkzOzExMTEgMTE2RSAxMUMyOworRDQ5NDtENDk0OzExMTEgMTE2RjtENDk0OzExMTEgMTE2RjsKK0Q0OTU7RDQ5NTsxMTExIDExNkYgMTFBODtENDk1OzExMTEgMTE2RiAxMUE4OworRDQ5NjtENDk2OzExMTEgMTE2RiAxMUE5O0Q0OTY7MTExMSAxMTZGIDExQTk7CitENDk3O0Q0OTc7MTExMSAxMTZGIDExQUE7RDQ5NzsxMTExIDExNkYgMTFBQTsKK0Q0OTg7RDQ5ODsxMTExIDExNkYgMTFBQjtENDk4OzExMTEgMTE2RiAxMUFCOworRDQ5OTtENDk5OzExMTEgMTE2RiAxMUFDO0Q0OTk7MTExMSAxMTZGIDExQUM7CitENDlBO0Q0OUE7MTExMSAxMTZGIDExQUQ7RDQ5QTsxMTExIDExNkYgMTFBRDsKK0Q0OUI7RDQ5QjsxMTExIDExNkYgMTFBRTtENDlCOzExMTEgMTE2RiAxMUFFOworRDQ5QztENDlDOzExMTEgMTE2RiAxMUFGO0Q0OUM7MTExMSAxMTZGIDExQUY7CitENDlEO0Q0OUQ7MTExMSAxMTZGIDExQjA7RDQ5RDsxMTExIDExNkYgMTFCMDsKK0Q0OUU7RDQ5RTsxMTExIDExNkYgMTFCMTtENDlFOzExMTEgMTE2RiAxMUIxOworRDQ5RjtENDlGOzExMTEgMTE2RiAxMUIyO0Q0OUY7MTExMSAxMTZGIDExQjI7CitENEEwO0Q0QTA7MTExMSAxMTZGIDExQjM7RDRBMDsxMTExIDExNkYgMTFCMzsKK0Q0QTE7RDRBMTsxMTExIDExNkYgMTFCNDtENEExOzExMTEgMTE2RiAxMUI0OworRDRBMjtENEEyOzExMTEgMTE2RiAxMUI1O0Q0QTI7MTExMSAxMTZGIDExQjU7CitENEEzO0Q0QTM7MTExMSAxMTZGIDExQjY7RDRBMzsxMTExIDExNkYgMTFCNjsKK0Q0QTQ7RDRBNDsxMTExIDExNkYgMTFCNztENEE0OzExMTEgMTE2RiAxMUI3OworRDRBNTtENEE1OzExMTEgMTE2RiAxMUI4O0Q0QTU7MTExMSAxMTZGIDExQjg7CitENEE2O0Q0QTY7MTExMSAxMTZGIDExQjk7RDRBNjsxMTExIDExNkYgMTFCOTsKK0Q0QTc7RDRBNzsxMTExIDExNkYgMTFCQTtENEE3OzExMTEgMTE2RiAxMUJBOworRDRBODtENEE4OzExMTEgMTE2RiAxMUJCO0Q0QTg7MTExMSAxMTZGIDExQkI7CitENEE5O0Q0QTk7MTExMSAxMTZGIDExQkM7RDRBOTsxMTExIDExNkYgMTFCQzsKK0Q0QUE7RDRBQTsxMTExIDExNkYgMTFCRDtENEFBOzExMTEgMTE2RiAxMUJEOworRDRBQjtENEFCOzExMTEgMTE2RiAxMUJFO0Q0QUI7MTExMSAxMTZGIDExQkU7CitENEFDO0Q0QUM7MTExMSAxMTZGIDExQkY7RDRBQzsxMTExIDExNkYgMTFCRjsKK0Q0QUQ7RDRBRDsxMTExIDExNkYgMTFDMDtENEFEOzExMTEgMTE2RiAxMUMwOworRDRBRTtENEFFOzExMTEgMTE2RiAxMUMxO0Q0QUU7MTExMSAxMTZGIDExQzE7CitENEFGO0Q0QUY7MTExMSAxMTZGIDExQzI7RDRBRjsxMTExIDExNkYgMTFDMjsKK0Q0QjA7RDRCMDsxMTExIDExNzA7RDRCMDsxMTExIDExNzA7CitENEIxO0Q0QjE7MTExMSAxMTcwIDExQTg7RDRCMTsxMTExIDExNzAgMTFBODsKK0Q0QjI7RDRCMjsxMTExIDExNzAgMTFBOTtENEIyOzExMTEgMTE3MCAxMUE5OworRDRCMztENEIzOzExMTEgMTE3MCAxMUFBO0Q0QjM7MTExMSAxMTcwIDExQUE7CitENEI0O0Q0QjQ7MTExMSAxMTcwIDExQUI7RDRCNDsxMTExIDExNzAgMTFBQjsKK0Q0QjU7RDRCNTsxMTExIDExNzAgMTFBQztENEI1OzExMTEgMTE3MCAxMUFDOworRDRCNjtENEI2OzExMTEgMTE3MCAxMUFEO0Q0QjY7MTExMSAxMTcwIDExQUQ7CitENEI3O0Q0Qjc7MTExMSAxMTcwIDExQUU7RDRCNzsxMTExIDExNzAgMTFBRTsKK0Q0Qjg7RDRCODsxMTExIDExNzAgMTFBRjtENEI4OzExMTEgMTE3MCAxMUFGOworRDRCOTtENEI5OzExMTEgMTE3MCAxMUIwO0Q0Qjk7MTExMSAxMTcwIDExQjA7CitENEJBO0Q0QkE7MTExMSAxMTcwIDExQjE7RDRCQTsxMTExIDExNzAgMTFCMTsKK0Q0QkI7RDRCQjsxMTExIDExNzAgMTFCMjtENEJCOzExMTEgMTE3MCAxMUIyOworRDRCQztENEJDOzExMTEgMTE3MCAxMUIzO0Q0QkM7MTExMSAxMTcwIDExQjM7CitENEJEO0Q0QkQ7MTExMSAxMTcwIDExQjQ7RDRCRDsxMTExIDExNzAgMTFCNDsKK0Q0QkU7RDRCRTsxMTExIDExNzAgMTFCNTtENEJFOzExMTEgMTE3MCAxMUI1OworRDRCRjtENEJGOzExMTEgMTE3MCAxMUI2O0Q0QkY7MTExMSAxMTcwIDExQjY7CitENEMwO0Q0QzA7MTExMSAxMTcwIDExQjc7RDRDMDsxMTExIDExNzAgMTFCNzsKK0Q0QzE7RDRDMTsxMTExIDExNzAgMTFCODtENEMxOzExMTEgMTE3MCAxMUI4OworRDRDMjtENEMyOzExMTEgMTE3MCAxMUI5O0Q0QzI7MTExMSAxMTcwIDExQjk7CitENEMzO0Q0QzM7MTExMSAxMTcwIDExQkE7RDRDMzsxMTExIDExNzAgMTFCQTsKK0Q0QzQ7RDRDNDsxMTExIDExNzAgMTFCQjtENEM0OzExMTEgMTE3MCAxMUJCOworRDRDNTtENEM1OzExMTEgMTE3MCAxMUJDO0Q0QzU7MTExMSAxMTcwIDExQkM7CitENEM2O0Q0QzY7MTExMSAxMTcwIDExQkQ7RDRDNjsxMTExIDExNzAgMTFCRDsKK0Q0Qzc7RDRDNzsxMTExIDExNzAgMTFCRTtENEM3OzExMTEgMTE3MCAxMUJFOworRDRDODtENEM4OzExMTEgMTE3MCAxMUJGO0Q0Qzg7MTExMSAxMTcwIDExQkY7CitENEM5O0Q0Qzk7MTExMSAxMTcwIDExQzA7RDRDOTsxMTExIDExNzAgMTFDMDsKK0Q0Q0E7RDRDQTsxMTExIDExNzAgMTFDMTtENENBOzExMTEgMTE3MCAxMUMxOworRDRDQjtENENCOzExMTEgMTE3MCAxMUMyO0Q0Q0I7MTExMSAxMTcwIDExQzI7CitENENDO0Q0Q0M7MTExMSAxMTcxO0Q0Q0M7MTExMSAxMTcxOworRDRDRDtENENEOzExMTEgMTE3MSAxMUE4O0Q0Q0Q7MTExMSAxMTcxIDExQTg7CitENENFO0Q0Q0U7MTExMSAxMTcxIDExQTk7RDRDRTsxMTExIDExNzEgMTFBOTsKK0Q0Q0Y7RDRDRjsxMTExIDExNzEgMTFBQTtENENGOzExMTEgMTE3MSAxMUFBOworRDREMDtENEQwOzExMTEgMTE3MSAxMUFCO0Q0RDA7MTExMSAxMTcxIDExQUI7CitENEQxO0Q0RDE7MTExMSAxMTcxIDExQUM7RDREMTsxMTExIDExNzEgMTFBQzsKK0Q0RDI7RDREMjsxMTExIDExNzEgMTFBRDtENEQyOzExMTEgMTE3MSAxMUFEOworRDREMztENEQzOzExMTEgMTE3MSAxMUFFO0Q0RDM7MTExMSAxMTcxIDExQUU7CitENEQ0O0Q0RDQ7MTExMSAxMTcxIDExQUY7RDRENDsxMTExIDExNzEgMTFBRjsKK0Q0RDU7RDRENTsxMTExIDExNzEgMTFCMDtENEQ1OzExMTEgMTE3MSAxMUIwOworRDRENjtENEQ2OzExMTEgMTE3MSAxMUIxO0Q0RDY7MTExMSAxMTcxIDExQjE7CitENEQ3O0Q0RDc7MTExMSAxMTcxIDExQjI7RDRENzsxMTExIDExNzEgMTFCMjsKK0Q0RDg7RDREODsxMTExIDExNzEgMTFCMztENEQ4OzExMTEgMTE3MSAxMUIzOworRDREOTtENEQ5OzExMTEgMTE3MSAxMUI0O0Q0RDk7MTExMSAxMTcxIDExQjQ7CitENERBO0Q0REE7MTExMSAxMTcxIDExQjU7RDREQTsxMTExIDExNzEgMTFCNTsKK0Q0REI7RDREQjsxMTExIDExNzEgMTFCNjtENERCOzExMTEgMTE3MSAxMUI2OworRDREQztENERDOzExMTEgMTE3MSAxMUI3O0Q0REM7MTExMSAxMTcxIDExQjc7CitENEREO0Q0REQ7MTExMSAxMTcxIDExQjg7RDRERDsxMTExIDExNzEgMTFCODsKK0Q0REU7RDRERTsxMTExIDExNzEgMTFCOTtENERFOzExMTEgMTE3MSAxMUI5OworRDRERjtENERGOzExMTEgMTE3MSAxMUJBO0Q0REY7MTExMSAxMTcxIDExQkE7CitENEUwO0Q0RTA7MTExMSAxMTcxIDExQkI7RDRFMDsxMTExIDExNzEgMTFCQjsKK0Q0RTE7RDRFMTsxMTExIDExNzEgMTFCQztENEUxOzExMTEgMTE3MSAxMUJDOworRDRFMjtENEUyOzExMTEgMTE3MSAxMUJEO0Q0RTI7MTExMSAxMTcxIDExQkQ7CitENEUzO0Q0RTM7MTExMSAxMTcxIDExQkU7RDRFMzsxMTExIDExNzEgMTFCRTsKK0Q0RTQ7RDRFNDsxMTExIDExNzEgMTFCRjtENEU0OzExMTEgMTE3MSAxMUJGOworRDRFNTtENEU1OzExMTEgMTE3MSAxMUMwO0Q0RTU7MTExMSAxMTcxIDExQzA7CitENEU2O0Q0RTY7MTExMSAxMTcxIDExQzE7RDRFNjsxMTExIDExNzEgMTFDMTsKK0Q0RTc7RDRFNzsxMTExIDExNzEgMTFDMjtENEU3OzExMTEgMTE3MSAxMUMyOworRDRFODtENEU4OzExMTEgMTE3MjtENEU4OzExMTEgMTE3MjsKK0Q0RTk7RDRFOTsxMTExIDExNzIgMTFBODtENEU5OzExMTEgMTE3MiAxMUE4OworRDRFQTtENEVBOzExMTEgMTE3MiAxMUE5O0Q0RUE7MTExMSAxMTcyIDExQTk7CitENEVCO0Q0RUI7MTExMSAxMTcyIDExQUE7RDRFQjsxMTExIDExNzIgMTFBQTsKK0Q0RUM7RDRFQzsxMTExIDExNzIgMTFBQjtENEVDOzExMTEgMTE3MiAxMUFCOworRDRFRDtENEVEOzExMTEgMTE3MiAxMUFDO0Q0RUQ7MTExMSAxMTcyIDExQUM7CitENEVFO0Q0RUU7MTExMSAxMTcyIDExQUQ7RDRFRTsxMTExIDExNzIgMTFBRDsKK0Q0RUY7RDRFRjsxMTExIDExNzIgMTFBRTtENEVGOzExMTEgMTE3MiAxMUFFOworRDRGMDtENEYwOzExMTEgMTE3MiAxMUFGO0Q0RjA7MTExMSAxMTcyIDExQUY7CitENEYxO0Q0RjE7MTExMSAxMTcyIDExQjA7RDRGMTsxMTExIDExNzIgMTFCMDsKK0Q0RjI7RDRGMjsxMTExIDExNzIgMTFCMTtENEYyOzExMTEgMTE3MiAxMUIxOworRDRGMztENEYzOzExMTEgMTE3MiAxMUIyO0Q0RjM7MTExMSAxMTcyIDExQjI7CitENEY0O0Q0RjQ7MTExMSAxMTcyIDExQjM7RDRGNDsxMTExIDExNzIgMTFCMzsKK0Q0RjU7RDRGNTsxMTExIDExNzIgMTFCNDtENEY1OzExMTEgMTE3MiAxMUI0OworRDRGNjtENEY2OzExMTEgMTE3MiAxMUI1O0Q0RjY7MTExMSAxMTcyIDExQjU7CitENEY3O0Q0Rjc7MTExMSAxMTcyIDExQjY7RDRGNzsxMTExIDExNzIgMTFCNjsKK0Q0Rjg7RDRGODsxMTExIDExNzIgMTFCNztENEY4OzExMTEgMTE3MiAxMUI3OworRDRGOTtENEY5OzExMTEgMTE3MiAxMUI4O0Q0Rjk7MTExMSAxMTcyIDExQjg7CitENEZBO0Q0RkE7MTExMSAxMTcyIDExQjk7RDRGQTsxMTExIDExNzIgMTFCOTsKK0Q0RkI7RDRGQjsxMTExIDExNzIgMTFCQTtENEZCOzExMTEgMTE3MiAxMUJBOworRDRGQztENEZDOzExMTEgMTE3MiAxMUJCO0Q0RkM7MTExMSAxMTcyIDExQkI7CitENEZEO0Q0RkQ7MTExMSAxMTcyIDExQkM7RDRGRDsxMTExIDExNzIgMTFCQzsKK0Q0RkU7RDRGRTsxMTExIDExNzIgMTFCRDtENEZFOzExMTEgMTE3MiAxMUJEOworRDRGRjtENEZGOzExMTEgMTE3MiAxMUJFO0Q0RkY7MTExMSAxMTcyIDExQkU7CitENTAwO0Q1MDA7MTExMSAxMTcyIDExQkY7RDUwMDsxMTExIDExNzIgMTFCRjsKK0Q1MDE7RDUwMTsxMTExIDExNzIgMTFDMDtENTAxOzExMTEgMTE3MiAxMUMwOworRDUwMjtENTAyOzExMTEgMTE3MiAxMUMxO0Q1MDI7MTExMSAxMTcyIDExQzE7CitENTAzO0Q1MDM7MTExMSAxMTcyIDExQzI7RDUwMzsxMTExIDExNzIgMTFDMjsKK0Q1MDQ7RDUwNDsxMTExIDExNzM7RDUwNDsxMTExIDExNzM7CitENTA1O0Q1MDU7MTExMSAxMTczIDExQTg7RDUwNTsxMTExIDExNzMgMTFBODsKK0Q1MDY7RDUwNjsxMTExIDExNzMgMTFBOTtENTA2OzExMTEgMTE3MyAxMUE5OworRDUwNztENTA3OzExMTEgMTE3MyAxMUFBO0Q1MDc7MTExMSAxMTczIDExQUE7CitENTA4O0Q1MDg7MTExMSAxMTczIDExQUI7RDUwODsxMTExIDExNzMgMTFBQjsKK0Q1MDk7RDUwOTsxMTExIDExNzMgMTFBQztENTA5OzExMTEgMTE3MyAxMUFDOworRDUwQTtENTBBOzExMTEgMTE3MyAxMUFEO0Q1MEE7MTExMSAxMTczIDExQUQ7CitENTBCO0Q1MEI7MTExMSAxMTczIDExQUU7RDUwQjsxMTExIDExNzMgMTFBRTsKK0Q1MEM7RDUwQzsxMTExIDExNzMgMTFBRjtENTBDOzExMTEgMTE3MyAxMUFGOworRDUwRDtENTBEOzExMTEgMTE3MyAxMUIwO0Q1MEQ7MTExMSAxMTczIDExQjA7CitENTBFO0Q1MEU7MTExMSAxMTczIDExQjE7RDUwRTsxMTExIDExNzMgMTFCMTsKK0Q1MEY7RDUwRjsxMTExIDExNzMgMTFCMjtENTBGOzExMTEgMTE3MyAxMUIyOworRDUxMDtENTEwOzExMTEgMTE3MyAxMUIzO0Q1MTA7MTExMSAxMTczIDExQjM7CitENTExO0Q1MTE7MTExMSAxMTczIDExQjQ7RDUxMTsxMTExIDExNzMgMTFCNDsKK0Q1MTI7RDUxMjsxMTExIDExNzMgMTFCNTtENTEyOzExMTEgMTE3MyAxMUI1OworRDUxMztENTEzOzExMTEgMTE3MyAxMUI2O0Q1MTM7MTExMSAxMTczIDExQjY7CitENTE0O0Q1MTQ7MTExMSAxMTczIDExQjc7RDUxNDsxMTExIDExNzMgMTFCNzsKK0Q1MTU7RDUxNTsxMTExIDExNzMgMTFCODtENTE1OzExMTEgMTE3MyAxMUI4OworRDUxNjtENTE2OzExMTEgMTE3MyAxMUI5O0Q1MTY7MTExMSAxMTczIDExQjk7CitENTE3O0Q1MTc7MTExMSAxMTczIDExQkE7RDUxNzsxMTExIDExNzMgMTFCQTsKK0Q1MTg7RDUxODsxMTExIDExNzMgMTFCQjtENTE4OzExMTEgMTE3MyAxMUJCOworRDUxOTtENTE5OzExMTEgMTE3MyAxMUJDO0Q1MTk7MTExMSAxMTczIDExQkM7CitENTFBO0Q1MUE7MTExMSAxMTczIDExQkQ7RDUxQTsxMTExIDExNzMgMTFCRDsKK0Q1MUI7RDUxQjsxMTExIDExNzMgMTFCRTtENTFCOzExMTEgMTE3MyAxMUJFOworRDUxQztENTFDOzExMTEgMTE3MyAxMUJGO0Q1MUM7MTExMSAxMTczIDExQkY7CitENTFEO0Q1MUQ7MTExMSAxMTczIDExQzA7RDUxRDsxMTExIDExNzMgMTFDMDsKK0Q1MUU7RDUxRTsxMTExIDExNzMgMTFDMTtENTFFOzExMTEgMTE3MyAxMUMxOworRDUxRjtENTFGOzExMTEgMTE3MyAxMUMyO0Q1MUY7MTExMSAxMTczIDExQzI7CitENTIwO0Q1MjA7MTExMSAxMTc0O0Q1MjA7MTExMSAxMTc0OworRDUyMTtENTIxOzExMTEgMTE3NCAxMUE4O0Q1MjE7MTExMSAxMTc0IDExQTg7CitENTIyO0Q1MjI7MTExMSAxMTc0IDExQTk7RDUyMjsxMTExIDExNzQgMTFBOTsKK0Q1MjM7RDUyMzsxMTExIDExNzQgMTFBQTtENTIzOzExMTEgMTE3NCAxMUFBOworRDUyNDtENTI0OzExMTEgMTE3NCAxMUFCO0Q1MjQ7MTExMSAxMTc0IDExQUI7CitENTI1O0Q1MjU7MTExMSAxMTc0IDExQUM7RDUyNTsxMTExIDExNzQgMTFBQzsKK0Q1MjY7RDUyNjsxMTExIDExNzQgMTFBRDtENTI2OzExMTEgMTE3NCAxMUFEOworRDUyNztENTI3OzExMTEgMTE3NCAxMUFFO0Q1Mjc7MTExMSAxMTc0IDExQUU7CitENTI4O0Q1Mjg7MTExMSAxMTc0IDExQUY7RDUyODsxMTExIDExNzQgMTFBRjsKK0Q1Mjk7RDUyOTsxMTExIDExNzQgMTFCMDtENTI5OzExMTEgMTE3NCAxMUIwOworRDUyQTtENTJBOzExMTEgMTE3NCAxMUIxO0Q1MkE7MTExMSAxMTc0IDExQjE7CitENTJCO0Q1MkI7MTExMSAxMTc0IDExQjI7RDUyQjsxMTExIDExNzQgMTFCMjsKK0Q1MkM7RDUyQzsxMTExIDExNzQgMTFCMztENTJDOzExMTEgMTE3NCAxMUIzOworRDUyRDtENTJEOzExMTEgMTE3NCAxMUI0O0Q1MkQ7MTExMSAxMTc0IDExQjQ7CitENTJFO0Q1MkU7MTExMSAxMTc0IDExQjU7RDUyRTsxMTExIDExNzQgMTFCNTsKK0Q1MkY7RDUyRjsxMTExIDExNzQgMTFCNjtENTJGOzExMTEgMTE3NCAxMUI2OworRDUzMDtENTMwOzExMTEgMTE3NCAxMUI3O0Q1MzA7MTExMSAxMTc0IDExQjc7CitENTMxO0Q1MzE7MTExMSAxMTc0IDExQjg7RDUzMTsxMTExIDExNzQgMTFCODsKK0Q1MzI7RDUzMjsxMTExIDExNzQgMTFCOTtENTMyOzExMTEgMTE3NCAxMUI5OworRDUzMztENTMzOzExMTEgMTE3NCAxMUJBO0Q1MzM7MTExMSAxMTc0IDExQkE7CitENTM0O0Q1MzQ7MTExMSAxMTc0IDExQkI7RDUzNDsxMTExIDExNzQgMTFCQjsKK0Q1MzU7RDUzNTsxMTExIDExNzQgMTFCQztENTM1OzExMTEgMTE3NCAxMUJDOworRDUzNjtENTM2OzExMTEgMTE3NCAxMUJEO0Q1MzY7MTExMSAxMTc0IDExQkQ7CitENTM3O0Q1Mzc7MTExMSAxMTc0IDExQkU7RDUzNzsxMTExIDExNzQgMTFCRTsKK0Q1Mzg7RDUzODsxMTExIDExNzQgMTFCRjtENTM4OzExMTEgMTE3NCAxMUJGOworRDUzOTtENTM5OzExMTEgMTE3NCAxMUMwO0Q1Mzk7MTExMSAxMTc0IDExQzA7CitENTNBO0Q1M0E7MTExMSAxMTc0IDExQzE7RDUzQTsxMTExIDExNzQgMTFDMTsKK0Q1M0I7RDUzQjsxMTExIDExNzQgMTFDMjtENTNCOzExMTEgMTE3NCAxMUMyOworRDUzQztENTNDOzExMTEgMTE3NTtENTNDOzExMTEgMTE3NTsKK0Q1M0Q7RDUzRDsxMTExIDExNzUgMTFBODtENTNEOzExMTEgMTE3NSAxMUE4OworRDUzRTtENTNFOzExMTEgMTE3NSAxMUE5O0Q1M0U7MTExMSAxMTc1IDExQTk7CitENTNGO0Q1M0Y7MTExMSAxMTc1IDExQUE7RDUzRjsxMTExIDExNzUgMTFBQTsKK0Q1NDA7RDU0MDsxMTExIDExNzUgMTFBQjtENTQwOzExMTEgMTE3NSAxMUFCOworRDU0MTtENTQxOzExMTEgMTE3NSAxMUFDO0Q1NDE7MTExMSAxMTc1IDExQUM7CitENTQyO0Q1NDI7MTExMSAxMTc1IDExQUQ7RDU0MjsxMTExIDExNzUgMTFBRDsKK0Q1NDM7RDU0MzsxMTExIDExNzUgMTFBRTtENTQzOzExMTEgMTE3NSAxMUFFOworRDU0NDtENTQ0OzExMTEgMTE3NSAxMUFGO0Q1NDQ7MTExMSAxMTc1IDExQUY7CitENTQ1O0Q1NDU7MTExMSAxMTc1IDExQjA7RDU0NTsxMTExIDExNzUgMTFCMDsKK0Q1NDY7RDU0NjsxMTExIDExNzUgMTFCMTtENTQ2OzExMTEgMTE3NSAxMUIxOworRDU0NztENTQ3OzExMTEgMTE3NSAxMUIyO0Q1NDc7MTExMSAxMTc1IDExQjI7CitENTQ4O0Q1NDg7MTExMSAxMTc1IDExQjM7RDU0ODsxMTExIDExNzUgMTFCMzsKK0Q1NDk7RDU0OTsxMTExIDExNzUgMTFCNDtENTQ5OzExMTEgMTE3NSAxMUI0OworRDU0QTtENTRBOzExMTEgMTE3NSAxMUI1O0Q1NEE7MTExMSAxMTc1IDExQjU7CitENTRCO0Q1NEI7MTExMSAxMTc1IDExQjY7RDU0QjsxMTExIDExNzUgMTFCNjsKK0Q1NEM7RDU0QzsxMTExIDExNzUgMTFCNztENTRDOzExMTEgMTE3NSAxMUI3OworRDU0RDtENTREOzExMTEgMTE3NSAxMUI4O0Q1NEQ7MTExMSAxMTc1IDExQjg7CitENTRFO0Q1NEU7MTExMSAxMTc1IDExQjk7RDU0RTsxMTExIDExNzUgMTFCOTsKK0Q1NEY7RDU0RjsxMTExIDExNzUgMTFCQTtENTRGOzExMTEgMTE3NSAxMUJBOworRDU1MDtENTUwOzExMTEgMTE3NSAxMUJCO0Q1NTA7MTExMSAxMTc1IDExQkI7CitENTUxO0Q1NTE7MTExMSAxMTc1IDExQkM7RDU1MTsxMTExIDExNzUgMTFCQzsKK0Q1NTI7RDU1MjsxMTExIDExNzUgMTFCRDtENTUyOzExMTEgMTE3NSAxMUJEOworRDU1MztENTUzOzExMTEgMTE3NSAxMUJFO0Q1NTM7MTExMSAxMTc1IDExQkU7CitENTU0O0Q1NTQ7MTExMSAxMTc1IDExQkY7RDU1NDsxMTExIDExNzUgMTFCRjsKK0Q1NTU7RDU1NTsxMTExIDExNzUgMTFDMDtENTU1OzExMTEgMTE3NSAxMUMwOworRDU1NjtENTU2OzExMTEgMTE3NSAxMUMxO0Q1NTY7MTExMSAxMTc1IDExQzE7CitENTU3O0Q1NTc7MTExMSAxMTc1IDExQzI7RDU1NzsxMTExIDExNzUgMTFDMjsKK0Q1NTg7RDU1ODsxMTEyIDExNjE7RDU1ODsxMTEyIDExNjE7CitENTU5O0Q1NTk7MTExMiAxMTYxIDExQTg7RDU1OTsxMTEyIDExNjEgMTFBODsKK0Q1NUE7RDU1QTsxMTEyIDExNjEgMTFBOTtENTVBOzExMTIgMTE2MSAxMUE5OworRDU1QjtENTVCOzExMTIgMTE2MSAxMUFBO0Q1NUI7MTExMiAxMTYxIDExQUE7CitENTVDO0Q1NUM7MTExMiAxMTYxIDExQUI7RDU1QzsxMTEyIDExNjEgMTFBQjsKK0Q1NUQ7RDU1RDsxMTEyIDExNjEgMTFBQztENTVEOzExMTIgMTE2MSAxMUFDOworRDU1RTtENTVFOzExMTIgMTE2MSAxMUFEO0Q1NUU7MTExMiAxMTYxIDExQUQ7CitENTVGO0Q1NUY7MTExMiAxMTYxIDExQUU7RDU1RjsxMTEyIDExNjEgMTFBRTsKK0Q1NjA7RDU2MDsxMTEyIDExNjEgMTFBRjtENTYwOzExMTIgMTE2MSAxMUFGOworRDU2MTtENTYxOzExMTIgMTE2MSAxMUIwO0Q1NjE7MTExMiAxMTYxIDExQjA7CitENTYyO0Q1NjI7MTExMiAxMTYxIDExQjE7RDU2MjsxMTEyIDExNjEgMTFCMTsKK0Q1NjM7RDU2MzsxMTEyIDExNjEgMTFCMjtENTYzOzExMTIgMTE2MSAxMUIyOworRDU2NDtENTY0OzExMTIgMTE2MSAxMUIzO0Q1NjQ7MTExMiAxMTYxIDExQjM7CitENTY1O0Q1NjU7MTExMiAxMTYxIDExQjQ7RDU2NTsxMTEyIDExNjEgMTFCNDsKK0Q1NjY7RDU2NjsxMTEyIDExNjEgMTFCNTtENTY2OzExMTIgMTE2MSAxMUI1OworRDU2NztENTY3OzExMTIgMTE2MSAxMUI2O0Q1Njc7MTExMiAxMTYxIDExQjY7CitENTY4O0Q1Njg7MTExMiAxMTYxIDExQjc7RDU2ODsxMTEyIDExNjEgMTFCNzsKK0Q1Njk7RDU2OTsxMTEyIDExNjEgMTFCODtENTY5OzExMTIgMTE2MSAxMUI4OworRDU2QTtENTZBOzExMTIgMTE2MSAxMUI5O0Q1NkE7MTExMiAxMTYxIDExQjk7CitENTZCO0Q1NkI7MTExMiAxMTYxIDExQkE7RDU2QjsxMTEyIDExNjEgMTFCQTsKK0Q1NkM7RDU2QzsxMTEyIDExNjEgMTFCQjtENTZDOzExMTIgMTE2MSAxMUJCOworRDU2RDtENTZEOzExMTIgMTE2MSAxMUJDO0Q1NkQ7MTExMiAxMTYxIDExQkM7CitENTZFO0Q1NkU7MTExMiAxMTYxIDExQkQ7RDU2RTsxMTEyIDExNjEgMTFCRDsKK0Q1NkY7RDU2RjsxMTEyIDExNjEgMTFCRTtENTZGOzExMTIgMTE2MSAxMUJFOworRDU3MDtENTcwOzExMTIgMTE2MSAxMUJGO0Q1NzA7MTExMiAxMTYxIDExQkY7CitENTcxO0Q1NzE7MTExMiAxMTYxIDExQzA7RDU3MTsxMTEyIDExNjEgMTFDMDsKK0Q1NzI7RDU3MjsxMTEyIDExNjEgMTFDMTtENTcyOzExMTIgMTE2MSAxMUMxOworRDU3MztENTczOzExMTIgMTE2MSAxMUMyO0Q1NzM7MTExMiAxMTYxIDExQzI7CitENTc0O0Q1NzQ7MTExMiAxMTYyO0Q1NzQ7MTExMiAxMTYyOworRDU3NTtENTc1OzExMTIgMTE2MiAxMUE4O0Q1NzU7MTExMiAxMTYyIDExQTg7CitENTc2O0Q1NzY7MTExMiAxMTYyIDExQTk7RDU3NjsxMTEyIDExNjIgMTFBOTsKK0Q1Nzc7RDU3NzsxMTEyIDExNjIgMTFBQTtENTc3OzExMTIgMTE2MiAxMUFBOworRDU3ODtENTc4OzExMTIgMTE2MiAxMUFCO0Q1Nzg7MTExMiAxMTYyIDExQUI7CitENTc5O0Q1Nzk7MTExMiAxMTYyIDExQUM7RDU3OTsxMTEyIDExNjIgMTFBQzsKK0Q1N0E7RDU3QTsxMTEyIDExNjIgMTFBRDtENTdBOzExMTIgMTE2MiAxMUFEOworRDU3QjtENTdCOzExMTIgMTE2MiAxMUFFO0Q1N0I7MTExMiAxMTYyIDExQUU7CitENTdDO0Q1N0M7MTExMiAxMTYyIDExQUY7RDU3QzsxMTEyIDExNjIgMTFBRjsKK0Q1N0Q7RDU3RDsxMTEyIDExNjIgMTFCMDtENTdEOzExMTIgMTE2MiAxMUIwOworRDU3RTtENTdFOzExMTIgMTE2MiAxMUIxO0Q1N0U7MTExMiAxMTYyIDExQjE7CitENTdGO0Q1N0Y7MTExMiAxMTYyIDExQjI7RDU3RjsxMTEyIDExNjIgMTFCMjsKK0Q1ODA7RDU4MDsxMTEyIDExNjIgMTFCMztENTgwOzExMTIgMTE2MiAxMUIzOworRDU4MTtENTgxOzExMTIgMTE2MiAxMUI0O0Q1ODE7MTExMiAxMTYyIDExQjQ7CitENTgyO0Q1ODI7MTExMiAxMTYyIDExQjU7RDU4MjsxMTEyIDExNjIgMTFCNTsKK0Q1ODM7RDU4MzsxMTEyIDExNjIgMTFCNjtENTgzOzExMTIgMTE2MiAxMUI2OworRDU4NDtENTg0OzExMTIgMTE2MiAxMUI3O0Q1ODQ7MTExMiAxMTYyIDExQjc7CitENTg1O0Q1ODU7MTExMiAxMTYyIDExQjg7RDU4NTsxMTEyIDExNjIgMTFCODsKK0Q1ODY7RDU4NjsxMTEyIDExNjIgMTFCOTtENTg2OzExMTIgMTE2MiAxMUI5OworRDU4NztENTg3OzExMTIgMTE2MiAxMUJBO0Q1ODc7MTExMiAxMTYyIDExQkE7CitENTg4O0Q1ODg7MTExMiAxMTYyIDExQkI7RDU4ODsxMTEyIDExNjIgMTFCQjsKK0Q1ODk7RDU4OTsxMTEyIDExNjIgMTFCQztENTg5OzExMTIgMTE2MiAxMUJDOworRDU4QTtENThBOzExMTIgMTE2MiAxMUJEO0Q1OEE7MTExMiAxMTYyIDExQkQ7CitENThCO0Q1OEI7MTExMiAxMTYyIDExQkU7RDU4QjsxMTEyIDExNjIgMTFCRTsKK0Q1OEM7RDU4QzsxMTEyIDExNjIgMTFCRjtENThDOzExMTIgMTE2MiAxMUJGOworRDU4RDtENThEOzExMTIgMTE2MiAxMUMwO0Q1OEQ7MTExMiAxMTYyIDExQzA7CitENThFO0Q1OEU7MTExMiAxMTYyIDExQzE7RDU4RTsxMTEyIDExNjIgMTFDMTsKK0Q1OEY7RDU4RjsxMTEyIDExNjIgMTFDMjtENThGOzExMTIgMTE2MiAxMUMyOworRDU5MDtENTkwOzExMTIgMTE2MztENTkwOzExMTIgMTE2MzsKK0Q1OTE7RDU5MTsxMTEyIDExNjMgMTFBODtENTkxOzExMTIgMTE2MyAxMUE4OworRDU5MjtENTkyOzExMTIgMTE2MyAxMUE5O0Q1OTI7MTExMiAxMTYzIDExQTk7CitENTkzO0Q1OTM7MTExMiAxMTYzIDExQUE7RDU5MzsxMTEyIDExNjMgMTFBQTsKK0Q1OTQ7RDU5NDsxMTEyIDExNjMgMTFBQjtENTk0OzExMTIgMTE2MyAxMUFCOworRDU5NTtENTk1OzExMTIgMTE2MyAxMUFDO0Q1OTU7MTExMiAxMTYzIDExQUM7CitENTk2O0Q1OTY7MTExMiAxMTYzIDExQUQ7RDU5NjsxMTEyIDExNjMgMTFBRDsKK0Q1OTc7RDU5NzsxMTEyIDExNjMgMTFBRTtENTk3OzExMTIgMTE2MyAxMUFFOworRDU5ODtENTk4OzExMTIgMTE2MyAxMUFGO0Q1OTg7MTExMiAxMTYzIDExQUY7CitENTk5O0Q1OTk7MTExMiAxMTYzIDExQjA7RDU5OTsxMTEyIDExNjMgMTFCMDsKK0Q1OUE7RDU5QTsxMTEyIDExNjMgMTFCMTtENTlBOzExMTIgMTE2MyAxMUIxOworRDU5QjtENTlCOzExMTIgMTE2MyAxMUIyO0Q1OUI7MTExMiAxMTYzIDExQjI7CitENTlDO0Q1OUM7MTExMiAxMTYzIDExQjM7RDU5QzsxMTEyIDExNjMgMTFCMzsKK0Q1OUQ7RDU5RDsxMTEyIDExNjMgMTFCNDtENTlEOzExMTIgMTE2MyAxMUI0OworRDU5RTtENTlFOzExMTIgMTE2MyAxMUI1O0Q1OUU7MTExMiAxMTYzIDExQjU7CitENTlGO0Q1OUY7MTExMiAxMTYzIDExQjY7RDU5RjsxMTEyIDExNjMgMTFCNjsKK0Q1QTA7RDVBMDsxMTEyIDExNjMgMTFCNztENUEwOzExMTIgMTE2MyAxMUI3OworRDVBMTtENUExOzExMTIgMTE2MyAxMUI4O0Q1QTE7MTExMiAxMTYzIDExQjg7CitENUEyO0Q1QTI7MTExMiAxMTYzIDExQjk7RDVBMjsxMTEyIDExNjMgMTFCOTsKK0Q1QTM7RDVBMzsxMTEyIDExNjMgMTFCQTtENUEzOzExMTIgMTE2MyAxMUJBOworRDVBNDtENUE0OzExMTIgMTE2MyAxMUJCO0Q1QTQ7MTExMiAxMTYzIDExQkI7CitENUE1O0Q1QTU7MTExMiAxMTYzIDExQkM7RDVBNTsxMTEyIDExNjMgMTFCQzsKK0Q1QTY7RDVBNjsxMTEyIDExNjMgMTFCRDtENUE2OzExMTIgMTE2MyAxMUJEOworRDVBNztENUE3OzExMTIgMTE2MyAxMUJFO0Q1QTc7MTExMiAxMTYzIDExQkU7CitENUE4O0Q1QTg7MTExMiAxMTYzIDExQkY7RDVBODsxMTEyIDExNjMgMTFCRjsKK0Q1QTk7RDVBOTsxMTEyIDExNjMgMTFDMDtENUE5OzExMTIgMTE2MyAxMUMwOworRDVBQTtENUFBOzExMTIgMTE2MyAxMUMxO0Q1QUE7MTExMiAxMTYzIDExQzE7CitENUFCO0Q1QUI7MTExMiAxMTYzIDExQzI7RDVBQjsxMTEyIDExNjMgMTFDMjsKK0Q1QUM7RDVBQzsxMTEyIDExNjQ7RDVBQzsxMTEyIDExNjQ7CitENUFEO0Q1QUQ7MTExMiAxMTY0IDExQTg7RDVBRDsxMTEyIDExNjQgMTFBODsKK0Q1QUU7RDVBRTsxMTEyIDExNjQgMTFBOTtENUFFOzExMTIgMTE2NCAxMUE5OworRDVBRjtENUFGOzExMTIgMTE2NCAxMUFBO0Q1QUY7MTExMiAxMTY0IDExQUE7CitENUIwO0Q1QjA7MTExMiAxMTY0IDExQUI7RDVCMDsxMTEyIDExNjQgMTFBQjsKK0Q1QjE7RDVCMTsxMTEyIDExNjQgMTFBQztENUIxOzExMTIgMTE2NCAxMUFDOworRDVCMjtENUIyOzExMTIgMTE2NCAxMUFEO0Q1QjI7MTExMiAxMTY0IDExQUQ7CitENUIzO0Q1QjM7MTExMiAxMTY0IDExQUU7RDVCMzsxMTEyIDExNjQgMTFBRTsKK0Q1QjQ7RDVCNDsxMTEyIDExNjQgMTFBRjtENUI0OzExMTIgMTE2NCAxMUFGOworRDVCNTtENUI1OzExMTIgMTE2NCAxMUIwO0Q1QjU7MTExMiAxMTY0IDExQjA7CitENUI2O0Q1QjY7MTExMiAxMTY0IDExQjE7RDVCNjsxMTEyIDExNjQgMTFCMTsKK0Q1Qjc7RDVCNzsxMTEyIDExNjQgMTFCMjtENUI3OzExMTIgMTE2NCAxMUIyOworRDVCODtENUI4OzExMTIgMTE2NCAxMUIzO0Q1Qjg7MTExMiAxMTY0IDExQjM7CitENUI5O0Q1Qjk7MTExMiAxMTY0IDExQjQ7RDVCOTsxMTEyIDExNjQgMTFCNDsKK0Q1QkE7RDVCQTsxMTEyIDExNjQgMTFCNTtENUJBOzExMTIgMTE2NCAxMUI1OworRDVCQjtENUJCOzExMTIgMTE2NCAxMUI2O0Q1QkI7MTExMiAxMTY0IDExQjY7CitENUJDO0Q1QkM7MTExMiAxMTY0IDExQjc7RDVCQzsxMTEyIDExNjQgMTFCNzsKK0Q1QkQ7RDVCRDsxMTEyIDExNjQgMTFCODtENUJEOzExMTIgMTE2NCAxMUI4OworRDVCRTtENUJFOzExMTIgMTE2NCAxMUI5O0Q1QkU7MTExMiAxMTY0IDExQjk7CitENUJGO0Q1QkY7MTExMiAxMTY0IDExQkE7RDVCRjsxMTEyIDExNjQgMTFCQTsKK0Q1QzA7RDVDMDsxMTEyIDExNjQgMTFCQjtENUMwOzExMTIgMTE2NCAxMUJCOworRDVDMTtENUMxOzExMTIgMTE2NCAxMUJDO0Q1QzE7MTExMiAxMTY0IDExQkM7CitENUMyO0Q1QzI7MTExMiAxMTY0IDExQkQ7RDVDMjsxMTEyIDExNjQgMTFCRDsKK0Q1QzM7RDVDMzsxMTEyIDExNjQgMTFCRTtENUMzOzExMTIgMTE2NCAxMUJFOworRDVDNDtENUM0OzExMTIgMTE2NCAxMUJGO0Q1QzQ7MTExMiAxMTY0IDExQkY7CitENUM1O0Q1QzU7MTExMiAxMTY0IDExQzA7RDVDNTsxMTEyIDExNjQgMTFDMDsKK0Q1QzY7RDVDNjsxMTEyIDExNjQgMTFDMTtENUM2OzExMTIgMTE2NCAxMUMxOworRDVDNztENUM3OzExMTIgMTE2NCAxMUMyO0Q1Qzc7MTExMiAxMTY0IDExQzI7CitENUM4O0Q1Qzg7MTExMiAxMTY1O0Q1Qzg7MTExMiAxMTY1OworRDVDOTtENUM5OzExMTIgMTE2NSAxMUE4O0Q1Qzk7MTExMiAxMTY1IDExQTg7CitENUNBO0Q1Q0E7MTExMiAxMTY1IDExQTk7RDVDQTsxMTEyIDExNjUgMTFBOTsKK0Q1Q0I7RDVDQjsxMTEyIDExNjUgMTFBQTtENUNCOzExMTIgMTE2NSAxMUFBOworRDVDQztENUNDOzExMTIgMTE2NSAxMUFCO0Q1Q0M7MTExMiAxMTY1IDExQUI7CitENUNEO0Q1Q0Q7MTExMiAxMTY1IDExQUM7RDVDRDsxMTEyIDExNjUgMTFBQzsKK0Q1Q0U7RDVDRTsxMTEyIDExNjUgMTFBRDtENUNFOzExMTIgMTE2NSAxMUFEOworRDVDRjtENUNGOzExMTIgMTE2NSAxMUFFO0Q1Q0Y7MTExMiAxMTY1IDExQUU7CitENUQwO0Q1RDA7MTExMiAxMTY1IDExQUY7RDVEMDsxMTEyIDExNjUgMTFBRjsKK0Q1RDE7RDVEMTsxMTEyIDExNjUgMTFCMDtENUQxOzExMTIgMTE2NSAxMUIwOworRDVEMjtENUQyOzExMTIgMTE2NSAxMUIxO0Q1RDI7MTExMiAxMTY1IDExQjE7CitENUQzO0Q1RDM7MTExMiAxMTY1IDExQjI7RDVEMzsxMTEyIDExNjUgMTFCMjsKK0Q1RDQ7RDVENDsxMTEyIDExNjUgMTFCMztENUQ0OzExMTIgMTE2NSAxMUIzOworRDVENTtENUQ1OzExMTIgMTE2NSAxMUI0O0Q1RDU7MTExMiAxMTY1IDExQjQ7CitENUQ2O0Q1RDY7MTExMiAxMTY1IDExQjU7RDVENjsxMTEyIDExNjUgMTFCNTsKK0Q1RDc7RDVENzsxMTEyIDExNjUgMTFCNjtENUQ3OzExMTIgMTE2NSAxMUI2OworRDVEODtENUQ4OzExMTIgMTE2NSAxMUI3O0Q1RDg7MTExMiAxMTY1IDExQjc7CitENUQ5O0Q1RDk7MTExMiAxMTY1IDExQjg7RDVEOTsxMTEyIDExNjUgMTFCODsKK0Q1REE7RDVEQTsxMTEyIDExNjUgMTFCOTtENURBOzExMTIgMTE2NSAxMUI5OworRDVEQjtENURCOzExMTIgMTE2NSAxMUJBO0Q1REI7MTExMiAxMTY1IDExQkE7CitENURDO0Q1REM7MTExMiAxMTY1IDExQkI7RDVEQzsxMTEyIDExNjUgMTFCQjsKK0Q1REQ7RDVERDsxMTEyIDExNjUgMTFCQztENUREOzExMTIgMTE2NSAxMUJDOworRDVERTtENURFOzExMTIgMTE2NSAxMUJEO0Q1REU7MTExMiAxMTY1IDExQkQ7CitENURGO0Q1REY7MTExMiAxMTY1IDExQkU7RDVERjsxMTEyIDExNjUgMTFCRTsKK0Q1RTA7RDVFMDsxMTEyIDExNjUgMTFCRjtENUUwOzExMTIgMTE2NSAxMUJGOworRDVFMTtENUUxOzExMTIgMTE2NSAxMUMwO0Q1RTE7MTExMiAxMTY1IDExQzA7CitENUUyO0Q1RTI7MTExMiAxMTY1IDExQzE7RDVFMjsxMTEyIDExNjUgMTFDMTsKK0Q1RTM7RDVFMzsxMTEyIDExNjUgMTFDMjtENUUzOzExMTIgMTE2NSAxMUMyOworRDVFNDtENUU0OzExMTIgMTE2NjtENUU0OzExMTIgMTE2NjsKK0Q1RTU7RDVFNTsxMTEyIDExNjYgMTFBODtENUU1OzExMTIgMTE2NiAxMUE4OworRDVFNjtENUU2OzExMTIgMTE2NiAxMUE5O0Q1RTY7MTExMiAxMTY2IDExQTk7CitENUU3O0Q1RTc7MTExMiAxMTY2IDExQUE7RDVFNzsxMTEyIDExNjYgMTFBQTsKK0Q1RTg7RDVFODsxMTEyIDExNjYgMTFBQjtENUU4OzExMTIgMTE2NiAxMUFCOworRDVFOTtENUU5OzExMTIgMTE2NiAxMUFDO0Q1RTk7MTExMiAxMTY2IDExQUM7CitENUVBO0Q1RUE7MTExMiAxMTY2IDExQUQ7RDVFQTsxMTEyIDExNjYgMTFBRDsKK0Q1RUI7RDVFQjsxMTEyIDExNjYgMTFBRTtENUVCOzExMTIgMTE2NiAxMUFFOworRDVFQztENUVDOzExMTIgMTE2NiAxMUFGO0Q1RUM7MTExMiAxMTY2IDExQUY7CitENUVEO0Q1RUQ7MTExMiAxMTY2IDExQjA7RDVFRDsxMTEyIDExNjYgMTFCMDsKK0Q1RUU7RDVFRTsxMTEyIDExNjYgMTFCMTtENUVFOzExMTIgMTE2NiAxMUIxOworRDVFRjtENUVGOzExMTIgMTE2NiAxMUIyO0Q1RUY7MTExMiAxMTY2IDExQjI7CitENUYwO0Q1RjA7MTExMiAxMTY2IDExQjM7RDVGMDsxMTEyIDExNjYgMTFCMzsKK0Q1RjE7RDVGMTsxMTEyIDExNjYgMTFCNDtENUYxOzExMTIgMTE2NiAxMUI0OworRDVGMjtENUYyOzExMTIgMTE2NiAxMUI1O0Q1RjI7MTExMiAxMTY2IDExQjU7CitENUYzO0Q1RjM7MTExMiAxMTY2IDExQjY7RDVGMzsxMTEyIDExNjYgMTFCNjsKK0Q1RjQ7RDVGNDsxMTEyIDExNjYgMTFCNztENUY0OzExMTIgMTE2NiAxMUI3OworRDVGNTtENUY1OzExMTIgMTE2NiAxMUI4O0Q1RjU7MTExMiAxMTY2IDExQjg7CitENUY2O0Q1RjY7MTExMiAxMTY2IDExQjk7RDVGNjsxMTEyIDExNjYgMTFCOTsKK0Q1Rjc7RDVGNzsxMTEyIDExNjYgMTFCQTtENUY3OzExMTIgMTE2NiAxMUJBOworRDVGODtENUY4OzExMTIgMTE2NiAxMUJCO0Q1Rjg7MTExMiAxMTY2IDExQkI7CitENUY5O0Q1Rjk7MTExMiAxMTY2IDExQkM7RDVGOTsxMTEyIDExNjYgMTFCQzsKK0Q1RkE7RDVGQTsxMTEyIDExNjYgMTFCRDtENUZBOzExMTIgMTE2NiAxMUJEOworRDVGQjtENUZCOzExMTIgMTE2NiAxMUJFO0Q1RkI7MTExMiAxMTY2IDExQkU7CitENUZDO0Q1RkM7MTExMiAxMTY2IDExQkY7RDVGQzsxMTEyIDExNjYgMTFCRjsKK0Q1RkQ7RDVGRDsxMTEyIDExNjYgMTFDMDtENUZEOzExMTIgMTE2NiAxMUMwOworRDVGRTtENUZFOzExMTIgMTE2NiAxMUMxO0Q1RkU7MTExMiAxMTY2IDExQzE7CitENUZGO0Q1RkY7MTExMiAxMTY2IDExQzI7RDVGRjsxMTEyIDExNjYgMTFDMjsKK0Q2MDA7RDYwMDsxMTEyIDExNjc7RDYwMDsxMTEyIDExNjc7CitENjAxO0Q2MDE7MTExMiAxMTY3IDExQTg7RDYwMTsxMTEyIDExNjcgMTFBODsKK0Q2MDI7RDYwMjsxMTEyIDExNjcgMTFBOTtENjAyOzExMTIgMTE2NyAxMUE5OworRDYwMztENjAzOzExMTIgMTE2NyAxMUFBO0Q2MDM7MTExMiAxMTY3IDExQUE7CitENjA0O0Q2MDQ7MTExMiAxMTY3IDExQUI7RDYwNDsxMTEyIDExNjcgMTFBQjsKK0Q2MDU7RDYwNTsxMTEyIDExNjcgMTFBQztENjA1OzExMTIgMTE2NyAxMUFDOworRDYwNjtENjA2OzExMTIgMTE2NyAxMUFEO0Q2MDY7MTExMiAxMTY3IDExQUQ7CitENjA3O0Q2MDc7MTExMiAxMTY3IDExQUU7RDYwNzsxMTEyIDExNjcgMTFBRTsKK0Q2MDg7RDYwODsxMTEyIDExNjcgMTFBRjtENjA4OzExMTIgMTE2NyAxMUFGOworRDYwOTtENjA5OzExMTIgMTE2NyAxMUIwO0Q2MDk7MTExMiAxMTY3IDExQjA7CitENjBBO0Q2MEE7MTExMiAxMTY3IDExQjE7RDYwQTsxMTEyIDExNjcgMTFCMTsKK0Q2MEI7RDYwQjsxMTEyIDExNjcgMTFCMjtENjBCOzExMTIgMTE2NyAxMUIyOworRDYwQztENjBDOzExMTIgMTE2NyAxMUIzO0Q2MEM7MTExMiAxMTY3IDExQjM7CitENjBEO0Q2MEQ7MTExMiAxMTY3IDExQjQ7RDYwRDsxMTEyIDExNjcgMTFCNDsKK0Q2MEU7RDYwRTsxMTEyIDExNjcgMTFCNTtENjBFOzExMTIgMTE2NyAxMUI1OworRDYwRjtENjBGOzExMTIgMTE2NyAxMUI2O0Q2MEY7MTExMiAxMTY3IDExQjY7CitENjEwO0Q2MTA7MTExMiAxMTY3IDExQjc7RDYxMDsxMTEyIDExNjcgMTFCNzsKK0Q2MTE7RDYxMTsxMTEyIDExNjcgMTFCODtENjExOzExMTIgMTE2NyAxMUI4OworRDYxMjtENjEyOzExMTIgMTE2NyAxMUI5O0Q2MTI7MTExMiAxMTY3IDExQjk7CitENjEzO0Q2MTM7MTExMiAxMTY3IDExQkE7RDYxMzsxMTEyIDExNjcgMTFCQTsKK0Q2MTQ7RDYxNDsxMTEyIDExNjcgMTFCQjtENjE0OzExMTIgMTE2NyAxMUJCOworRDYxNTtENjE1OzExMTIgMTE2NyAxMUJDO0Q2MTU7MTExMiAxMTY3IDExQkM7CitENjE2O0Q2MTY7MTExMiAxMTY3IDExQkQ7RDYxNjsxMTEyIDExNjcgMTFCRDsKK0Q2MTc7RDYxNzsxMTEyIDExNjcgMTFCRTtENjE3OzExMTIgMTE2NyAxMUJFOworRDYxODtENjE4OzExMTIgMTE2NyAxMUJGO0Q2MTg7MTExMiAxMTY3IDExQkY7CitENjE5O0Q2MTk7MTExMiAxMTY3IDExQzA7RDYxOTsxMTEyIDExNjcgMTFDMDsKK0Q2MUE7RDYxQTsxMTEyIDExNjcgMTFDMTtENjFBOzExMTIgMTE2NyAxMUMxOworRDYxQjtENjFCOzExMTIgMTE2NyAxMUMyO0Q2MUI7MTExMiAxMTY3IDExQzI7CitENjFDO0Q2MUM7MTExMiAxMTY4O0Q2MUM7MTExMiAxMTY4OworRDYxRDtENjFEOzExMTIgMTE2OCAxMUE4O0Q2MUQ7MTExMiAxMTY4IDExQTg7CitENjFFO0Q2MUU7MTExMiAxMTY4IDExQTk7RDYxRTsxMTEyIDExNjggMTFBOTsKK0Q2MUY7RDYxRjsxMTEyIDExNjggMTFBQTtENjFGOzExMTIgMTE2OCAxMUFBOworRDYyMDtENjIwOzExMTIgMTE2OCAxMUFCO0Q2MjA7MTExMiAxMTY4IDExQUI7CitENjIxO0Q2MjE7MTExMiAxMTY4IDExQUM7RDYyMTsxMTEyIDExNjggMTFBQzsKK0Q2MjI7RDYyMjsxMTEyIDExNjggMTFBRDtENjIyOzExMTIgMTE2OCAxMUFEOworRDYyMztENjIzOzExMTIgMTE2OCAxMUFFO0Q2MjM7MTExMiAxMTY4IDExQUU7CitENjI0O0Q2MjQ7MTExMiAxMTY4IDExQUY7RDYyNDsxMTEyIDExNjggMTFBRjsKK0Q2MjU7RDYyNTsxMTEyIDExNjggMTFCMDtENjI1OzExMTIgMTE2OCAxMUIwOworRDYyNjtENjI2OzExMTIgMTE2OCAxMUIxO0Q2MjY7MTExMiAxMTY4IDExQjE7CitENjI3O0Q2Mjc7MTExMiAxMTY4IDExQjI7RDYyNzsxMTEyIDExNjggMTFCMjsKK0Q2Mjg7RDYyODsxMTEyIDExNjggMTFCMztENjI4OzExMTIgMTE2OCAxMUIzOworRDYyOTtENjI5OzExMTIgMTE2OCAxMUI0O0Q2Mjk7MTExMiAxMTY4IDExQjQ7CitENjJBO0Q2MkE7MTExMiAxMTY4IDExQjU7RDYyQTsxMTEyIDExNjggMTFCNTsKK0Q2MkI7RDYyQjsxMTEyIDExNjggMTFCNjtENjJCOzExMTIgMTE2OCAxMUI2OworRDYyQztENjJDOzExMTIgMTE2OCAxMUI3O0Q2MkM7MTExMiAxMTY4IDExQjc7CitENjJEO0Q2MkQ7MTExMiAxMTY4IDExQjg7RDYyRDsxMTEyIDExNjggMTFCODsKK0Q2MkU7RDYyRTsxMTEyIDExNjggMTFCOTtENjJFOzExMTIgMTE2OCAxMUI5OworRDYyRjtENjJGOzExMTIgMTE2OCAxMUJBO0Q2MkY7MTExMiAxMTY4IDExQkE7CitENjMwO0Q2MzA7MTExMiAxMTY4IDExQkI7RDYzMDsxMTEyIDExNjggMTFCQjsKK0Q2MzE7RDYzMTsxMTEyIDExNjggMTFCQztENjMxOzExMTIgMTE2OCAxMUJDOworRDYzMjtENjMyOzExMTIgMTE2OCAxMUJEO0Q2MzI7MTExMiAxMTY4IDExQkQ7CitENjMzO0Q2MzM7MTExMiAxMTY4IDExQkU7RDYzMzsxMTEyIDExNjggMTFCRTsKK0Q2MzQ7RDYzNDsxMTEyIDExNjggMTFCRjtENjM0OzExMTIgMTE2OCAxMUJGOworRDYzNTtENjM1OzExMTIgMTE2OCAxMUMwO0Q2MzU7MTExMiAxMTY4IDExQzA7CitENjM2O0Q2MzY7MTExMiAxMTY4IDExQzE7RDYzNjsxMTEyIDExNjggMTFDMTsKK0Q2Mzc7RDYzNzsxMTEyIDExNjggMTFDMjtENjM3OzExMTIgMTE2OCAxMUMyOworRDYzODtENjM4OzExMTIgMTE2OTtENjM4OzExMTIgMTE2OTsKK0Q2Mzk7RDYzOTsxMTEyIDExNjkgMTFBODtENjM5OzExMTIgMTE2OSAxMUE4OworRDYzQTtENjNBOzExMTIgMTE2OSAxMUE5O0Q2M0E7MTExMiAxMTY5IDExQTk7CitENjNCO0Q2M0I7MTExMiAxMTY5IDExQUE7RDYzQjsxMTEyIDExNjkgMTFBQTsKK0Q2M0M7RDYzQzsxMTEyIDExNjkgMTFBQjtENjNDOzExMTIgMTE2OSAxMUFCOworRDYzRDtENjNEOzExMTIgMTE2OSAxMUFDO0Q2M0Q7MTExMiAxMTY5IDExQUM7CitENjNFO0Q2M0U7MTExMiAxMTY5IDExQUQ7RDYzRTsxMTEyIDExNjkgMTFBRDsKK0Q2M0Y7RDYzRjsxMTEyIDExNjkgMTFBRTtENjNGOzExMTIgMTE2OSAxMUFFOworRDY0MDtENjQwOzExMTIgMTE2OSAxMUFGO0Q2NDA7MTExMiAxMTY5IDExQUY7CitENjQxO0Q2NDE7MTExMiAxMTY5IDExQjA7RDY0MTsxMTEyIDExNjkgMTFCMDsKK0Q2NDI7RDY0MjsxMTEyIDExNjkgMTFCMTtENjQyOzExMTIgMTE2OSAxMUIxOworRDY0MztENjQzOzExMTIgMTE2OSAxMUIyO0Q2NDM7MTExMiAxMTY5IDExQjI7CitENjQ0O0Q2NDQ7MTExMiAxMTY5IDExQjM7RDY0NDsxMTEyIDExNjkgMTFCMzsKK0Q2NDU7RDY0NTsxMTEyIDExNjkgMTFCNDtENjQ1OzExMTIgMTE2OSAxMUI0OworRDY0NjtENjQ2OzExMTIgMTE2OSAxMUI1O0Q2NDY7MTExMiAxMTY5IDExQjU7CitENjQ3O0Q2NDc7MTExMiAxMTY5IDExQjY7RDY0NzsxMTEyIDExNjkgMTFCNjsKK0Q2NDg7RDY0ODsxMTEyIDExNjkgMTFCNztENjQ4OzExMTIgMTE2OSAxMUI3OworRDY0OTtENjQ5OzExMTIgMTE2OSAxMUI4O0Q2NDk7MTExMiAxMTY5IDExQjg7CitENjRBO0Q2NEE7MTExMiAxMTY5IDExQjk7RDY0QTsxMTEyIDExNjkgMTFCOTsKK0Q2NEI7RDY0QjsxMTEyIDExNjkgMTFCQTtENjRCOzExMTIgMTE2OSAxMUJBOworRDY0QztENjRDOzExMTIgMTE2OSAxMUJCO0Q2NEM7MTExMiAxMTY5IDExQkI7CitENjREO0Q2NEQ7MTExMiAxMTY5IDExQkM7RDY0RDsxMTEyIDExNjkgMTFCQzsKK0Q2NEU7RDY0RTsxMTEyIDExNjkgMTFCRDtENjRFOzExMTIgMTE2OSAxMUJEOworRDY0RjtENjRGOzExMTIgMTE2OSAxMUJFO0Q2NEY7MTExMiAxMTY5IDExQkU7CitENjUwO0Q2NTA7MTExMiAxMTY5IDExQkY7RDY1MDsxMTEyIDExNjkgMTFCRjsKK0Q2NTE7RDY1MTsxMTEyIDExNjkgMTFDMDtENjUxOzExMTIgMTE2OSAxMUMwOworRDY1MjtENjUyOzExMTIgMTE2OSAxMUMxO0Q2NTI7MTExMiAxMTY5IDExQzE7CitENjUzO0Q2NTM7MTExMiAxMTY5IDExQzI7RDY1MzsxMTEyIDExNjkgMTFDMjsKK0Q2NTQ7RDY1NDsxMTEyIDExNkE7RDY1NDsxMTEyIDExNkE7CitENjU1O0Q2NTU7MTExMiAxMTZBIDExQTg7RDY1NTsxMTEyIDExNkEgMTFBODsKK0Q2NTY7RDY1NjsxMTEyIDExNkEgMTFBOTtENjU2OzExMTIgMTE2QSAxMUE5OworRDY1NztENjU3OzExMTIgMTE2QSAxMUFBO0Q2NTc7MTExMiAxMTZBIDExQUE7CitENjU4O0Q2NTg7MTExMiAxMTZBIDExQUI7RDY1ODsxMTEyIDExNkEgMTFBQjsKK0Q2NTk7RDY1OTsxMTEyIDExNkEgMTFBQztENjU5OzExMTIgMTE2QSAxMUFDOworRDY1QTtENjVBOzExMTIgMTE2QSAxMUFEO0Q2NUE7MTExMiAxMTZBIDExQUQ7CitENjVCO0Q2NUI7MTExMiAxMTZBIDExQUU7RDY1QjsxMTEyIDExNkEgMTFBRTsKK0Q2NUM7RDY1QzsxMTEyIDExNkEgMTFBRjtENjVDOzExMTIgMTE2QSAxMUFGOworRDY1RDtENjVEOzExMTIgMTE2QSAxMUIwO0Q2NUQ7MTExMiAxMTZBIDExQjA7CitENjVFO0Q2NUU7MTExMiAxMTZBIDExQjE7RDY1RTsxMTEyIDExNkEgMTFCMTsKK0Q2NUY7RDY1RjsxMTEyIDExNkEgMTFCMjtENjVGOzExMTIgMTE2QSAxMUIyOworRDY2MDtENjYwOzExMTIgMTE2QSAxMUIzO0Q2NjA7MTExMiAxMTZBIDExQjM7CitENjYxO0Q2NjE7MTExMiAxMTZBIDExQjQ7RDY2MTsxMTEyIDExNkEgMTFCNDsKK0Q2NjI7RDY2MjsxMTEyIDExNkEgMTFCNTtENjYyOzExMTIgMTE2QSAxMUI1OworRDY2MztENjYzOzExMTIgMTE2QSAxMUI2O0Q2NjM7MTExMiAxMTZBIDExQjY7CitENjY0O0Q2NjQ7MTExMiAxMTZBIDExQjc7RDY2NDsxMTEyIDExNkEgMTFCNzsKK0Q2NjU7RDY2NTsxMTEyIDExNkEgMTFCODtENjY1OzExMTIgMTE2QSAxMUI4OworRDY2NjtENjY2OzExMTIgMTE2QSAxMUI5O0Q2NjY7MTExMiAxMTZBIDExQjk7CitENjY3O0Q2Njc7MTExMiAxMTZBIDExQkE7RDY2NzsxMTEyIDExNkEgMTFCQTsKK0Q2Njg7RDY2ODsxMTEyIDExNkEgMTFCQjtENjY4OzExMTIgMTE2QSAxMUJCOworRDY2OTtENjY5OzExMTIgMTE2QSAxMUJDO0Q2Njk7MTExMiAxMTZBIDExQkM7CitENjZBO0Q2NkE7MTExMiAxMTZBIDExQkQ7RDY2QTsxMTEyIDExNkEgMTFCRDsKK0Q2NkI7RDY2QjsxMTEyIDExNkEgMTFCRTtENjZCOzExMTIgMTE2QSAxMUJFOworRDY2QztENjZDOzExMTIgMTE2QSAxMUJGO0Q2NkM7MTExMiAxMTZBIDExQkY7CitENjZEO0Q2NkQ7MTExMiAxMTZBIDExQzA7RDY2RDsxMTEyIDExNkEgMTFDMDsKK0Q2NkU7RDY2RTsxMTEyIDExNkEgMTFDMTtENjZFOzExMTIgMTE2QSAxMUMxOworRDY2RjtENjZGOzExMTIgMTE2QSAxMUMyO0Q2NkY7MTExMiAxMTZBIDExQzI7CitENjcwO0Q2NzA7MTExMiAxMTZCO0Q2NzA7MTExMiAxMTZCOworRDY3MTtENjcxOzExMTIgMTE2QiAxMUE4O0Q2NzE7MTExMiAxMTZCIDExQTg7CitENjcyO0Q2NzI7MTExMiAxMTZCIDExQTk7RDY3MjsxMTEyIDExNkIgMTFBOTsKK0Q2NzM7RDY3MzsxMTEyIDExNkIgMTFBQTtENjczOzExMTIgMTE2QiAxMUFBOworRDY3NDtENjc0OzExMTIgMTE2QiAxMUFCO0Q2NzQ7MTExMiAxMTZCIDExQUI7CitENjc1O0Q2NzU7MTExMiAxMTZCIDExQUM7RDY3NTsxMTEyIDExNkIgMTFBQzsKK0Q2NzY7RDY3NjsxMTEyIDExNkIgMTFBRDtENjc2OzExMTIgMTE2QiAxMUFEOworRDY3NztENjc3OzExMTIgMTE2QiAxMUFFO0Q2Nzc7MTExMiAxMTZCIDExQUU7CitENjc4O0Q2Nzg7MTExMiAxMTZCIDExQUY7RDY3ODsxMTEyIDExNkIgMTFBRjsKK0Q2Nzk7RDY3OTsxMTEyIDExNkIgMTFCMDtENjc5OzExMTIgMTE2QiAxMUIwOworRDY3QTtENjdBOzExMTIgMTE2QiAxMUIxO0Q2N0E7MTExMiAxMTZCIDExQjE7CitENjdCO0Q2N0I7MTExMiAxMTZCIDExQjI7RDY3QjsxMTEyIDExNkIgMTFCMjsKK0Q2N0M7RDY3QzsxMTEyIDExNkIgMTFCMztENjdDOzExMTIgMTE2QiAxMUIzOworRDY3RDtENjdEOzExMTIgMTE2QiAxMUI0O0Q2N0Q7MTExMiAxMTZCIDExQjQ7CitENjdFO0Q2N0U7MTExMiAxMTZCIDExQjU7RDY3RTsxMTEyIDExNkIgMTFCNTsKK0Q2N0Y7RDY3RjsxMTEyIDExNkIgMTFCNjtENjdGOzExMTIgMTE2QiAxMUI2OworRDY4MDtENjgwOzExMTIgMTE2QiAxMUI3O0Q2ODA7MTExMiAxMTZCIDExQjc7CitENjgxO0Q2ODE7MTExMiAxMTZCIDExQjg7RDY4MTsxMTEyIDExNkIgMTFCODsKK0Q2ODI7RDY4MjsxMTEyIDExNkIgMTFCOTtENjgyOzExMTIgMTE2QiAxMUI5OworRDY4MztENjgzOzExMTIgMTE2QiAxMUJBO0Q2ODM7MTExMiAxMTZCIDExQkE7CitENjg0O0Q2ODQ7MTExMiAxMTZCIDExQkI7RDY4NDsxMTEyIDExNkIgMTFCQjsKK0Q2ODU7RDY4NTsxMTEyIDExNkIgMTFCQztENjg1OzExMTIgMTE2QiAxMUJDOworRDY4NjtENjg2OzExMTIgMTE2QiAxMUJEO0Q2ODY7MTExMiAxMTZCIDExQkQ7CitENjg3O0Q2ODc7MTExMiAxMTZCIDExQkU7RDY4NzsxMTEyIDExNkIgMTFCRTsKK0Q2ODg7RDY4ODsxMTEyIDExNkIgMTFCRjtENjg4OzExMTIgMTE2QiAxMUJGOworRDY4OTtENjg5OzExMTIgMTE2QiAxMUMwO0Q2ODk7MTExMiAxMTZCIDExQzA7CitENjhBO0Q2OEE7MTExMiAxMTZCIDExQzE7RDY4QTsxMTEyIDExNkIgMTFDMTsKK0Q2OEI7RDY4QjsxMTEyIDExNkIgMTFDMjtENjhCOzExMTIgMTE2QiAxMUMyOworRDY4QztENjhDOzExMTIgMTE2QztENjhDOzExMTIgMTE2QzsKK0Q2OEQ7RDY4RDsxMTEyIDExNkMgMTFBODtENjhEOzExMTIgMTE2QyAxMUE4OworRDY4RTtENjhFOzExMTIgMTE2QyAxMUE5O0Q2OEU7MTExMiAxMTZDIDExQTk7CitENjhGO0Q2OEY7MTExMiAxMTZDIDExQUE7RDY4RjsxMTEyIDExNkMgMTFBQTsKK0Q2OTA7RDY5MDsxMTEyIDExNkMgMTFBQjtENjkwOzExMTIgMTE2QyAxMUFCOworRDY5MTtENjkxOzExMTIgMTE2QyAxMUFDO0Q2OTE7MTExMiAxMTZDIDExQUM7CitENjkyO0Q2OTI7MTExMiAxMTZDIDExQUQ7RDY5MjsxMTEyIDExNkMgMTFBRDsKK0Q2OTM7RDY5MzsxMTEyIDExNkMgMTFBRTtENjkzOzExMTIgMTE2QyAxMUFFOworRDY5NDtENjk0OzExMTIgMTE2QyAxMUFGO0Q2OTQ7MTExMiAxMTZDIDExQUY7CitENjk1O0Q2OTU7MTExMiAxMTZDIDExQjA7RDY5NTsxMTEyIDExNkMgMTFCMDsKK0Q2OTY7RDY5NjsxMTEyIDExNkMgMTFCMTtENjk2OzExMTIgMTE2QyAxMUIxOworRDY5NztENjk3OzExMTIgMTE2QyAxMUIyO0Q2OTc7MTExMiAxMTZDIDExQjI7CitENjk4O0Q2OTg7MTExMiAxMTZDIDExQjM7RDY5ODsxMTEyIDExNkMgMTFCMzsKK0Q2OTk7RDY5OTsxMTEyIDExNkMgMTFCNDtENjk5OzExMTIgMTE2QyAxMUI0OworRDY5QTtENjlBOzExMTIgMTE2QyAxMUI1O0Q2OUE7MTExMiAxMTZDIDExQjU7CitENjlCO0Q2OUI7MTExMiAxMTZDIDExQjY7RDY5QjsxMTEyIDExNkMgMTFCNjsKK0Q2OUM7RDY5QzsxMTEyIDExNkMgMTFCNztENjlDOzExMTIgMTE2QyAxMUI3OworRDY5RDtENjlEOzExMTIgMTE2QyAxMUI4O0Q2OUQ7MTExMiAxMTZDIDExQjg7CitENjlFO0Q2OUU7MTExMiAxMTZDIDExQjk7RDY5RTsxMTEyIDExNkMgMTFCOTsKK0Q2OUY7RDY5RjsxMTEyIDExNkMgMTFCQTtENjlGOzExMTIgMTE2QyAxMUJBOworRDZBMDtENkEwOzExMTIgMTE2QyAxMUJCO0Q2QTA7MTExMiAxMTZDIDExQkI7CitENkExO0Q2QTE7MTExMiAxMTZDIDExQkM7RDZBMTsxMTEyIDExNkMgMTFCQzsKK0Q2QTI7RDZBMjsxMTEyIDExNkMgMTFCRDtENkEyOzExMTIgMTE2QyAxMUJEOworRDZBMztENkEzOzExMTIgMTE2QyAxMUJFO0Q2QTM7MTExMiAxMTZDIDExQkU7CitENkE0O0Q2QTQ7MTExMiAxMTZDIDExQkY7RDZBNDsxMTEyIDExNkMgMTFCRjsKK0Q2QTU7RDZBNTsxMTEyIDExNkMgMTFDMDtENkE1OzExMTIgMTE2QyAxMUMwOworRDZBNjtENkE2OzExMTIgMTE2QyAxMUMxO0Q2QTY7MTExMiAxMTZDIDExQzE7CitENkE3O0Q2QTc7MTExMiAxMTZDIDExQzI7RDZBNzsxMTEyIDExNkMgMTFDMjsKK0Q2QTg7RDZBODsxMTEyIDExNkQ7RDZBODsxMTEyIDExNkQ7CitENkE5O0Q2QTk7MTExMiAxMTZEIDExQTg7RDZBOTsxMTEyIDExNkQgMTFBODsKK0Q2QUE7RDZBQTsxMTEyIDExNkQgMTFBOTtENkFBOzExMTIgMTE2RCAxMUE5OworRDZBQjtENkFCOzExMTIgMTE2RCAxMUFBO0Q2QUI7MTExMiAxMTZEIDExQUE7CitENkFDO0Q2QUM7MTExMiAxMTZEIDExQUI7RDZBQzsxMTEyIDExNkQgMTFBQjsKK0Q2QUQ7RDZBRDsxMTEyIDExNkQgMTFBQztENkFEOzExMTIgMTE2RCAxMUFDOworRDZBRTtENkFFOzExMTIgMTE2RCAxMUFEO0Q2QUU7MTExMiAxMTZEIDExQUQ7CitENkFGO0Q2QUY7MTExMiAxMTZEIDExQUU7RDZBRjsxMTEyIDExNkQgMTFBRTsKK0Q2QjA7RDZCMDsxMTEyIDExNkQgMTFBRjtENkIwOzExMTIgMTE2RCAxMUFGOworRDZCMTtENkIxOzExMTIgMTE2RCAxMUIwO0Q2QjE7MTExMiAxMTZEIDExQjA7CitENkIyO0Q2QjI7MTExMiAxMTZEIDExQjE7RDZCMjsxMTEyIDExNkQgMTFCMTsKK0Q2QjM7RDZCMzsxMTEyIDExNkQgMTFCMjtENkIzOzExMTIgMTE2RCAxMUIyOworRDZCNDtENkI0OzExMTIgMTE2RCAxMUIzO0Q2QjQ7MTExMiAxMTZEIDExQjM7CitENkI1O0Q2QjU7MTExMiAxMTZEIDExQjQ7RDZCNTsxMTEyIDExNkQgMTFCNDsKK0Q2QjY7RDZCNjsxMTEyIDExNkQgMTFCNTtENkI2OzExMTIgMTE2RCAxMUI1OworRDZCNztENkI3OzExMTIgMTE2RCAxMUI2O0Q2Qjc7MTExMiAxMTZEIDExQjY7CitENkI4O0Q2Qjg7MTExMiAxMTZEIDExQjc7RDZCODsxMTEyIDExNkQgMTFCNzsKK0Q2Qjk7RDZCOTsxMTEyIDExNkQgMTFCODtENkI5OzExMTIgMTE2RCAxMUI4OworRDZCQTtENkJBOzExMTIgMTE2RCAxMUI5O0Q2QkE7MTExMiAxMTZEIDExQjk7CitENkJCO0Q2QkI7MTExMiAxMTZEIDExQkE7RDZCQjsxMTEyIDExNkQgMTFCQTsKK0Q2QkM7RDZCQzsxMTEyIDExNkQgMTFCQjtENkJDOzExMTIgMTE2RCAxMUJCOworRDZCRDtENkJEOzExMTIgMTE2RCAxMUJDO0Q2QkQ7MTExMiAxMTZEIDExQkM7CitENkJFO0Q2QkU7MTExMiAxMTZEIDExQkQ7RDZCRTsxMTEyIDExNkQgMTFCRDsKK0Q2QkY7RDZCRjsxMTEyIDExNkQgMTFCRTtENkJGOzExMTIgMTE2RCAxMUJFOworRDZDMDtENkMwOzExMTIgMTE2RCAxMUJGO0Q2QzA7MTExMiAxMTZEIDExQkY7CitENkMxO0Q2QzE7MTExMiAxMTZEIDExQzA7RDZDMTsxMTEyIDExNkQgMTFDMDsKK0Q2QzI7RDZDMjsxMTEyIDExNkQgMTFDMTtENkMyOzExMTIgMTE2RCAxMUMxOworRDZDMztENkMzOzExMTIgMTE2RCAxMUMyO0Q2QzM7MTExMiAxMTZEIDExQzI7CitENkM0O0Q2QzQ7MTExMiAxMTZFO0Q2QzQ7MTExMiAxMTZFOworRDZDNTtENkM1OzExMTIgMTE2RSAxMUE4O0Q2QzU7MTExMiAxMTZFIDExQTg7CitENkM2O0Q2QzY7MTExMiAxMTZFIDExQTk7RDZDNjsxMTEyIDExNkUgMTFBOTsKK0Q2Qzc7RDZDNzsxMTEyIDExNkUgMTFBQTtENkM3OzExMTIgMTE2RSAxMUFBOworRDZDODtENkM4OzExMTIgMTE2RSAxMUFCO0Q2Qzg7MTExMiAxMTZFIDExQUI7CitENkM5O0Q2Qzk7MTExMiAxMTZFIDExQUM7RDZDOTsxMTEyIDExNkUgMTFBQzsKK0Q2Q0E7RDZDQTsxMTEyIDExNkUgMTFBRDtENkNBOzExMTIgMTE2RSAxMUFEOworRDZDQjtENkNCOzExMTIgMTE2RSAxMUFFO0Q2Q0I7MTExMiAxMTZFIDExQUU7CitENkNDO0Q2Q0M7MTExMiAxMTZFIDExQUY7RDZDQzsxMTEyIDExNkUgMTFBRjsKK0Q2Q0Q7RDZDRDsxMTEyIDExNkUgMTFCMDtENkNEOzExMTIgMTE2RSAxMUIwOworRDZDRTtENkNFOzExMTIgMTE2RSAxMUIxO0Q2Q0U7MTExMiAxMTZFIDExQjE7CitENkNGO0Q2Q0Y7MTExMiAxMTZFIDExQjI7RDZDRjsxMTEyIDExNkUgMTFCMjsKK0Q2RDA7RDZEMDsxMTEyIDExNkUgMTFCMztENkQwOzExMTIgMTE2RSAxMUIzOworRDZEMTtENkQxOzExMTIgMTE2RSAxMUI0O0Q2RDE7MTExMiAxMTZFIDExQjQ7CitENkQyO0Q2RDI7MTExMiAxMTZFIDExQjU7RDZEMjsxMTEyIDExNkUgMTFCNTsKK0Q2RDM7RDZEMzsxMTEyIDExNkUgMTFCNjtENkQzOzExMTIgMTE2RSAxMUI2OworRDZENDtENkQ0OzExMTIgMTE2RSAxMUI3O0Q2RDQ7MTExMiAxMTZFIDExQjc7CitENkQ1O0Q2RDU7MTExMiAxMTZFIDExQjg7RDZENTsxMTEyIDExNkUgMTFCODsKK0Q2RDY7RDZENjsxMTEyIDExNkUgMTFCOTtENkQ2OzExMTIgMTE2RSAxMUI5OworRDZENztENkQ3OzExMTIgMTE2RSAxMUJBO0Q2RDc7MTExMiAxMTZFIDExQkE7CitENkQ4O0Q2RDg7MTExMiAxMTZFIDExQkI7RDZEODsxMTEyIDExNkUgMTFCQjsKK0Q2RDk7RDZEOTsxMTEyIDExNkUgMTFCQztENkQ5OzExMTIgMTE2RSAxMUJDOworRDZEQTtENkRBOzExMTIgMTE2RSAxMUJEO0Q2REE7MTExMiAxMTZFIDExQkQ7CitENkRCO0Q2REI7MTExMiAxMTZFIDExQkU7RDZEQjsxMTEyIDExNkUgMTFCRTsKK0Q2REM7RDZEQzsxMTEyIDExNkUgMTFCRjtENkRDOzExMTIgMTE2RSAxMUJGOworRDZERDtENkREOzExMTIgMTE2RSAxMUMwO0Q2REQ7MTExMiAxMTZFIDExQzA7CitENkRFO0Q2REU7MTExMiAxMTZFIDExQzE7RDZERTsxMTEyIDExNkUgMTFDMTsKK0Q2REY7RDZERjsxMTEyIDExNkUgMTFDMjtENkRGOzExMTIgMTE2RSAxMUMyOworRDZFMDtENkUwOzExMTIgMTE2RjtENkUwOzExMTIgMTE2RjsKK0Q2RTE7RDZFMTsxMTEyIDExNkYgMTFBODtENkUxOzExMTIgMTE2RiAxMUE4OworRDZFMjtENkUyOzExMTIgMTE2RiAxMUE5O0Q2RTI7MTExMiAxMTZGIDExQTk7CitENkUzO0Q2RTM7MTExMiAxMTZGIDExQUE7RDZFMzsxMTEyIDExNkYgMTFBQTsKK0Q2RTQ7RDZFNDsxMTEyIDExNkYgMTFBQjtENkU0OzExMTIgMTE2RiAxMUFCOworRDZFNTtENkU1OzExMTIgMTE2RiAxMUFDO0Q2RTU7MTExMiAxMTZGIDExQUM7CitENkU2O0Q2RTY7MTExMiAxMTZGIDExQUQ7RDZFNjsxMTEyIDExNkYgMTFBRDsKK0Q2RTc7RDZFNzsxMTEyIDExNkYgMTFBRTtENkU3OzExMTIgMTE2RiAxMUFFOworRDZFODtENkU4OzExMTIgMTE2RiAxMUFGO0Q2RTg7MTExMiAxMTZGIDExQUY7CitENkU5O0Q2RTk7MTExMiAxMTZGIDExQjA7RDZFOTsxMTEyIDExNkYgMTFCMDsKK0Q2RUE7RDZFQTsxMTEyIDExNkYgMTFCMTtENkVBOzExMTIgMTE2RiAxMUIxOworRDZFQjtENkVCOzExMTIgMTE2RiAxMUIyO0Q2RUI7MTExMiAxMTZGIDExQjI7CitENkVDO0Q2RUM7MTExMiAxMTZGIDExQjM7RDZFQzsxMTEyIDExNkYgMTFCMzsKK0Q2RUQ7RDZFRDsxMTEyIDExNkYgMTFCNDtENkVEOzExMTIgMTE2RiAxMUI0OworRDZFRTtENkVFOzExMTIgMTE2RiAxMUI1O0Q2RUU7MTExMiAxMTZGIDExQjU7CitENkVGO0Q2RUY7MTExMiAxMTZGIDExQjY7RDZFRjsxMTEyIDExNkYgMTFCNjsKK0Q2RjA7RDZGMDsxMTEyIDExNkYgMTFCNztENkYwOzExMTIgMTE2RiAxMUI3OworRDZGMTtENkYxOzExMTIgMTE2RiAxMUI4O0Q2RjE7MTExMiAxMTZGIDExQjg7CitENkYyO0Q2RjI7MTExMiAxMTZGIDExQjk7RDZGMjsxMTEyIDExNkYgMTFCOTsKK0Q2RjM7RDZGMzsxMTEyIDExNkYgMTFCQTtENkYzOzExMTIgMTE2RiAxMUJBOworRDZGNDtENkY0OzExMTIgMTE2RiAxMUJCO0Q2RjQ7MTExMiAxMTZGIDExQkI7CitENkY1O0Q2RjU7MTExMiAxMTZGIDExQkM7RDZGNTsxMTEyIDExNkYgMTFCQzsKK0Q2RjY7RDZGNjsxMTEyIDExNkYgMTFCRDtENkY2OzExMTIgMTE2RiAxMUJEOworRDZGNztENkY3OzExMTIgMTE2RiAxMUJFO0Q2Rjc7MTExMiAxMTZGIDExQkU7CitENkY4O0Q2Rjg7MTExMiAxMTZGIDExQkY7RDZGODsxMTEyIDExNkYgMTFCRjsKK0Q2Rjk7RDZGOTsxMTEyIDExNkYgMTFDMDtENkY5OzExMTIgMTE2RiAxMUMwOworRDZGQTtENkZBOzExMTIgMTE2RiAxMUMxO0Q2RkE7MTExMiAxMTZGIDExQzE7CitENkZCO0Q2RkI7MTExMiAxMTZGIDExQzI7RDZGQjsxMTEyIDExNkYgMTFDMjsKK0Q2RkM7RDZGQzsxMTEyIDExNzA7RDZGQzsxMTEyIDExNzA7CitENkZEO0Q2RkQ7MTExMiAxMTcwIDExQTg7RDZGRDsxMTEyIDExNzAgMTFBODsKK0Q2RkU7RDZGRTsxMTEyIDExNzAgMTFBOTtENkZFOzExMTIgMTE3MCAxMUE5OworRDZGRjtENkZGOzExMTIgMTE3MCAxMUFBO0Q2RkY7MTExMiAxMTcwIDExQUE7CitENzAwO0Q3MDA7MTExMiAxMTcwIDExQUI7RDcwMDsxMTEyIDExNzAgMTFBQjsKK0Q3MDE7RDcwMTsxMTEyIDExNzAgMTFBQztENzAxOzExMTIgMTE3MCAxMUFDOworRDcwMjtENzAyOzExMTIgMTE3MCAxMUFEO0Q3MDI7MTExMiAxMTcwIDExQUQ7CitENzAzO0Q3MDM7MTExMiAxMTcwIDExQUU7RDcwMzsxMTEyIDExNzAgMTFBRTsKK0Q3MDQ7RDcwNDsxMTEyIDExNzAgMTFBRjtENzA0OzExMTIgMTE3MCAxMUFGOworRDcwNTtENzA1OzExMTIgMTE3MCAxMUIwO0Q3MDU7MTExMiAxMTcwIDExQjA7CitENzA2O0Q3MDY7MTExMiAxMTcwIDExQjE7RDcwNjsxMTEyIDExNzAgMTFCMTsKK0Q3MDc7RDcwNzsxMTEyIDExNzAgMTFCMjtENzA3OzExMTIgMTE3MCAxMUIyOworRDcwODtENzA4OzExMTIgMTE3MCAxMUIzO0Q3MDg7MTExMiAxMTcwIDExQjM7CitENzA5O0Q3MDk7MTExMiAxMTcwIDExQjQ7RDcwOTsxMTEyIDExNzAgMTFCNDsKK0Q3MEE7RDcwQTsxMTEyIDExNzAgMTFCNTtENzBBOzExMTIgMTE3MCAxMUI1OworRDcwQjtENzBCOzExMTIgMTE3MCAxMUI2O0Q3MEI7MTExMiAxMTcwIDExQjY7CitENzBDO0Q3MEM7MTExMiAxMTcwIDExQjc7RDcwQzsxMTEyIDExNzAgMTFCNzsKK0Q3MEQ7RDcwRDsxMTEyIDExNzAgMTFCODtENzBEOzExMTIgMTE3MCAxMUI4OworRDcwRTtENzBFOzExMTIgMTE3MCAxMUI5O0Q3MEU7MTExMiAxMTcwIDExQjk7CitENzBGO0Q3MEY7MTExMiAxMTcwIDExQkE7RDcwRjsxMTEyIDExNzAgMTFCQTsKK0Q3MTA7RDcxMDsxMTEyIDExNzAgMTFCQjtENzEwOzExMTIgMTE3MCAxMUJCOworRDcxMTtENzExOzExMTIgMTE3MCAxMUJDO0Q3MTE7MTExMiAxMTcwIDExQkM7CitENzEyO0Q3MTI7MTExMiAxMTcwIDExQkQ7RDcxMjsxMTEyIDExNzAgMTFCRDsKK0Q3MTM7RDcxMzsxMTEyIDExNzAgMTFCRTtENzEzOzExMTIgMTE3MCAxMUJFOworRDcxNDtENzE0OzExMTIgMTE3MCAxMUJGO0Q3MTQ7MTExMiAxMTcwIDExQkY7CitENzE1O0Q3MTU7MTExMiAxMTcwIDExQzA7RDcxNTsxMTEyIDExNzAgMTFDMDsKK0Q3MTY7RDcxNjsxMTEyIDExNzAgMTFDMTtENzE2OzExMTIgMTE3MCAxMUMxOworRDcxNztENzE3OzExMTIgMTE3MCAxMUMyO0Q3MTc7MTExMiAxMTcwIDExQzI7CitENzE4O0Q3MTg7MTExMiAxMTcxO0Q3MTg7MTExMiAxMTcxOworRDcxOTtENzE5OzExMTIgMTE3MSAxMUE4O0Q3MTk7MTExMiAxMTcxIDExQTg7CitENzFBO0Q3MUE7MTExMiAxMTcxIDExQTk7RDcxQTsxMTEyIDExNzEgMTFBOTsKK0Q3MUI7RDcxQjsxMTEyIDExNzEgMTFBQTtENzFCOzExMTIgMTE3MSAxMUFBOworRDcxQztENzFDOzExMTIgMTE3MSAxMUFCO0Q3MUM7MTExMiAxMTcxIDExQUI7CitENzFEO0Q3MUQ7MTExMiAxMTcxIDExQUM7RDcxRDsxMTEyIDExNzEgMTFBQzsKK0Q3MUU7RDcxRTsxMTEyIDExNzEgMTFBRDtENzFFOzExMTIgMTE3MSAxMUFEOworRDcxRjtENzFGOzExMTIgMTE3MSAxMUFFO0Q3MUY7MTExMiAxMTcxIDExQUU7CitENzIwO0Q3MjA7MTExMiAxMTcxIDExQUY7RDcyMDsxMTEyIDExNzEgMTFBRjsKK0Q3MjE7RDcyMTsxMTEyIDExNzEgMTFCMDtENzIxOzExMTIgMTE3MSAxMUIwOworRDcyMjtENzIyOzExMTIgMTE3MSAxMUIxO0Q3MjI7MTExMiAxMTcxIDExQjE7CitENzIzO0Q3MjM7MTExMiAxMTcxIDExQjI7RDcyMzsxMTEyIDExNzEgMTFCMjsKK0Q3MjQ7RDcyNDsxMTEyIDExNzEgMTFCMztENzI0OzExMTIgMTE3MSAxMUIzOworRDcyNTtENzI1OzExMTIgMTE3MSAxMUI0O0Q3MjU7MTExMiAxMTcxIDExQjQ7CitENzI2O0Q3MjY7MTExMiAxMTcxIDExQjU7RDcyNjsxMTEyIDExNzEgMTFCNTsKK0Q3Mjc7RDcyNzsxMTEyIDExNzEgMTFCNjtENzI3OzExMTIgMTE3MSAxMUI2OworRDcyODtENzI4OzExMTIgMTE3MSAxMUI3O0Q3Mjg7MTExMiAxMTcxIDExQjc7CitENzI5O0Q3Mjk7MTExMiAxMTcxIDExQjg7RDcyOTsxMTEyIDExNzEgMTFCODsKK0Q3MkE7RDcyQTsxMTEyIDExNzEgMTFCOTtENzJBOzExMTIgMTE3MSAxMUI5OworRDcyQjtENzJCOzExMTIgMTE3MSAxMUJBO0Q3MkI7MTExMiAxMTcxIDExQkE7CitENzJDO0Q3MkM7MTExMiAxMTcxIDExQkI7RDcyQzsxMTEyIDExNzEgMTFCQjsKK0Q3MkQ7RDcyRDsxMTEyIDExNzEgMTFCQztENzJEOzExMTIgMTE3MSAxMUJDOworRDcyRTtENzJFOzExMTIgMTE3MSAxMUJEO0Q3MkU7MTExMiAxMTcxIDExQkQ7CitENzJGO0Q3MkY7MTExMiAxMTcxIDExQkU7RDcyRjsxMTEyIDExNzEgMTFCRTsKK0Q3MzA7RDczMDsxMTEyIDExNzEgMTFCRjtENzMwOzExMTIgMTE3MSAxMUJGOworRDczMTtENzMxOzExMTIgMTE3MSAxMUMwO0Q3MzE7MTExMiAxMTcxIDExQzA7CitENzMyO0Q3MzI7MTExMiAxMTcxIDExQzE7RDczMjsxMTEyIDExNzEgMTFDMTsKK0Q3MzM7RDczMzsxMTEyIDExNzEgMTFDMjtENzMzOzExMTIgMTE3MSAxMUMyOworRDczNDtENzM0OzExMTIgMTE3MjtENzM0OzExMTIgMTE3MjsKK0Q3MzU7RDczNTsxMTEyIDExNzIgMTFBODtENzM1OzExMTIgMTE3MiAxMUE4OworRDczNjtENzM2OzExMTIgMTE3MiAxMUE5O0Q3MzY7MTExMiAxMTcyIDExQTk7CitENzM3O0Q3Mzc7MTExMiAxMTcyIDExQUE7RDczNzsxMTEyIDExNzIgMTFBQTsKK0Q3Mzg7RDczODsxMTEyIDExNzIgMTFBQjtENzM4OzExMTIgMTE3MiAxMUFCOworRDczOTtENzM5OzExMTIgMTE3MiAxMUFDO0Q3Mzk7MTExMiAxMTcyIDExQUM7CitENzNBO0Q3M0E7MTExMiAxMTcyIDExQUQ7RDczQTsxMTEyIDExNzIgMTFBRDsKK0Q3M0I7RDczQjsxMTEyIDExNzIgMTFBRTtENzNCOzExMTIgMTE3MiAxMUFFOworRDczQztENzNDOzExMTIgMTE3MiAxMUFGO0Q3M0M7MTExMiAxMTcyIDExQUY7CitENzNEO0Q3M0Q7MTExMiAxMTcyIDExQjA7RDczRDsxMTEyIDExNzIgMTFCMDsKK0Q3M0U7RDczRTsxMTEyIDExNzIgMTFCMTtENzNFOzExMTIgMTE3MiAxMUIxOworRDczRjtENzNGOzExMTIgMTE3MiAxMUIyO0Q3M0Y7MTExMiAxMTcyIDExQjI7CitENzQwO0Q3NDA7MTExMiAxMTcyIDExQjM7RDc0MDsxMTEyIDExNzIgMTFCMzsKK0Q3NDE7RDc0MTsxMTEyIDExNzIgMTFCNDtENzQxOzExMTIgMTE3MiAxMUI0OworRDc0MjtENzQyOzExMTIgMTE3MiAxMUI1O0Q3NDI7MTExMiAxMTcyIDExQjU7CitENzQzO0Q3NDM7MTExMiAxMTcyIDExQjY7RDc0MzsxMTEyIDExNzIgMTFCNjsKK0Q3NDQ7RDc0NDsxMTEyIDExNzIgMTFCNztENzQ0OzExMTIgMTE3MiAxMUI3OworRDc0NTtENzQ1OzExMTIgMTE3MiAxMUI4O0Q3NDU7MTExMiAxMTcyIDExQjg7CitENzQ2O0Q3NDY7MTExMiAxMTcyIDExQjk7RDc0NjsxMTEyIDExNzIgMTFCOTsKK0Q3NDc7RDc0NzsxMTEyIDExNzIgMTFCQTtENzQ3OzExMTIgMTE3MiAxMUJBOworRDc0ODtENzQ4OzExMTIgMTE3MiAxMUJCO0Q3NDg7MTExMiAxMTcyIDExQkI7CitENzQ5O0Q3NDk7MTExMiAxMTcyIDExQkM7RDc0OTsxMTEyIDExNzIgMTFCQzsKK0Q3NEE7RDc0QTsxMTEyIDExNzIgMTFCRDtENzRBOzExMTIgMTE3MiAxMUJEOworRDc0QjtENzRCOzExMTIgMTE3MiAxMUJFO0Q3NEI7MTExMiAxMTcyIDExQkU7CitENzRDO0Q3NEM7MTExMiAxMTcyIDExQkY7RDc0QzsxMTEyIDExNzIgMTFCRjsKK0Q3NEQ7RDc0RDsxMTEyIDExNzIgMTFDMDtENzREOzExMTIgMTE3MiAxMUMwOworRDc0RTtENzRFOzExMTIgMTE3MiAxMUMxO0Q3NEU7MTExMiAxMTcyIDExQzE7CitENzRGO0Q3NEY7MTExMiAxMTcyIDExQzI7RDc0RjsxMTEyIDExNzIgMTFDMjsKK0Q3NTA7RDc1MDsxMTEyIDExNzM7RDc1MDsxMTEyIDExNzM7CitENzUxO0Q3NTE7MTExMiAxMTczIDExQTg7RDc1MTsxMTEyIDExNzMgMTFBODsKK0Q3NTI7RDc1MjsxMTEyIDExNzMgMTFBOTtENzUyOzExMTIgMTE3MyAxMUE5OworRDc1MztENzUzOzExMTIgMTE3MyAxMUFBO0Q3NTM7MTExMiAxMTczIDExQUE7CitENzU0O0Q3NTQ7MTExMiAxMTczIDExQUI7RDc1NDsxMTEyIDExNzMgMTFBQjsKK0Q3NTU7RDc1NTsxMTEyIDExNzMgMTFBQztENzU1OzExMTIgMTE3MyAxMUFDOworRDc1NjtENzU2OzExMTIgMTE3MyAxMUFEO0Q3NTY7MTExMiAxMTczIDExQUQ7CitENzU3O0Q3NTc7MTExMiAxMTczIDExQUU7RDc1NzsxMTEyIDExNzMgMTFBRTsKK0Q3NTg7RDc1ODsxMTEyIDExNzMgMTFBRjtENzU4OzExMTIgMTE3MyAxMUFGOworRDc1OTtENzU5OzExMTIgMTE3MyAxMUIwO0Q3NTk7MTExMiAxMTczIDExQjA7CitENzVBO0Q3NUE7MTExMiAxMTczIDExQjE7RDc1QTsxMTEyIDExNzMgMTFCMTsKK0Q3NUI7RDc1QjsxMTEyIDExNzMgMTFCMjtENzVCOzExMTIgMTE3MyAxMUIyOworRDc1QztENzVDOzExMTIgMTE3MyAxMUIzO0Q3NUM7MTExMiAxMTczIDExQjM7CitENzVEO0Q3NUQ7MTExMiAxMTczIDExQjQ7RDc1RDsxMTEyIDExNzMgMTFCNDsKK0Q3NUU7RDc1RTsxMTEyIDExNzMgMTFCNTtENzVFOzExMTIgMTE3MyAxMUI1OworRDc1RjtENzVGOzExMTIgMTE3MyAxMUI2O0Q3NUY7MTExMiAxMTczIDExQjY7CitENzYwO0Q3NjA7MTExMiAxMTczIDExQjc7RDc2MDsxMTEyIDExNzMgMTFCNzsKK0Q3NjE7RDc2MTsxMTEyIDExNzMgMTFCODtENzYxOzExMTIgMTE3MyAxMUI4OworRDc2MjtENzYyOzExMTIgMTE3MyAxMUI5O0Q3NjI7MTExMiAxMTczIDExQjk7CitENzYzO0Q3NjM7MTExMiAxMTczIDExQkE7RDc2MzsxMTEyIDExNzMgMTFCQTsKK0Q3NjQ7RDc2NDsxMTEyIDExNzMgMTFCQjtENzY0OzExMTIgMTE3MyAxMUJCOworRDc2NTtENzY1OzExMTIgMTE3MyAxMUJDO0Q3NjU7MTExMiAxMTczIDExQkM7CitENzY2O0Q3NjY7MTExMiAxMTczIDExQkQ7RDc2NjsxMTEyIDExNzMgMTFCRDsKK0Q3Njc7RDc2NzsxMTEyIDExNzMgMTFCRTtENzY3OzExMTIgMTE3MyAxMUJFOworRDc2ODtENzY4OzExMTIgMTE3MyAxMUJGO0Q3Njg7MTExMiAxMTczIDExQkY7CitENzY5O0Q3Njk7MTExMiAxMTczIDExQzA7RDc2OTsxMTEyIDExNzMgMTFDMDsKK0Q3NkE7RDc2QTsxMTEyIDExNzMgMTFDMTtENzZBOzExMTIgMTE3MyAxMUMxOworRDc2QjtENzZCOzExMTIgMTE3MyAxMUMyO0Q3NkI7MTExMiAxMTczIDExQzI7CitENzZDO0Q3NkM7MTExMiAxMTc0O0Q3NkM7MTExMiAxMTc0OworRDc2RDtENzZEOzExMTIgMTE3NCAxMUE4O0Q3NkQ7MTExMiAxMTc0IDExQTg7CitENzZFO0Q3NkU7MTExMiAxMTc0IDExQTk7RDc2RTsxMTEyIDExNzQgMTFBOTsKK0Q3NkY7RDc2RjsxMTEyIDExNzQgMTFBQTtENzZGOzExMTIgMTE3NCAxMUFBOworRDc3MDtENzcwOzExMTIgMTE3NCAxMUFCO0Q3NzA7MTExMiAxMTc0IDExQUI7CitENzcxO0Q3NzE7MTExMiAxMTc0IDExQUM7RDc3MTsxMTEyIDExNzQgMTFBQzsKK0Q3NzI7RDc3MjsxMTEyIDExNzQgMTFBRDtENzcyOzExMTIgMTE3NCAxMUFEOworRDc3MztENzczOzExMTIgMTE3NCAxMUFFO0Q3NzM7MTExMiAxMTc0IDExQUU7CitENzc0O0Q3NzQ7MTExMiAxMTc0IDExQUY7RDc3NDsxMTEyIDExNzQgMTFBRjsKK0Q3NzU7RDc3NTsxMTEyIDExNzQgMTFCMDtENzc1OzExMTIgMTE3NCAxMUIwOworRDc3NjtENzc2OzExMTIgMTE3NCAxMUIxO0Q3NzY7MTExMiAxMTc0IDExQjE7CitENzc3O0Q3Nzc7MTExMiAxMTc0IDExQjI7RDc3NzsxMTEyIDExNzQgMTFCMjsKK0Q3Nzg7RDc3ODsxMTEyIDExNzQgMTFCMztENzc4OzExMTIgMTE3NCAxMUIzOworRDc3OTtENzc5OzExMTIgMTE3NCAxMUI0O0Q3Nzk7MTExMiAxMTc0IDExQjQ7CitENzdBO0Q3N0E7MTExMiAxMTc0IDExQjU7RDc3QTsxMTEyIDExNzQgMTFCNTsKK0Q3N0I7RDc3QjsxMTEyIDExNzQgMTFCNjtENzdCOzExMTIgMTE3NCAxMUI2OworRDc3QztENzdDOzExMTIgMTE3NCAxMUI3O0Q3N0M7MTExMiAxMTc0IDExQjc7CitENzdEO0Q3N0Q7MTExMiAxMTc0IDExQjg7RDc3RDsxMTEyIDExNzQgMTFCODsKK0Q3N0U7RDc3RTsxMTEyIDExNzQgMTFCOTtENzdFOzExMTIgMTE3NCAxMUI5OworRDc3RjtENzdGOzExMTIgMTE3NCAxMUJBO0Q3N0Y7MTExMiAxMTc0IDExQkE7CitENzgwO0Q3ODA7MTExMiAxMTc0IDExQkI7RDc4MDsxMTEyIDExNzQgMTFCQjsKK0Q3ODE7RDc4MTsxMTEyIDExNzQgMTFCQztENzgxOzExMTIgMTE3NCAxMUJDOworRDc4MjtENzgyOzExMTIgMTE3NCAxMUJEO0Q3ODI7MTExMiAxMTc0IDExQkQ7CitENzgzO0Q3ODM7MTExMiAxMTc0IDExQkU7RDc4MzsxMTEyIDExNzQgMTFCRTsKK0Q3ODQ7RDc4NDsxMTEyIDExNzQgMTFCRjtENzg0OzExMTIgMTE3NCAxMUJGOworRDc4NTtENzg1OzExMTIgMTE3NCAxMUMwO0Q3ODU7MTExMiAxMTc0IDExQzA7CitENzg2O0Q3ODY7MTExMiAxMTc0IDExQzE7RDc4NjsxMTEyIDExNzQgMTFDMTsKK0Q3ODc7RDc4NzsxMTEyIDExNzQgMTFDMjtENzg3OzExMTIgMTE3NCAxMUMyOworRDc4ODtENzg4OzExMTIgMTE3NTtENzg4OzExMTIgMTE3NTsKK0Q3ODk7RDc4OTsxMTEyIDExNzUgMTFBODtENzg5OzExMTIgMTE3NSAxMUE4OworRDc4QTtENzhBOzExMTIgMTE3NSAxMUE5O0Q3OEE7MTExMiAxMTc1IDExQTk7CitENzhCO0Q3OEI7MTExMiAxMTc1IDExQUE7RDc4QjsxMTEyIDExNzUgMTFBQTsKK0Q3OEM7RDc4QzsxMTEyIDExNzUgMTFBQjtENzhDOzExMTIgMTE3NSAxMUFCOworRDc4RDtENzhEOzExMTIgMTE3NSAxMUFDO0Q3OEQ7MTExMiAxMTc1IDExQUM7CitENzhFO0Q3OEU7MTExMiAxMTc1IDExQUQ7RDc4RTsxMTEyIDExNzUgMTFBRDsKK0Q3OEY7RDc4RjsxMTEyIDExNzUgMTFBRTtENzhGOzExMTIgMTE3NSAxMUFFOworRDc5MDtENzkwOzExMTIgMTE3NSAxMUFGO0Q3OTA7MTExMiAxMTc1IDExQUY7CitENzkxO0Q3OTE7MTExMiAxMTc1IDExQjA7RDc5MTsxMTEyIDExNzUgMTFCMDsKK0Q3OTI7RDc5MjsxMTEyIDExNzUgMTFCMTtENzkyOzExMTIgMTE3NSAxMUIxOworRDc5MztENzkzOzExMTIgMTE3NSAxMUIyO0Q3OTM7MTExMiAxMTc1IDExQjI7CitENzk0O0Q3OTQ7MTExMiAxMTc1IDExQjM7RDc5NDsxMTEyIDExNzUgMTFCMzsKK0Q3OTU7RDc5NTsxMTEyIDExNzUgMTFCNDtENzk1OzExMTIgMTE3NSAxMUI0OworRDc5NjtENzk2OzExMTIgMTE3NSAxMUI1O0Q3OTY7MTExMiAxMTc1IDExQjU7CitENzk3O0Q3OTc7MTExMiAxMTc1IDExQjY7RDc5NzsxMTEyIDExNzUgMTFCNjsKK0Q3OTg7RDc5ODsxMTEyIDExNzUgMTFCNztENzk4OzExMTIgMTE3NSAxMUI3OworRDc5OTtENzk5OzExMTIgMTE3NSAxMUI4O0Q3OTk7MTExMiAxMTc1IDExQjg7CitENzlBO0Q3OUE7MTExMiAxMTc1IDExQjk7RDc5QTsxMTEyIDExNzUgMTFCOTsKK0Q3OUI7RDc5QjsxMTEyIDExNzUgMTFCQTtENzlCOzExMTIgMTE3NSAxMUJBOworRDc5QztENzlDOzExMTIgMTE3NSAxMUJCO0Q3OUM7MTExMiAxMTc1IDExQkI7CitENzlEO0Q3OUQ7MTExMiAxMTc1IDExQkM7RDc5RDsxMTEyIDExNzUgMTFCQzsKK0Q3OUU7RDc5RTsxMTEyIDExNzUgMTFCRDtENzlFOzExMTIgMTE3NSAxMUJEOworRDc5RjtENzlGOzExMTIgMTE3NSAxMUJFO0Q3OUY7MTExMiAxMTc1IDExQkU7CitEN0EwO0Q3QTA7MTExMiAxMTc1IDExQkY7RDdBMDsxMTEyIDExNzUgMTFCRjsKK0Q3QTE7RDdBMTsxMTEyIDExNzUgMTFDMDtEN0ExOzExMTIgMTE3NSAxMUMwOworRDdBMjtEN0EyOzExMTIgMTE3NSAxMUMxO0Q3QTI7MTExMiAxMTc1IDExQzE7CitEN0EzO0Q3QTM7MTExMiAxMTc1IDExQzI7RDdBMzsxMTEyIDExNzUgMTFDMjsKK0Y5MDA7OEM0ODs4QzQ4OzhDNDg7OEM0ODsKK0Y5MDE7NjZGNDs2NkY0OzY2RjQ7NjZGNDsKK0Y5MDI7OEVDQTs4RUNBOzhFQ0E7OEVDQTsKK0Y5MDM7OENDODs4Q0M4OzhDQzg7OENDODsKK0Y5MDQ7NkVEMTs2RUQxOzZFRDE7NkVEMTsKK0Y5MDU7NEUzMjs0RTMyOzRFMzI7NEUzMjsKK0Y5MDY7NTNFNTs1M0U1OzUzRTU7NTNFNTsKK0Y5MDc7OUY5Qzs5RjlDOzlGOUM7OUY5QzsKK0Y5MDg7OUY5Qzs5RjlDOzlGOUM7OUY5QzsKK0Y5MDk7NTk1MTs1OTUxOzU5NTE7NTk1MTsKK0Y5MEE7OTFEMTs5MUQxOzkxRDE7OTFEMTsKK0Y5MEI7NTU4Nzs1NTg3OzU1ODc7NTU4NzsKK0Y5MEM7NTk0ODs1OTQ4OzU5NDg7NTk0ODsKK0Y5MEQ7NjFGNjs2MUY2OzYxRjY7NjFGNjsKK0Y5MEU7NzY2OTs3NjY5Ozc2Njk7NzY2OTsKK0Y5MEY7N0Y4NTs3Rjg1OzdGODU7N0Y4NTsKK0Y5MTA7ODYzRjs4NjNGOzg2M0Y7ODYzRjsKK0Y5MTE7ODdCQTs4N0JBOzg3QkE7ODdCQTsKK0Y5MTI7ODhGODs4OEY4Ozg4Rjg7ODhGODsKK0Y5MTM7OTA4Rjs5MDhGOzkwOEY7OTA4RjsKK0Y5MTQ7NkEwMjs2QTAyOzZBMDI7NkEwMjsKK0Y5MTU7NkQxQjs2RDFCOzZEMUI7NkQxQjsKK0Y5MTY7NzBEOTs3MEQ5OzcwRDk7NzBEOTsKK0Y5MTc7NzNERTs3M0RFOzczREU7NzNERTsKK0Y5MTg7ODQzRDs4NDNEOzg0M0Q7ODQzRDsKK0Y5MTk7OTE2QTs5MTZBOzkxNkE7OTE2QTsKK0Y5MUE7OTlGMTs5OUYxOzk5RjE7OTlGMTsKK0Y5MUI7NEU4Mjs0RTgyOzRFODI7NEU4MjsKK0Y5MUM7NTM3NTs1Mzc1OzUzNzU7NTM3NTsKK0Y5MUQ7NkIwNDs2QjA0OzZCMDQ7NkIwNDsKK0Y5MUU7NzIxQjs3MjFCOzcyMUI7NzIxQjsKK0Y5MUY7ODYyRDs4NjJEOzg2MkQ7ODYyRDsKK0Y5MjA7OUUxRTs5RTFFOzlFMUU7OUUxRTsKK0Y5MjE7NUQ1MDs1RDUwOzVENTA7NUQ1MDsKK0Y5MjI7NkZFQjs2RkVCOzZGRUI7NkZFQjsKK0Y5MjM7ODVDRDs4NUNEOzg1Q0Q7ODVDRDsKK0Y5MjQ7ODk2NDs4OTY0Ozg5NjQ7ODk2NDsKK0Y5MjU7NjJDOTs2MkM5OzYyQzk7NjJDOTsKK0Y5MjY7ODFEODs4MUQ4OzgxRDg7ODFEODsKK0Y5Mjc7ODgxRjs4ODFGOzg4MUY7ODgxRjsKK0Y5Mjg7NUVDQTs1RUNBOzVFQ0E7NUVDQTsKK0Y5Mjk7NjcxNzs2NzE3OzY3MTc7NjcxNzsKK0Y5MkE7NkQ2QTs2RDZBOzZENkE7NkQ2QTsKK0Y5MkI7NzJGQzs3MkZDOzcyRkM7NzJGQzsKK0Y5MkM7OTBDRTs5MENFOzkwQ0U7OTBDRTsKK0Y5MkQ7NEY4Njs0Rjg2OzRGODY7NEY4NjsKK0Y5MkU7NTFCNzs1MUI3OzUxQjc7NTFCNzsKK0Y5MkY7NTJERTs1MkRFOzUyREU7NTJERTsKK0Y5MzA7NjRDNDs2NEM0OzY0QzQ7NjRDNDsKK0Y5MzE7NkFEMzs2QUQzOzZBRDM7NkFEMzsKK0Y5MzI7NzIxMDs3MjEwOzcyMTA7NzIxMDsKK0Y5MzM7NzZFNzs3NkU3Ozc2RTc7NzZFNzsKK0Y5MzQ7ODAwMTs4MDAxOzgwMDE7ODAwMTsKK0Y5MzU7ODYwNjs4NjA2Ozg2MDY7ODYwNjsKK0Y5MzY7ODY1Qzs4NjVDOzg2NUM7ODY1QzsKK0Y5Mzc7OERFRjs4REVGOzhERUY7OERFRjsKK0Y5Mzg7OTczMjs5NzMyOzk3MzI7OTczMjsKK0Y5Mzk7OUI2Rjs5QjZGOzlCNkY7OUI2RjsKK0Y5M0E7OURGQTs5REZBOzlERkE7OURGQTsKK0Y5M0I7Nzg4Qzs3ODhDOzc4OEM7Nzg4QzsKK0Y5M0M7Nzk3Rjs3OTdGOzc5N0Y7Nzk3RjsKK0Y5M0Q7N0RBMDs3REEwOzdEQTA7N0RBMDsKK0Y5M0U7ODNDOTs4M0M5OzgzQzk7ODNDOTsKK0Y5M0Y7OTMwNDs5MzA0OzkzMDQ7OTMwNDsKK0Y5NDA7OUU3Rjs5RTdGOzlFN0Y7OUU3RjsKK0Y5NDE7OEFENjs4QUQ2OzhBRDY7OEFENjsKK0Y5NDI7NThERjs1OERGOzU4REY7NThERjsKK0Y5NDM7NUYwNDs1RjA0OzVGMDQ7NUYwNDsKK0Y5NDQ7N0M2MDs3QzYwOzdDNjA7N0M2MDsKK0Y5NDU7ODA3RTs4MDdFOzgwN0U7ODA3RTsKK0Y5NDY7NzI2Mjs3MjYyOzcyNjI7NzI2MjsKK0Y5NDc7NzhDQTs3OENBOzc4Q0E7NzhDQTsKK0Y5NDg7OENDMjs4Q0MyOzhDQzI7OENDMjsKK0Y5NDk7OTZGNzs5NkY3Ozk2Rjc7OTZGNzsKK0Y5NEE7NThEODs1OEQ4OzU4RDg7NThEODsKK0Y5NEI7NUM2Mjs1QzYyOzVDNjI7NUM2MjsKK0Y5NEM7NkExMzs2QTEzOzZBMTM7NkExMzsKK0Y5NEQ7NkREQTs2RERBOzZEREE7NkREQTsKK0Y5NEU7NkYwRjs2RjBGOzZGMEY7NkYwRjsKK0Y5NEY7N0QyRjs3RDJGOzdEMkY7N0QyRjsKK0Y5NTA7N0UzNzs3RTM3OzdFMzc7N0UzNzsKK0Y5NTE7OTY0Qjs5NjRCOzk2NEI7OTY0QjsKK0Y5NTI7NTJEMjs1MkQyOzUyRDI7NTJEMjsKK0Y5NTM7ODA4Qjs4MDhCOzgwOEI7ODA4QjsKK0Y5NTQ7NTFEQzs1MURDOzUxREM7NTFEQzsKK0Y5NTU7NTFDQzs1MUNDOzUxQ0M7NTFDQzsKK0Y5NTY7N0ExQzs3QTFDOzdBMUM7N0ExQzsKK0Y5NTc7N0RCRTs3REJFOzdEQkU7N0RCRTsKK0Y5NTg7ODNGMTs4M0YxOzgzRjE7ODNGMTsKK0Y5NTk7OTY3NTs5Njc1Ozk2NzU7OTY3NTsKK0Y5NUE7OEI4MDs4QjgwOzhCODA7OEI4MDsKK0Y5NUI7NjJDRjs2MkNGOzYyQ0Y7NjJDRjsKK0Y5NUM7NkEwMjs2QTAyOzZBMDI7NkEwMjsKK0Y5NUQ7OEFGRTs4QUZFOzhBRkU7OEFGRTsKK0Y5NUU7NEUzOTs0RTM5OzRFMzk7NEUzOTsKK0Y5NUY7NUJFNzs1QkU3OzVCRTc7NUJFNzsKK0Y5NjA7NjAxMjs2MDEyOzYwMTI7NjAxMjsKK0Y5NjE7NzM4Nzs3Mzg3OzczODc7NzM4NzsKK0Y5NjI7NzU3MDs3NTcwOzc1NzA7NzU3MDsKK0Y5NjM7NTMxNzs1MzE3OzUzMTc7NTMxNzsKK0Y5NjQ7NzhGQjs3OEZCOzc4RkI7NzhGQjsKK0Y5NjU7NEZCRjs0RkJGOzRGQkY7NEZCRjsKK0Y5NjY7NUZBOTs1RkE5OzVGQTk7NUZBOTsKK0Y5Njc7NEUwRDs0RTBEOzRFMEQ7NEUwRDsKK0Y5Njg7NkNDQzs2Q0NDOzZDQ0M7NkNDQzsKK0Y5Njk7NjU3ODs2NTc4OzY1Nzg7NjU3ODsKK0Y5NkE7N0QyMjs3RDIyOzdEMjI7N0QyMjsKK0Y5NkI7NTNDMzs1M0MzOzUzQzM7NTNDMzsKK0Y5NkM7NTg1RTs1ODVFOzU4NUU7NTg1RTsKK0Y5NkQ7NzcwMTs3NzAxOzc3MDE7NzcwMTsKK0Y5NkU7ODQ0OTs4NDQ5Ozg0NDk7ODQ0OTsKK0Y5NkY7OEFBQTs4QUFBOzhBQUE7OEFBQTsKK0Y5NzA7NkJCQTs2QkJBOzZCQkE7NkJCQTsKK0Y5NzE7OEZCMDs4RkIwOzhGQjA7OEZCMDsKK0Y5NzI7NkM4ODs2Qzg4OzZDODg7NkM4ODsKK0Y5NzM7NjJGRTs2MkZFOzYyRkU7NjJGRTsKK0Y5NzQ7ODJFNTs4MkU1OzgyRTU7ODJFNTsKK0Y5NzU7NjNBMDs2M0EwOzYzQTA7NjNBMDsKK0Y5NzY7NzU2NTs3NTY1Ozc1NjU7NzU2NTsKK0Y5Nzc7NEVBRTs0RUFFOzRFQUU7NEVBRTsKK0Y5Nzg7NTE2OTs1MTY5OzUxNjk7NTE2OTsKK0Y5Nzk7NTFDOTs1MUM5OzUxQzk7NTFDOTsKK0Y5N0E7Njg4MTs2ODgxOzY4ODE7Njg4MTsKK0Y5N0I7N0NFNzs3Q0U3OzdDRTc7N0NFNzsKK0Y5N0M7ODI2Rjs4MjZGOzgyNkY7ODI2RjsKK0Y5N0Q7OEFEMjs4QUQyOzhBRDI7OEFEMjsKK0Y5N0U7OTFDRjs5MUNGOzkxQ0Y7OTFDRjsKK0Y5N0Y7NTJGNTs1MkY1OzUyRjU7NTJGNTsKK0Y5ODA7NTQ0Mjs1NDQyOzU0NDI7NTQ0MjsKK0Y5ODE7NTk3Mzs1OTczOzU5NzM7NTk3MzsKK0Y5ODI7NUVFQzs1RUVDOzVFRUM7NUVFQzsKK0Y5ODM7NjVDNTs2NUM1OzY1QzU7NjVDNTsKK0Y5ODQ7NkZGRTs2RkZFOzZGRkU7NkZGRTsKK0Y5ODU7NzkyQTs3OTJBOzc5MkE7NzkyQTsKK0Y5ODY7OTVBRDs5NUFEOzk1QUQ7OTVBRDsKK0Y5ODc7OUE2QTs5QTZBOzlBNkE7OUE2QTsKK0Y5ODg7OUU5Nzs5RTk3OzlFOTc7OUU5NzsKK0Y5ODk7OUVDRTs5RUNFOzlFQ0U7OUVDRTsKK0Y5OEE7NTI5Qjs1MjlCOzUyOUI7NTI5QjsKK0Y5OEI7NjZDNjs2NkM2OzY2QzY7NjZDNjsKK0Y5OEM7NkI3Nzs2Qjc3OzZCNzc7NkI3NzsKK0Y5OEQ7OEY2Mjs4RjYyOzhGNjI7OEY2MjsKK0Y5OEU7NUU3NDs1RTc0OzVFNzQ7NUU3NDsKK0Y5OEY7NjE5MDs2MTkwOzYxOTA7NjE5MDsKK0Y5OTA7NjIwMDs2MjAwOzYyMDA7NjIwMDsKK0Y5OTE7NjQ5QTs2NDlBOzY0OUE7NjQ5QTsKK0Y5OTI7NkYyMzs2RjIzOzZGMjM7NkYyMzsKK0Y5OTM7NzE0OTs3MTQ5OzcxNDk7NzE0OTsKK0Y5OTQ7NzQ4OTs3NDg5Ozc0ODk7NzQ4OTsKK0Y5OTU7NzlDQTs3OUNBOzc5Q0E7NzlDQTsKK0Y5OTY7N0RGNDs3REY0OzdERjQ7N0RGNDsKK0Y5OTc7ODA2Rjs4MDZGOzgwNkY7ODA2RjsKK0Y5OTg7OEYyNjs4RjI2OzhGMjY7OEYyNjsKK0Y5OTk7ODRFRTs4NEVFOzg0RUU7ODRFRTsKK0Y5OUE7OTAyMzs5MDIzOzkwMjM7OTAyMzsKK0Y5OUI7OTM0QTs5MzRBOzkzNEE7OTM0QTsKK0Y5OUM7NTIxNzs1MjE3OzUyMTc7NTIxNzsKK0Y5OUQ7NTJBMzs1MkEzOzUyQTM7NTJBMzsKK0Y5OUU7NTRCRDs1NEJEOzU0QkQ7NTRCRDsKK0Y5OUY7NzBDODs3MEM4OzcwQzg7NzBDODsKK0Y5QTA7ODhDMjs4OEMyOzg4QzI7ODhDMjsKK0Y5QTE7OEFBQTs4QUFBOzhBQUE7OEFBQTsKK0Y5QTI7NUVDOTs1RUM5OzVFQzk7NUVDOTsKK0Y5QTM7NUZGNTs1RkY1OzVGRjU7NUZGNTsKK0Y5QTQ7NjM3Qjs2MzdCOzYzN0I7NjM3QjsKK0Y5QTU7NkJBRTs2QkFFOzZCQUU7NkJBRTsKK0Y5QTY7N0MzRTs3QzNFOzdDM0U7N0MzRTsKK0Y5QTc7NzM3NTs3Mzc1OzczNzU7NzM3NTsKK0Y5QTg7NEVFNDs0RUU0OzRFRTQ7NEVFNDsKK0Y5QTk7NTZGOTs1NkY5OzU2Rjk7NTZGOTsKK0Y5QUE7NUJFNzs1QkU3OzVCRTc7NUJFNzsKK0Y5QUI7NURCQTs1REJBOzVEQkE7NURCQTsKK0Y5QUM7NjAxQzs2MDFDOzYwMUM7NjAxQzsKK0Y5QUQ7NzNCMjs3M0IyOzczQjI7NzNCMjsKK0Y5QUU7NzQ2OTs3NDY5Ozc0Njk7NzQ2OTsKK0Y5QUY7N0Y5QTs3RjlBOzdGOUE7N0Y5QTsKK0Y5QjA7ODA0Njs4MDQ2OzgwNDY7ODA0NjsKK0Y5QjE7OTIzNDs5MjM0OzkyMzQ7OTIzNDsKK0Y5QjI7OTZGNjs5NkY2Ozk2RjY7OTZGNjsKK0Y5QjM7OTc0ODs5NzQ4Ozk3NDg7OTc0ODsKK0Y5QjQ7OTgxODs5ODE4Ozk4MTg7OTgxODsKK0Y5QjU7NEY4Qjs0RjhCOzRGOEI7NEY4QjsKK0Y5QjY7NzlBRTs3OUFFOzc5QUU7NzlBRTsKK0Y5Qjc7OTFCNDs5MUI0OzkxQjQ7OTFCNDsKK0Y5Qjg7OTZCODs5NkI4Ozk2Qjg7OTZCODsKK0Y5Qjk7NjBFMTs2MEUxOzYwRTE7NjBFMTsKK0Y5QkE7NEU4Njs0RTg2OzRFODY7NEU4NjsKK0Y5QkI7NTBEQTs1MERBOzUwREE7NTBEQTsKK0Y5QkM7NUJFRTs1QkVFOzVCRUU7NUJFRTsKK0Y5QkQ7NUMzRjs1QzNGOzVDM0Y7NUMzRjsKK0Y5QkU7NjU5OTs2NTk5OzY1OTk7NjU5OTsKK0Y5QkY7NkEwMjs2QTAyOzZBMDI7NkEwMjsKK0Y5QzA7NzFDRTs3MUNFOzcxQ0U7NzFDRTsKK0Y5QzE7NzY0Mjs3NjQyOzc2NDI7NzY0MjsKK0Y5QzI7ODRGQzs4NEZDOzg0RkM7ODRGQzsKK0Y5QzM7OTA3Qzs5MDdDOzkwN0M7OTA3QzsKK0Y5QzQ7OUY4RDs5RjhEOzlGOEQ7OUY4RDsKK0Y5QzU7NjY4ODs2Njg4OzY2ODg7NjY4ODsKK0Y5QzY7OTYyRTs5NjJFOzk2MkU7OTYyRTsKK0Y5Qzc7NTI4OTs1Mjg5OzUyODk7NTI4OTsKK0Y5Qzg7Njc3Qjs2NzdCOzY3N0I7Njc3QjsKK0Y5Qzk7NjdGMzs2N0YzOzY3RjM7NjdGMzsKK0Y5Q0E7NkQ0MTs2RDQxOzZENDE7NkQ0MTsKK0Y5Q0I7NkU5Qzs2RTlDOzZFOUM7NkU5QzsKK0Y5Q0M7NzQwOTs3NDA5Ozc0MDk7NzQwOTsKK0Y5Q0Q7NzU1OTs3NTU5Ozc1NTk7NzU1OTsKK0Y5Q0U7Nzg2Qjs3ODZCOzc4NkI7Nzg2QjsKK0Y5Q0Y7N0QxMDs3RDEwOzdEMTA7N0QxMDsKK0Y5RDA7OTg1RTs5ODVFOzk4NUU7OTg1RTsKK0Y5RDE7NTE2RDs1MTZEOzUxNkQ7NTE2RDsKK0Y5RDI7NjIyRTs2MjJFOzYyMkU7NjIyRTsKK0Y5RDM7OTY3ODs5Njc4Ozk2Nzg7OTY3ODsKK0Y5RDQ7NTAyQjs1MDJCOzUwMkI7NTAyQjsKK0Y5RDU7NUQxOTs1RDE5OzVEMTk7NUQxOTsKK0Y5RDY7NkRFQTs2REVBOzZERUE7NkRFQTsKK0Y5RDc7OEYyQTs4RjJBOzhGMkE7OEYyQTsKK0Y5RDg7NUY4Qjs1RjhCOzVGOEI7NUY4QjsKK0Y5RDk7NjE0NDs2MTQ0OzYxNDQ7NjE0NDsKK0Y5REE7NjgxNzs2ODE3OzY4MTc7NjgxNzsKK0Y5REI7NzM4Nzs3Mzg3OzczODc7NzM4NzsKK0Y5REM7OTY4Njs5Njg2Ozk2ODY7OTY4NjsKK0Y5REQ7NTIyOTs1MjI5OzUyMjk7NTIyOTsKK0Y5REU7NTQwRjs1NDBGOzU0MEY7NTQwRjsKK0Y5REY7NUM2NTs1QzY1OzVDNjU7NUM2NTsKK0Y5RTA7NjYxMzs2NjEzOzY2MTM7NjYxMzsKK0Y5RTE7Njc0RTs2NzRFOzY3NEU7Njc0RTsKK0Y5RTI7NjhBODs2OEE4OzY4QTg7NjhBODsKK0Y5RTM7NkNFNTs2Q0U1OzZDRTU7NkNFNTsKK0Y5RTQ7NzQwNjs3NDA2Ozc0MDY7NzQwNjsKK0Y5RTU7NzVFMjs3NUUyOzc1RTI7NzVFMjsKK0Y5RTY7N0Y3OTs3Rjc5OzdGNzk7N0Y3OTsKK0Y5RTc7ODhDRjs4OENGOzg4Q0Y7ODhDRjsKK0Y5RTg7ODhFMTs4OEUxOzg4RTE7ODhFMTsKK0Y5RTk7OTFDQzs5MUNDOzkxQ0M7OTFDQzsKK0Y5RUE7OTZFMjs5NkUyOzk2RTI7OTZFMjsKK0Y5RUI7NTMzRjs1MzNGOzUzM0Y7NTMzRjsKK0Y5RUM7NkVCQTs2RUJBOzZFQkE7NkVCQTsKK0Y5RUQ7NTQxRDs1NDFEOzU0MUQ7NTQxRDsKK0Y5RUU7NzFEMDs3MUQwOzcxRDA7NzFEMDsKK0Y5RUY7NzQ5ODs3NDk4Ozc0OTg7NzQ5ODsKK0Y5RjA7ODVGQTs4NUZBOzg1RkE7ODVGQTsKK0Y5RjE7OTZBMzs5NkEzOzk2QTM7OTZBMzsKK0Y5RjI7OUM1Nzs5QzU3OzlDNTc7OUM1NzsKK0Y5RjM7OUU5Rjs5RTlGOzlFOUY7OUU5RjsKK0Y5RjQ7Njc5Nzs2Nzk3OzY3OTc7Njc5NzsKK0Y5RjU7NkRDQjs2RENCOzZEQ0I7NkRDQjsKK0Y5RjY7ODFFODs4MUU4OzgxRTg7ODFFODsKK0Y5Rjc7N0FDQjs3QUNCOzdBQ0I7N0FDQjsKK0Y5Rjg7N0IyMDs3QjIwOzdCMjA7N0IyMDsKK0Y5Rjk7N0M5Mjs3QzkyOzdDOTI7N0M5MjsKK0Y5RkE7NzJDMDs3MkMwOzcyQzA7NzJDMDsKK0Y5RkI7NzA5OTs3MDk5OzcwOTk7NzA5OTsKK0Y5RkM7OEI1ODs4QjU4OzhCNTg7OEI1ODsKK0Y5RkQ7NEVDMDs0RUMwOzRFQzA7NEVDMDsKK0Y5RkU7ODMzNjs4MzM2OzgzMzY7ODMzNjsKK0Y5RkY7NTIzQTs1MjNBOzUyM0E7NTIzQTsKK0ZBMDA7NTIwNzs1MjA3OzUyMDc7NTIwNzsKK0ZBMDE7NUVBNjs1RUE2OzVFQTY7NUVBNjsKK0ZBMDI7NjJEMzs2MkQzOzYyRDM7NjJEMzsKK0ZBMDM7N0NENjs3Q0Q2OzdDRDY7N0NENjsKK0ZBMDQ7NUI4NTs1Qjg1OzVCODU7NUI4NTsKK0ZBMDU7NkQxRTs2RDFFOzZEMUU7NkQxRTsKK0ZBMDY7NjZCNDs2NkI0OzY2QjQ7NjZCNDsKK0ZBMDc7OEYzQjs4RjNCOzhGM0I7OEYzQjsKK0ZBMDg7ODg0Qzs4ODRDOzg4NEM7ODg0QzsKK0ZBMDk7OTY0RDs5NjREOzk2NEQ7OTY0RDsKK0ZBMEE7ODk4Qjs4OThCOzg5OEI7ODk4QjsKK0ZBMEI7NUVEMzs1RUQzOzVFRDM7NUVEMzsKK0ZBMEM7NTE0MDs1MTQwOzUxNDA7NTE0MDsKK0ZBMEQ7NTVDMDs1NUMwOzU1QzA7NTVDMDsKK0ZBMTA7NTg1QTs1ODVBOzU4NUE7NTg1QTsKK0ZBMTI7NjY3NDs2Njc0OzY2NzQ7NjY3NDsKK0ZBMTU7NTFERTs1MURFOzUxREU7NTFERTsKK0ZBMTY7NzMyQTs3MzJBOzczMkE7NzMyQTsKK0ZBMTc7NzZDQTs3NkNBOzc2Q0E7NzZDQTsKK0ZBMTg7NzkzQzs3OTNDOzc5M0M7NzkzQzsKK0ZBMTk7Nzk1RTs3OTVFOzc5NUU7Nzk1RTsKK0ZBMUE7Nzk2NTs3OTY1Ozc5NjU7Nzk2NTsKK0ZBMUI7Nzk4Rjs3OThGOzc5OEY7Nzk4RjsKK0ZBMUM7OTc1Njs5NzU2Ozk3NTY7OTc1NjsKK0ZBMUQ7N0NCRTs3Q0JFOzdDQkU7N0NCRTsKK0ZBMUU7N0ZCRDs3RkJEOzdGQkQ7N0ZCRDsKK0ZBMjA7ODYxMjs4NjEyOzg2MTI7ODYxMjsKK0ZBMjI7OEFGODs4QUY4OzhBRjg7OEFGODsKK0ZBMjU7OTAzODs5MDM4OzkwMzg7OTAzODsKK0ZBMjY7OTBGRDs5MEZEOzkwRkQ7OTBGRDsKK0ZBMkE7OThFRjs5OEVGOzk4RUY7OThFRjsKK0ZBMkI7OThGQzs5OEZDOzk4RkM7OThGQzsKK0ZBMkM7OTkyODs5OTI4Ozk5Mjg7OTkyODsKK0ZBMkQ7OURCNDs5REI0OzlEQjQ7OURCNDsKK0ZBMzA7NEZBRTs0RkFFOzRGQUU7NEZBRTsKK0ZBMzE7NTBFNzs1MEU3OzUwRTc7NTBFNzsKK0ZBMzI7NTE0RDs1MTREOzUxNEQ7NTE0RDsKK0ZBMzM7NTJDOTs1MkM5OzUyQzk7NTJDOTsKK0ZBMzQ7NTJFNDs1MkU0OzUyRTQ7NTJFNDsKK0ZBMzU7NTM1MTs1MzUxOzUzNTE7NTM1MTsKK0ZBMzY7NTU5RDs1NTlEOzU1OUQ7NTU5RDsKK0ZBMzc7NTYwNjs1NjA2OzU2MDY7NTYwNjsKK0ZBMzg7NTY2ODs1NjY4OzU2Njg7NTY2ODsKK0ZBMzk7NTg0MDs1ODQwOzU4NDA7NTg0MDsKK0ZBM0E7NThBODs1OEE4OzU4QTg7NThBODsKK0ZBM0I7NUM2NDs1QzY0OzVDNjQ7NUM2NDsKK0ZBM0M7NUM2RTs1QzZFOzVDNkU7NUM2RTsKK0ZBM0Q7NjA5NDs2MDk0OzYwOTQ7NjA5NDsKK0ZBM0U7NjE2ODs2MTY4OzYxNjg7NjE2ODsKK0ZBM0Y7NjE4RTs2MThFOzYxOEU7NjE4RTsKK0ZBNDA7NjFGMjs2MUYyOzYxRjI7NjFGMjsKK0ZBNDE7NjU0Rjs2NTRGOzY1NEY7NjU0RjsKK0ZBNDI7NjVFMjs2NUUyOzY1RTI7NjVFMjsKK0ZBNDM7NjY5MTs2NjkxOzY2OTE7NjY5MTsKK0ZBNDQ7Njg4NTs2ODg1OzY4ODU7Njg4NTsKK0ZBNDU7NkQ3Nzs2RDc3OzZENzc7NkQ3NzsKK0ZBNDY7NkUxQTs2RTFBOzZFMUE7NkUxQTsKK0ZBNDc7NkYyMjs2RjIyOzZGMjI7NkYyMjsKK0ZBNDg7NzE2RTs3MTZFOzcxNkU7NzE2RTsKK0ZBNDk7NzIyQjs3MjJCOzcyMkI7NzIyQjsKK0ZBNEE7NzQyMjs3NDIyOzc0MjI7NzQyMjsKK0ZBNEI7Nzg5MTs3ODkxOzc4OTE7Nzg5MTsKK0ZBNEM7NzkzRTs3OTNFOzc5M0U7NzkzRTsKK0ZBNEQ7Nzk0OTs3OTQ5Ozc5NDk7Nzk0OTsKK0ZBNEU7Nzk0ODs3OTQ4Ozc5NDg7Nzk0ODsKK0ZBNEY7Nzk1MDs3OTUwOzc5NTA7Nzk1MDsKK0ZBNTA7Nzk1Njs3OTU2Ozc5NTY7Nzk1NjsKK0ZBNTE7Nzk1RDs3OTVEOzc5NUQ7Nzk1RDsKK0ZBNTI7Nzk4RDs3OThEOzc5OEQ7Nzk4RDsKK0ZBNTM7Nzk4RTs3OThFOzc5OEU7Nzk4RTsKK0ZBNTQ7N0E0MDs3QTQwOzdBNDA7N0E0MDsKK0ZBNTU7N0E4MTs3QTgxOzdBODE7N0E4MTsKK0ZBNTY7N0JDMDs3QkMwOzdCQzA7N0JDMDsKK0ZBNTc7N0RGNDs3REY0OzdERjQ7N0RGNDsKK0ZBNTg7N0UwOTs3RTA5OzdFMDk7N0UwOTsKK0ZBNTk7N0U0MTs3RTQxOzdFNDE7N0U0MTsKK0ZBNUE7N0Y3Mjs3RjcyOzdGNzI7N0Y3MjsKK0ZBNUI7ODAwNTs4MDA1OzgwMDU7ODAwNTsKK0ZBNUM7ODFFRDs4MUVEOzgxRUQ7ODFFRDsKK0ZBNUQ7ODI3OTs4Mjc5OzgyNzk7ODI3OTsKK0ZBNUU7ODI3OTs4Mjc5OzgyNzk7ODI3OTsKK0ZBNUY7ODQ1Nzs4NDU3Ozg0NTc7ODQ1NzsKK0ZBNjA7ODkxMDs4OTEwOzg5MTA7ODkxMDsKK0ZBNjE7ODk5Njs4OTk2Ozg5OTY7ODk5NjsKK0ZBNjI7OEIwMTs4QjAxOzhCMDE7OEIwMTsKK0ZBNjM7OEIzOTs4QjM5OzhCMzk7OEIzOTsKK0ZBNjQ7OENEMzs4Q0QzOzhDRDM7OENEMzsKK0ZBNjU7OEQwODs4RDA4OzhEMDg7OEQwODsKK0ZBNjY7OEZCNjs4RkI2OzhGQjY7OEZCNjsKK0ZBNjc7OTAzODs5MDM4OzkwMzg7OTAzODsKK0ZBNjg7OTZFMzs5NkUzOzk2RTM7OTZFMzsKK0ZBNjk7OTdGRjs5N0ZGOzk3RkY7OTdGRjsKK0ZBNkE7OTgzQjs5ODNCOzk4M0I7OTgzQjsKK0ZCMDA7RkIwMDtGQjAwOzAwNjYgMDA2NjswMDY2IDAwNjY7CitGQjAxO0ZCMDE7RkIwMTswMDY2IDAwNjk7MDA2NiAwMDY5OworRkIwMjtGQjAyO0ZCMDI7MDA2NiAwMDZDOzAwNjYgMDA2QzsKK0ZCMDM7RkIwMztGQjAzOzAwNjYgMDA2NiAwMDY5OzAwNjYgMDA2NiAwMDY5OworRkIwNDtGQjA0O0ZCMDQ7MDA2NiAwMDY2IDAwNkM7MDA2NiAwMDY2IDAwNkM7CitGQjA1O0ZCMDU7RkIwNTswMDczIDAwNzQ7MDA3MyAwMDc0OworRkIwNjtGQjA2O0ZCMDY7MDA3MyAwMDc0OzAwNzMgMDA3NDsKK0ZCMTM7RkIxMztGQjEzOzA1NzQgMDU3NjswNTc0IDA1NzY7CitGQjE0O0ZCMTQ7RkIxNDswNTc0IDA1NjU7MDU3NCAwNTY1OworRkIxNTtGQjE1O0ZCMTU7MDU3NCAwNTZCOzA1NzQgMDU2QjsKK0ZCMTY7RkIxNjtGQjE2OzA1N0UgMDU3NjswNTdFIDA1NzY7CitGQjE3O0ZCMTc7RkIxNzswNTc0IDA1NkQ7MDU3NCAwNTZEOworRkIxRDswNUQ5IDA1QjQ7MDVEOSAwNUI0OzA1RDkgMDVCNDswNUQ5IDA1QjQ7CitGQjFGOzA1RjIgMDVCNzswNUYyIDA1Qjc7MDVGMiAwNUI3OzA1RjIgMDVCNzsKK0ZCMjA7RkIyMDtGQjIwOzA1RTI7MDVFMjsKK0ZCMjE7RkIyMTtGQjIxOzA1RDA7MDVEMDsKK0ZCMjI7RkIyMjtGQjIyOzA1RDM7MDVEMzsKK0ZCMjM7RkIyMztGQjIzOzA1RDQ7MDVENDsKK0ZCMjQ7RkIyNDtGQjI0OzA1REI7MDVEQjsKK0ZCMjU7RkIyNTtGQjI1OzA1REM7MDVEQzsKK0ZCMjY7RkIyNjtGQjI2OzA1REQ7MDVERDsKK0ZCMjc7RkIyNztGQjI3OzA1RTg7MDVFODsKK0ZCMjg7RkIyODtGQjI4OzA1RUE7MDVFQTsKK0ZCMjk7RkIyOTtGQjI5OzAwMkI7MDAyQjsKK0ZCMkE7MDVFOSAwNUMxOzA1RTkgMDVDMTswNUU5IDA1QzE7MDVFOSAwNUMxOworRkIyQjswNUU5IDA1QzI7MDVFOSAwNUMyOzA1RTkgMDVDMjswNUU5IDA1QzI7CitGQjJDOzA1RTkgMDVCQyAwNUMxOzA1RTkgMDVCQyAwNUMxOzA1RTkgMDVCQyAwNUMxOzA1RTkgMDVCQyAwNUMxOworRkIyRDswNUU5IDA1QkMgMDVDMjswNUU5IDA1QkMgMDVDMjswNUU5IDA1QkMgMDVDMjswNUU5IDA1QkMgMDVDMjsKK0ZCMkU7MDVEMCAwNUI3OzA1RDAgMDVCNzswNUQwIDA1Qjc7MDVEMCAwNUI3OworRkIyRjswNUQwIDA1Qjg7MDVEMCAwNUI4OzA1RDAgMDVCODswNUQwIDA1Qjg7CitGQjMwOzA1RDAgMDVCQzswNUQwIDA1QkM7MDVEMCAwNUJDOzA1RDAgMDVCQzsKK0ZCMzE7MDVEMSAwNUJDOzA1RDEgMDVCQzswNUQxIDA1QkM7MDVEMSAwNUJDOworRkIzMjswNUQyIDA1QkM7MDVEMiAwNUJDOzA1RDIgMDVCQzswNUQyIDA1QkM7CitGQjMzOzA1RDMgMDVCQzswNUQzIDA1QkM7MDVEMyAwNUJDOzA1RDMgMDVCQzsKK0ZCMzQ7MDVENCAwNUJDOzA1RDQgMDVCQzswNUQ0IDA1QkM7MDVENCAwNUJDOworRkIzNTswNUQ1IDA1QkM7MDVENSAwNUJDOzA1RDUgMDVCQzswNUQ1IDA1QkM7CitGQjM2OzA1RDYgMDVCQzswNUQ2IDA1QkM7MDVENiAwNUJDOzA1RDYgMDVCQzsKK0ZCMzg7MDVEOCAwNUJDOzA1RDggMDVCQzswNUQ4IDA1QkM7MDVEOCAwNUJDOworRkIzOTswNUQ5IDA1QkM7MDVEOSAwNUJDOzA1RDkgMDVCQzswNUQ5IDA1QkM7CitGQjNBOzA1REEgMDVCQzswNURBIDA1QkM7MDVEQSAwNUJDOzA1REEgMDVCQzsKK0ZCM0I7MDVEQiAwNUJDOzA1REIgMDVCQzswNURCIDA1QkM7MDVEQiAwNUJDOworRkIzQzswNURDIDA1QkM7MDVEQyAwNUJDOzA1REMgMDVCQzswNURDIDA1QkM7CitGQjNFOzA1REUgMDVCQzswNURFIDA1QkM7MDVERSAwNUJDOzA1REUgMDVCQzsKK0ZCNDA7MDVFMCAwNUJDOzA1RTAgMDVCQzswNUUwIDA1QkM7MDVFMCAwNUJDOworRkI0MTswNUUxIDA1QkM7MDVFMSAwNUJDOzA1RTEgMDVCQzswNUUxIDA1QkM7CitGQjQzOzA1RTMgMDVCQzswNUUzIDA1QkM7MDVFMyAwNUJDOzA1RTMgMDVCQzsKK0ZCNDQ7MDVFNCAwNUJDOzA1RTQgMDVCQzswNUU0IDA1QkM7MDVFNCAwNUJDOworRkI0NjswNUU2IDA1QkM7MDVFNiAwNUJDOzA1RTYgMDVCQzswNUU2IDA1QkM7CitGQjQ3OzA1RTcgMDVCQzswNUU3IDA1QkM7MDVFNyAwNUJDOzA1RTcgMDVCQzsKK0ZCNDg7MDVFOCAwNUJDOzA1RTggMDVCQzswNUU4IDA1QkM7MDVFOCAwNUJDOworRkI0OTswNUU5IDA1QkM7MDVFOSAwNUJDOzA1RTkgMDVCQzswNUU5IDA1QkM7CitGQjRBOzA1RUEgMDVCQzswNUVBIDA1QkM7MDVFQSAwNUJDOzA1RUEgMDVCQzsKK0ZCNEI7MDVENSAwNUI5OzA1RDUgMDVCOTswNUQ1IDA1Qjk7MDVENSAwNUI5OworRkI0QzswNUQxIDA1QkY7MDVEMSAwNUJGOzA1RDEgMDVCRjswNUQxIDA1QkY7CitGQjREOzA1REIgMDVCRjswNURCIDA1QkY7MDVEQiAwNUJGOzA1REIgMDVCRjsKK0ZCNEU7MDVFNCAwNUJGOzA1RTQgMDVCRjswNUU0IDA1QkY7MDVFNCAwNUJGOworRkI0RjtGQjRGO0ZCNEY7MDVEMCAwNURDOzA1RDAgMDVEQzsKK0ZCNTA7RkI1MDtGQjUwOzA2NzE7MDY3MTsKK0ZCNTE7RkI1MTtGQjUxOzA2NzE7MDY3MTsKK0ZCNTI7RkI1MjtGQjUyOzA2N0I7MDY3QjsKK0ZCNTM7RkI1MztGQjUzOzA2N0I7MDY3QjsKK0ZCNTQ7RkI1NDtGQjU0OzA2N0I7MDY3QjsKK0ZCNTU7RkI1NTtGQjU1OzA2N0I7MDY3QjsKK0ZCNTY7RkI1NjtGQjU2OzA2N0U7MDY3RTsKK0ZCNTc7RkI1NztGQjU3OzA2N0U7MDY3RTsKK0ZCNTg7RkI1ODtGQjU4OzA2N0U7MDY3RTsKK0ZCNTk7RkI1OTtGQjU5OzA2N0U7MDY3RTsKK0ZCNUE7RkI1QTtGQjVBOzA2ODA7MDY4MDsKK0ZCNUI7RkI1QjtGQjVCOzA2ODA7MDY4MDsKK0ZCNUM7RkI1QztGQjVDOzA2ODA7MDY4MDsKK0ZCNUQ7RkI1RDtGQjVEOzA2ODA7MDY4MDsKK0ZCNUU7RkI1RTtGQjVFOzA2N0E7MDY3QTsKK0ZCNUY7RkI1RjtGQjVGOzA2N0E7MDY3QTsKK0ZCNjA7RkI2MDtGQjYwOzA2N0E7MDY3QTsKK0ZCNjE7RkI2MTtGQjYxOzA2N0E7MDY3QTsKK0ZCNjI7RkI2MjtGQjYyOzA2N0Y7MDY3RjsKK0ZCNjM7RkI2MztGQjYzOzA2N0Y7MDY3RjsKK0ZCNjQ7RkI2NDtGQjY0OzA2N0Y7MDY3RjsKK0ZCNjU7RkI2NTtGQjY1OzA2N0Y7MDY3RjsKK0ZCNjY7RkI2NjtGQjY2OzA2Nzk7MDY3OTsKK0ZCNjc7RkI2NztGQjY3OzA2Nzk7MDY3OTsKK0ZCNjg7RkI2ODtGQjY4OzA2Nzk7MDY3OTsKK0ZCNjk7RkI2OTtGQjY5OzA2Nzk7MDY3OTsKK0ZCNkE7RkI2QTtGQjZBOzA2QTQ7MDZBNDsKK0ZCNkI7RkI2QjtGQjZCOzA2QTQ7MDZBNDsKK0ZCNkM7RkI2QztGQjZDOzA2QTQ7MDZBNDsKK0ZCNkQ7RkI2RDtGQjZEOzA2QTQ7MDZBNDsKK0ZCNkU7RkI2RTtGQjZFOzA2QTY7MDZBNjsKK0ZCNkY7RkI2RjtGQjZGOzA2QTY7MDZBNjsKK0ZCNzA7RkI3MDtGQjcwOzA2QTY7MDZBNjsKK0ZCNzE7RkI3MTtGQjcxOzA2QTY7MDZBNjsKK0ZCNzI7RkI3MjtGQjcyOzA2ODQ7MDY4NDsKK0ZCNzM7RkI3MztGQjczOzA2ODQ7MDY4NDsKK0ZCNzQ7RkI3NDtGQjc0OzA2ODQ7MDY4NDsKK0ZCNzU7RkI3NTtGQjc1OzA2ODQ7MDY4NDsKK0ZCNzY7RkI3NjtGQjc2OzA2ODM7MDY4MzsKK0ZCNzc7RkI3NztGQjc3OzA2ODM7MDY4MzsKK0ZCNzg7RkI3ODtGQjc4OzA2ODM7MDY4MzsKK0ZCNzk7RkI3OTtGQjc5OzA2ODM7MDY4MzsKK0ZCN0E7RkI3QTtGQjdBOzA2ODY7MDY4NjsKK0ZCN0I7RkI3QjtGQjdCOzA2ODY7MDY4NjsKK0ZCN0M7RkI3QztGQjdDOzA2ODY7MDY4NjsKK0ZCN0Q7RkI3RDtGQjdEOzA2ODY7MDY4NjsKK0ZCN0U7RkI3RTtGQjdFOzA2ODc7MDY4NzsKK0ZCN0Y7RkI3RjtGQjdGOzA2ODc7MDY4NzsKK0ZCODA7RkI4MDtGQjgwOzA2ODc7MDY4NzsKK0ZCODE7RkI4MTtGQjgxOzA2ODc7MDY4NzsKK0ZCODI7RkI4MjtGQjgyOzA2OEQ7MDY4RDsKK0ZCODM7RkI4MztGQjgzOzA2OEQ7MDY4RDsKK0ZCODQ7RkI4NDtGQjg0OzA2OEM7MDY4QzsKK0ZCODU7RkI4NTtGQjg1OzA2OEM7MDY4QzsKK0ZCODY7RkI4NjtGQjg2OzA2OEU7MDY4RTsKK0ZCODc7RkI4NztGQjg3OzA2OEU7MDY4RTsKK0ZCODg7RkI4ODtGQjg4OzA2ODg7MDY4ODsKK0ZCODk7RkI4OTtGQjg5OzA2ODg7MDY4ODsKK0ZCOEE7RkI4QTtGQjhBOzA2OTg7MDY5ODsKK0ZCOEI7RkI4QjtGQjhCOzA2OTg7MDY5ODsKK0ZCOEM7RkI4QztGQjhDOzA2OTE7MDY5MTsKK0ZCOEQ7RkI4RDtGQjhEOzA2OTE7MDY5MTsKK0ZCOEU7RkI4RTtGQjhFOzA2QTk7MDZBOTsKK0ZCOEY7RkI4RjtGQjhGOzA2QTk7MDZBOTsKK0ZCOTA7RkI5MDtGQjkwOzA2QTk7MDZBOTsKK0ZCOTE7RkI5MTtGQjkxOzA2QTk7MDZBOTsKK0ZCOTI7RkI5MjtGQjkyOzA2QUY7MDZBRjsKK0ZCOTM7RkI5MztGQjkzOzA2QUY7MDZBRjsKK0ZCOTQ7RkI5NDtGQjk0OzA2QUY7MDZBRjsKK0ZCOTU7RkI5NTtGQjk1OzA2QUY7MDZBRjsKK0ZCOTY7RkI5NjtGQjk2OzA2QjM7MDZCMzsKK0ZCOTc7RkI5NztGQjk3OzA2QjM7MDZCMzsKK0ZCOTg7RkI5ODtGQjk4OzA2QjM7MDZCMzsKK0ZCOTk7RkI5OTtGQjk5OzA2QjM7MDZCMzsKK0ZCOUE7RkI5QTtGQjlBOzA2QjE7MDZCMTsKK0ZCOUI7RkI5QjtGQjlCOzA2QjE7MDZCMTsKK0ZCOUM7RkI5QztGQjlDOzA2QjE7MDZCMTsKK0ZCOUQ7RkI5RDtGQjlEOzA2QjE7MDZCMTsKK0ZCOUU7RkI5RTtGQjlFOzA2QkE7MDZCQTsKK0ZCOUY7RkI5RjtGQjlGOzA2QkE7MDZCQTsKK0ZCQTA7RkJBMDtGQkEwOzA2QkI7MDZCQjsKK0ZCQTE7RkJBMTtGQkExOzA2QkI7MDZCQjsKK0ZCQTI7RkJBMjtGQkEyOzA2QkI7MDZCQjsKK0ZCQTM7RkJBMztGQkEzOzA2QkI7MDZCQjsKK0ZCQTQ7RkJBNDtGQkE0OzA2QzA7MDZENSAwNjU0OworRkJBNTtGQkE1O0ZCQTU7MDZDMDswNkQ1IDA2NTQ7CitGQkE2O0ZCQTY7RkJBNjswNkMxOzA2QzE7CitGQkE3O0ZCQTc7RkJBNzswNkMxOzA2QzE7CitGQkE4O0ZCQTg7RkJBODswNkMxOzA2QzE7CitGQkE5O0ZCQTk7RkJBOTswNkMxOzA2QzE7CitGQkFBO0ZCQUE7RkJBQTswNkJFOzA2QkU7CitGQkFCO0ZCQUI7RkJBQjswNkJFOzA2QkU7CitGQkFDO0ZCQUM7RkJBQzswNkJFOzA2QkU7CitGQkFEO0ZCQUQ7RkJBRDswNkJFOzA2QkU7CitGQkFFO0ZCQUU7RkJBRTswNkQyOzA2RDI7CitGQkFGO0ZCQUY7RkJBRjswNkQyOzA2RDI7CitGQkIwO0ZCQjA7RkJCMDswNkQzOzA2RDIgMDY1NDsKK0ZCQjE7RkJCMTtGQkIxOzA2RDM7MDZEMiAwNjU0OworRkJEMztGQkQzO0ZCRDM7MDZBRDswNkFEOworRkJENDtGQkQ0O0ZCRDQ7MDZBRDswNkFEOworRkJENTtGQkQ1O0ZCRDU7MDZBRDswNkFEOworRkJENjtGQkQ2O0ZCRDY7MDZBRDswNkFEOworRkJENztGQkQ3O0ZCRDc7MDZDNzswNkM3OworRkJEODtGQkQ4O0ZCRDg7MDZDNzswNkM3OworRkJEOTtGQkQ5O0ZCRDk7MDZDNjswNkM2OworRkJEQTtGQkRBO0ZCREE7MDZDNjswNkM2OworRkJEQjtGQkRCO0ZCREI7MDZDODswNkM4OworRkJEQztGQkRDO0ZCREM7MDZDODswNkM4OworRkJERDtGQkREO0ZCREQ7MDZDNyAwNjc0OzA2QzcgMDY3NDsKK0ZCREU7RkJERTtGQkRFOzA2Q0I7MDZDQjsKK0ZCREY7RkJERjtGQkRGOzA2Q0I7MDZDQjsKK0ZCRTA7RkJFMDtGQkUwOzA2QzU7MDZDNTsKK0ZCRTE7RkJFMTtGQkUxOzA2QzU7MDZDNTsKK0ZCRTI7RkJFMjtGQkUyOzA2Qzk7MDZDOTsKK0ZCRTM7RkJFMztGQkUzOzA2Qzk7MDZDOTsKK0ZCRTQ7RkJFNDtGQkU0OzA2RDA7MDZEMDsKK0ZCRTU7RkJFNTtGQkU1OzA2RDA7MDZEMDsKK0ZCRTY7RkJFNjtGQkU2OzA2RDA7MDZEMDsKK0ZCRTc7RkJFNztGQkU3OzA2RDA7MDZEMDsKK0ZCRTg7RkJFODtGQkU4OzA2NDk7MDY0OTsKK0ZCRTk7RkJFOTtGQkU5OzA2NDk7MDY0OTsKK0ZCRUE7RkJFQTtGQkVBOzA2MjYgMDYyNzswNjRBIDA2NTQgMDYyNzsKK0ZCRUI7RkJFQjtGQkVCOzA2MjYgMDYyNzswNjRBIDA2NTQgMDYyNzsKK0ZCRUM7RkJFQztGQkVDOzA2MjYgMDZENTswNjRBIDA2NTQgMDZENTsKK0ZCRUQ7RkJFRDtGQkVEOzA2MjYgMDZENTswNjRBIDA2NTQgMDZENTsKK0ZCRUU7RkJFRTtGQkVFOzA2MjYgMDY0ODswNjRBIDA2NTQgMDY0ODsKK0ZCRUY7RkJFRjtGQkVGOzA2MjYgMDY0ODswNjRBIDA2NTQgMDY0ODsKK0ZCRjA7RkJGMDtGQkYwOzA2MjYgMDZDNzswNjRBIDA2NTQgMDZDNzsKK0ZCRjE7RkJGMTtGQkYxOzA2MjYgMDZDNzswNjRBIDA2NTQgMDZDNzsKK0ZCRjI7RkJGMjtGQkYyOzA2MjYgMDZDNjswNjRBIDA2NTQgMDZDNjsKK0ZCRjM7RkJGMztGQkYzOzA2MjYgMDZDNjswNjRBIDA2NTQgMDZDNjsKK0ZCRjQ7RkJGNDtGQkY0OzA2MjYgMDZDODswNjRBIDA2NTQgMDZDODsKK0ZCRjU7RkJGNTtGQkY1OzA2MjYgMDZDODswNjRBIDA2NTQgMDZDODsKK0ZCRjY7RkJGNjtGQkY2OzA2MjYgMDZEMDswNjRBIDA2NTQgMDZEMDsKK0ZCRjc7RkJGNztGQkY3OzA2MjYgMDZEMDswNjRBIDA2NTQgMDZEMDsKK0ZCRjg7RkJGODtGQkY4OzA2MjYgMDZEMDswNjRBIDA2NTQgMDZEMDsKK0ZCRjk7RkJGOTtGQkY5OzA2MjYgMDY0OTswNjRBIDA2NTQgMDY0OTsKK0ZCRkE7RkJGQTtGQkZBOzA2MjYgMDY0OTswNjRBIDA2NTQgMDY0OTsKK0ZCRkI7RkJGQjtGQkZCOzA2MjYgMDY0OTswNjRBIDA2NTQgMDY0OTsKK0ZCRkM7RkJGQztGQkZDOzA2Q0M7MDZDQzsKK0ZCRkQ7RkJGRDtGQkZEOzA2Q0M7MDZDQzsKK0ZCRkU7RkJGRTtGQkZFOzA2Q0M7MDZDQzsKK0ZCRkY7RkJGRjtGQkZGOzA2Q0M7MDZDQzsKK0ZDMDA7RkMwMDtGQzAwOzA2MjYgMDYyQzswNjRBIDA2NTQgMDYyQzsKK0ZDMDE7RkMwMTtGQzAxOzA2MjYgMDYyRDswNjRBIDA2NTQgMDYyRDsKK0ZDMDI7RkMwMjtGQzAyOzA2MjYgMDY0NTswNjRBIDA2NTQgMDY0NTsKK0ZDMDM7RkMwMztGQzAzOzA2MjYgMDY0OTswNjRBIDA2NTQgMDY0OTsKK0ZDMDQ7RkMwNDtGQzA0OzA2MjYgMDY0QTswNjRBIDA2NTQgMDY0QTsKK0ZDMDU7RkMwNTtGQzA1OzA2MjggMDYyQzswNjI4IDA2MkM7CitGQzA2O0ZDMDY7RkMwNjswNjI4IDA2MkQ7MDYyOCAwNjJEOworRkMwNztGQzA3O0ZDMDc7MDYyOCAwNjJFOzA2MjggMDYyRTsKK0ZDMDg7RkMwODtGQzA4OzA2MjggMDY0NTswNjI4IDA2NDU7CitGQzA5O0ZDMDk7RkMwOTswNjI4IDA2NDk7MDYyOCAwNjQ5OworRkMwQTtGQzBBO0ZDMEE7MDYyOCAwNjRBOzA2MjggMDY0QTsKK0ZDMEI7RkMwQjtGQzBCOzA2MkEgMDYyQzswNjJBIDA2MkM7CitGQzBDO0ZDMEM7RkMwQzswNjJBIDA2MkQ7MDYyQSAwNjJEOworRkMwRDtGQzBEO0ZDMEQ7MDYyQSAwNjJFOzA2MkEgMDYyRTsKK0ZDMEU7RkMwRTtGQzBFOzA2MkEgMDY0NTswNjJBIDA2NDU7CitGQzBGO0ZDMEY7RkMwRjswNjJBIDA2NDk7MDYyQSAwNjQ5OworRkMxMDtGQzEwO0ZDMTA7MDYyQSAwNjRBOzA2MkEgMDY0QTsKK0ZDMTE7RkMxMTtGQzExOzA2MkIgMDYyQzswNjJCIDA2MkM7CitGQzEyO0ZDMTI7RkMxMjswNjJCIDA2NDU7MDYyQiAwNjQ1OworRkMxMztGQzEzO0ZDMTM7MDYyQiAwNjQ5OzA2MkIgMDY0OTsKK0ZDMTQ7RkMxNDtGQzE0OzA2MkIgMDY0QTswNjJCIDA2NEE7CitGQzE1O0ZDMTU7RkMxNTswNjJDIDA2MkQ7MDYyQyAwNjJEOworRkMxNjtGQzE2O0ZDMTY7MDYyQyAwNjQ1OzA2MkMgMDY0NTsKK0ZDMTc7RkMxNztGQzE3OzA2MkQgMDYyQzswNjJEIDA2MkM7CitGQzE4O0ZDMTg7RkMxODswNjJEIDA2NDU7MDYyRCAwNjQ1OworRkMxOTtGQzE5O0ZDMTk7MDYyRSAwNjJDOzA2MkUgMDYyQzsKK0ZDMUE7RkMxQTtGQzFBOzA2MkUgMDYyRDswNjJFIDA2MkQ7CitGQzFCO0ZDMUI7RkMxQjswNjJFIDA2NDU7MDYyRSAwNjQ1OworRkMxQztGQzFDO0ZDMUM7MDYzMyAwNjJDOzA2MzMgMDYyQzsKK0ZDMUQ7RkMxRDtGQzFEOzA2MzMgMDYyRDswNjMzIDA2MkQ7CitGQzFFO0ZDMUU7RkMxRTswNjMzIDA2MkU7MDYzMyAwNjJFOworRkMxRjtGQzFGO0ZDMUY7MDYzMyAwNjQ1OzA2MzMgMDY0NTsKK0ZDMjA7RkMyMDtGQzIwOzA2MzUgMDYyRDswNjM1IDA2MkQ7CitGQzIxO0ZDMjE7RkMyMTswNjM1IDA2NDU7MDYzNSAwNjQ1OworRkMyMjtGQzIyO0ZDMjI7MDYzNiAwNjJDOzA2MzYgMDYyQzsKK0ZDMjM7RkMyMztGQzIzOzA2MzYgMDYyRDswNjM2IDA2MkQ7CitGQzI0O0ZDMjQ7RkMyNDswNjM2IDA2MkU7MDYzNiAwNjJFOworRkMyNTtGQzI1O0ZDMjU7MDYzNiAwNjQ1OzA2MzYgMDY0NTsKK0ZDMjY7RkMyNjtGQzI2OzA2MzcgMDYyRDswNjM3IDA2MkQ7CitGQzI3O0ZDMjc7RkMyNzswNjM3IDA2NDU7MDYzNyAwNjQ1OworRkMyODtGQzI4O0ZDMjg7MDYzOCAwNjQ1OzA2MzggMDY0NTsKK0ZDMjk7RkMyOTtGQzI5OzA2MzkgMDYyQzswNjM5IDA2MkM7CitGQzJBO0ZDMkE7RkMyQTswNjM5IDA2NDU7MDYzOSAwNjQ1OworRkMyQjtGQzJCO0ZDMkI7MDYzQSAwNjJDOzA2M0EgMDYyQzsKK0ZDMkM7RkMyQztGQzJDOzA2M0EgMDY0NTswNjNBIDA2NDU7CitGQzJEO0ZDMkQ7RkMyRDswNjQxIDA2MkM7MDY0MSAwNjJDOworRkMyRTtGQzJFO0ZDMkU7MDY0MSAwNjJEOzA2NDEgMDYyRDsKK0ZDMkY7RkMyRjtGQzJGOzA2NDEgMDYyRTswNjQxIDA2MkU7CitGQzMwO0ZDMzA7RkMzMDswNjQxIDA2NDU7MDY0MSAwNjQ1OworRkMzMTtGQzMxO0ZDMzE7MDY0MSAwNjQ5OzA2NDEgMDY0OTsKK0ZDMzI7RkMzMjtGQzMyOzA2NDEgMDY0QTswNjQxIDA2NEE7CitGQzMzO0ZDMzM7RkMzMzswNjQyIDA2MkQ7MDY0MiAwNjJEOworRkMzNDtGQzM0O0ZDMzQ7MDY0MiAwNjQ1OzA2NDIgMDY0NTsKK0ZDMzU7RkMzNTtGQzM1OzA2NDIgMDY0OTswNjQyIDA2NDk7CitGQzM2O0ZDMzY7RkMzNjswNjQyIDA2NEE7MDY0MiAwNjRBOworRkMzNztGQzM3O0ZDMzc7MDY0MyAwNjI3OzA2NDMgMDYyNzsKK0ZDMzg7RkMzODtGQzM4OzA2NDMgMDYyQzswNjQzIDA2MkM7CitGQzM5O0ZDMzk7RkMzOTswNjQzIDA2MkQ7MDY0MyAwNjJEOworRkMzQTtGQzNBO0ZDM0E7MDY0MyAwNjJFOzA2NDMgMDYyRTsKK0ZDM0I7RkMzQjtGQzNCOzA2NDMgMDY0NDswNjQzIDA2NDQ7CitGQzNDO0ZDM0M7RkMzQzswNjQzIDA2NDU7MDY0MyAwNjQ1OworRkMzRDtGQzNEO0ZDM0Q7MDY0MyAwNjQ5OzA2NDMgMDY0OTsKK0ZDM0U7RkMzRTtGQzNFOzA2NDMgMDY0QTswNjQzIDA2NEE7CitGQzNGO0ZDM0Y7RkMzRjswNjQ0IDA2MkM7MDY0NCAwNjJDOworRkM0MDtGQzQwO0ZDNDA7MDY0NCAwNjJEOzA2NDQgMDYyRDsKK0ZDNDE7RkM0MTtGQzQxOzA2NDQgMDYyRTswNjQ0IDA2MkU7CitGQzQyO0ZDNDI7RkM0MjswNjQ0IDA2NDU7MDY0NCAwNjQ1OworRkM0MztGQzQzO0ZDNDM7MDY0NCAwNjQ5OzA2NDQgMDY0OTsKK0ZDNDQ7RkM0NDtGQzQ0OzA2NDQgMDY0QTswNjQ0IDA2NEE7CitGQzQ1O0ZDNDU7RkM0NTswNjQ1IDA2MkM7MDY0NSAwNjJDOworRkM0NjtGQzQ2O0ZDNDY7MDY0NSAwNjJEOzA2NDUgMDYyRDsKK0ZDNDc7RkM0NztGQzQ3OzA2NDUgMDYyRTswNjQ1IDA2MkU7CitGQzQ4O0ZDNDg7RkM0ODswNjQ1IDA2NDU7MDY0NSAwNjQ1OworRkM0OTtGQzQ5O0ZDNDk7MDY0NSAwNjQ5OzA2NDUgMDY0OTsKK0ZDNEE7RkM0QTtGQzRBOzA2NDUgMDY0QTswNjQ1IDA2NEE7CitGQzRCO0ZDNEI7RkM0QjswNjQ2IDA2MkM7MDY0NiAwNjJDOworRkM0QztGQzRDO0ZDNEM7MDY0NiAwNjJEOzA2NDYgMDYyRDsKK0ZDNEQ7RkM0RDtGQzREOzA2NDYgMDYyRTswNjQ2IDA2MkU7CitGQzRFO0ZDNEU7RkM0RTswNjQ2IDA2NDU7MDY0NiAwNjQ1OworRkM0RjtGQzRGO0ZDNEY7MDY0NiAwNjQ5OzA2NDYgMDY0OTsKK0ZDNTA7RkM1MDtGQzUwOzA2NDYgMDY0QTswNjQ2IDA2NEE7CitGQzUxO0ZDNTE7RkM1MTswNjQ3IDA2MkM7MDY0NyAwNjJDOworRkM1MjtGQzUyO0ZDNTI7MDY0NyAwNjQ1OzA2NDcgMDY0NTsKK0ZDNTM7RkM1MztGQzUzOzA2NDcgMDY0OTswNjQ3IDA2NDk7CitGQzU0O0ZDNTQ7RkM1NDswNjQ3IDA2NEE7MDY0NyAwNjRBOworRkM1NTtGQzU1O0ZDNTU7MDY0QSAwNjJDOzA2NEEgMDYyQzsKK0ZDNTY7RkM1NjtGQzU2OzA2NEEgMDYyRDswNjRBIDA2MkQ7CitGQzU3O0ZDNTc7RkM1NzswNjRBIDA2MkU7MDY0QSAwNjJFOworRkM1ODtGQzU4O0ZDNTg7MDY0QSAwNjQ1OzA2NEEgMDY0NTsKK0ZDNTk7RkM1OTtGQzU5OzA2NEEgMDY0OTswNjRBIDA2NDk7CitGQzVBO0ZDNUE7RkM1QTswNjRBIDA2NEE7MDY0QSAwNjRBOworRkM1QjtGQzVCO0ZDNUI7MDYzMCAwNjcwOzA2MzAgMDY3MDsKK0ZDNUM7RkM1QztGQzVDOzA2MzEgMDY3MDswNjMxIDA2NzA7CitGQzVEO0ZDNUQ7RkM1RDswNjQ5IDA2NzA7MDY0OSAwNjcwOworRkM1RTtGQzVFO0ZDNUU7MDAyMCAwNjRDIDA2NTE7MDAyMCAwNjRDIDA2NTE7CitGQzVGO0ZDNUY7RkM1RjswMDIwIDA2NEQgMDY1MTswMDIwIDA2NEQgMDY1MTsKK0ZDNjA7RkM2MDtGQzYwOzAwMjAgMDY0RSAwNjUxOzAwMjAgMDY0RSAwNjUxOworRkM2MTtGQzYxO0ZDNjE7MDAyMCAwNjRGIDA2NTE7MDAyMCAwNjRGIDA2NTE7CitGQzYyO0ZDNjI7RkM2MjswMDIwIDA2NTAgMDY1MTswMDIwIDA2NTAgMDY1MTsKK0ZDNjM7RkM2MztGQzYzOzAwMjAgMDY1MSAwNjcwOzAwMjAgMDY1MSAwNjcwOworRkM2NDtGQzY0O0ZDNjQ7MDYyNiAwNjMxOzA2NEEgMDY1NCAwNjMxOworRkM2NTtGQzY1O0ZDNjU7MDYyNiAwNjMyOzA2NEEgMDY1NCAwNjMyOworRkM2NjtGQzY2O0ZDNjY7MDYyNiAwNjQ1OzA2NEEgMDY1NCAwNjQ1OworRkM2NztGQzY3O0ZDNjc7MDYyNiAwNjQ2OzA2NEEgMDY1NCAwNjQ2OworRkM2ODtGQzY4O0ZDNjg7MDYyNiAwNjQ5OzA2NEEgMDY1NCAwNjQ5OworRkM2OTtGQzY5O0ZDNjk7MDYyNiAwNjRBOzA2NEEgMDY1NCAwNjRBOworRkM2QTtGQzZBO0ZDNkE7MDYyOCAwNjMxOzA2MjggMDYzMTsKK0ZDNkI7RkM2QjtGQzZCOzA2MjggMDYzMjswNjI4IDA2MzI7CitGQzZDO0ZDNkM7RkM2QzswNjI4IDA2NDU7MDYyOCAwNjQ1OworRkM2RDtGQzZEO0ZDNkQ7MDYyOCAwNjQ2OzA2MjggMDY0NjsKK0ZDNkU7RkM2RTtGQzZFOzA2MjggMDY0OTswNjI4IDA2NDk7CitGQzZGO0ZDNkY7RkM2RjswNjI4IDA2NEE7MDYyOCAwNjRBOworRkM3MDtGQzcwO0ZDNzA7MDYyQSAwNjMxOzA2MkEgMDYzMTsKK0ZDNzE7RkM3MTtGQzcxOzA2MkEgMDYzMjswNjJBIDA2MzI7CitGQzcyO0ZDNzI7RkM3MjswNjJBIDA2NDU7MDYyQSAwNjQ1OworRkM3MztGQzczO0ZDNzM7MDYyQSAwNjQ2OzA2MkEgMDY0NjsKK0ZDNzQ7RkM3NDtGQzc0OzA2MkEgMDY0OTswNjJBIDA2NDk7CitGQzc1O0ZDNzU7RkM3NTswNjJBIDA2NEE7MDYyQSAwNjRBOworRkM3NjtGQzc2O0ZDNzY7MDYyQiAwNjMxOzA2MkIgMDYzMTsKK0ZDNzc7RkM3NztGQzc3OzA2MkIgMDYzMjswNjJCIDA2MzI7CitGQzc4O0ZDNzg7RkM3ODswNjJCIDA2NDU7MDYyQiAwNjQ1OworRkM3OTtGQzc5O0ZDNzk7MDYyQiAwNjQ2OzA2MkIgMDY0NjsKK0ZDN0E7RkM3QTtGQzdBOzA2MkIgMDY0OTswNjJCIDA2NDk7CitGQzdCO0ZDN0I7RkM3QjswNjJCIDA2NEE7MDYyQiAwNjRBOworRkM3QztGQzdDO0ZDN0M7MDY0MSAwNjQ5OzA2NDEgMDY0OTsKK0ZDN0Q7RkM3RDtGQzdEOzA2NDEgMDY0QTswNjQxIDA2NEE7CitGQzdFO0ZDN0U7RkM3RTswNjQyIDA2NDk7MDY0MiAwNjQ5OworRkM3RjtGQzdGO0ZDN0Y7MDY0MiAwNjRBOzA2NDIgMDY0QTsKK0ZDODA7RkM4MDtGQzgwOzA2NDMgMDYyNzswNjQzIDA2Mjc7CitGQzgxO0ZDODE7RkM4MTswNjQzIDA2NDQ7MDY0MyAwNjQ0OworRkM4MjtGQzgyO0ZDODI7MDY0MyAwNjQ1OzA2NDMgMDY0NTsKK0ZDODM7RkM4MztGQzgzOzA2NDMgMDY0OTswNjQzIDA2NDk7CitGQzg0O0ZDODQ7RkM4NDswNjQzIDA2NEE7MDY0MyAwNjRBOworRkM4NTtGQzg1O0ZDODU7MDY0NCAwNjQ1OzA2NDQgMDY0NTsKK0ZDODY7RkM4NjtGQzg2OzA2NDQgMDY0OTswNjQ0IDA2NDk7CitGQzg3O0ZDODc7RkM4NzswNjQ0IDA2NEE7MDY0NCAwNjRBOworRkM4ODtGQzg4O0ZDODg7MDY0NSAwNjI3OzA2NDUgMDYyNzsKK0ZDODk7RkM4OTtGQzg5OzA2NDUgMDY0NTswNjQ1IDA2NDU7CitGQzhBO0ZDOEE7RkM4QTswNjQ2IDA2MzE7MDY0NiAwNjMxOworRkM4QjtGQzhCO0ZDOEI7MDY0NiAwNjMyOzA2NDYgMDYzMjsKK0ZDOEM7RkM4QztGQzhDOzA2NDYgMDY0NTswNjQ2IDA2NDU7CitGQzhEO0ZDOEQ7RkM4RDswNjQ2IDA2NDY7MDY0NiAwNjQ2OworRkM4RTtGQzhFO0ZDOEU7MDY0NiAwNjQ5OzA2NDYgMDY0OTsKK0ZDOEY7RkM4RjtGQzhGOzA2NDYgMDY0QTswNjQ2IDA2NEE7CitGQzkwO0ZDOTA7RkM5MDswNjQ5IDA2NzA7MDY0OSAwNjcwOworRkM5MTtGQzkxO0ZDOTE7MDY0QSAwNjMxOzA2NEEgMDYzMTsKK0ZDOTI7RkM5MjtGQzkyOzA2NEEgMDYzMjswNjRBIDA2MzI7CitGQzkzO0ZDOTM7RkM5MzswNjRBIDA2NDU7MDY0QSAwNjQ1OworRkM5NDtGQzk0O0ZDOTQ7MDY0QSAwNjQ2OzA2NEEgMDY0NjsKK0ZDOTU7RkM5NTtGQzk1OzA2NEEgMDY0OTswNjRBIDA2NDk7CitGQzk2O0ZDOTY7RkM5NjswNjRBIDA2NEE7MDY0QSAwNjRBOworRkM5NztGQzk3O0ZDOTc7MDYyNiAwNjJDOzA2NEEgMDY1NCAwNjJDOworRkM5ODtGQzk4O0ZDOTg7MDYyNiAwNjJEOzA2NEEgMDY1NCAwNjJEOworRkM5OTtGQzk5O0ZDOTk7MDYyNiAwNjJFOzA2NEEgMDY1NCAwNjJFOworRkM5QTtGQzlBO0ZDOUE7MDYyNiAwNjQ1OzA2NEEgMDY1NCAwNjQ1OworRkM5QjtGQzlCO0ZDOUI7MDYyNiAwNjQ3OzA2NEEgMDY1NCAwNjQ3OworRkM5QztGQzlDO0ZDOUM7MDYyOCAwNjJDOzA2MjggMDYyQzsKK0ZDOUQ7RkM5RDtGQzlEOzA2MjggMDYyRDswNjI4IDA2MkQ7CitGQzlFO0ZDOUU7RkM5RTswNjI4IDA2MkU7MDYyOCAwNjJFOworRkM5RjtGQzlGO0ZDOUY7MDYyOCAwNjQ1OzA2MjggMDY0NTsKK0ZDQTA7RkNBMDtGQ0EwOzA2MjggMDY0NzswNjI4IDA2NDc7CitGQ0ExO0ZDQTE7RkNBMTswNjJBIDA2MkM7MDYyQSAwNjJDOworRkNBMjtGQ0EyO0ZDQTI7MDYyQSAwNjJEOzA2MkEgMDYyRDsKK0ZDQTM7RkNBMztGQ0EzOzA2MkEgMDYyRTswNjJBIDA2MkU7CitGQ0E0O0ZDQTQ7RkNBNDswNjJBIDA2NDU7MDYyQSAwNjQ1OworRkNBNTtGQ0E1O0ZDQTU7MDYyQSAwNjQ3OzA2MkEgMDY0NzsKK0ZDQTY7RkNBNjtGQ0E2OzA2MkIgMDY0NTswNjJCIDA2NDU7CitGQ0E3O0ZDQTc7RkNBNzswNjJDIDA2MkQ7MDYyQyAwNjJEOworRkNBODtGQ0E4O0ZDQTg7MDYyQyAwNjQ1OzA2MkMgMDY0NTsKK0ZDQTk7RkNBOTtGQ0E5OzA2MkQgMDYyQzswNjJEIDA2MkM7CitGQ0FBO0ZDQUE7RkNBQTswNjJEIDA2NDU7MDYyRCAwNjQ1OworRkNBQjtGQ0FCO0ZDQUI7MDYyRSAwNjJDOzA2MkUgMDYyQzsKK0ZDQUM7RkNBQztGQ0FDOzA2MkUgMDY0NTswNjJFIDA2NDU7CitGQ0FEO0ZDQUQ7RkNBRDswNjMzIDA2MkM7MDYzMyAwNjJDOworRkNBRTtGQ0FFO0ZDQUU7MDYzMyAwNjJEOzA2MzMgMDYyRDsKK0ZDQUY7RkNBRjtGQ0FGOzA2MzMgMDYyRTswNjMzIDA2MkU7CitGQ0IwO0ZDQjA7RkNCMDswNjMzIDA2NDU7MDYzMyAwNjQ1OworRkNCMTtGQ0IxO0ZDQjE7MDYzNSAwNjJEOzA2MzUgMDYyRDsKK0ZDQjI7RkNCMjtGQ0IyOzA2MzUgMDYyRTswNjM1IDA2MkU7CitGQ0IzO0ZDQjM7RkNCMzswNjM1IDA2NDU7MDYzNSAwNjQ1OworRkNCNDtGQ0I0O0ZDQjQ7MDYzNiAwNjJDOzA2MzYgMDYyQzsKK0ZDQjU7RkNCNTtGQ0I1OzA2MzYgMDYyRDswNjM2IDA2MkQ7CitGQ0I2O0ZDQjY7RkNCNjswNjM2IDA2MkU7MDYzNiAwNjJFOworRkNCNztGQ0I3O0ZDQjc7MDYzNiAwNjQ1OzA2MzYgMDY0NTsKK0ZDQjg7RkNCODtGQ0I4OzA2MzcgMDYyRDswNjM3IDA2MkQ7CitGQ0I5O0ZDQjk7RkNCOTswNjM4IDA2NDU7MDYzOCAwNjQ1OworRkNCQTtGQ0JBO0ZDQkE7MDYzOSAwNjJDOzA2MzkgMDYyQzsKK0ZDQkI7RkNCQjtGQ0JCOzA2MzkgMDY0NTswNjM5IDA2NDU7CitGQ0JDO0ZDQkM7RkNCQzswNjNBIDA2MkM7MDYzQSAwNjJDOworRkNCRDtGQ0JEO0ZDQkQ7MDYzQSAwNjQ1OzA2M0EgMDY0NTsKK0ZDQkU7RkNCRTtGQ0JFOzA2NDEgMDYyQzswNjQxIDA2MkM7CitGQ0JGO0ZDQkY7RkNCRjswNjQxIDA2MkQ7MDY0MSAwNjJEOworRkNDMDtGQ0MwO0ZDQzA7MDY0MSAwNjJFOzA2NDEgMDYyRTsKK0ZDQzE7RkNDMTtGQ0MxOzA2NDEgMDY0NTswNjQxIDA2NDU7CitGQ0MyO0ZDQzI7RkNDMjswNjQyIDA2MkQ7MDY0MiAwNjJEOworRkNDMztGQ0MzO0ZDQzM7MDY0MiAwNjQ1OzA2NDIgMDY0NTsKK0ZDQzQ7RkNDNDtGQ0M0OzA2NDMgMDYyQzswNjQzIDA2MkM7CitGQ0M1O0ZDQzU7RkNDNTswNjQzIDA2MkQ7MDY0MyAwNjJEOworRkNDNjtGQ0M2O0ZDQzY7MDY0MyAwNjJFOzA2NDMgMDYyRTsKK0ZDQzc7RkNDNztGQ0M3OzA2NDMgMDY0NDswNjQzIDA2NDQ7CitGQ0M4O0ZDQzg7RkNDODswNjQzIDA2NDU7MDY0MyAwNjQ1OworRkNDOTtGQ0M5O0ZDQzk7MDY0NCAwNjJDOzA2NDQgMDYyQzsKK0ZDQ0E7RkNDQTtGQ0NBOzA2NDQgMDYyRDswNjQ0IDA2MkQ7CitGQ0NCO0ZDQ0I7RkNDQjswNjQ0IDA2MkU7MDY0NCAwNjJFOworRkNDQztGQ0NDO0ZDQ0M7MDY0NCAwNjQ1OzA2NDQgMDY0NTsKK0ZDQ0Q7RkNDRDtGQ0NEOzA2NDQgMDY0NzswNjQ0IDA2NDc7CitGQ0NFO0ZDQ0U7RkNDRTswNjQ1IDA2MkM7MDY0NSAwNjJDOworRkNDRjtGQ0NGO0ZDQ0Y7MDY0NSAwNjJEOzA2NDUgMDYyRDsKK0ZDRDA7RkNEMDtGQ0QwOzA2NDUgMDYyRTswNjQ1IDA2MkU7CitGQ0QxO0ZDRDE7RkNEMTswNjQ1IDA2NDU7MDY0NSAwNjQ1OworRkNEMjtGQ0QyO0ZDRDI7MDY0NiAwNjJDOzA2NDYgMDYyQzsKK0ZDRDM7RkNEMztGQ0QzOzA2NDYgMDYyRDswNjQ2IDA2MkQ7CitGQ0Q0O0ZDRDQ7RkNENDswNjQ2IDA2MkU7MDY0NiAwNjJFOworRkNENTtGQ0Q1O0ZDRDU7MDY0NiAwNjQ1OzA2NDYgMDY0NTsKK0ZDRDY7RkNENjtGQ0Q2OzA2NDYgMDY0NzswNjQ2IDA2NDc7CitGQ0Q3O0ZDRDc7RkNENzswNjQ3IDA2MkM7MDY0NyAwNjJDOworRkNEODtGQ0Q4O0ZDRDg7MDY0NyAwNjQ1OzA2NDcgMDY0NTsKK0ZDRDk7RkNEOTtGQ0Q5OzA2NDcgMDY3MDswNjQ3IDA2NzA7CitGQ0RBO0ZDREE7RkNEQTswNjRBIDA2MkM7MDY0QSAwNjJDOworRkNEQjtGQ0RCO0ZDREI7MDY0QSAwNjJEOzA2NEEgMDYyRDsKK0ZDREM7RkNEQztGQ0RDOzA2NEEgMDYyRTswNjRBIDA2MkU7CitGQ0REO0ZDREQ7RkNERDswNjRBIDA2NDU7MDY0QSAwNjQ1OworRkNERTtGQ0RFO0ZDREU7MDY0QSAwNjQ3OzA2NEEgMDY0NzsKK0ZDREY7RkNERjtGQ0RGOzA2MjYgMDY0NTswNjRBIDA2NTQgMDY0NTsKK0ZDRTA7RkNFMDtGQ0UwOzA2MjYgMDY0NzswNjRBIDA2NTQgMDY0NzsKK0ZDRTE7RkNFMTtGQ0UxOzA2MjggMDY0NTswNjI4IDA2NDU7CitGQ0UyO0ZDRTI7RkNFMjswNjI4IDA2NDc7MDYyOCAwNjQ3OworRkNFMztGQ0UzO0ZDRTM7MDYyQSAwNjQ1OzA2MkEgMDY0NTsKK0ZDRTQ7RkNFNDtGQ0U0OzA2MkEgMDY0NzswNjJBIDA2NDc7CitGQ0U1O0ZDRTU7RkNFNTswNjJCIDA2NDU7MDYyQiAwNjQ1OworRkNFNjtGQ0U2O0ZDRTY7MDYyQiAwNjQ3OzA2MkIgMDY0NzsKK0ZDRTc7RkNFNztGQ0U3OzA2MzMgMDY0NTswNjMzIDA2NDU7CitGQ0U4O0ZDRTg7RkNFODswNjMzIDA2NDc7MDYzMyAwNjQ3OworRkNFOTtGQ0U5O0ZDRTk7MDYzNCAwNjQ1OzA2MzQgMDY0NTsKK0ZDRUE7RkNFQTtGQ0VBOzA2MzQgMDY0NzswNjM0IDA2NDc7CitGQ0VCO0ZDRUI7RkNFQjswNjQzIDA2NDQ7MDY0MyAwNjQ0OworRkNFQztGQ0VDO0ZDRUM7MDY0MyAwNjQ1OzA2NDMgMDY0NTsKK0ZDRUQ7RkNFRDtGQ0VEOzA2NDQgMDY0NTswNjQ0IDA2NDU7CitGQ0VFO0ZDRUU7RkNFRTswNjQ2IDA2NDU7MDY0NiAwNjQ1OworRkNFRjtGQ0VGO0ZDRUY7MDY0NiAwNjQ3OzA2NDYgMDY0NzsKK0ZDRjA7RkNGMDtGQ0YwOzA2NEEgMDY0NTswNjRBIDA2NDU7CitGQ0YxO0ZDRjE7RkNGMTswNjRBIDA2NDc7MDY0QSAwNjQ3OworRkNGMjtGQ0YyO0ZDRjI7MDY0MCAwNjRFIDA2NTE7MDY0MCAwNjRFIDA2NTE7CitGQ0YzO0ZDRjM7RkNGMzswNjQwIDA2NEYgMDY1MTswNjQwIDA2NEYgMDY1MTsKK0ZDRjQ7RkNGNDtGQ0Y0OzA2NDAgMDY1MCAwNjUxOzA2NDAgMDY1MCAwNjUxOworRkNGNTtGQ0Y1O0ZDRjU7MDYzNyAwNjQ5OzA2MzcgMDY0OTsKK0ZDRjY7RkNGNjtGQ0Y2OzA2MzcgMDY0QTswNjM3IDA2NEE7CitGQ0Y3O0ZDRjc7RkNGNzswNjM5IDA2NDk7MDYzOSAwNjQ5OworRkNGODtGQ0Y4O0ZDRjg7MDYzOSAwNjRBOzA2MzkgMDY0QTsKK0ZDRjk7RkNGOTtGQ0Y5OzA2M0EgMDY0OTswNjNBIDA2NDk7CitGQ0ZBO0ZDRkE7RkNGQTswNjNBIDA2NEE7MDYzQSAwNjRBOworRkNGQjtGQ0ZCO0ZDRkI7MDYzMyAwNjQ5OzA2MzMgMDY0OTsKK0ZDRkM7RkNGQztGQ0ZDOzA2MzMgMDY0QTswNjMzIDA2NEE7CitGQ0ZEO0ZDRkQ7RkNGRDswNjM0IDA2NDk7MDYzNCAwNjQ5OworRkNGRTtGQ0ZFO0ZDRkU7MDYzNCAwNjRBOzA2MzQgMDY0QTsKK0ZDRkY7RkNGRjtGQ0ZGOzA2MkQgMDY0OTswNjJEIDA2NDk7CitGRDAwO0ZEMDA7RkQwMDswNjJEIDA2NEE7MDYyRCAwNjRBOworRkQwMTtGRDAxO0ZEMDE7MDYyQyAwNjQ5OzA2MkMgMDY0OTsKK0ZEMDI7RkQwMjtGRDAyOzA2MkMgMDY0QTswNjJDIDA2NEE7CitGRDAzO0ZEMDM7RkQwMzswNjJFIDA2NDk7MDYyRSAwNjQ5OworRkQwNDtGRDA0O0ZEMDQ7MDYyRSAwNjRBOzA2MkUgMDY0QTsKK0ZEMDU7RkQwNTtGRDA1OzA2MzUgMDY0OTswNjM1IDA2NDk7CitGRDA2O0ZEMDY7RkQwNjswNjM1IDA2NEE7MDYzNSAwNjRBOworRkQwNztGRDA3O0ZEMDc7MDYzNiAwNjQ5OzA2MzYgMDY0OTsKK0ZEMDg7RkQwODtGRDA4OzA2MzYgMDY0QTswNjM2IDA2NEE7CitGRDA5O0ZEMDk7RkQwOTswNjM0IDA2MkM7MDYzNCAwNjJDOworRkQwQTtGRDBBO0ZEMEE7MDYzNCAwNjJEOzA2MzQgMDYyRDsKK0ZEMEI7RkQwQjtGRDBCOzA2MzQgMDYyRTswNjM0IDA2MkU7CitGRDBDO0ZEMEM7RkQwQzswNjM0IDA2NDU7MDYzNCAwNjQ1OworRkQwRDtGRDBEO0ZEMEQ7MDYzNCAwNjMxOzA2MzQgMDYzMTsKK0ZEMEU7RkQwRTtGRDBFOzA2MzMgMDYzMTswNjMzIDA2MzE7CitGRDBGO0ZEMEY7RkQwRjswNjM1IDA2MzE7MDYzNSAwNjMxOworRkQxMDtGRDEwO0ZEMTA7MDYzNiAwNjMxOzA2MzYgMDYzMTsKK0ZEMTE7RkQxMTtGRDExOzA2MzcgMDY0OTswNjM3IDA2NDk7CitGRDEyO0ZEMTI7RkQxMjswNjM3IDA2NEE7MDYzNyAwNjRBOworRkQxMztGRDEzO0ZEMTM7MDYzOSAwNjQ5OzA2MzkgMDY0OTsKK0ZEMTQ7RkQxNDtGRDE0OzA2MzkgMDY0QTswNjM5IDA2NEE7CitGRDE1O0ZEMTU7RkQxNTswNjNBIDA2NDk7MDYzQSAwNjQ5OworRkQxNjtGRDE2O0ZEMTY7MDYzQSAwNjRBOzA2M0EgMDY0QTsKK0ZEMTc7RkQxNztGRDE3OzA2MzMgMDY0OTswNjMzIDA2NDk7CitGRDE4O0ZEMTg7RkQxODswNjMzIDA2NEE7MDYzMyAwNjRBOworRkQxOTtGRDE5O0ZEMTk7MDYzNCAwNjQ5OzA2MzQgMDY0OTsKK0ZEMUE7RkQxQTtGRDFBOzA2MzQgMDY0QTswNjM0IDA2NEE7CitGRDFCO0ZEMUI7RkQxQjswNjJEIDA2NDk7MDYyRCAwNjQ5OworRkQxQztGRDFDO0ZEMUM7MDYyRCAwNjRBOzA2MkQgMDY0QTsKK0ZEMUQ7RkQxRDtGRDFEOzA2MkMgMDY0OTswNjJDIDA2NDk7CitGRDFFO0ZEMUU7RkQxRTswNjJDIDA2NEE7MDYyQyAwNjRBOworRkQxRjtGRDFGO0ZEMUY7MDYyRSAwNjQ5OzA2MkUgMDY0OTsKK0ZEMjA7RkQyMDtGRDIwOzA2MkUgMDY0QTswNjJFIDA2NEE7CitGRDIxO0ZEMjE7RkQyMTswNjM1IDA2NDk7MDYzNSAwNjQ5OworRkQyMjtGRDIyO0ZEMjI7MDYzNSAwNjRBOzA2MzUgMDY0QTsKK0ZEMjM7RkQyMztGRDIzOzA2MzYgMDY0OTswNjM2IDA2NDk7CitGRDI0O0ZEMjQ7RkQyNDswNjM2IDA2NEE7MDYzNiAwNjRBOworRkQyNTtGRDI1O0ZEMjU7MDYzNCAwNjJDOzA2MzQgMDYyQzsKK0ZEMjY7RkQyNjtGRDI2OzA2MzQgMDYyRDswNjM0IDA2MkQ7CitGRDI3O0ZEMjc7RkQyNzswNjM0IDA2MkU7MDYzNCAwNjJFOworRkQyODtGRDI4O0ZEMjg7MDYzNCAwNjQ1OzA2MzQgMDY0NTsKK0ZEMjk7RkQyOTtGRDI5OzA2MzQgMDYzMTswNjM0IDA2MzE7CitGRDJBO0ZEMkE7RkQyQTswNjMzIDA2MzE7MDYzMyAwNjMxOworRkQyQjtGRDJCO0ZEMkI7MDYzNSAwNjMxOzA2MzUgMDYzMTsKK0ZEMkM7RkQyQztGRDJDOzA2MzYgMDYzMTswNjM2IDA2MzE7CitGRDJEO0ZEMkQ7RkQyRDswNjM0IDA2MkM7MDYzNCAwNjJDOworRkQyRTtGRDJFO0ZEMkU7MDYzNCAwNjJEOzA2MzQgMDYyRDsKK0ZEMkY7RkQyRjtGRDJGOzA2MzQgMDYyRTswNjM0IDA2MkU7CitGRDMwO0ZEMzA7RkQzMDswNjM0IDA2NDU7MDYzNCAwNjQ1OworRkQzMTtGRDMxO0ZEMzE7MDYzMyAwNjQ3OzA2MzMgMDY0NzsKK0ZEMzI7RkQzMjtGRDMyOzA2MzQgMDY0NzswNjM0IDA2NDc7CitGRDMzO0ZEMzM7RkQzMzswNjM3IDA2NDU7MDYzNyAwNjQ1OworRkQzNDtGRDM0O0ZEMzQ7MDYzMyAwNjJDOzA2MzMgMDYyQzsKK0ZEMzU7RkQzNTtGRDM1OzA2MzMgMDYyRDswNjMzIDA2MkQ7CitGRDM2O0ZEMzY7RkQzNjswNjMzIDA2MkU7MDYzMyAwNjJFOworRkQzNztGRDM3O0ZEMzc7MDYzNCAwNjJDOzA2MzQgMDYyQzsKK0ZEMzg7RkQzODtGRDM4OzA2MzQgMDYyRDswNjM0IDA2MkQ7CitGRDM5O0ZEMzk7RkQzOTswNjM0IDA2MkU7MDYzNCAwNjJFOworRkQzQTtGRDNBO0ZEM0E7MDYzNyAwNjQ1OzA2MzcgMDY0NTsKK0ZEM0I7RkQzQjtGRDNCOzA2MzggMDY0NTswNjM4IDA2NDU7CitGRDNDO0ZEM0M7RkQzQzswNjI3IDA2NEI7MDYyNyAwNjRCOworRkQzRDtGRDNEO0ZEM0Q7MDYyNyAwNjRCOzA2MjcgMDY0QjsKK0ZENTA7RkQ1MDtGRDUwOzA2MkEgMDYyQyAwNjQ1OzA2MkEgMDYyQyAwNjQ1OworRkQ1MTtGRDUxO0ZENTE7MDYyQSAwNjJEIDA2MkM7MDYyQSAwNjJEIDA2MkM7CitGRDUyO0ZENTI7RkQ1MjswNjJBIDA2MkQgMDYyQzswNjJBIDA2MkQgMDYyQzsKK0ZENTM7RkQ1MztGRDUzOzA2MkEgMDYyRCAwNjQ1OzA2MkEgMDYyRCAwNjQ1OworRkQ1NDtGRDU0O0ZENTQ7MDYyQSAwNjJFIDA2NDU7MDYyQSAwNjJFIDA2NDU7CitGRDU1O0ZENTU7RkQ1NTswNjJBIDA2NDUgMDYyQzswNjJBIDA2NDUgMDYyQzsKK0ZENTY7RkQ1NjtGRDU2OzA2MkEgMDY0NSAwNjJEOzA2MkEgMDY0NSAwNjJEOworRkQ1NztGRDU3O0ZENTc7MDYyQSAwNjQ1IDA2MkU7MDYyQSAwNjQ1IDA2MkU7CitGRDU4O0ZENTg7RkQ1ODswNjJDIDA2NDUgMDYyRDswNjJDIDA2NDUgMDYyRDsKK0ZENTk7RkQ1OTtGRDU5OzA2MkMgMDY0NSAwNjJEOzA2MkMgMDY0NSAwNjJEOworRkQ1QTtGRDVBO0ZENUE7MDYyRCAwNjQ1IDA2NEE7MDYyRCAwNjQ1IDA2NEE7CitGRDVCO0ZENUI7RkQ1QjswNjJEIDA2NDUgMDY0OTswNjJEIDA2NDUgMDY0OTsKK0ZENUM7RkQ1QztGRDVDOzA2MzMgMDYyRCAwNjJDOzA2MzMgMDYyRCAwNjJDOworRkQ1RDtGRDVEO0ZENUQ7MDYzMyAwNjJDIDA2MkQ7MDYzMyAwNjJDIDA2MkQ7CitGRDVFO0ZENUU7RkQ1RTswNjMzIDA2MkMgMDY0OTswNjMzIDA2MkMgMDY0OTsKK0ZENUY7RkQ1RjtGRDVGOzA2MzMgMDY0NSAwNjJEOzA2MzMgMDY0NSAwNjJEOworRkQ2MDtGRDYwO0ZENjA7MDYzMyAwNjQ1IDA2MkQ7MDYzMyAwNjQ1IDA2MkQ7CitGRDYxO0ZENjE7RkQ2MTswNjMzIDA2NDUgMDYyQzswNjMzIDA2NDUgMDYyQzsKK0ZENjI7RkQ2MjtGRDYyOzA2MzMgMDY0NSAwNjQ1OzA2MzMgMDY0NSAwNjQ1OworRkQ2MztGRDYzO0ZENjM7MDYzMyAwNjQ1IDA2NDU7MDYzMyAwNjQ1IDA2NDU7CitGRDY0O0ZENjQ7RkQ2NDswNjM1IDA2MkQgMDYyRDswNjM1IDA2MkQgMDYyRDsKK0ZENjU7RkQ2NTtGRDY1OzA2MzUgMDYyRCAwNjJEOzA2MzUgMDYyRCAwNjJEOworRkQ2NjtGRDY2O0ZENjY7MDYzNSAwNjQ1IDA2NDU7MDYzNSAwNjQ1IDA2NDU7CitGRDY3O0ZENjc7RkQ2NzswNjM0IDA2MkQgMDY0NTswNjM0IDA2MkQgMDY0NTsKK0ZENjg7RkQ2ODtGRDY4OzA2MzQgMDYyRCAwNjQ1OzA2MzQgMDYyRCAwNjQ1OworRkQ2OTtGRDY5O0ZENjk7MDYzNCAwNjJDIDA2NEE7MDYzNCAwNjJDIDA2NEE7CitGRDZBO0ZENkE7RkQ2QTswNjM0IDA2NDUgMDYyRTswNjM0IDA2NDUgMDYyRTsKK0ZENkI7RkQ2QjtGRDZCOzA2MzQgMDY0NSAwNjJFOzA2MzQgMDY0NSAwNjJFOworRkQ2QztGRDZDO0ZENkM7MDYzNCAwNjQ1IDA2NDU7MDYzNCAwNjQ1IDA2NDU7CitGRDZEO0ZENkQ7RkQ2RDswNjM0IDA2NDUgMDY0NTswNjM0IDA2NDUgMDY0NTsKK0ZENkU7RkQ2RTtGRDZFOzA2MzYgMDYyRCAwNjQ5OzA2MzYgMDYyRCAwNjQ5OworRkQ2RjtGRDZGO0ZENkY7MDYzNiAwNjJFIDA2NDU7MDYzNiAwNjJFIDA2NDU7CitGRDcwO0ZENzA7RkQ3MDswNjM2IDA2MkUgMDY0NTswNjM2IDA2MkUgMDY0NTsKK0ZENzE7RkQ3MTtGRDcxOzA2MzcgMDY0NSAwNjJEOzA2MzcgMDY0NSAwNjJEOworRkQ3MjtGRDcyO0ZENzI7MDYzNyAwNjQ1IDA2MkQ7MDYzNyAwNjQ1IDA2MkQ7CitGRDczO0ZENzM7RkQ3MzswNjM3IDA2NDUgMDY0NTswNjM3IDA2NDUgMDY0NTsKK0ZENzQ7RkQ3NDtGRDc0OzA2MzcgMDY0NSAwNjRBOzA2MzcgMDY0NSAwNjRBOworRkQ3NTtGRDc1O0ZENzU7MDYzOSAwNjJDIDA2NDU7MDYzOSAwNjJDIDA2NDU7CitGRDc2O0ZENzY7RkQ3NjswNjM5IDA2NDUgMDY0NTswNjM5IDA2NDUgMDY0NTsKK0ZENzc7RkQ3NztGRDc3OzA2MzkgMDY0NSAwNjQ1OzA2MzkgMDY0NSAwNjQ1OworRkQ3ODtGRDc4O0ZENzg7MDYzOSAwNjQ1IDA2NDk7MDYzOSAwNjQ1IDA2NDk7CitGRDc5O0ZENzk7RkQ3OTswNjNBIDA2NDUgMDY0NTswNjNBIDA2NDUgMDY0NTsKK0ZEN0E7RkQ3QTtGRDdBOzA2M0EgMDY0NSAwNjRBOzA2M0EgMDY0NSAwNjRBOworRkQ3QjtGRDdCO0ZEN0I7MDYzQSAwNjQ1IDA2NDk7MDYzQSAwNjQ1IDA2NDk7CitGRDdDO0ZEN0M7RkQ3QzswNjQxIDA2MkUgMDY0NTswNjQxIDA2MkUgMDY0NTsKK0ZEN0Q7RkQ3RDtGRDdEOzA2NDEgMDYyRSAwNjQ1OzA2NDEgMDYyRSAwNjQ1OworRkQ3RTtGRDdFO0ZEN0U7MDY0MiAwNjQ1IDA2MkQ7MDY0MiAwNjQ1IDA2MkQ7CitGRDdGO0ZEN0Y7RkQ3RjswNjQyIDA2NDUgMDY0NTswNjQyIDA2NDUgMDY0NTsKK0ZEODA7RkQ4MDtGRDgwOzA2NDQgMDYyRCAwNjQ1OzA2NDQgMDYyRCAwNjQ1OworRkQ4MTtGRDgxO0ZEODE7MDY0NCAwNjJEIDA2NEE7MDY0NCAwNjJEIDA2NEE7CitGRDgyO0ZEODI7RkQ4MjswNjQ0IDA2MkQgMDY0OTswNjQ0IDA2MkQgMDY0OTsKK0ZEODM7RkQ4MztGRDgzOzA2NDQgMDYyQyAwNjJDOzA2NDQgMDYyQyAwNjJDOworRkQ4NDtGRDg0O0ZEODQ7MDY0NCAwNjJDIDA2MkM7MDY0NCAwNjJDIDA2MkM7CitGRDg1O0ZEODU7RkQ4NTswNjQ0IDA2MkUgMDY0NTswNjQ0IDA2MkUgMDY0NTsKK0ZEODY7RkQ4NjtGRDg2OzA2NDQgMDYyRSAwNjQ1OzA2NDQgMDYyRSAwNjQ1OworRkQ4NztGRDg3O0ZEODc7MDY0NCAwNjQ1IDA2MkQ7MDY0NCAwNjQ1IDA2MkQ7CitGRDg4O0ZEODg7RkQ4ODswNjQ0IDA2NDUgMDYyRDswNjQ0IDA2NDUgMDYyRDsKK0ZEODk7RkQ4OTtGRDg5OzA2NDUgMDYyRCAwNjJDOzA2NDUgMDYyRCAwNjJDOworRkQ4QTtGRDhBO0ZEOEE7MDY0NSAwNjJEIDA2NDU7MDY0NSAwNjJEIDA2NDU7CitGRDhCO0ZEOEI7RkQ4QjswNjQ1IDA2MkQgMDY0QTswNjQ1IDA2MkQgMDY0QTsKK0ZEOEM7RkQ4QztGRDhDOzA2NDUgMDYyQyAwNjJEOzA2NDUgMDYyQyAwNjJEOworRkQ4RDtGRDhEO0ZEOEQ7MDY0NSAwNjJDIDA2NDU7MDY0NSAwNjJDIDA2NDU7CitGRDhFO0ZEOEU7RkQ4RTswNjQ1IDA2MkUgMDYyQzswNjQ1IDA2MkUgMDYyQzsKK0ZEOEY7RkQ4RjtGRDhGOzA2NDUgMDYyRSAwNjQ1OzA2NDUgMDYyRSAwNjQ1OworRkQ5MjtGRDkyO0ZEOTI7MDY0NSAwNjJDIDA2MkU7MDY0NSAwNjJDIDA2MkU7CitGRDkzO0ZEOTM7RkQ5MzswNjQ3IDA2NDUgMDYyQzswNjQ3IDA2NDUgMDYyQzsKK0ZEOTQ7RkQ5NDtGRDk0OzA2NDcgMDY0NSAwNjQ1OzA2NDcgMDY0NSAwNjQ1OworRkQ5NTtGRDk1O0ZEOTU7MDY0NiAwNjJEIDA2NDU7MDY0NiAwNjJEIDA2NDU7CitGRDk2O0ZEOTY7RkQ5NjswNjQ2IDA2MkQgMDY0OTswNjQ2IDA2MkQgMDY0OTsKK0ZEOTc7RkQ5NztGRDk3OzA2NDYgMDYyQyAwNjQ1OzA2NDYgMDYyQyAwNjQ1OworRkQ5ODtGRDk4O0ZEOTg7MDY0NiAwNjJDIDA2NDU7MDY0NiAwNjJDIDA2NDU7CitGRDk5O0ZEOTk7RkQ5OTswNjQ2IDA2MkMgMDY0OTswNjQ2IDA2MkMgMDY0OTsKK0ZEOUE7RkQ5QTtGRDlBOzA2NDYgMDY0NSAwNjRBOzA2NDYgMDY0NSAwNjRBOworRkQ5QjtGRDlCO0ZEOUI7MDY0NiAwNjQ1IDA2NDk7MDY0NiAwNjQ1IDA2NDk7CitGRDlDO0ZEOUM7RkQ5QzswNjRBIDA2NDUgMDY0NTswNjRBIDA2NDUgMDY0NTsKK0ZEOUQ7RkQ5RDtGRDlEOzA2NEEgMDY0NSAwNjQ1OzA2NEEgMDY0NSAwNjQ1OworRkQ5RTtGRDlFO0ZEOUU7MDYyOCAwNjJFIDA2NEE7MDYyOCAwNjJFIDA2NEE7CitGRDlGO0ZEOUY7RkQ5RjswNjJBIDA2MkMgMDY0QTswNjJBIDA2MkMgMDY0QTsKK0ZEQTA7RkRBMDtGREEwOzA2MkEgMDYyQyAwNjQ5OzA2MkEgMDYyQyAwNjQ5OworRkRBMTtGREExO0ZEQTE7MDYyQSAwNjJFIDA2NEE7MDYyQSAwNjJFIDA2NEE7CitGREEyO0ZEQTI7RkRBMjswNjJBIDA2MkUgMDY0OTswNjJBIDA2MkUgMDY0OTsKK0ZEQTM7RkRBMztGREEzOzA2MkEgMDY0NSAwNjRBOzA2MkEgMDY0NSAwNjRBOworRkRBNDtGREE0O0ZEQTQ7MDYyQSAwNjQ1IDA2NDk7MDYyQSAwNjQ1IDA2NDk7CitGREE1O0ZEQTU7RkRBNTswNjJDIDA2NDUgMDY0QTswNjJDIDA2NDUgMDY0QTsKK0ZEQTY7RkRBNjtGREE2OzA2MkMgMDYyRCAwNjQ5OzA2MkMgMDYyRCAwNjQ5OworRkRBNztGREE3O0ZEQTc7MDYyQyAwNjQ1IDA2NDk7MDYyQyAwNjQ1IDA2NDk7CitGREE4O0ZEQTg7RkRBODswNjMzIDA2MkUgMDY0OTswNjMzIDA2MkUgMDY0OTsKK0ZEQTk7RkRBOTtGREE5OzA2MzUgMDYyRCAwNjRBOzA2MzUgMDYyRCAwNjRBOworRkRBQTtGREFBO0ZEQUE7MDYzNCAwNjJEIDA2NEE7MDYzNCAwNjJEIDA2NEE7CitGREFCO0ZEQUI7RkRBQjswNjM2IDA2MkQgMDY0QTswNjM2IDA2MkQgMDY0QTsKK0ZEQUM7RkRBQztGREFDOzA2NDQgMDYyQyAwNjRBOzA2NDQgMDYyQyAwNjRBOworRkRBRDtGREFEO0ZEQUQ7MDY0NCAwNjQ1IDA2NEE7MDY0NCAwNjQ1IDA2NEE7CitGREFFO0ZEQUU7RkRBRTswNjRBIDA2MkQgMDY0QTswNjRBIDA2MkQgMDY0QTsKK0ZEQUY7RkRBRjtGREFGOzA2NEEgMDYyQyAwNjRBOzA2NEEgMDYyQyAwNjRBOworRkRCMDtGREIwO0ZEQjA7MDY0QSAwNjQ1IDA2NEE7MDY0QSAwNjQ1IDA2NEE7CitGREIxO0ZEQjE7RkRCMTswNjQ1IDA2NDUgMDY0QTswNjQ1IDA2NDUgMDY0QTsKK0ZEQjI7RkRCMjtGREIyOzA2NDIgMDY0NSAwNjRBOzA2NDIgMDY0NSAwNjRBOworRkRCMztGREIzO0ZEQjM7MDY0NiAwNjJEIDA2NEE7MDY0NiAwNjJEIDA2NEE7CitGREI0O0ZEQjQ7RkRCNDswNjQyIDA2NDUgMDYyRDswNjQyIDA2NDUgMDYyRDsKK0ZEQjU7RkRCNTtGREI1OzA2NDQgMDYyRCAwNjQ1OzA2NDQgMDYyRCAwNjQ1OworRkRCNjtGREI2O0ZEQjY7MDYzOSAwNjQ1IDA2NEE7MDYzOSAwNjQ1IDA2NEE7CitGREI3O0ZEQjc7RkRCNzswNjQzIDA2NDUgMDY0QTswNjQzIDA2NDUgMDY0QTsKK0ZEQjg7RkRCODtGREI4OzA2NDYgMDYyQyAwNjJEOzA2NDYgMDYyQyAwNjJEOworRkRCOTtGREI5O0ZEQjk7MDY0NSAwNjJFIDA2NEE7MDY0NSAwNjJFIDA2NEE7CitGREJBO0ZEQkE7RkRCQTswNjQ0IDA2MkMgMDY0NTswNjQ0IDA2MkMgMDY0NTsKK0ZEQkI7RkRCQjtGREJCOzA2NDMgMDY0NSAwNjQ1OzA2NDMgMDY0NSAwNjQ1OworRkRCQztGREJDO0ZEQkM7MDY0NCAwNjJDIDA2NDU7MDY0NCAwNjJDIDA2NDU7CitGREJEO0ZEQkQ7RkRCRDswNjQ2IDA2MkMgMDYyRDswNjQ2IDA2MkMgMDYyRDsKK0ZEQkU7RkRCRTtGREJFOzA2MkMgMDYyRCAwNjRBOzA2MkMgMDYyRCAwNjRBOworRkRCRjtGREJGO0ZEQkY7MDYyRCAwNjJDIDA2NEE7MDYyRCAwNjJDIDA2NEE7CitGREMwO0ZEQzA7RkRDMDswNjQ1IDA2MkMgMDY0QTswNjQ1IDA2MkMgMDY0QTsKK0ZEQzE7RkRDMTtGREMxOzA2NDEgMDY0NSAwNjRBOzA2NDEgMDY0NSAwNjRBOworRkRDMjtGREMyO0ZEQzI7MDYyOCAwNjJEIDA2NEE7MDYyOCAwNjJEIDA2NEE7CitGREMzO0ZEQzM7RkRDMzswNjQzIDA2NDUgMDY0NTswNjQzIDA2NDUgMDY0NTsKK0ZEQzQ7RkRDNDtGREM0OzA2MzkgMDYyQyAwNjQ1OzA2MzkgMDYyQyAwNjQ1OworRkRDNTtGREM1O0ZEQzU7MDYzNSAwNjQ1IDA2NDU7MDYzNSAwNjQ1IDA2NDU7CitGREM2O0ZEQzY7RkRDNjswNjMzIDA2MkUgMDY0QTswNjMzIDA2MkUgMDY0QTsKK0ZEQzc7RkRDNztGREM3OzA2NDYgMDYyQyAwNjRBOzA2NDYgMDYyQyAwNjRBOworRkRGMDtGREYwO0ZERjA7MDYzNSAwNjQ0IDA2RDI7MDYzNSAwNjQ0IDA2RDI7CitGREYxO0ZERjE7RkRGMTswNjQyIDA2NDQgMDZEMjswNjQyIDA2NDQgMDZEMjsKK0ZERjI7RkRGMjtGREYyOzA2MjcgMDY0NCAwNjQ0IDA2NDc7MDYyNyAwNjQ0IDA2NDQgMDY0NzsKK0ZERjM7RkRGMztGREYzOzA2MjcgMDY0MyAwNjI4IDA2MzE7MDYyNyAwNjQzIDA2MjggMDYzMTsKK0ZERjQ7RkRGNDtGREY0OzA2NDUgMDYyRCAwNjQ1IDA2MkY7MDY0NSAwNjJEIDA2NDUgMDYyRjsKK0ZERjU7RkRGNTtGREY1OzA2MzUgMDY0NCAwNjM5IDA2NDU7MDYzNSAwNjQ0IDA2MzkgMDY0NTsKK0ZERjY7RkRGNjtGREY2OzA2MzEgMDYzMyAwNjQ4IDA2NDQ7MDYzMSAwNjMzIDA2NDggMDY0NDsKK0ZERjc7RkRGNztGREY3OzA2MzkgMDY0NCAwNjRBIDA2NDc7MDYzOSAwNjQ0IDA2NEEgMDY0NzsKK0ZERjg7RkRGODtGREY4OzA2NDggMDYzMyAwNjQ0IDA2NDU7MDY0OCAwNjMzIDA2NDQgMDY0NTsKK0ZERjk7RkRGOTtGREY5OzA2MzUgMDY0NCAwNjQ5OzA2MzUgMDY0NCAwNjQ5OworRkRGQTtGREZBO0ZERkE7MDYzNSAwNjQ0IDA2NDkgMDAyMCAwNjI3IDA2NDQgMDY0NCAwNjQ3IDAwMjAgMDYzOSAwNjQ0IDA2NEEgMDY0NyAwMDIwIDA2NDggMDYzMyAwNjQ0IDA2NDU7MDYzNSAwNjQ0IDA2NDkgMDAyMCAwNjI3IDA2NDQgMDY0NCAwNjQ3IDAwMjAgMDYzOSAwNjQ0IDA2NEEgMDY0NyAwMDIwIDA2NDggMDYzMyAwNjQ0IDA2NDU7CitGREZCO0ZERkI7RkRGQjswNjJDIDA2NDQgMDAyMCAwNjJDIDA2NDQgMDYyNyAwNjQ0IDA2NDc7MDYyQyAwNjQ0IDAwMjAgMDYyQyAwNjQ0IDA2MjcgMDY0NCAwNjQ3OworRkRGQztGREZDO0ZERkM7MDYzMSAwNkNDIDA2MjcgMDY0NDswNjMxIDA2Q0MgMDYyNyAwNjQ0OworRkUzMDtGRTMwO0ZFMzA7MDAyRSAwMDJFOzAwMkUgMDAyRTsKK0ZFMzE7RkUzMTtGRTMxOzIwMTQ7MjAxNDsKK0ZFMzI7RkUzMjtGRTMyOzIwMTM7MjAxMzsKK0ZFMzM7RkUzMztGRTMzOzAwNUY7MDA1RjsKK0ZFMzQ7RkUzNDtGRTM0OzAwNUY7MDA1RjsKK0ZFMzU7RkUzNTtGRTM1OzAwMjg7MDAyODsKK0ZFMzY7RkUzNjtGRTM2OzAwMjk7MDAyOTsKK0ZFMzc7RkUzNztGRTM3OzAwN0I7MDA3QjsKK0ZFMzg7RkUzODtGRTM4OzAwN0Q7MDA3RDsKK0ZFMzk7RkUzOTtGRTM5OzMwMTQ7MzAxNDsKK0ZFM0E7RkUzQTtGRTNBOzMwMTU7MzAxNTsKK0ZFM0I7RkUzQjtGRTNCOzMwMTA7MzAxMDsKK0ZFM0M7RkUzQztGRTNDOzMwMTE7MzAxMTsKK0ZFM0Q7RkUzRDtGRTNEOzMwMEE7MzAwQTsKK0ZFM0U7RkUzRTtGRTNFOzMwMEI7MzAwQjsKK0ZFM0Y7RkUzRjtGRTNGOzMwMDg7MzAwODsKK0ZFNDA7RkU0MDtGRTQwOzMwMDk7MzAwOTsKK0ZFNDE7RkU0MTtGRTQxOzMwMEM7MzAwQzsKK0ZFNDI7RkU0MjtGRTQyOzMwMEQ7MzAwRDsKK0ZFNDM7RkU0MztGRTQzOzMwMEU7MzAwRTsKK0ZFNDQ7RkU0NDtGRTQ0OzMwMEY7MzAwRjsKK0ZFNDk7RkU0OTtGRTQ5OzAwMjAgMDMwNTswMDIwIDAzMDU7CitGRTRBO0ZFNEE7RkU0QTswMDIwIDAzMDU7MDAyMCAwMzA1OworRkU0QjtGRTRCO0ZFNEI7MDAyMCAwMzA1OzAwMjAgMDMwNTsKK0ZFNEM7RkU0QztGRTRDOzAwMjAgMDMwNTswMDIwIDAzMDU7CitGRTREO0ZFNEQ7RkU0RDswMDVGOzAwNUY7CitGRTRFO0ZFNEU7RkU0RTswMDVGOzAwNUY7CitGRTRGO0ZFNEY7RkU0RjswMDVGOzAwNUY7CitGRTUwO0ZFNTA7RkU1MDswMDJDOzAwMkM7CitGRTUxO0ZFNTE7RkU1MTszMDAxOzMwMDE7CitGRTUyO0ZFNTI7RkU1MjswMDJFOzAwMkU7CitGRTU0O0ZFNTQ7RkU1NDswMDNCOzAwM0I7CitGRTU1O0ZFNTU7RkU1NTswMDNBOzAwM0E7CitGRTU2O0ZFNTY7RkU1NjswMDNGOzAwM0Y7CitGRTU3O0ZFNTc7RkU1NzswMDIxOzAwMjE7CitGRTU4O0ZFNTg7RkU1ODsyMDE0OzIwMTQ7CitGRTU5O0ZFNTk7RkU1OTswMDI4OzAwMjg7CitGRTVBO0ZFNUE7RkU1QTswMDI5OzAwMjk7CitGRTVCO0ZFNUI7RkU1QjswMDdCOzAwN0I7CitGRTVDO0ZFNUM7RkU1QzswMDdEOzAwN0Q7CitGRTVEO0ZFNUQ7RkU1RDszMDE0OzMwMTQ7CitGRTVFO0ZFNUU7RkU1RTszMDE1OzMwMTU7CitGRTVGO0ZFNUY7RkU1RjswMDIzOzAwMjM7CitGRTYwO0ZFNjA7RkU2MDswMDI2OzAwMjY7CitGRTYxO0ZFNjE7RkU2MTswMDJBOzAwMkE7CitGRTYyO0ZFNjI7RkU2MjswMDJCOzAwMkI7CitGRTYzO0ZFNjM7RkU2MzswMDJEOzAwMkQ7CitGRTY0O0ZFNjQ7RkU2NDswMDNDOzAwM0M7CitGRTY1O0ZFNjU7RkU2NTswMDNFOzAwM0U7CitGRTY2O0ZFNjY7RkU2NjswMDNEOzAwM0Q7CitGRTY4O0ZFNjg7RkU2ODswMDVDOzAwNUM7CitGRTY5O0ZFNjk7RkU2OTswMDI0OzAwMjQ7CitGRTZBO0ZFNkE7RkU2QTswMDI1OzAwMjU7CitGRTZCO0ZFNkI7RkU2QjswMDQwOzAwNDA7CitGRTcwO0ZFNzA7RkU3MDswMDIwIDA2NEI7MDAyMCAwNjRCOworRkU3MTtGRTcxO0ZFNzE7MDY0MCAwNjRCOzA2NDAgMDY0QjsKK0ZFNzI7RkU3MjtGRTcyOzAwMjAgMDY0QzswMDIwIDA2NEM7CitGRTc0O0ZFNzQ7RkU3NDswMDIwIDA2NEQ7MDAyMCAwNjREOworRkU3NjtGRTc2O0ZFNzY7MDAyMCAwNjRFOzAwMjAgMDY0RTsKK0ZFNzc7RkU3NztGRTc3OzA2NDAgMDY0RTswNjQwIDA2NEU7CitGRTc4O0ZFNzg7RkU3ODswMDIwIDA2NEY7MDAyMCAwNjRGOworRkU3OTtGRTc5O0ZFNzk7MDY0MCAwNjRGOzA2NDAgMDY0RjsKK0ZFN0E7RkU3QTtGRTdBOzAwMjAgMDY1MDswMDIwIDA2NTA7CitGRTdCO0ZFN0I7RkU3QjswNjQwIDA2NTA7MDY0MCAwNjUwOworRkU3QztGRTdDO0ZFN0M7MDAyMCAwNjUxOzAwMjAgMDY1MTsKK0ZFN0Q7RkU3RDtGRTdEOzA2NDAgMDY1MTswNjQwIDA2NTE7CitGRTdFO0ZFN0U7RkU3RTswMDIwIDA2NTI7MDAyMCAwNjUyOworRkU3RjtGRTdGO0ZFN0Y7MDY0MCAwNjUyOzA2NDAgMDY1MjsKK0ZFODA7RkU4MDtGRTgwOzA2MjE7MDYyMTsKK0ZFODE7RkU4MTtGRTgxOzA2MjI7MDYyNyAwNjUzOworRkU4MjtGRTgyO0ZFODI7MDYyMjswNjI3IDA2NTM7CitGRTgzO0ZFODM7RkU4MzswNjIzOzA2MjcgMDY1NDsKK0ZFODQ7RkU4NDtGRTg0OzA2MjM7MDYyNyAwNjU0OworRkU4NTtGRTg1O0ZFODU7MDYyNDswNjQ4IDA2NTQ7CitGRTg2O0ZFODY7RkU4NjswNjI0OzA2NDggMDY1NDsKK0ZFODc7RkU4NztGRTg3OzA2MjU7MDYyNyAwNjU1OworRkU4ODtGRTg4O0ZFODg7MDYyNTswNjI3IDA2NTU7CitGRTg5O0ZFODk7RkU4OTswNjI2OzA2NEEgMDY1NDsKK0ZFOEE7RkU4QTtGRThBOzA2MjY7MDY0QSAwNjU0OworRkU4QjtGRThCO0ZFOEI7MDYyNjswNjRBIDA2NTQ7CitGRThDO0ZFOEM7RkU4QzswNjI2OzA2NEEgMDY1NDsKK0ZFOEQ7RkU4RDtGRThEOzA2Mjc7MDYyNzsKK0ZFOEU7RkU4RTtGRThFOzA2Mjc7MDYyNzsKK0ZFOEY7RkU4RjtGRThGOzA2Mjg7MDYyODsKK0ZFOTA7RkU5MDtGRTkwOzA2Mjg7MDYyODsKK0ZFOTE7RkU5MTtGRTkxOzA2Mjg7MDYyODsKK0ZFOTI7RkU5MjtGRTkyOzA2Mjg7MDYyODsKK0ZFOTM7RkU5MztGRTkzOzA2Mjk7MDYyOTsKK0ZFOTQ7RkU5NDtGRTk0OzA2Mjk7MDYyOTsKK0ZFOTU7RkU5NTtGRTk1OzA2MkE7MDYyQTsKK0ZFOTY7RkU5NjtGRTk2OzA2MkE7MDYyQTsKK0ZFOTc7RkU5NztGRTk3OzA2MkE7MDYyQTsKK0ZFOTg7RkU5ODtGRTk4OzA2MkE7MDYyQTsKK0ZFOTk7RkU5OTtGRTk5OzA2MkI7MDYyQjsKK0ZFOUE7RkU5QTtGRTlBOzA2MkI7MDYyQjsKK0ZFOUI7RkU5QjtGRTlCOzA2MkI7MDYyQjsKK0ZFOUM7RkU5QztGRTlDOzA2MkI7MDYyQjsKK0ZFOUQ7RkU5RDtGRTlEOzA2MkM7MDYyQzsKK0ZFOUU7RkU5RTtGRTlFOzA2MkM7MDYyQzsKK0ZFOUY7RkU5RjtGRTlGOzA2MkM7MDYyQzsKK0ZFQTA7RkVBMDtGRUEwOzA2MkM7MDYyQzsKK0ZFQTE7RkVBMTtGRUExOzA2MkQ7MDYyRDsKK0ZFQTI7RkVBMjtGRUEyOzA2MkQ7MDYyRDsKK0ZFQTM7RkVBMztGRUEzOzA2MkQ7MDYyRDsKK0ZFQTQ7RkVBNDtGRUE0OzA2MkQ7MDYyRDsKK0ZFQTU7RkVBNTtGRUE1OzA2MkU7MDYyRTsKK0ZFQTY7RkVBNjtGRUE2OzA2MkU7MDYyRTsKK0ZFQTc7RkVBNztGRUE3OzA2MkU7MDYyRTsKK0ZFQTg7RkVBODtGRUE4OzA2MkU7MDYyRTsKK0ZFQTk7RkVBOTtGRUE5OzA2MkY7MDYyRjsKK0ZFQUE7RkVBQTtGRUFBOzA2MkY7MDYyRjsKK0ZFQUI7RkVBQjtGRUFCOzA2MzA7MDYzMDsKK0ZFQUM7RkVBQztGRUFDOzA2MzA7MDYzMDsKK0ZFQUQ7RkVBRDtGRUFEOzA2MzE7MDYzMTsKK0ZFQUU7RkVBRTtGRUFFOzA2MzE7MDYzMTsKK0ZFQUY7RkVBRjtGRUFGOzA2MzI7MDYzMjsKK0ZFQjA7RkVCMDtGRUIwOzA2MzI7MDYzMjsKK0ZFQjE7RkVCMTtGRUIxOzA2MzM7MDYzMzsKK0ZFQjI7RkVCMjtGRUIyOzA2MzM7MDYzMzsKK0ZFQjM7RkVCMztGRUIzOzA2MzM7MDYzMzsKK0ZFQjQ7RkVCNDtGRUI0OzA2MzM7MDYzMzsKK0ZFQjU7RkVCNTtGRUI1OzA2MzQ7MDYzNDsKK0ZFQjY7RkVCNjtGRUI2OzA2MzQ7MDYzNDsKK0ZFQjc7RkVCNztGRUI3OzA2MzQ7MDYzNDsKK0ZFQjg7RkVCODtGRUI4OzA2MzQ7MDYzNDsKK0ZFQjk7RkVCOTtGRUI5OzA2MzU7MDYzNTsKK0ZFQkE7RkVCQTtGRUJBOzA2MzU7MDYzNTsKK0ZFQkI7RkVCQjtGRUJCOzA2MzU7MDYzNTsKK0ZFQkM7RkVCQztGRUJDOzA2MzU7MDYzNTsKK0ZFQkQ7RkVCRDtGRUJEOzA2MzY7MDYzNjsKK0ZFQkU7RkVCRTtGRUJFOzA2MzY7MDYzNjsKK0ZFQkY7RkVCRjtGRUJGOzA2MzY7MDYzNjsKK0ZFQzA7RkVDMDtGRUMwOzA2MzY7MDYzNjsKK0ZFQzE7RkVDMTtGRUMxOzA2Mzc7MDYzNzsKK0ZFQzI7RkVDMjtGRUMyOzA2Mzc7MDYzNzsKK0ZFQzM7RkVDMztGRUMzOzA2Mzc7MDYzNzsKK0ZFQzQ7RkVDNDtGRUM0OzA2Mzc7MDYzNzsKK0ZFQzU7RkVDNTtGRUM1OzA2Mzg7MDYzODsKK0ZFQzY7RkVDNjtGRUM2OzA2Mzg7MDYzODsKK0ZFQzc7RkVDNztGRUM3OzA2Mzg7MDYzODsKK0ZFQzg7RkVDODtGRUM4OzA2Mzg7MDYzODsKK0ZFQzk7RkVDOTtGRUM5OzA2Mzk7MDYzOTsKK0ZFQ0E7RkVDQTtGRUNBOzA2Mzk7MDYzOTsKK0ZFQ0I7RkVDQjtGRUNCOzA2Mzk7MDYzOTsKK0ZFQ0M7RkVDQztGRUNDOzA2Mzk7MDYzOTsKK0ZFQ0Q7RkVDRDtGRUNEOzA2M0E7MDYzQTsKK0ZFQ0U7RkVDRTtGRUNFOzA2M0E7MDYzQTsKK0ZFQ0Y7RkVDRjtGRUNGOzA2M0E7MDYzQTsKK0ZFRDA7RkVEMDtGRUQwOzA2M0E7MDYzQTsKK0ZFRDE7RkVEMTtGRUQxOzA2NDE7MDY0MTsKK0ZFRDI7RkVEMjtGRUQyOzA2NDE7MDY0MTsKK0ZFRDM7RkVEMztGRUQzOzA2NDE7MDY0MTsKK0ZFRDQ7RkVENDtGRUQ0OzA2NDE7MDY0MTsKK0ZFRDU7RkVENTtGRUQ1OzA2NDI7MDY0MjsKK0ZFRDY7RkVENjtGRUQ2OzA2NDI7MDY0MjsKK0ZFRDc7RkVENztGRUQ3OzA2NDI7MDY0MjsKK0ZFRDg7RkVEODtGRUQ4OzA2NDI7MDY0MjsKK0ZFRDk7RkVEOTtGRUQ5OzA2NDM7MDY0MzsKK0ZFREE7RkVEQTtGRURBOzA2NDM7MDY0MzsKK0ZFREI7RkVEQjtGRURCOzA2NDM7MDY0MzsKK0ZFREM7RkVEQztGRURDOzA2NDM7MDY0MzsKK0ZFREQ7RkVERDtGRUREOzA2NDQ7MDY0NDsKK0ZFREU7RkVERTtGRURFOzA2NDQ7MDY0NDsKK0ZFREY7RkVERjtGRURGOzA2NDQ7MDY0NDsKK0ZFRTA7RkVFMDtGRUUwOzA2NDQ7MDY0NDsKK0ZFRTE7RkVFMTtGRUUxOzA2NDU7MDY0NTsKK0ZFRTI7RkVFMjtGRUUyOzA2NDU7MDY0NTsKK0ZFRTM7RkVFMztGRUUzOzA2NDU7MDY0NTsKK0ZFRTQ7RkVFNDtGRUU0OzA2NDU7MDY0NTsKK0ZFRTU7RkVFNTtGRUU1OzA2NDY7MDY0NjsKK0ZFRTY7RkVFNjtGRUU2OzA2NDY7MDY0NjsKK0ZFRTc7RkVFNztGRUU3OzA2NDY7MDY0NjsKK0ZFRTg7RkVFODtGRUU4OzA2NDY7MDY0NjsKK0ZFRTk7RkVFOTtGRUU5OzA2NDc7MDY0NzsKK0ZFRUE7RkVFQTtGRUVBOzA2NDc7MDY0NzsKK0ZFRUI7RkVFQjtGRUVCOzA2NDc7MDY0NzsKK0ZFRUM7RkVFQztGRUVDOzA2NDc7MDY0NzsKK0ZFRUQ7RkVFRDtGRUVEOzA2NDg7MDY0ODsKK0ZFRUU7RkVFRTtGRUVFOzA2NDg7MDY0ODsKK0ZFRUY7RkVFRjtGRUVGOzA2NDk7MDY0OTsKK0ZFRjA7RkVGMDtGRUYwOzA2NDk7MDY0OTsKK0ZFRjE7RkVGMTtGRUYxOzA2NEE7MDY0QTsKK0ZFRjI7RkVGMjtGRUYyOzA2NEE7MDY0QTsKK0ZFRjM7RkVGMztGRUYzOzA2NEE7MDY0QTsKK0ZFRjQ7RkVGNDtGRUY0OzA2NEE7MDY0QTsKK0ZFRjU7RkVGNTtGRUY1OzA2NDQgMDYyMjswNjQ0IDA2MjcgMDY1MzsKK0ZFRjY7RkVGNjtGRUY2OzA2NDQgMDYyMjswNjQ0IDA2MjcgMDY1MzsKK0ZFRjc7RkVGNztGRUY3OzA2NDQgMDYyMzswNjQ0IDA2MjcgMDY1NDsKK0ZFRjg7RkVGODtGRUY4OzA2NDQgMDYyMzswNjQ0IDA2MjcgMDY1NDsKK0ZFRjk7RkVGOTtGRUY5OzA2NDQgMDYyNTswNjQ0IDA2MjcgMDY1NTsKK0ZFRkE7RkVGQTtGRUZBOzA2NDQgMDYyNTswNjQ0IDA2MjcgMDY1NTsKK0ZFRkI7RkVGQjtGRUZCOzA2NDQgMDYyNzswNjQ0IDA2Mjc7CitGRUZDO0ZFRkM7RkVGQzswNjQ0IDA2Mjc7MDY0NCAwNjI3OworRkYwMTtGRjAxO0ZGMDE7MDAyMTswMDIxOworRkYwMjtGRjAyO0ZGMDI7MDAyMjswMDIyOworRkYwMztGRjAzO0ZGMDM7MDAyMzswMDIzOworRkYwNDtGRjA0O0ZGMDQ7MDAyNDswMDI0OworRkYwNTtGRjA1O0ZGMDU7MDAyNTswMDI1OworRkYwNjtGRjA2O0ZGMDY7MDAyNjswMDI2OworRkYwNztGRjA3O0ZGMDc7MDAyNzswMDI3OworRkYwODtGRjA4O0ZGMDg7MDAyODswMDI4OworRkYwOTtGRjA5O0ZGMDk7MDAyOTswMDI5OworRkYwQTtGRjBBO0ZGMEE7MDAyQTswMDJBOworRkYwQjtGRjBCO0ZGMEI7MDAyQjswMDJCOworRkYwQztGRjBDO0ZGMEM7MDAyQzswMDJDOworRkYwRDtGRjBEO0ZGMEQ7MDAyRDswMDJEOworRkYwRTtGRjBFO0ZGMEU7MDAyRTswMDJFOworRkYwRjtGRjBGO0ZGMEY7MDAyRjswMDJGOworRkYxMDtGRjEwO0ZGMTA7MDAzMDswMDMwOworRkYxMTtGRjExO0ZGMTE7MDAzMTswMDMxOworRkYxMjtGRjEyO0ZGMTI7MDAzMjswMDMyOworRkYxMztGRjEzO0ZGMTM7MDAzMzswMDMzOworRkYxNDtGRjE0O0ZGMTQ7MDAzNDswMDM0OworRkYxNTtGRjE1O0ZGMTU7MDAzNTswMDM1OworRkYxNjtGRjE2O0ZGMTY7MDAzNjswMDM2OworRkYxNztGRjE3O0ZGMTc7MDAzNzswMDM3OworRkYxODtGRjE4O0ZGMTg7MDAzODswMDM4OworRkYxOTtGRjE5O0ZGMTk7MDAzOTswMDM5OworRkYxQTtGRjFBO0ZGMUE7MDAzQTswMDNBOworRkYxQjtGRjFCO0ZGMUI7MDAzQjswMDNCOworRkYxQztGRjFDO0ZGMUM7MDAzQzswMDNDOworRkYxRDtGRjFEO0ZGMUQ7MDAzRDswMDNEOworRkYxRTtGRjFFO0ZGMUU7MDAzRTswMDNFOworRkYxRjtGRjFGO0ZGMUY7MDAzRjswMDNGOworRkYyMDtGRjIwO0ZGMjA7MDA0MDswMDQwOworRkYyMTtGRjIxO0ZGMjE7MDA0MTswMDQxOworRkYyMjtGRjIyO0ZGMjI7MDA0MjswMDQyOworRkYyMztGRjIzO0ZGMjM7MDA0MzswMDQzOworRkYyNDtGRjI0O0ZGMjQ7MDA0NDswMDQ0OworRkYyNTtGRjI1O0ZGMjU7MDA0NTswMDQ1OworRkYyNjtGRjI2O0ZGMjY7MDA0NjswMDQ2OworRkYyNztGRjI3O0ZGMjc7MDA0NzswMDQ3OworRkYyODtGRjI4O0ZGMjg7MDA0ODswMDQ4OworRkYyOTtGRjI5O0ZGMjk7MDA0OTswMDQ5OworRkYyQTtGRjJBO0ZGMkE7MDA0QTswMDRBOworRkYyQjtGRjJCO0ZGMkI7MDA0QjswMDRCOworRkYyQztGRjJDO0ZGMkM7MDA0QzswMDRDOworRkYyRDtGRjJEO0ZGMkQ7MDA0RDswMDREOworRkYyRTtGRjJFO0ZGMkU7MDA0RTswMDRFOworRkYyRjtGRjJGO0ZGMkY7MDA0RjswMDRGOworRkYzMDtGRjMwO0ZGMzA7MDA1MDswMDUwOworRkYzMTtGRjMxO0ZGMzE7MDA1MTswMDUxOworRkYzMjtGRjMyO0ZGMzI7MDA1MjswMDUyOworRkYzMztGRjMzO0ZGMzM7MDA1MzswMDUzOworRkYzNDtGRjM0O0ZGMzQ7MDA1NDswMDU0OworRkYzNTtGRjM1O0ZGMzU7MDA1NTswMDU1OworRkYzNjtGRjM2O0ZGMzY7MDA1NjswMDU2OworRkYzNztGRjM3O0ZGMzc7MDA1NzswMDU3OworRkYzODtGRjM4O0ZGMzg7MDA1ODswMDU4OworRkYzOTtGRjM5O0ZGMzk7MDA1OTswMDU5OworRkYzQTtGRjNBO0ZGM0E7MDA1QTswMDVBOworRkYzQjtGRjNCO0ZGM0I7MDA1QjswMDVCOworRkYzQztGRjNDO0ZGM0M7MDA1QzswMDVDOworRkYzRDtGRjNEO0ZGM0Q7MDA1RDswMDVEOworRkYzRTtGRjNFO0ZGM0U7MDA1RTswMDVFOworRkYzRjtGRjNGO0ZGM0Y7MDA1RjswMDVGOworRkY0MDtGRjQwO0ZGNDA7MDA2MDswMDYwOworRkY0MTtGRjQxO0ZGNDE7MDA2MTswMDYxOworRkY0MjtGRjQyO0ZGNDI7MDA2MjswMDYyOworRkY0MztGRjQzO0ZGNDM7MDA2MzswMDYzOworRkY0NDtGRjQ0O0ZGNDQ7MDA2NDswMDY0OworRkY0NTtGRjQ1O0ZGNDU7MDA2NTswMDY1OworRkY0NjtGRjQ2O0ZGNDY7MDA2NjswMDY2OworRkY0NztGRjQ3O0ZGNDc7MDA2NzswMDY3OworRkY0ODtGRjQ4O0ZGNDg7MDA2ODswMDY4OworRkY0OTtGRjQ5O0ZGNDk7MDA2OTswMDY5OworRkY0QTtGRjRBO0ZGNEE7MDA2QTswMDZBOworRkY0QjtGRjRCO0ZGNEI7MDA2QjswMDZCOworRkY0QztGRjRDO0ZGNEM7MDA2QzswMDZDOworRkY0RDtGRjREO0ZGNEQ7MDA2RDswMDZEOworRkY0RTtGRjRFO0ZGNEU7MDA2RTswMDZFOworRkY0RjtGRjRGO0ZGNEY7MDA2RjswMDZGOworRkY1MDtGRjUwO0ZGNTA7MDA3MDswMDcwOworRkY1MTtGRjUxO0ZGNTE7MDA3MTswMDcxOworRkY1MjtGRjUyO0ZGNTI7MDA3MjswMDcyOworRkY1MztGRjUzO0ZGNTM7MDA3MzswMDczOworRkY1NDtGRjU0O0ZGNTQ7MDA3NDswMDc0OworRkY1NTtGRjU1O0ZGNTU7MDA3NTswMDc1OworRkY1NjtGRjU2O0ZGNTY7MDA3NjswMDc2OworRkY1NztGRjU3O0ZGNTc7MDA3NzswMDc3OworRkY1ODtGRjU4O0ZGNTg7MDA3ODswMDc4OworRkY1OTtGRjU5O0ZGNTk7MDA3OTswMDc5OworRkY1QTtGRjVBO0ZGNUE7MDA3QTswMDdBOworRkY1QjtGRjVCO0ZGNUI7MDA3QjswMDdCOworRkY1QztGRjVDO0ZGNUM7MDA3QzswMDdDOworRkY1RDtGRjVEO0ZGNUQ7MDA3RDswMDdEOworRkY1RTtGRjVFO0ZGNUU7MDA3RTswMDdFOworRkY1RjtGRjVGO0ZGNUY7Mjk4NTsyOTg1OworRkY2MDtGRjYwO0ZGNjA7Mjk4NjsyOTg2OworRkY2MTtGRjYxO0ZGNjE7MzAwMjszMDAyOworRkY2MjtGRjYyO0ZGNjI7MzAwQzszMDBDOworRkY2MztGRjYzO0ZGNjM7MzAwRDszMDBEOworRkY2NDtGRjY0O0ZGNjQ7MzAwMTszMDAxOworRkY2NTtGRjY1O0ZGNjU7MzBGQjszMEZCOworRkY2NjtGRjY2O0ZGNjY7MzBGMjszMEYyOworRkY2NztGRjY3O0ZGNjc7MzBBMTszMEExOworRkY2ODtGRjY4O0ZGNjg7MzBBMzszMEEzOworRkY2OTtGRjY5O0ZGNjk7MzBBNTszMEE1OworRkY2QTtGRjZBO0ZGNkE7MzBBNzszMEE3OworRkY2QjtGRjZCO0ZGNkI7MzBBOTszMEE5OworRkY2QztGRjZDO0ZGNkM7MzBFMzszMEUzOworRkY2RDtGRjZEO0ZGNkQ7MzBFNTszMEU1OworRkY2RTtGRjZFO0ZGNkU7MzBFNzszMEU3OworRkY2RjtGRjZGO0ZGNkY7MzBDMzszMEMzOworRkY3MDtGRjcwO0ZGNzA7MzBGQzszMEZDOworRkY3MTtGRjcxO0ZGNzE7MzBBMjszMEEyOworRkY3MjtGRjcyO0ZGNzI7MzBBNDszMEE0OworRkY3MztGRjczO0ZGNzM7MzBBNjszMEE2OworRkY3NDtGRjc0O0ZGNzQ7MzBBODszMEE4OworRkY3NTtGRjc1O0ZGNzU7MzBBQTszMEFBOworRkY3NjtGRjc2O0ZGNzY7MzBBQjszMEFCOworRkY3NztGRjc3O0ZGNzc7MzBBRDszMEFEOworRkY3ODtGRjc4O0ZGNzg7MzBBRjszMEFGOworRkY3OTtGRjc5O0ZGNzk7MzBCMTszMEIxOworRkY3QTtGRjdBO0ZGN0E7MzBCMzszMEIzOworRkY3QjtGRjdCO0ZGN0I7MzBCNTszMEI1OworRkY3QztGRjdDO0ZGN0M7MzBCNzszMEI3OworRkY3RDtGRjdEO0ZGN0Q7MzBCOTszMEI5OworRkY3RTtGRjdFO0ZGN0U7MzBCQjszMEJCOworRkY3RjtGRjdGO0ZGN0Y7MzBCRDszMEJEOworRkY4MDtGRjgwO0ZGODA7MzBCRjszMEJGOworRkY4MTtGRjgxO0ZGODE7MzBDMTszMEMxOworRkY4MjtGRjgyO0ZGODI7MzBDNDszMEM0OworRkY4MztGRjgzO0ZGODM7MzBDNjszMEM2OworRkY4NDtGRjg0O0ZGODQ7MzBDODszMEM4OworRkY4NTtGRjg1O0ZGODU7MzBDQTszMENBOworRkY4NjtGRjg2O0ZGODY7MzBDQjszMENCOworRkY4NztGRjg3O0ZGODc7MzBDQzszMENDOworRkY4ODtGRjg4O0ZGODg7MzBDRDszMENEOworRkY4OTtGRjg5O0ZGODk7MzBDRTszMENFOworRkY4QTtGRjhBO0ZGOEE7MzBDRjszMENGOworRkY4QjtGRjhCO0ZGOEI7MzBEMjszMEQyOworRkY4QztGRjhDO0ZGOEM7MzBENTszMEQ1OworRkY4RDtGRjhEO0ZGOEQ7MzBEODszMEQ4OworRkY4RTtGRjhFO0ZGOEU7MzBEQjszMERCOworRkY4RjtGRjhGO0ZGOEY7MzBERTszMERFOworRkY5MDtGRjkwO0ZGOTA7MzBERjszMERGOworRkY5MTtGRjkxO0ZGOTE7MzBFMDszMEUwOworRkY5MjtGRjkyO0ZGOTI7MzBFMTszMEUxOworRkY5MztGRjkzO0ZGOTM7MzBFMjszMEUyOworRkY5NDtGRjk0O0ZGOTQ7MzBFNDszMEU0OworRkY5NTtGRjk1O0ZGOTU7MzBFNjszMEU2OworRkY5NjtGRjk2O0ZGOTY7MzBFODszMEU4OworRkY5NztGRjk3O0ZGOTc7MzBFOTszMEU5OworRkY5ODtGRjk4O0ZGOTg7MzBFQTszMEVBOworRkY5OTtGRjk5O0ZGOTk7MzBFQjszMEVCOworRkY5QTtGRjlBO0ZGOUE7MzBFQzszMEVDOworRkY5QjtGRjlCO0ZGOUI7MzBFRDszMEVEOworRkY5QztGRjlDO0ZGOUM7MzBFRjszMEVGOworRkY5RDtGRjlEO0ZGOUQ7MzBGMzszMEYzOworRkY5RTtGRjlFO0ZGOUU7MzA5OTszMDk5OworRkY5RjtGRjlGO0ZGOUY7MzA5QTszMDlBOworRkZBMDtGRkEwO0ZGQTA7MTE2MDsxMTYwOworRkZBMTtGRkExO0ZGQTE7MTEwMDsxMTAwOworRkZBMjtGRkEyO0ZGQTI7MTEwMTsxMTAxOworRkZBMztGRkEzO0ZGQTM7MTFBQTsxMUFBOworRkZBNDtGRkE0O0ZGQTQ7MTEwMjsxMTAyOworRkZBNTtGRkE1O0ZGQTU7MTFBQzsxMUFDOworRkZBNjtGRkE2O0ZGQTY7MTFBRDsxMUFEOworRkZBNztGRkE3O0ZGQTc7MTEwMzsxMTAzOworRkZBODtGRkE4O0ZGQTg7MTEwNDsxMTA0OworRkZBOTtGRkE5O0ZGQTk7MTEwNTsxMTA1OworRkZBQTtGRkFBO0ZGQUE7MTFCMDsxMUIwOworRkZBQjtGRkFCO0ZGQUI7MTFCMTsxMUIxOworRkZBQztGRkFDO0ZGQUM7MTFCMjsxMUIyOworRkZBRDtGRkFEO0ZGQUQ7MTFCMzsxMUIzOworRkZBRTtGRkFFO0ZGQUU7MTFCNDsxMUI0OworRkZBRjtGRkFGO0ZGQUY7MTFCNTsxMUI1OworRkZCMDtGRkIwO0ZGQjA7MTExQTsxMTFBOworRkZCMTtGRkIxO0ZGQjE7MTEwNjsxMTA2OworRkZCMjtGRkIyO0ZGQjI7MTEwNzsxMTA3OworRkZCMztGRkIzO0ZGQjM7MTEwODsxMTA4OworRkZCNDtGRkI0O0ZGQjQ7MTEyMTsxMTIxOworRkZCNTtGRkI1O0ZGQjU7MTEwOTsxMTA5OworRkZCNjtGRkI2O0ZGQjY7MTEwQTsxMTBBOworRkZCNztGRkI3O0ZGQjc7MTEwQjsxMTBCOworRkZCODtGRkI4O0ZGQjg7MTEwQzsxMTBDOworRkZCOTtGRkI5O0ZGQjk7MTEwRDsxMTBEOworRkZCQTtGRkJBO0ZGQkE7MTEwRTsxMTBFOworRkZCQjtGRkJCO0ZGQkI7MTEwRjsxMTBGOworRkZCQztGRkJDO0ZGQkM7MTExMDsxMTEwOworRkZCRDtGRkJEO0ZGQkQ7MTExMTsxMTExOworRkZCRTtGRkJFO0ZGQkU7MTExMjsxMTEyOworRkZDMjtGRkMyO0ZGQzI7MTE2MTsxMTYxOworRkZDMztGRkMzO0ZGQzM7MTE2MjsxMTYyOworRkZDNDtGRkM0O0ZGQzQ7MTE2MzsxMTYzOworRkZDNTtGRkM1O0ZGQzU7MTE2NDsxMTY0OworRkZDNjtGRkM2O0ZGQzY7MTE2NTsxMTY1OworRkZDNztGRkM3O0ZGQzc7MTE2NjsxMTY2OworRkZDQTtGRkNBO0ZGQ0E7MTE2NzsxMTY3OworRkZDQjtGRkNCO0ZGQ0I7MTE2ODsxMTY4OworRkZDQztGRkNDO0ZGQ0M7MTE2OTsxMTY5OworRkZDRDtGRkNEO0ZGQ0Q7MTE2QTsxMTZBOworRkZDRTtGRkNFO0ZGQ0U7MTE2QjsxMTZCOworRkZDRjtGRkNGO0ZGQ0Y7MTE2QzsxMTZDOworRkZEMjtGRkQyO0ZGRDI7MTE2RDsxMTZEOworRkZEMztGRkQzO0ZGRDM7MTE2RTsxMTZFOworRkZENDtGRkQ0O0ZGRDQ7MTE2RjsxMTZGOworRkZENTtGRkQ1O0ZGRDU7MTE3MDsxMTcwOworRkZENjtGRkQ2O0ZGRDY7MTE3MTsxMTcxOworRkZENztGRkQ3O0ZGRDc7MTE3MjsxMTcyOworRkZEQTtGRkRBO0ZGREE7MTE3MzsxMTczOworRkZEQjtGRkRCO0ZGREI7MTE3NDsxMTc0OworRkZEQztGRkRDO0ZGREM7MTE3NTsxMTc1OworRkZFMDtGRkUwO0ZGRTA7MDBBMjswMEEyOworRkZFMTtGRkUxO0ZGRTE7MDBBMzswMEEzOworRkZFMjtGRkUyO0ZGRTI7MDBBQzswMEFDOworRkZFMztGRkUzO0ZGRTM7MDAyMCAwMzA0OzAwMjAgMDMwNDsKK0ZGRTQ7RkZFNDtGRkU0OzAwQTY7MDBBNjsKK0ZGRTU7RkZFNTtGRkU1OzAwQTU7MDBBNTsKK0ZGRTY7RkZFNjtGRkU2OzIwQTk7MjBBOTsKK0ZGRTg7RkZFODtGRkU4OzI1MDI7MjUwMjsKK0ZGRTk7RkZFOTtGRkU5OzIxOTA7MjE5MDsKK0ZGRUE7RkZFQTtGRkVBOzIxOTE7MjE5MTsKK0ZGRUI7RkZFQjtGRkVCOzIxOTI7MjE5MjsKK0ZGRUM7RkZFQztGRkVDOzIxOTM7MjE5MzsKK0ZGRUQ7RkZFRDtGRkVEOzI1QTA7MjVBMDsKK0ZGRUU7RkZFRTtGRkVFOzI1Q0I7MjVDQjsKKzFEMTVFOzFEMTU3IDFEMTY1OzFEMTU3IDFEMTY1OzFEMTU3IDFEMTY1OzFEMTU3IDFEMTY1OworMUQxNUY7MUQxNTggMUQxNjU7MUQxNTggMUQxNjU7MUQxNTggMUQxNjU7MUQxNTggMUQxNjU7CisxRDE2MDsxRDE1OCAxRDE2NSAxRDE2RTsxRDE1OCAxRDE2NSAxRDE2RTsxRDE1OCAxRDE2NSAxRDE2RTsxRDE1OCAxRDE2NSAxRDE2RTsKKzFEMTYxOzFEMTU4IDFEMTY1IDFEMTZGOzFEMTU4IDFEMTY1IDFEMTZGOzFEMTU4IDFEMTY1IDFEMTZGOzFEMTU4IDFEMTY1IDFEMTZGOworMUQxNjI7MUQxNTggMUQxNjUgMUQxNzA7MUQxNTggMUQxNjUgMUQxNzA7MUQxNTggMUQxNjUgMUQxNzA7MUQxNTggMUQxNjUgMUQxNzA7CisxRDE2MzsxRDE1OCAxRDE2NSAxRDE3MTsxRDE1OCAxRDE2NSAxRDE3MTsxRDE1OCAxRDE2NSAxRDE3MTsxRDE1OCAxRDE2NSAxRDE3MTsKKzFEMTY0OzFEMTU4IDFEMTY1IDFEMTcyOzFEMTU4IDFEMTY1IDFEMTcyOzFEMTU4IDFEMTY1IDFEMTcyOzFEMTU4IDFEMTY1IDFEMTcyOworMUQxQkI7MUQxQjkgMUQxNjU7MUQxQjkgMUQxNjU7MUQxQjkgMUQxNjU7MUQxQjkgMUQxNjU7CisxRDFCQzsxRDFCQSAxRDE2NTsxRDFCQSAxRDE2NTsxRDFCQSAxRDE2NTsxRDFCQSAxRDE2NTsKKzFEMUJEOzFEMUI5IDFEMTY1IDFEMTZFOzFEMUI5IDFEMTY1IDFEMTZFOzFEMUI5IDFEMTY1IDFEMTZFOzFEMUI5IDFEMTY1IDFEMTZFOworMUQxQkU7MUQxQkEgMUQxNjUgMUQxNkU7MUQxQkEgMUQxNjUgMUQxNkU7MUQxQkEgMUQxNjUgMUQxNkU7MUQxQkEgMUQxNjUgMUQxNkU7CisxRDFCRjsxRDFCOSAxRDE2NSAxRDE2RjsxRDFCOSAxRDE2NSAxRDE2RjsxRDFCOSAxRDE2NSAxRDE2RjsxRDFCOSAxRDE2NSAxRDE2RjsKKzFEMUMwOzFEMUJBIDFEMTY1IDFEMTZGOzFEMUJBIDFEMTY1IDFEMTZGOzFEMUJBIDFEMTY1IDFEMTZGOzFEMUJBIDFEMTY1IDFEMTZGOworMUQ0MDA7MUQ0MDA7MUQ0MDA7MDA0MTswMDQxOworMUQ0MDE7MUQ0MDE7MUQ0MDE7MDA0MjswMDQyOworMUQ0MDI7MUQ0MDI7MUQ0MDI7MDA0MzswMDQzOworMUQ0MDM7MUQ0MDM7MUQ0MDM7MDA0NDswMDQ0OworMUQ0MDQ7MUQ0MDQ7MUQ0MDQ7MDA0NTswMDQ1OworMUQ0MDU7MUQ0MDU7MUQ0MDU7MDA0NjswMDQ2OworMUQ0MDY7MUQ0MDY7MUQ0MDY7MDA0NzswMDQ3OworMUQ0MDc7MUQ0MDc7MUQ0MDc7MDA0ODswMDQ4OworMUQ0MDg7MUQ0MDg7MUQ0MDg7MDA0OTswMDQ5OworMUQ0MDk7MUQ0MDk7MUQ0MDk7MDA0QTswMDRBOworMUQ0MEE7MUQ0MEE7MUQ0MEE7MDA0QjswMDRCOworMUQ0MEI7MUQ0MEI7MUQ0MEI7MDA0QzswMDRDOworMUQ0MEM7MUQ0MEM7MUQ0MEM7MDA0RDswMDREOworMUQ0MEQ7MUQ0MEQ7MUQ0MEQ7MDA0RTswMDRFOworMUQ0MEU7MUQ0MEU7MUQ0MEU7MDA0RjswMDRGOworMUQ0MEY7MUQ0MEY7MUQ0MEY7MDA1MDswMDUwOworMUQ0MTA7MUQ0MTA7MUQ0MTA7MDA1MTswMDUxOworMUQ0MTE7MUQ0MTE7MUQ0MTE7MDA1MjswMDUyOworMUQ0MTI7MUQ0MTI7MUQ0MTI7MDA1MzswMDUzOworMUQ0MTM7MUQ0MTM7MUQ0MTM7MDA1NDswMDU0OworMUQ0MTQ7MUQ0MTQ7MUQ0MTQ7MDA1NTswMDU1OworMUQ0MTU7MUQ0MTU7MUQ0MTU7MDA1NjswMDU2OworMUQ0MTY7MUQ0MTY7MUQ0MTY7MDA1NzswMDU3OworMUQ0MTc7MUQ0MTc7MUQ0MTc7MDA1ODswMDU4OworMUQ0MTg7MUQ0MTg7MUQ0MTg7MDA1OTswMDU5OworMUQ0MTk7MUQ0MTk7MUQ0MTk7MDA1QTswMDVBOworMUQ0MUE7MUQ0MUE7MUQ0MUE7MDA2MTswMDYxOworMUQ0MUI7MUQ0MUI7MUQ0MUI7MDA2MjswMDYyOworMUQ0MUM7MUQ0MUM7MUQ0MUM7MDA2MzswMDYzOworMUQ0MUQ7MUQ0MUQ7MUQ0MUQ7MDA2NDswMDY0OworMUQ0MUU7MUQ0MUU7MUQ0MUU7MDA2NTswMDY1OworMUQ0MUY7MUQ0MUY7MUQ0MUY7MDA2NjswMDY2OworMUQ0MjA7MUQ0MjA7MUQ0MjA7MDA2NzswMDY3OworMUQ0MjE7MUQ0MjE7MUQ0MjE7MDA2ODswMDY4OworMUQ0MjI7MUQ0MjI7MUQ0MjI7MDA2OTswMDY5OworMUQ0MjM7MUQ0MjM7MUQ0MjM7MDA2QTswMDZBOworMUQ0MjQ7MUQ0MjQ7MUQ0MjQ7MDA2QjswMDZCOworMUQ0MjU7MUQ0MjU7MUQ0MjU7MDA2QzswMDZDOworMUQ0MjY7MUQ0MjY7MUQ0MjY7MDA2RDswMDZEOworMUQ0Mjc7MUQ0Mjc7MUQ0Mjc7MDA2RTswMDZFOworMUQ0Mjg7MUQ0Mjg7MUQ0Mjg7MDA2RjswMDZGOworMUQ0Mjk7MUQ0Mjk7MUQ0Mjk7MDA3MDswMDcwOworMUQ0MkE7MUQ0MkE7MUQ0MkE7MDA3MTswMDcxOworMUQ0MkI7MUQ0MkI7MUQ0MkI7MDA3MjswMDcyOworMUQ0MkM7MUQ0MkM7MUQ0MkM7MDA3MzswMDczOworMUQ0MkQ7MUQ0MkQ7MUQ0MkQ7MDA3NDswMDc0OworMUQ0MkU7MUQ0MkU7MUQ0MkU7MDA3NTswMDc1OworMUQ0MkY7MUQ0MkY7MUQ0MkY7MDA3NjswMDc2OworMUQ0MzA7MUQ0MzA7MUQ0MzA7MDA3NzswMDc3OworMUQ0MzE7MUQ0MzE7MUQ0MzE7MDA3ODswMDc4OworMUQ0MzI7MUQ0MzI7MUQ0MzI7MDA3OTswMDc5OworMUQ0MzM7MUQ0MzM7MUQ0MzM7MDA3QTswMDdBOworMUQ0MzQ7MUQ0MzQ7MUQ0MzQ7MDA0MTswMDQxOworMUQ0MzU7MUQ0MzU7MUQ0MzU7MDA0MjswMDQyOworMUQ0MzY7MUQ0MzY7MUQ0MzY7MDA0MzswMDQzOworMUQ0Mzc7MUQ0Mzc7MUQ0Mzc7MDA0NDswMDQ0OworMUQ0Mzg7MUQ0Mzg7MUQ0Mzg7MDA0NTswMDQ1OworMUQ0Mzk7MUQ0Mzk7MUQ0Mzk7MDA0NjswMDQ2OworMUQ0M0E7MUQ0M0E7MUQ0M0E7MDA0NzswMDQ3OworMUQ0M0I7MUQ0M0I7MUQ0M0I7MDA0ODswMDQ4OworMUQ0M0M7MUQ0M0M7MUQ0M0M7MDA0OTswMDQ5OworMUQ0M0Q7MUQ0M0Q7MUQ0M0Q7MDA0QTswMDRBOworMUQ0M0U7MUQ0M0U7MUQ0M0U7MDA0QjswMDRCOworMUQ0M0Y7MUQ0M0Y7MUQ0M0Y7MDA0QzswMDRDOworMUQ0NDA7MUQ0NDA7MUQ0NDA7MDA0RDswMDREOworMUQ0NDE7MUQ0NDE7MUQ0NDE7MDA0RTswMDRFOworMUQ0NDI7MUQ0NDI7MUQ0NDI7MDA0RjswMDRGOworMUQ0NDM7MUQ0NDM7MUQ0NDM7MDA1MDswMDUwOworMUQ0NDQ7MUQ0NDQ7MUQ0NDQ7MDA1MTswMDUxOworMUQ0NDU7MUQ0NDU7MUQ0NDU7MDA1MjswMDUyOworMUQ0NDY7MUQ0NDY7MUQ0NDY7MDA1MzswMDUzOworMUQ0NDc7MUQ0NDc7MUQ0NDc7MDA1NDswMDU0OworMUQ0NDg7MUQ0NDg7MUQ0NDg7MDA1NTswMDU1OworMUQ0NDk7MUQ0NDk7MUQ0NDk7MDA1NjswMDU2OworMUQ0NEE7MUQ0NEE7MUQ0NEE7MDA1NzswMDU3OworMUQ0NEI7MUQ0NEI7MUQ0NEI7MDA1ODswMDU4OworMUQ0NEM7MUQ0NEM7MUQ0NEM7MDA1OTswMDU5OworMUQ0NEQ7MUQ0NEQ7MUQ0NEQ7MDA1QTswMDVBOworMUQ0NEU7MUQ0NEU7MUQ0NEU7MDA2MTswMDYxOworMUQ0NEY7MUQ0NEY7MUQ0NEY7MDA2MjswMDYyOworMUQ0NTA7MUQ0NTA7MUQ0NTA7MDA2MzswMDYzOworMUQ0NTE7MUQ0NTE7MUQ0NTE7MDA2NDswMDY0OworMUQ0NTI7MUQ0NTI7MUQ0NTI7MDA2NTswMDY1OworMUQ0NTM7MUQ0NTM7MUQ0NTM7MDA2NjswMDY2OworMUQ0NTQ7MUQ0NTQ7MUQ0NTQ7MDA2NzswMDY3OworMUQ0NTY7MUQ0NTY7MUQ0NTY7MDA2OTswMDY5OworMUQ0NTc7MUQ0NTc7MUQ0NTc7MDA2QTswMDZBOworMUQ0NTg7MUQ0NTg7MUQ0NTg7MDA2QjswMDZCOworMUQ0NTk7MUQ0NTk7MUQ0NTk7MDA2QzswMDZDOworMUQ0NUE7MUQ0NUE7MUQ0NUE7MDA2RDswMDZEOworMUQ0NUI7MUQ0NUI7MUQ0NUI7MDA2RTswMDZFOworMUQ0NUM7MUQ0NUM7MUQ0NUM7MDA2RjswMDZGOworMUQ0NUQ7MUQ0NUQ7MUQ0NUQ7MDA3MDswMDcwOworMUQ0NUU7MUQ0NUU7MUQ0NUU7MDA3MTswMDcxOworMUQ0NUY7MUQ0NUY7MUQ0NUY7MDA3MjswMDcyOworMUQ0NjA7MUQ0NjA7MUQ0NjA7MDA3MzswMDczOworMUQ0NjE7MUQ0NjE7MUQ0NjE7MDA3NDswMDc0OworMUQ0NjI7MUQ0NjI7MUQ0NjI7MDA3NTswMDc1OworMUQ0NjM7MUQ0NjM7MUQ0NjM7MDA3NjswMDc2OworMUQ0NjQ7MUQ0NjQ7MUQ0NjQ7MDA3NzswMDc3OworMUQ0NjU7MUQ0NjU7MUQ0NjU7MDA3ODswMDc4OworMUQ0NjY7MUQ0NjY7MUQ0NjY7MDA3OTswMDc5OworMUQ0Njc7MUQ0Njc7MUQ0Njc7MDA3QTswMDdBOworMUQ0Njg7MUQ0Njg7MUQ0Njg7MDA0MTswMDQxOworMUQ0Njk7MUQ0Njk7MUQ0Njk7MDA0MjswMDQyOworMUQ0NkE7MUQ0NkE7MUQ0NkE7MDA0MzswMDQzOworMUQ0NkI7MUQ0NkI7MUQ0NkI7MDA0NDswMDQ0OworMUQ0NkM7MUQ0NkM7MUQ0NkM7MDA0NTswMDQ1OworMUQ0NkQ7MUQ0NkQ7MUQ0NkQ7MDA0NjswMDQ2OworMUQ0NkU7MUQ0NkU7MUQ0NkU7MDA0NzswMDQ3OworMUQ0NkY7MUQ0NkY7MUQ0NkY7MDA0ODswMDQ4OworMUQ0NzA7MUQ0NzA7MUQ0NzA7MDA0OTswMDQ5OworMUQ0NzE7MUQ0NzE7MUQ0NzE7MDA0QTswMDRBOworMUQ0NzI7MUQ0NzI7MUQ0NzI7MDA0QjswMDRCOworMUQ0NzM7MUQ0NzM7MUQ0NzM7MDA0QzswMDRDOworMUQ0NzQ7MUQ0NzQ7MUQ0NzQ7MDA0RDswMDREOworMUQ0NzU7MUQ0NzU7MUQ0NzU7MDA0RTswMDRFOworMUQ0NzY7MUQ0NzY7MUQ0NzY7MDA0RjswMDRGOworMUQ0Nzc7MUQ0Nzc7MUQ0Nzc7MDA1MDswMDUwOworMUQ0Nzg7MUQ0Nzg7MUQ0Nzg7MDA1MTswMDUxOworMUQ0Nzk7MUQ0Nzk7MUQ0Nzk7MDA1MjswMDUyOworMUQ0N0E7MUQ0N0E7MUQ0N0E7MDA1MzswMDUzOworMUQ0N0I7MUQ0N0I7MUQ0N0I7MDA1NDswMDU0OworMUQ0N0M7MUQ0N0M7MUQ0N0M7MDA1NTswMDU1OworMUQ0N0Q7MUQ0N0Q7MUQ0N0Q7MDA1NjswMDU2OworMUQ0N0U7MUQ0N0U7MUQ0N0U7MDA1NzswMDU3OworMUQ0N0Y7MUQ0N0Y7MUQ0N0Y7MDA1ODswMDU4OworMUQ0ODA7MUQ0ODA7MUQ0ODA7MDA1OTswMDU5OworMUQ0ODE7MUQ0ODE7MUQ0ODE7MDA1QTswMDVBOworMUQ0ODI7MUQ0ODI7MUQ0ODI7MDA2MTswMDYxOworMUQ0ODM7MUQ0ODM7MUQ0ODM7MDA2MjswMDYyOworMUQ0ODQ7MUQ0ODQ7MUQ0ODQ7MDA2MzswMDYzOworMUQ0ODU7MUQ0ODU7MUQ0ODU7MDA2NDswMDY0OworMUQ0ODY7MUQ0ODY7MUQ0ODY7MDA2NTswMDY1OworMUQ0ODc7MUQ0ODc7MUQ0ODc7MDA2NjswMDY2OworMUQ0ODg7MUQ0ODg7MUQ0ODg7MDA2NzswMDY3OworMUQ0ODk7MUQ0ODk7MUQ0ODk7MDA2ODswMDY4OworMUQ0OEE7MUQ0OEE7MUQ0OEE7MDA2OTswMDY5OworMUQ0OEI7MUQ0OEI7MUQ0OEI7MDA2QTswMDZBOworMUQ0OEM7MUQ0OEM7MUQ0OEM7MDA2QjswMDZCOworMUQ0OEQ7MUQ0OEQ7MUQ0OEQ7MDA2QzswMDZDOworMUQ0OEU7MUQ0OEU7MUQ0OEU7MDA2RDswMDZEOworMUQ0OEY7MUQ0OEY7MUQ0OEY7MDA2RTswMDZFOworMUQ0OTA7MUQ0OTA7MUQ0OTA7MDA2RjswMDZGOworMUQ0OTE7MUQ0OTE7MUQ0OTE7MDA3MDswMDcwOworMUQ0OTI7MUQ0OTI7MUQ0OTI7MDA3MTswMDcxOworMUQ0OTM7MUQ0OTM7MUQ0OTM7MDA3MjswMDcyOworMUQ0OTQ7MUQ0OTQ7MUQ0OTQ7MDA3MzswMDczOworMUQ0OTU7MUQ0OTU7MUQ0OTU7MDA3NDswMDc0OworMUQ0OTY7MUQ0OTY7MUQ0OTY7MDA3NTswMDc1OworMUQ0OTc7MUQ0OTc7MUQ0OTc7MDA3NjswMDc2OworMUQ0OTg7MUQ0OTg7MUQ0OTg7MDA3NzswMDc3OworMUQ0OTk7MUQ0OTk7MUQ0OTk7MDA3ODswMDc4OworMUQ0OUE7MUQ0OUE7MUQ0OUE7MDA3OTswMDc5OworMUQ0OUI7MUQ0OUI7MUQ0OUI7MDA3QTswMDdBOworMUQ0OUM7MUQ0OUM7MUQ0OUM7MDA0MTswMDQxOworMUQ0OUU7MUQ0OUU7MUQ0OUU7MDA0MzswMDQzOworMUQ0OUY7MUQ0OUY7MUQ0OUY7MDA0NDswMDQ0OworMUQ0QTI7MUQ0QTI7MUQ0QTI7MDA0NzswMDQ3OworMUQ0QTU7MUQ0QTU7MUQ0QTU7MDA0QTswMDRBOworMUQ0QTY7MUQ0QTY7MUQ0QTY7MDA0QjswMDRCOworMUQ0QTk7MUQ0QTk7MUQ0QTk7MDA0RTswMDRFOworMUQ0QUE7MUQ0QUE7MUQ0QUE7MDA0RjswMDRGOworMUQ0QUI7MUQ0QUI7MUQ0QUI7MDA1MDswMDUwOworMUQ0QUM7MUQ0QUM7MUQ0QUM7MDA1MTswMDUxOworMUQ0QUU7MUQ0QUU7MUQ0QUU7MDA1MzswMDUzOworMUQ0QUY7MUQ0QUY7MUQ0QUY7MDA1NDswMDU0OworMUQ0QjA7MUQ0QjA7MUQ0QjA7MDA1NTswMDU1OworMUQ0QjE7MUQ0QjE7MUQ0QjE7MDA1NjswMDU2OworMUQ0QjI7MUQ0QjI7MUQ0QjI7MDA1NzswMDU3OworMUQ0QjM7MUQ0QjM7MUQ0QjM7MDA1ODswMDU4OworMUQ0QjQ7MUQ0QjQ7MUQ0QjQ7MDA1OTswMDU5OworMUQ0QjU7MUQ0QjU7MUQ0QjU7MDA1QTswMDVBOworMUQ0QjY7MUQ0QjY7MUQ0QjY7MDA2MTswMDYxOworMUQ0Qjc7MUQ0Qjc7MUQ0Qjc7MDA2MjswMDYyOworMUQ0Qjg7MUQ0Qjg7MUQ0Qjg7MDA2MzswMDYzOworMUQ0Qjk7MUQ0Qjk7MUQ0Qjk7MDA2NDswMDY0OworMUQ0QkI7MUQ0QkI7MUQ0QkI7MDA2NjswMDY2OworMUQ0QkQ7MUQ0QkQ7MUQ0QkQ7MDA2ODswMDY4OworMUQ0QkU7MUQ0QkU7MUQ0QkU7MDA2OTswMDY5OworMUQ0QkY7MUQ0QkY7MUQ0QkY7MDA2QTswMDZBOworMUQ0QzA7MUQ0QzA7MUQ0QzA7MDA2QjswMDZCOworMUQ0QzI7MUQ0QzI7MUQ0QzI7MDA2RDswMDZEOworMUQ0QzM7MUQ0QzM7MUQ0QzM7MDA2RTswMDZFOworMUQ0QzU7MUQ0QzU7MUQ0QzU7MDA3MDswMDcwOworMUQ0QzY7MUQ0QzY7MUQ0QzY7MDA3MTswMDcxOworMUQ0Qzc7MUQ0Qzc7MUQ0Qzc7MDA3MjswMDcyOworMUQ0Qzg7MUQ0Qzg7MUQ0Qzg7MDA3MzswMDczOworMUQ0Qzk7MUQ0Qzk7MUQ0Qzk7MDA3NDswMDc0OworMUQ0Q0E7MUQ0Q0E7MUQ0Q0E7MDA3NTswMDc1OworMUQ0Q0I7MUQ0Q0I7MUQ0Q0I7MDA3NjswMDc2OworMUQ0Q0M7MUQ0Q0M7MUQ0Q0M7MDA3NzswMDc3OworMUQ0Q0Q7MUQ0Q0Q7MUQ0Q0Q7MDA3ODswMDc4OworMUQ0Q0U7MUQ0Q0U7MUQ0Q0U7MDA3OTswMDc5OworMUQ0Q0Y7MUQ0Q0Y7MUQ0Q0Y7MDA3QTswMDdBOworMUQ0RDA7MUQ0RDA7MUQ0RDA7MDA0MTswMDQxOworMUQ0RDE7MUQ0RDE7MUQ0RDE7MDA0MjswMDQyOworMUQ0RDI7MUQ0RDI7MUQ0RDI7MDA0MzswMDQzOworMUQ0RDM7MUQ0RDM7MUQ0RDM7MDA0NDswMDQ0OworMUQ0RDQ7MUQ0RDQ7MUQ0RDQ7MDA0NTswMDQ1OworMUQ0RDU7MUQ0RDU7MUQ0RDU7MDA0NjswMDQ2OworMUQ0RDY7MUQ0RDY7MUQ0RDY7MDA0NzswMDQ3OworMUQ0RDc7MUQ0RDc7MUQ0RDc7MDA0ODswMDQ4OworMUQ0RDg7MUQ0RDg7MUQ0RDg7MDA0OTswMDQ5OworMUQ0RDk7MUQ0RDk7MUQ0RDk7MDA0QTswMDRBOworMUQ0REE7MUQ0REE7MUQ0REE7MDA0QjswMDRCOworMUQ0REI7MUQ0REI7MUQ0REI7MDA0QzswMDRDOworMUQ0REM7MUQ0REM7MUQ0REM7MDA0RDswMDREOworMUQ0REQ7MUQ0REQ7MUQ0REQ7MDA0RTswMDRFOworMUQ0REU7MUQ0REU7MUQ0REU7MDA0RjswMDRGOworMUQ0REY7MUQ0REY7MUQ0REY7MDA1MDswMDUwOworMUQ0RTA7MUQ0RTA7MUQ0RTA7MDA1MTswMDUxOworMUQ0RTE7MUQ0RTE7MUQ0RTE7MDA1MjswMDUyOworMUQ0RTI7MUQ0RTI7MUQ0RTI7MDA1MzswMDUzOworMUQ0RTM7MUQ0RTM7MUQ0RTM7MDA1NDswMDU0OworMUQ0RTQ7MUQ0RTQ7MUQ0RTQ7MDA1NTswMDU1OworMUQ0RTU7MUQ0RTU7MUQ0RTU7MDA1NjswMDU2OworMUQ0RTY7MUQ0RTY7MUQ0RTY7MDA1NzswMDU3OworMUQ0RTc7MUQ0RTc7MUQ0RTc7MDA1ODswMDU4OworMUQ0RTg7MUQ0RTg7MUQ0RTg7MDA1OTswMDU5OworMUQ0RTk7MUQ0RTk7MUQ0RTk7MDA1QTswMDVBOworMUQ0RUE7MUQ0RUE7MUQ0RUE7MDA2MTswMDYxOworMUQ0RUI7MUQ0RUI7MUQ0RUI7MDA2MjswMDYyOworMUQ0RUM7MUQ0RUM7MUQ0RUM7MDA2MzswMDYzOworMUQ0RUQ7MUQ0RUQ7MUQ0RUQ7MDA2NDswMDY0OworMUQ0RUU7MUQ0RUU7MUQ0RUU7MDA2NTswMDY1OworMUQ0RUY7MUQ0RUY7MUQ0RUY7MDA2NjswMDY2OworMUQ0RjA7MUQ0RjA7MUQ0RjA7MDA2NzswMDY3OworMUQ0RjE7MUQ0RjE7MUQ0RjE7MDA2ODswMDY4OworMUQ0RjI7MUQ0RjI7MUQ0RjI7MDA2OTswMDY5OworMUQ0RjM7MUQ0RjM7MUQ0RjM7MDA2QTswMDZBOworMUQ0RjQ7MUQ0RjQ7MUQ0RjQ7MDA2QjswMDZCOworMUQ0RjU7MUQ0RjU7MUQ0RjU7MDA2QzswMDZDOworMUQ0RjY7MUQ0RjY7MUQ0RjY7MDA2RDswMDZEOworMUQ0Rjc7MUQ0Rjc7MUQ0Rjc7MDA2RTswMDZFOworMUQ0Rjg7MUQ0Rjg7MUQ0Rjg7MDA2RjswMDZGOworMUQ0Rjk7MUQ0Rjk7MUQ0Rjk7MDA3MDswMDcwOworMUQ0RkE7MUQ0RkE7MUQ0RkE7MDA3MTswMDcxOworMUQ0RkI7MUQ0RkI7MUQ0RkI7MDA3MjswMDcyOworMUQ0RkM7MUQ0RkM7MUQ0RkM7MDA3MzswMDczOworMUQ0RkQ7MUQ0RkQ7MUQ0RkQ7MDA3NDswMDc0OworMUQ0RkU7MUQ0RkU7MUQ0RkU7MDA3NTswMDc1OworMUQ0RkY7MUQ0RkY7MUQ0RkY7MDA3NjswMDc2OworMUQ1MDA7MUQ1MDA7MUQ1MDA7MDA3NzswMDc3OworMUQ1MDE7MUQ1MDE7MUQ1MDE7MDA3ODswMDc4OworMUQ1MDI7MUQ1MDI7MUQ1MDI7MDA3OTswMDc5OworMUQ1MDM7MUQ1MDM7MUQ1MDM7MDA3QTswMDdBOworMUQ1MDQ7MUQ1MDQ7MUQ1MDQ7MDA0MTswMDQxOworMUQ1MDU7MUQ1MDU7MUQ1MDU7MDA0MjswMDQyOworMUQ1MDc7MUQ1MDc7MUQ1MDc7MDA0NDswMDQ0OworMUQ1MDg7MUQ1MDg7MUQ1MDg7MDA0NTswMDQ1OworMUQ1MDk7MUQ1MDk7MUQ1MDk7MDA0NjswMDQ2OworMUQ1MEE7MUQ1MEE7MUQ1MEE7MDA0NzswMDQ3OworMUQ1MEQ7MUQ1MEQ7MUQ1MEQ7MDA0QTswMDRBOworMUQ1MEU7MUQ1MEU7MUQ1MEU7MDA0QjswMDRCOworMUQ1MEY7MUQ1MEY7MUQ1MEY7MDA0QzswMDRDOworMUQ1MTA7MUQ1MTA7MUQ1MTA7MDA0RDswMDREOworMUQ1MTE7MUQ1MTE7MUQ1MTE7MDA0RTswMDRFOworMUQ1MTI7MUQ1MTI7MUQ1MTI7MDA0RjswMDRGOworMUQ1MTM7MUQ1MTM7MUQ1MTM7MDA1MDswMDUwOworMUQ1MTQ7MUQ1MTQ7MUQ1MTQ7MDA1MTswMDUxOworMUQ1MTY7MUQ1MTY7MUQ1MTY7MDA1MzswMDUzOworMUQ1MTc7MUQ1MTc7MUQ1MTc7MDA1NDswMDU0OworMUQ1MTg7MUQ1MTg7MUQ1MTg7MDA1NTswMDU1OworMUQ1MTk7MUQ1MTk7MUQ1MTk7MDA1NjswMDU2OworMUQ1MUE7MUQ1MUE7MUQ1MUE7MDA1NzswMDU3OworMUQ1MUI7MUQ1MUI7MUQ1MUI7MDA1ODswMDU4OworMUQ1MUM7MUQ1MUM7MUQ1MUM7MDA1OTswMDU5OworMUQ1MUU7MUQ1MUU7MUQ1MUU7MDA2MTswMDYxOworMUQ1MUY7MUQ1MUY7MUQ1MUY7MDA2MjswMDYyOworMUQ1MjA7MUQ1MjA7MUQ1MjA7MDA2MzswMDYzOworMUQ1MjE7MUQ1MjE7MUQ1MjE7MDA2NDswMDY0OworMUQ1MjI7MUQ1MjI7MUQ1MjI7MDA2NTswMDY1OworMUQ1MjM7MUQ1MjM7MUQ1MjM7MDA2NjswMDY2OworMUQ1MjQ7MUQ1MjQ7MUQ1MjQ7MDA2NzswMDY3OworMUQ1MjU7MUQ1MjU7MUQ1MjU7MDA2ODswMDY4OworMUQ1MjY7MUQ1MjY7MUQ1MjY7MDA2OTswMDY5OworMUQ1Mjc7MUQ1Mjc7MUQ1Mjc7MDA2QTswMDZBOworMUQ1Mjg7MUQ1Mjg7MUQ1Mjg7MDA2QjswMDZCOworMUQ1Mjk7MUQ1Mjk7MUQ1Mjk7MDA2QzswMDZDOworMUQ1MkE7MUQ1MkE7MUQ1MkE7MDA2RDswMDZEOworMUQ1MkI7MUQ1MkI7MUQ1MkI7MDA2RTswMDZFOworMUQ1MkM7MUQ1MkM7MUQ1MkM7MDA2RjswMDZGOworMUQ1MkQ7MUQ1MkQ7MUQ1MkQ7MDA3MDswMDcwOworMUQ1MkU7MUQ1MkU7MUQ1MkU7MDA3MTswMDcxOworMUQ1MkY7MUQ1MkY7MUQ1MkY7MDA3MjswMDcyOworMUQ1MzA7MUQ1MzA7MUQ1MzA7MDA3MzswMDczOworMUQ1MzE7MUQ1MzE7MUQ1MzE7MDA3NDswMDc0OworMUQ1MzI7MUQ1MzI7MUQ1MzI7MDA3NTswMDc1OworMUQ1MzM7MUQ1MzM7MUQ1MzM7MDA3NjswMDc2OworMUQ1MzQ7MUQ1MzQ7MUQ1MzQ7MDA3NzswMDc3OworMUQ1MzU7MUQ1MzU7MUQ1MzU7MDA3ODswMDc4OworMUQ1MzY7MUQ1MzY7MUQ1MzY7MDA3OTswMDc5OworMUQ1Mzc7MUQ1Mzc7MUQ1Mzc7MDA3QTswMDdBOworMUQ1Mzg7MUQ1Mzg7MUQ1Mzg7MDA0MTswMDQxOworMUQ1Mzk7MUQ1Mzk7MUQ1Mzk7MDA0MjswMDQyOworMUQ1M0I7MUQ1M0I7MUQ1M0I7MDA0NDswMDQ0OworMUQ1M0M7MUQ1M0M7MUQ1M0M7MDA0NTswMDQ1OworMUQ1M0Q7MUQ1M0Q7MUQ1M0Q7MDA0NjswMDQ2OworMUQ1M0U7MUQ1M0U7MUQ1M0U7MDA0NzswMDQ3OworMUQ1NDA7MUQ1NDA7MUQ1NDA7MDA0OTswMDQ5OworMUQ1NDE7MUQ1NDE7MUQ1NDE7MDA0QTswMDRBOworMUQ1NDI7MUQ1NDI7MUQ1NDI7MDA0QjswMDRCOworMUQ1NDM7MUQ1NDM7MUQ1NDM7MDA0QzswMDRDOworMUQ1NDQ7MUQ1NDQ7MUQ1NDQ7MDA0RDswMDREOworMUQ1NDY7MUQ1NDY7MUQ1NDY7MDA0RjswMDRGOworMUQ1NEE7MUQ1NEE7MUQ1NEE7MDA1MzswMDUzOworMUQ1NEI7MUQ1NEI7MUQ1NEI7MDA1NDswMDU0OworMUQ1NEM7MUQ1NEM7MUQ1NEM7MDA1NTswMDU1OworMUQ1NEQ7MUQ1NEQ7MUQ1NEQ7MDA1NjswMDU2OworMUQ1NEU7MUQ1NEU7MUQ1NEU7MDA1NzswMDU3OworMUQ1NEY7MUQ1NEY7MUQ1NEY7MDA1ODswMDU4OworMUQ1NTA7MUQ1NTA7MUQ1NTA7MDA1OTswMDU5OworMUQ1NTI7MUQ1NTI7MUQ1NTI7MDA2MTswMDYxOworMUQ1NTM7MUQ1NTM7MUQ1NTM7MDA2MjswMDYyOworMUQ1NTQ7MUQ1NTQ7MUQ1NTQ7MDA2MzswMDYzOworMUQ1NTU7MUQ1NTU7MUQ1NTU7MDA2NDswMDY0OworMUQ1NTY7MUQ1NTY7MUQ1NTY7MDA2NTswMDY1OworMUQ1NTc7MUQ1NTc7MUQ1NTc7MDA2NjswMDY2OworMUQ1NTg7MUQ1NTg7MUQ1NTg7MDA2NzswMDY3OworMUQ1NTk7MUQ1NTk7MUQ1NTk7MDA2ODswMDY4OworMUQ1NUE7MUQ1NUE7MUQ1NUE7MDA2OTswMDY5OworMUQ1NUI7MUQ1NUI7MUQ1NUI7MDA2QTswMDZBOworMUQ1NUM7MUQ1NUM7MUQ1NUM7MDA2QjswMDZCOworMUQ1NUQ7MUQ1NUQ7MUQ1NUQ7MDA2QzswMDZDOworMUQ1NUU7MUQ1NUU7MUQ1NUU7MDA2RDswMDZEOworMUQ1NUY7MUQ1NUY7MUQ1NUY7MDA2RTswMDZFOworMUQ1NjA7MUQ1NjA7MUQ1NjA7MDA2RjswMDZGOworMUQ1NjE7MUQ1NjE7MUQ1NjE7MDA3MDswMDcwOworMUQ1NjI7MUQ1NjI7MUQ1NjI7MDA3MTswMDcxOworMUQ1NjM7MUQ1NjM7MUQ1NjM7MDA3MjswMDcyOworMUQ1NjQ7MUQ1NjQ7MUQ1NjQ7MDA3MzswMDczOworMUQ1NjU7MUQ1NjU7MUQ1NjU7MDA3NDswMDc0OworMUQ1NjY7MUQ1NjY7MUQ1NjY7MDA3NTswMDc1OworMUQ1Njc7MUQ1Njc7MUQ1Njc7MDA3NjswMDc2OworMUQ1Njg7MUQ1Njg7MUQ1Njg7MDA3NzswMDc3OworMUQ1Njk7MUQ1Njk7MUQ1Njk7MDA3ODswMDc4OworMUQ1NkE7MUQ1NkE7MUQ1NkE7MDA3OTswMDc5OworMUQ1NkI7MUQ1NkI7MUQ1NkI7MDA3QTswMDdBOworMUQ1NkM7MUQ1NkM7MUQ1NkM7MDA0MTswMDQxOworMUQ1NkQ7MUQ1NkQ7MUQ1NkQ7MDA0MjswMDQyOworMUQ1NkU7MUQ1NkU7MUQ1NkU7MDA0MzswMDQzOworMUQ1NkY7MUQ1NkY7MUQ1NkY7MDA0NDswMDQ0OworMUQ1NzA7MUQ1NzA7MUQ1NzA7MDA0NTswMDQ1OworMUQ1NzE7MUQ1NzE7MUQ1NzE7MDA0NjswMDQ2OworMUQ1NzI7MUQ1NzI7MUQ1NzI7MDA0NzswMDQ3OworMUQ1NzM7MUQ1NzM7MUQ1NzM7MDA0ODswMDQ4OworMUQ1NzQ7MUQ1NzQ7MUQ1NzQ7MDA0OTswMDQ5OworMUQ1NzU7MUQ1NzU7MUQ1NzU7MDA0QTswMDRBOworMUQ1NzY7MUQ1NzY7MUQ1NzY7MDA0QjswMDRCOworMUQ1Nzc7MUQ1Nzc7MUQ1Nzc7MDA0QzswMDRDOworMUQ1Nzg7MUQ1Nzg7MUQ1Nzg7MDA0RDswMDREOworMUQ1Nzk7MUQ1Nzk7MUQ1Nzk7MDA0RTswMDRFOworMUQ1N0E7MUQ1N0E7MUQ1N0E7MDA0RjswMDRGOworMUQ1N0I7MUQ1N0I7MUQ1N0I7MDA1MDswMDUwOworMUQ1N0M7MUQ1N0M7MUQ1N0M7MDA1MTswMDUxOworMUQ1N0Q7MUQ1N0Q7MUQ1N0Q7MDA1MjswMDUyOworMUQ1N0U7MUQ1N0U7MUQ1N0U7MDA1MzswMDUzOworMUQ1N0Y7MUQ1N0Y7MUQ1N0Y7MDA1NDswMDU0OworMUQ1ODA7MUQ1ODA7MUQ1ODA7MDA1NTswMDU1OworMUQ1ODE7MUQ1ODE7MUQ1ODE7MDA1NjswMDU2OworMUQ1ODI7MUQ1ODI7MUQ1ODI7MDA1NzswMDU3OworMUQ1ODM7MUQ1ODM7MUQ1ODM7MDA1ODswMDU4OworMUQ1ODQ7MUQ1ODQ7MUQ1ODQ7MDA1OTswMDU5OworMUQ1ODU7MUQ1ODU7MUQ1ODU7MDA1QTswMDVBOworMUQ1ODY7MUQ1ODY7MUQ1ODY7MDA2MTswMDYxOworMUQ1ODc7MUQ1ODc7MUQ1ODc7MDA2MjswMDYyOworMUQ1ODg7MUQ1ODg7MUQ1ODg7MDA2MzswMDYzOworMUQ1ODk7MUQ1ODk7MUQ1ODk7MDA2NDswMDY0OworMUQ1OEE7MUQ1OEE7MUQ1OEE7MDA2NTswMDY1OworMUQ1OEI7MUQ1OEI7MUQ1OEI7MDA2NjswMDY2OworMUQ1OEM7MUQ1OEM7MUQ1OEM7MDA2NzswMDY3OworMUQ1OEQ7MUQ1OEQ7MUQ1OEQ7MDA2ODswMDY4OworMUQ1OEU7MUQ1OEU7MUQ1OEU7MDA2OTswMDY5OworMUQ1OEY7MUQ1OEY7MUQ1OEY7MDA2QTswMDZBOworMUQ1OTA7MUQ1OTA7MUQ1OTA7MDA2QjswMDZCOworMUQ1OTE7MUQ1OTE7MUQ1OTE7MDA2QzswMDZDOworMUQ1OTI7MUQ1OTI7MUQ1OTI7MDA2RDswMDZEOworMUQ1OTM7MUQ1OTM7MUQ1OTM7MDA2RTswMDZFOworMUQ1OTQ7MUQ1OTQ7MUQ1OTQ7MDA2RjswMDZGOworMUQ1OTU7MUQ1OTU7MUQ1OTU7MDA3MDswMDcwOworMUQ1OTY7MUQ1OTY7MUQ1OTY7MDA3MTswMDcxOworMUQ1OTc7MUQ1OTc7MUQ1OTc7MDA3MjswMDcyOworMUQ1OTg7MUQ1OTg7MUQ1OTg7MDA3MzswMDczOworMUQ1OTk7MUQ1OTk7MUQ1OTk7MDA3NDswMDc0OworMUQ1OUE7MUQ1OUE7MUQ1OUE7MDA3NTswMDc1OworMUQ1OUI7MUQ1OUI7MUQ1OUI7MDA3NjswMDc2OworMUQ1OUM7MUQ1OUM7MUQ1OUM7MDA3NzswMDc3OworMUQ1OUQ7MUQ1OUQ7MUQ1OUQ7MDA3ODswMDc4OworMUQ1OUU7MUQ1OUU7MUQ1OUU7MDA3OTswMDc5OworMUQ1OUY7MUQ1OUY7MUQ1OUY7MDA3QTswMDdBOworMUQ1QTA7MUQ1QTA7MUQ1QTA7MDA0MTswMDQxOworMUQ1QTE7MUQ1QTE7MUQ1QTE7MDA0MjswMDQyOworMUQ1QTI7MUQ1QTI7MUQ1QTI7MDA0MzswMDQzOworMUQ1QTM7MUQ1QTM7MUQ1QTM7MDA0NDswMDQ0OworMUQ1QTQ7MUQ1QTQ7MUQ1QTQ7MDA0NTswMDQ1OworMUQ1QTU7MUQ1QTU7MUQ1QTU7MDA0NjswMDQ2OworMUQ1QTY7MUQ1QTY7MUQ1QTY7MDA0NzswMDQ3OworMUQ1QTc7MUQ1QTc7MUQ1QTc7MDA0ODswMDQ4OworMUQ1QTg7MUQ1QTg7MUQ1QTg7MDA0OTswMDQ5OworMUQ1QTk7MUQ1QTk7MUQ1QTk7MDA0QTswMDRBOworMUQ1QUE7MUQ1QUE7MUQ1QUE7MDA0QjswMDRCOworMUQ1QUI7MUQ1QUI7MUQ1QUI7MDA0QzswMDRDOworMUQ1QUM7MUQ1QUM7MUQ1QUM7MDA0RDswMDREOworMUQ1QUQ7MUQ1QUQ7MUQ1QUQ7MDA0RTswMDRFOworMUQ1QUU7MUQ1QUU7MUQ1QUU7MDA0RjswMDRGOworMUQ1QUY7MUQ1QUY7MUQ1QUY7MDA1MDswMDUwOworMUQ1QjA7MUQ1QjA7MUQ1QjA7MDA1MTswMDUxOworMUQ1QjE7MUQ1QjE7MUQ1QjE7MDA1MjswMDUyOworMUQ1QjI7MUQ1QjI7MUQ1QjI7MDA1MzswMDUzOworMUQ1QjM7MUQ1QjM7MUQ1QjM7MDA1NDswMDU0OworMUQ1QjQ7MUQ1QjQ7MUQ1QjQ7MDA1NTswMDU1OworMUQ1QjU7MUQ1QjU7MUQ1QjU7MDA1NjswMDU2OworMUQ1QjY7MUQ1QjY7MUQ1QjY7MDA1NzswMDU3OworMUQ1Qjc7MUQ1Qjc7MUQ1Qjc7MDA1ODswMDU4OworMUQ1Qjg7MUQ1Qjg7MUQ1Qjg7MDA1OTswMDU5OworMUQ1Qjk7MUQ1Qjk7MUQ1Qjk7MDA1QTswMDVBOworMUQ1QkE7MUQ1QkE7MUQ1QkE7MDA2MTswMDYxOworMUQ1QkI7MUQ1QkI7MUQ1QkI7MDA2MjswMDYyOworMUQ1QkM7MUQ1QkM7MUQ1QkM7MDA2MzswMDYzOworMUQ1QkQ7MUQ1QkQ7MUQ1QkQ7MDA2NDswMDY0OworMUQ1QkU7MUQ1QkU7MUQ1QkU7MDA2NTswMDY1OworMUQ1QkY7MUQ1QkY7MUQ1QkY7MDA2NjswMDY2OworMUQ1QzA7MUQ1QzA7MUQ1QzA7MDA2NzswMDY3OworMUQ1QzE7MUQ1QzE7MUQ1QzE7MDA2ODswMDY4OworMUQ1QzI7MUQ1QzI7MUQ1QzI7MDA2OTswMDY5OworMUQ1QzM7MUQ1QzM7MUQ1QzM7MDA2QTswMDZBOworMUQ1QzQ7MUQ1QzQ7MUQ1QzQ7MDA2QjswMDZCOworMUQ1QzU7MUQ1QzU7MUQ1QzU7MDA2QzswMDZDOworMUQ1QzY7MUQ1QzY7MUQ1QzY7MDA2RDswMDZEOworMUQ1Qzc7MUQ1Qzc7MUQ1Qzc7MDA2RTswMDZFOworMUQ1Qzg7MUQ1Qzg7MUQ1Qzg7MDA2RjswMDZGOworMUQ1Qzk7MUQ1Qzk7MUQ1Qzk7MDA3MDswMDcwOworMUQ1Q0E7MUQ1Q0E7MUQ1Q0E7MDA3MTswMDcxOworMUQ1Q0I7MUQ1Q0I7MUQ1Q0I7MDA3MjswMDcyOworMUQ1Q0M7MUQ1Q0M7MUQ1Q0M7MDA3MzswMDczOworMUQ1Q0Q7MUQ1Q0Q7MUQ1Q0Q7MDA3NDswMDc0OworMUQ1Q0U7MUQ1Q0U7MUQ1Q0U7MDA3NTswMDc1OworMUQ1Q0Y7MUQ1Q0Y7MUQ1Q0Y7MDA3NjswMDc2OworMUQ1RDA7MUQ1RDA7MUQ1RDA7MDA3NzswMDc3OworMUQ1RDE7MUQ1RDE7MUQ1RDE7MDA3ODswMDc4OworMUQ1RDI7MUQ1RDI7MUQ1RDI7MDA3OTswMDc5OworMUQ1RDM7MUQ1RDM7MUQ1RDM7MDA3QTswMDdBOworMUQ1RDQ7MUQ1RDQ7MUQ1RDQ7MDA0MTswMDQxOworMUQ1RDU7MUQ1RDU7MUQ1RDU7MDA0MjswMDQyOworMUQ1RDY7MUQ1RDY7MUQ1RDY7MDA0MzswMDQzOworMUQ1RDc7MUQ1RDc7MUQ1RDc7MDA0NDswMDQ0OworMUQ1RDg7MUQ1RDg7MUQ1RDg7MDA0NTswMDQ1OworMUQ1RDk7MUQ1RDk7MUQ1RDk7MDA0NjswMDQ2OworMUQ1REE7MUQ1REE7MUQ1REE7MDA0NzswMDQ3OworMUQ1REI7MUQ1REI7MUQ1REI7MDA0ODswMDQ4OworMUQ1REM7MUQ1REM7MUQ1REM7MDA0OTswMDQ5OworMUQ1REQ7MUQ1REQ7MUQ1REQ7MDA0QTswMDRBOworMUQ1REU7MUQ1REU7MUQ1REU7MDA0QjswMDRCOworMUQ1REY7MUQ1REY7MUQ1REY7MDA0QzswMDRDOworMUQ1RTA7MUQ1RTA7MUQ1RTA7MDA0RDswMDREOworMUQ1RTE7MUQ1RTE7MUQ1RTE7MDA0RTswMDRFOworMUQ1RTI7MUQ1RTI7MUQ1RTI7MDA0RjswMDRGOworMUQ1RTM7MUQ1RTM7MUQ1RTM7MDA1MDswMDUwOworMUQ1RTQ7MUQ1RTQ7MUQ1RTQ7MDA1MTswMDUxOworMUQ1RTU7MUQ1RTU7MUQ1RTU7MDA1MjswMDUyOworMUQ1RTY7MUQ1RTY7MUQ1RTY7MDA1MzswMDUzOworMUQ1RTc7MUQ1RTc7MUQ1RTc7MDA1NDswMDU0OworMUQ1RTg7MUQ1RTg7MUQ1RTg7MDA1NTswMDU1OworMUQ1RTk7MUQ1RTk7MUQ1RTk7MDA1NjswMDU2OworMUQ1RUE7MUQ1RUE7MUQ1RUE7MDA1NzswMDU3OworMUQ1RUI7MUQ1RUI7MUQ1RUI7MDA1ODswMDU4OworMUQ1RUM7MUQ1RUM7MUQ1RUM7MDA1OTswMDU5OworMUQ1RUQ7MUQ1RUQ7MUQ1RUQ7MDA1QTswMDVBOworMUQ1RUU7MUQ1RUU7MUQ1RUU7MDA2MTswMDYxOworMUQ1RUY7MUQ1RUY7MUQ1RUY7MDA2MjswMDYyOworMUQ1RjA7MUQ1RjA7MUQ1RjA7MDA2MzswMDYzOworMUQ1RjE7MUQ1RjE7MUQ1RjE7MDA2NDswMDY0OworMUQ1RjI7MUQ1RjI7MUQ1RjI7MDA2NTswMDY1OworMUQ1RjM7MUQ1RjM7MUQ1RjM7MDA2NjswMDY2OworMUQ1RjQ7MUQ1RjQ7MUQ1RjQ7MDA2NzswMDY3OworMUQ1RjU7MUQ1RjU7MUQ1RjU7MDA2ODswMDY4OworMUQ1RjY7MUQ1RjY7MUQ1RjY7MDA2OTswMDY5OworMUQ1Rjc7MUQ1Rjc7MUQ1Rjc7MDA2QTswMDZBOworMUQ1Rjg7MUQ1Rjg7MUQ1Rjg7MDA2QjswMDZCOworMUQ1Rjk7MUQ1Rjk7MUQ1Rjk7MDA2QzswMDZDOworMUQ1RkE7MUQ1RkE7MUQ1RkE7MDA2RDswMDZEOworMUQ1RkI7MUQ1RkI7MUQ1RkI7MDA2RTswMDZFOworMUQ1RkM7MUQ1RkM7MUQ1RkM7MDA2RjswMDZGOworMUQ1RkQ7MUQ1RkQ7MUQ1RkQ7MDA3MDswMDcwOworMUQ1RkU7MUQ1RkU7MUQ1RkU7MDA3MTswMDcxOworMUQ1RkY7MUQ1RkY7MUQ1RkY7MDA3MjswMDcyOworMUQ2MDA7MUQ2MDA7MUQ2MDA7MDA3MzswMDczOworMUQ2MDE7MUQ2MDE7MUQ2MDE7MDA3NDswMDc0OworMUQ2MDI7MUQ2MDI7MUQ2MDI7MDA3NTswMDc1OworMUQ2MDM7MUQ2MDM7MUQ2MDM7MDA3NjswMDc2OworMUQ2MDQ7MUQ2MDQ7MUQ2MDQ7MDA3NzswMDc3OworMUQ2MDU7MUQ2MDU7MUQ2MDU7MDA3ODswMDc4OworMUQ2MDY7MUQ2MDY7MUQ2MDY7MDA3OTswMDc5OworMUQ2MDc7MUQ2MDc7MUQ2MDc7MDA3QTswMDdBOworMUQ2MDg7MUQ2MDg7MUQ2MDg7MDA0MTswMDQxOworMUQ2MDk7MUQ2MDk7MUQ2MDk7MDA0MjswMDQyOworMUQ2MEE7MUQ2MEE7MUQ2MEE7MDA0MzswMDQzOworMUQ2MEI7MUQ2MEI7MUQ2MEI7MDA0NDswMDQ0OworMUQ2MEM7MUQ2MEM7MUQ2MEM7MDA0NTswMDQ1OworMUQ2MEQ7MUQ2MEQ7MUQ2MEQ7MDA0NjswMDQ2OworMUQ2MEU7MUQ2MEU7MUQ2MEU7MDA0NzswMDQ3OworMUQ2MEY7MUQ2MEY7MUQ2MEY7MDA0ODswMDQ4OworMUQ2MTA7MUQ2MTA7MUQ2MTA7MDA0OTswMDQ5OworMUQ2MTE7MUQ2MTE7MUQ2MTE7MDA0QTswMDRBOworMUQ2MTI7MUQ2MTI7MUQ2MTI7MDA0QjswMDRCOworMUQ2MTM7MUQ2MTM7MUQ2MTM7MDA0QzswMDRDOworMUQ2MTQ7MUQ2MTQ7MUQ2MTQ7MDA0RDswMDREOworMUQ2MTU7MUQ2MTU7MUQ2MTU7MDA0RTswMDRFOworMUQ2MTY7MUQ2MTY7MUQ2MTY7MDA0RjswMDRGOworMUQ2MTc7MUQ2MTc7MUQ2MTc7MDA1MDswMDUwOworMUQ2MTg7MUQ2MTg7MUQ2MTg7MDA1MTswMDUxOworMUQ2MTk7MUQ2MTk7MUQ2MTk7MDA1MjswMDUyOworMUQ2MUE7MUQ2MUE7MUQ2MUE7MDA1MzswMDUzOworMUQ2MUI7MUQ2MUI7MUQ2MUI7MDA1NDswMDU0OworMUQ2MUM7MUQ2MUM7MUQ2MUM7MDA1NTswMDU1OworMUQ2MUQ7MUQ2MUQ7MUQ2MUQ7MDA1NjswMDU2OworMUQ2MUU7MUQ2MUU7MUQ2MUU7MDA1NzswMDU3OworMUQ2MUY7MUQ2MUY7MUQ2MUY7MDA1ODswMDU4OworMUQ2MjA7MUQ2MjA7MUQ2MjA7MDA1OTswMDU5OworMUQ2MjE7MUQ2MjE7MUQ2MjE7MDA1QTswMDVBOworMUQ2MjI7MUQ2MjI7MUQ2MjI7MDA2MTswMDYxOworMUQ2MjM7MUQ2MjM7MUQ2MjM7MDA2MjswMDYyOworMUQ2MjQ7MUQ2MjQ7MUQ2MjQ7MDA2MzswMDYzOworMUQ2MjU7MUQ2MjU7MUQ2MjU7MDA2NDswMDY0OworMUQ2MjY7MUQ2MjY7MUQ2MjY7MDA2NTswMDY1OworMUQ2Mjc7MUQ2Mjc7MUQ2Mjc7MDA2NjswMDY2OworMUQ2Mjg7MUQ2Mjg7MUQ2Mjg7MDA2NzswMDY3OworMUQ2Mjk7MUQ2Mjk7MUQ2Mjk7MDA2ODswMDY4OworMUQ2MkE7MUQ2MkE7MUQ2MkE7MDA2OTswMDY5OworMUQ2MkI7MUQ2MkI7MUQ2MkI7MDA2QTswMDZBOworMUQ2MkM7MUQ2MkM7MUQ2MkM7MDA2QjswMDZCOworMUQ2MkQ7MUQ2MkQ7MUQ2MkQ7MDA2QzswMDZDOworMUQ2MkU7MUQ2MkU7MUQ2MkU7MDA2RDswMDZEOworMUQ2MkY7MUQ2MkY7MUQ2MkY7MDA2RTswMDZFOworMUQ2MzA7MUQ2MzA7MUQ2MzA7MDA2RjswMDZGOworMUQ2MzE7MUQ2MzE7MUQ2MzE7MDA3MDswMDcwOworMUQ2MzI7MUQ2MzI7MUQ2MzI7MDA3MTswMDcxOworMUQ2MzM7MUQ2MzM7MUQ2MzM7MDA3MjswMDcyOworMUQ2MzQ7MUQ2MzQ7MUQ2MzQ7MDA3MzswMDczOworMUQ2MzU7MUQ2MzU7MUQ2MzU7MDA3NDswMDc0OworMUQ2MzY7MUQ2MzY7MUQ2MzY7MDA3NTswMDc1OworMUQ2Mzc7MUQ2Mzc7MUQ2Mzc7MDA3NjswMDc2OworMUQ2Mzg7MUQ2Mzg7MUQ2Mzg7MDA3NzswMDc3OworMUQ2Mzk7MUQ2Mzk7MUQ2Mzk7MDA3ODswMDc4OworMUQ2M0E7MUQ2M0E7MUQ2M0E7MDA3OTswMDc5OworMUQ2M0I7MUQ2M0I7MUQ2M0I7MDA3QTswMDdBOworMUQ2M0M7MUQ2M0M7MUQ2M0M7MDA0MTswMDQxOworMUQ2M0Q7MUQ2M0Q7MUQ2M0Q7MDA0MjswMDQyOworMUQ2M0U7MUQ2M0U7MUQ2M0U7MDA0MzswMDQzOworMUQ2M0Y7MUQ2M0Y7MUQ2M0Y7MDA0NDswMDQ0OworMUQ2NDA7MUQ2NDA7MUQ2NDA7MDA0NTswMDQ1OworMUQ2NDE7MUQ2NDE7MUQ2NDE7MDA0NjswMDQ2OworMUQ2NDI7MUQ2NDI7MUQ2NDI7MDA0NzswMDQ3OworMUQ2NDM7MUQ2NDM7MUQ2NDM7MDA0ODswMDQ4OworMUQ2NDQ7MUQ2NDQ7MUQ2NDQ7MDA0OTswMDQ5OworMUQ2NDU7MUQ2NDU7MUQ2NDU7MDA0QTswMDRBOworMUQ2NDY7MUQ2NDY7MUQ2NDY7MDA0QjswMDRCOworMUQ2NDc7MUQ2NDc7MUQ2NDc7MDA0QzswMDRDOworMUQ2NDg7MUQ2NDg7MUQ2NDg7MDA0RDswMDREOworMUQ2NDk7MUQ2NDk7MUQ2NDk7MDA0RTswMDRFOworMUQ2NEE7MUQ2NEE7MUQ2NEE7MDA0RjswMDRGOworMUQ2NEI7MUQ2NEI7MUQ2NEI7MDA1MDswMDUwOworMUQ2NEM7MUQ2NEM7MUQ2NEM7MDA1MTswMDUxOworMUQ2NEQ7MUQ2NEQ7MUQ2NEQ7MDA1MjswMDUyOworMUQ2NEU7MUQ2NEU7MUQ2NEU7MDA1MzswMDUzOworMUQ2NEY7MUQ2NEY7MUQ2NEY7MDA1NDswMDU0OworMUQ2NTA7MUQ2NTA7MUQ2NTA7MDA1NTswMDU1OworMUQ2NTE7MUQ2NTE7MUQ2NTE7MDA1NjswMDU2OworMUQ2NTI7MUQ2NTI7MUQ2NTI7MDA1NzswMDU3OworMUQ2NTM7MUQ2NTM7MUQ2NTM7MDA1ODswMDU4OworMUQ2NTQ7MUQ2NTQ7MUQ2NTQ7MDA1OTswMDU5OworMUQ2NTU7MUQ2NTU7MUQ2NTU7MDA1QTswMDVBOworMUQ2NTY7MUQ2NTY7MUQ2NTY7MDA2MTswMDYxOworMUQ2NTc7MUQ2NTc7MUQ2NTc7MDA2MjswMDYyOworMUQ2NTg7MUQ2NTg7MUQ2NTg7MDA2MzswMDYzOworMUQ2NTk7MUQ2NTk7MUQ2NTk7MDA2NDswMDY0OworMUQ2NUE7MUQ2NUE7MUQ2NUE7MDA2NTswMDY1OworMUQ2NUI7MUQ2NUI7MUQ2NUI7MDA2NjswMDY2OworMUQ2NUM7MUQ2NUM7MUQ2NUM7MDA2NzswMDY3OworMUQ2NUQ7MUQ2NUQ7MUQ2NUQ7MDA2ODswMDY4OworMUQ2NUU7MUQ2NUU7MUQ2NUU7MDA2OTswMDY5OworMUQ2NUY7MUQ2NUY7MUQ2NUY7MDA2QTswMDZBOworMUQ2NjA7MUQ2NjA7MUQ2NjA7MDA2QjswMDZCOworMUQ2NjE7MUQ2NjE7MUQ2NjE7MDA2QzswMDZDOworMUQ2NjI7MUQ2NjI7MUQ2NjI7MDA2RDswMDZEOworMUQ2NjM7MUQ2NjM7MUQ2NjM7MDA2RTswMDZFOworMUQ2NjQ7MUQ2NjQ7MUQ2NjQ7MDA2RjswMDZGOworMUQ2NjU7MUQ2NjU7MUQ2NjU7MDA3MDswMDcwOworMUQ2NjY7MUQ2NjY7MUQ2NjY7MDA3MTswMDcxOworMUQ2Njc7MUQ2Njc7MUQ2Njc7MDA3MjswMDcyOworMUQ2Njg7MUQ2Njg7MUQ2Njg7MDA3MzswMDczOworMUQ2Njk7MUQ2Njk7MUQ2Njk7MDA3NDswMDc0OworMUQ2NkE7MUQ2NkE7MUQ2NkE7MDA3NTswMDc1OworMUQ2NkI7MUQ2NkI7MUQ2NkI7MDA3NjswMDc2OworMUQ2NkM7MUQ2NkM7MUQ2NkM7MDA3NzswMDc3OworMUQ2NkQ7MUQ2NkQ7MUQ2NkQ7MDA3ODswMDc4OworMUQ2NkU7MUQ2NkU7MUQ2NkU7MDA3OTswMDc5OworMUQ2NkY7MUQ2NkY7MUQ2NkY7MDA3QTswMDdBOworMUQ2NzA7MUQ2NzA7MUQ2NzA7MDA0MTswMDQxOworMUQ2NzE7MUQ2NzE7MUQ2NzE7MDA0MjswMDQyOworMUQ2NzI7MUQ2NzI7MUQ2NzI7MDA0MzswMDQzOworMUQ2NzM7MUQ2NzM7MUQ2NzM7MDA0NDswMDQ0OworMUQ2NzQ7MUQ2NzQ7MUQ2NzQ7MDA0NTswMDQ1OworMUQ2NzU7MUQ2NzU7MUQ2NzU7MDA0NjswMDQ2OworMUQ2NzY7MUQ2NzY7MUQ2NzY7MDA0NzswMDQ3OworMUQ2Nzc7MUQ2Nzc7MUQ2Nzc7MDA0ODswMDQ4OworMUQ2Nzg7MUQ2Nzg7MUQ2Nzg7MDA0OTswMDQ5OworMUQ2Nzk7MUQ2Nzk7MUQ2Nzk7MDA0QTswMDRBOworMUQ2N0E7MUQ2N0E7MUQ2N0E7MDA0QjswMDRCOworMUQ2N0I7MUQ2N0I7MUQ2N0I7MDA0QzswMDRDOworMUQ2N0M7MUQ2N0M7MUQ2N0M7MDA0RDswMDREOworMUQ2N0Q7MUQ2N0Q7MUQ2N0Q7MDA0RTswMDRFOworMUQ2N0U7MUQ2N0U7MUQ2N0U7MDA0RjswMDRGOworMUQ2N0Y7MUQ2N0Y7MUQ2N0Y7MDA1MDswMDUwOworMUQ2ODA7MUQ2ODA7MUQ2ODA7MDA1MTswMDUxOworMUQ2ODE7MUQ2ODE7MUQ2ODE7MDA1MjswMDUyOworMUQ2ODI7MUQ2ODI7MUQ2ODI7MDA1MzswMDUzOworMUQ2ODM7MUQ2ODM7MUQ2ODM7MDA1NDswMDU0OworMUQ2ODQ7MUQ2ODQ7MUQ2ODQ7MDA1NTswMDU1OworMUQ2ODU7MUQ2ODU7MUQ2ODU7MDA1NjswMDU2OworMUQ2ODY7MUQ2ODY7MUQ2ODY7MDA1NzswMDU3OworMUQ2ODc7MUQ2ODc7MUQ2ODc7MDA1ODswMDU4OworMUQ2ODg7MUQ2ODg7MUQ2ODg7MDA1OTswMDU5OworMUQ2ODk7MUQ2ODk7MUQ2ODk7MDA1QTswMDVBOworMUQ2OEE7MUQ2OEE7MUQ2OEE7MDA2MTswMDYxOworMUQ2OEI7MUQ2OEI7MUQ2OEI7MDA2MjswMDYyOworMUQ2OEM7MUQ2OEM7MUQ2OEM7MDA2MzswMDYzOworMUQ2OEQ7MUQ2OEQ7MUQ2OEQ7MDA2NDswMDY0OworMUQ2OEU7MUQ2OEU7MUQ2OEU7MDA2NTswMDY1OworMUQ2OEY7MUQ2OEY7MUQ2OEY7MDA2NjswMDY2OworMUQ2OTA7MUQ2OTA7MUQ2OTA7MDA2NzswMDY3OworMUQ2OTE7MUQ2OTE7MUQ2OTE7MDA2ODswMDY4OworMUQ2OTI7MUQ2OTI7MUQ2OTI7MDA2OTswMDY5OworMUQ2OTM7MUQ2OTM7MUQ2OTM7MDA2QTswMDZBOworMUQ2OTQ7MUQ2OTQ7MUQ2OTQ7MDA2QjswMDZCOworMUQ2OTU7MUQ2OTU7MUQ2OTU7MDA2QzswMDZDOworMUQ2OTY7MUQ2OTY7MUQ2OTY7MDA2RDswMDZEOworMUQ2OTc7MUQ2OTc7MUQ2OTc7MDA2RTswMDZFOworMUQ2OTg7MUQ2OTg7MUQ2OTg7MDA2RjswMDZGOworMUQ2OTk7MUQ2OTk7MUQ2OTk7MDA3MDswMDcwOworMUQ2OUE7MUQ2OUE7MUQ2OUE7MDA3MTswMDcxOworMUQ2OUI7MUQ2OUI7MUQ2OUI7MDA3MjswMDcyOworMUQ2OUM7MUQ2OUM7MUQ2OUM7MDA3MzswMDczOworMUQ2OUQ7MUQ2OUQ7MUQ2OUQ7MDA3NDswMDc0OworMUQ2OUU7MUQ2OUU7MUQ2OUU7MDA3NTswMDc1OworMUQ2OUY7MUQ2OUY7MUQ2OUY7MDA3NjswMDc2OworMUQ2QTA7MUQ2QTA7MUQ2QTA7MDA3NzswMDc3OworMUQ2QTE7MUQ2QTE7MUQ2QTE7MDA3ODswMDc4OworMUQ2QTI7MUQ2QTI7MUQ2QTI7MDA3OTswMDc5OworMUQ2QTM7MUQ2QTM7MUQ2QTM7MDA3QTswMDdBOworMUQ2QTg7MUQ2QTg7MUQ2QTg7MDM5MTswMzkxOworMUQ2QTk7MUQ2QTk7MUQ2QTk7MDM5MjswMzkyOworMUQ2QUE7MUQ2QUE7MUQ2QUE7MDM5MzswMzkzOworMUQ2QUI7MUQ2QUI7MUQ2QUI7MDM5NDswMzk0OworMUQ2QUM7MUQ2QUM7MUQ2QUM7MDM5NTswMzk1OworMUQ2QUQ7MUQ2QUQ7MUQ2QUQ7MDM5NjswMzk2OworMUQ2QUU7MUQ2QUU7MUQ2QUU7MDM5NzswMzk3OworMUQ2QUY7MUQ2QUY7MUQ2QUY7MDM5ODswMzk4OworMUQ2QjA7MUQ2QjA7MUQ2QjA7MDM5OTswMzk5OworMUQ2QjE7MUQ2QjE7MUQ2QjE7MDM5QTswMzlBOworMUQ2QjI7MUQ2QjI7MUQ2QjI7MDM5QjswMzlCOworMUQ2QjM7MUQ2QjM7MUQ2QjM7MDM5QzswMzlDOworMUQ2QjQ7MUQ2QjQ7MUQ2QjQ7MDM5RDswMzlEOworMUQ2QjU7MUQ2QjU7MUQ2QjU7MDM5RTswMzlFOworMUQ2QjY7MUQ2QjY7MUQ2QjY7MDM5RjswMzlGOworMUQ2Qjc7MUQ2Qjc7MUQ2Qjc7MDNBMDswM0EwOworMUQ2Qjg7MUQ2Qjg7MUQ2Qjg7MDNBMTswM0ExOworMUQ2Qjk7MUQ2Qjk7MUQ2Qjk7MDM5ODswMzk4OworMUQ2QkE7MUQ2QkE7MUQ2QkE7MDNBMzswM0EzOworMUQ2QkI7MUQ2QkI7MUQ2QkI7MDNBNDswM0E0OworMUQ2QkM7MUQ2QkM7MUQ2QkM7MDNBNTswM0E1OworMUQ2QkQ7MUQ2QkQ7MUQ2QkQ7MDNBNjswM0E2OworMUQ2QkU7MUQ2QkU7MUQ2QkU7MDNBNzswM0E3OworMUQ2QkY7MUQ2QkY7MUQ2QkY7MDNBODswM0E4OworMUQ2QzA7MUQ2QzA7MUQ2QzA7MDNBOTswM0E5OworMUQ2QzE7MUQ2QzE7MUQ2QzE7MjIwNzsyMjA3OworMUQ2QzI7MUQ2QzI7MUQ2QzI7MDNCMTswM0IxOworMUQ2QzM7MUQ2QzM7MUQ2QzM7MDNCMjswM0IyOworMUQ2QzQ7MUQ2QzQ7MUQ2QzQ7MDNCMzswM0IzOworMUQ2QzU7MUQ2QzU7MUQ2QzU7MDNCNDswM0I0OworMUQ2QzY7MUQ2QzY7MUQ2QzY7MDNCNTswM0I1OworMUQ2Qzc7MUQ2Qzc7MUQ2Qzc7MDNCNjswM0I2OworMUQ2Qzg7MUQ2Qzg7MUQ2Qzg7MDNCNzswM0I3OworMUQ2Qzk7MUQ2Qzk7MUQ2Qzk7MDNCODswM0I4OworMUQ2Q0E7MUQ2Q0E7MUQ2Q0E7MDNCOTswM0I5OworMUQ2Q0I7MUQ2Q0I7MUQ2Q0I7MDNCQTswM0JBOworMUQ2Q0M7MUQ2Q0M7MUQ2Q0M7MDNCQjswM0JCOworMUQ2Q0Q7MUQ2Q0Q7MUQ2Q0Q7MDNCQzswM0JDOworMUQ2Q0U7MUQ2Q0U7MUQ2Q0U7MDNCRDswM0JEOworMUQ2Q0Y7MUQ2Q0Y7MUQ2Q0Y7MDNCRTswM0JFOworMUQ2RDA7MUQ2RDA7MUQ2RDA7MDNCRjswM0JGOworMUQ2RDE7MUQ2RDE7MUQ2RDE7MDNDMDswM0MwOworMUQ2RDI7MUQ2RDI7MUQ2RDI7MDNDMTswM0MxOworMUQ2RDM7MUQ2RDM7MUQ2RDM7MDNDMjswM0MyOworMUQ2RDQ7MUQ2RDQ7MUQ2RDQ7MDNDMzswM0MzOworMUQ2RDU7MUQ2RDU7MUQ2RDU7MDNDNDswM0M0OworMUQ2RDY7MUQ2RDY7MUQ2RDY7MDNDNTswM0M1OworMUQ2RDc7MUQ2RDc7MUQ2RDc7MDNDNjswM0M2OworMUQ2RDg7MUQ2RDg7MUQ2RDg7MDNDNzswM0M3OworMUQ2RDk7MUQ2RDk7MUQ2RDk7MDNDODswM0M4OworMUQ2REE7MUQ2REE7MUQ2REE7MDNDOTswM0M5OworMUQ2REI7MUQ2REI7MUQ2REI7MjIwMjsyMjAyOworMUQ2REM7MUQ2REM7MUQ2REM7MDNCNTswM0I1OworMUQ2REQ7MUQ2REQ7MUQ2REQ7MDNCODswM0I4OworMUQ2REU7MUQ2REU7MUQ2REU7MDNCQTswM0JBOworMUQ2REY7MUQ2REY7MUQ2REY7MDNDNjswM0M2OworMUQ2RTA7MUQ2RTA7MUQ2RTA7MDNDMTswM0MxOworMUQ2RTE7MUQ2RTE7MUQ2RTE7MDNDMDswM0MwOworMUQ2RTI7MUQ2RTI7MUQ2RTI7MDM5MTswMzkxOworMUQ2RTM7MUQ2RTM7MUQ2RTM7MDM5MjswMzkyOworMUQ2RTQ7MUQ2RTQ7MUQ2RTQ7MDM5MzswMzkzOworMUQ2RTU7MUQ2RTU7MUQ2RTU7MDM5NDswMzk0OworMUQ2RTY7MUQ2RTY7MUQ2RTY7MDM5NTswMzk1OworMUQ2RTc7MUQ2RTc7MUQ2RTc7MDM5NjswMzk2OworMUQ2RTg7MUQ2RTg7MUQ2RTg7MDM5NzswMzk3OworMUQ2RTk7MUQ2RTk7MUQ2RTk7MDM5ODswMzk4OworMUQ2RUE7MUQ2RUE7MUQ2RUE7MDM5OTswMzk5OworMUQ2RUI7MUQ2RUI7MUQ2RUI7MDM5QTswMzlBOworMUQ2RUM7MUQ2RUM7MUQ2RUM7MDM5QjswMzlCOworMUQ2RUQ7MUQ2RUQ7MUQ2RUQ7MDM5QzswMzlDOworMUQ2RUU7MUQ2RUU7MUQ2RUU7MDM5RDswMzlEOworMUQ2RUY7MUQ2RUY7MUQ2RUY7MDM5RTswMzlFOworMUQ2RjA7MUQ2RjA7MUQ2RjA7MDM5RjswMzlGOworMUQ2RjE7MUQ2RjE7MUQ2RjE7MDNBMDswM0EwOworMUQ2RjI7MUQ2RjI7MUQ2RjI7MDNBMTswM0ExOworMUQ2RjM7MUQ2RjM7MUQ2RjM7MDM5ODswMzk4OworMUQ2RjQ7MUQ2RjQ7MUQ2RjQ7MDNBMzswM0EzOworMUQ2RjU7MUQ2RjU7MUQ2RjU7MDNBNDswM0E0OworMUQ2RjY7MUQ2RjY7MUQ2RjY7MDNBNTswM0E1OworMUQ2Rjc7MUQ2Rjc7MUQ2Rjc7MDNBNjswM0E2OworMUQ2Rjg7MUQ2Rjg7MUQ2Rjg7MDNBNzswM0E3OworMUQ2Rjk7MUQ2Rjk7MUQ2Rjk7MDNBODswM0E4OworMUQ2RkE7MUQ2RkE7MUQ2RkE7MDNBOTswM0E5OworMUQ2RkI7MUQ2RkI7MUQ2RkI7MjIwNzsyMjA3OworMUQ2RkM7MUQ2RkM7MUQ2RkM7MDNCMTswM0IxOworMUQ2RkQ7MUQ2RkQ7MUQ2RkQ7MDNCMjswM0IyOworMUQ2RkU7MUQ2RkU7MUQ2RkU7MDNCMzswM0IzOworMUQ2RkY7MUQ2RkY7MUQ2RkY7MDNCNDswM0I0OworMUQ3MDA7MUQ3MDA7MUQ3MDA7MDNCNTswM0I1OworMUQ3MDE7MUQ3MDE7MUQ3MDE7MDNCNjswM0I2OworMUQ3MDI7MUQ3MDI7MUQ3MDI7MDNCNzswM0I3OworMUQ3MDM7MUQ3MDM7MUQ3MDM7MDNCODswM0I4OworMUQ3MDQ7MUQ3MDQ7MUQ3MDQ7MDNCOTswM0I5OworMUQ3MDU7MUQ3MDU7MUQ3MDU7MDNCQTswM0JBOworMUQ3MDY7MUQ3MDY7MUQ3MDY7MDNCQjswM0JCOworMUQ3MDc7MUQ3MDc7MUQ3MDc7MDNCQzswM0JDOworMUQ3MDg7MUQ3MDg7MUQ3MDg7MDNCRDswM0JEOworMUQ3MDk7MUQ3MDk7MUQ3MDk7MDNCRTswM0JFOworMUQ3MEE7MUQ3MEE7MUQ3MEE7MDNCRjswM0JGOworMUQ3MEI7MUQ3MEI7MUQ3MEI7MDNDMDswM0MwOworMUQ3MEM7MUQ3MEM7MUQ3MEM7MDNDMTswM0MxOworMUQ3MEQ7MUQ3MEQ7MUQ3MEQ7MDNDMjswM0MyOworMUQ3MEU7MUQ3MEU7MUQ3MEU7MDNDMzswM0MzOworMUQ3MEY7MUQ3MEY7MUQ3MEY7MDNDNDswM0M0OworMUQ3MTA7MUQ3MTA7MUQ3MTA7MDNDNTswM0M1OworMUQ3MTE7MUQ3MTE7MUQ3MTE7MDNDNjswM0M2OworMUQ3MTI7MUQ3MTI7MUQ3MTI7MDNDNzswM0M3OworMUQ3MTM7MUQ3MTM7MUQ3MTM7MDNDODswM0M4OworMUQ3MTQ7MUQ3MTQ7MUQ3MTQ7MDNDOTswM0M5OworMUQ3MTU7MUQ3MTU7MUQ3MTU7MjIwMjsyMjAyOworMUQ3MTY7MUQ3MTY7MUQ3MTY7MDNCNTswM0I1OworMUQ3MTc7MUQ3MTc7MUQ3MTc7MDNCODswM0I4OworMUQ3MTg7MUQ3MTg7MUQ3MTg7MDNCQTswM0JBOworMUQ3MTk7MUQ3MTk7MUQ3MTk7MDNDNjswM0M2OworMUQ3MUE7MUQ3MUE7MUQ3MUE7MDNDMTswM0MxOworMUQ3MUI7MUQ3MUI7MUQ3MUI7MDNDMDswM0MwOworMUQ3MUM7MUQ3MUM7MUQ3MUM7MDM5MTswMzkxOworMUQ3MUQ7MUQ3MUQ7MUQ3MUQ7MDM5MjswMzkyOworMUQ3MUU7MUQ3MUU7MUQ3MUU7MDM5MzswMzkzOworMUQ3MUY7MUQ3MUY7MUQ3MUY7MDM5NDswMzk0OworMUQ3MjA7MUQ3MjA7MUQ3MjA7MDM5NTswMzk1OworMUQ3MjE7MUQ3MjE7MUQ3MjE7MDM5NjswMzk2OworMUQ3MjI7MUQ3MjI7MUQ3MjI7MDM5NzswMzk3OworMUQ3MjM7MUQ3MjM7MUQ3MjM7MDM5ODswMzk4OworMUQ3MjQ7MUQ3MjQ7MUQ3MjQ7MDM5OTswMzk5OworMUQ3MjU7MUQ3MjU7MUQ3MjU7MDM5QTswMzlBOworMUQ3MjY7MUQ3MjY7MUQ3MjY7MDM5QjswMzlCOworMUQ3Mjc7MUQ3Mjc7MUQ3Mjc7MDM5QzswMzlDOworMUQ3Mjg7MUQ3Mjg7MUQ3Mjg7MDM5RDswMzlEOworMUQ3Mjk7MUQ3Mjk7MUQ3Mjk7MDM5RTswMzlFOworMUQ3MkE7MUQ3MkE7MUQ3MkE7MDM5RjswMzlGOworMUQ3MkI7MUQ3MkI7MUQ3MkI7MDNBMDswM0EwOworMUQ3MkM7MUQ3MkM7MUQ3MkM7MDNBMTswM0ExOworMUQ3MkQ7MUQ3MkQ7MUQ3MkQ7MDM5ODswMzk4OworMUQ3MkU7MUQ3MkU7MUQ3MkU7MDNBMzswM0EzOworMUQ3MkY7MUQ3MkY7MUQ3MkY7MDNBNDswM0E0OworMUQ3MzA7MUQ3MzA7MUQ3MzA7MDNBNTswM0E1OworMUQ3MzE7MUQ3MzE7MUQ3MzE7MDNBNjswM0E2OworMUQ3MzI7MUQ3MzI7MUQ3MzI7MDNBNzswM0E3OworMUQ3MzM7MUQ3MzM7MUQ3MzM7MDNBODswM0E4OworMUQ3MzQ7MUQ3MzQ7MUQ3MzQ7MDNBOTswM0E5OworMUQ3MzU7MUQ3MzU7MUQ3MzU7MjIwNzsyMjA3OworMUQ3MzY7MUQ3MzY7MUQ3MzY7MDNCMTswM0IxOworMUQ3Mzc7MUQ3Mzc7MUQ3Mzc7MDNCMjswM0IyOworMUQ3Mzg7MUQ3Mzg7MUQ3Mzg7MDNCMzswM0IzOworMUQ3Mzk7MUQ3Mzk7MUQ3Mzk7MDNCNDswM0I0OworMUQ3M0E7MUQ3M0E7MUQ3M0E7MDNCNTswM0I1OworMUQ3M0I7MUQ3M0I7MUQ3M0I7MDNCNjswM0I2OworMUQ3M0M7MUQ3M0M7MUQ3M0M7MDNCNzswM0I3OworMUQ3M0Q7MUQ3M0Q7MUQ3M0Q7MDNCODswM0I4OworMUQ3M0U7MUQ3M0U7MUQ3M0U7MDNCOTswM0I5OworMUQ3M0Y7MUQ3M0Y7MUQ3M0Y7MDNCQTswM0JBOworMUQ3NDA7MUQ3NDA7MUQ3NDA7MDNCQjswM0JCOworMUQ3NDE7MUQ3NDE7MUQ3NDE7MDNCQzswM0JDOworMUQ3NDI7MUQ3NDI7MUQ3NDI7MDNCRDswM0JEOworMUQ3NDM7MUQ3NDM7MUQ3NDM7MDNCRTswM0JFOworMUQ3NDQ7MUQ3NDQ7MUQ3NDQ7MDNCRjswM0JGOworMUQ3NDU7MUQ3NDU7MUQ3NDU7MDNDMDswM0MwOworMUQ3NDY7MUQ3NDY7MUQ3NDY7MDNDMTswM0MxOworMUQ3NDc7MUQ3NDc7MUQ3NDc7MDNDMjswM0MyOworMUQ3NDg7MUQ3NDg7MUQ3NDg7MDNDMzswM0MzOworMUQ3NDk7MUQ3NDk7MUQ3NDk7MDNDNDswM0M0OworMUQ3NEE7MUQ3NEE7MUQ3NEE7MDNDNTswM0M1OworMUQ3NEI7MUQ3NEI7MUQ3NEI7MDNDNjswM0M2OworMUQ3NEM7MUQ3NEM7MUQ3NEM7MDNDNzswM0M3OworMUQ3NEQ7MUQ3NEQ7MUQ3NEQ7MDNDODswM0M4OworMUQ3NEU7MUQ3NEU7MUQ3NEU7MDNDOTswM0M5OworMUQ3NEY7MUQ3NEY7MUQ3NEY7MjIwMjsyMjAyOworMUQ3NTA7MUQ3NTA7MUQ3NTA7MDNCNTswM0I1OworMUQ3NTE7MUQ3NTE7MUQ3NTE7MDNCODswM0I4OworMUQ3NTI7MUQ3NTI7MUQ3NTI7MDNCQTswM0JBOworMUQ3NTM7MUQ3NTM7MUQ3NTM7MDNDNjswM0M2OworMUQ3NTQ7MUQ3NTQ7MUQ3NTQ7MDNDMTswM0MxOworMUQ3NTU7MUQ3NTU7MUQ3NTU7MDNDMDswM0MwOworMUQ3NTY7MUQ3NTY7MUQ3NTY7MDM5MTswMzkxOworMUQ3NTc7MUQ3NTc7MUQ3NTc7MDM5MjswMzkyOworMUQ3NTg7MUQ3NTg7MUQ3NTg7MDM5MzswMzkzOworMUQ3NTk7MUQ3NTk7MUQ3NTk7MDM5NDswMzk0OworMUQ3NUE7MUQ3NUE7MUQ3NUE7MDM5NTswMzk1OworMUQ3NUI7MUQ3NUI7MUQ3NUI7MDM5NjswMzk2OworMUQ3NUM7MUQ3NUM7MUQ3NUM7MDM5NzswMzk3OworMUQ3NUQ7MUQ3NUQ7MUQ3NUQ7MDM5ODswMzk4OworMUQ3NUU7MUQ3NUU7MUQ3NUU7MDM5OTswMzk5OworMUQ3NUY7MUQ3NUY7MUQ3NUY7MDM5QTswMzlBOworMUQ3NjA7MUQ3NjA7MUQ3NjA7MDM5QjswMzlCOworMUQ3NjE7MUQ3NjE7MUQ3NjE7MDM5QzswMzlDOworMUQ3NjI7MUQ3NjI7MUQ3NjI7MDM5RDswMzlEOworMUQ3NjM7MUQ3NjM7MUQ3NjM7MDM5RTswMzlFOworMUQ3NjQ7MUQ3NjQ7MUQ3NjQ7MDM5RjswMzlGOworMUQ3NjU7MUQ3NjU7MUQ3NjU7MDNBMDswM0EwOworMUQ3NjY7MUQ3NjY7MUQ3NjY7MDNBMTswM0ExOworMUQ3Njc7MUQ3Njc7MUQ3Njc7MDM5ODswMzk4OworMUQ3Njg7MUQ3Njg7MUQ3Njg7MDNBMzswM0EzOworMUQ3Njk7MUQ3Njk7MUQ3Njk7MDNBNDswM0E0OworMUQ3NkE7MUQ3NkE7MUQ3NkE7MDNBNTswM0E1OworMUQ3NkI7MUQ3NkI7MUQ3NkI7MDNBNjswM0E2OworMUQ3NkM7MUQ3NkM7MUQ3NkM7MDNBNzswM0E3OworMUQ3NkQ7MUQ3NkQ7MUQ3NkQ7MDNBODswM0E4OworMUQ3NkU7MUQ3NkU7MUQ3NkU7MDNBOTswM0E5OworMUQ3NkY7MUQ3NkY7MUQ3NkY7MjIwNzsyMjA3OworMUQ3NzA7MUQ3NzA7MUQ3NzA7MDNCMTswM0IxOworMUQ3NzE7MUQ3NzE7MUQ3NzE7MDNCMjswM0IyOworMUQ3NzI7MUQ3NzI7MUQ3NzI7MDNCMzswM0IzOworMUQ3NzM7MUQ3NzM7MUQ3NzM7MDNCNDswM0I0OworMUQ3NzQ7MUQ3NzQ7MUQ3NzQ7MDNCNTswM0I1OworMUQ3NzU7MUQ3NzU7MUQ3NzU7MDNCNjswM0I2OworMUQ3NzY7MUQ3NzY7MUQ3NzY7MDNCNzswM0I3OworMUQ3Nzc7MUQ3Nzc7MUQ3Nzc7MDNCODswM0I4OworMUQ3Nzg7MUQ3Nzg7MUQ3Nzg7MDNCOTswM0I5OworMUQ3Nzk7MUQ3Nzk7MUQ3Nzk7MDNCQTswM0JBOworMUQ3N0E7MUQ3N0E7MUQ3N0E7MDNCQjswM0JCOworMUQ3N0I7MUQ3N0I7MUQ3N0I7MDNCQzswM0JDOworMUQ3N0M7MUQ3N0M7MUQ3N0M7MDNCRDswM0JEOworMUQ3N0Q7MUQ3N0Q7MUQ3N0Q7MDNCRTswM0JFOworMUQ3N0U7MUQ3N0U7MUQ3N0U7MDNCRjswM0JGOworMUQ3N0Y7MUQ3N0Y7MUQ3N0Y7MDNDMDswM0MwOworMUQ3ODA7MUQ3ODA7MUQ3ODA7MDNDMTswM0MxOworMUQ3ODE7MUQ3ODE7MUQ3ODE7MDNDMjswM0MyOworMUQ3ODI7MUQ3ODI7MUQ3ODI7MDNDMzswM0MzOworMUQ3ODM7MUQ3ODM7MUQ3ODM7MDNDNDswM0M0OworMUQ3ODQ7MUQ3ODQ7MUQ3ODQ7MDNDNTswM0M1OworMUQ3ODU7MUQ3ODU7MUQ3ODU7MDNDNjswM0M2OworMUQ3ODY7MUQ3ODY7MUQ3ODY7MDNDNzswM0M3OworMUQ3ODc7MUQ3ODc7MUQ3ODc7MDNDODswM0M4OworMUQ3ODg7MUQ3ODg7MUQ3ODg7MDNDOTswM0M5OworMUQ3ODk7MUQ3ODk7MUQ3ODk7MjIwMjsyMjAyOworMUQ3OEE7MUQ3OEE7MUQ3OEE7MDNCNTswM0I1OworMUQ3OEI7MUQ3OEI7MUQ3OEI7MDNCODswM0I4OworMUQ3OEM7MUQ3OEM7MUQ3OEM7MDNCQTswM0JBOworMUQ3OEQ7MUQ3OEQ7MUQ3OEQ7MDNDNjswM0M2OworMUQ3OEU7MUQ3OEU7MUQ3OEU7MDNDMTswM0MxOworMUQ3OEY7MUQ3OEY7MUQ3OEY7MDNDMDswM0MwOworMUQ3OTA7MUQ3OTA7MUQ3OTA7MDM5MTswMzkxOworMUQ3OTE7MUQ3OTE7MUQ3OTE7MDM5MjswMzkyOworMUQ3OTI7MUQ3OTI7MUQ3OTI7MDM5MzswMzkzOworMUQ3OTM7MUQ3OTM7MUQ3OTM7MDM5NDswMzk0OworMUQ3OTQ7MUQ3OTQ7MUQ3OTQ7MDM5NTswMzk1OworMUQ3OTU7MUQ3OTU7MUQ3OTU7MDM5NjswMzk2OworMUQ3OTY7MUQ3OTY7MUQ3OTY7MDM5NzswMzk3OworMUQ3OTc7MUQ3OTc7MUQ3OTc7MDM5ODswMzk4OworMUQ3OTg7MUQ3OTg7MUQ3OTg7MDM5OTswMzk5OworMUQ3OTk7MUQ3OTk7MUQ3OTk7MDM5QTswMzlBOworMUQ3OUE7MUQ3OUE7MUQ3OUE7MDM5QjswMzlCOworMUQ3OUI7MUQ3OUI7MUQ3OUI7MDM5QzswMzlDOworMUQ3OUM7MUQ3OUM7MUQ3OUM7MDM5RDswMzlEOworMUQ3OUQ7MUQ3OUQ7MUQ3OUQ7MDM5RTswMzlFOworMUQ3OUU7MUQ3OUU7MUQ3OUU7MDM5RjswMzlGOworMUQ3OUY7MUQ3OUY7MUQ3OUY7MDNBMDswM0EwOworMUQ3QTA7MUQ3QTA7MUQ3QTA7MDNBMTswM0ExOworMUQ3QTE7MUQ3QTE7MUQ3QTE7MDM5ODswMzk4OworMUQ3QTI7MUQ3QTI7MUQ3QTI7MDNBMzswM0EzOworMUQ3QTM7MUQ3QTM7MUQ3QTM7MDNBNDswM0E0OworMUQ3QTQ7MUQ3QTQ7MUQ3QTQ7MDNBNTswM0E1OworMUQ3QTU7MUQ3QTU7MUQ3QTU7MDNBNjswM0E2OworMUQ3QTY7MUQ3QTY7MUQ3QTY7MDNBNzswM0E3OworMUQ3QTc7MUQ3QTc7MUQ3QTc7MDNBODswM0E4OworMUQ3QTg7MUQ3QTg7MUQ3QTg7MDNBOTswM0E5OworMUQ3QTk7MUQ3QTk7MUQ3QTk7MjIwNzsyMjA3OworMUQ3QUE7MUQ3QUE7MUQ3QUE7MDNCMTswM0IxOworMUQ3QUI7MUQ3QUI7MUQ3QUI7MDNCMjswM0IyOworMUQ3QUM7MUQ3QUM7MUQ3QUM7MDNCMzswM0IzOworMUQ3QUQ7MUQ3QUQ7MUQ3QUQ7MDNCNDswM0I0OworMUQ3QUU7MUQ3QUU7MUQ3QUU7MDNCNTswM0I1OworMUQ3QUY7MUQ3QUY7MUQ3QUY7MDNCNjswM0I2OworMUQ3QjA7MUQ3QjA7MUQ3QjA7MDNCNzswM0I3OworMUQ3QjE7MUQ3QjE7MUQ3QjE7MDNCODswM0I4OworMUQ3QjI7MUQ3QjI7MUQ3QjI7MDNCOTswM0I5OworMUQ3QjM7MUQ3QjM7MUQ3QjM7MDNCQTswM0JBOworMUQ3QjQ7MUQ3QjQ7MUQ3QjQ7MDNCQjswM0JCOworMUQ3QjU7MUQ3QjU7MUQ3QjU7MDNCQzswM0JDOworMUQ3QjY7MUQ3QjY7MUQ3QjY7MDNCRDswM0JEOworMUQ3Qjc7MUQ3Qjc7MUQ3Qjc7MDNCRTswM0JFOworMUQ3Qjg7MUQ3Qjg7MUQ3Qjg7MDNCRjswM0JGOworMUQ3Qjk7MUQ3Qjk7MUQ3Qjk7MDNDMDswM0MwOworMUQ3QkE7MUQ3QkE7MUQ3QkE7MDNDMTswM0MxOworMUQ3QkI7MUQ3QkI7MUQ3QkI7MDNDMjswM0MyOworMUQ3QkM7MUQ3QkM7MUQ3QkM7MDNDMzswM0MzOworMUQ3QkQ7MUQ3QkQ7MUQ3QkQ7MDNDNDswM0M0OworMUQ3QkU7MUQ3QkU7MUQ3QkU7MDNDNTswM0M1OworMUQ3QkY7MUQ3QkY7MUQ3QkY7MDNDNjswM0M2OworMUQ3QzA7MUQ3QzA7MUQ3QzA7MDNDNzswM0M3OworMUQ3QzE7MUQ3QzE7MUQ3QzE7MDNDODswM0M4OworMUQ3QzI7MUQ3QzI7MUQ3QzI7MDNDOTswM0M5OworMUQ3QzM7MUQ3QzM7MUQ3QzM7MjIwMjsyMjAyOworMUQ3QzQ7MUQ3QzQ7MUQ3QzQ7MDNCNTswM0I1OworMUQ3QzU7MUQ3QzU7MUQ3QzU7MDNCODswM0I4OworMUQ3QzY7MUQ3QzY7MUQ3QzY7MDNCQTswM0JBOworMUQ3Qzc7MUQ3Qzc7MUQ3Qzc7MDNDNjswM0M2OworMUQ3Qzg7MUQ3Qzg7MUQ3Qzg7MDNDMTswM0MxOworMUQ3Qzk7MUQ3Qzk7MUQ3Qzk7MDNDMDswM0MwOworMUQ3Q0U7MUQ3Q0U7MUQ3Q0U7MDAzMDswMDMwOworMUQ3Q0Y7MUQ3Q0Y7MUQ3Q0Y7MDAzMTswMDMxOworMUQ3RDA7MUQ3RDA7MUQ3RDA7MDAzMjswMDMyOworMUQ3RDE7MUQ3RDE7MUQ3RDE7MDAzMzswMDMzOworMUQ3RDI7MUQ3RDI7MUQ3RDI7MDAzNDswMDM0OworMUQ3RDM7MUQ3RDM7MUQ3RDM7MDAzNTswMDM1OworMUQ3RDQ7MUQ3RDQ7MUQ3RDQ7MDAzNjswMDM2OworMUQ3RDU7MUQ3RDU7MUQ3RDU7MDAzNzswMDM3OworMUQ3RDY7MUQ3RDY7MUQ3RDY7MDAzODswMDM4OworMUQ3RDc7MUQ3RDc7MUQ3RDc7MDAzOTswMDM5OworMUQ3RDg7MUQ3RDg7MUQ3RDg7MDAzMDswMDMwOworMUQ3RDk7MUQ3RDk7MUQ3RDk7MDAzMTswMDMxOworMUQ3REE7MUQ3REE7MUQ3REE7MDAzMjswMDMyOworMUQ3REI7MUQ3REI7MUQ3REI7MDAzMzswMDMzOworMUQ3REM7MUQ3REM7MUQ3REM7MDAzNDswMDM0OworMUQ3REQ7MUQ3REQ7MUQ3REQ7MDAzNTswMDM1OworMUQ3REU7MUQ3REU7MUQ3REU7MDAzNjswMDM2OworMUQ3REY7MUQ3REY7MUQ3REY7MDAzNzswMDM3OworMUQ3RTA7MUQ3RTA7MUQ3RTA7MDAzODswMDM4OworMUQ3RTE7MUQ3RTE7MUQ3RTE7MDAzOTswMDM5OworMUQ3RTI7MUQ3RTI7MUQ3RTI7MDAzMDswMDMwOworMUQ3RTM7MUQ3RTM7MUQ3RTM7MDAzMTswMDMxOworMUQ3RTQ7MUQ3RTQ7MUQ3RTQ7MDAzMjswMDMyOworMUQ3RTU7MUQ3RTU7MUQ3RTU7MDAzMzswMDMzOworMUQ3RTY7MUQ3RTY7MUQ3RTY7MDAzNDswMDM0OworMUQ3RTc7MUQ3RTc7MUQ3RTc7MDAzNTswMDM1OworMUQ3RTg7MUQ3RTg7MUQ3RTg7MDAzNjswMDM2OworMUQ3RTk7MUQ3RTk7MUQ3RTk7MDAzNzswMDM3OworMUQ3RUE7MUQ3RUE7MUQ3RUE7MDAzODswMDM4OworMUQ3RUI7MUQ3RUI7MUQ3RUI7MDAzOTswMDM5OworMUQ3RUM7MUQ3RUM7MUQ3RUM7MDAzMDswMDMwOworMUQ3RUQ7MUQ3RUQ7MUQ3RUQ7MDAzMTswMDMxOworMUQ3RUU7MUQ3RUU7MUQ3RUU7MDAzMjswMDMyOworMUQ3RUY7MUQ3RUY7MUQ3RUY7MDAzMzswMDMzOworMUQ3RjA7MUQ3RjA7MUQ3RjA7MDAzNDswMDM0OworMUQ3RjE7MUQ3RjE7MUQ3RjE7MDAzNTswMDM1OworMUQ3RjI7MUQ3RjI7MUQ3RjI7MDAzNjswMDM2OworMUQ3RjM7MUQ3RjM7MUQ3RjM7MDAzNzswMDM3OworMUQ3RjQ7MUQ3RjQ7MUQ3RjQ7MDAzODswMDM4OworMUQ3RjU7MUQ3RjU7MUQ3RjU7MDAzOTswMDM5OworMUQ3RjY7MUQ3RjY7MUQ3RjY7MDAzMDswMDMwOworMUQ3Rjc7MUQ3Rjc7MUQ3Rjc7MDAzMTswMDMxOworMUQ3Rjg7MUQ3Rjg7MUQ3Rjg7MDAzMjswMDMyOworMUQ3Rjk7MUQ3Rjk7MUQ3Rjk7MDAzMzswMDMzOworMUQ3RkE7MUQ3RkE7MUQ3RkE7MDAzNDswMDM0OworMUQ3RkI7MUQ3RkI7MUQ3RkI7MDAzNTswMDM1OworMUQ3RkM7MUQ3RkM7MUQ3RkM7MDAzNjswMDM2OworMUQ3RkQ7MUQ3RkQ7MUQ3RkQ7MDAzNzswMDM3OworMUQ3RkU7MUQ3RkU7MUQ3RkU7MDAzODswMDM4OworMUQ3RkY7MUQ3RkY7MUQ3RkY7MDAzOTswMDM5OworMkY4MDA7NEUzRDs0RTNEOzRFM0Q7NEUzRDsKKzJGODAxOzRFMzg7NEUzODs0RTM4OzRFMzg7CisyRjgwMjs0RTQxOzRFNDE7NEU0MTs0RTQxOworMkY4MDM7MjAxMjI7MjAxMjI7MjAxMjI7MjAxMjI7CisyRjgwNDs0RjYwOzRGNjA7NEY2MDs0RjYwOworMkY4MDU7NEZBRTs0RkFFOzRGQUU7NEZBRTsKKzJGODA2OzRGQkI7NEZCQjs0RkJCOzRGQkI7CisyRjgwNzs1MDAyOzUwMDI7NTAwMjs1MDAyOworMkY4MDg7NTA3QTs1MDdBOzUwN0E7NTA3QTsKKzJGODA5OzUwOTk7NTA5OTs1MDk5OzUwOTk7CisyRjgwQTs1MEU3OzUwRTc7NTBFNzs1MEU3OworMkY4MEI7NTBDRjs1MENGOzUwQ0Y7NTBDRjsKKzJGODBDOzM0OUU7MzQ5RTszNDlFOzM0OUU7CisyRjgwRDsyMDYzQTsyMDYzQTsyMDYzQTsyMDYzQTsKKzJGODBFOzUxNEQ7NTE0RDs1MTREOzUxNEQ7CisyRjgwRjs1MTU0OzUxNTQ7NTE1NDs1MTU0OworMkY4MTA7NTE2NDs1MTY0OzUxNjQ7NTE2NDsKKzJGODExOzUxNzc7NTE3Nzs1MTc3OzUxNzc7CisyRjgxMjsyMDUxQzsyMDUxQzsyMDUxQzsyMDUxQzsKKzJGODEzOzM0Qjk7MzRCOTszNEI5OzM0Qjk7CisyRjgxNDs1MTY3OzUxNjc7NTE2Nzs1MTY3OworMkY4MTU7NTE4RDs1MThEOzUxOEQ7NTE4RDsKKzJGODE2OzIwNTRCOzIwNTRCOzIwNTRCOzIwNTRCOworMkY4MTc7NTE5Nzs1MTk3OzUxOTc7NTE5NzsKKzJGODE4OzUxQTQ7NTFBNDs1MUE0OzUxQTQ7CisyRjgxOTs0RUNDOzRFQ0M7NEVDQzs0RUNDOworMkY4MUE7NTFBQzs1MUFDOzUxQUM7NTFBQzsKKzJGODFCOzUxQjU7NTFCNTs1MUI1OzUxQjU7CisyRjgxQzsyOTFERjsyOTFERjsyOTFERjsyOTFERjsKKzJGODFEOzUxRjU7NTFGNTs1MUY1OzUxRjU7CisyRjgxRTs1MjAzOzUyMDM7NTIwMzs1MjAzOworMkY4MUY7MzRERjszNERGOzM0REY7MzRERjsKKzJGODIwOzUyM0I7NTIzQjs1MjNCOzUyM0I7CisyRjgyMTs1MjQ2OzUyNDY7NTI0Njs1MjQ2OworMkY4MjI7NTI3Mjs1MjcyOzUyNzI7NTI3MjsKKzJGODIzOzUyNzc7NTI3Nzs1Mjc3OzUyNzc7CisyRjgyNDszNTE1OzM1MTU7MzUxNTszNTE1OworMkY4MjU7NTJDNzs1MkM3OzUyQzc7NTJDNzsKKzJGODI2OzUyQzk7NTJDOTs1MkM5OzUyQzk7CisyRjgyNzs1MkU0OzUyRTQ7NTJFNDs1MkU0OworMkY4Mjg7NTJGQTs1MkZBOzUyRkE7NTJGQTsKKzJGODI5OzUzMDU7NTMwNTs1MzA1OzUzMDU7CisyRjgyQTs1MzA2OzUzMDY7NTMwNjs1MzA2OworMkY4MkI7NTMxNzs1MzE3OzUzMTc7NTMxNzsKKzJGODJDOzUzNDk7NTM0OTs1MzQ5OzUzNDk7CisyRjgyRDs1MzUxOzUzNTE7NTM1MTs1MzUxOworMkY4MkU7NTM1QTs1MzVBOzUzNUE7NTM1QTsKKzJGODJGOzUzNzM7NTM3Mzs1MzczOzUzNzM7CisyRjgzMDs1MzdEOzUzN0Q7NTM3RDs1MzdEOworMkY4MzE7NTM3Rjs1MzdGOzUzN0Y7NTM3RjsKKzJGODMyOzUzN0Y7NTM3Rjs1MzdGOzUzN0Y7CisyRjgzMzs1MzdGOzUzN0Y7NTM3Rjs1MzdGOworMkY4MzQ7MjBBMkM7MjBBMkM7MjBBMkM7MjBBMkM7CisyRjgzNTs3MDcwOzcwNzA7NzA3MDs3MDcwOworMkY4MzY7NTNDQTs1M0NBOzUzQ0E7NTNDQTsKKzJGODM3OzUzREY7NTNERjs1M0RGOzUzREY7CisyRjgzODsyMEI2MzsyMEI2MzsyMEI2MzsyMEI2MzsKKzJGODM5OzUzRUI7NTNFQjs1M0VCOzUzRUI7CisyRjgzQTs1M0YxOzUzRjE7NTNGMTs1M0YxOworMkY4M0I7NTQwNjs1NDA2OzU0MDY7NTQwNjsKKzJGODNDOzU0OUU7NTQ5RTs1NDlFOzU0OUU7CisyRjgzRDs1NDM4OzU0Mzg7NTQzODs1NDM4OworMkY4M0U7NTQ0ODs1NDQ4OzU0NDg7NTQ0ODsKKzJGODNGOzU0Njg7NTQ2ODs1NDY4OzU0Njg7CisyRjg0MDs1NEEyOzU0QTI7NTRBMjs1NEEyOworMkY4NDE7NTRGNjs1NEY2OzU0RjY7NTRGNjsKKzJGODQyOzU1MTA7NTUxMDs1NTEwOzU1MTA7CisyRjg0Mzs1NTUzOzU1NTM7NTU1Mzs1NTUzOworMkY4NDQ7NTU2Mzs1NTYzOzU1NjM7NTU2MzsKKzJGODQ1OzU1ODQ7NTU4NDs1NTg0OzU1ODQ7CisyRjg0Njs1NTg0OzU1ODQ7NTU4NDs1NTg0OworMkY4NDc7NTU5OTs1NTk5OzU1OTk7NTU5OTsKKzJGODQ4OzU1QUI7NTVBQjs1NUFCOzU1QUI7CisyRjg0OTs1NUIzOzU1QjM7NTVCMzs1NUIzOworMkY4NEE7NTVDMjs1NUMyOzU1QzI7NTVDMjsKKzJGODRCOzU3MTY7NTcxNjs1NzE2OzU3MTY7CisyRjg0Qzs1NjA2OzU2MDY7NTYwNjs1NjA2OworMkY4NEQ7NTcxNzs1NzE3OzU3MTc7NTcxNzsKKzJGODRFOzU2NTE7NTY1MTs1NjUxOzU2NTE7CisyRjg0Rjs1Njc0OzU2NzQ7NTY3NDs1Njc0OworMkY4NTA7NTIwNzs1MjA3OzUyMDc7NTIwNzsKKzJGODUxOzU4RUU7NThFRTs1OEVFOzU4RUU7CisyRjg1Mjs1N0NFOzU3Q0U7NTdDRTs1N0NFOworMkY4NTM7NTdGNDs1N0Y0OzU3RjQ7NTdGNDsKKzJGODU0OzU4MEQ7NTgwRDs1ODBEOzU4MEQ7CisyRjg1NTs1NzhCOzU3OEI7NTc4Qjs1NzhCOworMkY4NTY7NTgzMjs1ODMyOzU4MzI7NTgzMjsKKzJGODU3OzU4MzE7NTgzMTs1ODMxOzU4MzE7CisyRjg1ODs1OEFDOzU4QUM7NThBQzs1OEFDOworMkY4NTk7MjE0RTQ7MjE0RTQ7MjE0RTQ7MjE0RTQ7CisyRjg1QTs1OEYyOzU4RjI7NThGMjs1OEYyOworMkY4NUI7NThGNzs1OEY3OzU4Rjc7NThGNzsKKzJGODVDOzU5MDY7NTkwNjs1OTA2OzU5MDY7CisyRjg1RDs1OTFBOzU5MUE7NTkxQTs1OTFBOworMkY4NUU7NTkyMjs1OTIyOzU5MjI7NTkyMjsKKzJGODVGOzU5NjI7NTk2Mjs1OTYyOzU5NjI7CisyRjg2MDsyMTZBODsyMTZBODsyMTZBODsyMTZBODsKKzJGODYxOzIxNkVBOzIxNkVBOzIxNkVBOzIxNkVBOworMkY4NjI7NTlFQzs1OUVDOzU5RUM7NTlFQzsKKzJGODYzOzVBMUI7NUExQjs1QTFCOzVBMUI7CisyRjg2NDs1QTI3OzVBMjc7NUEyNzs1QTI3OworMkY4NjU7NTlEODs1OUQ4OzU5RDg7NTlEODsKKzJGODY2OzVBNjY7NUE2Njs1QTY2OzVBNjY7CisyRjg2NzszNkVFOzM2RUU7MzZFRTszNkVFOworMkY4Njg7MjEzNkE7MjEzNkE7MjEzNkE7MjEzNkE7CisyRjg2OTs1QjA4OzVCMDg7NUIwODs1QjA4OworMkY4NkE7NUIzRTs1QjNFOzVCM0U7NUIzRTsKKzJGODZCOzVCM0U7NUIzRTs1QjNFOzVCM0U7CisyRjg2QzsyMTlDODsyMTlDODsyMTlDODsyMTlDODsKKzJGODZEOzVCQzM7NUJDMzs1QkMzOzVCQzM7CisyRjg2RTs1QkQ4OzVCRDg7NUJEODs1QkQ4OworMkY4NkY7NUJFNzs1QkU3OzVCRTc7NUJFNzsKKzJGODcwOzVCRjM7NUJGMzs1QkYzOzVCRjM7CisyRjg3MTsyMUIxODsyMUIxODsyMUIxODsyMUIxODsKKzJGODcyOzVCRkY7NUJGRjs1QkZGOzVCRkY7CisyRjg3Mzs1QzA2OzVDMDY7NUMwNjs1QzA2OworMkY4NzQ7NUYzMzs1RjMzOzVGMzM7NUYzMzsKKzJGODc1OzVDMjI7NUMyMjs1QzIyOzVDMjI7CisyRjg3NjszNzgxOzM3ODE7Mzc4MTszNzgxOworMkY4Nzc7NUM2MDs1QzYwOzVDNjA7NUM2MDsKKzJGODc4OzVDNkU7NUM2RTs1QzZFOzVDNkU7CisyRjg3OTs1Q0MwOzVDQzA7NUNDMDs1Q0MwOworMkY4N0E7NUM4RDs1QzhEOzVDOEQ7NUM4RDsKKzJGODdCOzIxREU0OzIxREU0OzIxREU0OzIxREU0OworMkY4N0M7NUQ0Mzs1RDQzOzVENDM7NUQ0MzsKKzJGODdEOzIxREU2OzIxREU2OzIxREU2OzIxREU2OworMkY4N0U7NUQ2RTs1RDZFOzVENkU7NUQ2RTsKKzJGODdGOzVENkI7NUQ2Qjs1RDZCOzVENkI7CisyRjg4MDs1RDdDOzVEN0M7NUQ3Qzs1RDdDOworMkY4ODE7NURFMTs1REUxOzVERTE7NURFMTsKKzJGODgyOzVERTI7NURFMjs1REUyOzVERTI7CisyRjg4MzszODJGOzM4MkY7MzgyRjszODJGOworMkY4ODQ7NURGRDs1REZEOzVERkQ7NURGRDsKKzJGODg1OzVFMjg7NUUyODs1RTI4OzVFMjg7CisyRjg4Njs1RTNEOzVFM0Q7NUUzRDs1RTNEOworMkY4ODc7NUU2OTs1RTY5OzVFNjk7NUU2OTsKKzJGODg4OzM4NjI7Mzg2MjszODYyOzM4NjI7CisyRjg4OTsyMjE4MzsyMjE4MzsyMjE4MzsyMjE4MzsKKzJGODhBOzM4N0M7Mzg3QzszODdDOzM4N0M7CisyRjg4Qjs1RUIwOzVFQjA7NUVCMDs1RUIwOworMkY4OEM7NUVCMzs1RUIzOzVFQjM7NUVCMzsKKzJGODhEOzVFQjY7NUVCNjs1RUI2OzVFQjY7CisyRjg4RTs1RUNBOzVFQ0E7NUVDQTs1RUNBOworMkY4OEY7MkEzOTI7MkEzOTI7MkEzOTI7MkEzOTI7CisyRjg5MDs1RUZFOzVFRkU7NUVGRTs1RUZFOworMkY4OTE7MjIzMzE7MjIzMzE7MjIzMzE7MjIzMzE7CisyRjg5MjsyMjMzMTsyMjMzMTsyMjMzMTsyMjMzMTsKKzJGODkzOzgyMDE7ODIwMTs4MjAxOzgyMDE7CisyRjg5NDs1RjIyOzVGMjI7NUYyMjs1RjIyOworMkY4OTU7NUYyMjs1RjIyOzVGMjI7NUYyMjsKKzJGODk2OzM4Qzc7MzhDNzszOEM3OzM4Qzc7CisyRjg5NzsyMzJCODsyMzJCODsyMzJCODsyMzJCODsKKzJGODk4OzI2MURBOzI2MURBOzI2MURBOzI2MURBOworMkY4OTk7NUY2Mjs1RjYyOzVGNjI7NUY2MjsKKzJGODlBOzVGNkI7NUY2Qjs1RjZCOzVGNkI7CisyRjg5QjszOEUzOzM4RTM7MzhFMzszOEUzOworMkY4OUM7NUY5QTs1RjlBOzVGOUE7NUY5QTsKKzJGODlEOzVGQ0Q7NUZDRDs1RkNEOzVGQ0Q7CisyRjg5RTs1RkQ3OzVGRDc7NUZENzs1RkQ3OworMkY4OUY7NUZGOTs1RkY5OzVGRjk7NUZGOTsKKzJGOEEwOzYwODE7NjA4MTs2MDgxOzYwODE7CisyRjhBMTszOTNBOzM5M0E7MzkzQTszOTNBOworMkY4QTI7MzkxQzszOTFDOzM5MUM7MzkxQzsKKzJGOEEzOzYwOTQ7NjA5NDs2MDk0OzYwOTQ7CisyRjhBNDsyMjZENDsyMjZENDsyMjZENDsyMjZENDsKKzJGOEE1OzYwQzc7NjBDNzs2MEM3OzYwQzc7CisyRjhBNjs2MTQ4OzYxNDg7NjE0ODs2MTQ4OworMkY4QTc7NjE0Qzs2MTRDOzYxNEM7NjE0QzsKKzJGOEE4OzYxNEU7NjE0RTs2MTRFOzYxNEU7CisyRjhBOTs2MTRDOzYxNEM7NjE0Qzs2MTRDOworMkY4QUE7NjE3QTs2MTdBOzYxN0E7NjE3QTsKKzJGOEFCOzYxOEU7NjE4RTs2MThFOzYxOEU7CisyRjhBQzs2MUIyOzYxQjI7NjFCMjs2MUIyOworMkY4QUQ7NjFBNDs2MUE0OzYxQTQ7NjFBNDsKKzJGOEFFOzYxQUY7NjFBRjs2MUFGOzYxQUY7CisyRjhBRjs2MURFOzYxREU7NjFERTs2MURFOworMkY4QjA7NjFGMjs2MUYyOzYxRjI7NjFGMjsKKzJGOEIxOzYxRjY7NjFGNjs2MUY2OzYxRjY7CisyRjhCMjs2MjEwOzYyMTA7NjIxMDs2MjEwOworMkY4QjM7NjIxQjs2MjFCOzYyMUI7NjIxQjsKKzJGOEI0OzYyNUQ7NjI1RDs2MjVEOzYyNUQ7CisyRjhCNTs2MkIxOzYyQjE7NjJCMTs2MkIxOworMkY4QjY7NjJENDs2MkQ0OzYyRDQ7NjJENDsKKzJGOEI3OzYzNTA7NjM1MDs2MzUwOzYzNTA7CisyRjhCODsyMkIwQzsyMkIwQzsyMkIwQzsyMkIwQzsKKzJGOEI5OzYzM0Q7NjMzRDs2MzNEOzYzM0Q7CisyRjhCQTs2MkZDOzYyRkM7NjJGQzs2MkZDOworMkY4QkI7NjM2ODs2MzY4OzYzNjg7NjM2ODsKKzJGOEJDOzYzODM7NjM4Mzs2MzgzOzYzODM7CisyRjhCRDs2M0U0OzYzRTQ7NjNFNDs2M0U0OworMkY4QkU7MjJCRjE7MjJCRjE7MjJCRjE7MjJCRjE7CisyRjhCRjs2NDIyOzY0MjI7NjQyMjs2NDIyOworMkY4QzA7NjNDNTs2M0M1OzYzQzU7NjNDNTsKKzJGOEMxOzYzQTk7NjNBOTs2M0E5OzYzQTk7CisyRjhDMjszQTJFOzNBMkU7M0EyRTszQTJFOworMkY4QzM7NjQ2OTs2NDY5OzY0Njk7NjQ2OTsKKzJGOEM0OzY0N0U7NjQ3RTs2NDdFOzY0N0U7CisyRjhDNTs2NDlEOzY0OUQ7NjQ5RDs2NDlEOworMkY4QzY7NjQ3Nzs2NDc3OzY0Nzc7NjQ3NzsKKzJGOEM3OzNBNkM7M0E2QzszQTZDOzNBNkM7CisyRjhDODs2NTRGOzY1NEY7NjU0Rjs2NTRGOworMkY4Qzk7NjU2Qzs2NTZDOzY1NkM7NjU2QzsKKzJGOENBOzIzMDBBOzIzMDBBOzIzMDBBOzIzMDBBOworMkY4Q0I7NjVFMzs2NUUzOzY1RTM7NjVFMzsKKzJGOENDOzY2Rjg7NjZGODs2NkY4OzY2Rjg7CisyRjhDRDs2NjQ5OzY2NDk7NjY0OTs2NjQ5OworMkY4Q0U7M0IxOTszQjE5OzNCMTk7M0IxOTsKKzJGOENGOzY2OTE7NjY5MTs2NjkxOzY2OTE7CisyRjhEMDszQjA4OzNCMDg7M0IwODszQjA4OworMkY4RDE7M0FFNDszQUU0OzNBRTQ7M0FFNDsKKzJGOEQyOzUxOTI7NTE5Mjs1MTkyOzUxOTI7CisyRjhEMzs1MTk1OzUxOTU7NTE5NTs1MTk1OworMkY4RDQ7NjcwMDs2NzAwOzY3MDA7NjcwMDsKKzJGOEQ1OzY2OUM7NjY5Qzs2NjlDOzY2OUM7CisyRjhENjs4MEFEOzgwQUQ7ODBBRDs4MEFEOworMkY4RDc7NDNEOTs0M0Q5OzQzRDk7NDNEOTsKKzJGOEQ4OzY3MTc7NjcxNzs2NzE3OzY3MTc7CisyRjhEOTs2NzFCOzY3MUI7NjcxQjs2NzFCOworMkY4REE7NjcyMTs2NzIxOzY3MjE7NjcyMTsKKzJGOERCOzY3NUU7Njc1RTs2NzVFOzY3NUU7CisyRjhEQzs2NzUzOzY3NTM7Njc1Mzs2NzUzOworMkY4REQ7MjMzQzM7MjMzQzM7MjMzQzM7MjMzQzM7CisyRjhERTszQjQ5OzNCNDk7M0I0OTszQjQ5OworMkY4REY7NjdGQTs2N0ZBOzY3RkE7NjdGQTsKKzJGOEUwOzY3ODU7Njc4NTs2Nzg1OzY3ODU7CisyRjhFMTs2ODUyOzY4NTI7Njg1Mjs2ODUyOworMkY4RTI7Njg4NTs2ODg1OzY4ODU7Njg4NTsKKzJGOEUzOzIzNDZEOzIzNDZEOzIzNDZEOzIzNDZEOworMkY4RTQ7Njg4RTs2ODhFOzY4OEU7Njg4RTsKKzJGOEU1OzY4MUY7NjgxRjs2ODFGOzY4MUY7CisyRjhFNjs2OTE0OzY5MTQ7NjkxNDs2OTE0OworMkY4RTc7M0I5RDszQjlEOzNCOUQ7M0I5RDsKKzJGOEU4OzY5NDI7Njk0Mjs2OTQyOzY5NDI7CisyRjhFOTs2OUEzOzY5QTM7NjlBMzs2OUEzOworMkY4RUE7NjlFQTs2OUVBOzY5RUE7NjlFQTsKKzJGOEVCOzZBQTg7NkFBODs2QUE4OzZBQTg7CisyRjhFQzsyMzZBMzsyMzZBMzsyMzZBMzsyMzZBMzsKKzJGOEVEOzZBREI7NkFEQjs2QURCOzZBREI7CisyRjhFRTszQzE4OzNDMTg7M0MxODszQzE4OworMkY4RUY7NkIyMTs2QjIxOzZCMjE7NkIyMTsKKzJGOEYwOzIzOEE3OzIzOEE3OzIzOEE3OzIzOEE3OworMkY4RjE7NkI1NDs2QjU0OzZCNTQ7NkI1NDsKKzJGOEYyOzNDNEU7M0M0RTszQzRFOzNDNEU7CisyRjhGMzs2QjcyOzZCNzI7NkI3Mjs2QjcyOworMkY4RjQ7NkI5Rjs2QjlGOzZCOUY7NkI5RjsKKzJGOEY1OzZCQkE7NkJCQTs2QkJBOzZCQkE7CisyRjhGNjs2QkJCOzZCQkI7NkJCQjs2QkJCOworMkY4Rjc7MjNBOEQ7MjNBOEQ7MjNBOEQ7MjNBOEQ7CisyRjhGODsyMUQwQjsyMUQwQjsyMUQwQjsyMUQwQjsKKzJGOEY5OzIzQUZBOzIzQUZBOzIzQUZBOzIzQUZBOworMkY4RkE7NkM0RTs2QzRFOzZDNEU7NkM0RTsKKzJGOEZCOzIzQ0JDOzIzQ0JDOzIzQ0JDOzIzQ0JDOworMkY4RkM7NkNCRjs2Q0JGOzZDQkY7NkNCRjsKKzJGOEZEOzZDQ0Q7NkNDRDs2Q0NEOzZDQ0Q7CisyRjhGRTs2QzY3OzZDNjc7NkM2Nzs2QzY3OworMkY4RkY7NkQxNjs2RDE2OzZEMTY7NkQxNjsKKzJGOTAwOzZEM0U7NkQzRTs2RDNFOzZEM0U7CisyRjkwMTs2RDc3OzZENzc7NkQ3Nzs2RDc3OworMkY5MDI7NkQ0MTs2RDQxOzZENDE7NkQ0MTsKKzJGOTAzOzZENjk7NkQ2OTs2RDY5OzZENjk7CisyRjkwNDs2RDc4OzZENzg7NkQ3ODs2RDc4OworMkY5MDU7NkQ4NTs2RDg1OzZEODU7NkQ4NTsKKzJGOTA2OzIzRDFFOzIzRDFFOzIzRDFFOzIzRDFFOworMkY5MDc7NkQzNDs2RDM0OzZEMzQ7NkQzNDsKKzJGOTA4OzZFMkY7NkUyRjs2RTJGOzZFMkY7CisyRjkwOTs2RTZFOzZFNkU7NkU2RTs2RTZFOworMkY5MEE7M0QzMzszRDMzOzNEMzM7M0QzMzsKKzJGOTBCOzZFQ0I7NkVDQjs2RUNCOzZFQ0I7CisyRjkwQzs2RUM3OzZFQzc7NkVDNzs2RUM3OworMkY5MEQ7MjNFRDE7MjNFRDE7MjNFRDE7MjNFRDE7CisyRjkwRTs2REY5OzZERjk7NkRGOTs2REY5OworMkY5MEY7NkY2RTs2RjZFOzZGNkU7NkY2RTsKKzJGOTEwOzIzRjVFOzIzRjVFOzIzRjVFOzIzRjVFOworMkY5MTE7MjNGOEU7MjNGOEU7MjNGOEU7MjNGOEU7CisyRjkxMjs2RkM2OzZGQzY7NkZDNjs2RkM2OworMkY5MTM7NzAzOTs3MDM5OzcwMzk7NzAzOTsKKzJGOTE0OzcwMUU7NzAxRTs3MDFFOzcwMUU7CisyRjkxNTs3MDFCOzcwMUI7NzAxQjs3MDFCOworMkY5MTY7M0Q5NjszRDk2OzNEOTY7M0Q5NjsKKzJGOTE3OzcwNEE7NzA0QTs3MDRBOzcwNEE7CisyRjkxODs3MDdEOzcwN0Q7NzA3RDs3MDdEOworMkY5MTk7NzA3Nzs3MDc3OzcwNzc7NzA3NzsKKzJGOTFBOzcwQUQ7NzBBRDs3MEFEOzcwQUQ7CisyRjkxQjsyMDUyNTsyMDUyNTsyMDUyNTsyMDUyNTsKKzJGOTFDOzcxNDU7NzE0NTs3MTQ1OzcxNDU7CisyRjkxRDsyNDI2MzsyNDI2MzsyNDI2MzsyNDI2MzsKKzJGOTFFOzcxOUM7NzE5Qzs3MTlDOzcxOUM7CisyRjkxRjs0M0FCOzQzQUI7NDNBQjs0M0FCOworMkY5MjA7NzIyODs3MjI4OzcyMjg7NzIyODsKKzJGOTIxOzcyMzU7NzIzNTs3MjM1OzcyMzU7CisyRjkyMjs3MjUwOzcyNTA7NzI1MDs3MjUwOworMkY5MjM7MjQ2MDg7MjQ2MDg7MjQ2MDg7MjQ2MDg7CisyRjkyNDs3MjgwOzcyODA7NzI4MDs3MjgwOworMkY5MjU7NzI5NTs3Mjk1OzcyOTU7NzI5NTsKKzJGOTI2OzI0NzM1OzI0NzM1OzI0NzM1OzI0NzM1OworMkY5Mjc7MjQ4MTQ7MjQ4MTQ7MjQ4MTQ7MjQ4MTQ7CisyRjkyODs3MzdBOzczN0E7NzM3QTs3MzdBOworMkY5Mjk7NzM4Qjs3MzhCOzczOEI7NzM4QjsKKzJGOTJBOzNFQUM7M0VBQzszRUFDOzNFQUM7CisyRjkyQjs3M0E1OzczQTU7NzNBNTs3M0E1OworMkY5MkM7M0VCODszRUI4OzNFQjg7M0VCODsKKzJGOTJEOzNFQjg7M0VCODszRUI4OzNFQjg7CisyRjkyRTs3NDQ3Ozc0NDc7NzQ0Nzs3NDQ3OworMkY5MkY7NzQ1Qzs3NDVDOzc0NUM7NzQ1QzsKKzJGOTMwOzc0NzE7NzQ3MTs3NDcxOzc0NzE7CisyRjkzMTs3NDg1Ozc0ODU7NzQ4NTs3NDg1OworMkY5MzI7NzRDQTs3NENBOzc0Q0E7NzRDQTsKKzJGOTMzOzNGMUI7M0YxQjszRjFCOzNGMUI7CisyRjkzNDs3NTI0Ozc1MjQ7NzUyNDs3NTI0OworMkY5MzU7MjRDMzY7MjRDMzY7MjRDMzY7MjRDMzY7CisyRjkzNjs3NTNFOzc1M0U7NzUzRTs3NTNFOworMkY5Mzc7MjRDOTI7MjRDOTI7MjRDOTI7MjRDOTI7CisyRjkzODs3NTcwOzc1NzA7NzU3MDs3NTcwOworMkY5Mzk7MjIxOUY7MjIxOUY7MjIxOUY7MjIxOUY7CisyRjkzQTs3NjEwOzc2MTA7NzYxMDs3NjEwOworMkY5M0I7MjRGQTE7MjRGQTE7MjRGQTE7MjRGQTE7CisyRjkzQzsyNEZCODsyNEZCODsyNEZCODsyNEZCODsKKzJGOTNEOzI1MDQ0OzI1MDQ0OzI1MDQ0OzI1MDQ0OworMkY5M0U7M0ZGQzszRkZDOzNGRkM7M0ZGQzsKKzJGOTNGOzQwMDg7NDAwODs0MDA4OzQwMDg7CisyRjk0MDs3NkY0Ozc2RjQ7NzZGNDs3NkY0OworMkY5NDE7MjUwRjM7MjUwRjM7MjUwRjM7MjUwRjM7CisyRjk0MjsyNTBGMjsyNTBGMjsyNTBGMjsyNTBGMjsKKzJGOTQzOzI1MTE5OzI1MTE5OzI1MTE5OzI1MTE5OworMkY5NDQ7MjUxMzM7MjUxMzM7MjUxMzM7MjUxMzM7CisyRjk0NTs3NzFFOzc3MUU7NzcxRTs3NzFFOworMkY5NDY7NzcxRjs3NzFGOzc3MUY7NzcxRjsKKzJGOTQ3Ozc3MUY7NzcxRjs3NzFGOzc3MUY7CisyRjk0ODs3NzRBOzc3NEE7Nzc0QTs3NzRBOworMkY5NDk7NDAzOTs0MDM5OzQwMzk7NDAzOTsKKzJGOTRBOzc3OEI7Nzc4Qjs3NzhCOzc3OEI7CisyRjk0Qjs0MDQ2OzQwNDY7NDA0Njs0MDQ2OworMkY5NEM7NDA5Njs0MDk2OzQwOTY7NDA5NjsKKzJGOTREOzI1NDFEOzI1NDFEOzI1NDFEOzI1NDFEOworMkY5NEU7Nzg0RTs3ODRFOzc4NEU7Nzg0RTsKKzJGOTRGOzc4OEM7Nzg4Qzs3ODhDOzc4OEM7CisyRjk1MDs3OENDOzc4Q0M7NzhDQzs3OENDOworMkY5NTE7NDBFMzs0MEUzOzQwRTM7NDBFMzsKKzJGOTUyOzI1NjI2OzI1NjI2OzI1NjI2OzI1NjI2OworMkY5NTM7Nzk1Njs3OTU2Ozc5NTY7Nzk1NjsKKzJGOTU0OzI1NjlBOzI1NjlBOzI1NjlBOzI1NjlBOworMkY5NTU7MjU2QzU7MjU2QzU7MjU2QzU7MjU2QzU7CisyRjk1Njs3OThGOzc5OEY7Nzk4Rjs3OThGOworMkY5NTc7NzlFQjs3OUVCOzc5RUI7NzlFQjsKKzJGOTU4OzQxMkY7NDEyRjs0MTJGOzQxMkY7CisyRjk1OTs3QTQwOzdBNDA7N0E0MDs3QTQwOworMkY5NUE7N0E0QTs3QTRBOzdBNEE7N0E0QTsKKzJGOTVCOzdBNEY7N0E0Rjs3QTRGOzdBNEY7CisyRjk1QzsyNTk3QzsyNTk3QzsyNTk3QzsyNTk3QzsKKzJGOTVEOzI1QUE3OzI1QUE3OzI1QUE3OzI1QUE3OworMkY5NUU7MjVBQTc7MjVBQTc7MjVBQTc7MjVBQTc7CisyRjk1Rjs3QUFFOzdBQUU7N0FBRTs3QUFFOworMkY5NjA7NDIwMjs0MjAyOzQyMDI7NDIwMjsKKzJGOTYxOzI1QkFCOzI1QkFCOzI1QkFCOzI1QkFCOworMkY5NjI7N0JDNjs3QkM2OzdCQzY7N0JDNjsKKzJGOTYzOzdCQzk7N0JDOTs3QkM5OzdCQzk7CisyRjk2NDs0MjI3OzQyMjc7NDIyNzs0MjI3OworMkY5NjU7MjVDODA7MjVDODA7MjVDODA7MjVDODA7CisyRjk2Njs3Q0QyOzdDRDI7N0NEMjs3Q0QyOworMkY5Njc7NDJBMDs0MkEwOzQyQTA7NDJBMDsKKzJGOTY4OzdDRTg7N0NFODs3Q0U4OzdDRTg7CisyRjk2OTs3Q0UzOzdDRTM7N0NFMzs3Q0UzOworMkY5NkE7N0QwMDs3RDAwOzdEMDA7N0QwMDsKKzJGOTZCOzI1Rjg2OzI1Rjg2OzI1Rjg2OzI1Rjg2OworMkY5NkM7N0Q2Mzs3RDYzOzdENjM7N0Q2MzsKKzJGOTZEOzQzMDE7NDMwMTs0MzAxOzQzMDE7CisyRjk2RTs3REM3OzdEQzc7N0RDNzs3REM3OworMkY5NkY7N0UwMjs3RTAyOzdFMDI7N0UwMjsKKzJGOTcwOzdFNDU7N0U0NTs3RTQ1OzdFNDU7CisyRjk3MTs0MzM0OzQzMzQ7NDMzNDs0MzM0OworMkY5NzI7MjYyMjg7MjYyMjg7MjYyMjg7MjYyMjg7CisyRjk3MzsyNjI0NzsyNjI0NzsyNjI0NzsyNjI0NzsKKzJGOTc0OzQzNTk7NDM1OTs0MzU5OzQzNTk7CisyRjk3NTsyNjJEOTsyNjJEOTsyNjJEOTsyNjJEOTsKKzJGOTc2OzdGN0E7N0Y3QTs3RjdBOzdGN0E7CisyRjk3NzsyNjMzRTsyNjMzRTsyNjMzRTsyNjMzRTsKKzJGOTc4OzdGOTU7N0Y5NTs3Rjk1OzdGOTU7CisyRjk3OTs3RkZBOzdGRkE7N0ZGQTs3RkZBOworMkY5N0E7ODAwNTs4MDA1OzgwMDU7ODAwNTsKKzJGOTdCOzI2NERBOzI2NERBOzI2NERBOzI2NERBOworMkY5N0M7MjY1MjM7MjY1MjM7MjY1MjM7MjY1MjM7CisyRjk3RDs4MDYwOzgwNjA7ODA2MDs4MDYwOworMkY5N0U7MjY1QTg7MjY1QTg7MjY1QTg7MjY1QTg7CisyRjk3Rjs4MDcwOzgwNzA7ODA3MDs4MDcwOworMkY5ODA7MjMzNUY7MjMzNUY7MjMzNUY7MjMzNUY7CisyRjk4MTs0M0Q1OzQzRDU7NDNENTs0M0Q1OworMkY5ODI7ODBCMjs4MEIyOzgwQjI7ODBCMjsKKzJGOTgzOzgxMDM7ODEwMzs4MTAzOzgxMDM7CisyRjk4NDs0NDBCOzQ0MEI7NDQwQjs0NDBCOworMkY5ODU7ODEzRTs4MTNFOzgxM0U7ODEzRTsKKzJGOTg2OzVBQjU7NUFCNTs1QUI1OzVBQjU7CisyRjk4NzsyNjdBNzsyNjdBNzsyNjdBNzsyNjdBNzsKKzJGOTg4OzI2N0I1OzI2N0I1OzI2N0I1OzI2N0I1OworMkY5ODk7MjMzOTM7MjMzOTM7MjMzOTM7MjMzOTM7CisyRjk4QTsyMzM5QzsyMzM5QzsyMzM5QzsyMzM5QzsKKzJGOThCOzgyMDE7ODIwMTs4MjAxOzgyMDE7CisyRjk4Qzs4MjA0OzgyMDQ7ODIwNDs4MjA0OworMkY5OEQ7OEY5RTs4RjlFOzhGOUU7OEY5RTsKKzJGOThFOzQ0NkI7NDQ2Qjs0NDZCOzQ0NkI7CisyRjk4Rjs4MjkxOzgyOTE7ODI5MTs4MjkxOworMkY5OTA7ODI4Qjs4MjhCOzgyOEI7ODI4QjsKKzJGOTkxOzgyOUQ7ODI5RDs4MjlEOzgyOUQ7CisyRjk5Mjs1MkIzOzUyQjM7NTJCMzs1MkIzOworMkY5OTM7ODJCMTs4MkIxOzgyQjE7ODJCMTsKKzJGOTk0OzgyQjM7ODJCMzs4MkIzOzgyQjM7CisyRjk5NTs4MkJEOzgyQkQ7ODJCRDs4MkJEOworMkY5OTY7ODJFNjs4MkU2OzgyRTY7ODJFNjsKKzJGOTk3OzI2QjNDOzI2QjNDOzI2QjNDOzI2QjNDOworMkY5OTg7ODJFNTs4MkU1OzgyRTU7ODJFNTsKKzJGOTk5OzgzMUQ7ODMxRDs4MzFEOzgzMUQ7CisyRjk5QTs4MzYzOzgzNjM7ODM2Mzs4MzYzOworMkY5OUI7ODNBRDs4M0FEOzgzQUQ7ODNBRDsKKzJGOTlDOzgzMjM7ODMyMzs4MzIzOzgzMjM7CisyRjk5RDs4M0JEOzgzQkQ7ODNCRDs4M0JEOworMkY5OUU7ODNFNzs4M0U3OzgzRTc7ODNFNzsKKzJGOTlGOzg0NTc7ODQ1Nzs4NDU3Ozg0NTc7CisyRjlBMDs4MzUzOzgzNTM7ODM1Mzs4MzUzOworMkY5QTE7ODNDQTs4M0NBOzgzQ0E7ODNDQTsKKzJGOUEyOzgzQ0M7ODNDQzs4M0NDOzgzQ0M7CisyRjlBMzs4M0RDOzgzREM7ODNEQzs4M0RDOworMkY5QTQ7MjZDMzY7MjZDMzY7MjZDMzY7MjZDMzY7CisyRjlBNTsyNkQ2QjsyNkQ2QjsyNkQ2QjsyNkQ2QjsKKzJGOUE2OzI2Q0Q1OzI2Q0Q1OzI2Q0Q1OzI2Q0Q1OworMkY5QTc7NDUyQjs0NTJCOzQ1MkI7NDUyQjsKKzJGOUE4Ozg0RjE7ODRGMTs4NEYxOzg0RjE7CisyRjlBOTs4NEYzOzg0RjM7ODRGMzs4NEYzOworMkY5QUE7ODUxNjs4NTE2Ozg1MTY7ODUxNjsKKzJGOUFCOzI3M0NBOzI3M0NBOzI3M0NBOzI3M0NBOworMkY5QUM7ODU2NDs4NTY0Ozg1NjQ7ODU2NDsKKzJGOUFEOzI2RjJDOzI2RjJDOzI2RjJDOzI2RjJDOworMkY5QUU7NDU1RDs0NTVEOzQ1NUQ7NDU1RDsKKzJGOUFGOzQ1NjE7NDU2MTs0NTYxOzQ1NjE7CisyRjlCMDsyNkZCMTsyNkZCMTsyNkZCMTsyNkZCMTsKKzJGOUIxOzI3MEQyOzI3MEQyOzI3MEQyOzI3MEQyOworMkY5QjI7NDU2Qjs0NTZCOzQ1NkI7NDU2QjsKKzJGOUIzOzg2NTA7ODY1MDs4NjUwOzg2NTA7CisyRjlCNDs4NjVDOzg2NUM7ODY1Qzs4NjVDOworMkY5QjU7ODY2Nzs4NjY3Ozg2Njc7ODY2NzsKKzJGOUI2Ozg2Njk7ODY2OTs4NjY5Ozg2Njk7CisyRjlCNzs4NkE5Ozg2QTk7ODZBOTs4NkE5OworMkY5Qjg7ODY4ODs4Njg4Ozg2ODg7ODY4ODsKKzJGOUI5Ozg3MEU7ODcwRTs4NzBFOzg3MEU7CisyRjlCQTs4NkUyOzg2RTI7ODZFMjs4NkUyOworMkY5QkI7ODc3OTs4Nzc5Ozg3Nzk7ODc3OTsKKzJGOUJDOzg3Mjg7ODcyODs4NzI4Ozg3Mjg7CisyRjlCRDs4NzZCOzg3NkI7ODc2Qjs4NzZCOworMkY5QkU7ODc4Njs4Nzg2Ozg3ODY7ODc4NjsKKzJGOUJGOzRENTc7NEQ1Nzs0RDU3OzRENTc7CisyRjlDMDs4N0UxOzg3RTE7ODdFMTs4N0UxOworMkY5QzE7ODgwMTs4ODAxOzg4MDE7ODgwMTsKKzJGOUMyOzQ1Rjk7NDVGOTs0NUY5OzQ1Rjk7CisyRjlDMzs4ODYwOzg4NjA7ODg2MDs4ODYwOworMkY5QzQ7ODg2Mzs4ODYzOzg4NjM7ODg2MzsKKzJGOUM1OzI3NjY3OzI3NjY3OzI3NjY3OzI3NjY3OworMkY5QzY7ODhENzs4OEQ3Ozg4RDc7ODhENzsKKzJGOUM3Ozg4REU7ODhERTs4OERFOzg4REU7CisyRjlDODs0NjM1OzQ2MzU7NDYzNTs0NjM1OworMkY5Qzk7ODhGQTs4OEZBOzg4RkE7ODhGQTsKKzJGOUNBOzM0QkI7MzRCQjszNEJCOzM0QkI7CisyRjlDQjsyNzhBRTsyNzhBRTsyNzhBRTsyNzhBRTsKKzJGOUNDOzI3OTY2OzI3OTY2OzI3OTY2OzI3OTY2OworMkY5Q0Q7NDZCRTs0NkJFOzQ2QkU7NDZCRTsKKzJGOUNFOzQ2Qzc7NDZDNzs0NkM3OzQ2Qzc7CisyRjlDRjs4QUEwOzhBQTA7OEFBMDs4QUEwOworMkY5RDA7OEFFRDs4QUVEOzhBRUQ7OEFFRDsKKzJGOUQxOzhCOEE7OEI4QTs4QjhBOzhCOEE7CisyRjlEMjs4QzU1OzhDNTU7OEM1NTs4QzU1OworMkY5RDM7MjdDQTg7MjdDQTg7MjdDQTg7MjdDQTg7CisyRjlENDs4Q0FCOzhDQUI7OENBQjs4Q0FCOworMkY5RDU7OENDMTs4Q0MxOzhDQzE7OENDMTsKKzJGOUQ2OzhEMUI7OEQxQjs4RDFCOzhEMUI7CisyRjlENzs4RDc3OzhENzc7OEQ3Nzs4RDc3OworMkY5RDg7MjdGMkY7MjdGMkY7MjdGMkY7MjdGMkY7CisyRjlEOTsyMDgwNDsyMDgwNDsyMDgwNDsyMDgwNDsKKzJGOURBOzhEQ0I7OERDQjs4RENCOzhEQ0I7CisyRjlEQjs4REJDOzhEQkM7OERCQzs4REJDOworMkY5REM7OERGMDs4REYwOzhERjA7OERGMDsKKzJGOUREOzIwOERFOzIwOERFOzIwOERFOzIwOERFOworMkY5REU7OEVENDs4RUQ0OzhFRDQ7OEVENDsKKzJGOURGOzhGMzg7OEYzODs4RjM4OzhGMzg7CisyRjlFMDsyODVEMjsyODVEMjsyODVEMjsyODVEMjsKKzJGOUUxOzI4NUVEOzI4NUVEOzI4NUVEOzI4NUVEOworMkY5RTI7OTA5NDs5MDk0OzkwOTQ7OTA5NDsKKzJGOUUzOzkwRjE7OTBGMTs5MEYxOzkwRjE7CisyRjlFNDs5MTExOzkxMTE7OTExMTs5MTExOworMkY5RTU7Mjg3MkU7Mjg3MkU7Mjg3MkU7Mjg3MkU7CisyRjlFNjs5MTFCOzkxMUI7OTExQjs5MTFCOworMkY5RTc7OTIzODs5MjM4OzkyMzg7OTIzODsKKzJGOUU4OzkyRDc7OTJENzs5MkQ3OzkyRDc7CisyRjlFOTs5MkQ4OzkyRDg7OTJEODs5MkQ4OworMkY5RUE7OTI3Qzs5MjdDOzkyN0M7OTI3QzsKKzJGOUVCOzkzRjk7OTNGOTs5M0Y5OzkzRjk7CisyRjlFQzs5NDE1Ozk0MTU7OTQxNTs5NDE1OworMkY5RUQ7MjhCRkE7MjhCRkE7MjhCRkE7MjhCRkE7CisyRjlFRTs5NThCOzk1OEI7OTU4Qjs5NThCOworMkY5RUY7NDk5NTs0OTk1OzQ5OTU7NDk5NTsKKzJGOUYwOzk1Qjc7OTVCNzs5NUI3Ozk1Qjc7CisyRjlGMTsyOEQ3NzsyOEQ3NzsyOEQ3NzsyOEQ3NzsKKzJGOUYyOzQ5RTY7NDlFNjs0OUU2OzQ5RTY7CisyRjlGMzs5NkMzOzk2QzM7OTZDMzs5NkMzOworMkY5RjQ7NURCMjs1REIyOzVEQjI7NURCMjsKKzJGOUY1Ozk3MjM7OTcyMzs5NzIzOzk3MjM7CisyRjlGNjsyOTE0NTsyOTE0NTsyOTE0NTsyOTE0NTsKKzJGOUY3OzI5MjFBOzI5MjFBOzI5MjFBOzI5MjFBOworMkY5Rjg7NEE2RTs0QTZFOzRBNkU7NEE2RTsKKzJGOUY5OzRBNzY7NEE3Njs0QTc2OzRBNzY7CisyRjlGQTs5N0UwOzk3RTA7OTdFMDs5N0UwOworMkY5RkI7Mjk0MEE7Mjk0MEE7Mjk0MEE7Mjk0MEE7CisyRjlGQzs0QUIyOzRBQjI7NEFCMjs0QUIyOworMkY5RkQ7Mjk0OTY7Mjk0OTY7Mjk0OTY7Mjk0OTY7CisyRjlGRTs5ODBCOzk4MEI7OTgwQjs5ODBCOworMkY5RkY7OTgwQjs5ODBCOzk4MEI7OTgwQjsKKzJGQTAwOzk4Mjk7OTgyOTs5ODI5Ozk4Mjk7CisyRkEwMTsyOTVCNjsyOTVCNjsyOTVCNjsyOTVCNjsKKzJGQTAyOzk4RTI7OThFMjs5OEUyOzk4RTI7CisyRkEwMzs0QjMzOzRCMzM7NEIzMzs0QjMzOworMkZBMDQ7OTkyOTs5OTI5Ozk5Mjk7OTkyOTsKKzJGQTA1Ozk5QTc7OTlBNzs5OUE3Ozk5QTc7CisyRkEwNjs5OUMyOzk5QzI7OTlDMjs5OUMyOworMkZBMDc7OTlGRTs5OUZFOzk5RkU7OTlGRTsKKzJGQTA4OzRCQ0U7NEJDRTs0QkNFOzRCQ0U7CisyRkEwOTsyOUIzMDsyOUIzMDsyOUIzMDsyOUIzMDsKKzJGQTBBOzlCMTI7OUIxMjs5QjEyOzlCMTI7CisyRkEwQjs5QzQwOzlDNDA7OUM0MDs5QzQwOworMkZBMEM7OUNGRDs5Q0ZEOzlDRkQ7OUNGRDsKKzJGQTBEOzRDQ0U7NENDRTs0Q0NFOzRDQ0U7CisyRkEwRTs0Q0VEOzRDRUQ7NENFRDs0Q0VEOworMkZBMEY7OUQ2Nzs5RDY3OzlENjc7OUQ2NzsKKzJGQTEwOzJBMENFOzJBMENFOzJBMENFOzJBMENFOworMkZBMTE7NENGODs0Q0Y4OzRDRjg7NENGODsKKzJGQTEyOzJBMTA1OzJBMTA1OzJBMTA1OzJBMTA1OworMkZBMTM7MkEyMEU7MkEyMEU7MkEyMEU7MkEyMEU7CisyRkExNDsyQTI5MTsyQTI5MTsyQTI5MTsyQTI5MTsKKzJGQTE1OzlFQkI7OUVCQjs5RUJCOzlFQkI7CisyRkExNjs0RDU2OzRENTY7NEQ1Njs0RDU2OworMkZBMTc7OUVGOTs5RUY5OzlFRjk7OUVGOTsKKzJGQTE4OzlFRkU7OUVGRTs5RUZFOzlFRkU7CisyRkExOTs5RjA1OzlGMDU7OUYwNTs5RjA1OworMkZBMUE7OUYwRjs5RjBGOzlGMEY7OUYwRjsKKzJGQTFCOzlGMTY7OUYxNjs5RjE2OzlGMTY7CisyRkExQzs5RjNCOzlGM0I7OUYzQjs5RjNCOworMkZBMUQ7MkE2MDA7MkE2MDA7MkE2MDA7MkE2MDA7CisjCitAUGFydDIgIyBDYW5vbmljYWwgT3JkZXIgVGVzdAorIworMDA2MSAwMzE1IDAzMDAgMDVBRSAwMzAwIDAwNjI7MDBFMCAwNUFFIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzMDAgMDMxNSAwMDYyOzAwRTAgMDVBRSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDMwMCAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwRTAgMDVBRSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzAwIDAzMTUgMDA2MjswMEUwIDA1QUUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDAzMDEgMDA2MjswMEUwIDA1QUUgMDMwMSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDMwMSAwMzE1IDAwNjI7MDBFMCAwNUFFIDAzMDEgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzMDEgMDMxNSAwMDYyOworMDA2MSAwMzAxIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDBFMSAwNUFFIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAxIDAzMDAgMDMxNSAwMDYyOzAwRTEgMDVBRSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMSAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDMwMiAwMDYyOzAwRTAgMDVBRSAwMzAyIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzAyIDAzMTUgMDA2MjswMEUwIDA1QUUgMDMwMiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDMwMiAwMzE1IDAwNjI7CiswMDYxIDAzMDIgMDMxNSAwMzAwIDA1QUUgMDA2MjsxRUE3IDA1QUUgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAyIDAzMDAgMDMxNSAwMDYyOzFFQTcgMDVBRSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDIgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDAzMDMgMDA2MjswMEUwIDA1QUUgMDMwMyAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDMwMyAwMzE1IDAwNjI7MDBFMCAwNUFFIDAzMDMgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzMDMgMDMxNSAwMDYyOworMDA2MSAwMzAzIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDBFMyAwNUFFIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAzIDAzMDAgMDMxNSAwMDYyOzAwRTMgMDVBRSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMyAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDMwNCAwMDYyOzAwRTAgMDVBRSAwMzA0IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzA0IDAzMTUgMDA2MjswMEUwIDA1QUUgMDMwNCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDMwNCAwMzE1IDAwNjI7CiswMDYxIDAzMDQgMDMxNSAwMzAwIDA1QUUgMDA2MjswMTAxIDA1QUUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDQgMDMwMCAwMzE1IDAwNjI7MDEwMSAwNUFFIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzA0IDAzMDAgMDMxNSAwMDYyOworMDA2MSAwMzE1IDAzMDAgMDVBRSAwMzA1IDAwNjI7MDBFMCAwNUFFIDAzMDUgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzMDUgMDMxNSAwMDYyOzAwRTAgMDVBRSAwMzA1IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzA1IDAzMTUgMDA2MjsKKzAwNjEgMDMwNSAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwMzA1IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzA1IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzA1IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzA1IDAzMDAgMDMxNSAwMDYyOworMDA2MSAwMzE1IDAzMDAgMDVBRSAwMzA2IDAwNjI7MDBFMCAwNUFFIDAzMDYgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzMDYgMDMxNSAwMDYyOzAwRTAgMDVBRSAwMzA2IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzA2IDAzMTUgMDA2MjsKKzAwNjEgMDMwNiAwMzE1IDAzMDAgMDVBRSAwMDYyOzFFQjEgMDVBRSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDYgMDMwMCAwMzE1IDAwNjI7MUVCMSAwNUFFIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwNiAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDMwNyAwMDYyOzAwRTAgMDVBRSAwMzA3IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzA3IDAzMTUgMDA2MjswMEUwIDA1QUUgMDMwNyAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDMwNyAwMzE1IDAwNjI7CiswMDYxIDAzMDcgMDMxNSAwMzAwIDA1QUUgMDA2MjswMjI3IDA1QUUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDcgMDMwMCAwMzE1IDAwNjI7MDIyNyAwNUFFIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzA3IDAzMDAgMDMxNSAwMDYyOworMDA2MSAwMzE1IDAzMDAgMDVBRSAwMzA4IDAwNjI7MDBFMCAwNUFFIDAzMDggMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzMDggMDMxNSAwMDYyOzAwRTAgMDVBRSAwMzA4IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzA4IDAzMTUgMDA2MjsKKzAwNjEgMDMwOCAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwRTQgMDVBRSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwOCAwMzAwIDAzMTUgMDA2MjswMEU0IDA1QUUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDggMDMwMCAwMzE1IDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDAzMDkgMDA2MjswMEUwIDA1QUUgMDMwOSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDMwOSAwMzE1IDAwNjI7MDBFMCAwNUFFIDAzMDkgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzMDkgMDMxNSAwMDYyOworMDA2MSAwMzA5IDAzMTUgMDMwMCAwNUFFIDAwNjI7MUVBMyAwNUFFIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzA5IDAzMDAgMDMxNSAwMDYyOzFFQTMgMDVBRSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwOSAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDMwQSAwMDYyOzAwRTAgMDVBRSAwMzBBIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzBBIDAzMTUgMDA2MjswMEUwIDA1QUUgMDMwQSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDMwQSAwMzE1IDAwNjI7CiswMDYxIDAzMEEgMDMxNSAwMzAwIDA1QUUgMDA2MjswMEU1IDA1QUUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMEEgMDMwMCAwMzE1IDAwNjI7MDBFNSAwNUFFIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzBBIDAzMDAgMDMxNSAwMDYyOworMDA2MSAwMzE1IDAzMDAgMDVBRSAwMzBCIDAwNjI7MDBFMCAwNUFFIDAzMEIgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzMEIgMDMxNSAwMDYyOzAwRTAgMDVBRSAwMzBCIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzBCIDAzMTUgMDA2MjsKKzAwNjEgMDMwQiAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwMzBCIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzBCIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzBCIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzBCIDAzMDAgMDMxNSAwMDYyOworMDA2MSAwMzE1IDAzMDAgMDVBRSAwMzBDIDAwNjI7MDBFMCAwNUFFIDAzMEMgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzMEMgMDMxNSAwMDYyOzAwRTAgMDVBRSAwMzBDIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzBDIDAzMTUgMDA2MjsKKzAwNjEgMDMwQyAwMzE1IDAzMDAgMDVBRSAwMDYyOzAxQ0UgMDVBRSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwQyAwMzAwIDAzMTUgMDA2MjswMUNFIDA1QUUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMEMgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDAzMEQgMDA2MjswMEUwIDA1QUUgMDMwRCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDMwRCAwMzE1IDAwNjI7MDBFMCAwNUFFIDAzMEQgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzMEQgMDMxNSAwMDYyOworMDA2MSAwMzBEIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDAzMEQgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMEQgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMEQgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMEQgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDAzMEUgMDA2MjswMEUwIDA1QUUgMDMwRSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDMwRSAwMzE1IDAwNjI7MDBFMCAwNUFFIDAzMEUgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzMEUgMDMxNSAwMDYyOworMDA2MSAwMzBFIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDAzMEUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMEUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMEUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMEUgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDAzMEYgMDA2MjswMEUwIDA1QUUgMDMwRiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDMwRiAwMzE1IDAwNjI7MDBFMCAwNUFFIDAzMEYgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzMEYgMDMxNSAwMDYyOworMDA2MSAwMzBGIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDIwMSAwNUFFIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzBGIDAzMDAgMDMxNSAwMDYyOzAyMDEgMDVBRSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwRiAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDMxMCAwMDYyOzAwRTAgMDVBRSAwMzEwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzEwIDAzMTUgMDA2MjswMEUwIDA1QUUgMDMxMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDMxMCAwMzE1IDAwNjI7CiswMDYxIDAzMTAgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDMxMCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMxMCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMxMCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMxMCAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDMxMSAwMDYyOzAwRTAgMDVBRSAwMzExIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzExIDAzMTUgMDA2MjswMEUwIDA1QUUgMDMxMSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDMxMSAwMzE1IDAwNjI7CiswMDYxIDAzMTEgMDMxNSAwMzAwIDA1QUUgMDA2MjswMjAzIDA1QUUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMTEgMDMwMCAwMzE1IDAwNjI7MDIwMyAwNUFFIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzExIDAzMDAgMDMxNSAwMDYyOworMDA2MSAwMzE1IDAzMDAgMDVBRSAwMzEyIDAwNjI7MDBFMCAwNUFFIDAzMTIgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzMTIgMDMxNSAwMDYyOzAwRTAgMDVBRSAwMzEyIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzEyIDAzMTUgMDA2MjsKKzAwNjEgMDMxMiAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwMzEyIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzEyIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzEyIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzEyIDAzMDAgMDMxNSAwMDYyOworMDA2MSAwMzE1IDAzMDAgMDVBRSAwMzEzIDAwNjI7MDBFMCAwNUFFIDAzMTMgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzMTMgMDMxNSAwMDYyOzAwRTAgMDVBRSAwMzEzIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzEzIDAzMTUgMDA2MjsKKzAwNjEgMDMxMyAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwMzEzIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzEzIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzEzIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzEzIDAzMDAgMDMxNSAwMDYyOworMDA2MSAwMzE1IDAzMDAgMDVBRSAwMzE0IDAwNjI7MDBFMCAwNUFFIDAzMTQgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzMTQgMDMxNSAwMDYyOzAwRTAgMDVBRSAwMzE0IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzE0IDAzMTUgMDA2MjsKKzAwNjEgMDMxNCAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwMzE0IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzE0IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzE0IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzE0IDAzMDAgMDMxNSAwMDYyOworMDA2MSAwMzYyIDAzMTUgMDMwMCAwMzE1IDAwNjI7MDBFMCAwMzE1IDAzMTUgMDM2MiAwMDYyOzAwNjEgMDMwMCAwMzE1IDAzMTUgMDM2MiAwMDYyOzAwRTAgMDMxNSAwMzE1IDAzNjIgMDA2MjswMDYxIDAzMDAgMDMxNSAwMzE1IDAzNjIgMDA2MjsKKzAwNjEgMDMxNSAwMzYyIDAzMTUgMDMwMCAwMDYyOzAwRTAgMDMxNSAwMzE1IDAzNjIgMDA2MjswMDYxIDAzMDAgMDMxNSAwMzE1IDAzNjIgMDA2MjswMEUwIDAzMTUgMDMxNSAwMzYyIDAwNjI7MDA2MSAwMzAwIDAzMTUgMDMxNSAwMzYyIDAwNjI7CiswMDYxIDA1OUEgMDMxNiAzMDJBIDAzMTYgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzE2IDA1OUEgMDA2MjsKKzAwNjEgMDMxNiAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMTYgMDU5QSAwMDYyOworMDA2MSAwNTlBIDAzMTYgMzAyQSAwMzE3IDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMxNyAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMxNyAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMxNyAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMxNyAwNTlBIDAwNjI7CiswMDYxIDAzMTcgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDMxNyAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNyAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNyAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNyAwMzE2IDA1OUEgMDA2MjsKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMDMxOCAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMTggMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMTggMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMTggMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMTggMDU5QSAwMDYyOworMDA2MSAwMzE4IDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDAzMTggMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTggMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTggMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTggMDMxNiAwNTlBIDAwNjI7CiswMDYxIDA1OUEgMDMxNiAzMDJBIDAzMTkgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzE5IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzE5IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzE5IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzE5IDA1OUEgMDA2MjsKKzAwNjEgMDMxOSAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAwMzE5IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE5IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE5IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE5IDAzMTYgMDU5QSAwMDYyOworMDA2MSAwMzYyIDAzMTUgMDMwMCAwMzFBIDAwNjI7MDBFMCAwMzE1IDAzMUEgMDM2MiAwMDYyOzAwNjEgMDMwMCAwMzE1IDAzMUEgMDM2MiAwMDYyOzAwRTAgMDMxNSAwMzFBIDAzNjIgMDA2MjswMDYxIDAzMDAgMDMxNSAwMzFBIDAzNjIgMDA2MjsKKzAwNjEgMDMxQSAwMzYyIDAzMTUgMDMwMCAwMDYyOzAwRTAgMDMxQSAwMzE1IDAzNjIgMDA2MjswMDYxIDAzMDAgMDMxQSAwMzE1IDAzNjIgMDA2MjswMEUwIDAzMUEgMDMxNSAwMzYyIDAwNjI7MDA2MSAwMzAwIDAzMUEgMDMxNSAwMzYyIDAwNjI7CiswMDYxIDMwMkEgMDMxQiAwMzIxIDAzMUIgMDA2MjswMDYxIDAzMjEgMDMxQiAwMzFCIDMwMkEgMDA2MjswMDYxIDAzMjEgMDMxQiAwMzFCIDMwMkEgMDA2MjswMDYxIDAzMjEgMDMxQiAwMzFCIDMwMkEgMDA2MjswMDYxIDAzMjEgMDMxQiAwMzFCIDMwMkEgMDA2MjsKKzAwNjEgMDMxQiAzMDJBIDAzMUIgMDMyMSAwMDYyOzAwNjEgMDMyMSAwMzFCIDAzMUIgMzAyQSAwMDYyOzAwNjEgMDMyMSAwMzFCIDAzMUIgMzAyQSAwMDYyOzAwNjEgMDMyMSAwMzFCIDAzMUIgMzAyQSAwMDYyOzAwNjEgMDMyMSAwMzFCIDAzMUIgMzAyQSAwMDYyOworMDA2MSAwNTlBIDAzMTYgMzAyQSAwMzFDIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMxQyAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMxQyAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMxQyAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMxQyAwNTlBIDAwNjI7CiswMDYxIDAzMUMgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDMxQyAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxQyAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxQyAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxQyAwMzE2IDA1OUEgMDA2MjsKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMDMxRCAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMUQgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMUQgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMUQgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMUQgMDU5QSAwMDYyOworMDA2MSAwMzFEIDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDAzMUQgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMUQgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMUQgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMUQgMDMxNiAwNTlBIDAwNjI7CiswMDYxIDA1OUEgMDMxNiAzMDJBIDAzMUUgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzFFIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzFFIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzFFIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzFFIDA1OUEgMDA2MjsKKzAwNjEgMDMxRSAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAwMzFFIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzFFIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzFFIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzFFIDAzMTYgMDU5QSAwMDYyOworMDA2MSAwNTlBIDAzMTYgMzAyQSAwMzFGIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMxRiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMxRiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMxRiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMxRiAwNTlBIDAwNjI7CiswMDYxIDAzMUYgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDMxRiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxRiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxRiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxRiAwMzE2IDA1OUEgMDA2MjsKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMDMyMCAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMjAgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMjAgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMjAgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMjAgMDU5QSAwMDYyOworMDA2MSAwMzIwIDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDAzMjAgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMjAgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMjAgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMjAgMDMxNiAwNTlBIDAwNjI7CiswMDYxIDAzMUIgMDMyMSAwRjc0IDAzMjEgMDA2MjswMDYxIDBGNzQgMDMyMSAwMzIxIDAzMUIgMDA2MjswMDYxIDBGNzQgMDMyMSAwMzIxIDAzMUIgMDA2MjswMDYxIDBGNzQgMDMyMSAwMzIxIDAzMUIgMDA2MjswMDYxIDBGNzQgMDMyMSAwMzIxIDAzMUIgMDA2MjsKKzAwNjEgMDMyMSAwMzFCIDAzMjEgMEY3NCAwMDYyOzAwNjEgMEY3NCAwMzIxIDAzMjEgMDMxQiAwMDYyOzAwNjEgMEY3NCAwMzIxIDAzMjEgMDMxQiAwMDYyOzAwNjEgMEY3NCAwMzIxIDAzMjEgMDMxQiAwMDYyOzAwNjEgMEY3NCAwMzIxIDAzMjEgMDMxQiAwMDYyOworMDA2MSAwMzFCIDAzMjEgMEY3NCAwMzIyIDAwNjI7MDA2MSAwRjc0IDAzMjEgMDMyMiAwMzFCIDAwNjI7MDA2MSAwRjc0IDAzMjEgMDMyMiAwMzFCIDAwNjI7MDA2MSAwRjc0IDAzMjEgMDMyMiAwMzFCIDAwNjI7MDA2MSAwRjc0IDAzMjEgMDMyMiAwMzFCIDAwNjI7CiswMDYxIDAzMjIgMDMxQiAwMzIxIDBGNzQgMDA2MjswMDYxIDBGNzQgMDMyMiAwMzIxIDAzMUIgMDA2MjswMDYxIDBGNzQgMDMyMiAwMzIxIDAzMUIgMDA2MjswMDYxIDBGNzQgMDMyMiAwMzIxIDAzMUIgMDA2MjswMDYxIDBGNzQgMDMyMiAwMzIxIDAzMUIgMDA2MjsKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMDMyMyAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMjMgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMjMgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMjMgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMjMgMDU5QSAwMDYyOworMDA2MSAwMzIzIDA1OUEgMDMxNiAzMDJBIDAwNjI7MUVBMSAzMDJBIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzIzIDAzMTYgMDU5QSAwMDYyOzFFQTEgMzAyQSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMyMyAwMzE2IDA1OUEgMDA2MjsKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMDMyNCAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMjQgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMjQgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMjQgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMjQgMDU5QSAwMDYyOworMDA2MSAwMzI0IDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDAzMjQgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMjQgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMjQgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMjQgMDMxNiAwNTlBIDAwNjI7CiswMDYxIDA1OUEgMDMxNiAzMDJBIDAzMjUgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzI1IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzI1IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzI1IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzI1IDA1OUEgMDA2MjsKKzAwNjEgMDMyNSAwNTlBIDAzMTYgMzAyQSAwMDYyOzFFMDEgMzAyQSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMyNSAwMzE2IDA1OUEgMDA2MjsxRTAxIDMwMkEgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMjUgMDMxNiAwNTlBIDAwNjI7CiswMDYxIDA1OUEgMDMxNiAzMDJBIDAzMjYgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzI2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzI2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzI2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzI2IDA1OUEgMDA2MjsKKzAwNjEgMDMyNiAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAwMzI2IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzI2IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzI2IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzI2IDAzMTYgMDU5QSAwMDYyOworMDA2MSAwMzFCIDAzMjEgMEY3NCAwMzI3IDAwNjI7MDA2MSAwRjc0IDAzMjEgMDMyNyAwMzFCIDAwNjI7MDA2MSAwRjc0IDAzMjEgMDMyNyAwMzFCIDAwNjI7MDA2MSAwRjc0IDAzMjEgMDMyNyAwMzFCIDAwNjI7MDA2MSAwRjc0IDAzMjEgMDMyNyAwMzFCIDAwNjI7CiswMDYxIDAzMjcgMDMxQiAwMzIxIDBGNzQgMDA2MjswMDYxIDBGNzQgMDMyNyAwMzIxIDAzMUIgMDA2MjswMDYxIDBGNzQgMDMyNyAwMzIxIDAzMUIgMDA2MjswMDYxIDBGNzQgMDMyNyAwMzIxIDAzMUIgMDA2MjswMDYxIDBGNzQgMDMyNyAwMzIxIDAzMUIgMDA2MjsKKzAwNjEgMDMxQiAwMzIxIDBGNzQgMDMyOCAwMDYyOzAwNjEgMEY3NCAwMzIxIDAzMjggMDMxQiAwMDYyOzAwNjEgMEY3NCAwMzIxIDAzMjggMDMxQiAwMDYyOzAwNjEgMEY3NCAwMzIxIDAzMjggMDMxQiAwMDYyOzAwNjEgMEY3NCAwMzIxIDAzMjggMDMxQiAwMDYyOworMDA2MSAwMzI4IDAzMUIgMDMyMSAwRjc0IDAwNjI7MDEwNSAwRjc0IDAzMjEgMDMxQiAwMDYyOzAwNjEgMEY3NCAwMzI4IDAzMjEgMDMxQiAwMDYyOzAxMDUgMEY3NCAwMzIxIDAzMUIgMDA2MjswMDYxIDBGNzQgMDMyOCAwMzIxIDAzMUIgMDA2MjsKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMDMyOSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMjkgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMjkgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMjkgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMjkgMDU5QSAwMDYyOworMDA2MSAwMzI5IDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDAzMjkgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMjkgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMjkgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMjkgMDMxNiAwNTlBIDAwNjI7CiswMDYxIDA1OUEgMDMxNiAzMDJBIDAzMkEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzJBIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzJBIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzJBIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzJBIDA1OUEgMDA2MjsKKzAwNjEgMDMyQSAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAwMzJBIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzJBIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzJBIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzJBIDAzMTYgMDU5QSAwMDYyOworMDA2MSAwNTlBIDAzMTYgMzAyQSAwMzJCIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMyQiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMyQiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMyQiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMyQiAwNTlBIDAwNjI7CiswMDYxIDAzMkIgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDMyQiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMyQiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMyQiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMyQiAwMzE2IDA1OUEgMDA2MjsKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMDMyQyAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMkMgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMkMgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMkMgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMkMgMDU5QSAwMDYyOworMDA2MSAwMzJDIDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDAzMkMgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMkMgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMkMgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMkMgMDMxNiAwNTlBIDAwNjI7CiswMDYxIDA1OUEgMDMxNiAzMDJBIDAzMkQgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzJEIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzJEIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzJEIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzJEIDA1OUEgMDA2MjsKKzAwNjEgMDMyRCAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAwMzJEIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzJEIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzJEIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzJEIDAzMTYgMDU5QSAwMDYyOworMDA2MSAwNTlBIDAzMTYgMzAyQSAwMzJFIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMyRSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMyRSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMyRSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMyRSAwNTlBIDAwNjI7CiswMDYxIDAzMkUgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDMyRSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMyRSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMyRSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMyRSAwMzE2IDA1OUEgMDA2MjsKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMDMyRiAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMkYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMkYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMkYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMkYgMDU5QSAwMDYyOworMDA2MSAwMzJGIDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDAzMkYgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMkYgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMkYgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMkYgMDMxNiAwNTlBIDAwNjI7CiswMDYxIDA1OUEgMDMxNiAzMDJBIDAzMzAgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzMwIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzMwIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzMwIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzMwIDA1OUEgMDA2MjsKKzAwNjEgMDMzMCAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAwMzMwIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzMwIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzMwIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzMwIDAzMTYgMDU5QSAwMDYyOworMDA2MSAwNTlBIDAzMTYgMzAyQSAwMzMxIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMzMSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMzMSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMzMSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMzMSAwNTlBIDAwNjI7CiswMDYxIDAzMzEgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDMzMSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMzMSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMzMSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMzMSAwMzE2IDA1OUEgMDA2MjsKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMDMzMiAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMzIgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMzIgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMzIgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMzIgMDU5QSAwMDYyOworMDA2MSAwMzMyIDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDAzMzIgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMzIgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMzIgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMzIgMDMxNiAwNTlBIDAwNjI7CiswMDYxIDA1OUEgMDMxNiAzMDJBIDAzMzMgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzMzIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzMzIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzMzIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzMzIDA1OUEgMDA2MjsKKzAwNjEgMDMzMyAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAwMzMzIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzMzIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzMzIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzMzIDAzMTYgMDU5QSAwMDYyOworMDA2MSAwOTNDIDAzMzQgMDMzNCAwMDYyOzAwNjEgMDMzNCAwMzM0IDA5M0MgMDA2MjswMDYxIDAzMzQgMDMzNCAwOTNDIDAwNjI7MDA2MSAwMzM0IDAzMzQgMDkzQyAwMDYyOzAwNjEgMDMzNCAwMzM0IDA5M0MgMDA2MjsKKzAwNjEgMDMzNCAwOTNDIDAzMzQgMDA2MjswMDYxIDAzMzQgMDMzNCAwOTNDIDAwNjI7MDA2MSAwMzM0IDAzMzQgMDkzQyAwMDYyOzAwNjEgMDMzNCAwMzM0IDA5M0MgMDA2MjswMDYxIDAzMzQgMDMzNCAwOTNDIDAwNjI7CiswMDYxIDA5M0MgMDMzNCAwMzM1IDAwNjI7MDA2MSAwMzM0IDAzMzUgMDkzQyAwMDYyOzAwNjEgMDMzNCAwMzM1IDA5M0MgMDA2MjswMDYxIDAzMzQgMDMzNSAwOTNDIDAwNjI7MDA2MSAwMzM0IDAzMzUgMDkzQyAwMDYyOworMDA2MSAwMzM1IDA5M0MgMDMzNCAwMDYyOzAwNjEgMDMzNSAwMzM0IDA5M0MgMDA2MjswMDYxIDAzMzUgMDMzNCAwOTNDIDAwNjI7MDA2MSAwMzM1IDAzMzQgMDkzQyAwMDYyOzAwNjEgMDMzNSAwMzM0IDA5M0MgMDA2MjsKKzAwNjEgMDkzQyAwMzM0IDAzMzYgMDA2MjswMDYxIDAzMzQgMDMzNiAwOTNDIDAwNjI7MDA2MSAwMzM0IDAzMzYgMDkzQyAwMDYyOzAwNjEgMDMzNCAwMzM2IDA5M0MgMDA2MjswMDYxIDAzMzQgMDMzNiAwOTNDIDAwNjI7CiswMDYxIDAzMzYgMDkzQyAwMzM0IDAwNjI7MDA2MSAwMzM2IDAzMzQgMDkzQyAwMDYyOzAwNjEgMDMzNiAwMzM0IDA5M0MgMDA2MjswMDYxIDAzMzYgMDMzNCAwOTNDIDAwNjI7MDA2MSAwMzM2IDAzMzQgMDkzQyAwMDYyOworMDA2MSAwOTNDIDAzMzQgMDMzNyAwMDYyOzAwNjEgMDMzNCAwMzM3IDA5M0MgMDA2MjswMDYxIDAzMzQgMDMzNyAwOTNDIDAwNjI7MDA2MSAwMzM0IDAzMzcgMDkzQyAwMDYyOzAwNjEgMDMzNCAwMzM3IDA5M0MgMDA2MjsKKzAwNjEgMDMzNyAwOTNDIDAzMzQgMDA2MjswMDYxIDAzMzcgMDMzNCAwOTNDIDAwNjI7MDA2MSAwMzM3IDAzMzQgMDkzQyAwMDYyOzAwNjEgMDMzNyAwMzM0IDA5M0MgMDA2MjswMDYxIDAzMzcgMDMzNCAwOTNDIDAwNjI7CiswMDYxIDA5M0MgMDMzNCAwMzM4IDAwNjI7MDA2MSAwMzM0IDAzMzggMDkzQyAwMDYyOzAwNjEgMDMzNCAwMzM4IDA5M0MgMDA2MjswMDYxIDAzMzQgMDMzOCAwOTNDIDAwNjI7MDA2MSAwMzM0IDAzMzggMDkzQyAwMDYyOworMDA2MSAwMzM4IDA5M0MgMDMzNCAwMDYyOzAwNjEgMDMzOCAwMzM0IDA5M0MgMDA2MjswMDYxIDAzMzggMDMzNCAwOTNDIDAwNjI7MDA2MSAwMzM4IDAzMzQgMDkzQyAwMDYyOzAwNjEgMDMzOCAwMzM0IDA5M0MgMDA2MjsKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMDMzOSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMzkgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMzkgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMzkgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMzkgMDU5QSAwMDYyOworMDA2MSAwMzM5IDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDAzMzkgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMzkgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMzkgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMzkgMDMxNiAwNTlBIDAwNjI7CiswMDYxIDA1OUEgMDMxNiAzMDJBIDAzM0EgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzNBIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzNBIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzNBIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzNBIDA1OUEgMDA2MjsKKzAwNjEgMDMzQSAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAwMzNBIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzNBIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzNBIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzNBIDAzMTYgMDU5QSAwMDYyOworMDA2MSAwNTlBIDAzMTYgMzAyQSAwMzNCIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMzQiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMzQiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMzQiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMzQiAwNTlBIDAwNjI7CiswMDYxIDAzM0IgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDMzQiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMzQiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMzQiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMzQiAwMzE2IDA1OUEgMDA2MjsKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMDMzQyAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzM0MgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzM0MgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzM0MgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzM0MgMDU5QSAwMDYyOworMDA2MSAwMzNDIDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDAzM0MgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzM0MgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzM0MgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzM0MgMDMxNiAwNTlBIDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDAzM0QgMDA2MjswMEUwIDA1QUUgMDMzRCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDMzRCAwMzE1IDAwNjI7MDBFMCAwNUFFIDAzM0QgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzM0QgMDMxNSAwMDYyOworMDA2MSAwMzNEIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDAzM0QgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzM0QgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzM0QgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzM0QgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDAzM0UgMDA2MjswMEUwIDA1QUUgMDMzRSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDMzRSAwMzE1IDAwNjI7MDBFMCAwNUFFIDAzM0UgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzM0UgMDMxNSAwMDYyOworMDA2MSAwMzNFIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDAzM0UgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzM0UgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzM0UgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzM0UgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDAzM0YgMDA2MjswMEUwIDA1QUUgMDMzRiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDMzRiAwMzE1IDAwNjI7MDBFMCAwNUFFIDAzM0YgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzM0YgMDMxNSAwMDYyOworMDA2MSAwMzNGIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDAzM0YgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzM0YgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzM0YgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzM0YgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDAzNDAgMDA2MjswMEUwIDA1QUUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDMwMCAwMzE1IDAwNjI7MDBFMCAwNUFFIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzMDAgMDMxNSAwMDYyOworMDA2MSAwMzQwIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDBFMCAwNUFFIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzMDAgMDMxNSAwMDYyOzAwRTAgMDVBRSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDM0MSAwMDYyOzAwRTAgMDVBRSAwMzAxIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzAxIDAzMTUgMDA2MjswMEUwIDA1QUUgMDMwMSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDMwMSAwMzE1IDAwNjI7CiswMDYxIDAzNDEgMDMxNSAwMzAwIDA1QUUgMDA2MjswMEUxIDA1QUUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDEgMDMwMCAwMzE1IDAwNjI7MDBFMSAwNUFFIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAxIDAzMDAgMDMxNSAwMDYyOworMDA2MSAwMzE1IDAzMDAgMDVBRSAwMzQyIDAwNjI7MDBFMCAwNUFFIDAzNDIgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzNDIgMDMxNSAwMDYyOzAwRTAgMDVBRSAwMzQyIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzQyIDAzMTUgMDA2MjsKKzAwNjEgMDM0MiAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwMzQyIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzQyIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzQyIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzQyIDAzMDAgMDMxNSAwMDYyOworMDA2MSAwMzE1IDAzMDAgMDVBRSAwMzQzIDAwNjI7MDBFMCAwNUFFIDAzMTMgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzMTMgMDMxNSAwMDYyOzAwRTAgMDVBRSAwMzEzIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzEzIDAzMTUgMDA2MjsKKzAwNjEgMDM0MyAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwMzEzIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzEzIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzEzIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzEzIDAzMDAgMDMxNSAwMDYyOworMDA2MSAwMzE1IDAzMDAgMDVBRSAwMzQ0IDAwNjI7MDBFMCAwNUFFIDAzMDggMDMwMSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDMwOCAwMzAxIDAzMTUgMDA2MjswMEUwIDA1QUUgMDMwOCAwMzAxIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzA4IDAzMDEgMDMxNSAwMDYyOworMDA2MSAwMzQ0IDAzMTUgMDMwMCAwNUFFIDAwNjI7MDBFNCAwNUFFIDAzMDEgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDggMDMwMSAwMzAwIDAzMTUgMDA2MjswMEU0IDA1QUUgMDMwMSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwOCAwMzAxIDAzMDAgMDMxNSAwMDYyOworMDA2MSAwMzQ1IDAzNjAgMDM0NSAwMDYyOzAwNjEgMDM2MCAwMzQ1IDAzNDUgMDA2MjswMDYxIDAzNjAgMDM0NSAwMzQ1IDAwNjI7MDA2MSAwMzYwIDAzNDUgMDM0NSAwMDYyOzAwNjEgMDM2MCAwMzQ1IDAzNDUgMDA2MjsKKzAwNjEgMDM0NSAwMzQ1IDAzNjAgMDA2MjswMDYxIDAzNjAgMDM0NSAwMzQ1IDAwNjI7MDA2MSAwMzYwIDAzNDUgMDM0NSAwMDYyOzAwNjEgMDM2MCAwMzQ1IDAzNDUgMDA2MjswMDYxIDAzNjAgMDM0NSAwMzQ1IDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDAzNDYgMDA2MjswMEUwIDA1QUUgMDM0NiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDM0NiAwMzE1IDAwNjI7MDBFMCAwNUFFIDAzNDYgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzNDYgMDMxNSAwMDYyOworMDA2MSAwMzQ2IDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDAzNDYgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzNDYgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzNDYgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzNDYgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDA1OUEgMDMxNiAzMDJBIDAzNDcgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzQ3IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzQ3IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzQ3IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzQ3IDA1OUEgMDA2MjsKKzAwNjEgMDM0NyAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAwMzQ3IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzQ3IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzQ3IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzQ3IDAzMTYgMDU5QSAwMDYyOworMDA2MSAwNTlBIDAzMTYgMzAyQSAwMzQ4IDAwNjI7MDA2MSAzMDJBIDAzMTYgMDM0OCAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDM0OCAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDM0OCAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDM0OCAwNTlBIDAwNjI7CiswMDYxIDAzNDggMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDM0OCAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDM0OCAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDM0OCAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDM0OCAwMzE2IDA1OUEgMDA2MjsKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMDM0OSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzNDkgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzNDkgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzNDkgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzNDkgMDU5QSAwMDYyOworMDA2MSAwMzQ5IDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDAzNDkgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzNDkgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzNDkgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzNDkgMDMxNiAwNTlBIDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDAzNEEgMDA2MjswMEUwIDA1QUUgMDM0QSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDM0QSAwMzE1IDAwNjI7MDBFMCAwNUFFIDAzNEEgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzNEEgMDMxNSAwMDYyOworMDA2MSAwMzRBIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDAzNEEgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzNEEgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzNEEgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzNEEgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDAzNEIgMDA2MjswMEUwIDA1QUUgMDM0QiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDM0QiAwMzE1IDAwNjI7MDBFMCAwNUFFIDAzNEIgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzNEIgMDMxNSAwMDYyOworMDA2MSAwMzRCIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDAzNEIgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzNEIgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzNEIgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzNEIgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDAzNEMgMDA2MjswMEUwIDA1QUUgMDM0QyAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDM0QyAwMzE1IDAwNjI7MDBFMCAwNUFFIDAzNEMgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzNEMgMDMxNSAwMDYyOworMDA2MSAwMzRDIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDAzNEMgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzNEMgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzNEMgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzNEMgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDA1OUEgMDMxNiAzMDJBIDAzNEQgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzREIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzREIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzREIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzREIDA1OUEgMDA2MjsKKzAwNjEgMDM0RCAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAwMzREIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzREIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzREIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzREIDAzMTYgMDU5QSAwMDYyOworMDA2MSAwNTlBIDAzMTYgMzAyQSAwMzRFIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDM0RSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDM0RSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDM0RSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDM0RSAwNTlBIDAwNjI7CiswMDYxIDAzNEUgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDM0RSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDM0RSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDM0RSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDM0RSAwMzE2IDA1OUEgMDA2MjsKKzAwNjEgMDM0NSAwMzYwIDAzNjIgMDM2MCAwMDYyOzAwNjEgMDM2MiAwMzYwIDAzNjAgMDM0NSAwMDYyOzAwNjEgMDM2MiAwMzYwIDAzNjAgMDM0NSAwMDYyOzAwNjEgMDM2MiAwMzYwIDAzNjAgMDM0NSAwMDYyOzAwNjEgMDM2MiAwMzYwIDAzNjAgMDM0NSAwMDYyOworMDA2MSAwMzYwIDAzNDUgMDM2MCAwMzYyIDAwNjI7MDA2MSAwMzYyIDAzNjAgMDM2MCAwMzQ1IDAwNjI7MDA2MSAwMzYyIDAzNjAgMDM2MCAwMzQ1IDAwNjI7MDA2MSAwMzYyIDAzNjAgMDM2MCAwMzQ1IDAwNjI7MDA2MSAwMzYyIDAzNjAgMDM2MCAwMzQ1IDAwNjI7CiswMDYxIDAzNDUgMDM2MCAwMzYyIDAzNjEgMDA2MjswMDYxIDAzNjIgMDM2MCAwMzYxIDAzNDUgMDA2MjswMDYxIDAzNjIgMDM2MCAwMzYxIDAzNDUgMDA2MjswMDYxIDAzNjIgMDM2MCAwMzYxIDAzNDUgMDA2MjswMDYxIDAzNjIgMDM2MCAwMzYxIDAzNDUgMDA2MjsKKzAwNjEgMDM2MSAwMzQ1IDAzNjAgMDM2MiAwMDYyOzAwNjEgMDM2MiAwMzYxIDAzNjAgMDM0NSAwMDYyOzAwNjEgMDM2MiAwMzYxIDAzNjAgMDM0NSAwMDYyOzAwNjEgMDM2MiAwMzYxIDAzNjAgMDM0NSAwMDYyOzAwNjEgMDM2MiAwMzYxIDAzNjAgMDM0NSAwMDYyOworMDA2MSAwMzYwIDAzNjIgMDMxNSAwMzYyIDAwNjI7MDA2MSAwMzE1IDAzNjIgMDM2MiAwMzYwIDAwNjI7MDA2MSAwMzE1IDAzNjIgMDM2MiAwMzYwIDAwNjI7MDA2MSAwMzE1IDAzNjIgMDM2MiAwMzYwIDAwNjI7MDA2MSAwMzE1IDAzNjIgMDM2MiAwMzYwIDAwNjI7CiswMDYxIDAzNjIgMDM2MCAwMzYyIDAzMTUgMDA2MjswMDYxIDAzMTUgMDM2MiAwMzYyIDAzNjAgMDA2MjswMDYxIDAzMTUgMDM2MiAwMzYyIDAzNjAgMDA2MjswMDYxIDAzMTUgMDM2MiAwMzYyIDAzNjAgMDA2MjswMDYxIDAzMTUgMDM2MiAwMzYyIDAzNjAgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDM2MyAwMDYyOzAwRTAgMDVBRSAwMzYzIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzYzIDAzMTUgMDA2MjswMEUwIDA1QUUgMDM2MyAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDM2MyAwMzE1IDAwNjI7CiswMDYxIDAzNjMgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDM2MyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDM2MyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDM2MyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDM2MyAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDM2NCAwMDYyOzAwRTAgMDVBRSAwMzY0IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzY0IDAzMTUgMDA2MjswMEUwIDA1QUUgMDM2NCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDM2NCAwMzE1IDAwNjI7CiswMDYxIDAzNjQgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDM2NCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDM2NCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDM2NCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDM2NCAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDM2NSAwMDYyOzAwRTAgMDVBRSAwMzY1IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzY1IDAzMTUgMDA2MjswMEUwIDA1QUUgMDM2NSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDM2NSAwMzE1IDAwNjI7CiswMDYxIDAzNjUgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDM2NSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDM2NSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDM2NSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDM2NSAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDM2NiAwMDYyOzAwRTAgMDVBRSAwMzY2IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzY2IDAzMTUgMDA2MjswMEUwIDA1QUUgMDM2NiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDM2NiAwMzE1IDAwNjI7CiswMDYxIDAzNjYgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDM2NiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDM2NiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDM2NiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDM2NiAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDM2NyAwMDYyOzAwRTAgMDVBRSAwMzY3IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzY3IDAzMTUgMDA2MjswMEUwIDA1QUUgMDM2NyAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDM2NyAwMzE1IDAwNjI7CiswMDYxIDAzNjcgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDM2NyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDM2NyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDM2NyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDM2NyAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDM2OCAwMDYyOzAwRTAgMDVBRSAwMzY4IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzY4IDAzMTUgMDA2MjswMEUwIDA1QUUgMDM2OCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDM2OCAwMzE1IDAwNjI7CiswMDYxIDAzNjggMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDM2OCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDM2OCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDM2OCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDM2OCAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDM2OSAwMDYyOzAwRTAgMDVBRSAwMzY5IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzY5IDAzMTUgMDA2MjswMEUwIDA1QUUgMDM2OSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDM2OSAwMzE1IDAwNjI7CiswMDYxIDAzNjkgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDM2OSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDM2OSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDM2OSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDM2OSAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDM2QSAwMDYyOzAwRTAgMDVBRSAwMzZBIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzZBIDAzMTUgMDA2MjswMEUwIDA1QUUgMDM2QSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDM2QSAwMzE1IDAwNjI7CiswMDYxIDAzNkEgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDM2QSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDM2QSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDM2QSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDM2QSAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDM2QiAwMDYyOzAwRTAgMDVBRSAwMzZCIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzZCIDAzMTUgMDA2MjswMEUwIDA1QUUgMDM2QiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDM2QiAwMzE1IDAwNjI7CiswMDYxIDAzNkIgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDM2QiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDM2QiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDM2QiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDM2QiAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDM2QyAwMDYyOzAwRTAgMDVBRSAwMzZDIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzZDIDAzMTUgMDA2MjswMEUwIDA1QUUgMDM2QyAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDM2QyAwMzE1IDAwNjI7CiswMDYxIDAzNkMgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDM2QyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDM2QyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDM2QyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDM2QyAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDM2RCAwMDYyOzAwRTAgMDVBRSAwMzZEIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzZEIDAzMTUgMDA2MjswMEUwIDA1QUUgMDM2RCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDM2RCAwMzE1IDAwNjI7CiswMDYxIDAzNkQgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDM2RCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDM2RCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDM2RCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDM2RCAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDM2RSAwMDYyOzAwRTAgMDVBRSAwMzZFIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzZFIDAzMTUgMDA2MjswMEUwIDA1QUUgMDM2RSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDM2RSAwMzE1IDAwNjI7CiswMDYxIDAzNkUgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDM2RSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDM2RSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDM2RSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDM2RSAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDM2RiAwMDYyOzAwRTAgMDVBRSAwMzZGIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzZGIDAzMTUgMDA2MjswMEUwIDA1QUUgMDM2RiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDM2RiAwMzE1IDAwNjI7CiswMDYxIDAzNkYgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDM2RiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDM2RiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDM2RiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDM2RiAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDQ4MyAwMDYyOzAwRTAgMDVBRSAwNDgzIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNDgzIDAzMTUgMDA2MjswMEUwIDA1QUUgMDQ4MyAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDQ4MyAwMzE1IDAwNjI7CiswMDYxIDA0ODMgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDQ4MyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDQ4MyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDQ4MyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDQ4MyAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDQ4NCAwMDYyOzAwRTAgMDVBRSAwNDg0IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNDg0IDAzMTUgMDA2MjswMEUwIDA1QUUgMDQ4NCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDQ4NCAwMzE1IDAwNjI7CiswMDYxIDA0ODQgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDQ4NCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDQ4NCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDQ4NCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDQ4NCAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDQ4NSAwMDYyOzAwRTAgMDVBRSAwNDg1IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNDg1IDAzMTUgMDA2MjswMEUwIDA1QUUgMDQ4NSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDQ4NSAwMzE1IDAwNjI7CiswMDYxIDA0ODUgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDQ4NSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDQ4NSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDQ4NSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDQ4NSAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDQ4NiAwMDYyOzAwRTAgMDVBRSAwNDg2IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNDg2IDAzMTUgMDA2MjswMEUwIDA1QUUgMDQ4NiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDQ4NiAwMzE1IDAwNjI7CiswMDYxIDA0ODYgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDQ4NiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDQ4NiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDQ4NiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDQ4NiAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMDU5MSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA1OTEgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA1OTEgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA1OTEgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA1OTEgMDU5QSAwMDYyOworMDA2MSAwNTkxIDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDA1OTEgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA1OTEgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA1OTEgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA1OTEgMDMxNiAwNTlBIDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDA1OTIgMDA2MjswMEUwIDA1QUUgMDU5MiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDU5MiAwMzE1IDAwNjI7MDBFMCAwNUFFIDA1OTIgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA1OTIgMDMxNSAwMDYyOworMDA2MSAwNTkyIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA1OTIgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1OTIgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1OTIgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1OTIgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDA1OTMgMDA2MjswMEUwIDA1QUUgMDU5MyAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDU5MyAwMzE1IDAwNjI7MDBFMCAwNUFFIDA1OTMgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA1OTMgMDMxNSAwMDYyOworMDA2MSAwNTkzIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA1OTMgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1OTMgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1OTMgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1OTMgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDA1OTQgMDA2MjswMEUwIDA1QUUgMDU5NCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDU5NCAwMzE1IDAwNjI7MDBFMCAwNUFFIDA1OTQgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA1OTQgMDMxNSAwMDYyOworMDA2MSAwNTk0IDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA1OTQgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1OTQgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1OTQgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1OTQgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDA1OTUgMDA2MjswMEUwIDA1QUUgMDU5NSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDU5NSAwMzE1IDAwNjI7MDBFMCAwNUFFIDA1OTUgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA1OTUgMDMxNSAwMDYyOworMDA2MSAwNTk1IDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA1OTUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1OTUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1OTUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1OTUgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDA1OUEgMDMxNiAzMDJBIDA1OTYgMDA2MjswMDYxIDMwMkEgMDMxNiAwNTk2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNTk2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNTk2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNTk2IDA1OUEgMDA2MjsKKzAwNjEgMDU5NiAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAwNTk2IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNTk2IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNTk2IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNTk2IDAzMTYgMDU5QSAwMDYyOworMDA2MSAwMzE1IDAzMDAgMDVBRSAwNTk3IDAwNjI7MDBFMCAwNUFFIDA1OTcgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA1OTcgMDMxNSAwMDYyOzAwRTAgMDVBRSAwNTk3IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNTk3IDAzMTUgMDA2MjsKKzAwNjEgMDU5NyAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwNTk3IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNTk3IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNTk3IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNTk3IDAzMDAgMDMxNSAwMDYyOworMDA2MSAwMzE1IDAzMDAgMDVBRSAwNTk4IDAwNjI7MDBFMCAwNUFFIDA1OTggMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA1OTggMDMxNSAwMDYyOzAwRTAgMDVBRSAwNTk4IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNTk4IDAzMTUgMDA2MjsKKzAwNjEgMDU5OCAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwNTk4IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNTk4IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNTk4IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNTk4IDAzMDAgMDMxNSAwMDYyOworMDA2MSAwMzE1IDAzMDAgMDVBRSAwNTk5IDAwNjI7MDBFMCAwNUFFIDA1OTkgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA1OTkgMDMxNSAwMDYyOzAwRTAgMDVBRSAwNTk5IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNTk5IDAzMTUgMDA2MjsKKzAwNjEgMDU5OSAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwNTk5IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNTk5IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNTk5IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNTk5IDAzMDAgMDMxNSAwMDYyOworMDA2MSAzMDJFIDA1OUEgMDMxNiAwNTlBIDAwNjI7MDA2MSAwMzE2IDA1OUEgMDU5QSAzMDJFIDAwNjI7MDA2MSAwMzE2IDA1OUEgMDU5QSAzMDJFIDAwNjI7MDA2MSAwMzE2IDA1OUEgMDU5QSAzMDJFIDAwNjI7MDA2MSAwMzE2IDA1OUEgMDU5QSAzMDJFIDAwNjI7CiswMDYxIDA1OUEgMzAyRSAwNTlBIDAzMTYgMDA2MjswMDYxIDAzMTYgMDU5QSAwNTlBIDMwMkUgMDA2MjswMDYxIDAzMTYgMDU5QSAwNTlBIDMwMkUgMDA2MjswMDYxIDAzMTYgMDU5QSAwNTlBIDMwMkUgMDA2MjswMDYxIDAzMTYgMDU5QSAwNTlBIDMwMkUgMDA2MjsKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMDU5QiAwMDYyOzAwNjEgMzAyQSAwMzE2IDA1OUIgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA1OUIgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA1OUIgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA1OUIgMDU5QSAwMDYyOworMDA2MSAwNTlCIDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDA1OUIgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA1OUIgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA1OUIgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA1OUIgMDMxNiAwNTlBIDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDA1OUMgMDA2MjswMEUwIDA1QUUgMDU5QyAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDU5QyAwMzE1IDAwNjI7MDBFMCAwNUFFIDA1OUMgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA1OUMgMDMxNSAwMDYyOworMDA2MSAwNTlDIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA1OUMgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1OUMgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1OUMgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1OUMgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDA1OUQgMDA2MjswMEUwIDA1QUUgMDU5RCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDU5RCAwMzE1IDAwNjI7MDBFMCAwNUFFIDA1OUQgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA1OUQgMDMxNSAwMDYyOworMDA2MSAwNTlEIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA1OUQgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1OUQgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1OUQgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1OUQgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDA1OUUgMDA2MjswMEUwIDA1QUUgMDU5RSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDU5RSAwMzE1IDAwNjI7MDBFMCAwNUFFIDA1OUUgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA1OUUgMDMxNSAwMDYyOworMDA2MSAwNTlFIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA1OUUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1OUUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1OUUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1OUUgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDA1OUYgMDA2MjswMEUwIDA1QUUgMDU5RiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDU5RiAwMzE1IDAwNjI7MDBFMCAwNUFFIDA1OUYgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA1OUYgMDMxNSAwMDYyOworMDA2MSAwNTlGIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA1OUYgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1OUYgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1OUYgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1OUYgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDA1QTAgMDA2MjswMEUwIDA1QUUgMDVBMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDVBMCAwMzE1IDAwNjI7MDBFMCAwNUFFIDA1QTAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA1QTAgMDMxNSAwMDYyOworMDA2MSAwNUEwIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA1QTAgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1QTAgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1QTAgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1QTAgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDA1QTEgMDA2MjswMEUwIDA1QUUgMDVBMSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDVBMSAwMzE1IDAwNjI7MDBFMCAwNUFFIDA1QTEgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA1QTEgMDMxNSAwMDYyOworMDA2MSAwNUExIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA1QTEgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1QTEgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1QTEgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1QTEgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDA1OUEgMDMxNiAzMDJBIDA1QTMgMDA2MjswMDYxIDMwMkEgMDMxNiAwNUEzIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNUEzIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNUEzIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNUEzIDA1OUEgMDA2MjsKKzAwNjEgMDVBMyAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAwNUEzIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNUEzIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNUEzIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNUEzIDAzMTYgMDU5QSAwMDYyOworMDA2MSAwNTlBIDAzMTYgMzAyQSAwNUE0IDAwNjI7MDA2MSAzMDJBIDAzMTYgMDVBNCAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDVBNCAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDVBNCAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDVBNCAwNTlBIDAwNjI7CiswMDYxIDA1QTQgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDVBNCAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDVBNCAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDVBNCAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDVBNCAwMzE2IDA1OUEgMDA2MjsKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMDVBNSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA1QTUgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA1QTUgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA1QTUgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA1QTUgMDU5QSAwMDYyOworMDA2MSAwNUE1IDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDA1QTUgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA1QTUgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA1QTUgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA1QTUgMDMxNiAwNTlBIDAwNjI7CiswMDYxIDA1OUEgMDMxNiAzMDJBIDA1QTYgMDA2MjswMDYxIDMwMkEgMDMxNiAwNUE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNUE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNUE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNUE2IDA1OUEgMDA2MjsKKzAwNjEgMDVBNiAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAwNUE2IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNUE2IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNUE2IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNUE2IDAzMTYgMDU5QSAwMDYyOworMDA2MSAwNTlBIDAzMTYgMzAyQSAwNUE3IDAwNjI7MDA2MSAzMDJBIDAzMTYgMDVBNyAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDVBNyAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDVBNyAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDVBNyAwNTlBIDAwNjI7CiswMDYxIDA1QTcgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDVBNyAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDVBNyAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDVBNyAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDVBNyAwMzE2IDA1OUEgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDVBOCAwMDYyOzAwRTAgMDVBRSAwNUE4IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNUE4IDAzMTUgMDA2MjswMEUwIDA1QUUgMDVBOCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDVBOCAwMzE1IDAwNjI7CiswMDYxIDA1QTggMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDVBOCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDVBOCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDVBOCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDVBOCAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDVBOSAwMDYyOzAwRTAgMDVBRSAwNUE5IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNUE5IDAzMTUgMDA2MjswMEUwIDA1QUUgMDVBOSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDVBOSAwMzE1IDAwNjI7CiswMDYxIDA1QTkgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDVBOSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDVBOSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDVBOSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDVBOSAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMDVBQSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA1QUEgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA1QUEgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA1QUEgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA1QUEgMDU5QSAwMDYyOworMDA2MSAwNUFBIDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDA1QUEgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA1QUEgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA1QUEgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA1QUEgMDMxNiAwNTlBIDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDA1QUIgMDA2MjswMEUwIDA1QUUgMDVBQiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDVBQiAwMzE1IDAwNjI7MDBFMCAwNUFFIDA1QUIgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA1QUIgMDMxNSAwMDYyOworMDA2MSAwNUFCIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA1QUIgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1QUIgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1QUIgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1QUIgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDA1QUMgMDA2MjswMEUwIDA1QUUgMDVBQyAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDVBQyAwMzE1IDAwNjI7MDBFMCAwNUFFIDA1QUMgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA1QUMgMDMxNSAwMDYyOworMDA2MSAwNUFDIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA1QUMgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1QUMgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1QUMgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1QUMgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDMwMkUgMDU5QSAwMzE2IDA1QUQgMDA2MjswMDYxIDAzMTYgMDU5QSAwNUFEIDMwMkUgMDA2MjswMDYxIDAzMTYgMDU5QSAwNUFEIDMwMkUgMDA2MjswMDYxIDAzMTYgMDU5QSAwNUFEIDMwMkUgMDA2MjswMDYxIDAzMTYgMDU5QSAwNUFEIDMwMkUgMDA2MjsKKzAwNjEgMDVBRCAzMDJFIDA1OUEgMDMxNiAwMDYyOzAwNjEgMDMxNiAwNUFEIDA1OUEgMzAyRSAwMDYyOzAwNjEgMDMxNiAwNUFEIDA1OUEgMzAyRSAwMDYyOzAwNjEgMDMxNiAwNUFEIDA1OUEgMzAyRSAwMDYyOzAwNjEgMDMxNiAwNUFEIDA1OUEgMzAyRSAwMDYyOworMDA2MSAwMzAwIDA1QUUgMUQxNkQgMDVBRSAwMDYyOzAwRTAgMUQxNkQgMDVBRSAwNUFFIDAwNjI7MDA2MSAxRDE2RCAwNUFFIDA1QUUgMDMwMCAwMDYyOzAwRTAgMUQxNkQgMDVBRSAwNUFFIDAwNjI7MDA2MSAxRDE2RCAwNUFFIDA1QUUgMDMwMCAwMDYyOworMDA2MSAwNUFFIDAzMDAgMDVBRSAxRDE2RCAwMDYyOzAwRTAgMUQxNkQgMDVBRSAwNUFFIDAwNjI7MDA2MSAxRDE2RCAwNUFFIDA1QUUgMDMwMCAwMDYyOzAwRTAgMUQxNkQgMDVBRSAwNUFFIDAwNjI7MDA2MSAxRDE2RCAwNUFFIDA1QUUgMDMwMCAwMDYyOworMDA2MSAwMzE1IDAzMDAgMDVBRSAwNUFGIDAwNjI7MDBFMCAwNUFFIDA1QUYgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA1QUYgMDMxNSAwMDYyOzAwRTAgMDVBRSAwNUFGIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNUFGIDAzMTUgMDA2MjsKKzAwNjEgMDVBRiAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwNUFGIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNUFGIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNUFGIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNUFGIDAzMDAgMDMxNSAwMDYyOworMDA2MSAwNUIxIDA1QjAgMDk0RCAwNUIwIDAwNjI7MDA2MSAwOTREIDA1QjAgMDVCMCAwNUIxIDAwNjI7MDA2MSAwOTREIDA1QjAgMDVCMCAwNUIxIDAwNjI7MDA2MSAwOTREIDA1QjAgMDVCMCAwNUIxIDAwNjI7MDA2MSAwOTREIDA1QjAgMDVCMCAwNUIxIDAwNjI7CiswMDYxIDA1QjAgMDVCMSAwNUIwIDA5NEQgMDA2MjswMDYxIDA5NEQgMDVCMCAwNUIwIDA1QjEgMDA2MjswMDYxIDA5NEQgMDVCMCAwNUIwIDA1QjEgMDA2MjswMDYxIDA5NEQgMDVCMCAwNUIwIDA1QjEgMDA2MjswMDYxIDA5NEQgMDVCMCAwNUIwIDA1QjEgMDA2MjsKKzAwNjEgMDVCMiAwNUIxIDA1QjAgMDVCMSAwMDYyOzAwNjEgMDVCMCAwNUIxIDA1QjEgMDVCMiAwMDYyOzAwNjEgMDVCMCAwNUIxIDA1QjEgMDVCMiAwMDYyOzAwNjEgMDVCMCAwNUIxIDA1QjEgMDVCMiAwMDYyOzAwNjEgMDVCMCAwNUIxIDA1QjEgMDVCMiAwMDYyOworMDA2MSAwNUIxIDA1QjIgMDVCMSAwNUIwIDAwNjI7MDA2MSAwNUIwIDA1QjEgMDVCMSAwNUIyIDAwNjI7MDA2MSAwNUIwIDA1QjEgMDVCMSAwNUIyIDAwNjI7MDA2MSAwNUIwIDA1QjEgMDVCMSAwNUIyIDAwNjI7MDA2MSAwNUIwIDA1QjEgMDVCMSAwNUIyIDAwNjI7CiswMDYxIDA1QjMgMDVCMiAwNUIxIDA1QjIgMDA2MjswMDYxIDA1QjEgMDVCMiAwNUIyIDA1QjMgMDA2MjswMDYxIDA1QjEgMDVCMiAwNUIyIDA1QjMgMDA2MjswMDYxIDA1QjEgMDVCMiAwNUIyIDA1QjMgMDA2MjswMDYxIDA1QjEgMDVCMiAwNUIyIDA1QjMgMDA2MjsKKzAwNjEgMDVCMiAwNUIzIDA1QjIgMDVCMSAwMDYyOzAwNjEgMDVCMSAwNUIyIDA1QjIgMDVCMyAwMDYyOzAwNjEgMDVCMSAwNUIyIDA1QjIgMDVCMyAwMDYyOzAwNjEgMDVCMSAwNUIyIDA1QjIgMDVCMyAwMDYyOzAwNjEgMDVCMSAwNUIyIDA1QjIgMDVCMyAwMDYyOworMDA2MSAwNUI0IDA1QjMgMDVCMiAwNUIzIDAwNjI7MDA2MSAwNUIyIDA1QjMgMDVCMyAwNUI0IDAwNjI7MDA2MSAwNUIyIDA1QjMgMDVCMyAwNUI0IDAwNjI7MDA2MSAwNUIyIDA1QjMgMDVCMyAwNUI0IDAwNjI7MDA2MSAwNUIyIDA1QjMgMDVCMyAwNUI0IDAwNjI7CiswMDYxIDA1QjMgMDVCNCAwNUIzIDA1QjIgMDA2MjswMDYxIDA1QjIgMDVCMyAwNUIzIDA1QjQgMDA2MjswMDYxIDA1QjIgMDVCMyAwNUIzIDA1QjQgMDA2MjswMDYxIDA1QjIgMDVCMyAwNUIzIDA1QjQgMDA2MjswMDYxIDA1QjIgMDVCMyAwNUIzIDA1QjQgMDA2MjsKKzAwNjEgMDVCNSAwNUI0IDA1QjMgMDVCNCAwMDYyOzAwNjEgMDVCMyAwNUI0IDA1QjQgMDVCNSAwMDYyOzAwNjEgMDVCMyAwNUI0IDA1QjQgMDVCNSAwMDYyOzAwNjEgMDVCMyAwNUI0IDA1QjQgMDVCNSAwMDYyOzAwNjEgMDVCMyAwNUI0IDA1QjQgMDVCNSAwMDYyOworMDA2MSAwNUI0IDA1QjUgMDVCNCAwNUIzIDAwNjI7MDA2MSAwNUIzIDA1QjQgMDVCNCAwNUI1IDAwNjI7MDA2MSAwNUIzIDA1QjQgMDVCNCAwNUI1IDAwNjI7MDA2MSAwNUIzIDA1QjQgMDVCNCAwNUI1IDAwNjI7MDA2MSAwNUIzIDA1QjQgMDVCNCAwNUI1IDAwNjI7CiswMDYxIDA1QjYgMDVCNSAwNUI0IDA1QjUgMDA2MjswMDYxIDA1QjQgMDVCNSAwNUI1IDA1QjYgMDA2MjswMDYxIDA1QjQgMDVCNSAwNUI1IDA1QjYgMDA2MjswMDYxIDA1QjQgMDVCNSAwNUI1IDA1QjYgMDA2MjswMDYxIDA1QjQgMDVCNSAwNUI1IDA1QjYgMDA2MjsKKzAwNjEgMDVCNSAwNUI2IDA1QjUgMDVCNCAwMDYyOzAwNjEgMDVCNCAwNUI1IDA1QjUgMDVCNiAwMDYyOzAwNjEgMDVCNCAwNUI1IDA1QjUgMDVCNiAwMDYyOzAwNjEgMDVCNCAwNUI1IDA1QjUgMDVCNiAwMDYyOzAwNjEgMDVCNCAwNUI1IDA1QjUgMDVCNiAwMDYyOworMDA2MSAwNUI3IDA1QjYgMDVCNSAwNUI2IDAwNjI7MDA2MSAwNUI1IDA1QjYgMDVCNiAwNUI3IDAwNjI7MDA2MSAwNUI1IDA1QjYgMDVCNiAwNUI3IDAwNjI7MDA2MSAwNUI1IDA1QjYgMDVCNiAwNUI3IDAwNjI7MDA2MSAwNUI1IDA1QjYgMDVCNiAwNUI3IDAwNjI7CiswMDYxIDA1QjYgMDVCNyAwNUI2IDA1QjUgMDA2MjswMDYxIDA1QjUgMDVCNiAwNUI2IDA1QjcgMDA2MjswMDYxIDA1QjUgMDVCNiAwNUI2IDA1QjcgMDA2MjswMDYxIDA1QjUgMDVCNiAwNUI2IDA1QjcgMDA2MjswMDYxIDA1QjUgMDVCNiAwNUI2IDA1QjcgMDA2MjsKKzAwNjEgMDVCOCAwNUI3IDA1QjYgMDVCNyAwMDYyOzAwNjEgMDVCNiAwNUI3IDA1QjcgMDVCOCAwMDYyOzAwNjEgMDVCNiAwNUI3IDA1QjcgMDVCOCAwMDYyOzAwNjEgMDVCNiAwNUI3IDA1QjcgMDVCOCAwMDYyOzAwNjEgMDVCNiAwNUI3IDA1QjcgMDVCOCAwMDYyOworMDA2MSAwNUI3IDA1QjggMDVCNyAwNUI2IDAwNjI7MDA2MSAwNUI2IDA1QjcgMDVCNyAwNUI4IDAwNjI7MDA2MSAwNUI2IDA1QjcgMDVCNyAwNUI4IDAwNjI7MDA2MSAwNUI2IDA1QjcgMDVCNyAwNUI4IDAwNjI7MDA2MSAwNUI2IDA1QjcgMDVCNyAwNUI4IDAwNjI7CiswMDYxIDA1QjkgMDVCOCAwNUI3IDA1QjggMDA2MjswMDYxIDA1QjcgMDVCOCAwNUI4IDA1QjkgMDA2MjswMDYxIDA1QjcgMDVCOCAwNUI4IDA1QjkgMDA2MjswMDYxIDA1QjcgMDVCOCAwNUI4IDA1QjkgMDA2MjswMDYxIDA1QjcgMDVCOCAwNUI4IDA1QjkgMDA2MjsKKzAwNjEgMDVCOCAwNUI5IDA1QjggMDVCNyAwMDYyOzAwNjEgMDVCNyAwNUI4IDA1QjggMDVCOSAwMDYyOzAwNjEgMDVCNyAwNUI4IDA1QjggMDVCOSAwMDYyOzAwNjEgMDVCNyAwNUI4IDA1QjggMDVCOSAwMDYyOzAwNjEgMDVCNyAwNUI4IDA1QjggMDVCOSAwMDYyOworMDA2MSAwNUJCIDA1QjkgMDVCOCAwNUI5IDAwNjI7MDA2MSAwNUI4IDA1QjkgMDVCOSAwNUJCIDAwNjI7MDA2MSAwNUI4IDA1QjkgMDVCOSAwNUJCIDAwNjI7MDA2MSAwNUI4IDA1QjkgMDVCOSAwNUJCIDAwNjI7MDA2MSAwNUI4IDA1QjkgMDVCOSAwNUJCIDAwNjI7CiswMDYxIDA1QjkgMDVCQiAwNUI5IDA1QjggMDA2MjswMDYxIDA1QjggMDVCOSAwNUI5IDA1QkIgMDA2MjswMDYxIDA1QjggMDVCOSAwNUI5IDA1QkIgMDA2MjswMDYxIDA1QjggMDVCOSAwNUI5IDA1QkIgMDA2MjswMDYxIDA1QjggMDVCOSAwNUI5IDA1QkIgMDA2MjsKKzAwNjEgMDVCQyAwNUJCIDA1QjkgMDVCQiAwMDYyOzAwNjEgMDVCOSAwNUJCIDA1QkIgMDVCQyAwMDYyOzAwNjEgMDVCOSAwNUJCIDA1QkIgMDVCQyAwMDYyOzAwNjEgMDVCOSAwNUJCIDA1QkIgMDVCQyAwMDYyOzAwNjEgMDVCOSAwNUJCIDA1QkIgMDVCQyAwMDYyOworMDA2MSAwNUJCIDA1QkMgMDVCQiAwNUI5IDAwNjI7MDA2MSAwNUI5IDA1QkIgMDVCQiAwNUJDIDAwNjI7MDA2MSAwNUI5IDA1QkIgMDVCQiAwNUJDIDAwNjI7MDA2MSAwNUI5IDA1QkIgMDVCQiAwNUJDIDAwNjI7MDA2MSAwNUI5IDA1QkIgMDVCQiAwNUJDIDAwNjI7CiswMDYxIDA1QkQgMDVCQyAwNUJCIDA1QkMgMDA2MjswMDYxIDA1QkIgMDVCQyAwNUJDIDA1QkQgMDA2MjswMDYxIDA1QkIgMDVCQyAwNUJDIDA1QkQgMDA2MjswMDYxIDA1QkIgMDVCQyAwNUJDIDA1QkQgMDA2MjswMDYxIDA1QkIgMDVCQyAwNUJDIDA1QkQgMDA2MjsKKzAwNjEgMDVCQyAwNUJEIDA1QkMgMDVCQiAwMDYyOzAwNjEgMDVCQiAwNUJDIDA1QkMgMDVCRCAwMDYyOzAwNjEgMDVCQiAwNUJDIDA1QkMgMDVCRCAwMDYyOzAwNjEgMDVCQiAwNUJDIDA1QkMgMDVCRCAwMDYyOzAwNjEgMDVCQiAwNUJDIDA1QkMgMDVCRCAwMDYyOworMDA2MSAwNUJGIDA1QkQgMDVCQyAwNUJEIDAwNjI7MDA2MSAwNUJDIDA1QkQgMDVCRCAwNUJGIDAwNjI7MDA2MSAwNUJDIDA1QkQgMDVCRCAwNUJGIDAwNjI7MDA2MSAwNUJDIDA1QkQgMDVCRCAwNUJGIDAwNjI7MDA2MSAwNUJDIDA1QkQgMDVCRCAwNUJGIDAwNjI7CiswMDYxIDA1QkQgMDVCRiAwNUJEIDA1QkMgMDA2MjswMDYxIDA1QkMgMDVCRCAwNUJEIDA1QkYgMDA2MjswMDYxIDA1QkMgMDVCRCAwNUJEIDA1QkYgMDA2MjswMDYxIDA1QkMgMDVCRCAwNUJEIDA1QkYgMDA2MjswMDYxIDA1QkMgMDVCRCAwNUJEIDA1QkYgMDA2MjsKKzAwNjEgMDVDMSAwNUJGIDA1QkQgMDVCRiAwMDYyOzAwNjEgMDVCRCAwNUJGIDA1QkYgMDVDMSAwMDYyOzAwNjEgMDVCRCAwNUJGIDA1QkYgMDVDMSAwMDYyOzAwNjEgMDVCRCAwNUJGIDA1QkYgMDVDMSAwMDYyOzAwNjEgMDVCRCAwNUJGIDA1QkYgMDVDMSAwMDYyOworMDA2MSAwNUJGIDA1QzEgMDVCRiAwNUJEIDAwNjI7MDA2MSAwNUJEIDA1QkYgMDVCRiAwNUMxIDAwNjI7MDA2MSAwNUJEIDA1QkYgMDVCRiAwNUMxIDAwNjI7MDA2MSAwNUJEIDA1QkYgMDVCRiAwNUMxIDAwNjI7MDA2MSAwNUJEIDA1QkYgMDVCRiAwNUMxIDAwNjI7CiswMDYxIDA1QzIgMDVDMSAwNUJGIDA1QzEgMDA2MjswMDYxIDA1QkYgMDVDMSAwNUMxIDA1QzIgMDA2MjswMDYxIDA1QkYgMDVDMSAwNUMxIDA1QzIgMDA2MjswMDYxIDA1QkYgMDVDMSAwNUMxIDA1QzIgMDA2MjswMDYxIDA1QkYgMDVDMSAwNUMxIDA1QzIgMDA2MjsKKzAwNjEgMDVDMSAwNUMyIDA1QzEgMDVCRiAwMDYyOzAwNjEgMDVCRiAwNUMxIDA1QzEgMDVDMiAwMDYyOzAwNjEgMDVCRiAwNUMxIDA1QzEgMDVDMiAwMDYyOzAwNjEgMDVCRiAwNUMxIDA1QzEgMDVDMiAwMDYyOzAwNjEgMDVCRiAwNUMxIDA1QzEgMDVDMiAwMDYyOworMDA2MSBGQjFFIDA1QzIgMDVDMSAwNUMyIDAwNjI7MDA2MSAwNUMxIDA1QzIgMDVDMiBGQjFFIDAwNjI7MDA2MSAwNUMxIDA1QzIgMDVDMiBGQjFFIDAwNjI7MDA2MSAwNUMxIDA1QzIgMDVDMiBGQjFFIDAwNjI7MDA2MSAwNUMxIDA1QzIgMDVDMiBGQjFFIDAwNjI7CiswMDYxIDA1QzIgRkIxRSAwNUMyIDA1QzEgMDA2MjswMDYxIDA1QzEgMDVDMiAwNUMyIEZCMUUgMDA2MjswMDYxIDA1QzEgMDVDMiAwNUMyIEZCMUUgMDA2MjswMDYxIDA1QzEgMDVDMiAwNUMyIEZCMUUgMDA2MjswMDYxIDA1QzEgMDVDMiAwNUMyIEZCMUUgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDVDNCAwMDYyOzAwRTAgMDVBRSAwNUM0IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNUM0IDAzMTUgMDA2MjswMEUwIDA1QUUgMDVDNCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDVDNCAwMzE1IDAwNjI7CiswMDYxIDA1QzQgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDVDNCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDVDNCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDVDNCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDVDNCAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDY0QyAwNjRCIEZCMUUgMDY0QiAwMDYyOzAwNjEgRkIxRSAwNjRCIDA2NEIgMDY0QyAwMDYyOzAwNjEgRkIxRSAwNjRCIDA2NEIgMDY0QyAwMDYyOzAwNjEgRkIxRSAwNjRCIDA2NEIgMDY0QyAwMDYyOzAwNjEgRkIxRSAwNjRCIDA2NEIgMDY0QyAwMDYyOworMDA2MSAwNjRCIDA2NEMgMDY0QiBGQjFFIDAwNjI7MDA2MSBGQjFFIDA2NEIgMDY0QiAwNjRDIDAwNjI7MDA2MSBGQjFFIDA2NEIgMDY0QiAwNjRDIDAwNjI7MDA2MSBGQjFFIDA2NEIgMDY0QiAwNjRDIDAwNjI7MDA2MSBGQjFFIDA2NEIgMDY0QiAwNjRDIDAwNjI7CiswMDYxIDA2NEQgMDY0QyAwNjRCIDA2NEMgMDA2MjswMDYxIDA2NEIgMDY0QyAwNjRDIDA2NEQgMDA2MjswMDYxIDA2NEIgMDY0QyAwNjRDIDA2NEQgMDA2MjswMDYxIDA2NEIgMDY0QyAwNjRDIDA2NEQgMDA2MjswMDYxIDA2NEIgMDY0QyAwNjRDIDA2NEQgMDA2MjsKKzAwNjEgMDY0QyAwNjREIDA2NEMgMDY0QiAwMDYyOzAwNjEgMDY0QiAwNjRDIDA2NEMgMDY0RCAwMDYyOzAwNjEgMDY0QiAwNjRDIDA2NEMgMDY0RCAwMDYyOzAwNjEgMDY0QiAwNjRDIDA2NEMgMDY0RCAwMDYyOzAwNjEgMDY0QiAwNjRDIDA2NEMgMDY0RCAwMDYyOworMDA2MSAwNjRFIDA2NEQgMDY0QyAwNjREIDAwNjI7MDA2MSAwNjRDIDA2NEQgMDY0RCAwNjRFIDAwNjI7MDA2MSAwNjRDIDA2NEQgMDY0RCAwNjRFIDAwNjI7MDA2MSAwNjRDIDA2NEQgMDY0RCAwNjRFIDAwNjI7MDA2MSAwNjRDIDA2NEQgMDY0RCAwNjRFIDAwNjI7CiswMDYxIDA2NEQgMDY0RSAwNjREIDA2NEMgMDA2MjswMDYxIDA2NEMgMDY0RCAwNjREIDA2NEUgMDA2MjswMDYxIDA2NEMgMDY0RCAwNjREIDA2NEUgMDA2MjswMDYxIDA2NEMgMDY0RCAwNjREIDA2NEUgMDA2MjswMDYxIDA2NEMgMDY0RCAwNjREIDA2NEUgMDA2MjsKKzAwNjEgMDY0RiAwNjRFIDA2NEQgMDY0RSAwMDYyOzAwNjEgMDY0RCAwNjRFIDA2NEUgMDY0RiAwMDYyOzAwNjEgMDY0RCAwNjRFIDA2NEUgMDY0RiAwMDYyOzAwNjEgMDY0RCAwNjRFIDA2NEUgMDY0RiAwMDYyOzAwNjEgMDY0RCAwNjRFIDA2NEUgMDY0RiAwMDYyOworMDA2MSAwNjRFIDA2NEYgMDY0RSAwNjREIDAwNjI7MDA2MSAwNjREIDA2NEUgMDY0RSAwNjRGIDAwNjI7MDA2MSAwNjREIDA2NEUgMDY0RSAwNjRGIDAwNjI7MDA2MSAwNjREIDA2NEUgMDY0RSAwNjRGIDAwNjI7MDA2MSAwNjREIDA2NEUgMDY0RSAwNjRGIDAwNjI7CiswMDYxIDA2NTAgMDY0RiAwNjRFIDA2NEYgMDA2MjswMDYxIDA2NEUgMDY0RiAwNjRGIDA2NTAgMDA2MjswMDYxIDA2NEUgMDY0RiAwNjRGIDA2NTAgMDA2MjswMDYxIDA2NEUgMDY0RiAwNjRGIDA2NTAgMDA2MjswMDYxIDA2NEUgMDY0RiAwNjRGIDA2NTAgMDA2MjsKKzAwNjEgMDY0RiAwNjUwIDA2NEYgMDY0RSAwMDYyOzAwNjEgMDY0RSAwNjRGIDA2NEYgMDY1MCAwMDYyOzAwNjEgMDY0RSAwNjRGIDA2NEYgMDY1MCAwMDYyOzAwNjEgMDY0RSAwNjRGIDA2NEYgMDY1MCAwMDYyOzAwNjEgMDY0RSAwNjRGIDA2NEYgMDY1MCAwMDYyOworMDA2MSAwNjUxIDA2NTAgMDY0RiAwNjUwIDAwNjI7MDA2MSAwNjRGIDA2NTAgMDY1MCAwNjUxIDAwNjI7MDA2MSAwNjRGIDA2NTAgMDY1MCAwNjUxIDAwNjI7MDA2MSAwNjRGIDA2NTAgMDY1MCAwNjUxIDAwNjI7MDA2MSAwNjRGIDA2NTAgMDY1MCAwNjUxIDAwNjI7CiswMDYxIDA2NTAgMDY1MSAwNjUwIDA2NEYgMDA2MjswMDYxIDA2NEYgMDY1MCAwNjUwIDA2NTEgMDA2MjswMDYxIDA2NEYgMDY1MCAwNjUwIDA2NTEgMDA2MjswMDYxIDA2NEYgMDY1MCAwNjUwIDA2NTEgMDA2MjswMDYxIDA2NEYgMDY1MCAwNjUwIDA2NTEgMDA2MjsKKzAwNjEgMDY1MiAwNjUxIDA2NTAgMDY1MSAwMDYyOzAwNjEgMDY1MCAwNjUxIDA2NTEgMDY1MiAwMDYyOzAwNjEgMDY1MCAwNjUxIDA2NTEgMDY1MiAwMDYyOzAwNjEgMDY1MCAwNjUxIDA2NTEgMDY1MiAwMDYyOzAwNjEgMDY1MCAwNjUxIDA2NTEgMDY1MiAwMDYyOworMDA2MSAwNjUxIDA2NTIgMDY1MSAwNjUwIDAwNjI7MDA2MSAwNjUwIDA2NTEgMDY1MSAwNjUyIDAwNjI7MDA2MSAwNjUwIDA2NTEgMDY1MSAwNjUyIDAwNjI7MDA2MSAwNjUwIDA2NTEgMDY1MSAwNjUyIDAwNjI7MDA2MSAwNjUwIDA2NTEgMDY1MSAwNjUyIDAwNjI7CiswMDYxIDA2NzAgMDY1MiAwNjUxIDA2NTIgMDA2MjswMDYxIDA2NTEgMDY1MiAwNjUyIDA2NzAgMDA2MjswMDYxIDA2NTEgMDY1MiAwNjUyIDA2NzAgMDA2MjswMDYxIDA2NTEgMDY1MiAwNjUyIDA2NzAgMDA2MjswMDYxIDA2NTEgMDY1MiAwNjUyIDA2NzAgMDA2MjsKKzAwNjEgMDY1MiAwNjcwIDA2NTIgMDY1MSAwMDYyOzAwNjEgMDY1MSAwNjUyIDA2NTIgMDY3MCAwMDYyOzAwNjEgMDY1MSAwNjUyIDA2NTIgMDY3MCAwMDYyOzAwNjEgMDY1MSAwNjUyIDA2NTIgMDY3MCAwMDYyOzAwNjEgMDY1MSAwNjUyIDA2NTIgMDY3MCAwMDYyOworMDA2MSAwMzE1IDAzMDAgMDVBRSAwNjUzIDAwNjI7MDBFMCAwNUFFIDA2NTMgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA2NTMgMDMxNSAwMDYyOzAwRTAgMDVBRSAwNjUzIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNjUzIDAzMTUgMDA2MjsKKzAwNjEgMDY1MyAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwNjUzIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNjUzIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNjUzIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNjUzIDAzMDAgMDMxNSAwMDYyOworMDA2MSAwMzE1IDAzMDAgMDVBRSAwNjU0IDAwNjI7MDBFMCAwNUFFIDA2NTQgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA2NTQgMDMxNSAwMDYyOzAwRTAgMDVBRSAwNjU0IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNjU0IDAzMTUgMDA2MjsKKzAwNjEgMDY1NCAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwNjU0IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNjU0IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNjU0IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNjU0IDAzMDAgMDMxNSAwMDYyOworMDA2MSAwNTlBIDAzMTYgMzAyQSAwNjU1IDAwNjI7MDA2MSAzMDJBIDAzMTYgMDY1NSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDY1NSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDY1NSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDY1NSAwNTlBIDAwNjI7CiswMDYxIDA2NTUgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDY1NSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDY1NSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDY1NSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDY1NSAwMzE2IDA1OUEgMDA2MjsKKzAwNjEgMDcxMSAwNjcwIDA2NTIgMDY3MCAwMDYyOzAwNjEgMDY1MiAwNjcwIDA2NzAgMDcxMSAwMDYyOzAwNjEgMDY1MiAwNjcwIDA2NzAgMDcxMSAwMDYyOzAwNjEgMDY1MiAwNjcwIDA2NzAgMDcxMSAwMDYyOzAwNjEgMDY1MiAwNjcwIDA2NzAgMDcxMSAwMDYyOworMDA2MSAwNjcwIDA3MTEgMDY3MCAwNjUyIDAwNjI7MDA2MSAwNjUyIDA2NzAgMDY3MCAwNzExIDAwNjI7MDA2MSAwNjUyIDA2NzAgMDY3MCAwNzExIDAwNjI7MDA2MSAwNjUyIDA2NzAgMDY3MCAwNzExIDAwNjI7MDA2MSAwNjUyIDA2NzAgMDY3MCAwNzExIDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDA2RDYgMDA2MjswMEUwIDA1QUUgMDZENiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDZENiAwMzE1IDAwNjI7MDBFMCAwNUFFIDA2RDYgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA2RDYgMDMxNSAwMDYyOworMDA2MSAwNkQ2IDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA2RDYgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2RDYgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2RDYgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2RDYgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDA2RDcgMDA2MjswMEUwIDA1QUUgMDZENyAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDZENyAwMzE1IDAwNjI7MDBFMCAwNUFFIDA2RDcgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA2RDcgMDMxNSAwMDYyOworMDA2MSAwNkQ3IDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA2RDcgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2RDcgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2RDcgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2RDcgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDA2RDggMDA2MjswMEUwIDA1QUUgMDZEOCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDZEOCAwMzE1IDAwNjI7MDBFMCAwNUFFIDA2RDggMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA2RDggMDMxNSAwMDYyOworMDA2MSAwNkQ4IDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA2RDggMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2RDggMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2RDggMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2RDggMDMwMCAwMzE1IDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDA2RDkgMDA2MjswMEUwIDA1QUUgMDZEOSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDZEOSAwMzE1IDAwNjI7MDBFMCAwNUFFIDA2RDkgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA2RDkgMDMxNSAwMDYyOworMDA2MSAwNkQ5IDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA2RDkgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2RDkgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2RDkgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2RDkgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDA2REEgMDA2MjswMEUwIDA1QUUgMDZEQSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDZEQSAwMzE1IDAwNjI7MDBFMCAwNUFFIDA2REEgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA2REEgMDMxNSAwMDYyOworMDA2MSAwNkRBIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA2REEgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2REEgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2REEgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2REEgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDA2REIgMDA2MjswMEUwIDA1QUUgMDZEQiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDZEQiAwMzE1IDAwNjI7MDBFMCAwNUFFIDA2REIgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA2REIgMDMxNSAwMDYyOworMDA2MSAwNkRCIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA2REIgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2REIgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2REIgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2REIgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDA2REMgMDA2MjswMEUwIDA1QUUgMDZEQyAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDZEQyAwMzE1IDAwNjI7MDBFMCAwNUFFIDA2REMgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA2REMgMDMxNSAwMDYyOworMDA2MSAwNkRDIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA2REMgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2REMgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2REMgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2REMgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDA2REYgMDA2MjswMEUwIDA1QUUgMDZERiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDZERiAwMzE1IDAwNjI7MDBFMCAwNUFFIDA2REYgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA2REYgMDMxNSAwMDYyOworMDA2MSAwNkRGIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA2REYgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2REYgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2REYgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2REYgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDA2RTAgMDA2MjswMEUwIDA1QUUgMDZFMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDZFMCAwMzE1IDAwNjI7MDBFMCAwNUFFIDA2RTAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA2RTAgMDMxNSAwMDYyOworMDA2MSAwNkUwIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA2RTAgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2RTAgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2RTAgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2RTAgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDA2RTEgMDA2MjswMEUwIDA1QUUgMDZFMSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDZFMSAwMzE1IDAwNjI7MDBFMCAwNUFFIDA2RTEgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA2RTEgMDMxNSAwMDYyOworMDA2MSAwNkUxIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA2RTEgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2RTEgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2RTEgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2RTEgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDA2RTIgMDA2MjswMEUwIDA1QUUgMDZFMiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDZFMiAwMzE1IDAwNjI7MDBFMCAwNUFFIDA2RTIgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA2RTIgMDMxNSAwMDYyOworMDA2MSAwNkUyIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA2RTIgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2RTIgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2RTIgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2RTIgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDA1OUEgMDMxNiAzMDJBIDA2RTMgMDA2MjswMDYxIDMwMkEgMDMxNiAwNkUzIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNkUzIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNkUzIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNkUzIDA1OUEgMDA2MjsKKzAwNjEgMDZFMyAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAwNkUzIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNkUzIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNkUzIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNkUzIDAzMTYgMDU5QSAwMDYyOworMDA2MSAwMzE1IDAzMDAgMDVBRSAwNkU0IDAwNjI7MDBFMCAwNUFFIDA2RTQgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA2RTQgMDMxNSAwMDYyOzAwRTAgMDVBRSAwNkU0IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNkU0IDAzMTUgMDA2MjsKKzAwNjEgMDZFNCAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwNkU0IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNkU0IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNkU0IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNkU0IDAzMDAgMDMxNSAwMDYyOworMDA2MSAwMzE1IDAzMDAgMDVBRSAwNkU3IDAwNjI7MDBFMCAwNUFFIDA2RTcgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA2RTcgMDMxNSAwMDYyOzAwRTAgMDVBRSAwNkU3IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNkU3IDAzMTUgMDA2MjsKKzAwNjEgMDZFNyAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwNkU3IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNkU3IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNkU3IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNkU3IDAzMDAgMDMxNSAwMDYyOworMDA2MSAwMzE1IDAzMDAgMDVBRSAwNkU4IDAwNjI7MDBFMCAwNUFFIDA2RTggMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA2RTggMDMxNSAwMDYyOzAwRTAgMDVBRSAwNkU4IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNkU4IDAzMTUgMDA2MjsKKzAwNjEgMDZFOCAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwNkU4IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNkU4IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNkU4IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNkU4IDAzMDAgMDMxNSAwMDYyOworMDA2MSAwNTlBIDAzMTYgMzAyQSAwNkVBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDZFQSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDZFQSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDZFQSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDZFQSAwNTlBIDAwNjI7CiswMDYxIDA2RUEgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDZFQSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDZFQSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDZFQSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDZFQSAwMzE2IDA1OUEgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDZFQiAwMDYyOzAwRTAgMDVBRSAwNkVCIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNkVCIDAzMTUgMDA2MjswMEUwIDA1QUUgMDZFQiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDZFQiAwMzE1IDAwNjI7CiswMDYxIDA2RUIgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDZFQiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDZFQiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDZFQiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDZFQiAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDZFQyAwMDYyOzAwRTAgMDVBRSAwNkVDIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNkVDIDAzMTUgMDA2MjswMEUwIDA1QUUgMDZFQyAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDZFQyAwMzE1IDAwNjI7CiswMDYxIDA2RUMgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDZFQyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDZFQyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDZFQyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDZFQyAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMDZFRCAwMDYyOzAwNjEgMzAyQSAwMzE2IDA2RUQgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA2RUQgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA2RUQgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA2RUQgMDU5QSAwMDYyOworMDA2MSAwNkVEIDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDA2RUQgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA2RUQgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA2RUQgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA2RUQgMDMxNiAwNTlBIDAwNjI7CiswMDYxIDBDNTUgMDcxMSAwNjcwIDA3MTEgMDA2MjswMDYxIDA2NzAgMDcxMSAwNzExIDBDNTUgMDA2MjswMDYxIDA2NzAgMDcxMSAwNzExIDBDNTUgMDA2MjswMDYxIDA2NzAgMDcxMSAwNzExIDBDNTUgMDA2MjswMDYxIDA2NzAgMDcxMSAwNzExIDBDNTUgMDA2MjsKKzAwNjEgMDcxMSAwQzU1IDA3MTEgMDY3MCAwMDYyOzAwNjEgMDY3MCAwNzExIDA3MTEgMEM1NSAwMDYyOzAwNjEgMDY3MCAwNzExIDA3MTEgMEM1NSAwMDYyOzAwNjEgMDY3MCAwNzExIDA3MTEgMEM1NSAwMDYyOzAwNjEgMDY3MCAwNzExIDA3MTEgMEM1NSAwMDYyOworMDA2MSAwMzE1IDAzMDAgMDVBRSAwNzMwIDAwNjI7MDBFMCAwNUFFIDA3MzAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA3MzAgMDMxNSAwMDYyOzAwRTAgMDVBRSAwNzMwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNzMwIDAzMTUgMDA2MjsKKzAwNjEgMDczMCAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwNzMwIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNzMwIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNzMwIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNzMwIDAzMDAgMDMxNSAwMDYyOworMDA2MSAwNTlBIDAzMTYgMzAyQSAwNzMxIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDczMSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDczMSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDczMSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDczMSAwNTlBIDAwNjI7CiswMDYxIDA3MzEgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDczMSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDczMSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDczMSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDczMSAwMzE2IDA1OUEgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDczMiAwMDYyOzAwRTAgMDVBRSAwNzMyIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNzMyIDAzMTUgMDA2MjswMEUwIDA1QUUgMDczMiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDczMiAwMzE1IDAwNjI7CiswMDYxIDA3MzIgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDczMiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDczMiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDczMiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDczMiAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDczMyAwMDYyOzAwRTAgMDVBRSAwNzMzIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNzMzIDAzMTUgMDA2MjswMEUwIDA1QUUgMDczMyAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDczMyAwMzE1IDAwNjI7CiswMDYxIDA3MzMgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDczMyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDczMyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDczMyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDczMyAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMDczNCAwMDYyOzAwNjEgMzAyQSAwMzE2IDA3MzQgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA3MzQgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA3MzQgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA3MzQgMDU5QSAwMDYyOworMDA2MSAwNzM0IDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDA3MzQgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA3MzQgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA3MzQgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA3MzQgMDMxNiAwNTlBIDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDA3MzUgMDA2MjswMEUwIDA1QUUgMDczNSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDczNSAwMzE1IDAwNjI7MDBFMCAwNUFFIDA3MzUgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA3MzUgMDMxNSAwMDYyOworMDA2MSAwNzM1IDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA3MzUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3MzUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3MzUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3MzUgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDA3MzYgMDA2MjswMEUwIDA1QUUgMDczNiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDczNiAwMzE1IDAwNjI7MDBFMCAwNUFFIDA3MzYgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA3MzYgMDMxNSAwMDYyOworMDA2MSAwNzM2IDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA3MzYgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3MzYgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3MzYgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3MzYgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDA1OUEgMDMxNiAzMDJBIDA3MzcgMDA2MjswMDYxIDMwMkEgMDMxNiAwNzM3IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNzM3IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNzM3IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNzM3IDA1OUEgMDA2MjsKKzAwNjEgMDczNyAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAwNzM3IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNzM3IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNzM3IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNzM3IDAzMTYgMDU5QSAwMDYyOworMDA2MSAwNTlBIDAzMTYgMzAyQSAwNzM4IDAwNjI7MDA2MSAzMDJBIDAzMTYgMDczOCAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDczOCAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDczOCAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDczOCAwNTlBIDAwNjI7CiswMDYxIDA3MzggMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDczOCAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDczOCAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDczOCAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDczOCAwMzE2IDA1OUEgMDA2MjsKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMDczOSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA3MzkgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA3MzkgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA3MzkgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA3MzkgMDU5QSAwMDYyOworMDA2MSAwNzM5IDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDA3MzkgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA3MzkgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA3MzkgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA3MzkgMDMxNiAwNTlBIDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDA3M0EgMDA2MjswMEUwIDA1QUUgMDczQSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDczQSAwMzE1IDAwNjI7MDBFMCAwNUFFIDA3M0EgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA3M0EgMDMxNSAwMDYyOworMDA2MSAwNzNBIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA3M0EgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3M0EgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3M0EgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3M0EgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDA1OUEgMDMxNiAzMDJBIDA3M0IgMDA2MjswMDYxIDMwMkEgMDMxNiAwNzNCIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNzNCIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNzNCIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNzNCIDA1OUEgMDA2MjsKKzAwNjEgMDczQiAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAwNzNCIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNzNCIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNzNCIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNzNCIDAzMTYgMDU5QSAwMDYyOworMDA2MSAwNTlBIDAzMTYgMzAyQSAwNzNDIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDczQyAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDczQyAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDczQyAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDczQyAwNTlBIDAwNjI7CiswMDYxIDA3M0MgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDczQyAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDczQyAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDczQyAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDczQyAwMzE2IDA1OUEgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDczRCAwMDYyOzAwRTAgMDVBRSAwNzNEIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNzNEIDAzMTUgMDA2MjswMEUwIDA1QUUgMDczRCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDczRCAwMzE1IDAwNjI7CiswMDYxIDA3M0QgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDczRCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDczRCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDczRCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDczRCAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMDczRSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA3M0UgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA3M0UgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA3M0UgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA3M0UgMDU5QSAwMDYyOworMDA2MSAwNzNFIDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDA3M0UgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA3M0UgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA3M0UgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA3M0UgMDMxNiAwNTlBIDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDA3M0YgMDA2MjswMEUwIDA1QUUgMDczRiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDczRiAwMzE1IDAwNjI7MDBFMCAwNUFFIDA3M0YgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA3M0YgMDMxNSAwMDYyOworMDA2MSAwNzNGIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA3M0YgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3M0YgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3M0YgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3M0YgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDA3NDAgMDA2MjswMEUwIDA1QUUgMDc0MCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDc0MCAwMzE1IDAwNjI7MDBFMCAwNUFFIDA3NDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA3NDAgMDMxNSAwMDYyOworMDA2MSAwNzQwIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA3NDAgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3NDAgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3NDAgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3NDAgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDA3NDEgMDA2MjswMEUwIDA1QUUgMDc0MSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDc0MSAwMzE1IDAwNjI7MDBFMCAwNUFFIDA3NDEgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA3NDEgMDMxNSAwMDYyOworMDA2MSAwNzQxIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA3NDEgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3NDEgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3NDEgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3NDEgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDA1OUEgMDMxNiAzMDJBIDA3NDIgMDA2MjswMDYxIDMwMkEgMDMxNiAwNzQyIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNzQyIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNzQyIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNzQyIDA1OUEgMDA2MjsKKzAwNjEgMDc0MiAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAwNzQyIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNzQyIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNzQyIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNzQyIDAzMTYgMDU5QSAwMDYyOworMDA2MSAwMzE1IDAzMDAgMDVBRSAwNzQzIDAwNjI7MDBFMCAwNUFFIDA3NDMgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA3NDMgMDMxNSAwMDYyOzAwRTAgMDVBRSAwNzQzIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNzQzIDAzMTUgMDA2MjsKKzAwNjEgMDc0MyAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwNzQzIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNzQzIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNzQzIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNzQzIDAzMDAgMDMxNSAwMDYyOworMDA2MSAwNTlBIDAzMTYgMzAyQSAwNzQ0IDAwNjI7MDA2MSAzMDJBIDAzMTYgMDc0NCAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDc0NCAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDc0NCAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDc0NCAwNTlBIDAwNjI7CiswMDYxIDA3NDQgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDc0NCAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDc0NCAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDc0NCAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDc0NCAwMzE2IDA1OUEgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDc0NSAwMDYyOzAwRTAgMDVBRSAwNzQ1IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNzQ1IDAzMTUgMDA2MjswMEUwIDA1QUUgMDc0NSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDc0NSAwMzE1IDAwNjI7CiswMDYxIDA3NDUgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDc0NSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDc0NSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDc0NSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDc0NSAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMDc0NiAwMDYyOzAwNjEgMzAyQSAwMzE2IDA3NDYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA3NDYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA3NDYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA3NDYgMDU5QSAwMDYyOworMDA2MSAwNzQ2IDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDA3NDYgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA3NDYgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA3NDYgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA3NDYgMDMxNiAwNTlBIDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDA3NDcgMDA2MjswMEUwIDA1QUUgMDc0NyAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDc0NyAwMzE1IDAwNjI7MDBFMCAwNUFFIDA3NDcgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA3NDcgMDMxNSAwMDYyOworMDA2MSAwNzQ3IDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA3NDcgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3NDcgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3NDcgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3NDcgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDA1OUEgMDMxNiAzMDJBIDA3NDggMDA2MjswMDYxIDMwMkEgMDMxNiAwNzQ4IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNzQ4IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNzQ4IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNzQ4IDA1OUEgMDA2MjsKKzAwNjEgMDc0OCAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAwNzQ4IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNzQ4IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNzQ4IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNzQ4IDAzMTYgMDU5QSAwMDYyOworMDA2MSAwMzE1IDAzMDAgMDVBRSAwNzQ5IDAwNjI7MDBFMCAwNUFFIDA3NDkgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA3NDkgMDMxNSAwMDYyOzAwRTAgMDVBRSAwNzQ5IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNzQ5IDAzMTUgMDA2MjsKKzAwNjEgMDc0OSAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwNzQ5IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNzQ5IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNzQ5IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNzQ5IDAzMDAgMDMxNSAwMDYyOworMDA2MSAwMzE1IDAzMDAgMDVBRSAwNzRBIDAwNjI7MDBFMCAwNUFFIDA3NEEgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA3NEEgMDMxNSAwMDYyOzAwRTAgMDVBRSAwNzRBIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNzRBIDAzMTUgMDA2MjsKKzAwNjEgMDc0QSAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwNzRBIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNzRBIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNzRBIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNzRBIDAzMDAgMDMxNSAwMDYyOworMDA2MSAzMDk5IDA5M0MgMDMzNCAwOTNDIDAwNjI7MDA2MSAwMzM0IDA5M0MgMDkzQyAzMDk5IDAwNjI7MDA2MSAwMzM0IDA5M0MgMDkzQyAzMDk5IDAwNjI7MDA2MSAwMzM0IDA5M0MgMDkzQyAzMDk5IDAwNjI7MDA2MSAwMzM0IDA5M0MgMDkzQyAzMDk5IDAwNjI7CiswMDYxIDA5M0MgMzA5OSAwOTNDIDAzMzQgMDA2MjswMDYxIDAzMzQgMDkzQyAwOTNDIDMwOTkgMDA2MjswMDYxIDAzMzQgMDkzQyAwOTNDIDMwOTkgMDA2MjswMDYxIDAzMzQgMDkzQyAwOTNDIDMwOTkgMDA2MjswMDYxIDAzMzQgMDkzQyAwOTNDIDMwOTkgMDA2MjsKKzAwNjEgMDVCMCAwOTREIDMwOTkgMDk0RCAwMDYyOzAwNjEgMzA5OSAwOTREIDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwOTREIDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwOTREIDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwOTREIDA5NEQgMDVCMCAwMDYyOworMDA2MSAwOTREIDA1QjAgMDk0RCAzMDk5IDAwNjI7MDA2MSAzMDk5IDA5NEQgMDk0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDA5NEQgMDk0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDA5NEQgMDk0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDA5NEQgMDk0RCAwNUIwIDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDA5NTEgMDA2MjswMEUwIDA1QUUgMDk1MSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDk1MSAwMzE1IDAwNjI7MDBFMCAwNUFFIDA5NTEgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA5NTEgMDMxNSAwMDYyOworMDA2MSAwOTUxIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA5NTEgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA5NTEgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA5NTEgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA5NTEgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDA1OUEgMDMxNiAzMDJBIDA5NTIgMDA2MjswMDYxIDMwMkEgMDMxNiAwOTUyIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwOTUyIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwOTUyIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwOTUyIDA1OUEgMDA2MjsKKzAwNjEgMDk1MiAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAwOTUyIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwOTUyIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwOTUyIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwOTUyIDAzMTYgMDU5QSAwMDYyOworMDA2MSAwMzE1IDAzMDAgMDVBRSAwOTUzIDAwNjI7MDBFMCAwNUFFIDA5NTMgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA5NTMgMDMxNSAwMDYyOzAwRTAgMDVBRSAwOTUzIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwOTUzIDAzMTUgMDA2MjsKKzAwNjEgMDk1MyAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwOTUzIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwOTUzIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwOTUzIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwOTUzIDAzMDAgMDMxNSAwMDYyOworMDA2MSAwMzE1IDAzMDAgMDVBRSAwOTU0IDAwNjI7MDBFMCAwNUFFIDA5NTQgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA5NTQgMDMxNSAwMDYyOzAwRTAgMDVBRSAwOTU0IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwOTU0IDAzMTUgMDA2MjsKKzAwNjEgMDk1NCAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwOTU0IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwOTU0IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwOTU0IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwOTU0IDAzMDAgMDMxNSAwMDYyOworMDA2MSAzMDk5IDA5M0MgMDMzNCAwOUJDIDAwNjI7MDA2MSAwMzM0IDA5M0MgMDlCQyAzMDk5IDAwNjI7MDA2MSAwMzM0IDA5M0MgMDlCQyAzMDk5IDAwNjI7MDA2MSAwMzM0IDA5M0MgMDlCQyAzMDk5IDAwNjI7MDA2MSAwMzM0IDA5M0MgMDlCQyAzMDk5IDAwNjI7CiswMDYxIDA5QkMgMzA5OSAwOTNDIDAzMzQgMDA2MjswMDYxIDAzMzQgMDlCQyAwOTNDIDMwOTkgMDA2MjswMDYxIDAzMzQgMDlCQyAwOTNDIDMwOTkgMDA2MjswMDYxIDAzMzQgMDlCQyAwOTNDIDMwOTkgMDA2MjswMDYxIDAzMzQgMDlCQyAwOTNDIDMwOTkgMDA2MjsKKzAwNjEgMDVCMCAwOTREIDMwOTkgMDlDRCAwMDYyOzAwNjEgMzA5OSAwOTREIDA5Q0QgMDVCMCAwMDYyOzAwNjEgMzA5OSAwOTREIDA5Q0QgMDVCMCAwMDYyOzAwNjEgMzA5OSAwOTREIDA5Q0QgMDVCMCAwMDYyOzAwNjEgMzA5OSAwOTREIDA5Q0QgMDVCMCAwMDYyOworMDA2MSAwOUNEIDA1QjAgMDk0RCAzMDk5IDAwNjI7MDA2MSAzMDk5IDA5Q0QgMDk0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDA5Q0QgMDk0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDA5Q0QgMDk0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDA5Q0QgMDk0RCAwNUIwIDAwNjI7CiswMDYxIDMwOTkgMDkzQyAwMzM0IDBBM0MgMDA2MjswMDYxIDAzMzQgMDkzQyAwQTNDIDMwOTkgMDA2MjswMDYxIDAzMzQgMDkzQyAwQTNDIDMwOTkgMDA2MjswMDYxIDAzMzQgMDkzQyAwQTNDIDMwOTkgMDA2MjswMDYxIDAzMzQgMDkzQyAwQTNDIDMwOTkgMDA2MjsKKzAwNjEgMEEzQyAzMDk5IDA5M0MgMDMzNCAwMDYyOzAwNjEgMDMzNCAwQTNDIDA5M0MgMzA5OSAwMDYyOzAwNjEgMDMzNCAwQTNDIDA5M0MgMzA5OSAwMDYyOzAwNjEgMDMzNCAwQTNDIDA5M0MgMzA5OSAwMDYyOzAwNjEgMDMzNCAwQTNDIDA5M0MgMzA5OSAwMDYyOworMDA2MSAwNUIwIDA5NEQgMzA5OSAwQTREIDAwNjI7MDA2MSAzMDk5IDA5NEQgMEE0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDA5NEQgMEE0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDA5NEQgMEE0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDA5NEQgMEE0RCAwNUIwIDAwNjI7CiswMDYxIDBBNEQgMDVCMCAwOTREIDMwOTkgMDA2MjswMDYxIDMwOTkgMEE0RCAwOTREIDA1QjAgMDA2MjswMDYxIDMwOTkgMEE0RCAwOTREIDA1QjAgMDA2MjswMDYxIDMwOTkgMEE0RCAwOTREIDA1QjAgMDA2MjswMDYxIDMwOTkgMEE0RCAwOTREIDA1QjAgMDA2MjsKKzAwNjEgMzA5OSAwOTNDIDAzMzQgMEFCQyAwMDYyOzAwNjEgMDMzNCAwOTNDIDBBQkMgMzA5OSAwMDYyOzAwNjEgMDMzNCAwOTNDIDBBQkMgMzA5OSAwMDYyOzAwNjEgMDMzNCAwOTNDIDBBQkMgMzA5OSAwMDYyOzAwNjEgMDMzNCAwOTNDIDBBQkMgMzA5OSAwMDYyOworMDA2MSAwQUJDIDMwOTkgMDkzQyAwMzM0IDAwNjI7MDA2MSAwMzM0IDBBQkMgMDkzQyAzMDk5IDAwNjI7MDA2MSAwMzM0IDBBQkMgMDkzQyAzMDk5IDAwNjI7MDA2MSAwMzM0IDBBQkMgMDkzQyAzMDk5IDAwNjI7MDA2MSAwMzM0IDBBQkMgMDkzQyAzMDk5IDAwNjI7CiswMDYxIDA1QjAgMDk0RCAzMDk5IDBBQ0QgMDA2MjswMDYxIDMwOTkgMDk0RCAwQUNEIDA1QjAgMDA2MjswMDYxIDMwOTkgMDk0RCAwQUNEIDA1QjAgMDA2MjswMDYxIDMwOTkgMDk0RCAwQUNEIDA1QjAgMDA2MjswMDYxIDMwOTkgMDk0RCAwQUNEIDA1QjAgMDA2MjsKKzAwNjEgMEFDRCAwNUIwIDA5NEQgMzA5OSAwMDYyOzAwNjEgMzA5OSAwQUNEIDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwQUNEIDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwQUNEIDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwQUNEIDA5NEQgMDVCMCAwMDYyOworMDA2MSAzMDk5IDA5M0MgMDMzNCAwQjNDIDAwNjI7MDA2MSAwMzM0IDA5M0MgMEIzQyAzMDk5IDAwNjI7MDA2MSAwMzM0IDA5M0MgMEIzQyAzMDk5IDAwNjI7MDA2MSAwMzM0IDA5M0MgMEIzQyAzMDk5IDAwNjI7MDA2MSAwMzM0IDA5M0MgMEIzQyAzMDk5IDAwNjI7CiswMDYxIDBCM0MgMzA5OSAwOTNDIDAzMzQgMDA2MjswMDYxIDAzMzQgMEIzQyAwOTNDIDMwOTkgMDA2MjswMDYxIDAzMzQgMEIzQyAwOTNDIDMwOTkgMDA2MjswMDYxIDAzMzQgMEIzQyAwOTNDIDMwOTkgMDA2MjswMDYxIDAzMzQgMEIzQyAwOTNDIDMwOTkgMDA2MjsKKzAwNjEgMDVCMCAwOTREIDMwOTkgMEI0RCAwMDYyOzAwNjEgMzA5OSAwOTREIDBCNEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwOTREIDBCNEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwOTREIDBCNEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwOTREIDBCNEQgMDVCMCAwMDYyOworMDA2MSAwQjREIDA1QjAgMDk0RCAzMDk5IDAwNjI7MDA2MSAzMDk5IDBCNEQgMDk0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDBCNEQgMDk0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDBCNEQgMDk0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDBCNEQgMDk0RCAwNUIwIDAwNjI7CiswMDYxIDA1QjAgMDk0RCAzMDk5IDBCQ0QgMDA2MjswMDYxIDMwOTkgMDk0RCAwQkNEIDA1QjAgMDA2MjswMDYxIDMwOTkgMDk0RCAwQkNEIDA1QjAgMDA2MjswMDYxIDMwOTkgMDk0RCAwQkNEIDA1QjAgMDA2MjswMDYxIDMwOTkgMDk0RCAwQkNEIDA1QjAgMDA2MjsKKzAwNjEgMEJDRCAwNUIwIDA5NEQgMzA5OSAwMDYyOzAwNjEgMzA5OSAwQkNEIDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwQkNEIDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwQkNEIDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwQkNEIDA5NEQgMDVCMCAwMDYyOworMDA2MSAwNUIwIDA5NEQgMzA5OSAwQzREIDAwNjI7MDA2MSAzMDk5IDA5NEQgMEM0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDA5NEQgMEM0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDA5NEQgMEM0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDA5NEQgMEM0RCAwNUIwIDAwNjI7CiswMDYxIDBDNEQgMDVCMCAwOTREIDMwOTkgMDA2MjswMDYxIDMwOTkgMEM0RCAwOTREIDA1QjAgMDA2MjswMDYxIDMwOTkgMEM0RCAwOTREIDA1QjAgMDA2MjswMDYxIDMwOTkgMEM0RCAwOTREIDA1QjAgMDA2MjswMDYxIDMwOTkgMEM0RCAwOTREIDA1QjAgMDA2MjsKKzAwNjEgMEM1NiAwQzU1IDA3MTEgMEM1NSAwMDYyOzAwNjEgMDcxMSAwQzU1IDBDNTUgMEM1NiAwMDYyOzAwNjEgMDcxMSAwQzU1IDBDNTUgMEM1NiAwMDYyOzAwNjEgMDcxMSAwQzU1IDBDNTUgMEM1NiAwMDYyOzAwNjEgMDcxMSAwQzU1IDBDNTUgMEM1NiAwMDYyOworMDA2MSAwQzU1IDBDNTYgMEM1NSAwNzExIDAwNjI7MDA2MSAwNzExIDBDNTUgMEM1NSAwQzU2IDAwNjI7MDA2MSAwNzExIDBDNTUgMEM1NSAwQzU2IDAwNjI7MDA2MSAwNzExIDBDNTUgMEM1NSAwQzU2IDAwNjI7MDA2MSAwNzExIDBDNTUgMEM1NSAwQzU2IDAwNjI7CiswMDYxIDBFMzggMEM1NiAwQzU1IDBDNTYgMDA2MjswMDYxIDBDNTUgMEM1NiAwQzU2IDBFMzggMDA2MjswMDYxIDBDNTUgMEM1NiAwQzU2IDBFMzggMDA2MjswMDYxIDBDNTUgMEM1NiAwQzU2IDBFMzggMDA2MjswMDYxIDBDNTUgMEM1NiAwQzU2IDBFMzggMDA2MjsKKzAwNjEgMEM1NiAwRTM4IDBDNTYgMEM1NSAwMDYyOzAwNjEgMEM1NSAwQzU2IDBDNTYgMEUzOCAwMDYyOzAwNjEgMEM1NSAwQzU2IDBDNTYgMEUzOCAwMDYyOzAwNjEgMEM1NSAwQzU2IDBDNTYgMEUzOCAwMDYyOzAwNjEgMEM1NSAwQzU2IDBDNTYgMEUzOCAwMDYyOworMDA2MSAwNUIwIDA5NEQgMzA5OSAwQ0NEIDAwNjI7MDA2MSAzMDk5IDA5NEQgMENDRCAwNUIwIDAwNjI7MDA2MSAzMDk5IDA5NEQgMENDRCAwNUIwIDAwNjI7MDA2MSAzMDk5IDA5NEQgMENDRCAwNUIwIDAwNjI7MDA2MSAzMDk5IDA5NEQgMENDRCAwNUIwIDAwNjI7CiswMDYxIDBDQ0QgMDVCMCAwOTREIDMwOTkgMDA2MjswMDYxIDMwOTkgMENDRCAwOTREIDA1QjAgMDA2MjswMDYxIDMwOTkgMENDRCAwOTREIDA1QjAgMDA2MjswMDYxIDMwOTkgMENDRCAwOTREIDA1QjAgMDA2MjswMDYxIDMwOTkgMENDRCAwOTREIDA1QjAgMDA2MjsKKzAwNjEgMDVCMCAwOTREIDMwOTkgMEQ0RCAwMDYyOzAwNjEgMzA5OSAwOTREIDBENEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwOTREIDBENEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwOTREIDBENEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwOTREIDBENEQgMDVCMCAwMDYyOworMDA2MSAwRDREIDA1QjAgMDk0RCAzMDk5IDAwNjI7MDA2MSAzMDk5IDBENEQgMDk0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDBENEQgMDk0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDBENEQgMDk0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDBENEQgMDk0RCAwNUIwIDAwNjI7CiswMDYxIDA1QjAgMDk0RCAzMDk5IDBEQ0EgMDA2MjswMDYxIDMwOTkgMDk0RCAwRENBIDA1QjAgMDA2MjswMDYxIDMwOTkgMDk0RCAwRENBIDA1QjAgMDA2MjswMDYxIDMwOTkgMDk0RCAwRENBIDA1QjAgMDA2MjswMDYxIDMwOTkgMDk0RCAwRENBIDA1QjAgMDA2MjsKKzAwNjEgMERDQSAwNUIwIDA5NEQgMzA5OSAwMDYyOzAwNjEgMzA5OSAwRENBIDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwRENBIDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwRENBIDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwRENBIDA5NEQgMDVCMCAwMDYyOworMDA2MSAwRTQ4IDBFMzggMEM1NiAwRTM4IDAwNjI7MDA2MSAwQzU2IDBFMzggMEUzOCAwRTQ4IDAwNjI7MDA2MSAwQzU2IDBFMzggMEUzOCAwRTQ4IDAwNjI7MDA2MSAwQzU2IDBFMzggMEUzOCAwRTQ4IDAwNjI7MDA2MSAwQzU2IDBFMzggMEUzOCAwRTQ4IDAwNjI7CiswMDYxIDBFMzggMEU0OCAwRTM4IDBDNTYgMDA2MjswMDYxIDBDNTYgMEUzOCAwRTM4IDBFNDggMDA2MjswMDYxIDBDNTYgMEUzOCAwRTM4IDBFNDggMDA2MjswMDYxIDBDNTYgMEUzOCAwRTM4IDBFNDggMDA2MjswMDYxIDBDNTYgMEUzOCAwRTM4IDBFNDggMDA2MjsKKzAwNjEgMEU0OCAwRTM4IDBDNTYgMEUzOSAwMDYyOzAwNjEgMEM1NiAwRTM4IDBFMzkgMEU0OCAwMDYyOzAwNjEgMEM1NiAwRTM4IDBFMzkgMEU0OCAwMDYyOzAwNjEgMEM1NiAwRTM4IDBFMzkgMEU0OCAwMDYyOzAwNjEgMEM1NiAwRTM4IDBFMzkgMEU0OCAwMDYyOworMDA2MSAwRTM5IDBFNDggMEUzOCAwQzU2IDAwNjI7MDA2MSAwQzU2IDBFMzkgMEUzOCAwRTQ4IDAwNjI7MDA2MSAwQzU2IDBFMzkgMEUzOCAwRTQ4IDAwNjI7MDA2MSAwQzU2IDBFMzkgMEUzOCAwRTQ4IDAwNjI7MDA2MSAwQzU2IDBFMzkgMEUzOCAwRTQ4IDAwNjI7CiswMDYxIDA1QjAgMDk0RCAzMDk5IDBFM0EgMDA2MjswMDYxIDMwOTkgMDk0RCAwRTNBIDA1QjAgMDA2MjswMDYxIDMwOTkgMDk0RCAwRTNBIDA1QjAgMDA2MjswMDYxIDMwOTkgMDk0RCAwRTNBIDA1QjAgMDA2MjswMDYxIDMwOTkgMDk0RCAwRTNBIDA1QjAgMDA2MjsKKzAwNjEgMEUzQSAwNUIwIDA5NEQgMzA5OSAwMDYyOzAwNjEgMzA5OSAwRTNBIDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwRTNBIDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwRTNBIDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwRTNBIDA5NEQgMDVCMCAwMDYyOworMDA2MSAwRUI4IDBFNDggMEUzOCAwRTQ4IDAwNjI7MDA2MSAwRTM4IDBFNDggMEU0OCAwRUI4IDAwNjI7MDA2MSAwRTM4IDBFNDggMEU0OCAwRUI4IDAwNjI7MDA2MSAwRTM4IDBFNDggMEU0OCAwRUI4IDAwNjI7MDA2MSAwRTM4IDBFNDggMEU0OCAwRUI4IDAwNjI7CiswMDYxIDBFNDggMEVCOCAwRTQ4IDBFMzggMDA2MjswMDYxIDBFMzggMEU0OCAwRTQ4IDBFQjggMDA2MjswMDYxIDBFMzggMEU0OCAwRTQ4IDBFQjggMDA2MjswMDYxIDBFMzggMEU0OCAwRTQ4IDBFQjggMDA2MjswMDYxIDBFMzggMEU0OCAwRTQ4IDBFQjggMDA2MjsKKzAwNjEgMEVCOCAwRTQ4IDBFMzggMEU0OSAwMDYyOzAwNjEgMEUzOCAwRTQ4IDBFNDkgMEVCOCAwMDYyOzAwNjEgMEUzOCAwRTQ4IDBFNDkgMEVCOCAwMDYyOzAwNjEgMEUzOCAwRTQ4IDBFNDkgMEVCOCAwMDYyOzAwNjEgMEUzOCAwRTQ4IDBFNDkgMEVCOCAwMDYyOworMDA2MSAwRTQ5IDBFQjggMEU0OCAwRTM4IDAwNjI7MDA2MSAwRTM4IDBFNDkgMEU0OCAwRUI4IDAwNjI7MDA2MSAwRTM4IDBFNDkgMEU0OCAwRUI4IDAwNjI7MDA2MSAwRTM4IDBFNDkgMEU0OCAwRUI4IDAwNjI7MDA2MSAwRTM4IDBFNDkgMEU0OCAwRUI4IDAwNjI7CiswMDYxIDBFQjggMEU0OCAwRTM4IDBFNEEgMDA2MjswMDYxIDBFMzggMEU0OCAwRTRBIDBFQjggMDA2MjswMDYxIDBFMzggMEU0OCAwRTRBIDBFQjggMDA2MjswMDYxIDBFMzggMEU0OCAwRTRBIDBFQjggMDA2MjswMDYxIDBFMzggMEU0OCAwRTRBIDBFQjggMDA2MjsKKzAwNjEgMEU0QSAwRUI4IDBFNDggMEUzOCAwMDYyOzAwNjEgMEUzOCAwRTRBIDBFNDggMEVCOCAwMDYyOzAwNjEgMEUzOCAwRTRBIDBFNDggMEVCOCAwMDYyOzAwNjEgMEUzOCAwRTRBIDBFNDggMEVCOCAwMDYyOzAwNjEgMEUzOCAwRTRBIDBFNDggMEVCOCAwMDYyOworMDA2MSAwRUI4IDBFNDggMEUzOCAwRTRCIDAwNjI7MDA2MSAwRTM4IDBFNDggMEU0QiAwRUI4IDAwNjI7MDA2MSAwRTM4IDBFNDggMEU0QiAwRUI4IDAwNjI7MDA2MSAwRTM4IDBFNDggMEU0QiAwRUI4IDAwNjI7MDA2MSAwRTM4IDBFNDggMEU0QiAwRUI4IDAwNjI7CiswMDYxIDBFNEIgMEVCOCAwRTQ4IDBFMzggMDA2MjswMDYxIDBFMzggMEU0QiAwRTQ4IDBFQjggMDA2MjswMDYxIDBFMzggMEU0QiAwRTQ4IDBFQjggMDA2MjswMDYxIDBFMzggMEU0QiAwRTQ4IDBFQjggMDA2MjswMDYxIDBFMzggMEU0QiAwRTQ4IDBFQjggMDA2MjsKKzAwNjEgMEVDOCAwRUI4IDBFNDggMEVCOCAwMDYyOzAwNjEgMEU0OCAwRUI4IDBFQjggMEVDOCAwMDYyOzAwNjEgMEU0OCAwRUI4IDBFQjggMEVDOCAwMDYyOzAwNjEgMEU0OCAwRUI4IDBFQjggMEVDOCAwMDYyOzAwNjEgMEU0OCAwRUI4IDBFQjggMEVDOCAwMDYyOworMDA2MSAwRUI4IDBFQzggMEVCOCAwRTQ4IDAwNjI7MDA2MSAwRTQ4IDBFQjggMEVCOCAwRUM4IDAwNjI7MDA2MSAwRTQ4IDBFQjggMEVCOCAwRUM4IDAwNjI7MDA2MSAwRTQ4IDBFQjggMEVCOCAwRUM4IDAwNjI7MDA2MSAwRTQ4IDBFQjggMEVCOCAwRUM4IDAwNjI7CiswMDYxIDBFQzggMEVCOCAwRTQ4IDBFQjkgMDA2MjswMDYxIDBFNDggMEVCOCAwRUI5IDBFQzggMDA2MjswMDYxIDBFNDggMEVCOCAwRUI5IDBFQzggMDA2MjswMDYxIDBFNDggMEVCOCAwRUI5IDBFQzggMDA2MjswMDYxIDBFNDggMEVCOCAwRUI5IDBFQzggMDA2MjsKKzAwNjEgMEVCOSAwRUM4IDBFQjggMEU0OCAwMDYyOzAwNjEgMEU0OCAwRUI5IDBFQjggMEVDOCAwMDYyOzAwNjEgMEU0OCAwRUI5IDBFQjggMEVDOCAwMDYyOzAwNjEgMEU0OCAwRUI5IDBFQjggMEVDOCAwMDYyOzAwNjEgMEU0OCAwRUI5IDBFQjggMEVDOCAwMDYyOworMDA2MSAwRjcxIDBFQzggMEVCOCAwRUM4IDAwNjI7MDA2MSAwRUI4IDBFQzggMEVDOCAwRjcxIDAwNjI7MDA2MSAwRUI4IDBFQzggMEVDOCAwRjcxIDAwNjI7MDA2MSAwRUI4IDBFQzggMEVDOCAwRjcxIDAwNjI7MDA2MSAwRUI4IDBFQzggMEVDOCAwRjcxIDAwNjI7CiswMDYxIDBFQzggMEY3MSAwRUM4IDBFQjggMDA2MjswMDYxIDBFQjggMEVDOCAwRUM4IDBGNzEgMDA2MjswMDYxIDBFQjggMEVDOCAwRUM4IDBGNzEgMDA2MjswMDYxIDBFQjggMEVDOCAwRUM4IDBGNzEgMDA2MjswMDYxIDBFQjggMEVDOCAwRUM4IDBGNzEgMDA2MjsKKzAwNjEgMEY3MSAwRUM4IDBFQjggMEVDOSAwMDYyOzAwNjEgMEVCOCAwRUM4IDBFQzkgMEY3MSAwMDYyOzAwNjEgMEVCOCAwRUM4IDBFQzkgMEY3MSAwMDYyOzAwNjEgMEVCOCAwRUM4IDBFQzkgMEY3MSAwMDYyOzAwNjEgMEVCOCAwRUM4IDBFQzkgMEY3MSAwMDYyOworMDA2MSAwRUM5IDBGNzEgMEVDOCAwRUI4IDAwNjI7MDA2MSAwRUI4IDBFQzkgMEVDOCAwRjcxIDAwNjI7MDA2MSAwRUI4IDBFQzkgMEVDOCAwRjcxIDAwNjI7MDA2MSAwRUI4IDBFQzkgMEVDOCAwRjcxIDAwNjI7MDA2MSAwRUI4IDBFQzkgMEVDOCAwRjcxIDAwNjI7CiswMDYxIDBGNzEgMEVDOCAwRUI4IDBFQ0EgMDA2MjswMDYxIDBFQjggMEVDOCAwRUNBIDBGNzEgMDA2MjswMDYxIDBFQjggMEVDOCAwRUNBIDBGNzEgMDA2MjswMDYxIDBFQjggMEVDOCAwRUNBIDBGNzEgMDA2MjswMDYxIDBFQjggMEVDOCAwRUNBIDBGNzEgMDA2MjsKKzAwNjEgMEVDQSAwRjcxIDBFQzggMEVCOCAwMDYyOzAwNjEgMEVCOCAwRUNBIDBFQzggMEY3MSAwMDYyOzAwNjEgMEVCOCAwRUNBIDBFQzggMEY3MSAwMDYyOzAwNjEgMEVCOCAwRUNBIDBFQzggMEY3MSAwMDYyOzAwNjEgMEVCOCAwRUNBIDBFQzggMEY3MSAwMDYyOworMDA2MSAwRjcxIDBFQzggMEVCOCAwRUNCIDAwNjI7MDA2MSAwRUI4IDBFQzggMEVDQiAwRjcxIDAwNjI7MDA2MSAwRUI4IDBFQzggMEVDQiAwRjcxIDAwNjI7MDA2MSAwRUI4IDBFQzggMEVDQiAwRjcxIDAwNjI7MDA2MSAwRUI4IDBFQzggMEVDQiAwRjcxIDAwNjI7CiswMDYxIDBFQ0IgMEY3MSAwRUM4IDBFQjggMDA2MjswMDYxIDBFQjggMEVDQiAwRUM4IDBGNzEgMDA2MjswMDYxIDBFQjggMEVDQiAwRUM4IDBGNzEgMDA2MjswMDYxIDBFQjggMEVDQiAwRUM4IDBGNzEgMDA2MjswMDYxIDBFQjggMEVDQiAwRUM4IDBGNzEgMDA2MjsKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMEYxOCAwMDYyOzAwNjEgMzAyQSAwMzE2IDBGMTggMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDBGMTggMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDBGMTggMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDBGMTggMDU5QSAwMDYyOworMDA2MSAwRjE4IDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDBGMTggMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDBGMTggMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDBGMTggMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDBGMTggMDMxNiAwNTlBIDAwNjI7CiswMDYxIDA1OUEgMDMxNiAzMDJBIDBGMTkgMDA2MjswMDYxIDMwMkEgMDMxNiAwRjE5IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwRjE5IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwRjE5IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwRjE5IDA1OUEgMDA2MjsKKzAwNjEgMEYxOSAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAwRjE5IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwRjE5IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwRjE5IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwRjE5IDAzMTYgMDU5QSAwMDYyOworMDA2MSAwNTlBIDAzMTYgMzAyQSAwRjM1IDAwNjI7MDA2MSAzMDJBIDAzMTYgMEYzNSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMEYzNSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMEYzNSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMEYzNSAwNTlBIDAwNjI7CiswMDYxIDBGMzUgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMEYzNSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMEYzNSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMEYzNSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMEYzNSAwMzE2IDA1OUEgMDA2MjsKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMEYzNyAwMDYyOzAwNjEgMzAyQSAwMzE2IDBGMzcgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDBGMzcgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDBGMzcgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDBGMzcgMDU5QSAwMDYyOworMDA2MSAwRjM3IDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDBGMzcgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDBGMzcgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDBGMzcgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDBGMzcgMDMxNiAwNTlBIDAwNjI7CiswMDYxIDMwMkEgMDMxQiAwMzIxIDBGMzkgMDA2MjswMDYxIDAzMjEgMDMxQiAwRjM5IDMwMkEgMDA2MjswMDYxIDAzMjEgMDMxQiAwRjM5IDMwMkEgMDA2MjswMDYxIDAzMjEgMDMxQiAwRjM5IDMwMkEgMDA2MjswMDYxIDAzMjEgMDMxQiAwRjM5IDMwMkEgMDA2MjsKKzAwNjEgMEYzOSAzMDJBIDAzMUIgMDMyMSAwMDYyOzAwNjEgMDMyMSAwRjM5IDAzMUIgMzAyQSAwMDYyOzAwNjEgMDMyMSAwRjM5IDAzMUIgMzAyQSAwMDYyOzAwNjEgMDMyMSAwRjM5IDAzMUIgMzAyQSAwMDYyOzAwNjEgMDMyMSAwRjM5IDAzMUIgMzAyQSAwMDYyOworMDA2MSAwRjcyIDBGNzEgMEVDOCAwRjcxIDAwNjI7MDA2MSAwRUM4IDBGNzEgMEY3MSAwRjcyIDAwNjI7MDA2MSAwRUM4IDBGNzEgMEY3MSAwRjcyIDAwNjI7MDA2MSAwRUM4IDBGNzEgMEY3MSAwRjcyIDAwNjI7MDA2MSAwRUM4IDBGNzEgMEY3MSAwRjcyIDAwNjI7CiswMDYxIDBGNzEgMEY3MiAwRjcxIDBFQzggMDA2MjswMDYxIDBFQzggMEY3MSAwRjcxIDBGNzIgMDA2MjswMDYxIDBFQzggMEY3MSAwRjcxIDBGNzIgMDA2MjswMDYxIDBFQzggMEY3MSAwRjcxIDBGNzIgMDA2MjswMDYxIDBFQzggMEY3MSAwRjcxIDBGNzIgMDA2MjsKKzAwNjEgMEY3NCAwRjcyIDBGNzEgMEY3MiAwMDYyOzAwNjEgMEY3MSAwRjcyIDBGNzIgMEY3NCAwMDYyOzAwNjEgMEY3MSAwRjcyIDBGNzIgMEY3NCAwMDYyOzAwNjEgMEY3MSAwRjcyIDBGNzIgMEY3NCAwMDYyOzAwNjEgMEY3MSAwRjcyIDBGNzIgMEY3NCAwMDYyOworMDA2MSAwRjcyIDBGNzQgMEY3MiAwRjcxIDAwNjI7MDA2MSAwRjcxIDBGNzIgMEY3MiAwRjc0IDAwNjI7MDA2MSAwRjcxIDBGNzIgMEY3MiAwRjc0IDAwNjI7MDA2MSAwRjcxIDBGNzIgMEY3MiAwRjc0IDAwNjI7MDA2MSAwRjcxIDBGNzIgMEY3MiAwRjc0IDAwNjI7CiswMDYxIDAzMjEgMEY3NCAwRjcyIDBGNzQgMDA2MjswMDYxIDBGNzIgMEY3NCAwRjc0IDAzMjEgMDA2MjswMDYxIDBGNzIgMEY3NCAwRjc0IDAzMjEgMDA2MjswMDYxIDBGNzIgMEY3NCAwRjc0IDAzMjEgMDA2MjswMDYxIDBGNzIgMEY3NCAwRjc0IDAzMjEgMDA2MjsKKzAwNjEgMEY3NCAwMzIxIDBGNzQgMEY3MiAwMDYyOzAwNjEgMEY3MiAwRjc0IDBGNzQgMDMyMSAwMDYyOzAwNjEgMEY3MiAwRjc0IDBGNzQgMDMyMSAwMDYyOzAwNjEgMEY3MiAwRjc0IDBGNzQgMDMyMSAwMDYyOzAwNjEgMEY3MiAwRjc0IDBGNzQgMDMyMSAwMDYyOworMDA2MSAwRjc0IDBGNzIgMEY3MSAwRjdBIDAwNjI7MDA2MSAwRjcxIDBGNzIgMEY3QSAwRjc0IDAwNjI7MDA2MSAwRjcxIDBGNzIgMEY3QSAwRjc0IDAwNjI7MDA2MSAwRjcxIDBGNzIgMEY3QSAwRjc0IDAwNjI7MDA2MSAwRjcxIDBGNzIgMEY3QSAwRjc0IDAwNjI7CiswMDYxIDBGN0EgMEY3NCAwRjcyIDBGNzEgMDA2MjswMDYxIDBGNzEgMEY3QSAwRjcyIDBGNzQgMDA2MjswMDYxIDBGNzEgMEY3QSAwRjcyIDBGNzQgMDA2MjswMDYxIDBGNzEgMEY3QSAwRjcyIDBGNzQgMDA2MjswMDYxIDBGNzEgMEY3QSAwRjcyIDBGNzQgMDA2MjsKKzAwNjEgMEY3NCAwRjcyIDBGNzEgMEY3QiAwMDYyOzAwNjEgMEY3MSAwRjcyIDBGN0IgMEY3NCAwMDYyOzAwNjEgMEY3MSAwRjcyIDBGN0IgMEY3NCAwMDYyOzAwNjEgMEY3MSAwRjcyIDBGN0IgMEY3NCAwMDYyOzAwNjEgMEY3MSAwRjcyIDBGN0IgMEY3NCAwMDYyOworMDA2MSAwRjdCIDBGNzQgMEY3MiAwRjcxIDAwNjI7MDA2MSAwRjcxIDBGN0IgMEY3MiAwRjc0IDAwNjI7MDA2MSAwRjcxIDBGN0IgMEY3MiAwRjc0IDAwNjI7MDA2MSAwRjcxIDBGN0IgMEY3MiAwRjc0IDAwNjI7MDA2MSAwRjcxIDBGN0IgMEY3MiAwRjc0IDAwNjI7CiswMDYxIDBGNzQgMEY3MiAwRjcxIDBGN0MgMDA2MjswMDYxIDBGNzEgMEY3MiAwRjdDIDBGNzQgMDA2MjswMDYxIDBGNzEgMEY3MiAwRjdDIDBGNzQgMDA2MjswMDYxIDBGNzEgMEY3MiAwRjdDIDBGNzQgMDA2MjswMDYxIDBGNzEgMEY3MiAwRjdDIDBGNzQgMDA2MjsKKzAwNjEgMEY3QyAwRjc0IDBGNzIgMEY3MSAwMDYyOzAwNjEgMEY3MSAwRjdDIDBGNzIgMEY3NCAwMDYyOzAwNjEgMEY3MSAwRjdDIDBGNzIgMEY3NCAwMDYyOzAwNjEgMEY3MSAwRjdDIDBGNzIgMEY3NCAwMDYyOzAwNjEgMEY3MSAwRjdDIDBGNzIgMEY3NCAwMDYyOworMDA2MSAwRjc0IDBGNzIgMEY3MSAwRjdEIDAwNjI7MDA2MSAwRjcxIDBGNzIgMEY3RCAwRjc0IDAwNjI7MDA2MSAwRjcxIDBGNzIgMEY3RCAwRjc0IDAwNjI7MDA2MSAwRjcxIDBGNzIgMEY3RCAwRjc0IDAwNjI7MDA2MSAwRjcxIDBGNzIgMEY3RCAwRjc0IDAwNjI7CiswMDYxIDBGN0QgMEY3NCAwRjcyIDBGNzEgMDA2MjswMDYxIDBGNzEgMEY3RCAwRjcyIDBGNzQgMDA2MjswMDYxIDBGNzEgMEY3RCAwRjcyIDBGNzQgMDA2MjswMDYxIDBGNzEgMEY3RCAwRjcyIDBGNzQgMDA2MjswMDYxIDBGNzEgMEY3RCAwRjcyIDBGNzQgMDA2MjsKKzAwNjEgMEY3NCAwRjcyIDBGNzEgMEY4MCAwMDYyOzAwNjEgMEY3MSAwRjcyIDBGODAgMEY3NCAwMDYyOzAwNjEgMEY3MSAwRjcyIDBGODAgMEY3NCAwMDYyOzAwNjEgMEY3MSAwRjcyIDBGODAgMEY3NCAwMDYyOzAwNjEgMEY3MSAwRjcyIDBGODAgMEY3NCAwMDYyOworMDA2MSAwRjgwIDBGNzQgMEY3MiAwRjcxIDAwNjI7MDA2MSAwRjcxIDBGODAgMEY3MiAwRjc0IDAwNjI7MDA2MSAwRjcxIDBGODAgMEY3MiAwRjc0IDAwNjI7MDA2MSAwRjcxIDBGODAgMEY3MiAwRjc0IDAwNjI7MDA2MSAwRjcxIDBGODAgMEY3MiAwRjc0IDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDBGODIgMDA2MjswMEUwIDA1QUUgMEY4MiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMEY4MiAwMzE1IDAwNjI7MDBFMCAwNUFFIDBGODIgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDBGODIgMDMxNSAwMDYyOworMDA2MSAwRjgyIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDBGODIgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDBGODIgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDBGODIgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDBGODIgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDBGODMgMDA2MjswMEUwIDA1QUUgMEY4MyAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMEY4MyAwMzE1IDAwNjI7MDBFMCAwNUFFIDBGODMgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDBGODMgMDMxNSAwMDYyOworMDA2MSAwRjgzIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDBGODMgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDBGODMgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDBGODMgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDBGODMgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDA1QjAgMDk0RCAzMDk5IDBGODQgMDA2MjswMDYxIDMwOTkgMDk0RCAwRjg0IDA1QjAgMDA2MjswMDYxIDMwOTkgMDk0RCAwRjg0IDA1QjAgMDA2MjswMDYxIDMwOTkgMDk0RCAwRjg0IDA1QjAgMDA2MjswMDYxIDMwOTkgMDk0RCAwRjg0IDA1QjAgMDA2MjsKKzAwNjEgMEY4NCAwNUIwIDA5NEQgMzA5OSAwMDYyOzAwNjEgMzA5OSAwRjg0IDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwRjg0IDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwRjg0IDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwRjg0IDA5NEQgMDVCMCAwMDYyOworMDA2MSAwMzE1IDAzMDAgMDVBRSAwRjg2IDAwNjI7MDBFMCAwNUFFIDBGODYgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDBGODYgMDMxNSAwMDYyOzAwRTAgMDVBRSAwRjg2IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwRjg2IDAzMTUgMDA2MjsKKzAwNjEgMEY4NiAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwRjg2IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwRjg2IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwRjg2IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwRjg2IDAzMDAgMDMxNSAwMDYyOworMDA2MSAwMzE1IDAzMDAgMDVBRSAwRjg3IDAwNjI7MDBFMCAwNUFFIDBGODcgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDBGODcgMDMxNSAwMDYyOzAwRTAgMDVBRSAwRjg3IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwRjg3IDAzMTUgMDA2MjsKKzAwNjEgMEY4NyAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwRjg3IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwRjg3IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwRjg3IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwRjg3IDAzMDAgMDMxNSAwMDYyOworMDA2MSAwNTlBIDAzMTYgMzAyQSAwRkM2IDAwNjI7MDA2MSAzMDJBIDAzMTYgMEZDNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMEZDNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMEZDNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMEZDNiAwNTlBIDAwNjI7CiswMDYxIDBGQzYgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMEZDNiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMEZDNiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMEZDNiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMEZDNiAwMzE2IDA1OUEgMDA2MjsKKzAwNjEgMzA5OSAwOTNDIDAzMzQgMTAzNyAwMDYyOzAwNjEgMDMzNCAwOTNDIDEwMzcgMzA5OSAwMDYyOzAwNjEgMDMzNCAwOTNDIDEwMzcgMzA5OSAwMDYyOzAwNjEgMDMzNCAwOTNDIDEwMzcgMzA5OSAwMDYyOzAwNjEgMDMzNCAwOTNDIDEwMzcgMzA5OSAwMDYyOworMDA2MSAxMDM3IDMwOTkgMDkzQyAwMzM0IDAwNjI7MDA2MSAwMzM0IDEwMzcgMDkzQyAzMDk5IDAwNjI7MDA2MSAwMzM0IDEwMzcgMDkzQyAzMDk5IDAwNjI7MDA2MSAwMzM0IDEwMzcgMDkzQyAzMDk5IDAwNjI7MDA2MSAwMzM0IDEwMzcgMDkzQyAzMDk5IDAwNjI7CiswMDYxIDA1QjAgMDk0RCAzMDk5IDEwMzkgMDA2MjswMDYxIDMwOTkgMDk0RCAxMDM5IDA1QjAgMDA2MjswMDYxIDMwOTkgMDk0RCAxMDM5IDA1QjAgMDA2MjswMDYxIDMwOTkgMDk0RCAxMDM5IDA1QjAgMDA2MjswMDYxIDMwOTkgMDk0RCAxMDM5IDA1QjAgMDA2MjsKKzAwNjEgMTAzOSAwNUIwIDA5NEQgMzA5OSAwMDYyOzAwNjEgMzA5OSAxMDM5IDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAxMDM5IDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAxMDM5IDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAxMDM5IDA5NEQgMDVCMCAwMDYyOworMDA2MSAwNUIwIDA5NEQgMzA5OSAxNzE0IDAwNjI7MDA2MSAzMDk5IDA5NEQgMTcxNCAwNUIwIDAwNjI7MDA2MSAzMDk5IDA5NEQgMTcxNCAwNUIwIDAwNjI7MDA2MSAzMDk5IDA5NEQgMTcxNCAwNUIwIDAwNjI7MDA2MSAzMDk5IDA5NEQgMTcxNCAwNUIwIDAwNjI7CiswMDYxIDE3MTQgMDVCMCAwOTREIDMwOTkgMDA2MjswMDYxIDMwOTkgMTcxNCAwOTREIDA1QjAgMDA2MjswMDYxIDMwOTkgMTcxNCAwOTREIDA1QjAgMDA2MjswMDYxIDMwOTkgMTcxNCAwOTREIDA1QjAgMDA2MjswMDYxIDMwOTkgMTcxNCAwOTREIDA1QjAgMDA2MjsKKzAwNjEgMDVCMCAwOTREIDMwOTkgMTczNCAwMDYyOzAwNjEgMzA5OSAwOTREIDE3MzQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwOTREIDE3MzQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwOTREIDE3MzQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwOTREIDE3MzQgMDVCMCAwMDYyOworMDA2MSAxNzM0IDA1QjAgMDk0RCAzMDk5IDAwNjI7MDA2MSAzMDk5IDE3MzQgMDk0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDE3MzQgMDk0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDE3MzQgMDk0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDE3MzQgMDk0RCAwNUIwIDAwNjI7CiswMDYxIDA1QjAgMDk0RCAzMDk5IDE3RDIgMDA2MjswMDYxIDMwOTkgMDk0RCAxN0QyIDA1QjAgMDA2MjswMDYxIDMwOTkgMDk0RCAxN0QyIDA1QjAgMDA2MjswMDYxIDMwOTkgMDk0RCAxN0QyIDA1QjAgMDA2MjswMDYxIDMwOTkgMDk0RCAxN0QyIDA1QjAgMDA2MjsKKzAwNjEgMTdEMiAwNUIwIDA5NEQgMzA5OSAwMDYyOzAwNjEgMzA5OSAxN0QyIDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAxN0QyIDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAxN0QyIDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAxN0QyIDA5NEQgMDVCMCAwMDYyOworMDA2MSAwMzAwIDA1QUUgMUQxNkQgMThBOSAwMDYyOzAwRTAgMUQxNkQgMDVBRSAxOEE5IDAwNjI7MDA2MSAxRDE2RCAwNUFFIDE4QTkgMDMwMCAwMDYyOzAwRTAgMUQxNkQgMDVBRSAxOEE5IDAwNjI7MDA2MSAxRDE2RCAwNUFFIDE4QTkgMDMwMCAwMDYyOworMDA2MSAxOEE5IDAzMDAgMDVBRSAxRDE2RCAwMDYyOzAwRTAgMUQxNkQgMThBOSAwNUFFIDAwNjI7MDA2MSAxRDE2RCAxOEE5IDA1QUUgMDMwMCAwMDYyOzAwRTAgMUQxNkQgMThBOSAwNUFFIDAwNjI7MDA2MSAxRDE2RCAxOEE5IDA1QUUgMDMwMCAwMDYyOworMDA2MSAwMzE1IDAzMDAgMDVBRSAyMEQwIDAwNjI7MDBFMCAwNUFFIDIwRDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDIwRDAgMDMxNSAwMDYyOzAwRTAgMDVBRSAyMEQwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAyMEQwIDAzMTUgMDA2MjsKKzAwNjEgMjBEMCAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAyMEQwIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAyMEQwIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAyMEQwIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAyMEQwIDAzMDAgMDMxNSAwMDYyOworMDA2MSAwMzE1IDAzMDAgMDVBRSAyMEQxIDAwNjI7MDBFMCAwNUFFIDIwRDEgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDIwRDEgMDMxNSAwMDYyOzAwRTAgMDVBRSAyMEQxIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAyMEQxIDAzMTUgMDA2MjsKKzAwNjEgMjBEMSAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAyMEQxIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAyMEQxIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAyMEQxIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAyMEQxIDAzMDAgMDMxNSAwMDYyOworMDA2MSAwOTNDIDAzMzQgMjBEMiAwMDYyOzAwNjEgMDMzNCAyMEQyIDA5M0MgMDA2MjswMDYxIDAzMzQgMjBEMiAwOTNDIDAwNjI7MDA2MSAwMzM0IDIwRDIgMDkzQyAwMDYyOzAwNjEgMDMzNCAyMEQyIDA5M0MgMDA2MjsKKzAwNjEgMjBEMiAwOTNDIDAzMzQgMDA2MjswMDYxIDIwRDIgMDMzNCAwOTNDIDAwNjI7MDA2MSAyMEQyIDAzMzQgMDkzQyAwMDYyOzAwNjEgMjBEMiAwMzM0IDA5M0MgMDA2MjswMDYxIDIwRDIgMDMzNCAwOTNDIDAwNjI7CiswMDYxIDA5M0MgMDMzNCAyMEQzIDAwNjI7MDA2MSAwMzM0IDIwRDMgMDkzQyAwMDYyOzAwNjEgMDMzNCAyMEQzIDA5M0MgMDA2MjswMDYxIDAzMzQgMjBEMyAwOTNDIDAwNjI7MDA2MSAwMzM0IDIwRDMgMDkzQyAwMDYyOworMDA2MSAyMEQzIDA5M0MgMDMzNCAwMDYyOzAwNjEgMjBEMyAwMzM0IDA5M0MgMDA2MjswMDYxIDIwRDMgMDMzNCAwOTNDIDAwNjI7MDA2MSAyMEQzIDAzMzQgMDkzQyAwMDYyOzAwNjEgMjBEMyAwMzM0IDA5M0MgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMjBENCAwMDYyOzAwRTAgMDVBRSAyMEQ0IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAyMEQ0IDAzMTUgMDA2MjswMEUwIDA1QUUgMjBENCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMjBENCAwMzE1IDAwNjI7CiswMDYxIDIwRDQgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMjBENCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMjBENCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMjBENCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMjBENCAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMjBENSAwMDYyOzAwRTAgMDVBRSAyMEQ1IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAyMEQ1IDAzMTUgMDA2MjswMEUwIDA1QUUgMjBENSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMjBENSAwMzE1IDAwNjI7CiswMDYxIDIwRDUgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMjBENSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMjBENSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMjBENSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMjBENSAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMjBENiAwMDYyOzAwRTAgMDVBRSAyMEQ2IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAyMEQ2IDAzMTUgMDA2MjswMEUwIDA1QUUgMjBENiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMjBENiAwMzE1IDAwNjI7CiswMDYxIDIwRDYgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMjBENiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMjBENiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMjBENiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMjBENiAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMjBENyAwMDYyOzAwRTAgMDVBRSAyMEQ3IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAyMEQ3IDAzMTUgMDA2MjswMEUwIDA1QUUgMjBENyAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMjBENyAwMzE1IDAwNjI7CiswMDYxIDIwRDcgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMjBENyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMjBENyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMjBENyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMjBENyAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDkzQyAwMzM0IDIwRDggMDA2MjswMDYxIDAzMzQgMjBEOCAwOTNDIDAwNjI7MDA2MSAwMzM0IDIwRDggMDkzQyAwMDYyOzAwNjEgMDMzNCAyMEQ4IDA5M0MgMDA2MjswMDYxIDAzMzQgMjBEOCAwOTNDIDAwNjI7CiswMDYxIDIwRDggMDkzQyAwMzM0IDAwNjI7MDA2MSAyMEQ4IDAzMzQgMDkzQyAwMDYyOzAwNjEgMjBEOCAwMzM0IDA5M0MgMDA2MjswMDYxIDIwRDggMDMzNCAwOTNDIDAwNjI7MDA2MSAyMEQ4IDAzMzQgMDkzQyAwMDYyOworMDA2MSAwOTNDIDAzMzQgMjBEOSAwMDYyOzAwNjEgMDMzNCAyMEQ5IDA5M0MgMDA2MjswMDYxIDAzMzQgMjBEOSAwOTNDIDAwNjI7MDA2MSAwMzM0IDIwRDkgMDkzQyAwMDYyOzAwNjEgMDMzNCAyMEQ5IDA5M0MgMDA2MjsKKzAwNjEgMjBEOSAwOTNDIDAzMzQgMDA2MjswMDYxIDIwRDkgMDMzNCAwOTNDIDAwNjI7MDA2MSAyMEQ5IDAzMzQgMDkzQyAwMDYyOzAwNjEgMjBEOSAwMzM0IDA5M0MgMDA2MjswMDYxIDIwRDkgMDMzNCAwOTNDIDAwNjI7CiswMDYxIDA5M0MgMDMzNCAyMERBIDAwNjI7MDA2MSAwMzM0IDIwREEgMDkzQyAwMDYyOzAwNjEgMDMzNCAyMERBIDA5M0MgMDA2MjswMDYxIDAzMzQgMjBEQSAwOTNDIDAwNjI7MDA2MSAwMzM0IDIwREEgMDkzQyAwMDYyOworMDA2MSAyMERBIDA5M0MgMDMzNCAwMDYyOzAwNjEgMjBEQSAwMzM0IDA5M0MgMDA2MjswMDYxIDIwREEgMDMzNCAwOTNDIDAwNjI7MDA2MSAyMERBIDAzMzQgMDkzQyAwMDYyOzAwNjEgMjBEQSAwMzM0IDA5M0MgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMjBEQiAwMDYyOzAwRTAgMDVBRSAyMERCIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAyMERCIDAzMTUgMDA2MjswMEUwIDA1QUUgMjBEQiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMjBEQiAwMzE1IDAwNjI7CiswMDYxIDIwREIgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMjBEQiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMjBEQiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMjBEQiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMjBEQiAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMjBEQyAwMDYyOzAwRTAgMDVBRSAyMERDIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAyMERDIDAzMTUgMDA2MjswMEUwIDA1QUUgMjBEQyAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMjBEQyAwMzE1IDAwNjI7CiswMDYxIDIwREMgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMjBEQyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMjBEQyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMjBEQyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMjBEQyAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMjBFMSAwMDYyOzAwRTAgMDVBRSAyMEUxIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAyMEUxIDAzMTUgMDA2MjswMEUwIDA1QUUgMjBFMSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMjBFMSAwMzE1IDAwNjI7CiswMDYxIDIwRTEgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMjBFMSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMjBFMSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMjBFMSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMjBFMSAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDkzQyAwMzM0IDIwRTUgMDA2MjswMDYxIDAzMzQgMjBFNSAwOTNDIDAwNjI7MDA2MSAwMzM0IDIwRTUgMDkzQyAwMDYyOzAwNjEgMDMzNCAyMEU1IDA5M0MgMDA2MjswMDYxIDAzMzQgMjBFNSAwOTNDIDAwNjI7CiswMDYxIDIwRTUgMDkzQyAwMzM0IDAwNjI7MDA2MSAyMEU1IDAzMzQgMDkzQyAwMDYyOzAwNjEgMjBFNSAwMzM0IDA5M0MgMDA2MjswMDYxIDIwRTUgMDMzNCAwOTNDIDAwNjI7MDA2MSAyMEU1IDAzMzQgMDkzQyAwMDYyOworMDA2MSAwOTNDIDAzMzQgMjBFNiAwMDYyOzAwNjEgMDMzNCAyMEU2IDA5M0MgMDA2MjswMDYxIDAzMzQgMjBFNiAwOTNDIDAwNjI7MDA2MSAwMzM0IDIwRTYgMDkzQyAwMDYyOzAwNjEgMDMzNCAyMEU2IDA5M0MgMDA2MjsKKzAwNjEgMjBFNiAwOTNDIDAzMzQgMDA2MjswMDYxIDIwRTYgMDMzNCAwOTNDIDAwNjI7MDA2MSAyMEU2IDAzMzQgMDkzQyAwMDYyOzAwNjEgMjBFNiAwMzM0IDA5M0MgMDA2MjswMDYxIDIwRTYgMDMzNCAwOTNDIDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDIwRTcgMDA2MjswMEUwIDA1QUUgMjBFNyAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMjBFNyAwMzE1IDAwNjI7MDBFMCAwNUFFIDIwRTcgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDIwRTcgMDMxNSAwMDYyOworMDA2MSAyMEU3IDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDIwRTcgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDIwRTcgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDIwRTcgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDIwRTcgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDA1OUEgMDMxNiAzMDJBIDIwRTggMDA2MjswMDYxIDMwMkEgMDMxNiAyMEU4IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAyMEU4IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAyMEU4IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAyMEU4IDA1OUEgMDA2MjsKKzAwNjEgMjBFOCAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAyMEU4IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAyMEU4IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAyMEU4IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAyMEU4IDAzMTYgMDU5QSAwMDYyOworMDA2MSAwMzE1IDAzMDAgMDVBRSAyMEU5IDAwNjI7MDBFMCAwNUFFIDIwRTkgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDIwRTkgMDMxNSAwMDYyOzAwRTAgMDVBRSAyMEU5IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAyMEU5IDAzMTUgMDA2MjsKKzAwNjEgMjBFOSAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAyMEU5IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAyMEU5IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAyMEU5IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAyMEU5IDAzMDAgMDMxNSAwMDYyOworMDA2MSAwOTNDIDAzMzQgMjBFQSAwMDYyOzAwNjEgMDMzNCAyMEVBIDA5M0MgMDA2MjswMDYxIDAzMzQgMjBFQSAwOTNDIDAwNjI7MDA2MSAwMzM0IDIwRUEgMDkzQyAwMDYyOzAwNjEgMDMzNCAyMEVBIDA5M0MgMDA2MjsKKzAwNjEgMjBFQSAwOTNDIDAzMzQgMDA2MjswMDYxIDIwRUEgMDMzNCAwOTNDIDAwNjI7MDA2MSAyMEVBIDAzMzQgMDkzQyAwMDYyOzAwNjEgMjBFQSAwMzM0IDA5M0MgMDA2MjswMDYxIDIwRUEgMDMzNCAwOTNDIDAwNjI7CiswMDYxIDAzMTYgMzAyQSAwMzFCIDMwMkEgMDA2MjswMDYxIDAzMUIgMzAyQSAzMDJBIDAzMTYgMDA2MjswMDYxIDAzMUIgMzAyQSAzMDJBIDAzMTYgMDA2MjswMDYxIDAzMUIgMzAyQSAzMDJBIDAzMTYgMDA2MjswMDYxIDAzMUIgMzAyQSAzMDJBIDAzMTYgMDA2MjsKKzAwNjEgMzAyQSAwMzE2IDMwMkEgMDMxQiAwMDYyOzAwNjEgMDMxQiAzMDJBIDMwMkEgMDMxNiAwMDYyOzAwNjEgMDMxQiAzMDJBIDMwMkEgMDMxNiAwMDYyOzAwNjEgMDMxQiAzMDJBIDMwMkEgMDMxNiAwMDYyOzAwNjEgMDMxQiAzMDJBIDMwMkEgMDMxNiAwMDYyOworMDA2MSAwMzAwIDA1QUUgMUQxNkQgMzAyQiAwMDYyOzAwRTAgMUQxNkQgMDVBRSAzMDJCIDAwNjI7MDA2MSAxRDE2RCAwNUFFIDMwMkIgMDMwMCAwMDYyOzAwRTAgMUQxNkQgMDVBRSAzMDJCIDAwNjI7MDA2MSAxRDE2RCAwNUFFIDMwMkIgMDMwMCAwMDYyOworMDA2MSAzMDJCIDAzMDAgMDVBRSAxRDE2RCAwMDYyOzAwRTAgMUQxNkQgMzAyQiAwNUFFIDAwNjI7MDA2MSAxRDE2RCAzMDJCIDA1QUUgMDMwMCAwMDYyOzAwRTAgMUQxNkQgMzAyQiAwNUFFIDAwNjI7MDA2MSAxRDE2RCAzMDJCIDA1QUUgMDMwMCAwMDYyOworMDA2MSAwMzYyIDAzMTUgMDMwMCAzMDJDIDAwNjI7MDBFMCAwMzE1IDMwMkMgMDM2MiAwMDYyOzAwNjEgMDMwMCAwMzE1IDMwMkMgMDM2MiAwMDYyOzAwRTAgMDMxNSAzMDJDIDAzNjIgMDA2MjswMDYxIDAzMDAgMDMxNSAzMDJDIDAzNjIgMDA2MjsKKzAwNjEgMzAyQyAwMzYyIDAzMTUgMDMwMCAwMDYyOzAwRTAgMzAyQyAwMzE1IDAzNjIgMDA2MjswMDYxIDAzMDAgMzAyQyAwMzE1IDAzNjIgMDA2MjswMEUwIDMwMkMgMDMxNSAwMzYyIDAwNjI7MDA2MSAwMzAwIDMwMkMgMDMxNSAwMzYyIDAwNjI7CiswMDYxIDMwMkUgMDU5QSAwMzE2IDMwMkQgMDA2MjswMDYxIDAzMTYgMDU5QSAzMDJEIDMwMkUgMDA2MjswMDYxIDAzMTYgMDU5QSAzMDJEIDMwMkUgMDA2MjswMDYxIDAzMTYgMDU5QSAzMDJEIDMwMkUgMDA2MjswMDYxIDAzMTYgMDU5QSAzMDJEIDMwMkUgMDA2MjsKKzAwNjEgMzAyRCAzMDJFIDA1OUEgMDMxNiAwMDYyOzAwNjEgMDMxNiAzMDJEIDA1OUEgMzAyRSAwMDYyOzAwNjEgMDMxNiAzMDJEIDA1OUEgMzAyRSAwMDYyOzAwNjEgMDMxNiAzMDJEIDA1OUEgMzAyRSAwMDYyOzAwNjEgMDMxNiAzMDJEIDA1OUEgMzAyRSAwMDYyOworMDA2MSAxRDE2RCAzMDJFIDA1OUEgMzAyRSAwMDYyOzAwNjEgMDU5QSAzMDJFIDMwMkUgMUQxNkQgMDA2MjswMDYxIDA1OUEgMzAyRSAzMDJFIDFEMTZEIDAwNjI7MDA2MSAwNTlBIDMwMkUgMzAyRSAxRDE2RCAwMDYyOzAwNjEgMDU5QSAzMDJFIDMwMkUgMUQxNkQgMDA2MjsKKzAwNjEgMzAyRSAxRDE2RCAzMDJFIDA1OUEgMDA2MjswMDYxIDA1OUEgMzAyRSAzMDJFIDFEMTZEIDAwNjI7MDA2MSAwNTlBIDMwMkUgMzAyRSAxRDE2RCAwMDYyOzAwNjEgMDU5QSAzMDJFIDMwMkUgMUQxNkQgMDA2MjswMDYxIDA1OUEgMzAyRSAzMDJFIDFEMTZEIDAwNjI7CiswMDYxIDFEMTZEIDMwMkUgMDU5QSAzMDJGIDAwNjI7MDA2MSAwNTlBIDMwMkUgMzAyRiAxRDE2RCAwMDYyOzAwNjEgMDU5QSAzMDJFIDMwMkYgMUQxNkQgMDA2MjswMDYxIDA1OUEgMzAyRSAzMDJGIDFEMTZEIDAwNjI7MDA2MSAwNTlBIDMwMkUgMzAyRiAxRDE2RCAwMDYyOworMDA2MSAzMDJGIDFEMTZEIDMwMkUgMDU5QSAwMDYyOzAwNjEgMDU5QSAzMDJGIDMwMkUgMUQxNkQgMDA2MjswMDYxIDA1OUEgMzAyRiAzMDJFIDFEMTZEIDAwNjI7MDA2MSAwNTlBIDMwMkYgMzAyRSAxRDE2RCAwMDYyOzAwNjEgMDU5QSAzMDJGIDMwMkUgMUQxNkQgMDA2MjsKKzAwNjEgMDk0RCAzMDk5IDA5M0MgMzA5OSAwMDYyOzAwNjEgMDkzQyAzMDk5IDMwOTkgMDk0RCAwMDYyOzAwNjEgMDkzQyAzMDk5IDMwOTkgMDk0RCAwMDYyOzAwNjEgMDkzQyAzMDk5IDMwOTkgMDk0RCAwMDYyOzAwNjEgMDkzQyAzMDk5IDMwOTkgMDk0RCAwMDYyOworMDA2MSAzMDk5IDA5NEQgMzA5OSAwOTNDIDAwNjI7MDA2MSAwOTNDIDMwOTkgMzA5OSAwOTREIDAwNjI7MDA2MSAwOTNDIDMwOTkgMzA5OSAwOTREIDAwNjI7MDA2MSAwOTNDIDMwOTkgMzA5OSAwOTREIDAwNjI7MDA2MSAwOTNDIDMwOTkgMzA5OSAwOTREIDAwNjI7CiswMDYxIDA5NEQgMzA5OSAwOTNDIDMwOUEgMDA2MjswMDYxIDA5M0MgMzA5OSAzMDlBIDA5NEQgMDA2MjswMDYxIDA5M0MgMzA5OSAzMDlBIDA5NEQgMDA2MjswMDYxIDA5M0MgMzA5OSAzMDlBIDA5NEQgMDA2MjswMDYxIDA5M0MgMzA5OSAzMDlBIDA5NEQgMDA2MjsKKzAwNjEgMzA5QSAwOTREIDMwOTkgMDkzQyAwMDYyOzAwNjEgMDkzQyAzMDlBIDMwOTkgMDk0RCAwMDYyOzAwNjEgMDkzQyAzMDlBIDMwOTkgMDk0RCAwMDYyOzAwNjEgMDkzQyAzMDlBIDMwOTkgMDk0RCAwMDYyOzAwNjEgMDkzQyAzMDlBIDMwOTkgMDk0RCAwMDYyOworMDA2MSAwNjRCIEZCMUUgMDVDMiBGQjFFIDAwNjI7MDA2MSAwNUMyIEZCMUUgRkIxRSAwNjRCIDAwNjI7MDA2MSAwNUMyIEZCMUUgRkIxRSAwNjRCIDAwNjI7MDA2MSAwNUMyIEZCMUUgRkIxRSAwNjRCIDAwNjI7MDA2MSAwNUMyIEZCMUUgRkIxRSAwNjRCIDAwNjI7CiswMDYxIEZCMUUgMDY0QiBGQjFFIDA1QzIgMDA2MjswMDYxIDA1QzIgRkIxRSBGQjFFIDA2NEIgMDA2MjswMDYxIDA1QzIgRkIxRSBGQjFFIDA2NEIgMDA2MjswMDYxIDA1QzIgRkIxRSBGQjFFIDA2NEIgMDA2MjswMDYxIDA1QzIgRkIxRSBGQjFFIDA2NEIgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgRkUyMCAwMDYyOzAwRTAgMDVBRSBGRTIwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCBGRTIwIDAzMTUgMDA2MjswMEUwIDA1QUUgRkUyMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgRkUyMCAwMzE1IDAwNjI7CiswMDYxIEZFMjAgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgRkUyMCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgRkUyMCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgRkUyMCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgRkUyMCAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgRkUyMSAwMDYyOzAwRTAgMDVBRSBGRTIxIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCBGRTIxIDAzMTUgMDA2MjswMEUwIDA1QUUgRkUyMSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgRkUyMSAwMzE1IDAwNjI7CiswMDYxIEZFMjEgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgRkUyMSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgRkUyMSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgRkUyMSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgRkUyMSAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgRkUyMiAwMDYyOzAwRTAgMDVBRSBGRTIyIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCBGRTIyIDAzMTUgMDA2MjswMEUwIDA1QUUgRkUyMiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgRkUyMiAwMzE1IDAwNjI7CiswMDYxIEZFMjIgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgRkUyMiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgRkUyMiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgRkUyMiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgRkUyMiAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgRkUyMyAwMDYyOzAwRTAgMDVBRSBGRTIzIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCBGRTIzIDAzMTUgMDA2MjswMEUwIDA1QUUgRkUyMyAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgRkUyMyAwMzE1IDAwNjI7CiswMDYxIEZFMjMgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgRkUyMyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgRkUyMyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgRkUyMyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgRkUyMyAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMzAyQSAwMzFCIDAzMjEgMUQxNjUgMDA2MjswMDYxIDAzMjEgMDMxQiAxRDE2NSAzMDJBIDAwNjI7MDA2MSAwMzIxIDAzMUIgMUQxNjUgMzAyQSAwMDYyOzAwNjEgMDMyMSAwMzFCIDFEMTY1IDMwMkEgMDA2MjswMDYxIDAzMjEgMDMxQiAxRDE2NSAzMDJBIDAwNjI7CiswMDYxIDFEMTY1IDMwMkEgMDMxQiAwMzIxIDAwNjI7MDA2MSAwMzIxIDFEMTY1IDAzMUIgMzAyQSAwMDYyOzAwNjEgMDMyMSAxRDE2NSAwMzFCIDMwMkEgMDA2MjswMDYxIDAzMjEgMUQxNjUgMDMxQiAzMDJBIDAwNjI7MDA2MSAwMzIxIDFEMTY1IDAzMUIgMzAyQSAwMDYyOworMDA2MSAzMDJBIDAzMUIgMDMyMSAxRDE2NiAwMDYyOzAwNjEgMDMyMSAwMzFCIDFEMTY2IDMwMkEgMDA2MjswMDYxIDAzMjEgMDMxQiAxRDE2NiAzMDJBIDAwNjI7MDA2MSAwMzIxIDAzMUIgMUQxNjYgMzAyQSAwMDYyOzAwNjEgMDMyMSAwMzFCIDFEMTY2IDMwMkEgMDA2MjsKKzAwNjEgMUQxNjYgMzAyQSAwMzFCIDAzMjEgMDA2MjswMDYxIDAzMjEgMUQxNjYgMDMxQiAzMDJBIDAwNjI7MDA2MSAwMzIxIDFEMTY2IDAzMUIgMzAyQSAwMDYyOzAwNjEgMDMyMSAxRDE2NiAwMzFCIDMwMkEgMDA2MjswMDYxIDAzMjEgMUQxNjYgMDMxQiAzMDJBIDAwNjI7CiswMDYxIDA5M0MgMDMzNCAxRDE2NyAwMDYyOzAwNjEgMDMzNCAxRDE2NyAwOTNDIDAwNjI7MDA2MSAwMzM0IDFEMTY3IDA5M0MgMDA2MjswMDYxIDAzMzQgMUQxNjcgMDkzQyAwMDYyOzAwNjEgMDMzNCAxRDE2NyAwOTNDIDAwNjI7CiswMDYxIDFEMTY3IDA5M0MgMDMzNCAwMDYyOzAwNjEgMUQxNjcgMDMzNCAwOTNDIDAwNjI7MDA2MSAxRDE2NyAwMzM0IDA5M0MgMDA2MjswMDYxIDFEMTY3IDAzMzQgMDkzQyAwMDYyOzAwNjEgMUQxNjcgMDMzNCAwOTNDIDAwNjI7CiswMDYxIDA5M0MgMDMzNCAxRDE2OCAwMDYyOzAwNjEgMDMzNCAxRDE2OCAwOTNDIDAwNjI7MDA2MSAwMzM0IDFEMTY4IDA5M0MgMDA2MjswMDYxIDAzMzQgMUQxNjggMDkzQyAwMDYyOzAwNjEgMDMzNCAxRDE2OCAwOTNDIDAwNjI7CiswMDYxIDFEMTY4IDA5M0MgMDMzNCAwMDYyOzAwNjEgMUQxNjggMDMzNCAwOTNDIDAwNjI7MDA2MSAxRDE2OCAwMzM0IDA5M0MgMDA2MjswMDYxIDFEMTY4IDAzMzQgMDkzQyAwMDYyOzAwNjEgMUQxNjggMDMzNCAwOTNDIDAwNjI7CiswMDYxIDA5M0MgMDMzNCAxRDE2OSAwMDYyOzAwNjEgMDMzNCAxRDE2OSAwOTNDIDAwNjI7MDA2MSAwMzM0IDFEMTY5IDA5M0MgMDA2MjswMDYxIDAzMzQgMUQxNjkgMDkzQyAwMDYyOzAwNjEgMDMzNCAxRDE2OSAwOTNDIDAwNjI7CiswMDYxIDFEMTY5IDA5M0MgMDMzNCAwMDYyOzAwNjEgMUQxNjkgMDMzNCAwOTNDIDAwNjI7MDA2MSAxRDE2OSAwMzM0IDA5M0MgMDA2MjswMDYxIDFEMTY5IDAzMzQgMDkzQyAwMDYyOzAwNjEgMUQxNjkgMDMzNCAwOTNDIDAwNjI7CiswMDYxIDA1QUUgMUQxNkQgMzAyRSAxRDE2RCAwMDYyOzAwNjEgMzAyRSAxRDE2RCAxRDE2RCAwNUFFIDAwNjI7MDA2MSAzMDJFIDFEMTZEIDFEMTZEIDA1QUUgMDA2MjswMDYxIDMwMkUgMUQxNkQgMUQxNkQgMDVBRSAwMDYyOzAwNjEgMzAyRSAxRDE2RCAxRDE2RCAwNUFFIDAwNjI7CiswMDYxIDFEMTZEIDA1QUUgMUQxNkQgMzAyRSAwMDYyOzAwNjEgMzAyRSAxRDE2RCAxRDE2RCAwNUFFIDAwNjI7MDA2MSAzMDJFIDFEMTZEIDFEMTZEIDA1QUUgMDA2MjswMDYxIDMwMkUgMUQxNkQgMUQxNkQgMDVBRSAwMDYyOzAwNjEgMzAyRSAxRDE2RCAxRDE2RCAwNUFFIDAwNjI7CiswMDYxIDMwMkEgMDMxQiAwMzIxIDFEMTZFIDAwNjI7MDA2MSAwMzIxIDAzMUIgMUQxNkUgMzAyQSAwMDYyOzAwNjEgMDMyMSAwMzFCIDFEMTZFIDMwMkEgMDA2MjswMDYxIDAzMjEgMDMxQiAxRDE2RSAzMDJBIDAwNjI7MDA2MSAwMzIxIDAzMUIgMUQxNkUgMzAyQSAwMDYyOworMDA2MSAxRDE2RSAzMDJBIDAzMUIgMDMyMSAwMDYyOzAwNjEgMDMyMSAxRDE2RSAwMzFCIDMwMkEgMDA2MjswMDYxIDAzMjEgMUQxNkUgMDMxQiAzMDJBIDAwNjI7MDA2MSAwMzIxIDFEMTZFIDAzMUIgMzAyQSAwMDYyOzAwNjEgMDMyMSAxRDE2RSAwMzFCIDMwMkEgMDA2MjsKKzAwNjEgMzAyQSAwMzFCIDAzMjEgMUQxNkYgMDA2MjswMDYxIDAzMjEgMDMxQiAxRDE2RiAzMDJBIDAwNjI7MDA2MSAwMzIxIDAzMUIgMUQxNkYgMzAyQSAwMDYyOzAwNjEgMDMyMSAwMzFCIDFEMTZGIDMwMkEgMDA2MjswMDYxIDAzMjEgMDMxQiAxRDE2RiAzMDJBIDAwNjI7CiswMDYxIDFEMTZGIDMwMkEgMDMxQiAwMzIxIDAwNjI7MDA2MSAwMzIxIDFEMTZGIDAzMUIgMzAyQSAwMDYyOzAwNjEgMDMyMSAxRDE2RiAwMzFCIDMwMkEgMDA2MjswMDYxIDAzMjEgMUQxNkYgMDMxQiAzMDJBIDAwNjI7MDA2MSAwMzIxIDFEMTZGIDAzMUIgMzAyQSAwMDYyOworMDA2MSAzMDJBIDAzMUIgMDMyMSAxRDE3MCAwMDYyOzAwNjEgMDMyMSAwMzFCIDFEMTcwIDMwMkEgMDA2MjswMDYxIDAzMjEgMDMxQiAxRDE3MCAzMDJBIDAwNjI7MDA2MSAwMzIxIDAzMUIgMUQxNzAgMzAyQSAwMDYyOzAwNjEgMDMyMSAwMzFCIDFEMTcwIDMwMkEgMDA2MjsKKzAwNjEgMUQxNzAgMzAyQSAwMzFCIDAzMjEgMDA2MjswMDYxIDAzMjEgMUQxNzAgMDMxQiAzMDJBIDAwNjI7MDA2MSAwMzIxIDFEMTcwIDAzMUIgMzAyQSAwMDYyOzAwNjEgMDMyMSAxRDE3MCAwMzFCIDMwMkEgMDA2MjswMDYxIDAzMjEgMUQxNzAgMDMxQiAzMDJBIDAwNjI7CiswMDYxIDMwMkEgMDMxQiAwMzIxIDFEMTcxIDAwNjI7MDA2MSAwMzIxIDAzMUIgMUQxNzEgMzAyQSAwMDYyOzAwNjEgMDMyMSAwMzFCIDFEMTcxIDMwMkEgMDA2MjswMDYxIDAzMjEgMDMxQiAxRDE3MSAzMDJBIDAwNjI7MDA2MSAwMzIxIDAzMUIgMUQxNzEgMzAyQSAwMDYyOworMDA2MSAxRDE3MSAzMDJBIDAzMUIgMDMyMSAwMDYyOzAwNjEgMDMyMSAxRDE3MSAwMzFCIDMwMkEgMDA2MjswMDYxIDAzMjEgMUQxNzEgMDMxQiAzMDJBIDAwNjI7MDA2MSAwMzIxIDFEMTcxIDAzMUIgMzAyQSAwMDYyOzAwNjEgMDMyMSAxRDE3MSAwMzFCIDMwMkEgMDA2MjsKKzAwNjEgMzAyQSAwMzFCIDAzMjEgMUQxNzIgMDA2MjswMDYxIDAzMjEgMDMxQiAxRDE3MiAzMDJBIDAwNjI7MDA2MSAwMzIxIDAzMUIgMUQxNzIgMzAyQSAwMDYyOzAwNjEgMDMyMSAwMzFCIDFEMTcyIDMwMkEgMDA2MjswMDYxIDAzMjEgMDMxQiAxRDE3MiAzMDJBIDAwNjI7CiswMDYxIDFEMTcyIDMwMkEgMDMxQiAwMzIxIDAwNjI7MDA2MSAwMzIxIDFEMTcyIDAzMUIgMzAyQSAwMDYyOzAwNjEgMDMyMSAxRDE3MiAwMzFCIDMwMkEgMDA2MjswMDYxIDAzMjEgMUQxNzIgMDMxQiAzMDJBIDAwNjI7MDA2MSAwMzIxIDFEMTcyIDAzMUIgMzAyQSAwMDYyOworMDA2MSAwNTlBIDAzMTYgMzAyQSAxRDE3QiAwMDYyOzAwNjEgMzAyQSAwMzE2IDFEMTdCIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAxRDE3QiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMUQxN0IgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDFEMTdCIDA1OUEgMDA2MjsKKzAwNjEgMUQxN0IgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMUQxN0IgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDFEMTdCIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAxRDE3QiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMUQxN0IgMDMxNiAwNTlBIDAwNjI7CiswMDYxIDA1OUEgMDMxNiAzMDJBIDFEMTdDIDAwNjI7MDA2MSAzMDJBIDAzMTYgMUQxN0MgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDFEMTdDIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAxRDE3QyAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMUQxN0MgMDU5QSAwMDYyOworMDA2MSAxRDE3QyAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAxRDE3QyAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMUQxN0MgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDFEMTdDIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAxRDE3QyAwMzE2IDA1OUEgMDA2MjsKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMUQxN0QgMDA2MjswMDYxIDMwMkEgMDMxNiAxRDE3RCAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMUQxN0QgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDFEMTdEIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAxRDE3RCAwNTlBIDAwNjI7CiswMDYxIDFEMTdEIDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDFEMTdEIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAxRDE3RCAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMUQxN0QgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDFEMTdEIDAzMTYgMDU5QSAwMDYyOworMDA2MSAwNTlBIDAzMTYgMzAyQSAxRDE3RSAwMDYyOzAwNjEgMzAyQSAwMzE2IDFEMTdFIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAxRDE3RSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMUQxN0UgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDFEMTdFIDA1OUEgMDA2MjsKKzAwNjEgMUQxN0UgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMUQxN0UgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDFEMTdFIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAxRDE3RSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMUQxN0UgMDMxNiAwNTlBIDAwNjI7CiswMDYxIDA1OUEgMDMxNiAzMDJBIDFEMTdGIDAwNjI7MDA2MSAzMDJBIDAzMTYgMUQxN0YgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDFEMTdGIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAxRDE3RiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMUQxN0YgMDU5QSAwMDYyOworMDA2MSAxRDE3RiAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAxRDE3RiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMUQxN0YgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDFEMTdGIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAxRDE3RiAwMzE2IDA1OUEgMDA2MjsKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMUQxODAgMDA2MjswMDYxIDMwMkEgMDMxNiAxRDE4MCAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMUQxODAgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDFEMTgwIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAxRDE4MCAwNTlBIDAwNjI7CiswMDYxIDFEMTgwIDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDFEMTgwIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAxRDE4MCAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMUQxODAgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDFEMTgwIDAzMTYgMDU5QSAwMDYyOworMDA2MSAwNTlBIDAzMTYgMzAyQSAxRDE4MSAwMDYyOzAwNjEgMzAyQSAwMzE2IDFEMTgxIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAxRDE4MSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMUQxODEgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDFEMTgxIDA1OUEgMDA2MjsKKzAwNjEgMUQxODEgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMUQxODEgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDFEMTgxIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAxRDE4MSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMUQxODEgMDMxNiAwNTlBIDAwNjI7CiswMDYxIDA1OUEgMDMxNiAzMDJBIDFEMTgyIDAwNjI7MDA2MSAzMDJBIDAzMTYgMUQxODIgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDFEMTgyIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAxRDE4MiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMUQxODIgMDU5QSAwMDYyOworMDA2MSAxRDE4MiAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAxRDE4MiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMUQxODIgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDFEMTgyIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAxRDE4MiAwMzE2IDA1OUEgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMUQxODUgMDA2MjswMEUwIDA1QUUgMUQxODUgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDFEMTg1IDAzMTUgMDA2MjswMEUwIDA1QUUgMUQxODUgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDFEMTg1IDAzMTUgMDA2MjsKKzAwNjEgMUQxODUgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMUQxODUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDFEMTg1IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAxRDE4NSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMUQxODUgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDFEMTg2IDAwNjI7MDBFMCAwNUFFIDFEMTg2IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAxRDE4NiAwMzE1IDAwNjI7MDBFMCAwNUFFIDFEMTg2IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAxRDE4NiAwMzE1IDAwNjI7CiswMDYxIDFEMTg2IDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDFEMTg2IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAxRDE4NiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMUQxODYgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDFEMTg2IDAzMDAgMDMxNSAwMDYyOworMDA2MSAwMzE1IDAzMDAgMDVBRSAxRDE4NyAwMDYyOzAwRTAgMDVBRSAxRDE4NyAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMUQxODcgMDMxNSAwMDYyOzAwRTAgMDVBRSAxRDE4NyAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMUQxODcgMDMxNSAwMDYyOworMDA2MSAxRDE4NyAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAxRDE4NyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMUQxODcgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDFEMTg3IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAxRDE4NyAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMUQxODggMDA2MjswMEUwIDA1QUUgMUQxODggMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDFEMTg4IDAzMTUgMDA2MjswMEUwIDA1QUUgMUQxODggMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDFEMTg4IDAzMTUgMDA2MjsKKzAwNjEgMUQxODggMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMUQxODggMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDFEMTg4IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAxRDE4OCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMUQxODggMDMwMCAwMzE1IDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDFEMTg5IDAwNjI7MDBFMCAwNUFFIDFEMTg5IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAxRDE4OSAwMzE1IDAwNjI7MDBFMCAwNUFFIDFEMTg5IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAxRDE4OSAwMzE1IDAwNjI7CiswMDYxIDFEMTg5IDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDFEMTg5IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAxRDE4OSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMUQxODkgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDFEMTg5IDAzMDAgMDMxNSAwMDYyOworMDA2MSAwNTlBIDAzMTYgMzAyQSAxRDE4QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDFEMThBIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAxRDE4QSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMUQxOEEgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDFEMThBIDA1OUEgMDA2MjsKKzAwNjEgMUQxOEEgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMUQxOEEgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDFEMThBIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAxRDE4QSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMUQxOEEgMDMxNiAwNTlBIDAwNjI7CiswMDYxIDA1OUEgMDMxNiAzMDJBIDFEMThCIDAwNjI7MDA2MSAzMDJBIDAzMTYgMUQxOEIgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDFEMThCIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAxRDE4QiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMUQxOEIgMDU5QSAwMDYyOworMDA2MSAxRDE4QiAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAxRDE4QiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMUQxOEIgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDFEMThCIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAxRDE4QiAwMzE2IDA1OUEgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMUQxQUEgMDA2MjswMEUwIDA1QUUgMUQxQUEgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDFEMUFBIDAzMTUgMDA2MjswMEUwIDA1QUUgMUQxQUEgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDFEMUFBIDAzMTUgMDA2MjsKKzAwNjEgMUQxQUEgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMUQxQUEgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDFEMUFBIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAxRDFBQSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMUQxQUEgMDMwMCAwMzE1IDAwNjI7CiswMDYxIDAzMTUgMDMwMCAwNUFFIDFEMUFCIDAwNjI7MDBFMCAwNUFFIDFEMUFCIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAxRDFBQiAwMzE1IDAwNjI7MDBFMCAwNUFFIDFEMUFCIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAxRDFBQiAwMzE1IDAwNjI7CiswMDYxIDFEMUFCIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDFEMUFCIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAxRDFBQiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMUQxQUIgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDFEMUFCIDAzMDAgMDMxNSAwMDYyOworMDA2MSAwMzE1IDAzMDAgMDVBRSAxRDFBQyAwMDYyOzAwRTAgMDVBRSAxRDFBQyAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMUQxQUMgMDMxNSAwMDYyOzAwRTAgMDVBRSAxRDFBQyAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMUQxQUMgMDMxNSAwMDYyOworMDA2MSAxRDFBQyAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAxRDFBQyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMUQxQUMgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDFEMUFDIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAxRDFBQyAwMzAwIDAzMTUgMDA2MjsKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMUQxQUQgMDA2MjswMEUwIDA1QUUgMUQxQUQgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDFEMUFEIDAzMTUgMDA2MjswMEUwIDA1QUUgMUQxQUQgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDFEMUFEIDAzMTUgMDA2MjsKKzAwNjEgMUQxQUQgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMUQxQUQgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDFEMUFEIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAxRDFBRCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMUQxQUQgMDMwMCAwMzE1IDAwNjI7CisjCisjIEVORCBPRiBGSUxFCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L2RhdGEvdW5pY29kZS9TcGVjaWFsQ2FzaW5nLnR4dCBiL3NyYy9jb20vaWJtL2ljdS9kZXYvZGF0YS91bmljb2RlL1NwZWNpYWxDYXNpbmcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmYyNWFjOWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L2RhdGEvdW5pY29kZS9TcGVjaWFsQ2FzaW5nLnR4dApAQCAtMCwwICsxLDI1NSBAQAorIyBTcGVjaWFsQ2FzaW5nLTMuMi4wLnR4dAorIyBEYXRlOiAyMDAyLTAzLTE5LDIzOjMxOjQyIEdNVCBbTURdCisjCisjIFNwZWNpYWwgQ2FzaW5nIFByb3BlcnRpZXMKKyMKKyMgVGhpcyBmaWxlIGlzIGEgc3VwcGxlbWVudCB0byB0aGUgVW5pY29kZURhdGEgZmlsZS4KKyMgSXQgY29udGFpbnMgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY2FzaW5nIG9mIFVuaWNvZGUgY2hhcmFjdGVycy4KKyMgKEZvciBjb21wYXRpYmlsaXR5LCB0aGUgVW5pY29kZURhdGEudHh0IGZpbGUgb25seSBjb250YWlucyBjYXNlIG1hcHBpbmdzIGZvcgorIyBjaGFyYWN0ZXJzIHdoZXJlIHRoZXkgYXJlIDEtMSwgYW5kIGRvZXMgbm90IGhhdmUgbG9jYWxlLXNwZWNpZmljIG1hcHBpbmdzLikKKyMgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZQorIyBVVFIgIzIxIENhc2UgTWFwcGluZ3MsIGF0IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvdW5pY29kZS9yZXBvcnRzL3RyMjEvCisjCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIEZvcm1hdAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBUaGUgZW50cmllcyBpbiB0aGlzIGZpbGUgYXJlIGluIHRoZSBmb2xsb3dpbmcgbWFjaGluZS1yZWFkYWJsZSBmb3JtYXQ6CisjCisjIDxjb2RlPjsgPGxvd2VyPiA7IDx0aXRsZT4gOyA8dXBwZXI+IDsgKDxjb25kaXRpb25fbGlzdD4gOyk/ICMgPGNvbW1lbnQ+CisjCisjIDxjb2RlPiwgPGxvd2VyPiwgPHRpdGxlPiwgYW5kIDx1cHBlcj4gcHJvdmlkZSBjaGFyYWN0ZXIgdmFsdWVzIGluIGhleC4gSWYgdGhlcmUgaXMgbW9yZSB0aGFuCisjIG9uZSBjaGFyYWN0ZXIsIHRoZXkgYXJlIHNlcGFyYXRlZCBieSBzcGFjZXMuIE90aGVyIHRoYW4gYXMgdXNlZCB0byBzZXBhcmF0ZSBlbGVtZW50cywKKyMgc3BhY2VzIGFyZSB0byBiZSBpZ25vcmVkLgorIworIyBUaGUgPGNvbmRpdGlvbl9saXN0PiBpcyBvcHRpb25hbC4gV2hlcmUgcHJlc2VudCwgaXQgY29uc2lzdHMgb2Ygb25lIG9yIG1vcmUgbG9jYWxlcyBvciBjb250ZXh0cywKKyMgc2VwYXJhdGVkIGJ5IHNwYWNlcy4gSW4gdGhlc2UgY29uZGl0aW9uczoKKyMgLSBBIGNvbmRpdGlvbiBsaXN0IG92ZXJyaWRlcyB0aGUgbm9ybWFsIGJlaGF2aW9yIGlmIGFsbCBvZiB0aGUgbGlzdGVkIGNvbmRpdGlvbnMgYXJlIHRydWUuCisjIC0gVGhlIGNvbnRleHQgaXMgYWx3YXlzIHRoZSBjb250ZXh0IG9mIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBvcmlnaW5hbCBzdHJpbmcsCisjICAgTk9UIGluIHRoZSByZXN1bHRpbmcgc3RyaW5nLgorIyAtIENhc2UgZGlzdGluY3Rpb25zIGluIHRoZSBjb25kaXRpb24gbGlzdCBhcmUgbm90IHNpZ25pZmljYW50LgorIyAtIENvbmRpdGlvbnMgcHJlY2VkZWQgYnkgIk5vdF8iIHJlcHJlc2VudCB0aGUgbmVnYXRpb24gb2YgdGhlIGNvbmRpdGlvbi4KKyMKKyMgQSBsb2NhbGUgaXMgZGVmaW5lZCBhczoKKyMgPGxvY2FsZT4gOj0gPElTT182MzlfY29kZT4gKCAiXyIgPElTT18zMTY2X2NvZGU+ICggIl8iIDx2YXJpYW50PiApPyApPworIyA8SVNPXzMxNjZfY29kZT4gOj0gMi1sZXR0ZXIgSVNPIGNvdW50cnkgY29kZSwKKyMgPElTT182MzlfY29kZT4gOj0gIDItbGV0dGVyIElTTyBsYW5ndWFnZSBjb2RlCisjCisjIEEgY29udGV4dCBpcyBvbmUgb2YgdGhlIGZvbGxvd2luZywgYXMgZGVmaW5lZCBpbiBVQVggIzIxOiBDYXNlIE1hcHBpbmdzOgorIyAgIEZpbmFsX1NpZ21hLCBBZnRlcl9Tb2Z0X0RvdHRlZCwgTW9yZV9BYm92ZSwgQmVmb3JlX0RvdAorIworIyBQYXJzZXJzIG9mIHRoaXMgZmlsZSBtdXN0IGJlIHByZXBhcmVkIHRvIGRlYWwgZnV0dXJlIGFkZGl0aW9ucyB0byB0aGlzIGZvcm1hdDoKKyMgICogQWRkaXRpb25hbCBjb250ZXh0cworIyAgKiBBZGRpdGlvbmFsIGZpZWxkcworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIFVuY29uZGl0aW9uYWwgbWFwcGluZ3MKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBUaGUgR2VybWFuIGVzLXplZCBpcyBzcGVjaWFsLS10aGUgbm9ybWFsIG1hcHBpbmcgaXMgdG8gU1MuCisjIE5vdGU6IHRoZSB0aXRsZWNhc2Ugc2hvdWxkIG5ldmVyIG9jY3VyIGluIHByYWN0aWNlLiBJdCBpcyBlcXVhbCB0byB0aXRsZWNhc2UodXBwZXJjYXNlKDxlcy16ZWQ+KSkKKworMDBERjsgMDBERjsgMDA1MyAwMDczOyAwMDUzIDAwNTM7ICMgTEFUSU4gU01BTEwgTEVUVEVSIFNIQVJQIFMKKworIyBQcmVzZXJ2ZSBjYW5vbmljYWwgZXF1aXZhbGVuY2UgZm9yIEkgd2l0aCBkb3QuIFR1cmtpYyBpcyBoYW5kbGVkIGJlbG93LgorCiswMTMwOyAwMDY5IDAzMDc7IDAxMzA7IDAxMzA7ICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERPVCBBQk9WRQorCisjIExpZ2F0dXJlcworCitGQjAwOyBGQjAwOyAwMDQ2IDAwNjY7IDAwNDYgMDA0NjsgIyBMQVRJTiBTTUFMTCBMSUdBVFVSRSBGRgorRkIwMTsgRkIwMTsgMDA0NiAwMDY5OyAwMDQ2IDAwNDk7ICMgTEFUSU4gU01BTEwgTElHQVRVUkUgRkkKK0ZCMDI7IEZCMDI7IDAwNDYgMDA2QzsgMDA0NiAwMDRDOyAjIExBVElOIFNNQUxMIExJR0FUVVJFIEZMCitGQjAzOyBGQjAzOyAwMDQ2IDAwNjYgMDA2OTsgMDA0NiAwMDQ2IDAwNDk7ICMgTEFUSU4gU01BTEwgTElHQVRVUkUgRkZJCitGQjA0OyBGQjA0OyAwMDQ2IDAwNjYgMDA2QzsgMDA0NiAwMDQ2IDAwNEM7ICMgTEFUSU4gU01BTEwgTElHQVRVUkUgRkZMCitGQjA1OyBGQjA1OyAwMDUzIDAwNzQ7IDAwNTMgMDA1NDsgIyBMQVRJTiBTTUFMTCBMSUdBVFVSRSBMT05HIFMgVAorRkIwNjsgRkIwNjsgMDA1MyAwMDc0OyAwMDUzIDAwNTQ7ICMgTEFUSU4gU01BTEwgTElHQVRVUkUgU1QKKworMDU4NzsgMDU4NzsgMDUzNSAwNTgyOyAwNTM1IDA1NTI7ICMgQVJNRU5JQU4gU01BTEwgTElHQVRVUkUgRUNIIFlJV04KK0ZCMTM7IEZCMTM7IDA1NDQgMDU3NjsgMDU0NCAwNTQ2OyAjIEFSTUVOSUFOIFNNQUxMIExJR0FUVVJFIE1FTiBOT1cKK0ZCMTQ7IEZCMTQ7IDA1NDQgMDU2NTsgMDU0NCAwNTM1OyAjIEFSTUVOSUFOIFNNQUxMIExJR0FUVVJFIE1FTiBFQ0gKK0ZCMTU7IEZCMTU7IDA1NDQgMDU2QjsgMDU0NCAwNTNCOyAjIEFSTUVOSUFOIFNNQUxMIExJR0FUVVJFIE1FTiBJTkkKK0ZCMTY7IEZCMTY7IDA1NEUgMDU3NjsgMDU0RSAwNTQ2OyAjIEFSTUVOSUFOIFNNQUxMIExJR0FUVVJFIFZFVyBOT1cKK0ZCMTc7IEZCMTc7IDA1NDQgMDU2RDsgMDU0NCAwNTNEOyAjIEFSTUVOSUFOIFNNQUxMIExJR0FUVVJFIE1FTiBYRUgKKworIyBObyBjb3JyZXNwb25kaW5nIHVwcGVyY2FzZSBwcmVjb21wb3NlZCBjaGFyYWN0ZXIKKworMDE0OTsgMDE0OTsgMDJCQyAwMDRFOyAwMkJDIDAwNEU7ICMgTEFUSU4gU01BTEwgTEVUVEVSIE4gUFJFQ0VERUQgQlkgQVBPU1RST1BIRQorMDM5MDsgMDM5MDsgMDM5OSAwMzA4IDAzMDE7IDAzOTkgMDMwOCAwMzAxOyAjIEdSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggRElBTFlUSUtBIEFORCBUT05PUworMDNCMDsgMDNCMDsgMDNBNSAwMzA4IDAzMDE7IDAzQTUgMDMwOCAwMzAxOyAjIEdSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggRElBTFlUSUtBIEFORCBUT05PUworMDFGMDsgMDFGMDsgMDA0QSAwMzBDOyAwMDRBIDAzMEM7ICMgTEFUSU4gU01BTEwgTEVUVEVSIEogV0lUSCBDQVJPTgorMUU5NjsgMUU5NjsgMDA0OCAwMzMxOyAwMDQ4IDAzMzE7ICMgTEFUSU4gU01BTEwgTEVUVEVSIEggV0lUSCBMSU5FIEJFTE9XCisxRTk3OyAxRTk3OyAwMDU0IDAzMDg7IDAwNTQgMDMwODsgIyBMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIERJQUVSRVNJUworMUU5ODsgMUU5ODsgMDA1NyAwMzBBOyAwMDU3IDAzMEE7ICMgTEFUSU4gU01BTEwgTEVUVEVSIFcgV0lUSCBSSU5HIEFCT1ZFCisxRTk5OyAxRTk5OyAwMDU5IDAzMEE7IDAwNTkgMDMwQTsgIyBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIFJJTkcgQUJPVkUKKzFFOUE7IDFFOUE7IDAwNDEgMDJCRTsgMDA0MSAwMkJFOyAjIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggUklHSFQgSEFMRiBSSU5HCisxRjUwOyAxRjUwOyAwM0E1IDAzMTM7IDAzQTUgMDMxMzsgIyBHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIFBTSUxJCisxRjUyOyAxRjUyOyAwM0E1IDAzMTMgMDMwMDsgMDNBNSAwMzEzIDAzMDA7ICMgR1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBQU0lMSSBBTkQgVkFSSUEKKzFGNTQ7IDFGNTQ7IDAzQTUgMDMxMyAwMzAxOyAwM0E1IDAzMTMgMDMwMTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIFBTSUxJIEFORCBPWElBCisxRjU2OyAxRjU2OyAwM0E1IDAzMTMgMDM0MjsgMDNBNSAwMzEzIDAzNDI7ICMgR1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkkKKzFGQjY7IDFGQjY7IDAzOTEgMDM0MjsgMDM5MSAwMzQyOyAjIEdSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFBFUklTUE9NRU5JCisxRkM2OyAxRkM2OyAwMzk3IDAzNDI7IDAzOTcgMDM0MjsgIyBHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggUEVSSVNQT01FTkkKKzFGRDI7IDFGRDI7IDAzOTkgMDMwOCAwMzAwOyAwMzk5IDAzMDggMDMwMDsgIyBHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIERJQUxZVElLQSBBTkQgVkFSSUEKKzFGRDM7IDFGRDM7IDAzOTkgMDMwOCAwMzAxOyAwMzk5IDAzMDggMDMwMTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIERJQUxZVElLQSBBTkQgT1hJQQorMUZENjsgMUZENjsgMDM5OSAwMzQyOyAwMzk5IDAzNDI7ICMgR1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBQRVJJU1BPTUVOSQorMUZENzsgMUZENzsgMDM5OSAwMzA4IDAzNDI7IDAzOTkgMDMwOCAwMzQyOyAjIEdSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggRElBTFlUSUtBIEFORCBQRVJJU1BPTUVOSQorMUZFMjsgMUZFMjsgMDNBNSAwMzA4IDAzMDA7IDAzQTUgMDMwOCAwMzAwOyAjIEdSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggRElBTFlUSUtBIEFORCBWQVJJQQorMUZFMzsgMUZFMzsgMDNBNSAwMzA4IDAzMDE7IDAzQTUgMDMwOCAwMzAxOyAjIEdSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggRElBTFlUSUtBIEFORCBPWElBCisxRkU0OyAxRkU0OyAwM0ExIDAzMTM7IDAzQTEgMDMxMzsgIyBHUkVFSyBTTUFMTCBMRVRURVIgUkhPIFdJVEggUFNJTEkKKzFGRTY7IDFGRTY7IDAzQTUgMDM0MjsgMDNBNSAwMzQyOyAjIEdSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggUEVSSVNQT01FTkkKKzFGRTc7IDFGRTc7IDAzQTUgMDMwOCAwMzQyOyAwM0E1IDAzMDggMDM0MjsgIyBHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIERJQUxZVElLQSBBTkQgUEVSSVNQT01FTkkKKzFGRjY7IDFGRjY7IDAzQTkgMDM0MjsgMDNBOSAwMzQyOyAjIEdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFBFUklTUE9NRU5JCisKKyMgSU1QT1JUQU5ULXdoZW4gY2FwaXRhbGl6aW5nIGlvdGEtc3Vic2NyaXB0ICgwMzQ1KQorIyAgSXQgTVVTVCBiZSBpbiBub3JtYWxpemVkIGZvcm0tLW1vdmVkIHRvIHRoZSBlbmQgb2YgYW55IHNlcXVlbmNlIG9mIGNvbWJpbmluZyBtYXJrcy4KKyMgIFRoaXMgaXMgYmVjYXVzZSBsb2dpY2FsbHkgaXQgcmVwcmVzZW50cyBhIGZvbGxvd2luZyBiYXNlIGNoYXJhY3RlciEKKyMgIEUuZy4gPGlvdGFfc3Vic2NyaXB0PiAoPE1uPiB8IDxNYz4gfCA8TWU+KSsgPT4gKDxNbj4gfCA8TWM+IHwgPE1lPikrIDxpb3RhX3N1YnNjcmlwdD4KKyMgSXQgc2hvdWxkIG5ldmVyIGJlIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gYSB3b3JkLCBzbyBpbiB0aXRsZWNhc2luZyBpdCBjYW4gYmUgbGVmdCBhcyBpcy4KKworIyBUaGUgZm9sbG93aW5nIGNhc2VzIGFyZSBhbHJlYWR5IGluIHRoZSBVbmljb2RlRGF0YSBmaWxlLCBzbyBhcmUgb25seSBjb21tZW50ZWQgaGVyZS4KKworIyAwMzQ1OyAwMzQ1OyAwMzQ1OyAwMzk5OyAjIENPTUJJTklORyBHUkVFSyBZUE9HRUdSQU1NRU5JCisKKyMgQWxsIGxldHRlcnMgd2l0aCBZUE9HRUdSQU1NRU5JIChpb3RhLXN1YnNjcmlwdCkgb3IgUFJPU0dFR1JBTU1FTkkgKGlvdGEgYWRzY3JpcHQpCisjIGhhdmUgc3BlY2lhbCB1cHBlcmNhc2VzLgorIyBOb3RlOiBjaGFyYWN0ZXJzIHdpdGggUFJPU0dFR1JBTU1FTkkgYXJlIGFjdHVhbGx5IHRpdGxlY2FzZSwgbm90IHVwcGVyY2FzZSEKKworMUY4MDsgMUY4MDsgMUY4ODsgMUYwOCAwMzk5OyAjIEdSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBZUE9HRUdSQU1NRU5JCisxRjgxOyAxRjgxOyAxRjg5OyAxRjA5IDAzOTk7ICMgR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIFlQT0dFR1JBTU1FTkkKKzFGODI7IDFGODI7IDFGOEE7IDFGMEEgMDM5OTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgVkFSSUEgQU5EIFlQT0dFR1JBTU1FTkkKKzFGODM7IDFGODM7IDFGOEI7IDFGMEIgMDM5OTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgVkFSSUEgQU5EIFlQT0dFR1JBTU1FTkkKKzFGODQ7IDFGODQ7IDFGOEM7IDFGMEMgMDM5OTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgT1hJQSBBTkQgWVBPR0VHUkFNTUVOSQorMUY4NTsgMUY4NTsgMUY4RDsgMUYwRCAwMzk5OyAjIEdSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBPWElBIEFORCBZUE9HRUdSQU1NRU5JCisxRjg2OyAxRjg2OyAxRjhFOyAxRjBFIDAzOTk7ICMgR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JIEFORCBZUE9HRUdSQU1NRU5JCisxRjg3OyAxRjg3OyAxRjhGOyAxRjBGIDAzOTk7ICMgR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JIEFORCBZUE9HRUdSQU1NRU5JCisxRjg4OyAxRjgwOyAxRjg4OyAxRjA4IDAzOTk7ICMgR1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGODk7IDFGODE7IDFGODk7IDFGMDkgMDM5OTsgIyBHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBQUk9TR0VHUkFNTUVOSQorMUY4QTsgMUY4MjsgMUY4QTsgMUYwQSAwMzk5OyAjIEdSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIFZBUklBIEFORCBQUk9TR0VHUkFNTUVOSQorMUY4QjsgMUY4MzsgMUY4QjsgMUYwQiAwMzk5OyAjIEdSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIFZBUklBIEFORCBQUk9TR0VHUkFNTUVOSQorMUY4QzsgMUY4NDsgMUY4QzsgMUYwQyAwMzk5OyAjIEdSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIE9YSUEgQU5EIFBST1NHRUdSQU1NRU5JCisxRjhEOyAxRjg1OyAxRjhEOyAxRjBEIDAzOTk7ICMgR1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgT1hJQSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGOEU7IDFGODY7IDFGOEU7IDFGMEUgMDM5OTsgIyBHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGOEY7IDFGODc7IDFGOEY7IDFGMEYgMDM5OTsgIyBHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGOTA7IDFGOTA7IDFGOTg7IDFGMjggMDM5OTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIFlQT0dFR1JBTU1FTkkKKzFGOTE7IDFGOTE7IDFGOTk7IDFGMjkgMDM5OTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIFlQT0dFR1JBTU1FTkkKKzFGOTI7IDFGOTI7IDFGOUE7IDFGMkEgMDM5OTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIFZBUklBIEFORCBZUE9HRUdSQU1NRU5JCisxRjkzOyAxRjkzOyAxRjlCOyAxRjJCIDAzOTk7ICMgR1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBWQVJJQSBBTkQgWVBPR0VHUkFNTUVOSQorMUY5NDsgMUY5NDsgMUY5QzsgMUYyQyAwMzk5OyAjIEdSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgT1hJQSBBTkQgWVBPR0VHUkFNTUVOSQorMUY5NTsgMUY5NTsgMUY5RDsgMUYyRCAwMzk5OyAjIEdSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgT1hJQSBBTkQgWVBPR0VHUkFNTUVOSQorMUY5NjsgMUY5NjsgMUY5RTsgMUYyRSAwMzk5OyAjIEdSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkkgQU5EIFlQT0dFR1JBTU1FTkkKKzFGOTc7IDFGOTc7IDFGOUY7IDFGMkYgMDM5OTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JIEFORCBZUE9HRUdSQU1NRU5JCisxRjk4OyAxRjkwOyAxRjk4OyAxRjI4IDAzOTk7ICMgR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIFBST1NHRUdSQU1NRU5JCisxRjk5OyAxRjkxOyAxRjk5OyAxRjI5IDAzOTk7ICMgR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIFBST1NHRUdSQU1NRU5JCisxRjlBOyAxRjkyOyAxRjlBOyAxRjJBIDAzOTk7ICMgR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIFZBUklBIEFORCBQUk9TR0VHUkFNTUVOSQorMUY5QjsgMUY5MzsgMUY5QjsgMUYyQiAwMzk5OyAjIEdSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBWQVJJQSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGOUM7IDFGOTQ7IDFGOUM7IDFGMkMgMDM5OTsgIyBHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgT1hJQSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGOUQ7IDFGOTU7IDFGOUQ7IDFGMkQgMDM5OTsgIyBHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgT1hJQSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGOUU7IDFGOTY7IDFGOUU7IDFGMkUgMDM5OTsgIyBHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkkgQU5EIFBST1NHRUdSQU1NRU5JCisxRjlGOyAxRjk3OyAxRjlGOyAxRjJGIDAzOTk7ICMgR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JIEFORCBQUk9TR0VHUkFNTUVOSQorMUZBMDsgMUZBMDsgMUZBODsgMUY2OCAwMzk5OyAjIEdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBZUE9HRUdSQU1NRU5JCisxRkExOyAxRkExOyAxRkE5OyAxRjY5IDAzOTk7ICMgR1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFlQT0dFR1JBTU1FTkkKKzFGQTI7IDFGQTI7IDFGQUE7IDFGNkEgMDM5OTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgVkFSSUEgQU5EIFlQT0dFR1JBTU1FTkkKKzFGQTM7IDFGQTM7IDFGQUI7IDFGNkIgMDM5OTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgVkFSSUEgQU5EIFlQT0dFR1JBTU1FTkkKKzFGQTQ7IDFGQTQ7IDFGQUM7IDFGNkMgMDM5OTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgT1hJQSBBTkQgWVBPR0VHUkFNTUVOSQorMUZBNTsgMUZBNTsgMUZBRDsgMUY2RCAwMzk5OyAjIEdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBPWElBIEFORCBZUE9HRUdSQU1NRU5JCisxRkE2OyAxRkE2OyAxRkFFOyAxRjZFIDAzOTk7ICMgR1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JIEFORCBZUE9HRUdSQU1NRU5JCisxRkE3OyAxRkE3OyAxRkFGOyAxRjZGIDAzOTk7ICMgR1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JIEFORCBZUE9HRUdSQU1NRU5JCisxRkE4OyAxRkEwOyAxRkE4OyAxRjY4IDAzOTk7ICMgR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGQTk7IDFGQTE7IDFGQTk7IDFGNjkgMDM5OTsgIyBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBQUk9TR0VHUkFNTUVOSQorMUZBQTsgMUZBMjsgMUZBQTsgMUY2QSAwMzk5OyAjIEdSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIFZBUklBIEFORCBQUk9TR0VHUkFNTUVOSQorMUZBQjsgMUZBMzsgMUZBQjsgMUY2QiAwMzk5OyAjIEdSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFZBUklBIEFORCBQUk9TR0VHUkFNTUVOSQorMUZBQzsgMUZBNDsgMUZBQzsgMUY2QyAwMzk5OyAjIEdSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIE9YSUEgQU5EIFBST1NHRUdSQU1NRU5JCisxRkFEOyAxRkE1OyAxRkFEOyAxRjZEIDAzOTk7ICMgR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgT1hJQSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGQUU7IDFGQTY7IDFGQUU7IDFGNkUgMDM5OTsgIyBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGQUY7IDFGQTc7IDFGQUY7IDFGNkYgMDM5OTsgIyBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGQjM7IDFGQjM7IDFGQkM7IDAzOTEgMDM5OTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBZUE9HRUdSQU1NRU5JCisxRkJDOyAxRkIzOyAxRkJDOyAwMzkxIDAzOTk7ICMgR1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBQUk9TR0VHUkFNTUVOSQorMUZDMzsgMUZDMzsgMUZDQzsgMDM5NyAwMzk5OyAjIEdSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBZUE9HRUdSQU1NRU5JCisxRkNDOyAxRkMzOyAxRkNDOyAwMzk3IDAzOTk7ICMgR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggUFJPU0dFR1JBTU1FTkkKKzFGRjM7IDFGRjM7IDFGRkM7IDAzQTkgMDM5OTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBZUE9HRUdSQU1NRU5JCisxRkZDOyAxRkYzOyAxRkZDOyAwM0E5IDAzOTk7ICMgR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBQUk9TR0VHUkFNTUVOSQorCisjIFNvbWUgY2hhcmFjdGVycyB3aXRoIFlQT0dFR1JBTU1FTkkgYXJlIGFsc28gaGF2ZSBubyBjb3JyZXNwb25kaW5nIHRpdGxlY2FzZXMKKworMUZCMjsgMUZCMjsgMUZCQSAwMzQ1OyAxRkJBIDAzOTk7ICMgR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggVkFSSUEgQU5EIFlQT0dFR1JBTU1FTkkKKzFGQjQ7IDFGQjQ7IDAzODYgMDM0NTsgMDM4NiAwMzk5OyAjIEdSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIE9YSUEgQU5EIFlQT0dFR1JBTU1FTkkKKzFGQzI7IDFGQzI7IDFGQ0EgMDM0NTsgMUZDQSAwMzk5OyAjIEdSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBWQVJJQSBBTkQgWVBPR0VHUkFNTUVOSQorMUZDNDsgMUZDNDsgMDM4OSAwMzQ1OyAwMzg5IDAzOTk7ICMgR1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIE9YSUEgQU5EIFlQT0dFR1JBTU1FTkkKKzFGRjI7IDFGRjI7IDFGRkEgMDM0NTsgMUZGQSAwMzk5OyAjIEdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFZBUklBIEFORCBZUE9HRUdSQU1NRU5JCisxRkY0OyAxRkY0OyAwMzhGIDAzNDU7IDAzOEYgMDM5OTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBPWElBIEFORCBZUE9HRUdSQU1NRU5JCisKKzFGQjc7IDFGQjc7IDAzOTEgMDM0MiAwMzQ1OyAwMzkxIDAzNDIgMDM5OTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBQRVJJU1BPTUVOSSBBTkQgWVBPR0VHUkFNTUVOSQorMUZDNzsgMUZDNzsgMDM5NyAwMzQyIDAzNDU7IDAzOTcgMDM0MiAwMzk5OyAjIEdSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBQRVJJU1BPTUVOSSBBTkQgWVBPR0VHUkFNTUVOSQorMUZGNzsgMUZGNzsgMDNBOSAwMzQyIDAzNDU7IDAzQTkgMDM0MiAwMzk5OyAjIEdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFBFUklTUE9NRU5JIEFORCBZUE9HRUdSQU1NRU5JCisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgQ29uZGl0aW9uYWwgbWFwcGluZ3MKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBTcGVjaWFsIGNhc2UgZm9yIGZpbmFsIGZvcm0gb2Ygc2lnbWEKKworMDNBMzsgMDNDMjsgMDNBMzsgMDNBMzsgRmluYWxfU2lnbWE7ICMgR1JFRUsgQ0FQSVRBTCBMRVRURVIgU0lHTUEKKworIyBOb3RlOiB0aGUgZm9sbG93aW5nIGNhc2VzIGZvciBub24tZmluYWwgYXJlIGFscmVhZHkgaW4gdGhlIFVuaWNvZGVEYXRhIGZpbGUuCisKKyMgMDNBMzsgMDNDMzsgMDNBMzsgMDNBMzsgIyBHUkVFSyBDQVBJVEFMIExFVFRFUiBTSUdNQQorIyAwM0MzOyAwM0MzOyAwM0EzOyAwM0EzOyAjIEdSRUVLIFNNQUxMIExFVFRFUiBTSUdNQQorIyAwM0MyOyAwM0MyOyAwM0EzOyAwM0EzOyAjIEdSRUVLIFNNQUxMIExFVFRFUiBGSU5BTCBTSUdNQQorCisjIE5vdGU6IHRoZSBmb2xsb3dpbmcgY2FzZXMgYXJlIG5vdCBpbmNsdWRlZCwgc2luY2UgdGhleSB3b3VsZCBjYXNlLWZvbGQgaW4gbG93ZXJjYXNpbmcKKworIyAwM0MzOyAwM0MyOyAwM0EzOyAwM0EzOyBGaW5hbF9TaWdtYTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgU0lHTUEKKyMgMDNDMjsgMDNDMzsgMDNBMzsgMDNBMzsgTm90X0ZpbmFsX1NpZ21hOyAjIEdSRUVLIFNNQUxMIExFVFRFUiBGSU5BTCBTSUdNQQorCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIExvY2FsZS1zZW5zaXRpdmUgbWFwcGluZ3MKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBMaXRodWFuaWFuCisKKyMgTGl0aHVhbmlhbiByZXRhaW5zIHRoZSBkb3QgaW4gYSBsb3dlcmNhc2UgaSB3aGVuIGZvbGxvd2VkIGJ5IGFjY2VudHMuCisKKyMgUmVtb3ZlIERPVCBBQk9WRSBhZnRlciAiaSIgd2l0aCB1cHBlciBvciB0aXRsZWNhc2UKKworMDMwNzsgMDMwNzsgOyA7IGx0IEFmdGVyX1NvZnRfRG90dGVkOyAjIENPTUJJTklORyBET1QgQUJPVkUKKworIyBJbnRyb2R1Y2UgYW4gZXhwbGljaXQgZG90IGFib3ZlIHdoZW4gbG93ZXJjYXNpbmcgY2FwaXRhbCBJJ3MgYW5kIEoncworIyB3aGVuZXZlciB0aGVyZSBhcmUgbW9yZSBhY2NlbnRzIGFib3ZlLgorIyAob2YgdGhlIGFjY2VudHMgdXNlZCBpbiBMaXRodWFuaWFuOiBncmF2ZSwgYWN1dGUsIHRpbGRlIGFib3ZlLCBhbmQgb2dvbmVrKQorCiswMDQ5OyAwMDY5IDAzMDc7IDAwNDk7IDAwNDk7IGx0IE1vcmVfQWJvdmU7ICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQorMDA0QTsgMDA2QSAwMzA3OyAwMDRBOyAwMDRBOyBsdCBNb3JlX0Fib3ZlOyAjIExBVElOIENBUElUQUwgTEVUVEVSIEoKKzAxMkU7IDAxMkYgMDMwNzsgMDEyRTsgMDEyRTsgbHQgTW9yZV9BYm92ZTsgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggT0dPTkVLCiswMENDOyAwMDY5IDAzMDcgMDMwMDsgMDBDQzsgMDBDQzsgbHQ7ICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEdSQVZFCiswMENEOyAwMDY5IDAzMDcgMDMwMTsgMDBDRDsgMDBDRDsgbHQ7ICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEFDVVRFCiswMTI4OyAwMDY5IDAzMDcgMDMwMzsgMDEyODsgMDEyODsgbHQ7ICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIFRJTERFCisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBUdXJraXNoIGFuZCBBemVyaQorCisjIEkgYW5kIGktZG90bGVzczsgSS1kb3QgYW5kIGkgYXJlIGNhc2UgcGFpcnMgaW4gVHVya2lzaCBhbmQgQXplcmkKKyMgVGhlIGZvbGxvd2luZyBydWxlcyBoYW5kbGUgdGhvc2UgY2FzZXMuCisKKzAxMzA7IDAwNjk7IDAxMzA7IDAxMzA7IHRyICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERPVCBBQk9WRQorMDEzMDsgMDA2OTsgMDEzMDsgMDEzMDsgYXogIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggRE9UIEFCT1ZFCisKKyMgV2hlbiBsb3dlcmNhc2luZywgcmVtb3ZlIGRvdF9hYm92ZSBpbiB0aGUgc2VxdWVuY2UgSSArIGRvdF9hYm92ZSwgd2hpY2ggd2lsbCB0dXJuIGludG8gaS4KKyMgVGhpcyBtYXRjaGVzIHRoZSBiZWhhdmlvciBvZiB0aGUgY2Fub25pY2FsbHkgZXF1aXZhbGVudCBJLWRvdF9hYm92ZQorCiswMzA3OyA7IDAzMDc7IDAzMDc7IHRyIEFmdGVyX1NvZnRfRG90dGVkOyAjIENPTUJJTklORyBET1QgQUJPVkUKKzAzMDc7IDsgMDMwNzsgMDMwNzsgYXogQWZ0ZXJfU29mdF9Eb3R0ZWQ7ICMgQ09NQklOSU5HIERPVCBBQk9WRQorCisjIFdoZW4gbG93ZXJjYXNpbmcsIHVubGVzcyBhbiBJIGlzIGJlZm9yZSBhIGRvdF9hYm92ZSwgaXQgdHVybnMgaW50byBhIGRvdGxlc3MgaS4KKworMDA0OTsgMDEzMTsgMDA0OTsgMDA0OTsgdHIgTm90X0JlZm9yZV9Eb3Q7ICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQorMDA0OTsgMDEzMTsgMDA0OTsgMDA0OTsgYXogTm90X0JlZm9yZV9Eb3Q7ICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQorCisjIFdoZW4gdXBwZXJjYXNpbmcsIGkgdHVybnMgaW50byBhIGRvdHRlZCBjYXBpdGFsIEkKKworMDA2OTsgMDA2OTsgMDEzMDsgMDEzMDsgdHI7ICMgTEFUSU4gU01BTEwgTEVUVEVSIEkKKzAwNjk7IDAwNjk7IDAxMzA7IDAxMzA7IGF6OyAjIExBVElOIFNNQUxMIExFVFRFUiBJCisKKyMgTm90ZTogdGhlIGZvbGxvd2luZyBjYXNlIGlzIGFscmVhZHkgaW4gdGhlIFVuaWNvZGVEYXRhIGZpbGUuCisKKyMgMDEzMTsgMDEzMTsgMDA0OTsgMDA0OTsgdHI7ICMgTEFUSU4gU01BTEwgTEVUVEVSIERPVExFU1MgSQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi9kYXRhL3VuaWNvZGUvVW5pY29kZURhdGEudHh0IGIvc3JjL2NvbS9pYm0vaWN1L2Rldi9kYXRhL3VuaWNvZGUvVW5pY29kZURhdGEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjEyNWE2OTIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L2RhdGEvdW5pY29kZS9Vbmljb2RlRGF0YS50eHQKQEAgLTAsMCArMSwxMzg3NCBAQAorMDAwMDs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtOVUxMOzs7OworMDAwMTs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtTVEFSVCBPRiBIRUFESU5HOzs7OworMDAwMjs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtTVEFSVCBPRiBURVhUOzs7OworMDAwMzs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtFTkQgT0YgVEVYVDs7OzsKKzAwMDQ7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047RU5EIE9GIFRSQU5TTUlTU0lPTjs7OzsKKzAwMDU7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047RU5RVUlSWTs7OzsKKzAwMDY7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047QUNLTk9XTEVER0U7Ozs7CiswMDA3Ozxjb250cm9sPjtDYzswO0JOOzs7OztOO0JFTEw7Ozs7CiswMDA4Ozxjb250cm9sPjtDYzswO0JOOzs7OztOO0JBQ0tTUEFDRTs7OzsKKzAwMDk7PGNvbnRyb2w+O0NjOzA7Uzs7Ozs7TjtDSEFSQUNURVIgVEFCVUxBVElPTjs7OzsKKzAwMEE7PGNvbnRyb2w+O0NjOzA7Qjs7Ozs7TjtMSU5FIEZFRUQgKExGKTs7OzsKKzAwMEI7PGNvbnRyb2w+O0NjOzA7Uzs7Ozs7TjtMSU5FIFRBQlVMQVRJT047Ozs7CiswMDBDOzxjb250cm9sPjtDYzswO1dTOzs7OztOO0ZPUk0gRkVFRCAoRkYpOzs7OworMDAwRDs8Y29udHJvbD47Q2M7MDtCOzs7OztOO0NBUlJJQUdFIFJFVFVSTiAoQ1IpOzs7OworMDAwRTs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtTSElGVCBPVVQ7Ozs7CiswMDBGOzxjb250cm9sPjtDYzswO0JOOzs7OztOO1NISUZUIElOOzs7OworMDAxMDs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtEQVRBIExJTksgRVNDQVBFOzs7OworMDAxMTs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtERVZJQ0UgQ09OVFJPTCBPTkU7Ozs7CiswMDEyOzxjb250cm9sPjtDYzswO0JOOzs7OztOO0RFVklDRSBDT05UUk9MIFRXTzs7OzsKKzAwMTM7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047REVWSUNFIENPTlRST0wgVEhSRUU7Ozs7CiswMDE0Ozxjb250cm9sPjtDYzswO0JOOzs7OztOO0RFVklDRSBDT05UUk9MIEZPVVI7Ozs7CiswMDE1Ozxjb250cm9sPjtDYzswO0JOOzs7OztOO05FR0FUSVZFIEFDS05PV0xFREdFOzs7OworMDAxNjs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtTWU5DSFJPTk9VUyBJRExFOzs7OworMDAxNzs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLOzs7OworMDAxODs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtDQU5DRUw7Ozs7CiswMDE5Ozxjb250cm9sPjtDYzswO0JOOzs7OztOO0VORCBPRiBNRURJVU07Ozs7CiswMDFBOzxjb250cm9sPjtDYzswO0JOOzs7OztOO1NVQlNUSVRVVEU7Ozs7CiswMDFCOzxjb250cm9sPjtDYzswO0JOOzs7OztOO0VTQ0FQRTs7OzsKKzAwMUM7PGNvbnRyb2w+O0NjOzA7Qjs7Ozs7TjtJTkZPUk1BVElPTiBTRVBBUkFUT1IgRk9VUjs7OzsKKzAwMUQ7PGNvbnRyb2w+O0NjOzA7Qjs7Ozs7TjtJTkZPUk1BVElPTiBTRVBBUkFUT1IgVEhSRUU7Ozs7CiswMDFFOzxjb250cm9sPjtDYzswO0I7Ozs7O047SU5GT1JNQVRJT04gU0VQQVJBVE9SIFRXTzs7OzsKKzAwMUY7PGNvbnRyb2w+O0NjOzA7Uzs7Ozs7TjtJTkZPUk1BVElPTiBTRVBBUkFUT1IgT05FOzs7OworMDAyMDtTUEFDRTtaczswO1dTOzs7OztOOzs7OzsKKzAwMjE7RVhDTEFNQVRJT04gTUFSSztQbzswO09OOzs7OztOOzs7OzsKKzAwMjI7UVVPVEFUSU9OIE1BUks7UG87MDtPTjs7Ozs7Tjs7Ozs7CiswMDIzO05VTUJFUiBTSUdOO1BvOzA7RVQ7Ozs7O047Ozs7OworMDAyNDtET0xMQVIgU0lHTjtTYzswO0VUOzs7OztOOzs7OzsKKzAwMjU7UEVSQ0VOVCBTSUdOO1BvOzA7RVQ7Ozs7O047Ozs7OworMDAyNjtBTVBFUlNBTkQ7UG87MDtPTjs7Ozs7Tjs7Ozs7CiswMDI3O0FQT1NUUk9QSEU7UG87MDtPTjs7Ozs7TjtBUE9TVFJPUEhFLVFVT1RFOzs7OworMDAyODtMRUZUIFBBUkVOVEhFU0lTO1BzOzA7T047Ozs7O1k7T1BFTklORyBQQVJFTlRIRVNJUzs7OzsKKzAwMjk7UklHSFQgUEFSRU5USEVTSVM7UGU7MDtPTjs7Ozs7WTtDTE9TSU5HIFBBUkVOVEhFU0lTOzs7OworMDAyQTtBU1RFUklTSztQbzswO09OOzs7OztOOzs7OzsKKzAwMkI7UExVUyBTSUdOO1NtOzA7RVQ7Ozs7O047Ozs7OworMDAyQztDT01NQTtQbzswO0NTOzs7OztOOzs7OzsKKzAwMkQ7SFlQSEVOLU1JTlVTO1BkOzA7RVQ7Ozs7O047Ozs7OworMDAyRTtGVUxMIFNUT1A7UG87MDtDUzs7Ozs7TjtQRVJJT0Q7Ozs7CiswMDJGO1NPTElEVVM7UG87MDtFUzs7Ozs7TjtTTEFTSDs7OzsKKzAwMzA7RElHSVQgWkVSTztOZDswO0VOOzswOzA7MDtOOzs7OzsKKzAwMzE7RElHSVQgT05FO05kOzA7RU47OzE7MTsxO047Ozs7OworMDAzMjtESUdJVCBUV087TmQ7MDtFTjs7MjsyOzI7Tjs7Ozs7CiswMDMzO0RJR0lUIFRIUkVFO05kOzA7RU47OzM7MzszO047Ozs7OworMDAzNDtESUdJVCBGT1VSO05kOzA7RU47OzQ7NDs0O047Ozs7OworMDAzNTtESUdJVCBGSVZFO05kOzA7RU47OzU7NTs1O047Ozs7OworMDAzNjtESUdJVCBTSVg7TmQ7MDtFTjs7Njs2OzY7Tjs7Ozs7CiswMDM3O0RJR0lUIFNFVkVOO05kOzA7RU47Ozc7Nzs3O047Ozs7OworMDAzODtESUdJVCBFSUdIVDtOZDswO0VOOzs4Ozg7ODtOOzs7OzsKKzAwMzk7RElHSVQgTklORTtOZDswO0VOOzs5Ozk7OTtOOzs7OzsKKzAwM0E7Q09MT047UG87MDtDUzs7Ozs7Tjs7Ozs7CiswMDNCO1NFTUlDT0xPTjtQbzswO09OOzs7OztOOzs7OzsKKzAwM0M7TEVTUy1USEFOIFNJR047U207MDtPTjs7Ozs7WTs7Ozs7CiswMDNEO0VRVUFMUyBTSUdOO1NtOzA7T047Ozs7O047Ozs7OworMDAzRTtHUkVBVEVSLVRIQU4gU0lHTjtTbTswO09OOzs7OztZOzs7OzsKKzAwM0Y7UVVFU1RJT04gTUFSSztQbzswO09OOzs7OztOOzs7OzsKKzAwNDA7Q09NTUVSQ0lBTCBBVDtQbzswO09OOzs7OztOOzs7OzsKKzAwNDE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQTtMdTswO0w7Ozs7O047Ozs7MDA2MTsKKzAwNDI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQjtMdTswO0w7Ozs7O047Ozs7MDA2MjsKKzAwNDM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQztMdTswO0w7Ozs7O047Ozs7MDA2MzsKKzAwNDQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRDtMdTswO0w7Ozs7O047Ozs7MDA2NDsKKzAwNDU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRTtMdTswO0w7Ozs7O047Ozs7MDA2NTsKKzAwNDY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRjtMdTswO0w7Ozs7O047Ozs7MDA2NjsKKzAwNDc7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRztMdTswO0w7Ozs7O047Ozs7MDA2NzsKKzAwNDg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSDtMdTswO0w7Ozs7O047Ozs7MDA2ODsKKzAwNDk7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSTtMdTswO0w7Ozs7O047Ozs7MDA2OTsKKzAwNEE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSjtMdTswO0w7Ozs7O047Ozs7MDA2QTsKKzAwNEI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSztMdTswO0w7Ozs7O047Ozs7MDA2QjsKKzAwNEM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTDtMdTswO0w7Ozs7O047Ozs7MDA2QzsKKzAwNEQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTTtMdTswO0w7Ozs7O047Ozs7MDA2RDsKKzAwNEU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTjtMdTswO0w7Ozs7O047Ozs7MDA2RTsKKzAwNEY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTztMdTswO0w7Ozs7O047Ozs7MDA2RjsKKzAwNTA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUDtMdTswO0w7Ozs7O047Ozs7MDA3MDsKKzAwNTE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUTtMdTswO0w7Ozs7O047Ozs7MDA3MTsKKzAwNTI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUjtMdTswO0w7Ozs7O047Ozs7MDA3MjsKKzAwNTM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUztMdTswO0w7Ozs7O047Ozs7MDA3MzsKKzAwNTQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVDtMdTswO0w7Ozs7O047Ozs7MDA3NDsKKzAwNTU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVTtMdTswO0w7Ozs7O047Ozs7MDA3NTsKKzAwNTY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVjtMdTswO0w7Ozs7O047Ozs7MDA3NjsKKzAwNTc7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVztMdTswO0w7Ozs7O047Ozs7MDA3NzsKKzAwNTg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWDtMdTswO0w7Ozs7O047Ozs7MDA3ODsKKzAwNTk7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWTtMdTswO0w7Ozs7O047Ozs7MDA3OTsKKzAwNUE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWjtMdTswO0w7Ozs7O047Ozs7MDA3QTsKKzAwNUI7TEVGVCBTUVVBUkUgQlJBQ0tFVDtQczswO09OOzs7OztZO09QRU5JTkcgU1FVQVJFIEJSQUNLRVQ7Ozs7CiswMDVDO1JFVkVSU0UgU09MSURVUztQbzswO09OOzs7OztOO0JBQ0tTTEFTSDs7OzsKKzAwNUQ7UklHSFQgU1FVQVJFIEJSQUNLRVQ7UGU7MDtPTjs7Ozs7WTtDTE9TSU5HIFNRVUFSRSBCUkFDS0VUOzs7OworMDA1RTtDSVJDVU1GTEVYIEFDQ0VOVDtTazswO09OOzs7OztOO1NQQUNJTkcgQ0lSQ1VNRkxFWDs7OzsKKzAwNUY7TE9XIExJTkU7UGM7MDtPTjs7Ozs7TjtTUEFDSU5HIFVOREVSU0NPUkU7Ozs7CiswMDYwO0dSQVZFIEFDQ0VOVDtTazswO09OOzs7OztOO1NQQUNJTkcgR1JBVkU7Ozs7CiswMDYxO0xBVElOIFNNQUxMIExFVFRFUiBBO0xsOzA7TDs7Ozs7Tjs7OzAwNDE7OzAwNDEKKzAwNjI7TEFUSU4gU01BTEwgTEVUVEVSIEI7TGw7MDtMOzs7OztOOzs7MDA0Mjs7MDA0MgorMDA2MztMQVRJTiBTTUFMTCBMRVRURVIgQztMbDswO0w7Ozs7O047OzswMDQzOzswMDQzCiswMDY0O0xBVElOIFNNQUxMIExFVFRFUiBEO0xsOzA7TDs7Ozs7Tjs7OzAwNDQ7OzAwNDQKKzAwNjU7TEFUSU4gU01BTEwgTEVUVEVSIEU7TGw7MDtMOzs7OztOOzs7MDA0NTs7MDA0NQorMDA2NjtMQVRJTiBTTUFMTCBMRVRURVIgRjtMbDswO0w7Ozs7O047OzswMDQ2OzswMDQ2CiswMDY3O0xBVElOIFNNQUxMIExFVFRFUiBHO0xsOzA7TDs7Ozs7Tjs7OzAwNDc7OzAwNDcKKzAwNjg7TEFUSU4gU01BTEwgTEVUVEVSIEg7TGw7MDtMOzs7OztOOzs7MDA0ODs7MDA0OAorMDA2OTtMQVRJTiBTTUFMTCBMRVRURVIgSTtMbDswO0w7Ozs7O047OzswMDQ5OzswMDQ5CiswMDZBO0xBVElOIFNNQUxMIExFVFRFUiBKO0xsOzA7TDs7Ozs7Tjs7OzAwNEE7OzAwNEEKKzAwNkI7TEFUSU4gU01BTEwgTEVUVEVSIEs7TGw7MDtMOzs7OztOOzs7MDA0Qjs7MDA0QgorMDA2QztMQVRJTiBTTUFMTCBMRVRURVIgTDtMbDswO0w7Ozs7O047OzswMDRDOzswMDRDCiswMDZEO0xBVElOIFNNQUxMIExFVFRFUiBNO0xsOzA7TDs7Ozs7Tjs7OzAwNEQ7OzAwNEQKKzAwNkU7TEFUSU4gU01BTEwgTEVUVEVSIE47TGw7MDtMOzs7OztOOzs7MDA0RTs7MDA0RQorMDA2RjtMQVRJTiBTTUFMTCBMRVRURVIgTztMbDswO0w7Ozs7O047OzswMDRGOzswMDRGCiswMDcwO0xBVElOIFNNQUxMIExFVFRFUiBQO0xsOzA7TDs7Ozs7Tjs7OzAwNTA7OzAwNTAKKzAwNzE7TEFUSU4gU01BTEwgTEVUVEVSIFE7TGw7MDtMOzs7OztOOzs7MDA1MTs7MDA1MQorMDA3MjtMQVRJTiBTTUFMTCBMRVRURVIgUjtMbDswO0w7Ozs7O047OzswMDUyOzswMDUyCiswMDczO0xBVElOIFNNQUxMIExFVFRFUiBTO0xsOzA7TDs7Ozs7Tjs7OzAwNTM7OzAwNTMKKzAwNzQ7TEFUSU4gU01BTEwgTEVUVEVSIFQ7TGw7MDtMOzs7OztOOzs7MDA1NDs7MDA1NAorMDA3NTtMQVRJTiBTTUFMTCBMRVRURVIgVTtMbDswO0w7Ozs7O047OzswMDU1OzswMDU1CiswMDc2O0xBVElOIFNNQUxMIExFVFRFUiBWO0xsOzA7TDs7Ozs7Tjs7OzAwNTY7OzAwNTYKKzAwNzc7TEFUSU4gU01BTEwgTEVUVEVSIFc7TGw7MDtMOzs7OztOOzs7MDA1Nzs7MDA1NworMDA3ODtMQVRJTiBTTUFMTCBMRVRURVIgWDtMbDswO0w7Ozs7O047OzswMDU4OzswMDU4CiswMDc5O0xBVElOIFNNQUxMIExFVFRFUiBZO0xsOzA7TDs7Ozs7Tjs7OzAwNTk7OzAwNTkKKzAwN0E7TEFUSU4gU01BTEwgTEVUVEVSIFo7TGw7MDtMOzs7OztOOzs7MDA1QTs7MDA1QQorMDA3QjtMRUZUIENVUkxZIEJSQUNLRVQ7UHM7MDtPTjs7Ozs7WTtPUEVOSU5HIENVUkxZIEJSQUNLRVQ7Ozs7CiswMDdDO1ZFUlRJQ0FMIExJTkU7U207MDtPTjs7Ozs7TjtWRVJUSUNBTCBCQVI7Ozs7CiswMDdEO1JJR0hUIENVUkxZIEJSQUNLRVQ7UGU7MDtPTjs7Ozs7WTtDTE9TSU5HIENVUkxZIEJSQUNLRVQ7Ozs7CiswMDdFO1RJTERFO1NtOzA7T047Ozs7O047Ozs7OworMDA3Rjs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtERUxFVEU7Ozs7CiswMDgwOzxjb250cm9sPjtDYzswO0JOOzs7OztOOzs7OzsKKzAwODE7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047Ozs7OworMDA4Mjs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtCUkVBSyBQRVJNSVRURUQgSEVSRTs7OzsKKzAwODM7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047Tk8gQlJFQUsgSEVSRTs7OzsKKzAwODQ7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047Ozs7OworMDA4NTs8Y29udHJvbD47Q2M7MDtCOzs7OztOO05FWFQgTElORSAoTkVMKTs7OzsKKzAwODY7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047U1RBUlQgT0YgU0VMRUNURUQgQVJFQTs7OzsKKzAwODc7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047RU5EIE9GIFNFTEVDVEVEIEFSRUE7Ozs7CiswMDg4Ozxjb250cm9sPjtDYzswO0JOOzs7OztOO0NIQVJBQ1RFUiBUQUJVTEFUSU9OIFNFVDs7OzsKKzAwODk7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047Q0hBUkFDVEVSIFRBQlVMQVRJT04gV0lUSCBKVVNUSUZJQ0FUSU9OOzs7OworMDA4QTs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtMSU5FIFRBQlVMQVRJT04gU0VUOzs7OworMDA4Qjs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtQQVJUSUFMIExJTkUgRk9SV0FSRDs7OzsKKzAwOEM7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047UEFSVElBTCBMSU5FIEJBQ0tXQVJEOzs7OworMDA4RDs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtSRVZFUlNFIExJTkUgRkVFRDs7OzsKKzAwOEU7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047U0lOR0xFIFNISUZUIFRXTzs7OzsKKzAwOEY7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047U0lOR0xFIFNISUZUIFRIUkVFOzs7OworMDA5MDs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtERVZJQ0UgQ09OVFJPTCBTVFJJTkc7Ozs7CiswMDkxOzxjb250cm9sPjtDYzswO0JOOzs7OztOO1BSSVZBVEUgVVNFIE9ORTs7OzsKKzAwOTI7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047UFJJVkFURSBVU0UgVFdPOzs7OworMDA5Mzs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtTRVQgVFJBTlNNSVQgU1RBVEU7Ozs7CiswMDk0Ozxjb250cm9sPjtDYzswO0JOOzs7OztOO0NBTkNFTCBDSEFSQUNURVI7Ozs7CiswMDk1Ozxjb250cm9sPjtDYzswO0JOOzs7OztOO01FU1NBR0UgV0FJVElORzs7OzsKKzAwOTY7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047U1RBUlQgT0YgR1VBUkRFRCBBUkVBOzs7OworMDA5Nzs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtFTkQgT0YgR1VBUkRFRCBBUkVBOzs7OworMDA5ODs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtTVEFSVCBPRiBTVFJJTkc7Ozs7CiswMDk5Ozxjb250cm9sPjtDYzswO0JOOzs7OztOOzs7OzsKKzAwOUE7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047U0lOR0xFIENIQVJBQ1RFUiBJTlRST0RVQ0VSOzs7OworMDA5Qjs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtDT05UUk9MIFNFUVVFTkNFIElOVFJPRFVDRVI7Ozs7CiswMDlDOzxjb250cm9sPjtDYzswO0JOOzs7OztOO1NUUklORyBURVJNSU5BVE9SOzs7OworMDA5RDs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtPUEVSQVRJTkcgU1lTVEVNIENPTU1BTkQ7Ozs7CiswMDlFOzxjb250cm9sPjtDYzswO0JOOzs7OztOO1BSSVZBQ1kgTUVTU0FHRTs7OzsKKzAwOUY7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047QVBQTElDQVRJT04gUFJPR1JBTSBDT01NQU5EOzs7OworMDBBMDtOTy1CUkVBSyBTUEFDRTtaczswO0NTOzxub0JyZWFrPiAwMDIwOzs7O047Tk9OLUJSRUFLSU5HIFNQQUNFOzs7OworMDBBMTtJTlZFUlRFRCBFWENMQU1BVElPTiBNQVJLO1BvOzA7T047Ozs7O047Ozs7OworMDBBMjtDRU5UIFNJR047U2M7MDtFVDs7Ozs7Tjs7Ozs7CiswMEEzO1BPVU5EIFNJR047U2M7MDtFVDs7Ozs7Tjs7Ozs7CiswMEE0O0NVUlJFTkNZIFNJR047U2M7MDtFVDs7Ozs7Tjs7Ozs7CiswMEE1O1lFTiBTSUdOO1NjOzA7RVQ7Ozs7O047Ozs7OworMDBBNjtCUk9LRU4gQkFSO1NvOzA7T047Ozs7O047QlJPS0VOIFZFUlRJQ0FMIEJBUjs7OzsKKzAwQTc7U0VDVElPTiBTSUdOO1NvOzA7T047Ozs7O047Ozs7OworMDBBODtESUFFUkVTSVM7U2s7MDtPTjs8Y29tcGF0PiAwMDIwIDAzMDg7Ozs7TjtTUEFDSU5HIERJQUVSRVNJUzs7OzsKKzAwQTk7Q09QWVJJR0hUIFNJR047U287MDtPTjs7Ozs7Tjs7Ozs7CiswMEFBO0ZFTUlOSU5FIE9SRElOQUwgSU5ESUNBVE9SO0xsOzA7TDs8c3VwZXI+IDAwNjE7Ozs7Tjs7Ozs7CiswMEFCO0xFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLO1BpOzA7T047Ozs7O1k7TEVGVCBQT0lOVElORyBHVUlMTEVNRVQ7Kjs7OworMDBBQztOT1QgU0lHTjtTbTswO09OOzs7OztOOzs7OzsKKzAwQUQ7U09GVCBIWVBIRU47UGQ7MDtPTjs7Ozs7Tjs7Ozs7CiswMEFFO1JFR0lTVEVSRUQgU0lHTjtTbzswO09OOzs7OztOO1JFR0lTVEVSRUQgVFJBREUgTUFSSyBTSUdOOzs7OworMDBBRjtNQUNST047U2s7MDtPTjs8Y29tcGF0PiAwMDIwIDAzMDQ7Ozs7TjtTUEFDSU5HIE1BQ1JPTjs7OzsKKzAwQjA7REVHUkVFIFNJR047U287MDtFVDs7Ozs7Tjs7Ozs7CiswMEIxO1BMVVMtTUlOVVMgU0lHTjtTbTswO0VUOzs7OztOO1BMVVMtT1ItTUlOVVMgU0lHTjs7OzsKKzAwQjI7U1VQRVJTQ1JJUFQgVFdPO05vOzA7RU47PHN1cGVyPiAwMDMyOzI7MjsyO047U1VQRVJTQ1JJUFQgRElHSVQgVFdPOzs7OworMDBCMztTVVBFUlNDUklQVCBUSFJFRTtObzswO0VOOzxzdXBlcj4gMDAzMzszOzM7MztOO1NVUEVSU0NSSVBUIERJR0lUIFRIUkVFOzs7OworMDBCNDtBQ1VURSBBQ0NFTlQ7U2s7MDtPTjs8Y29tcGF0PiAwMDIwIDAzMDE7Ozs7TjtTUEFDSU5HIEFDVVRFOzs7OworMDBCNTtNSUNSTyBTSUdOO0xsOzA7TDs8Y29tcGF0PiAwM0JDOzs7O047OzswMzlDOzswMzlDCiswMEI2O1BJTENST1cgU0lHTjtTbzswO09OOzs7OztOO1BBUkFHUkFQSCBTSUdOOzs7OworMDBCNztNSURETEUgRE9UO1BvOzA7T047Ozs7O047Ozs7OworMDBCODtDRURJTExBO1NrOzA7T047PGNvbXBhdD4gMDAyMCAwMzI3Ozs7O047U1BBQ0lORyBDRURJTExBOzs7OworMDBCOTtTVVBFUlNDUklQVCBPTkU7Tm87MDtFTjs8c3VwZXI+IDAwMzE7MTsxOzE7TjtTVVBFUlNDUklQVCBESUdJVCBPTkU7Ozs7CiswMEJBO01BU0NVTElORSBPUkRJTkFMIElORElDQVRPUjtMbDswO0w7PHN1cGVyPiAwMDZGOzs7O047Ozs7OworMDBCQjtSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUks7UGY7MDtPTjs7Ozs7WTtSSUdIVCBQT0lOVElORyBHVUlMTEVNRVQ7Kjs7OworMDBCQztWVUxHQVIgRlJBQ1RJT04gT05FIFFVQVJURVI7Tm87MDtPTjs8ZnJhY3Rpb24+IDAwMzEgMjA0NCAwMDM0Ozs7MS80O047RlJBQ1RJT04gT05FIFFVQVJURVI7Ozs7CiswMEJEO1ZVTEdBUiBGUkFDVElPTiBPTkUgSEFMRjtObzswO09OOzxmcmFjdGlvbj4gMDAzMSAyMDQ0IDAwMzI7OzsxLzI7TjtGUkFDVElPTiBPTkUgSEFMRjs7OzsKKzAwQkU7VlVMR0FSIEZSQUNUSU9OIFRIUkVFIFFVQVJURVJTO05vOzA7T047PGZyYWN0aW9uPiAwMDMzIDIwNDQgMDAzNDs7OzMvNDtOO0ZSQUNUSU9OIFRIUkVFIFFVQVJURVJTOzs7OworMDBCRjtJTlZFUlRFRCBRVUVTVElPTiBNQVJLO1BvOzA7T047Ozs7O047Ozs7OworMDBDMDtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggR1JBVkU7THU7MDtMOzAwNDEgMDMwMDs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEEgR1JBVkU7OzswMEUwOworMDBDMTtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQUNVVEU7THU7MDtMOzAwNDEgMDMwMTs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEEgQUNVVEU7OzswMEUxOworMDBDMjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWDtMdTswO0w7MDA0MSAwMzAyOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBDSVJDVU1GTEVYOzs7MDBFMjsKKzAwQzM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFRJTERFO0x1OzA7TDswMDQxIDAzMDM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFRJTERFOzs7MDBFMzsKKzAwQzQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUztMdTswO0w7MDA0MSAwMzA4Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBESUFFUkVTSVM7OzswMEU0OworMDBDNTtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRTtMdTswO0w7MDA0MSAwMzBBOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBSSU5HOzs7MDBFNTsKKzAwQzY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQUU7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEEgRTthc2ggKjs7MDBFNjsKKzAwQzc7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENFRElMTEE7THU7MDtMOzAwNDMgMDMyNzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEMgQ0VESUxMQTs7OzAwRTc7CiswMEM4O0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBHUkFWRTtMdTswO0w7MDA0NSAwMzAwOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBHUkFWRTs7OzAwRTg7CiswMEM5O0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBBQ1VURTtMdTswO0w7MDA0NSAwMzAxOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBBQ1VURTs7OzAwRTk7CiswMENBO0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYO0x1OzA7TDswMDQ1IDAzMDI7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIENJUkNVTUZMRVg7OzswMEVBOworMDBDQjtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTO0x1OzA7TDswMDQ1IDAzMDg7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIERJQUVSRVNJUzs7OzAwRUI7CiswMENDO0xBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBHUkFWRTtMdTswO0w7MDA0OSAwMzAwOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBHUkFWRTs7OzAwRUM7CiswMENEO0xBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBBQ1VURTtMdTswO0w7MDA0OSAwMzAxOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBBQ1VURTs7OzAwRUQ7CiswMENFO0xBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYO0x1OzA7TDswMDQ5IDAzMDI7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIENJUkNVTUZMRVg7OzswMEVFOworMDBDRjtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTO0x1OzA7TDswMDQ5IDAzMDg7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIERJQUVSRVNJUzs7OzAwRUY7CiswMEQwO0xBVElOIENBUElUQUwgTEVUVEVSIEVUSDtMdTswO0w7Ozs7O047O0ljZWxhbmRpYzs7MDBGMDsKKzAwRDE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIFRJTERFO0x1OzA7TDswMDRFIDAzMDM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFRJTERFOzs7MDBGMTsKKzAwRDI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEdSQVZFO0x1OzA7TDswMDRGIDAzMDA7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIEdSQVZFOzs7MDBGMjsKKzAwRDM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEFDVVRFO0x1OzA7TDswMDRGIDAzMDE7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIEFDVVRFOzs7MDBGMzsKKzAwRDQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVg7THU7MDtMOzAwNEYgMDMwMjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIE8gQ0lSQ1VNRkxFWDs7OzAwRjQ7CiswMEQ1O0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBUSUxERTtMdTswO0w7MDA0RiAwMzAzOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBUSUxERTs7OzAwRjU7CiswMEQ2O0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVM7THU7MDtMOzAwNEYgMDMwODs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIE8gRElBRVJFU0lTOzs7MDBGNjsKKzAwRDc7TVVMVElQTElDQVRJT04gU0lHTjtTbTswO09OOzs7OztOOzs7OzsKKzAwRDg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFNUUk9LRTtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBTTEFTSDs7OzAwRjg7CiswMEQ5O0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBHUkFWRTtMdTswO0w7MDA1NSAwMzAwOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBHUkFWRTs7OzAwRjk7CiswMERBO0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBBQ1VURTtMdTswO0w7MDA1NSAwMzAxOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBBQ1VURTs7OzAwRkE7CiswMERCO0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYO0x1OzA7TDswMDU1IDAzMDI7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIENJUkNVTUZMRVg7OzswMEZCOworMDBEQztMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTO0x1OzA7TDswMDU1IDAzMDg7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIERJQUVSRVNJUzs7OzAwRkM7CiswMEREO0xBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBBQ1VURTtMdTswO0w7MDA1OSAwMzAxOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBBQ1VURTs7OzAwRkQ7CiswMERFO0xBVElOIENBUElUQUwgTEVUVEVSIFRIT1JOO0x1OzA7TDs7Ozs7Tjs7SWNlbGFuZGljOzswMEZFOworMDBERjtMQVRJTiBTTUFMTCBMRVRURVIgU0hBUlAgUztMbDswO0w7Ozs7O047O0dlcm1hbjs7OworMDBFMDtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEdSQVZFO0xsOzA7TDswMDYxIDAzMDA7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQSBHUkFWRTs7MDBDMDs7MDBDMAorMDBFMTtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEFDVVRFO0xsOzA7TDswMDYxIDAzMDE7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQSBBQ1VURTs7MDBDMTs7MDBDMQorMDBFMjtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVg7TGw7MDtMOzAwNjEgMDMwMjs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBBIENJUkNVTUZMRVg7OzAwQzI7OzAwQzIKKzAwRTM7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBUSUxERTtMbDswO0w7MDA2MSAwMzAzOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEEgVElMREU7OzAwQzM7OzAwQzMKKzAwRTQ7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVM7TGw7MDtMOzAwNjEgMDMwODs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBBIERJQUVSRVNJUzs7MDBDNDs7MDBDNAorMDBFNTtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkU7TGw7MDtMOzAwNjEgMDMwQTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBBIFJJTkc7OzAwQzU7OzAwQzUKKzAwRTY7TEFUSU4gU01BTEwgTEVUVEVSIEFFO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQSBFO2FzaCAqOzAwQzY7OzAwQzYKKzAwRTc7TEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDRURJTExBO0xsOzA7TDswMDYzIDAzMjc7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQyBDRURJTExBOzswMEM3OzswMEM3CiswMEU4O0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggR1JBVkU7TGw7MDtMOzAwNjUgMDMwMDs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBFIEdSQVZFOzswMEM4OzswMEM4CiswMEU5O0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQUNVVEU7TGw7MDtMOzAwNjUgMDMwMTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBFIEFDVVRFOzswMEM5OzswMEM5CiswMEVBO0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWDtMbDswO0w7MDA2NSAwMzAyOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEUgQ0lSQ1VNRkxFWDs7MDBDQTs7MDBDQQorMDBFQjtMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUztMbDswO0w7MDA2NSAwMzA4Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEUgRElBRVJFU0lTOzswMENCOzswMENCCiswMEVDO0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggR1JBVkU7TGw7MDtMOzAwNjkgMDMwMDs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBJIEdSQVZFOzswMENDOzswMENDCiswMEVEO0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEU7TGw7MDtMOzAwNjkgMDMwMTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBJIEFDVVRFOzswMENEOzswMENECiswMEVFO0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQ0lSQ1VNRkxFWDtMbDswO0w7MDA2OSAwMzAyOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEkgQ0lSQ1VNRkxFWDs7MDBDRTs7MDBDRQorMDBFRjtMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUztMbDswO0w7MDA2OSAwMzA4Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEkgRElBRVJFU0lTOzswMENGOzswMENGCiswMEYwO0xBVElOIFNNQUxMIExFVFRFUiBFVEg7TGw7MDtMOzs7OztOOztJY2VsYW5kaWM7MDBEMDs7MDBEMAorMDBGMTtMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIFRJTERFO0xsOzA7TDswMDZFIDAzMDM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTiBUSUxERTs7MDBEMTs7MDBEMQorMDBGMjtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEdSQVZFO0xsOzA7TDswMDZGIDAzMDA7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTyBHUkFWRTs7MDBEMjs7MDBEMgorMDBGMztMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFO0xsOzA7TDswMDZGIDAzMDE7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTyBBQ1VURTs7MDBEMzs7MDBEMworMDBGNDtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVg7TGw7MDtMOzAwNkYgMDMwMjs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBPIENJUkNVTUZMRVg7OzAwRDQ7OzAwRDQKKzAwRjU7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBUSUxERTtMbDswO0w7MDA2RiAwMzAzOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIE8gVElMREU7OzAwRDU7OzAwRDUKKzAwRjY7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVM7TGw7MDtMOzAwNkYgMDMwODs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBPIERJQUVSRVNJUzs7MDBENjs7MDBENgorMDBGNztESVZJU0lPTiBTSUdOO1NtOzA7T047Ozs7O047Ozs7OworMDBGODtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFNUUk9LRTtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIE8gU0xBU0g7OzAwRDg7OzAwRDgKKzAwRjk7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBHUkFWRTtMbDswO0w7MDA3NSAwMzAwOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFUgR1JBVkU7OzAwRDk7OzAwRDkKKzAwRkE7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURTtMbDswO0w7MDA3NSAwMzAxOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFUgQUNVVEU7OzAwREE7OzAwREEKKzAwRkI7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYO0xsOzA7TDswMDc1IDAzMDI7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVSBDSVJDVU1GTEVYOzswMERCOzswMERCCiswMEZDO0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTO0xsOzA7TDswMDc1IDAzMDg7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVSBESUFFUkVTSVM7OzAwREM7OzAwREMKKzAwRkQ7TEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBBQ1VURTtMbDswO0w7MDA3OSAwMzAxOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFkgQUNVVEU7OzAwREQ7OzAwREQKKzAwRkU7TEFUSU4gU01BTEwgTEVUVEVSIFRIT1JOO0xsOzA7TDs7Ozs7Tjs7SWNlbGFuZGljOzAwREU7OzAwREUKKzAwRkY7TEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVM7TGw7MDtMOzAwNzkgMDMwODs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBZIERJQUVSRVNJUzs7MDE3ODs7MDE3OAorMDEwMDtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggTUFDUk9OO0x1OzA7TDswMDQxIDAzMDQ7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIE1BQ1JPTjs7OzAxMDE7CiswMTAxO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggTUFDUk9OO0xsOzA7TDswMDYxIDAzMDQ7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQSBNQUNST047OzAxMDA7OzAxMDAKKzAxMDI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEJSRVZFO0x1OzA7TDswMDQxIDAzMDY7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIEJSRVZFOzs7MDEwMzsKKzAxMDM7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBCUkVWRTtMbDswO0w7MDA2MSAwMzA2Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEEgQlJFVkU7OzAxMDI7OzAxMDIKKzAxMDQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIE9HT05FSztMdTswO0w7MDA0MSAwMzI4Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBPR09ORUs7OzswMTA1OworMDEwNTtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIE9HT05FSztMbDswO0w7MDA2MSAwMzI4Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEEgT0dPTkVLOzswMTA0OzswMTA0CiswMTA2O0xBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBBQ1VURTtMdTswO0w7MDA0MyAwMzAxOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBBQ1VURTs7OzAxMDc7CiswMTA3O0xBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQUNVVEU7TGw7MDtMOzAwNjMgMDMwMTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBDIEFDVVRFOzswMTA2OzswMTA2CiswMTA4O0xBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDSVJDVU1GTEVYO0x1OzA7TDswMDQzIDAzMDI7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBDIENJUkNVTUZMRVg7OzswMTA5OworMDEwOTtMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENJUkNVTUZMRVg7TGw7MDtMOzAwNjMgMDMwMjs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBDIENJUkNVTUZMRVg7OzAxMDg7OzAxMDgKKzAxMEE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIERPVCBBQk9WRTtMdTswO0w7MDA0MyAwMzA3Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBET1Q7OzswMTBCOworMDEwQjtMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIERPVCBBQk9WRTtMbDswO0w7MDA2MyAwMzA3Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEMgRE9UOzswMTBBOzswMTBBCiswMTBDO0xBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDQVJPTjtMdTswO0w7MDA0MyAwMzBDOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBIQUNFSzs7OzAxMEQ7CiswMTBEO0xBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0FST047TGw7MDtMOzAwNjMgMDMwQzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBDIEhBQ0VLOzswMTBDOzswMTBDCiswMTBFO0xBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBDQVJPTjtMdTswO0w7MDA0NCAwMzBDOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBIQUNFSzs7OzAxMEY7CiswMTBGO0xBVElOIFNNQUxMIExFVFRFUiBEIFdJVEggQ0FST047TGw7MDtMOzAwNjQgMDMwQzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBEIEhBQ0VLOzswMTBFOzswMTBFCiswMTEwO0xBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBTVFJPS0U7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEQgQkFSOzs7MDExMTsKKzAxMTE7TEFUSU4gU01BTEwgTEVUVEVSIEQgV0lUSCBTVFJPS0U7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBEIEJBUjs7MDExMDs7MDExMAorMDExMjtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggTUFDUk9OO0x1OzA7TDswMDQ1IDAzMDQ7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIE1BQ1JPTjs7OzAxMTM7CiswMTEzO0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggTUFDUk9OO0xsOzA7TDswMDY1IDAzMDQ7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRSBNQUNST047OzAxMTI7OzAxMTIKKzAxMTQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEJSRVZFO0x1OzA7TDswMDQ1IDAzMDY7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIEJSRVZFOzs7MDExNTsKKzAxMTU7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBCUkVWRTtMbDswO0w7MDA2NSAwMzA2Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEUgQlJFVkU7OzAxMTQ7OzAxMTQKKzAxMTY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERPVCBBQk9WRTtMdTswO0w7MDA0NSAwMzA3Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBET1Q7OzswMTE3OworMDExNztMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIERPVCBBQk9WRTtMbDswO0w7MDA2NSAwMzA3Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEUgRE9UOzswMTE2OzswMTE2CiswMTE4O0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBPR09ORUs7THU7MDtMOzAwNDUgMDMyODs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEUgT0dPTkVLOzs7MDExOTsKKzAxMTk7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBPR09ORUs7TGw7MDtMOzAwNjUgMDMyODs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBFIE9HT05FSzs7MDExODs7MDExOAorMDExQTtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0FST047THU7MDtMOzAwNDUgMDMwQzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEUgSEFDRUs7OzswMTFCOworMDExQjtMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENBUk9OO0xsOzA7TDswMDY1IDAzMEM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRSBIQUNFSzs7MDExQTs7MDExQQorMDExQztMQVRJTiBDQVBJVEFMIExFVFRFUiBHIFdJVEggQ0lSQ1VNRkxFWDtMdTswO0w7MDA0NyAwMzAyOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBDSVJDVU1GTEVYOzs7MDExRDsKKzAxMUQ7TEFUSU4gU01BTEwgTEVUVEVSIEcgV0lUSCBDSVJDVU1GTEVYO0xsOzA7TDswMDY3IDAzMDI7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRyBDSVJDVU1GTEVYOzswMTFDOzswMTFDCiswMTFFO0xBVElOIENBUElUQUwgTEVUVEVSIEcgV0lUSCBCUkVWRTtMdTswO0w7MDA0NyAwMzA2Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBCUkVWRTs7OzAxMUY7CiswMTFGO0xBVElOIFNNQUxMIExFVFRFUiBHIFdJVEggQlJFVkU7TGw7MDtMOzAwNjcgMDMwNjs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBHIEJSRVZFOzswMTFFOzswMTFFCiswMTIwO0xBVElOIENBUElUQUwgTEVUVEVSIEcgV0lUSCBET1QgQUJPVkU7THU7MDtMOzAwNDcgMDMwNzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEcgRE9UOzs7MDEyMTsKKzAxMjE7TEFUSU4gU01BTEwgTEVUVEVSIEcgV0lUSCBET1QgQUJPVkU7TGw7MDtMOzAwNjcgMDMwNzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBHIERPVDs7MDEyMDs7MDEyMAorMDEyMjtMQVRJTiBDQVBJVEFMIExFVFRFUiBHIFdJVEggQ0VESUxMQTtMdTswO0w7MDA0NyAwMzI3Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBDRURJTExBOzs7MDEyMzsKKzAxMjM7TEFUSU4gU01BTEwgTEVUVEVSIEcgV0lUSCBDRURJTExBO0xsOzA7TDswMDY3IDAzMjc7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRyBDRURJTExBOzswMTIyOzswMTIyCiswMTI0O0xBVElOIENBUElUQUwgTEVUVEVSIEggV0lUSCBDSVJDVU1GTEVYO0x1OzA7TDswMDQ4IDAzMDI7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBIIENJUkNVTUZMRVg7OzswMTI1OworMDEyNTtMQVRJTiBTTUFMTCBMRVRURVIgSCBXSVRIIENJUkNVTUZMRVg7TGw7MDtMOzAwNjggMDMwMjs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBIIENJUkNVTUZMRVg7OzAxMjQ7OzAxMjQKKzAxMjY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSCBXSVRIIFNUUk9LRTtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgSCBCQVI7OzswMTI3OworMDEyNztMQVRJTiBTTUFMTCBMRVRURVIgSCBXSVRIIFNUUk9LRTtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEggQkFSOzswMTI2OzswMTI2CiswMTI4O0xBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBUSUxERTtMdTswO0w7MDA0OSAwMzAzOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBUSUxERTs7OzAxMjk7CiswMTI5O0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggVElMREU7TGw7MDtMOzAwNjkgMDMwMzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBJIFRJTERFOzswMTI4OzswMTI4CiswMTJBO0xBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBNQUNST047THU7MDtMOzAwNDkgMDMwNDs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEkgTUFDUk9OOzs7MDEyQjsKKzAxMkI7TEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBNQUNST047TGw7MDtMOzAwNjkgMDMwNDs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBJIE1BQ1JPTjs7MDEyQTs7MDEyQQorMDEyQztMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQlJFVkU7THU7MDtMOzAwNDkgMDMwNjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEkgQlJFVkU7OzswMTJEOworMDEyRDtMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEJSRVZFO0xsOzA7TDswMDY5IDAzMDY7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgSSBCUkVWRTs7MDEyQzs7MDEyQworMDEyRTtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggT0dPTkVLO0x1OzA7TDswMDQ5IDAzMjg7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIE9HT05FSzs7OzAxMkY7CiswMTJGO0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggT0dPTkVLO0xsOzA7TDswMDY5IDAzMjg7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgSSBPR09ORUs7OzAxMkU7OzAxMkUKKzAxMzA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERPVCBBQk9WRTtMdTswO0w7MDA0OSAwMzA3Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBET1Q7OzswMDY5OworMDEzMTtMQVRJTiBTTUFMTCBMRVRURVIgRE9UTEVTUyBJO0xsOzA7TDs7Ozs7Tjs7OzAwNDk7OzAwNDkKKzAxMzI7TEFUSU4gQ0FQSVRBTCBMSUdBVFVSRSBJSjtMdTswO0w7PGNvbXBhdD4gMDA0OSAwMDRBOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBKOzs7MDEzMzsKKzAxMzM7TEFUSU4gU01BTEwgTElHQVRVUkUgSUo7TGw7MDtMOzxjb21wYXQ+IDAwNjkgMDA2QTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBJIEo7OzAxMzI7OzAxMzIKKzAxMzQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSiBXSVRIIENJUkNVTUZMRVg7THU7MDtMOzAwNEEgMDMwMjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEogQ0lSQ1VNRkxFWDs7OzAxMzU7CiswMTM1O0xBVElOIFNNQUxMIExFVFRFUiBKIFdJVEggQ0lSQ1VNRkxFWDtMbDswO0w7MDA2QSAwMzAyOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEogQ0lSQ1VNRkxFWDs7MDEzNDs7MDEzNAorMDEzNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBLIFdJVEggQ0VESUxMQTtMdTswO0w7MDA0QiAwMzI3Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgSyBDRURJTExBOzs7MDEzNzsKKzAxMzc7TEFUSU4gU01BTEwgTEVUVEVSIEsgV0lUSCBDRURJTExBO0xsOzA7TDswMDZCIDAzMjc7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgSyBDRURJTExBOzswMTM2OzswMTM2CiswMTM4O0xBVElOIFNNQUxMIExFVFRFUiBLUkE7TGw7MDtMOzs7OztOOztHcmVlbmxhbmRpYzs7OworMDEzOTtMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggQUNVVEU7THU7MDtMOzAwNEMgMDMwMTs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEwgQUNVVEU7OzswMTNBOworMDEzQTtMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIEFDVVRFO0xsOzA7TDswMDZDIDAzMDE7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTCBBQ1VURTs7MDEzOTs7MDEzOQorMDEzQjtMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggQ0VESUxMQTtMdTswO0w7MDA0QyAwMzI3Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBDRURJTExBOzs7MDEzQzsKKzAxM0M7TEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBDRURJTExBO0xsOzA7TDswMDZDIDAzMjc7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTCBDRURJTExBOzswMTNCOzswMTNCCiswMTNEO0xBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBDQVJPTjtMdTswO0w7MDA0QyAwMzBDOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBIQUNFSzs7OzAxM0U7CiswMTNFO0xBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggQ0FST047TGw7MDtMOzAwNkMgMDMwQzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBMIEhBQ0VLOzswMTNEOzswMTNECiswMTNGO0xBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBNSURETEUgRE9UO0x1OzA7TDs8Y29tcGF0PiAwMDRDIDAwQjc7Ozs7Tjs7OzswMTQwOworMDE0MDtMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIE1JRERMRSBET1Q7TGw7MDtMOzxjb21wYXQ+IDAwNkMgMDBCNzs7OztOOzs7MDEzRjs7MDEzRgorMDE0MTtMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggU1RST0tFO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFNMQVNIOzs7MDE0MjsKKzAxNDI7TEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBTVFJPS0U7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBMIFNMQVNIOzswMTQxOzswMTQxCiswMTQzO0xBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBBQ1VURTtMdTswO0w7MDA0RSAwMzAxOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBBQ1VURTs7OzAxNDQ7CiswMTQ0O0xBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggQUNVVEU7TGw7MDtMOzAwNkUgMDMwMTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBOIEFDVVRFOzswMTQzOzswMTQzCiswMTQ1O0xBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBDRURJTExBO0x1OzA7TDswMDRFIDAzMjc7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBOIENFRElMTEE7OzswMTQ2OworMDE0NjtMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIENFRElMTEE7TGw7MDtMOzAwNkUgMDMyNzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBOIENFRElMTEE7OzAxNDU7OzAxNDUKKzAxNDc7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIENBUk9OO0x1OzA7TDswMDRFIDAzMEM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBOIEhBQ0VLOzs7MDE0ODsKKzAxNDg7TEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBDQVJPTjtMbDswO0w7MDA2RSAwMzBDOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIE4gSEFDRUs7OzAxNDc7OzAxNDcKKzAxNDk7TEFUSU4gU01BTEwgTEVUVEVSIE4gUFJFQ0VERUQgQlkgQVBPU1RST1BIRTtMbDswO0w7PGNvbXBhdD4gMDJCQyAwMDZFOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEFQT1NUUk9QSEUgTjs7OzsKKzAxNEE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRU5HO0x1OzA7TDs7Ozs7Tjs7U2FtaTs7MDE0QjsKKzAxNEI7TEFUSU4gU01BTEwgTEVUVEVSIEVORztMbDswO0w7Ozs7O047O1NhbWk7MDE0QTs7MDE0QQorMDE0QztMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggTUFDUk9OO0x1OzA7TDswMDRGIDAzMDQ7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIE1BQ1JPTjs7OzAxNEQ7CiswMTREO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggTUFDUk9OO0xsOzA7TDswMDZGIDAzMDQ7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTyBNQUNST047OzAxNEM7OzAxNEMKKzAxNEU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEJSRVZFO0x1OzA7TDswMDRGIDAzMDY7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIEJSRVZFOzs7MDE0RjsKKzAxNEY7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBCUkVWRTtMbDswO0w7MDA2RiAwMzA2Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIE8gQlJFVkU7OzAxNEU7OzAxNEUKKzAxNTA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERPVUJMRSBBQ1VURTtMdTswO0w7MDA0RiAwMzBCOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBET1VCTEUgQUNVVEU7OzswMTUxOworMDE1MTtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERPVUJMRSBBQ1VURTtMbDswO0w7MDA2RiAwMzBCOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIE8gRE9VQkxFIEFDVVRFOzswMTUwOzswMTUwCiswMTUyO0xBVElOIENBUElUQUwgTElHQVRVUkUgT0U7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIE8gRTs7OzAxNTM7CiswMTUzO0xBVElOIFNNQUxMIExJR0FUVVJFIE9FO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTyBFOzswMTUyOzswMTUyCiswMTU0O0xBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBBQ1VURTtMdTswO0w7MDA1MiAwMzAxOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBBQ1VURTs7OzAxNTU7CiswMTU1O0xBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggQUNVVEU7TGw7MDtMOzAwNzIgMDMwMTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBSIEFDVVRFOzswMTU0OzswMTU0CiswMTU2O0xBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBDRURJTExBO0x1OzA7TDswMDUyIDAzMjc7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBSIENFRElMTEE7OzswMTU3OworMDE1NztMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIENFRElMTEE7TGw7MDtMOzAwNzIgMDMyNzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBSIENFRElMTEE7OzAxNTY7OzAxNTYKKzAxNTg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIENBUk9OO0x1OzA7TDswMDUyIDAzMEM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBSIEhBQ0VLOzs7MDE1OTsKKzAxNTk7TEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBDQVJPTjtMbDswO0w7MDA3MiAwMzBDOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFIgSEFDRUs7OzAxNTg7OzAxNTgKKzAxNUE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIEFDVVRFO0x1OzA7TDswMDUzIDAzMDE7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBTIEFDVVRFOzs7MDE1QjsKKzAxNUI7TEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBBQ1VURTtMbDswO0w7MDA3MyAwMzAxOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFMgQUNVVEU7OzAxNUE7OzAxNUEKKzAxNUM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIENJUkNVTUZMRVg7THU7MDtMOzAwNTMgMDMwMjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFMgQ0lSQ1VNRkxFWDs7OzAxNUQ7CiswMTVEO0xBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQ0lSQ1VNRkxFWDtMbDswO0w7MDA3MyAwMzAyOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFMgQ0lSQ1VNRkxFWDs7MDE1Qzs7MDE1QworMDE1RTtMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQ0VESUxMQTtMdTswO0w7MDA1MyAwMzI3Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBDRURJTExBOyo7OzAxNUY7CiswMTVGO0xBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQ0VESUxMQTtMbDswO0w7MDA3MyAwMzI3Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFMgQ0VESUxMQTsqOzAxNUU7OzAxNUUKKzAxNjA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIENBUk9OO0x1OzA7TDswMDUzIDAzMEM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBTIEhBQ0VLOzs7MDE2MTsKKzAxNjE7TEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBDQVJPTjtMbDswO0w7MDA3MyAwMzBDOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFMgSEFDRUs7OzAxNjA7OzAxNjAKKzAxNjI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBXSVRIIENFRElMTEE7THU7MDtMOzAwNTQgMDMyNzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFQgQ0VESUxMQTsqOzswMTYzOworMDE2MztMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIENFRElMTEE7TGw7MDtMOzAwNzQgMDMyNzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBUIENFRElMTEE7KjswMTYyOzswMTYyCiswMTY0O0xBVElOIENBUElUQUwgTEVUVEVSIFQgV0lUSCBDQVJPTjtMdTswO0w7MDA1NCAwMzBDOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBIQUNFSzs7OzAxNjU7CiswMTY1O0xBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggQ0FST047TGw7MDtMOzAwNzQgMDMwQzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBUIEhBQ0VLOzswMTY0OzswMTY0CiswMTY2O0xBVElOIENBUElUQUwgTEVUVEVSIFQgV0lUSCBTVFJPS0U7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFQgQkFSOzs7MDE2NzsKKzAxNjc7TEFUSU4gU01BTEwgTEVUVEVSIFQgV0lUSCBTVFJPS0U7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBUIEJBUjs7MDE2Njs7MDE2NgorMDE2ODtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggVElMREU7THU7MDtMOzAwNTUgMDMwMzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFUgVElMREU7OzswMTY5OworMDE2OTtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIFRJTERFO0xsOzA7TDswMDc1IDAzMDM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVSBUSUxERTs7MDE2ODs7MDE2OAorMDE2QTtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggTUFDUk9OO0x1OzA7TDswMDU1IDAzMDQ7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIE1BQ1JPTjs7OzAxNkI7CiswMTZCO0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggTUFDUk9OO0xsOzA7TDswMDc1IDAzMDQ7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVSBNQUNST047OzAxNkE7OzAxNkEKKzAxNkM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEJSRVZFO0x1OzA7TDswMDU1IDAzMDY7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIEJSRVZFOzs7MDE2RDsKKzAxNkQ7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBCUkVWRTtMbDswO0w7MDA3NSAwMzA2Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFUgQlJFVkU7OzAxNkM7OzAxNkMKKzAxNkU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIFJJTkcgQUJPVkU7THU7MDtMOzAwNTUgMDMwQTs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFUgUklORzs7OzAxNkY7CiswMTZGO0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggUklORyBBQk9WRTtMbDswO0w7MDA3NSAwMzBBOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFUgUklORzs7MDE2RTs7MDE2RQorMDE3MDtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRE9VQkxFIEFDVVRFO0x1OzA7TDswMDU1IDAzMEI7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIERPVUJMRSBBQ1VURTs7OzAxNzE7CiswMTcxO0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRE9VQkxFIEFDVVRFO0xsOzA7TDswMDc1IDAzMEI7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVSBET1VCTEUgQUNVVEU7OzAxNzA7OzAxNzAKKzAxNzI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIE9HT05FSztMdTswO0w7MDA1NSAwMzI4Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBPR09ORUs7OzswMTczOworMDE3MztMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIE9HT05FSztMbDswO0w7MDA3NSAwMzI4Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFUgT0dPTkVLOzswMTcyOzswMTcyCiswMTc0O0xBVElOIENBUElUQUwgTEVUVEVSIFcgV0lUSCBDSVJDVU1GTEVYO0x1OzA7TDswMDU3IDAzMDI7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBXIENJUkNVTUZMRVg7OzswMTc1OworMDE3NTtMQVRJTiBTTUFMTCBMRVRURVIgVyBXSVRIIENJUkNVTUZMRVg7TGw7MDtMOzAwNzcgMDMwMjs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBXIENJUkNVTUZMRVg7OzAxNzQ7OzAxNzQKKzAxNzY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIENJUkNVTUZMRVg7THU7MDtMOzAwNTkgMDMwMjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFkgQ0lSQ1VNRkxFWDs7OzAxNzc7CiswMTc3O0xBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggQ0lSQ1VNRkxFWDtMbDswO0w7MDA3OSAwMzAyOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFkgQ0lSQ1VNRkxFWDs7MDE3Njs7MDE3NgorMDE3ODtMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTO0x1OzA7TDswMDU5IDAzMDg7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBZIERJQUVSRVNJUzs7OzAwRkY7CiswMTc5O0xBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBBQ1VURTtMdTswO0w7MDA1QSAwMzAxOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBBQ1VURTs7OzAxN0E7CiswMTdBO0xBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggQUNVVEU7TGw7MDtMOzAwN0EgMDMwMTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBaIEFDVVRFOzswMTc5OzswMTc5CiswMTdCO0xBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBET1QgQUJPVkU7THU7MDtMOzAwNUEgMDMwNzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFogRE9UOzs7MDE3QzsKKzAxN0M7TEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBET1QgQUJPVkU7TGw7MDtMOzAwN0EgMDMwNzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBaIERPVDs7MDE3Qjs7MDE3QgorMDE3RDtMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggQ0FST047THU7MDtMOzAwNUEgMDMwQzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFogSEFDRUs7OzswMTdFOworMDE3RTtMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIENBUk9OO0xsOzA7TDswMDdBIDAzMEM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgWiBIQUNFSzs7MDE3RDs7MDE3RAorMDE3RjtMQVRJTiBTTUFMTCBMRVRURVIgTE9ORyBTO0xsOzA7TDs8Y29tcGF0PiAwMDczOzs7O047OzswMDUzOzswMDUzCiswMTgwO0xBVElOIFNNQUxMIExFVFRFUiBCIFdJVEggU1RST0tFO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQiBCQVI7Ozs7CiswMTgxO0xBVElOIENBUElUQUwgTEVUVEVSIEIgV0lUSCBIT09LO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBCIEhPT0s7OzswMjUzOworMDE4MjtMQVRJTiBDQVBJVEFMIExFVFRFUiBCIFdJVEggVE9QQkFSO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBCIFRPUEJBUjs7OzAxODM7CiswMTgzO0xBVElOIFNNQUxMIExFVFRFUiBCIFdJVEggVE9QQkFSO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQiBUT1BCQVI7OzAxODI7OzAxODIKKzAxODQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVE9ORSBTSVg7THU7MDtMOzs7OztOOzs7OzAxODU7CiswMTg1O0xBVElOIFNNQUxMIExFVFRFUiBUT05FIFNJWDtMbDswO0w7Ozs7O047OzswMTg0OzswMTg0CiswMTg2O0xBVElOIENBUElUQUwgTEVUVEVSIE9QRU4gTztMdTswO0w7Ozs7O047Ozs7MDI1NDsKKzAxODc7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIEhPT0s7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEMgSE9PSzs7OzAxODg7CiswMTg4O0xBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEMgSE9PSzs7MDE4Nzs7MDE4NworMDE4OTtMQVRJTiBDQVBJVEFMIExFVFRFUiBBRlJJQ0FOIEQ7THU7MDtMOzs7OztOOzsqOzswMjU2OworMDE4QTtMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggSE9PSztMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBIT09LOzs7MDI1NzsKKzAxOEI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIFRPUEJBUjtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBUT1BCQVI7OzswMThDOworMDE4QztMQVRJTiBTTUFMTCBMRVRURVIgRCBXSVRIIFRPUEJBUjtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEQgVE9QQkFSOzswMThCOzswMThCCiswMThEO0xBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgREVMVEE7TGw7MDtMOzs7OztOOzs7OzsKKzAxOEU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUkVWRVJTRUQgRTtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVFVSTkVEIEU7OzswMUREOworMDE4RjtMQVRJTiBDQVBJVEFMIExFVFRFUiBTQ0hXQTtMdTswO0w7Ozs7O047Ozs7MDI1OTsKKzAxOTA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgT1BFTiBFO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBFUFNJTE9OOzs7MDI1QjsKKzAxOTE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRiBXSVRIIEhPT0s7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEYgSE9PSzs7OzAxOTI7CiswMTkyO0xBVElOIFNNQUxMIExFVFRFUiBGIFdJVEggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFNDUklQVCBGOzswMTkxOzswMTkxCiswMTkzO0xBVElOIENBUElUQUwgTEVUVEVSIEcgV0lUSCBIT09LO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBHIEhPT0s7OzswMjYwOworMDE5NDtMQVRJTiBDQVBJVEFMIExFVFRFUiBHQU1NQTtMdTswO0w7Ozs7O047Ozs7MDI2MzsKKzAxOTU7TEFUSU4gU01BTEwgTEVUVEVSIEhWO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgSCBWO2h3YWlyOzAxRjY7OzAxRjYKKzAxOTY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSU9UQTtMdTswO0w7Ozs7O047Ozs7MDI2OTsKKzAxOTc7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIFNUUk9LRTtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQkFSUkVEIEk7OzswMjY4OworMDE5ODtMQVRJTiBDQVBJVEFMIExFVFRFUiBLIFdJVEggSE9PSztMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgSyBIT09LOzs7MDE5OTsKKzAxOTk7TEFUSU4gU01BTEwgTEVUVEVSIEsgV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgSyBIT09LOzswMTk4OzswMTk4CiswMTlBO0xBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggQkFSO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQkFSUkVEIEw7Ozs7CiswMTlCO0xBVElOIFNNQUxMIExFVFRFUiBMQU1CREEgV0lUSCBTVFJPS0U7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBCQVJSRUQgTEFNQkRBOzs7OworMDE5QztMQVRJTiBDQVBJVEFMIExFVFRFUiBUVVJORUQgTTtMdTswO0w7Ozs7O047Ozs7MDI2RjsKKzAxOUQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIExFRlQgSE9PSztMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBIT09LOzs7MDI3MjsKKzAxOUU7TEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBMT05HIFJJR0hUIExFRztMbDswO0w7Ozs7O047OzswMjIwOzswMjIwCiswMTlGO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBNSURETEUgVElMREU7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEJBUlJFRCBPOyo7OzAyNzU7CiswMUEwO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBIT1JOO0x1OzA7TDswMDRGIDAzMUI7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIEhPUk47OzswMUExOworMDFBMTtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEhPUk47TGw7MDtMOzAwNkYgMDMxQjs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBPIEhPUk47OzAxQTA7OzAxQTAKKzAxQTI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgT0k7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIE8gSTtnaGE7OzAxQTM7CiswMUEzO0xBVElOIFNNQUxMIExFVFRFUiBPSTtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIE8gSTtnaGE7MDFBMjs7MDFBMgorMDFBNDtMQVRJTiBDQVBJVEFMIExFVFRFUiBQIFdJVEggSE9PSztMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgUCBIT09LOzs7MDFBNTsKKzAxQTU7TEFUSU4gU01BTEwgTEVUVEVSIFAgV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgUCBIT09LOzswMUE0OzswMUE0CiswMUE2O0xBVElOIExFVFRFUiBZUjtMdTswO0w7Ozs7O047TEFUSU4gTEVUVEVSIFkgUjsqOzswMjgwOworMDFBNztMQVRJTiBDQVBJVEFMIExFVFRFUiBUT05FIFRXTztMdTswO0w7Ozs7O047Ozs7MDFBODsKKzAxQTg7TEFUSU4gU01BTEwgTEVUVEVSIFRPTkUgVFdPO0xsOzA7TDs7Ozs7Tjs7OzAxQTc7OzAxQTcKKzAxQTk7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRVNIO0x1OzA7TDs7Ozs7Tjs7OzswMjgzOworMDFBQTtMQVRJTiBMRVRURVIgUkVWRVJTRUQgRVNIIExPT1A7TGw7MDtMOzs7OztOOzs7OzsKKzAxQUI7TEFUSU4gU01BTEwgTEVUVEVSIFQgV0lUSCBQQUxBVEFMIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBUIFBBTEFUQUwgSE9PSzs7OzsKKzAxQUM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBXSVRIIEhPT0s7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFQgSE9PSzs7OzAxQUQ7CiswMUFEO0xBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFQgSE9PSzs7MDFBQzs7MDFBQworMDFBRTtMQVRJTiBDQVBJVEFMIExFVFRFUiBUIFdJVEggUkVUUk9GTEVYIEhPT0s7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFQgUkVUUk9GTEVYIEhPT0s7OzswMjg4OworMDFBRjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggSE9STjtMdTswO0w7MDA1NSAwMzFCOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBIT1JOOzs7MDFCMDsKKzAxQjA7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBIT1JOO0xsOzA7TDswMDc1IDAzMUI7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVSBIT1JOOzswMUFGOzswMUFGCiswMUIxO0xBVElOIENBUElUQUwgTEVUVEVSIFVQU0lMT047THU7MDtMOzs7OztOOzs7OzAyOEE7CiswMUIyO0xBVElOIENBUElUQUwgTEVUVEVSIFYgV0lUSCBIT09LO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBTQ1JJUFQgVjs7OzAyOEI7CiswMUIzO0xBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBIT09LO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBZIEhPT0s7OzswMUI0OworMDFCNDtMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBZIEhPT0s7OzAxQjM7OzAxQjMKKzAxQjU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIFNUUk9LRTtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBCQVI7OzswMUI2OworMDFCNjtMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIFNUUk9LRTtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFogQkFSOzswMUI1OzswMUI1CiswMUI3O0xBVElOIENBUElUQUwgTEVUVEVSIEVaSDtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgWU9HSDs7OzAyOTI7CiswMUI4O0xBVElOIENBUElUQUwgTEVUVEVSIEVaSCBSRVZFUlNFRDtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgUkVWRVJTRUQgWU9HSDs7OzAxQjk7CiswMUI5O0xBVElOIFNNQUxMIExFVFRFUiBFWkggUkVWRVJTRUQ7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBSRVZFUlNFRCBZT0dIOzswMUI4OzswMUI4CiswMUJBO0xBVElOIFNNQUxMIExFVFRFUiBFWkggV0lUSCBUQUlMO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgWU9HSCBXSVRIIFRBSUw7Ozs7CiswMUJCO0xBVElOIExFVFRFUiBUV08gV0lUSCBTVFJPS0U7TG87MDtMOzs7OztOO0xBVElOIExFVFRFUiBUV08gQkFSOzs7OworMDFCQztMQVRJTiBDQVBJVEFMIExFVFRFUiBUT05FIEZJVkU7THU7MDtMOzs7OztOOzs7OzAxQkQ7CiswMUJEO0xBVElOIFNNQUxMIExFVFRFUiBUT05FIEZJVkU7TGw7MDtMOzs7OztOOzs7MDFCQzs7MDFCQworMDFCRTtMQVRJTiBMRVRURVIgSU5WRVJURUQgR0xPVFRBTCBTVE9QIFdJVEggU1RST0tFO0xsOzA7TDs7Ozs7TjtMQVRJTiBMRVRURVIgSU5WRVJURUQgR0xPVFRBTCBTVE9QIEJBUjs7OzsKKzAxQkY7TEFUSU4gTEVUVEVSIFdZTk47TGw7MDtMOzs7OztOOzs7MDFGNzs7MDFGNworMDFDMDtMQVRJTiBMRVRURVIgREVOVEFMIENMSUNLO0xvOzA7TDs7Ozs7TjtMQVRJTiBMRVRURVIgUElQRTs7OzsKKzAxQzE7TEFUSU4gTEVUVEVSIExBVEVSQUwgQ0xJQ0s7TG87MDtMOzs7OztOO0xBVElOIExFVFRFUiBET1VCTEUgUElQRTs7OzsKKzAxQzI7TEFUSU4gTEVUVEVSIEFMVkVPTEFSIENMSUNLO0xvOzA7TDs7Ozs7TjtMQVRJTiBMRVRURVIgUElQRSBET1VCTEUgQkFSOzs7OworMDFDMztMQVRJTiBMRVRURVIgUkVUUk9GTEVYIENMSUNLO0xvOzA7TDs7Ozs7TjtMQVRJTiBMRVRURVIgRVhDTEFNQVRJT04gTUFSSzs7OzsKKzAxQzQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRFogV0lUSCBDQVJPTjtMdTswO0w7PGNvbXBhdD4gMDA0NCAwMTdEOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBaIEhBQ0VLOzs7MDFDNjswMUM1CiswMUM1O0xBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBTTUFMTCBMRVRURVIgWiBXSVRIIENBUk9OO0x0OzA7TDs8Y29tcGF0PiAwMDQ0IDAxN0U7Ozs7TjtMQVRJTiBMRVRURVIgQ0FQSVRBTCBEIFNNQUxMIFogSEFDRUs7OzAxQzQ7MDFDNjsKKzAxQzY7TEFUSU4gU01BTEwgTEVUVEVSIERaIFdJVEggQ0FST047TGw7MDtMOzxjb21wYXQ+IDAwNjQgMDE3RTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBEIFogSEFDRUs7OzAxQzQ7OzAxQzUKKzAxQzc7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTEo7THU7MDtMOzxjb21wYXQ+IDAwNEMgMDA0QTs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEwgSjs7OzAxQzk7MDFDOAorMDFDODtMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggU01BTEwgTEVUVEVSIEo7THQ7MDtMOzxjb21wYXQ+IDAwNEMgMDA2QTs7OztOO0xBVElOIExFVFRFUiBDQVBJVEFMIEwgU01BTEwgSjs7MDFDNzswMUM5OworMDFDOTtMQVRJTiBTTUFMTCBMRVRURVIgTEo7TGw7MDtMOzxjb21wYXQ+IDAwNkMgMDA2QTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBMIEo7OzAxQzc7OzAxQzgKKzAxQ0E7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTko7THU7MDtMOzxjb21wYXQ+IDAwNEUgMDA0QTs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIE4gSjs7OzAxQ0M7MDFDQgorMDFDQjtMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggU01BTEwgTEVUVEVSIEo7THQ7MDtMOzxjb21wYXQ+IDAwNEUgMDA2QTs7OztOO0xBVElOIExFVFRFUiBDQVBJVEFMIE4gU01BTEwgSjs7MDFDQTswMUNDOworMDFDQztMQVRJTiBTTUFMTCBMRVRURVIgTko7TGw7MDtMOzxjb21wYXQ+IDAwNkUgMDA2QTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBOIEo7OzAxQ0E7OzAxQ0IKKzAxQ0Q7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIENBUk9OO0x1OzA7TDswMDQxIDAzMEM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIEhBQ0VLOzs7MDFDRTsKKzAxQ0U7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDQVJPTjtMbDswO0w7MDA2MSAwMzBDOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEEgSEFDRUs7OzAxQ0Q7OzAxQ0QKKzAxQ0Y7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIENBUk9OO0x1OzA7TDswMDQ5IDAzMEM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIEhBQ0VLOzs7MDFEMDsKKzAxRDA7TEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBDQVJPTjtMbDswO0w7MDA2OSAwMzBDOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEkgSEFDRUs7OzAxQ0Y7OzAxQ0YKKzAxRDE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENBUk9OO0x1OzA7TDswMDRGIDAzMEM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIEhBQ0VLOzs7MDFEMjsKKzAxRDI7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDQVJPTjtMbDswO0w7MDA2RiAwMzBDOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIE8gSEFDRUs7OzAxRDE7OzAxRDEKKzAxRDM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIENBUk9OO0x1OzA7TDswMDU1IDAzMEM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIEhBQ0VLOzs7MDFENDsKKzAxRDQ7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBDQVJPTjtMbDswO0w7MDA3NSAwMzBDOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFUgSEFDRUs7OzAxRDM7OzAxRDMKKzAxRDU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUyBBTkQgTUFDUk9OO0x1OzA7TDswMERDIDAzMDQ7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIERJQUVSRVNJUyBNQUNST047OzswMUQ2OworMDFENjtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUyBBTkQgTUFDUk9OO0xsOzA7TDswMEZDIDAzMDQ7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVSBESUFFUkVTSVMgTUFDUk9OOzswMUQ1OzswMUQ1CiswMUQ3O0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMgQU5EIEFDVVRFO0x1OzA7TDswMERDIDAzMDE7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIERJQUVSRVNJUyBBQ1VURTs7OzAxRDg7CiswMUQ4O0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTIEFORCBBQ1VURTtMbDswO0w7MDBGQyAwMzAxOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFUgRElBRVJFU0lTIEFDVVRFOzswMUQ3OzswMUQ3CiswMUQ5O0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMgQU5EIENBUk9OO0x1OzA7TDswMERDIDAzMEM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIERJQUVSRVNJUyBIQUNFSzs7OzAxREE7CiswMURBO0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTIEFORCBDQVJPTjtMbDswO0w7MDBGQyAwMzBDOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFUgRElBRVJFU0lTIEhBQ0VLOzswMUQ5OzswMUQ5CiswMURCO0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMgQU5EIEdSQVZFO0x1OzA7TDswMERDIDAzMDA7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIERJQUVSRVNJUyBHUkFWRTs7OzAxREM7CiswMURDO0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTIEFORCBHUkFWRTtMbDswO0w7MDBGQyAwMzAwOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFUgRElBRVJFU0lTIEdSQVZFOzswMURCOzswMURCCiswMUREO0xBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgRTtMbDswO0w7Ozs7O047OzswMThFOzswMThFCiswMURFO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMgQU5EIE1BQ1JPTjtMdTswO0w7MDBDNCAwMzA0Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBESUFFUkVTSVMgTUFDUk9OOzs7MDFERjsKKzAxREY7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMgQU5EIE1BQ1JPTjtMbDswO0w7MDBFNCAwMzA0Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEEgRElBRVJFU0lTIE1BQ1JPTjs7MDFERTs7MDFERQorMDFFMDtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRE9UIEFCT1ZFIEFORCBNQUNST047THU7MDtMOzAyMjYgMDMwNDs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEEgRE9UIE1BQ1JPTjs7OzAxRTE7CiswMUUxO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRE9UIEFCT1ZFIEFORCBNQUNST047TGw7MDtMOzAyMjcgMDMwNDs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBBIERPVCBNQUNST047OzAxRTA7OzAxRTAKKzAxRTI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQUUgV0lUSCBNQUNST047THU7MDtMOzAwQzYgMDMwNDs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEEgRSBNQUNST047YXNoICo7OzAxRTM7CiswMUUzO0xBVElOIFNNQUxMIExFVFRFUiBBRSBXSVRIIE1BQ1JPTjtMbDswO0w7MDBFNiAwMzA0Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEEgRSBNQUNST047YXNoICo7MDFFMjs7MDFFMgorMDFFNDtMQVRJTiBDQVBJVEFMIExFVFRFUiBHIFdJVEggU1RST0tFO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBHIEJBUjs7OzAxRTU7CiswMUU1O0xBVElOIFNNQUxMIExFVFRFUiBHIFdJVEggU1RST0tFO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRyBCQVI7OzAxRTQ7OzAxRTQKKzAxRTY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBXSVRIIENBUk9OO0x1OzA7TDswMDQ3IDAzMEM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBHIEhBQ0VLOzs7MDFFNzsKKzAxRTc7TEFUSU4gU01BTEwgTEVUVEVSIEcgV0lUSCBDQVJPTjtMbDswO0w7MDA2NyAwMzBDOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEcgSEFDRUs7OzAxRTY7OzAxRTYKKzAxRTg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSyBXSVRIIENBUk9OO0x1OzA7TDswMDRCIDAzMEM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBLIEhBQ0VLOzs7MDFFOTsKKzAxRTk7TEFUSU4gU01BTEwgTEVUVEVSIEsgV0lUSCBDQVJPTjtMbDswO0w7MDA2QiAwMzBDOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEsgSEFDRUs7OzAxRTg7OzAxRTgKKzAxRUE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIE9HT05FSztMdTswO0w7MDA0RiAwMzI4Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBPR09ORUs7OzswMUVCOworMDFFQjtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIE9HT05FSztMbDswO0w7MDA2RiAwMzI4Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIE8gT0dPTkVLOzswMUVBOzswMUVBCiswMUVDO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBPR09ORUsgQU5EIE1BQ1JPTjtMdTswO0w7MDFFQSAwMzA0Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBPR09ORUsgTUFDUk9OOzs7MDFFRDsKKzAxRUQ7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBPR09ORUsgQU5EIE1BQ1JPTjtMbDswO0w7MDFFQiAwMzA0Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIE8gT0dPTkVLIE1BQ1JPTjs7MDFFQzs7MDFFQworMDFFRTtMQVRJTiBDQVBJVEFMIExFVFRFUiBFWkggV0lUSCBDQVJPTjtMdTswO0w7MDFCNyAwMzBDOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgWU9HSCBIQUNFSzs7OzAxRUY7CiswMUVGO0xBVElOIFNNQUxMIExFVFRFUiBFWkggV0lUSCBDQVJPTjtMbDswO0w7MDI5MiAwMzBDOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFlPR0ggSEFDRUs7OzAxRUU7OzAxRUUKKzAxRjA7TEFUSU4gU01BTEwgTEVUVEVSIEogV0lUSCBDQVJPTjtMbDswO0w7MDA2QSAwMzBDOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEogSEFDRUs7Ozs7CiswMUYxO0xBVElOIENBUElUQUwgTEVUVEVSIERaO0x1OzA7TDs8Y29tcGF0PiAwMDQ0IDAwNUE7Ozs7Tjs7OzswMUYzOzAxRjIKKzAxRjI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIFNNQUxMIExFVFRFUiBaO0x0OzA7TDs8Y29tcGF0PiAwMDQ0IDAwN0E7Ozs7Tjs7OzAxRjE7MDFGMzsKKzAxRjM7TEFUSU4gU01BTEwgTEVUVEVSIERaO0xsOzA7TDs8Y29tcGF0PiAwMDY0IDAwN0E7Ozs7Tjs7OzAxRjE7OzAxRjIKKzAxRjQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBXSVRIIEFDVVRFO0x1OzA7TDswMDQ3IDAzMDE7Ozs7Tjs7OzswMUY1OworMDFGNTtMQVRJTiBTTUFMTCBMRVRURVIgRyBXSVRIIEFDVVRFO0xsOzA7TDswMDY3IDAzMDE7Ozs7Tjs7OzAxRjQ7OzAxRjQKKzAxRjY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSFdBSVI7THU7MDtMOzs7OztOOzs7OzAxOTU7CiswMUY3O0xBVElOIENBUElUQUwgTEVUVEVSIFdZTk47THU7MDtMOzs7OztOOzs7OzAxQkY7CiswMUY4O0xBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBHUkFWRTtMdTswO0w7MDA0RSAwMzAwOzs7O047Ozs7MDFGOTsKKzAxRjk7TEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBHUkFWRTtMbDswO0w7MDA2RSAwMzAwOzs7O047OzswMUY4OzswMUY4CiswMUZBO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFIEFORCBBQ1VURTtMdTswO0w7MDBDNSAwMzAxOzs7O047Ozs7MDFGQjsKKzAxRkI7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFIEFORCBBQ1VURTtMbDswO0w7MDBFNSAwMzAxOzs7O047OzswMUZBOzswMUZBCiswMUZDO0xBVElOIENBUElUQUwgTEVUVEVSIEFFIFdJVEggQUNVVEU7THU7MDtMOzAwQzYgMDMwMTs7OztOOzthc2ggKjs7MDFGRDsKKzAxRkQ7TEFUSU4gU01BTEwgTEVUVEVSIEFFIFdJVEggQUNVVEU7TGw7MDtMOzAwRTYgMDMwMTs7OztOOzthc2ggKjswMUZDOzswMUZDCiswMUZFO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBTVFJPS0UgQU5EIEFDVVRFO0x1OzA7TDswMEQ4IDAzMDE7Ozs7Tjs7OzswMUZGOworMDFGRjtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFNUUk9LRSBBTkQgQUNVVEU7TGw7MDtMOzAwRjggMDMwMTs7OztOOzs7MDFGRTs7MDFGRQorMDIwMDtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRE9VQkxFIEdSQVZFO0x1OzA7TDswMDQxIDAzMEY7Ozs7Tjs7OzswMjAxOworMDIwMTtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERPVUJMRSBHUkFWRTtMbDswO0w7MDA2MSAwMzBGOzs7O047OzswMjAwOzswMjAwCiswMjAyO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBJTlZFUlRFRCBCUkVWRTtMdTswO0w7MDA0MSAwMzExOzs7O047Ozs7MDIwMzsKKzAyMDM7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBJTlZFUlRFRCBCUkVWRTtMbDswO0w7MDA2MSAwMzExOzs7O047OzswMjAyOzswMjAyCiswMjA0O0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBET1VCTEUgR1JBVkU7THU7MDtMOzAwNDUgMDMwRjs7OztOOzs7OzAyMDU7CiswMjA1O0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRE9VQkxFIEdSQVZFO0xsOzA7TDswMDY1IDAzMEY7Ozs7Tjs7OzAyMDQ7OzAyMDQKKzAyMDY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIElOVkVSVEVEIEJSRVZFO0x1OzA7TDswMDQ1IDAzMTE7Ozs7Tjs7OzswMjA3OworMDIwNztMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIElOVkVSVEVEIEJSRVZFO0xsOzA7TDswMDY1IDAzMTE7Ozs7Tjs7OzAyMDY7OzAyMDYKKzAyMDg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERPVUJMRSBHUkFWRTtMdTswO0w7MDA0OSAwMzBGOzs7O047Ozs7MDIwOTsKKzAyMDk7TEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBET1VCTEUgR1JBVkU7TGw7MDtMOzAwNjkgMDMwRjs7OztOOzs7MDIwODs7MDIwOAorMDIwQTtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggSU5WRVJURUQgQlJFVkU7THU7MDtMOzAwNDkgMDMxMTs7OztOOzs7OzAyMEI7CiswMjBCO0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggSU5WRVJURUQgQlJFVkU7TGw7MDtMOzAwNjkgMDMxMTs7OztOOzs7MDIwQTs7MDIwQQorMDIwQztMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRE9VQkxFIEdSQVZFO0x1OzA7TDswMDRGIDAzMEY7Ozs7Tjs7OzswMjBEOworMDIwRDtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERPVUJMRSBHUkFWRTtMbDswO0w7MDA2RiAwMzBGOzs7O047OzswMjBDOzswMjBDCiswMjBFO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBJTlZFUlRFRCBCUkVWRTtMdTswO0w7MDA0RiAwMzExOzs7O047Ozs7MDIwRjsKKzAyMEY7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBJTlZFUlRFRCBCUkVWRTtMbDswO0w7MDA2RiAwMzExOzs7O047OzswMjBFOzswMjBFCiswMjEwO0xBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBET1VCTEUgR1JBVkU7THU7MDtMOzAwNTIgMDMwRjs7OztOOzs7OzAyMTE7CiswMjExO0xBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggRE9VQkxFIEdSQVZFO0xsOzA7TDswMDcyIDAzMEY7Ozs7Tjs7OzAyMTA7OzAyMTAKKzAyMTI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIElOVkVSVEVEIEJSRVZFO0x1OzA7TDswMDUyIDAzMTE7Ozs7Tjs7OzswMjEzOworMDIxMztMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIElOVkVSVEVEIEJSRVZFO0xsOzA7TDswMDcyIDAzMTE7Ozs7Tjs7OzAyMTI7OzAyMTIKKzAyMTQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERPVUJMRSBHUkFWRTtMdTswO0w7MDA1NSAwMzBGOzs7O047Ozs7MDIxNTsKKzAyMTU7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBET1VCTEUgR1JBVkU7TGw7MDtMOzAwNzUgMDMwRjs7OztOOzs7MDIxNDs7MDIxNAorMDIxNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggSU5WRVJURUQgQlJFVkU7THU7MDtMOzAwNTUgMDMxMTs7OztOOzs7OzAyMTc7CiswMjE3O0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggSU5WRVJURUQgQlJFVkU7TGw7MDtMOzAwNzUgMDMxMTs7OztOOzs7MDIxNjs7MDIxNgorMDIxODtMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQ09NTUEgQkVMT1c7THU7MDtMOzAwNTMgMDMyNjs7OztOOzsqOzswMjE5OworMDIxOTtMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIENPTU1BIEJFTE9XO0xsOzA7TDswMDczIDAzMjY7Ozs7Tjs7KjswMjE4OzswMjE4CiswMjFBO0xBVElOIENBUElUQUwgTEVUVEVSIFQgV0lUSCBDT01NQSBCRUxPVztMdTswO0w7MDA1NCAwMzI2Ozs7O047Oyo7OzAyMUI7CiswMjFCO0xBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggQ09NTUEgQkVMT1c7TGw7MDtMOzAwNzQgMDMyNjs7OztOOzsqOzAyMUE7OzAyMUEKKzAyMUM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWU9HSDtMdTswO0w7Ozs7O047Ozs7MDIxRDsKKzAyMUQ7TEFUSU4gU01BTEwgTEVUVEVSIFlPR0g7TGw7MDtMOzs7OztOOzs7MDIxQzs7MDIxQworMDIxRTtMQVRJTiBDQVBJVEFMIExFVFRFUiBIIFdJVEggQ0FST047THU7MDtMOzAwNDggMDMwQzs7OztOOzs7OzAyMUY7CiswMjFGO0xBVElOIFNNQUxMIExFVFRFUiBIIFdJVEggQ0FST047TGw7MDtMOzAwNjggMDMwQzs7OztOOzs7MDIxRTs7MDIxRQorMDIyMDtMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggTE9ORyBSSUdIVCBMRUc7THU7MDtMOzs7OztOOzs7OzAxOUU7CiswMjIyO0xBVElOIENBUElUQUwgTEVUVEVSIE9VO0x1OzA7TDs7Ozs7Tjs7OzswMjIzOworMDIyMztMQVRJTiBTTUFMTCBMRVRURVIgT1U7TGw7MDtMOzs7OztOOzs7MDIyMjs7MDIyMgorMDIyNDtMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggSE9PSztMdTswO0w7Ozs7O047Ozs7MDIyNTsKKzAyMjU7TEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBIT09LO0xsOzA7TDs7Ozs7Tjs7OzAyMjQ7OzAyMjQKKzAyMjY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIERPVCBBQk9WRTtMdTswO0w7MDA0MSAwMzA3Ozs7O047Ozs7MDIyNzsKKzAyMjc7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBET1QgQUJPVkU7TGw7MDtMOzAwNjEgMDMwNzs7OztOOzs7MDIyNjs7MDIyNgorMDIyODtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0VESUxMQTtMdTswO0w7MDA0NSAwMzI3Ozs7O047Ozs7MDIyOTsKKzAyMjk7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDRURJTExBO0xsOzA7TDswMDY1IDAzMjc7Ozs7Tjs7OzAyMjg7OzAyMjgKKzAyMkE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUyBBTkQgTUFDUk9OO0x1OzA7TDswMEQ2IDAzMDQ7Ozs7Tjs7OzswMjJCOworMDIyQjtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUyBBTkQgTUFDUk9OO0xsOzA7TDswMEY2IDAzMDQ7Ozs7Tjs7OzAyMkE7OzAyMkEKKzAyMkM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFRJTERFIEFORCBNQUNST047THU7MDtMOzAwRDUgMDMwNDs7OztOOzs7OzAyMkQ7CiswMjJEO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggVElMREUgQU5EIE1BQ1JPTjtMbDswO0w7MDBGNSAwMzA0Ozs7O047OzswMjJDOzswMjJDCiswMjJFO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBET1QgQUJPVkU7THU7MDtMOzAwNEYgMDMwNzs7OztOOzs7OzAyMkY7CiswMjJGO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRE9UIEFCT1ZFO0xsOzA7TDswMDZGIDAzMDc7Ozs7Tjs7OzAyMkU7OzAyMkUKKzAyMzA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERPVCBBQk9WRSBBTkQgTUFDUk9OO0x1OzA7TDswMjJFIDAzMDQ7Ozs7Tjs7OzswMjMxOworMDIzMTtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERPVCBBQk9WRSBBTkQgTUFDUk9OO0xsOzA7TDswMjJGIDAzMDQ7Ozs7Tjs7OzAyMzA7OzAyMzAKKzAyMzI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIE1BQ1JPTjtMdTswO0w7MDA1OSAwMzA0Ozs7O047Ozs7MDIzMzsKKzAyMzM7TEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBNQUNST047TGw7MDtMOzAwNzkgMDMwNDs7OztOOzs7MDIzMjs7MDIzMgorMDI1MDtMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIEE7TGw7MDtMOzs7OztOOzs7OzsKKzAyNTE7TEFUSU4gU01BTEwgTEVUVEVSIEFMUEhBO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgU0NSSVBUIEE7Ozs7CiswMjUyO0xBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgQUxQSEE7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgU0NSSVBUIEE7Ozs7CiswMjUzO0xBVElOIFNNQUxMIExFVFRFUiBCIFdJVEggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEIgSE9PSzs7MDE4MTs7MDE4MQorMDI1NDtMQVRJTiBTTUFMTCBMRVRURVIgT1BFTiBPO0xsOzA7TDs7Ozs7Tjs7OzAxODY7OzAxODYKKzAyNTU7TEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDVVJMO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQyBDVVJMOzs7OworMDI1NjtMQVRJTiBTTUFMTCBMRVRURVIgRCBXSVRIIFRBSUw7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBEIFJFVFJPRkxFWCBIT09LOzswMTg5OzswMTg5CiswMjU3O0xBVElOIFNNQUxMIExFVFRFUiBEIFdJVEggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEQgSE9PSzs7MDE4QTs7MDE4QQorMDI1ODtMQVRJTiBTTUFMTCBMRVRURVIgUkVWRVJTRUQgRTtMbDswO0w7Ozs7O047Ozs7OworMDI1OTtMQVRJTiBTTUFMTCBMRVRURVIgU0NIV0E7TGw7MDtMOzs7OztOOzs7MDE4Rjs7MDE4RgorMDI1QTtMQVRJTiBTTUFMTCBMRVRURVIgU0NIV0EgV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgU0NIV0EgSE9PSzs7OzsKKzAyNUI7TEFUSU4gU01BTEwgTEVUVEVSIE9QRU4gRTtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEVQU0lMT047OzAxOTA7OzAxOTAKKzAyNUM7TEFUSU4gU01BTEwgTEVUVEVSIFJFVkVSU0VEIE9QRU4gRTtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFJFVkVSU0VEIEVQU0lMT047Ozs7CiswMjVEO0xBVElOIFNNQUxMIExFVFRFUiBSRVZFUlNFRCBPUEVOIEUgV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgUkVWRVJTRUQgRVBTSUxPTiBIT09LOzs7OworMDI1RTtMQVRJTiBTTUFMTCBMRVRURVIgQ0xPU0VEIFJFVkVSU0VEIE9QRU4gRTtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIENMT1NFRCBSRVZFUlNFRCBFUFNJTE9OOzs7OworMDI1RjtMQVRJTiBTTUFMTCBMRVRURVIgRE9UTEVTUyBKIFdJVEggU1RST0tFO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRE9UTEVTUyBKIEJBUjs7OzsKKzAyNjA7TEFUSU4gU01BTEwgTEVUVEVSIEcgV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRyBIT09LOzswMTkzOzswMTkzCiswMjYxO0xBVElOIFNNQUxMIExFVFRFUiBTQ1JJUFQgRztMbDswO0w7Ozs7O047Ozs7OworMDI2MjtMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBHO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjYzO0xBVElOIFNNQUxMIExFVFRFUiBHQU1NQTtMbDswO0w7Ozs7O047OzswMTk0OzswMTk0CiswMjY0O0xBVElOIFNNQUxMIExFVFRFUiBSQU1TIEhPUk47TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBCQUJZIEdBTU1BOzs7OworMDI2NTtMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIEg7TGw7MDtMOzs7OztOOzs7OzsKKzAyNjY7TEFUSU4gU01BTEwgTEVUVEVSIEggV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgSCBIT09LOzs7OworMDI2NztMQVRJTiBTTUFMTCBMRVRURVIgSEVORyBXSVRIIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBIRU5HIEhPT0s7Ozs7CiswMjY4O0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggU1RST0tFO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQkFSUkVEIEk7OzAxOTc7OzAxOTcKKzAyNjk7TEFUSU4gU01BTEwgTEVUVEVSIElPVEE7TGw7MDtMOzs7OztOOzs7MDE5Njs7MDE5NgorMDI2QTtMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBJO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjZCO0xBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggTUlERExFIFRJTERFO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjZDO0xBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggQkVMVDtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEwgQkVMVDs7OzsKKzAyNkQ7TEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBSRVRST0ZMRVggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEwgUkVUUk9GTEVYIEhPT0s7Ozs7CiswMjZFO0xBVElOIFNNQUxMIExFVFRFUiBMRVpIO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTCBZT0dIOzs7OworMDI2RjtMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIE07TGw7MDtMOzs7OztOOzs7MDE5Qzs7MDE5QworMDI3MDtMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIE0gV0lUSCBMT05HIExFRztMbDswO0w7Ozs7O047Ozs7OworMDI3MTtMQVRJTiBTTUFMTCBMRVRURVIgTSBXSVRIIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBNIEhPT0s7Ozs7CiswMjcyO0xBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggTEVGVCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTiBIT09LOzswMTlEOzswMTlECiswMjczO0xBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggUkVUUk9GTEVYIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBOIFJFVFJPRkxFWCBIT09LOzs7OworMDI3NDtMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBOO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjc1O0xBVElOIFNNQUxMIExFVFRFUiBCQVJSRUQgTztMbDswO0w7Ozs7O047OzswMTlGOzswMTlGCiswMjc2O0xBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIE9FO0xsOzA7TDs7Ozs7TjtMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBPIEU7Ozs7CiswMjc3O0xBVElOIFNNQUxMIExFVFRFUiBDTE9TRUQgT01FR0E7TGw7MDtMOzs7OztOOzs7OzsKKzAyNzg7TEFUSU4gU01BTEwgTEVUVEVSIFBISTtMbDswO0w7Ozs7O047Ozs7OworMDI3OTtMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIFI7TGw7MDtMOzs7OztOOzs7OzsKKzAyN0E7TEFUSU4gU01BTEwgTEVUVEVSIFRVUk5FRCBSIFdJVEggTE9ORyBMRUc7TGw7MDtMOzs7OztOOzs7OzsKKzAyN0I7TEFUSU4gU01BTEwgTEVUVEVSIFRVUk5FRCBSIFdJVEggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFRVUk5FRCBSIEhPT0s7Ozs7CiswMjdDO0xBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggTE9ORyBMRUc7TGw7MDtMOzs7OztOOzs7OzsKKzAyN0Q7TEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBUQUlMO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgUiBIT09LOzs7OworMDI3RTtMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIEZJU0hIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRklTSEhPT0sgUjs7OzsKKzAyN0Y7TEFUSU4gU01BTEwgTEVUVEVSIFJFVkVSU0VEIFIgV0lUSCBGSVNISE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFJFVkVSU0VEIEZJU0hIT09LIFI7Ozs7CiswMjgwO0xBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIFI7TGw7MDtMOzs7OztOOzsqOzAxQTY7OzAxQTYKKzAyODE7TEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgSU5WRVJURUQgUjtMbDswO0w7Ozs7O047Ozs7OworMDI4MjtMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBTIEhPT0s7Ozs7CiswMjgzO0xBVElOIFNNQUxMIExFVFRFUiBFU0g7TGw7MDtMOzs7OztOOzs7MDFBOTs7MDFBOQorMDI4NDtMQVRJTiBTTUFMTCBMRVRURVIgRE9UTEVTUyBKIFdJVEggU1RST0tFIEFORCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRE9UTEVTUyBKIEJBUiBIT09LOzs7OworMDI4NTtMQVRJTiBTTUFMTCBMRVRURVIgU1FVQVQgUkVWRVJTRUQgRVNIO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjg2O0xBVElOIFNNQUxMIExFVFRFUiBFU0ggV0lUSCBDVVJMO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRVNIIENVUkw7Ozs7CiswMjg3O0xBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgVDtMbDswO0w7Ozs7O047Ozs7OworMDI4ODtMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIFJFVFJPRkxFWCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVCBSRVRST0ZMRVggSE9PSzs7MDFBRTs7MDFBRQorMDI4OTtMQVRJTiBTTUFMTCBMRVRURVIgVSBCQVI7TGw7MDtMOzs7OztOOzs7OzsKKzAyOEE7TEFUSU4gU01BTEwgTEVUVEVSIFVQU0lMT047TGw7MDtMOzs7OztOOzs7MDFCMTs7MDFCMQorMDI4QjtMQVRJTiBTTUFMTCBMRVRURVIgViBXSVRIIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBTQ1JJUFQgVjs7MDFCMjs7MDFCMgorMDI4QztMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIFY7TGw7MDtMOzs7OztOOzs7OzsKKzAyOEQ7TEFUSU4gU01BTEwgTEVUVEVSIFRVUk5FRCBXO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjhFO0xBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgWTtMbDswO0w7Ozs7O047Ozs7OworMDI4RjtMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBZO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjkwO0xBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggUkVUUk9GTEVYIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBaIFJFVFJPRkxFWCBIT09LOzs7OworMDI5MTtMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIENVUkw7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBaIENVUkw7Ozs7CiswMjkyO0xBVElOIFNNQUxMIExFVFRFUiBFWkg7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBZT0dIOzswMUI3OzswMUI3CiswMjkzO0xBVElOIFNNQUxMIExFVFRFUiBFWkggV0lUSCBDVVJMO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgWU9HSCBDVVJMOzs7OworMDI5NDtMQVRJTiBMRVRURVIgR0xPVFRBTCBTVE9QO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjk1O0xBVElOIExFVFRFUiBQSEFSWU5HRUFMIFZPSUNFRCBGUklDQVRJVkU7TGw7MDtMOzs7OztOO0xBVElOIExFVFRFUiBSRVZFUlNFRCBHTE9UVEFMIFNUT1A7Ozs7CiswMjk2O0xBVElOIExFVFRFUiBJTlZFUlRFRCBHTE9UVEFMIFNUT1A7TGw7MDtMOzs7OztOOzs7OzsKKzAyOTc7TEFUSU4gTEVUVEVSIFNUUkVUQ0hFRCBDO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjk4O0xBVElOIExFVFRFUiBCSUxBQklBTCBDTElDSztMbDswO0w7Ozs7O047TEFUSU4gTEVUVEVSIEJVTExTRVlFOzs7OworMDI5OTtMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBCO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjlBO0xBVElOIFNNQUxMIExFVFRFUiBDTE9TRUQgT1BFTiBFO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQ0xPU0VEIEVQU0lMT047Ozs7CiswMjlCO0xBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIEcgV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBHIEhPT0s7Ozs7CiswMjlDO0xBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIEg7TGw7MDtMOzs7OztOOzs7OzsKKzAyOUQ7TEFUSU4gU01BTEwgTEVUVEVSIEogV0lUSCBDUk9TU0VELVRBSUw7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBDUk9TU0VELVRBSUwgSjs7OzsKKzAyOUU7TEFUSU4gU01BTEwgTEVUVEVSIFRVUk5FRCBLO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjlGO0xBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIEw7TGw7MDtMOzs7OztOOzs7OzsKKzAyQTA7TEFUSU4gU01BTEwgTEVUVEVSIFEgV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgUSBIT09LOzs7OworMDJBMTtMQVRJTiBMRVRURVIgR0xPVFRBTCBTVE9QIFdJVEggU1RST0tFO0xsOzA7TDs7Ozs7TjtMQVRJTiBMRVRURVIgR0xPVFRBTCBTVE9QIEJBUjs7OzsKKzAyQTI7TEFUSU4gTEVUVEVSIFJFVkVSU0VEIEdMT1RUQUwgU1RPUCBXSVRIIFNUUk9LRTtMbDswO0w7Ozs7O047TEFUSU4gTEVUVEVSIFJFVkVSU0VEIEdMT1RUQUwgU1RPUCBCQVI7Ozs7CiswMkEzO0xBVElOIFNNQUxMIExFVFRFUiBEWiBESUdSQVBIO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRCBaOzs7OworMDJBNDtMQVRJTiBTTUFMTCBMRVRURVIgREVaSCBESUdSQVBIO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRCBZT0dIOzs7OworMDJBNTtMQVRJTiBTTUFMTCBMRVRURVIgRFogRElHUkFQSCBXSVRIIENVUkw7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBEIFogQ1VSTDs7OzsKKzAyQTY7TEFUSU4gU01BTEwgTEVUVEVSIFRTIERJR1JBUEg7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBUIFM7Ozs7CiswMkE3O0xBVElOIFNNQUxMIExFVFRFUiBURVNIIERJR1JBUEg7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBUIEVTSDs7OzsKKzAyQTg7TEFUSU4gU01BTEwgTEVUVEVSIFRDIERJR1JBUEggV0lUSCBDVVJMO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVCBDIENVUkw7Ozs7CiswMkE5O0xBVElOIFNNQUxMIExFVFRFUiBGRU5HIERJR1JBUEg7TGw7MDtMOzs7OztOOzs7OzsKKzAyQUE7TEFUSU4gU01BTEwgTEVUVEVSIExTIERJR1JBUEg7TGw7MDtMOzs7OztOOzs7OzsKKzAyQUI7TEFUSU4gU01BTEwgTEVUVEVSIExaIERJR1JBUEg7TGw7MDtMOzs7OztOOzs7OzsKKzAyQUM7TEFUSU4gTEVUVEVSIEJJTEFCSUFMIFBFUkNVU1NJVkU7TGw7MDtMOzs7OztOOzs7OzsKKzAyQUQ7TEFUSU4gTEVUVEVSIEJJREVOVEFMIFBFUkNVU1NJVkU7TGw7MDtMOzs7OztOOzs7OzsKKzAyQjA7TU9ESUZJRVIgTEVUVEVSIFNNQUxMIEg7TG07MDtMOzxzdXBlcj4gMDA2ODs7OztOOzs7OzsKKzAyQjE7TU9ESUZJRVIgTEVUVEVSIFNNQUxMIEggV0lUSCBIT09LO0xtOzA7TDs8c3VwZXI+IDAyNjY7Ozs7TjtNT0RJRklFUiBMRVRURVIgU01BTEwgSCBIT09LOzs7OworMDJCMjtNT0RJRklFUiBMRVRURVIgU01BTEwgSjtMbTswO0w7PHN1cGVyPiAwMDZBOzs7O047Ozs7OworMDJCMztNT0RJRklFUiBMRVRURVIgU01BTEwgUjtMbTswO0w7PHN1cGVyPiAwMDcyOzs7O047Ozs7OworMDJCNDtNT0RJRklFUiBMRVRURVIgU01BTEwgVFVSTkVEIFI7TG07MDtMOzxzdXBlcj4gMDI3OTs7OztOOzs7OzsKKzAyQjU7TU9ESUZJRVIgTEVUVEVSIFNNQUxMIFRVUk5FRCBSIFdJVEggSE9PSztMbTswO0w7PHN1cGVyPiAwMjdCOzs7O047TU9ESUZJRVIgTEVUVEVSIFNNQUxMIFRVUk5FRCBSIEhPT0s7Ozs7CiswMkI2O01PRElGSUVSIExFVFRFUiBTTUFMTCBDQVBJVEFMIElOVkVSVEVEIFI7TG07MDtMOzxzdXBlcj4gMDI4MTs7OztOOzs7OzsKKzAyQjc7TU9ESUZJRVIgTEVUVEVSIFNNQUxMIFc7TG07MDtMOzxzdXBlcj4gMDA3Nzs7OztOOzs7OzsKKzAyQjg7TU9ESUZJRVIgTEVUVEVSIFNNQUxMIFk7TG07MDtMOzxzdXBlcj4gMDA3OTs7OztOOzs7OzsKKzAyQjk7TU9ESUZJRVIgTEVUVEVSIFBSSU1FO1NrOzA7T047Ozs7O047Ozs7OworMDJCQTtNT0RJRklFUiBMRVRURVIgRE9VQkxFIFBSSU1FO1NrOzA7T047Ozs7O047Ozs7OworMDJCQjtNT0RJRklFUiBMRVRURVIgVFVSTkVEIENPTU1BO0xtOzA7TDs7Ozs7Tjs7Ozs7CiswMkJDO01PRElGSUVSIExFVFRFUiBBUE9TVFJPUEhFO0xtOzA7TDs7Ozs7Tjs7Ozs7CiswMkJEO01PRElGSUVSIExFVFRFUiBSRVZFUlNFRCBDT01NQTtMbTswO0w7Ozs7O047Ozs7OworMDJCRTtNT0RJRklFUiBMRVRURVIgUklHSFQgSEFMRiBSSU5HO0xtOzA7TDs7Ozs7Tjs7Ozs7CiswMkJGO01PRElGSUVSIExFVFRFUiBMRUZUIEhBTEYgUklORztMbTswO0w7Ozs7O047Ozs7OworMDJDMDtNT0RJRklFUiBMRVRURVIgR0xPVFRBTCBTVE9QO0xtOzA7TDs7Ozs7Tjs7Ozs7CiswMkMxO01PRElGSUVSIExFVFRFUiBSRVZFUlNFRCBHTE9UVEFMIFNUT1A7TG07MDtMOzs7OztOOzs7OzsKKzAyQzI7TU9ESUZJRVIgTEVUVEVSIExFRlQgQVJST1dIRUFEO1NrOzA7T047Ozs7O047Ozs7OworMDJDMztNT0RJRklFUiBMRVRURVIgUklHSFQgQVJST1dIRUFEO1NrOzA7T047Ozs7O047Ozs7OworMDJDNDtNT0RJRklFUiBMRVRURVIgVVAgQVJST1dIRUFEO1NrOzA7T047Ozs7O047Ozs7OworMDJDNTtNT0RJRklFUiBMRVRURVIgRE9XTiBBUlJPV0hFQUQ7U2s7MDtPTjs7Ozs7Tjs7Ozs7CiswMkM2O01PRElGSUVSIExFVFRFUiBDSVJDVU1GTEVYIEFDQ0VOVDtTazswO09OOzs7OztOO01PRElGSUVSIExFVFRFUiBDSVJDVU1GTEVYOzs7OworMDJDNztDQVJPTjtTazswO09OOzs7OztOO01PRElGSUVSIExFVFRFUiBIQUNFSztNYW5kYXJpbiBDaGluZXNlIHRoaXJkIHRvbmU7OzsKKzAyQzg7TU9ESUZJRVIgTEVUVEVSIFZFUlRJQ0FMIExJTkU7U2s7MDtPTjs7Ozs7Tjs7Ozs7CiswMkM5O01PRElGSUVSIExFVFRFUiBNQUNST047U2s7MDtPTjs7Ozs7Tjs7TWFuZGFyaW4gQ2hpbmVzZSBmaXJzdCB0b25lOzs7CiswMkNBO01PRElGSUVSIExFVFRFUiBBQ1VURSBBQ0NFTlQ7U2s7MDtPTjs7Ozs7TjtNT0RJRklFUiBMRVRURVIgQUNVVEU7TWFuZGFyaW4gQ2hpbmVzZSBzZWNvbmQgdG9uZTs7OworMDJDQjtNT0RJRklFUiBMRVRURVIgR1JBVkUgQUNDRU5UO1NrOzA7T047Ozs7O047TU9ESUZJRVIgTEVUVEVSIEdSQVZFO01hbmRhcmluIENoaW5lc2UgZm91cnRoIHRvbmU7OzsKKzAyQ0M7TU9ESUZJRVIgTEVUVEVSIExPVyBWRVJUSUNBTCBMSU5FO1NrOzA7T047Ozs7O047Ozs7OworMDJDRDtNT0RJRklFUiBMRVRURVIgTE9XIE1BQ1JPTjtTazswO09OOzs7OztOOzs7OzsKKzAyQ0U7TU9ESUZJRVIgTEVUVEVSIExPVyBHUkFWRSBBQ0NFTlQ7U2s7MDtPTjs7Ozs7TjtNT0RJRklFUiBMRVRURVIgTE9XIEdSQVZFOzs7OworMDJDRjtNT0RJRklFUiBMRVRURVIgTE9XIEFDVVRFIEFDQ0VOVDtTazswO09OOzs7OztOO01PRElGSUVSIExFVFRFUiBMT1cgQUNVVEU7Ozs7CiswMkQwO01PRElGSUVSIExFVFRFUiBUUklBTkdVTEFSIENPTE9OO0xtOzA7TDs7Ozs7Tjs7Ozs7CiswMkQxO01PRElGSUVSIExFVFRFUiBIQUxGIFRSSUFOR1VMQVIgQ09MT047TG07MDtMOzs7OztOOzs7OzsKKzAyRDI7TU9ESUZJRVIgTEVUVEVSIENFTlRSRUQgUklHSFQgSEFMRiBSSU5HO1NrOzA7T047Ozs7O047TU9ESUZJRVIgTEVUVEVSIENFTlRFUkVEIFJJR0hUIEhBTEYgUklORzs7OzsKKzAyRDM7TU9ESUZJRVIgTEVUVEVSIENFTlRSRUQgTEVGVCBIQUxGIFJJTkc7U2s7MDtPTjs7Ozs7TjtNT0RJRklFUiBMRVRURVIgQ0VOVEVSRUQgTEVGVCBIQUxGIFJJTkc7Ozs7CiswMkQ0O01PRElGSUVSIExFVFRFUiBVUCBUQUNLO1NrOzA7T047Ozs7O047Ozs7OworMDJENTtNT0RJRklFUiBMRVRURVIgRE9XTiBUQUNLO1NrOzA7T047Ozs7O047Ozs7OworMDJENjtNT0RJRklFUiBMRVRURVIgUExVUyBTSUdOO1NrOzA7T047Ozs7O047Ozs7OworMDJENztNT0RJRklFUiBMRVRURVIgTUlOVVMgU0lHTjtTazswO09OOzs7OztOOzs7OzsKKzAyRDg7QlJFVkU7U2s7MDtPTjs8Y29tcGF0PiAwMDIwIDAzMDY7Ozs7TjtTUEFDSU5HIEJSRVZFOzs7OworMDJEOTtET1QgQUJPVkU7U2s7MDtPTjs8Y29tcGF0PiAwMDIwIDAzMDc7Ozs7TjtTUEFDSU5HIERPVCBBQk9WRTtNYW5kYXJpbiBDaGluZXNlIGxpZ2h0IHRvbmU7OzsKKzAyREE7UklORyBBQk9WRTtTazswO09OOzxjb21wYXQ+IDAwMjAgMDMwQTs7OztOO1NQQUNJTkcgUklORyBBQk9WRTs7OzsKKzAyREI7T0dPTkVLO1NrOzA7T047PGNvbXBhdD4gMDAyMCAwMzI4Ozs7O047U1BBQ0lORyBPR09ORUs7Ozs7CiswMkRDO1NNQUxMIFRJTERFO1NrOzA7T047PGNvbXBhdD4gMDAyMCAwMzAzOzs7O047U1BBQ0lORyBUSUxERTs7OzsKKzAyREQ7RE9VQkxFIEFDVVRFIEFDQ0VOVDtTazswO09OOzxjb21wYXQ+IDAwMjAgMDMwQjs7OztOO1NQQUNJTkcgRE9VQkxFIEFDVVRFOzs7OworMDJERTtNT0RJRklFUiBMRVRURVIgUkhPVElDIEhPT0s7U2s7MDtPTjs7Ozs7Tjs7Ozs7CiswMkRGO01PRElGSUVSIExFVFRFUiBDUk9TUyBBQ0NFTlQ7U2s7MDtPTjs7Ozs7Tjs7Ozs7CiswMkUwO01PRElGSUVSIExFVFRFUiBTTUFMTCBHQU1NQTtMbTswO0w7PHN1cGVyPiAwMjYzOzs7O047Ozs7OworMDJFMTtNT0RJRklFUiBMRVRURVIgU01BTEwgTDtMbTswO0w7PHN1cGVyPiAwMDZDOzs7O047Ozs7OworMDJFMjtNT0RJRklFUiBMRVRURVIgU01BTEwgUztMbTswO0w7PHN1cGVyPiAwMDczOzs7O047Ozs7OworMDJFMztNT0RJRklFUiBMRVRURVIgU01BTEwgWDtMbTswO0w7PHN1cGVyPiAwMDc4Ozs7O047Ozs7OworMDJFNDtNT0RJRklFUiBMRVRURVIgU01BTEwgUkVWRVJTRUQgR0xPVFRBTCBTVE9QO0xtOzA7TDs8c3VwZXI+IDAyOTU7Ozs7Tjs7Ozs7CiswMkU1O01PRElGSUVSIExFVFRFUiBFWFRSQS1ISUdIIFRPTkUgQkFSO1NrOzA7T047Ozs7O047Ozs7OworMDJFNjtNT0RJRklFUiBMRVRURVIgSElHSCBUT05FIEJBUjtTazswO09OOzs7OztOOzs7OzsKKzAyRTc7TU9ESUZJRVIgTEVUVEVSIE1JRCBUT05FIEJBUjtTazswO09OOzs7OztOOzs7OzsKKzAyRTg7TU9ESUZJRVIgTEVUVEVSIExPVyBUT05FIEJBUjtTazswO09OOzs7OztOOzs7OzsKKzAyRTk7TU9ESUZJRVIgTEVUVEVSIEVYVFJBLUxPVyBUT05FIEJBUjtTazswO09OOzs7OztOOzs7OzsKKzAyRUE7TU9ESUZJRVIgTEVUVEVSIFlJTiBERVBBUlRJTkcgVE9ORSBNQVJLO1NrOzA7T047Ozs7O047Ozs7OworMDJFQjtNT0RJRklFUiBMRVRURVIgWUFORyBERVBBUlRJTkcgVE9ORSBNQVJLO1NrOzA7T047Ozs7O047Ozs7OworMDJFQztNT0RJRklFUiBMRVRURVIgVk9JQ0lORztTazswO09OOzs7OztOOzs7OzsKKzAyRUQ7TU9ESUZJRVIgTEVUVEVSIFVOQVNQSVJBVEVEO1NrOzA7T047Ozs7O047Ozs7OworMDJFRTtNT0RJRklFUiBMRVRURVIgRE9VQkxFIEFQT1NUUk9QSEU7TG07MDtMOzs7OztOOzs7OzsKKzAzMDA7Q09NQklOSU5HIEdSQVZFIEFDQ0VOVDtNbjsyMzA7TlNNOzs7OztOO05PTi1TUEFDSU5HIEdSQVZFO1ZhcmlhOzs7CiswMzAxO0NPTUJJTklORyBBQ1VURSBBQ0NFTlQ7TW47MjMwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBBQ1VURTtPeGlhLCBUb25vczs7OworMDMwMjtDT01CSU5JTkcgQ0lSQ1VNRkxFWCBBQ0NFTlQ7TW47MjMwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBDSVJDVU1GTEVYOzs7OworMDMwMztDT01CSU5JTkcgVElMREU7TW47MjMwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBUSUxERTs7OzsKKzAzMDQ7Q09NQklOSU5HIE1BQ1JPTjtNbjsyMzA7TlNNOzs7OztOO05PTi1TUEFDSU5HIE1BQ1JPTjs7OzsKKzAzMDU7Q09NQklOSU5HIE9WRVJMSU5FO01uOzIzMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgT1ZFUlNDT1JFOzs7OworMDMwNjtDT01CSU5JTkcgQlJFVkU7TW47MjMwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBCUkVWRTtWcmFjaHk7OzsKKzAzMDc7Q09NQklOSU5HIERPVCBBQk9WRTtNbjsyMzA7TlNNOzs7OztOO05PTi1TUEFDSU5HIERPVCBBQk9WRTs7OzsKKzAzMDg7Q09NQklOSU5HIERJQUVSRVNJUztNbjsyMzA7TlNNOzs7OztOO05PTi1TUEFDSU5HIERJQUVSRVNJUztEaWFseXRpa2E7OzsKKzAzMDk7Q09NQklOSU5HIEhPT0sgQUJPVkU7TW47MjMwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBIT09LIEFCT1ZFOzs7OworMDMwQTtDT01CSU5JTkcgUklORyBBQk9WRTtNbjsyMzA7TlNNOzs7OztOO05PTi1TUEFDSU5HIFJJTkcgQUJPVkU7Ozs7CiswMzBCO0NPTUJJTklORyBET1VCTEUgQUNVVEUgQUNDRU5UO01uOzIzMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgRE9VQkxFIEFDVVRFOzs7OworMDMwQztDT01CSU5JTkcgQ0FST047TW47MjMwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBIQUNFSzs7OzsKKzAzMEQ7Q09NQklOSU5HIFZFUlRJQ0FMIExJTkUgQUJPVkU7TW47MjMwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBWRVJUSUNBTCBMSU5FIEFCT1ZFOzs7OworMDMwRTtDT01CSU5JTkcgRE9VQkxFIFZFUlRJQ0FMIExJTkUgQUJPVkU7TW47MjMwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBET1VCTEUgVkVSVElDQUwgTElORSBBQk9WRTs7OzsKKzAzMEY7Q09NQklOSU5HIERPVUJMRSBHUkFWRSBBQ0NFTlQ7TW47MjMwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBET1VCTEUgR1JBVkU7Ozs7CiswMzEwO0NPTUJJTklORyBDQU5EUkFCSU5EVTtNbjsyMzA7TlNNOzs7OztOO05PTi1TUEFDSU5HIENBTkRSQUJJTkRVOzs7OworMDMxMTtDT01CSU5JTkcgSU5WRVJURUQgQlJFVkU7TW47MjMwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBJTlZFUlRFRCBCUkVWRTs7OzsKKzAzMTI7Q09NQklOSU5HIFRVUk5FRCBDT01NQSBBQk9WRTtNbjsyMzA7TlNNOzs7OztOO05PTi1TUEFDSU5HIFRVUk5FRCBDT01NQSBBQk9WRTs7OzsKKzAzMTM7Q09NQklOSU5HIENPTU1BIEFCT1ZFO01uOzIzMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgQ09NTUEgQUJPVkU7UHNpbGk7OzsKKzAzMTQ7Q09NQklOSU5HIFJFVkVSU0VEIENPTU1BIEFCT1ZFO01uOzIzMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgUkVWRVJTRUQgQ09NTUEgQUJPVkU7RGFzaWE7OzsKKzAzMTU7Q09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hUO01uOzIzMjtOU007Ozs7O047Tk9OLVNQQUNJTkcgQ09NTUEgQUJPVkUgUklHSFQ7Ozs7CiswMzE2O0NPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1c7TW47MjIwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBHUkFWRSBCRUxPVzs7OzsKKzAzMTc7Q09NQklOSU5HIEFDVVRFIEFDQ0VOVCBCRUxPVztNbjsyMjA7TlNNOzs7OztOO05PTi1TUEFDSU5HIEFDVVRFIEJFTE9XOzs7OworMDMxODtDT01CSU5JTkcgTEVGVCBUQUNLIEJFTE9XO01uOzIyMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgTEVGVCBUQUNLIEJFTE9XOzs7OworMDMxOTtDT01CSU5JTkcgUklHSFQgVEFDSyBCRUxPVztNbjsyMjA7TlNNOzs7OztOO05PTi1TUEFDSU5HIFJJR0hUIFRBQ0sgQkVMT1c7Ozs7CiswMzFBO0NPTUJJTklORyBMRUZUIEFOR0xFIEFCT1ZFO01uOzIzMjtOU007Ozs7O047Tk9OLVNQQUNJTkcgTEVGVCBBTkdMRSBBQk9WRTs7OzsKKzAzMUI7Q09NQklOSU5HIEhPUk47TW47MjE2O05TTTs7Ozs7TjtOT04tU1BBQ0lORyBIT1JOOzs7OworMDMxQztDT01CSU5JTkcgTEVGVCBIQUxGIFJJTkcgQkVMT1c7TW47MjIwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBMRUZUIEhBTEYgUklORyBCRUxPVzs7OzsKKzAzMUQ7Q09NQklOSU5HIFVQIFRBQ0sgQkVMT1c7TW47MjIwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBVUCBUQUNLIEJFTE9XOzs7OworMDMxRTtDT01CSU5JTkcgRE9XTiBUQUNLIEJFTE9XO01uOzIyMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgRE9XTiBUQUNLIEJFTE9XOzs7OworMDMxRjtDT01CSU5JTkcgUExVUyBTSUdOIEJFTE9XO01uOzIyMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgUExVUyBTSUdOIEJFTE9XOzs7OworMDMyMDtDT01CSU5JTkcgTUlOVVMgU0lHTiBCRUxPVztNbjsyMjA7TlNNOzs7OztOO05PTi1TUEFDSU5HIE1JTlVTIFNJR04gQkVMT1c7Ozs7CiswMzIxO0NPTUJJTklORyBQQUxBVEFMSVpFRCBIT09LIEJFTE9XO01uOzIwMjtOU007Ozs7O047Tk9OLVNQQUNJTkcgUEFMQVRBTElaRUQgSE9PSyBCRUxPVzs7OzsKKzAzMjI7Q09NQklOSU5HIFJFVFJPRkxFWCBIT09LIEJFTE9XO01uOzIwMjtOU007Ozs7O047Tk9OLVNQQUNJTkcgUkVUUk9GTEVYIEhPT0sgQkVMT1c7Ozs7CiswMzIzO0NPTUJJTklORyBET1QgQkVMT1c7TW47MjIwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBET1QgQkVMT1c7Ozs7CiswMzI0O0NPTUJJTklORyBESUFFUkVTSVMgQkVMT1c7TW47MjIwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBET1VCTEUgRE9UIEJFTE9XOzs7OworMDMyNTtDT01CSU5JTkcgUklORyBCRUxPVztNbjsyMjA7TlNNOzs7OztOO05PTi1TUEFDSU5HIFJJTkcgQkVMT1c7Ozs7CiswMzI2O0NPTUJJTklORyBDT01NQSBCRUxPVztNbjsyMjA7TlNNOzs7OztOO05PTi1TUEFDSU5HIENPTU1BIEJFTE9XOzs7OworMDMyNztDT01CSU5JTkcgQ0VESUxMQTtNbjsyMDI7TlNNOzs7OztOO05PTi1TUEFDSU5HIENFRElMTEE7Ozs7CiswMzI4O0NPTUJJTklORyBPR09ORUs7TW47MjAyO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBPR09ORUs7Ozs7CiswMzI5O0NPTUJJTklORyBWRVJUSUNBTCBMSU5FIEJFTE9XO01uOzIyMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgVkVSVElDQUwgTElORSBCRUxPVzs7OzsKKzAzMkE7Q09NQklOSU5HIEJSSURHRSBCRUxPVztNbjsyMjA7TlNNOzs7OztOO05PTi1TUEFDSU5HIEJSSURHRSBCRUxPVzs7OzsKKzAzMkI7Q09NQklOSU5HIElOVkVSVEVEIERPVUJMRSBBUkNIIEJFTE9XO01uOzIyMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgSU5WRVJURUQgRE9VQkxFIEFSQ0ggQkVMT1c7Ozs7CiswMzJDO0NPTUJJTklORyBDQVJPTiBCRUxPVztNbjsyMjA7TlNNOzs7OztOO05PTi1TUEFDSU5HIEhBQ0VLIEJFTE9XOzs7OworMDMyRDtDT01CSU5JTkcgQ0lSQ1VNRkxFWCBBQ0NFTlQgQkVMT1c7TW47MjIwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBDSVJDVU1GTEVYIEJFTE9XOzs7OworMDMyRTtDT01CSU5JTkcgQlJFVkUgQkVMT1c7TW47MjIwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBCUkVWRSBCRUxPVzs7OzsKKzAzMkY7Q09NQklOSU5HIElOVkVSVEVEIEJSRVZFIEJFTE9XO01uOzIyMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgSU5WRVJURUQgQlJFVkUgQkVMT1c7Ozs7CiswMzMwO0NPTUJJTklORyBUSUxERSBCRUxPVztNbjsyMjA7TlNNOzs7OztOO05PTi1TUEFDSU5HIFRJTERFIEJFTE9XOzs7OworMDMzMTtDT01CSU5JTkcgTUFDUk9OIEJFTE9XO01uOzIyMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgTUFDUk9OIEJFTE9XOzs7OworMDMzMjtDT01CSU5JTkcgTE9XIExJTkU7TW47MjIwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBVTkRFUlNDT1JFOzs7OworMDMzMztDT01CSU5JTkcgRE9VQkxFIExPVyBMSU5FO01uOzIyMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgRE9VQkxFIFVOREVSU0NPUkU7Ozs7CiswMzM0O0NPTUJJTklORyBUSUxERSBPVkVSTEFZO01uOzE7TlNNOzs7OztOO05PTi1TUEFDSU5HIFRJTERFIE9WRVJMQVk7Ozs7CiswMzM1O0NPTUJJTklORyBTSE9SVCBTVFJPS0UgT1ZFUkxBWTtNbjsxO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBTSE9SVCBCQVIgT1ZFUkxBWTs7OzsKKzAzMzY7Q09NQklOSU5HIExPTkcgU1RST0tFIE9WRVJMQVk7TW47MTtOU007Ozs7O047Tk9OLVNQQUNJTkcgTE9ORyBCQVIgT1ZFUkxBWTs7OzsKKzAzMzc7Q09NQklOSU5HIFNIT1JUIFNPTElEVVMgT1ZFUkxBWTtNbjsxO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBTSE9SVCBTTEFTSCBPVkVSTEFZOzs7OworMDMzODtDT01CSU5JTkcgTE9ORyBTT0xJRFVTIE9WRVJMQVk7TW47MTtOU007Ozs7O047Tk9OLVNQQUNJTkcgTE9ORyBTTEFTSCBPVkVSTEFZOzs7OworMDMzOTtDT01CSU5JTkcgUklHSFQgSEFMRiBSSU5HIEJFTE9XO01uOzIyMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgUklHSFQgSEFMRiBSSU5HIEJFTE9XOzs7OworMDMzQTtDT01CSU5JTkcgSU5WRVJURUQgQlJJREdFIEJFTE9XO01uOzIyMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgSU5WRVJURUQgQlJJREdFIEJFTE9XOzs7OworMDMzQjtDT01CSU5JTkcgU1FVQVJFIEJFTE9XO01uOzIyMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgU1FVQVJFIEJFTE9XOzs7OworMDMzQztDT01CSU5JTkcgU0VBR1VMTCBCRUxPVztNbjsyMjA7TlNNOzs7OztOO05PTi1TUEFDSU5HIFNFQUdVTEwgQkVMT1c7Ozs7CiswMzNEO0NPTUJJTklORyBYIEFCT1ZFO01uOzIzMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgWCBBQk9WRTs7OzsKKzAzM0U7Q09NQklOSU5HIFZFUlRJQ0FMIFRJTERFO01uOzIzMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgVkVSVElDQUwgVElMREU7Ozs7CiswMzNGO0NPTUJJTklORyBET1VCTEUgT1ZFUkxJTkU7TW47MjMwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBET1VCTEUgT1ZFUlNDT1JFOzs7OworMDM0MDtDT01CSU5JTkcgR1JBVkUgVE9ORSBNQVJLO01uOzIzMDtOU007MDMwMDs7OztOO05PTi1TUEFDSU5HIEdSQVZFIFRPTkUgTUFSSztWaWV0bmFtZXNlOzs7CiswMzQxO0NPTUJJTklORyBBQ1VURSBUT05FIE1BUks7TW47MjMwO05TTTswMzAxOzs7O047Tk9OLVNQQUNJTkcgQUNVVEUgVE9ORSBNQVJLO1ZpZXRuYW1lc2U7OzsKKzAzNDI7Q09NQklOSU5HIEdSRUVLIFBFUklTUE9NRU5JO01uOzIzMDtOU007Ozs7O047Ozs7OworMDM0MztDT01CSU5JTkcgR1JFRUsgS09ST05JUztNbjsyMzA7TlNNOzAzMTM7Ozs7Tjs7Ozs7CiswMzQ0O0NPTUJJTklORyBHUkVFSyBESUFMWVRJS0EgVE9OT1M7TW47MjMwO05TTTswMzA4IDAzMDE7Ozs7TjtHUkVFSyBOT04tU1BBQ0lORyBESUFFUkVTSVMgVE9OT1M7Ozs7CiswMzQ1O0NPTUJJTklORyBHUkVFSyBZUE9HRUdSQU1NRU5JO01uOzI0MDtOU007Ozs7O047R1JFRUsgTk9OLVNQQUNJTkcgSU9UQSBCRUxPVzs7MDM5OTs7MDM5OQorMDM0NjtDT01CSU5JTkcgQlJJREdFIEFCT1ZFO01uOzIzMDtOU007Ozs7O047Ozs7OworMDM0NztDT01CSU5JTkcgRVFVQUxTIFNJR04gQkVMT1c7TW47MjIwO05TTTs7Ozs7Tjs7Ozs7CiswMzQ4O0NPTUJJTklORyBET1VCTEUgVkVSVElDQUwgTElORSBCRUxPVztNbjsyMjA7TlNNOzs7OztOOzs7OzsKKzAzNDk7Q09NQklOSU5HIExFRlQgQU5HTEUgQkVMT1c7TW47MjIwO05TTTs7Ozs7Tjs7Ozs7CiswMzRBO0NPTUJJTklORyBOT1QgVElMREUgQUJPVkU7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswMzRCO0NPTUJJTklORyBIT01PVEhFVElDIEFCT1ZFO01uOzIzMDtOU007Ozs7O047Ozs7OworMDM0QztDT01CSU5JTkcgQUxNT1NUIEVRVUFMIFRPIEFCT1ZFO01uOzIzMDtOU007Ozs7O047Ozs7OworMDM0RDtDT01CSU5JTkcgTEVGVCBSSUdIVCBBUlJPVyBCRUxPVztNbjsyMjA7TlNNOzs7OztOOzs7OzsKKzAzNEU7Q09NQklOSU5HIFVQV0FSRFMgQVJST1cgQkVMT1c7TW47MjIwO05TTTs7Ozs7Tjs7Ozs7CiswMzRGO0NPTUJJTklORyBHUkFQSEVNRSBKT0lORVI7TW47MDtOU007Ozs7O047Ozs7OworMDM2MDtDT01CSU5JTkcgRE9VQkxFIFRJTERFO01uOzIzNDtOU007Ozs7O047Ozs7OworMDM2MTtDT01CSU5JTkcgRE9VQkxFIElOVkVSVEVEIEJSRVZFO01uOzIzNDtOU007Ozs7O047Ozs7OworMDM2MjtDT01CSU5JTkcgRE9VQkxFIFJJR0hUV0FSRFMgQVJST1cgQkVMT1c7TW47MjMzO05TTTs7Ozs7Tjs7Ozs7CiswMzYzO0NPTUJJTklORyBMQVRJTiBTTUFMTCBMRVRURVIgQTtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzAzNjQ7Q09NQklOSU5HIExBVElOIFNNQUxMIExFVFRFUiBFO01uOzIzMDtOU007Ozs7O047Ozs7OworMDM2NTtDT01CSU5JTkcgTEFUSU4gU01BTEwgTEVUVEVSIEk7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswMzY2O0NPTUJJTklORyBMQVRJTiBTTUFMTCBMRVRURVIgTztNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzAzNjc7Q09NQklOSU5HIExBVElOIFNNQUxMIExFVFRFUiBVO01uOzIzMDtOU007Ozs7O047Ozs7OworMDM2ODtDT01CSU5JTkcgTEFUSU4gU01BTEwgTEVUVEVSIEM7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswMzY5O0NPTUJJTklORyBMQVRJTiBTTUFMTCBMRVRURVIgRDtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzAzNkE7Q09NQklOSU5HIExBVElOIFNNQUxMIExFVFRFUiBIO01uOzIzMDtOU007Ozs7O047Ozs7OworMDM2QjtDT01CSU5JTkcgTEFUSU4gU01BTEwgTEVUVEVSIE07TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswMzZDO0NPTUJJTklORyBMQVRJTiBTTUFMTCBMRVRURVIgUjtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzAzNkQ7Q09NQklOSU5HIExBVElOIFNNQUxMIExFVFRFUiBUO01uOzIzMDtOU007Ozs7O047Ozs7OworMDM2RTtDT01CSU5JTkcgTEFUSU4gU01BTEwgTEVUVEVSIFY7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswMzZGO0NPTUJJTklORyBMQVRJTiBTTUFMTCBMRVRURVIgWDtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzAzNzQ7R1JFRUsgTlVNRVJBTCBTSUdOO1NrOzA7T047MDJCOTs7OztOO0dSRUVLIFVQUEVSIE5VTUVSQUwgU0lHTjtEZXhpYSBrZXJhaWE7OzsKKzAzNzU7R1JFRUsgTE9XRVIgTlVNRVJBTCBTSUdOO1NrOzA7T047Ozs7O047O0FyaXN0ZXJpIGtlcmFpYTs7OworMDM3QTtHUkVFSyBZUE9HRUdSQU1NRU5JO0xtOzA7TDs8Y29tcGF0PiAwMDIwIDAzNDU7Ozs7TjtHUkVFSyBTUEFDSU5HIElPVEEgQkVMT1c7Ozs7CiswMzdFO0dSRUVLIFFVRVNUSU9OIE1BUks7UG87MDtPTjswMDNCOzs7O047O0Vyb3RpbWF0aWtvOzs7CiswMzg0O0dSRUVLIFRPTk9TO1NrOzA7T047PGNvbXBhdD4gMDAyMCAwMzAxOzs7O047R1JFRUsgU1BBQ0lORyBUT05PUzs7OzsKKzAzODU7R1JFRUsgRElBTFlUSUtBIFRPTk9TO1NrOzA7T047MDBBOCAwMzAxOzs7O047R1JFRUsgU1BBQ0lORyBESUFFUkVTSVMgVE9OT1M7Ozs7CiswMzg2O0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggVE9OT1M7THU7MDtMOzAzOTEgMDMwMTs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFRPTk9TOzs7MDNBQzsKKzAzODc7R1JFRUsgQU5PIFRFTEVJQTtQbzswO09OOzAwQjc7Ozs7Tjs7Ozs7CiswMzg4O0dSRUVLIENBUElUQUwgTEVUVEVSIEVQU0lMT04gV0lUSCBUT05PUztMdTswO0w7MDM5NSAwMzAxOzs7O047R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVBTSUxPTiBUT05PUzs7OzAzQUQ7CiswMzg5O0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFRPTk9TO0x1OzA7TDswMzk3IDAzMDE7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgVE9OT1M7OzswM0FFOworMDM4QTtHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggVE9OT1M7THU7MDtMOzAzOTkgMDMwMTs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgVE9OT1M7OzswM0FGOworMDM4QztHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OIFdJVEggVE9OT1M7THU7MDtMOzAzOUYgMDMwMTs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NSUNST04gVE9OT1M7OzswM0NDOworMDM4RTtHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggVE9OT1M7THU7MDtMOzAzQTUgMDMwMTs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gVE9OT1M7OzswM0NEOworMDM4RjtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFRPTk9TO0x1OzA7TDswM0E5IDAzMDE7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBUT05PUzs7OzAzQ0U7CiswMzkwO0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggRElBTFlUSUtBIEFORCBUT05PUztMbDswO0w7MDNDQSAwMzAxOzs7O047R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgRElBRVJFU0lTIFRPTk9TOzs7OworMDM5MTtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQTtMdTswO0w7Ozs7O047Ozs7MDNCMTsKKzAzOTI7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQkVUQTtMdTswO0w7Ozs7O047Ozs7MDNCMjsKKzAzOTM7R1JFRUsgQ0FQSVRBTCBMRVRURVIgR0FNTUE7THU7MDtMOzs7OztOOzs7OzAzQjM7CiswMzk0O0dSRUVLIENBUElUQUwgTEVUVEVSIERFTFRBO0x1OzA7TDs7Ozs7Tjs7OzswM0I0OworMDM5NTtHUkVFSyBDQVBJVEFMIExFVFRFUiBFUFNJTE9OO0x1OzA7TDs7Ozs7Tjs7OzswM0I1OworMDM5NjtHUkVFSyBDQVBJVEFMIExFVFRFUiBaRVRBO0x1OzA7TDs7Ozs7Tjs7OzswM0I2OworMDM5NztHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEE7THU7MDtMOzs7OztOOzs7OzAzQjc7CiswMzk4O0dSRUVLIENBUElUQUwgTEVUVEVSIFRIRVRBO0x1OzA7TDs7Ozs7Tjs7OzswM0I4OworMDM5OTtHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBO0x1OzA7TDs7Ozs7Tjs7OzswM0I5OworMDM5QTtHUkVFSyBDQVBJVEFMIExFVFRFUiBLQVBQQTtMdTswO0w7Ozs7O047Ozs7MDNCQTsKKzAzOUI7R1JFRUsgQ0FQSVRBTCBMRVRURVIgTEFNREE7THU7MDtMOzs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIExBTUJEQTs7OzAzQkI7CiswMzlDO0dSRUVLIENBUElUQUwgTEVUVEVSIE1VO0x1OzA7TDs7Ozs7Tjs7OzswM0JDOworMDM5RDtHUkVFSyBDQVBJVEFMIExFVFRFUiBOVTtMdTswO0w7Ozs7O047Ozs7MDNCRDsKKzAzOUU7R1JFRUsgQ0FQSVRBTCBMRVRURVIgWEk7THU7MDtMOzs7OztOOzs7OzAzQkU7CiswMzlGO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NSUNST047THU7MDtMOzs7OztOOzs7OzAzQkY7CiswM0EwO0dSRUVLIENBUElUQUwgTEVUVEVSIFBJO0x1OzA7TDs7Ozs7Tjs7OzswM0MwOworMDNBMTtHUkVFSyBDQVBJVEFMIExFVFRFUiBSSE87THU7MDtMOzs7OztOOzs7OzAzQzE7CiswM0EzO0dSRUVLIENBUElUQUwgTEVUVEVSIFNJR01BO0x1OzA7TDs7Ozs7Tjs7OzswM0MzOworMDNBNDtHUkVFSyBDQVBJVEFMIExFVFRFUiBUQVU7THU7MDtMOzs7OztOOzs7OzAzQzQ7CiswM0E1O0dSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT047THU7MDtMOzs7OztOOzs7OzAzQzU7CiswM0E2O0dSRUVLIENBUElUQUwgTEVUVEVSIFBISTtMdTswO0w7Ozs7O047Ozs7MDNDNjsKKzAzQTc7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQ0hJO0x1OzA7TDs7Ozs7Tjs7OzswM0M3OworMDNBODtHUkVFSyBDQVBJVEFMIExFVFRFUiBQU0k7THU7MDtMOzs7OztOOzs7OzAzQzg7CiswM0E5O0dSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBO0x1OzA7TDs7Ozs7Tjs7OzswM0M5OworMDNBQTtHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggRElBTFlUSUtBO0x1OzA7TDswMzk5IDAzMDg7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIERJQUVSRVNJUzs7OzAzQ0E7CiswM0FCO0dSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBESUFMWVRJS0E7THU7MDtMOzAzQTUgMDMwODs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gRElBRVJFU0lTOzs7MDNDQjsKKzAzQUM7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggVE9OT1M7TGw7MDtMOzAzQjEgMDMwMTs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBUT05PUzs7MDM4Njs7MDM4NgorMDNBRDtHUkVFSyBTTUFMTCBMRVRURVIgRVBTSUxPTiBXSVRIIFRPTk9TO0xsOzA7TDswM0I1IDAzMDE7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgRVBTSUxPTiBUT05PUzs7MDM4ODs7MDM4OAorMDNBRTtHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggVE9OT1M7TGw7MDtMOzAzQjcgMDMwMTs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgVE9OT1M7OzAzODk7OzAzODkKKzAzQUY7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBUT05PUztMbDswO0w7MDNCOSAwMzAxOzs7O047R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgVE9OT1M7OzAzOEE7OzAzOEEKKzAzQjA7R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBESUFMWVRJS0EgQU5EIFRPTk9TO0xsOzA7TDswM0NCIDAzMDE7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBESUFFUkVTSVMgVE9OT1M7Ozs7CiswM0IxO0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQTtMbDswO0w7Ozs7O047OzswMzkxOzswMzkxCiswM0IyO0dSRUVLIFNNQUxMIExFVFRFUiBCRVRBO0xsOzA7TDs7Ozs7Tjs7OzAzOTI7OzAzOTIKKzAzQjM7R1JFRUsgU01BTEwgTEVUVEVSIEdBTU1BO0xsOzA7TDs7Ozs7Tjs7OzAzOTM7OzAzOTMKKzAzQjQ7R1JFRUsgU01BTEwgTEVUVEVSIERFTFRBO0xsOzA7TDs7Ozs7Tjs7OzAzOTQ7OzAzOTQKKzAzQjU7R1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT047TGw7MDtMOzs7OztOOzs7MDM5NTs7MDM5NQorMDNCNjtHUkVFSyBTTUFMTCBMRVRURVIgWkVUQTtMbDswO0w7Ozs7O047OzswMzk2OzswMzk2CiswM0I3O0dSRUVLIFNNQUxMIExFVFRFUiBFVEE7TGw7MDtMOzs7OztOOzs7MDM5Nzs7MDM5NworMDNCODtHUkVFSyBTTUFMTCBMRVRURVIgVEhFVEE7TGw7MDtMOzs7OztOOzs7MDM5ODs7MDM5OAorMDNCOTtHUkVFSyBTTUFMTCBMRVRURVIgSU9UQTtMbDswO0w7Ozs7O047OzswMzk5OzswMzk5CiswM0JBO0dSRUVLIFNNQUxMIExFVFRFUiBLQVBQQTtMbDswO0w7Ozs7O047OzswMzlBOzswMzlBCiswM0JCO0dSRUVLIFNNQUxMIExFVFRFUiBMQU1EQTtMbDswO0w7Ozs7O047R1JFRUsgU01BTEwgTEVUVEVSIExBTUJEQTs7MDM5Qjs7MDM5QgorMDNCQztHUkVFSyBTTUFMTCBMRVRURVIgTVU7TGw7MDtMOzs7OztOOzs7MDM5Qzs7MDM5QworMDNCRDtHUkVFSyBTTUFMTCBMRVRURVIgTlU7TGw7MDtMOzs7OztOOzs7MDM5RDs7MDM5RAorMDNCRTtHUkVFSyBTTUFMTCBMRVRURVIgWEk7TGw7MDtMOzs7OztOOzs7MDM5RTs7MDM5RQorMDNCRjtHUkVFSyBTTUFMTCBMRVRURVIgT01JQ1JPTjtMbDswO0w7Ozs7O047OzswMzlGOzswMzlGCiswM0MwO0dSRUVLIFNNQUxMIExFVFRFUiBQSTtMbDswO0w7Ozs7O047OzswM0EwOzswM0EwCiswM0MxO0dSRUVLIFNNQUxMIExFVFRFUiBSSE87TGw7MDtMOzs7OztOOzs7MDNBMTs7MDNBMQorMDNDMjtHUkVFSyBTTUFMTCBMRVRURVIgRklOQUwgU0lHTUE7TGw7MDtMOzs7OztOOzs7MDNBMzs7MDNBMworMDNDMztHUkVFSyBTTUFMTCBMRVRURVIgU0lHTUE7TGw7MDtMOzs7OztOOzs7MDNBMzs7MDNBMworMDNDNDtHUkVFSyBTTUFMTCBMRVRURVIgVEFVO0xsOzA7TDs7Ozs7Tjs7OzAzQTQ7OzAzQTQKKzAzQzU7R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT047TGw7MDtMOzs7OztOOzs7MDNBNTs7MDNBNQorMDNDNjtHUkVFSyBTTUFMTCBMRVRURVIgUEhJO0xsOzA7TDs7Ozs7Tjs7OzAzQTY7OzAzQTYKKzAzQzc7R1JFRUsgU01BTEwgTEVUVEVSIENISTtMbDswO0w7Ozs7O047OzswM0E3OzswM0E3CiswM0M4O0dSRUVLIFNNQUxMIExFVFRFUiBQU0k7TGw7MDtMOzs7OztOOzs7MDNBODs7MDNBOAorMDNDOTtHUkVFSyBTTUFMTCBMRVRURVIgT01FR0E7TGw7MDtMOzs7OztOOzs7MDNBOTs7MDNBOQorMDNDQTtHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIERJQUxZVElLQTtMbDswO0w7MDNCOSAwMzA4Ozs7O047R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgRElBRVJFU0lTOzswM0FBOzswM0FBCiswM0NCO0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggRElBTFlUSUtBO0xsOzA7TDswM0M1IDAzMDg7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBESUFFUkVTSVM7OzAzQUI7OzAzQUIKKzAzQ0M7R1JFRUsgU01BTEwgTEVUVEVSIE9NSUNST04gV0lUSCBUT05PUztMbDswO0w7MDNCRiAwMzAxOzs7O047R1JFRUsgU01BTEwgTEVUVEVSIE9NSUNST04gVE9OT1M7OzAzOEM7OzAzOEMKKzAzQ0Q7R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBUT05PUztMbDswO0w7MDNDNSAwMzAxOzs7O047R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gVE9OT1M7OzAzOEU7OzAzOEUKKzAzQ0U7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggVE9OT1M7TGw7MDtMOzAzQzkgMDMwMTs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBUT05PUzs7MDM4Rjs7MDM4RgorMDNEMDtHUkVFSyBCRVRBIFNZTUJPTDtMbDswO0w7PGNvbXBhdD4gMDNCMjs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBDVVJMRUQgQkVUQTs7MDM5Mjs7MDM5MgorMDNEMTtHUkVFSyBUSEVUQSBTWU1CT0w7TGw7MDtMOzxjb21wYXQ+IDAzQjg7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgU0NSSVBUIFRIRVRBOzswMzk4OzswMzk4CiswM0QyO0dSRUVLIFVQU0lMT04gV0lUSCBIT09LIFNZTUJPTDtMdTswO0w7PGNvbXBhdD4gMDNBNTs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gSE9PSzs7OzsKKzAzRDM7R1JFRUsgVVBTSUxPTiBXSVRIIEFDVVRFIEFORCBIT09LIFNZTUJPTDtMdTswO0w7MDNEMiAwMzAxOzs7O047R1JFRUsgQ0FQSVRBTCBMRVRURVIgVVBTSUxPTiBIT09LIFRPTk9TOzs7OworMDNENDtHUkVFSyBVUFNJTE9OIFdJVEggRElBRVJFU0lTIEFORCBIT09LIFNZTUJPTDtMdTswO0w7MDNEMiAwMzA4Ozs7O047R1JFRUsgQ0FQSVRBTCBMRVRURVIgVVBTSUxPTiBIT09LIERJQUVSRVNJUzs7OzsKKzAzRDU7R1JFRUsgUEhJIFNZTUJPTDtMbDswO0w7PGNvbXBhdD4gMDNDNjs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBTQ1JJUFQgUEhJOzswM0E2OzswM0E2CiswM0Q2O0dSRUVLIFBJIFNZTUJPTDtMbDswO0w7PGNvbXBhdD4gMDNDMDs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBQSTs7MDNBMDs7MDNBMAorMDNENztHUkVFSyBLQUkgU1lNQk9MO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswM0Q4O0dSRUVLIExFVFRFUiBBUkNIQUlDIEtPUFBBO0x1OzA7TDs7Ozs7Tjs7Kjs7MDNEOTsKKzAzRDk7R1JFRUsgU01BTEwgTEVUVEVSIEFSQ0hBSUMgS09QUEE7TGw7MDtMOzs7OztOOzsqOzAzRDg7OzAzRDgKKzAzREE7R1JFRUsgTEVUVEVSIFNUSUdNQTtMdTswO0w7Ozs7O047R1JFRUsgQ0FQSVRBTCBMRVRURVIgU1RJR01BOzs7MDNEQjsKKzAzREI7R1JFRUsgU01BTEwgTEVUVEVSIFNUSUdNQTtMbDswO0w7Ozs7O047OzswM0RBOzswM0RBCiswM0RDO0dSRUVLIExFVFRFUiBESUdBTU1BO0x1OzA7TDs7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBESUdBTU1BOzs7MDNERDsKKzAzREQ7R1JFRUsgU01BTEwgTEVUVEVSIERJR0FNTUE7TGw7MDtMOzs7OztOOzs7MDNEQzs7MDNEQworMDNERTtHUkVFSyBMRVRURVIgS09QUEE7THU7MDtMOzs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIEtPUFBBOzs7MDNERjsKKzAzREY7R1JFRUsgU01BTEwgTEVUVEVSIEtPUFBBO0xsOzA7TDs7Ozs7Tjs7OzAzREU7OzAzREUKKzAzRTA7R1JFRUsgTEVUVEVSIFNBTVBJO0x1OzA7TDs7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBTQU1QSTs7OzAzRTE7CiswM0UxO0dSRUVLIFNNQUxMIExFVFRFUiBTQU1QSTtMbDswO0w7Ozs7O047OzswM0UwOzswM0UwCiswM0UyO0NPUFRJQyBDQVBJVEFMIExFVFRFUiBTSEVJO0x1OzA7TDs7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBTSEVJOzs7MDNFMzsKKzAzRTM7Q09QVElDIFNNQUxMIExFVFRFUiBTSEVJO0xsOzA7TDs7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgU0hFSTs7MDNFMjs7MDNFMgorMDNFNDtDT1BUSUMgQ0FQSVRBTCBMRVRURVIgRkVJO0x1OzA7TDs7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBGRUk7OzswM0U1OworMDNFNTtDT1BUSUMgU01BTEwgTEVUVEVSIEZFSTtMbDswO0w7Ozs7O047R1JFRUsgU01BTEwgTEVUVEVSIEZFSTs7MDNFNDs7MDNFNAorMDNFNjtDT1BUSUMgQ0FQSVRBTCBMRVRURVIgS0hFSTtMdTswO0w7Ozs7O047R1JFRUsgQ0FQSVRBTCBMRVRURVIgS0hFSTs7OzAzRTc7CiswM0U3O0NPUFRJQyBTTUFMTCBMRVRURVIgS0hFSTtMbDswO0w7Ozs7O047R1JFRUsgU01BTEwgTEVUVEVSIEtIRUk7OzAzRTY7OzAzRTYKKzAzRTg7Q09QVElDIENBUElUQUwgTEVUVEVSIEhPUkk7THU7MDtMOzs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIEhPUkk7OzswM0U5OworMDNFOTtDT1BUSUMgU01BTEwgTEVUVEVSIEhPUkk7TGw7MDtMOzs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBIT1JJOzswM0U4OzswM0U4CiswM0VBO0NPUFRJQyBDQVBJVEFMIExFVFRFUiBHQU5HSUE7THU7MDtMOzs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIEdBTkdJQTs7OzAzRUI7CiswM0VCO0NPUFRJQyBTTUFMTCBMRVRURVIgR0FOR0lBO0xsOzA7TDs7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgR0FOR0lBOzswM0VBOzswM0VBCiswM0VDO0NPUFRJQyBDQVBJVEFMIExFVFRFUiBTSElNQTtMdTswO0w7Ozs7O047R1JFRUsgQ0FQSVRBTCBMRVRURVIgU0hJTUE7OzswM0VEOworMDNFRDtDT1BUSUMgU01BTEwgTEVUVEVSIFNISU1BO0xsOzA7TDs7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgU0hJTUE7OzAzRUM7OzAzRUMKKzAzRUU7Q09QVElDIENBUElUQUwgTEVUVEVSIERFSTtMdTswO0w7Ozs7O047R1JFRUsgQ0FQSVRBTCBMRVRURVIgREVJOzs7MDNFRjsKKzAzRUY7Q09QVElDIFNNQUxMIExFVFRFUiBERUk7TGw7MDtMOzs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBERUk7OzAzRUU7OzAzRUUKKzAzRjA7R1JFRUsgS0FQUEEgU1lNQk9MO0xsOzA7TDs8Y29tcGF0PiAwM0JBOzs7O047R1JFRUsgU01BTEwgTEVUVEVSIFNDUklQVCBLQVBQQTs7MDM5QTs7MDM5QQorMDNGMTtHUkVFSyBSSE8gU1lNQk9MO0xsOzA7TDs8Y29tcGF0PiAwM0MxOzs7O047R1JFRUsgU01BTEwgTEVUVEVSIFRBSUxFRCBSSE87OzAzQTE7OzAzQTEKKzAzRjI7R1JFRUsgTFVOQVRFIFNJR01BIFNZTUJPTDtMbDswO0w7PGNvbXBhdD4gMDNDMjs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBMVU5BVEUgU0lHTUE7OzAzQTM7OzAzQTMKKzAzRjM7R1JFRUsgTEVUVEVSIFlPVDtMbDswO0w7Ozs7O047Ozs7OworMDNGNDtHUkVFSyBDQVBJVEFMIFRIRVRBIFNZTUJPTDtMdTswO0w7PGNvbXBhdD4gMDM5ODs7OztOOzs7OzAzQjg7CiswM0Y1O0dSRUVLIExVTkFURSBFUFNJTE9OIFNZTUJPTDtMbDswO0w7PGNvbXBhdD4gMDNCNTs7OztOOzs7MDM5NTs7MDM5NQorMDNGNjtHUkVFSyBSRVZFUlNFRCBMVU5BVEUgRVBTSUxPTiBTWU1CT0w7U207MDtPTjs7Ozs7Tjs7Ozs7CiswNDAwO0NZUklMTElDIENBUElUQUwgTEVUVEVSIElFIFdJVEggR1JBVkU7THU7MDtMOzA0MTUgMDMwMDs7OztOOzs7OzA0NTA7CiswNDAxO0NZUklMTElDIENBUElUQUwgTEVUVEVSIElPO0x1OzA7TDswNDE1IDAzMDg7Ozs7Tjs7OzswNDUxOworMDQwMjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBESkU7THU7MDtMOzs7OztOOztTZXJib2Nyb2F0aWFuOzswNDUyOworMDQwMztDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBHSkU7THU7MDtMOzA0MTMgMDMwMTs7OztOOzs7OzA0NTM7CiswNDA0O0NZUklMTElDIENBUElUQUwgTEVUVEVSIFVLUkFJTklBTiBJRTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRTs7OzA0NTQ7CiswNDA1O0NZUklMTElDIENBUElUQUwgTEVUVEVSIERaRTtMdTswO0w7Ozs7O047Ozs7MDQ1NTsKKzA0MDY7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQllFTE9SVVNTSUFOLVVLUkFJTklBTiBJO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJOzs7MDQ1NjsKKzA0MDc7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUk7THU7MDtMOzA0MDYgMDMwODs7OztOOztVa3JhaW5pYW47OzA0NTc7CiswNDA4O0NZUklMTElDIENBUElUQUwgTEVUVEVSIEpFO0x1OzA7TDs7Ozs7Tjs7OzswNDU4OworMDQwOTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBMSkU7THU7MDtMOzs7OztOOzs7OzA0NTk7CiswNDBBO0NZUklMTElDIENBUElUQUwgTEVUVEVSIE5KRTtMdTswO0w7Ozs7O047Ozs7MDQ1QTsKKzA0MEI7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVFNIRTtMdTswO0w7Ozs7O047O1NlcmJvY3JvYXRpYW47OzA0NUI7CiswNDBDO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEtKRTtMdTswO0w7MDQxQSAwMzAxOzs7O047Ozs7MDQ1QzsKKzA0MEQ7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEdSQVZFO0x1OzA7TDswNDE4IDAzMDA7Ozs7Tjs7OzswNDVEOworMDQwRTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSE9SVCBVO0x1OzA7TDswNDIzIDAzMDY7Ozs7Tjs7QnllbG9ydXNzaWFuOzswNDVFOworMDQwRjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBEWkhFO0x1OzA7TDs7Ozs7Tjs7OzswNDVGOworMDQxMDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBBO0x1OzA7TDs7Ozs7Tjs7OzswNDMwOworMDQxMTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCRTtMdTswO0w7Ozs7O047Ozs7MDQzMTsKKzA0MTI7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVkU7THU7MDtMOzs7OztOOzs7OzA0MzI7CiswNDEzO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEdIRTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0U7OzswNDMzOworMDQxNDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBERTtMdTswO0w7Ozs7O047Ozs7MDQzNDsKKzA0MTU7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSUU7THU7MDtMOzs7OztOOzs7OzA0MzU7CiswNDE2O0NZUklMTElDIENBUElUQUwgTEVUVEVSIFpIRTtMdTswO0w7Ozs7O047Ozs7MDQzNjsKKzA0MTc7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkU7THU7MDtMOzs7OztOOzs7OzA0Mzc7CiswNDE4O0NZUklMTElDIENBUElUQUwgTEVUVEVSIEk7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIElJOzs7MDQzODsKKzA0MTk7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hPUlQgSTtMdTswO0w7MDQxOCAwMzA2Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hPUlQgSUk7OzswNDM5OworMDQxQTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQTtMdTswO0w7Ozs7O047Ozs7MDQzQTsKKzA0MUI7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRUw7THU7MDtMOzs7OztOOzs7OzA0M0I7CiswNDFDO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEVNO0x1OzA7TDs7Ozs7Tjs7OzswNDNDOworMDQxRDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTjtMdTswO0w7Ozs7O047Ozs7MDQzRDsKKzA0MUU7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgTztMdTswO0w7Ozs7O047Ozs7MDQzRTsKKzA0MUY7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgUEU7THU7MDtMOzs7OztOOzs7OzA0M0Y7CiswNDIwO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEVSO0x1OzA7TDs7Ozs7Tjs7OzswNDQwOworMDQyMTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUztMdTswO0w7Ozs7O047Ozs7MDQ0MTsKKzA0MjI7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVEU7THU7MDtMOzs7OztOOzs7OzA0NDI7CiswNDIzO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFU7THU7MDtMOzs7OztOOzs7OzA0NDM7CiswNDI0O0NZUklMTElDIENBUElUQUwgTEVUVEVSIEVGO0x1OzA7TDs7Ozs7Tjs7OzswNDQ0OworMDQyNTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBIQTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0hBOzs7MDQ0NTsKKzA0MjY7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVFNFO0x1OzA7TDs7Ozs7Tjs7OzswNDQ2OworMDQyNztDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBDSEU7THU7MDtMOzs7OztOOzs7OzA0NDc7CiswNDI4O0NZUklMTElDIENBUElUQUwgTEVUVEVSIFNIQTtMdTswO0w7Ozs7O047Ozs7MDQ0ODsKKzA0Mjk7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hDSEE7THU7MDtMOzs7OztOOzs7OzA0NDk7CiswNDJBO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEhBUkQgU0lHTjtMdTswO0w7Ozs7O047Ozs7MDQ0QTsKKzA0MkI7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUVSVTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUVSSTs7OzA0NEI7CiswNDJDO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFNPRlQgU0lHTjtMdTswO0w7Ozs7O047Ozs7MDQ0QzsKKzA0MkQ7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgUkVWRVJTRUQgRTs7OzA0NEQ7CiswNDJFO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFlVO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJVTs7OzA0NEU7CiswNDJGO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFlBO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJQTs7OzA0NEY7CiswNDMwO0NZUklMTElDIFNNQUxMIExFVFRFUiBBO0xsOzA7TDs7Ozs7Tjs7OzA0MTA7OzA0MTAKKzA0MzE7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEJFO0xsOzA7TDs7Ozs7Tjs7OzA0MTE7OzA0MTEKKzA0MzI7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFZFO0xsOzA7TDs7Ozs7Tjs7OzA0MTI7OzA0MTIKKzA0MzM7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEdIRTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEdFOzswNDEzOzswNDEzCiswNDM0O0NZUklMTElDIFNNQUxMIExFVFRFUiBERTtMbDswO0w7Ozs7O047OzswNDE0OzswNDE0CiswNDM1O0NZUklMTElDIFNNQUxMIExFVFRFUiBJRTtMbDswO0w7Ozs7O047OzswNDE1OzswNDE1CiswNDM2O0NZUklMTElDIFNNQUxMIExFVFRFUiBaSEU7TGw7MDtMOzs7OztOOzs7MDQxNjs7MDQxNgorMDQzNztDWVJJTExJQyBTTUFMTCBMRVRURVIgWkU7TGw7MDtMOzs7OztOOzs7MDQxNzs7MDQxNworMDQzODtDWVJJTExJQyBTTUFMTCBMRVRURVIgSTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIElJOzswNDE4OzswNDE4CiswNDM5O0NZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBJO0xsOzA7TDswNDM4IDAzMDY7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hPUlQgSUk7OzA0MTk7OzA0MTkKKzA0M0E7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBO0xsOzA7TDs7Ozs7Tjs7OzA0MUE7OzA0MUEKKzA0M0I7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEVMO0xsOzA7TDs7Ozs7Tjs7OzA0MUI7OzA0MUIKKzA0M0M7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEVNO0xsOzA7TDs7Ozs7Tjs7OzA0MUM7OzA0MUMKKzA0M0Q7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEVOO0xsOzA7TDs7Ozs7Tjs7OzA0MUQ7OzA0MUQKKzA0M0U7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIE87TGw7MDtMOzs7OztOOzs7MDQxRTs7MDQxRQorMDQzRjtDWVJJTExJQyBTTUFMTCBMRVRURVIgUEU7TGw7MDtMOzs7OztOOzs7MDQxRjs7MDQxRgorMDQ0MDtDWVJJTExJQyBTTUFMTCBMRVRURVIgRVI7TGw7MDtMOzs7OztOOzs7MDQyMDs7MDQyMAorMDQ0MTtDWVJJTExJQyBTTUFMTCBMRVRURVIgRVM7TGw7MDtMOzs7OztOOzs7MDQyMTs7MDQyMQorMDQ0MjtDWVJJTExJQyBTTUFMTCBMRVRURVIgVEU7TGw7MDtMOzs7OztOOzs7MDQyMjs7MDQyMgorMDQ0MztDWVJJTExJQyBTTUFMTCBMRVRURVIgVTtMbDswO0w7Ozs7O047OzswNDIzOzswNDIzCiswNDQ0O0NZUklMTElDIFNNQUxMIExFVFRFUiBFRjtMbDswO0w7Ozs7O047OzswNDI0OzswNDI0CiswNDQ1O0NZUklMTElDIFNNQUxMIExFVFRFUiBIQTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEtIQTs7MDQyNTs7MDQyNQorMDQ0NjtDWVJJTExJQyBTTUFMTCBMRVRURVIgVFNFO0xsOzA7TDs7Ozs7Tjs7OzA0MjY7OzA0MjYKKzA0NDc7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIENIRTtMbDswO0w7Ozs7O047OzswNDI3OzswNDI3CiswNDQ4O0NZUklMTElDIFNNQUxMIExFVFRFUiBTSEE7TGw7MDtMOzs7OztOOzs7MDQyODs7MDQyOAorMDQ0OTtDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hDSEE7TGw7MDtMOzs7OztOOzs7MDQyOTs7MDQyOQorMDQ0QTtDWVJJTExJQyBTTUFMTCBMRVRURVIgSEFSRCBTSUdOO0xsOzA7TDs7Ozs7Tjs7OzA0MkE7OzA0MkEKKzA0NEI7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFlFUlU7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBZRVJJOzswNDJCOzswNDJCCiswNDRDO0NZUklMTElDIFNNQUxMIExFVFRFUiBTT0ZUIFNJR047TGw7MDtMOzs7OztOOzs7MDQyQzs7MDQyQworMDQ0RDtDWVJJTExJQyBTTUFMTCBMRVRURVIgRTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFJFVkVSU0VEIEU7OzA0MkQ7OzA0MkQKKzA0NEU7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFlVO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgSVU7OzA0MkU7OzA0MkUKKzA0NEY7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFlBO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgSUE7OzA0MkY7OzA0MkYKKzA0NTA7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIElFIFdJVEggR1JBVkU7TGw7MDtMOzA0MzUgMDMwMDs7OztOOzs7MDQwMDs7MDQwMAorMDQ1MTtDWVJJTExJQyBTTUFMTCBMRVRURVIgSU87TGw7MDtMOzA0MzUgMDMwODs7OztOOzs7MDQwMTs7MDQwMQorMDQ1MjtDWVJJTExJQyBTTUFMTCBMRVRURVIgREpFO0xsOzA7TDs7Ozs7Tjs7U2VyYm9jcm9hdGlhbjswNDAyOzswNDAyCiswNDUzO0NZUklMTElDIFNNQUxMIExFVFRFUiBHSkU7TGw7MDtMOzA0MzMgMDMwMTs7OztOOzs7MDQwMzs7MDQwMworMDQ1NDtDWVJJTExJQyBTTUFMTCBMRVRURVIgVUtSQUlOSUFOIElFO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgRTs7MDQwNDs7MDQwNAorMDQ1NTtDWVJJTExJQyBTTUFMTCBMRVRURVIgRFpFO0xsOzA7TDs7Ozs7Tjs7OzA0MDU7OzA0MDUKKzA0NTY7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEJZRUxPUlVTU0lBTi1VS1JBSU5JQU4gSTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEk7OzA0MDY7OzA0MDYKKzA0NTc7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFlJO0xsOzA7TDswNDU2IDAzMDg7Ozs7Tjs7VWtyYWluaWFuOzA0MDc7OzA0MDcKKzA0NTg7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEpFO0xsOzA7TDs7Ozs7Tjs7OzA0MDg7OzA0MDgKKzA0NTk7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIExKRTtMbDswO0w7Ozs7O047OzswNDA5OzswNDA5CiswNDVBO0NZUklMTElDIFNNQUxMIExFVFRFUiBOSkU7TGw7MDtMOzs7OztOOzs7MDQwQTs7MDQwQQorMDQ1QjtDWVJJTExJQyBTTUFMTCBMRVRURVIgVFNIRTtMbDswO0w7Ozs7O047O1NlcmJvY3JvYXRpYW47MDQwQjs7MDQwQgorMDQ1QztDWVJJTExJQyBTTUFMTCBMRVRURVIgS0pFO0xsOzA7TDswNDNBIDAzMDE7Ozs7Tjs7OzA0MEM7OzA0MEMKKzA0NUQ7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEkgV0lUSCBHUkFWRTtMbDswO0w7MDQzOCAwMzAwOzs7O047OzswNDBEOzswNDBECiswNDVFO0NZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBVO0xsOzA7TDswNDQzIDAzMDY7Ozs7Tjs7QnllbG9ydXNzaWFuOzA0MEU7OzA0MEUKKzA0NUY7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIERaSEU7TGw7MDtMOzs7OztOOzs7MDQwRjs7MDQwRgorMDQ2MDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBPTUVHQTtMdTswO0w7Ozs7O047Ozs7MDQ2MTsKKzA0NjE7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIE9NRUdBO0xsOzA7TDs7Ozs7Tjs7OzA0NjA7OzA0NjAKKzA0NjI7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUFUO0x1OzA7TDs7Ozs7Tjs7OzswNDYzOworMDQ2MztDWVJJTExJQyBTTUFMTCBMRVRURVIgWUFUO0xsOzA7TDs7Ozs7Tjs7OzA0NjI7OzA0NjIKKzA0NjQ7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSU9USUZJRUQgRTtMdTswO0w7Ozs7O047Ozs7MDQ2NTsKKzA0NjU7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIElPVElGSUVEIEU7TGw7MDtMOzs7OztOOzs7MDQ2NDs7MDQ2NAorMDQ2NjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBMSVRUTEUgWVVTO0x1OzA7TDs7Ozs7Tjs7OzswNDY3OworMDQ2NztDWVJJTExJQyBTTUFMTCBMRVRURVIgTElUVExFIFlVUztMbDswO0w7Ozs7O047OzswNDY2OzswNDY2CiswNDY4O0NZUklMTElDIENBUElUQUwgTEVUVEVSIElPVElGSUVEIExJVFRMRSBZVVM7THU7MDtMOzs7OztOOzs7OzA0Njk7CiswNDY5O0NZUklMTElDIFNNQUxMIExFVFRFUiBJT1RJRklFRCBMSVRUTEUgWVVTO0xsOzA7TDs7Ozs7Tjs7OzA0Njg7OzA0NjgKKzA0NkE7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQklHIFlVUztMdTswO0w7Ozs7O047Ozs7MDQ2QjsKKzA0NkI7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEJJRyBZVVM7TGw7MDtMOzs7OztOOzs7MDQ2QTs7MDQ2QQorMDQ2QztDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJT1RJRklFRCBCSUcgWVVTO0x1OzA7TDs7Ozs7Tjs7OzswNDZEOworMDQ2RDtDWVJJTExJQyBTTUFMTCBMRVRURVIgSU9USUZJRUQgQklHIFlVUztMbDswO0w7Ozs7O047OzswNDZDOzswNDZDCiswNDZFO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEtTSTtMdTswO0w7Ozs7O047Ozs7MDQ2RjsKKzA0NkY7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEtTSTtMbDswO0w7Ozs7O047OzswNDZFOzswNDZFCiswNDcwO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFBTSTtMdTswO0w7Ozs7O047Ozs7MDQ3MTsKKzA0NzE7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFBTSTtMbDswO0w7Ozs7O047OzswNDcwOzswNDcwCiswNDcyO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEZJVEE7THU7MDtMOzs7OztOOzs7OzA0NzM7CiswNDczO0NZUklMTElDIFNNQUxMIExFVFRFUiBGSVRBO0xsOzA7TDs7Ozs7Tjs7OzA0NzI7OzA0NzIKKzA0NzQ7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSVpISVRTQTtMdTswO0w7Ozs7O047Ozs7MDQ3NTsKKzA0NzU7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIElaSElUU0E7TGw7MDtMOzs7OztOOzs7MDQ3NDs7MDQ3NAorMDQ3NjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJWkhJVFNBIFdJVEggRE9VQkxFIEdSQVZFIEFDQ0VOVDtMdTswO0w7MDQ3NCAwMzBGOzs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSVpISVRTQSBET1VCTEUgR1JBVkU7OzswNDc3OworMDQ3NztDWVJJTExJQyBTTUFMTCBMRVRURVIgSVpISVRTQSBXSVRIIERPVUJMRSBHUkFWRSBBQ0NFTlQ7TGw7MDtMOzA0NzUgMDMwRjs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBJWkhJVFNBIERPVUJMRSBHUkFWRTs7MDQ3Njs7MDQ3NgorMDQ3ODtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVSztMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVUsgRElHUkFQSDs7OzA0Nzk7CiswNDc5O0NZUklMTElDIFNNQUxMIExFVFRFUiBVSztMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFVLIERJR1JBUEg7OzA0Nzg7OzA0NzgKKzA0N0E7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgUk9VTkQgT01FR0E7THU7MDtMOzs7OztOOzs7OzA0N0I7CiswNDdCO0NZUklMTElDIFNNQUxMIExFVFRFUiBST1VORCBPTUVHQTtMbDswO0w7Ozs7O047OzswNDdBOzswNDdBCiswNDdDO0NZUklMTElDIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggVElUTE87THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIE9NRUdBIFRJVExPOzs7MDQ3RDsKKzA0N0Q7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggVElUTE87TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBPTUVHQSBUSVRMTzs7MDQ3Qzs7MDQ3QworMDQ3RTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBPVDtMdTswO0w7Ozs7O047Ozs7MDQ3RjsKKzA0N0Y7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIE9UO0xsOzA7TDs7Ozs7Tjs7OzA0N0U7OzA0N0UKKzA0ODA7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS09QUEE7THU7MDtMOzs7OztOOzs7OzA0ODE7CiswNDgxO0NZUklMTElDIFNNQUxMIExFVFRFUiBLT1BQQTtMbDswO0w7Ozs7O047OzswNDgwOzswNDgwCiswNDgyO0NZUklMTElDIFRIT1VTQU5EUyBTSUdOO1NvOzA7TDs7Ozs7Tjs7Ozs7CiswNDgzO0NPTUJJTklORyBDWVJJTExJQyBUSVRMTztNbjsyMzA7TlNNOzs7OztOO0NZUklMTElDIE5PTi1TUEFDSU5HIFRJVExPOzs7OworMDQ4NDtDT01CSU5JTkcgQ1lSSUxMSUMgUEFMQVRBTElaQVRJT047TW47MjMwO05TTTs7Ozs7TjtDWVJJTExJQyBOT04tU1BBQ0lORyBQQUxBVEFMSVpBVElPTjs7OzsKKzA0ODU7Q09NQklOSU5HIENZUklMTElDIERBU0lBIFBORVVNQVRBO01uOzIzMDtOU007Ozs7O047Q1lSSUxMSUMgTk9OLVNQQUNJTkcgREFTSUEgUE5FVU1BVEE7Ozs7CiswNDg2O0NPTUJJTklORyBDWVJJTExJQyBQU0lMSSBQTkVVTUFUQTtNbjsyMzA7TlNNOzs7OztOO0NZUklMTElDIE5PTi1TUEFDSU5HIFBTSUxJIFBORVVNQVRBOzs7OworMDQ4ODtDT01CSU5JTkcgQ1lSSUxMSUMgSFVORFJFRCBUSE9VU0FORFMgU0lHTjtNZTswO05TTTs7Ozs7Tjs7Ozs7CiswNDg5O0NPTUJJTklORyBDWVJJTExJQyBNSUxMSU9OUyBTSUdOO01lOzA7TlNNOzs7OztOOzs7OzsKKzA0OEE7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hPUlQgSSBXSVRIIFRBSUw7THU7MDtMOzs7OztOOzs7OzA0OEI7CiswNDhCO0NZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBJIFdJVEggVEFJTDtMbDswO0w7Ozs7O047OzswNDhBOzswNDhBCiswNDhDO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFNFTUlTT0ZUIFNJR047THU7MDtMOzs7OztOOzs7OzA0OEQ7CiswNDhEO0NZUklMTElDIFNNQUxMIExFVFRFUiBTRU1JU09GVCBTSUdOO0xsOzA7TDs7Ozs7Tjs7OzA0OEM7OzA0OEMKKzA0OEU7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRVIgV0lUSCBUSUNLO0x1OzA7TDs7Ozs7Tjs7OzswNDhGOworMDQ4RjtDWVJJTExJQyBTTUFMTCBMRVRURVIgRVIgV0lUSCBUSUNLO0xsOzA7TDs7Ozs7Tjs7OzA0OEU7OzA0OEUKKzA0OTA7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0hFIFdJVEggVVBUVVJOO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBHRSBXSVRIIFVQVFVSTjs7OzA0OTE7CiswNDkxO0NZUklMTElDIFNNQUxMIExFVFRFUiBHSEUgV0lUSCBVUFRVUk47TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBHRSBXSVRIIFVQVFVSTjs7MDQ5MDs7MDQ5MAorMDQ5MjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBHSEUgV0lUSCBTVFJPS0U7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEdFIEJBUjs7OzA0OTM7CiswNDkzO0NZUklMTElDIFNNQUxMIExFVFRFUiBHSEUgV0lUSCBTVFJPS0U7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBHRSBCQVI7OzA0OTI7OzA0OTIKKzA0OTQ7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0hFIFdJVEggTUlERExFIEhPT0s7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEdFIEhPT0s7OzswNDk1OworMDQ5NTtDWVJJTExJQyBTTUFMTCBMRVRURVIgR0hFIFdJVEggTUlERExFIEhPT0s7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBHRSBIT09LOzswNDk0OzswNDk0CiswNDk2O0NZUklMTElDIENBUElUQUwgTEVUVEVSIFpIRSBXSVRIIERFU0NFTkRFUjtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkhFIFdJVEggUklHSFQgREVTQ0VOREVSOzs7MDQ5NzsKKzA0OTc7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFpIRSBXSVRIIERFU0NFTkRFUjtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFpIRSBXSVRIIFJJR0hUIERFU0NFTkRFUjs7MDQ5Njs7MDQ5NgorMDQ5ODtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaRSBXSVRIIERFU0NFTkRFUjtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkUgQ0VESUxMQTs7OzA0OTk7CiswNDk5O0NZUklMTElDIFNNQUxMIExFVFRFUiBaRSBXSVRIIERFU0NFTkRFUjtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFpFIENFRElMTEE7OzA0OTg7OzA0OTgKKzA0OUE7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EgV0lUSCBERVNDRU5ERVI7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEtBIFdJVEggUklHSFQgREVTQ0VOREVSOzs7MDQ5QjsKKzA0OUI7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBIFdJVEggREVTQ0VOREVSO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EgV0lUSCBSSUdIVCBERVNDRU5ERVI7OzA0OUE7OzA0OUEKKzA0OUM7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EgV0lUSCBWRVJUSUNBTCBTVFJPS0U7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEtBIFZFUlRJQ0FMIEJBUjs7OzA0OUQ7CiswNDlEO0NZUklMTElDIFNNQUxMIExFVFRFUiBLQSBXSVRIIFZFUlRJQ0FMIFNUUk9LRTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBIFZFUlRJQ0FMIEJBUjs7MDQ5Qzs7MDQ5QworMDQ5RTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQSBXSVRIIFNUUk9LRTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EgQkFSOzs7MDQ5RjsKKzA0OUY7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBIFdJVEggU1RST0tFO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EgQkFSOzswNDlFOzswNDlFCiswNEEwO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEJBU0hLSVIgS0E7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFJFVkVSU0VEIEdFIEtBOzs7MDRBMTsKKzA0QTE7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEJBU0hLSVIgS0E7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBSRVZFUlNFRCBHRSBLQTs7MDRBMDs7MDRBMAorMDRBMjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTiBXSVRIIERFU0NFTkRFUjtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU4gV0lUSCBSSUdIVCBERVNDRU5ERVI7OzswNEEzOworMDRBMztDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4gV0lUSCBERVNDRU5ERVI7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBFTiBXSVRIIFJJR0hUIERFU0NFTkRFUjs7MDRBMjs7MDRBMgorMDRBNDtDWVJJTExJQyBDQVBJVEFMIExJR0FUVVJFIEVOIEdIRTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU4gR0U7OzswNEE1OworMDRBNTtDWVJJTExJQyBTTUFMTCBMSUdBVFVSRSBFTiBHSEU7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBFTiBHRTs7MDRBNDs7MDRBNAorMDRBNjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBQRSBXSVRIIE1JRERMRSBIT09LO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBQRSBIT09LO0Fia2hhc2lhbjs7MDRBNzsKKzA0QTc7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFBFIFdJVEggTUlERExFIEhPT0s7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBQRSBIT09LO0Fia2hhc2lhbjswNEE2OzswNEE2CiswNEE4O0NZUklMTElDIENBUElUQUwgTEVUVEVSIEFCS0hBU0lBTiBIQTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgTyBIT09LOzs7MDRBOTsKKzA0QTk7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEFCS0hBU0lBTiBIQTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIE8gSE9PSzs7MDRBODs7MDRBOAorMDRBQTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUyBXSVRIIERFU0NFTkRFUjtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRVMgQ0VESUxMQTs7OzA0QUI7CiswNEFCO0NZUklMTElDIFNNQUxMIExFVFRFUiBFUyBXSVRIIERFU0NFTkRFUjtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTIENFRElMTEE7OzA0QUE7OzA0QUEKKzA0QUM7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVEUgV0lUSCBERVNDRU5ERVI7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFRFIFdJVEggUklHSFQgREVTQ0VOREVSOzs7MDRBRDsKKzA0QUQ7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFRFIFdJVEggREVTQ0VOREVSO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgVEUgV0lUSCBSSUdIVCBERVNDRU5ERVI7OzA0QUM7OzA0QUMKKzA0QUU7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU1RSQUlHSFQgVTtMdTswO0w7Ozs7O047Ozs7MDRBRjsKKzA0QUY7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFNUUkFJR0hUIFU7TGw7MDtMOzs7OztOOzs7MDRBRTs7MDRBRQorMDRCMDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTVFJBSUdIVCBVIFdJVEggU1RST0tFO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTVFJBSUdIVCBVIEJBUjs7OzA0QjE7CiswNEIxO0NZUklMTElDIFNNQUxMIExFVFRFUiBTVFJBSUdIVCBVIFdJVEggU1RST0tFO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgU1RSQUlHSFQgVSBCQVI7OzA0QjA7OzA0QjAKKzA0QjI7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSEEgV0lUSCBERVNDRU5ERVI7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEtIQSBXSVRIIFJJR0hUIERFU0NFTkRFUjs7OzA0QjM7CiswNEIzO0NZUklMTElDIFNNQUxMIExFVFRFUiBIQSBXSVRIIERFU0NFTkRFUjtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEtIQSBXSVRIIFJJR0hUIERFU0NFTkRFUjs7MDRCMjs7MDRCMgorMDRCNDtDWVJJTExJQyBDQVBJVEFMIExJR0FUVVJFIFRFIFRTRTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVEUgVFNFO0Fia2hhc2lhbjs7MDRCNTsKKzA0QjU7Q1lSSUxMSUMgU01BTEwgTElHQVRVUkUgVEUgVFNFO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgVEUgVFNFO0Fia2hhc2lhbjswNEI0OzswNEI0CiswNEI2O0NZUklMTElDIENBUElUQUwgTEVUVEVSIENIRSBXSVRIIERFU0NFTkRFUjtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0hFIFdJVEggUklHSFQgREVTQ0VOREVSOzs7MDRCNzsKKzA0Qjc7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIENIRSBXSVRIIERFU0NFTkRFUjtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIENIRSBXSVRIIFJJR0hUIERFU0NFTkRFUjs7MDRCNjs7MDRCNgorMDRCODtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBDSEUgV0lUSCBWRVJUSUNBTCBTVFJPS0U7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIENIRSBWRVJUSUNBTCBCQVI7OzswNEI5OworMDRCOTtDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFIFdJVEggVkVSVElDQUwgU1RST0tFO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFIFZFUlRJQ0FMIEJBUjs7MDRCODs7MDRCOAorMDRCQTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSEhBO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBIOzs7MDRCQjsKKzA0QkI7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFNISEE7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBIOzswNEJBOzswNEJBCiswNEJDO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEFCS0hBU0lBTiBDSEU7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIElFIEhPT0s7OzswNEJEOworMDRCRDtDWVJJTExJQyBTTUFMTCBMRVRURVIgQUJLSEFTSUFOIENIRTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIElFIEhPT0s7OzA0QkM7OzA0QkMKKzA0QkU7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQUJLSEFTSUFOIENIRSBXSVRIIERFU0NFTkRFUjtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSUUgSE9PSyBPR09ORUs7OzswNEJGOworMDRCRjtDWVJJTExJQyBTTUFMTCBMRVRURVIgQUJLSEFTSUFOIENIRSBXSVRIIERFU0NFTkRFUjtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIElFIEhPT0sgT0dPTkVLOzswNEJFOzswNEJFCiswNEMwO0NZUklMTElDIExFVFRFUiBQQUxPQ0hLQTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgTEVUVEVSIEk7Ozs7CiswNEMxO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFpIRSBXSVRIIEJSRVZFO0x1OzA7TDswNDE2IDAzMDY7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSE9SVCBaSEU7OzswNEMyOworMDRDMjtDWVJJTExJQyBTTUFMTCBMRVRURVIgWkhFIFdJVEggQlJFVkU7TGw7MDtMOzA0MzYgMDMwNjs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBaSEU7OzA0QzE7OzA0QzEKKzA0QzM7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EgV0lUSCBIT09LO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQSBIT09LOzs7MDRDNDsKKzA0QzQ7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBIFdJVEggSE9PSztMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBIEhPT0s7OzA0QzM7OzA0QzMKKzA0QzU7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRUwgV0lUSCBUQUlMO0x1OzA7TDs7Ozs7Tjs7OzswNEM2OworMDRDNjtDWVJJTExJQyBTTUFMTCBMRVRURVIgRUwgV0lUSCBUQUlMO0xsOzA7TDs7Ozs7Tjs7OzA0QzU7OzA0QzUKKzA0Qzc7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU4gV0lUSCBIT09LO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTiBIT09LOzs7MDRDODsKKzA0Qzg7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEVOIFdJVEggSE9PSztMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEVOIEhPT0s7OzA0Qzc7OzA0QzcKKzA0Qzk7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU4gV0lUSCBUQUlMO0x1OzA7TDs7Ozs7Tjs7OzswNENBOworMDRDQTtDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4gV0lUSCBUQUlMO0xsOzA7TDs7Ozs7Tjs7OzA0Qzk7OzA0QzkKKzA0Q0I7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0hBS0FTU0lBTiBDSEU7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIENIRSBXSVRIIExFRlQgREVTQ0VOREVSOzs7MDRDQzsKKzA0Q0M7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEtIQUtBU1NJQU4gQ0hFO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFIFdJVEggTEVGVCBERVNDRU5ERVI7OzA0Q0I7OzA0Q0IKKzA0Q0Q7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU0gV0lUSCBUQUlMO0x1OzA7TDs7Ozs7Tjs7OzswNENFOworMDRDRTtDWVJJTExJQyBTTUFMTCBMRVRURVIgRU0gV0lUSCBUQUlMO0xsOzA7TDs7Ozs7Tjs7OzA0Q0Q7OzA0Q0QKKzA0RDA7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEJSRVZFO0x1OzA7TDswNDEwIDAzMDY7Ozs7Tjs7OzswNEQxOworMDREMTtDWVJJTExJQyBTTUFMTCBMRVRURVIgQSBXSVRIIEJSRVZFO0xsOzA7TDswNDMwIDAzMDY7Ozs7Tjs7OzA0RDA7OzA0RDAKKzA0RDI7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUztMdTswO0w7MDQxMCAwMzA4Ozs7O047Ozs7MDREMzsKKzA0RDM7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVM7TGw7MDtMOzA0MzAgMDMwODs7OztOOzs7MDREMjs7MDREMgorMDRENDtDWVJJTExJQyBDQVBJVEFMIExJR0FUVVJFIEEgSUU7THU7MDtMOzs7OztOOzs7OzA0RDU7CiswNEQ1O0NZUklMTElDIFNNQUxMIExJR0FUVVJFIEEgSUU7TGw7MDtMOzs7OztOOzs7MDRENDs7MDRENAorMDRENjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJRSBXSVRIIEJSRVZFO0x1OzA7TDswNDE1IDAzMDY7Ozs7Tjs7OzswNEQ3OworMDRENztDWVJJTExJQyBTTUFMTCBMRVRURVIgSUUgV0lUSCBCUkVWRTtMbDswO0w7MDQzNSAwMzA2Ozs7O047OzswNEQ2OzswNEQ2CiswNEQ4O0NZUklMTElDIENBUElUQUwgTEVUVEVSIFNDSFdBO0x1OzA7TDs7Ozs7Tjs7OzswNEQ5OworMDREOTtDWVJJTExJQyBTTUFMTCBMRVRURVIgU0NIV0E7TGw7MDtMOzs7OztOOzs7MDREODs7MDREOAorMDREQTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTQ0hXQSBXSVRIIERJQUVSRVNJUztMdTswO0w7MDREOCAwMzA4Ozs7O047Ozs7MDREQjsKKzA0REI7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFNDSFdBIFdJVEggRElBRVJFU0lTO0xsOzA7TDswNEQ5IDAzMDg7Ozs7Tjs7OzA0REE7OzA0REEKKzA0REM7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkhFIFdJVEggRElBRVJFU0lTO0x1OzA7TDswNDE2IDAzMDg7Ozs7Tjs7OzswNEREOworMDRERDtDWVJJTExJQyBTTUFMTCBMRVRURVIgWkhFIFdJVEggRElBRVJFU0lTO0xsOzA7TDswNDM2IDAzMDg7Ozs7Tjs7OzA0REM7OzA0REMKKzA0REU7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkUgV0lUSCBESUFFUkVTSVM7THU7MDtMOzA0MTcgMDMwODs7OztOOzs7OzA0REY7CiswNERGO0NZUklMTElDIFNNQUxMIExFVFRFUiBaRSBXSVRIIERJQUVSRVNJUztMbDswO0w7MDQzNyAwMzA4Ozs7O047OzswNERFOzswNERFCiswNEUwO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEFCS0hBU0lBTiBEWkU7THU7MDtMOzs7OztOOzs7OzA0RTE7CiswNEUxO0NZUklMTElDIFNNQUxMIExFVFRFUiBBQktIQVNJQU4gRFpFO0xsOzA7TDs7Ozs7Tjs7OzA0RTA7OzA0RTAKKzA0RTI7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSSBXSVRIIE1BQ1JPTjtMdTswO0w7MDQxOCAwMzA0Ozs7O047Ozs7MDRFMzsKKzA0RTM7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEkgV0lUSCBNQUNST047TGw7MDtMOzA0MzggMDMwNDs7OztOOzs7MDRFMjs7MDRFMgorMDRFNDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTO0x1OzA7TDswNDE4IDAzMDg7Ozs7Tjs7OzswNEU1OworMDRFNTtDWVJJTExJQyBTTUFMTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUztMbDswO0w7MDQzOCAwMzA4Ozs7O047OzswNEU0OzswNEU0CiswNEU2O0NZUklMTElDIENBUElUQUwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVM7THU7MDtMOzA0MUUgMDMwODs7OztOOzs7OzA0RTc7CiswNEU3O0NZUklMTElDIFNNQUxMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTO0xsOzA7TDswNDNFIDAzMDg7Ozs7Tjs7OzA0RTY7OzA0RTYKKzA0RTg7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQkFSUkVEIE87THU7MDtMOzs7OztOOzs7OzA0RTk7CiswNEU5O0NZUklMTElDIFNNQUxMIExFVFRFUiBCQVJSRUQgTztMbDswO0w7Ozs7O047OzswNEU4OzswNEU4CiswNEVBO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEJBUlJFRCBPIFdJVEggRElBRVJFU0lTO0x1OzA7TDswNEU4IDAzMDg7Ozs7Tjs7OzswNEVCOworMDRFQjtDWVJJTExJQyBTTUFMTCBMRVRURVIgQkFSUkVEIE8gV0lUSCBESUFFUkVTSVM7TGw7MDtMOzA0RTkgMDMwODs7OztOOzs7MDRFQTs7MDRFQQorMDRFQztDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTO0x1OzA7TDswNDJEIDAzMDg7Ozs7Tjs7OzswNEVEOworMDRFRDtDWVJJTExJQyBTTUFMTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUztMbDswO0w7MDQ0RCAwMzA4Ozs7O047OzswNEVDOzswNEVDCiswNEVFO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFUgV0lUSCBNQUNST047THU7MDtMOzA0MjMgMDMwNDs7OztOOzs7OzA0RUY7CiswNEVGO0NZUklMTElDIFNNQUxMIExFVFRFUiBVIFdJVEggTUFDUk9OO0xsOzA7TDswNDQzIDAzMDQ7Ozs7Tjs7OzA0RUU7OzA0RUUKKzA0RjA7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUztMdTswO0w7MDQyMyAwMzA4Ozs7O047Ozs7MDRGMTsKKzA0RjE7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVM7TGw7MDtMOzA0NDMgMDMwODs7OztOOzs7MDRGMDs7MDRGMAorMDRGMjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVIFdJVEggRE9VQkxFIEFDVVRFO0x1OzA7TDswNDIzIDAzMEI7Ozs7Tjs7OzswNEYzOworMDRGMztDWVJJTExJQyBTTUFMTCBMRVRURVIgVSBXSVRIIERPVUJMRSBBQ1VURTtMbDswO0w7MDQ0MyAwMzBCOzs7O047OzswNEYyOzswNEYyCiswNEY0O0NZUklMTElDIENBUElUQUwgTEVUVEVSIENIRSBXSVRIIERJQUVSRVNJUztMdTswO0w7MDQyNyAwMzA4Ozs7O047Ozs7MDRGNTsKKzA0RjU7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIENIRSBXSVRIIERJQUVSRVNJUztMbDswO0w7MDQ0NyAwMzA4Ozs7O047OzswNEY0OzswNEY0CiswNEY4O0NZUklMTElDIENBUElUQUwgTEVUVEVSIFlFUlUgV0lUSCBESUFFUkVTSVM7THU7MDtMOzA0MkIgMDMwODs7OztOOzs7OzA0Rjk7CiswNEY5O0NZUklMTElDIFNNQUxMIExFVFRFUiBZRVJVIFdJVEggRElBRVJFU0lTO0xsOzA7TDswNDRCIDAzMDg7Ozs7Tjs7OzA0Rjg7OzA0RjgKKzA1MDA7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS09NSSBERTtMdTswO0w7Ozs7O047Ozs7MDUwMTsKKzA1MDE7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEtPTUkgREU7TGw7MDtMOzs7OztOOzs7MDUwMDs7MDUwMAorMDUwMjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLT01JIERKRTtMdTswO0w7Ozs7O047Ozs7MDUwMzsKKzA1MDM7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEtPTUkgREpFO0xsOzA7TDs7Ozs7Tjs7OzA1MDI7OzA1MDIKKzA1MDQ7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS09NSSBaSkU7THU7MDtMOzs7OztOOzs7OzA1MDU7CiswNTA1O0NZUklMTElDIFNNQUxMIExFVFRFUiBLT01JIFpKRTtMbDswO0w7Ozs7O047OzswNTA0OzswNTA0CiswNTA2O0NZUklMTElDIENBUElUQUwgTEVUVEVSIEtPTUkgRFpKRTtMdTswO0w7Ozs7O047Ozs7MDUwNzsKKzA1MDc7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEtPTUkgRFpKRTtMbDswO0w7Ozs7O047OzswNTA2OzswNTA2CiswNTA4O0NZUklMTElDIENBUElUQUwgTEVUVEVSIEtPTUkgTEpFO0x1OzA7TDs7Ozs7Tjs7OzswNTA5OworMDUwOTtDWVJJTExJQyBTTUFMTCBMRVRURVIgS09NSSBMSkU7TGw7MDtMOzs7OztOOzs7MDUwODs7MDUwOAorMDUwQTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLT01JIE5KRTtMdTswO0w7Ozs7O047Ozs7MDUwQjsKKzA1MEI7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEtPTUkgTkpFO0xsOzA7TDs7Ozs7Tjs7OzA1MEE7OzA1MEEKKzA1MEM7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS09NSSBTSkU7THU7MDtMOzs7OztOOzs7OzA1MEQ7CiswNTBEO0NZUklMTElDIFNNQUxMIExFVFRFUiBLT01JIFNKRTtMbDswO0w7Ozs7O047OzswNTBDOzswNTBDCiswNTBFO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEtPTUkgVEpFO0x1OzA7TDs7Ozs7Tjs7OzswNTBGOworMDUwRjtDWVJJTExJQyBTTUFMTCBMRVRURVIgS09NSSBUSkU7TGw7MDtMOzs7OztOOzs7MDUwRTs7MDUwRQorMDUzMTtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBBWUI7THU7MDtMOzs7OztOOzs7OzA1NjE7CiswNTMyO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIEJFTjtMdTswO0w7Ozs7O047Ozs7MDU2MjsKKzA1MzM7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgR0lNO0x1OzA7TDs7Ozs7Tjs7OzswNTYzOworMDUzNDtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBEQTtMdTswO0w7Ozs7O047Ozs7MDU2NDsKKzA1MzU7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgRUNIO0x1OzA7TDs7Ozs7Tjs7OzswNTY1OworMDUzNjtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBaQTtMdTswO0w7Ozs7O047Ozs7MDU2NjsKKzA1Mzc7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgRUg7THU7MDtMOzs7OztOOzs7OzA1Njc7CiswNTM4O0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIEVUO0x1OzA7TDs7Ozs7Tjs7OzswNTY4OworMDUzOTtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBUTztMdTswO0w7Ozs7O047Ozs7MDU2OTsKKzA1M0E7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgWkhFO0x1OzA7TDs7Ozs7Tjs7OzswNTZBOworMDUzQjtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBJTkk7THU7MDtMOzs7OztOOzs7OzA1NkI7CiswNTNDO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIExJV047THU7MDtMOzs7OztOOzs7OzA1NkM7CiswNTNEO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIFhFSDtMdTswO0w7Ozs7O047Ozs7MDU2RDsKKzA1M0U7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgQ0E7THU7MDtMOzs7OztOOzs7OzA1NkU7CiswNTNGO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIEtFTjtMdTswO0w7Ozs7O047Ozs7MDU2RjsKKzA1NDA7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgSE87THU7MDtMOzs7OztOOzs7OzA1NzA7CiswNTQxO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIEpBO0x1OzA7TDs7Ozs7Tjs7OzswNTcxOworMDU0MjtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBHSEFEO0x1OzA7TDs7Ozs7TjtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBMQUQ7OzswNTcyOworMDU0MztBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBDSEVIO0x1OzA7TDs7Ozs7Tjs7OzswNTczOworMDU0NDtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBNRU47THU7MDtMOzs7OztOOzs7OzA1NzQ7CiswNTQ1O0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIFlJO0x1OzA7TDs7Ozs7Tjs7OzswNTc1OworMDU0NjtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBOT1c7THU7MDtMOzs7OztOOzs7OzA1NzY7CiswNTQ3O0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIFNIQTtMdTswO0w7Ozs7O047Ozs7MDU3NzsKKzA1NDg7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgVk87THU7MDtMOzs7OztOOzs7OzA1Nzg7CiswNTQ5O0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIENIQTtMdTswO0w7Ozs7O047Ozs7MDU3OTsKKzA1NEE7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgUEVIO0x1OzA7TDs7Ozs7Tjs7OzswNTdBOworMDU0QjtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBKSEVIO0x1OzA7TDs7Ozs7Tjs7OzswNTdCOworMDU0QztBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBSQTtMdTswO0w7Ozs7O047Ozs7MDU3QzsKKzA1NEQ7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgU0VIO0x1OzA7TDs7Ozs7Tjs7OzswNTdEOworMDU0RTtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBWRVc7THU7MDtMOzs7OztOOzs7OzA1N0U7CiswNTRGO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIFRJV047THU7MDtMOzs7OztOOzs7OzA1N0Y7CiswNTUwO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIFJFSDtMdTswO0w7Ozs7O047Ozs7MDU4MDsKKzA1NTE7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgQ087THU7MDtMOzs7OztOOzs7OzA1ODE7CiswNTUyO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIFlJV047THU7MDtMOzs7OztOOzs7OzA1ODI7CiswNTUzO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIFBJV1I7THU7MDtMOzs7OztOOzs7OzA1ODM7CiswNTU0O0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIEtFSDtMdTswO0w7Ozs7O047Ozs7MDU4NDsKKzA1NTU7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgT0g7THU7MDtMOzs7OztOOzs7OzA1ODU7CiswNTU2O0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIEZFSDtMdTswO0w7Ozs7O047Ozs7MDU4NjsKKzA1NTk7QVJNRU5JQU4gTU9ESUZJRVIgTEVUVEVSIExFRlQgSEFMRiBSSU5HO0xtOzA7TDs7Ozs7Tjs7Ozs7CiswNTVBO0FSTUVOSUFOIEFQT1NUUk9QSEU7UG87MDtMOzs7OztOO0FSTUVOSUFOIE1PRElGSUVSIExFVFRFUiBSSUdIVCBIQUxGIFJJTkc7Ozs7CiswNTVCO0FSTUVOSUFOIEVNUEhBU0lTIE1BUks7UG87MDtMOzs7OztOOzs7OzsKKzA1NUM7QVJNRU5JQU4gRVhDTEFNQVRJT04gTUFSSztQbzswO0w7Ozs7O047Ozs7OworMDU1RDtBUk1FTklBTiBDT01NQTtQbzswO0w7Ozs7O047Ozs7OworMDU1RTtBUk1FTklBTiBRVUVTVElPTiBNQVJLO1BvOzA7TDs7Ozs7Tjs7Ozs7CiswNTVGO0FSTUVOSUFOIEFCQlJFVklBVElPTiBNQVJLO1BvOzA7TDs7Ozs7Tjs7Ozs7CiswNTYxO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBBWUI7TGw7MDtMOzs7OztOOzs7MDUzMTs7MDUzMQorMDU2MjtBUk1FTklBTiBTTUFMTCBMRVRURVIgQkVOO0xsOzA7TDs7Ozs7Tjs7OzA1MzI7OzA1MzIKKzA1NjM7QVJNRU5JQU4gU01BTEwgTEVUVEVSIEdJTTtMbDswO0w7Ozs7O047OzswNTMzOzswNTMzCiswNTY0O0FSTUVOSUFOIFNNQUxMIExFVFRFUiBEQTtMbDswO0w7Ozs7O047OzswNTM0OzswNTM0CiswNTY1O0FSTUVOSUFOIFNNQUxMIExFVFRFUiBFQ0g7TGw7MDtMOzs7OztOOzs7MDUzNTs7MDUzNQorMDU2NjtBUk1FTklBTiBTTUFMTCBMRVRURVIgWkE7TGw7MDtMOzs7OztOOzs7MDUzNjs7MDUzNgorMDU2NztBUk1FTklBTiBTTUFMTCBMRVRURVIgRUg7TGw7MDtMOzs7OztOOzs7MDUzNzs7MDUzNworMDU2ODtBUk1FTklBTiBTTUFMTCBMRVRURVIgRVQ7TGw7MDtMOzs7OztOOzs7MDUzODs7MDUzOAorMDU2OTtBUk1FTklBTiBTTUFMTCBMRVRURVIgVE87TGw7MDtMOzs7OztOOzs7MDUzOTs7MDUzOQorMDU2QTtBUk1FTklBTiBTTUFMTCBMRVRURVIgWkhFO0xsOzA7TDs7Ozs7Tjs7OzA1M0E7OzA1M0EKKzA1NkI7QVJNRU5JQU4gU01BTEwgTEVUVEVSIElOSTtMbDswO0w7Ozs7O047OzswNTNCOzswNTNCCiswNTZDO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBMSVdOO0xsOzA7TDs7Ozs7Tjs7OzA1M0M7OzA1M0MKKzA1NkQ7QVJNRU5JQU4gU01BTEwgTEVUVEVSIFhFSDtMbDswO0w7Ozs7O047OzswNTNEOzswNTNECiswNTZFO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBDQTtMbDswO0w7Ozs7O047OzswNTNFOzswNTNFCiswNTZGO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBLRU47TGw7MDtMOzs7OztOOzs7MDUzRjs7MDUzRgorMDU3MDtBUk1FTklBTiBTTUFMTCBMRVRURVIgSE87TGw7MDtMOzs7OztOOzs7MDU0MDs7MDU0MAorMDU3MTtBUk1FTklBTiBTTUFMTCBMRVRURVIgSkE7TGw7MDtMOzs7OztOOzs7MDU0MTs7MDU0MQorMDU3MjtBUk1FTklBTiBTTUFMTCBMRVRURVIgR0hBRDtMbDswO0w7Ozs7O047QVJNRU5JQU4gU01BTEwgTEVUVEVSIExBRDs7MDU0Mjs7MDU0MgorMDU3MztBUk1FTklBTiBTTUFMTCBMRVRURVIgQ0hFSDtMbDswO0w7Ozs7O047OzswNTQzOzswNTQzCiswNTc0O0FSTUVOSUFOIFNNQUxMIExFVFRFUiBNRU47TGw7MDtMOzs7OztOOzs7MDU0NDs7MDU0NAorMDU3NTtBUk1FTklBTiBTTUFMTCBMRVRURVIgWUk7TGw7MDtMOzs7OztOOzs7MDU0NTs7MDU0NQorMDU3NjtBUk1FTklBTiBTTUFMTCBMRVRURVIgTk9XO0xsOzA7TDs7Ozs7Tjs7OzA1NDY7OzA1NDYKKzA1Nzc7QVJNRU5JQU4gU01BTEwgTEVUVEVSIFNIQTtMbDswO0w7Ozs7O047OzswNTQ3OzswNTQ3CiswNTc4O0FSTUVOSUFOIFNNQUxMIExFVFRFUiBWTztMbDswO0w7Ozs7O047OzswNTQ4OzswNTQ4CiswNTc5O0FSTUVOSUFOIFNNQUxMIExFVFRFUiBDSEE7TGw7MDtMOzs7OztOOzs7MDU0OTs7MDU0OQorMDU3QTtBUk1FTklBTiBTTUFMTCBMRVRURVIgUEVIO0xsOzA7TDs7Ozs7Tjs7OzA1NEE7OzA1NEEKKzA1N0I7QVJNRU5JQU4gU01BTEwgTEVUVEVSIEpIRUg7TGw7MDtMOzs7OztOOzs7MDU0Qjs7MDU0QgorMDU3QztBUk1FTklBTiBTTUFMTCBMRVRURVIgUkE7TGw7MDtMOzs7OztOOzs7MDU0Qzs7MDU0QworMDU3RDtBUk1FTklBTiBTTUFMTCBMRVRURVIgU0VIO0xsOzA7TDs7Ozs7Tjs7OzA1NEQ7OzA1NEQKKzA1N0U7QVJNRU5JQU4gU01BTEwgTEVUVEVSIFZFVztMbDswO0w7Ozs7O047OzswNTRFOzswNTRFCiswNTdGO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBUSVdOO0xsOzA7TDs7Ozs7Tjs7OzA1NEY7OzA1NEYKKzA1ODA7QVJNRU5JQU4gU01BTEwgTEVUVEVSIFJFSDtMbDswO0w7Ozs7O047OzswNTUwOzswNTUwCiswNTgxO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBDTztMbDswO0w7Ozs7O047OzswNTUxOzswNTUxCiswNTgyO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBZSVdOO0xsOzA7TDs7Ozs7Tjs7OzA1NTI7OzA1NTIKKzA1ODM7QVJNRU5JQU4gU01BTEwgTEVUVEVSIFBJV1I7TGw7MDtMOzs7OztOOzs7MDU1Mzs7MDU1MworMDU4NDtBUk1FTklBTiBTTUFMTCBMRVRURVIgS0VIO0xsOzA7TDs7Ozs7Tjs7OzA1NTQ7OzA1NTQKKzA1ODU7QVJNRU5JQU4gU01BTEwgTEVUVEVSIE9IO0xsOzA7TDs7Ozs7Tjs7OzA1NTU7OzA1NTUKKzA1ODY7QVJNRU5JQU4gU01BTEwgTEVUVEVSIEZFSDtMbDswO0w7Ozs7O047OzswNTU2OzswNTU2CiswNTg3O0FSTUVOSUFOIFNNQUxMIExJR0FUVVJFIEVDSCBZSVdOO0xsOzA7TDs8Y29tcGF0PiAwNTY1IDA1ODI7Ozs7Tjs7Ozs7CiswNTg5O0FSTUVOSUFOIEZVTEwgU1RPUDtQbzswO0w7Ozs7O047QVJNRU5JQU4gUEVSSU9EOzs7OworMDU4QTtBUk1FTklBTiBIWVBIRU47UGQ7MDtPTjs7Ozs7Tjs7Ozs7CiswNTkxO0hFQlJFVyBBQ0NFTlQgRVROQUhUQTtNbjsyMjA7TlNNOzs7OztOOzs7OzsKKzA1OTI7SEVCUkVXIEFDQ0VOVCBTRUdPTDtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA1OTM7SEVCUkVXIEFDQ0VOVCBTSEFMU0hFTEVUO01uOzIzMDtOU007Ozs7O047Ozs7OworMDU5NDtIRUJSRVcgQUNDRU5UIFpBUUVGIFFBVEFOO01uOzIzMDtOU007Ozs7O047Ozs7OworMDU5NTtIRUJSRVcgQUNDRU5UIFpBUUVGIEdBRE9MO01uOzIzMDtOU007Ozs7O047Ozs7OworMDU5NjtIRUJSRVcgQUNDRU5UIFRJUEVIQTtNbjsyMjA7TlNNOzs7OztOOzsqOzs7CiswNTk3O0hFQlJFVyBBQ0NFTlQgUkVWSUE7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNTk4O0hFQlJFVyBBQ0NFTlQgWkFSUUE7TW47MjMwO05TTTs7Ozs7Tjs7Kjs7OworMDU5OTtIRUJSRVcgQUNDRU5UIFBBU0hUQTtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA1OUE7SEVCUkVXIEFDQ0VOVCBZRVRJVjtNbjsyMjI7TlNNOzs7OztOOzs7OzsKKzA1OUI7SEVCUkVXIEFDQ0VOVCBURVZJUjtNbjsyMjA7TlNNOzs7OztOOzs7OzsKKzA1OUM7SEVCUkVXIEFDQ0VOVCBHRVJFU0g7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNTlEO0hFQlJFVyBBQ0NFTlQgR0VSRVNIIE1VUURBTTtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA1OUU7SEVCUkVXIEFDQ0VOVCBHRVJTSEFZSU07TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNTlGO0hFQlJFVyBBQ0NFTlQgUUFSTkVZIFBBUkE7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNUEwO0hFQlJFVyBBQ0NFTlQgVEVMSVNIQSBHRURPTEE7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNUExO0hFQlJFVyBBQ0NFTlQgUEFaRVI7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNUEzO0hFQlJFVyBBQ0NFTlQgTVVOQUg7TW47MjIwO05TTTs7Ozs7Tjs7Ozs7CiswNUE0O0hFQlJFVyBBQ0NFTlQgTUFIQVBBS0g7TW47MjIwO05TTTs7Ozs7Tjs7Ozs7CiswNUE1O0hFQlJFVyBBQ0NFTlQgTUVSS0hBO01uOzIyMDtOU007Ozs7O047Oyo7OzsKKzA1QTY7SEVCUkVXIEFDQ0VOVCBNRVJLSEEgS0VGVUxBO01uOzIyMDtOU007Ozs7O047Ozs7OworMDVBNztIRUJSRVcgQUNDRU5UIERBUkdBO01uOzIyMDtOU007Ozs7O047Ozs7OworMDVBODtIRUJSRVcgQUNDRU5UIFFBRE1BO01uOzIzMDtOU007Ozs7O047Oyo7OzsKKzA1QTk7SEVCUkVXIEFDQ0VOVCBURUxJU0hBIFFFVEFOQTtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA1QUE7SEVCUkVXIEFDQ0VOVCBZRVJBSCBCRU4gWU9NTztNbjsyMjA7TlNNOzs7OztOOzsqOzs7CiswNUFCO0hFQlJFVyBBQ0NFTlQgT0xFO01uOzIzMDtOU007Ozs7O047Ozs7OworMDVBQztIRUJSRVcgQUNDRU5UIElMVVk7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNUFEO0hFQlJFVyBBQ0NFTlQgREVISTtNbjsyMjI7TlNNOzs7OztOOzs7OzsKKzA1QUU7SEVCUkVXIEFDQ0VOVCBaSU5PUjtNbjsyMjg7TlNNOzs7OztOOzs7OzsKKzA1QUY7SEVCUkVXIE1BUksgTUFTT1JBIENJUkNMRTtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA1QjA7SEVCUkVXIFBPSU5UIFNIRVZBO01uOzEwO05TTTs7Ozs7Tjs7Ozs7CiswNUIxO0hFQlJFVyBQT0lOVCBIQVRBRiBTRUdPTDtNbjsxMTtOU007Ozs7O047Ozs7OworMDVCMjtIRUJSRVcgUE9JTlQgSEFUQUYgUEFUQUg7TW47MTI7TlNNOzs7OztOOzs7OzsKKzA1QjM7SEVCUkVXIFBPSU5UIEhBVEFGIFFBTUFUUztNbjsxMztOU007Ozs7O047Ozs7OworMDVCNDtIRUJSRVcgUE9JTlQgSElSSVE7TW47MTQ7TlNNOzs7OztOOzs7OzsKKzA1QjU7SEVCUkVXIFBPSU5UIFRTRVJFO01uOzE1O05TTTs7Ozs7Tjs7Ozs7CiswNUI2O0hFQlJFVyBQT0lOVCBTRUdPTDtNbjsxNjtOU007Ozs7O047Ozs7OworMDVCNztIRUJSRVcgUE9JTlQgUEFUQUg7TW47MTc7TlNNOzs7OztOOzs7OzsKKzA1Qjg7SEVCUkVXIFBPSU5UIFFBTUFUUztNbjsxODtOU007Ozs7O047Ozs7OworMDVCOTtIRUJSRVcgUE9JTlQgSE9MQU07TW47MTk7TlNNOzs7OztOOzs7OzsKKzA1QkI7SEVCUkVXIFBPSU5UIFFVQlVUUztNbjsyMDtOU007Ozs7O047Ozs7OworMDVCQztIRUJSRVcgUE9JTlQgREFHRVNIIE9SIE1BUElRO01uOzIxO05TTTs7Ozs7TjtIRUJSRVcgUE9JTlQgREFHRVNIO29yIHNodXJ1cTs7OworMDVCRDtIRUJSRVcgUE9JTlQgTUVURUc7TW47MjI7TlNNOzs7OztOOzsqOzs7CiswNUJFO0hFQlJFVyBQVU5DVFVBVElPTiBNQVFBRjtQbzswO1I7Ozs7O047Ozs7OworMDVCRjtIRUJSRVcgUE9JTlQgUkFGRTtNbjsyMztOU007Ozs7O047Ozs7OworMDVDMDtIRUJSRVcgUFVOQ1RVQVRJT04gUEFTRVE7UG87MDtSOzs7OztOO0hFQlJFVyBQT0lOVCBQQVNFUTsqOzs7CiswNUMxO0hFQlJFVyBQT0lOVCBTSElOIERPVDtNbjsyNDtOU007Ozs7O047Ozs7OworMDVDMjtIRUJSRVcgUE9JTlQgU0lOIERPVDtNbjsyNTtOU007Ozs7O047Ozs7OworMDVDMztIRUJSRVcgUFVOQ1RVQVRJT04gU09GIFBBU1VRO1BvOzA7Ujs7Ozs7Tjs7Kjs7OworMDVDNDtIRUJSRVcgTUFSSyBVUFBFUiBET1Q7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNUQwO0hFQlJFVyBMRVRURVIgQUxFRjtMbzswO1I7Ozs7O047Ozs7OworMDVEMTtIRUJSRVcgTEVUVEVSIEJFVDtMbzswO1I7Ozs7O047Ozs7OworMDVEMjtIRUJSRVcgTEVUVEVSIEdJTUVMO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUQzO0hFQlJFVyBMRVRURVIgREFMRVQ7TG87MDtSOzs7OztOOzs7OzsKKzA1RDQ7SEVCUkVXIExFVFRFUiBIRTtMbzswO1I7Ozs7O047Ozs7OworMDVENTtIRUJSRVcgTEVUVEVSIFZBVjtMbzswO1I7Ozs7O047Ozs7OworMDVENjtIRUJSRVcgTEVUVEVSIFpBWUlOO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUQ3O0hFQlJFVyBMRVRURVIgSEVUO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUQ4O0hFQlJFVyBMRVRURVIgVEVUO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUQ5O0hFQlJFVyBMRVRURVIgWU9EO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNURBO0hFQlJFVyBMRVRURVIgRklOQUwgS0FGO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNURCO0hFQlJFVyBMRVRURVIgS0FGO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNURDO0hFQlJFVyBMRVRURVIgTEFNRUQ7TG87MDtSOzs7OztOOzs7OzsKKzA1REQ7SEVCUkVXIExFVFRFUiBGSU5BTCBNRU07TG87MDtSOzs7OztOOzs7OzsKKzA1REU7SEVCUkVXIExFVFRFUiBNRU07TG87MDtSOzs7OztOOzs7OzsKKzA1REY7SEVCUkVXIExFVFRFUiBGSU5BTCBOVU47TG87MDtSOzs7OztOOzs7OzsKKzA1RTA7SEVCUkVXIExFVFRFUiBOVU47TG87MDtSOzs7OztOOzs7OzsKKzA1RTE7SEVCUkVXIExFVFRFUiBTQU1FS0g7TG87MDtSOzs7OztOOzs7OzsKKzA1RTI7SEVCUkVXIExFVFRFUiBBWUlOO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUUzO0hFQlJFVyBMRVRURVIgRklOQUwgUEU7TG87MDtSOzs7OztOOzs7OzsKKzA1RTQ7SEVCUkVXIExFVFRFUiBQRTtMbzswO1I7Ozs7O047Ozs7OworMDVFNTtIRUJSRVcgTEVUVEVSIEZJTkFMIFRTQURJO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUU2O0hFQlJFVyBMRVRURVIgVFNBREk7TG87MDtSOzs7OztOOzs7OzsKKzA1RTc7SEVCUkVXIExFVFRFUiBRT0Y7TG87MDtSOzs7OztOOzs7OzsKKzA1RTg7SEVCUkVXIExFVFRFUiBSRVNIO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUU5O0hFQlJFVyBMRVRURVIgU0hJTjtMbzswO1I7Ozs7O047Ozs7OworMDVFQTtIRUJSRVcgTEVUVEVSIFRBVjtMbzswO1I7Ozs7O047Ozs7OworMDVGMDtIRUJSRVcgTElHQVRVUkUgWUlERElTSCBET1VCTEUgVkFWO0xvOzA7Ujs7Ozs7TjtIRUJSRVcgTEVUVEVSIERPVUJMRSBWQVY7Ozs7CiswNUYxO0hFQlJFVyBMSUdBVFVSRSBZSURESVNIIFZBViBZT0Q7TG87MDtSOzs7OztOO0hFQlJFVyBMRVRURVIgVkFWIFlPRDs7OzsKKzA1RjI7SEVCUkVXIExJR0FUVVJFIFlJRERJU0ggRE9VQkxFIFlPRDtMbzswO1I7Ozs7O047SEVCUkVXIExFVFRFUiBET1VCTEUgWU9EOzs7OworMDVGMztIRUJSRVcgUFVOQ1RVQVRJT04gR0VSRVNIO1BvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUY0O0hFQlJFVyBQVU5DVFVBVElPTiBHRVJTSEFZSU07UG87MDtSOzs7OztOOzs7OzsKKzA2MEM7QVJBQklDIENPTU1BO1BvOzA7Q1M7Ozs7O047Ozs7OworMDYxQjtBUkFCSUMgU0VNSUNPTE9OO1BvOzA7QUw7Ozs7O047Ozs7OworMDYxRjtBUkFCSUMgUVVFU1RJT04gTUFSSztQbzswO0FMOzs7OztOOzs7OzsKKzA2MjE7QVJBQklDIExFVFRFUiBIQU1aQTtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgSEFNWkFIOzs7OworMDYyMjtBUkFCSUMgTEVUVEVSIEFMRUYgV0lUSCBNQUREQSBBQk9WRTtMbzswO0FMOzA2MjcgMDY1Mzs7OztOO0FSQUJJQyBMRVRURVIgTUFEREFIIE9OIEFMRUY7Ozs7CiswNjIzO0FSQUJJQyBMRVRURVIgQUxFRiBXSVRIIEhBTVpBIEFCT1ZFO0xvOzA7QUw7MDYyNyAwNjU0Ozs7O047QVJBQklDIExFVFRFUiBIQU1aQUggT04gQUxFRjs7OzsKKzA2MjQ7QVJBQklDIExFVFRFUiBXQVcgV0lUSCBIQU1aQSBBQk9WRTtMbzswO0FMOzA2NDggMDY1NDs7OztOO0FSQUJJQyBMRVRURVIgSEFNWkFIIE9OIFdBVzs7OzsKKzA2MjU7QVJBQklDIExFVFRFUiBBTEVGIFdJVEggSEFNWkEgQkVMT1c7TG87MDtBTDswNjI3IDA2NTU7Ozs7TjtBUkFCSUMgTEVUVEVSIEhBTVpBSCBVTkRFUiBBTEVGOzs7OworMDYyNjtBUkFCSUMgTEVUVEVSIFlFSCBXSVRIIEhBTVpBIEFCT1ZFO0xvOzA7QUw7MDY0QSAwNjU0Ozs7O047QVJBQklDIExFVFRFUiBIQU1aQUggT04gWUE7Ozs7CiswNjI3O0FSQUJJQyBMRVRURVIgQUxFRjtMbzswO0FMOzs7OztOOzs7OzsKKzA2Mjg7QVJBQklDIExFVFRFUiBCRUg7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIEJBQTs7OzsKKzA2Mjk7QVJBQklDIExFVFRFUiBURUggTUFSQlVUQTtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgVEFBIE1BUkJVVEFIOzs7OworMDYyQTtBUkFCSUMgTEVUVEVSIFRFSDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgVEFBOzs7OworMDYyQjtBUkFCSUMgTEVUVEVSIFRIRUg7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIFRIQUE7Ozs7CiswNjJDO0FSQUJJQyBMRVRURVIgSkVFTTtMbzswO0FMOzs7OztOOzs7OzsKKzA2MkQ7QVJBQklDIExFVFRFUiBIQUg7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIEhBQTs7OzsKKzA2MkU7QVJBQklDIExFVFRFUiBLSEFIO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBLSEFBOzs7OworMDYyRjtBUkFCSUMgTEVUVEVSIERBTDtMbzswO0FMOzs7OztOOzs7OzsKKzA2MzA7QVJBQklDIExFVFRFUiBUSEFMO0xvOzA7QUw7Ozs7O047Ozs7OworMDYzMTtBUkFCSUMgTEVUVEVSIFJFSDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgUkE7Ozs7CiswNjMyO0FSQUJJQyBMRVRURVIgWkFJTjtMbzswO0FMOzs7OztOOzs7OzsKKzA2MzM7QVJBQklDIExFVFRFUiBTRUVOO0xvOzA7QUw7Ozs7O047Ozs7OworMDYzNDtBUkFCSUMgTEVUVEVSIFNIRUVOO0xvOzA7QUw7Ozs7O047Ozs7OworMDYzNTtBUkFCSUMgTEVUVEVSIFNBRDtMbzswO0FMOzs7OztOOzs7OzsKKzA2MzY7QVJBQklDIExFVFRFUiBEQUQ7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNjM3O0FSQUJJQyBMRVRURVIgVEFIO0xvOzA7QUw7Ozs7O047Ozs7OworMDYzODtBUkFCSUMgTEVUVEVSIFpBSDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgREhBSDs7OzsKKzA2Mzk7QVJBQklDIExFVFRFUiBBSU47TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNjNBO0FSQUJJQyBMRVRURVIgR0hBSU47TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNjQwO0FSQUJJQyBUQVRXRUVMO0xtOzA7QUw7Ozs7O047Ozs7OworMDY0MTtBUkFCSUMgTEVUVEVSIEZFSDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgRkE7Ozs7CiswNjQyO0FSQUJJQyBMRVRURVIgUUFGO0xvOzA7QUw7Ozs7O047Ozs7OworMDY0MztBUkFCSUMgTEVUVEVSIEtBRjtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgQ0FGOzs7OworMDY0NDtBUkFCSUMgTEVUVEVSIExBTTtMbzswO0FMOzs7OztOOzs7OzsKKzA2NDU7QVJBQklDIExFVFRFUiBNRUVNO0xvOzA7QUw7Ozs7O047Ozs7OworMDY0NjtBUkFCSUMgTEVUVEVSIE5PT047TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNjQ3O0FSQUJJQyBMRVRURVIgSEVIO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBIQTs7OzsKKzA2NDg7QVJBQklDIExFVFRFUiBXQVc7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNjQ5O0FSQUJJQyBMRVRURVIgQUxFRiBNQUtTVVJBO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBBTEVGIE1BUVNVUkFIOzs7OworMDY0QTtBUkFCSUMgTEVUVEVSIFlFSDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgWUE7Ozs7CiswNjRCO0FSQUJJQyBGQVRIQVRBTjtNbjsyNztOU007Ozs7O047Ozs7OworMDY0QztBUkFCSUMgREFNTUFUQU47TW47Mjg7TlNNOzs7OztOOzs7OzsKKzA2NEQ7QVJBQklDIEtBU1JBVEFOO01uOzI5O05TTTs7Ozs7Tjs7Ozs7CiswNjRFO0FSQUJJQyBGQVRIQTtNbjszMDtOU007Ozs7O047QVJBQklDIEZBVEhBSDs7OzsKKzA2NEY7QVJBQklDIERBTU1BO01uOzMxO05TTTs7Ozs7TjtBUkFCSUMgREFNTUFIOzs7OworMDY1MDtBUkFCSUMgS0FTUkE7TW47MzI7TlNNOzs7OztOO0FSQUJJQyBLQVNSQUg7Ozs7CiswNjUxO0FSQUJJQyBTSEFEREE7TW47MzM7TlNNOzs7OztOO0FSQUJJQyBTSEFEREFIOzs7OworMDY1MjtBUkFCSUMgU1VLVU47TW47MzQ7TlNNOzs7OztOOzs7OzsKKzA2NTM7QVJBQklDIE1BRERBSCBBQk9WRTtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA2NTQ7QVJBQklDIEhBTVpBIEFCT1ZFO01uOzIzMDtOU007Ozs7O047Ozs7OworMDY1NTtBUkFCSUMgSEFNWkEgQkVMT1c7TW47MjIwO05TTTs7Ozs7Tjs7Ozs7CiswNjYwO0FSQUJJQy1JTkRJQyBESUdJVCBaRVJPO05kOzA7QU47OzA7MDswO047Ozs7OworMDY2MTtBUkFCSUMtSU5ESUMgRElHSVQgT05FO05kOzA7QU47OzE7MTsxO047Ozs7OworMDY2MjtBUkFCSUMtSU5ESUMgRElHSVQgVFdPO05kOzA7QU47OzI7MjsyO047Ozs7OworMDY2MztBUkFCSUMtSU5ESUMgRElHSVQgVEhSRUU7TmQ7MDtBTjs7MzszOzM7Tjs7Ozs7CiswNjY0O0FSQUJJQy1JTkRJQyBESUdJVCBGT1VSO05kOzA7QU47OzQ7NDs0O047Ozs7OworMDY2NTtBUkFCSUMtSU5ESUMgRElHSVQgRklWRTtOZDswO0FOOzs1OzU7NTtOOzs7OzsKKzA2NjY7QVJBQklDLUlORElDIERJR0lUIFNJWDtOZDswO0FOOzs2OzY7NjtOOzs7OzsKKzA2Njc7QVJBQklDLUlORElDIERJR0lUIFNFVkVOO05kOzA7QU47Ozc7Nzs3O047Ozs7OworMDY2ODtBUkFCSUMtSU5ESUMgRElHSVQgRUlHSFQ7TmQ7MDtBTjs7ODs4Ozg7Tjs7Ozs7CiswNjY5O0FSQUJJQy1JTkRJQyBESUdJVCBOSU5FO05kOzA7QU47Ozk7OTs5O047Ozs7OworMDY2QTtBUkFCSUMgUEVSQ0VOVCBTSUdOO1BvOzA7RVQ7Ozs7O047Ozs7OworMDY2QjtBUkFCSUMgREVDSU1BTCBTRVBBUkFUT1I7UG87MDtBTjs7Ozs7Tjs7Ozs7CiswNjZDO0FSQUJJQyBUSE9VU0FORFMgU0VQQVJBVE9SO1BvOzA7QU47Ozs7O047Ozs7OworMDY2RDtBUkFCSUMgRklWRSBQT0lOVEVEIFNUQVI7UG87MDtBTDs7Ozs7Tjs7Ozs7CiswNjZFO0FSQUJJQyBMRVRURVIgRE9UTEVTUyBCRUg7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNjZGO0FSQUJJQyBMRVRURVIgRE9UTEVTUyBRQUY7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNjcwO0FSQUJJQyBMRVRURVIgU1VQRVJTQ1JJUFQgQUxFRjtNbjszNTtOU007Ozs7O047QVJBQklDIEFMRUYgQUJPVkU7Ozs7CiswNjcxO0FSQUJJQyBMRVRURVIgQUxFRiBXQVNMQTtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgSEFNWkFUIFdBU0wgT04gQUxFRjs7OzsKKzA2NzI7QVJBQklDIExFVFRFUiBBTEVGIFdJVEggV0FWWSBIQU1aQSBBQk9WRTtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgV0FWWSBIQU1aQUggT04gQUxFRjs7OzsKKzA2NzM7QVJBQklDIExFVFRFUiBBTEVGIFdJVEggV0FWWSBIQU1aQSBCRUxPVztMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgV0FWWSBIQU1aQUggVU5ERVIgQUxFRjs7OzsKKzA2NzQ7QVJBQklDIExFVFRFUiBISUdIIEhBTVpBO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBISUdIIEhBTVpBSDs7OzsKKzA2NzU7QVJBQklDIExFVFRFUiBISUdIIEhBTVpBIEFMRUY7TG87MDtBTDs8Y29tcGF0PiAwNjI3IDA2NzQ7Ozs7TjtBUkFCSUMgTEVUVEVSIEhJR0ggSEFNWkFIIEFMRUY7Ozs7CiswNjc2O0FSQUJJQyBMRVRURVIgSElHSCBIQU1aQSBXQVc7TG87MDtBTDs8Y29tcGF0PiAwNjQ4IDA2NzQ7Ozs7TjtBUkFCSUMgTEVUVEVSIEhJR0ggSEFNWkFIIFdBVzs7OzsKKzA2Nzc7QVJBQklDIExFVFRFUiBVIFdJVEggSEFNWkEgQUJPVkU7TG87MDtBTDs8Y29tcGF0PiAwNkM3IDA2NzQ7Ozs7TjtBUkFCSUMgTEVUVEVSIEhJR0ggSEFNWkFIIFdBVyBXSVRIIERBTU1BSDs7OzsKKzA2Nzg7QVJBQklDIExFVFRFUiBISUdIIEhBTVpBIFlFSDtMbzswO0FMOzxjb21wYXQ+IDA2NEEgMDY3NDs7OztOO0FSQUJJQyBMRVRURVIgSElHSCBIQU1aQUggWUE7Ozs7CiswNjc5O0FSQUJJQyBMRVRURVIgVFRFSDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgVEFBIFdJVEggU01BTEwgVEFIOzs7OworMDY3QTtBUkFCSUMgTEVUVEVSIFRURUhFSDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgVEFBIFdJVEggVFdPIERPVFMgVkVSVElDQUwgQUJPVkU7Ozs7CiswNjdCO0FSQUJJQyBMRVRURVIgQkVFSDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgQkFBIFdJVEggVFdPIERPVFMgVkVSVElDQUwgQkVMT1c7Ozs7CiswNjdDO0FSQUJJQyBMRVRURVIgVEVIIFdJVEggUklORztMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgVEFBIFdJVEggUklORzs7OzsKKzA2N0Q7QVJBQklDIExFVFRFUiBURUggV0lUSCBUSFJFRSBET1RTIEFCT1ZFIERPV05XQVJEUztMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgVEFBIFdJVEggVEhSRUUgRE9UUyBBQk9WRSBET1dOV0FSRDs7OzsKKzA2N0U7QVJBQklDIExFVFRFUiBQRUg7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIFRBQSBXSVRIIFRIUkVFIERPVFMgQkVMT1c7Ozs7CiswNjdGO0FSQUJJQyBMRVRURVIgVEVIRUg7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIFRBQSBXSVRIIEZPVVIgRE9UUyBBQk9WRTs7OzsKKzA2ODA7QVJBQklDIExFVFRFUiBCRUhFSDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgQkFBIFdJVEggRk9VUiBET1RTIEJFTE9XOzs7OworMDY4MTtBUkFCSUMgTEVUVEVSIEhBSCBXSVRIIEhBTVpBIEFCT1ZFO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBIQU1aQUggT04gSEFBOzs7OworMDY4MjtBUkFCSUMgTEVUVEVSIEhBSCBXSVRIIFRXTyBET1RTIFZFUlRJQ0FMIEFCT1ZFO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBIQUEgV0lUSCBUV08gRE9UUyBWRVJUSUNBTCBBQk9WRTs7OzsKKzA2ODM7QVJBQklDIExFVFRFUiBOWUVIO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBIQUEgV0lUSCBNSURETEUgVFdPIERPVFM7Ozs7CiswNjg0O0FSQUJJQyBMRVRURVIgRFlFSDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgSEFBIFdJVEggTUlERExFIFRXTyBET1RTIFZFUlRJQ0FMOzs7OworMDY4NTtBUkFCSUMgTEVUVEVSIEhBSCBXSVRIIFRIUkVFIERPVFMgQUJPVkU7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIEhBQSBXSVRIIFRIUkVFIERPVFMgQUJPVkU7Ozs7CiswNjg2O0FSQUJJQyBMRVRURVIgVENIRUg7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIEhBQSBXSVRIIE1JRERMRSBUSFJFRSBET1RTIERPV05XQVJEOzs7OworMDY4NztBUkFCSUMgTEVUVEVSIFRDSEVIRUg7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIEhBQSBXSVRIIE1JRERMRSBGT1VSIERPVFM7Ozs7CiswNjg4O0FSQUJJQyBMRVRURVIgRERBTDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgREFMIFdJVEggU01BTEwgVEFIOzs7OworMDY4OTtBUkFCSUMgTEVUVEVSIERBTCBXSVRIIFJJTkc7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNjhBO0FSQUJJQyBMRVRURVIgREFMIFdJVEggRE9UIEJFTE9XO0xvOzA7QUw7Ozs7O047Ozs7OworMDY4QjtBUkFCSUMgTEVUVEVSIERBTCBXSVRIIERPVCBCRUxPVyBBTkQgU01BTEwgVEFIO0xvOzA7QUw7Ozs7O047Ozs7OworMDY4QztBUkFCSUMgTEVUVEVSIERBSEFMO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBEQUwgV0lUSCBUV08gRE9UUyBBQk9WRTs7OzsKKzA2OEQ7QVJBQklDIExFVFRFUiBEREFIQUw7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIERBTCBXSVRIIFRXTyBET1RTIEJFTE9XOzs7OworMDY4RTtBUkFCSUMgTEVUVEVSIERVTDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgREFMIFdJVEggVEhSRUUgRE9UUyBBQk9WRTs7OzsKKzA2OEY7QVJBQklDIExFVFRFUiBEQUwgV0lUSCBUSFJFRSBET1RTIEFCT1ZFIERPV05XQVJEUztMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgREFMIFdJVEggVEhSRUUgRE9UUyBBQk9WRSBET1dOV0FSRDs7OzsKKzA2OTA7QVJBQklDIExFVFRFUiBEQUwgV0lUSCBGT1VSIERPVFMgQUJPVkU7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNjkxO0FSQUJJQyBMRVRURVIgUlJFSDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgUkEgV0lUSCBTTUFMTCBUQUg7Ozs7CiswNjkyO0FSQUJJQyBMRVRURVIgUkVIIFdJVEggU01BTEwgVjtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgUkEgV0lUSCBTTUFMTCBWOzs7OworMDY5MztBUkFCSUMgTEVUVEVSIFJFSCBXSVRIIFJJTkc7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIFJBIFdJVEggUklORzs7OzsKKzA2OTQ7QVJBQklDIExFVFRFUiBSRUggV0lUSCBET1QgQkVMT1c7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIFJBIFdJVEggRE9UIEJFTE9XOzs7OworMDY5NTtBUkFCSUMgTEVUVEVSIFJFSCBXSVRIIFNNQUxMIFYgQkVMT1c7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIFJBIFdJVEggU01BTEwgViBCRUxPVzs7OzsKKzA2OTY7QVJBQklDIExFVFRFUiBSRUggV0lUSCBET1QgQkVMT1cgQU5EIERPVCBBQk9WRTtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgUkEgV0lUSCBET1QgQkVMT1cgQU5EIERPVCBBQk9WRTs7OzsKKzA2OTc7QVJBQklDIExFVFRFUiBSRUggV0lUSCBUV08gRE9UUyBBQk9WRTtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgUkEgV0lUSCBUV08gRE9UUyBBQk9WRTs7OzsKKzA2OTg7QVJBQklDIExFVFRFUiBKRUg7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIFJBIFdJVEggVEhSRUUgRE9UUyBBQk9WRTs7OzsKKzA2OTk7QVJBQklDIExFVFRFUiBSRUggV0lUSCBGT1VSIERPVFMgQUJPVkU7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIFJBIFdJVEggRk9VUiBET1RTIEFCT1ZFOzs7OworMDY5QTtBUkFCSUMgTEVUVEVSIFNFRU4gV0lUSCBET1QgQkVMT1cgQU5EIERPVCBBQk9WRTtMbzswO0FMOzs7OztOOzs7OzsKKzA2OUI7QVJBQklDIExFVFRFUiBTRUVOIFdJVEggVEhSRUUgRE9UUyBCRUxPVztMbzswO0FMOzs7OztOOzs7OzsKKzA2OUM7QVJBQklDIExFVFRFUiBTRUVOIFdJVEggVEhSRUUgRE9UUyBCRUxPVyBBTkQgVEhSRUUgRE9UUyBBQk9WRTtMbzswO0FMOzs7OztOOzs7OzsKKzA2OUQ7QVJBQklDIExFVFRFUiBTQUQgV0lUSCBUV08gRE9UUyBCRUxPVztMbzswO0FMOzs7OztOOzs7OzsKKzA2OUU7QVJBQklDIExFVFRFUiBTQUQgV0lUSCBUSFJFRSBET1RTIEFCT1ZFO0xvOzA7QUw7Ozs7O047Ozs7OworMDY5RjtBUkFCSUMgTEVUVEVSIFRBSCBXSVRIIFRIUkVFIERPVFMgQUJPVkU7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNkEwO0FSQUJJQyBMRVRURVIgQUlOIFdJVEggVEhSRUUgRE9UUyBBQk9WRTtMbzswO0FMOzs7OztOOzs7OzsKKzA2QTE7QVJBQklDIExFVFRFUiBET1RMRVNTIEZFSDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgRE9UTEVTUyBGQTs7OzsKKzA2QTI7QVJBQklDIExFVFRFUiBGRUggV0lUSCBET1QgTU9WRUQgQkVMT1c7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIEZBIFdJVEggRE9UIE1PVkVEIEJFTE9XOzs7OworMDZBMztBUkFCSUMgTEVUVEVSIEZFSCBXSVRIIERPVCBCRUxPVztMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgRkEgV0lUSCBET1QgQkVMT1c7Ozs7CiswNkE0O0FSQUJJQyBMRVRURVIgVkVIO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBGQSBXSVRIIFRIUkVFIERPVFMgQUJPVkU7Ozs7CiswNkE1O0FSQUJJQyBMRVRURVIgRkVIIFdJVEggVEhSRUUgRE9UUyBCRUxPVztMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgRkEgV0lUSCBUSFJFRSBET1RTIEJFTE9XOzs7OworMDZBNjtBUkFCSUMgTEVUVEVSIFBFSEVIO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBGQSBXSVRIIEZPVVIgRE9UUyBBQk9WRTs7OzsKKzA2QTc7QVJBQklDIExFVFRFUiBRQUYgV0lUSCBET1QgQUJPVkU7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNkE4O0FSQUJJQyBMRVRURVIgUUFGIFdJVEggVEhSRUUgRE9UUyBBQk9WRTtMbzswO0FMOzs7OztOOzs7OzsKKzA2QTk7QVJBQklDIExFVFRFUiBLRUhFSDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgT1BFTiBDQUY7Ozs7CiswNkFBO0FSQUJJQyBMRVRURVIgU1dBU0ggS0FGO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBTV0FTSCBDQUY7Ozs7CiswNkFCO0FSQUJJQyBMRVRURVIgS0FGIFdJVEggUklORztMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgQ0FGIFdJVEggUklORzs7OzsKKzA2QUM7QVJBQklDIExFVFRFUiBLQUYgV0lUSCBET1QgQUJPVkU7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIENBRiBXSVRIIERPVCBBQk9WRTs7OzsKKzA2QUQ7QVJBQklDIExFVFRFUiBORztMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgQ0FGIFdJVEggVEhSRUUgRE9UUyBBQk9WRTs7OzsKKzA2QUU7QVJBQklDIExFVFRFUiBLQUYgV0lUSCBUSFJFRSBET1RTIEJFTE9XO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBDQUYgV0lUSCBUSFJFRSBET1RTIEJFTE9XOzs7OworMDZBRjtBUkFCSUMgTEVUVEVSIEdBRjtMbzswO0FMOzs7OztOOzsqOzs7CiswNkIwO0FSQUJJQyBMRVRURVIgR0FGIFdJVEggUklORztMbzswO0FMOzs7OztOOzs7OzsKKzA2QjE7QVJBQklDIExFVFRFUiBOR09FSDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgR0FGIFdJVEggVFdPIERPVFMgQUJPVkU7Ozs7CiswNkIyO0FSQUJJQyBMRVRURVIgR0FGIFdJVEggVFdPIERPVFMgQkVMT1c7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNkIzO0FSQUJJQyBMRVRURVIgR1VFSDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgR0FGIFdJVEggVFdPIERPVFMgVkVSVElDQUwgQkVMT1c7Ozs7CiswNkI0O0FSQUJJQyBMRVRURVIgR0FGIFdJVEggVEhSRUUgRE9UUyBBQk9WRTtMbzswO0FMOzs7OztOOzs7OzsKKzA2QjU7QVJBQklDIExFVFRFUiBMQU0gV0lUSCBTTUFMTCBWO0xvOzA7QUw7Ozs7O047Ozs7OworMDZCNjtBUkFCSUMgTEVUVEVSIExBTSBXSVRIIERPVCBBQk9WRTtMbzswO0FMOzs7OztOOzs7OzsKKzA2Qjc7QVJBQklDIExFVFRFUiBMQU0gV0lUSCBUSFJFRSBET1RTIEFCT1ZFO0xvOzA7QUw7Ozs7O047Ozs7OworMDZCODtBUkFCSUMgTEVUVEVSIExBTSBXSVRIIFRIUkVFIERPVFMgQkVMT1c7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNkI5O0FSQUJJQyBMRVRURVIgTk9PTiBXSVRIIERPVCBCRUxPVztMbzswO0FMOzs7OztOOzs7OzsKKzA2QkE7QVJBQklDIExFVFRFUiBOT09OIEdIVU5OQTtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgRE9UTEVTUyBOT09OOzs7OworMDZCQjtBUkFCSUMgTEVUVEVSIFJOT09OO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBET1RMRVNTIE5PT04gV0lUSCBTTUFMTCBUQUg7Ozs7CiswNkJDO0FSQUJJQyBMRVRURVIgTk9PTiBXSVRIIFJJTkc7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNkJEO0FSQUJJQyBMRVRURVIgTk9PTiBXSVRIIFRIUkVFIERPVFMgQUJPVkU7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNkJFO0FSQUJJQyBMRVRURVIgSEVIIERPQUNIQVNITUVFO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBLTk9UVEVEIEhBOzs7OworMDZCRjtBUkFCSUMgTEVUVEVSIFRDSEVIIFdJVEggRE9UIEFCT1ZFO0xvOzA7QUw7Ozs7O047Ozs7OworMDZDMDtBUkFCSUMgTEVUVEVSIEhFSCBXSVRIIFlFSCBBQk9WRTtMbzswO0FMOzA2RDUgMDY1NDs7OztOO0FSQUJJQyBMRVRURVIgSEFNWkFIIE9OIEhBOzs7OworMDZDMTtBUkFCSUMgTEVUVEVSIEhFSCBHT0FMO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBIQSBHT0FMOzs7OworMDZDMjtBUkFCSUMgTEVUVEVSIEhFSCBHT0FMIFdJVEggSEFNWkEgQUJPVkU7TG87MDtBTDswNkMxIDA2NTQ7Ozs7TjtBUkFCSUMgTEVUVEVSIEhBTVpBSCBPTiBIQSBHT0FMOzs7OworMDZDMztBUkFCSUMgTEVUVEVSIFRFSCBNQVJCVVRBIEdPQUw7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIFRBQSBNQVJCVVRBSCBHT0FMOzs7OworMDZDNDtBUkFCSUMgTEVUVEVSIFdBVyBXSVRIIFJJTkc7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNkM1O0FSQUJJQyBMRVRURVIgS0lSR0hJWiBPRTtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgV0FXIFdJVEggQkFSOzs7OworMDZDNjtBUkFCSUMgTEVUVEVSIE9FO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBXQVcgV0lUSCBTTUFMTCBWOzs7OworMDZDNztBUkFCSUMgTEVUVEVSIFU7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIFdBVyBXSVRIIERBTU1BSDs7OzsKKzA2Qzg7QVJBQklDIExFVFRFUiBZVTtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgV0FXIFdJVEggQUxFRiBBQk9WRTs7OzsKKzA2Qzk7QVJBQklDIExFVFRFUiBLSVJHSElaIFlVO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBXQVcgV0lUSCBJTlZFUlRFRCBTTUFMTCBWOzs7OworMDZDQTtBUkFCSUMgTEVUVEVSIFdBVyBXSVRIIFRXTyBET1RTIEFCT1ZFO0xvOzA7QUw7Ozs7O047Ozs7OworMDZDQjtBUkFCSUMgTEVUVEVSIFZFO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBXQVcgV0lUSCBUSFJFRSBET1RTIEFCT1ZFOzs7OworMDZDQztBUkFCSUMgTEVUVEVSIEZBUlNJIFlFSDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgRE9UTEVTUyBZQTs7OzsKKzA2Q0Q7QVJBQklDIExFVFRFUiBZRUggV0lUSCBUQUlMO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBZQSBXSVRIIFRBSUw7Ozs7CiswNkNFO0FSQUJJQyBMRVRURVIgWUVIIFdJVEggU01BTEwgVjtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgWUEgV0lUSCBTTUFMTCBWOzs7OworMDZDRjtBUkFCSUMgTEVUVEVSIFdBVyBXSVRIIERPVCBBQk9WRTtMbzswO0FMOzs7OztOOzs7OzsKKzA2RDA7QVJBQklDIExFVFRFUiBFO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBZQSBXSVRIIFRXTyBET1RTIFZFUlRJQ0FMIEJFTE9XOyo7OzsKKzA2RDE7QVJBQklDIExFVFRFUiBZRUggV0lUSCBUSFJFRSBET1RTIEJFTE9XO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBZQSBXSVRIIFRIUkVFIERPVFMgQkVMT1c7Ozs7CiswNkQyO0FSQUJJQyBMRVRURVIgWUVIIEJBUlJFRTtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgWUEgQkFSUkVFOzs7OworMDZEMztBUkFCSUMgTEVUVEVSIFlFSCBCQVJSRUUgV0lUSCBIQU1aQSBBQk9WRTtMbzswO0FMOzA2RDIgMDY1NDs7OztOO0FSQUJJQyBMRVRURVIgSEFNWkFIIE9OIFlBIEJBUlJFRTs7OzsKKzA2RDQ7QVJBQklDIEZVTEwgU1RPUDtQbzswO0FMOzs7OztOO0FSQUJJQyBQRVJJT0Q7Ozs7CiswNkQ1O0FSQUJJQyBMRVRURVIgQUU7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNkQ2O0FSQUJJQyBTTUFMTCBISUdIIExJR0FUVVJFIFNBRCBXSVRIIExBTSBXSVRIIEFMRUYgTUFLU1VSQTtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA2RDc7QVJBQklDIFNNQUxMIEhJR0ggTElHQVRVUkUgUUFGIFdJVEggTEFNIFdJVEggQUxFRiBNQUtTVVJBO01uOzIzMDtOU007Ozs7O047Ozs7OworMDZEODtBUkFCSUMgU01BTEwgSElHSCBNRUVNIElOSVRJQUwgRk9STTtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA2RDk7QVJBQklDIFNNQUxMIEhJR0ggTEFNIEFMRUY7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNkRBO0FSQUJJQyBTTUFMTCBISUdIIEpFRU07TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNkRCO0FSQUJJQyBTTUFMTCBISUdIIFRIUkVFIERPVFM7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNkRDO0FSQUJJQyBTTUFMTCBISUdIIFNFRU47TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNkREO0FSQUJJQyBFTkQgT0YgQVlBSDtDZjswO0FMOzs7OztOOzs7OzsKKzA2REU7QVJBQklDIFNUQVJUIE9GIFJVQiBFTCBISVpCO01lOzA7TlNNOzs7OztOOzs7OzsKKzA2REY7QVJBQklDIFNNQUxMIEhJR0ggUk9VTkRFRCBaRVJPO01uOzIzMDtOU007Ozs7O047Ozs7OworMDZFMDtBUkFCSUMgU01BTEwgSElHSCBVUFJJR0hUIFJFQ1RBTkdVTEFSIFpFUk87TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNkUxO0FSQUJJQyBTTUFMTCBISUdIIERPVExFU1MgSEVBRCBPRiBLSEFIO01uOzIzMDtOU007Ozs7O047Ozs7OworMDZFMjtBUkFCSUMgU01BTEwgSElHSCBNRUVNIElTT0xBVEVEIEZPUk07TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNkUzO0FSQUJJQyBTTUFMTCBMT1cgU0VFTjtNbjsyMjA7TlNNOzs7OztOOzs7OzsKKzA2RTQ7QVJBQklDIFNNQUxMIEhJR0ggTUFEREE7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNkU1O0FSQUJJQyBTTUFMTCBXQVc7TG07MDtBTDs7Ozs7Tjs7Ozs7CiswNkU2O0FSQUJJQyBTTUFMTCBZRUg7TG07MDtBTDs7Ozs7Tjs7Ozs7CiswNkU3O0FSQUJJQyBTTUFMTCBISUdIIFlFSDtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA2RTg7QVJBQklDIFNNQUxMIEhJR0ggTk9PTjtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA2RTk7QVJBQklDIFBMQUNFIE9GIFNBSkRBSDtTbzswO09OOzs7OztOOzs7OzsKKzA2RUE7QVJBQklDIEVNUFRZIENFTlRSRSBMT1cgU1RPUDtNbjsyMjA7TlNNOzs7OztOOzs7OzsKKzA2RUI7QVJBQklDIEVNUFRZIENFTlRSRSBISUdIIFNUT1A7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNkVDO0FSQUJJQyBST1VOREVEIEhJR0ggU1RPUCBXSVRIIEZJTExFRCBDRU5UUkU7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNkVEO0FSQUJJQyBTTUFMTCBMT1cgTUVFTTtNbjsyMjA7TlNNOzs7OztOOzs7OzsKKzA2RjA7RVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIFpFUk87TmQ7MDtFTjs7MDswOzA7TjtFQVNURVJOIEFSQUJJQy1JTkRJQyBESUdJVCBaRVJPOzs7OworMDZGMTtFWFRFTkRFRCBBUkFCSUMtSU5ESUMgRElHSVQgT05FO05kOzA7RU47OzE7MTsxO047RUFTVEVSTiBBUkFCSUMtSU5ESUMgRElHSVQgT05FOzs7OworMDZGMjtFWFRFTkRFRCBBUkFCSUMtSU5ESUMgRElHSVQgVFdPO05kOzA7RU47OzI7MjsyO047RUFTVEVSTiBBUkFCSUMtSU5ESUMgRElHSVQgVFdPOzs7OworMDZGMztFWFRFTkRFRCBBUkFCSUMtSU5ESUMgRElHSVQgVEhSRUU7TmQ7MDtFTjs7MzszOzM7TjtFQVNURVJOIEFSQUJJQy1JTkRJQyBESUdJVCBUSFJFRTs7OzsKKzA2RjQ7RVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIEZPVVI7TmQ7MDtFTjs7NDs0OzQ7TjtFQVNURVJOIEFSQUJJQy1JTkRJQyBESUdJVCBGT1VSOzs7OworMDZGNTtFWFRFTkRFRCBBUkFCSUMtSU5ESUMgRElHSVQgRklWRTtOZDswO0VOOzs1OzU7NTtOO0VBU1RFUk4gQVJBQklDLUlORElDIERJR0lUIEZJVkU7Ozs7CiswNkY2O0VYVEVOREVEIEFSQUJJQy1JTkRJQyBESUdJVCBTSVg7TmQ7MDtFTjs7Njs2OzY7TjtFQVNURVJOIEFSQUJJQy1JTkRJQyBESUdJVCBTSVg7Ozs7CiswNkY3O0VYVEVOREVEIEFSQUJJQy1JTkRJQyBESUdJVCBTRVZFTjtOZDswO0VOOzs3Ozc7NztOO0VBU1RFUk4gQVJBQklDLUlORElDIERJR0lUIFNFVkVOOzs7OworMDZGODtFWFRFTkRFRCBBUkFCSUMtSU5ESUMgRElHSVQgRUlHSFQ7TmQ7MDtFTjs7ODs4Ozg7TjtFQVNURVJOIEFSQUJJQy1JTkRJQyBESUdJVCBFSUdIVDs7OzsKKzA2Rjk7RVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIE5JTkU7TmQ7MDtFTjs7OTs5Ozk7TjtFQVNURVJOIEFSQUJJQy1JTkRJQyBESUdJVCBOSU5FOzs7OworMDZGQTtBUkFCSUMgTEVUVEVSIFNIRUVOIFdJVEggRE9UIEJFTE9XO0xvOzA7QUw7Ozs7O047Ozs7OworMDZGQjtBUkFCSUMgTEVUVEVSIERBRCBXSVRIIERPVCBCRUxPVztMbzswO0FMOzs7OztOOzs7OzsKKzA2RkM7QVJBQklDIExFVFRFUiBHSEFJTiBXSVRIIERPVCBCRUxPVztMbzswO0FMOzs7OztOOzs7OzsKKzA2RkQ7QVJBQklDIFNJR04gU0lOREhJIEFNUEVSU0FORDtTbzswO0FMOzs7OztOOzs7OzsKKzA2RkU7QVJBQklDIFNJR04gU0lOREhJIFBPU1RQT1NJVElPTiBNRU47U287MDtBTDs7Ozs7Tjs7Ozs7CiswNzAwO1NZUklBQyBFTkQgT0YgUEFSQUdSQVBIO1BvOzA7QUw7Ozs7O047Ozs7OworMDcwMTtTWVJJQUMgU1VQUkFMSU5FQVIgRlVMTCBTVE9QO1BvOzA7QUw7Ozs7O047Ozs7OworMDcwMjtTWVJJQUMgU1VCTElORUFSIEZVTEwgU1RPUDtQbzswO0FMOzs7OztOOzs7OzsKKzA3MDM7U1lSSUFDIFNVUFJBTElORUFSIENPTE9OO1BvOzA7QUw7Ozs7O047Ozs7OworMDcwNDtTWVJJQUMgU1VCTElORUFSIENPTE9OO1BvOzA7QUw7Ozs7O047Ozs7OworMDcwNTtTWVJJQUMgSE9SSVpPTlRBTCBDT0xPTjtQbzswO0FMOzs7OztOOzs7OzsKKzA3MDY7U1lSSUFDIENPTE9OIFNLRVdFRCBMRUZUO1BvOzA7QUw7Ozs7O047Ozs7OworMDcwNztTWVJJQUMgQ09MT04gU0tFV0VEIFJJR0hUO1BvOzA7QUw7Ozs7O047Ozs7OworMDcwODtTWVJJQUMgU1VQUkFMSU5FQVIgQ09MT04gU0tFV0VEIExFRlQ7UG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzA5O1NZUklBQyBTVUJMSU5FQVIgQ09MT04gU0tFV0VEIFJJR0hUO1BvOzA7QUw7Ozs7O047Ozs7OworMDcwQTtTWVJJQUMgQ09OVFJBQ1RJT047UG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzBCO1NZUklBQyBIQVJLTEVBTiBPQkVMVVM7UG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzBDO1NZUklBQyBIQVJLTEVBTiBNRVRPQkVMVVM7UG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzBEO1NZUklBQyBIQVJLTEVBTiBBU1RFUklTQ1VTO1BvOzA7QUw7Ozs7O047Ozs7OworMDcwRjtTWVJJQUMgQUJCUkVWSUFUSU9OIE1BUks7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CiswNzEwO1NZUklBQyBMRVRURVIgQUxBUEg7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzExO1NZUklBQyBMRVRURVIgU1VQRVJTQ1JJUFQgQUxBUEg7TW47MzY7TlNNOzs7OztOOzs7OzsKKzA3MTI7U1lSSUFDIExFVFRFUiBCRVRIO0xvOzA7QUw7Ozs7O047Ozs7OworMDcxMztTWVJJQUMgTEVUVEVSIEdBTUFMO0xvOzA7QUw7Ozs7O047Ozs7OworMDcxNDtTWVJJQUMgTEVUVEVSIEdBTUFMIEdBUlNIVU5JO0xvOzA7QUw7Ozs7O047Ozs7OworMDcxNTtTWVJJQUMgTEVUVEVSIERBTEFUSDtMbzswO0FMOzs7OztOOzs7OzsKKzA3MTY7U1lSSUFDIExFVFRFUiBET1RMRVNTIERBTEFUSCBSSVNIO0xvOzA7QUw7Ozs7O047Ozs7OworMDcxNztTWVJJQUMgTEVUVEVSIEhFO0xvOzA7QUw7Ozs7O047Ozs7OworMDcxODtTWVJJQUMgTEVUVEVSIFdBVztMbzswO0FMOzs7OztOOzs7OzsKKzA3MTk7U1lSSUFDIExFVFRFUiBaQUlOO0xvOzA7QUw7Ozs7O047Ozs7OworMDcxQTtTWVJJQUMgTEVUVEVSIEhFVEg7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzFCO1NZUklBQyBMRVRURVIgVEVUSDtMbzswO0FMOzs7OztOOzs7OzsKKzA3MUM7U1lSSUFDIExFVFRFUiBURVRIIEdBUlNIVU5JO0xvOzA7QUw7Ozs7O047Ozs7OworMDcxRDtTWVJJQUMgTEVUVEVSIFlVREg7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzFFO1NZUklBQyBMRVRURVIgWVVESCBIRTtMbzswO0FMOzs7OztOOzs7OzsKKzA3MUY7U1lSSUFDIExFVFRFUiBLQVBIO0xvOzA7QUw7Ozs7O047Ozs7OworMDcyMDtTWVJJQUMgTEVUVEVSIExBTUFESDtMbzswO0FMOzs7OztOOzs7OzsKKzA3MjE7U1lSSUFDIExFVFRFUiBNSU07TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzIyO1NZUklBQyBMRVRURVIgTlVOO0xvOzA7QUw7Ozs7O047Ozs7OworMDcyMztTWVJJQUMgTEVUVEVSIFNFTUtBVEg7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzI0O1NZUklBQyBMRVRURVIgRklOQUwgU0VNS0FUSDtMbzswO0FMOzs7OztOOzs7OzsKKzA3MjU7U1lSSUFDIExFVFRFUiBFO0xvOzA7QUw7Ozs7O047Ozs7OworMDcyNjtTWVJJQUMgTEVUVEVSIFBFO0xvOzA7QUw7Ozs7O047Ozs7OworMDcyNztTWVJJQUMgTEVUVEVSIFJFVkVSU0VEIFBFO0xvOzA7QUw7Ozs7O047Ozs7OworMDcyODtTWVJJQUMgTEVUVEVSIFNBREhFO0xvOzA7QUw7Ozs7O047Ozs7OworMDcyOTtTWVJJQUMgTEVUVEVSIFFBUEg7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzJBO1NZUklBQyBMRVRURVIgUklTSDtMbzswO0FMOzs7OztOOzs7OzsKKzA3MkI7U1lSSUFDIExFVFRFUiBTSElOO0xvOzA7QUw7Ozs7O047Ozs7OworMDcyQztTWVJJQUMgTEVUVEVSIFRBVztMbzswO0FMOzs7OztOOzs7OzsKKzA3MzA7U1lSSUFDIFBUSEFIQSBBQk9WRTtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA3MzE7U1lSSUFDIFBUSEFIQSBCRUxPVztNbjsyMjA7TlNNOzs7OztOOzs7OzsKKzA3MzI7U1lSSUFDIFBUSEFIQSBET1RURUQ7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNzMzO1NZUklBQyBaUUFQSEEgQUJPVkU7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNzM0O1NZUklBQyBaUUFQSEEgQkVMT1c7TW47MjIwO05TTTs7Ozs7Tjs7Ozs7CiswNzM1O1NZUklBQyBaUUFQSEEgRE9UVEVEO01uOzIzMDtOU007Ozs7O047Ozs7OworMDczNjtTWVJJQUMgUkJBU0EgQUJPVkU7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNzM3O1NZUklBQyBSQkFTQSBCRUxPVztNbjsyMjA7TlNNOzs7OztOOzs7OzsKKzA3Mzg7U1lSSUFDIERPVFRFRCBaTEFNQSBIT1JJWk9OVEFMO01uOzIyMDtOU007Ozs7O047Ozs7OworMDczOTtTWVJJQUMgRE9UVEVEIFpMQU1BIEFOR1VMQVI7TW47MjIwO05TTTs7Ozs7Tjs7Ozs7CiswNzNBO1NZUklBQyBIQkFTQSBBQk9WRTtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA3M0I7U1lSSUFDIEhCQVNBIEJFTE9XO01uOzIyMDtOU007Ozs7O047Ozs7OworMDczQztTWVJJQUMgSEJBU0EtRVNBU0EgRE9UVEVEO01uOzIyMDtOU007Ozs7O047Ozs7OworMDczRDtTWVJJQUMgRVNBU0EgQUJPVkU7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNzNFO1NZUklBQyBFU0FTQSBCRUxPVztNbjsyMjA7TlNNOzs7OztOOzs7OzsKKzA3M0Y7U1lSSUFDIFJXQUhBO01uOzIzMDtOU007Ozs7O047Ozs7OworMDc0MDtTWVJJQUMgRkVNSU5JTkUgRE9UO01uOzIzMDtOU007Ozs7O047Ozs7OworMDc0MTtTWVJJQUMgUVVTSFNIQVlBO01uOzIzMDtOU007Ozs7O047Ozs7OworMDc0MjtTWVJJQUMgUlVLS0FLSEE7TW47MjIwO05TTTs7Ozs7Tjs7Ozs7CiswNzQzO1NZUklBQyBUV08gVkVSVElDQUwgRE9UUyBBQk9WRTtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA3NDQ7U1lSSUFDIFRXTyBWRVJUSUNBTCBET1RTIEJFTE9XO01uOzIyMDtOU007Ozs7O047Ozs7OworMDc0NTtTWVJJQUMgVEhSRUUgRE9UUyBBQk9WRTtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA3NDY7U1lSSUFDIFRIUkVFIERPVFMgQkVMT1c7TW47MjIwO05TTTs7Ozs7Tjs7Ozs7CiswNzQ3O1NZUklBQyBPQkxJUVVFIExJTkUgQUJPVkU7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNzQ4O1NZUklBQyBPQkxJUVVFIExJTkUgQkVMT1c7TW47MjIwO05TTTs7Ozs7Tjs7Ozs7CiswNzQ5O1NZUklBQyBNVVNJQztNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA3NEE7U1lSSUFDIEJBUlJFS0g7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNzgwO1RIQUFOQSBMRVRURVIgSEFBO0xvOzA7QUw7Ozs7O047Ozs7OworMDc4MTtUSEFBTkEgTEVUVEVSIFNIQVZJWUFOSTtMbzswO0FMOzs7OztOOzs7OzsKKzA3ODI7VEhBQU5BIExFVFRFUiBOT09OVTtMbzswO0FMOzs7OztOOzs7OzsKKzA3ODM7VEhBQU5BIExFVFRFUiBSQUE7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzg0O1RIQUFOQSBMRVRURVIgQkFBO0xvOzA7QUw7Ozs7O047Ozs7OworMDc4NTtUSEFBTkEgTEVUVEVSIExIQVZJWUFOSTtMbzswO0FMOzs7OztOOzs7OzsKKzA3ODY7VEhBQU5BIExFVFRFUiBLQUFGVTtMbzswO0FMOzs7OztOOzs7OzsKKzA3ODc7VEhBQU5BIExFVFRFUiBBTElGVTtMbzswO0FMOzs7OztOOzs7OzsKKzA3ODg7VEhBQU5BIExFVFRFUiBWQUFWVTtMbzswO0FMOzs7OztOOzs7OzsKKzA3ODk7VEhBQU5BIExFVFRFUiBNRUVNVTtMbzswO0FMOzs7OztOOzs7OzsKKzA3OEE7VEhBQU5BIExFVFRFUiBGQUFGVTtMbzswO0FMOzs7OztOOzs7OzsKKzA3OEI7VEhBQU5BIExFVFRFUiBESEFBTFU7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzhDO1RIQUFOQSBMRVRURVIgVEhBQTtMbzswO0FMOzs7OztOOzs7OzsKKzA3OEQ7VEhBQU5BIExFVFRFUiBMQUFNVTtMbzswO0FMOzs7OztOOzs7OzsKKzA3OEU7VEhBQU5BIExFVFRFUiBHQUFGVTtMbzswO0FMOzs7OztOOzs7OzsKKzA3OEY7VEhBQU5BIExFVFRFUiBHTkFWSVlBTkk7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzkwO1RIQUFOQSBMRVRURVIgU0VFTlU7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzkxO1RIQUFOQSBMRVRURVIgREFWSVlBTkk7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzkyO1RIQUFOQSBMRVRURVIgWkFWSVlBTkk7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzkzO1RIQUFOQSBMRVRURVIgVEFWSVlBTkk7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzk0O1RIQUFOQSBMRVRURVIgWUFBO0xvOzA7QUw7Ozs7O047Ozs7OworMDc5NTtUSEFBTkEgTEVUVEVSIFBBVklZQU5JO0xvOzA7QUw7Ozs7O047Ozs7OworMDc5NjtUSEFBTkEgTEVUVEVSIEpBVklZQU5JO0xvOzA7QUw7Ozs7O047Ozs7OworMDc5NztUSEFBTkEgTEVUVEVSIENIQVZJWUFOSTtMbzswO0FMOzs7OztOOzs7OzsKKzA3OTg7VEhBQU5BIExFVFRFUiBUVEFBO0xvOzA7QUw7Ozs7O047Ozs7OworMDc5OTtUSEFBTkEgTEVUVEVSIEhIQUE7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzlBO1RIQUFOQSBMRVRURVIgS0hBQTtMbzswO0FMOzs7OztOOzs7OzsKKzA3OUI7VEhBQU5BIExFVFRFUiBUSEFBTFU7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzlDO1RIQUFOQSBMRVRURVIgWkFBO0xvOzA7QUw7Ozs7O047Ozs7OworMDc5RDtUSEFBTkEgTEVUVEVSIFNIRUVOVTtMbzswO0FMOzs7OztOOzs7OzsKKzA3OUU7VEhBQU5BIExFVFRFUiBTQUFESFU7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzlGO1RIQUFOQSBMRVRURVIgREFBREhVO0xvOzA7QUw7Ozs7O047Ozs7OworMDdBMDtUSEFBTkEgTEVUVEVSIFRPO0xvOzA7QUw7Ozs7O047Ozs7OworMDdBMTtUSEFBTkEgTEVUVEVSIFpPO0xvOzA7QUw7Ozs7O047Ozs7OworMDdBMjtUSEFBTkEgTEVUVEVSIEFJTlU7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswN0EzO1RIQUFOQSBMRVRURVIgR0hBSU5VO0xvOzA7QUw7Ozs7O047Ozs7OworMDdBNDtUSEFBTkEgTEVUVEVSIFFBQUZVO0xvOzA7QUw7Ozs7O047Ozs7OworMDdBNTtUSEFBTkEgTEVUVEVSIFdBQVZVO0xvOzA7QUw7Ozs7O047Ozs7OworMDdBNjtUSEFBTkEgQUJBRklMSTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswN0E3O1RIQUFOQSBBQUJBQUZJTEk7TW47MDtOU007Ozs7O047Ozs7OworMDdBODtUSEFBTkEgSUJJRklMSTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswN0E5O1RIQUFOQSBFRUJFRUZJTEk7TW47MDtOU007Ozs7O047Ozs7OworMDdBQTtUSEFBTkEgVUJVRklMSTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswN0FCO1RIQUFOQSBPT0JPT0ZJTEk7TW47MDtOU007Ozs7O047Ozs7OworMDdBQztUSEFBTkEgRUJFRklMSTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswN0FEO1RIQUFOQSBFWUJFWUZJTEk7TW47MDtOU007Ozs7O047Ozs7OworMDdBRTtUSEFBTkEgT0JPRklMSTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswN0FGO1RIQUFOQSBPQUJPQUZJTEk7TW47MDtOU007Ozs7O047Ozs7OworMDdCMDtUSEFBTkEgU1VLVU47TW47MDtOU007Ozs7O047Ozs7OworMDdCMTtUSEFBTkEgTEVUVEVSIE5BQTtMbzswO0FMOzs7OztOOzs7OzsKKzA5MDE7REVWQU5BR0FSSSBTSUdOIENBTkRSQUJJTkRVO01uOzA7TlNNOzs7OztOOzs7OzsKKzA5MDI7REVWQU5BR0FSSSBTSUdOIEFOVVNWQVJBO01uOzA7TlNNOzs7OztOOzs7OzsKKzA5MDM7REVWQU5BR0FSSSBTSUdOIFZJU0FSR0E7TWM7MDtMOzs7OztOOzs7OzsKKzA5MDU7REVWQU5BR0FSSSBMRVRURVIgQTtMbzswO0w7Ozs7O047Ozs7OworMDkwNjtERVZBTkFHQVJJIExFVFRFUiBBQTtMbzswO0w7Ozs7O047Ozs7OworMDkwNztERVZBTkFHQVJJIExFVFRFUiBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTA4O0RFVkFOQUdBUkkgTEVUVEVSIElJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTA5O0RFVkFOQUdBUkkgTEVUVEVSIFU7TG87MDtMOzs7OztOOzs7OzsKKzA5MEE7REVWQU5BR0FSSSBMRVRURVIgVVU7TG87MDtMOzs7OztOOzs7OzsKKzA5MEI7REVWQU5BR0FSSSBMRVRURVIgVk9DQUxJQyBSO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTBDO0RFVkFOQUdBUkkgTEVUVEVSIFZPQ0FMSUMgTDtMbzswO0w7Ozs7O047Ozs7OworMDkwRDtERVZBTkFHQVJJIExFVFRFUiBDQU5EUkEgRTtMbzswO0w7Ozs7O047Ozs7OworMDkwRTtERVZBTkFHQVJJIExFVFRFUiBTSE9SVCBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTBGO0RFVkFOQUdBUkkgTEVUVEVSIEU7TG87MDtMOzs7OztOOzs7OzsKKzA5MTA7REVWQU5BR0FSSSBMRVRURVIgQUk7TG87MDtMOzs7OztOOzs7OzsKKzA5MTE7REVWQU5BR0FSSSBMRVRURVIgQ0FORFJBIE87TG87MDtMOzs7OztOOzs7OzsKKzA5MTI7REVWQU5BR0FSSSBMRVRURVIgU0hPUlQgTztMbzswO0w7Ozs7O047Ozs7OworMDkxMztERVZBTkFHQVJJIExFVFRFUiBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTE0O0RFVkFOQUdBUkkgTEVUVEVSIEFVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTE1O0RFVkFOQUdBUkkgTEVUVEVSIEtBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTE2O0RFVkFOQUdBUkkgTEVUVEVSIEtIQTtMbzswO0w7Ozs7O047Ozs7OworMDkxNztERVZBTkFHQVJJIExFVFRFUiBHQTtMbzswO0w7Ozs7O047Ozs7OworMDkxODtERVZBTkFHQVJJIExFVFRFUiBHSEE7TG87MDtMOzs7OztOOzs7OzsKKzA5MTk7REVWQU5BR0FSSSBMRVRURVIgTkdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTFBO0RFVkFOQUdBUkkgTEVUVEVSIENBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTFCO0RFVkFOQUdBUkkgTEVUVEVSIENIQTtMbzswO0w7Ozs7O047Ozs7OworMDkxQztERVZBTkFHQVJJIExFVFRFUiBKQTtMbzswO0w7Ozs7O047Ozs7OworMDkxRDtERVZBTkFHQVJJIExFVFRFUiBKSEE7TG87MDtMOzs7OztOOzs7OzsKKzA5MUU7REVWQU5BR0FSSSBMRVRURVIgTllBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTFGO0RFVkFOQUdBUkkgTEVUVEVSIFRUQTtMbzswO0w7Ozs7O047Ozs7OworMDkyMDtERVZBTkFHQVJJIExFVFRFUiBUVEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTIxO0RFVkFOQUdBUkkgTEVUVEVSIEREQTtMbzswO0w7Ozs7O047Ozs7OworMDkyMjtERVZBTkFHQVJJIExFVFRFUiBEREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTIzO0RFVkFOQUdBUkkgTEVUVEVSIE5OQTtMbzswO0w7Ozs7O047Ozs7OworMDkyNDtERVZBTkFHQVJJIExFVFRFUiBUQTtMbzswO0w7Ozs7O047Ozs7OworMDkyNTtERVZBTkFHQVJJIExFVFRFUiBUSEE7TG87MDtMOzs7OztOOzs7OzsKKzA5MjY7REVWQU5BR0FSSSBMRVRURVIgREE7TG87MDtMOzs7OztOOzs7OzsKKzA5Mjc7REVWQU5BR0FSSSBMRVRURVIgREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTI4O0RFVkFOQUdBUkkgTEVUVEVSIE5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTI5O0RFVkFOQUdBUkkgTEVUVEVSIE5OTkE7TG87MDtMOzA5MjggMDkzQzs7OztOOzs7OzsKKzA5MkE7REVWQU5BR0FSSSBMRVRURVIgUEE7TG87MDtMOzs7OztOOzs7OzsKKzA5MkI7REVWQU5BR0FSSSBMRVRURVIgUEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTJDO0RFVkFOQUdBUkkgTEVUVEVSIEJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTJEO0RFVkFOQUdBUkkgTEVUVEVSIEJIQTtMbzswO0w7Ozs7O047Ozs7OworMDkyRTtERVZBTkFHQVJJIExFVFRFUiBNQTtMbzswO0w7Ozs7O047Ozs7OworMDkyRjtERVZBTkFHQVJJIExFVFRFUiBZQTtMbzswO0w7Ozs7O047Ozs7OworMDkzMDtERVZBTkFHQVJJIExFVFRFUiBSQTtMbzswO0w7Ozs7O047Ozs7OworMDkzMTtERVZBTkFHQVJJIExFVFRFUiBSUkE7TG87MDtMOzA5MzAgMDkzQzs7OztOOzs7OzsKKzA5MzI7REVWQU5BR0FSSSBMRVRURVIgTEE7TG87MDtMOzs7OztOOzs7OzsKKzA5MzM7REVWQU5BR0FSSSBMRVRURVIgTExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTM0O0RFVkFOQUdBUkkgTEVUVEVSIExMTEE7TG87MDtMOzA5MzMgMDkzQzs7OztOOzs7OzsKKzA5MzU7REVWQU5BR0FSSSBMRVRURVIgVkE7TG87MDtMOzs7OztOOzs7OzsKKzA5MzY7REVWQU5BR0FSSSBMRVRURVIgU0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTM3O0RFVkFOQUdBUkkgTEVUVEVSIFNTQTtMbzswO0w7Ozs7O047Ozs7OworMDkzODtERVZBTkFHQVJJIExFVFRFUiBTQTtMbzswO0w7Ozs7O047Ozs7OworMDkzOTtERVZBTkFHQVJJIExFVFRFUiBIQTtMbzswO0w7Ozs7O047Ozs7OworMDkzQztERVZBTkFHQVJJIFNJR04gTlVLVEE7TW47NztOU007Ozs7O047Ozs7OworMDkzRDtERVZBTkFHQVJJIFNJR04gQVZBR1JBSEE7TG87MDtMOzs7OztOOzs7OzsKKzA5M0U7REVWQU5BR0FSSSBWT1dFTCBTSUdOIEFBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswOTNGO0RFVkFOQUdBUkkgVk9XRUwgU0lHTiBJO01jOzA7TDs7Ozs7Tjs7Ozs7CiswOTQwO0RFVkFOQUdBUkkgVk9XRUwgU0lHTiBJSTtNYzswO0w7Ozs7O047Ozs7OworMDk0MTtERVZBTkFHQVJJIFZPV0VMIFNJR04gVTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswOTQyO0RFVkFOQUdBUkkgVk9XRUwgU0lHTiBVVTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswOTQzO0RFVkFOQUdBUkkgVk9XRUwgU0lHTiBWT0NBTElDIFI7TW47MDtOU007Ozs7O047Ozs7OworMDk0NDtERVZBTkFHQVJJIFZPV0VMIFNJR04gVk9DQUxJQyBSUjtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswOTQ1O0RFVkFOQUdBUkkgVk9XRUwgU0lHTiBDQU5EUkEgRTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswOTQ2O0RFVkFOQUdBUkkgVk9XRUwgU0lHTiBTSE9SVCBFO01uOzA7TlNNOzs7OztOOzs7OzsKKzA5NDc7REVWQU5BR0FSSSBWT1dFTCBTSUdOIEU7TW47MDtOU007Ozs7O047Ozs7OworMDk0ODtERVZBTkFHQVJJIFZPV0VMIFNJR04gQUk7TW47MDtOU007Ozs7O047Ozs7OworMDk0OTtERVZBTkFHQVJJIFZPV0VMIFNJR04gQ0FORFJBIE87TWM7MDtMOzs7OztOOzs7OzsKKzA5NEE7REVWQU5BR0FSSSBWT1dFTCBTSUdOIFNIT1JUIE87TWM7MDtMOzs7OztOOzs7OzsKKzA5NEI7REVWQU5BR0FSSSBWT1dFTCBTSUdOIE87TWM7MDtMOzs7OztOOzs7OzsKKzA5NEM7REVWQU5BR0FSSSBWT1dFTCBTSUdOIEFVO01jOzA7TDs7Ozs7Tjs7Ozs7CiswOTREO0RFVkFOQUdBUkkgU0lHTiBWSVJBTUE7TW47OTtOU007Ozs7O047Ozs7OworMDk1MDtERVZBTkFHQVJJIE9NO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTUxO0RFVkFOQUdBUkkgU1RSRVNTIFNJR04gVURBVFRBO01uOzIzMDtOU007Ozs7O047Ozs7OworMDk1MjtERVZBTkFHQVJJIFNUUkVTUyBTSUdOIEFOVURBVFRBO01uOzIyMDtOU007Ozs7O047Ozs7OworMDk1MztERVZBTkFHQVJJIEdSQVZFIEFDQ0VOVDtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA5NTQ7REVWQU5BR0FSSSBBQ1VURSBBQ0NFTlQ7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswOTU4O0RFVkFOQUdBUkkgTEVUVEVSIFFBO0xvOzA7TDswOTE1IDA5M0M7Ozs7Tjs7Ozs7CiswOTU5O0RFVkFOQUdBUkkgTEVUVEVSIEtISEE7TG87MDtMOzA5MTYgMDkzQzs7OztOOzs7OzsKKzA5NUE7REVWQU5BR0FSSSBMRVRURVIgR0hIQTtMbzswO0w7MDkxNyAwOTNDOzs7O047Ozs7OworMDk1QjtERVZBTkFHQVJJIExFVFRFUiBaQTtMbzswO0w7MDkxQyAwOTNDOzs7O047Ozs7OworMDk1QztERVZBTkFHQVJJIExFVFRFUiBERERIQTtMbzswO0w7MDkyMSAwOTNDOzs7O047Ozs7OworMDk1RDtERVZBTkFHQVJJIExFVFRFUiBSSEE7TG87MDtMOzA5MjIgMDkzQzs7OztOOzs7OzsKKzA5NUU7REVWQU5BR0FSSSBMRVRURVIgRkE7TG87MDtMOzA5MkIgMDkzQzs7OztOOzs7OzsKKzA5NUY7REVWQU5BR0FSSSBMRVRURVIgWVlBO0xvOzA7TDswOTJGIDA5M0M7Ozs7Tjs7Ozs7CiswOTYwO0RFVkFOQUdBUkkgTEVUVEVSIFZPQ0FMSUMgUlI7TG87MDtMOzs7OztOOzs7OzsKKzA5NjE7REVWQU5BR0FSSSBMRVRURVIgVk9DQUxJQyBMTDtMbzswO0w7Ozs7O047Ozs7OworMDk2MjtERVZBTkFHQVJJIFZPV0VMIFNJR04gVk9DQUxJQyBMO01uOzA7TlNNOzs7OztOOzs7OzsKKzA5NjM7REVWQU5BR0FSSSBWT1dFTCBTSUdOIFZPQ0FMSUMgTEw7TW47MDtOU007Ozs7O047Ozs7OworMDk2NDtERVZBTkFHQVJJIERBTkRBO1BvOzA7TDs7Ozs7Tjs7Ozs7CiswOTY1O0RFVkFOQUdBUkkgRE9VQkxFIERBTkRBO1BvOzA7TDs7Ozs7Tjs7Ozs7CiswOTY2O0RFVkFOQUdBUkkgRElHSVQgWkVSTztOZDswO0w7OzA7MDswO047Ozs7OworMDk2NztERVZBTkFHQVJJIERJR0lUIE9ORTtOZDswO0w7OzE7MTsxO047Ozs7OworMDk2ODtERVZBTkFHQVJJIERJR0lUIFRXTztOZDswO0w7OzI7MjsyO047Ozs7OworMDk2OTtERVZBTkFHQVJJIERJR0lUIFRIUkVFO05kOzA7TDs7MzszOzM7Tjs7Ozs7CiswOTZBO0RFVkFOQUdBUkkgRElHSVQgRk9VUjtOZDswO0w7OzQ7NDs0O047Ozs7OworMDk2QjtERVZBTkFHQVJJIERJR0lUIEZJVkU7TmQ7MDtMOzs1OzU7NTtOOzs7OzsKKzA5NkM7REVWQU5BR0FSSSBESUdJVCBTSVg7TmQ7MDtMOzs2OzY7NjtOOzs7OzsKKzA5NkQ7REVWQU5BR0FSSSBESUdJVCBTRVZFTjtOZDswO0w7Ozc7Nzs3O047Ozs7OworMDk2RTtERVZBTkFHQVJJIERJR0lUIEVJR0hUO05kOzA7TDs7ODs4Ozg7Tjs7Ozs7CiswOTZGO0RFVkFOQUdBUkkgRElHSVQgTklORTtOZDswO0w7Ozk7OTs5O047Ozs7OworMDk3MDtERVZBTkFHQVJJIEFCQlJFVklBVElPTiBTSUdOO1BvOzA7TDs7Ozs7Tjs7Ozs7CiswOTgxO0JFTkdBTEkgU0lHTiBDQU5EUkFCSU5EVTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswOTgyO0JFTkdBTEkgU0lHTiBBTlVTVkFSQTtNYzswO0w7Ozs7O047Ozs7OworMDk4MztCRU5HQUxJIFNJR04gVklTQVJHQTtNYzswO0w7Ozs7O047Ozs7OworMDk4NTtCRU5HQUxJIExFVFRFUiBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTg2O0JFTkdBTEkgTEVUVEVSIEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTg3O0JFTkdBTEkgTEVUVEVSIEk7TG87MDtMOzs7OztOOzs7OzsKKzA5ODg7QkVOR0FMSSBMRVRURVIgSUk7TG87MDtMOzs7OztOOzs7OzsKKzA5ODk7QkVOR0FMSSBMRVRURVIgVTtMbzswO0w7Ozs7O047Ozs7OworMDk4QTtCRU5HQUxJIExFVFRFUiBVVTtMbzswO0w7Ozs7O047Ozs7OworMDk4QjtCRU5HQUxJIExFVFRFUiBWT0NBTElDIFI7TG87MDtMOzs7OztOOzs7OzsKKzA5OEM7QkVOR0FMSSBMRVRURVIgVk9DQUxJQyBMO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOThGO0JFTkdBTEkgTEVUVEVSIEU7TG87MDtMOzs7OztOOzs7OzsKKzA5OTA7QkVOR0FMSSBMRVRURVIgQUk7TG87MDtMOzs7OztOOzs7OzsKKzA5OTM7QkVOR0FMSSBMRVRURVIgTztMbzswO0w7Ozs7O047Ozs7OworMDk5NDtCRU5HQUxJIExFVFRFUiBBVTtMbzswO0w7Ozs7O047Ozs7OworMDk5NTtCRU5HQUxJIExFVFRFUiBLQTtMbzswO0w7Ozs7O047Ozs7OworMDk5NjtCRU5HQUxJIExFVFRFUiBLSEE7TG87MDtMOzs7OztOOzs7OzsKKzA5OTc7QkVOR0FMSSBMRVRURVIgR0E7TG87MDtMOzs7OztOOzs7OzsKKzA5OTg7QkVOR0FMSSBMRVRURVIgR0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTk5O0JFTkdBTEkgTEVUVEVSIE5HQTtMbzswO0w7Ozs7O047Ozs7OworMDk5QTtCRU5HQUxJIExFVFRFUiBDQTtMbzswO0w7Ozs7O047Ozs7OworMDk5QjtCRU5HQUxJIExFVFRFUiBDSEE7TG87MDtMOzs7OztOOzs7OzsKKzA5OUM7QkVOR0FMSSBMRVRURVIgSkE7TG87MDtMOzs7OztOOzs7OzsKKzA5OUQ7QkVOR0FMSSBMRVRURVIgSkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTlFO0JFTkdBTEkgTEVUVEVSIE5ZQTtMbzswO0w7Ozs7O047Ozs7OworMDk5RjtCRU5HQUxJIExFVFRFUiBUVEE7TG87MDtMOzs7OztOOzs7OzsKKzA5QTA7QkVOR0FMSSBMRVRURVIgVFRIQTtMbzswO0w7Ozs7O047Ozs7OworMDlBMTtCRU5HQUxJIExFVFRFUiBEREE7TG87MDtMOzs7OztOOzs7OzsKKzA5QTI7QkVOR0FMSSBMRVRURVIgRERIQTtMbzswO0w7Ozs7O047Ozs7OworMDlBMztCRU5HQUxJIExFVFRFUiBOTkE7TG87MDtMOzs7OztOOzs7OzsKKzA5QTQ7QkVOR0FMSSBMRVRURVIgVEE7TG87MDtMOzs7OztOOzs7OzsKKzA5QTU7QkVOR0FMSSBMRVRURVIgVEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUE2O0JFTkdBTEkgTEVUVEVSIERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUE3O0JFTkdBTEkgTEVUVEVSIERIQTtMbzswO0w7Ozs7O047Ozs7OworMDlBODtCRU5HQUxJIExFVFRFUiBOQTtMbzswO0w7Ozs7O047Ozs7OworMDlBQTtCRU5HQUxJIExFVFRFUiBQQTtMbzswO0w7Ozs7O047Ozs7OworMDlBQjtCRU5HQUxJIExFVFRFUiBQSEE7TG87MDtMOzs7OztOOzs7OzsKKzA5QUM7QkVOR0FMSSBMRVRURVIgQkE7TG87MDtMOzs7OztOOzs7OzsKKzA5QUQ7QkVOR0FMSSBMRVRURVIgQkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUFFO0JFTkdBTEkgTEVUVEVSIE1BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUFGO0JFTkdBTEkgTEVUVEVSIFlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUIwO0JFTkdBTEkgTEVUVEVSIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUIyO0JFTkdBTEkgTEVUVEVSIExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUI2O0JFTkdBTEkgTEVUVEVSIFNIQTtMbzswO0w7Ozs7O047Ozs7OworMDlCNztCRU5HQUxJIExFVFRFUiBTU0E7TG87MDtMOzs7OztOOzs7OzsKKzA5Qjg7QkVOR0FMSSBMRVRURVIgU0E7TG87MDtMOzs7OztOOzs7OzsKKzA5Qjk7QkVOR0FMSSBMRVRURVIgSEE7TG87MDtMOzs7OztOOzs7OzsKKzA5QkM7QkVOR0FMSSBTSUdOIE5VS1RBO01uOzc7TlNNOzs7OztOOzs7OzsKKzA5QkU7QkVOR0FMSSBWT1dFTCBTSUdOIEFBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswOUJGO0JFTkdBTEkgVk9XRUwgU0lHTiBJO01jOzA7TDs7Ozs7Tjs7Ozs7CiswOUMwO0JFTkdBTEkgVk9XRUwgU0lHTiBJSTtNYzswO0w7Ozs7O047Ozs7OworMDlDMTtCRU5HQUxJIFZPV0VMIFNJR04gVTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswOUMyO0JFTkdBTEkgVk9XRUwgU0lHTiBVVTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswOUMzO0JFTkdBTEkgVk9XRUwgU0lHTiBWT0NBTElDIFI7TW47MDtOU007Ozs7O047Ozs7OworMDlDNDtCRU5HQUxJIFZPV0VMIFNJR04gVk9DQUxJQyBSUjtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswOUM3O0JFTkdBTEkgVk9XRUwgU0lHTiBFO01jOzA7TDs7Ozs7Tjs7Ozs7CiswOUM4O0JFTkdBTEkgVk9XRUwgU0lHTiBBSTtNYzswO0w7Ozs7O047Ozs7OworMDlDQjtCRU5HQUxJIFZPV0VMIFNJR04gTztNYzswO0w7MDlDNyAwOUJFOzs7O047Ozs7OworMDlDQztCRU5HQUxJIFZPV0VMIFNJR04gQVU7TWM7MDtMOzA5QzcgMDlENzs7OztOOzs7OzsKKzA5Q0Q7QkVOR0FMSSBTSUdOIFZJUkFNQTtNbjs5O05TTTs7Ozs7Tjs7Ozs7CiswOUQ3O0JFTkdBTEkgQVUgTEVOR1RIIE1BUks7TWM7MDtMOzs7OztOOzs7OzsKKzA5REM7QkVOR0FMSSBMRVRURVIgUlJBO0xvOzA7TDswOUExIDA5QkM7Ozs7Tjs7Ozs7CiswOUREO0JFTkdBTEkgTEVUVEVSIFJIQTtMbzswO0w7MDlBMiAwOUJDOzs7O047Ozs7OworMDlERjtCRU5HQUxJIExFVFRFUiBZWUE7TG87MDtMOzA5QUYgMDlCQzs7OztOOzs7OzsKKzA5RTA7QkVOR0FMSSBMRVRURVIgVk9DQUxJQyBSUjtMbzswO0w7Ozs7O047Ozs7OworMDlFMTtCRU5HQUxJIExFVFRFUiBWT0NBTElDIExMO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUUyO0JFTkdBTEkgVk9XRUwgU0lHTiBWT0NBTElDIEw7TW47MDtOU007Ozs7O047Ozs7OworMDlFMztCRU5HQUxJIFZPV0VMIFNJR04gVk9DQUxJQyBMTDtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswOUU2O0JFTkdBTEkgRElHSVQgWkVSTztOZDswO0w7OzA7MDswO047Ozs7OworMDlFNztCRU5HQUxJIERJR0lUIE9ORTtOZDswO0w7OzE7MTsxO047Ozs7OworMDlFODtCRU5HQUxJIERJR0lUIFRXTztOZDswO0w7OzI7MjsyO047Ozs7OworMDlFOTtCRU5HQUxJIERJR0lUIFRIUkVFO05kOzA7TDs7MzszOzM7Tjs7Ozs7CiswOUVBO0JFTkdBTEkgRElHSVQgRk9VUjtOZDswO0w7OzQ7NDs0O047Ozs7OworMDlFQjtCRU5HQUxJIERJR0lUIEZJVkU7TmQ7MDtMOzs1OzU7NTtOOzs7OzsKKzA5RUM7QkVOR0FMSSBESUdJVCBTSVg7TmQ7MDtMOzs2OzY7NjtOOzs7OzsKKzA5RUQ7QkVOR0FMSSBESUdJVCBTRVZFTjtOZDswO0w7Ozc7Nzs3O047Ozs7OworMDlFRTtCRU5HQUxJIERJR0lUIEVJR0hUO05kOzA7TDs7ODs4Ozg7Tjs7Ozs7CiswOUVGO0JFTkdBTEkgRElHSVQgTklORTtOZDswO0w7Ozk7OTs5O047Ozs7OworMDlGMDtCRU5HQUxJIExFVFRFUiBSQSBXSVRIIE1JRERMRSBESUFHT05BTDtMbzswO0w7Ozs7O047O0Fzc2FtZXNlOzs7CiswOUYxO0JFTkdBTEkgTEVUVEVSIFJBIFdJVEggTE9XRVIgRElBR09OQUw7TG87MDtMOzs7OztOO0JFTkdBTEkgTEVUVEVSIFZBIFdJVEggTE9XRVIgRElBR09OQUw7QXNzYW1lc2U7OzsKKzA5RjI7QkVOR0FMSSBSVVBFRSBNQVJLO1NjOzA7RVQ7Ozs7O047Ozs7OworMDlGMztCRU5HQUxJIFJVUEVFIFNJR047U2M7MDtFVDs7Ozs7Tjs7Ozs7CiswOUY0O0JFTkdBTEkgQ1VSUkVOQ1kgTlVNRVJBVE9SIE9ORTtObzswO0w7Ozs7MTtOOzs7OzsKKzA5RjU7QkVOR0FMSSBDVVJSRU5DWSBOVU1FUkFUT1IgVFdPO05vOzA7TDs7OzsyO047Ozs7OworMDlGNjtCRU5HQUxJIENVUlJFTkNZIE5VTUVSQVRPUiBUSFJFRTtObzswO0w7Ozs7MztOOzs7OzsKKzA5Rjc7QkVOR0FMSSBDVVJSRU5DWSBOVU1FUkFUT1IgRk9VUjtObzswO0w7Ozs7NDtOOzs7OzsKKzA5Rjg7QkVOR0FMSSBDVVJSRU5DWSBOVU1FUkFUT1IgT05FIExFU1MgVEhBTiBUSEUgREVOT01JTkFUT1I7Tm87MDtMOzs7OztOOzs7OzsKKzA5Rjk7QkVOR0FMSSBDVVJSRU5DWSBERU5PTUlOQVRPUiBTSVhURUVOO05vOzA7TDs7OzsxNjtOOzs7OzsKKzA5RkE7QkVOR0FMSSBJU1NIQVI7U287MDtMOzs7OztOOzs7OzsKKzBBMDI7R1VSTVVLSEkgU0lHTiBCSU5ESTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQTA1O0dVUk1VS0hJIExFVFRFUiBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTA2O0dVUk1VS0hJIExFVFRFUiBBQTtMbzswO0w7Ozs7O047Ozs7OworMEEwNztHVVJNVUtISSBMRVRURVIgSTtMbzswO0w7Ozs7O047Ozs7OworMEEwODtHVVJNVUtISSBMRVRURVIgSUk7TG87MDtMOzs7OztOOzs7OzsKKzBBMDk7R1VSTVVLSEkgTEVUVEVSIFU7TG87MDtMOzs7OztOOzs7OzsKKzBBMEE7R1VSTVVLSEkgTEVUVEVSIFVVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTBGO0dVUk1VS0hJIExFVFRFUiBFRTtMbzswO0w7Ozs7O047Ozs7OworMEExMDtHVVJNVUtISSBMRVRURVIgQUk7TG87MDtMOzs7OztOOzs7OzsKKzBBMTM7R1VSTVVLSEkgTEVUVEVSIE9PO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTE0O0dVUk1VS0hJIExFVFRFUiBBVTtMbzswO0w7Ozs7O047Ozs7OworMEExNTtHVVJNVUtISSBMRVRURVIgS0E7TG87MDtMOzs7OztOOzs7OzsKKzBBMTY7R1VSTVVLSEkgTEVUVEVSIEtIQTtMbzswO0w7Ozs7O047Ozs7OworMEExNztHVVJNVUtISSBMRVRURVIgR0E7TG87MDtMOzs7OztOOzs7OzsKKzBBMTg7R1VSTVVLSEkgTEVUVEVSIEdIQTtMbzswO0w7Ozs7O047Ozs7OworMEExOTtHVVJNVUtISSBMRVRURVIgTkdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTFBO0dVUk1VS0hJIExFVFRFUiBDQTtMbzswO0w7Ozs7O047Ozs7OworMEExQjtHVVJNVUtISSBMRVRURVIgQ0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTFDO0dVUk1VS0hJIExFVFRFUiBKQTtMbzswO0w7Ozs7O047Ozs7OworMEExRDtHVVJNVUtISSBMRVRURVIgSkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTFFO0dVUk1VS0hJIExFVFRFUiBOWUE7TG87MDtMOzs7OztOOzs7OzsKKzBBMUY7R1VSTVVLSEkgTEVUVEVSIFRUQTtMbzswO0w7Ozs7O047Ozs7OworMEEyMDtHVVJNVUtISSBMRVRURVIgVFRIQTtMbzswO0w7Ozs7O047Ozs7OworMEEyMTtHVVJNVUtISSBMRVRURVIgRERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTIyO0dVUk1VS0hJIExFVFRFUiBEREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTIzO0dVUk1VS0hJIExFVFRFUiBOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBBMjQ7R1VSTVVLSEkgTEVUVEVSIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTI1O0dVUk1VS0hJIExFVFRFUiBUSEE7TG87MDtMOzs7OztOOzs7OzsKKzBBMjY7R1VSTVVLSEkgTEVUVEVSIERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTI3O0dVUk1VS0hJIExFVFRFUiBESEE7TG87MDtMOzs7OztOOzs7OzsKKzBBMjg7R1VSTVVLSEkgTEVUVEVSIE5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTJBO0dVUk1VS0hJIExFVFRFUiBQQTtMbzswO0w7Ozs7O047Ozs7OworMEEyQjtHVVJNVUtISSBMRVRURVIgUEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTJDO0dVUk1VS0hJIExFVFRFUiBCQTtMbzswO0w7Ozs7O047Ozs7OworMEEyRDtHVVJNVUtISSBMRVRURVIgQkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTJFO0dVUk1VS0hJIExFVFRFUiBNQTtMbzswO0w7Ozs7O047Ozs7OworMEEyRjtHVVJNVUtISSBMRVRURVIgWUE7TG87MDtMOzs7OztOOzs7OzsKKzBBMzA7R1VSTVVLSEkgTEVUVEVSIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTMyO0dVUk1VS0hJIExFVFRFUiBMQTtMbzswO0w7Ozs7O047Ozs7OworMEEzMztHVVJNVUtISSBMRVRURVIgTExBO0xvOzA7TDswQTMyIDBBM0M7Ozs7Tjs7Ozs7CiswQTM1O0dVUk1VS0hJIExFVFRFUiBWQTtMbzswO0w7Ozs7O047Ozs7OworMEEzNjtHVVJNVUtISSBMRVRURVIgU0hBO0xvOzA7TDswQTM4IDBBM0M7Ozs7Tjs7Ozs7CiswQTM4O0dVUk1VS0hJIExFVFRFUiBTQTtMbzswO0w7Ozs7O047Ozs7OworMEEzOTtHVVJNVUtISSBMRVRURVIgSEE7TG87MDtMOzs7OztOOzs7OzsKKzBBM0M7R1VSTVVLSEkgU0lHTiBOVUtUQTtNbjs3O05TTTs7Ozs7Tjs7Ozs7CiswQTNFO0dVUk1VS0hJIFZPV0VMIFNJR04gQUE7TWM7MDtMOzs7OztOOzs7OzsKKzBBM0Y7R1VSTVVLSEkgVk9XRUwgU0lHTiBJO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQTQwO0dVUk1VS0hJIFZPV0VMIFNJR04gSUk7TWM7MDtMOzs7OztOOzs7OzsKKzBBNDE7R1VSTVVLSEkgVk9XRUwgU0lHTiBVO01uOzA7TlNNOzs7OztOOzs7OzsKKzBBNDI7R1VSTVVLSEkgVk9XRUwgU0lHTiBVVTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQTQ3O0dVUk1VS0hJIFZPV0VMIFNJR04gRUU7TW47MDtOU007Ozs7O047Ozs7OworMEE0ODtHVVJNVUtISSBWT1dFTCBTSUdOIEFJO01uOzA7TlNNOzs7OztOOzs7OzsKKzBBNEI7R1VSTVVLSEkgVk9XRUwgU0lHTiBPTztNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQTRDO0dVUk1VS0hJIFZPV0VMIFNJR04gQVU7TW47MDtOU007Ozs7O047Ozs7OworMEE0RDtHVVJNVUtISSBTSUdOIFZJUkFNQTtNbjs5O05TTTs7Ozs7Tjs7Ozs7CiswQTU5O0dVUk1VS0hJIExFVFRFUiBLSEhBO0xvOzA7TDswQTE2IDBBM0M7Ozs7Tjs7Ozs7CiswQTVBO0dVUk1VS0hJIExFVFRFUiBHSEhBO0xvOzA7TDswQTE3IDBBM0M7Ozs7Tjs7Ozs7CiswQTVCO0dVUk1VS0hJIExFVFRFUiBaQTtMbzswO0w7MEExQyAwQTNDOzs7O047Ozs7OworMEE1QztHVVJNVUtISSBMRVRURVIgUlJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTVFO0dVUk1VS0hJIExFVFRFUiBGQTtMbzswO0w7MEEyQiAwQTNDOzs7O047Ozs7OworMEE2NjtHVVJNVUtISSBESUdJVCBaRVJPO05kOzA7TDs7MDswOzA7Tjs7Ozs7CiswQTY3O0dVUk1VS0hJIERJR0lUIE9ORTtOZDswO0w7OzE7MTsxO047Ozs7OworMEE2ODtHVVJNVUtISSBESUdJVCBUV087TmQ7MDtMOzsyOzI7MjtOOzs7OzsKKzBBNjk7R1VSTVVLSEkgRElHSVQgVEhSRUU7TmQ7MDtMOzszOzM7MztOOzs7OzsKKzBBNkE7R1VSTVVLSEkgRElHSVQgRk9VUjtOZDswO0w7OzQ7NDs0O047Ozs7OworMEE2QjtHVVJNVUtISSBESUdJVCBGSVZFO05kOzA7TDs7NTs1OzU7Tjs7Ozs7CiswQTZDO0dVUk1VS0hJIERJR0lUIFNJWDtOZDswO0w7OzY7Njs2O047Ozs7OworMEE2RDtHVVJNVUtISSBESUdJVCBTRVZFTjtOZDswO0w7Ozc7Nzs3O047Ozs7OworMEE2RTtHVVJNVUtISSBESUdJVCBFSUdIVDtOZDswO0w7Ozg7ODs4O047Ozs7OworMEE2RjtHVVJNVUtISSBESUdJVCBOSU5FO05kOzA7TDs7OTs5Ozk7Tjs7Ozs7CiswQTcwO0dVUk1VS0hJIFRJUFBJO01uOzA7TlNNOzs7OztOOzs7OzsKKzBBNzE7R1VSTVVLSEkgQUREQUs7TW47MDtOU007Ozs7O047Ozs7OworMEE3MjtHVVJNVUtISSBJUkk7TG87MDtMOzs7OztOOzs7OzsKKzBBNzM7R1VSTVVLSEkgVVJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTc0O0dVUk1VS0hJIEVLIE9OS0FSO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTgxO0dVSkFSQVRJIFNJR04gQ0FORFJBQklORFU7TW47MDtOU007Ozs7O047Ozs7OworMEE4MjtHVUpBUkFUSSBTSUdOIEFOVVNWQVJBO01uOzA7TlNNOzs7OztOOzs7OzsKKzBBODM7R1VKQVJBVEkgU0lHTiBWSVNBUkdBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQTg1O0dVSkFSQVRJIExFVFRFUiBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTg2O0dVSkFSQVRJIExFVFRFUiBBQTtMbzswO0w7Ozs7O047Ozs7OworMEE4NztHVUpBUkFUSSBMRVRURVIgSTtMbzswO0w7Ozs7O047Ozs7OworMEE4ODtHVUpBUkFUSSBMRVRURVIgSUk7TG87MDtMOzs7OztOOzs7OzsKKzBBODk7R1VKQVJBVEkgTEVUVEVSIFU7TG87MDtMOzs7OztOOzs7OzsKKzBBOEE7R1VKQVJBVEkgTEVUVEVSIFVVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQThCO0dVSkFSQVRJIExFVFRFUiBWT0NBTElDIFI7TG87MDtMOzs7OztOOzs7OzsKKzBBOEQ7R1VKQVJBVEkgVk9XRUwgQ0FORFJBIEU7TG87MDtMOzs7OztOOzs7OzsKKzBBOEY7R1VKQVJBVEkgTEVUVEVSIEU7TG87MDtMOzs7OztOOzs7OzsKKzBBOTA7R1VKQVJBVEkgTEVUVEVSIEFJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTkxO0dVSkFSQVRJIFZPV0VMIENBTkRSQSBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTkzO0dVSkFSQVRJIExFVFRFUiBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTk0O0dVSkFSQVRJIExFVFRFUiBBVTtMbzswO0w7Ozs7O047Ozs7OworMEE5NTtHVUpBUkFUSSBMRVRURVIgS0E7TG87MDtMOzs7OztOOzs7OzsKKzBBOTY7R1VKQVJBVEkgTEVUVEVSIEtIQTtMbzswO0w7Ozs7O047Ozs7OworMEE5NztHVUpBUkFUSSBMRVRURVIgR0E7TG87MDtMOzs7OztOOzs7OzsKKzBBOTg7R1VKQVJBVEkgTEVUVEVSIEdIQTtMbzswO0w7Ozs7O047Ozs7OworMEE5OTtHVUpBUkFUSSBMRVRURVIgTkdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTlBO0dVSkFSQVRJIExFVFRFUiBDQTtMbzswO0w7Ozs7O047Ozs7OworMEE5QjtHVUpBUkFUSSBMRVRURVIgQ0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTlDO0dVSkFSQVRJIExFVFRFUiBKQTtMbzswO0w7Ozs7O047Ozs7OworMEE5RDtHVUpBUkFUSSBMRVRURVIgSkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTlFO0dVSkFSQVRJIExFVFRFUiBOWUE7TG87MDtMOzs7OztOOzs7OzsKKzBBOUY7R1VKQVJBVEkgTEVUVEVSIFRUQTtMbzswO0w7Ozs7O047Ozs7OworMEFBMDtHVUpBUkFUSSBMRVRURVIgVFRIQTtMbzswO0w7Ozs7O047Ozs7OworMEFBMTtHVUpBUkFUSSBMRVRURVIgRERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUEyO0dVSkFSQVRJIExFVFRFUiBEREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUEzO0dVSkFSQVRJIExFVFRFUiBOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBBQTQ7R1VKQVJBVEkgTEVUVEVSIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUE1O0dVSkFSQVRJIExFVFRFUiBUSEE7TG87MDtMOzs7OztOOzs7OzsKKzBBQTY7R1VKQVJBVEkgTEVUVEVSIERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUE3O0dVSkFSQVRJIExFVFRFUiBESEE7TG87MDtMOzs7OztOOzs7OzsKKzBBQTg7R1VKQVJBVEkgTEVUVEVSIE5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUFBO0dVSkFSQVRJIExFVFRFUiBQQTtMbzswO0w7Ozs7O047Ozs7OworMEFBQjtHVUpBUkFUSSBMRVRURVIgUEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUFDO0dVSkFSQVRJIExFVFRFUiBCQTtMbzswO0w7Ozs7O047Ozs7OworMEFBRDtHVUpBUkFUSSBMRVRURVIgQkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUFFO0dVSkFSQVRJIExFVFRFUiBNQTtMbzswO0w7Ozs7O047Ozs7OworMEFBRjtHVUpBUkFUSSBMRVRURVIgWUE7TG87MDtMOzs7OztOOzs7OzsKKzBBQjA7R1VKQVJBVEkgTEVUVEVSIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUIyO0dVSkFSQVRJIExFVFRFUiBMQTtMbzswO0w7Ozs7O047Ozs7OworMEFCMztHVUpBUkFUSSBMRVRURVIgTExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUI1O0dVSkFSQVRJIExFVFRFUiBWQTtMbzswO0w7Ozs7O047Ozs7OworMEFCNjtHVUpBUkFUSSBMRVRURVIgU0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUI3O0dVSkFSQVRJIExFVFRFUiBTU0E7TG87MDtMOzs7OztOOzs7OzsKKzBBQjg7R1VKQVJBVEkgTEVUVEVSIFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUI5O0dVSkFSQVRJIExFVFRFUiBIQTtMbzswO0w7Ozs7O047Ozs7OworMEFCQztHVUpBUkFUSSBTSUdOIE5VS1RBO01uOzc7TlNNOzs7OztOOzs7OzsKKzBBQkQ7R1VKQVJBVEkgU0lHTiBBVkFHUkFIQTtMbzswO0w7Ozs7O047Ozs7OworMEFCRTtHVUpBUkFUSSBWT1dFTCBTSUdOIEFBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQUJGO0dVSkFSQVRJIFZPV0VMIFNJR04gSTtNYzswO0w7Ozs7O047Ozs7OworMEFDMDtHVUpBUkFUSSBWT1dFTCBTSUdOIElJO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQUMxO0dVSkFSQVRJIFZPV0VMIFNJR04gVTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQUMyO0dVSkFSQVRJIFZPV0VMIFNJR04gVVU7TW47MDtOU007Ozs7O047Ozs7OworMEFDMztHVUpBUkFUSSBWT1dFTCBTSUdOIFZPQ0FMSUMgUjtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQUM0O0dVSkFSQVRJIFZPV0VMIFNJR04gVk9DQUxJQyBSUjtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQUM1O0dVSkFSQVRJIFZPV0VMIFNJR04gQ0FORFJBIEU7TW47MDtOU007Ozs7O047Ozs7OworMEFDNztHVUpBUkFUSSBWT1dFTCBTSUdOIEU7TW47MDtOU007Ozs7O047Ozs7OworMEFDODtHVUpBUkFUSSBWT1dFTCBTSUdOIEFJO01uOzA7TlNNOzs7OztOOzs7OzsKKzBBQzk7R1VKQVJBVEkgVk9XRUwgU0lHTiBDQU5EUkEgTztNYzswO0w7Ozs7O047Ozs7OworMEFDQjtHVUpBUkFUSSBWT1dFTCBTSUdOIE87TWM7MDtMOzs7OztOOzs7OzsKKzBBQ0M7R1VKQVJBVEkgVk9XRUwgU0lHTiBBVTtNYzswO0w7Ozs7O047Ozs7OworMEFDRDtHVUpBUkFUSSBTSUdOIFZJUkFNQTtNbjs5O05TTTs7Ozs7Tjs7Ozs7CiswQUQwO0dVSkFSQVRJIE9NO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUUwO0dVSkFSQVRJIExFVFRFUiBWT0NBTElDIFJSO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUU2O0dVSkFSQVRJIERJR0lUIFpFUk87TmQ7MDtMOzswOzA7MDtOOzs7OzsKKzBBRTc7R1VKQVJBVEkgRElHSVQgT05FO05kOzA7TDs7MTsxOzE7Tjs7Ozs7CiswQUU4O0dVSkFSQVRJIERJR0lUIFRXTztOZDswO0w7OzI7MjsyO047Ozs7OworMEFFOTtHVUpBUkFUSSBESUdJVCBUSFJFRTtOZDswO0w7OzM7MzszO047Ozs7OworMEFFQTtHVUpBUkFUSSBESUdJVCBGT1VSO05kOzA7TDs7NDs0OzQ7Tjs7Ozs7CiswQUVCO0dVSkFSQVRJIERJR0lUIEZJVkU7TmQ7MDtMOzs1OzU7NTtOOzs7OzsKKzBBRUM7R1VKQVJBVEkgRElHSVQgU0lYO05kOzA7TDs7Njs2OzY7Tjs7Ozs7CiswQUVEO0dVSkFSQVRJIERJR0lUIFNFVkVOO05kOzA7TDs7Nzs3Ozc7Tjs7Ozs7CiswQUVFO0dVSkFSQVRJIERJR0lUIEVJR0hUO05kOzA7TDs7ODs4Ozg7Tjs7Ozs7CiswQUVGO0dVSkFSQVRJIERJR0lUIE5JTkU7TmQ7MDtMOzs5Ozk7OTtOOzs7OzsKKzBCMDE7T1JJWUEgU0lHTiBDQU5EUkFCSU5EVTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQjAyO09SSVlBIFNJR04gQU5VU1ZBUkE7TWM7MDtMOzs7OztOOzs7OzsKKzBCMDM7T1JJWUEgU0lHTiBWSVNBUkdBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQjA1O09SSVlBIExFVFRFUiBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjA2O09SSVlBIExFVFRFUiBBQTtMbzswO0w7Ozs7O047Ozs7OworMEIwNztPUklZQSBMRVRURVIgSTtMbzswO0w7Ozs7O047Ozs7OworMEIwODtPUklZQSBMRVRURVIgSUk7TG87MDtMOzs7OztOOzs7OzsKKzBCMDk7T1JJWUEgTEVUVEVSIFU7TG87MDtMOzs7OztOOzs7OzsKKzBCMEE7T1JJWUEgTEVUVEVSIFVVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjBCO09SSVlBIExFVFRFUiBWT0NBTElDIFI7TG87MDtMOzs7OztOOzs7OzsKKzBCMEM7T1JJWUEgTEVUVEVSIFZPQ0FMSUMgTDtMbzswO0w7Ozs7O047Ozs7OworMEIwRjtPUklZQSBMRVRURVIgRTtMbzswO0w7Ozs7O047Ozs7OworMEIxMDtPUklZQSBMRVRURVIgQUk7TG87MDtMOzs7OztOOzs7OzsKKzBCMTM7T1JJWUEgTEVUVEVSIE87TG87MDtMOzs7OztOOzs7OzsKKzBCMTQ7T1JJWUEgTEVUVEVSIEFVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjE1O09SSVlBIExFVFRFUiBLQTtMbzswO0w7Ozs7O047Ozs7OworMEIxNjtPUklZQSBMRVRURVIgS0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjE3O09SSVlBIExFVFRFUiBHQTtMbzswO0w7Ozs7O047Ozs7OworMEIxODtPUklZQSBMRVRURVIgR0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjE5O09SSVlBIExFVFRFUiBOR0E7TG87MDtMOzs7OztOOzs7OzsKKzBCMUE7T1JJWUEgTEVUVEVSIENBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjFCO09SSVlBIExFVFRFUiBDSEE7TG87MDtMOzs7OztOOzs7OzsKKzBCMUM7T1JJWUEgTEVUVEVSIEpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjFEO09SSVlBIExFVFRFUiBKSEE7TG87MDtMOzs7OztOOzs7OzsKKzBCMUU7T1JJWUEgTEVUVEVSIE5ZQTtMbzswO0w7Ozs7O047Ozs7OworMEIxRjtPUklZQSBMRVRURVIgVFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjIwO09SSVlBIExFVFRFUiBUVEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjIxO09SSVlBIExFVFRFUiBEREE7TG87MDtMOzs7OztOOzs7OzsKKzBCMjI7T1JJWUEgTEVUVEVSIERESEE7TG87MDtMOzs7OztOOzs7OzsKKzBCMjM7T1JJWUEgTEVUVEVSIE5OQTtMbzswO0w7Ozs7O047Ozs7OworMEIyNDtPUklZQSBMRVRURVIgVEE7TG87MDtMOzs7OztOOzs7OzsKKzBCMjU7T1JJWUEgTEVUVEVSIFRIQTtMbzswO0w7Ozs7O047Ozs7OworMEIyNjtPUklZQSBMRVRURVIgREE7TG87MDtMOzs7OztOOzs7OzsKKzBCMjc7T1JJWUEgTEVUVEVSIERIQTtMbzswO0w7Ozs7O047Ozs7OworMEIyODtPUklZQSBMRVRURVIgTkE7TG87MDtMOzs7OztOOzs7OzsKKzBCMkE7T1JJWUEgTEVUVEVSIFBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjJCO09SSVlBIExFVFRFUiBQSEE7TG87MDtMOzs7OztOOzs7OzsKKzBCMkM7T1JJWUEgTEVUVEVSIEJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjJEO09SSVlBIExFVFRFUiBCSEE7TG87MDtMOzs7OztOOzs7OzsKKzBCMkU7T1JJWUEgTEVUVEVSIE1BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjJGO09SSVlBIExFVFRFUiBZQTtMbzswO0w7Ozs7O047Ozs7OworMEIzMDtPUklZQSBMRVRURVIgUkE7TG87MDtMOzs7OztOOzs7OzsKKzBCMzI7T1JJWUEgTEVUVEVSIExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjMzO09SSVlBIExFVFRFUiBMTEE7TG87MDtMOzs7OztOOzs7OzsKKzBCMzY7T1JJWUEgTEVUVEVSIFNIQTtMbzswO0w7Ozs7O047Ozs7OworMEIzNztPUklZQSBMRVRURVIgU1NBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjM4O09SSVlBIExFVFRFUiBTQTtMbzswO0w7Ozs7O047Ozs7OworMEIzOTtPUklZQSBMRVRURVIgSEE7TG87MDtMOzs7OztOOzs7OzsKKzBCM0M7T1JJWUEgU0lHTiBOVUtUQTtNbjs3O05TTTs7Ozs7Tjs7Ozs7CiswQjNEO09SSVlBIFNJR04gQVZBR1JBSEE7TG87MDtMOzs7OztOOzs7OzsKKzBCM0U7T1JJWUEgVk9XRUwgU0lHTiBBQTtNYzswO0w7Ozs7O047Ozs7OworMEIzRjtPUklZQSBWT1dFTCBTSUdOIEk7TW47MDtOU007Ozs7O047Ozs7OworMEI0MDtPUklZQSBWT1dFTCBTSUdOIElJO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQjQxO09SSVlBIFZPV0VMIFNJR04gVTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQjQyO09SSVlBIFZPV0VMIFNJR04gVVU7TW47MDtOU007Ozs7O047Ozs7OworMEI0MztPUklZQSBWT1dFTCBTSUdOIFZPQ0FMSUMgUjtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQjQ3O09SSVlBIFZPV0VMIFNJR04gRTtNYzswO0w7Ozs7O047Ozs7OworMEI0ODtPUklZQSBWT1dFTCBTSUdOIEFJO01jOzA7TDswQjQ3IDBCNTY7Ozs7Tjs7Ozs7CiswQjRCO09SSVlBIFZPV0VMIFNJR04gTztNYzswO0w7MEI0NyAwQjNFOzs7O047Ozs7OworMEI0QztPUklZQSBWT1dFTCBTSUdOIEFVO01jOzA7TDswQjQ3IDBCNTc7Ozs7Tjs7Ozs7CiswQjREO09SSVlBIFNJR04gVklSQU1BO01uOzk7TlNNOzs7OztOOzs7OzsKKzBCNTY7T1JJWUEgQUkgTEVOR1RIIE1BUks7TW47MDtOU007Ozs7O047Ozs7OworMEI1NztPUklZQSBBVSBMRU5HVEggTUFSSztNYzswO0w7Ozs7O047Ozs7OworMEI1QztPUklZQSBMRVRURVIgUlJBO0xvOzA7TDswQjIxIDBCM0M7Ozs7Tjs7Ozs7CiswQjVEO09SSVlBIExFVFRFUiBSSEE7TG87MDtMOzBCMjIgMEIzQzs7OztOOzs7OzsKKzBCNUY7T1JJWUEgTEVUVEVSIFlZQTtMbzswO0w7Ozs7O047Ozs7OworMEI2MDtPUklZQSBMRVRURVIgVk9DQUxJQyBSUjtMbzswO0w7Ozs7O047Ozs7OworMEI2MTtPUklZQSBMRVRURVIgVk9DQUxJQyBMTDtMbzswO0w7Ozs7O047Ozs7OworMEI2NjtPUklZQSBESUdJVCBaRVJPO05kOzA7TDs7MDswOzA7Tjs7Ozs7CiswQjY3O09SSVlBIERJR0lUIE9ORTtOZDswO0w7OzE7MTsxO047Ozs7OworMEI2ODtPUklZQSBESUdJVCBUV087TmQ7MDtMOzsyOzI7MjtOOzs7OzsKKzBCNjk7T1JJWUEgRElHSVQgVEhSRUU7TmQ7MDtMOzszOzM7MztOOzs7OzsKKzBCNkE7T1JJWUEgRElHSVQgRk9VUjtOZDswO0w7OzQ7NDs0O047Ozs7OworMEI2QjtPUklZQSBESUdJVCBGSVZFO05kOzA7TDs7NTs1OzU7Tjs7Ozs7CiswQjZDO09SSVlBIERJR0lUIFNJWDtOZDswO0w7OzY7Njs2O047Ozs7OworMEI2RDtPUklZQSBESUdJVCBTRVZFTjtOZDswO0w7Ozc7Nzs3O047Ozs7OworMEI2RTtPUklZQSBESUdJVCBFSUdIVDtOZDswO0w7Ozg7ODs4O047Ozs7OworMEI2RjtPUklZQSBESUdJVCBOSU5FO05kOzA7TDs7OTs5Ozk7Tjs7Ozs7CiswQjcwO09SSVlBIElTU0hBUjtTbzswO0w7Ozs7O047Ozs7OworMEI4MjtUQU1JTCBTSUdOIEFOVVNWQVJBO01uOzA7TlNNOzs7OztOOzs7OzsKKzBCODM7VEFNSUwgU0lHTiBWSVNBUkdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjg1O1RBTUlMIExFVFRFUiBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjg2O1RBTUlMIExFVFRFUiBBQTtMbzswO0w7Ozs7O047Ozs7OworMEI4NztUQU1JTCBMRVRURVIgSTtMbzswO0w7Ozs7O047Ozs7OworMEI4ODtUQU1JTCBMRVRURVIgSUk7TG87MDtMOzs7OztOOzs7OzsKKzBCODk7VEFNSUwgTEVUVEVSIFU7TG87MDtMOzs7OztOOzs7OzsKKzBCOEE7VEFNSUwgTEVUVEVSIFVVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjhFO1RBTUlMIExFVFRFUiBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjhGO1RBTUlMIExFVFRFUiBFRTtMbzswO0w7Ozs7O047Ozs7OworMEI5MDtUQU1JTCBMRVRURVIgQUk7TG87MDtMOzs7OztOOzs7OzsKKzBCOTI7VEFNSUwgTEVUVEVSIE87TG87MDtMOzs7OztOOzs7OzsKKzBCOTM7VEFNSUwgTEVUVEVSIE9PO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjk0O1RBTUlMIExFVFRFUiBBVTtMbzswO0w7MEI5MiAwQkQ3Ozs7O047Ozs7OworMEI5NTtUQU1JTCBMRVRURVIgS0E7TG87MDtMOzs7OztOOzs7OzsKKzBCOTk7VEFNSUwgTEVUVEVSIE5HQTtMbzswO0w7Ozs7O047Ozs7OworMEI5QTtUQU1JTCBMRVRURVIgQ0E7TG87MDtMOzs7OztOOzs7OzsKKzBCOUM7VEFNSUwgTEVUVEVSIEpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjlFO1RBTUlMIExFVFRFUiBOWUE7TG87MDtMOzs7OztOOzs7OzsKKzBCOUY7VEFNSUwgTEVUVEVSIFRUQTtMbzswO0w7Ozs7O047Ozs7OworMEJBMztUQU1JTCBMRVRURVIgTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQkE0O1RBTUlMIExFVFRFUiBUQTtMbzswO0w7Ozs7O047Ozs7OworMEJBODtUQU1JTCBMRVRURVIgTkE7TG87MDtMOzs7OztOOzs7OzsKKzBCQTk7VEFNSUwgTEVUVEVSIE5OTkE7TG87MDtMOzs7OztOOzs7OzsKKzBCQUE7VEFNSUwgTEVUVEVSIFBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQkFFO1RBTUlMIExFVFRFUiBNQTtMbzswO0w7Ozs7O047Ozs7OworMEJBRjtUQU1JTCBMRVRURVIgWUE7TG87MDtMOzs7OztOOzs7OzsKKzBCQjA7VEFNSUwgTEVUVEVSIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQkIxO1RBTUlMIExFVFRFUiBSUkE7TG87MDtMOzs7OztOOzs7OzsKKzBCQjI7VEFNSUwgTEVUVEVSIExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQkIzO1RBTUlMIExFVFRFUiBMTEE7TG87MDtMOzs7OztOOzs7OzsKKzBCQjQ7VEFNSUwgTEVUVEVSIExMTEE7TG87MDtMOzs7OztOOzs7OzsKKzBCQjU7VEFNSUwgTEVUVEVSIFZBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQkI3O1RBTUlMIExFVFRFUiBTU0E7TG87MDtMOzs7OztOOzs7OzsKKzBCQjg7VEFNSUwgTEVUVEVSIFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQkI5O1RBTUlMIExFVFRFUiBIQTtMbzswO0w7Ozs7O047Ozs7OworMEJCRTtUQU1JTCBWT1dFTCBTSUdOIEFBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQkJGO1RBTUlMIFZPV0VMIFNJR04gSTtNYzswO0w7Ozs7O047Ozs7OworMEJDMDtUQU1JTCBWT1dFTCBTSUdOIElJO01uOzA7TlNNOzs7OztOOzs7OzsKKzBCQzE7VEFNSUwgVk9XRUwgU0lHTiBVO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQkMyO1RBTUlMIFZPV0VMIFNJR04gVVU7TWM7MDtMOzs7OztOOzs7OzsKKzBCQzY7VEFNSUwgVk9XRUwgU0lHTiBFO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQkM3O1RBTUlMIFZPV0VMIFNJR04gRUU7TWM7MDtMOzs7OztOOzs7OzsKKzBCQzg7VEFNSUwgVk9XRUwgU0lHTiBBSTtNYzswO0w7Ozs7O047Ozs7OworMEJDQTtUQU1JTCBWT1dFTCBTSUdOIE87TWM7MDtMOzBCQzYgMEJCRTs7OztOOzs7OzsKKzBCQ0I7VEFNSUwgVk9XRUwgU0lHTiBPTztNYzswO0w7MEJDNyAwQkJFOzs7O047Ozs7OworMEJDQztUQU1JTCBWT1dFTCBTSUdOIEFVO01jOzA7TDswQkM2IDBCRDc7Ozs7Tjs7Ozs7CiswQkNEO1RBTUlMIFNJR04gVklSQU1BO01uOzk7TlNNOzs7OztOOzs7OzsKKzBCRDc7VEFNSUwgQVUgTEVOR1RIIE1BUks7TWM7MDtMOzs7OztOOzs7OzsKKzBCRTc7VEFNSUwgRElHSVQgT05FO05kOzA7TDs7MTsxOzE7Tjs7Ozs7CiswQkU4O1RBTUlMIERJR0lUIFRXTztOZDswO0w7OzI7MjsyO047Ozs7OworMEJFOTtUQU1JTCBESUdJVCBUSFJFRTtOZDswO0w7OzM7MzszO047Ozs7OworMEJFQTtUQU1JTCBESUdJVCBGT1VSO05kOzA7TDs7NDs0OzQ7Tjs7Ozs7CiswQkVCO1RBTUlMIERJR0lUIEZJVkU7TmQ7MDtMOzs1OzU7NTtOOzs7OzsKKzBCRUM7VEFNSUwgRElHSVQgU0lYO05kOzA7TDs7Njs2OzY7Tjs7Ozs7CiswQkVEO1RBTUlMIERJR0lUIFNFVkVOO05kOzA7TDs7Nzs3Ozc7Tjs7Ozs7CiswQkVFO1RBTUlMIERJR0lUIEVJR0hUO05kOzA7TDs7ODs4Ozg7Tjs7Ozs7CiswQkVGO1RBTUlMIERJR0lUIE5JTkU7TmQ7MDtMOzs5Ozk7OTtOOzs7OzsKKzBCRjA7VEFNSUwgTlVNQkVSIFRFTjtObzswO0w7Ozs7MTA7Tjs7Ozs7CiswQkYxO1RBTUlMIE5VTUJFUiBPTkUgSFVORFJFRDtObzswO0w7Ozs7MTAwO047Ozs7OworMEJGMjtUQU1JTCBOVU1CRVIgT05FIFRIT1VTQU5EO05vOzA7TDs7OzsxMDAwO047Ozs7OworMEMwMTtURUxVR1UgU0lHTiBDQU5EUkFCSU5EVTtNYzswO0w7Ozs7O047Ozs7OworMEMwMjtURUxVR1UgU0lHTiBBTlVTVkFSQTtNYzswO0w7Ozs7O047Ozs7OworMEMwMztURUxVR1UgU0lHTiBWSVNBUkdBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQzA1O1RFTFVHVSBMRVRURVIgQTtMbzswO0w7Ozs7O047Ozs7OworMEMwNjtURUxVR1UgTEVUVEVSIEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzA3O1RFTFVHVSBMRVRURVIgSTtMbzswO0w7Ozs7O047Ozs7OworMEMwODtURUxVR1UgTEVUVEVSIElJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzA5O1RFTFVHVSBMRVRURVIgVTtMbzswO0w7Ozs7O047Ozs7OworMEMwQTtURUxVR1UgTEVUVEVSIFVVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzBCO1RFTFVHVSBMRVRURVIgVk9DQUxJQyBSO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzBDO1RFTFVHVSBMRVRURVIgVk9DQUxJQyBMO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzBFO1RFTFVHVSBMRVRURVIgRTtMbzswO0w7Ozs7O047Ozs7OworMEMwRjtURUxVR1UgTEVUVEVSIEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzEwO1RFTFVHVSBMRVRURVIgQUk7TG87MDtMOzs7OztOOzs7OzsKKzBDMTI7VEVMVUdVIExFVFRFUiBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzEzO1RFTFVHVSBMRVRURVIgT087TG87MDtMOzs7OztOOzs7OzsKKzBDMTQ7VEVMVUdVIExFVFRFUiBBVTtMbzswO0w7Ozs7O047Ozs7OworMEMxNTtURUxVR1UgTEVUVEVSIEtBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzE2O1RFTFVHVSBMRVRURVIgS0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzE3O1RFTFVHVSBMRVRURVIgR0E7TG87MDtMOzs7OztOOzs7OzsKKzBDMTg7VEVMVUdVIExFVFRFUiBHSEE7TG87MDtMOzs7OztOOzs7OzsKKzBDMTk7VEVMVUdVIExFVFRFUiBOR0E7TG87MDtMOzs7OztOOzs7OzsKKzBDMUE7VEVMVUdVIExFVFRFUiBDQTtMbzswO0w7Ozs7O047Ozs7OworMEMxQjtURUxVR1UgTEVUVEVSIENIQTtMbzswO0w7Ozs7O047Ozs7OworMEMxQztURUxVR1UgTEVUVEVSIEpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzFEO1RFTFVHVSBMRVRURVIgSkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzFFO1RFTFVHVSBMRVRURVIgTllBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzFGO1RFTFVHVSBMRVRURVIgVFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzIwO1RFTFVHVSBMRVRURVIgVFRIQTtMbzswO0w7Ozs7O047Ozs7OworMEMyMTtURUxVR1UgTEVUVEVSIEREQTtMbzswO0w7Ozs7O047Ozs7OworMEMyMjtURUxVR1UgTEVUVEVSIERESEE7TG87MDtMOzs7OztOOzs7OzsKKzBDMjM7VEVMVUdVIExFVFRFUiBOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBDMjQ7VEVMVUdVIExFVFRFUiBUQTtMbzswO0w7Ozs7O047Ozs7OworMEMyNTtURUxVR1UgTEVUVEVSIFRIQTtMbzswO0w7Ozs7O047Ozs7OworMEMyNjtURUxVR1UgTEVUVEVSIERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzI3O1RFTFVHVSBMRVRURVIgREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzI4O1RFTFVHVSBMRVRURVIgTkE7TG87MDtMOzs7OztOOzs7OzsKKzBDMkE7VEVMVUdVIExFVFRFUiBQQTtMbzswO0w7Ozs7O047Ozs7OworMEMyQjtURUxVR1UgTEVUVEVSIFBIQTtMbzswO0w7Ozs7O047Ozs7OworMEMyQztURUxVR1UgTEVUVEVSIEJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzJEO1RFTFVHVSBMRVRURVIgQkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzJFO1RFTFVHVSBMRVRURVIgTUE7TG87MDtMOzs7OztOOzs7OzsKKzBDMkY7VEVMVUdVIExFVFRFUiBZQTtMbzswO0w7Ozs7O047Ozs7OworMEMzMDtURUxVR1UgTEVUVEVSIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzMxO1RFTFVHVSBMRVRURVIgUlJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzMyO1RFTFVHVSBMRVRURVIgTEE7TG87MDtMOzs7OztOOzs7OzsKKzBDMzM7VEVMVUdVIExFVFRFUiBMTEE7TG87MDtMOzs7OztOOzs7OzsKKzBDMzU7VEVMVUdVIExFVFRFUiBWQTtMbzswO0w7Ozs7O047Ozs7OworMEMzNjtURUxVR1UgTEVUVEVSIFNIQTtMbzswO0w7Ozs7O047Ozs7OworMEMzNztURUxVR1UgTEVUVEVSIFNTQTtMbzswO0w7Ozs7O047Ozs7OworMEMzODtURUxVR1UgTEVUVEVSIFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzM5O1RFTFVHVSBMRVRURVIgSEE7TG87MDtMOzs7OztOOzs7OzsKKzBDM0U7VEVMVUdVIFZPV0VMIFNJR04gQUE7TW47MDtOU007Ozs7O047Ozs7OworMEMzRjtURUxVR1UgVk9XRUwgU0lHTiBJO01uOzA7TlNNOzs7OztOOzs7OzsKKzBDNDA7VEVMVUdVIFZPV0VMIFNJR04gSUk7TW47MDtOU007Ozs7O047Ozs7OworMEM0MTtURUxVR1UgVk9XRUwgU0lHTiBVO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQzQyO1RFTFVHVSBWT1dFTCBTSUdOIFVVO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQzQzO1RFTFVHVSBWT1dFTCBTSUdOIFZPQ0FMSUMgUjtNYzswO0w7Ozs7O047Ozs7OworMEM0NDtURUxVR1UgVk9XRUwgU0lHTiBWT0NBTElDIFJSO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQzQ2O1RFTFVHVSBWT1dFTCBTSUdOIEU7TW47MDtOU007Ozs7O047Ozs7OworMEM0NztURUxVR1UgVk9XRUwgU0lHTiBFRTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQzQ4O1RFTFVHVSBWT1dFTCBTSUdOIEFJO01uOzA7TlNNOzBDNDYgMEM1Njs7OztOOzs7OzsKKzBDNEE7VEVMVUdVIFZPV0VMIFNJR04gTztNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQzRCO1RFTFVHVSBWT1dFTCBTSUdOIE9PO01uOzA7TlNNOzs7OztOOzs7OzsKKzBDNEM7VEVMVUdVIFZPV0VMIFNJR04gQVU7TW47MDtOU007Ozs7O047Ozs7OworMEM0RDtURUxVR1UgU0lHTiBWSVJBTUE7TW47OTtOU007Ozs7O047Ozs7OworMEM1NTtURUxVR1UgTEVOR1RIIE1BUks7TW47ODQ7TlNNOzs7OztOOzs7OzsKKzBDNTY7VEVMVUdVIEFJIExFTkdUSCBNQVJLO01uOzkxO05TTTs7Ozs7Tjs7Ozs7CiswQzYwO1RFTFVHVSBMRVRURVIgVk9DQUxJQyBSUjtMbzswO0w7Ozs7O047Ozs7OworMEM2MTtURUxVR1UgTEVUVEVSIFZPQ0FMSUMgTEw7TG87MDtMOzs7OztOOzs7OzsKKzBDNjY7VEVMVUdVIERJR0lUIFpFUk87TmQ7MDtMOzswOzA7MDtOOzs7OzsKKzBDNjc7VEVMVUdVIERJR0lUIE9ORTtOZDswO0w7OzE7MTsxO047Ozs7OworMEM2ODtURUxVR1UgRElHSVQgVFdPO05kOzA7TDs7MjsyOzI7Tjs7Ozs7CiswQzY5O1RFTFVHVSBESUdJVCBUSFJFRTtOZDswO0w7OzM7MzszO047Ozs7OworMEM2QTtURUxVR1UgRElHSVQgRk9VUjtOZDswO0w7OzQ7NDs0O047Ozs7OworMEM2QjtURUxVR1UgRElHSVQgRklWRTtOZDswO0w7OzU7NTs1O047Ozs7OworMEM2QztURUxVR1UgRElHSVQgU0lYO05kOzA7TDs7Njs2OzY7Tjs7Ozs7CiswQzZEO1RFTFVHVSBESUdJVCBTRVZFTjtOZDswO0w7Ozc7Nzs3O047Ozs7OworMEM2RTtURUxVR1UgRElHSVQgRUlHSFQ7TmQ7MDtMOzs4Ozg7ODtOOzs7OzsKKzBDNkY7VEVMVUdVIERJR0lUIE5JTkU7TmQ7MDtMOzs5Ozk7OTtOOzs7OzsKKzBDODI7S0FOTkFEQSBTSUdOIEFOVVNWQVJBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQzgzO0tBTk5BREEgU0lHTiBWSVNBUkdBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQzg1O0tBTk5BREEgTEVUVEVSIEE7TG87MDtMOzs7OztOOzs7OzsKKzBDODY7S0FOTkFEQSBMRVRURVIgQUE7TG87MDtMOzs7OztOOzs7OzsKKzBDODc7S0FOTkFEQSBMRVRURVIgSTtMbzswO0w7Ozs7O047Ozs7OworMEM4ODtLQU5OQURBIExFVFRFUiBJSTtMbzswO0w7Ozs7O047Ozs7OworMEM4OTtLQU5OQURBIExFVFRFUiBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzhBO0tBTk5BREEgTEVUVEVSIFVVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzhCO0tBTk5BREEgTEVUVEVSIFZPQ0FMSUMgUjtMbzswO0w7Ozs7O047Ozs7OworMEM4QztLQU5OQURBIExFVFRFUiBWT0NBTElDIEw7TG87MDtMOzs7OztOOzs7OzsKKzBDOEU7S0FOTkFEQSBMRVRURVIgRTtMbzswO0w7Ozs7O047Ozs7OworMEM4RjtLQU5OQURBIExFVFRFUiBFRTtMbzswO0w7Ozs7O047Ozs7OworMEM5MDtLQU5OQURBIExFVFRFUiBBSTtMbzswO0w7Ozs7O047Ozs7OworMEM5MjtLQU5OQURBIExFVFRFUiBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzkzO0tBTk5BREEgTEVUVEVSIE9PO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzk0O0tBTk5BREEgTEVUVEVSIEFVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzk1O0tBTk5BREEgTEVUVEVSIEtBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzk2O0tBTk5BREEgTEVUVEVSIEtIQTtMbzswO0w7Ozs7O047Ozs7OworMEM5NztLQU5OQURBIExFVFRFUiBHQTtMbzswO0w7Ozs7O047Ozs7OworMEM5ODtLQU5OQURBIExFVFRFUiBHSEE7TG87MDtMOzs7OztOOzs7OzsKKzBDOTk7S0FOTkFEQSBMRVRURVIgTkdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzlBO0tBTk5BREEgTEVUVEVSIENBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzlCO0tBTk5BREEgTEVUVEVSIENIQTtMbzswO0w7Ozs7O047Ozs7OworMEM5QztLQU5OQURBIExFVFRFUiBKQTtMbzswO0w7Ozs7O047Ozs7OworMEM5RDtLQU5OQURBIExFVFRFUiBKSEE7TG87MDtMOzs7OztOOzs7OzsKKzBDOUU7S0FOTkFEQSBMRVRURVIgTllBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzlGO0tBTk5BREEgTEVUVEVSIFRUQTtMbzswO0w7Ozs7O047Ozs7OworMENBMDtLQU5OQURBIExFVFRFUiBUVEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0ExO0tBTk5BREEgTEVUVEVSIEREQTtMbzswO0w7Ozs7O047Ozs7OworMENBMjtLQU5OQURBIExFVFRFUiBEREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0EzO0tBTk5BREEgTEVUVEVSIE5OQTtMbzswO0w7Ozs7O047Ozs7OworMENBNDtLQU5OQURBIExFVFRFUiBUQTtMbzswO0w7Ozs7O047Ozs7OworMENBNTtLQU5OQURBIExFVFRFUiBUSEE7TG87MDtMOzs7OztOOzs7OzsKKzBDQTY7S0FOTkFEQSBMRVRURVIgREE7TG87MDtMOzs7OztOOzs7OzsKKzBDQTc7S0FOTkFEQSBMRVRURVIgREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0E4O0tBTk5BREEgTEVUVEVSIE5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0FBO0tBTk5BREEgTEVUVEVSIFBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0FCO0tBTk5BREEgTEVUVEVSIFBIQTtMbzswO0w7Ozs7O047Ozs7OworMENBQztLQU5OQURBIExFVFRFUiBCQTtMbzswO0w7Ozs7O047Ozs7OworMENBRDtLQU5OQURBIExFVFRFUiBCSEE7TG87MDtMOzs7OztOOzs7OzsKKzBDQUU7S0FOTkFEQSBMRVRURVIgTUE7TG87MDtMOzs7OztOOzs7OzsKKzBDQUY7S0FOTkFEQSBMRVRURVIgWUE7TG87MDtMOzs7OztOOzs7OzsKKzBDQjA7S0FOTkFEQSBMRVRURVIgUkE7TG87MDtMOzs7OztOOzs7OzsKKzBDQjE7S0FOTkFEQSBMRVRURVIgUlJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0IyO0tBTk5BREEgTEVUVEVSIExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0IzO0tBTk5BREEgTEVUVEVSIExMQTtMbzswO0w7Ozs7O047Ozs7OworMENCNTtLQU5OQURBIExFVFRFUiBWQTtMbzswO0w7Ozs7O047Ozs7OworMENCNjtLQU5OQURBIExFVFRFUiBTSEE7TG87MDtMOzs7OztOOzs7OzsKKzBDQjc7S0FOTkFEQSBMRVRURVIgU1NBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0I4O0tBTk5BREEgTEVUVEVSIFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0I5O0tBTk5BREEgTEVUVEVSIEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0JFO0tBTk5BREEgVk9XRUwgU0lHTiBBQTtNYzswO0w7Ozs7O047Ozs7OworMENCRjtLQU5OQURBIFZPV0VMIFNJR04gSTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQ0MwO0tBTk5BREEgVk9XRUwgU0lHTiBJSTtNYzswO0w7MENCRiAwQ0Q1Ozs7O047Ozs7OworMENDMTtLQU5OQURBIFZPV0VMIFNJR04gVTtNYzswO0w7Ozs7O047Ozs7OworMENDMjtLQU5OQURBIFZPV0VMIFNJR04gVVU7TWM7MDtMOzs7OztOOzs7OzsKKzBDQzM7S0FOTkFEQSBWT1dFTCBTSUdOIFZPQ0FMSUMgUjtNYzswO0w7Ozs7O047Ozs7OworMENDNDtLQU5OQURBIFZPV0VMIFNJR04gVk9DQUxJQyBSUjtNYzswO0w7Ozs7O047Ozs7OworMENDNjtLQU5OQURBIFZPV0VMIFNJR04gRTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQ0M3O0tBTk5BREEgVk9XRUwgU0lHTiBFRTtNYzswO0w7MENDNiAwQ0Q1Ozs7O047Ozs7OworMENDODtLQU5OQURBIFZPV0VMIFNJR04gQUk7TWM7MDtMOzBDQzYgMENENjs7OztOOzs7OzsKKzBDQ0E7S0FOTkFEQSBWT1dFTCBTSUdOIE87TWM7MDtMOzBDQzYgMENDMjs7OztOOzs7OzsKKzBDQ0I7S0FOTkFEQSBWT1dFTCBTSUdOIE9PO01jOzA7TDswQ0NBIDBDRDU7Ozs7Tjs7Ozs7CiswQ0NDO0tBTk5BREEgVk9XRUwgU0lHTiBBVTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQ0NEO0tBTk5BREEgU0lHTiBWSVJBTUE7TW47OTtOU007Ozs7O047Ozs7OworMENENTtLQU5OQURBIExFTkdUSCBNQVJLO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQ0Q2O0tBTk5BREEgQUkgTEVOR1RIIE1BUks7TWM7MDtMOzs7OztOOzs7OzsKKzBDREU7S0FOTkFEQSBMRVRURVIgRkE7TG87MDtMOzs7OztOOzs7OzsKKzBDRTA7S0FOTkFEQSBMRVRURVIgVk9DQUxJQyBSUjtMbzswO0w7Ozs7O047Ozs7OworMENFMTtLQU5OQURBIExFVFRFUiBWT0NBTElDIExMO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0U2O0tBTk5BREEgRElHSVQgWkVSTztOZDswO0w7OzA7MDswO047Ozs7OworMENFNztLQU5OQURBIERJR0lUIE9ORTtOZDswO0w7OzE7MTsxO047Ozs7OworMENFODtLQU5OQURBIERJR0lUIFRXTztOZDswO0w7OzI7MjsyO047Ozs7OworMENFOTtLQU5OQURBIERJR0lUIFRIUkVFO05kOzA7TDs7MzszOzM7Tjs7Ozs7CiswQ0VBO0tBTk5BREEgRElHSVQgRk9VUjtOZDswO0w7OzQ7NDs0O047Ozs7OworMENFQjtLQU5OQURBIERJR0lUIEZJVkU7TmQ7MDtMOzs1OzU7NTtOOzs7OzsKKzBDRUM7S0FOTkFEQSBESUdJVCBTSVg7TmQ7MDtMOzs2OzY7NjtOOzs7OzsKKzBDRUQ7S0FOTkFEQSBESUdJVCBTRVZFTjtOZDswO0w7Ozc7Nzs3O047Ozs7OworMENFRTtLQU5OQURBIERJR0lUIEVJR0hUO05kOzA7TDs7ODs4Ozg7Tjs7Ozs7CiswQ0VGO0tBTk5BREEgRElHSVQgTklORTtOZDswO0w7Ozk7OTs5O047Ozs7OworMEQwMjtNQUxBWUFMQU0gU0lHTiBBTlVTVkFSQTtNYzswO0w7Ozs7O047Ozs7OworMEQwMztNQUxBWUFMQU0gU0lHTiBWSVNBUkdBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswRDA1O01BTEFZQUxBTSBMRVRURVIgQTtMbzswO0w7Ozs7O047Ozs7OworMEQwNjtNQUxBWUFMQU0gTEVUVEVSIEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDA3O01BTEFZQUxBTSBMRVRURVIgSTtMbzswO0w7Ozs7O047Ozs7OworMEQwODtNQUxBWUFMQU0gTEVUVEVSIElJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDA5O01BTEFZQUxBTSBMRVRURVIgVTtMbzswO0w7Ozs7O047Ozs7OworMEQwQTtNQUxBWUFMQU0gTEVUVEVSIFVVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDBCO01BTEFZQUxBTSBMRVRURVIgVk9DQUxJQyBSO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDBDO01BTEFZQUxBTSBMRVRURVIgVk9DQUxJQyBMO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDBFO01BTEFZQUxBTSBMRVRURVIgRTtMbzswO0w7Ozs7O047Ozs7OworMEQwRjtNQUxBWUFMQU0gTEVUVEVSIEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDEwO01BTEFZQUxBTSBMRVRURVIgQUk7TG87MDtMOzs7OztOOzs7OzsKKzBEMTI7TUFMQVlBTEFNIExFVFRFUiBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDEzO01BTEFZQUxBTSBMRVRURVIgT087TG87MDtMOzs7OztOOzs7OzsKKzBEMTQ7TUFMQVlBTEFNIExFVFRFUiBBVTtMbzswO0w7Ozs7O047Ozs7OworMEQxNTtNQUxBWUFMQU0gTEVUVEVSIEtBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDE2O01BTEFZQUxBTSBMRVRURVIgS0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDE3O01BTEFZQUxBTSBMRVRURVIgR0E7TG87MDtMOzs7OztOOzs7OzsKKzBEMTg7TUFMQVlBTEFNIExFVFRFUiBHSEE7TG87MDtMOzs7OztOOzs7OzsKKzBEMTk7TUFMQVlBTEFNIExFVFRFUiBOR0E7TG87MDtMOzs7OztOOzs7OzsKKzBEMUE7TUFMQVlBTEFNIExFVFRFUiBDQTtMbzswO0w7Ozs7O047Ozs7OworMEQxQjtNQUxBWUFMQU0gTEVUVEVSIENIQTtMbzswO0w7Ozs7O047Ozs7OworMEQxQztNQUxBWUFMQU0gTEVUVEVSIEpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDFEO01BTEFZQUxBTSBMRVRURVIgSkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDFFO01BTEFZQUxBTSBMRVRURVIgTllBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDFGO01BTEFZQUxBTSBMRVRURVIgVFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDIwO01BTEFZQUxBTSBMRVRURVIgVFRIQTtMbzswO0w7Ozs7O047Ozs7OworMEQyMTtNQUxBWUFMQU0gTEVUVEVSIEREQTtMbzswO0w7Ozs7O047Ozs7OworMEQyMjtNQUxBWUFMQU0gTEVUVEVSIERESEE7TG87MDtMOzs7OztOOzs7OzsKKzBEMjM7TUFMQVlBTEFNIExFVFRFUiBOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEMjQ7TUFMQVlBTEFNIExFVFRFUiBUQTtMbzswO0w7Ozs7O047Ozs7OworMEQyNTtNQUxBWUFMQU0gTEVUVEVSIFRIQTtMbzswO0w7Ozs7O047Ozs7OworMEQyNjtNQUxBWUFMQU0gTEVUVEVSIERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDI3O01BTEFZQUxBTSBMRVRURVIgREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDI4O01BTEFZQUxBTSBMRVRURVIgTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEMkE7TUFMQVlBTEFNIExFVFRFUiBQQTtMbzswO0w7Ozs7O047Ozs7OworMEQyQjtNQUxBWUFMQU0gTEVUVEVSIFBIQTtMbzswO0w7Ozs7O047Ozs7OworMEQyQztNQUxBWUFMQU0gTEVUVEVSIEJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDJEO01BTEFZQUxBTSBMRVRURVIgQkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDJFO01BTEFZQUxBTSBMRVRURVIgTUE7TG87MDtMOzs7OztOOzs7OzsKKzBEMkY7TUFMQVlBTEFNIExFVFRFUiBZQTtMbzswO0w7Ozs7O047Ozs7OworMEQzMDtNQUxBWUFMQU0gTEVUVEVSIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDMxO01BTEFZQUxBTSBMRVRURVIgUlJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDMyO01BTEFZQUxBTSBMRVRURVIgTEE7TG87MDtMOzs7OztOOzs7OzsKKzBEMzM7TUFMQVlBTEFNIExFVFRFUiBMTEE7TG87MDtMOzs7OztOOzs7OzsKKzBEMzQ7TUFMQVlBTEFNIExFVFRFUiBMTExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDM1O01BTEFZQUxBTSBMRVRURVIgVkE7TG87MDtMOzs7OztOOzs7OzsKKzBEMzY7TUFMQVlBTEFNIExFVFRFUiBTSEE7TG87MDtMOzs7OztOOzs7OzsKKzBEMzc7TUFMQVlBTEFNIExFVFRFUiBTU0E7TG87MDtMOzs7OztOOzs7OzsKKzBEMzg7TUFMQVlBTEFNIExFVFRFUiBTQTtMbzswO0w7Ozs7O047Ozs7OworMEQzOTtNQUxBWUFMQU0gTEVUVEVSIEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDNFO01BTEFZQUxBTSBWT1dFTCBTSUdOIEFBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswRDNGO01BTEFZQUxBTSBWT1dFTCBTSUdOIEk7TWM7MDtMOzs7OztOOzs7OzsKKzBENDA7TUFMQVlBTEFNIFZPV0VMIFNJR04gSUk7TWM7MDtMOzs7OztOOzs7OzsKKzBENDE7TUFMQVlBTEFNIFZPV0VMIFNJR04gVTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRDQyO01BTEFZQUxBTSBWT1dFTCBTSUdOIFVVO01uOzA7TlNNOzs7OztOOzs7OzsKKzBENDM7TUFMQVlBTEFNIFZPV0VMIFNJR04gVk9DQUxJQyBSO01uOzA7TlNNOzs7OztOOzs7OzsKKzBENDY7TUFMQVlBTEFNIFZPV0VMIFNJR04gRTtNYzswO0w7Ozs7O047Ozs7OworMEQ0NztNQUxBWUFMQU0gVk9XRUwgU0lHTiBFRTtNYzswO0w7Ozs7O047Ozs7OworMEQ0ODtNQUxBWUFMQU0gVk9XRUwgU0lHTiBBSTtNYzswO0w7Ozs7O047Ozs7OworMEQ0QTtNQUxBWUFMQU0gVk9XRUwgU0lHTiBPO01jOzA7TDswRDQ2IDBEM0U7Ozs7Tjs7Ozs7CiswRDRCO01BTEFZQUxBTSBWT1dFTCBTSUdOIE9PO01jOzA7TDswRDQ3IDBEM0U7Ozs7Tjs7Ozs7CiswRDRDO01BTEFZQUxBTSBWT1dFTCBTSUdOIEFVO01jOzA7TDswRDQ2IDBENTc7Ozs7Tjs7Ozs7CiswRDREO01BTEFZQUxBTSBTSUdOIFZJUkFNQTtNbjs5O05TTTs7Ozs7Tjs7Ozs7CiswRDU3O01BTEFZQUxBTSBBVSBMRU5HVEggTUFSSztNYzswO0w7Ozs7O047Ozs7OworMEQ2MDtNQUxBWUFMQU0gTEVUVEVSIFZPQ0FMSUMgUlI7TG87MDtMOzs7OztOOzs7OzsKKzBENjE7TUFMQVlBTEFNIExFVFRFUiBWT0NBTElDIExMO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDY2O01BTEFZQUxBTSBESUdJVCBaRVJPO05kOzA7TDs7MDswOzA7Tjs7Ozs7CiswRDY3O01BTEFZQUxBTSBESUdJVCBPTkU7TmQ7MDtMOzsxOzE7MTtOOzs7OzsKKzBENjg7TUFMQVlBTEFNIERJR0lUIFRXTztOZDswO0w7OzI7MjsyO047Ozs7OworMEQ2OTtNQUxBWUFMQU0gRElHSVQgVEhSRUU7TmQ7MDtMOzszOzM7MztOOzs7OzsKKzBENkE7TUFMQVlBTEFNIERJR0lUIEZPVVI7TmQ7MDtMOzs0OzQ7NDtOOzs7OzsKKzBENkI7TUFMQVlBTEFNIERJR0lUIEZJVkU7TmQ7MDtMOzs1OzU7NTtOOzs7OzsKKzBENkM7TUFMQVlBTEFNIERJR0lUIFNJWDtOZDswO0w7OzY7Njs2O047Ozs7OworMEQ2RDtNQUxBWUFMQU0gRElHSVQgU0VWRU47TmQ7MDtMOzs3Ozc7NztOOzs7OzsKKzBENkU7TUFMQVlBTEFNIERJR0lUIEVJR0hUO05kOzA7TDs7ODs4Ozg7Tjs7Ozs7CiswRDZGO01BTEFZQUxBTSBESUdJVCBOSU5FO05kOzA7TDs7OTs5Ozk7Tjs7Ozs7CiswRDgyO1NJTkhBTEEgU0lHTiBBTlVTVkFSQVlBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswRDgzO1NJTkhBTEEgU0lHTiBWSVNBUkdBWUE7TWM7MDtMOzs7OztOOzs7OzsKKzBEODU7U0lOSEFMQSBMRVRURVIgQVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDg2O1NJTkhBTEEgTEVUVEVSIEFBWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEODc7U0lOSEFMQSBMRVRURVIgQUVZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMEQ4ODtTSU5IQUxBIExFVFRFUiBBRUVZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMEQ4OTtTSU5IQUxBIExFVFRFUiBJWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEOEE7U0lOSEFMQSBMRVRURVIgSUlZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMEQ4QjtTSU5IQUxBIExFVFRFUiBVWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEOEM7U0lOSEFMQSBMRVRURVIgVVVZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMEQ4RDtTSU5IQUxBIExFVFRFUiBJUlVZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMEQ4RTtTSU5IQUxBIExFVFRFUiBJUlVVWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEOEY7U0lOSEFMQSBMRVRURVIgSUxVWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEOTA7U0lOSEFMQSBMRVRURVIgSUxVVVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDkxO1NJTkhBTEEgTEVUVEVSIEVZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMEQ5MjtTSU5IQUxBIExFVFRFUiBFRVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDkzO1NJTkhBTEEgTEVUVEVSIEFJWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEOTQ7U0lOSEFMQSBMRVRURVIgT1lBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDk1O1NJTkhBTEEgTEVUVEVSIE9PWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEOTY7U0lOSEFMQSBMRVRURVIgQVVZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMEQ5QTtTSU5IQUxBIExFVFRFUiBBTFBBUFJBQU5BIEtBWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEOUI7U0lOSEFMQSBMRVRURVIgTUFIQUFQUkFBTkEgS0FZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMEQ5QztTSU5IQUxBIExFVFRFUiBBTFBBUFJBQU5BIEdBWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEOUQ7U0lOSEFMQSBMRVRURVIgTUFIQUFQUkFBTkEgR0FZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMEQ5RTtTSU5IQUxBIExFVFRFUiBLQU5UQUpBIE5BQVNJS1lBWUE7TG87MDtMOzs7OztOOzs7OzsKKzBEOUY7U0lOSEFMQSBMRVRURVIgU0FOWUFLQSBHQVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswREEwO1NJTkhBTEEgTEVUVEVSIEFMUEFQUkFBTkEgQ0FZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMERBMTtTSU5IQUxBIExFVFRFUiBNQUhBQVBSQUFOQSBDQVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswREEyO1NJTkhBTEEgTEVUVEVSIEFMUEFQUkFBTkEgSkFZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMERBMztTSU5IQUxBIExFVFRFUiBNQUhBQVBSQUFOQSBKQVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswREE0O1NJTkhBTEEgTEVUVEVSIFRBQUxVSkEgTkFBU0lLWUFZQTtMbzswO0w7Ozs7O047Ozs7OworMERBNTtTSU5IQUxBIExFVFRFUiBUQUFMVUpBIFNBTllPT0dBIE5BQUtTSUtZQVlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswREE2O1NJTkhBTEEgTEVUVEVSIFNBTllBS0EgSkFZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMERBNztTSU5IQUxBIExFVFRFUiBBTFBBUFJBQU5BIFRUQVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswREE4O1NJTkhBTEEgTEVUVEVSIE1BSEFBUFJBQU5BIFRUQVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswREE5O1NJTkhBTEEgTEVUVEVSIEFMUEFQUkFBTkEgRERBWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEQUE7U0lOSEFMQSBMRVRURVIgTUFIQUFQUkFBTkEgRERBWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEQUI7U0lOSEFMQSBMRVRURVIgTVVVUkRIQUpBIE5BWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEQUM7U0lOSEFMQSBMRVRURVIgU0FOWUFLQSBEREFZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMERBRDtTSU5IQUxBIExFVFRFUiBBTFBBUFJBQU5BIFRBWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEQUU7U0lOSEFMQSBMRVRURVIgTUFIQUFQUkFBTkEgVEFZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMERBRjtTSU5IQUxBIExFVFRFUiBBTFBBUFJBQU5BIERBWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEQjA7U0lOSEFMQSBMRVRURVIgTUFIQUFQUkFBTkEgREFZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMERCMTtTSU5IQUxBIExFVFRFUiBEQU5UQUpBIE5BWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEQjM7U0lOSEFMQSBMRVRURVIgU0FOWUFLQSBEQVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswREI0O1NJTkhBTEEgTEVUVEVSIEFMUEFQUkFBTkEgUEFZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMERCNTtTSU5IQUxBIExFVFRFUiBNQUhBQVBSQUFOQSBQQVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswREI2O1NJTkhBTEEgTEVUVEVSIEFMUEFQUkFBTkEgQkFZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMERCNztTSU5IQUxBIExFVFRFUiBNQUhBQVBSQUFOQSBCQVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswREI4O1NJTkhBTEEgTEVUVEVSIE1BWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEQjk7U0lOSEFMQSBMRVRURVIgQU1CQSBCQVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswREJBO1NJTkhBTEEgTEVUVEVSIFlBWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEQkI7U0lOSEFMQSBMRVRURVIgUkFZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMERCRDtTSU5IQUxBIExFVFRFUiBEQU5UQUpBIExBWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEQzA7U0lOSEFMQSBMRVRURVIgVkFZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMERDMTtTSU5IQUxBIExFVFRFUiBUQUFMVUpBIFNBWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEQzI7U0lOSEFMQSBMRVRURVIgTVVVUkRIQUpBIFNBWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEQzM7U0lOSEFMQSBMRVRURVIgREFOVEFKQSBTQVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswREM0O1NJTkhBTEEgTEVUVEVSIEhBWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEQzU7U0lOSEFMQSBMRVRURVIgTVVVUkRIQUpBIExBWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEQzY7U0lOSEFMQSBMRVRURVIgRkFZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMERDQTtTSU5IQUxBIFNJR04gQUwtTEFLVU5BO01uOzk7TlNNOzs7OztOOzs7OzsKKzBEQ0Y7U0lOSEFMQSBWT1dFTCBTSUdOIEFFTEEtUElMTEE7TWM7MDtMOzs7OztOOzs7OzsKKzBERDA7U0lOSEFMQSBWT1dFTCBTSUdOIEtFVFRJIEFFREEtUElMTEE7TWM7MDtMOzs7OztOOzs7OzsKKzBERDE7U0lOSEFMQSBWT1dFTCBTSUdOIERJR0EgQUVEQS1QSUxMQTtNYzswO0w7Ozs7O047Ozs7OworMEREMjtTSU5IQUxBIFZPV0VMIFNJR04gS0VUVEkgSVMtUElMTEE7TW47MDtOU007Ozs7O047Ozs7OworMEREMztTSU5IQUxBIFZPV0VMIFNJR04gRElHQSBJUy1QSUxMQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswREQ0O1NJTkhBTEEgVk9XRUwgU0lHTiBLRVRUSSBQQUEtUElMTEE7TW47MDtOU007Ozs7O047Ozs7OworMERENjtTSU5IQUxBIFZPV0VMIFNJR04gRElHQSBQQUEtUElMTEE7TW47MDtOU007Ozs7O047Ozs7OworMEREODtTSU5IQUxBIFZPV0VMIFNJR04gR0FFVFRBLVBJTExBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswREQ5O1NJTkhBTEEgVk9XRUwgU0lHTiBLT01CVVZBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswRERBO1NJTkhBTEEgVk9XRUwgU0lHTiBESUdBIEtPTUJVVkE7TWM7MDtMOzBERDkgMERDQTs7OztOOzs7OzsKKzBEREI7U0lOSEFMQSBWT1dFTCBTSUdOIEtPTUJVIERFS0E7TWM7MDtMOzs7OztOOzs7OzsKKzBEREM7U0lOSEFMQSBWT1dFTCBTSUdOIEtPTUJVVkEgSEFBIEFFTEEtUElMTEE7TWM7MDtMOzBERDkgMERDRjs7OztOOzs7OzsKKzBEREQ7U0lOSEFMQSBWT1dFTCBTSUdOIEtPTUJVVkEgSEFBIERJR0EgQUVMQS1QSUxMQTtNYzswO0w7MEREQyAwRENBOzs7O047Ozs7OworMERERTtTSU5IQUxBIFZPV0VMIFNJR04gS09NQlVWQSBIQUEgR0FZQU5VS0lUVEE7TWM7MDtMOzBERDkgMERERjs7OztOOzs7OzsKKzBEREY7U0lOSEFMQSBWT1dFTCBTSUdOIEdBWUFOVUtJVFRBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswREYyO1NJTkhBTEEgVk9XRUwgU0lHTiBESUdBIEdBRVRUQS1QSUxMQTtNYzswO0w7Ozs7O047Ozs7OworMERGMztTSU5IQUxBIFZPV0VMIFNJR04gRElHQSBHQVlBTlVLSVRUQTtNYzswO0w7Ozs7O047Ozs7OworMERGNDtTSU5IQUxBIFBVTkNUVUFUSU9OIEtVTkREQUxJWUE7UG87MDtMOzs7OztOOzs7OzsKKzBFMDE7VEhBSSBDSEFSQUNURVIgS08gS0FJO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBLTyBLQUk7Ozs7CiswRTAyO1RIQUkgQ0hBUkFDVEVSIEtITyBLSEFJO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBLSE8gS0hBSTs7OzsKKzBFMDM7VEhBSSBDSEFSQUNURVIgS0hPIEtIVUFUO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBLSE8gS0hVQVQ7Ozs7CiswRTA0O1RIQUkgQ0hBUkFDVEVSIEtITyBLSFdBSTtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgS0hPIEtIV0FJOzs7OworMEUwNTtUSEFJIENIQVJBQ1RFUiBLSE8gS0hPTjtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgS0hPIEtIT047Ozs7CiswRTA2O1RIQUkgQ0hBUkFDVEVSIEtITyBSQUtIQU5HO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBLSE8gUkFLSEFORzs7OzsKKzBFMDc7VEhBSSBDSEFSQUNURVIgTkdPIE5HVTtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgTkdPIE5HVTs7OzsKKzBFMDg7VEhBSSBDSEFSQUNURVIgQ0hPIENIQU47TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIENITyBDSEFOOzs7OworMEUwOTtUSEFJIENIQVJBQ1RFUiBDSE8gQ0hJTkc7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIENITyBDSElORzs7OzsKKzBFMEE7VEhBSSBDSEFSQUNURVIgQ0hPIENIQU5HO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBDSE8gQ0hBTkc7Ozs7CiswRTBCO1RIQUkgQ0hBUkFDVEVSIFNPIFNPO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBTTyBTTzs7OzsKKzBFMEM7VEhBSSBDSEFSQUNURVIgQ0hPIENIT0U7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIENITyBDSE9FOzs7OworMEUwRDtUSEFJIENIQVJBQ1RFUiBZTyBZSU5HO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBZTyBZSU5HOzs7OworMEUwRTtUSEFJIENIQVJBQ1RFUiBETyBDSEFEQTtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgRE8gQ0hBREE7Ozs7CiswRTBGO1RIQUkgQ0hBUkFDVEVSIFRPIFBBVEFLO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBUTyBQQVRBSzs7OzsKKzBFMTA7VEhBSSBDSEFSQUNURVIgVEhPIFRIQU47TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFRITyBUSEFOOzs7OworMEUxMTtUSEFJIENIQVJBQ1RFUiBUSE8gTkFOR01PTlRITztMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgVEhPIE5BTkdNT05USE87Ozs7CiswRTEyO1RIQUkgQ0hBUkFDVEVSIFRITyBQSFVUSEFPO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBUSE8gUEhVVEhBTzs7OzsKKzBFMTM7VEhBSSBDSEFSQUNURVIgTk8gTkVOO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBOTyBORU47Ozs7CiswRTE0O1RIQUkgQ0hBUkFDVEVSIERPIERFSztMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgRE8gREVLOzs7OworMEUxNTtUSEFJIENIQVJBQ1RFUiBUTyBUQU87TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFRPIFRBTzs7OzsKKzBFMTY7VEhBSSBDSEFSQUNURVIgVEhPIFRIVU5HO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBUSE8gVEhVTkc7Ozs7CiswRTE3O1RIQUkgQ0hBUkFDVEVSIFRITyBUSEFIQU47TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFRITyBUSEFIQU47Ozs7CiswRTE4O1RIQUkgQ0hBUkFDVEVSIFRITyBUSE9ORztMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgVEhPIFRIT05HOzs7OworMEUxOTtUSEFJIENIQVJBQ1RFUiBOTyBOVTtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgTk8gTlU7Ozs7CiswRTFBO1RIQUkgQ0hBUkFDVEVSIEJPIEJBSU1BSTtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgQk8gQkFJTUFJOzs7OworMEUxQjtUSEFJIENIQVJBQ1RFUiBQTyBQTEE7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFBPIFBMQTs7OzsKKzBFMUM7VEhBSSBDSEFSQUNURVIgUEhPIFBIVU5HO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBQSE8gUEhVTkc7Ozs7CiswRTFEO1RIQUkgQ0hBUkFDVEVSIEZPIEZBO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBGTyBGQTs7OzsKKzBFMUU7VEhBSSBDSEFSQUNURVIgUEhPIFBIQU47TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFBITyBQSEFOOzs7OworMEUxRjtUSEFJIENIQVJBQ1RFUiBGTyBGQU47TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIEZPIEZBTjs7OzsKKzBFMjA7VEhBSSBDSEFSQUNURVIgUEhPIFNBTVBIQU87TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFBITyBTQU1QSEFPOzs7OworMEUyMTtUSEFJIENIQVJBQ1RFUiBNTyBNQTtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgTU8gTUE7Ozs7CiswRTIyO1RIQUkgQ0hBUkFDVEVSIFlPIFlBSztMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgWU8gWUFLOzs7OworMEUyMztUSEFJIENIQVJBQ1RFUiBSTyBSVUE7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFJPIFJVQTs7OzsKKzBFMjQ7VEhBSSBDSEFSQUNURVIgUlU7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFJVOzs7OworMEUyNTtUSEFJIENIQVJBQ1RFUiBMTyBMSU5HO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBMTyBMSU5HOzs7OworMEUyNjtUSEFJIENIQVJBQ1RFUiBMVTtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgTFU7Ozs7CiswRTI3O1RIQUkgQ0hBUkFDVEVSIFdPIFdBRU47TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFdPIFdBRU47Ozs7CiswRTI4O1RIQUkgQ0hBUkFDVEVSIFNPIFNBTEE7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFNPIFNBTEE7Ozs7CiswRTI5O1RIQUkgQ0hBUkFDVEVSIFNPIFJVU0k7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFNPIFJVU0k7Ozs7CiswRTJBO1RIQUkgQ0hBUkFDVEVSIFNPIFNVQTtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgU08gU1VBOzs7OworMEUyQjtUSEFJIENIQVJBQ1RFUiBITyBISVA7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIEhPIEhJUDs7OzsKKzBFMkM7VEhBSSBDSEFSQUNURVIgTE8gQ0hVTEE7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIExPIENIVUxBOzs7OworMEUyRDtUSEFJIENIQVJBQ1RFUiBPIEFORztMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgTyBBTkc7Ozs7CiswRTJFO1RIQUkgQ0hBUkFDVEVSIEhPIE5PS0hVSztMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgSE8gTk9LIEhVSzs7OzsKKzBFMkY7VEhBSSBDSEFSQUNURVIgUEFJWUFOTk9JO0xvOzA7TDs7Ozs7TjtUSEFJIFBBSSBZQU4gTk9JO3BhaXlhbiBub2k7OzsKKzBFMzA7VEhBSSBDSEFSQUNURVIgU0FSQSBBO0xvOzA7TDs7Ozs7TjtUSEFJIFZPV0VMIFNJR04gU0FSQSBBOzs7OworMEUzMTtUSEFJIENIQVJBQ1RFUiBNQUkgSEFOLUFLQVQ7TW47MDtOU007Ozs7O047VEhBSSBWT1dFTCBTSUdOIE1BSSBIQU4tQUtBVDs7OzsKKzBFMzI7VEhBSSBDSEFSQUNURVIgU0FSQSBBQTtMbzswO0w7Ozs7O047VEhBSSBWT1dFTCBTSUdOIFNBUkEgQUE7Ozs7CiswRTMzO1RIQUkgQ0hBUkFDVEVSIFNBUkEgQU07TG87MDtMOzxjb21wYXQ+IDBFNEQgMEUzMjs7OztOO1RIQUkgVk9XRUwgU0lHTiBTQVJBIEFNOzs7OworMEUzNDtUSEFJIENIQVJBQ1RFUiBTQVJBIEk7TW47MDtOU007Ozs7O047VEhBSSBWT1dFTCBTSUdOIFNBUkEgSTs7OzsKKzBFMzU7VEhBSSBDSEFSQUNURVIgU0FSQSBJSTtNbjswO05TTTs7Ozs7TjtUSEFJIFZPV0VMIFNJR04gU0FSQSBJSTs7OzsKKzBFMzY7VEhBSSBDSEFSQUNURVIgU0FSQSBVRTtNbjswO05TTTs7Ozs7TjtUSEFJIFZPV0VMIFNJR04gU0FSQSBVRTs7OzsKKzBFMzc7VEhBSSBDSEFSQUNURVIgU0FSQSBVRUU7TW47MDtOU007Ozs7O047VEhBSSBWT1dFTCBTSUdOIFNBUkEgVUVFO3NhcmEgdXVlOzs7CiswRTM4O1RIQUkgQ0hBUkFDVEVSIFNBUkEgVTtNbjsxMDM7TlNNOzs7OztOO1RIQUkgVk9XRUwgU0lHTiBTQVJBIFU7Ozs7CiswRTM5O1RIQUkgQ0hBUkFDVEVSIFNBUkEgVVU7TW47MTAzO05TTTs7Ozs7TjtUSEFJIFZPV0VMIFNJR04gU0FSQSBVVTs7OzsKKzBFM0E7VEhBSSBDSEFSQUNURVIgUEhJTlRIVTtNbjs5O05TTTs7Ozs7TjtUSEFJIFZPV0VMIFNJR04gUEhJTlRIVTs7OzsKKzBFM0Y7VEhBSSBDVVJSRU5DWSBTWU1CT0wgQkFIVDtTYzswO0VUOzs7OztOO1RIQUkgQkFIVCBTSUdOOzs7OworMEU0MDtUSEFJIENIQVJBQ1RFUiBTQVJBIEU7TG87MDtMOzs7OztOO1RIQUkgVk9XRUwgU0lHTiBTQVJBIEU7Ozs7CiswRTQxO1RIQUkgQ0hBUkFDVEVSIFNBUkEgQUU7TG87MDtMOzs7OztOO1RIQUkgVk9XRUwgU0lHTiBTQVJBIEFFOzs7OworMEU0MjtUSEFJIENIQVJBQ1RFUiBTQVJBIE87TG87MDtMOzs7OztOO1RIQUkgVk9XRUwgU0lHTiBTQVJBIE87Ozs7CiswRTQzO1RIQUkgQ0hBUkFDVEVSIFNBUkEgQUkgTUFJTVVBTjtMbzswO0w7Ozs7O047VEhBSSBWT1dFTCBTSUdOIFNBUkEgTUFJIE1VQU47c2FyYSBhaSBtYWkgbXVhbjs7OworMEU0NDtUSEFJIENIQVJBQ1RFUiBTQVJBIEFJIE1BSU1BTEFJO0xvOzA7TDs7Ozs7TjtUSEFJIFZPV0VMIFNJR04gU0FSQSBNQUkgTUFMQUk7c2FyYSBhaSBtYWkgbWFsYWk7OzsKKzBFNDU7VEhBSSBDSEFSQUNURVIgTEFLS0hBTkdZQU87TG87MDtMOzs7OztOO1RIQUkgTEFLIEtIQU5HIFlBTztsYWtraGFuZyB5YW87OzsKKzBFNDY7VEhBSSBDSEFSQUNURVIgTUFJWUFNT0s7TG07MDtMOzs7OztOO1RIQUkgTUFJIFlBTU9LO21haSB5YW1vazs7OworMEU0NztUSEFJIENIQVJBQ1RFUiBNQUlUQUlLSFU7TW47MDtOU007Ozs7O047VEhBSSBWT1dFTCBTSUdOIE1BSSBUQUkgS0hVO21haSB0YWlraHU7OzsKKzBFNDg7VEhBSSBDSEFSQUNURVIgTUFJIEVLO01uOzEwNztOU007Ozs7O047VEhBSSBUT05FIE1BSSBFSzs7OzsKKzBFNDk7VEhBSSBDSEFSQUNURVIgTUFJIFRITztNbjsxMDc7TlNNOzs7OztOO1RIQUkgVE9ORSBNQUkgVEhPOzs7OworMEU0QTtUSEFJIENIQVJBQ1RFUiBNQUkgVFJJO01uOzEwNztOU007Ozs7O047VEhBSSBUT05FIE1BSSBUUkk7Ozs7CiswRTRCO1RIQUkgQ0hBUkFDVEVSIE1BSSBDSEFUVEFXQTtNbjsxMDc7TlNNOzs7OztOO1RIQUkgVE9ORSBNQUkgQ0hBVFRBV0E7Ozs7CiswRTRDO1RIQUkgQ0hBUkFDVEVSIFRIQU5USEFLSEFUO01uOzA7TlNNOzs7OztOO1RIQUkgVEhBTlRIQUtIQVQ7Ozs7CiswRTREO1RIQUkgQ0hBUkFDVEVSIE5JS0hBSElUO01uOzA7TlNNOzs7OztOO1RIQUkgTklLS0hBSElUO25pa2toYWhpdDs7OworMEU0RTtUSEFJIENIQVJBQ1RFUiBZQU1BS0tBTjtNbjswO05TTTs7Ozs7TjtUSEFJIFlBTUFLS0FOOzs7OworMEU0RjtUSEFJIENIQVJBQ1RFUiBGT05HTUFOO1BvOzA7TDs7Ozs7TjtUSEFJIEZPTkdNQU47Ozs7CiswRTUwO1RIQUkgRElHSVQgWkVSTztOZDswO0w7OzA7MDswO047Ozs7OworMEU1MTtUSEFJIERJR0lUIE9ORTtOZDswO0w7OzE7MTsxO047Ozs7OworMEU1MjtUSEFJIERJR0lUIFRXTztOZDswO0w7OzI7MjsyO047Ozs7OworMEU1MztUSEFJIERJR0lUIFRIUkVFO05kOzA7TDs7MzszOzM7Tjs7Ozs7CiswRTU0O1RIQUkgRElHSVQgRk9VUjtOZDswO0w7OzQ7NDs0O047Ozs7OworMEU1NTtUSEFJIERJR0lUIEZJVkU7TmQ7MDtMOzs1OzU7NTtOOzs7OzsKKzBFNTY7VEhBSSBESUdJVCBTSVg7TmQ7MDtMOzs2OzY7NjtOOzs7OzsKKzBFNTc7VEhBSSBESUdJVCBTRVZFTjtOZDswO0w7Ozc7Nzs3O047Ozs7OworMEU1ODtUSEFJIERJR0lUIEVJR0hUO05kOzA7TDs7ODs4Ozg7Tjs7Ozs7CiswRTU5O1RIQUkgRElHSVQgTklORTtOZDswO0w7Ozk7OTs5O047Ozs7OworMEU1QTtUSEFJIENIQVJBQ1RFUiBBTkdLSEFOS0hVO1BvOzA7TDs7Ozs7TjtUSEFJIEFOR0tIQU5LSFU7Ozs7CiswRTVCO1RIQUkgQ0hBUkFDVEVSIEtIT01VVDtQbzswO0w7Ozs7O047VEhBSSBLSE9NVVQ7Ozs7CiswRTgxO0xBTyBMRVRURVIgS087TG87MDtMOzs7OztOOzs7OzsKKzBFODI7TEFPIExFVFRFUiBLSE8gU1VORztMbzswO0w7Ozs7O047Ozs7OworMEU4NDtMQU8gTEVUVEVSIEtITyBUQU07TG87MDtMOzs7OztOOzs7OzsKKzBFODc7TEFPIExFVFRFUiBOR087TG87MDtMOzs7OztOOzs7OzsKKzBFODg7TEFPIExFVFRFUiBDTztMbzswO0w7Ozs7O047Ozs7OworMEU4QTtMQU8gTEVUVEVSIFNPIFRBTTtMbzswO0w7Ozs7O047Ozs7OworMEU4RDtMQU8gTEVUVEVSIE5ZTztMbzswO0w7Ozs7O047Ozs7OworMEU5NDtMQU8gTEVUVEVSIERPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRTk1O0xBTyBMRVRURVIgVE87TG87MDtMOzs7OztOOzs7OzsKKzBFOTY7TEFPIExFVFRFUiBUSE8gU1VORztMbzswO0w7Ozs7O047Ozs7OworMEU5NztMQU8gTEVUVEVSIFRITyBUQU07TG87MDtMOzs7OztOOzs7OzsKKzBFOTk7TEFPIExFVFRFUiBOTztMbzswO0w7Ozs7O047Ozs7OworMEU5QTtMQU8gTEVUVEVSIEJPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRTlCO0xBTyBMRVRURVIgUE87TG87MDtMOzs7OztOOzs7OzsKKzBFOUM7TEFPIExFVFRFUiBQSE8gU1VORztMbzswO0w7Ozs7O047Ozs7OworMEU5RDtMQU8gTEVUVEVSIEZPIFRBTTtMbzswO0w7Ozs7O047Ozs7OworMEU5RTtMQU8gTEVUVEVSIFBITyBUQU07TG87MDtMOzs7OztOOzs7OzsKKzBFOUY7TEFPIExFVFRFUiBGTyBTVU5HO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRUExO0xBTyBMRVRURVIgTU87TG87MDtMOzs7OztOOzs7OzsKKzBFQTI7TEFPIExFVFRFUiBZTztMbzswO0w7Ozs7O047Ozs7OworMEVBMztMQU8gTEVUVEVSIExPIExJTkc7TG87MDtMOzs7OztOOzs7OzsKKzBFQTU7TEFPIExFVFRFUiBMTyBMT09UO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRUE3O0xBTyBMRVRURVIgV087TG87MDtMOzs7OztOOzs7OzsKKzBFQUE7TEFPIExFVFRFUiBTTyBTVU5HO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRUFCO0xBTyBMRVRURVIgSE8gU1VORztMbzswO0w7Ozs7O047Ozs7OworMEVBRDtMQU8gTEVUVEVSIE87TG87MDtMOzs7OztOOzs7OzsKKzBFQUU7TEFPIExFVFRFUiBITyBUQU07TG87MDtMOzs7OztOOzs7OzsKKzBFQUY7TEFPIEVMTElQU0lTO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRUIwO0xBTyBWT1dFTCBTSUdOIEE7TG87MDtMOzs7OztOOzs7OzsKKzBFQjE7TEFPIFZPV0VMIFNJR04gTUFJIEtBTjtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRUIyO0xBTyBWT1dFTCBTSUdOIEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRUIzO0xBTyBWT1dFTCBTSUdOIEFNO0xvOzA7TDs8Y29tcGF0PiAwRUNEIDBFQjI7Ozs7Tjs7Ozs7CiswRUI0O0xBTyBWT1dFTCBTSUdOIEk7TW47MDtOU007Ozs7O047Ozs7OworMEVCNTtMQU8gVk9XRUwgU0lHTiBJSTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRUI2O0xBTyBWT1dFTCBTSUdOIFk7TW47MDtOU007Ozs7O047Ozs7OworMEVCNztMQU8gVk9XRUwgU0lHTiBZWTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRUI4O0xBTyBWT1dFTCBTSUdOIFU7TW47MTE4O05TTTs7Ozs7Tjs7Ozs7CiswRUI5O0xBTyBWT1dFTCBTSUdOIFVVO01uOzExODtOU007Ozs7O047Ozs7OworMEVCQjtMQU8gVk9XRUwgU0lHTiBNQUkgS09OO01uOzA7TlNNOzs7OztOOzs7OzsKKzBFQkM7TEFPIFNFTUlWT1dFTCBTSUdOIExPO01uOzA7TlNNOzs7OztOOzs7OzsKKzBFQkQ7TEFPIFNFTUlWT1dFTCBTSUdOIE5ZTztMbzswO0w7Ozs7O047Ozs7OworMEVDMDtMQU8gVk9XRUwgU0lHTiBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRUMxO0xBTyBWT1dFTCBTSUdOIEVJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRUMyO0xBTyBWT1dFTCBTSUdOIE87TG87MDtMOzs7OztOOzs7OzsKKzBFQzM7TEFPIFZPV0VMIFNJR04gQVk7TG87MDtMOzs7OztOOzs7OzsKKzBFQzQ7TEFPIFZPV0VMIFNJR04gQUk7TG87MDtMOzs7OztOOzs7OzsKKzBFQzY7TEFPIEtPIExBO0xtOzA7TDs7Ozs7Tjs7Ozs7CiswRUM4O0xBTyBUT05FIE1BSSBFSztNbjsxMjI7TlNNOzs7OztOOzs7OzsKKzBFQzk7TEFPIFRPTkUgTUFJIFRITztNbjsxMjI7TlNNOzs7OztOOzs7OzsKKzBFQ0E7TEFPIFRPTkUgTUFJIFRJO01uOzEyMjtOU007Ozs7O047Ozs7OworMEVDQjtMQU8gVE9ORSBNQUkgQ0FUQVdBO01uOzEyMjtOU007Ozs7O047Ozs7OworMEVDQztMQU8gQ0FOQ0VMTEFUSU9OIE1BUks7TW47MDtOU007Ozs7O047Ozs7OworMEVDRDtMQU8gTklHR0FISVRBO01uOzA7TlNNOzs7OztOOzs7OzsKKzBFRDA7TEFPIERJR0lUIFpFUk87TmQ7MDtMOzswOzA7MDtOOzs7OzsKKzBFRDE7TEFPIERJR0lUIE9ORTtOZDswO0w7OzE7MTsxO047Ozs7OworMEVEMjtMQU8gRElHSVQgVFdPO05kOzA7TDs7MjsyOzI7Tjs7Ozs7CiswRUQzO0xBTyBESUdJVCBUSFJFRTtOZDswO0w7OzM7MzszO047Ozs7OworMEVENDtMQU8gRElHSVQgRk9VUjtOZDswO0w7OzQ7NDs0O047Ozs7OworMEVENTtMQU8gRElHSVQgRklWRTtOZDswO0w7OzU7NTs1O047Ozs7OworMEVENjtMQU8gRElHSVQgU0lYO05kOzA7TDs7Njs2OzY7Tjs7Ozs7CiswRUQ3O0xBTyBESUdJVCBTRVZFTjtOZDswO0w7Ozc7Nzs3O047Ozs7OworMEVEODtMQU8gRElHSVQgRUlHSFQ7TmQ7MDtMOzs4Ozg7ODtOOzs7OzsKKzBFRDk7TEFPIERJR0lUIE5JTkU7TmQ7MDtMOzs5Ozk7OTtOOzs7OzsKKzBFREM7TEFPIEhPIE5PO0xvOzA7TDs8Y29tcGF0PiAwRUFCIDBFOTk7Ozs7Tjs7Ozs7CiswRUREO0xBTyBITyBNTztMbzswO0w7PGNvbXBhdD4gMEVBQiAwRUExOzs7O047Ozs7OworMEYwMDtUSUJFVEFOIFNZTExBQkxFIE9NO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjAxO1RJQkVUQU4gTUFSSyBHVEVSIFlJRyBNR08gVFJVTkNBVEVEIEE7U287MDtMOzs7OztOOzt0ZXIgeWlrIGdvIGEgdGh1bmc7OzsKKzBGMDI7VElCRVRBTiBNQVJLIEdURVIgWUlHIE1HTyAtVU0gUk5BTSBCQ0FEIE1BO1NvOzA7TDs7Ozs7Tjs7dGVyIHlpayBnbyB3dW0gbmFtIGNoZXkgbWE7OzsKKzBGMDM7VElCRVRBTiBNQVJLIEdURVIgWUlHIE1HTyAtVU0gR1RFUiBUU0hFRyBNQTtTbzswO0w7Ozs7O047O3RlciB5aWsgZ28gd3VtIHRlciB0c2VrIG1hOzs7CiswRjA0O1RJQkVUQU4gTUFSSyBJTklUSUFMIFlJRyBNR08gTURVTiBNQTtQbzswO0w7Ozs7O047VElCRVRBTiBTSU5HTEUgT1JOQU1FTlQ7eWlrIGdvIGR1biBtYTs7OworMEYwNTtUSUJFVEFOIE1BUksgQ0xPU0lORyBZSUcgTUdPIFNHQUIgTUE7UG87MDtMOzs7OztOOzt5aWsgZ28ga2FiIG1hOzs7CiswRjA2O1RJQkVUQU4gTUFSSyBDQVJFVCBZSUcgTUdPIFBIVVIgU0hBRCBNQTtQbzswO0w7Ozs7O047O3lpayBnbyBwdXIgc2hleSBtYTs7OworMEYwNztUSUJFVEFOIE1BUksgWUlHIE1HTyBUU0hFRyBTSEFEIE1BO1BvOzA7TDs7Ozs7Tjs7eWlrIGdvIHRzZWsgc2hleSBtYTs7OworMEYwODtUSUJFVEFOIE1BUksgU0JSVUwgU0hBRDtQbzswO0w7Ozs7O047VElCRVRBTiBSR1lBTlNIQUQ7ZHJ1bCBzaGV5Ozs7CiswRjA5O1RJQkVUQU4gTUFSSyBCU0tVUiBZSUcgTUdPO1BvOzA7TDs7Ozs7Tjs7a3VyIHlpayBnbzs7OworMEYwQTtUSUJFVEFOIE1BUksgQktBLSBTSE9HIFlJRyBNR087UG87MDtMOzs7OztOOztrYSBzaG8geWlrIGdvOzs7CiswRjBCO1RJQkVUQU4gTUFSSyBJTlRFUlNZTExBQklDIFRTSEVHO1BvOzA7TDs7Ozs7TjtUSUJFVEFOIFRTRUc7dHNlazs7OworMEYwQztUSUJFVEFOIE1BUksgREVMSU1JVEVSIFRTSEVHIEJTVEFSO1BvOzA7TDs8bm9CcmVhaz4gMEYwQjs7OztOOzt0c2VrIHRhcjs7OworMEYwRDtUSUJFVEFOIE1BUksgU0hBRDtQbzswO0w7Ozs7O047VElCRVRBTiBTSEFEO3NoZXk7OzsKKzBGMEU7VElCRVRBTiBNQVJLIE5ZSVMgU0hBRDtQbzswO0w7Ozs7O047VElCRVRBTiBET1VCTEUgU0hBRDtueWkgc2hleTs7OworMEYwRjtUSUJFVEFOIE1BUksgVFNIRUcgU0hBRDtQbzswO0w7Ozs7O047O3RzZWsgc2hleTs7OworMEYxMDtUSUJFVEFOIE1BUksgTllJUyBUU0hFRyBTSEFEO1BvOzA7TDs7Ozs7Tjs7bnlpIHRzZWsgc2hleTs7OworMEYxMTtUSUJFVEFOIE1BUksgUklOIENIRU4gU1BVTkdTIFNIQUQ7UG87MDtMOzs7OztOO1RJQkVUQU4gUklOQ0hBTlBIVU5HU0hBRDtyaW5jaGVuIHB1bmcgc2hleTs7OworMEYxMjtUSUJFVEFOIE1BUksgUkdZQSBHUkFNIFNIQUQ7UG87MDtMOzs7OztOOztneWEgdHJhbSBzaGV5Ozs7CiswRjEzO1RJQkVUQU4gTUFSSyBDQVJFVCAtRFpVRCBSVEFHUyBNRSBMT05HIENBTjtTbzswO0w7Ozs7O047O2R6dSB0YSBtZSBsb25nIGNoZW47OzsKKzBGMTQ7VElCRVRBTiBNQVJLIEdURVIgVFNIRUc7U287MDtMOzs7OztOO1RJQkVUQU4gQ09NTUE7dGVyIHRzZWs7OzsKKzBGMTU7VElCRVRBTiBMT0dPVFlQRSBTSUdOIENIQUQgUlRBR1M7U287MDtMOzs7OztOOztjaGUgdGE7OzsKKzBGMTY7VElCRVRBTiBMT0dPVFlQRSBTSUdOIExIQUcgUlRBR1M7U287MDtMOzs7OztOOztobGFrIHRhOzs7CiswRjE3O1RJQkVUQU4gQVNUUk9MT0dJQ0FMIFNJR04gU0dSQSBHQ0FOIC1DSEFSIFJUQUdTO1NvOzA7TDs7Ozs7Tjs7dHJhY2hlbiBjaGFyIHRhOzs7CiswRjE4O1RJQkVUQU4gQVNUUk9MT0dJQ0FMIFNJR04gLUtIWVVEIFBBO01uOzIyMDtOU007Ozs7O047O2t5dSBwYTs7OworMEYxOTtUSUJFVEFOIEFTVFJPTE9HSUNBTCBTSUdOIFNET05HIFRTSFVHUztNbjsyMjA7TlNNOzs7OztOOztkb25nIHRzdTs7OworMEYxQTtUSUJFVEFOIFNJR04gUkRFTCBES0FSIEdDSUc7U287MDtMOzs7OztOOztkZWthIGNoaWc7OzsKKzBGMUI7VElCRVRBTiBTSUdOIFJERUwgREtBUiBHTllJUztTbzswO0w7Ozs7O047O2Rla2EgbnlpOzs7CiswRjFDO1RJQkVUQU4gU0lHTiBSREVMIERLQVIgR1NVTTtTbzswO0w7Ozs7O047O2Rla2Egc3VtOzs7CiswRjFEO1RJQkVUQU4gU0lHTiBSREVMIE5BRyBHQ0lHO1NvOzA7TDs7Ozs7Tjs7ZGVuYSBjaGlnOzs7CiswRjFFO1RJQkVUQU4gU0lHTiBSREVMIE5BRyBHTllJUztTbzswO0w7Ozs7O047O2RlbmEgbnlpOzs7CiswRjFGO1RJQkVUQU4gU0lHTiBSREVMIERLQVIgUkRFTCBOQUc7U287MDtMOzs7OztOOztkZWthIGRlbmE7OzsKKzBGMjA7VElCRVRBTiBESUdJVCBaRVJPO05kOzA7TDs7MDswOzA7Tjs7Ozs7CiswRjIxO1RJQkVUQU4gRElHSVQgT05FO05kOzA7TDs7MTsxOzE7Tjs7Ozs7CiswRjIyO1RJQkVUQU4gRElHSVQgVFdPO05kOzA7TDs7MjsyOzI7Tjs7Ozs7CiswRjIzO1RJQkVUQU4gRElHSVQgVEhSRUU7TmQ7MDtMOzszOzM7MztOOzs7OzsKKzBGMjQ7VElCRVRBTiBESUdJVCBGT1VSO05kOzA7TDs7NDs0OzQ7Tjs7Ozs7CiswRjI1O1RJQkVUQU4gRElHSVQgRklWRTtOZDswO0w7OzU7NTs1O047Ozs7OworMEYyNjtUSUJFVEFOIERJR0lUIFNJWDtOZDswO0w7OzY7Njs2O047Ozs7OworMEYyNztUSUJFVEFOIERJR0lUIFNFVkVOO05kOzA7TDs7Nzs3Ozc7Tjs7Ozs7CiswRjI4O1RJQkVUQU4gRElHSVQgRUlHSFQ7TmQ7MDtMOzs4Ozg7ODtOOzs7OzsKKzBGMjk7VElCRVRBTiBESUdJVCBOSU5FO05kOzA7TDs7OTs5Ozk7Tjs7Ozs7CiswRjJBO1RJQkVUQU4gRElHSVQgSEFMRiBPTkU7Tm87MDtMOzs7OzEvMjtOOzs7OzsKKzBGMkI7VElCRVRBTiBESUdJVCBIQUxGIFRXTztObzswO0w7Ozs7My8yO047Ozs7OworMEYyQztUSUJFVEFOIERJR0lUIEhBTEYgVEhSRUU7Tm87MDtMOzs7OzUvMjtOOzs7OzsKKzBGMkQ7VElCRVRBTiBESUdJVCBIQUxGIEZPVVI7Tm87MDtMOzs7OzcvMjtOOzs7OzsKKzBGMkU7VElCRVRBTiBESUdJVCBIQUxGIEZJVkU7Tm87MDtMOzs7OzkvMjtOOzs7OzsKKzBGMkY7VElCRVRBTiBESUdJVCBIQUxGIFNJWDtObzswO0w7Ozs7MTEvMjtOOzs7OzsKKzBGMzA7VElCRVRBTiBESUdJVCBIQUxGIFNFVkVOO05vOzA7TDs7OzsxMy8yO047Ozs7OworMEYzMTtUSUJFVEFOIERJR0lUIEhBTEYgRUlHSFQ7Tm87MDtMOzs7OzE1LzI7Tjs7Ozs7CiswRjMyO1RJQkVUQU4gRElHSVQgSEFMRiBOSU5FO05vOzA7TDs7OzsxNy8yO047Ozs7OworMEYzMztUSUJFVEFOIERJR0lUIEhBTEYgWkVSTztObzswO0w7Ozs7LTEvMjtOOzs7OzsKKzBGMzQ7VElCRVRBTiBNQVJLIEJTRFVTIFJUQUdTO1NvOzA7TDs7Ozs7Tjs7ZHUgdGE7OzsKKzBGMzU7VElCRVRBTiBNQVJLIE5HQVMgQlpVTkcgTllJIFpMQTtNbjsyMjA7TlNNOzs7OztOO1RJQkVUQU4gSE9OT1JJRklDIFVOREVSIFJJTkc7bmdlIHp1bmcgbnlpIGRhOzs7CiswRjM2O1RJQkVUQU4gTUFSSyBDQVJFVCAtRFpVRCBSVEFHUyBCWkhJIE1JRyBDQU47U287MDtMOzs7OztOOztkenUgdGEgc2hpIG1pZyBjaGVuOzs7CiswRjM3O1RJQkVUQU4gTUFSSyBOR0FTIEJaVU5HIFNHT1IgUlRBR1M7TW47MjIwO05TTTs7Ozs7TjtUSUJFVEFOIFVOREVSIFJJTkc7bmdlIHp1bmcgZ29yIHRhOzs7CiswRjM4O1RJQkVUQU4gTUFSSyBDSEUgTUdPO1NvOzA7TDs7Ozs7Tjs7Y2hlIGdvOzs7CiswRjM5O1RJQkVUQU4gTUFSSyBUU0EgLVBIUlU7TW47MjE2O05TTTs7Ozs7TjtUSUJFVEFOIExFTklUSU9OIE1BUks7dHNhIHRydTs7OworMEYzQTtUSUJFVEFOIE1BUksgR1VHIFJUQUdTIEdZT047UHM7MDtPTjs7Ozs7Tjs7Z3VnIHRhIHl1bjs7OworMEYzQjtUSUJFVEFOIE1BUksgR1VHIFJUQUdTIEdZQVM7UGU7MDtPTjs7Ozs7Tjs7Z3VnIHRhIHllOzs7CiswRjNDO1RJQkVUQU4gTUFSSyBBTkcgS0hBTkcgR1lPTjtQczswO09OOzs7OztOO1RJQkVUQU4gTEVGVCBCUkFDRTthbmcga2FuZyB5dW47OzsKKzBGM0Q7VElCRVRBTiBNQVJLIEFORyBLSEFORyBHWUFTO1BlOzA7T047Ozs7O047VElCRVRBTiBSSUdIVCBCUkFDRTthbmcga2FuZyB5ZTs7OworMEYzRTtUSUJFVEFOIFNJR04gWUFSIFRTSEVTO01jOzA7TDs7Ozs7Tjs7eWFyIHRzZTs7OworMEYzRjtUSUJFVEFOIFNJR04gTUFSIFRTSEVTO01jOzA7TDs7Ozs7Tjs7bWFyIHRzZTs7OworMEY0MDtUSUJFVEFOIExFVFRFUiBLQTtMbzswO0w7Ozs7O047Ozs7OworMEY0MTtUSUJFVEFOIExFVFRFUiBLSEE7TG87MDtMOzs7OztOOzs7OzsKKzBGNDI7VElCRVRBTiBMRVRURVIgR0E7TG87MDtMOzs7OztOOzs7OzsKKzBGNDM7VElCRVRBTiBMRVRURVIgR0hBO0xvOzA7TDswRjQyIDBGQjc7Ozs7Tjs7Ozs7CiswRjQ0O1RJQkVUQU4gTEVUVEVSIE5HQTtMbzswO0w7Ozs7O047Ozs7OworMEY0NTtUSUJFVEFOIExFVFRFUiBDQTtMbzswO0w7Ozs7O047Ozs7OworMEY0NjtUSUJFVEFOIExFVFRFUiBDSEE7TG87MDtMOzs7OztOOzs7OzsKKzBGNDc7VElCRVRBTiBMRVRURVIgSkE7TG87MDtMOzs7OztOOzs7OzsKKzBGNDk7VElCRVRBTiBMRVRURVIgTllBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjRBO1RJQkVUQU4gTEVUVEVSIFRUQTtMbzswO0w7Ozs7O047VElCRVRBTiBMRVRURVIgUkVWRVJTRUQgVEE7Ozs7CiswRjRCO1RJQkVUQU4gTEVUVEVSIFRUSEE7TG87MDtMOzs7OztOO1RJQkVUQU4gTEVUVEVSIFJFVkVSU0VEIFRIQTs7OzsKKzBGNEM7VElCRVRBTiBMRVRURVIgRERBO0xvOzA7TDs7Ozs7TjtUSUJFVEFOIExFVFRFUiBSRVZFUlNFRCBEQTs7OzsKKzBGNEQ7VElCRVRBTiBMRVRURVIgRERIQTtMbzswO0w7MEY0QyAwRkI3Ozs7O047Ozs7OworMEY0RTtUSUJFVEFOIExFVFRFUiBOTkE7TG87MDtMOzs7OztOO1RJQkVUQU4gTEVUVEVSIFJFVkVSU0VEIE5BOzs7OworMEY0RjtUSUJFVEFOIExFVFRFUiBUQTtMbzswO0w7Ozs7O047Ozs7OworMEY1MDtUSUJFVEFOIExFVFRFUiBUSEE7TG87MDtMOzs7OztOOzs7OzsKKzBGNTE7VElCRVRBTiBMRVRURVIgREE7TG87MDtMOzs7OztOOzs7OzsKKzBGNTI7VElCRVRBTiBMRVRURVIgREhBO0xvOzA7TDswRjUxIDBGQjc7Ozs7Tjs7Ozs7CiswRjUzO1RJQkVUQU4gTEVUVEVSIE5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjU0O1RJQkVUQU4gTEVUVEVSIFBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjU1O1RJQkVUQU4gTEVUVEVSIFBIQTtMbzswO0w7Ozs7O047Ozs7OworMEY1NjtUSUJFVEFOIExFVFRFUiBCQTtMbzswO0w7Ozs7O047Ozs7OworMEY1NztUSUJFVEFOIExFVFRFUiBCSEE7TG87MDtMOzBGNTYgMEZCNzs7OztOOzs7OzsKKzBGNTg7VElCRVRBTiBMRVRURVIgTUE7TG87MDtMOzs7OztOOzs7OzsKKzBGNTk7VElCRVRBTiBMRVRURVIgVFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjVBO1RJQkVUQU4gTEVUVEVSIFRTSEE7TG87MDtMOzs7OztOOzs7OzsKKzBGNUI7VElCRVRBTiBMRVRURVIgRFpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjVDO1RJQkVUQU4gTEVUVEVSIERaSEE7TG87MDtMOzBGNUIgMEZCNzs7OztOOzs7OzsKKzBGNUQ7VElCRVRBTiBMRVRURVIgV0E7TG87MDtMOzs7OztOOzs7OzsKKzBGNUU7VElCRVRBTiBMRVRURVIgWkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjVGO1RJQkVUQU4gTEVUVEVSIFpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjYwO1RJQkVUQU4gTEVUVEVSIC1BO0xvOzA7TDs7Ozs7TjtUSUJFVEFOIExFVFRFUiBBQTs7OzsKKzBGNjE7VElCRVRBTiBMRVRURVIgWUE7TG87MDtMOzs7OztOOzs7OzsKKzBGNjI7VElCRVRBTiBMRVRURVIgUkE7TG87MDtMOzs7OztOOzsqOzs7CiswRjYzO1RJQkVUQU4gTEVUVEVSIExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjY0O1RJQkVUQU4gTEVUVEVSIFNIQTtMbzswO0w7Ozs7O047Ozs7OworMEY2NTtUSUJFVEFOIExFVFRFUiBTU0E7TG87MDtMOzs7OztOO1RJQkVUQU4gTEVUVEVSIFJFVkVSU0VEIFNIQTs7OzsKKzBGNjY7VElCRVRBTiBMRVRURVIgU0E7TG87MDtMOzs7OztOOzs7OzsKKzBGNjc7VElCRVRBTiBMRVRURVIgSEE7TG87MDtMOzs7OztOOzs7OzsKKzBGNjg7VElCRVRBTiBMRVRURVIgQTtMbzswO0w7Ozs7O047Ozs7OworMEY2OTtUSUJFVEFOIExFVFRFUiBLU1NBO0xvOzA7TDswRjQwIDBGQjU7Ozs7Tjs7Ozs7CiswRjZBO1RJQkVUQU4gTEVUVEVSIEZJWEVELUZPUk0gUkE7TG87MDtMOzs7OztOOzsqOzs7CiswRjcxO1RJQkVUQU4gVk9XRUwgU0lHTiBBQTtNbjsxMjk7TlNNOzs7OztOOzs7OzsKKzBGNzI7VElCRVRBTiBWT1dFTCBTSUdOIEk7TW47MTMwO05TTTs7Ozs7Tjs7Ozs7CiswRjczO1RJQkVUQU4gVk9XRUwgU0lHTiBJSTtNbjswO05TTTswRjcxIDBGNzI7Ozs7Tjs7Ozs7CiswRjc0O1RJQkVUQU4gVk9XRUwgU0lHTiBVO01uOzEzMjtOU007Ozs7O047Ozs7OworMEY3NTtUSUJFVEFOIFZPV0VMIFNJR04gVVU7TW47MDtOU007MEY3MSAwRjc0Ozs7O047Ozs7OworMEY3NjtUSUJFVEFOIFZPV0VMIFNJR04gVk9DQUxJQyBSO01uOzA7TlNNOzBGQjIgMEY4MDs7OztOOzs7OzsKKzBGNzc7VElCRVRBTiBWT1dFTCBTSUdOIFZPQ0FMSUMgUlI7TW47MDtOU007PGNvbXBhdD4gMEZCMiAwRjgxOzs7O047Ozs7OworMEY3ODtUSUJFVEFOIFZPV0VMIFNJR04gVk9DQUxJQyBMO01uOzA7TlNNOzBGQjMgMEY4MDs7OztOOzs7OzsKKzBGNzk7VElCRVRBTiBWT1dFTCBTSUdOIFZPQ0FMSUMgTEw7TW47MDtOU007PGNvbXBhdD4gMEZCMyAwRjgxOzs7O047Ozs7OworMEY3QTtUSUJFVEFOIFZPV0VMIFNJR04gRTtNbjsxMzA7TlNNOzs7OztOOzs7OzsKKzBGN0I7VElCRVRBTiBWT1dFTCBTSUdOIEVFO01uOzEzMDtOU007Ozs7O047VElCRVRBTiBWT1dFTCBTSUdOIEFJOzs7OworMEY3QztUSUJFVEFOIFZPV0VMIFNJR04gTztNbjsxMzA7TlNNOzs7OztOOzs7OzsKKzBGN0Q7VElCRVRBTiBWT1dFTCBTSUdOIE9PO01uOzEzMDtOU007Ozs7O047VElCRVRBTiBWT1dFTCBTSUdOIEFVOzs7OworMEY3RTtUSUJFVEFOIFNJR04gUkpFUyBTVSBOR0EgUk87TW47MDtOU007Ozs7O047VElCRVRBTiBBTlVTVkFSQTtqZSBzdSBuZ2Egcm87OzsKKzBGN0Y7VElCRVRBTiBTSUdOIFJOQU0gQkNBRDtNYzswO0w7Ozs7O047VElCRVRBTiBWSVNBUkdBO25hbSBjaGV5Ozs7CiswRjgwO1RJQkVUQU4gVk9XRUwgU0lHTiBSRVZFUlNFRCBJO01uOzEzMDtOU007Ozs7O047VElCRVRBTiBWT1dFTCBTSUdOIFNIT1JUIEk7Ozs7CiswRjgxO1RJQkVUQU4gVk9XRUwgU0lHTiBSRVZFUlNFRCBJSTtNbjswO05TTTswRjcxIDBGODA7Ozs7Tjs7Ozs7CiswRjgyO1RJQkVUQU4gU0lHTiBOWUkgWkxBIE5BQSBEQTtNbjsyMzA7TlNNOzs7OztOO1RJQkVUQU4gQ0FORFJBQklORFUgV0lUSCBPUk5BTUVOVDtueWkgZGEgbmEgZGE7OzsKKzBGODM7VElCRVRBTiBTSUdOIFNOQSBMREFOO01uOzIzMDtOU007Ozs7O047VElCRVRBTiBDQU5EUkFCSU5EVTtuYW4gZGU7OzsKKzBGODQ7VElCRVRBTiBNQVJLIEhBTEFOVEE7TW47OTtOU007Ozs7O047VElCRVRBTiBWSVJBTUE7Ozs7CiswRjg1O1RJQkVUQU4gTUFSSyBQQUxVVEE7UG87MDtMOzs7OztOO1RJQkVUQU4gQ0hVQ0hFTllJR0U7Ozs7CiswRjg2O1RJQkVUQU4gU0lHTiBMQ0kgUlRBR1M7TW47MjMwO05TTTs7Ozs7Tjs7amkgdGE7OzsKKzBGODc7VElCRVRBTiBTSUdOIFlBTkcgUlRBR1M7TW47MjMwO05TTTs7Ozs7Tjs7eWFuZyB0YTs7OworMEY4ODtUSUJFVEFOIFNJR04gTENFIFRTQSBDQU47TG87MDtMOzs7OztOOztjaGUgdHNhIGNoZW47OzsKKzBGODk7VElCRVRBTiBTSUdOIE1DSFUgQ0FOO0xvOzA7TDs7Ozs7Tjs7Y2h1IGNoZW47OzsKKzBGOEE7VElCRVRBTiBTSUdOIEdSVSBDQU4gUkdZSU5HUztMbzswO0w7Ozs7O047O3RydSBjaGVuIGdpbmc7OzsKKzBGOEI7VElCRVRBTiBTSUdOIEdSVSBNRUQgUkdZSU5HUztMbzswO0w7Ozs7O047O3RydSBtZSBnaW5nOzs7CiswRjkwO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBLQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRjkxO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBLSEE7TW47MDtOU007Ozs7O047Ozs7OworMEY5MjtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgR0E7TW47MDtOU007Ozs7O047Ozs7OworMEY5MztUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgR0hBO01uOzA7TlNNOzBGOTIgMEZCNzs7OztOOzs7OzsKKzBGOTQ7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIE5HQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRjk1O1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBDQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRjk2O1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBDSEE7TW47MDtOU007Ozs7O047Ozs7OworMEY5NztUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgSkE7TW47MDtOU007Ozs7O047Ozs7OworMEY5OTtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgTllBO01uOzA7TlNNOzs7OztOOzs7OzsKKzBGOUE7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIFRUQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRjlCO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBUVEhBO01uOzA7TlNNOzs7OztOOzs7OzsKKzBGOUM7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIEREQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRjlEO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBEREhBO01uOzA7TlNNOzBGOUMgMEZCNzs7OztOOzs7OzsKKzBGOUU7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIE5OQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRjlGO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBUQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRkEwO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBUSEE7TW47MDtOU007Ozs7O047Ozs7OworMEZBMTtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgREE7TW47MDtOU007Ozs7O047Ozs7OworMEZBMjtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgREhBO01uOzA7TlNNOzBGQTEgMEZCNzs7OztOOzs7OzsKKzBGQTM7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIE5BO01uOzA7TlNNOzs7OztOOzs7OzsKKzBGQTQ7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIFBBO01uOzA7TlNNOzs7OztOOzs7OzsKKzBGQTU7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIFBIQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRkE2O1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBCQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRkE3O1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBCSEE7TW47MDtOU007MEZBNiAwRkI3Ozs7O047Ozs7OworMEZBODtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgTUE7TW47MDtOU007Ozs7O047Ozs7OworMEZBOTtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgVFNBO01uOzA7TlNNOzs7OztOOzs7OzsKKzBGQUE7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIFRTSEE7TW47MDtOU007Ozs7O047Ozs7OworMEZBQjtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgRFpBO01uOzA7TlNNOzs7OztOOzs7OzsKKzBGQUM7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIERaSEE7TW47MDtOU007MEZBQiAwRkI3Ozs7O047Ozs7OworMEZBRDtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgV0E7TW47MDtOU007Ozs7O047Oyo7OzsKKzBGQUU7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIFpIQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRkFGO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBaQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRkIwO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiAtQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRkIxO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBZQTtNbjswO05TTTs7Ozs7Tjs7Kjs7OworMEZCMjtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgUkE7TW47MDtOU007Ozs7O047Oyo7OzsKKzBGQjM7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIExBO01uOzA7TlNNOzs7OztOOzs7OzsKKzBGQjQ7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIFNIQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRkI1O1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBTU0E7TW47MDtOU007Ozs7O047Ozs7OworMEZCNjtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgU0E7TW47MDtOU007Ozs7O047Ozs7OworMEZCNztUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgSEE7TW47MDtOU007Ozs7O047Ozs7OworMEZCODtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRkI5O1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBLU1NBO01uOzA7TlNNOzBGOTAgMEZCNTs7OztOOzs7OzsKKzBGQkE7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIEZJWEVELUZPUk0gV0E7TW47MDtOU007Ozs7O047Oyo7OzsKKzBGQkI7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIEZJWEVELUZPUk0gWUE7TW47MDtOU007Ozs7O047Oyo7OzsKKzBGQkM7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIEZJWEVELUZPUk0gUkE7TW47MDtOU007Ozs7O047Oyo7OzsKKzBGQkU7VElCRVRBTiBLVSBSVSBLSEE7U287MDtMOzs7OztOOztrdXJ1a2E7OzsKKzBGQkY7VElCRVRBTiBLVSBSVSBLSEEgQlpISSBNSUcgQ0FOO1NvOzA7TDs7Ozs7Tjs7a3VydWthIHNoaSBtaWsgY2hlbjs7OworMEZDMDtUSUJFVEFOIENBTlRJTExBVElPTiBTSUdOIEhFQVZZIEJFQVQ7U287MDtMOzs7OztOOzs7OzsKKzBGQzE7VElCRVRBTiBDQU5USUxMQVRJT04gU0lHTiBMSUdIVCBCRUFUO1NvOzA7TDs7Ozs7Tjs7Ozs7CiswRkMyO1RJQkVUQU4gQ0FOVElMTEFUSU9OIFNJR04gQ0FORyBURS1VO1NvOzA7TDs7Ozs7Tjs7Y2hhbmcgdHl1Ozs7CiswRkMzO1RJQkVUQU4gQ0FOVElMTEFUSU9OIFNJR04gU0JVQiAtQ0hBTDtTbzswO0w7Ozs7O047O2J1YiBjaGV5Ozs7CiswRkM0O1RJQkVUQU4gU1lNQk9MIERSSUwgQlU7U287MDtMOzs7OztOOztkcmlsYnU7OzsKKzBGQzU7VElCRVRBTiBTWU1CT0wgUkRPIFJKRTtTbzswO0w7Ozs7O047O2RvcmplOzs7CiswRkM2O1RJQkVUQU4gU1lNQk9MIFBBRE1BIEdEQU47TW47MjIwO05TTTs7Ozs7Tjs7cGVtYSBkZW47OzsKKzBGQzc7VElCRVRBTiBTWU1CT0wgUkRPIFJKRSBSR1lBIEdSQU07U287MDtMOzs7OztOOztkb3JqZSBneWEgZHJhbTs7OworMEZDODtUSUJFVEFOIFNZTUJPTCBQSFVSIFBBO1NvOzA7TDs7Ozs7Tjs7cGh1cmJhOzs7CiswRkM5O1RJQkVUQU4gU1lNQk9MIE5PUiBCVTtTbzswO0w7Ozs7O047O25vcmJ1Ozs7CiswRkNBO1RJQkVUQU4gU1lNQk9MIE5PUiBCVSBOWUlTIC1LSFlJTDtTbzswO0w7Ozs7O047O25vcmJ1IG55aSBraHlpOzs7CiswRkNCO1RJQkVUQU4gU1lNQk9MIE5PUiBCVSBHU1VNIC1LSFlJTDtTbzswO0w7Ozs7O047O25vcmJ1IHN1bSBraHlpOzs7CiswRkNDO1RJQkVUQU4gU1lNQk9MIE5PUiBCVSBCWkhJIC1LSFlJTDtTbzswO0w7Ozs7O047O25vcmJ1IHNoaSBraHlpOzs7CiswRkNGO1RJQkVUQU4gU0lHTiBSREVMIE5BRyBHU1VNO1NvOzA7TDs7Ozs7Tjs7ZGVuYSBzdW07OzsKKzEwMDA7TVlBTk1BUiBMRVRURVIgS0E7TG87MDtMOzs7OztOOzs7OzsKKzEwMDE7TVlBTk1BUiBMRVRURVIgS0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDAyO01ZQU5NQVIgTEVUVEVSIEdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDAzO01ZQU5NQVIgTEVUVEVSIEdIQTtMbzswO0w7Ozs7O047Ozs7OworMTAwNDtNWUFOTUFSIExFVFRFUiBOR0E7TG87MDtMOzs7OztOOzs7OzsKKzEwMDU7TVlBTk1BUiBMRVRURVIgQ0E7TG87MDtMOzs7OztOOzs7OzsKKzEwMDY7TVlBTk1BUiBMRVRURVIgQ0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDA3O01ZQU5NQVIgTEVUVEVSIEpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDA4O01ZQU5NQVIgTEVUVEVSIEpIQTtMbzswO0w7Ozs7O047Ozs7OworMTAwOTtNWUFOTUFSIExFVFRFUiBOWUE7TG87MDtMOzs7OztOOzs7OzsKKzEwMEE7TVlBTk1BUiBMRVRURVIgTk5ZQTtMbzswO0w7Ozs7O047Ozs7OworMTAwQjtNWUFOTUFSIExFVFRFUiBUVEE7TG87MDtMOzs7OztOOzs7OzsKKzEwMEM7TVlBTk1BUiBMRVRURVIgVFRIQTtMbzswO0w7Ozs7O047Ozs7OworMTAwRDtNWUFOTUFSIExFVFRFUiBEREE7TG87MDtMOzs7OztOOzs7OzsKKzEwMEU7TVlBTk1BUiBMRVRURVIgRERIQTtMbzswO0w7Ozs7O047Ozs7OworMTAwRjtNWUFOTUFSIExFVFRFUiBOTkE7TG87MDtMOzs7OztOOzs7OzsKKzEwMTA7TVlBTk1BUiBMRVRURVIgVEE7TG87MDtMOzs7OztOOzs7OzsKKzEwMTE7TVlBTk1BUiBMRVRURVIgVEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDEyO01ZQU5NQVIgTEVUVEVSIERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDEzO01ZQU5NQVIgTEVUVEVSIERIQTtMbzswO0w7Ozs7O047Ozs7OworMTAxNDtNWUFOTUFSIExFVFRFUiBOQTtMbzswO0w7Ozs7O047Ozs7OworMTAxNTtNWUFOTUFSIExFVFRFUiBQQTtMbzswO0w7Ozs7O047Ozs7OworMTAxNjtNWUFOTUFSIExFVFRFUiBQSEE7TG87MDtMOzs7OztOOzs7OzsKKzEwMTc7TVlBTk1BUiBMRVRURVIgQkE7TG87MDtMOzs7OztOOzs7OzsKKzEwMTg7TVlBTk1BUiBMRVRURVIgQkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDE5O01ZQU5NQVIgTEVUVEVSIE1BO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDFBO01ZQU5NQVIgTEVUVEVSIFlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDFCO01ZQU5NQVIgTEVUVEVSIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDFDO01ZQU5NQVIgTEVUVEVSIExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDFEO01ZQU5NQVIgTEVUVEVSIFdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDFFO01ZQU5NQVIgTEVUVEVSIFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDFGO01ZQU5NQVIgTEVUVEVSIEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDIwO01ZQU5NQVIgTEVUVEVSIExMQTtMbzswO0w7Ozs7O047Ozs7OworMTAyMTtNWUFOTUFSIExFVFRFUiBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDIzO01ZQU5NQVIgTEVUVEVSIEk7TG87MDtMOzs7OztOOzs7OzsKKzEwMjQ7TVlBTk1BUiBMRVRURVIgSUk7TG87MDtMOzs7OztOOzs7OzsKKzEwMjU7TVlBTk1BUiBMRVRURVIgVTtMbzswO0w7Ozs7O047Ozs7OworMTAyNjtNWUFOTUFSIExFVFRFUiBVVTtMbzswO0w7MTAyNSAxMDJFOzs7O047Ozs7OworMTAyNztNWUFOTUFSIExFVFRFUiBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDI5O01ZQU5NQVIgTEVUVEVSIE87TG87MDtMOzs7OztOOzs7OzsKKzEwMkE7TVlBTk1BUiBMRVRURVIgQVU7TG87MDtMOzs7OztOOzs7OzsKKzEwMkM7TVlBTk1BUiBWT1dFTCBTSUdOIEFBO01jOzA7TDs7Ozs7Tjs7Ozs7CisxMDJEO01ZQU5NQVIgVk9XRUwgU0lHTiBJO01uOzA7TlNNOzs7OztOOzs7OzsKKzEwMkU7TVlBTk1BUiBWT1dFTCBTSUdOIElJO01uOzA7TlNNOzs7OztOOzs7OzsKKzEwMkY7TVlBTk1BUiBWT1dFTCBTSUdOIFU7TW47MDtOU007Ozs7O047Ozs7OworMTAzMDtNWUFOTUFSIFZPV0VMIFNJR04gVVU7TW47MDtOU007Ozs7O047Ozs7OworMTAzMTtNWUFOTUFSIFZPV0VMIFNJR04gRTtNYzswO0w7Ozs7O047Ozs7OworMTAzMjtNWUFOTUFSIFZPV0VMIFNJR04gQUk7TW47MDtOU007Ozs7O047Ozs7OworMTAzNjtNWUFOTUFSIFNJR04gQU5VU1ZBUkE7TW47MDtOU007Ozs7O047Ozs7OworMTAzNztNWUFOTUFSIFNJR04gRE9UIEJFTE9XO01uOzc7TlNNOzs7OztOOzs7OzsKKzEwMzg7TVlBTk1BUiBTSUdOIFZJU0FSR0E7TWM7MDtMOzs7OztOOzs7OzsKKzEwMzk7TVlBTk1BUiBTSUdOIFZJUkFNQTtNbjs5O05TTTs7Ozs7Tjs7Ozs7CisxMDQwO01ZQU5NQVIgRElHSVQgWkVSTztOZDswO0w7OzA7MDswO047Ozs7OworMTA0MTtNWUFOTUFSIERJR0lUIE9ORTtOZDswO0w7OzE7MTsxO047Ozs7OworMTA0MjtNWUFOTUFSIERJR0lUIFRXTztOZDswO0w7OzI7MjsyO047Ozs7OworMTA0MztNWUFOTUFSIERJR0lUIFRIUkVFO05kOzA7TDs7MzszOzM7Tjs7Ozs7CisxMDQ0O01ZQU5NQVIgRElHSVQgRk9VUjtOZDswO0w7OzQ7NDs0O047Ozs7OworMTA0NTtNWUFOTUFSIERJR0lUIEZJVkU7TmQ7MDtMOzs1OzU7NTtOOzs7OzsKKzEwNDY7TVlBTk1BUiBESUdJVCBTSVg7TmQ7MDtMOzs2OzY7NjtOOzs7OzsKKzEwNDc7TVlBTk1BUiBESUdJVCBTRVZFTjtOZDswO0w7Ozc7Nzs3O047Ozs7OworMTA0ODtNWUFOTUFSIERJR0lUIEVJR0hUO05kOzA7TDs7ODs4Ozg7Tjs7Ozs7CisxMDQ5O01ZQU5NQVIgRElHSVQgTklORTtOZDswO0w7Ozk7OTs5O047Ozs7OworMTA0QTtNWUFOTUFSIFNJR04gTElUVExFIFNFQ1RJT047UG87MDtMOzs7OztOOzs7OzsKKzEwNEI7TVlBTk1BUiBTSUdOIFNFQ1RJT047UG87MDtMOzs7OztOOzs7OzsKKzEwNEM7TVlBTk1BUiBTWU1CT0wgTE9DQVRJVkU7UG87MDtMOzs7OztOOzs7OzsKKzEwNEQ7TVlBTk1BUiBTWU1CT0wgQ09NUExFVEVEO1BvOzA7TDs7Ozs7Tjs7Ozs7CisxMDRFO01ZQU5NQVIgU1lNQk9MIEFGT1JFTUVOVElPTkVEO1BvOzA7TDs7Ozs7Tjs7Ozs7CisxMDRGO01ZQU5NQVIgU1lNQk9MIEdFTklUSVZFO1BvOzA7TDs7Ozs7Tjs7Ozs7CisxMDUwO01ZQU5NQVIgTEVUVEVSIFNIQTtMbzswO0w7Ozs7O047Ozs7OworMTA1MTtNWUFOTUFSIExFVFRFUiBTU0E7TG87MDtMOzs7OztOOzs7OzsKKzEwNTI7TVlBTk1BUiBMRVRURVIgVk9DQUxJQyBSO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDUzO01ZQU5NQVIgTEVUVEVSIFZPQ0FMSUMgUlI7TG87MDtMOzs7OztOOzs7OzsKKzEwNTQ7TVlBTk1BUiBMRVRURVIgVk9DQUxJQyBMO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDU1O01ZQU5NQVIgTEVUVEVSIFZPQ0FMSUMgTEw7TG87MDtMOzs7OztOOzs7OzsKKzEwNTY7TVlBTk1BUiBWT1dFTCBTSUdOIFZPQ0FMSUMgUjtNYzswO0w7Ozs7O047Ozs7OworMTA1NztNWUFOTUFSIFZPV0VMIFNJR04gVk9DQUxJQyBSUjtNYzswO0w7Ozs7O047Ozs7OworMTA1ODtNWUFOTUFSIFZPV0VMIFNJR04gVk9DQUxJQyBMO01uOzA7TlNNOzs7OztOOzs7OzsKKzEwNTk7TVlBTk1BUiBWT1dFTCBTSUdOIFZPQ0FMSUMgTEw7TW47MDtOU007Ozs7O047Ozs7OworMTBBMDtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBBTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzs7CisxMEExO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIEJBTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzs7CisxMEEyO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIEdBTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzs7CisxMEEzO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIERPTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzs7CisxMEE0O0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIEVOO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzsKKzEwQTU7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgVklOO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzsKKzEwQTY7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgWkVOO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzsKKzEwQTc7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgVEFOO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzsKKzEwQTg7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgSU47THU7MDtMOzs7OztOOztLaHV0c3VyaTs7OworMTBBOTtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBLQU47THU7MDtMOzs7OztOOztLaHV0c3VyaTs7OworMTBBQTtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBMQVM7THU7MDtMOzs7OztOOztLaHV0c3VyaTs7OworMTBBQjtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBNQU47THU7MDtMOzs7OztOOztLaHV0c3VyaTs7OworMTBBQztHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBOQVI7THU7MDtMOzs7OztOOztLaHV0c3VyaTs7OworMTBBRDtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBPTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzs7CisxMEFFO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIFBBUjtMdTswO0w7Ozs7O047O0todXRzdXJpOzs7CisxMEFGO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIFpIQVI7THU7MDtMOzs7OztOOztLaHV0c3VyaTs7OworMTBCMDtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBSQUU7THU7MDtMOzs7OztOOztLaHV0c3VyaTs7OworMTBCMTtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBTQU47THU7MDtMOzs7OztOOztLaHV0c3VyaTs7OworMTBCMjtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBUQVI7THU7MDtMOzs7OztOOztLaHV0c3VyaTs7OworMTBCMztHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBVTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzs7CisxMEI0O0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIFBIQVI7THU7MDtMOzs7OztOOztLaHV0c3VyaTs7OworMTBCNTtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBLSEFSO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzsKKzEwQjY7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgR0hBTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzs7CisxMEI3O0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIFFBUjtMdTswO0w7Ozs7O047O0todXRzdXJpOzs7CisxMEI4O0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIFNISU47THU7MDtMOzs7OztOOztLaHV0c3VyaTs7OworMTBCOTtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBDSElOO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzsKKzEwQkE7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgQ0FOO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzsKKzEwQkI7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgSklMO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzsKKzEwQkM7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgQ0lMO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzsKKzEwQkQ7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgQ0hBUjtMdTswO0w7Ozs7O047O0todXRzdXJpOzs7CisxMEJFO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIFhBTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzs7CisxMEJGO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIEpIQU47THU7MDtMOzs7OztOOztLaHV0c3VyaTs7OworMTBDMDtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBIQUU7THU7MDtMOzs7OztOOztLaHV0c3VyaTs7OworMTBDMTtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBIRTtMdTswO0w7Ozs7O047O0todXRzdXJpOzs7CisxMEMyO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIEhJRTtMdTswO0w7Ozs7O047O0todXRzdXJpOzs7CisxMEMzO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIFdFO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzsKKzEwQzQ7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgSEFSO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzsKKzEwQzU7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgSE9FO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzsKKzEwRDA7R0VPUkdJQU4gTEVUVEVSIEFOO0xvOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgQU47Ozs7CisxMEQxO0dFT1JHSUFOIExFVFRFUiBCQU47TG87MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBCQU47Ozs7CisxMEQyO0dFT1JHSUFOIExFVFRFUiBHQU47TG87MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBHQU47Ozs7CisxMEQzO0dFT1JHSUFOIExFVFRFUiBET047TG87MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBET047Ozs7CisxMEQ0O0dFT1JHSUFOIExFVFRFUiBFTjtMbzswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIEVOOzs7OworMTBENTtHRU9SR0lBTiBMRVRURVIgVklOO0xvOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgVklOOzs7OworMTBENjtHRU9SR0lBTiBMRVRURVIgWkVOO0xvOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgWkVOOzs7OworMTBENztHRU9SR0lBTiBMRVRURVIgVEFOO0xvOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgVEFOOzs7OworMTBEODtHRU9SR0lBTiBMRVRURVIgSU47TG87MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBJTjs7OzsKKzEwRDk7R0VPUkdJQU4gTEVUVEVSIEtBTjtMbzswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIEtBTjs7OzsKKzEwREE7R0VPUkdJQU4gTEVUVEVSIExBUztMbzswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIExBUzs7OzsKKzEwREI7R0VPUkdJQU4gTEVUVEVSIE1BTjtMbzswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIE1BTjs7OzsKKzEwREM7R0VPUkdJQU4gTEVUVEVSIE5BUjtMbzswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIE5BUjs7OzsKKzEwREQ7R0VPUkdJQU4gTEVUVEVSIE9OO0xvOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgT047Ozs7CisxMERFO0dFT1JHSUFOIExFVFRFUiBQQVI7TG87MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBQQVI7Ozs7CisxMERGO0dFT1JHSUFOIExFVFRFUiBaSEFSO0xvOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgWkhBUjs7OzsKKzEwRTA7R0VPUkdJQU4gTEVUVEVSIFJBRTtMbzswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIFJBRTs7OzsKKzEwRTE7R0VPUkdJQU4gTEVUVEVSIFNBTjtMbzswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIFNBTjs7OzsKKzEwRTI7R0VPUkdJQU4gTEVUVEVSIFRBUjtMbzswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIFRBUjs7OzsKKzEwRTM7R0VPUkdJQU4gTEVUVEVSIFVOO0xvOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgVU47Ozs7CisxMEU0O0dFT1JHSUFOIExFVFRFUiBQSEFSO0xvOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgUEhBUjs7OzsKKzEwRTU7R0VPUkdJQU4gTEVUVEVSIEtIQVI7TG87MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBLSEFSOzs7OworMTBFNjtHRU9SR0lBTiBMRVRURVIgR0hBTjtMbzswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIEdIQU47Ozs7CisxMEU3O0dFT1JHSUFOIExFVFRFUiBRQVI7TG87MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBRQVI7Ozs7CisxMEU4O0dFT1JHSUFOIExFVFRFUiBTSElOO0xvOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgU0hJTjs7OzsKKzEwRTk7R0VPUkdJQU4gTEVUVEVSIENISU47TG87MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBDSElOOzs7OworMTBFQTtHRU9SR0lBTiBMRVRURVIgQ0FOO0xvOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgQ0FOOzs7OworMTBFQjtHRU9SR0lBTiBMRVRURVIgSklMO0xvOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgSklMOzs7OworMTBFQztHRU9SR0lBTiBMRVRURVIgQ0lMO0xvOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgQ0lMOzs7OworMTBFRDtHRU9SR0lBTiBMRVRURVIgQ0hBUjtMbzswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIENIQVI7Ozs7CisxMEVFO0dFT1JHSUFOIExFVFRFUiBYQU47TG87MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBYQU47Ozs7CisxMEVGO0dFT1JHSUFOIExFVFRFUiBKSEFOO0xvOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgSkhBTjs7OzsKKzEwRjA7R0VPUkdJQU4gTEVUVEVSIEhBRTtMbzswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIEhBRTs7OzsKKzEwRjE7R0VPUkdJQU4gTEVUVEVSIEhFO0xvOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgSEU7Ozs7CisxMEYyO0dFT1JHSUFOIExFVFRFUiBISUU7TG87MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBISUU7Ozs7CisxMEYzO0dFT1JHSUFOIExFVFRFUiBXRTtMbzswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIFdFOzs7OworMTBGNDtHRU9SR0lBTiBMRVRURVIgSEFSO0xvOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgSEFSOzs7OworMTBGNTtHRU9SR0lBTiBMRVRURVIgSE9FO0xvOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgSE9FOzs7OworMTBGNjtHRU9SR0lBTiBMRVRURVIgRkk7TG87MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBGSTs7OzsKKzEwRjc7R0VPUkdJQU4gTEVUVEVSIFlOO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMEY4O0dFT1JHSUFOIExFVFRFUiBFTElGSTtMbzswO0w7Ozs7O047Ozs7OworMTBGQjtHRU9SR0lBTiBQQVJBR1JBUEggU0VQQVJBVE9SO1BvOzA7TDs7Ozs7Tjs7Ozs7CisxMTAwO0hBTkdVTCBDSE9TRU9ORyBLSVlFT0s7TG87MDtMOzs7OztOOztnICo7OzsKKzExMDE7SEFOR1VMIENIT1NFT05HIFNTQU5HS0lZRU9LO0xvOzA7TDs7Ozs7Tjs7Z2cgKjs7OworMTEwMjtIQU5HVUwgQ0hPU0VPTkcgTklFVU47TG87MDtMOzs7OztOOztuICo7OzsKKzExMDM7SEFOR1VMIENIT1NFT05HIFRJS0VVVDtMbzswO0w7Ozs7O047O2QgKjs7OworMTEwNDtIQU5HVUwgQ0hPU0VPTkcgU1NBTkdUSUtFVVQ7TG87MDtMOzs7OztOOztkZCAqOzs7CisxMTA1O0hBTkdVTCBDSE9TRU9ORyBSSUVVTDtMbzswO0w7Ozs7O047O3IgKjs7OworMTEwNjtIQU5HVUwgQ0hPU0VPTkcgTUlFVU07TG87MDtMOzs7OztOOzttICo7OzsKKzExMDc7SEFOR1VMIENIT1NFT05HIFBJRVVQO0xvOzA7TDs7Ozs7Tjs7YiAqOzs7CisxMTA4O0hBTkdVTCBDSE9TRU9ORyBTU0FOR1BJRVVQO0xvOzA7TDs7Ozs7Tjs7YmIgKjs7OworMTEwOTtIQU5HVUwgQ0hPU0VPTkcgU0lPUztMbzswO0w7Ozs7O047O3MgKjs7OworMTEwQTtIQU5HVUwgQ0hPU0VPTkcgU1NBTkdTSU9TO0xvOzA7TDs7Ozs7Tjs7c3MgKjs7OworMTEwQjtIQU5HVUwgQ0hPU0VPTkcgSUVVTkc7TG87MDtMOzs7OztOOzs7OzsKKzExMEM7SEFOR1VMIENIT1NFT05HIENJRVVDO0xvOzA7TDs7Ozs7Tjs7aiAqOzs7CisxMTBEO0hBTkdVTCBDSE9TRU9ORyBTU0FOR0NJRVVDO0xvOzA7TDs7Ozs7Tjs7amogKjs7OworMTEwRTtIQU5HVUwgQ0hPU0VPTkcgQ0hJRVVDSDtMbzswO0w7Ozs7O047O2MgKjs7OworMTEwRjtIQU5HVUwgQ0hPU0VPTkcgS0hJRVVLSDtMbzswO0w7Ozs7O047O2sgKjs7OworMTExMDtIQU5HVUwgQ0hPU0VPTkcgVEhJRVVUSDtMbzswO0w7Ozs7O047O3QgKjs7OworMTExMTtIQU5HVUwgQ0hPU0VPTkcgUEhJRVVQSDtMbzswO0w7Ozs7O047O3AgKjs7OworMTExMjtIQU5HVUwgQ0hPU0VPTkcgSElFVUg7TG87MDtMOzs7OztOOztoICo7OzsKKzExMTM7SEFOR1VMIENIT1NFT05HIE5JRVVOLUtJWUVPSztMbzswO0w7Ozs7O047Ozs7OworMTExNDtIQU5HVUwgQ0hPU0VPTkcgU1NBTkdOSUVVTjtMbzswO0w7Ozs7O047Ozs7OworMTExNTtIQU5HVUwgQ0hPU0VPTkcgTklFVU4tVElLRVVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTE2O0hBTkdVTCBDSE9TRU9ORyBOSUVVTi1QSUVVUDtMbzswO0w7Ozs7O047Ozs7OworMTExNztIQU5HVUwgQ0hPU0VPTkcgVElLRVVULUtJWUVPSztMbzswO0w7Ozs7O047Ozs7OworMTExODtIQU5HVUwgQ0hPU0VPTkcgUklFVUwtTklFVU47TG87MDtMOzs7OztOOzs7OzsKKzExMTk7SEFOR1VMIENIT1NFT05HIFNTQU5HUklFVUw7TG87MDtMOzs7OztOOzs7OzsKKzExMUE7SEFOR1VMIENIT1NFT05HIFJJRVVMLUhJRVVIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTFCO0hBTkdVTCBDSE9TRU9ORyBLQVBZRU9VTlJJRVVMO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTFDO0hBTkdVTCBDSE9TRU9ORyBNSUVVTS1QSUVVUDtMbzswO0w7Ozs7O047Ozs7OworMTExRDtIQU5HVUwgQ0hPU0VPTkcgS0FQWUVPVU5NSUVVTTtMbzswO0w7Ozs7O047Ozs7OworMTExRTtIQU5HVUwgQ0hPU0VPTkcgUElFVVAtS0lZRU9LO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTFGO0hBTkdVTCBDSE9TRU9ORyBQSUVVUC1OSUVVTjtMbzswO0w7Ozs7O047Ozs7OworMTEyMDtIQU5HVUwgQ0hPU0VPTkcgUElFVVAtVElLRVVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTIxO0hBTkdVTCBDSE9TRU9ORyBQSUVVUC1TSU9TO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTIyO0hBTkdVTCBDSE9TRU9ORyBQSUVVUC1TSU9TLUtJWUVPSztMbzswO0w7Ozs7O047Ozs7OworMTEyMztIQU5HVUwgQ0hPU0VPTkcgUElFVVAtU0lPUy1USUtFVVQ7TG87MDtMOzs7OztOOzs7OzsKKzExMjQ7SEFOR1VMIENIT1NFT05HIFBJRVVQLVNJT1MtUElFVVA7TG87MDtMOzs7OztOOzs7OzsKKzExMjU7SEFOR1VMIENIT1NFT05HIFBJRVVQLVNTQU5HU0lPUztMbzswO0w7Ozs7O047Ozs7OworMTEyNjtIQU5HVUwgQ0hPU0VPTkcgUElFVVAtU0lPUy1DSUVVQztMbzswO0w7Ozs7O047Ozs7OworMTEyNztIQU5HVUwgQ0hPU0VPTkcgUElFVVAtQ0lFVUM7TG87MDtMOzs7OztOOzs7OzsKKzExMjg7SEFOR1VMIENIT1NFT05HIFBJRVVQLUNISUVVQ0g7TG87MDtMOzs7OztOOzs7OzsKKzExMjk7SEFOR1VMIENIT1NFT05HIFBJRVVQLVRISUVVVEg7TG87MDtMOzs7OztOOzs7OzsKKzExMkE7SEFOR1VMIENIT1NFT05HIFBJRVVQLVBISUVVUEg7TG87MDtMOzs7OztOOzs7OzsKKzExMkI7SEFOR1VMIENIT1NFT05HIEtBUFlFT1VOUElFVVA7TG87MDtMOzs7OztOOzs7OzsKKzExMkM7SEFOR1VMIENIT1NFT05HIEtBUFlFT1VOU1NBTkdQSUVVUDtMbzswO0w7Ozs7O047Ozs7OworMTEyRDtIQU5HVUwgQ0hPU0VPTkcgU0lPUy1LSVlFT0s7TG87MDtMOzs7OztOOzs7OzsKKzExMkU7SEFOR1VMIENIT1NFT05HIFNJT1MtTklFVU47TG87MDtMOzs7OztOOzs7OzsKKzExMkY7SEFOR1VMIENIT1NFT05HIFNJT1MtVElLRVVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTMwO0hBTkdVTCBDSE9TRU9ORyBTSU9TLVJJRVVMO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTMxO0hBTkdVTCBDSE9TRU9ORyBTSU9TLU1JRVVNO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTMyO0hBTkdVTCBDSE9TRU9ORyBTSU9TLVBJRVVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTMzO0hBTkdVTCBDSE9TRU9ORyBTSU9TLVBJRVVQLUtJWUVPSztMbzswO0w7Ozs7O047Ozs7OworMTEzNDtIQU5HVUwgQ0hPU0VPTkcgU0lPUy1TU0FOR1NJT1M7TG87MDtMOzs7OztOOzs7OzsKKzExMzU7SEFOR1VMIENIT1NFT05HIFNJT1MtSUVVTkc7TG87MDtMOzs7OztOOzs7OzsKKzExMzY7SEFOR1VMIENIT1NFT05HIFNJT1MtQ0lFVUM7TG87MDtMOzs7OztOOzs7OzsKKzExMzc7SEFOR1VMIENIT1NFT05HIFNJT1MtQ0hJRVVDSDtMbzswO0w7Ozs7O047Ozs7OworMTEzODtIQU5HVUwgQ0hPU0VPTkcgU0lPUy1LSElFVUtIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTM5O0hBTkdVTCBDSE9TRU9ORyBTSU9TLVRISUVVVEg7TG87MDtMOzs7OztOOzs7OzsKKzExM0E7SEFOR1VMIENIT1NFT05HIFNJT1MtUEhJRVVQSDtMbzswO0w7Ozs7O047Ozs7OworMTEzQjtIQU5HVUwgQ0hPU0VPTkcgU0lPUy1ISUVVSDtMbzswO0w7Ozs7O047Ozs7OworMTEzQztIQU5HVUwgQ0hPU0VPTkcgQ0hJVFVFVU1TSU9TO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTNEO0hBTkdVTCBDSE9TRU9ORyBDSElUVUVVTVNTQU5HU0lPUztMbzswO0w7Ozs7O047Ozs7OworMTEzRTtIQU5HVUwgQ0hPU0VPTkcgQ0VPTkdDSElFVU1TSU9TO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTNGO0hBTkdVTCBDSE9TRU9ORyBDRU9OR0NISUVVTVNTQU5HU0lPUztMbzswO0w7Ozs7O047Ozs7OworMTE0MDtIQU5HVUwgQ0hPU0VPTkcgUEFOU0lPUztMbzswO0w7Ozs7O047Ozs7OworMTE0MTtIQU5HVUwgQ0hPU0VPTkcgSUVVTkctS0lZRU9LO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTQyO0hBTkdVTCBDSE9TRU9ORyBJRVVORy1USUtFVVQ7TG87MDtMOzs7OztOOzs7OzsKKzExNDM7SEFOR1VMIENIT1NFT05HIElFVU5HLU1JRVVNO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTQ0O0hBTkdVTCBDSE9TRU9ORyBJRVVORy1QSUVVUDtMbzswO0w7Ozs7O047Ozs7OworMTE0NTtIQU5HVUwgQ0hPU0VPTkcgSUVVTkctU0lPUztMbzswO0w7Ozs7O047Ozs7OworMTE0NjtIQU5HVUwgQ0hPU0VPTkcgSUVVTkctUEFOU0lPUztMbzswO0w7Ozs7O047Ozs7OworMTE0NztIQU5HVUwgQ0hPU0VPTkcgU1NBTkdJRVVORztMbzswO0w7Ozs7O047Ozs7OworMTE0ODtIQU5HVUwgQ0hPU0VPTkcgSUVVTkctQ0lFVUM7TG87MDtMOzs7OztOOzs7OzsKKzExNDk7SEFOR1VMIENIT1NFT05HIElFVU5HLUNISUVVQ0g7TG87MDtMOzs7OztOOzs7OzsKKzExNEE7SEFOR1VMIENIT1NFT05HIElFVU5HLVRISUVVVEg7TG87MDtMOzs7OztOOzs7OzsKKzExNEI7SEFOR1VMIENIT1NFT05HIElFVU5HLVBISUVVUEg7TG87MDtMOzs7OztOOzs7OzsKKzExNEM7SEFOR1VMIENIT1NFT05HIFlFU0lFVU5HO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTREO0hBTkdVTCBDSE9TRU9ORyBDSUVVQy1JRVVORztMbzswO0w7Ozs7O047Ozs7OworMTE0RTtIQU5HVUwgQ0hPU0VPTkcgQ0hJVFVFVU1DSUVVQztMbzswO0w7Ozs7O047Ozs7OworMTE0RjtIQU5HVUwgQ0hPU0VPTkcgQ0hJVFVFVU1TU0FOR0NJRVVDO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTUwO0hBTkdVTCBDSE9TRU9ORyBDRU9OR0NISUVVTUNJRVVDO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTUxO0hBTkdVTCBDSE9TRU9ORyBDRU9OR0NISUVVTVNTQU5HQ0lFVUM7TG87MDtMOzs7OztOOzs7OzsKKzExNTI7SEFOR1VMIENIT1NFT05HIENISUVVQ0gtS0hJRVVLSDtMbzswO0w7Ozs7O047Ozs7OworMTE1MztIQU5HVUwgQ0hPU0VPTkcgQ0hJRVVDSC1ISUVVSDtMbzswO0w7Ozs7O047Ozs7OworMTE1NDtIQU5HVUwgQ0hPU0VPTkcgQ0hJVFVFVU1DSElFVUNIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTU1O0hBTkdVTCBDSE9TRU9ORyBDRU9OR0NISUVVTUNISUVVQ0g7TG87MDtMOzs7OztOOzs7OzsKKzExNTY7SEFOR1VMIENIT1NFT05HIFBISUVVUEgtUElFVVA7TG87MDtMOzs7OztOOzs7OzsKKzExNTc7SEFOR1VMIENIT1NFT05HIEtBUFlFT1VOUEhJRVVQSDtMbzswO0w7Ozs7O047Ozs7OworMTE1ODtIQU5HVUwgQ0hPU0VPTkcgU1NBTkdISUVVSDtMbzswO0w7Ozs7O047Ozs7OworMTE1OTtIQU5HVUwgQ0hPU0VPTkcgWUVPUklOSElFVUg7TG87MDtMOzs7OztOOzs7OzsKKzExNUY7SEFOR1VMIENIT1NFT05HIEZJTExFUjtMbzswO0w7Ozs7O047Ozs7OworMTE2MDtIQU5HVUwgSlVOR1NFT05HIEZJTExFUjtMbzswO0w7Ozs7O047Ozs7OworMTE2MTtIQU5HVUwgSlVOR1NFT05HIEE7TG87MDtMOzs7OztOOzs7OzsKKzExNjI7SEFOR1VMIEpVTkdTRU9ORyBBRTtMbzswO0w7Ozs7O047Ozs7OworMTE2MztIQU5HVUwgSlVOR1NFT05HIFlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTY0O0hBTkdVTCBKVU5HU0VPTkcgWUFFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTY1O0hBTkdVTCBKVU5HU0VPTkcgRU87TG87MDtMOzs7OztOOzs7OzsKKzExNjY7SEFOR1VMIEpVTkdTRU9ORyBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTY3O0hBTkdVTCBKVU5HU0VPTkcgWUVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTY4O0hBTkdVTCBKVU5HU0VPTkcgWUU7TG87MDtMOzs7OztOOzs7OzsKKzExNjk7SEFOR1VMIEpVTkdTRU9ORyBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTZBO0hBTkdVTCBKVU5HU0VPTkcgV0E7TG87MDtMOzs7OztOOzs7OzsKKzExNkI7SEFOR1VMIEpVTkdTRU9ORyBXQUU7TG87MDtMOzs7OztOOzs7OzsKKzExNkM7SEFOR1VMIEpVTkdTRU9ORyBPRTtMbzswO0w7Ozs7O047Ozs7OworMTE2RDtIQU5HVUwgSlVOR1NFT05HIFlPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTZFO0hBTkdVTCBKVU5HU0VPTkcgVTtMbzswO0w7Ozs7O047Ozs7OworMTE2RjtIQU5HVUwgSlVOR1NFT05HIFdFTztMbzswO0w7Ozs7O047Ozs7OworMTE3MDtIQU5HVUwgSlVOR1NFT05HIFdFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTcxO0hBTkdVTCBKVU5HU0VPTkcgV0k7TG87MDtMOzs7OztOOzs7OzsKKzExNzI7SEFOR1VMIEpVTkdTRU9ORyBZVTtMbzswO0w7Ozs7O047Ozs7OworMTE3MztIQU5HVUwgSlVOR1NFT05HIEVVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTc0O0hBTkdVTCBKVU5HU0VPTkcgWUk7TG87MDtMOzs7OztOOzs7OzsKKzExNzU7SEFOR1VMIEpVTkdTRU9ORyBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTc2O0hBTkdVTCBKVU5HU0VPTkcgQS1PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTc3O0hBTkdVTCBKVU5HU0VPTkcgQS1VO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTc4O0hBTkdVTCBKVU5HU0VPTkcgWUEtTztMbzswO0w7Ozs7O047Ozs7OworMTE3OTtIQU5HVUwgSlVOR1NFT05HIFlBLVlPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTdBO0hBTkdVTCBKVU5HU0VPTkcgRU8tTztMbzswO0w7Ozs7O047Ozs7OworMTE3QjtIQU5HVUwgSlVOR1NFT05HIEVPLVU7TG87MDtMOzs7OztOOzs7OzsKKzExN0M7SEFOR1VMIEpVTkdTRU9ORyBFTy1FVTtMbzswO0w7Ozs7O047Ozs7OworMTE3RDtIQU5HVUwgSlVOR1NFT05HIFlFTy1PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTdFO0hBTkdVTCBKVU5HU0VPTkcgWUVPLVU7TG87MDtMOzs7OztOOzs7OzsKKzExN0Y7SEFOR1VMIEpVTkdTRU9ORyBPLUVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTgwO0hBTkdVTCBKVU5HU0VPTkcgTy1FO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTgxO0hBTkdVTCBKVU5HU0VPTkcgTy1ZRTtMbzswO0w7Ozs7O047Ozs7OworMTE4MjtIQU5HVUwgSlVOR1NFT05HIE8tTztMbzswO0w7Ozs7O047Ozs7OworMTE4MztIQU5HVUwgSlVOR1NFT05HIE8tVTtMbzswO0w7Ozs7O047Ozs7OworMTE4NDtIQU5HVUwgSlVOR1NFT05HIFlPLVlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTg1O0hBTkdVTCBKVU5HU0VPTkcgWU8tWUFFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTg2O0hBTkdVTCBKVU5HU0VPTkcgWU8tWUVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTg3O0hBTkdVTCBKVU5HU0VPTkcgWU8tTztMbzswO0w7Ozs7O047Ozs7OworMTE4ODtIQU5HVUwgSlVOR1NFT05HIFlPLUk7TG87MDtMOzs7OztOOzs7OzsKKzExODk7SEFOR1VMIEpVTkdTRU9ORyBVLUE7TG87MDtMOzs7OztOOzs7OzsKKzExOEE7SEFOR1VMIEpVTkdTRU9ORyBVLUFFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMThCO0hBTkdVTCBKVU5HU0VPTkcgVS1FTy1FVTtMbzswO0w7Ozs7O047Ozs7OworMTE4QztIQU5HVUwgSlVOR1NFT05HIFUtWUU7TG87MDtMOzs7OztOOzs7OzsKKzExOEQ7SEFOR1VMIEpVTkdTRU9ORyBVLVU7TG87MDtMOzs7OztOOzs7OzsKKzExOEU7SEFOR1VMIEpVTkdTRU9ORyBZVS1BO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMThGO0hBTkdVTCBKVU5HU0VPTkcgWVUtRU87TG87MDtMOzs7OztOOzs7OzsKKzExOTA7SEFOR1VMIEpVTkdTRU9ORyBZVS1FO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTkxO0hBTkdVTCBKVU5HU0VPTkcgWVUtWUVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTkyO0hBTkdVTCBKVU5HU0VPTkcgWVUtWUU7TG87MDtMOzs7OztOOzs7OzsKKzExOTM7SEFOR1VMIEpVTkdTRU9ORyBZVS1VO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTk0O0hBTkdVTCBKVU5HU0VPTkcgWVUtSTtMbzswO0w7Ozs7O047Ozs7OworMTE5NTtIQU5HVUwgSlVOR1NFT05HIEVVLVU7TG87MDtMOzs7OztOOzs7OzsKKzExOTY7SEFOR1VMIEpVTkdTRU9ORyBFVS1FVTtMbzswO0w7Ozs7O047Ozs7OworMTE5NztIQU5HVUwgSlVOR1NFT05HIFlJLVU7TG87MDtMOzs7OztOOzs7OzsKKzExOTg7SEFOR1VMIEpVTkdTRU9ORyBJLUE7TG87MDtMOzs7OztOOzs7OzsKKzExOTk7SEFOR1VMIEpVTkdTRU9ORyBJLVlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTlBO0hBTkdVTCBKVU5HU0VPTkcgSS1PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTlCO0hBTkdVTCBKVU5HU0VPTkcgSS1VO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTlDO0hBTkdVTCBKVU5HU0VPTkcgSS1FVTtMbzswO0w7Ozs7O047Ozs7OworMTE5RDtIQU5HVUwgSlVOR1NFT05HIEktQVJBRUE7TG87MDtMOzs7OztOOzs7OzsKKzExOUU7SEFOR1VMIEpVTkdTRU9ORyBBUkFFQTtMbzswO0w7Ozs7O047Ozs7OworMTE5RjtIQU5HVUwgSlVOR1NFT05HIEFSQUVBLUVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUEwO0hBTkdVTCBKVU5HU0VPTkcgQVJBRUEtVTtMbzswO0w7Ozs7O047Ozs7OworMTFBMTtIQU5HVUwgSlVOR1NFT05HIEFSQUVBLUk7TG87MDtMOzs7OztOOzs7OzsKKzExQTI7SEFOR1VMIEpVTkdTRU9ORyBTU0FOR0FSQUVBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUE4O0hBTkdVTCBKT05HU0VPTkcgS0lZRU9LO0xvOzA7TDs7Ozs7Tjs7ZyAqOzs7CisxMUE5O0hBTkdVTCBKT05HU0VPTkcgU1NBTkdLSVlFT0s7TG87MDtMOzs7OztOOztnZyAqOzs7CisxMUFBO0hBTkdVTCBKT05HU0VPTkcgS0lZRU9LLVNJT1M7TG87MDtMOzs7OztOOztncyAqOzs7CisxMUFCO0hBTkdVTCBKT05HU0VPTkcgTklFVU47TG87MDtMOzs7OztOOztuICo7OzsKKzExQUM7SEFOR1VMIEpPTkdTRU9ORyBOSUVVTi1DSUVVQztMbzswO0w7Ozs7O047O25qICo7OzsKKzExQUQ7SEFOR1VMIEpPTkdTRU9ORyBOSUVVTi1ISUVVSDtMbzswO0w7Ozs7O047O25oICo7OzsKKzExQUU7SEFOR1VMIEpPTkdTRU9ORyBUSUtFVVQ7TG87MDtMOzs7OztOOztkICo7OzsKKzExQUY7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTDtMbzswO0w7Ozs7O047O2wgKjs7OworMTFCMDtIQU5HVUwgSk9OR1NFT05HIFJJRVVMLUtJWUVPSztMbzswO0w7Ozs7O047O2xnICo7OzsKKzExQjE7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1NSUVVTTtMbzswO0w7Ozs7O047O2xtICo7OzsKKzExQjI7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1QSUVVUDtMbzswO0w7Ozs7O047O2xiICo7OzsKKzExQjM7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1TSU9TO0xvOzA7TDs7Ozs7Tjs7bHMgKjs7OworMTFCNDtIQU5HVUwgSk9OR1NFT05HIFJJRVVMLVRISUVVVEg7TG87MDtMOzs7OztOOztsdCAqOzs7CisxMUI1O0hBTkdVTCBKT05HU0VPTkcgUklFVUwtUEhJRVVQSDtMbzswO0w7Ozs7O047O2xwICo7OzsKKzExQjY7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1ISUVVSDtMbzswO0w7Ozs7O047O2xoICo7OzsKKzExQjc7SEFOR1VMIEpPTkdTRU9ORyBNSUVVTTtMbzswO0w7Ozs7O047O20gKjs7OworMTFCODtIQU5HVUwgSk9OR1NFT05HIFBJRVVQO0xvOzA7TDs7Ozs7Tjs7YiAqOzs7CisxMUI5O0hBTkdVTCBKT05HU0VPTkcgUElFVVAtU0lPUztMbzswO0w7Ozs7O047O2JzICo7OzsKKzExQkE7SEFOR1VMIEpPTkdTRU9ORyBTSU9TO0xvOzA7TDs7Ozs7Tjs7cyAqOzs7CisxMUJCO0hBTkdVTCBKT05HU0VPTkcgU1NBTkdTSU9TO0xvOzA7TDs7Ozs7Tjs7c3MgKjs7OworMTFCQztIQU5HVUwgSk9OR1NFT05HIElFVU5HO0xvOzA7TDs7Ozs7Tjs7bmcgKjs7OworMTFCRDtIQU5HVUwgSk9OR1NFT05HIENJRVVDO0xvOzA7TDs7Ozs7Tjs7aiAqOzs7CisxMUJFO0hBTkdVTCBKT05HU0VPTkcgQ0hJRVVDSDtMbzswO0w7Ozs7O047O2MgKjs7OworMTFCRjtIQU5HVUwgSk9OR1NFT05HIEtISUVVS0g7TG87MDtMOzs7OztOOztrICo7OzsKKzExQzA7SEFOR1VMIEpPTkdTRU9ORyBUSElFVVRIO0xvOzA7TDs7Ozs7Tjs7dCAqOzs7CisxMUMxO0hBTkdVTCBKT05HU0VPTkcgUEhJRVVQSDtMbzswO0w7Ozs7O047O3AgKjs7OworMTFDMjtIQU5HVUwgSk9OR1NFT05HIEhJRVVIO0xvOzA7TDs7Ozs7Tjs7aCAqOzs7CisxMUMzO0hBTkdVTCBKT05HU0VPTkcgS0lZRU9LLVJJRVVMO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUM0O0hBTkdVTCBKT05HU0VPTkcgS0lZRU9LLVNJT1MtS0lZRU9LO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUM1O0hBTkdVTCBKT05HU0VPTkcgTklFVU4tS0lZRU9LO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUM2O0hBTkdVTCBKT05HU0VPTkcgTklFVU4tVElLRVVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUM3O0hBTkdVTCBKT05HU0VPTkcgTklFVU4tU0lPUztMbzswO0w7Ozs7O047Ozs7OworMTFDODtIQU5HVUwgSk9OR1NFT05HIE5JRVVOLVBBTlNJT1M7TG87MDtMOzs7OztOOzs7OzsKKzExQzk7SEFOR1VMIEpPTkdTRU9ORyBOSUVVTi1USElFVVRIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUNBO0hBTkdVTCBKT05HU0VPTkcgVElLRVVULUtJWUVPSztMbzswO0w7Ozs7O047Ozs7OworMTFDQjtIQU5HVUwgSk9OR1NFT05HIFRJS0VVVC1SSUVVTDtMbzswO0w7Ozs7O047Ozs7OworMTFDQztIQU5HVUwgSk9OR1NFT05HIFJJRVVMLUtJWUVPSy1TSU9TO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUNEO0hBTkdVTCBKT05HU0VPTkcgUklFVUwtTklFVU47TG87MDtMOzs7OztOOzs7OzsKKzExQ0U7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1USUtFVVQ7TG87MDtMOzs7OztOOzs7OzsKKzExQ0Y7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1USUtFVVQtSElFVUg7TG87MDtMOzs7OztOOzs7OzsKKzExRDA7SEFOR1VMIEpPTkdTRU9ORyBTU0FOR1JJRVVMO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUQxO0hBTkdVTCBKT05HU0VPTkcgUklFVUwtTUlFVU0tS0lZRU9LO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUQyO0hBTkdVTCBKT05HU0VPTkcgUklFVUwtTUlFVU0tU0lPUztMbzswO0w7Ozs7O047Ozs7OworMTFEMztIQU5HVUwgSk9OR1NFT05HIFJJRVVMLVBJRVVQLVNJT1M7TG87MDtMOzs7OztOOzs7OzsKKzExRDQ7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1QSUVVUC1ISUVVSDtMbzswO0w7Ozs7O047Ozs7OworMTFENTtIQU5HVUwgSk9OR1NFT05HIFJJRVVMLUtBUFlFT1VOUElFVVA7TG87MDtMOzs7OztOOzs7OzsKKzExRDY7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1TU0FOR1NJT1M7TG87MDtMOzs7OztOOzs7OzsKKzExRDc7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1QQU5TSU9TO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUQ4O0hBTkdVTCBKT05HU0VPTkcgUklFVUwtS0hJRVVLSDtMbzswO0w7Ozs7O047Ozs7OworMTFEOTtIQU5HVUwgSk9OR1NFT05HIFJJRVVMLVlFT1JJTkhJRVVIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMURBO0hBTkdVTCBKT05HU0VPTkcgTUlFVU0tS0lZRU9LO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMURCO0hBTkdVTCBKT05HU0VPTkcgTUlFVU0tUklFVUw7TG87MDtMOzs7OztOOzs7OzsKKzExREM7SEFOR1VMIEpPTkdTRU9ORyBNSUVVTS1QSUVVUDtMbzswO0w7Ozs7O047Ozs7OworMTFERDtIQU5HVUwgSk9OR1NFT05HIE1JRVVNLVNJT1M7TG87MDtMOzs7OztOOzs7OzsKKzExREU7SEFOR1VMIEpPTkdTRU9ORyBNSUVVTS1TU0FOR1NJT1M7TG87MDtMOzs7OztOOzs7OzsKKzExREY7SEFOR1VMIEpPTkdTRU9ORyBNSUVVTS1QQU5TSU9TO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUUwO0hBTkdVTCBKT05HU0VPTkcgTUlFVU0tQ0hJRVVDSDtMbzswO0w7Ozs7O047Ozs7OworMTFFMTtIQU5HVUwgSk9OR1NFT05HIE1JRVVNLUhJRVVIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUUyO0hBTkdVTCBKT05HU0VPTkcgS0FQWUVPVU5NSUVVTTtMbzswO0w7Ozs7O047Ozs7OworMTFFMztIQU5HVUwgSk9OR1NFT05HIFBJRVVQLVJJRVVMO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUU0O0hBTkdVTCBKT05HU0VPTkcgUElFVVAtUEhJRVVQSDtMbzswO0w7Ozs7O047Ozs7OworMTFFNTtIQU5HVUwgSk9OR1NFT05HIFBJRVVQLUhJRVVIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUU2O0hBTkdVTCBKT05HU0VPTkcgS0FQWUVPVU5QSUVVUDtMbzswO0w7Ozs7O047Ozs7OworMTFFNztIQU5HVUwgSk9OR1NFT05HIFNJT1MtS0lZRU9LO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUU4O0hBTkdVTCBKT05HU0VPTkcgU0lPUy1USUtFVVQ7TG87MDtMOzs7OztOOzs7OzsKKzExRTk7SEFOR1VMIEpPTkdTRU9ORyBTSU9TLVJJRVVMO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUVBO0hBTkdVTCBKT05HU0VPTkcgU0lPUy1QSUVVUDtMbzswO0w7Ozs7O047Ozs7OworMTFFQjtIQU5HVUwgSk9OR1NFT05HIFBBTlNJT1M7TG87MDtMOzs7OztOOzs7OzsKKzExRUM7SEFOR1VMIEpPTkdTRU9ORyBJRVVORy1LSVlFT0s7TG87MDtMOzs7OztOOzs7OzsKKzExRUQ7SEFOR1VMIEpPTkdTRU9ORyBJRVVORy1TU0FOR0tJWUVPSztMbzswO0w7Ozs7O047Ozs7OworMTFFRTtIQU5HVUwgSk9OR1NFT05HIFNTQU5HSUVVTkc7TG87MDtMOzs7OztOOzs7OzsKKzExRUY7SEFOR1VMIEpPTkdTRU9ORyBJRVVORy1LSElFVUtIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUYwO0hBTkdVTCBKT05HU0VPTkcgWUVTSUVVTkc7TG87MDtMOzs7OztOOzs7OzsKKzExRjE7SEFOR1VMIEpPTkdTRU9ORyBZRVNJRVVORy1TSU9TO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUYyO0hBTkdVTCBKT05HU0VPTkcgWUVTSUVVTkctUEFOU0lPUztMbzswO0w7Ozs7O047Ozs7OworMTFGMztIQU5HVUwgSk9OR1NFT05HIFBISUVVUEgtUElFVVA7TG87MDtMOzs7OztOOzs7OzsKKzExRjQ7SEFOR1VMIEpPTkdTRU9ORyBLQVBZRU9VTlBISUVVUEg7TG87MDtMOzs7OztOOzs7OzsKKzExRjU7SEFOR1VMIEpPTkdTRU9ORyBISUVVSC1OSUVVTjtMbzswO0w7Ozs7O047Ozs7OworMTFGNjtIQU5HVUwgSk9OR1NFT05HIEhJRVVILVJJRVVMO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUY3O0hBTkdVTCBKT05HU0VPTkcgSElFVUgtTUlFVU07TG87MDtMOzs7OztOOzs7OzsKKzExRjg7SEFOR1VMIEpPTkdTRU9ORyBISUVVSC1QSUVVUDtMbzswO0w7Ozs7O047Ozs7OworMTFGOTtIQU5HVUwgSk9OR1NFT05HIFlFT1JJTkhJRVVIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjAwO0VUSElPUElDIFNZTExBQkxFIEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjAxO0VUSElPUElDIFNZTExBQkxFIEhVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjAyO0VUSElPUElDIFNZTExBQkxFIEhJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjAzO0VUSElPUElDIFNZTExBQkxFIEhBQTtMbzswO0w7Ozs7O047Ozs7OworMTIwNDtFVEhJT1BJQyBTWUxMQUJMRSBIRUU7TG87MDtMOzs7OztOOzs7OzsKKzEyMDU7RVRISU9QSUMgU1lMTEFCTEUgSEU7TG87MDtMOzs7OztOOzs7OzsKKzEyMDY7RVRISU9QSUMgU1lMTEFCTEUgSE87TG87MDtMOzs7OztOOzs7OzsKKzEyMDg7RVRISU9QSUMgU1lMTEFCTEUgTEE7TG87MDtMOzs7OztOOzs7OzsKKzEyMDk7RVRISU9QSUMgU1lMTEFCTEUgTFU7TG87MDtMOzs7OztOOzs7OzsKKzEyMEE7RVRISU9QSUMgU1lMTEFCTEUgTEk7TG87MDtMOzs7OztOOzs7OzsKKzEyMEI7RVRISU9QSUMgU1lMTEFCTEUgTEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjBDO0VUSElPUElDIFNZTExBQkxFIExFRTtMbzswO0w7Ozs7O047Ozs7OworMTIwRDtFVEhJT1BJQyBTWUxMQUJMRSBMRTtMbzswO0w7Ozs7O047Ozs7OworMTIwRTtFVEhJT1BJQyBTWUxMQUJMRSBMTztMbzswO0w7Ozs7O047Ozs7OworMTIwRjtFVEhJT1BJQyBTWUxMQUJMRSBMV0E7TG87MDtMOzs7OztOOzs7OzsKKzEyMTA7RVRISU9QSUMgU1lMTEFCTEUgSEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjExO0VUSElPUElDIFNZTExBQkxFIEhIVTtMbzswO0w7Ozs7O047Ozs7OworMTIxMjtFVEhJT1BJQyBTWUxMQUJMRSBISEk7TG87MDtMOzs7OztOOzs7OzsKKzEyMTM7RVRISU9QSUMgU1lMTEFCTEUgSEhBQTtMbzswO0w7Ozs7O047Ozs7OworMTIxNDtFVEhJT1BJQyBTWUxMQUJMRSBISEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjE1O0VUSElPUElDIFNZTExBQkxFIEhIRTtMbzswO0w7Ozs7O047Ozs7OworMTIxNjtFVEhJT1BJQyBTWUxMQUJMRSBISE87TG87MDtMOzs7OztOOzs7OzsKKzEyMTc7RVRISU9QSUMgU1lMTEFCTEUgSEhXQTtMbzswO0w7Ozs7O047Ozs7OworMTIxODtFVEhJT1BJQyBTWUxMQUJMRSBNQTtMbzswO0w7Ozs7O047Ozs7OworMTIxOTtFVEhJT1BJQyBTWUxMQUJMRSBNVTtMbzswO0w7Ozs7O047Ozs7OworMTIxQTtFVEhJT1BJQyBTWUxMQUJMRSBNSTtMbzswO0w7Ozs7O047Ozs7OworMTIxQjtFVEhJT1BJQyBTWUxMQUJMRSBNQUE7TG87MDtMOzs7OztOOzs7OzsKKzEyMUM7RVRISU9QSUMgU1lMTEFCTEUgTUVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjFEO0VUSElPUElDIFNZTExBQkxFIE1FO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjFFO0VUSElPUElDIFNZTExBQkxFIE1PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjFGO0VUSElPUElDIFNZTExBQkxFIE1XQTtMbzswO0w7Ozs7O047Ozs7OworMTIyMDtFVEhJT1BJQyBTWUxMQUJMRSBTWkE7TG87MDtMOzs7OztOOzs7OzsKKzEyMjE7RVRISU9QSUMgU1lMTEFCTEUgU1pVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjIyO0VUSElPUElDIFNZTExBQkxFIFNaSTtMbzswO0w7Ozs7O047Ozs7OworMTIyMztFVEhJT1BJQyBTWUxMQUJMRSBTWkFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjI0O0VUSElPUElDIFNZTExBQkxFIFNaRUU7TG87MDtMOzs7OztOOzs7OzsKKzEyMjU7RVRISU9QSUMgU1lMTEFCTEUgU1pFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjI2O0VUSElPUElDIFNZTExBQkxFIFNaTztMbzswO0w7Ozs7O047Ozs7OworMTIyNztFVEhJT1BJQyBTWUxMQUJMRSBTWldBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjI4O0VUSElPUElDIFNZTExBQkxFIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjI5O0VUSElPUElDIFNZTExBQkxFIFJVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjJBO0VUSElPUElDIFNZTExBQkxFIFJJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjJCO0VUSElPUElDIFNZTExBQkxFIFJBQTtMbzswO0w7Ozs7O047Ozs7OworMTIyQztFVEhJT1BJQyBTWUxMQUJMRSBSRUU7TG87MDtMOzs7OztOOzs7OzsKKzEyMkQ7RVRISU9QSUMgU1lMTEFCTEUgUkU7TG87MDtMOzs7OztOOzs7OzsKKzEyMkU7RVRISU9QSUMgU1lMTEFCTEUgUk87TG87MDtMOzs7OztOOzs7OzsKKzEyMkY7RVRISU9QSUMgU1lMTEFCTEUgUldBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjMwO0VUSElPUElDIFNZTExBQkxFIFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjMxO0VUSElPUElDIFNZTExBQkxFIFNVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjMyO0VUSElPUElDIFNZTExBQkxFIFNJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjMzO0VUSElPUElDIFNZTExBQkxFIFNBQTtMbzswO0w7Ozs7O047Ozs7OworMTIzNDtFVEhJT1BJQyBTWUxMQUJMRSBTRUU7TG87MDtMOzs7OztOOzs7OzsKKzEyMzU7RVRISU9QSUMgU1lMTEFCTEUgU0U7TG87MDtMOzs7OztOOzs7OzsKKzEyMzY7RVRISU9QSUMgU1lMTEFCTEUgU087TG87MDtMOzs7OztOOzs7OzsKKzEyMzc7RVRISU9QSUMgU1lMTEFCTEUgU1dBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjM4O0VUSElPUElDIFNZTExBQkxFIFNIQTtMbzswO0w7Ozs7O047Ozs7OworMTIzOTtFVEhJT1BJQyBTWUxMQUJMRSBTSFU7TG87MDtMOzs7OztOOzs7OzsKKzEyM0E7RVRISU9QSUMgU1lMTEFCTEUgU0hJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjNCO0VUSElPUElDIFNZTExBQkxFIFNIQUE7TG87MDtMOzs7OztOOzs7OzsKKzEyM0M7RVRISU9QSUMgU1lMTEFCTEUgU0hFRTtMbzswO0w7Ozs7O047Ozs7OworMTIzRDtFVEhJT1BJQyBTWUxMQUJMRSBTSEU7TG87MDtMOzs7OztOOzs7OzsKKzEyM0U7RVRISU9QSUMgU1lMTEFCTEUgU0hPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjNGO0VUSElPUElDIFNZTExBQkxFIFNIV0E7TG87MDtMOzs7OztOOzs7OzsKKzEyNDA7RVRISU9QSUMgU1lMTEFCTEUgUUE7TG87MDtMOzs7OztOOzs7OzsKKzEyNDE7RVRISU9QSUMgU1lMTEFCTEUgUVU7TG87MDtMOzs7OztOOzs7OzsKKzEyNDI7RVRISU9QSUMgU1lMTEFCTEUgUUk7TG87MDtMOzs7OztOOzs7OzsKKzEyNDM7RVRISU9QSUMgU1lMTEFCTEUgUUFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjQ0O0VUSElPUElDIFNZTExBQkxFIFFFRTtMbzswO0w7Ozs7O047Ozs7OworMTI0NTtFVEhJT1BJQyBTWUxMQUJMRSBRRTtMbzswO0w7Ozs7O047Ozs7OworMTI0NjtFVEhJT1BJQyBTWUxMQUJMRSBRTztMbzswO0w7Ozs7O047Ozs7OworMTI0ODtFVEhJT1BJQyBTWUxMQUJMRSBRV0E7TG87MDtMOzs7OztOOzs7OzsKKzEyNEE7RVRISU9QSUMgU1lMTEFCTEUgUVdJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjRCO0VUSElPUElDIFNZTExBQkxFIFFXQUE7TG87MDtMOzs7OztOOzs7OzsKKzEyNEM7RVRISU9QSUMgU1lMTEFCTEUgUVdFRTtMbzswO0w7Ozs7O047Ozs7OworMTI0RDtFVEhJT1BJQyBTWUxMQUJMRSBRV0U7TG87MDtMOzs7OztOOzs7OzsKKzEyNTA7RVRISU9QSUMgU1lMTEFCTEUgUUhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjUxO0VUSElPUElDIFNZTExBQkxFIFFIVTtMbzswO0w7Ozs7O047Ozs7OworMTI1MjtFVEhJT1BJQyBTWUxMQUJMRSBRSEk7TG87MDtMOzs7OztOOzs7OzsKKzEyNTM7RVRISU9QSUMgU1lMTEFCTEUgUUhBQTtMbzswO0w7Ozs7O047Ozs7OworMTI1NDtFVEhJT1BJQyBTWUxMQUJMRSBRSEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjU1O0VUSElPUElDIFNZTExBQkxFIFFIRTtMbzswO0w7Ozs7O047Ozs7OworMTI1NjtFVEhJT1BJQyBTWUxMQUJMRSBRSE87TG87MDtMOzs7OztOOzs7OzsKKzEyNTg7RVRISU9QSUMgU1lMTEFCTEUgUUhXQTtMbzswO0w7Ozs7O047Ozs7OworMTI1QTtFVEhJT1BJQyBTWUxMQUJMRSBRSFdJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjVCO0VUSElPUElDIFNZTExBQkxFIFFIV0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjVDO0VUSElPUElDIFNZTExBQkxFIFFIV0VFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjVEO0VUSElPUElDIFNZTExBQkxFIFFIV0U7TG87MDtMOzs7OztOOzs7OzsKKzEyNjA7RVRISU9QSUMgU1lMTEFCTEUgQkE7TG87MDtMOzs7OztOOzs7OzsKKzEyNjE7RVRISU9QSUMgU1lMTEFCTEUgQlU7TG87MDtMOzs7OztOOzs7OzsKKzEyNjI7RVRISU9QSUMgU1lMTEFCTEUgQkk7TG87MDtMOzs7OztOOzs7OzsKKzEyNjM7RVRISU9QSUMgU1lMTEFCTEUgQkFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjY0O0VUSElPUElDIFNZTExBQkxFIEJFRTtMbzswO0w7Ozs7O047Ozs7OworMTI2NTtFVEhJT1BJQyBTWUxMQUJMRSBCRTtMbzswO0w7Ozs7O047Ozs7OworMTI2NjtFVEhJT1BJQyBTWUxMQUJMRSBCTztMbzswO0w7Ozs7O047Ozs7OworMTI2NztFVEhJT1BJQyBTWUxMQUJMRSBCV0E7TG87MDtMOzs7OztOOzs7OzsKKzEyNjg7RVRISU9QSUMgU1lMTEFCTEUgVkE7TG87MDtMOzs7OztOOzs7OzsKKzEyNjk7RVRISU9QSUMgU1lMTEFCTEUgVlU7TG87MDtMOzs7OztOOzs7OzsKKzEyNkE7RVRISU9QSUMgU1lMTEFCTEUgVkk7TG87MDtMOzs7OztOOzs7OzsKKzEyNkI7RVRISU9QSUMgU1lMTEFCTEUgVkFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjZDO0VUSElPUElDIFNZTExBQkxFIFZFRTtMbzswO0w7Ozs7O047Ozs7OworMTI2RDtFVEhJT1BJQyBTWUxMQUJMRSBWRTtMbzswO0w7Ozs7O047Ozs7OworMTI2RTtFVEhJT1BJQyBTWUxMQUJMRSBWTztMbzswO0w7Ozs7O047Ozs7OworMTI2RjtFVEhJT1BJQyBTWUxMQUJMRSBWV0E7TG87MDtMOzs7OztOOzs7OzsKKzEyNzA7RVRISU9QSUMgU1lMTEFCTEUgVEE7TG87MDtMOzs7OztOOzs7OzsKKzEyNzE7RVRISU9QSUMgU1lMTEFCTEUgVFU7TG87MDtMOzs7OztOOzs7OzsKKzEyNzI7RVRISU9QSUMgU1lMTEFCTEUgVEk7TG87MDtMOzs7OztOOzs7OzsKKzEyNzM7RVRISU9QSUMgU1lMTEFCTEUgVEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjc0O0VUSElPUElDIFNZTExBQkxFIFRFRTtMbzswO0w7Ozs7O047Ozs7OworMTI3NTtFVEhJT1BJQyBTWUxMQUJMRSBURTtMbzswO0w7Ozs7O047Ozs7OworMTI3NjtFVEhJT1BJQyBTWUxMQUJMRSBUTztMbzswO0w7Ozs7O047Ozs7OworMTI3NztFVEhJT1BJQyBTWUxMQUJMRSBUV0E7TG87MDtMOzs7OztOOzs7OzsKKzEyNzg7RVRISU9QSUMgU1lMTEFCTEUgQ0E7TG87MDtMOzs7OztOOzs7OzsKKzEyNzk7RVRISU9QSUMgU1lMTEFCTEUgQ1U7TG87MDtMOzs7OztOOzs7OzsKKzEyN0E7RVRISU9QSUMgU1lMTEFCTEUgQ0k7TG87MDtMOzs7OztOOzs7OzsKKzEyN0I7RVRISU9QSUMgU1lMTEFCTEUgQ0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjdDO0VUSElPUElDIFNZTExBQkxFIENFRTtMbzswO0w7Ozs7O047Ozs7OworMTI3RDtFVEhJT1BJQyBTWUxMQUJMRSBDRTtMbzswO0w7Ozs7O047Ozs7OworMTI3RTtFVEhJT1BJQyBTWUxMQUJMRSBDTztMbzswO0w7Ozs7O047Ozs7OworMTI3RjtFVEhJT1BJQyBTWUxMQUJMRSBDV0E7TG87MDtMOzs7OztOOzs7OzsKKzEyODA7RVRISU9QSUMgU1lMTEFCTEUgWEE7TG87MDtMOzs7OztOOzs7OzsKKzEyODE7RVRISU9QSUMgU1lMTEFCTEUgWFU7TG87MDtMOzs7OztOOzs7OzsKKzEyODI7RVRISU9QSUMgU1lMTEFCTEUgWEk7TG87MDtMOzs7OztOOzs7OzsKKzEyODM7RVRISU9QSUMgU1lMTEFCTEUgWEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjg0O0VUSElPUElDIFNZTExBQkxFIFhFRTtMbzswO0w7Ozs7O047Ozs7OworMTI4NTtFVEhJT1BJQyBTWUxMQUJMRSBYRTtMbzswO0w7Ozs7O047Ozs7OworMTI4NjtFVEhJT1BJQyBTWUxMQUJMRSBYTztMbzswO0w7Ozs7O047Ozs7OworMTI4ODtFVEhJT1BJQyBTWUxMQUJMRSBYV0E7TG87MDtMOzs7OztOOzs7OzsKKzEyOEE7RVRISU9QSUMgU1lMTEFCTEUgWFdJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjhCO0VUSElPUElDIFNZTExBQkxFIFhXQUE7TG87MDtMOzs7OztOOzs7OzsKKzEyOEM7RVRISU9QSUMgU1lMTEFCTEUgWFdFRTtMbzswO0w7Ozs7O047Ozs7OworMTI4RDtFVEhJT1BJQyBTWUxMQUJMRSBYV0U7TG87MDtMOzs7OztOOzs7OzsKKzEyOTA7RVRISU9QSUMgU1lMTEFCTEUgTkE7TG87MDtMOzs7OztOOzs7OzsKKzEyOTE7RVRISU9QSUMgU1lMTEFCTEUgTlU7TG87MDtMOzs7OztOOzs7OzsKKzEyOTI7RVRISU9QSUMgU1lMTEFCTEUgTkk7TG87MDtMOzs7OztOOzs7OzsKKzEyOTM7RVRISU9QSUMgU1lMTEFCTEUgTkFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjk0O0VUSElPUElDIFNZTExBQkxFIE5FRTtMbzswO0w7Ozs7O047Ozs7OworMTI5NTtFVEhJT1BJQyBTWUxMQUJMRSBORTtMbzswO0w7Ozs7O047Ozs7OworMTI5NjtFVEhJT1BJQyBTWUxMQUJMRSBOTztMbzswO0w7Ozs7O047Ozs7OworMTI5NztFVEhJT1BJQyBTWUxMQUJMRSBOV0E7TG87MDtMOzs7OztOOzs7OzsKKzEyOTg7RVRISU9QSUMgU1lMTEFCTEUgTllBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjk5O0VUSElPUElDIFNZTExBQkxFIE5ZVTtMbzswO0w7Ozs7O047Ozs7OworMTI5QTtFVEhJT1BJQyBTWUxMQUJMRSBOWUk7TG87MDtMOzs7OztOOzs7OzsKKzEyOUI7RVRISU9QSUMgU1lMTEFCTEUgTllBQTtMbzswO0w7Ozs7O047Ozs7OworMTI5QztFVEhJT1BJQyBTWUxMQUJMRSBOWUVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjlEO0VUSElPUElDIFNZTExBQkxFIE5ZRTtMbzswO0w7Ozs7O047Ozs7OworMTI5RTtFVEhJT1BJQyBTWUxMQUJMRSBOWU87TG87MDtMOzs7OztOOzs7OzsKKzEyOUY7RVRISU9QSUMgU1lMTEFCTEUgTllXQTtMbzswO0w7Ozs7O047Ozs7OworMTJBMDtFVEhJT1BJQyBTWUxMQUJMRSBHTE9UVEFMIEE7TG87MDtMOzs7OztOOzs7OzsKKzEyQTE7RVRISU9QSUMgU1lMTEFCTEUgR0xPVFRBTCBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkEyO0VUSElPUElDIFNZTExBQkxFIEdMT1RUQUwgSTtMbzswO0w7Ozs7O047Ozs7OworMTJBMztFVEhJT1BJQyBTWUxMQUJMRSBHTE9UVEFMIEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkE0O0VUSElPUElDIFNZTExBQkxFIEdMT1RUQUwgRUU7TG87MDtMOzs7OztOOzs7OzsKKzEyQTU7RVRISU9QSUMgU1lMTEFCTEUgR0xPVFRBTCBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkE2O0VUSElPUElDIFNZTExBQkxFIEdMT1RUQUwgTztMbzswO0w7Ozs7O047Ozs7OworMTJBNztFVEhJT1BJQyBTWUxMQUJMRSBHTE9UVEFMIFdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkE4O0VUSElPUElDIFNZTExBQkxFIEtBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkE5O0VUSElPUElDIFNZTExBQkxFIEtVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkFBO0VUSElPUElDIFNZTExBQkxFIEtJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkFCO0VUSElPUElDIFNZTExBQkxFIEtBQTtMbzswO0w7Ozs7O047Ozs7OworMTJBQztFVEhJT1BJQyBTWUxMQUJMRSBLRUU7TG87MDtMOzs7OztOOzs7OzsKKzEyQUQ7RVRISU9QSUMgU1lMTEFCTEUgS0U7TG87MDtMOzs7OztOOzs7OzsKKzEyQUU7RVRISU9QSUMgU1lMTEFCTEUgS087TG87MDtMOzs7OztOOzs7OzsKKzEyQjA7RVRISU9QSUMgU1lMTEFCTEUgS1dBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkIyO0VUSElPUElDIFNZTExBQkxFIEtXSTtMbzswO0w7Ozs7O047Ozs7OworMTJCMztFVEhJT1BJQyBTWUxMQUJMRSBLV0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkI0O0VUSElPUElDIFNZTExBQkxFIEtXRUU7TG87MDtMOzs7OztOOzs7OzsKKzEyQjU7RVRISU9QSUMgU1lMTEFCTEUgS1dFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkI4O0VUSElPUElDIFNZTExBQkxFIEtYQTtMbzswO0w7Ozs7O047Ozs7OworMTJCOTtFVEhJT1BJQyBTWUxMQUJMRSBLWFU7TG87MDtMOzs7OztOOzs7OzsKKzEyQkE7RVRISU9QSUMgU1lMTEFCTEUgS1hJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkJCO0VUSElPUElDIFNZTExBQkxFIEtYQUE7TG87MDtMOzs7OztOOzs7OzsKKzEyQkM7RVRISU9QSUMgU1lMTEFCTEUgS1hFRTtMbzswO0w7Ozs7O047Ozs7OworMTJCRDtFVEhJT1BJQyBTWUxMQUJMRSBLWEU7TG87MDtMOzs7OztOOzs7OzsKKzEyQkU7RVRISU9QSUMgU1lMTEFCTEUgS1hPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkMwO0VUSElPUElDIFNZTExBQkxFIEtYV0E7TG87MDtMOzs7OztOOzs7OzsKKzEyQzI7RVRISU9QSUMgU1lMTEFCTEUgS1hXSTtMbzswO0w7Ozs7O047Ozs7OworMTJDMztFVEhJT1BJQyBTWUxMQUJMRSBLWFdBQTtMbzswO0w7Ozs7O047Ozs7OworMTJDNDtFVEhJT1BJQyBTWUxMQUJMRSBLWFdFRTtMbzswO0w7Ozs7O047Ozs7OworMTJDNTtFVEhJT1BJQyBTWUxMQUJMRSBLWFdFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkM4O0VUSElPUElDIFNZTExBQkxFIFdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkM5O0VUSElPUElDIFNZTExBQkxFIFdVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkNBO0VUSElPUElDIFNZTExBQkxFIFdJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkNCO0VUSElPUElDIFNZTExBQkxFIFdBQTtMbzswO0w7Ozs7O047Ozs7OworMTJDQztFVEhJT1BJQyBTWUxMQUJMRSBXRUU7TG87MDtMOzs7OztOOzs7OzsKKzEyQ0Q7RVRISU9QSUMgU1lMTEFCTEUgV0U7TG87MDtMOzs7OztOOzs7OzsKKzEyQ0U7RVRISU9QSUMgU1lMTEFCTEUgV087TG87MDtMOzs7OztOOzs7OzsKKzEyRDA7RVRISU9QSUMgU1lMTEFCTEUgUEhBUllOR0VBTCBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkQxO0VUSElPUElDIFNZTExBQkxFIFBIQVJZTkdFQUwgVTtMbzswO0w7Ozs7O047Ozs7OworMTJEMjtFVEhJT1BJQyBTWUxMQUJMRSBQSEFSWU5HRUFMIEk7TG87MDtMOzs7OztOOzs7OzsKKzEyRDM7RVRISU9QSUMgU1lMTEFCTEUgUEhBUllOR0VBTCBBQTtMbzswO0w7Ozs7O047Ozs7OworMTJENDtFVEhJT1BJQyBTWUxMQUJMRSBQSEFSWU5HRUFMIEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkQ1O0VUSElPUElDIFNZTExBQkxFIFBIQVJZTkdFQUwgRTtMbzswO0w7Ozs7O047Ozs7OworMTJENjtFVEhJT1BJQyBTWUxMQUJMRSBQSEFSWU5HRUFMIE87TG87MDtMOzs7OztOOzs7OzsKKzEyRDg7RVRISU9QSUMgU1lMTEFCTEUgWkE7TG87MDtMOzs7OztOOzs7OzsKKzEyRDk7RVRISU9QSUMgU1lMTEFCTEUgWlU7TG87MDtMOzs7OztOOzs7OzsKKzEyREE7RVRISU9QSUMgU1lMTEFCTEUgWkk7TG87MDtMOzs7OztOOzs7OzsKKzEyREI7RVRISU9QSUMgU1lMTEFCTEUgWkFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkRDO0VUSElPUElDIFNZTExBQkxFIFpFRTtMbzswO0w7Ozs7O047Ozs7OworMTJERDtFVEhJT1BJQyBTWUxMQUJMRSBaRTtMbzswO0w7Ozs7O047Ozs7OworMTJERTtFVEhJT1BJQyBTWUxMQUJMRSBaTztMbzswO0w7Ozs7O047Ozs7OworMTJERjtFVEhJT1BJQyBTWUxMQUJMRSBaV0E7TG87MDtMOzs7OztOOzs7OzsKKzEyRTA7RVRISU9QSUMgU1lMTEFCTEUgWkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkUxO0VUSElPUElDIFNZTExBQkxFIFpIVTtMbzswO0w7Ozs7O047Ozs7OworMTJFMjtFVEhJT1BJQyBTWUxMQUJMRSBaSEk7TG87MDtMOzs7OztOOzs7OzsKKzEyRTM7RVRISU9QSUMgU1lMTEFCTEUgWkhBQTtMbzswO0w7Ozs7O047Ozs7OworMTJFNDtFVEhJT1BJQyBTWUxMQUJMRSBaSEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkU1O0VUSElPUElDIFNZTExBQkxFIFpIRTtMbzswO0w7Ozs7O047Ozs7OworMTJFNjtFVEhJT1BJQyBTWUxMQUJMRSBaSE87TG87MDtMOzs7OztOOzs7OzsKKzEyRTc7RVRISU9QSUMgU1lMTEFCTEUgWkhXQTtMbzswO0w7Ozs7O047Ozs7OworMTJFODtFVEhJT1BJQyBTWUxMQUJMRSBZQTtMbzswO0w7Ozs7O047Ozs7OworMTJFOTtFVEhJT1BJQyBTWUxMQUJMRSBZVTtMbzswO0w7Ozs7O047Ozs7OworMTJFQTtFVEhJT1BJQyBTWUxMQUJMRSBZSTtMbzswO0w7Ozs7O047Ozs7OworMTJFQjtFVEhJT1BJQyBTWUxMQUJMRSBZQUE7TG87MDtMOzs7OztOOzs7OzsKKzEyRUM7RVRISU9QSUMgU1lMTEFCTEUgWUVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkVEO0VUSElPUElDIFNZTExBQkxFIFlFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkVFO0VUSElPUElDIFNZTExBQkxFIFlPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkYwO0VUSElPUElDIFNZTExBQkxFIERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkYxO0VUSElPUElDIFNZTExBQkxFIERVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkYyO0VUSElPUElDIFNZTExBQkxFIERJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkYzO0VUSElPUElDIFNZTExBQkxFIERBQTtMbzswO0w7Ozs7O047Ozs7OworMTJGNDtFVEhJT1BJQyBTWUxMQUJMRSBERUU7TG87MDtMOzs7OztOOzs7OzsKKzEyRjU7RVRISU9QSUMgU1lMTEFCTEUgREU7TG87MDtMOzs7OztOOzs7OzsKKzEyRjY7RVRISU9QSUMgU1lMTEFCTEUgRE87TG87MDtMOzs7OztOOzs7OzsKKzEyRjc7RVRISU9QSUMgU1lMTEFCTEUgRFdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkY4O0VUSElPUElDIFNZTExBQkxFIEREQTtMbzswO0w7Ozs7O047Ozs7OworMTJGOTtFVEhJT1BJQyBTWUxMQUJMRSBERFU7TG87MDtMOzs7OztOOzs7OzsKKzEyRkE7RVRISU9QSUMgU1lMTEFCTEUgRERJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkZCO0VUSElPUElDIFNZTExBQkxFIEREQUE7TG87MDtMOzs7OztOOzs7OzsKKzEyRkM7RVRISU9QSUMgU1lMTEFCTEUgRERFRTtMbzswO0w7Ozs7O047Ozs7OworMTJGRDtFVEhJT1BJQyBTWUxMQUJMRSBEREU7TG87MDtMOzs7OztOOzs7OzsKKzEyRkU7RVRISU9QSUMgU1lMTEFCTEUgRERPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkZGO0VUSElPUElDIFNZTExBQkxFIEREV0E7TG87MDtMOzs7OztOOzs7OzsKKzEzMDA7RVRISU9QSUMgU1lMTEFCTEUgSkE7TG87MDtMOzs7OztOOzs7OzsKKzEzMDE7RVRISU9QSUMgU1lMTEFCTEUgSlU7TG87MDtMOzs7OztOOzs7OzsKKzEzMDI7RVRISU9QSUMgU1lMTEFCTEUgSkk7TG87MDtMOzs7OztOOzs7OzsKKzEzMDM7RVRISU9QSUMgU1lMTEFCTEUgSkFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzA0O0VUSElPUElDIFNZTExBQkxFIEpFRTtMbzswO0w7Ozs7O047Ozs7OworMTMwNTtFVEhJT1BJQyBTWUxMQUJMRSBKRTtMbzswO0w7Ozs7O047Ozs7OworMTMwNjtFVEhJT1BJQyBTWUxMQUJMRSBKTztMbzswO0w7Ozs7O047Ozs7OworMTMwNztFVEhJT1BJQyBTWUxMQUJMRSBKV0E7TG87MDtMOzs7OztOOzs7OzsKKzEzMDg7RVRISU9QSUMgU1lMTEFCTEUgR0E7TG87MDtMOzs7OztOOzs7OzsKKzEzMDk7RVRISU9QSUMgU1lMTEFCTEUgR1U7TG87MDtMOzs7OztOOzs7OzsKKzEzMEE7RVRISU9QSUMgU1lMTEFCTEUgR0k7TG87MDtMOzs7OztOOzs7OzsKKzEzMEI7RVRISU9QSUMgU1lMTEFCTEUgR0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzBDO0VUSElPUElDIFNZTExBQkxFIEdFRTtMbzswO0w7Ozs7O047Ozs7OworMTMwRDtFVEhJT1BJQyBTWUxMQUJMRSBHRTtMbzswO0w7Ozs7O047Ozs7OworMTMwRTtFVEhJT1BJQyBTWUxMQUJMRSBHTztMbzswO0w7Ozs7O047Ozs7OworMTMxMDtFVEhJT1BJQyBTWUxMQUJMRSBHV0E7TG87MDtMOzs7OztOOzs7OzsKKzEzMTI7RVRISU9QSUMgU1lMTEFCTEUgR1dJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzEzO0VUSElPUElDIFNZTExBQkxFIEdXQUE7TG87MDtMOzs7OztOOzs7OzsKKzEzMTQ7RVRISU9QSUMgU1lMTEFCTEUgR1dFRTtMbzswO0w7Ozs7O047Ozs7OworMTMxNTtFVEhJT1BJQyBTWUxMQUJMRSBHV0U7TG87MDtMOzs7OztOOzs7OzsKKzEzMTg7RVRISU9QSUMgU1lMTEFCTEUgR0dBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzE5O0VUSElPUElDIFNZTExBQkxFIEdHVTtMbzswO0w7Ozs7O047Ozs7OworMTMxQTtFVEhJT1BJQyBTWUxMQUJMRSBHR0k7TG87MDtMOzs7OztOOzs7OzsKKzEzMUI7RVRISU9QSUMgU1lMTEFCTEUgR0dBQTtMbzswO0w7Ozs7O047Ozs7OworMTMxQztFVEhJT1BJQyBTWUxMQUJMRSBHR0VFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzFEO0VUSElPUElDIFNZTExBQkxFIEdHRTtMbzswO0w7Ozs7O047Ozs7OworMTMxRTtFVEhJT1BJQyBTWUxMQUJMRSBHR087TG87MDtMOzs7OztOOzs7OzsKKzEzMjA7RVRISU9QSUMgU1lMTEFCTEUgVEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzIxO0VUSElPUElDIFNZTExBQkxFIFRIVTtMbzswO0w7Ozs7O047Ozs7OworMTMyMjtFVEhJT1BJQyBTWUxMQUJMRSBUSEk7TG87MDtMOzs7OztOOzs7OzsKKzEzMjM7RVRISU9QSUMgU1lMTEFCTEUgVEhBQTtMbzswO0w7Ozs7O047Ozs7OworMTMyNDtFVEhJT1BJQyBTWUxMQUJMRSBUSEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzI1O0VUSElPUElDIFNZTExBQkxFIFRIRTtMbzswO0w7Ozs7O047Ozs7OworMTMyNjtFVEhJT1BJQyBTWUxMQUJMRSBUSE87TG87MDtMOzs7OztOOzs7OzsKKzEzMjc7RVRISU9QSUMgU1lMTEFCTEUgVEhXQTtMbzswO0w7Ozs7O047Ozs7OworMTMyODtFVEhJT1BJQyBTWUxMQUJMRSBDSEE7TG87MDtMOzs7OztOOzs7OzsKKzEzMjk7RVRISU9QSUMgU1lMTEFCTEUgQ0hVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzJBO0VUSElPUElDIFNZTExBQkxFIENISTtMbzswO0w7Ozs7O047Ozs7OworMTMyQjtFVEhJT1BJQyBTWUxMQUJMRSBDSEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzJDO0VUSElPUElDIFNZTExBQkxFIENIRUU7TG87MDtMOzs7OztOOzs7OzsKKzEzMkQ7RVRISU9QSUMgU1lMTEFCTEUgQ0hFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzJFO0VUSElPUElDIFNZTExBQkxFIENITztMbzswO0w7Ozs7O047Ozs7OworMTMyRjtFVEhJT1BJQyBTWUxMQUJMRSBDSFdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzMwO0VUSElPUElDIFNZTExBQkxFIFBIQTtMbzswO0w7Ozs7O047Ozs7OworMTMzMTtFVEhJT1BJQyBTWUxMQUJMRSBQSFU7TG87MDtMOzs7OztOOzs7OzsKKzEzMzI7RVRISU9QSUMgU1lMTEFCTEUgUEhJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzMzO0VUSElPUElDIFNZTExBQkxFIFBIQUE7TG87MDtMOzs7OztOOzs7OzsKKzEzMzQ7RVRISU9QSUMgU1lMTEFCTEUgUEhFRTtMbzswO0w7Ozs7O047Ozs7OworMTMzNTtFVEhJT1BJQyBTWUxMQUJMRSBQSEU7TG87MDtMOzs7OztOOzs7OzsKKzEzMzY7RVRISU9QSUMgU1lMTEFCTEUgUEhPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzM3O0VUSElPUElDIFNZTExBQkxFIFBIV0E7TG87MDtMOzs7OztOOzs7OzsKKzEzMzg7RVRISU9QSUMgU1lMTEFCTEUgVFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzM5O0VUSElPUElDIFNZTExBQkxFIFRTVTtMbzswO0w7Ozs7O047Ozs7OworMTMzQTtFVEhJT1BJQyBTWUxMQUJMRSBUU0k7TG87MDtMOzs7OztOOzs7OzsKKzEzM0I7RVRISU9QSUMgU1lMTEFCTEUgVFNBQTtMbzswO0w7Ozs7O047Ozs7OworMTMzQztFVEhJT1BJQyBTWUxMQUJMRSBUU0VFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzNEO0VUSElPUElDIFNZTExBQkxFIFRTRTtMbzswO0w7Ozs7O047Ozs7OworMTMzRTtFVEhJT1BJQyBTWUxMQUJMRSBUU087TG87MDtMOzs7OztOOzs7OzsKKzEzM0Y7RVRISU9QSUMgU1lMTEFCTEUgVFNXQTtMbzswO0w7Ozs7O047Ozs7OworMTM0MDtFVEhJT1BJQyBTWUxMQUJMRSBUWkE7TG87MDtMOzs7OztOOzs7OzsKKzEzNDE7RVRISU9QSUMgU1lMTEFCTEUgVFpVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzQyO0VUSElPUElDIFNZTExBQkxFIFRaSTtMbzswO0w7Ozs7O047Ozs7OworMTM0MztFVEhJT1BJQyBTWUxMQUJMRSBUWkFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzQ0O0VUSElPUElDIFNZTExBQkxFIFRaRUU7TG87MDtMOzs7OztOOzs7OzsKKzEzNDU7RVRISU9QSUMgU1lMTEFCTEUgVFpFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzQ2O0VUSElPUElDIFNZTExBQkxFIFRaTztMbzswO0w7Ozs7O047Ozs7OworMTM0ODtFVEhJT1BJQyBTWUxMQUJMRSBGQTtMbzswO0w7Ozs7O047Ozs7OworMTM0OTtFVEhJT1BJQyBTWUxMQUJMRSBGVTtMbzswO0w7Ozs7O047Ozs7OworMTM0QTtFVEhJT1BJQyBTWUxMQUJMRSBGSTtMbzswO0w7Ozs7O047Ozs7OworMTM0QjtFVEhJT1BJQyBTWUxMQUJMRSBGQUE7TG87MDtMOzs7OztOOzs7OzsKKzEzNEM7RVRISU9QSUMgU1lMTEFCTEUgRkVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzREO0VUSElPUElDIFNZTExBQkxFIEZFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzRFO0VUSElPUElDIFNZTExBQkxFIEZPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzRGO0VUSElPUElDIFNZTExBQkxFIEZXQTtMbzswO0w7Ozs7O047Ozs7OworMTM1MDtFVEhJT1BJQyBTWUxMQUJMRSBQQTtMbzswO0w7Ozs7O047Ozs7OworMTM1MTtFVEhJT1BJQyBTWUxMQUJMRSBQVTtMbzswO0w7Ozs7O047Ozs7OworMTM1MjtFVEhJT1BJQyBTWUxMQUJMRSBQSTtMbzswO0w7Ozs7O047Ozs7OworMTM1MztFVEhJT1BJQyBTWUxMQUJMRSBQQUE7TG87MDtMOzs7OztOOzs7OzsKKzEzNTQ7RVRISU9QSUMgU1lMTEFCTEUgUEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzU1O0VUSElPUElDIFNZTExBQkxFIFBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzU2O0VUSElPUElDIFNZTExBQkxFIFBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzU3O0VUSElPUElDIFNZTExBQkxFIFBXQTtMbzswO0w7Ozs7O047Ozs7OworMTM1ODtFVEhJT1BJQyBTWUxMQUJMRSBSWUE7TG87MDtMOzs7OztOOzs7OzsKKzEzNTk7RVRISU9QSUMgU1lMTEFCTEUgTVlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzVBO0VUSElPUElDIFNZTExBQkxFIEZZQTtMbzswO0w7Ozs7O047Ozs7OworMTM2MTtFVEhJT1BJQyBXT1JEU1BBQ0U7UG87MDtMOzs7OztOOzs7OzsKKzEzNjI7RVRISU9QSUMgRlVMTCBTVE9QO1BvOzA7TDs7Ozs7Tjs7Ozs7CisxMzYzO0VUSElPUElDIENPTU1BO1BvOzA7TDs7Ozs7Tjs7Ozs7CisxMzY0O0VUSElPUElDIFNFTUlDT0xPTjtQbzswO0w7Ozs7O047Ozs7OworMTM2NTtFVEhJT1BJQyBDT0xPTjtQbzswO0w7Ozs7O047Ozs7OworMTM2NjtFVEhJT1BJQyBQUkVGQUNFIENPTE9OO1BvOzA7TDs7Ozs7Tjs7Ozs7CisxMzY3O0VUSElPUElDIFFVRVNUSU9OIE1BUks7UG87MDtMOzs7OztOOzs7OzsKKzEzNjg7RVRISU9QSUMgUEFSQUdSQVBIIFNFUEFSQVRPUjtQbzswO0w7Ozs7O047Ozs7OworMTM2OTtFVEhJT1BJQyBESUdJVCBPTkU7TmQ7MDtMOzsxOzE7MTtOOzs7OzsKKzEzNkE7RVRISU9QSUMgRElHSVQgVFdPO05kOzA7TDs7MjsyOzI7Tjs7Ozs7CisxMzZCO0VUSElPUElDIERJR0lUIFRIUkVFO05kOzA7TDs7MzszOzM7Tjs7Ozs7CisxMzZDO0VUSElPUElDIERJR0lUIEZPVVI7TmQ7MDtMOzs0OzQ7NDtOOzs7OzsKKzEzNkQ7RVRISU9QSUMgRElHSVQgRklWRTtOZDswO0w7OzU7NTs1O047Ozs7OworMTM2RTtFVEhJT1BJQyBESUdJVCBTSVg7TmQ7MDtMOzs2OzY7NjtOOzs7OzsKKzEzNkY7RVRISU9QSUMgRElHSVQgU0VWRU47TmQ7MDtMOzs3Ozc7NztOOzs7OzsKKzEzNzA7RVRISU9QSUMgRElHSVQgRUlHSFQ7TmQ7MDtMOzs4Ozg7ODtOOzs7OzsKKzEzNzE7RVRISU9QSUMgRElHSVQgTklORTtOZDswO0w7Ozk7OTs5O047Ozs7OworMTM3MjtFVEhJT1BJQyBOVU1CRVIgVEVOO05vOzA7TDs7OzsxMDtOOzs7OzsKKzEzNzM7RVRISU9QSUMgTlVNQkVSIFRXRU5UWTtObzswO0w7Ozs7MjA7Tjs7Ozs7CisxMzc0O0VUSElPUElDIE5VTUJFUiBUSElSVFk7Tm87MDtMOzs7OzMwO047Ozs7OworMTM3NTtFVEhJT1BJQyBOVU1CRVIgRk9SVFk7Tm87MDtMOzs7OzQwO047Ozs7OworMTM3NjtFVEhJT1BJQyBOVU1CRVIgRklGVFk7Tm87MDtMOzs7OzUwO047Ozs7OworMTM3NztFVEhJT1BJQyBOVU1CRVIgU0lYVFk7Tm87MDtMOzs7OzYwO047Ozs7OworMTM3ODtFVEhJT1BJQyBOVU1CRVIgU0VWRU5UWTtObzswO0w7Ozs7NzA7Tjs7Ozs7CisxMzc5O0VUSElPUElDIE5VTUJFUiBFSUdIVFk7Tm87MDtMOzs7OzgwO047Ozs7OworMTM3QTtFVEhJT1BJQyBOVU1CRVIgTklORVRZO05vOzA7TDs7Ozs5MDtOOzs7OzsKKzEzN0I7RVRISU9QSUMgTlVNQkVSIEhVTkRSRUQ7Tm87MDtMOzs7OzEwMDtOOzs7OzsKKzEzN0M7RVRISU9QSUMgTlVNQkVSIFRFTiBUSE9VU0FORDtObzswO0w7Ozs7MTAwMDA7Tjs7Ozs7CisxM0EwO0NIRVJPS0VFIExFVFRFUiBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0ExO0NIRVJPS0VFIExFVFRFUiBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0EyO0NIRVJPS0VFIExFVFRFUiBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0EzO0NIRVJPS0VFIExFVFRFUiBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0E0O0NIRVJPS0VFIExFVFRFUiBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0E1O0NIRVJPS0VFIExFVFRFUiBWO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0E2O0NIRVJPS0VFIExFVFRFUiBHQTtMbzswO0w7Ozs7O047Ozs7OworMTNBNztDSEVST0tFRSBMRVRURVIgS0E7TG87MDtMOzs7OztOOzs7OzsKKzEzQTg7Q0hFUk9LRUUgTEVUVEVSIEdFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0E5O0NIRVJPS0VFIExFVFRFUiBHSTtMbzswO0w7Ozs7O047Ozs7OworMTNBQTtDSEVST0tFRSBMRVRURVIgR087TG87MDtMOzs7OztOOzs7OzsKKzEzQUI7Q0hFUk9LRUUgTEVUVEVSIEdVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0FDO0NIRVJPS0VFIExFVFRFUiBHVjtMbzswO0w7Ozs7O047Ozs7OworMTNBRDtDSEVST0tFRSBMRVRURVIgSEE7TG87MDtMOzs7OztOOzs7OzsKKzEzQUU7Q0hFUk9LRUUgTEVUVEVSIEhFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0FGO0NIRVJPS0VFIExFVFRFUiBISTtMbzswO0w7Ozs7O047Ozs7OworMTNCMDtDSEVST0tFRSBMRVRURVIgSE87TG87MDtMOzs7OztOOzs7OzsKKzEzQjE7Q0hFUk9LRUUgTEVUVEVSIEhVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0IyO0NIRVJPS0VFIExFVFRFUiBIVjtMbzswO0w7Ozs7O047Ozs7OworMTNCMztDSEVST0tFRSBMRVRURVIgTEE7TG87MDtMOzs7OztOOzs7OzsKKzEzQjQ7Q0hFUk9LRUUgTEVUVEVSIExFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0I1O0NIRVJPS0VFIExFVFRFUiBMSTtMbzswO0w7Ozs7O047Ozs7OworMTNCNjtDSEVST0tFRSBMRVRURVIgTE87TG87MDtMOzs7OztOOzs7OzsKKzEzQjc7Q0hFUk9LRUUgTEVUVEVSIExVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0I4O0NIRVJPS0VFIExFVFRFUiBMVjtMbzswO0w7Ozs7O047Ozs7OworMTNCOTtDSEVST0tFRSBMRVRURVIgTUE7TG87MDtMOzs7OztOOzs7OzsKKzEzQkE7Q0hFUk9LRUUgTEVUVEVSIE1FO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0JCO0NIRVJPS0VFIExFVFRFUiBNSTtMbzswO0w7Ozs7O047Ozs7OworMTNCQztDSEVST0tFRSBMRVRURVIgTU87TG87MDtMOzs7OztOOzs7OzsKKzEzQkQ7Q0hFUk9LRUUgTEVUVEVSIE1VO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0JFO0NIRVJPS0VFIExFVFRFUiBOQTtMbzswO0w7Ozs7O047Ozs7OworMTNCRjtDSEVST0tFRSBMRVRURVIgSE5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0MwO0NIRVJPS0VFIExFVFRFUiBOQUg7TG87MDtMOzs7OztOOzs7OzsKKzEzQzE7Q0hFUk9LRUUgTEVUVEVSIE5FO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0MyO0NIRVJPS0VFIExFVFRFUiBOSTtMbzswO0w7Ozs7O047Ozs7OworMTNDMztDSEVST0tFRSBMRVRURVIgTk87TG87MDtMOzs7OztOOzs7OzsKKzEzQzQ7Q0hFUk9LRUUgTEVUVEVSIE5VO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0M1O0NIRVJPS0VFIExFVFRFUiBOVjtMbzswO0w7Ozs7O047Ozs7OworMTNDNjtDSEVST0tFRSBMRVRURVIgUVVBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0M3O0NIRVJPS0VFIExFVFRFUiBRVUU7TG87MDtMOzs7OztOOzs7OzsKKzEzQzg7Q0hFUk9LRUUgTEVUVEVSIFFVSTtMbzswO0w7Ozs7O047Ozs7OworMTNDOTtDSEVST0tFRSBMRVRURVIgUVVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0NBO0NIRVJPS0VFIExFVFRFUiBRVVU7TG87MDtMOzs7OztOOzs7OzsKKzEzQ0I7Q0hFUk9LRUUgTEVUVEVSIFFVVjtMbzswO0w7Ozs7O047Ozs7OworMTNDQztDSEVST0tFRSBMRVRURVIgU0E7TG87MDtMOzs7OztOOzs7OzsKKzEzQ0Q7Q0hFUk9LRUUgTEVUVEVSIFM7TG87MDtMOzs7OztOOzs7OzsKKzEzQ0U7Q0hFUk9LRUUgTEVUVEVSIFNFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0NGO0NIRVJPS0VFIExFVFRFUiBTSTtMbzswO0w7Ozs7O047Ozs7OworMTNEMDtDSEVST0tFRSBMRVRURVIgU087TG87MDtMOzs7OztOOzs7OzsKKzEzRDE7Q0hFUk9LRUUgTEVUVEVSIFNVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0QyO0NIRVJPS0VFIExFVFRFUiBTVjtMbzswO0w7Ozs7O047Ozs7OworMTNEMztDSEVST0tFRSBMRVRURVIgREE7TG87MDtMOzs7OztOOzs7OzsKKzEzRDQ7Q0hFUk9LRUUgTEVUVEVSIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0Q1O0NIRVJPS0VFIExFVFRFUiBERTtMbzswO0w7Ozs7O047Ozs7OworMTNENjtDSEVST0tFRSBMRVRURVIgVEU7TG87MDtMOzs7OztOOzs7OzsKKzEzRDc7Q0hFUk9LRUUgTEVUVEVSIERJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0Q4O0NIRVJPS0VFIExFVFRFUiBUSTtMbzswO0w7Ozs7O047Ozs7OworMTNEOTtDSEVST0tFRSBMRVRURVIgRE87TG87MDtMOzs7OztOOzs7OzsKKzEzREE7Q0hFUk9LRUUgTEVUVEVSIERVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0RCO0NIRVJPS0VFIExFVFRFUiBEVjtMbzswO0w7Ozs7O047Ozs7OworMTNEQztDSEVST0tFRSBMRVRURVIgRExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0REO0NIRVJPS0VFIExFVFRFUiBUTEE7TG87MDtMOzs7OztOOzs7OzsKKzEzREU7Q0hFUk9LRUUgTEVUVEVSIFRMRTtMbzswO0w7Ozs7O047Ozs7OworMTNERjtDSEVST0tFRSBMRVRURVIgVExJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0UwO0NIRVJPS0VFIExFVFRFUiBUTE87TG87MDtMOzs7OztOOzs7OzsKKzEzRTE7Q0hFUk9LRUUgTEVUVEVSIFRMVTtMbzswO0w7Ozs7O047Ozs7OworMTNFMjtDSEVST0tFRSBMRVRURVIgVExWO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0UzO0NIRVJPS0VFIExFVFRFUiBUU0E7TG87MDtMOzs7OztOOzs7OzsKKzEzRTQ7Q0hFUk9LRUUgTEVUVEVSIFRTRTtMbzswO0w7Ozs7O047Ozs7OworMTNFNTtDSEVST0tFRSBMRVRURVIgVFNJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0U2O0NIRVJPS0VFIExFVFRFUiBUU087TG87MDtMOzs7OztOOzs7OzsKKzEzRTc7Q0hFUk9LRUUgTEVUVEVSIFRTVTtMbzswO0w7Ozs7O047Ozs7OworMTNFODtDSEVST0tFRSBMRVRURVIgVFNWO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0U5O0NIRVJPS0VFIExFVFRFUiBXQTtMbzswO0w7Ozs7O047Ozs7OworMTNFQTtDSEVST0tFRSBMRVRURVIgV0U7TG87MDtMOzs7OztOOzs7OzsKKzEzRUI7Q0hFUk9LRUUgTEVUVEVSIFdJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0VDO0NIRVJPS0VFIExFVFRFUiBXTztMbzswO0w7Ozs7O047Ozs7OworMTNFRDtDSEVST0tFRSBMRVRURVIgV1U7TG87MDtMOzs7OztOOzs7OzsKKzEzRUU7Q0hFUk9LRUUgTEVUVEVSIFdWO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0VGO0NIRVJPS0VFIExFVFRFUiBZQTtMbzswO0w7Ozs7O047Ozs7OworMTNGMDtDSEVST0tFRSBMRVRURVIgWUU7TG87MDtMOzs7OztOOzs7OzsKKzEzRjE7Q0hFUk9LRUUgTEVUVEVSIFlJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0YyO0NIRVJPS0VFIExFVFRFUiBZTztMbzswO0w7Ozs7O047Ozs7OworMTNGMztDSEVST0tFRSBMRVRURVIgWVU7TG87MDtMOzs7OztOOzs7OzsKKzEzRjQ7Q0hFUk9LRUUgTEVUVEVSIFlWO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDAxO0NBTkFESUFOIFNZTExBQklDUyBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDAyO0NBTkFESUFOIFNZTExBQklDUyBBQUk7TG87MDtMOzs7OztOOzs7OzsKKzE0MDM7Q0FOQURJQU4gU1lMTEFCSUNTIEk7TG87MDtMOzs7OztOOzs7OzsKKzE0MDQ7Q0FOQURJQU4gU1lMTEFCSUNTIElJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDA1O0NBTkFESUFOIFNZTExBQklDUyBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDA2O0NBTkFESUFOIFNZTExBQklDUyBPTztMbzswO0w7Ozs7O047Ozs7OworMTQwNztDQU5BRElBTiBTWUxMQUJJQ1MgWS1DUkVFIE9PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDA4O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDA5O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEk7TG87MDtMOzs7OztOOzs7OzsKKzE0MEE7Q0FOQURJQU4gU1lMTEFCSUNTIEE7TG87MDtMOzs7OztOOzs7OzsKKzE0MEI7Q0FOQURJQU4gU1lMTEFCSUNTIEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDBDO0NBTkFESUFOIFNZTExBQklDUyBXRTtMbzswO0w7Ozs7O047Ozs7OworMTQwRDtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFdFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDBFO0NBTkFESUFOIFNZTExBQklDUyBXSTtMbzswO0w7Ozs7O047Ozs7OworMTQwRjtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFdJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDEwO0NBTkFESUFOIFNZTExBQklDUyBXSUk7TG87MDtMOzs7OztOOzs7OzsKKzE0MTE7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBXSUk7TG87MDtMOzs7OztOOzs7OzsKKzE0MTI7Q0FOQURJQU4gU1lMTEFCSUNTIFdPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDEzO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgV087TG87MDtMOzs7OztOOzs7OzsKKzE0MTQ7Q0FOQURJQU4gU1lMTEFCSUNTIFdPTztMbzswO0w7Ozs7O047Ozs7OworMTQxNTtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFdPTztMbzswO0w7Ozs7O047Ozs7OworMTQxNjtDQU5BRElBTiBTWUxMQUJJQ1MgTkFTS0FQSSBXT087TG87MDtMOzs7OztOOzs7OzsKKzE0MTc7Q0FOQURJQU4gU1lMTEFCSUNTIFdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDE4O0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgV0E7TG87MDtMOzs7OztOOzs7OzsKKzE0MTk7Q0FOQURJQU4gU1lMTEFCSUNTIFdBQTtMbzswO0w7Ozs7O047Ozs7OworMTQxQTtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFdBQTtMbzswO0w7Ozs7O047Ozs7OworMTQxQjtDQU5BRElBTiBTWUxMQUJJQ1MgTkFTS0FQSSBXQUE7TG87MDtMOzs7OztOOzs7OzsKKzE0MUM7Q0FOQURJQU4gU1lMTEFCSUNTIEFJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDFEO0NBTkFESUFOIFNZTExBQklDUyBZLUNSRUUgVztMbzswO0w7Ozs7O047Ozs7OworMTQxRTtDQU5BRElBTiBTWUxMQUJJQ1MgR0xPVFRBTCBTVE9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDFGO0NBTkFESUFOIFNZTExBQklDUyBGSU5BTCBBQ1VURTtMbzswO0w7Ozs7O047Ozs7OworMTQyMDtDQU5BRElBTiBTWUxMQUJJQ1MgRklOQUwgR1JBVkU7TG87MDtMOzs7OztOOzs7OzsKKzE0MjE7Q0FOQURJQU4gU1lMTEFCSUNTIEZJTkFMIEJPVFRPTSBIQUxGIFJJTkc7TG87MDtMOzs7OztOOzs7OzsKKzE0MjI7Q0FOQURJQU4gU1lMTEFCSUNTIEZJTkFMIFRPUCBIQUxGIFJJTkc7TG87MDtMOzs7OztOOzs7OzsKKzE0MjM7Q0FOQURJQU4gU1lMTEFCSUNTIEZJTkFMIFJJR0hUIEhBTEYgUklORztMbzswO0w7Ozs7O047Ozs7OworMTQyNDtDQU5BRElBTiBTWUxMQUJJQ1MgRklOQUwgUklORztMbzswO0w7Ozs7O047Ozs7OworMTQyNTtDQU5BRElBTiBTWUxMQUJJQ1MgRklOQUwgRE9VQkxFIEFDVVRFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDI2O0NBTkFESUFOIFNZTExBQklDUyBGSU5BTCBET1VCTEUgU0hPUlQgVkVSVElDQUwgU1RST0tFUztMbzswO0w7Ozs7O047Ozs7OworMTQyNztDQU5BRElBTiBTWUxMQUJJQ1MgRklOQUwgTUlERExFIERPVDtMbzswO0w7Ozs7O047Ozs7OworMTQyODtDQU5BRElBTiBTWUxMQUJJQ1MgRklOQUwgU0hPUlQgSE9SSVpPTlRBTCBTVFJPS0U7TG87MDtMOzs7OztOOzs7OzsKKzE0Mjk7Q0FOQURJQU4gU1lMTEFCSUNTIEZJTkFMIFBMVVM7TG87MDtMOzs7OztOOzs7OzsKKzE0MkE7Q0FOQURJQU4gU1lMTEFCSUNTIEZJTkFMIERPV04gVEFDSztMbzswO0w7Ozs7O047Ozs7OworMTQyQjtDQU5BRElBTiBTWUxMQUJJQ1MgRU47TG87MDtMOzs7OztOOzs7OzsKKzE0MkM7Q0FOQURJQU4gU1lMTEFCSUNTIElOO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDJEO0NBTkFESUFOIFNZTExBQklDUyBPTjtMbzswO0w7Ozs7O047Ozs7OworMTQyRTtDQU5BRElBTiBTWUxMQUJJQ1MgQU47TG87MDtMOzs7OztOOzs7OzsKKzE0MkY7Q0FOQURJQU4gU1lMTEFCSUNTIFBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDMwO0NBTkFESUFOIFNZTExBQklDUyBQQUFJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDMxO0NBTkFESUFOIFNZTExBQklDUyBQSTtMbzswO0w7Ozs7O047Ozs7OworMTQzMjtDQU5BRElBTiBTWUxMQUJJQ1MgUElJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDMzO0NBTkFESUFOIFNZTExBQklDUyBQTztMbzswO0w7Ozs7O047Ozs7OworMTQzNDtDQU5BRElBTiBTWUxMQUJJQ1MgUE9PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDM1O0NBTkFESUFOIFNZTExBQklDUyBZLUNSRUUgUE9PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDM2O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEhFRTtMbzswO0w7Ozs7O047Ozs7OworMTQzNztDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBISTtMbzswO0w7Ozs7O047Ozs7OworMTQzODtDQU5BRElBTiBTWUxMQUJJQ1MgUEE7TG87MDtMOzs7OztOOzs7OzsKKzE0Mzk7Q0FOQURJQU4gU1lMTEFCSUNTIFBBQTtMbzswO0w7Ozs7O047Ozs7OworMTQzQTtDQU5BRElBTiBTWUxMQUJJQ1MgUFdFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDNCO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgUFdFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDNDO0NBTkFESUFOIFNZTExBQklDUyBQV0k7TG87MDtMOzs7OztOOzs7OzsKKzE0M0Q7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBQV0k7TG87MDtMOzs7OztOOzs7OzsKKzE0M0U7Q0FOQURJQU4gU1lMTEFCSUNTIFBXSUk7TG87MDtMOzs7OztOOzs7OzsKKzE0M0Y7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBQV0lJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDQwO0NBTkFESUFOIFNZTExBQklDUyBQV087TG87MDtMOzs7OztOOzs7OzsKKzE0NDE7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBQV087TG87MDtMOzs7OztOOzs7OzsKKzE0NDI7Q0FOQURJQU4gU1lMTEFCSUNTIFBXT087TG87MDtMOzs7OztOOzs7OzsKKzE0NDM7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBQV09PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDQ0O0NBTkFESUFOIFNZTExBQklDUyBQV0E7TG87MDtMOzs7OztOOzs7OzsKKzE0NDU7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBQV0E7TG87MDtMOzs7OztOOzs7OzsKKzE0NDY7Q0FOQURJQU4gU1lMTEFCSUNTIFBXQUE7TG87MDtMOzs7OztOOzs7OzsKKzE0NDc7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBQV0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDQ4O0NBTkFESUFOIFNZTExBQklDUyBZLUNSRUUgUFdBQTtMbzswO0w7Ozs7O047Ozs7OworMTQ0OTtDQU5BRElBTiBTWUxMQUJJQ1MgUDtMbzswO0w7Ozs7O047Ozs7OworMTQ0QTtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFA7TG87MDtMOzs7OztOOzs7OzsKKzE0NEI7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgSDtMbzswO0w7Ozs7O047Ozs7OworMTQ0QztDQU5BRElBTiBTWUxMQUJJQ1MgVEU7TG87MDtMOzs7OztOOzs7OzsKKzE0NEQ7Q0FOQURJQU4gU1lMTEFCSUNTIFRBQUk7TG87MDtMOzs7OztOOzs7OzsKKzE0NEU7Q0FOQURJQU4gU1lMTEFCSUNTIFRJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDRGO0NBTkFESUFOIFNZTExBQklDUyBUSUk7TG87MDtMOzs7OztOOzs7OzsKKzE0NTA7Q0FOQURJQU4gU1lMTEFCSUNTIFRPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDUxO0NBTkFESUFOIFNZTExBQklDUyBUT087TG87MDtMOzs7OztOOzs7OzsKKzE0NTI7Q0FOQURJQU4gU1lMTEFCSUNTIFktQ1JFRSBUT087TG87MDtMOzs7OztOOzs7OzsKKzE0NTM7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgREVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDU0O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIERJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDU1O0NBTkFESUFOIFNZTExBQklDUyBUQTtMbzswO0w7Ozs7O047Ozs7OworMTQ1NjtDQU5BRElBTiBTWUxMQUJJQ1MgVEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDU3O0NBTkFESUFOIFNZTExBQklDUyBUV0U7TG87MDtMOzs7OztOOzs7OzsKKzE0NTg7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBUV0U7TG87MDtMOzs7OztOOzs7OzsKKzE0NTk7Q0FOQURJQU4gU1lMTEFCSUNTIFRXSTtMbzswO0w7Ozs7O047Ozs7OworMTQ1QTtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFRXSTtMbzswO0w7Ozs7O047Ozs7OworMTQ1QjtDQU5BRElBTiBTWUxMQUJJQ1MgVFdJSTtMbzswO0w7Ozs7O047Ozs7OworMTQ1QztDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFRXSUk7TG87MDtMOzs7OztOOzs7OzsKKzE0NUQ7Q0FOQURJQU4gU1lMTEFCSUNTIFRXTztMbzswO0w7Ozs7O047Ozs7OworMTQ1RTtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFRXTztMbzswO0w7Ozs7O047Ozs7OworMTQ1RjtDQU5BRElBTiBTWUxMQUJJQ1MgVFdPTztMbzswO0w7Ozs7O047Ozs7OworMTQ2MDtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFRXT087TG87MDtMOzs7OztOOzs7OzsKKzE0NjE7Q0FOQURJQU4gU1lMTEFCSUNTIFRXQTtMbzswO0w7Ozs7O047Ozs7OworMTQ2MjtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFRXQTtMbzswO0w7Ozs7O047Ozs7OworMTQ2MztDQU5BRElBTiBTWUxMQUJJQ1MgVFdBQTtMbzswO0w7Ozs7O047Ozs7OworMTQ2NDtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFRXQUE7TG87MDtMOzs7OztOOzs7OzsKKzE0NjU7Q0FOQURJQU4gU1lMTEFCSUNTIE5BU0tBUEkgVFdBQTtMbzswO0w7Ozs7O047Ozs7OworMTQ2NjtDQU5BRElBTiBTWUxMQUJJQ1MgVDtMbzswO0w7Ozs7O047Ozs7OworMTQ2NztDQU5BRElBTiBTWUxMQUJJQ1MgVFRFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDY4O0NBTkFESUFOIFNZTExBQklDUyBUVEk7TG87MDtMOzs7OztOOzs7OzsKKzE0Njk7Q0FOQURJQU4gU1lMTEFCSUNTIFRUTztMbzswO0w7Ozs7O047Ozs7OworMTQ2QTtDQU5BRElBTiBTWUxMQUJJQ1MgVFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDZCO0NBTkFESUFOIFNZTExBQklDUyBLRTtMbzswO0w7Ozs7O047Ozs7OworMTQ2QztDQU5BRElBTiBTWUxMQUJJQ1MgS0FBSTtMbzswO0w7Ozs7O047Ozs7OworMTQ2RDtDQU5BRElBTiBTWUxMQUJJQ1MgS0k7TG87MDtMOzs7OztOOzs7OzsKKzE0NkU7Q0FOQURJQU4gU1lMTEFCSUNTIEtJSTtMbzswO0w7Ozs7O047Ozs7OworMTQ2RjtDQU5BRElBTiBTWUxMQUJJQ1MgS087TG87MDtMOzs7OztOOzs7OzsKKzE0NzA7Q0FOQURJQU4gU1lMTEFCSUNTIEtPTztMbzswO0w7Ozs7O047Ozs7OworMTQ3MTtDQU5BRElBTiBTWUxMQUJJQ1MgWS1DUkVFIEtPTztMbzswO0w7Ozs7O047Ozs7OworMTQ3MjtDQU5BRElBTiBTWUxMQUJJQ1MgS0E7TG87MDtMOzs7OztOOzs7OzsKKzE0NzM7Q0FOQURJQU4gU1lMTEFCSUNTIEtBQTtMbzswO0w7Ozs7O047Ozs7OworMTQ3NDtDQU5BRElBTiBTWUxMQUJJQ1MgS1dFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDc1O0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgS1dFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDc2O0NBTkFESUFOIFNZTExBQklDUyBLV0k7TG87MDtMOzs7OztOOzs7OzsKKzE0Nzc7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBLV0k7TG87MDtMOzs7OztOOzs7OzsKKzE0Nzg7Q0FOQURJQU4gU1lMTEFCSUNTIEtXSUk7TG87MDtMOzs7OztOOzs7OzsKKzE0Nzk7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBLV0lJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDdBO0NBTkFESUFOIFNZTExBQklDUyBLV087TG87MDtMOzs7OztOOzs7OzsKKzE0N0I7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBLV087TG87MDtMOzs7OztOOzs7OzsKKzE0N0M7Q0FOQURJQU4gU1lMTEFCSUNTIEtXT087TG87MDtMOzs7OztOOzs7OzsKKzE0N0Q7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBLV09PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDdFO0NBTkFESUFOIFNZTExBQklDUyBLV0E7TG87MDtMOzs7OztOOzs7OzsKKzE0N0Y7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBLV0E7TG87MDtMOzs7OztOOzs7OzsKKzE0ODA7Q0FOQURJQU4gU1lMTEFCSUNTIEtXQUE7TG87MDtMOzs7OztOOzs7OzsKKzE0ODE7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBLV0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDgyO0NBTkFESUFOIFNZTExBQklDUyBOQVNLQVBJIEtXQUE7TG87MDtMOzs7OztOOzs7OzsKKzE0ODM7Q0FOQURJQU4gU1lMTEFCSUNTIEs7TG87MDtMOzs7OztOOzs7OzsKKzE0ODQ7Q0FOQURJQU4gU1lMTEFCSUNTIEtXO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDg1O0NBTkFESUFOIFNZTExBQklDUyBTT1VUSC1TTEFWRVkgS0VIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDg2O0NBTkFESUFOIFNZTExBQklDUyBTT1VUSC1TTEFWRVkgS0lIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDg3O0NBTkFESUFOIFNZTExBQklDUyBTT1VUSC1TTEFWRVkgS09IO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDg4O0NBTkFESUFOIFNZTExBQklDUyBTT1VUSC1TTEFWRVkgS0FIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDg5O0NBTkFESUFOIFNZTExBQklDUyBDRTtMbzswO0w7Ozs7O047Ozs7OworMTQ4QTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FBSTtMbzswO0w7Ozs7O047Ozs7OworMTQ4QjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0k7TG87MDtMOzs7OztOOzs7OzsKKzE0OEM7Q0FOQURJQU4gU1lMTEFCSUNTIENJSTtMbzswO0w7Ozs7O047Ozs7OworMTQ4RDtDQU5BRElBTiBTWUxMQUJJQ1MgQ087TG87MDtMOzs7OztOOzs7OzsKKzE0OEU7Q0FOQURJQU4gU1lMTEFCSUNTIENPTztMbzswO0w7Ozs7O047Ozs7OworMTQ4RjtDQU5BRElBTiBTWUxMQUJJQ1MgWS1DUkVFIENPTztMbzswO0w7Ozs7O047Ozs7OworMTQ5MDtDQU5BRElBTiBTWUxMQUJJQ1MgQ0E7TG87MDtMOzs7OztOOzs7OzsKKzE0OTE7Q0FOQURJQU4gU1lMTEFCSUNTIENBQTtMbzswO0w7Ozs7O047Ozs7OworMTQ5MjtDQU5BRElBTiBTWUxMQUJJQ1MgQ1dFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDkzO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgQ1dFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDk0O0NBTkFESUFOIFNZTExBQklDUyBDV0k7TG87MDtMOzs7OztOOzs7OzsKKzE0OTU7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBDV0k7TG87MDtMOzs7OztOOzs7OzsKKzE0OTY7Q0FOQURJQU4gU1lMTEFCSUNTIENXSUk7TG87MDtMOzs7OztOOzs7OzsKKzE0OTc7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBDV0lJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDk4O0NBTkFESUFOIFNZTExBQklDUyBDV087TG87MDtMOzs7OztOOzs7OzsKKzE0OTk7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBDV087TG87MDtMOzs7OztOOzs7OzsKKzE0OUE7Q0FOQURJQU4gU1lMTEFCSUNTIENXT087TG87MDtMOzs7OztOOzs7OzsKKzE0OUI7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBDV09PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDlDO0NBTkFESUFOIFNZTExBQklDUyBDV0E7TG87MDtMOzs7OztOOzs7OzsKKzE0OUQ7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBDV0E7TG87MDtMOzs7OztOOzs7OzsKKzE0OUU7Q0FOQURJQU4gU1lMTEFCSUNTIENXQUE7TG87MDtMOzs7OztOOzs7OzsKKzE0OUY7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBDV0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEEwO0NBTkFESUFOIFNZTExBQklDUyBOQVNLQVBJIENXQUE7TG87MDtMOzs7OztOOzs7OzsKKzE0QTE7Q0FOQURJQU4gU1lMTEFCSUNTIEM7TG87MDtMOzs7OztOOzs7OzsKKzE0QTI7Q0FOQURJQU4gU1lMTEFCSUNTIFNBWUlTSSBUSDtMbzswO0w7Ozs7O047Ozs7OworMTRBMztDQU5BRElBTiBTWUxMQUJJQ1MgTUU7TG87MDtMOzs7OztOOzs7OzsKKzE0QTQ7Q0FOQURJQU4gU1lMTEFCSUNTIE1BQUk7TG87MDtMOzs7OztOOzs7OzsKKzE0QTU7Q0FOQURJQU4gU1lMTEFCSUNTIE1JO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEE2O0NBTkFESUFOIFNZTExBQklDUyBNSUk7TG87MDtMOzs7OztOOzs7OzsKKzE0QTc7Q0FOQURJQU4gU1lMTEFCSUNTIE1PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEE4O0NBTkFESUFOIFNZTExBQklDUyBNT087TG87MDtMOzs7OztOOzs7OzsKKzE0QTk7Q0FOQURJQU4gU1lMTEFCSUNTIFktQ1JFRSBNT087TG87MDtMOzs7OztOOzs7OzsKKzE0QUE7Q0FOQURJQU4gU1lMTEFCSUNTIE1BO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEFCO0NBTkFESUFOIFNZTExBQklDUyBNQUE7TG87MDtMOzs7OztOOzs7OzsKKzE0QUM7Q0FOQURJQU4gU1lMTEFCSUNTIE1XRTtMbzswO0w7Ozs7O047Ozs7OworMTRBRDtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIE1XRTtMbzswO0w7Ozs7O047Ozs7OworMTRBRTtDQU5BRElBTiBTWUxMQUJJQ1MgTVdJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEFGO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgTVdJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEIwO0NBTkFESUFOIFNZTExBQklDUyBNV0lJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEIxO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgTVdJSTtMbzswO0w7Ozs7O047Ozs7OworMTRCMjtDQU5BRElBTiBTWUxMQUJJQ1MgTVdPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEIzO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgTVdPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEI0O0NBTkFESUFOIFNZTExBQklDUyBNV09PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEI1O0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgTVdPTztMbzswO0w7Ozs7O047Ozs7OworMTRCNjtDQU5BRElBTiBTWUxMQUJJQ1MgTVdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEI3O0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgTVdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEI4O0NBTkFESUFOIFNZTExBQklDUyBNV0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEI5O0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgTVdBQTtMbzswO0w7Ozs7O047Ozs7OworMTRCQTtDQU5BRElBTiBTWUxMQUJJQ1MgTkFTS0FQSSBNV0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEJCO0NBTkFESUFOIFNZTExBQklDUyBNO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEJDO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgTTtMbzswO0w7Ozs7O047Ozs7OworMTRCRDtDQU5BRElBTiBTWUxMQUJJQ1MgTUg7TG87MDtMOzs7OztOOzs7OzsKKzE0QkU7Q0FOQURJQU4gU1lMTEFCSUNTIEFUSEFQQVNDQU4gTTtMbzswO0w7Ozs7O047Ozs7OworMTRCRjtDQU5BRElBTiBTWUxMQUJJQ1MgU0FZSVNJIE07TG87MDtMOzs7OztOOzs7OzsKKzE0QzA7Q0FOQURJQU4gU1lMTEFCSUNTIE5FO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEMxO0NBTkFESUFOIFNZTExBQklDUyBOQUFJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEMyO0NBTkFESUFOIFNZTExBQklDUyBOSTtMbzswO0w7Ozs7O047Ozs7OworMTRDMztDQU5BRElBTiBTWUxMQUJJQ1MgTklJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEM0O0NBTkFESUFOIFNZTExBQklDUyBOTztMbzswO0w7Ozs7O047Ozs7OworMTRDNTtDQU5BRElBTiBTWUxMQUJJQ1MgTk9PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEM2O0NBTkFESUFOIFNZTExBQklDUyBZLUNSRUUgTk9PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEM3O0NBTkFESUFOIFNZTExBQklDUyBOQTtMbzswO0w7Ozs7O047Ozs7OworMTRDODtDQU5BRElBTiBTWUxMQUJJQ1MgTkFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEM5O0NBTkFESUFOIFNZTExBQklDUyBOV0U7TG87MDtMOzs7OztOOzs7OzsKKzE0Q0E7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBOV0U7TG87MDtMOzs7OztOOzs7OzsKKzE0Q0I7Q0FOQURJQU4gU1lMTEFCSUNTIE5XQTtMbzswO0w7Ozs7O047Ozs7OworMTRDQztDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIE5XQTtMbzswO0w7Ozs7O047Ozs7OworMTRDRDtDQU5BRElBTiBTWUxMQUJJQ1MgTldBQTtMbzswO0w7Ozs7O047Ozs7OworMTRDRTtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIE5XQUE7TG87MDtMOzs7OztOOzs7OzsKKzE0Q0Y7Q0FOQURJQU4gU1lMTEFCSUNTIE5BU0tBUEkgTldBQTtMbzswO0w7Ozs7O047Ozs7OworMTREMDtDQU5BRElBTiBTWUxMQUJJQ1MgTjtMbzswO0w7Ozs7O047Ozs7OworMTREMTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBORztMbzswO0w7Ozs7O047Ozs7OworMTREMjtDQU5BRElBTiBTWUxMQUJJQ1MgTkg7TG87MDtMOzs7OztOOzs7OzsKKzE0RDM7Q0FOQURJQU4gU1lMTEFCSUNTIExFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEQ0O0NBTkFESUFOIFNZTExBQklDUyBMQUFJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEQ1O0NBTkFESUFOIFNZTExBQklDUyBMSTtMbzswO0w7Ozs7O047Ozs7OworMTRENjtDQU5BRElBTiBTWUxMQUJJQ1MgTElJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEQ3O0NBTkFESUFOIFNZTExBQklDUyBMTztMbzswO0w7Ozs7O047Ozs7OworMTREODtDQU5BRElBTiBTWUxMQUJJQ1MgTE9PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEQ5O0NBTkFESUFOIFNZTExBQklDUyBZLUNSRUUgTE9PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNERBO0NBTkFESUFOIFNZTExBQklDUyBMQTtMbzswO0w7Ozs7O047Ozs7OworMTREQjtDQU5BRElBTiBTWUxMQUJJQ1MgTEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNERDO0NBTkFESUFOIFNZTExBQklDUyBMV0U7TG87MDtMOzs7OztOOzs7OzsKKzE0REQ7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBMV0U7TG87MDtMOzs7OztOOzs7OzsKKzE0REU7Q0FOQURJQU4gU1lMTEFCSUNTIExXSTtMbzswO0w7Ozs7O047Ozs7OworMTRERjtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIExXSTtMbzswO0w7Ozs7O047Ozs7OworMTRFMDtDQU5BRElBTiBTWUxMQUJJQ1MgTFdJSTtMbzswO0w7Ozs7O047Ozs7OworMTRFMTtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIExXSUk7TG87MDtMOzs7OztOOzs7OzsKKzE0RTI7Q0FOQURJQU4gU1lMTEFCSUNTIExXTztMbzswO0w7Ozs7O047Ozs7OworMTRFMztDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIExXTztMbzswO0w7Ozs7O047Ozs7OworMTRFNDtDQU5BRElBTiBTWUxMQUJJQ1MgTFdPTztMbzswO0w7Ozs7O047Ozs7OworMTRFNTtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIExXT087TG87MDtMOzs7OztOOzs7OzsKKzE0RTY7Q0FOQURJQU4gU1lMTEFCSUNTIExXQTtMbzswO0w7Ozs7O047Ozs7OworMTRFNztDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIExXQTtMbzswO0w7Ozs7O047Ozs7OworMTRFODtDQU5BRElBTiBTWUxMQUJJQ1MgTFdBQTtMbzswO0w7Ozs7O047Ozs7OworMTRFOTtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIExXQUE7TG87MDtMOzs7OztOOzs7OzsKKzE0RUE7Q0FOQURJQU4gU1lMTEFCSUNTIEw7TG87MDtMOzs7OztOOzs7OzsKKzE0RUI7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBMO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEVDO0NBTkFESUFOIFNZTExBQklDUyBNRURJQUwgTDtMbzswO0w7Ozs7O047Ozs7OworMTRFRDtDQU5BRElBTiBTWUxMQUJJQ1MgU0U7TG87MDtMOzs7OztOOzs7OzsKKzE0RUU7Q0FOQURJQU4gU1lMTEFCSUNTIFNBQUk7TG87MDtMOzs7OztOOzs7OzsKKzE0RUY7Q0FOQURJQU4gU1lMTEFCSUNTIFNJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEYwO0NBTkFESUFOIFNZTExBQklDUyBTSUk7TG87MDtMOzs7OztOOzs7OzsKKzE0RjE7Q0FOQURJQU4gU1lMTEFCSUNTIFNPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEYyO0NBTkFESUFOIFNZTExBQklDUyBTT087TG87MDtMOzs7OztOOzs7OzsKKzE0RjM7Q0FOQURJQU4gU1lMTEFCSUNTIFktQ1JFRSBTT087TG87MDtMOzs7OztOOzs7OzsKKzE0RjQ7Q0FOQURJQU4gU1lMTEFCSUNTIFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEY1O0NBTkFESUFOIFNZTExBQklDUyBTQUE7TG87MDtMOzs7OztOOzs7OzsKKzE0RjY7Q0FOQURJQU4gU1lMTEFCSUNTIFNXRTtMbzswO0w7Ozs7O047Ozs7OworMTRGNztDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFNXRTtMbzswO0w7Ozs7O047Ozs7OworMTRGODtDQU5BRElBTiBTWUxMQUJJQ1MgU1dJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEY5O0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgU1dJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEZBO0NBTkFESUFOIFNZTExBQklDUyBTV0lJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEZCO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgU1dJSTtMbzswO0w7Ozs7O047Ozs7OworMTRGQztDQU5BRElBTiBTWUxMQUJJQ1MgU1dPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEZEO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgU1dPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEZFO0NBTkFESUFOIFNZTExBQklDUyBTV09PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEZGO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgU1dPTztMbzswO0w7Ozs7O047Ozs7OworMTUwMDtDQU5BRElBTiBTWUxMQUJJQ1MgU1dBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTAxO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgU1dBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTAyO0NBTkFESUFOIFNZTExBQklDUyBTV0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTAzO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgU1dBQTtMbzswO0w7Ozs7O047Ozs7OworMTUwNDtDQU5BRElBTiBTWUxMQUJJQ1MgTkFTS0FQSSBTV0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTA1O0NBTkFESUFOIFNZTExBQklDUyBTO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTA2O0NBTkFESUFOIFNZTExBQklDUyBBVEhBUEFTQ0FOIFM7TG87MDtMOzs7OztOOzs7OzsKKzE1MDc7Q0FOQURJQU4gU1lMTEFCSUNTIFNXO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTA4O0NBTkFESUFOIFNZTExBQklDUyBCTEFDS0ZPT1QgUztMbzswO0w7Ozs7O047Ozs7OworMTUwOTtDQU5BRElBTiBTWUxMQUJJQ1MgTU9PU0UtQ1JFRSBTSztMbzswO0w7Ozs7O047Ozs7OworMTUwQTtDQU5BRElBTiBTWUxMQUJJQ1MgTkFTS0FQSSBTS1c7TG87MDtMOzs7OztOOzs7OzsKKzE1MEI7Q0FOQURJQU4gU1lMTEFCSUNTIE5BU0tBUEkgUy1XO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTBDO0NBTkFESUFOIFNZTExBQklDUyBOQVNLQVBJIFNQV0E7TG87MDtMOzs7OztOOzs7OzsKKzE1MEQ7Q0FOQURJQU4gU1lMTEFCSUNTIE5BU0tBUEkgU1RXQTtMbzswO0w7Ozs7O047Ozs7OworMTUwRTtDQU5BRElBTiBTWUxMQUJJQ1MgTkFTS0FQSSBTS1dBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTBGO0NBTkFESUFOIFNZTExBQklDUyBOQVNLQVBJIFNDV0E7TG87MDtMOzs7OztOOzs7OzsKKzE1MTA7Q0FOQURJQU4gU1lMTEFCSUNTIFNIRTtMbzswO0w7Ozs7O047Ozs7OworMTUxMTtDQU5BRElBTiBTWUxMQUJJQ1MgU0hJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTEyO0NBTkFESUFOIFNZTExBQklDUyBTSElJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTEzO0NBTkFESUFOIFNZTExBQklDUyBTSE87TG87MDtMOzs7OztOOzs7OzsKKzE1MTQ7Q0FOQURJQU4gU1lMTEFCSUNTIFNIT087TG87MDtMOzs7OztOOzs7OzsKKzE1MTU7Q0FOQURJQU4gU1lMTEFCSUNTIFNIQTtMbzswO0w7Ozs7O047Ozs7OworMTUxNjtDQU5BRElBTiBTWUxMQUJJQ1MgU0hBQTtMbzswO0w7Ozs7O047Ozs7OworMTUxNztDQU5BRElBTiBTWUxMQUJJQ1MgU0hXRTtMbzswO0w7Ozs7O047Ozs7OworMTUxODtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFNIV0U7TG87MDtMOzs7OztOOzs7OzsKKzE1MTk7Q0FOQURJQU4gU1lMTEFCSUNTIFNIV0k7TG87MDtMOzs7OztOOzs7OzsKKzE1MUE7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBTSFdJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTFCO0NBTkFESUFOIFNZTExBQklDUyBTSFdJSTtMbzswO0w7Ozs7O047Ozs7OworMTUxQztDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFNIV0lJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTFEO0NBTkFESUFOIFNZTExBQklDUyBTSFdPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTFFO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgU0hXTztMbzswO0w7Ozs7O047Ozs7OworMTUxRjtDQU5BRElBTiBTWUxMQUJJQ1MgU0hXT087TG87MDtMOzs7OztOOzs7OzsKKzE1MjA7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBTSFdPTztMbzswO0w7Ozs7O047Ozs7OworMTUyMTtDQU5BRElBTiBTWUxMQUJJQ1MgU0hXQTtMbzswO0w7Ozs7O047Ozs7OworMTUyMjtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFNIV0E7TG87MDtMOzs7OztOOzs7OzsKKzE1MjM7Q0FOQURJQU4gU1lMTEFCSUNTIFNIV0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTI0O0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgU0hXQUE7TG87MDtMOzs7OztOOzs7OzsKKzE1MjU7Q0FOQURJQU4gU1lMTEFCSUNTIFNIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTI2O0NBTkFESUFOIFNZTExBQklDUyBZRTtMbzswO0w7Ozs7O047Ozs7OworMTUyNztDQU5BRElBTiBTWUxMQUJJQ1MgWUFBSTtMbzswO0w7Ozs7O047Ozs7OworMTUyODtDQU5BRElBTiBTWUxMQUJJQ1MgWUk7TG87MDtMOzs7OztOOzs7OzsKKzE1Mjk7Q0FOQURJQU4gU1lMTEFCSUNTIFlJSTtMbzswO0w7Ozs7O047Ozs7OworMTUyQTtDQU5BRElBTiBTWUxMQUJJQ1MgWU87TG87MDtMOzs7OztOOzs7OzsKKzE1MkI7Q0FOQURJQU4gU1lMTEFCSUNTIFlPTztMbzswO0w7Ozs7O047Ozs7OworMTUyQztDQU5BRElBTiBTWUxMQUJJQ1MgWS1DUkVFIFlPTztMbzswO0w7Ozs7O047Ozs7OworMTUyRDtDQU5BRElBTiBTWUxMQUJJQ1MgWUE7TG87MDtMOzs7OztOOzs7OzsKKzE1MkU7Q0FOQURJQU4gU1lMTEFCSUNTIFlBQTtMbzswO0w7Ozs7O047Ozs7OworMTUyRjtDQU5BRElBTiBTWUxMQUJJQ1MgWVdFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTMwO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgWVdFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTMxO0NBTkFESUFOIFNZTExBQklDUyBZV0k7TG87MDtMOzs7OztOOzs7OzsKKzE1MzI7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBZV0k7TG87MDtMOzs7OztOOzs7OzsKKzE1MzM7Q0FOQURJQU4gU1lMTEFCSUNTIFlXSUk7TG87MDtMOzs7OztOOzs7OzsKKzE1MzQ7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBZV0lJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTM1O0NBTkFESUFOIFNZTExBQklDUyBZV087TG87MDtMOzs7OztOOzs7OzsKKzE1MzY7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBZV087TG87MDtMOzs7OztOOzs7OzsKKzE1Mzc7Q0FOQURJQU4gU1lMTEFCSUNTIFlXT087TG87MDtMOzs7OztOOzs7OzsKKzE1Mzg7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBZV09PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTM5O0NBTkFESUFOIFNZTExBQklDUyBZV0E7TG87MDtMOzs7OztOOzs7OzsKKzE1M0E7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBZV0E7TG87MDtMOzs7OztOOzs7OzsKKzE1M0I7Q0FOQURJQU4gU1lMTEFCSUNTIFlXQUE7TG87MDtMOzs7OztOOzs7OzsKKzE1M0M7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBZV0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTNEO0NBTkFESUFOIFNZTExBQklDUyBOQVNLQVBJIFlXQUE7TG87MDtMOzs7OztOOzs7OzsKKzE1M0U7Q0FOQURJQU4gU1lMTEFCSUNTIFk7TG87MDtMOzs7OztOOzs7OzsKKzE1M0Y7Q0FOQURJQU4gU1lMTEFCSUNTIEJJQkxFLUNSRUUgWTtMbzswO0w7Ozs7O047Ozs7OworMTU0MDtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFk7TG87MDtMOzs7OztOOzs7OzsKKzE1NDE7Q0FOQURJQU4gU1lMTEFCSUNTIFNBWUlTSSBZSTtMbzswO0w7Ozs7O047Ozs7OworMTU0MjtDQU5BRElBTiBTWUxMQUJJQ1MgUkU7TG87MDtMOzs7OztOOzs7OzsKKzE1NDM7Q0FOQURJQU4gU1lMTEFCSUNTIFItQ1JFRSBSRTtMbzswO0w7Ozs7O047Ozs7OworMTU0NDtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIExFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTQ1O0NBTkFESUFOIFNZTExBQklDUyBSQUFJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTQ2O0NBTkFESUFOIFNZTExBQklDUyBSSTtMbzswO0w7Ozs7O047Ozs7OworMTU0NztDQU5BRElBTiBTWUxMQUJJQ1MgUklJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTQ4O0NBTkFESUFOIFNZTExBQklDUyBSTztMbzswO0w7Ozs7O047Ozs7OworMTU0OTtDQU5BRElBTiBTWUxMQUJJQ1MgUk9PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTRBO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgTE87TG87MDtMOzs7OztOOzs7OzsKKzE1NEI7Q0FOQURJQU4gU1lMTEFCSUNTIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTRDO0NBTkFESUFOIFNZTExBQklDUyBSQUE7TG87MDtMOzs7OztOOzs7OzsKKzE1NEQ7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBMQTtMbzswO0w7Ozs7O047Ozs7OworMTU0RTtDQU5BRElBTiBTWUxMQUJJQ1MgUldBQTtMbzswO0w7Ozs7O047Ozs7OworMTU0RjtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFJXQUE7TG87MDtMOzs7OztOOzs7OzsKKzE1NTA7Q0FOQURJQU4gU1lMTEFCSUNTIFI7TG87MDtMOzs7OztOOzs7OzsKKzE1NTE7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBSO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTUyO0NBTkFESUFOIFNZTExBQklDUyBNRURJQUwgUjtMbzswO0w7Ozs7O047Ozs7OworMTU1MztDQU5BRElBTiBTWUxMQUJJQ1MgRkU7TG87MDtMOzs7OztOOzs7OzsKKzE1NTQ7Q0FOQURJQU4gU1lMTEFCSUNTIEZBQUk7TG87MDtMOzs7OztOOzs7OzsKKzE1NTU7Q0FOQURJQU4gU1lMTEFCSUNTIEZJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTU2O0NBTkFESUFOIFNZTExBQklDUyBGSUk7TG87MDtMOzs7OztOOzs7OzsKKzE1NTc7Q0FOQURJQU4gU1lMTEFCSUNTIEZPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTU4O0NBTkFESUFOIFNZTExBQklDUyBGT087TG87MDtMOzs7OztOOzs7OzsKKzE1NTk7Q0FOQURJQU4gU1lMTEFCSUNTIEZBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTVBO0NBTkFESUFOIFNZTExBQklDUyBGQUE7TG87MDtMOzs7OztOOzs7OzsKKzE1NUI7Q0FOQURJQU4gU1lMTEFCSUNTIEZXQUE7TG87MDtMOzs7OztOOzs7OzsKKzE1NUM7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBGV0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTVEO0NBTkFESUFOIFNZTExBQklDUyBGO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTVFO0NBTkFESUFOIFNZTExBQklDUyBUSEU7TG87MDtMOzs7OztOOzs7OzsKKzE1NUY7Q0FOQURJQU4gU1lMTEFCSUNTIE4tQ1JFRSBUSEU7TG87MDtMOzs7OztOOzs7OzsKKzE1NjA7Q0FOQURJQU4gU1lMTEFCSUNTIFRISTtMbzswO0w7Ozs7O047Ozs7OworMTU2MTtDQU5BRElBTiBTWUxMQUJJQ1MgTi1DUkVFIFRISTtMbzswO0w7Ozs7O047Ozs7OworMTU2MjtDQU5BRElBTiBTWUxMQUJJQ1MgVEhJSTtMbzswO0w7Ozs7O047Ozs7OworMTU2MztDQU5BRElBTiBTWUxMQUJJQ1MgTi1DUkVFIFRISUk7TG87MDtMOzs7OztOOzs7OzsKKzE1NjQ7Q0FOQURJQU4gU1lMTEFCSUNTIFRITztMbzswO0w7Ozs7O047Ozs7OworMTU2NTtDQU5BRElBTiBTWUxMQUJJQ1MgVEhPTztMbzswO0w7Ozs7O047Ozs7OworMTU2NjtDQU5BRElBTiBTWUxMQUJJQ1MgVEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTY3O0NBTkFESUFOIFNZTExBQklDUyBUSEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTY4O0NBTkFESUFOIFNZTExBQklDUyBUSFdBQTtMbzswO0w7Ozs7O047Ozs7OworMTU2OTtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFRIV0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTZBO0NBTkFESUFOIFNZTExBQklDUyBUSDtMbzswO0w7Ozs7O047Ozs7OworMTU2QjtDQU5BRElBTiBTWUxMQUJJQ1MgVFRIRTtMbzswO0w7Ozs7O047Ozs7OworMTU2QztDQU5BRElBTiBTWUxMQUJJQ1MgVFRISTtMbzswO0w7Ozs7O047Ozs7OworMTU2RDtDQU5BRElBTiBTWUxMQUJJQ1MgVFRITztMbzswO0w7Ozs7O047Ozs7OworMTU2RTtDQU5BRElBTiBTWUxMQUJJQ1MgVFRIQTtMbzswO0w7Ozs7O047Ozs7OworMTU2RjtDQU5BRElBTiBTWUxMQUJJQ1MgVFRIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTcwO0NBTkFESUFOIFNZTExBQklDUyBUWUU7TG87MDtMOzs7OztOOzs7OzsKKzE1NzE7Q0FOQURJQU4gU1lMTEFCSUNTIFRZSTtMbzswO0w7Ozs7O047Ozs7OworMTU3MjtDQU5BRElBTiBTWUxMQUJJQ1MgVFlPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTczO0NBTkFESUFOIFNZTExBQklDUyBUWUE7TG87MDtMOzs7OztOOzs7OzsKKzE1NzQ7Q0FOQURJQU4gU1lMTEFCSUNTIE5VTkFWSUsgSEU7TG87MDtMOzs7OztOOzs7OzsKKzE1NzU7Q0FOQURJQU4gU1lMTEFCSUNTIE5VTkFWSUsgSEk7TG87MDtMOzs7OztOOzs7OzsKKzE1NzY7Q0FOQURJQU4gU1lMTEFCSUNTIE5VTkFWSUsgSElJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTc3O0NBTkFESUFOIFNZTExBQklDUyBOVU5BVklLIEhPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTc4O0NBTkFESUFOIFNZTExBQklDUyBOVU5BVklLIEhPTztMbzswO0w7Ozs7O047Ozs7OworMTU3OTtDQU5BRElBTiBTWUxMQUJJQ1MgTlVOQVZJSyBIQTtMbzswO0w7Ozs7O047Ozs7OworMTU3QTtDQU5BRElBTiBTWUxMQUJJQ1MgTlVOQVZJSyBIQUE7TG87MDtMOzs7OztOOzs7OzsKKzE1N0I7Q0FOQURJQU4gU1lMTEFCSUNTIE5VTkFWSUsgSDtMbzswO0w7Ozs7O047Ozs7OworMTU3QztDQU5BRElBTiBTWUxMQUJJQ1MgTlVOQVZVVCBIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTdEO0NBTkFESUFOIFNZTExBQklDUyBISztMbzswO0w7Ozs7O047Ozs7OworMTU3RTtDQU5BRElBTiBTWUxMQUJJQ1MgUUFBSTtMbzswO0w7Ozs7O047Ozs7OworMTU3RjtDQU5BRElBTiBTWUxMQUJJQ1MgUUk7TG87MDtMOzs7OztOOzs7OzsKKzE1ODA7Q0FOQURJQU4gU1lMTEFCSUNTIFFJSTtMbzswO0w7Ozs7O047Ozs7OworMTU4MTtDQU5BRElBTiBTWUxMQUJJQ1MgUU87TG87MDtMOzs7OztOOzs7OzsKKzE1ODI7Q0FOQURJQU4gU1lMTEFCSUNTIFFPTztMbzswO0w7Ozs7O047Ozs7OworMTU4MztDQU5BRElBTiBTWUxMQUJJQ1MgUUE7TG87MDtMOzs7OztOOzs7OzsKKzE1ODQ7Q0FOQURJQU4gU1lMTEFCSUNTIFFBQTtMbzswO0w7Ozs7O047Ozs7OworMTU4NTtDQU5BRElBTiBTWUxMQUJJQ1MgUTtMbzswO0w7Ozs7O047Ozs7OworMTU4NjtDQU5BRElBTiBTWUxMQUJJQ1MgVExIRTtMbzswO0w7Ozs7O047Ozs7OworMTU4NztDQU5BRElBTiBTWUxMQUJJQ1MgVExISTtMbzswO0w7Ozs7O047Ozs7OworMTU4ODtDQU5BRElBTiBTWUxMQUJJQ1MgVExITztMbzswO0w7Ozs7O047Ozs7OworMTU4OTtDQU5BRElBTiBTWUxMQUJJQ1MgVExIQTtMbzswO0w7Ozs7O047Ozs7OworMTU4QTtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFJFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNThCO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgUkk7TG87MDtMOzs7OztOOzs7OzsKKzE1OEM7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBSTztMbzswO0w7Ozs7O047Ozs7OworMTU4RDtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNThFO0NBTkFESUFOIFNZTExBQklDUyBOR0FBSTtMbzswO0w7Ozs7O047Ozs7OworMTU4RjtDQU5BRElBTiBTWUxMQUJJQ1MgTkdJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTkwO0NBTkFESUFOIFNZTExBQklDUyBOR0lJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTkxO0NBTkFESUFOIFNZTExBQklDUyBOR087TG87MDtMOzs7OztOOzs7OzsKKzE1OTI7Q0FOQURJQU4gU1lMTEFCSUNTIE5HT087TG87MDtMOzs7OztOOzs7OzsKKzE1OTM7Q0FOQURJQU4gU1lMTEFCSUNTIE5HQTtMbzswO0w7Ozs7O047Ozs7OworMTU5NDtDQU5BRElBTiBTWUxMQUJJQ1MgTkdBQTtMbzswO0w7Ozs7O047Ozs7OworMTU5NTtDQU5BRElBTiBTWUxMQUJJQ1MgTkc7TG87MDtMOzs7OztOOzs7OzsKKzE1OTY7Q0FOQURJQU4gU1lMTEFCSUNTIE5ORztMbzswO0w7Ozs7O047Ozs7OworMTU5NztDQU5BRElBTiBTWUxMQUJJQ1MgU0FZSVNJIFNIRTtMbzswO0w7Ozs7O047Ozs7OworMTU5ODtDQU5BRElBTiBTWUxMQUJJQ1MgU0FZSVNJIFNISTtMbzswO0w7Ozs7O047Ozs7OworMTU5OTtDQU5BRElBTiBTWUxMQUJJQ1MgU0FZSVNJIFNITztMbzswO0w7Ozs7O047Ozs7OworMTU5QTtDQU5BRElBTiBTWUxMQUJJQ1MgU0FZSVNJIFNIQTtMbzswO0w7Ozs7O047Ozs7OworMTU5QjtDQU5BRElBTiBTWUxMQUJJQ1MgV09PRFMtQ1JFRSBUSEU7TG87MDtMOzs7OztOOzs7OzsKKzE1OUM7Q0FOQURJQU4gU1lMTEFCSUNTIFdPT0RTLUNSRUUgVEhJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTlEO0NBTkFESUFOIFNZTExBQklDUyBXT09EUy1DUkVFIFRITztMbzswO0w7Ozs7O047Ozs7OworMTU5RTtDQU5BRElBTiBTWUxMQUJJQ1MgV09PRFMtQ1JFRSBUSEE7TG87MDtMOzs7OztOOzs7OzsKKzE1OUY7Q0FOQURJQU4gU1lMTEFCSUNTIFdPT0RTLUNSRUUgVEg7TG87MDtMOzs7OztOOzs7OzsKKzE1QTA7Q0FOQURJQU4gU1lMTEFCSUNTIExISTtMbzswO0w7Ozs7O047Ozs7OworMTVBMTtDQU5BRElBTiBTWUxMQUJJQ1MgTEhJSTtMbzswO0w7Ozs7O047Ozs7OworMTVBMjtDQU5BRElBTiBTWUxMQUJJQ1MgTEhPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUEzO0NBTkFESUFOIFNZTExBQklDUyBMSE9PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUE0O0NBTkFESUFOIFNZTExBQklDUyBMSEE7TG87MDtMOzs7OztOOzs7OzsKKzE1QTU7Q0FOQURJQU4gU1lMTEFCSUNTIExIQUE7TG87MDtMOzs7OztOOzs7OzsKKzE1QTY7Q0FOQURJQU4gU1lMTEFCSUNTIExIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUE3O0NBTkFESUFOIFNZTExBQklDUyBUSC1DUkVFIFRIRTtMbzswO0w7Ozs7O047Ozs7OworMTVBODtDQU5BRElBTiBTWUxMQUJJQ1MgVEgtQ1JFRSBUSEk7TG87MDtMOzs7OztOOzs7OzsKKzE1QTk7Q0FOQURJQU4gU1lMTEFCSUNTIFRILUNSRUUgVEhJSTtMbzswO0w7Ozs7O047Ozs7OworMTVBQTtDQU5BRElBTiBTWUxMQUJJQ1MgVEgtQ1JFRSBUSE87TG87MDtMOzs7OztOOzs7OzsKKzE1QUI7Q0FOQURJQU4gU1lMTEFCSUNTIFRILUNSRUUgVEhPTztMbzswO0w7Ozs7O047Ozs7OworMTVBQztDQU5BRElBTiBTWUxMQUJJQ1MgVEgtQ1JFRSBUSEE7TG87MDtMOzs7OztOOzs7OzsKKzE1QUQ7Q0FOQURJQU4gU1lMTEFCSUNTIFRILUNSRUUgVEhBQTtMbzswO0w7Ozs7O047Ozs7OworMTVBRTtDQU5BRElBTiBTWUxMQUJJQ1MgVEgtQ1JFRSBUSDtMbzswO0w7Ozs7O047Ozs7OworMTVBRjtDQU5BRElBTiBTWUxMQUJJQ1MgQUlWSUxJSyBCO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUIwO0NBTkFESUFOIFNZTExBQklDUyBCTEFDS0ZPT1QgRTtMbzswO0w7Ozs7O047Ozs7OworMTVCMTtDQU5BRElBTiBTWUxMQUJJQ1MgQkxBQ0tGT09UIEk7TG87MDtMOzs7OztOOzs7OzsKKzE1QjI7Q0FOQURJQU4gU1lMTEFCSUNTIEJMQUNLRk9PVCBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUIzO0NBTkFESUFOIFNZTExBQklDUyBCTEFDS0ZPT1QgQTtMbzswO0w7Ozs7O047Ozs7OworMTVCNDtDQU5BRElBTiBTWUxMQUJJQ1MgQkxBQ0tGT09UIFdFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUI1O0NBTkFESUFOIFNZTExBQklDUyBCTEFDS0ZPT1QgV0k7TG87MDtMOzs7OztOOzs7OzsKKzE1QjY7Q0FOQURJQU4gU1lMTEFCSUNTIEJMQUNLRk9PVCBXTztMbzswO0w7Ozs7O047Ozs7OworMTVCNztDQU5BRElBTiBTWUxMQUJJQ1MgQkxBQ0tGT09UIFdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUI4O0NBTkFESUFOIFNZTExBQklDUyBCTEFDS0ZPT1QgTkU7TG87MDtMOzs7OztOOzs7OzsKKzE1Qjk7Q0FOQURJQU4gU1lMTEFCSUNTIEJMQUNLRk9PVCBOSTtMbzswO0w7Ozs7O047Ozs7OworMTVCQTtDQU5BRElBTiBTWUxMQUJJQ1MgQkxBQ0tGT09UIE5PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUJCO0NBTkFESUFOIFNZTExBQklDUyBCTEFDS0ZPT1QgTkE7TG87MDtMOzs7OztOOzs7OzsKKzE1QkM7Q0FOQURJQU4gU1lMTEFCSUNTIEJMQUNLRk9PVCBLRTtMbzswO0w7Ozs7O047Ozs7OworMTVCRDtDQU5BRElBTiBTWUxMQUJJQ1MgQkxBQ0tGT09UIEtJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUJFO0NBTkFESUFOIFNZTExBQklDUyBCTEFDS0ZPT1QgS087TG87MDtMOzs7OztOOzs7OzsKKzE1QkY7Q0FOQURJQU4gU1lMTEFCSUNTIEJMQUNLRk9PVCBLQTtMbzswO0w7Ozs7O047Ozs7OworMTVDMDtDQU5BRElBTiBTWUxMQUJJQ1MgU0FZSVNJIEhFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUMxO0NBTkFESUFOIFNZTExBQklDUyBTQVlJU0kgSEk7TG87MDtMOzs7OztOOzs7OzsKKzE1QzI7Q0FOQURJQU4gU1lMTEFCSUNTIFNBWUlTSSBITztMbzswO0w7Ozs7O047Ozs7OworMTVDMztDQU5BRElBTiBTWUxMQUJJQ1MgU0FZSVNJIEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUM0O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEdIVTtMbzswO0w7Ozs7O047Ozs7OworMTVDNTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBHSE87TG87MDtMOzs7OztOOzs7OzsKKzE1QzY7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgR0hFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUM3O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEdIRUU7TG87MDtMOzs7OztOOzs7OzsKKzE1Qzg7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgR0hJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUM5O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEdIQTtMbzswO0w7Ozs7O047Ozs7OworMTVDQTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBSVTtMbzswO0w7Ozs7O047Ozs7OworMTVDQjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBSTztMbzswO0w7Ozs7O047Ozs7OworMTVDQztDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBSRTtMbzswO0w7Ozs7O047Ozs7OworMTVDRDtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBSRUU7TG87MDtMOzs7OztOOzs7OzsKKzE1Q0U7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgUkk7TG87MDtMOzs7OztOOzs7OzsKKzE1Q0Y7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgUkE7TG87MDtMOzs7OztOOzs7OzsKKzE1RDA7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgV1U7TG87MDtMOzs7OztOOzs7OzsKKzE1RDE7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgV087TG87MDtMOzs7OztOOzs7OzsKKzE1RDI7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgV0U7TG87MDtMOzs7OztOOzs7OzsKKzE1RDM7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgV0VFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUQ0O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFdJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUQ1O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUQ2O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEhXVTtMbzswO0w7Ozs7O047Ozs7OworMTVENztDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBIV087TG87MDtMOzs7OztOOzs7OzsKKzE1RDg7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgSFdFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUQ5O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEhXRUU7TG87MDtMOzs7OztOOzs7OzsKKzE1REE7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgSFdJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNURCO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEhXQTtMbzswO0w7Ozs7O047Ozs7OworMTVEQztDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBUSFU7TG87MDtMOzs7OztOOzs7OzsKKzE1REQ7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgVEhPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNURFO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFRIRTtMbzswO0w7Ozs7O047Ozs7OworMTVERjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBUSEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUUwO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFRISTtMbzswO0w7Ozs7O047Ozs7OworMTVFMTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBUSEE7TG87MDtMOzs7OztOOzs7OzsKKzE1RTI7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgVFRVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUUzO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFRUTztMbzswO0w7Ozs7O047Ozs7OworMTVFNDtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBUVEU7TG87MDtMOzs7OztOOzs7OzsKKzE1RTU7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgVFRFRTtMbzswO0w7Ozs7O047Ozs7OworMTVFNjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBUVEk7TG87MDtMOzs7OztOOzs7OzsKKzE1RTc7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgVFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUU4O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUU5O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUVBO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUVCO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFBFRTtMbzswO0w7Ozs7O047Ozs7OworMTVFQztDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBQSTtMbzswO0w7Ozs7O047Ozs7OworMTVFRDtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBQQTtMbzswO0w7Ozs7O047Ozs7OworMTVFRTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBQO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUVGO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEdVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUYwO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEdPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUYxO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEdFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUYyO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEdFRTtMbzswO0w7Ozs7O047Ozs7OworMTVGMztDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBHSTtMbzswO0w7Ozs7O047Ozs7OworMTVGNDtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBHQTtMbzswO0w7Ozs7O047Ozs7OworMTVGNTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBLSFU7TG87MDtMOzs7OztOOzs7OzsKKzE1RjY7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgS0hPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUY3O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEtIRTtMbzswO0w7Ozs7O047Ozs7OworMTVGODtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBLSEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUY5O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEtISTtMbzswO0w7Ozs7O047Ozs7OworMTVGQTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBLSEE7TG87MDtMOzs7OztOOzs7OzsKKzE1RkI7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgS0tVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUZDO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEtLTztMbzswO0w7Ozs7O047Ozs7OworMTVGRDtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBLS0U7TG87MDtMOzs7OztOOzs7OzsKKzE1RkU7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgS0tFRTtMbzswO0w7Ozs7O047Ozs7OworMTVGRjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBLS0k7TG87MDtMOzs7OztOOzs7OzsKKzE2MDA7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgS0tBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjAxO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEtLO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjAyO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIE5VO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjAzO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIE5PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjA0O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIE5FO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjA1O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIE5FRTtMbzswO0w7Ozs7O047Ozs7OworMTYwNjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBOSTtMbzswO0w7Ozs7O047Ozs7OworMTYwNztDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBOQTtMbzswO0w7Ozs7O047Ozs7OworMTYwODtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBNVTtMbzswO0w7Ozs7O047Ozs7OworMTYwOTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBNTztMbzswO0w7Ozs7O047Ozs7OworMTYwQTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBNRTtMbzswO0w7Ozs7O047Ozs7OworMTYwQjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBNRUU7TG87MDtMOzs7OztOOzs7OzsKKzE2MEM7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgTUk7TG87MDtMOzs7OztOOzs7OzsKKzE2MEQ7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgTUE7TG87MDtMOzs7OztOOzs7OzsKKzE2MEU7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgWVU7TG87MDtMOzs7OztOOzs7OzsKKzE2MEY7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgWU87TG87MDtMOzs7OztOOzs7OzsKKzE2MTA7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgWUU7TG87MDtMOzs7OztOOzs7OzsKKzE2MTE7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgWUVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjEyO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFlJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjEzO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjE0O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEpVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjE1O0NBTkFESUFOIFNZTExBQklDUyBTQVlJU0kgSlU7TG87MDtMOzs7OztOOzs7OzsKKzE2MTY7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgSk87TG87MDtMOzs7OztOOzs7OzsKKzE2MTc7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgSkU7TG87MDtMOzs7OztOOzs7OzsKKzE2MTg7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgSkVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjE5O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEpJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjFBO0NBTkFESUFOIFNZTExBQklDUyBTQVlJU0kgSkk7TG87MDtMOzs7OztOOzs7OzsKKzE2MUI7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgSkE7TG87MDtMOzs7OztOOzs7OzsKKzE2MUM7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgSkpVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjFEO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEpKTztMbzswO0w7Ozs7O047Ozs7OworMTYxRTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBKSkU7TG87MDtMOzs7OztOOzs7OzsKKzE2MUY7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgSkpFRTtMbzswO0w7Ozs7O047Ozs7OworMTYyMDtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBKSkk7TG87MDtMOzs7OztOOzs7OzsKKzE2MjE7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgSkpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjIyO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIExVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjIzO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIExPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjI0O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIExFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjI1O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIExFRTtMbzswO0w7Ozs7O047Ozs7OworMTYyNjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBMSTtMbzswO0w7Ozs7O047Ozs7OworMTYyNztDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBMQTtMbzswO0w7Ozs7O047Ozs7OworMTYyODtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBETFU7TG87MDtMOzs7OztOOzs7OzsKKzE2Mjk7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgRExPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjJBO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIERMRTtMbzswO0w7Ozs7O047Ozs7OworMTYyQjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBETEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjJDO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIERMSTtMbzswO0w7Ozs7O047Ozs7OworMTYyRDtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBETEE7TG87MDtMOzs7OztOOzs7OzsKKzE2MkU7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgTEhVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjJGO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIExITztMbzswO0w7Ozs7O047Ozs7OworMTYzMDtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBMSEU7TG87MDtMOzs7OztOOzs7OzsKKzE2MzE7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgTEhFRTtMbzswO0w7Ozs7O047Ozs7OworMTYzMjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBMSEk7TG87MDtMOzs7OztOOzs7OzsKKzE2MzM7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgTEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjM0O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFRMSFU7TG87MDtMOzs7OztOOzs7OzsKKzE2MzU7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgVExITztMbzswO0w7Ozs7O047Ozs7OworMTYzNjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBUTEhFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjM3O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFRMSEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjM4O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFRMSEk7TG87MDtMOzs7OztOOzs7OzsKKzE2Mzk7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgVExIQTtMbzswO0w7Ozs7O047Ozs7OworMTYzQTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBUTFU7TG87MDtMOzs7OztOOzs7OzsKKzE2M0I7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgVExPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjNDO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFRMRTtMbzswO0w7Ozs7O047Ozs7OworMTYzRDtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBUTEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjNFO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFRMSTtMbzswO0w7Ozs7O047Ozs7OworMTYzRjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBUTEE7TG87MDtMOzs7OztOOzs7OzsKKzE2NDA7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgWlU7TG87MDtMOzs7OztOOzs7OzsKKzE2NDE7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgWk87TG87MDtMOzs7OztOOzs7OzsKKzE2NDI7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgWkU7TG87MDtMOzs7OztOOzs7OzsKKzE2NDM7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgWkVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjQ0O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFpJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjQ1O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjQ2O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFo7TG87MDtMOzs7OztOOzs7OzsKKzE2NDc7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgSU5JVElBTCBaO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjQ4O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIERaVTtMbzswO0w7Ozs7O047Ozs7OworMTY0OTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBEWk87TG87MDtMOzs7OztOOzs7OzsKKzE2NEE7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgRFpFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjRCO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIERaRUU7TG87MDtMOzs7OztOOzs7OzsKKzE2NEM7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgRFpJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjREO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIERaQTtMbzswO0w7Ozs7O047Ozs7OworMTY0RTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBTVTtMbzswO0w7Ozs7O047Ozs7OworMTY0RjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBTTztMbzswO0w7Ozs7O047Ozs7OworMTY1MDtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBTRTtMbzswO0w7Ozs7O047Ozs7OworMTY1MTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBTRUU7TG87MDtMOzs7OztOOzs7OzsKKzE2NTI7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgU0k7TG87MDtMOzs7OztOOzs7OzsKKzE2NTM7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgU0E7TG87MDtMOzs7OztOOzs7OzsKKzE2NTQ7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgU0hVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjU1O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFNITztMbzswO0w7Ozs7O047Ozs7OworMTY1NjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBTSEU7TG87MDtMOzs7OztOOzs7OzsKKzE2NTc7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgU0hFRTtMbzswO0w7Ozs7O047Ozs7OworMTY1ODtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBTSEk7TG87MDtMOzs7OztOOzs7OzsKKzE2NTk7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgU0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjVBO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFNIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjVCO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFRTVTtMbzswO0w7Ozs7O047Ozs7OworMTY1QztDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBUU087TG87MDtMOzs7OztOOzs7OzsKKzE2NUQ7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgVFNFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjVFO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFRTRUU7TG87MDtMOzs7OztOOzs7OzsKKzE2NUY7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgVFNJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjYwO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFRTQTtMbzswO0w7Ozs7O047Ozs7OworMTY2MTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBDSFU7TG87MDtMOzs7OztOOzs7OzsKKzE2NjI7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgQ0hPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjYzO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIENIRTtMbzswO0w7Ozs7O047Ozs7OworMTY2NDtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBDSEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjY1O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIENISTtMbzswO0w7Ozs7O047Ozs7OworMTY2NjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBDSEE7TG87MDtMOzs7OztOOzs7OzsKKzE2Njc7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgVFRTVTtMbzswO0w7Ozs7O047Ozs7OworMTY2ODtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBUVFNPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjY5O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFRUU0U7TG87MDtMOzs7OztOOzs7OzsKKzE2NkE7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgVFRTRUU7TG87MDtMOzs7OztOOzs7OzsKKzE2NkI7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgVFRTSTtMbzswO0w7Ozs7O047Ozs7OworMTY2QztDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBUVFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjZEO0NBTkFESUFOIFNZTExBQklDUyBDSEkgU0lHTjtQbzswO0w7Ozs7O047Ozs7OworMTY2RTtDQU5BRElBTiBTWUxMQUJJQ1MgRlVMTCBTVE9QO1BvOzA7TDs7Ozs7Tjs7Ozs7CisxNjZGO0NBTkFESUFOIFNZTExBQklDUyBRQUk7TG87MDtMOzs7OztOOzs7OzsKKzE2NzA7Q0FOQURJQU4gU1lMTEFCSUNTIE5HQUk7TG87MDtMOzs7OztOOzs7OzsKKzE2NzE7Q0FOQURJQU4gU1lMTEFCSUNTIE5OR0k7TG87MDtMOzs7OztOOzs7OzsKKzE2NzI7Q0FOQURJQU4gU1lMTEFCSUNTIE5OR0lJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjczO0NBTkFESUFOIFNZTExBQklDUyBOTkdPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjc0O0NBTkFESUFOIFNZTExBQklDUyBOTkdPTztMbzswO0w7Ozs7O047Ozs7OworMTY3NTtDQU5BRElBTiBTWUxMQUJJQ1MgTk5HQTtMbzswO0w7Ozs7O047Ozs7OworMTY3NjtDQU5BRElBTiBTWUxMQUJJQ1MgTk5HQUE7TG87MDtMOzs7OztOOzs7OzsKKzE2ODA7T0dIQU0gU1BBQ0UgTUFSSztaczswO1dTOzs7OztOOzs7OzsKKzE2ODE7T0dIQU0gTEVUVEVSIEJFSVRIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjgyO09HSEFNIExFVFRFUiBMVUlTO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjgzO09HSEFNIExFVFRFUiBGRUFSTjtMbzswO0w7Ozs7O047Ozs7OworMTY4NDtPR0hBTSBMRVRURVIgU0FJTDtMbzswO0w7Ozs7O047Ozs7OworMTY4NTtPR0hBTSBMRVRURVIgTklPTjtMbzswO0w7Ozs7O047Ozs7OworMTY4NjtPR0hBTSBMRVRURVIgVUFUSDtMbzswO0w7Ozs7O047Ozs7OworMTY4NztPR0hBTSBMRVRURVIgREFJUjtMbzswO0w7Ozs7O047Ozs7OworMTY4ODtPR0hBTSBMRVRURVIgVElOTkU7TG87MDtMOzs7OztOOzs7OzsKKzE2ODk7T0dIQU0gTEVUVEVSIENPTEw7TG87MDtMOzs7OztOOzs7OzsKKzE2OEE7T0dIQU0gTEVUVEVSIENFSVJUO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjhCO09HSEFNIExFVFRFUiBNVUlOO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjhDO09HSEFNIExFVFRFUiBHT1JUO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjhEO09HSEFNIExFVFRFUiBOR0VBREFMO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjhFO09HSEFNIExFVFRFUiBTVFJBSUY7TG87MDtMOzs7OztOOzs7OzsKKzE2OEY7T0dIQU0gTEVUVEVSIFJVSVM7TG87MDtMOzs7OztOOzs7OzsKKzE2OTA7T0dIQU0gTEVUVEVSIEFJTE07TG87MDtMOzs7OztOOzs7OzsKKzE2OTE7T0dIQU0gTEVUVEVSIE9OTjtMbzswO0w7Ozs7O047Ozs7OworMTY5MjtPR0hBTSBMRVRURVIgVVI7TG87MDtMOzs7OztOOzs7OzsKKzE2OTM7T0dIQU0gTEVUVEVSIEVBREhBREg7TG87MDtMOzs7OztOOzs7OzsKKzE2OTQ7T0dIQU0gTEVUVEVSIElPREhBREg7TG87MDtMOzs7OztOOzs7OzsKKzE2OTU7T0dIQU0gTEVUVEVSIEVBQkhBREg7TG87MDtMOzs7OztOOzs7OzsKKzE2OTY7T0dIQU0gTEVUVEVSIE9SO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjk3O09HSEFNIExFVFRFUiBVSUxMRUFOTjtMbzswO0w7Ozs7O047Ozs7OworMTY5ODtPR0hBTSBMRVRURVIgSUZJTjtMbzswO0w7Ozs7O047Ozs7OworMTY5OTtPR0hBTSBMRVRURVIgRUFNSEFOQ0hPTEw7TG87MDtMOzs7OztOOzs7OzsKKzE2OUE7T0dIQU0gTEVUVEVSIFBFSVRIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjlCO09HSEFNIEZFQVRIRVIgTUFSSztQczswO09OOzs7OztOOzs7OzsKKzE2OUM7T0dIQU0gUkVWRVJTRUQgRkVBVEhFUiBNQVJLO1BlOzA7T047Ozs7O047Ozs7OworMTZBMDtSVU5JQyBMRVRURVIgRkVIVSBGRU9IIEZFIEY7TG87MDtMOzs7OztOOzs7OzsKKzE2QTE7UlVOSUMgTEVUVEVSIFY7TG87MDtMOzs7OztOOzs7OzsKKzE2QTI7UlVOSUMgTEVUVEVSIFVSVVogVVIgVTtMbzswO0w7Ozs7O047Ozs7OworMTZBMztSVU5JQyBMRVRURVIgWVI7TG87MDtMOzs7OztOOzs7OzsKKzE2QTQ7UlVOSUMgTEVUVEVSIFk7TG87MDtMOzs7OztOOzs7OzsKKzE2QTU7UlVOSUMgTEVUVEVSIFc7TG87MDtMOzs7OztOOzs7OzsKKzE2QTY7UlVOSUMgTEVUVEVSIFRIVVJJU0FaIFRIVVJTIFRIT1JOO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkE3O1JVTklDIExFVFRFUiBFVEg7TG87MDtMOzs7OztOOzs7OzsKKzE2QTg7UlVOSUMgTEVUVEVSIEFOU1VaIEE7TG87MDtMOzs7OztOOzs7OzsKKzE2QTk7UlVOSUMgTEVUVEVSIE9TIE87TG87MDtMOzs7OztOOzs7OzsKKzE2QUE7UlVOSUMgTEVUVEVSIEFDIEE7TG87MDtMOzs7OztOOzs7OzsKKzE2QUI7UlVOSUMgTEVUVEVSIEFFU0M7TG87MDtMOzs7OztOOzs7OzsKKzE2QUM7UlVOSUMgTEVUVEVSIExPTkctQlJBTkNILU9TUyBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkFEO1JVTklDIExFVFRFUiBTSE9SVC1UV0lHLU9TUyBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkFFO1JVTklDIExFVFRFUiBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkFGO1JVTklDIExFVFRFUiBPRTtMbzswO0w7Ozs7O047Ozs7OworMTZCMDtSVU5JQyBMRVRURVIgT047TG87MDtMOzs7OztOOzs7OzsKKzE2QjE7UlVOSUMgTEVUVEVSIFJBSURPIFJBRCBSRUlEIFI7TG87MDtMOzs7OztOOzs7OzsKKzE2QjI7UlVOSUMgTEVUVEVSIEtBVU5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkIzO1JVTklDIExFVFRFUiBDRU47TG87MDtMOzs7OztOOzs7OzsKKzE2QjQ7UlVOSUMgTEVUVEVSIEtBVU4gSztMbzswO0w7Ozs7O047Ozs7OworMTZCNTtSVU5JQyBMRVRURVIgRztMbzswO0w7Ozs7O047Ozs7OworMTZCNjtSVU5JQyBMRVRURVIgRU5HO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkI3O1JVTklDIExFVFRFUiBHRUJPIEdZRlUgRztMbzswO0w7Ozs7O047Ozs7OworMTZCODtSVU5JQyBMRVRURVIgR0FSO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkI5O1JVTklDIExFVFRFUiBXVU5KTyBXWU5OIFc7TG87MDtMOzs7OztOOzs7OzsKKzE2QkE7UlVOSUMgTEVUVEVSIEhBR0xBWiBIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkJCO1JVTklDIExFVFRFUiBIQUVHTCBIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkJDO1JVTklDIExFVFRFUiBMT05HLUJSQU5DSC1IQUdBTEwgSDtMbzswO0w7Ozs7O047Ozs7OworMTZCRDtSVU5JQyBMRVRURVIgU0hPUlQtVFdJRy1IQUdBTEwgSDtMbzswO0w7Ozs7O047Ozs7OworMTZCRTtSVU5JQyBMRVRURVIgTkFVRElaIE5ZRCBOQVVEIE47TG87MDtMOzs7OztOOzs7OzsKKzE2QkY7UlVOSUMgTEVUVEVSIFNIT1JULVRXSUctTkFVRCBOO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkMwO1JVTklDIExFVFRFUiBET1RURUQtTjtMbzswO0w7Ozs7O047Ozs7OworMTZDMTtSVU5JQyBMRVRURVIgSVNBWiBJUyBJU1MgSTtMbzswO0w7Ozs7O047Ozs7OworMTZDMjtSVU5JQyBMRVRURVIgRTtMbzswO0w7Ozs7O047Ozs7OworMTZDMztSVU5JQyBMRVRURVIgSkVSQU4gSjtMbzswO0w7Ozs7O047Ozs7OworMTZDNDtSVU5JQyBMRVRURVIgR0VSO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkM1O1JVTklDIExFVFRFUiBMT05HLUJSQU5DSC1BUiBBRTtMbzswO0w7Ozs7O047Ozs7OworMTZDNjtSVU5JQyBMRVRURVIgU0hPUlQtVFdJRy1BUiBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkM3O1JVTklDIExFVFRFUiBJV0FaIEVPSDtMbzswO0w7Ozs7O047Ozs7OworMTZDODtSVU5JQyBMRVRURVIgUEVSVEhPIFBFT1JUSCBQO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkM5O1JVTklDIExFVFRFUiBBTEdJWiBFT0xIWDtMbzswO0w7Ozs7O047Ozs7OworMTZDQTtSVU5JQyBMRVRURVIgU09XSUxPIFM7TG87MDtMOzs7OztOOzs7OzsKKzE2Q0I7UlVOSUMgTEVUVEVSIFNJR0VMIExPTkctQlJBTkNILVNPTCBTO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkNDO1JVTklDIExFVFRFUiBTSE9SVC1UV0lHLVNPTCBTO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkNEO1JVTklDIExFVFRFUiBDO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkNFO1JVTklDIExFVFRFUiBaO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkNGO1JVTklDIExFVFRFUiBUSVdBWiBUSVIgVFlSIFQ7TG87MDtMOzs7OztOOzs7OzsKKzE2RDA7UlVOSUMgTEVUVEVSIFNIT1JULVRXSUctVFlSIFQ7TG87MDtMOzs7OztOOzs7OzsKKzE2RDE7UlVOSUMgTEVUVEVSIEQ7TG87MDtMOzs7OztOOzs7OzsKKzE2RDI7UlVOSUMgTEVUVEVSIEJFUktBTkFOIEJFT1JDIEJKQVJLQU4gQjtMbzswO0w7Ozs7O047Ozs7OworMTZEMztSVU5JQyBMRVRURVIgU0hPUlQtVFdJRy1CSkFSS0FOIEI7TG87MDtMOzs7OztOOzs7OzsKKzE2RDQ7UlVOSUMgTEVUVEVSIERPVFRFRC1QO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkQ1O1JVTklDIExFVFRFUiBPUEVOLVA7TG87MDtMOzs7OztOOzs7OzsKKzE2RDY7UlVOSUMgTEVUVEVSIEVIV0FaIEVIIEU7TG87MDtMOzs7OztOOzs7OzsKKzE2RDc7UlVOSUMgTEVUVEVSIE1BTk5BWiBNQU4gTTtMbzswO0w7Ozs7O047Ozs7OworMTZEODtSVU5JQyBMRVRURVIgTE9ORy1CUkFOQ0gtTUFEUiBNO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkQ5O1JVTklDIExFVFRFUiBTSE9SVC1UV0lHLU1BRFIgTTtMbzswO0w7Ozs7O047Ozs7OworMTZEQTtSVU5JQyBMRVRURVIgTEFVS0FaIExBR1UgTE9HUiBMO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkRCO1JVTklDIExFVFRFUiBET1RURUQtTDtMbzswO0w7Ozs7O047Ozs7OworMTZEQztSVU5JQyBMRVRURVIgSU5HV0FaO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkREO1JVTklDIExFVFRFUiBJTkc7TG87MDtMOzs7OztOOzs7OzsKKzE2REU7UlVOSUMgTEVUVEVSIERBR0FaIERBRUcgRDtMbzswO0w7Ozs7O047Ozs7OworMTZERjtSVU5JQyBMRVRURVIgT1RIQUxBTiBFVEhFTCBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkUwO1JVTklDIExFVFRFUiBFQVI7TG87MDtMOzs7OztOOzs7OzsKKzE2RTE7UlVOSUMgTEVUVEVSIElPUjtMbzswO0w7Ozs7O047Ozs7OworMTZFMjtSVU5JQyBMRVRURVIgQ1dFT1JUSDtMbzswO0w7Ozs7O047Ozs7OworMTZFMztSVU5JQyBMRVRURVIgQ0FMQztMbzswO0w7Ozs7O047Ozs7OworMTZFNDtSVU5JQyBMRVRURVIgQ0VBTEM7TG87MDtMOzs7OztOOzs7OzsKKzE2RTU7UlVOSUMgTEVUVEVSIFNUQU47TG87MDtMOzs7OztOOzs7OzsKKzE2RTY7UlVOSUMgTEVUVEVSIExPTkctQlJBTkNILVlSO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkU3O1JVTklDIExFVFRFUiBTSE9SVC1UV0lHLVlSO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkU4O1JVTklDIExFVFRFUiBJQ0VMQU5ESUMtWVI7TG87MDtMOzs7OztOOzs7OzsKKzE2RTk7UlVOSUMgTEVUVEVSIFE7TG87MDtMOzs7OztOOzs7OzsKKzE2RUE7UlVOSUMgTEVUVEVSIFg7TG87MDtMOzs7OztOOzs7OzsKKzE2RUI7UlVOSUMgU0lOR0xFIFBVTkNUVUFUSU9OO1BvOzA7TDs7Ozs7Tjs7Ozs7CisxNkVDO1JVTklDIE1VTFRJUExFIFBVTkNUVUFUSU9OO1BvOzA7TDs7Ozs7Tjs7Ozs7CisxNkVEO1JVTklDIENST1NTIFBVTkNUVUFUSU9OO1BvOzA7TDs7Ozs7Tjs7Ozs7CisxNkVFO1JVTklDIEFSTEFVRyBTWU1CT0w7Tmw7MDtMOzs7OzE3O047O2dvbGRlbiBudW1iZXIgMTc7OzsKKzE2RUY7UlVOSUMgVFZJTUFEVVIgU1lNQk9MO05sOzA7TDs7OzsxODtOOztnb2xkZW4gbnVtYmVyIDE4Ozs7CisxNkYwO1JVTklDIEJFTEdUSE9SIFNZTUJPTDtObDswO0w7Ozs7MTk7Tjs7Z29sZGVuIG51bWJlciAxOTs7OworMTcwMDtUQUdBTE9HIExFVFRFUiBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzAxO1RBR0FMT0cgTEVUVEVSIEk7TG87MDtMOzs7OztOOzs7OzsKKzE3MDI7VEFHQUxPRyBMRVRURVIgVTtMbzswO0w7Ozs7O047Ozs7OworMTcwMztUQUdBTE9HIExFVFRFUiBLQTtMbzswO0w7Ozs7O047Ozs7OworMTcwNDtUQUdBTE9HIExFVFRFUiBHQTtMbzswO0w7Ozs7O047Ozs7OworMTcwNTtUQUdBTE9HIExFVFRFUiBOR0E7TG87MDtMOzs7OztOOzs7OzsKKzE3MDY7VEFHQUxPRyBMRVRURVIgVEE7TG87MDtMOzs7OztOOzs7OzsKKzE3MDc7VEFHQUxPRyBMRVRURVIgREE7TG87MDtMOzs7OztOOzs7OzsKKzE3MDg7VEFHQUxPRyBMRVRURVIgTkE7TG87MDtMOzs7OztOOzs7OzsKKzE3MDk7VEFHQUxPRyBMRVRURVIgUEE7TG87MDtMOzs7OztOOzs7OzsKKzE3MEE7VEFHQUxPRyBMRVRURVIgQkE7TG87MDtMOzs7OztOOzs7OzsKKzE3MEI7VEFHQUxPRyBMRVRURVIgTUE7TG87MDtMOzs7OztOOzs7OzsKKzE3MEM7VEFHQUxPRyBMRVRURVIgWUE7TG87MDtMOzs7OztOOzs7OzsKKzE3MEU7VEFHQUxPRyBMRVRURVIgTEE7TG87MDtMOzs7OztOOzs7OzsKKzE3MEY7VEFHQUxPRyBMRVRURVIgV0E7TG87MDtMOzs7OztOOzs7OzsKKzE3MTA7VEFHQUxPRyBMRVRURVIgU0E7TG87MDtMOzs7OztOOzs7OzsKKzE3MTE7VEFHQUxPRyBMRVRURVIgSEE7TG87MDtMOzs7OztOOzs7OzsKKzE3MTI7VEFHQUxPRyBWT1dFTCBTSUdOIEk7TW47MDtOU007Ozs7O047Ozs7OworMTcxMztUQUdBTE9HIFZPV0VMIFNJR04gVTtNbjswO05TTTs7Ozs7Tjs7Ozs7CisxNzE0O1RBR0FMT0cgU0lHTiBWSVJBTUE7TW47OTtOU007Ozs7O047Ozs7OworMTcyMDtIQU5VTk9PIExFVFRFUiBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzIxO0hBTlVOT08gTEVUVEVSIEk7TG87MDtMOzs7OztOOzs7OzsKKzE3MjI7SEFOVU5PTyBMRVRURVIgVTtMbzswO0w7Ozs7O047Ozs7OworMTcyMztIQU5VTk9PIExFVFRFUiBLQTtMbzswO0w7Ozs7O047Ozs7OworMTcyNDtIQU5VTk9PIExFVFRFUiBHQTtMbzswO0w7Ozs7O047Ozs7OworMTcyNTtIQU5VTk9PIExFVFRFUiBOR0E7TG87MDtMOzs7OztOOzs7OzsKKzE3MjY7SEFOVU5PTyBMRVRURVIgVEE7TG87MDtMOzs7OztOOzs7OzsKKzE3Mjc7SEFOVU5PTyBMRVRURVIgREE7TG87MDtMOzs7OztOOzs7OzsKKzE3Mjg7SEFOVU5PTyBMRVRURVIgTkE7TG87MDtMOzs7OztOOzs7OzsKKzE3Mjk7SEFOVU5PTyBMRVRURVIgUEE7TG87MDtMOzs7OztOOzs7OzsKKzE3MkE7SEFOVU5PTyBMRVRURVIgQkE7TG87MDtMOzs7OztOOzs7OzsKKzE3MkI7SEFOVU5PTyBMRVRURVIgTUE7TG87MDtMOzs7OztOOzs7OzsKKzE3MkM7SEFOVU5PTyBMRVRURVIgWUE7TG87MDtMOzs7OztOOzs7OzsKKzE3MkQ7SEFOVU5PTyBMRVRURVIgUkE7TG87MDtMOzs7OztOOzs7OzsKKzE3MkU7SEFOVU5PTyBMRVRURVIgTEE7TG87MDtMOzs7OztOOzs7OzsKKzE3MkY7SEFOVU5PTyBMRVRURVIgV0E7TG87MDtMOzs7OztOOzs7OzsKKzE3MzA7SEFOVU5PTyBMRVRURVIgU0E7TG87MDtMOzs7OztOOzs7OzsKKzE3MzE7SEFOVU5PTyBMRVRURVIgSEE7TG87MDtMOzs7OztOOzs7OzsKKzE3MzI7SEFOVU5PTyBWT1dFTCBTSUdOIEk7TW47MDtOU007Ozs7O047Ozs7OworMTczMztIQU5VTk9PIFZPV0VMIFNJR04gVTtNbjswO05TTTs7Ozs7Tjs7Ozs7CisxNzM0O0hBTlVOT08gU0lHTiBQQU1VRFBPRDtNbjs5O05TTTs7Ozs7Tjs7Ozs7CisxNzM1O1BISUxJUFBJTkUgU0lOR0xFIFBVTkNUVUFUSU9OO1BvOzA7TDs7Ozs7Tjs7Ozs7CisxNzM2O1BISUxJUFBJTkUgRE9VQkxFIFBVTkNUVUFUSU9OO1BvOzA7TDs7Ozs7Tjs7Ozs7CisxNzQwO0JVSElEIExFVFRFUiBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzQxO0JVSElEIExFVFRFUiBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzQyO0JVSElEIExFVFRFUiBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzQzO0JVSElEIExFVFRFUiBLQTtMbzswO0w7Ozs7O047Ozs7OworMTc0NDtCVUhJRCBMRVRURVIgR0E7TG87MDtMOzs7OztOOzs7OzsKKzE3NDU7QlVISUQgTEVUVEVSIE5HQTtMbzswO0w7Ozs7O047Ozs7OworMTc0NjtCVUhJRCBMRVRURVIgVEE7TG87MDtMOzs7OztOOzs7OzsKKzE3NDc7QlVISUQgTEVUVEVSIERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzQ4O0JVSElEIExFVFRFUiBOQTtMbzswO0w7Ozs7O047Ozs7OworMTc0OTtCVUhJRCBMRVRURVIgUEE7TG87MDtMOzs7OztOOzs7OzsKKzE3NEE7QlVISUQgTEVUVEVSIEJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzRCO0JVSElEIExFVFRFUiBNQTtMbzswO0w7Ozs7O047Ozs7OworMTc0QztCVUhJRCBMRVRURVIgWUE7TG87MDtMOzs7OztOOzs7OzsKKzE3NEQ7QlVISUQgTEVUVEVSIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzRFO0JVSElEIExFVFRFUiBMQTtMbzswO0w7Ozs7O047Ozs7OworMTc0RjtCVUhJRCBMRVRURVIgV0E7TG87MDtMOzs7OztOOzs7OzsKKzE3NTA7QlVISUQgTEVUVEVSIFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzUxO0JVSElEIExFVFRFUiBIQTtMbzswO0w7Ozs7O047Ozs7OworMTc1MjtCVUhJRCBWT1dFTCBTSUdOIEk7TW47MDtOU007Ozs7O047Ozs7OworMTc1MztCVUhJRCBWT1dFTCBTSUdOIFU7TW47MDtOU007Ozs7O047Ozs7OworMTc2MDtUQUdCQU5XQSBMRVRURVIgQTtMbzswO0w7Ozs7O047Ozs7OworMTc2MTtUQUdCQU5XQSBMRVRURVIgSTtMbzswO0w7Ozs7O047Ozs7OworMTc2MjtUQUdCQU5XQSBMRVRURVIgVTtMbzswO0w7Ozs7O047Ozs7OworMTc2MztUQUdCQU5XQSBMRVRURVIgS0E7TG87MDtMOzs7OztOOzs7OzsKKzE3NjQ7VEFHQkFOV0EgTEVUVEVSIEdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzY1O1RBR0JBTldBIExFVFRFUiBOR0E7TG87MDtMOzs7OztOOzs7OzsKKzE3NjY7VEFHQkFOV0EgTEVUVEVSIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzY3O1RBR0JBTldBIExFVFRFUiBEQTtMbzswO0w7Ozs7O047Ozs7OworMTc2ODtUQUdCQU5XQSBMRVRURVIgTkE7TG87MDtMOzs7OztOOzs7OzsKKzE3Njk7VEFHQkFOV0EgTEVUVEVSIFBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzZBO1RBR0JBTldBIExFVFRFUiBCQTtMbzswO0w7Ozs7O047Ozs7OworMTc2QjtUQUdCQU5XQSBMRVRURVIgTUE7TG87MDtMOzs7OztOOzs7OzsKKzE3NkM7VEFHQkFOV0EgTEVUVEVSIFlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzZFO1RBR0JBTldBIExFVFRFUiBMQTtMbzswO0w7Ozs7O047Ozs7OworMTc2RjtUQUdCQU5XQSBMRVRURVIgV0E7TG87MDtMOzs7OztOOzs7OzsKKzE3NzA7VEFHQkFOV0EgTEVUVEVSIFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzcyO1RBR0JBTldBIFZPV0VMIFNJR04gSTtNbjswO05TTTs7Ozs7Tjs7Ozs7CisxNzczO1RBR0JBTldBIFZPV0VMIFNJR04gVTtNbjswO05TTTs7Ozs7Tjs7Ozs7CisxNzgwO0tITUVSIExFVFRFUiBLQTtMbzswO0w7Ozs7O047Ozs7OworMTc4MTtLSE1FUiBMRVRURVIgS0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzgyO0tITUVSIExFVFRFUiBLTztMbzswO0w7Ozs7O047Ozs7OworMTc4MztLSE1FUiBMRVRURVIgS0hPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzg0O0tITUVSIExFVFRFUiBOR087TG87MDtMOzs7OztOOzs7OzsKKzE3ODU7S0hNRVIgTEVUVEVSIENBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzg2O0tITUVSIExFVFRFUiBDSEE7TG87MDtMOzs7OztOOzs7OzsKKzE3ODc7S0hNRVIgTEVUVEVSIENPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzg4O0tITUVSIExFVFRFUiBDSE87TG87MDtMOzs7OztOOzs7OzsKKzE3ODk7S0hNRVIgTEVUVEVSIE5ZTztMbzswO0w7Ozs7O047Ozs7OworMTc4QTtLSE1FUiBMRVRURVIgREE7TG87MDtMOzs7OztOOzs7OzsKKzE3OEI7S0hNRVIgTEVUVEVSIFRUSEE7TG87MDtMOzs7OztOOzs7OzsKKzE3OEM7S0hNRVIgTEVUVEVSIERPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzhEO0tITUVSIExFVFRFUiBUVEhPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzhFO0tITUVSIExFVFRFUiBOTk87TG87MDtMOzs7OztOOzs7OzsKKzE3OEY7S0hNRVIgTEVUVEVSIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzkwO0tITUVSIExFVFRFUiBUSEE7TG87MDtMOzs7OztOOzs7OzsKKzE3OTE7S0hNRVIgTEVUVEVSIFRPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzkyO0tITUVSIExFVFRFUiBUSE87TG87MDtMOzs7OztOOzs7OzsKKzE3OTM7S0hNRVIgTEVUVEVSIE5PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzk0O0tITUVSIExFVFRFUiBCQTtMbzswO0w7Ozs7O047Ozs7OworMTc5NTtLSE1FUiBMRVRURVIgUEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzk2O0tITUVSIExFVFRFUiBQTztMbzswO0w7Ozs7O047Ozs7OworMTc5NztLSE1FUiBMRVRURVIgUEhPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzk4O0tITUVSIExFVFRFUiBNTztMbzswO0w7Ozs7O047Ozs7OworMTc5OTtLSE1FUiBMRVRURVIgWU87TG87MDtMOzs7OztOOzs7OzsKKzE3OUE7S0hNRVIgTEVUVEVSIFJPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzlCO0tITUVSIExFVFRFUiBMTztMbzswO0w7Ozs7O047Ozs7OworMTc5QztLSE1FUiBMRVRURVIgVk87TG87MDtMOzs7OztOOzs7OzsKKzE3OUQ7S0hNRVIgTEVUVEVSIFNIQTtMbzswO0w7Ozs7O047Ozs7OworMTc5RTtLSE1FUiBMRVRURVIgU1NPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzlGO0tITUVSIExFVFRFUiBTQTtMbzswO0w7Ozs7O047Ozs7OworMTdBMDtLSE1FUiBMRVRURVIgSEE7TG87MDtMOzs7OztOOzs7OzsKKzE3QTE7S0hNRVIgTEVUVEVSIExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxN0EyO0tITUVSIExFVFRFUiBRQTtMbzswO0w7Ozs7O047Ozs7OworMTdBMztLSE1FUiBJTkRFUEVOREVOVCBWT1dFTCBRQVE7TG87MDtMOzs7OztOOzs7OzsKKzE3QTQ7S0hNRVIgSU5ERVBFTkRFTlQgVk9XRUwgUUFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxN0E1O0tITUVSIElOREVQRU5ERU5UIFZPV0VMIFFJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxN0E2O0tITUVSIElOREVQRU5ERU5UIFZPV0VMIFFJSTtMbzswO0w7Ozs7O047Ozs7OworMTdBNztLSE1FUiBJTkRFUEVOREVOVCBWT1dFTCBRVTtMbzswO0w7Ozs7O047Ozs7OworMTdBODtLSE1FUiBJTkRFUEVOREVOVCBWT1dFTCBRVUs7TG87MDtMOzs7OztOOzs7OzsKKzE3QTk7S0hNRVIgSU5ERVBFTkRFTlQgVk9XRUwgUVVVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxN0FBO0tITUVSIElOREVQRU5ERU5UIFZPV0VMIFFVVVY7TG87MDtMOzs7OztOOzs7OzsKKzE3QUI7S0hNRVIgSU5ERVBFTkRFTlQgVk9XRUwgUlk7TG87MDtMOzs7OztOOzs7OzsKKzE3QUM7S0hNRVIgSU5ERVBFTkRFTlQgVk9XRUwgUllZO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxN0FEO0tITUVSIElOREVQRU5ERU5UIFZPV0VMIExZO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxN0FFO0tITUVSIElOREVQRU5ERU5UIFZPV0VMIExZWTtMbzswO0w7Ozs7O047Ozs7OworMTdBRjtLSE1FUiBJTkRFUEVOREVOVCBWT1dFTCBRRTtMbzswO0w7Ozs7O047Ozs7OworMTdCMDtLSE1FUiBJTkRFUEVOREVOVCBWT1dFTCBRQUk7TG87MDtMOzs7OztOOzs7OzsKKzE3QjE7S0hNRVIgSU5ERVBFTkRFTlQgVk9XRUwgUU9PIFRZUEUgT05FO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxN0IyO0tITUVSIElOREVQRU5ERU5UIFZPV0VMIFFPTyBUWVBFIFRXTztMbzswO0w7Ozs7O047Ozs7OworMTdCMztLSE1FUiBJTkRFUEVOREVOVCBWT1dFTCBRQVU7TG87MDtMOzs7OztOOzs7OzsKKzE3QjQ7S0hNRVIgVk9XRUwgSU5IRVJFTlQgQVE7TWM7MDtMOzs7OztOOzs7OzsKKzE3QjU7S0hNRVIgVk9XRUwgSU5IRVJFTlQgQUE7TWM7MDtMOzs7OztOOzs7OzsKKzE3QjY7S0hNRVIgVk9XRUwgU0lHTiBBQTtNYzswO0w7Ozs7O047Ozs7OworMTdCNztLSE1FUiBWT1dFTCBTSUdOIEk7TW47MDtOU007Ozs7O047Ozs7OworMTdCODtLSE1FUiBWT1dFTCBTSUdOIElJO01uOzA7TlNNOzs7OztOOzs7OzsKKzE3Qjk7S0hNRVIgVk9XRUwgU0lHTiBZO01uOzA7TlNNOzs7OztOOzs7OzsKKzE3QkE7S0hNRVIgVk9XRUwgU0lHTiBZWTtNbjswO05TTTs7Ozs7Tjs7Ozs7CisxN0JCO0tITUVSIFZPV0VMIFNJR04gVTtNbjswO05TTTs7Ozs7Tjs7Ozs7CisxN0JDO0tITUVSIFZPV0VMIFNJR04gVVU7TW47MDtOU007Ozs7O047Ozs7OworMTdCRDtLSE1FUiBWT1dFTCBTSUdOIFVBO01uOzA7TlNNOzs7OztOOzs7OzsKKzE3QkU7S0hNRVIgVk9XRUwgU0lHTiBPRTtNYzswO0w7Ozs7O047Ozs7OworMTdCRjtLSE1FUiBWT1dFTCBTSUdOIFlBO01jOzA7TDs7Ozs7Tjs7Ozs7CisxN0MwO0tITUVSIFZPV0VMIFNJR04gSUU7TWM7MDtMOzs7OztOOzs7OzsKKzE3QzE7S0hNRVIgVk9XRUwgU0lHTiBFO01jOzA7TDs7Ozs7Tjs7Ozs7CisxN0MyO0tITUVSIFZPV0VMIFNJR04gQUU7TWM7MDtMOzs7OztOOzs7OzsKKzE3QzM7S0hNRVIgVk9XRUwgU0lHTiBBSTtNYzswO0w7Ozs7O047Ozs7OworMTdDNDtLSE1FUiBWT1dFTCBTSUdOIE9PO01jOzA7TDs7Ozs7Tjs7Ozs7CisxN0M1O0tITUVSIFZPV0VMIFNJR04gQVU7TWM7MDtMOzs7OztOOzs7OzsKKzE3QzY7S0hNRVIgU0lHTiBOSUtBSElUO01uOzA7TlNNOzs7OztOOzs7OzsKKzE3Qzc7S0hNRVIgU0lHTiBSRUFITVVLO01jOzA7TDs7Ozs7Tjs7Ozs7CisxN0M4O0tITUVSIFNJR04gWVVVS0FMRUFQSU5UVTtNYzswO0w7Ozs7O047Ozs7OworMTdDOTtLSE1FUiBTSUdOIE1VVVNJS0FUT0FOO01uOzA7TlNNOzs7OztOOzs7OzsKKzE3Q0E7S0hNRVIgU0lHTiBUUklJU0FQO01uOzA7TlNNOzs7OztOOzs7OzsKKzE3Q0I7S0hNRVIgU0lHTiBCQU5UT0M7TW47MDtOU007Ozs7O047Ozs7OworMTdDQztLSE1FUiBTSUdOIFJPQkFUO01uOzA7TlNNOzs7OztOOzs7OzsKKzE3Q0Q7S0hNRVIgU0lHTiBUT0FOREFLSElBVDtNbjswO05TTTs7Ozs7Tjs7Ozs7CisxN0NFO0tITUVSIFNJR04gS0FLQUJBVDtNbjswO05TTTs7Ozs7Tjs7Ozs7CisxN0NGO0tITUVSIFNJR04gQUhTREE7TW47MDtOU007Ozs7O047Ozs7OworMTdEMDtLSE1FUiBTSUdOIFNBTVlPSyBTQU5OWUE7TW47MDtOU007Ozs7O047Ozs7OworMTdEMTtLSE1FUiBTSUdOIFZJUklBTTtNbjswO05TTTs7Ozs7Tjs7Ozs7CisxN0QyO0tITUVSIFNJR04gQ09FTkc7TW47OTtOU007Ozs7O047Ozs7OworMTdEMztLSE1FUiBTSUdOIEJBVEhBTUFTQVQ7TW47MDtOU007Ozs7O047Ozs7OworMTdENDtLSE1FUiBTSUdOIEtIQU47UG87MDtMOzs7OztOOzs7OzsKKzE3RDU7S0hNRVIgU0lHTiBCQVJJWU9PU0FOO1BvOzA7TDs7Ozs7Tjs7Ozs7CisxN0Q2O0tITUVSIFNJR04gQ0FNTlVDIFBJSSBLVVVIO1BvOzA7TDs7Ozs7Tjs7Ozs7CisxN0Q3O0tITUVSIFNJR04gTEVLIFRPTztMbTswO0w7Ozs7O047Ozs7OworMTdEODtLSE1FUiBTSUdOIEJFWVlBTDtQbzswO0w7Ozs7O047Ozs7OworMTdEOTtLSE1FUiBTSUdOIFBITkFFSyBNVUFOO1BvOzA7TDs7Ozs7Tjs7Ozs7CisxN0RBO0tITUVSIFNJR04gS09PTVVVVDtQbzswO0w7Ozs7O047Ozs7OworMTdEQjtLSE1FUiBDVVJSRU5DWSBTWU1CT0wgUklFTDtTYzswO0VUOzs7OztOOzs7OzsKKzE3REM7S0hNRVIgU0lHTiBBVkFLUkFIQVNBTllBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxN0UwO0tITUVSIERJR0lUIFpFUk87TmQ7MDtMOzswOzA7MDtOOzs7OzsKKzE3RTE7S0hNRVIgRElHSVQgT05FO05kOzA7TDs7MTsxOzE7Tjs7Ozs7CisxN0UyO0tITUVSIERJR0lUIFRXTztOZDswO0w7OzI7MjsyO047Ozs7OworMTdFMztLSE1FUiBESUdJVCBUSFJFRTtOZDswO0w7OzM7MzszO047Ozs7OworMTdFNDtLSE1FUiBESUdJVCBGT1VSO05kOzA7TDs7NDs0OzQ7Tjs7Ozs7CisxN0U1O0tITUVSIERJR0lUIEZJVkU7TmQ7MDtMOzs1OzU7NTtOOzs7OzsKKzE3RTY7S0hNRVIgRElHSVQgU0lYO05kOzA7TDs7Njs2OzY7Tjs7Ozs7CisxN0U3O0tITUVSIERJR0lUIFNFVkVOO05kOzA7TDs7Nzs3Ozc7Tjs7Ozs7CisxN0U4O0tITUVSIERJR0lUIEVJR0hUO05kOzA7TDs7ODs4Ozg7Tjs7Ozs7CisxN0U5O0tITUVSIERJR0lUIE5JTkU7TmQ7MDtMOzs5Ozk7OTtOOzs7OzsKKzE4MDA7TU9OR09MSUFOIEJJUkdBO1BvOzA7T047Ozs7O047Ozs7OworMTgwMTtNT05HT0xJQU4gRUxMSVBTSVM7UG87MDtPTjs7Ozs7Tjs7Ozs7CisxODAyO01PTkdPTElBTiBDT01NQTtQbzswO09OOzs7OztOOzs7OzsKKzE4MDM7TU9OR09MSUFOIEZVTEwgU1RPUDtQbzswO09OOzs7OztOOzs7OzsKKzE4MDQ7TU9OR09MSUFOIENPTE9OO1BvOzA7T047Ozs7O047Ozs7OworMTgwNTtNT05HT0xJQU4gRk9VUiBET1RTO1BvOzA7T047Ozs7O047Ozs7OworMTgwNjtNT05HT0xJQU4gVE9ETyBTT0ZUIEhZUEhFTjtQZDswO09OOzs7OztOOzs7OzsKKzE4MDc7TU9OR09MSUFOIFNJQkUgU1lMTEFCTEUgQk9VTkRBUlkgTUFSS0VSO1BvOzA7T047Ozs7O047Ozs7OworMTgwODtNT05HT0xJQU4gTUFOQ0hVIENPTU1BO1BvOzA7T047Ozs7O047Ozs7OworMTgwOTtNT05HT0xJQU4gTUFOQ0hVIEZVTEwgU1RPUDtQbzswO09OOzs7OztOOzs7OzsKKzE4MEE7TU9OR09MSUFOIE5JUlVHVTtQbzswO09OOzs7OztOOzs7OzsKKzE4MEI7TU9OR09MSUFOIEZSRUUgVkFSSUFUSU9OIFNFTEVDVE9SIE9ORTtNbjswO05TTTs7Ozs7Tjs7Ozs7CisxODBDO01PTkdPTElBTiBGUkVFIFZBUklBVElPTiBTRUxFQ1RPUiBUV087TW47MDtOU007Ozs7O047Ozs7OworMTgwRDtNT05HT0xJQU4gRlJFRSBWQVJJQVRJT04gU0VMRUNUT1IgVEhSRUU7TW47MDtOU007Ozs7O047Ozs7OworMTgwRTtNT05HT0xJQU4gVk9XRUwgU0VQQVJBVE9SO0NmOzA7Qk47Ozs7O047Ozs7OworMTgxMDtNT05HT0xJQU4gRElHSVQgWkVSTztOZDswO0w7OzA7MDswO047Ozs7OworMTgxMTtNT05HT0xJQU4gRElHSVQgT05FO05kOzA7TDs7MTsxOzE7Tjs7Ozs7CisxODEyO01PTkdPTElBTiBESUdJVCBUV087TmQ7MDtMOzsyOzI7MjtOOzs7OzsKKzE4MTM7TU9OR09MSUFOIERJR0lUIFRIUkVFO05kOzA7TDs7MzszOzM7Tjs7Ozs7CisxODE0O01PTkdPTElBTiBESUdJVCBGT1VSO05kOzA7TDs7NDs0OzQ7Tjs7Ozs7CisxODE1O01PTkdPTElBTiBESUdJVCBGSVZFO05kOzA7TDs7NTs1OzU7Tjs7Ozs7CisxODE2O01PTkdPTElBTiBESUdJVCBTSVg7TmQ7MDtMOzs2OzY7NjtOOzs7OzsKKzE4MTc7TU9OR09MSUFOIERJR0lUIFNFVkVOO05kOzA7TDs7Nzs3Ozc7Tjs7Ozs7CisxODE4O01PTkdPTElBTiBESUdJVCBFSUdIVDtOZDswO0w7Ozg7ODs4O047Ozs7OworMTgxOTtNT05HT0xJQU4gRElHSVQgTklORTtOZDswO0w7Ozk7OTs5O047Ozs7OworMTgyMDtNT05HT0xJQU4gTEVUVEVSIEE7TG87MDtMOzs7OztOOzs7OzsKKzE4MjE7TU9OR09MSUFOIExFVFRFUiBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODIyO01PTkdPTElBTiBMRVRURVIgSTtMbzswO0w7Ozs7O047Ozs7OworMTgyMztNT05HT0xJQU4gTEVUVEVSIE87TG87MDtMOzs7OztOOzs7OzsKKzE4MjQ7TU9OR09MSUFOIExFVFRFUiBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODI1O01PTkdPTElBTiBMRVRURVIgT0U7TG87MDtMOzs7OztOOzs7OzsKKzE4MjY7TU9OR09MSUFOIExFVFRFUiBVRTtMbzswO0w7Ozs7O047Ozs7OworMTgyNztNT05HT0xJQU4gTEVUVEVSIEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODI4O01PTkdPTElBTiBMRVRURVIgTkE7TG87MDtMOzs7OztOOzs7OzsKKzE4Mjk7TU9OR09MSUFOIExFVFRFUiBBTkc7TG87MDtMOzs7OztOOzs7OzsKKzE4MkE7TU9OR09MSUFOIExFVFRFUiBCQTtMbzswO0w7Ozs7O047Ozs7OworMTgyQjtNT05HT0xJQU4gTEVUVEVSIFBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODJDO01PTkdPTElBTiBMRVRURVIgUUE7TG87MDtMOzs7OztOOzs7OzsKKzE4MkQ7TU9OR09MSUFOIExFVFRFUiBHQTtMbzswO0w7Ozs7O047Ozs7OworMTgyRTtNT05HT0xJQU4gTEVUVEVSIE1BO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODJGO01PTkdPTElBTiBMRVRURVIgTEE7TG87MDtMOzs7OztOOzs7OzsKKzE4MzA7TU9OR09MSUFOIExFVFRFUiBTQTtMbzswO0w7Ozs7O047Ozs7OworMTgzMTtNT05HT0xJQU4gTEVUVEVSIFNIQTtMbzswO0w7Ozs7O047Ozs7OworMTgzMjtNT05HT0xJQU4gTEVUVEVSIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODMzO01PTkdPTElBTiBMRVRURVIgREE7TG87MDtMOzs7OztOOzs7OzsKKzE4MzQ7TU9OR09MSUFOIExFVFRFUiBDSEE7TG87MDtMOzs7OztOOzs7OzsKKzE4MzU7TU9OR09MSUFOIExFVFRFUiBKQTtMbzswO0w7Ozs7O047Ozs7OworMTgzNjtNT05HT0xJQU4gTEVUVEVSIFlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODM3O01PTkdPTElBTiBMRVRURVIgUkE7TG87MDtMOzs7OztOOzs7OzsKKzE4Mzg7TU9OR09MSUFOIExFVFRFUiBXQTtMbzswO0w7Ozs7O047Ozs7OworMTgzOTtNT05HT0xJQU4gTEVUVEVSIEZBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODNBO01PTkdPTElBTiBMRVRURVIgS0E7TG87MDtMOzs7OztOOzs7OzsKKzE4M0I7TU9OR09MSUFOIExFVFRFUiBLSEE7TG87MDtMOzs7OztOOzs7OzsKKzE4M0M7TU9OR09MSUFOIExFVFRFUiBUU0E7TG87MDtMOzs7OztOOzs7OzsKKzE4M0Q7TU9OR09MSUFOIExFVFRFUiBaQTtMbzswO0w7Ozs7O047Ozs7OworMTgzRTtNT05HT0xJQU4gTEVUVEVSIEhBQTtMbzswO0w7Ozs7O047Ozs7OworMTgzRjtNT05HT0xJQU4gTEVUVEVSIFpSQTtMbzswO0w7Ozs7O047Ozs7OworMTg0MDtNT05HT0xJQU4gTEVUVEVSIExIQTtMbzswO0w7Ozs7O047Ozs7OworMTg0MTtNT05HT0xJQU4gTEVUVEVSIFpISTtMbzswO0w7Ozs7O047Ozs7OworMTg0MjtNT05HT0xJQU4gTEVUVEVSIENISTtMbzswO0w7Ozs7O047Ozs7OworMTg0MztNT05HT0xJQU4gTEVUVEVSIFRPRE8gTE9ORyBWT1dFTCBTSUdOO0xtOzA7TDs7Ozs7Tjs7Ozs7CisxODQ0O01PTkdPTElBTiBMRVRURVIgVE9ETyBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODQ1O01PTkdPTElBTiBMRVRURVIgVE9ETyBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODQ2O01PTkdPTElBTiBMRVRURVIgVE9ETyBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODQ3O01PTkdPTElBTiBMRVRURVIgVE9ETyBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODQ4O01PTkdPTElBTiBMRVRURVIgVE9ETyBPRTtMbzswO0w7Ozs7O047Ozs7OworMTg0OTtNT05HT0xJQU4gTEVUVEVSIFRPRE8gVUU7TG87MDtMOzs7OztOOzs7OzsKKzE4NEE7TU9OR09MSUFOIExFVFRFUiBUT0RPIEFORztMbzswO0w7Ozs7O047Ozs7OworMTg0QjtNT05HT0xJQU4gTEVUVEVSIFRPRE8gQkE7TG87MDtMOzs7OztOOzs7OzsKKzE4NEM7TU9OR09MSUFOIExFVFRFUiBUT0RPIFBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODREO01PTkdPTElBTiBMRVRURVIgVE9ETyBRQTtMbzswO0w7Ozs7O047Ozs7OworMTg0RTtNT05HT0xJQU4gTEVUVEVSIFRPRE8gR0E7TG87MDtMOzs7OztOOzs7OzsKKzE4NEY7TU9OR09MSUFOIExFVFRFUiBUT0RPIE1BO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODUwO01PTkdPTElBTiBMRVRURVIgVE9ETyBUQTtMbzswO0w7Ozs7O047Ozs7OworMTg1MTtNT05HT0xJQU4gTEVUVEVSIFRPRE8gREE7TG87MDtMOzs7OztOOzs7OzsKKzE4NTI7TU9OR09MSUFOIExFVFRFUiBUT0RPIENIQTtMbzswO0w7Ozs7O047Ozs7OworMTg1MztNT05HT0xJQU4gTEVUVEVSIFRPRE8gSkE7TG87MDtMOzs7OztOOzs7OzsKKzE4NTQ7TU9OR09MSUFOIExFVFRFUiBUT0RPIFRTQTtMbzswO0w7Ozs7O047Ozs7OworMTg1NTtNT05HT0xJQU4gTEVUVEVSIFRPRE8gWUE7TG87MDtMOzs7OztOOzs7OzsKKzE4NTY7TU9OR09MSUFOIExFVFRFUiBUT0RPIFdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODU3O01PTkdPTElBTiBMRVRURVIgVE9ETyBLQTtMbzswO0w7Ozs7O047Ozs7OworMTg1ODtNT05HT0xJQU4gTEVUVEVSIFRPRE8gR0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODU5O01PTkdPTElBTiBMRVRURVIgVE9ETyBIQUE7TG87MDtMOzs7OztOOzs7OzsKKzE4NUE7TU9OR09MSUFOIExFVFRFUiBUT0RPIEpJQTtMbzswO0w7Ozs7O047Ozs7OworMTg1QjtNT05HT0xJQU4gTEVUVEVSIFRPRE8gTklBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODVDO01PTkdPTElBTiBMRVRURVIgVE9ETyBEWkE7TG87MDtMOzs7OztOOzs7OzsKKzE4NUQ7TU9OR09MSUFOIExFVFRFUiBTSUJFIEU7TG87MDtMOzs7OztOOzs7OzsKKzE4NUU7TU9OR09MSUFOIExFVFRFUiBTSUJFIEk7TG87MDtMOzs7OztOOzs7OzsKKzE4NUY7TU9OR09MSUFOIExFVFRFUiBTSUJFIElZO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODYwO01PTkdPTElBTiBMRVRURVIgU0lCRSBVRTtMbzswO0w7Ozs7O047Ozs7OworMTg2MTtNT05HT0xJQU4gTEVUVEVSIFNJQkUgVTtMbzswO0w7Ozs7O047Ozs7OworMTg2MjtNT05HT0xJQU4gTEVUVEVSIFNJQkUgQU5HO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODYzO01PTkdPTElBTiBMRVRURVIgU0lCRSBLQTtMbzswO0w7Ozs7O047Ozs7OworMTg2NDtNT05HT0xJQU4gTEVUVEVSIFNJQkUgR0E7TG87MDtMOzs7OztOOzs7OzsKKzE4NjU7TU9OR09MSUFOIExFVFRFUiBTSUJFIEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODY2O01PTkdPTElBTiBMRVRURVIgU0lCRSBQQTtMbzswO0w7Ozs7O047Ozs7OworMTg2NztNT05HT0xJQU4gTEVUVEVSIFNJQkUgU0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODY4O01PTkdPTElBTiBMRVRURVIgU0lCRSBUQTtMbzswO0w7Ozs7O047Ozs7OworMTg2OTtNT05HT0xJQU4gTEVUVEVSIFNJQkUgREE7TG87MDtMOzs7OztOOzs7OzsKKzE4NkE7TU9OR09MSUFOIExFVFRFUiBTSUJFIEpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODZCO01PTkdPTElBTiBMRVRURVIgU0lCRSBGQTtMbzswO0w7Ozs7O047Ozs7OworMTg2QztNT05HT0xJQU4gTEVUVEVSIFNJQkUgR0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODZEO01PTkdPTElBTiBMRVRURVIgU0lCRSBIQUE7TG87MDtMOzs7OztOOzs7OzsKKzE4NkU7TU9OR09MSUFOIExFVFRFUiBTSUJFIFRTQTtMbzswO0w7Ozs7O047Ozs7OworMTg2RjtNT05HT0xJQU4gTEVUVEVSIFNJQkUgWkE7TG87MDtMOzs7OztOOzs7OzsKKzE4NzA7TU9OR09MSUFOIExFVFRFUiBTSUJFIFJBQTtMbzswO0w7Ozs7O047Ozs7OworMTg3MTtNT05HT0xJQU4gTEVUVEVSIFNJQkUgQ0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODcyO01PTkdPTElBTiBMRVRURVIgU0lCRSBaSEE7TG87MDtMOzs7OztOOzs7OzsKKzE4NzM7TU9OR09MSUFOIExFVFRFUiBNQU5DSFUgSTtMbzswO0w7Ozs7O047Ozs7OworMTg3NDtNT05HT0xJQU4gTEVUVEVSIE1BTkNIVSBLQTtMbzswO0w7Ozs7O047Ozs7OworMTg3NTtNT05HT0xJQU4gTEVUVEVSIE1BTkNIVSBSQTtMbzswO0w7Ozs7O047Ozs7OworMTg3NjtNT05HT0xJQU4gTEVUVEVSIE1BTkNIVSBGQTtMbzswO0w7Ozs7O047Ozs7OworMTg3NztNT05HT0xJQU4gTEVUVEVSIE1BTkNIVSBaSEE7TG87MDtMOzs7OztOOzs7OzsKKzE4ODA7TU9OR09MSUFOIExFVFRFUiBBTEkgR0FMSSBBTlVTVkFSQSBPTkU7TG87MDtMOzs7OztOOzs7OzsKKzE4ODE7TU9OR09MSUFOIExFVFRFUiBBTEkgR0FMSSBWSVNBUkdBIE9ORTtMbzswO0w7Ozs7O047Ozs7OworMTg4MjtNT05HT0xJQU4gTEVUVEVSIEFMSSBHQUxJIERBTUFSVTtMbzswO0w7Ozs7O047Ozs7OworMTg4MztNT05HT0xJQU4gTEVUVEVSIEFMSSBHQUxJIFVCQURBTUE7TG87MDtMOzs7OztOOzs7OzsKKzE4ODQ7TU9OR09MSUFOIExFVFRFUiBBTEkgR0FMSSBJTlZFUlRFRCBVQkFEQU1BO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODg1O01PTkdPTElBTiBMRVRURVIgQUxJIEdBTEkgQkFMVURBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODg2O01PTkdPTElBTiBMRVRURVIgQUxJIEdBTEkgVEhSRUUgQkFMVURBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODg3O01PTkdPTElBTiBMRVRURVIgQUxJIEdBTEkgQTtMbzswO0w7Ozs7O047Ozs7OworMTg4ODtNT05HT0xJQU4gTEVUVEVSIEFMSSBHQUxJIEk7TG87MDtMOzs7OztOOzs7OzsKKzE4ODk7TU9OR09MSUFOIExFVFRFUiBBTEkgR0FMSSBLQTtMbzswO0w7Ozs7O047Ozs7OworMTg4QTtNT05HT0xJQU4gTEVUVEVSIEFMSSBHQUxJIE5HQTtMbzswO0w7Ozs7O047Ozs7OworMTg4QjtNT05HT0xJQU4gTEVUVEVSIEFMSSBHQUxJIENBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODhDO01PTkdPTElBTiBMRVRURVIgQUxJIEdBTEkgVFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODhEO01PTkdPTElBTiBMRVRURVIgQUxJIEdBTEkgVFRIQTtMbzswO0w7Ozs7O047Ozs7OworMTg4RTtNT05HT0xJQU4gTEVUVEVSIEFMSSBHQUxJIEREQTtMbzswO0w7Ozs7O047Ozs7OworMTg4RjtNT05HT0xJQU4gTEVUVEVSIEFMSSBHQUxJIE5OQTtMbzswO0w7Ozs7O047Ozs7OworMTg5MDtNT05HT0xJQU4gTEVUVEVSIEFMSSBHQUxJIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODkxO01PTkdPTElBTiBMRVRURVIgQUxJIEdBTEkgREE7TG87MDtMOzs7OztOOzs7OzsKKzE4OTI7TU9OR09MSUFOIExFVFRFUiBBTEkgR0FMSSBQQTtMbzswO0w7Ozs7O047Ozs7OworMTg5MztNT05HT0xJQU4gTEVUVEVSIEFMSSBHQUxJIFBIQTtMbzswO0w7Ozs7O047Ozs7OworMTg5NDtNT05HT0xJQU4gTEVUVEVSIEFMSSBHQUxJIFNTQTtMbzswO0w7Ozs7O047Ozs7OworMTg5NTtNT05HT0xJQU4gTEVUVEVSIEFMSSBHQUxJIFpIQTtMbzswO0w7Ozs7O047Ozs7OworMTg5NjtNT05HT0xJQU4gTEVUVEVSIEFMSSBHQUxJIFpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODk3O01PTkdPTElBTiBMRVRURVIgQUxJIEdBTEkgQUg7TG87MDtMOzs7OztOOzs7OzsKKzE4OTg7TU9OR09MSUFOIExFVFRFUiBUT0RPIEFMSSBHQUxJIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODk5O01PTkdPTElBTiBMRVRURVIgVE9ETyBBTEkgR0FMSSBaSEE7TG87MDtMOzs7OztOOzs7OzsKKzE4OUE7TU9OR09MSUFOIExFVFRFUiBNQU5DSFUgQUxJIEdBTEkgR0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODlCO01PTkdPTElBTiBMRVRURVIgTUFOQ0hVIEFMSSBHQUxJIE5HQTtMbzswO0w7Ozs7O047Ozs7OworMTg5QztNT05HT0xJQU4gTEVUVEVSIE1BTkNIVSBBTEkgR0FMSSBDQTtMbzswO0w7Ozs7O047Ozs7OworMTg5RDtNT05HT0xJQU4gTEVUVEVSIE1BTkNIVSBBTEkgR0FMSSBKSEE7TG87MDtMOzs7OztOOzs7OzsKKzE4OUU7TU9OR09MSUFOIExFVFRFUiBNQU5DSFUgQUxJIEdBTEkgVFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODlGO01PTkdPTElBTiBMRVRURVIgTUFOQ0hVIEFMSSBHQUxJIERESEE7TG87MDtMOzs7OztOOzs7OzsKKzE4QTA7TU9OR09MSUFOIExFVFRFUiBNQU5DSFUgQUxJIEdBTEkgVEE7TG87MDtMOzs7OztOOzs7OzsKKzE4QTE7TU9OR09MSUFOIExFVFRFUiBNQU5DSFUgQUxJIEdBTEkgREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxOEEyO01PTkdPTElBTiBMRVRURVIgTUFOQ0hVIEFMSSBHQUxJIFNTQTtMbzswO0w7Ozs7O047Ozs7OworMThBMztNT05HT0xJQU4gTEVUVEVSIE1BTkNIVSBBTEkgR0FMSSBDWUE7TG87MDtMOzs7OztOOzs7OzsKKzE4QTQ7TU9OR09MSUFOIExFVFRFUiBNQU5DSFUgQUxJIEdBTEkgWkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxOEE1O01PTkdPTElBTiBMRVRURVIgTUFOQ0hVIEFMSSBHQUxJIFpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxOEE2O01PTkdPTElBTiBMRVRURVIgQUxJIEdBTEkgSEFMRiBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxOEE3O01PTkdPTElBTiBMRVRURVIgQUxJIEdBTEkgSEFMRiBZQTtMbzswO0w7Ozs7O047Ozs7OworMThBODtNT05HT0xJQU4gTEVUVEVSIE1BTkNIVSBBTEkgR0FMSSBCSEE7TG87MDtMOzs7OztOOzs7OzsKKzE4QTk7TU9OR09MSUFOIExFVFRFUiBBTEkgR0FMSSBEQUdBTEdBO01uOzIyODtOU007Ozs7O047Ozs7OworMUUwMDtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggUklORyBCRUxPVztMdTswO0w7MDA0MSAwMzI1Ozs7O047Ozs7MUUwMTsKKzFFMDE7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBSSU5HIEJFTE9XO0xsOzA7TDswMDYxIDAzMjU7Ozs7Tjs7OzFFMDA7OzFFMDAKKzFFMDI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQiBXSVRIIERPVCBBQk9WRTtMdTswO0w7MDA0MiAwMzA3Ozs7O047Ozs7MUUwMzsKKzFFMDM7TEFUSU4gU01BTEwgTEVUVEVSIEIgV0lUSCBET1QgQUJPVkU7TGw7MDtMOzAwNjIgMDMwNzs7OztOOzs7MUUwMjs7MUUwMgorMUUwNDtMQVRJTiBDQVBJVEFMIExFVFRFUiBCIFdJVEggRE9UIEJFTE9XO0x1OzA7TDswMDQyIDAzMjM7Ozs7Tjs7OzsxRTA1OworMUUwNTtMQVRJTiBTTUFMTCBMRVRURVIgQiBXSVRIIERPVCBCRUxPVztMbDswO0w7MDA2MiAwMzIzOzs7O047OzsxRTA0OzsxRTA0CisxRTA2O0xBVElOIENBUElUQUwgTEVUVEVSIEIgV0lUSCBMSU5FIEJFTE9XO0x1OzA7TDswMDQyIDAzMzE7Ozs7Tjs7OzsxRTA3OworMUUwNztMQVRJTiBTTUFMTCBMRVRURVIgQiBXSVRIIExJTkUgQkVMT1c7TGw7MDtMOzAwNjIgMDMzMTs7OztOOzs7MUUwNjs7MUUwNgorMUUwODtMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQSBBTkQgQUNVVEU7THU7MDtMOzAwQzcgMDMwMTs7OztOOzs7OzFFMDk7CisxRTA5O0xBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0VESUxMQSBBTkQgQUNVVEU7TGw7MDtMOzAwRTcgMDMwMTs7OztOOzs7MUUwODs7MUUwOAorMUUwQTtMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggRE9UIEFCT1ZFO0x1OzA7TDswMDQ0IDAzMDc7Ozs7Tjs7OzsxRTBCOworMUUwQjtMQVRJTiBTTUFMTCBMRVRURVIgRCBXSVRIIERPVCBBQk9WRTtMbDswO0w7MDA2NCAwMzA3Ozs7O047OzsxRTBBOzsxRTBBCisxRTBDO0xBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNDQgMDMyMzs7OztOOzs7OzFFMEQ7CisxRTBEO0xBVElOIFNNQUxMIExFVFRFUiBEIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDY0IDAzMjM7Ozs7Tjs7OzFFMEM7OzFFMEMKKzFFMEU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIExJTkUgQkVMT1c7THU7MDtMOzAwNDQgMDMzMTs7OztOOzs7OzFFMEY7CisxRTBGO0xBVElOIFNNQUxMIExFVFRFUiBEIFdJVEggTElORSBCRUxPVztMbDswO0w7MDA2NCAwMzMxOzs7O047OzsxRTBFOzsxRTBFCisxRTEwO0xBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBDRURJTExBO0x1OzA7TDswMDQ0IDAzMjc7Ozs7Tjs7OzsxRTExOworMUUxMTtMQVRJTiBTTUFMTCBMRVRURVIgRCBXSVRIIENFRElMTEE7TGw7MDtMOzAwNjQgMDMyNzs7OztOOzs7MUUxMDs7MUUxMAorMUUxMjtMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggQ0lSQ1VNRkxFWCBCRUxPVztMdTswO0w7MDA0NCAwMzJEOzs7O047Ozs7MUUxMzsKKzFFMTM7TEFUSU4gU01BTEwgTEVUVEVSIEQgV0lUSCBDSVJDVU1GTEVYIEJFTE9XO0xsOzA7TDswMDY0IDAzMkQ7Ozs7Tjs7OzFFMTI7OzFFMTIKKzFFMTQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIE1BQ1JPTiBBTkQgR1JBVkU7THU7MDtMOzAxMTIgMDMwMDs7OztOOzs7OzFFMTU7CisxRTE1O0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggTUFDUk9OIEFORCBHUkFWRTtMbDswO0w7MDExMyAwMzAwOzs7O047OzsxRTE0OzsxRTE0CisxRTE2O0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBNQUNST04gQU5EIEFDVVRFO0x1OzA7TDswMTEyIDAzMDE7Ozs7Tjs7OzsxRTE3OworMUUxNztMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIE1BQ1JPTiBBTkQgQUNVVEU7TGw7MDtMOzAxMTMgMDMwMTs7OztOOzs7MUUxNjs7MUUxNgorMUUxODtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWCBCRUxPVztMdTswO0w7MDA0NSAwMzJEOzs7O047Ozs7MUUxOTsKKzFFMTk7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYIEJFTE9XO0xsOzA7TDswMDY1IDAzMkQ7Ozs7Tjs7OzFFMTg7OzFFMTgKKzFFMUE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIFRJTERFIEJFTE9XO0x1OzA7TDswMDQ1IDAzMzA7Ozs7Tjs7OzsxRTFCOworMUUxQjtMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIFRJTERFIEJFTE9XO0xsOzA7TDswMDY1IDAzMzA7Ozs7Tjs7OzFFMUE7OzFFMUEKKzFFMUM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENFRElMTEEgQU5EIEJSRVZFO0x1OzA7TDswMjI4IDAzMDY7Ozs7Tjs7OzsxRTFEOworMUUxRDtMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENFRElMTEEgQU5EIEJSRVZFO0xsOzA7TDswMjI5IDAzMDY7Ozs7Tjs7OzFFMUM7OzFFMUMKKzFFMUU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRiBXSVRIIERPVCBBQk9WRTtMdTswO0w7MDA0NiAwMzA3Ozs7O047Ozs7MUUxRjsKKzFFMUY7TEFUSU4gU01BTEwgTEVUVEVSIEYgV0lUSCBET1QgQUJPVkU7TGw7MDtMOzAwNjYgMDMwNzs7OztOOzs7MUUxRTs7MUUxRQorMUUyMDtMQVRJTiBDQVBJVEFMIExFVFRFUiBHIFdJVEggTUFDUk9OO0x1OzA7TDswMDQ3IDAzMDQ7Ozs7Tjs7OzsxRTIxOworMUUyMTtMQVRJTiBTTUFMTCBMRVRURVIgRyBXSVRIIE1BQ1JPTjtMbDswO0w7MDA2NyAwMzA0Ozs7O047OzsxRTIwOzsxRTIwCisxRTIyO0xBVElOIENBUElUQUwgTEVUVEVSIEggV0lUSCBET1QgQUJPVkU7THU7MDtMOzAwNDggMDMwNzs7OztOOzs7OzFFMjM7CisxRTIzO0xBVElOIFNNQUxMIExFVFRFUiBIIFdJVEggRE9UIEFCT1ZFO0xsOzA7TDswMDY4IDAzMDc7Ozs7Tjs7OzFFMjI7OzFFMjIKKzFFMjQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSCBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA0OCAwMzIzOzs7O047Ozs7MUUyNTsKKzFFMjU7TEFUSU4gU01BTEwgTEVUVEVSIEggV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNjggMDMyMzs7OztOOzs7MUUyNDs7MUUyNAorMUUyNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBIIFdJVEggRElBRVJFU0lTO0x1OzA7TDswMDQ4IDAzMDg7Ozs7Tjs7OzsxRTI3OworMUUyNztMQVRJTiBTTUFMTCBMRVRURVIgSCBXSVRIIERJQUVSRVNJUztMbDswO0w7MDA2OCAwMzA4Ozs7O047OzsxRTI2OzsxRTI2CisxRTI4O0xBVElOIENBUElUQUwgTEVUVEVSIEggV0lUSCBDRURJTExBO0x1OzA7TDswMDQ4IDAzMjc7Ozs7Tjs7OzsxRTI5OworMUUyOTtMQVRJTiBTTUFMTCBMRVRURVIgSCBXSVRIIENFRElMTEE7TGw7MDtMOzAwNjggMDMyNzs7OztOOzs7MUUyODs7MUUyOAorMUUyQTtMQVRJTiBDQVBJVEFMIExFVFRFUiBIIFdJVEggQlJFVkUgQkVMT1c7THU7MDtMOzAwNDggMDMyRTs7OztOOzs7OzFFMkI7CisxRTJCO0xBVElOIFNNQUxMIExFVFRFUiBIIFdJVEggQlJFVkUgQkVMT1c7TGw7MDtMOzAwNjggMDMyRTs7OztOOzs7MUUyQTs7MUUyQQorMUUyQztMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggVElMREUgQkVMT1c7THU7MDtMOzAwNDkgMDMzMDs7OztOOzs7OzFFMkQ7CisxRTJEO0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggVElMREUgQkVMT1c7TGw7MDtMOzAwNjkgMDMzMDs7OztOOzs7MUUyQzs7MUUyQworMUUyRTtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTIEFORCBBQ1VURTtMdTswO0w7MDBDRiAwMzAxOzs7O047Ozs7MUUyRjsKKzFFMkY7TEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMgQU5EIEFDVVRFO0xsOzA7TDswMEVGIDAzMDE7Ozs7Tjs7OzFFMkU7OzFFMkUKKzFFMzA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSyBXSVRIIEFDVVRFO0x1OzA7TDswMDRCIDAzMDE7Ozs7Tjs7OzsxRTMxOworMUUzMTtMQVRJTiBTTUFMTCBMRVRURVIgSyBXSVRIIEFDVVRFO0xsOzA7TDswMDZCIDAzMDE7Ozs7Tjs7OzFFMzA7OzFFMzAKKzFFMzI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSyBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA0QiAwMzIzOzs7O047Ozs7MUUzMzsKKzFFMzM7TEFUSU4gU01BTEwgTEVUVEVSIEsgV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNkIgMDMyMzs7OztOOzs7MUUzMjs7MUUzMgorMUUzNDtMQVRJTiBDQVBJVEFMIExFVFRFUiBLIFdJVEggTElORSBCRUxPVztMdTswO0w7MDA0QiAwMzMxOzs7O047Ozs7MUUzNTsKKzFFMzU7TEFUSU4gU01BTEwgTEVUVEVSIEsgV0lUSCBMSU5FIEJFTE9XO0xsOzA7TDswMDZCIDAzMzE7Ozs7Tjs7OzFFMzQ7OzFFMzQKKzFFMzY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA0QyAwMzIzOzs7O047Ozs7MUUzNzsKKzFFMzc7TEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNkMgMDMyMzs7OztOOzs7MUUzNjs7MUUzNgorMUUzODtMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggRE9UIEJFTE9XIEFORCBNQUNST047THU7MDtMOzFFMzYgMDMwNDs7OztOOzs7OzFFMzk7CisxRTM5O0xBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggRE9UIEJFTE9XIEFORCBNQUNST047TGw7MDtMOzFFMzcgMDMwNDs7OztOOzs7MUUzODs7MUUzOAorMUUzQTtMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggTElORSBCRUxPVztMdTswO0w7MDA0QyAwMzMxOzs7O047Ozs7MUUzQjsKKzFFM0I7TEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBMSU5FIEJFTE9XO0xsOzA7TDswMDZDIDAzMzE7Ozs7Tjs7OzFFM0E7OzFFM0EKKzFFM0M7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIENJUkNVTUZMRVggQkVMT1c7THU7MDtMOzAwNEMgMDMyRDs7OztOOzs7OzFFM0Q7CisxRTNEO0xBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggQ0lSQ1VNRkxFWCBCRUxPVztMbDswO0w7MDA2QyAwMzJEOzs7O047OzsxRTNDOzsxRTNDCisxRTNFO0xBVElOIENBUElUQUwgTEVUVEVSIE0gV0lUSCBBQ1VURTtMdTswO0w7MDA0RCAwMzAxOzs7O047Ozs7MUUzRjsKKzFFM0Y7TEFUSU4gU01BTEwgTEVUVEVSIE0gV0lUSCBBQ1VURTtMbDswO0w7MDA2RCAwMzAxOzs7O047OzsxRTNFOzsxRTNFCisxRTQwO0xBVElOIENBUElUQUwgTEVUVEVSIE0gV0lUSCBET1QgQUJPVkU7THU7MDtMOzAwNEQgMDMwNzs7OztOOzs7OzFFNDE7CisxRTQxO0xBVElOIFNNQUxMIExFVFRFUiBNIFdJVEggRE9UIEFCT1ZFO0xsOzA7TDswMDZEIDAzMDc7Ozs7Tjs7OzFFNDA7OzFFNDAKKzFFNDI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTSBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA0RCAwMzIzOzs7O047Ozs7MUU0MzsKKzFFNDM7TEFUSU4gU01BTEwgTEVUVEVSIE0gV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNkQgMDMyMzs7OztOOzs7MUU0Mjs7MUU0MgorMUU0NDtMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggRE9UIEFCT1ZFO0x1OzA7TDswMDRFIDAzMDc7Ozs7Tjs7OzsxRTQ1OworMUU0NTtMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIERPVCBBQk9WRTtMbDswO0w7MDA2RSAwMzA3Ozs7O047OzsxRTQ0OzsxRTQ0CisxRTQ2O0xBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNEUgMDMyMzs7OztOOzs7OzFFNDc7CisxRTQ3O0xBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDZFIDAzMjM7Ozs7Tjs7OzFFNDY7OzFFNDYKKzFFNDg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIExJTkUgQkVMT1c7THU7MDtMOzAwNEUgMDMzMTs7OztOOzs7OzFFNDk7CisxRTQ5O0xBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggTElORSBCRUxPVztMbDswO0w7MDA2RSAwMzMxOzs7O047OzsxRTQ4OzsxRTQ4CisxRTRBO0xBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBDSVJDVU1GTEVYIEJFTE9XO0x1OzA7TDswMDRFIDAzMkQ7Ozs7Tjs7OzsxRTRCOworMUU0QjtMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIENJUkNVTUZMRVggQkVMT1c7TGw7MDtMOzAwNkUgMDMyRDs7OztOOzs7MUU0QTs7MUU0QQorMUU0QztMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggVElMREUgQU5EIEFDVVRFO0x1OzA7TDswMEQ1IDAzMDE7Ozs7Tjs7OzsxRTREOworMUU0RDtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFRJTERFIEFORCBBQ1VURTtMbDswO0w7MDBGNSAwMzAxOzs7O047OzsxRTRDOzsxRTRDCisxRTRFO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBUSUxERSBBTkQgRElBRVJFU0lTO0x1OzA7TDswMEQ1IDAzMDg7Ozs7Tjs7OzsxRTRGOworMUU0RjtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFRJTERFIEFORCBESUFFUkVTSVM7TGw7MDtMOzAwRjUgMDMwODs7OztOOzs7MUU0RTs7MUU0RQorMUU1MDtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggTUFDUk9OIEFORCBHUkFWRTtMdTswO0w7MDE0QyAwMzAwOzs7O047Ozs7MUU1MTsKKzFFNTE7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBNQUNST04gQU5EIEdSQVZFO0xsOzA7TDswMTREIDAzMDA7Ozs7Tjs7OzFFNTA7OzFFNTAKKzFFNTI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIE1BQ1JPTiBBTkQgQUNVVEU7THU7MDtMOzAxNEMgMDMwMTs7OztOOzs7OzFFNTM7CisxRTUzO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggTUFDUk9OIEFORCBBQ1VURTtMbDswO0w7MDE0RCAwMzAxOzs7O047OzsxRTUyOzsxRTUyCisxRTU0O0xBVElOIENBUElUQUwgTEVUVEVSIFAgV0lUSCBBQ1VURTtMdTswO0w7MDA1MCAwMzAxOzs7O047Ozs7MUU1NTsKKzFFNTU7TEFUSU4gU01BTEwgTEVUVEVSIFAgV0lUSCBBQ1VURTtMbDswO0w7MDA3MCAwMzAxOzs7O047OzsxRTU0OzsxRTU0CisxRTU2O0xBVElOIENBUElUQUwgTEVUVEVSIFAgV0lUSCBET1QgQUJPVkU7THU7MDtMOzAwNTAgMDMwNzs7OztOOzs7OzFFNTc7CisxRTU3O0xBVElOIFNNQUxMIExFVFRFUiBQIFdJVEggRE9UIEFCT1ZFO0xsOzA7TDswMDcwIDAzMDc7Ozs7Tjs7OzFFNTY7OzFFNTYKKzFFNTg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIERPVCBBQk9WRTtMdTswO0w7MDA1MiAwMzA3Ozs7O047Ozs7MUU1OTsKKzFFNTk7TEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBET1QgQUJPVkU7TGw7MDtMOzAwNzIgMDMwNzs7OztOOzs7MUU1ODs7MUU1OAorMUU1QTtMQVRJTiBDQVBJVEFMIExFVFRFUiBSIFdJVEggRE9UIEJFTE9XO0x1OzA7TDswMDUyIDAzMjM7Ozs7Tjs7OzsxRTVCOworMUU1QjtMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIERPVCBCRUxPVztMbDswO0w7MDA3MiAwMzIzOzs7O047OzsxRTVBOzsxRTVBCisxRTVDO0xBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBET1QgQkVMT1cgQU5EIE1BQ1JPTjtMdTswO0w7MUU1QSAwMzA0Ozs7O047Ozs7MUU1RDsKKzFFNUQ7TEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBET1QgQkVMT1cgQU5EIE1BQ1JPTjtMbDswO0w7MUU1QiAwMzA0Ozs7O047OzsxRTVDOzsxRTVDCisxRTVFO0xBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBMSU5FIEJFTE9XO0x1OzA7TDswMDUyIDAzMzE7Ozs7Tjs7OzsxRTVGOworMUU1RjtMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIExJTkUgQkVMT1c7TGw7MDtMOzAwNzIgMDMzMTs7OztOOzs7MUU1RTs7MUU1RQorMUU2MDtMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggRE9UIEFCT1ZFO0x1OzA7TDswMDUzIDAzMDc7Ozs7Tjs7OzsxRTYxOworMUU2MTtMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIERPVCBBQk9WRTtMbDswO0w7MDA3MyAwMzA3Ozs7O047OzsxRTYwOzsxRTYwCisxRTYyO0xBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNTMgMDMyMzs7OztOOzs7OzFFNjM7CisxRTYzO0xBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDczIDAzMjM7Ozs7Tjs7OzFFNjI7OzFFNjIKKzFFNjQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIEFDVVRFIEFORCBET1QgQUJPVkU7THU7MDtMOzAxNUEgMDMwNzs7OztOOzs7OzFFNjU7CisxRTY1O0xBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQUNVVEUgQU5EIERPVCBBQk9WRTtMbDswO0w7MDE1QiAwMzA3Ozs7O047OzsxRTY0OzsxRTY0CisxRTY2O0xBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBDQVJPTiBBTkQgRE9UIEFCT1ZFO0x1OzA7TDswMTYwIDAzMDc7Ozs7Tjs7OzsxRTY3OworMUU2NztMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIENBUk9OIEFORCBET1QgQUJPVkU7TGw7MDtMOzAxNjEgMDMwNzs7OztOOzs7MUU2Njs7MUU2NgorMUU2ODtMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggRE9UIEJFTE9XIEFORCBET1QgQUJPVkU7THU7MDtMOzFFNjIgMDMwNzs7OztOOzs7OzFFNjk7CisxRTY5O0xBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggRE9UIEJFTE9XIEFORCBET1QgQUJPVkU7TGw7MDtMOzFFNjMgMDMwNzs7OztOOzs7MUU2ODs7MUU2OAorMUU2QTtMQVRJTiBDQVBJVEFMIExFVFRFUiBUIFdJVEggRE9UIEFCT1ZFO0x1OzA7TDswMDU0IDAzMDc7Ozs7Tjs7OzsxRTZCOworMUU2QjtMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIERPVCBBQk9WRTtMbDswO0w7MDA3NCAwMzA3Ozs7O047OzsxRTZBOzsxRTZBCisxRTZDO0xBVElOIENBUElUQUwgTEVUVEVSIFQgV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNTQgMDMyMzs7OztOOzs7OzFFNkQ7CisxRTZEO0xBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDc0IDAzMjM7Ozs7Tjs7OzFFNkM7OzFFNkMKKzFFNkU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBXSVRIIExJTkUgQkVMT1c7THU7MDtMOzAwNTQgMDMzMTs7OztOOzs7OzFFNkY7CisxRTZGO0xBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggTElORSBCRUxPVztMbDswO0w7MDA3NCAwMzMxOzs7O047OzsxRTZFOzsxRTZFCisxRTcwO0xBVElOIENBUElUQUwgTEVUVEVSIFQgV0lUSCBDSVJDVU1GTEVYIEJFTE9XO0x1OzA7TDswMDU0IDAzMkQ7Ozs7Tjs7OzsxRTcxOworMUU3MTtMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIENJUkNVTUZMRVggQkVMT1c7TGw7MDtMOzAwNzQgMDMyRDs7OztOOzs7MUU3MDs7MUU3MAorMUU3MjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTIEJFTE9XO0x1OzA7TDswMDU1IDAzMjQ7Ozs7Tjs7OzsxRTczOworMUU3MztMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUyBCRUxPVztMbDswO0w7MDA3NSAwMzI0Ozs7O047OzsxRTcyOzsxRTcyCisxRTc0O0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBUSUxERSBCRUxPVztMdTswO0w7MDA1NSAwMzMwOzs7O047Ozs7MUU3NTsKKzFFNzU7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBUSUxERSBCRUxPVztMbDswO0w7MDA3NSAwMzMwOzs7O047OzsxRTc0OzsxRTc0CisxRTc2O0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYIEJFTE9XO0x1OzA7TDswMDU1IDAzMkQ7Ozs7Tjs7OzsxRTc3OworMUU3NztMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVggQkVMT1c7TGw7MDtMOzAwNzUgMDMyRDs7OztOOzs7MUU3Njs7MUU3NgorMUU3ODtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggVElMREUgQU5EIEFDVVRFO0x1OzA7TDswMTY4IDAzMDE7Ozs7Tjs7OzsxRTc5OworMUU3OTtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIFRJTERFIEFORCBBQ1VURTtMbDswO0w7MDE2OSAwMzAxOzs7O047OzsxRTc4OzsxRTc4CisxRTdBO0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBNQUNST04gQU5EIERJQUVSRVNJUztMdTswO0w7MDE2QSAwMzA4Ozs7O047Ozs7MUU3QjsKKzFFN0I7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBNQUNST04gQU5EIERJQUVSRVNJUztMbDswO0w7MDE2QiAwMzA4Ozs7O047OzsxRTdBOzsxRTdBCisxRTdDO0xBVElOIENBUElUQUwgTEVUVEVSIFYgV0lUSCBUSUxERTtMdTswO0w7MDA1NiAwMzAzOzs7O047Ozs7MUU3RDsKKzFFN0Q7TEFUSU4gU01BTEwgTEVUVEVSIFYgV0lUSCBUSUxERTtMbDswO0w7MDA3NiAwMzAzOzs7O047OzsxRTdDOzsxRTdDCisxRTdFO0xBVElOIENBUElUQUwgTEVUVEVSIFYgV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNTYgMDMyMzs7OztOOzs7OzFFN0Y7CisxRTdGO0xBVElOIFNNQUxMIExFVFRFUiBWIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDc2IDAzMjM7Ozs7Tjs7OzFFN0U7OzFFN0UKKzFFODA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVyBXSVRIIEdSQVZFO0x1OzA7TDswMDU3IDAzMDA7Ozs7Tjs7OzsxRTgxOworMUU4MTtMQVRJTiBTTUFMTCBMRVRURVIgVyBXSVRIIEdSQVZFO0xsOzA7TDswMDc3IDAzMDA7Ozs7Tjs7OzFFODA7OzFFODAKKzFFODI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVyBXSVRIIEFDVVRFO0x1OzA7TDswMDU3IDAzMDE7Ozs7Tjs7OzsxRTgzOworMUU4MztMQVRJTiBTTUFMTCBMRVRURVIgVyBXSVRIIEFDVVRFO0xsOzA7TDswMDc3IDAzMDE7Ozs7Tjs7OzFFODI7OzFFODIKKzFFODQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVyBXSVRIIERJQUVSRVNJUztMdTswO0w7MDA1NyAwMzA4Ozs7O047Ozs7MUU4NTsKKzFFODU7TEFUSU4gU01BTEwgTEVUVEVSIFcgV0lUSCBESUFFUkVTSVM7TGw7MDtMOzAwNzcgMDMwODs7OztOOzs7MUU4NDs7MUU4NAorMUU4NjtMQVRJTiBDQVBJVEFMIExFVFRFUiBXIFdJVEggRE9UIEFCT1ZFO0x1OzA7TDswMDU3IDAzMDc7Ozs7Tjs7OzsxRTg3OworMUU4NztMQVRJTiBTTUFMTCBMRVRURVIgVyBXSVRIIERPVCBBQk9WRTtMbDswO0w7MDA3NyAwMzA3Ozs7O047OzsxRTg2OzsxRTg2CisxRTg4O0xBVElOIENBUElUQUwgTEVUVEVSIFcgV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNTcgMDMyMzs7OztOOzs7OzFFODk7CisxRTg5O0xBVElOIFNNQUxMIExFVFRFUiBXIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDc3IDAzMjM7Ozs7Tjs7OzFFODg7OzFFODgKKzFFOEE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWCBXSVRIIERPVCBBQk9WRTtMdTswO0w7MDA1OCAwMzA3Ozs7O047Ozs7MUU4QjsKKzFFOEI7TEFUSU4gU01BTEwgTEVUVEVSIFggV0lUSCBET1QgQUJPVkU7TGw7MDtMOzAwNzggMDMwNzs7OztOOzs7MUU4QTs7MUU4QQorMUU4QztMQVRJTiBDQVBJVEFMIExFVFRFUiBYIFdJVEggRElBRVJFU0lTO0x1OzA7TDswMDU4IDAzMDg7Ozs7Tjs7OzsxRThEOworMUU4RDtMQVRJTiBTTUFMTCBMRVRURVIgWCBXSVRIIERJQUVSRVNJUztMbDswO0w7MDA3OCAwMzA4Ozs7O047OzsxRThDOzsxRThDCisxRThFO0xBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBET1QgQUJPVkU7THU7MDtMOzAwNTkgMDMwNzs7OztOOzs7OzFFOEY7CisxRThGO0xBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggRE9UIEFCT1ZFO0xsOzA7TDswMDc5IDAzMDc7Ozs7Tjs7OzFFOEU7OzFFOEUKKzFFOTA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIENJUkNVTUZMRVg7THU7MDtMOzAwNUEgMDMwMjs7OztOOzs7OzFFOTE7CisxRTkxO0xBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggQ0lSQ1VNRkxFWDtMbDswO0w7MDA3QSAwMzAyOzs7O047OzsxRTkwOzsxRTkwCisxRTkyO0xBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNUEgMDMyMzs7OztOOzs7OzFFOTM7CisxRTkzO0xBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDdBIDAzMjM7Ozs7Tjs7OzFFOTI7OzFFOTIKKzFFOTQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIExJTkUgQkVMT1c7THU7MDtMOzAwNUEgMDMzMTs7OztOOzs7OzFFOTU7CisxRTk1O0xBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggTElORSBCRUxPVztMbDswO0w7MDA3QSAwMzMxOzs7O047OzsxRTk0OzsxRTk0CisxRTk2O0xBVElOIFNNQUxMIExFVFRFUiBIIFdJVEggTElORSBCRUxPVztMbDswO0w7MDA2OCAwMzMxOzs7O047Ozs7OworMUU5NztMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIERJQUVSRVNJUztMbDswO0w7MDA3NCAwMzA4Ozs7O047Ozs7OworMUU5ODtMQVRJTiBTTUFMTCBMRVRURVIgVyBXSVRIIFJJTkcgQUJPVkU7TGw7MDtMOzAwNzcgMDMwQTs7OztOOzs7OzsKKzFFOTk7TEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBSSU5HIEFCT1ZFO0xsOzA7TDswMDc5IDAzMEE7Ozs7Tjs7Ozs7CisxRTlBO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggUklHSFQgSEFMRiBSSU5HO0xsOzA7TDs8Y29tcGF0PiAwMDYxIDAyQkU7Ozs7Tjs7Ozs7CisxRTlCO0xBVElOIFNNQUxMIExFVFRFUiBMT05HIFMgV0lUSCBET1QgQUJPVkU7TGw7MDtMOzAxN0YgMDMwNzs7OztOOzs7MUU2MDs7MUU2MAorMUVBMDtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRE9UIEJFTE9XO0x1OzA7TDswMDQxIDAzMjM7Ozs7Tjs7OzsxRUExOworMUVBMTtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERPVCBCRUxPVztMbDswO0w7MDA2MSAwMzIzOzs7O047OzsxRUEwOzsxRUEwCisxRUEyO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBIT09LIEFCT1ZFO0x1OzA7TDswMDQxIDAzMDk7Ozs7Tjs7OzsxRUEzOworMUVBMztMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEhPT0sgQUJPVkU7TGw7MDtMOzAwNjEgMDMwOTs7OztOOzs7MUVBMjs7MUVBMgorMUVBNDtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWCBBTkQgQUNVVEU7THU7MDtMOzAwQzIgMDMwMTs7OztOOzs7OzFFQTU7CisxRUE1O0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWCBBTkQgQUNVVEU7TGw7MDtMOzAwRTIgMDMwMTs7OztOOzs7MUVBNDs7MUVBNAorMUVBNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWCBBTkQgR1JBVkU7THU7MDtMOzAwQzIgMDMwMDs7OztOOzs7OzFFQTc7CisxRUE3O0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWCBBTkQgR1JBVkU7TGw7MDtMOzAwRTIgMDMwMDs7OztOOzs7MUVBNjs7MUVBNgorMUVBODtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWCBBTkQgSE9PSyBBQk9WRTtMdTswO0w7MDBDMiAwMzA5Ozs7O047Ozs7MUVBOTsKKzFFQTk7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYIEFORCBIT09LIEFCT1ZFO0xsOzA7TDswMEUyIDAzMDk7Ozs7Tjs7OzFFQTg7OzFFQTgKKzFFQUE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVggQU5EIFRJTERFO0x1OzA7TDswMEMyIDAzMDM7Ozs7Tjs7OzsxRUFCOworMUVBQjtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVggQU5EIFRJTERFO0xsOzA7TDswMEUyIDAzMDM7Ozs7Tjs7OzFFQUE7OzFFQUEKKzFFQUM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVggQU5EIERPVCBCRUxPVztMdTswO0w7MUVBMCAwMzAyOzs7O047Ozs7MUVBRDsKKzFFQUQ7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYIEFORCBET1QgQkVMT1c7TGw7MDtMOzFFQTEgMDMwMjs7OztOOzs7MUVBQzs7MUVBQworMUVBRTtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQlJFVkUgQU5EIEFDVVRFO0x1OzA7TDswMTAyIDAzMDE7Ozs7Tjs7OzsxRUFGOworMUVBRjtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEJSRVZFIEFORCBBQ1VURTtMbDswO0w7MDEwMyAwMzAxOzs7O047OzsxRUFFOzsxRUFFCisxRUIwO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBCUkVWRSBBTkQgR1JBVkU7THU7MDtMOzAxMDIgMDMwMDs7OztOOzs7OzFFQjE7CisxRUIxO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQlJFVkUgQU5EIEdSQVZFO0xsOzA7TDswMTAzIDAzMDA7Ozs7Tjs7OzFFQjA7OzFFQjAKKzFFQjI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEJSRVZFIEFORCBIT09LIEFCT1ZFO0x1OzA7TDswMTAyIDAzMDk7Ozs7Tjs7OzsxRUIzOworMUVCMztMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEJSRVZFIEFORCBIT09LIEFCT1ZFO0xsOzA7TDswMTAzIDAzMDk7Ozs7Tjs7OzFFQjI7OzFFQjIKKzFFQjQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEJSRVZFIEFORCBUSUxERTtMdTswO0w7MDEwMiAwMzAzOzs7O047Ozs7MUVCNTsKKzFFQjU7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBCUkVWRSBBTkQgVElMREU7TGw7MDtMOzAxMDMgMDMwMzs7OztOOzs7MUVCNDs7MUVCNAorMUVCNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQlJFVkUgQU5EIERPVCBCRUxPVztMdTswO0w7MUVBMCAwMzA2Ozs7O047Ozs7MUVCNzsKKzFFQjc7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBCUkVWRSBBTkQgRE9UIEJFTE9XO0xsOzA7TDsxRUExIDAzMDY7Ozs7Tjs7OzFFQjY7OzFFQjYKKzFFQjg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA0NSAwMzIzOzs7O047Ozs7MUVCOTsKKzFFQjk7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNjUgMDMyMzs7OztOOzs7MUVCODs7MUVCOAorMUVCQTtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggSE9PSyBBQk9WRTtMdTswO0w7MDA0NSAwMzA5Ozs7O047Ozs7MUVCQjsKKzFFQkI7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBIT09LIEFCT1ZFO0xsOzA7TDswMDY1IDAzMDk7Ozs7Tjs7OzFFQkE7OzFFQkEKKzFFQkM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIFRJTERFO0x1OzA7TDswMDQ1IDAzMDM7Ozs7Tjs7OzsxRUJEOworMUVCRDtMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIFRJTERFO0xsOzA7TDswMDY1IDAzMDM7Ozs7Tjs7OzFFQkM7OzFFQkMKKzFFQkU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVggQU5EIEFDVVRFO0x1OzA7TDswMENBIDAzMDE7Ozs7Tjs7OzsxRUJGOworMUVCRjtMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVggQU5EIEFDVVRFO0xsOzA7TDswMEVBIDAzMDE7Ozs7Tjs7OzFFQkU7OzFFQkUKKzFFQzA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVggQU5EIEdSQVZFO0x1OzA7TDswMENBIDAzMDA7Ozs7Tjs7OzsxRUMxOworMUVDMTtMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVggQU5EIEdSQVZFO0xsOzA7TDswMEVBIDAzMDA7Ozs7Tjs7OzFFQzA7OzFFQzAKKzFFQzI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVggQU5EIEhPT0sgQUJPVkU7THU7MDtMOzAwQ0EgMDMwOTs7OztOOzs7OzFFQzM7CisxRUMzO0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWCBBTkQgSE9PSyBBQk9WRTtMbDswO0w7MDBFQSAwMzA5Ozs7O047OzsxRUMyOzsxRUMyCisxRUM0O0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYIEFORCBUSUxERTtMdTswO0w7MDBDQSAwMzAzOzs7O047Ozs7MUVDNTsKKzFFQzU7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYIEFORCBUSUxERTtMbDswO0w7MDBFQSAwMzAzOzs7O047OzsxRUM0OzsxRUM0CisxRUM2O0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYIEFORCBET1QgQkVMT1c7THU7MDtMOzFFQjggMDMwMjs7OztOOzs7OzFFQzc7CisxRUM3O0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWCBBTkQgRE9UIEJFTE9XO0xsOzA7TDsxRUI5IDAzMDI7Ozs7Tjs7OzFFQzY7OzFFQzYKKzFFQzg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEhPT0sgQUJPVkU7THU7MDtMOzAwNDkgMDMwOTs7OztOOzs7OzFFQzk7CisxRUM5O0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggSE9PSyBBQk9WRTtMbDswO0w7MDA2OSAwMzA5Ozs7O047OzsxRUM4OzsxRUM4CisxRUNBO0xBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNDkgMDMyMzs7OztOOzs7OzFFQ0I7CisxRUNCO0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDY5IDAzMjM7Ozs7Tjs7OzFFQ0E7OzFFQ0EKKzFFQ0M7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA0RiAwMzIzOzs7O047Ozs7MUVDRDsKKzFFQ0Q7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNkYgMDMyMzs7OztOOzs7MUVDQzs7MUVDQworMUVDRTtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggSE9PSyBBQk9WRTtMdTswO0w7MDA0RiAwMzA5Ozs7O047Ozs7MUVDRjsKKzFFQ0Y7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBIT09LIEFCT1ZFO0xsOzA7TDswMDZGIDAzMDk7Ozs7Tjs7OzFFQ0U7OzFFQ0UKKzFFRDA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVggQU5EIEFDVVRFO0x1OzA7TDswMEQ0IDAzMDE7Ozs7Tjs7OzsxRUQxOworMUVEMTtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVggQU5EIEFDVVRFO0xsOzA7TDswMEY0IDAzMDE7Ozs7Tjs7OzFFRDA7OzFFRDAKKzFFRDI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVggQU5EIEdSQVZFO0x1OzA7TDswMEQ0IDAzMDA7Ozs7Tjs7OzsxRUQzOworMUVEMztMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVggQU5EIEdSQVZFO0xsOzA7TDswMEY0IDAzMDA7Ozs7Tjs7OzFFRDI7OzFFRDIKKzFFRDQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVggQU5EIEhPT0sgQUJPVkU7THU7MDtMOzAwRDQgMDMwOTs7OztOOzs7OzFFRDU7CisxRUQ1O0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWCBBTkQgSE9PSyBBQk9WRTtMbDswO0w7MDBGNCAwMzA5Ozs7O047OzsxRUQ0OzsxRUQ0CisxRUQ2O0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYIEFORCBUSUxERTtMdTswO0w7MDBENCAwMzAzOzs7O047Ozs7MUVENzsKKzFFRDc7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYIEFORCBUSUxERTtMbDswO0w7MDBGNCAwMzAzOzs7O047OzsxRUQ2OzsxRUQ2CisxRUQ4O0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYIEFORCBET1QgQkVMT1c7THU7MDtMOzFFQ0MgMDMwMjs7OztOOzs7OzFFRDk7CisxRUQ5O0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWCBBTkQgRE9UIEJFTE9XO0xsOzA7TDsxRUNEIDAzMDI7Ozs7Tjs7OzFFRDg7OzFFRDgKKzFFREE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEhPUk4gQU5EIEFDVVRFO0x1OzA7TDswMUEwIDAzMDE7Ozs7Tjs7OzsxRURCOworMUVEQjtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEhPUk4gQU5EIEFDVVRFO0xsOzA7TDswMUExIDAzMDE7Ozs7Tjs7OzFFREE7OzFFREEKKzFFREM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEhPUk4gQU5EIEdSQVZFO0x1OzA7TDswMUEwIDAzMDA7Ozs7Tjs7OzsxRUREOworMUVERDtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEhPUk4gQU5EIEdSQVZFO0xsOzA7TDswMUExIDAzMDA7Ozs7Tjs7OzFFREM7OzFFREMKKzFFREU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEhPUk4gQU5EIEhPT0sgQUJPVkU7THU7MDtMOzAxQTAgMDMwOTs7OztOOzs7OzFFREY7CisxRURGO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggSE9STiBBTkQgSE9PSyBBQk9WRTtMbDswO0w7MDFBMSAwMzA5Ozs7O047OzsxRURFOzsxRURFCisxRUUwO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBIT1JOIEFORCBUSUxERTtMdTswO0w7MDFBMCAwMzAzOzs7O047Ozs7MUVFMTsKKzFFRTE7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBIT1JOIEFORCBUSUxERTtMbDswO0w7MDFBMSAwMzAzOzs7O047OzsxRUUwOzsxRUUwCisxRUUyO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBIT1JOIEFORCBET1QgQkVMT1c7THU7MDtMOzAxQTAgMDMyMzs7OztOOzs7OzFFRTM7CisxRUUzO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggSE9STiBBTkQgRE9UIEJFTE9XO0xsOzA7TDswMUExIDAzMjM7Ozs7Tjs7OzFFRTI7OzFFRTIKKzFFRTQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA1NSAwMzIzOzs7O047Ozs7MUVFNTsKKzFFRTU7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNzUgMDMyMzs7OztOOzs7MUVFNDs7MUVFNAorMUVFNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggSE9PSyBBQk9WRTtMdTswO0w7MDA1NSAwMzA5Ozs7O047Ozs7MUVFNzsKKzFFRTc7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBIT09LIEFCT1ZFO0xsOzA7TDswMDc1IDAzMDk7Ozs7Tjs7OzFFRTY7OzFFRTYKKzFFRTg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEhPUk4gQU5EIEFDVVRFO0x1OzA7TDswMUFGIDAzMDE7Ozs7Tjs7OzsxRUU5OworMUVFOTtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEhPUk4gQU5EIEFDVVRFO0xsOzA7TDswMUIwIDAzMDE7Ozs7Tjs7OzFFRTg7OzFFRTgKKzFFRUE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEhPUk4gQU5EIEdSQVZFO0x1OzA7TDswMUFGIDAzMDA7Ozs7Tjs7OzsxRUVCOworMUVFQjtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEhPUk4gQU5EIEdSQVZFO0xsOzA7TDswMUIwIDAzMDA7Ozs7Tjs7OzFFRUE7OzFFRUEKKzFFRUM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEhPUk4gQU5EIEhPT0sgQUJPVkU7THU7MDtMOzAxQUYgMDMwOTs7OztOOzs7OzFFRUQ7CisxRUVEO0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggSE9STiBBTkQgSE9PSyBBQk9WRTtMbDswO0w7MDFCMCAwMzA5Ozs7O047OzsxRUVDOzsxRUVDCisxRUVFO0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBIT1JOIEFORCBUSUxERTtMdTswO0w7MDFBRiAwMzAzOzs7O047Ozs7MUVFRjsKKzFFRUY7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBIT1JOIEFORCBUSUxERTtMbDswO0w7MDFCMCAwMzAzOzs7O047OzsxRUVFOzsxRUVFCisxRUYwO0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBIT1JOIEFORCBET1QgQkVMT1c7THU7MDtMOzAxQUYgMDMyMzs7OztOOzs7OzFFRjE7CisxRUYxO0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggSE9STiBBTkQgRE9UIEJFTE9XO0xsOzA7TDswMUIwIDAzMjM7Ozs7Tjs7OzFFRjA7OzFFRjAKKzFFRjI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIEdSQVZFO0x1OzA7TDswMDU5IDAzMDA7Ozs7Tjs7OzsxRUYzOworMUVGMztMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIEdSQVZFO0xsOzA7TDswMDc5IDAzMDA7Ozs7Tjs7OzFFRjI7OzFFRjIKKzFFRjQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA1OSAwMzIzOzs7O047Ozs7MUVGNTsKKzFFRjU7TEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNzkgMDMyMzs7OztOOzs7MUVGNDs7MUVGNAorMUVGNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggSE9PSyBBQk9WRTtMdTswO0w7MDA1OSAwMzA5Ozs7O047Ozs7MUVGNzsKKzFFRjc7TEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBIT09LIEFCT1ZFO0xsOzA7TDswMDc5IDAzMDk7Ozs7Tjs7OzFFRjY7OzFFRjYKKzFFRjg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIFRJTERFO0x1OzA7TDswMDU5IDAzMDM7Ozs7Tjs7OzsxRUY5OworMUVGOTtMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIFRJTERFO0xsOzA7TDswMDc5IDAzMDM7Ozs7Tjs7OzFFRjg7OzFFRjgKKzFGMDA7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEk7TGw7MDtMOzAzQjEgMDMxMzs7OztOOzs7MUYwODs7MUYwOAorMUYwMTtHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQTtMbDswO0w7MDNCMSAwMzE0Ozs7O047OzsxRjA5OzsxRjA5CisxRjAyO0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBWQVJJQTtMbDswO0w7MUYwMCAwMzAwOzs7O047OzsxRjBBOzsxRjBBCisxRjAzO0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBWQVJJQTtMbDswO0w7MUYwMSAwMzAwOzs7O047OzsxRjBCOzsxRjBCCisxRjA0O0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBPWElBO0xsOzA7TDsxRjAwIDAzMDE7Ozs7Tjs7OzFGMEM7OzFGMEMKKzFGMDU7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIE9YSUE7TGw7MDtMOzFGMDEgMDMwMTs7OztOOzs7MUYwRDs7MUYwRAorMUYwNjtHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkk7TGw7MDtMOzFGMDAgMDM0Mjs7OztOOzs7MUYwRTs7MUYwRQorMUYwNztHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkk7TGw7MDtMOzFGMDEgMDM0Mjs7OztOOzs7MUYwRjs7MUYwRgorMUYwODtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJO0x1OzA7TDswMzkxIDAzMTM7Ozs7Tjs7OzsxRjAwOworMUYwOTtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBO0x1OzA7TDswMzkxIDAzMTQ7Ozs7Tjs7OzsxRjAxOworMUYwQTtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBWQVJJQTtMdTswO0w7MUYwOCAwMzAwOzs7O047Ozs7MUYwMjsKKzFGMEI7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgVkFSSUE7THU7MDtMOzFGMDkgMDMwMDs7OztOOzs7OzFGMDM7CisxRjBDO0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIE9YSUE7THU7MDtMOzFGMDggMDMwMTs7OztOOzs7OzFGMDQ7CisxRjBEO0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIE9YSUE7THU7MDtMOzFGMDkgMDMwMTs7OztOOzs7OzFGMDU7CisxRjBFO0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JO0x1OzA7TDsxRjA4IDAzNDI7Ozs7Tjs7OzsxRjA2OworMUYwRjtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSTtMdTswO0w7MUYwOSAwMzQyOzs7O047Ozs7MUYwNzsKKzFGMTA7R1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04gV0lUSCBQU0lMSTtMbDswO0w7MDNCNSAwMzEzOzs7O047OzsxRjE4OzsxRjE4CisxRjExO0dSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OIFdJVEggREFTSUE7TGw7MDtMOzAzQjUgMDMxNDs7OztOOzs7MUYxOTs7MUYxOQorMUYxMjtHUkVFSyBTTUFMTCBMRVRURVIgRVBTSUxPTiBXSVRIIFBTSUxJIEFORCBWQVJJQTtMbDswO0w7MUYxMCAwMzAwOzs7O047OzsxRjFBOzsxRjFBCisxRjEzO0dSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OIFdJVEggREFTSUEgQU5EIFZBUklBO0xsOzA7TDsxRjExIDAzMDA7Ozs7Tjs7OzFGMUI7OzFGMUIKKzFGMTQ7R1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04gV0lUSCBQU0lMSSBBTkQgT1hJQTtMbDswO0w7MUYxMCAwMzAxOzs7O047OzsxRjFDOzsxRjFDCisxRjE1O0dSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OIFdJVEggREFTSUEgQU5EIE9YSUE7TGw7MDtMOzFGMTEgMDMwMTs7OztOOzs7MUYxRDs7MUYxRAorMUYxODtHUkVFSyBDQVBJVEFMIExFVFRFUiBFUFNJTE9OIFdJVEggUFNJTEk7THU7MDtMOzAzOTUgMDMxMzs7OztOOzs7OzFGMTA7CisxRjE5O0dSRUVLIENBUElUQUwgTEVUVEVSIEVQU0lMT04gV0lUSCBEQVNJQTtMdTswO0w7MDM5NSAwMzE0Ozs7O047Ozs7MUYxMTsKKzFGMUE7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVBTSUxPTiBXSVRIIFBTSUxJIEFORCBWQVJJQTtMdTswO0w7MUYxOCAwMzAwOzs7O047Ozs7MUYxMjsKKzFGMUI7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVBTSUxPTiBXSVRIIERBU0lBIEFORCBWQVJJQTtMdTswO0w7MUYxOSAwMzAwOzs7O047Ozs7MUYxMzsKKzFGMUM7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVBTSUxPTiBXSVRIIFBTSUxJIEFORCBPWElBO0x1OzA7TDsxRjE4IDAzMDE7Ozs7Tjs7OzsxRjE0OworMUYxRDtHUkVFSyBDQVBJVEFMIExFVFRFUiBFUFNJTE9OIFdJVEggREFTSUEgQU5EIE9YSUE7THU7MDtMOzFGMTkgMDMwMTs7OztOOzs7OzFGMTU7CisxRjIwO0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBQU0lMSTtMbDswO0w7MDNCNyAwMzEzOzs7O047OzsxRjI4OzsxRjI4CisxRjIxO0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBEQVNJQTtMbDswO0w7MDNCNyAwMzE0Ozs7O047OzsxRjI5OzsxRjI5CisxRjIyO0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgVkFSSUE7TGw7MDtMOzFGMjAgMDMwMDs7OztOOzs7MUYyQTs7MUYyQQorMUYyMztHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIFZBUklBO0xsOzA7TDsxRjIxIDAzMDA7Ozs7Tjs7OzFGMkI7OzFGMkIKKzFGMjQ7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBPWElBO0xsOzA7TDsxRjIwIDAzMDE7Ozs7Tjs7OzFGMkM7OzFGMkMKKzFGMjU7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBPWElBO0xsOzA7TDsxRjIxIDAzMDE7Ozs7Tjs7OzFGMkQ7OzFGMkQKKzFGMjY7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSTtMbDswO0w7MUYyMCAwMzQyOzs7O047OzsxRjJFOzsxRjJFCisxRjI3O0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkk7TGw7MDtMOzFGMjEgMDM0Mjs7OztOOzs7MUYyRjs7MUYyRgorMUYyODtHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBQU0lMSTtMdTswO0w7MDM5NyAwMzEzOzs7O047Ozs7MUYyMDsKKzFGMjk7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggREFTSUE7THU7MDtMOzAzOTcgMDMxNDs7OztOOzs7OzFGMjE7CisxRjJBO0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBWQVJJQTtMdTswO0w7MUYyOCAwMzAwOzs7O047Ozs7MUYyMjsKKzFGMkI7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIFZBUklBO0x1OzA7TDsxRjI5IDAzMDA7Ozs7Tjs7OzsxRjIzOworMUYyQztHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgT1hJQTtMdTswO0w7MUYyOCAwMzAxOzs7O047Ozs7MUYyNDsKKzFGMkQ7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIE9YSUE7THU7MDtMOzFGMjkgMDMwMTs7OztOOzs7OzFGMjU7CisxRjJFO0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSTtMdTswO0w7MUYyOCAwMzQyOzs7O047Ozs7MUYyNjsKKzFGMkY7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JO0x1OzA7TDsxRjI5IDAzNDI7Ozs7Tjs7OzsxRjI3OworMUYzMDtHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIFBTSUxJO0xsOzA7TDswM0I5IDAzMTM7Ozs7Tjs7OzFGMzg7OzFGMzgKKzFGMzE7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBEQVNJQTtMbDswO0w7MDNCOSAwMzE0Ozs7O047OzsxRjM5OzsxRjM5CisxRjMyO0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggUFNJTEkgQU5EIFZBUklBO0xsOzA7TDsxRjMwIDAzMDA7Ozs7Tjs7OzFGM0E7OzFGM0EKKzFGMzM7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBEQVNJQSBBTkQgVkFSSUE7TGw7MDtMOzFGMzEgMDMwMDs7OztOOzs7MUYzQjs7MUYzQgorMUYzNDtHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIFBTSUxJIEFORCBPWElBO0xsOzA7TDsxRjMwIDAzMDE7Ozs7Tjs7OzFGM0M7OzFGM0MKKzFGMzU7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBEQVNJQSBBTkQgT1hJQTtMbDswO0w7MUYzMSAwMzAxOzs7O047OzsxRjNEOzsxRjNECisxRjM2O0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JO0xsOzA7TDsxRjMwIDAzNDI7Ozs7Tjs7OzFGM0U7OzFGM0UKKzFGMzc7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkk7TGw7MDtMOzFGMzEgMDM0Mjs7OztOOzs7MUYzRjs7MUYzRgorMUYzODtHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggUFNJTEk7THU7MDtMOzAzOTkgMDMxMzs7OztOOzs7OzFGMzA7CisxRjM5O0dSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgV0lUSCBEQVNJQTtMdTswO0w7MDM5OSAwMzE0Ozs7O047Ozs7MUYzMTsKKzFGM0E7R1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIFBTSUxJIEFORCBWQVJJQTtMdTswO0w7MUYzOCAwMzAwOzs7O047Ozs7MUYzMjsKKzFGM0I7R1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIERBU0lBIEFORCBWQVJJQTtMdTswO0w7MUYzOSAwMzAwOzs7O047Ozs7MUYzMzsKKzFGM0M7R1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIFBTSUxJIEFORCBPWElBO0x1OzA7TDsxRjM4IDAzMDE7Ozs7Tjs7OzsxRjM0OworMUYzRDtHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggREFTSUEgQU5EIE9YSUE7THU7MDtMOzFGMzkgMDMwMTs7OztOOzs7OzFGMzU7CisxRjNFO0dSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkk7THU7MDtMOzFGMzggMDM0Mjs7OztOOzs7OzFGMzY7CisxRjNGO0dSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkk7THU7MDtMOzFGMzkgMDM0Mjs7OztOOzs7OzFGMzc7CisxRjQwO0dSRUVLIFNNQUxMIExFVFRFUiBPTUlDUk9OIFdJVEggUFNJTEk7TGw7MDtMOzAzQkYgMDMxMzs7OztOOzs7MUY0ODs7MUY0OAorMUY0MTtHUkVFSyBTTUFMTCBMRVRURVIgT01JQ1JPTiBXSVRIIERBU0lBO0xsOzA7TDswM0JGIDAzMTQ7Ozs7Tjs7OzFGNDk7OzFGNDkKKzFGNDI7R1JFRUsgU01BTEwgTEVUVEVSIE9NSUNST04gV0lUSCBQU0lMSSBBTkQgVkFSSUE7TGw7MDtMOzFGNDAgMDMwMDs7OztOOzs7MUY0QTs7MUY0QQorMUY0MztHUkVFSyBTTUFMTCBMRVRURVIgT01JQ1JPTiBXSVRIIERBU0lBIEFORCBWQVJJQTtMbDswO0w7MUY0MSAwMzAwOzs7O047OzsxRjRCOzsxRjRCCisxRjQ0O0dSRUVLIFNNQUxMIExFVFRFUiBPTUlDUk9OIFdJVEggUFNJTEkgQU5EIE9YSUE7TGw7MDtMOzFGNDAgMDMwMTs7OztOOzs7MUY0Qzs7MUY0QworMUY0NTtHUkVFSyBTTUFMTCBMRVRURVIgT01JQ1JPTiBXSVRIIERBU0lBIEFORCBPWElBO0xsOzA7TDsxRjQxIDAzMDE7Ozs7Tjs7OzFGNEQ7OzFGNEQKKzFGNDg7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01JQ1JPTiBXSVRIIFBTSUxJO0x1OzA7TDswMzlGIDAzMTM7Ozs7Tjs7OzsxRjQwOworMUY0OTtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OIFdJVEggREFTSUE7THU7MDtMOzAzOUYgMDMxNDs7OztOOzs7OzFGNDE7CisxRjRBO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NSUNST04gV0lUSCBQU0lMSSBBTkQgVkFSSUE7THU7MDtMOzFGNDggMDMwMDs7OztOOzs7OzFGNDI7CisxRjRCO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NSUNST04gV0lUSCBEQVNJQSBBTkQgVkFSSUE7THU7MDtMOzFGNDkgMDMwMDs7OztOOzs7OzFGNDM7CisxRjRDO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NSUNST04gV0lUSCBQU0lMSSBBTkQgT1hJQTtMdTswO0w7MUY0OCAwMzAxOzs7O047Ozs7MUY0NDsKKzFGNEQ7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01JQ1JPTiBXSVRIIERBU0lBIEFORCBPWElBO0x1OzA7TDsxRjQ5IDAzMDE7Ozs7Tjs7OzsxRjQ1OworMUY1MDtHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIFBTSUxJO0xsOzA7TDswM0M1IDAzMTM7Ozs7Tjs7Ozs7CisxRjUxO0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggREFTSUE7TGw7MDtMOzAzQzUgMDMxNDs7OztOOzs7MUY1OTs7MUY1OQorMUY1MjtHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIFBTSUxJIEFORCBWQVJJQTtMbDswO0w7MUY1MCAwMzAwOzs7O047Ozs7OworMUY1MztHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIERBU0lBIEFORCBWQVJJQTtMbDswO0w7MUY1MSAwMzAwOzs7O047OzsxRjVCOzsxRjVCCisxRjU0O0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggUFNJTEkgQU5EIE9YSUE7TGw7MDtMOzFGNTAgMDMwMTs7OztOOzs7OzsKKzFGNTU7R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBEQVNJQSBBTkQgT1hJQTtMbDswO0w7MUY1MSAwMzAxOzs7O047OzsxRjVEOzsxRjVECisxRjU2O0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JO0xsOzA7TDsxRjUwIDAzNDI7Ozs7Tjs7Ozs7CisxRjU3O0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JO0xsOzA7TDsxRjUxIDAzNDI7Ozs7Tjs7OzFGNUY7OzFGNUYKKzFGNTk7R1JFRUsgQ0FQSVRBTCBMRVRURVIgVVBTSUxPTiBXSVRIIERBU0lBO0x1OzA7TDswM0E1IDAzMTQ7Ozs7Tjs7OzsxRjUxOworMUY1QjtHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggREFTSUEgQU5EIFZBUklBO0x1OzA7TDsxRjU5IDAzMDA7Ozs7Tjs7OzsxRjUzOworMUY1RDtHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggREFTSUEgQU5EIE9YSUE7THU7MDtMOzFGNTkgMDMwMTs7OztOOzs7OzFGNTU7CisxRjVGO0dSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkk7THU7MDtMOzFGNTkgMDM0Mjs7OztOOzs7OzFGNTc7CisxRjYwO0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJO0xsOzA7TDswM0M5IDAzMTM7Ozs7Tjs7OzFGNjg7OzFGNjgKKzFGNjE7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUE7TGw7MDtMOzAzQzkgMDMxNDs7OztOOzs7MUY2OTs7MUY2OQorMUY2MjtHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgVkFSSUE7TGw7MDtMOzFGNjAgMDMwMDs7OztOOzs7MUY2QTs7MUY2QQorMUY2MztHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgVkFSSUE7TGw7MDtMOzFGNjEgMDMwMDs7OztOOzs7MUY2Qjs7MUY2QgorMUY2NDtHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgT1hJQTtMbDswO0w7MUY2MCAwMzAxOzs7O047OzsxRjZDOzsxRjZDCisxRjY1O0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBPWElBO0xsOzA7TDsxRjYxIDAzMDE7Ozs7Tjs7OzFGNkQ7OzFGNkQKKzFGNjY7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JO0xsOzA7TDsxRjYwIDAzNDI7Ozs7Tjs7OzFGNkU7OzFGNkUKKzFGNjc7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JO0xsOzA7TDsxRjYxIDAzNDI7Ozs7Tjs7OzFGNkY7OzFGNkYKKzFGNjg7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSTtMdTswO0w7MDNBOSAwMzEzOzs7O047Ozs7MUY2MDsKKzFGNjk7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQTtMdTswO0w7MDNBOSAwMzE0Ozs7O047Ozs7MUY2MTsKKzFGNkE7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgVkFSSUE7THU7MDtMOzFGNjggMDMwMDs7OztOOzs7OzFGNjI7CisxRjZCO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFZBUklBO0x1OzA7TDsxRjY5IDAzMDA7Ozs7Tjs7OzsxRjYzOworMUY2QztHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBPWElBO0x1OzA7TDsxRjY4IDAzMDE7Ozs7Tjs7OzsxRjY0OworMUY2RDtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBPWElBO0x1OzA7TDsxRjY5IDAzMDE7Ozs7Tjs7OzsxRjY1OworMUY2RTtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSTtMdTswO0w7MUY2OCAwMzQyOzs7O047Ozs7MUY2NjsKKzFGNkY7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkk7THU7MDtMOzFGNjkgMDM0Mjs7OztOOzs7OzFGNjc7CisxRjcwO0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFZBUklBO0xsOzA7TDswM0IxIDAzMDA7Ozs7Tjs7OzFGQkE7OzFGQkEKKzFGNzE7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggT1hJQTtMbDswO0w7MDNBQzs7OztOOzs7MUZCQjs7MUZCQgorMUY3MjtHUkVFSyBTTUFMTCBMRVRURVIgRVBTSUxPTiBXSVRIIFZBUklBO0xsOzA7TDswM0I1IDAzMDA7Ozs7Tjs7OzFGQzg7OzFGQzgKKzFGNzM7R1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04gV0lUSCBPWElBO0xsOzA7TDswM0FEOzs7O047OzsxRkM5OzsxRkM5CisxRjc0O0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBWQVJJQTtMbDswO0w7MDNCNyAwMzAwOzs7O047OzsxRkNBOzsxRkNBCisxRjc1O0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBPWElBO0xsOzA7TDswM0FFOzs7O047OzsxRkNCOzsxRkNCCisxRjc2O0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggVkFSSUE7TGw7MDtMOzAzQjkgMDMwMDs7OztOOzs7MUZEQTs7MUZEQQorMUY3NztHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIE9YSUE7TGw7MDtMOzAzQUY7Ozs7Tjs7OzFGREI7OzFGREIKKzFGNzg7R1JFRUsgU01BTEwgTEVUVEVSIE9NSUNST04gV0lUSCBWQVJJQTtMbDswO0w7MDNCRiAwMzAwOzs7O047OzsxRkY4OzsxRkY4CisxRjc5O0dSRUVLIFNNQUxMIExFVFRFUiBPTUlDUk9OIFdJVEggT1hJQTtMbDswO0w7MDNDQzs7OztOOzs7MUZGOTs7MUZGOQorMUY3QTtHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIFZBUklBO0xsOzA7TDswM0M1IDAzMDA7Ozs7Tjs7OzFGRUE7OzFGRUEKKzFGN0I7R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBPWElBO0xsOzA7TDswM0NEOzs7O047OzsxRkVCOzsxRkVCCisxRjdDO0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFZBUklBO0xsOzA7TDswM0M5IDAzMDA7Ozs7Tjs7OzFGRkE7OzFGRkEKKzFGN0Q7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggT1hJQTtMbDswO0w7MDNDRTs7OztOOzs7MUZGQjs7MUZGQgorMUY4MDtHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUYwMCAwMzQ1Ozs7O047OzsxRjg4OzsxRjg4CisxRjgxO0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjAxIDAzNDU7Ozs7Tjs7OzFGODk7OzFGODkKKzFGODI7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIFZBUklBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjAyIDAzNDU7Ozs7Tjs7OzFGOEE7OzFGOEEKKzFGODM7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIFZBUklBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjAzIDAzNDU7Ozs7Tjs7OzFGOEI7OzFGOEIKKzFGODQ7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIE9YSUEgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGMDQgMDM0NTs7OztOOzs7MUY4Qzs7MUY4QworMUY4NTtHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgT1hJQSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUYwNSAwMzQ1Ozs7O047OzsxRjhEOzsxRjhECisxRjg2O0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUYwNiAwMzQ1Ozs7O047OzsxRjhFOzsxRjhFCisxRjg3O0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUYwNyAwMzQ1Ozs7O047OzsxRjhGOzsxRjhGCisxRjg4O0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIFBST1NHRUdSQU1NRU5JO0x0OzA7TDsxRjA4IDAzNDU7Ozs7Tjs7OzsxRjgwOworMUY4OTtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBQUk9TR0VHUkFNTUVOSTtMdDswO0w7MUYwOSAwMzQ1Ozs7O047Ozs7MUY4MTsKKzFGOEE7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgVkFSSUEgQU5EIFBST1NHRUdSQU1NRU5JO0x0OzA7TDsxRjBBIDAzNDU7Ozs7Tjs7OzsxRjgyOworMUY4QjtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBWQVJJQSBBTkQgUFJPU0dFR1JBTU1FTkk7THQ7MDtMOzFGMEIgMDM0NTs7OztOOzs7OzFGODM7CisxRjhDO0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIE9YSUEgQU5EIFBST1NHRUdSQU1NRU5JO0x0OzA7TDsxRjBDIDAzNDU7Ozs7Tjs7OzsxRjg0OworMUY4RDtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBPWElBIEFORCBQUk9TR0VHUkFNTUVOSTtMdDswO0w7MUYwRCAwMzQ1Ozs7O047Ozs7MUY4NTsKKzFGOEU7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkkgQU5EIFBST1NHRUdSQU1NRU5JO0x0OzA7TDsxRjBFIDAzNDU7Ozs7Tjs7OzsxRjg2OworMUY4RjtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSSBBTkQgUFJPU0dFR1JBTU1FTkk7THQ7MDtMOzFGMEYgMDM0NTs7OztOOzs7OzFGODc7CisxRjkwO0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUYyMCAwMzQ1Ozs7O047OzsxRjk4OzsxRjk4CisxRjkxO0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUYyMSAwMzQ1Ozs7O047OzsxRjk5OzsxRjk5CisxRjkyO0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgVkFSSUEgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGMjIgMDM0NTs7OztOOzs7MUY5QTs7MUY5QQorMUY5MztHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIFZBUklBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjIzIDAzNDU7Ozs7Tjs7OzFGOUI7OzFGOUIKKzFGOTQ7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBPWElBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjI0IDAzNDU7Ozs7Tjs7OzFGOUM7OzFGOUMKKzFGOTU7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBPWElBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjI1IDAzNDU7Ozs7Tjs7OzFGOUQ7OzFGOUQKKzFGOTY7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUYyNiAwMzQ1Ozs7O047OzsxRjlFOzsxRjlFCisxRjk3O0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkkgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGMjcgMDM0NTs7OztOOzs7MUY5Rjs7MUY5RgorMUY5ODtHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgUFJPU0dFR1JBTU1FTkk7THQ7MDtMOzFGMjggMDM0NTs7OztOOzs7OzFGOTA7CisxRjk5O0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBQUk9TR0VHUkFNTUVOSTtMdDswO0w7MUYyOSAwMzQ1Ozs7O047Ozs7MUY5MTsKKzFGOUE7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIFZBUklBIEFORCBQUk9TR0VHUkFNTUVOSTtMdDswO0w7MUYyQSAwMzQ1Ozs7O047Ozs7MUY5MjsKKzFGOUI7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIFZBUklBIEFORCBQUk9TR0VHUkFNTUVOSTtMdDswO0w7MUYyQiAwMzQ1Ozs7O047Ozs7MUY5MzsKKzFGOUM7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIE9YSUEgQU5EIFBST1NHRUdSQU1NRU5JO0x0OzA7TDsxRjJDIDAzNDU7Ozs7Tjs7OzsxRjk0OworMUY5RDtHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgT1hJQSBBTkQgUFJPU0dFR1JBTU1FTkk7THQ7MDtMOzFGMkQgMDM0NTs7OztOOzs7OzFGOTU7CisxRjlFO0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSSBBTkQgUFJPU0dFR1JBTU1FTkk7THQ7MDtMOzFGMkUgMDM0NTs7OztOOzs7OzFGOTY7CisxRjlGO0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSSBBTkQgUFJPU0dFR1JBTU1FTkk7THQ7MDtMOzFGMkYgMDM0NTs7OztOOzs7OzFGOTc7CisxRkEwO0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjYwIDAzNDU7Ozs7Tjs7OzFGQTg7OzFGQTgKKzFGQTE7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGNjEgMDM0NTs7OztOOzs7MUZBOTs7MUZBOQorMUZBMjtHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgVkFSSUEgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGNjIgMDM0NTs7OztOOzs7MUZBQTs7MUZBQQorMUZBMztHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgVkFSSUEgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGNjMgMDM0NTs7OztOOzs7MUZBQjs7MUZBQgorMUZBNDtHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgT1hJQSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUY2NCAwMzQ1Ozs7O047OzsxRkFDOzsxRkFDCisxRkE1O0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBPWElBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjY1IDAzNDU7Ozs7Tjs7OzFGQUQ7OzFGQUQKKzFGQTY7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjY2IDAzNDU7Ozs7Tjs7OzFGQUU7OzFGQUUKKzFGQTc7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjY3IDAzNDU7Ozs7Tjs7OzFGQUY7OzFGQUYKKzFGQTg7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgUFJPU0dFR1JBTU1FTkk7THQ7MDtMOzFGNjggMDM0NTs7OztOOzs7OzFGQTA7CisxRkE5O0dSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFBST1NHRUdSQU1NRU5JO0x0OzA7TDsxRjY5IDAzNDU7Ozs7Tjs7OzsxRkExOworMUZBQTtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBWQVJJQSBBTkQgUFJPU0dFR1JBTU1FTkk7THQ7MDtMOzFGNkEgMDM0NTs7OztOOzs7OzFGQTI7CisxRkFCO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFZBUklBIEFORCBQUk9TR0VHUkFNTUVOSTtMdDswO0w7MUY2QiAwMzQ1Ozs7O047Ozs7MUZBMzsKKzFGQUM7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgT1hJQSBBTkQgUFJPU0dFR1JBTU1FTkk7THQ7MDtMOzFGNkMgMDM0NTs7OztOOzs7OzFGQTQ7CisxRkFEO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIE9YSUEgQU5EIFBST1NHRUdSQU1NRU5JO0x0OzA7TDsxRjZEIDAzNDU7Ozs7Tjs7OzsxRkE1OworMUZBRTtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSSBBTkQgUFJPU0dFR1JBTU1FTkk7THQ7MDtMOzFGNkUgMDM0NTs7OztOOzs7OzFGQTY7CisxRkFGO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JIEFORCBQUk9TR0VHUkFNTUVOSTtMdDswO0w7MUY2RiAwMzQ1Ozs7O047Ozs7MUZBNzsKKzFGQjA7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggVlJBQ0hZO0xsOzA7TDswM0IxIDAzMDY7Ozs7Tjs7OzFGQjg7OzFGQjgKKzFGQjE7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggTUFDUk9OO0xsOzA7TDswM0IxIDAzMDQ7Ozs7Tjs7OzFGQjk7OzFGQjkKKzFGQjI7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggVkFSSUEgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGNzAgMDM0NTs7OztOOzs7OzsKKzFGQjM7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggWVBPR0VHUkFNTUVOSTtMbDswO0w7MDNCMSAwMzQ1Ozs7O047OzsxRkJDOzsxRkJDCisxRkI0O0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIE9YSUEgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzAzQUMgMDM0NTs7OztOOzs7OzsKKzFGQjY7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggUEVSSVNQT01FTkk7TGw7MDtMOzAzQjEgMDM0Mjs7OztOOzs7OzsKKzFGQjc7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggUEVSSVNQT01FTkkgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGQjYgMDM0NTs7OztOOzs7OzsKKzFGQjg7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBWUkFDSFk7THU7MDtMOzAzOTEgMDMwNjs7OztOOzs7OzFGQjA7CisxRkI5O0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggTUFDUk9OO0x1OzA7TDswMzkxIDAzMDQ7Ozs7Tjs7OzsxRkIxOworMUZCQTtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFZBUklBO0x1OzA7TDswMzkxIDAzMDA7Ozs7Tjs7OzsxRjcwOworMUZCQjtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIE9YSUE7THU7MDtMOzAzODY7Ozs7Tjs7OzsxRjcxOworMUZCQztHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFBST1NHRUdSQU1NRU5JO0x0OzA7TDswMzkxIDAzNDU7Ozs7Tjs7OzsxRkIzOworMUZCRDtHUkVFSyBLT1JPTklTO1NrOzA7T047PGNvbXBhdD4gMDAyMCAwMzEzOzs7O047Ozs7OworMUZCRTtHUkVFSyBQUk9TR0VHUkFNTUVOSTtMbDswO0w7MDNCOTs7OztOOzs7MDM5OTs7MDM5OQorMUZCRjtHUkVFSyBQU0lMSTtTazswO09OOzxjb21wYXQ+IDAwMjAgMDMxMzs7OztOOzs7OzsKKzFGQzA7R1JFRUsgUEVSSVNQT01FTkk7U2s7MDtPTjs8Y29tcGF0PiAwMDIwIDAzNDI7Ozs7Tjs7Ozs7CisxRkMxO0dSRUVLIERJQUxZVElLQSBBTkQgUEVSSVNQT01FTkk7U2s7MDtPTjswMEE4IDAzNDI7Ozs7Tjs7Ozs7CisxRkMyO0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBWQVJJQSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUY3NCAwMzQ1Ozs7O047Ozs7OworMUZDMztHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggWVBPR0VHUkFNTUVOSTtMbDswO0w7MDNCNyAwMzQ1Ozs7O047OzsxRkNDOzsxRkNDCisxRkM0O0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBPWElBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDswM0FFIDAzNDU7Ozs7Tjs7Ozs7CisxRkM2O0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBQRVJJU1BPTUVOSTtMbDswO0w7MDNCNyAwMzQyOzs7O047Ozs7OworMUZDNztHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggUEVSSVNQT01FTkkgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGQzYgMDM0NTs7OztOOzs7OzsKKzFGQzg7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVBTSUxPTiBXSVRIIFZBUklBO0x1OzA7TDswMzk1IDAzMDA7Ozs7Tjs7OzsxRjcyOworMUZDOTtHUkVFSyBDQVBJVEFMIExFVFRFUiBFUFNJTE9OIFdJVEggT1hJQTtMdTswO0w7MDM4ODs7OztOOzs7OzFGNzM7CisxRkNBO0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFZBUklBO0x1OzA7TDswMzk3IDAzMDA7Ozs7Tjs7OzsxRjc0OworMUZDQjtHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBPWElBO0x1OzA7TDswMzg5Ozs7O047Ozs7MUY3NTsKKzFGQ0M7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggUFJPU0dFR1JBTU1FTkk7THQ7MDtMOzAzOTcgMDM0NTs7OztOOzs7OzFGQzM7CisxRkNEO0dSRUVLIFBTSUxJIEFORCBWQVJJQTtTazswO09OOzFGQkYgMDMwMDs7OztOOzs7OzsKKzFGQ0U7R1JFRUsgUFNJTEkgQU5EIE9YSUE7U2s7MDtPTjsxRkJGIDAzMDE7Ozs7Tjs7Ozs7CisxRkNGO0dSRUVLIFBTSUxJIEFORCBQRVJJU1BPTUVOSTtTazswO09OOzFGQkYgMDM0Mjs7OztOOzs7OzsKKzFGRDA7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBWUkFDSFk7TGw7MDtMOzAzQjkgMDMwNjs7OztOOzs7MUZEODs7MUZEOAorMUZEMTtHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIE1BQ1JPTjtMbDswO0w7MDNCOSAwMzA0Ozs7O047OzsxRkQ5OzsxRkQ5CisxRkQyO0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggRElBTFlUSUtBIEFORCBWQVJJQTtMbDswO0w7MDNDQSAwMzAwOzs7O047Ozs7OworMUZEMztHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIERJQUxZVElLQSBBTkQgT1hJQTtMbDswO0w7MDM5MDs7OztOOzs7OzsKKzFGRDY7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBQRVJJU1BPTUVOSTtMbDswO0w7MDNCOSAwMzQyOzs7O047Ozs7OworMUZENztHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIERJQUxZVElLQSBBTkQgUEVSSVNQT01FTkk7TGw7MDtMOzAzQ0EgMDM0Mjs7OztOOzs7OzsKKzFGRDg7R1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIFZSQUNIWTtMdTswO0w7MDM5OSAwMzA2Ozs7O047Ozs7MUZEMDsKKzFGRDk7R1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIE1BQ1JPTjtMdTswO0w7MDM5OSAwMzA0Ozs7O047Ozs7MUZEMTsKKzFGREE7R1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIFZBUklBO0x1OzA7TDswMzk5IDAzMDA7Ozs7Tjs7OzsxRjc2OworMUZEQjtHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggT1hJQTtMdTswO0w7MDM4QTs7OztOOzs7OzFGNzc7CisxRkREO0dSRUVLIERBU0lBIEFORCBWQVJJQTtTazswO09OOzFGRkUgMDMwMDs7OztOOzs7OzsKKzFGREU7R1JFRUsgREFTSUEgQU5EIE9YSUE7U2s7MDtPTjsxRkZFIDAzMDE7Ozs7Tjs7Ozs7CisxRkRGO0dSRUVLIERBU0lBIEFORCBQRVJJU1BPTUVOSTtTazswO09OOzFGRkUgMDM0Mjs7OztOOzs7OzsKKzFGRTA7R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBWUkFDSFk7TGw7MDtMOzAzQzUgMDMwNjs7OztOOzs7MUZFODs7MUZFOAorMUZFMTtHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIE1BQ1JPTjtMbDswO0w7MDNDNSAwMzA0Ozs7O047OzsxRkU5OzsxRkU5CisxRkUyO0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggRElBTFlUSUtBIEFORCBWQVJJQTtMbDswO0w7MDNDQiAwMzAwOzs7O047Ozs7OworMUZFMztHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIERJQUxZVElLQSBBTkQgT1hJQTtMbDswO0w7MDNCMDs7OztOOzs7OzsKKzFGRTQ7R1JFRUsgU01BTEwgTEVUVEVSIFJITyBXSVRIIFBTSUxJO0xsOzA7TDswM0MxIDAzMTM7Ozs7Tjs7Ozs7CisxRkU1O0dSRUVLIFNNQUxMIExFVFRFUiBSSE8gV0lUSCBEQVNJQTtMbDswO0w7MDNDMSAwMzE0Ozs7O047OzsxRkVDOzsxRkVDCisxRkU2O0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggUEVSSVNQT01FTkk7TGw7MDtMOzAzQzUgMDM0Mjs7OztOOzs7OzsKKzFGRTc7R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBESUFMWVRJS0EgQU5EIFBFUklTUE9NRU5JO0xsOzA7TDswM0NCIDAzNDI7Ozs7Tjs7Ozs7CisxRkU4O0dSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBWUkFDSFk7THU7MDtMOzAzQTUgMDMwNjs7OztOOzs7OzFGRTA7CisxRkU5O0dSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBNQUNST047THU7MDtMOzAzQTUgMDMwNDs7OztOOzs7OzFGRTE7CisxRkVBO0dSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBWQVJJQTtMdTswO0w7MDNBNSAwMzAwOzs7O047Ozs7MUY3QTsKKzFGRUI7R1JFRUsgQ0FQSVRBTCBMRVRURVIgVVBTSUxPTiBXSVRIIE9YSUE7THU7MDtMOzAzOEU7Ozs7Tjs7OzsxRjdCOworMUZFQztHUkVFSyBDQVBJVEFMIExFVFRFUiBSSE8gV0lUSCBEQVNJQTtMdTswO0w7MDNBMSAwMzE0Ozs7O047Ozs7MUZFNTsKKzFGRUQ7R1JFRUsgRElBTFlUSUtBIEFORCBWQVJJQTtTazswO09OOzAwQTggMDMwMDs7OztOOzs7OzsKKzFGRUU7R1JFRUsgRElBTFlUSUtBIEFORCBPWElBO1NrOzA7T047MDM4NTs7OztOOzs7OzsKKzFGRUY7R1JFRUsgVkFSSUE7U2s7MDtPTjswMDYwOzs7O047Ozs7OworMUZGMjtHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBWQVJJQSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUY3QyAwMzQ1Ozs7O047Ozs7OworMUZGMztHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBZUE9HRUdSQU1NRU5JO0xsOzA7TDswM0M5IDAzNDU7Ozs7Tjs7OzFGRkM7OzFGRkMKKzFGRjQ7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggT1hJQSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MDNDRSAwMzQ1Ozs7O047Ozs7OworMUZGNjtHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBQRVJJU1BPTUVOSTtMbDswO0w7MDNDOSAwMzQyOzs7O047Ozs7OworMUZGNztHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBQRVJJU1BPTUVOSSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUZGNiAwMzQ1Ozs7O047Ozs7OworMUZGODtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OIFdJVEggVkFSSUE7THU7MDtMOzAzOUYgMDMwMDs7OztOOzs7OzFGNzg7CisxRkY5O0dSRUVLIENBUElUQUwgTEVUVEVSIE9NSUNST04gV0lUSCBPWElBO0x1OzA7TDswMzhDOzs7O047Ozs7MUY3OTsKKzFGRkE7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBWQVJJQTtMdTswO0w7MDNBOSAwMzAwOzs7O047Ozs7MUY3QzsKKzFGRkI7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBPWElBO0x1OzA7TDswMzhGOzs7O047Ozs7MUY3RDsKKzFGRkM7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBQUk9TR0VHUkFNTUVOSTtMdDswO0w7MDNBOSAwMzQ1Ozs7O047Ozs7MUZGMzsKKzFGRkQ7R1JFRUsgT1hJQTtTazswO09OOzAwQjQ7Ozs7Tjs7Ozs7CisxRkZFO0dSRUVLIERBU0lBO1NrOzA7T047PGNvbXBhdD4gMDAyMCAwMzE0Ozs7O047Ozs7OworMjAwMDtFTiBRVUFEO1pzOzA7V1M7MjAwMjs7OztOOzs7OzsKKzIwMDE7RU0gUVVBRDtaczswO1dTOzIwMDM7Ozs7Tjs7Ozs7CisyMDAyO0VOIFNQQUNFO1pzOzA7V1M7PGNvbXBhdD4gMDAyMDs7OztOOzs7OzsKKzIwMDM7RU0gU1BBQ0U7WnM7MDtXUzs8Y29tcGF0PiAwMDIwOzs7O047Ozs7OworMjAwNDtUSFJFRS1QRVItRU0gU1BBQ0U7WnM7MDtXUzs8Y29tcGF0PiAwMDIwOzs7O047Ozs7OworMjAwNTtGT1VSLVBFUi1FTSBTUEFDRTtaczswO1dTOzxjb21wYXQ+IDAwMjA7Ozs7Tjs7Ozs7CisyMDA2O1NJWC1QRVItRU0gU1BBQ0U7WnM7MDtXUzs8Y29tcGF0PiAwMDIwOzs7O047Ozs7OworMjAwNztGSUdVUkUgU1BBQ0U7WnM7MDtXUzs8bm9CcmVhaz4gMDAyMDs7OztOOzs7OzsKKzIwMDg7UFVOQ1RVQVRJT04gU1BBQ0U7WnM7MDtXUzs8Y29tcGF0PiAwMDIwOzs7O047Ozs7OworMjAwOTtUSElOIFNQQUNFO1pzOzA7V1M7PGNvbXBhdD4gMDAyMDs7OztOOzs7OzsKKzIwMEE7SEFJUiBTUEFDRTtaczswO1dTOzxjb21wYXQ+IDAwMjA7Ozs7Tjs7Ozs7CisyMDBCO1pFUk8gV0lEVEggU1BBQ0U7WnM7MDtCTjs7Ozs7Tjs7Ozs7CisyMDBDO1pFUk8gV0lEVEggTk9OLUpPSU5FUjtDZjswO0JOOzs7OztOOzs7OzsKKzIwMEQ7WkVSTyBXSURUSCBKT0lORVI7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CisyMDBFO0xFRlQtVE8tUklHSFQgTUFSSztDZjswO0w7Ozs7O047Ozs7OworMjAwRjtSSUdIVC1UTy1MRUZUIE1BUks7Q2Y7MDtSOzs7OztOOzs7OzsKKzIwMTA7SFlQSEVOO1BkOzA7T047Ozs7O047Ozs7OworMjAxMTtOT04tQlJFQUtJTkcgSFlQSEVOO1BkOzA7T047PG5vQnJlYWs+IDIwMTA7Ozs7Tjs7Ozs7CisyMDEyO0ZJR1VSRSBEQVNIO1BkOzA7T047Ozs7O047Ozs7OworMjAxMztFTiBEQVNIO1BkOzA7T047Ozs7O047Ozs7OworMjAxNDtFTSBEQVNIO1BkOzA7T047Ozs7O047Ozs7OworMjAxNTtIT1JJWk9OVEFMIEJBUjtQZDswO09OOzs7OztOO1FVT1RBVElPTiBEQVNIOzs7OworMjAxNjtET1VCTEUgVkVSVElDQUwgTElORTtQbzswO09OOzs7OztOO0RPVUJMRSBWRVJUSUNBTCBCQVI7Ozs7CisyMDE3O0RPVUJMRSBMT1cgTElORTtQbzswO09OOzxjb21wYXQ+IDAwMjAgMDMzMzs7OztOO1NQQUNJTkcgRE9VQkxFIFVOREVSU0NPUkU7Ozs7CisyMDE4O0xFRlQgU0lOR0xFIFFVT1RBVElPTiBNQVJLO1BpOzA7T047Ozs7O047U0lOR0xFIFRVUk5FRCBDT01NQSBRVU9UQVRJT04gTUFSSzs7OzsKKzIwMTk7UklHSFQgU0lOR0xFIFFVT1RBVElPTiBNQVJLO1BmOzA7T047Ozs7O047U0lOR0xFIENPTU1BIFFVT1RBVElPTiBNQVJLOzs7OworMjAxQTtTSU5HTEUgTE9XLTkgUVVPVEFUSU9OIE1BUks7UHM7MDtPTjs7Ozs7TjtMT1cgU0lOR0xFIENPTU1BIFFVT1RBVElPTiBNQVJLOzs7OworMjAxQjtTSU5HTEUgSElHSC1SRVZFUlNFRC05IFFVT1RBVElPTiBNQVJLO1BpOzA7T047Ozs7O047U0lOR0xFIFJFVkVSU0VEIENPTU1BIFFVT1RBVElPTiBNQVJLOzs7OworMjAxQztMRUZUIERPVUJMRSBRVU9UQVRJT04gTUFSSztQaTswO09OOzs7OztOO0RPVUJMRSBUVVJORUQgQ09NTUEgUVVPVEFUSU9OIE1BUks7Ozs7CisyMDFEO1JJR0hUIERPVUJMRSBRVU9UQVRJT04gTUFSSztQZjswO09OOzs7OztOO0RPVUJMRSBDT01NQSBRVU9UQVRJT04gTUFSSzs7OzsKKzIwMUU7RE9VQkxFIExPVy05IFFVT1RBVElPTiBNQVJLO1BzOzA7T047Ozs7O047TE9XIERPVUJMRSBDT01NQSBRVU9UQVRJT04gTUFSSzs7OzsKKzIwMUY7RE9VQkxFIEhJR0gtUkVWRVJTRUQtOSBRVU9UQVRJT04gTUFSSztQaTswO09OOzs7OztOO0RPVUJMRSBSRVZFUlNFRCBDT01NQSBRVU9UQVRJT04gTUFSSzs7OzsKKzIwMjA7REFHR0VSO1BvOzA7T047Ozs7O047Ozs7OworMjAyMTtET1VCTEUgREFHR0VSO1BvOzA7T047Ozs7O047Ozs7OworMjAyMjtCVUxMRVQ7UG87MDtPTjs7Ozs7Tjs7Ozs7CisyMDIzO1RSSUFOR1VMQVIgQlVMTEVUO1BvOzA7T047Ozs7O047Ozs7OworMjAyNDtPTkUgRE9UIExFQURFUjtQbzswO09OOzxjb21wYXQ+IDAwMkU7Ozs7Tjs7Ozs7CisyMDI1O1RXTyBET1QgTEVBREVSO1BvOzA7T047PGNvbXBhdD4gMDAyRSAwMDJFOzs7O047Ozs7OworMjAyNjtIT1JJWk9OVEFMIEVMTElQU0lTO1BvOzA7T047PGNvbXBhdD4gMDAyRSAwMDJFIDAwMkU7Ozs7Tjs7Ozs7CisyMDI3O0hZUEhFTkFUSU9OIFBPSU5UO1BvOzA7T047Ozs7O047Ozs7OworMjAyODtMSU5FIFNFUEFSQVRPUjtabDswO1dTOzs7OztOOzs7OzsKKzIwMjk7UEFSQUdSQVBIIFNFUEFSQVRPUjtacDswO0I7Ozs7O047Ozs7OworMjAyQTtMRUZULVRPLVJJR0hUIEVNQkVERElORztDZjswO0xSRTs7Ozs7Tjs7Ozs7CisyMDJCO1JJR0hULVRPLUxFRlQgRU1CRURESU5HO0NmOzA7UkxFOzs7OztOOzs7OzsKKzIwMkM7UE9QIERJUkVDVElPTkFMIEZPUk1BVFRJTkc7Q2Y7MDtQREY7Ozs7O047Ozs7OworMjAyRDtMRUZULVRPLVJJR0hUIE9WRVJSSURFO0NmOzA7TFJPOzs7OztOOzs7OzsKKzIwMkU7UklHSFQtVE8tTEVGVCBPVkVSUklERTtDZjswO1JMTzs7Ozs7Tjs7Ozs7CisyMDJGO05BUlJPVyBOTy1CUkVBSyBTUEFDRTtaczswO1dTOzxub0JyZWFrPiAwMDIwOzs7O047Ozs7OworMjAzMDtQRVIgTUlMTEUgU0lHTjtQbzswO0VUOzs7OztOOzs7OzsKKzIwMzE7UEVSIFRFTiBUSE9VU0FORCBTSUdOO1BvOzA7RVQ7Ozs7O047Ozs7OworMjAzMjtQUklNRTtQbzswO0VUOzs7OztOOzs7OzsKKzIwMzM7RE9VQkxFIFBSSU1FO1BvOzA7RVQ7PGNvbXBhdD4gMjAzMiAyMDMyOzs7O047Ozs7OworMjAzNDtUUklQTEUgUFJJTUU7UG87MDtFVDs8Y29tcGF0PiAyMDMyIDIwMzIgMjAzMjs7OztOOzs7OzsKKzIwMzU7UkVWRVJTRUQgUFJJTUU7UG87MDtPTjs7Ozs7Tjs7Ozs7CisyMDM2O1JFVkVSU0VEIERPVUJMRSBQUklNRTtQbzswO09OOzxjb21wYXQ+IDIwMzUgMjAzNTs7OztOOzs7OzsKKzIwMzc7UkVWRVJTRUQgVFJJUExFIFBSSU1FO1BvOzA7T047PGNvbXBhdD4gMjAzNSAyMDM1IDIwMzU7Ozs7Tjs7Ozs7CisyMDM4O0NBUkVUO1BvOzA7T047Ozs7O047Ozs7OworMjAzOTtTSU5HTEUgTEVGVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSztQaTswO09OOzs7OztZO0xFRlQgUE9JTlRJTkcgU0lOR0xFIEdVSUxMRU1FVDs7OzsKKzIwM0E7U0lOR0xFIFJJR0hULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLO1BmOzA7T047Ozs7O1k7UklHSFQgUE9JTlRJTkcgU0lOR0xFIEdVSUxMRU1FVDs7OzsKKzIwM0I7UkVGRVJFTkNFIE1BUks7UG87MDtPTjs7Ozs7Tjs7Ozs7CisyMDNDO0RPVUJMRSBFWENMQU1BVElPTiBNQVJLO1BvOzA7T047PGNvbXBhdD4gMDAyMSAwMDIxOzs7O047Ozs7OworMjAzRDtJTlRFUlJPQkFORztQbzswO09OOzs7OztOOzs7OzsKKzIwM0U7T1ZFUkxJTkU7UG87MDtPTjs8Y29tcGF0PiAwMDIwIDAzMDU7Ozs7TjtTUEFDSU5HIE9WRVJTQ09SRTs7OzsKKzIwM0Y7VU5ERVJUSUU7UGM7MDtPTjs7Ozs7Tjs7RW5vdGlrb247OzsKKzIwNDA7Q0hBUkFDVEVSIFRJRTtQYzswO09OOzs7OztOOzs7OzsKKzIwNDE7Q0FSRVQgSU5TRVJUSU9OIFBPSU5UO1BvOzA7T047Ozs7O047Ozs7OworMjA0MjtBU1RFUklTTTtQbzswO09OOzs7OztOOzs7OzsKKzIwNDM7SFlQSEVOIEJVTExFVDtQbzswO09OOzs7OztOOzs7OzsKKzIwNDQ7RlJBQ1RJT04gU0xBU0g7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMDQ1O0xFRlQgU1FVQVJFIEJSQUNLRVQgV0lUSCBRVUlMTDtQczswO09OOzs7OztZOzs7OzsKKzIwNDY7UklHSFQgU1FVQVJFIEJSQUNLRVQgV0lUSCBRVUlMTDtQZTswO09OOzs7OztZOzs7OzsKKzIwNDc7RE9VQkxFIFFVRVNUSU9OIE1BUks7UG87MDtPTjs8Y29tcGF0PiAwMDNGIDAwM0Y7Ozs7Tjs7Ozs7CisyMDQ4O1FVRVNUSU9OIEVYQ0xBTUFUSU9OIE1BUks7UG87MDtPTjs8Y29tcGF0PiAwMDNGIDAwMjE7Ozs7Tjs7Ozs7CisyMDQ5O0VYQ0xBTUFUSU9OIFFVRVNUSU9OIE1BUks7UG87MDtPTjs8Y29tcGF0PiAwMDIxIDAwM0Y7Ozs7Tjs7Ozs7CisyMDRBO1RJUk9OSUFOIFNJR04gRVQ7UG87MDtPTjs7Ozs7Tjs7Ozs7CisyMDRCO1JFVkVSU0VEIFBJTENST1cgU0lHTjtQbzswO09OOzs7OztOOzs7OzsKKzIwNEM7QkxBQ0sgTEVGVFdBUkRTIEJVTExFVDtQbzswO09OOzs7OztOOzs7OzsKKzIwNEQ7QkxBQ0sgUklHSFRXQVJEUyBCVUxMRVQ7UG87MDtPTjs7Ozs7Tjs7Ozs7CisyMDRFO0xPVyBBU1RFUklTSztQbzswO09OOzs7OztOOzs7OzsKKzIwNEY7UkVWRVJTRUQgU0VNSUNPTE9OO1BvOzA7T047Ozs7O047Ozs7OworMjA1MDtDTE9TRSBVUDtQbzswO09OOzs7OztOOzs7OzsKKzIwNTE7VFdPIEFTVEVSSVNLUyBBTElHTkVEIFZFUlRJQ0FMTFk7UG87MDtPTjs7Ozs7Tjs7Ozs7CisyMDUyO0NPTU1FUkNJQUwgTUlOVVMgU0lHTjtTbTswO09OOzs7OztOOzs7OzsKKzIwNTc7UVVBRFJVUExFIFBSSU1FO1BvOzA7T047PGNvbXBhdD4gMjAzMiAyMDMyIDIwMzIgMjAzMjs7OztOOzs7OzsKKzIwNUY7TUVESVVNIE1BVEhFTUFUSUNBTCBTUEFDRTtaczswO1dTOzxjb21wYXQ+IDAwMjA7Ozs7Tjs7Ozs7CisyMDYwO1dPUkQgSk9JTkVSO0NmOzA7Qk47Ozs7O047Ozs7OworMjA2MTtGVU5DVElPTiBBUFBMSUNBVElPTjtDZjswO0JOOzs7OztOOzs7OzsKKzIwNjI7SU5WSVNJQkxFIFRJTUVTO0NmOzA7Qk47Ozs7O047Ozs7OworMjA2MztJTlZJU0lCTEUgU0VQQVJBVE9SO0NmOzA7Qk47Ozs7O047Ozs7OworMjA2QTtJTkhJQklUIFNZTU1FVFJJQyBTV0FQUElORztDZjswO0JOOzs7OztOOzs7OzsKKzIwNkI7QUNUSVZBVEUgU1lNTUVUUklDIFNXQVBQSU5HO0NmOzA7Qk47Ozs7O047Ozs7OworMjA2QztJTkhJQklUIEFSQUJJQyBGT1JNIFNIQVBJTkc7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CisyMDZEO0FDVElWQVRFIEFSQUJJQyBGT1JNIFNIQVBJTkc7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CisyMDZFO05BVElPTkFMIERJR0lUIFNIQVBFUztDZjswO0JOOzs7OztOOzs7OzsKKzIwNkY7Tk9NSU5BTCBESUdJVCBTSEFQRVM7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CisyMDcwO1NVUEVSU0NSSVBUIFpFUk87Tm87MDtFTjs8c3VwZXI+IDAwMzA7MDswOzA7TjtTVVBFUlNDUklQVCBESUdJVCBaRVJPOzs7OworMjA3MTtTVVBFUlNDUklQVCBMQVRJTiBTTUFMTCBMRVRURVIgSTtMbDswO0w7PHN1cGVyPiAwMDY5Ozs7O047Ozs7OworMjA3NDtTVVBFUlNDUklQVCBGT1VSO05vOzA7RU47PHN1cGVyPiAwMDM0OzQ7NDs0O047U1VQRVJTQ1JJUFQgRElHSVQgRk9VUjs7OzsKKzIwNzU7U1VQRVJTQ1JJUFQgRklWRTtObzswO0VOOzxzdXBlcj4gMDAzNTs1OzU7NTtOO1NVUEVSU0NSSVBUIERJR0lUIEZJVkU7Ozs7CisyMDc2O1NVUEVSU0NSSVBUIFNJWDtObzswO0VOOzxzdXBlcj4gMDAzNjs2OzY7NjtOO1NVUEVSU0NSSVBUIERJR0lUIFNJWDs7OzsKKzIwNzc7U1VQRVJTQ1JJUFQgU0VWRU47Tm87MDtFTjs8c3VwZXI+IDAwMzc7Nzs3Ozc7TjtTVVBFUlNDUklQVCBESUdJVCBTRVZFTjs7OzsKKzIwNzg7U1VQRVJTQ1JJUFQgRUlHSFQ7Tm87MDtFTjs8c3VwZXI+IDAwMzg7ODs4Ozg7TjtTVVBFUlNDUklQVCBESUdJVCBFSUdIVDs7OzsKKzIwNzk7U1VQRVJTQ1JJUFQgTklORTtObzswO0VOOzxzdXBlcj4gMDAzOTs5Ozk7OTtOO1NVUEVSU0NSSVBUIERJR0lUIE5JTkU7Ozs7CisyMDdBO1NVUEVSU0NSSVBUIFBMVVMgU0lHTjtTbTswO0VUOzxzdXBlcj4gMDAyQjs7OztOOzs7OzsKKzIwN0I7U1VQRVJTQ1JJUFQgTUlOVVM7U207MDtFVDs8c3VwZXI+IDIyMTI7Ozs7TjtTVVBFUlNDUklQVCBIWVBIRU4tTUlOVVM7Ozs7CisyMDdDO1NVUEVSU0NSSVBUIEVRVUFMUyBTSUdOO1NtOzA7T047PHN1cGVyPiAwMDNEOzs7O047Ozs7OworMjA3RDtTVVBFUlNDUklQVCBMRUZUIFBBUkVOVEhFU0lTO1BzOzA7T047PHN1cGVyPiAwMDI4Ozs7O1k7U1VQRVJTQ1JJUFQgT1BFTklORyBQQVJFTlRIRVNJUzs7OzsKKzIwN0U7U1VQRVJTQ1JJUFQgUklHSFQgUEFSRU5USEVTSVM7UGU7MDtPTjs8c3VwZXI+IDAwMjk7Ozs7WTtTVVBFUlNDUklQVCBDTE9TSU5HIFBBUkVOVEhFU0lTOzs7OworMjA3RjtTVVBFUlNDUklQVCBMQVRJTiBTTUFMTCBMRVRURVIgTjtMbDswO0w7PHN1cGVyPiAwMDZFOzs7O047Ozs7OworMjA4MDtTVUJTQ1JJUFQgWkVSTztObzswO0VOOzxzdWI+IDAwMzA7MDswOzA7TjtTVUJTQ1JJUFQgRElHSVQgWkVSTzs7OzsKKzIwODE7U1VCU0NSSVBUIE9ORTtObzswO0VOOzxzdWI+IDAwMzE7MTsxOzE7TjtTVUJTQ1JJUFQgRElHSVQgT05FOzs7OworMjA4MjtTVUJTQ1JJUFQgVFdPO05vOzA7RU47PHN1Yj4gMDAzMjsyOzI7MjtOO1NVQlNDUklQVCBESUdJVCBUV087Ozs7CisyMDgzO1NVQlNDUklQVCBUSFJFRTtObzswO0VOOzxzdWI+IDAwMzM7MzszOzM7TjtTVUJTQ1JJUFQgRElHSVQgVEhSRUU7Ozs7CisyMDg0O1NVQlNDUklQVCBGT1VSO05vOzA7RU47PHN1Yj4gMDAzNDs0OzQ7NDtOO1NVQlNDUklQVCBESUdJVCBGT1VSOzs7OworMjA4NTtTVUJTQ1JJUFQgRklWRTtObzswO0VOOzxzdWI+IDAwMzU7NTs1OzU7TjtTVUJTQ1JJUFQgRElHSVQgRklWRTs7OzsKKzIwODY7U1VCU0NSSVBUIFNJWDtObzswO0VOOzxzdWI+IDAwMzY7Njs2OzY7TjtTVUJTQ1JJUFQgRElHSVQgU0lYOzs7OworMjA4NztTVUJTQ1JJUFQgU0VWRU47Tm87MDtFTjs8c3ViPiAwMDM3Ozc7Nzs3O047U1VCU0NSSVBUIERJR0lUIFNFVkVOOzs7OworMjA4ODtTVUJTQ1JJUFQgRUlHSFQ7Tm87MDtFTjs8c3ViPiAwMDM4Ozg7ODs4O047U1VCU0NSSVBUIERJR0lUIEVJR0hUOzs7OworMjA4OTtTVUJTQ1JJUFQgTklORTtObzswO0VOOzxzdWI+IDAwMzk7OTs5Ozk7TjtTVUJTQ1JJUFQgRElHSVQgTklORTs7OzsKKzIwOEE7U1VCU0NSSVBUIFBMVVMgU0lHTjtTbTswO0VUOzxzdWI+IDAwMkI7Ozs7Tjs7Ozs7CisyMDhCO1NVQlNDUklQVCBNSU5VUztTbTswO0VUOzxzdWI+IDIyMTI7Ozs7TjtTVUJTQ1JJUFQgSFlQSEVOLU1JTlVTOzs7OworMjA4QztTVUJTQ1JJUFQgRVFVQUxTIFNJR047U207MDtPTjs8c3ViPiAwMDNEOzs7O047Ozs7OworMjA4RDtTVUJTQ1JJUFQgTEVGVCBQQVJFTlRIRVNJUztQczswO09OOzxzdWI+IDAwMjg7Ozs7WTtTVUJTQ1JJUFQgT1BFTklORyBQQVJFTlRIRVNJUzs7OzsKKzIwOEU7U1VCU0NSSVBUIFJJR0hUIFBBUkVOVEhFU0lTO1BlOzA7T047PHN1Yj4gMDAyOTs7OztZO1NVQlNDUklQVCBDTE9TSU5HIFBBUkVOVEhFU0lTOzs7OworMjBBMDtFVVJPLUNVUlJFTkNZIFNJR047U2M7MDtFVDs7Ozs7Tjs7Ozs7CisyMEExO0NPTE9OIFNJR047U2M7MDtFVDs7Ozs7Tjs7Ozs7CisyMEEyO0NSVVpFSVJPIFNJR047U2M7MDtFVDs7Ozs7Tjs7Ozs7CisyMEEzO0ZSRU5DSCBGUkFOQyBTSUdOO1NjOzA7RVQ7Ozs7O047Ozs7OworMjBBNDtMSVJBIFNJR047U2M7MDtFVDs7Ozs7Tjs7Ozs7CisyMEE1O01JTEwgU0lHTjtTYzswO0VUOzs7OztOOzs7OzsKKzIwQTY7TkFJUkEgU0lHTjtTYzswO0VUOzs7OztOOzs7OzsKKzIwQTc7UEVTRVRBIFNJR047U2M7MDtFVDs7Ozs7Tjs7Ozs7CisyMEE4O1JVUEVFIFNJR047U2M7MDtFVDs8Y29tcGF0PiAwMDUyIDAwNzM7Ozs7Tjs7Ozs7CisyMEE5O1dPTiBTSUdOO1NjOzA7RVQ7Ozs7O047Ozs7OworMjBBQTtORVcgU0hFUUVMIFNJR047U2M7MDtFVDs7Ozs7Tjs7Ozs7CisyMEFCO0RPTkcgU0lHTjtTYzswO0VUOzs7OztOOzs7OzsKKzIwQUM7RVVSTyBTSUdOO1NjOzA7RVQ7Ozs7O047Ozs7OworMjBBRDtLSVAgU0lHTjtTYzswO0VUOzs7OztOOzs7OzsKKzIwQUU7VFVHUklLIFNJR047U2M7MDtFVDs7Ozs7Tjs7Ozs7CisyMEFGO0RSQUNITUEgU0lHTjtTYzswO0VUOzs7OztOOzs7OzsKKzIwQjA7R0VSTUFOIFBFTk5ZIFNJR047U2M7MDtFVDs7Ozs7Tjs7Ozs7CisyMEIxO1BFU08gU0lHTjtTYzswO0VUOzs7OztOOzs7OzsKKzIwRDA7Q09NQklOSU5HIExFRlQgSEFSUE9PTiBBQk9WRTtNbjsyMzA7TlNNOzs7OztOO05PTi1TUEFDSU5HIExFRlQgSEFSUE9PTiBBQk9WRTs7OzsKKzIwRDE7Q09NQklOSU5HIFJJR0hUIEhBUlBPT04gQUJPVkU7TW47MjMwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBSSUdIVCBIQVJQT09OIEFCT1ZFOzs7OworMjBEMjtDT01CSU5JTkcgTE9ORyBWRVJUSUNBTCBMSU5FIE9WRVJMQVk7TW47MTtOU007Ozs7O047Tk9OLVNQQUNJTkcgTE9ORyBWRVJUSUNBTCBCQVIgT1ZFUkxBWTs7OzsKKzIwRDM7Q09NQklOSU5HIFNIT1JUIFZFUlRJQ0FMIExJTkUgT1ZFUkxBWTtNbjsxO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBTSE9SVCBWRVJUSUNBTCBCQVIgT1ZFUkxBWTs7OzsKKzIwRDQ7Q09NQklOSU5HIEFOVElDTE9DS1dJU0UgQVJST1cgQUJPVkU7TW47MjMwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBBTlRJQ0xPQ0tXSVNFIEFSUk9XIEFCT1ZFOzs7OworMjBENTtDT01CSU5JTkcgQ0xPQ0tXSVNFIEFSUk9XIEFCT1ZFO01uOzIzMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgQ0xPQ0tXSVNFIEFSUk9XIEFCT1ZFOzs7OworMjBENjtDT01CSU5JTkcgTEVGVCBBUlJPVyBBQk9WRTtNbjsyMzA7TlNNOzs7OztOO05PTi1TUEFDSU5HIExFRlQgQVJST1cgQUJPVkU7Ozs7CisyMEQ3O0NPTUJJTklORyBSSUdIVCBBUlJPVyBBQk9WRTtNbjsyMzA7TlNNOzs7OztOO05PTi1TUEFDSU5HIFJJR0hUIEFSUk9XIEFCT1ZFOzs7OworMjBEODtDT01CSU5JTkcgUklORyBPVkVSTEFZO01uOzE7TlNNOzs7OztOO05PTi1TUEFDSU5HIFJJTkcgT1ZFUkxBWTs7OzsKKzIwRDk7Q09NQklOSU5HIENMT0NLV0lTRSBSSU5HIE9WRVJMQVk7TW47MTtOU007Ozs7O047Tk9OLVNQQUNJTkcgQ0xPQ0tXSVNFIFJJTkcgT1ZFUkxBWTs7OzsKKzIwREE7Q09NQklOSU5HIEFOVElDTE9DS1dJU0UgUklORyBPVkVSTEFZO01uOzE7TlNNOzs7OztOO05PTi1TUEFDSU5HIEFOVElDTE9DS1dJU0UgUklORyBPVkVSTEFZOzs7OworMjBEQjtDT01CSU5JTkcgVEhSRUUgRE9UUyBBQk9WRTtNbjsyMzA7TlNNOzs7OztOO05PTi1TUEFDSU5HIFRIUkVFIERPVFMgQUJPVkU7Ozs7CisyMERDO0NPTUJJTklORyBGT1VSIERPVFMgQUJPVkU7TW47MjMwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBGT1VSIERPVFMgQUJPVkU7Ozs7CisyMEREO0NPTUJJTklORyBFTkNMT1NJTkcgQ0lSQ0xFO01lOzA7TlNNOzs7OztOO0VOQ0xPU0lORyBDSVJDTEU7Ozs7CisyMERFO0NPTUJJTklORyBFTkNMT1NJTkcgU1FVQVJFO01lOzA7TlNNOzs7OztOO0VOQ0xPU0lORyBTUVVBUkU7Ozs7CisyMERGO0NPTUJJTklORyBFTkNMT1NJTkcgRElBTU9ORDtNZTswO05TTTs7Ozs7TjtFTkNMT1NJTkcgRElBTU9ORDs7OzsKKzIwRTA7Q09NQklOSU5HIEVOQ0xPU0lORyBDSVJDTEUgQkFDS1NMQVNIO01lOzA7TlNNOzs7OztOO0VOQ0xPU0lORyBDSVJDTEUgU0xBU0g7Ozs7CisyMEUxO0NPTUJJTklORyBMRUZUIFJJR0hUIEFSUk9XIEFCT1ZFO01uOzIzMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgTEVGVCBSSUdIVCBBUlJPVyBBQk9WRTs7OzsKKzIwRTI7Q09NQklOSU5HIEVOQ0xPU0lORyBTQ1JFRU47TWU7MDtOU007Ozs7O047Ozs7OworMjBFMztDT01CSU5JTkcgRU5DTE9TSU5HIEtFWUNBUDtNZTswO05TTTs7Ozs7Tjs7Ozs7CisyMEU0O0NPTUJJTklORyBFTkNMT1NJTkcgVVBXQVJEIFBPSU5USU5HIFRSSUFOR0xFO01lOzA7TlNNOzs7OztOOzs7OzsKKzIwRTU7Q09NQklOSU5HIFJFVkVSU0UgU09MSURVUyBPVkVSTEFZO01uOzE7TlNNOzs7OztOOzs7OzsKKzIwRTY7Q09NQklOSU5HIERPVUJMRSBWRVJUSUNBTCBTVFJPS0UgT1ZFUkxBWTtNbjsxO05TTTs7Ozs7Tjs7Ozs7CisyMEU3O0NPTUJJTklORyBBTk5VSVRZIFNZTUJPTDtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzIwRTg7Q09NQklOSU5HIFRSSVBMRSBVTkRFUkRPVDtNbjsyMjA7TlNNOzs7OztOOzs7OzsKKzIwRTk7Q09NQklOSU5HIFdJREUgQlJJREdFIEFCT1ZFO01uOzIzMDtOU007Ozs7O047Ozs7OworMjBFQTtDT01CSU5JTkcgTEVGVFdBUkRTIEFSUk9XIE9WRVJMQVk7TW47MTtOU007Ozs7O047Ozs7OworMjEwMDtBQ0NPVU5UIE9GO1NvOzA7T047PGNvbXBhdD4gMDA2MSAwMDJGIDAwNjM7Ozs7Tjs7Ozs7CisyMTAxO0FERFJFU1NFRCBUTyBUSEUgU1VCSkVDVDtTbzswO09OOzxjb21wYXQ+IDAwNjEgMDAyRiAwMDczOzs7O047Ozs7OworMjEwMjtET1VCTEUtU1RSVUNLIENBUElUQUwgQztMdTswO0w7PGZvbnQ+IDAwNDM7Ozs7TjtET1VCTEUtU1RSVUNLIEM7Ozs7CisyMTAzO0RFR1JFRSBDRUxTSVVTO1NvOzA7T047PGNvbXBhdD4gMDBCMCAwMDQzOzs7O047REVHUkVFUyBDRU5USUdSQURFOzs7OworMjEwNDtDRU5UUkUgTElORSBTWU1CT0w7U287MDtPTjs7Ozs7TjtDIEwgU1lNQk9MOzs7OworMjEwNTtDQVJFIE9GO1NvOzA7T047PGNvbXBhdD4gMDA2MyAwMDJGIDAwNkY7Ozs7Tjs7Ozs7CisyMTA2O0NBREEgVU5BO1NvOzA7T047PGNvbXBhdD4gMDA2MyAwMDJGIDAwNzU7Ozs7Tjs7Ozs7CisyMTA3O0VVTEVSIENPTlNUQU5UO0x1OzA7TDs8Y29tcGF0PiAwMTkwOzs7O047RVVMRVJTOzs7OworMjEwODtTQ1JVUExFO1NvOzA7T047Ozs7O047Ozs7OworMjEwOTtERUdSRUUgRkFIUkVOSEVJVDtTbzswO09OOzxjb21wYXQ+IDAwQjAgMDA0Njs7OztOO0RFR1JFRVMgRkFIUkVOSEVJVDs7OzsKKzIxMEE7U0NSSVBUIFNNQUxMIEc7TGw7MDtMOzxmb250PiAwMDY3Ozs7O047Ozs7OworMjEwQjtTQ1JJUFQgQ0FQSVRBTCBIO0x1OzA7TDs8Zm9udD4gMDA0ODs7OztOO1NDUklQVCBIOzs7OworMjEwQztCTEFDSy1MRVRURVIgQ0FQSVRBTCBIO0x1OzA7TDs8Zm9udD4gMDA0ODs7OztOO0JMQUNLLUxFVFRFUiBIOzs7OworMjEwRDtET1VCTEUtU1RSVUNLIENBUElUQUwgSDtMdTswO0w7PGZvbnQ+IDAwNDg7Ozs7TjtET1VCTEUtU1RSVUNLIEg7Ozs7CisyMTBFO1BMQU5DSyBDT05TVEFOVDtMbDswO0w7PGZvbnQ+IDAwNjg7Ozs7Tjs7Ozs7CisyMTBGO1BMQU5DSyBDT05TVEFOVCBPVkVSIFRXTyBQSTtMbDswO0w7PGZvbnQ+IDAxMjc7Ozs7TjtQTEFOQ0sgQ09OU1RBTlQgT1ZFUiAyIFBJOzs7OworMjExMDtTQ1JJUFQgQ0FQSVRBTCBJO0x1OzA7TDs8Zm9udD4gMDA0OTs7OztOO1NDUklQVCBJOzs7OworMjExMTtCTEFDSy1MRVRURVIgQ0FQSVRBTCBJO0x1OzA7TDs8Zm9udD4gMDA0OTs7OztOO0JMQUNLLUxFVFRFUiBJOzs7OworMjExMjtTQ1JJUFQgQ0FQSVRBTCBMO0x1OzA7TDs8Zm9udD4gMDA0Qzs7OztOO1NDUklQVCBMOzs7OworMjExMztTQ1JJUFQgU01BTEwgTDtMbDswO0w7PGZvbnQ+IDAwNkM7Ozs7Tjs7Ozs7CisyMTE0O0wgQiBCQVIgU1lNQk9MO1NvOzA7T047Ozs7O047Ozs7OworMjExNTtET1VCTEUtU1RSVUNLIENBUElUQUwgTjtMdTswO0w7PGZvbnQ+IDAwNEU7Ozs7TjtET1VCTEUtU1RSVUNLIE47Ozs7CisyMTE2O05VTUVSTyBTSUdOO1NvOzA7T047PGNvbXBhdD4gMDA0RSAwMDZGOzs7O047TlVNRVJPOzs7OworMjExNztTT1VORCBSRUNPUkRJTkcgQ09QWVJJR0hUO1NvOzA7T047Ozs7O047Ozs7OworMjExODtTQ1JJUFQgQ0FQSVRBTCBQO1NvOzA7T047Ozs7O047U0NSSVBUIFA7Ozs7CisyMTE5O0RPVUJMRS1TVFJVQ0sgQ0FQSVRBTCBQO0x1OzA7TDs8Zm9udD4gMDA1MDs7OztOO0RPVUJMRS1TVFJVQ0sgUDs7OzsKKzIxMUE7RE9VQkxFLVNUUlVDSyBDQVBJVEFMIFE7THU7MDtMOzxmb250PiAwMDUxOzs7O047RE9VQkxFLVNUUlVDSyBROzs7OworMjExQjtTQ1JJUFQgQ0FQSVRBTCBSO0x1OzA7TDs8Zm9udD4gMDA1Mjs7OztOO1NDUklQVCBSOzs7OworMjExQztCTEFDSy1MRVRURVIgQ0FQSVRBTCBSO0x1OzA7TDs8Zm9udD4gMDA1Mjs7OztOO0JMQUNLLUxFVFRFUiBSOzs7OworMjExRDtET1VCTEUtU1RSVUNLIENBUElUQUwgUjtMdTswO0w7PGZvbnQ+IDAwNTI7Ozs7TjtET1VCTEUtU1RSVUNLIFI7Ozs7CisyMTFFO1BSRVNDUklQVElPTiBUQUtFO1NvOzA7T047Ozs7O047Ozs7OworMjExRjtSRVNQT05TRTtTbzswO09OOzs7OztOOzs7OzsKKzIxMjA7U0VSVklDRSBNQVJLO1NvOzA7T047PHN1cGVyPiAwMDUzIDAwNEQ7Ozs7Tjs7Ozs7CisyMTIxO1RFTEVQSE9ORSBTSUdOO1NvOzA7T047PGNvbXBhdD4gMDA1NCAwMDQ1IDAwNEM7Ozs7TjtUIEUgTCBTWU1CT0w7Ozs7CisyMTIyO1RSQURFIE1BUksgU0lHTjtTbzswO09OOzxzdXBlcj4gMDA1NCAwMDREOzs7O047VFJBREVNQVJLOzs7OworMjEyMztWRVJTSUNMRTtTbzswO09OOzs7OztOOzs7OzsKKzIxMjQ7RE9VQkxFLVNUUlVDSyBDQVBJVEFMIFo7THU7MDtMOzxmb250PiAwMDVBOzs7O047RE9VQkxFLVNUUlVDSyBaOzs7OworMjEyNTtPVU5DRSBTSUdOO1NvOzA7T047Ozs7O047T1VOQ0U7Ozs7CisyMTI2O09ITSBTSUdOO0x1OzA7TDswM0E5Ozs7O047T0hNOzs7MDNDOTsKKzIxMjc7SU5WRVJURUQgT0hNIFNJR047U287MDtPTjs7Ozs7TjtNSE87Ozs7CisyMTI4O0JMQUNLLUxFVFRFUiBDQVBJVEFMIFo7THU7MDtMOzxmb250PiAwMDVBOzs7O047QkxBQ0stTEVUVEVSIFo7Ozs7CisyMTI5O1RVUk5FRCBHUkVFSyBTTUFMTCBMRVRURVIgSU9UQTtTbzswO09OOzs7OztOOzs7OzsKKzIxMkE7S0VMVklOIFNJR047THU7MDtMOzAwNEI7Ozs7TjtERUdSRUVTIEtFTFZJTjs7OzAwNkI7CisyMTJCO0FOR1NUUk9NIFNJR047THU7MDtMOzAwQzU7Ozs7TjtBTkdTVFJPTSBVTklUOzs7MDBFNTsKKzIxMkM7U0NSSVBUIENBUElUQUwgQjtMdTswO0w7PGZvbnQ+IDAwNDI7Ozs7TjtTQ1JJUFQgQjs7OzsKKzIxMkQ7QkxBQ0stTEVUVEVSIENBUElUQUwgQztMdTswO0w7PGZvbnQ+IDAwNDM7Ozs7TjtCTEFDSy1MRVRURVIgQzs7OzsKKzIxMkU7RVNUSU1BVEVEIFNZTUJPTDtTbzswO0VUOzs7OztOOzs7OzsKKzIxMkY7U0NSSVBUIFNNQUxMIEU7TGw7MDtMOzxmb250PiAwMDY1Ozs7O047Ozs7OworMjEzMDtTQ1JJUFQgQ0FQSVRBTCBFO0x1OzA7TDs8Zm9udD4gMDA0NTs7OztOO1NDUklQVCBFOzs7OworMjEzMTtTQ1JJUFQgQ0FQSVRBTCBGO0x1OzA7TDs8Zm9udD4gMDA0Njs7OztOO1NDUklQVCBGOzs7OworMjEzMjtUVVJORUQgQ0FQSVRBTCBGO1NvOzA7T047Ozs7O047VFVSTkVEIEY7Ozs7CisyMTMzO1NDUklQVCBDQVBJVEFMIE07THU7MDtMOzxmb250PiAwMDREOzs7O047U0NSSVBUIE07Ozs7CisyMTM0O1NDUklQVCBTTUFMTCBPO0xsOzA7TDs8Zm9udD4gMDA2Rjs7OztOOzs7OzsKKzIxMzU7QUxFRiBTWU1CT0w7TG87MDtMOzxjb21wYXQ+IDA1RDA7Ozs7TjtGSVJTVCBUUkFOU0ZJTklURSBDQVJESU5BTDs7OzsKKzIxMzY7QkVUIFNZTUJPTDtMbzswO0w7PGNvbXBhdD4gMDVEMTs7OztOO1NFQ09ORCBUUkFOU0ZJTklURSBDQVJESU5BTDs7OzsKKzIxMzc7R0lNRUwgU1lNQk9MO0xvOzA7TDs8Y29tcGF0PiAwNUQyOzs7O047VEhJUkQgVFJBTlNGSU5JVEUgQ0FSRElOQUw7Ozs7CisyMTM4O0RBTEVUIFNZTUJPTDtMbzswO0w7PGNvbXBhdD4gMDVEMzs7OztOO0ZPVVJUSCBUUkFOU0ZJTklURSBDQVJESU5BTDs7OzsKKzIxMzk7SU5GT1JNQVRJT04gU09VUkNFO0xsOzA7TDs8Zm9udD4gMDA2OTs7OztOOzs7OzsKKzIxM0E7Uk9UQVRFRCBDQVBJVEFMIFE7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMTNEO0RPVUJMRS1TVFJVQ0sgU01BTEwgR0FNTUE7TGw7MDtMOzxmb250PiAwM0IzOzs7O047Ozs7OworMjEzRTtET1VCTEUtU1RSVUNLIENBUElUQUwgR0FNTUE7THU7MDtMOzxmb250PiAwMzkzOzs7O047Ozs7OworMjEzRjtET1VCTEUtU1RSVUNLIENBUElUQUwgUEk7THU7MDtMOzxmb250PiAwM0EwOzs7O047Ozs7OworMjE0MDtET1VCTEUtU1RSVUNLIE4tQVJZIFNVTU1BVElPTjtTbTswO09OOzxmb250PiAyMjExOzs7O1k7Ozs7OworMjE0MTtUVVJORUQgU0FOUy1TRVJJRiBDQVBJVEFMIEc7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMTQyO1RVUk5FRCBTQU5TLVNFUklGIENBUElUQUwgTDtTbTswO09OOzs7OztOOzs7OzsKKzIxNDM7UkVWRVJTRUQgU0FOUy1TRVJJRiBDQVBJVEFMIEw7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMTQ0O1RVUk5FRCBTQU5TLVNFUklGIENBUElUQUwgWTtTbTswO09OOzs7OztOOzs7OzsKKzIxNDU7RE9VQkxFLVNUUlVDSyBJVEFMSUMgQ0FQSVRBTCBEO0x1OzA7TDs8Zm9udD4gMDA0NDs7OztOOzs7OzsKKzIxNDY7RE9VQkxFLVNUUlVDSyBJVEFMSUMgU01BTEwgRDtMbDswO0w7PGZvbnQ+IDAwNjQ7Ozs7Tjs7Ozs7CisyMTQ3O0RPVUJMRS1TVFJVQ0sgSVRBTElDIFNNQUxMIEU7TGw7MDtMOzxmb250PiAwMDY1Ozs7O047Ozs7OworMjE0ODtET1VCTEUtU1RSVUNLIElUQUxJQyBTTUFMTCBJO0xsOzA7TDs8Zm9udD4gMDA2OTs7OztOOzs7OzsKKzIxNDk7RE9VQkxFLVNUUlVDSyBJVEFMSUMgU01BTEwgSjtMbDswO0w7PGZvbnQ+IDAwNkE7Ozs7Tjs7Ozs7CisyMTRBO1BST1BFUlRZIExJTkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMTRCO1RVUk5FRCBBTVBFUlNBTkQ7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMTUzO1ZVTEdBUiBGUkFDVElPTiBPTkUgVEhJUkQ7Tm87MDtPTjs8ZnJhY3Rpb24+IDAwMzEgMjA0NCAwMDMzOzs7MS8zO047RlJBQ1RJT04gT05FIFRISVJEOzs7OworMjE1NDtWVUxHQVIgRlJBQ1RJT04gVFdPIFRISVJEUztObzswO09OOzxmcmFjdGlvbj4gMDAzMiAyMDQ0IDAwMzM7OzsyLzM7TjtGUkFDVElPTiBUV08gVEhJUkRTOzs7OworMjE1NTtWVUxHQVIgRlJBQ1RJT04gT05FIEZJRlRIO05vOzA7T047PGZyYWN0aW9uPiAwMDMxIDIwNDQgMDAzNTs7OzEvNTtOO0ZSQUNUSU9OIE9ORSBGSUZUSDs7OzsKKzIxNTY7VlVMR0FSIEZSQUNUSU9OIFRXTyBGSUZUSFM7Tm87MDtPTjs8ZnJhY3Rpb24+IDAwMzIgMjA0NCAwMDM1Ozs7Mi81O047RlJBQ1RJT04gVFdPIEZJRlRIUzs7OzsKKzIxNTc7VlVMR0FSIEZSQUNUSU9OIFRIUkVFIEZJRlRIUztObzswO09OOzxmcmFjdGlvbj4gMDAzMyAyMDQ0IDAwMzU7OzszLzU7TjtGUkFDVElPTiBUSFJFRSBGSUZUSFM7Ozs7CisyMTU4O1ZVTEdBUiBGUkFDVElPTiBGT1VSIEZJRlRIUztObzswO09OOzxmcmFjdGlvbj4gMDAzNCAyMDQ0IDAwMzU7Ozs0LzU7TjtGUkFDVElPTiBGT1VSIEZJRlRIUzs7OzsKKzIxNTk7VlVMR0FSIEZSQUNUSU9OIE9ORSBTSVhUSDtObzswO09OOzxmcmFjdGlvbj4gMDAzMSAyMDQ0IDAwMzY7OzsxLzY7TjtGUkFDVElPTiBPTkUgU0lYVEg7Ozs7CisyMTVBO1ZVTEdBUiBGUkFDVElPTiBGSVZFIFNJWFRIUztObzswO09OOzxmcmFjdGlvbj4gMDAzNSAyMDQ0IDAwMzY7Ozs1LzY7TjtGUkFDVElPTiBGSVZFIFNJWFRIUzs7OzsKKzIxNUI7VlVMR0FSIEZSQUNUSU9OIE9ORSBFSUdIVEg7Tm87MDtPTjs8ZnJhY3Rpb24+IDAwMzEgMjA0NCAwMDM4Ozs7MS84O047RlJBQ1RJT04gT05FIEVJR0hUSDs7OzsKKzIxNUM7VlVMR0FSIEZSQUNUSU9OIFRIUkVFIEVJR0hUSFM7Tm87MDtPTjs8ZnJhY3Rpb24+IDAwMzMgMjA0NCAwMDM4Ozs7My84O047RlJBQ1RJT04gVEhSRUUgRUlHSFRIUzs7OzsKKzIxNUQ7VlVMR0FSIEZSQUNUSU9OIEZJVkUgRUlHSFRIUztObzswO09OOzxmcmFjdGlvbj4gMDAzNSAyMDQ0IDAwMzg7Ozs1Lzg7TjtGUkFDVElPTiBGSVZFIEVJR0hUSFM7Ozs7CisyMTVFO1ZVTEdBUiBGUkFDVElPTiBTRVZFTiBFSUdIVEhTO05vOzA7T047PGZyYWN0aW9uPiAwMDM3IDIwNDQgMDAzODs7OzcvODtOO0ZSQUNUSU9OIFNFVkVOIEVJR0hUSFM7Ozs7CisyMTVGO0ZSQUNUSU9OIE5VTUVSQVRPUiBPTkU7Tm87MDtPTjs8ZnJhY3Rpb24+IDAwMzEgMjA0NDs7OzE7Tjs7Ozs7CisyMTYwO1JPTUFOIE5VTUVSQUwgT05FO05sOzA7TDs8Y29tcGF0PiAwMDQ5Ozs7MTtOOzs7OzIxNzA7CisyMTYxO1JPTUFOIE5VTUVSQUwgVFdPO05sOzA7TDs8Y29tcGF0PiAwMDQ5IDAwNDk7OzsyO047Ozs7MjE3MTsKKzIxNjI7Uk9NQU4gTlVNRVJBTCBUSFJFRTtObDswO0w7PGNvbXBhdD4gMDA0OSAwMDQ5IDAwNDk7OzszO047Ozs7MjE3MjsKKzIxNjM7Uk9NQU4gTlVNRVJBTCBGT1VSO05sOzA7TDs8Y29tcGF0PiAwMDQ5IDAwNTY7Ozs0O047Ozs7MjE3MzsKKzIxNjQ7Uk9NQU4gTlVNRVJBTCBGSVZFO05sOzA7TDs8Y29tcGF0PiAwMDU2Ozs7NTtOOzs7OzIxNzQ7CisyMTY1O1JPTUFOIE5VTUVSQUwgU0lYO05sOzA7TDs8Y29tcGF0PiAwMDU2IDAwNDk7Ozs2O047Ozs7MjE3NTsKKzIxNjY7Uk9NQU4gTlVNRVJBTCBTRVZFTjtObDswO0w7PGNvbXBhdD4gMDA1NiAwMDQ5IDAwNDk7Ozs3O047Ozs7MjE3NjsKKzIxNjc7Uk9NQU4gTlVNRVJBTCBFSUdIVDtObDswO0w7PGNvbXBhdD4gMDA1NiAwMDQ5IDAwNDkgMDA0OTs7Ozg7Tjs7OzsyMTc3OworMjE2ODtST01BTiBOVU1FUkFMIE5JTkU7Tmw7MDtMOzxjb21wYXQ+IDAwNDkgMDA1ODs7Ozk7Tjs7OzsyMTc4OworMjE2OTtST01BTiBOVU1FUkFMIFRFTjtObDswO0w7PGNvbXBhdD4gMDA1ODs7OzEwO047Ozs7MjE3OTsKKzIxNkE7Uk9NQU4gTlVNRVJBTCBFTEVWRU47Tmw7MDtMOzxjb21wYXQ+IDAwNTggMDA0OTs7OzExO047Ozs7MjE3QTsKKzIxNkI7Uk9NQU4gTlVNRVJBTCBUV0VMVkU7Tmw7MDtMOzxjb21wYXQ+IDAwNTggMDA0OSAwMDQ5Ozs7MTI7Tjs7OzsyMTdCOworMjE2QztST01BTiBOVU1FUkFMIEZJRlRZO05sOzA7TDs8Y29tcGF0PiAwMDRDOzs7NTA7Tjs7OzsyMTdDOworMjE2RDtST01BTiBOVU1FUkFMIE9ORSBIVU5EUkVEO05sOzA7TDs8Y29tcGF0PiAwMDQzOzs7MTAwO047Ozs7MjE3RDsKKzIxNkU7Uk9NQU4gTlVNRVJBTCBGSVZFIEhVTkRSRUQ7Tmw7MDtMOzxjb21wYXQ+IDAwNDQ7Ozs1MDA7Tjs7OzsyMTdFOworMjE2RjtST01BTiBOVU1FUkFMIE9ORSBUSE9VU0FORDtObDswO0w7PGNvbXBhdD4gMDA0RDs7OzEwMDA7Tjs7OzsyMTdGOworMjE3MDtTTUFMTCBST01BTiBOVU1FUkFMIE9ORTtObDswO0w7PGNvbXBhdD4gMDA2OTs7OzE7Tjs7OzIxNjA7OzIxNjAKKzIxNzE7U01BTEwgUk9NQU4gTlVNRVJBTCBUV087Tmw7MDtMOzxjb21wYXQ+IDAwNjkgMDA2OTs7OzI7Tjs7OzIxNjE7OzIxNjEKKzIxNzI7U01BTEwgUk9NQU4gTlVNRVJBTCBUSFJFRTtObDswO0w7PGNvbXBhdD4gMDA2OSAwMDY5IDAwNjk7OzszO047OzsyMTYyOzsyMTYyCisyMTczO1NNQUxMIFJPTUFOIE5VTUVSQUwgRk9VUjtObDswO0w7PGNvbXBhdD4gMDA2OSAwMDc2Ozs7NDtOOzs7MjE2Mzs7MjE2MworMjE3NDtTTUFMTCBST01BTiBOVU1FUkFMIEZJVkU7Tmw7MDtMOzxjb21wYXQ+IDAwNzY7Ozs1O047OzsyMTY0OzsyMTY0CisyMTc1O1NNQUxMIFJPTUFOIE5VTUVSQUwgU0lYO05sOzA7TDs8Y29tcGF0PiAwMDc2IDAwNjk7Ozs2O047OzsyMTY1OzsyMTY1CisyMTc2O1NNQUxMIFJPTUFOIE5VTUVSQUwgU0VWRU47Tmw7MDtMOzxjb21wYXQ+IDAwNzYgMDA2OSAwMDY5Ozs7NztOOzs7MjE2Njs7MjE2NgorMjE3NztTTUFMTCBST01BTiBOVU1FUkFMIEVJR0hUO05sOzA7TDs8Y29tcGF0PiAwMDc2IDAwNjkgMDA2OSAwMDY5Ozs7ODtOOzs7MjE2Nzs7MjE2NworMjE3ODtTTUFMTCBST01BTiBOVU1FUkFMIE5JTkU7Tmw7MDtMOzxjb21wYXQ+IDAwNjkgMDA3ODs7Ozk7Tjs7OzIxNjg7OzIxNjgKKzIxNzk7U01BTEwgUk9NQU4gTlVNRVJBTCBURU47Tmw7MDtMOzxjb21wYXQ+IDAwNzg7OzsxMDtOOzs7MjE2OTs7MjE2OQorMjE3QTtTTUFMTCBST01BTiBOVU1FUkFMIEVMRVZFTjtObDswO0w7PGNvbXBhdD4gMDA3OCAwMDY5Ozs7MTE7Tjs7OzIxNkE7OzIxNkEKKzIxN0I7U01BTEwgUk9NQU4gTlVNRVJBTCBUV0VMVkU7Tmw7MDtMOzxjb21wYXQ+IDAwNzggMDA2OSAwMDY5Ozs7MTI7Tjs7OzIxNkI7OzIxNkIKKzIxN0M7U01BTEwgUk9NQU4gTlVNRVJBTCBGSUZUWTtObDswO0w7PGNvbXBhdD4gMDA2Qzs7OzUwO047OzsyMTZDOzsyMTZDCisyMTdEO1NNQUxMIFJPTUFOIE5VTUVSQUwgT05FIEhVTkRSRUQ7Tmw7MDtMOzxjb21wYXQ+IDAwNjM7OzsxMDA7Tjs7OzIxNkQ7OzIxNkQKKzIxN0U7U01BTEwgUk9NQU4gTlVNRVJBTCBGSVZFIEhVTkRSRUQ7Tmw7MDtMOzxjb21wYXQ+IDAwNjQ7Ozs1MDA7Tjs7OzIxNkU7OzIxNkUKKzIxN0Y7U01BTEwgUk9NQU4gTlVNRVJBTCBPTkUgVEhPVVNBTkQ7Tmw7MDtMOzxjb21wYXQ+IDAwNkQ7OzsxMDAwO047OzsyMTZGOzsyMTZGCisyMTgwO1JPTUFOIE5VTUVSQUwgT05FIFRIT1VTQU5EIEMgRDtObDswO0w7Ozs7MTAwMDtOOzs7OzsKKzIxODE7Uk9NQU4gTlVNRVJBTCBGSVZFIFRIT1VTQU5EO05sOzA7TDs7Ozs1MDAwO047Ozs7OworMjE4MjtST01BTiBOVU1FUkFMIFRFTiBUSE9VU0FORDtObDswO0w7Ozs7MTAwMDA7Tjs7Ozs7CisyMTgzO1JPTUFOIE5VTUVSQUwgUkVWRVJTRUQgT05FIEhVTkRSRUQ7Tmw7MDtMOzs7OztOOzs7OzsKKzIxOTA7TEVGVFdBUkRTIEFSUk9XO1NtOzA7T047Ozs7O047TEVGVCBBUlJPVzs7OzsKKzIxOTE7VVBXQVJEUyBBUlJPVztTbTswO09OOzs7OztOO1VQIEFSUk9XOzs7OworMjE5MjtSSUdIVFdBUkRTIEFSUk9XO1NtOzA7T047Ozs7O047UklHSFQgQVJST1c7Ozs7CisyMTkzO0RPV05XQVJEUyBBUlJPVztTbTswO09OOzs7OztOO0RPV04gQVJST1c7Ozs7CisyMTk0O0xFRlQgUklHSFQgQVJST1c7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMTk1O1VQIERPV04gQVJST1c7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMTk2O05PUlRIIFdFU1QgQVJST1c7U287MDtPTjs7Ozs7TjtVUFBFUiBMRUZUIEFSUk9XOzs7OworMjE5NztOT1JUSCBFQVNUIEFSUk9XO1NvOzA7T047Ozs7O047VVBQRVIgUklHSFQgQVJST1c7Ozs7CisyMTk4O1NPVVRIIEVBU1QgQVJST1c7U287MDtPTjs7Ozs7TjtMT1dFUiBSSUdIVCBBUlJPVzs7OzsKKzIxOTk7U09VVEggV0VTVCBBUlJPVztTbzswO09OOzs7OztOO0xPV0VSIExFRlQgQVJST1c7Ozs7CisyMTlBO0xFRlRXQVJEUyBBUlJPVyBXSVRIIFNUUk9LRTtTbTswO09OOzIxOTAgMDMzODs7OztOO0xFRlQgQVJST1cgV0lUSCBTVFJPS0U7Ozs7CisyMTlCO1JJR0hUV0FSRFMgQVJST1cgV0lUSCBTVFJPS0U7U207MDtPTjsyMTkyIDAzMzg7Ozs7TjtSSUdIVCBBUlJPVyBXSVRIIFNUUk9LRTs7OzsKKzIxOUM7TEVGVFdBUkRTIFdBVkUgQVJST1c7U287MDtPTjs7Ozs7TjtMRUZUIFdBVkUgQVJST1c7Ozs7CisyMTlEO1JJR0hUV0FSRFMgV0FWRSBBUlJPVztTbzswO09OOzs7OztOO1JJR0hUIFdBVkUgQVJST1c7Ozs7CisyMTlFO0xFRlRXQVJEUyBUV08gSEVBREVEIEFSUk9XO1NvOzA7T047Ozs7O047TEVGVCBUV08gSEVBREVEIEFSUk9XOzs7OworMjE5RjtVUFdBUkRTIFRXTyBIRUFERUQgQVJST1c7U287MDtPTjs7Ozs7TjtVUCBUV08gSEVBREVEIEFSUk9XOzs7OworMjFBMDtSSUdIVFdBUkRTIFRXTyBIRUFERUQgQVJST1c7U207MDtPTjs7Ozs7TjtSSUdIVCBUV08gSEVBREVEIEFSUk9XOzs7OworMjFBMTtET1dOV0FSRFMgVFdPIEhFQURFRCBBUlJPVztTbzswO09OOzs7OztOO0RPV04gVFdPIEhFQURFRCBBUlJPVzs7OzsKKzIxQTI7TEVGVFdBUkRTIEFSUk9XIFdJVEggVEFJTDtTbzswO09OOzs7OztOO0xFRlQgQVJST1cgV0lUSCBUQUlMOzs7OworMjFBMztSSUdIVFdBUkRTIEFSUk9XIFdJVEggVEFJTDtTbTswO09OOzs7OztOO1JJR0hUIEFSUk9XIFdJVEggVEFJTDs7OzsKKzIxQTQ7TEVGVFdBUkRTIEFSUk9XIEZST00gQkFSO1NvOzA7T047Ozs7O047TEVGVCBBUlJPVyBGUk9NIEJBUjs7OzsKKzIxQTU7VVBXQVJEUyBBUlJPVyBGUk9NIEJBUjtTbzswO09OOzs7OztOO1VQIEFSUk9XIEZST00gQkFSOzs7OworMjFBNjtSSUdIVFdBUkRTIEFSUk9XIEZST00gQkFSO1NtOzA7T047Ozs7O047UklHSFQgQVJST1cgRlJPTSBCQVI7Ozs7CisyMUE3O0RPV05XQVJEUyBBUlJPVyBGUk9NIEJBUjtTbzswO09OOzs7OztOO0RPV04gQVJST1cgRlJPTSBCQVI7Ozs7CisyMUE4O1VQIERPV04gQVJST1cgV0lUSCBCQVNFO1NvOzA7T047Ozs7O047Ozs7OworMjFBOTtMRUZUV0FSRFMgQVJST1cgV0lUSCBIT09LO1NvOzA7T047Ozs7O047TEVGVCBBUlJPVyBXSVRIIEhPT0s7Ozs7CisyMUFBO1JJR0hUV0FSRFMgQVJST1cgV0lUSCBIT09LO1NvOzA7T047Ozs7O047UklHSFQgQVJST1cgV0lUSCBIT09LOzs7OworMjFBQjtMRUZUV0FSRFMgQVJST1cgV0lUSCBMT09QO1NvOzA7T047Ozs7O047TEVGVCBBUlJPVyBXSVRIIExPT1A7Ozs7CisyMUFDO1JJR0hUV0FSRFMgQVJST1cgV0lUSCBMT09QO1NvOzA7T047Ozs7O047UklHSFQgQVJST1cgV0lUSCBMT09QOzs7OworMjFBRDtMRUZUIFJJR0hUIFdBVkUgQVJST1c7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMUFFO0xFRlQgUklHSFQgQVJST1cgV0lUSCBTVFJPS0U7U207MDtPTjsyMTk0IDAzMzg7Ozs7Tjs7Ozs7CisyMUFGO0RPV05XQVJEUyBaSUdaQUcgQVJST1c7U287MDtPTjs7Ozs7TjtET1dOIFpJR1pBRyBBUlJPVzs7OzsKKzIxQjA7VVBXQVJEUyBBUlJPVyBXSVRIIFRJUCBMRUZUV0FSRFM7U287MDtPTjs7Ozs7TjtVUCBBUlJPVyBXSVRIIFRJUCBMRUZUOzs7OworMjFCMTtVUFdBUkRTIEFSUk9XIFdJVEggVElQIFJJR0hUV0FSRFM7U287MDtPTjs7Ozs7TjtVUCBBUlJPVyBXSVRIIFRJUCBSSUdIVDs7OzsKKzIxQjI7RE9XTldBUkRTIEFSUk9XIFdJVEggVElQIExFRlRXQVJEUztTbzswO09OOzs7OztOO0RPV04gQVJST1cgV0lUSCBUSVAgTEVGVDs7OzsKKzIxQjM7RE9XTldBUkRTIEFSUk9XIFdJVEggVElQIFJJR0hUV0FSRFM7U287MDtPTjs7Ozs7TjtET1dOIEFSUk9XIFdJVEggVElQIFJJR0hUOzs7OworMjFCNDtSSUdIVFdBUkRTIEFSUk9XIFdJVEggQ09STkVSIERPV05XQVJEUztTbzswO09OOzs7OztOO1JJR0hUIEFSUk9XIFdJVEggQ09STkVSIERPV047Ozs7CisyMUI1O0RPV05XQVJEUyBBUlJPVyBXSVRIIENPUk5FUiBMRUZUV0FSRFM7U287MDtPTjs7Ozs7TjtET1dOIEFSUk9XIFdJVEggQ09STkVSIExFRlQ7Ozs7CisyMUI2O0FOVElDTE9DS1dJU0UgVE9QIFNFTUlDSVJDTEUgQVJST1c7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMUI3O0NMT0NLV0lTRSBUT1AgU0VNSUNJUkNMRSBBUlJPVztTbzswO09OOzs7OztOOzs7OzsKKzIxQjg7Tk9SVEggV0VTVCBBUlJPVyBUTyBMT05HIEJBUjtTbzswO09OOzs7OztOO1VQUEVSIExFRlQgQVJST1cgVE8gTE9ORyBCQVI7Ozs7CisyMUI5O0xFRlRXQVJEUyBBUlJPVyBUTyBCQVIgT1ZFUiBSSUdIVFdBUkRTIEFSUk9XIFRPIEJBUjtTbzswO09OOzs7OztOO0xFRlQgQVJST1cgVE8gQkFSIE9WRVIgUklHSFQgQVJST1cgVE8gQkFSOzs7OworMjFCQTtBTlRJQ0xPQ0tXSVNFIE9QRU4gQ0lSQ0xFIEFSUk9XO1NvOzA7T047Ozs7O047Ozs7OworMjFCQjtDTE9DS1dJU0UgT1BFTiBDSVJDTEUgQVJST1c7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMUJDO0xFRlRXQVJEUyBIQVJQT09OIFdJVEggQkFSQiBVUFdBUkRTO1NvOzA7T047Ozs7O047TEVGVCBIQVJQT09OIFdJVEggQkFSQiBVUDs7OzsKKzIxQkQ7TEVGVFdBUkRTIEhBUlBPT04gV0lUSCBCQVJCIERPV05XQVJEUztTbzswO09OOzs7OztOO0xFRlQgSEFSUE9PTiBXSVRIIEJBUkIgRE9XTjs7OzsKKzIxQkU7VVBXQVJEUyBIQVJQT09OIFdJVEggQkFSQiBSSUdIVFdBUkRTO1NvOzA7T047Ozs7O047VVAgSEFSUE9PTiBXSVRIIEJBUkIgUklHSFQ7Ozs7CisyMUJGO1VQV0FSRFMgSEFSUE9PTiBXSVRIIEJBUkIgTEVGVFdBUkRTO1NvOzA7T047Ozs7O047VVAgSEFSUE9PTiBXSVRIIEJBUkIgTEVGVDs7OzsKKzIxQzA7UklHSFRXQVJEUyBIQVJQT09OIFdJVEggQkFSQiBVUFdBUkRTO1NvOzA7T047Ozs7O047UklHSFQgSEFSUE9PTiBXSVRIIEJBUkIgVVA7Ozs7CisyMUMxO1JJR0hUV0FSRFMgSEFSUE9PTiBXSVRIIEJBUkIgRE9XTldBUkRTO1NvOzA7T047Ozs7O047UklHSFQgSEFSUE9PTiBXSVRIIEJBUkIgRE9XTjs7OzsKKzIxQzI7RE9XTldBUkRTIEhBUlBPT04gV0lUSCBCQVJCIFJJR0hUV0FSRFM7U287MDtPTjs7Ozs7TjtET1dOIEhBUlBPT04gV0lUSCBCQVJCIFJJR0hUOzs7OworMjFDMztET1dOV0FSRFMgSEFSUE9PTiBXSVRIIEJBUkIgTEVGVFdBUkRTO1NvOzA7T047Ozs7O047RE9XTiBIQVJQT09OIFdJVEggQkFSQiBMRUZUOzs7OworMjFDNDtSSUdIVFdBUkRTIEFSUk9XIE9WRVIgTEVGVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047UklHSFQgQVJST1cgT1ZFUiBMRUZUIEFSUk9XOzs7OworMjFDNTtVUFdBUkRTIEFSUk9XIExFRlRXQVJEUyBPRiBET1dOV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtVUCBBUlJPVyBMRUZUIE9GIERPV04gQVJST1c7Ozs7CisyMUM2O0xFRlRXQVJEUyBBUlJPVyBPVkVSIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtMRUZUIEFSUk9XIE9WRVIgUklHSFQgQVJST1c7Ozs7CisyMUM3O0xFRlRXQVJEUyBQQUlSRUQgQVJST1dTO1NvOzA7T047Ozs7O047TEVGVCBQQUlSRUQgQVJST1dTOzs7OworMjFDODtVUFdBUkRTIFBBSVJFRCBBUlJPV1M7U287MDtPTjs7Ozs7TjtVUCBQQUlSRUQgQVJST1dTOzs7OworMjFDOTtSSUdIVFdBUkRTIFBBSVJFRCBBUlJPV1M7U287MDtPTjs7Ozs7TjtSSUdIVCBQQUlSRUQgQVJST1dTOzs7OworMjFDQTtET1dOV0FSRFMgUEFJUkVEIEFSUk9XUztTbzswO09OOzs7OztOO0RPV04gUEFJUkVEIEFSUk9XUzs7OzsKKzIxQ0I7TEVGVFdBUkRTIEhBUlBPT04gT1ZFUiBSSUdIVFdBUkRTIEhBUlBPT047U287MDtPTjs7Ozs7TjtMRUZUIEhBUlBPT04gT1ZFUiBSSUdIVCBIQVJQT09OOzs7OworMjFDQztSSUdIVFdBUkRTIEhBUlBPT04gT1ZFUiBMRUZUV0FSRFMgSEFSUE9PTjtTbzswO09OOzs7OztOO1JJR0hUIEhBUlBPT04gT1ZFUiBMRUZUIEhBUlBPT047Ozs7CisyMUNEO0xFRlRXQVJEUyBET1VCTEUgQVJST1cgV0lUSCBTVFJPS0U7U287MDtPTjsyMUQwIDAzMzg7Ozs7TjtMRUZUIERPVUJMRSBBUlJPVyBXSVRIIFNUUk9LRTs7OzsKKzIxQ0U7TEVGVCBSSUdIVCBET1VCTEUgQVJST1cgV0lUSCBTVFJPS0U7U207MDtPTjsyMUQ0IDAzMzg7Ozs7Tjs7Ozs7CisyMUNGO1JJR0hUV0FSRFMgRE9VQkxFIEFSUk9XIFdJVEggU1RST0tFO1NtOzA7T047MjFEMiAwMzM4Ozs7O047UklHSFQgRE9VQkxFIEFSUk9XIFdJVEggU1RST0tFOzs7OworMjFEMDtMRUZUV0FSRFMgRE9VQkxFIEFSUk9XO1NvOzA7T047Ozs7O047TEVGVCBET1VCTEUgQVJST1c7Ozs7CisyMUQxO1VQV0FSRFMgRE9VQkxFIEFSUk9XO1NvOzA7T047Ozs7O047VVAgRE9VQkxFIEFSUk9XOzs7OworMjFEMjtSSUdIVFdBUkRTIERPVUJMRSBBUlJPVztTbTswO09OOzs7OztOO1JJR0hUIERPVUJMRSBBUlJPVzs7OzsKKzIxRDM7RE9XTldBUkRTIERPVUJMRSBBUlJPVztTbzswO09OOzs7OztOO0RPV04gRE9VQkxFIEFSUk9XOzs7OworMjFENDtMRUZUIFJJR0hUIERPVUJMRSBBUlJPVztTbTswO09OOzs7OztOOzs7OzsKKzIxRDU7VVAgRE9XTiBET1VCTEUgQVJST1c7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMUQ2O05PUlRIIFdFU1QgRE9VQkxFIEFSUk9XO1NvOzA7T047Ozs7O047VVBQRVIgTEVGVCBET1VCTEUgQVJST1c7Ozs7CisyMUQ3O05PUlRIIEVBU1QgRE9VQkxFIEFSUk9XO1NvOzA7T047Ozs7O047VVBQRVIgUklHSFQgRE9VQkxFIEFSUk9XOzs7OworMjFEODtTT1VUSCBFQVNUIERPVUJMRSBBUlJPVztTbzswO09OOzs7OztOO0xPV0VSIFJJR0hUIERPVUJMRSBBUlJPVzs7OzsKKzIxRDk7U09VVEggV0VTVCBET1VCTEUgQVJST1c7U287MDtPTjs7Ozs7TjtMT1dFUiBMRUZUIERPVUJMRSBBUlJPVzs7OzsKKzIxREE7TEVGVFdBUkRTIFRSSVBMRSBBUlJPVztTbzswO09OOzs7OztOO0xFRlQgVFJJUExFIEFSUk9XOzs7OworMjFEQjtSSUdIVFdBUkRTIFRSSVBMRSBBUlJPVztTbzswO09OOzs7OztOO1JJR0hUIFRSSVBMRSBBUlJPVzs7OzsKKzIxREM7TEVGVFdBUkRTIFNRVUlHR0xFIEFSUk9XO1NvOzA7T047Ozs7O047TEVGVCBTUVVJR0dMRSBBUlJPVzs7OzsKKzIxREQ7UklHSFRXQVJEUyBTUVVJR0dMRSBBUlJPVztTbzswO09OOzs7OztOO1JJR0hUIFNRVUlHR0xFIEFSUk9XOzs7OworMjFERTtVUFdBUkRTIEFSUk9XIFdJVEggRE9VQkxFIFNUUk9LRTtTbzswO09OOzs7OztOO1VQIEFSUk9XIFdJVEggRE9VQkxFIFNUUk9LRTs7OzsKKzIxREY7RE9XTldBUkRTIEFSUk9XIFdJVEggRE9VQkxFIFNUUk9LRTtTbzswO09OOzs7OztOO0RPV04gQVJST1cgV0lUSCBET1VCTEUgU1RST0tFOzs7OworMjFFMDtMRUZUV0FSRFMgREFTSEVEIEFSUk9XO1NvOzA7T047Ozs7O047TEVGVCBEQVNIRUQgQVJST1c7Ozs7CisyMUUxO1VQV0FSRFMgREFTSEVEIEFSUk9XO1NvOzA7T047Ozs7O047VVAgREFTSEVEIEFSUk9XOzs7OworMjFFMjtSSUdIVFdBUkRTIERBU0hFRCBBUlJPVztTbzswO09OOzs7OztOO1JJR0hUIERBU0hFRCBBUlJPVzs7OzsKKzIxRTM7RE9XTldBUkRTIERBU0hFRCBBUlJPVztTbzswO09OOzs7OztOO0RPV04gREFTSEVEIEFSUk9XOzs7OworMjFFNDtMRUZUV0FSRFMgQVJST1cgVE8gQkFSO1NvOzA7T047Ozs7O047TEVGVCBBUlJPVyBUTyBCQVI7Ozs7CisyMUU1O1JJR0hUV0FSRFMgQVJST1cgVE8gQkFSO1NvOzA7T047Ozs7O047UklHSFQgQVJST1cgVE8gQkFSOzs7OworMjFFNjtMRUZUV0FSRFMgV0hJVEUgQVJST1c7U287MDtPTjs7Ozs7TjtXSElURSBMRUZUIEFSUk9XOzs7OworMjFFNztVUFdBUkRTIFdISVRFIEFSUk9XO1NvOzA7T047Ozs7O047V0hJVEUgVVAgQVJST1c7Ozs7CisyMUU4O1JJR0hUV0FSRFMgV0hJVEUgQVJST1c7U287MDtPTjs7Ozs7TjtXSElURSBSSUdIVCBBUlJPVzs7OzsKKzIxRTk7RE9XTldBUkRTIFdISVRFIEFSUk9XO1NvOzA7T047Ozs7O047V0hJVEUgRE9XTiBBUlJPVzs7OzsKKzIxRUE7VVBXQVJEUyBXSElURSBBUlJPVyBGUk9NIEJBUjtTbzswO09OOzs7OztOO1dISVRFIFVQIEFSUk9XIEZST00gQkFSOzs7OworMjFFQjtVUFdBUkRTIFdISVRFIEFSUk9XIE9OIFBFREVTVEFMO1NvOzA7T047Ozs7O047Ozs7OworMjFFQztVUFdBUkRTIFdISVRFIEFSUk9XIE9OIFBFREVTVEFMIFdJVEggSE9SSVpPTlRBTCBCQVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMUVEO1VQV0FSRFMgV0hJVEUgQVJST1cgT04gUEVERVNUQUwgV0lUSCBWRVJUSUNBTCBCQVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMUVFO1VQV0FSRFMgV0hJVEUgRE9VQkxFIEFSUk9XO1NvOzA7T047Ozs7O047Ozs7OworMjFFRjtVUFdBUkRTIFdISVRFIERPVUJMRSBBUlJPVyBPTiBQRURFU1RBTDtTbzswO09OOzs7OztOOzs7OzsKKzIxRjA7UklHSFRXQVJEUyBXSElURSBBUlJPVyBGUk9NIFdBTEw7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMUYxO05PUlRIIFdFU1QgQVJST1cgVE8gQ09STkVSO1NvOzA7T047Ozs7O047Ozs7OworMjFGMjtTT1VUSCBFQVNUIEFSUk9XIFRPIENPUk5FUjtTbzswO09OOzs7OztOOzs7OzsKKzIxRjM7VVAgRE9XTiBXSElURSBBUlJPVztTbzswO09OOzs7OztOOzs7OzsKKzIxRjQ7UklHSFQgQVJST1cgV0lUSCBTTUFMTCBDSVJDTEU7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMUY1O0RPV05XQVJEUyBBUlJPVyBMRUZUV0FSRFMgT0YgVVBXQVJEUyBBUlJPVztTbTswO09OOzs7OztOOzs7OzsKKzIxRjY7VEhSRUUgUklHSFRXQVJEUyBBUlJPV1M7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMUY3O0xFRlRXQVJEUyBBUlJPVyBXSVRIIFZFUlRJQ0FMIFNUUk9LRTtTbTswO09OOzs7OztOOzs7OzsKKzIxRjg7UklHSFRXQVJEUyBBUlJPVyBXSVRIIFZFUlRJQ0FMIFNUUk9LRTtTbTswO09OOzs7OztOOzs7OzsKKzIxRjk7TEVGVCBSSUdIVCBBUlJPVyBXSVRIIFZFUlRJQ0FMIFNUUk9LRTtTbTswO09OOzs7OztOOzs7OzsKKzIxRkE7TEVGVFdBUkRTIEFSUk9XIFdJVEggRE9VQkxFIFZFUlRJQ0FMIFNUUk9LRTtTbTswO09OOzs7OztOOzs7OzsKKzIxRkI7UklHSFRXQVJEUyBBUlJPVyBXSVRIIERPVUJMRSBWRVJUSUNBTCBTVFJPS0U7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMUZDO0xFRlQgUklHSFQgQVJST1cgV0lUSCBET1VCTEUgVkVSVElDQUwgU1RST0tFO1NtOzA7T047Ozs7O047Ozs7OworMjFGRDtMRUZUV0FSRFMgT1BFTi1IRUFERUQgQVJST1c7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMUZFO1JJR0hUV0FSRFMgT1BFTi1IRUFERUQgQVJST1c7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMUZGO0xFRlQgUklHSFQgT1BFTi1IRUFERUQgQVJST1c7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjAwO0ZPUiBBTEw7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjAxO0NPTVBMRU1FTlQ7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjAyO1BBUlRJQUwgRElGRkVSRU5USUFMO1NtOzA7T047Ozs7O1k7Ozs7OworMjIwMztUSEVSRSBFWElTVFM7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjA0O1RIRVJFIERPRVMgTk9UIEVYSVNUO1NtOzA7T047MjIwMyAwMzM4Ozs7O1k7Ozs7OworMjIwNTtFTVBUWSBTRVQ7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjA2O0lOQ1JFTUVOVDtTbTswO09OOzs7OztOOzs7OzsKKzIyMDc7TkFCTEE7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjA4O0VMRU1FTlQgT0Y7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjA5O05PVCBBTiBFTEVNRU5UIE9GO1NtOzA7T047MjIwOCAwMzM4Ozs7O1k7Ozs7OworMjIwQTtTTUFMTCBFTEVNRU5UIE9GO1NtOzA7T047Ozs7O1k7Ozs7OworMjIwQjtDT05UQUlOUyBBUyBNRU1CRVI7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjBDO0RPRVMgTk9UIENPTlRBSU4gQVMgTUVNQkVSO1NtOzA7T047MjIwQiAwMzM4Ozs7O1k7Ozs7OworMjIwRDtTTUFMTCBDT05UQUlOUyBBUyBNRU1CRVI7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjBFO0VORCBPRiBQUk9PRjtTbTswO09OOzs7OztOOzs7OzsKKzIyMEY7Ti1BUlkgUFJPRFVDVDtTbTswO09OOzs7OztOOzs7OzsKKzIyMTA7Ti1BUlkgQ09QUk9EVUNUO1NtOzA7T047Ozs7O047Ozs7OworMjIxMTtOLUFSWSBTVU1NQVRJT047U207MDtPTjs7Ozs7WTs7Ozs7CisyMjEyO01JTlVTIFNJR047U207MDtFVDs7Ozs7Tjs7Ozs7CisyMjEzO01JTlVTLU9SLVBMVVMgU0lHTjtTbTswO0VUOzs7OztOOzs7OzsKKzIyMTQ7RE9UIFBMVVM7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjE1O0RJVklTSU9OIFNMQVNIO1NtOzA7T047Ozs7O1k7Ozs7OworMjIxNjtTRVQgTUlOVVM7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjE3O0FTVEVSSVNLIE9QRVJBVE9SO1NtOzA7T047Ozs7O047Ozs7OworMjIxODtSSU5HIE9QRVJBVE9SO1NtOzA7T047Ozs7O047Ozs7OworMjIxOTtCVUxMRVQgT1BFUkFUT1I7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjFBO1NRVUFSRSBST09UO1NtOzA7T047Ozs7O1k7Ozs7OworMjIxQjtDVUJFIFJPT1Q7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjFDO0ZPVVJUSCBST09UO1NtOzA7T047Ozs7O1k7Ozs7OworMjIxRDtQUk9QT1JUSU9OQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMjFFO0lORklOSVRZO1NtOzA7T047Ozs7O047Ozs7OworMjIxRjtSSUdIVCBBTkdMRTtTbTswO09OOzs7OztZOzs7OzsKKzIyMjA7QU5HTEU7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjIxO01FQVNVUkVEIEFOR0xFO1NtOzA7T047Ozs7O1k7Ozs7OworMjIyMjtTUEhFUklDQUwgQU5HTEU7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjIzO0RJVklERVM7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjI0O0RPRVMgTk9UIERJVklERTtTbTswO09OOzIyMjMgMDMzODs7OztZOzs7OzsKKzIyMjU7UEFSQUxMRUwgVE87U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjI2O05PVCBQQVJBTExFTCBUTztTbTswO09OOzIyMjUgMDMzODs7OztZOzs7OzsKKzIyMjc7TE9HSUNBTCBBTkQ7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjI4O0xPR0lDQUwgT1I7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjI5O0lOVEVSU0VDVElPTjtTbTswO09OOzs7OztOOzs7OzsKKzIyMkE7VU5JT047U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjJCO0lOVEVHUkFMO1NtOzA7T047Ozs7O1k7Ozs7OworMjIyQztET1VCTEUgSU5URUdSQUw7U207MDtPTjs8Y29tcGF0PiAyMjJCIDIyMkI7Ozs7WTs7Ozs7CisyMjJEO1RSSVBMRSBJTlRFR1JBTDtTbTswO09OOzxjb21wYXQ+IDIyMkIgMjIyQiAyMjJCOzs7O1k7Ozs7OworMjIyRTtDT05UT1VSIElOVEVHUkFMO1NtOzA7T047Ozs7O1k7Ozs7OworMjIyRjtTVVJGQUNFIElOVEVHUkFMO1NtOzA7T047PGNvbXBhdD4gMjIyRSAyMjJFOzs7O1k7Ozs7OworMjIzMDtWT0xVTUUgSU5URUdSQUw7U207MDtPTjs8Y29tcGF0PiAyMjJFIDIyMkUgMjIyRTs7OztZOzs7OzsKKzIyMzE7Q0xPQ0tXSVNFIElOVEVHUkFMO1NtOzA7T047Ozs7O1k7Ozs7OworMjIzMjtDTE9DS1dJU0UgQ09OVE9VUiBJTlRFR1JBTDtTbTswO09OOzs7OztZOzs7OzsKKzIyMzM7QU5USUNMT0NLV0lTRSBDT05UT1VSIElOVEVHUkFMO1NtOzA7T047Ozs7O1k7Ozs7OworMjIzNDtUSEVSRUZPUkU7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjM1O0JFQ0FVU0U7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjM2O1JBVElPO1NtOzA7T047Ozs7O047Ozs7OworMjIzNztQUk9QT1JUSU9OO1NtOzA7T047Ozs7O047Ozs7OworMjIzODtET1QgTUlOVVM7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjM5O0VYQ0VTUztTbTswO09OOzs7OztZOzs7OzsKKzIyM0E7R0VPTUVUUklDIFBST1BPUlRJT047U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjNCO0hPTU9USEVUSUM7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjNDO1RJTERFIE9QRVJBVE9SO1NtOzA7T047Ozs7O1k7Ozs7OworMjIzRDtSRVZFUlNFRCBUSUxERTtTbTswO09OOzs7OztZOztsYXp5IFM7OzsKKzIyM0U7SU5WRVJURUQgTEFaWSBTO1NtOzA7T047Ozs7O1k7Ozs7OworMjIzRjtTSU5FIFdBVkU7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjQwO1dSRUFUSCBQUk9EVUNUO1NtOzA7T047Ozs7O1k7Ozs7OworMjI0MTtOT1QgVElMREU7U207MDtPTjsyMjNDIDAzMzg7Ozs7WTs7Ozs7CisyMjQyO01JTlVTIFRJTERFO1NtOzA7T047Ozs7O1k7Ozs7OworMjI0MztBU1lNUFRPVElDQUxMWSBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyNDQ7Tk9UIEFTWU1QVE9USUNBTExZIEVRVUFMIFRPO1NtOzA7T047MjI0MyAwMzM4Ozs7O1k7Ozs7OworMjI0NTtBUFBST1hJTUFURUxZIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjI0NjtBUFBST1hJTUFURUxZIEJVVCBOT1QgQUNUVUFMTFkgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMjQ3O05FSVRIRVIgQVBQUk9YSU1BVEVMWSBOT1IgQUNUVUFMTFkgRVFVQUwgVE87U207MDtPTjsyMjQ1IDAzMzg7Ozs7WTs7Ozs7CisyMjQ4O0FMTU9TVCBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyNDk7Tk9UIEFMTU9TVCBFUVVBTCBUTztTbTswO09OOzIyNDggMDMzODs7OztZOzs7OzsKKzIyNEE7QUxNT1NUIEVRVUFMIE9SIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjI0QjtUUklQTEUgVElMREU7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjRDO0FMTCBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyNEQ7RVFVSVZBTEVOVCBUTztTbTswO09OOzs7OztOOzs7OzsKKzIyNEU7R0VPTUVUUklDQUxMWSBFUVVJVkFMRU5UIFRPO1NtOzA7T047Ozs7O047Ozs7OworMjI0RjtESUZGRVJFTkNFIEJFVFdFRU47U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjUwO0FQUFJPQUNIRVMgVEhFIExJTUlUO1NtOzA7T047Ozs7O047Ozs7OworMjI1MTtHRU9NRVRSSUNBTExZIEVRVUFMIFRPO1NtOzA7T047Ozs7O047Ozs7OworMjI1MjtBUFBST1hJTUFURUxZIEVRVUFMIFRPIE9SIFRIRSBJTUFHRSBPRjtTbTswO09OOzs7OztZOzs7OzsKKzIyNTM7SU1BR0UgT0YgT1IgQVBQUk9YSU1BVEVMWSBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyNTQ7Q09MT04gRVFVQUxTO1NtOzA7T047Ozs7O1k7Q09MT04gRVFVQUw7Ozs7CisyMjU1O0VRVUFMUyBDT0xPTjtTbTswO09OOzs7OztZO0VRVUFMIENPTE9OOzs7OworMjI1NjtSSU5HIElOIEVRVUFMIFRPO1NtOzA7T047Ozs7O047Ozs7OworMjI1NztSSU5HIEVRVUFMIFRPO1NtOzA7T047Ozs7O047Ozs7OworMjI1ODtDT1JSRVNQT05EUyBUTztTbTswO09OOzs7OztOOzs7OzsKKzIyNTk7RVNUSU1BVEVTO1NtOzA7T047Ozs7O047Ozs7OworMjI1QTtFUVVJQU5HVUxBUiBUTztTbTswO09OOzs7OztOOzs7OzsKKzIyNUI7U1RBUiBFUVVBTFM7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjVDO0RFTFRBIEVRVUFMIFRPO1NtOzA7T047Ozs7O047Ozs7OworMjI1RDtFUVVBTCBUTyBCWSBERUZJTklUSU9OO1NtOzA7T047Ozs7O047Ozs7OworMjI1RTtNRUFTVVJFRCBCWTtTbTswO09OOzs7OztOOzs7OzsKKzIyNUY7UVVFU1RJT05FRCBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyNjA7Tk9UIEVRVUFMIFRPO1NtOzA7T047MDAzRCAwMzM4Ozs7O1k7Ozs7OworMjI2MTtJREVOVElDQUwgVE87U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjYyO05PVCBJREVOVElDQUwgVE87U207MDtPTjsyMjYxIDAzMzg7Ozs7WTs7Ozs7CisyMjYzO1NUUklDVExZIEVRVUlWQUxFTlQgVE87U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjY0O0xFU1MtVEhBTiBPUiBFUVVBTCBUTztTbTswO09OOzs7OztZO0xFU1MgVEhBTiBPUiBFUVVBTCBUTzs7OzsKKzIyNjU7R1JFQVRFUi1USEFOIE9SIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7R1JFQVRFUiBUSEFOIE9SIEVRVUFMIFRPOzs7OworMjI2NjtMRVNTLVRIQU4gT1ZFUiBFUVVBTCBUTztTbTswO09OOzs7OztZO0xFU1MgVEhBTiBPVkVSIEVRVUFMIFRPOzs7OworMjI2NztHUkVBVEVSLVRIQU4gT1ZFUiBFUVVBTCBUTztTbTswO09OOzs7OztZO0dSRUFURVIgVEhBTiBPVkVSIEVRVUFMIFRPOzs7OworMjI2ODtMRVNTLVRIQU4gQlVUIE5PVCBFUVVBTCBUTztTbTswO09OOzs7OztZO0xFU1MgVEhBTiBCVVQgTk9UIEVRVUFMIFRPOzs7OworMjI2OTtHUkVBVEVSLVRIQU4gQlVUIE5PVCBFUVVBTCBUTztTbTswO09OOzs7OztZO0dSRUFURVIgVEhBTiBCVVQgTk9UIEVRVUFMIFRPOzs7OworMjI2QTtNVUNIIExFU1MtVEhBTjtTbTswO09OOzs7OztZO01VQ0ggTEVTUyBUSEFOOzs7OworMjI2QjtNVUNIIEdSRUFURVItVEhBTjtTbTswO09OOzs7OztZO01VQ0ggR1JFQVRFUiBUSEFOOzs7OworMjI2QztCRVRXRUVOO1NtOzA7T047Ozs7O047Ozs7OworMjI2RDtOT1QgRVFVSVZBTEVOVCBUTztTbTswO09OOzIyNEQgMDMzODs7OztOOzs7OzsKKzIyNkU7Tk9UIExFU1MtVEhBTjtTbTswO09OOzAwM0MgMDMzODs7OztZO05PVCBMRVNTIFRIQU47Ozs7CisyMjZGO05PVCBHUkVBVEVSLVRIQU47U207MDtPTjswMDNFIDAzMzg7Ozs7WTtOT1QgR1JFQVRFUiBUSEFOOzs7OworMjI3MDtORUlUSEVSIExFU1MtVEhBTiBOT1IgRVFVQUwgVE87U207MDtPTjsyMjY0IDAzMzg7Ozs7WTtORUlUSEVSIExFU1MgVEhBTiBOT1IgRVFVQUwgVE87Ozs7CisyMjcxO05FSVRIRVIgR1JFQVRFUi1USEFOIE5PUiBFUVVBTCBUTztTbTswO09OOzIyNjUgMDMzODs7OztZO05FSVRIRVIgR1JFQVRFUiBUSEFOIE5PUiBFUVVBTCBUTzs7OzsKKzIyNzI7TEVTUy1USEFOIE9SIEVRVUlWQUxFTlQgVE87U207MDtPTjs7Ozs7WTtMRVNTIFRIQU4gT1IgRVFVSVZBTEVOVCBUTzs7OzsKKzIyNzM7R1JFQVRFUi1USEFOIE9SIEVRVUlWQUxFTlQgVE87U207MDtPTjs7Ozs7WTtHUkVBVEVSIFRIQU4gT1IgRVFVSVZBTEVOVCBUTzs7OzsKKzIyNzQ7TkVJVEhFUiBMRVNTLVRIQU4gTk9SIEVRVUlWQUxFTlQgVE87U207MDtPTjsyMjcyIDAzMzg7Ozs7WTtORUlUSEVSIExFU1MgVEhBTiBOT1IgRVFVSVZBTEVOVCBUTzs7OzsKKzIyNzU7TkVJVEhFUiBHUkVBVEVSLVRIQU4gTk9SIEVRVUlWQUxFTlQgVE87U207MDtPTjsyMjczIDAzMzg7Ozs7WTtORUlUSEVSIEdSRUFURVIgVEhBTiBOT1IgRVFVSVZBTEVOVCBUTzs7OzsKKzIyNzY7TEVTUy1USEFOIE9SIEdSRUFURVItVEhBTjtTbTswO09OOzs7OztZO0xFU1MgVEhBTiBPUiBHUkVBVEVSIFRIQU47Ozs7CisyMjc3O0dSRUFURVItVEhBTiBPUiBMRVNTLVRIQU47U207MDtPTjs7Ozs7WTtHUkVBVEVSIFRIQU4gT1IgTEVTUyBUSEFOOzs7OworMjI3ODtORUlUSEVSIExFU1MtVEhBTiBOT1IgR1JFQVRFUi1USEFOO1NtOzA7T047MjI3NiAwMzM4Ozs7O1k7TkVJVEhFUiBMRVNTIFRIQU4gTk9SIEdSRUFURVIgVEhBTjs7OzsKKzIyNzk7TkVJVEhFUiBHUkVBVEVSLVRIQU4gTk9SIExFU1MtVEhBTjtTbTswO09OOzIyNzcgMDMzODs7OztZO05FSVRIRVIgR1JFQVRFUiBUSEFOIE5PUiBMRVNTIFRIQU47Ozs7CisyMjdBO1BSRUNFREVTO1NtOzA7T047Ozs7O1k7Ozs7OworMjI3QjtTVUNDRUVEUztTbTswO09OOzs7OztZOzs7OzsKKzIyN0M7UFJFQ0VERVMgT1IgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMjdEO1NVQ0NFRURTIE9SIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjI3RTtQUkVDRURFUyBPUiBFUVVJVkFMRU5UIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjI3RjtTVUNDRUVEUyBPUiBFUVVJVkFMRU5UIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjI4MDtET0VTIE5PVCBQUkVDRURFO1NtOzA7T047MjI3QSAwMzM4Ozs7O1k7Ozs7OworMjI4MTtET0VTIE5PVCBTVUNDRUVEO1NtOzA7T047MjI3QiAwMzM4Ozs7O1k7Ozs7OworMjI4MjtTVUJTRVQgT0Y7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjgzO1NVUEVSU0VUIE9GO1NtOzA7T047Ozs7O1k7Ozs7OworMjI4NDtOT1QgQSBTVUJTRVQgT0Y7U207MDtPTjsyMjgyIDAzMzg7Ozs7WTs7Ozs7CisyMjg1O05PVCBBIFNVUEVSU0VUIE9GO1NtOzA7T047MjI4MyAwMzM4Ozs7O1k7Ozs7OworMjI4NjtTVUJTRVQgT0YgT1IgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMjg3O1NVUEVSU0VUIE9GIE9SIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjI4ODtORUlUSEVSIEEgU1VCU0VUIE9GIE5PUiBFUVVBTCBUTztTbTswO09OOzIyODYgMDMzODs7OztZOzs7OzsKKzIyODk7TkVJVEhFUiBBIFNVUEVSU0VUIE9GIE5PUiBFUVVBTCBUTztTbTswO09OOzIyODcgMDMzODs7OztZOzs7OzsKKzIyOEE7U1VCU0VUIE9GIFdJVEggTk9UIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7U1VCU0VUIE9GIE9SIE5PVCBFUVVBTCBUTzs7OzsKKzIyOEI7U1VQRVJTRVQgT0YgV0lUSCBOT1QgRVFVQUwgVE87U207MDtPTjs7Ozs7WTtTVVBFUlNFVCBPRiBPUiBOT1QgRVFVQUwgVE87Ozs7CisyMjhDO01VTFRJU0VUO1NtOzA7T047Ozs7O1k7Ozs7OworMjI4RDtNVUxUSVNFVCBNVUxUSVBMSUNBVElPTjtTbTswO09OOzs7OztOOzs7OzsKKzIyOEU7TVVMVElTRVQgVU5JT047U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjhGO1NRVUFSRSBJTUFHRSBPRjtTbTswO09OOzs7OztZOzs7OzsKKzIyOTA7U1FVQVJFIE9SSUdJTkFMIE9GO1NtOzA7T047Ozs7O1k7Ozs7OworMjI5MTtTUVVBUkUgSU1BR0UgT0YgT1IgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMjkyO1NRVUFSRSBPUklHSU5BTCBPRiBPUiBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyOTM7U1FVQVJFIENBUDtTbTswO09OOzs7OztOOzs7OzsKKzIyOTQ7U1FVQVJFIENVUDtTbTswO09OOzs7OztOOzs7OzsKKzIyOTU7Q0lSQ0xFRCBQTFVTO1NtOzA7T047Ozs7O047Ozs7OworMjI5NjtDSVJDTEVEIE1JTlVTO1NtOzA7T047Ozs7O047Ozs7OworMjI5NztDSVJDTEVEIFRJTUVTO1NtOzA7T047Ozs7O047Ozs7OworMjI5ODtDSVJDTEVEIERJVklTSU9OIFNMQVNIO1NtOzA7T047Ozs7O1k7Ozs7OworMjI5OTtDSVJDTEVEIERPVCBPUEVSQVRPUjtTbTswO09OOzs7OztOOzs7OzsKKzIyOUE7Q0lSQ0xFRCBSSU5HIE9QRVJBVE9SO1NtOzA7T047Ozs7O047Ozs7OworMjI5QjtDSVJDTEVEIEFTVEVSSVNLIE9QRVJBVE9SO1NtOzA7T047Ozs7O047Ozs7OworMjI5QztDSVJDTEVEIEVRVUFMUztTbTswO09OOzs7OztOOzs7OzsKKzIyOUQ7Q0lSQ0xFRCBEQVNIO1NtOzA7T047Ozs7O047Ozs7OworMjI5RTtTUVVBUkVEIFBMVVM7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjlGO1NRVUFSRUQgTUlOVVM7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkEwO1NRVUFSRUQgVElNRVM7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkExO1NRVUFSRUQgRE9UIE9QRVJBVE9SO1NtOzA7T047Ozs7O047Ozs7OworMjJBMjtSSUdIVCBUQUNLO1NtOzA7T047Ozs7O1k7Ozs7OworMjJBMztMRUZUIFRBQ0s7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkE0O0RPV04gVEFDSztTbTswO09OOzs7OztOOzs7OzsKKzIyQTU7VVAgVEFDSztTbTswO09OOzs7OztOOzs7OzsKKzIyQTY7QVNTRVJUSU9OO1NtOzA7T047Ozs7O1k7Ozs7OworMjJBNztNT0RFTFM7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkE4O1RSVUU7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkE5O0ZPUkNFUztTbTswO09OOzs7OztZOzs7OzsKKzIyQUE7VFJJUExFIFZFUlRJQ0FMIEJBUiBSSUdIVCBUVVJOU1RJTEU7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkFCO0RPVUJMRSBWRVJUSUNBTCBCQVIgRE9VQkxFIFJJR0hUIFRVUk5TVElMRTtTbTswO09OOzs7OztZOzs7OzsKKzIyQUM7RE9FUyBOT1QgUFJPVkU7U207MDtPTjsyMkEyIDAzMzg7Ozs7WTs7Ozs7CisyMkFEO05PVCBUUlVFO1NtOzA7T047MjJBOCAwMzM4Ozs7O1k7Ozs7OworMjJBRTtET0VTIE5PVCBGT1JDRTtTbTswO09OOzIyQTkgMDMzODs7OztZOzs7OzsKKzIyQUY7TkVHQVRFRCBET1VCTEUgVkVSVElDQUwgQkFSIERPVUJMRSBSSUdIVCBUVVJOU1RJTEU7U207MDtPTjsyMkFCIDAzMzg7Ozs7WTs7Ozs7CisyMkIwO1BSRUNFREVTIFVOREVSIFJFTEFUSU9OO1NtOzA7T047Ozs7O1k7Ozs7OworMjJCMTtTVUNDRUVEUyBVTkRFUiBSRUxBVElPTjtTbTswO09OOzs7OztZOzs7OzsKKzIyQjI7Tk9STUFMIFNVQkdST1VQIE9GO1NtOzA7T047Ozs7O1k7Ozs7OworMjJCMztDT05UQUlOUyBBUyBOT1JNQUwgU1VCR1JPVVA7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkI0O05PUk1BTCBTVUJHUk9VUCBPRiBPUiBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyQjU7Q09OVEFJTlMgQVMgTk9STUFMIFNVQkdST1VQIE9SIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjJCNjtPUklHSU5BTCBPRjtTbTswO09OOzs7OztZOzs7OzsKKzIyQjc7SU1BR0UgT0Y7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkI4O01VTFRJTUFQO1NtOzA7T047Ozs7O1k7Ozs7OworMjJCOTtIRVJNSVRJQU4gQ09OSlVHQVRFIE1BVFJJWDtTbTswO09OOzs7OztOOzs7OzsKKzIyQkE7SU5URVJDQUxBVEU7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkJCO1hPUjtTbTswO09OOzs7OztOOzs7OzsKKzIyQkM7TkFORDtTbTswO09OOzs7OztOOzs7OzsKKzIyQkQ7Tk9SO1NtOzA7T047Ozs7O047Ozs7OworMjJCRTtSSUdIVCBBTkdMRSBXSVRIIEFSQztTbTswO09OOzs7OztZOzs7OzsKKzIyQkY7UklHSFQgVFJJQU5HTEU7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkMwO04tQVJZIExPR0lDQUwgQU5EO1NtOzA7T047Ozs7O047Ozs7OworMjJDMTtOLUFSWSBMT0dJQ0FMIE9SO1NtOzA7T047Ozs7O047Ozs7OworMjJDMjtOLUFSWSBJTlRFUlNFQ1RJT047U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkMzO04tQVJZIFVOSU9OO1NtOzA7T047Ozs7O047Ozs7OworMjJDNDtESUFNT05EIE9QRVJBVE9SO1NtOzA7T047Ozs7O047Ozs7OworMjJDNTtET1QgT1BFUkFUT1I7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkM2O1NUQVIgT1BFUkFUT1I7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkM3O0RJVklTSU9OIFRJTUVTO1NtOzA7T047Ozs7O047Ozs7OworMjJDODtCT1dUSUU7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkM5O0xFRlQgTk9STUFMIEZBQ1RPUiBTRU1JRElSRUNUIFBST0RVQ1Q7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkNBO1JJR0hUIE5PUk1BTCBGQUNUT1IgU0VNSURJUkVDVCBQUk9EVUNUO1NtOzA7T047Ozs7O1k7Ozs7OworMjJDQjtMRUZUIFNFTUlESVJFQ1QgUFJPRFVDVDtTbTswO09OOzs7OztZOzs7OzsKKzIyQ0M7UklHSFQgU0VNSURJUkVDVCBQUk9EVUNUO1NtOzA7T047Ozs7O1k7Ozs7OworMjJDRDtSRVZFUlNFRCBUSUxERSBFUVVBTFM7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkNFO0NVUkxZIExPR0lDQUwgT1I7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkNGO0NVUkxZIExPR0lDQUwgQU5EO1NtOzA7T047Ozs7O047Ozs7OworMjJEMDtET1VCTEUgU1VCU0VUO1NtOzA7T047Ozs7O1k7Ozs7OworMjJEMTtET1VCTEUgU1VQRVJTRVQ7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkQyO0RPVUJMRSBJTlRFUlNFQ1RJT047U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkQzO0RPVUJMRSBVTklPTjtTbTswO09OOzs7OztOOzs7OzsKKzIyRDQ7UElUQ0hGT1JLO1NtOzA7T047Ozs7O047Ozs7OworMjJENTtFUVVBTCBBTkQgUEFSQUxMRUwgVE87U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkQ2O0xFU1MtVEhBTiBXSVRIIERPVDtTbTswO09OOzs7OztZO0xFU1MgVEhBTiBXSVRIIERPVDs7OzsKKzIyRDc7R1JFQVRFUi1USEFOIFdJVEggRE9UO1NtOzA7T047Ozs7O1k7R1JFQVRFUiBUSEFOIFdJVEggRE9UOzs7OworMjJEODtWRVJZIE1VQ0ggTEVTUy1USEFOO1NtOzA7T047Ozs7O1k7VkVSWSBNVUNIIExFU1MgVEhBTjs7OzsKKzIyRDk7VkVSWSBNVUNIIEdSRUFURVItVEhBTjtTbTswO09OOzs7OztZO1ZFUlkgTVVDSCBHUkVBVEVSIFRIQU47Ozs7CisyMkRBO0xFU1MtVEhBTiBFUVVBTCBUTyBPUiBHUkVBVEVSLVRIQU47U207MDtPTjs7Ozs7WTtMRVNTIFRIQU4gRVFVQUwgVE8gT1IgR1JFQVRFUiBUSEFOOzs7OworMjJEQjtHUkVBVEVSLVRIQU4gRVFVQUwgVE8gT1IgTEVTUy1USEFOO1NtOzA7T047Ozs7O1k7R1JFQVRFUiBUSEFOIEVRVUFMIFRPIE9SIExFU1MgVEhBTjs7OzsKKzIyREM7RVFVQUwgVE8gT1IgTEVTUy1USEFOO1NtOzA7T047Ozs7O1k7RVFVQUwgVE8gT1IgTEVTUyBUSEFOOzs7OworMjJERDtFUVVBTCBUTyBPUiBHUkVBVEVSLVRIQU47U207MDtPTjs7Ozs7WTtFUVVBTCBUTyBPUiBHUkVBVEVSIFRIQU47Ozs7CisyMkRFO0VRVUFMIFRPIE9SIFBSRUNFREVTO1NtOzA7T047Ozs7O1k7Ozs7OworMjJERjtFUVVBTCBUTyBPUiBTVUNDRUVEUztTbTswO09OOzs7OztZOzs7OzsKKzIyRTA7RE9FUyBOT1QgUFJFQ0VERSBPUiBFUVVBTDtTbTswO09OOzIyN0MgMDMzODs7OztZOzs7OzsKKzIyRTE7RE9FUyBOT1QgU1VDQ0VFRCBPUiBFUVVBTDtTbTswO09OOzIyN0QgMDMzODs7OztZOzs7OzsKKzIyRTI7Tk9UIFNRVUFSRSBJTUFHRSBPRiBPUiBFUVVBTCBUTztTbTswO09OOzIyOTEgMDMzODs7OztZOzs7OzsKKzIyRTM7Tk9UIFNRVUFSRSBPUklHSU5BTCBPRiBPUiBFUVVBTCBUTztTbTswO09OOzIyOTIgMDMzODs7OztZOzs7OzsKKzIyRTQ7U1FVQVJFIElNQUdFIE9GIE9SIE5PVCBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyRTU7U1FVQVJFIE9SSUdJTkFMIE9GIE9SIE5PVCBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyRTY7TEVTUy1USEFOIEJVVCBOT1QgRVFVSVZBTEVOVCBUTztTbTswO09OOzs7OztZO0xFU1MgVEhBTiBCVVQgTk9UIEVRVUlWQUxFTlQgVE87Ozs7CisyMkU3O0dSRUFURVItVEhBTiBCVVQgTk9UIEVRVUlWQUxFTlQgVE87U207MDtPTjs7Ozs7WTtHUkVBVEVSIFRIQU4gQlVUIE5PVCBFUVVJVkFMRU5UIFRPOzs7OworMjJFODtQUkVDRURFUyBCVVQgTk9UIEVRVUlWQUxFTlQgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMkU5O1NVQ0NFRURTIEJVVCBOT1QgRVFVSVZBTEVOVCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyRUE7Tk9UIE5PUk1BTCBTVUJHUk9VUCBPRjtTbTswO09OOzIyQjIgMDMzODs7OztZOzs7OzsKKzIyRUI7RE9FUyBOT1QgQ09OVEFJTiBBUyBOT1JNQUwgU1VCR1JPVVA7U207MDtPTjsyMkIzIDAzMzg7Ozs7WTs7Ozs7CisyMkVDO05PVCBOT1JNQUwgU1VCR1JPVVAgT0YgT1IgRVFVQUwgVE87U207MDtPTjsyMkI0IDAzMzg7Ozs7WTs7Ozs7CisyMkVEO0RPRVMgTk9UIENPTlRBSU4gQVMgTk9STUFMIFNVQkdST1VQIE9SIEVRVUFMO1NtOzA7T047MjJCNSAwMzM4Ozs7O1k7Ozs7OworMjJFRTtWRVJUSUNBTCBFTExJUFNJUztTbTswO09OOzs7OztOOzs7OzsKKzIyRUY7TUlETElORSBIT1JJWk9OVEFMIEVMTElQU0lTO1NtOzA7T047Ozs7O047Ozs7OworMjJGMDtVUCBSSUdIVCBESUFHT05BTCBFTExJUFNJUztTbTswO09OOzs7OztZOzs7OzsKKzIyRjE7RE9XTiBSSUdIVCBESUFHT05BTCBFTExJUFNJUztTbTswO09OOzs7OztZOzs7OzsKKzIyRjI7RUxFTUVOVCBPRiBXSVRIIExPTkcgSE9SSVpPTlRBTCBTVFJPS0U7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkYzO0VMRU1FTlQgT0YgV0lUSCBWRVJUSUNBTCBCQVIgQVQgRU5EIE9GIEhPUklaT05UQUwgU1RST0tFO1NtOzA7T047Ozs7O1k7Ozs7OworMjJGNDtTTUFMTCBFTEVNRU5UIE9GIFdJVEggVkVSVElDQUwgQkFSIEFUIEVORCBPRiBIT1JJWk9OVEFMIFNUUk9LRTtTbTswO09OOzs7OztZOzs7OzsKKzIyRjU7RUxFTUVOVCBPRiBXSVRIIERPVCBBQk9WRTtTbTswO09OOzs7OztZOzs7OzsKKzIyRjY7RUxFTUVOVCBPRiBXSVRIIE9WRVJCQVI7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkY3O1NNQUxMIEVMRU1FTlQgT0YgV0lUSCBPVkVSQkFSO1NtOzA7T047Ozs7O1k7Ozs7OworMjJGODtFTEVNRU5UIE9GIFdJVEggVU5ERVJCQVI7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkY5O0VMRU1FTlQgT0YgV0lUSCBUV08gSE9SSVpPTlRBTCBTVFJPS0VTO1NtOzA7T047Ozs7O1k7Ozs7OworMjJGQTtDT05UQUlOUyBXSVRIIExPTkcgSE9SSVpPTlRBTCBTVFJPS0U7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkZCO0NPTlRBSU5TIFdJVEggVkVSVElDQUwgQkFSIEFUIEVORCBPRiBIT1JJWk9OVEFMIFNUUk9LRTtTbTswO09OOzs7OztZOzs7OzsKKzIyRkM7U01BTEwgQ09OVEFJTlMgV0lUSCBWRVJUSUNBTCBCQVIgQVQgRU5EIE9GIEhPUklaT05UQUwgU1RST0tFO1NtOzA7T047Ozs7O1k7Ozs7OworMjJGRDtDT05UQUlOUyBXSVRIIE9WRVJCQVI7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkZFO1NNQUxMIENPTlRBSU5TIFdJVEggT1ZFUkJBUjtTbTswO09OOzs7OztZOzs7OzsKKzIyRkY7WiBOT1RBVElPTiBCQUcgTUVNQkVSU0hJUDtTbTswO09OOzs7OztZOzs7OzsKKzIzMDA7RElBTUVURVIgU0lHTjtTbzswO09OOzs7OztOOzs7OzsKKzIzMDE7RUxFQ1RSSUMgQVJST1c7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzAyO0hPVVNFO1NvOzA7T047Ozs7O047Ozs7OworMjMwMztVUCBBUlJPV0hFQUQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzA0O0RPV04gQVJST1dIRUFEO1NvOzA7T047Ozs7O047Ozs7OworMjMwNTtQUk9KRUNUSVZFO1NvOzA7T047Ozs7O047Ozs7OworMjMwNjtQRVJTUEVDVElWRTtTbzswO09OOzs7OztOOzs7OzsKKzIzMDc7V0FWWSBMSU5FO1NvOzA7T047Ozs7O047Ozs7OworMjMwODtMRUZUIENFSUxJTkc7U207MDtPTjs7Ozs7WTs7Ozs7CisyMzA5O1JJR0hUIENFSUxJTkc7U207MDtPTjs7Ozs7WTs7Ozs7CisyMzBBO0xFRlQgRkxPT1I7U207MDtPTjs7Ozs7WTs7Ozs7CisyMzBCO1JJR0hUIEZMT09SO1NtOzA7T047Ozs7O1k7Ozs7OworMjMwQztCT1RUT00gUklHSFQgQ1JPUDtTbzswO09OOzs7OztOOzs7OzsKKzIzMEQ7Qk9UVE9NIExFRlQgQ1JPUDtTbzswO09OOzs7OztOOzs7OzsKKzIzMEU7VE9QIFJJR0hUIENST1A7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzBGO1RPUCBMRUZUIENST1A7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzEwO1JFVkVSU0VEIE5PVCBTSUdOO1NvOzA7T047Ozs7O047Ozs7OworMjMxMTtTUVVBUkUgTE9aRU5HRTtTbzswO09OOzs7OztOOzs7OzsKKzIzMTI7QVJDO1NvOzA7T047Ozs7O047Ozs7OworMjMxMztTRUdNRU5UO1NvOzA7T047Ozs7O047Ozs7OworMjMxNDtTRUNUT1I7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzE1O1RFTEVQSE9ORSBSRUNPUkRFUjtTbzswO09OOzs7OztOOzs7OzsKKzIzMTY7UE9TSVRJT04gSU5ESUNBVE9SO1NvOzA7T047Ozs7O047Ozs7OworMjMxNztWSUVXREFUQSBTUVVBUkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzE4O1BMQUNFIE9GIElOVEVSRVNUIFNJR047U287MDtPTjs7Ozs7TjtDT01NQU5EIEtFWTs7OzsKKzIzMTk7VFVSTkVEIE5PVCBTSUdOO1NvOzA7T047Ozs7O047Ozs7OworMjMxQTtXQVRDSDtTbzswO09OOzs7OztOOzs7OzsKKzIzMUI7SE9VUkdMQVNTO1NvOzA7T047Ozs7O047Ozs7OworMjMxQztUT1AgTEVGVCBDT1JORVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzFEO1RPUCBSSUdIVCBDT1JORVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzFFO0JPVFRPTSBMRUZUIENPUk5FUjtTbzswO09OOzs7OztOOzs7OzsKKzIzMUY7Qk9UVE9NIFJJR0hUIENPUk5FUjtTbzswO09OOzs7OztOOzs7OzsKKzIzMjA7VE9QIEhBTEYgSU5URUdSQUw7U207MDtPTjs7Ozs7WTs7Ozs7CisyMzIxO0JPVFRPTSBIQUxGIElOVEVHUkFMO1NtOzA7T047Ozs7O1k7Ozs7OworMjMyMjtGUk9XTjtTbzswO09OOzs7OztOOzs7OzsKKzIzMjM7U01JTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzI0O1VQIEFSUk9XSEVBRCBCRVRXRUVOIFRXTyBIT1JJWk9OVEFMIEJBUlM7U287MDtPTjs7Ozs7TjtFTlRFUiBLRVk7Ozs7CisyMzI1O09QVElPTiBLRVk7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzI2O0VSQVNFIFRPIFRIRSBSSUdIVDtTbzswO09OOzs7OztOO0RFTEVURSBUTyBUSEUgUklHSFQgS0VZOzs7OworMjMyNztYIElOIEEgUkVDVEFOR0xFIEJPWDtTbzswO09OOzs7OztOO0NMRUFSIEtFWTs7OzsKKzIzMjg7S0VZQk9BUkQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzI5O0xFRlQtUE9JTlRJTkcgQU5HTEUgQlJBQ0tFVDtQczswO09OOzMwMDg7Ozs7WTtCUkE7Ozs7CisyMzJBO1JJR0hULVBPSU5USU5HIEFOR0xFIEJSQUNLRVQ7UGU7MDtPTjszMDA5Ozs7O1k7S0VUOzs7OworMjMyQjtFUkFTRSBUTyBUSEUgTEVGVDtTbzswO09OOzs7OztOO0RFTEVURSBUTyBUSEUgTEVGVCBLRVk7Ozs7CisyMzJDO0JFTlpFTkUgUklORztTbzswO09OOzs7OztOOzs7OzsKKzIzMkQ7Q1lMSU5EUklDSVRZO1NvOzA7T047Ozs7O047Ozs7OworMjMyRTtBTEwgQVJPVU5ELVBST0ZJTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzJGO1NZTU1FVFJZO1NvOzA7T047Ozs7O047Ozs7OworMjMzMDtUT1RBTCBSVU5PVVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzMxO0RJTUVOU0lPTiBPUklHSU47U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzMyO0NPTklDQUwgVEFQRVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzMzO1NMT1BFO1NvOzA7T047Ozs7O047Ozs7OworMjMzNDtDT1VOVEVSQk9SRTtTbzswO09OOzs7OztOOzs7OzsKKzIzMzU7Q09VTlRFUlNJTks7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzM2O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBJLUJFQU07U287MDtMOzs7OztOOzs7OzsKKzIzMzc7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFNRVUlTSCBRVUFEO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzM4O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIEVRVUFMO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzM5O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIERJVklERTtTbzswO0w7Ozs7O047Ozs7OworMjMzQTtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBESUFNT05EO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzNCO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIEpPVDtTbzswO0w7Ozs7O047Ozs7OworMjMzQztBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBDSVJDTEU7U287MDtMOzs7OztOOzs7OzsKKzIzM0Q7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIENJUkNMRSBTVElMRTtTbzswO0w7Ozs7O047Ozs7OworMjMzRTtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgQ0lSQ0xFIEpPVDtTbzswO0w7Ozs7O047Ozs7OworMjMzRjtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgU0xBU0ggQkFSO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzQwO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBCQUNLU0xBU0ggQkFSO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzQxO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIFNMQVNIO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzQyO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIEJBQ0tTTEFTSDtTbzswO0w7Ozs7O047Ozs7OworMjM0MztBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBMRVNTLVRIQU47U287MDtMOzs7OztOOzs7OzsKKzIzNDQ7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFFVQUQgR1JFQVRFUi1USEFOO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzQ1O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBMRUZUV0FSRFMgVkFORTtTbzswO0w7Ozs7O047Ozs7OworMjM0NjtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUklHSFRXQVJEUyBWQU5FO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzQ3O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIExFRlRXQVJEUyBBUlJPVztTbzswO0w7Ozs7O047Ozs7OworMjM0ODtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzQ5O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBDSVJDTEUgQkFDS1NMQVNIO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzRBO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBET1dOIFRBQ0sgVU5ERVJCQVI7U287MDtMOzs7OztOOzsqOzs7CisyMzRCO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBERUxUQSBTVElMRTtTbzswO0w7Ozs7O047Ozs7OworMjM0QztBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBET1dOIENBUkVUO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzREO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIERFTFRBO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzRFO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBET1dOIFRBQ0sgSk9UO1NvOzA7TDs7Ozs7Tjs7Kjs7OworMjM0RjtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgVVBXQVJEUyBWQU5FO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzUwO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIFVQV0FSRFMgQVJST1c7U287MDtMOzs7OztOOzs7OzsKKzIzNTE7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFVQIFRBQ0sgT1ZFUkJBUjtTbzswO0w7Ozs7O047Oyo7OzsKKzIzNTI7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIERFTCBTVElMRTtTbzswO0w7Ozs7O047Ozs7OworMjM1MztBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBVUCBDQVJFVDtTbzswO0w7Ozs7O047Ozs7OworMjM1NDtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBERUw7U287MDtMOzs7OztOOzs7OzsKKzIzNTU7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFVQIFRBQ0sgSk9UO1NvOzA7TDs7Ozs7Tjs7Kjs7OworMjM1NjtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgRE9XTldBUkRTIFZBTkU7U287MDtMOzs7OztOOzs7OzsKKzIzNTc7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFFVQUQgRE9XTldBUkRTIEFSUk9XO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzU4O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVU9URSBVTkRFUkJBUjtTbzswO0w7Ozs7O047Ozs7OworMjM1OTtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgREVMVEEgVU5ERVJCQVI7U287MDtMOzs7OztOOzs7OzsKKzIzNUE7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIERJQU1PTkQgVU5ERVJCQVI7U287MDtMOzs7OztOOzs7OzsKKzIzNUI7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIEpPVCBVTkRFUkJBUjtTbzswO0w7Ozs7O047Ozs7OworMjM1QztBUEwgRlVOQ1RJT05BTCBTWU1CT0wgQ0lSQ0xFIFVOREVSQkFSO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzVEO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBVUCBTSE9FIEpPVDtTbzswO0w7Ozs7O047Ozs7OworMjM1RTtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVPVEUgUVVBRDtTbzswO0w7Ozs7O047Ozs7OworMjM1RjtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgQ0lSQ0xFIFNUQVI7U287MDtMOzs7OztOOzs7OzsKKzIzNjA7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFFVQUQgQ09MT047U287MDtMOzs7OztOOzs7OzsKKzIzNjE7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFVQIFRBQ0sgRElBRVJFU0lTO1NvOzA7TDs7Ozs7Tjs7Kjs7OworMjM2MjtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgREVMIERJQUVSRVNJUztTbzswO0w7Ozs7O047Ozs7OworMjM2MztBUEwgRlVOQ1RJT05BTCBTWU1CT0wgU1RBUiBESUFFUkVTSVM7U287MDtMOzs7OztOOzs7OzsKKzIzNjQ7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIEpPVCBESUFFUkVTSVM7U287MDtMOzs7OztOOzs7OzsKKzIzNjU7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIENJUkNMRSBESUFFUkVTSVM7U287MDtMOzs7OztOOzs7OzsKKzIzNjY7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIERPV04gU0hPRSBTVElMRTtTbzswO0w7Ozs7O047Ozs7OworMjM2NztBUEwgRlVOQ1RJT05BTCBTWU1CT0wgTEVGVCBTSE9FIFNUSUxFO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzY4O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBUSUxERSBESUFFUkVTSVM7U287MDtMOzs7OztOOzs7OzsKKzIzNjk7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIEdSRUFURVItVEhBTiBESUFFUkVTSVM7U287MDtMOzs7OztOOzs7OzsKKzIzNkE7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIENPTU1BIEJBUjtTbzswO0w7Ozs7O047Ozs7OworMjM2QjtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgREVMIFRJTERFO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzZDO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBaSUxERTtTbzswO0w7Ozs7O047Ozs7OworMjM2RDtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgU1RJTEUgVElMREU7U287MDtMOzs7OztOOzs7OzsKKzIzNkU7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFNFTUlDT0xPTiBVTkRFUkJBUjtTbzswO0w7Ozs7O047Ozs7OworMjM2RjtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBOT1QgRVFVQUw7U287MDtMOzs7OztOOzs7OzsKKzIzNzA7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFFVQUQgUVVFU1RJT047U287MDtMOzs7OztOOzs7OzsKKzIzNzE7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIERPV04gQ0FSRVQgVElMREU7U287MDtMOzs7OztOOzs7OzsKKzIzNzI7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFVQIENBUkVUIFRJTERFO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzczO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBJT1RBO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzc0O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBSSE87U287MDtMOzs7OztOOzs7OzsKKzIzNzU7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIE9NRUdBO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzc2O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBBTFBIQSBVTkRFUkJBUjtTbzswO0w7Ozs7O047Ozs7OworMjM3NztBUEwgRlVOQ1RJT05BTCBTWU1CT0wgRVBTSUxPTiBVTkRFUkJBUjtTbzswO0w7Ozs7O047Ozs7OworMjM3ODtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgSU9UQSBVTkRFUkJBUjtTbzswO0w7Ozs7O047Ozs7OworMjM3OTtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgT01FR0EgVU5ERVJCQVI7U287MDtMOzs7OztOOzs7OzsKKzIzN0E7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIEFMUEhBO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzdCO05PVCBDSEVDSyBNQVJLO1NvOzA7T047Ozs7O047Ozs7OworMjM3QztSSUdIVCBBTkdMRSBXSVRIIERPV05XQVJEUyBaSUdaQUcgQVJST1c7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMzdEO1NIT1VMREVSRUQgT1BFTiBCT1g7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzdFO0JFTEwgU1lNQk9MO1NvOzA7T047Ozs7O047Ozs7OworMjM3RjtWRVJUSUNBTCBMSU5FIFdJVEggTUlERExFIERPVDtTbzswO09OOzs7OztOOzs7OzsKKzIzODA7SU5TRVJUSU9OIFNZTUJPTDtTbzswO09OOzs7OztOOzs7OzsKKzIzODE7Q09OVElOVU9VUyBVTkRFUkxJTkUgU1lNQk9MO1NvOzA7T047Ozs7O047Ozs7OworMjM4MjtESVNDT05USU5VT1VTIFVOREVSTElORSBTWU1CT0w7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzgzO0VNUEhBU0lTIFNZTUJPTDtTbzswO09OOzs7OztOOzs7OzsKKzIzODQ7Q09NUE9TSVRJT04gU1lNQk9MO1NvOzA7T047Ozs7O047Ozs7OworMjM4NTtXSElURSBTUVVBUkUgV0lUSCBDRU5UUkUgVkVSVElDQUwgTElORTtTbzswO09OOzs7OztOOzs7OzsKKzIzODY7RU5URVIgU1lNQk9MO1NvOzA7T047Ozs7O047Ozs7OworMjM4NztBTFRFUk5BVElWRSBLRVkgU1lNQk9MO1NvOzA7T047Ozs7O047Ozs7OworMjM4ODtIRUxNIFNZTUJPTDtTbzswO09OOzs7OztOOzs7OzsKKzIzODk7Q0lSQ0xFRCBIT1JJWk9OVEFMIEJBUiBXSVRIIE5PVENIO1NvOzA7T047Ozs7O047O3BhdXNlOzs7CisyMzhBO0NJUkNMRUQgVFJJQU5HTEUgRE9XTjtTbzswO09OOzs7OztOOzticmVhazs7OworMjM4QjtCUk9LRU4gQ0lSQ0xFIFdJVEggTk9SVEhXRVNUIEFSUk9XO1NvOzA7T047Ozs7O047O2VzY2FwZTs7OworMjM4QztVTkRPIFNZTUJPTDtTbzswO09OOzs7OztOOzs7OzsKKzIzOEQ7TU9OT1NUQUJMRSBTWU1CT0w7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzhFO0hZU1RFUkVTSVMgU1lNQk9MO1NvOzA7T047Ozs7O047Ozs7OworMjM4RjtPUEVOLUNJUkNVSVQtT1VUUFVUIEgtVFlQRSBTWU1CT0w7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzkwO09QRU4tQ0lSQ1VJVC1PVVRQVVQgTC1UWVBFIFNZTUJPTDtTbzswO09OOzs7OztOOzs7OzsKKzIzOTE7UEFTU0lWRS1QVUxMLURPV04tT1VUUFVUIFNZTUJPTDtTbzswO09OOzs7OztOOzs7OzsKKzIzOTI7UEFTU0lWRS1QVUxMLVVQLU9VVFBVVCBTWU1CT0w7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzkzO0RJUkVDVCBDVVJSRU5UIFNZTUJPTCBGT1JNIFRXTztTbzswO09OOzs7OztOOzs7OzsKKzIzOTQ7U09GVFdBUkUtRlVOQ1RJT04gU1lNQk9MO1NvOzA7T047Ozs7O047Ozs7OworMjM5NTtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRDtTbzswO0w7Ozs7O047Ozs7OworMjM5NjtERUNJTUFMIFNFUEFSQVRPUiBLRVkgU1lNQk9MO1NvOzA7T047Ozs7O047Ozs7OworMjM5NztQUkVWSU9VUyBQQUdFO1NvOzA7T047Ozs7O047Ozs7OworMjM5ODtORVhUIFBBR0U7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzk5O1BSSU5UIFNDUkVFTiBTWU1CT0w7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzlBO0NMRUFSIFNDUkVFTiBTWU1CT0w7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzlCO0xFRlQgUEFSRU5USEVTSVMgVVBQRVIgSE9PSztTbTswO09OOzs7OztOOzs7OzsKKzIzOUM7TEVGVCBQQVJFTlRIRVNJUyBFWFRFTlNJT047U207MDtPTjs7Ozs7Tjs7Ozs7CisyMzlEO0xFRlQgUEFSRU5USEVTSVMgTE9XRVIgSE9PSztTbTswO09OOzs7OztOOzs7OzsKKzIzOUU7UklHSFQgUEFSRU5USEVTSVMgVVBQRVIgSE9PSztTbTswO09OOzs7OztOOzs7OzsKKzIzOUY7UklHSFQgUEFSRU5USEVTSVMgRVhURU5TSU9OO1NtOzA7T047Ozs7O047Ozs7OworMjNBMDtSSUdIVCBQQVJFTlRIRVNJUyBMT1dFUiBIT09LO1NtOzA7T047Ozs7O047Ozs7OworMjNBMTtMRUZUIFNRVUFSRSBCUkFDS0VUIFVQUEVSIENPUk5FUjtTbTswO09OOzs7OztOOzs7OzsKKzIzQTI7TEVGVCBTUVVBUkUgQlJBQ0tFVCBFWFRFTlNJT047U207MDtPTjs7Ozs7Tjs7Ozs7CisyM0EzO0xFRlQgU1FVQVJFIEJSQUNLRVQgTE9XRVIgQ09STkVSO1NtOzA7T047Ozs7O047Ozs7OworMjNBNDtSSUdIVCBTUVVBUkUgQlJBQ0tFVCBVUFBFUiBDT1JORVI7U207MDtPTjs7Ozs7Tjs7Ozs7CisyM0E1O1JJR0hUIFNRVUFSRSBCUkFDS0VUIEVYVEVOU0lPTjtTbTswO09OOzs7OztOOzs7OzsKKzIzQTY7UklHSFQgU1FVQVJFIEJSQUNLRVQgTE9XRVIgQ09STkVSO1NtOzA7T047Ozs7O047Ozs7OworMjNBNztMRUZUIENVUkxZIEJSQUNLRVQgVVBQRVIgSE9PSztTbTswO09OOzs7OztOOzs7OzsKKzIzQTg7TEVGVCBDVVJMWSBCUkFDS0VUIE1JRERMRSBQSUVDRTtTbTswO09OOzs7OztOOzs7OzsKKzIzQTk7TEVGVCBDVVJMWSBCUkFDS0VUIExPV0VSIEhPT0s7U207MDtPTjs7Ozs7Tjs7Ozs7CisyM0FBO0NVUkxZIEJSQUNLRVQgRVhURU5TSU9OO1NtOzA7T047Ozs7O047Ozs7OworMjNBQjtSSUdIVCBDVVJMWSBCUkFDS0VUIFVQUEVSIEhPT0s7U207MDtPTjs7Ozs7Tjs7Ozs7CisyM0FDO1JJR0hUIENVUkxZIEJSQUNLRVQgTUlERExFIFBJRUNFO1NtOzA7T047Ozs7O047Ozs7OworMjNBRDtSSUdIVCBDVVJMWSBCUkFDS0VUIExPV0VSIEhPT0s7U207MDtPTjs7Ozs7Tjs7Ozs7CisyM0FFO0lOVEVHUkFMIEVYVEVOU0lPTjtTbTswO09OOzs7OztOOzs7OzsKKzIzQUY7SE9SSVpPTlRBTCBMSU5FIEVYVEVOU0lPTjtTbTswO09OOzs7OztOOzs7OzsKKzIzQjA7VVBQRVIgTEVGVCBPUiBMT1dFUiBSSUdIVCBDVVJMWSBCUkFDS0VUIFNFQ1RJT047U207MDtPTjs7Ozs7Tjs7Ozs7CisyM0IxO1VQUEVSIFJJR0hUIE9SIExPV0VSIExFRlQgQ1VSTFkgQlJBQ0tFVCBTRUNUSU9OO1NtOzA7T047Ozs7O047Ozs7OworMjNCMjtTVU1NQVRJT04gVE9QO1NtOzA7T047Ozs7O047Ozs7OworMjNCMztTVU1NQVRJT04gQk9UVE9NO1NtOzA7T047Ozs7O047Ozs7OworMjNCNDtUT1AgU1FVQVJFIEJSQUNLRVQ7UHM7MDtPTjs7Ozs7Tjs7Ozs7CisyM0I1O0JPVFRPTSBTUVVBUkUgQlJBQ0tFVDtQZTswO09OOzs7OztOOzs7OzsKKzIzQjY7Qk9UVE9NIFNRVUFSRSBCUkFDS0VUIE9WRVIgVE9QIFNRVUFSRSBCUkFDS0VUO1BvOzA7T047Ozs7O047Ozs7OworMjNCNztSQURJQ0FMIFNZTUJPTCBCT1RUT007U287MDtPTjs7Ozs7Tjs7Ozs7CisyM0I4O0xFRlQgVkVSVElDQUwgQk9YIExJTkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyM0I5O1JJR0hUIFZFUlRJQ0FMIEJPWCBMSU5FO1NvOzA7T047Ozs7O047Ozs7OworMjNCQTtIT1JJWk9OVEFMIFNDQU4gTElORS0xO1NvOzA7T047Ozs7O047Ozs7OworMjNCQjtIT1JJWk9OVEFMIFNDQU4gTElORS0zO1NvOzA7T047Ozs7O047Ozs7OworMjNCQztIT1JJWk9OVEFMIFNDQU4gTElORS03O1NvOzA7T047Ozs7O047Ozs7OworMjNCRDtIT1JJWk9OVEFMIFNDQU4gTElORS05O1NvOzA7T047Ozs7O047Ozs7OworMjNCRTtERU5USVNUUlkgU1lNQk9MIExJR0hUIFZFUlRJQ0FMIEFORCBUT1AgUklHSFQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyM0JGO0RFTlRJU1RSWSBTWU1CT0wgTElHSFQgVkVSVElDQUwgQU5EIEJPVFRPTSBSSUdIVDtTbzswO09OOzs7OztOOzs7OzsKKzIzQzA7REVOVElTVFJZIFNZTUJPTCBMSUdIVCBWRVJUSUNBTCBXSVRIIENJUkNMRTtTbzswO09OOzs7OztOOzs7OzsKKzIzQzE7REVOVElTVFJZIFNZTUJPTCBMSUdIVCBET1dOIEFORCBIT1JJWk9OVEFMIFdJVEggQ0lSQ0xFO1NvOzA7T047Ozs7O047Ozs7OworMjNDMjtERU5USVNUUlkgU1lNQk9MIExJR0hUIFVQIEFORCBIT1JJWk9OVEFMIFdJVEggQ0lSQ0xFO1NvOzA7T047Ozs7O047Ozs7OworMjNDMztERU5USVNUUlkgU1lNQk9MIExJR0hUIFZFUlRJQ0FMIFdJVEggVFJJQU5HTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyM0M0O0RFTlRJU1RSWSBTWU1CT0wgTElHSFQgRE9XTiBBTkQgSE9SSVpPTlRBTCBXSVRIIFRSSUFOR0xFO1NvOzA7T047Ozs7O047Ozs7OworMjNDNTtERU5USVNUUlkgU1lNQk9MIExJR0hUIFVQIEFORCBIT1JJWk9OVEFMIFdJVEggVFJJQU5HTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyM0M2O0RFTlRJU1RSWSBTWU1CT0wgTElHSFQgVkVSVElDQUwgQU5EIFdBVkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyM0M3O0RFTlRJU1RSWSBTWU1CT0wgTElHSFQgRE9XTiBBTkQgSE9SSVpPTlRBTCBXSVRIIFdBVkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyM0M4O0RFTlRJU1RSWSBTWU1CT0wgTElHSFQgVVAgQU5EIEhPUklaT05UQUwgV0lUSCBXQVZFO1NvOzA7T047Ozs7O047Ozs7OworMjNDOTtERU5USVNUUlkgU1lNQk9MIExJR0hUIERPV04gQU5EIEhPUklaT05UQUw7U287MDtPTjs7Ozs7Tjs7Ozs7CisyM0NBO0RFTlRJU1RSWSBTWU1CT0wgTElHSFQgVVAgQU5EIEhPUklaT05UQUw7U287MDtPTjs7Ozs7Tjs7Ozs7CisyM0NCO0RFTlRJU1RSWSBTWU1CT0wgTElHSFQgVkVSVElDQUwgQU5EIFRPUCBMRUZUO1NvOzA7T047Ozs7O047Ozs7OworMjNDQztERU5USVNUUlkgU1lNQk9MIExJR0hUIFZFUlRJQ0FMIEFORCBCT1RUT00gTEVGVDtTbzswO09OOzs7OztOOzs7OzsKKzIzQ0Q7U1FVQVJFIEZPT1Q7U287MDtPTjs7Ozs7Tjs7Ozs7CisyM0NFO1JFVFVSTiBTWU1CT0w7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNDAwO1NZTUJPTCBGT1IgTlVMTDtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIE5VTEw7Ozs7CisyNDAxO1NZTUJPTCBGT1IgU1RBUlQgT0YgSEVBRElORztTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIFNUQVJUIE9GIEhFQURJTkc7Ozs7CisyNDAyO1NZTUJPTCBGT1IgU1RBUlQgT0YgVEVYVDtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIFNUQVJUIE9GIFRFWFQ7Ozs7CisyNDAzO1NZTUJPTCBGT1IgRU5EIE9GIFRFWFQ7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBFTkQgT0YgVEVYVDs7OzsKKzI0MDQ7U1lNQk9MIEZPUiBFTkQgT0YgVFJBTlNNSVNTSU9OO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgRU5EIE9GIFRSQU5TTUlTU0lPTjs7OzsKKzI0MDU7U1lNQk9MIEZPUiBFTlFVSVJZO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgRU5RVUlSWTs7OzsKKzI0MDY7U1lNQk9MIEZPUiBBQ0tOT1dMRURHRTtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIEFDS05PV0xFREdFOzs7OworMjQwNztTWU1CT0wgRk9SIEJFTEw7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBCRUxMOzs7OworMjQwODtTWU1CT0wgRk9SIEJBQ0tTUEFDRTtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIEJBQ0tTUEFDRTs7OzsKKzI0MDk7U1lNQk9MIEZPUiBIT1JJWk9OVEFMIFRBQlVMQVRJT047U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBIT1JJWk9OVEFMIFRBQlVMQVRJT047Ozs7CisyNDBBO1NZTUJPTCBGT1IgTElORSBGRUVEO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgTElORSBGRUVEOzs7OworMjQwQjtTWU1CT0wgRk9SIFZFUlRJQ0FMIFRBQlVMQVRJT047U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBWRVJUSUNBTCBUQUJVTEFUSU9OOzs7OworMjQwQztTWU1CT0wgRk9SIEZPUk0gRkVFRDtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIEZPUk0gRkVFRDs7OzsKKzI0MEQ7U1lNQk9MIEZPUiBDQVJSSUFHRSBSRVRVUk47U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBDQVJSSUFHRSBSRVRVUk47Ozs7CisyNDBFO1NZTUJPTCBGT1IgU0hJRlQgT1VUO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgU0hJRlQgT1VUOzs7OworMjQwRjtTWU1CT0wgRk9SIFNISUZUIElOO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgU0hJRlQgSU47Ozs7CisyNDEwO1NZTUJPTCBGT1IgREFUQSBMSU5LIEVTQ0FQRTtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIERBVEEgTElOSyBFU0NBUEU7Ozs7CisyNDExO1NZTUJPTCBGT1IgREVWSUNFIENPTlRST0wgT05FO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgREVWSUNFIENPTlRST0wgT05FOzs7OworMjQxMjtTWU1CT0wgRk9SIERFVklDRSBDT05UUk9MIFRXTztTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIERFVklDRSBDT05UUk9MIFRXTzs7OzsKKzI0MTM7U1lNQk9MIEZPUiBERVZJQ0UgQ09OVFJPTCBUSFJFRTtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIERFVklDRSBDT05UUk9MIFRIUkVFOzs7OworMjQxNDtTWU1CT0wgRk9SIERFVklDRSBDT05UUk9MIEZPVVI7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBERVZJQ0UgQ09OVFJPTCBGT1VSOzs7OworMjQxNTtTWU1CT0wgRk9SIE5FR0FUSVZFIEFDS05PV0xFREdFO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgTkVHQVRJVkUgQUNLTk9XTEVER0U7Ozs7CisyNDE2O1NZTUJPTCBGT1IgU1lOQ0hST05PVVMgSURMRTtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIFNZTkNIUk9OT1VTIElETEU7Ozs7CisyNDE3O1NZTUJPTCBGT1IgRU5EIE9GIFRSQU5TTUlTU0lPTiBCTE9DSztTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0s7Ozs7CisyNDE4O1NZTUJPTCBGT1IgQ0FOQ0VMO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgQ0FOQ0VMOzs7OworMjQxOTtTWU1CT0wgRk9SIEVORCBPRiBNRURJVU07U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBFTkQgT0YgTUVESVVNOzs7OworMjQxQTtTWU1CT0wgRk9SIFNVQlNUSVRVVEU7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBTVUJTVElUVVRFOzs7OworMjQxQjtTWU1CT0wgRk9SIEVTQ0FQRTtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIEVTQ0FQRTs7OzsKKzI0MUM7U1lNQk9MIEZPUiBGSUxFIFNFUEFSQVRPUjtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIEZJTEUgU0VQQVJBVE9SOzs7OworMjQxRDtTWU1CT0wgRk9SIEdST1VQIFNFUEFSQVRPUjtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIEdST1VQIFNFUEFSQVRPUjs7OzsKKzI0MUU7U1lNQk9MIEZPUiBSRUNPUkQgU0VQQVJBVE9SO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgUkVDT1JEIFNFUEFSQVRPUjs7OzsKKzI0MUY7U1lNQk9MIEZPUiBVTklUIFNFUEFSQVRPUjtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIFVOSVQgU0VQQVJBVE9SOzs7OworMjQyMDtTWU1CT0wgRk9SIFNQQUNFO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgU1BBQ0U7Ozs7CisyNDIxO1NZTUJPTCBGT1IgREVMRVRFO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgREVMRVRFOzs7OworMjQyMjtCTEFOSyBTWU1CT0w7U287MDtPTjs7Ozs7TjtCTEFOSzs7OzsKKzI0MjM7T1BFTiBCT1g7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNDI0O1NZTUJPTCBGT1IgTkVXTElORTtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIE5FV0xJTkU7Ozs7CisyNDI1O1NZTUJPTCBGT1IgREVMRVRFIEZPUk0gVFdPO1NvOzA7T047Ozs7O047Ozs7OworMjQyNjtTWU1CT0wgRk9SIFNVQlNUSVRVVEUgRk9STSBUV087U287MDtPTjs7Ozs7Tjs7Ozs7CisyNDQwO09DUiBIT09LO1NvOzA7T047Ozs7O047Ozs7OworMjQ0MTtPQ1IgQ0hBSVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNDQyO09DUiBGT1JLO1NvOzA7T047Ozs7O047Ozs7OworMjQ0MztPQ1IgSU5WRVJURUQgRk9SSztTbzswO09OOzs7OztOOzs7OzsKKzI0NDQ7T0NSIEJFTFQgQlVDS0xFO1NvOzA7T047Ozs7O047Ozs7OworMjQ0NTtPQ1IgQk9XIFRJRTtTbzswO09OOzs7OztOOzs7OzsKKzI0NDY7T0NSIEJSQU5DSCBCQU5LIElERU5USUZJQ0FUSU9OO1NvOzA7T047Ozs7O047Ozs7OworMjQ0NztPQ1IgQU1PVU5UIE9GIENIRUNLO1NvOzA7T047Ozs7O047Ozs7OworMjQ0ODtPQ1IgREFTSDtTbzswO09OOzs7OztOOzs7OzsKKzI0NDk7T0NSIENVU1RPTUVSIEFDQ09VTlQgTlVNQkVSO1NvOzA7T047Ozs7O047Ozs7OworMjQ0QTtPQ1IgRE9VQkxFIEJBQ0tTTEFTSDtTbzswO09OOzs7OztOOzs7OzsKKzI0NjA7Q0lSQ0xFRCBESUdJVCBPTkU7Tm87MDtFTjs8Y2lyY2xlPiAwMDMxOzsxOzE7Tjs7Ozs7CisyNDYxO0NJUkNMRUQgRElHSVQgVFdPO05vOzA7RU47PGNpcmNsZT4gMDAzMjs7MjsyO047Ozs7OworMjQ2MjtDSVJDTEVEIERJR0lUIFRIUkVFO05vOzA7RU47PGNpcmNsZT4gMDAzMzs7MzszO047Ozs7OworMjQ2MztDSVJDTEVEIERJR0lUIEZPVVI7Tm87MDtFTjs8Y2lyY2xlPiAwMDM0Ozs0OzQ7Tjs7Ozs7CisyNDY0O0NJUkNMRUQgRElHSVQgRklWRTtObzswO0VOOzxjaXJjbGU+IDAwMzU7OzU7NTtOOzs7OzsKKzI0NjU7Q0lSQ0xFRCBESUdJVCBTSVg7Tm87MDtFTjs8Y2lyY2xlPiAwMDM2Ozs2OzY7Tjs7Ozs7CisyNDY2O0NJUkNMRUQgRElHSVQgU0VWRU47Tm87MDtFTjs8Y2lyY2xlPiAwMDM3Ozs3Ozc7Tjs7Ozs7CisyNDY3O0NJUkNMRUQgRElHSVQgRUlHSFQ7Tm87MDtFTjs8Y2lyY2xlPiAwMDM4Ozs4Ozg7Tjs7Ozs7CisyNDY4O0NJUkNMRUQgRElHSVQgTklORTtObzswO0VOOzxjaXJjbGU+IDAwMzk7Ozk7OTtOOzs7OzsKKzI0Njk7Q0lSQ0xFRCBOVU1CRVIgVEVOO05vOzA7RU47PGNpcmNsZT4gMDAzMSAwMDMwOzs7MTA7Tjs7Ozs7CisyNDZBO0NJUkNMRUQgTlVNQkVSIEVMRVZFTjtObzswO0VOOzxjaXJjbGU+IDAwMzEgMDAzMTs7OzExO047Ozs7OworMjQ2QjtDSVJDTEVEIE5VTUJFUiBUV0VMVkU7Tm87MDtFTjs8Y2lyY2xlPiAwMDMxIDAwMzI7OzsxMjtOOzs7OzsKKzI0NkM7Q0lSQ0xFRCBOVU1CRVIgVEhJUlRFRU47Tm87MDtFTjs8Y2lyY2xlPiAwMDMxIDAwMzM7OzsxMztOOzs7OzsKKzI0NkQ7Q0lSQ0xFRCBOVU1CRVIgRk9VUlRFRU47Tm87MDtFTjs8Y2lyY2xlPiAwMDMxIDAwMzQ7OzsxNDtOOzs7OzsKKzI0NkU7Q0lSQ0xFRCBOVU1CRVIgRklGVEVFTjtObzswO0VOOzxjaXJjbGU+IDAwMzEgMDAzNTs7OzE1O047Ozs7OworMjQ2RjtDSVJDTEVEIE5VTUJFUiBTSVhURUVOO05vOzA7RU47PGNpcmNsZT4gMDAzMSAwMDM2Ozs7MTY7Tjs7Ozs7CisyNDcwO0NJUkNMRUQgTlVNQkVSIFNFVkVOVEVFTjtObzswO0VOOzxjaXJjbGU+IDAwMzEgMDAzNzs7OzE3O047Ozs7OworMjQ3MTtDSVJDTEVEIE5VTUJFUiBFSUdIVEVFTjtObzswO0VOOzxjaXJjbGU+IDAwMzEgMDAzODs7OzE4O047Ozs7OworMjQ3MjtDSVJDTEVEIE5VTUJFUiBOSU5FVEVFTjtObzswO0VOOzxjaXJjbGU+IDAwMzEgMDAzOTs7OzE5O047Ozs7OworMjQ3MztDSVJDTEVEIE5VTUJFUiBUV0VOVFk7Tm87MDtFTjs8Y2lyY2xlPiAwMDMyIDAwMzA7OzsyMDtOOzs7OzsKKzI0NzQ7UEFSRU5USEVTSVpFRCBESUdJVCBPTkU7Tm87MDtFTjs8Y29tcGF0PiAwMDI4IDAwMzEgMDAyOTs7MTsxO047Ozs7OworMjQ3NTtQQVJFTlRIRVNJWkVEIERJR0lUIFRXTztObzswO0VOOzxjb21wYXQ+IDAwMjggMDAzMiAwMDI5OzsyOzI7Tjs7Ozs7CisyNDc2O1BBUkVOVEhFU0laRUQgRElHSVQgVEhSRUU7Tm87MDtFTjs8Y29tcGF0PiAwMDI4IDAwMzMgMDAyOTs7MzszO047Ozs7OworMjQ3NztQQVJFTlRIRVNJWkVEIERJR0lUIEZPVVI7Tm87MDtFTjs8Y29tcGF0PiAwMDI4IDAwMzQgMDAyOTs7NDs0O047Ozs7OworMjQ3ODtQQVJFTlRIRVNJWkVEIERJR0lUIEZJVkU7Tm87MDtFTjs8Y29tcGF0PiAwMDI4IDAwMzUgMDAyOTs7NTs1O047Ozs7OworMjQ3OTtQQVJFTlRIRVNJWkVEIERJR0lUIFNJWDtObzswO0VOOzxjb21wYXQ+IDAwMjggMDAzNiAwMDI5Ozs2OzY7Tjs7Ozs7CisyNDdBO1BBUkVOVEhFU0laRUQgRElHSVQgU0VWRU47Tm87MDtFTjs8Y29tcGF0PiAwMDI4IDAwMzcgMDAyOTs7Nzs3O047Ozs7OworMjQ3QjtQQVJFTlRIRVNJWkVEIERJR0lUIEVJR0hUO05vOzA7RU47PGNvbXBhdD4gMDAyOCAwMDM4IDAwMjk7Ozg7ODtOOzs7OzsKKzI0N0M7UEFSRU5USEVTSVpFRCBESUdJVCBOSU5FO05vOzA7RU47PGNvbXBhdD4gMDAyOCAwMDM5IDAwMjk7Ozk7OTtOOzs7OzsKKzI0N0Q7UEFSRU5USEVTSVpFRCBOVU1CRVIgVEVOO05vOzA7RU47PGNvbXBhdD4gMDAyOCAwMDMxIDAwMzAgMDAyOTs7OzEwO047Ozs7OworMjQ3RTtQQVJFTlRIRVNJWkVEIE5VTUJFUiBFTEVWRU47Tm87MDtFTjs8Y29tcGF0PiAwMDI4IDAwMzEgMDAzMSAwMDI5Ozs7MTE7Tjs7Ozs7CisyNDdGO1BBUkVOVEhFU0laRUQgTlVNQkVSIFRXRUxWRTtObzswO0VOOzxjb21wYXQ+IDAwMjggMDAzMSAwMDMyIDAwMjk7OzsxMjtOOzs7OzsKKzI0ODA7UEFSRU5USEVTSVpFRCBOVU1CRVIgVEhJUlRFRU47Tm87MDtFTjs8Y29tcGF0PiAwMDI4IDAwMzEgMDAzMyAwMDI5Ozs7MTM7Tjs7Ozs7CisyNDgxO1BBUkVOVEhFU0laRUQgTlVNQkVSIEZPVVJURUVOO05vOzA7RU47PGNvbXBhdD4gMDAyOCAwMDMxIDAwMzQgMDAyOTs7OzE0O047Ozs7OworMjQ4MjtQQVJFTlRIRVNJWkVEIE5VTUJFUiBGSUZURUVOO05vOzA7RU47PGNvbXBhdD4gMDAyOCAwMDMxIDAwMzUgMDAyOTs7OzE1O047Ozs7OworMjQ4MztQQVJFTlRIRVNJWkVEIE5VTUJFUiBTSVhURUVOO05vOzA7RU47PGNvbXBhdD4gMDAyOCAwMDMxIDAwMzYgMDAyOTs7OzE2O047Ozs7OworMjQ4NDtQQVJFTlRIRVNJWkVEIE5VTUJFUiBTRVZFTlRFRU47Tm87MDtFTjs8Y29tcGF0PiAwMDI4IDAwMzEgMDAzNyAwMDI5Ozs7MTc7Tjs7Ozs7CisyNDg1O1BBUkVOVEhFU0laRUQgTlVNQkVSIEVJR0hURUVOO05vOzA7RU47PGNvbXBhdD4gMDAyOCAwMDMxIDAwMzggMDAyOTs7OzE4O047Ozs7OworMjQ4NjtQQVJFTlRIRVNJWkVEIE5VTUJFUiBOSU5FVEVFTjtObzswO0VOOzxjb21wYXQ+IDAwMjggMDAzMSAwMDM5IDAwMjk7OzsxOTtOOzs7OzsKKzI0ODc7UEFSRU5USEVTSVpFRCBOVU1CRVIgVFdFTlRZO05vOzA7RU47PGNvbXBhdD4gMDAyOCAwMDMyIDAwMzAgMDAyOTs7OzIwO047Ozs7OworMjQ4ODtESUdJVCBPTkUgRlVMTCBTVE9QO05vOzA7RU47PGNvbXBhdD4gMDAzMSAwMDJFOzsxOzE7TjtESUdJVCBPTkUgUEVSSU9EOzs7OworMjQ4OTtESUdJVCBUV08gRlVMTCBTVE9QO05vOzA7RU47PGNvbXBhdD4gMDAzMiAwMDJFOzsyOzI7TjtESUdJVCBUV08gUEVSSU9EOzs7OworMjQ4QTtESUdJVCBUSFJFRSBGVUxMIFNUT1A7Tm87MDtFTjs8Y29tcGF0PiAwMDMzIDAwMkU7OzM7MztOO0RJR0lUIFRIUkVFIFBFUklPRDs7OzsKKzI0OEI7RElHSVQgRk9VUiBGVUxMIFNUT1A7Tm87MDtFTjs8Y29tcGF0PiAwMDM0IDAwMkU7OzQ7NDtOO0RJR0lUIEZPVVIgUEVSSU9EOzs7OworMjQ4QztESUdJVCBGSVZFIEZVTEwgU1RPUDtObzswO0VOOzxjb21wYXQ+IDAwMzUgMDAyRTs7NTs1O047RElHSVQgRklWRSBQRVJJT0Q7Ozs7CisyNDhEO0RJR0lUIFNJWCBGVUxMIFNUT1A7Tm87MDtFTjs8Y29tcGF0PiAwMDM2IDAwMkU7OzY7NjtOO0RJR0lUIFNJWCBQRVJJT0Q7Ozs7CisyNDhFO0RJR0lUIFNFVkVOIEZVTEwgU1RPUDtObzswO0VOOzxjb21wYXQ+IDAwMzcgMDAyRTs7Nzs3O047RElHSVQgU0VWRU4gUEVSSU9EOzs7OworMjQ4RjtESUdJVCBFSUdIVCBGVUxMIFNUT1A7Tm87MDtFTjs8Y29tcGF0PiAwMDM4IDAwMkU7Ozg7ODtOO0RJR0lUIEVJR0hUIFBFUklPRDs7OzsKKzI0OTA7RElHSVQgTklORSBGVUxMIFNUT1A7Tm87MDtFTjs8Y29tcGF0PiAwMDM5IDAwMkU7Ozk7OTtOO0RJR0lUIE5JTkUgUEVSSU9EOzs7OworMjQ5MTtOVU1CRVIgVEVOIEZVTEwgU1RPUDtObzswO0VOOzxjb21wYXQ+IDAwMzEgMDAzMCAwMDJFOzs7MTA7TjtOVU1CRVIgVEVOIFBFUklPRDs7OzsKKzI0OTI7TlVNQkVSIEVMRVZFTiBGVUxMIFNUT1A7Tm87MDtFTjs8Y29tcGF0PiAwMDMxIDAwMzEgMDAyRTs7OzExO047TlVNQkVSIEVMRVZFTiBQRVJJT0Q7Ozs7CisyNDkzO05VTUJFUiBUV0VMVkUgRlVMTCBTVE9QO05vOzA7RU47PGNvbXBhdD4gMDAzMSAwMDMyIDAwMkU7OzsxMjtOO05VTUJFUiBUV0VMVkUgUEVSSU9EOzs7OworMjQ5NDtOVU1CRVIgVEhJUlRFRU4gRlVMTCBTVE9QO05vOzA7RU47PGNvbXBhdD4gMDAzMSAwMDMzIDAwMkU7OzsxMztOO05VTUJFUiBUSElSVEVFTiBQRVJJT0Q7Ozs7CisyNDk1O05VTUJFUiBGT1VSVEVFTiBGVUxMIFNUT1A7Tm87MDtFTjs8Y29tcGF0PiAwMDMxIDAwMzQgMDAyRTs7OzE0O047TlVNQkVSIEZPVVJURUVOIFBFUklPRDs7OzsKKzI0OTY7TlVNQkVSIEZJRlRFRU4gRlVMTCBTVE9QO05vOzA7RU47PGNvbXBhdD4gMDAzMSAwMDM1IDAwMkU7OzsxNTtOO05VTUJFUiBGSUZURUVOIFBFUklPRDs7OzsKKzI0OTc7TlVNQkVSIFNJWFRFRU4gRlVMTCBTVE9QO05vOzA7RU47PGNvbXBhdD4gMDAzMSAwMDM2IDAwMkU7OzsxNjtOO05VTUJFUiBTSVhURUVOIFBFUklPRDs7OzsKKzI0OTg7TlVNQkVSIFNFVkVOVEVFTiBGVUxMIFNUT1A7Tm87MDtFTjs8Y29tcGF0PiAwMDMxIDAwMzcgMDAyRTs7OzE3O047TlVNQkVSIFNFVkVOVEVFTiBQRVJJT0Q7Ozs7CisyNDk5O05VTUJFUiBFSUdIVEVFTiBGVUxMIFNUT1A7Tm87MDtFTjs8Y29tcGF0PiAwMDMxIDAwMzggMDAyRTs7OzE4O047TlVNQkVSIEVJR0hURUVOIFBFUklPRDs7OzsKKzI0OUE7TlVNQkVSIE5JTkVURUVOIEZVTEwgU1RPUDtObzswO0VOOzxjb21wYXQ+IDAwMzEgMDAzOSAwMDJFOzs7MTk7TjtOVU1CRVIgTklORVRFRU4gUEVSSU9EOzs7OworMjQ5QjtOVU1CRVIgVFdFTlRZIEZVTEwgU1RPUDtObzswO0VOOzxjb21wYXQ+IDAwMzIgMDAzMCAwMDJFOzs7MjA7TjtOVU1CRVIgVFdFTlRZIFBFUklPRDs7OzsKKzI0OUM7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgQTtTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDYxIDAwMjk7Ozs7Tjs7Ozs7CisyNDlEO1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIEI7U287MDtMOzxjb21wYXQ+IDAwMjggMDA2MiAwMDI5Ozs7O047Ozs7OworMjQ5RTtQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBDO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwNjMgMDAyOTs7OztOOzs7OzsKKzI0OUY7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgRDtTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDY0IDAwMjk7Ozs7Tjs7Ozs7CisyNEEwO1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIEU7U287MDtMOzxjb21wYXQ+IDAwMjggMDA2NSAwMDI5Ozs7O047Ozs7OworMjRBMTtQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBGO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwNjYgMDAyOTs7OztOOzs7OzsKKzI0QTI7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgRztTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDY3IDAwMjk7Ozs7Tjs7Ozs7CisyNEEzO1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIEg7U287MDtMOzxjb21wYXQ+IDAwMjggMDA2OCAwMDI5Ozs7O047Ozs7OworMjRBNDtQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBJO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwNjkgMDAyOTs7OztOOzs7OzsKKzI0QTU7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgSjtTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDZBIDAwMjk7Ozs7Tjs7Ozs7CisyNEE2O1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIEs7U287MDtMOzxjb21wYXQ+IDAwMjggMDA2QiAwMDI5Ozs7O047Ozs7OworMjRBNztQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBMO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwNkMgMDAyOTs7OztOOzs7OzsKKzI0QTg7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgTTtTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDZEIDAwMjk7Ozs7Tjs7Ozs7CisyNEE5O1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIE47U287MDtMOzxjb21wYXQ+IDAwMjggMDA2RSAwMDI5Ozs7O047Ozs7OworMjRBQTtQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBPO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwNkYgMDAyOTs7OztOOzs7OzsKKzI0QUI7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgUDtTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDcwIDAwMjk7Ozs7Tjs7Ozs7CisyNEFDO1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIFE7U287MDtMOzxjb21wYXQ+IDAwMjggMDA3MSAwMDI5Ozs7O047Ozs7OworMjRBRDtQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBSO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwNzIgMDAyOTs7OztOOzs7OzsKKzI0QUU7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgUztTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDczIDAwMjk7Ozs7Tjs7Ozs7CisyNEFGO1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIFQ7U287MDtMOzxjb21wYXQ+IDAwMjggMDA3NCAwMDI5Ozs7O047Ozs7OworMjRCMDtQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBVO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwNzUgMDAyOTs7OztOOzs7OzsKKzI0QjE7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgVjtTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDc2IDAwMjk7Ozs7Tjs7Ozs7CisyNEIyO1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIFc7U287MDtMOzxjb21wYXQ+IDAwMjggMDA3NyAwMDI5Ozs7O047Ozs7OworMjRCMztQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBYO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwNzggMDAyOTs7OztOOzs7OzsKKzI0QjQ7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgWTtTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDc5IDAwMjk7Ozs7Tjs7Ozs7CisyNEI1O1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIFo7U287MDtMOzxjb21wYXQ+IDAwMjggMDA3QSAwMDI5Ozs7O047Ozs7OworMjRCNjtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIEE7U287MDtMOzxjaXJjbGU+IDAwNDE7Ozs7Tjs7OzsyNEQwOworMjRCNztDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIEI7U287MDtMOzxjaXJjbGU+IDAwNDI7Ozs7Tjs7OzsyNEQxOworMjRCODtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIEM7U287MDtMOzxjaXJjbGU+IDAwNDM7Ozs7Tjs7OzsyNEQyOworMjRCOTtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIEQ7U287MDtMOzxjaXJjbGU+IDAwNDQ7Ozs7Tjs7OzsyNEQzOworMjRCQTtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIEU7U287MDtMOzxjaXJjbGU+IDAwNDU7Ozs7Tjs7OzsyNEQ0OworMjRCQjtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIEY7U287MDtMOzxjaXJjbGU+IDAwNDY7Ozs7Tjs7OzsyNEQ1OworMjRCQztDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIEc7U287MDtMOzxjaXJjbGU+IDAwNDc7Ozs7Tjs7OzsyNEQ2OworMjRCRDtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIEg7U287MDtMOzxjaXJjbGU+IDAwNDg7Ozs7Tjs7OzsyNEQ3OworMjRCRTtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIEk7U287MDtMOzxjaXJjbGU+IDAwNDk7Ozs7Tjs7OzsyNEQ4OworMjRCRjtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIEo7U287MDtMOzxjaXJjbGU+IDAwNEE7Ozs7Tjs7OzsyNEQ5OworMjRDMDtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIEs7U287MDtMOzxjaXJjbGU+IDAwNEI7Ozs7Tjs7OzsyNERBOworMjRDMTtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIEw7U287MDtMOzxjaXJjbGU+IDAwNEM7Ozs7Tjs7OzsyNERCOworMjRDMjtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIE07U287MDtMOzxjaXJjbGU+IDAwNEQ7Ozs7Tjs7OzsyNERDOworMjRDMztDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIE47U287MDtMOzxjaXJjbGU+IDAwNEU7Ozs7Tjs7OzsyNEREOworMjRDNDtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIE87U287MDtMOzxjaXJjbGU+IDAwNEY7Ozs7Tjs7OzsyNERFOworMjRDNTtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIFA7U287MDtMOzxjaXJjbGU+IDAwNTA7Ozs7Tjs7OzsyNERGOworMjRDNjtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIFE7U287MDtMOzxjaXJjbGU+IDAwNTE7Ozs7Tjs7OzsyNEUwOworMjRDNztDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIFI7U287MDtMOzxjaXJjbGU+IDAwNTI7Ozs7Tjs7OzsyNEUxOworMjRDODtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIFM7U287MDtMOzxjaXJjbGU+IDAwNTM7Ozs7Tjs7OzsyNEUyOworMjRDOTtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIFQ7U287MDtMOzxjaXJjbGU+IDAwNTQ7Ozs7Tjs7OzsyNEUzOworMjRDQTtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIFU7U287MDtMOzxjaXJjbGU+IDAwNTU7Ozs7Tjs7OzsyNEU0OworMjRDQjtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIFY7U287MDtMOzxjaXJjbGU+IDAwNTY7Ozs7Tjs7OzsyNEU1OworMjRDQztDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIFc7U287MDtMOzxjaXJjbGU+IDAwNTc7Ozs7Tjs7OzsyNEU2OworMjRDRDtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIFg7U287MDtMOzxjaXJjbGU+IDAwNTg7Ozs7Tjs7OzsyNEU3OworMjRDRTtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIFk7U287MDtMOzxjaXJjbGU+IDAwNTk7Ozs7Tjs7OzsyNEU4OworMjRDRjtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIFo7U287MDtMOzxjaXJjbGU+IDAwNUE7Ozs7Tjs7OzsyNEU5OworMjREMDtDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBBO1NvOzA7TDs8Y2lyY2xlPiAwMDYxOzs7O047OzsyNEI2OzsyNEI2CisyNEQxO0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIEI7U287MDtMOzxjaXJjbGU+IDAwNjI7Ozs7Tjs7OzI0Qjc7OzI0QjcKKzI0RDI7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgQztTbzswO0w7PGNpcmNsZT4gMDA2Mzs7OztOOzs7MjRCODs7MjRCOAorMjREMztDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBEO1NvOzA7TDs8Y2lyY2xlPiAwMDY0Ozs7O047OzsyNEI5OzsyNEI5CisyNEQ0O0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIEU7U287MDtMOzxjaXJjbGU+IDAwNjU7Ozs7Tjs7OzI0QkE7OzI0QkEKKzI0RDU7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgRjtTbzswO0w7PGNpcmNsZT4gMDA2Njs7OztOOzs7MjRCQjs7MjRCQgorMjRENjtDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBHO1NvOzA7TDs8Y2lyY2xlPiAwMDY3Ozs7O047OzsyNEJDOzsyNEJDCisyNEQ3O0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIEg7U287MDtMOzxjaXJjbGU+IDAwNjg7Ozs7Tjs7OzI0QkQ7OzI0QkQKKzI0RDg7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgSTtTbzswO0w7PGNpcmNsZT4gMDA2OTs7OztOOzs7MjRCRTs7MjRCRQorMjREOTtDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBKO1NvOzA7TDs8Y2lyY2xlPiAwMDZBOzs7O047OzsyNEJGOzsyNEJGCisyNERBO0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIEs7U287MDtMOzxjaXJjbGU+IDAwNkI7Ozs7Tjs7OzI0QzA7OzI0QzAKKzI0REI7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgTDtTbzswO0w7PGNpcmNsZT4gMDA2Qzs7OztOOzs7MjRDMTs7MjRDMQorMjREQztDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBNO1NvOzA7TDs8Y2lyY2xlPiAwMDZEOzs7O047OzsyNEMyOzsyNEMyCisyNEREO0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIE47U287MDtMOzxjaXJjbGU+IDAwNkU7Ozs7Tjs7OzI0QzM7OzI0QzMKKzI0REU7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgTztTbzswO0w7PGNpcmNsZT4gMDA2Rjs7OztOOzs7MjRDNDs7MjRDNAorMjRERjtDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBQO1NvOzA7TDs8Y2lyY2xlPiAwMDcwOzs7O047OzsyNEM1OzsyNEM1CisyNEUwO0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIFE7U287MDtMOzxjaXJjbGU+IDAwNzE7Ozs7Tjs7OzI0QzY7OzI0QzYKKzI0RTE7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgUjtTbzswO0w7PGNpcmNsZT4gMDA3Mjs7OztOOzs7MjRDNzs7MjRDNworMjRFMjtDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBTO1NvOzA7TDs8Y2lyY2xlPiAwMDczOzs7O047OzsyNEM4OzsyNEM4CisyNEUzO0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIFQ7U287MDtMOzxjaXJjbGU+IDAwNzQ7Ozs7Tjs7OzI0Qzk7OzI0QzkKKzI0RTQ7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgVTtTbzswO0w7PGNpcmNsZT4gMDA3NTs7OztOOzs7MjRDQTs7MjRDQQorMjRFNTtDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBWO1NvOzA7TDs8Y2lyY2xlPiAwMDc2Ozs7O047OzsyNENCOzsyNENCCisyNEU2O0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIFc7U287MDtMOzxjaXJjbGU+IDAwNzc7Ozs7Tjs7OzI0Q0M7OzI0Q0MKKzI0RTc7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgWDtTbzswO0w7PGNpcmNsZT4gMDA3ODs7OztOOzs7MjRDRDs7MjRDRAorMjRFODtDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBZO1NvOzA7TDs8Y2lyY2xlPiAwMDc5Ozs7O047OzsyNENFOzsyNENFCisyNEU5O0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIFo7U287MDtMOzxjaXJjbGU+IDAwN0E7Ozs7Tjs7OzI0Q0Y7OzI0Q0YKKzI0RUE7Q0lSQ0xFRCBESUdJVCBaRVJPO05vOzA7RU47PGNpcmNsZT4gMDAzMDs7MDswO047Ozs7OworMjRFQjtORUdBVElWRSBDSVJDTEVEIE5VTUJFUiBFTEVWRU47Tm87MDtPTjs7OzsxMTtOOzs7OzsKKzI0RUM7TkVHQVRJVkUgQ0lSQ0xFRCBOVU1CRVIgVFdFTFZFO05vOzA7T047Ozs7MTI7Tjs7Ozs7CisyNEVEO05FR0FUSVZFIENJUkNMRUQgTlVNQkVSIFRISVJURUVOO05vOzA7T047Ozs7MTM7Tjs7Ozs7CisyNEVFO05FR0FUSVZFIENJUkNMRUQgTlVNQkVSIEZPVVJURUVOO05vOzA7T047Ozs7MTQ7Tjs7Ozs7CisyNEVGO05FR0FUSVZFIENJUkNMRUQgTlVNQkVSIEZJRlRFRU47Tm87MDtPTjs7OzsxNTtOOzs7OzsKKzI0RjA7TkVHQVRJVkUgQ0lSQ0xFRCBOVU1CRVIgU0lYVEVFTjtObzswO09OOzs7OzE2O047Ozs7OworMjRGMTtORUdBVElWRSBDSVJDTEVEIE5VTUJFUiBTRVZFTlRFRU47Tm87MDtPTjs7OzsxNztOOzs7OzsKKzI0RjI7TkVHQVRJVkUgQ0lSQ0xFRCBOVU1CRVIgRUlHSFRFRU47Tm87MDtPTjs7OzsxODtOOzs7OzsKKzI0RjM7TkVHQVRJVkUgQ0lSQ0xFRCBOVU1CRVIgTklORVRFRU47Tm87MDtPTjs7OzsxOTtOOzs7OzsKKzI0RjQ7TkVHQVRJVkUgQ0lSQ0xFRCBOVU1CRVIgVFdFTlRZO05vOzA7T047Ozs7MjA7Tjs7Ozs7CisyNEY1O0RPVUJMRSBDSVJDTEVEIERJR0lUIE9ORTtObzswO09OOzs7MTsxO047Ozs7OworMjRGNjtET1VCTEUgQ0lSQ0xFRCBESUdJVCBUV087Tm87MDtPTjs7OzI7MjtOOzs7OzsKKzI0Rjc7RE9VQkxFIENJUkNMRUQgRElHSVQgVEhSRUU7Tm87MDtPTjs7OzM7MztOOzs7OzsKKzI0Rjg7RE9VQkxFIENJUkNMRUQgRElHSVQgRk9VUjtObzswO09OOzs7NDs0O047Ozs7OworMjRGOTtET1VCTEUgQ0lSQ0xFRCBESUdJVCBGSVZFO05vOzA7T047Ozs1OzU7Tjs7Ozs7CisyNEZBO0RPVUJMRSBDSVJDTEVEIERJR0lUIFNJWDtObzswO09OOzs7Njs2O047Ozs7OworMjRGQjtET1VCTEUgQ0lSQ0xFRCBESUdJVCBTRVZFTjtObzswO09OOzs7Nzs3O047Ozs7OworMjRGQztET1VCTEUgQ0lSQ0xFRCBESUdJVCBFSUdIVDtObzswO09OOzs7ODs4O047Ozs7OworMjRGRDtET1VCTEUgQ0lSQ0xFRCBESUdJVCBOSU5FO05vOzA7T047Ozs5Ozk7Tjs7Ozs7CisyNEZFO0RPVUJMRSBDSVJDTEVEIE5VTUJFUiBURU47Tm87MDtPTjs7OzsxMDtOOzs7OzsKKzI1MDA7Qk9YIERSQVdJTkdTIExJR0hUIEhPUklaT05UQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBIT1JJWk9OVEFMOzs7OworMjUwMTtCT1ggRFJBV0lOR1MgSEVBVlkgSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIEhPUklaT05UQUw7Ozs7CisyNTAyO0JPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIFZFUlRJQ0FMOzs7OworMjUwMztCT1ggRFJBV0lOR1MgSEVBVlkgVkVSVElDQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBIRUFWWSBWRVJUSUNBTDs7OzsKKzI1MDQ7Qk9YIERSQVdJTkdTIExJR0hUIFRSSVBMRSBEQVNIIEhPUklaT05UQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBUUklQTEUgREFTSCBIT1JJWk9OVEFMOzs7OworMjUwNTtCT1ggRFJBV0lOR1MgSEVBVlkgVFJJUExFIERBU0ggSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIFRSSVBMRSBEQVNIIEhPUklaT05UQUw7Ozs7CisyNTA2O0JPWCBEUkFXSU5HUyBMSUdIVCBUUklQTEUgREFTSCBWRVJUSUNBTDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIFRSSVBMRSBEQVNIIFZFUlRJQ0FMOzs7OworMjUwNztCT1ggRFJBV0lOR1MgSEVBVlkgVFJJUExFIERBU0ggVkVSVElDQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBIRUFWWSBUUklQTEUgREFTSCBWRVJUSUNBTDs7OzsKKzI1MDg7Qk9YIERSQVdJTkdTIExJR0hUIFFVQURSVVBMRSBEQVNIIEhPUklaT05UQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBRVUFEUlVQTEUgREFTSCBIT1JJWk9OVEFMOzs7OworMjUwOTtCT1ggRFJBV0lOR1MgSEVBVlkgUVVBRFJVUExFIERBU0ggSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIFFVQURSVVBMRSBEQVNIIEhPUklaT05UQUw7Ozs7CisyNTBBO0JPWCBEUkFXSU5HUyBMSUdIVCBRVUFEUlVQTEUgREFTSCBWRVJUSUNBTDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIFFVQURSVVBMRSBEQVNIIFZFUlRJQ0FMOzs7OworMjUwQjtCT1ggRFJBV0lOR1MgSEVBVlkgUVVBRFJVUExFIERBU0ggVkVSVElDQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBIRUFWWSBRVUFEUlVQTEUgREFTSCBWRVJUSUNBTDs7OzsKKzI1MEM7Qk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIFJJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgRE9XTiBBTkQgUklHSFQ7Ozs7CisyNTBEO0JPWCBEUkFXSU5HUyBET1dOIExJR0hUIEFORCBSSUdIVCBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gTElHSFQgQU5EIFJJR0hUIEhFQVZZOzs7OworMjUwRTtCT1ggRFJBV0lOR1MgRE9XTiBIRUFWWSBBTkQgUklHSFQgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIEhFQVZZIEFORCBSSUdIVCBMSUdIVDs7OzsKKzI1MEY7Qk9YIERSQVdJTkdTIEhFQVZZIERPV04gQU5EIFJJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgSEVBVlkgRE9XTiBBTkQgUklHSFQ7Ozs7CisyNTEwO0JPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBMRUZUO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgRE9XTiBBTkQgTEVGVDs7OzsKKzI1MTE7Qk9YIERSQVdJTkdTIERPV04gTElHSFQgQU5EIExFRlQgSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIExJR0hUIEFORCBMRUZUIEhFQVZZOzs7OworMjUxMjtCT1ggRFJBV0lOR1MgRE9XTiBIRUFWWSBBTkQgTEVGVCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gSEVBVlkgQU5EIExFRlQgTElHSFQ7Ozs7CisyNTEzO0JPWCBEUkFXSU5HUyBIRUFWWSBET1dOIEFORCBMRUZUO1NvOzA7T047Ozs7O047Rk9STVMgSEVBVlkgRE9XTiBBTkQgTEVGVDs7OzsKKzI1MTQ7Qk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBSSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIFVQIEFORCBSSUdIVDs7OzsKKzI1MTU7Qk9YIERSQVdJTkdTIFVQIExJR0hUIEFORCBSSUdIVCBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIFVQIExJR0hUIEFORCBSSUdIVCBIRUFWWTs7OzsKKzI1MTY7Qk9YIERSQVdJTkdTIFVQIEhFQVZZIEFORCBSSUdIVCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIFVQIEhFQVZZIEFORCBSSUdIVCBMSUdIVDs7OzsKKzI1MTc7Qk9YIERSQVdJTkdTIEhFQVZZIFVQIEFORCBSSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIFVQIEFORCBSSUdIVDs7OzsKKzI1MTg7Qk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBMRUZUO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgVVAgQU5EIExFRlQ7Ozs7CisyNTE5O0JPWCBEUkFXSU5HUyBVUCBMSUdIVCBBTkQgTEVGVCBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIFVQIExJR0hUIEFORCBMRUZUIEhFQVZZOzs7OworMjUxQTtCT1ggRFJBV0lOR1MgVVAgSEVBVlkgQU5EIExFRlQgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBVUCBIRUFWWSBBTkQgTEVGVCBMSUdIVDs7OzsKKzI1MUI7Qk9YIERSQVdJTkdTIEhFQVZZIFVQIEFORCBMRUZUO1NvOzA7T047Ozs7O047Rk9STVMgSEVBVlkgVVAgQU5EIExFRlQ7Ozs7CisyNTFDO0JPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgUklHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBWRVJUSUNBTCBBTkQgUklHSFQ7Ozs7CisyNTFEO0JPWCBEUkFXSU5HUyBWRVJUSUNBTCBMSUdIVCBBTkQgUklHSFQgSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBWRVJUSUNBTCBMSUdIVCBBTkQgUklHSFQgSEVBVlk7Ozs7CisyNTFFO0JPWCBEUkFXSU5HUyBVUCBIRUFWWSBBTkQgUklHSFQgRE9XTiBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIFVQIEhFQVZZIEFORCBSSUdIVCBET1dOIExJR0hUOzs7OworMjUxRjtCT1ggRFJBV0lOR1MgRE9XTiBIRUFWWSBBTkQgUklHSFQgVVAgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIEhFQVZZIEFORCBSSUdIVCBVUCBMSUdIVDs7OzsKKzI1MjA7Qk9YIERSQVdJTkdTIFZFUlRJQ0FMIEhFQVZZIEFORCBSSUdIVCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIFZFUlRJQ0FMIEhFQVZZIEFORCBSSUdIVCBMSUdIVDs7OzsKKzI1MjE7Qk9YIERSQVdJTkdTIERPV04gTElHSFQgQU5EIFJJR0hUIFVQIEhFQVZZO1NvOzA7T047Ozs7O047Rk9STVMgRE9XTiBMSUdIVCBBTkQgUklHSFQgVVAgSEVBVlk7Ozs7CisyNTIyO0JPWCBEUkFXSU5HUyBVUCBMSUdIVCBBTkQgUklHSFQgRE9XTiBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIFVQIExJR0hUIEFORCBSSUdIVCBET1dOIEhFQVZZOzs7OworMjUyMztCT1ggRFJBV0lOR1MgSEVBVlkgVkVSVElDQUwgQU5EIFJJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgSEVBVlkgVkVSVElDQUwgQU5EIFJJR0hUOzs7OworMjUyNDtCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIExFRlQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBWRVJUSUNBTCBBTkQgTEVGVDs7OzsKKzI1MjU7Qk9YIERSQVdJTkdTIFZFUlRJQ0FMIExJR0hUIEFORCBMRUZUIEhFQVZZO1NvOzA7T047Ozs7O047Rk9STVMgVkVSVElDQUwgTElHSFQgQU5EIExFRlQgSEVBVlk7Ozs7CisyNTI2O0JPWCBEUkFXSU5HUyBVUCBIRUFWWSBBTkQgTEVGVCBET1dOIExJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgVVAgSEVBVlkgQU5EIExFRlQgRE9XTiBMSUdIVDs7OzsKKzI1Mjc7Qk9YIERSQVdJTkdTIERPV04gSEVBVlkgQU5EIExFRlQgVVAgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIEhFQVZZIEFORCBMRUZUIFVQIExJR0hUOzs7OworMjUyODtCT1ggRFJBV0lOR1MgVkVSVElDQUwgSEVBVlkgQU5EIExFRlQgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBWRVJUSUNBTCBIRUFWWSBBTkQgTEVGVCBMSUdIVDs7OzsKKzI1Mjk7Qk9YIERSQVdJTkdTIERPV04gTElHSFQgQU5EIExFRlQgVVAgSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIExJR0hUIEFORCBMRUZUIFVQIEhFQVZZOzs7OworMjUyQTtCT1ggRFJBV0lOR1MgVVAgTElHSFQgQU5EIExFRlQgRE9XTiBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIFVQIExJR0hUIEFORCBMRUZUIERPV04gSEVBVlk7Ozs7CisyNTJCO0JPWCBEUkFXSU5HUyBIRUFWWSBWRVJUSUNBTCBBTkQgTEVGVDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIFZFUlRJQ0FMIEFORCBMRUZUOzs7OworMjUyQztCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIERPV04gQU5EIEhPUklaT05UQUw7Ozs7CisyNTJEO0JPWCBEUkFXSU5HUyBMRUZUIEhFQVZZIEFORCBSSUdIVCBET1dOIExJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgTEVGVCBIRUFWWSBBTkQgUklHSFQgRE9XTiBMSUdIVDs7OzsKKzI1MkU7Qk9YIERSQVdJTkdTIFJJR0hUIEhFQVZZIEFORCBMRUZUIERPV04gTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBSSUdIVCBIRUFWWSBBTkQgTEVGVCBET1dOIExJR0hUOzs7OworMjUyRjtCT1ggRFJBV0lOR1MgRE9XTiBMSUdIVCBBTkQgSE9SSVpPTlRBTCBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gTElHSFQgQU5EIEhPUklaT05UQUwgSEVBVlk7Ozs7CisyNTMwO0JPWCBEUkFXSU5HUyBET1dOIEhFQVZZIEFORCBIT1JJWk9OVEFMIExJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgRE9XTiBIRUFWWSBBTkQgSE9SSVpPTlRBTCBMSUdIVDs7OzsKKzI1MzE7Qk9YIERSQVdJTkdTIFJJR0hUIExJR0hUIEFORCBMRUZUIERPV04gSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBSSUdIVCBMSUdIVCBBTkQgTEVGVCBET1dOIEhFQVZZOzs7OworMjUzMjtCT1ggRFJBV0lOR1MgTEVGVCBMSUdIVCBBTkQgUklHSFQgRE9XTiBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIExFRlQgTElHSFQgQU5EIFJJR0hUIERPV04gSEVBVlk7Ozs7CisyNTMzO0JPWCBEUkFXSU5HUyBIRUFWWSBET1dOIEFORCBIT1JJWk9OVEFMO1NvOzA7T047Ozs7O047Rk9STVMgSEVBVlkgRE9XTiBBTkQgSE9SSVpPTlRBTDs7OzsKKzI1MzQ7Qk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBIT1JJWk9OVEFMO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgVVAgQU5EIEhPUklaT05UQUw7Ozs7CisyNTM1O0JPWCBEUkFXSU5HUyBMRUZUIEhFQVZZIEFORCBSSUdIVCBVUCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIExFRlQgSEVBVlkgQU5EIFJJR0hUIFVQIExJR0hUOzs7OworMjUzNjtCT1ggRFJBV0lOR1MgUklHSFQgSEVBVlkgQU5EIExFRlQgVVAgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBSSUdIVCBIRUFWWSBBTkQgTEVGVCBVUCBMSUdIVDs7OzsKKzI1Mzc7Qk9YIERSQVdJTkdTIFVQIExJR0hUIEFORCBIT1JJWk9OVEFMIEhFQVZZO1NvOzA7T047Ozs7O047Rk9STVMgVVAgTElHSFQgQU5EIEhPUklaT05UQUwgSEVBVlk7Ozs7CisyNTM4O0JPWCBEUkFXSU5HUyBVUCBIRUFWWSBBTkQgSE9SSVpPTlRBTCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIFVQIEhFQVZZIEFORCBIT1JJWk9OVEFMIExJR0hUOzs7OworMjUzOTtCT1ggRFJBV0lOR1MgUklHSFQgTElHSFQgQU5EIExFRlQgVVAgSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBSSUdIVCBMSUdIVCBBTkQgTEVGVCBVUCBIRUFWWTs7OzsKKzI1M0E7Qk9YIERSQVdJTkdTIExFRlQgTElHSFQgQU5EIFJJR0hUIFVQIEhFQVZZO1NvOzA7T047Ozs7O047Rk9STVMgTEVGVCBMSUdIVCBBTkQgUklHSFQgVVAgSEVBVlk7Ozs7CisyNTNCO0JPWCBEUkFXSU5HUyBIRUFWWSBVUCBBTkQgSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIFVQIEFORCBIT1JJWk9OVEFMOzs7OworMjUzQztCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIEhPUklaT05UQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTDs7OzsKKzI1M0Q7Qk9YIERSQVdJTkdTIExFRlQgSEVBVlkgQU5EIFJJR0hUIFZFUlRJQ0FMIExJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgTEVGVCBIRUFWWSBBTkQgUklHSFQgVkVSVElDQUwgTElHSFQ7Ozs7CisyNTNFO0JPWCBEUkFXSU5HUyBSSUdIVCBIRUFWWSBBTkQgTEVGVCBWRVJUSUNBTCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIFJJR0hUIEhFQVZZIEFORCBMRUZUIFZFUlRJQ0FMIExJR0hUOzs7OworMjUzRjtCT1ggRFJBV0lOR1MgVkVSVElDQUwgTElHSFQgQU5EIEhPUklaT05UQUwgSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBWRVJUSUNBTCBMSUdIVCBBTkQgSE9SSVpPTlRBTCBIRUFWWTs7OzsKKzI1NDA7Qk9YIERSQVdJTkdTIFVQIEhFQVZZIEFORCBET1dOIEhPUklaT05UQUwgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBVUCBIRUFWWSBBTkQgRE9XTiBIT1JJWk9OVEFMIExJR0hUOzs7OworMjU0MTtCT1ggRFJBV0lOR1MgRE9XTiBIRUFWWSBBTkQgVVAgSE9SSVpPTlRBTCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gSEVBVlkgQU5EIFVQIEhPUklaT05UQUwgTElHSFQ7Ozs7CisyNTQyO0JPWCBEUkFXSU5HUyBWRVJUSUNBTCBIRUFWWSBBTkQgSE9SSVpPTlRBTCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIFZFUlRJQ0FMIEhFQVZZIEFORCBIT1JJWk9OVEFMIExJR0hUOzs7OworMjU0MztCT1ggRFJBV0lOR1MgTEVGVCBVUCBIRUFWWSBBTkQgUklHSFQgRE9XTiBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIExFRlQgVVAgSEVBVlkgQU5EIFJJR0hUIERPV04gTElHSFQ7Ozs7CisyNTQ0O0JPWCBEUkFXSU5HUyBSSUdIVCBVUCBIRUFWWSBBTkQgTEVGVCBET1dOIExJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgUklHSFQgVVAgSEVBVlkgQU5EIExFRlQgRE9XTiBMSUdIVDs7OzsKKzI1NDU7Qk9YIERSQVdJTkdTIExFRlQgRE9XTiBIRUFWWSBBTkQgUklHSFQgVVAgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMRUZUIERPV04gSEVBVlkgQU5EIFJJR0hUIFVQIExJR0hUOzs7OworMjU0NjtCT1ggRFJBV0lOR1MgUklHSFQgRE9XTiBIRUFWWSBBTkQgTEVGVCBVUCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIFJJR0hUIERPV04gSEVBVlkgQU5EIExFRlQgVVAgTElHSFQ7Ozs7CisyNTQ3O0JPWCBEUkFXSU5HUyBET1dOIExJR0hUIEFORCBVUCBIT1JJWk9OVEFMIEhFQVZZO1NvOzA7T047Ozs7O047Rk9STVMgRE9XTiBMSUdIVCBBTkQgVVAgSE9SSVpPTlRBTCBIRUFWWTs7OzsKKzI1NDg7Qk9YIERSQVdJTkdTIFVQIExJR0hUIEFORCBET1dOIEhPUklaT05UQUwgSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBVUCBMSUdIVCBBTkQgRE9XTiBIT1JJWk9OVEFMIEhFQVZZOzs7OworMjU0OTtCT1ggRFJBV0lOR1MgUklHSFQgTElHSFQgQU5EIExFRlQgVkVSVElDQUwgSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBSSUdIVCBMSUdIVCBBTkQgTEVGVCBWRVJUSUNBTCBIRUFWWTs7OzsKKzI1NEE7Qk9YIERSQVdJTkdTIExFRlQgTElHSFQgQU5EIFJJR0hUIFZFUlRJQ0FMIEhFQVZZO1NvOzA7T047Ozs7O047Rk9STVMgTEVGVCBMSUdIVCBBTkQgUklHSFQgVkVSVElDQUwgSEVBVlk7Ozs7CisyNTRCO0JPWCBEUkFXSU5HUyBIRUFWWSBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIFZFUlRJQ0FMIEFORCBIT1JJWk9OVEFMOzs7OworMjU0QztCT1ggRFJBV0lOR1MgTElHSFQgRE9VQkxFIERBU0ggSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIERPVUJMRSBEQVNIIEhPUklaT05UQUw7Ozs7CisyNTREO0JPWCBEUkFXSU5HUyBIRUFWWSBET1VCTEUgREFTSCBIT1JJWk9OVEFMO1NvOzA7T047Ozs7O047Rk9STVMgSEVBVlkgRE9VQkxFIERBU0ggSE9SSVpPTlRBTDs7OzsKKzI1NEU7Qk9YIERSQVdJTkdTIExJR0hUIERPVUJMRSBEQVNIIFZFUlRJQ0FMO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgRE9VQkxFIERBU0ggVkVSVElDQUw7Ozs7CisyNTRGO0JPWCBEUkFXSU5HUyBIRUFWWSBET1VCTEUgREFTSCBWRVJUSUNBTDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIERPVUJMRSBEQVNIIFZFUlRJQ0FMOzs7OworMjU1MDtCT1ggRFJBV0lOR1MgRE9VQkxFIEhPUklaT05UQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBET1VCTEUgSE9SSVpPTlRBTDs7OzsKKzI1NTE7Qk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTDtTbzswO09OOzs7OztOO0ZPUk1TIERPVUJMRSBWRVJUSUNBTDs7OzsKKzI1NTI7Qk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBSSUdIVCBET1VCTEU7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIFNJTkdMRSBBTkQgUklHSFQgRE9VQkxFOzs7OworMjU1MztCT1ggRFJBV0lOR1MgRE9XTiBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRTtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gRE9VQkxFIEFORCBSSUdIVCBTSU5HTEU7Ozs7CisyNTU0O0JPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgUklHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBET1VCTEUgRE9XTiBBTkQgUklHSFQ7Ozs7CisyNTU1O0JPWCBEUkFXSU5HUyBET1dOIFNJTkdMRSBBTkQgTEVGVCBET1VCTEU7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIFNJTkdMRSBBTkQgTEVGVCBET1VCTEU7Ozs7CisyNTU2O0JPWCBEUkFXSU5HUyBET1dOIERPVUJMRSBBTkQgTEVGVCBTSU5HTEU7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIERPVUJMRSBBTkQgTEVGVCBTSU5HTEU7Ozs7CisyNTU3O0JPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgTEVGVDtTbzswO09OOzs7OztOO0ZPUk1TIERPVUJMRSBET1dOIEFORCBMRUZUOzs7OworMjU1ODtCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBSSUdIVCBET1VCTEU7U287MDtPTjs7Ozs7TjtGT1JNUyBVUCBTSU5HTEUgQU5EIFJJR0hUIERPVUJMRTs7OzsKKzI1NTk7Qk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgUklHSFQgU0lOR0xFO1NvOzA7T047Ozs7O047Rk9STVMgVVAgRE9VQkxFIEFORCBSSUdIVCBTSU5HTEU7Ozs7CisyNTVBO0JPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIFJJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgRE9VQkxFIFVQIEFORCBSSUdIVDs7OzsKKzI1NUI7Qk9YIERSQVdJTkdTIFVQIFNJTkdMRSBBTkQgTEVGVCBET1VCTEU7U287MDtPTjs7Ozs7TjtGT1JNUyBVUCBTSU5HTEUgQU5EIExFRlQgRE9VQkxFOzs7OworMjU1QztCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBMRUZUIFNJTkdMRTtTbzswO09OOzs7OztOO0ZPUk1TIFVQIERPVUJMRSBBTkQgTEVGVCBTSU5HTEU7Ozs7CisyNTVEO0JPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIExFRlQ7U287MDtPTjs7Ozs7TjtGT1JNUyBET1VCTEUgVVAgQU5EIExFRlQ7Ozs7CisyNTVFO0JPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIFJJR0hUIERPVUJMRTtTbzswO09OOzs7OztOO0ZPUk1TIFZFUlRJQ0FMIFNJTkdMRSBBTkQgUklHSFQgRE9VQkxFOzs7OworMjU1RjtCT1ggRFJBV0lOR1MgVkVSVElDQUwgRE9VQkxFIEFORCBSSUdIVCBTSU5HTEU7U287MDtPTjs7Ozs7TjtGT1JNUyBWRVJUSUNBTCBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRTs7OzsKKzI1NjA7Qk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgUklHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBET1VCTEUgVkVSVElDQUwgQU5EIFJJR0hUOzs7OworMjU2MTtCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBMRUZUIERPVUJMRTtTbzswO09OOzs7OztOO0ZPUk1TIFZFUlRJQ0FMIFNJTkdMRSBBTkQgTEVGVCBET1VCTEU7Ozs7CisyNTYyO0JPWCBEUkFXSU5HUyBWRVJUSUNBTCBET1VCTEUgQU5EIExFRlQgU0lOR0xFO1NvOzA7T047Ozs7O047Rk9STVMgVkVSVElDQUwgRE9VQkxFIEFORCBMRUZUIFNJTkdMRTs7OzsKKzI1NjM7Qk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgTEVGVDtTbzswO09OOzs7OztOO0ZPUk1TIERPVUJMRSBWRVJUSUNBTCBBTkQgTEVGVDs7OzsKKzI1NjQ7Qk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRTtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRTs7OzsKKzI1NjU7Qk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRTtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRTs7OzsKKzI1NjY7Qk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBIT1JJWk9OVEFMO1NvOzA7T047Ozs7O047Rk9STVMgRE9VQkxFIERPV04gQU5EIEhPUklaT05UQUw7Ozs7CisyNTY3O0JPWCBEUkFXSU5HUyBVUCBTSU5HTEUgQU5EIEhPUklaT05UQUwgRE9VQkxFO1NvOzA7T047Ozs7O047Rk9STVMgVVAgU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRTs7OzsKKzI1Njg7Qk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgSE9SSVpPTlRBTCBTSU5HTEU7U287MDtPTjs7Ozs7TjtGT1JNUyBVUCBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFOzs7OworMjU2OTtCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBIT1JJWk9OVEFMO1NvOzA7T047Ozs7O047Rk9STVMgRE9VQkxFIFVQIEFORCBIT1JJWk9OVEFMOzs7OworMjU2QTtCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRTtTbzswO09OOzs7OztOO0ZPUk1TIFZFUlRJQ0FMIFNJTkdMRSBBTkQgSE9SSVpPTlRBTCBET1VCTEU7Ozs7CisyNTZCO0JPWCBEUkFXSU5HUyBWRVJUSUNBTCBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFO1NvOzA7T047Ozs7O047Rk9STVMgVkVSVElDQUwgRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRTs7OzsKKzI1NkM7Qk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIERPVUJMRSBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTDs7OzsKKzI1NkQ7Qk9YIERSQVdJTkdTIExJR0hUIEFSQyBET1dOIEFORCBSSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIEFSQyBET1dOIEFORCBSSUdIVDs7OzsKKzI1NkU7Qk9YIERSQVdJTkdTIExJR0hUIEFSQyBET1dOIEFORCBMRUZUO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgQVJDIERPV04gQU5EIExFRlQ7Ozs7CisyNTZGO0JPWCBEUkFXSU5HUyBMSUdIVCBBUkMgVVAgQU5EIExFRlQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBBUkMgVVAgQU5EIExFRlQ7Ozs7CisyNTcwO0JPWCBEUkFXSU5HUyBMSUdIVCBBUkMgVVAgQU5EIFJJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgQVJDIFVQIEFORCBSSUdIVDs7OzsKKzI1NzE7Qk9YIERSQVdJTkdTIExJR0hUIERJQUdPTkFMIFVQUEVSIFJJR0hUIFRPIExPV0VSIExFRlQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBESUFHT05BTCBVUFBFUiBSSUdIVCBUTyBMT1dFUiBMRUZUOzs7OworMjU3MjtCT1ggRFJBV0lOR1MgTElHSFQgRElBR09OQUwgVVBQRVIgTEVGVCBUTyBMT1dFUiBSSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIERJQUdPTkFMIFVQUEVSIExFRlQgVE8gTE9XRVIgUklHSFQ7Ozs7CisyNTczO0JPWCBEUkFXSU5HUyBMSUdIVCBESUFHT05BTCBDUk9TUztTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIERJQUdPTkFMIENST1NTOzs7OworMjU3NDtCT1ggRFJBV0lOR1MgTElHSFQgTEVGVDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIExFRlQ7Ozs7CisyNTc1O0JPWCBEUkFXSU5HUyBMSUdIVCBVUDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIFVQOzs7OworMjU3NjtCT1ggRFJBV0lOR1MgTElHSFQgUklHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBSSUdIVDs7OzsKKzI1Nzc7Qk9YIERSQVdJTkdTIExJR0hUIERPV047U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBET1dOOzs7OworMjU3ODtCT1ggRFJBV0lOR1MgSEVBVlkgTEVGVDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIExFRlQ7Ozs7CisyNTc5O0JPWCBEUkFXSU5HUyBIRUFWWSBVUDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIFVQOzs7OworMjU3QTtCT1ggRFJBV0lOR1MgSEVBVlkgUklHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBIRUFWWSBSSUdIVDs7OzsKKzI1N0I7Qk9YIERSQVdJTkdTIEhFQVZZIERPV047U287MDtPTjs7Ozs7TjtGT1JNUyBIRUFWWSBET1dOOzs7OworMjU3QztCT1ggRFJBV0lOR1MgTElHSFQgTEVGVCBBTkQgSEVBVlkgUklHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBMRUZUIEFORCBIRUFWWSBSSUdIVDs7OzsKKzI1N0Q7Qk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBIRUFWWSBET1dOO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgVVAgQU5EIEhFQVZZIERPV047Ozs7CisyNTdFO0JPWCBEUkFXSU5HUyBIRUFWWSBMRUZUIEFORCBMSUdIVCBSSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIExFRlQgQU5EIExJR0hUIFJJR0hUOzs7OworMjU3RjtCT1ggRFJBV0lOR1MgSEVBVlkgVVAgQU5EIExJR0hUIERPV047U287MDtPTjs7Ozs7TjtGT1JNUyBIRUFWWSBVUCBBTkQgTElHSFQgRE9XTjs7OzsKKzI1ODA7VVBQRVIgSEFMRiBCTE9DSztTbzswO09OOzs7OztOOzs7OzsKKzI1ODE7TE9XRVIgT05FIEVJR0hUSCBCTE9DSztTbzswO09OOzs7OztOOzs7OzsKKzI1ODI7TE9XRVIgT05FIFFVQVJURVIgQkxPQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNTgzO0xPV0VSIFRIUkVFIEVJR0hUSFMgQkxPQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNTg0O0xPV0VSIEhBTEYgQkxPQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNTg1O0xPV0VSIEZJVkUgRUlHSFRIUyBCTE9DSztTbzswO09OOzs7OztOOzs7OzsKKzI1ODY7TE9XRVIgVEhSRUUgUVVBUlRFUlMgQkxPQ0s7U287MDtPTjs7Ozs7TjtMT1dFUiBUSFJFRSBRVUFSVEVSIEJMT0NLOzs7OworMjU4NztMT1dFUiBTRVZFTiBFSUdIVEhTIEJMT0NLO1NvOzA7T047Ozs7O047Ozs7OworMjU4ODtGVUxMIEJMT0NLO1NvOzA7T047Ozs7O047Ozs7OworMjU4OTtMRUZUIFNFVkVOIEVJR0hUSFMgQkxPQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNThBO0xFRlQgVEhSRUUgUVVBUlRFUlMgQkxPQ0s7U287MDtPTjs7Ozs7TjtMRUZUIFRIUkVFIFFVQVJURVIgQkxPQ0s7Ozs7CisyNThCO0xFRlQgRklWRSBFSUdIVEhTIEJMT0NLO1NvOzA7T047Ozs7O047Ozs7OworMjU4QztMRUZUIEhBTEYgQkxPQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNThEO0xFRlQgVEhSRUUgRUlHSFRIUyBCTE9DSztTbzswO09OOzs7OztOOzs7OzsKKzI1OEU7TEVGVCBPTkUgUVVBUlRFUiBCTE9DSztTbzswO09OOzs7OztOOzs7OzsKKzI1OEY7TEVGVCBPTkUgRUlHSFRIIEJMT0NLO1NvOzA7T047Ozs7O047Ozs7OworMjU5MDtSSUdIVCBIQUxGIEJMT0NLO1NvOzA7T047Ozs7O047Ozs7OworMjU5MTtMSUdIVCBTSEFERTtTbzswO09OOzs7OztOOzs7OzsKKzI1OTI7TUVESVVNIFNIQURFO1NvOzA7T047Ozs7O047Ozs7OworMjU5MztEQVJLIFNIQURFO1NvOzA7T047Ozs7O047Ozs7OworMjU5NDtVUFBFUiBPTkUgRUlHSFRIIEJMT0NLO1NvOzA7T047Ozs7O047Ozs7OworMjU5NTtSSUdIVCBPTkUgRUlHSFRIIEJMT0NLO1NvOzA7T047Ozs7O047Ozs7OworMjU5NjtRVUFEUkFOVCBMT1dFUiBMRUZUO1NvOzA7T047Ozs7O047Ozs7OworMjU5NztRVUFEUkFOVCBMT1dFUiBSSUdIVDtTbzswO09OOzs7OztOOzs7OzsKKzI1OTg7UVVBRFJBTlQgVVBQRVIgTEVGVDtTbzswO09OOzs7OztOOzs7OzsKKzI1OTk7UVVBRFJBTlQgVVBQRVIgTEVGVCBBTkQgTE9XRVIgTEVGVCBBTkQgTE9XRVIgUklHSFQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNTlBO1FVQURSQU5UIFVQUEVSIExFRlQgQU5EIExPV0VSIFJJR0hUO1NvOzA7T047Ozs7O047Ozs7OworMjU5QjtRVUFEUkFOVCBVUFBFUiBMRUZUIEFORCBVUFBFUiBSSUdIVCBBTkQgTE9XRVIgTEVGVDtTbzswO09OOzs7OztOOzs7OzsKKzI1OUM7UVVBRFJBTlQgVVBQRVIgTEVGVCBBTkQgVVBQRVIgUklHSFQgQU5EIExPV0VSIFJJR0hUO1NvOzA7T047Ozs7O047Ozs7OworMjU5RDtRVUFEUkFOVCBVUFBFUiBSSUdIVDtTbzswO09OOzs7OztOOzs7OzsKKzI1OUU7UVVBRFJBTlQgVVBQRVIgUklHSFQgQU5EIExPV0VSIExFRlQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNTlGO1FVQURSQU5UIFVQUEVSIFJJR0hUIEFORCBMT1dFUiBMRUZUIEFORCBMT1dFUiBSSUdIVDtTbzswO09OOzs7OztOOzs7OzsKKzI1QTA7QkxBQ0sgU1FVQVJFO1NvOzA7T047Ozs7O047Ozs7OworMjVBMTtXSElURSBTUVVBUkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUEyO1dISVRFIFNRVUFSRSBXSVRIIFJPVU5ERUQgQ09STkVSUztTbzswO09OOzs7OztOOzs7OzsKKzI1QTM7V0hJVEUgU1FVQVJFIENPTlRBSU5JTkcgQkxBQ0sgU01BTEwgU1FVQVJFO1NvOzA7T047Ozs7O047Ozs7OworMjVBNDtTUVVBUkUgV0lUSCBIT1JJWk9OVEFMIEZJTEw7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUE1O1NRVUFSRSBXSVRIIFZFUlRJQ0FMIEZJTEw7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUE2O1NRVUFSRSBXSVRIIE9SVEhPR09OQUwgQ1JPU1NIQVRDSCBGSUxMO1NvOzA7T047Ozs7O047Ozs7OworMjVBNztTUVVBUkUgV0lUSCBVUFBFUiBMRUZUIFRPIExPV0VSIFJJR0hUIEZJTEw7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUE4O1NRVUFSRSBXSVRIIFVQUEVSIFJJR0hUIFRPIExPV0VSIExFRlQgRklMTDtTbzswO09OOzs7OztOOzs7OzsKKzI1QTk7U1FVQVJFIFdJVEggRElBR09OQUwgQ1JPU1NIQVRDSCBGSUxMO1NvOzA7T047Ozs7O047Ozs7OworMjVBQTtCTEFDSyBTTUFMTCBTUVVBUkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUFCO1dISVRFIFNNQUxMIFNRVUFSRTtTbzswO09OOzs7OztOOzs7OzsKKzI1QUM7QkxBQ0sgUkVDVEFOR0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVBRDtXSElURSBSRUNUQU5HTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUFFO0JMQUNLIFZFUlRJQ0FMIFJFQ1RBTkdMRTtTbzswO09OOzs7OztOOzs7OzsKKzI1QUY7V0hJVEUgVkVSVElDQUwgUkVDVEFOR0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVCMDtCTEFDSyBQQVJBTExFTE9HUkFNO1NvOzA7T047Ozs7O047Ozs7OworMjVCMTtXSElURSBQQVJBTExFTE9HUkFNO1NvOzA7T047Ozs7O047Ozs7OworMjVCMjtCTEFDSyBVUC1QT0lOVElORyBUUklBTkdMRTtTbzswO09OOzs7OztOO0JMQUNLIFVQIFBPSU5USU5HIFRSSUFOR0xFOzs7OworMjVCMztXSElURSBVUC1QT0lOVElORyBUUklBTkdMRTtTbzswO09OOzs7OztOO1dISVRFIFVQIFBPSU5USU5HIFRSSUFOR0xFOzs7OworMjVCNDtCTEFDSyBVUC1QT0lOVElORyBTTUFMTCBUUklBTkdMRTtTbzswO09OOzs7OztOO0JMQUNLIFVQIFBPSU5USU5HIFNNQUxMIFRSSUFOR0xFOzs7OworMjVCNTtXSElURSBVUC1QT0lOVElORyBTTUFMTCBUUklBTkdMRTtTbzswO09OOzs7OztOO1dISVRFIFVQIFBPSU5USU5HIFNNQUxMIFRSSUFOR0xFOzs7OworMjVCNjtCTEFDSyBSSUdIVC1QT0lOVElORyBUUklBTkdMRTtTbzswO09OOzs7OztOO0JMQUNLIFJJR0hUIFBPSU5USU5HIFRSSUFOR0xFOzs7OworMjVCNztXSElURSBSSUdIVC1QT0lOVElORyBUUklBTkdMRTtTbTswO09OOzs7OztOO1dISVRFIFJJR0hUIFBPSU5USU5HIFRSSUFOR0xFOzs7OworMjVCODtCTEFDSyBSSUdIVC1QT0lOVElORyBTTUFMTCBUUklBTkdMRTtTbzswO09OOzs7OztOO0JMQUNLIFJJR0hUIFBPSU5USU5HIFNNQUxMIFRSSUFOR0xFOzs7OworMjVCOTtXSElURSBSSUdIVC1QT0lOVElORyBTTUFMTCBUUklBTkdMRTtTbzswO09OOzs7OztOO1dISVRFIFJJR0hUIFBPSU5USU5HIFNNQUxMIFRSSUFOR0xFOzs7OworMjVCQTtCTEFDSyBSSUdIVC1QT0lOVElORyBQT0lOVEVSO1NvOzA7T047Ozs7O047QkxBQ0sgUklHSFQgUE9JTlRJTkcgUE9JTlRFUjs7OzsKKzI1QkI7V0hJVEUgUklHSFQtUE9JTlRJTkcgUE9JTlRFUjtTbzswO09OOzs7OztOO1dISVRFIFJJR0hUIFBPSU5USU5HIFBPSU5URVI7Ozs7CisyNUJDO0JMQUNLIERPV04tUE9JTlRJTkcgVFJJQU5HTEU7U287MDtPTjs7Ozs7TjtCTEFDSyBET1dOIFBPSU5USU5HIFRSSUFOR0xFOzs7OworMjVCRDtXSElURSBET1dOLVBPSU5USU5HIFRSSUFOR0xFO1NvOzA7T047Ozs7O047V0hJVEUgRE9XTiBQT0lOVElORyBUUklBTkdMRTs7OzsKKzI1QkU7QkxBQ0sgRE9XTi1QT0lOVElORyBTTUFMTCBUUklBTkdMRTtTbzswO09OOzs7OztOO0JMQUNLIERPV04gUE9JTlRJTkcgU01BTEwgVFJJQU5HTEU7Ozs7CisyNUJGO1dISVRFIERPV04tUE9JTlRJTkcgU01BTEwgVFJJQU5HTEU7U287MDtPTjs7Ozs7TjtXSElURSBET1dOIFBPSU5USU5HIFNNQUxMIFRSSUFOR0xFOzs7OworMjVDMDtCTEFDSyBMRUZULVBPSU5USU5HIFRSSUFOR0xFO1NvOzA7T047Ozs7O047QkxBQ0sgTEVGVCBQT0lOVElORyBUUklBTkdMRTs7OzsKKzI1QzE7V0hJVEUgTEVGVC1QT0lOVElORyBUUklBTkdMRTtTbTswO09OOzs7OztOO1dISVRFIExFRlQgUE9JTlRJTkcgVFJJQU5HTEU7Ozs7CisyNUMyO0JMQUNLIExFRlQtUE9JTlRJTkcgU01BTEwgVFJJQU5HTEU7U287MDtPTjs7Ozs7TjtCTEFDSyBMRUZUIFBPSU5USU5HIFNNQUxMIFRSSUFOR0xFOzs7OworMjVDMztXSElURSBMRUZULVBPSU5USU5HIFNNQUxMIFRSSUFOR0xFO1NvOzA7T047Ozs7O047V0hJVEUgTEVGVCBQT0lOVElORyBTTUFMTCBUUklBTkdMRTs7OzsKKzI1QzQ7QkxBQ0sgTEVGVC1QT0lOVElORyBQT0lOVEVSO1NvOzA7T047Ozs7O047QkxBQ0sgTEVGVCBQT0lOVElORyBQT0lOVEVSOzs7OworMjVDNTtXSElURSBMRUZULVBPSU5USU5HIFBPSU5URVI7U287MDtPTjs7Ozs7TjtXSElURSBMRUZUIFBPSU5USU5HIFBPSU5URVI7Ozs7CisyNUM2O0JMQUNLIERJQU1PTkQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUM3O1dISVRFIERJQU1PTkQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUM4O1dISVRFIERJQU1PTkQgQ09OVEFJTklORyBCTEFDSyBTTUFMTCBESUFNT05EO1NvOzA7T047Ozs7O047Ozs7OworMjVDOTtGSVNIRVlFO1NvOzA7T047Ozs7O047Ozs7OworMjVDQTtMT1pFTkdFO1NvOzA7T047Ozs7O047Ozs7OworMjVDQjtXSElURSBDSVJDTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUNDO0RPVFRFRCBDSVJDTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUNEO0NJUkNMRSBXSVRIIFZFUlRJQ0FMIEZJTEw7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUNFO0JVTExTRVlFO1NvOzA7T047Ozs7O047Ozs7OworMjVDRjtCTEFDSyBDSVJDTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUQwO0NJUkNMRSBXSVRIIExFRlQgSEFMRiBCTEFDSztTbzswO09OOzs7OztOOzs7OzsKKzI1RDE7Q0lSQ0xFIFdJVEggUklHSFQgSEFMRiBCTEFDSztTbzswO09OOzs7OztOOzs7OzsKKzI1RDI7Q0lSQ0xFIFdJVEggTE9XRVIgSEFMRiBCTEFDSztTbzswO09OOzs7OztOOzs7OzsKKzI1RDM7Q0lSQ0xFIFdJVEggVVBQRVIgSEFMRiBCTEFDSztTbzswO09OOzs7OztOOzs7OzsKKzI1RDQ7Q0lSQ0xFIFdJVEggVVBQRVIgUklHSFQgUVVBRFJBTlQgQkxBQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUQ1O0NJUkNMRSBXSVRIIEFMTCBCVVQgVVBQRVIgTEVGVCBRVUFEUkFOVCBCTEFDSztTbzswO09OOzs7OztOOzs7OzsKKzI1RDY7TEVGVCBIQUxGIEJMQUNLIENJUkNMRTtTbzswO09OOzs7OztOOzs7OzsKKzI1RDc7UklHSFQgSEFMRiBCTEFDSyBDSVJDTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUQ4O0lOVkVSU0UgQlVMTEVUO1NvOzA7T047Ozs7O047Ozs7OworMjVEOTtJTlZFUlNFIFdISVRFIENJUkNMRTtTbzswO09OOzs7OztOOzs7OzsKKzI1REE7VVBQRVIgSEFMRiBJTlZFUlNFIFdISVRFIENJUkNMRTtTbzswO09OOzs7OztOOzs7OzsKKzI1REI7TE9XRVIgSEFMRiBJTlZFUlNFIFdISVRFIENJUkNMRTtTbzswO09OOzs7OztOOzs7OzsKKzI1REM7VVBQRVIgTEVGVCBRVUFEUkFOVCBDSVJDVUxBUiBBUkM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUREO1VQUEVSIFJJR0hUIFFVQURSQU5UIENJUkNVTEFSIEFSQztTbzswO09OOzs7OztOOzs7OzsKKzI1REU7TE9XRVIgUklHSFQgUVVBRFJBTlQgQ0lSQ1VMQVIgQVJDO1NvOzA7T047Ozs7O047Ozs7OworMjVERjtMT1dFUiBMRUZUIFFVQURSQU5UIENJUkNVTEFSIEFSQztTbzswO09OOzs7OztOOzs7OzsKKzI1RTA7VVBQRVIgSEFMRiBDSVJDTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUUxO0xPV0VSIEhBTEYgQ0lSQ0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVFMjtCTEFDSyBMT1dFUiBSSUdIVCBUUklBTkdMRTtTbzswO09OOzs7OztOOzs7OzsKKzI1RTM7QkxBQ0sgTE9XRVIgTEVGVCBUUklBTkdMRTtTbzswO09OOzs7OztOOzs7OzsKKzI1RTQ7QkxBQ0sgVVBQRVIgTEVGVCBUUklBTkdMRTtTbzswO09OOzs7OztOOzs7OzsKKzI1RTU7QkxBQ0sgVVBQRVIgUklHSFQgVFJJQU5HTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUU2O1dISVRFIEJVTExFVDtTbzswO09OOzs7OztOOzs7OzsKKzI1RTc7U1FVQVJFIFdJVEggTEVGVCBIQUxGIEJMQUNLO1NvOzA7T047Ozs7O047Ozs7OworMjVFODtTUVVBUkUgV0lUSCBSSUdIVCBIQUxGIEJMQUNLO1NvOzA7T047Ozs7O047Ozs7OworMjVFOTtTUVVBUkUgV0lUSCBVUFBFUiBMRUZUIERJQUdPTkFMIEhBTEYgQkxBQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUVBO1NRVUFSRSBXSVRIIExPV0VSIFJJR0hUIERJQUdPTkFMIEhBTEYgQkxBQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUVCO1dISVRFIFNRVUFSRSBXSVRIIFZFUlRJQ0FMIEJJU0VDVElORyBMSU5FO1NvOzA7T047Ozs7O047Ozs7OworMjVFQztXSElURSBVUC1QT0lOVElORyBUUklBTkdMRSBXSVRIIERPVDtTbzswO09OOzs7OztOO1dISVRFIFVQIFBPSU5USU5HIFRSSUFOR0xFIFdJVEggRE9UOzs7OworMjVFRDtVUC1QT0lOVElORyBUUklBTkdMRSBXSVRIIExFRlQgSEFMRiBCTEFDSztTbzswO09OOzs7OztOO1VQIFBPSU5USU5HIFRSSUFOR0xFIFdJVEggTEVGVCBIQUxGIEJMQUNLOzs7OworMjVFRTtVUC1QT0lOVElORyBUUklBTkdMRSBXSVRIIFJJR0hUIEhBTEYgQkxBQ0s7U287MDtPTjs7Ozs7TjtVUCBQT0lOVElORyBUUklBTkdMRSBXSVRIIFJJR0hUIEhBTEYgQkxBQ0s7Ozs7CisyNUVGO0xBUkdFIENJUkNMRTtTbzswO09OOzs7OztOOzs7OzsKKzI1RjA7V0hJVEUgU1FVQVJFIFdJVEggVVBQRVIgTEVGVCBRVUFEUkFOVDtTbzswO09OOzs7OztOOzs7OzsKKzI1RjE7V0hJVEUgU1FVQVJFIFdJVEggTE9XRVIgTEVGVCBRVUFEUkFOVDtTbzswO09OOzs7OztOOzs7OzsKKzI1RjI7V0hJVEUgU1FVQVJFIFdJVEggTE9XRVIgUklHSFQgUVVBRFJBTlQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUYzO1dISVRFIFNRVUFSRSBXSVRIIFVQUEVSIFJJR0hUIFFVQURSQU5UO1NvOzA7T047Ozs7O047Ozs7OworMjVGNDtXSElURSBDSVJDTEUgV0lUSCBVUFBFUiBMRUZUIFFVQURSQU5UO1NvOzA7T047Ozs7O047Ozs7OworMjVGNTtXSElURSBDSVJDTEUgV0lUSCBMT1dFUiBMRUZUIFFVQURSQU5UO1NvOzA7T047Ozs7O047Ozs7OworMjVGNjtXSElURSBDSVJDTEUgV0lUSCBMT1dFUiBSSUdIVCBRVUFEUkFOVDtTbzswO09OOzs7OztOOzs7OzsKKzI1Rjc7V0hJVEUgQ0lSQ0xFIFdJVEggVVBQRVIgUklHSFQgUVVBRFJBTlQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUY4O1VQUEVSIExFRlQgVFJJQU5HTEU7U207MDtPTjs7Ozs7Tjs7Ozs7CisyNUY5O1VQUEVSIFJJR0hUIFRSSUFOR0xFO1NtOzA7T047Ozs7O047Ozs7OworMjVGQTtMT1dFUiBMRUZUIFRSSUFOR0xFO1NtOzA7T047Ozs7O047Ozs7OworMjVGQjtXSElURSBNRURJVU0gU1FVQVJFO1NtOzA7T047Ozs7O047Ozs7OworMjVGQztCTEFDSyBNRURJVU0gU1FVQVJFO1NtOzA7T047Ozs7O047Ozs7OworMjVGRDtXSElURSBNRURJVU0gU01BTEwgU1FVQVJFO1NtOzA7T047Ozs7O047Ozs7OworMjVGRTtCTEFDSyBNRURJVU0gU01BTEwgU1FVQVJFO1NtOzA7T047Ozs7O047Ozs7OworMjVGRjtMT1dFUiBSSUdIVCBUUklBTkdMRTtTbTswO09OOzs7OztOOzs7OzsKKzI2MDA7QkxBQ0sgU1VOIFdJVEggUkFZUztTbzswO09OOzs7OztOOzs7OzsKKzI2MDE7Q0xPVUQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjAyO1VNQlJFTExBO1NvOzA7T047Ozs7O047Ozs7OworMjYwMztTTk9XTUFOO1NvOzA7T047Ozs7O047Ozs7OworMjYwNDtDT01FVDtTbzswO09OOzs7OztOOzs7OzsKKzI2MDU7QkxBQ0sgU1RBUjtTbzswO09OOzs7OztOOzs7OzsKKzI2MDY7V0hJVEUgU1RBUjtTbzswO09OOzs7OztOOzs7OzsKKzI2MDc7TElHSFROSU5HO1NvOzA7T047Ozs7O047Ozs7OworMjYwODtUSFVOREVSU1RPUk07U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjA5O1NVTjtTbzswO09OOzs7OztOOzs7OzsKKzI2MEE7QVNDRU5ESU5HIE5PREU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjBCO0RFU0NFTkRJTkcgTk9ERTtTbzswO09OOzs7OztOOzs7OzsKKzI2MEM7Q09OSlVOQ1RJT047U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjBEO09QUE9TSVRJT047U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjBFO0JMQUNLIFRFTEVQSE9ORTtTbzswO09OOzs7OztOOzs7OzsKKzI2MEY7V0hJVEUgVEVMRVBIT05FO1NvOzA7T047Ozs7O047Ozs7OworMjYxMDtCQUxMT1QgQk9YO1NvOzA7T047Ozs7O047Ozs7OworMjYxMTtCQUxMT1QgQk9YIFdJVEggQ0hFQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjEyO0JBTExPVCBCT1ggV0lUSCBYO1NvOzA7T047Ozs7O047Ozs7OworMjYxMztTQUxUSVJFO1NvOzA7T047Ozs7O047Ozs7OworMjYxNjtXSElURSBTSE9HSSBQSUVDRTtTbzswO09OOzs7OztOOzs7OzsKKzI2MTc7QkxBQ0sgU0hPR0kgUElFQ0U7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjE5O1JFVkVSU0VEIFJPVEFURUQgRkxPUkFMIEhFQVJUIEJVTExFVDtTbzswO09OOzs7OztOOzs7OzsKKzI2MUE7QkxBQ0sgTEVGVCBQT0lOVElORyBJTkRFWDtTbzswO09OOzs7OztOOzs7OzsKKzI2MUI7QkxBQ0sgUklHSFQgUE9JTlRJTkcgSU5ERVg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjFDO1dISVRFIExFRlQgUE9JTlRJTkcgSU5ERVg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjFEO1dISVRFIFVQIFBPSU5USU5HIElOREVYO1NvOzA7T047Ozs7O047Ozs7OworMjYxRTtXSElURSBSSUdIVCBQT0lOVElORyBJTkRFWDtTbzswO09OOzs7OztOOzs7OzsKKzI2MUY7V0hJVEUgRE9XTiBQT0lOVElORyBJTkRFWDtTbzswO09OOzs7OztOOzs7OzsKKzI2MjA7U0tVTEwgQU5EIENST1NTQk9ORVM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjIxO0NBVVRJT04gU0lHTjtTbzswO09OOzs7OztOOzs7OzsKKzI2MjI7UkFESU9BQ1RJVkUgU0lHTjtTbzswO09OOzs7OztOOzs7OzsKKzI2MjM7QklPSEFaQVJEIFNJR047U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjI0O0NBRFVDRVVTO1NvOzA7T047Ozs7O047Ozs7OworMjYyNTtBTktIO1NvOzA7T047Ozs7O047Ozs7OworMjYyNjtPUlRIT0RPWCBDUk9TUztTbzswO09OOzs7OztOOzs7OzsKKzI2Mjc7Q0hJIFJITztTbzswO09OOzs7OztOOzs7OzsKKzI2Mjg7Q1JPU1MgT0YgTE9SUkFJTkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjI5O0NST1NTIE9GIEpFUlVTQUxFTTtTbzswO09OOzs7OztOOzs7OzsKKzI2MkE7U1RBUiBBTkQgQ1JFU0NFTlQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjJCO0ZBUlNJIFNZTUJPTDtTbzswO09OOzs7OztOO1NZTUJPTCBPRiBJUkFOOzs7OworMjYyQztBREkgU0hBS1RJO1NvOzA7T047Ozs7O047Ozs7OworMjYyRDtIQU1NRVIgQU5EIFNJQ0tMRTtTbzswO09OOzs7OztOOzs7OzsKKzI2MkU7UEVBQ0UgU1lNQk9MO1NvOzA7T047Ozs7O047Ozs7OworMjYyRjtZSU4gWUFORztTbzswO09OOzs7OztOOzs7OzsKKzI2MzA7VFJJR1JBTSBGT1IgSEVBVkVOO1NvOzA7T047Ozs7O047Ozs7OworMjYzMTtUUklHUkFNIEZPUiBMQUtFO1NvOzA7T047Ozs7O047Ozs7OworMjYzMjtUUklHUkFNIEZPUiBGSVJFO1NvOzA7T047Ozs7O047Ozs7OworMjYzMztUUklHUkFNIEZPUiBUSFVOREVSO1NvOzA7T047Ozs7O047Ozs7OworMjYzNDtUUklHUkFNIEZPUiBXSU5EO1NvOzA7T047Ozs7O047Ozs7OworMjYzNTtUUklHUkFNIEZPUiBXQVRFUjtTbzswO09OOzs7OztOOzs7OzsKKzI2MzY7VFJJR1JBTSBGT1IgTU9VTlRBSU47U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjM3O1RSSUdSQU0gRk9SIEVBUlRIO1NvOzA7T047Ozs7O047Ozs7OworMjYzODtXSEVFTCBPRiBESEFSTUE7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjM5O1dISVRFIEZST1dOSU5HIEZBQ0U7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjNBO1dISVRFIFNNSUxJTkcgRkFDRTtTbzswO09OOzs7OztOOzs7OzsKKzI2M0I7QkxBQ0sgU01JTElORyBGQUNFO1NvOzA7T047Ozs7O047Ozs7OworMjYzQztXSElURSBTVU4gV0lUSCBSQVlTO1NvOzA7T047Ozs7O047Ozs7OworMjYzRDtGSVJTVCBRVUFSVEVSIE1PT047U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjNFO0xBU1QgUVVBUlRFUiBNT09OO1NvOzA7T047Ozs7O047Ozs7OworMjYzRjtNRVJDVVJZO1NvOzA7T047Ozs7O047Ozs7OworMjY0MDtGRU1BTEUgU0lHTjtTbzswO09OOzs7OztOOzs7OzsKKzI2NDE7RUFSVEg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjQyO01BTEUgU0lHTjtTbzswO09OOzs7OztOOzs7OzsKKzI2NDM7SlVQSVRFUjtTbzswO09OOzs7OztOOzs7OzsKKzI2NDQ7U0FUVVJOO1NvOzA7T047Ozs7O047Ozs7OworMjY0NTtVUkFOVVM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjQ2O05FUFRVTkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjQ3O1BMVVRPO1NvOzA7T047Ozs7O047Ozs7OworMjY0ODtBUklFUztTbzswO09OOzs7OztOOzs7OzsKKzI2NDk7VEFVUlVTO1NvOzA7T047Ozs7O047Ozs7OworMjY0QTtHRU1JTkk7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjRCO0NBTkNFUjtTbzswO09OOzs7OztOOzs7OzsKKzI2NEM7TEVPO1NvOzA7T047Ozs7O047Ozs7OworMjY0RDtWSVJHTztTbzswO09OOzs7OztOOzs7OzsKKzI2NEU7TElCUkE7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjRGO1NDT1JQSVVTO1NvOzA7T047Ozs7O047Ozs7OworMjY1MDtTQUdJVFRBUklVUztTbzswO09OOzs7OztOOzs7OzsKKzI2NTE7Q0FQUklDT1JOO1NvOzA7T047Ozs7O047Ozs7OworMjY1MjtBUVVBUklVUztTbzswO09OOzs7OztOOzs7OzsKKzI2NTM7UElTQ0VTO1NvOzA7T047Ozs7O047Ozs7OworMjY1NDtXSElURSBDSEVTUyBLSU5HO1NvOzA7T047Ozs7O047Ozs7OworMjY1NTtXSElURSBDSEVTUyBRVUVFTjtTbzswO09OOzs7OztOOzs7OzsKKzI2NTY7V0hJVEUgQ0hFU1MgUk9PSztTbzswO09OOzs7OztOOzs7OzsKKzI2NTc7V0hJVEUgQ0hFU1MgQklTSE9QO1NvOzA7T047Ozs7O047Ozs7OworMjY1ODtXSElURSBDSEVTUyBLTklHSFQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjU5O1dISVRFIENIRVNTIFBBV047U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjVBO0JMQUNLIENIRVNTIEtJTkc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjVCO0JMQUNLIENIRVNTIFFVRUVOO1NvOzA7T047Ozs7O047Ozs7OworMjY1QztCTEFDSyBDSEVTUyBST09LO1NvOzA7T047Ozs7O047Ozs7OworMjY1RDtCTEFDSyBDSEVTUyBCSVNIT1A7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjVFO0JMQUNLIENIRVNTIEtOSUdIVDtTbzswO09OOzs7OztOOzs7OzsKKzI2NUY7QkxBQ0sgQ0hFU1MgUEFXTjtTbzswO09OOzs7OztOOzs7OzsKKzI2NjA7QkxBQ0sgU1BBREUgU1VJVDtTbzswO09OOzs7OztOOzs7OzsKKzI2NjE7V0hJVEUgSEVBUlQgU1VJVDtTbzswO09OOzs7OztOOzs7OzsKKzI2NjI7V0hJVEUgRElBTU9ORCBTVUlUO1NvOzA7T047Ozs7O047Ozs7OworMjY2MztCTEFDSyBDTFVCIFNVSVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjY0O1dISVRFIFNQQURFIFNVSVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjY1O0JMQUNLIEhFQVJUIFNVSVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjY2O0JMQUNLIERJQU1PTkQgU1VJVDtTbzswO09OOzs7OztOOzs7OzsKKzI2Njc7V0hJVEUgQ0xVQiBTVUlUO1NvOzA7T047Ozs7O047Ozs7OworMjY2ODtIT1QgU1BSSU5HUztTbzswO09OOzs7OztOOzs7OzsKKzI2Njk7UVVBUlRFUiBOT1RFO1NvOzA7T047Ozs7O047Ozs7OworMjY2QTtFSUdIVEggTk9URTtTbzswO09OOzs7OztOOzs7OzsKKzI2NkI7QkVBTUVEIEVJR0hUSCBOT1RFUztTbzswO09OOzs7OztOO0JBUlJFRCBFSUdIVEggTk9URVM7Ozs7CisyNjZDO0JFQU1FRCBTSVhURUVOVEggTk9URVM7U287MDtPTjs7Ozs7TjtCQVJSRUQgU0lYVEVFTlRIIE5PVEVTOzs7OworMjY2RDtNVVNJQyBGTEFUIFNJR047U287MDtPTjs7Ozs7TjtGTEFUOzs7OworMjY2RTtNVVNJQyBOQVRVUkFMIFNJR047U287MDtPTjs7Ozs7TjtOQVRVUkFMOzs7OworMjY2RjtNVVNJQyBTSEFSUCBTSUdOO1NtOzA7T047Ozs7O047U0hBUlA7Ozs7CisyNjcwO1dFU1QgU1lSSUFDIENST1NTO1NvOzA7T047Ozs7O047Ozs7OworMjY3MTtFQVNUIFNZUklBQyBDUk9TUztTbzswO09OOzs7OztOOzs7OzsKKzI2NzI7VU5JVkVSU0FMIFJFQ1lDTElORyBTWU1CT0w7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjczO1JFQ1lDTElORyBTWU1CT0wgRk9SIFRZUEUtMSBQTEFTVElDUztTbzswO09OOzs7OztOOztwZXRlOzs7CisyNjc0O1JFQ1lDTElORyBTWU1CT0wgRk9SIFRZUEUtMiBQTEFTVElDUztTbzswO09OOzs7OztOOztoZHBlOzs7CisyNjc1O1JFQ1lDTElORyBTWU1CT0wgRk9SIFRZUEUtMyBQTEFTVElDUztTbzswO09OOzs7OztOOztwdmM7OzsKKzI2NzY7UkVDWUNMSU5HIFNZTUJPTCBGT1IgVFlQRS00IFBMQVNUSUNTO1NvOzA7T047Ozs7O047O2xkcGU7OzsKKzI2Nzc7UkVDWUNMSU5HIFNZTUJPTCBGT1IgVFlQRS01IFBMQVNUSUNTO1NvOzA7T047Ozs7O047O3BwOzs7CisyNjc4O1JFQ1lDTElORyBTWU1CT0wgRk9SIFRZUEUtNiBQTEFTVElDUztTbzswO09OOzs7OztOOztwczs7OworMjY3OTtSRUNZQ0xJTkcgU1lNQk9MIEZPUiBUWVBFLTcgUExBU1RJQ1M7U287MDtPTjs7Ozs7Tjs7b3RoZXI7OzsKKzI2N0E7UkVDWUNMSU5HIFNZTUJPTCBGT1IgR0VORVJJQyBNQVRFUklBTFM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjdCO0JMQUNLIFVOSVZFUlNBTCBSRUNZQ0xJTkcgU1lNQk9MO1NvOzA7T047Ozs7O047Ozs7OworMjY3QztSRUNZQ0xFRCBQQVBFUiBTWU1CT0w7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjdEO1BBUlRJQUxMWS1SRUNZQ0xFRCBQQVBFUiBTWU1CT0w7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjgwO0RJRSBGQUNFLTE7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjgxO0RJRSBGQUNFLTI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjgyO0RJRSBGQUNFLTM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjgzO0RJRSBGQUNFLTQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjg0O0RJRSBGQUNFLTU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjg1O0RJRSBGQUNFLTY7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjg2O1dISVRFIENJUkNMRSBXSVRIIERPVCBSSUdIVDtTbzswO09OOzs7OztOOzs7OzsKKzI2ODc7V0hJVEUgQ0lSQ0xFIFdJVEggVFdPIERPVFM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjg4O0JMQUNLIENJUkNMRSBXSVRIIFdISVRFIERPVCBSSUdIVDtTbzswO09OOzs7OztOOzs7OzsKKzI2ODk7QkxBQ0sgQ0lSQ0xFIFdJVEggVFdPIFdISVRFIERPVFM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzAxO1VQUEVSIEJMQURFIFNDSVNTT1JTO1NvOzA7T047Ozs7O047Ozs7OworMjcwMjtCTEFDSyBTQ0lTU09SUztTbzswO09OOzs7OztOOzs7OzsKKzI3MDM7TE9XRVIgQkxBREUgU0NJU1NPUlM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzA0O1dISVRFIFNDSVNTT1JTO1NvOzA7T047Ozs7O047Ozs7OworMjcwNjtURUxFUEhPTkUgTE9DQVRJT04gU0lHTjtTbzswO09OOzs7OztOOzs7OzsKKzI3MDc7VEFQRSBEUklWRTtTbzswO09OOzs7OztOOzs7OzsKKzI3MDg7QUlSUExBTkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzA5O0VOVkVMT1BFO1NvOzA7T047Ozs7O047Ozs7OworMjcwQztWSUNUT1JZIEhBTkQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzBEO1dSSVRJTkcgSEFORDtTbzswO09OOzs7OztOOzs7OzsKKzI3MEU7TE9XRVIgUklHSFQgUEVOQ0lMO1NvOzA7T047Ozs7O047Ozs7OworMjcwRjtQRU5DSUw7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzEwO1VQUEVSIFJJR0hUIFBFTkNJTDtTbzswO09OOzs7OztOOzs7OzsKKzI3MTE7V0hJVEUgTklCO1NvOzA7T047Ozs7O047Ozs7OworMjcxMjtCTEFDSyBOSUI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzEzO0NIRUNLIE1BUks7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzE0O0hFQVZZIENIRUNLIE1BUks7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzE1O01VTFRJUExJQ0FUSU9OIFg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzE2O0hFQVZZIE1VTFRJUExJQ0FUSU9OIFg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzE3O0JBTExPVCBYO1NvOzA7T047Ozs7O047Ozs7OworMjcxODtIRUFWWSBCQUxMT1QgWDtTbzswO09OOzs7OztOOzs7OzsKKzI3MTk7T1VUTElORUQgR1JFRUsgQ1JPU1M7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzFBO0hFQVZZIEdSRUVLIENST1NTO1NvOzA7T047Ozs7O047Ozs7OworMjcxQjtPUEVOIENFTlRSRSBDUk9TUztTbzswO09OOzs7OztOO09QRU4gQ0VOVEVSIENST1NTOzs7OworMjcxQztIRUFWWSBPUEVOIENFTlRSRSBDUk9TUztTbzswO09OOzs7OztOO0hFQVZZIE9QRU4gQ0VOVEVSIENST1NTOzs7OworMjcxRDtMQVRJTiBDUk9TUztTbzswO09OOzs7OztOOzs7OzsKKzI3MUU7U0hBRE9XRUQgV0hJVEUgTEFUSU4gQ1JPU1M7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzFGO09VVExJTkVEIExBVElOIENST1NTO1NvOzA7T047Ozs7O047Ozs7OworMjcyMDtNQUxURVNFIENST1NTO1NvOzA7T047Ozs7O047Ozs7OworMjcyMTtTVEFSIE9GIERBVklEO1NvOzA7T047Ozs7O047Ozs7OworMjcyMjtGT1VSIFRFQVJEUk9QLVNQT0tFRCBBU1RFUklTSztTbzswO09OOzs7OztOOzs7OzsKKzI3MjM7Rk9VUiBCQUxMT09OLVNQT0tFRCBBU1RFUklTSztTbzswO09OOzs7OztOOzs7OzsKKzI3MjQ7SEVBVlkgRk9VUiBCQUxMT09OLVNQT0tFRCBBU1RFUklTSztTbzswO09OOzs7OztOOzs7OzsKKzI3MjU7Rk9VUiBDTFVCLVNQT0tFRCBBU1RFUklTSztTbzswO09OOzs7OztOOzs7OzsKKzI3MjY7QkxBQ0sgRk9VUiBQT0lOVEVEIFNUQVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzI3O1dISVRFIEZPVVIgUE9JTlRFRCBTVEFSO1NvOzA7T047Ozs7O047Ozs7OworMjcyOTtTVFJFU1MgT1VUTElORUQgV0hJVEUgU1RBUjtTbzswO09OOzs7OztOOzs7OzsKKzI3MkE7Q0lSQ0xFRCBXSElURSBTVEFSO1NvOzA7T047Ozs7O047Ozs7OworMjcyQjtPUEVOIENFTlRSRSBCTEFDSyBTVEFSO1NvOzA7T047Ozs7O047T1BFTiBDRU5URVIgQkxBQ0sgU1RBUjs7OzsKKzI3MkM7QkxBQ0sgQ0VOVFJFIFdISVRFIFNUQVI7U287MDtPTjs7Ozs7TjtCTEFDSyBDRU5URVIgV0hJVEUgU1RBUjs7OzsKKzI3MkQ7T1VUTElORUQgQkxBQ0sgU1RBUjtTbzswO09OOzs7OztOOzs7OzsKKzI3MkU7SEVBVlkgT1VUTElORUQgQkxBQ0sgU1RBUjtTbzswO09OOzs7OztOOzs7OzsKKzI3MkY7UElOV0hFRUwgU1RBUjtTbzswO09OOzs7OztOOzs7OzsKKzI3MzA7U0hBRE9XRUQgV0hJVEUgU1RBUjtTbzswO09OOzs7OztOOzs7OzsKKzI3MzE7SEVBVlkgQVNURVJJU0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzMyO09QRU4gQ0VOVFJFIEFTVEVSSVNLO1NvOzA7T047Ozs7O047T1BFTiBDRU5URVIgQVNURVJJU0s7Ozs7CisyNzMzO0VJR0hUIFNQT0tFRCBBU1RFUklTSztTbzswO09OOzs7OztOOzs7OzsKKzI3MzQ7RUlHSFQgUE9JTlRFRCBCTEFDSyBTVEFSO1NvOzA7T047Ozs7O047Ozs7OworMjczNTtFSUdIVCBQT0lOVEVEIFBJTldIRUVMIFNUQVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzM2O1NJWCBQT0lOVEVEIEJMQUNLIFNUQVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzM3O0VJR0hUIFBPSU5URUQgUkVDVElMSU5FQVIgQkxBQ0sgU1RBUjtTbzswO09OOzs7OztOOzs7OzsKKzI3Mzg7SEVBVlkgRUlHSFQgUE9JTlRFRCBSRUNUSUxJTkVBUiBCTEFDSyBTVEFSO1NvOzA7T047Ozs7O047Ozs7OworMjczOTtUV0VMVkUgUE9JTlRFRCBCTEFDSyBTVEFSO1NvOzA7T047Ozs7O047Ozs7OworMjczQTtTSVhURUVOIFBPSU5URUQgQVNURVJJU0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzNCO1RFQVJEUk9QLVNQT0tFRCBBU1RFUklTSztTbzswO09OOzs7OztOOzs7OzsKKzI3M0M7T1BFTiBDRU5UUkUgVEVBUkRST1AtU1BPS0VEIEFTVEVSSVNLO1NvOzA7T047Ozs7O047T1BFTiBDRU5URVIgVEVBUkRST1AtU1BPS0VEIEFTVEVSSVNLOzs7OworMjczRDtIRUFWWSBURUFSRFJPUC1TUE9LRUQgQVNURVJJU0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzNFO1NJWCBQRVRBTExFRCBCTEFDSyBBTkQgV0hJVEUgRkxPUkVUVEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzNGO0JMQUNLIEZMT1JFVFRFO1NvOzA7T047Ozs7O047Ozs7OworMjc0MDtXSElURSBGTE9SRVRURTtTbzswO09OOzs7OztOOzs7OzsKKzI3NDE7RUlHSFQgUEVUQUxMRUQgT1VUTElORUQgQkxBQ0sgRkxPUkVUVEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzQyO0NJUkNMRUQgT1BFTiBDRU5UUkUgRUlHSFQgUE9JTlRFRCBTVEFSO1NvOzA7T047Ozs7O047Q0lSQ0xFRCBPUEVOIENFTlRFUiBFSUdIVCBQT0lOVEVEIFNUQVI7Ozs7CisyNzQzO0hFQVZZIFRFQVJEUk9QLVNQT0tFRCBQSU5XSEVFTCBBU1RFUklTSztTbzswO09OOzs7OztOOzs7OzsKKzI3NDQ7U05PV0ZMQUtFO1NvOzA7T047Ozs7O047Ozs7OworMjc0NTtUSUdIVCBUUklGT0xJQVRFIFNOT1dGTEFLRTtTbzswO09OOzs7OztOOzs7OzsKKzI3NDY7SEVBVlkgQ0hFVlJPTiBTTk9XRkxBS0U7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzQ3O1NQQVJLTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzQ4O0hFQVZZIFNQQVJLTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzQ5O0JBTExPT04tU1BPS0VEIEFTVEVSSVNLO1NvOzA7T047Ozs7O047Ozs7OworMjc0QTtFSUdIVCBURUFSRFJPUC1TUE9LRUQgUFJPUEVMTEVSIEFTVEVSSVNLO1NvOzA7T047Ozs7O047Ozs7OworMjc0QjtIRUFWWSBFSUdIVCBURUFSRFJPUC1TUE9LRUQgUFJPUEVMTEVSIEFTVEVSSVNLO1NvOzA7T047Ozs7O047Ozs7OworMjc0RDtTSEFET1dFRCBXSElURSBDSVJDTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzRGO0xPV0VSIFJJR0hUIERST1AtU0hBRE9XRUQgV0hJVEUgU1FVQVJFO1NvOzA7T047Ozs7O047Ozs7OworMjc1MDtVUFBFUiBSSUdIVCBEUk9QLVNIQURPV0VEIFdISVRFIFNRVUFSRTtTbzswO09OOzs7OztOOzs7OzsKKzI3NTE7TE9XRVIgUklHSFQgU0hBRE9XRUQgV0hJVEUgU1FVQVJFO1NvOzA7T047Ozs7O047Ozs7OworMjc1MjtVUFBFUiBSSUdIVCBTSEFET1dFRCBXSElURSBTUVVBUkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzU2O0JMQUNLIERJQU1PTkQgTUlOVVMgV0hJVEUgWDtTbzswO09OOzs7OztOOzs7OzsKKzI3NTg7TElHSFQgVkVSVElDQUwgQkFSO1NvOzA7T047Ozs7O047Ozs7OworMjc1OTtNRURJVU0gVkVSVElDQUwgQkFSO1NvOzA7T047Ozs7O047Ozs7OworMjc1QTtIRUFWWSBWRVJUSUNBTCBCQVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzVCO0hFQVZZIFNJTkdMRSBUVVJORUQgQ09NTUEgUVVPVEFUSU9OIE1BUksgT1JOQU1FTlQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzVDO0hFQVZZIFNJTkdMRSBDT01NQSBRVU9UQVRJT04gTUFSSyBPUk5BTUVOVDtTbzswO09OOzs7OztOOzs7OzsKKzI3NUQ7SEVBVlkgRE9VQkxFIFRVUk5FRCBDT01NQSBRVU9UQVRJT04gTUFSSyBPUk5BTUVOVDtTbzswO09OOzs7OztOOzs7OzsKKzI3NUU7SEVBVlkgRE9VQkxFIENPTU1BIFFVT1RBVElPTiBNQVJLIE9STkFNRU5UO1NvOzA7T047Ozs7O047Ozs7OworMjc2MTtDVVJWRUQgU1RFTSBQQVJBR1JBUEggU0lHTiBPUk5BTUVOVDtTbzswO09OOzs7OztOOzs7OzsKKzI3NjI7SEVBVlkgRVhDTEFNQVRJT04gTUFSSyBPUk5BTUVOVDtTbzswO09OOzs7OztOOzs7OzsKKzI3NjM7SEVBVlkgSEVBUlQgRVhDTEFNQVRJT04gTUFSSyBPUk5BTUVOVDtTbzswO09OOzs7OztOOzs7OzsKKzI3NjQ7SEVBVlkgQkxBQ0sgSEVBUlQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzY1O1JPVEFURUQgSEVBVlkgQkxBQ0sgSEVBUlQgQlVMTEVUO1NvOzA7T047Ozs7O047Ozs7OworMjc2NjtGTE9SQUwgSEVBUlQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzY3O1JPVEFURUQgRkxPUkFMIEhFQVJUIEJVTExFVDtTbzswO09OOzs7OztOOzs7OzsKKzI3Njg7TUVESVVNIExFRlQgUEFSRU5USEVTSVMgT1JOQU1FTlQ7UHM7MDtPTjs7Ozs7WTs7Ozs7CisyNzY5O01FRElVTSBSSUdIVCBQQVJFTlRIRVNJUyBPUk5BTUVOVDtQZTswO09OOzs7OztZOzs7OzsKKzI3NkE7TUVESVVNIEZMQVRURU5FRCBMRUZUIFBBUkVOVEhFU0lTIE9STkFNRU5UO1BzOzA7T047Ozs7O1k7Ozs7OworMjc2QjtNRURJVU0gRkxBVFRFTkVEIFJJR0hUIFBBUkVOVEhFU0lTIE9STkFNRU5UO1BlOzA7T047Ozs7O1k7Ozs7OworMjc2QztNRURJVU0gTEVGVC1QT0lOVElORyBBTkdMRSBCUkFDS0VUIE9STkFNRU5UO1BzOzA7T047Ozs7O1k7Ozs7OworMjc2RDtNRURJVU0gUklHSFQtUE9JTlRJTkcgQU5HTEUgQlJBQ0tFVCBPUk5BTUVOVDtQZTswO09OOzs7OztZOzs7OzsKKzI3NkU7SEVBVlkgTEVGVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSyBPUk5BTUVOVDtQczswO09OOzs7OztZOzs7OzsKKzI3NkY7SEVBVlkgUklHSFQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksgT1JOQU1FTlQ7UGU7MDtPTjs7Ozs7WTs7Ozs7CisyNzcwO0hFQVZZIExFRlQtUE9JTlRJTkcgQU5HTEUgQlJBQ0tFVCBPUk5BTUVOVDtQczswO09OOzs7OztZOzs7OzsKKzI3NzE7SEVBVlkgUklHSFQtUE9JTlRJTkcgQU5HTEUgQlJBQ0tFVCBPUk5BTUVOVDtQZTswO09OOzs7OztZOzs7OzsKKzI3NzI7TElHSFQgTEVGVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUIE9STkFNRU5UO1BzOzA7T047Ozs7O1k7Ozs7OworMjc3MztMSUdIVCBSSUdIVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUIE9STkFNRU5UO1BlOzA7T047Ozs7O1k7Ozs7OworMjc3NDtNRURJVU0gTEVGVCBDVVJMWSBCUkFDS0VUIE9STkFNRU5UO1BzOzA7T047Ozs7O1k7Ozs7OworMjc3NTtNRURJVU0gUklHSFQgQ1VSTFkgQlJBQ0tFVCBPUk5BTUVOVDtQZTswO09OOzs7OztZOzs7OzsKKzI3NzY7RElOR0JBVCBORUdBVElWRSBDSVJDTEVEIERJR0lUIE9ORTtObzswO09OOzs7MTsxO047SU5WRVJTRSBDSVJDTEVEIERJR0lUIE9ORTs7OzsKKzI3Nzc7RElOR0JBVCBORUdBVElWRSBDSVJDTEVEIERJR0lUIFRXTztObzswO09OOzs7MjsyO047SU5WRVJTRSBDSVJDTEVEIERJR0lUIFRXTzs7OzsKKzI3Nzg7RElOR0JBVCBORUdBVElWRSBDSVJDTEVEIERJR0lUIFRIUkVFO05vOzA7T047OzszOzM7TjtJTlZFUlNFIENJUkNMRUQgRElHSVQgVEhSRUU7Ozs7CisyNzc5O0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBESUdJVCBGT1VSO05vOzA7T047Ozs0OzQ7TjtJTlZFUlNFIENJUkNMRUQgRElHSVQgRk9VUjs7OzsKKzI3N0E7RElOR0JBVCBORUdBVElWRSBDSVJDTEVEIERJR0lUIEZJVkU7Tm87MDtPTjs7OzU7NTtOO0lOVkVSU0UgQ0lSQ0xFRCBESUdJVCBGSVZFOzs7OworMjc3QjtESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgRElHSVQgU0lYO05vOzA7T047Ozs2OzY7TjtJTlZFUlNFIENJUkNMRUQgRElHSVQgU0lYOzs7OworMjc3QztESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgRElHSVQgU0VWRU47Tm87MDtPTjs7Ozc7NztOO0lOVkVSU0UgQ0lSQ0xFRCBESUdJVCBTRVZFTjs7OzsKKzI3N0Q7RElOR0JBVCBORUdBVElWRSBDSVJDTEVEIERJR0lUIEVJR0hUO05vOzA7T047Ozs4Ozg7TjtJTlZFUlNFIENJUkNMRUQgRElHSVQgRUlHSFQ7Ozs7CisyNzdFO0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBESUdJVCBOSU5FO05vOzA7T047Ozs5Ozk7TjtJTlZFUlNFIENJUkNMRUQgRElHSVQgTklORTs7OzsKKzI3N0Y7RElOR0JBVCBORUdBVElWRSBDSVJDTEVEIE5VTUJFUiBURU47Tm87MDtPTjs7OzsxMDtOO0lOVkVSU0UgQ0lSQ0xFRCBOVU1CRVIgVEVOOzs7OworMjc4MDtESU5HQkFUIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBPTkU7Tm87MDtPTjs7OzE7MTtOO0NJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBPTkU7Ozs7CisyNzgxO0RJTkdCQVQgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIFRXTztObzswO09OOzs7MjsyO047Q0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIFRXTzs7OzsKKzI3ODI7RElOR0JBVCBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgVEhSRUU7Tm87MDtPTjs7OzM7MztOO0NJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBUSFJFRTs7OzsKKzI3ODM7RElOR0JBVCBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgRk9VUjtObzswO09OOzs7NDs0O047Q0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIEZPVVI7Ozs7CisyNzg0O0RJTkdCQVQgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIEZJVkU7Tm87MDtPTjs7OzU7NTtOO0NJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBGSVZFOzs7OworMjc4NTtESU5HQkFUIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBTSVg7Tm87MDtPTjs7OzY7NjtOO0NJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBTSVg7Ozs7CisyNzg2O0RJTkdCQVQgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIFNFVkVOO05vOzA7T047Ozs3Ozc7TjtDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgU0VWRU47Ozs7CisyNzg3O0RJTkdCQVQgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIEVJR0hUO05vOzA7T047Ozs4Ozg7TjtDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgRUlHSFQ7Ozs7CisyNzg4O0RJTkdCQVQgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIE5JTkU7Tm87MDtPTjs7Ozk7OTtOO0NJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBOSU5FOzs7OworMjc4OTtESU5HQkFUIENJUkNMRUQgU0FOUy1TRVJJRiBOVU1CRVIgVEVOO05vOzA7T047Ozs7MTA7TjtDSVJDTEVEIFNBTlMtU0VSSUYgTlVNQkVSIFRFTjs7OzsKKzI3OEE7RElOR0JBVCBORUdBVElWRSBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgT05FO05vOzA7T047OzsxOzE7TjtJTlZFUlNFIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBPTkU7Ozs7CisyNzhCO0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIFRXTztObzswO09OOzs7MjsyO047SU5WRVJTRSBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgVFdPOzs7OworMjc4QztESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBUSFJFRTtObzswO09OOzs7MzszO047SU5WRVJTRSBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgVEhSRUU7Ozs7CisyNzhEO0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIEZPVVI7Tm87MDtPTjs7OzQ7NDtOO0lOVkVSU0UgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIEZPVVI7Ozs7CisyNzhFO0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIEZJVkU7Tm87MDtPTjs7OzU7NTtOO0lOVkVSU0UgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIEZJVkU7Ozs7CisyNzhGO0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIFNJWDtObzswO09OOzs7Njs2O047SU5WRVJTRSBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgU0lYOzs7OworMjc5MDtESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBTRVZFTjtObzswO09OOzs7Nzs3O047SU5WRVJTRSBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgU0VWRU47Ozs7CisyNzkxO0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIEVJR0hUO05vOzA7T047Ozs4Ozg7TjtJTlZFUlNFIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBFSUdIVDs7OzsKKzI3OTI7RElOR0JBVCBORUdBVElWRSBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgTklORTtObzswO09OOzs7OTs5O047SU5WRVJTRSBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgTklORTs7OzsKKzI3OTM7RElOR0JBVCBORUdBVElWRSBDSVJDTEVEIFNBTlMtU0VSSUYgTlVNQkVSIFRFTjtObzswO09OOzs7OzEwO047SU5WRVJTRSBDSVJDTEVEIFNBTlMtU0VSSUYgTlVNQkVSIFRFTjs7OzsKKzI3OTQ7SEVBVlkgV0lERS1IRUFERUQgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO0hFQVZZIFdJREUtSEVBREVEIFJJR0hUIEFSUk9XOzs7OworMjc5ODtIRUFWWSBTT1VUSCBFQVNUIEFSUk9XO1NvOzA7T047Ozs7O047SEVBVlkgTE9XRVIgUklHSFQgQVJST1c7Ozs7CisyNzk5O0hFQVZZIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtIRUFWWSBSSUdIVCBBUlJPVzs7OzsKKzI3OUE7SEVBVlkgTk9SVEggRUFTVCBBUlJPVztTbzswO09OOzs7OztOO0hFQVZZIFVQUEVSIFJJR0hUIEFSUk9XOzs7OworMjc5QjtEUkFGVElORyBQT0lOVCBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047RFJBRlRJTkcgUE9JTlQgUklHSFQgQVJST1c7Ozs7CisyNzlDO0hFQVZZIFJPVU5ELVRJUFBFRCBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047SEVBVlkgUk9VTkQtVElQUEVEIFJJR0hUIEFSUk9XOzs7OworMjc5RDtUUklBTkdMRS1IRUFERUQgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO1RSSUFOR0xFLUhFQURFRCBSSUdIVCBBUlJPVzs7OzsKKzI3OUU7SEVBVlkgVFJJQU5HTEUtSEVBREVEIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtIRUFWWSBUUklBTkdMRS1IRUFERUQgUklHSFQgQVJST1c7Ozs7CisyNzlGO0RBU0hFRCBUUklBTkdMRS1IRUFERUQgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO0RBU0hFRCBUUklBTkdMRS1IRUFERUQgUklHSFQgQVJST1c7Ozs7CisyN0EwO0hFQVZZIERBU0hFRCBUUklBTkdMRS1IRUFERUQgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO0hFQVZZIERBU0hFRCBUUklBTkdMRS1IRUFERUQgUklHSFQgQVJST1c7Ozs7CisyN0ExO0JMQUNLIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtCTEFDSyBSSUdIVCBBUlJPVzs7OzsKKzI3QTI7VEhSRUUtRCBUT1AtTElHSFRFRCBSSUdIVFdBUkRTIEFSUk9XSEVBRDtTbzswO09OOzs7OztOO1RIUkVFLUQgVE9QLUxJR0hURUQgUklHSFQgQVJST1dIRUFEOzs7OworMjdBMztUSFJFRS1EIEJPVFRPTS1MSUdIVEVEIFJJR0hUV0FSRFMgQVJST1dIRUFEO1NvOzA7T047Ozs7O047VEhSRUUtRCBCT1RUT00tTElHSFRFRCBSSUdIVCBBUlJPV0hFQUQ7Ozs7CisyN0E0O0JMQUNLIFJJR0hUV0FSRFMgQVJST1dIRUFEO1NvOzA7T047Ozs7O047QkxBQ0sgUklHSFQgQVJST1dIRUFEOzs7OworMjdBNTtIRUFWWSBCTEFDSyBDVVJWRUQgRE9XTldBUkRTIEFORCBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047SEVBVlkgQkxBQ0sgQ1VSVkVEIERPV04gQU5EIFJJR0hUIEFSUk9XOzs7OworMjdBNjtIRUFWWSBCTEFDSyBDVVJWRUQgVVBXQVJEUyBBTkQgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO0hFQVZZIEJMQUNLIENVUlZFRCBVUCBBTkQgUklHSFQgQVJST1c7Ozs7CisyN0E3O1NRVUFUIEJMQUNLIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtTUVVBVCBCTEFDSyBSSUdIVCBBUlJPVzs7OzsKKzI3QTg7SEVBVlkgQ09OQ0FWRS1QT0lOVEVEIEJMQUNLIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtIRUFWWSBDT05DQVZFLVBPSU5URUQgQkxBQ0sgUklHSFQgQVJST1c7Ozs7CisyN0E5O1JJR0hULVNIQURFRCBXSElURSBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047UklHSFQtU0hBREVEIFdISVRFIFJJR0hUIEFSUk9XOzs7OworMjdBQTtMRUZULVNIQURFRCBXSElURSBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047TEVGVC1TSEFERUQgV0hJVEUgUklHSFQgQVJST1c7Ozs7CisyN0FCO0JBQ0stVElMVEVEIFNIQURPV0VEIFdISVRFIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtCQUNLLVRJTFRFRCBTSEFET1dFRCBXSElURSBSSUdIVCBBUlJPVzs7OzsKKzI3QUM7RlJPTlQtVElMVEVEIFNIQURPV0VEIFdISVRFIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtGUk9OVC1USUxURUQgU0hBRE9XRUQgV0hJVEUgUklHSFQgQVJST1c7Ozs7CisyN0FEO0hFQVZZIExPV0VSIFJJR0hULVNIQURPV0VEIFdISVRFIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtIRUFWWSBMT1dFUiBSSUdIVC1TSEFET1dFRCBXSElURSBSSUdIVCBBUlJPVzs7OzsKKzI3QUU7SEVBVlkgVVBQRVIgUklHSFQtU0hBRE9XRUQgV0hJVEUgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO0hFQVZZIFVQUEVSIFJJR0hULVNIQURPV0VEIFdISVRFIFJJR0hUIEFSUk9XOzs7OworMjdBRjtOT1RDSEVEIExPV0VSIFJJR0hULVNIQURPV0VEIFdISVRFIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtOT1RDSEVEIExPV0VSIFJJR0hULVNIQURPV0VEIFdISVRFIFJJR0hUIEFSUk9XOzs7OworMjdCMTtOT1RDSEVEIFVQUEVSIFJJR0hULVNIQURPV0VEIFdISVRFIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtOT1RDSEVEIFVQUEVSIFJJR0hULVNIQURPV0VEIFdISVRFIFJJR0hUIEFSUk9XOzs7OworMjdCMjtDSVJDTEVEIEhFQVZZIFdISVRFIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtDSVJDTEVEIEhFQVZZIFdISVRFIFJJR0hUIEFSUk9XOzs7OworMjdCMztXSElURS1GRUFUSEVSRUQgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO1dISVRFLUZFQVRIRVJFRCBSSUdIVCBBUlJPVzs7OzsKKzI3QjQ7QkxBQ0stRkVBVEhFUkVEIFNPVVRIIEVBU1QgQVJST1c7U287MDtPTjs7Ozs7TjtCTEFDSy1GRUFUSEVSRUQgTE9XRVIgUklHSFQgQVJST1c7Ozs7CisyN0I1O0JMQUNLLUZFQVRIRVJFRCBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047QkxBQ0stRkVBVEhFUkVEIFJJR0hUIEFSUk9XOzs7OworMjdCNjtCTEFDSy1GRUFUSEVSRUQgTk9SVEggRUFTVCBBUlJPVztTbzswO09OOzs7OztOO0JMQUNLLUZFQVRIRVJFRCBVUFBFUiBSSUdIVCBBUlJPVzs7OzsKKzI3Qjc7SEVBVlkgQkxBQ0stRkVBVEhFUkVEIFNPVVRIIEVBU1QgQVJST1c7U287MDtPTjs7Ozs7TjtIRUFWWSBCTEFDSy1GRUFUSEVSRUQgTE9XRVIgUklHSFQgQVJST1c7Ozs7CisyN0I4O0hFQVZZIEJMQUNLLUZFQVRIRVJFRCBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047SEVBVlkgQkxBQ0stRkVBVEhFUkVEIFJJR0hUIEFSUk9XOzs7OworMjdCOTtIRUFWWSBCTEFDSy1GRUFUSEVSRUQgTk9SVEggRUFTVCBBUlJPVztTbzswO09OOzs7OztOO0hFQVZZIEJMQUNLLUZFQVRIRVJFRCBVUFBFUiBSSUdIVCBBUlJPVzs7OzsKKzI3QkE7VEVBUkRST1AtQkFSQkVEIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtURUFSRFJPUC1CQVJCRUQgUklHSFQgQVJST1c7Ozs7CisyN0JCO0hFQVZZIFRFQVJEUk9QLVNIQU5LRUQgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO0hFQVZZIFRFQVJEUk9QLVNIQU5LRUQgUklHSFQgQVJST1c7Ozs7CisyN0JDO1dFREdFLVRBSUxFRCBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047V0VER0UtVEFJTEVEIFJJR0hUIEFSUk9XOzs7OworMjdCRDtIRUFWWSBXRURHRS1UQUlMRUQgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO0hFQVZZIFdFREdFLVRBSUxFRCBSSUdIVCBBUlJPVzs7OzsKKzI3QkU7T1BFTi1PVVRMSU5FRCBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047T1BFTi1PVVRMSU5FRCBSSUdIVCBBUlJPVzs7OzsKKzI3RDA7V0hJVEUgRElBTU9ORCBXSVRIIENFTlRSRUQgRE9UO1NtOzA7T047Ozs7O047Ozs7OworMjdEMTtBTkQgV0lUSCBET1Q7U207MDtPTjs7Ozs7Tjs7Ozs7CisyN0QyO0VMRU1FTlQgT0YgT1BFTklORyBVUFdBUkRTO1NtOzA7T047Ozs7O047Ozs7OworMjdEMztMT1dFUiBSSUdIVCBDT1JORVIgV0lUSCBET1Q7U207MDtPTjs7Ozs7WTs7Ozs7CisyN0Q0O1VQUEVSIExFRlQgQ09STkVSIFdJVEggRE9UO1NtOzA7T047Ozs7O1k7Ozs7OworMjdENTtMRUZUIE9VVEVSIEpPSU47U207MDtPTjs7Ozs7WTs7Ozs7CisyN0Q2O1JJR0hUIE9VVEVSIEpPSU47U207MDtPTjs7Ozs7WTs7Ozs7CisyN0Q3O0ZVTEwgT1VURVIgSk9JTjtTbTswO09OOzs7OztOOzs7OzsKKzI3RDg7TEFSR0UgVVAgVEFDSztTbTswO09OOzs7OztOOzs7OzsKKzI3RDk7TEFSR0UgRE9XTiBUQUNLO1NtOzA7T047Ozs7O047Ozs7OworMjdEQTtMRUZUIEFORCBSSUdIVCBET1VCTEUgVFVSTlNUSUxFO1NtOzA7T047Ozs7O047Ozs7OworMjdEQjtMRUZUIEFORCBSSUdIVCBUQUNLO1NtOzA7T047Ozs7O047Ozs7OworMjdEQztMRUZUIE1VTFRJTUFQO1NtOzA7T047Ozs7O1k7Ozs7OworMjdERDtMT05HIFJJR0hUIFRBQ0s7U207MDtPTjs7Ozs7WTs7Ozs7CisyN0RFO0xPTkcgTEVGVCBUQUNLO1NtOzA7T047Ozs7O1k7Ozs7OworMjdERjtVUCBUQUNLIFdJVEggQ0lSQ0xFIEFCT1ZFO1NtOzA7T047Ozs7O047Ozs7OworMjdFMDtMT1pFTkdFIERJVklERUQgQlkgSE9SSVpPTlRBTCBSVUxFO1NtOzA7T047Ozs7O047Ozs7OworMjdFMTtXSElURSBDT05DQVZFLVNJREVEIERJQU1PTkQ7U207MDtPTjs7Ozs7Tjs7Ozs7CisyN0UyO1dISVRFIENPTkNBVkUtU0lERUQgRElBTU9ORCBXSVRIIExFRlRXQVJEUyBUSUNLO1NtOzA7T047Ozs7O1k7Ozs7OworMjdFMztXSElURSBDT05DQVZFLVNJREVEIERJQU1PTkQgV0lUSCBSSUdIVFdBUkRTIFRJQ0s7U207MDtPTjs7Ozs7WTs7Ozs7CisyN0U0O1dISVRFIFNRVUFSRSBXSVRIIExFRlRXQVJEUyBUSUNLO1NtOzA7T047Ozs7O1k7Ozs7OworMjdFNTtXSElURSBTUVVBUkUgV0lUSCBSSUdIVFdBUkRTIFRJQ0s7U207MDtPTjs7Ozs7WTs7Ozs7CisyN0U2O01BVEhFTUFUSUNBTCBMRUZUIFdISVRFIFNRVUFSRSBCUkFDS0VUO1BzOzA7T047Ozs7O1k7Ozs7OworMjdFNztNQVRIRU1BVElDQUwgUklHSFQgV0hJVEUgU1FVQVJFIEJSQUNLRVQ7UGU7MDtPTjs7Ozs7WTs7Ozs7CisyN0U4O01BVEhFTUFUSUNBTCBMRUZUIEFOR0xFIEJSQUNLRVQ7UHM7MDtPTjs7Ozs7WTs7Ozs7CisyN0U5O01BVEhFTUFUSUNBTCBSSUdIVCBBTkdMRSBCUkFDS0VUO1BlOzA7T047Ozs7O1k7Ozs7OworMjdFQTtNQVRIRU1BVElDQUwgTEVGVCBET1VCTEUgQU5HTEUgQlJBQ0tFVDtQczswO09OOzs7OztZOzs7OzsKKzI3RUI7TUFUSEVNQVRJQ0FMIFJJR0hUIERPVUJMRSBBTkdMRSBCUkFDS0VUO1BlOzA7T047Ozs7O1k7Ozs7OworMjdGMDtVUFdBUkRTIFFVQURSVVBMRSBBUlJPVztTbTswO09OOzs7OztOOzs7OzsKKzI3RjE7RE9XTldBUkRTIFFVQURSVVBMRSBBUlJPVztTbTswO09OOzs7OztOOzs7OzsKKzI3RjI7QU5USUNMT0NLV0lTRSBHQVBQRUQgQ0lSQ0xFIEFSUk9XO1NtOzA7T047Ozs7O047Ozs7OworMjdGMztDTE9DS1dJU0UgR0FQUEVEIENJUkNMRSBBUlJPVztTbTswO09OOzs7OztOOzs7OzsKKzI3RjQ7UklHSFQgQVJST1cgV0lUSCBDSVJDTEVEIFBMVVM7U207MDtPTjs7Ozs7Tjs7Ozs7CisyN0Y1O0xPTkcgTEVGVFdBUkRTIEFSUk9XO1NtOzA7T047Ozs7O047Ozs7OworMjdGNjtMT05HIFJJR0hUV0FSRFMgQVJST1c7U207MDtPTjs7Ozs7Tjs7Ozs7CisyN0Y3O0xPTkcgTEVGVCBSSUdIVCBBUlJPVztTbTswO09OOzs7OztOOzs7OzsKKzI3Rjg7TE9ORyBMRUZUV0FSRFMgRE9VQkxFIEFSUk9XO1NtOzA7T047Ozs7O047Ozs7OworMjdGOTtMT05HIFJJR0hUV0FSRFMgRE9VQkxFIEFSUk9XO1NtOzA7T047Ozs7O047Ozs7OworMjdGQTtMT05HIExFRlQgUklHSFQgRE9VQkxFIEFSUk9XO1NtOzA7T047Ozs7O047Ozs7OworMjdGQjtMT05HIExFRlRXQVJEUyBBUlJPVyBGUk9NIEJBUjtTbTswO09OOzs7OztOOzs7OzsKKzI3RkM7TE9ORyBSSUdIVFdBUkRTIEFSUk9XIEZST00gQkFSO1NtOzA7T047Ozs7O047Ozs7OworMjdGRDtMT05HIExFRlRXQVJEUyBET1VCTEUgQVJST1cgRlJPTSBCQVI7U207MDtPTjs7Ozs7Tjs7Ozs7CisyN0ZFO0xPTkcgUklHSFRXQVJEUyBET1VCTEUgQVJST1cgRlJPTSBCQVI7U207MDtPTjs7Ozs7Tjs7Ozs7CisyN0ZGO0xPTkcgUklHSFRXQVJEUyBTUVVJR0dMRSBBUlJPVztTbTswO09OOzs7OztOOzs7OzsKKzI4MDA7QlJBSUxMRSBQQVRURVJOIEJMQU5LO1NvOzA7T047Ozs7O047Ozs7OworMjgwMTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xO1NvOzA7T047Ozs7O047Ozs7OworMjgwMjtCUkFJTExFIFBBVFRFUk4gRE9UUy0yO1NvOzA7T047Ozs7O047Ozs7OworMjgwMztCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjtTbzswO09OOzs7OztOOzs7OzsKKzI4MDQ7QlJBSUxMRSBQQVRURVJOIERPVFMtMztTbzswO09OOzs7OztOOzs7OzsKKzI4MDU7QlJBSUxMRSBQQVRURVJOIERPVFMtMTM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODA2O0JSQUlMTEUgUEFUVEVSTiBET1RTLTIzO1NvOzA7T047Ozs7O047Ozs7OworMjgwNztCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODA4O0JSQUlMTEUgUEFUVEVSTiBET1RTLTQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODA5O0JSQUlMTEUgUEFUVEVSTiBET1RTLTE0O1NvOzA7T047Ozs7O047Ozs7OworMjgwQTtCUkFJTExFIFBBVFRFUk4gRE9UUy0yNDtTbzswO09OOzs7OztOOzs7OzsKKzI4MEI7QlJBSUxMRSBQQVRURVJOIERPVFMtMTI0O1NvOzA7T047Ozs7O047Ozs7OworMjgwQztCUkFJTExFIFBBVFRFUk4gRE9UUy0zNDtTbzswO09OOzs7OztOOzs7OzsKKzI4MEQ7QlJBSUxMRSBQQVRURVJOIERPVFMtMTM0O1NvOzA7T047Ozs7O047Ozs7OworMjgwRTtCUkFJTExFIFBBVFRFUk4gRE9UUy0yMzQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODBGO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyMzQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODEwO0JSQUlMTEUgUEFUVEVSTiBET1RTLTU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODExO0JSQUlMTEUgUEFUVEVSTiBET1RTLTE1O1NvOzA7T047Ozs7O047Ozs7OworMjgxMjtCUkFJTExFIFBBVFRFUk4gRE9UUy0yNTtTbzswO09OOzs7OztOOzs7OzsKKzI4MTM7QlJBSUxMRSBQQVRURVJOIERPVFMtMTI1O1NvOzA7T047Ozs7O047Ozs7OworMjgxNDtCUkFJTExFIFBBVFRFUk4gRE9UUy0zNTtTbzswO09OOzs7OztOOzs7OzsKKzI4MTU7QlJBSUxMRSBQQVRURVJOIERPVFMtMTM1O1NvOzA7T047Ozs7O047Ozs7OworMjgxNjtCUkFJTExFIFBBVFRFUk4gRE9UUy0yMzU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODE3O0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyMzU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODE4O0JSQUlMTEUgUEFUVEVSTiBET1RTLTQ1O1NvOzA7T047Ozs7O047Ozs7OworMjgxOTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xNDU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODFBO0JSQUlMTEUgUEFUVEVSTiBET1RTLTI0NTtTbzswO09OOzs7OztOOzs7OzsKKzI4MUI7QlJBSUxMRSBQQVRURVJOIERPVFMtMTI0NTtTbzswO09OOzs7OztOOzs7OzsKKzI4MUM7QlJBSUxMRSBQQVRURVJOIERPVFMtMzQ1O1NvOzA7T047Ozs7O047Ozs7OworMjgxRDtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMzQ1O1NvOzA7T047Ozs7O047Ozs7OworMjgxRTtCUkFJTExFIFBBVFRFUk4gRE9UUy0yMzQ1O1NvOzA7T047Ozs7O047Ozs7OworMjgxRjtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM0NTtTbzswO09OOzs7OztOOzs7OzsKKzI4MjA7QlJBSUxMRSBQQVRURVJOIERPVFMtNjtTbzswO09OOzs7OztOOzs7OzsKKzI4MjE7QlJBSUxMRSBQQVRURVJOIERPVFMtMTY7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODIyO0JSQUlMTEUgUEFUVEVSTiBET1RTLTI2O1NvOzA7T047Ozs7O047Ozs7OworMjgyMztCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjY7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODI0O0JSQUlMTEUgUEFUVEVSTiBET1RTLTM2O1NvOzA7T047Ozs7O047Ozs7OworMjgyNTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMzY7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODI2O0JSQUlMTEUgUEFUVEVSTiBET1RTLTIzNjtTbzswO09OOzs7OztOOzs7OzsKKzI4Mjc7QlJBSUxMRSBQQVRURVJOIERPVFMtMTIzNjtTbzswO09OOzs7OztOOzs7OzsKKzI4Mjg7QlJBSUxMRSBQQVRURVJOIERPVFMtNDY7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODI5O0JSQUlMTEUgUEFUVEVSTiBET1RTLTE0NjtTbzswO09OOzs7OztOOzs7OzsKKzI4MkE7QlJBSUxMRSBQQVRURVJOIERPVFMtMjQ2O1NvOzA7T047Ozs7O047Ozs7OworMjgyQjtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjQ2O1NvOzA7T047Ozs7O047Ozs7OworMjgyQztCUkFJTExFIFBBVFRFUk4gRE9UUy0zNDY7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODJEO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEzNDY7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODJFO0JSQUlMTEUgUEFUVEVSTiBET1RTLTIzNDY7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODJGO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyMzQ2O1NvOzA7T047Ozs7O047Ozs7OworMjgzMDtCUkFJTExFIFBBVFRFUk4gRE9UUy01NjtTbzswO09OOzs7OztOOzs7OzsKKzI4MzE7QlJBSUxMRSBQQVRURVJOIERPVFMtMTU2O1NvOzA7T047Ozs7O047Ozs7OworMjgzMjtCUkFJTExFIFBBVFRFUk4gRE9UUy0yNTY7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODMzO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyNTY7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODM0O0JSQUlMTEUgUEFUVEVSTiBET1RTLTM1NjtTbzswO09OOzs7OztOOzs7OzsKKzI4MzU7QlJBSUxMRSBQQVRURVJOIERPVFMtMTM1NjtTbzswO09OOzs7OztOOzs7OzsKKzI4MzY7QlJBSUxMRSBQQVRURVJOIERPVFMtMjM1NjtTbzswO09OOzs7OztOOzs7OzsKKzI4Mzc7QlJBSUxMRSBQQVRURVJOIERPVFMtMTIzNTY7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODM4O0JSQUlMTEUgUEFUVEVSTiBET1RTLTQ1NjtTbzswO09OOzs7OztOOzs7OzsKKzI4Mzk7QlJBSUxMRSBQQVRURVJOIERPVFMtMTQ1NjtTbzswO09OOzs7OztOOzs7OzsKKzI4M0E7QlJBSUxMRSBQQVRURVJOIERPVFMtMjQ1NjtTbzswO09OOzs7OztOOzs7OzsKKzI4M0I7QlJBSUxMRSBQQVRURVJOIERPVFMtMTI0NTY7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODNDO0JSQUlMTEUgUEFUVEVSTiBET1RTLTM0NTY7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODNEO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEzNDU2O1NvOzA7T047Ozs7O047Ozs7OworMjgzRTtCUkFJTExFIFBBVFRFUk4gRE9UUy0yMzQ1NjtTbzswO09OOzs7OztOOzs7OzsKKzI4M0Y7QlJBSUxMRSBQQVRURVJOIERPVFMtMTIzNDU2O1NvOzA7T047Ozs7O047Ozs7OworMjg0MDtCUkFJTExFIFBBVFRFUk4gRE9UUy03O1NvOzA7T047Ozs7O047Ozs7OworMjg0MTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xNztTbzswO09OOzs7OztOOzs7OzsKKzI4NDI7QlJBSUxMRSBQQVRURVJOIERPVFMtMjc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODQzO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyNztTbzswO09OOzs7OztOOzs7OzsKKzI4NDQ7QlJBSUxMRSBQQVRURVJOIERPVFMtMzc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODQ1O0JSQUlMTEUgUEFUVEVSTiBET1RTLTEzNztTbzswO09OOzs7OztOOzs7OzsKKzI4NDY7QlJBSUxMRSBQQVRURVJOIERPVFMtMjM3O1NvOzA7T047Ozs7O047Ozs7OworMjg0NztCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM3O1NvOzA7T047Ozs7O047Ozs7OworMjg0ODtCUkFJTExFIFBBVFRFUk4gRE9UUy00NztTbzswO09OOzs7OztOOzs7OzsKKzI4NDk7QlJBSUxMRSBQQVRURVJOIERPVFMtMTQ3O1NvOzA7T047Ozs7O047Ozs7OworMjg0QTtCUkFJTExFIFBBVFRFUk4gRE9UUy0yNDc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODRCO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyNDc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODRDO0JSQUlMTEUgUEFUVEVSTiBET1RTLTM0NztTbzswO09OOzs7OztOOzs7OzsKKzI4NEQ7QlJBSUxMRSBQQVRURVJOIERPVFMtMTM0NztTbzswO09OOzs7OztOOzs7OzsKKzI4NEU7QlJBSUxMRSBQQVRURVJOIERPVFMtMjM0NztTbzswO09OOzs7OztOOzs7OzsKKzI4NEY7QlJBSUxMRSBQQVRURVJOIERPVFMtMTIzNDc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODUwO0JSQUlMTEUgUEFUVEVSTiBET1RTLTU3O1NvOzA7T047Ozs7O047Ozs7OworMjg1MTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xNTc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODUyO0JSQUlMTEUgUEFUVEVSTiBET1RTLTI1NztTbzswO09OOzs7OztOOzs7OzsKKzI4NTM7QlJBSUxMRSBQQVRURVJOIERPVFMtMTI1NztTbzswO09OOzs7OztOOzs7OzsKKzI4NTQ7QlJBSUxMRSBQQVRURVJOIERPVFMtMzU3O1NvOzA7T047Ozs7O047Ozs7OworMjg1NTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMzU3O1NvOzA7T047Ozs7O047Ozs7OworMjg1NjtCUkFJTExFIFBBVFRFUk4gRE9UUy0yMzU3O1NvOzA7T047Ozs7O047Ozs7OworMjg1NztCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM1NztTbzswO09OOzs7OztOOzs7OzsKKzI4NTg7QlJBSUxMRSBQQVRURVJOIERPVFMtNDU3O1NvOzA7T047Ozs7O047Ozs7OworMjg1OTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xNDU3O1NvOzA7T047Ozs7O047Ozs7OworMjg1QTtCUkFJTExFIFBBVFRFUk4gRE9UUy0yNDU3O1NvOzA7T047Ozs7O047Ozs7OworMjg1QjtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjQ1NztTbzswO09OOzs7OztOOzs7OzsKKzI4NUM7QlJBSUxMRSBQQVRURVJOIERPVFMtMzQ1NztTbzswO09OOzs7OztOOzs7OzsKKzI4NUQ7QlJBSUxMRSBQQVRURVJOIERPVFMtMTM0NTc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODVFO0JSQUlMTEUgUEFUVEVSTiBET1RTLTIzNDU3O1NvOzA7T047Ozs7O047Ozs7OworMjg1RjtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM0NTc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODYwO0JSQUlMTEUgUEFUVEVSTiBET1RTLTY3O1NvOzA7T047Ozs7O047Ozs7OworMjg2MTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xNjc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODYyO0JSQUlMTEUgUEFUVEVSTiBET1RTLTI2NztTbzswO09OOzs7OztOOzs7OzsKKzI4NjM7QlJBSUxMRSBQQVRURVJOIERPVFMtMTI2NztTbzswO09OOzs7OztOOzs7OzsKKzI4NjQ7QlJBSUxMRSBQQVRURVJOIERPVFMtMzY3O1NvOzA7T047Ozs7O047Ozs7OworMjg2NTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMzY3O1NvOzA7T047Ozs7O047Ozs7OworMjg2NjtCUkFJTExFIFBBVFRFUk4gRE9UUy0yMzY3O1NvOzA7T047Ozs7O047Ozs7OworMjg2NztCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM2NztTbzswO09OOzs7OztOOzs7OzsKKzI4Njg7QlJBSUxMRSBQQVRURVJOIERPVFMtNDY3O1NvOzA7T047Ozs7O047Ozs7OworMjg2OTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xNDY3O1NvOzA7T047Ozs7O047Ozs7OworMjg2QTtCUkFJTExFIFBBVFRFUk4gRE9UUy0yNDY3O1NvOzA7T047Ozs7O047Ozs7OworMjg2QjtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjQ2NztTbzswO09OOzs7OztOOzs7OzsKKzI4NkM7QlJBSUxMRSBQQVRURVJOIERPVFMtMzQ2NztTbzswO09OOzs7OztOOzs7OzsKKzI4NkQ7QlJBSUxMRSBQQVRURVJOIERPVFMtMTM0Njc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODZFO0JSQUlMTEUgUEFUVEVSTiBET1RTLTIzNDY3O1NvOzA7T047Ozs7O047Ozs7OworMjg2RjtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM0Njc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODcwO0JSQUlMTEUgUEFUVEVSTiBET1RTLTU2NztTbzswO09OOzs7OztOOzs7OzsKKzI4NzE7QlJBSUxMRSBQQVRURVJOIERPVFMtMTU2NztTbzswO09OOzs7OztOOzs7OzsKKzI4NzI7QlJBSUxMRSBQQVRURVJOIERPVFMtMjU2NztTbzswO09OOzs7OztOOzs7OzsKKzI4NzM7QlJBSUxMRSBQQVRURVJOIERPVFMtMTI1Njc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODc0O0JSQUlMTEUgUEFUVEVSTiBET1RTLTM1Njc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODc1O0JSQUlMTEUgUEFUVEVSTiBET1RTLTEzNTY3O1NvOzA7T047Ozs7O047Ozs7OworMjg3NjtCUkFJTExFIFBBVFRFUk4gRE9UUy0yMzU2NztTbzswO09OOzs7OztOOzs7OzsKKzI4Nzc7QlJBSUxMRSBQQVRURVJOIERPVFMtMTIzNTY3O1NvOzA7T047Ozs7O047Ozs7OworMjg3ODtCUkFJTExFIFBBVFRFUk4gRE9UUy00NTY3O1NvOzA7T047Ozs7O047Ozs7OworMjg3OTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xNDU2NztTbzswO09OOzs7OztOOzs7OzsKKzI4N0E7QlJBSUxMRSBQQVRURVJOIERPVFMtMjQ1Njc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODdCO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyNDU2NztTbzswO09OOzs7OztOOzs7OzsKKzI4N0M7QlJBSUxMRSBQQVRURVJOIERPVFMtMzQ1Njc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODdEO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEzNDU2NztTbzswO09OOzs7OztOOzs7OzsKKzI4N0U7QlJBSUxMRSBQQVRURVJOIERPVFMtMjM0NTY3O1NvOzA7T047Ozs7O047Ozs7OworMjg3RjtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM0NTY3O1NvOzA7T047Ozs7O047Ozs7OworMjg4MDtCUkFJTExFIFBBVFRFUk4gRE9UUy04O1NvOzA7T047Ozs7O047Ozs7OworMjg4MTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xODtTbzswO09OOzs7OztOOzs7OzsKKzI4ODI7QlJBSUxMRSBQQVRURVJOIERPVFMtMjg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODgzO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyODtTbzswO09OOzs7OztOOzs7OzsKKzI4ODQ7QlJBSUxMRSBQQVRURVJOIERPVFMtMzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODg1O0JSQUlMTEUgUEFUVEVSTiBET1RTLTEzODtTbzswO09OOzs7OztOOzs7OzsKKzI4ODY7QlJBSUxMRSBQQVRURVJOIERPVFMtMjM4O1NvOzA7T047Ozs7O047Ozs7OworMjg4NztCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM4O1NvOzA7T047Ozs7O047Ozs7OworMjg4ODtCUkFJTExFIFBBVFRFUk4gRE9UUy00ODtTbzswO09OOzs7OztOOzs7OzsKKzI4ODk7QlJBSUxMRSBQQVRURVJOIERPVFMtMTQ4O1NvOzA7T047Ozs7O047Ozs7OworMjg4QTtCUkFJTExFIFBBVFRFUk4gRE9UUy0yNDg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODhCO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyNDg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODhDO0JSQUlMTEUgUEFUVEVSTiBET1RTLTM0ODtTbzswO09OOzs7OztOOzs7OzsKKzI4OEQ7QlJBSUxMRSBQQVRURVJOIERPVFMtMTM0ODtTbzswO09OOzs7OztOOzs7OzsKKzI4OEU7QlJBSUxMRSBQQVRURVJOIERPVFMtMjM0ODtTbzswO09OOzs7OztOOzs7OzsKKzI4OEY7QlJBSUxMRSBQQVRURVJOIERPVFMtMTIzNDg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODkwO0JSQUlMTEUgUEFUVEVSTiBET1RTLTU4O1NvOzA7T047Ozs7O047Ozs7OworMjg5MTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xNTg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODkyO0JSQUlMTEUgUEFUVEVSTiBET1RTLTI1ODtTbzswO09OOzs7OztOOzs7OzsKKzI4OTM7QlJBSUxMRSBQQVRURVJOIERPVFMtMTI1ODtTbzswO09OOzs7OztOOzs7OzsKKzI4OTQ7QlJBSUxMRSBQQVRURVJOIERPVFMtMzU4O1NvOzA7T047Ozs7O047Ozs7OworMjg5NTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMzU4O1NvOzA7T047Ozs7O047Ozs7OworMjg5NjtCUkFJTExFIFBBVFRFUk4gRE9UUy0yMzU4O1NvOzA7T047Ozs7O047Ozs7OworMjg5NztCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM1ODtTbzswO09OOzs7OztOOzs7OzsKKzI4OTg7QlJBSUxMRSBQQVRURVJOIERPVFMtNDU4O1NvOzA7T047Ozs7O047Ozs7OworMjg5OTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xNDU4O1NvOzA7T047Ozs7O047Ozs7OworMjg5QTtCUkFJTExFIFBBVFRFUk4gRE9UUy0yNDU4O1NvOzA7T047Ozs7O047Ozs7OworMjg5QjtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjQ1ODtTbzswO09OOzs7OztOOzs7OzsKKzI4OUM7QlJBSUxMRSBQQVRURVJOIERPVFMtMzQ1ODtTbzswO09OOzs7OztOOzs7OzsKKzI4OUQ7QlJBSUxMRSBQQVRURVJOIERPVFMtMTM0NTg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODlFO0JSQUlMTEUgUEFUVEVSTiBET1RTLTIzNDU4O1NvOzA7T047Ozs7O047Ozs7OworMjg5RjtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM0NTg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEEwO0JSQUlMTEUgUEFUVEVSTiBET1RTLTY4O1NvOzA7T047Ozs7O047Ozs7OworMjhBMTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xNjg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEEyO0JSQUlMTEUgUEFUVEVSTiBET1RTLTI2ODtTbzswO09OOzs7OztOOzs7OzsKKzI4QTM7QlJBSUxMRSBQQVRURVJOIERPVFMtMTI2ODtTbzswO09OOzs7OztOOzs7OzsKKzI4QTQ7QlJBSUxMRSBQQVRURVJOIERPVFMtMzY4O1NvOzA7T047Ozs7O047Ozs7OworMjhBNTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMzY4O1NvOzA7T047Ozs7O047Ozs7OworMjhBNjtCUkFJTExFIFBBVFRFUk4gRE9UUy0yMzY4O1NvOzA7T047Ozs7O047Ozs7OworMjhBNztCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM2ODtTbzswO09OOzs7OztOOzs7OzsKKzI4QTg7QlJBSUxMRSBQQVRURVJOIERPVFMtNDY4O1NvOzA7T047Ozs7O047Ozs7OworMjhBOTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xNDY4O1NvOzA7T047Ozs7O047Ozs7OworMjhBQTtCUkFJTExFIFBBVFRFUk4gRE9UUy0yNDY4O1NvOzA7T047Ozs7O047Ozs7OworMjhBQjtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjQ2ODtTbzswO09OOzs7OztOOzs7OzsKKzI4QUM7QlJBSUxMRSBQQVRURVJOIERPVFMtMzQ2ODtTbzswO09OOzs7OztOOzs7OzsKKzI4QUQ7QlJBSUxMRSBQQVRURVJOIERPVFMtMTM0Njg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEFFO0JSQUlMTEUgUEFUVEVSTiBET1RTLTIzNDY4O1NvOzA7T047Ozs7O047Ozs7OworMjhBRjtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM0Njg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEIwO0JSQUlMTEUgUEFUVEVSTiBET1RTLTU2ODtTbzswO09OOzs7OztOOzs7OzsKKzI4QjE7QlJBSUxMRSBQQVRURVJOIERPVFMtMTU2ODtTbzswO09OOzs7OztOOzs7OzsKKzI4QjI7QlJBSUxMRSBQQVRURVJOIERPVFMtMjU2ODtTbzswO09OOzs7OztOOzs7OzsKKzI4QjM7QlJBSUxMRSBQQVRURVJOIERPVFMtMTI1Njg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEI0O0JSQUlMTEUgUEFUVEVSTiBET1RTLTM1Njg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEI1O0JSQUlMTEUgUEFUVEVSTiBET1RTLTEzNTY4O1NvOzA7T047Ozs7O047Ozs7OworMjhCNjtCUkFJTExFIFBBVFRFUk4gRE9UUy0yMzU2ODtTbzswO09OOzs7OztOOzs7OzsKKzI4Qjc7QlJBSUxMRSBQQVRURVJOIERPVFMtMTIzNTY4O1NvOzA7T047Ozs7O047Ozs7OworMjhCODtCUkFJTExFIFBBVFRFUk4gRE9UUy00NTY4O1NvOzA7T047Ozs7O047Ozs7OworMjhCOTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xNDU2ODtTbzswO09OOzs7OztOOzs7OzsKKzI4QkE7QlJBSUxMRSBQQVRURVJOIERPVFMtMjQ1Njg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEJCO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyNDU2ODtTbzswO09OOzs7OztOOzs7OzsKKzI4QkM7QlJBSUxMRSBQQVRURVJOIERPVFMtMzQ1Njg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEJEO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEzNDU2ODtTbzswO09OOzs7OztOOzs7OzsKKzI4QkU7QlJBSUxMRSBQQVRURVJOIERPVFMtMjM0NTY4O1NvOzA7T047Ozs7O047Ozs7OworMjhCRjtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM0NTY4O1NvOzA7T047Ozs7O047Ozs7OworMjhDMDtCUkFJTExFIFBBVFRFUk4gRE9UUy03ODtTbzswO09OOzs7OztOOzs7OzsKKzI4QzE7QlJBSUxMRSBQQVRURVJOIERPVFMtMTc4O1NvOzA7T047Ozs7O047Ozs7OworMjhDMjtCUkFJTExFIFBBVFRFUk4gRE9UUy0yNzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEMzO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyNzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEM0O0JSQUlMTEUgUEFUVEVSTiBET1RTLTM3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4QzU7QlJBSUxMRSBQQVRURVJOIERPVFMtMTM3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4QzY7QlJBSUxMRSBQQVRURVJOIERPVFMtMjM3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4Qzc7QlJBSUxMRSBQQVRURVJOIERPVFMtMTIzNzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEM4O0JSQUlMTEUgUEFUVEVSTiBET1RTLTQ3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4Qzk7QlJBSUxMRSBQQVRURVJOIERPVFMtMTQ3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4Q0E7QlJBSUxMRSBQQVRURVJOIERPVFMtMjQ3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4Q0I7QlJBSUxMRSBQQVRURVJOIERPVFMtMTI0Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOENDO0JSQUlMTEUgUEFUVEVSTiBET1RTLTM0Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOENEO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEzNDc4O1NvOzA7T047Ozs7O047Ozs7OworMjhDRTtCUkFJTExFIFBBVFRFUk4gRE9UUy0yMzQ3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4Q0Y7QlJBSUxMRSBQQVRURVJOIERPVFMtMTIzNDc4O1NvOzA7T047Ozs7O047Ozs7OworMjhEMDtCUkFJTExFIFBBVFRFUk4gRE9UUy01Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEQxO0JSQUlMTEUgUEFUVEVSTiBET1RTLTE1Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEQyO0JSQUlMTEUgUEFUVEVSTiBET1RTLTI1Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEQzO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyNTc4O1NvOzA7T047Ozs7O047Ozs7OworMjhENDtCUkFJTExFIFBBVFRFUk4gRE9UUy0zNTc4O1NvOzA7T047Ozs7O047Ozs7OworMjhENTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMzU3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4RDY7QlJBSUxMRSBQQVRURVJOIERPVFMtMjM1Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEQ3O0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyMzU3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4RDg7QlJBSUxMRSBQQVRURVJOIERPVFMtNDU3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4RDk7QlJBSUxMRSBQQVRURVJOIERPVFMtMTQ1Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOERBO0JSQUlMTEUgUEFUVEVSTiBET1RTLTI0NTc4O1NvOzA7T047Ozs7O047Ozs7OworMjhEQjtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjQ1Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOERDO0JSQUlMTEUgUEFUVEVSTiBET1RTLTM0NTc4O1NvOzA7T047Ozs7O047Ozs7OworMjhERDtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMzQ1Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOERFO0JSQUlMTEUgUEFUVEVSTiBET1RTLTIzNDU3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4REY7QlJBSUxMRSBQQVRURVJOIERPVFMtMTIzNDU3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4RTA7QlJBSUxMRSBQQVRURVJOIERPVFMtNjc4O1NvOzA7T047Ozs7O047Ozs7OworMjhFMTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xNjc4O1NvOzA7T047Ozs7O047Ozs7OworMjhFMjtCUkFJTExFIFBBVFRFUk4gRE9UUy0yNjc4O1NvOzA7T047Ozs7O047Ozs7OworMjhFMztCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjY3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4RTQ7QlJBSUxMRSBQQVRURVJOIERPVFMtMzY3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4RTU7QlJBSUxMRSBQQVRURVJOIERPVFMtMTM2Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEU2O0JSQUlMTEUgUEFUVEVSTiBET1RTLTIzNjc4O1NvOzA7T047Ozs7O047Ozs7OworMjhFNztCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM2Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEU4O0JSQUlMTEUgUEFUVEVSTiBET1RTLTQ2Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEU5O0JSQUlMTEUgUEFUVEVSTiBET1RTLTE0Njc4O1NvOzA7T047Ozs7O047Ozs7OworMjhFQTtCUkFJTExFIFBBVFRFUk4gRE9UUy0yNDY3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4RUI7QlJBSUxMRSBQQVRURVJOIERPVFMtMTI0Njc4O1NvOzA7T047Ozs7O047Ozs7OworMjhFQztCUkFJTExFIFBBVFRFUk4gRE9UUy0zNDY3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4RUQ7QlJBSUxMRSBQQVRURVJOIERPVFMtMTM0Njc4O1NvOzA7T047Ozs7O047Ozs7OworMjhFRTtCUkFJTExFIFBBVFRFUk4gRE9UUy0yMzQ2Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEVGO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyMzQ2Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEYwO0JSQUlMTEUgUEFUVEVSTiBET1RTLTU2Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEYxO0JSQUlMTEUgUEFUVEVSTiBET1RTLTE1Njc4O1NvOzA7T047Ozs7O047Ozs7OworMjhGMjtCUkFJTExFIFBBVFRFUk4gRE9UUy0yNTY3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4RjM7QlJBSUxMRSBQQVRURVJOIERPVFMtMTI1Njc4O1NvOzA7T047Ozs7O047Ozs7OworMjhGNDtCUkFJTExFIFBBVFRFUk4gRE9UUy0zNTY3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4RjU7QlJBSUxMRSBQQVRURVJOIERPVFMtMTM1Njc4O1NvOzA7T047Ozs7O047Ozs7OworMjhGNjtCUkFJTExFIFBBVFRFUk4gRE9UUy0yMzU2Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEY3O0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyMzU2Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEY4O0JSQUlMTEUgUEFUVEVSTiBET1RTLTQ1Njc4O1NvOzA7T047Ozs7O047Ozs7OworMjhGOTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xNDU2Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEZBO0JSQUlMTEUgUEFUVEVSTiBET1RTLTI0NTY3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4RkI7QlJBSUxMRSBQQVRURVJOIERPVFMtMTI0NTY3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4RkM7QlJBSUxMRSBQQVRURVJOIERPVFMtMzQ1Njc4O1NvOzA7T047Ozs7O047Ozs7OworMjhGRDtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMzQ1Njc4O1NvOzA7T047Ozs7O047Ozs7OworMjhGRTtCUkFJTExFIFBBVFRFUk4gRE9UUy0yMzQ1Njc4O1NvOzA7T047Ozs7O047Ozs7OworMjhGRjtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM0NTY3ODtTbzswO09OOzs7OztOOzs7OzsKKzI5MDA7UklHSFRXQVJEUyBUV08tSEVBREVEIEFSUk9XIFdJVEggVkVSVElDQUwgU1RST0tFO1NtOzA7T047Ozs7O047Ozs7OworMjkwMTtSSUdIVFdBUkRTIFRXTy1IRUFERUQgQVJST1cgV0lUSCBET1VCTEUgVkVSVElDQUwgU1RST0tFO1NtOzA7T047Ozs7O047Ozs7OworMjkwMjtMRUZUV0FSRFMgRE9VQkxFIEFSUk9XIFdJVEggVkVSVElDQUwgU1RST0tFO1NtOzA7T047Ozs7O047Ozs7OworMjkwMztSSUdIVFdBUkRTIERPVUJMRSBBUlJPVyBXSVRIIFZFUlRJQ0FMIFNUUk9LRTtTbTswO09OOzs7OztOOzs7OzsKKzI5MDQ7TEVGVCBSSUdIVCBET1VCTEUgQVJST1cgV0lUSCBWRVJUSUNBTCBTVFJPS0U7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOTA1O1JJR0hUV0FSRFMgVFdPLUhFQURFRCBBUlJPVyBGUk9NIEJBUjtTbTswO09OOzs7OztOOzs7OzsKKzI5MDY7TEVGVFdBUkRTIERPVUJMRSBBUlJPVyBGUk9NIEJBUjtTbTswO09OOzs7OztOOzs7OzsKKzI5MDc7UklHSFRXQVJEUyBET1VCTEUgQVJST1cgRlJPTSBCQVI7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOTA4O0RPV05XQVJEUyBBUlJPVyBXSVRIIEhPUklaT05UQUwgU1RST0tFO1NtOzA7T047Ozs7O047Ozs7OworMjkwOTtVUFdBUkRTIEFSUk9XIFdJVEggSE9SSVpPTlRBTCBTVFJPS0U7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOTBBO1VQV0FSRFMgVFJJUExFIEFSUk9XO1NtOzA7T047Ozs7O047Ozs7OworMjkwQjtET1dOV0FSRFMgVFJJUExFIEFSUk9XO1NtOzA7T047Ozs7O047Ozs7OworMjkwQztMRUZUV0FSRFMgRE9VQkxFIERBU0ggQVJST1c7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOTBEO1JJR0hUV0FSRFMgRE9VQkxFIERBU0ggQVJST1c7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOTBFO0xFRlRXQVJEUyBUUklQTEUgREFTSCBBUlJPVztTbTswO09OOzs7OztOOzs7OzsKKzI5MEY7UklHSFRXQVJEUyBUUklQTEUgREFTSCBBUlJPVztTbTswO09OOzs7OztOOzs7OzsKKzI5MTA7UklHSFRXQVJEUyBUV08tSEVBREVEIFRSSVBMRSBEQVNIIEFSUk9XO1NtOzA7T047Ozs7O047Ozs7OworMjkxMTtSSUdIVFdBUkRTIEFSUk9XIFdJVEggRE9UVEVEIFNURU07U207MDtPTjs7Ozs7Tjs7Ozs7CisyOTEyO1VQV0FSRFMgQVJST1cgVE8gQkFSO1NtOzA7T047Ozs7O047Ozs7OworMjkxMztET1dOV0FSRFMgQVJST1cgVE8gQkFSO1NtOzA7T047Ozs7O047Ozs7OworMjkxNDtSSUdIVFdBUkRTIEFSUk9XIFdJVEggVEFJTCBXSVRIIFZFUlRJQ0FMIFNUUk9LRTtTbTswO09OOzs7OztOOzs7OzsKKzI5MTU7UklHSFRXQVJEUyBBUlJPVyBXSVRIIFRBSUwgV0lUSCBET1VCTEUgVkVSVElDQUwgU1RST0tFO1NtOzA7T047Ozs7O047Ozs7OworMjkxNjtSSUdIVFdBUkRTIFRXTy1IRUFERUQgQVJST1cgV0lUSCBUQUlMO1NtOzA7T047Ozs7O047Ozs7OworMjkxNztSSUdIVFdBUkRTIFRXTy1IRUFERUQgQVJST1cgV0lUSCBUQUlMIFdJVEggVkVSVElDQUwgU1RST0tFO1NtOzA7T047Ozs7O047Ozs7OworMjkxODtSSUdIVFdBUkRTIFRXTy1IRUFERUQgQVJST1cgV0lUSCBUQUlMIFdJVEggRE9VQkxFIFZFUlRJQ0FMIFNUUk9LRTtTbTswO09OOzs7OztOOzs7OzsKKzI5MTk7TEVGVFdBUkRTIEFSUk9XLVRBSUw7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOTFBO1JJR0hUV0FSRFMgQVJST1ctVEFJTDtTbTswO09OOzs7OztOOzs7OzsKKzI5MUI7TEVGVFdBUkRTIERPVUJMRSBBUlJPVy1UQUlMO1NtOzA7T047Ozs7O047Ozs7OworMjkxQztSSUdIVFdBUkRTIERPVUJMRSBBUlJPVy1UQUlMO1NtOzA7T047Ozs7O047Ozs7OworMjkxRDtMRUZUV0FSRFMgQVJST1cgVE8gQkxBQ0sgRElBTU9ORDtTbTswO09OOzs7OztOOzs7OzsKKzI5MUU7UklHSFRXQVJEUyBBUlJPVyBUTyBCTEFDSyBESUFNT05EO1NtOzA7T047Ozs7O047Ozs7OworMjkxRjtMRUZUV0FSRFMgQVJST1cgRlJPTSBCQVIgVE8gQkxBQ0sgRElBTU9ORDtTbTswO09OOzs7OztOOzs7OzsKKzI5MjA7UklHSFRXQVJEUyBBUlJPVyBGUk9NIEJBUiBUTyBCTEFDSyBESUFNT05EO1NtOzA7T047Ozs7O047Ozs7OworMjkyMTtOT1JUSCBXRVNUIEFORCBTT1VUSCBFQVNUIEFSUk9XO1NtOzA7T047Ozs7O047Ozs7OworMjkyMjtOT1JUSCBFQVNUIEFORCBTT1VUSCBXRVNUIEFSUk9XO1NtOzA7T047Ozs7O047Ozs7OworMjkyMztOT1JUSCBXRVNUIEFSUk9XIFdJVEggSE9PSztTbTswO09OOzs7OztOOzs7OzsKKzI5MjQ7Tk9SVEggRUFTVCBBUlJPVyBXSVRIIEhPT0s7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOTI1O1NPVVRIIEVBU1QgQVJST1cgV0lUSCBIT09LO1NtOzA7T047Ozs7O047Ozs7OworMjkyNjtTT1VUSCBXRVNUIEFSUk9XIFdJVEggSE9PSztTbTswO09OOzs7OztOOzs7OzsKKzI5Mjc7Tk9SVEggV0VTVCBBUlJPVyBBTkQgTk9SVEggRUFTVCBBUlJPVztTbTswO09OOzs7OztOOzs7OzsKKzI5Mjg7Tk9SVEggRUFTVCBBUlJPVyBBTkQgU09VVEggRUFTVCBBUlJPVztTbTswO09OOzs7OztOOzs7OzsKKzI5Mjk7U09VVEggRUFTVCBBUlJPVyBBTkQgU09VVEggV0VTVCBBUlJPVztTbTswO09OOzs7OztOOzs7OzsKKzI5MkE7U09VVEggV0VTVCBBUlJPVyBBTkQgTk9SVEggV0VTVCBBUlJPVztTbTswO09OOzs7OztOOzs7OzsKKzI5MkI7UklTSU5HIERJQUdPTkFMIENST1NTSU5HIEZBTExJTkcgRElBR09OQUw7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOTJDO0ZBTExJTkcgRElBR09OQUwgQ1JPU1NJTkcgUklTSU5HIERJQUdPTkFMO1NtOzA7T047Ozs7O047Ozs7OworMjkyRDtTT1VUSCBFQVNUIEFSUk9XIENST1NTSU5HIE5PUlRIIEVBU1QgQVJST1c7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOTJFO05PUlRIIEVBU1QgQVJST1cgQ1JPU1NJTkcgU09VVEggRUFTVCBBUlJPVztTbTswO09OOzs7OztOOzs7OzsKKzI5MkY7RkFMTElORyBESUFHT05BTCBDUk9TU0lORyBOT1JUSCBFQVNUIEFSUk9XO1NtOzA7T047Ozs7O047Ozs7OworMjkzMDtSSVNJTkcgRElBR09OQUwgQ1JPU1NJTkcgU09VVEggRUFTVCBBUlJPVztTbTswO09OOzs7OztOOzs7OzsKKzI5MzE7Tk9SVEggRUFTVCBBUlJPVyBDUk9TU0lORyBOT1JUSCBXRVNUIEFSUk9XO1NtOzA7T047Ozs7O047Ozs7OworMjkzMjtOT1JUSCBXRVNUIEFSUk9XIENST1NTSU5HIE5PUlRIIEVBU1QgQVJST1c7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOTMzO1dBVkUgQVJST1cgUE9JTlRJTkcgRElSRUNUTFkgUklHSFQ7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOTM0O0FSUk9XIFBPSU5USU5HIFJJR0hUV0FSRFMgVEhFTiBDVVJWSU5HIFVQV0FSRFM7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOTM1O0FSUk9XIFBPSU5USU5HIFJJR0hUV0FSRFMgVEhFTiBDVVJWSU5HIERPV05XQVJEUztTbTswO09OOzs7OztOOzs7OzsKKzI5MzY7QVJST1cgUE9JTlRJTkcgRE9XTldBUkRTIFRIRU4gQ1VSVklORyBMRUZUV0FSRFM7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOTM3O0FSUk9XIFBPSU5USU5HIERPV05XQVJEUyBUSEVOIENVUlZJTkcgUklHSFRXQVJEUztTbTswO09OOzs7OztOOzs7OzsKKzI5Mzg7UklHSFQtU0lERSBBUkMgQ0xPQ0tXSVNFIEFSUk9XO1NtOzA7T047Ozs7O047Ozs7OworMjkzOTtMRUZULVNJREUgQVJDIEFOVElDTE9DS1dJU0UgQVJST1c7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOTNBO1RPUCBBUkMgQU5USUNMT0NLV0lTRSBBUlJPVztTbTswO09OOzs7OztOOzs7OzsKKzI5M0I7Qk9UVE9NIEFSQyBBTlRJQ0xPQ0tXSVNFIEFSUk9XO1NtOzA7T047Ozs7O047Ozs7OworMjkzQztUT1AgQVJDIENMT0NLV0lTRSBBUlJPVyBXSVRIIE1JTlVTO1NtOzA7T047Ozs7O047Ozs7OworMjkzRDtUT1AgQVJDIEFOVElDTE9DS1dJU0UgQVJST1cgV0lUSCBQTFVTO1NtOzA7T047Ozs7O047Ozs7OworMjkzRTtMT1dFUiBSSUdIVCBTRU1JQ0lSQ1VMQVIgQ0xPQ0tXSVNFIEFSUk9XO1NtOzA7T047Ozs7O047Ozs7OworMjkzRjtMT1dFUiBMRUZUIFNFTUlDSVJDVUxBUiBBTlRJQ0xPQ0tXSVNFIEFSUk9XO1NtOzA7T047Ozs7O047Ozs7OworMjk0MDtBTlRJQ0xPQ0tXSVNFIENMT1NFRCBDSVJDTEUgQVJST1c7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOTQxO0NMT0NLV0lTRSBDTE9TRUQgQ0lSQ0xFIEFSUk9XO1NtOzA7T047Ozs7O047Ozs7OworMjk0MjtSSUdIVFdBUkRTIEFSUk9XIEFCT1ZFIFNIT1JUIExFRlRXQVJEUyBBUlJPVztTbTswO09OOzs7OztOOzs7OzsKKzI5NDM7TEVGVFdBUkRTIEFSUk9XIEFCT1ZFIFNIT1JUIFJJR0hUV0FSRFMgQVJST1c7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOTQ0O1NIT1JUIFJJR0hUV0FSRFMgQVJST1cgQUJPVkUgTEVGVFdBUkRTIEFSUk9XO1NtOzA7T047Ozs7O047Ozs7OworMjk0NTtSSUdIVFdBUkRTIEFSUk9XIFdJVEggUExVUyBCRUxPVztTbTswO09OOzs7OztOOzs7OzsKKzI5NDY7TEVGVFdBUkRTIEFSUk9XIFdJVEggUExVUyBCRUxPVztTbTswO09OOzs7OztOOzs7OzsKKzI5NDc7UklHSFRXQVJEUyBBUlJPVyBUSFJPVUdIIFg7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOTQ4O0xFRlQgUklHSFQgQVJST1cgVEhST1VHSCBTTUFMTCBDSVJDTEU7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOTQ5O1VQV0FSRFMgVFdPLUhFQURFRCBBUlJPVyBGUk9NIFNNQUxMIENJUkNMRTtTbTswO09OOzs7OztOOzs7OzsKKzI5NEE7TEVGVCBCQVJCIFVQIFJJR0hUIEJBUkIgRE9XTiBIQVJQT09OO1NtOzA7T047Ozs7O047Ozs7OworMjk0QjtMRUZUIEJBUkIgRE9XTiBSSUdIVCBCQVJCIFVQIEhBUlBPT047U207MDtPTjs7Ozs7Tjs7Ozs7CisyOTRDO1VQIEJBUkIgUklHSFQgRE9XTiBCQVJCIExFRlQgSEFSUE9PTjtTbTswO09OOzs7OztOOzs7OzsKKzI5NEQ7VVAgQkFSQiBMRUZUIERPV04gQkFSQiBSSUdIVCBIQVJQT09OO1NtOzA7T047Ozs7O047Ozs7OworMjk0RTtMRUZUIEJBUkIgVVAgUklHSFQgQkFSQiBVUCBIQVJQT09OO1NtOzA7T047Ozs7O047Ozs7OworMjk0RjtVUCBCQVJCIFJJR0hUIERPV04gQkFSQiBSSUdIVCBIQVJQT09OO1NtOzA7T047Ozs7O047Ozs7OworMjk1MDtMRUZUIEJBUkIgRE9XTiBSSUdIVCBCQVJCIERPV04gSEFSUE9PTjtTbTswO09OOzs7OztOOzs7OzsKKzI5NTE7VVAgQkFSQiBMRUZUIERPV04gQkFSQiBMRUZUIEhBUlBPT047U207MDtPTjs7Ozs7Tjs7Ozs7CisyOTUyO0xFRlRXQVJEUyBIQVJQT09OIFdJVEggQkFSQiBVUCBUTyBCQVI7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOTUzO1JJR0hUV0FSRFMgSEFSUE9PTiBXSVRIIEJBUkIgVVAgVE8gQkFSO1NtOzA7T047Ozs7O047Ozs7OworMjk1NDtVUFdBUkRTIEhBUlBPT04gV0lUSCBCQVJCIFJJR0hUIFRPIEJBUjtTbTswO09OOzs7OztOOzs7OzsKKzI5NTU7RE9XTldBUkRTIEhBUlBPT04gV0lUSCBCQVJCIFJJR0hUIFRPIEJBUjtTbTswO09OOzs7OztOOzs7OzsKKzI5NTY7TEVGVFdBUkRTIEhBUlBPT04gV0lUSCBCQVJCIERPV04gVE8gQkFSO1NtOzA7T047Ozs7O047Ozs7OworMjk1NztSSUdIVFdBUkRTIEhBUlBPT04gV0lUSCBCQVJCIERPV04gVE8gQkFSO1NtOzA7T047Ozs7O047Ozs7OworMjk1ODtVUFdBUkRTIEhBUlBPT04gV0lUSCBCQVJCIExFRlQgVE8gQkFSO1NtOzA7T047Ozs7O047Ozs7OworMjk1OTtET1dOV0FSRFMgSEFSUE9PTiBXSVRIIEJBUkIgTEVGVCBUTyBCQVI7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOTVBO0xFRlRXQVJEUyBIQVJQT09OIFdJVEggQkFSQiBVUCBGUk9NIEJBUjtTbTswO09OOzs7OztOOzs7OzsKKzI5NUI7UklHSFRXQVJEUyBIQVJQT09OIFdJVEggQkFSQiBVUCBGUk9NIEJBUjtTbTswO09OOzs7OztOOzs7OzsKKzI5NUM7VVBXQVJEUyBIQVJQT09OIFdJVEggQkFSQiBSSUdIVCBGUk9NIEJBUjtTbTswO09OOzs7OztOOzs7OzsKKzI5NUQ7RE9XTldBUkRTIEhBUlBPT04gV0lUSCBCQVJCIFJJR0hUIEZST00gQkFSO1NtOzA7T047Ozs7O047Ozs7OworMjk1RTtMRUZUV0FSRFMgSEFSUE9PTiBXSVRIIEJBUkIgRE9XTiBGUk9NIEJBUjtTbTswO09OOzs7OztOOzs7OzsKKzI5NUY7UklHSFRXQVJEUyBIQVJQT09OIFdJVEggQkFSQiBET1dOIEZST00gQkFSO1NtOzA7T047Ozs7O047Ozs7OworMjk2MDtVUFdBUkRTIEhBUlBPT04gV0lUSCBCQVJCIExFRlQgRlJPTSBCQVI7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOTYxO0RPV05XQVJEUyBIQVJQT09OIFdJVEggQkFSQiBMRUZUIEZST00gQkFSO1NtOzA7T047Ozs7O047Ozs7OworMjk2MjtMRUZUV0FSRFMgSEFSUE9PTiBXSVRIIEJBUkIgVVAgQUJPVkUgTEVGVFdBUkRTIEhBUlBPT04gV0lUSCBCQVJCIERPV047U207MDtPTjs7Ozs7Tjs7Ozs7CisyOTYzO1VQV0FSRFMgSEFSUE9PTiBXSVRIIEJBUkIgTEVGVCBCRVNJREUgVVBXQVJEUyBIQVJQT09OIFdJVEggQkFSQiBSSUdIVDtTbTswO09OOzs7OztOOzs7OzsKKzI5NjQ7UklHSFRXQVJEUyBIQVJQT09OIFdJVEggQkFSQiBVUCBBQk9WRSBSSUdIVFdBUkRTIEhBUlBPT04gV0lUSCBCQVJCIERPV047U207MDtPTjs7Ozs7Tjs7Ozs7CisyOTY1O0RPV05XQVJEUyBIQVJQT09OIFdJVEggQkFSQiBMRUZUIEJFU0lERSBET1dOV0FSRFMgSEFSUE9PTiBXSVRIIEJBUkIgUklHSFQ7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOTY2O0xFRlRXQVJEUyBIQVJQT09OIFdJVEggQkFSQiBVUCBBQk9WRSBSSUdIVFdBUkRTIEhBUlBPT04gV0lUSCBCQVJCIFVQO1NtOzA7T047Ozs7O047Ozs7OworMjk2NztMRUZUV0FSRFMgSEFSUE9PTiBXSVRIIEJBUkIgRE9XTiBBQk9WRSBSSUdIVFdBUkRTIEhBUlBPT04gV0lUSCBCQVJCIERPV047U207MDtPTjs7Ozs7Tjs7Ozs7CisyOTY4O1JJR0hUV0FSRFMgSEFSUE9PTiBXSVRIIEJBUkIgVVAgQUJPVkUgTEVGVFdBUkRTIEhBUlBPT04gV0lUSCBCQVJCIFVQO1NtOzA7T047Ozs7O047Ozs7OworMjk2OTtSSUdIVFdBUkRTIEhBUlBPT04gV0lUSCBCQVJCIERPV04gQUJPVkUgTEVGVFdBUkRTIEhBUlBPT04gV0lUSCBCQVJCIERPV047U207MDtPTjs7Ozs7Tjs7Ozs7CisyOTZBO0xFRlRXQVJEUyBIQVJQT09OIFdJVEggQkFSQiBVUCBBQk9WRSBMT05HIERBU0g7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOTZCO0xFRlRXQVJEUyBIQVJQT09OIFdJVEggQkFSQiBET1dOIEJFTE9XIExPTkcgREFTSDtTbTswO09OOzs7OztOOzs7OzsKKzI5NkM7UklHSFRXQVJEUyBIQVJQT09OIFdJVEggQkFSQiBVUCBBQk9WRSBMT05HIERBU0g7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOTZEO1JJR0hUV0FSRFMgSEFSUE9PTiBXSVRIIEJBUkIgRE9XTiBCRUxPVyBMT05HIERBU0g7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOTZFO1VQV0FSRFMgSEFSUE9PTiBXSVRIIEJBUkIgTEVGVCBCRVNJREUgRE9XTldBUkRTIEhBUlBPT04gV0lUSCBCQVJCIFJJR0hUO1NtOzA7T047Ozs7O047Ozs7OworMjk2RjtET1dOV0FSRFMgSEFSUE9PTiBXSVRIIEJBUkIgTEVGVCBCRVNJREUgVVBXQVJEUyBIQVJQT09OIFdJVEggQkFSQiBSSUdIVDtTbTswO09OOzs7OztOOzs7OzsKKzI5NzA7UklHSFQgRE9VQkxFIEFSUk9XIFdJVEggUk9VTkRFRCBIRUFEO1NtOzA7T047Ozs7O047Ozs7OworMjk3MTtFUVVBTFMgU0lHTiBBQk9WRSBSSUdIVFdBUkRTIEFSUk9XO1NtOzA7T047Ozs7O047Ozs7OworMjk3MjtUSUxERSBPUEVSQVRPUiBBQk9WRSBSSUdIVFdBUkRTIEFSUk9XO1NtOzA7T047Ozs7O047Ozs7OworMjk3MztMRUZUV0FSRFMgQVJST1cgQUJPVkUgVElMREUgT1BFUkFUT1I7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOTc0O1JJR0hUV0FSRFMgQVJST1cgQUJPVkUgVElMREUgT1BFUkFUT1I7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOTc1O1JJR0hUV0FSRFMgQVJST1cgQUJPVkUgQUxNT1NUIEVRVUFMIFRPO1NtOzA7T047Ozs7O047Ozs7OworMjk3NjtMRVNTLVRIQU4gQUJPVkUgTEVGVFdBUkRTIEFSUk9XO1NtOzA7T047Ozs7O047Ozs7OworMjk3NztMRUZUV0FSRFMgQVJST1cgVEhST1VHSCBMRVNTLVRIQU47U207MDtPTjs7Ozs7Tjs7Ozs7CisyOTc4O0dSRUFURVItVEhBTiBBQk9WRSBSSUdIVFdBUkRTIEFSUk9XO1NtOzA7T047Ozs7O047Ozs7OworMjk3OTtTVUJTRVQgQUJPVkUgUklHSFRXQVJEUyBBUlJPVztTbTswO09OOzs7OztOOzs7OzsKKzI5N0E7TEVGVFdBUkRTIEFSUk9XIFRIUk9VR0ggU1VCU0VUO1NtOzA7T047Ozs7O047Ozs7OworMjk3QjtTVVBFUlNFVCBBQk9WRSBMRUZUV0FSRFMgQVJST1c7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOTdDO0xFRlQgRklTSCBUQUlMO1NtOzA7T047Ozs7O047Ozs7OworMjk3RDtSSUdIVCBGSVNIIFRBSUw7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOTdFO1VQIEZJU0ggVEFJTDtTbTswO09OOzs7OztOOzs7OzsKKzI5N0Y7RE9XTiBGSVNIIFRBSUw7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOTgwO1RSSVBMRSBWRVJUSUNBTCBCQVIgREVMSU1JVEVSO1NtOzA7T047Ozs7O047Ozs7OworMjk4MTtaIE5PVEFUSU9OIFNQT1Q7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOTgyO1ogTk9UQVRJT04gVFlQRSBDT0xPTjtTbTswO09OOzs7OztOOzs7OzsKKzI5ODM7TEVGVCBXSElURSBDVVJMWSBCUkFDS0VUO1BzOzA7T047Ozs7O1k7Ozs7OworMjk4NDtSSUdIVCBXSElURSBDVVJMWSBCUkFDS0VUO1BlOzA7T047Ozs7O1k7Ozs7OworMjk4NTtMRUZUIFdISVRFIFBBUkVOVEhFU0lTO1BzOzA7T047Ozs7O1k7Ozs7OworMjk4NjtSSUdIVCBXSElURSBQQVJFTlRIRVNJUztQZTswO09OOzs7OztZOzs7OzsKKzI5ODc7WiBOT1RBVElPTiBMRUZUIElNQUdFIEJSQUNLRVQ7UHM7MDtPTjs7Ozs7WTs7Ozs7CisyOTg4O1ogTk9UQVRJT04gUklHSFQgSU1BR0UgQlJBQ0tFVDtQZTswO09OOzs7OztZOzs7OzsKKzI5ODk7WiBOT1RBVElPTiBMRUZUIEJJTkRJTkcgQlJBQ0tFVDtQczswO09OOzs7OztZOzs7OzsKKzI5OEE7WiBOT1RBVElPTiBSSUdIVCBCSU5ESU5HIEJSQUNLRVQ7UGU7MDtPTjs7Ozs7WTs7Ozs7CisyOThCO0xFRlQgU1FVQVJFIEJSQUNLRVQgV0lUSCBVTkRFUkJBUjtQczswO09OOzs7OztZOzs7OzsKKzI5OEM7UklHSFQgU1FVQVJFIEJSQUNLRVQgV0lUSCBVTkRFUkJBUjtQZTswO09OOzs7OztZOzs7OzsKKzI5OEQ7TEVGVCBTUVVBUkUgQlJBQ0tFVCBXSVRIIFRJQ0sgSU4gVE9QIENPUk5FUjtQczswO09OOzs7OztZOzs7OzsKKzI5OEU7UklHSFQgU1FVQVJFIEJSQUNLRVQgV0lUSCBUSUNLIElOIEJPVFRPTSBDT1JORVI7UGU7MDtPTjs7Ozs7WTs7Ozs7CisyOThGO0xFRlQgU1FVQVJFIEJSQUNLRVQgV0lUSCBUSUNLIElOIEJPVFRPTSBDT1JORVI7UHM7MDtPTjs7Ozs7WTs7Ozs7CisyOTkwO1JJR0hUIFNRVUFSRSBCUkFDS0VUIFdJVEggVElDSyBJTiBUT1AgQ09STkVSO1BlOzA7T047Ozs7O1k7Ozs7OworMjk5MTtMRUZUIEFOR0xFIEJSQUNLRVQgV0lUSCBET1Q7UHM7MDtPTjs7Ozs7WTs7Ozs7CisyOTkyO1JJR0hUIEFOR0xFIEJSQUNLRVQgV0lUSCBET1Q7UGU7MDtPTjs7Ozs7WTs7Ozs7CisyOTkzO0xFRlQgQVJDIExFU1MtVEhBTiBCUkFDS0VUO1BzOzA7T047Ozs7O1k7Ozs7OworMjk5NDtSSUdIVCBBUkMgR1JFQVRFUi1USEFOIEJSQUNLRVQ7UGU7MDtPTjs7Ozs7WTs7Ozs7CisyOTk1O0RPVUJMRSBMRUZUIEFSQyBHUkVBVEVSLVRIQU4gQlJBQ0tFVDtQczswO09OOzs7OztZOzs7OzsKKzI5OTY7RE9VQkxFIFJJR0hUIEFSQyBMRVNTLVRIQU4gQlJBQ0tFVDtQZTswO09OOzs7OztZOzs7OzsKKzI5OTc7TEVGVCBCTEFDSyBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUO1BzOzA7T047Ozs7O1k7Ozs7OworMjk5ODtSSUdIVCBCTEFDSyBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUO1BlOzA7T047Ozs7O1k7Ozs7OworMjk5OTtET1RURUQgRkVOQ0U7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOTlBO1ZFUlRJQ0FMIFpJR1pBRyBMSU5FO1NtOzA7T047Ozs7O047Ozs7OworMjk5QjtNRUFTVVJFRCBBTkdMRSBPUEVOSU5HIExFRlQ7U207MDtPTjs7Ozs7WTs7Ozs7CisyOTlDO1JJR0hUIEFOR0xFIFZBUklBTlQgV0lUSCBTUVVBUkU7U207MDtPTjs7Ozs7WTs7Ozs7CisyOTlEO01FQVNVUkVEIFJJR0hUIEFOR0xFIFdJVEggRE9UO1NtOzA7T047Ozs7O1k7Ozs7OworMjk5RTtBTkdMRSBXSVRIIFMgSU5TSURFO1NtOzA7T047Ozs7O1k7Ozs7OworMjk5RjtBQ1VURSBBTkdMRTtTbTswO09OOzs7OztZOzs7OzsKKzI5QTA7U1BIRVJJQ0FMIEFOR0xFIE9QRU5JTkcgTEVGVDtTbTswO09OOzs7OztZOzs7OzsKKzI5QTE7U1BIRVJJQ0FMIEFOR0xFIE9QRU5JTkcgVVA7U207MDtPTjs7Ozs7WTs7Ozs7CisyOUEyO1RVUk5FRCBBTkdMRTtTbTswO09OOzs7OztZOzs7OzsKKzI5QTM7UkVWRVJTRUQgQU5HTEU7U207MDtPTjs7Ozs7WTs7Ozs7CisyOUE0O0FOR0xFIFdJVEggVU5ERVJCQVI7U207MDtPTjs7Ozs7WTs7Ozs7CisyOUE1O1JFVkVSU0VEIEFOR0xFIFdJVEggVU5ERVJCQVI7U207MDtPTjs7Ozs7WTs7Ozs7CisyOUE2O09CTElRVUUgQU5HTEUgT1BFTklORyBVUDtTbTswO09OOzs7OztZOzs7OzsKKzI5QTc7T0JMSVFVRSBBTkdMRSBPUEVOSU5HIERPV047U207MDtPTjs7Ozs7WTs7Ozs7CisyOUE4O01FQVNVUkVEIEFOR0xFIFdJVEggT1BFTiBBUk0gRU5ESU5HIElOIEFSUk9XIFBPSU5USU5HIFVQIEFORCBSSUdIVDtTbTswO09OOzs7OztZOzs7OzsKKzI5QTk7TUVBU1VSRUQgQU5HTEUgV0lUSCBPUEVOIEFSTSBFTkRJTkcgSU4gQVJST1cgUE9JTlRJTkcgVVAgQU5EIExFRlQ7U207MDtPTjs7Ozs7WTs7Ozs7CisyOUFBO01FQVNVUkVEIEFOR0xFIFdJVEggT1BFTiBBUk0gRU5ESU5HIElOIEFSUk9XIFBPSU5USU5HIERPV04gQU5EIFJJR0hUO1NtOzA7T047Ozs7O1k7Ozs7OworMjlBQjtNRUFTVVJFRCBBTkdMRSBXSVRIIE9QRU4gQVJNIEVORElORyBJTiBBUlJPVyBQT0lOVElORyBET1dOIEFORCBMRUZUO1NtOzA7T047Ozs7O1k7Ozs7OworMjlBQztNRUFTVVJFRCBBTkdMRSBXSVRIIE9QRU4gQVJNIEVORElORyBJTiBBUlJPVyBQT0lOVElORyBSSUdIVCBBTkQgVVA7U207MDtPTjs7Ozs7WTs7Ozs7CisyOUFEO01FQVNVUkVEIEFOR0xFIFdJVEggT1BFTiBBUk0gRU5ESU5HIElOIEFSUk9XIFBPSU5USU5HIExFRlQgQU5EIFVQO1NtOzA7T047Ozs7O1k7Ozs7OworMjlBRTtNRUFTVVJFRCBBTkdMRSBXSVRIIE9QRU4gQVJNIEVORElORyBJTiBBUlJPVyBQT0lOVElORyBSSUdIVCBBTkQgRE9XTjtTbTswO09OOzs7OztZOzs7OzsKKzI5QUY7TUVBU1VSRUQgQU5HTEUgV0lUSCBPUEVOIEFSTSBFTkRJTkcgSU4gQVJST1cgUE9JTlRJTkcgTEVGVCBBTkQgRE9XTjtTbTswO09OOzs7OztZOzs7OzsKKzI5QjA7UkVWRVJTRUQgRU1QVFkgU0VUO1NtOzA7T047Ozs7O047Ozs7OworMjlCMTtFTVBUWSBTRVQgV0lUSCBPVkVSQkFSO1NtOzA7T047Ozs7O047Ozs7OworMjlCMjtFTVBUWSBTRVQgV0lUSCBTTUFMTCBDSVJDTEUgQUJPVkU7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOUIzO0VNUFRZIFNFVCBXSVRIIFJJR0hUIEFSUk9XIEFCT1ZFO1NtOzA7T047Ozs7O047Ozs7OworMjlCNDtFTVBUWSBTRVQgV0lUSCBMRUZUIEFSUk9XIEFCT1ZFO1NtOzA7T047Ozs7O047Ozs7OworMjlCNTtDSVJDTEUgV0lUSCBIT1JJWk9OVEFMIEJBUjtTbTswO09OOzs7OztOOzs7OzsKKzI5QjY7Q0lSQ0xFRCBWRVJUSUNBTCBCQVI7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOUI3O0NJUkNMRUQgUEFSQUxMRUw7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOUI4O0NJUkNMRUQgUkVWRVJTRSBTT0xJRFVTO1NtOzA7T047Ozs7O1k7Ozs7OworMjlCOTtDSVJDTEVEIFBFUlBFTkRJQ1VMQVI7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOUJBO0NJUkNMRSBESVZJREVEIEJZIEhPUklaT05UQUwgQkFSIEFORCBUT1AgSEFMRiBESVZJREVEIEJZIFZFUlRJQ0FMIEJBUjtTbTswO09OOzs7OztOOzs7OzsKKzI5QkI7Q0lSQ0xFIFdJVEggU1VQRVJJTVBPU0VEIFg7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOUJDO0NJUkNMRUQgQU5USUNMT0NLV0lTRS1ST1RBVEVEIERJVklTSU9OIFNJR047U207MDtPTjs7Ozs7Tjs7Ozs7CisyOUJEO1VQIEFSUk9XIFRIUk9VR0ggQ0lSQ0xFO1NtOzA7T047Ozs7O047Ozs7OworMjlCRTtDSVJDTEVEIFdISVRFIEJVTExFVDtTbTswO09OOzs7OztOOzs7OzsKKzI5QkY7Q0lSQ0xFRCBCVUxMRVQ7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOUMwO0NJUkNMRUQgTEVTUy1USEFOO1NtOzA7T047Ozs7O1k7Ozs7OworMjlDMTtDSVJDTEVEIEdSRUFURVItVEhBTjtTbTswO09OOzs7OztZOzs7OzsKKzI5QzI7Q0lSQ0xFIFdJVEggU01BTEwgQ0lSQ0xFIFRPIFRIRSBSSUdIVDtTbTswO09OOzs7OztZOzs7OzsKKzI5QzM7Q0lSQ0xFIFdJVEggVFdPIEhPUklaT05UQUwgU1RST0tFUyBUTyBUSEUgUklHSFQ7U207MDtPTjs7Ozs7WTs7Ozs7CisyOUM0O1NRVUFSRUQgUklTSU5HIERJQUdPTkFMIFNMQVNIO1NtOzA7T047Ozs7O1k7Ozs7OworMjlDNTtTUVVBUkVEIEZBTExJTkcgRElBR09OQUwgU0xBU0g7U207MDtPTjs7Ozs7WTs7Ozs7CisyOUM2O1NRVUFSRUQgQVNURVJJU0s7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOUM3O1NRVUFSRUQgU01BTEwgQ0lSQ0xFO1NtOzA7T047Ozs7O047Ozs7OworMjlDODtTUVVBUkVEIFNRVUFSRTtTbTswO09OOzs7OztOOzs7OzsKKzI5Qzk7VFdPIEpPSU5FRCBTUVVBUkVTO1NtOzA7T047Ozs7O1k7Ozs7OworMjlDQTtUUklBTkdMRSBXSVRIIERPVCBBQk9WRTtTbTswO09OOzs7OztOOzs7OzsKKzI5Q0I7VFJJQU5HTEUgV0lUSCBVTkRFUkJBUjtTbTswO09OOzs7OztOOzs7OzsKKzI5Q0M7UyBJTiBUUklBTkdMRTtTbTswO09OOzs7OztOOzs7OzsKKzI5Q0Q7VFJJQU5HTEUgV0lUSCBTRVJJRlMgQVQgQk9UVE9NO1NtOzA7T047Ozs7O047Ozs7OworMjlDRTtSSUdIVCBUUklBTkdMRSBBQk9WRSBMRUZUIFRSSUFOR0xFO1NtOzA7T047Ozs7O1k7Ozs7OworMjlDRjtMRUZUIFRSSUFOR0xFIEJFU0lERSBWRVJUSUNBTCBCQVI7U207MDtPTjs7Ozs7WTs7Ozs7CisyOUQwO1ZFUlRJQ0FMIEJBUiBCRVNJREUgUklHSFQgVFJJQU5HTEU7U207MDtPTjs7Ozs7WTs7Ozs7CisyOUQxO0JPV1RJRSBXSVRIIExFRlQgSEFMRiBCTEFDSztTbTswO09OOzs7OztZOzs7OzsKKzI5RDI7Qk9XVElFIFdJVEggUklHSFQgSEFMRiBCTEFDSztTbTswO09OOzs7OztZOzs7OzsKKzI5RDM7QkxBQ0sgQk9XVElFO1NtOzA7T047Ozs7O047Ozs7OworMjlENDtUSU1FUyBXSVRIIExFRlQgSEFMRiBCTEFDSztTbTswO09OOzs7OztZOzs7OzsKKzI5RDU7VElNRVMgV0lUSCBSSUdIVCBIQUxGIEJMQUNLO1NtOzA7T047Ozs7O1k7Ozs7OworMjlENjtXSElURSBIT1VSR0xBU1M7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOUQ3O0JMQUNLIEhPVVJHTEFTUztTbTswO09OOzs7OztOOzs7OzsKKzI5RDg7TEVGVCBXSUdHTFkgRkVOQ0U7UHM7MDtPTjs7Ozs7WTs7Ozs7CisyOUQ5O1JJR0hUIFdJR0dMWSBGRU5DRTtQZTswO09OOzs7OztZOzs7OzsKKzI5REE7TEVGVCBET1VCTEUgV0lHR0xZIEZFTkNFO1BzOzA7T047Ozs7O1k7Ozs7OworMjlEQjtSSUdIVCBET1VCTEUgV0lHR0xZIEZFTkNFO1BlOzA7T047Ozs7O1k7Ozs7OworMjlEQztJTkNPTVBMRVRFIElORklOSVRZO1NtOzA7T047Ozs7O1k7Ozs7OworMjlERDtUSUUgT1ZFUiBJTkZJTklUWTtTbTswO09OOzs7OztOOzs7OzsKKzI5REU7SU5GSU5JVFkgTkVHQVRFRCBXSVRIIFZFUlRJQ0FMIEJBUjtTbTswO09OOzs7OztOOzs7OzsKKzI5REY7RE9VQkxFLUVOREVEIE1VTFRJTUFQO1NtOzA7T047Ozs7O047Ozs7OworMjlFMDtTUVVBUkUgV0lUSCBDT05UT1VSRUQgT1VUTElORTtTbTswO09OOzs7OztOOzs7OzsKKzI5RTE7SU5DUkVBU0VTIEFTO1NtOzA7T047Ozs7O1k7Ozs7OworMjlFMjtTSFVGRkxFIFBST0RVQ1Q7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOUUzO0VRVUFMUyBTSUdOIEFORCBTTEFOVEVEIFBBUkFMTEVMO1NtOzA7T047Ozs7O1k7Ozs7OworMjlFNDtFUVVBTFMgU0lHTiBBTkQgU0xBTlRFRCBQQVJBTExFTCBXSVRIIFRJTERFIEFCT1ZFO1NtOzA7T047Ozs7O1k7Ozs7OworMjlFNTtJREVOVElDQUwgVE8gQU5EIFNMQU5URUQgUEFSQUxMRUw7U207MDtPTjs7Ozs7WTs7Ozs7CisyOUU2O0dMRUlDSCBTVEFSSztTbTswO09OOzs7OztOOzs7OzsKKzI5RTc7VEhFUk1PRFlOQU1JQztTbTswO09OOzs7OztOOzs7OzsKKzI5RTg7RE9XTi1QT0lOVElORyBUUklBTkdMRSBXSVRIIExFRlQgSEFMRiBCTEFDSztTbTswO09OOzs7OztZOzs7OzsKKzI5RTk7RE9XTi1QT0lOVElORyBUUklBTkdMRSBXSVRIIFJJR0hUIEhBTEYgQkxBQ0s7U207MDtPTjs7Ozs7WTs7Ozs7CisyOUVBO0JMQUNLIERJQU1PTkQgV0lUSCBET1dOIEFSUk9XO1NtOzA7T047Ozs7O047Ozs7OworMjlFQjtCTEFDSyBMT1pFTkdFO1NtOzA7T047Ozs7O047Ozs7OworMjlFQztXSElURSBDSVJDTEUgV0lUSCBET1dOIEFSUk9XO1NtOzA7T047Ozs7O047Ozs7OworMjlFRDtCTEFDSyBDSVJDTEUgV0lUSCBET1dOIEFSUk9XO1NtOzA7T047Ozs7O047Ozs7OworMjlFRTtFUlJPUi1CQVJSRUQgV0hJVEUgU1FVQVJFO1NtOzA7T047Ozs7O047Ozs7OworMjlFRjtFUlJPUi1CQVJSRUQgQkxBQ0sgU1FVQVJFO1NtOzA7T047Ozs7O047Ozs7OworMjlGMDtFUlJPUi1CQVJSRUQgV0hJVEUgRElBTU9ORDtTbTswO09OOzs7OztOOzs7OzsKKzI5RjE7RVJST1ItQkFSUkVEIEJMQUNLIERJQU1PTkQ7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOUYyO0VSUk9SLUJBUlJFRCBXSElURSBDSVJDTEU7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOUYzO0VSUk9SLUJBUlJFRCBCTEFDSyBDSVJDTEU7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOUY0O1JVTEUtREVMQVlFRDtTbTswO09OOzs7OztZOzs7OzsKKzI5RjU7UkVWRVJTRSBTT0xJRFVTIE9QRVJBVE9SO1NtOzA7T047Ozs7O1k7Ozs7OworMjlGNjtTT0xJRFVTIFdJVEggT1ZFUkJBUjtTbTswO09OOzs7OztZOzs7OzsKKzI5Rjc7UkVWRVJTRSBTT0xJRFVTIFdJVEggSE9SSVpPTlRBTCBTVFJPS0U7U207MDtPTjs7Ozs7WTs7Ozs7CisyOUY4O0JJRyBTT0xJRFVTO1NtOzA7T047Ozs7O1k7Ozs7OworMjlGOTtCSUcgUkVWRVJTRSBTT0xJRFVTO1NtOzA7T047Ozs7O1k7Ozs7OworMjlGQTtET1VCTEUgUExVUztTbTswO09OOzs7OztOOzs7OzsKKzI5RkI7VFJJUExFIFBMVVM7U207MDtPTjs7Ozs7Tjs7Ozs7CisyOUZDO0xFRlQtUE9JTlRJTkcgQ1VSVkVEIEFOR0xFIEJSQUNLRVQ7UHM7MDtPTjs7Ozs7WTs7Ozs7CisyOUZEO1JJR0hULVBPSU5USU5HIENVUlZFRCBBTkdMRSBCUkFDS0VUO1BlOzA7T047Ozs7O1k7Ozs7OworMjlGRTtUSU5ZO1NtOzA7T047Ozs7O047Ozs7OworMjlGRjtNSU5ZO1NtOzA7T047Ozs7O047Ozs7OworMkEwMDtOLUFSWSBDSVJDTEVEIERPVCBPUEVSQVRPUjtTbTswO09OOzs7OztOOzs7OzsKKzJBMDE7Ti1BUlkgQ0lSQ0xFRCBQTFVTIE9QRVJBVE9SO1NtOzA7T047Ozs7O047Ozs7OworMkEwMjtOLUFSWSBDSVJDTEVEIFRJTUVTIE9QRVJBVE9SO1NtOzA7T047Ozs7O047Ozs7OworMkEwMztOLUFSWSBVTklPTiBPUEVSQVRPUiBXSVRIIERPVDtTbTswO09OOzs7OztOOzs7OzsKKzJBMDQ7Ti1BUlkgVU5JT04gT1BFUkFUT1IgV0lUSCBQTFVTO1NtOzA7T047Ozs7O047Ozs7OworMkEwNTtOLUFSWSBTUVVBUkUgSU5URVJTRUNUSU9OIE9QRVJBVE9SO1NtOzA7T047Ozs7O047Ozs7OworMkEwNjtOLUFSWSBTUVVBUkUgVU5JT04gT1BFUkFUT1I7U207MDtPTjs7Ozs7Tjs7Ozs7CisyQTA3O1RXTyBMT0dJQ0FMIEFORCBPUEVSQVRPUjtTbTswO09OOzs7OztOOzs7OzsKKzJBMDg7VFdPIExPR0lDQUwgT1IgT1BFUkFUT1I7U207MDtPTjs7Ozs7Tjs7Ozs7CisyQTA5O04tQVJZIFRJTUVTIE9QRVJBVE9SO1NtOzA7T047Ozs7O047Ozs7OworMkEwQTtNT0RVTE8gVFdPIFNVTTtTbTswO09OOzs7OztZOzs7OzsKKzJBMEI7U1VNTUFUSU9OIFdJVEggSU5URUdSQUw7U207MDtPTjs7Ozs7WTs7Ozs7CisyQTBDO1FVQURSVVBMRSBJTlRFR1JBTCBPUEVSQVRPUjtTbTswO09OOzxjb21wYXQ+IDIyMkIgMjIyQiAyMjJCIDIyMkI7Ozs7WTs7Ozs7CisyQTBEO0ZJTklURSBQQVJUIElOVEVHUkFMO1NtOzA7T047Ozs7O1k7Ozs7OworMkEwRTtJTlRFR1JBTCBXSVRIIERPVUJMRSBTVFJPS0U7U207MDtPTjs7Ozs7WTs7Ozs7CisyQTBGO0lOVEVHUkFMIEFWRVJBR0UgV0lUSCBTTEFTSDtTbTswO09OOzs7OztZOzs7OzsKKzJBMTA7Q0lSQ1VMQVRJT04gRlVOQ1RJT047U207MDtPTjs7Ozs7WTs7Ozs7CisyQTExO0FOVElDTE9DS1dJU0UgSU5URUdSQVRJT047U207MDtPTjs7Ozs7WTs7Ozs7CisyQTEyO0xJTkUgSU5URUdSQVRJT04gV0lUSCBSRUNUQU5HVUxBUiBQQVRIIEFST1VORCBQT0xFO1NtOzA7T047Ozs7O1k7Ozs7OworMkExMztMSU5FIElOVEVHUkFUSU9OIFdJVEggU0VNSUNJUkNVTEFSIFBBVEggQVJPVU5EIFBPTEU7U207MDtPTjs7Ozs7WTs7Ozs7CisyQTE0O0xJTkUgSU5URUdSQVRJT04gTk9UIElOQ0xVRElORyBUSEUgUE9MRTtTbTswO09OOzs7OztZOzs7OzsKKzJBMTU7SU5URUdSQUwgQVJPVU5EIEEgUE9JTlQgT1BFUkFUT1I7U207MDtPTjs7Ozs7WTs7Ozs7CisyQTE2O1FVQVRFUk5JT04gSU5URUdSQUwgT1BFUkFUT1I7U207MDtPTjs7Ozs7WTs7Ozs7CisyQTE3O0lOVEVHUkFMIFdJVEggTEVGVFdBUkRTIEFSUk9XIFdJVEggSE9PSztTbTswO09OOzs7OztZOzs7OzsKKzJBMTg7SU5URUdSQUwgV0lUSCBUSU1FUyBTSUdOO1NtOzA7T047Ozs7O1k7Ozs7OworMkExOTtJTlRFR1JBTCBXSVRIIElOVEVSU0VDVElPTjtTbTswO09OOzs7OztZOzs7OzsKKzJBMUE7SU5URUdSQUwgV0lUSCBVTklPTjtTbTswO09OOzs7OztZOzs7OzsKKzJBMUI7SU5URUdSQUwgV0lUSCBPVkVSQkFSO1NtOzA7T047Ozs7O1k7Ozs7OworMkExQztJTlRFR1JBTCBXSVRIIFVOREVSQkFSO1NtOzA7T047Ozs7O1k7Ozs7OworMkExRDtKT0lOO1NtOzA7T047Ozs7O047Ozs7OworMkExRTtMQVJHRSBMRUZUIFRSSUFOR0xFIE9QRVJBVE9SO1NtOzA7T047Ozs7O1k7Ozs7OworMkExRjtaIE5PVEFUSU9OIFNDSEVNQSBDT01QT1NJVElPTjtTbTswO09OOzs7OztZOzs7OzsKKzJBMjA7WiBOT1RBVElPTiBTQ0hFTUEgUElQSU5HO1NtOzA7T047Ozs7O1k7Ozs7OworMkEyMTtaIE5PVEFUSU9OIFNDSEVNQSBQUk9KRUNUSU9OO1NtOzA7T047Ozs7O1k7Ozs7OworMkEyMjtQTFVTIFNJR04gV0lUSCBTTUFMTCBDSVJDTEUgQUJPVkU7U207MDtPTjs7Ozs7Tjs7Ozs7CisyQTIzO1BMVVMgU0lHTiBXSVRIIENJUkNVTUZMRVggQUNDRU5UIEFCT1ZFO1NtOzA7T047Ozs7O047Ozs7OworMkEyNDtQTFVTIFNJR04gV0lUSCBUSUxERSBBQk9WRTtTbTswO09OOzs7OztZOzs7OzsKKzJBMjU7UExVUyBTSUdOIFdJVEggRE9UIEJFTE9XO1NtOzA7T047Ozs7O047Ozs7OworMkEyNjtQTFVTIFNJR04gV0lUSCBUSUxERSBCRUxPVztTbTswO09OOzs7OztZOzs7OzsKKzJBMjc7UExVUyBTSUdOIFdJVEggU1VCU0NSSVBUIFRXTztTbTswO09OOzs7OztOOzs7OzsKKzJBMjg7UExVUyBTSUdOIFdJVEggQkxBQ0sgVFJJQU5HTEU7U207MDtPTjs7Ozs7Tjs7Ozs7CisyQTI5O01JTlVTIFNJR04gV0lUSCBDT01NQSBBQk9WRTtTbTswO09OOzs7OztZOzs7OzsKKzJBMkE7TUlOVVMgU0lHTiBXSVRIIERPVCBCRUxPVztTbTswO09OOzs7OztOOzs7OzsKKzJBMkI7TUlOVVMgU0lHTiBXSVRIIEZBTExJTkcgRE9UUztTbTswO09OOzs7OztZOzs7OzsKKzJBMkM7TUlOVVMgU0lHTiBXSVRIIFJJU0lORyBET1RTO1NtOzA7T047Ozs7O1k7Ozs7OworMkEyRDtQTFVTIFNJR04gSU4gTEVGVCBIQUxGIENJUkNMRTtTbTswO09OOzs7OztZOzs7OzsKKzJBMkU7UExVUyBTSUdOIElOIFJJR0hUIEhBTEYgQ0lSQ0xFO1NtOzA7T047Ozs7O1k7Ozs7OworMkEyRjtWRUNUT1IgT1IgQ1JPU1MgUFJPRFVDVDtTbTswO09OOzs7OztOOzs7OzsKKzJBMzA7TVVMVElQTElDQVRJT04gU0lHTiBXSVRIIERPVCBBQk9WRTtTbTswO09OOzs7OztOOzs7OzsKKzJBMzE7TVVMVElQTElDQVRJT04gU0lHTiBXSVRIIFVOREVSQkFSO1NtOzA7T047Ozs7O047Ozs7OworMkEzMjtTRU1JRElSRUNUIFBST0RVQ1QgV0lUSCBCT1RUT00gQ0xPU0VEO1NtOzA7T047Ozs7O047Ozs7OworMkEzMztTTUFTSCBQUk9EVUNUO1NtOzA7T047Ozs7O047Ozs7OworMkEzNDtNVUxUSVBMSUNBVElPTiBTSUdOIElOIExFRlQgSEFMRiBDSVJDTEU7U207MDtPTjs7Ozs7WTs7Ozs7CisyQTM1O01VTFRJUExJQ0FUSU9OIFNJR04gSU4gUklHSFQgSEFMRiBDSVJDTEU7U207MDtPTjs7Ozs7WTs7Ozs7CisyQTM2O0NJUkNMRUQgTVVMVElQTElDQVRJT04gU0lHTiBXSVRIIENJUkNVTUZMRVggQUNDRU5UO1NtOzA7T047Ozs7O047Ozs7OworMkEzNztNVUxUSVBMSUNBVElPTiBTSUdOIElOIERPVUJMRSBDSVJDTEU7U207MDtPTjs7Ozs7Tjs7Ozs7CisyQTM4O0NJUkNMRUQgRElWSVNJT04gU0lHTjtTbTswO09OOzs7OztOOzs7OzsKKzJBMzk7UExVUyBTSUdOIElOIFRSSUFOR0xFO1NtOzA7T047Ozs7O047Ozs7OworMkEzQTtNSU5VUyBTSUdOIElOIFRSSUFOR0xFO1NtOzA7T047Ozs7O047Ozs7OworMkEzQjtNVUxUSVBMSUNBVElPTiBTSUdOIElOIFRSSUFOR0xFO1NtOzA7T047Ozs7O047Ozs7OworMkEzQztJTlRFUklPUiBQUk9EVUNUO1NtOzA7T047Ozs7O1k7Ozs7OworMkEzRDtSSUdIVEhBTkQgSU5URVJJT1IgUFJPRFVDVDtTbTswO09OOzs7OztZOzs7OzsKKzJBM0U7WiBOT1RBVElPTiBSRUxBVElPTkFMIENPTVBPU0lUSU9OO1NtOzA7T047Ozs7O1k7Ozs7OworMkEzRjtBTUFMR0FNQVRJT04gT1IgQ09QUk9EVUNUO1NtOzA7T047Ozs7O047Ozs7OworMkE0MDtJTlRFUlNFQ1RJT04gV0lUSCBET1Q7U207MDtPTjs7Ozs7Tjs7Ozs7CisyQTQxO1VOSU9OIFdJVEggTUlOVVMgU0lHTjtTbTswO09OOzs7OztOOzs7OzsKKzJBNDI7VU5JT04gV0lUSCBPVkVSQkFSO1NtOzA7T047Ozs7O047Ozs7OworMkE0MztJTlRFUlNFQ1RJT04gV0lUSCBPVkVSQkFSO1NtOzA7T047Ozs7O047Ozs7OworMkE0NDtJTlRFUlNFQ1RJT04gV0lUSCBMT0dJQ0FMIEFORDtTbTswO09OOzs7OztOOzs7OzsKKzJBNDU7VU5JT04gV0lUSCBMT0dJQ0FMIE9SO1NtOzA7T047Ozs7O047Ozs7OworMkE0NjtVTklPTiBBQk9WRSBJTlRFUlNFQ1RJT047U207MDtPTjs7Ozs7Tjs7Ozs7CisyQTQ3O0lOVEVSU0VDVElPTiBBQk9WRSBVTklPTjtTbTswO09OOzs7OztOOzs7OzsKKzJBNDg7VU5JT04gQUJPVkUgQkFSIEFCT1ZFIElOVEVSU0VDVElPTjtTbTswO09OOzs7OztOOzs7OzsKKzJBNDk7SU5URVJTRUNUSU9OIEFCT1ZFIEJBUiBBQk9WRSBVTklPTjtTbTswO09OOzs7OztOOzs7OzsKKzJBNEE7VU5JT04gQkVTSURFIEFORCBKT0lORUQgV0lUSCBVTklPTjtTbTswO09OOzs7OztOOzs7OzsKKzJBNEI7SU5URVJTRUNUSU9OIEJFU0lERSBBTkQgSk9JTkVEIFdJVEggSU5URVJTRUNUSU9OO1NtOzA7T047Ozs7O047Ozs7OworMkE0QztDTE9TRUQgVU5JT04gV0lUSCBTRVJJRlM7U207MDtPTjs7Ozs7Tjs7Ozs7CisyQTREO0NMT1NFRCBJTlRFUlNFQ1RJT04gV0lUSCBTRVJJRlM7U207MDtPTjs7Ozs7Tjs7Ozs7CisyQTRFO0RPVUJMRSBTUVVBUkUgSU5URVJTRUNUSU9OO1NtOzA7T047Ozs7O047Ozs7OworMkE0RjtET1VCTEUgU1FVQVJFIFVOSU9OO1NtOzA7T047Ozs7O047Ozs7OworMkE1MDtDTE9TRUQgVU5JT04gV0lUSCBTRVJJRlMgQU5EIFNNQVNIIFBST0RVQ1Q7U207MDtPTjs7Ozs7Tjs7Ozs7CisyQTUxO0xPR0lDQUwgQU5EIFdJVEggRE9UIEFCT1ZFO1NtOzA7T047Ozs7O047Ozs7OworMkE1MjtMT0dJQ0FMIE9SIFdJVEggRE9UIEFCT1ZFO1NtOzA7T047Ozs7O047Ozs7OworMkE1MztET1VCTEUgTE9HSUNBTCBBTkQ7U207MDtPTjs7Ozs7Tjs7Ozs7CisyQTU0O0RPVUJMRSBMT0dJQ0FMIE9SO1NtOzA7T047Ozs7O047Ozs7OworMkE1NTtUV08gSU5URVJTRUNUSU5HIExPR0lDQUwgQU5EO1NtOzA7T047Ozs7O047Ozs7OworMkE1NjtUV08gSU5URVJTRUNUSU5HIExPR0lDQUwgT1I7U207MDtPTjs7Ozs7Tjs7Ozs7CisyQTU3O1NMT1BJTkcgTEFSR0UgT1I7U207MDtPTjs7Ozs7WTs7Ozs7CisyQTU4O1NMT1BJTkcgTEFSR0UgQU5EO1NtOzA7T047Ozs7O1k7Ozs7OworMkE1OTtMT0dJQ0FMIE9SIE9WRVJMQVBQSU5HIExPR0lDQUwgQU5EO1NtOzA7T047Ozs7O047Ozs7OworMkE1QTtMT0dJQ0FMIEFORCBXSVRIIE1JRERMRSBTVEVNO1NtOzA7T047Ozs7O047Ozs7OworMkE1QjtMT0dJQ0FMIE9SIFdJVEggTUlERExFIFNURU07U207MDtPTjs7Ozs7Tjs7Ozs7CisyQTVDO0xPR0lDQUwgQU5EIFdJVEggSE9SSVpPTlRBTCBEQVNIO1NtOzA7T047Ozs7O047Ozs7OworMkE1RDtMT0dJQ0FMIE9SIFdJVEggSE9SSVpPTlRBTCBEQVNIO1NtOzA7T047Ozs7O047Ozs7OworMkE1RTtMT0dJQ0FMIEFORCBXSVRIIERPVUJMRSBPVkVSQkFSO1NtOzA7T047Ozs7O047Ozs7OworMkE1RjtMT0dJQ0FMIEFORCBXSVRIIFVOREVSQkFSO1NtOzA7T047Ozs7O047Ozs7OworMkE2MDtMT0dJQ0FMIEFORCBXSVRIIERPVUJMRSBVTkRFUkJBUjtTbTswO09OOzs7OztOOzs7OzsKKzJBNjE7U01BTEwgVkVFIFdJVEggVU5ERVJCQVI7U207MDtPTjs7Ozs7Tjs7Ozs7CisyQTYyO0xPR0lDQUwgT1IgV0lUSCBET1VCTEUgT1ZFUkJBUjtTbTswO09OOzs7OztOOzs7OzsKKzJBNjM7TE9HSUNBTCBPUiBXSVRIIERPVUJMRSBVTkRFUkJBUjtTbTswO09OOzs7OztOOzs7OzsKKzJBNjQ7WiBOT1RBVElPTiBET01BSU4gQU5USVJFU1RSSUNUSU9OO1NtOzA7T047Ozs7O1k7Ozs7OworMkE2NTtaIE5PVEFUSU9OIFJBTkdFIEFOVElSRVNUUklDVElPTjtTbTswO09OOzs7OztZOzs7OzsKKzJBNjY7RVFVQUxTIFNJR04gV0lUSCBET1QgQkVMT1c7U207MDtPTjs7Ozs7Tjs7Ozs7CisyQTY3O0lERU5USUNBTCBXSVRIIERPVCBBQk9WRTtTbTswO09OOzs7OztOOzs7OzsKKzJBNjg7VFJJUExFIEhPUklaT05UQUwgQkFSIFdJVEggRE9VQkxFIFZFUlRJQ0FMIFNUUk9LRTtTbTswO09OOzs7OztOOzs7OzsKKzJBNjk7VFJJUExFIEhPUklaT05UQUwgQkFSIFdJVEggVFJJUExFIFZFUlRJQ0FMIFNUUk9LRTtTbTswO09OOzs7OztOOzs7OzsKKzJBNkE7VElMREUgT1BFUkFUT1IgV0lUSCBET1QgQUJPVkU7U207MDtPTjs7Ozs7WTs7Ozs7CisyQTZCO1RJTERFIE9QRVJBVE9SIFdJVEggUklTSU5HIERPVFM7U207MDtPTjs7Ozs7WTs7Ozs7CisyQTZDO1NJTUlMQVIgTUlOVVMgU0lNSUxBUjtTbTswO09OOzs7OztZOzs7OzsKKzJBNkQ7Q09OR1JVRU5UIFdJVEggRE9UIEFCT1ZFO1NtOzA7T047Ozs7O1k7Ozs7OworMkE2RTtFUVVBTFMgV0lUSCBBU1RFUklTSztTbTswO09OOzs7OztOOzs7OzsKKzJBNkY7QUxNT1NUIEVRVUFMIFRPIFdJVEggQ0lSQ1VNRkxFWCBBQ0NFTlQ7U207MDtPTjs7Ozs7WTs7Ozs7CisyQTcwO0FQUFJPWElNQVRFTFkgRVFVQUwgT1IgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyQTcxO0VRVUFMUyBTSUdOIEFCT1ZFIFBMVVMgU0lHTjtTbTswO09OOzs7OztOOzs7OzsKKzJBNzI7UExVUyBTSUdOIEFCT1ZFIEVRVUFMUyBTSUdOO1NtOzA7T047Ozs7O047Ozs7OworMkE3MztFUVVBTFMgU0lHTiBBQk9WRSBUSUxERSBPUEVSQVRPUjtTbTswO09OOzs7OztZOzs7OzsKKzJBNzQ7RE9VQkxFIENPTE9OIEVRVUFMO1NtOzA7T047PGNvbXBhdD4gMDAzQSAwMDNBIDAwM0Q7Ozs7WTs7Ozs7CisyQTc1O1RXTyBDT05TRUNVVElWRSBFUVVBTFMgU0lHTlM7U207MDtPTjs8Y29tcGF0PiAwMDNEIDAwM0Q7Ozs7Tjs7Ozs7CisyQTc2O1RIUkVFIENPTlNFQ1VUSVZFIEVRVUFMUyBTSUdOUztTbTswO09OOzxjb21wYXQ+IDAwM0QgMDAzRCAwMDNEOzs7O047Ozs7OworMkE3NztFUVVBTFMgU0lHTiBXSVRIIFRXTyBET1RTIEFCT1ZFIEFORCBUV08gRE9UUyBCRUxPVztTbTswO09OOzs7OztOOzs7OzsKKzJBNzg7RVFVSVZBTEVOVCBXSVRIIEZPVVIgRE9UUyBBQk9WRTtTbTswO09OOzs7OztOOzs7OzsKKzJBNzk7TEVTUy1USEFOIFdJVEggQ0lSQ0xFIElOU0lERTtTbTswO09OOzs7OztZOzs7OzsKKzJBN0E7R1JFQVRFUi1USEFOIFdJVEggQ0lSQ0xFIElOU0lERTtTbTswO09OOzs7OztZOzs7OzsKKzJBN0I7TEVTUy1USEFOIFdJVEggUVVFU1RJT04gTUFSSyBBQk9WRTtTbTswO09OOzs7OztZOzs7OzsKKzJBN0M7R1JFQVRFUi1USEFOIFdJVEggUVVFU1RJT04gTUFSSyBBQk9WRTtTbTswO09OOzs7OztZOzs7OzsKKzJBN0Q7TEVTUy1USEFOIE9SIFNMQU5URUQgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyQTdFO0dSRUFURVItVEhBTiBPUiBTTEFOVEVEIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMkE3RjtMRVNTLVRIQU4gT1IgU0xBTlRFRCBFUVVBTCBUTyBXSVRIIERPVCBJTlNJREU7U207MDtPTjs7Ozs7WTs7Ozs7CisyQTgwO0dSRUFURVItVEhBTiBPUiBTTEFOVEVEIEVRVUFMIFRPIFdJVEggRE9UIElOU0lERTtTbTswO09OOzs7OztZOzs7OzsKKzJBODE7TEVTUy1USEFOIE9SIFNMQU5URUQgRVFVQUwgVE8gV0lUSCBET1QgQUJPVkU7U207MDtPTjs7Ozs7WTs7Ozs7CisyQTgyO0dSRUFURVItVEhBTiBPUiBTTEFOVEVEIEVRVUFMIFRPIFdJVEggRE9UIEFCT1ZFO1NtOzA7T047Ozs7O1k7Ozs7OworMkE4MztMRVNTLVRIQU4gT1IgU0xBTlRFRCBFUVVBTCBUTyBXSVRIIERPVCBBQk9WRSBSSUdIVDtTbTswO09OOzs7OztZOzs7OzsKKzJBODQ7R1JFQVRFUi1USEFOIE9SIFNMQU5URUQgRVFVQUwgVE8gV0lUSCBET1QgQUJPVkUgTEVGVDtTbTswO09OOzs7OztZOzs7OzsKKzJBODU7TEVTUy1USEFOIE9SIEFQUFJPWElNQVRFO1NtOzA7T047Ozs7O1k7Ozs7OworMkE4NjtHUkVBVEVSLVRIQU4gT1IgQVBQUk9YSU1BVEU7U207MDtPTjs7Ozs7WTs7Ozs7CisyQTg3O0xFU1MtVEhBTiBBTkQgU0lOR0xFLUxJTkUgTk9UIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMkE4ODtHUkVBVEVSLVRIQU4gQU5EIFNJTkdMRS1MSU5FIE5PVCBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzJBODk7TEVTUy1USEFOIEFORCBOT1QgQVBQUk9YSU1BVEU7U207MDtPTjs7Ozs7WTs7Ozs7CisyQThBO0dSRUFURVItVEhBTiBBTkQgTk9UIEFQUFJPWElNQVRFO1NtOzA7T047Ozs7O1k7Ozs7OworMkE4QjtMRVNTLVRIQU4gQUJPVkUgRE9VQkxFLUxJTkUgRVFVQUwgQUJPVkUgR1JFQVRFUi1USEFOO1NtOzA7T047Ozs7O1k7Ozs7OworMkE4QztHUkVBVEVSLVRIQU4gQUJPVkUgRE9VQkxFLUxJTkUgRVFVQUwgQUJPVkUgTEVTUy1USEFOO1NtOzA7T047Ozs7O1k7Ozs7OworMkE4RDtMRVNTLVRIQU4gQUJPVkUgU0lNSUxBUiBPUiBFUVVBTDtTbTswO09OOzs7OztZOzs7OzsKKzJBOEU7R1JFQVRFUi1USEFOIEFCT1ZFIFNJTUlMQVIgT1IgRVFVQUw7U207MDtPTjs7Ozs7WTs7Ozs7CisyQThGO0xFU1MtVEhBTiBBQk9WRSBTSU1JTEFSIEFCT1ZFIEdSRUFURVItVEhBTjtTbTswO09OOzs7OztZOzs7OzsKKzJBOTA7R1JFQVRFUi1USEFOIEFCT1ZFIFNJTUlMQVIgQUJPVkUgTEVTUy1USEFOO1NtOzA7T047Ozs7O1k7Ozs7OworMkE5MTtMRVNTLVRIQU4gQUJPVkUgR1JFQVRFUi1USEFOIEFCT1ZFIERPVUJMRS1MSU5FIEVRVUFMO1NtOzA7T047Ozs7O1k7Ozs7OworMkE5MjtHUkVBVEVSLVRIQU4gQUJPVkUgTEVTUy1USEFOIEFCT1ZFIERPVUJMRS1MSU5FIEVRVUFMO1NtOzA7T047Ozs7O1k7Ozs7OworMkE5MztMRVNTLVRIQU4gQUJPVkUgU0xBTlRFRCBFUVVBTCBBQk9WRSBHUkVBVEVSLVRIQU4gQUJPVkUgU0xBTlRFRCBFUVVBTDtTbTswO09OOzs7OztZOzs7OzsKKzJBOTQ7R1JFQVRFUi1USEFOIEFCT1ZFIFNMQU5URUQgRVFVQUwgQUJPVkUgTEVTUy1USEFOIEFCT1ZFIFNMQU5URUQgRVFVQUw7U207MDtPTjs7Ozs7WTs7Ozs7CisyQTk1O1NMQU5URUQgRVFVQUwgVE8gT1IgTEVTUy1USEFOO1NtOzA7T047Ozs7O1k7Ozs7OworMkE5NjtTTEFOVEVEIEVRVUFMIFRPIE9SIEdSRUFURVItVEhBTjtTbTswO09OOzs7OztZOzs7OzsKKzJBOTc7U0xBTlRFRCBFUVVBTCBUTyBPUiBMRVNTLVRIQU4gV0lUSCBET1QgSU5TSURFO1NtOzA7T047Ozs7O1k7Ozs7OworMkE5ODtTTEFOVEVEIEVRVUFMIFRPIE9SIEdSRUFURVItVEhBTiBXSVRIIERPVCBJTlNJREU7U207MDtPTjs7Ozs7WTs7Ozs7CisyQTk5O0RPVUJMRS1MSU5FIEVRVUFMIFRPIE9SIExFU1MtVEhBTjtTbTswO09OOzs7OztZOzs7OzsKKzJBOUE7RE9VQkxFLUxJTkUgRVFVQUwgVE8gT1IgR1JFQVRFUi1USEFOO1NtOzA7T047Ozs7O1k7Ozs7OworMkE5QjtET1VCTEUtTElORSBTTEFOVEVEIEVRVUFMIFRPIE9SIExFU1MtVEhBTjtTbTswO09OOzs7OztZOzs7OzsKKzJBOUM7RE9VQkxFLUxJTkUgU0xBTlRFRCBFUVVBTCBUTyBPUiBHUkVBVEVSLVRIQU47U207MDtPTjs7Ozs7WTs7Ozs7CisyQTlEO1NJTUlMQVIgT1IgTEVTUy1USEFOO1NtOzA7T047Ozs7O1k7Ozs7OworMkE5RTtTSU1JTEFSIE9SIEdSRUFURVItVEhBTjtTbTswO09OOzs7OztZOzs7OzsKKzJBOUY7U0lNSUxBUiBBQk9WRSBMRVNTLVRIQU4gQUJPVkUgRVFVQUxTIFNJR047U207MDtPTjs7Ozs7WTs7Ozs7CisyQUEwO1NJTUlMQVIgQUJPVkUgR1JFQVRFUi1USEFOIEFCT1ZFIEVRVUFMUyBTSUdOO1NtOzA7T047Ozs7O1k7Ozs7OworMkFBMTtET1VCTEUgTkVTVEVEIExFU1MtVEhBTjtTbTswO09OOzs7OztZOzs7OzsKKzJBQTI7RE9VQkxFIE5FU1RFRCBHUkVBVEVSLVRIQU47U207MDtPTjs7Ozs7WTs7Ozs7CisyQUEzO0RPVUJMRSBORVNURUQgTEVTUy1USEFOIFdJVEggVU5ERVJCQVI7U207MDtPTjs7Ozs7WTs7Ozs7CisyQUE0O0dSRUFURVItVEhBTiBPVkVSTEFQUElORyBMRVNTLVRIQU47U207MDtPTjs7Ozs7Tjs7Ozs7CisyQUE1O0dSRUFURVItVEhBTiBCRVNJREUgTEVTUy1USEFOO1NtOzA7T047Ozs7O047Ozs7OworMkFBNjtMRVNTLVRIQU4gQ0xPU0VEIEJZIENVUlZFO1NtOzA7T047Ozs7O1k7Ozs7OworMkFBNztHUkVBVEVSLVRIQU4gQ0xPU0VEIEJZIENVUlZFO1NtOzA7T047Ozs7O1k7Ozs7OworMkFBODtMRVNTLVRIQU4gQ0xPU0VEIEJZIENVUlZFIEFCT1ZFIFNMQU5URUQgRVFVQUw7U207MDtPTjs7Ozs7WTs7Ozs7CisyQUE5O0dSRUFURVItVEhBTiBDTE9TRUQgQlkgQ1VSVkUgQUJPVkUgU0xBTlRFRCBFUVVBTDtTbTswO09OOzs7OztZOzs7OzsKKzJBQUE7U01BTExFUiBUSEFOO1NtOzA7T047Ozs7O1k7Ozs7OworMkFBQjtMQVJHRVIgVEhBTjtTbTswO09OOzs7OztZOzs7OzsKKzJBQUM7U01BTExFUiBUSEFOIE9SIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMkFBRDtMQVJHRVIgVEhBTiBPUiBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzJBQUU7RVFVQUxTIFNJR04gV0lUSCBCVU1QWSBBQk9WRTtTbTswO09OOzs7OztOOzs7OzsKKzJBQUY7UFJFQ0VERVMgQUJPVkUgU0lOR0xFLUxJTkUgRVFVQUxTIFNJR047U207MDtPTjs7Ozs7WTs7Ozs7CisyQUIwO1NVQ0NFRURTIEFCT1ZFIFNJTkdMRS1MSU5FIEVRVUFMUyBTSUdOO1NtOzA7T047Ozs7O1k7Ozs7OworMkFCMTtQUkVDRURFUyBBQk9WRSBTSU5HTEUtTElORSBOT1QgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyQUIyO1NVQ0NFRURTIEFCT1ZFIFNJTkdMRS1MSU5FIE5PVCBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzJBQjM7UFJFQ0VERVMgQUJPVkUgRVFVQUxTIFNJR047U207MDtPTjs7Ozs7WTs7Ozs7CisyQUI0O1NVQ0NFRURTIEFCT1ZFIEVRVUFMUyBTSUdOO1NtOzA7T047Ozs7O1k7Ozs7OworMkFCNTtQUkVDRURFUyBBQk9WRSBOT1QgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyQUI2O1NVQ0NFRURTIEFCT1ZFIE5PVCBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzJBQjc7UFJFQ0VERVMgQUJPVkUgQUxNT1NUIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMkFCODtTVUNDRUVEUyBBQk9WRSBBTE1PU1QgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyQUI5O1BSRUNFREVTIEFCT1ZFIE5PVCBBTE1PU1QgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyQUJBO1NVQ0NFRURTIEFCT1ZFIE5PVCBBTE1PU1QgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyQUJCO0RPVUJMRSBQUkVDRURFUztTbTswO09OOzs7OztZOzs7OzsKKzJBQkM7RE9VQkxFIFNVQ0NFRURTO1NtOzA7T047Ozs7O1k7Ozs7OworMkFCRDtTVUJTRVQgV0lUSCBET1Q7U207MDtPTjs7Ozs7WTs7Ozs7CisyQUJFO1NVUEVSU0VUIFdJVEggRE9UO1NtOzA7T047Ozs7O1k7Ozs7OworMkFCRjtTVUJTRVQgV0lUSCBQTFVTIFNJR04gQkVMT1c7U207MDtPTjs7Ozs7WTs7Ozs7CisyQUMwO1NVUEVSU0VUIFdJVEggUExVUyBTSUdOIEJFTE9XO1NtOzA7T047Ozs7O1k7Ozs7OworMkFDMTtTVUJTRVQgV0lUSCBNVUxUSVBMSUNBVElPTiBTSUdOIEJFTE9XO1NtOzA7T047Ozs7O1k7Ozs7OworMkFDMjtTVVBFUlNFVCBXSVRIIE1VTFRJUExJQ0FUSU9OIFNJR04gQkVMT1c7U207MDtPTjs7Ozs7WTs7Ozs7CisyQUMzO1NVQlNFVCBPRiBPUiBFUVVBTCBUTyBXSVRIIERPVCBBQk9WRTtTbTswO09OOzs7OztZOzs7OzsKKzJBQzQ7U1VQRVJTRVQgT0YgT1IgRVFVQUwgVE8gV0lUSCBET1QgQUJPVkU7U207MDtPTjs7Ozs7WTs7Ozs7CisyQUM1O1NVQlNFVCBPRiBBQk9WRSBFUVVBTFMgU0lHTjtTbTswO09OOzs7OztZOzs7OzsKKzJBQzY7U1VQRVJTRVQgT0YgQUJPVkUgRVFVQUxTIFNJR047U207MDtPTjs7Ozs7WTs7Ozs7CisyQUM3O1NVQlNFVCBPRiBBQk9WRSBUSUxERSBPUEVSQVRPUjtTbTswO09OOzs7OztZOzs7OzsKKzJBQzg7U1VQRVJTRVQgT0YgQUJPVkUgVElMREUgT1BFUkFUT1I7U207MDtPTjs7Ozs7WTs7Ozs7CisyQUM5O1NVQlNFVCBPRiBBQk9WRSBBTE1PU1QgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyQUNBO1NVUEVSU0VUIE9GIEFCT1ZFIEFMTU9TVCBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzJBQ0I7U1VCU0VUIE9GIEFCT1ZFIE5PVCBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzJBQ0M7U1VQRVJTRVQgT0YgQUJPVkUgTk9UIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMkFDRDtTUVVBUkUgTEVGVCBPUEVOIEJPWCBPUEVSQVRPUjtTbTswO09OOzs7OztZOzs7OzsKKzJBQ0U7U1FVQVJFIFJJR0hUIE9QRU4gQk9YIE9QRVJBVE9SO1NtOzA7T047Ozs7O1k7Ozs7OworMkFDRjtDTE9TRUQgU1VCU0VUO1NtOzA7T047Ozs7O1k7Ozs7OworMkFEMDtDTE9TRUQgU1VQRVJTRVQ7U207MDtPTjs7Ozs7WTs7Ozs7CisyQUQxO0NMT1NFRCBTVUJTRVQgT1IgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyQUQyO0NMT1NFRCBTVVBFUlNFVCBPUiBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzJBRDM7U1VCU0VUIEFCT1ZFIFNVUEVSU0VUO1NtOzA7T047Ozs7O1k7Ozs7OworMkFENDtTVVBFUlNFVCBBQk9WRSBTVUJTRVQ7U207MDtPTjs7Ozs7WTs7Ozs7CisyQUQ1O1NVQlNFVCBBQk9WRSBTVUJTRVQ7U207MDtPTjs7Ozs7WTs7Ozs7CisyQUQ2O1NVUEVSU0VUIEFCT1ZFIFNVUEVSU0VUO1NtOzA7T047Ozs7O1k7Ozs7OworMkFENztTVVBFUlNFVCBCRVNJREUgU1VCU0VUO1NtOzA7T047Ozs7O047Ozs7OworMkFEODtTVVBFUlNFVCBCRVNJREUgQU5EIEpPSU5FRCBCWSBEQVNIIFdJVEggU1VCU0VUO1NtOzA7T047Ozs7O047Ozs7OworMkFEOTtFTEVNRU5UIE9GIE9QRU5JTkcgRE9XTldBUkRTO1NtOzA7T047Ozs7O047Ozs7OworMkFEQTtQSVRDSEZPUksgV0lUSCBURUUgVE9QO1NtOzA7T047Ozs7O047Ozs7OworMkFEQjtUUkFOU1ZFUlNBTCBJTlRFUlNFQ1RJT047U207MDtPTjs7Ozs7Tjs7Ozs7CisyQURDO0ZPUktJTkc7U207MDtPTjsyQUREIDAzMzg7Ozs7WTs7bm90IGluZGVwZW5kZW50Ozs7CisyQUREO05PTkZPUktJTkc7U207MDtPTjs7Ozs7Tjs7aW5kZXBlbmRlbnQ7OzsKKzJBREU7U0hPUlQgTEVGVCBUQUNLO1NtOzA7T047Ozs7O1k7Ozs7OworMkFERjtTSE9SVCBET1dOIFRBQ0s7U207MDtPTjs7Ozs7Tjs7Ozs7CisyQUUwO1NIT1JUIFVQIFRBQ0s7U207MDtPTjs7Ozs7Tjs7Ozs7CisyQUUxO1BFUlBFTkRJQ1VMQVIgV0lUSCBTO1NtOzA7T047Ozs7O047Ozs7OworMkFFMjtWRVJUSUNBTCBCQVIgVFJJUExFIFJJR0hUIFRVUk5TVElMRTtTbTswO09OOzs7OztZOzs7OzsKKzJBRTM7RE9VQkxFIFZFUlRJQ0FMIEJBUiBMRUZUIFRVUk5TVElMRTtTbTswO09OOzs7OztZOzs7OzsKKzJBRTQ7VkVSVElDQUwgQkFSIERPVUJMRSBMRUZUIFRVUk5TVElMRTtTbTswO09OOzs7OztZOzs7OzsKKzJBRTU7RE9VQkxFIFZFUlRJQ0FMIEJBUiBET1VCTEUgTEVGVCBUVVJOU1RJTEU7U207MDtPTjs7Ozs7WTs7Ozs7CisyQUU2O0xPTkcgREFTSCBGUk9NIExFRlQgTUVNQkVSIE9GIERPVUJMRSBWRVJUSUNBTDtTbTswO09OOzs7OztZOzs7OzsKKzJBRTc7U0hPUlQgRE9XTiBUQUNLIFdJVEggT1ZFUkJBUjtTbTswO09OOzs7OztOOzs7OzsKKzJBRTg7U0hPUlQgVVAgVEFDSyBXSVRIIFVOREVSQkFSO1NtOzA7T047Ozs7O047Ozs7OworMkFFOTtTSE9SVCBVUCBUQUNLIEFCT1ZFIFNIT1JUIERPV04gVEFDSztTbTswO09OOzs7OztOOzs7OzsKKzJBRUE7RE9VQkxFIERPV04gVEFDSztTbTswO09OOzs7OztOOzs7OzsKKzJBRUI7RE9VQkxFIFVQIFRBQ0s7U207MDtPTjs7Ozs7Tjs7Ozs7CisyQUVDO0RPVUJMRSBTVFJPS0UgTk9UIFNJR047U207MDtPTjs7Ozs7WTs7Ozs7CisyQUVEO1JFVkVSU0VEIERPVUJMRSBTVFJPS0UgTk9UIFNJR047U207MDtPTjs7Ozs7WTs7Ozs7CisyQUVFO0RPRVMgTk9UIERJVklERSBXSVRIIFJFVkVSU0VEIE5FR0FUSU9OIFNMQVNIO1NtOzA7T047Ozs7O1k7Ozs7OworMkFFRjtWRVJUSUNBTCBMSU5FIFdJVEggQ0lSQ0xFIEFCT1ZFO1NtOzA7T047Ozs7O047Ozs7OworMkFGMDtWRVJUSUNBTCBMSU5FIFdJVEggQ0lSQ0xFIEJFTE9XO1NtOzA7T047Ozs7O047Ozs7OworMkFGMTtET1dOIFRBQ0sgV0lUSCBDSVJDTEUgQkVMT1c7U207MDtPTjs7Ozs7Tjs7Ozs7CisyQUYyO1BBUkFMTEVMIFdJVEggSE9SSVpPTlRBTCBTVFJPS0U7U207MDtPTjs7Ozs7Tjs7Ozs7CisyQUYzO1BBUkFMTEVMIFdJVEggVElMREUgT1BFUkFUT1I7U207MDtPTjs7Ozs7WTs7Ozs7CisyQUY0O1RSSVBMRSBWRVJUSUNBTCBCQVIgQklOQVJZIFJFTEFUSU9OO1NtOzA7T047Ozs7O047Ozs7OworMkFGNTtUUklQTEUgVkVSVElDQUwgQkFSIFdJVEggSE9SSVpPTlRBTCBTVFJPS0U7U207MDtPTjs7Ozs7Tjs7Ozs7CisyQUY2O1RSSVBMRSBDT0xPTiBPUEVSQVRPUjtTbTswO09OOzs7OztOOzs7OzsKKzJBRjc7VFJJUExFIE5FU1RFRCBMRVNTLVRIQU47U207MDtPTjs7Ozs7WTs7Ozs7CisyQUY4O1RSSVBMRSBORVNURUQgR1JFQVRFUi1USEFOO1NtOzA7T047Ozs7O1k7Ozs7OworMkFGOTtET1VCTEUtTElORSBTTEFOVEVEIExFU1MtVEhBTiBPUiBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzJBRkE7RE9VQkxFLUxJTkUgU0xBTlRFRCBHUkVBVEVSLVRIQU4gT1IgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyQUZCO1RSSVBMRSBTT0xJRFVTIEJJTkFSWSBSRUxBVElPTjtTbTswO09OOzs7OztZOzs7OzsKKzJBRkM7TEFSR0UgVFJJUExFIFZFUlRJQ0FMIEJBUiBPUEVSQVRPUjtTbTswO09OOzs7OztOOzs7OzsKKzJBRkQ7RE9VQkxFIFNPTElEVVMgT1BFUkFUT1I7U207MDtPTjs7Ozs7WTs7Ozs7CisyQUZFO1dISVRFIFZFUlRJQ0FMIEJBUjtTbTswO09OOzs7OztOOzs7OzsKKzJBRkY7Ti1BUlkgV0hJVEUgVkVSVElDQUwgQkFSO1NtOzA7T047Ozs7O047Ozs7OworMkU4MDtDSksgUkFESUNBTCBSRVBFQVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRTgxO0NKSyBSQURJQ0FMIENMSUZGO1NvOzA7T047Ozs7O047Ozs7OworMkU4MjtDSksgUkFESUNBTCBTRUNPTkQgT05FO1NvOzA7T047Ozs7O047Ozs7OworMkU4MztDSksgUkFESUNBTCBTRUNPTkQgVFdPO1NvOzA7T047Ozs7O047Ozs7OworMkU4NDtDSksgUkFESUNBTCBTRUNPTkQgVEhSRUU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRTg1O0NKSyBSQURJQ0FMIFBFUlNPTjtTbzswO09OOzs7OztOOzs7OzsKKzJFODY7Q0pLIFJBRElDQUwgQk9YO1NvOzA7T047Ozs7O047Ozs7OworMkU4NztDSksgUkFESUNBTCBUQUJMRTtTbzswO09OOzs7OztOOzs7OzsKKzJFODg7Q0pLIFJBRElDQUwgS05JRkUgT05FO1NvOzA7T047Ozs7O047Ozs7OworMkU4OTtDSksgUkFESUNBTCBLTklGRSBUV087U287MDtPTjs7Ozs7Tjs7Ozs7CisyRThBO0NKSyBSQURJQ0FMIERJVklOQVRJT047U287MDtPTjs7Ozs7Tjs7Ozs7CisyRThCO0NKSyBSQURJQ0FMIFNFQUw7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRThDO0NKSyBSQURJQ0FMIFNNQUxMIE9ORTtTbzswO09OOzs7OztOOzs7OzsKKzJFOEQ7Q0pLIFJBRElDQUwgU01BTEwgVFdPO1NvOzA7T047Ozs7O047Ozs7OworMkU4RTtDSksgUkFESUNBTCBMQU1FIE9ORTtTbzswO09OOzs7OztOOzs7OzsKKzJFOEY7Q0pLIFJBRElDQUwgTEFNRSBUV087U287MDtPTjs7Ozs7Tjs7Ozs7CisyRTkwO0NKSyBSQURJQ0FMIExBTUUgVEhSRUU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRTkxO0NKSyBSQURJQ0FMIExBTUUgRk9VUjtTbzswO09OOzs7OztOOzs7OzsKKzJFOTI7Q0pLIFJBRElDQUwgU05BS0U7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRTkzO0NKSyBSQURJQ0FMIFRIUkVBRDtTbzswO09OOzs7OztOOzs7OzsKKzJFOTQ7Q0pLIFJBRElDQUwgU05PVVQgT05FO1NvOzA7T047Ozs7O047Ozs7OworMkU5NTtDSksgUkFESUNBTCBTTk9VVCBUV087U287MDtPTjs7Ozs7Tjs7Ozs7CisyRTk2O0NKSyBSQURJQ0FMIEhFQVJUIE9ORTtTbzswO09OOzs7OztOOzs7OzsKKzJFOTc7Q0pLIFJBRElDQUwgSEVBUlQgVFdPO1NvOzA7T047Ozs7O047Ozs7OworMkU5ODtDSksgUkFESUNBTCBIQU5EO1NvOzA7T047Ozs7O047Ozs7OworMkU5OTtDSksgUkFESUNBTCBSQVA7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRTlCO0NKSyBSQURJQ0FMIENIT0tFO1NvOzA7T047Ozs7O047Ozs7OworMkU5QztDSksgUkFESUNBTCBTVU47U287MDtPTjs7Ozs7Tjs7Ozs7CisyRTlEO0NKSyBSQURJQ0FMIE1PT047U287MDtPTjs7Ozs7Tjs7Ozs7CisyRTlFO0NKSyBSQURJQ0FMIERFQVRIO1NvOzA7T047Ozs7O047Ozs7OworMkU5RjtDSksgUkFESUNBTCBNT1RIRVI7U287MDtPTjs8Y29tcGF0PiA2QkNEOzs7O047Ozs7OworMkVBMDtDSksgUkFESUNBTCBDSVZJTElBTjtTbzswO09OOzs7OztOOzs7OzsKKzJFQTE7Q0pLIFJBRElDQUwgV0FURVIgT05FO1NvOzA7T047Ozs7O047Ozs7OworMkVBMjtDSksgUkFESUNBTCBXQVRFUiBUV087U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUEzO0NKSyBSQURJQ0FMIEZJUkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUE0O0NKSyBSQURJQ0FMIFBBVyBPTkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUE1O0NKSyBSQURJQ0FMIFBBVyBUV087U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUE2O0NKSyBSQURJQ0FMIFNJTVBMSUZJRUQgSEFMRiBUUkVFIFRSVU5LO1NvOzA7T047Ozs7O047Ozs7OworMkVBNztDSksgUkFESUNBTCBDT1c7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUE4O0NKSyBSQURJQ0FMIERPRztTbzswO09OOzs7OztOOzs7OzsKKzJFQTk7Q0pLIFJBRElDQUwgSkFERTtTbzswO09OOzs7OztOOzs7OzsKKzJFQUE7Q0pLIFJBRElDQUwgQk9MVCBPRiBDTE9USDtTbzswO09OOzs7OztOOzs7OzsKKzJFQUI7Q0pLIFJBRElDQUwgRVlFO1NvOzA7T047Ozs7O047Ozs7OworMkVBQztDSksgUkFESUNBTCBTUElSSVQgT05FO1NvOzA7T047Ozs7O047Ozs7OworMkVBRDtDSksgUkFESUNBTCBTUElSSVQgVFdPO1NvOzA7T047Ozs7O047Ozs7OworMkVBRTtDSksgUkFESUNBTCBCQU1CT087U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUFGO0NKSyBSQURJQ0FMIFNJTEs7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUIwO0NKSyBSQURJQ0FMIEMtU0lNUExJRklFRCBTSUxLO1NvOzA7T047Ozs7O047Ozs7OworMkVCMTtDSksgUkFESUNBTCBORVQgT05FO1NvOzA7T047Ozs7O047Ozs7OworMkVCMjtDSksgUkFESUNBTCBORVQgVFdPO1NvOzA7T047Ozs7O047Ozs7OworMkVCMztDSksgUkFESUNBTCBORVQgVEhSRUU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUI0O0NKSyBSQURJQ0FMIE5FVCBGT1VSO1NvOzA7T047Ozs7O047Ozs7OworMkVCNTtDSksgUkFESUNBTCBNRVNIO1NvOzA7T047Ozs7O047Ozs7OworMkVCNjtDSksgUkFESUNBTCBTSEVFUDtTbzswO09OOzs7OztOOzs7OzsKKzJFQjc7Q0pLIFJBRElDQUwgUkFNO1NvOzA7T047Ozs7O047Ozs7OworMkVCODtDSksgUkFESUNBTCBFV0U7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUI5O0NKSyBSQURJQ0FMIE9MRDtTbzswO09OOzs7OztOOzs7OzsKKzJFQkE7Q0pLIFJBRElDQUwgQlJVU0ggT05FO1NvOzA7T047Ozs7O047Ozs7OworMkVCQjtDSksgUkFESUNBTCBCUlVTSCBUV087U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUJDO0NKSyBSQURJQ0FMIE1FQVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUJEO0NKSyBSQURJQ0FMIE1PUlRBUjtTbzswO09OOzs7OztOOzs7OzsKKzJFQkU7Q0pLIFJBRElDQUwgR1JBU1MgT05FO1NvOzA7T047Ozs7O047Ozs7OworMkVCRjtDSksgUkFESUNBTCBHUkFTUyBUV087U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUMwO0NKSyBSQURJQ0FMIEdSQVNTIFRIUkVFO1NvOzA7T047Ozs7O047Ozs7OworMkVDMTtDSksgUkFESUNBTCBUSUdFUjtTbzswO09OOzs7OztOOzs7OzsKKzJFQzI7Q0pLIFJBRElDQUwgQ0xPVEhFUztTbzswO09OOzs7OztOOzs7OzsKKzJFQzM7Q0pLIFJBRElDQUwgV0VTVCBPTkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUM0O0NKSyBSQURJQ0FMIFdFU1QgVFdPO1NvOzA7T047Ozs7O047Ozs7OworMkVDNTtDSksgUkFESUNBTCBDLVNJTVBMSUZJRUQgU0VFO1NvOzA7T047Ozs7O047Ozs7OworMkVDNjtDSksgUkFESUNBTCBTSU1QTElGSUVEIEhPUk47U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUM3O0NKSyBSQURJQ0FMIEhPUk47U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUM4O0NKSyBSQURJQ0FMIEMtU0lNUExJRklFRCBTUEVFQ0g7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUM5O0NKSyBSQURJQ0FMIEMtU0lNUExJRklFRCBTSEVMTDtTbzswO09OOzs7OztOOzs7OzsKKzJFQ0E7Q0pLIFJBRElDQUwgRk9PVDtTbzswO09OOzs7OztOOzs7OzsKKzJFQ0I7Q0pLIFJBRElDQUwgQy1TSU1QTElGSUVEIENBUlQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUNDO0NKSyBSQURJQ0FMIFNJTVBMSUZJRUQgV0FMSztTbzswO09OOzs7OztOOzs7OzsKKzJFQ0Q7Q0pLIFJBRElDQUwgV0FMSyBPTkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUNFO0NKSyBSQURJQ0FMIFdBTEsgVFdPO1NvOzA7T047Ozs7O047Ozs7OworMkVDRjtDSksgUkFESUNBTCBDSVRZO1NvOzA7T047Ozs7O047Ozs7OworMkVEMDtDSksgUkFESUNBTCBDLVNJTVBMSUZJRUQgR09MRDtTbzswO09OOzs7OztOOzs7OzsKKzJFRDE7Q0pLIFJBRElDQUwgTE9ORyBPTkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUQyO0NKSyBSQURJQ0FMIExPTkcgVFdPO1NvOzA7T047Ozs7O047Ozs7OworMkVEMztDSksgUkFESUNBTCBDLVNJTVBMSUZJRUQgTE9ORztTbzswO09OOzs7OztOOzs7OzsKKzJFRDQ7Q0pLIFJBRElDQUwgQy1TSU1QTElGSUVEIEdBVEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUQ1O0NKSyBSQURJQ0FMIE1PVU5EIE9ORTtTbzswO09OOzs7OztOOzs7OzsKKzJFRDY7Q0pLIFJBRElDQUwgTU9VTkQgVFdPO1NvOzA7T047Ozs7O047Ozs7OworMkVENztDSksgUkFESUNBTCBSQUlOO1NvOzA7T047Ozs7O047Ozs7OworMkVEODtDSksgUkFESUNBTCBCTFVFO1NvOzA7T047Ozs7O047Ozs7OworMkVEOTtDSksgUkFESUNBTCBDLVNJTVBMSUZJRUQgVEFOTkVEIExFQVRIRVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRURBO0NKSyBSQURJQ0FMIEMtU0lNUExJRklFRCBMRUFGO1NvOzA7T047Ozs7O047Ozs7OworMkVEQjtDSksgUkFESUNBTCBDLVNJTVBMSUZJRUQgV0lORDtTbzswO09OOzs7OztOOzs7OzsKKzJFREM7Q0pLIFJBRElDQUwgQy1TSU1QTElGSUVEIEZMWTtTbzswO09OOzs7OztOOzs7OzsKKzJFREQ7Q0pLIFJBRElDQUwgRUFUIE9ORTtTbzswO09OOzs7OztOOzs7OzsKKzJFREU7Q0pLIFJBRElDQUwgRUFUIFRXTztTbzswO09OOzs7OztOOzs7OzsKKzJFREY7Q0pLIFJBRElDQUwgRUFUIFRIUkVFO1NvOzA7T047Ozs7O047Ozs7OworMkVFMDtDSksgUkFESUNBTCBDLVNJTVBMSUZJRUQgRUFUO1NvOzA7T047Ozs7O047Ozs7OworMkVFMTtDSksgUkFESUNBTCBIRUFEO1NvOzA7T047Ozs7O047Ozs7OworMkVFMjtDSksgUkFESUNBTCBDLVNJTVBMSUZJRUQgSE9SU0U7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUUzO0NKSyBSQURJQ0FMIEJPTkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUU0O0NKSyBSQURJQ0FMIEdIT1NUO1NvOzA7T047Ozs7O047Ozs7OworMkVFNTtDSksgUkFESUNBTCBDLVNJTVBMSUZJRUQgRklTSDtTbzswO09OOzs7OztOOzs7OzsKKzJFRTY7Q0pLIFJBRElDQUwgQy1TSU1QTElGSUVEIEJJUkQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUU3O0NKSyBSQURJQ0FMIEMtU0lNUExJRklFRCBTQUxUO1NvOzA7T047Ozs7O047Ozs7OworMkVFODtDSksgUkFESUNBTCBTSU1QTElGSUVEIFdIRUFUO1NvOzA7T047Ozs7O047Ozs7OworMkVFOTtDSksgUkFESUNBTCBTSU1QTElGSUVEIFlFTExPVztTbzswO09OOzs7OztOOzs7OzsKKzJFRUE7Q0pLIFJBRElDQUwgQy1TSU1QTElGSUVEIEZST0c7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUVCO0NKSyBSQURJQ0FMIEotU0lNUExJRklFRCBFVkVOO1NvOzA7T047Ozs7O047Ozs7OworMkVFQztDSksgUkFESUNBTCBDLVNJTVBMSUZJRUQgRVZFTjtTbzswO09OOzs7OztOOzs7OzsKKzJFRUQ7Q0pLIFJBRElDQUwgSi1TSU1QTElGSUVEIFRPT1RIO1NvOzA7T047Ozs7O047Ozs7OworMkVFRTtDSksgUkFESUNBTCBDLVNJTVBMSUZJRUQgVE9PVEg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUVGO0NKSyBSQURJQ0FMIEotU0lNUExJRklFRCBEUkFHT047U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUYwO0NKSyBSQURJQ0FMIEMtU0lNUExJRklFRCBEUkFHT047U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUYxO0NKSyBSQURJQ0FMIFRVUlRMRTtTbzswO09OOzs7OztOOzs7OzsKKzJFRjI7Q0pLIFJBRElDQUwgSi1TSU1QTElGSUVEIFRVUlRMRTtTbzswO09OOzs7OztOOzs7OzsKKzJFRjM7Q0pLIFJBRElDQUwgQy1TSU1QTElGSUVEIFRVUlRMRTtTbzswO09OOzxjb21wYXQ+IDlGOUY7Ozs7Tjs7Ozs7CisyRjAwO0tBTkdYSSBSQURJQ0FMIE9ORTtTbzswO09OOzxjb21wYXQ+IDRFMDA7Ozs7Tjs7Ozs7CisyRjAxO0tBTkdYSSBSQURJQ0FMIExJTkU7U287MDtPTjs8Y29tcGF0PiA0RTI4Ozs7O047Ozs7OworMkYwMjtLQU5HWEkgUkFESUNBTCBET1Q7U287MDtPTjs8Y29tcGF0PiA0RTM2Ozs7O047Ozs7OworMkYwMztLQU5HWEkgUkFESUNBTCBTTEFTSDtTbzswO09OOzxjb21wYXQ+IDRFM0Y7Ozs7Tjs7Ozs7CisyRjA0O0tBTkdYSSBSQURJQ0FMIFNFQ09ORDtTbzswO09OOzxjb21wYXQ+IDRFNTk7Ozs7Tjs7Ozs7CisyRjA1O0tBTkdYSSBSQURJQ0FMIEhPT0s7U287MDtPTjs8Y29tcGF0PiA0RTg1Ozs7O047Ozs7OworMkYwNjtLQU5HWEkgUkFESUNBTCBUV087U287MDtPTjs8Y29tcGF0PiA0RThDOzs7O047Ozs7OworMkYwNztLQU5HWEkgUkFESUNBTCBMSUQ7U287MDtPTjs8Y29tcGF0PiA0RUEwOzs7O047Ozs7OworMkYwODtLQU5HWEkgUkFESUNBTCBNQU47U287MDtPTjs8Y29tcGF0PiA0RUJBOzs7O047Ozs7OworMkYwOTtLQU5HWEkgUkFESUNBTCBMRUdTO1NvOzA7T047PGNvbXBhdD4gNTEzRjs7OztOOzs7OzsKKzJGMEE7S0FOR1hJIFJBRElDQUwgRU5URVI7U287MDtPTjs8Y29tcGF0PiA1MTY1Ozs7O047Ozs7OworMkYwQjtLQU5HWEkgUkFESUNBTCBFSUdIVDtTbzswO09OOzxjb21wYXQ+IDUxNkI7Ozs7Tjs7Ozs7CisyRjBDO0tBTkdYSSBSQURJQ0FMIERPV04gQk9YO1NvOzA7T047PGNvbXBhdD4gNTE4Mjs7OztOOzs7OzsKKzJGMEQ7S0FOR1hJIFJBRElDQUwgQ09WRVI7U287MDtPTjs8Y29tcGF0PiA1MTk2Ozs7O047Ozs7OworMkYwRTtLQU5HWEkgUkFESUNBTCBJQ0U7U287MDtPTjs8Y29tcGF0PiA1MUFCOzs7O047Ozs7OworMkYwRjtLQU5HWEkgUkFESUNBTCBUQUJMRTtTbzswO09OOzxjb21wYXQ+IDUxRTA7Ozs7Tjs7Ozs7CisyRjEwO0tBTkdYSSBSQURJQ0FMIE9QRU4gQk9YO1NvOzA7T047PGNvbXBhdD4gNTFGNTs7OztOOzs7OzsKKzJGMTE7S0FOR1hJIFJBRElDQUwgS05JRkU7U287MDtPTjs8Y29tcGF0PiA1MjAwOzs7O047Ozs7OworMkYxMjtLQU5HWEkgUkFESUNBTCBQT1dFUjtTbzswO09OOzxjb21wYXQ+IDUyOUI7Ozs7Tjs7Ozs7CisyRjEzO0tBTkdYSSBSQURJQ0FMIFdSQVA7U287MDtPTjs8Y29tcGF0PiA1MkY5Ozs7O047Ozs7OworMkYxNDtLQU5HWEkgUkFESUNBTCBTUE9PTjtTbzswO09OOzxjb21wYXQ+IDUzMTU7Ozs7Tjs7Ozs7CisyRjE1O0tBTkdYSSBSQURJQ0FMIFJJR0hUIE9QRU4gQk9YO1NvOzA7T047PGNvbXBhdD4gNTMxQTs7OztOOzs7OzsKKzJGMTY7S0FOR1hJIFJBRElDQUwgSElESU5HIEVOQ0xPU1VSRTtTbzswO09OOzxjb21wYXQ+IDUzMzg7Ozs7Tjs7Ozs7CisyRjE3O0tBTkdYSSBSQURJQ0FMIFRFTjtTbzswO09OOzxjb21wYXQ+IDUzNDE7Ozs7Tjs7Ozs7CisyRjE4O0tBTkdYSSBSQURJQ0FMIERJVklOQVRJT047U287MDtPTjs8Y29tcGF0PiA1MzVDOzs7O047Ozs7OworMkYxOTtLQU5HWEkgUkFESUNBTCBTRUFMO1NvOzA7T047PGNvbXBhdD4gNTM2OTs7OztOOzs7OzsKKzJGMUE7S0FOR1hJIFJBRElDQUwgQ0xJRkY7U287MDtPTjs8Y29tcGF0PiA1MzgyOzs7O047Ozs7OworMkYxQjtLQU5HWEkgUkFESUNBTCBQUklWQVRFO1NvOzA7T047PGNvbXBhdD4gNTNCNjs7OztOOzs7OzsKKzJGMUM7S0FOR1hJIFJBRElDQUwgQUdBSU47U287MDtPTjs8Y29tcGF0PiA1M0M4Ozs7O047Ozs7OworMkYxRDtLQU5HWEkgUkFESUNBTCBNT1VUSDtTbzswO09OOzxjb21wYXQ+IDUzRTM7Ozs7Tjs7Ozs7CisyRjFFO0tBTkdYSSBSQURJQ0FMIEVOQ0xPU1VSRTtTbzswO09OOzxjb21wYXQ+IDU2RDc7Ozs7Tjs7Ozs7CisyRjFGO0tBTkdYSSBSQURJQ0FMIEVBUlRIO1NvOzA7T047PGNvbXBhdD4gNTcxRjs7OztOOzs7OzsKKzJGMjA7S0FOR1hJIFJBRElDQUwgU0NIT0xBUjtTbzswO09OOzxjb21wYXQ+IDU4RUI7Ozs7Tjs7Ozs7CisyRjIxO0tBTkdYSSBSQURJQ0FMIEdPO1NvOzA7T047PGNvbXBhdD4gNTkwMjs7OztOOzs7OzsKKzJGMjI7S0FOR1hJIFJBRElDQUwgR08gU0xPV0xZO1NvOzA7T047PGNvbXBhdD4gNTkwQTs7OztOOzs7OzsKKzJGMjM7S0FOR1hJIFJBRElDQUwgRVZFTklORztTbzswO09OOzxjb21wYXQ+IDU5MTU7Ozs7Tjs7Ozs7CisyRjI0O0tBTkdYSSBSQURJQ0FMIEJJRztTbzswO09OOzxjb21wYXQ+IDU5Mjc7Ozs7Tjs7Ozs7CisyRjI1O0tBTkdYSSBSQURJQ0FMIFdPTUFOO1NvOzA7T047PGNvbXBhdD4gNTk3Mzs7OztOOzs7OzsKKzJGMjY7S0FOR1hJIFJBRElDQUwgQ0hJTEQ7U287MDtPTjs8Y29tcGF0PiA1QjUwOzs7O047Ozs7OworMkYyNztLQU5HWEkgUkFESUNBTCBST09GO1NvOzA7T047PGNvbXBhdD4gNUI4MDs7OztOOzs7OzsKKzJGMjg7S0FOR1hJIFJBRElDQUwgSU5DSDtTbzswO09OOzxjb21wYXQ+IDVCRjg7Ozs7Tjs7Ozs7CisyRjI5O0tBTkdYSSBSQURJQ0FMIFNNQUxMO1NvOzA7T047PGNvbXBhdD4gNUMwRjs7OztOOzs7OzsKKzJGMkE7S0FOR1hJIFJBRElDQUwgTEFNRTtTbzswO09OOzxjb21wYXQ+IDVDMjI7Ozs7Tjs7Ozs7CisyRjJCO0tBTkdYSSBSQURJQ0FMIENPUlBTRTtTbzswO09OOzxjb21wYXQ+IDVDMzg7Ozs7Tjs7Ozs7CisyRjJDO0tBTkdYSSBSQURJQ0FMIFNQUk9VVDtTbzswO09OOzxjb21wYXQ+IDVDNkU7Ozs7Tjs7Ozs7CisyRjJEO0tBTkdYSSBSQURJQ0FMIE1PVU5UQUlOO1NvOzA7T047PGNvbXBhdD4gNUM3MTs7OztOOzs7OzsKKzJGMkU7S0FOR1hJIFJBRElDQUwgUklWRVI7U287MDtPTjs8Y29tcGF0PiA1RERCOzs7O047Ozs7OworMkYyRjtLQU5HWEkgUkFESUNBTCBXT1JLO1NvOzA7T047PGNvbXBhdD4gNURFNTs7OztOOzs7OzsKKzJGMzA7S0FOR1hJIFJBRElDQUwgT05FU0VMRjtTbzswO09OOzxjb21wYXQ+IDVERjE7Ozs7Tjs7Ozs7CisyRjMxO0tBTkdYSSBSQURJQ0FMIFRVUkJBTjtTbzswO09OOzxjb21wYXQ+IDVERkU7Ozs7Tjs7Ozs7CisyRjMyO0tBTkdYSSBSQURJQ0FMIERSWTtTbzswO09OOzxjb21wYXQ+IDVFNzI7Ozs7Tjs7Ozs7CisyRjMzO0tBTkdYSSBSQURJQ0FMIFNIT1JUIFRIUkVBRDtTbzswO09OOzxjb21wYXQ+IDVFN0E7Ozs7Tjs7Ozs7CisyRjM0O0tBTkdYSSBSQURJQ0FMIERPVFRFRCBDTElGRjtTbzswO09OOzxjb21wYXQ+IDVFN0Y7Ozs7Tjs7Ozs7CisyRjM1O0tBTkdYSSBSQURJQ0FMIExPTkcgU1RSSURFO1NvOzA7T047PGNvbXBhdD4gNUVGNDs7OztOOzs7OzsKKzJGMzY7S0FOR1hJIFJBRElDQUwgVFdPIEhBTkRTO1NvOzA7T047PGNvbXBhdD4gNUVGRTs7OztOOzs7OzsKKzJGMzc7S0FOR1hJIFJBRElDQUwgU0hPT1Q7U287MDtPTjs8Y29tcGF0PiA1RjBCOzs7O047Ozs7OworMkYzODtLQU5HWEkgUkFESUNBTCBCT1c7U287MDtPTjs8Y29tcGF0PiA1RjEzOzs7O047Ozs7OworMkYzOTtLQU5HWEkgUkFESUNBTCBTTk9VVDtTbzswO09OOzxjb21wYXQ+IDVGNTA7Ozs7Tjs7Ozs7CisyRjNBO0tBTkdYSSBSQURJQ0FMIEJSSVNUTEU7U287MDtPTjs8Y29tcGF0PiA1RjYxOzs7O047Ozs7OworMkYzQjtLQU5HWEkgUkFESUNBTCBTVEVQO1NvOzA7T047PGNvbXBhdD4gNUY3Mzs7OztOOzs7OzsKKzJGM0M7S0FOR1hJIFJBRElDQUwgSEVBUlQ7U287MDtPTjs8Y29tcGF0PiA1RkMzOzs7O047Ozs7OworMkYzRDtLQU5HWEkgUkFESUNBTCBIQUxCRVJEO1NvOzA7T047PGNvbXBhdD4gNjIwODs7OztOOzs7OzsKKzJGM0U7S0FOR1hJIFJBRElDQUwgRE9PUjtTbzswO09OOzxjb21wYXQ+IDYyMzY7Ozs7Tjs7Ozs7CisyRjNGO0tBTkdYSSBSQURJQ0FMIEhBTkQ7U287MDtPTjs8Y29tcGF0PiA2MjRCOzs7O047Ozs7OworMkY0MDtLQU5HWEkgUkFESUNBTCBCUkFOQ0g7U287MDtPTjs8Y29tcGF0PiA2NTJGOzs7O047Ozs7OworMkY0MTtLQU5HWEkgUkFESUNBTCBSQVA7U287MDtPTjs8Y29tcGF0PiA2NTM0Ozs7O047Ozs7OworMkY0MjtLQU5HWEkgUkFESUNBTCBTQ1JJUFQ7U287MDtPTjs8Y29tcGF0PiA2NTg3Ozs7O047Ozs7OworMkY0MztLQU5HWEkgUkFESUNBTCBESVBQRVI7U287MDtPTjs8Y29tcGF0PiA2NTk3Ozs7O047Ozs7OworMkY0NDtLQU5HWEkgUkFESUNBTCBBWEU7U287MDtPTjs8Y29tcGF0PiA2NUE0Ozs7O047Ozs7OworMkY0NTtLQU5HWEkgUkFESUNBTCBTUVVBUkU7U287MDtPTjs8Y29tcGF0PiA2NUI5Ozs7O047Ozs7OworMkY0NjtLQU5HWEkgUkFESUNBTCBOT1Q7U287MDtPTjs8Y29tcGF0PiA2NUUwOzs7O047Ozs7OworMkY0NztLQU5HWEkgUkFESUNBTCBTVU47U287MDtPTjs8Y29tcGF0PiA2NUU1Ozs7O047Ozs7OworMkY0ODtLQU5HWEkgUkFESUNBTCBTQVk7U287MDtPTjs8Y29tcGF0PiA2NkYwOzs7O047Ozs7OworMkY0OTtLQU5HWEkgUkFESUNBTCBNT09OO1NvOzA7T047PGNvbXBhdD4gNjcwODs7OztOOzs7OzsKKzJGNEE7S0FOR1hJIFJBRElDQUwgVFJFRTtTbzswO09OOzxjb21wYXQ+IDY3Mjg7Ozs7Tjs7Ozs7CisyRjRCO0tBTkdYSSBSQURJQ0FMIExBQ0s7U287MDtPTjs8Y29tcGF0PiA2QjIwOzs7O047Ozs7OworMkY0QztLQU5HWEkgUkFESUNBTCBTVE9QO1NvOzA7T047PGNvbXBhdD4gNkI2Mjs7OztOOzs7OzsKKzJGNEQ7S0FOR1hJIFJBRElDQUwgREVBVEg7U287MDtPTjs8Y29tcGF0PiA2Qjc5Ozs7O047Ozs7OworMkY0RTtLQU5HWEkgUkFESUNBTCBXRUFQT047U287MDtPTjs8Y29tcGF0PiA2QkIzOzs7O047Ozs7OworMkY0RjtLQU5HWEkgUkFESUNBTCBETyBOT1Q7U287MDtPTjs8Y29tcGF0PiA2QkNCOzs7O047Ozs7OworMkY1MDtLQU5HWEkgUkFESUNBTCBDT01QQVJFO1NvOzA7T047PGNvbXBhdD4gNkJENDs7OztOOzs7OzsKKzJGNTE7S0FOR1hJIFJBRElDQUwgRlVSO1NvOzA7T047PGNvbXBhdD4gNkJEQjs7OztOOzs7OzsKKzJGNTI7S0FOR1hJIFJBRElDQUwgQ0xBTjtTbzswO09OOzxjb21wYXQ+IDZDMEY7Ozs7Tjs7Ozs7CisyRjUzO0tBTkdYSSBSQURJQ0FMIFNURUFNO1NvOzA7T047PGNvbXBhdD4gNkMxNDs7OztOOzs7OzsKKzJGNTQ7S0FOR1hJIFJBRElDQUwgV0FURVI7U287MDtPTjs8Y29tcGF0PiA2QzM0Ozs7O047Ozs7OworMkY1NTtLQU5HWEkgUkFESUNBTCBGSVJFO1NvOzA7T047PGNvbXBhdD4gNzA2Qjs7OztOOzs7OzsKKzJGNTY7S0FOR1hJIFJBRElDQUwgQ0xBVztTbzswO09OOzxjb21wYXQ+IDcyMkE7Ozs7Tjs7Ozs7CisyRjU3O0tBTkdYSSBSQURJQ0FMIEZBVEhFUjtTbzswO09OOzxjb21wYXQ+IDcyMzY7Ozs7Tjs7Ozs7CisyRjU4O0tBTkdYSSBSQURJQ0FMIERPVUJMRSBYO1NvOzA7T047PGNvbXBhdD4gNzIzQjs7OztOOzs7OzsKKzJGNTk7S0FOR1hJIFJBRElDQUwgSEFMRiBUUkVFIFRSVU5LO1NvOzA7T047PGNvbXBhdD4gNzIzRjs7OztOOzs7OzsKKzJGNUE7S0FOR1hJIFJBRElDQUwgU0xJQ0U7U287MDtPTjs8Y29tcGF0PiA3MjQ3Ozs7O047Ozs7OworMkY1QjtLQU5HWEkgUkFESUNBTCBGQU5HO1NvOzA7T047PGNvbXBhdD4gNzI1OTs7OztOOzs7OzsKKzJGNUM7S0FOR1hJIFJBRElDQUwgQ09XO1NvOzA7T047PGNvbXBhdD4gNzI1Qjs7OztOOzs7OzsKKzJGNUQ7S0FOR1hJIFJBRElDQUwgRE9HO1NvOzA7T047PGNvbXBhdD4gNzJBQzs7OztOOzs7OzsKKzJGNUU7S0FOR1hJIFJBRElDQUwgUFJPRk9VTkQ7U287MDtPTjs8Y29tcGF0PiA3Mzg0Ozs7O047Ozs7OworMkY1RjtLQU5HWEkgUkFESUNBTCBKQURFO1NvOzA7T047PGNvbXBhdD4gNzM4OTs7OztOOzs7OzsKKzJGNjA7S0FOR1hJIFJBRElDQUwgTUVMT047U287MDtPTjs8Y29tcGF0PiA3NERDOzs7O047Ozs7OworMkY2MTtLQU5HWEkgUkFESUNBTCBUSUxFO1NvOzA7T047PGNvbXBhdD4gNzRFNjs7OztOOzs7OzsKKzJGNjI7S0FOR1hJIFJBRElDQUwgU1dFRVQ7U287MDtPTjs8Y29tcGF0PiA3NTE4Ozs7O047Ozs7OworMkY2MztLQU5HWEkgUkFESUNBTCBMSUZFO1NvOzA7T047PGNvbXBhdD4gNzUxRjs7OztOOzs7OzsKKzJGNjQ7S0FOR1hJIFJBRElDQUwgVVNFO1NvOzA7T047PGNvbXBhdD4gNzUyODs7OztOOzs7OzsKKzJGNjU7S0FOR1hJIFJBRElDQUwgRklFTEQ7U287MDtPTjs8Y29tcGF0PiA3NTMwOzs7O047Ozs7OworMkY2NjtLQU5HWEkgUkFESUNBTCBCT0xUIE9GIENMT1RIO1NvOzA7T047PGNvbXBhdD4gNzU4Qjs7OztOOzs7OzsKKzJGNjc7S0FOR1hJIFJBRElDQUwgU0lDS05FU1M7U287MDtPTjs8Y29tcGF0PiA3NTkyOzs7O047Ozs7OworMkY2ODtLQU5HWEkgUkFESUNBTCBET1RURUQgVEVOVDtTbzswO09OOzxjb21wYXQ+IDc2NzY7Ozs7Tjs7Ozs7CisyRjY5O0tBTkdYSSBSQURJQ0FMIFdISVRFO1NvOzA7T047PGNvbXBhdD4gNzY3RDs7OztOOzs7OzsKKzJGNkE7S0FOR1hJIFJBRElDQUwgU0tJTjtTbzswO09OOzxjb21wYXQ+IDc2QUU7Ozs7Tjs7Ozs7CisyRjZCO0tBTkdYSSBSQURJQ0FMIERJU0g7U287MDtPTjs8Y29tcGF0PiA3NkJGOzs7O047Ozs7OworMkY2QztLQU5HWEkgUkFESUNBTCBFWUU7U287MDtPTjs8Y29tcGF0PiA3NkVFOzs7O047Ozs7OworMkY2RDtLQU5HWEkgUkFESUNBTCBTUEVBUjtTbzswO09OOzxjb21wYXQ+IDc3REI7Ozs7Tjs7Ozs7CisyRjZFO0tBTkdYSSBSQURJQ0FMIEFSUk9XO1NvOzA7T047PGNvbXBhdD4gNzdFMjs7OztOOzs7OzsKKzJGNkY7S0FOR1hJIFJBRElDQUwgU1RPTkU7U287MDtPTjs8Y29tcGF0PiA3N0YzOzs7O047Ozs7OworMkY3MDtLQU5HWEkgUkFESUNBTCBTUElSSVQ7U287MDtPTjs8Y29tcGF0PiA3OTNBOzs7O047Ozs7OworMkY3MTtLQU5HWEkgUkFESUNBTCBUUkFDSztTbzswO09OOzxjb21wYXQ+IDc5Qjg7Ozs7Tjs7Ozs7CisyRjcyO0tBTkdYSSBSQURJQ0FMIEdSQUlOO1NvOzA7T047PGNvbXBhdD4gNzlCRTs7OztOOzs7OzsKKzJGNzM7S0FOR1hJIFJBRElDQUwgQ0FWRTtTbzswO09OOzxjb21wYXQ+IDdBNzQ7Ozs7Tjs7Ozs7CisyRjc0O0tBTkdYSSBSQURJQ0FMIFNUQU5EO1NvOzA7T047PGNvbXBhdD4gN0FDQjs7OztOOzs7OzsKKzJGNzU7S0FOR1hJIFJBRElDQUwgQkFNQk9PO1NvOzA7T047PGNvbXBhdD4gN0FGOTs7OztOOzs7OzsKKzJGNzY7S0FOR1hJIFJBRElDQUwgUklDRTtTbzswO09OOzxjb21wYXQ+IDdDNzM7Ozs7Tjs7Ozs7CisyRjc3O0tBTkdYSSBSQURJQ0FMIFNJTEs7U287MDtPTjs8Y29tcGF0PiA3Q0Y4Ozs7O047Ozs7OworMkY3ODtLQU5HWEkgUkFESUNBTCBKQVI7U287MDtPTjs8Y29tcGF0PiA3RjM2Ozs7O047Ozs7OworMkY3OTtLQU5HWEkgUkFESUNBTCBORVQ7U287MDtPTjs8Y29tcGF0PiA3RjUxOzs7O047Ozs7OworMkY3QTtLQU5HWEkgUkFESUNBTCBTSEVFUDtTbzswO09OOzxjb21wYXQ+IDdGOEE7Ozs7Tjs7Ozs7CisyRjdCO0tBTkdYSSBSQURJQ0FMIEZFQVRIRVI7U287MDtPTjs8Y29tcGF0PiA3RkJEOzs7O047Ozs7OworMkY3QztLQU5HWEkgUkFESUNBTCBPTEQ7U287MDtPTjs8Y29tcGF0PiA4MDAxOzs7O047Ozs7OworMkY3RDtLQU5HWEkgUkFESUNBTCBBTkQ7U287MDtPTjs8Y29tcGF0PiA4MDBDOzs7O047Ozs7OworMkY3RTtLQU5HWEkgUkFESUNBTCBQTE9XO1NvOzA7T047PGNvbXBhdD4gODAxMjs7OztOOzs7OzsKKzJGN0Y7S0FOR1hJIFJBRElDQUwgRUFSO1NvOzA7T047PGNvbXBhdD4gODAzMzs7OztOOzs7OzsKKzJGODA7S0FOR1hJIFJBRElDQUwgQlJVU0g7U287MDtPTjs8Y29tcGF0PiA4MDdGOzs7O047Ozs7OworMkY4MTtLQU5HWEkgUkFESUNBTCBNRUFUO1NvOzA7T047PGNvbXBhdD4gODA4OTs7OztOOzs7OzsKKzJGODI7S0FOR1hJIFJBRElDQUwgTUlOSVNURVI7U287MDtPTjs8Y29tcGF0PiA4MUUzOzs7O047Ozs7OworMkY4MztLQU5HWEkgUkFESUNBTCBTRUxGO1NvOzA7T047PGNvbXBhdD4gODFFQTs7OztOOzs7OzsKKzJGODQ7S0FOR1hJIFJBRElDQUwgQVJSSVZFO1NvOzA7T047PGNvbXBhdD4gODFGMzs7OztOOzs7OzsKKzJGODU7S0FOR1hJIFJBRElDQUwgTU9SVEFSO1NvOzA7T047PGNvbXBhdD4gODFGQzs7OztOOzs7OzsKKzJGODY7S0FOR1hJIFJBRElDQUwgVE9OR1VFO1NvOzA7T047PGNvbXBhdD4gODIwQzs7OztOOzs7OzsKKzJGODc7S0FOR1hJIFJBRElDQUwgT1BQT1NFO1NvOzA7T047PGNvbXBhdD4gODIxQjs7OztOOzs7OzsKKzJGODg7S0FOR1hJIFJBRElDQUwgQk9BVDtTbzswO09OOzxjb21wYXQ+IDgyMUY7Ozs7Tjs7Ozs7CisyRjg5O0tBTkdYSSBSQURJQ0FMIFNUT1BQSU5HO1NvOzA7T047PGNvbXBhdD4gODI2RTs7OztOOzs7OzsKKzJGOEE7S0FOR1hJIFJBRElDQUwgQ09MT1I7U287MDtPTjs8Y29tcGF0PiA4MjcyOzs7O047Ozs7OworMkY4QjtLQU5HWEkgUkFESUNBTCBHUkFTUztTbzswO09OOzxjb21wYXQ+IDgyNzg7Ozs7Tjs7Ozs7CisyRjhDO0tBTkdYSSBSQURJQ0FMIFRJR0VSO1NvOzA7T047PGNvbXBhdD4gODY0RDs7OztOOzs7OzsKKzJGOEQ7S0FOR1hJIFJBRElDQUwgSU5TRUNUO1NvOzA7T047PGNvbXBhdD4gODY2Qjs7OztOOzs7OzsKKzJGOEU7S0FOR1hJIFJBRElDQUwgQkxPT0Q7U287MDtPTjs8Y29tcGF0PiA4ODQwOzs7O047Ozs7OworMkY4RjtLQU5HWEkgUkFESUNBTCBXQUxLIEVOQ0xPU1VSRTtTbzswO09OOzxjb21wYXQ+IDg4NEM7Ozs7Tjs7Ozs7CisyRjkwO0tBTkdYSSBSQURJQ0FMIENMT1RIRVM7U287MDtPTjs8Y29tcGF0PiA4ODYzOzs7O047Ozs7OworMkY5MTtLQU5HWEkgUkFESUNBTCBXRVNUO1NvOzA7T047PGNvbXBhdD4gODk3RTs7OztOOzs7OzsKKzJGOTI7S0FOR1hJIFJBRElDQUwgU0VFO1NvOzA7T047PGNvbXBhdD4gODk4Qjs7OztOOzs7OzsKKzJGOTM7S0FOR1hJIFJBRElDQUwgSE9STjtTbzswO09OOzxjb21wYXQ+IDg5RDI7Ozs7Tjs7Ozs7CisyRjk0O0tBTkdYSSBSQURJQ0FMIFNQRUVDSDtTbzswO09OOzxjb21wYXQ+IDhBMDA7Ozs7Tjs7Ozs7CisyRjk1O0tBTkdYSSBSQURJQ0FMIFZBTExFWTtTbzswO09OOzxjb21wYXQ+IDhDMzc7Ozs7Tjs7Ozs7CisyRjk2O0tBTkdYSSBSQURJQ0FMIEJFQU47U287MDtPTjs8Y29tcGF0PiA4QzQ2Ozs7O047Ozs7OworMkY5NztLQU5HWEkgUkFESUNBTCBQSUc7U287MDtPTjs8Y29tcGF0PiA4QzU1Ozs7O047Ozs7OworMkY5ODtLQU5HWEkgUkFESUNBTCBCQURHRVI7U287MDtPTjs8Y29tcGF0PiA4Qzc4Ozs7O047Ozs7OworMkY5OTtLQU5HWEkgUkFESUNBTCBTSEVMTDtTbzswO09OOzxjb21wYXQ+IDhDOUQ7Ozs7Tjs7Ozs7CisyRjlBO0tBTkdYSSBSQURJQ0FMIFJFRDtTbzswO09OOzxjb21wYXQ+IDhENjQ7Ozs7Tjs7Ozs7CisyRjlCO0tBTkdYSSBSQURJQ0FMIFJVTjtTbzswO09OOzxjb21wYXQ+IDhENzA7Ozs7Tjs7Ozs7CisyRjlDO0tBTkdYSSBSQURJQ0FMIEZPT1Q7U287MDtPTjs8Y29tcGF0PiA4REIzOzs7O047Ozs7OworMkY5RDtLQU5HWEkgUkFESUNBTCBCT0RZO1NvOzA7T047PGNvbXBhdD4gOEVBQjs7OztOOzs7OzsKKzJGOUU7S0FOR1hJIFJBRElDQUwgQ0FSVDtTbzswO09OOzxjb21wYXQ+IDhFQ0E7Ozs7Tjs7Ozs7CisyRjlGO0tBTkdYSSBSQURJQ0FMIEJJVFRFUjtTbzswO09OOzxjb21wYXQ+IDhGOUI7Ozs7Tjs7Ozs7CisyRkEwO0tBTkdYSSBSQURJQ0FMIE1PUk5JTkc7U287MDtPTjs8Y29tcGF0PiA4RkIwOzs7O047Ozs7OworMkZBMTtLQU5HWEkgUkFESUNBTCBXQUxLO1NvOzA7T047PGNvbXBhdD4gOEZCNTs7OztOOzs7OzsKKzJGQTI7S0FOR1hJIFJBRElDQUwgQ0lUWTtTbzswO09OOzxjb21wYXQ+IDkwOTE7Ozs7Tjs7Ozs7CisyRkEzO0tBTkdYSSBSQURJQ0FMIFdJTkU7U287MDtPTjs8Y29tcGF0PiA5MTQ5Ozs7O047Ozs7OworMkZBNDtLQU5HWEkgUkFESUNBTCBESVNUSU5HVUlTSDtTbzswO09OOzxjb21wYXQ+IDkxQzY7Ozs7Tjs7Ozs7CisyRkE1O0tBTkdYSSBSQURJQ0FMIFZJTExBR0U7U287MDtPTjs8Y29tcGF0PiA5MUNDOzs7O047Ozs7OworMkZBNjtLQU5HWEkgUkFESUNBTCBHT0xEO1NvOzA7T047PGNvbXBhdD4gOTFEMTs7OztOOzs7OzsKKzJGQTc7S0FOR1hJIFJBRElDQUwgTE9ORztTbzswO09OOzxjb21wYXQ+IDk1Nzc7Ozs7Tjs7Ozs7CisyRkE4O0tBTkdYSSBSQURJQ0FMIEdBVEU7U287MDtPTjs8Y29tcGF0PiA5NTgwOzs7O047Ozs7OworMkZBOTtLQU5HWEkgUkFESUNBTCBNT1VORDtTbzswO09OOzxjb21wYXQ+IDk2MUM7Ozs7Tjs7Ozs7CisyRkFBO0tBTkdYSSBSQURJQ0FMIFNMQVZFO1NvOzA7T047PGNvbXBhdD4gOTZCNjs7OztOOzs7OzsKKzJGQUI7S0FOR1hJIFJBRElDQUwgU0hPUlQgVEFJTEVEIEJJUkQ7U287MDtPTjs8Y29tcGF0PiA5NkI5Ozs7O047Ozs7OworMkZBQztLQU5HWEkgUkFESUNBTCBSQUlOO1NvOzA7T047PGNvbXBhdD4gOTZFODs7OztOOzs7OzsKKzJGQUQ7S0FOR1hJIFJBRElDQUwgQkxVRTtTbzswO09OOzxjb21wYXQ+IDk3NTE7Ozs7Tjs7Ozs7CisyRkFFO0tBTkdYSSBSQURJQ0FMIFdST05HO1NvOzA7T047PGNvbXBhdD4gOTc1RTs7OztOOzs7OzsKKzJGQUY7S0FOR1hJIFJBRElDQUwgRkFDRTtTbzswO09OOzxjb21wYXQ+IDk3NjI7Ozs7Tjs7Ozs7CisyRkIwO0tBTkdYSSBSQURJQ0FMIExFQVRIRVI7U287MDtPTjs8Y29tcGF0PiA5NzY5Ozs7O047Ozs7OworMkZCMTtLQU5HWEkgUkFESUNBTCBUQU5ORUQgTEVBVEhFUjtTbzswO09OOzxjb21wYXQ+IDk3Q0I7Ozs7Tjs7Ozs7CisyRkIyO0tBTkdYSSBSQURJQ0FMIExFRUs7U287MDtPTjs8Y29tcGF0PiA5N0VEOzs7O047Ozs7OworMkZCMztLQU5HWEkgUkFESUNBTCBTT1VORDtTbzswO09OOzxjb21wYXQ+IDk3RjM7Ozs7Tjs7Ozs7CisyRkI0O0tBTkdYSSBSQURJQ0FMIExFQUY7U287MDtPTjs8Y29tcGF0PiA5ODAxOzs7O047Ozs7OworMkZCNTtLQU5HWEkgUkFESUNBTCBXSU5EO1NvOzA7T047PGNvbXBhdD4gOThBODs7OztOOzs7OzsKKzJGQjY7S0FOR1hJIFJBRElDQUwgRkxZO1NvOzA7T047PGNvbXBhdD4gOThEQjs7OztOOzs7OzsKKzJGQjc7S0FOR1hJIFJBRElDQUwgRUFUO1NvOzA7T047PGNvbXBhdD4gOThERjs7OztOOzs7OzsKKzJGQjg7S0FOR1hJIFJBRElDQUwgSEVBRDtTbzswO09OOzxjb21wYXQ+IDk5OTY7Ozs7Tjs7Ozs7CisyRkI5O0tBTkdYSSBSQURJQ0FMIEZSQUdSQU5UO1NvOzA7T047PGNvbXBhdD4gOTk5OTs7OztOOzs7OzsKKzJGQkE7S0FOR1hJIFJBRElDQUwgSE9SU0U7U287MDtPTjs8Y29tcGF0PiA5OUFDOzs7O047Ozs7OworMkZCQjtLQU5HWEkgUkFESUNBTCBCT05FO1NvOzA7T047PGNvbXBhdD4gOUFBODs7OztOOzs7OzsKKzJGQkM7S0FOR1hJIFJBRElDQUwgVEFMTDtTbzswO09OOzxjb21wYXQ+IDlBRDg7Ozs7Tjs7Ozs7CisyRkJEO0tBTkdYSSBSQURJQ0FMIEhBSVI7U287MDtPTjs8Y29tcGF0PiA5QURGOzs7O047Ozs7OworMkZCRTtLQU5HWEkgUkFESUNBTCBGSUdIVDtTbzswO09OOzxjb21wYXQ+IDlCMjU7Ozs7Tjs7Ozs7CisyRkJGO0tBTkdYSSBSQURJQ0FMIFNBQ1JJRklDSUFMIFdJTkU7U287MDtPTjs8Y29tcGF0PiA5QjJGOzs7O047Ozs7OworMkZDMDtLQU5HWEkgUkFESUNBTCBDQVVMRFJPTjtTbzswO09OOzxjb21wYXQ+IDlCMzI7Ozs7Tjs7Ozs7CisyRkMxO0tBTkdYSSBSQURJQ0FMIEdIT1NUO1NvOzA7T047PGNvbXBhdD4gOUIzQzs7OztOOzs7OzsKKzJGQzI7S0FOR1hJIFJBRElDQUwgRklTSDtTbzswO09OOzxjb21wYXQ+IDlCNUE7Ozs7Tjs7Ozs7CisyRkMzO0tBTkdYSSBSQURJQ0FMIEJJUkQ7U287MDtPTjs8Y29tcGF0PiA5Q0U1Ozs7O047Ozs7OworMkZDNDtLQU5HWEkgUkFESUNBTCBTQUxUO1NvOzA7T047PGNvbXBhdD4gOUU3NTs7OztOOzs7OzsKKzJGQzU7S0FOR1hJIFJBRElDQUwgREVFUjtTbzswO09OOzxjb21wYXQ+IDlFN0Y7Ozs7Tjs7Ozs7CisyRkM2O0tBTkdYSSBSQURJQ0FMIFdIRUFUO1NvOzA7T047PGNvbXBhdD4gOUVBNTs7OztOOzs7OzsKKzJGQzc7S0FOR1hJIFJBRElDQUwgSEVNUDtTbzswO09OOzxjb21wYXQ+IDlFQkI7Ozs7Tjs7Ozs7CisyRkM4O0tBTkdYSSBSQURJQ0FMIFlFTExPVztTbzswO09OOzxjb21wYXQ+IDlFQzM7Ozs7Tjs7Ozs7CisyRkM5O0tBTkdYSSBSQURJQ0FMIE1JTExFVDtTbzswO09OOzxjb21wYXQ+IDlFQ0Q7Ozs7Tjs7Ozs7CisyRkNBO0tBTkdYSSBSQURJQ0FMIEJMQUNLO1NvOzA7T047PGNvbXBhdD4gOUVEMTs7OztOOzs7OzsKKzJGQ0I7S0FOR1hJIFJBRElDQUwgRU1CUk9JREVSWTtTbzswO09OOzxjb21wYXQ+IDlFRjk7Ozs7Tjs7Ozs7CisyRkNDO0tBTkdYSSBSQURJQ0FMIEZST0c7U287MDtPTjs8Y29tcGF0PiA5RUZEOzs7O047Ozs7OworMkZDRDtLQU5HWEkgUkFESUNBTCBUUklQT0Q7U287MDtPTjs8Y29tcGF0PiA5RjBFOzs7O047Ozs7OworMkZDRTtLQU5HWEkgUkFESUNBTCBEUlVNO1NvOzA7T047PGNvbXBhdD4gOUYxMzs7OztOOzs7OzsKKzJGQ0Y7S0FOR1hJIFJBRElDQUwgUkFUO1NvOzA7T047PGNvbXBhdD4gOUYyMDs7OztOOzs7OzsKKzJGRDA7S0FOR1hJIFJBRElDQUwgTk9TRTtTbzswO09OOzxjb21wYXQ+IDlGM0I7Ozs7Tjs7Ozs7CisyRkQxO0tBTkdYSSBSQURJQ0FMIEVWRU47U287MDtPTjs8Y29tcGF0PiA5RjRBOzs7O047Ozs7OworMkZEMjtLQU5HWEkgUkFESUNBTCBUT09USDtTbzswO09OOzxjb21wYXQ+IDlGNTI7Ozs7Tjs7Ozs7CisyRkQzO0tBTkdYSSBSQURJQ0FMIERSQUdPTjtTbzswO09OOzxjb21wYXQ+IDlGOEQ7Ozs7Tjs7Ozs7CisyRkQ0O0tBTkdYSSBSQURJQ0FMIFRVUlRMRTtTbzswO09OOzxjb21wYXQ+IDlGOUM7Ozs7Tjs7Ozs7CisyRkQ1O0tBTkdYSSBSQURJQ0FMIEZMVVRFO1NvOzA7T047PGNvbXBhdD4gOUZBMDs7OztOOzs7OzsKKzJGRjA7SURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIExFRlQgVE8gUklHSFQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRkYxO0lERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBBQk9WRSBUTyBCRUxPVztTbzswO09OOzs7OztOOzs7OzsKKzJGRjI7SURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIExFRlQgVE8gTUlERExFIEFORCBSSUdIVDtTbzswO09OOzs7OztOOzs7OzsKKzJGRjM7SURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIEFCT1ZFIFRPIE1JRERMRSBBTkQgQkVMT1c7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRkY0O0lERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBGVUxMIFNVUlJPVU5EO1NvOzA7T047Ozs7O047Ozs7OworMkZGNTtJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgU1VSUk9VTkQgRlJPTSBBQk9WRTtTbzswO09OOzs7OztOOzs7OzsKKzJGRjY7SURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZST00gQkVMT1c7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRkY3O0lERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBTVVJST1VORCBGUk9NIExFRlQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRkY4O0lERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBTVVJST1VORCBGUk9NIFVQUEVSIExFRlQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRkY5O0lERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBTVVJST1VORCBGUk9NIFVQUEVSIFJJR0hUO1NvOzA7T047Ozs7O047Ozs7OworMkZGQTtJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgU1VSUk9VTkQgRlJPTSBMT1dFUiBMRUZUO1NvOzA7T047Ozs7O047Ozs7OworMkZGQjtJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgT1ZFUkxBSUQ7U287MDtPTjs7Ozs7Tjs7Ozs7CiszMDAwO0lERU9HUkFQSElDIFNQQUNFO1pzOzA7V1M7PHdpZGU+IDAwMjA7Ozs7Tjs7Ozs7CiszMDAxO0lERU9HUkFQSElDIENPTU1BO1BvOzA7T047Ozs7O047Ozs7OworMzAwMjtJREVPR1JBUEhJQyBGVUxMIFNUT1A7UG87MDtPTjs7Ozs7TjtJREVPR1JBUEhJQyBQRVJJT0Q7Ozs7CiszMDAzO0RJVFRPIE1BUks7UG87MDtPTjs7Ozs7Tjs7Ozs7CiszMDA0O0pBUEFORVNFIElORFVTVFJJQUwgU1RBTkRBUkQgU1lNQk9MO1NvOzA7T047Ozs7O047Ozs7OworMzAwNTtJREVPR1JBUEhJQyBJVEVSQVRJT04gTUFSSztMbTswO0w7Ozs7O047Ozs7OworMzAwNjtJREVPR1JBUEhJQyBDTE9TSU5HIE1BUks7TG87MDtMOzs7OztOOzs7OzsKKzMwMDc7SURFT0dSQVBISUMgTlVNQkVSIFpFUk87Tmw7MDtMOzs7OzA7Tjs7Ozs7CiszMDA4O0xFRlQgQU5HTEUgQlJBQ0tFVDtQczswO09OOzs7OztZO09QRU5JTkcgQU5HTEUgQlJBQ0tFVDs7OzsKKzMwMDk7UklHSFQgQU5HTEUgQlJBQ0tFVDtQZTswO09OOzs7OztZO0NMT1NJTkcgQU5HTEUgQlJBQ0tFVDs7OzsKKzMwMEE7TEVGVCBET1VCTEUgQU5HTEUgQlJBQ0tFVDtQczswO09OOzs7OztZO09QRU5JTkcgRE9VQkxFIEFOR0xFIEJSQUNLRVQ7Ozs7CiszMDBCO1JJR0hUIERPVUJMRSBBTkdMRSBCUkFDS0VUO1BlOzA7T047Ozs7O1k7Q0xPU0lORyBET1VCTEUgQU5HTEUgQlJBQ0tFVDs7OzsKKzMwMEM7TEVGVCBDT1JORVIgQlJBQ0tFVDtQczswO09OOzs7OztZO09QRU5JTkcgQ09STkVSIEJSQUNLRVQ7Ozs7CiszMDBEO1JJR0hUIENPUk5FUiBCUkFDS0VUO1BlOzA7T047Ozs7O1k7Q0xPU0lORyBDT1JORVIgQlJBQ0tFVDs7OzsKKzMwMEU7TEVGVCBXSElURSBDT1JORVIgQlJBQ0tFVDtQczswO09OOzs7OztZO09QRU5JTkcgV0hJVEUgQ09STkVSIEJSQUNLRVQ7Ozs7CiszMDBGO1JJR0hUIFdISVRFIENPUk5FUiBCUkFDS0VUO1BlOzA7T047Ozs7O1k7Q0xPU0lORyBXSElURSBDT1JORVIgQlJBQ0tFVDs7OzsKKzMwMTA7TEVGVCBCTEFDSyBMRU5USUNVTEFSIEJSQUNLRVQ7UHM7MDtPTjs7Ozs7WTtPUEVOSU5HIEJMQUNLIExFTlRJQ1VMQVIgQlJBQ0tFVDs7OzsKKzMwMTE7UklHSFQgQkxBQ0sgTEVOVElDVUxBUiBCUkFDS0VUO1BlOzA7T047Ozs7O1k7Q0xPU0lORyBCTEFDSyBMRU5USUNVTEFSIEJSQUNLRVQ7Ozs7CiszMDEyO1BPU1RBTCBNQVJLO1NvOzA7T047Ozs7O047Ozs7OworMzAxMztHRVRBIE1BUks7U287MDtPTjs7Ozs7Tjs7Ozs7CiszMDE0O0xFRlQgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDtQczswO09OOzs7OztZO09QRU5JTkcgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDs7OzsKKzMwMTU7UklHSFQgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDtQZTswO09OOzs7OztZO0NMT1NJTkcgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDs7OzsKKzMwMTY7TEVGVCBXSElURSBMRU5USUNVTEFSIEJSQUNLRVQ7UHM7MDtPTjs7Ozs7WTtPUEVOSU5HIFdISVRFIExFTlRJQ1VMQVIgQlJBQ0tFVDs7OzsKKzMwMTc7UklHSFQgV0hJVEUgTEVOVElDVUxBUiBCUkFDS0VUO1BlOzA7T047Ozs7O1k7Q0xPU0lORyBXSElURSBMRU5USUNVTEFSIEJSQUNLRVQ7Ozs7CiszMDE4O0xFRlQgV0hJVEUgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDtQczswO09OOzs7OztZO09QRU5JTkcgV0hJVEUgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDs7OzsKKzMwMTk7UklHSFQgV0hJVEUgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDtQZTswO09OOzs7OztZO0NMT1NJTkcgV0hJVEUgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDs7OzsKKzMwMUE7TEVGVCBXSElURSBTUVVBUkUgQlJBQ0tFVDtQczswO09OOzs7OztZO09QRU5JTkcgV0hJVEUgU1FVQVJFIEJSQUNLRVQ7Ozs7CiszMDFCO1JJR0hUIFdISVRFIFNRVUFSRSBCUkFDS0VUO1BlOzA7T047Ozs7O1k7Q0xPU0lORyBXSElURSBTUVVBUkUgQlJBQ0tFVDs7OzsKKzMwMUM7V0FWRSBEQVNIO1BkOzA7T047Ozs7O047Ozs7OworMzAxRDtSRVZFUlNFRCBET1VCTEUgUFJJTUUgUVVPVEFUSU9OIE1BUks7UHM7MDtPTjs7Ozs7Tjs7Ozs7CiszMDFFO0RPVUJMRSBQUklNRSBRVU9UQVRJT04gTUFSSztQZTswO09OOzs7OztOOzs7OzsKKzMwMUY7TE9XIERPVUJMRSBQUklNRSBRVU9UQVRJT04gTUFSSztQZTswO09OOzs7OztOOzs7OzsKKzMwMjA7UE9TVEFMIE1BUksgRkFDRTtTbzswO09OOzs7OztOOzs7OzsKKzMwMjE7SEFOR1pIT1UgTlVNRVJBTCBPTkU7Tmw7MDtMOzs7OzE7Tjs7Ozs7CiszMDIyO0hBTkdaSE9VIE5VTUVSQUwgVFdPO05sOzA7TDs7OzsyO047Ozs7OworMzAyMztIQU5HWkhPVSBOVU1FUkFMIFRIUkVFO05sOzA7TDs7OzszO047Ozs7OworMzAyNDtIQU5HWkhPVSBOVU1FUkFMIEZPVVI7Tmw7MDtMOzs7OzQ7Tjs7Ozs7CiszMDI1O0hBTkdaSE9VIE5VTUVSQUwgRklWRTtObDswO0w7Ozs7NTtOOzs7OzsKKzMwMjY7SEFOR1pIT1UgTlVNRVJBTCBTSVg7Tmw7MDtMOzs7OzY7Tjs7Ozs7CiszMDI3O0hBTkdaSE9VIE5VTUVSQUwgU0VWRU47Tmw7MDtMOzs7Ozc7Tjs7Ozs7CiszMDI4O0hBTkdaSE9VIE5VTUVSQUwgRUlHSFQ7Tmw7MDtMOzs7Ozg7Tjs7Ozs7CiszMDI5O0hBTkdaSE9VIE5VTUVSQUwgTklORTtObDswO0w7Ozs7OTtOOzs7OzsKKzMwMkE7SURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLO01uOzIxODtOU007Ozs7O047Ozs7OworMzAyQjtJREVPR1JBUEhJQyBSSVNJTkcgVE9ORSBNQVJLO01uOzIyODtOU007Ozs7O047Ozs7OworMzAyQztJREVPR1JBUEhJQyBERVBBUlRJTkcgVE9ORSBNQVJLO01uOzIzMjtOU007Ozs7O047Ozs7OworMzAyRDtJREVPR1JBUEhJQyBFTlRFUklORyBUT05FIE1BUks7TW47MjIyO05TTTs7Ozs7Tjs7Ozs7CiszMDJFO0hBTkdVTCBTSU5HTEUgRE9UIFRPTkUgTUFSSztNbjsyMjQ7TlNNOzs7OztOOzs7OzsKKzMwMkY7SEFOR1VMIERPVUJMRSBET1QgVE9ORSBNQVJLO01uOzIyNDtOU007Ozs7O047Ozs7OworMzAzMDtXQVZZIERBU0g7UGQ7MDtPTjs7Ozs7Tjs7Ozs7CiszMDMxO1ZFUlRJQ0FMIEtBTkEgUkVQRUFUIE1BUks7TG07MDtMOzs7OztOOzs7OzsKKzMwMzI7VkVSVElDQUwgS0FOQSBSRVBFQVQgV0lUSCBWT0lDRUQgU09VTkQgTUFSSztMbTswO0w7Ozs7O047Ozs7OworMzAzMztWRVJUSUNBTCBLQU5BIFJFUEVBVCBNQVJLIFVQUEVSIEhBTEY7TG07MDtMOzs7OztOOzs7OzsKKzMwMzQ7VkVSVElDQUwgS0FOQSBSRVBFQVQgV0lUSCBWT0lDRUQgU09VTkQgTUFSSyBVUFBFUiBIQUxGO0xtOzA7TDs7Ozs7Tjs7Ozs7CiszMDM1O1ZFUlRJQ0FMIEtBTkEgUkVQRUFUIE1BUksgTE9XRVIgSEFMRjtMbTswO0w7Ozs7O047Ozs7OworMzAzNjtDSVJDTEVEIFBPU1RBTCBNQVJLO1NvOzA7T047PGNvbXBhdD4gMzAxMjs7OztOOzs7OzsKKzMwMzc7SURFT0dSQVBISUMgVEVMRUdSQVBIIExJTkUgRkVFRCBTRVBBUkFUT1IgU1lNQk9MO1NvOzA7T047Ozs7O047Ozs7OworMzAzODtIQU5HWkhPVSBOVU1FUkFMIFRFTjtObDswO0w7PGNvbXBhdD4gNTM0MTs7OzEwO047Ozs7OworMzAzOTtIQU5HWkhPVSBOVU1FUkFMIFRXRU5UWTtObDswO0w7PGNvbXBhdD4gNTM0NDs7OzIwO047Ozs7OworMzAzQTtIQU5HWkhPVSBOVU1FUkFMIFRISVJUWTtObDswO0w7PGNvbXBhdD4gNTM0NTs7OzMwO047Ozs7OworMzAzQjtWRVJUSUNBTCBJREVPR1JBUEhJQyBJVEVSQVRJT04gTUFSSztMbTswO0w7Ozs7O047Ozs7OworMzAzQztNQVNVIE1BUks7TG87MDtMOzs7OztOOzs7OzsKKzMwM0Q7UEFSVCBBTFRFUk5BVElPTiBNQVJLO1BvOzA7T047Ozs7O047Ozs7OworMzAzRTtJREVPR1JBUEhJQyBWQVJJQVRJT04gSU5ESUNBVE9SO1NvOzA7T047Ozs7O047Ozs7OworMzAzRjtJREVPR1JBUEhJQyBIQUxGIEZJTEwgU1BBQ0U7U287MDtPTjs7Ozs7Tjs7Ozs7CiszMDQxO0hJUkFHQU5BIExFVFRFUiBTTUFMTCBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDQyO0hJUkFHQU5BIExFVFRFUiBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDQzO0hJUkFHQU5BIExFVFRFUiBTTUFMTCBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDQ0O0hJUkFHQU5BIExFVFRFUiBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDQ1O0hJUkFHQU5BIExFVFRFUiBTTUFMTCBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDQ2O0hJUkFHQU5BIExFVFRFUiBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDQ3O0hJUkFHQU5BIExFVFRFUiBTTUFMTCBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDQ4O0hJUkFHQU5BIExFVFRFUiBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDQ5O0hJUkFHQU5BIExFVFRFUiBTTUFMTCBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDRBO0hJUkFHQU5BIExFVFRFUiBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDRCO0hJUkFHQU5BIExFVFRFUiBLQTtMbzswO0w7Ozs7O047Ozs7OworMzA0QztISVJBR0FOQSBMRVRURVIgR0E7TG87MDtMOzMwNEIgMzA5OTs7OztOOzs7OzsKKzMwNEQ7SElSQUdBTkEgTEVUVEVSIEtJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDRFO0hJUkFHQU5BIExFVFRFUiBHSTtMbzswO0w7MzA0RCAzMDk5Ozs7O047Ozs7OworMzA0RjtISVJBR0FOQSBMRVRURVIgS1U7TG87MDtMOzs7OztOOzs7OzsKKzMwNTA7SElSQUdBTkEgTEVUVEVSIEdVO0xvOzA7TDszMDRGIDMwOTk7Ozs7Tjs7Ozs7CiszMDUxO0hJUkFHQU5BIExFVFRFUiBLRTtMbzswO0w7Ozs7O047Ozs7OworMzA1MjtISVJBR0FOQSBMRVRURVIgR0U7TG87MDtMOzMwNTEgMzA5OTs7OztOOzs7OzsKKzMwNTM7SElSQUdBTkEgTEVUVEVSIEtPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDU0O0hJUkFHQU5BIExFVFRFUiBHTztMbzswO0w7MzA1MyAzMDk5Ozs7O047Ozs7OworMzA1NTtISVJBR0FOQSBMRVRURVIgU0E7TG87MDtMOzs7OztOOzs7OzsKKzMwNTY7SElSQUdBTkEgTEVUVEVSIFpBO0xvOzA7TDszMDU1IDMwOTk7Ozs7Tjs7Ozs7CiszMDU3O0hJUkFHQU5BIExFVFRFUiBTSTtMbzswO0w7Ozs7O047Ozs7OworMzA1ODtISVJBR0FOQSBMRVRURVIgWkk7TG87MDtMOzMwNTcgMzA5OTs7OztOOzs7OzsKKzMwNTk7SElSQUdBTkEgTEVUVEVSIFNVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDVBO0hJUkFHQU5BIExFVFRFUiBaVTtMbzswO0w7MzA1OSAzMDk5Ozs7O047Ozs7OworMzA1QjtISVJBR0FOQSBMRVRURVIgU0U7TG87MDtMOzs7OztOOzs7OzsKKzMwNUM7SElSQUdBTkEgTEVUVEVSIFpFO0xvOzA7TDszMDVCIDMwOTk7Ozs7Tjs7Ozs7CiszMDVEO0hJUkFHQU5BIExFVFRFUiBTTztMbzswO0w7Ozs7O047Ozs7OworMzA1RTtISVJBR0FOQSBMRVRURVIgWk87TG87MDtMOzMwNUQgMzA5OTs7OztOOzs7OzsKKzMwNUY7SElSQUdBTkEgTEVUVEVSIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDYwO0hJUkFHQU5BIExFVFRFUiBEQTtMbzswO0w7MzA1RiAzMDk5Ozs7O047Ozs7OworMzA2MTtISVJBR0FOQSBMRVRURVIgVEk7TG87MDtMOzs7OztOOzs7OzsKKzMwNjI7SElSQUdBTkEgTEVUVEVSIERJO0xvOzA7TDszMDYxIDMwOTk7Ozs7Tjs7Ozs7CiszMDYzO0hJUkFHQU5BIExFVFRFUiBTTUFMTCBUVTtMbzswO0w7Ozs7O047Ozs7OworMzA2NDtISVJBR0FOQSBMRVRURVIgVFU7TG87MDtMOzs7OztOOzs7OzsKKzMwNjU7SElSQUdBTkEgTEVUVEVSIERVO0xvOzA7TDszMDY0IDMwOTk7Ozs7Tjs7Ozs7CiszMDY2O0hJUkFHQU5BIExFVFRFUiBURTtMbzswO0w7Ozs7O047Ozs7OworMzA2NztISVJBR0FOQSBMRVRURVIgREU7TG87MDtMOzMwNjYgMzA5OTs7OztOOzs7OzsKKzMwNjg7SElSQUdBTkEgTEVUVEVSIFRPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDY5O0hJUkFHQU5BIExFVFRFUiBETztMbzswO0w7MzA2OCAzMDk5Ozs7O047Ozs7OworMzA2QTtISVJBR0FOQSBMRVRURVIgTkE7TG87MDtMOzs7OztOOzs7OzsKKzMwNkI7SElSQUdBTkEgTEVUVEVSIE5JO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDZDO0hJUkFHQU5BIExFVFRFUiBOVTtMbzswO0w7Ozs7O047Ozs7OworMzA2RDtISVJBR0FOQSBMRVRURVIgTkU7TG87MDtMOzs7OztOOzs7OzsKKzMwNkU7SElSQUdBTkEgTEVUVEVSIE5PO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDZGO0hJUkFHQU5BIExFVFRFUiBIQTtMbzswO0w7Ozs7O047Ozs7OworMzA3MDtISVJBR0FOQSBMRVRURVIgQkE7TG87MDtMOzMwNkYgMzA5OTs7OztOOzs7OzsKKzMwNzE7SElSQUdBTkEgTEVUVEVSIFBBO0xvOzA7TDszMDZGIDMwOUE7Ozs7Tjs7Ozs7CiszMDcyO0hJUkFHQU5BIExFVFRFUiBISTtMbzswO0w7Ozs7O047Ozs7OworMzA3MztISVJBR0FOQSBMRVRURVIgQkk7TG87MDtMOzMwNzIgMzA5OTs7OztOOzs7OzsKKzMwNzQ7SElSQUdBTkEgTEVUVEVSIFBJO0xvOzA7TDszMDcyIDMwOUE7Ozs7Tjs7Ozs7CiszMDc1O0hJUkFHQU5BIExFVFRFUiBIVTtMbzswO0w7Ozs7O047Ozs7OworMzA3NjtISVJBR0FOQSBMRVRURVIgQlU7TG87MDtMOzMwNzUgMzA5OTs7OztOOzs7OzsKKzMwNzc7SElSQUdBTkEgTEVUVEVSIFBVO0xvOzA7TDszMDc1IDMwOUE7Ozs7Tjs7Ozs7CiszMDc4O0hJUkFHQU5BIExFVFRFUiBIRTtMbzswO0w7Ozs7O047Ozs7OworMzA3OTtISVJBR0FOQSBMRVRURVIgQkU7TG87MDtMOzMwNzggMzA5OTs7OztOOzs7OzsKKzMwN0E7SElSQUdBTkEgTEVUVEVSIFBFO0xvOzA7TDszMDc4IDMwOUE7Ozs7Tjs7Ozs7CiszMDdCO0hJUkFHQU5BIExFVFRFUiBITztMbzswO0w7Ozs7O047Ozs7OworMzA3QztISVJBR0FOQSBMRVRURVIgQk87TG87MDtMOzMwN0IgMzA5OTs7OztOOzs7OzsKKzMwN0Q7SElSQUdBTkEgTEVUVEVSIFBPO0xvOzA7TDszMDdCIDMwOUE7Ozs7Tjs7Ozs7CiszMDdFO0hJUkFHQU5BIExFVFRFUiBNQTtMbzswO0w7Ozs7O047Ozs7OworMzA3RjtISVJBR0FOQSBMRVRURVIgTUk7TG87MDtMOzs7OztOOzs7OzsKKzMwODA7SElSQUdBTkEgTEVUVEVSIE1VO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDgxO0hJUkFHQU5BIExFVFRFUiBNRTtMbzswO0w7Ozs7O047Ozs7OworMzA4MjtISVJBR0FOQSBMRVRURVIgTU87TG87MDtMOzs7OztOOzs7OzsKKzMwODM7SElSQUdBTkEgTEVUVEVSIFNNQUxMIFlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDg0O0hJUkFHQU5BIExFVFRFUiBZQTtMbzswO0w7Ozs7O047Ozs7OworMzA4NTtISVJBR0FOQSBMRVRURVIgU01BTEwgWVU7TG87MDtMOzs7OztOOzs7OzsKKzMwODY7SElSQUdBTkEgTEVUVEVSIFlVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDg3O0hJUkFHQU5BIExFVFRFUiBTTUFMTCBZTztMbzswO0w7Ozs7O047Ozs7OworMzA4ODtISVJBR0FOQSBMRVRURVIgWU87TG87MDtMOzs7OztOOzs7OzsKKzMwODk7SElSQUdBTkEgTEVUVEVSIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDhBO0hJUkFHQU5BIExFVFRFUiBSSTtMbzswO0w7Ozs7O047Ozs7OworMzA4QjtISVJBR0FOQSBMRVRURVIgUlU7TG87MDtMOzs7OztOOzs7OzsKKzMwOEM7SElSQUdBTkEgTEVUVEVSIFJFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDhEO0hJUkFHQU5BIExFVFRFUiBSTztMbzswO0w7Ozs7O047Ozs7OworMzA4RTtISVJBR0FOQSBMRVRURVIgU01BTEwgV0E7TG87MDtMOzs7OztOOzs7OzsKKzMwOEY7SElSQUdBTkEgTEVUVEVSIFdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDkwO0hJUkFHQU5BIExFVFRFUiBXSTtMbzswO0w7Ozs7O047Ozs7OworMzA5MTtISVJBR0FOQSBMRVRURVIgV0U7TG87MDtMOzs7OztOOzs7OzsKKzMwOTI7SElSQUdBTkEgTEVUVEVSIFdPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDkzO0hJUkFHQU5BIExFVFRFUiBOO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDk0O0hJUkFHQU5BIExFVFRFUiBWVTtMbzswO0w7MzA0NiAzMDk5Ozs7O047Ozs7OworMzA5NTtISVJBR0FOQSBMRVRURVIgU01BTEwgS0E7TG87MDtMOzs7OztOOzs7OzsKKzMwOTY7SElSQUdBTkEgTEVUVEVSIFNNQUxMIEtFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDk5O0NPTUJJTklORyBLQVRBS0FOQS1ISVJBR0FOQSBWT0lDRUQgU09VTkQgTUFSSztNbjs4O05TTTs7Ozs7TjtOT04tU1BBQ0lORyBLQVRBS0FOQS1ISVJBR0FOQSBWT0lDRUQgU09VTkQgTUFSSzs7OzsKKzMwOUE7Q09NQklOSU5HIEtBVEFLQU5BLUhJUkFHQU5BIFNFTUktVk9JQ0VEIFNPVU5EIE1BUks7TW47ODtOU007Ozs7O047Tk9OLVNQQUNJTkcgS0FUQUtBTkEtSElSQUdBTkEgU0VNSS1WT0lDRUQgU09VTkQgTUFSSzs7OzsKKzMwOUI7S0FUQUtBTkEtSElSQUdBTkEgVk9JQ0VEIFNPVU5EIE1BUks7U2s7MDtPTjs8Y29tcGF0PiAwMDIwIDMwOTk7Ozs7Tjs7Ozs7CiszMDlDO0tBVEFLQU5BLUhJUkFHQU5BIFNFTUktVk9JQ0VEIFNPVU5EIE1BUks7U2s7MDtPTjs8Y29tcGF0PiAwMDIwIDMwOUE7Ozs7Tjs7Ozs7CiszMDlEO0hJUkFHQU5BIElURVJBVElPTiBNQVJLO0xtOzA7TDs7Ozs7Tjs7Ozs7CiszMDlFO0hJUkFHQU5BIFZPSUNFRCBJVEVSQVRJT04gTUFSSztMbTswO0w7MzA5RCAzMDk5Ozs7O047Ozs7OworMzA5RjtISVJBR0FOQSBESUdSQVBIIFlPUkk7TG87MDtMOzx2ZXJ0aWNhbD4gMzA4OCAzMDhBOzs7O047Ozs7OworMzBBMDtLQVRBS0FOQS1ISVJBR0FOQSBET1VCTEUgSFlQSEVOO1BkOzA7T047Ozs7O047Ozs7OworMzBBMTtLQVRBS0FOQSBMRVRURVIgU01BTEwgQTtMbzswO0w7Ozs7O047Ozs7OworMzBBMjtLQVRBS0FOQSBMRVRURVIgQTtMbzswO0w7Ozs7O047Ozs7OworMzBBMztLQVRBS0FOQSBMRVRURVIgU01BTEwgSTtMbzswO0w7Ozs7O047Ozs7OworMzBBNDtLQVRBS0FOQSBMRVRURVIgSTtMbzswO0w7Ozs7O047Ozs7OworMzBBNTtLQVRBS0FOQSBMRVRURVIgU01BTEwgVTtMbzswO0w7Ozs7O047Ozs7OworMzBBNjtLQVRBS0FOQSBMRVRURVIgVTtMbzswO0w7Ozs7O047Ozs7OworMzBBNztLQVRBS0FOQSBMRVRURVIgU01BTEwgRTtMbzswO0w7Ozs7O047Ozs7OworMzBBODtLQVRBS0FOQSBMRVRURVIgRTtMbzswO0w7Ozs7O047Ozs7OworMzBBOTtLQVRBS0FOQSBMRVRURVIgU01BTEwgTztMbzswO0w7Ozs7O047Ozs7OworMzBBQTtLQVRBS0FOQSBMRVRURVIgTztMbzswO0w7Ozs7O047Ozs7OworMzBBQjtLQVRBS0FOQSBMRVRURVIgS0E7TG87MDtMOzs7OztOOzs7OzsKKzMwQUM7S0FUQUtBTkEgTEVUVEVSIEdBO0xvOzA7TDszMEFCIDMwOTk7Ozs7Tjs7Ozs7CiszMEFEO0tBVEFLQU5BIExFVFRFUiBLSTtMbzswO0w7Ozs7O047Ozs7OworMzBBRTtLQVRBS0FOQSBMRVRURVIgR0k7TG87MDtMOzMwQUQgMzA5OTs7OztOOzs7OzsKKzMwQUY7S0FUQUtBTkEgTEVUVEVSIEtVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEIwO0tBVEFLQU5BIExFVFRFUiBHVTtMbzswO0w7MzBBRiAzMDk5Ozs7O047Ozs7OworMzBCMTtLQVRBS0FOQSBMRVRURVIgS0U7TG87MDtMOzs7OztOOzs7OzsKKzMwQjI7S0FUQUtBTkEgTEVUVEVSIEdFO0xvOzA7TDszMEIxIDMwOTk7Ozs7Tjs7Ozs7CiszMEIzO0tBVEFLQU5BIExFVFRFUiBLTztMbzswO0w7Ozs7O047Ozs7OworMzBCNDtLQVRBS0FOQSBMRVRURVIgR087TG87MDtMOzMwQjMgMzA5OTs7OztOOzs7OzsKKzMwQjU7S0FUQUtBTkEgTEVUVEVSIFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEI2O0tBVEFLQU5BIExFVFRFUiBaQTtMbzswO0w7MzBCNSAzMDk5Ozs7O047Ozs7OworMzBCNztLQVRBS0FOQSBMRVRURVIgU0k7TG87MDtMOzs7OztOOzs7OzsKKzMwQjg7S0FUQUtBTkEgTEVUVEVSIFpJO0xvOzA7TDszMEI3IDMwOTk7Ozs7Tjs7Ozs7CiszMEI5O0tBVEFLQU5BIExFVFRFUiBTVTtMbzswO0w7Ozs7O047Ozs7OworMzBCQTtLQVRBS0FOQSBMRVRURVIgWlU7TG87MDtMOzMwQjkgMzA5OTs7OztOOzs7OzsKKzMwQkI7S0FUQUtBTkEgTEVUVEVSIFNFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEJDO0tBVEFLQU5BIExFVFRFUiBaRTtMbzswO0w7MzBCQiAzMDk5Ozs7O047Ozs7OworMzBCRDtLQVRBS0FOQSBMRVRURVIgU087TG87MDtMOzs7OztOOzs7OzsKKzMwQkU7S0FUQUtBTkEgTEVUVEVSIFpPO0xvOzA7TDszMEJEIDMwOTk7Ozs7Tjs7Ozs7CiszMEJGO0tBVEFLQU5BIExFVFRFUiBUQTtMbzswO0w7Ozs7O047Ozs7OworMzBDMDtLQVRBS0FOQSBMRVRURVIgREE7TG87MDtMOzMwQkYgMzA5OTs7OztOOzs7OzsKKzMwQzE7S0FUQUtBTkEgTEVUVEVSIFRJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEMyO0tBVEFLQU5BIExFVFRFUiBESTtMbzswO0w7MzBDMSAzMDk5Ozs7O047Ozs7OworMzBDMztLQVRBS0FOQSBMRVRURVIgU01BTEwgVFU7TG87MDtMOzs7OztOOzs7OzsKKzMwQzQ7S0FUQUtBTkEgTEVUVEVSIFRVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEM1O0tBVEFLQU5BIExFVFRFUiBEVTtMbzswO0w7MzBDNCAzMDk5Ozs7O047Ozs7OworMzBDNjtLQVRBS0FOQSBMRVRURVIgVEU7TG87MDtMOzs7OztOOzs7OzsKKzMwQzc7S0FUQUtBTkEgTEVUVEVSIERFO0xvOzA7TDszMEM2IDMwOTk7Ozs7Tjs7Ozs7CiszMEM4O0tBVEFLQU5BIExFVFRFUiBUTztMbzswO0w7Ozs7O047Ozs7OworMzBDOTtLQVRBS0FOQSBMRVRURVIgRE87TG87MDtMOzMwQzggMzA5OTs7OztOOzs7OzsKKzMwQ0E7S0FUQUtBTkEgTEVUVEVSIE5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMENCO0tBVEFLQU5BIExFVFRFUiBOSTtMbzswO0w7Ozs7O047Ozs7OworMzBDQztLQVRBS0FOQSBMRVRURVIgTlU7TG87MDtMOzs7OztOOzs7OzsKKzMwQ0Q7S0FUQUtBTkEgTEVUVEVSIE5FO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMENFO0tBVEFLQU5BIExFVFRFUiBOTztMbzswO0w7Ozs7O047Ozs7OworMzBDRjtLQVRBS0FOQSBMRVRURVIgSEE7TG87MDtMOzs7OztOOzs7OzsKKzMwRDA7S0FUQUtBTkEgTEVUVEVSIEJBO0xvOzA7TDszMENGIDMwOTk7Ozs7Tjs7Ozs7CiszMEQxO0tBVEFLQU5BIExFVFRFUiBQQTtMbzswO0w7MzBDRiAzMDlBOzs7O047Ozs7OworMzBEMjtLQVRBS0FOQSBMRVRURVIgSEk7TG87MDtMOzs7OztOOzs7OzsKKzMwRDM7S0FUQUtBTkEgTEVUVEVSIEJJO0xvOzA7TDszMEQyIDMwOTk7Ozs7Tjs7Ozs7CiszMEQ0O0tBVEFLQU5BIExFVFRFUiBQSTtMbzswO0w7MzBEMiAzMDlBOzs7O047Ozs7OworMzBENTtLQVRBS0FOQSBMRVRURVIgSFU7TG87MDtMOzs7OztOOzs7OzsKKzMwRDY7S0FUQUtBTkEgTEVUVEVSIEJVO0xvOzA7TDszMEQ1IDMwOTk7Ozs7Tjs7Ozs7CiszMEQ3O0tBVEFLQU5BIExFVFRFUiBQVTtMbzswO0w7MzBENSAzMDlBOzs7O047Ozs7OworMzBEODtLQVRBS0FOQSBMRVRURVIgSEU7TG87MDtMOzs7OztOOzs7OzsKKzMwRDk7S0FUQUtBTkEgTEVUVEVSIEJFO0xvOzA7TDszMEQ4IDMwOTk7Ozs7Tjs7Ozs7CiszMERBO0tBVEFLQU5BIExFVFRFUiBQRTtMbzswO0w7MzBEOCAzMDlBOzs7O047Ozs7OworMzBEQjtLQVRBS0FOQSBMRVRURVIgSE87TG87MDtMOzs7OztOOzs7OzsKKzMwREM7S0FUQUtBTkEgTEVUVEVSIEJPO0xvOzA7TDszMERCIDMwOTk7Ozs7Tjs7Ozs7CiszMEREO0tBVEFLQU5BIExFVFRFUiBQTztMbzswO0w7MzBEQiAzMDlBOzs7O047Ozs7OworMzBERTtLQVRBS0FOQSBMRVRURVIgTUE7TG87MDtMOzs7OztOOzs7OzsKKzMwREY7S0FUQUtBTkEgTEVUVEVSIE1JO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEUwO0tBVEFLQU5BIExFVFRFUiBNVTtMbzswO0w7Ozs7O047Ozs7OworMzBFMTtLQVRBS0FOQSBMRVRURVIgTUU7TG87MDtMOzs7OztOOzs7OzsKKzMwRTI7S0FUQUtBTkEgTEVUVEVSIE1PO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEUzO0tBVEFLQU5BIExFVFRFUiBTTUFMTCBZQTtMbzswO0w7Ozs7O047Ozs7OworMzBFNDtLQVRBS0FOQSBMRVRURVIgWUE7TG87MDtMOzs7OztOOzs7OzsKKzMwRTU7S0FUQUtBTkEgTEVUVEVSIFNNQUxMIFlVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEU2O0tBVEFLQU5BIExFVFRFUiBZVTtMbzswO0w7Ozs7O047Ozs7OworMzBFNztLQVRBS0FOQSBMRVRURVIgU01BTEwgWU87TG87MDtMOzs7OztOOzs7OzsKKzMwRTg7S0FUQUtBTkEgTEVUVEVSIFlPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEU5O0tBVEFLQU5BIExFVFRFUiBSQTtMbzswO0w7Ozs7O047Ozs7OworMzBFQTtLQVRBS0FOQSBMRVRURVIgUkk7TG87MDtMOzs7OztOOzs7OzsKKzMwRUI7S0FUQUtBTkEgTEVUVEVSIFJVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEVDO0tBVEFLQU5BIExFVFRFUiBSRTtMbzswO0w7Ozs7O047Ozs7OworMzBFRDtLQVRBS0FOQSBMRVRURVIgUk87TG87MDtMOzs7OztOOzs7OzsKKzMwRUU7S0FUQUtBTkEgTEVUVEVSIFNNQUxMIFdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEVGO0tBVEFLQU5BIExFVFRFUiBXQTtMbzswO0w7Ozs7O047Ozs7OworMzBGMDtLQVRBS0FOQSBMRVRURVIgV0k7TG87MDtMOzs7OztOOzs7OzsKKzMwRjE7S0FUQUtBTkEgTEVUVEVSIFdFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEYyO0tBVEFLQU5BIExFVFRFUiBXTztMbzswO0w7Ozs7O047Ozs7OworMzBGMztLQVRBS0FOQSBMRVRURVIgTjtMbzswO0w7Ozs7O047Ozs7OworMzBGNDtLQVRBS0FOQSBMRVRURVIgVlU7TG87MDtMOzMwQTYgMzA5OTs7OztOOzs7OzsKKzMwRjU7S0FUQUtBTkEgTEVUVEVSIFNNQUxMIEtBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEY2O0tBVEFLQU5BIExFVFRFUiBTTUFMTCBLRTtMbzswO0w7Ozs7O047Ozs7OworMzBGNztLQVRBS0FOQSBMRVRURVIgVkE7TG87MDtMOzMwRUYgMzA5OTs7OztOOzs7OzsKKzMwRjg7S0FUQUtBTkEgTEVUVEVSIFZJO0xvOzA7TDszMEYwIDMwOTk7Ozs7Tjs7Ozs7CiszMEY5O0tBVEFLQU5BIExFVFRFUiBWRTtMbzswO0w7MzBGMSAzMDk5Ozs7O047Ozs7OworMzBGQTtLQVRBS0FOQSBMRVRURVIgVk87TG87MDtMOzMwRjIgMzA5OTs7OztOOzs7OzsKKzMwRkI7S0FUQUtBTkEgTUlERExFIERPVDtQYzswO09OOzs7OztOOzs7OzsKKzMwRkM7S0FUQUtBTkEtSElSQUdBTkEgUFJPTE9OR0VEIFNPVU5EIE1BUks7TG07MDtMOzs7OztOOzs7OzsKKzMwRkQ7S0FUQUtBTkEgSVRFUkFUSU9OIE1BUks7TG07MDtMOzs7OztOOzs7OzsKKzMwRkU7S0FUQUtBTkEgVk9JQ0VEIElURVJBVElPTiBNQVJLO0xtOzA7TDszMEZEIDMwOTk7Ozs7Tjs7Ozs7CiszMEZGO0tBVEFLQU5BIERJR1JBUEggS09UTztMbzswO0w7PHZlcnRpY2FsPiAzMEIzIDMwQzg7Ozs7Tjs7Ozs7CiszMTA1O0JPUE9NT0ZPIExFVFRFUiBCO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTA2O0JPUE9NT0ZPIExFVFRFUiBQO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTA3O0JPUE9NT0ZPIExFVFRFUiBNO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTA4O0JPUE9NT0ZPIExFVFRFUiBGO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTA5O0JPUE9NT0ZPIExFVFRFUiBEO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTBBO0JPUE9NT0ZPIExFVFRFUiBUO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTBCO0JPUE9NT0ZPIExFVFRFUiBOO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTBDO0JPUE9NT0ZPIExFVFRFUiBMO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTBEO0JPUE9NT0ZPIExFVFRFUiBHO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTBFO0JPUE9NT0ZPIExFVFRFUiBLO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTBGO0JPUE9NT0ZPIExFVFRFUiBIO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTEwO0JPUE9NT0ZPIExFVFRFUiBKO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTExO0JPUE9NT0ZPIExFVFRFUiBRO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTEyO0JPUE9NT0ZPIExFVFRFUiBYO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTEzO0JPUE9NT0ZPIExFVFRFUiBaSDtMbzswO0w7Ozs7O047Ozs7OworMzExNDtCT1BPTU9GTyBMRVRURVIgQ0g7TG87MDtMOzs7OztOOzs7OzsKKzMxMTU7Qk9QT01PRk8gTEVUVEVSIFNIO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTE2O0JPUE9NT0ZPIExFVFRFUiBSO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTE3O0JPUE9NT0ZPIExFVFRFUiBaO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTE4O0JPUE9NT0ZPIExFVFRFUiBDO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTE5O0JPUE9NT0ZPIExFVFRFUiBTO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTFBO0JPUE9NT0ZPIExFVFRFUiBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTFCO0JPUE9NT0ZPIExFVFRFUiBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTFDO0JPUE9NT0ZPIExFVFRFUiBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTFEO0JPUE9NT0ZPIExFVFRFUiBFSDtMbzswO0w7Ozs7O047Ozs7OworMzExRTtCT1BPTU9GTyBMRVRURVIgQUk7TG87MDtMOzs7OztOOzs7OzsKKzMxMUY7Qk9QT01PRk8gTEVUVEVSIEVJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTIwO0JPUE9NT0ZPIExFVFRFUiBBVTtMbzswO0w7Ozs7O047Ozs7OworMzEyMTtCT1BPTU9GTyBMRVRURVIgT1U7TG87MDtMOzs7OztOOzs7OzsKKzMxMjI7Qk9QT01PRk8gTEVUVEVSIEFOO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTIzO0JPUE9NT0ZPIExFVFRFUiBFTjtMbzswO0w7Ozs7O047Ozs7OworMzEyNDtCT1BPTU9GTyBMRVRURVIgQU5HO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTI1O0JPUE9NT0ZPIExFVFRFUiBFTkc7TG87MDtMOzs7OztOOzs7OzsKKzMxMjY7Qk9QT01PRk8gTEVUVEVSIEVSO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTI3O0JPUE9NT0ZPIExFVFRFUiBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTI4O0JPUE9NT0ZPIExFVFRFUiBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTI5O0JPUE9NT0ZPIExFVFRFUiBJVTtMbzswO0w7Ozs7O047Ozs7OworMzEyQTtCT1BPTU9GTyBMRVRURVIgVjtMbzswO0w7Ozs7O047Ozs7OworMzEyQjtCT1BPTU9GTyBMRVRURVIgTkc7TG87MDtMOzs7OztOOzs7OzsKKzMxMkM7Qk9QT01PRk8gTEVUVEVSIEdOO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTMxO0hBTkdVTCBMRVRURVIgS0lZRU9LO0xvOzA7TDs8Y29tcGF0PiAxMTAwOzs7O047SEFOR1VMIExFVFRFUiBHSVlFT0c7Ozs7CiszMTMyO0hBTkdVTCBMRVRURVIgU1NBTkdLSVlFT0s7TG87MDtMOzxjb21wYXQ+IDExMDE7Ozs7TjtIQU5HVUwgTEVUVEVSIFNTQU5HIEdJWUVPRzs7OzsKKzMxMzM7SEFOR1VMIExFVFRFUiBLSVlFT0stU0lPUztMbzswO0w7PGNvbXBhdD4gMTFBQTs7OztOO0hBTkdVTCBMRVRURVIgR0lZRU9HIFNJT1M7Ozs7CiszMTM0O0hBTkdVTCBMRVRURVIgTklFVU47TG87MDtMOzxjb21wYXQ+IDExMDI7Ozs7Tjs7Ozs7CiszMTM1O0hBTkdVTCBMRVRURVIgTklFVU4tQ0lFVUM7TG87MDtMOzxjb21wYXQ+IDExQUM7Ozs7TjtIQU5HVUwgTEVUVEVSIE5JRVVOIEpJRVVKOzs7OworMzEzNjtIQU5HVUwgTEVUVEVSIE5JRVVOLUhJRVVIO0xvOzA7TDs8Y29tcGF0PiAxMUFEOzs7O047SEFOR1VMIExFVFRFUiBOSUVVTiBISUVVSDs7OzsKKzMxMzc7SEFOR1VMIExFVFRFUiBUSUtFVVQ7TG87MDtMOzxjb21wYXQ+IDExMDM7Ozs7TjtIQU5HVUwgTEVUVEVSIERJR0VVRDs7OzsKKzMxMzg7SEFOR1VMIExFVFRFUiBTU0FOR1RJS0VVVDtMbzswO0w7PGNvbXBhdD4gMTEwNDs7OztOO0hBTkdVTCBMRVRURVIgU1NBTkcgRElHRVVEOzs7OworMzEzOTtIQU5HVUwgTEVUVEVSIFJJRVVMO0xvOzA7TDs8Y29tcGF0PiAxMTA1Ozs7O047SEFOR1VMIExFVFRFUiBMSUVVTDs7OzsKKzMxM0E7SEFOR1VMIExFVFRFUiBSSUVVTC1LSVlFT0s7TG87MDtMOzxjb21wYXQ+IDExQjA7Ozs7TjtIQU5HVUwgTEVUVEVSIExJRVVMIEdJWUVPRzs7OzsKKzMxM0I7SEFOR1VMIExFVFRFUiBSSUVVTC1NSUVVTTtMbzswO0w7PGNvbXBhdD4gMTFCMTs7OztOO0hBTkdVTCBMRVRURVIgTElFVUwgTUlFVU07Ozs7CiszMTNDO0hBTkdVTCBMRVRURVIgUklFVUwtUElFVVA7TG87MDtMOzxjb21wYXQ+IDExQjI7Ozs7TjtIQU5HVUwgTEVUVEVSIExJRVVMIEJJRVVCOzs7OworMzEzRDtIQU5HVUwgTEVUVEVSIFJJRVVMLVNJT1M7TG87MDtMOzxjb21wYXQ+IDExQjM7Ozs7TjtIQU5HVUwgTEVUVEVSIExJRVVMIFNJT1M7Ozs7CiszMTNFO0hBTkdVTCBMRVRURVIgUklFVUwtVEhJRVVUSDtMbzswO0w7PGNvbXBhdD4gMTFCNDs7OztOO0hBTkdVTCBMRVRURVIgTElFVUwgVElFVVQ7Ozs7CiszMTNGO0hBTkdVTCBMRVRURVIgUklFVUwtUEhJRVVQSDtMbzswO0w7PGNvbXBhdD4gMTFCNTs7OztOO0hBTkdVTCBMRVRURVIgTElFVUwgUElFVVA7Ozs7CiszMTQwO0hBTkdVTCBMRVRURVIgUklFVUwtSElFVUg7TG87MDtMOzxjb21wYXQ+IDExMUE7Ozs7TjtIQU5HVUwgTEVUVEVSIExJRVVMIEhJRVVIOzs7OworMzE0MTtIQU5HVUwgTEVUVEVSIE1JRVVNO0xvOzA7TDs8Y29tcGF0PiAxMTA2Ozs7O047Ozs7OworMzE0MjtIQU5HVUwgTEVUVEVSIFBJRVVQO0xvOzA7TDs8Y29tcGF0PiAxMTA3Ozs7O047SEFOR1VMIExFVFRFUiBCSUVVQjs7OzsKKzMxNDM7SEFOR1VMIExFVFRFUiBTU0FOR1BJRVVQO0xvOzA7TDs8Y29tcGF0PiAxMTA4Ozs7O047SEFOR1VMIExFVFRFUiBTU0FORyBCSUVVQjs7OzsKKzMxNDQ7SEFOR1VMIExFVFRFUiBQSUVVUC1TSU9TO0xvOzA7TDs8Y29tcGF0PiAxMTIxOzs7O047SEFOR1VMIExFVFRFUiBCSUVVQiBTSU9TOzs7OworMzE0NTtIQU5HVUwgTEVUVEVSIFNJT1M7TG87MDtMOzxjb21wYXQ+IDExMDk7Ozs7Tjs7Ozs7CiszMTQ2O0hBTkdVTCBMRVRURVIgU1NBTkdTSU9TO0xvOzA7TDs8Y29tcGF0PiAxMTBBOzs7O047SEFOR1VMIExFVFRFUiBTU0FORyBTSU9TOzs7OworMzE0NztIQU5HVUwgTEVUVEVSIElFVU5HO0xvOzA7TDs8Y29tcGF0PiAxMTBCOzs7O047Ozs7OworMzE0ODtIQU5HVUwgTEVUVEVSIENJRVVDO0xvOzA7TDs8Y29tcGF0PiAxMTBDOzs7O047SEFOR1VMIExFVFRFUiBKSUVVSjs7OzsKKzMxNDk7SEFOR1VMIExFVFRFUiBTU0FOR0NJRVVDO0xvOzA7TDs8Y29tcGF0PiAxMTBEOzs7O047SEFOR1VMIExFVFRFUiBTU0FORyBKSUVVSjs7OzsKKzMxNEE7SEFOR1VMIExFVFRFUiBDSElFVUNIO0xvOzA7TDs8Y29tcGF0PiAxMTBFOzs7O047SEFOR1VMIExFVFRFUiBDSUVVQzs7OzsKKzMxNEI7SEFOR1VMIExFVFRFUiBLSElFVUtIO0xvOzA7TDs8Y29tcGF0PiAxMTBGOzs7O047SEFOR1VMIExFVFRFUiBLSVlFT0s7Ozs7CiszMTRDO0hBTkdVTCBMRVRURVIgVEhJRVVUSDtMbzswO0w7PGNvbXBhdD4gMTExMDs7OztOO0hBTkdVTCBMRVRURVIgVElFVVQ7Ozs7CiszMTREO0hBTkdVTCBMRVRURVIgUEhJRVVQSDtMbzswO0w7PGNvbXBhdD4gMTExMTs7OztOO0hBTkdVTCBMRVRURVIgUElFVVA7Ozs7CiszMTRFO0hBTkdVTCBMRVRURVIgSElFVUg7TG87MDtMOzxjb21wYXQ+IDExMTI7Ozs7Tjs7Ozs7CiszMTRGO0hBTkdVTCBMRVRURVIgQTtMbzswO0w7PGNvbXBhdD4gMTE2MTs7OztOOzs7OzsKKzMxNTA7SEFOR1VMIExFVFRFUiBBRTtMbzswO0w7PGNvbXBhdD4gMTE2Mjs7OztOOzs7OzsKKzMxNTE7SEFOR1VMIExFVFRFUiBZQTtMbzswO0w7PGNvbXBhdD4gMTE2Mzs7OztOOzs7OzsKKzMxNTI7SEFOR1VMIExFVFRFUiBZQUU7TG87MDtMOzxjb21wYXQ+IDExNjQ7Ozs7Tjs7Ozs7CiszMTUzO0hBTkdVTCBMRVRURVIgRU87TG87MDtMOzxjb21wYXQ+IDExNjU7Ozs7Tjs7Ozs7CiszMTU0O0hBTkdVTCBMRVRURVIgRTtMbzswO0w7PGNvbXBhdD4gMTE2Njs7OztOOzs7OzsKKzMxNTU7SEFOR1VMIExFVFRFUiBZRU87TG87MDtMOzxjb21wYXQ+IDExNjc7Ozs7Tjs7Ozs7CiszMTU2O0hBTkdVTCBMRVRURVIgWUU7TG87MDtMOzxjb21wYXQ+IDExNjg7Ozs7Tjs7Ozs7CiszMTU3O0hBTkdVTCBMRVRURVIgTztMbzswO0w7PGNvbXBhdD4gMTE2OTs7OztOOzs7OzsKKzMxNTg7SEFOR1VMIExFVFRFUiBXQTtMbzswO0w7PGNvbXBhdD4gMTE2QTs7OztOOzs7OzsKKzMxNTk7SEFOR1VMIExFVFRFUiBXQUU7TG87MDtMOzxjb21wYXQ+IDExNkI7Ozs7Tjs7Ozs7CiszMTVBO0hBTkdVTCBMRVRURVIgT0U7TG87MDtMOzxjb21wYXQ+IDExNkM7Ozs7Tjs7Ozs7CiszMTVCO0hBTkdVTCBMRVRURVIgWU87TG87MDtMOzxjb21wYXQ+IDExNkQ7Ozs7Tjs7Ozs7CiszMTVDO0hBTkdVTCBMRVRURVIgVTtMbzswO0w7PGNvbXBhdD4gMTE2RTs7OztOOzs7OzsKKzMxNUQ7SEFOR1VMIExFVFRFUiBXRU87TG87MDtMOzxjb21wYXQ+IDExNkY7Ozs7Tjs7Ozs7CiszMTVFO0hBTkdVTCBMRVRURVIgV0U7TG87MDtMOzxjb21wYXQ+IDExNzA7Ozs7Tjs7Ozs7CiszMTVGO0hBTkdVTCBMRVRURVIgV0k7TG87MDtMOzxjb21wYXQ+IDExNzE7Ozs7Tjs7Ozs7CiszMTYwO0hBTkdVTCBMRVRURVIgWVU7TG87MDtMOzxjb21wYXQ+IDExNzI7Ozs7Tjs7Ozs7CiszMTYxO0hBTkdVTCBMRVRURVIgRVU7TG87MDtMOzxjb21wYXQ+IDExNzM7Ozs7Tjs7Ozs7CiszMTYyO0hBTkdVTCBMRVRURVIgWUk7TG87MDtMOzxjb21wYXQ+IDExNzQ7Ozs7Tjs7Ozs7CiszMTYzO0hBTkdVTCBMRVRURVIgSTtMbzswO0w7PGNvbXBhdD4gMTE3NTs7OztOOzs7OzsKKzMxNjQ7SEFOR1VMIEZJTExFUjtMbzswO0w7PGNvbXBhdD4gMTE2MDs7OztOO0hBTkdVTCBDQUUgT007Ozs7CiszMTY1O0hBTkdVTCBMRVRURVIgU1NBTkdOSUVVTjtMbzswO0w7PGNvbXBhdD4gMTExNDs7OztOO0hBTkdVTCBMRVRURVIgU1NBTkcgTklFVU47Ozs7CiszMTY2O0hBTkdVTCBMRVRURVIgTklFVU4tVElLRVVUO0xvOzA7TDs8Y29tcGF0PiAxMTE1Ozs7O047SEFOR1VMIExFVFRFUiBOSUVVTiBESUdFVUQ7Ozs7CiszMTY3O0hBTkdVTCBMRVRURVIgTklFVU4tU0lPUztMbzswO0w7PGNvbXBhdD4gMTFDNzs7OztOO0hBTkdVTCBMRVRURVIgTklFVU4gU0lPUzs7OzsKKzMxNjg7SEFOR1VMIExFVFRFUiBOSUVVTi1QQU5TSU9TO0xvOzA7TDs8Y29tcGF0PiAxMUM4Ozs7O047SEFOR1VMIExFVFRFUiBOSUVVTiBCQU4gQ0hJIEVVTTs7OzsKKzMxNjk7SEFOR1VMIExFVFRFUiBSSUVVTC1LSVlFT0stU0lPUztMbzswO0w7PGNvbXBhdD4gMTFDQzs7OztOO0hBTkdVTCBMRVRURVIgTElFVUwgR0lZRU9HIFNJT1M7Ozs7CiszMTZBO0hBTkdVTCBMRVRURVIgUklFVUwtVElLRVVUO0xvOzA7TDs8Y29tcGF0PiAxMUNFOzs7O047SEFOR1VMIExFVFRFUiBMSUVVTCBESUdFVUQ7Ozs7CiszMTZCO0hBTkdVTCBMRVRURVIgUklFVUwtUElFVVAtU0lPUztMbzswO0w7PGNvbXBhdD4gMTFEMzs7OztOO0hBTkdVTCBMRVRURVIgTElFVUwgQklFVUIgU0lPUzs7OzsKKzMxNkM7SEFOR1VMIExFVFRFUiBSSUVVTC1QQU5TSU9TO0xvOzA7TDs8Y29tcGF0PiAxMUQ3Ozs7O047SEFOR1VMIExFVFRFUiBMSUVVTCBCQU4gQ0hJIEVVTTs7OzsKKzMxNkQ7SEFOR1VMIExFVFRFUiBSSUVVTC1ZRU9SSU5ISUVVSDtMbzswO0w7PGNvbXBhdD4gMTFEOTs7OztOO0hBTkdVTCBMRVRURVIgTElFVUwgWUVPTElOIEhJRVVIOzs7OworMzE2RTtIQU5HVUwgTEVUVEVSIE1JRVVNLVBJRVVQO0xvOzA7TDs8Y29tcGF0PiAxMTFDOzs7O047SEFOR1VMIExFVFRFUiBNSUVVTSBCSUVVQjs7OzsKKzMxNkY7SEFOR1VMIExFVFRFUiBNSUVVTS1TSU9TO0xvOzA7TDs8Y29tcGF0PiAxMUREOzs7O047SEFOR1VMIExFVFRFUiBNSUVVTSBTSU9TOzs7OworMzE3MDtIQU5HVUwgTEVUVEVSIE1JRVVNLVBBTlNJT1M7TG87MDtMOzxjb21wYXQ+IDExREY7Ozs7TjtIQU5HVUwgTEVUVEVSIEJJRVVCIEJBTiBDSEkgRVVNOzs7OworMzE3MTtIQU5HVUwgTEVUVEVSIEtBUFlFT1VOTUlFVU07TG87MDtMOzxjb21wYXQ+IDExMUQ7Ozs7TjtIQU5HVUwgTEVUVEVSIE1JRVVNIFNVTiBHWUVPTkcgRVVNOzs7OworMzE3MjtIQU5HVUwgTEVUVEVSIFBJRVVQLUtJWUVPSztMbzswO0w7PGNvbXBhdD4gMTExRTs7OztOO0hBTkdVTCBMRVRURVIgQklFVUIgR0lZRU9HOzs7OworMzE3MztIQU5HVUwgTEVUVEVSIFBJRVVQLVRJS0VVVDtMbzswO0w7PGNvbXBhdD4gMTEyMDs7OztOO0hBTkdVTCBMRVRURVIgQklFVUIgRElHRVVEOzs7OworMzE3NDtIQU5HVUwgTEVUVEVSIFBJRVVQLVNJT1MtS0lZRU9LO0xvOzA7TDs8Y29tcGF0PiAxMTIyOzs7O047SEFOR1VMIExFVFRFUiBCSUVVQiBTSU9TIEdJWUVPRzs7OzsKKzMxNzU7SEFOR1VMIExFVFRFUiBQSUVVUC1TSU9TLVRJS0VVVDtMbzswO0w7PGNvbXBhdD4gMTEyMzs7OztOO0hBTkdVTCBMRVRURVIgQklFVUIgU0lPUyBESUdFVUQ7Ozs7CiszMTc2O0hBTkdVTCBMRVRURVIgUElFVVAtQ0lFVUM7TG87MDtMOzxjb21wYXQ+IDExMjc7Ozs7TjtIQU5HVUwgTEVUVEVSIEJJRVVCIEpJRVVKOzs7OworMzE3NztIQU5HVUwgTEVUVEVSIFBJRVVQLVRISUVVVEg7TG87MDtMOzxjb21wYXQ+IDExMjk7Ozs7TjtIQU5HVUwgTEVUVEVSIEJJRVVCIFRJRVVUOzs7OworMzE3ODtIQU5HVUwgTEVUVEVSIEtBUFlFT1VOUElFVVA7TG87MDtMOzxjb21wYXQ+IDExMkI7Ozs7TjtIQU5HVUwgTEVUVEVSIEJJRVVCIFNVTiBHWUVPTkcgRVVNOzs7OworMzE3OTtIQU5HVUwgTEVUVEVSIEtBUFlFT1VOU1NBTkdQSUVVUDtMbzswO0w7PGNvbXBhdD4gMTEyQzs7OztOO0hBTkdVTCBMRVRURVIgU1NBTkcgQklFVUIgU1VOIEdZRU9ORyBFVU07Ozs7CiszMTdBO0hBTkdVTCBMRVRURVIgU0lPUy1LSVlFT0s7TG87MDtMOzxjb21wYXQ+IDExMkQ7Ozs7TjtIQU5HVUwgTEVUVEVSIFNJT1MgR0lZRU9HOzs7OworMzE3QjtIQU5HVUwgTEVUVEVSIFNJT1MtTklFVU47TG87MDtMOzxjb21wYXQ+IDExMkU7Ozs7TjtIQU5HVUwgTEVUVEVSIFNJT1MgTklFVU47Ozs7CiszMTdDO0hBTkdVTCBMRVRURVIgU0lPUy1USUtFVVQ7TG87MDtMOzxjb21wYXQ+IDExMkY7Ozs7TjtIQU5HVUwgTEVUVEVSIFNJT1MgRElHRVVEOzs7OworMzE3RDtIQU5HVUwgTEVUVEVSIFNJT1MtUElFVVA7TG87MDtMOzxjb21wYXQ+IDExMzI7Ozs7TjtIQU5HVUwgTEVUVEVSIFNJT1MgQklFVUI7Ozs7CiszMTdFO0hBTkdVTCBMRVRURVIgU0lPUy1DSUVVQztMbzswO0w7PGNvbXBhdD4gMTEzNjs7OztOO0hBTkdVTCBMRVRURVIgU0lPUyBKSUVVSjs7OzsKKzMxN0Y7SEFOR1VMIExFVFRFUiBQQU5TSU9TO0xvOzA7TDs8Y29tcGF0PiAxMTQwOzs7O047SEFOR1VMIExFVFRFUiBCQU4gQ0hJIEVVTTs7OzsKKzMxODA7SEFOR1VMIExFVFRFUiBTU0FOR0lFVU5HO0xvOzA7TDs8Y29tcGF0PiAxMTQ3Ozs7O047SEFOR1VMIExFVFRFUiBTU0FORyBJRVVORzs7OzsKKzMxODE7SEFOR1VMIExFVFRFUiBZRVNJRVVORztMbzswO0w7PGNvbXBhdD4gMTE0Qzs7OztOO0hBTkdVTCBMRVRURVIgTkdJRVVORzs7OzsKKzMxODI7SEFOR1VMIExFVFRFUiBZRVNJRVVORy1TSU9TO0xvOzA7TDs8Y29tcGF0PiAxMUYxOzs7O047SEFOR1VMIExFVFRFUiBOR0lFVU5HIFNJT1M7Ozs7CiszMTgzO0hBTkdVTCBMRVRURVIgWUVTSUVVTkctUEFOU0lPUztMbzswO0w7PGNvbXBhdD4gMTFGMjs7OztOO0hBTkdVTCBMRVRURVIgTkdJRVVORyBCQU4gQ0hJIEVVTTs7OzsKKzMxODQ7SEFOR1VMIExFVFRFUiBLQVBZRU9VTlBISUVVUEg7TG87MDtMOzxjb21wYXQ+IDExNTc7Ozs7TjtIQU5HVUwgTEVUVEVSIFBJRVVQIFNVTiBHWUVPTkcgRVVNOzs7OworMzE4NTtIQU5HVUwgTEVUVEVSIFNTQU5HSElFVUg7TG87MDtMOzxjb21wYXQ+IDExNTg7Ozs7TjtIQU5HVUwgTEVUVEVSIFNTQU5HIEhJRVVIOzs7OworMzE4NjtIQU5HVUwgTEVUVEVSIFlFT1JJTkhJRVVIO0xvOzA7TDs8Y29tcGF0PiAxMTU5Ozs7O047SEFOR1VMIExFVFRFUiBZRU9MSU4gSElFVUg7Ozs7CiszMTg3O0hBTkdVTCBMRVRURVIgWU8tWUE7TG87MDtMOzxjb21wYXQ+IDExODQ7Ozs7TjtIQU5HVUwgTEVUVEVSIFlPWUE7Ozs7CiszMTg4O0hBTkdVTCBMRVRURVIgWU8tWUFFO0xvOzA7TDs8Y29tcGF0PiAxMTg1Ozs7O047SEFOR1VMIExFVFRFUiBZT1lBRTs7OzsKKzMxODk7SEFOR1VMIExFVFRFUiBZTy1JO0xvOzA7TDs8Y29tcGF0PiAxMTg4Ozs7O047SEFOR1VMIExFVFRFUiBZT0k7Ozs7CiszMThBO0hBTkdVTCBMRVRURVIgWVUtWUVPO0xvOzA7TDs8Y29tcGF0PiAxMTkxOzs7O047SEFOR1VMIExFVFRFUiBZVVlFTzs7OzsKKzMxOEI7SEFOR1VMIExFVFRFUiBZVS1ZRTtMbzswO0w7PGNvbXBhdD4gMTE5Mjs7OztOO0hBTkdVTCBMRVRURVIgWVVZRTs7OzsKKzMxOEM7SEFOR1VMIExFVFRFUiBZVS1JO0xvOzA7TDs8Y29tcGF0PiAxMTk0Ozs7O047SEFOR1VMIExFVFRFUiBZVUk7Ozs7CiszMThEO0hBTkdVTCBMRVRURVIgQVJBRUE7TG87MDtMOzxjb21wYXQ+IDExOUU7Ozs7TjtIQU5HVUwgTEVUVEVSIEFMQUUgQTs7OzsKKzMxOEU7SEFOR1VMIExFVFRFUiBBUkFFQUU7TG87MDtMOzxjb21wYXQ+IDExQTE7Ozs7TjtIQU5HVUwgTEVUVEVSIEFMQUUgQUU7Ozs7CiszMTkwO0lERU9HUkFQSElDIEFOTk9UQVRJT04gTElOS0lORyBNQVJLO1NvOzA7TDs7Ozs7TjtLQU5CVU4gVEFURVRFTjtLYW5idW4gVGF0ZXRlbjs7OworMzE5MTtJREVPR1JBUEhJQyBBTk5PVEFUSU9OIFJFVkVSU0UgTUFSSztTbzswO0w7Ozs7O047S0FFUklURU4gUkU7S2Flcml0ZW47OzsKKzMxOTI7SURFT0dSQVBISUMgQU5OT1RBVElPTiBPTkUgTUFSSztObzswO0w7PHN1cGVyPiA0RTAwOzs7MTtOO0tBRVJJVEVOIElUSTtLYWVyaXRlbjs7OworMzE5MztJREVPR1JBUEhJQyBBTk5PVEFUSU9OIFRXTyBNQVJLO05vOzA7TDs8c3VwZXI+IDRFOEM7OzsyO047S0FFUklURU4gTkk7S2Flcml0ZW47OzsKKzMxOTQ7SURFT0dSQVBISUMgQU5OT1RBVElPTiBUSFJFRSBNQVJLO05vOzA7TDs8c3VwZXI+IDRFMDk7OzszO047S0FFUklURU4gU0FOO0thZXJpdGVuOzs7CiszMTk1O0lERU9HUkFQSElDIEFOTk9UQVRJT04gRk9VUiBNQVJLO05vOzA7TDs8c3VwZXI+IDU2REI7Ozs0O047S0FFUklURU4gU0k7S2Flcml0ZW47OzsKKzMxOTY7SURFT0dSQVBISUMgQU5OT1RBVElPTiBUT1AgTUFSSztTbzswO0w7PHN1cGVyPiA0RTBBOzs7O047S0FFUklURU4gWllPVTtLYWVyaXRlbjs7OworMzE5NztJREVPR1JBUEhJQyBBTk5PVEFUSU9OIE1JRERMRSBNQVJLO1NvOzA7TDs8c3VwZXI+IDRFMkQ7Ozs7TjtLQUVSSVRFTiBUWVVVO0thZXJpdGVuOzs7CiszMTk4O0lERU9HUkFQSElDIEFOTk9UQVRJT04gQk9UVE9NIE1BUks7U287MDtMOzxzdXBlcj4gNEUwQjs7OztOO0tBRVJJVEVOIEdFO0thZXJpdGVuOzs7CiszMTk5O0lERU9HUkFQSElDIEFOTk9UQVRJT04gRklSU1QgTUFSSztTbzswO0w7PHN1cGVyPiA3NTMyOzs7O047S0FFUklURU4gS09VO0thZXJpdGVuOzs7CiszMTlBO0lERU9HUkFQSElDIEFOTk9UQVRJT04gU0VDT05EIE1BUks7U287MDtMOzxzdXBlcj4gNEU1OTs7OztOO0tBRVJJVEVOIE9UVTtLYWVyaXRlbjs7OworMzE5QjtJREVPR1JBUEhJQyBBTk5PVEFUSU9OIFRISVJEIE1BUks7U287MDtMOzxzdXBlcj4gNEUxOTs7OztOO0tBRVJJVEVOIEhFSTtLYWVyaXRlbjs7OworMzE5QztJREVPR1JBUEhJQyBBTk5PVEFUSU9OIEZPVVJUSCBNQVJLO1NvOzA7TDs8c3VwZXI+IDRFMDE7Ozs7TjtLQUVSSVRFTiBURUk7S2Flcml0ZW47OzsKKzMxOUQ7SURFT0dSQVBISUMgQU5OT1RBVElPTiBIRUFWRU4gTUFSSztTbzswO0w7PHN1cGVyPiA1OTI5Ozs7O047S0FFUklURU4gVEVOO0thZXJpdGVuOzs7CiszMTlFO0lERU9HUkFQSElDIEFOTk9UQVRJT04gRUFSVEggTUFSSztTbzswO0w7PHN1cGVyPiA1NzMwOzs7O047S0FFUklURU4gVEk7S2Flcml0ZW47OzsKKzMxOUY7SURFT0dSQVBISUMgQU5OT1RBVElPTiBNQU4gTUFSSztTbzswO0w7PHN1cGVyPiA0RUJBOzs7O047S0FFUklURU4gWklOO0thZXJpdGVuOzs7CiszMUEwO0JPUE9NT0ZPIExFVFRFUiBCVTtMbzswO0w7Ozs7O047Ozs7OworMzFBMTtCT1BPTU9GTyBMRVRURVIgWkk7TG87MDtMOzs7OztOOzs7OzsKKzMxQTI7Qk9QT01PRk8gTEVUVEVSIEpJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMUEzO0JPUE9NT0ZPIExFVFRFUiBHVTtMbzswO0w7Ozs7O047Ozs7OworMzFBNDtCT1BPTU9GTyBMRVRURVIgRUU7TG87MDtMOzs7OztOOzs7OzsKKzMxQTU7Qk9QT01PRk8gTEVUVEVSIEVOTjtMbzswO0w7Ozs7O047Ozs7OworMzFBNjtCT1BPTU9GTyBMRVRURVIgT087TG87MDtMOzs7OztOOzs7OzsKKzMxQTc7Qk9QT01PRk8gTEVUVEVSIE9OTjtMbzswO0w7Ozs7O047Ozs7OworMzFBODtCT1BPTU9GTyBMRVRURVIgSVI7TG87MDtMOzs7OztOOzs7OzsKKzMxQTk7Qk9QT01PRk8gTEVUVEVSIEFOTjtMbzswO0w7Ozs7O047Ozs7OworMzFBQTtCT1BPTU9GTyBMRVRURVIgSU5OO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMUFCO0JPUE9NT0ZPIExFVFRFUiBVTk47TG87MDtMOzs7OztOOzs7OzsKKzMxQUM7Qk9QT01PRk8gTEVUVEVSIElNO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMUFEO0JPUE9NT0ZPIExFVFRFUiBOR0c7TG87MDtMOzs7OztOOzs7OzsKKzMxQUU7Qk9QT01PRk8gTEVUVEVSIEFJTk47TG87MDtMOzs7OztOOzs7OzsKKzMxQUY7Qk9QT01PRk8gTEVUVEVSIEFVTk47TG87MDtMOzs7OztOOzs7OzsKKzMxQjA7Qk9QT01PRk8gTEVUVEVSIEFNO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMUIxO0JPUE9NT0ZPIExFVFRFUiBPTTtMbzswO0w7Ozs7O047Ozs7OworMzFCMjtCT1BPTU9GTyBMRVRURVIgT05HO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMUIzO0JPUE9NT0ZPIExFVFRFUiBJTk5OO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMUI0O0JPUE9NT0ZPIEZJTkFMIExFVFRFUiBQO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMUI1O0JPUE9NT0ZPIEZJTkFMIExFVFRFUiBUO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMUI2O0JPUE9NT0ZPIEZJTkFMIExFVFRFUiBLO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMUI3O0JPUE9NT0ZPIEZJTkFMIExFVFRFUiBIO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMUYwO0tBVEFLQU5BIExFVFRFUiBTTUFMTCBLVTtMbzswO0w7Ozs7O047Ozs7OworMzFGMTtLQVRBS0FOQSBMRVRURVIgU01BTEwgU0k7TG87MDtMOzs7OztOOzs7OzsKKzMxRjI7S0FUQUtBTkEgTEVUVEVSIFNNQUxMIFNVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMUYzO0tBVEFLQU5BIExFVFRFUiBTTUFMTCBUTztMbzswO0w7Ozs7O047Ozs7OworMzFGNDtLQVRBS0FOQSBMRVRURVIgU01BTEwgTlU7TG87MDtMOzs7OztOOzs7OzsKKzMxRjU7S0FUQUtBTkEgTEVUVEVSIFNNQUxMIEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMUY2O0tBVEFLQU5BIExFVFRFUiBTTUFMTCBISTtMbzswO0w7Ozs7O047Ozs7OworMzFGNztLQVRBS0FOQSBMRVRURVIgU01BTEwgSFU7TG87MDtMOzs7OztOOzs7OzsKKzMxRjg7S0FUQUtBTkEgTEVUVEVSIFNNQUxMIEhFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMUY5O0tBVEFLQU5BIExFVFRFUiBTTUFMTCBITztMbzswO0w7Ozs7O047Ozs7OworMzFGQTtLQVRBS0FOQSBMRVRURVIgU01BTEwgTVU7TG87MDtMOzs7OztOOzs7OzsKKzMxRkI7S0FUQUtBTkEgTEVUVEVSIFNNQUxMIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMUZDO0tBVEFLQU5BIExFVFRFUiBTTUFMTCBSSTtMbzswO0w7Ozs7O047Ozs7OworMzFGRDtLQVRBS0FOQSBMRVRURVIgU01BTEwgUlU7TG87MDtMOzs7OztOOzs7OzsKKzMxRkU7S0FUQUtBTkEgTEVUVEVSIFNNQUxMIFJFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMUZGO0tBVEFLQU5BIExFVFRFUiBTTUFMTCBSTztMbzswO0w7Ozs7O047Ozs7OworMzIwMDtQQVJFTlRIRVNJWkVEIEhBTkdVTCBLSVlFT0s7U287MDtMOzxjb21wYXQ+IDAwMjggMTEwMCAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgR0lZRU9HOzs7OworMzIwMTtQQVJFTlRIRVNJWkVEIEhBTkdVTCBOSUVVTjtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTAyIDAwMjk7Ozs7Tjs7Ozs7CiszMjAyO1BBUkVOVEhFU0laRUQgSEFOR1VMIFRJS0VVVDtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTAzIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBESUdFVUQ7Ozs7CiszMjAzO1BBUkVOVEhFU0laRUQgSEFOR1VMIFJJRVVMO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMDUgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIExJRVVMOzs7OworMzIwNDtQQVJFTlRIRVNJWkVEIEhBTkdVTCBNSUVVTTtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTA2IDAwMjk7Ozs7Tjs7Ozs7CiszMjA1O1BBUkVOVEhFU0laRUQgSEFOR1VMIFBJRVVQO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMDcgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIEJJRVVCOzs7OworMzIwNjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBTSU9TO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMDkgMDAyOTs7OztOOzs7OzsKKzMyMDc7UEFSRU5USEVTSVpFRCBIQU5HVUwgSUVVTkc7U287MDtMOzxjb21wYXQ+IDAwMjggMTEwQiAwMDI5Ozs7O047Ozs7OworMzIwODtQQVJFTlRIRVNJWkVEIEhBTkdVTCBDSUVVQztTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTBDIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBKSUVVSjs7OzsKKzMyMDk7UEFSRU5USEVTSVpFRCBIQU5HVUwgQ0hJRVVDSDtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTBFIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBDSUVVQzs7OzsKKzMyMEE7UEFSRU5USEVTSVpFRCBIQU5HVUwgS0hJRVVLSDtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTBGIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBLSVlFT0s7Ozs7CiszMjBCO1BBUkVOVEhFU0laRUQgSEFOR1VMIFRISUVVVEg7U287MDtMOzxjb21wYXQ+IDAwMjggMTExMCAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgVElFVVQ7Ozs7CiszMjBDO1BBUkVOVEhFU0laRUQgSEFOR1VMIFBISUVVUEg7U287MDtMOzxjb21wYXQ+IDAwMjggMTExMSAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgUElFVVA7Ozs7CiszMjBEO1BBUkVOVEhFU0laRUQgSEFOR1VMIEhJRVVIO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMTIgMDAyOTs7OztOOzs7OzsKKzMyMEU7UEFSRU5USEVTSVpFRCBIQU5HVUwgS0lZRU9LIEE7U287MDtMOzxjb21wYXQ+IDAwMjggMTEwMCAxMTYxIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBHQTs7OzsKKzMyMEY7UEFSRU5USEVTSVpFRCBIQU5HVUwgTklFVU4gQTtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTAyIDExNjEgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIE5BOzs7OworMzIxMDtQQVJFTlRIRVNJWkVEIEhBTkdVTCBUSUtFVVQgQTtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTAzIDExNjEgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIERBOzs7OworMzIxMTtQQVJFTlRIRVNJWkVEIEhBTkdVTCBSSUVVTCBBO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMDUgMTE2MSAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgTEE7Ozs7CiszMjEyO1BBUkVOVEhFU0laRUQgSEFOR1VMIE1JRVVNIEE7U287MDtMOzxjb21wYXQ+IDAwMjggMTEwNiAxMTYxIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBNQTs7OzsKKzMyMTM7UEFSRU5USEVTSVpFRCBIQU5HVUwgUElFVVAgQTtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTA3IDExNjEgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIEJBOzs7OworMzIxNDtQQVJFTlRIRVNJWkVEIEhBTkdVTCBTSU9TIEE7U287MDtMOzxjb21wYXQ+IDAwMjggMTEwOSAxMTYxIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBTQTs7OzsKKzMyMTU7UEFSRU5USEVTSVpFRCBIQU5HVUwgSUVVTkcgQTtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTBCIDExNjEgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIEE7Ozs7CiszMjE2O1BBUkVOVEhFU0laRUQgSEFOR1VMIENJRVVDIEE7U287MDtMOzxjb21wYXQ+IDAwMjggMTEwQyAxMTYxIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBKQTs7OzsKKzMyMTc7UEFSRU5USEVTSVpFRCBIQU5HVUwgQ0hJRVVDSCBBO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMEUgMTE2MSAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgQ0E7Ozs7CiszMjE4O1BBUkVOVEhFU0laRUQgSEFOR1VMIEtISUVVS0ggQTtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTBGIDExNjEgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIEtBOzs7OworMzIxOTtQQVJFTlRIRVNJWkVEIEhBTkdVTCBUSElFVVRIIEE7U287MDtMOzxjb21wYXQ+IDAwMjggMTExMCAxMTYxIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBUQTs7OzsKKzMyMUE7UEFSRU5USEVTSVpFRCBIQU5HVUwgUEhJRVVQSCBBO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMTEgMTE2MSAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgUEE7Ozs7CiszMjFCO1BBUkVOVEhFU0laRUQgSEFOR1VMIEhJRVVIIEE7U287MDtMOzxjb21wYXQ+IDAwMjggMTExMiAxMTYxIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBIQTs7OzsKKzMyMUM7UEFSRU5USEVTSVpFRCBIQU5HVUwgQ0lFVUMgVTtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTBDIDExNkUgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIEpVOzs7OworMzIyMDtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBPTkU7Tm87MDtMOzxjb21wYXQ+IDAwMjggNEUwMCAwMDI5Ozs7MTtOOzs7OzsKKzMyMjE7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggVFdPO05vOzA7TDs8Y29tcGF0PiAwMDI4IDRFOEMgMDAyOTs7OzI7Tjs7Ozs7CiszMjIyO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIFRIUkVFO05vOzA7TDs8Y29tcGF0PiAwMDI4IDRFMDkgMDAyOTs7OzM7Tjs7Ozs7CiszMjIzO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIEZPVVI7Tm87MDtMOzxjb21wYXQ+IDAwMjggNTZEQiAwMDI5Ozs7NDtOOzs7OzsKKzMyMjQ7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggRklWRTtObzswO0w7PGNvbXBhdD4gMDAyOCA0RTk0IDAwMjk7Ozs1O047Ozs7OworMzIyNTtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBTSVg7Tm87MDtMOzxjb21wYXQ+IDAwMjggNTE2RCAwMDI5Ozs7NjtOOzs7OzsKKzMyMjY7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggU0VWRU47Tm87MDtMOzxjb21wYXQ+IDAwMjggNEUwMyAwMDI5Ozs7NztOOzs7OzsKKzMyMjc7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggRUlHSFQ7Tm87MDtMOzxjb21wYXQ+IDAwMjggNTE2QiAwMDI5Ozs7ODtOOzs7OzsKKzMyMjg7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggTklORTtObzswO0w7PGNvbXBhdD4gMDAyOCA0RTVEIDAwMjk7Ozs5O047Ozs7OworMzIyOTtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBURU47Tm87MDtMOzxjb21wYXQ+IDAwMjggNTM0MSAwMDI5Ozs7MTA7Tjs7Ozs7CiszMjJBO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIE1PT047U287MDtMOzxjb21wYXQ+IDAwMjggNjcwOCAwMDI5Ozs7O047Ozs7OworMzIyQjtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBGSVJFO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDcwNkIgMDAyOTs7OztOOzs7OzsKKzMyMkM7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggV0FURVI7U287MDtMOzxjb21wYXQ+IDAwMjggNkMzNCAwMDI5Ozs7O047Ozs7OworMzIyRDtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBXT09EO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDY3MjggMDAyOTs7OztOOzs7OzsKKzMyMkU7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggTUVUQUw7U287MDtMOzxjb21wYXQ+IDAwMjggOTFEMSAwMDI5Ozs7O047Ozs7OworMzIyRjtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBFQVJUSDtTbzswO0w7PGNvbXBhdD4gMDAyOCA1NzFGIDAwMjk7Ozs7Tjs7Ozs7CiszMjMwO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIFNVTjtTbzswO0w7PGNvbXBhdD4gMDAyOCA2NUU1IDAwMjk7Ozs7Tjs7Ozs7CiszMjMxO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIFNUT0NLO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDY4MkEgMDAyOTs7OztOOzs7OzsKKzMyMzI7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggSEFWRTtTbzswO0w7PGNvbXBhdD4gMDAyOCA2NzA5IDAwMjk7Ozs7Tjs7Ozs7CiszMjMzO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIFNPQ0lFVFk7U287MDtMOzxjb21wYXQ+IDAwMjggNzkzRSAwMDI5Ozs7O047Ozs7OworMzIzNDtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBOQU1FO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDU0MEQgMDAyOTs7OztOOzs7OzsKKzMyMzU7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggU1BFQ0lBTDtTbzswO0w7PGNvbXBhdD4gMDAyOCA3Mjc5IDAwMjk7Ozs7Tjs7Ozs7CiszMjM2O1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIEZJTkFOQ0lBTDtTbzswO0w7PGNvbXBhdD4gMDAyOCA4Q0ExIDAwMjk7Ozs7Tjs7Ozs7CiszMjM3O1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIENPTkdSQVRVTEFUSU9OO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDc5NUQgMDAyOTs7OztOOzs7OzsKKzMyMzg7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggTEFCT1I7U287MDtMOzxjb21wYXQ+IDAwMjggNTJCNCAwMDI5Ozs7O047Ozs7OworMzIzOTtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBSRVBSRVNFTlQ7U287MDtMOzxjb21wYXQ+IDAwMjggNEVFMyAwMDI5Ozs7O047Ozs7OworMzIzQTtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBDQUxMO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDU0N0MgMDAyOTs7OztOOzs7OzsKKzMyM0I7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggU1RVRFk7U287MDtMOzxjb21wYXQ+IDAwMjggNUI2NiAwMDI5Ozs7O047Ozs7OworMzIzQztQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBTVVBFUlZJU0U7U287MDtMOzxjb21wYXQ+IDAwMjggNzZFMyAwMDI5Ozs7O047Ozs7OworMzIzRDtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBFTlRFUlBSSVNFO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDRGMDEgMDAyOTs7OztOOzs7OzsKKzMyM0U7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggUkVTT1VSQ0U7U287MDtMOzxjb21wYXQ+IDAwMjggOENDNyAwMDI5Ozs7O047Ozs7OworMzIzRjtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBBTExJQU5DRTtTbzswO0w7PGNvbXBhdD4gMDAyOCA1MzU0IDAwMjk7Ozs7Tjs7Ozs7CiszMjQwO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIEZFU1RJVkFMO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDc5NkQgMDAyOTs7OztOOzs7OzsKKzMyNDE7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggUkVTVDtTbzswO0w7PGNvbXBhdD4gMDAyOCA0RjExIDAwMjk7Ozs7Tjs7Ozs7CiszMjQyO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIFNFTEY7U287MDtMOzxjb21wYXQ+IDAwMjggODFFQSAwMDI5Ozs7O047Ozs7OworMzI0MztQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBSRUFDSDtTbzswO0w7PGNvbXBhdD4gMDAyOCA4MUYzIDAwMjk7Ozs7Tjs7Ozs7CiszMjUxO0NJUkNMRUQgTlVNQkVSIFRXRU5UWSBPTkU7Tm87MDtPTjs8Y2lyY2xlPiAwMDMyIDAwMzE7OzsyMTtOOzs7OzsKKzMyNTI7Q0lSQ0xFRCBOVU1CRVIgVFdFTlRZIFRXTztObzswO09OOzxjaXJjbGU+IDAwMzIgMDAzMjs7OzIyO047Ozs7OworMzI1MztDSVJDTEVEIE5VTUJFUiBUV0VOVFkgVEhSRUU7Tm87MDtPTjs8Y2lyY2xlPiAwMDMyIDAwMzM7OzsyMztOOzs7OzsKKzMyNTQ7Q0lSQ0xFRCBOVU1CRVIgVFdFTlRZIEZPVVI7Tm87MDtPTjs8Y2lyY2xlPiAwMDMyIDAwMzQ7OzsyNDtOOzs7OzsKKzMyNTU7Q0lSQ0xFRCBOVU1CRVIgVFdFTlRZIEZJVkU7Tm87MDtPTjs8Y2lyY2xlPiAwMDMyIDAwMzU7OzsyNTtOOzs7OzsKKzMyNTY7Q0lSQ0xFRCBOVU1CRVIgVFdFTlRZIFNJWDtObzswO09OOzxjaXJjbGU+IDAwMzIgMDAzNjs7OzI2O047Ozs7OworMzI1NztDSVJDTEVEIE5VTUJFUiBUV0VOVFkgU0VWRU47Tm87MDtPTjs8Y2lyY2xlPiAwMDMyIDAwMzc7OzsyNztOOzs7OzsKKzMyNTg7Q0lSQ0xFRCBOVU1CRVIgVFdFTlRZIEVJR0hUO05vOzA7T047PGNpcmNsZT4gMDAzMiAwMDM4Ozs7Mjg7Tjs7Ozs7CiszMjU5O0NJUkNMRUQgTlVNQkVSIFRXRU5UWSBOSU5FO05vOzA7T047PGNpcmNsZT4gMDAzMiAwMDM5Ozs7Mjk7Tjs7Ozs7CiszMjVBO0NJUkNMRUQgTlVNQkVSIFRISVJUWTtObzswO09OOzxjaXJjbGU+IDAwMzMgMDAzMDs7OzMwO047Ozs7OworMzI1QjtDSVJDTEVEIE5VTUJFUiBUSElSVFkgT05FO05vOzA7T047PGNpcmNsZT4gMDAzMyAwMDMxOzs7MzE7Tjs7Ozs7CiszMjVDO0NJUkNMRUQgTlVNQkVSIFRISVJUWSBUV087Tm87MDtPTjs8Y2lyY2xlPiAwMDMzIDAwMzI7OzszMjtOOzs7OzsKKzMyNUQ7Q0lSQ0xFRCBOVU1CRVIgVEhJUlRZIFRIUkVFO05vOzA7T047PGNpcmNsZT4gMDAzMyAwMDMzOzs7MzM7Tjs7Ozs7CiszMjVFO0NJUkNMRUQgTlVNQkVSIFRISVJUWSBGT1VSO05vOzA7T047PGNpcmNsZT4gMDAzMyAwMDM0Ozs7MzQ7Tjs7Ozs7CiszMjVGO0NJUkNMRUQgTlVNQkVSIFRISVJUWSBGSVZFO05vOzA7T047PGNpcmNsZT4gMDAzMyAwMDM1Ozs7MzU7Tjs7Ozs7CiszMjYwO0NJUkNMRUQgSEFOR1VMIEtJWUVPSztTbzswO0w7PGNpcmNsZT4gMTEwMDs7OztOO0NJUkNMRUQgSEFOR1VMIEdJWUVPRzs7OzsKKzMyNjE7Q0lSQ0xFRCBIQU5HVUwgTklFVU47U287MDtMOzxjaXJjbGU+IDExMDI7Ozs7Tjs7Ozs7CiszMjYyO0NJUkNMRUQgSEFOR1VMIFRJS0VVVDtTbzswO0w7PGNpcmNsZT4gMTEwMzs7OztOO0NJUkNMRUQgSEFOR1VMIERJR0VVRDs7OzsKKzMyNjM7Q0lSQ0xFRCBIQU5HVUwgUklFVUw7U287MDtMOzxjaXJjbGU+IDExMDU7Ozs7TjtDSVJDTEVEIEhBTkdVTCBMSUVVTDs7OzsKKzMyNjQ7Q0lSQ0xFRCBIQU5HVUwgTUlFVU07U287MDtMOzxjaXJjbGU+IDExMDY7Ozs7Tjs7Ozs7CiszMjY1O0NJUkNMRUQgSEFOR1VMIFBJRVVQO1NvOzA7TDs8Y2lyY2xlPiAxMTA3Ozs7O047Q0lSQ0xFRCBIQU5HVUwgQklFVUI7Ozs7CiszMjY2O0NJUkNMRUQgSEFOR1VMIFNJT1M7U287MDtMOzxjaXJjbGU+IDExMDk7Ozs7Tjs7Ozs7CiszMjY3O0NJUkNMRUQgSEFOR1VMIElFVU5HO1NvOzA7TDs8Y2lyY2xlPiAxMTBCOzs7O047Ozs7OworMzI2ODtDSVJDTEVEIEhBTkdVTCBDSUVVQztTbzswO0w7PGNpcmNsZT4gMTEwQzs7OztOO0NJUkNMRUQgSEFOR1VMIEpJRVVKOzs7OworMzI2OTtDSVJDTEVEIEhBTkdVTCBDSElFVUNIO1NvOzA7TDs8Y2lyY2xlPiAxMTBFOzs7O047Q0lSQ0xFRCBIQU5HVUwgQ0lFVUM7Ozs7CiszMjZBO0NJUkNMRUQgSEFOR1VMIEtISUVVS0g7U287MDtMOzxjaXJjbGU+IDExMEY7Ozs7TjtDSVJDTEVEIEhBTkdVTCBLSVlFT0s7Ozs7CiszMjZCO0NJUkNMRUQgSEFOR1VMIFRISUVVVEg7U287MDtMOzxjaXJjbGU+IDExMTA7Ozs7TjtDSVJDTEVEIEhBTkdVTCBUSUVVVDs7OzsKKzMyNkM7Q0lSQ0xFRCBIQU5HVUwgUEhJRVVQSDtTbzswO0w7PGNpcmNsZT4gMTExMTs7OztOO0NJUkNMRUQgSEFOR1VMIFBJRVVQOzs7OworMzI2RDtDSVJDTEVEIEhBTkdVTCBISUVVSDtTbzswO0w7PGNpcmNsZT4gMTExMjs7OztOOzs7OzsKKzMyNkU7Q0lSQ0xFRCBIQU5HVUwgS0lZRU9LIEE7U287MDtMOzxjaXJjbGU+IDExMDAgMTE2MTs7OztOO0NJUkNMRUQgSEFOR1VMIEdBOzs7OworMzI2RjtDSVJDTEVEIEhBTkdVTCBOSUVVTiBBO1NvOzA7TDs8Y2lyY2xlPiAxMTAyIDExNjE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBOQTs7OzsKKzMyNzA7Q0lSQ0xFRCBIQU5HVUwgVElLRVVUIEE7U287MDtMOzxjaXJjbGU+IDExMDMgMTE2MTs7OztOO0NJUkNMRUQgSEFOR1VMIERBOzs7OworMzI3MTtDSVJDTEVEIEhBTkdVTCBSSUVVTCBBO1NvOzA7TDs8Y2lyY2xlPiAxMTA1IDExNjE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBMQTs7OzsKKzMyNzI7Q0lSQ0xFRCBIQU5HVUwgTUlFVU0gQTtTbzswO0w7PGNpcmNsZT4gMTEwNiAxMTYxOzs7O047Q0lSQ0xFRCBIQU5HVUwgTUE7Ozs7CiszMjczO0NJUkNMRUQgSEFOR1VMIFBJRVVQIEE7U287MDtMOzxjaXJjbGU+IDExMDcgMTE2MTs7OztOO0NJUkNMRUQgSEFOR1VMIEJBOzs7OworMzI3NDtDSVJDTEVEIEhBTkdVTCBTSU9TIEE7U287MDtMOzxjaXJjbGU+IDExMDkgMTE2MTs7OztOO0NJUkNMRUQgSEFOR1VMIFNBOzs7OworMzI3NTtDSVJDTEVEIEhBTkdVTCBJRVVORyBBO1NvOzA7TDs8Y2lyY2xlPiAxMTBCIDExNjE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBBOzs7OworMzI3NjtDSVJDTEVEIEhBTkdVTCBDSUVVQyBBO1NvOzA7TDs8Y2lyY2xlPiAxMTBDIDExNjE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBKQTs7OzsKKzMyNzc7Q0lSQ0xFRCBIQU5HVUwgQ0hJRVVDSCBBO1NvOzA7TDs8Y2lyY2xlPiAxMTBFIDExNjE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBDQTs7OzsKKzMyNzg7Q0lSQ0xFRCBIQU5HVUwgS0hJRVVLSCBBO1NvOzA7TDs8Y2lyY2xlPiAxMTBGIDExNjE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBLQTs7OzsKKzMyNzk7Q0lSQ0xFRCBIQU5HVUwgVEhJRVVUSCBBO1NvOzA7TDs8Y2lyY2xlPiAxMTEwIDExNjE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBUQTs7OzsKKzMyN0E7Q0lSQ0xFRCBIQU5HVUwgUEhJRVVQSCBBO1NvOzA7TDs8Y2lyY2xlPiAxMTExIDExNjE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBQQTs7OzsKKzMyN0I7Q0lSQ0xFRCBIQU5HVUwgSElFVUggQTtTbzswO0w7PGNpcmNsZT4gMTExMiAxMTYxOzs7O047Q0lSQ0xFRCBIQU5HVUwgSEE7Ozs7CiszMjdGO0tPUkVBTiBTVEFOREFSRCBTWU1CT0w7U287MDtMOzs7OztOOzs7OzsKKzMyODA7Q0lSQ0xFRCBJREVPR1JBUEggT05FO05vOzA7TDs8Y2lyY2xlPiA0RTAwOzs7MTtOOzs7OzsKKzMyODE7Q0lSQ0xFRCBJREVPR1JBUEggVFdPO05vOzA7TDs8Y2lyY2xlPiA0RThDOzs7MjtOOzs7OzsKKzMyODI7Q0lSQ0xFRCBJREVPR1JBUEggVEhSRUU7Tm87MDtMOzxjaXJjbGU+IDRFMDk7OzszO047Ozs7OworMzI4MztDSVJDTEVEIElERU9HUkFQSCBGT1VSO05vOzA7TDs8Y2lyY2xlPiA1NkRCOzs7NDtOOzs7OzsKKzMyODQ7Q0lSQ0xFRCBJREVPR1JBUEggRklWRTtObzswO0w7PGNpcmNsZT4gNEU5NDs7OzU7Tjs7Ozs7CiszMjg1O0NJUkNMRUQgSURFT0dSQVBIIFNJWDtObzswO0w7PGNpcmNsZT4gNTE2RDs7OzY7Tjs7Ozs7CiszMjg2O0NJUkNMRUQgSURFT0dSQVBIIFNFVkVOO05vOzA7TDs8Y2lyY2xlPiA0RTAzOzs7NztOOzs7OzsKKzMyODc7Q0lSQ0xFRCBJREVPR1JBUEggRUlHSFQ7Tm87MDtMOzxjaXJjbGU+IDUxNkI7Ozs4O047Ozs7OworMzI4ODtDSVJDTEVEIElERU9HUkFQSCBOSU5FO05vOzA7TDs8Y2lyY2xlPiA0RTVEOzs7OTtOOzs7OzsKKzMyODk7Q0lSQ0xFRCBJREVPR1JBUEggVEVOO05vOzA7TDs8Y2lyY2xlPiA1MzQxOzs7MTA7Tjs7Ozs7CiszMjhBO0NJUkNMRUQgSURFT0dSQVBIIE1PT047U287MDtMOzxjaXJjbGU+IDY3MDg7Ozs7Tjs7Ozs7CiszMjhCO0NJUkNMRUQgSURFT0dSQVBIIEZJUkU7U287MDtMOzxjaXJjbGU+IDcwNkI7Ozs7Tjs7Ozs7CiszMjhDO0NJUkNMRUQgSURFT0dSQVBIIFdBVEVSO1NvOzA7TDs8Y2lyY2xlPiA2QzM0Ozs7O047Ozs7OworMzI4RDtDSVJDTEVEIElERU9HUkFQSCBXT09EO1NvOzA7TDs8Y2lyY2xlPiA2NzI4Ozs7O047Ozs7OworMzI4RTtDSVJDTEVEIElERU9HUkFQSCBNRVRBTDtTbzswO0w7PGNpcmNsZT4gOTFEMTs7OztOOzs7OzsKKzMyOEY7Q0lSQ0xFRCBJREVPR1JBUEggRUFSVEg7U287MDtMOzxjaXJjbGU+IDU3MUY7Ozs7Tjs7Ozs7CiszMjkwO0NJUkNMRUQgSURFT0dSQVBIIFNVTjtTbzswO0w7PGNpcmNsZT4gNjVFNTs7OztOOzs7OzsKKzMyOTE7Q0lSQ0xFRCBJREVPR1JBUEggU1RPQ0s7U287MDtMOzxjaXJjbGU+IDY4MkE7Ozs7Tjs7Ozs7CiszMjkyO0NJUkNMRUQgSURFT0dSQVBIIEhBVkU7U287MDtMOzxjaXJjbGU+IDY3MDk7Ozs7Tjs7Ozs7CiszMjkzO0NJUkNMRUQgSURFT0dSQVBIIFNPQ0lFVFk7U287MDtMOzxjaXJjbGU+IDc5M0U7Ozs7Tjs7Ozs7CiszMjk0O0NJUkNMRUQgSURFT0dSQVBIIE5BTUU7U287MDtMOzxjaXJjbGU+IDU0MEQ7Ozs7Tjs7Ozs7CiszMjk1O0NJUkNMRUQgSURFT0dSQVBIIFNQRUNJQUw7U287MDtMOzxjaXJjbGU+IDcyNzk7Ozs7Tjs7Ozs7CiszMjk2O0NJUkNMRUQgSURFT0dSQVBIIEZJTkFOQ0lBTDtTbzswO0w7PGNpcmNsZT4gOENBMTs7OztOOzs7OzsKKzMyOTc7Q0lSQ0xFRCBJREVPR1JBUEggQ09OR1JBVFVMQVRJT047U287MDtMOzxjaXJjbGU+IDc5NUQ7Ozs7Tjs7Ozs7CiszMjk4O0NJUkNMRUQgSURFT0dSQVBIIExBQk9SO1NvOzA7TDs8Y2lyY2xlPiA1MkI0Ozs7O047Ozs7OworMzI5OTtDSVJDTEVEIElERU9HUkFQSCBTRUNSRVQ7U287MDtMOzxjaXJjbGU+IDc5RDg7Ozs7Tjs7Ozs7CiszMjlBO0NJUkNMRUQgSURFT0dSQVBIIE1BTEU7U287MDtMOzxjaXJjbGU+IDc1Mzc7Ozs7Tjs7Ozs7CiszMjlCO0NJUkNMRUQgSURFT0dSQVBIIEZFTUFMRTtTbzswO0w7PGNpcmNsZT4gNTk3Mzs7OztOOzs7OzsKKzMyOUM7Q0lSQ0xFRCBJREVPR1JBUEggU1VJVEFCTEU7U287MDtMOzxjaXJjbGU+IDkwNjk7Ozs7Tjs7Ozs7CiszMjlEO0NJUkNMRUQgSURFT0dSQVBIIEVYQ0VMTEVOVDtTbzswO0w7PGNpcmNsZT4gNTEyQTs7OztOOzs7OzsKKzMyOUU7Q0lSQ0xFRCBJREVPR1JBUEggUFJJTlQ7U287MDtMOzxjaXJjbGU+IDUzNzA7Ozs7Tjs7Ozs7CiszMjlGO0NJUkNMRUQgSURFT0dSQVBIIEFUVEVOVElPTjtTbzswO0w7PGNpcmNsZT4gNkNFODs7OztOOzs7OzsKKzMyQTA7Q0lSQ0xFRCBJREVPR1JBUEggSVRFTTtTbzswO0w7PGNpcmNsZT4gOTgwNTs7OztOOzs7OzsKKzMyQTE7Q0lSQ0xFRCBJREVPR1JBUEggUkVTVDtTbzswO0w7PGNpcmNsZT4gNEYxMTs7OztOOzs7OzsKKzMyQTI7Q0lSQ0xFRCBJREVPR1JBUEggQ09QWTtTbzswO0w7PGNpcmNsZT4gNTE5OTs7OztOOzs7OzsKKzMyQTM7Q0lSQ0xFRCBJREVPR1JBUEggQ09SUkVDVDtTbzswO0w7PGNpcmNsZT4gNkI2Mzs7OztOOzs7OzsKKzMyQTQ7Q0lSQ0xFRCBJREVPR1JBUEggSElHSDtTbzswO0w7PGNpcmNsZT4gNEUwQTs7OztOOzs7OzsKKzMyQTU7Q0lSQ0xFRCBJREVPR1JBUEggQ0VOVFJFO1NvOzA7TDs8Y2lyY2xlPiA0RTJEOzs7O047Q0lSQ0xFRCBJREVPR1JBUEggQ0VOVEVSOzs7OworMzJBNjtDSVJDTEVEIElERU9HUkFQSCBMT1c7U287MDtMOzxjaXJjbGU+IDRFMEI7Ozs7Tjs7Ozs7CiszMkE3O0NJUkNMRUQgSURFT0dSQVBIIExFRlQ7U287MDtMOzxjaXJjbGU+IDVERTY7Ozs7Tjs7Ozs7CiszMkE4O0NJUkNMRUQgSURFT0dSQVBIIFJJR0hUO1NvOzA7TDs8Y2lyY2xlPiA1M0YzOzs7O047Ozs7OworMzJBOTtDSVJDTEVEIElERU9HUkFQSCBNRURJQ0lORTtTbzswO0w7PGNpcmNsZT4gNTMzQjs7OztOOzs7OzsKKzMyQUE7Q0lSQ0xFRCBJREVPR1JBUEggUkVMSUdJT047U287MDtMOzxjaXJjbGU+IDVCOTc7Ozs7Tjs7Ozs7CiszMkFCO0NJUkNMRUQgSURFT0dSQVBIIFNUVURZO1NvOzA7TDs8Y2lyY2xlPiA1QjY2Ozs7O047Ozs7OworMzJBQztDSVJDTEVEIElERU9HUkFQSCBTVVBFUlZJU0U7U287MDtMOzxjaXJjbGU+IDc2RTM7Ozs7Tjs7Ozs7CiszMkFEO0NJUkNMRUQgSURFT0dSQVBIIEVOVEVSUFJJU0U7U287MDtMOzxjaXJjbGU+IDRGMDE7Ozs7Tjs7Ozs7CiszMkFFO0NJUkNMRUQgSURFT0dSQVBIIFJFU09VUkNFO1NvOzA7TDs8Y2lyY2xlPiA4Q0M3Ozs7O047Ozs7OworMzJBRjtDSVJDTEVEIElERU9HUkFQSCBBTExJQU5DRTtTbzswO0w7PGNpcmNsZT4gNTM1NDs7OztOOzs7OzsKKzMyQjA7Q0lSQ0xFRCBJREVPR1JBUEggTklHSFQ7U287MDtMOzxjaXJjbGU+IDU5MUM7Ozs7Tjs7Ozs7CiszMkIxO0NJUkNMRUQgTlVNQkVSIFRISVJUWSBTSVg7Tm87MDtPTjs8Y2lyY2xlPiAwMDMzIDAwMzY7OzszNjtOOzs7OzsKKzMyQjI7Q0lSQ0xFRCBOVU1CRVIgVEhJUlRZIFNFVkVOO05vOzA7T047PGNpcmNsZT4gMDAzMyAwMDM3Ozs7Mzc7Tjs7Ozs7CiszMkIzO0NJUkNMRUQgTlVNQkVSIFRISVJUWSBFSUdIVDtObzswO09OOzxjaXJjbGU+IDAwMzMgMDAzODs7OzM4O047Ozs7OworMzJCNDtDSVJDTEVEIE5VTUJFUiBUSElSVFkgTklORTtObzswO09OOzxjaXJjbGU+IDAwMzMgMDAzOTs7OzM5O047Ozs7OworMzJCNTtDSVJDTEVEIE5VTUJFUiBGT1JUWTtObzswO09OOzxjaXJjbGU+IDAwMzQgMDAzMDs7OzQwO047Ozs7OworMzJCNjtDSVJDTEVEIE5VTUJFUiBGT1JUWSBPTkU7Tm87MDtPTjs8Y2lyY2xlPiAwMDM0IDAwMzE7Ozs0MTtOOzs7OzsKKzMyQjc7Q0lSQ0xFRCBOVU1CRVIgRk9SVFkgVFdPO05vOzA7T047PGNpcmNsZT4gMDAzNCAwMDMyOzs7NDI7Tjs7Ozs7CiszMkI4O0NJUkNMRUQgTlVNQkVSIEZPUlRZIFRIUkVFO05vOzA7T047PGNpcmNsZT4gMDAzNCAwMDMzOzs7NDM7Tjs7Ozs7CiszMkI5O0NJUkNMRUQgTlVNQkVSIEZPUlRZIEZPVVI7Tm87MDtPTjs8Y2lyY2xlPiAwMDM0IDAwMzQ7Ozs0NDtOOzs7OzsKKzMyQkE7Q0lSQ0xFRCBOVU1CRVIgRk9SVFkgRklWRTtObzswO09OOzxjaXJjbGU+IDAwMzQgMDAzNTs7OzQ1O047Ozs7OworMzJCQjtDSVJDTEVEIE5VTUJFUiBGT1JUWSBTSVg7Tm87MDtPTjs8Y2lyY2xlPiAwMDM0IDAwMzY7Ozs0NjtOOzs7OzsKKzMyQkM7Q0lSQ0xFRCBOVU1CRVIgRk9SVFkgU0VWRU47Tm87MDtPTjs8Y2lyY2xlPiAwMDM0IDAwMzc7Ozs0NztOOzs7OzsKKzMyQkQ7Q0lSQ0xFRCBOVU1CRVIgRk9SVFkgRUlHSFQ7Tm87MDtPTjs8Y2lyY2xlPiAwMDM0IDAwMzg7Ozs0ODtOOzs7OzsKKzMyQkU7Q0lSQ0xFRCBOVU1CRVIgRk9SVFkgTklORTtObzswO09OOzxjaXJjbGU+IDAwMzQgMDAzOTs7OzQ5O047Ozs7OworMzJCRjtDSVJDTEVEIE5VTUJFUiBGSUZUWTtObzswO09OOzxjaXJjbGU+IDAwMzUgMDAzMDs7OzUwO047Ozs7OworMzJDMDtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBKQU5VQVJZO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDY3MDg7Ozs7Tjs7Ozs7CiszMkMxO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEZFQlJVQVJZO1NvOzA7TDs8Y29tcGF0PiAwMDMyIDY3MDg7Ozs7Tjs7Ozs7CiszMkMyO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIE1BUkNIO1NvOzA7TDs8Y29tcGF0PiAwMDMzIDY3MDg7Ozs7Tjs7Ozs7CiszMkMzO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEFQUklMO1NvOzA7TDs8Y29tcGF0PiAwMDM0IDY3MDg7Ozs7Tjs7Ozs7CiszMkM0O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIE1BWTtTbzswO0w7PGNvbXBhdD4gMDAzNSA2NzA4Ozs7O047Ozs7OworMzJDNTtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBKVU5FO1NvOzA7TDs8Y29tcGF0PiAwMDM2IDY3MDg7Ozs7Tjs7Ozs7CiszMkM2O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEpVTFk7U287MDtMOzxjb21wYXQ+IDAwMzcgNjcwODs7OztOOzs7OzsKKzMyQzc7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgQVVHVVNUO1NvOzA7TDs8Y29tcGF0PiAwMDM4IDY3MDg7Ozs7Tjs7Ozs7CiszMkM4O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIFNFUFRFTUJFUjtTbzswO0w7PGNvbXBhdD4gMDAzOSA2NzA4Ozs7O047Ozs7OworMzJDOTtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBPQ1RPQkVSO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzAgNjcwODs7OztOOzs7OzsKKzMyQ0E7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgTk9WRU1CRVI7U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzMSA2NzA4Ozs7O047Ozs7OworMzJDQjtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBERUNFTUJFUjtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDMyIDY3MDg7Ozs7Tjs7Ozs7CiszMkQwO0NJUkNMRUQgS0FUQUtBTkEgQTtTbzswO0w7PGNpcmNsZT4gMzBBMjs7OztOOzs7OzsKKzMyRDE7Q0lSQ0xFRCBLQVRBS0FOQSBJO1NvOzA7TDs8Y2lyY2xlPiAzMEE0Ozs7O047Ozs7OworMzJEMjtDSVJDTEVEIEtBVEFLQU5BIFU7U287MDtMOzxjaXJjbGU+IDMwQTY7Ozs7Tjs7Ozs7CiszMkQzO0NJUkNMRUQgS0FUQUtBTkEgRTtTbzswO0w7PGNpcmNsZT4gMzBBODs7OztOOzs7OzsKKzMyRDQ7Q0lSQ0xFRCBLQVRBS0FOQSBPO1NvOzA7TDs8Y2lyY2xlPiAzMEFBOzs7O047Ozs7OworMzJENTtDSVJDTEVEIEtBVEFLQU5BIEtBO1NvOzA7TDs8Y2lyY2xlPiAzMEFCOzs7O047Ozs7OworMzJENjtDSVJDTEVEIEtBVEFLQU5BIEtJO1NvOzA7TDs8Y2lyY2xlPiAzMEFEOzs7O047Ozs7OworMzJENztDSVJDTEVEIEtBVEFLQU5BIEtVO1NvOzA7TDs8Y2lyY2xlPiAzMEFGOzs7O047Ozs7OworMzJEODtDSVJDTEVEIEtBVEFLQU5BIEtFO1NvOzA7TDs8Y2lyY2xlPiAzMEIxOzs7O047Ozs7OworMzJEOTtDSVJDTEVEIEtBVEFLQU5BIEtPO1NvOzA7TDs8Y2lyY2xlPiAzMEIzOzs7O047Ozs7OworMzJEQTtDSVJDTEVEIEtBVEFLQU5BIFNBO1NvOzA7TDs8Y2lyY2xlPiAzMEI1Ozs7O047Ozs7OworMzJEQjtDSVJDTEVEIEtBVEFLQU5BIFNJO1NvOzA7TDs8Y2lyY2xlPiAzMEI3Ozs7O047Ozs7OworMzJEQztDSVJDTEVEIEtBVEFLQU5BIFNVO1NvOzA7TDs8Y2lyY2xlPiAzMEI5Ozs7O047Ozs7OworMzJERDtDSVJDTEVEIEtBVEFLQU5BIFNFO1NvOzA7TDs8Y2lyY2xlPiAzMEJCOzs7O047Ozs7OworMzJERTtDSVJDTEVEIEtBVEFLQU5BIFNPO1NvOzA7TDs8Y2lyY2xlPiAzMEJEOzs7O047Ozs7OworMzJERjtDSVJDTEVEIEtBVEFLQU5BIFRBO1NvOzA7TDs8Y2lyY2xlPiAzMEJGOzs7O047Ozs7OworMzJFMDtDSVJDTEVEIEtBVEFLQU5BIFRJO1NvOzA7TDs8Y2lyY2xlPiAzMEMxOzs7O047Ozs7OworMzJFMTtDSVJDTEVEIEtBVEFLQU5BIFRVO1NvOzA7TDs8Y2lyY2xlPiAzMEM0Ozs7O047Ozs7OworMzJFMjtDSVJDTEVEIEtBVEFLQU5BIFRFO1NvOzA7TDs8Y2lyY2xlPiAzMEM2Ozs7O047Ozs7OworMzJFMztDSVJDTEVEIEtBVEFLQU5BIFRPO1NvOzA7TDs8Y2lyY2xlPiAzMEM4Ozs7O047Ozs7OworMzJFNDtDSVJDTEVEIEtBVEFLQU5BIE5BO1NvOzA7TDs8Y2lyY2xlPiAzMENBOzs7O047Ozs7OworMzJFNTtDSVJDTEVEIEtBVEFLQU5BIE5JO1NvOzA7TDs8Y2lyY2xlPiAzMENCOzs7O047Ozs7OworMzJFNjtDSVJDTEVEIEtBVEFLQU5BIE5VO1NvOzA7TDs8Y2lyY2xlPiAzMENDOzs7O047Ozs7OworMzJFNztDSVJDTEVEIEtBVEFLQU5BIE5FO1NvOzA7TDs8Y2lyY2xlPiAzMENEOzs7O047Ozs7OworMzJFODtDSVJDTEVEIEtBVEFLQU5BIE5PO1NvOzA7TDs8Y2lyY2xlPiAzMENFOzs7O047Ozs7OworMzJFOTtDSVJDTEVEIEtBVEFLQU5BIEhBO1NvOzA7TDs8Y2lyY2xlPiAzMENGOzs7O047Ozs7OworMzJFQTtDSVJDTEVEIEtBVEFLQU5BIEhJO1NvOzA7TDs8Y2lyY2xlPiAzMEQyOzs7O047Ozs7OworMzJFQjtDSVJDTEVEIEtBVEFLQU5BIEhVO1NvOzA7TDs8Y2lyY2xlPiAzMEQ1Ozs7O047Ozs7OworMzJFQztDSVJDTEVEIEtBVEFLQU5BIEhFO1NvOzA7TDs8Y2lyY2xlPiAzMEQ4Ozs7O047Ozs7OworMzJFRDtDSVJDTEVEIEtBVEFLQU5BIEhPO1NvOzA7TDs8Y2lyY2xlPiAzMERCOzs7O047Ozs7OworMzJFRTtDSVJDTEVEIEtBVEFLQU5BIE1BO1NvOzA7TDs8Y2lyY2xlPiAzMERFOzs7O047Ozs7OworMzJFRjtDSVJDTEVEIEtBVEFLQU5BIE1JO1NvOzA7TDs8Y2lyY2xlPiAzMERGOzs7O047Ozs7OworMzJGMDtDSVJDTEVEIEtBVEFLQU5BIE1VO1NvOzA7TDs8Y2lyY2xlPiAzMEUwOzs7O047Ozs7OworMzJGMTtDSVJDTEVEIEtBVEFLQU5BIE1FO1NvOzA7TDs8Y2lyY2xlPiAzMEUxOzs7O047Ozs7OworMzJGMjtDSVJDTEVEIEtBVEFLQU5BIE1PO1NvOzA7TDs8Y2lyY2xlPiAzMEUyOzs7O047Ozs7OworMzJGMztDSVJDTEVEIEtBVEFLQU5BIFlBO1NvOzA7TDs8Y2lyY2xlPiAzMEU0Ozs7O047Ozs7OworMzJGNDtDSVJDTEVEIEtBVEFLQU5BIFlVO1NvOzA7TDs8Y2lyY2xlPiAzMEU2Ozs7O047Ozs7OworMzJGNTtDSVJDTEVEIEtBVEFLQU5BIFlPO1NvOzA7TDs8Y2lyY2xlPiAzMEU4Ozs7O047Ozs7OworMzJGNjtDSVJDTEVEIEtBVEFLQU5BIFJBO1NvOzA7TDs8Y2lyY2xlPiAzMEU5Ozs7O047Ozs7OworMzJGNztDSVJDTEVEIEtBVEFLQU5BIFJJO1NvOzA7TDs8Y2lyY2xlPiAzMEVBOzs7O047Ozs7OworMzJGODtDSVJDTEVEIEtBVEFLQU5BIFJVO1NvOzA7TDs8Y2lyY2xlPiAzMEVCOzs7O047Ozs7OworMzJGOTtDSVJDTEVEIEtBVEFLQU5BIFJFO1NvOzA7TDs8Y2lyY2xlPiAzMEVDOzs7O047Ozs7OworMzJGQTtDSVJDTEVEIEtBVEFLQU5BIFJPO1NvOzA7TDs8Y2lyY2xlPiAzMEVEOzs7O047Ozs7OworMzJGQjtDSVJDTEVEIEtBVEFLQU5BIFdBO1NvOzA7TDs8Y2lyY2xlPiAzMEVGOzs7O047Ozs7OworMzJGQztDSVJDTEVEIEtBVEFLQU5BIFdJO1NvOzA7TDs8Y2lyY2xlPiAzMEYwOzs7O047Ozs7OworMzJGRDtDSVJDTEVEIEtBVEFLQU5BIFdFO1NvOzA7TDs8Y2lyY2xlPiAzMEYxOzs7O047Ozs7OworMzJGRTtDSVJDTEVEIEtBVEFLQU5BIFdPO1NvOzA7TDs8Y2lyY2xlPiAzMEYyOzs7O047Ozs7OworMzMwMDtTUVVBUkUgQVBBQVRPO1NvOzA7TDs8c3F1YXJlPiAzMEEyIDMwRDEgMzBGQyAzMEM4Ozs7O047U1FVQVJFRCBBUEFBVE87Ozs7CiszMzAxO1NRVUFSRSBBUlVIVUE7U287MDtMOzxzcXVhcmU+IDMwQTIgMzBFQiAzMEQ1IDMwQTE7Ozs7TjtTUVVBUkVEIEFSVUhVQTs7OzsKKzMzMDI7U1FVQVJFIEFOUEVBO1NvOzA7TDs8c3F1YXJlPiAzMEEyIDMwRjMgMzBEQSAzMEEyOzs7O047U1FVQVJFRCBBTlBFQTs7OzsKKzMzMDM7U1FVQVJFIEFBUlU7U287MDtMOzxzcXVhcmU+IDMwQTIgMzBGQyAzMEVCOzs7O047U1FVQVJFRCBBQVJVOzs7OworMzMwNDtTUVVBUkUgSU5JTkdVO1NvOzA7TDs8c3F1YXJlPiAzMEE0IDMwQ0IgMzBGMyAzMEIwOzs7O047U1FVQVJFRCBJTklOR1U7Ozs7CiszMzA1O1NRVUFSRSBJTlRJO1NvOzA7TDs8c3F1YXJlPiAzMEE0IDMwRjMgMzBDMTs7OztOO1NRVUFSRUQgSU5USTs7OzsKKzMzMDY7U1FVQVJFIFVPTjtTbzswO0w7PHNxdWFyZT4gMzBBNiAzMEE5IDMwRjM7Ozs7TjtTUVVBUkVEIFVPTjs7OzsKKzMzMDc7U1FVQVJFIEVTVUtVVURPO1NvOzA7TDs8c3F1YXJlPiAzMEE4IDMwQjkgMzBBRiAzMEZDIDMwQzk7Ozs7TjtTUVVBUkVEIEVTVUtVVURPOzs7OworMzMwODtTUVVBUkUgRUVLQUE7U287MDtMOzxzcXVhcmU+IDMwQTggMzBGQyAzMEFCIDMwRkM7Ozs7TjtTUVVBUkVEIEVFS0FBOzs7OworMzMwOTtTUVVBUkUgT05TVTtTbzswO0w7PHNxdWFyZT4gMzBBQSAzMEYzIDMwQjk7Ozs7TjtTUVVBUkVEIE9OU1U7Ozs7CiszMzBBO1NRVUFSRSBPT01VO1NvOzA7TDs8c3F1YXJlPiAzMEFBIDMwRkMgMzBFMDs7OztOO1NRVUFSRUQgT09NVTs7OzsKKzMzMEI7U1FVQVJFIEtBSVJJO1NvOzA7TDs8c3F1YXJlPiAzMEFCIDMwQTQgMzBFQTs7OztOO1NRVUFSRUQgS0FJUkk7Ozs7CiszMzBDO1NRVUFSRSBLQVJBVFRPO1NvOzA7TDs8c3F1YXJlPiAzMEFCIDMwRTkgMzBDMyAzMEM4Ozs7O047U1FVQVJFRCBLQVJBVFRPOzs7OworMzMwRDtTUVVBUkUgS0FST1JJSTtTbzswO0w7PHNxdWFyZT4gMzBBQiAzMEVEIDMwRUEgMzBGQzs7OztOO1NRVUFSRUQgS0FST1JJSTs7OzsKKzMzMEU7U1FVQVJFIEdBUk9OO1NvOzA7TDs8c3F1YXJlPiAzMEFDIDMwRUQgMzBGMzs7OztOO1NRVUFSRUQgR0FST047Ozs7CiszMzBGO1NRVUFSRSBHQU5NQTtTbzswO0w7PHNxdWFyZT4gMzBBQyAzMEYzIDMwREU7Ozs7TjtTUVVBUkVEIEdBTk1BOzs7OworMzMxMDtTUVVBUkUgR0lHQTtTbzswO0w7PHNxdWFyZT4gMzBBRSAzMEFDOzs7O047U1FVQVJFRCBHSUdBOzs7OworMzMxMTtTUVVBUkUgR0lOSUk7U287MDtMOzxzcXVhcmU+IDMwQUUgMzBDQiAzMEZDOzs7O047U1FVQVJFRCBHSU5JSTs7OzsKKzMzMTI7U1FVQVJFIEtZVVJJSTtTbzswO0w7PHNxdWFyZT4gMzBBRCAzMEU1IDMwRUEgMzBGQzs7OztOO1NRVUFSRUQgS1lVUklJOzs7OworMzMxMztTUVVBUkUgR0lSVURBQTtTbzswO0w7PHNxdWFyZT4gMzBBRSAzMEVCIDMwQzAgMzBGQzs7OztOO1NRVUFSRUQgR0lSVURBQTs7OzsKKzMzMTQ7U1FVQVJFIEtJUk87U287MDtMOzxzcXVhcmU+IDMwQUQgMzBFRDs7OztOO1NRVUFSRUQgS0lSTzs7OzsKKzMzMTU7U1FVQVJFIEtJUk9HVVJBTVU7U287MDtMOzxzcXVhcmU+IDMwQUQgMzBFRCAzMEIwIDMwRTkgMzBFMDs7OztOO1NRVUFSRUQgS0lST0dVUkFNVTs7OzsKKzMzMTY7U1FVQVJFIEtJUk9NRUVUT1JVO1NvOzA7TDs8c3F1YXJlPiAzMEFEIDMwRUQgMzBFMSAzMEZDIDMwQzggMzBFQjs7OztOO1NRVUFSRUQgS0lST01FRVRPUlU7Ozs7CiszMzE3O1NRVUFSRSBLSVJPV0FUVE87U287MDtMOzxzcXVhcmU+IDMwQUQgMzBFRCAzMEVGIDMwQzMgMzBDODs7OztOO1NRVUFSRUQgS0lST1dBVFRPOzs7OworMzMxODtTUVVBUkUgR1VSQU1VO1NvOzA7TDs8c3F1YXJlPiAzMEIwIDMwRTkgMzBFMDs7OztOO1NRVUFSRUQgR1VSQU1VOzs7OworMzMxOTtTUVVBUkUgR1VSQU1VVE9OO1NvOzA7TDs8c3F1YXJlPiAzMEIwIDMwRTkgMzBFMCAzMEM4IDMwRjM7Ozs7TjtTUVVBUkVEIEdVUkFNVVRPTjs7OzsKKzMzMUE7U1FVQVJFIEtVUlVaRUlSTztTbzswO0w7PHNxdWFyZT4gMzBBRiAzMEVCIDMwQkMgMzBBNCAzMEVEOzs7O047U1FVQVJFRCBLVVJVWkVJUk87Ozs7CiszMzFCO1NRVUFSRSBLVVJPT05FO1NvOzA7TDs8c3F1YXJlPiAzMEFGIDMwRUQgMzBGQyAzMENEOzs7O047U1FVQVJFRCBLVVJPT05FOzs7OworMzMxQztTUVVBUkUgS0VFU1U7U287MDtMOzxzcXVhcmU+IDMwQjEgMzBGQyAzMEI5Ozs7O047U1FVQVJFRCBLRUVTVTs7OzsKKzMzMUQ7U1FVQVJFIEtPUlVOQTtTbzswO0w7PHNxdWFyZT4gMzBCMyAzMEVCIDMwQ0E7Ozs7TjtTUVVBUkVEIEtPUlVOQTs7OzsKKzMzMUU7U1FVQVJFIEtPT1BPO1NvOzA7TDs8c3F1YXJlPiAzMEIzIDMwRkMgMzBERDs7OztOO1NRVUFSRUQgS09PUE87Ozs7CiszMzFGO1NRVUFSRSBTQUlLVVJVO1NvOzA7TDs8c3F1YXJlPiAzMEI1IDMwQTQgMzBBRiAzMEVCOzs7O047U1FVQVJFRCBTQUlLVVJVOzs7OworMzMyMDtTUVVBUkUgU0FOVElJTVU7U287MDtMOzxzcXVhcmU+IDMwQjUgMzBGMyAzMEMxIDMwRkMgMzBFMDs7OztOO1NRVUFSRUQgU0FOVElJTVU7Ozs7CiszMzIxO1NRVUFSRSBTSVJJTkdVO1NvOzA7TDs8c3F1YXJlPiAzMEI3IDMwRUEgMzBGMyAzMEIwOzs7O047U1FVQVJFRCBTSVJJTkdVOzs7OworMzMyMjtTUVVBUkUgU0VOVEk7U287MDtMOzxzcXVhcmU+IDMwQkIgMzBGMyAzMEMxOzs7O047U1FVQVJFRCBTRU5USTs7OzsKKzMzMjM7U1FVQVJFIFNFTlRPO1NvOzA7TDs8c3F1YXJlPiAzMEJCIDMwRjMgMzBDODs7OztOO1NRVUFSRUQgU0VOVE87Ozs7CiszMzI0O1NRVUFSRSBEQUFTVTtTbzswO0w7PHNxdWFyZT4gMzBDMCAzMEZDIDMwQjk7Ozs7TjtTUVVBUkVEIERBQVNVOzs7OworMzMyNTtTUVVBUkUgREVTSTtTbzswO0w7PHNxdWFyZT4gMzBDNyAzMEI3Ozs7O047U1FVQVJFRCBERVNJOzs7OworMzMyNjtTUVVBUkUgRE9SVTtTbzswO0w7PHNxdWFyZT4gMzBDOSAzMEVCOzs7O047U1FVQVJFRCBET1JVOzs7OworMzMyNztTUVVBUkUgVE9OO1NvOzA7TDs8c3F1YXJlPiAzMEM4IDMwRjM7Ozs7TjtTUVVBUkVEIFRPTjs7OzsKKzMzMjg7U1FVQVJFIE5BTk87U287MDtMOzxzcXVhcmU+IDMwQ0EgMzBDRTs7OztOO1NRVUFSRUQgTkFOTzs7OzsKKzMzMjk7U1FVQVJFIE5PVFRPO1NvOzA7TDs8c3F1YXJlPiAzMENFIDMwQzMgMzBDODs7OztOO1NRVUFSRUQgTk9UVE87Ozs7CiszMzJBO1NRVUFSRSBIQUlUVTtTbzswO0w7PHNxdWFyZT4gMzBDRiAzMEE0IDMwQzQ7Ozs7TjtTUVVBUkVEIEhBSVRVOzs7OworMzMyQjtTUVVBUkUgUEFBU0VOVE87U287MDtMOzxzcXVhcmU+IDMwRDEgMzBGQyAzMEJCIDMwRjMgMzBDODs7OztOO1NRVUFSRUQgUEFBU0VOVE87Ozs7CiszMzJDO1NRVUFSRSBQQUFUVTtTbzswO0w7PHNxdWFyZT4gMzBEMSAzMEZDIDMwQzQ7Ozs7TjtTUVVBUkVEIFBBQVRVOzs7OworMzMyRDtTUVVBUkUgQkFBUkVSVTtTbzswO0w7PHNxdWFyZT4gMzBEMCAzMEZDIDMwRUMgMzBFQjs7OztOO1NRVUFSRUQgQkFBUkVSVTs7OzsKKzMzMkU7U1FVQVJFIFBJQVNVVE9SVTtTbzswO0w7PHNxdWFyZT4gMzBENCAzMEEyIDMwQjkgMzBDOCAzMEVCOzs7O047U1FVQVJFRCBQSUFTVVRPUlU7Ozs7CiszMzJGO1NRVUFSRSBQSUtVUlU7U287MDtMOzxzcXVhcmU+IDMwRDQgMzBBRiAzMEVCOzs7O047U1FVQVJFRCBQSUtVUlU7Ozs7CiszMzMwO1NRVUFSRSBQSUtPO1NvOzA7TDs8c3F1YXJlPiAzMEQ0IDMwQjM7Ozs7TjtTUVVBUkVEIFBJS087Ozs7CiszMzMxO1NRVUFSRSBCSVJVO1NvOzA7TDs8c3F1YXJlPiAzMEQzIDMwRUI7Ozs7TjtTUVVBUkVEIEJJUlU7Ozs7CiszMzMyO1NRVUFSRSBIVUFSQURETztTbzswO0w7PHNxdWFyZT4gMzBENSAzMEExIDMwRTkgMzBDMyAzMEM5Ozs7O047U1FVQVJFRCBIVUFSQURETzs7OzsKKzMzMzM7U1FVQVJFIEhVSUlUTztTbzswO0w7PHNxdWFyZT4gMzBENSAzMEEzIDMwRkMgMzBDODs7OztOO1NRVUFSRUQgSFVJSVRPOzs7OworMzMzNDtTUVVBUkUgQlVTU1lFUlU7U287MDtMOzxzcXVhcmU+IDMwRDYgMzBDMyAzMEI3IDMwQTcgMzBFQjs7OztOO1NRVUFSRUQgQlVTU1lFUlU7Ozs7CiszMzM1O1NRVUFSRSBIVVJBTjtTbzswO0w7PHNxdWFyZT4gMzBENSAzMEU5IDMwRjM7Ozs7TjtTUVVBUkVEIEhVUkFOOzs7OworMzMzNjtTUVVBUkUgSEVLVVRBQVJVO1NvOzA7TDs8c3F1YXJlPiAzMEQ4IDMwQUYgMzBCRiAzMEZDIDMwRUI7Ozs7TjtTUVVBUkVEIEhFS1VUQUFSVTs7OzsKKzMzMzc7U1FVQVJFIFBFU087U287MDtMOzxzcXVhcmU+IDMwREEgMzBCRDs7OztOO1NRVUFSRUQgUEVTTzs7OzsKKzMzMzg7U1FVQVJFIFBFTklISTtTbzswO0w7PHNxdWFyZT4gMzBEQSAzMENCIDMwRDI7Ozs7TjtTUVVBUkVEIFBFTklISTs7OzsKKzMzMzk7U1FVQVJFIEhFUlVUVTtTbzswO0w7PHNxdWFyZT4gMzBEOCAzMEVCIDMwQzQ7Ozs7TjtTUVVBUkVEIEhFUlVUVTs7OzsKKzMzM0E7U1FVQVJFIFBFTlNVO1NvOzA7TDs8c3F1YXJlPiAzMERBIDMwRjMgMzBCOTs7OztOO1NRVUFSRUQgUEVOU1U7Ozs7CiszMzNCO1NRVUFSRSBQRUVaSTtTbzswO0w7PHNxdWFyZT4gMzBEQSAzMEZDIDMwQjg7Ozs7TjtTUVVBUkVEIFBFRVpJOzs7OworMzMzQztTUVVBUkUgQkVFVEE7U287MDtMOzxzcXVhcmU+IDMwRDkgMzBGQyAzMEJGOzs7O047U1FVQVJFRCBCRUVUQTs7OzsKKzMzM0Q7U1FVQVJFIFBPSU5UTztTbzswO0w7PHNxdWFyZT4gMzBERCAzMEE0IDMwRjMgMzBDODs7OztOO1NRVUFSRUQgUE9JTlRPOzs7OworMzMzRTtTUVVBUkUgQk9SVVRPO1NvOzA7TDs8c3F1YXJlPiAzMERDIDMwRUIgMzBDODs7OztOO1NRVUFSRUQgQk9SVVRPOzs7OworMzMzRjtTUVVBUkUgSE9OO1NvOzA7TDs8c3F1YXJlPiAzMERCIDMwRjM7Ozs7TjtTUVVBUkVEIEhPTjs7OzsKKzMzNDA7U1FVQVJFIFBPTkRPO1NvOzA7TDs8c3F1YXJlPiAzMEREIDMwRjMgMzBDOTs7OztOO1NRVUFSRUQgUE9ORE87Ozs7CiszMzQxO1NRVUFSRSBIT09SVTtTbzswO0w7PHNxdWFyZT4gMzBEQiAzMEZDIDMwRUI7Ozs7TjtTUVVBUkVEIEhPT1JVOzs7OworMzM0MjtTUVVBUkUgSE9PTjtTbzswO0w7PHNxdWFyZT4gMzBEQiAzMEZDIDMwRjM7Ozs7TjtTUVVBUkVEIEhPT047Ozs7CiszMzQzO1NRVUFSRSBNQUlLVVJPO1NvOzA7TDs8c3F1YXJlPiAzMERFIDMwQTQgMzBBRiAzMEVEOzs7O047U1FVQVJFRCBNQUlLVVJPOzs7OworMzM0NDtTUVVBUkUgTUFJUlU7U287MDtMOzxzcXVhcmU+IDMwREUgMzBBNCAzMEVCOzs7O047U1FVQVJFRCBNQUlSVTs7OzsKKzMzNDU7U1FVQVJFIE1BSEhBO1NvOzA7TDs8c3F1YXJlPiAzMERFIDMwQzMgMzBDRjs7OztOO1NRVUFSRUQgTUFISEE7Ozs7CiszMzQ2O1NRVUFSRSBNQVJVS1U7U287MDtMOzxzcXVhcmU+IDMwREUgMzBFQiAzMEFGOzs7O047U1FVQVJFRCBNQVJVS1U7Ozs7CiszMzQ3O1NRVUFSRSBNQU5TWU9OO1NvOzA7TDs8c3F1YXJlPiAzMERFIDMwRjMgMzBCNyAzMEU3IDMwRjM7Ozs7TjtTUVVBUkVEIE1BTlNZT047Ozs7CiszMzQ4O1NRVUFSRSBNSUtVUk9OO1NvOzA7TDs8c3F1YXJlPiAzMERGIDMwQUYgMzBFRCAzMEYzOzs7O047U1FVQVJFRCBNSUtVUk9OOzs7OworMzM0OTtTUVVBUkUgTUlSSTtTbzswO0w7PHNxdWFyZT4gMzBERiAzMEVBOzs7O047U1FVQVJFRCBNSVJJOzs7OworMzM0QTtTUVVBUkUgTUlSSUJBQVJVO1NvOzA7TDs8c3F1YXJlPiAzMERGIDMwRUEgMzBEMCAzMEZDIDMwRUI7Ozs7TjtTUVVBUkVEIE1JUklCQUFSVTs7OzsKKzMzNEI7U1FVQVJFIE1FR0E7U287MDtMOzxzcXVhcmU+IDMwRTEgMzBBQzs7OztOO1NRVUFSRUQgTUVHQTs7OzsKKzMzNEM7U1FVQVJFIE1FR0FUT047U287MDtMOzxzcXVhcmU+IDMwRTEgMzBBQyAzMEM4IDMwRjM7Ozs7TjtTUVVBUkVEIE1FR0FUT047Ozs7CiszMzREO1NRVUFSRSBNRUVUT1JVO1NvOzA7TDs8c3F1YXJlPiAzMEUxIDMwRkMgMzBDOCAzMEVCOzs7O047U1FVQVJFRCBNRUVUT1JVOzs7OworMzM0RTtTUVVBUkUgWUFBRE87U287MDtMOzxzcXVhcmU+IDMwRTQgMzBGQyAzMEM5Ozs7O047U1FVQVJFRCBZQUFETzs7OzsKKzMzNEY7U1FVQVJFIFlBQVJVO1NvOzA7TDs8c3F1YXJlPiAzMEU0IDMwRkMgMzBFQjs7OztOO1NRVUFSRUQgWUFBUlU7Ozs7CiszMzUwO1NRVUFSRSBZVUFOO1NvOzA7TDs8c3F1YXJlPiAzMEU2IDMwQTIgMzBGMzs7OztOO1NRVUFSRUQgWVVBTjs7OzsKKzMzNTE7U1FVQVJFIFJJVFRPUlU7U287MDtMOzxzcXVhcmU+IDMwRUEgMzBDMyAzMEM4IDMwRUI7Ozs7TjtTUVVBUkVEIFJJVFRPUlU7Ozs7CiszMzUyO1NRVUFSRSBSSVJBO1NvOzA7TDs8c3F1YXJlPiAzMEVBIDMwRTk7Ozs7TjtTUVVBUkVEIFJJUkE7Ozs7CiszMzUzO1NRVUFSRSBSVVBJSTtTbzswO0w7PHNxdWFyZT4gMzBFQiAzMEQ0IDMwRkM7Ozs7TjtTUVVBUkVEIFJVUElJOzs7OworMzM1NDtTUVVBUkUgUlVVQlVSVTtTbzswO0w7PHNxdWFyZT4gMzBFQiAzMEZDIDMwRDYgMzBFQjs7OztOO1NRVUFSRUQgUlVVQlVSVTs7OzsKKzMzNTU7U1FVQVJFIFJFTVU7U287MDtMOzxzcXVhcmU+IDMwRUMgMzBFMDs7OztOO1NRVUFSRUQgUkVNVTs7OzsKKzMzNTY7U1FVQVJFIFJFTlRPR0VOO1NvOzA7TDs8c3F1YXJlPiAzMEVDIDMwRjMgMzBDOCAzMEIyIDMwRjM7Ozs7TjtTUVVBUkVEIFJFTlRPR0VOOzs7OworMzM1NztTUVVBUkUgV0FUVE87U287MDtMOzxzcXVhcmU+IDMwRUYgMzBDMyAzMEM4Ozs7O047U1FVQVJFRCBXQVRUTzs7OzsKKzMzNTg7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBaRVJPO1NvOzA7TDs8Y29tcGF0PiAwMDMwIDcwQjk7Ozs7Tjs7Ozs7CiszMzU5O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgT05FO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDcwQjk7Ozs7Tjs7Ozs7CiszMzVBO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgVFdPO1NvOzA7TDs8Y29tcGF0PiAwMDMyIDcwQjk7Ozs7Tjs7Ozs7CiszMzVCO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgVEhSRUU7U287MDtMOzxjb21wYXQ+IDAwMzMgNzBCOTs7OztOOzs7OzsKKzMzNUM7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBGT1VSO1NvOzA7TDs8Y29tcGF0PiAwMDM0IDcwQjk7Ozs7Tjs7Ozs7CiszMzVEO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgRklWRTtTbzswO0w7PGNvbXBhdD4gMDAzNSA3MEI5Ozs7O047Ozs7OworMzM1RTtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIFNJWDtTbzswO0w7PGNvbXBhdD4gMDAzNiA3MEI5Ozs7O047Ozs7OworMzM1RjtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIFNFVkVOO1NvOzA7TDs8Y29tcGF0PiAwMDM3IDcwQjk7Ozs7Tjs7Ozs7CiszMzYwO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgRUlHSFQ7U287MDtMOzxjb21wYXQ+IDAwMzggNzBCOTs7OztOOzs7OzsKKzMzNjE7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBOSU5FO1NvOzA7TDs8Y29tcGF0PiAwMDM5IDcwQjk7Ozs7Tjs7Ozs7CiszMzYyO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgVEVOO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzAgNzBCOTs7OztOOzs7OzsKKzMzNjM7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBFTEVWRU47U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzMSA3MEI5Ozs7O047Ozs7OworMzM2NDtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIFRXRUxWRTtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDMyIDcwQjk7Ozs7Tjs7Ozs7CiszMzY1O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgVEhJUlRFRU47U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzMyA3MEI5Ozs7O047Ozs7OworMzM2NjtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIEZPVVJURUVOO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzQgNzBCOTs7OztOOzs7OzsKKzMzNjc7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBGSUZURUVOO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzUgNzBCOTs7OztOOzs7OzsKKzMzNjg7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBTSVhURUVOO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzYgNzBCOTs7OztOOzs7OzsKKzMzNjk7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBTRVZFTlRFRU47U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzNyA3MEI5Ozs7O047Ozs7OworMzM2QTtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIEVJR0hURUVOO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzggNzBCOTs7OztOOzs7OzsKKzMzNkI7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBOSU5FVEVFTjtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDM5IDcwQjk7Ozs7Tjs7Ozs7CiszMzZDO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgVFdFTlRZO1NvOzA7TDs8Y29tcGF0PiAwMDMyIDAwMzAgNzBCOTs7OztOOzs7OzsKKzMzNkQ7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBUV0VOVFktT05FO1NvOzA7TDs8Y29tcGF0PiAwMDMyIDAwMzEgNzBCOTs7OztOOzs7OzsKKzMzNkU7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBUV0VOVFktVFdPO1NvOzA7TDs8Y29tcGF0PiAwMDMyIDAwMzIgNzBCOTs7OztOOzs7OzsKKzMzNkY7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBUV0VOVFktVEhSRUU7U287MDtMOzxjb21wYXQ+IDAwMzIgMDAzMyA3MEI5Ozs7O047Ozs7OworMzM3MDtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIFRXRU5UWS1GT1VSO1NvOzA7TDs8Y29tcGF0PiAwMDMyIDAwMzQgNzBCOTs7OztOOzs7OzsKKzMzNzE7U1FVQVJFIEhQQTtTbzswO0w7PHNxdWFyZT4gMDA2OCAwMDUwIDAwNjE7Ozs7Tjs7Ozs7CiszMzcyO1NRVUFSRSBEQTtTbzswO0w7PHNxdWFyZT4gMDA2NCAwMDYxOzs7O047Ozs7OworMzM3MztTUVVBUkUgQVU7U287MDtMOzxzcXVhcmU+IDAwNDEgMDA1NTs7OztOOzs7OzsKKzMzNzQ7U1FVQVJFIEJBUjtTbzswO0w7PHNxdWFyZT4gMDA2MiAwMDYxIDAwNzI7Ozs7Tjs7Ozs7CiszMzc1O1NRVUFSRSBPVjtTbzswO0w7PHNxdWFyZT4gMDA2RiAwMDU2Ozs7O047Ozs7OworMzM3NjtTUVVBUkUgUEM7U287MDtMOzxzcXVhcmU+IDAwNzAgMDA2Mzs7OztOOzs7OzsKKzMzN0I7U1FVQVJFIEVSQSBOQU1FIEhFSVNFSTtTbzswO0w7PHNxdWFyZT4gNUU3MyA2MjEwOzs7O047U1FVQVJFRCBUV08gSURFT0dSQVBIUyBFUkEgTkFNRSBIRUlTRUk7Ozs7CiszMzdDO1NRVUFSRSBFUkEgTkFNRSBTWU9VV0E7U287MDtMOzxzcXVhcmU+IDY2MkQgNTQ4Qzs7OztOO1NRVUFSRUQgVFdPIElERU9HUkFQSFMgRVJBIE5BTUUgU1lPVVdBOzs7OworMzM3RDtTUVVBUkUgRVJBIE5BTUUgVEFJU1lPVTtTbzswO0w7PHNxdWFyZT4gNTkyNyA2QjYzOzs7O047U1FVQVJFRCBUV08gSURFT0dSQVBIUyBFUkEgTkFNRSBUQUlTWU9VOzs7OworMzM3RTtTUVVBUkUgRVJBIE5BTUUgTUVJWkk7U287MDtMOzxzcXVhcmU+IDY2MEUgNkNCQjs7OztOO1NRVUFSRUQgVFdPIElERU9HUkFQSFMgRVJBIE5BTUUgTUVJWkk7Ozs7CiszMzdGO1NRVUFSRSBDT1JQT1JBVElPTjtTbzswO0w7PHNxdWFyZT4gNjgyQSA1RjBGIDRGMUEgNzkzRTs7OztOO1NRVUFSRUQgRk9VUiBJREVPR1JBUEhTIENPUlBPUkFUSU9OOzs7OworMzM4MDtTUVVBUkUgUEEgQU1QUztTbzswO0w7PHNxdWFyZT4gMDA3MCAwMDQxOzs7O047U1FVQVJFRCBQQSBBTVBTOzs7OworMzM4MTtTUVVBUkUgTkE7U287MDtMOzxzcXVhcmU+IDAwNkUgMDA0MTs7OztOO1NRVUFSRUQgTkE7Ozs7CiszMzgyO1NRVUFSRSBNVSBBO1NvOzA7TDs8c3F1YXJlPiAwM0JDIDAwNDE7Ozs7TjtTUVVBUkVEIE1VIEE7Ozs7CiszMzgzO1NRVUFSRSBNQTtTbzswO0w7PHNxdWFyZT4gMDA2RCAwMDQxOzs7O047U1FVQVJFRCBNQTs7OzsKKzMzODQ7U1FVQVJFIEtBO1NvOzA7TDs8c3F1YXJlPiAwMDZCIDAwNDE7Ozs7TjtTUVVBUkVEIEtBOzs7OworMzM4NTtTUVVBUkUgS0I7U287MDtMOzxzcXVhcmU+IDAwNEIgMDA0Mjs7OztOO1NRVUFSRUQgS0I7Ozs7CiszMzg2O1NRVUFSRSBNQjtTbzswO0w7PHNxdWFyZT4gMDA0RCAwMDQyOzs7O047U1FVQVJFRCBNQjs7OzsKKzMzODc7U1FVQVJFIEdCO1NvOzA7TDs8c3F1YXJlPiAwMDQ3IDAwNDI7Ozs7TjtTUVVBUkVEIEdCOzs7OworMzM4ODtTUVVBUkUgQ0FMO1NvOzA7TDs8c3F1YXJlPiAwMDYzIDAwNjEgMDA2Qzs7OztOO1NRVUFSRUQgQ0FMOzs7OworMzM4OTtTUVVBUkUgS0NBTDtTbzswO0w7PHNxdWFyZT4gMDA2QiAwMDYzIDAwNjEgMDA2Qzs7OztOO1NRVUFSRUQgS0NBTDs7OzsKKzMzOEE7U1FVQVJFIFBGO1NvOzA7TDs8c3F1YXJlPiAwMDcwIDAwNDY7Ozs7TjtTUVVBUkVEIFBGOzs7OworMzM4QjtTUVVBUkUgTkY7U287MDtMOzxzcXVhcmU+IDAwNkUgMDA0Njs7OztOO1NRVUFSRUQgTkY7Ozs7CiszMzhDO1NRVUFSRSBNVSBGO1NvOzA7TDs8c3F1YXJlPiAwM0JDIDAwNDY7Ozs7TjtTUVVBUkVEIE1VIEY7Ozs7CiszMzhEO1NRVUFSRSBNVSBHO1NvOzA7TDs8c3F1YXJlPiAwM0JDIDAwNjc7Ozs7TjtTUVVBUkVEIE1VIEc7Ozs7CiszMzhFO1NRVUFSRSBNRztTbzswO0w7PHNxdWFyZT4gMDA2RCAwMDY3Ozs7O047U1FVQVJFRCBNRzs7OzsKKzMzOEY7U1FVQVJFIEtHO1NvOzA7TDs8c3F1YXJlPiAwMDZCIDAwNjc7Ozs7TjtTUVVBUkVEIEtHOzs7OworMzM5MDtTUVVBUkUgSFo7U287MDtMOzxzcXVhcmU+IDAwNDggMDA3QTs7OztOO1NRVUFSRUQgSFo7Ozs7CiszMzkxO1NRVUFSRSBLSFo7U287MDtMOzxzcXVhcmU+IDAwNkIgMDA0OCAwMDdBOzs7O047U1FVQVJFRCBLSFo7Ozs7CiszMzkyO1NRVUFSRSBNSFo7U287MDtMOzxzcXVhcmU+IDAwNEQgMDA0OCAwMDdBOzs7O047U1FVQVJFRCBNSFo7Ozs7CiszMzkzO1NRVUFSRSBHSFo7U287MDtMOzxzcXVhcmU+IDAwNDcgMDA0OCAwMDdBOzs7O047U1FVQVJFRCBHSFo7Ozs7CiszMzk0O1NRVUFSRSBUSFo7U287MDtMOzxzcXVhcmU+IDAwNTQgMDA0OCAwMDdBOzs7O047U1FVQVJFRCBUSFo7Ozs7CiszMzk1O1NRVUFSRSBNVSBMO1NvOzA7TDs8c3F1YXJlPiAwM0JDIDIxMTM7Ozs7TjtTUVVBUkVEIE1VIEw7Ozs7CiszMzk2O1NRVUFSRSBNTDtTbzswO0w7PHNxdWFyZT4gMDA2RCAyMTEzOzs7O047U1FVQVJFRCBNTDs7OzsKKzMzOTc7U1FVQVJFIERMO1NvOzA7TDs8c3F1YXJlPiAwMDY0IDIxMTM7Ozs7TjtTUVVBUkVEIERMOzs7OworMzM5ODtTUVVBUkUgS0w7U287MDtMOzxzcXVhcmU+IDAwNkIgMjExMzs7OztOO1NRVUFSRUQgS0w7Ozs7CiszMzk5O1NRVUFSRSBGTTtTbzswO0w7PHNxdWFyZT4gMDA2NiAwMDZEOzs7O047U1FVQVJFRCBGTTs7OzsKKzMzOUE7U1FVQVJFIE5NO1NvOzA7TDs8c3F1YXJlPiAwMDZFIDAwNkQ7Ozs7TjtTUVVBUkVEIE5NOzs7OworMzM5QjtTUVVBUkUgTVUgTTtTbzswO0w7PHNxdWFyZT4gMDNCQyAwMDZEOzs7O047U1FVQVJFRCBNVSBNOzs7OworMzM5QztTUVVBUkUgTU07U287MDtMOzxzcXVhcmU+IDAwNkQgMDA2RDs7OztOO1NRVUFSRUQgTU07Ozs7CiszMzlEO1NRVUFSRSBDTTtTbzswO0w7PHNxdWFyZT4gMDA2MyAwMDZEOzs7O047U1FVQVJFRCBDTTs7OzsKKzMzOUU7U1FVQVJFIEtNO1NvOzA7TDs8c3F1YXJlPiAwMDZCIDAwNkQ7Ozs7TjtTUVVBUkVEIEtNOzs7OworMzM5RjtTUVVBUkUgTU0gU1FVQVJFRDtTbzswO0w7PHNxdWFyZT4gMDA2RCAwMDZEIDAwQjI7Ozs7TjtTUVVBUkVEIE1NIFNRVUFSRUQ7Ozs7CiszM0EwO1NRVUFSRSBDTSBTUVVBUkVEO1NvOzA7TDs8c3F1YXJlPiAwMDYzIDAwNkQgMDBCMjs7OztOO1NRVUFSRUQgQ00gU1FVQVJFRDs7OzsKKzMzQTE7U1FVQVJFIE0gU1FVQVJFRDtTbzswO0w7PHNxdWFyZT4gMDA2RCAwMEIyOzs7O047U1FVQVJFRCBNIFNRVUFSRUQ7Ozs7CiszM0EyO1NRVUFSRSBLTSBTUVVBUkVEO1NvOzA7TDs8c3F1YXJlPiAwMDZCIDAwNkQgMDBCMjs7OztOO1NRVUFSRUQgS00gU1FVQVJFRDs7OzsKKzMzQTM7U1FVQVJFIE1NIENVQkVEO1NvOzA7TDs8c3F1YXJlPiAwMDZEIDAwNkQgMDBCMzs7OztOO1NRVUFSRUQgTU0gQ1VCRUQ7Ozs7CiszM0E0O1NRVUFSRSBDTSBDVUJFRDtTbzswO0w7PHNxdWFyZT4gMDA2MyAwMDZEIDAwQjM7Ozs7TjtTUVVBUkVEIENNIENVQkVEOzs7OworMzNBNTtTUVVBUkUgTSBDVUJFRDtTbzswO0w7PHNxdWFyZT4gMDA2RCAwMEIzOzs7O047U1FVQVJFRCBNIENVQkVEOzs7OworMzNBNjtTUVVBUkUgS00gQ1VCRUQ7U287MDtMOzxzcXVhcmU+IDAwNkIgMDA2RCAwMEIzOzs7O047U1FVQVJFRCBLTSBDVUJFRDs7OzsKKzMzQTc7U1FVQVJFIE0gT1ZFUiBTO1NvOzA7TDs8c3F1YXJlPiAwMDZEIDIyMTUgMDA3Mzs7OztOO1NRVUFSRUQgTSBPVkVSIFM7Ozs7CiszM0E4O1NRVUFSRSBNIE9WRVIgUyBTUVVBUkVEO1NvOzA7TDs8c3F1YXJlPiAwMDZEIDIyMTUgMDA3MyAwMEIyOzs7O047U1FVQVJFRCBNIE9WRVIgUyBTUVVBUkVEOzs7OworMzNBOTtTUVVBUkUgUEE7U287MDtMOzxzcXVhcmU+IDAwNTAgMDA2MTs7OztOO1NRVUFSRUQgUEE7Ozs7CiszM0FBO1NRVUFSRSBLUEE7U287MDtMOzxzcXVhcmU+IDAwNkIgMDA1MCAwMDYxOzs7O047U1FVQVJFRCBLUEE7Ozs7CiszM0FCO1NRVUFSRSBNUEE7U287MDtMOzxzcXVhcmU+IDAwNEQgMDA1MCAwMDYxOzs7O047U1FVQVJFRCBNUEE7Ozs7CiszM0FDO1NRVUFSRSBHUEE7U287MDtMOzxzcXVhcmU+IDAwNDcgMDA1MCAwMDYxOzs7O047U1FVQVJFRCBHUEE7Ozs7CiszM0FEO1NRVUFSRSBSQUQ7U287MDtMOzxzcXVhcmU+IDAwNzIgMDA2MSAwMDY0Ozs7O047U1FVQVJFRCBSQUQ7Ozs7CiszM0FFO1NRVUFSRSBSQUQgT1ZFUiBTO1NvOzA7TDs8c3F1YXJlPiAwMDcyIDAwNjEgMDA2NCAyMjE1IDAwNzM7Ozs7TjtTUVVBUkVEIFJBRCBPVkVSIFM7Ozs7CiszM0FGO1NRVUFSRSBSQUQgT1ZFUiBTIFNRVUFSRUQ7U287MDtMOzxzcXVhcmU+IDAwNzIgMDA2MSAwMDY0IDIyMTUgMDA3MyAwMEIyOzs7O047U1FVQVJFRCBSQUQgT1ZFUiBTIFNRVUFSRUQ7Ozs7CiszM0IwO1NRVUFSRSBQUztTbzswO0w7PHNxdWFyZT4gMDA3MCAwMDczOzs7O047U1FVQVJFRCBQUzs7OzsKKzMzQjE7U1FVQVJFIE5TO1NvOzA7TDs8c3F1YXJlPiAwMDZFIDAwNzM7Ozs7TjtTUVVBUkVEIE5TOzs7OworMzNCMjtTUVVBUkUgTVUgUztTbzswO0w7PHNxdWFyZT4gMDNCQyAwMDczOzs7O047U1FVQVJFRCBNVSBTOzs7OworMzNCMztTUVVBUkUgTVM7U287MDtMOzxzcXVhcmU+IDAwNkQgMDA3Mzs7OztOO1NRVUFSRUQgTVM7Ozs7CiszM0I0O1NRVUFSRSBQVjtTbzswO0w7PHNxdWFyZT4gMDA3MCAwMDU2Ozs7O047U1FVQVJFRCBQVjs7OzsKKzMzQjU7U1FVQVJFIE5WO1NvOzA7TDs8c3F1YXJlPiAwMDZFIDAwNTY7Ozs7TjtTUVVBUkVEIE5WOzs7OworMzNCNjtTUVVBUkUgTVUgVjtTbzswO0w7PHNxdWFyZT4gMDNCQyAwMDU2Ozs7O047U1FVQVJFRCBNVSBWOzs7OworMzNCNztTUVVBUkUgTVY7U287MDtMOzxzcXVhcmU+IDAwNkQgMDA1Njs7OztOO1NRVUFSRUQgTVY7Ozs7CiszM0I4O1NRVUFSRSBLVjtTbzswO0w7PHNxdWFyZT4gMDA2QiAwMDU2Ozs7O047U1FVQVJFRCBLVjs7OzsKKzMzQjk7U1FVQVJFIE1WIE1FR0E7U287MDtMOzxzcXVhcmU+IDAwNEQgMDA1Njs7OztOO1NRVUFSRUQgTVYgTUVHQTs7OzsKKzMzQkE7U1FVQVJFIFBXO1NvOzA7TDs8c3F1YXJlPiAwMDcwIDAwNTc7Ozs7TjtTUVVBUkVEIFBXOzs7OworMzNCQjtTUVVBUkUgTlc7U287MDtMOzxzcXVhcmU+IDAwNkUgMDA1Nzs7OztOO1NRVUFSRUQgTlc7Ozs7CiszM0JDO1NRVUFSRSBNVSBXO1NvOzA7TDs8c3F1YXJlPiAwM0JDIDAwNTc7Ozs7TjtTUVVBUkVEIE1VIFc7Ozs7CiszM0JEO1NRVUFSRSBNVztTbzswO0w7PHNxdWFyZT4gMDA2RCAwMDU3Ozs7O047U1FVQVJFRCBNVzs7OzsKKzMzQkU7U1FVQVJFIEtXO1NvOzA7TDs8c3F1YXJlPiAwMDZCIDAwNTc7Ozs7TjtTUVVBUkVEIEtXOzs7OworMzNCRjtTUVVBUkUgTVcgTUVHQTtTbzswO0w7PHNxdWFyZT4gMDA0RCAwMDU3Ozs7O047U1FVQVJFRCBNVyBNRUdBOzs7OworMzNDMDtTUVVBUkUgSyBPSE07U287MDtMOzxzcXVhcmU+IDAwNkIgMDNBOTs7OztOO1NRVUFSRUQgSyBPSE07Ozs7CiszM0MxO1NRVUFSRSBNIE9ITTtTbzswO0w7PHNxdWFyZT4gMDA0RCAwM0E5Ozs7O047U1FVQVJFRCBNIE9ITTs7OzsKKzMzQzI7U1FVQVJFIEFNO1NvOzA7TDs8c3F1YXJlPiAwMDYxIDAwMkUgMDA2RCAwMDJFOzs7O047U1FVQVJFRCBBTTs7OzsKKzMzQzM7U1FVQVJFIEJRO1NvOzA7TDs8c3F1YXJlPiAwMDQyIDAwNzE7Ozs7TjtTUVVBUkVEIEJROzs7OworMzNDNDtTUVVBUkUgQ0M7U287MDtMOzxzcXVhcmU+IDAwNjMgMDA2Mzs7OztOO1NRVUFSRUQgQ0M7Ozs7CiszM0M1O1NRVUFSRSBDRDtTbzswO0w7PHNxdWFyZT4gMDA2MyAwMDY0Ozs7O047U1FVQVJFRCBDRDs7OzsKKzMzQzY7U1FVQVJFIEMgT1ZFUiBLRztTbzswO0w7PHNxdWFyZT4gMDA0MyAyMjE1IDAwNkIgMDA2Nzs7OztOO1NRVUFSRUQgQyBPVkVSIEtHOzs7OworMzNDNztTUVVBUkUgQ087U287MDtMOzxzcXVhcmU+IDAwNDMgMDA2RiAwMDJFOzs7O047U1FVQVJFRCBDTzs7OzsKKzMzQzg7U1FVQVJFIERCO1NvOzA7TDs8c3F1YXJlPiAwMDY0IDAwNDI7Ozs7TjtTUVVBUkVEIERCOzs7OworMzNDOTtTUVVBUkUgR1k7U287MDtMOzxzcXVhcmU+IDAwNDcgMDA3OTs7OztOO1NRVUFSRUQgR1k7Ozs7CiszM0NBO1NRVUFSRSBIQTtTbzswO0w7PHNxdWFyZT4gMDA2OCAwMDYxOzs7O047U1FVQVJFRCBIQTs7OzsKKzMzQ0I7U1FVQVJFIEhQO1NvOzA7TDs8c3F1YXJlPiAwMDQ4IDAwNTA7Ozs7TjtTUVVBUkVEIEhQOzs7OworMzNDQztTUVVBUkUgSU47U287MDtMOzxzcXVhcmU+IDAwNjkgMDA2RTs7OztOO1NRVUFSRUQgSU47Ozs7CiszM0NEO1NRVUFSRSBLSztTbzswO0w7PHNxdWFyZT4gMDA0QiAwMDRCOzs7O047U1FVQVJFRCBLSzs7OzsKKzMzQ0U7U1FVQVJFIEtNIENBUElUQUw7U287MDtMOzxzcXVhcmU+IDAwNEIgMDA0RDs7OztOO1NRVUFSRUQgS00gQ0FQSVRBTDs7OzsKKzMzQ0Y7U1FVQVJFIEtUO1NvOzA7TDs8c3F1YXJlPiAwMDZCIDAwNzQ7Ozs7TjtTUVVBUkVEIEtUOzs7OworMzNEMDtTUVVBUkUgTE07U287MDtMOzxzcXVhcmU+IDAwNkMgMDA2RDs7OztOO1NRVUFSRUQgTE07Ozs7CiszM0QxO1NRVUFSRSBMTjtTbzswO0w7PHNxdWFyZT4gMDA2QyAwMDZFOzs7O047U1FVQVJFRCBMTjs7OzsKKzMzRDI7U1FVQVJFIExPRztTbzswO0w7PHNxdWFyZT4gMDA2QyAwMDZGIDAwNjc7Ozs7TjtTUVVBUkVEIExPRzs7OzsKKzMzRDM7U1FVQVJFIExYO1NvOzA7TDs8c3F1YXJlPiAwMDZDIDAwNzg7Ozs7TjtTUVVBUkVEIExYOzs7OworMzNENDtTUVVBUkUgTUIgU01BTEw7U287MDtMOzxzcXVhcmU+IDAwNkQgMDA2Mjs7OztOO1NRVUFSRUQgTUIgU01BTEw7Ozs7CiszM0Q1O1NRVUFSRSBNSUw7U287MDtMOzxzcXVhcmU+IDAwNkQgMDA2OSAwMDZDOzs7O047U1FVQVJFRCBNSUw7Ozs7CiszM0Q2O1NRVUFSRSBNT0w7U287MDtMOzxzcXVhcmU+IDAwNkQgMDA2RiAwMDZDOzs7O047U1FVQVJFRCBNT0w7Ozs7CiszM0Q3O1NRVUFSRSBQSDtTbzswO0w7PHNxdWFyZT4gMDA1MCAwMDQ4Ozs7O047U1FVQVJFRCBQSDs7OzsKKzMzRDg7U1FVQVJFIFBNO1NvOzA7TDs8c3F1YXJlPiAwMDcwIDAwMkUgMDA2RCAwMDJFOzs7O047U1FVQVJFRCBQTTs7OzsKKzMzRDk7U1FVQVJFIFBQTTtTbzswO0w7PHNxdWFyZT4gMDA1MCAwMDUwIDAwNEQ7Ozs7TjtTUVVBUkVEIFBQTTs7OzsKKzMzREE7U1FVQVJFIFBSO1NvOzA7TDs8c3F1YXJlPiAwMDUwIDAwNTI7Ozs7TjtTUVVBUkVEIFBSOzs7OworMzNEQjtTUVVBUkUgU1I7U287MDtMOzxzcXVhcmU+IDAwNzMgMDA3Mjs7OztOO1NRVUFSRUQgU1I7Ozs7CiszM0RDO1NRVUFSRSBTVjtTbzswO0w7PHNxdWFyZT4gMDA1MyAwMDc2Ozs7O047U1FVQVJFRCBTVjs7OzsKKzMzREQ7U1FVQVJFIFdCO1NvOzA7TDs8c3F1YXJlPiAwMDU3IDAwNjI7Ozs7TjtTUVVBUkVEIFdCOzs7OworMzNFMDtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgT05FO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDY1RTU7Ozs7Tjs7Ozs7CiszM0UxO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV087U287MDtMOzxjb21wYXQ+IDAwMzIgNjVFNTs7OztOOzs7OzsKKzMzRTI7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRIUkVFO1NvOzA7TDs8Y29tcGF0PiAwMDMzIDY1RTU7Ozs7Tjs7Ozs7CiszM0UzO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBGT1VSO1NvOzA7TDs8Y29tcGF0PiAwMDM0IDY1RTU7Ozs7Tjs7Ozs7CiszM0U0O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBGSVZFO1NvOzA7TDs8Y29tcGF0PiAwMDM1IDY1RTU7Ozs7Tjs7Ozs7CiszM0U1O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBTSVg7U287MDtMOzxjb21wYXQ+IDAwMzYgNjVFNTs7OztOOzs7OzsKKzMzRTY7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFNFVkVOO1NvOzA7TDs8Y29tcGF0PiAwMDM3IDY1RTU7Ozs7Tjs7Ozs7CiszM0U3O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBFSUdIVDtTbzswO0w7PGNvbXBhdD4gMDAzOCA2NUU1Ozs7O047Ozs7OworMzNFODtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgTklORTtTbzswO0w7PGNvbXBhdD4gMDAzOSA2NUU1Ozs7O047Ozs7OworMzNFOTtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgVEVOO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzAgNjVFNTs7OztOOzs7OzsKKzMzRUE7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIEVMRVZFTjtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDMxIDY1RTU7Ozs7Tjs7Ozs7CiszM0VCO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV0VMVkU7U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzMiA2NUU1Ozs7O047Ozs7OworMzNFQztJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgVEhJUlRFRU47U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzMyA2NUU1Ozs7O047Ozs7OworMzNFRDtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgRk9VUlRFRU47U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzNCA2NUU1Ozs7O047Ozs7OworMzNFRTtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgRklGVEVFTjtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDM1IDY1RTU7Ozs7Tjs7Ozs7CiszM0VGO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBTSVhURUVOO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzYgNjVFNTs7OztOOzs7OzsKKzMzRjA7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFNFVkVOVEVFTjtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDM3IDY1RTU7Ozs7Tjs7Ozs7CiszM0YxO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBFSUdIVEVFTjtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDM4IDY1RTU7Ozs7Tjs7Ozs7CiszM0YyO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBOSU5FVEVFTjtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDM5IDY1RTU7Ozs7Tjs7Ozs7CiszM0YzO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV0VOVFk7U287MDtMOzxjb21wYXQ+IDAwMzIgMDAzMCA2NUU1Ozs7O047Ozs7OworMzNGNDtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgVFdFTlRZLU9ORTtTbzswO0w7PGNvbXBhdD4gMDAzMiAwMDMxIDY1RTU7Ozs7Tjs7Ozs7CiszM0Y1O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV0VOVFktVFdPO1NvOzA7TDs8Y29tcGF0PiAwMDMyIDAwMzIgNjVFNTs7OztOOzs7OzsKKzMzRjY7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRXRU5UWS1USFJFRTtTbzswO0w7PGNvbXBhdD4gMDAzMiAwMDMzIDY1RTU7Ozs7Tjs7Ozs7CiszM0Y3O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV0VOVFktRk9VUjtTbzswO0w7PGNvbXBhdD4gMDAzMiAwMDM0IDY1RTU7Ozs7Tjs7Ozs7CiszM0Y4O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV0VOVFktRklWRTtTbzswO0w7PGNvbXBhdD4gMDAzMiAwMDM1IDY1RTU7Ozs7Tjs7Ozs7CiszM0Y5O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV0VOVFktU0lYO1NvOzA7TDs8Y29tcGF0PiAwMDMyIDAwMzYgNjVFNTs7OztOOzs7OzsKKzMzRkE7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRXRU5UWS1TRVZFTjtTbzswO0w7PGNvbXBhdD4gMDAzMiAwMDM3IDY1RTU7Ozs7Tjs7Ozs7CiszM0ZCO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV0VOVFktRUlHSFQ7U287MDtMOzxjb21wYXQ+IDAwMzIgMDAzOCA2NUU1Ozs7O047Ozs7OworMzNGQztJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgVFdFTlRZLU5JTkU7U287MDtMOzxjb21wYXQ+IDAwMzIgMDAzOSA2NUU1Ozs7O047Ozs7OworMzNGRDtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgVEhJUlRZO1NvOzA7TDs8Y29tcGF0PiAwMDMzIDAwMzAgNjVFNTs7OztOOzs7OzsKKzMzRkU7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRISVJUWS1PTkU7U287MDtMOzxjb21wYXQ+IDAwMzMgMDAzMSA2NUU1Ozs7O047Ozs7OworMzQwMDs8Q0pLIElkZW9ncmFwaCBFeHRlbnNpb24gQSwgRmlyc3Q+O0xvOzA7TDs7Ozs7Tjs7Ozs7Cis0REI1OzxDSksgSWRlb2dyYXBoIEV4dGVuc2lvbiBBLCBMYXN0PjtMbzswO0w7Ozs7O047Ozs7OworNEUwMDs8Q0pLIElkZW9ncmFwaCwgRmlyc3Q+O0xvOzA7TDs7Ozs7Tjs7Ozs7Cis5RkE1OzxDSksgSWRlb2dyYXBoLCBMYXN0PjtMbzswO0w7Ozs7O047Ozs7OworQTAwMDtZSSBTWUxMQUJMRSBJVDtMbzswO0w7Ozs7O047Ozs7OworQTAwMTtZSSBTWUxMQUJMRSBJWDtMbzswO0w7Ozs7O047Ozs7OworQTAwMjtZSSBTWUxMQUJMRSBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDAzO1lJIFNZTExBQkxFIElQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDA0O1lJIFNZTExBQkxFIElFVDtMbzswO0w7Ozs7O047Ozs7OworQTAwNTtZSSBTWUxMQUJMRSBJRVg7TG87MDtMOzs7OztOOzs7OzsKK0EwMDY7WUkgU1lMTEFCTEUgSUU7TG87MDtMOzs7OztOOzs7OzsKK0EwMDc7WUkgU1lMTEFCTEUgSUVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDA4O1lJIFNZTExBQkxFIEFUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDA5O1lJIFNZTExBQkxFIEFYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDBBO1lJIFNZTExBQkxFIEE7TG87MDtMOzs7OztOOzs7OzsKK0EwMEI7WUkgU1lMTEFCTEUgQVA7TG87MDtMOzs7OztOOzs7OzsKK0EwMEM7WUkgU1lMTEFCTEUgVU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDBEO1lJIFNZTExBQkxFIFVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDBFO1lJIFNZTExBQkxFIFVPUDtMbzswO0w7Ozs7O047Ozs7OworQTAwRjtZSSBTWUxMQUJMRSBPVDtMbzswO0w7Ozs7O047Ozs7OworQTAxMDtZSSBTWUxMQUJMRSBPWDtMbzswO0w7Ozs7O047Ozs7OworQTAxMTtZSSBTWUxMQUJMRSBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDEyO1lJIFNZTExBQkxFIE9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDEzO1lJIFNZTExBQkxFIEVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDE0O1lJIFNZTExBQkxFIEU7TG87MDtMOzs7OztOOzs7OzsKK0EwMTU7WUkgU1lMTEFCTEUgV1U7TG87MDtMOzs7OztOOzs7OzsKK0EwMTY7WUkgU1lMTEFCTEUgQklUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDE3O1lJIFNZTExBQkxFIEJJWDtMbzswO0w7Ozs7O047Ozs7OworQTAxODtZSSBTWUxMQUJMRSBCSTtMbzswO0w7Ozs7O047Ozs7OworQTAxOTtZSSBTWUxMQUJMRSBCSVA7TG87MDtMOzs7OztOOzs7OzsKK0EwMUE7WUkgU1lMTEFCTEUgQklFVDtMbzswO0w7Ozs7O047Ozs7OworQTAxQjtZSSBTWUxMQUJMRSBCSUVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDFDO1lJIFNZTExBQkxFIEJJRTtMbzswO0w7Ozs7O047Ozs7OworQTAxRDtZSSBTWUxMQUJMRSBCSUVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDFFO1lJIFNZTExBQkxFIEJBVDtMbzswO0w7Ozs7O047Ozs7OworQTAxRjtZSSBTWUxMQUJMRSBCQVg7TG87MDtMOzs7OztOOzs7OzsKK0EwMjA7WUkgU1lMTEFCTEUgQkE7TG87MDtMOzs7OztOOzs7OzsKK0EwMjE7WUkgU1lMTEFCTEUgQkFQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDIyO1lJIFNZTExBQkxFIEJVT1g7TG87MDtMOzs7OztOOzs7OzsKK0EwMjM7WUkgU1lMTEFCTEUgQlVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDI0O1lJIFNZTExBQkxFIEJVT1A7TG87MDtMOzs7OztOOzs7OzsKK0EwMjU7WUkgU1lMTEFCTEUgQk9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDI2O1lJIFNZTExBQkxFIEJPWDtMbzswO0w7Ozs7O047Ozs7OworQTAyNztZSSBTWUxMQUJMRSBCTztMbzswO0w7Ozs7O047Ozs7OworQTAyODtZSSBTWUxMQUJMRSBCT1A7TG87MDtMOzs7OztOOzs7OzsKK0EwMjk7WUkgU1lMTEFCTEUgQkVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDJBO1lJIFNZTExBQkxFIEJFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDJCO1lJIFNZTExBQkxFIEJFUDtMbzswO0w7Ozs7O047Ozs7OworQTAyQztZSSBTWUxMQUJMRSBCVVQ7TG87MDtMOzs7OztOOzs7OzsKK0EwMkQ7WUkgU1lMTEFCTEUgQlVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDJFO1lJIFNZTExBQkxFIEJVO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDJGO1lJIFNZTExBQkxFIEJVUDtMbzswO0w7Ozs7O047Ozs7OworQTAzMDtZSSBTWUxMQUJMRSBCVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDMxO1lJIFNZTExBQkxFIEJVUjtMbzswO0w7Ozs7O047Ozs7OworQTAzMjtZSSBTWUxMQUJMRSBCWVQ7TG87MDtMOzs7OztOOzs7OzsKK0EwMzM7WUkgU1lMTEFCTEUgQllYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDM0O1lJIFNZTExBQkxFIEJZO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDM1O1lJIFNZTExBQkxFIEJZUDtMbzswO0w7Ozs7O047Ozs7OworQTAzNjtZSSBTWUxMQUJMRSBCWVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDM3O1lJIFNZTExBQkxFIEJZUjtMbzswO0w7Ozs7O047Ozs7OworQTAzODtZSSBTWUxMQUJMRSBQSVQ7TG87MDtMOzs7OztOOzs7OzsKK0EwMzk7WUkgU1lMTEFCTEUgUElYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDNBO1lJIFNZTExBQkxFIFBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDNCO1lJIFNZTExBQkxFIFBJUDtMbzswO0w7Ozs7O047Ozs7OworQTAzQztZSSBTWUxMQUJMRSBQSUVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDNEO1lJIFNZTExBQkxFIFBJRTtMbzswO0w7Ozs7O047Ozs7OworQTAzRTtZSSBTWUxMQUJMRSBQSUVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDNGO1lJIFNZTExBQkxFIFBBVDtMbzswO0w7Ozs7O047Ozs7OworQTA0MDtZSSBTWUxMQUJMRSBQQVg7TG87MDtMOzs7OztOOzs7OzsKK0EwNDE7WUkgU1lMTEFCTEUgUEE7TG87MDtMOzs7OztOOzs7OzsKK0EwNDI7WUkgU1lMTEFCTEUgUEFQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDQzO1lJIFNZTExBQkxFIFBVT1g7TG87MDtMOzs7OztOOzs7OzsKK0EwNDQ7WUkgU1lMTEFCTEUgUFVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDQ1O1lJIFNZTExBQkxFIFBVT1A7TG87MDtMOzs7OztOOzs7OzsKK0EwNDY7WUkgU1lMTEFCTEUgUE9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDQ3O1lJIFNZTExBQkxFIFBPWDtMbzswO0w7Ozs7O047Ozs7OworQTA0ODtZSSBTWUxMQUJMRSBQTztMbzswO0w7Ozs7O047Ozs7OworQTA0OTtZSSBTWUxMQUJMRSBQT1A7TG87MDtMOzs7OztOOzs7OzsKK0EwNEE7WUkgU1lMTEFCTEUgUFVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDRCO1lJIFNZTExBQkxFIFBVWDtMbzswO0w7Ozs7O047Ozs7OworQTA0QztZSSBTWUxMQUJMRSBQVTtMbzswO0w7Ozs7O047Ozs7OworQTA0RDtZSSBTWUxMQUJMRSBQVVA7TG87MDtMOzs7OztOOzs7OzsKK0EwNEU7WUkgU1lMTEFCTEUgUFVSWDtMbzswO0w7Ozs7O047Ozs7OworQTA0RjtZSSBTWUxMQUJMRSBQVVI7TG87MDtMOzs7OztOOzs7OzsKK0EwNTA7WUkgU1lMTEFCTEUgUFlUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDUxO1lJIFNZTExBQkxFIFBZWDtMbzswO0w7Ozs7O047Ozs7OworQTA1MjtZSSBTWUxMQUJMRSBQWTtMbzswO0w7Ozs7O047Ozs7OworQTA1MztZSSBTWUxMQUJMRSBQWVA7TG87MDtMOzs7OztOOzs7OzsKK0EwNTQ7WUkgU1lMTEFCTEUgUFlSWDtMbzswO0w7Ozs7O047Ozs7OworQTA1NTtZSSBTWUxMQUJMRSBQWVI7TG87MDtMOzs7OztOOzs7OzsKK0EwNTY7WUkgU1lMTEFCTEUgQkJJVDtMbzswO0w7Ozs7O047Ozs7OworQTA1NztZSSBTWUxMQUJMRSBCQklYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDU4O1lJIFNZTExBQkxFIEJCSTtMbzswO0w7Ozs7O047Ozs7OworQTA1OTtZSSBTWUxMQUJMRSBCQklQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDVBO1lJIFNZTExBQkxFIEJCSUVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDVCO1lJIFNZTExBQkxFIEJCSUVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDVDO1lJIFNZTExBQkxFIEJCSUU7TG87MDtMOzs7OztOOzs7OzsKK0EwNUQ7WUkgU1lMTEFCTEUgQkJJRVA7TG87MDtMOzs7OztOOzs7OzsKK0EwNUU7WUkgU1lMTEFCTEUgQkJBVDtMbzswO0w7Ozs7O047Ozs7OworQTA1RjtZSSBTWUxMQUJMRSBCQkFYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDYwO1lJIFNZTExBQkxFIEJCQTtMbzswO0w7Ozs7O047Ozs7OworQTA2MTtZSSBTWUxMQUJMRSBCQkFQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDYyO1lJIFNZTExBQkxFIEJCVU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDYzO1lJIFNZTExBQkxFIEJCVU87TG87MDtMOzs7OztOOzs7OzsKK0EwNjQ7WUkgU1lMTEFCTEUgQkJVT1A7TG87MDtMOzs7OztOOzs7OzsKK0EwNjU7WUkgU1lMTEFCTEUgQkJPVDtMbzswO0w7Ozs7O047Ozs7OworQTA2NjtZSSBTWUxMQUJMRSBCQk9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDY3O1lJIFNZTExBQkxFIEJCTztMbzswO0w7Ozs7O047Ozs7OworQTA2ODtZSSBTWUxMQUJMRSBCQk9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDY5O1lJIFNZTExBQkxFIEJCRVg7TG87MDtMOzs7OztOOzs7OzsKK0EwNkE7WUkgU1lMTEFCTEUgQkJFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDZCO1lJIFNZTExBQkxFIEJCRVA7TG87MDtMOzs7OztOOzs7OzsKK0EwNkM7WUkgU1lMTEFCTEUgQkJVVDtMbzswO0w7Ozs7O047Ozs7OworQTA2RDtZSSBTWUxMQUJMRSBCQlVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDZFO1lJIFNZTExBQkxFIEJCVTtMbzswO0w7Ozs7O047Ozs7OworQTA2RjtZSSBTWUxMQUJMRSBCQlVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDcwO1lJIFNZTExBQkxFIEJCVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDcxO1lJIFNZTExBQkxFIEJCVVI7TG87MDtMOzs7OztOOzs7OzsKK0EwNzI7WUkgU1lMTEFCTEUgQkJZVDtMbzswO0w7Ozs7O047Ozs7OworQTA3MztZSSBTWUxMQUJMRSBCQllYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDc0O1lJIFNZTExBQkxFIEJCWTtMbzswO0w7Ozs7O047Ozs7OworQTA3NTtZSSBTWUxMQUJMRSBCQllQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDc2O1lJIFNZTExBQkxFIE5CSVQ7TG87MDtMOzs7OztOOzs7OzsKK0EwNzc7WUkgU1lMTEFCTEUgTkJJWDtMbzswO0w7Ozs7O047Ozs7OworQTA3ODtZSSBTWUxMQUJMRSBOQkk7TG87MDtMOzs7OztOOzs7OzsKK0EwNzk7WUkgU1lMTEFCTEUgTkJJUDtMbzswO0w7Ozs7O047Ozs7OworQTA3QTtZSSBTWUxMQUJMRSBOQklFWDtMbzswO0w7Ozs7O047Ozs7OworQTA3QjtZSSBTWUxMQUJMRSBOQklFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDdDO1lJIFNZTExBQkxFIE5CSUVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDdEO1lJIFNZTExBQkxFIE5CQVQ7TG87MDtMOzs7OztOOzs7OzsKK0EwN0U7WUkgU1lMTEFCTEUgTkJBWDtMbzswO0w7Ozs7O047Ozs7OworQTA3RjtZSSBTWUxMQUJMRSBOQkE7TG87MDtMOzs7OztOOzs7OzsKK0EwODA7WUkgU1lMTEFCTEUgTkJBUDtMbzswO0w7Ozs7O047Ozs7OworQTA4MTtZSSBTWUxMQUJMRSBOQk9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDgyO1lJIFNZTExBQkxFIE5CT1g7TG87MDtMOzs7OztOOzs7OzsKK0EwODM7WUkgU1lMTEFCTEUgTkJPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDg0O1lJIFNZTExBQkxFIE5CT1A7TG87MDtMOzs7OztOOzs7OzsKK0EwODU7WUkgU1lMTEFCTEUgTkJVVDtMbzswO0w7Ozs7O047Ozs7OworQTA4NjtZSSBTWUxMQUJMRSBOQlVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDg3O1lJIFNZTExBQkxFIE5CVTtMbzswO0w7Ozs7O047Ozs7OworQTA4ODtZSSBTWUxMQUJMRSBOQlVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDg5O1lJIFNZTExBQkxFIE5CVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDhBO1lJIFNZTExBQkxFIE5CVVI7TG87MDtMOzs7OztOOzs7OzsKK0EwOEI7WUkgU1lMTEFCTEUgTkJZVDtMbzswO0w7Ozs7O047Ozs7OworQTA4QztZSSBTWUxMQUJMRSBOQllYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDhEO1lJIFNZTExBQkxFIE5CWTtMbzswO0w7Ozs7O047Ozs7OworQTA4RTtZSSBTWUxMQUJMRSBOQllQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDhGO1lJIFNZTExBQkxFIE5CWVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDkwO1lJIFNZTExBQkxFIE5CWVI7TG87MDtMOzs7OztOOzs7OzsKK0EwOTE7WUkgU1lMTEFCTEUgSE1JVDtMbzswO0w7Ozs7O047Ozs7OworQTA5MjtZSSBTWUxMQUJMRSBITUlYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDkzO1lJIFNZTExBQkxFIEhNSTtMbzswO0w7Ozs7O047Ozs7OworQTA5NDtZSSBTWUxMQUJMRSBITUlQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDk1O1lJIFNZTExBQkxFIEhNSUVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDk2O1lJIFNZTExBQkxFIEhNSUU7TG87MDtMOzs7OztOOzs7OzsKK0EwOTc7WUkgU1lMTEFCTEUgSE1JRVA7TG87MDtMOzs7OztOOzs7OzsKK0EwOTg7WUkgU1lMTEFCTEUgSE1BVDtMbzswO0w7Ozs7O047Ozs7OworQTA5OTtZSSBTWUxMQUJMRSBITUFYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDlBO1lJIFNZTExBQkxFIEhNQTtMbzswO0w7Ozs7O047Ozs7OworQTA5QjtZSSBTWUxMQUJMRSBITUFQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDlDO1lJIFNZTExBQkxFIEhNVU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDlEO1lJIFNZTExBQkxFIEhNVU87TG87MDtMOzs7OztOOzs7OzsKK0EwOUU7WUkgU1lMTEFCTEUgSE1VT1A7TG87MDtMOzs7OztOOzs7OzsKK0EwOUY7WUkgU1lMTEFCTEUgSE1PVDtMbzswO0w7Ozs7O047Ozs7OworQTBBMDtZSSBTWUxMQUJMRSBITU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEExO1lJIFNZTExBQkxFIEhNTztMbzswO0w7Ozs7O047Ozs7OworQTBBMjtZSSBTWUxMQUJMRSBITU9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEEzO1lJIFNZTExBQkxFIEhNVVQ7TG87MDtMOzs7OztOOzs7OzsKK0EwQTQ7WUkgU1lMTEFCTEUgSE1VWDtMbzswO0w7Ozs7O047Ozs7OworQTBBNTtZSSBTWUxMQUJMRSBITVU7TG87MDtMOzs7OztOOzs7OzsKK0EwQTY7WUkgU1lMTEFCTEUgSE1VUDtMbzswO0w7Ozs7O047Ozs7OworQTBBNztZSSBTWUxMQUJMRSBITVVSWDtMbzswO0w7Ozs7O047Ozs7OworQTBBODtZSSBTWUxMQUJMRSBITVVSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEE5O1lJIFNZTExBQkxFIEhNWVg7TG87MDtMOzs7OztOOzs7OzsKK0EwQUE7WUkgU1lMTEFCTEUgSE1ZO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEFCO1lJIFNZTExBQkxFIEhNWVA7TG87MDtMOzs7OztOOzs7OzsKK0EwQUM7WUkgU1lMTEFCTEUgSE1ZUlg7TG87MDtMOzs7OztOOzs7OzsKK0EwQUQ7WUkgU1lMTEFCTEUgSE1ZUjtMbzswO0w7Ozs7O047Ozs7OworQTBBRTtZSSBTWUxMQUJMRSBNSVQ7TG87MDtMOzs7OztOOzs7OzsKK0EwQUY7WUkgU1lMTEFCTEUgTUlYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEIwO1lJIFNZTExBQkxFIE1JO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEIxO1lJIFNZTExBQkxFIE1JUDtMbzswO0w7Ozs7O047Ozs7OworQTBCMjtZSSBTWUxMQUJMRSBNSUVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEIzO1lJIFNZTExBQkxFIE1JRTtMbzswO0w7Ozs7O047Ozs7OworQTBCNDtZSSBTWUxMQUJMRSBNSUVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEI1O1lJIFNZTExBQkxFIE1BVDtMbzswO0w7Ozs7O047Ozs7OworQTBCNjtZSSBTWUxMQUJMRSBNQVg7TG87MDtMOzs7OztOOzs7OzsKK0EwQjc7WUkgU1lMTEFCTEUgTUE7TG87MDtMOzs7OztOOzs7OzsKK0EwQjg7WUkgU1lMTEFCTEUgTUFQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEI5O1lJIFNZTExBQkxFIE1VT1Q7TG87MDtMOzs7OztOOzs7OzsKK0EwQkE7WUkgU1lMTEFCTEUgTVVPWDtMbzswO0w7Ozs7O047Ozs7OworQTBCQjtZSSBTWUxMQUJMRSBNVU87TG87MDtMOzs7OztOOzs7OzsKK0EwQkM7WUkgU1lMTEFCTEUgTVVPUDtMbzswO0w7Ozs7O047Ozs7OworQTBCRDtZSSBTWUxMQUJMRSBNT1Q7TG87MDtMOzs7OztOOzs7OzsKK0EwQkU7WUkgU1lMTEFCTEUgTU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEJGO1lJIFNZTExBQkxFIE1PO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEMwO1lJIFNZTExBQkxFIE1PUDtMbzswO0w7Ozs7O047Ozs7OworQTBDMTtZSSBTWUxMQUJMRSBNRVg7TG87MDtMOzs7OztOOzs7OzsKK0EwQzI7WUkgU1lMTEFCTEUgTUU7TG87MDtMOzs7OztOOzs7OzsKK0EwQzM7WUkgU1lMTEFCTEUgTVVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEM0O1lJIFNZTExBQkxFIE1VWDtMbzswO0w7Ozs7O047Ozs7OworQTBDNTtZSSBTWUxMQUJMRSBNVTtMbzswO0w7Ozs7O047Ozs7OworQTBDNjtZSSBTWUxMQUJMRSBNVVA7TG87MDtMOzs7OztOOzs7OzsKK0EwQzc7WUkgU1lMTEFCTEUgTVVSWDtMbzswO0w7Ozs7O047Ozs7OworQTBDODtZSSBTWUxMQUJMRSBNVVI7TG87MDtMOzs7OztOOzs7OzsKK0EwQzk7WUkgU1lMTEFCTEUgTVlUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMENBO1lJIFNZTExBQkxFIE1ZWDtMbzswO0w7Ozs7O047Ozs7OworQTBDQjtZSSBTWUxMQUJMRSBNWTtMbzswO0w7Ozs7O047Ozs7OworQTBDQztZSSBTWUxMQUJMRSBNWVA7TG87MDtMOzs7OztOOzs7OzsKK0EwQ0Q7WUkgU1lMTEFCTEUgRklUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMENFO1lJIFNZTExBQkxFIEZJWDtMbzswO0w7Ozs7O047Ozs7OworQTBDRjtZSSBTWUxMQUJMRSBGSTtMbzswO0w7Ozs7O047Ozs7OworQTBEMDtZSSBTWUxMQUJMRSBGSVA7TG87MDtMOzs7OztOOzs7OzsKK0EwRDE7WUkgU1lMTEFCTEUgRkFUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEQyO1lJIFNZTExBQkxFIEZBWDtMbzswO0w7Ozs7O047Ozs7OworQTBEMztZSSBTWUxMQUJMRSBGQTtMbzswO0w7Ozs7O047Ozs7OworQTBENDtZSSBTWUxMQUJMRSBGQVA7TG87MDtMOzs7OztOOzs7OzsKK0EwRDU7WUkgU1lMTEFCTEUgRk9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEQ2O1lJIFNZTExBQkxFIEZPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEQ3O1lJIFNZTExBQkxFIEZPUDtMbzswO0w7Ozs7O047Ozs7OworQTBEODtZSSBTWUxMQUJMRSBGVVQ7TG87MDtMOzs7OztOOzs7OzsKK0EwRDk7WUkgU1lMTEFCTEUgRlVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMERBO1lJIFNZTExBQkxFIEZVO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMERCO1lJIFNZTExBQkxFIEZVUDtMbzswO0w7Ozs7O047Ozs7OworQTBEQztZSSBTWUxMQUJMRSBGVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEREO1lJIFNZTExBQkxFIEZVUjtMbzswO0w7Ozs7O047Ozs7OworQTBERTtZSSBTWUxMQUJMRSBGWVQ7TG87MDtMOzs7OztOOzs7OzsKK0EwREY7WUkgU1lMTEFCTEUgRllYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEUwO1lJIFNZTExBQkxFIEZZO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEUxO1lJIFNZTExBQkxFIEZZUDtMbzswO0w7Ozs7O047Ozs7OworQTBFMjtZSSBTWUxMQUJMRSBWSVQ7TG87MDtMOzs7OztOOzs7OzsKK0EwRTM7WUkgU1lMTEFCTEUgVklYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEU0O1lJIFNZTExBQkxFIFZJO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEU1O1lJIFNZTExBQkxFIFZJUDtMbzswO0w7Ozs7O047Ozs7OworQTBFNjtZSSBTWUxMQUJMRSBWSUVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEU3O1lJIFNZTExBQkxFIFZJRVg7TG87MDtMOzs7OztOOzs7OzsKK0EwRTg7WUkgU1lMTEFCTEUgVklFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEU5O1lJIFNZTExBQkxFIFZJRVA7TG87MDtMOzs7OztOOzs7OzsKK0EwRUE7WUkgU1lMTEFCTEUgVkFUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEVCO1lJIFNZTExBQkxFIFZBWDtMbzswO0w7Ozs7O047Ozs7OworQTBFQztZSSBTWUxMQUJMRSBWQTtMbzswO0w7Ozs7O047Ozs7OworQTBFRDtZSSBTWUxMQUJMRSBWQVA7TG87MDtMOzs7OztOOzs7OzsKK0EwRUU7WUkgU1lMTEFCTEUgVk9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEVGO1lJIFNZTExBQkxFIFZPWDtMbzswO0w7Ozs7O047Ozs7OworQTBGMDtZSSBTWUxMQUJMRSBWTztMbzswO0w7Ozs7O047Ozs7OworQTBGMTtZSSBTWUxMQUJMRSBWT1A7TG87MDtMOzs7OztOOzs7OzsKK0EwRjI7WUkgU1lMTEFCTEUgVkVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEYzO1lJIFNZTExBQkxFIFZFUDtMbzswO0w7Ozs7O047Ozs7OworQTBGNDtZSSBTWUxMQUJMRSBWVVQ7TG87MDtMOzs7OztOOzs7OzsKK0EwRjU7WUkgU1lMTEFCTEUgVlVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEY2O1lJIFNZTExBQkxFIFZVO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEY3O1lJIFNZTExBQkxFIFZVUDtMbzswO0w7Ozs7O047Ozs7OworQTBGODtZSSBTWUxMQUJMRSBWVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEY5O1lJIFNZTExBQkxFIFZVUjtMbzswO0w7Ozs7O047Ozs7OworQTBGQTtZSSBTWUxMQUJMRSBWWVQ7TG87MDtMOzs7OztOOzs7OzsKK0EwRkI7WUkgU1lMTEFCTEUgVllYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEZDO1lJIFNZTExBQkxFIFZZO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEZEO1lJIFNZTExBQkxFIFZZUDtMbzswO0w7Ozs7O047Ozs7OworQTBGRTtZSSBTWUxMQUJMRSBWWVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEZGO1lJIFNZTExBQkxFIFZZUjtMbzswO0w7Ozs7O047Ozs7OworQTEwMDtZSSBTWUxMQUJMRSBESVQ7TG87MDtMOzs7OztOOzs7OzsKK0ExMDE7WUkgU1lMTEFCTEUgRElYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTAyO1lJIFNZTExBQkxFIERJO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTAzO1lJIFNZTExBQkxFIERJUDtMbzswO0w7Ozs7O047Ozs7OworQTEwNDtZSSBTWUxMQUJMRSBESUVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTA1O1lJIFNZTExBQkxFIERJRTtMbzswO0w7Ozs7O047Ozs7OworQTEwNjtZSSBTWUxMQUJMRSBESUVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTA3O1lJIFNZTExBQkxFIERBVDtMbzswO0w7Ozs7O047Ozs7OworQTEwODtZSSBTWUxMQUJMRSBEQVg7TG87MDtMOzs7OztOOzs7OzsKK0ExMDk7WUkgU1lMTEFCTEUgREE7TG87MDtMOzs7OztOOzs7OzsKK0ExMEE7WUkgU1lMTEFCTEUgREFQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTBCO1lJIFNZTExBQkxFIERVT1g7TG87MDtMOzs7OztOOzs7OzsKK0ExMEM7WUkgU1lMTEFCTEUgRFVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTBEO1lJIFNZTExBQkxFIERPVDtMbzswO0w7Ozs7O047Ozs7OworQTEwRTtZSSBTWUxMQUJMRSBET1g7TG87MDtMOzs7OztOOzs7OzsKK0ExMEY7WUkgU1lMTEFCTEUgRE87TG87MDtMOzs7OztOOzs7OzsKK0ExMTA7WUkgU1lMTEFCTEUgRE9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTExO1lJIFNZTExBQkxFIERFWDtMbzswO0w7Ozs7O047Ozs7OworQTExMjtZSSBTWUxMQUJMRSBERTtMbzswO0w7Ozs7O047Ozs7OworQTExMztZSSBTWUxMQUJMRSBERVA7TG87MDtMOzs7OztOOzs7OzsKK0ExMTQ7WUkgU1lMTEFCTEUgRFVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTE1O1lJIFNZTExBQkxFIERVWDtMbzswO0w7Ozs7O047Ozs7OworQTExNjtZSSBTWUxMQUJMRSBEVTtMbzswO0w7Ozs7O047Ozs7OworQTExNztZSSBTWUxMQUJMRSBEVVA7TG87MDtMOzs7OztOOzs7OzsKK0ExMTg7WUkgU1lMTEFCTEUgRFVSWDtMbzswO0w7Ozs7O047Ozs7OworQTExOTtZSSBTWUxMQUJMRSBEVVI7TG87MDtMOzs7OztOOzs7OzsKK0ExMUE7WUkgU1lMTEFCTEUgVElUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTFCO1lJIFNZTExBQkxFIFRJWDtMbzswO0w7Ozs7O047Ozs7OworQTExQztZSSBTWUxMQUJMRSBUSTtMbzswO0w7Ozs7O047Ozs7OworQTExRDtZSSBTWUxMQUJMRSBUSVA7TG87MDtMOzs7OztOOzs7OzsKK0ExMUU7WUkgU1lMTEFCTEUgVElFWDtMbzswO0w7Ozs7O047Ozs7OworQTExRjtZSSBTWUxMQUJMRSBUSUU7TG87MDtMOzs7OztOOzs7OzsKK0ExMjA7WUkgU1lMTEFCTEUgVElFUDtMbzswO0w7Ozs7O047Ozs7OworQTEyMTtZSSBTWUxMQUJMRSBUQVQ7TG87MDtMOzs7OztOOzs7OzsKK0ExMjI7WUkgU1lMTEFCTEUgVEFYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTIzO1lJIFNZTExBQkxFIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTI0O1lJIFNZTExBQkxFIFRBUDtMbzswO0w7Ozs7O047Ozs7OworQTEyNTtZSSBTWUxMQUJMRSBUVU9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTI2O1lJIFNZTExBQkxFIFRVT1g7TG87MDtMOzs7OztOOzs7OzsKK0ExMjc7WUkgU1lMTEFCTEUgVFVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTI4O1lJIFNZTExBQkxFIFRVT1A7TG87MDtMOzs7OztOOzs7OzsKK0ExMjk7WUkgU1lMTEFCTEUgVE9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTJBO1lJIFNZTExBQkxFIFRPWDtMbzswO0w7Ozs7O047Ozs7OworQTEyQjtZSSBTWUxMQUJMRSBUTztMbzswO0w7Ozs7O047Ozs7OworQTEyQztZSSBTWUxMQUJMRSBUT1A7TG87MDtMOzs7OztOOzs7OzsKK0ExMkQ7WUkgU1lMTEFCTEUgVEVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTJFO1lJIFNZTExBQkxFIFRFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTJGO1lJIFNZTExBQkxFIFRFUDtMbzswO0w7Ozs7O047Ozs7OworQTEzMDtZSSBTWUxMQUJMRSBUVVQ7TG87MDtMOzs7OztOOzs7OzsKK0ExMzE7WUkgU1lMTEFCTEUgVFVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTMyO1lJIFNZTExBQkxFIFRVO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTMzO1lJIFNZTExBQkxFIFRVUDtMbzswO0w7Ozs7O047Ozs7OworQTEzNDtZSSBTWUxMQUJMRSBUVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTM1O1lJIFNZTExBQkxFIFRVUjtMbzswO0w7Ozs7O047Ozs7OworQTEzNjtZSSBTWUxMQUJMRSBERElUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTM3O1lJIFNZTExBQkxFIERESVg7TG87MDtMOzs7OztOOzs7OzsKK0ExMzg7WUkgU1lMTEFCTEUgRERJO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTM5O1lJIFNZTExBQkxFIERESVA7TG87MDtMOzs7OztOOzs7OzsKK0ExM0E7WUkgU1lMTEFCTEUgRERJRVg7TG87MDtMOzs7OztOOzs7OzsKK0ExM0I7WUkgU1lMTEFCTEUgRERJRTtMbzswO0w7Ozs7O047Ozs7OworQTEzQztZSSBTWUxMQUJMRSBERElFUDtMbzswO0w7Ozs7O047Ozs7OworQTEzRDtZSSBTWUxMQUJMRSBEREFUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTNFO1lJIFNZTExBQkxFIEREQVg7TG87MDtMOzs7OztOOzs7OzsKK0ExM0Y7WUkgU1lMTEFCTEUgRERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTQwO1lJIFNZTExBQkxFIEREQVA7TG87MDtMOzs7OztOOzs7OzsKK0ExNDE7WUkgU1lMTEFCTEUgRERVT1g7TG87MDtMOzs7OztOOzs7OzsKK0ExNDI7WUkgU1lMTEFCTEUgRERVTztMbzswO0w7Ozs7O047Ozs7OworQTE0MztZSSBTWUxMQUJMRSBERFVPUDtMbzswO0w7Ozs7O047Ozs7OworQTE0NDtZSSBTWUxMQUJMRSBERE9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTQ1O1lJIFNZTExBQkxFIERET1g7TG87MDtMOzs7OztOOzs7OzsKK0ExNDY7WUkgU1lMTEFCTEUgRERPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTQ3O1lJIFNZTExBQkxFIERET1A7TG87MDtMOzs7OztOOzs7OzsKK0ExNDg7WUkgU1lMTEFCTEUgRERFWDtMbzswO0w7Ozs7O047Ozs7OworQTE0OTtZSSBTWUxMQUJMRSBEREU7TG87MDtMOzs7OztOOzs7OzsKK0ExNEE7WUkgU1lMTEFCTEUgRERFUDtMbzswO0w7Ozs7O047Ozs7OworQTE0QjtZSSBTWUxMQUJMRSBERFVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTRDO1lJIFNZTExBQkxFIEREVVg7TG87MDtMOzs7OztOOzs7OzsKK0ExNEQ7WUkgU1lMTEFCTEUgRERVO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTRFO1lJIFNZTExBQkxFIEREVVA7TG87MDtMOzs7OztOOzs7OzsKK0ExNEY7WUkgU1lMTEFCTEUgRERVUlg7TG87MDtMOzs7OztOOzs7OzsKK0ExNTA7WUkgU1lMTEFCTEUgRERVUjtMbzswO0w7Ozs7O047Ozs7OworQTE1MTtZSSBTWUxMQUJMRSBORElUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTUyO1lJIFNZTExBQkxFIE5ESVg7TG87MDtMOzs7OztOOzs7OzsKK0ExNTM7WUkgU1lMTEFCTEUgTkRJO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTU0O1lJIFNZTExBQkxFIE5ESVA7TG87MDtMOzs7OztOOzs7OzsKK0ExNTU7WUkgU1lMTEFCTEUgTkRJRVg7TG87MDtMOzs7OztOOzs7OzsKK0ExNTY7WUkgU1lMTEFCTEUgTkRJRTtMbzswO0w7Ozs7O047Ozs7OworQTE1NztZSSBTWUxMQUJMRSBOREFUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTU4O1lJIFNZTExBQkxFIE5EQVg7TG87MDtMOzs7OztOOzs7OzsKK0ExNTk7WUkgU1lMTEFCTEUgTkRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTVBO1lJIFNZTExBQkxFIE5EQVA7TG87MDtMOzs7OztOOzs7OzsKK0ExNUI7WUkgU1lMTEFCTEUgTkRPVDtMbzswO0w7Ozs7O047Ozs7OworQTE1QztZSSBTWUxMQUJMRSBORE9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTVEO1lJIFNZTExBQkxFIE5ETztMbzswO0w7Ozs7O047Ozs7OworQTE1RTtZSSBTWUxMQUJMRSBORE9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTVGO1lJIFNZTExBQkxFIE5ERVg7TG87MDtMOzs7OztOOzs7OzsKK0ExNjA7WUkgU1lMTEFCTEUgTkRFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTYxO1lJIFNZTExBQkxFIE5ERVA7TG87MDtMOzs7OztOOzs7OzsKK0ExNjI7WUkgU1lMTEFCTEUgTkRVVDtMbzswO0w7Ozs7O047Ozs7OworQTE2MztZSSBTWUxMQUJMRSBORFVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTY0O1lJIFNZTExBQkxFIE5EVTtMbzswO0w7Ozs7O047Ozs7OworQTE2NTtZSSBTWUxMQUJMRSBORFVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTY2O1lJIFNZTExBQkxFIE5EVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTY3O1lJIFNZTExBQkxFIE5EVVI7TG87MDtMOzs7OztOOzs7OzsKK0ExNjg7WUkgU1lMTEFCTEUgSE5JVDtMbzswO0w7Ozs7O047Ozs7OworQTE2OTtZSSBTWUxMQUJMRSBITklYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTZBO1lJIFNZTExBQkxFIEhOSTtMbzswO0w7Ozs7O047Ozs7OworQTE2QjtZSSBTWUxMQUJMRSBITklQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTZDO1lJIFNZTExBQkxFIEhOSUVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTZEO1lJIFNZTExBQkxFIEhOSUVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTZFO1lJIFNZTExBQkxFIEhOSUU7TG87MDtMOzs7OztOOzs7OzsKK0ExNkY7WUkgU1lMTEFCTEUgSE5JRVA7TG87MDtMOzs7OztOOzs7OzsKK0ExNzA7WUkgU1lMTEFCTEUgSE5BVDtMbzswO0w7Ozs7O047Ozs7OworQTE3MTtZSSBTWUxMQUJMRSBITkFYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTcyO1lJIFNZTExBQkxFIEhOQTtMbzswO0w7Ozs7O047Ozs7OworQTE3MztZSSBTWUxMQUJMRSBITkFQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTc0O1lJIFNZTExBQkxFIEhOVU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTc1O1lJIFNZTExBQkxFIEhOVU87TG87MDtMOzs7OztOOzs7OzsKK0ExNzY7WUkgU1lMTEFCTEUgSE5PVDtMbzswO0w7Ozs7O047Ozs7OworQTE3NztZSSBTWUxMQUJMRSBITk9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTc4O1lJIFNZTExBQkxFIEhOT1A7TG87MDtMOzs7OztOOzs7OzsKK0ExNzk7WUkgU1lMTEFCTEUgSE5FWDtMbzswO0w7Ozs7O047Ozs7OworQTE3QTtZSSBTWUxMQUJMRSBITkU7TG87MDtMOzs7OztOOzs7OzsKK0ExN0I7WUkgU1lMTEFCTEUgSE5FUDtMbzswO0w7Ozs7O047Ozs7OworQTE3QztZSSBTWUxMQUJMRSBITlVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTdEO1lJIFNZTExBQkxFIE5JVDtMbzswO0w7Ozs7O047Ozs7OworQTE3RTtZSSBTWUxMQUJMRSBOSVg7TG87MDtMOzs7OztOOzs7OzsKK0ExN0Y7WUkgU1lMTEFCTEUgTkk7TG87MDtMOzs7OztOOzs7OzsKK0ExODA7WUkgU1lMTEFCTEUgTklQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTgxO1lJIFNZTExBQkxFIE5JRVg7TG87MDtMOzs7OztOOzs7OzsKK0ExODI7WUkgU1lMTEFCTEUgTklFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTgzO1lJIFNZTExBQkxFIE5JRVA7TG87MDtMOzs7OztOOzs7OzsKK0ExODQ7WUkgU1lMTEFCTEUgTkFYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTg1O1lJIFNZTExBQkxFIE5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTg2O1lJIFNZTExBQkxFIE5BUDtMbzswO0w7Ozs7O047Ozs7OworQTE4NztZSSBTWUxMQUJMRSBOVU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTg4O1lJIFNZTExBQkxFIE5VTztMbzswO0w7Ozs7O047Ozs7OworQTE4OTtZSSBTWUxMQUJMRSBOVU9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMThBO1lJIFNZTExBQkxFIE5PVDtMbzswO0w7Ozs7O047Ozs7OworQTE4QjtZSSBTWUxMQUJMRSBOT1g7TG87MDtMOzs7OztOOzs7OzsKK0ExOEM7WUkgU1lMTEFCTEUgTk87TG87MDtMOzs7OztOOzs7OzsKK0ExOEQ7WUkgU1lMTEFCTEUgTk9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMThFO1lJIFNZTExBQkxFIE5FWDtMbzswO0w7Ozs7O047Ozs7OworQTE4RjtZSSBTWUxMQUJMRSBORTtMbzswO0w7Ozs7O047Ozs7OworQTE5MDtZSSBTWUxMQUJMRSBORVA7TG87MDtMOzs7OztOOzs7OzsKK0ExOTE7WUkgU1lMTEFCTEUgTlVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTkyO1lJIFNZTExBQkxFIE5VWDtMbzswO0w7Ozs7O047Ozs7OworQTE5MztZSSBTWUxMQUJMRSBOVTtMbzswO0w7Ozs7O047Ozs7OworQTE5NDtZSSBTWUxMQUJMRSBOVVA7TG87MDtMOzs7OztOOzs7OzsKK0ExOTU7WUkgU1lMTEFCTEUgTlVSWDtMbzswO0w7Ozs7O047Ozs7OworQTE5NjtZSSBTWUxMQUJMRSBOVVI7TG87MDtMOzs7OztOOzs7OzsKK0ExOTc7WUkgU1lMTEFCTEUgSExJVDtMbzswO0w7Ozs7O047Ozs7OworQTE5ODtZSSBTWUxMQUJMRSBITElYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTk5O1lJIFNZTExBQkxFIEhMSTtMbzswO0w7Ozs7O047Ozs7OworQTE5QTtZSSBTWUxMQUJMRSBITElQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTlCO1lJIFNZTExBQkxFIEhMSUVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTlDO1lJIFNZTExBQkxFIEhMSUU7TG87MDtMOzs7OztOOzs7OzsKK0ExOUQ7WUkgU1lMTEFCTEUgSExJRVA7TG87MDtMOzs7OztOOzs7OzsKK0ExOUU7WUkgU1lMTEFCTEUgSExBVDtMbzswO0w7Ozs7O047Ozs7OworQTE5RjtZSSBTWUxMQUJMRSBITEFYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUEwO1lJIFNZTExBQkxFIEhMQTtMbzswO0w7Ozs7O047Ozs7OworQTFBMTtZSSBTWUxMQUJMRSBITEFQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUEyO1lJIFNZTExBQkxFIEhMVU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUEzO1lJIFNZTExBQkxFIEhMVU87TG87MDtMOzs7OztOOzs7OzsKK0ExQTQ7WUkgU1lMTEFCTEUgSExVT1A7TG87MDtMOzs7OztOOzs7OzsKK0ExQTU7WUkgU1lMTEFCTEUgSExPWDtMbzswO0w7Ozs7O047Ozs7OworQTFBNjtZSSBTWUxMQUJMRSBITE87TG87MDtMOzs7OztOOzs7OzsKK0ExQTc7WUkgU1lMTEFCTEUgSExPUDtMbzswO0w7Ozs7O047Ozs7OworQTFBODtZSSBTWUxMQUJMRSBITEVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUE5O1lJIFNZTExBQkxFIEhMRTtMbzswO0w7Ozs7O047Ozs7OworQTFBQTtZSSBTWUxMQUJMRSBITEVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUFCO1lJIFNZTExBQkxFIEhMVVQ7TG87MDtMOzs7OztOOzs7OzsKK0ExQUM7WUkgU1lMTEFCTEUgSExVWDtMbzswO0w7Ozs7O047Ozs7OworQTFBRDtZSSBTWUxMQUJMRSBITFU7TG87MDtMOzs7OztOOzs7OzsKK0ExQUU7WUkgU1lMTEFCTEUgSExVUDtMbzswO0w7Ozs7O047Ozs7OworQTFBRjtZSSBTWUxMQUJMRSBITFVSWDtMbzswO0w7Ozs7O047Ozs7OworQTFCMDtZSSBTWUxMQUJMRSBITFVSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUIxO1lJIFNZTExBQkxFIEhMWVQ7TG87MDtMOzs7OztOOzs7OzsKK0ExQjI7WUkgU1lMTEFCTEUgSExZWDtMbzswO0w7Ozs7O047Ozs7OworQTFCMztZSSBTWUxMQUJMRSBITFk7TG87MDtMOzs7OztOOzs7OzsKK0ExQjQ7WUkgU1lMTEFCTEUgSExZUDtMbzswO0w7Ozs7O047Ozs7OworQTFCNTtZSSBTWUxMQUJMRSBITFlSWDtMbzswO0w7Ozs7O047Ozs7OworQTFCNjtZSSBTWUxMQUJMRSBITFlSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUI3O1lJIFNZTExBQkxFIExJVDtMbzswO0w7Ozs7O047Ozs7OworQTFCODtZSSBTWUxMQUJMRSBMSVg7TG87MDtMOzs7OztOOzs7OzsKK0ExQjk7WUkgU1lMTEFCTEUgTEk7TG87MDtMOzs7OztOOzs7OzsKK0ExQkE7WUkgU1lMTEFCTEUgTElQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUJCO1lJIFNZTExBQkxFIExJRVQ7TG87MDtMOzs7OztOOzs7OzsKK0ExQkM7WUkgU1lMTEFCTEUgTElFWDtMbzswO0w7Ozs7O047Ozs7OworQTFCRDtZSSBTWUxMQUJMRSBMSUU7TG87MDtMOzs7OztOOzs7OzsKK0ExQkU7WUkgU1lMTEFCTEUgTElFUDtMbzswO0w7Ozs7O047Ozs7OworQTFCRjtZSSBTWUxMQUJMRSBMQVQ7TG87MDtMOzs7OztOOzs7OzsKK0ExQzA7WUkgU1lMTEFCTEUgTEFYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUMxO1lJIFNZTExBQkxFIExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUMyO1lJIFNZTExBQkxFIExBUDtMbzswO0w7Ozs7O047Ozs7OworQTFDMztZSSBTWUxMQUJMRSBMVU9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUM0O1lJIFNZTExBQkxFIExVT1g7TG87MDtMOzs7OztOOzs7OzsKK0ExQzU7WUkgU1lMTEFCTEUgTFVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUM2O1lJIFNZTExBQkxFIExVT1A7TG87MDtMOzs7OztOOzs7OzsKK0ExQzc7WUkgU1lMTEFCTEUgTE9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUM4O1lJIFNZTExBQkxFIExPWDtMbzswO0w7Ozs7O047Ozs7OworQTFDOTtZSSBTWUxMQUJMRSBMTztMbzswO0w7Ozs7O047Ozs7OworQTFDQTtZSSBTWUxMQUJMRSBMT1A7TG87MDtMOzs7OztOOzs7OzsKK0ExQ0I7WUkgU1lMTEFCTEUgTEVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUNDO1lJIFNZTExBQkxFIExFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUNEO1lJIFNZTExBQkxFIExFUDtMbzswO0w7Ozs7O047Ozs7OworQTFDRTtZSSBTWUxMQUJMRSBMVVQ7TG87MDtMOzs7OztOOzs7OzsKK0ExQ0Y7WUkgU1lMTEFCTEUgTFVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUQwO1lJIFNZTExBQkxFIExVO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUQxO1lJIFNZTExBQkxFIExVUDtMbzswO0w7Ozs7O047Ozs7OworQTFEMjtZSSBTWUxMQUJMRSBMVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUQzO1lJIFNZTExBQkxFIExVUjtMbzswO0w7Ozs7O047Ozs7OworQTFENDtZSSBTWUxMQUJMRSBMWVQ7TG87MDtMOzs7OztOOzs7OzsKK0ExRDU7WUkgU1lMTEFCTEUgTFlYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUQ2O1lJIFNZTExBQkxFIExZO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUQ3O1lJIFNZTExBQkxFIExZUDtMbzswO0w7Ozs7O047Ozs7OworQTFEODtZSSBTWUxMQUJMRSBMWVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUQ5O1lJIFNZTExBQkxFIExZUjtMbzswO0w7Ozs7O047Ozs7OworQTFEQTtZSSBTWUxMQUJMRSBHSVQ7TG87MDtMOzs7OztOOzs7OzsKK0ExREI7WUkgU1lMTEFCTEUgR0lYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMURDO1lJIFNZTExBQkxFIEdJO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUREO1lJIFNZTExBQkxFIEdJUDtMbzswO0w7Ozs7O047Ozs7OworQTFERTtZSSBTWUxMQUJMRSBHSUVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMURGO1lJIFNZTExBQkxFIEdJRVg7TG87MDtMOzs7OztOOzs7OzsKK0ExRTA7WUkgU1lMTEFCTEUgR0lFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUUxO1lJIFNZTExBQkxFIEdJRVA7TG87MDtMOzs7OztOOzs7OzsKK0ExRTI7WUkgU1lMTEFCTEUgR0FUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUUzO1lJIFNZTExBQkxFIEdBWDtMbzswO0w7Ozs7O047Ozs7OworQTFFNDtZSSBTWUxMQUJMRSBHQTtMbzswO0w7Ozs7O047Ozs7OworQTFFNTtZSSBTWUxMQUJMRSBHQVA7TG87MDtMOzs7OztOOzs7OzsKK0ExRTY7WUkgU1lMTEFCTEUgR1VPVDtMbzswO0w7Ozs7O047Ozs7OworQTFFNztZSSBTWUxMQUJMRSBHVU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUU4O1lJIFNZTExBQkxFIEdVTztMbzswO0w7Ozs7O047Ozs7OworQTFFOTtZSSBTWUxMQUJMRSBHVU9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUVBO1lJIFNZTExBQkxFIEdPVDtMbzswO0w7Ozs7O047Ozs7OworQTFFQjtZSSBTWUxMQUJMRSBHT1g7TG87MDtMOzs7OztOOzs7OzsKK0ExRUM7WUkgU1lMTEFCTEUgR087TG87MDtMOzs7OztOOzs7OzsKK0ExRUQ7WUkgU1lMTEFCTEUgR09QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUVFO1lJIFNZTExBQkxFIEdFVDtMbzswO0w7Ozs7O047Ozs7OworQTFFRjtZSSBTWUxMQUJMRSBHRVg7TG87MDtMOzs7OztOOzs7OzsKK0ExRjA7WUkgU1lMTEFCTEUgR0U7TG87MDtMOzs7OztOOzs7OzsKK0ExRjE7WUkgU1lMTEFCTEUgR0VQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUYyO1lJIFNZTExBQkxFIEdVVDtMbzswO0w7Ozs7O047Ozs7OworQTFGMztZSSBTWUxMQUJMRSBHVVg7TG87MDtMOzs7OztOOzs7OzsKK0ExRjQ7WUkgU1lMTEFCTEUgR1U7TG87MDtMOzs7OztOOzs7OzsKK0ExRjU7WUkgU1lMTEFCTEUgR1VQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUY2O1lJIFNZTExBQkxFIEdVUlg7TG87MDtMOzs7OztOOzs7OzsKK0ExRjc7WUkgU1lMTEFCTEUgR1VSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUY4O1lJIFNZTExBQkxFIEtJVDtMbzswO0w7Ozs7O047Ozs7OworQTFGOTtZSSBTWUxMQUJMRSBLSVg7TG87MDtMOzs7OztOOzs7OzsKK0ExRkE7WUkgU1lMTEFCTEUgS0k7TG87MDtMOzs7OztOOzs7OzsKK0ExRkI7WUkgU1lMTEFCTEUgS0lQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUZDO1lJIFNZTExBQkxFIEtJRVg7TG87MDtMOzs7OztOOzs7OzsKK0ExRkQ7WUkgU1lMTEFCTEUgS0lFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUZFO1lJIFNZTExBQkxFIEtJRVA7TG87MDtMOzs7OztOOzs7OzsKK0ExRkY7WUkgU1lMTEFCTEUgS0FUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjAwO1lJIFNZTExBQkxFIEtBWDtMbzswO0w7Ozs7O047Ozs7OworQTIwMTtZSSBTWUxMQUJMRSBLQTtMbzswO0w7Ozs7O047Ozs7OworQTIwMjtZSSBTWUxMQUJMRSBLQVA7TG87MDtMOzs7OztOOzs7OzsKK0EyMDM7WUkgU1lMTEFCTEUgS1VPWDtMbzswO0w7Ozs7O047Ozs7OworQTIwNDtZSSBTWUxMQUJMRSBLVU87TG87MDtMOzs7OztOOzs7OzsKK0EyMDU7WUkgU1lMTEFCTEUgS1VPUDtMbzswO0w7Ozs7O047Ozs7OworQTIwNjtZSSBTWUxMQUJMRSBLT1Q7TG87MDtMOzs7OztOOzs7OzsKK0EyMDc7WUkgU1lMTEFCTEUgS09YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjA4O1lJIFNZTExBQkxFIEtPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjA5O1lJIFNZTExBQkxFIEtPUDtMbzswO0w7Ozs7O047Ozs7OworQTIwQTtZSSBTWUxMQUJMRSBLRVQ7TG87MDtMOzs7OztOOzs7OzsKK0EyMEI7WUkgU1lMTEFCTEUgS0VYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjBDO1lJIFNZTExBQkxFIEtFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjBEO1lJIFNZTExBQkxFIEtFUDtMbzswO0w7Ozs7O047Ozs7OworQTIwRTtZSSBTWUxMQUJMRSBLVVQ7TG87MDtMOzs7OztOOzs7OzsKK0EyMEY7WUkgU1lMTEFCTEUgS1VYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjEwO1lJIFNZTExBQkxFIEtVO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjExO1lJIFNZTExBQkxFIEtVUDtMbzswO0w7Ozs7O047Ozs7OworQTIxMjtZSSBTWUxMQUJMRSBLVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjEzO1lJIFNZTExBQkxFIEtVUjtMbzswO0w7Ozs7O047Ozs7OworQTIxNDtZSSBTWUxMQUJMRSBHR0lUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjE1O1lJIFNZTExBQkxFIEdHSVg7TG87MDtMOzs7OztOOzs7OzsKK0EyMTY7WUkgU1lMTEFCTEUgR0dJO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjE3O1lJIFNZTExBQkxFIEdHSUVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjE4O1lJIFNZTExBQkxFIEdHSUU7TG87MDtMOzs7OztOOzs7OzsKK0EyMTk7WUkgU1lMTEFCTEUgR0dJRVA7TG87MDtMOzs7OztOOzs7OzsKK0EyMUE7WUkgU1lMTEFCTEUgR0dBVDtMbzswO0w7Ozs7O047Ozs7OworQTIxQjtZSSBTWUxMQUJMRSBHR0FYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjFDO1lJIFNZTExBQkxFIEdHQTtMbzswO0w7Ozs7O047Ozs7OworQTIxRDtZSSBTWUxMQUJMRSBHR0FQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjFFO1lJIFNZTExBQkxFIEdHVU9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjFGO1lJIFNZTExBQkxFIEdHVU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjIwO1lJIFNZTExBQkxFIEdHVU87TG87MDtMOzs7OztOOzs7OzsKK0EyMjE7WUkgU1lMTEFCTEUgR0dVT1A7TG87MDtMOzs7OztOOzs7OzsKK0EyMjI7WUkgU1lMTEFCTEUgR0dPVDtMbzswO0w7Ozs7O047Ozs7OworQTIyMztZSSBTWUxMQUJMRSBHR09YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjI0O1lJIFNZTExBQkxFIEdHTztMbzswO0w7Ozs7O047Ozs7OworQTIyNTtZSSBTWUxMQUJMRSBHR09QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjI2O1lJIFNZTExBQkxFIEdHRVQ7TG87MDtMOzs7OztOOzs7OzsKK0EyMjc7WUkgU1lMTEFCTEUgR0dFWDtMbzswO0w7Ozs7O047Ozs7OworQTIyODtZSSBTWUxMQUJMRSBHR0U7TG87MDtMOzs7OztOOzs7OzsKK0EyMjk7WUkgU1lMTEFCTEUgR0dFUDtMbzswO0w7Ozs7O047Ozs7OworQTIyQTtZSSBTWUxMQUJMRSBHR1VUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjJCO1lJIFNZTExBQkxFIEdHVVg7TG87MDtMOzs7OztOOzs7OzsKK0EyMkM7WUkgU1lMTEFCTEUgR0dVO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjJEO1lJIFNZTExBQkxFIEdHVVA7TG87MDtMOzs7OztOOzs7OzsKK0EyMkU7WUkgU1lMTEFCTEUgR0dVUlg7TG87MDtMOzs7OztOOzs7OzsKK0EyMkY7WUkgU1lMTEFCTEUgR0dVUjtMbzswO0w7Ozs7O047Ozs7OworQTIzMDtZSSBTWUxMQUJMRSBNR0lFWDtMbzswO0w7Ozs7O047Ozs7OworQTIzMTtZSSBTWUxMQUJMRSBNR0lFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjMyO1lJIFNZTExBQkxFIE1HQVQ7TG87MDtMOzs7OztOOzs7OzsKK0EyMzM7WUkgU1lMTEFCTEUgTUdBWDtMbzswO0w7Ozs7O047Ozs7OworQTIzNDtZSSBTWUxMQUJMRSBNR0E7TG87MDtMOzs7OztOOzs7OzsKK0EyMzU7WUkgU1lMTEFCTEUgTUdBUDtMbzswO0w7Ozs7O047Ozs7OworQTIzNjtZSSBTWUxMQUJMRSBNR1VPWDtMbzswO0w7Ozs7O047Ozs7OworQTIzNztZSSBTWUxMQUJMRSBNR1VPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjM4O1lJIFNZTExBQkxFIE1HVU9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjM5O1lJIFNZTExBQkxFIE1HT1Q7TG87MDtMOzs7OztOOzs7OzsKK0EyM0E7WUkgU1lMTEFCTEUgTUdPWDtMbzswO0w7Ozs7O047Ozs7OworQTIzQjtZSSBTWUxMQUJMRSBNR087TG87MDtMOzs7OztOOzs7OzsKK0EyM0M7WUkgU1lMTEFCTEUgTUdPUDtMbzswO0w7Ozs7O047Ozs7OworQTIzRDtZSSBTWUxMQUJMRSBNR0VYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjNFO1lJIFNZTExBQkxFIE1HRTtMbzswO0w7Ozs7O047Ozs7OworQTIzRjtZSSBTWUxMQUJMRSBNR0VQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjQwO1lJIFNZTExBQkxFIE1HVVQ7TG87MDtMOzs7OztOOzs7OzsKK0EyNDE7WUkgU1lMTEFCTEUgTUdVWDtMbzswO0w7Ozs7O047Ozs7OworQTI0MjtZSSBTWUxMQUJMRSBNR1U7TG87MDtMOzs7OztOOzs7OzsKK0EyNDM7WUkgU1lMTEFCTEUgTUdVUDtMbzswO0w7Ozs7O047Ozs7OworQTI0NDtZSSBTWUxMQUJMRSBNR1VSWDtMbzswO0w7Ozs7O047Ozs7OworQTI0NTtZSSBTWUxMQUJMRSBNR1VSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjQ2O1lJIFNZTExBQkxFIEhYSVQ7TG87MDtMOzs7OztOOzs7OzsKK0EyNDc7WUkgU1lMTEFCTEUgSFhJWDtMbzswO0w7Ozs7O047Ozs7OworQTI0ODtZSSBTWUxMQUJMRSBIWEk7TG87MDtMOzs7OztOOzs7OzsKK0EyNDk7WUkgU1lMTEFCTEUgSFhJUDtMbzswO0w7Ozs7O047Ozs7OworQTI0QTtZSSBTWUxMQUJMRSBIWElFVDtMbzswO0w7Ozs7O047Ozs7OworQTI0QjtZSSBTWUxMQUJMRSBIWElFWDtMbzswO0w7Ozs7O047Ozs7OworQTI0QztZSSBTWUxMQUJMRSBIWElFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjREO1lJIFNZTExBQkxFIEhYSUVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjRFO1lJIFNZTExBQkxFIEhYQVQ7TG87MDtMOzs7OztOOzs7OzsKK0EyNEY7WUkgU1lMTEFCTEUgSFhBWDtMbzswO0w7Ozs7O047Ozs7OworQTI1MDtZSSBTWUxMQUJMRSBIWEE7TG87MDtMOzs7OztOOzs7OzsKK0EyNTE7WUkgU1lMTEFCTEUgSFhBUDtMbzswO0w7Ozs7O047Ozs7OworQTI1MjtZSSBTWUxMQUJMRSBIWFVPVDtMbzswO0w7Ozs7O047Ozs7OworQTI1MztZSSBTWUxMQUJMRSBIWFVPWDtMbzswO0w7Ozs7O047Ozs7OworQTI1NDtZSSBTWUxMQUJMRSBIWFVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjU1O1lJIFNZTExBQkxFIEhYVU9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjU2O1lJIFNZTExBQkxFIEhYT1Q7TG87MDtMOzs7OztOOzs7OzsKK0EyNTc7WUkgU1lMTEFCTEUgSFhPWDtMbzswO0w7Ozs7O047Ozs7OworQTI1ODtZSSBTWUxMQUJMRSBIWE87TG87MDtMOzs7OztOOzs7OzsKK0EyNTk7WUkgU1lMTEFCTEUgSFhPUDtMbzswO0w7Ozs7O047Ozs7OworQTI1QTtZSSBTWUxMQUJMRSBIWEVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjVCO1lJIFNZTExBQkxFIEhYRTtMbzswO0w7Ozs7O047Ozs7OworQTI1QztZSSBTWUxMQUJMRSBIWEVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjVEO1lJIFNZTExBQkxFIE5HSUVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjVFO1lJIFNZTExBQkxFIE5HSUU7TG87MDtMOzs7OztOOzs7OzsKK0EyNUY7WUkgU1lMTEFCTEUgTkdJRVA7TG87MDtMOzs7OztOOzs7OzsKK0EyNjA7WUkgU1lMTEFCTEUgTkdBVDtMbzswO0w7Ozs7O047Ozs7OworQTI2MTtZSSBTWUxMQUJMRSBOR0FYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjYyO1lJIFNZTExBQkxFIE5HQTtMbzswO0w7Ozs7O047Ozs7OworQTI2MztZSSBTWUxMQUJMRSBOR0FQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjY0O1lJIFNZTExBQkxFIE5HVU9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjY1O1lJIFNZTExBQkxFIE5HVU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjY2O1lJIFNZTExBQkxFIE5HVU87TG87MDtMOzs7OztOOzs7OzsKK0EyNjc7WUkgU1lMTEFCTEUgTkdPVDtMbzswO0w7Ozs7O047Ozs7OworQTI2ODtZSSBTWUxMQUJMRSBOR09YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjY5O1lJIFNZTExBQkxFIE5HTztMbzswO0w7Ozs7O047Ozs7OworQTI2QTtZSSBTWUxMQUJMRSBOR09QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjZCO1lJIFNZTExBQkxFIE5HRVg7TG87MDtMOzs7OztOOzs7OzsKK0EyNkM7WUkgU1lMTEFCTEUgTkdFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjZEO1lJIFNZTExBQkxFIE5HRVA7TG87MDtMOzs7OztOOzs7OzsKK0EyNkU7WUkgU1lMTEFCTEUgSElUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjZGO1lJIFNZTExBQkxFIEhJRVg7TG87MDtMOzs7OztOOzs7OzsKK0EyNzA7WUkgU1lMTEFCTEUgSElFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjcxO1lJIFNZTExBQkxFIEhBVDtMbzswO0w7Ozs7O047Ozs7OworQTI3MjtZSSBTWUxMQUJMRSBIQVg7TG87MDtMOzs7OztOOzs7OzsKK0EyNzM7WUkgU1lMTEFCTEUgSEE7TG87MDtMOzs7OztOOzs7OzsKK0EyNzQ7WUkgU1lMTEFCTEUgSEFQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjc1O1lJIFNZTExBQkxFIEhVT1Q7TG87MDtMOzs7OztOOzs7OzsKK0EyNzY7WUkgU1lMTEFCTEUgSFVPWDtMbzswO0w7Ozs7O047Ozs7OworQTI3NztZSSBTWUxMQUJMRSBIVU87TG87MDtMOzs7OztOOzs7OzsKK0EyNzg7WUkgU1lMTEFCTEUgSFVPUDtMbzswO0w7Ozs7O047Ozs7OworQTI3OTtZSSBTWUxMQUJMRSBIT1Q7TG87MDtMOzs7OztOOzs7OzsKK0EyN0E7WUkgU1lMTEFCTEUgSE9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjdCO1lJIFNZTExBQkxFIEhPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjdDO1lJIFNZTExBQkxFIEhPUDtMbzswO0w7Ozs7O047Ozs7OworQTI3RDtZSSBTWUxMQUJMRSBIRVg7TG87MDtMOzs7OztOOzs7OzsKK0EyN0U7WUkgU1lMTEFCTEUgSEU7TG87MDtMOzs7OztOOzs7OzsKK0EyN0Y7WUkgU1lMTEFCTEUgSEVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjgwO1lJIFNZTExBQkxFIFdBVDtMbzswO0w7Ozs7O047Ozs7OworQTI4MTtZSSBTWUxMQUJMRSBXQVg7TG87MDtMOzs7OztOOzs7OzsKK0EyODI7WUkgU1lMTEFCTEUgV0E7TG87MDtMOzs7OztOOzs7OzsKK0EyODM7WUkgU1lMTEFCTEUgV0FQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjg0O1lJIFNZTExBQkxFIFdVT1g7TG87MDtMOzs7OztOOzs7OzsKK0EyODU7WUkgU1lMTEFCTEUgV1VPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjg2O1lJIFNZTExBQkxFIFdVT1A7TG87MDtMOzs7OztOOzs7OzsKK0EyODc7WUkgU1lMTEFCTEUgV09YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjg4O1lJIFNZTExBQkxFIFdPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjg5O1lJIFNZTExBQkxFIFdPUDtMbzswO0w7Ozs7O047Ozs7OworQTI4QTtZSSBTWUxMQUJMRSBXRVg7TG87MDtMOzs7OztOOzs7OzsKK0EyOEI7WUkgU1lMTEFCTEUgV0U7TG87MDtMOzs7OztOOzs7OzsKK0EyOEM7WUkgU1lMTEFCTEUgV0VQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjhEO1lJIFNZTExBQkxFIFpJVDtMbzswO0w7Ozs7O047Ozs7OworQTI4RTtZSSBTWUxMQUJMRSBaSVg7TG87MDtMOzs7OztOOzs7OzsKK0EyOEY7WUkgU1lMTEFCTEUgWkk7TG87MDtMOzs7OztOOzs7OzsKK0EyOTA7WUkgU1lMTEFCTEUgWklQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjkxO1lJIFNZTExBQkxFIFpJRVg7TG87MDtMOzs7OztOOzs7OzsKK0EyOTI7WUkgU1lMTEFCTEUgWklFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjkzO1lJIFNZTExBQkxFIFpJRVA7TG87MDtMOzs7OztOOzs7OzsKK0EyOTQ7WUkgU1lMTEFCTEUgWkFUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjk1O1lJIFNZTExBQkxFIFpBWDtMbzswO0w7Ozs7O047Ozs7OworQTI5NjtZSSBTWUxMQUJMRSBaQTtMbzswO0w7Ozs7O047Ozs7OworQTI5NztZSSBTWUxMQUJMRSBaQVA7TG87MDtMOzs7OztOOzs7OzsKK0EyOTg7WUkgU1lMTEFCTEUgWlVPWDtMbzswO0w7Ozs7O047Ozs7OworQTI5OTtZSSBTWUxMQUJMRSBaVU87TG87MDtMOzs7OztOOzs7OzsKK0EyOUE7WUkgU1lMTEFCTEUgWlVPUDtMbzswO0w7Ozs7O047Ozs7OworQTI5QjtZSSBTWUxMQUJMRSBaT1Q7TG87MDtMOzs7OztOOzs7OzsKK0EyOUM7WUkgU1lMTEFCTEUgWk9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjlEO1lJIFNZTExBQkxFIFpPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjlFO1lJIFNZTExBQkxFIFpPUDtMbzswO0w7Ozs7O047Ozs7OworQTI5RjtZSSBTWUxMQUJMRSBaRVg7TG87MDtMOzs7OztOOzs7OzsKK0EyQTA7WUkgU1lMTEFCTEUgWkU7TG87MDtMOzs7OztOOzs7OzsKK0EyQTE7WUkgU1lMTEFCTEUgWkVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkEyO1lJIFNZTExBQkxFIFpVVDtMbzswO0w7Ozs7O047Ozs7OworQTJBMztZSSBTWUxMQUJMRSBaVVg7TG87MDtMOzs7OztOOzs7OzsKK0EyQTQ7WUkgU1lMTEFCTEUgWlU7TG87MDtMOzs7OztOOzs7OzsKK0EyQTU7WUkgU1lMTEFCTEUgWlVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkE2O1lJIFNZTExBQkxFIFpVUlg7TG87MDtMOzs7OztOOzs7OzsKK0EyQTc7WUkgU1lMTEFCTEUgWlVSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkE4O1lJIFNZTExBQkxFIFpZVDtMbzswO0w7Ozs7O047Ozs7OworQTJBOTtZSSBTWUxMQUJMRSBaWVg7TG87MDtMOzs7OztOOzs7OzsKK0EyQUE7WUkgU1lMTEFCTEUgWlk7TG87MDtMOzs7OztOOzs7OzsKK0EyQUI7WUkgU1lMTEFCTEUgWllQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkFDO1lJIFNZTExBQkxFIFpZUlg7TG87MDtMOzs7OztOOzs7OzsKK0EyQUQ7WUkgU1lMTEFCTEUgWllSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkFFO1lJIFNZTExBQkxFIENJVDtMbzswO0w7Ozs7O047Ozs7OworQTJBRjtZSSBTWUxMQUJMRSBDSVg7TG87MDtMOzs7OztOOzs7OzsKK0EyQjA7WUkgU1lMTEFCTEUgQ0k7TG87MDtMOzs7OztOOzs7OzsKK0EyQjE7WUkgU1lMTEFCTEUgQ0lQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkIyO1lJIFNZTExBQkxFIENJRVQ7TG87MDtMOzs7OztOOzs7OzsKK0EyQjM7WUkgU1lMTEFCTEUgQ0lFWDtMbzswO0w7Ozs7O047Ozs7OworQTJCNDtZSSBTWUxMQUJMRSBDSUU7TG87MDtMOzs7OztOOzs7OzsKK0EyQjU7WUkgU1lMTEFCTEUgQ0lFUDtMbzswO0w7Ozs7O047Ozs7OworQTJCNjtZSSBTWUxMQUJMRSBDQVQ7TG87MDtMOzs7OztOOzs7OzsKK0EyQjc7WUkgU1lMTEFCTEUgQ0FYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkI4O1lJIFNZTExBQkxFIENBO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkI5O1lJIFNZTExBQkxFIENBUDtMbzswO0w7Ozs7O047Ozs7OworQTJCQTtZSSBTWUxMQUJMRSBDVU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkJCO1lJIFNZTExBQkxFIENVTztMbzswO0w7Ozs7O047Ozs7OworQTJCQztZSSBTWUxMQUJMRSBDVU9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkJEO1lJIFNZTExBQkxFIENPVDtMbzswO0w7Ozs7O047Ozs7OworQTJCRTtZSSBTWUxMQUJMRSBDT1g7TG87MDtMOzs7OztOOzs7OzsKK0EyQkY7WUkgU1lMTEFCTEUgQ087TG87MDtMOzs7OztOOzs7OzsKK0EyQzA7WUkgU1lMTEFCTEUgQ09QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkMxO1lJIFNZTExBQkxFIENFWDtMbzswO0w7Ozs7O047Ozs7OworQTJDMjtZSSBTWUxMQUJMRSBDRTtMbzswO0w7Ozs7O047Ozs7OworQTJDMztZSSBTWUxMQUJMRSBDRVA7TG87MDtMOzs7OztOOzs7OzsKK0EyQzQ7WUkgU1lMTEFCTEUgQ1VUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkM1O1lJIFNZTExBQkxFIENVWDtMbzswO0w7Ozs7O047Ozs7OworQTJDNjtZSSBTWUxMQUJMRSBDVTtMbzswO0w7Ozs7O047Ozs7OworQTJDNztZSSBTWUxMQUJMRSBDVVA7TG87MDtMOzs7OztOOzs7OzsKK0EyQzg7WUkgU1lMTEFCTEUgQ1VSWDtMbzswO0w7Ozs7O047Ozs7OworQTJDOTtZSSBTWUxMQUJMRSBDVVI7TG87MDtMOzs7OztOOzs7OzsKK0EyQ0E7WUkgU1lMTEFCTEUgQ1lUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkNCO1lJIFNZTExBQkxFIENZWDtMbzswO0w7Ozs7O047Ozs7OworQTJDQztZSSBTWUxMQUJMRSBDWTtMbzswO0w7Ozs7O047Ozs7OworQTJDRDtZSSBTWUxMQUJMRSBDWVA7TG87MDtMOzs7OztOOzs7OzsKK0EyQ0U7WUkgU1lMTEFCTEUgQ1lSWDtMbzswO0w7Ozs7O047Ozs7OworQTJDRjtZSSBTWUxMQUJMRSBDWVI7TG87MDtMOzs7OztOOzs7OzsKK0EyRDA7WUkgU1lMTEFCTEUgWlpJVDtMbzswO0w7Ozs7O047Ozs7OworQTJEMTtZSSBTWUxMQUJMRSBaWklYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkQyO1lJIFNZTExBQkxFIFpaSTtMbzswO0w7Ozs7O047Ozs7OworQTJEMztZSSBTWUxMQUJMRSBaWklQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkQ0O1lJIFNZTExBQkxFIFpaSUVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkQ1O1lJIFNZTExBQkxFIFpaSUVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkQ2O1lJIFNZTExBQkxFIFpaSUU7TG87MDtMOzs7OztOOzs7OzsKK0EyRDc7WUkgU1lMTEFCTEUgWlpJRVA7TG87MDtMOzs7OztOOzs7OzsKK0EyRDg7WUkgU1lMTEFCTEUgWlpBVDtMbzswO0w7Ozs7O047Ozs7OworQTJEOTtZSSBTWUxMQUJMRSBaWkFYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkRBO1lJIFNZTExBQkxFIFpaQTtMbzswO0w7Ozs7O047Ozs7OworQTJEQjtZSSBTWUxMQUJMRSBaWkFQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkRDO1lJIFNZTExBQkxFIFpaT1g7TG87MDtMOzs7OztOOzs7OzsKK0EyREQ7WUkgU1lMTEFCTEUgWlpPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkRFO1lJIFNZTExBQkxFIFpaT1A7TG87MDtMOzs7OztOOzs7OzsKK0EyREY7WUkgU1lMTEFCTEUgWlpFWDtMbzswO0w7Ozs7O047Ozs7OworQTJFMDtZSSBTWUxMQUJMRSBaWkU7TG87MDtMOzs7OztOOzs7OzsKK0EyRTE7WUkgU1lMTEFCTEUgWlpFUDtMbzswO0w7Ozs7O047Ozs7OworQTJFMjtZSSBTWUxMQUJMRSBaWlVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkUzO1lJIFNZTExBQkxFIFpaVTtMbzswO0w7Ozs7O047Ozs7OworQTJFNDtZSSBTWUxMQUJMRSBaWlVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkU1O1lJIFNZTExBQkxFIFpaVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkU2O1lJIFNZTExBQkxFIFpaVVI7TG87MDtMOzs7OztOOzs7OzsKK0EyRTc7WUkgU1lMTEFCTEUgWlpZVDtMbzswO0w7Ozs7O047Ozs7OworQTJFODtZSSBTWUxMQUJMRSBaWllYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkU5O1lJIFNZTExBQkxFIFpaWTtMbzswO0w7Ozs7O047Ozs7OworQTJFQTtZSSBTWUxMQUJMRSBaWllQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkVCO1lJIFNZTExBQkxFIFpaWVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkVDO1lJIFNZTExBQkxFIFpaWVI7TG87MDtMOzs7OztOOzs7OzsKK0EyRUQ7WUkgU1lMTEFCTEUgTlpJVDtMbzswO0w7Ozs7O047Ozs7OworQTJFRTtZSSBTWUxMQUJMRSBOWklYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkVGO1lJIFNZTExBQkxFIE5aSTtMbzswO0w7Ozs7O047Ozs7OworQTJGMDtZSSBTWUxMQUJMRSBOWklQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkYxO1lJIFNZTExBQkxFIE5aSUVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkYyO1lJIFNZTExBQkxFIE5aSUU7TG87MDtMOzs7OztOOzs7OzsKK0EyRjM7WUkgU1lMTEFCTEUgTlpJRVA7TG87MDtMOzs7OztOOzs7OzsKK0EyRjQ7WUkgU1lMTEFCTEUgTlpBVDtMbzswO0w7Ozs7O047Ozs7OworQTJGNTtZSSBTWUxMQUJMRSBOWkFYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkY2O1lJIFNZTExBQkxFIE5aQTtMbzswO0w7Ozs7O047Ozs7OworQTJGNztZSSBTWUxMQUJMRSBOWkFQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkY4O1lJIFNZTExBQkxFIE5aVU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkY5O1lJIFNZTExBQkxFIE5aVU87TG87MDtMOzs7OztOOzs7OzsKK0EyRkE7WUkgU1lMTEFCTEUgTlpPWDtMbzswO0w7Ozs7O047Ozs7OworQTJGQjtZSSBTWUxMQUJMRSBOWk9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkZDO1lJIFNZTExBQkxFIE5aRVg7TG87MDtMOzs7OztOOzs7OzsKK0EyRkQ7WUkgU1lMTEFCTEUgTlpFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkZFO1lJIFNZTExBQkxFIE5aVVg7TG87MDtMOzs7OztOOzs7OzsKK0EyRkY7WUkgU1lMTEFCTEUgTlpVO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzAwO1lJIFNZTExBQkxFIE5aVVA7TG87MDtMOzs7OztOOzs7OzsKK0EzMDE7WUkgU1lMTEFCTEUgTlpVUlg7TG87MDtMOzs7OztOOzs7OzsKK0EzMDI7WUkgU1lMTEFCTEUgTlpVUjtMbzswO0w7Ozs7O047Ozs7OworQTMwMztZSSBTWUxMQUJMRSBOWllUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzA0O1lJIFNZTExBQkxFIE5aWVg7TG87MDtMOzs7OztOOzs7OzsKK0EzMDU7WUkgU1lMTEFCTEUgTlpZO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzA2O1lJIFNZTExBQkxFIE5aWVA7TG87MDtMOzs7OztOOzs7OzsKK0EzMDc7WUkgU1lMTEFCTEUgTlpZUlg7TG87MDtMOzs7OztOOzs7OzsKK0EzMDg7WUkgU1lMTEFCTEUgTlpZUjtMbzswO0w7Ozs7O047Ozs7OworQTMwOTtZSSBTWUxMQUJMRSBTSVQ7TG87MDtMOzs7OztOOzs7OzsKK0EzMEE7WUkgU1lMTEFCTEUgU0lYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzBCO1lJIFNZTExBQkxFIFNJO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzBDO1lJIFNZTExBQkxFIFNJUDtMbzswO0w7Ozs7O047Ozs7OworQTMwRDtZSSBTWUxMQUJMRSBTSUVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzBFO1lJIFNZTExBQkxFIFNJRTtMbzswO0w7Ozs7O047Ozs7OworQTMwRjtZSSBTWUxMQUJMRSBTSUVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzEwO1lJIFNZTExBQkxFIFNBVDtMbzswO0w7Ozs7O047Ozs7OworQTMxMTtZSSBTWUxMQUJMRSBTQVg7TG87MDtMOzs7OztOOzs7OzsKK0EzMTI7WUkgU1lMTEFCTEUgU0E7TG87MDtMOzs7OztOOzs7OzsKK0EzMTM7WUkgU1lMTEFCTEUgU0FQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzE0O1lJIFNZTExBQkxFIFNVT1g7TG87MDtMOzs7OztOOzs7OzsKK0EzMTU7WUkgU1lMTEFCTEUgU1VPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzE2O1lJIFNZTExBQkxFIFNVT1A7TG87MDtMOzs7OztOOzs7OzsKK0EzMTc7WUkgU1lMTEFCTEUgU09UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzE4O1lJIFNZTExBQkxFIFNPWDtMbzswO0w7Ozs7O047Ozs7OworQTMxOTtZSSBTWUxMQUJMRSBTTztMbzswO0w7Ozs7O047Ozs7OworQTMxQTtZSSBTWUxMQUJMRSBTT1A7TG87MDtMOzs7OztOOzs7OzsKK0EzMUI7WUkgU1lMTEFCTEUgU0VYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzFDO1lJIFNZTExBQkxFIFNFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzFEO1lJIFNZTExBQkxFIFNFUDtMbzswO0w7Ozs7O047Ozs7OworQTMxRTtZSSBTWUxMQUJMRSBTVVQ7TG87MDtMOzs7OztOOzs7OzsKK0EzMUY7WUkgU1lMTEFCTEUgU1VYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzIwO1lJIFNZTExBQkxFIFNVO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzIxO1lJIFNZTExBQkxFIFNVUDtMbzswO0w7Ozs7O047Ozs7OworQTMyMjtZSSBTWUxMQUJMRSBTVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzIzO1lJIFNZTExBQkxFIFNVUjtMbzswO0w7Ozs7O047Ozs7OworQTMyNDtZSSBTWUxMQUJMRSBTWVQ7TG87MDtMOzs7OztOOzs7OzsKK0EzMjU7WUkgU1lMTEFCTEUgU1lYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzI2O1lJIFNZTExBQkxFIFNZO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzI3O1lJIFNZTExBQkxFIFNZUDtMbzswO0w7Ozs7O047Ozs7OworQTMyODtZSSBTWUxMQUJMRSBTWVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzI5O1lJIFNZTExBQkxFIFNZUjtMbzswO0w7Ozs7O047Ozs7OworQTMyQTtZSSBTWUxMQUJMRSBTU0lUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzJCO1lJIFNZTExBQkxFIFNTSVg7TG87MDtMOzs7OztOOzs7OzsKK0EzMkM7WUkgU1lMTEFCTEUgU1NJO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzJEO1lJIFNZTExBQkxFIFNTSVA7TG87MDtMOzs7OztOOzs7OzsKK0EzMkU7WUkgU1lMTEFCTEUgU1NJRVg7TG87MDtMOzs7OztOOzs7OzsKK0EzMkY7WUkgU1lMTEFCTEUgU1NJRTtMbzswO0w7Ozs7O047Ozs7OworQTMzMDtZSSBTWUxMQUJMRSBTU0lFUDtMbzswO0w7Ozs7O047Ozs7OworQTMzMTtZSSBTWUxMQUJMRSBTU0FUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzMyO1lJIFNZTExBQkxFIFNTQVg7TG87MDtMOzs7OztOOzs7OzsKK0EzMzM7WUkgU1lMTEFCTEUgU1NBO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzM0O1lJIFNZTExBQkxFIFNTQVA7TG87MDtMOzs7OztOOzs7OzsKK0EzMzU7WUkgU1lMTEFCTEUgU1NPVDtMbzswO0w7Ozs7O047Ozs7OworQTMzNjtZSSBTWUxMQUJMRSBTU09YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzM3O1lJIFNZTExBQkxFIFNTTztMbzswO0w7Ozs7O047Ozs7OworQTMzODtZSSBTWUxMQUJMRSBTU09QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzM5O1lJIFNZTExBQkxFIFNTRVg7TG87MDtMOzs7OztOOzs7OzsKK0EzM0E7WUkgU1lMTEFCTEUgU1NFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzNCO1lJIFNZTExBQkxFIFNTRVA7TG87MDtMOzs7OztOOzs7OzsKK0EzM0M7WUkgU1lMTEFCTEUgU1NVVDtMbzswO0w7Ozs7O047Ozs7OworQTMzRDtZSSBTWUxMQUJMRSBTU1VYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzNFO1lJIFNZTExBQkxFIFNTVTtMbzswO0w7Ozs7O047Ozs7OworQTMzRjtZSSBTWUxMQUJMRSBTU1VQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzQwO1lJIFNZTExBQkxFIFNTWVQ7TG87MDtMOzs7OztOOzs7OzsKK0EzNDE7WUkgU1lMTEFCTEUgU1NZWDtMbzswO0w7Ozs7O047Ozs7OworQTM0MjtZSSBTWUxMQUJMRSBTU1k7TG87MDtMOzs7OztOOzs7OzsKK0EzNDM7WUkgU1lMTEFCTEUgU1NZUDtMbzswO0w7Ozs7O047Ozs7OworQTM0NDtZSSBTWUxMQUJMRSBTU1lSWDtMbzswO0w7Ozs7O047Ozs7OworQTM0NTtZSSBTWUxMQUJMRSBTU1lSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzQ2O1lJIFNZTExBQkxFIFpIQVQ7TG87MDtMOzs7OztOOzs7OzsKK0EzNDc7WUkgU1lMTEFCTEUgWkhBWDtMbzswO0w7Ozs7O047Ozs7OworQTM0ODtZSSBTWUxMQUJMRSBaSEE7TG87MDtMOzs7OztOOzs7OzsKK0EzNDk7WUkgU1lMTEFCTEUgWkhBUDtMbzswO0w7Ozs7O047Ozs7OworQTM0QTtZSSBTWUxMQUJMRSBaSFVPWDtMbzswO0w7Ozs7O047Ozs7OworQTM0QjtZSSBTWUxMQUJMRSBaSFVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzRDO1lJIFNZTExBQkxFIFpIVU9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzREO1lJIFNZTExBQkxFIFpIT1Q7TG87MDtMOzs7OztOOzs7OzsKK0EzNEU7WUkgU1lMTEFCTEUgWkhPWDtMbzswO0w7Ozs7O047Ozs7OworQTM0RjtZSSBTWUxMQUJMRSBaSE87TG87MDtMOzs7OztOOzs7OzsKK0EzNTA7WUkgU1lMTEFCTEUgWkhPUDtMbzswO0w7Ozs7O047Ozs7OworQTM1MTtZSSBTWUxMQUJMRSBaSEVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzUyO1lJIFNZTExBQkxFIFpIRVg7TG87MDtMOzs7OztOOzs7OzsKK0EzNTM7WUkgU1lMTEFCTEUgWkhFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzU0O1lJIFNZTExBQkxFIFpIRVA7TG87MDtMOzs7OztOOzs7OzsKK0EzNTU7WUkgU1lMTEFCTEUgWkhVVDtMbzswO0w7Ozs7O047Ozs7OworQTM1NjtZSSBTWUxMQUJMRSBaSFVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzU3O1lJIFNZTExBQkxFIFpIVTtMbzswO0w7Ozs7O047Ozs7OworQTM1ODtZSSBTWUxMQUJMRSBaSFVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzU5O1lJIFNZTExBQkxFIFpIVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzVBO1lJIFNZTExBQkxFIFpIVVI7TG87MDtMOzs7OztOOzs7OzsKK0EzNUI7WUkgU1lMTEFCTEUgWkhZVDtMbzswO0w7Ozs7O047Ozs7OworQTM1QztZSSBTWUxMQUJMRSBaSFlYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzVEO1lJIFNZTExBQkxFIFpIWTtMbzswO0w7Ozs7O047Ozs7OworQTM1RTtZSSBTWUxMQUJMRSBaSFlQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzVGO1lJIFNZTExBQkxFIFpIWVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzYwO1lJIFNZTExBQkxFIFpIWVI7TG87MDtMOzs7OztOOzs7OzsKK0EzNjE7WUkgU1lMTEFCTEUgQ0hBVDtMbzswO0w7Ozs7O047Ozs7OworQTM2MjtZSSBTWUxMQUJMRSBDSEFYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzYzO1lJIFNZTExBQkxFIENIQTtMbzswO0w7Ozs7O047Ozs7OworQTM2NDtZSSBTWUxMQUJMRSBDSEFQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzY1O1lJIFNZTExBQkxFIENIVU9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzY2O1lJIFNZTExBQkxFIENIVU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzY3O1lJIFNZTExBQkxFIENIVU87TG87MDtMOzs7OztOOzs7OzsKK0EzNjg7WUkgU1lMTEFCTEUgQ0hVT1A7TG87MDtMOzs7OztOOzs7OzsKK0EzNjk7WUkgU1lMTEFCTEUgQ0hPVDtMbzswO0w7Ozs7O047Ozs7OworQTM2QTtZSSBTWUxMQUJMRSBDSE9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzZCO1lJIFNZTExBQkxFIENITztMbzswO0w7Ozs7O047Ozs7OworQTM2QztZSSBTWUxMQUJMRSBDSE9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzZEO1lJIFNZTExBQkxFIENIRVQ7TG87MDtMOzs7OztOOzs7OzsKK0EzNkU7WUkgU1lMTEFCTEUgQ0hFWDtMbzswO0w7Ozs7O047Ozs7OworQTM2RjtZSSBTWUxMQUJMRSBDSEU7TG87MDtMOzs7OztOOzs7OzsKK0EzNzA7WUkgU1lMTEFCTEUgQ0hFUDtMbzswO0w7Ozs7O047Ozs7OworQTM3MTtZSSBTWUxMQUJMRSBDSFVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzcyO1lJIFNZTExBQkxFIENIVTtMbzswO0w7Ozs7O047Ozs7OworQTM3MztZSSBTWUxMQUJMRSBDSFVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzc0O1lJIFNZTExBQkxFIENIVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzc1O1lJIFNZTExBQkxFIENIVVI7TG87MDtMOzs7OztOOzs7OzsKK0EzNzY7WUkgU1lMTEFCTEUgQ0hZVDtMbzswO0w7Ozs7O047Ozs7OworQTM3NztZSSBTWUxMQUJMRSBDSFlYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzc4O1lJIFNZTExBQkxFIENIWTtMbzswO0w7Ozs7O047Ozs7OworQTM3OTtZSSBTWUxMQUJMRSBDSFlQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzdBO1lJIFNZTExBQkxFIENIWVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzdCO1lJIFNZTExBQkxFIENIWVI7TG87MDtMOzs7OztOOzs7OzsKK0EzN0M7WUkgU1lMTEFCTEUgUlJBWDtMbzswO0w7Ozs7O047Ozs7OworQTM3RDtZSSBTWUxMQUJMRSBSUkE7TG87MDtMOzs7OztOOzs7OzsKK0EzN0U7WUkgU1lMTEFCTEUgUlJVT1g7TG87MDtMOzs7OztOOzs7OzsKK0EzN0Y7WUkgU1lMTEFCTEUgUlJVTztMbzswO0w7Ozs7O047Ozs7OworQTM4MDtZSSBTWUxMQUJMRSBSUk9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzgxO1lJIFNZTExBQkxFIFJST1g7TG87MDtMOzs7OztOOzs7OzsKK0EzODI7WUkgU1lMTEFCTEUgUlJPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzgzO1lJIFNZTExBQkxFIFJST1A7TG87MDtMOzs7OztOOzs7OzsKK0EzODQ7WUkgU1lMTEFCTEUgUlJFVDtMbzswO0w7Ozs7O047Ozs7OworQTM4NTtZSSBTWUxMQUJMRSBSUkVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzg2O1lJIFNZTExBQkxFIFJSRTtMbzswO0w7Ozs7O047Ozs7OworQTM4NztZSSBTWUxMQUJMRSBSUkVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzg4O1lJIFNZTExBQkxFIFJSVVQ7TG87MDtMOzs7OztOOzs7OzsKK0EzODk7WUkgU1lMTEFCTEUgUlJVWDtMbzswO0w7Ozs7O047Ozs7OworQTM4QTtZSSBTWUxMQUJMRSBSUlU7TG87MDtMOzs7OztOOzs7OzsKK0EzOEI7WUkgU1lMTEFCTEUgUlJVUDtMbzswO0w7Ozs7O047Ozs7OworQTM4QztZSSBTWUxMQUJMRSBSUlVSWDtMbzswO0w7Ozs7O047Ozs7OworQTM4RDtZSSBTWUxMQUJMRSBSUlVSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzhFO1lJIFNZTExBQkxFIFJSWVQ7TG87MDtMOzs7OztOOzs7OzsKK0EzOEY7WUkgU1lMTEFCTEUgUlJZWDtMbzswO0w7Ozs7O047Ozs7OworQTM5MDtZSSBTWUxMQUJMRSBSUlk7TG87MDtMOzs7OztOOzs7OzsKK0EzOTE7WUkgU1lMTEFCTEUgUlJZUDtMbzswO0w7Ozs7O047Ozs7OworQTM5MjtZSSBTWUxMQUJMRSBSUllSWDtMbzswO0w7Ozs7O047Ozs7OworQTM5MztZSSBTWUxMQUJMRSBSUllSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzk0O1lJIFNZTExBQkxFIE5SQVQ7TG87MDtMOzs7OztOOzs7OzsKK0EzOTU7WUkgU1lMTEFCTEUgTlJBWDtMbzswO0w7Ozs7O047Ozs7OworQTM5NjtZSSBTWUxMQUJMRSBOUkE7TG87MDtMOzs7OztOOzs7OzsKK0EzOTc7WUkgU1lMTEFCTEUgTlJBUDtMbzswO0w7Ozs7O047Ozs7OworQTM5ODtZSSBTWUxMQUJMRSBOUk9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzk5O1lJIFNZTExBQkxFIE5STztMbzswO0w7Ozs7O047Ozs7OworQTM5QTtZSSBTWUxMQUJMRSBOUk9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzlCO1lJIFNZTExBQkxFIE5SRVQ7TG87MDtMOzs7OztOOzs7OzsKK0EzOUM7WUkgU1lMTEFCTEUgTlJFWDtMbzswO0w7Ozs7O047Ozs7OworQTM5RDtZSSBTWUxMQUJMRSBOUkU7TG87MDtMOzs7OztOOzs7OzsKK0EzOUU7WUkgU1lMTEFCTEUgTlJFUDtMbzswO0w7Ozs7O047Ozs7OworQTM5RjtZSSBTWUxMQUJMRSBOUlVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0EwO1lJIFNZTExBQkxFIE5SVVg7TG87MDtMOzs7OztOOzs7OzsKK0EzQTE7WUkgU1lMTEFCTEUgTlJVO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0EyO1lJIFNZTExBQkxFIE5SVVA7TG87MDtMOzs7OztOOzs7OzsKK0EzQTM7WUkgU1lMTEFCTEUgTlJVUlg7TG87MDtMOzs7OztOOzs7OzsKK0EzQTQ7WUkgU1lMTEFCTEUgTlJVUjtMbzswO0w7Ozs7O047Ozs7OworQTNBNTtZSSBTWUxMQUJMRSBOUllUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0E2O1lJIFNZTExBQkxFIE5SWVg7TG87MDtMOzs7OztOOzs7OzsKK0EzQTc7WUkgU1lMTEFCTEUgTlJZO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0E4O1lJIFNZTExBQkxFIE5SWVA7TG87MDtMOzs7OztOOzs7OzsKK0EzQTk7WUkgU1lMTEFCTEUgTlJZUlg7TG87MDtMOzs7OztOOzs7OzsKK0EzQUE7WUkgU1lMTEFCTEUgTlJZUjtMbzswO0w7Ozs7O047Ozs7OworQTNBQjtZSSBTWUxMQUJMRSBTSEFUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0FDO1lJIFNZTExBQkxFIFNIQVg7TG87MDtMOzs7OztOOzs7OzsKK0EzQUQ7WUkgU1lMTEFCTEUgU0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0FFO1lJIFNZTExBQkxFIFNIQVA7TG87MDtMOzs7OztOOzs7OzsKK0EzQUY7WUkgU1lMTEFCTEUgU0hVT1g7TG87MDtMOzs7OztOOzs7OzsKK0EzQjA7WUkgU1lMTEFCTEUgU0hVTztMbzswO0w7Ozs7O047Ozs7OworQTNCMTtZSSBTWUxMQUJMRSBTSFVPUDtMbzswO0w7Ozs7O047Ozs7OworQTNCMjtZSSBTWUxMQUJMRSBTSE9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0IzO1lJIFNZTExBQkxFIFNIT1g7TG87MDtMOzs7OztOOzs7OzsKK0EzQjQ7WUkgU1lMTEFCTEUgU0hPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0I1O1lJIFNZTExBQkxFIFNIT1A7TG87MDtMOzs7OztOOzs7OzsKK0EzQjY7WUkgU1lMTEFCTEUgU0hFVDtMbzswO0w7Ozs7O047Ozs7OworQTNCNztZSSBTWUxMQUJMRSBTSEVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0I4O1lJIFNZTExBQkxFIFNIRTtMbzswO0w7Ozs7O047Ozs7OworQTNCOTtZSSBTWUxMQUJMRSBTSEVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0JBO1lJIFNZTExBQkxFIFNIVVQ7TG87MDtMOzs7OztOOzs7OzsKK0EzQkI7WUkgU1lMTEFCTEUgU0hVWDtMbzswO0w7Ozs7O047Ozs7OworQTNCQztZSSBTWUxMQUJMRSBTSFU7TG87MDtMOzs7OztOOzs7OzsKK0EzQkQ7WUkgU1lMTEFCTEUgU0hVUDtMbzswO0w7Ozs7O047Ozs7OworQTNCRTtZSSBTWUxMQUJMRSBTSFVSWDtMbzswO0w7Ozs7O047Ozs7OworQTNCRjtZSSBTWUxMQUJMRSBTSFVSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0MwO1lJIFNZTExBQkxFIFNIWVQ7TG87MDtMOzs7OztOOzs7OzsKK0EzQzE7WUkgU1lMTEFCTEUgU0hZWDtMbzswO0w7Ozs7O047Ozs7OworQTNDMjtZSSBTWUxMQUJMRSBTSFk7TG87MDtMOzs7OztOOzs7OzsKK0EzQzM7WUkgU1lMTEFCTEUgU0hZUDtMbzswO0w7Ozs7O047Ozs7OworQTNDNDtZSSBTWUxMQUJMRSBTSFlSWDtMbzswO0w7Ozs7O047Ozs7OworQTNDNTtZSSBTWUxMQUJMRSBTSFlSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0M2O1lJIFNZTExBQkxFIFJBVDtMbzswO0w7Ozs7O047Ozs7OworQTNDNztZSSBTWUxMQUJMRSBSQVg7TG87MDtMOzs7OztOOzs7OzsKK0EzQzg7WUkgU1lMTEFCTEUgUkE7TG87MDtMOzs7OztOOzs7OzsKK0EzQzk7WUkgU1lMTEFCTEUgUkFQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0NBO1lJIFNZTExBQkxFIFJVT1g7TG87MDtMOzs7OztOOzs7OzsKK0EzQ0I7WUkgU1lMTEFCTEUgUlVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0NDO1lJIFNZTExBQkxFIFJVT1A7TG87MDtMOzs7OztOOzs7OzsKK0EzQ0Q7WUkgU1lMTEFCTEUgUk9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0NFO1lJIFNZTExBQkxFIFJPWDtMbzswO0w7Ozs7O047Ozs7OworQTNDRjtZSSBTWUxMQUJMRSBSTztMbzswO0w7Ozs7O047Ozs7OworQTNEMDtZSSBTWUxMQUJMRSBST1A7TG87MDtMOzs7OztOOzs7OzsKK0EzRDE7WUkgU1lMTEFCTEUgUkVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0QyO1lJIFNZTExBQkxFIFJFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0QzO1lJIFNZTExBQkxFIFJFUDtMbzswO0w7Ozs7O047Ozs7OworQTNENDtZSSBTWUxMQUJMRSBSVVQ7TG87MDtMOzs7OztOOzs7OzsKK0EzRDU7WUkgU1lMTEFCTEUgUlVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0Q2O1lJIFNZTExBQkxFIFJVO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0Q3O1lJIFNZTExBQkxFIFJVUDtMbzswO0w7Ozs7O047Ozs7OworQTNEODtZSSBTWUxMQUJMRSBSVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0Q5O1lJIFNZTExBQkxFIFJVUjtMbzswO0w7Ozs7O047Ozs7OworQTNEQTtZSSBTWUxMQUJMRSBSWVQ7TG87MDtMOzs7OztOOzs7OzsKK0EzREI7WUkgU1lMTEFCTEUgUllYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0RDO1lJIFNZTExBQkxFIFJZO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0REO1lJIFNZTExBQkxFIFJZUDtMbzswO0w7Ozs7O047Ozs7OworQTNERTtZSSBTWUxMQUJMRSBSWVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0RGO1lJIFNZTExBQkxFIFJZUjtMbzswO0w7Ozs7O047Ozs7OworQTNFMDtZSSBTWUxMQUJMRSBKSVQ7TG87MDtMOzs7OztOOzs7OzsKK0EzRTE7WUkgU1lMTEFCTEUgSklYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0UyO1lJIFNZTExBQkxFIEpJO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0UzO1lJIFNZTExBQkxFIEpJUDtMbzswO0w7Ozs7O047Ozs7OworQTNFNDtZSSBTWUxMQUJMRSBKSUVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0U1O1lJIFNZTExBQkxFIEpJRVg7TG87MDtMOzs7OztOOzs7OzsKK0EzRTY7WUkgU1lMTEFCTEUgSklFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0U3O1lJIFNZTExBQkxFIEpJRVA7TG87MDtMOzs7OztOOzs7OzsKK0EzRTg7WUkgU1lMTEFCTEUgSlVPVDtMbzswO0w7Ozs7O047Ozs7OworQTNFOTtZSSBTWUxMQUJMRSBKVU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0VBO1lJIFNZTExBQkxFIEpVTztMbzswO0w7Ozs7O047Ozs7OworQTNFQjtZSSBTWUxMQUJMRSBKVU9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0VDO1lJIFNZTExBQkxFIEpPVDtMbzswO0w7Ozs7O047Ozs7OworQTNFRDtZSSBTWUxMQUJMRSBKT1g7TG87MDtMOzs7OztOOzs7OzsKK0EzRUU7WUkgU1lMTEFCTEUgSk87TG87MDtMOzs7OztOOzs7OzsKK0EzRUY7WUkgU1lMTEFCTEUgSk9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0YwO1lJIFNZTExBQkxFIEpVVDtMbzswO0w7Ozs7O047Ozs7OworQTNGMTtZSSBTWUxMQUJMRSBKVVg7TG87MDtMOzs7OztOOzs7OzsKK0EzRjI7WUkgU1lMTEFCTEUgSlU7TG87MDtMOzs7OztOOzs7OzsKK0EzRjM7WUkgU1lMTEFCTEUgSlVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0Y0O1lJIFNZTExBQkxFIEpVUlg7TG87MDtMOzs7OztOOzs7OzsKK0EzRjU7WUkgU1lMTEFCTEUgSlVSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0Y2O1lJIFNZTExBQkxFIEpZVDtMbzswO0w7Ozs7O047Ozs7OworQTNGNztZSSBTWUxMQUJMRSBKWVg7TG87MDtMOzs7OztOOzs7OzsKK0EzRjg7WUkgU1lMTEFCTEUgSlk7TG87MDtMOzs7OztOOzs7OzsKK0EzRjk7WUkgU1lMTEFCTEUgSllQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0ZBO1lJIFNZTExBQkxFIEpZUlg7TG87MDtMOzs7OztOOzs7OzsKK0EzRkI7WUkgU1lMTEFCTEUgSllSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0ZDO1lJIFNZTExBQkxFIFFJVDtMbzswO0w7Ozs7O047Ozs7OworQTNGRDtZSSBTWUxMQUJMRSBRSVg7TG87MDtMOzs7OztOOzs7OzsKK0EzRkU7WUkgU1lMTEFCTEUgUUk7TG87MDtMOzs7OztOOzs7OzsKK0EzRkY7WUkgU1lMTEFCTEUgUUlQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDAwO1lJIFNZTExBQkxFIFFJRVQ7TG87MDtMOzs7OztOOzs7OzsKK0E0MDE7WUkgU1lMTEFCTEUgUUlFWDtMbzswO0w7Ozs7O047Ozs7OworQTQwMjtZSSBTWUxMQUJMRSBRSUU7TG87MDtMOzs7OztOOzs7OzsKK0E0MDM7WUkgU1lMTEFCTEUgUUlFUDtMbzswO0w7Ozs7O047Ozs7OworQTQwNDtZSSBTWUxMQUJMRSBRVU9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDA1O1lJIFNZTExBQkxFIFFVT1g7TG87MDtMOzs7OztOOzs7OzsKK0E0MDY7WUkgU1lMTEFCTEUgUVVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDA3O1lJIFNZTExBQkxFIFFVT1A7TG87MDtMOzs7OztOOzs7OzsKK0E0MDg7WUkgU1lMTEFCTEUgUU9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDA5O1lJIFNZTExBQkxFIFFPWDtMbzswO0w7Ozs7O047Ozs7OworQTQwQTtZSSBTWUxMQUJMRSBRTztMbzswO0w7Ozs7O047Ozs7OworQTQwQjtZSSBTWUxMQUJMRSBRT1A7TG87MDtMOzs7OztOOzs7OzsKK0E0MEM7WUkgU1lMTEFCTEUgUVVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDBEO1lJIFNZTExBQkxFIFFVWDtMbzswO0w7Ozs7O047Ozs7OworQTQwRTtZSSBTWUxMQUJMRSBRVTtMbzswO0w7Ozs7O047Ozs7OworQTQwRjtZSSBTWUxMQUJMRSBRVVA7TG87MDtMOzs7OztOOzs7OzsKK0E0MTA7WUkgU1lMTEFCTEUgUVVSWDtMbzswO0w7Ozs7O047Ozs7OworQTQxMTtZSSBTWUxMQUJMRSBRVVI7TG87MDtMOzs7OztOOzs7OzsKK0E0MTI7WUkgU1lMTEFCTEUgUVlUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDEzO1lJIFNZTExBQkxFIFFZWDtMbzswO0w7Ozs7O047Ozs7OworQTQxNDtZSSBTWUxMQUJMRSBRWTtMbzswO0w7Ozs7O047Ozs7OworQTQxNTtZSSBTWUxMQUJMRSBRWVA7TG87MDtMOzs7OztOOzs7OzsKK0E0MTY7WUkgU1lMTEFCTEUgUVlSWDtMbzswO0w7Ozs7O047Ozs7OworQTQxNztZSSBTWUxMQUJMRSBRWVI7TG87MDtMOzs7OztOOzs7OzsKK0E0MTg7WUkgU1lMTEFCTEUgSkpJVDtMbzswO0w7Ozs7O047Ozs7OworQTQxOTtZSSBTWUxMQUJMRSBKSklYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDFBO1lJIFNZTExBQkxFIEpKSTtMbzswO0w7Ozs7O047Ozs7OworQTQxQjtZSSBTWUxMQUJMRSBKSklQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDFDO1lJIFNZTExBQkxFIEpKSUVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDFEO1lJIFNZTExBQkxFIEpKSUVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDFFO1lJIFNZTExBQkxFIEpKSUU7TG87MDtMOzs7OztOOzs7OzsKK0E0MUY7WUkgU1lMTEFCTEUgSkpJRVA7TG87MDtMOzs7OztOOzs7OzsKK0E0MjA7WUkgU1lMTEFCTEUgSkpVT1g7TG87MDtMOzs7OztOOzs7OzsKK0E0MjE7WUkgU1lMTEFCTEUgSkpVTztMbzswO0w7Ozs7O047Ozs7OworQTQyMjtZSSBTWUxMQUJMRSBKSlVPUDtMbzswO0w7Ozs7O047Ozs7OworQTQyMztZSSBTWUxMQUJMRSBKSk9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDI0O1lJIFNZTExBQkxFIEpKT1g7TG87MDtMOzs7OztOOzs7OzsKK0E0MjU7WUkgU1lMTEFCTEUgSkpPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDI2O1lJIFNZTExBQkxFIEpKT1A7TG87MDtMOzs7OztOOzs7OzsKK0E0Mjc7WUkgU1lMTEFCTEUgSkpVVDtMbzswO0w7Ozs7O047Ozs7OworQTQyODtZSSBTWUxMQUJMRSBKSlVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDI5O1lJIFNZTExBQkxFIEpKVTtMbzswO0w7Ozs7O047Ozs7OworQTQyQTtZSSBTWUxMQUJMRSBKSlVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDJCO1lJIFNZTExBQkxFIEpKVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDJDO1lJIFNZTExBQkxFIEpKVVI7TG87MDtMOzs7OztOOzs7OzsKK0E0MkQ7WUkgU1lMTEFCTEUgSkpZVDtMbzswO0w7Ozs7O047Ozs7OworQTQyRTtZSSBTWUxMQUJMRSBKSllYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDJGO1lJIFNZTExBQkxFIEpKWTtMbzswO0w7Ozs7O047Ozs7OworQTQzMDtZSSBTWUxMQUJMRSBKSllQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDMxO1lJIFNZTExBQkxFIE5KSVQ7TG87MDtMOzs7OztOOzs7OzsKK0E0MzI7WUkgU1lMTEFCTEUgTkpJWDtMbzswO0w7Ozs7O047Ozs7OworQTQzMztZSSBTWUxMQUJMRSBOSkk7TG87MDtMOzs7OztOOzs7OzsKK0E0MzQ7WUkgU1lMTEFCTEUgTkpJUDtMbzswO0w7Ozs7O047Ozs7OworQTQzNTtZSSBTWUxMQUJMRSBOSklFVDtMbzswO0w7Ozs7O047Ozs7OworQTQzNjtZSSBTWUxMQUJMRSBOSklFWDtMbzswO0w7Ozs7O047Ozs7OworQTQzNztZSSBTWUxMQUJMRSBOSklFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDM4O1lJIFNZTExBQkxFIE5KSUVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDM5O1lJIFNZTExBQkxFIE5KVU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDNBO1lJIFNZTExBQkxFIE5KVU87TG87MDtMOzs7OztOOzs7OzsKK0E0M0I7WUkgU1lMTEFCTEUgTkpPVDtMbzswO0w7Ozs7O047Ozs7OworQTQzQztZSSBTWUxMQUJMRSBOSk9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDNEO1lJIFNZTExBQkxFIE5KTztMbzswO0w7Ozs7O047Ozs7OworQTQzRTtZSSBTWUxMQUJMRSBOSk9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDNGO1lJIFNZTExBQkxFIE5KVVg7TG87MDtMOzs7OztOOzs7OzsKK0E0NDA7WUkgU1lMTEFCTEUgTkpVO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDQxO1lJIFNZTExBQkxFIE5KVVA7TG87MDtMOzs7OztOOzs7OzsKK0E0NDI7WUkgU1lMTEFCTEUgTkpVUlg7TG87MDtMOzs7OztOOzs7OzsKK0E0NDM7WUkgU1lMTEFCTEUgTkpVUjtMbzswO0w7Ozs7O047Ozs7OworQTQ0NDtZSSBTWUxMQUJMRSBOSllUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDQ1O1lJIFNZTExBQkxFIE5KWVg7TG87MDtMOzs7OztOOzs7OzsKK0E0NDY7WUkgU1lMTEFCTEUgTkpZO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDQ3O1lJIFNZTExBQkxFIE5KWVA7TG87MDtMOzs7OztOOzs7OzsKK0E0NDg7WUkgU1lMTEFCTEUgTkpZUlg7TG87MDtMOzs7OztOOzs7OzsKK0E0NDk7WUkgU1lMTEFCTEUgTkpZUjtMbzswO0w7Ozs7O047Ozs7OworQTQ0QTtZSSBTWUxMQUJMRSBOWUlUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDRCO1lJIFNZTExBQkxFIE5ZSVg7TG87MDtMOzs7OztOOzs7OzsKK0E0NEM7WUkgU1lMTEFCTEUgTllJO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDREO1lJIFNZTExBQkxFIE5ZSVA7TG87MDtMOzs7OztOOzs7OzsKK0E0NEU7WUkgU1lMTEFCTEUgTllJRVQ7TG87MDtMOzs7OztOOzs7OzsKK0E0NEY7WUkgU1lMTEFCTEUgTllJRVg7TG87MDtMOzs7OztOOzs7OzsKK0E0NTA7WUkgU1lMTEFCTEUgTllJRTtMbzswO0w7Ozs7O047Ozs7OworQTQ1MTtZSSBTWUxMQUJMRSBOWUlFUDtMbzswO0w7Ozs7O047Ozs7OworQTQ1MjtZSSBTWUxMQUJMRSBOWVVPWDtMbzswO0w7Ozs7O047Ozs7OworQTQ1MztZSSBTWUxMQUJMRSBOWVVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDU0O1lJIFNZTExBQkxFIE5ZVU9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDU1O1lJIFNZTExBQkxFIE5ZT1Q7TG87MDtMOzs7OztOOzs7OzsKK0E0NTY7WUkgU1lMTEFCTEUgTllPWDtMbzswO0w7Ozs7O047Ozs7OworQTQ1NztZSSBTWUxMQUJMRSBOWU87TG87MDtMOzs7OztOOzs7OzsKK0E0NTg7WUkgU1lMTEFCTEUgTllPUDtMbzswO0w7Ozs7O047Ozs7OworQTQ1OTtZSSBTWUxMQUJMRSBOWVVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDVBO1lJIFNZTExBQkxFIE5ZVVg7TG87MDtMOzs7OztOOzs7OzsKK0E0NUI7WUkgU1lMTEFCTEUgTllVO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDVDO1lJIFNZTExBQkxFIE5ZVVA7TG87MDtMOzs7OztOOzs7OzsKK0E0NUQ7WUkgU1lMTEFCTEUgWElUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDVFO1lJIFNZTExBQkxFIFhJWDtMbzswO0w7Ozs7O047Ozs7OworQTQ1RjtZSSBTWUxMQUJMRSBYSTtMbzswO0w7Ozs7O047Ozs7OworQTQ2MDtZSSBTWUxMQUJMRSBYSVA7TG87MDtMOzs7OztOOzs7OzsKK0E0NjE7WUkgU1lMTEFCTEUgWElFVDtMbzswO0w7Ozs7O047Ozs7OworQTQ2MjtZSSBTWUxMQUJMRSBYSUVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDYzO1lJIFNZTExBQkxFIFhJRTtMbzswO0w7Ozs7O047Ozs7OworQTQ2NDtZSSBTWUxMQUJMRSBYSUVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDY1O1lJIFNZTExBQkxFIFhVT1g7TG87MDtMOzs7OztOOzs7OzsKK0E0NjY7WUkgU1lMTEFCTEUgWFVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDY3O1lJIFNZTExBQkxFIFhPVDtMbzswO0w7Ozs7O047Ozs7OworQTQ2ODtZSSBTWUxMQUJMRSBYT1g7TG87MDtMOzs7OztOOzs7OzsKK0E0Njk7WUkgU1lMTEFCTEUgWE87TG87MDtMOzs7OztOOzs7OzsKK0E0NkE7WUkgU1lMTEFCTEUgWE9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDZCO1lJIFNZTExBQkxFIFhZVDtMbzswO0w7Ozs7O047Ozs7OworQTQ2QztZSSBTWUxMQUJMRSBYWVg7TG87MDtMOzs7OztOOzs7OzsKK0E0NkQ7WUkgU1lMTEFCTEUgWFk7TG87MDtMOzs7OztOOzs7OzsKK0E0NkU7WUkgU1lMTEFCTEUgWFlQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDZGO1lJIFNZTExBQkxFIFhZUlg7TG87MDtMOzs7OztOOzs7OzsKK0E0NzA7WUkgU1lMTEFCTEUgWFlSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDcxO1lJIFNZTExBQkxFIFlJVDtMbzswO0w7Ozs7O047Ozs7OworQTQ3MjtZSSBTWUxMQUJMRSBZSVg7TG87MDtMOzs7OztOOzs7OzsKK0E0NzM7WUkgU1lMTEFCTEUgWUk7TG87MDtMOzs7OztOOzs7OzsKK0E0NzQ7WUkgU1lMTEFCTEUgWUlQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDc1O1lJIFNZTExBQkxFIFlJRVQ7TG87MDtMOzs7OztOOzs7OzsKK0E0NzY7WUkgU1lMTEFCTEUgWUlFWDtMbzswO0w7Ozs7O047Ozs7OworQTQ3NztZSSBTWUxMQUJMRSBZSUU7TG87MDtMOzs7OztOOzs7OzsKK0E0Nzg7WUkgU1lMTEFCTEUgWUlFUDtMbzswO0w7Ozs7O047Ozs7OworQTQ3OTtZSSBTWUxMQUJMRSBZVU9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDdBO1lJIFNZTExBQkxFIFlVT1g7TG87MDtMOzs7OztOOzs7OzsKK0E0N0I7WUkgU1lMTEFCTEUgWVVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDdDO1lJIFNZTExBQkxFIFlVT1A7TG87MDtMOzs7OztOOzs7OzsKK0E0N0Q7WUkgU1lMTEFCTEUgWU9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDdFO1lJIFNZTExBQkxFIFlPWDtMbzswO0w7Ozs7O047Ozs7OworQTQ3RjtZSSBTWUxMQUJMRSBZTztMbzswO0w7Ozs7O047Ozs7OworQTQ4MDtZSSBTWUxMQUJMRSBZT1A7TG87MDtMOzs7OztOOzs7OzsKK0E0ODE7WUkgU1lMTEFCTEUgWVVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDgyO1lJIFNZTExBQkxFIFlVWDtMbzswO0w7Ozs7O047Ozs7OworQTQ4MztZSSBTWUxMQUJMRSBZVTtMbzswO0w7Ozs7O047Ozs7OworQTQ4NDtZSSBTWUxMQUJMRSBZVVA7TG87MDtMOzs7OztOOzs7OzsKK0E0ODU7WUkgU1lMTEFCTEUgWVVSWDtMbzswO0w7Ozs7O047Ozs7OworQTQ4NjtZSSBTWUxMQUJMRSBZVVI7TG87MDtMOzs7OztOOzs7OzsKK0E0ODc7WUkgU1lMTEFCTEUgWVlUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDg4O1lJIFNZTExBQkxFIFlZWDtMbzswO0w7Ozs7O047Ozs7OworQTQ4OTtZSSBTWUxMQUJMRSBZWTtMbzswO0w7Ozs7O047Ozs7OworQTQ4QTtZSSBTWUxMQUJMRSBZWVA7TG87MDtMOzs7OztOOzs7OzsKK0E0OEI7WUkgU1lMTEFCTEUgWVlSWDtMbzswO0w7Ozs7O047Ozs7OworQTQ4QztZSSBTWUxMQUJMRSBZWVI7TG87MDtMOzs7OztOOzs7OzsKK0E0OTA7WUkgUkFESUNBTCBRT1Q7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNDkxO1lJIFJBRElDQUwgTEk7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNDkyO1lJIFJBRElDQUwgS0lUO1NvOzA7T047Ozs7O047Ozs7OworQTQ5MztZSSBSQURJQ0FMIE5ZSVA7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNDk0O1lJIFJBRElDQUwgQ1lQO1NvOzA7T047Ozs7O047Ozs7OworQTQ5NTtZSSBSQURJQ0FMIFNTSTtTbzswO09OOzs7OztOOzs7OzsKK0E0OTY7WUkgUkFESUNBTCBHR09QO1NvOzA7T047Ozs7O047Ozs7OworQTQ5NztZSSBSQURJQ0FMIEdFUDtTbzswO09OOzs7OztOOzs7OzsKK0E0OTg7WUkgUkFESUNBTCBNSTtTbzswO09OOzs7OztOOzs7OzsKK0E0OTk7WUkgUkFESUNBTCBIWElUO1NvOzA7T047Ozs7O047Ozs7OworQTQ5QTtZSSBSQURJQ0FMIExZUjtTbzswO09OOzs7OztOOzs7OzsKK0E0OUI7WUkgUkFESUNBTCBCQlVUO1NvOzA7T047Ozs7O047Ozs7OworQTQ5QztZSSBSQURJQ0FMIE1PUDtTbzswO09OOzs7OztOOzs7OzsKK0E0OUQ7WUkgUkFESUNBTCBZTztTbzswO09OOzs7OztOOzs7OzsKK0E0OUU7WUkgUkFESUNBTCBQVVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNDlGO1lJIFJBRElDQUwgSFhVTztTbzswO09OOzs7OztOOzs7OzsKK0E0QTA7WUkgUkFESUNBTCBUQVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNEExO1lJIFJBRElDQUwgR0E7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNEEyO1lJIFJBRElDQUwgWlVQO1NvOzA7T047Ozs7O047Ozs7OworQTRBMztZSSBSQURJQ0FMIENZVDtTbzswO09OOzs7OztOOzs7OzsKK0E0QTQ7WUkgUkFESUNBTCBERFVSO1NvOzA7T047Ozs7O047Ozs7OworQTRBNTtZSSBSQURJQ0FMIEJVUjtTbzswO09OOzs7OztOOzs7OzsKK0E0QTY7WUkgUkFESUNBTCBHR1VPO1NvOzA7T047Ozs7O047Ozs7OworQTRBNztZSSBSQURJQ0FMIE5ZT1A7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNEE4O1lJIFJBRElDQUwgVFU7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNEE5O1lJIFJBRElDQUwgT1A7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNEFBO1lJIFJBRElDQUwgSkpVVDtTbzswO09OOzs7OztOOzs7OzsKK0E0QUI7WUkgUkFESUNBTCBaT1Q7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNEFDO1lJIFJBRElDQUwgUFlUO1NvOzA7T047Ozs7O047Ozs7OworQTRBRDtZSSBSQURJQ0FMIEhNTztTbzswO09OOzs7OztOOzs7OzsKK0E0QUU7WUkgUkFESUNBTCBZSVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNEFGO1lJIFJBRElDQUwgVlVSO1NvOzA7T047Ozs7O047Ozs7OworQTRCMDtZSSBSQURJQ0FMIFNIWTtTbzswO09OOzs7OztOOzs7OzsKK0E0QjE7WUkgUkFESUNBTCBWRVA7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNEIyO1lJIFJBRElDQUwgWkE7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNEIzO1lJIFJBRElDQUwgSk87U287MDtPTjs7Ozs7Tjs7Ozs7CitBNEI0O1lJIFJBRElDQUwgTlpVUDtTbzswO09OOzs7OztOOzs7OzsKK0E0QjU7WUkgUkFESUNBTCBKSlk7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNEI2O1lJIFJBRElDQUwgR09UO1NvOzA7T047Ozs7O047Ozs7OworQTRCNztZSSBSQURJQ0FMIEpKSUU7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNEI4O1lJIFJBRElDQUwgV087U287MDtPTjs7Ozs7Tjs7Ozs7CitBNEI5O1lJIFJBRElDQUwgRFU7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNEJBO1lJIFJBRElDQUwgU0hVUjtTbzswO09OOzs7OztOOzs7OzsKK0E0QkI7WUkgUkFESUNBTCBMSUU7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNEJDO1lJIFJBRElDQUwgQ1k7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNEJEO1lJIFJBRElDQUwgQ1VPUDtTbzswO09OOzs7OztOOzs7OzsKK0E0QkU7WUkgUkFESUNBTCBDSVA7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNEJGO1lJIFJBRElDQUwgSFhPUDtTbzswO09OOzs7OztOOzs7OzsKK0E0QzA7WUkgUkFESUNBTCBTSEFUO1NvOzA7T047Ozs7O047Ozs7OworQTRDMTtZSSBSQURJQ0FMIFpVUjtTbzswO09OOzs7OztOOzs7OzsKK0E0QzI7WUkgUkFESUNBTCBTSE9QO1NvOzA7T047Ozs7O047Ozs7OworQTRDMztZSSBSQURJQ0FMIENIRTtTbzswO09OOzs7OztOOzs7OzsKK0E0QzQ7WUkgUkFESUNBTCBaWklFVDtTbzswO09OOzs7OztOOzs7OzsKK0E0QzU7WUkgUkFESUNBTCBOQklFO1NvOzA7T047Ozs7O047Ozs7OworQTRDNjtZSSBSQURJQ0FMIEtFO1NvOzA7T047Ozs7O047Ozs7OworQUMwMDs8SGFuZ3VsIFN5bGxhYmxlLCBGaXJzdD47TG87MDtMOzs7OztOOzs7OzsKK0Q3QTM7PEhhbmd1bCBTeWxsYWJsZSwgTGFzdD47TG87MDtMOzs7OztOOzs7OzsKK0Q4MDA7PE5vbiBQcml2YXRlIFVzZSBIaWdoIFN1cnJvZ2F0ZSwgRmlyc3Q+O0NzOzA7TDs7Ozs7Tjs7Ozs7CitEQjdGOzxOb24gUHJpdmF0ZSBVc2UgSGlnaCBTdXJyb2dhdGUsIExhc3Q+O0NzOzA7TDs7Ozs7Tjs7Ozs7CitEQjgwOzxQcml2YXRlIFVzZSBIaWdoIFN1cnJvZ2F0ZSwgRmlyc3Q+O0NzOzA7TDs7Ozs7Tjs7Ozs7CitEQkZGOzxQcml2YXRlIFVzZSBIaWdoIFN1cnJvZ2F0ZSwgTGFzdD47Q3M7MDtMOzs7OztOOzs7OzsKK0RDMDA7PExvdyBTdXJyb2dhdGUsIEZpcnN0PjtDczswO0w7Ozs7O047Ozs7OworREZGRjs8TG93IFN1cnJvZ2F0ZSwgTGFzdD47Q3M7MDtMOzs7OztOOzs7OzsKK0UwMDA7PFByaXZhdGUgVXNlLCBGaXJzdD47Q287MDtMOzs7OztOOzs7OzsKK0Y4RkY7PFByaXZhdGUgVXNlLCBMYXN0PjtDbzswO0w7Ozs7O047Ozs7OworRjkwMDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwMDtMbzswO0w7OEM0ODs7OztOOzs7OzsKK0Y5MDE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MDE7TG87MDtMOzY2RjQ7Ozs7Tjs7Ozs7CitGOTAyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTAyO0xvOzA7TDs4RUNBOzs7O047Ozs7OworRjkwMztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwMztMbzswO0w7OENDODs7OztOOzs7OzsKK0Y5MDQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MDQ7TG87MDtMOzZFRDE7Ozs7Tjs7Ozs7CitGOTA1O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTA1O0xvOzA7TDs0RTMyOzs7O047Ozs7OworRjkwNjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwNjtMbzswO0w7NTNFNTs7OztOOzs7OzsKK0Y5MDc7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MDc7TG87MDtMOzlGOUM7Ozs7Tjs7Ozs7CitGOTA4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTA4O0xvOzA7TDs5RjlDOzs7O047Ozs7OworRjkwOTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwOTtMbzswO0w7NTk1MTs7OztOOzs7OzsKK0Y5MEE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MEE7TG87MDtMOzkxRDE7Ozs7Tjs7Ozs7CitGOTBCO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTBCO0xvOzA7TDs1NTg3Ozs7O047Ozs7OworRjkwQztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwQztMbzswO0w7NTk0ODs7OztOOzs7OzsKK0Y5MEQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MEQ7TG87MDtMOzYxRjY7Ozs7Tjs7Ozs7CitGOTBFO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTBFO0xvOzA7TDs3NjY5Ozs7O047Ozs7OworRjkwRjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwRjtMbzswO0w7N0Y4NTs7OztOOzs7OzsKK0Y5MTA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MTA7TG87MDtMOzg2M0Y7Ozs7Tjs7Ozs7CitGOTExO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTExO0xvOzA7TDs4N0JBOzs7O047Ozs7OworRjkxMjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxMjtMbzswO0w7ODhGODs7OztOOzs7OzsKK0Y5MTM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MTM7TG87MDtMOzkwOEY7Ozs7Tjs7Ozs7CitGOTE0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTE0O0xvOzA7TDs2QTAyOzs7O047Ozs7OworRjkxNTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxNTtMbzswO0w7NkQxQjs7OztOOzs7OzsKK0Y5MTY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MTY7TG87MDtMOzcwRDk7Ozs7Tjs7Ozs7CitGOTE3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTE3O0xvOzA7TDs3M0RFOzs7O047Ozs7OworRjkxODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxODtMbzswO0w7ODQzRDs7OztOOzs7OzsKK0Y5MTk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MTk7TG87MDtMOzkxNkE7Ozs7Tjs7Ozs7CitGOTFBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTFBO0xvOzA7TDs5OUYxOzs7O047Ozs7OworRjkxQjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxQjtMbzswO0w7NEU4Mjs7OztOOzs7OzsKK0Y5MUM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MUM7TG87MDtMOzUzNzU7Ozs7Tjs7Ozs7CitGOTFEO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTFEO0xvOzA7TDs2QjA0Ozs7O047Ozs7OworRjkxRTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxRTtMbzswO0w7NzIxQjs7OztOOzs7OzsKK0Y5MUY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MUY7TG87MDtMOzg2MkQ7Ozs7Tjs7Ozs7CitGOTIwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTIwO0xvOzA7TDs5RTFFOzs7O047Ozs7OworRjkyMTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyMTtMbzswO0w7NUQ1MDs7OztOOzs7OzsKK0Y5MjI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MjI7TG87MDtMOzZGRUI7Ozs7Tjs7Ozs7CitGOTIzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTIzO0xvOzA7TDs4NUNEOzs7O047Ozs7OworRjkyNDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyNDtMbzswO0w7ODk2NDs7OztOOzs7OzsKK0Y5MjU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MjU7TG87MDtMOzYyQzk7Ozs7Tjs7Ozs7CitGOTI2O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTI2O0xvOzA7TDs4MUQ4Ozs7O047Ozs7OworRjkyNztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyNztMbzswO0w7ODgxRjs7OztOOzs7OzsKK0Y5Mjg7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Mjg7TG87MDtMOzVFQ0E7Ozs7Tjs7Ozs7CitGOTI5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTI5O0xvOzA7TDs2NzE3Ozs7O047Ozs7OworRjkyQTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyQTtMbzswO0w7NkQ2QTs7OztOOzs7OzsKK0Y5MkI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MkI7TG87MDtMOzcyRkM7Ozs7Tjs7Ozs7CitGOTJDO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTJDO0xvOzA7TDs5MENFOzs7O047Ozs7OworRjkyRDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyRDtMbzswO0w7NEY4Njs7OztOOzs7OzsKK0Y5MkU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MkU7TG87MDtMOzUxQjc7Ozs7Tjs7Ozs7CitGOTJGO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTJGO0xvOzA7TDs1MkRFOzs7O047Ozs7OworRjkzMDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzMDtMbzswO0w7NjRDNDs7OztOOzs7OzsKK0Y5MzE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MzE7TG87MDtMOzZBRDM7Ozs7Tjs7Ozs7CitGOTMyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTMyO0xvOzA7TDs3MjEwOzs7O047Ozs7OworRjkzMztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzMztMbzswO0w7NzZFNzs7OztOOzs7OzsKK0Y5MzQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MzQ7TG87MDtMOzgwMDE7Ozs7Tjs7Ozs7CitGOTM1O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTM1O0xvOzA7TDs4NjA2Ozs7O047Ozs7OworRjkzNjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzNjtMbzswO0w7ODY1Qzs7OztOOzs7OzsKK0Y5Mzc7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Mzc7TG87MDtMOzhERUY7Ozs7Tjs7Ozs7CitGOTM4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTM4O0xvOzA7TDs5NzMyOzs7O047Ozs7OworRjkzOTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzOTtMbzswO0w7OUI2Rjs7OztOOzs7OzsKK0Y5M0E7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5M0E7TG87MDtMOzlERkE7Ozs7Tjs7Ozs7CitGOTNCO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTNCO0xvOzA7TDs3ODhDOzs7O047Ozs7OworRjkzQztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzQztMbzswO0w7Nzk3Rjs7OztOOzs7OzsKK0Y5M0Q7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5M0Q7TG87MDtMOzdEQTA7Ozs7Tjs7Ozs7CitGOTNFO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTNFO0xvOzA7TDs4M0M5Ozs7O047Ozs7OworRjkzRjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzRjtMbzswO0w7OTMwNDs7OztOOzs7OzsKK0Y5NDA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NDA7TG87MDtMOzlFN0Y7Ozs7Tjs7Ozs7CitGOTQxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTQxO0xvOzA7TDs4QUQ2Ozs7O047Ozs7OworRjk0MjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0MjtMbzswO0w7NThERjs7OztOOzs7OzsKK0Y5NDM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NDM7TG87MDtMOzVGMDQ7Ozs7Tjs7Ozs7CitGOTQ0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTQ0O0xvOzA7TDs3QzYwOzs7O047Ozs7OworRjk0NTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0NTtMbzswO0w7ODA3RTs7OztOOzs7OzsKK0Y5NDY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NDY7TG87MDtMOzcyNjI7Ozs7Tjs7Ozs7CitGOTQ3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTQ3O0xvOzA7TDs3OENBOzs7O047Ozs7OworRjk0ODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0ODtMbzswO0w7OENDMjs7OztOOzs7OzsKK0Y5NDk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NDk7TG87MDtMOzk2Rjc7Ozs7Tjs7Ozs7CitGOTRBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTRBO0xvOzA7TDs1OEQ4Ozs7O047Ozs7OworRjk0QjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0QjtMbzswO0w7NUM2Mjs7OztOOzs7OzsKK0Y5NEM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NEM7TG87MDtMOzZBMTM7Ozs7Tjs7Ozs7CitGOTREO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTREO0xvOzA7TDs2RERBOzs7O047Ozs7OworRjk0RTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0RTtMbzswO0w7NkYwRjs7OztOOzs7OzsKK0Y5NEY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NEY7TG87MDtMOzdEMkY7Ozs7Tjs7Ozs7CitGOTUwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTUwO0xvOzA7TDs3RTM3Ozs7O047Ozs7OworRjk1MTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1MTtMbzswO0w7OTY0Qjs7OztOOzs7OzsKK0Y5NTI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NTI7TG87MDtMOzUyRDI7Ozs7Tjs7Ozs7CitGOTUzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTUzO0xvOzA7TDs4MDhCOzs7O047Ozs7OworRjk1NDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1NDtMbzswO0w7NTFEQzs7OztOOzs7OzsKK0Y5NTU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NTU7TG87MDtMOzUxQ0M7Ozs7Tjs7Ozs7CitGOTU2O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTU2O0xvOzA7TDs3QTFDOzs7O047Ozs7OworRjk1NztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1NztMbzswO0w7N0RCRTs7OztOOzs7OzsKK0Y5NTg7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NTg7TG87MDtMOzgzRjE7Ozs7Tjs7Ozs7CitGOTU5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTU5O0xvOzA7TDs5Njc1Ozs7O047Ozs7OworRjk1QTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1QTtMbzswO0w7OEI4MDs7OztOOzs7OzsKK0Y5NUI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NUI7TG87MDtMOzYyQ0Y7Ozs7Tjs7Ozs7CitGOTVDO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTVDO0xvOzA7TDs2QTAyOzs7O047Ozs7OworRjk1RDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1RDtMbzswO0w7OEFGRTs7OztOOzs7OzsKK0Y5NUU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NUU7TG87MDtMOzRFMzk7Ozs7Tjs7Ozs7CitGOTVGO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTVGO0xvOzA7TDs1QkU3Ozs7O047Ozs7OworRjk2MDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2MDtMbzswO0w7NjAxMjs7OztOOzs7OzsKK0Y5NjE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NjE7TG87MDtMOzczODc7Ozs7Tjs7Ozs7CitGOTYyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTYyO0xvOzA7TDs3NTcwOzs7O047Ozs7OworRjk2MztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2MztMbzswO0w7NTMxNzs7OztOOzs7OzsKK0Y5NjQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NjQ7TG87MDtMOzc4RkI7Ozs7Tjs7Ozs7CitGOTY1O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTY1O0xvOzA7TDs0RkJGOzs7O047Ozs7OworRjk2NjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2NjtMbzswO0w7NUZBOTs7OztOOzs7OzsKK0Y5Njc7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Njc7TG87MDtMOzRFMEQ7Ozs7Tjs7Ozs7CitGOTY4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTY4O0xvOzA7TDs2Q0NDOzs7O047Ozs7OworRjk2OTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2OTtMbzswO0w7NjU3ODs7OztOOzs7OzsKK0Y5NkE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NkE7TG87MDtMOzdEMjI7Ozs7Tjs7Ozs7CitGOTZCO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTZCO0xvOzA7TDs1M0MzOzs7O047Ozs7OworRjk2QztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2QztMbzswO0w7NTg1RTs7OztOOzs7OzsKK0Y5NkQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NkQ7TG87MDtMOzc3MDE7Ozs7Tjs7Ozs7CitGOTZFO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTZFO0xvOzA7TDs4NDQ5Ozs7O047Ozs7OworRjk2RjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2RjtMbzswO0w7OEFBQTs7OztOOzs7OzsKK0Y5NzA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NzA7TG87MDtMOzZCQkE7Ozs7Tjs7Ozs7CitGOTcxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTcxO0xvOzA7TDs4RkIwOzs7O047Ozs7OworRjk3MjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3MjtMbzswO0w7NkM4ODs7OztOOzs7OzsKK0Y5NzM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NzM7TG87MDtMOzYyRkU7Ozs7Tjs7Ozs7CitGOTc0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTc0O0xvOzA7TDs4MkU1Ozs7O047Ozs7OworRjk3NTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3NTtMbzswO0w7NjNBMDs7OztOOzs7OzsKK0Y5NzY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NzY7TG87MDtMOzc1NjU7Ozs7Tjs7Ozs7CitGOTc3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTc3O0xvOzA7TDs0RUFFOzs7O047Ozs7OworRjk3ODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3ODtMbzswO0w7NTE2OTs7OztOOzs7OzsKK0Y5Nzk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Nzk7TG87MDtMOzUxQzk7Ozs7Tjs7Ozs7CitGOTdBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTdBO0xvOzA7TDs2ODgxOzs7O047Ozs7OworRjk3QjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3QjtMbzswO0w7N0NFNzs7OztOOzs7OzsKK0Y5N0M7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5N0M7TG87MDtMOzgyNkY7Ozs7Tjs7Ozs7CitGOTdEO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTdEO0xvOzA7TDs4QUQyOzs7O047Ozs7OworRjk3RTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3RTtMbzswO0w7OTFDRjs7OztOOzs7OzsKK0Y5N0Y7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5N0Y7TG87MDtMOzUyRjU7Ozs7Tjs7Ozs7CitGOTgwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTgwO0xvOzA7TDs1NDQyOzs7O047Ozs7OworRjk4MTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4MTtMbzswO0w7NTk3Mzs7OztOOzs7OzsKK0Y5ODI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5ODI7TG87MDtMOzVFRUM7Ozs7Tjs7Ozs7CitGOTgzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTgzO0xvOzA7TDs2NUM1Ozs7O047Ozs7OworRjk4NDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4NDtMbzswO0w7NkZGRTs7OztOOzs7OzsKK0Y5ODU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5ODU7TG87MDtMOzc5MkE7Ozs7Tjs7Ozs7CitGOTg2O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTg2O0xvOzA7TDs5NUFEOzs7O047Ozs7OworRjk4NztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4NztMbzswO0w7OUE2QTs7OztOOzs7OzsKK0Y5ODg7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5ODg7TG87MDtMOzlFOTc7Ozs7Tjs7Ozs7CitGOTg5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTg5O0xvOzA7TDs5RUNFOzs7O047Ozs7OworRjk4QTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4QTtMbzswO0w7NTI5Qjs7OztOOzs7OzsKK0Y5OEI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5OEI7TG87MDtMOzY2QzY7Ozs7Tjs7Ozs7CitGOThDO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOThDO0xvOzA7TDs2Qjc3Ozs7O047Ozs7OworRjk4RDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4RDtMbzswO0w7OEY2Mjs7OztOOzs7OzsKK0Y5OEU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5OEU7TG87MDtMOzVFNzQ7Ozs7Tjs7Ozs7CitGOThGO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOThGO0xvOzA7TDs2MTkwOzs7O047Ozs7OworRjk5MDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5MDtMbzswO0w7NjIwMDs7OztOOzs7OzsKK0Y5OTE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5OTE7TG87MDtMOzY0OUE7Ozs7Tjs7Ozs7CitGOTkyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTkyO0xvOzA7TDs2RjIzOzs7O047Ozs7OworRjk5MztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5MztMbzswO0w7NzE0OTs7OztOOzs7OzsKK0Y5OTQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5OTQ7TG87MDtMOzc0ODk7Ozs7Tjs7Ozs7CitGOTk1O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTk1O0xvOzA7TDs3OUNBOzs7O047Ozs7OworRjk5NjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5NjtMbzswO0w7N0RGNDs7OztOOzs7OzsKK0Y5OTc7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5OTc7TG87MDtMOzgwNkY7Ozs7Tjs7Ozs7CitGOTk4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTk4O0xvOzA7TDs4RjI2Ozs7O047Ozs7OworRjk5OTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5OTtMbzswO0w7ODRFRTs7OztOOzs7OzsKK0Y5OUE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5OUE7TG87MDtMOzkwMjM7Ozs7Tjs7Ozs7CitGOTlCO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTlCO0xvOzA7TDs5MzRBOzs7O047Ozs7OworRjk5QztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5QztMbzswO0w7NTIxNzs7OztOOzs7OzsKK0Y5OUQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5OUQ7TG87MDtMOzUyQTM7Ozs7Tjs7Ozs7CitGOTlFO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTlFO0xvOzA7TDs1NEJEOzs7O047Ozs7OworRjk5RjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5RjtMbzswO0w7NzBDODs7OztOOzs7OzsKK0Y5QTA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QTA7TG87MDtMOzg4QzI7Ozs7Tjs7Ozs7CitGOUExO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUExO0xvOzA7TDs4QUFBOzs7O047Ozs7OworRjlBMjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBMjtMbzswO0w7NUVDOTs7OztOOzs7OzsKK0Y5QTM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QTM7TG87MDtMOzVGRjU7Ozs7Tjs7Ozs7CitGOUE0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUE0O0xvOzA7TDs2MzdCOzs7O047Ozs7OworRjlBNTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBNTtMbzswO0w7NkJBRTs7OztOOzs7OzsKK0Y5QTY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QTY7TG87MDtMOzdDM0U7Ozs7Tjs7Ozs7CitGOUE3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUE3O0xvOzA7TDs3Mzc1Ozs7O047Ozs7OworRjlBODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBODtMbzswO0w7NEVFNDs7OztOOzs7OzsKK0Y5QTk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QTk7TG87MDtMOzU2Rjk7Ozs7Tjs7Ozs7CitGOUFBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUFBO0xvOzA7TDs1QkU3Ozs7O047Ozs7OworRjlBQjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBQjtMbzswO0w7NURCQTs7OztOOzs7OzsKK0Y5QUM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QUM7TG87MDtMOzYwMUM7Ozs7Tjs7Ozs7CitGOUFEO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUFEO0xvOzA7TDs3M0IyOzs7O047Ozs7OworRjlBRTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBRTtMbzswO0w7NzQ2OTs7OztOOzs7OzsKK0Y5QUY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QUY7TG87MDtMOzdGOUE7Ozs7Tjs7Ozs7CitGOUIwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUIwO0xvOzA7TDs4MDQ2Ozs7O047Ozs7OworRjlCMTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCMTtMbzswO0w7OTIzNDs7OztOOzs7OzsKK0Y5QjI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QjI7TG87MDtMOzk2RjY7Ozs7Tjs7Ozs7CitGOUIzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUIzO0xvOzA7TDs5NzQ4Ozs7O047Ozs7OworRjlCNDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCNDtMbzswO0w7OTgxODs7OztOOzs7OzsKK0Y5QjU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QjU7TG87MDtMOzRGOEI7Ozs7Tjs7Ozs7CitGOUI2O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUI2O0xvOzA7TDs3OUFFOzs7O047Ozs7OworRjlCNztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCNztMbzswO0w7OTFCNDs7OztOOzs7OzsKK0Y5Qjg7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Qjg7TG87MDtMOzk2Qjg7Ozs7Tjs7Ozs7CitGOUI5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUI5O0xvOzA7TDs2MEUxOzs7O047Ozs7OworRjlCQTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCQTtMbzswO0w7NEU4Njs7OztOOzs7OzsKK0Y5QkI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QkI7TG87MDtMOzUwREE7Ozs7Tjs7Ozs7CitGOUJDO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUJDO0xvOzA7TDs1QkVFOzs7O047Ozs7OworRjlCRDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCRDtMbzswO0w7NUMzRjs7OztOOzs7OzsKK0Y5QkU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QkU7TG87MDtMOzY1OTk7Ozs7Tjs7Ozs7CitGOUJGO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUJGO0xvOzA7TDs2QTAyOzs7O047Ozs7OworRjlDMDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDMDtMbzswO0w7NzFDRTs7OztOOzs7OzsKK0Y5QzE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QzE7TG87MDtMOzc2NDI7Ozs7Tjs7Ozs7CitGOUMyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUMyO0xvOzA7TDs4NEZDOzs7O047Ozs7OworRjlDMztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDMztMbzswO0w7OTA3Qzs7OztOOzs7OzsKK0Y5QzQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QzQ7TG87MDtMOzlGOEQ7Ozs7Tjs7Ozs7CitGOUM1O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUM1O0xvOzA7TDs2Njg4Ozs7O047Ozs7OworRjlDNjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDNjtMbzswO0w7OTYyRTs7OztOOzs7OzsKK0Y5Qzc7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Qzc7TG87MDtMOzUyODk7Ozs7Tjs7Ozs7CitGOUM4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUM4O0xvOzA7TDs2NzdCOzs7O047Ozs7OworRjlDOTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDOTtMbzswO0w7NjdGMzs7OztOOzs7OzsKK0Y5Q0E7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Q0E7TG87MDtMOzZENDE7Ozs7Tjs7Ozs7CitGOUNCO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUNCO0xvOzA7TDs2RTlDOzs7O047Ozs7OworRjlDQztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDQztMbzswO0w7NzQwOTs7OztOOzs7OzsKK0Y5Q0Q7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Q0Q7TG87MDtMOzc1NTk7Ozs7Tjs7Ozs7CitGOUNFO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUNFO0xvOzA7TDs3ODZCOzs7O047Ozs7OworRjlDRjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDRjtMbzswO0w7N0QxMDs7OztOOzs7OzsKK0Y5RDA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RDA7TG87MDtMOzk4NUU7Ozs7Tjs7Ozs7CitGOUQxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUQxO0xvOzA7TDs1MTZEOzs7O047Ozs7OworRjlEMjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlEMjtMbzswO0w7NjIyRTs7OztOOzs7OzsKK0Y5RDM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RDM7TG87MDtMOzk2Nzg7Ozs7Tjs7Ozs7CitGOUQ0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUQ0O0xvOzA7TDs1MDJCOzs7O047Ozs7OworRjlENTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlENTtMbzswO0w7NUQxOTs7OztOOzs7OzsKK0Y5RDY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RDY7TG87MDtMOzZERUE7Ozs7Tjs7Ozs7CitGOUQ3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUQ3O0xvOzA7TDs4RjJBOzs7O047Ozs7OworRjlEODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlEODtMbzswO0w7NUY4Qjs7OztOOzs7OzsKK0Y5RDk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RDk7TG87MDtMOzYxNDQ7Ozs7Tjs7Ozs7CitGOURBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOURBO0xvOzA7TDs2ODE3Ozs7O047Ozs7OworRjlEQjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlEQjtMbzswO0w7NzM4Nzs7OztOOzs7OzsKK0Y5REM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5REM7TG87MDtMOzk2ODY7Ozs7Tjs7Ozs7CitGOUREO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUREO0xvOzA7TDs1MjI5Ozs7O047Ozs7OworRjlERTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlERTtMbzswO0w7NTQwRjs7OztOOzs7OzsKK0Y5REY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5REY7TG87MDtMOzVDNjU7Ozs7Tjs7Ozs7CitGOUUwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUUwO0xvOzA7TDs2NjEzOzs7O047Ozs7OworRjlFMTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFMTtMbzswO0w7Njc0RTs7OztOOzs7OzsKK0Y5RTI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RTI7TG87MDtMOzY4QTg7Ozs7Tjs7Ozs7CitGOUUzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUUzO0xvOzA7TDs2Q0U1Ozs7O047Ozs7OworRjlFNDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFNDtMbzswO0w7NzQwNjs7OztOOzs7OzsKK0Y5RTU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RTU7TG87MDtMOzc1RTI7Ozs7Tjs7Ozs7CitGOUU2O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUU2O0xvOzA7TDs3Rjc5Ozs7O047Ozs7OworRjlFNztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFNztMbzswO0w7ODhDRjs7OztOOzs7OzsKK0Y5RTg7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RTg7TG87MDtMOzg4RTE7Ozs7Tjs7Ozs7CitGOUU5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUU5O0xvOzA7TDs5MUNDOzs7O047Ozs7OworRjlFQTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFQTtMbzswO0w7OTZFMjs7OztOOzs7OzsKK0Y5RUI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RUI7TG87MDtMOzUzM0Y7Ozs7Tjs7Ozs7CitGOUVDO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUVDO0xvOzA7TDs2RUJBOzs7O047Ozs7OworRjlFRDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFRDtMbzswO0w7NTQxRDs7OztOOzs7OzsKK0Y5RUU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RUU7TG87MDtMOzcxRDA7Ozs7Tjs7Ozs7CitGOUVGO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUVGO0xvOzA7TDs3NDk4Ozs7O047Ozs7OworRjlGMDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGMDtMbzswO0w7ODVGQTs7OztOOzs7OzsKK0Y5RjE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RjE7TG87MDtMOzk2QTM7Ozs7Tjs7Ozs7CitGOUYyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUYyO0xvOzA7TDs5QzU3Ozs7O047Ozs7OworRjlGMztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGMztMbzswO0w7OUU5Rjs7OztOOzs7OzsKK0Y5RjQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RjQ7TG87MDtMOzY3OTc7Ozs7Tjs7Ozs7CitGOUY1O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUY1O0xvOzA7TDs2RENCOzs7O047Ozs7OworRjlGNjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGNjtMbzswO0w7ODFFODs7OztOOzs7OzsKK0Y5Rjc7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Rjc7TG87MDtMOzdBQ0I7Ozs7Tjs7Ozs7CitGOUY4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUY4O0xvOzA7TDs3QjIwOzs7O047Ozs7OworRjlGOTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGOTtMbzswO0w7N0M5Mjs7OztOOzs7OzsKK0Y5RkE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RkE7TG87MDtMOzcyQzA7Ozs7Tjs7Ozs7CitGOUZCO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUZCO0xvOzA7TDs3MDk5Ozs7O047Ozs7OworRjlGQztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGQztMbzswO0w7OEI1ODs7OztOOzs7OzsKK0Y5RkQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RkQ7TG87MDtMOzRFQzA7Ozs7Tjs7Ozs7CitGOUZFO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUZFO0xvOzA7TDs4MzM2Ozs7O047Ozs7OworRjlGRjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGRjtMbzswO0w7NTIzQTs7OztOOzs7OzsKK0ZBMDA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMDA7TG87MDtMOzUyMDc7Ozs7Tjs7Ozs7CitGQTAxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTAxO0xvOzA7TDs1RUE2Ozs7O047Ozs7OworRkEwMjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwMjtMbzswO0w7NjJEMzs7OztOOzs7OzsKK0ZBMDM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMDM7TG87MDtMOzdDRDY7Ozs7Tjs7Ozs7CitGQTA0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTA0O0xvOzA7TDs1Qjg1Ozs7O047Ozs7OworRkEwNTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwNTtMbzswO0w7NkQxRTs7OztOOzs7OzsKK0ZBMDY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMDY7TG87MDtMOzY2QjQ7Ozs7Tjs7Ozs7CitGQTA3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTA3O0xvOzA7TDs4RjNCOzs7O047Ozs7OworRkEwODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwODtMbzswO0w7ODg0Qzs7OztOOzs7OzsKK0ZBMDk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMDk7TG87MDtMOzk2NEQ7Ozs7Tjs7Ozs7CitGQTBBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTBBO0xvOzA7TDs4OThCOzs7O047Ozs7OworRkEwQjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwQjtMbzswO0w7NUVEMzs7OztOOzs7OzsKK0ZBMEM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMEM7TG87MDtMOzUxNDA7Ozs7Tjs7Ozs7CitGQTBEO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTBEO0xvOzA7TDs1NUMwOzs7O047Ozs7OworRkEwRTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwRTtMbzswO0w7Ozs7O047Ozs7OworRkEwRjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwRjtMbzswO0w7Ozs7O047Ozs7OworRkExMDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExMDtMbzswO0w7NTg1QTs7OztOOzs7OzsKK0ZBMTE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMTE7TG87MDtMOzs7OztOOzs7OzsKK0ZBMTI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMTI7TG87MDtMOzY2NzQ7Ozs7Tjs7Ozs7CitGQTEzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTEzO0xvOzA7TDs7Ozs7Tjs7Ozs7CitGQTE0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTE0O0xvOzA7TDs7Ozs7Tjs7Ozs7CitGQTE1O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTE1O0xvOzA7TDs1MURFOzs7O047Ozs7OworRkExNjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExNjtMbzswO0w7NzMyQTs7OztOOzs7OzsKK0ZBMTc7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMTc7TG87MDtMOzc2Q0E7Ozs7Tjs7Ozs7CitGQTE4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTE4O0xvOzA7TDs3OTNDOzs7O047Ozs7OworRkExOTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExOTtMbzswO0w7Nzk1RTs7OztOOzs7OzsKK0ZBMUE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMUE7TG87MDtMOzc5NjU7Ozs7Tjs7Ozs7CitGQTFCO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTFCO0xvOzA7TDs3OThGOzs7O047Ozs7OworRkExQztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExQztMbzswO0w7OTc1Njs7OztOOzs7OzsKK0ZBMUQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMUQ7TG87MDtMOzdDQkU7Ozs7Tjs7Ozs7CitGQTFFO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTFFO0xvOzA7TDs3RkJEOzs7O047Ozs7OworRkExRjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExRjtMbzswO0w7Ozs7O047Oyo7OzsKK0ZBMjA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMjA7TG87MDtMOzg2MTI7Ozs7Tjs7Ozs7CitGQTIxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTIxO0xvOzA7TDs7Ozs7Tjs7Ozs7CitGQTIyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTIyO0xvOzA7TDs4QUY4Ozs7O047Ozs7OworRkEyMztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEyMztMbzswO0w7Ozs7O047Oyo7OzsKK0ZBMjQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMjQ7TG87MDtMOzs7OztOOzs7OzsKK0ZBMjU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMjU7TG87MDtMOzkwMzg7Ozs7Tjs7Ozs7CitGQTI2O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTI2O0xvOzA7TDs5MEZEOzs7O047Ozs7OworRkEyNztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEyNztMbzswO0w7Ozs7O047Ozs7OworRkEyODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEyODtMbzswO0w7Ozs7O047Ozs7OworRkEyOTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEyOTtMbzswO0w7Ozs7O047Ozs7OworRkEyQTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEyQTtMbzswO0w7OThFRjs7OztOOzs7OzsKK0ZBMkI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMkI7TG87MDtMOzk4RkM7Ozs7Tjs7Ozs7CitGQTJDO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTJDO0xvOzA7TDs5OTI4Ozs7O047Ozs7OworRkEyRDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEyRDtMbzswO0w7OURCNDs7OztOOzs7OzsKK0ZBMzA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMzA7TG87MDtMOzRGQUU7Ozs7Tjs7Ozs7CitGQTMxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTMxO0xvOzA7TDs1MEU3Ozs7O047Ozs7OworRkEzMjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEzMjtMbzswO0w7NTE0RDs7OztOOzs7OzsKK0ZBMzM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMzM7TG87MDtMOzUyQzk7Ozs7Tjs7Ozs7CitGQTM0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTM0O0xvOzA7TDs1MkU0Ozs7O047Ozs7OworRkEzNTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEzNTtMbzswO0w7NTM1MTs7OztOOzs7OzsKK0ZBMzY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMzY7TG87MDtMOzU1OUQ7Ozs7Tjs7Ozs7CitGQTM3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTM3O0xvOzA7TDs1NjA2Ozs7O047Ozs7OworRkEzODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEzODtMbzswO0w7NTY2ODs7OztOOzs7OzsKK0ZBMzk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMzk7TG87MDtMOzU4NDA7Ozs7Tjs7Ozs7CitGQTNBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTNBO0xvOzA7TDs1OEE4Ozs7O047Ozs7OworRkEzQjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEzQjtMbzswO0w7NUM2NDs7OztOOzs7OzsKK0ZBM0M7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBM0M7TG87MDtMOzVDNkU7Ozs7Tjs7Ozs7CitGQTNEO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTNEO0xvOzA7TDs2MDk0Ozs7O047Ozs7OworRkEzRTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEzRTtMbzswO0w7NjE2ODs7OztOOzs7OzsKK0ZBM0Y7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBM0Y7TG87MDtMOzYxOEU7Ozs7Tjs7Ozs7CitGQTQwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTQwO0xvOzA7TDs2MUYyOzs7O047Ozs7OworRkE0MTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkE0MTtMbzswO0w7NjU0Rjs7OztOOzs7OzsKK0ZBNDI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBNDI7TG87MDtMOzY1RTI7Ozs7Tjs7Ozs7CitGQTQzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTQzO0xvOzA7TDs2NjkxOzs7O047Ozs7OworRkE0NDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkE0NDtMbzswO0w7Njg4NTs7OztOOzs7OzsKK0ZBNDU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBNDU7TG87MDtMOzZENzc7Ozs7Tjs7Ozs7CitGQTQ2O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTQ2O0xvOzA7TDs2RTFBOzs7O047Ozs7OworRkE0NztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkE0NztMbzswO0w7NkYyMjs7OztOOzs7OzsKK0ZBNDg7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBNDg7TG87MDtMOzcxNkU7Ozs7Tjs7Ozs7CitGQTQ5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTQ5O0xvOzA7TDs3MjJCOzs7O047Ozs7OworRkE0QTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkE0QTtMbzswO0w7NzQyMjs7OztOOzs7OzsKK0ZBNEI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBNEI7TG87MDtMOzc4OTE7Ozs7Tjs7Ozs7CitGQTRDO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTRDO0xvOzA7TDs3OTNFOzs7O047Ozs7OworRkE0RDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkE0RDtMbzswO0w7Nzk0OTs7OztOOzs7OzsKK0ZBNEU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBNEU7TG87MDtMOzc5NDg7Ozs7Tjs7Ozs7CitGQTRGO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTRGO0xvOzA7TDs3OTUwOzs7O047Ozs7OworRkE1MDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkE1MDtMbzswO0w7Nzk1Njs7OztOOzs7OzsKK0ZBNTE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBNTE7TG87MDtMOzc5NUQ7Ozs7Tjs7Ozs7CitGQTUyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTUyO0xvOzA7TDs3OThEOzs7O047Ozs7OworRkE1MztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkE1MztMbzswO0w7Nzk4RTs7OztOOzs7OzsKK0ZBNTQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBNTQ7TG87MDtMOzdBNDA7Ozs7Tjs7Ozs7CitGQTU1O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTU1O0xvOzA7TDs3QTgxOzs7O047Ozs7OworRkE1NjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkE1NjtMbzswO0w7N0JDMDs7OztOOzs7OzsKK0ZBNTc7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBNTc7TG87MDtMOzdERjQ7Ozs7Tjs7Ozs7CitGQTU4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTU4O0xvOzA7TDs3RTA5Ozs7O047Ozs7OworRkE1OTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkE1OTtMbzswO0w7N0U0MTs7OztOOzs7OzsKK0ZBNUE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBNUE7TG87MDtMOzdGNzI7Ozs7Tjs7Ozs7CitGQTVCO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTVCO0xvOzA7TDs4MDA1Ozs7O047Ozs7OworRkE1QztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkE1QztMbzswO0w7ODFFRDs7OztOOzs7OzsKK0ZBNUQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBNUQ7TG87MDtMOzgyNzk7Ozs7Tjs7Ozs7CitGQTVFO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTVFO0xvOzA7TDs4Mjc5Ozs7O047Ozs7OworRkE1RjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkE1RjtMbzswO0w7ODQ1Nzs7OztOOzs7OzsKK0ZBNjA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBNjA7TG87MDtMOzg5MTA7Ozs7Tjs7Ozs7CitGQTYxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTYxO0xvOzA7TDs4OTk2Ozs7O047Ozs7OworRkE2MjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkE2MjtMbzswO0w7OEIwMTs7OztOOzs7OzsKK0ZBNjM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBNjM7TG87MDtMOzhCMzk7Ozs7Tjs7Ozs7CitGQTY0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTY0O0xvOzA7TDs4Q0QzOzs7O047Ozs7OworRkE2NTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkE2NTtMbzswO0w7OEQwODs7OztOOzs7OzsKK0ZBNjY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBNjY7TG87MDtMOzhGQjY7Ozs7Tjs7Ozs7CitGQTY3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTY3O0xvOzA7TDs5MDM4Ozs7O047Ozs7OworRkE2ODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkE2ODtMbzswO0w7OTZFMzs7OztOOzs7OzsKK0ZBNjk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBNjk7TG87MDtMOzk3RkY7Ozs7Tjs7Ozs7CitGQTZBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTZBO0xvOzA7TDs5ODNCOzs7O047Ozs7OworRkIwMDtMQVRJTiBTTUFMTCBMSUdBVFVSRSBGRjtMbDswO0w7PGNvbXBhdD4gMDA2NiAwMDY2Ozs7O047Ozs7OworRkIwMTtMQVRJTiBTTUFMTCBMSUdBVFVSRSBGSTtMbDswO0w7PGNvbXBhdD4gMDA2NiAwMDY5Ozs7O047Ozs7OworRkIwMjtMQVRJTiBTTUFMTCBMSUdBVFVSRSBGTDtMbDswO0w7PGNvbXBhdD4gMDA2NiAwMDZDOzs7O047Ozs7OworRkIwMztMQVRJTiBTTUFMTCBMSUdBVFVSRSBGRkk7TGw7MDtMOzxjb21wYXQ+IDAwNjYgMDA2NiAwMDY5Ozs7O047Ozs7OworRkIwNDtMQVRJTiBTTUFMTCBMSUdBVFVSRSBGRkw7TGw7MDtMOzxjb21wYXQ+IDAwNjYgMDA2NiAwMDZDOzs7O047Ozs7OworRkIwNTtMQVRJTiBTTUFMTCBMSUdBVFVSRSBMT05HIFMgVDtMbDswO0w7PGNvbXBhdD4gMDE3RiAwMDc0Ozs7O047Ozs7OworRkIwNjtMQVRJTiBTTUFMTCBMSUdBVFVSRSBTVDtMbDswO0w7PGNvbXBhdD4gMDA3MyAwMDc0Ozs7O047Ozs7OworRkIxMztBUk1FTklBTiBTTUFMTCBMSUdBVFVSRSBNRU4gTk9XO0xsOzA7TDs8Y29tcGF0PiAwNTc0IDA1NzY7Ozs7Tjs7Ozs7CitGQjE0O0FSTUVOSUFOIFNNQUxMIExJR0FUVVJFIE1FTiBFQ0g7TGw7MDtMOzxjb21wYXQ+IDA1NzQgMDU2NTs7OztOOzs7OzsKK0ZCMTU7QVJNRU5JQU4gU01BTEwgTElHQVRVUkUgTUVOIElOSTtMbDswO0w7PGNvbXBhdD4gMDU3NCAwNTZCOzs7O047Ozs7OworRkIxNjtBUk1FTklBTiBTTUFMTCBMSUdBVFVSRSBWRVcgTk9XO0xsOzA7TDs8Y29tcGF0PiAwNTdFIDA1NzY7Ozs7Tjs7Ozs7CitGQjE3O0FSTUVOSUFOIFNNQUxMIExJR0FUVVJFIE1FTiBYRUg7TGw7MDtMOzxjb21wYXQ+IDA1NzQgMDU2RDs7OztOOzs7OzsKK0ZCMUQ7SEVCUkVXIExFVFRFUiBZT0QgV0lUSCBISVJJUTtMbzswO1I7MDVEOSAwNUI0Ozs7O047Ozs7OworRkIxRTtIRUJSRVcgUE9JTlQgSlVERU8tU1BBTklTSCBWQVJJS0E7TW47MjY7TlNNOzs7OztOO0hFQlJFVyBQT0lOVCBWQVJJS0E7Ozs7CitGQjFGO0hFQlJFVyBMSUdBVFVSRSBZSURESVNIIFlPRCBZT0QgUEFUQUg7TG87MDtSOzA1RjIgMDVCNzs7OztOOzs7OzsKK0ZCMjA7SEVCUkVXIExFVFRFUiBBTFRFUk5BVElWRSBBWUlOO0xvOzA7Ujs8Zm9udD4gMDVFMjs7OztOOzs7OzsKK0ZCMjE7SEVCUkVXIExFVFRFUiBXSURFIEFMRUY7TG87MDtSOzxmb250PiAwNUQwOzs7O047Ozs7OworRkIyMjtIRUJSRVcgTEVUVEVSIFdJREUgREFMRVQ7TG87MDtSOzxmb250PiAwNUQzOzs7O047Ozs7OworRkIyMztIRUJSRVcgTEVUVEVSIFdJREUgSEU7TG87MDtSOzxmb250PiAwNUQ0Ozs7O047Ozs7OworRkIyNDtIRUJSRVcgTEVUVEVSIFdJREUgS0FGO0xvOzA7Ujs8Zm9udD4gMDVEQjs7OztOOzs7OzsKK0ZCMjU7SEVCUkVXIExFVFRFUiBXSURFIExBTUVEO0xvOzA7Ujs8Zm9udD4gMDVEQzs7OztOOzs7OzsKK0ZCMjY7SEVCUkVXIExFVFRFUiBXSURFIEZJTkFMIE1FTTtMbzswO1I7PGZvbnQ+IDA1REQ7Ozs7Tjs7Ozs7CitGQjI3O0hFQlJFVyBMRVRURVIgV0lERSBSRVNIO0xvOzA7Ujs8Zm9udD4gMDVFODs7OztOOzs7OzsKK0ZCMjg7SEVCUkVXIExFVFRFUiBXSURFIFRBVjtMbzswO1I7PGZvbnQ+IDA1RUE7Ozs7Tjs7Ozs7CitGQjI5O0hFQlJFVyBMRVRURVIgQUxURVJOQVRJVkUgUExVUyBTSUdOO1NtOzA7RVQ7PGZvbnQ+IDAwMkI7Ozs7Tjs7Ozs7CitGQjJBO0hFQlJFVyBMRVRURVIgU0hJTiBXSVRIIFNISU4gRE9UO0xvOzA7UjswNUU5IDA1QzE7Ozs7Tjs7Ozs7CitGQjJCO0hFQlJFVyBMRVRURVIgU0hJTiBXSVRIIFNJTiBET1Q7TG87MDtSOzA1RTkgMDVDMjs7OztOOzs7OzsKK0ZCMkM7SEVCUkVXIExFVFRFUiBTSElOIFdJVEggREFHRVNIIEFORCBTSElOIERPVDtMbzswO1I7RkI0OSAwNUMxOzs7O047Ozs7OworRkIyRDtIRUJSRVcgTEVUVEVSIFNISU4gV0lUSCBEQUdFU0ggQU5EIFNJTiBET1Q7TG87MDtSO0ZCNDkgMDVDMjs7OztOOzs7OzsKK0ZCMkU7SEVCUkVXIExFVFRFUiBBTEVGIFdJVEggUEFUQUg7TG87MDtSOzA1RDAgMDVCNzs7OztOOzs7OzsKK0ZCMkY7SEVCUkVXIExFVFRFUiBBTEVGIFdJVEggUUFNQVRTO0xvOzA7UjswNUQwIDA1Qjg7Ozs7Tjs7Ozs7CitGQjMwO0hFQlJFVyBMRVRURVIgQUxFRiBXSVRIIE1BUElRO0xvOzA7UjswNUQwIDA1QkM7Ozs7Tjs7Ozs7CitGQjMxO0hFQlJFVyBMRVRURVIgQkVUIFdJVEggREFHRVNIO0xvOzA7UjswNUQxIDA1QkM7Ozs7Tjs7Ozs7CitGQjMyO0hFQlJFVyBMRVRURVIgR0lNRUwgV0lUSCBEQUdFU0g7TG87MDtSOzA1RDIgMDVCQzs7OztOOzs7OzsKK0ZCMzM7SEVCUkVXIExFVFRFUiBEQUxFVCBXSVRIIERBR0VTSDtMbzswO1I7MDVEMyAwNUJDOzs7O047Ozs7OworRkIzNDtIRUJSRVcgTEVUVEVSIEhFIFdJVEggTUFQSVE7TG87MDtSOzA1RDQgMDVCQzs7OztOOzs7OzsKK0ZCMzU7SEVCUkVXIExFVFRFUiBWQVYgV0lUSCBEQUdFU0g7TG87MDtSOzA1RDUgMDVCQzs7OztOOzs7OzsKK0ZCMzY7SEVCUkVXIExFVFRFUiBaQVlJTiBXSVRIIERBR0VTSDtMbzswO1I7MDVENiAwNUJDOzs7O047Ozs7OworRkIzODtIRUJSRVcgTEVUVEVSIFRFVCBXSVRIIERBR0VTSDtMbzswO1I7MDVEOCAwNUJDOzs7O047Ozs7OworRkIzOTtIRUJSRVcgTEVUVEVSIFlPRCBXSVRIIERBR0VTSDtMbzswO1I7MDVEOSAwNUJDOzs7O047Ozs7OworRkIzQTtIRUJSRVcgTEVUVEVSIEZJTkFMIEtBRiBXSVRIIERBR0VTSDtMbzswO1I7MDVEQSAwNUJDOzs7O047Ozs7OworRkIzQjtIRUJSRVcgTEVUVEVSIEtBRiBXSVRIIERBR0VTSDtMbzswO1I7MDVEQiAwNUJDOzs7O047Ozs7OworRkIzQztIRUJSRVcgTEVUVEVSIExBTUVEIFdJVEggREFHRVNIO0xvOzA7UjswNURDIDA1QkM7Ozs7Tjs7Ozs7CitGQjNFO0hFQlJFVyBMRVRURVIgTUVNIFdJVEggREFHRVNIO0xvOzA7UjswNURFIDA1QkM7Ozs7Tjs7Ozs7CitGQjQwO0hFQlJFVyBMRVRURVIgTlVOIFdJVEggREFHRVNIO0xvOzA7UjswNUUwIDA1QkM7Ozs7Tjs7Ozs7CitGQjQxO0hFQlJFVyBMRVRURVIgU0FNRUtIIFdJVEggREFHRVNIO0xvOzA7UjswNUUxIDA1QkM7Ozs7Tjs7Ozs7CitGQjQzO0hFQlJFVyBMRVRURVIgRklOQUwgUEUgV0lUSCBEQUdFU0g7TG87MDtSOzA1RTMgMDVCQzs7OztOOzs7OzsKK0ZCNDQ7SEVCUkVXIExFVFRFUiBQRSBXSVRIIERBR0VTSDtMbzswO1I7MDVFNCAwNUJDOzs7O047Ozs7OworRkI0NjtIRUJSRVcgTEVUVEVSIFRTQURJIFdJVEggREFHRVNIO0xvOzA7UjswNUU2IDA1QkM7Ozs7Tjs7Ozs7CitGQjQ3O0hFQlJFVyBMRVRURVIgUU9GIFdJVEggREFHRVNIO0xvOzA7UjswNUU3IDA1QkM7Ozs7Tjs7Ozs7CitGQjQ4O0hFQlJFVyBMRVRURVIgUkVTSCBXSVRIIERBR0VTSDtMbzswO1I7MDVFOCAwNUJDOzs7O047Ozs7OworRkI0OTtIRUJSRVcgTEVUVEVSIFNISU4gV0lUSCBEQUdFU0g7TG87MDtSOzA1RTkgMDVCQzs7OztOOzs7OzsKK0ZCNEE7SEVCUkVXIExFVFRFUiBUQVYgV0lUSCBEQUdFU0g7TG87MDtSOzA1RUEgMDVCQzs7OztOOzs7OzsKK0ZCNEI7SEVCUkVXIExFVFRFUiBWQVYgV0lUSCBIT0xBTTtMbzswO1I7MDVENSAwNUI5Ozs7O047Ozs7OworRkI0QztIRUJSRVcgTEVUVEVSIEJFVCBXSVRIIFJBRkU7TG87MDtSOzA1RDEgMDVCRjs7OztOOzs7OzsKK0ZCNEQ7SEVCUkVXIExFVFRFUiBLQUYgV0lUSCBSQUZFO0xvOzA7UjswNURCIDA1QkY7Ozs7Tjs7Ozs7CitGQjRFO0hFQlJFVyBMRVRURVIgUEUgV0lUSCBSQUZFO0xvOzA7UjswNUU0IDA1QkY7Ozs7Tjs7Ozs7CitGQjRGO0hFQlJFVyBMSUdBVFVSRSBBTEVGIExBTUVEO0xvOzA7Ujs8Y29tcGF0PiAwNUQwIDA1REM7Ozs7Tjs7Ozs7CitGQjUwO0FSQUJJQyBMRVRURVIgQUxFRiBXQVNMQSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjcxOzs7O047Ozs7OworRkI1MTtBUkFCSUMgTEVUVEVSIEFMRUYgV0FTTEEgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY3MTs7OztOOzs7OzsKK0ZCNTI7QVJBQklDIExFVFRFUiBCRUVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2N0I7Ozs7Tjs7Ozs7CitGQjUzO0FSQUJJQyBMRVRURVIgQkVFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjdCOzs7O047Ozs7OworRkI1NDtBUkFCSUMgTEVUVEVSIEJFRUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2N0I7Ozs7Tjs7Ozs7CitGQjU1O0FSQUJJQyBMRVRURVIgQkVFSCBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2N0I7Ozs7Tjs7Ozs7CitGQjU2O0FSQUJJQyBMRVRURVIgUEVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2N0U7Ozs7Tjs7Ozs7CitGQjU3O0FSQUJJQyBMRVRURVIgUEVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2N0U7Ozs7Tjs7Ozs7CitGQjU4O0FSQUJJQyBMRVRURVIgUEVIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjdFOzs7O047Ozs7OworRkI1OTtBUkFCSUMgTEVUVEVSIFBFSCBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2N0U7Ozs7Tjs7Ozs7CitGQjVBO0FSQUJJQyBMRVRURVIgQkVIRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY4MDs7OztOOzs7OzsKK0ZCNUI7QVJBQklDIExFVFRFUiBCRUhFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjgwOzs7O047Ozs7OworRkI1QztBUkFCSUMgTEVUVEVSIEJFSEVIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjgwOzs7O047Ozs7OworRkI1RDtBUkFCSUMgTEVUVEVSIEJFSEVIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDY4MDs7OztOOzs7OzsKK0ZCNUU7QVJBQklDIExFVFRFUiBUVEVIRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY3QTs7OztOOzs7OzsKK0ZCNUY7QVJBQklDIExFVFRFUiBUVEVIRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY3QTs7OztOOzs7OzsKK0ZCNjA7QVJBQklDIExFVFRFUiBUVEVIRUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2N0E7Ozs7Tjs7Ozs7CitGQjYxO0FSQUJJQyBMRVRURVIgVFRFSEVIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDY3QTs7OztOOzs7OzsKK0ZCNjI7QVJBQklDIExFVFRFUiBURUhFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjdGOzs7O047Ozs7OworRkI2MztBUkFCSUMgTEVUVEVSIFRFSEVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2N0Y7Ozs7Tjs7Ozs7CitGQjY0O0FSQUJJQyBMRVRURVIgVEVIRUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2N0Y7Ozs7Tjs7Ozs7CitGQjY1O0FSQUJJQyBMRVRURVIgVEVIRUggTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjdGOzs7O047Ozs7OworRkI2NjtBUkFCSUMgTEVUVEVSIFRURUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY3OTs7OztOOzs7OzsKK0ZCNjc7QVJBQklDIExFVFRFUiBUVEVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2Nzk7Ozs7Tjs7Ozs7CitGQjY4O0FSQUJJQyBMRVRURVIgVFRFSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY3OTs7OztOOzs7OzsKK0ZCNjk7QVJBQklDIExFVFRFUiBUVEVIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDY3OTs7OztOOzs7OzsKK0ZCNkE7QVJBQklDIExFVFRFUiBWRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDZBNDs7OztOOzs7OzsKK0ZCNkI7QVJBQklDIExFVFRFUiBWRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDZBNDs7OztOOzs7OzsKK0ZCNkM7QVJBQklDIExFVFRFUiBWRUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2QTQ7Ozs7Tjs7Ozs7CitGQjZEO0FSQUJJQyBMRVRURVIgVkVIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDZBNDs7OztOOzs7OzsKK0ZCNkU7QVJBQklDIExFVFRFUiBQRUhFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNkE2Ozs7O047Ozs7OworRkI2RjtBUkFCSUMgTEVUVEVSIFBFSEVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2QTY7Ozs7Tjs7Ozs7CitGQjcwO0FSQUJJQyBMRVRURVIgUEVIRUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2QTY7Ozs7Tjs7Ozs7CitGQjcxO0FSQUJJQyBMRVRURVIgUEVIRUggTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNkE2Ozs7O047Ozs7OworRkI3MjtBUkFCSUMgTEVUVEVSIERZRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY4NDs7OztOOzs7OzsKK0ZCNzM7QVJBQklDIExFVFRFUiBEWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2ODQ7Ozs7Tjs7Ozs7CitGQjc0O0FSQUJJQyBMRVRURVIgRFlFSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY4NDs7OztOOzs7OzsKK0ZCNzU7QVJBQklDIExFVFRFUiBEWUVIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDY4NDs7OztOOzs7OzsKK0ZCNzY7QVJBQklDIExFVFRFUiBOWUVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2ODM7Ozs7Tjs7Ozs7CitGQjc3O0FSQUJJQyBMRVRURVIgTllFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjgzOzs7O047Ozs7OworRkI3ODtBUkFCSUMgTEVUVEVSIE5ZRUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2ODM7Ozs7Tjs7Ozs7CitGQjc5O0FSQUJJQyBMRVRURVIgTllFSCBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2ODM7Ozs7Tjs7Ozs7CitGQjdBO0FSQUJJQyBMRVRURVIgVENIRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY4Njs7OztOOzs7OzsKK0ZCN0I7QVJBQklDIExFVFRFUiBUQ0hFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjg2Ozs7O047Ozs7OworRkI3QztBUkFCSUMgTEVUVEVSIFRDSEVIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjg2Ozs7O047Ozs7OworRkI3RDtBUkFCSUMgTEVUVEVSIFRDSEVIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDY4Njs7OztOOzs7OzsKK0ZCN0U7QVJBQklDIExFVFRFUiBUQ0hFSEVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2ODc7Ozs7Tjs7Ozs7CitGQjdGO0FSQUJJQyBMRVRURVIgVENIRUhFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjg3Ozs7O047Ozs7OworRkI4MDtBUkFCSUMgTEVUVEVSIFRDSEVIRUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2ODc7Ozs7Tjs7Ozs7CitGQjgxO0FSQUJJQyBMRVRURVIgVENIRUhFSCBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2ODc7Ozs7Tjs7Ozs7CitGQjgyO0FSQUJJQyBMRVRURVIgRERBSEFMIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2OEQ7Ozs7Tjs7Ozs7CitGQjgzO0FSQUJJQyBMRVRURVIgRERBSEFMIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2OEQ7Ozs7Tjs7Ozs7CitGQjg0O0FSQUJJQyBMRVRURVIgREFIQUwgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY4Qzs7OztOOzs7OzsKK0ZCODU7QVJBQklDIExFVFRFUiBEQUhBTCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjhDOzs7O047Ozs7OworRkI4NjtBUkFCSUMgTEVUVEVSIERVTCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjhFOzs7O047Ozs7OworRkI4NztBUkFCSUMgTEVUVEVSIERVTCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjhFOzs7O047Ozs7OworRkI4ODtBUkFCSUMgTEVUVEVSIEREQUwgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY4ODs7OztOOzs7OzsKK0ZCODk7QVJBQklDIExFVFRFUiBEREFMIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2ODg7Ozs7Tjs7Ozs7CitGQjhBO0FSQUJJQyBMRVRURVIgSkVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2OTg7Ozs7Tjs7Ozs7CitGQjhCO0FSQUJJQyBMRVRURVIgSkVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2OTg7Ozs7Tjs7Ozs7CitGQjhDO0FSQUJJQyBMRVRURVIgUlJFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjkxOzs7O047Ozs7OworRkI4RDtBUkFCSUMgTEVUVEVSIFJSRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY5MTs7OztOOzs7OzsKK0ZCOEU7QVJBQklDIExFVFRFUiBLRUhFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNkE5Ozs7O047Ozs7OworRkI4RjtBUkFCSUMgTEVUVEVSIEtFSEVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2QTk7Ozs7Tjs7Ozs7CitGQjkwO0FSQUJJQyBMRVRURVIgS0VIRUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2QTk7Ozs7Tjs7Ozs7CitGQjkxO0FSQUJJQyBMRVRURVIgS0VIRUggTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNkE5Ozs7O047Ozs7OworRkI5MjtBUkFCSUMgTEVUVEVSIEdBRiBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNkFGOzs7O047Ozs7OworRkI5MztBUkFCSUMgTEVUVEVSIEdBRiBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNkFGOzs7O047Ozs7OworRkI5NDtBUkFCSUMgTEVUVEVSIEdBRiBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDZBRjs7OztOOzs7OzsKK0ZCOTU7QVJBQklDIExFVFRFUiBHQUYgTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNkFGOzs7O047Ozs7OworRkI5NjtBUkFCSUMgTEVUVEVSIEdVRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDZCMzs7OztOOzs7OzsKK0ZCOTc7QVJBQklDIExFVFRFUiBHVUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2QjM7Ozs7Tjs7Ozs7CitGQjk4O0FSQUJJQyBMRVRURVIgR1VFSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDZCMzs7OztOOzs7OzsKK0ZCOTk7QVJBQklDIExFVFRFUiBHVUVIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDZCMzs7OztOOzs7OzsKK0ZCOUE7QVJBQklDIExFVFRFUiBOR09FSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNkIxOzs7O047Ozs7OworRkI5QjtBUkFCSUMgTEVUVEVSIE5HT0VIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2QjE7Ozs7Tjs7Ozs7CitGQjlDO0FSQUJJQyBMRVRURVIgTkdPRUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2QjE7Ozs7Tjs7Ozs7CitGQjlEO0FSQUJJQyBMRVRURVIgTkdPRUggTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNkIxOzs7O047Ozs7OworRkI5RTtBUkFCSUMgTEVUVEVSIE5PT04gR0hVTk5BIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2QkE7Ozs7Tjs7Ozs7CitGQjlGO0FSQUJJQyBMRVRURVIgTk9PTiBHSFVOTkEgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDZCQTs7OztOOzs7OzsKK0ZCQTA7QVJBQklDIExFVFRFUiBSTk9PTiBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNkJCOzs7O047Ozs7OworRkJBMTtBUkFCSUMgTEVUVEVSIFJOT09OIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2QkI7Ozs7Tjs7Ozs7CitGQkEyO0FSQUJJQyBMRVRURVIgUk5PT04gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2QkI7Ozs7Tjs7Ozs7CitGQkEzO0FSQUJJQyBMRVRURVIgUk5PT04gTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNkJCOzs7O047Ozs7OworRkJBNDtBUkFCSUMgTEVUVEVSIEhFSCBXSVRIIFlFSCBBQk9WRSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNkMwOzs7O047Ozs7OworRkJBNTtBUkFCSUMgTEVUVEVSIEhFSCBXSVRIIFlFSCBBQk9WRSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNkMwOzs7O047Ozs7OworRkJBNjtBUkFCSUMgTEVUVEVSIEhFSCBHT0FMIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2QzE7Ozs7Tjs7Ozs7CitGQkE3O0FSQUJJQyBMRVRURVIgSEVIIEdPQUwgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDZDMTs7OztOOzs7OzsKK0ZCQTg7QVJBQklDIExFVFRFUiBIRUggR09BTCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDZDMTs7OztOOzs7OzsKK0ZCQTk7QVJBQklDIExFVFRFUiBIRUggR09BTCBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2QzE7Ozs7Tjs7Ozs7CitGQkFBO0FSQUJJQyBMRVRURVIgSEVIIERPQUNIQVNITUVFIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2QkU7Ozs7Tjs7Ozs7CitGQkFCO0FSQUJJQyBMRVRURVIgSEVIIERPQUNIQVNITUVFIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2QkU7Ozs7Tjs7Ozs7CitGQkFDO0FSQUJJQyBMRVRURVIgSEVIIERPQUNIQVNITUVFIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNkJFOzs7O047Ozs7OworRkJBRDtBUkFCSUMgTEVUVEVSIEhFSCBET0FDSEFTSE1FRSBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2QkU7Ozs7Tjs7Ozs7CitGQkFFO0FSQUJJQyBMRVRURVIgWUVIIEJBUlJFRSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNkQyOzs7O047Ozs7OworRkJBRjtBUkFCSUMgTEVUVEVSIFlFSCBCQVJSRUUgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDZEMjs7OztOOzs7OzsKK0ZCQjA7QVJBQklDIExFVFRFUiBZRUggQkFSUkVFIFdJVEggSEFNWkEgQUJPVkUgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDZEMzs7OztOOzs7OzsKK0ZCQjE7QVJBQklDIExFVFRFUiBZRUggQkFSUkVFIFdJVEggSEFNWkEgQUJPVkUgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDZEMzs7OztOOzs7OzsKK0ZCRDM7QVJBQklDIExFVFRFUiBORyBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNkFEOzs7O047Ozs7OworRkJENDtBUkFCSUMgTEVUVEVSIE5HIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2QUQ7Ozs7Tjs7Ozs7CitGQkQ1O0FSQUJJQyBMRVRURVIgTkcgSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2QUQ7Ozs7Tjs7Ozs7CitGQkQ2O0FSQUJJQyBMRVRURVIgTkcgTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNkFEOzs7O047Ozs7OworRkJENztBUkFCSUMgTEVUVEVSIFUgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDZDNzs7OztOOzs7OzsKK0ZCRDg7QVJBQklDIExFVFRFUiBVIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2Qzc7Ozs7Tjs7Ozs7CitGQkQ5O0FSQUJJQyBMRVRURVIgT0UgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDZDNjs7OztOOzs7OzsKK0ZCREE7QVJBQklDIExFVFRFUiBPRSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNkM2Ozs7O047Ozs7OworRkJEQjtBUkFCSUMgTEVUVEVSIFlVIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2Qzg7Ozs7Tjs7Ozs7CitGQkRDO0FSQUJJQyBMRVRURVIgWVUgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDZDODs7OztOOzs7OzsKK0ZCREQ7QVJBQklDIExFVFRFUiBVIFdJVEggSEFNWkEgQUJPVkUgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY3Nzs7OztOOzs7OzsKK0ZCREU7QVJBQklDIExFVFRFUiBWRSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNkNCOzs7O047Ozs7OworRkJERjtBUkFCSUMgTEVUVEVSIFZFIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2Q0I7Ozs7Tjs7Ozs7CitGQkUwO0FSQUJJQyBMRVRURVIgS0lSR0hJWiBPRSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNkM1Ozs7O047Ozs7OworRkJFMTtBUkFCSUMgTEVUVEVSIEtJUkdISVogT0UgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDZDNTs7OztOOzs7OzsKK0ZCRTI7QVJBQklDIExFVFRFUiBLSVJHSElaIFlVIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2Qzk7Ozs7Tjs7Ozs7CitGQkUzO0FSQUJJQyBMRVRURVIgS0lSR0hJWiBZVSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNkM5Ozs7O047Ozs7OworRkJFNDtBUkFCSUMgTEVUVEVSIEUgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDZEMDs7OztOOzs7OzsKK0ZCRTU7QVJBQklDIExFVFRFUiBFIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2RDA7Ozs7Tjs7Ozs7CitGQkU2O0FSQUJJQyBMRVRURVIgRSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDZEMDs7OztOOzs7OzsKK0ZCRTc7QVJBQklDIExFVFRFUiBFIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDZEMDs7OztOOzs7OzsKK0ZCRTg7QVJBQklDIExFVFRFUiBVSUdIVVIgS0FaQUtIIEtJUkdISVogQUxFRiBNQUtTVVJBIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ5Ozs7O047Ozs7OworRkJFOTtBUkFCSUMgTEVUVEVSIFVJR0hVUiBLQVpBS0ggS0lSR0hJWiBBTEVGIE1BS1NVUkEgTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjQ5Ozs7O047Ozs7OworRkJFQTtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBBTEVGIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MjYgMDYyNzs7OztOOzs7OzsKK0ZCRUI7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggQUxFRiBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjI2IDA2Mjc7Ozs7Tjs7Ozs7CitGQkVDO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEFFIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MjYgMDZENTs7OztOOzs7OzsKK0ZCRUQ7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggQUUgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyNiAwNkQ1Ozs7O047Ozs7OworRkJFRTtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBXQVcgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyNiAwNjQ4Ozs7O047Ozs7OworRkJFRjtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBXQVcgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyNiAwNjQ4Ozs7O047Ozs7OworRkJGMDtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBVIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MjYgMDZDNzs7OztOOzs7OzsKK0ZCRjE7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggVSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjI2IDA2Qzc7Ozs7Tjs7Ozs7CitGQkYyO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIE9FIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MjYgMDZDNjs7OztOOzs7OzsKK0ZCRjM7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggT0UgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyNiAwNkM2Ozs7O047Ozs7OworRkJGNDtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBZVSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjI2IDA2Qzg7Ozs7Tjs7Ozs7CitGQkY1O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIFlVIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MjYgMDZDODs7OztOOzs7OzsKK0ZCRjY7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggRSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjI2IDA2RDA7Ozs7Tjs7Ozs7CitGQkY3O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEUgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyNiAwNkQwOzs7O047Ozs7OworRkJGODtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBFIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjI2IDA2RDA7Ozs7Tjs7Ozs7CitGQkY5O0FSQUJJQyBMSUdBVFVSRSBVSUdIVVIgS0lSR0hJWiBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjI2IDA2NDk7Ozs7Tjs7Ozs7CitGQkZBO0FSQUJJQyBMSUdBVFVSRSBVSUdIVVIgS0lSR0hJWiBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjI2IDA2NDk7Ozs7Tjs7Ozs7CitGQkZCO0FSQUJJQyBMSUdBVFVSRSBVSUdIVVIgS0lSR0hJWiBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEFMRUYgTUFLU1VSQSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyNiAwNjQ5Ozs7O047Ozs7OworRkJGQztBUkFCSUMgTEVUVEVSIEZBUlNJIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNkNDOzs7O047Ozs7OworRkJGRDtBUkFCSUMgTEVUVEVSIEZBUlNJIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNkNDOzs7O047Ozs7OworRkJGRTtBUkFCSUMgTEVUVEVSIEZBUlNJIFlFSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDZDQzs7OztOOzs7OzsKK0ZCRkY7QVJBQklDIExFVFRFUiBGQVJTSSBZRUggTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNkNDOzs7O047Ozs7OworRkMwMDtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBKRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MjYgMDYyQzs7OztOOzs7OzsKK0ZDMDE7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggSEFIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MjYgMDYyRDs7OztOOzs7OzsKK0ZDMDI7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjI2IDA2NDU7Ozs7Tjs7Ozs7CitGQzAzO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjI2IDA2NDk7Ozs7Tjs7Ozs7CitGQzA0O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjI2IDA2NEE7Ozs7Tjs7Ozs7CitGQzA1O0FSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBKRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MjggMDYyQzs7OztOOzs7OzsKK0ZDMDY7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjI4IDA2MkQ7Ozs7Tjs7Ozs7CitGQzA3O0FSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBLSEFIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MjggMDYyRTs7OztOOzs7OzsKK0ZDMDg7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyOCAwNjQ1Ozs7O047Ozs7OworRkMwOTtBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MjggMDY0OTs7OztOOzs7OzsKK0ZDMEE7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjI4IDA2NEE7Ozs7Tjs7Ozs7CitGQzBCO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBKRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MkEgMDYyQzs7OztOOzs7OzsKK0ZDMEM7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjJBIDA2MkQ7Ozs7Tjs7Ozs7CitGQzBEO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBLSEFIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MkEgMDYyRTs7OztOOzs7OzsKK0ZDMEU7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyQSAwNjQ1Ozs7O047Ozs7OworRkMwRjtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MkEgMDY0OTs7OztOOzs7OzsKK0ZDMTA7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjJBIDA2NEE7Ozs7Tjs7Ozs7CitGQzExO0FSQUJJQyBMSUdBVFVSRSBUSEVIIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjJCIDA2MkM7Ozs7Tjs7Ozs7CitGQzEyO0FSQUJJQyBMSUdBVFVSRSBUSEVIIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjJCIDA2NDU7Ozs7Tjs7Ozs7CitGQzEzO0FSQUJJQyBMSUdBVFVSRSBUSEVIIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MkIgMDY0OTs7OztOOzs7OzsKK0ZDMTQ7QVJBQklDIExJR0FUVVJFIFRIRUggV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyQiAwNjRBOzs7O047Ozs7OworRkMxNTtBUkFCSUMgTElHQVRVUkUgSkVFTSBXSVRIIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjJDIDA2MkQ7Ozs7Tjs7Ozs7CitGQzE2O0FSQUJJQyBMSUdBVFVSRSBKRUVNIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjJDIDA2NDU7Ozs7Tjs7Ozs7CitGQzE3O0FSQUJJQyBMSUdBVFVSRSBIQUggV0lUSCBKRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MkQgMDYyQzs7OztOOzs7OzsKK0ZDMTg7QVJBQklDIExJR0FUVVJFIEhBSCBXSVRIIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyRCAwNjQ1Ozs7O047Ozs7OworRkMxOTtBUkFCSUMgTElHQVRVUkUgS0hBSCBXSVRIIEpFRU0gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyRSAwNjJDOzs7O047Ozs7OworRkMxQTtBUkFCSUMgTElHQVRVUkUgS0hBSCBXSVRIIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjJFIDA2MkQ7Ozs7Tjs7Ozs7CitGQzFCO0FSQUJJQyBMSUdBVFVSRSBLSEFIIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjJFIDA2NDU7Ozs7Tjs7Ozs7CitGQzFDO0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjMzIDA2MkM7Ozs7Tjs7Ozs7CitGQzFEO0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggSEFIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzMgMDYyRDs7OztOOzs7OzsKK0ZDMUU7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBLSEFIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzMgMDYyRTs7OztOOzs7OzsKK0ZDMUY7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzMgMDY0NTs7OztOOzs7OzsKK0ZDMjA7QVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjM1IDA2MkQ7Ozs7Tjs7Ozs7CitGQzIxO0FSQUJJQyBMSUdBVFVSRSBTQUQgV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzUgMDY0NTs7OztOOzs7OzsKK0ZDMjI7QVJBQklDIExJR0FUVVJFIERBRCBXSVRIIEpFRU0gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzNiAwNjJDOzs7O047Ozs7OworRkMyMztBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggSEFIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzYgMDYyRDs7OztOOzs7OzsKK0ZDMjQ7QVJBQklDIExJR0FUVVJFIERBRCBXSVRIIEtIQUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzNiAwNjJFOzs7O047Ozs7OworRkMyNTtBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjM2IDA2NDU7Ozs7Tjs7Ozs7CitGQzI2O0FSQUJJQyBMSUdBVFVSRSBUQUggV0lUSCBIQUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzNyAwNjJEOzs7O047Ozs7OworRkMyNztBUkFCSUMgTElHQVRVUkUgVEFIIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjM3IDA2NDU7Ozs7Tjs7Ozs7CitGQzI4O0FSQUJJQyBMSUdBVFVSRSBaQUggV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzggMDY0NTs7OztOOzs7OzsKK0ZDMjk7QVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIEpFRU0gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzOSAwNjJDOzs7O047Ozs7OworRkMyQTtBUkFCSUMgTElHQVRVUkUgQUlOIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjM5IDA2NDU7Ozs7Tjs7Ozs7CitGQzJCO0FSQUJJQyBMSUdBVFVSRSBHSEFJTiBXSVRIIEpFRU0gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzQSAwNjJDOzs7O047Ozs7OworRkMyQztBUkFCSUMgTElHQVRVUkUgR0hBSU4gV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2M0EgMDY0NTs7OztOOzs7OzsKK0ZDMkQ7QVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIEpFRU0gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0MSAwNjJDOzs7O047Ozs7OworRkMyRTtBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggSEFIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDEgMDYyRDs7OztOOzs7OzsKK0ZDMkY7QVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIEtIQUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0MSAwNjJFOzs7O047Ozs7OworRkMzMDtBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQxIDA2NDU7Ozs7Tjs7Ozs7CitGQzMxO0FSQUJJQyBMSUdBVFVSRSBGRUggV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0MSAwNjQ5Ozs7O047Ozs7OworRkMzMjtBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggWUVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDEgMDY0QTs7OztOOzs7OzsKK0ZDMzM7QVJBQklDIExJR0FUVVJFIFFBRiBXSVRIIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQyIDA2MkQ7Ozs7Tjs7Ozs7CitGQzM0O0FSQUJJQyBMSUdBVFVSRSBRQUYgV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDIgMDY0NTs7OztOOzs7OzsKK0ZDMzU7QVJBQklDIExJR0FUVVJFIFFBRiBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQyIDA2NDk7Ozs7Tjs7Ozs7CitGQzM2O0FSQUJJQyBMSUdBVFVSRSBRQUYgV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0MiAwNjRBOzs7O047Ozs7OworRkMzNztBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggQUxFRiBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQzIDA2Mjc7Ozs7Tjs7Ozs7CitGQzM4O0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBKRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDMgMDYyQzs7OztOOzs7OzsKK0ZDMzk7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQzIDA2MkQ7Ozs7Tjs7Ozs7CitGQzNBO0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBLSEFIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDMgMDYyRTs7OztOOzs7OzsKK0ZDM0I7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIExBTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQzIDA2NDQ7Ozs7Tjs7Ozs7CitGQzNDO0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDMgMDY0NTs7OztOOzs7OzsKK0ZDM0Q7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQzIDA2NDk7Ozs7Tjs7Ozs7CitGQzNFO0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0MyAwNjRBOzs7O047Ozs7OworRkMzRjtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ0IDA2MkM7Ozs7Tjs7Ozs7CitGQzQwO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBIQUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0NCAwNjJEOzs7O047Ozs7OworRkM0MTtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggS0hBSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ0IDA2MkU7Ozs7Tjs7Ozs7CitGQzQyO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDQgMDY0NTs7OztOOzs7OzsKK0ZDNDM7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ0IDA2NDk7Ozs7Tjs7Ozs7CitGQzQ0O0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0NCAwNjRBOzs7O047Ozs7OworRkM0NTtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEpFRU0gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0NSAwNjJDOzs7O047Ozs7OworRkM0NjtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ1IDA2MkQ7Ozs7Tjs7Ozs7CitGQzQ3O0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggS0hBSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ1IDA2MkU7Ozs7Tjs7Ozs7CitGQzQ4O0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ1IDA2NDU7Ozs7Tjs7Ozs7CitGQzQ5O0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDUgMDY0OTs7OztOOzs7OzsKK0ZDNEE7QVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0NSAwNjRBOzs7O047Ozs7OworRkM0QjtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEpFRU0gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0NiAwNjJDOzs7O047Ozs7OworRkM0QztBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ2IDA2MkQ7Ozs7Tjs7Ozs7CitGQzREO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggS0hBSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ2IDA2MkU7Ozs7Tjs7Ozs7CitGQzRFO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ2IDA2NDU7Ozs7Tjs7Ozs7CitGQzRGO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDYgMDY0OTs7OztOOzs7OzsKK0ZDNTA7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0NiAwNjRBOzs7O047Ozs7OworRkM1MTtBUkFCSUMgTElHQVRVUkUgSEVIIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ3IDA2MkM7Ozs7Tjs7Ozs7CitGQzUyO0FSQUJJQyBMSUdBVFVSRSBIRUggV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDcgMDY0NTs7OztOOzs7OzsKK0ZDNTM7QVJBQklDIExJR0FUVVJFIEhFSCBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ3IDA2NDk7Ozs7Tjs7Ozs7CitGQzU0O0FSQUJJQyBMSUdBVFVSRSBIRUggV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0NyAwNjRBOzs7O047Ozs7OworRkM1NTtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjRBIDA2MkM7Ozs7Tjs7Ozs7CitGQzU2O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0QSAwNjJEOzs7O047Ozs7OworRkM1NztBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggS0hBSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjRBIDA2MkU7Ozs7Tjs7Ozs7CitGQzU4O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NEEgMDY0NTs7OztOOzs7OzsKK0ZDNTk7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjRBIDA2NDk7Ozs7Tjs7Ozs7CitGQzVBO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0QSAwNjRBOzs7O047Ozs7OworRkM1QjtBUkFCSUMgTElHQVRVUkUgVEhBTCBXSVRIIFNVUEVSU0NSSVBUIEFMRUYgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzMCAwNjcwOzs7O047Ozs7OworRkM1QztBUkFCSUMgTElHQVRVUkUgUkVIIFdJVEggU1VQRVJTQ1JJUFQgQUxFRiBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjMxIDA2NzA7Ozs7Tjs7Ozs7CitGQzVEO0FSQUJJQyBMSUdBVFVSRSBBTEVGIE1BS1NVUkEgV0lUSCBTVVBFUlNDUklQVCBBTEVGIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDkgMDY3MDs7OztOOzs7OzsKK0ZDNUU7QVJBQklDIExJR0FUVVJFIFNIQUREQSBXSVRIIERBTU1BVEFOIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDAwMjAgMDY0QyAwNjUxOzs7O047Ozs7OworRkM1RjtBUkFCSUMgTElHQVRVUkUgU0hBRERBIFdJVEggS0FTUkFUQU4gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDAyMCAwNjREIDA2NTE7Ozs7Tjs7Ozs7CitGQzYwO0FSQUJJQyBMSUdBVFVSRSBTSEFEREEgV0lUSCBGQVRIQSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwMDIwIDA2NEUgMDY1MTs7OztOOzs7OzsKK0ZDNjE7QVJBQklDIExJR0FUVVJFIFNIQUREQSBXSVRIIERBTU1BIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDAwMjAgMDY0RiAwNjUxOzs7O047Ozs7OworRkM2MjtBUkFCSUMgTElHQVRVUkUgU0hBRERBIFdJVEggS0FTUkEgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDAyMCAwNjUwIDA2NTE7Ozs7Tjs7Ozs7CitGQzYzO0FSQUJJQyBMSUdBVFVSRSBTSEFEREEgV0lUSCBTVVBFUlNDUklQVCBBTEVGIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDAwMjAgMDY1MSAwNjcwOzs7O047Ozs7OworRkM2NDtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBSRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyNiAwNjMxOzs7O047Ozs7OworRkM2NTtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBaQUlOIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MjYgMDYzMjs7OztOOzs7OzsKK0ZDNjY7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjI2IDA2NDU7Ozs7Tjs7Ozs7CitGQzY3O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIE5PT04gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyNiAwNjQ2Ozs7O047Ozs7OworRkM2ODtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyNiAwNjQ5Ozs7O047Ozs7OworRkM2OTtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyNiAwNjRBOzs7O047Ozs7OworRkM2QTtBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggUkVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MjggMDYzMTs7OztOOzs7OzsKK0ZDNkI7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIFpBSU4gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyOCAwNjMyOzs7O047Ozs7OworRkM2QztBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjI4IDA2NDU7Ozs7Tjs7Ozs7CitGQzZEO0FSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBOT09OIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MjggMDY0Njs7OztOOzs7OzsKK0ZDNkU7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjI4IDA2NDk7Ozs7Tjs7Ozs7CitGQzZGO0FSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyOCAwNjRBOzs7O047Ozs7OworRkM3MDtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggUkVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkEgMDYzMTs7OztOOzs7OzsKK0ZDNzE7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIFpBSU4gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyQSAwNjMyOzs7O047Ozs7OworRkM3MjtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjJBIDA2NDU7Ozs7Tjs7Ozs7CitGQzczO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBOT09OIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkEgMDY0Njs7OztOOzs7OzsKK0ZDNzQ7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjJBIDA2NDk7Ozs7Tjs7Ozs7CitGQzc1O0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyQSAwNjRBOzs7O047Ozs7OworRkM3NjtBUkFCSUMgTElHQVRVUkUgVEhFSCBXSVRIIFJFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjJCIDA2MzE7Ozs7Tjs7Ozs7CitGQzc3O0FSQUJJQyBMSUdBVFVSRSBUSEVIIFdJVEggWkFJTiBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjJCIDA2MzI7Ozs7Tjs7Ozs7CitGQzc4O0FSQUJJQyBMSUdBVFVSRSBUSEVIIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjJCIDA2NDU7Ozs7Tjs7Ozs7CitGQzc5O0FSQUJJQyBMSUdBVFVSRSBUSEVIIFdJVEggTk9PTiBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjJCIDA2NDY7Ozs7Tjs7Ozs7CitGQzdBO0FSQUJJQyBMSUdBVFVSRSBUSEVIIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkIgMDY0OTs7OztOOzs7OzsKK0ZDN0I7QVJBQklDIExJR0FUVVJFIFRIRUggV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyQiAwNjRBOzs7O047Ozs7OworRkM3QztBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDEgMDY0OTs7OztOOzs7OzsKK0ZDN0Q7QVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQxIDA2NEE7Ozs7Tjs7Ozs7CitGQzdFO0FSQUJJQyBMSUdBVFVSRSBRQUYgV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0MiAwNjQ5Ozs7O047Ozs7OworRkM3RjtBUkFCSUMgTElHQVRVUkUgUUFGIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDIgMDY0QTs7OztOOzs7OzsKK0ZDODA7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIEFMRUYgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0MyAwNjI3Ozs7O047Ozs7OworRkM4MTtBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggTEFNIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDMgMDY0NDs7OztOOzs7OzsKK0ZDODI7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0MyAwNjQ1Ozs7O047Ozs7OworRkM4MztBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDMgMDY0OTs7OztOOzs7OzsKK0ZDODQ7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQzIDA2NEE7Ozs7Tjs7Ozs7CitGQzg1O0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDQgMDY0NTs7OztOOzs7OzsKK0ZDODY7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ0IDA2NDk7Ozs7Tjs7Ozs7CitGQzg3O0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0NCAwNjRBOzs7O047Ozs7OworRkM4ODtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEFMRUYgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0NSAwNjI3Ozs7O047Ozs7OworRkM4OTtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0NSAwNjQ1Ozs7O047Ozs7OworRkM4QTtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIFJFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ2IDA2MzE7Ozs7Tjs7Ozs7CitGQzhCO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggWkFJTiBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ2IDA2MzI7Ozs7Tjs7Ozs7CitGQzhDO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ2IDA2NDU7Ozs7Tjs7Ozs7CitGQzhEO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggTk9PTiBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ2IDA2NDY7Ozs7Tjs7Ozs7CitGQzhFO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDYgMDY0OTs7OztOOzs7OzsKK0ZDOEY7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0NiAwNjRBOzs7O047Ozs7OworRkM5MDtBUkFCSUMgTElHQVRVUkUgQUxFRiBNQUtTVVJBIFdJVEggU1VQRVJTQ1JJUFQgQUxFRiBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ5IDA2NzA7Ozs7Tjs7Ozs7CitGQzkxO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBSRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0QSAwNjMxOzs7O047Ozs7OworRkM5MjtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggWkFJTiBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjRBIDA2MzI7Ozs7Tjs7Ozs7CitGQzkzO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NEEgMDY0NTs7OztOOzs7OzsKK0ZDOTQ7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIE5PT04gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0QSAwNjQ2Ozs7O047Ozs7OworRkM5NTtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NEEgMDY0OTs7OztOOzs7OzsKK0ZDOTY7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjRBIDA2NEE7Ozs7Tjs7Ozs7CitGQzk3O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MjYgMDYyQzs7OztOOzs7OzsKK0ZDOTg7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjI2IDA2MkQ7Ozs7Tjs7Ozs7CitGQzk5O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEtIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MjYgMDYyRTs7OztOOzs7OzsKK0ZDOUE7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyNiAwNjQ1Ozs7O047Ozs7OworRkM5QjtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBIRUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MjYgMDY0Nzs7OztOOzs7OzsKK0ZDOUM7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MjggMDYyQzs7OztOOzs7OzsKK0ZDOUQ7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyOCAwNjJEOzs7O047Ozs7OworRkM5RTtBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggS0hBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyOCAwNjJFOzs7O047Ozs7OworRkM5RjtBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyOCAwNjQ1Ozs7O047Ozs7OworRkNBMDtBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggSEVIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjI4IDA2NDc7Ozs7Tjs7Ozs7CitGQ0ExO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjJBIDA2MkM7Ozs7Tjs7Ozs7CitGQ0EyO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MkEgMDYyRDs7OztOOzs7OzsKK0ZDQTM7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEtIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MkEgMDYyRTs7OztOOzs7OzsKK0ZDQTQ7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MkEgMDY0NTs7OztOOzs7OzsKK0ZDQTU7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEhFSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyQSAwNjQ3Ozs7O047Ozs7OworRkNBNjtBUkFCSUMgTElHQVRVUkUgVEhFSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MkIgMDY0NTs7OztOOzs7OzsKK0ZDQTc7QVJBQklDIExJR0FUVVJFIEpFRU0gV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MkMgMDYyRDs7OztOOzs7OzsKK0ZDQTg7QVJBQklDIExJR0FUVVJFIEpFRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjJDIDA2NDU7Ozs7Tjs7Ozs7CitGQ0E5O0FSQUJJQyBMSUdBVFVSRSBIQUggV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjJEIDA2MkM7Ozs7Tjs7Ozs7CitGQ0FBO0FSQUJJQyBMSUdBVFVSRSBIQUggV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjJEIDA2NDU7Ozs7Tjs7Ozs7CitGQ0FCO0FSQUJJQyBMSUdBVFVSRSBLSEFIIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyRSAwNjJDOzs7O047Ozs7OworRkNBQztBUkFCSUMgTElHQVRVUkUgS0hBSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MkUgMDY0NTs7OztOOzs7OzsKK0ZDQUQ7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjMzIDA2MkM7Ozs7Tjs7Ozs7CitGQ0FFO0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjMzIDA2MkQ7Ozs7Tjs7Ozs7CitGQ0FGO0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggS0hBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzMyAwNjJFOzs7O047Ozs7OworRkNCMDtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MzMgMDY0NTs7OztOOzs7OzsKK0ZDQjE7QVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzNSAwNjJEOzs7O047Ozs7OworRkNCMjtBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggS0hBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzNSAwNjJFOzs7O047Ozs7OworRkNCMztBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzNSAwNjQ1Ozs7O047Ozs7OworRkNCNDtBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzNiAwNjJDOzs7O047Ozs7OworRkNCNTtBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjM2IDA2MkQ7Ozs7Tjs7Ozs7CitGQ0I2O0FSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBLSEFIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjM2IDA2MkU7Ozs7Tjs7Ozs7CitGQ0I3O0FSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjM2IDA2NDU7Ozs7Tjs7Ozs7CitGQ0I4O0FSQUJJQyBMSUdBVFVSRSBUQUggV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MzcgMDYyRDs7OztOOzs7OzsKK0ZDQjk7QVJBQklDIExJR0FUVVJFIFpBSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MzggMDY0NTs7OztOOzs7OzsKK0ZDQkE7QVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MzkgMDYyQzs7OztOOzs7OzsKK0ZDQkI7QVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MzkgMDY0NTs7OztOOzs7OzsKK0ZDQkM7QVJBQklDIExJR0FUVVJFIEdIQUlOIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzQSAwNjJDOzs7O047Ozs7OworRkNCRDtBUkFCSUMgTElHQVRVUkUgR0hBSU4gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjNBIDA2NDU7Ozs7Tjs7Ozs7CitGQ0JFO0FSQUJJQyBMSUdBVFVSRSBGRUggV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQxIDA2MkM7Ozs7Tjs7Ozs7CitGQ0JGO0FSQUJJQyBMSUdBVFVSRSBGRUggV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDEgMDYyRDs7OztOOzs7OzsKK0ZDQzA7QVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIEtIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDEgMDYyRTs7OztOOzs7OzsKK0ZDQzE7QVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDEgMDY0NTs7OztOOzs7OzsKK0ZDQzI7QVJBQklDIExJR0FUVVJFIFFBRiBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0MiAwNjJEOzs7O047Ozs7OworRkNDMztBUkFCSUMgTElHQVRVUkUgUUFGIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0MiAwNjQ1Ozs7O047Ozs7OworRkNDNDtBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0MyAwNjJDOzs7O047Ozs7OworRkNDNTtBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQzIDA2MkQ7Ozs7Tjs7Ozs7CitGQ0M2O0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBLSEFIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQzIDA2MkU7Ozs7Tjs7Ozs7CitGQ0M3O0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBMQU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDMgMDY0NDs7OztOOzs7OzsKK0ZDQzg7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDMgMDY0NTs7OztOOzs7OzsKK0ZDQzk7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDQgMDYyQzs7OztOOzs7OzsKK0ZDQ0E7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0NCAwNjJEOzs7O047Ozs7OworRkNDQjtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggS0hBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0NCAwNjJFOzs7O047Ozs7OworRkNDQztBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0NCAwNjQ1Ozs7O047Ozs7OworRkNDRDtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggSEVIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ0IDA2NDc7Ozs7Tjs7Ozs7CitGQ0NFO0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0NSAwNjJDOzs7O047Ozs7OworRkNDRjtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0NSAwNjJEOzs7O047Ozs7OworRkNEMDtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEtIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDUgMDYyRTs7OztOOzs7OzsKK0ZDRDE7QVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ1IDA2NDU7Ozs7Tjs7Ozs7CitGQ0QyO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0NiAwNjJDOzs7O047Ozs7OworRkNEMztBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0NiAwNjJEOzs7O047Ozs7OworRkNENDtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEtIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDYgMDYyRTs7OztOOzs7OzsKK0ZDRDU7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ2IDA2NDU7Ozs7Tjs7Ozs7CitGQ0Q2O0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSEVIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ2IDA2NDc7Ozs7Tjs7Ozs7CitGQ0Q3O0FSQUJJQyBMSUdBVFVSRSBIRUggV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ3IDA2MkM7Ozs7Tjs7Ozs7CitGQ0Q4O0FSQUJJQyBMSUdBVFVSRSBIRUggV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ3IDA2NDU7Ozs7Tjs7Ozs7CitGQ0Q5O0FSQUJJQyBMSUdBVFVSRSBIRUggV0lUSCBTVVBFUlNDUklQVCBBTEVGIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ3IDA2NzA7Ozs7Tjs7Ozs7CitGQ0RBO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjRBIDA2MkM7Ozs7Tjs7Ozs7CitGQ0RCO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NEEgMDYyRDs7OztOOzs7OzsKK0ZDREM7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEtIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NEEgMDYyRTs7OztOOzs7OzsKK0ZDREQ7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NEEgMDY0NTs7OztOOzs7OzsKK0ZDREU7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhFSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0QSAwNjQ3Ozs7O047Ozs7OworRkNERjtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBNRUVNIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDYyNiAwNjQ1Ozs7O047Ozs7OworRkNFMDtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBIRUggTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjI2IDA2NDc7Ozs7Tjs7Ozs7CitGQ0UxO0FSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBNRUVNIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDYyOCAwNjQ1Ozs7O047Ozs7OworRkNFMjtBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggSEVIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDYyOCAwNjQ3Ozs7O047Ozs7OworRkNFMztBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggTUVFTSBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2MkEgMDY0NTs7OztOOzs7OzsKK0ZDRTQ7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEhFSCBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2MkEgMDY0Nzs7OztOOzs7OzsKK0ZDRTU7QVJBQklDIExJR0FUVVJFIFRIRUggV0lUSCBNRUVNIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDYyQiAwNjQ1Ozs7O047Ozs7OworRkNFNjtBUkFCSUMgTElHQVRVUkUgVEhFSCBXSVRIIEhFSCBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2MkIgMDY0Nzs7OztOOzs7OzsKK0ZDRTc7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBNRUVNIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDYzMyAwNjQ1Ozs7O047Ozs7OworRkNFODtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEhFSCBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2MzMgMDY0Nzs7OztOOzs7OzsKK0ZDRTk7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggTUVFTSBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2MzQgMDY0NTs7OztOOzs7OzsKK0ZDRUE7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggSEVIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDYzNCAwNjQ3Ozs7O047Ozs7OworRkNFQjtBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggTEFNIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDY0MyAwNjQ0Ozs7O047Ozs7OworRkNFQztBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggTUVFTSBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2NDMgMDY0NTs7OztOOzs7OzsKK0ZDRUQ7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIE1FRU0gTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjQ0IDA2NDU7Ozs7Tjs7Ozs7CitGQ0VFO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggTUVFTSBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2NDYgMDY0NTs7OztOOzs7OzsKK0ZDRUY7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBIRUggTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjQ2IDA2NDc7Ozs7Tjs7Ozs7CitGQ0YwO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBNRUVNIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDY0QSAwNjQ1Ozs7O047Ozs7OworRkNGMTtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEVIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDY0QSAwNjQ3Ozs7O047Ozs7OworRkNGMjtBUkFCSUMgTElHQVRVUkUgU0hBRERBIFdJVEggRkFUSEEgTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjQwIDA2NEUgMDY1MTs7OztOOzs7OzsKK0ZDRjM7QVJBQklDIExJR0FUVVJFIFNIQUREQSBXSVRIIERBTU1BIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDY0MCAwNjRGIDA2NTE7Ozs7Tjs7Ozs7CitGQ0Y0O0FSQUJJQyBMSUdBVFVSRSBTSEFEREEgV0lUSCBLQVNSQSBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2NDAgMDY1MCAwNjUxOzs7O047Ozs7OworRkNGNTtBUkFCSUMgTElHQVRVUkUgVEFIIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzcgMDY0OTs7OztOOzs7OzsKK0ZDRjY7QVJBQklDIExJR0FUVVJFIFRBSCBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjM3IDA2NEE7Ozs7Tjs7Ozs7CitGQ0Y3O0FSQUJJQyBMSUdBVFVSRSBBSU4gV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzOSAwNjQ5Ozs7O047Ozs7OworRkNGODtBUkFCSUMgTElHQVRVUkUgQUlOIFdJVEggWUVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzkgMDY0QTs7OztOOzs7OzsKK0ZDRjk7QVJBQklDIExJR0FUVVJFIEdIQUlOIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2M0EgMDY0OTs7OztOOzs7OzsKK0ZDRkE7QVJBQklDIExJR0FUVVJFIEdIQUlOIFdJVEggWUVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2M0EgMDY0QTs7OztOOzs7OzsKK0ZDRkI7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzMyAwNjQ5Ozs7O047Ozs7OworRkNGQztBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjMzIDA2NEE7Ozs7Tjs7Ozs7CitGQ0ZEO0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjM0IDA2NDk7Ozs7Tjs7Ozs7CitGQ0ZFO0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjM0IDA2NEE7Ozs7Tjs7Ozs7CitGQ0ZGO0FSQUJJQyBMSUdBVFVSRSBIQUggV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyRCAwNjQ5Ozs7O047Ozs7OworRkQwMDtBUkFCSUMgTElHQVRVUkUgSEFIIFdJVEggWUVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MkQgMDY0QTs7OztOOzs7OzsKK0ZEMDE7QVJBQklDIExJR0FUVVJFIEpFRU0gV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyQyAwNjQ5Ozs7O047Ozs7OworRkQwMjtBUkFCSUMgTElHQVRVUkUgSkVFTSBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjJDIDA2NEE7Ozs7Tjs7Ozs7CitGRDAzO0FSQUJJQyBMSUdBVFVSRSBLSEFIIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MkUgMDY0OTs7OztOOzs7OzsKK0ZEMDQ7QVJBQklDIExJR0FUVVJFIEtIQUggV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyRSAwNjRBOzs7O047Ozs7OworRkQwNTtBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzUgMDY0OTs7OztOOzs7OzsKK0ZEMDY7QVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjM1IDA2NEE7Ozs7Tjs7Ozs7CitGRDA3O0FSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzNiAwNjQ5Ozs7O047Ozs7OworRkQwODtBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggWUVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzYgMDY0QTs7OztOOzs7OzsKK0ZEMDk7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjM0IDA2MkM7Ozs7Tjs7Ozs7CitGRDBBO0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjM0IDA2MkQ7Ozs7Tjs7Ozs7CitGRDBCO0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEtIQUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzNCAwNjJFOzs7O047Ozs7OworRkQwQztBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzQgMDY0NTs7OztOOzs7OzsKK0ZEMEQ7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggUkVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzQgMDYzMTs7OztOOzs7OzsKK0ZEMEU7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBSRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzMyAwNjMxOzs7O047Ozs7OworRkQwRjtBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggUkVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzUgMDYzMTs7OztOOzs7OzsKK0ZEMTA7QVJBQklDIExJR0FUVVJFIERBRCBXSVRIIFJFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjM2IDA2MzE7Ozs7Tjs7Ozs7CitGRDExO0FSQUJJQyBMSUdBVFVSRSBUQUggV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzNyAwNjQ5Ozs7O047Ozs7OworRkQxMjtBUkFCSUMgTElHQVRVUkUgVEFIIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzcgMDY0QTs7OztOOzs7OzsKK0ZEMTM7QVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM5IDA2NDk7Ozs7Tjs7Ozs7CitGRDE0O0FSQUJJQyBMSUdBVFVSRSBBSU4gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzOSAwNjRBOzs7O047Ozs7OworRkQxNTtBUkFCSUMgTElHQVRVUkUgR0hBSU4gV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzQSAwNjQ5Ozs7O047Ozs7OworRkQxNjtBUkFCSUMgTElHQVRVUkUgR0hBSU4gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzQSAwNjRBOzs7O047Ozs7OworRkQxNztBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjMzIDA2NDk7Ozs7Tjs7Ozs7CitGRDE4O0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzMgMDY0QTs7OztOOzs7OzsKK0ZEMTk7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzQgMDY0OTs7OztOOzs7OzsKK0ZEMUE7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzQgMDY0QTs7OztOOzs7OzsKK0ZEMUI7QVJBQklDIExJR0FUVVJFIEhBSCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjJEIDA2NDk7Ozs7Tjs7Ozs7CitGRDFDO0FSQUJJQyBMSUdBVFVSRSBIQUggV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyRCAwNjRBOzs7O047Ozs7OworRkQxRDtBUkFCSUMgTElHQVRVUkUgSkVFTSBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjJDIDA2NDk7Ozs7Tjs7Ozs7CitGRDFFO0FSQUJJQyBMSUdBVFVSRSBKRUVNIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkMgMDY0QTs7OztOOzs7OzsKK0ZEMUY7QVJBQklDIExJR0FUVVJFIEtIQUggV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyRSAwNjQ5Ozs7O047Ozs7OworRkQyMDtBUkFCSUMgTElHQVRVUkUgS0hBSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjJFIDA2NEE7Ozs7Tjs7Ozs7CitGRDIxO0FSQUJJQyBMSUdBVFVSRSBTQUQgV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzNSAwNjQ5Ozs7O047Ozs7OworRkQyMjtBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzUgMDY0QTs7OztOOzs7OzsKK0ZEMjM7QVJBQklDIExJR0FUVVJFIERBRCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM2IDA2NDk7Ozs7Tjs7Ozs7CitGRDI0O0FSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzNiAwNjRBOzs7O047Ozs7OworRkQyNTtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBKRUVNIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzQgMDYyQzs7OztOOzs7OzsKK0ZEMjY7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggSEFIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzQgMDYyRDs7OztOOzs7OzsKK0ZEMjc7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggS0hBSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM0IDA2MkU7Ozs7Tjs7Ozs7CitGRDI4O0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzNCAwNjQ1Ozs7O047Ozs7OworRkQyOTtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBSRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzNCAwNjMxOzs7O047Ozs7OworRkQyQTtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIFJFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjMzIDA2MzE7Ozs7Tjs7Ozs7CitGRDJCO0FSQUJJQyBMSUdBVFVSRSBTQUQgV0lUSCBSRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzNSAwNjMxOzs7O047Ozs7OworRkQyQztBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggUkVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzYgMDYzMTs7OztOOzs7OzsKK0ZEMkQ7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzNCAwNjJDOzs7O047Ozs7OworRkQyRTtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MzQgMDYyRDs7OztOOzs7OzsKK0ZEMkY7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggS0hBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzNCAwNjJFOzs7O047Ozs7OworRkQzMDtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjM0IDA2NDU7Ozs7Tjs7Ozs7CitGRDMxO0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggSEVIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjMzIDA2NDc7Ozs7Tjs7Ozs7CitGRDMyO0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEhFSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzNCAwNjQ3Ozs7O047Ozs7OworRkQzMztBUkFCSUMgTElHQVRVUkUgVEFIIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzNyAwNjQ1Ozs7O047Ozs7OworRkQzNDtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEpFRU0gTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjMzIDA2MkM7Ozs7Tjs7Ozs7CitGRDM1O0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggSEFIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDYzMyAwNjJEOzs7O047Ozs7OworRkQzNjtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEtIQUggTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjMzIDA2MkU7Ozs7Tjs7Ozs7CitGRDM3O0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEpFRU0gTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjM0IDA2MkM7Ozs7Tjs7Ozs7CitGRDM4O0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEhBSCBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2MzQgMDYyRDs7OztOOzs7OzsKK0ZEMzk7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggS0hBSCBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2MzQgMDYyRTs7OztOOzs7OzsKK0ZEM0E7QVJBQklDIExJR0FUVVJFIFRBSCBXSVRIIE1FRU0gTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjM3IDA2NDU7Ozs7Tjs7Ozs7CitGRDNCO0FSQUJJQyBMSUdBVFVSRSBaQUggV0lUSCBNRUVNIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDYzOCAwNjQ1Ozs7O047Ozs7OworRkQzQztBUkFCSUMgTElHQVRVUkUgQUxFRiBXSVRIIEZBVEhBVEFOIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MjcgMDY0Qjs7OztOOzs7OzsKK0ZEM0Q7QVJBQklDIExJR0FUVVJFIEFMRUYgV0lUSCBGQVRIQVRBTiBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjI3IDA2NEI7Ozs7Tjs7Ozs7CitGRDNFO09STkFURSBMRUZUIFBBUkVOVEhFU0lTO1BzOzA7T047Ozs7O047Ozs7OworRkQzRjtPUk5BVEUgUklHSFQgUEFSRU5USEVTSVM7UGU7MDtPTjs7Ozs7Tjs7Ozs7CitGRDUwO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBKRUVNIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyQSAwNjJDIDA2NDU7Ozs7Tjs7Ozs7CitGRDUxO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBIQUggV0lUSCBKRUVNIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkEgMDYyRCAwNjJDOzs7O047Ozs7OworRkQ1MjtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggSEFIIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyQSAwNjJEIDA2MkM7Ozs7Tjs7Ozs7CitGRDUzO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBIQUggV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjJBIDA2MkQgMDY0NTs7OztOOzs7OzsKK0ZENTQ7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEtIQUggV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjJBIDA2MkUgMDY0NTs7OztOOzs7OzsKK0ZENTU7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIE1FRU0gV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjJBIDA2NDUgMDYyQzs7OztOOzs7OzsKK0ZENTY7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIE1FRU0gV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MkEgMDY0NSAwNjJEOzs7O047Ozs7OworRkQ1NztBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggTUVFTSBXSVRIIEtIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MkEgMDY0NSAwNjJFOzs7O047Ozs7OworRkQ1ODtBUkFCSUMgTElHQVRVUkUgSkVFTSBXSVRIIE1FRU0gV0lUSCBIQUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyQyAwNjQ1IDA2MkQ7Ozs7Tjs7Ozs7CitGRDU5O0FSQUJJQyBMSUdBVFVSRSBKRUVNIFdJVEggTUVFTSBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyQyAwNjQ1IDA2MkQ7Ozs7Tjs7Ozs7CitGRDVBO0FSQUJJQyBMSUdBVFVSRSBIQUggV0lUSCBNRUVNIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkQgMDY0NSAwNjRBOzs7O047Ozs7OworRkQ1QjtBUkFCSUMgTElHQVRVUkUgSEFIIFdJVEggTUVFTSBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjJEIDA2NDUgMDY0OTs7OztOOzs7OzsKK0ZENUM7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBIQUggV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjMzIDA2MkQgMDYyQzs7OztOOzs7OzsKK0ZENUQ7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBKRUVNIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjMzIDA2MkMgMDYyRDs7OztOOzs7OzsKK0ZENUU7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBKRUVNIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzMgMDYyQyAwNjQ5Ozs7O047Ozs7OworRkQ1RjtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIE1FRU0gV0lUSCBIQUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzMyAwNjQ1IDA2MkQ7Ozs7Tjs7Ozs7CitGRDYwO0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggTUVFTSBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzMyAwNjQ1IDA2MkQ7Ozs7Tjs7Ozs7CitGRDYxO0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggTUVFTSBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MzMgMDY0NSAwNjJDOzs7O047Ozs7OworRkQ2MjtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIE1FRU0gV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzMgMDY0NSAwNjQ1Ozs7O047Ozs7OworRkQ2MztBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIE1FRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjMzIDA2NDUgMDY0NTs7OztOOzs7OzsKK0ZENjQ7QVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIEhBSCBXSVRIIEhBSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM1IDA2MkQgMDYyRDs7OztOOzs7OzsKK0ZENjU7QVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIEhBSCBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzNSAwNjJEIDA2MkQ7Ozs7Tjs7Ozs7CitGRDY2O0FSQUJJQyBMSUdBVFVSRSBTQUQgV0lUSCBNRUVNIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM1IDA2NDUgMDY0NTs7OztOOzs7OzsKK0ZENjc7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggSEFIIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM0IDA2MkQgMDY0NTs7OztOOzs7OzsKK0ZENjg7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggSEFIIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzNCAwNjJEIDA2NDU7Ozs7Tjs7Ozs7CitGRDY5O0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEpFRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzNCAwNjJDIDA2NEE7Ozs7Tjs7Ozs7CitGRDZBO0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIE1FRU0gV0lUSCBLSEFIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzQgMDY0NSAwNjJFOzs7O047Ozs7OworRkQ2QjtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBNRUVNIFdJVEggS0hBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzNCAwNjQ1IDA2MkU7Ozs7Tjs7Ozs7CitGRDZDO0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIE1FRU0gV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzQgMDY0NSAwNjQ1Ozs7O047Ozs7OworRkQ2RDtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBNRUVNIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzNCAwNjQ1IDA2NDU7Ozs7Tjs7Ozs7CitGRDZFO0FSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBIQUggV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzNiAwNjJEIDA2NDk7Ozs7Tjs7Ozs7CitGRDZGO0FSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBLSEFIIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM2IDA2MkUgMDY0NTs7OztOOzs7OzsKK0ZENzA7QVJBQklDIExJR0FUVVJFIERBRCBXSVRIIEtIQUggV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjM2IDA2MkUgMDY0NTs7OztOOzs7OzsKK0ZENzE7QVJBQklDIExJR0FUVVJFIFRBSCBXSVRIIE1FRU0gV0lUSCBIQUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzNyAwNjQ1IDA2MkQ7Ozs7Tjs7Ozs7CitGRDcyO0FSQUJJQyBMSUdBVFVSRSBUQUggV0lUSCBNRUVNIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjM3IDA2NDUgMDYyRDs7OztOOzs7OzsKK0ZENzM7QVJBQklDIExJR0FUVVJFIFRBSCBXSVRIIE1FRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjM3IDA2NDUgMDY0NTs7OztOOzs7OzsKK0ZENzQ7QVJBQklDIExJR0FUVVJFIFRBSCBXSVRIIE1FRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzNyAwNjQ1IDA2NEE7Ozs7Tjs7Ozs7CitGRDc1O0FSQUJJQyBMSUdBVFVSRSBBSU4gV0lUSCBKRUVNIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM5IDA2MkMgMDY0NTs7OztOOzs7OzsKK0ZENzY7QVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIE1FRU0gV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzkgMDY0NSAwNjQ1Ozs7O047Ozs7OworRkQ3NztBUkFCSUMgTElHQVRVUkUgQUlOIFdJVEggTUVFTSBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MzkgMDY0NSAwNjQ1Ozs7O047Ozs7OworRkQ3ODtBUkFCSUMgTElHQVRVUkUgQUlOIFdJVEggTUVFTSBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM5IDA2NDUgMDY0OTs7OztOOzs7OzsKK0ZENzk7QVJBQklDIExJR0FUVVJFIEdIQUlOIFdJVEggTUVFTSBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzQSAwNjQ1IDA2NDU7Ozs7Tjs7Ozs7CitGRDdBO0FSQUJJQyBMSUdBVFVSRSBHSEFJTiBXSVRIIE1FRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzQSAwNjQ1IDA2NEE7Ozs7Tjs7Ozs7CitGRDdCO0FSQUJJQyBMSUdBVFVSRSBHSEFJTiBXSVRIIE1FRU0gV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzQSAwNjQ1IDA2NDk7Ozs7Tjs7Ozs7CitGRDdDO0FSQUJJQyBMSUdBVFVSRSBGRUggV0lUSCBLSEFIIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQxIDA2MkUgMDY0NTs7OztOOzs7OzsKK0ZEN0Q7QVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIEtIQUggV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQxIDA2MkUgMDY0NTs7OztOOzs7OzsKK0ZEN0U7QVJBQklDIExJR0FUVVJFIFFBRiBXSVRIIE1FRU0gV0lUSCBIQUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0MiAwNjQ1IDA2MkQ7Ozs7Tjs7Ozs7CitGRDdGO0FSQUJJQyBMSUdBVFVSRSBRQUYgV0lUSCBNRUVNIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQyIDA2NDUgMDY0NTs7OztOOzs7OzsKK0ZEODA7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEhBSCBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0NCAwNjJEIDA2NDU7Ozs7Tjs7Ozs7CitGRDgxO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBIQUggV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0NCAwNjJEIDA2NEE7Ozs7Tjs7Ozs7CitGRDgyO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBIQUggV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0NCAwNjJEIDA2NDk7Ozs7Tjs7Ozs7CitGRDgzO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBKRUVNIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0NCAwNjJDIDA2MkM7Ozs7Tjs7Ozs7CitGRDg0O0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBKRUVNIFdJVEggSkVFTSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ0IDA2MkMgMDYyQzs7OztOOzs7OzsKK0ZEODU7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEtIQUggV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDQgMDYyRSAwNjQ1Ozs7O047Ozs7OworRkQ4NjtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggS0hBSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDQgMDYyRSAwNjQ1Ozs7O047Ozs7OworRkQ4NztBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggTUVFTSBXSVRIIEhBSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ0IDA2NDUgMDYyRDs7OztOOzs7OzsKK0ZEODg7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIE1FRU0gV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDQgMDY0NSAwNjJEOzs7O047Ozs7OworRkQ4OTtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEhBSCBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDUgMDYyRCAwNjJDOzs7O047Ozs7OworRkQ4QTtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEhBSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDUgMDYyRCAwNjQ1Ozs7O047Ozs7OworRkQ4QjtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEhBSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ1IDA2MkQgMDY0QTs7OztOOzs7OzsKK0ZEOEM7QVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBKRUVNIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ1IDA2MkMgMDYyRDs7OztOOzs7OzsKK0ZEOEQ7QVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBKRUVNIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0NSAwNjJDIDA2NDU7Ozs7Tjs7Ozs7CitGRDhFO0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggS0hBSCBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDUgMDYyRSAwNjJDOzs7O047Ozs7OworRkQ4RjtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEtIQUggV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ1IDA2MkUgMDY0NTs7OztOOzs7OzsKK0ZEOTI7QVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBKRUVNIFdJVEggS0hBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0NSAwNjJDIDA2MkU7Ozs7Tjs7Ozs7CitGRDkzO0FSQUJJQyBMSUdBVFVSRSBIRUggV0lUSCBNRUVNIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0NyAwNjQ1IDA2MkM7Ozs7Tjs7Ozs7CitGRDk0O0FSQUJJQyBMSUdBVFVSRSBIRUggV0lUSCBNRUVNIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0NyAwNjQ1IDA2NDU7Ozs7Tjs7Ozs7CitGRDk1O0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSEFIIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0NiAwNjJEIDA2NDU7Ozs7Tjs7Ozs7CitGRDk2O0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSEFIIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDYgMDYyRCAwNjQ5Ozs7O047Ozs7OworRkQ5NztBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEpFRU0gV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDYgMDYyQyAwNjQ1Ozs7O047Ozs7OworRkQ5ODtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEpFRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ2IDA2MkMgMDY0NTs7OztOOzs7OzsKK0ZEOTk7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBKRUVNIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDYgMDYyQyAwNjQ5Ozs7O047Ozs7OworRkQ5QTtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIE1FRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0NiAwNjQ1IDA2NEE7Ozs7Tjs7Ozs7CitGRDlCO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggTUVFTSBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ2IDA2NDUgMDY0OTs7OztOOzs7OzsKK0ZEOUM7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIE1FRU0gV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NEEgMDY0NSAwNjQ1Ozs7O047Ozs7OworRkQ5RDtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggTUVFTSBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NEEgMDY0NSAwNjQ1Ozs7O047Ozs7OworRkQ5RTtBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggS0hBSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjI4IDA2MkUgMDY0QTs7OztOOzs7OzsKK0ZEOUY7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEpFRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyQSAwNjJDIDA2NEE7Ozs7Tjs7Ozs7CitGREEwO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBKRUVNIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkEgMDYyQyAwNjQ5Ozs7O047Ozs7OworRkRBMTtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggS0hBSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjJBIDA2MkUgMDY0QTs7OztOOzs7OzsKK0ZEQTI7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEtIQUggV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyQSAwNjJFIDA2NDk7Ozs7Tjs7Ozs7CitGREEzO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBNRUVNIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkEgMDY0NSAwNjRBOzs7O047Ozs7OworRkRBNDtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggTUVFTSBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjJBIDA2NDUgMDY0OTs7OztOOzs7OzsKK0ZEQTU7QVJBQklDIExJR0FUVVJFIEpFRU0gV0lUSCBNRUVNIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkMgMDY0NSAwNjRBOzs7O047Ozs7OworRkRBNjtBUkFCSUMgTElHQVRVUkUgSkVFTSBXSVRIIEhBSCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjJDIDA2MkQgMDY0OTs7OztOOzs7OzsKK0ZEQTc7QVJBQklDIExJR0FUVVJFIEpFRU0gV0lUSCBNRUVNIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkMgMDY0NSAwNjQ5Ozs7O047Ozs7OworRkRBODtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEtIQUggV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzMyAwNjJFIDA2NDk7Ozs7Tjs7Ozs7CitGREE5O0FSQUJJQyBMSUdBVFVSRSBTQUQgV0lUSCBIQUggV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzNSAwNjJEIDA2NEE7Ozs7Tjs7Ozs7CitGREFBO0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEhBSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM0IDA2MkQgMDY0QTs7OztOOzs7OzsKK0ZEQUI7QVJBQklDIExJR0FUVVJFIERBRCBXSVRIIEhBSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM2IDA2MkQgMDY0QTs7OztOOzs7OzsKK0ZEQUM7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEpFRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0NCAwNjJDIDA2NEE7Ozs7Tjs7Ozs7CitGREFEO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBNRUVNIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDQgMDY0NSAwNjRBOzs7O047Ozs7OworRkRBRTtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFIIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NEEgMDYyRCAwNjRBOzs7O047Ozs7OworRkRBRjtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSkVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjRBIDA2MkMgMDY0QTs7OztOOzs7OzsKK0ZEQjA7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIE1FRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0QSAwNjQ1IDA2NEE7Ozs7Tjs7Ozs7CitGREIxO0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggTUVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ1IDA2NDUgMDY0QTs7OztOOzs7OzsKK0ZEQjI7QVJBQklDIExJR0FUVVJFIFFBRiBXSVRIIE1FRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0MiAwNjQ1IDA2NEE7Ozs7Tjs7Ozs7CitGREIzO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSEFIIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDYgMDYyRCAwNjRBOzs7O047Ozs7OworRkRCNDtBUkFCSUMgTElHQVRVUkUgUUFGIFdJVEggTUVFTSBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0MiAwNjQ1IDA2MkQ7Ozs7Tjs7Ozs7CitGREI1O0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBIQUggV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ0IDA2MkQgMDY0NTs7OztOOzs7OzsKK0ZEQjY7QVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIE1FRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzOSAwNjQ1IDA2NEE7Ozs7Tjs7Ozs7CitGREI3O0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBNRUVNIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDMgMDY0NSAwNjRBOzs7O047Ozs7OworRkRCODtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEpFRU0gV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDYgMDYyQyAwNjJEOzs7O047Ozs7OworRkRCOTtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEtIQUggV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0NSAwNjJFIDA2NEE7Ozs7Tjs7Ozs7CitGREJBO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBKRUVNIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0NCAwNjJDIDA2NDU7Ozs7Tjs7Ozs7CitGREJCO0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBNRUVNIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQzIDA2NDUgMDY0NTs7OztOOzs7OzsKK0ZEQkM7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEpFRU0gV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDQgMDYyQyAwNjQ1Ozs7O047Ozs7OworRkRCRDtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEpFRU0gV0lUSCBIQUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0NiAwNjJDIDA2MkQ7Ozs7Tjs7Ozs7CitGREJFO0FSQUJJQyBMSUdBVFVSRSBKRUVNIFdJVEggSEFIIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkMgMDYyRCAwNjRBOzs7O047Ozs7OworRkRCRjtBUkFCSUMgTElHQVRVUkUgSEFIIFdJVEggSkVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjJEIDA2MkMgMDY0QTs7OztOOzs7OzsKK0ZEQzA7QVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBKRUVNIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDUgMDYyQyAwNjRBOzs7O047Ozs7OworRkRDMTtBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggTUVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQxIDA2NDUgMDY0QTs7OztOOzs7OzsKK0ZEQzI7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIEhBSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjI4IDA2MkQgMDY0QTs7OztOOzs7OzsKK0ZEQzM7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIE1FRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQzIDA2NDUgMDY0NTs7OztOOzs7OzsKK0ZEQzQ7QVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIEpFRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjM5IDA2MkMgMDY0NTs7OztOOzs7OzsKK0ZEQzU7QVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIE1FRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjM1IDA2NDUgMDY0NTs7OztOOzs7OzsKK0ZEQzY7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBLSEFIIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzMgMDYyRSAwNjRBOzs7O047Ozs7OworRkRDNztBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEpFRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0NiAwNjJDIDA2NEE7Ozs7Tjs7Ozs7CitGREYwO0FSQUJJQyBMSUdBVFVSRSBTQUxMQSBVU0VEIEFTIEtPUkFOSUMgU1RPUCBTSUdOIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzUgMDY0NCAwNkQyOzs7O047Ozs7OworRkRGMTtBUkFCSUMgTElHQVRVUkUgUUFMQSBVU0VEIEFTIEtPUkFOSUMgU1RPUCBTSUdOIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDIgMDY0NCAwNkQyOzs7O047Ozs7OworRkRGMjtBUkFCSUMgTElHQVRVUkUgQUxMQUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyNyAwNjQ0IDA2NDQgMDY0Nzs7OztOOzs7OzsKK0ZERjM7QVJBQklDIExJR0FUVVJFIEFLQkFSIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MjcgMDY0MyAwNjI4IDA2MzE7Ozs7Tjs7Ozs7CitGREY0O0FSQUJJQyBMSUdBVFVSRSBNT0hBTU1BRCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ1IDA2MkQgMDY0NSAwNjJGOzs7O047Ozs7OworRkRGNTtBUkFCSUMgTElHQVRVUkUgU0FMQU0gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzNSAwNjQ0IDA2MzkgMDY0NTs7OztOOzs7OzsKK0ZERjY7QVJBQklDIExJR0FUVVJFIFJBU09VTCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjMxIDA2MzMgMDY0OCAwNjQ0Ozs7O047Ozs7OworRkRGNztBUkFCSUMgTElHQVRVUkUgQUxBWUhFIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzkgMDY0NCAwNjRBIDA2NDc7Ozs7Tjs7Ozs7CitGREY4O0FSQUJJQyBMSUdBVFVSRSBXQVNBTExBTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ4IDA2MzMgMDY0NCAwNjQ1Ozs7O047Ozs7OworRkRGOTtBUkFCSUMgTElHQVRVUkUgU0FMTEEgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzNSAwNjQ0IDA2NDk7Ozs7Tjs7Ozs7CitGREZBO0FSQUJJQyBMSUdBVFVSRSBTQUxMQUxMQUhPVSBBTEFZSEUgV0FTQUxMQU07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzUgMDY0NCAwNjQ5IDAwMjAgMDYyNyAwNjQ0IDA2NDQgMDY0NyAwMDIwIDA2MzkgMDY0NCAwNjRBIDA2NDcgMDAyMCAwNjQ4IDA2MzMgMDY0NCAwNjQ1Ozs7O047QVJBQklDIExFVFRFUiBTQUxMQUxMQUhPVSBBTEFZSEUgV0FTQUxMQU07Ozs7CitGREZCO0FSQUJJQyBMSUdBVFVSRSBKQUxMQUpBTEFMT1VIT1U7TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MkMgMDY0NCAwMDIwIDA2MkMgMDY0NCAwNjI3IDA2NDQgMDY0Nzs7OztOO0FSQUJJQyBMRVRURVIgSkFMTEFKQUxBTE9VSE9VOzs7OworRkRGQztSSUFMIFNJR047U2M7MDtBTDs8aXNvbGF0ZWQ+IDA2MzEgMDZDQyAwNjI3IDA2NDQ7Ozs7Tjs7Ozs7CitGRTAwO1ZBUklBVElPTiBTRUxFQ1RPUi0xO01uOzA7TlNNOzs7OztOOzs7OzsKK0ZFMDE7VkFSSUFUSU9OIFNFTEVDVE9SLTI7TW47MDtOU007Ozs7O047Ozs7OworRkUwMjtWQVJJQVRJT04gU0VMRUNUT1ItMztNbjswO05TTTs7Ozs7Tjs7Ozs7CitGRTAzO1ZBUklBVElPTiBTRUxFQ1RPUi00O01uOzA7TlNNOzs7OztOOzs7OzsKK0ZFMDQ7VkFSSUFUSU9OIFNFTEVDVE9SLTU7TW47MDtOU007Ozs7O047Ozs7OworRkUwNTtWQVJJQVRJT04gU0VMRUNUT1ItNjtNbjswO05TTTs7Ozs7Tjs7Ozs7CitGRTA2O1ZBUklBVElPTiBTRUxFQ1RPUi03O01uOzA7TlNNOzs7OztOOzs7OzsKK0ZFMDc7VkFSSUFUSU9OIFNFTEVDVE9SLTg7TW47MDtOU007Ozs7O047Ozs7OworRkUwODtWQVJJQVRJT04gU0VMRUNUT1ItOTtNbjswO05TTTs7Ozs7Tjs7Ozs7CitGRTA5O1ZBUklBVElPTiBTRUxFQ1RPUi0xMDtNbjswO05TTTs7Ozs7Tjs7Ozs7CitGRTBBO1ZBUklBVElPTiBTRUxFQ1RPUi0xMTtNbjswO05TTTs7Ozs7Tjs7Ozs7CitGRTBCO1ZBUklBVElPTiBTRUxFQ1RPUi0xMjtNbjswO05TTTs7Ozs7Tjs7Ozs7CitGRTBDO1ZBUklBVElPTiBTRUxFQ1RPUi0xMztNbjswO05TTTs7Ozs7Tjs7Ozs7CitGRTBEO1ZBUklBVElPTiBTRUxFQ1RPUi0xNDtNbjswO05TTTs7Ozs7Tjs7Ozs7CitGRTBFO1ZBUklBVElPTiBTRUxFQ1RPUi0xNTtNbjswO05TTTs7Ozs7Tjs7Ozs7CitGRTBGO1ZBUklBVElPTiBTRUxFQ1RPUi0xNjtNbjswO05TTTs7Ozs7Tjs7Ozs7CitGRTIwO0NPTUJJTklORyBMSUdBVFVSRSBMRUZUIEhBTEY7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CitGRTIxO0NPTUJJTklORyBMSUdBVFVSRSBSSUdIVCBIQUxGO01uOzIzMDtOU007Ozs7O047Ozs7OworRkUyMjtDT01CSU5JTkcgRE9VQkxFIFRJTERFIExFRlQgSEFMRjtNbjsyMzA7TlNNOzs7OztOOzs7OzsKK0ZFMjM7Q09NQklOSU5HIERPVUJMRSBUSUxERSBSSUdIVCBIQUxGO01uOzIzMDtOU007Ozs7O047Ozs7OworRkUzMDtQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgVFdPIERPVCBMRUFERVI7UG87MDtPTjs8dmVydGljYWw+IDIwMjU7Ozs7TjtHTFlQSCBGT1IgVkVSVElDQUwgVFdPIERPVCBMRUFERVI7Ozs7CitGRTMxO1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBFTSBEQVNIO1BkOzA7T047PHZlcnRpY2FsPiAyMDE0Ozs7O047R0xZUEggRk9SIFZFUlRJQ0FMIEVNIERBU0g7Ozs7CitGRTMyO1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBFTiBEQVNIO1BkOzA7T047PHZlcnRpY2FsPiAyMDEzOzs7O047R0xZUEggRk9SIFZFUlRJQ0FMIEVOIERBU0g7Ozs7CitGRTMzO1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBMT1cgTElORTtQYzswO09OOzx2ZXJ0aWNhbD4gMDA1Rjs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBTUEFDSU5HIFVOREVSU0NPUkU7Ozs7CitGRTM0O1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBXQVZZIExPVyBMSU5FO1BjOzA7T047PHZlcnRpY2FsPiAwMDVGOzs7O047R0xZUEggRk9SIFZFUlRJQ0FMIFNQQUNJTkcgV0FWWSBVTkRFUlNDT1JFOzs7OworRkUzNTtQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgTEVGVCBQQVJFTlRIRVNJUztQczswO09OOzx2ZXJ0aWNhbD4gMDAyODs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBPUEVOSU5HIFBBUkVOVEhFU0lTOzs7OworRkUzNjtQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgUklHSFQgUEFSRU5USEVTSVM7UGU7MDtPTjs8dmVydGljYWw+IDAwMjk7Ozs7TjtHTFlQSCBGT1IgVkVSVElDQUwgQ0xPU0lORyBQQVJFTlRIRVNJUzs7OzsKK0ZFMzc7UFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIExFRlQgQ1VSTFkgQlJBQ0tFVDtQczswO09OOzx2ZXJ0aWNhbD4gMDA3Qjs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBPUEVOSU5HIENVUkxZIEJSQUNLRVQ7Ozs7CitGRTM4O1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBSSUdIVCBDVVJMWSBCUkFDS0VUO1BlOzA7T047PHZlcnRpY2FsPiAwMDdEOzs7O047R0xZUEggRk9SIFZFUlRJQ0FMIENMT1NJTkcgQ1VSTFkgQlJBQ0tFVDs7OzsKK0ZFMzk7UFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIExFRlQgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDtQczswO09OOzx2ZXJ0aWNhbD4gMzAxNDs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBPUEVOSU5HIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQ7Ozs7CitGRTNBO1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBSSUdIVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUO1BlOzA7T047PHZlcnRpY2FsPiAzMDE1Ozs7O047R0xZUEggRk9SIFZFUlRJQ0FMIENMT1NJTkcgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDs7OzsKK0ZFM0I7UFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIExFRlQgQkxBQ0sgTEVOVElDVUxBUiBCUkFDS0VUO1BzOzA7T047PHZlcnRpY2FsPiAzMDEwOzs7O047R0xZUEggRk9SIFZFUlRJQ0FMIE9QRU5JTkcgQkxBQ0sgTEVOVElDVUxBUiBCUkFDS0VUOzs7OworRkUzQztQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgUklHSFQgQkxBQ0sgTEVOVElDVUxBUiBCUkFDS0VUO1BlOzA7T047PHZlcnRpY2FsPiAzMDExOzs7O047R0xZUEggRk9SIFZFUlRJQ0FMIENMT1NJTkcgQkxBQ0sgTEVOVElDVUxBUiBCUkFDS0VUOzs7OworRkUzRDtQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgTEVGVCBET1VCTEUgQU5HTEUgQlJBQ0tFVDtQczswO09OOzx2ZXJ0aWNhbD4gMzAwQTs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBPUEVOSU5HIERPVUJMRSBBTkdMRSBCUkFDS0VUOzs7OworRkUzRTtQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgUklHSFQgRE9VQkxFIEFOR0xFIEJSQUNLRVQ7UGU7MDtPTjs8dmVydGljYWw+IDMwMEI7Ozs7TjtHTFlQSCBGT1IgVkVSVElDQUwgQ0xPU0lORyBET1VCTEUgQU5HTEUgQlJBQ0tFVDs7OzsKK0ZFM0Y7UFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIExFRlQgQU5HTEUgQlJBQ0tFVDtQczswO09OOzx2ZXJ0aWNhbD4gMzAwODs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBPUEVOSU5HIEFOR0xFIEJSQUNLRVQ7Ozs7CitGRTQwO1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBSSUdIVCBBTkdMRSBCUkFDS0VUO1BlOzA7T047PHZlcnRpY2FsPiAzMDA5Ozs7O047R0xZUEggRk9SIFZFUlRJQ0FMIENMT1NJTkcgQU5HTEUgQlJBQ0tFVDs7OzsKK0ZFNDE7UFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIExFRlQgQ09STkVSIEJSQUNLRVQ7UHM7MDtPTjs8dmVydGljYWw+IDMwMEM7Ozs7TjtHTFlQSCBGT1IgVkVSVElDQUwgT1BFTklORyBDT1JORVIgQlJBQ0tFVDs7OzsKK0ZFNDI7UFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIFJJR0hUIENPUk5FUiBCUkFDS0VUO1BlOzA7T047PHZlcnRpY2FsPiAzMDBEOzs7O047R0xZUEggRk9SIFZFUlRJQ0FMIENMT1NJTkcgQ09STkVSIEJSQUNLRVQ7Ozs7CitGRTQzO1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBMRUZUIFdISVRFIENPUk5FUiBCUkFDS0VUO1BzOzA7T047PHZlcnRpY2FsPiAzMDBFOzs7O047R0xZUEggRk9SIFZFUlRJQ0FMIE9QRU5JTkcgV0hJVEUgQ09STkVSIEJSQUNLRVQ7Ozs7CitGRTQ0O1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBSSUdIVCBXSElURSBDT1JORVIgQlJBQ0tFVDtQZTswO09OOzx2ZXJ0aWNhbD4gMzAwRjs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBDTE9TSU5HIFdISVRFIENPUk5FUiBCUkFDS0VUOzs7OworRkU0NTtTRVNBTUUgRE9UO1BvOzA7T047Ozs7O047Ozs7OworRkU0NjtXSElURSBTRVNBTUUgRE9UO1BvOzA7T047Ozs7O047Ozs7OworRkU0OTtEQVNIRUQgT1ZFUkxJTkU7UG87MDtPTjs8Y29tcGF0PiAyMDNFOzs7O047U1BBQ0lORyBEQVNIRUQgT1ZFUlNDT1JFOzs7OworRkU0QTtDRU5UUkVMSU5FIE9WRVJMSU5FO1BvOzA7T047PGNvbXBhdD4gMjAzRTs7OztOO1NQQUNJTkcgQ0VOVEVSTElORSBPVkVSU0NPUkU7Ozs7CitGRTRCO1dBVlkgT1ZFUkxJTkU7UG87MDtPTjs8Y29tcGF0PiAyMDNFOzs7O047U1BBQ0lORyBXQVZZIE9WRVJTQ09SRTs7OzsKK0ZFNEM7RE9VQkxFIFdBVlkgT1ZFUkxJTkU7UG87MDtPTjs8Y29tcGF0PiAyMDNFOzs7O047U1BBQ0lORyBET1VCTEUgV0FWWSBPVkVSU0NPUkU7Ozs7CitGRTREO0RBU0hFRCBMT1cgTElORTtQYzswO09OOzxjb21wYXQ+IDAwNUY7Ozs7TjtTUEFDSU5HIERBU0hFRCBVTkRFUlNDT1JFOzs7OworRkU0RTtDRU5UUkVMSU5FIExPVyBMSU5FO1BjOzA7T047PGNvbXBhdD4gMDA1Rjs7OztOO1NQQUNJTkcgQ0VOVEVSTElORSBVTkRFUlNDT1JFOzs7OworRkU0RjtXQVZZIExPVyBMSU5FO1BjOzA7T047PGNvbXBhdD4gMDA1Rjs7OztOO1NQQUNJTkcgV0FWWSBVTkRFUlNDT1JFOzs7OworRkU1MDtTTUFMTCBDT01NQTtQbzswO0NTOzxzbWFsbD4gMDAyQzs7OztOOzs7OzsKK0ZFNTE7U01BTEwgSURFT0dSQVBISUMgQ09NTUE7UG87MDtPTjs8c21hbGw+IDMwMDE7Ozs7Tjs7Ozs7CitGRTUyO1NNQUxMIEZVTEwgU1RPUDtQbzswO0NTOzxzbWFsbD4gMDAyRTs7OztOO1NNQUxMIFBFUklPRDs7OzsKK0ZFNTQ7U01BTEwgU0VNSUNPTE9OO1BvOzA7T047PHNtYWxsPiAwMDNCOzs7O047Ozs7OworRkU1NTtTTUFMTCBDT0xPTjtQbzswO0NTOzxzbWFsbD4gMDAzQTs7OztOOzs7OzsKK0ZFNTY7U01BTEwgUVVFU1RJT04gTUFSSztQbzswO09OOzxzbWFsbD4gMDAzRjs7OztOOzs7OzsKK0ZFNTc7U01BTEwgRVhDTEFNQVRJT04gTUFSSztQbzswO09OOzxzbWFsbD4gMDAyMTs7OztOOzs7OzsKK0ZFNTg7U01BTEwgRU0gREFTSDtQZDswO09OOzxzbWFsbD4gMjAxNDs7OztOOzs7OzsKK0ZFNTk7U01BTEwgTEVGVCBQQVJFTlRIRVNJUztQczswO09OOzxzbWFsbD4gMDAyODs7OztOO1NNQUxMIE9QRU5JTkcgUEFSRU5USEVTSVM7Ozs7CitGRTVBO1NNQUxMIFJJR0hUIFBBUkVOVEhFU0lTO1BlOzA7T047PHNtYWxsPiAwMDI5Ozs7O047U01BTEwgQ0xPU0lORyBQQVJFTlRIRVNJUzs7OzsKK0ZFNUI7U01BTEwgTEVGVCBDVVJMWSBCUkFDS0VUO1BzOzA7T047PHNtYWxsPiAwMDdCOzs7O047U01BTEwgT1BFTklORyBDVVJMWSBCUkFDS0VUOzs7OworRkU1QztTTUFMTCBSSUdIVCBDVVJMWSBCUkFDS0VUO1BlOzA7T047PHNtYWxsPiAwMDdEOzs7O047U01BTEwgQ0xPU0lORyBDVVJMWSBCUkFDS0VUOzs7OworRkU1RDtTTUFMTCBMRUZUIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQ7UHM7MDtPTjs8c21hbGw+IDMwMTQ7Ozs7TjtTTUFMTCBPUEVOSU5HIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQ7Ozs7CitGRTVFO1NNQUxMIFJJR0hUIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQ7UGU7MDtPTjs8c21hbGw+IDMwMTU7Ozs7TjtTTUFMTCBDTE9TSU5HIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQ7Ozs7CitGRTVGO1NNQUxMIE5VTUJFUiBTSUdOO1BvOzA7RVQ7PHNtYWxsPiAwMDIzOzs7O047Ozs7OworRkU2MDtTTUFMTCBBTVBFUlNBTkQ7UG87MDtPTjs8c21hbGw+IDAwMjY7Ozs7Tjs7Ozs7CitGRTYxO1NNQUxMIEFTVEVSSVNLO1BvOzA7T047PHNtYWxsPiAwMDJBOzs7O047Ozs7OworRkU2MjtTTUFMTCBQTFVTIFNJR047U207MDtFVDs8c21hbGw+IDAwMkI7Ozs7Tjs7Ozs7CitGRTYzO1NNQUxMIEhZUEhFTi1NSU5VUztQZDswO0VUOzxzbWFsbD4gMDAyRDs7OztOOzs7OzsKK0ZFNjQ7U01BTEwgTEVTUy1USEFOIFNJR047U207MDtPTjs8c21hbGw+IDAwM0M7Ozs7Tjs7Ozs7CitGRTY1O1NNQUxMIEdSRUFURVItVEhBTiBTSUdOO1NtOzA7T047PHNtYWxsPiAwMDNFOzs7O047Ozs7OworRkU2NjtTTUFMTCBFUVVBTFMgU0lHTjtTbTswO09OOzxzbWFsbD4gMDAzRDs7OztOOzs7OzsKK0ZFNjg7U01BTEwgUkVWRVJTRSBTT0xJRFVTO1BvOzA7T047PHNtYWxsPiAwMDVDOzs7O047U01BTEwgQkFDS1NMQVNIOzs7OworRkU2OTtTTUFMTCBET0xMQVIgU0lHTjtTYzswO0VUOzxzbWFsbD4gMDAyNDs7OztOOzs7OzsKK0ZFNkE7U01BTEwgUEVSQ0VOVCBTSUdOO1BvOzA7RVQ7PHNtYWxsPiAwMDI1Ozs7O047Ozs7OworRkU2QjtTTUFMTCBDT01NRVJDSUFMIEFUO1BvOzA7T047PHNtYWxsPiAwMDQwOzs7O047Ozs7OworRkU3MDtBUkFCSUMgRkFUSEFUQU4gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDAyMCAwNjRCOzs7O047QVJBQklDIFNQQUNJTkcgRkFUSEFUQU47Ozs7CitGRTcxO0FSQUJJQyBUQVRXRUVMIFdJVEggRkFUSEFUQU4gQUJPVkU7TG87MDtBTDs8bWVkaWFsPiAwNjQwIDA2NEI7Ozs7TjtBUkFCSUMgRkFUSEFUQU4gT04gVEFUV0VFTDs7OzsKK0ZFNzI7QVJBQklDIERBTU1BVEFOIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDAwMjAgMDY0Qzs7OztOO0FSQUJJQyBTUEFDSU5HIERBTU1BVEFOOzs7OworRkU3MztBUkFCSUMgVEFJTCBGUkFHTUVOVDtMbzswO0FMOzs7OztOOzs7OzsKK0ZFNzQ7QVJBQklDIEtBU1JBVEFOIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDAwMjAgMDY0RDs7OztOO0FSQUJJQyBTUEFDSU5HIEtBU1JBVEFOOzs7OworRkU3NjtBUkFCSUMgRkFUSEEgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDAyMCAwNjRFOzs7O047QVJBQklDIFNQQUNJTkcgRkFUSEFIOzs7OworRkU3NztBUkFCSUMgRkFUSEEgTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjQwIDA2NEU7Ozs7TjtBUkFCSUMgRkFUSEFIIE9OIFRBVFdFRUw7Ozs7CitGRTc4O0FSQUJJQyBEQU1NQSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwMDIwIDA2NEY7Ozs7TjtBUkFCSUMgU1BBQ0lORyBEQU1NQUg7Ozs7CitGRTc5O0FSQUJJQyBEQU1NQSBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2NDAgMDY0Rjs7OztOO0FSQUJJQyBEQU1NQUggT04gVEFUV0VFTDs7OzsKK0ZFN0E7QVJBQklDIEtBU1JBIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDAwMjAgMDY1MDs7OztOO0FSQUJJQyBTUEFDSU5HIEtBU1JBSDs7OzsKK0ZFN0I7QVJBQklDIEtBU1JBIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDY0MCAwNjUwOzs7O047QVJBQklDIEtBU1JBSCBPTiBUQVRXRUVMOzs7OworRkU3QztBUkFCSUMgU0hBRERBIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDAwMjAgMDY1MTs7OztOO0FSQUJJQyBTUEFDSU5HIFNIQUREQUg7Ozs7CitGRTdEO0FSQUJJQyBTSEFEREEgTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjQwIDA2NTE7Ozs7TjtBUkFCSUMgU0hBRERBSCBPTiBUQVRXRUVMOzs7OworRkU3RTtBUkFCSUMgU1VLVU4gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDAyMCAwNjUyOzs7O047QVJBQklDIFNQQUNJTkcgU1VLVU47Ozs7CitGRTdGO0FSQUJJQyBTVUtVTiBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2NDAgMDY1Mjs7OztOO0FSQUJJQyBTVUtVTiBPTiBUQVRXRUVMOzs7OworRkU4MDtBUkFCSUMgTEVUVEVSIEhBTVpBIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MjE7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgSEFNWkFIOzs7OworRkU4MTtBUkFCSUMgTEVUVEVSIEFMRUYgV0lUSCBNQUREQSBBQk9WRSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjIyOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIE1BRERBSCBPTiBBTEVGOzs7OworRkU4MjtBUkFCSUMgTEVUVEVSIEFMRUYgV0lUSCBNQUREQSBBQk9WRSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjIyOzs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBNQUREQUggT04gQUxFRjs7OzsKK0ZFODM7QVJBQklDIExFVFRFUiBBTEVGIFdJVEggSEFNWkEgQUJPVkUgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyMzs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBIQU1aQUggT04gQUxFRjs7OzsKK0ZFODQ7QVJBQklDIExFVFRFUiBBTEVGIFdJVEggSEFNWkEgQUJPVkUgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyMzs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgSEFNWkFIIE9OIEFMRUY7Ozs7CitGRTg1O0FSQUJJQyBMRVRURVIgV0FXIFdJVEggSEFNWkEgQUJPVkUgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyNDs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBIQU1aQUggT04gV0FXOzs7OworRkU4NjtBUkFCSUMgTEVUVEVSIFdBVyBXSVRIIEhBTVpBIEFCT1ZFIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MjQ7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIEhBTVpBSCBPTiBXQVc7Ozs7CitGRTg3O0FSQUJJQyBMRVRURVIgQUxFRiBXSVRIIEhBTVpBIEJFTE9XIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MjU7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgSEFNWkFIIFVOREVSIEFMRUY7Ozs7CitGRTg4O0FSQUJJQyBMRVRURVIgQUxFRiBXSVRIIEhBTVpBIEJFTE9XIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MjU7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIEhBTVpBSCBVTkRFUiBBTEVGOzs7OworRkU4OTtBUkFCSUMgTEVUVEVSIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MjY7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgSEFNWkFIIE9OIFlBOzs7OworRkU4QTtBUkFCSUMgTEVUVEVSIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MjY7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIEhBTVpBSCBPTiBZQTs7OzsKK0ZFOEI7QVJBQklDIExFVFRFUiBZRUggV0lUSCBIQU1aQSBBQk9WRSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyNjs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBIQU1aQUggT04gWUE7Ozs7CitGRThDO0FSQUJJQyBMRVRURVIgWUVIIFdJVEggSEFNWkEgQUJPVkUgTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjI2Ozs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgSEFNWkFIIE9OIFlBOzs7OworRkU4RDtBUkFCSUMgTEVUVEVSIEFMRUYgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyNzs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBBTEVGOzs7OworRkU4RTtBUkFCSUMgTEVUVEVSIEFMRUYgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyNzs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgQUxFRjs7OzsKK0ZFOEY7QVJBQklDIExFVFRFUiBCRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyODs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBCQUE7Ozs7CitGRTkwO0FSQUJJQyBMRVRURVIgQkVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2Mjg7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIEJBQTs7OzsKK0ZFOTE7QVJBQklDIExFVFRFUiBCRUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2Mjg7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgQkFBOzs7OworRkU5MjtBUkFCSUMgTEVUVEVSIEJFSCBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2Mjg7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBCQUE7Ozs7CitGRTkzO0FSQUJJQyBMRVRURVIgVEVIIE1BUkJVVEEgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyOTs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBUQUEgTUFSQlVUQUg7Ozs7CitGRTk0O0FSQUJJQyBMRVRURVIgVEVIIE1BUkJVVEEgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyOTs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgVEFBIE1BUkJVVEFIOzs7OworRkU5NTtBUkFCSUMgTEVUVEVSIFRFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjJBOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIFRBQTs7OzsKK0ZFOTY7QVJBQklDIExFVFRFUiBURUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyQTs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgVEFBOzs7OworRkU5NztBUkFCSUMgTEVUVEVSIFRFSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyQTs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBUQUE7Ozs7CitGRTk4O0FSQUJJQyBMRVRURVIgVEVIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDYyQTs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIFRBQTs7OzsKK0ZFOTk7QVJBQklDIExFVFRFUiBUSEVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MkI7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgVEhBQTs7OzsKK0ZFOUE7QVJBQklDIExFVFRFUiBUSEVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkI7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIFRIQUE7Ozs7CitGRTlCO0FSQUJJQyBMRVRURVIgVEhFSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyQjs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBUSEFBOzs7OworRkU5QztBUkFCSUMgTEVUVEVSIFRIRUggTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjJCOzs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgVEhBQTs7OzsKK0ZFOUQ7QVJBQklDIExFVFRFUiBKRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MkM7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgSkVFTTs7OzsKK0ZFOUU7QVJBQklDIExFVFRFUiBKRUVNIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkM7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIEpFRU07Ozs7CitGRTlGO0FSQUJJQyBMRVRURVIgSkVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyQzs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBKRUVNOzs7OworRkVBMDtBUkFCSUMgTEVUVEVSIEpFRU0gTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjJDOzs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgSkVFTTs7OzsKK0ZFQTE7QVJBQklDIExFVFRFUiBIQUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyRDs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBIQUE7Ozs7CitGRUEyO0FSQUJJQyBMRVRURVIgSEFIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkQ7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIEhBQTs7OzsKK0ZFQTM7QVJBQklDIExFVFRFUiBIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MkQ7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgSEFBOzs7OworRkVBNDtBUkFCSUMgTEVUVEVSIEhBSCBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2MkQ7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBIQUE7Ozs7CitGRUE1O0FSQUJJQyBMRVRURVIgS0hBSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjJFOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIEtIQUE7Ozs7CitGRUE2O0FSQUJJQyBMRVRURVIgS0hBSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjJFOzs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBLSEFBOzs7OworRkVBNztBUkFCSUMgTEVUVEVSIEtIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MkU7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgS0hBQTs7OzsKK0ZFQTg7QVJBQklDIExFVFRFUiBLSEFIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDYyRTs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIEtIQUE7Ozs7CitGRUE5O0FSQUJJQyBMRVRURVIgREFMIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MkY7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgREFMOzs7OworRkVBQTtBUkFCSUMgTEVUVEVSIERBTCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjJGOzs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBEQUw7Ozs7CitGRUFCO0FSQUJJQyBMRVRURVIgVEhBTCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjMwOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIFRIQUw7Ozs7CitGRUFDO0FSQUJJQyBMRVRURVIgVEhBTCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjMwOzs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBUSEFMOzs7OworRkVBRDtBUkFCSUMgTEVUVEVSIFJFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjMxOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIFJBOzs7OworRkVBRTtBUkFCSUMgTEVUVEVSIFJFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjMxOzs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBSQTs7OzsKK0ZFQUY7QVJBQklDIExFVFRFUiBaQUlOIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzI7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgWkFJTjs7OzsKK0ZFQjA7QVJBQklDIExFVFRFUiBaQUlOIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzI7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIFpBSU47Ozs7CitGRUIxO0FSQUJJQyBMRVRURVIgU0VFTiBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjMzOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIFNFRU47Ozs7CitGRUIyO0FSQUJJQyBMRVRURVIgU0VFTiBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjMzOzs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBTRUVOOzs7OworRkVCMztBUkFCSUMgTEVUVEVSIFNFRU4gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MzM7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgU0VFTjs7OzsKK0ZFQjQ7QVJBQklDIExFVFRFUiBTRUVOIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDYzMzs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIFNFRU47Ozs7CitGRUI1O0FSQUJJQyBMRVRURVIgU0hFRU4gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzNDs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBTSEVFTjs7OzsKK0ZFQjY7QVJBQklDIExFVFRFUiBTSEVFTiBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM0Ozs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBTSEVFTjs7OzsKK0ZFQjc7QVJBQklDIExFVFRFUiBTSEVFTiBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzNDs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBTSEVFTjs7OzsKK0ZFQjg7QVJBQklDIExFVFRFUiBTSEVFTiBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2MzQ7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBTSEVFTjs7OzsKK0ZFQjk7QVJBQklDIExFVFRFUiBTQUQgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzNTs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBTQUQ7Ozs7CitGRUJBO0FSQUJJQyBMRVRURVIgU0FEIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzU7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIFNBRDs7OzsKK0ZFQkI7QVJBQklDIExFVFRFUiBTQUQgSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MzU7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgU0FEOzs7OworRkVCQztBUkFCSUMgTEVUVEVSIFNBRCBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2MzU7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBTQUQ7Ozs7CitGRUJEO0FSQUJJQyBMRVRURVIgREFEIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzY7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgREFEOzs7OworRkVCRTtBUkFCSUMgTEVUVEVSIERBRCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM2Ozs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBEQUQ7Ozs7CitGRUJGO0FSQUJJQyBMRVRURVIgREFEIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjM2Ozs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIERBRDs7OzsKK0ZFQzA7QVJBQklDIExFVFRFUiBEQUQgTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjM2Ozs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgREFEOzs7OworRkVDMTtBUkFCSUMgTEVUVEVSIFRBSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjM3Ozs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIFRBSDs7OzsKK0ZFQzI7QVJBQklDIExFVFRFUiBUQUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzNzs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgVEFIOzs7OworRkVDMztBUkFCSUMgTEVUVEVSIFRBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzNzs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBUQUg7Ozs7CitGRUM0O0FSQUJJQyBMRVRURVIgVEFIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDYzNzs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIFRBSDs7OzsKK0ZFQzU7QVJBQklDIExFVFRFUiBaQUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzODs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBESEFIOzs7OworRkVDNjtBUkFCSUMgTEVUVEVSIFpBSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM4Ozs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBESEFIOzs7OworRkVDNztBUkFCSUMgTEVUVEVSIFpBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzODs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBESEFIOzs7OworRkVDODtBUkFCSUMgTEVUVEVSIFpBSCBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2Mzg7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBESEFIOzs7OworRkVDOTtBUkFCSUMgTEVUVEVSIEFJTiBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjM5Ozs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIEFJTjs7OzsKK0ZFQ0E7QVJBQklDIExFVFRFUiBBSU4gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzOTs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgQUlOOzs7OworRkVDQjtBUkFCSUMgTEVUVEVSIEFJTiBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzOTs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBBSU47Ozs7CitGRUNDO0FSQUJJQyBMRVRURVIgQUlOIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDYzOTs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIEFJTjs7OzsKK0ZFQ0Q7QVJBQklDIExFVFRFUiBHSEFJTiBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjNBOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIEdIQUlOOzs7OworRkVDRTtBUkFCSUMgTEVUVEVSIEdIQUlOIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2M0E7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIEdIQUlOOzs7OworRkVDRjtBUkFCSUMgTEVUVEVSIEdIQUlOIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjNBOzs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIEdIQUlOOzs7OworRkVEMDtBUkFCSUMgTEVUVEVSIEdIQUlOIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDYzQTs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIEdIQUlOOzs7OworRkVEMTtBUkFCSUMgTEVUVEVSIEZFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQxOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIEZBOzs7OworRkVEMjtBUkFCSUMgTEVUVEVSIEZFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQxOzs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBGQTs7OzsKK0ZFRDM7QVJBQklDIExFVFRFUiBGRUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDE7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgRkE7Ozs7CitGRUQ0O0FSQUJJQyBMRVRURVIgRkVIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDY0MTs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIEZBOzs7OworRkVENTtBUkFCSUMgTEVUVEVSIFFBRiBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQyOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIFFBRjs7OzsKK0ZFRDY7QVJBQklDIExFVFRFUiBRQUYgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0Mjs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgUUFGOzs7OworRkVENztBUkFCSUMgTEVUVEVSIFFBRiBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0Mjs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBRQUY7Ozs7CitGRUQ4O0FSQUJJQyBMRVRURVIgUUFGIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDY0Mjs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIFFBRjs7OzsKK0ZFRDk7QVJBQklDIExFVFRFUiBLQUYgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0Mzs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBDQUY7Ozs7CitGRURBO0FSQUJJQyBMRVRURVIgS0FGIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDM7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIENBRjs7OzsKK0ZFREI7QVJBQklDIExFVFRFUiBLQUYgSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDM7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgQ0FGOzs7OworRkVEQztBUkFCSUMgTEVUVEVSIEtBRiBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2NDM7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBDQUY7Ozs7CitGRUREO0FSQUJJQyBMRVRURVIgTEFNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDQ7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgTEFNOzs7OworRkVERTtBUkFCSUMgTEVUVEVSIExBTSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ0Ozs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBMQU07Ozs7CitGRURGO0FSQUJJQyBMRVRURVIgTEFNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ0Ozs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIExBTTs7OzsKK0ZFRTA7QVJBQklDIExFVFRFUiBMQU0gTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjQ0Ozs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgTEFNOzs7OworRkVFMTtBUkFCSUMgTEVUVEVSIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0NTs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBNRUVNOzs7OworRkVFMjtBUkFCSUMgTEVUVEVSIE1FRU0gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0NTs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgTUVFTTs7OzsKK0ZFRTM7QVJBQklDIExFVFRFUiBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ1Ozs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIE1FRU07Ozs7CitGRUU0O0FSQUJJQyBMRVRURVIgTUVFTSBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2NDU7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBNRUVNOzs7OworRkVFNTtBUkFCSUMgTEVUVEVSIE5PT04gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0Njs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBOT09OOzs7OworRkVFNjtBUkFCSUMgTEVUVEVSIE5PT04gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0Njs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgTk9PTjs7OzsKK0ZFRTc7QVJBQklDIExFVFRFUiBOT09OIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ2Ozs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIE5PT047Ozs7CitGRUU4O0FSQUJJQyBMRVRURVIgTk9PTiBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2NDY7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBOT09OOzs7OworRkVFOTtBUkFCSUMgTEVUVEVSIEhFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ3Ozs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIEhBOzs7OworRkVFQTtBUkFCSUMgTEVUVEVSIEhFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ3Ozs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBIQTs7OzsKK0ZFRUI7QVJBQklDIExFVFRFUiBIRUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDc7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgSEE7Ozs7CitGRUVDO0FSQUJJQyBMRVRURVIgSEVIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDY0Nzs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIEhBOzs7OworRkVFRDtBUkFCSUMgTEVUVEVSIFdBVyBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ4Ozs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIFdBVzs7OzsKK0ZFRUU7QVJBQklDIExFVFRFUiBXQVcgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0ODs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgV0FXOzs7OworRkVFRjtBUkFCSUMgTEVUVEVSIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ5Ozs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIEFMRUYgTUFRU1VSQUg7Ozs7CitGRUYwO0FSQUJJQyBMRVRURVIgQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDk7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIEFMRUYgTUFRU1VSQUg7Ozs7CitGRUYxO0FSQUJJQyBMRVRURVIgWUVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NEE7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgWUE7Ozs7CitGRUYyO0FSQUJJQyBMRVRURVIgWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NEE7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIFlBOzs7OworRkVGMztBUkFCSUMgTEVUVEVSIFlFSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0QTs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBZQTs7OzsKK0ZFRjQ7QVJBQklDIExFVFRFUiBZRUggTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjRBOzs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgWUE7Ozs7CitGRUY1O0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBBTEVGIFdJVEggTUFEREEgQUJPVkUgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0NCAwNjIyOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIE1BRERBSCBPTiBMSUdBVFVSRSBMQU0gQUxFRjs7OzsKK0ZFRjY7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEFMRUYgV0lUSCBNQUREQSBBQk9WRSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ0IDA2MjI7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIE1BRERBSCBPTiBMSUdBVFVSRSBMQU0gQUxFRjs7OzsKK0ZFRjc7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEFMRUYgV0lUSCBIQU1aQSBBQk9WRSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ0IDA2MjM7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgSEFNWkFIIE9OIExJR0FUVVJFIExBTSBBTEVGOzs7OworRkVGODtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggQUxFRiBXSVRIIEhBTVpBIEFCT1ZFIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDQgMDYyMzs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgSEFNWkFIIE9OIExJR0FUVVJFIExBTSBBTEVGOzs7OworRkVGOTtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggQUxFRiBXSVRIIEhBTVpBIEJFTE9XIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDQgMDYyNTs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBIQU1aQUggVU5ERVIgTElHQVRVUkUgTEFNIEFMRUY7Ozs7CitGRUZBO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBBTEVGIFdJVEggSEFNWkEgQkVMT1cgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0NCAwNjI1Ozs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBIQU1aQUggVU5ERVIgTElHQVRVUkUgTEFNIEFMRUY7Ozs7CitGRUZCO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBBTEVGIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDQgMDYyNzs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBMSUdBVFVSRSBMQU0gQUxFRjs7OzsKK0ZFRkM7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEFMRUYgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0NCAwNjI3Ozs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBMSUdBVFVSRSBMQU0gQUxFRjs7OzsKK0ZFRkY7WkVSTyBXSURUSCBOTy1CUkVBSyBTUEFDRTtDZjswO0JOOzs7OztOO0JZVEUgT1JERVIgTUFSSzs7OzsKK0ZGMDE7RlVMTFdJRFRIIEVYQ0xBTUFUSU9OIE1BUks7UG87MDtPTjs8d2lkZT4gMDAyMTs7OztOOzs7OzsKK0ZGMDI7RlVMTFdJRFRIIFFVT1RBVElPTiBNQVJLO1BvOzA7T047PHdpZGU+IDAwMjI7Ozs7Tjs7Ozs7CitGRjAzO0ZVTExXSURUSCBOVU1CRVIgU0lHTjtQbzswO0VUOzx3aWRlPiAwMDIzOzs7O047Ozs7OworRkYwNDtGVUxMV0lEVEggRE9MTEFSIFNJR047U2M7MDtFVDs8d2lkZT4gMDAyNDs7OztOOzs7OzsKK0ZGMDU7RlVMTFdJRFRIIFBFUkNFTlQgU0lHTjtQbzswO0VUOzx3aWRlPiAwMDI1Ozs7O047Ozs7OworRkYwNjtGVUxMV0lEVEggQU1QRVJTQU5EO1BvOzA7T047PHdpZGU+IDAwMjY7Ozs7Tjs7Ozs7CitGRjA3O0ZVTExXSURUSCBBUE9TVFJPUEhFO1BvOzA7T047PHdpZGU+IDAwMjc7Ozs7Tjs7Ozs7CitGRjA4O0ZVTExXSURUSCBMRUZUIFBBUkVOVEhFU0lTO1BzOzA7T047PHdpZGU+IDAwMjg7Ozs7WTtGVUxMV0lEVEggT1BFTklORyBQQVJFTlRIRVNJUzs7OzsKK0ZGMDk7RlVMTFdJRFRIIFJJR0hUIFBBUkVOVEhFU0lTO1BlOzA7T047PHdpZGU+IDAwMjk7Ozs7WTtGVUxMV0lEVEggQ0xPU0lORyBQQVJFTlRIRVNJUzs7OzsKK0ZGMEE7RlVMTFdJRFRIIEFTVEVSSVNLO1BvOzA7T047PHdpZGU+IDAwMkE7Ozs7Tjs7Ozs7CitGRjBCO0ZVTExXSURUSCBQTFVTIFNJR047U207MDtFVDs8d2lkZT4gMDAyQjs7OztOOzs7OzsKK0ZGMEM7RlVMTFdJRFRIIENPTU1BO1BvOzA7Q1M7PHdpZGU+IDAwMkM7Ozs7Tjs7Ozs7CitGRjBEO0ZVTExXSURUSCBIWVBIRU4tTUlOVVM7UGQ7MDtFVDs8d2lkZT4gMDAyRDs7OztOOzs7OzsKK0ZGMEU7RlVMTFdJRFRIIEZVTEwgU1RPUDtQbzswO0NTOzx3aWRlPiAwMDJFOzs7O047RlVMTFdJRFRIIFBFUklPRDs7OzsKK0ZGMEY7RlVMTFdJRFRIIFNPTElEVVM7UG87MDtFUzs8d2lkZT4gMDAyRjs7OztOO0ZVTExXSURUSCBTTEFTSDs7OzsKK0ZGMTA7RlVMTFdJRFRIIERJR0lUIFpFUk87TmQ7MDtFTjs8d2lkZT4gMDAzMDswOzA7MDtOOzs7OzsKK0ZGMTE7RlVMTFdJRFRIIERJR0lUIE9ORTtOZDswO0VOOzx3aWRlPiAwMDMxOzE7MTsxO047Ozs7OworRkYxMjtGVUxMV0lEVEggRElHSVQgVFdPO05kOzA7RU47PHdpZGU+IDAwMzI7MjsyOzI7Tjs7Ozs7CitGRjEzO0ZVTExXSURUSCBESUdJVCBUSFJFRTtOZDswO0VOOzx3aWRlPiAwMDMzOzM7MzszO047Ozs7OworRkYxNDtGVUxMV0lEVEggRElHSVQgRk9VUjtOZDswO0VOOzx3aWRlPiAwMDM0OzQ7NDs0O047Ozs7OworRkYxNTtGVUxMV0lEVEggRElHSVQgRklWRTtOZDswO0VOOzx3aWRlPiAwMDM1OzU7NTs1O047Ozs7OworRkYxNjtGVUxMV0lEVEggRElHSVQgU0lYO05kOzA7RU47PHdpZGU+IDAwMzY7Njs2OzY7Tjs7Ozs7CitGRjE3O0ZVTExXSURUSCBESUdJVCBTRVZFTjtOZDswO0VOOzx3aWRlPiAwMDM3Ozc7Nzs3O047Ozs7OworRkYxODtGVUxMV0lEVEggRElHSVQgRUlHSFQ7TmQ7MDtFTjs8d2lkZT4gMDAzODs4Ozg7ODtOOzs7OzsKK0ZGMTk7RlVMTFdJRFRIIERJR0lUIE5JTkU7TmQ7MDtFTjs8d2lkZT4gMDAzOTs5Ozk7OTtOOzs7OzsKK0ZGMUE7RlVMTFdJRFRIIENPTE9OO1BvOzA7Q1M7PHdpZGU+IDAwM0E7Ozs7Tjs7Ozs7CitGRjFCO0ZVTExXSURUSCBTRU1JQ09MT047UG87MDtPTjs8d2lkZT4gMDAzQjs7OztOOzs7OzsKK0ZGMUM7RlVMTFdJRFRIIExFU1MtVEhBTiBTSUdOO1NtOzA7T047PHdpZGU+IDAwM0M7Ozs7WTs7Ozs7CitGRjFEO0ZVTExXSURUSCBFUVVBTFMgU0lHTjtTbTswO09OOzx3aWRlPiAwMDNEOzs7O047Ozs7OworRkYxRTtGVUxMV0lEVEggR1JFQVRFUi1USEFOIFNJR047U207MDtPTjs8d2lkZT4gMDAzRTs7OztZOzs7OzsKK0ZGMUY7RlVMTFdJRFRIIFFVRVNUSU9OIE1BUks7UG87MDtPTjs8d2lkZT4gMDAzRjs7OztOOzs7OzsKK0ZGMjA7RlVMTFdJRFRIIENPTU1FUkNJQUwgQVQ7UG87MDtPTjs8d2lkZT4gMDA0MDs7OztOOzs7OzsKK0ZGMjE7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEE7THU7MDtMOzx3aWRlPiAwMDQxOzs7O047Ozs7RkY0MTsKK0ZGMjI7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEI7THU7MDtMOzx3aWRlPiAwMDQyOzs7O047Ozs7RkY0MjsKK0ZGMjM7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEM7THU7MDtMOzx3aWRlPiAwMDQzOzs7O047Ozs7RkY0MzsKK0ZGMjQ7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEQ7THU7MDtMOzx3aWRlPiAwMDQ0Ozs7O047Ozs7RkY0NDsKK0ZGMjU7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEU7THU7MDtMOzx3aWRlPiAwMDQ1Ozs7O047Ozs7RkY0NTsKK0ZGMjY7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEY7THU7MDtMOzx3aWRlPiAwMDQ2Ozs7O047Ozs7RkY0NjsKK0ZGMjc7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEc7THU7MDtMOzx3aWRlPiAwMDQ3Ozs7O047Ozs7RkY0NzsKK0ZGMjg7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEg7THU7MDtMOzx3aWRlPiAwMDQ4Ozs7O047Ozs7RkY0ODsKK0ZGMjk7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEk7THU7MDtMOzx3aWRlPiAwMDQ5Ozs7O047Ozs7RkY0OTsKK0ZGMkE7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEo7THU7MDtMOzx3aWRlPiAwMDRBOzs7O047Ozs7RkY0QTsKK0ZGMkI7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEs7THU7MDtMOzx3aWRlPiAwMDRCOzs7O047Ozs7RkY0QjsKK0ZGMkM7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEw7THU7MDtMOzx3aWRlPiAwMDRDOzs7O047Ozs7RkY0QzsKK0ZGMkQ7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIE07THU7MDtMOzx3aWRlPiAwMDREOzs7O047Ozs7RkY0RDsKK0ZGMkU7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIE47THU7MDtMOzx3aWRlPiAwMDRFOzs7O047Ozs7RkY0RTsKK0ZGMkY7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIE87THU7MDtMOzx3aWRlPiAwMDRGOzs7O047Ozs7RkY0RjsKK0ZGMzA7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFA7THU7MDtMOzx3aWRlPiAwMDUwOzs7O047Ozs7RkY1MDsKK0ZGMzE7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFE7THU7MDtMOzx3aWRlPiAwMDUxOzs7O047Ozs7RkY1MTsKK0ZGMzI7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFI7THU7MDtMOzx3aWRlPiAwMDUyOzs7O047Ozs7RkY1MjsKK0ZGMzM7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFM7THU7MDtMOzx3aWRlPiAwMDUzOzs7O047Ozs7RkY1MzsKK0ZGMzQ7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFQ7THU7MDtMOzx3aWRlPiAwMDU0Ozs7O047Ozs7RkY1NDsKK0ZGMzU7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFU7THU7MDtMOzx3aWRlPiAwMDU1Ozs7O047Ozs7RkY1NTsKK0ZGMzY7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFY7THU7MDtMOzx3aWRlPiAwMDU2Ozs7O047Ozs7RkY1NjsKK0ZGMzc7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFc7THU7MDtMOzx3aWRlPiAwMDU3Ozs7O047Ozs7RkY1NzsKK0ZGMzg7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFg7THU7MDtMOzx3aWRlPiAwMDU4Ozs7O047Ozs7RkY1ODsKK0ZGMzk7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFk7THU7MDtMOzx3aWRlPiAwMDU5Ozs7O047Ozs7RkY1OTsKK0ZGM0E7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFo7THU7MDtMOzx3aWRlPiAwMDVBOzs7O047Ozs7RkY1QTsKK0ZGM0I7RlVMTFdJRFRIIExFRlQgU1FVQVJFIEJSQUNLRVQ7UHM7MDtPTjs8d2lkZT4gMDA1Qjs7OztZO0ZVTExXSURUSCBPUEVOSU5HIFNRVUFSRSBCUkFDS0VUOzs7OworRkYzQztGVUxMV0lEVEggUkVWRVJTRSBTT0xJRFVTO1BvOzA7T047PHdpZGU+IDAwNUM7Ozs7TjtGVUxMV0lEVEggQkFDS1NMQVNIOzs7OworRkYzRDtGVUxMV0lEVEggUklHSFQgU1FVQVJFIEJSQUNLRVQ7UGU7MDtPTjs8d2lkZT4gMDA1RDs7OztZO0ZVTExXSURUSCBDTE9TSU5HIFNRVUFSRSBCUkFDS0VUOzs7OworRkYzRTtGVUxMV0lEVEggQ0lSQ1VNRkxFWCBBQ0NFTlQ7U2s7MDtPTjs8d2lkZT4gMDA1RTs7OztOO0ZVTExXSURUSCBTUEFDSU5HIENJUkNVTUZMRVg7Ozs7CitGRjNGO0ZVTExXSURUSCBMT1cgTElORTtQYzswO09OOzx3aWRlPiAwMDVGOzs7O047RlVMTFdJRFRIIFNQQUNJTkcgVU5ERVJTQ09SRTs7OzsKK0ZGNDA7RlVMTFdJRFRIIEdSQVZFIEFDQ0VOVDtTazswO09OOzx3aWRlPiAwMDYwOzs7O047RlVMTFdJRFRIIFNQQUNJTkcgR1JBVkU7Ozs7CitGRjQxO0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgQTtMbDswO0w7PHdpZGU+IDAwNjE7Ozs7Tjs7O0ZGMjE7O0ZGMjEKK0ZGNDI7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBCO0xsOzA7TDs8d2lkZT4gMDA2Mjs7OztOOzs7RkYyMjs7RkYyMgorRkY0MztGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIEM7TGw7MDtMOzx3aWRlPiAwMDYzOzs7O047OztGRjIzOztGRjIzCitGRjQ0O0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgRDtMbDswO0w7PHdpZGU+IDAwNjQ7Ozs7Tjs7O0ZGMjQ7O0ZGMjQKK0ZGNDU7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBFO0xsOzA7TDs8d2lkZT4gMDA2NTs7OztOOzs7RkYyNTs7RkYyNQorRkY0NjtGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIEY7TGw7MDtMOzx3aWRlPiAwMDY2Ozs7O047OztGRjI2OztGRjI2CitGRjQ3O0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgRztMbDswO0w7PHdpZGU+IDAwNjc7Ozs7Tjs7O0ZGMjc7O0ZGMjcKK0ZGNDg7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBIO0xsOzA7TDs8d2lkZT4gMDA2ODs7OztOOzs7RkYyODs7RkYyOAorRkY0OTtGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIEk7TGw7MDtMOzx3aWRlPiAwMDY5Ozs7O047OztGRjI5OztGRjI5CitGRjRBO0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgSjtMbDswO0w7PHdpZGU+IDAwNkE7Ozs7Tjs7O0ZGMkE7O0ZGMkEKK0ZGNEI7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBLO0xsOzA7TDs8d2lkZT4gMDA2Qjs7OztOOzs7RkYyQjs7RkYyQgorRkY0QztGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIEw7TGw7MDtMOzx3aWRlPiAwMDZDOzs7O047OztGRjJDOztGRjJDCitGRjREO0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgTTtMbDswO0w7PHdpZGU+IDAwNkQ7Ozs7Tjs7O0ZGMkQ7O0ZGMkQKK0ZGNEU7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBOO0xsOzA7TDs8d2lkZT4gMDA2RTs7OztOOzs7RkYyRTs7RkYyRQorRkY0RjtGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIE87TGw7MDtMOzx3aWRlPiAwMDZGOzs7O047OztGRjJGOztGRjJGCitGRjUwO0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgUDtMbDswO0w7PHdpZGU+IDAwNzA7Ozs7Tjs7O0ZGMzA7O0ZGMzAKK0ZGNTE7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBRO0xsOzA7TDs8d2lkZT4gMDA3MTs7OztOOzs7RkYzMTs7RkYzMQorRkY1MjtGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIFI7TGw7MDtMOzx3aWRlPiAwMDcyOzs7O047OztGRjMyOztGRjMyCitGRjUzO0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgUztMbDswO0w7PHdpZGU+IDAwNzM7Ozs7Tjs7O0ZGMzM7O0ZGMzMKK0ZGNTQ7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBUO0xsOzA7TDs8d2lkZT4gMDA3NDs7OztOOzs7RkYzNDs7RkYzNAorRkY1NTtGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIFU7TGw7MDtMOzx3aWRlPiAwMDc1Ozs7O047OztGRjM1OztGRjM1CitGRjU2O0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgVjtMbDswO0w7PHdpZGU+IDAwNzY7Ozs7Tjs7O0ZGMzY7O0ZGMzYKK0ZGNTc7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBXO0xsOzA7TDs8d2lkZT4gMDA3Nzs7OztOOzs7RkYzNzs7RkYzNworRkY1ODtGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIFg7TGw7MDtMOzx3aWRlPiAwMDc4Ozs7O047OztGRjM4OztGRjM4CitGRjU5O0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgWTtMbDswO0w7PHdpZGU+IDAwNzk7Ozs7Tjs7O0ZGMzk7O0ZGMzkKK0ZGNUE7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBaO0xsOzA7TDs8d2lkZT4gMDA3QTs7OztOOzs7RkYzQTs7RkYzQQorRkY1QjtGVUxMV0lEVEggTEVGVCBDVVJMWSBCUkFDS0VUO1BzOzA7T047PHdpZGU+IDAwN0I7Ozs7WTtGVUxMV0lEVEggT1BFTklORyBDVVJMWSBCUkFDS0VUOzs7OworRkY1QztGVUxMV0lEVEggVkVSVElDQUwgTElORTtTbTswO09OOzx3aWRlPiAwMDdDOzs7O047RlVMTFdJRFRIIFZFUlRJQ0FMIEJBUjs7OzsKK0ZGNUQ7RlVMTFdJRFRIIFJJR0hUIENVUkxZIEJSQUNLRVQ7UGU7MDtPTjs8d2lkZT4gMDA3RDs7OztZO0ZVTExXSURUSCBDTE9TSU5HIENVUkxZIEJSQUNLRVQ7Ozs7CitGRjVFO0ZVTExXSURUSCBUSUxERTtTbTswO09OOzx3aWRlPiAwMDdFOzs7O047RlVMTFdJRFRIIFNQQUNJTkcgVElMREU7Ozs7CitGRjVGO0ZVTExXSURUSCBMRUZUIFdISVRFIFBBUkVOVEhFU0lTO1BzOzA7T047PHdpZGU+IDI5ODU7Ozs7WTs7Kjs7OworRkY2MDtGVUxMV0lEVEggUklHSFQgV0hJVEUgUEFSRU5USEVTSVM7UGU7MDtPTjs8d2lkZT4gMjk4Njs7OztZOzsqOzs7CitGRjYxO0hBTEZXSURUSCBJREVPR1JBUEhJQyBGVUxMIFNUT1A7UG87MDtPTjs8bmFycm93PiAzMDAyOzs7O047SEFMRldJRFRIIElERU9HUkFQSElDIFBFUklPRDs7OzsKK0ZGNjI7SEFMRldJRFRIIExFRlQgQ09STkVSIEJSQUNLRVQ7UHM7MDtPTjs8bmFycm93PiAzMDBDOzs7O1k7SEFMRldJRFRIIE9QRU5JTkcgQ09STkVSIEJSQUNLRVQ7Ozs7CitGRjYzO0hBTEZXSURUSCBSSUdIVCBDT1JORVIgQlJBQ0tFVDtQZTswO09OOzxuYXJyb3c+IDMwMEQ7Ozs7WTtIQUxGV0lEVEggQ0xPU0lORyBDT1JORVIgQlJBQ0tFVDs7OzsKK0ZGNjQ7SEFMRldJRFRIIElERU9HUkFQSElDIENPTU1BO1BvOzA7T047PG5hcnJvdz4gMzAwMTs7OztOOzs7OzsKK0ZGNjU7SEFMRldJRFRIIEtBVEFLQU5BIE1JRERMRSBET1Q7UGM7MDtPTjs8bmFycm93PiAzMEZCOzs7O047Ozs7OworRkY2NjtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFdPO0xvOzA7TDs8bmFycm93PiAzMEYyOzs7O047Ozs7OworRkY2NztIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNNQUxMIEE7TG87MDtMOzxuYXJyb3c+IDMwQTE7Ozs7Tjs7Ozs7CitGRjY4O0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgU01BTEwgSTtMbzswO0w7PG5hcnJvdz4gMzBBMzs7OztOOzs7OzsKK0ZGNjk7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTTUFMTCBVO0xvOzA7TDs8bmFycm93PiAzMEE1Ozs7O047Ozs7OworRkY2QTtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNNQUxMIEU7TG87MDtMOzxuYXJyb3c+IDMwQTc7Ozs7Tjs7Ozs7CitGRjZCO0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgU01BTEwgTztMbzswO0w7PG5hcnJvdz4gMzBBOTs7OztOOzs7OzsKK0ZGNkM7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTTUFMTCBZQTtMbzswO0w7PG5hcnJvdz4gMzBFMzs7OztOOzs7OzsKK0ZGNkQ7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTTUFMTCBZVTtMbzswO0w7PG5hcnJvdz4gMzBFNTs7OztOOzs7OzsKK0ZGNkU7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTTUFMTCBZTztMbzswO0w7PG5hcnJvdz4gMzBFNzs7OztOOzs7OzsKK0ZGNkY7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTTUFMTCBUVTtMbzswO0w7PG5hcnJvdz4gMzBDMzs7OztOOzs7OzsKK0ZGNzA7SEFMRldJRFRIIEtBVEFLQU5BLUhJUkFHQU5BIFBST0xPTkdFRCBTT1VORCBNQVJLO0xtOzA7TDs8bmFycm93PiAzMEZDOzs7O047Ozs7OworRkY3MTtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEE7TG87MDtMOzxuYXJyb3c+IDMwQTI7Ozs7Tjs7Ozs7CitGRjcyO0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgSTtMbzswO0w7PG5hcnJvdz4gMzBBNDs7OztOOzs7OzsKK0ZGNzM7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBVO0xvOzA7TDs8bmFycm93PiAzMEE2Ozs7O047Ozs7OworRkY3NDtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEU7TG87MDtMOzxuYXJyb3c+IDMwQTg7Ozs7Tjs7Ozs7CitGRjc1O0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgTztMbzswO0w7PG5hcnJvdz4gMzBBQTs7OztOOzs7OzsKK0ZGNzY7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBLQTtMbzswO0w7PG5hcnJvdz4gMzBBQjs7OztOOzs7OzsKK0ZGNzc7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBLSTtMbzswO0w7PG5hcnJvdz4gMzBBRDs7OztOOzs7OzsKK0ZGNzg7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBLVTtMbzswO0w7PG5hcnJvdz4gMzBBRjs7OztOOzs7OzsKK0ZGNzk7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBLRTtMbzswO0w7PG5hcnJvdz4gMzBCMTs7OztOOzs7OzsKK0ZGN0E7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBLTztMbzswO0w7PG5hcnJvdz4gMzBCMzs7OztOOzs7OzsKK0ZGN0I7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTQTtMbzswO0w7PG5hcnJvdz4gMzBCNTs7OztOOzs7OzsKK0ZGN0M7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTSTtMbzswO0w7PG5hcnJvdz4gMzBCNzs7OztOOzs7OzsKK0ZGN0Q7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTVTtMbzswO0w7PG5hcnJvdz4gMzBCOTs7OztOOzs7OzsKK0ZGN0U7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTRTtMbzswO0w7PG5hcnJvdz4gMzBCQjs7OztOOzs7OzsKK0ZGN0Y7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTTztMbzswO0w7PG5hcnJvdz4gMzBCRDs7OztOOzs7OzsKK0ZGODA7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBUQTtMbzswO0w7PG5hcnJvdz4gMzBCRjs7OztOOzs7OzsKK0ZGODE7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBUSTtMbzswO0w7PG5hcnJvdz4gMzBDMTs7OztOOzs7OzsKK0ZGODI7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBUVTtMbzswO0w7PG5hcnJvdz4gMzBDNDs7OztOOzs7OzsKK0ZGODM7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBURTtMbzswO0w7PG5hcnJvdz4gMzBDNjs7OztOOzs7OzsKK0ZGODQ7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBUTztMbzswO0w7PG5hcnJvdz4gMzBDODs7OztOOzs7OzsKK0ZGODU7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBOQTtMbzswO0w7PG5hcnJvdz4gMzBDQTs7OztOOzs7OzsKK0ZGODY7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBOSTtMbzswO0w7PG5hcnJvdz4gMzBDQjs7OztOOzs7OzsKK0ZGODc7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBOVTtMbzswO0w7PG5hcnJvdz4gMzBDQzs7OztOOzs7OzsKK0ZGODg7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBORTtMbzswO0w7PG5hcnJvdz4gMzBDRDs7OztOOzs7OzsKK0ZGODk7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBOTztMbzswO0w7PG5hcnJvdz4gMzBDRTs7OztOOzs7OzsKK0ZGOEE7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBIQTtMbzswO0w7PG5hcnJvdz4gMzBDRjs7OztOOzs7OzsKK0ZGOEI7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBISTtMbzswO0w7PG5hcnJvdz4gMzBEMjs7OztOOzs7OzsKK0ZGOEM7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBIVTtMbzswO0w7PG5hcnJvdz4gMzBENTs7OztOOzs7OzsKK0ZGOEQ7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBIRTtMbzswO0w7PG5hcnJvdz4gMzBEODs7OztOOzs7OzsKK0ZGOEU7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBITztMbzswO0w7PG5hcnJvdz4gMzBEQjs7OztOOzs7OzsKK0ZGOEY7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBNQTtMbzswO0w7PG5hcnJvdz4gMzBERTs7OztOOzs7OzsKK0ZGOTA7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBNSTtMbzswO0w7PG5hcnJvdz4gMzBERjs7OztOOzs7OzsKK0ZGOTE7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBNVTtMbzswO0w7PG5hcnJvdz4gMzBFMDs7OztOOzs7OzsKK0ZGOTI7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBNRTtMbzswO0w7PG5hcnJvdz4gMzBFMTs7OztOOzs7OzsKK0ZGOTM7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBNTztMbzswO0w7PG5hcnJvdz4gMzBFMjs7OztOOzs7OzsKK0ZGOTQ7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBZQTtMbzswO0w7PG5hcnJvdz4gMzBFNDs7OztOOzs7OzsKK0ZGOTU7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBZVTtMbzswO0w7PG5hcnJvdz4gMzBFNjs7OztOOzs7OzsKK0ZGOTY7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBZTztMbzswO0w7PG5hcnJvdz4gMzBFODs7OztOOzs7OzsKK0ZGOTc7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBSQTtMbzswO0w7PG5hcnJvdz4gMzBFOTs7OztOOzs7OzsKK0ZGOTg7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBSSTtMbzswO0w7PG5hcnJvdz4gMzBFQTs7OztOOzs7OzsKK0ZGOTk7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBSVTtMbzswO0w7PG5hcnJvdz4gMzBFQjs7OztOOzs7OzsKK0ZGOUE7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBSRTtMbzswO0w7PG5hcnJvdz4gMzBFQzs7OztOOzs7OzsKK0ZGOUI7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBSTztMbzswO0w7PG5hcnJvdz4gMzBFRDs7OztOOzs7OzsKK0ZGOUM7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBXQTtMbzswO0w7PG5hcnJvdz4gMzBFRjs7OztOOzs7OzsKK0ZGOUQ7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBOO0xvOzA7TDs8bmFycm93PiAzMEYzOzs7O047Ozs7OworRkY5RTtIQUxGV0lEVEggS0FUQUtBTkEgVk9JQ0VEIFNPVU5EIE1BUks7TG07MDtMOzxuYXJyb3c+IDMwOTk7Ozs7Tjs7aGFsZndpZHRoIGthdGFrYW5hLWhpcmFnYW5hIHZvaWNlZCBzb3VuZCBtYXJrOzs7CitGRjlGO0hBTEZXSURUSCBLQVRBS0FOQSBTRU1JLVZPSUNFRCBTT1VORCBNQVJLO0xtOzA7TDs8bmFycm93PiAzMDlBOzs7O047O2hhbGZ3aWR0aCBrYXRha2FuYS1oaXJhZ2FuYSBzZW1pLXZvaWNlZCBzb3VuZCBtYXJrOzs7CitGRkEwO0hBTEZXSURUSCBIQU5HVUwgRklMTEVSO0xvOzA7TDs8bmFycm93PiAzMTY0Ozs7O047SEFMRldJRFRIIEhBTkdVTCBDQUUgT007Ozs7CitGRkExO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEtJWUVPSztMbzswO0w7PG5hcnJvdz4gMzEzMTs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEdJWUVPRzs7OzsKK0ZGQTI7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgU1NBTkdLSVlFT0s7TG87MDtMOzxuYXJyb3c+IDMxMzI7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBTU0FORyBHSVlFT0c7Ozs7CitGRkEzO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEtJWUVPSy1TSU9TO0xvOzA7TDs8bmFycm93PiAzMTMzOzs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgR0lZRU9HIFNJT1M7Ozs7CitGRkE0O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIE5JRVVOO0xvOzA7TDs8bmFycm93PiAzMTM0Ozs7O047Ozs7OworRkZBNTtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBOSUVVTi1DSUVVQztMbzswO0w7PG5hcnJvdz4gMzEzNTs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIE5JRVVOIEpJRVVKOzs7OworRkZBNjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBOSUVVTi1ISUVVSDtMbzswO0w7PG5hcnJvdz4gMzEzNjs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIE5JRVVOIEhJRVVIOzs7OworRkZBNztIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBUSUtFVVQ7TG87MDtMOzxuYXJyb3c+IDMxMzc7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBESUdFVUQ7Ozs7CitGRkE4O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFNTQU5HVElLRVVUO0xvOzA7TDs8bmFycm93PiAzMTM4Ozs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgU1NBTkcgRElHRVVEOzs7OworRkZBOTtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBSSUVVTDtMbzswO0w7PG5hcnJvdz4gMzEzOTs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIExJRVVMOzs7OworRkZBQTtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBSSUVVTC1LSVlFT0s7TG87MDtMOzxuYXJyb3c+IDMxM0E7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBMSUVVTCBHSVlFT0c7Ozs7CitGRkFCO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFJJRVVMLU1JRVVNO0xvOzA7TDs8bmFycm93PiAzMTNCOzs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgTElFVUwgTUlFVU07Ozs7CitGRkFDO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFJJRVVMLVBJRVVQO0xvOzA7TDs8bmFycm93PiAzMTNDOzs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgTElFVUwgQklFVUI7Ozs7CitGRkFEO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFJJRVVMLVNJT1M7TG87MDtMOzxuYXJyb3c+IDMxM0Q7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBMSUVVTCBTSU9TOzs7OworRkZBRTtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBSSUVVTC1USElFVVRIO0xvOzA7TDs8bmFycm93PiAzMTNFOzs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgTElFVUwgVElFVVQ7Ozs7CitGRkFGO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFJJRVVMLVBISUVVUEg7TG87MDtMOzxuYXJyb3c+IDMxM0Y7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBMSUVVTCBQSUVVUDs7OzsKK0ZGQjA7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgUklFVUwtSElFVUg7TG87MDtMOzxuYXJyb3c+IDMxNDA7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBMSUVVTCBISUVVSDs7OzsKK0ZGQjE7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgTUlFVU07TG87MDtMOzxuYXJyb3c+IDMxNDE7Ozs7Tjs7Ozs7CitGRkIyO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFBJRVVQO0xvOzA7TDs8bmFycm93PiAzMTQyOzs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgQklFVUI7Ozs7CitGRkIzO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFNTQU5HUElFVVA7TG87MDtMOzxuYXJyb3c+IDMxNDM7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBTU0FORyBCSUVVQjs7OzsKK0ZGQjQ7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgUElFVVAtU0lPUztMbzswO0w7PG5hcnJvdz4gMzE0NDs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEJJRVVCIFNJT1M7Ozs7CitGRkI1O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFNJT1M7TG87MDtMOzxuYXJyb3c+IDMxNDU7Ozs7Tjs7Ozs7CitGRkI2O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFNTQU5HU0lPUztMbzswO0w7PG5hcnJvdz4gMzE0Njs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFNTQU5HIFNJT1M7Ozs7CitGRkI3O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIElFVU5HO0xvOzA7TDs8bmFycm93PiAzMTQ3Ozs7O047Ozs7OworRkZCODtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBDSUVVQztMbzswO0w7PG5hcnJvdz4gMzE0ODs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEpJRVVKOzs7OworRkZCOTtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBTU0FOR0NJRVVDO0xvOzA7TDs8bmFycm93PiAzMTQ5Ozs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgU1NBTkcgSklFVUo7Ozs7CitGRkJBO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIENISUVVQ0g7TG87MDtMOzxuYXJyb3c+IDMxNEE7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBDSUVVQzs7OzsKK0ZGQkI7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgS0hJRVVLSDtMbzswO0w7PG5hcnJvdz4gMzE0Qjs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEtJWUVPSzs7OzsKK0ZGQkM7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgVEhJRVVUSDtMbzswO0w7PG5hcnJvdz4gMzE0Qzs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFRJRVVUOzs7OworRkZCRDtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBQSElFVVBIO0xvOzA7TDs8bmFycm93PiAzMTREOzs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgUElFVVA7Ozs7CitGRkJFO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEhJRVVIO0xvOzA7TDs8bmFycm93PiAzMTRFOzs7O047Ozs7OworRkZDMjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBBO0xvOzA7TDs8bmFycm93PiAzMTRGOzs7O047Ozs7OworRkZDMztIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBBRTtMbzswO0w7PG5hcnJvdz4gMzE1MDs7OztOOzs7OzsKK0ZGQzQ7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgWUE7TG87MDtMOzxuYXJyb3c+IDMxNTE7Ozs7Tjs7Ozs7CitGRkM1O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFlBRTtMbzswO0w7PG5hcnJvdz4gMzE1Mjs7OztOOzs7OzsKK0ZGQzY7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgRU87TG87MDtMOzxuYXJyb3c+IDMxNTM7Ozs7Tjs7Ozs7CitGRkM3O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEU7TG87MDtMOzxuYXJyb3c+IDMxNTQ7Ozs7Tjs7Ozs7CitGRkNBO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFlFTztMbzswO0w7PG5hcnJvdz4gMzE1NTs7OztOOzs7OzsKK0ZGQ0I7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgWUU7TG87MDtMOzxuYXJyb3c+IDMxNTY7Ozs7Tjs7Ozs7CitGRkNDO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIE87TG87MDtMOzxuYXJyb3c+IDMxNTc7Ozs7Tjs7Ozs7CitGRkNEO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFdBO0xvOzA7TDs8bmFycm93PiAzMTU4Ozs7O047Ozs7OworRkZDRTtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBXQUU7TG87MDtMOzxuYXJyb3c+IDMxNTk7Ozs7Tjs7Ozs7CitGRkNGO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIE9FO0xvOzA7TDs8bmFycm93PiAzMTVBOzs7O047Ozs7OworRkZEMjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBZTztMbzswO0w7PG5hcnJvdz4gMzE1Qjs7OztOOzs7OzsKK0ZGRDM7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgVTtMbzswO0w7PG5hcnJvdz4gMzE1Qzs7OztOOzs7OzsKK0ZGRDQ7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgV0VPO0xvOzA7TDs8bmFycm93PiAzMTVEOzs7O047Ozs7OworRkZENTtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBXRTtMbzswO0w7PG5hcnJvdz4gMzE1RTs7OztOOzs7OzsKK0ZGRDY7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgV0k7TG87MDtMOzxuYXJyb3c+IDMxNUY7Ozs7Tjs7Ozs7CitGRkQ3O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFlVO0xvOzA7TDs8bmFycm93PiAzMTYwOzs7O047Ozs7OworRkZEQTtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBFVTtMbzswO0w7PG5hcnJvdz4gMzE2MTs7OztOOzs7OzsKK0ZGREI7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgWUk7TG87MDtMOzxuYXJyb3c+IDMxNjI7Ozs7Tjs7Ozs7CitGRkRDO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEk7TG87MDtMOzxuYXJyb3c+IDMxNjM7Ozs7Tjs7Ozs7CitGRkUwO0ZVTExXSURUSCBDRU5UIFNJR047U2M7MDtFVDs8d2lkZT4gMDBBMjs7OztOOzs7OzsKK0ZGRTE7RlVMTFdJRFRIIFBPVU5EIFNJR047U2M7MDtFVDs8d2lkZT4gMDBBMzs7OztOOzs7OzsKK0ZGRTI7RlVMTFdJRFRIIE5PVCBTSUdOO1NtOzA7T047PHdpZGU+IDAwQUM7Ozs7Tjs7Ozs7CitGRkUzO0ZVTExXSURUSCBNQUNST047U2s7MDtPTjs8d2lkZT4gMDBBRjs7OztOO0ZVTExXSURUSCBTUEFDSU5HIE1BQ1JPTjsqOzs7CitGRkU0O0ZVTExXSURUSCBCUk9LRU4gQkFSO1NvOzA7T047PHdpZGU+IDAwQTY7Ozs7TjtGVUxMV0lEVEggQlJPS0VOIFZFUlRJQ0FMIEJBUjs7OzsKK0ZGRTU7RlVMTFdJRFRIIFlFTiBTSUdOO1NjOzA7RVQ7PHdpZGU+IDAwQTU7Ozs7Tjs7Ozs7CitGRkU2O0ZVTExXSURUSCBXT04gU0lHTjtTYzswO0VUOzx3aWRlPiAyMEE5Ozs7O047Ozs7OworRkZFODtIQUxGV0lEVEggRk9STVMgTElHSFQgVkVSVElDQUw7U287MDtPTjs8bmFycm93PiAyNTAyOzs7O047Ozs7OworRkZFOTtIQUxGV0lEVEggTEVGVFdBUkRTIEFSUk9XO1NtOzA7T047PG5hcnJvdz4gMjE5MDs7OztOOzs7OzsKK0ZGRUE7SEFMRldJRFRIIFVQV0FSRFMgQVJST1c7U207MDtPTjs8bmFycm93PiAyMTkxOzs7O047Ozs7OworRkZFQjtIQUxGV0lEVEggUklHSFRXQVJEUyBBUlJPVztTbTswO09OOzxuYXJyb3c+IDIxOTI7Ozs7Tjs7Ozs7CitGRkVDO0hBTEZXSURUSCBET1dOV0FSRFMgQVJST1c7U207MDtPTjs8bmFycm93PiAyMTkzOzs7O047Ozs7OworRkZFRDtIQUxGV0lEVEggQkxBQ0sgU1FVQVJFO1NvOzA7T047PG5hcnJvdz4gMjVBMDs7OztOOzs7OzsKK0ZGRUU7SEFMRldJRFRIIFdISVRFIENJUkNMRTtTbzswO09OOzxuYXJyb3c+IDI1Q0I7Ozs7Tjs7Ozs7CitGRkY5O0lOVEVSTElORUFSIEFOTk9UQVRJT04gQU5DSE9SO0NmOzA7Qk47Ozs7O047Ozs7OworRkZGQTtJTlRFUkxJTkVBUiBBTk5PVEFUSU9OIFNFUEFSQVRPUjtDZjswO0JOOzs7OztOOzs7OzsKK0ZGRkI7SU5URVJMSU5FQVIgQU5OT1RBVElPTiBURVJNSU5BVE9SO0NmOzA7Qk47Ozs7O047Ozs7OworRkZGQztPQkpFQ1QgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSO1NvOzA7T047Ozs7O047Ozs7OworRkZGRDtSRVBMQUNFTUVOVCBDSEFSQUNURVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisxMDMwMDtPTEQgSVRBTElDIExFVFRFUiBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDMwMTtPTEQgSVRBTElDIExFVFRFUiBCRTtMbzswO0w7Ozs7O047Ozs7OworMTAzMDI7T0xEIElUQUxJQyBMRVRURVIgS0U7TG87MDtMOzs7OztOOzs7OzsKKzEwMzAzO09MRCBJVEFMSUMgTEVUVEVSIERFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDMwNDtPTEQgSVRBTElDIExFVFRFUiBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDMwNTtPTEQgSVRBTElDIExFVFRFUiBWRTtMbzswO0w7Ozs7O047Ozs7OworMTAzMDY7T0xEIElUQUxJQyBMRVRURVIgWkU7TG87MDtMOzs7OztOOzs7OzsKKzEwMzA3O09MRCBJVEFMSUMgTEVUVEVSIEhFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDMwODtPTEQgSVRBTElDIExFVFRFUiBUSEU7TG87MDtMOzs7OztOOzs7OzsKKzEwMzA5O09MRCBJVEFMSUMgTEVUVEVSIEk7TG87MDtMOzs7OztOOzs7OzsKKzEwMzBBO09MRCBJVEFMSUMgTEVUVEVSIEtBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDMwQjtPTEQgSVRBTElDIExFVFRFUiBFTDtMbzswO0w7Ozs7O047Ozs7OworMTAzMEM7T0xEIElUQUxJQyBMRVRURVIgRU07TG87MDtMOzs7OztOOzs7OzsKKzEwMzBEO09MRCBJVEFMSUMgTEVUVEVSIEVOO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDMwRTtPTEQgSVRBTElDIExFVFRFUiBFU0g7TG87MDtMOzs7OztOOzs7OzsKKzEwMzBGO09MRCBJVEFMSUMgTEVUVEVSIE87TG87MDtMOzs7OztOOztGYWxpc2Nhbjs7OworMTAzMTA7T0xEIElUQUxJQyBMRVRURVIgUEU7TG87MDtMOzs7OztOOzs7OzsKKzEwMzExO09MRCBJVEFMSUMgTEVUVEVSIFNIRTtMbzswO0w7Ozs7O047Ozs7OworMTAzMTI7T0xEIElUQUxJQyBMRVRURVIgS1U7TG87MDtMOzs7OztOOzs7OzsKKzEwMzEzO09MRCBJVEFMSUMgTEVUVEVSIEVSO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDMxNDtPTEQgSVRBTElDIExFVFRFUiBFUztMbzswO0w7Ozs7O047Ozs7OworMTAzMTU7T0xEIElUQUxJQyBMRVRURVIgVEU7TG87MDtMOzs7OztOOzs7OzsKKzEwMzE2O09MRCBJVEFMSUMgTEVUVEVSIFU7TG87MDtMOzs7OztOOzs7OzsKKzEwMzE3O09MRCBJVEFMSUMgTEVUVEVSIEVLUztMbzswO0w7Ozs7O047O0ZhbGlzY2FuOzs7CisxMDMxODtPTEQgSVRBTElDIExFVFRFUiBQSEU7TG87MDtMOzs7OztOOzs7OzsKKzEwMzE5O09MRCBJVEFMSUMgTEVUVEVSIEtIRTtMbzswO0w7Ozs7O047Ozs7OworMTAzMUE7T0xEIElUQUxJQyBMRVRURVIgRUY7TG87MDtMOzs7OztOOzs7OzsKKzEwMzFCO09MRCBJVEFMSUMgTEVUVEVSIEVSUztMbzswO0w7Ozs7O047O1VtYnJpYW47OzsKKzEwMzFDO09MRCBJVEFMSUMgTEVUVEVSIENIRTtMbzswO0w7Ozs7O047O1VtYnJpYW47OzsKKzEwMzFEO09MRCBJVEFMSUMgTEVUVEVSIElJO0xvOzA7TDs7Ozs7Tjs7T3NjYW47OzsKKzEwMzFFO09MRCBJVEFMSUMgTEVUVEVSIFVVO0xvOzA7TDs7Ozs7Tjs7T3NjYW47OzsKKzEwMzIwO09MRCBJVEFMSUMgTlVNRVJBTCBPTkU7Tm87MDtMOzs7OzE7Tjs7Ozs7CisxMDMyMTtPTEQgSVRBTElDIE5VTUVSQUwgRklWRTtObzswO0w7Ozs7NTtOOzs7OzsKKzEwMzIyO09MRCBJVEFMSUMgTlVNRVJBTCBURU47Tm87MDtMOzs7OzEwO047Ozs7OworMTAzMjM7T0xEIElUQUxJQyBOVU1FUkFMIEZJRlRZO05vOzA7TDs7Ozs1MDtOOzs7OzsKKzEwMzMwO0dPVEhJQyBMRVRURVIgQUhTQTtMbzswO0w7Ozs7O047Ozs7OworMTAzMzE7R09USElDIExFVFRFUiBCQUlSS0FOO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDMzMjtHT1RISUMgTEVUVEVSIEdJQkE7TG87MDtMOzs7OztOOzs7OzsKKzEwMzMzO0dPVEhJQyBMRVRURVIgREFHUztMbzswO0w7Ozs7O047Ozs7OworMTAzMzQ7R09USElDIExFVFRFUiBBSUhWVVM7TG87MDtMOzs7OztOOzs7OzsKKzEwMzM1O0dPVEhJQyBMRVRURVIgUUFJUlRIUkE7TG87MDtMOzs7OztOOzs7OzsKKzEwMzM2O0dPVEhJQyBMRVRURVIgSVVKQTtMbzswO0w7Ozs7O047Ozs7OworMTAzMzc7R09USElDIExFVFRFUiBIQUdMO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDMzODtHT1RISUMgTEVUVEVSIFRISVVUSDtMbzswO0w7Ozs7O047Ozs7OworMTAzMzk7R09USElDIExFVFRFUiBFSVM7TG87MDtMOzs7OztOOzs7OzsKKzEwMzNBO0dPVEhJQyBMRVRURVIgS1VTTUE7TG87MDtMOzs7OztOOzs7OzsKKzEwMzNCO0dPVEhJQyBMRVRURVIgTEFHVVM7TG87MDtMOzs7OztOOzs7OzsKKzEwMzNDO0dPVEhJQyBMRVRURVIgTUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzEwMzNEO0dPVEhJQyBMRVRURVIgTkFVVEhTO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDMzRTtHT1RISUMgTEVUVEVSIEpFUjtMbzswO0w7Ozs7O047Ozs7OworMTAzM0Y7R09USElDIExFVFRFUiBVUlVTO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDM0MDtHT1RISUMgTEVUVEVSIFBBSVJUSFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDM0MTtHT1RISUMgTEVUVEVSIE5JTkVUWTtMbzswO0w7Ozs7O047Ozs7OworMTAzNDI7R09USElDIExFVFRFUiBSQUlEQTtMbzswO0w7Ozs7O047Ozs7OworMTAzNDM7R09USElDIExFVFRFUiBTQVVJTDtMbzswO0w7Ozs7O047Ozs7OworMTAzNDQ7R09USElDIExFVFRFUiBURUlXUztMbzswO0w7Ozs7O047Ozs7OworMTAzNDU7R09USElDIExFVFRFUiBXSU5KQTtMbzswO0w7Ozs7O047Ozs7OworMTAzNDY7R09USElDIExFVFRFUiBGQUlIVTtMbzswO0w7Ozs7O047Ozs7OworMTAzNDc7R09USElDIExFVFRFUiBJR0dXUztMbzswO0w7Ozs7O047Ozs7OworMTAzNDg7R09USElDIExFVFRFUiBIV0FJUjtMbzswO0w7Ozs7O047Ozs7OworMTAzNDk7R09USElDIExFVFRFUiBPVEhBTDtMbzswO0w7Ozs7O047Ozs7OworMTAzNEE7R09USElDIExFVFRFUiBOSU5FIEhVTkRSRUQ7Tmw7MDtMOzs7OztOOzs7OzsKKzEwNDAwO0RFU0VSRVQgQ0FQSVRBTCBMRVRURVIgTE9ORyBJO0x1OzA7TDs7Ozs7Tjs7OzsxMDQyODsKKzEwNDAxO0RFU0VSRVQgQ0FQSVRBTCBMRVRURVIgTE9ORyBFO0x1OzA7TDs7Ozs7Tjs7OzsxMDQyOTsKKzEwNDAyO0RFU0VSRVQgQ0FQSVRBTCBMRVRURVIgTE9ORyBBO0x1OzA7TDs7Ozs7Tjs7OzsxMDQyQTsKKzEwNDAzO0RFU0VSRVQgQ0FQSVRBTCBMRVRURVIgTE9ORyBBSDtMdTswO0w7Ozs7O047Ozs7MTA0MkI7CisxMDQwNDtERVNFUkVUIENBUElUQUwgTEVUVEVSIExPTkcgTztMdTswO0w7Ozs7O047Ozs7MTA0MkM7CisxMDQwNTtERVNFUkVUIENBUElUQUwgTEVUVEVSIExPTkcgT087THU7MDtMOzs7OztOOzs7OzEwNDJEOworMTA0MDY7REVTRVJFVCBDQVBJVEFMIExFVFRFUiBTSE9SVCBJO0x1OzA7TDs7Ozs7Tjs7OzsxMDQyRTsKKzEwNDA3O0RFU0VSRVQgQ0FQSVRBTCBMRVRURVIgU0hPUlQgRTtMdTswO0w7Ozs7O047Ozs7MTA0MkY7CisxMDQwODtERVNFUkVUIENBUElUQUwgTEVUVEVSIFNIT1JUIEE7THU7MDtMOzs7OztOOzs7OzEwNDMwOworMTA0MDk7REVTRVJFVCBDQVBJVEFMIExFVFRFUiBTSE9SVCBBSDtMdTswO0w7Ozs7O047Ozs7MTA0MzE7CisxMDQwQTtERVNFUkVUIENBUElUQUwgTEVUVEVSIFNIT1JUIE87THU7MDtMOzs7OztOOzs7OzEwNDMyOworMTA0MEI7REVTRVJFVCBDQVBJVEFMIExFVFRFUiBTSE9SVCBPTztMdTswO0w7Ozs7O047Ozs7MTA0MzM7CisxMDQwQztERVNFUkVUIENBUElUQUwgTEVUVEVSIEFZO0x1OzA7TDs7Ozs7Tjs7OzsxMDQzNDsKKzEwNDBEO0RFU0VSRVQgQ0FQSVRBTCBMRVRURVIgT1c7THU7MDtMOzs7OztOOzs7OzEwNDM1OworMTA0MEU7REVTRVJFVCBDQVBJVEFMIExFVFRFUiBXVTtMdTswO0w7Ozs7O047Ozs7MTA0MzY7CisxMDQwRjtERVNFUkVUIENBUElUQUwgTEVUVEVSIFlFRTtMdTswO0w7Ozs7O047Ozs7MTA0Mzc7CisxMDQxMDtERVNFUkVUIENBUElUQUwgTEVUVEVSIEg7THU7MDtMOzs7OztOOzs7OzEwNDM4OworMTA0MTE7REVTRVJFVCBDQVBJVEFMIExFVFRFUiBQRUU7THU7MDtMOzs7OztOOzs7OzEwNDM5OworMTA0MTI7REVTRVJFVCBDQVBJVEFMIExFVFRFUiBCRUU7THU7MDtMOzs7OztOOzs7OzEwNDNBOworMTA0MTM7REVTRVJFVCBDQVBJVEFMIExFVFRFUiBURUU7THU7MDtMOzs7OztOOzs7OzEwNDNCOworMTA0MTQ7REVTRVJFVCBDQVBJVEFMIExFVFRFUiBERUU7THU7MDtMOzs7OztOOzs7OzEwNDNDOworMTA0MTU7REVTRVJFVCBDQVBJVEFMIExFVFRFUiBDSEVFO0x1OzA7TDs7Ozs7Tjs7OzsxMDQzRDsKKzEwNDE2O0RFU0VSRVQgQ0FQSVRBTCBMRVRURVIgSkVFO0x1OzA7TDs7Ozs7Tjs7OzsxMDQzRTsKKzEwNDE3O0RFU0VSRVQgQ0FQSVRBTCBMRVRURVIgS0FZO0x1OzA7TDs7Ozs7Tjs7OzsxMDQzRjsKKzEwNDE4O0RFU0VSRVQgQ0FQSVRBTCBMRVRURVIgR0FZO0x1OzA7TDs7Ozs7Tjs7OzsxMDQ0MDsKKzEwNDE5O0RFU0VSRVQgQ0FQSVRBTCBMRVRURVIgRUY7THU7MDtMOzs7OztOOzs7OzEwNDQxOworMTA0MUE7REVTRVJFVCBDQVBJVEFMIExFVFRFUiBWRUU7THU7MDtMOzs7OztOOzs7OzEwNDQyOworMTA0MUI7REVTRVJFVCBDQVBJVEFMIExFVFRFUiBFVEg7THU7MDtMOzs7OztOOzs7OzEwNDQzOworMTA0MUM7REVTRVJFVCBDQVBJVEFMIExFVFRFUiBUSEVFO0x1OzA7TDs7Ozs7Tjs7OzsxMDQ0NDsKKzEwNDFEO0RFU0VSRVQgQ0FQSVRBTCBMRVRURVIgRVM7THU7MDtMOzs7OztOOzs7OzEwNDQ1OworMTA0MUU7REVTRVJFVCBDQVBJVEFMIExFVFRFUiBaRUU7THU7MDtMOzs7OztOOzs7OzEwNDQ2OworMTA0MUY7REVTRVJFVCBDQVBJVEFMIExFVFRFUiBFU0g7THU7MDtMOzs7OztOOzs7OzEwNDQ3OworMTA0MjA7REVTRVJFVCBDQVBJVEFMIExFVFRFUiBaSEVFO0x1OzA7TDs7Ozs7Tjs7OzsxMDQ0ODsKKzEwNDIxO0RFU0VSRVQgQ0FQSVRBTCBMRVRURVIgRVI7THU7MDtMOzs7OztOOzs7OzEwNDQ5OworMTA0MjI7REVTRVJFVCBDQVBJVEFMIExFVFRFUiBFTDtMdTswO0w7Ozs7O047Ozs7MTA0NEE7CisxMDQyMztERVNFUkVUIENBUElUQUwgTEVUVEVSIEVNO0x1OzA7TDs7Ozs7Tjs7OzsxMDQ0QjsKKzEwNDI0O0RFU0VSRVQgQ0FQSVRBTCBMRVRURVIgRU47THU7MDtMOzs7OztOOzs7OzEwNDRDOworMTA0MjU7REVTRVJFVCBDQVBJVEFMIExFVFRFUiBFTkc7THU7MDtMOzs7OztOOzs7OzEwNDREOworMTA0Mjg7REVTRVJFVCBTTUFMTCBMRVRURVIgTE9ORyBJO0xsOzA7TDs7Ozs7Tjs7OzEwNDAwOzsxMDQwMAorMTA0Mjk7REVTRVJFVCBTTUFMTCBMRVRURVIgTE9ORyBFO0xsOzA7TDs7Ozs7Tjs7OzEwNDAxOzsxMDQwMQorMTA0MkE7REVTRVJFVCBTTUFMTCBMRVRURVIgTE9ORyBBO0xsOzA7TDs7Ozs7Tjs7OzEwNDAyOzsxMDQwMgorMTA0MkI7REVTRVJFVCBTTUFMTCBMRVRURVIgTE9ORyBBSDtMbDswO0w7Ozs7O047OzsxMDQwMzs7MTA0MDMKKzEwNDJDO0RFU0VSRVQgU01BTEwgTEVUVEVSIExPTkcgTztMbDswO0w7Ozs7O047OzsxMDQwNDs7MTA0MDQKKzEwNDJEO0RFU0VSRVQgU01BTEwgTEVUVEVSIExPTkcgT087TGw7MDtMOzs7OztOOzs7MTA0MDU7OzEwNDA1CisxMDQyRTtERVNFUkVUIFNNQUxMIExFVFRFUiBTSE9SVCBJO0xsOzA7TDs7Ozs7Tjs7OzEwNDA2OzsxMDQwNgorMTA0MkY7REVTRVJFVCBTTUFMTCBMRVRURVIgU0hPUlQgRTtMbDswO0w7Ozs7O047OzsxMDQwNzs7MTA0MDcKKzEwNDMwO0RFU0VSRVQgU01BTEwgTEVUVEVSIFNIT1JUIEE7TGw7MDtMOzs7OztOOzs7MTA0MDg7OzEwNDA4CisxMDQzMTtERVNFUkVUIFNNQUxMIExFVFRFUiBTSE9SVCBBSDtMbDswO0w7Ozs7O047OzsxMDQwOTs7MTA0MDkKKzEwNDMyO0RFU0VSRVQgU01BTEwgTEVUVEVSIFNIT1JUIE87TGw7MDtMOzs7OztOOzs7MTA0MEE7OzEwNDBBCisxMDQzMztERVNFUkVUIFNNQUxMIExFVFRFUiBTSE9SVCBPTztMbDswO0w7Ozs7O047OzsxMDQwQjs7MTA0MEIKKzEwNDM0O0RFU0VSRVQgU01BTEwgTEVUVEVSIEFZO0xsOzA7TDs7Ozs7Tjs7OzEwNDBDOzsxMDQwQworMTA0MzU7REVTRVJFVCBTTUFMTCBMRVRURVIgT1c7TGw7MDtMOzs7OztOOzs7MTA0MEQ7OzEwNDBECisxMDQzNjtERVNFUkVUIFNNQUxMIExFVFRFUiBXVTtMbDswO0w7Ozs7O047OzsxMDQwRTs7MTA0MEUKKzEwNDM3O0RFU0VSRVQgU01BTEwgTEVUVEVSIFlFRTtMbDswO0w7Ozs7O047OzsxMDQwRjs7MTA0MEYKKzEwNDM4O0RFU0VSRVQgU01BTEwgTEVUVEVSIEg7TGw7MDtMOzs7OztOOzs7MTA0MTA7OzEwNDEwCisxMDQzOTtERVNFUkVUIFNNQUxMIExFVFRFUiBQRUU7TGw7MDtMOzs7OztOOzs7MTA0MTE7OzEwNDExCisxMDQzQTtERVNFUkVUIFNNQUxMIExFVFRFUiBCRUU7TGw7MDtMOzs7OztOOzs7MTA0MTI7OzEwNDEyCisxMDQzQjtERVNFUkVUIFNNQUxMIExFVFRFUiBURUU7TGw7MDtMOzs7OztOOzs7MTA0MTM7OzEwNDEzCisxMDQzQztERVNFUkVUIFNNQUxMIExFVFRFUiBERUU7TGw7MDtMOzs7OztOOzs7MTA0MTQ7OzEwNDE0CisxMDQzRDtERVNFUkVUIFNNQUxMIExFVFRFUiBDSEVFO0xsOzA7TDs7Ozs7Tjs7OzEwNDE1OzsxMDQxNQorMTA0M0U7REVTRVJFVCBTTUFMTCBMRVRURVIgSkVFO0xsOzA7TDs7Ozs7Tjs7OzEwNDE2OzsxMDQxNgorMTA0M0Y7REVTRVJFVCBTTUFMTCBMRVRURVIgS0FZO0xsOzA7TDs7Ozs7Tjs7OzEwNDE3OzsxMDQxNworMTA0NDA7REVTRVJFVCBTTUFMTCBMRVRURVIgR0FZO0xsOzA7TDs7Ozs7Tjs7OzEwNDE4OzsxMDQxOAorMTA0NDE7REVTRVJFVCBTTUFMTCBMRVRURVIgRUY7TGw7MDtMOzs7OztOOzs7MTA0MTk7OzEwNDE5CisxMDQ0MjtERVNFUkVUIFNNQUxMIExFVFRFUiBWRUU7TGw7MDtMOzs7OztOOzs7MTA0MUE7OzEwNDFBCisxMDQ0MztERVNFUkVUIFNNQUxMIExFVFRFUiBFVEg7TGw7MDtMOzs7OztOOzs7MTA0MUI7OzEwNDFCCisxMDQ0NDtERVNFUkVUIFNNQUxMIExFVFRFUiBUSEVFO0xsOzA7TDs7Ozs7Tjs7OzEwNDFDOzsxMDQxQworMTA0NDU7REVTRVJFVCBTTUFMTCBMRVRURVIgRVM7TGw7MDtMOzs7OztOOzs7MTA0MUQ7OzEwNDFECisxMDQ0NjtERVNFUkVUIFNNQUxMIExFVFRFUiBaRUU7TGw7MDtMOzs7OztOOzs7MTA0MUU7OzEwNDFFCisxMDQ0NztERVNFUkVUIFNNQUxMIExFVFRFUiBFU0g7TGw7MDtMOzs7OztOOzs7MTA0MUY7OzEwNDFGCisxMDQ0ODtERVNFUkVUIFNNQUxMIExFVFRFUiBaSEVFO0xsOzA7TDs7Ozs7Tjs7OzEwNDIwOzsxMDQyMAorMTA0NDk7REVTRVJFVCBTTUFMTCBMRVRURVIgRVI7TGw7MDtMOzs7OztOOzs7MTA0MjE7OzEwNDIxCisxMDQ0QTtERVNFUkVUIFNNQUxMIExFVFRFUiBFTDtMbDswO0w7Ozs7O047OzsxMDQyMjs7MTA0MjIKKzEwNDRCO0RFU0VSRVQgU01BTEwgTEVUVEVSIEVNO0xsOzA7TDs7Ozs7Tjs7OzEwNDIzOzsxMDQyMworMTA0NEM7REVTRVJFVCBTTUFMTCBMRVRURVIgRU47TGw7MDtMOzs7OztOOzs7MTA0MjQ7OzEwNDI0CisxMDQ0RDtERVNFUkVUIFNNQUxMIExFVFRFUiBFTkc7TGw7MDtMOzs7OztOOzs7MTA0MjU7OzEwNDI1CisxRDAwMDtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgUFNJTEk7U287MDtMOzs7OztOOzs7OzsKKzFEMDAxO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBEQVNFSUE7U287MDtMOzs7OztOOzs7OzsKKzFEMDAyO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBQRVJJU1BPTUVOSTtTbzswO0w7Ozs7O047Ozs7OworMUQwMDM7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIE9YRUlBIEVLRk9OSVRJS09OO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDAwNDtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgT1hFSUEgRElQTEk7U287MDtMOzs7OztOOzs7OzsKKzFEMDA1O0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBWQVJFSUEgRUtGT05JVElLT047U287MDtMOzs7OztOOzs7OzsKKzFEMDA2O0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBWQVJFSUEgRElQTEk7U287MDtMOzs7OztOOzs7OzsKKzFEMDA3O0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBLQVRISVNUSTtTbzswO0w7Ozs7O047Ozs7OworMUQwMDg7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIFNZUk1BVElLSTtTbzswO0w7Ozs7O047Ozs7OworMUQwMDk7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIFBBUkFLTElUSUtJO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDAwQTtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgWVBPS1JJU0lTO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDAwQjtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgWVBPS1JJU0lTIERJUExJO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDAwQztCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgS1JFTUFTVEk7U287MDtMOzs7OztOOzs7OzsKKzFEMDBEO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBBUEVTTyBFS0ZPTklUSUtPTjtTbzswO0w7Ozs7O047Ozs7OworMUQwMEU7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIEVYTyBFS0ZPTklUSUtPTjtTbzswO0w7Ozs7O047Ozs7OworMUQwMEY7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIFRFTEVJQTtTbzswO0w7Ozs7O047Ozs7OworMUQwMTA7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIEtFTlRJTUFUQTtTbzswO0w7Ozs7O047Ozs7OworMUQwMTE7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIEFQT1NUUk9GT1M7U287MDtMOzs7OztOOzs7OzsKKzFEMDEyO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBBUE9TVFJPRk9TIERJUExJO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDAxMztCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgU1lORVZNQTtTbzswO0w7Ozs7O047Ozs7OworMUQwMTQ7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIFRISVRBO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDAxNTtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgT0xJR09OIEFSQ0hBSU9OO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDAxNjtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgR09SR09OIEFSQ0hBSU9OO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDAxNztCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgUFNJTE9OO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDAxODtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgQ0hBTUlMT047U287MDtMOzs7OztOOzs7OzsKKzFEMDE5O0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBWQVRIWTtTbzswO0w7Ozs7O047Ozs7OworMUQwMUE7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIElTT04gQVJDSEFJT047U287MDtMOzs7OztOOzs7OzsKKzFEMDFCO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBLRU5USU1BIEFSQ0hBSU9OO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDAxQztCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgS0VOVElNQVRBIEFSQ0hBSU9OO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDAxRDtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgU0FYSU1BVEE7U287MDtMOzs7OztOOzs7OzsKKzFEMDFFO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBQQVJJQ0hPTjtTbzswO0w7Ozs7O047Ozs7OworMUQwMUY7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIFNUQVZST1MgQVBPREVYSUE7U287MDtMOzs7OztOOzs7OzsKKzFEMDIwO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBPWEVJQUkgQVJDSEFJT047U287MDtMOzs7OztOOzs7OzsKKzFEMDIxO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBWQVJFSUFJIEFSQ0hBSU9OO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDAyMjtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgQVBPREVSTUEgQVJDSEFJT047U287MDtMOzs7OztOOzs7OzsKKzFEMDIzO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBBUE9USEVNQTtTbzswO0w7Ozs7O047Ozs7OworMUQwMjQ7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIEtMQVNNQTtTbzswO0w7Ozs7O047Ozs7OworMUQwMjU7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIFJFVk1BO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDAyNjtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgUElBU01BIEFSQ0hBSU9OO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDAyNztCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgVElOQUdNQTtTbzswO0w7Ozs7O047Ozs7OworMUQwMjg7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIEFOQVRSSUNISVNNQTtTbzswO0w7Ozs7O047Ozs7OworMUQwMjk7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIFNFSVNNQTtTbzswO0w7Ozs7O047Ozs7OworMUQwMkE7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIFNZTkFHTUEgQVJDSEFJT047U287MDtMOzs7OztOOzs7OzsKKzFEMDJCO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBTWU5BR01BIE1FVEEgU1RBVlJPVTtTbzswO0w7Ozs7O047Ozs7OworMUQwMkM7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIE9ZUkFOSVNNQSBBUkNIQUlPTjtTbzswO0w7Ozs7O047Ozs7OworMUQwMkQ7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIFRIRU1BO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDAyRTtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgTEVNT0k7U287MDtMOzs7OztOOzs7OzsKKzFEMDJGO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBEWU87U287MDtMOzs7OztOOzs7OzsKKzFEMDMwO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBUUklBO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDAzMTtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgVEVTU0VSQTtTbzswO0w7Ozs7O047Ozs7OworMUQwMzI7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIEtSQVRJTUFUQTtTbzswO0w7Ozs7O047Ozs7OworMUQwMzM7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIEFQRVNPIEVYTyBORU87U287MDtMOzs7OztOOzs7OzsKKzFEMDM0O0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBGVEhPUkEgQVJDSEFJT047U287MDtMOzs7OztOOzs7OzsKKzFEMDM1O0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBJTUlGVEhPUkE7U287MDtMOzs7OztOOzs7OzsKKzFEMDM2O0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBUUk9NSUtPTiBBUkNIQUlPTjtTbzswO0w7Ozs7O047Ozs7OworMUQwMzc7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIEtBVEFWQSBUUk9NSUtPTjtTbzswO0w7Ozs7O047Ozs7OworMUQwMzg7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIFBFTEFTVE9OO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDAzOTtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgUFNJRklTVE9OO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDAzQTtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgS09OVEVWTUE7U287MDtMOzs7OztOOzs7OzsKKzFEMDNCO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBDSE9SRVZNQSBBUkNIQUlPTjtTbzswO0w7Ozs7O047Ozs7OworMUQwM0M7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIFJBUElTTUE7U287MDtMOzs7OztOOzs7OzsKKzFEMDNEO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBQQVJBS0FMRVNNQSBBUkNIQUlPTjtTbzswO0w7Ozs7O047Ozs7OworMUQwM0U7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIFBBUkFLTElUSUtJIEFSQ0hBSU9OO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDAzRjtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgSUNIQURJTjtTbzswO0w7Ozs7O047Ozs7OworMUQwNDA7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIE5BTkE7U287MDtMOzs7OztOOzs7OzsKKzFEMDQxO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBQRVRBU01BO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDA0MjtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgS09OVEVWTUEgQUxMTztTbzswO0w7Ozs7O047Ozs7OworMUQwNDM7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIFRST01JS09OIEFMTE87U287MDtMOzs7OztOOzs7OzsKKzFEMDQ0O0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBTVFJBR0dJU01BVEE7U287MDtMOzs7OztOOzs7OzsKKzFEMDQ1O0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBHUk9OVEhJU01BVEE7U287MDtMOzs7OztOOzs7OzsKKzFEMDQ2O0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBJU09OIE5FTztTbzswO0w7Ozs7O047Ozs7OworMUQwNDc7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIE9MSUdPTiBORU87U287MDtMOzs7OztOOzs7OzsKKzFEMDQ4O0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBPWEVJQSBORU87U287MDtMOzs7OztOOzs7OzsKKzFEMDQ5O0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBQRVRBU1RJO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDA0QTtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgS09VRklTTUE7U287MDtMOzs7OztOOzs7OzsKKzFEMDRCO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBQRVRBU1RPS09VRklTTUE7U287MDtMOzs7OztOOzs7OzsKKzFEMDRDO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBLUkFUSU1PS09VRklTTUE7U287MDtMOzs7OztOOzs7OzsKKzFEMDREO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBQRUxBU1RPTiBORU87U287MDtMOzs7OztOOzs7OzsKKzFEMDRFO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBLRU5USU1BVEEgTkVPIEFOTztTbzswO0w7Ozs7O047Ozs7OworMUQwNEY7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIEtFTlRJTUEgTkVPIEFOTztTbzswO0w7Ozs7O047Ozs7OworMUQwNTA7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIFlQU0lMSTtTbzswO0w7Ozs7O047Ozs7OworMUQwNTE7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIEFQT1NUUk9GT1MgTkVPO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDA1MjtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgQVBPU1RST0ZPSSBTWU5ERVNNT1MgTkVPO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDA1MztCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgWVBPUlJPSTtTbzswO0w7Ozs7O047Ozs7OworMUQwNTQ7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIEtSQVRJTU9ZUE9SUk9PTjtTbzswO0w7Ozs7O047Ozs7OworMUQwNTU7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIEVMQUZST047U287MDtMOzs7OztOOzs7OzsKKzFEMDU2O0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBDSEFNSUxJO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDA1NztCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgTUlLUk9OIElTT047U287MDtMOzs7OztOOzs7OzsKKzFEMDU4O0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBWQVJFSUEgTkVPO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDA1OTtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgUElBU01BIE5FTztTbzswO0w7Ozs7O047Ozs7OworMUQwNUE7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIFBTSUZJU1RPTiBORU87U287MDtMOzs7OztOOzs7OzsKKzFEMDVCO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBPTUFMT047U287MDtMOzs7OztOOzs7OzsKKzFEMDVDO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBBTlRJS0VOT01BO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDA1RDtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgTFlHSVNNQTtTbzswO0w7Ozs7O047Ozs7OworMUQwNUU7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIFBBUkFLTElUSUtJIE5FTztTbzswO0w7Ozs7O047Ozs7OworMUQwNUY7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIFBBUkFLQUxFU01BIE5FTztTbzswO0w7Ozs7O047Ozs7OworMUQwNjA7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIEVURVJPTiBQQVJBS0FMRVNNQTtTbzswO0w7Ozs7O047Ozs7OworMUQwNjE7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIEtZTElTTUE7U287MDtMOzs7OztOOzs7OzsKKzFEMDYyO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBBTlRJS0VOT0tZTElTTUE7U287MDtMOzs7OztOOzs7OzsKKzFEMDYzO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBUUk9NSUtPTiBORU87U287MDtMOzs7OztOOzs7OzsKKzFEMDY0O0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBFS1NUUkVQVE9OO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDA2NTtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgU1lOQUdNQSBORU87U287MDtMOzs7OztOOzs7OzsKKzFEMDY2O0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBTWVJNQTtTbzswO0w7Ozs7O047Ozs7OworMUQwNjc7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIENIT1JFVk1BIE5FTztTbzswO0w7Ozs7O047Ozs7OworMUQwNjg7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIEVQRUdFUk1BO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDA2OTtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgU0VJU01BIE5FTztTbzswO0w7Ozs7O047Ozs7OworMUQwNkE7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIFhJUk9OIEtMQVNNQTtTbzswO0w7Ozs7O047Ozs7OworMUQwNkI7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIFRST01JS09QU0lGSVNUT047U287MDtMOzs7OztOOzs7OzsKKzFEMDZDO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBQU0lGSVNUT0xZR0lTTUE7U287MDtMOzs7OztOOzs7OzsKKzFEMDZEO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBUUk9NSUtPTFlHSVNNQTtTbzswO0w7Ozs7O047Ozs7OworMUQwNkU7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIFRST01JS09QQVJBS0FMRVNNQTtTbzswO0w7Ozs7O047Ozs7OworMUQwNkY7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIFBTSUZJU1RPUEFSQUtBTEVTTUE7U287MDtMOzs7OztOOzs7OzsKKzFEMDcwO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBUUk9NSUtPU1lOQUdNQTtTbzswO0w7Ozs7O047Ozs7OworMUQwNzE7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIFBTSUZJU1RPU1lOQUdNQTtTbzswO0w7Ozs7O047Ozs7OworMUQwNzI7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIEdPUkdPU1lOVEhFVE9OO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDA3MztCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgQVJHT1NZTlRIRVRPTjtTbzswO0w7Ozs7O047Ozs7OworMUQwNzQ7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIEVURVJPTiBBUkdPU1lOVEhFVE9OO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDA3NTtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgT1lSQU5JU01BIE5FTztTbzswO0w7Ozs7O047Ozs7OworMUQwNzY7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIFRIRU1BVElTTU9TIEVTTztTbzswO0w7Ozs7O047Ozs7OworMUQwNzc7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIFRIRU1BVElTTU9TIEVYTztTbzswO0w7Ozs7O047Ozs7OworMUQwNzg7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIFRIRU1BIEFQTE9VTjtTbzswO0w7Ozs7O047Ozs7OworMUQwNzk7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIFRIRVMgS0FJIEFQT1RIRVM7U287MDtMOzs7OztOOzs7OzsKKzFEMDdBO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBLQVRBVkFTTUE7U287MDtMOzs7OztOOzs7OzsKKzFEMDdCO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBFTkRPRk9OT047U287MDtMOzs7OztOOzs7OzsKKzFEMDdDO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBZRkVOIEtBVE87U287MDtMOzs7OztOOzs7OzsKKzFEMDdEO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBZRkVOIEFOTztTbzswO0w7Ozs7O047Ozs7OworMUQwN0U7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIFNUQVZST1M7U287MDtMOzs7OztOOzs7OzsKKzFEMDdGO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBLTEFTTUEgQU5PO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDA4MDtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgRElQTEkgQVJDSEFJT047U287MDtMOzs7OztOOzs7OzsKKzFEMDgxO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBLUkFUSU1BIEFSQ0hBSU9OO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDA4MjtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgS1JBVElNQSBBTExPO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDA4MztCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgS1JBVElNQSBORU87U287MDtMOzs7OztOOzs7OzsKKzFEMDg0O0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBBUE9ERVJNQSBORU87U287MDtMOzs7OztOOzs7OzsKKzFEMDg1O0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBBUExJO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDA4NjtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgRElQTEk7U287MDtMOzs7OztOOzs7OzsKKzFEMDg3O0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBUUklQTEk7U287MDtMOzs7OztOOzs7OzsKKzFEMDg4O0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBURVRSQVBMSTtTbzswO0w7Ozs7O047Ozs7OworMUQwODk7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIEtPUk9OSVM7U287MDtMOzs7OztOOzs7OzsKKzFEMDhBO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBMRUlNTUEgRU5PUyBDSFJPTk9VO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDA4QjtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgTEVJTU1BIERZTyBDSFJPTk9OO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDA4QztCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgTEVJTU1BIFRSSU9OIENIUk9OT047U287MDtMOzs7OztOOzs7OzsKKzFEMDhEO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBMRUlNTUEgVEVTU0FST04gQ0hST05PTjtTbzswO0w7Ozs7O047Ozs7OworMUQwOEU7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIExFSU1NQSBJTUlTRU9TIENIUk9OT1U7U287MDtMOzs7OztOOzs7OzsKKzFEMDhGO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBHT1JHT04gTkVPIEFOTztTbzswO0w7Ozs7O047Ozs7OworMUQwOTA7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIEdPUkdPTiBQQVJFU1RJR01FTk9OIEFSSVNURVJBO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDA5MTtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgR09SR09OIFBBUkVTVElHTUVOT04gREVYSUE7U287MDtMOzs7OztOOzs7OzsKKzFEMDkyO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBESUdPUkdPTjtTbzswO0w7Ozs7O047Ozs7OworMUQwOTM7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIERJR09SR09OIFBBUkVTVElHTUVOT04gQVJJU1RFUkEgS0FUTztTbzswO0w7Ozs7O047Ozs7OworMUQwOTQ7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIERJR09SR09OIFBBUkVTVElHTUVOT04gQVJJU1RFUkEgQU5PO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDA5NTtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgRElHT1JHT04gUEFSRVNUSUdNRU5PTiBERVhJQTtTbzswO0w7Ozs7O047Ozs7OworMUQwOTY7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIFRSSUdPUkdPTjtTbzswO0w7Ozs7O047Ozs7OworMUQwOTc7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIEFSR09OO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDA5ODtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgSU1JRElBUkdPTjtTbzswO0w7Ozs7O047Ozs7OworMUQwOTk7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIERJQVJHT047U287MDtMOzs7OztOOzs7OzsKKzFEMDlBO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBBR09HSSBQT0xJIEFSR0k7U287MDtMOzs7OztOOzs7OzsKKzFEMDlCO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBBR09HSSBBUkdPVEVSSTtTbzswO0w7Ozs7O047Ozs7OworMUQwOUM7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIEFHT0dJIEFSR0k7U287MDtMOzs7OztOOzs7OzsKKzFEMDlEO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBBR09HSSBNRVRSSUE7U287MDtMOzs7OztOOzs7OzsKKzFEMDlFO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBBR09HSSBNRVNJO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDA5RjtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgQUdPR0kgR09SR0k7U287MDtMOzs7OztOOzs7OzsKKzFEMEEwO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBBR09HSSBHT1JHT1RFUkk7U287MDtMOzs7OztOOzs7OzsKKzFEMEExO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBBR09HSSBQT0xJIEdPUkdJO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDBBMjtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgTUFSVFlSSUEgUFJPVE9TIElDSE9TO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDBBMztCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgTUFSVFlSSUEgQUxMSSBQUk9UT1MgSUNIT1M7U287MDtMOzs7OztOOzs7OzsKKzFEMEE0O0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBNQVJUWVJJQSBERVlURVJPUyBJQ0hPUztTbzswO0w7Ozs7O047Ozs7OworMUQwQTU7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIE1BUlRZUklBIEFMTEkgREVZVEVST1MgSUNIT1M7U287MDtMOzs7OztOOzs7OzsKKzFEMEE2O0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBNQVJUWVJJQSBUUklUT1MgSUNIT1M7U287MDtMOzs7OztOOzs7OzsKKzFEMEE3O0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBNQVJUWVJJQSBUUklGT05JQVM7U287MDtMOzs7OztOOzs7OzsKKzFEMEE4O0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBNQVJUWVJJQSBURVRBUlRPUyBJQ0hPUztTbzswO0w7Ozs7O047Ozs7OworMUQwQTk7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIE1BUlRZUklBIFRFVEFSVE9TIExFR0VUT1MgSUNIT1M7U287MDtMOzs7OztOOzs7OzsKKzFEMEFBO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBNQVJUWVJJQSBMRUdFVE9TIElDSE9TO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDBBQjtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgTUFSVFlSSUEgUExBR0lPUyBJQ0hPUztTbzswO0w7Ozs7O047Ozs7OworMUQwQUM7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIElTQUtJQSBURUxPVVMgSUNISU1BVE9TO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDBBRDtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgQVBPU1RST0ZPSSBURUxPVVMgSUNISU1BVE9TO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDBBRTtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgRkFORVJPU0lTIFRFVFJBRk9OSUFTO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDBBRjtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgRkFORVJPU0lTIE1PTk9GT05JQVM7U287MDtMOzs7OztOOzs7OzsKKzFEMEIwO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBGQU5FUk9TSVMgRElGT05JQVM7U287MDtMOzs7OztOOzs7OzsKKzFEMEIxO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBNQVJUWVJJQSBWQVJZUyBJQ0hPUztTbzswO0w7Ozs7O047Ozs7OworMUQwQjI7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIE1BUlRZUklBIFBST1RPVkFSWVMgSUNIT1M7U287MDtMOzs7OztOOzs7OzsKKzFEMEIzO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBNQVJUWVJJQSBQTEFHSU9TIFRFVEFSVE9TIElDSE9TO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDBCNDtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgR09SVEhNSUtPTiBOIEFQTE9VTjtTbzswO0w7Ozs7O047Ozs7OworMUQwQjU7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIEdPUlRITUlLT04gTiBESVBMT1VOO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDBCNjtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgRU5BUlhJUyBLQUkgRlRIT1JBIFZPVTtTbzswO0w7Ozs7O047Ozs7OworMUQwQjc7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIElNSUZPTk9OO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDBCODtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgSU1JRlRIT1JPTjtTbzswO0w7Ozs7O047Ozs7OworMUQwQjk7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIEZUSE9SQSBBUkNIQUlPTiBERVlURVJPVSBJQ0hPVTtTbzswO0w7Ozs7O047Ozs7OworMUQwQkE7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIEZUSE9SQSBESUFUT05JS0kgUEE7U287MDtMOzs7OztOOzs7OzsKKzFEMEJCO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBGVEhPUkEgRElBVE9OSUtJIE5BTkE7U287MDtMOzs7OztOOzs7OzsKKzFEMEJDO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBGVEhPUkEgTkFPUyBJQ0hPUztTbzswO0w7Ozs7O047Ozs7OworMUQwQkQ7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIEZUSE9SQSBESUFUT05JS0kgREk7U287MDtMOzs7OztOOzs7OzsKKzFEMEJFO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBGVEhPUkEgU0tMSVJPTiBESUFUT05PTiBESTtTbzswO0w7Ozs7O047Ozs7OworMUQwQkY7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIEZUSE9SQSBESUFUT05JS0kgS0U7U287MDtMOzs7OztOOzs7OzsKKzFEMEMwO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBGVEhPUkEgRElBVE9OSUtJIFpPO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDBDMTtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgRlRIT1JBIERJQVRPTklLSSBOSSBLQVRPO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDBDMjtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgRlRIT1JBIERJQVRPTklLSSBOSSBBTk87U287MDtMOzs7OztOOzs7OzsKKzFEMEMzO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBGVEhPUkEgTUFMQUtPTiBDSFJPTUEgRElGT05JQVM7U287MDtMOzs7OztOOzs7OzsKKzFEMEM0O0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBGVEhPUkEgTUFMQUtPTiBDSFJPTUEgTU9OT0ZPTklBUztTbzswO0w7Ozs7O047Ozs7OworMUQwQzU7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIEZIVE9SQSBTS0xJUk9OIENIUk9NQSBWQVNJUztTbzswO0w7Ozs7O047Ozs7OworMUQwQzY7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIEZUSE9SQSBTS0xJUk9OIENIUk9NQSBTWU5BRkk7U287MDtMOzs7OztOOzs7OzsKKzFEMEM3O0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBGVEhPUkEgTkVOQU5PO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDBDODtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgQ0hST0EgWllHT1M7U287MDtMOzs7OztOOzs7OzsKKzFEMEM5O0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBDSFJPQSBLTElUT047U287MDtMOzs7OztOOzs7OzsKKzFEMENBO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBDSFJPQSBTUEFUSEk7U287MDtMOzs7OztOOzs7OzsKKzFEMENCO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBGVEhPUkEgSSBZRkVTSVMgVEVUQVJUSU1PUklPTjtTbzswO0w7Ozs7O047Ozs7OworMUQwQ0M7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIEZUSE9SQSBFTkFSTU9OSU9TIEFOVElGT05JQTtTbzswO0w7Ozs7O047Ozs7OworMUQwQ0Q7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIFlGRVNJUyBUUklUSU1PUklPTjtTbzswO0w7Ozs7O047Ozs7OworMUQwQ0U7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIERJRVNJUyBUUklUSU1PUklPTjtTbzswO0w7Ozs7O047Ozs7OworMUQwQ0Y7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIERJRVNJUyBURVRBUlRJTU9SSU9OO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDBEMDtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgRElFU0lTIEFQTEkgRFlPIERPREVLQVRBO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDBEMTtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgRElFU0lTIE1PTk9HUkFNTU9TIFRFU1NFUkEgRE9ERUtBVEE7U287MDtMOzs7OztOOzs7OzsKKzFEMEQyO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBESUVTSVMgRElHUkFNTU9TIEVYIERPREVLQVRBO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDBEMztCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgRElFU0lTIFRSSUdSQU1NT1MgT0tUTyBET0RFS0FUQTtTbzswO0w7Ozs7O047Ozs7OworMUQwRDQ7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIFlGRVNJUyBBUExJIERZTyBET0RFS0FUQTtTbzswO0w7Ozs7O047Ozs7OworMUQwRDU7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIFlGRVNJUyBNT05PR1JBTU1PUyBURVNTRVJBIERPREVLQVRBO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDBENjtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgWUZFU0lTIERJR1JBTU1PUyBFWCBET0RFS0FUQTtTbzswO0w7Ozs7O047Ozs7OworMUQwRDc7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIFlGRVNJUyBUUklHUkFNTU9TIE9LVE8gRE9ERUtBVEE7U287MDtMOzs7OztOOzs7OzsKKzFEMEQ4O0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBHRU5JS0kgRElFU0lTO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDBEOTtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgR0VOSUtJIFlGRVNJUztTbzswO0w7Ozs7O047Ozs7OworMUQwREE7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIERJQVNUT0xJIEFQTEkgTUlLUkk7U287MDtMOzs7OztOOzs7OzsKKzFEMERCO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBESUFTVE9MSSBBUExJIE1FR0FMSTtTbzswO0w7Ozs7O047Ozs7OworMUQwREM7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIERJQVNUT0xJIERJUExJO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDBERDtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgRElBU1RPTEkgVEhFU0VPUztTbzswO0w7Ozs7O047Ozs7OworMUQwREU7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIFNJTUFOU0lTIFRIRVNFT1M7U287MDtMOzs7OztOOzs7OzsKKzFEMERGO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBTSU1BTlNJUyBUSEVTRU9TIERJU0lNT1U7U287MDtMOzs7OztOOzs7OzsKKzFEMEUwO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBTSU1BTlNJUyBUSEVTRU9TIFRSSVNJTU9VO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDBFMTtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgU0lNQU5TSVMgVEhFU0VPUyBURVRSQVNJTU9VO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDBFMjtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgU0lNQU5TSVMgQVJTRU9TO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDBFMztCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgU0lNQU5TSVMgQVJTRU9TIERJU0lNT1U7U287MDtMOzs7OztOOzs7OzsKKzFEMEU0O0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBTSU1BTlNJUyBBUlNFT1MgVFJJU0lNT1U7U287MDtMOzs7OztOOzs7OzsKKzFEMEU1O0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBTSU1BTlNJUyBBUlNFT1MgVEVUUkFTSU1PVTtTbzswO0w7Ozs7O047Ozs7OworMUQwRTY7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIERJR1JBTU1BIEdHO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDBFNztCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgRElGVE9HR09TIE9VO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDBFODtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgU1RJR01BO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDBFOTtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgQVJLVElLTyBQQTtTbzswO0w7Ozs7O047Ozs7OworMUQwRUE7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIEFSS1RJS08gVk9VO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDBFQjtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgQVJLVElLTyBHQTtTbzswO0w7Ozs7O047Ozs7OworMUQwRUM7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIEFSS1RJS08gREk7U287MDtMOzs7OztOOzs7OzsKKzFEMEVEO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBBUktUSUtPIEtFO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDBFRTtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgQVJLVElLTyBaTztTbzswO0w7Ozs7O047Ozs7OworMUQwRUY7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIEFSS1RJS08gTkk7U287MDtMOzs7OztOOzs7OzsKKzFEMEYwO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBLRU5USU1BVEEgTkVPIE1FU087U287MDtMOzs7OztOOzs7OzsKKzFEMEYxO0JZWkFOVElORSBNVVNJQ0FMIFNZTUJPTCBLRU5USU1BIE5FTyBNRVNPO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDBGMjtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgS0VOVElNQVRBIE5FTyBLQVRPO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDBGMztCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgS0VOVElNQSBORU8gS0FUTztTbzswO0w7Ozs7O047Ozs7OworMUQwRjQ7QllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIEtMQVNNQSBLQVRPO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDBGNTtCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgR09SR09OIE5FTyBLQVRPO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDEwMDtNVVNJQ0FMIFNZTUJPTCBTSU5HTEUgQkFSTElORTtTbzswO0w7Ozs7O047Ozs7OworMUQxMDE7TVVTSUNBTCBTWU1CT0wgRE9VQkxFIEJBUkxJTkU7U287MDtMOzs7OztOOzs7OzsKKzFEMTAyO01VU0lDQUwgU1lNQk9MIEZJTkFMIEJBUkxJTkU7U287MDtMOzs7OztOOzs7OzsKKzFEMTAzO01VU0lDQUwgU1lNQk9MIFJFVkVSU0UgRklOQUwgQkFSTElORTtTbzswO0w7Ozs7O047Ozs7OworMUQxMDQ7TVVTSUNBTCBTWU1CT0wgREFTSEVEIEJBUkxJTkU7U287MDtMOzs7OztOOzs7OzsKKzFEMTA1O01VU0lDQUwgU1lNQk9MIFNIT1JUIEJBUkxJTkU7U287MDtMOzs7OztOOzs7OzsKKzFEMTA2O01VU0lDQUwgU1lNQk9MIExFRlQgUkVQRUFUIFNJR047U287MDtMOzs7OztOOzs7OzsKKzFEMTA3O01VU0lDQUwgU1lNQk9MIFJJR0hUIFJFUEVBVCBTSUdOO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDEwODtNVVNJQ0FMIFNZTUJPTCBSRVBFQVQgRE9UUztTbzswO0w7Ozs7O047Ozs7OworMUQxMDk7TVVTSUNBTCBTWU1CT0wgREFMIFNFR05PO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDEwQTtNVVNJQ0FMIFNZTUJPTCBEQSBDQVBPO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDEwQjtNVVNJQ0FMIFNZTUJPTCBTRUdOTztTbzswO0w7Ozs7O047Ozs7OworMUQxMEM7TVVTSUNBTCBTWU1CT0wgQ09EQTtTbzswO0w7Ozs7O047Ozs7OworMUQxMEQ7TVVTSUNBTCBTWU1CT0wgUkVQRUFURUQgRklHVVJFLTE7U287MDtMOzs7OztOOzs7OzsKKzFEMTBFO01VU0lDQUwgU1lNQk9MIFJFUEVBVEVEIEZJR1VSRS0yO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDEwRjtNVVNJQ0FMIFNZTUJPTCBSRVBFQVRFRCBGSUdVUkUtMztTbzswO0w7Ozs7O047Ozs7OworMUQxMTA7TVVTSUNBTCBTWU1CT0wgRkVSTUFUQTtTbzswO0w7Ozs7O047Ozs7OworMUQxMTE7TVVTSUNBTCBTWU1CT0wgRkVSTUFUQSBCRUxPVztTbzswO0w7Ozs7O047Ozs7OworMUQxMTI7TVVTSUNBTCBTWU1CT0wgQlJFQVRIIE1BUks7U287MDtMOzs7OztOOzs7OzsKKzFEMTEzO01VU0lDQUwgU1lNQk9MIENBRVNVUkE7U287MDtMOzs7OztOOzs7OzsKKzFEMTE0O01VU0lDQUwgU1lNQk9MIEJSQUNFO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDExNTtNVVNJQ0FMIFNZTUJPTCBCUkFDS0VUO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDExNjtNVVNJQ0FMIFNZTUJPTCBPTkUtTElORSBTVEFGRjtTbzswO0w7Ozs7O047Ozs7OworMUQxMTc7TVVTSUNBTCBTWU1CT0wgVFdPLUxJTkUgU1RBRkY7U287MDtMOzs7OztOOzs7OzsKKzFEMTE4O01VU0lDQUwgU1lNQk9MIFRIUkVFLUxJTkUgU1RBRkY7U287MDtMOzs7OztOOzs7OzsKKzFEMTE5O01VU0lDQUwgU1lNQk9MIEZPVVItTElORSBTVEFGRjtTbzswO0w7Ozs7O047Ozs7OworMUQxMUE7TVVTSUNBTCBTWU1CT0wgRklWRS1MSU5FIFNUQUZGO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDExQjtNVVNJQ0FMIFNZTUJPTCBTSVgtTElORSBTVEFGRjtTbzswO0w7Ozs7O047Ozs7OworMUQxMUM7TVVTSUNBTCBTWU1CT0wgU0lYLVNUUklORyBGUkVUQk9BUkQ7U287MDtMOzs7OztOOzs7OzsKKzFEMTFEO01VU0lDQUwgU1lNQk9MIEZPVVItU1RSSU5HIEZSRVRCT0FSRDtTbzswO0w7Ozs7O047Ozs7OworMUQxMUU7TVVTSUNBTCBTWU1CT0wgRyBDTEVGO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDExRjtNVVNJQ0FMIFNZTUJPTCBHIENMRUYgT1RUQVZBIEFMVEE7U287MDtMOzs7OztOOzs7OzsKKzFEMTIwO01VU0lDQUwgU1lNQk9MIEcgQ0xFRiBPVFRBVkEgQkFTU0E7U287MDtMOzs7OztOOzs7OzsKKzFEMTIxO01VU0lDQUwgU1lNQk9MIEMgQ0xFRjtTbzswO0w7Ozs7O047Ozs7OworMUQxMjI7TVVTSUNBTCBTWU1CT0wgRiBDTEVGO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDEyMztNVVNJQ0FMIFNZTUJPTCBGIENMRUYgT1RUQVZBIEFMVEE7U287MDtMOzs7OztOOzs7OzsKKzFEMTI0O01VU0lDQUwgU1lNQk9MIEYgQ0xFRiBPVFRBVkEgQkFTU0E7U287MDtMOzs7OztOOzs7OzsKKzFEMTI1O01VU0lDQUwgU1lNQk9MIERSVU0gQ0xFRi0xO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDEyNjtNVVNJQ0FMIFNZTUJPTCBEUlVNIENMRUYtMjtTbzswO0w7Ozs7O047Ozs7OworMUQxMkE7TVVTSUNBTCBTWU1CT0wgRE9VQkxFIFNIQVJQO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDEyQjtNVVNJQ0FMIFNZTUJPTCBET1VCTEUgRkxBVDtTbzswO0w7Ozs7O047Ozs7OworMUQxMkM7TVVTSUNBTCBTWU1CT0wgRkxBVCBVUDtTbzswO0w7Ozs7O047Ozs7OworMUQxMkQ7TVVTSUNBTCBTWU1CT0wgRkxBVCBET1dOO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDEyRTtNVVNJQ0FMIFNZTUJPTCBOQVRVUkFMIFVQO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDEyRjtNVVNJQ0FMIFNZTUJPTCBOQVRVUkFMIERPV047U287MDtMOzs7OztOOzs7OzsKKzFEMTMwO01VU0lDQUwgU1lNQk9MIFNIQVJQIFVQO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDEzMTtNVVNJQ0FMIFNZTUJPTCBTSEFSUCBET1dOO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDEzMjtNVVNJQ0FMIFNZTUJPTCBRVUFSVEVSIFRPTkUgU0hBUlA7U287MDtMOzs7OztOOzs7OzsKKzFEMTMzO01VU0lDQUwgU1lNQk9MIFFVQVJURVIgVE9ORSBGTEFUO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDEzNDtNVVNJQ0FMIFNZTUJPTCBDT01NT04gVElNRTtTbzswO0w7Ozs7O047Ozs7OworMUQxMzU7TVVTSUNBTCBTWU1CT0wgQ1VUIFRJTUU7U287MDtMOzs7OztOOzs7OzsKKzFEMTM2O01VU0lDQUwgU1lNQk9MIE9UVEFWQSBBTFRBO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDEzNztNVVNJQ0FMIFNZTUJPTCBPVFRBVkEgQkFTU0E7U287MDtMOzs7OztOOzs7OzsKKzFEMTM4O01VU0lDQUwgU1lNQk9MIFFVSU5ESUNFU0lNQSBBTFRBO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDEzOTtNVVNJQ0FMIFNZTUJPTCBRVUlORElDRVNJTUEgQkFTU0E7U287MDtMOzs7OztOOzs7OzsKKzFEMTNBO01VU0lDQUwgU1lNQk9MIE1VTFRJIFJFU1Q7U287MDtMOzs7OztOOzs7OzsKKzFEMTNCO01VU0lDQUwgU1lNQk9MIFdIT0xFIFJFU1Q7U287MDtMOzs7OztOOzs7OzsKKzFEMTNDO01VU0lDQUwgU1lNQk9MIEhBTEYgUkVTVDtTbzswO0w7Ozs7O047Ozs7OworMUQxM0Q7TVVTSUNBTCBTWU1CT0wgUVVBUlRFUiBSRVNUO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDEzRTtNVVNJQ0FMIFNZTUJPTCBFSUdIVEggUkVTVDtTbzswO0w7Ozs7O047Ozs7OworMUQxM0Y7TVVTSUNBTCBTWU1CT0wgU0lYVEVFTlRIIFJFU1Q7U287MDtMOzs7OztOOzs7OzsKKzFEMTQwO01VU0lDQUwgU1lNQk9MIFRISVJUWS1TRUNPTkQgUkVTVDtTbzswO0w7Ozs7O047Ozs7OworMUQxNDE7TVVTSUNBTCBTWU1CT0wgU0lYVFktRk9VUlRIIFJFU1Q7U287MDtMOzs7OztOOzs7OzsKKzFEMTQyO01VU0lDQUwgU1lNQk9MIE9ORSBIVU5EUkVEIFRXRU5UWS1FSUdIVEggUkVTVDtTbzswO0w7Ozs7O047Ozs7OworMUQxNDM7TVVTSUNBTCBTWU1CT0wgWCBOT1RFSEVBRDtTbzswO0w7Ozs7O047Ozs7OworMUQxNDQ7TVVTSUNBTCBTWU1CT0wgUExVUyBOT1RFSEVBRDtTbzswO0w7Ozs7O047Ozs7OworMUQxNDU7TVVTSUNBTCBTWU1CT0wgQ0lSQ0xFIFggTk9URUhFQUQ7U287MDtMOzs7OztOOzs7OzsKKzFEMTQ2O01VU0lDQUwgU1lNQk9MIFNRVUFSRSBOT1RFSEVBRCBXSElURTtTbzswO0w7Ozs7O047Ozs7OworMUQxNDc7TVVTSUNBTCBTWU1CT0wgU1FVQVJFIE5PVEVIRUFEIEJMQUNLO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDE0ODtNVVNJQ0FMIFNZTUJPTCBUUklBTkdMRSBOT1RFSEVBRCBVUCBXSElURTtTbzswO0w7Ozs7O047Ozs7OworMUQxNDk7TVVTSUNBTCBTWU1CT0wgVFJJQU5HTEUgTk9URUhFQUQgVVAgQkxBQ0s7U287MDtMOzs7OztOOzs7OzsKKzFEMTRBO01VU0lDQUwgU1lNQk9MIFRSSUFOR0xFIE5PVEVIRUFEIExFRlQgV0hJVEU7U287MDtMOzs7OztOOzs7OzsKKzFEMTRCO01VU0lDQUwgU1lNQk9MIFRSSUFOR0xFIE5PVEVIRUFEIExFRlQgQkxBQ0s7U287MDtMOzs7OztOOzs7OzsKKzFEMTRDO01VU0lDQUwgU1lNQk9MIFRSSUFOR0xFIE5PVEVIRUFEIFJJR0hUIFdISVRFO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDE0RDtNVVNJQ0FMIFNZTUJPTCBUUklBTkdMRSBOT1RFSEVBRCBSSUdIVCBCTEFDSztTbzswO0w7Ozs7O047Ozs7OworMUQxNEU7TVVTSUNBTCBTWU1CT0wgVFJJQU5HTEUgTk9URUhFQUQgRE9XTiBXSElURTtTbzswO0w7Ozs7O047Ozs7OworMUQxNEY7TVVTSUNBTCBTWU1CT0wgVFJJQU5HTEUgTk9URUhFQUQgRE9XTiBCTEFDSztTbzswO0w7Ozs7O047Ozs7OworMUQxNTA7TVVTSUNBTCBTWU1CT0wgVFJJQU5HTEUgTk9URUhFQUQgVVAgUklHSFQgV0hJVEU7U287MDtMOzs7OztOOzs7OzsKKzFEMTUxO01VU0lDQUwgU1lNQk9MIFRSSUFOR0xFIE5PVEVIRUFEIFVQIFJJR0hUIEJMQUNLO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDE1MjtNVVNJQ0FMIFNZTUJPTCBNT09OIE5PVEVIRUFEIFdISVRFO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDE1MztNVVNJQ0FMIFNZTUJPTCBNT09OIE5PVEVIRUFEIEJMQUNLO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDE1NDtNVVNJQ0FMIFNZTUJPTCBUUklBTkdMRS1ST1VORCBOT1RFSEVBRCBET1dOIFdISVRFO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDE1NTtNVVNJQ0FMIFNZTUJPTCBUUklBTkdMRS1ST1VORCBOT1RFSEVBRCBET1dOIEJMQUNLO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDE1NjtNVVNJQ0FMIFNZTUJPTCBQQVJFTlRIRVNJUyBOT1RFSEVBRDtTbzswO0w7Ozs7O047Ozs7OworMUQxNTc7TVVTSUNBTCBTWU1CT0wgVk9JRCBOT1RFSEVBRDtTbzswO0w7Ozs7O047Ozs7OworMUQxNTg7TVVTSUNBTCBTWU1CT0wgTk9URUhFQUQgQkxBQ0s7U287MDtMOzs7OztOOzs7OzsKKzFEMTU5O01VU0lDQUwgU1lNQk9MIE5VTEwgTk9URUhFQUQ7U287MDtMOzs7OztOOzs7OzsKKzFEMTVBO01VU0lDQUwgU1lNQk9MIENMVVNURVIgTk9URUhFQUQgV0hJVEU7U287MDtMOzs7OztOOzs7OzsKKzFEMTVCO01VU0lDQUwgU1lNQk9MIENMVVNURVIgTk9URUhFQUQgQkxBQ0s7U287MDtMOzs7OztOOzs7OzsKKzFEMTVDO01VU0lDQUwgU1lNQk9MIEJSRVZFO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDE1RDtNVVNJQ0FMIFNZTUJPTCBXSE9MRSBOT1RFO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDE1RTtNVVNJQ0FMIFNZTUJPTCBIQUxGIE5PVEU7U287MDtMOzFEMTU3IDFEMTY1Ozs7O047Ozs7OworMUQxNUY7TVVTSUNBTCBTWU1CT0wgUVVBUlRFUiBOT1RFO1NvOzA7TDsxRDE1OCAxRDE2NTs7OztOOzs7OzsKKzFEMTYwO01VU0lDQUwgU1lNQk9MIEVJR0hUSCBOT1RFO1NvOzA7TDsxRDE1RiAxRDE2RTs7OztOOzs7OzsKKzFEMTYxO01VU0lDQUwgU1lNQk9MIFNJWFRFRU5USCBOT1RFO1NvOzA7TDsxRDE1RiAxRDE2Rjs7OztOOzs7OzsKKzFEMTYyO01VU0lDQUwgU1lNQk9MIFRISVJUWS1TRUNPTkQgTk9URTtTbzswO0w7MUQxNUYgMUQxNzA7Ozs7Tjs7Ozs7CisxRDE2MztNVVNJQ0FMIFNZTUJPTCBTSVhUWS1GT1VSVEggTk9URTtTbzswO0w7MUQxNUYgMUQxNzE7Ozs7Tjs7Ozs7CisxRDE2NDtNVVNJQ0FMIFNZTUJPTCBPTkUgSFVORFJFRCBUV0VOVFktRUlHSFRIIE5PVEU7U287MDtMOzFEMTVGIDFEMTcyOzs7O047Ozs7OworMUQxNjU7TVVTSUNBTCBTWU1CT0wgQ09NQklOSU5HIFNURU07TWM7MjE2O0w7Ozs7O047Ozs7OworMUQxNjY7TVVTSUNBTCBTWU1CT0wgQ09NQklOSU5HIFNQUkVDSEdFU0FORyBTVEVNO01jOzIxNjtMOzs7OztOOzs7OzsKKzFEMTY3O01VU0lDQUwgU1lNQk9MIENPTUJJTklORyBUUkVNT0xPLTE7TW47MTtOU007Ozs7O047Ozs7OworMUQxNjg7TVVTSUNBTCBTWU1CT0wgQ09NQklOSU5HIFRSRU1PTE8tMjtNbjsxO05TTTs7Ozs7Tjs7Ozs7CisxRDE2OTtNVVNJQ0FMIFNZTUJPTCBDT01CSU5JTkcgVFJFTU9MTy0zO01uOzE7TlNNOzs7OztOOzs7OzsKKzFEMTZBO01VU0lDQUwgU1lNQk9MIEZJTkdFUkVEIFRSRU1PTE8tMTtTbzswO0w7Ozs7O047Ozs7OworMUQxNkI7TVVTSUNBTCBTWU1CT0wgRklOR0VSRUQgVFJFTU9MTy0yO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDE2QztNVVNJQ0FMIFNZTUJPTCBGSU5HRVJFRCBUUkVNT0xPLTM7U287MDtMOzs7OztOOzs7OzsKKzFEMTZEO01VU0lDQUwgU1lNQk9MIENPTUJJTklORyBBVUdNRU5UQVRJT04gRE9UO01jOzIyNjtMOzs7OztOOzs7OzsKKzFEMTZFO01VU0lDQUwgU1lNQk9MIENPTUJJTklORyBGTEFHLTE7TWM7MjE2O0w7Ozs7O047Ozs7OworMUQxNkY7TVVTSUNBTCBTWU1CT0wgQ09NQklOSU5HIEZMQUctMjtNYzsyMTY7TDs7Ozs7Tjs7Ozs7CisxRDE3MDtNVVNJQ0FMIFNZTUJPTCBDT01CSU5JTkcgRkxBRy0zO01jOzIxNjtMOzs7OztOOzs7OzsKKzFEMTcxO01VU0lDQUwgU1lNQk9MIENPTUJJTklORyBGTEFHLTQ7TWM7MjE2O0w7Ozs7O047Ozs7OworMUQxNzI7TVVTSUNBTCBTWU1CT0wgQ09NQklOSU5HIEZMQUctNTtNYzsyMTY7TDs7Ozs7Tjs7Ozs7CisxRDE3MztNVVNJQ0FMIFNZTUJPTCBCRUdJTiBCRUFNO0NmOzA7Qk47Ozs7O047Ozs7OworMUQxNzQ7TVVTSUNBTCBTWU1CT0wgRU5EIEJFQU07Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CisxRDE3NTtNVVNJQ0FMIFNZTUJPTCBCRUdJTiBUSUU7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CisxRDE3NjtNVVNJQ0FMIFNZTUJPTCBFTkQgVElFO0NmOzA7Qk47Ozs7O047Ozs7OworMUQxNzc7TVVTSUNBTCBTWU1CT0wgQkVHSU4gU0xVUjtDZjswO0JOOzs7OztOOzs7OzsKKzFEMTc4O01VU0lDQUwgU1lNQk9MIEVORCBTTFVSO0NmOzA7Qk47Ozs7O047Ozs7OworMUQxNzk7TVVTSUNBTCBTWU1CT0wgQkVHSU4gUEhSQVNFO0NmOzA7Qk47Ozs7O047Ozs7OworMUQxN0E7TVVTSUNBTCBTWU1CT0wgRU5EIFBIUkFTRTtDZjswO0JOOzs7OztOOzs7OzsKKzFEMTdCO01VU0lDQUwgU1lNQk9MIENPTUJJTklORyBBQ0NFTlQ7TW47MjIwO05TTTs7Ozs7Tjs7Ozs7CisxRDE3QztNVVNJQ0FMIFNZTUJPTCBDT01CSU5JTkcgU1RBQ0NBVE87TW47MjIwO05TTTs7Ozs7Tjs7Ozs7CisxRDE3RDtNVVNJQ0FMIFNZTUJPTCBDT01CSU5JTkcgVEVOVVRPO01uOzIyMDtOU007Ozs7O047Ozs7OworMUQxN0U7TVVTSUNBTCBTWU1CT0wgQ09NQklOSU5HIFNUQUNDQVRJU1NJTU87TW47MjIwO05TTTs7Ozs7Tjs7Ozs7CisxRDE3RjtNVVNJQ0FMIFNZTUJPTCBDT01CSU5JTkcgTUFSQ0FUTztNbjsyMjA7TlNNOzs7OztOOzs7OzsKKzFEMTgwO01VU0lDQUwgU1lNQk9MIENPTUJJTklORyBNQVJDQVRPLVNUQUNDQVRPO01uOzIyMDtOU007Ozs7O047Ozs7OworMUQxODE7TVVTSUNBTCBTWU1CT0wgQ09NQklOSU5HIEFDQ0VOVC1TVEFDQ0FUTztNbjsyMjA7TlNNOzs7OztOOzs7OzsKKzFEMTgyO01VU0lDQUwgU1lNQk9MIENPTUJJTklORyBMT1VSRTtNbjsyMjA7TlNNOzs7OztOOzs7OzsKKzFEMTgzO01VU0lDQUwgU1lNQk9MIEFSUEVHR0lBVE8gVVA7U287MDtMOzs7OztOOzs7OzsKKzFEMTg0O01VU0lDQUwgU1lNQk9MIEFSUEVHR0lBVE8gRE9XTjtTbzswO0w7Ozs7O047Ozs7OworMUQxODU7TVVTSUNBTCBTWU1CT0wgQ09NQklOSU5HIERPSVQ7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CisxRDE4NjtNVVNJQ0FMIFNZTUJPTCBDT01CSU5JTkcgUklQO01uOzIzMDtOU007Ozs7O047Ozs7OworMUQxODc7TVVTSUNBTCBTWU1CT0wgQ09NQklOSU5HIEZMSVA7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CisxRDE4ODtNVVNJQ0FMIFNZTUJPTCBDT01CSU5JTkcgU01FQVI7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CisxRDE4OTtNVVNJQ0FMIFNZTUJPTCBDT01CSU5JTkcgQkVORDtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzFEMThBO01VU0lDQUwgU1lNQk9MIENPTUJJTklORyBET1VCTEUgVE9OR1VFO01uOzIyMDtOU007Ozs7O047Ozs7OworMUQxOEI7TVVTSUNBTCBTWU1CT0wgQ09NQklOSU5HIFRSSVBMRSBUT05HVUU7TW47MjIwO05TTTs7Ozs7Tjs7Ozs7CisxRDE4QztNVVNJQ0FMIFNZTUJPTCBSSU5GT1JaQU5ETztTbzswO0w7Ozs7O047Ozs7OworMUQxOEQ7TVVTSUNBTCBTWU1CT0wgU1VCSVRPO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDE4RTtNVVNJQ0FMIFNZTUJPTCBaO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDE4RjtNVVNJQ0FMIFNZTUJPTCBQSUFOTztTbzswO0w7Ozs7O047Ozs7OworMUQxOTA7TVVTSUNBTCBTWU1CT0wgTUVaWk87U287MDtMOzs7OztOOzs7OzsKKzFEMTkxO01VU0lDQUwgU1lNQk9MIEZPUlRFO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDE5MjtNVVNJQ0FMIFNZTUJPTCBDUkVTQ0VORE87U287MDtMOzs7OztOOzs7OzsKKzFEMTkzO01VU0lDQUwgU1lNQk9MIERFQ1JFU0NFTkRPO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDE5NDtNVVNJQ0FMIFNZTUJPTCBHUkFDRSBOT1RFIFNMQVNIO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDE5NTtNVVNJQ0FMIFNZTUJPTCBHUkFDRSBOT1RFIE5PIFNMQVNIO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDE5NjtNVVNJQ0FMIFNZTUJPTCBUUjtTbzswO0w7Ozs7O047Ozs7OworMUQxOTc7TVVTSUNBTCBTWU1CT0wgVFVSTjtTbzswO0w7Ozs7O047Ozs7OworMUQxOTg7TVVTSUNBTCBTWU1CT0wgSU5WRVJURUQgVFVSTjtTbzswO0w7Ozs7O047Ozs7OworMUQxOTk7TVVTSUNBTCBTWU1CT0wgVFVSTiBTTEFTSDtTbzswO0w7Ozs7O047Ozs7OworMUQxOUE7TVVTSUNBTCBTWU1CT0wgVFVSTiBVUDtTbzswO0w7Ozs7O047Ozs7OworMUQxOUI7TVVTSUNBTCBTWU1CT0wgT1JOQU1FTlQgU1RST0tFLTE7U287MDtMOzs7OztOOzs7OzsKKzFEMTlDO01VU0lDQUwgU1lNQk9MIE9STkFNRU5UIFNUUk9LRS0yO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDE5RDtNVVNJQ0FMIFNZTUJPTCBPUk5BTUVOVCBTVFJPS0UtMztTbzswO0w7Ozs7O047Ozs7OworMUQxOUU7TVVTSUNBTCBTWU1CT0wgT1JOQU1FTlQgU1RST0tFLTQ7U287MDtMOzs7OztOOzs7OzsKKzFEMTlGO01VU0lDQUwgU1lNQk9MIE9STkFNRU5UIFNUUk9LRS01O1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDFBMDtNVVNJQ0FMIFNZTUJPTCBPUk5BTUVOVCBTVFJPS0UtNjtTbzswO0w7Ozs7O047Ozs7OworMUQxQTE7TVVTSUNBTCBTWU1CT0wgT1JOQU1FTlQgU1RST0tFLTc7U287MDtMOzs7OztOOzs7OzsKKzFEMUEyO01VU0lDQUwgU1lNQk9MIE9STkFNRU5UIFNUUk9LRS04O1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDFBMztNVVNJQ0FMIFNZTUJPTCBPUk5BTUVOVCBTVFJPS0UtOTtTbzswO0w7Ozs7O047Ozs7OworMUQxQTQ7TVVTSUNBTCBTWU1CT0wgT1JOQU1FTlQgU1RST0tFLTEwO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDFBNTtNVVNJQ0FMIFNZTUJPTCBPUk5BTUVOVCBTVFJPS0UtMTE7U287MDtMOzs7OztOOzs7OzsKKzFEMUE2O01VU0lDQUwgU1lNQk9MIEhBVVBUU1RJTU1FO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDFBNztNVVNJQ0FMIFNZTUJPTCBORUJFTlNUSU1NRTtTbzswO0w7Ozs7O047Ozs7OworMUQxQTg7TVVTSUNBTCBTWU1CT0wgRU5EIE9GIFNUSU1NRTtTbzswO0w7Ozs7O047Ozs7OworMUQxQTk7TVVTSUNBTCBTWU1CT0wgREVHUkVFIFNMQVNIO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDFBQTtNVVNJQ0FMIFNZTUJPTCBDT01CSU5JTkcgRE9XTiBCT1c7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CisxRDFBQjtNVVNJQ0FMIFNZTUJPTCBDT01CSU5JTkcgVVAgQk9XO01uOzIzMDtOU007Ozs7O047Ozs7OworMUQxQUM7TVVTSUNBTCBTWU1CT0wgQ09NQklOSU5HIEhBUk1PTklDO01uOzIzMDtOU007Ozs7O047Ozs7OworMUQxQUQ7TVVTSUNBTCBTWU1CT0wgQ09NQklOSU5HIFNOQVAgUElaWklDQVRPO01uOzIzMDtOU007Ozs7O047Ozs7OworMUQxQUU7TVVTSUNBTCBTWU1CT0wgUEVEQUwgTUFSSztTbzswO0w7Ozs7O047Ozs7OworMUQxQUY7TVVTSUNBTCBTWU1CT0wgUEVEQUwgVVAgTUFSSztTbzswO0w7Ozs7O047Ozs7OworMUQxQjA7TVVTSUNBTCBTWU1CT0wgSEFMRiBQRURBTCBNQVJLO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDFCMTtNVVNJQ0FMIFNZTUJPTCBHTElTU0FORE8gVVA7U287MDtMOzs7OztOOzs7OzsKKzFEMUIyO01VU0lDQUwgU1lNQk9MIEdMSVNTQU5ETyBET1dOO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDFCMztNVVNJQ0FMIFNZTUJPTCBXSVRIIEZJTkdFUk5BSUxTO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDFCNDtNVVNJQ0FMIFNZTUJPTCBEQU1QO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDFCNTtNVVNJQ0FMIFNZTUJPTCBEQU1QIEFMTDtTbzswO0w7Ozs7O047Ozs7OworMUQxQjY7TVVTSUNBTCBTWU1CT0wgTUFYSU1BO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDFCNztNVVNJQ0FMIFNZTUJPTCBMT05HQTtTbzswO0w7Ozs7O047Ozs7OworMUQxQjg7TVVTSUNBTCBTWU1CT0wgQlJFVklTO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDFCOTtNVVNJQ0FMIFNZTUJPTCBTRU1JQlJFVklTIFdISVRFO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDFCQTtNVVNJQ0FMIFNZTUJPTCBTRU1JQlJFVklTIEJMQUNLO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDFCQjtNVVNJQ0FMIFNZTUJPTCBNSU5JTUE7U287MDtMOzFEMUI5IDFEMTY1Ozs7O047Ozs7OworMUQxQkM7TVVTSUNBTCBTWU1CT0wgTUlOSU1BIEJMQUNLO1NvOzA7TDsxRDFCQSAxRDE2NTs7OztOOzs7OzsKKzFEMUJEO01VU0lDQUwgU1lNQk9MIFNFTUlNSU5JTUEgV0hJVEU7U287MDtMOzFEMUJCIDFEMTZFOzs7O047Ozs7OworMUQxQkU7TVVTSUNBTCBTWU1CT0wgU0VNSU1JTklNQSBCTEFDSztTbzswO0w7MUQxQkMgMUQxNkU7Ozs7Tjs7Ozs7CisxRDFCRjtNVVNJQ0FMIFNZTUJPTCBGVVNBIFdISVRFO1NvOzA7TDsxRDFCQiAxRDE2Rjs7OztOOzs7OzsKKzFEMUMwO01VU0lDQUwgU1lNQk9MIEZVU0EgQkxBQ0s7U287MDtMOzFEMUJDIDFEMTZGOzs7O047Ozs7OworMUQxQzE7TVVTSUNBTCBTWU1CT0wgTE9OR0EgUEVSRkVDVEEgUkVTVDtTbzswO0w7Ozs7O047Ozs7OworMUQxQzI7TVVTSUNBTCBTWU1CT0wgTE9OR0EgSU1QRVJGRUNUQSBSRVNUO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDFDMztNVVNJQ0FMIFNZTUJPTCBCUkVWSVMgUkVTVDtTbzswO0w7Ozs7O047Ozs7OworMUQxQzQ7TVVTSUNBTCBTWU1CT0wgU0VNSUJSRVZJUyBSRVNUO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDFDNTtNVVNJQ0FMIFNZTUJPTCBNSU5JTUEgUkVTVDtTbzswO0w7Ozs7O047Ozs7OworMUQxQzY7TVVTSUNBTCBTWU1CT0wgU0VNSU1JTklNQSBSRVNUO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDFDNztNVVNJQ0FMIFNZTUJPTCBURU1QVVMgUEVSRkVDVFVNIENVTSBQUk9MQVRJT05FIFBFUkZFQ1RBO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDFDODtNVVNJQ0FMIFNZTUJPTCBURU1QVVMgUEVSRkVDVFVNIENVTSBQUk9MQVRJT05FIElNUEVSRkVDVEE7U287MDtMOzs7OztOOzs7OzsKKzFEMUM5O01VU0lDQUwgU1lNQk9MIFRFTVBVUyBQRVJGRUNUVU0gQ1VNIFBST0xBVElPTkUgUEVSRkVDVEEgRElNSU5VVElPTi0xO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDFDQTtNVVNJQ0FMIFNZTUJPTCBURU1QVVMgSU1QRVJGRUNUVU0gQ1VNIFBST0xBVElPTkUgUEVSRkVDVEE7U287MDtMOzs7OztOOzs7OzsKKzFEMUNCO01VU0lDQUwgU1lNQk9MIFRFTVBVUyBJTVBFUkZFQ1RVTSBDVU0gUFJPTEFUSU9ORSBJTVBFUkZFQ1RBO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDFDQztNVVNJQ0FMIFNZTUJPTCBURU1QVVMgSU1QRVJGRUNUVU0gQ1VNIFBST0xBVElPTkUgSU1QRVJGRUNUQSBESU1JTlVUSU9OLTE7U287MDtMOzs7OztOOzs7OzsKKzFEMUNEO01VU0lDQUwgU1lNQk9MIFRFTVBVUyBJTVBFUkZFQ1RVTSBDVU0gUFJPTEFUSU9ORSBJTVBFUkZFQ1RBIERJTUlOVVRJT04tMjtTbzswO0w7Ozs7O047Ozs7OworMUQxQ0U7TVVTSUNBTCBTWU1CT0wgVEVNUFVTIElNUEVSRkVDVFVNIENVTSBQUk9MQVRJT05FIElNUEVSRkVDVEEgRElNSU5VVElPTi0zO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDFDRjtNVVNJQ0FMIFNZTUJPTCBDUk9JWDtTbzswO0w7Ozs7O047Ozs7OworMUQxRDA7TVVTSUNBTCBTWU1CT0wgR1JFR09SSUFOIEMgQ0xFRjtTbzswO0w7Ozs7O047Ozs7OworMUQxRDE7TVVTSUNBTCBTWU1CT0wgR1JFR09SSUFOIEYgQ0xFRjtTbzswO0w7Ozs7O047Ozs7OworMUQxRDI7TVVTSUNBTCBTWU1CT0wgU1FVQVJFIEI7U287MDtMOzs7OztOOzs7OzsKKzFEMUQzO01VU0lDQUwgU1lNQk9MIFZJUkdBO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDFENDtNVVNJQ0FMIFNZTUJPTCBQT0RBVFVTO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDFENTtNVVNJQ0FMIFNZTUJPTCBDTElWSVM7U287MDtMOzs7OztOOzs7OzsKKzFEMUQ2O01VU0lDQUwgU1lNQk9MIFNDQU5ESUNVUztTbzswO0w7Ozs7O047Ozs7OworMUQxRDc7TVVTSUNBTCBTWU1CT0wgQ0xJTUFDVVM7U287MDtMOzs7OztOOzs7OzsKKzFEMUQ4O01VU0lDQUwgU1lNQk9MIFRPUkNVTFVTO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxRDFEOTtNVVNJQ0FMIFNZTUJPTCBQT1JSRUNUVVM7U287MDtMOzs7OztOOzs7OzsKKzFEMURBO01VU0lDQUwgU1lNQk9MIFBPUlJFQ1RVUyBGTEVYVVM7U287MDtMOzs7OztOOzs7OzsKKzFEMURCO01VU0lDQUwgU1lNQk9MIFNDQU5ESUNVUyBGTEVYVVM7U287MDtMOzs7OztOOzs7OzsKKzFEMURDO01VU0lDQUwgU1lNQk9MIFRPUkNVTFVTIFJFU1VQSU5VUztTbzswO0w7Ozs7O047Ozs7OworMUQxREQ7TVVTSUNBTCBTWU1CT0wgUEVTIFNVQlBVTkNUSVM7U287MDtMOzs7OztOOzs7OzsKKzFENDAwO01BVEhFTUFUSUNBTCBCT0xEIENBUElUQUwgQTtMdTswO0w7PGZvbnQ+IDAwNDE7Ozs7Tjs7Ozs7CisxRDQwMTtNQVRIRU1BVElDQUwgQk9MRCBDQVBJVEFMIEI7THU7MDtMOzxmb250PiAwMDQyOzs7O047Ozs7OworMUQ0MDI7TUFUSEVNQVRJQ0FMIEJPTEQgQ0FQSVRBTCBDO0x1OzA7TDs8Zm9udD4gMDA0Mzs7OztOOzs7OzsKKzFENDAzO01BVEhFTUFUSUNBTCBCT0xEIENBUElUQUwgRDtMdTswO0w7PGZvbnQ+IDAwNDQ7Ozs7Tjs7Ozs7CisxRDQwNDtNQVRIRU1BVElDQUwgQk9MRCBDQVBJVEFMIEU7THU7MDtMOzxmb250PiAwMDQ1Ozs7O047Ozs7OworMUQ0MDU7TUFUSEVNQVRJQ0FMIEJPTEQgQ0FQSVRBTCBGO0x1OzA7TDs8Zm9udD4gMDA0Njs7OztOOzs7OzsKKzFENDA2O01BVEhFTUFUSUNBTCBCT0xEIENBUElUQUwgRztMdTswO0w7PGZvbnQ+IDAwNDc7Ozs7Tjs7Ozs7CisxRDQwNztNQVRIRU1BVElDQUwgQk9MRCBDQVBJVEFMIEg7THU7MDtMOzxmb250PiAwMDQ4Ozs7O047Ozs7OworMUQ0MDg7TUFUSEVNQVRJQ0FMIEJPTEQgQ0FQSVRBTCBJO0x1OzA7TDs8Zm9udD4gMDA0OTs7OztOOzs7OzsKKzFENDA5O01BVEhFTUFUSUNBTCBCT0xEIENBUElUQUwgSjtMdTswO0w7PGZvbnQ+IDAwNEE7Ozs7Tjs7Ozs7CisxRDQwQTtNQVRIRU1BVElDQUwgQk9MRCBDQVBJVEFMIEs7THU7MDtMOzxmb250PiAwMDRCOzs7O047Ozs7OworMUQ0MEI7TUFUSEVNQVRJQ0FMIEJPTEQgQ0FQSVRBTCBMO0x1OzA7TDs8Zm9udD4gMDA0Qzs7OztOOzs7OzsKKzFENDBDO01BVEhFTUFUSUNBTCBCT0xEIENBUElUQUwgTTtMdTswO0w7PGZvbnQ+IDAwNEQ7Ozs7Tjs7Ozs7CisxRDQwRDtNQVRIRU1BVElDQUwgQk9MRCBDQVBJVEFMIE47THU7MDtMOzxmb250PiAwMDRFOzs7O047Ozs7OworMUQ0MEU7TUFUSEVNQVRJQ0FMIEJPTEQgQ0FQSVRBTCBPO0x1OzA7TDs8Zm9udD4gMDA0Rjs7OztOOzs7OzsKKzFENDBGO01BVEhFTUFUSUNBTCBCT0xEIENBUElUQUwgUDtMdTswO0w7PGZvbnQ+IDAwNTA7Ozs7Tjs7Ozs7CisxRDQxMDtNQVRIRU1BVElDQUwgQk9MRCBDQVBJVEFMIFE7THU7MDtMOzxmb250PiAwMDUxOzs7O047Ozs7OworMUQ0MTE7TUFUSEVNQVRJQ0FMIEJPTEQgQ0FQSVRBTCBSO0x1OzA7TDs8Zm9udD4gMDA1Mjs7OztOOzs7OzsKKzFENDEyO01BVEhFTUFUSUNBTCBCT0xEIENBUElUQUwgUztMdTswO0w7PGZvbnQ+IDAwNTM7Ozs7Tjs7Ozs7CisxRDQxMztNQVRIRU1BVElDQUwgQk9MRCBDQVBJVEFMIFQ7THU7MDtMOzxmb250PiAwMDU0Ozs7O047Ozs7OworMUQ0MTQ7TUFUSEVNQVRJQ0FMIEJPTEQgQ0FQSVRBTCBVO0x1OzA7TDs8Zm9udD4gMDA1NTs7OztOOzs7OzsKKzFENDE1O01BVEhFTUFUSUNBTCBCT0xEIENBUElUQUwgVjtMdTswO0w7PGZvbnQ+IDAwNTY7Ozs7Tjs7Ozs7CisxRDQxNjtNQVRIRU1BVElDQUwgQk9MRCBDQVBJVEFMIFc7THU7MDtMOzxmb250PiAwMDU3Ozs7O047Ozs7OworMUQ0MTc7TUFUSEVNQVRJQ0FMIEJPTEQgQ0FQSVRBTCBYO0x1OzA7TDs8Zm9udD4gMDA1ODs7OztOOzs7OzsKKzFENDE4O01BVEhFTUFUSUNBTCBCT0xEIENBUElUQUwgWTtMdTswO0w7PGZvbnQ+IDAwNTk7Ozs7Tjs7Ozs7CisxRDQxOTtNQVRIRU1BVElDQUwgQk9MRCBDQVBJVEFMIFo7THU7MDtMOzxmb250PiAwMDVBOzs7O047Ozs7OworMUQ0MUE7TUFUSEVNQVRJQ0FMIEJPTEQgU01BTEwgQTtMbDswO0w7PGZvbnQ+IDAwNjE7Ozs7Tjs7Ozs7CisxRDQxQjtNQVRIRU1BVElDQUwgQk9MRCBTTUFMTCBCO0xsOzA7TDs8Zm9udD4gMDA2Mjs7OztOOzs7OzsKKzFENDFDO01BVEhFTUFUSUNBTCBCT0xEIFNNQUxMIEM7TGw7MDtMOzxmb250PiAwMDYzOzs7O047Ozs7OworMUQ0MUQ7TUFUSEVNQVRJQ0FMIEJPTEQgU01BTEwgRDtMbDswO0w7PGZvbnQ+IDAwNjQ7Ozs7Tjs7Ozs7CisxRDQxRTtNQVRIRU1BVElDQUwgQk9MRCBTTUFMTCBFO0xsOzA7TDs8Zm9udD4gMDA2NTs7OztOOzs7OzsKKzFENDFGO01BVEhFTUFUSUNBTCBCT0xEIFNNQUxMIEY7TGw7MDtMOzxmb250PiAwMDY2Ozs7O047Ozs7OworMUQ0MjA7TUFUSEVNQVRJQ0FMIEJPTEQgU01BTEwgRztMbDswO0w7PGZvbnQ+IDAwNjc7Ozs7Tjs7Ozs7CisxRDQyMTtNQVRIRU1BVElDQUwgQk9MRCBTTUFMTCBIO0xsOzA7TDs8Zm9udD4gMDA2ODs7OztOOzs7OzsKKzFENDIyO01BVEhFTUFUSUNBTCBCT0xEIFNNQUxMIEk7TGw7MDtMOzxmb250PiAwMDY5Ozs7O047Ozs7OworMUQ0MjM7TUFUSEVNQVRJQ0FMIEJPTEQgU01BTEwgSjtMbDswO0w7PGZvbnQ+IDAwNkE7Ozs7Tjs7Ozs7CisxRDQyNDtNQVRIRU1BVElDQUwgQk9MRCBTTUFMTCBLO0xsOzA7TDs8Zm9udD4gMDA2Qjs7OztOOzs7OzsKKzFENDI1O01BVEhFTUFUSUNBTCBCT0xEIFNNQUxMIEw7TGw7MDtMOzxmb250PiAwMDZDOzs7O047Ozs7OworMUQ0MjY7TUFUSEVNQVRJQ0FMIEJPTEQgU01BTEwgTTtMbDswO0w7PGZvbnQ+IDAwNkQ7Ozs7Tjs7Ozs7CisxRDQyNztNQVRIRU1BVElDQUwgQk9MRCBTTUFMTCBOO0xsOzA7TDs8Zm9udD4gMDA2RTs7OztOOzs7OzsKKzFENDI4O01BVEhFTUFUSUNBTCBCT0xEIFNNQUxMIE87TGw7MDtMOzxmb250PiAwMDZGOzs7O047Ozs7OworMUQ0Mjk7TUFUSEVNQVRJQ0FMIEJPTEQgU01BTEwgUDtMbDswO0w7PGZvbnQ+IDAwNzA7Ozs7Tjs7Ozs7CisxRDQyQTtNQVRIRU1BVElDQUwgQk9MRCBTTUFMTCBRO0xsOzA7TDs8Zm9udD4gMDA3MTs7OztOOzs7OzsKKzFENDJCO01BVEhFTUFUSUNBTCBCT0xEIFNNQUxMIFI7TGw7MDtMOzxmb250PiAwMDcyOzs7O047Ozs7OworMUQ0MkM7TUFUSEVNQVRJQ0FMIEJPTEQgU01BTEwgUztMbDswO0w7PGZvbnQ+IDAwNzM7Ozs7Tjs7Ozs7CisxRDQyRDtNQVRIRU1BVElDQUwgQk9MRCBTTUFMTCBUO0xsOzA7TDs8Zm9udD4gMDA3NDs7OztOOzs7OzsKKzFENDJFO01BVEhFTUFUSUNBTCBCT0xEIFNNQUxMIFU7TGw7MDtMOzxmb250PiAwMDc1Ozs7O047Ozs7OworMUQ0MkY7TUFUSEVNQVRJQ0FMIEJPTEQgU01BTEwgVjtMbDswO0w7PGZvbnQ+IDAwNzY7Ozs7Tjs7Ozs7CisxRDQzMDtNQVRIRU1BVElDQUwgQk9MRCBTTUFMTCBXO0xsOzA7TDs8Zm9udD4gMDA3Nzs7OztOOzs7OzsKKzFENDMxO01BVEhFTUFUSUNBTCBCT0xEIFNNQUxMIFg7TGw7MDtMOzxmb250PiAwMDc4Ozs7O047Ozs7OworMUQ0MzI7TUFUSEVNQVRJQ0FMIEJPTEQgU01BTEwgWTtMbDswO0w7PGZvbnQ+IDAwNzk7Ozs7Tjs7Ozs7CisxRDQzMztNQVRIRU1BVElDQUwgQk9MRCBTTUFMTCBaO0xsOzA7TDs8Zm9udD4gMDA3QTs7OztOOzs7OzsKKzFENDM0O01BVEhFTUFUSUNBTCBJVEFMSUMgQ0FQSVRBTCBBO0x1OzA7TDs8Zm9udD4gMDA0MTs7OztOOzs7OzsKKzFENDM1O01BVEhFTUFUSUNBTCBJVEFMSUMgQ0FQSVRBTCBCO0x1OzA7TDs8Zm9udD4gMDA0Mjs7OztOOzs7OzsKKzFENDM2O01BVEhFTUFUSUNBTCBJVEFMSUMgQ0FQSVRBTCBDO0x1OzA7TDs8Zm9udD4gMDA0Mzs7OztOOzs7OzsKKzFENDM3O01BVEhFTUFUSUNBTCBJVEFMSUMgQ0FQSVRBTCBEO0x1OzA7TDs8Zm9udD4gMDA0NDs7OztOOzs7OzsKKzFENDM4O01BVEhFTUFUSUNBTCBJVEFMSUMgQ0FQSVRBTCBFO0x1OzA7TDs8Zm9udD4gMDA0NTs7OztOOzs7OzsKKzFENDM5O01BVEhFTUFUSUNBTCBJVEFMSUMgQ0FQSVRBTCBGO0x1OzA7TDs8Zm9udD4gMDA0Njs7OztOOzs7OzsKKzFENDNBO01BVEhFTUFUSUNBTCBJVEFMSUMgQ0FQSVRBTCBHO0x1OzA7TDs8Zm9udD4gMDA0Nzs7OztOOzs7OzsKKzFENDNCO01BVEhFTUFUSUNBTCBJVEFMSUMgQ0FQSVRBTCBIO0x1OzA7TDs8Zm9udD4gMDA0ODs7OztOOzs7OzsKKzFENDNDO01BVEhFTUFUSUNBTCBJVEFMSUMgQ0FQSVRBTCBJO0x1OzA7TDs8Zm9udD4gMDA0OTs7OztOOzs7OzsKKzFENDNEO01BVEhFTUFUSUNBTCBJVEFMSUMgQ0FQSVRBTCBKO0x1OzA7TDs8Zm9udD4gMDA0QTs7OztOOzs7OzsKKzFENDNFO01BVEhFTUFUSUNBTCBJVEFMSUMgQ0FQSVRBTCBLO0x1OzA7TDs8Zm9udD4gMDA0Qjs7OztOOzs7OzsKKzFENDNGO01BVEhFTUFUSUNBTCBJVEFMSUMgQ0FQSVRBTCBMO0x1OzA7TDs8Zm9udD4gMDA0Qzs7OztOOzs7OzsKKzFENDQwO01BVEhFTUFUSUNBTCBJVEFMSUMgQ0FQSVRBTCBNO0x1OzA7TDs8Zm9udD4gMDA0RDs7OztOOzs7OzsKKzFENDQxO01BVEhFTUFUSUNBTCBJVEFMSUMgQ0FQSVRBTCBOO0x1OzA7TDs8Zm9udD4gMDA0RTs7OztOOzs7OzsKKzFENDQyO01BVEhFTUFUSUNBTCBJVEFMSUMgQ0FQSVRBTCBPO0x1OzA7TDs8Zm9udD4gMDA0Rjs7OztOOzs7OzsKKzFENDQzO01BVEhFTUFUSUNBTCBJVEFMSUMgQ0FQSVRBTCBQO0x1OzA7TDs8Zm9udD4gMDA1MDs7OztOOzs7OzsKKzFENDQ0O01BVEhFTUFUSUNBTCBJVEFMSUMgQ0FQSVRBTCBRO0x1OzA7TDs8Zm9udD4gMDA1MTs7OztOOzs7OzsKKzFENDQ1O01BVEhFTUFUSUNBTCBJVEFMSUMgQ0FQSVRBTCBSO0x1OzA7TDs8Zm9udD4gMDA1Mjs7OztOOzs7OzsKKzFENDQ2O01BVEhFTUFUSUNBTCBJVEFMSUMgQ0FQSVRBTCBTO0x1OzA7TDs8Zm9udD4gMDA1Mzs7OztOOzs7OzsKKzFENDQ3O01BVEhFTUFUSUNBTCBJVEFMSUMgQ0FQSVRBTCBUO0x1OzA7TDs8Zm9udD4gMDA1NDs7OztOOzs7OzsKKzFENDQ4O01BVEhFTUFUSUNBTCBJVEFMSUMgQ0FQSVRBTCBVO0x1OzA7TDs8Zm9udD4gMDA1NTs7OztOOzs7OzsKKzFENDQ5O01BVEhFTUFUSUNBTCBJVEFMSUMgQ0FQSVRBTCBWO0x1OzA7TDs8Zm9udD4gMDA1Njs7OztOOzs7OzsKKzFENDRBO01BVEhFTUFUSUNBTCBJVEFMSUMgQ0FQSVRBTCBXO0x1OzA7TDs8Zm9udD4gMDA1Nzs7OztOOzs7OzsKKzFENDRCO01BVEhFTUFUSUNBTCBJVEFMSUMgQ0FQSVRBTCBYO0x1OzA7TDs8Zm9udD4gMDA1ODs7OztOOzs7OzsKKzFENDRDO01BVEhFTUFUSUNBTCBJVEFMSUMgQ0FQSVRBTCBZO0x1OzA7TDs8Zm9udD4gMDA1OTs7OztOOzs7OzsKKzFENDREO01BVEhFTUFUSUNBTCBJVEFMSUMgQ0FQSVRBTCBaO0x1OzA7TDs8Zm9udD4gMDA1QTs7OztOOzs7OzsKKzFENDRFO01BVEhFTUFUSUNBTCBJVEFMSUMgU01BTEwgQTtMbDswO0w7PGZvbnQ+IDAwNjE7Ozs7Tjs7Ozs7CisxRDQ0RjtNQVRIRU1BVElDQUwgSVRBTElDIFNNQUxMIEI7TGw7MDtMOzxmb250PiAwMDYyOzs7O047Ozs7OworMUQ0NTA7TUFUSEVNQVRJQ0FMIElUQUxJQyBTTUFMTCBDO0xsOzA7TDs8Zm9udD4gMDA2Mzs7OztOOzs7OzsKKzFENDUxO01BVEhFTUFUSUNBTCBJVEFMSUMgU01BTEwgRDtMbDswO0w7PGZvbnQ+IDAwNjQ7Ozs7Tjs7Ozs7CisxRDQ1MjtNQVRIRU1BVElDQUwgSVRBTElDIFNNQUxMIEU7TGw7MDtMOzxmb250PiAwMDY1Ozs7O047Ozs7OworMUQ0NTM7TUFUSEVNQVRJQ0FMIElUQUxJQyBTTUFMTCBGO0xsOzA7TDs8Zm9udD4gMDA2Njs7OztOOzs7OzsKKzFENDU0O01BVEhFTUFUSUNBTCBJVEFMSUMgU01BTEwgRztMbDswO0w7PGZvbnQ+IDAwNjc7Ozs7Tjs7Ozs7CisxRDQ1NjtNQVRIRU1BVElDQUwgSVRBTElDIFNNQUxMIEk7TGw7MDtMOzxmb250PiAwMDY5Ozs7O047Ozs7OworMUQ0NTc7TUFUSEVNQVRJQ0FMIElUQUxJQyBTTUFMTCBKO0xsOzA7TDs8Zm9udD4gMDA2QTs7OztOOzs7OzsKKzFENDU4O01BVEhFTUFUSUNBTCBJVEFMSUMgU01BTEwgSztMbDswO0w7PGZvbnQ+IDAwNkI7Ozs7Tjs7Ozs7CisxRDQ1OTtNQVRIRU1BVElDQUwgSVRBTElDIFNNQUxMIEw7TGw7MDtMOzxmb250PiAwMDZDOzs7O047Ozs7OworMUQ0NUE7TUFUSEVNQVRJQ0FMIElUQUxJQyBTTUFMTCBNO0xsOzA7TDs8Zm9udD4gMDA2RDs7OztOOzs7OzsKKzFENDVCO01BVEhFTUFUSUNBTCBJVEFMSUMgU01BTEwgTjtMbDswO0w7PGZvbnQ+IDAwNkU7Ozs7Tjs7Ozs7CisxRDQ1QztNQVRIRU1BVElDQUwgSVRBTElDIFNNQUxMIE87TGw7MDtMOzxmb250PiAwMDZGOzs7O047Ozs7OworMUQ0NUQ7TUFUSEVNQVRJQ0FMIElUQUxJQyBTTUFMTCBQO0xsOzA7TDs8Zm9udD4gMDA3MDs7OztOOzs7OzsKKzFENDVFO01BVEhFTUFUSUNBTCBJVEFMSUMgU01BTEwgUTtMbDswO0w7PGZvbnQ+IDAwNzE7Ozs7Tjs7Ozs7CisxRDQ1RjtNQVRIRU1BVElDQUwgSVRBTElDIFNNQUxMIFI7TGw7MDtMOzxmb250PiAwMDcyOzs7O047Ozs7OworMUQ0NjA7TUFUSEVNQVRJQ0FMIElUQUxJQyBTTUFMTCBTO0xsOzA7TDs8Zm9udD4gMDA3Mzs7OztOOzs7OzsKKzFENDYxO01BVEhFTUFUSUNBTCBJVEFMSUMgU01BTEwgVDtMbDswO0w7PGZvbnQ+IDAwNzQ7Ozs7Tjs7Ozs7CisxRDQ2MjtNQVRIRU1BVElDQUwgSVRBTElDIFNNQUxMIFU7TGw7MDtMOzxmb250PiAwMDc1Ozs7O047Ozs7OworMUQ0NjM7TUFUSEVNQVRJQ0FMIElUQUxJQyBTTUFMTCBWO0xsOzA7TDs8Zm9udD4gMDA3Njs7OztOOzs7OzsKKzFENDY0O01BVEhFTUFUSUNBTCBJVEFMSUMgU01BTEwgVztMbDswO0w7PGZvbnQ+IDAwNzc7Ozs7Tjs7Ozs7CisxRDQ2NTtNQVRIRU1BVElDQUwgSVRBTElDIFNNQUxMIFg7TGw7MDtMOzxmb250PiAwMDc4Ozs7O047Ozs7OworMUQ0NjY7TUFUSEVNQVRJQ0FMIElUQUxJQyBTTUFMTCBZO0xsOzA7TDs8Zm9udD4gMDA3OTs7OztOOzs7OzsKKzFENDY3O01BVEhFTUFUSUNBTCBJVEFMSUMgU01BTEwgWjtMbDswO0w7PGZvbnQ+IDAwN0E7Ozs7Tjs7Ozs7CisxRDQ2ODtNQVRIRU1BVElDQUwgQk9MRCBJVEFMSUMgQ0FQSVRBTCBBO0x1OzA7TDs8Zm9udD4gMDA0MTs7OztOOzs7OzsKKzFENDY5O01BVEhFTUFUSUNBTCBCT0xEIElUQUxJQyBDQVBJVEFMIEI7THU7MDtMOzxmb250PiAwMDQyOzs7O047Ozs7OworMUQ0NkE7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIENBUElUQUwgQztMdTswO0w7PGZvbnQ+IDAwNDM7Ozs7Tjs7Ozs7CisxRDQ2QjtNQVRIRU1BVElDQUwgQk9MRCBJVEFMSUMgQ0FQSVRBTCBEO0x1OzA7TDs8Zm9udD4gMDA0NDs7OztOOzs7OzsKKzFENDZDO01BVEhFTUFUSUNBTCBCT0xEIElUQUxJQyBDQVBJVEFMIEU7THU7MDtMOzxmb250PiAwMDQ1Ozs7O047Ozs7OworMUQ0NkQ7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIENBUElUQUwgRjtMdTswO0w7PGZvbnQ+IDAwNDY7Ozs7Tjs7Ozs7CisxRDQ2RTtNQVRIRU1BVElDQUwgQk9MRCBJVEFMSUMgQ0FQSVRBTCBHO0x1OzA7TDs8Zm9udD4gMDA0Nzs7OztOOzs7OzsKKzFENDZGO01BVEhFTUFUSUNBTCBCT0xEIElUQUxJQyBDQVBJVEFMIEg7THU7MDtMOzxmb250PiAwMDQ4Ozs7O047Ozs7OworMUQ0NzA7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIENBUElUQUwgSTtMdTswO0w7PGZvbnQ+IDAwNDk7Ozs7Tjs7Ozs7CisxRDQ3MTtNQVRIRU1BVElDQUwgQk9MRCBJVEFMSUMgQ0FQSVRBTCBKO0x1OzA7TDs8Zm9udD4gMDA0QTs7OztOOzs7OzsKKzFENDcyO01BVEhFTUFUSUNBTCBCT0xEIElUQUxJQyBDQVBJVEFMIEs7THU7MDtMOzxmb250PiAwMDRCOzs7O047Ozs7OworMUQ0NzM7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIENBUElUQUwgTDtMdTswO0w7PGZvbnQ+IDAwNEM7Ozs7Tjs7Ozs7CisxRDQ3NDtNQVRIRU1BVElDQUwgQk9MRCBJVEFMSUMgQ0FQSVRBTCBNO0x1OzA7TDs8Zm9udD4gMDA0RDs7OztOOzs7OzsKKzFENDc1O01BVEhFTUFUSUNBTCBCT0xEIElUQUxJQyBDQVBJVEFMIE47THU7MDtMOzxmb250PiAwMDRFOzs7O047Ozs7OworMUQ0NzY7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIENBUElUQUwgTztMdTswO0w7PGZvbnQ+IDAwNEY7Ozs7Tjs7Ozs7CisxRDQ3NztNQVRIRU1BVElDQUwgQk9MRCBJVEFMSUMgQ0FQSVRBTCBQO0x1OzA7TDs8Zm9udD4gMDA1MDs7OztOOzs7OzsKKzFENDc4O01BVEhFTUFUSUNBTCBCT0xEIElUQUxJQyBDQVBJVEFMIFE7THU7MDtMOzxmb250PiAwMDUxOzs7O047Ozs7OworMUQ0Nzk7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIENBUElUQUwgUjtMdTswO0w7PGZvbnQ+IDAwNTI7Ozs7Tjs7Ozs7CisxRDQ3QTtNQVRIRU1BVElDQUwgQk9MRCBJVEFMSUMgQ0FQSVRBTCBTO0x1OzA7TDs8Zm9udD4gMDA1Mzs7OztOOzs7OzsKKzFENDdCO01BVEhFTUFUSUNBTCBCT0xEIElUQUxJQyBDQVBJVEFMIFQ7THU7MDtMOzxmb250PiAwMDU0Ozs7O047Ozs7OworMUQ0N0M7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIENBUElUQUwgVTtMdTswO0w7PGZvbnQ+IDAwNTU7Ozs7Tjs7Ozs7CisxRDQ3RDtNQVRIRU1BVElDQUwgQk9MRCBJVEFMSUMgQ0FQSVRBTCBWO0x1OzA7TDs8Zm9udD4gMDA1Njs7OztOOzs7OzsKKzFENDdFO01BVEhFTUFUSUNBTCBCT0xEIElUQUxJQyBDQVBJVEFMIFc7THU7MDtMOzxmb250PiAwMDU3Ozs7O047Ozs7OworMUQ0N0Y7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIENBUElUQUwgWDtMdTswO0w7PGZvbnQ+IDAwNTg7Ozs7Tjs7Ozs7CisxRDQ4MDtNQVRIRU1BVElDQUwgQk9MRCBJVEFMSUMgQ0FQSVRBTCBZO0x1OzA7TDs8Zm9udD4gMDA1OTs7OztOOzs7OzsKKzFENDgxO01BVEhFTUFUSUNBTCBCT0xEIElUQUxJQyBDQVBJVEFMIFo7THU7MDtMOzxmb250PiAwMDVBOzs7O047Ozs7OworMUQ0ODI7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIFNNQUxMIEE7TGw7MDtMOzxmb250PiAwMDYxOzs7O047Ozs7OworMUQ0ODM7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIFNNQUxMIEI7TGw7MDtMOzxmb250PiAwMDYyOzs7O047Ozs7OworMUQ0ODQ7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIFNNQUxMIEM7TGw7MDtMOzxmb250PiAwMDYzOzs7O047Ozs7OworMUQ0ODU7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIFNNQUxMIEQ7TGw7MDtMOzxmb250PiAwMDY0Ozs7O047Ozs7OworMUQ0ODY7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIFNNQUxMIEU7TGw7MDtMOzxmb250PiAwMDY1Ozs7O047Ozs7OworMUQ0ODc7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIFNNQUxMIEY7TGw7MDtMOzxmb250PiAwMDY2Ozs7O047Ozs7OworMUQ0ODg7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIFNNQUxMIEc7TGw7MDtMOzxmb250PiAwMDY3Ozs7O047Ozs7OworMUQ0ODk7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIFNNQUxMIEg7TGw7MDtMOzxmb250PiAwMDY4Ozs7O047Ozs7OworMUQ0OEE7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIFNNQUxMIEk7TGw7MDtMOzxmb250PiAwMDY5Ozs7O047Ozs7OworMUQ0OEI7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIFNNQUxMIEo7TGw7MDtMOzxmb250PiAwMDZBOzs7O047Ozs7OworMUQ0OEM7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIFNNQUxMIEs7TGw7MDtMOzxmb250PiAwMDZCOzs7O047Ozs7OworMUQ0OEQ7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIFNNQUxMIEw7TGw7MDtMOzxmb250PiAwMDZDOzs7O047Ozs7OworMUQ0OEU7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIFNNQUxMIE07TGw7MDtMOzxmb250PiAwMDZEOzs7O047Ozs7OworMUQ0OEY7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIFNNQUxMIE47TGw7MDtMOzxmb250PiAwMDZFOzs7O047Ozs7OworMUQ0OTA7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIFNNQUxMIE87TGw7MDtMOzxmb250PiAwMDZGOzs7O047Ozs7OworMUQ0OTE7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIFNNQUxMIFA7TGw7MDtMOzxmb250PiAwMDcwOzs7O047Ozs7OworMUQ0OTI7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIFNNQUxMIFE7TGw7MDtMOzxmb250PiAwMDcxOzs7O047Ozs7OworMUQ0OTM7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIFNNQUxMIFI7TGw7MDtMOzxmb250PiAwMDcyOzs7O047Ozs7OworMUQ0OTQ7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIFNNQUxMIFM7TGw7MDtMOzxmb250PiAwMDczOzs7O047Ozs7OworMUQ0OTU7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIFNNQUxMIFQ7TGw7MDtMOzxmb250PiAwMDc0Ozs7O047Ozs7OworMUQ0OTY7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIFNNQUxMIFU7TGw7MDtMOzxmb250PiAwMDc1Ozs7O047Ozs7OworMUQ0OTc7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIFNNQUxMIFY7TGw7MDtMOzxmb250PiAwMDc2Ozs7O047Ozs7OworMUQ0OTg7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIFNNQUxMIFc7TGw7MDtMOzxmb250PiAwMDc3Ozs7O047Ozs7OworMUQ0OTk7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIFNNQUxMIFg7TGw7MDtMOzxmb250PiAwMDc4Ozs7O047Ozs7OworMUQ0OUE7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIFNNQUxMIFk7TGw7MDtMOzxmb250PiAwMDc5Ozs7O047Ozs7OworMUQ0OUI7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIFNNQUxMIFo7TGw7MDtMOzxmb250PiAwMDdBOzs7O047Ozs7OworMUQ0OUM7TUFUSEVNQVRJQ0FMIFNDUklQVCBDQVBJVEFMIEE7THU7MDtMOzxmb250PiAwMDQxOzs7O047Ozs7OworMUQ0OUU7TUFUSEVNQVRJQ0FMIFNDUklQVCBDQVBJVEFMIEM7THU7MDtMOzxmb250PiAwMDQzOzs7O047Ozs7OworMUQ0OUY7TUFUSEVNQVRJQ0FMIFNDUklQVCBDQVBJVEFMIEQ7THU7MDtMOzxmb250PiAwMDQ0Ozs7O047Ozs7OworMUQ0QTI7TUFUSEVNQVRJQ0FMIFNDUklQVCBDQVBJVEFMIEc7THU7MDtMOzxmb250PiAwMDQ3Ozs7O047Ozs7OworMUQ0QTU7TUFUSEVNQVRJQ0FMIFNDUklQVCBDQVBJVEFMIEo7THU7MDtMOzxmb250PiAwMDRBOzs7O047Ozs7OworMUQ0QTY7TUFUSEVNQVRJQ0FMIFNDUklQVCBDQVBJVEFMIEs7THU7MDtMOzxmb250PiAwMDRCOzs7O047Ozs7OworMUQ0QTk7TUFUSEVNQVRJQ0FMIFNDUklQVCBDQVBJVEFMIE47THU7MDtMOzxmb250PiAwMDRFOzs7O047Ozs7OworMUQ0QUE7TUFUSEVNQVRJQ0FMIFNDUklQVCBDQVBJVEFMIE87THU7MDtMOzxmb250PiAwMDRGOzs7O047Ozs7OworMUQ0QUI7TUFUSEVNQVRJQ0FMIFNDUklQVCBDQVBJVEFMIFA7THU7MDtMOzxmb250PiAwMDUwOzs7O047Ozs7OworMUQ0QUM7TUFUSEVNQVRJQ0FMIFNDUklQVCBDQVBJVEFMIFE7THU7MDtMOzxmb250PiAwMDUxOzs7O047Ozs7OworMUQ0QUU7TUFUSEVNQVRJQ0FMIFNDUklQVCBDQVBJVEFMIFM7THU7MDtMOzxmb250PiAwMDUzOzs7O047Ozs7OworMUQ0QUY7TUFUSEVNQVRJQ0FMIFNDUklQVCBDQVBJVEFMIFQ7THU7MDtMOzxmb250PiAwMDU0Ozs7O047Ozs7OworMUQ0QjA7TUFUSEVNQVRJQ0FMIFNDUklQVCBDQVBJVEFMIFU7THU7MDtMOzxmb250PiAwMDU1Ozs7O047Ozs7OworMUQ0QjE7TUFUSEVNQVRJQ0FMIFNDUklQVCBDQVBJVEFMIFY7THU7MDtMOzxmb250PiAwMDU2Ozs7O047Ozs7OworMUQ0QjI7TUFUSEVNQVRJQ0FMIFNDUklQVCBDQVBJVEFMIFc7THU7MDtMOzxmb250PiAwMDU3Ozs7O047Ozs7OworMUQ0QjM7TUFUSEVNQVRJQ0FMIFNDUklQVCBDQVBJVEFMIFg7THU7MDtMOzxmb250PiAwMDU4Ozs7O047Ozs7OworMUQ0QjQ7TUFUSEVNQVRJQ0FMIFNDUklQVCBDQVBJVEFMIFk7THU7MDtMOzxmb250PiAwMDU5Ozs7O047Ozs7OworMUQ0QjU7TUFUSEVNQVRJQ0FMIFNDUklQVCBDQVBJVEFMIFo7THU7MDtMOzxmb250PiAwMDVBOzs7O047Ozs7OworMUQ0QjY7TUFUSEVNQVRJQ0FMIFNDUklQVCBTTUFMTCBBO0xsOzA7TDs8Zm9udD4gMDA2MTs7OztOOzs7OzsKKzFENEI3O01BVEhFTUFUSUNBTCBTQ1JJUFQgU01BTEwgQjtMbDswO0w7PGZvbnQ+IDAwNjI7Ozs7Tjs7Ozs7CisxRDRCODtNQVRIRU1BVElDQUwgU0NSSVBUIFNNQUxMIEM7TGw7MDtMOzxmb250PiAwMDYzOzs7O047Ozs7OworMUQ0Qjk7TUFUSEVNQVRJQ0FMIFNDUklQVCBTTUFMTCBEO0xsOzA7TDs8Zm9udD4gMDA2NDs7OztOOzs7OzsKKzFENEJCO01BVEhFTUFUSUNBTCBTQ1JJUFQgU01BTEwgRjtMbDswO0w7PGZvbnQ+IDAwNjY7Ozs7Tjs7Ozs7CisxRDRCRDtNQVRIRU1BVElDQUwgU0NSSVBUIFNNQUxMIEg7TGw7MDtMOzxmb250PiAwMDY4Ozs7O047Ozs7OworMUQ0QkU7TUFUSEVNQVRJQ0FMIFNDUklQVCBTTUFMTCBJO0xsOzA7TDs8Zm9udD4gMDA2OTs7OztOOzs7OzsKKzFENEJGO01BVEhFTUFUSUNBTCBTQ1JJUFQgU01BTEwgSjtMbDswO0w7PGZvbnQ+IDAwNkE7Ozs7Tjs7Ozs7CisxRDRDMDtNQVRIRU1BVElDQUwgU0NSSVBUIFNNQUxMIEs7TGw7MDtMOzxmb250PiAwMDZCOzs7O047Ozs7OworMUQ0QzI7TUFUSEVNQVRJQ0FMIFNDUklQVCBTTUFMTCBNO0xsOzA7TDs8Zm9udD4gMDA2RDs7OztOOzs7OzsKKzFENEMzO01BVEhFTUFUSUNBTCBTQ1JJUFQgU01BTEwgTjtMbDswO0w7PGZvbnQ+IDAwNkU7Ozs7Tjs7Ozs7CisxRDRDNTtNQVRIRU1BVElDQUwgU0NSSVBUIFNNQUxMIFA7TGw7MDtMOzxmb250PiAwMDcwOzs7O047Ozs7OworMUQ0QzY7TUFUSEVNQVRJQ0FMIFNDUklQVCBTTUFMTCBRO0xsOzA7TDs8Zm9udD4gMDA3MTs7OztOOzs7OzsKKzFENEM3O01BVEhFTUFUSUNBTCBTQ1JJUFQgU01BTEwgUjtMbDswO0w7PGZvbnQ+IDAwNzI7Ozs7Tjs7Ozs7CisxRDRDODtNQVRIRU1BVElDQUwgU0NSSVBUIFNNQUxMIFM7TGw7MDtMOzxmb250PiAwMDczOzs7O047Ozs7OworMUQ0Qzk7TUFUSEVNQVRJQ0FMIFNDUklQVCBTTUFMTCBUO0xsOzA7TDs8Zm9udD4gMDA3NDs7OztOOzs7OzsKKzFENENBO01BVEhFTUFUSUNBTCBTQ1JJUFQgU01BTEwgVTtMbDswO0w7PGZvbnQ+IDAwNzU7Ozs7Tjs7Ozs7CisxRDRDQjtNQVRIRU1BVElDQUwgU0NSSVBUIFNNQUxMIFY7TGw7MDtMOzxmb250PiAwMDc2Ozs7O047Ozs7OworMUQ0Q0M7TUFUSEVNQVRJQ0FMIFNDUklQVCBTTUFMTCBXO0xsOzA7TDs8Zm9udD4gMDA3Nzs7OztOOzs7OzsKKzFENENEO01BVEhFTUFUSUNBTCBTQ1JJUFQgU01BTEwgWDtMbDswO0w7PGZvbnQ+IDAwNzg7Ozs7Tjs7Ozs7CisxRDRDRTtNQVRIRU1BVElDQUwgU0NSSVBUIFNNQUxMIFk7TGw7MDtMOzxmb250PiAwMDc5Ozs7O047Ozs7OworMUQ0Q0Y7TUFUSEVNQVRJQ0FMIFNDUklQVCBTTUFMTCBaO0xsOzA7TDs8Zm9udD4gMDA3QTs7OztOOzs7OzsKKzFENEQwO01BVEhFTUFUSUNBTCBCT0xEIFNDUklQVCBDQVBJVEFMIEE7THU7MDtMOzxmb250PiAwMDQxOzs7O047Ozs7OworMUQ0RDE7TUFUSEVNQVRJQ0FMIEJPTEQgU0NSSVBUIENBUElUQUwgQjtMdTswO0w7PGZvbnQ+IDAwNDI7Ozs7Tjs7Ozs7CisxRDREMjtNQVRIRU1BVElDQUwgQk9MRCBTQ1JJUFQgQ0FQSVRBTCBDO0x1OzA7TDs8Zm9udD4gMDA0Mzs7OztOOzs7OzsKKzFENEQzO01BVEhFTUFUSUNBTCBCT0xEIFNDUklQVCBDQVBJVEFMIEQ7THU7MDtMOzxmb250PiAwMDQ0Ozs7O047Ozs7OworMUQ0RDQ7TUFUSEVNQVRJQ0FMIEJPTEQgU0NSSVBUIENBUElUQUwgRTtMdTswO0w7PGZvbnQ+IDAwNDU7Ozs7Tjs7Ozs7CisxRDRENTtNQVRIRU1BVElDQUwgQk9MRCBTQ1JJUFQgQ0FQSVRBTCBGO0x1OzA7TDs8Zm9udD4gMDA0Njs7OztOOzs7OzsKKzFENEQ2O01BVEhFTUFUSUNBTCBCT0xEIFNDUklQVCBDQVBJVEFMIEc7THU7MDtMOzxmb250PiAwMDQ3Ozs7O047Ozs7OworMUQ0RDc7TUFUSEVNQVRJQ0FMIEJPTEQgU0NSSVBUIENBUElUQUwgSDtMdTswO0w7PGZvbnQ+IDAwNDg7Ozs7Tjs7Ozs7CisxRDREODtNQVRIRU1BVElDQUwgQk9MRCBTQ1JJUFQgQ0FQSVRBTCBJO0x1OzA7TDs8Zm9udD4gMDA0OTs7OztOOzs7OzsKKzFENEQ5O01BVEhFTUFUSUNBTCBCT0xEIFNDUklQVCBDQVBJVEFMIEo7THU7MDtMOzxmb250PiAwMDRBOzs7O047Ozs7OworMUQ0REE7TUFUSEVNQVRJQ0FMIEJPTEQgU0NSSVBUIENBUElUQUwgSztMdTswO0w7PGZvbnQ+IDAwNEI7Ozs7Tjs7Ozs7CisxRDREQjtNQVRIRU1BVElDQUwgQk9MRCBTQ1JJUFQgQ0FQSVRBTCBMO0x1OzA7TDs8Zm9udD4gMDA0Qzs7OztOOzs7OzsKKzFENERDO01BVEhFTUFUSUNBTCBCT0xEIFNDUklQVCBDQVBJVEFMIE07THU7MDtMOzxmb250PiAwMDREOzs7O047Ozs7OworMUQ0REQ7TUFUSEVNQVRJQ0FMIEJPTEQgU0NSSVBUIENBUElUQUwgTjtMdTswO0w7PGZvbnQ+IDAwNEU7Ozs7Tjs7Ozs7CisxRDRERTtNQVRIRU1BVElDQUwgQk9MRCBTQ1JJUFQgQ0FQSVRBTCBPO0x1OzA7TDs8Zm9udD4gMDA0Rjs7OztOOzs7OzsKKzFENERGO01BVEhFTUFUSUNBTCBCT0xEIFNDUklQVCBDQVBJVEFMIFA7THU7MDtMOzxmb250PiAwMDUwOzs7O047Ozs7OworMUQ0RTA7TUFUSEVNQVRJQ0FMIEJPTEQgU0NSSVBUIENBUElUQUwgUTtMdTswO0w7PGZvbnQ+IDAwNTE7Ozs7Tjs7Ozs7CisxRDRFMTtNQVRIRU1BVElDQUwgQk9MRCBTQ1JJUFQgQ0FQSVRBTCBSO0x1OzA7TDs8Zm9udD4gMDA1Mjs7OztOOzs7OzsKKzFENEUyO01BVEhFTUFUSUNBTCBCT0xEIFNDUklQVCBDQVBJVEFMIFM7THU7MDtMOzxmb250PiAwMDUzOzs7O047Ozs7OworMUQ0RTM7TUFUSEVNQVRJQ0FMIEJPTEQgU0NSSVBUIENBUElUQUwgVDtMdTswO0w7PGZvbnQ+IDAwNTQ7Ozs7Tjs7Ozs7CisxRDRFNDtNQVRIRU1BVElDQUwgQk9MRCBTQ1JJUFQgQ0FQSVRBTCBVO0x1OzA7TDs8Zm9udD4gMDA1NTs7OztOOzs7OzsKKzFENEU1O01BVEhFTUFUSUNBTCBCT0xEIFNDUklQVCBDQVBJVEFMIFY7THU7MDtMOzxmb250PiAwMDU2Ozs7O047Ozs7OworMUQ0RTY7TUFUSEVNQVRJQ0FMIEJPTEQgU0NSSVBUIENBUElUQUwgVztMdTswO0w7PGZvbnQ+IDAwNTc7Ozs7Tjs7Ozs7CisxRDRFNztNQVRIRU1BVElDQUwgQk9MRCBTQ1JJUFQgQ0FQSVRBTCBYO0x1OzA7TDs8Zm9udD4gMDA1ODs7OztOOzs7OzsKKzFENEU4O01BVEhFTUFUSUNBTCBCT0xEIFNDUklQVCBDQVBJVEFMIFk7THU7MDtMOzxmb250PiAwMDU5Ozs7O047Ozs7OworMUQ0RTk7TUFUSEVNQVRJQ0FMIEJPTEQgU0NSSVBUIENBUElUQUwgWjtMdTswO0w7PGZvbnQ+IDAwNUE7Ozs7Tjs7Ozs7CisxRDRFQTtNQVRIRU1BVElDQUwgQk9MRCBTQ1JJUFQgU01BTEwgQTtMbDswO0w7PGZvbnQ+IDAwNjE7Ozs7Tjs7Ozs7CisxRDRFQjtNQVRIRU1BVElDQUwgQk9MRCBTQ1JJUFQgU01BTEwgQjtMbDswO0w7PGZvbnQ+IDAwNjI7Ozs7Tjs7Ozs7CisxRDRFQztNQVRIRU1BVElDQUwgQk9MRCBTQ1JJUFQgU01BTEwgQztMbDswO0w7PGZvbnQ+IDAwNjM7Ozs7Tjs7Ozs7CisxRDRFRDtNQVRIRU1BVElDQUwgQk9MRCBTQ1JJUFQgU01BTEwgRDtMbDswO0w7PGZvbnQ+IDAwNjQ7Ozs7Tjs7Ozs7CisxRDRFRTtNQVRIRU1BVElDQUwgQk9MRCBTQ1JJUFQgU01BTEwgRTtMbDswO0w7PGZvbnQ+IDAwNjU7Ozs7Tjs7Ozs7CisxRDRFRjtNQVRIRU1BVElDQUwgQk9MRCBTQ1JJUFQgU01BTEwgRjtMbDswO0w7PGZvbnQ+IDAwNjY7Ozs7Tjs7Ozs7CisxRDRGMDtNQVRIRU1BVElDQUwgQk9MRCBTQ1JJUFQgU01BTEwgRztMbDswO0w7PGZvbnQ+IDAwNjc7Ozs7Tjs7Ozs7CisxRDRGMTtNQVRIRU1BVElDQUwgQk9MRCBTQ1JJUFQgU01BTEwgSDtMbDswO0w7PGZvbnQ+IDAwNjg7Ozs7Tjs7Ozs7CisxRDRGMjtNQVRIRU1BVElDQUwgQk9MRCBTQ1JJUFQgU01BTEwgSTtMbDswO0w7PGZvbnQ+IDAwNjk7Ozs7Tjs7Ozs7CisxRDRGMztNQVRIRU1BVElDQUwgQk9MRCBTQ1JJUFQgU01BTEwgSjtMbDswO0w7PGZvbnQ+IDAwNkE7Ozs7Tjs7Ozs7CisxRDRGNDtNQVRIRU1BVElDQUwgQk9MRCBTQ1JJUFQgU01BTEwgSztMbDswO0w7PGZvbnQ+IDAwNkI7Ozs7Tjs7Ozs7CisxRDRGNTtNQVRIRU1BVElDQUwgQk9MRCBTQ1JJUFQgU01BTEwgTDtMbDswO0w7PGZvbnQ+IDAwNkM7Ozs7Tjs7Ozs7CisxRDRGNjtNQVRIRU1BVElDQUwgQk9MRCBTQ1JJUFQgU01BTEwgTTtMbDswO0w7PGZvbnQ+IDAwNkQ7Ozs7Tjs7Ozs7CisxRDRGNztNQVRIRU1BVElDQUwgQk9MRCBTQ1JJUFQgU01BTEwgTjtMbDswO0w7PGZvbnQ+IDAwNkU7Ozs7Tjs7Ozs7CisxRDRGODtNQVRIRU1BVElDQUwgQk9MRCBTQ1JJUFQgU01BTEwgTztMbDswO0w7PGZvbnQ+IDAwNkY7Ozs7Tjs7Ozs7CisxRDRGOTtNQVRIRU1BVElDQUwgQk9MRCBTQ1JJUFQgU01BTEwgUDtMbDswO0w7PGZvbnQ+IDAwNzA7Ozs7Tjs7Ozs7CisxRDRGQTtNQVRIRU1BVElDQUwgQk9MRCBTQ1JJUFQgU01BTEwgUTtMbDswO0w7PGZvbnQ+IDAwNzE7Ozs7Tjs7Ozs7CisxRDRGQjtNQVRIRU1BVElDQUwgQk9MRCBTQ1JJUFQgU01BTEwgUjtMbDswO0w7PGZvbnQ+IDAwNzI7Ozs7Tjs7Ozs7CisxRDRGQztNQVRIRU1BVElDQUwgQk9MRCBTQ1JJUFQgU01BTEwgUztMbDswO0w7PGZvbnQ+IDAwNzM7Ozs7Tjs7Ozs7CisxRDRGRDtNQVRIRU1BVElDQUwgQk9MRCBTQ1JJUFQgU01BTEwgVDtMbDswO0w7PGZvbnQ+IDAwNzQ7Ozs7Tjs7Ozs7CisxRDRGRTtNQVRIRU1BVElDQUwgQk9MRCBTQ1JJUFQgU01BTEwgVTtMbDswO0w7PGZvbnQ+IDAwNzU7Ozs7Tjs7Ozs7CisxRDRGRjtNQVRIRU1BVElDQUwgQk9MRCBTQ1JJUFQgU01BTEwgVjtMbDswO0w7PGZvbnQ+IDAwNzY7Ozs7Tjs7Ozs7CisxRDUwMDtNQVRIRU1BVElDQUwgQk9MRCBTQ1JJUFQgU01BTEwgVztMbDswO0w7PGZvbnQ+IDAwNzc7Ozs7Tjs7Ozs7CisxRDUwMTtNQVRIRU1BVElDQUwgQk9MRCBTQ1JJUFQgU01BTEwgWDtMbDswO0w7PGZvbnQ+IDAwNzg7Ozs7Tjs7Ozs7CisxRDUwMjtNQVRIRU1BVElDQUwgQk9MRCBTQ1JJUFQgU01BTEwgWTtMbDswO0w7PGZvbnQ+IDAwNzk7Ozs7Tjs7Ozs7CisxRDUwMztNQVRIRU1BVElDQUwgQk9MRCBTQ1JJUFQgU01BTEwgWjtMbDswO0w7PGZvbnQ+IDAwN0E7Ozs7Tjs7Ozs7CisxRDUwNDtNQVRIRU1BVElDQUwgRlJBS1RVUiBDQVBJVEFMIEE7THU7MDtMOzxmb250PiAwMDQxOzs7O047Ozs7OworMUQ1MDU7TUFUSEVNQVRJQ0FMIEZSQUtUVVIgQ0FQSVRBTCBCO0x1OzA7TDs8Zm9udD4gMDA0Mjs7OztOOzs7OzsKKzFENTA3O01BVEhFTUFUSUNBTCBGUkFLVFVSIENBUElUQUwgRDtMdTswO0w7PGZvbnQ+IDAwNDQ7Ozs7Tjs7Ozs7CisxRDUwODtNQVRIRU1BVElDQUwgRlJBS1RVUiBDQVBJVEFMIEU7THU7MDtMOzxmb250PiAwMDQ1Ozs7O047Ozs7OworMUQ1MDk7TUFUSEVNQVRJQ0FMIEZSQUtUVVIgQ0FQSVRBTCBGO0x1OzA7TDs8Zm9udD4gMDA0Njs7OztOOzs7OzsKKzFENTBBO01BVEhFTUFUSUNBTCBGUkFLVFVSIENBUElUQUwgRztMdTswO0w7PGZvbnQ+IDAwNDc7Ozs7Tjs7Ozs7CisxRDUwRDtNQVRIRU1BVElDQUwgRlJBS1RVUiBDQVBJVEFMIEo7THU7MDtMOzxmb250PiAwMDRBOzs7O047Ozs7OworMUQ1MEU7TUFUSEVNQVRJQ0FMIEZSQUtUVVIgQ0FQSVRBTCBLO0x1OzA7TDs8Zm9udD4gMDA0Qjs7OztOOzs7OzsKKzFENTBGO01BVEhFTUFUSUNBTCBGUkFLVFVSIENBUElUQUwgTDtMdTswO0w7PGZvbnQ+IDAwNEM7Ozs7Tjs7Ozs7CisxRDUxMDtNQVRIRU1BVElDQUwgRlJBS1RVUiBDQVBJVEFMIE07THU7MDtMOzxmb250PiAwMDREOzs7O047Ozs7OworMUQ1MTE7TUFUSEVNQVRJQ0FMIEZSQUtUVVIgQ0FQSVRBTCBOO0x1OzA7TDs8Zm9udD4gMDA0RTs7OztOOzs7OzsKKzFENTEyO01BVEhFTUFUSUNBTCBGUkFLVFVSIENBUElUQUwgTztMdTswO0w7PGZvbnQ+IDAwNEY7Ozs7Tjs7Ozs7CisxRDUxMztNQVRIRU1BVElDQUwgRlJBS1RVUiBDQVBJVEFMIFA7THU7MDtMOzxmb250PiAwMDUwOzs7O047Ozs7OworMUQ1MTQ7TUFUSEVNQVRJQ0FMIEZSQUtUVVIgQ0FQSVRBTCBRO0x1OzA7TDs8Zm9udD4gMDA1MTs7OztOOzs7OzsKKzFENTE2O01BVEhFTUFUSUNBTCBGUkFLVFVSIENBUElUQUwgUztMdTswO0w7PGZvbnQ+IDAwNTM7Ozs7Tjs7Ozs7CisxRDUxNztNQVRIRU1BVElDQUwgRlJBS1RVUiBDQVBJVEFMIFQ7THU7MDtMOzxmb250PiAwMDU0Ozs7O047Ozs7OworMUQ1MTg7TUFUSEVNQVRJQ0FMIEZSQUtUVVIgQ0FQSVRBTCBVO0x1OzA7TDs8Zm9udD4gMDA1NTs7OztOOzs7OzsKKzFENTE5O01BVEhFTUFUSUNBTCBGUkFLVFVSIENBUElUQUwgVjtMdTswO0w7PGZvbnQ+IDAwNTY7Ozs7Tjs7Ozs7CisxRDUxQTtNQVRIRU1BVElDQUwgRlJBS1RVUiBDQVBJVEFMIFc7THU7MDtMOzxmb250PiAwMDU3Ozs7O047Ozs7OworMUQ1MUI7TUFUSEVNQVRJQ0FMIEZSQUtUVVIgQ0FQSVRBTCBYO0x1OzA7TDs8Zm9udD4gMDA1ODs7OztOOzs7OzsKKzFENTFDO01BVEhFTUFUSUNBTCBGUkFLVFVSIENBUElUQUwgWTtMdTswO0w7PGZvbnQ+IDAwNTk7Ozs7Tjs7Ozs7CisxRDUxRTtNQVRIRU1BVElDQUwgRlJBS1RVUiBTTUFMTCBBO0xsOzA7TDs8Zm9udD4gMDA2MTs7OztOOzs7OzsKKzFENTFGO01BVEhFTUFUSUNBTCBGUkFLVFVSIFNNQUxMIEI7TGw7MDtMOzxmb250PiAwMDYyOzs7O047Ozs7OworMUQ1MjA7TUFUSEVNQVRJQ0FMIEZSQUtUVVIgU01BTEwgQztMbDswO0w7PGZvbnQ+IDAwNjM7Ozs7Tjs7Ozs7CisxRDUyMTtNQVRIRU1BVElDQUwgRlJBS1RVUiBTTUFMTCBEO0xsOzA7TDs8Zm9udD4gMDA2NDs7OztOOzs7OzsKKzFENTIyO01BVEhFTUFUSUNBTCBGUkFLVFVSIFNNQUxMIEU7TGw7MDtMOzxmb250PiAwMDY1Ozs7O047Ozs7OworMUQ1MjM7TUFUSEVNQVRJQ0FMIEZSQUtUVVIgU01BTEwgRjtMbDswO0w7PGZvbnQ+IDAwNjY7Ozs7Tjs7Ozs7CisxRDUyNDtNQVRIRU1BVElDQUwgRlJBS1RVUiBTTUFMTCBHO0xsOzA7TDs8Zm9udD4gMDA2Nzs7OztOOzs7OzsKKzFENTI1O01BVEhFTUFUSUNBTCBGUkFLVFVSIFNNQUxMIEg7TGw7MDtMOzxmb250PiAwMDY4Ozs7O047Ozs7OworMUQ1MjY7TUFUSEVNQVRJQ0FMIEZSQUtUVVIgU01BTEwgSTtMbDswO0w7PGZvbnQ+IDAwNjk7Ozs7Tjs7Ozs7CisxRDUyNztNQVRIRU1BVElDQUwgRlJBS1RVUiBTTUFMTCBKO0xsOzA7TDs8Zm9udD4gMDA2QTs7OztOOzs7OzsKKzFENTI4O01BVEhFTUFUSUNBTCBGUkFLVFVSIFNNQUxMIEs7TGw7MDtMOzxmb250PiAwMDZCOzs7O047Ozs7OworMUQ1Mjk7TUFUSEVNQVRJQ0FMIEZSQUtUVVIgU01BTEwgTDtMbDswO0w7PGZvbnQ+IDAwNkM7Ozs7Tjs7Ozs7CisxRDUyQTtNQVRIRU1BVElDQUwgRlJBS1RVUiBTTUFMTCBNO0xsOzA7TDs8Zm9udD4gMDA2RDs7OztOOzs7OzsKKzFENTJCO01BVEhFTUFUSUNBTCBGUkFLVFVSIFNNQUxMIE47TGw7MDtMOzxmb250PiAwMDZFOzs7O047Ozs7OworMUQ1MkM7TUFUSEVNQVRJQ0FMIEZSQUtUVVIgU01BTEwgTztMbDswO0w7PGZvbnQ+IDAwNkY7Ozs7Tjs7Ozs7CisxRDUyRDtNQVRIRU1BVElDQUwgRlJBS1RVUiBTTUFMTCBQO0xsOzA7TDs8Zm9udD4gMDA3MDs7OztOOzs7OzsKKzFENTJFO01BVEhFTUFUSUNBTCBGUkFLVFVSIFNNQUxMIFE7TGw7MDtMOzxmb250PiAwMDcxOzs7O047Ozs7OworMUQ1MkY7TUFUSEVNQVRJQ0FMIEZSQUtUVVIgU01BTEwgUjtMbDswO0w7PGZvbnQ+IDAwNzI7Ozs7Tjs7Ozs7CisxRDUzMDtNQVRIRU1BVElDQUwgRlJBS1RVUiBTTUFMTCBTO0xsOzA7TDs8Zm9udD4gMDA3Mzs7OztOOzs7OzsKKzFENTMxO01BVEhFTUFUSUNBTCBGUkFLVFVSIFNNQUxMIFQ7TGw7MDtMOzxmb250PiAwMDc0Ozs7O047Ozs7OworMUQ1MzI7TUFUSEVNQVRJQ0FMIEZSQUtUVVIgU01BTEwgVTtMbDswO0w7PGZvbnQ+IDAwNzU7Ozs7Tjs7Ozs7CisxRDUzMztNQVRIRU1BVElDQUwgRlJBS1RVUiBTTUFMTCBWO0xsOzA7TDs8Zm9udD4gMDA3Njs7OztOOzs7OzsKKzFENTM0O01BVEhFTUFUSUNBTCBGUkFLVFVSIFNNQUxMIFc7TGw7MDtMOzxmb250PiAwMDc3Ozs7O047Ozs7OworMUQ1MzU7TUFUSEVNQVRJQ0FMIEZSQUtUVVIgU01BTEwgWDtMbDswO0w7PGZvbnQ+IDAwNzg7Ozs7Tjs7Ozs7CisxRDUzNjtNQVRIRU1BVElDQUwgRlJBS1RVUiBTTUFMTCBZO0xsOzA7TDs8Zm9udD4gMDA3OTs7OztOOzs7OzsKKzFENTM3O01BVEhFTUFUSUNBTCBGUkFLVFVSIFNNQUxMIFo7TGw7MDtMOzxmb250PiAwMDdBOzs7O047Ozs7OworMUQ1Mzg7TUFUSEVNQVRJQ0FMIERPVUJMRS1TVFJVQ0sgQ0FQSVRBTCBBO0x1OzA7TDs8Zm9udD4gMDA0MTs7OztOOzs7OzsKKzFENTM5O01BVEhFTUFUSUNBTCBET1VCTEUtU1RSVUNLIENBUElUQUwgQjtMdTswO0w7PGZvbnQ+IDAwNDI7Ozs7Tjs7Ozs7CisxRDUzQjtNQVRIRU1BVElDQUwgRE9VQkxFLVNUUlVDSyBDQVBJVEFMIEQ7THU7MDtMOzxmb250PiAwMDQ0Ozs7O047Ozs7OworMUQ1M0M7TUFUSEVNQVRJQ0FMIERPVUJMRS1TVFJVQ0sgQ0FQSVRBTCBFO0x1OzA7TDs8Zm9udD4gMDA0NTs7OztOOzs7OzsKKzFENTNEO01BVEhFTUFUSUNBTCBET1VCTEUtU1RSVUNLIENBUElUQUwgRjtMdTswO0w7PGZvbnQ+IDAwNDY7Ozs7Tjs7Ozs7CisxRDUzRTtNQVRIRU1BVElDQUwgRE9VQkxFLVNUUlVDSyBDQVBJVEFMIEc7THU7MDtMOzxmb250PiAwMDQ3Ozs7O047Ozs7OworMUQ1NDA7TUFUSEVNQVRJQ0FMIERPVUJMRS1TVFJVQ0sgQ0FQSVRBTCBJO0x1OzA7TDs8Zm9udD4gMDA0OTs7OztOOzs7OzsKKzFENTQxO01BVEhFTUFUSUNBTCBET1VCTEUtU1RSVUNLIENBUElUQUwgSjtMdTswO0w7PGZvbnQ+IDAwNEE7Ozs7Tjs7Ozs7CisxRDU0MjtNQVRIRU1BVElDQUwgRE9VQkxFLVNUUlVDSyBDQVBJVEFMIEs7THU7MDtMOzxmb250PiAwMDRCOzs7O047Ozs7OworMUQ1NDM7TUFUSEVNQVRJQ0FMIERPVUJMRS1TVFJVQ0sgQ0FQSVRBTCBMO0x1OzA7TDs8Zm9udD4gMDA0Qzs7OztOOzs7OzsKKzFENTQ0O01BVEhFTUFUSUNBTCBET1VCTEUtU1RSVUNLIENBUElUQUwgTTtMdTswO0w7PGZvbnQ+IDAwNEQ7Ozs7Tjs7Ozs7CisxRDU0NjtNQVRIRU1BVElDQUwgRE9VQkxFLVNUUlVDSyBDQVBJVEFMIE87THU7MDtMOzxmb250PiAwMDRGOzs7O047Ozs7OworMUQ1NEE7TUFUSEVNQVRJQ0FMIERPVUJMRS1TVFJVQ0sgQ0FQSVRBTCBTO0x1OzA7TDs8Zm9udD4gMDA1Mzs7OztOOzs7OzsKKzFENTRCO01BVEhFTUFUSUNBTCBET1VCTEUtU1RSVUNLIENBUElUQUwgVDtMdTswO0w7PGZvbnQ+IDAwNTQ7Ozs7Tjs7Ozs7CisxRDU0QztNQVRIRU1BVElDQUwgRE9VQkxFLVNUUlVDSyBDQVBJVEFMIFU7THU7MDtMOzxmb250PiAwMDU1Ozs7O047Ozs7OworMUQ1NEQ7TUFUSEVNQVRJQ0FMIERPVUJMRS1TVFJVQ0sgQ0FQSVRBTCBWO0x1OzA7TDs8Zm9udD4gMDA1Njs7OztOOzs7OzsKKzFENTRFO01BVEhFTUFUSUNBTCBET1VCTEUtU1RSVUNLIENBUElUQUwgVztMdTswO0w7PGZvbnQ+IDAwNTc7Ozs7Tjs7Ozs7CisxRDU0RjtNQVRIRU1BVElDQUwgRE9VQkxFLVNUUlVDSyBDQVBJVEFMIFg7THU7MDtMOzxmb250PiAwMDU4Ozs7O047Ozs7OworMUQ1NTA7TUFUSEVNQVRJQ0FMIERPVUJMRS1TVFJVQ0sgQ0FQSVRBTCBZO0x1OzA7TDs8Zm9udD4gMDA1OTs7OztOOzs7OzsKKzFENTUyO01BVEhFTUFUSUNBTCBET1VCTEUtU1RSVUNLIFNNQUxMIEE7TGw7MDtMOzxmb250PiAwMDYxOzs7O047Ozs7OworMUQ1NTM7TUFUSEVNQVRJQ0FMIERPVUJMRS1TVFJVQ0sgU01BTEwgQjtMbDswO0w7PGZvbnQ+IDAwNjI7Ozs7Tjs7Ozs7CisxRDU1NDtNQVRIRU1BVElDQUwgRE9VQkxFLVNUUlVDSyBTTUFMTCBDO0xsOzA7TDs8Zm9udD4gMDA2Mzs7OztOOzs7OzsKKzFENTU1O01BVEhFTUFUSUNBTCBET1VCTEUtU1RSVUNLIFNNQUxMIEQ7TGw7MDtMOzxmb250PiAwMDY0Ozs7O047Ozs7OworMUQ1NTY7TUFUSEVNQVRJQ0FMIERPVUJMRS1TVFJVQ0sgU01BTEwgRTtMbDswO0w7PGZvbnQ+IDAwNjU7Ozs7Tjs7Ozs7CisxRDU1NztNQVRIRU1BVElDQUwgRE9VQkxFLVNUUlVDSyBTTUFMTCBGO0xsOzA7TDs8Zm9udD4gMDA2Njs7OztOOzs7OzsKKzFENTU4O01BVEhFTUFUSUNBTCBET1VCTEUtU1RSVUNLIFNNQUxMIEc7TGw7MDtMOzxmb250PiAwMDY3Ozs7O047Ozs7OworMUQ1NTk7TUFUSEVNQVRJQ0FMIERPVUJMRS1TVFJVQ0sgU01BTEwgSDtMbDswO0w7PGZvbnQ+IDAwNjg7Ozs7Tjs7Ozs7CisxRDU1QTtNQVRIRU1BVElDQUwgRE9VQkxFLVNUUlVDSyBTTUFMTCBJO0xsOzA7TDs8Zm9udD4gMDA2OTs7OztOOzs7OzsKKzFENTVCO01BVEhFTUFUSUNBTCBET1VCTEUtU1RSVUNLIFNNQUxMIEo7TGw7MDtMOzxmb250PiAwMDZBOzs7O047Ozs7OworMUQ1NUM7TUFUSEVNQVRJQ0FMIERPVUJMRS1TVFJVQ0sgU01BTEwgSztMbDswO0w7PGZvbnQ+IDAwNkI7Ozs7Tjs7Ozs7CisxRDU1RDtNQVRIRU1BVElDQUwgRE9VQkxFLVNUUlVDSyBTTUFMTCBMO0xsOzA7TDs8Zm9udD4gMDA2Qzs7OztOOzs7OzsKKzFENTVFO01BVEhFTUFUSUNBTCBET1VCTEUtU1RSVUNLIFNNQUxMIE07TGw7MDtMOzxmb250PiAwMDZEOzs7O047Ozs7OworMUQ1NUY7TUFUSEVNQVRJQ0FMIERPVUJMRS1TVFJVQ0sgU01BTEwgTjtMbDswO0w7PGZvbnQ+IDAwNkU7Ozs7Tjs7Ozs7CisxRDU2MDtNQVRIRU1BVElDQUwgRE9VQkxFLVNUUlVDSyBTTUFMTCBPO0xsOzA7TDs8Zm9udD4gMDA2Rjs7OztOOzs7OzsKKzFENTYxO01BVEhFTUFUSUNBTCBET1VCTEUtU1RSVUNLIFNNQUxMIFA7TGw7MDtMOzxmb250PiAwMDcwOzs7O047Ozs7OworMUQ1NjI7TUFUSEVNQVRJQ0FMIERPVUJMRS1TVFJVQ0sgU01BTEwgUTtMbDswO0w7PGZvbnQ+IDAwNzE7Ozs7Tjs7Ozs7CisxRDU2MztNQVRIRU1BVElDQUwgRE9VQkxFLVNUUlVDSyBTTUFMTCBSO0xsOzA7TDs8Zm9udD4gMDA3Mjs7OztOOzs7OzsKKzFENTY0O01BVEhFTUFUSUNBTCBET1VCTEUtU1RSVUNLIFNNQUxMIFM7TGw7MDtMOzxmb250PiAwMDczOzs7O047Ozs7OworMUQ1NjU7TUFUSEVNQVRJQ0FMIERPVUJMRS1TVFJVQ0sgU01BTEwgVDtMbDswO0w7PGZvbnQ+IDAwNzQ7Ozs7Tjs7Ozs7CisxRDU2NjtNQVRIRU1BVElDQUwgRE9VQkxFLVNUUlVDSyBTTUFMTCBVO0xsOzA7TDs8Zm9udD4gMDA3NTs7OztOOzs7OzsKKzFENTY3O01BVEhFTUFUSUNBTCBET1VCTEUtU1RSVUNLIFNNQUxMIFY7TGw7MDtMOzxmb250PiAwMDc2Ozs7O047Ozs7OworMUQ1Njg7TUFUSEVNQVRJQ0FMIERPVUJMRS1TVFJVQ0sgU01BTEwgVztMbDswO0w7PGZvbnQ+IDAwNzc7Ozs7Tjs7Ozs7CisxRDU2OTtNQVRIRU1BVElDQUwgRE9VQkxFLVNUUlVDSyBTTUFMTCBYO0xsOzA7TDs8Zm9udD4gMDA3ODs7OztOOzs7OzsKKzFENTZBO01BVEhFTUFUSUNBTCBET1VCTEUtU1RSVUNLIFNNQUxMIFk7TGw7MDtMOzxmb250PiAwMDc5Ozs7O047Ozs7OworMUQ1NkI7TUFUSEVNQVRJQ0FMIERPVUJMRS1TVFJVQ0sgU01BTEwgWjtMbDswO0w7PGZvbnQ+IDAwN0E7Ozs7Tjs7Ozs7CisxRDU2QztNQVRIRU1BVElDQUwgQk9MRCBGUkFLVFVSIENBUElUQUwgQTtMdTswO0w7PGZvbnQ+IDAwNDE7Ozs7Tjs7Ozs7CisxRDU2RDtNQVRIRU1BVElDQUwgQk9MRCBGUkFLVFVSIENBUElUQUwgQjtMdTswO0w7PGZvbnQ+IDAwNDI7Ozs7Tjs7Ozs7CisxRDU2RTtNQVRIRU1BVElDQUwgQk9MRCBGUkFLVFVSIENBUElUQUwgQztMdTswO0w7PGZvbnQ+IDAwNDM7Ozs7Tjs7Ozs7CisxRDU2RjtNQVRIRU1BVElDQUwgQk9MRCBGUkFLVFVSIENBUElUQUwgRDtMdTswO0w7PGZvbnQ+IDAwNDQ7Ozs7Tjs7Ozs7CisxRDU3MDtNQVRIRU1BVElDQUwgQk9MRCBGUkFLVFVSIENBUElUQUwgRTtMdTswO0w7PGZvbnQ+IDAwNDU7Ozs7Tjs7Ozs7CisxRDU3MTtNQVRIRU1BVElDQUwgQk9MRCBGUkFLVFVSIENBUElUQUwgRjtMdTswO0w7PGZvbnQ+IDAwNDY7Ozs7Tjs7Ozs7CisxRDU3MjtNQVRIRU1BVElDQUwgQk9MRCBGUkFLVFVSIENBUElUQUwgRztMdTswO0w7PGZvbnQ+IDAwNDc7Ozs7Tjs7Ozs7CisxRDU3MztNQVRIRU1BVElDQUwgQk9MRCBGUkFLVFVSIENBUElUQUwgSDtMdTswO0w7PGZvbnQ+IDAwNDg7Ozs7Tjs7Ozs7CisxRDU3NDtNQVRIRU1BVElDQUwgQk9MRCBGUkFLVFVSIENBUElUQUwgSTtMdTswO0w7PGZvbnQ+IDAwNDk7Ozs7Tjs7Ozs7CisxRDU3NTtNQVRIRU1BVElDQUwgQk9MRCBGUkFLVFVSIENBUElUQUwgSjtMdTswO0w7PGZvbnQ+IDAwNEE7Ozs7Tjs7Ozs7CisxRDU3NjtNQVRIRU1BVElDQUwgQk9MRCBGUkFLVFVSIENBUElUQUwgSztMdTswO0w7PGZvbnQ+IDAwNEI7Ozs7Tjs7Ozs7CisxRDU3NztNQVRIRU1BVElDQUwgQk9MRCBGUkFLVFVSIENBUElUQUwgTDtMdTswO0w7PGZvbnQ+IDAwNEM7Ozs7Tjs7Ozs7CisxRDU3ODtNQVRIRU1BVElDQUwgQk9MRCBGUkFLVFVSIENBUElUQUwgTTtMdTswO0w7PGZvbnQ+IDAwNEQ7Ozs7Tjs7Ozs7CisxRDU3OTtNQVRIRU1BVElDQUwgQk9MRCBGUkFLVFVSIENBUElUQUwgTjtMdTswO0w7PGZvbnQ+IDAwNEU7Ozs7Tjs7Ozs7CisxRDU3QTtNQVRIRU1BVElDQUwgQk9MRCBGUkFLVFVSIENBUElUQUwgTztMdTswO0w7PGZvbnQ+IDAwNEY7Ozs7Tjs7Ozs7CisxRDU3QjtNQVRIRU1BVElDQUwgQk9MRCBGUkFLVFVSIENBUElUQUwgUDtMdTswO0w7PGZvbnQ+IDAwNTA7Ozs7Tjs7Ozs7CisxRDU3QztNQVRIRU1BVElDQUwgQk9MRCBGUkFLVFVSIENBUElUQUwgUTtMdTswO0w7PGZvbnQ+IDAwNTE7Ozs7Tjs7Ozs7CisxRDU3RDtNQVRIRU1BVElDQUwgQk9MRCBGUkFLVFVSIENBUElUQUwgUjtMdTswO0w7PGZvbnQ+IDAwNTI7Ozs7Tjs7Ozs7CisxRDU3RTtNQVRIRU1BVElDQUwgQk9MRCBGUkFLVFVSIENBUElUQUwgUztMdTswO0w7PGZvbnQ+IDAwNTM7Ozs7Tjs7Ozs7CisxRDU3RjtNQVRIRU1BVElDQUwgQk9MRCBGUkFLVFVSIENBUElUQUwgVDtMdTswO0w7PGZvbnQ+IDAwNTQ7Ozs7Tjs7Ozs7CisxRDU4MDtNQVRIRU1BVElDQUwgQk9MRCBGUkFLVFVSIENBUElUQUwgVTtMdTswO0w7PGZvbnQ+IDAwNTU7Ozs7Tjs7Ozs7CisxRDU4MTtNQVRIRU1BVElDQUwgQk9MRCBGUkFLVFVSIENBUElUQUwgVjtMdTswO0w7PGZvbnQ+IDAwNTY7Ozs7Tjs7Ozs7CisxRDU4MjtNQVRIRU1BVElDQUwgQk9MRCBGUkFLVFVSIENBUElUQUwgVztMdTswO0w7PGZvbnQ+IDAwNTc7Ozs7Tjs7Ozs7CisxRDU4MztNQVRIRU1BVElDQUwgQk9MRCBGUkFLVFVSIENBUElUQUwgWDtMdTswO0w7PGZvbnQ+IDAwNTg7Ozs7Tjs7Ozs7CisxRDU4NDtNQVRIRU1BVElDQUwgQk9MRCBGUkFLVFVSIENBUElUQUwgWTtMdTswO0w7PGZvbnQ+IDAwNTk7Ozs7Tjs7Ozs7CisxRDU4NTtNQVRIRU1BVElDQUwgQk9MRCBGUkFLVFVSIENBUElUQUwgWjtMdTswO0w7PGZvbnQ+IDAwNUE7Ozs7Tjs7Ozs7CisxRDU4NjtNQVRIRU1BVElDQUwgQk9MRCBGUkFLVFVSIFNNQUxMIEE7TGw7MDtMOzxmb250PiAwMDYxOzs7O047Ozs7OworMUQ1ODc7TUFUSEVNQVRJQ0FMIEJPTEQgRlJBS1RVUiBTTUFMTCBCO0xsOzA7TDs8Zm9udD4gMDA2Mjs7OztOOzs7OzsKKzFENTg4O01BVEhFTUFUSUNBTCBCT0xEIEZSQUtUVVIgU01BTEwgQztMbDswO0w7PGZvbnQ+IDAwNjM7Ozs7Tjs7Ozs7CisxRDU4OTtNQVRIRU1BVElDQUwgQk9MRCBGUkFLVFVSIFNNQUxMIEQ7TGw7MDtMOzxmb250PiAwMDY0Ozs7O047Ozs7OworMUQ1OEE7TUFUSEVNQVRJQ0FMIEJPTEQgRlJBS1RVUiBTTUFMTCBFO0xsOzA7TDs8Zm9udD4gMDA2NTs7OztOOzs7OzsKKzFENThCO01BVEhFTUFUSUNBTCBCT0xEIEZSQUtUVVIgU01BTEwgRjtMbDswO0w7PGZvbnQ+IDAwNjY7Ozs7Tjs7Ozs7CisxRDU4QztNQVRIRU1BVElDQUwgQk9MRCBGUkFLVFVSIFNNQUxMIEc7TGw7MDtMOzxmb250PiAwMDY3Ozs7O047Ozs7OworMUQ1OEQ7TUFUSEVNQVRJQ0FMIEJPTEQgRlJBS1RVUiBTTUFMTCBIO0xsOzA7TDs8Zm9udD4gMDA2ODs7OztOOzs7OzsKKzFENThFO01BVEhFTUFUSUNBTCBCT0xEIEZSQUtUVVIgU01BTEwgSTtMbDswO0w7PGZvbnQ+IDAwNjk7Ozs7Tjs7Ozs7CisxRDU4RjtNQVRIRU1BVElDQUwgQk9MRCBGUkFLVFVSIFNNQUxMIEo7TGw7MDtMOzxmb250PiAwMDZBOzs7O047Ozs7OworMUQ1OTA7TUFUSEVNQVRJQ0FMIEJPTEQgRlJBS1RVUiBTTUFMTCBLO0xsOzA7TDs8Zm9udD4gMDA2Qjs7OztOOzs7OzsKKzFENTkxO01BVEhFTUFUSUNBTCBCT0xEIEZSQUtUVVIgU01BTEwgTDtMbDswO0w7PGZvbnQ+IDAwNkM7Ozs7Tjs7Ozs7CisxRDU5MjtNQVRIRU1BVElDQUwgQk9MRCBGUkFLVFVSIFNNQUxMIE07TGw7MDtMOzxmb250PiAwMDZEOzs7O047Ozs7OworMUQ1OTM7TUFUSEVNQVRJQ0FMIEJPTEQgRlJBS1RVUiBTTUFMTCBOO0xsOzA7TDs8Zm9udD4gMDA2RTs7OztOOzs7OzsKKzFENTk0O01BVEhFTUFUSUNBTCBCT0xEIEZSQUtUVVIgU01BTEwgTztMbDswO0w7PGZvbnQ+IDAwNkY7Ozs7Tjs7Ozs7CisxRDU5NTtNQVRIRU1BVElDQUwgQk9MRCBGUkFLVFVSIFNNQUxMIFA7TGw7MDtMOzxmb250PiAwMDcwOzs7O047Ozs7OworMUQ1OTY7TUFUSEVNQVRJQ0FMIEJPTEQgRlJBS1RVUiBTTUFMTCBRO0xsOzA7TDs8Zm9udD4gMDA3MTs7OztOOzs7OzsKKzFENTk3O01BVEhFTUFUSUNBTCBCT0xEIEZSQUtUVVIgU01BTEwgUjtMbDswO0w7PGZvbnQ+IDAwNzI7Ozs7Tjs7Ozs7CisxRDU5ODtNQVRIRU1BVElDQUwgQk9MRCBGUkFLVFVSIFNNQUxMIFM7TGw7MDtMOzxmb250PiAwMDczOzs7O047Ozs7OworMUQ1OTk7TUFUSEVNQVRJQ0FMIEJPTEQgRlJBS1RVUiBTTUFMTCBUO0xsOzA7TDs8Zm9udD4gMDA3NDs7OztOOzs7OzsKKzFENTlBO01BVEhFTUFUSUNBTCBCT0xEIEZSQUtUVVIgU01BTEwgVTtMbDswO0w7PGZvbnQ+IDAwNzU7Ozs7Tjs7Ozs7CisxRDU5QjtNQVRIRU1BVElDQUwgQk9MRCBGUkFLVFVSIFNNQUxMIFY7TGw7MDtMOzxmb250PiAwMDc2Ozs7O047Ozs7OworMUQ1OUM7TUFUSEVNQVRJQ0FMIEJPTEQgRlJBS1RVUiBTTUFMTCBXO0xsOzA7TDs8Zm9udD4gMDA3Nzs7OztOOzs7OzsKKzFENTlEO01BVEhFTUFUSUNBTCBCT0xEIEZSQUtUVVIgU01BTEwgWDtMbDswO0w7PGZvbnQ+IDAwNzg7Ozs7Tjs7Ozs7CisxRDU5RTtNQVRIRU1BVElDQUwgQk9MRCBGUkFLVFVSIFNNQUxMIFk7TGw7MDtMOzxmb250PiAwMDc5Ozs7O047Ozs7OworMUQ1OUY7TUFUSEVNQVRJQ0FMIEJPTEQgRlJBS1RVUiBTTUFMTCBaO0xsOzA7TDs8Zm9udD4gMDA3QTs7OztOOzs7OzsKKzFENUEwO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIENBUElUQUwgQTtMdTswO0w7PGZvbnQ+IDAwNDE7Ozs7Tjs7Ozs7CisxRDVBMTtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBDQVBJVEFMIEI7THU7MDtMOzxmb250PiAwMDQyOzs7O047Ozs7OworMUQ1QTI7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQ0FQSVRBTCBDO0x1OzA7TDs8Zm9udD4gMDA0Mzs7OztOOzs7OzsKKzFENUEzO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIENBUElUQUwgRDtMdTswO0w7PGZvbnQ+IDAwNDQ7Ozs7Tjs7Ozs7CisxRDVBNDtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBDQVBJVEFMIEU7THU7MDtMOzxmb250PiAwMDQ1Ozs7O047Ozs7OworMUQ1QTU7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQ0FQSVRBTCBGO0x1OzA7TDs8Zm9udD4gMDA0Njs7OztOOzs7OzsKKzFENUE2O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIENBUElUQUwgRztMdTswO0w7PGZvbnQ+IDAwNDc7Ozs7Tjs7Ozs7CisxRDVBNztNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBDQVBJVEFMIEg7THU7MDtMOzxmb250PiAwMDQ4Ozs7O047Ozs7OworMUQ1QTg7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQ0FQSVRBTCBJO0x1OzA7TDs8Zm9udD4gMDA0OTs7OztOOzs7OzsKKzFENUE5O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIENBUElUQUwgSjtMdTswO0w7PGZvbnQ+IDAwNEE7Ozs7Tjs7Ozs7CisxRDVBQTtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBDQVBJVEFMIEs7THU7MDtMOzxmb250PiAwMDRCOzs7O047Ozs7OworMUQ1QUI7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQ0FQSVRBTCBMO0x1OzA7TDs8Zm9udD4gMDA0Qzs7OztOOzs7OzsKKzFENUFDO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIENBUElUQUwgTTtMdTswO0w7PGZvbnQ+IDAwNEQ7Ozs7Tjs7Ozs7CisxRDVBRDtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBDQVBJVEFMIE47THU7MDtMOzxmb250PiAwMDRFOzs7O047Ozs7OworMUQ1QUU7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQ0FQSVRBTCBPO0x1OzA7TDs8Zm9udD4gMDA0Rjs7OztOOzs7OzsKKzFENUFGO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIENBUElUQUwgUDtMdTswO0w7PGZvbnQ+IDAwNTA7Ozs7Tjs7Ozs7CisxRDVCMDtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBDQVBJVEFMIFE7THU7MDtMOzxmb250PiAwMDUxOzs7O047Ozs7OworMUQ1QjE7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQ0FQSVRBTCBSO0x1OzA7TDs8Zm9udD4gMDA1Mjs7OztOOzs7OzsKKzFENUIyO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIENBUElUQUwgUztMdTswO0w7PGZvbnQ+IDAwNTM7Ozs7Tjs7Ozs7CisxRDVCMztNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBDQVBJVEFMIFQ7THU7MDtMOzxmb250PiAwMDU0Ozs7O047Ozs7OworMUQ1QjQ7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQ0FQSVRBTCBVO0x1OzA7TDs8Zm9udD4gMDA1NTs7OztOOzs7OzsKKzFENUI1O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIENBUElUQUwgVjtMdTswO0w7PGZvbnQ+IDAwNTY7Ozs7Tjs7Ozs7CisxRDVCNjtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBDQVBJVEFMIFc7THU7MDtMOzxmb250PiAwMDU3Ozs7O047Ozs7OworMUQ1Qjc7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQ0FQSVRBTCBYO0x1OzA7TDs8Zm9udD4gMDA1ODs7OztOOzs7OzsKKzFENUI4O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIENBUElUQUwgWTtMdTswO0w7PGZvbnQ+IDAwNTk7Ozs7Tjs7Ozs7CisxRDVCOTtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBDQVBJVEFMIFo7THU7MDtMOzxmb250PiAwMDVBOzs7O047Ozs7OworMUQ1QkE7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgU01BTEwgQTtMbDswO0w7PGZvbnQ+IDAwNjE7Ozs7Tjs7Ozs7CisxRDVCQjtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBTTUFMTCBCO0xsOzA7TDs8Zm9udD4gMDA2Mjs7OztOOzs7OzsKKzFENUJDO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIFNNQUxMIEM7TGw7MDtMOzxmb250PiAwMDYzOzs7O047Ozs7OworMUQ1QkQ7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgU01BTEwgRDtMbDswO0w7PGZvbnQ+IDAwNjQ7Ozs7Tjs7Ozs7CisxRDVCRTtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBTTUFMTCBFO0xsOzA7TDs8Zm9udD4gMDA2NTs7OztOOzs7OzsKKzFENUJGO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIFNNQUxMIEY7TGw7MDtMOzxmb250PiAwMDY2Ozs7O047Ozs7OworMUQ1QzA7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgU01BTEwgRztMbDswO0w7PGZvbnQ+IDAwNjc7Ozs7Tjs7Ozs7CisxRDVDMTtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBTTUFMTCBIO0xsOzA7TDs8Zm9udD4gMDA2ODs7OztOOzs7OzsKKzFENUMyO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIFNNQUxMIEk7TGw7MDtMOzxmb250PiAwMDY5Ozs7O047Ozs7OworMUQ1QzM7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgU01BTEwgSjtMbDswO0w7PGZvbnQ+IDAwNkE7Ozs7Tjs7Ozs7CisxRDVDNDtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBTTUFMTCBLO0xsOzA7TDs8Zm9udD4gMDA2Qjs7OztOOzs7OzsKKzFENUM1O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIFNNQUxMIEw7TGw7MDtMOzxmb250PiAwMDZDOzs7O047Ozs7OworMUQ1QzY7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgU01BTEwgTTtMbDswO0w7PGZvbnQ+IDAwNkQ7Ozs7Tjs7Ozs7CisxRDVDNztNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBTTUFMTCBOO0xsOzA7TDs8Zm9udD4gMDA2RTs7OztOOzs7OzsKKzFENUM4O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIFNNQUxMIE87TGw7MDtMOzxmb250PiAwMDZGOzs7O047Ozs7OworMUQ1Qzk7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgU01BTEwgUDtMbDswO0w7PGZvbnQ+IDAwNzA7Ozs7Tjs7Ozs7CisxRDVDQTtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBTTUFMTCBRO0xsOzA7TDs8Zm9udD4gMDA3MTs7OztOOzs7OzsKKzFENUNCO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIFNNQUxMIFI7TGw7MDtMOzxmb250PiAwMDcyOzs7O047Ozs7OworMUQ1Q0M7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgU01BTEwgUztMbDswO0w7PGZvbnQ+IDAwNzM7Ozs7Tjs7Ozs7CisxRDVDRDtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBTTUFMTCBUO0xsOzA7TDs8Zm9udD4gMDA3NDs7OztOOzs7OzsKKzFENUNFO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIFNNQUxMIFU7TGw7MDtMOzxmb250PiAwMDc1Ozs7O047Ozs7OworMUQ1Q0Y7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgU01BTEwgVjtMbDswO0w7PGZvbnQ+IDAwNzY7Ozs7Tjs7Ozs7CisxRDVEMDtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBTTUFMTCBXO0xsOzA7TDs8Zm9udD4gMDA3Nzs7OztOOzs7OzsKKzFENUQxO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIFNNQUxMIFg7TGw7MDtMOzxmb250PiAwMDc4Ozs7O047Ozs7OworMUQ1RDI7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgU01BTEwgWTtMbDswO0w7PGZvbnQ+IDAwNzk7Ozs7Tjs7Ozs7CisxRDVEMztNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBTTUFMTCBaO0xsOzA7TDs8Zm9udD4gMDA3QTs7OztOOzs7OzsKKzFENUQ0O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgQ0FQSVRBTCBBO0x1OzA7TDs8Zm9udD4gMDA0MTs7OztOOzs7OzsKKzFENUQ1O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgQ0FQSVRBTCBCO0x1OzA7TDs8Zm9udD4gMDA0Mjs7OztOOzs7OzsKKzFENUQ2O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgQ0FQSVRBTCBDO0x1OzA7TDs8Zm9udD4gMDA0Mzs7OztOOzs7OzsKKzFENUQ3O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgQ0FQSVRBTCBEO0x1OzA7TDs8Zm9udD4gMDA0NDs7OztOOzs7OzsKKzFENUQ4O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgQ0FQSVRBTCBFO0x1OzA7TDs8Zm9udD4gMDA0NTs7OztOOzs7OzsKKzFENUQ5O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgQ0FQSVRBTCBGO0x1OzA7TDs8Zm9udD4gMDA0Njs7OztOOzs7OzsKKzFENURBO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgQ0FQSVRBTCBHO0x1OzA7TDs8Zm9udD4gMDA0Nzs7OztOOzs7OzsKKzFENURCO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgQ0FQSVRBTCBIO0x1OzA7TDs8Zm9udD4gMDA0ODs7OztOOzs7OzsKKzFENURDO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgQ0FQSVRBTCBJO0x1OzA7TDs8Zm9udD4gMDA0OTs7OztOOzs7OzsKKzFENUREO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgQ0FQSVRBTCBKO0x1OzA7TDs8Zm9udD4gMDA0QTs7OztOOzs7OzsKKzFENURFO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgQ0FQSVRBTCBLO0x1OzA7TDs8Zm9udD4gMDA0Qjs7OztOOzs7OzsKKzFENURGO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgQ0FQSVRBTCBMO0x1OzA7TDs8Zm9udD4gMDA0Qzs7OztOOzs7OzsKKzFENUUwO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgQ0FQSVRBTCBNO0x1OzA7TDs8Zm9udD4gMDA0RDs7OztOOzs7OzsKKzFENUUxO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgQ0FQSVRBTCBOO0x1OzA7TDs8Zm9udD4gMDA0RTs7OztOOzs7OzsKKzFENUUyO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgQ0FQSVRBTCBPO0x1OzA7TDs8Zm9udD4gMDA0Rjs7OztOOzs7OzsKKzFENUUzO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgQ0FQSVRBTCBQO0x1OzA7TDs8Zm9udD4gMDA1MDs7OztOOzs7OzsKKzFENUU0O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgQ0FQSVRBTCBRO0x1OzA7TDs8Zm9udD4gMDA1MTs7OztOOzs7OzsKKzFENUU1O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgQ0FQSVRBTCBSO0x1OzA7TDs8Zm9udD4gMDA1Mjs7OztOOzs7OzsKKzFENUU2O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgQ0FQSVRBTCBTO0x1OzA7TDs8Zm9udD4gMDA1Mzs7OztOOzs7OzsKKzFENUU3O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgQ0FQSVRBTCBUO0x1OzA7TDs8Zm9udD4gMDA1NDs7OztOOzs7OzsKKzFENUU4O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgQ0FQSVRBTCBVO0x1OzA7TDs8Zm9udD4gMDA1NTs7OztOOzs7OzsKKzFENUU5O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgQ0FQSVRBTCBWO0x1OzA7TDs8Zm9udD4gMDA1Njs7OztOOzs7OzsKKzFENUVBO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgQ0FQSVRBTCBXO0x1OzA7TDs8Zm9udD4gMDA1Nzs7OztOOzs7OzsKKzFENUVCO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgQ0FQSVRBTCBYO0x1OzA7TDs8Zm9udD4gMDA1ODs7OztOOzs7OzsKKzFENUVDO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgQ0FQSVRBTCBZO0x1OzA7TDs8Zm9udD4gMDA1OTs7OztOOzs7OzsKKzFENUVEO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgQ0FQSVRBTCBaO0x1OzA7TDs8Zm9udD4gMDA1QTs7OztOOzs7OzsKKzFENUVFO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgU01BTEwgQTtMbDswO0w7PGZvbnQ+IDAwNjE7Ozs7Tjs7Ozs7CisxRDVFRjtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIFNNQUxMIEI7TGw7MDtMOzxmb250PiAwMDYyOzs7O047Ozs7OworMUQ1RjA7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBTTUFMTCBDO0xsOzA7TDs8Zm9udD4gMDA2Mzs7OztOOzs7OzsKKzFENUYxO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgU01BTEwgRDtMbDswO0w7PGZvbnQ+IDAwNjQ7Ozs7Tjs7Ozs7CisxRDVGMjtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIFNNQUxMIEU7TGw7MDtMOzxmb250PiAwMDY1Ozs7O047Ozs7OworMUQ1RjM7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBTTUFMTCBGO0xsOzA7TDs8Zm9udD4gMDA2Njs7OztOOzs7OzsKKzFENUY0O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgU01BTEwgRztMbDswO0w7PGZvbnQ+IDAwNjc7Ozs7Tjs7Ozs7CisxRDVGNTtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIFNNQUxMIEg7TGw7MDtMOzxmb250PiAwMDY4Ozs7O047Ozs7OworMUQ1RjY7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBTTUFMTCBJO0xsOzA7TDs8Zm9udD4gMDA2OTs7OztOOzs7OzsKKzFENUY3O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgU01BTEwgSjtMbDswO0w7PGZvbnQ+IDAwNkE7Ozs7Tjs7Ozs7CisxRDVGODtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIFNNQUxMIEs7TGw7MDtMOzxmb250PiAwMDZCOzs7O047Ozs7OworMUQ1Rjk7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBTTUFMTCBMO0xsOzA7TDs8Zm9udD4gMDA2Qzs7OztOOzs7OzsKKzFENUZBO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgU01BTEwgTTtMbDswO0w7PGZvbnQ+IDAwNkQ7Ozs7Tjs7Ozs7CisxRDVGQjtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIFNNQUxMIE47TGw7MDtMOzxmb250PiAwMDZFOzs7O047Ozs7OworMUQ1RkM7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBTTUFMTCBPO0xsOzA7TDs8Zm9udD4gMDA2Rjs7OztOOzs7OzsKKzFENUZEO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgU01BTEwgUDtMbDswO0w7PGZvbnQ+IDAwNzA7Ozs7Tjs7Ozs7CisxRDVGRTtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIFNNQUxMIFE7TGw7MDtMOzxmb250PiAwMDcxOzs7O047Ozs7OworMUQ1RkY7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBTTUFMTCBSO0xsOzA7TDs8Zm9udD4gMDA3Mjs7OztOOzs7OzsKKzFENjAwO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgU01BTEwgUztMbDswO0w7PGZvbnQ+IDAwNzM7Ozs7Tjs7Ozs7CisxRDYwMTtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIFNNQUxMIFQ7TGw7MDtMOzxmb250PiAwMDc0Ozs7O047Ozs7OworMUQ2MDI7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBTTUFMTCBVO0xsOzA7TDs8Zm9udD4gMDA3NTs7OztOOzs7OzsKKzFENjAzO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgU01BTEwgVjtMbDswO0w7PGZvbnQ+IDAwNzY7Ozs7Tjs7Ozs7CisxRDYwNDtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIFNNQUxMIFc7TGw7MDtMOzxmb250PiAwMDc3Ozs7O047Ozs7OworMUQ2MDU7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBTTUFMTCBYO0xsOzA7TDs8Zm9udD4gMDA3ODs7OztOOzs7OzsKKzFENjA2O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgU01BTEwgWTtMbDswO0w7PGZvbnQ+IDAwNzk7Ozs7Tjs7Ozs7CisxRDYwNztNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIFNNQUxMIFo7TGw7MDtMOzxmb250PiAwMDdBOzs7O047Ozs7OworMUQ2MDg7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgSVRBTElDIENBUElUQUwgQTtMdTswO0w7PGZvbnQ+IDAwNDE7Ozs7Tjs7Ozs7CisxRDYwOTtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBJVEFMSUMgQ0FQSVRBTCBCO0x1OzA7TDs8Zm9udD4gMDA0Mjs7OztOOzs7OzsKKzFENjBBO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIElUQUxJQyBDQVBJVEFMIEM7THU7MDtMOzxmb250PiAwMDQzOzs7O047Ozs7OworMUQ2MEI7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgSVRBTElDIENBUElUQUwgRDtMdTswO0w7PGZvbnQ+IDAwNDQ7Ozs7Tjs7Ozs7CisxRDYwQztNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBJVEFMSUMgQ0FQSVRBTCBFO0x1OzA7TDs8Zm9udD4gMDA0NTs7OztOOzs7OzsKKzFENjBEO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIElUQUxJQyBDQVBJVEFMIEY7THU7MDtMOzxmb250PiAwMDQ2Ozs7O047Ozs7OworMUQ2MEU7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgSVRBTElDIENBUElUQUwgRztMdTswO0w7PGZvbnQ+IDAwNDc7Ozs7Tjs7Ozs7CisxRDYwRjtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBJVEFMSUMgQ0FQSVRBTCBIO0x1OzA7TDs8Zm9udD4gMDA0ODs7OztOOzs7OzsKKzFENjEwO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIElUQUxJQyBDQVBJVEFMIEk7THU7MDtMOzxmb250PiAwMDQ5Ozs7O047Ozs7OworMUQ2MTE7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgSVRBTElDIENBUElUQUwgSjtMdTswO0w7PGZvbnQ+IDAwNEE7Ozs7Tjs7Ozs7CisxRDYxMjtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBJVEFMSUMgQ0FQSVRBTCBLO0x1OzA7TDs8Zm9udD4gMDA0Qjs7OztOOzs7OzsKKzFENjEzO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIElUQUxJQyBDQVBJVEFMIEw7THU7MDtMOzxmb250PiAwMDRDOzs7O047Ozs7OworMUQ2MTQ7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgSVRBTElDIENBUElUQUwgTTtMdTswO0w7PGZvbnQ+IDAwNEQ7Ozs7Tjs7Ozs7CisxRDYxNTtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBJVEFMSUMgQ0FQSVRBTCBOO0x1OzA7TDs8Zm9udD4gMDA0RTs7OztOOzs7OzsKKzFENjE2O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIElUQUxJQyBDQVBJVEFMIE87THU7MDtMOzxmb250PiAwMDRGOzs7O047Ozs7OworMUQ2MTc7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgSVRBTElDIENBUElUQUwgUDtMdTswO0w7PGZvbnQ+IDAwNTA7Ozs7Tjs7Ozs7CisxRDYxODtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBJVEFMSUMgQ0FQSVRBTCBRO0x1OzA7TDs8Zm9udD4gMDA1MTs7OztOOzs7OzsKKzFENjE5O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIElUQUxJQyBDQVBJVEFMIFI7THU7MDtMOzxmb250PiAwMDUyOzs7O047Ozs7OworMUQ2MUE7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgSVRBTElDIENBUElUQUwgUztMdTswO0w7PGZvbnQ+IDAwNTM7Ozs7Tjs7Ozs7CisxRDYxQjtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBJVEFMSUMgQ0FQSVRBTCBUO0x1OzA7TDs8Zm9udD4gMDA1NDs7OztOOzs7OzsKKzFENjFDO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIElUQUxJQyBDQVBJVEFMIFU7THU7MDtMOzxmb250PiAwMDU1Ozs7O047Ozs7OworMUQ2MUQ7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgSVRBTElDIENBUElUQUwgVjtMdTswO0w7PGZvbnQ+IDAwNTY7Ozs7Tjs7Ozs7CisxRDYxRTtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBJVEFMSUMgQ0FQSVRBTCBXO0x1OzA7TDs8Zm9udD4gMDA1Nzs7OztOOzs7OzsKKzFENjFGO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIElUQUxJQyBDQVBJVEFMIFg7THU7MDtMOzxmb250PiAwMDU4Ozs7O047Ozs7OworMUQ2MjA7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgSVRBTElDIENBUElUQUwgWTtMdTswO0w7PGZvbnQ+IDAwNTk7Ozs7Tjs7Ozs7CisxRDYyMTtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBJVEFMSUMgQ0FQSVRBTCBaO0x1OzA7TDs8Zm9udD4gMDA1QTs7OztOOzs7OzsKKzFENjIyO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIElUQUxJQyBTTUFMTCBBO0xsOzA7TDs8Zm9udD4gMDA2MTs7OztOOzs7OzsKKzFENjIzO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIElUQUxJQyBTTUFMTCBCO0xsOzA7TDs8Zm9udD4gMDA2Mjs7OztOOzs7OzsKKzFENjI0O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIElUQUxJQyBTTUFMTCBDO0xsOzA7TDs8Zm9udD4gMDA2Mzs7OztOOzs7OzsKKzFENjI1O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIElUQUxJQyBTTUFMTCBEO0xsOzA7TDs8Zm9udD4gMDA2NDs7OztOOzs7OzsKKzFENjI2O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIElUQUxJQyBTTUFMTCBFO0xsOzA7TDs8Zm9udD4gMDA2NTs7OztOOzs7OzsKKzFENjI3O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIElUQUxJQyBTTUFMTCBGO0xsOzA7TDs8Zm9udD4gMDA2Njs7OztOOzs7OzsKKzFENjI4O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIElUQUxJQyBTTUFMTCBHO0xsOzA7TDs8Zm9udD4gMDA2Nzs7OztOOzs7OzsKKzFENjI5O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIElUQUxJQyBTTUFMTCBIO0xsOzA7TDs8Zm9udD4gMDA2ODs7OztOOzs7OzsKKzFENjJBO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIElUQUxJQyBTTUFMTCBJO0xsOzA7TDs8Zm9udD4gMDA2OTs7OztOOzs7OzsKKzFENjJCO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIElUQUxJQyBTTUFMTCBKO0xsOzA7TDs8Zm9udD4gMDA2QTs7OztOOzs7OzsKKzFENjJDO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIElUQUxJQyBTTUFMTCBLO0xsOzA7TDs8Zm9udD4gMDA2Qjs7OztOOzs7OzsKKzFENjJEO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIElUQUxJQyBTTUFMTCBMO0xsOzA7TDs8Zm9udD4gMDA2Qzs7OztOOzs7OzsKKzFENjJFO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIElUQUxJQyBTTUFMTCBNO0xsOzA7TDs8Zm9udD4gMDA2RDs7OztOOzs7OzsKKzFENjJGO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIElUQUxJQyBTTUFMTCBOO0xsOzA7TDs8Zm9udD4gMDA2RTs7OztOOzs7OzsKKzFENjMwO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIElUQUxJQyBTTUFMTCBPO0xsOzA7TDs8Zm9udD4gMDA2Rjs7OztOOzs7OzsKKzFENjMxO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIElUQUxJQyBTTUFMTCBQO0xsOzA7TDs8Zm9udD4gMDA3MDs7OztOOzs7OzsKKzFENjMyO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIElUQUxJQyBTTUFMTCBRO0xsOzA7TDs8Zm9udD4gMDA3MTs7OztOOzs7OzsKKzFENjMzO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIElUQUxJQyBTTUFMTCBSO0xsOzA7TDs8Zm9udD4gMDA3Mjs7OztOOzs7OzsKKzFENjM0O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIElUQUxJQyBTTUFMTCBTO0xsOzA7TDs8Zm9udD4gMDA3Mzs7OztOOzs7OzsKKzFENjM1O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIElUQUxJQyBTTUFMTCBUO0xsOzA7TDs8Zm9udD4gMDA3NDs7OztOOzs7OzsKKzFENjM2O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIElUQUxJQyBTTUFMTCBVO0xsOzA7TDs8Zm9udD4gMDA3NTs7OztOOzs7OzsKKzFENjM3O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIElUQUxJQyBTTUFMTCBWO0xsOzA7TDs8Zm9udD4gMDA3Njs7OztOOzs7OzsKKzFENjM4O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIElUQUxJQyBTTUFMTCBXO0xsOzA7TDs8Zm9udD4gMDA3Nzs7OztOOzs7OzsKKzFENjM5O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIElUQUxJQyBTTUFMTCBYO0xsOzA7TDs8Zm9udD4gMDA3ODs7OztOOzs7OzsKKzFENjNBO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIElUQUxJQyBTTUFMTCBZO0xsOzA7TDs8Zm9udD4gMDA3OTs7OztOOzs7OzsKKzFENjNCO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIElUQUxJQyBTTUFMTCBaO0xsOzA7TDs8Zm9udD4gMDA3QTs7OztOOzs7OzsKKzFENjNDO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgSVRBTElDIENBUElUQUwgQTtMdTswO0w7PGZvbnQ+IDAwNDE7Ozs7Tjs7Ozs7CisxRDYzRDtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIElUQUxJQyBDQVBJVEFMIEI7THU7MDtMOzxmb250PiAwMDQyOzs7O047Ozs7OworMUQ2M0U7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgQ0FQSVRBTCBDO0x1OzA7TDs8Zm9udD4gMDA0Mzs7OztOOzs7OzsKKzFENjNGO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgSVRBTElDIENBUElUQUwgRDtMdTswO0w7PGZvbnQ+IDAwNDQ7Ozs7Tjs7Ozs7CisxRDY0MDtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIElUQUxJQyBDQVBJVEFMIEU7THU7MDtMOzxmb250PiAwMDQ1Ozs7O047Ozs7OworMUQ2NDE7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgQ0FQSVRBTCBGO0x1OzA7TDs8Zm9udD4gMDA0Njs7OztOOzs7OzsKKzFENjQyO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgSVRBTElDIENBUElUQUwgRztMdTswO0w7PGZvbnQ+IDAwNDc7Ozs7Tjs7Ozs7CisxRDY0MztNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIElUQUxJQyBDQVBJVEFMIEg7THU7MDtMOzxmb250PiAwMDQ4Ozs7O047Ozs7OworMUQ2NDQ7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgQ0FQSVRBTCBJO0x1OzA7TDs8Zm9udD4gMDA0OTs7OztOOzs7OzsKKzFENjQ1O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgSVRBTElDIENBUElUQUwgSjtMdTswO0w7PGZvbnQ+IDAwNEE7Ozs7Tjs7Ozs7CisxRDY0NjtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIElUQUxJQyBDQVBJVEFMIEs7THU7MDtMOzxmb250PiAwMDRCOzs7O047Ozs7OworMUQ2NDc7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgQ0FQSVRBTCBMO0x1OzA7TDs8Zm9udD4gMDA0Qzs7OztOOzs7OzsKKzFENjQ4O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgSVRBTElDIENBUElUQUwgTTtMdTswO0w7PGZvbnQ+IDAwNEQ7Ozs7Tjs7Ozs7CisxRDY0OTtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIElUQUxJQyBDQVBJVEFMIE47THU7MDtMOzxmb250PiAwMDRFOzs7O047Ozs7OworMUQ2NEE7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgQ0FQSVRBTCBPO0x1OzA7TDs8Zm9udD4gMDA0Rjs7OztOOzs7OzsKKzFENjRCO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgSVRBTElDIENBUElUQUwgUDtMdTswO0w7PGZvbnQ+IDAwNTA7Ozs7Tjs7Ozs7CisxRDY0QztNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIElUQUxJQyBDQVBJVEFMIFE7THU7MDtMOzxmb250PiAwMDUxOzs7O047Ozs7OworMUQ2NEQ7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgQ0FQSVRBTCBSO0x1OzA7TDs8Zm9udD4gMDA1Mjs7OztOOzs7OzsKKzFENjRFO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgSVRBTElDIENBUElUQUwgUztMdTswO0w7PGZvbnQ+IDAwNTM7Ozs7Tjs7Ozs7CisxRDY0RjtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIElUQUxJQyBDQVBJVEFMIFQ7THU7MDtMOzxmb250PiAwMDU0Ozs7O047Ozs7OworMUQ2NTA7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgQ0FQSVRBTCBVO0x1OzA7TDs8Zm9udD4gMDA1NTs7OztOOzs7OzsKKzFENjUxO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgSVRBTElDIENBUElUQUwgVjtMdTswO0w7PGZvbnQ+IDAwNTY7Ozs7Tjs7Ozs7CisxRDY1MjtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIElUQUxJQyBDQVBJVEFMIFc7THU7MDtMOzxmb250PiAwMDU3Ozs7O047Ozs7OworMUQ2NTM7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgQ0FQSVRBTCBYO0x1OzA7TDs8Zm9udD4gMDA1ODs7OztOOzs7OzsKKzFENjU0O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgSVRBTElDIENBUElUQUwgWTtMdTswO0w7PGZvbnQ+IDAwNTk7Ozs7Tjs7Ozs7CisxRDY1NTtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIElUQUxJQyBDQVBJVEFMIFo7THU7MDtMOzxmb250PiAwMDVBOzs7O047Ozs7OworMUQ2NTY7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgU01BTEwgQTtMbDswO0w7PGZvbnQ+IDAwNjE7Ozs7Tjs7Ozs7CisxRDY1NztNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIElUQUxJQyBTTUFMTCBCO0xsOzA7TDs8Zm9udD4gMDA2Mjs7OztOOzs7OzsKKzFENjU4O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgSVRBTElDIFNNQUxMIEM7TGw7MDtMOzxmb250PiAwMDYzOzs7O047Ozs7OworMUQ2NTk7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgU01BTEwgRDtMbDswO0w7PGZvbnQ+IDAwNjQ7Ozs7Tjs7Ozs7CisxRDY1QTtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIElUQUxJQyBTTUFMTCBFO0xsOzA7TDs8Zm9udD4gMDA2NTs7OztOOzs7OzsKKzFENjVCO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgSVRBTElDIFNNQUxMIEY7TGw7MDtMOzxmb250PiAwMDY2Ozs7O047Ozs7OworMUQ2NUM7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgU01BTEwgRztMbDswO0w7PGZvbnQ+IDAwNjc7Ozs7Tjs7Ozs7CisxRDY1RDtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIElUQUxJQyBTTUFMTCBIO0xsOzA7TDs8Zm9udD4gMDA2ODs7OztOOzs7OzsKKzFENjVFO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgSVRBTElDIFNNQUxMIEk7TGw7MDtMOzxmb250PiAwMDY5Ozs7O047Ozs7OworMUQ2NUY7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgU01BTEwgSjtMbDswO0w7PGZvbnQ+IDAwNkE7Ozs7Tjs7Ozs7CisxRDY2MDtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIElUQUxJQyBTTUFMTCBLO0xsOzA7TDs8Zm9udD4gMDA2Qjs7OztOOzs7OzsKKzFENjYxO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgSVRBTElDIFNNQUxMIEw7TGw7MDtMOzxmb250PiAwMDZDOzs7O047Ozs7OworMUQ2NjI7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgU01BTEwgTTtMbDswO0w7PGZvbnQ+IDAwNkQ7Ozs7Tjs7Ozs7CisxRDY2MztNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIElUQUxJQyBTTUFMTCBOO0xsOzA7TDs8Zm9udD4gMDA2RTs7OztOOzs7OzsKKzFENjY0O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgSVRBTElDIFNNQUxMIE87TGw7MDtMOzxmb250PiAwMDZGOzs7O047Ozs7OworMUQ2NjU7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgU01BTEwgUDtMbDswO0w7PGZvbnQ+IDAwNzA7Ozs7Tjs7Ozs7CisxRDY2NjtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIElUQUxJQyBTTUFMTCBRO0xsOzA7TDs8Zm9udD4gMDA3MTs7OztOOzs7OzsKKzFENjY3O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgSVRBTElDIFNNQUxMIFI7TGw7MDtMOzxmb250PiAwMDcyOzs7O047Ozs7OworMUQ2Njg7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgU01BTEwgUztMbDswO0w7PGZvbnQ+IDAwNzM7Ozs7Tjs7Ozs7CisxRDY2OTtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIElUQUxJQyBTTUFMTCBUO0xsOzA7TDs8Zm9udD4gMDA3NDs7OztOOzs7OzsKKzFENjZBO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgSVRBTElDIFNNQUxMIFU7TGw7MDtMOzxmb250PiAwMDc1Ozs7O047Ozs7OworMUQ2NkI7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgU01BTEwgVjtMbDswO0w7PGZvbnQ+IDAwNzY7Ozs7Tjs7Ozs7CisxRDY2QztNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIElUQUxJQyBTTUFMTCBXO0xsOzA7TDs8Zm9udD4gMDA3Nzs7OztOOzs7OzsKKzFENjZEO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgSVRBTElDIFNNQUxMIFg7TGw7MDtMOzxmb250PiAwMDc4Ozs7O047Ozs7OworMUQ2NkU7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgU01BTEwgWTtMbDswO0w7PGZvbnQ+IDAwNzk7Ozs7Tjs7Ozs7CisxRDY2RjtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIElUQUxJQyBTTUFMTCBaO0xsOzA7TDs8Zm9udD4gMDA3QTs7OztOOzs7OzsKKzFENjcwO01BVEhFTUFUSUNBTCBNT05PU1BBQ0UgQ0FQSVRBTCBBO0x1OzA7TDs8Zm9udD4gMDA0MTs7OztOOzs7OzsKKzFENjcxO01BVEhFTUFUSUNBTCBNT05PU1BBQ0UgQ0FQSVRBTCBCO0x1OzA7TDs8Zm9udD4gMDA0Mjs7OztOOzs7OzsKKzFENjcyO01BVEhFTUFUSUNBTCBNT05PU1BBQ0UgQ0FQSVRBTCBDO0x1OzA7TDs8Zm9udD4gMDA0Mzs7OztOOzs7OzsKKzFENjczO01BVEhFTUFUSUNBTCBNT05PU1BBQ0UgQ0FQSVRBTCBEO0x1OzA7TDs8Zm9udD4gMDA0NDs7OztOOzs7OzsKKzFENjc0O01BVEhFTUFUSUNBTCBNT05PU1BBQ0UgQ0FQSVRBTCBFO0x1OzA7TDs8Zm9udD4gMDA0NTs7OztOOzs7OzsKKzFENjc1O01BVEhFTUFUSUNBTCBNT05PU1BBQ0UgQ0FQSVRBTCBGO0x1OzA7TDs8Zm9udD4gMDA0Njs7OztOOzs7OzsKKzFENjc2O01BVEhFTUFUSUNBTCBNT05PU1BBQ0UgQ0FQSVRBTCBHO0x1OzA7TDs8Zm9udD4gMDA0Nzs7OztOOzs7OzsKKzFENjc3O01BVEhFTUFUSUNBTCBNT05PU1BBQ0UgQ0FQSVRBTCBIO0x1OzA7TDs8Zm9udD4gMDA0ODs7OztOOzs7OzsKKzFENjc4O01BVEhFTUFUSUNBTCBNT05PU1BBQ0UgQ0FQSVRBTCBJO0x1OzA7TDs8Zm9udD4gMDA0OTs7OztOOzs7OzsKKzFENjc5O01BVEhFTUFUSUNBTCBNT05PU1BBQ0UgQ0FQSVRBTCBKO0x1OzA7TDs8Zm9udD4gMDA0QTs7OztOOzs7OzsKKzFENjdBO01BVEhFTUFUSUNBTCBNT05PU1BBQ0UgQ0FQSVRBTCBLO0x1OzA7TDs8Zm9udD4gMDA0Qjs7OztOOzs7OzsKKzFENjdCO01BVEhFTUFUSUNBTCBNT05PU1BBQ0UgQ0FQSVRBTCBMO0x1OzA7TDs8Zm9udD4gMDA0Qzs7OztOOzs7OzsKKzFENjdDO01BVEhFTUFUSUNBTCBNT05PU1BBQ0UgQ0FQSVRBTCBNO0x1OzA7TDs8Zm9udD4gMDA0RDs7OztOOzs7OzsKKzFENjdEO01BVEhFTUFUSUNBTCBNT05PU1BBQ0UgQ0FQSVRBTCBOO0x1OzA7TDs8Zm9udD4gMDA0RTs7OztOOzs7OzsKKzFENjdFO01BVEhFTUFUSUNBTCBNT05PU1BBQ0UgQ0FQSVRBTCBPO0x1OzA7TDs8Zm9udD4gMDA0Rjs7OztOOzs7OzsKKzFENjdGO01BVEhFTUFUSUNBTCBNT05PU1BBQ0UgQ0FQSVRBTCBQO0x1OzA7TDs8Zm9udD4gMDA1MDs7OztOOzs7OzsKKzFENjgwO01BVEhFTUFUSUNBTCBNT05PU1BBQ0UgQ0FQSVRBTCBRO0x1OzA7TDs8Zm9udD4gMDA1MTs7OztOOzs7OzsKKzFENjgxO01BVEhFTUFUSUNBTCBNT05PU1BBQ0UgQ0FQSVRBTCBSO0x1OzA7TDs8Zm9udD4gMDA1Mjs7OztOOzs7OzsKKzFENjgyO01BVEhFTUFUSUNBTCBNT05PU1BBQ0UgQ0FQSVRBTCBTO0x1OzA7TDs8Zm9udD4gMDA1Mzs7OztOOzs7OzsKKzFENjgzO01BVEhFTUFUSUNBTCBNT05PU1BBQ0UgQ0FQSVRBTCBUO0x1OzA7TDs8Zm9udD4gMDA1NDs7OztOOzs7OzsKKzFENjg0O01BVEhFTUFUSUNBTCBNT05PU1BBQ0UgQ0FQSVRBTCBVO0x1OzA7TDs8Zm9udD4gMDA1NTs7OztOOzs7OzsKKzFENjg1O01BVEhFTUFUSUNBTCBNT05PU1BBQ0UgQ0FQSVRBTCBWO0x1OzA7TDs8Zm9udD4gMDA1Njs7OztOOzs7OzsKKzFENjg2O01BVEhFTUFUSUNBTCBNT05PU1BBQ0UgQ0FQSVRBTCBXO0x1OzA7TDs8Zm9udD4gMDA1Nzs7OztOOzs7OzsKKzFENjg3O01BVEhFTUFUSUNBTCBNT05PU1BBQ0UgQ0FQSVRBTCBYO0x1OzA7TDs8Zm9udD4gMDA1ODs7OztOOzs7OzsKKzFENjg4O01BVEhFTUFUSUNBTCBNT05PU1BBQ0UgQ0FQSVRBTCBZO0x1OzA7TDs8Zm9udD4gMDA1OTs7OztOOzs7OzsKKzFENjg5O01BVEhFTUFUSUNBTCBNT05PU1BBQ0UgQ0FQSVRBTCBaO0x1OzA7TDs8Zm9udD4gMDA1QTs7OztOOzs7OzsKKzFENjhBO01BVEhFTUFUSUNBTCBNT05PU1BBQ0UgU01BTEwgQTtMbDswO0w7PGZvbnQ+IDAwNjE7Ozs7Tjs7Ozs7CisxRDY4QjtNQVRIRU1BVElDQUwgTU9OT1NQQUNFIFNNQUxMIEI7TGw7MDtMOzxmb250PiAwMDYyOzs7O047Ozs7OworMUQ2OEM7TUFUSEVNQVRJQ0FMIE1PTk9TUEFDRSBTTUFMTCBDO0xsOzA7TDs8Zm9udD4gMDA2Mzs7OztOOzs7OzsKKzFENjhEO01BVEhFTUFUSUNBTCBNT05PU1BBQ0UgU01BTEwgRDtMbDswO0w7PGZvbnQ+IDAwNjQ7Ozs7Tjs7Ozs7CisxRDY4RTtNQVRIRU1BVElDQUwgTU9OT1NQQUNFIFNNQUxMIEU7TGw7MDtMOzxmb250PiAwMDY1Ozs7O047Ozs7OworMUQ2OEY7TUFUSEVNQVRJQ0FMIE1PTk9TUEFDRSBTTUFMTCBGO0xsOzA7TDs8Zm9udD4gMDA2Njs7OztOOzs7OzsKKzFENjkwO01BVEhFTUFUSUNBTCBNT05PU1BBQ0UgU01BTEwgRztMbDswO0w7PGZvbnQ+IDAwNjc7Ozs7Tjs7Ozs7CisxRDY5MTtNQVRIRU1BVElDQUwgTU9OT1NQQUNFIFNNQUxMIEg7TGw7MDtMOzxmb250PiAwMDY4Ozs7O047Ozs7OworMUQ2OTI7TUFUSEVNQVRJQ0FMIE1PTk9TUEFDRSBTTUFMTCBJO0xsOzA7TDs8Zm9udD4gMDA2OTs7OztOOzs7OzsKKzFENjkzO01BVEhFTUFUSUNBTCBNT05PU1BBQ0UgU01BTEwgSjtMbDswO0w7PGZvbnQ+IDAwNkE7Ozs7Tjs7Ozs7CisxRDY5NDtNQVRIRU1BVElDQUwgTU9OT1NQQUNFIFNNQUxMIEs7TGw7MDtMOzxmb250PiAwMDZCOzs7O047Ozs7OworMUQ2OTU7TUFUSEVNQVRJQ0FMIE1PTk9TUEFDRSBTTUFMTCBMO0xsOzA7TDs8Zm9udD4gMDA2Qzs7OztOOzs7OzsKKzFENjk2O01BVEhFTUFUSUNBTCBNT05PU1BBQ0UgU01BTEwgTTtMbDswO0w7PGZvbnQ+IDAwNkQ7Ozs7Tjs7Ozs7CisxRDY5NztNQVRIRU1BVElDQUwgTU9OT1NQQUNFIFNNQUxMIE47TGw7MDtMOzxmb250PiAwMDZFOzs7O047Ozs7OworMUQ2OTg7TUFUSEVNQVRJQ0FMIE1PTk9TUEFDRSBTTUFMTCBPO0xsOzA7TDs8Zm9udD4gMDA2Rjs7OztOOzs7OzsKKzFENjk5O01BVEhFTUFUSUNBTCBNT05PU1BBQ0UgU01BTEwgUDtMbDswO0w7PGZvbnQ+IDAwNzA7Ozs7Tjs7Ozs7CisxRDY5QTtNQVRIRU1BVElDQUwgTU9OT1NQQUNFIFNNQUxMIFE7TGw7MDtMOzxmb250PiAwMDcxOzs7O047Ozs7OworMUQ2OUI7TUFUSEVNQVRJQ0FMIE1PTk9TUEFDRSBTTUFMTCBSO0xsOzA7TDs8Zm9udD4gMDA3Mjs7OztOOzs7OzsKKzFENjlDO01BVEhFTUFUSUNBTCBNT05PU1BBQ0UgU01BTEwgUztMbDswO0w7PGZvbnQ+IDAwNzM7Ozs7Tjs7Ozs7CisxRDY5RDtNQVRIRU1BVElDQUwgTU9OT1NQQUNFIFNNQUxMIFQ7TGw7MDtMOzxmb250PiAwMDc0Ozs7O047Ozs7OworMUQ2OUU7TUFUSEVNQVRJQ0FMIE1PTk9TUEFDRSBTTUFMTCBVO0xsOzA7TDs8Zm9udD4gMDA3NTs7OztOOzs7OzsKKzFENjlGO01BVEhFTUFUSUNBTCBNT05PU1BBQ0UgU01BTEwgVjtMbDswO0w7PGZvbnQ+IDAwNzY7Ozs7Tjs7Ozs7CisxRDZBMDtNQVRIRU1BVElDQUwgTU9OT1NQQUNFIFNNQUxMIFc7TGw7MDtMOzxmb250PiAwMDc3Ozs7O047Ozs7OworMUQ2QTE7TUFUSEVNQVRJQ0FMIE1PTk9TUEFDRSBTTUFMTCBYO0xsOzA7TDs8Zm9udD4gMDA3ODs7OztOOzs7OzsKKzFENkEyO01BVEhFTUFUSUNBTCBNT05PU1BBQ0UgU01BTEwgWTtMbDswO0w7PGZvbnQ+IDAwNzk7Ozs7Tjs7Ozs7CisxRDZBMztNQVRIRU1BVElDQUwgTU9OT1NQQUNFIFNNQUxMIFo7TGw7MDtMOzxmb250PiAwMDdBOzs7O047Ozs7OworMUQ2QTg7TUFUSEVNQVRJQ0FMIEJPTEQgQ0FQSVRBTCBBTFBIQTtMdTswO0w7PGZvbnQ+IDAzOTE7Ozs7Tjs7Ozs7CisxRDZBOTtNQVRIRU1BVElDQUwgQk9MRCBDQVBJVEFMIEJFVEE7THU7MDtMOzxmb250PiAwMzkyOzs7O047Ozs7OworMUQ2QUE7TUFUSEVNQVRJQ0FMIEJPTEQgQ0FQSVRBTCBHQU1NQTtMdTswO0w7PGZvbnQ+IDAzOTM7Ozs7Tjs7Ozs7CisxRDZBQjtNQVRIRU1BVElDQUwgQk9MRCBDQVBJVEFMIERFTFRBO0x1OzA7TDs8Zm9udD4gMDM5NDs7OztOOzs7OzsKKzFENkFDO01BVEhFTUFUSUNBTCBCT0xEIENBUElUQUwgRVBTSUxPTjtMdTswO0w7PGZvbnQ+IDAzOTU7Ozs7Tjs7Ozs7CisxRDZBRDtNQVRIRU1BVElDQUwgQk9MRCBDQVBJVEFMIFpFVEE7THU7MDtMOzxmb250PiAwMzk2Ozs7O047Ozs7OworMUQ2QUU7TUFUSEVNQVRJQ0FMIEJPTEQgQ0FQSVRBTCBFVEE7THU7MDtMOzxmb250PiAwMzk3Ozs7O047Ozs7OworMUQ2QUY7TUFUSEVNQVRJQ0FMIEJPTEQgQ0FQSVRBTCBUSEVUQTtMdTswO0w7PGZvbnQ+IDAzOTg7Ozs7Tjs7Ozs7CisxRDZCMDtNQVRIRU1BVElDQUwgQk9MRCBDQVBJVEFMIElPVEE7THU7MDtMOzxmb250PiAwMzk5Ozs7O047Ozs7OworMUQ2QjE7TUFUSEVNQVRJQ0FMIEJPTEQgQ0FQSVRBTCBLQVBQQTtMdTswO0w7PGZvbnQ+IDAzOUE7Ozs7Tjs7Ozs7CisxRDZCMjtNQVRIRU1BVElDQUwgQk9MRCBDQVBJVEFMIExBTURBO0x1OzA7TDs8Zm9udD4gMDM5Qjs7OztOOzs7OzsKKzFENkIzO01BVEhFTUFUSUNBTCBCT0xEIENBUElUQUwgTVU7THU7MDtMOzxmb250PiAwMzlDOzs7O047Ozs7OworMUQ2QjQ7TUFUSEVNQVRJQ0FMIEJPTEQgQ0FQSVRBTCBOVTtMdTswO0w7PGZvbnQ+IDAzOUQ7Ozs7Tjs7Ozs7CisxRDZCNTtNQVRIRU1BVElDQUwgQk9MRCBDQVBJVEFMIFhJO0x1OzA7TDs8Zm9udD4gMDM5RTs7OztOOzs7OzsKKzFENkI2O01BVEhFTUFUSUNBTCBCT0xEIENBUElUQUwgT01JQ1JPTjtMdTswO0w7PGZvbnQ+IDAzOUY7Ozs7Tjs7Ozs7CisxRDZCNztNQVRIRU1BVElDQUwgQk9MRCBDQVBJVEFMIFBJO0x1OzA7TDs8Zm9udD4gMDNBMDs7OztOOzs7OzsKKzFENkI4O01BVEhFTUFUSUNBTCBCT0xEIENBUElUQUwgUkhPO0x1OzA7TDs8Zm9udD4gMDNBMTs7OztOOzs7OzsKKzFENkI5O01BVEhFTUFUSUNBTCBCT0xEIENBUElUQUwgVEhFVEEgU1lNQk9MO0x1OzA7TDs8Zm9udD4gMDNGNDs7OztOOzs7OzsKKzFENkJBO01BVEhFTUFUSUNBTCBCT0xEIENBUElUQUwgU0lHTUE7THU7MDtMOzxmb250PiAwM0EzOzs7O047Ozs7OworMUQ2QkI7TUFUSEVNQVRJQ0FMIEJPTEQgQ0FQSVRBTCBUQVU7THU7MDtMOzxmb250PiAwM0E0Ozs7O047Ozs7OworMUQ2QkM7TUFUSEVNQVRJQ0FMIEJPTEQgQ0FQSVRBTCBVUFNJTE9OO0x1OzA7TDs8Zm9udD4gMDNBNTs7OztOOzs7OzsKKzFENkJEO01BVEhFTUFUSUNBTCBCT0xEIENBUElUQUwgUEhJO0x1OzA7TDs8Zm9udD4gMDNBNjs7OztOOzs7OzsKKzFENkJFO01BVEhFTUFUSUNBTCBCT0xEIENBUElUQUwgQ0hJO0x1OzA7TDs8Zm9udD4gMDNBNzs7OztOOzs7OzsKKzFENkJGO01BVEhFTUFUSUNBTCBCT0xEIENBUElUQUwgUFNJO0x1OzA7TDs8Zm9udD4gMDNBODs7OztOOzs7OzsKKzFENkMwO01BVEhFTUFUSUNBTCBCT0xEIENBUElUQUwgT01FR0E7THU7MDtMOzxmb250PiAwM0E5Ozs7O047Ozs7OworMUQ2QzE7TUFUSEVNQVRJQ0FMIEJPTEQgTkFCTEE7U207MDtMOzxmb250PiAyMjA3Ozs7O047Ozs7OworMUQ2QzI7TUFUSEVNQVRJQ0FMIEJPTEQgU01BTEwgQUxQSEE7TGw7MDtMOzxmb250PiAwM0IxOzs7O047Ozs7OworMUQ2QzM7TUFUSEVNQVRJQ0FMIEJPTEQgU01BTEwgQkVUQTtMbDswO0w7PGZvbnQ+IDAzQjI7Ozs7Tjs7Ozs7CisxRDZDNDtNQVRIRU1BVElDQUwgQk9MRCBTTUFMTCBHQU1NQTtMbDswO0w7PGZvbnQ+IDAzQjM7Ozs7Tjs7Ozs7CisxRDZDNTtNQVRIRU1BVElDQUwgQk9MRCBTTUFMTCBERUxUQTtMbDswO0w7PGZvbnQ+IDAzQjQ7Ozs7Tjs7Ozs7CisxRDZDNjtNQVRIRU1BVElDQUwgQk9MRCBTTUFMTCBFUFNJTE9OO0xsOzA7TDs8Zm9udD4gMDNCNTs7OztOOzs7OzsKKzFENkM3O01BVEhFTUFUSUNBTCBCT0xEIFNNQUxMIFpFVEE7TGw7MDtMOzxmb250PiAwM0I2Ozs7O047Ozs7OworMUQ2Qzg7TUFUSEVNQVRJQ0FMIEJPTEQgU01BTEwgRVRBO0xsOzA7TDs8Zm9udD4gMDNCNzs7OztOOzs7OzsKKzFENkM5O01BVEhFTUFUSUNBTCBCT0xEIFNNQUxMIFRIRVRBO0xsOzA7TDs8Zm9udD4gMDNCODs7OztOOzs7OzsKKzFENkNBO01BVEhFTUFUSUNBTCBCT0xEIFNNQUxMIElPVEE7TGw7MDtMOzxmb250PiAwM0I5Ozs7O047Ozs7OworMUQ2Q0I7TUFUSEVNQVRJQ0FMIEJPTEQgU01BTEwgS0FQUEE7TGw7MDtMOzxmb250PiAwM0JBOzs7O047Ozs7OworMUQ2Q0M7TUFUSEVNQVRJQ0FMIEJPTEQgU01BTEwgTEFNREE7TGw7MDtMOzxmb250PiAwM0JCOzs7O047Ozs7OworMUQ2Q0Q7TUFUSEVNQVRJQ0FMIEJPTEQgU01BTEwgTVU7TGw7MDtMOzxmb250PiAwM0JDOzs7O047Ozs7OworMUQ2Q0U7TUFUSEVNQVRJQ0FMIEJPTEQgU01BTEwgTlU7TGw7MDtMOzxmb250PiAwM0JEOzs7O047Ozs7OworMUQ2Q0Y7TUFUSEVNQVRJQ0FMIEJPTEQgU01BTEwgWEk7TGw7MDtMOzxmb250PiAwM0JFOzs7O047Ozs7OworMUQ2RDA7TUFUSEVNQVRJQ0FMIEJPTEQgU01BTEwgT01JQ1JPTjtMbDswO0w7PGZvbnQ+IDAzQkY7Ozs7Tjs7Ozs7CisxRDZEMTtNQVRIRU1BVElDQUwgQk9MRCBTTUFMTCBQSTtMbDswO0w7PGZvbnQ+IDAzQzA7Ozs7Tjs7Ozs7CisxRDZEMjtNQVRIRU1BVElDQUwgQk9MRCBTTUFMTCBSSE87TGw7MDtMOzxmb250PiAwM0MxOzs7O047Ozs7OworMUQ2RDM7TUFUSEVNQVRJQ0FMIEJPTEQgU01BTEwgRklOQUwgU0lHTUE7TGw7MDtMOzxmb250PiAwM0MyOzs7O047Ozs7OworMUQ2RDQ7TUFUSEVNQVRJQ0FMIEJPTEQgU01BTEwgU0lHTUE7TGw7MDtMOzxmb250PiAwM0MzOzs7O047Ozs7OworMUQ2RDU7TUFUSEVNQVRJQ0FMIEJPTEQgU01BTEwgVEFVO0xsOzA7TDs8Zm9udD4gMDNDNDs7OztOOzs7OzsKKzFENkQ2O01BVEhFTUFUSUNBTCBCT0xEIFNNQUxMIFVQU0lMT047TGw7MDtMOzxmb250PiAwM0M1Ozs7O047Ozs7OworMUQ2RDc7TUFUSEVNQVRJQ0FMIEJPTEQgU01BTEwgUEhJO0xsOzA7TDs8Zm9udD4gMDNDNjs7OztOOzs7OzsKKzFENkQ4O01BVEhFTUFUSUNBTCBCT0xEIFNNQUxMIENISTtMbDswO0w7PGZvbnQ+IDAzQzc7Ozs7Tjs7Ozs7CisxRDZEOTtNQVRIRU1BVElDQUwgQk9MRCBTTUFMTCBQU0k7TGw7MDtMOzxmb250PiAwM0M4Ozs7O047Ozs7OworMUQ2REE7TUFUSEVNQVRJQ0FMIEJPTEQgU01BTEwgT01FR0E7TGw7MDtMOzxmb250PiAwM0M5Ozs7O047Ozs7OworMUQ2REI7TUFUSEVNQVRJQ0FMIEJPTEQgUEFSVElBTCBESUZGRVJFTlRJQUw7U207MDtMOzxmb250PiAyMjAyOzs7O047Ozs7OworMUQ2REM7TUFUSEVNQVRJQ0FMIEJPTEQgRVBTSUxPTiBTWU1CT0w7TGw7MDtMOzxmb250PiAwM0Y1Ozs7O047Ozs7OworMUQ2REQ7TUFUSEVNQVRJQ0FMIEJPTEQgVEhFVEEgU1lNQk9MO0xsOzA7TDs8Zm9udD4gMDNEMTs7OztOOzs7OzsKKzFENkRFO01BVEhFTUFUSUNBTCBCT0xEIEtBUFBBIFNZTUJPTDtMbDswO0w7PGZvbnQ+IDAzRjA7Ozs7Tjs7Ozs7CisxRDZERjtNQVRIRU1BVElDQUwgQk9MRCBQSEkgU1lNQk9MO0xsOzA7TDs8Zm9udD4gMDNENTs7OztOOzs7OzsKKzFENkUwO01BVEhFTUFUSUNBTCBCT0xEIFJITyBTWU1CT0w7TGw7MDtMOzxmb250PiAwM0YxOzs7O047Ozs7OworMUQ2RTE7TUFUSEVNQVRJQ0FMIEJPTEQgUEkgU1lNQk9MO0xsOzA7TDs8Zm9udD4gMDNENjs7OztOOzs7OzsKKzFENkUyO01BVEhFTUFUSUNBTCBJVEFMSUMgQ0FQSVRBTCBBTFBIQTtMdTswO0w7PGZvbnQ+IDAzOTE7Ozs7Tjs7Ozs7CisxRDZFMztNQVRIRU1BVElDQUwgSVRBTElDIENBUElUQUwgQkVUQTtMdTswO0w7PGZvbnQ+IDAzOTI7Ozs7Tjs7Ozs7CisxRDZFNDtNQVRIRU1BVElDQUwgSVRBTElDIENBUElUQUwgR0FNTUE7THU7MDtMOzxmb250PiAwMzkzOzs7O047Ozs7OworMUQ2RTU7TUFUSEVNQVRJQ0FMIElUQUxJQyBDQVBJVEFMIERFTFRBO0x1OzA7TDs8Zm9udD4gMDM5NDs7OztOOzs7OzsKKzFENkU2O01BVEhFTUFUSUNBTCBJVEFMSUMgQ0FQSVRBTCBFUFNJTE9OO0x1OzA7TDs8Zm9udD4gMDM5NTs7OztOOzs7OzsKKzFENkU3O01BVEhFTUFUSUNBTCBJVEFMSUMgQ0FQSVRBTCBaRVRBO0x1OzA7TDs8Zm9udD4gMDM5Njs7OztOOzs7OzsKKzFENkU4O01BVEhFTUFUSUNBTCBJVEFMSUMgQ0FQSVRBTCBFVEE7THU7MDtMOzxmb250PiAwMzk3Ozs7O047Ozs7OworMUQ2RTk7TUFUSEVNQVRJQ0FMIElUQUxJQyBDQVBJVEFMIFRIRVRBO0x1OzA7TDs8Zm9udD4gMDM5ODs7OztOOzs7OzsKKzFENkVBO01BVEhFTUFUSUNBTCBJVEFMSUMgQ0FQSVRBTCBJT1RBO0x1OzA7TDs8Zm9udD4gMDM5OTs7OztOOzs7OzsKKzFENkVCO01BVEhFTUFUSUNBTCBJVEFMSUMgQ0FQSVRBTCBLQVBQQTtMdTswO0w7PGZvbnQ+IDAzOUE7Ozs7Tjs7Ozs7CisxRDZFQztNQVRIRU1BVElDQUwgSVRBTElDIENBUElUQUwgTEFNREE7THU7MDtMOzxmb250PiAwMzlCOzs7O047Ozs7OworMUQ2RUQ7TUFUSEVNQVRJQ0FMIElUQUxJQyBDQVBJVEFMIE1VO0x1OzA7TDs8Zm9udD4gMDM5Qzs7OztOOzs7OzsKKzFENkVFO01BVEhFTUFUSUNBTCBJVEFMSUMgQ0FQSVRBTCBOVTtMdTswO0w7PGZvbnQ+IDAzOUQ7Ozs7Tjs7Ozs7CisxRDZFRjtNQVRIRU1BVElDQUwgSVRBTElDIENBUElUQUwgWEk7THU7MDtMOzxmb250PiAwMzlFOzs7O047Ozs7OworMUQ2RjA7TUFUSEVNQVRJQ0FMIElUQUxJQyBDQVBJVEFMIE9NSUNST047THU7MDtMOzxmb250PiAwMzlGOzs7O047Ozs7OworMUQ2RjE7TUFUSEVNQVRJQ0FMIElUQUxJQyBDQVBJVEFMIFBJO0x1OzA7TDs8Zm9udD4gMDNBMDs7OztOOzs7OzsKKzFENkYyO01BVEhFTUFUSUNBTCBJVEFMSUMgQ0FQSVRBTCBSSE87THU7MDtMOzxmb250PiAwM0ExOzs7O047Ozs7OworMUQ2RjM7TUFUSEVNQVRJQ0FMIElUQUxJQyBDQVBJVEFMIFRIRVRBIFNZTUJPTDtMdTswO0w7PGZvbnQ+IDAzRjQ7Ozs7Tjs7Ozs7CisxRDZGNDtNQVRIRU1BVElDQUwgSVRBTElDIENBUElUQUwgU0lHTUE7THU7MDtMOzxmb250PiAwM0EzOzs7O047Ozs7OworMUQ2RjU7TUFUSEVNQVRJQ0FMIElUQUxJQyBDQVBJVEFMIFRBVTtMdTswO0w7PGZvbnQ+IDAzQTQ7Ozs7Tjs7Ozs7CisxRDZGNjtNQVRIRU1BVElDQUwgSVRBTElDIENBUElUQUwgVVBTSUxPTjtMdTswO0w7PGZvbnQ+IDAzQTU7Ozs7Tjs7Ozs7CisxRDZGNztNQVRIRU1BVElDQUwgSVRBTElDIENBUElUQUwgUEhJO0x1OzA7TDs8Zm9udD4gMDNBNjs7OztOOzs7OzsKKzFENkY4O01BVEhFTUFUSUNBTCBJVEFMSUMgQ0FQSVRBTCBDSEk7THU7MDtMOzxmb250PiAwM0E3Ozs7O047Ozs7OworMUQ2Rjk7TUFUSEVNQVRJQ0FMIElUQUxJQyBDQVBJVEFMIFBTSTtMdTswO0w7PGZvbnQ+IDAzQTg7Ozs7Tjs7Ozs7CisxRDZGQTtNQVRIRU1BVElDQUwgSVRBTElDIENBUElUQUwgT01FR0E7THU7MDtMOzxmb250PiAwM0E5Ozs7O047Ozs7OworMUQ2RkI7TUFUSEVNQVRJQ0FMIElUQUxJQyBOQUJMQTtTbTswO0w7PGZvbnQ+IDIyMDc7Ozs7Tjs7Ozs7CisxRDZGQztNQVRIRU1BVElDQUwgSVRBTElDIFNNQUxMIEFMUEhBO0xsOzA7TDs8Zm9udD4gMDNCMTs7OztOOzs7OzsKKzFENkZEO01BVEhFTUFUSUNBTCBJVEFMSUMgU01BTEwgQkVUQTtMbDswO0w7PGZvbnQ+IDAzQjI7Ozs7Tjs7Ozs7CisxRDZGRTtNQVRIRU1BVElDQUwgSVRBTElDIFNNQUxMIEdBTU1BO0xsOzA7TDs8Zm9udD4gMDNCMzs7OztOOzs7OzsKKzFENkZGO01BVEhFTUFUSUNBTCBJVEFMSUMgU01BTEwgREVMVEE7TGw7MDtMOzxmb250PiAwM0I0Ozs7O047Ozs7OworMUQ3MDA7TUFUSEVNQVRJQ0FMIElUQUxJQyBTTUFMTCBFUFNJTE9OO0xsOzA7TDs8Zm9udD4gMDNCNTs7OztOOzs7OzsKKzFENzAxO01BVEhFTUFUSUNBTCBJVEFMSUMgU01BTEwgWkVUQTtMbDswO0w7PGZvbnQ+IDAzQjY7Ozs7Tjs7Ozs7CisxRDcwMjtNQVRIRU1BVElDQUwgSVRBTElDIFNNQUxMIEVUQTtMbDswO0w7PGZvbnQ+IDAzQjc7Ozs7Tjs7Ozs7CisxRDcwMztNQVRIRU1BVElDQUwgSVRBTElDIFNNQUxMIFRIRVRBO0xsOzA7TDs8Zm9udD4gMDNCODs7OztOOzs7OzsKKzFENzA0O01BVEhFTUFUSUNBTCBJVEFMSUMgU01BTEwgSU9UQTtMbDswO0w7PGZvbnQ+IDAzQjk7Ozs7Tjs7Ozs7CisxRDcwNTtNQVRIRU1BVElDQUwgSVRBTElDIFNNQUxMIEtBUFBBO0xsOzA7TDs8Zm9udD4gMDNCQTs7OztOOzs7OzsKKzFENzA2O01BVEhFTUFUSUNBTCBJVEFMSUMgU01BTEwgTEFNREE7TGw7MDtMOzxmb250PiAwM0JCOzs7O047Ozs7OworMUQ3MDc7TUFUSEVNQVRJQ0FMIElUQUxJQyBTTUFMTCBNVTtMbDswO0w7PGZvbnQ+IDAzQkM7Ozs7Tjs7Ozs7CisxRDcwODtNQVRIRU1BVElDQUwgSVRBTElDIFNNQUxMIE5VO0xsOzA7TDs8Zm9udD4gMDNCRDs7OztOOzs7OzsKKzFENzA5O01BVEhFTUFUSUNBTCBJVEFMSUMgU01BTEwgWEk7TGw7MDtMOzxmb250PiAwM0JFOzs7O047Ozs7OworMUQ3MEE7TUFUSEVNQVRJQ0FMIElUQUxJQyBTTUFMTCBPTUlDUk9OO0xsOzA7TDs8Zm9udD4gMDNCRjs7OztOOzs7OzsKKzFENzBCO01BVEhFTUFUSUNBTCBJVEFMSUMgU01BTEwgUEk7TGw7MDtMOzxmb250PiAwM0MwOzs7O047Ozs7OworMUQ3MEM7TUFUSEVNQVRJQ0FMIElUQUxJQyBTTUFMTCBSSE87TGw7MDtMOzxmb250PiAwM0MxOzs7O047Ozs7OworMUQ3MEQ7TUFUSEVNQVRJQ0FMIElUQUxJQyBTTUFMTCBGSU5BTCBTSUdNQTtMbDswO0w7PGZvbnQ+IDAzQzI7Ozs7Tjs7Ozs7CisxRDcwRTtNQVRIRU1BVElDQUwgSVRBTElDIFNNQUxMIFNJR01BO0xsOzA7TDs8Zm9udD4gMDNDMzs7OztOOzs7OzsKKzFENzBGO01BVEhFTUFUSUNBTCBJVEFMSUMgU01BTEwgVEFVO0xsOzA7TDs8Zm9udD4gMDNDNDs7OztOOzs7OzsKKzFENzEwO01BVEhFTUFUSUNBTCBJVEFMSUMgU01BTEwgVVBTSUxPTjtMbDswO0w7PGZvbnQ+IDAzQzU7Ozs7Tjs7Ozs7CisxRDcxMTtNQVRIRU1BVElDQUwgSVRBTElDIFNNQUxMIFBISTtMbDswO0w7PGZvbnQ+IDAzQzY7Ozs7Tjs7Ozs7CisxRDcxMjtNQVRIRU1BVElDQUwgSVRBTElDIFNNQUxMIENISTtMbDswO0w7PGZvbnQ+IDAzQzc7Ozs7Tjs7Ozs7CisxRDcxMztNQVRIRU1BVElDQUwgSVRBTElDIFNNQUxMIFBTSTtMbDswO0w7PGZvbnQ+IDAzQzg7Ozs7Tjs7Ozs7CisxRDcxNDtNQVRIRU1BVElDQUwgSVRBTElDIFNNQUxMIE9NRUdBO0xsOzA7TDs8Zm9udD4gMDNDOTs7OztOOzs7OzsKKzFENzE1O01BVEhFTUFUSUNBTCBJVEFMSUMgUEFSVElBTCBESUZGRVJFTlRJQUw7U207MDtMOzxmb250PiAyMjAyOzs7O047Ozs7OworMUQ3MTY7TUFUSEVNQVRJQ0FMIElUQUxJQyBFUFNJTE9OIFNZTUJPTDtMbDswO0w7PGZvbnQ+IDAzRjU7Ozs7Tjs7Ozs7CisxRDcxNztNQVRIRU1BVElDQUwgSVRBTElDIFRIRVRBIFNZTUJPTDtMbDswO0w7PGZvbnQ+IDAzRDE7Ozs7Tjs7Ozs7CisxRDcxODtNQVRIRU1BVElDQUwgSVRBTElDIEtBUFBBIFNZTUJPTDtMbDswO0w7PGZvbnQ+IDAzRjA7Ozs7Tjs7Ozs7CisxRDcxOTtNQVRIRU1BVElDQUwgSVRBTElDIFBISSBTWU1CT0w7TGw7MDtMOzxmb250PiAwM0Q1Ozs7O047Ozs7OworMUQ3MUE7TUFUSEVNQVRJQ0FMIElUQUxJQyBSSE8gU1lNQk9MO0xsOzA7TDs8Zm9udD4gMDNGMTs7OztOOzs7OzsKKzFENzFCO01BVEhFTUFUSUNBTCBJVEFMSUMgUEkgU1lNQk9MO0xsOzA7TDs8Zm9udD4gMDNENjs7OztOOzs7OzsKKzFENzFDO01BVEhFTUFUSUNBTCBCT0xEIElUQUxJQyBDQVBJVEFMIEFMUEhBO0x1OzA7TDs8Zm9udD4gMDM5MTs7OztOOzs7OzsKKzFENzFEO01BVEhFTUFUSUNBTCBCT0xEIElUQUxJQyBDQVBJVEFMIEJFVEE7THU7MDtMOzxmb250PiAwMzkyOzs7O047Ozs7OworMUQ3MUU7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIENBUElUQUwgR0FNTUE7THU7MDtMOzxmb250PiAwMzkzOzs7O047Ozs7OworMUQ3MUY7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIENBUElUQUwgREVMVEE7THU7MDtMOzxmb250PiAwMzk0Ozs7O047Ozs7OworMUQ3MjA7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIENBUElUQUwgRVBTSUxPTjtMdTswO0w7PGZvbnQ+IDAzOTU7Ozs7Tjs7Ozs7CisxRDcyMTtNQVRIRU1BVElDQUwgQk9MRCBJVEFMSUMgQ0FQSVRBTCBaRVRBO0x1OzA7TDs8Zm9udD4gMDM5Njs7OztOOzs7OzsKKzFENzIyO01BVEhFTUFUSUNBTCBCT0xEIElUQUxJQyBDQVBJVEFMIEVUQTtMdTswO0w7PGZvbnQ+IDAzOTc7Ozs7Tjs7Ozs7CisxRDcyMztNQVRIRU1BVElDQUwgQk9MRCBJVEFMSUMgQ0FQSVRBTCBUSEVUQTtMdTswO0w7PGZvbnQ+IDAzOTg7Ozs7Tjs7Ozs7CisxRDcyNDtNQVRIRU1BVElDQUwgQk9MRCBJVEFMSUMgQ0FQSVRBTCBJT1RBO0x1OzA7TDs8Zm9udD4gMDM5OTs7OztOOzs7OzsKKzFENzI1O01BVEhFTUFUSUNBTCBCT0xEIElUQUxJQyBDQVBJVEFMIEtBUFBBO0x1OzA7TDs8Zm9udD4gMDM5QTs7OztOOzs7OzsKKzFENzI2O01BVEhFTUFUSUNBTCBCT0xEIElUQUxJQyBDQVBJVEFMIExBTURBO0x1OzA7TDs8Zm9udD4gMDM5Qjs7OztOOzs7OzsKKzFENzI3O01BVEhFTUFUSUNBTCBCT0xEIElUQUxJQyBDQVBJVEFMIE1VO0x1OzA7TDs8Zm9udD4gMDM5Qzs7OztOOzs7OzsKKzFENzI4O01BVEhFTUFUSUNBTCBCT0xEIElUQUxJQyBDQVBJVEFMIE5VO0x1OzA7TDs8Zm9udD4gMDM5RDs7OztOOzs7OzsKKzFENzI5O01BVEhFTUFUSUNBTCBCT0xEIElUQUxJQyBDQVBJVEFMIFhJO0x1OzA7TDs8Zm9udD4gMDM5RTs7OztOOzs7OzsKKzFENzJBO01BVEhFTUFUSUNBTCBCT0xEIElUQUxJQyBDQVBJVEFMIE9NSUNST047THU7MDtMOzxmb250PiAwMzlGOzs7O047Ozs7OworMUQ3MkI7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIENBUElUQUwgUEk7THU7MDtMOzxmb250PiAwM0EwOzs7O047Ozs7OworMUQ3MkM7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIENBUElUQUwgUkhPO0x1OzA7TDs8Zm9udD4gMDNBMTs7OztOOzs7OzsKKzFENzJEO01BVEhFTUFUSUNBTCBCT0xEIElUQUxJQyBDQVBJVEFMIFRIRVRBIFNZTUJPTDtMdTswO0w7PGZvbnQ+IDAzRjQ7Ozs7Tjs7Ozs7CisxRDcyRTtNQVRIRU1BVElDQUwgQk9MRCBJVEFMSUMgQ0FQSVRBTCBTSUdNQTtMdTswO0w7PGZvbnQ+IDAzQTM7Ozs7Tjs7Ozs7CisxRDcyRjtNQVRIRU1BVElDQUwgQk9MRCBJVEFMSUMgQ0FQSVRBTCBUQVU7THU7MDtMOzxmb250PiAwM0E0Ozs7O047Ozs7OworMUQ3MzA7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIENBUElUQUwgVVBTSUxPTjtMdTswO0w7PGZvbnQ+IDAzQTU7Ozs7Tjs7Ozs7CisxRDczMTtNQVRIRU1BVElDQUwgQk9MRCBJVEFMSUMgQ0FQSVRBTCBQSEk7THU7MDtMOzxmb250PiAwM0E2Ozs7O047Ozs7OworMUQ3MzI7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIENBUElUQUwgQ0hJO0x1OzA7TDs8Zm9udD4gMDNBNzs7OztOOzs7OzsKKzFENzMzO01BVEhFTUFUSUNBTCBCT0xEIElUQUxJQyBDQVBJVEFMIFBTSTtMdTswO0w7PGZvbnQ+IDAzQTg7Ozs7Tjs7Ozs7CisxRDczNDtNQVRIRU1BVElDQUwgQk9MRCBJVEFMSUMgQ0FQSVRBTCBPTUVHQTtMdTswO0w7PGZvbnQ+IDAzQTk7Ozs7Tjs7Ozs7CisxRDczNTtNQVRIRU1BVElDQUwgQk9MRCBJVEFMSUMgTkFCTEE7U207MDtMOzxmb250PiAyMjA3Ozs7O047Ozs7OworMUQ3MzY7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIFNNQUxMIEFMUEhBO0xsOzA7TDs8Zm9udD4gMDNCMTs7OztOOzs7OzsKKzFENzM3O01BVEhFTUFUSUNBTCBCT0xEIElUQUxJQyBTTUFMTCBCRVRBO0xsOzA7TDs8Zm9udD4gMDNCMjs7OztOOzs7OzsKKzFENzM4O01BVEhFTUFUSUNBTCBCT0xEIElUQUxJQyBTTUFMTCBHQU1NQTtMbDswO0w7PGZvbnQ+IDAzQjM7Ozs7Tjs7Ozs7CisxRDczOTtNQVRIRU1BVElDQUwgQk9MRCBJVEFMSUMgU01BTEwgREVMVEE7TGw7MDtMOzxmb250PiAwM0I0Ozs7O047Ozs7OworMUQ3M0E7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIFNNQUxMIEVQU0lMT047TGw7MDtMOzxmb250PiAwM0I1Ozs7O047Ozs7OworMUQ3M0I7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIFNNQUxMIFpFVEE7TGw7MDtMOzxmb250PiAwM0I2Ozs7O047Ozs7OworMUQ3M0M7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIFNNQUxMIEVUQTtMbDswO0w7PGZvbnQ+IDAzQjc7Ozs7Tjs7Ozs7CisxRDczRDtNQVRIRU1BVElDQUwgQk9MRCBJVEFMSUMgU01BTEwgVEhFVEE7TGw7MDtMOzxmb250PiAwM0I4Ozs7O047Ozs7OworMUQ3M0U7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIFNNQUxMIElPVEE7TGw7MDtMOzxmb250PiAwM0I5Ozs7O047Ozs7OworMUQ3M0Y7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIFNNQUxMIEtBUFBBO0xsOzA7TDs8Zm9udD4gMDNCQTs7OztOOzs7OzsKKzFENzQwO01BVEhFTUFUSUNBTCBCT0xEIElUQUxJQyBTTUFMTCBMQU1EQTtMbDswO0w7PGZvbnQ+IDAzQkI7Ozs7Tjs7Ozs7CisxRDc0MTtNQVRIRU1BVElDQUwgQk9MRCBJVEFMSUMgU01BTEwgTVU7TGw7MDtMOzxmb250PiAwM0JDOzs7O047Ozs7OworMUQ3NDI7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIFNNQUxMIE5VO0xsOzA7TDs8Zm9udD4gMDNCRDs7OztOOzs7OzsKKzFENzQzO01BVEhFTUFUSUNBTCBCT0xEIElUQUxJQyBTTUFMTCBYSTtMbDswO0w7PGZvbnQ+IDAzQkU7Ozs7Tjs7Ozs7CisxRDc0NDtNQVRIRU1BVElDQUwgQk9MRCBJVEFMSUMgU01BTEwgT01JQ1JPTjtMbDswO0w7PGZvbnQ+IDAzQkY7Ozs7Tjs7Ozs7CisxRDc0NTtNQVRIRU1BVElDQUwgQk9MRCBJVEFMSUMgU01BTEwgUEk7TGw7MDtMOzxmb250PiAwM0MwOzs7O047Ozs7OworMUQ3NDY7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIFNNQUxMIFJITztMbDswO0w7PGZvbnQ+IDAzQzE7Ozs7Tjs7Ozs7CisxRDc0NztNQVRIRU1BVElDQUwgQk9MRCBJVEFMSUMgU01BTEwgRklOQUwgU0lHTUE7TGw7MDtMOzxmb250PiAwM0MyOzs7O047Ozs7OworMUQ3NDg7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIFNNQUxMIFNJR01BO0xsOzA7TDs8Zm9udD4gMDNDMzs7OztOOzs7OzsKKzFENzQ5O01BVEhFTUFUSUNBTCBCT0xEIElUQUxJQyBTTUFMTCBUQVU7TGw7MDtMOzxmb250PiAwM0M0Ozs7O047Ozs7OworMUQ3NEE7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIFNNQUxMIFVQU0lMT047TGw7MDtMOzxmb250PiAwM0M1Ozs7O047Ozs7OworMUQ3NEI7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIFNNQUxMIFBISTtMbDswO0w7PGZvbnQ+IDAzQzY7Ozs7Tjs7Ozs7CisxRDc0QztNQVRIRU1BVElDQUwgQk9MRCBJVEFMSUMgU01BTEwgQ0hJO0xsOzA7TDs8Zm9udD4gMDNDNzs7OztOOzs7OzsKKzFENzREO01BVEhFTUFUSUNBTCBCT0xEIElUQUxJQyBTTUFMTCBQU0k7TGw7MDtMOzxmb250PiAwM0M4Ozs7O047Ozs7OworMUQ3NEU7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIFNNQUxMIE9NRUdBO0xsOzA7TDs8Zm9udD4gMDNDOTs7OztOOzs7OzsKKzFENzRGO01BVEhFTUFUSUNBTCBCT0xEIElUQUxJQyBQQVJUSUFMIERJRkZFUkVOVElBTDtTbTswO0w7PGZvbnQ+IDIyMDI7Ozs7Tjs7Ozs7CisxRDc1MDtNQVRIRU1BVElDQUwgQk9MRCBJVEFMSUMgRVBTSUxPTiBTWU1CT0w7TGw7MDtMOzxmb250PiAwM0Y1Ozs7O047Ozs7OworMUQ3NTE7TUFUSEVNQVRJQ0FMIEJPTEQgSVRBTElDIFRIRVRBIFNZTUJPTDtMbDswO0w7PGZvbnQ+IDAzRDE7Ozs7Tjs7Ozs7CisxRDc1MjtNQVRIRU1BVElDQUwgQk9MRCBJVEFMSUMgS0FQUEEgU1lNQk9MO0xsOzA7TDs8Zm9udD4gMDNGMDs7OztOOzs7OzsKKzFENzUzO01BVEhFTUFUSUNBTCBCT0xEIElUQUxJQyBQSEkgU1lNQk9MO0xsOzA7TDs8Zm9udD4gMDNENTs7OztOOzs7OzsKKzFENzU0O01BVEhFTUFUSUNBTCBCT0xEIElUQUxJQyBSSE8gU1lNQk9MO0xsOzA7TDs8Zm9udD4gMDNGMTs7OztOOzs7OzsKKzFENzU1O01BVEhFTUFUSUNBTCBCT0xEIElUQUxJQyBQSSBTWU1CT0w7TGw7MDtMOzxmb250PiAwM0Q2Ozs7O047Ozs7OworMUQ3NTY7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBDQVBJVEFMIEFMUEhBO0x1OzA7TDs8Zm9udD4gMDM5MTs7OztOOzs7OzsKKzFENzU3O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgQ0FQSVRBTCBCRVRBO0x1OzA7TDs8Zm9udD4gMDM5Mjs7OztOOzs7OzsKKzFENzU4O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgQ0FQSVRBTCBHQU1NQTtMdTswO0w7PGZvbnQ+IDAzOTM7Ozs7Tjs7Ozs7CisxRDc1OTtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIENBUElUQUwgREVMVEE7THU7MDtMOzxmb250PiAwMzk0Ozs7O047Ozs7OworMUQ3NUE7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBDQVBJVEFMIEVQU0lMT047THU7MDtMOzxmb250PiAwMzk1Ozs7O047Ozs7OworMUQ3NUI7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBDQVBJVEFMIFpFVEE7THU7MDtMOzxmb250PiAwMzk2Ozs7O047Ozs7OworMUQ3NUM7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBDQVBJVEFMIEVUQTtMdTswO0w7PGZvbnQ+IDAzOTc7Ozs7Tjs7Ozs7CisxRDc1RDtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIENBUElUQUwgVEhFVEE7THU7MDtMOzxmb250PiAwMzk4Ozs7O047Ozs7OworMUQ3NUU7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBDQVBJVEFMIElPVEE7THU7MDtMOzxmb250PiAwMzk5Ozs7O047Ozs7OworMUQ3NUY7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBDQVBJVEFMIEtBUFBBO0x1OzA7TDs8Zm9udD4gMDM5QTs7OztOOzs7OzsKKzFENzYwO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgQ0FQSVRBTCBMQU1EQTtMdTswO0w7PGZvbnQ+IDAzOUI7Ozs7Tjs7Ozs7CisxRDc2MTtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIENBUElUQUwgTVU7THU7MDtMOzxmb250PiAwMzlDOzs7O047Ozs7OworMUQ3NjI7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBDQVBJVEFMIE5VO0x1OzA7TDs8Zm9udD4gMDM5RDs7OztOOzs7OzsKKzFENzYzO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgQ0FQSVRBTCBYSTtMdTswO0w7PGZvbnQ+IDAzOUU7Ozs7Tjs7Ozs7CisxRDc2NDtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIENBUElUQUwgT01JQ1JPTjtMdTswO0w7PGZvbnQ+IDAzOUY7Ozs7Tjs7Ozs7CisxRDc2NTtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIENBUElUQUwgUEk7THU7MDtMOzxmb250PiAwM0EwOzs7O047Ozs7OworMUQ3NjY7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBDQVBJVEFMIFJITztMdTswO0w7PGZvbnQ+IDAzQTE7Ozs7Tjs7Ozs7CisxRDc2NztNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIENBUElUQUwgVEhFVEEgU1lNQk9MO0x1OzA7TDs8Zm9udD4gMDNGNDs7OztOOzs7OzsKKzFENzY4O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgQ0FQSVRBTCBTSUdNQTtMdTswO0w7PGZvbnQ+IDAzQTM7Ozs7Tjs7Ozs7CisxRDc2OTtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIENBUElUQUwgVEFVO0x1OzA7TDs8Zm9udD4gMDNBNDs7OztOOzs7OzsKKzFENzZBO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgQ0FQSVRBTCBVUFNJTE9OO0x1OzA7TDs8Zm9udD4gMDNBNTs7OztOOzs7OzsKKzFENzZCO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgQ0FQSVRBTCBQSEk7THU7MDtMOzxmb250PiAwM0E2Ozs7O047Ozs7OworMUQ3NkM7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBDQVBJVEFMIENISTtMdTswO0w7PGZvbnQ+IDAzQTc7Ozs7Tjs7Ozs7CisxRDc2RDtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIENBUElUQUwgUFNJO0x1OzA7TDs8Zm9udD4gMDNBODs7OztOOzs7OzsKKzFENzZFO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgQ0FQSVRBTCBPTUVHQTtMdTswO0w7PGZvbnQ+IDAzQTk7Ozs7Tjs7Ozs7CisxRDc2RjtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIE5BQkxBO1NtOzA7TDs8Zm9udD4gMjIwNzs7OztOOzs7OzsKKzFENzcwO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgU01BTEwgQUxQSEE7TGw7MDtMOzxmb250PiAwM0IxOzs7O047Ozs7OworMUQ3NzE7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBTTUFMTCBCRVRBO0xsOzA7TDs8Zm9udD4gMDNCMjs7OztOOzs7OzsKKzFENzcyO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgU01BTEwgR0FNTUE7TGw7MDtMOzxmb250PiAwM0IzOzs7O047Ozs7OworMUQ3NzM7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBTTUFMTCBERUxUQTtMbDswO0w7PGZvbnQ+IDAzQjQ7Ozs7Tjs7Ozs7CisxRDc3NDtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIFNNQUxMIEVQU0lMT047TGw7MDtMOzxmb250PiAwM0I1Ozs7O047Ozs7OworMUQ3NzU7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBTTUFMTCBaRVRBO0xsOzA7TDs8Zm9udD4gMDNCNjs7OztOOzs7OzsKKzFENzc2O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgU01BTEwgRVRBO0xsOzA7TDs8Zm9udD4gMDNCNzs7OztOOzs7OzsKKzFENzc3O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgU01BTEwgVEhFVEE7TGw7MDtMOzxmb250PiAwM0I4Ozs7O047Ozs7OworMUQ3Nzg7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBTTUFMTCBJT1RBO0xsOzA7TDs8Zm9udD4gMDNCOTs7OztOOzs7OzsKKzFENzc5O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgU01BTEwgS0FQUEE7TGw7MDtMOzxmb250PiAwM0JBOzs7O047Ozs7OworMUQ3N0E7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBTTUFMTCBMQU1EQTtMbDswO0w7PGZvbnQ+IDAzQkI7Ozs7Tjs7Ozs7CisxRDc3QjtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIFNNQUxMIE1VO0xsOzA7TDs8Zm9udD4gMDNCQzs7OztOOzs7OzsKKzFENzdDO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgU01BTEwgTlU7TGw7MDtMOzxmb250PiAwM0JEOzs7O047Ozs7OworMUQ3N0Q7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBTTUFMTCBYSTtMbDswO0w7PGZvbnQ+IDAzQkU7Ozs7Tjs7Ozs7CisxRDc3RTtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIFNNQUxMIE9NSUNST047TGw7MDtMOzxmb250PiAwM0JGOzs7O047Ozs7OworMUQ3N0Y7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBTTUFMTCBQSTtMbDswO0w7PGZvbnQ+IDAzQzA7Ozs7Tjs7Ozs7CisxRDc4MDtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIFNNQUxMIFJITztMbDswO0w7PGZvbnQ+IDAzQzE7Ozs7Tjs7Ozs7CisxRDc4MTtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIFNNQUxMIEZJTkFMIFNJR01BO0xsOzA7TDs8Zm9udD4gMDNDMjs7OztOOzs7OzsKKzFENzgyO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgU01BTEwgU0lHTUE7TGw7MDtMOzxmb250PiAwM0MzOzs7O047Ozs7OworMUQ3ODM7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBTTUFMTCBUQVU7TGw7MDtMOzxmb250PiAwM0M0Ozs7O047Ozs7OworMUQ3ODQ7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBTTUFMTCBVUFNJTE9OO0xsOzA7TDs8Zm9udD4gMDNDNTs7OztOOzs7OzsKKzFENzg1O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgU01BTEwgUEhJO0xsOzA7TDs8Zm9udD4gMDNDNjs7OztOOzs7OzsKKzFENzg2O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgU01BTEwgQ0hJO0xsOzA7TDs8Zm9udD4gMDNDNzs7OztOOzs7OzsKKzFENzg3O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgU01BTEwgUFNJO0xsOzA7TDs8Zm9udD4gMDNDODs7OztOOzs7OzsKKzFENzg4O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgU01BTEwgT01FR0E7TGw7MDtMOzxmb250PiAwM0M5Ozs7O047Ozs7OworMUQ3ODk7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBQQVJUSUFMIERJRkZFUkVOVElBTDtTbTswO0w7PGZvbnQ+IDIyMDI7Ozs7Tjs7Ozs7CisxRDc4QTtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIEVQU0lMT04gU1lNQk9MO0xsOzA7TDs8Zm9udD4gMDNGNTs7OztOOzs7OzsKKzFENzhCO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgVEhFVEEgU1lNQk9MO0xsOzA7TDs8Zm9udD4gMDNEMTs7OztOOzs7OzsKKzFENzhDO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgS0FQUEEgU1lNQk9MO0xsOzA7TDs8Zm9udD4gMDNGMDs7OztOOzs7OzsKKzFENzhEO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgUEhJIFNZTUJPTDtMbDswO0w7PGZvbnQ+IDAzRDU7Ozs7Tjs7Ozs7CisxRDc4RTtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIFJITyBTWU1CT0w7TGw7MDtMOzxmb250PiAwM0YxOzs7O047Ozs7OworMUQ3OEY7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBQSSBTWU1CT0w7TGw7MDtMOzxmb250PiAwM0Q2Ozs7O047Ozs7OworMUQ3OTA7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgQ0FQSVRBTCBBTFBIQTtMdTswO0w7PGZvbnQ+IDAzOTE7Ozs7Tjs7Ozs7CisxRDc5MTtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIElUQUxJQyBDQVBJVEFMIEJFVEE7THU7MDtMOzxmb250PiAwMzkyOzs7O047Ozs7OworMUQ3OTI7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgQ0FQSVRBTCBHQU1NQTtMdTswO0w7PGZvbnQ+IDAzOTM7Ozs7Tjs7Ozs7CisxRDc5MztNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIElUQUxJQyBDQVBJVEFMIERFTFRBO0x1OzA7TDs8Zm9udD4gMDM5NDs7OztOOzs7OzsKKzFENzk0O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgSVRBTElDIENBUElUQUwgRVBTSUxPTjtMdTswO0w7PGZvbnQ+IDAzOTU7Ozs7Tjs7Ozs7CisxRDc5NTtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIElUQUxJQyBDQVBJVEFMIFpFVEE7THU7MDtMOzxmb250PiAwMzk2Ozs7O047Ozs7OworMUQ3OTY7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgQ0FQSVRBTCBFVEE7THU7MDtMOzxmb250PiAwMzk3Ozs7O047Ozs7OworMUQ3OTc7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgQ0FQSVRBTCBUSEVUQTtMdTswO0w7PGZvbnQ+IDAzOTg7Ozs7Tjs7Ozs7CisxRDc5ODtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIElUQUxJQyBDQVBJVEFMIElPVEE7THU7MDtMOzxmb250PiAwMzk5Ozs7O047Ozs7OworMUQ3OTk7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgQ0FQSVRBTCBLQVBQQTtMdTswO0w7PGZvbnQ+IDAzOUE7Ozs7Tjs7Ozs7CisxRDc5QTtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIElUQUxJQyBDQVBJVEFMIExBTURBO0x1OzA7TDs8Zm9udD4gMDM5Qjs7OztOOzs7OzsKKzFENzlCO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgSVRBTElDIENBUElUQUwgTVU7THU7MDtMOzxmb250PiAwMzlDOzs7O047Ozs7OworMUQ3OUM7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgQ0FQSVRBTCBOVTtMdTswO0w7PGZvbnQ+IDAzOUQ7Ozs7Tjs7Ozs7CisxRDc5RDtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIElUQUxJQyBDQVBJVEFMIFhJO0x1OzA7TDs8Zm9udD4gMDM5RTs7OztOOzs7OzsKKzFENzlFO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgSVRBTElDIENBUElUQUwgT01JQ1JPTjtMdTswO0w7PGZvbnQ+IDAzOUY7Ozs7Tjs7Ozs7CisxRDc5RjtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIElUQUxJQyBDQVBJVEFMIFBJO0x1OzA7TDs8Zm9udD4gMDNBMDs7OztOOzs7OzsKKzFEN0EwO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgSVRBTElDIENBUElUQUwgUkhPO0x1OzA7TDs8Zm9udD4gMDNBMTs7OztOOzs7OzsKKzFEN0ExO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgSVRBTElDIENBUElUQUwgVEhFVEEgU1lNQk9MO0x1OzA7TDs8Zm9udD4gMDNGNDs7OztOOzs7OzsKKzFEN0EyO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgSVRBTElDIENBUElUQUwgU0lHTUE7THU7MDtMOzxmb250PiAwM0EzOzs7O047Ozs7OworMUQ3QTM7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgQ0FQSVRBTCBUQVU7THU7MDtMOzxmb250PiAwM0E0Ozs7O047Ozs7OworMUQ3QTQ7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgQ0FQSVRBTCBVUFNJTE9OO0x1OzA7TDs8Zm9udD4gMDNBNTs7OztOOzs7OzsKKzFEN0E1O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgSVRBTElDIENBUElUQUwgUEhJO0x1OzA7TDs8Zm9udD4gMDNBNjs7OztOOzs7OzsKKzFEN0E2O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgSVRBTElDIENBUElUQUwgQ0hJO0x1OzA7TDs8Zm9udD4gMDNBNzs7OztOOzs7OzsKKzFEN0E3O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgSVRBTElDIENBUElUQUwgUFNJO0x1OzA7TDs8Zm9udD4gMDNBODs7OztOOzs7OzsKKzFEN0E4O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgSVRBTElDIENBUElUQUwgT01FR0E7THU7MDtMOzxmb250PiAwM0E5Ozs7O047Ozs7OworMUQ3QTk7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgTkFCTEE7U207MDtMOzxmb250PiAyMjA3Ozs7O047Ozs7OworMUQ3QUE7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgU01BTEwgQUxQSEE7TGw7MDtMOzxmb250PiAwM0IxOzs7O047Ozs7OworMUQ3QUI7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgU01BTEwgQkVUQTtMbDswO0w7PGZvbnQ+IDAzQjI7Ozs7Tjs7Ozs7CisxRDdBQztNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIElUQUxJQyBTTUFMTCBHQU1NQTtMbDswO0w7PGZvbnQ+IDAzQjM7Ozs7Tjs7Ozs7CisxRDdBRDtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIElUQUxJQyBTTUFMTCBERUxUQTtMbDswO0w7PGZvbnQ+IDAzQjQ7Ozs7Tjs7Ozs7CisxRDdBRTtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIElUQUxJQyBTTUFMTCBFUFNJTE9OO0xsOzA7TDs8Zm9udD4gMDNCNTs7OztOOzs7OzsKKzFEN0FGO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgSVRBTElDIFNNQUxMIFpFVEE7TGw7MDtMOzxmb250PiAwM0I2Ozs7O047Ozs7OworMUQ3QjA7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgU01BTEwgRVRBO0xsOzA7TDs8Zm9udD4gMDNCNzs7OztOOzs7OzsKKzFEN0IxO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgSVRBTElDIFNNQUxMIFRIRVRBO0xsOzA7TDs8Zm9udD4gMDNCODs7OztOOzs7OzsKKzFEN0IyO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgSVRBTElDIFNNQUxMIElPVEE7TGw7MDtMOzxmb250PiAwM0I5Ozs7O047Ozs7OworMUQ3QjM7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgU01BTEwgS0FQUEE7TGw7MDtMOzxmb250PiAwM0JBOzs7O047Ozs7OworMUQ3QjQ7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgU01BTEwgTEFNREE7TGw7MDtMOzxmb250PiAwM0JCOzs7O047Ozs7OworMUQ3QjU7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgU01BTEwgTVU7TGw7MDtMOzxmb250PiAwM0JDOzs7O047Ozs7OworMUQ3QjY7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgU01BTEwgTlU7TGw7MDtMOzxmb250PiAwM0JEOzs7O047Ozs7OworMUQ3Qjc7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgU01BTEwgWEk7TGw7MDtMOzxmb250PiAwM0JFOzs7O047Ozs7OworMUQ3Qjg7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgU01BTEwgT01JQ1JPTjtMbDswO0w7PGZvbnQ+IDAzQkY7Ozs7Tjs7Ozs7CisxRDdCOTtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIElUQUxJQyBTTUFMTCBQSTtMbDswO0w7PGZvbnQ+IDAzQzA7Ozs7Tjs7Ozs7CisxRDdCQTtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIElUQUxJQyBTTUFMTCBSSE87TGw7MDtMOzxmb250PiAwM0MxOzs7O047Ozs7OworMUQ3QkI7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgU01BTEwgRklOQUwgU0lHTUE7TGw7MDtMOzxmb250PiAwM0MyOzs7O047Ozs7OworMUQ3QkM7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgU01BTEwgU0lHTUE7TGw7MDtMOzxmb250PiAwM0MzOzs7O047Ozs7OworMUQ3QkQ7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgU01BTEwgVEFVO0xsOzA7TDs8Zm9udD4gMDNDNDs7OztOOzs7OzsKKzFEN0JFO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgSVRBTElDIFNNQUxMIFVQU0lMT047TGw7MDtMOzxmb250PiAwM0M1Ozs7O047Ozs7OworMUQ3QkY7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgU01BTEwgUEhJO0xsOzA7TDs8Zm9udD4gMDNDNjs7OztOOzs7OzsKKzFEN0MwO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgSVRBTElDIFNNQUxMIENISTtMbDswO0w7PGZvbnQ+IDAzQzc7Ozs7Tjs7Ozs7CisxRDdDMTtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIElUQUxJQyBTTUFMTCBQU0k7TGw7MDtMOzxmb250PiAwM0M4Ozs7O047Ozs7OworMUQ3QzI7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgU01BTEwgT01FR0E7TGw7MDtMOzxmb250PiAwM0M5Ozs7O047Ozs7OworMUQ3QzM7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgUEFSVElBTCBESUZGRVJFTlRJQUw7U207MDtMOzxmb250PiAyMjAyOzs7O047Ozs7OworMUQ3QzQ7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgRVBTSUxPTiBTWU1CT0w7TGw7MDtMOzxmb250PiAwM0Y1Ozs7O047Ozs7OworMUQ3QzU7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgVEhFVEEgU1lNQk9MO0xsOzA7TDs8Zm9udD4gMDNEMTs7OztOOzs7OzsKKzFEN0M2O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgSVRBTElDIEtBUFBBIFNZTUJPTDtMbDswO0w7PGZvbnQ+IDAzRjA7Ozs7Tjs7Ozs7CisxRDdDNztNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIElUQUxJQyBQSEkgU1lNQk9MO0xsOzA7TDs8Zm9udD4gMDNENTs7OztOOzs7OzsKKzFEN0M4O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgSVRBTElDIFJITyBTWU1CT0w7TGw7MDtMOzxmb250PiAwM0YxOzs7O047Ozs7OworMUQ3Qzk7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBJVEFMSUMgUEkgU1lNQk9MO0xsOzA7TDs8Zm9udD4gMDNENjs7OztOOzs7OzsKKzFEN0NFO01BVEhFTUFUSUNBTCBCT0xEIERJR0lUIFpFUk87TmQ7MDtFTjs8Zm9udD4gMDAzMDswOzA7MDtOOzs7OzsKKzFEN0NGO01BVEhFTUFUSUNBTCBCT0xEIERJR0lUIE9ORTtOZDswO0VOOzxmb250PiAwMDMxOzE7MTsxO047Ozs7OworMUQ3RDA7TUFUSEVNQVRJQ0FMIEJPTEQgRElHSVQgVFdPO05kOzA7RU47PGZvbnQ+IDAwMzI7MjsyOzI7Tjs7Ozs7CisxRDdEMTtNQVRIRU1BVElDQUwgQk9MRCBESUdJVCBUSFJFRTtOZDswO0VOOzxmb250PiAwMDMzOzM7MzszO047Ozs7OworMUQ3RDI7TUFUSEVNQVRJQ0FMIEJPTEQgRElHSVQgRk9VUjtOZDswO0VOOzxmb250PiAwMDM0OzQ7NDs0O047Ozs7OworMUQ3RDM7TUFUSEVNQVRJQ0FMIEJPTEQgRElHSVQgRklWRTtOZDswO0VOOzxmb250PiAwMDM1OzU7NTs1O047Ozs7OworMUQ3RDQ7TUFUSEVNQVRJQ0FMIEJPTEQgRElHSVQgU0lYO05kOzA7RU47PGZvbnQ+IDAwMzY7Njs2OzY7Tjs7Ozs7CisxRDdENTtNQVRIRU1BVElDQUwgQk9MRCBESUdJVCBTRVZFTjtOZDswO0VOOzxmb250PiAwMDM3Ozc7Nzs3O047Ozs7OworMUQ3RDY7TUFUSEVNQVRJQ0FMIEJPTEQgRElHSVQgRUlHSFQ7TmQ7MDtFTjs8Zm9udD4gMDAzODs4Ozg7ODtOOzs7OzsKKzFEN0Q3O01BVEhFTUFUSUNBTCBCT0xEIERJR0lUIE5JTkU7TmQ7MDtFTjs8Zm9udD4gMDAzOTs5Ozk7OTtOOzs7OzsKKzFEN0Q4O01BVEhFTUFUSUNBTCBET1VCTEUtU1RSVUNLIERJR0lUIFpFUk87TmQ7MDtFTjs8Zm9udD4gMDAzMDswOzA7MDtOOzs7OzsKKzFEN0Q5O01BVEhFTUFUSUNBTCBET1VCTEUtU1RSVUNLIERJR0lUIE9ORTtOZDswO0VOOzxmb250PiAwMDMxOzE7MTsxO047Ozs7OworMUQ3REE7TUFUSEVNQVRJQ0FMIERPVUJMRS1TVFJVQ0sgRElHSVQgVFdPO05kOzA7RU47PGZvbnQ+IDAwMzI7MjsyOzI7Tjs7Ozs7CisxRDdEQjtNQVRIRU1BVElDQUwgRE9VQkxFLVNUUlVDSyBESUdJVCBUSFJFRTtOZDswO0VOOzxmb250PiAwMDMzOzM7MzszO047Ozs7OworMUQ3REM7TUFUSEVNQVRJQ0FMIERPVUJMRS1TVFJVQ0sgRElHSVQgRk9VUjtOZDswO0VOOzxmb250PiAwMDM0OzQ7NDs0O047Ozs7OworMUQ3REQ7TUFUSEVNQVRJQ0FMIERPVUJMRS1TVFJVQ0sgRElHSVQgRklWRTtOZDswO0VOOzxmb250PiAwMDM1OzU7NTs1O047Ozs7OworMUQ3REU7TUFUSEVNQVRJQ0FMIERPVUJMRS1TVFJVQ0sgRElHSVQgU0lYO05kOzA7RU47PGZvbnQ+IDAwMzY7Njs2OzY7Tjs7Ozs7CisxRDdERjtNQVRIRU1BVElDQUwgRE9VQkxFLVNUUlVDSyBESUdJVCBTRVZFTjtOZDswO0VOOzxmb250PiAwMDM3Ozc7Nzs3O047Ozs7OworMUQ3RTA7TUFUSEVNQVRJQ0FMIERPVUJMRS1TVFJVQ0sgRElHSVQgRUlHSFQ7TmQ7MDtFTjs8Zm9udD4gMDAzODs4Ozg7ODtOOzs7OzsKKzFEN0UxO01BVEhFTUFUSUNBTCBET1VCTEUtU1RSVUNLIERJR0lUIE5JTkU7TmQ7MDtFTjs8Zm9udD4gMDAzOTs5Ozk7OTtOOzs7OzsKKzFEN0UyO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIERJR0lUIFpFUk87TmQ7MDtFTjs8Zm9udD4gMDAzMDswOzA7MDtOOzs7OzsKKzFEN0UzO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIERJR0lUIE9ORTtOZDswO0VOOzxmb250PiAwMDMxOzE7MTsxO047Ozs7OworMUQ3RTQ7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgRElHSVQgVFdPO05kOzA7RU47PGZvbnQ+IDAwMzI7MjsyOzI7Tjs7Ozs7CisxRDdFNTtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBESUdJVCBUSFJFRTtOZDswO0VOOzxmb250PiAwMDMzOzM7MzszO047Ozs7OworMUQ3RTY7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgRElHSVQgRk9VUjtOZDswO0VOOzxmb250PiAwMDM0OzQ7NDs0O047Ozs7OworMUQ3RTc7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgRElHSVQgRklWRTtOZDswO0VOOzxmb250PiAwMDM1OzU7NTs1O047Ozs7OworMUQ3RTg7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgRElHSVQgU0lYO05kOzA7RU47PGZvbnQ+IDAwMzY7Njs2OzY7Tjs7Ozs7CisxRDdFOTtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBESUdJVCBTRVZFTjtOZDswO0VOOzxmb250PiAwMDM3Ozc7Nzs3O047Ozs7OworMUQ3RUE7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgRElHSVQgRUlHSFQ7TmQ7MDtFTjs8Zm9udD4gMDAzODs4Ozg7ODtOOzs7OzsKKzFEN0VCO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIERJR0lUIE5JTkU7TmQ7MDtFTjs8Zm9udD4gMDAzOTs5Ozk7OTtOOzs7OzsKKzFEN0VDO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgRElHSVQgWkVSTztOZDswO0VOOzxmb250PiAwMDMwOzA7MDswO047Ozs7OworMUQ3RUQ7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBESUdJVCBPTkU7TmQ7MDtFTjs8Zm9udD4gMDAzMTsxOzE7MTtOOzs7OzsKKzFEN0VFO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgRElHSVQgVFdPO05kOzA7RU47PGZvbnQ+IDAwMzI7MjsyOzI7Tjs7Ozs7CisxRDdFRjtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIERJR0lUIFRIUkVFO05kOzA7RU47PGZvbnQ+IDAwMzM7MzszOzM7Tjs7Ozs7CisxRDdGMDtNQVRIRU1BVElDQUwgU0FOUy1TRVJJRiBCT0xEIERJR0lUIEZPVVI7TmQ7MDtFTjs8Zm9udD4gMDAzNDs0OzQ7NDtOOzs7OzsKKzFEN0YxO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgRElHSVQgRklWRTtOZDswO0VOOzxmb250PiAwMDM1OzU7NTs1O047Ozs7OworMUQ3RjI7TUFUSEVNQVRJQ0FMIFNBTlMtU0VSSUYgQk9MRCBESUdJVCBTSVg7TmQ7MDtFTjs8Zm9udD4gMDAzNjs2OzY7NjtOOzs7OzsKKzFEN0YzO01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgRElHSVQgU0VWRU47TmQ7MDtFTjs8Zm9udD4gMDAzNzs3Ozc7NztOOzs7OzsKKzFEN0Y0O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgRElHSVQgRUlHSFQ7TmQ7MDtFTjs8Zm9udD4gMDAzODs4Ozg7ODtOOzs7OzsKKzFEN0Y1O01BVEhFTUFUSUNBTCBTQU5TLVNFUklGIEJPTEQgRElHSVQgTklORTtOZDswO0VOOzxmb250PiAwMDM5Ozk7OTs5O047Ozs7OworMUQ3RjY7TUFUSEVNQVRJQ0FMIE1PTk9TUEFDRSBESUdJVCBaRVJPO05kOzA7RU47PGZvbnQ+IDAwMzA7MDswOzA7Tjs7Ozs7CisxRDdGNztNQVRIRU1BVElDQUwgTU9OT1NQQUNFIERJR0lUIE9ORTtOZDswO0VOOzxmb250PiAwMDMxOzE7MTsxO047Ozs7OworMUQ3Rjg7TUFUSEVNQVRJQ0FMIE1PTk9TUEFDRSBESUdJVCBUV087TmQ7MDtFTjs8Zm9udD4gMDAzMjsyOzI7MjtOOzs7OzsKKzFEN0Y5O01BVEhFTUFUSUNBTCBNT05PU1BBQ0UgRElHSVQgVEhSRUU7TmQ7MDtFTjs8Zm9udD4gMDAzMzszOzM7MztOOzs7OzsKKzFEN0ZBO01BVEhFTUFUSUNBTCBNT05PU1BBQ0UgRElHSVQgRk9VUjtOZDswO0VOOzxmb250PiAwMDM0OzQ7NDs0O047Ozs7OworMUQ3RkI7TUFUSEVNQVRJQ0FMIE1PTk9TUEFDRSBESUdJVCBGSVZFO05kOzA7RU47PGZvbnQ+IDAwMzU7NTs1OzU7Tjs7Ozs7CisxRDdGQztNQVRIRU1BVElDQUwgTU9OT1NQQUNFIERJR0lUIFNJWDtOZDswO0VOOzxmb250PiAwMDM2OzY7Njs2O047Ozs7OworMUQ3RkQ7TUFUSEVNQVRJQ0FMIE1PTk9TUEFDRSBESUdJVCBTRVZFTjtOZDswO0VOOzxmb250PiAwMDM3Ozc7Nzs3O047Ozs7OworMUQ3RkU7TUFUSEVNQVRJQ0FMIE1PTk9TUEFDRSBESUdJVCBFSUdIVDtOZDswO0VOOzxmb250PiAwMDM4Ozg7ODs4O047Ozs7OworMUQ3RkY7TUFUSEVNQVRJQ0FMIE1PTk9TUEFDRSBESUdJVCBOSU5FO05kOzA7RU47PGZvbnQ+IDAwMzk7OTs5Ozk7Tjs7Ozs7CisyMDAwMDs8Q0pLIElkZW9ncmFwaCBFeHRlbnNpb24gQiwgRmlyc3Q+O0xvOzA7TDs7Ozs7Tjs7Ozs7CisyQTZENjs8Q0pLIElkZW9ncmFwaCBFeHRlbnNpb24gQiwgTGFzdD47TG87MDtMOzs7OztOOzs7OzsKKzJGODAwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjgwMDtMbzswO0w7NEUzRDs7OztOOzs7OzsKKzJGODAxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjgwMTtMbzswO0w7NEUzODs7OztOOzs7OzsKKzJGODAyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjgwMjtMbzswO0w7NEU0MTs7OztOOzs7OzsKKzJGODAzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjgwMztMbzswO0w7MjAxMjI7Ozs7Tjs7Ozs7CisyRjgwNDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4MDQ7TG87MDtMOzRGNjA7Ozs7Tjs7Ozs7CisyRjgwNTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4MDU7TG87MDtMOzRGQUU7Ozs7Tjs7Ozs7CisyRjgwNjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4MDY7TG87MDtMOzRGQkI7Ozs7Tjs7Ozs7CisyRjgwNztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4MDc7TG87MDtMOzUwMDI7Ozs7Tjs7Ozs7CisyRjgwODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4MDg7TG87MDtMOzUwN0E7Ozs7Tjs7Ozs7CisyRjgwOTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4MDk7TG87MDtMOzUwOTk7Ozs7Tjs7Ozs7CisyRjgwQTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4MEE7TG87MDtMOzUwRTc7Ozs7Tjs7Ozs7CisyRjgwQjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4MEI7TG87MDtMOzUwQ0Y7Ozs7Tjs7Ozs7CisyRjgwQztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4MEM7TG87MDtMOzM0OUU7Ozs7Tjs7Ozs7CisyRjgwRDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4MEQ7TG87MDtMOzIwNjNBOzs7O047Ozs7OworMkY4MEU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODBFO0xvOzA7TDs1MTREOzs7O047Ozs7OworMkY4MEY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODBGO0xvOzA7TDs1MTU0Ozs7O047Ozs7OworMkY4MTA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODEwO0xvOzA7TDs1MTY0Ozs7O047Ozs7OworMkY4MTE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODExO0xvOzA7TDs1MTc3Ozs7O047Ozs7OworMkY4MTI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODEyO0xvOzA7TDsyMDUxQzs7OztOOzs7OzsKKzJGODEzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjgxMztMbzswO0w7MzRCOTs7OztOOzs7OzsKKzJGODE0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjgxNDtMbzswO0w7NTE2Nzs7OztOOzs7OzsKKzJGODE1O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjgxNTtMbzswO0w7NTE4RDs7OztOOzs7OzsKKzJGODE2O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjgxNjtMbzswO0w7MjA1NEI7Ozs7Tjs7Ozs7CisyRjgxNztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4MTc7TG87MDtMOzUxOTc7Ozs7Tjs7Ozs7CisyRjgxODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4MTg7TG87MDtMOzUxQTQ7Ozs7Tjs7Ozs7CisyRjgxOTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4MTk7TG87MDtMOzRFQ0M7Ozs7Tjs7Ozs7CisyRjgxQTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4MUE7TG87MDtMOzUxQUM7Ozs7Tjs7Ozs7CisyRjgxQjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4MUI7TG87MDtMOzUxQjU7Ozs7Tjs7Ozs7CisyRjgxQztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4MUM7TG87MDtMOzI5MURGOzs7O047Ozs7OworMkY4MUQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODFEO0xvOzA7TDs1MUY1Ozs7O047Ozs7OworMkY4MUU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODFFO0xvOzA7TDs1MjAzOzs7O047Ozs7OworMkY4MUY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODFGO0xvOzA7TDszNERGOzs7O047Ozs7OworMkY4MjA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODIwO0xvOzA7TDs1MjNCOzs7O047Ozs7OworMkY4MjE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODIxO0xvOzA7TDs1MjQ2Ozs7O047Ozs7OworMkY4MjI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODIyO0xvOzA7TDs1MjcyOzs7O047Ozs7OworMkY4MjM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODIzO0xvOzA7TDs1Mjc3Ozs7O047Ozs7OworMkY4MjQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODI0O0xvOzA7TDszNTE1Ozs7O047Ozs7OworMkY4MjU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODI1O0xvOzA7TDs1MkM3Ozs7O047Ozs7OworMkY4MjY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODI2O0xvOzA7TDs1MkM5Ozs7O047Ozs7OworMkY4Mjc7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODI3O0xvOzA7TDs1MkU0Ozs7O047Ozs7OworMkY4Mjg7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODI4O0xvOzA7TDs1MkZBOzs7O047Ozs7OworMkY4Mjk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODI5O0xvOzA7TDs1MzA1Ozs7O047Ozs7OworMkY4MkE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODJBO0xvOzA7TDs1MzA2Ozs7O047Ozs7OworMkY4MkI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODJCO0xvOzA7TDs1MzE3Ozs7O047Ozs7OworMkY4MkM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODJDO0xvOzA7TDs1MzQ5Ozs7O047Ozs7OworMkY4MkQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODJEO0xvOzA7TDs1MzUxOzs7O047Ozs7OworMkY4MkU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODJFO0xvOzA7TDs1MzVBOzs7O047Ozs7OworMkY4MkY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODJGO0xvOzA7TDs1MzczOzs7O047Ozs7OworMkY4MzA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODMwO0xvOzA7TDs1MzdEOzs7O047Ozs7OworMkY4MzE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODMxO0xvOzA7TDs1MzdGOzs7O047Ozs7OworMkY4MzI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODMyO0xvOzA7TDs1MzdGOzs7O047Ozs7OworMkY4MzM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODMzO0xvOzA7TDs1MzdGOzs7O047Ozs7OworMkY4MzQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODM0O0xvOzA7TDsyMEEyQzs7OztOOzs7OzsKKzJGODM1O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjgzNTtMbzswO0w7NzA3MDs7OztOOzs7OzsKKzJGODM2O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjgzNjtMbzswO0w7NTNDQTs7OztOOzs7OzsKKzJGODM3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjgzNztMbzswO0w7NTNERjs7OztOOzs7OzsKKzJGODM4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjgzODtMbzswO0w7MjBCNjM7Ozs7Tjs7Ozs7CisyRjgzOTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4Mzk7TG87MDtMOzUzRUI7Ozs7Tjs7Ozs7CisyRjgzQTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4M0E7TG87MDtMOzUzRjE7Ozs7Tjs7Ozs7CisyRjgzQjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4M0I7TG87MDtMOzU0MDY7Ozs7Tjs7Ozs7CisyRjgzQztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4M0M7TG87MDtMOzU0OUU7Ozs7Tjs7Ozs7CisyRjgzRDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4M0Q7TG87MDtMOzU0Mzg7Ozs7Tjs7Ozs7CisyRjgzRTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4M0U7TG87MDtMOzU0NDg7Ozs7Tjs7Ozs7CisyRjgzRjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4M0Y7TG87MDtMOzU0Njg7Ozs7Tjs7Ozs7CisyRjg0MDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4NDA7TG87MDtMOzU0QTI7Ozs7Tjs7Ozs7CisyRjg0MTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4NDE7TG87MDtMOzU0RjY7Ozs7Tjs7Ozs7CisyRjg0MjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4NDI7TG87MDtMOzU1MTA7Ozs7Tjs7Ozs7CisyRjg0MztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4NDM7TG87MDtMOzU1NTM7Ozs7Tjs7Ozs7CisyRjg0NDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4NDQ7TG87MDtMOzU1NjM7Ozs7Tjs7Ozs7CisyRjg0NTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4NDU7TG87MDtMOzU1ODQ7Ozs7Tjs7Ozs7CisyRjg0NjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4NDY7TG87MDtMOzU1ODQ7Ozs7Tjs7Ozs7CisyRjg0NztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4NDc7TG87MDtMOzU1OTk7Ozs7Tjs7Ozs7CisyRjg0ODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4NDg7TG87MDtMOzU1QUI7Ozs7Tjs7Ozs7CisyRjg0OTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4NDk7TG87MDtMOzU1QjM7Ozs7Tjs7Ozs7CisyRjg0QTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4NEE7TG87MDtMOzU1QzI7Ozs7Tjs7Ozs7CisyRjg0QjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4NEI7TG87MDtMOzU3MTY7Ozs7Tjs7Ozs7CisyRjg0QztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4NEM7TG87MDtMOzU2MDY7Ozs7Tjs7Ozs7CisyRjg0RDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4NEQ7TG87MDtMOzU3MTc7Ozs7Tjs7Ozs7CisyRjg0RTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4NEU7TG87MDtMOzU2NTE7Ozs7Tjs7Ozs7CisyRjg0RjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4NEY7TG87MDtMOzU2NzQ7Ozs7Tjs7Ozs7CisyRjg1MDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4NTA7TG87MDtMOzUyMDc7Ozs7Tjs7Ozs7CisyRjg1MTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4NTE7TG87MDtMOzU4RUU7Ozs7Tjs7Ozs7CisyRjg1MjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4NTI7TG87MDtMOzU3Q0U7Ozs7Tjs7Ozs7CisyRjg1MztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4NTM7TG87MDtMOzU3RjQ7Ozs7Tjs7Ozs7CisyRjg1NDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4NTQ7TG87MDtMOzU4MEQ7Ozs7Tjs7Ozs7CisyRjg1NTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4NTU7TG87MDtMOzU3OEI7Ozs7Tjs7Ozs7CisyRjg1NjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4NTY7TG87MDtMOzU4MzI7Ozs7Tjs7Ozs7CisyRjg1NztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4NTc7TG87MDtMOzU4MzE7Ozs7Tjs7Ozs7CisyRjg1ODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4NTg7TG87MDtMOzU4QUM7Ozs7Tjs7Ozs7CisyRjg1OTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4NTk7TG87MDtMOzIxNEU0Ozs7O047Ozs7OworMkY4NUE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODVBO0xvOzA7TDs1OEYyOzs7O047Ozs7OworMkY4NUI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODVCO0xvOzA7TDs1OEY3Ozs7O047Ozs7OworMkY4NUM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODVDO0xvOzA7TDs1OTA2Ozs7O047Ozs7OworMkY4NUQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODVEO0xvOzA7TDs1OTFBOzs7O047Ozs7OworMkY4NUU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODVFO0xvOzA7TDs1OTIyOzs7O047Ozs7OworMkY4NUY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODVGO0xvOzA7TDs1OTYyOzs7O047Ozs7OworMkY4NjA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODYwO0xvOzA7TDsyMTZBODs7OztOOzs7OzsKKzJGODYxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjg2MTtMbzswO0w7MjE2RUE7Ozs7Tjs7Ozs7CisyRjg2MjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4NjI7TG87MDtMOzU5RUM7Ozs7Tjs7Ozs7CisyRjg2MztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4NjM7TG87MDtMOzVBMUI7Ozs7Tjs7Ozs7CisyRjg2NDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4NjQ7TG87MDtMOzVBMjc7Ozs7Tjs7Ozs7CisyRjg2NTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4NjU7TG87MDtMOzU5RDg7Ozs7Tjs7Ozs7CisyRjg2NjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4NjY7TG87MDtMOzVBNjY7Ozs7Tjs7Ozs7CisyRjg2NztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4Njc7TG87MDtMOzM2RUU7Ozs7Tjs7Ozs7CisyRjg2ODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4Njg7TG87MDtMOzIxMzZBOzs7O047Ozs7OworMkY4Njk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODY5O0xvOzA7TDs1QjA4Ozs7O047Ozs7OworMkY4NkE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODZBO0xvOzA7TDs1QjNFOzs7O047Ozs7OworMkY4NkI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODZCO0xvOzA7TDs1QjNFOzs7O047Ozs7OworMkY4NkM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODZDO0xvOzA7TDsyMTlDODs7OztOOzs7OzsKKzJGODZEO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjg2RDtMbzswO0w7NUJDMzs7OztOOzs7OzsKKzJGODZFO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjg2RTtMbzswO0w7NUJEODs7OztOOzs7OzsKKzJGODZGO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjg2RjtMbzswO0w7NUJFNzs7OztOOzs7OzsKKzJGODcwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjg3MDtMbzswO0w7NUJGMzs7OztOOzs7OzsKKzJGODcxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjg3MTtMbzswO0w7MjFCMTg7Ozs7Tjs7Ozs7CisyRjg3MjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4NzI7TG87MDtMOzVCRkY7Ozs7Tjs7Ozs7CisyRjg3MztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4NzM7TG87MDtMOzVDMDY7Ozs7Tjs7Ozs7CisyRjg3NDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4NzQ7TG87MDtMOzVGMzM7Ozs7Tjs7Ozs7CisyRjg3NTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4NzU7TG87MDtMOzVDMjI7Ozs7Tjs7Ozs7CisyRjg3NjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4NzY7TG87MDtMOzM3ODE7Ozs7Tjs7Ozs7CisyRjg3NztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4Nzc7TG87MDtMOzVDNjA7Ozs7Tjs7Ozs7CisyRjg3ODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4Nzg7TG87MDtMOzVDNkU7Ozs7Tjs7Ozs7CisyRjg3OTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4Nzk7TG87MDtMOzVDQzA7Ozs7Tjs7Ozs7CisyRjg3QTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4N0E7TG87MDtMOzVDOEQ7Ozs7Tjs7Ozs7CisyRjg3QjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4N0I7TG87MDtMOzIxREU0Ozs7O047Ozs7OworMkY4N0M7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODdDO0xvOzA7TDs1RDQzOzs7O047Ozs7OworMkY4N0Q7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODdEO0xvOzA7TDsyMURFNjs7OztOOzs7OzsKKzJGODdFO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjg3RTtMbzswO0w7NUQ2RTs7OztOOzs7OzsKKzJGODdGO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjg3RjtMbzswO0w7NUQ2Qjs7OztOOzs7OzsKKzJGODgwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjg4MDtMbzswO0w7NUQ3Qzs7OztOOzs7OzsKKzJGODgxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjg4MTtMbzswO0w7NURFMTs7OztOOzs7OzsKKzJGODgyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjg4MjtMbzswO0w7NURFMjs7OztOOzs7OzsKKzJGODgzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjg4MztMbzswO0w7MzgyRjs7OztOOzs7OzsKKzJGODg0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjg4NDtMbzswO0w7NURGRDs7OztOOzs7OzsKKzJGODg1O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjg4NTtMbzswO0w7NUUyODs7OztOOzs7OzsKKzJGODg2O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjg4NjtMbzswO0w7NUUzRDs7OztOOzs7OzsKKzJGODg3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjg4NztMbzswO0w7NUU2OTs7OztOOzs7OzsKKzJGODg4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjg4ODtMbzswO0w7Mzg2Mjs7OztOOzs7OzsKKzJGODg5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjg4OTtMbzswO0w7MjIxODM7Ozs7Tjs7Ozs7CisyRjg4QTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4OEE7TG87MDtMOzM4N0M7Ozs7Tjs7Ozs7CisyRjg4QjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4OEI7TG87MDtMOzVFQjA7Ozs7Tjs7Ozs7CisyRjg4QztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4OEM7TG87MDtMOzVFQjM7Ozs7Tjs7Ozs7CisyRjg4RDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4OEQ7TG87MDtMOzVFQjY7Ozs7Tjs7Ozs7CisyRjg4RTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4OEU7TG87MDtMOzVFQ0E7Ozs7Tjs7Ozs7CisyRjg4RjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4OEY7TG87MDtMOzJBMzkyOzs7O047Ozs7OworMkY4OTA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODkwO0xvOzA7TDs1RUZFOzs7O047Ozs7OworMkY4OTE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODkxO0xvOzA7TDsyMjMzMTs7OztOOzs7OzsKKzJGODkyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjg5MjtMbzswO0w7MjIzMzE7Ozs7Tjs7Ozs7CisyRjg5MztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4OTM7TG87MDtMOzgyMDE7Ozs7Tjs7Ozs7CisyRjg5NDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4OTQ7TG87MDtMOzVGMjI7Ozs7Tjs7Ozs7CisyRjg5NTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4OTU7TG87MDtMOzVGMjI7Ozs7Tjs7Ozs7CisyRjg5NjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4OTY7TG87MDtMOzM4Qzc7Ozs7Tjs7Ozs7CisyRjg5NztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4OTc7TG87MDtMOzIzMkI4Ozs7O047Ozs7OworMkY4OTg7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGODk4O0xvOzA7TDsyNjFEQTs7OztOOzs7OzsKKzJGODk5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjg5OTtMbzswO0w7NUY2Mjs7OztOOzs7OzsKKzJGODlBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjg5QTtMbzswO0w7NUY2Qjs7OztOOzs7OzsKKzJGODlCO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjg5QjtMbzswO0w7MzhFMzs7OztOOzs7OzsKKzJGODlDO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjg5QztMbzswO0w7NUY5QTs7OztOOzs7OzsKKzJGODlEO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjg5RDtMbzswO0w7NUZDRDs7OztOOzs7OzsKKzJGODlFO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjg5RTtMbzswO0w7NUZENzs7OztOOzs7OzsKKzJGODlGO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjg5RjtMbzswO0w7NUZGOTs7OztOOzs7OzsKKzJGOEEwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjhBMDtMbzswO0w7NjA4MTs7OztOOzs7OzsKKzJGOEExO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjhBMTtMbzswO0w7MzkzQTs7OztOOzs7OzsKKzJGOEEyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjhBMjtMbzswO0w7MzkxQzs7OztOOzs7OzsKKzJGOEEzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjhBMztMbzswO0w7NjA5NDs7OztOOzs7OzsKKzJGOEE0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjhBNDtMbzswO0w7MjI2RDQ7Ozs7Tjs7Ozs7CisyRjhBNTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4QTU7TG87MDtMOzYwQzc7Ozs7Tjs7Ozs7CisyRjhBNjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4QTY7TG87MDtMOzYxNDg7Ozs7Tjs7Ozs7CisyRjhBNztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4QTc7TG87MDtMOzYxNEM7Ozs7Tjs7Ozs7CisyRjhBODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4QTg7TG87MDtMOzYxNEU7Ozs7Tjs7Ozs7CisyRjhBOTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4QTk7TG87MDtMOzYxNEM7Ozs7Tjs7Ozs7CisyRjhBQTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4QUE7TG87MDtMOzYxN0E7Ozs7Tjs7Ozs7CisyRjhBQjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4QUI7TG87MDtMOzYxOEU7Ozs7Tjs7Ozs7CisyRjhBQztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4QUM7TG87MDtMOzYxQjI7Ozs7Tjs7Ozs7CisyRjhBRDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4QUQ7TG87MDtMOzYxQTQ7Ozs7Tjs7Ozs7CisyRjhBRTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4QUU7TG87MDtMOzYxQUY7Ozs7Tjs7Ozs7CisyRjhBRjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4QUY7TG87MDtMOzYxREU7Ozs7Tjs7Ozs7CisyRjhCMDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4QjA7TG87MDtMOzYxRjI7Ozs7Tjs7Ozs7CisyRjhCMTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4QjE7TG87MDtMOzYxRjY7Ozs7Tjs7Ozs7CisyRjhCMjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4QjI7TG87MDtMOzYyMTA7Ozs7Tjs7Ozs7CisyRjhCMztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4QjM7TG87MDtMOzYyMUI7Ozs7Tjs7Ozs7CisyRjhCNDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4QjQ7TG87MDtMOzYyNUQ7Ozs7Tjs7Ozs7CisyRjhCNTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4QjU7TG87MDtMOzYyQjE7Ozs7Tjs7Ozs7CisyRjhCNjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4QjY7TG87MDtMOzYyRDQ7Ozs7Tjs7Ozs7CisyRjhCNztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4Qjc7TG87MDtMOzYzNTA7Ozs7Tjs7Ozs7CisyRjhCODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4Qjg7TG87MDtMOzIyQjBDOzs7O047Ozs7OworMkY4Qjk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOEI5O0xvOzA7TDs2MzNEOzs7O047Ozs7OworMkY4QkE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOEJBO0xvOzA7TDs2MkZDOzs7O047Ozs7OworMkY4QkI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOEJCO0xvOzA7TDs2MzY4Ozs7O047Ozs7OworMkY4QkM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOEJDO0xvOzA7TDs2MzgzOzs7O047Ozs7OworMkY4QkQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOEJEO0xvOzA7TDs2M0U0Ozs7O047Ozs7OworMkY4QkU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOEJFO0xvOzA7TDsyMkJGMTs7OztOOzs7OzsKKzJGOEJGO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjhCRjtMbzswO0w7NjQyMjs7OztOOzs7OzsKKzJGOEMwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjhDMDtMbzswO0w7NjNDNTs7OztOOzs7OzsKKzJGOEMxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjhDMTtMbzswO0w7NjNBOTs7OztOOzs7OzsKKzJGOEMyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjhDMjtMbzswO0w7M0EyRTs7OztOOzs7OzsKKzJGOEMzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjhDMztMbzswO0w7NjQ2OTs7OztOOzs7OzsKKzJGOEM0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjhDNDtMbzswO0w7NjQ3RTs7OztOOzs7OzsKKzJGOEM1O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjhDNTtMbzswO0w7NjQ5RDs7OztOOzs7OzsKKzJGOEM2O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjhDNjtMbzswO0w7NjQ3Nzs7OztOOzs7OzsKKzJGOEM3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjhDNztMbzswO0w7M0E2Qzs7OztOOzs7OzsKKzJGOEM4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjhDODtMbzswO0w7NjU0Rjs7OztOOzs7OzsKKzJGOEM5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjhDOTtMbzswO0w7NjU2Qzs7OztOOzs7OzsKKzJGOENBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjhDQTtMbzswO0w7MjMwMEE7Ozs7Tjs7Ozs7CisyRjhDQjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4Q0I7TG87MDtMOzY1RTM7Ozs7Tjs7Ozs7CisyRjhDQztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4Q0M7TG87MDtMOzY2Rjg7Ozs7Tjs7Ozs7CisyRjhDRDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4Q0Q7TG87MDtMOzY2NDk7Ozs7Tjs7Ozs7CisyRjhDRTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4Q0U7TG87MDtMOzNCMTk7Ozs7Tjs7Ozs7CisyRjhDRjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4Q0Y7TG87MDtMOzY2OTE7Ozs7Tjs7Ozs7CisyRjhEMDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4RDA7TG87MDtMOzNCMDg7Ozs7Tjs7Ozs7CisyRjhEMTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4RDE7TG87MDtMOzNBRTQ7Ozs7Tjs7Ozs7CisyRjhEMjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4RDI7TG87MDtMOzUxOTI7Ozs7Tjs7Ozs7CisyRjhEMztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4RDM7TG87MDtMOzUxOTU7Ozs7Tjs7Ozs7CisyRjhENDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4RDQ7TG87MDtMOzY3MDA7Ozs7Tjs7Ozs7CisyRjhENTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4RDU7TG87MDtMOzY2OUM7Ozs7Tjs7Ozs7CisyRjhENjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4RDY7TG87MDtMOzgwQUQ7Ozs7Tjs7Ozs7CisyRjhENztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4RDc7TG87MDtMOzQzRDk7Ozs7Tjs7Ozs7CisyRjhEODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4RDg7TG87MDtMOzY3MTc7Ozs7Tjs7Ozs7CisyRjhEOTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4RDk7TG87MDtMOzY3MUI7Ozs7Tjs7Ozs7CisyRjhEQTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4REE7TG87MDtMOzY3MjE7Ozs7Tjs7Ozs7CisyRjhEQjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4REI7TG87MDtMOzY3NUU7Ozs7Tjs7Ozs7CisyRjhEQztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4REM7TG87MDtMOzY3NTM7Ozs7Tjs7Ozs7CisyRjhERDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4REQ7TG87MDtMOzIzM0MzOzs7O047Ozs7OworMkY4REU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOERFO0xvOzA7TDszQjQ5Ozs7O047Ozs7OworMkY4REY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOERGO0xvOzA7TDs2N0ZBOzs7O047Ozs7OworMkY4RTA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOEUwO0xvOzA7TDs2Nzg1Ozs7O047Ozs7OworMkY4RTE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOEUxO0xvOzA7TDs2ODUyOzs7O047Ozs7OworMkY4RTI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOEUyO0xvOzA7TDs2ODg1Ozs7O047Ozs7OworMkY4RTM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOEUzO0xvOzA7TDsyMzQ2RDs7OztOOzs7OzsKKzJGOEU0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjhFNDtMbzswO0w7Njg4RTs7OztOOzs7OzsKKzJGOEU1O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjhFNTtMbzswO0w7NjgxRjs7OztOOzs7OzsKKzJGOEU2O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjhFNjtMbzswO0w7NjkxNDs7OztOOzs7OzsKKzJGOEU3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjhFNztMbzswO0w7M0I5RDs7OztOOzs7OzsKKzJGOEU4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjhFODtMbzswO0w7Njk0Mjs7OztOOzs7OzsKKzJGOEU5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjhFOTtMbzswO0w7NjlBMzs7OztOOzs7OzsKKzJGOEVBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjhFQTtMbzswO0w7NjlFQTs7OztOOzs7OzsKKzJGOEVCO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjhFQjtMbzswO0w7NkFBODs7OztOOzs7OzsKKzJGOEVDO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjhFQztMbzswO0w7MjM2QTM7Ozs7Tjs7Ozs7CisyRjhFRDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4RUQ7TG87MDtMOzZBREI7Ozs7Tjs7Ozs7CisyRjhFRTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4RUU7TG87MDtMOzNDMTg7Ozs7Tjs7Ozs7CisyRjhFRjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4RUY7TG87MDtMOzZCMjE7Ozs7Tjs7Ozs7CisyRjhGMDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4RjA7TG87MDtMOzIzOEE3Ozs7O047Ozs7OworMkY4RjE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOEYxO0xvOzA7TDs2QjU0Ozs7O047Ozs7OworMkY4RjI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOEYyO0xvOzA7TDszQzRFOzs7O047Ozs7OworMkY4RjM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOEYzO0xvOzA7TDs2QjcyOzs7O047Ozs7OworMkY4RjQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOEY0O0xvOzA7TDs2QjlGOzs7O047Ozs7OworMkY4RjU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOEY1O0xvOzA7TDs2QkJBOzs7O047Ozs7OworMkY4RjY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOEY2O0xvOzA7TDs2QkJCOzs7O047Ozs7OworMkY4Rjc7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOEY3O0xvOzA7TDsyM0E4RDs7OztOOzs7OzsKKzJGOEY4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjhGODtMbzswO0w7MjFEMEI7Ozs7Tjs7Ozs7CisyRjhGOTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY4Rjk7TG87MDtMOzIzQUZBOzs7O047Ozs7OworMkY4RkE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOEZBO0xvOzA7TDs2QzRFOzs7O047Ozs7OworMkY4RkI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOEZCO0xvOzA7TDsyM0NCQzs7OztOOzs7OzsKKzJGOEZDO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjhGQztMbzswO0w7NkNCRjs7OztOOzs7OzsKKzJGOEZEO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjhGRDtMbzswO0w7NkNDRDs7OztOOzs7OzsKKzJGOEZFO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjhGRTtMbzswO0w7NkM2Nzs7OztOOzs7OzsKKzJGOEZGO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjhGRjtMbzswO0w7NkQxNjs7OztOOzs7OzsKKzJGOTAwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjkwMDtMbzswO0w7NkQzRTs7OztOOzs7OzsKKzJGOTAxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjkwMTtMbzswO0w7NkQ3Nzs7OztOOzs7OzsKKzJGOTAyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjkwMjtMbzswO0w7NkQ0MTs7OztOOzs7OzsKKzJGOTAzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjkwMztMbzswO0w7NkQ2OTs7OztOOzs7OzsKKzJGOTA0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjkwNDtMbzswO0w7NkQ3ODs7OztOOzs7OzsKKzJGOTA1O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjkwNTtMbzswO0w7NkQ4NTs7OztOOzs7OzsKKzJGOTA2O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjkwNjtMbzswO0w7MjNEMUU7Ozs7Tjs7Ozs7CisyRjkwNztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5MDc7TG87MDtMOzZEMzQ7Ozs7Tjs7Ozs7CisyRjkwODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5MDg7TG87MDtMOzZFMkY7Ozs7Tjs7Ozs7CisyRjkwOTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5MDk7TG87MDtMOzZFNkU7Ozs7Tjs7Ozs7CisyRjkwQTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5MEE7TG87MDtMOzNEMzM7Ozs7Tjs7Ozs7CisyRjkwQjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5MEI7TG87MDtMOzZFQ0I7Ozs7Tjs7Ozs7CisyRjkwQztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5MEM7TG87MDtMOzZFQzc7Ozs7Tjs7Ozs7CisyRjkwRDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5MEQ7TG87MDtMOzIzRUQxOzs7O047Ozs7OworMkY5MEU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTBFO0xvOzA7TDs2REY5Ozs7O047Ozs7OworMkY5MEY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTBGO0xvOzA7TDs2RjZFOzs7O047Ozs7OworMkY5MTA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTEwO0xvOzA7TDsyM0Y1RTs7OztOOzs7OzsKKzJGOTExO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjkxMTtMbzswO0w7MjNGOEU7Ozs7Tjs7Ozs7CisyRjkxMjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5MTI7TG87MDtMOzZGQzY7Ozs7Tjs7Ozs7CisyRjkxMztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5MTM7TG87MDtMOzcwMzk7Ozs7Tjs7Ozs7CisyRjkxNDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5MTQ7TG87MDtMOzcwMUU7Ozs7Tjs7Ozs7CisyRjkxNTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5MTU7TG87MDtMOzcwMUI7Ozs7Tjs7Ozs7CisyRjkxNjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5MTY7TG87MDtMOzNEOTY7Ozs7Tjs7Ozs7CisyRjkxNztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5MTc7TG87MDtMOzcwNEE7Ozs7Tjs7Ozs7CisyRjkxODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5MTg7TG87MDtMOzcwN0Q7Ozs7Tjs7Ozs7CisyRjkxOTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5MTk7TG87MDtMOzcwNzc7Ozs7Tjs7Ozs7CisyRjkxQTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5MUE7TG87MDtMOzcwQUQ7Ozs7Tjs7Ozs7CisyRjkxQjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5MUI7TG87MDtMOzIwNTI1Ozs7O047Ozs7OworMkY5MUM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTFDO0xvOzA7TDs3MTQ1Ozs7O047Ozs7OworMkY5MUQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTFEO0xvOzA7TDsyNDI2Mzs7OztOOzs7OzsKKzJGOTFFO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjkxRTtMbzswO0w7NzE5Qzs7OztOOzs7OzsKKzJGOTFGO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjkxRjtMbzswO0w7NDNBQjs7OztOOzs7OzsKKzJGOTIwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjkyMDtMbzswO0w7NzIyODs7OztOOzs7OzsKKzJGOTIxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjkyMTtMbzswO0w7NzIzNTs7OztOOzs7OzsKKzJGOTIyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjkyMjtMbzswO0w7NzI1MDs7OztOOzs7OzsKKzJGOTIzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjkyMztMbzswO0w7MjQ2MDg7Ozs7Tjs7Ozs7CisyRjkyNDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5MjQ7TG87MDtMOzcyODA7Ozs7Tjs7Ozs7CisyRjkyNTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5MjU7TG87MDtMOzcyOTU7Ozs7Tjs7Ozs7CisyRjkyNjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5MjY7TG87MDtMOzI0NzM1Ozs7O047Ozs7OworMkY5Mjc7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTI3O0xvOzA7TDsyNDgxNDs7OztOOzs7OzsKKzJGOTI4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjkyODtMbzswO0w7NzM3QTs7OztOOzs7OzsKKzJGOTI5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjkyOTtMbzswO0w7NzM4Qjs7OztOOzs7OzsKKzJGOTJBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjkyQTtMbzswO0w7M0VBQzs7OztOOzs7OzsKKzJGOTJCO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjkyQjtMbzswO0w7NzNBNTs7OztOOzs7OzsKKzJGOTJDO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjkyQztMbzswO0w7M0VCODs7OztOOzs7OzsKKzJGOTJEO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjkyRDtMbzswO0w7M0VCODs7OztOOzs7OzsKKzJGOTJFO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjkyRTtMbzswO0w7NzQ0Nzs7OztOOzs7OzsKKzJGOTJGO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjkyRjtMbzswO0w7NzQ1Qzs7OztOOzs7OzsKKzJGOTMwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjkzMDtMbzswO0w7NzQ3MTs7OztOOzs7OzsKKzJGOTMxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjkzMTtMbzswO0w7NzQ4NTs7OztOOzs7OzsKKzJGOTMyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjkzMjtMbzswO0w7NzRDQTs7OztOOzs7OzsKKzJGOTMzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjkzMztMbzswO0w7M0YxQjs7OztOOzs7OzsKKzJGOTM0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjkzNDtMbzswO0w7NzUyNDs7OztOOzs7OzsKKzJGOTM1O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjkzNTtMbzswO0w7MjRDMzY7Ozs7Tjs7Ozs7CisyRjkzNjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5MzY7TG87MDtMOzc1M0U7Ozs7Tjs7Ozs7CisyRjkzNztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5Mzc7TG87MDtMOzI0QzkyOzs7O047Ozs7OworMkY5Mzg7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTM4O0xvOzA7TDs3NTcwOzs7O047Ozs7OworMkY5Mzk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTM5O0xvOzA7TDsyMjE5Rjs7OztOOzs7OzsKKzJGOTNBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjkzQTtMbzswO0w7NzYxMDs7OztOOzs7OzsKKzJGOTNCO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjkzQjtMbzswO0w7MjRGQTE7Ozs7Tjs7Ozs7CisyRjkzQztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5M0M7TG87MDtMOzI0RkI4Ozs7O047Ozs7OworMkY5M0Q7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTNEO0xvOzA7TDsyNTA0NDs7OztOOzs7OzsKKzJGOTNFO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjkzRTtMbzswO0w7M0ZGQzs7OztOOzs7OzsKKzJGOTNGO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjkzRjtMbzswO0w7NDAwODs7OztOOzs7OzsKKzJGOTQwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjk0MDtMbzswO0w7NzZGNDs7OztOOzs7OzsKKzJGOTQxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjk0MTtMbzswO0w7MjUwRjM7Ozs7Tjs7Ozs7CisyRjk0MjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5NDI7TG87MDtMOzI1MEYyOzs7O047Ozs7OworMkY5NDM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTQzO0xvOzA7TDsyNTExOTs7OztOOzs7OzsKKzJGOTQ0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjk0NDtMbzswO0w7MjUxMzM7Ozs7Tjs7Ozs7CisyRjk0NTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5NDU7TG87MDtMOzc3MUU7Ozs7Tjs7Ozs7CisyRjk0NjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5NDY7TG87MDtMOzc3MUY7Ozs7Tjs7Ozs7CisyRjk0NztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5NDc7TG87MDtMOzc3MUY7Ozs7Tjs7Ozs7CisyRjk0ODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5NDg7TG87MDtMOzc3NEE7Ozs7Tjs7Ozs7CisyRjk0OTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5NDk7TG87MDtMOzQwMzk7Ozs7Tjs7Ozs7CisyRjk0QTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5NEE7TG87MDtMOzc3OEI7Ozs7Tjs7Ozs7CisyRjk0QjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5NEI7TG87MDtMOzQwNDY7Ozs7Tjs7Ozs7CisyRjk0QztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5NEM7TG87MDtMOzQwOTY7Ozs7Tjs7Ozs7CisyRjk0RDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5NEQ7TG87MDtMOzI1NDFEOzs7O047Ozs7OworMkY5NEU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTRFO0xvOzA7TDs3ODRFOzs7O047Ozs7OworMkY5NEY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTRGO0xvOzA7TDs3ODhDOzs7O047Ozs7OworMkY5NTA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTUwO0xvOzA7TDs3OENDOzs7O047Ozs7OworMkY5NTE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTUxO0xvOzA7TDs0MEUzOzs7O047Ozs7OworMkY5NTI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTUyO0xvOzA7TDsyNTYyNjs7OztOOzs7OzsKKzJGOTUzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjk1MztMbzswO0w7Nzk1Njs7OztOOzs7OzsKKzJGOTU0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjk1NDtMbzswO0w7MjU2OUE7Ozs7Tjs7Ozs7CisyRjk1NTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5NTU7TG87MDtMOzI1NkM1Ozs7O047Ozs7OworMkY5NTY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTU2O0xvOzA7TDs3OThGOzs7O047Ozs7OworMkY5NTc7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTU3O0xvOzA7TDs3OUVCOzs7O047Ozs7OworMkY5NTg7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTU4O0xvOzA7TDs0MTJGOzs7O047Ozs7OworMkY5NTk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTU5O0xvOzA7TDs3QTQwOzs7O047Ozs7OworMkY5NUE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTVBO0xvOzA7TDs3QTRBOzs7O047Ozs7OworMkY5NUI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTVCO0xvOzA7TDs3QTRGOzs7O047Ozs7OworMkY5NUM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTVDO0xvOzA7TDsyNTk3Qzs7OztOOzs7OzsKKzJGOTVEO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjk1RDtMbzswO0w7MjVBQTc7Ozs7Tjs7Ozs7CisyRjk1RTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5NUU7TG87MDtMOzI1QUE3Ozs7O047Ozs7OworMkY5NUY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTVGO0xvOzA7TDs3QUFFOzs7O047Ozs7OworMkY5NjA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTYwO0xvOzA7TDs0MjAyOzs7O047Ozs7OworMkY5NjE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTYxO0xvOzA7TDsyNUJBQjs7OztOOzs7OzsKKzJGOTYyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjk2MjtMbzswO0w7N0JDNjs7OztOOzs7OzsKKzJGOTYzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjk2MztMbzswO0w7N0JDOTs7OztOOzs7OzsKKzJGOTY0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjk2NDtMbzswO0w7NDIyNzs7OztOOzs7OzsKKzJGOTY1O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjk2NTtMbzswO0w7MjVDODA7Ozs7Tjs7Ozs7CisyRjk2NjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5NjY7TG87MDtMOzdDRDI7Ozs7Tjs7Ozs7CisyRjk2NztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5Njc7TG87MDtMOzQyQTA7Ozs7Tjs7Ozs7CisyRjk2ODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5Njg7TG87MDtMOzdDRTg7Ozs7Tjs7Ozs7CisyRjk2OTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5Njk7TG87MDtMOzdDRTM7Ozs7Tjs7Ozs7CisyRjk2QTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5NkE7TG87MDtMOzdEMDA7Ozs7Tjs7Ozs7CisyRjk2QjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5NkI7TG87MDtMOzI1Rjg2Ozs7O047Ozs7OworMkY5NkM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTZDO0xvOzA7TDs3RDYzOzs7O047Ozs7OworMkY5NkQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTZEO0xvOzA7TDs0MzAxOzs7O047Ozs7OworMkY5NkU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTZFO0xvOzA7TDs3REM3Ozs7O047Ozs7OworMkY5NkY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTZGO0xvOzA7TDs3RTAyOzs7O047Ozs7OworMkY5NzA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTcwO0xvOzA7TDs3RTQ1Ozs7O047Ozs7OworMkY5NzE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTcxO0xvOzA7TDs0MzM0Ozs7O047Ozs7OworMkY5NzI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTcyO0xvOzA7TDsyNjIyODs7OztOOzs7OzsKKzJGOTczO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjk3MztMbzswO0w7MjYyNDc7Ozs7Tjs7Ozs7CisyRjk3NDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5NzQ7TG87MDtMOzQzNTk7Ozs7Tjs7Ozs7CisyRjk3NTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5NzU7TG87MDtMOzI2MkQ5Ozs7O047Ozs7OworMkY5NzY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTc2O0xvOzA7TDs3RjdBOzs7O047Ozs7OworMkY5Nzc7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTc3O0xvOzA7TDsyNjMzRTs7OztOOzs7OzsKKzJGOTc4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjk3ODtMbzswO0w7N0Y5NTs7OztOOzs7OzsKKzJGOTc5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjk3OTtMbzswO0w7N0ZGQTs7OztOOzs7OzsKKzJGOTdBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjk3QTtMbzswO0w7ODAwNTs7OztOOzs7OzsKKzJGOTdCO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjk3QjtMbzswO0w7MjY0REE7Ozs7Tjs7Ozs7CisyRjk3QztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5N0M7TG87MDtMOzI2NTIzOzs7O047Ozs7OworMkY5N0Q7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTdEO0xvOzA7TDs4MDYwOzs7O047Ozs7OworMkY5N0U7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTdFO0xvOzA7TDsyNjVBODs7OztOOzs7OzsKKzJGOTdGO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjk3RjtMbzswO0w7ODA3MDs7OztOOzs7OzsKKzJGOTgwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjk4MDtMbzswO0w7MjMzNUY7Ozs7Tjs7Ozs7CisyRjk4MTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5ODE7TG87MDtMOzQzRDU7Ozs7Tjs7Ozs7CisyRjk4MjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5ODI7TG87MDtMOzgwQjI7Ozs7Tjs7Ozs7CisyRjk4MztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5ODM7TG87MDtMOzgxMDM7Ozs7Tjs7Ozs7CisyRjk4NDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5ODQ7TG87MDtMOzQ0MEI7Ozs7Tjs7Ozs7CisyRjk4NTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5ODU7TG87MDtMOzgxM0U7Ozs7Tjs7Ozs7CisyRjk4NjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5ODY7TG87MDtMOzVBQjU7Ozs7Tjs7Ozs7CisyRjk4NztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5ODc7TG87MDtMOzI2N0E3Ozs7O047Ozs7OworMkY5ODg7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTg4O0xvOzA7TDsyNjdCNTs7OztOOzs7OzsKKzJGOTg5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjk4OTtMbzswO0w7MjMzOTM7Ozs7Tjs7Ozs7CisyRjk4QTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5OEE7TG87MDtMOzIzMzlDOzs7O047Ozs7OworMkY5OEI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOThCO0xvOzA7TDs4MjAxOzs7O047Ozs7OworMkY5OEM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOThDO0xvOzA7TDs4MjA0Ozs7O047Ozs7OworMkY5OEQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOThEO0xvOzA7TDs4RjlFOzs7O047Ozs7OworMkY5OEU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOThFO0xvOzA7TDs0NDZCOzs7O047Ozs7OworMkY5OEY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOThGO0xvOzA7TDs4MjkxOzs7O047Ozs7OworMkY5OTA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTkwO0xvOzA7TDs4MjhCOzs7O047Ozs7OworMkY5OTE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTkxO0xvOzA7TDs4MjlEOzs7O047Ozs7OworMkY5OTI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTkyO0xvOzA7TDs1MkIzOzs7O047Ozs7OworMkY5OTM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTkzO0xvOzA7TDs4MkIxOzs7O047Ozs7OworMkY5OTQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTk0O0xvOzA7TDs4MkIzOzs7O047Ozs7OworMkY5OTU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTk1O0xvOzA7TDs4MkJEOzs7O047Ozs7OworMkY5OTY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTk2O0xvOzA7TDs4MkU2Ozs7O047Ozs7OworMkY5OTc7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOTk3O0xvOzA7TDsyNkIzQzs7OztOOzs7OzsKKzJGOTk4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjk5ODtMbzswO0w7ODJFNTs7OztOOzs7OzsKKzJGOTk5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjk5OTtMbzswO0w7ODMxRDs7OztOOzs7OzsKKzJGOTlBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjk5QTtMbzswO0w7ODM2Mzs7OztOOzs7OzsKKzJGOTlCO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjk5QjtMbzswO0w7ODNBRDs7OztOOzs7OzsKKzJGOTlDO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjk5QztMbzswO0w7ODMyMzs7OztOOzs7OzsKKzJGOTlEO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjk5RDtMbzswO0w7ODNCRDs7OztOOzs7OzsKKzJGOTlFO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjk5RTtMbzswO0w7ODNFNzs7OztOOzs7OzsKKzJGOTlGO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjk5RjtMbzswO0w7ODQ1Nzs7OztOOzs7OzsKKzJGOUEwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjlBMDtMbzswO0w7ODM1Mzs7OztOOzs7OzsKKzJGOUExO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjlBMTtMbzswO0w7ODNDQTs7OztOOzs7OzsKKzJGOUEyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjlBMjtMbzswO0w7ODNDQzs7OztOOzs7OzsKKzJGOUEzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjlBMztMbzswO0w7ODNEQzs7OztOOzs7OzsKKzJGOUE0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjlBNDtMbzswO0w7MjZDMzY7Ozs7Tjs7Ozs7CisyRjlBNTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5QTU7TG87MDtMOzI2RDZCOzs7O047Ozs7OworMkY5QTY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOUE2O0xvOzA7TDsyNkNENTs7OztOOzs7OzsKKzJGOUE3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjlBNztMbzswO0w7NDUyQjs7OztOOzs7OzsKKzJGOUE4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjlBODtMbzswO0w7ODRGMTs7OztOOzs7OzsKKzJGOUE5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjlBOTtMbzswO0w7ODRGMzs7OztOOzs7OzsKKzJGOUFBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjlBQTtMbzswO0w7ODUxNjs7OztOOzs7OzsKKzJGOUFCO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjlBQjtMbzswO0w7MjczQ0E7Ozs7Tjs7Ozs7CisyRjlBQztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5QUM7TG87MDtMOzg1NjQ7Ozs7Tjs7Ozs7CisyRjlBRDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5QUQ7TG87MDtMOzI2RjJDOzs7O047Ozs7OworMkY5QUU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOUFFO0xvOzA7TDs0NTVEOzs7O047Ozs7OworMkY5QUY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOUFGO0xvOzA7TDs0NTYxOzs7O047Ozs7OworMkY5QjA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOUIwO0xvOzA7TDsyNkZCMTs7OztOOzs7OzsKKzJGOUIxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjlCMTtMbzswO0w7MjcwRDI7Ozs7Tjs7Ozs7CisyRjlCMjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5QjI7TG87MDtMOzQ1NkI7Ozs7Tjs7Ozs7CisyRjlCMztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5QjM7TG87MDtMOzg2NTA7Ozs7Tjs7Ozs7CisyRjlCNDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5QjQ7TG87MDtMOzg2NUM7Ozs7Tjs7Ozs7CisyRjlCNTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5QjU7TG87MDtMOzg2Njc7Ozs7Tjs7Ozs7CisyRjlCNjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5QjY7TG87MDtMOzg2Njk7Ozs7Tjs7Ozs7CisyRjlCNztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5Qjc7TG87MDtMOzg2QTk7Ozs7Tjs7Ozs7CisyRjlCODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5Qjg7TG87MDtMOzg2ODg7Ozs7Tjs7Ozs7CisyRjlCOTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5Qjk7TG87MDtMOzg3MEU7Ozs7Tjs7Ozs7CisyRjlCQTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5QkE7TG87MDtMOzg2RTI7Ozs7Tjs7Ozs7CisyRjlCQjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5QkI7TG87MDtMOzg3Nzk7Ozs7Tjs7Ozs7CisyRjlCQztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5QkM7TG87MDtMOzg3Mjg7Ozs7Tjs7Ozs7CisyRjlCRDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5QkQ7TG87MDtMOzg3NkI7Ozs7Tjs7Ozs7CisyRjlCRTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5QkU7TG87MDtMOzg3ODY7Ozs7Tjs7Ozs7CisyRjlCRjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5QkY7TG87MDtMOzRENTc7Ozs7Tjs7Ozs7CisyRjlDMDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5QzA7TG87MDtMOzg3RTE7Ozs7Tjs7Ozs7CisyRjlDMTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5QzE7TG87MDtMOzg4MDE7Ozs7Tjs7Ozs7CisyRjlDMjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5QzI7TG87MDtMOzQ1Rjk7Ozs7Tjs7Ozs7CisyRjlDMztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5QzM7TG87MDtMOzg4NjA7Ozs7Tjs7Ozs7CisyRjlDNDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5QzQ7TG87MDtMOzg4NjM7Ozs7Tjs7Ozs7CisyRjlDNTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5QzU7TG87MDtMOzI3NjY3Ozs7O047Ozs7OworMkY5QzY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOUM2O0xvOzA7TDs4OEQ3Ozs7O047Ozs7OworMkY5Qzc7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOUM3O0xvOzA7TDs4OERFOzs7O047Ozs7OworMkY5Qzg7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOUM4O0xvOzA7TDs0NjM1Ozs7O047Ozs7OworMkY5Qzk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOUM5O0xvOzA7TDs4OEZBOzs7O047Ozs7OworMkY5Q0E7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOUNBO0xvOzA7TDszNEJCOzs7O047Ozs7OworMkY5Q0I7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOUNCO0xvOzA7TDsyNzhBRTs7OztOOzs7OzsKKzJGOUNDO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjlDQztMbzswO0w7Mjc5NjY7Ozs7Tjs7Ozs7CisyRjlDRDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5Q0Q7TG87MDtMOzQ2QkU7Ozs7Tjs7Ozs7CisyRjlDRTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5Q0U7TG87MDtMOzQ2Qzc7Ozs7Tjs7Ozs7CisyRjlDRjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5Q0Y7TG87MDtMOzhBQTA7Ozs7Tjs7Ozs7CisyRjlEMDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5RDA7TG87MDtMOzhBRUQ7Ozs7Tjs7Ozs7CisyRjlEMTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5RDE7TG87MDtMOzhCOEE7Ozs7Tjs7Ozs7CisyRjlEMjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5RDI7TG87MDtMOzhDNTU7Ozs7Tjs7Ozs7CisyRjlEMztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5RDM7TG87MDtMOzI3Q0E4Ozs7O047Ozs7OworMkY5RDQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOUQ0O0xvOzA7TDs4Q0FCOzs7O047Ozs7OworMkY5RDU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOUQ1O0xvOzA7TDs4Q0MxOzs7O047Ozs7OworMkY5RDY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOUQ2O0xvOzA7TDs4RDFCOzs7O047Ozs7OworMkY5RDc7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOUQ3O0xvOzA7TDs4RDc3Ozs7O047Ozs7OworMkY5RDg7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOUQ4O0xvOzA7TDsyN0YyRjs7OztOOzs7OzsKKzJGOUQ5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjlEOTtMbzswO0w7MjA4MDQ7Ozs7Tjs7Ozs7CisyRjlEQTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5REE7TG87MDtMOzhEQ0I7Ozs7Tjs7Ozs7CisyRjlEQjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5REI7TG87MDtMOzhEQkM7Ozs7Tjs7Ozs7CisyRjlEQztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5REM7TG87MDtMOzhERjA7Ozs7Tjs7Ozs7CisyRjlERDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5REQ7TG87MDtMOzIwOERFOzs7O047Ozs7OworMkY5REU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOURFO0xvOzA7TDs4RUQ0Ozs7O047Ozs7OworMkY5REY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOURGO0xvOzA7TDs4RjM4Ozs7O047Ozs7OworMkY5RTA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOUUwO0xvOzA7TDsyODVEMjs7OztOOzs7OzsKKzJGOUUxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjlFMTtMbzswO0w7Mjg1RUQ7Ozs7Tjs7Ozs7CisyRjlFMjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5RTI7TG87MDtMOzkwOTQ7Ozs7Tjs7Ozs7CisyRjlFMztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5RTM7TG87MDtMOzkwRjE7Ozs7Tjs7Ozs7CisyRjlFNDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5RTQ7TG87MDtMOzkxMTE7Ozs7Tjs7Ozs7CisyRjlFNTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5RTU7TG87MDtMOzI4NzJFOzs7O047Ozs7OworMkY5RTY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOUU2O0xvOzA7TDs5MTFCOzs7O047Ozs7OworMkY5RTc7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOUU3O0xvOzA7TDs5MjM4Ozs7O047Ozs7OworMkY5RTg7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOUU4O0xvOzA7TDs5MkQ3Ozs7O047Ozs7OworMkY5RTk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOUU5O0xvOzA7TDs5MkQ4Ozs7O047Ozs7OworMkY5RUE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOUVBO0xvOzA7TDs5MjdDOzs7O047Ozs7OworMkY5RUI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOUVCO0xvOzA7TDs5M0Y5Ozs7O047Ozs7OworMkY5RUM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOUVDO0xvOzA7TDs5NDE1Ozs7O047Ozs7OworMkY5RUQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOUVEO0xvOzA7TDsyOEJGQTs7OztOOzs7OzsKKzJGOUVFO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjlFRTtMbzswO0w7OTU4Qjs7OztOOzs7OzsKKzJGOUVGO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjlFRjtMbzswO0w7NDk5NTs7OztOOzs7OzsKKzJGOUYwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjlGMDtMbzswO0w7OTVCNzs7OztOOzs7OzsKKzJGOUYxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjlGMTtMbzswO0w7MjhENzc7Ozs7Tjs7Ozs7CisyRjlGMjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5RjI7TG87MDtMOzQ5RTY7Ozs7Tjs7Ozs7CisyRjlGMztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5RjM7TG87MDtMOzk2QzM7Ozs7Tjs7Ozs7CisyRjlGNDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5RjQ7TG87MDtMOzVEQjI7Ozs7Tjs7Ozs7CisyRjlGNTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5RjU7TG87MDtMOzk3MjM7Ozs7Tjs7Ozs7CisyRjlGNjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5RjY7TG87MDtMOzI5MTQ1Ozs7O047Ozs7OworMkY5Rjc7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOUY3O0xvOzA7TDsyOTIxQTs7OztOOzs7OzsKKzJGOUY4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjlGODtMbzswO0w7NEE2RTs7OztOOzs7OzsKKzJGOUY5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjlGOTtMbzswO0w7NEE3Njs7OztOOzs7OzsKKzJGOUZBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjlGQTtMbzswO0w7OTdFMDs7OztOOzs7OzsKKzJGOUZCO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRjlGQjtMbzswO0w7Mjk0MEE7Ozs7Tjs7Ozs7CisyRjlGQztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5RkM7TG87MDtMOzRBQjI7Ozs7Tjs7Ozs7CisyRjlGRDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkY5RkQ7TG87MDtMOzI5NDk2Ozs7O047Ozs7OworMkY5RkU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOUZFO0xvOzA7TDs5ODBCOzs7O047Ozs7OworMkY5RkY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGOUZGO0xvOzA7TDs5ODBCOzs7O047Ozs7OworMkZBMDA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGQTAwO0xvOzA7TDs5ODI5Ozs7O047Ozs7OworMkZBMDE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGQTAxO0xvOzA7TDsyOTVCNjs7OztOOzs7OzsKKzJGQTAyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRkEwMjtMbzswO0w7OThFMjs7OztOOzs7OzsKKzJGQTAzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRkEwMztMbzswO0w7NEIzMzs7OztOOzs7OzsKKzJGQTA0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRkEwNDtMbzswO0w7OTkyOTs7OztOOzs7OzsKKzJGQTA1O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRkEwNTtMbzswO0w7OTlBNzs7OztOOzs7OzsKKzJGQTA2O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRkEwNjtMbzswO0w7OTlDMjs7OztOOzs7OzsKKzJGQTA3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRkEwNztMbzswO0w7OTlGRTs7OztOOzs7OzsKKzJGQTA4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRkEwODtMbzswO0w7NEJDRTs7OztOOzs7OzsKKzJGQTA5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRkEwOTtMbzswO0w7MjlCMzA7Ozs7Tjs7Ozs7CisyRkEwQTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkZBMEE7TG87MDtMOzlCMTI7Ozs7Tjs7Ozs7CisyRkEwQjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkZBMEI7TG87MDtMOzlDNDA7Ozs7Tjs7Ozs7CisyRkEwQztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkZBMEM7TG87MDtMOzlDRkQ7Ozs7Tjs7Ozs7CisyRkEwRDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkZBMEQ7TG87MDtMOzRDQ0U7Ozs7Tjs7Ozs7CisyRkEwRTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkZBMEU7TG87MDtMOzRDRUQ7Ozs7Tjs7Ozs7CisyRkEwRjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkZBMEY7TG87MDtMOzlENjc7Ozs7Tjs7Ozs7CisyRkExMDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkZBMTA7TG87MDtMOzJBMENFOzs7O047Ozs7OworMkZBMTE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGQTExO0xvOzA7TDs0Q0Y4Ozs7O047Ozs7OworMkZBMTI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGQTEyO0xvOzA7TDsyQTEwNTs7OztOOzs7OzsKKzJGQTEzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC0yRkExMztMbzswO0w7MkEyMEU7Ozs7Tjs7Ozs7CisyRkExNDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtMkZBMTQ7TG87MDtMOzJBMjkxOzs7O047Ozs7OworMkZBMTU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGQTE1O0xvOzA7TDs5RUJCOzs7O047Ozs7OworMkZBMTY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGQTE2O0xvOzA7TDs0RDU2Ozs7O047Ozs7OworMkZBMTc7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGQTE3O0xvOzA7TDs5RUY5Ozs7O047Ozs7OworMkZBMTg7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGQTE4O0xvOzA7TDs5RUZFOzs7O047Ozs7OworMkZBMTk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGQTE5O0xvOzA7TDs5RjA1Ozs7O047Ozs7OworMkZBMUE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGQTFBO0xvOzA7TDs5RjBGOzs7O047Ozs7OworMkZBMUI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGQTFCO0xvOzA7TDs5RjE2Ozs7O047Ozs7OworMkZBMUM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGQTFDO0xvOzA7TDs5RjNCOzs7O047Ozs7OworMkZBMUQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILTJGQTFEO0xvOzA7TDsyQTYwMDs7OztOOzs7OzsKK0UwMDAxO0xBTkdVQUdFIFRBRztDZjswO0JOOzs7OztOOzs7OzsKK0UwMDIwO1RBRyBTUEFDRTtDZjswO0JOOzs7OztOOzs7OzsKK0UwMDIxO1RBRyBFWENMQU1BVElPTiBNQVJLO0NmOzA7Qk47Ozs7O047Ozs7OworRTAwMjI7VEFHIFFVT1RBVElPTiBNQVJLO0NmOzA7Qk47Ozs7O047Ozs7OworRTAwMjM7VEFHIE5VTUJFUiBTSUdOO0NmOzA7Qk47Ozs7O047Ozs7OworRTAwMjQ7VEFHIERPTExBUiBTSUdOO0NmOzA7Qk47Ozs7O047Ozs7OworRTAwMjU7VEFHIFBFUkNFTlQgU0lHTjtDZjswO0JOOzs7OztOOzs7OzsKK0UwMDI2O1RBRyBBTVBFUlNBTkQ7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDAyNztUQUcgQVBPU1RST1BIRTtDZjswO0JOOzs7OztOOzs7OzsKK0UwMDI4O1RBRyBMRUZUIFBBUkVOVEhFU0lTO0NmOzA7Qk47Ozs7O047Ozs7OworRTAwMjk7VEFHIFJJR0hUIFBBUkVOVEhFU0lTO0NmOzA7Qk47Ozs7O047Ozs7OworRTAwMkE7VEFHIEFTVEVSSVNLO0NmOzA7Qk47Ozs7O047Ozs7OworRTAwMkI7VEFHIFBMVVMgU0lHTjtDZjswO0JOOzs7OztOOzs7OzsKK0UwMDJDO1RBRyBDT01NQTtDZjswO0JOOzs7OztOOzs7OzsKK0UwMDJEO1RBRyBIWVBIRU4tTUlOVVM7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDAyRTtUQUcgRlVMTCBTVE9QO0NmOzA7Qk47Ozs7O047Ozs7OworRTAwMkY7VEFHIFNPTElEVVM7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDAzMDtUQUcgRElHSVQgWkVSTztDZjswO0JOOzs7OztOOzs7OzsKK0UwMDMxO1RBRyBESUdJVCBPTkU7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDAzMjtUQUcgRElHSVQgVFdPO0NmOzA7Qk47Ozs7O047Ozs7OworRTAwMzM7VEFHIERJR0lUIFRIUkVFO0NmOzA7Qk47Ozs7O047Ozs7OworRTAwMzQ7VEFHIERJR0lUIEZPVVI7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDAzNTtUQUcgRElHSVQgRklWRTtDZjswO0JOOzs7OztOOzs7OzsKK0UwMDM2O1RBRyBESUdJVCBTSVg7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDAzNztUQUcgRElHSVQgU0VWRU47Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDAzODtUQUcgRElHSVQgRUlHSFQ7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDAzOTtUQUcgRElHSVQgTklORTtDZjswO0JOOzs7OztOOzs7OzsKK0UwMDNBO1RBRyBDT0xPTjtDZjswO0JOOzs7OztOOzs7OzsKK0UwMDNCO1RBRyBTRU1JQ09MT047Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDAzQztUQUcgTEVTUy1USEFOIFNJR047Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDAzRDtUQUcgRVFVQUxTIFNJR047Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDAzRTtUQUcgR1JFQVRFUi1USEFOIFNJR047Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDAzRjtUQUcgUVVFU1RJT04gTUFSSztDZjswO0JOOzs7OztOOzs7OzsKK0UwMDQwO1RBRyBDT01NRVJDSUFMIEFUO0NmOzA7Qk47Ozs7O047Ozs7OworRTAwNDE7VEFHIExBVElOIENBUElUQUwgTEVUVEVSIEE7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDA0MjtUQUcgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQjtDZjswO0JOOzs7OztOOzs7OzsKK0UwMDQzO1RBRyBMQVRJTiBDQVBJVEFMIExFVFRFUiBDO0NmOzA7Qk47Ozs7O047Ozs7OworRTAwNDQ7VEFHIExBVElOIENBUElUQUwgTEVUVEVSIEQ7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDA0NTtUQUcgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRTtDZjswO0JOOzs7OztOOzs7OzsKK0UwMDQ2O1RBRyBMQVRJTiBDQVBJVEFMIExFVFRFUiBGO0NmOzA7Qk47Ozs7O047Ozs7OworRTAwNDc7VEFHIExBVElOIENBUElUQUwgTEVUVEVSIEc7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDA0ODtUQUcgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSDtDZjswO0JOOzs7OztOOzs7OzsKK0UwMDQ5O1RBRyBMQVRJTiBDQVBJVEFMIExFVFRFUiBJO0NmOzA7Qk47Ozs7O047Ozs7OworRTAwNEE7VEFHIExBVElOIENBUElUQUwgTEVUVEVSIEo7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDA0QjtUQUcgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSztDZjswO0JOOzs7OztOOzs7OzsKK0UwMDRDO1RBRyBMQVRJTiBDQVBJVEFMIExFVFRFUiBMO0NmOzA7Qk47Ozs7O047Ozs7OworRTAwNEQ7VEFHIExBVElOIENBUElUQUwgTEVUVEVSIE07Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDA0RTtUQUcgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTjtDZjswO0JOOzs7OztOOzs7OzsKK0UwMDRGO1RBRyBMQVRJTiBDQVBJVEFMIExFVFRFUiBPO0NmOzA7Qk47Ozs7O047Ozs7OworRTAwNTA7VEFHIExBVElOIENBUElUQUwgTEVUVEVSIFA7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDA1MTtUQUcgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUTtDZjswO0JOOzs7OztOOzs7OzsKK0UwMDUyO1RBRyBMQVRJTiBDQVBJVEFMIExFVFRFUiBSO0NmOzA7Qk47Ozs7O047Ozs7OworRTAwNTM7VEFHIExBVElOIENBUElUQUwgTEVUVEVSIFM7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDA1NDtUQUcgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVDtDZjswO0JOOzs7OztOOzs7OzsKK0UwMDU1O1RBRyBMQVRJTiBDQVBJVEFMIExFVFRFUiBVO0NmOzA7Qk47Ozs7O047Ozs7OworRTAwNTY7VEFHIExBVElOIENBUElUQUwgTEVUVEVSIFY7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDA1NztUQUcgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVztDZjswO0JOOzs7OztOOzs7OzsKK0UwMDU4O1RBRyBMQVRJTiBDQVBJVEFMIExFVFRFUiBYO0NmOzA7Qk47Ozs7O047Ozs7OworRTAwNTk7VEFHIExBVElOIENBUElUQUwgTEVUVEVSIFk7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDA1QTtUQUcgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWjtDZjswO0JOOzs7OztOOzs7OzsKK0UwMDVCO1RBRyBMRUZUIFNRVUFSRSBCUkFDS0VUO0NmOzA7Qk47Ozs7O047Ozs7OworRTAwNUM7VEFHIFJFVkVSU0UgU09MSURVUztDZjswO0JOOzs7OztOOzs7OzsKK0UwMDVEO1RBRyBSSUdIVCBTUVVBUkUgQlJBQ0tFVDtDZjswO0JOOzs7OztOOzs7OzsKK0UwMDVFO1RBRyBDSVJDVU1GTEVYIEFDQ0VOVDtDZjswO0JOOzs7OztOOzs7OzsKK0UwMDVGO1RBRyBMT1cgTElORTtDZjswO0JOOzs7OztOOzs7OzsKK0UwMDYwO1RBRyBHUkFWRSBBQ0NFTlQ7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDA2MTtUQUcgTEFUSU4gU01BTEwgTEVUVEVSIEE7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDA2MjtUQUcgTEFUSU4gU01BTEwgTEVUVEVSIEI7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDA2MztUQUcgTEFUSU4gU01BTEwgTEVUVEVSIEM7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDA2NDtUQUcgTEFUSU4gU01BTEwgTEVUVEVSIEQ7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDA2NTtUQUcgTEFUSU4gU01BTEwgTEVUVEVSIEU7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDA2NjtUQUcgTEFUSU4gU01BTEwgTEVUVEVSIEY7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDA2NztUQUcgTEFUSU4gU01BTEwgTEVUVEVSIEc7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDA2ODtUQUcgTEFUSU4gU01BTEwgTEVUVEVSIEg7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDA2OTtUQUcgTEFUSU4gU01BTEwgTEVUVEVSIEk7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDA2QTtUQUcgTEFUSU4gU01BTEwgTEVUVEVSIEo7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDA2QjtUQUcgTEFUSU4gU01BTEwgTEVUVEVSIEs7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDA2QztUQUcgTEFUSU4gU01BTEwgTEVUVEVSIEw7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDA2RDtUQUcgTEFUSU4gU01BTEwgTEVUVEVSIE07Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDA2RTtUQUcgTEFUSU4gU01BTEwgTEVUVEVSIE47Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDA2RjtUQUcgTEFUSU4gU01BTEwgTEVUVEVSIE87Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDA3MDtUQUcgTEFUSU4gU01BTEwgTEVUVEVSIFA7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDA3MTtUQUcgTEFUSU4gU01BTEwgTEVUVEVSIFE7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDA3MjtUQUcgTEFUSU4gU01BTEwgTEVUVEVSIFI7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDA3MztUQUcgTEFUSU4gU01BTEwgTEVUVEVSIFM7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDA3NDtUQUcgTEFUSU4gU01BTEwgTEVUVEVSIFQ7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDA3NTtUQUcgTEFUSU4gU01BTEwgTEVUVEVSIFU7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDA3NjtUQUcgTEFUSU4gU01BTEwgTEVUVEVSIFY7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDA3NztUQUcgTEFUSU4gU01BTEwgTEVUVEVSIFc7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDA3ODtUQUcgTEFUSU4gU01BTEwgTEVUVEVSIFg7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDA3OTtUQUcgTEFUSU4gU01BTEwgTEVUVEVSIFk7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDA3QTtUQUcgTEFUSU4gU01BTEwgTEVUVEVSIFo7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDA3QjtUQUcgTEVGVCBDVVJMWSBCUkFDS0VUO0NmOzA7Qk47Ozs7O047Ozs7OworRTAwN0M7VEFHIFZFUlRJQ0FMIExJTkU7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitFMDA3RDtUQUcgUklHSFQgQ1VSTFkgQlJBQ0tFVDtDZjswO0JOOzs7OztOOzs7OzsKK0UwMDdFO1RBRyBUSUxERTtDZjswO0JOOzs7OztOOzs7OzsKK0UwMDdGO0NBTkNFTCBUQUc7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitGMDAwMDs8UGxhbmUgMTUgUHJpdmF0ZSBVc2UsIEZpcnN0PjtDbzswO0w7Ozs7O047Ozs7OworRkZGRkQ7PFBsYW5lIDE1IFByaXZhdGUgVXNlLCBMYXN0PjtDbzswO0w7Ozs7O047Ozs7OworMTAwMDAwOzxQbGFuZSAxNiBQcml2YXRlIFVzZSwgRmlyc3Q+O0NvOzA7TDs7Ozs7Tjs7Ozs7CisxMEZGRkQ7PFBsYW5lIDE2IFByaXZhdGUgVXNlLCBMYXN0PjtDbzswO0w7Ozs7O047Ozs7OwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL2NhbGVuZGFyL0NhbGVuZGFyQXBwLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vY2FsZW5kYXIvQ2FsZW5kYXJBcHAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4yOTYxOTI2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL2NhbGVuZGFyL0NhbGVuZGFyQXBwLmphdmEKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTctMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL2NhbGVuZGFyL0NhbGVuZGFyQXBwLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDIvMTkgMDQ6MTA6MjMgJCAKKyAqICRSZXZpc2lvbjogMS43ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi5kZW1vLmNhbGVuZGFyOworCitpbXBvcnQgY29tLmlibS5pY3UuZGV2LmRlbW8uKjsKKworaW1wb3J0IGphdmEuYXBwbGV0LkFwcGxldDsKK2ltcG9ydCBqYXZhLmF3dC4qOworaW1wb3J0IGphdmEuYXd0LmV2ZW50Lio7CitpbXBvcnQgamF2YS5uZXQuKjsKK2ltcG9ydCBqYXZhLmlvLio7CisKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLio7CitpbXBvcnQgY29tLmlibS5pY3UubGFuZy4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuKjsKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYuZGVtby5pbXBsLio7CisKKy8qKgorICogQ2FsZW5kYXJBcHAgZGVtb25zdHJhdGVzIGhvdyBDYWxlbmRhciB3b3Jrcy4KKyAqLworcHVibGljIGNsYXNzIENhbGVuZGFyQXBwIGV4dGVuZHMgRGVtb0FwcGxldAoreworICAgIC8qKgorICAgICAqIFRoZSBtYWluIGZ1bmN0aW9uIHdoaWNoIGRlZmluZXMgdGhlIGJlaGF2aW9yIG9mIHRoZSBDYWxlbmRhckRlbW8KKyAgICAgKiBhcHBsZXQgd2hlbiBhbiBhcHBsZXQgaXMgc3RhcnRlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgYXJndltdKSB7CisKKyAgICAgICAgbmV3IENhbGVuZGFyQXBwKCkuc2hvd0RlbW8oKTsKKyAgICB9CisKKyAgICAvKiBUaGlzIGNyZWF0ZXMgYSBDYWxlbmRhckZyYW1lIGZvciB0aGUgZGVtbyBhcHBsZXQuICovCisgICAgcHVibGljIEZyYW1lIGNyZWF0ZURlbW9GcmFtZShEZW1vQXBwbGV0IGFwcGxldCkgeworICAgICAgICByZXR1cm4gbmV3IENhbGVuZGFyRnJhbWUoYXBwbGV0KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vY2FsZW5kYXIvQ2FsZW5kYXJDYWxjLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vY2FsZW5kYXIvQ2FsZW5kYXJDYWxjLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMGNiN2Y3NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby9jYWxlbmRhci9DYWxlbmRhckNhbGMuamF2YQpAQCAtMCwwICsxLDU4NiBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTctMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL2NhbGVuZGFyL0NhbGVuZGFyQ2FsYy5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzAyLzE5IDA0OjEwOjIzICQgCisgKiAkUmV2aXNpb246IDEuMTEgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LmRlbW8uY2FsZW5kYXI7CisKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYuZGVtby4qOworCitpbXBvcnQgamF2YS5hcHBsZXQuQXBwbGV0OworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEuYXd0Lio7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuKjsKKworLy9pbXBvcnQgamF2YS50ZXh0LkRhdGVGb3JtYXQ7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC5EYXRlRm9ybWF0OworaW1wb3J0IGphdmEudGV4dC5QYXJzZVBvc2l0aW9uOworCisvL2ltcG9ydCBqYXZhLnV0aWwuQ2FsZW5kYXI7CitpbXBvcnQgY29tLmlibS5pY3UudXRpbC5DYWxlbmRhcjsKKy8vaW1wb3J0IGphdmEudXRpbC5HcmVnb3JpYW5DYWxlbmRhcjsKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLkdyZWdvcmlhbkNhbGVuZGFyOworLy9pbXBvcnQgamF2YS51dGlsLlRpbWVab25lOworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuVGltZVpvbmU7CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKKworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuKjsKK2ltcG9ydCBjb20uaWJtLmljdS5sYW5nLio7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC4qOworaW1wb3J0IGNvbS5pYm0uaWN1LmRldi5kZW1vLmltcGwuKjsKKworaW1wb3J0IGphdmF4LnN3aW5nLio7CisKKy8qKgorICogQ2FsZW5kYXJDYWxjIGRlbW9uc3RyYXRlcyBob3cgRGF0ZS9UaW1lIGZvcm1hdHRlciB3b3Jrcy4KKyAqLworcHVibGljIGNsYXNzIENhbGVuZGFyQ2FsYyBleHRlbmRzIERlbW9BcHBsZXQKK3sKKyAgICAvKioKKyAgICAgKiBUaGUgbWFpbiBmdW5jdGlvbiB3aGljaCBkZWZpbmVzIHRoZSBiZWhhdmlvciBvZiB0aGUgTXVsdGlDYWxlbmRhckRlbW8KKyAgICAgKiBhcHBsZXQgd2hlbiBhbiBhcHBsZXQgaXMgc3RhcnRlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgYXJndltdKSB7CisgICAgICAgIG5ldyBDYWxlbmRhckNhbGMoKS5zaG93RGVtbygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRoaXMgY3JlYXRlcyBhIENhbGVuZGFyQ2FsY0ZyYW1lIGZvciB0aGUgZGVtbyBhcHBsZXQuCisgICAgICovCisgICAgcHVibGljIEZyYW1lIGNyZWF0ZURlbW9GcmFtZShEZW1vQXBwbGV0IGFwcGxldCkgeworICAgICAgICByZXR1cm4gbmV3IENhbGVuZGFyQ2FsY0ZyYW1lKGFwcGxldCk7CisgICAgfQorfQorCisvKioKKyAqIEEgRnJhbWUgaXMgYSB0b3AtbGV2ZWwgd2luZG93IHdpdGggYSB0aXRsZS4gVGhlIGRlZmF1bHQgbGF5b3V0IGZvciBhIGZyYW1lCisgKiBpcyBCb3JkZXJMYXlvdXQuICBUaGUgQ2FsZW5kYXJDYWxjRnJhbWUgY2xhc3MgZGVmaW5lcyB0aGUgd2luZG93IGxheW91dCBvZgorICogTXVsdGlDYWxlbmRhckRlbW8uCisgKi8KK2NsYXNzIENhbGVuZGFyQ2FsY0ZyYW1lIGV4dGVuZHMgRnJhbWUgaW1wbGVtZW50cyBBY3Rpb25MaXN0ZW5lcgoreworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyAgICAgY3JlZGl0U3RyaW5nID0gIiI7CisKKyAgICBzdGF0aWMgZmluYWwgTG9jYWxlW10gbG9jYWxlcyA9IERlbW9VdGlsaXR5LmdldEc3TG9jYWxlcygpOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiAgICBERUJVRyA9IGZhbHNlOworCisgICAgcHJpdmF0ZSBEZW1vQXBwbGV0ICAgICAgICAgICAgICBhcHBsZXQ7CisgICAgcHJpdmF0ZSBsb25nICAgICAgICAgICAgICAgICAgICB0aW1lID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBSb2xsQWRkRmllbGQga1JvbGxBZGRGaWVsZHNbXSA9IHsKKyAgICAgICAgbmV3IFJvbGxBZGRGaWVsZChDYWxlbmRhci5ZRUFSLCAgICAgICAgICAgICAgICAgIlllYXIiICksCisgICAgICAgIG5ldyBSb2xsQWRkRmllbGQoQ2FsZW5kYXIuTU9OVEgsICAgICAgICAgICAgICAgICJNb250aCIgKSwKKyAgICAgICAgbmV3IFJvbGxBZGRGaWVsZChDYWxlbmRhci5XRUVLX09GX01PTlRILCAgICAgICAgIldlZWsgb2YgTW9udGgiICksCisgICAgICAgIG5ldyBSb2xsQWRkRmllbGQoQ2FsZW5kYXIuV0VFS19PRl9ZRUFSLCAgICAgICAgICJXZWVrIG9mIFllYXIiICksCisgICAgICAgIG5ldyBSb2xsQWRkRmllbGQoQ2FsZW5kYXIuREFZX09GX01PTlRILCAgICAgICAgICJEYXkgb2YgTW9udGgiICksCisgICAgICAgIG5ldyBSb2xsQWRkRmllbGQoQ2FsZW5kYXIuREFZX09GX1dFRUssICAgICAgICAgICJEYXkgb2YgV2VlayIgKSwKKyAgICAgICAgbmV3IFJvbGxBZGRGaWVsZChDYWxlbmRhci5EQVlfT0ZfV0VFS19JTl9NT05USCwgIkRheSBvZiBXZWVrIGluIE1vbnRoIiApLAorICAgICAgICBuZXcgUm9sbEFkZEZpZWxkKENhbGVuZGFyLkRBWV9PRl9ZRUFSLCAgICAgICAgICAiRGF5IG9mIFllYXIiICksCisgICAgICAgIG5ldyBSb2xsQWRkRmllbGQoQ2FsZW5kYXIuQU1fUE0sICAgICAgICAgICAgICAgICJBTS9QTSIgKSwKKyAgICAgICAgbmV3IFJvbGxBZGRGaWVsZChDYWxlbmRhci5IT1VSX09GX0RBWSwgICAgICAgICAgIkhvdXIgb2YgZGF5IiApLAorICAgICAgICBuZXcgUm9sbEFkZEZpZWxkKENhbGVuZGFyLkhPVVIsICAgICAgICAgICAgICAgICAiSG91ciIgKSwKKyAgICAgICAgbmV3IFJvbGxBZGRGaWVsZChDYWxlbmRhci5NSU5VVEUsICAgICAgICAgICAgICAgIk1pbnV0ZSIgKSwKKyAgICAgICAgbmV3IFJvbGxBZGRGaWVsZChDYWxlbmRhci5TRUNPTkQsICAgICAgICAgICAgICAgIlNlY29uZCIgKSwKKyAgICB9OworCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIG5ldyBDYWxlbmRhckNhbGNGcmFtZSB0aGF0IGlzIGluaXRpYWxseSBpbnZpc2libGUuCisgICAgICovCisgICAgcHVibGljIENhbGVuZGFyQ2FsY0ZyYW1lKERlbW9BcHBsZXQgYXBwbGV0KQorICAgIHsKKyAgICAgICAgc3VwZXIoIk11bHRpcGxlIENhbGVuZGFyIERlbW8iKTsKKyAgICAgICAgdGhpcy5hcHBsZXQgPSBhcHBsZXQ7CisgICAgICAgIGluaXQoKTsKKyAgICAgICAgc3RhcnQoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbml0aWFsaXplcyB0aGUgYXBwbGV0LiBZb3UgbmV2ZXIgbmVlZCB0byBjYWxsIHRoaXMgZGlyZWN0bHksIGl0CisgICAgICogaXMgY2FsbGVkIGF1dG9tYXRpY2FsbHkgYnkgdGhlIHN5c3RlbSBvbmNlIHRoZSBhcHBsZXQgaXMgY3JlYXRlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBpbml0KCkKKyAgICB7CisgICAgICAgIGJ1aWxkR1VJKCk7CisKKyAgICAgICAgcGF0dGVyblRleHQuc2V0VGV4dCggY2FsZW5kYXJzWzBdLnRvUGF0dGVybigpICk7CisKKyAgICAgICAgLy8gRm9yY2UgYW4gdXBkYXRlIG9mIHRoZSBkaXNwbGF5CisgICAgICAgIGNpdHlDaGFuZ2VkKCk7CisgICAgICAgIG1pbGxpc0Zvcm1hdCgpOworICAgICAgICBlbmFibGVFdmVudHMoS2V5RXZlbnQuS0VZX1JFTEVBU0VEKTsKKyAgICAgICAgZW5hYmxlRXZlbnRzKFdpbmRvd0V2ZW50LldJTkRPV19DTE9TSU5HKTsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIHBhY2thZ2UgcHJpdmF0ZQorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgdm9pZCBhZGRXaXRoRm9udChDb250YWluZXIgY29udGFpbmVyLCBDb21wb25lbnQgZm9vLCBGb250IGZvbnQpIHsKKyAgICAgICAgaWYgKGZvbnQgIT0gbnVsbCkKKyAgICAgICAgICAgIGZvby5zZXRGb250KGZvbnQpOworICAgICAgICBjb250YWluZXIuYWRkKGZvbyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ2FsbGVkIHRvIHN0YXJ0IHRoZSBhcHBsZXQuIFlvdSBuZXZlciBuZWVkIHRvIGNhbGwgdGhpcyBtZXRob2QKKyAgICAgKiBkaXJlY3RseSwgaXQgaXMgY2FsbGVkIHdoZW4gdGhlIGFwcGxldCdzIGRvY3VtZW50IGlzIHZpc2l0ZWQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgc3RhcnQoKQorICAgIHsKKyAgICAgICAgLy8gZG8gbm90aGluZworICAgIH0KKworICAgIFRleHRGaWVsZCBwYXR0ZXJuVGV4dDsKKworICAgIENob2ljZSBkYXRlTWVudTsKKyAgICBDaG9pY2UgbG9jYWxlTWVudTsKKworICAgIEJ1dHRvbiB1cDsKKyAgICBCdXR0b24gZG93bjsKKworICAgIENoZWNrYm94IGdldFJvbGw7CisgICAgQ2hlY2tib3ggZ2V0QWRkOworCisgICAgcHVibGljIHZvaWQgYnVpbGRHVUkoKQorICAgIHsKKyAgICAgICAgc2V0QmFja2dyb3VuZChEZW1vVXRpbGl0eS5iZ0NvbG9yKTsKKyAgICAgICAgc2V0TGF5b3V0KG5ldyBGbG93TGF5b3V0KCkpOyAvLyBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5LCBidXQgaXQgaXMuCisKKy8vIFRJVExFCisgICAgICAgIExhYmVsIGxhYmVsMT1uZXcgTGFiZWwoIkNhbGVuZGFyIENvbnZlcnRlciIsIExhYmVsLkNFTlRFUik7CisgICAgICAgIGxhYmVsMS5zZXRGb250KERlbW9VdGlsaXR5LnRpdGxlRm9udCk7CisgICAgICAgIGFkZChsYWJlbDEpOworICAgICAgICBhZGQoRGVtb1V0aWxpdHkuY3JlYXRlU3BhY2VyKCkpOworCisvLyBJTyBQYW5lbAorICAgICAgICBQYW5lbCB0b3BQYW5lbCA9IG5ldyBQYW5lbCgpOworICAgICAgICB0b3BQYW5lbC5zZXRMYXlvdXQobmV3IEZsb3dMYXlvdXQoKSk7CisKKyAgICAgICAgQ2hlY2tib3hHcm91cCBncm91cDE9IG5ldyBDaGVja2JveEdyb3VwKCk7CisKKyAgICAgICAgLy8gU2V0IHVwIHRoZSBjb250cm9scyBmb3IgZWFjaCBjYWxlbmRhciB3ZSdyZSBkZW1vbnN0cmF0aW5nCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2FsZW5kYXJzLmxlbmd0aDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBMYWJlbCBsYWJlbCA9IG5ldyBMYWJlbChjYWxlbmRhcnNbaV0ubmFtZSwgTGFiZWwuUklHSFQpOworICAgICAgICAgICAgbGFiZWwuc2V0Rm9udChEZW1vVXRpbGl0eS5sYWJlbEZvbnQpOworICAgICAgICAgICAgdG9wUGFuZWwuYWRkKGxhYmVsKTsKKworICAgICAgICAgICAgdG9wUGFuZWwuYWRkKGNhbGVuZGFyc1tpXS50ZXh0KTsKKworICAgICAgICAgICAgZmluYWwgaW50IGogPSBpOworICAgICAgICAgICAgY2FsZW5kYXJzW2ldLnRleHQuYWRkQWN0aW9uTGlzdGVuZXIoIG5ldyBBY3Rpb25MaXN0ZW5lcigpIHsKKyAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBhY3Rpb25QZXJmb3JtZWQoQWN0aW9uRXZlbnQgZSkgeworICAgICAgICAgICAgICAgICAgICB0ZXh0Q2hhbmdlZChqKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9ICk7CisKKyAgICAgICAgICAgIGNhbGVuZGFyc1tpXS5yb2xsQWRkLnNldENoZWNrYm94R3JvdXAoZ3JvdXAxKTsKKyAgICAgICAgICAgIHRvcFBhbmVsLmFkZChjYWxlbmRhcnNbaV0ucm9sbEFkZCk7CisgICAgICAgIH0KKyAgICAgICAgY2FsZW5kYXJzWzBdLnJvbGxBZGQuc2V0U3RhdGUodHJ1ZSk7ICAgIC8vIE1ha2UgdGhlIGZpcnN0IG9uZSBzZWxlY3RlZAorCisgICAgICAgIExhYmVsIGxhYmVsND1uZXcgTGFiZWwoIlBhdHRlcm4iLCBMYWJlbC5SSUdIVCk7CisgICAgICAgIGxhYmVsNC5zZXRGb250KERlbW9VdGlsaXR5LmxhYmVsRm9udCk7CisgICAgICAgIHRvcFBhbmVsLmFkZChsYWJlbDQpOworCisgICAgICAgIHBhdHRlcm5UZXh0PW5ldyBUZXh0RmllbGQoRklFTERfQ09MVU1OUyk7CisgICAgICAgIHBhdHRlcm5UZXh0LnNldEZvbnQoRGVtb1V0aWxpdHkuZWRpdEZvbnQpOworICAgICAgICB0b3BQYW5lbC5hZGQocGF0dGVyblRleHQpOworICAgICAgICB0b3BQYW5lbC5hZGQobmV3IExhYmVsKCIiKSk7CisKKyAgICAgICAgRGVtb1V0aWxpdHkuZml4R3JpZCh0b3BQYW5lbCwzKTsKKyAgICAgICAgYWRkKHRvcFBhbmVsKTsKKyAgICAgICAgYWRkKERlbW9VdGlsaXR5LmNyZWF0ZVNwYWNlcigpKTsKKworLy8gUk9MTCAvIEFERAorICAgICAgICBQYW5lbCByb2xsQWRkUGFuZWw9bmV3IFBhbmVsKCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIHJvbGxBZGRQYW5lbC5zZXRMYXlvdXQobmV3IEZsb3dMYXlvdXQoKSk7CisKKyAgICAgICAgICAgIFBhbmVsIHJvbGxBZGRCb3hlcyA9IG5ldyBQYW5lbCgpOworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJvbGxBZGRCb3hlcy5zZXRMYXlvdXQobmV3IEdyaWRMYXlvdXQoMiwxKSk7CisgICAgICAgICAgICAgICAgQ2hlY2tib3hHcm91cCBncm91cDI9IG5ldyBDaGVja2JveEdyb3VwKCk7CisgICAgICAgICAgICAgICAgZ2V0Um9sbCA9IG5ldyBDaGVja2JveCgiUm9sbCIsZ3JvdXAyLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgZ2V0QWRkID0gbmV3IENoZWNrYm94KCJBZGQiLGdyb3VwMiwgdHJ1ZSk7CisKKyAgICAgICAgICAgICAgICByb2xsQWRkQm94ZXMuYWRkKGdldFJvbGwpOworICAgICAgICAgICAgICAgIHJvbGxBZGRCb3hlcy5hZGQoZ2V0QWRkKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgTGFiZWwgZGF0ZUxhYmVsPW5ldyBMYWJlbCgiRGF0ZSBGaWVsZHMiKTsKKyAgICAgICAgICAgIGRhdGVMYWJlbC5zZXRGb250KERlbW9VdGlsaXR5LmxhYmVsRm9udCk7CisKKyAgICAgICAgICAgIGRhdGVNZW51PSBuZXcgQ2hvaWNlKCk7CisgICAgICAgICAgICBkYXRlTWVudS5zZXRCYWNrZ3JvdW5kKERlbW9VdGlsaXR5LmNob2ljZUNvbG9yKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwga1JvbGxBZGRGaWVsZHMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBkYXRlTWVudS5hZGRJdGVtKGtSb2xsQWRkRmllbGRzW2ldLm5hbWUpOworICAgICAgICAgICAgICAgIGlmIChrUm9sbEFkZEZpZWxkc1tpXS5maWVsZCA9PSBDYWxlbmRhci5NT05USCkgeworICAgICAgICAgICAgICAgICAgICBkYXRlTWVudS5zZWxlY3QoaSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBQYW5lbCB1cERvd24gPSBuZXcgUGFuZWwoKTsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB1cERvd24uc2V0TGF5b3V0KG5ldyBHcmlkTGF5b3V0KDIsMSkpOworCisgICAgICAgICAgICAgICAgLy8gKioqIElmIHRoZSBpbWFnZXMgYXJlIG5vdCBmb3VuZCwgd2UgdXNlIHRoZSBsYWJlbC4KKyAgICAgICAgICAgICAgICB1cCA9IG5ldyBCdXR0b24oIl4iKTsKKyAgICAgICAgICAgICAgICBkb3duID0gbmV3IEJ1dHRvbigidiIpOworICAgICAgICAgICAgICAgIHVwLnNldEJhY2tncm91bmQoRGVtb1V0aWxpdHkuYmdDb2xvcik7CisgICAgICAgICAgICAgICAgZG93bi5zZXRCYWNrZ3JvdW5kKERlbW9VdGlsaXR5LmJnQ29sb3IpOworICAgICAgICAgICAgICAgIHVwRG93bi5hZGQodXApOworICAgICAgICAgICAgICAgIHVwRG93bi5hZGQoZG93bik7CisgICAgICAgICAgICAgICAgdXAuYWRkQWN0aW9uTGlzdGVuZXIodGhpcyk7CisgICAgICAgICAgICAgICAgZG93bi5hZGRBY3Rpb25MaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcm9sbEFkZFBhbmVsLmFkZChkYXRlTGFiZWwpOworICAgICAgICAgICAgcm9sbEFkZFBhbmVsLmFkZChkYXRlTWVudSk7CisgICAgICAgICAgICByb2xsQWRkUGFuZWwuYWRkKHJvbGxBZGRCb3hlcyk7CisgICAgICAgICAgICByb2xsQWRkUGFuZWwuYWRkKHVwRG93bik7CisKKyAgICAgICAgfQorICAgICAgICBQYW5lbCBsb2NhbGVQYW5lbCA9IG5ldyBQYW5lbCgpOworICAgICAgICB7CisgICAgICAgICAgICAvLyBNYWtlIHRoZSBsb2NhbGUgcG9wdXAgbWVudXMKKyAgICAgICAgICAgIGxvY2FsZU1lbnU9IG5ldyBDaG9pY2UoKTsKKyAgICAgICAgICAgIExvY2FsZSBkZWZhdWx0TG9jYWxlID0gTG9jYWxlLmdldERlZmF1bHQoKTsKKyAgICAgICAgICAgIGludCBiZXN0TWF0Y2ggPSAtMSwgdGhpc01hdGNoID0gLTE7CisgICAgICAgICAgICBpbnQgc2VsZWN0TWUgPSAwOworICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxvY2FsZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAoaSA+IDAgJiYgbG9jYWxlc1tpXS5nZXRMYW5ndWFnZSgpLmVxdWFscyhsb2NhbGVzW2ktMV0uZ2V0TGFuZ3VhZ2UoKSkgfHwKKyAgICAgICAgICAgICAgICAgICAgaSA8IGxvY2FsZXMubGVuZ3RoIC0gMSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlc1tpXS5nZXRMYW5ndWFnZSgpLmVxdWFscyhsb2NhbGVzW2krMV0uZ2V0TGFuZ3VhZ2UoKSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBsb2NhbGVNZW51LmFkZEl0ZW0oIGxvY2FsZXNbaV0uZ2V0RGlzcGxheU5hbWUoKSApOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGxvY2FsZU1lbnUuYWRkSXRlbSggbG9jYWxlc1tpXS5nZXREaXNwbGF5TGFuZ3VhZ2UoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHRoaXNNYXRjaCA9IERlbW9VdGlsaXR5LmNvbXBhcmVMb2NhbGVzKGxvY2FsZXNbaV0sIGRlZmF1bHRMb2NhbGUpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmICh0aGlzTWF0Y2ggPj0gYmVzdE1hdGNoKSB7CisgICAgICAgICAgICAgICAgICAgIGJlc3RNYXRjaCA9IHRoaXNNYXRjaDsKKyAgICAgICAgICAgICAgICAgICAgc2VsZWN0TWUgPSBpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgbG9jYWxlTWVudS5zZXRCYWNrZ3JvdW5kKERlbW9VdGlsaXR5LmNob2ljZUNvbG9yKTsKKyAgICAgICAgICAgIGxvY2FsZU1lbnUuc2VsZWN0KHNlbGVjdE1lKTsKKworICAgICAgICAgICAgTGFiZWwgbG9jYWxlTGFiZWwgPW5ldyBMYWJlbCgiRGlzcGxheSBMb2NhbGUiKTsKKyAgICAgICAgICAgIGxvY2FsZUxhYmVsLnNldEZvbnQoRGVtb1V0aWxpdHkubGFiZWxGb250KTsKKworICAgICAgICAgICAgbG9jYWxlUGFuZWwuYWRkKGxvY2FsZUxhYmVsKTsKKyAgICAgICAgICAgIGxvY2FsZVBhbmVsLmFkZChsb2NhbGVNZW51KTsKKyAgICAgICAgICAgIERlbW9VdGlsaXR5LmZpeEdyaWQobG9jYWxlUGFuZWwsMik7CisKKyAgICAgICAgICAgIGxvY2FsZU1lbnUuYWRkSXRlbUxpc3RlbmVyKCBuZXcgSXRlbUxpc3RlbmVyKCkgeworICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIGl0ZW1TdGF0ZUNoYW5nZWQoSXRlbUV2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICAgICAgTG9jYWxlIGxvYyA9IGxvY2FsZXNbbG9jYWxlTWVudS5nZXRTZWxlY3RlZEluZGV4KCldOworICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkNoYW5nZSBsb2NhbGUgdG8gIiArIGxvYy5nZXREaXNwbGF5TmFtZSgpKTsKKworICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNhbGVuZGFycy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FsZW5kYXJzW2ldLnNldExvY2FsZShsb2MpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIG1pbGxpc0Zvcm1hdCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gKTsKKyAgICAgICAgfQorICAgICAgICBhZGQocm9sbEFkZFBhbmVsKTsKKyAgICAgICAgYWRkKERlbW9VdGlsaXR5LmNyZWF0ZVNwYWNlcigpKTsKKyAgICAgICAgYWRkKGxvY2FsZVBhbmVsKTsKKyAgICAgICAgYWRkKERlbW9VdGlsaXR5LmNyZWF0ZVNwYWNlcigpKTsKKworLy8gQ09QWVJJR0hUCisgICAgICAgIFBhbmVsIGNvcHlyaWdodFBhbmVsID0gbmV3IFBhbmVsKCk7CisgICAgICAgIGFkZFdpdGhGb250IChjb3B5cmlnaHRQYW5lbCxuZXcgTGFiZWwoRGVtb1V0aWxpdHkuY29weXJpZ2h0MSwgTGFiZWwuTEVGVCksCisgICAgICAgICAgICBEZW1vVXRpbGl0eS5jcmVkaXRGb250KTsKKyAgICAgICAgRGVtb1V0aWxpdHkuZml4R3JpZChjb3B5cmlnaHRQYW5lbCwxKTsKKyAgICAgICAgYWRkKGNvcHlyaWdodFBhbmVsKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHVzZXJzIGNoYW5nZSB0aGUgcGF0dGVybiB0ZXh0LgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldEZvcm1hdEZyb21QYXR0ZXJuKCkgeworICAgICAgICBTdHJpbmcgdGltZVBhdHRlcm4gPSBwYXR0ZXJuVGV4dC5nZXRUZXh0KCk7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjYWxlbmRhcnMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGNhbGVuZGFyc1tpXS5hcHBseVBhdHRlcm4odGltZVBhdHRlcm4pOworICAgICAgICB9CisKKyAgICAgICAgbWlsbGlzRm9ybWF0KCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiBpdCBpcyBuZWNlc3NhcnkgdG8gcGFyc2UgdGhlIHRpbWUKKyAgICAgKiBzdHJpbmcgaW4gb25lIG9mIHRoZSBmb3JtYXR0ZWQgZGF0ZSBmaWVsZHMKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCB0ZXh0Q2hhbmdlZChpbnQgaW5kZXgpIHsKKyAgICAgICAgU3RyaW5nIHJpZ2h0U3RyaW5nID0gY2FsZW5kYXJzW2luZGV4XS50ZXh0LmdldFRleHQoKTsKKworICAgICAgICBQYXJzZVBvc2l0aW9uIHN0YXR1cyA9IG5ldyBQYXJzZVBvc2l0aW9uKDApOworCisgICAgICAgIGlmIChyaWdodFN0cmluZy5sZW5ndGgoKSA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgICBlcnJvclRleHQoIkVycm9yOiBubyBpbnB1dCB0byBwYXJzZSEiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBEYXRlIGRhdGUgPSBjYWxlbmRhcnNbaW5kZXhdLmZvcm1hdC5wYXJzZShyaWdodFN0cmluZywgc3RhdHVzKTsKKyAgICAgICAgICAgIHRpbWUgPSBkYXRlLmdldFRpbWUoKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2FsZW5kYXJzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKGkgIT0gaW5kZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsZW5kYXJzW2ldLnRleHQuc2V0VGV4dCgiRVJST1IiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlcnJvclRleHQoIkV4Y2VwdGlvbjogIiArIGUuZ2V0Q2xhc3MoKS50b1N0cmluZygpICsgIiBwYXJzaW5nOiAiK3JpZ2h0U3RyaW5nKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGludCBzdGFydCA9IGNhbGVuZGFyc1tpbmRleF0udGV4dC5nZXRTZWxlY3Rpb25TdGFydCgpOworICAgICAgICBpbnQgZW5kID0gY2FsZW5kYXJzW2luZGV4XS50ZXh0LmdldFNlbGVjdGlvbkVuZCgpOworCisgICAgICAgIG1pbGxpc0Zvcm1hdCgpOworCisgICAgICAgIGNhbGVuZGFyc1tpbmRleF0udGV4dC5zZWxlY3Qoc3RhcnQsZW5kKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIGl0IGlzIG5lY2Vzc2FyeSB0byBmb3JtYXQgdGhlIHRpbWUKKyAgICAgKiBpbiB0aGUgIk1pbGxpcyIgdGV4dCBmaWVsZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBtaWxsaXNGb3JtYXQoKSB7CisgICAgICAgIFN0cmluZyBvdXQgPSAiIjsKKworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNhbGVuZGFycy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBvdXQgPSBjYWxlbmRhcnNbaV0uZm9ybWF0LmZvcm1hdChuZXcgRGF0ZSh0aW1lKSk7CisgICAgICAgICAgICAgICAgY2FsZW5kYXJzW2ldLnRleHQuc2V0VGV4dChvdXQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgY2FsZW5kYXJzW2ldLnRleHQuc2V0VGV4dCgiRVJST1IiKTsKKyAgICAgICAgICAgICAgICBlcnJvclRleHQoIkV4Y2VwdGlvbjogIiArIGUuZ2V0Q2xhc3MoKS50b1N0cmluZygpICsgIiBmb3JtYXR0aW5nICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGNhbGVuZGFyc1tpXS5uYW1lICsgIiAiICsgdGltZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKworICAgIC8qKgorICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdXNlcnMgY2hhbmdlIHRoZSBwYXR0ZXJuIHRleHQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgcGF0dGVyblRleHRDaGFuZ2VkKCkgeworICAgICAgICBzZXRGb3JtYXRGcm9tUGF0dGVybigpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdXNlcnMgc2VsZWN0IGEgbmV3IHJlcHJlc2VudGF0aXZlIGNpdHkuCisgICAgICovCisgICAgcHVibGljIHZvaWQgY2l0eUNoYW5nZWQoKSB7CisgICAgICAgIFRpbWVab25lIHRpbWVab25lID0gVGltZVpvbmUuZ2V0RGVmYXVsdCgpOworCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2FsZW5kYXJzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBjYWxlbmRhcnNbaV0uZm9ybWF0LnNldFRpbWVab25lKHRpbWVab25lKTsKKyAgICAgICAgfQorICAgICAgICBtaWxsaXNGb3JtYXQoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHVzZXJzIHNlbGVjdCBhIG5ldyB0aW1lIGZpZWxkCisgICAgICogdG8gYWRkIG9yIHJvbGwgaXRzIHZhbHVlLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGRhdGVGaWVsZENoYW5nZWQoYm9vbGVhbiB1cCkgeworICAgICAgICBpbnQgZmllbGQgPSBrUm9sbEFkZEZpZWxkc1tkYXRlTWVudS5nZXRTZWxlY3RlZEluZGV4KCldLmZpZWxkOworCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2FsZW5kYXJzLmxlbmd0aDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoY2FsZW5kYXJzW2ldLnJvbGxBZGQuZ2V0U3RhdGUoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBDYWxlbmRhciBjID0gY2FsZW5kYXJzW2ldLmNhbGVuZGFyOworICAgICAgICAgICAgICAgIGMuc2V0VGltZShuZXcgRGF0ZSh0aW1lKSk7CisKKyAgICAgICAgICAgICAgICBpZiAoZ2V0QWRkLmdldFN0YXRlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYy5hZGQoZmllbGQsIHVwID8gMSA6IC0xKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBjLnJvbGwoZmllbGQsIHVwKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB0aW1lID0gYy5nZXRUaW1lKCkuZ2V0VGltZSgpOworICAgICAgICAgICAgICAgIG1pbGxpc0Zvcm1hdCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUHJpbnQgb3V0IHRoZSBlcnJvciBtZXNzYWdlIHdoaWxlIGRlYnVnZ2luZyB0aGlzIHByb2dyYW0uCisgICAgICovCisgICAgcHVibGljIHZvaWQgZXJyb3JUZXh0KFN0cmluZyBzKQorICAgIHsKKyAgICAgICAgaWYgKHRydWUpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihzKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBDYWxsZWQgaWYgYW4gYWN0aW9uIG9jY3VycyBpbiB0aGUgQ2FsZW5kYXJDYWxjRnJhbWUgb2JqZWN0LgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGFjdGlvblBlcmZvcm1lZChBY3Rpb25FdmVudCBldnQpCisgICAgeworICAgICAgICAvLyAqKiogQnV0dG9uIGV2ZW50cyBhcmUgaGFuZGxlZCBoZXJlLgorICAgICAgICBPYmplY3Qgb2JqID0gZXZ0LmdldFNvdXJjZSgpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImFjdGlvbiAiICsgb2JqKTsKKyAgICAgICAgaWYgKG9iaiBpbnN0YW5jZW9mIEJ1dHRvbikgeworICAgICAgICAgICAgaWYgKGV2dC5nZXRTb3VyY2UoKSA9PSB1cCkgeworICAgICAgICAgICAgICAgIGRhdGVGaWVsZENoYW5nZWQoZmFsc2UpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgaWYgKGV2dC5nZXRTb3VyY2UoKSA9PSBkb3duKSB7CisgICAgICAgICAgICAgICAgICAgIGRhdGVGaWVsZENoYW5nZWQodHJ1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogSGFuZGxlcyB0aGUgZXZlbnQuIFJldHVybnMgdHJ1ZSBpZiB0aGUgZXZlbnQgaXMgaGFuZGxlZCBhbmQgc2hvdWxkIG5vdAorICAgICAqIGJlIHBhc3NlZCB0byB0aGUgcGFyZW50IG9mIHRoaXMgY29tcG9uZW50LiBUaGUgZGVmYXVsdCBldmVudCBoYW5kbGVyCisgICAgICogY2FsbHMgc29tZSBoZWxwZXIgbWV0aG9kcyB0byBtYWtlIGxpZmUgZWFzaWVyIG9uIHRoZSBwcm9ncmFtbWVyLgorICAgICAqLworICAgIHByb3RlY3RlZCB2b2lkIHByb2Nlc3NLZXlFdmVudChLZXlFdmVudCBldnQpCisgICAgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImtleSAiICsgZXZ0KTsKKyAgICAgICAgaWYgKGV2dC5nZXRJRCgpID09IEtleUV2ZW50LktFWV9SRUxFQVNFRCkgeyAKKyAgICAgICAgICAgIGlmIChldnQuZ2V0U291cmNlKCkgPT0gcGF0dGVyblRleHQpIHsKKyAgICAgICAgICAgICAgICBwYXR0ZXJuVGV4dENoYW5nZWQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2FsZW5kYXJzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChldnQuZ2V0U291cmNlKCkgPT0gY2FsZW5kYXJzW2ldLnRleHQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRleHRDaGFuZ2VkKGkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIHByb3RlY3RlZCB2b2lkIHByb2Nlc3NXaW5kb3dFdmVudChXaW5kb3dFdmVudCBldnQpIAorICAgIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJ3aW5kb3cgIiArIGV2dCk7CisgICAgICAgIGlmIChldnQuZ2V0SUQoKSA9PSBXaW5kb3dFdmVudC5XSU5ET1dfQ0xPU0lORyAmJiAKKyAgICAgICAgICAgIGV2dC5nZXRTb3VyY2UoKSA9PSB0aGlzKSB7CisgICAgICAgICAgICB0aGlzLmhpZGUoKTsKKyAgICAgICAgICAgIHRoaXMuZGlzcG9zZSgpOworCisgICAgICAgICAgICBpZiAoYXBwbGV0ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgIGFwcGxldC5kZW1vQ2xvc2VkKCk7CisgICAgICAgICAgICB9IGVsc2UgU3lzdGVtLmV4aXQoMCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoKKyAgICBwcm90ZWN0ZWQgdm9pZCBwcm9jZXNzRXZlbnQoQVdURXZlbnQgZXZ0KQorICAgIHsKKyAgICAgICAgaWYgKGV2dC5nZXRJRCgpID09IEFXVEV2ZW50LiBFdmVudC5BQ1RJT05fRVZFTlQgJiYgZXZ0LnRhcmdldCA9PSB1cCkgeworICAgICAgICAgICAgZGF0ZUZpZWxkQ2hhbmdlZCh0cnVlKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGV2dC5pZCA9PSBFdmVudC5BQ1RJT05fRVZFTlQgJiYgZXZ0LnRhcmdldCA9PSBkb3duKSB7CisgICAgICAgICAgICBkYXRlRmllbGRDaGFuZ2VkKGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorICAgICovCisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgICAgICAgIEZJRUxEX0NPTFVNTlMgPSAzNTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgICAgIERFRkFVTFRfRk9STUFUID0gIkVFRUUgTU1NTSBkLCB5eXl5IEciOworCisKKyAgICBjbGFzcyBDYWxlbmRhclJlYyB7CisgICAgICAgIHB1YmxpYyBDYWxlbmRhclJlYyhTdHJpbmcgbmFtZVN0ciwgQ2FsZW5kYXIgY2FsKQorICAgICAgICB7CisgICAgICAgICAgICBuYW1lID0gbmFtZVN0cjsKKyAgICAgICAgICAgIGNhbGVuZGFyID0gY2FsOworICAgICAgICAgICAgcm9sbEFkZCA9IG5ldyBDaGVja2JveCgpOworCisgICAgICAgICAgICB0ZXh0ID0gbmV3IEpUZXh0RmllbGQoIiIsRklFTERfQ09MVU1OUyk7CisgICAgICAgICAgICB0ZXh0LnNldEZvbnQoRGVtb1V0aWxpdHkuZWRpdEZvbnQpOworCisgICAgICAgICAgICBmb3JtYXQgPSBEYXRlRm9ybWF0LmdldERhdGVJbnN0YW5jZShjYWwsIERhdGVGb3JtYXQuRlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgICAgICAgICAgLy9mb3JtYXQuYXBwbHlQYXR0ZXJuKERFRkFVTFRfRk9STUFUKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIHNldExvY2FsZShMb2NhbGUgbG9jKSB7CisgICAgICAgICAgICBTdHJpbmcgcGF0dGVybiA9IHRvUGF0dGVybigpOworCisgICAgICAgICAgICBmb3JtYXQgPSBEYXRlRm9ybWF0LmdldERhdGVJbnN0YW5jZShjYWxlbmRhciwgRGF0ZUZvcm1hdC5GVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jKTsKKyAgICAgICAgICAgIGFwcGx5UGF0dGVybihwYXR0ZXJuKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIGFwcGx5UGF0dGVybihTdHJpbmcgcGF0dGVybikgeworICAgICAgICAgICAgaWYgKGZvcm1hdCBpbnN0YW5jZW9mIFNpbXBsZURhdGVGb3JtYXQpIHsKKyAgICAgICAgICAgICAgICAoKFNpbXBsZURhdGVGb3JtYXQpZm9ybWF0KS5hcHBseVBhdHRlcm4ocGF0dGVybik7CisvL2hleSB7YWx9IC0gCisvLyAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9ybWF0IGluc3RhbmNlb2YgamF2YS50ZXh0LlNpbXBsZURhdGVGb3JtYXQpIHsKKy8vICAgICAgICAgICAgICAgICgoamF2YS50ZXh0LlNpbXBsZURhdGVGb3JtYXQpZm9ybWF0KS5hcHBseVBhdHRlcm4ocGF0dGVybik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHByaXZhdGUgU3RyaW5nIHRvUGF0dGVybigpIHsKKyAgICAgICAgICAgIGlmIChmb3JtYXQgaW5zdGFuY2VvZiBTaW1wbGVEYXRlRm9ybWF0KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICgoU2ltcGxlRGF0ZUZvcm1hdClmb3JtYXQpLnRvUGF0dGVybigpOworLy9oZXkge2FsfSAtIAorLy8gICAgICAgICAgICB9IGVsc2UgaWYgKGZvcm1hdCBpbnN0YW5jZW9mIGphdmEudGV4dC5TaW1wbGVEYXRlRm9ybWF0KSB7CisvLyAgICAgICAgICAgICAgICByZXR1cm4gKChqYXZhLnRleHQuU2ltcGxlRGF0ZUZvcm1hdClmb3JtYXQpLnRvUGF0dGVybigpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gIiI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBDYWxlbmRhciAgY2FsZW5kYXI7CisgICAgICAgIERhdGVGb3JtYXQgICAgICAgICAgZm9ybWF0OworICAgICAgICBTdHJpbmcgICAgICAgICAgICAgIG5hbWU7CisgICAgICAgIEpUZXh0RmllbGQgICAgICAgICAgIHRleHQ7CisgICAgICAgIENoZWNrYm94ICAgICAgICAgICAgcm9sbEFkZDsKKyAgICB9OworCisgICAgcHJpdmF0ZSBmaW5hbCBDYWxlbmRhclJlY1tdIGNhbGVuZGFycyA9IHsKKyAgICAgICAgbmV3IENhbGVuZGFyUmVjKCJHcmVnb3JpYW4iLCAgICAgICAgbmV3IEdyZWdvcmlhbkNhbGVuZGFyKCkpLAorICAgICAgICBuZXcgQ2FsZW5kYXJSZWMoIkhlYnJldyIsICAgICAgICAgICBuZXcgSGVicmV3Q2FsZW5kYXIoKSksCisgICAgICAgIG5ldyBDYWxlbmRhclJlYygiSXNsYW1pYyAoY2l2aWwpIiwgIG1ha2VJc2xhbWljKHRydWUpKSwKKyAgICAgICAgbmV3IENhbGVuZGFyUmVjKCJJc2xhbWljICh0cnVlKSIsICAgbWFrZUlzbGFtaWMoZmFsc2UpKSwKKyAgICAgICAgbmV3IENhbGVuZGFyUmVjKCJCdWRkaGlzdCIsICAgICAgICAgbmV3IEJ1ZGRoaXN0Q2FsZW5kYXIoKSksCisgICAgICAgIG5ldyBDYWxlbmRhclJlYygiSmFwYW5lc2UiLCAgICAgICAgIG5ldyBKYXBhbmVzZUNhbGVuZGFyKCkpLAorLy8gICAgICAgIG5ldyBDYWxlbmRhclJlYygiQ2hpbmVzZSIsICAgICAgICAgIG5ldyBDaGluZXNlQ2FsZW5kYXIoKSksCisgICAgfTsKKworICAgIHN0YXRpYyBwcml2YXRlIGZpbmFsIENhbGVuZGFyIG1ha2VJc2xhbWljKGJvb2xlYW4gY2l2aWwpIHsKKyAgICAgICAgSXNsYW1pY0NhbGVuZGFyIGNhbCA9IG5ldyBJc2xhbWljQ2FsZW5kYXIoKTsKKyAgICAgICAgY2FsLnNldENpdmlsKGNpdmlsKTsKKyAgICAgICAgcmV0dXJuIGNhbDsKKyAgICB9OworfTsKKworY2xhc3MgUm9sbEFkZEZpZWxkIHsKKyAgICBSb2xsQWRkRmllbGQoaW50IGZpZWxkLCBTdHJpbmcgbmFtZSkgeworICAgICAgICB0aGlzLmZpZWxkID0gZmllbGQ7CisgICAgICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgfQorICAgIGludCBmaWVsZDsKKyAgICBTdHJpbmcgbmFtZTsKK307CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vY2FsZW5kYXIvQ2FsZW5kYXJGcmFtZS5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL2NhbGVuZGFyL0NhbGVuZGFyRnJhbWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42ZjA0OTA3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL2NhbGVuZGFyL0NhbGVuZGFyRnJhbWUuamF2YQpAQCAtMCwwICsxLDQzNiBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTctMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL2NhbGVuZGFyL0NhbGVuZGFyRnJhbWUuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xOSAwNDoxMDoyMyAkIAorICogJFJldmlzaW9uOiAxLjEwICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi5kZW1vLmNhbGVuZGFyOworCitpbXBvcnQgY29tLmlibS5pY3UuZGV2LmRlbW8uKjsKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLkNhbGVuZGFyOworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuSGVicmV3Q2FsZW5kYXI7CitpbXBvcnQgY29tLmlibS5pY3UudXRpbC5CdWRkaGlzdENhbGVuZGFyOworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuSmFwYW5lc2VDYWxlbmRhcjsKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLklzbGFtaWNDYWxlbmRhcjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0LlNpbXBsZURhdGVGb3JtYXQ7CisvL2ltcG9ydCBqYXZhLnV0aWwuU2ltcGxlVGltZVpvbmU7CitpbXBvcnQgY29tLmlibS5pY3UudXRpbC5TaW1wbGVUaW1lWm9uZTsKK2ltcG9ydCBqYXZhLmFwcGxldC5BcHBsZXQ7CitpbXBvcnQgamF2YS5hd3QuKjsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC4qOworaW1wb3J0IGphdmEubmV0Lio7CitpbXBvcnQgamF2YS5pby4qOworLy9pbXBvcnQgamF2YS50ZXh0LkRhdGVGb3JtYXQ7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC5EYXRlRm9ybWF0OworaW1wb3J0IGphdmEudGV4dC5NZXNzYWdlRm9ybWF0OworLy9pbXBvcnQgamF2YS51dGlsLkNhbGVuZGFyOworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuQ2FsZW5kYXI7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CisvL2ltcG9ydCBqYXZhLnV0aWwuR3JlZ29yaWFuQ2FsZW5kYXI7CitpbXBvcnQgY29tLmlibS5pY3UudXRpbC5HcmVnb3JpYW5DYWxlbmRhcjsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworaW1wb3J0IGphdmEudXRpbC5NaXNzaW5nUmVzb3VyY2VFeGNlcHRpb247CitpbXBvcnQgamF2YS51dGlsLlJlc291cmNlQnVuZGxlOworLy9pbXBvcnQgamF2YS51dGlsLlRpbWVab25lOworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuVGltZVpvbmU7CitpbXBvcnQgY29tLmlibS5pY3UuZGV2LmRlbW8uaW1wbC4qOworCisvKioKKyAqIEEgRnJhbWUgaXMgYSB0b3AtbGV2ZWwgd2luZG93IHdpdGggYSB0aXRsZS4gVGhlIGRlZmF1bHQgbGF5b3V0IGZvciBhIGZyYW1lCisgKiBpcyBCb3JkZXJMYXlvdXQuICBUaGUgQ2FsZW5kYXJGcmFtZSBjbGFzcyBkZWZpbmVzIHRoZSB3aW5kb3cgbGF5b3V0IG9mCisgKiBDYWxlbmRhckRlbW8uCisgKi8KK2NsYXNzIENhbGVuZGFyRnJhbWUgZXh0ZW5kcyBGcmFtZQoreworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gREVCVUcgPSBmYWxzZTsKKworICAgIHByaXZhdGUgRGVtb0FwcGxldCBhcHBsZXQ7CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IENhbGVuZGFyRnJhbWUgdGhhdCBpcyBpbml0aWFsbHkgaW52aXNpYmxlLgorICAgICAqLworICAgIHB1YmxpYyBDYWxlbmRhckZyYW1lKERlbW9BcHBsZXQgbXlBcHBsZXQpCisgICAgeworICAgICAgICBzdXBlcigiQ2FsZW5kYXIgRGVtbyIpOworICAgICAgICB0aGlzLmFwcGxldCA9IG15QXBwbGV0OworICAgICAgICBpbml0KCk7CisKKyAgICAgICAgLy8gV2hlbiB0aGUgd2luZG93IGlzIGNsb3NlZCwgd2Ugd2FudCB0byBzaHV0IGRvd24gdGhlIGFwcGxldCBvciBhcHBsaWNhdGlvbgorICAgICAgICBhZGRXaW5kb3dMaXN0ZW5lcigKKyAgICAgICAgICAgIG5ldyBXaW5kb3dBZGFwdGVyKCkgeworICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHdpbmRvd0Nsb3NpbmcoV2luZG93RXZlbnQgZSkgeworICAgICAgICAgICAgICAgICAgICBzZXRWaXNpYmxlKGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgZGlzcG9zZSgpOworCisgICAgICAgICAgICAgICAgICAgIGlmIChhcHBsZXQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGV0LmRlbW9DbG9zZWQoKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIFN5c3RlbS5leGl0KDApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gKTsKKyAgICB9CisKKyAgICBwcml2YXRlIENob2ljZSAgICAgICAgICBkaXNwbGF5TWVudTsKKyAgICBwcml2YXRlIExvY2FsZVtdICAgICAgICBsb2NhbGVzID0gRGVtb1V0aWxpdHkuZ2V0RzdMb2NhbGVzKCk7CisKKyAgICBwcml2YXRlIENhbGVuZGFyICAgICAgICBjYWxlbmRhcnNbXSAgID0gbmV3IENhbGVuZGFyWzJdOworICAgIHByaXZhdGUgQ2hvaWNlICAgICAgICAgIGNhbE1lbnVbXSAgICAgPSBuZXcgQ2hvaWNlWzJdOworICAgIHByaXZhdGUgQ29sb3JlZExhYmVsICAgIG1vbnRoTGFiZWxbXSAgPSBuZXcgQ29sb3JlZExhYmVsWzJdOworICAgIHByaXZhdGUgRGF0ZUZvcm1hdCAgICAgIG1vbnRoRm9ybWF0W10gPSBuZXcgRGF0ZUZvcm1hdFsyXTsKKworICAgIHByaXZhdGUgQnV0dG9uICAgICAgICAgIHByZXZZZWFyOworICAgIHByaXZhdGUgQnV0dG9uICAgICAgICAgIHByZXZNb250aDsKKyAgICBwcml2YXRlIEJ1dHRvbiAgICAgICAgICBnb3RvVG9kYXk7CisgICAgcHJpdmF0ZSBCdXR0b24gICAgICAgICAgbmV4dE1vbnRoOworICAgIHByaXZhdGUgQnV0dG9uICAgICAgICAgIG5leHRZZWFyOworICAgIHByaXZhdGUgQ2FsZW5kYXJQYW5lbCAgIGNhbGVuZGFyUGFuZWw7CisKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIGFkZChDb250YWluZXIgY29udGFpbmVyLCBDb21wb25lbnQgY29tcG9uZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyaWRCYWdMYXlvdXQgZywgR3JpZEJhZ0NvbnN0cmFpbnRzIGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGdyaWR3aWR0aCwgaW50IHdlaWdodHgpCisgICAgeworICAgICAgICBjLmdyaWR3aWR0aCA9IGdyaWR3aWR0aDsKKyAgICAgICAgYy53ZWlnaHR4ID0gd2VpZ2h0eDsKKyAgICAgICAgZy5zZXRDb25zdHJhaW50cyhjb21wb25lbnQsIGMpOworICAgICAgICBjb250YWluZXIuYWRkKGNvbXBvbmVudCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogSW5pdGlhbGl6ZXMgdGhlIGFwcGxldC4gWW91IG5ldmVyIG5lZWQgdG8gY2FsbCB0aGlzIGRpcmVjdGx5LCBpdAorICAgICAqIGlzIGNhbGxlZCBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBzeXN0ZW0gb25jZSB0aGUgYXBwbGV0IGlzIGNyZWF0ZWQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgaW5pdCgpIHsKKyAgICAgICAgc2V0QmFja2dyb3VuZChEZW1vVXRpbGl0eS5iZ0NvbG9yKTsKKyAgICAgICAgc2V0TGF5b3V0KG5ldyBCb3JkZXJMYXlvdXQoMTAsMTApKTsKKworICAgICAgICBQYW5lbCB0b3BQYW5lbCA9IG5ldyBQYW5lbCgpOworICAgICAgICBHcmlkQmFnTGF5b3V0IGcgPSBuZXcgR3JpZEJhZ0xheW91dCgpOworICAgICAgICB0b3BQYW5lbC5zZXRMYXlvdXQoZyk7CisgICAgICAgIEdyaWRCYWdDb25zdHJhaW50cyBjID0gbmV3IEdyaWRCYWdDb25zdHJhaW50cygpOworICAgICAgICBjLmZpbGwgPSBHcmlkQmFnQ29uc3RyYWludHMuSE9SSVpPTlRBTDsKKworICAgICAgICAvLyBCdWlsZCB0aGUgdHdvIG1lbnVzIGZvciBzZWxlY3Rpbmcgd2hpY2ggY2FsZW5kYXIgaXMgZGlzcGxheWVkLAorICAgICAgICAvLyBwbHVzIHRoZSBtb250aC95ZWFyIGxhYmVsIGZvciBlYWNoIGNhbGVuZGFyCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjsgaSsrKSB7CisgICAgICAgICAgICBjYWxNZW51W2ldID0gbmV3IENob2ljZSgpOworICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBDQUxFTkRBUlMubGVuZ3RoOyBqKyspIHsKKyAgICAgICAgICAgICAgICBjYWxNZW51W2ldLmFkZEl0ZW0oQ0FMRU5EQVJTW2pdLm5hbWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FsTWVudVtpXS5zZXRCYWNrZ3JvdW5kKERlbW9VdGlsaXR5LmNob2ljZUNvbG9yKTsKKyAgICAgICAgICAgIGNhbE1lbnVbaV0uc2VsZWN0KGkpOworICAgICAgICAgICAgY2FsTWVudVtpXS5hZGRJdGVtTGlzdGVuZXIobmV3IENhbE1lbnVMaXN0ZW5lcigpKTsKKworICAgICAgICAgICAgLy8gTGFiZWwgZm9yIHRoZSBjdXJyZW50IG1vbnRoIG5hbWUKKyAgICAgICAgICAgIG1vbnRoTGFiZWxbaV0gPSBuZXcgQ29sb3JlZExhYmVsKCIiLCBDT0xPUlNbaV0pOworICAgICAgICAgICAgbW9udGhMYWJlbFtpXS5zZXRGb250KERlbW9VdGlsaXR5LnRpdGxlRm9udCk7CisKKyAgICAgICAgICAgIC8vIEFuZCB0aGUgZGVmYXVsdCBjYWxlbmRhciB0byB1c2UgZm9yIHRoaXMgc2xvdAorICAgICAgICAgICAgY2FsZW5kYXJzW2ldID0gQ0FMRU5EQVJTW2ldLmNhbGVuZGFyOworCisgICAgICAgICAgICBhZGQodG9wUGFuZWwsIGNhbE1lbnVbaV0sIGcsIGMsIDUsIDApOworICAgICAgICAgICAgYWRkKHRvcFBhbmVsLCBtb250aExhYmVsW2ldLCBnLCBjLCBHcmlkQmFnQ29uc3RyYWludHMuUkVNQUlOREVSLCAxKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE5vdyBhZGQgdGhlIG5leHQvcHJldmlvdXMgeWVhci9tb250aCBidXR0b25zOgorICAgICAgICBwcmV2WWVhciA9IG5ldyBCdXR0b24oIjw8Iik7CisgICAgICAgIHByZXZZZWFyLmFkZEFjdGlvbkxpc3RlbmVyKG5ldyBBZGRBY3Rpb24oQ2FsZW5kYXIuWUVBUiwgLTEpKTsKKworICAgICAgICBwcmV2TW9udGggPSBuZXcgQnV0dG9uKCI8Iik7CisgICAgICAgIHByZXZNb250aC5hZGRBY3Rpb25MaXN0ZW5lcihuZXcgQWRkQWN0aW9uKENhbGVuZGFyLk1PTlRILCAtMSkpOworCisgICAgICAgIGdvdG9Ub2RheSA9IG5ldyBCdXR0b24oIlRvZGF5Iik7CisgICAgICAgIGdvdG9Ub2RheS5hZGRBY3Rpb25MaXN0ZW5lciggbmV3IEFjdGlvbkxpc3RlbmVyKCkKKyAgICAgICAgeworICAgICAgICAgICAgcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEFjdGlvbkV2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICBjYWxlbmRhclBhbmVsLnNldERhdGUoIG5ldyBEYXRlKCkgKTsKKyAgICAgICAgICAgICAgICB1cGRhdGVNb250aE5hbWUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSApOworCisgICAgICAgIG5leHRNb250aCA9IG5ldyBCdXR0b24oIj4iKTsKKyAgICAgICAgbmV4dE1vbnRoLmFkZEFjdGlvbkxpc3RlbmVyKG5ldyBBZGRBY3Rpb24oQ2FsZW5kYXIuTU9OVEgsIDEpKTsKKworICAgICAgICBuZXh0WWVhciA9IG5ldyBCdXR0b24oIj4+Iik7CisgICAgICAgIG5leHRZZWFyLmFkZEFjdGlvbkxpc3RlbmVyKG5ldyBBZGRBY3Rpb24oQ2FsZW5kYXIuWUVBUiwgMSkpOworCisgICAgICAgIGMuZmlsbCA9IEdyaWRCYWdDb25zdHJhaW50cy5OT05FOworICAgICAgICBhZGQodG9wUGFuZWwsIHByZXZZZWFyLCAgZywgYywgMSwgMCk7CisgICAgICAgIGFkZCh0b3BQYW5lbCwgcHJldk1vbnRoLCBnLCBjLCAxLCAwKTsKKyAgICAgICAgYWRkKHRvcFBhbmVsLCBnb3RvVG9kYXksIGcsIGMsIDEsIDApOworICAgICAgICBhZGQodG9wUGFuZWwsIG5leHRNb250aCwgZywgYywgMSwgMCk7CisgICAgICAgIGFkZCh0b3BQYW5lbCwgbmV4dFllYXIsICBnLCBjLCAxLCAwKTsKKworICAgICAgICAvLyBOb3cgYWRkIHRoZSBtZW51IGZvciBzZWxlY3RpbmcgdGhlIGRpc3BsYXkgbGFuZ3VhZ2UKKyAgICAgICAgUGFuZWwgZGlzcGxheVBhbmVsID0gbmV3IFBhbmVsKCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIGRpc3BsYXlNZW51ID0gbmV3IENob2ljZSgpOworICAgICAgICAgICAgTG9jYWxlIGRlZmF1bHRMb2NhbGUgPSBMb2NhbGUuZ2V0RGVmYXVsdCgpOworICAgICAgICAgICAgaW50IGJlc3RNYXRjaCA9IC0xLCB0aGlzTWF0Y2ggPSAtMTsKKyAgICAgICAgICAgIGludCBzZWxlY3RNZSA9IDA7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbG9jYWxlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIGlmIChpID4gMCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlc1tpXS5nZXRMYW5ndWFnZSgpLmVxdWFscyhsb2NhbGVzW2ktMV0uZ2V0TGFuZ3VhZ2UoKSkgfHwKKyAgICAgICAgICAgICAgICAgICAgaSA8IGxvY2FsZXMubGVuZ3RoIC0gMSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlc1tpXS5nZXRMYW5ndWFnZSgpLmVxdWFscyhsb2NhbGVzW2krMV0uZ2V0TGFuZ3VhZ2UoKSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TWVudS5hZGRJdGVtKCBsb2NhbGVzW2ldLmdldERpc3BsYXlOYW1lKCkgKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TWVudS5hZGRJdGVtKCBsb2NhbGVzW2ldLmdldERpc3BsYXlMYW5ndWFnZSgpKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB0aGlzTWF0Y2ggPSBEZW1vVXRpbGl0eS5jb21wYXJlTG9jYWxlcyhsb2NhbGVzW2ldLCBkZWZhdWx0TG9jYWxlKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAodGhpc01hdGNoID49IGJlc3RNYXRjaCkgeworICAgICAgICAgICAgICAgICAgICBiZXN0TWF0Y2ggPSB0aGlzTWF0Y2g7CisgICAgICAgICAgICAgICAgICAgIHNlbGVjdE1lID0gaTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGRpc3BsYXlNZW51LnNldEJhY2tncm91bmQoRGVtb1V0aWxpdHkuY2hvaWNlQ29sb3IpOworICAgICAgICAgICAgZGlzcGxheU1lbnUuc2VsZWN0KHNlbGVjdE1lKTsKKworICAgICAgICAgICAgZGlzcGxheU1lbnUuYWRkSXRlbUxpc3RlbmVyKCBuZXcgSXRlbUxpc3RlbmVyKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgaXRlbVN0YXRlQ2hhbmdlZChJdGVtRXZlbnQgZSkgeworICAgICAgICAgICAgICAgICAgICBMb2NhbGUgbG9jID0gbG9jYWxlc1tkaXNwbGF5TWVudS5nZXRTZWxlY3RlZEluZGV4KCldOworICAgICAgICAgICAgICAgICAgICBjYWxlbmRhclBhbmVsLnNldExvY2FsZSggbG9jICk7CisgICAgICAgICAgICAgICAgICAgIG1vbnRoRm9ybWF0WzBdID0gbW9udGhGb3JtYXRbMV0gPSBudWxsOworICAgICAgICAgICAgICAgICAgICB1cGRhdGVNb250aE5hbWUoKTsKKyAgICAgICAgICAgICAgICAgICAgcmVwYWludCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gKTsKKworICAgICAgICAgICAgTGFiZWwgbDEgPSBuZXcgTGFiZWwoIkRpc3BsYXkgTGFuZ3VhZ2U6IiwgTGFiZWwuUklHSFQpOworICAgICAgICAgICAgbDEuc2V0Rm9udChEZW1vVXRpbGl0eS5sYWJlbEZvbnQpOworCisgICAgICAgICAgICBkaXNwbGF5UGFuZWwuc2V0TGF5b3V0KG5ldyBGbG93TGF5b3V0KCkpOworICAgICAgICAgICAgZGlzcGxheVBhbmVsLmFkZChsMSk7CisgICAgICAgICAgICBkaXNwbGF5UGFuZWwuYWRkKGRpc3BsYXlNZW51KTsKKworICAgICAgICB9CisgICAgICAgIGMuZmlsbCA9IEdyaWRCYWdDb25zdHJhaW50cy5OT05FOworICAgICAgICBjLmFuY2hvciA9IEdyaWRCYWdDb25zdHJhaW50cy5FQVNUOworCisgICAgICAgIGFkZCh0b3BQYW5lbCwgZGlzcGxheVBhbmVsLCBnLCBjLCBHcmlkQmFnQ29uc3RyYWludHMuUkVNQUlOREVSLCAwKTsKKworICAgICAgICAvLyBUaGUgdGl0bGUsIGJ1dHRvbnMsIGV0Yy4gZ28gaW4gYSBwYW5lbCBhdCB0aGUgdG9wIG9mIHRoZSB3aW5kb3cKKyAgICAgICAgYWRkKCJOb3J0aCIsIHRvcFBhbmVsKTsKKworICAgICAgICAvLyBUaGUgY29weXJpZ2h0IG5vdGljZSBnb2VzIGF0IHRoZSBib3R0b20gb2YgdGhlIHdpbmRvdworICAgICAgICBMYWJlbCBjb3B5cmlnaHQgPSBuZXcgTGFiZWwoRGVtb1V0aWxpdHkuY29weXJpZ2h0MSwgTGFiZWwuTEVGVCk7CisgICAgICAgIGNvcHlyaWdodC5zZXRGb250KERlbW9VdGlsaXR5LmNyZWRpdEZvbnQpOworICAgICAgICBhZGQoIlNvdXRoIiwgY29weXJpZ2h0KTsKKworICAgICAgICAvLyBOb3cgY3JlYXRlIHRoZSBiaWcgY2FsZW5kYXIgcGFuZWwgYW5kIHN0aWNrIGl0IGluIHRoZSBtaWRkbGUKKyAgICAgICAgY2FsZW5kYXJQYW5lbCA9IG5ldyBDYWxlbmRhclBhbmVsKCBsb2NhbGVzW2Rpc3BsYXlNZW51LmdldFNlbGVjdGVkSW5kZXgoKV0gKTsKKyAgICAgICAgYWRkKCJDZW50ZXIiLCBjYWxlbmRhclBhbmVsKTsKKworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDI7IGkrKykgeworICAgICAgICAgICAgY2FsZW5kYXJQYW5lbC5zZXRDYWxlbmRhcihpLCBjYWxlbmRhcnNbaV0pOworICAgICAgICAgICAgY2FsZW5kYXJQYW5lbC5zZXRDb2xvcihpLCBDT0xPUlNbaV0pOworICAgICAgICB9CisKKyAgICAgICAgdXBkYXRlTW9udGhOYW1lKCk7CisgICAgfTsKKworCisgICAgcHJpdmF0ZSB2b2lkIHVwZGF0ZU1vbnRoTmFtZSgpCisgICAgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyOyBpKyspIHsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBpZiAobW9udGhGb3JtYXRbaV0gPT0gbnVsbCkgeyAgICAgLy8gVE9ETzogb3B0aW1pemUKKyAgICAgICAgICAgICAgICAgICAgICAgIERhdGVGb3JtYXQgZiA9IERhdGVGb3JtYXQuZ2V0RGF0ZVRpbWVJbnN0YW5jZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGVuZGFyc1tpXSwgRGF0ZUZvcm1hdC5NRURJVU0sIC0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlc1tkaXNwbGF5TWVudS5nZXRTZWxlY3RlZEluZGV4KCldKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmIGluc3RhbmNlb2YgY29tLmlibS5pY3UudGV4dC5TaW1wbGVEYXRlRm9ybWF0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tLmlibS5pY3UudGV4dC5TaW1wbGVEYXRlRm9ybWF0IGYxID0gKGNvbS5pYm0uaWN1LnRleHQuU2ltcGxlRGF0ZUZvcm1hdCkgZjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmMS5hcHBseVBhdHRlcm4oIk1NTU0sIHl5eXkgRyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYxLnNldFRpbWVab25lKG5ldyBTaW1wbGVUaW1lWm9uZSgwLCAiVVRDIikpOworLy9oZXkge2FsfSAtCisvLyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZiBpbnN0YW5jZW9mIGphdmEudGV4dC5TaW1wbGVEYXRlRm9ybWF0KSB7CisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZhLnRleHQuU2ltcGxlRGF0ZUZvcm1hdCBmMSA9IChqYXZhLnRleHQuU2ltcGxlRGF0ZUZvcm1hdCkgZjsKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYxLmFwcGx5UGF0dGVybigiTU1NTSwgeXl5eSBHIik7CisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmMS5zZXRUaW1lWm9uZShuZXcgU2ltcGxlVGltZVpvbmUoMCwgIlVUQyIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoRm9ybWF0W2ldID0gZjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gY2F0Y2ggKENsYXNzQ2FzdEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgIC8vaGV5IHtsd30gLSB0aGVyZSdzIHNvbWV0aGluZyB3cm9uZyBpbiB0aGlzIHJvdXRpbmUgdGhhdCBjdWFzZXMgZXhjZXB0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGUpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG1vbnRoTGFiZWxbaV0uc2V0VGV4dCggbW9udGhGb3JtYXRbaV0uZm9ybWF0KCBjYWxlbmRhclBhbmVsLmZpcnN0T2ZNb250aCgpICkpOworICAgICAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIENhbE1lbnVMaXN0ZW5lciByZXNwb25kcyB0byBldmVudHMgaW4gdGhlIHR3byBwb3B1cCBtZW51cyB0aGF0IHNlbGVjdAorICAgICAqIHRoZSBjYWxlbmRhciBzeXN0ZW1zIHRvIGJlIHVzZWQgaW4gdGhlIGRpc3BsYXkuICBJdCBmaWd1cmVzIG91dCB3aGljaAorICAgICAqIG9mIHRoZSB0d28gbWVudXMgdGhlIGV2ZW50IG9jY3VycmVkIGluIGFuZCB1cGRhdGVzIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICogZWxlbWVudCBvZiB0aGUgY2FsZW5kYXJzW10gYXJyYXkgdG8gbWF0Y2ggdGhlIG5ldyBzZWxlY3Rpb24uCisgICAgICovCisgICAgcHJpdmF0ZSBjbGFzcyBDYWxNZW51TGlzdGVuZXIgaW1wbGVtZW50cyBJdGVtTGlzdGVuZXIKKyAgICB7CisgICAgICAgICBwdWJsaWMgdm9pZCBpdGVtU3RhdGVDaGFuZ2VkKEl0ZW1FdmVudCBlKQorICAgICAgICAgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjYWxNZW51Lmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChlLmdldEl0ZW1TZWxlY3RhYmxlKCkgPT0gY2FsTWVudVtpXSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8vIFdlIGZvdW5kIHRoZSBtZW51IHRoYXQgdGhlIGV2ZW50IGhhcHBlbmVkIGluLgorICAgICAgICAgICAgICAgICAgICAvLyBGaWd1cmUgb3V0IHdoaWNoIG5ldyBjYWxlbmRhciB0aGV5IHNlbGVjdGVkLgorICAgICAgICAgICAgICAgICAgICBDYWxlbmRhciBuZXdDYWwgPSBDQUxFTkRBUlNbIGNhbE1lbnVbaV0uZ2V0U2VsZWN0ZWRJbmRleCgpIF0uY2FsZW5kYXI7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5ld0NhbCAhPSBjYWxlbmRhcnNbaV0pCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIGFueSBvZiB0aGUgb3RoZXIgbWVudXMgYXJlIHNldCB0byB0aGUgc2FtZSBuZXcgY2FsZW5kYXIKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdlJ3JlIGFib3V0IHRvIHVzZSBmb3IgdGhpcyBtZW51LCBzZXQgdGhlbSB0byB0aGUgY3VycmVudAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsZW5kYXIgZnJvbSAqdGhpcyogbWVudSBzbyB3ZSB3b24ndCBoYXZlIHR3byB0aGUgc2FtZQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBjYWxlbmRhcnMubGVuZ3RoOyBqKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaiAhPSBpICYmIGNhbGVuZGFyc1tqXSA9PSBuZXdDYWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsZW5kYXJzW2pdID0gY2FsZW5kYXJzW2ldOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxlbmRhclBhbmVsLnNldENhbGVuZGFyKGosIGNhbGVuZGFyc1tqXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoRm9ybWF0W2pdID0gbnVsbDsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBrID0gMDsgayA8IENBTEVOREFSUy5sZW5ndGg7IGsrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbGVuZGFyc1tqXSA9PSBDQUxFTkRBUlNba10uY2FsZW5kYXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxNZW51W2pdLnNlbGVjdChrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vdyB1cGRhdGUgdGhpcyBtZW51IHRvIHVzZSB0aGUgbmV3IGNhbGVuZGFyIHRoZSB1c2VyIHNlbGVjdGVkCisgICAgICAgICAgICAgICAgICAgICAgICBjYWxlbmRhcnNbaV0gPSBuZXdDYWw7CisgICAgICAgICAgICAgICAgICAgICAgICBjYWxlbmRhclBhbmVsLnNldENhbGVuZGFyKGksIG5ld0NhbCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtb250aEZvcm1hdFtpXSA9IG51bGw7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZU1vbnRoTmFtZSgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgICogQWRkQWN0aW9uIGhhbmRsZXMgdGhlIG5leHQvcHJldmlvdXMgeWVhci9tb250aCBidXR0b25zLi4uCisgICAgICovCisgICAgcHJpdmF0ZSBjbGFzcyBBZGRBY3Rpb24gaW1wbGVtZW50cyBBY3Rpb25MaXN0ZW5lciB7CisgICAgICAgIEFkZEFjdGlvbihpbnQgZmllbGQsIGludCBhbW91bnQpIHsKKyAgICAgICAgICAgIHRoaXMuZmllbGQgPSBmaWVsZDsKKyAgICAgICAgICAgIHRoaXMuYW1vdW50ID0gYW1vdW50OworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEFjdGlvbkV2ZW50IGUpIHsKKyAgICAgICAgICAgIGNhbGVuZGFyUGFuZWwuYWRkKGZpZWxkLCBhbW91bnQpOworICAgICAgICAgICAgdXBkYXRlTW9udGhOYW1lKCk7CisgICAgICAgIH0KKworICAgICAgICBwcml2YXRlIGludCBmaWVsZCwgYW1vdW50OworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbG9yZWRMYWJlbCBpcyBzaW1pbGFyIHRvIGphdmEuYXd0LkxhYmVsLCB3aXRoIHR3byBkaWZmZXJlbmNlczoKKyAgICAgKgorICAgICAqICAtIFlvdSBjYW4gc2V0IGl0cyB0ZXh0IGNvbG9yCisgICAgICoKKyAgICAgKiAgLSBJdCBkcmF3cyB0ZXh0IHVzaW5nIGRyYXdTdHJpbmcgcmF0aGVyIHRoYW4gdXNpbmcgYSBob3N0LXNwZWNpZmljCisgICAgICogICAgIlBlZXIiIG9iamVjdCBsaWtlIEFXVCBkb2VzLiAgT24gMS4yLCB1c2luZyBkcmF3U3RyaW5nIGdpdmVzCisgICAgICogICAgdXMgQmlkaSByZW9yZGVyaW5nIGZvciBmcmVlLgorICAgICAqLworICAgIHN0YXRpYyBwcml2YXRlIGNsYXNzIENvbG9yZWRMYWJlbCBleHRlbmRzIENvbXBvbmVudCB7CisgICAgICAgIHB1YmxpYyBDb2xvcmVkTGFiZWwoU3RyaW5nIGxhYmVsKSB7CisgICAgICAgICAgICB0ZXh0ID0gbGFiZWw7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgQ29sb3JlZExhYmVsKFN0cmluZyBsYWJlbCwgQ29sb3IgYykgeworICAgICAgICAgICAgdGV4dCA9IGxhYmVsOworICAgICAgICAgICAgY29sb3IgPSBjOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgc2V0VGV4dChTdHJpbmcgbGFiZWwpIHsKKyAgICAgICAgICAgIHRleHQgPSBsYWJlbDsKKyAgICAgICAgICAgIHJlcGFpbnQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIHNldEZvbnQoRm9udCBmKSB7CisgICAgICAgICAgICBmb250ID0gZjsKKyAgICAgICAgICAgIHJlcGFpbnQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIHBhaW50KEdyYXBoaWNzIGcpIHsKKyAgICAgICAgICAgIEZvbnRNZXRyaWNzIGZtID0gZy5nZXRGb250TWV0cmljcyhmb250KTsKKworICAgICAgICAgICAgUmVjdGFuZ2xlIGJvdW5kcyA9IGdldEJvdW5kcygpOworCisgICAgICAgICAgICBnLnNldENvbG9yKGNvbG9yKTsKKyAgICAgICAgICAgIGcuc2V0Rm9udChmb250KTsKKyAgICAgICAgICAgIGcuZHJhd1N0cmluZyh0ZXh0LCBmbS5zdHJpbmdXaWR0aCgiXHUwMGEwIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRzLmhlaWdodC8yICsgZm0uZ2V0SGVpZ2h0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAtIGZtLmdldEFzY2VudCgpICsgZm0uZ2V0TGVhZGluZygpLzIpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIERpbWVuc2lvbiBnZXRQcmVmZXJyZWRTaXplKCkgeworICAgICAgICAgICAgcmV0dXJuIGdldE1pbmltdW1TaXplKCk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgRGltZW5zaW9uIGdldE1pbmltdW1TaXplKCkgeworICAgICAgICAgICAgRm9udE1ldHJpY3MgZm0gPSBnZXRGb250TWV0cmljcyhmb250KTsKKworICAgICAgICAgICAgcmV0dXJuIG5ldyBEaW1lbnNpb24oIGZtLnN0cmluZ1dpZHRoKHRleHQpICsgMipmbS5zdHJpbmdXaWR0aCgiXHUwMGEwIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm0uZ2V0SGVpZ2h0KCkgKyBmbS5nZXRMZWFkaW5nKCkqMik7CisgICAgICAgIH0KKworICAgICAgICBTdHJpbmcgdGV4dDsKKyAgICAgICAgQ29sb3IgY29sb3IgPSBDb2xvci5ibGFjazsKKyAgICAgICAgRm9udCBmb250ID0gRGVtb1V0aWxpdHkubGFiZWxGb250OworICAgIH0KKworICAgIC8qKgorICAgICAqIFByaW50IG91dCB0aGUgZXJyb3IgbWVzc2FnZSB3aGlsZSBkZWJ1Z2dpbmcgdGhpcyBwcm9ncmFtLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGVycm9yVGV4dChTdHJpbmcgcykKKyAgICB7CisgICAgICAgIGlmIChERUJVRykKKyAgICAgICAgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHMpOworICAgICAgICB9CisgICAgfQorCisgICAgY2xhc3MgQ2FsZW5kYXJSZWMgeworICAgICAgICBwdWJsaWMgQ2FsZW5kYXJSZWMoU3RyaW5nIG5hbWVTdHIsIENhbGVuZGFyIGNhbCkKKyAgICAgICAgeworICAgICAgICAgICAgbmFtZSA9IG5hbWVTdHI7CisgICAgICAgICAgICBjYWxlbmRhciA9IGNhbDsKKyAgICAgICAgfQorCisgICAgICAgIENhbGVuZGFyICBjYWxlbmRhcjsKKyAgICAgICAgU3RyaW5nICAgICAgICAgICAgICBuYW1lOworICAgIH07CisKKyAgICBwcml2YXRlIGZpbmFsIENhbGVuZGFyUmVjW10gQ0FMRU5EQVJTID0geworICAgICAgICBuZXcgQ2FsZW5kYXJSZWMoIkdyZWdvcmlhbiBDYWxlbmRhciIsICAgICAgIG5ldyBHcmVnb3JpYW5DYWxlbmRhcigpKSwKKyAgICAgICAgbmV3IENhbGVuZGFyUmVjKCJIZWJyZXcgQ2FsZW5kYXIiLCAgICAgICAgICBuZXcgSGVicmV3Q2FsZW5kYXIoKSksCisgICAgICAgIG5ldyBDYWxlbmRhclJlYygiSXNsYW1pYyBDYWxlbmRhciIsICAgICAgICAgbWFrZUlzbGFtaWMoZmFsc2UpKSwKKyAgICAgICAgbmV3IENhbGVuZGFyUmVjKCJJc2xhbWljIENpdmlsIENhbGVuZGFyICIsICBtYWtlSXNsYW1pYyh0cnVlKSksCisgICAgICAgIG5ldyBDYWxlbmRhclJlYygiQnVkZGhpc3QgQ2FsZW5kYXIiLCAgICAgICAgbmV3IEJ1ZGRoaXN0Q2FsZW5kYXIoKSksCisgICAgICAgIG5ldyBDYWxlbmRhclJlYygiSmFwYW5lc2UgQ2FsZW5kYXIiLCAgICAgICAgbmV3IEphcGFuZXNlQ2FsZW5kYXIoKSksCisgICAgfTsKKworICAgIHN0YXRpYyBwcml2YXRlIGZpbmFsIENhbGVuZGFyIG1ha2VJc2xhbWljKGJvb2xlYW4gY2l2aWwpIHsKKyAgICAgICAgSXNsYW1pY0NhbGVuZGFyIGNhbCA9IG5ldyBJc2xhbWljQ2FsZW5kYXIoKTsKKyAgICAgICAgY2FsLnNldENpdmlsKGNpdmlsKTsKKyAgICAgICAgcmV0dXJuIGNhbDsKKyAgICB9OworCisgICAgc3RhdGljIGZpbmFsIENvbG9yW10gQ09MT1JTID0geyBDb2xvci5ibHVlLCBDb2xvci5ibGFjayB9OworfQorCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vY2FsZW5kYXIvQ2FsZW5kYXJQYW5lbC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL2NhbGVuZGFyL0NhbGVuZGFyUGFuZWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xZDA1YzU5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL2NhbGVuZGFyL0NhbGVuZGFyUGFuZWwuamF2YQpAQCAtMCwwICsxLDM3MSBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTctMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL2NhbGVuZGFyL0NhbGVuZGFyUGFuZWwuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xOSAwNDoxMDoyMyAkIAorICogJFJldmlzaW9uOiAxLjkgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LmRlbW8uY2FsZW5kYXI7CisKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYuZGVtby4qOworCitpbXBvcnQgamF2YS5hcHBsZXQuQXBwbGV0OworaW1wb3J0IGphdmEuYXd0Lio7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuKjsKKy8vaW1wb3J0IGphdmEudXRpbC4qOworaW1wb3J0IGphdmEubmV0Lio7CitpbXBvcnQgamF2YS5pby4qOworCisvL2ltcG9ydCBqYXZhLnRleHQuRGF0ZUZvcm1hdDsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0LkRhdGVGb3JtYXQ7CisvL2ltcG9ydCBqYXZhLnV0aWwuU2ltcGxlVGltZVpvbmU7CitpbXBvcnQgY29tLmlibS5pY3UudXRpbC5TaW1wbGVUaW1lWm9uZTsKKy8vaW1wb3J0IGphdmEudXRpbC4qOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CisKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLio7CitpbXBvcnQgY29tLmlibS5pY3UubGFuZy4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuKjsKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYuZGVtby5pbXBsLio7CisKK2NsYXNzIENhbGVuZGFyUGFuZWwgZXh0ZW5kcyBDYW52YXMgeworCisgICAgcHVibGljIENhbGVuZGFyUGFuZWwoIExvY2FsZSBsb2NhbGUgKSB7CisgICAgICAgIHNldExvY2FsZShsb2NhbGUpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldExvY2FsZShMb2NhbGUgbG9jYWxlKSB7CisgICAgICAgIGlmIChmRGlzcGxheUxvY2FsZSA9PSBudWxsIHx8ICFmRGlzcGxheUxvY2FsZS5lcXVhbHMobG9jYWxlKSkgeworICAgICAgICAgICAgZkRpc3BsYXlMb2NhbGUgPSBsb2NhbGU7CisgICAgICAgICAgICBkaXJ0eSA9IHRydWU7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZkNhbGVuZGFyLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKGZDYWxlbmRhcltpXSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIGZTeW1ib2xzW2ldID0gbmV3IERhdGVGb3JtYXRTeW1ib2xzKGZDYWxlbmRhcltpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZkRpc3BsYXlMb2NhbGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFN0cmluZyBsYW5nID0gbG9jYWxlLmdldExhbmd1YWdlKCk7CisgICAgICAgICAgICBsZWZ0VG9SaWdodCA9ICEobGFuZy5lcXVhbHMoIml3IikgfHwgbGFuZy5lcXVhbHMoImFyIikpOworCisgICAgICAgICAgICByZXBhaW50KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXREYXRlKERhdGUgZGF0ZSkgeworICAgICAgICBmU3RhcnRPZk1vbnRoID0gZGF0ZTsKKyAgICAgICAgZGlydHkgPSB0cnVlOworICAgICAgICByZXBhaW50KCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgYWRkKGludCBmaWVsZCwgaW50IGRlbHRhKQorICAgIHsKKyAgICAgICAgc3luY2hyb25pemVkKGZDYWxlbmRhcikgeworICAgICAgICAgICAgZkNhbGVuZGFyWzBdLnNldFRpbWUoZlN0YXJ0T2ZNb250aCk7CisgICAgICAgICAgICBmQ2FsZW5kYXJbMF0uYWRkKGZpZWxkLCBkZWx0YSk7CisgICAgICAgICAgICBmU3RhcnRPZk1vbnRoID0gZkNhbGVuZGFyWzBdLmdldFRpbWUoKTsKKyAgICAgICAgfQorICAgICAgICBkaXJ0eSA9IHRydWU7CisgICAgICAgIHJlcGFpbnQoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRDb2xvcihpbnQgaW5kZXgsIENvbG9yIGMpIHsKKyAgICAgICAgZkNvbG9yW2luZGV4XSA9IGM7CisgICAgICAgIHJlcGFpbnQoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRDYWxlbmRhcihpbnQgaW5kZXgsIENhbGVuZGFyIGMpIHsKKyAgICAgICAgRGF0ZSBkYXRlID0gKGZDYWxlbmRhcltpbmRleF0gPT0gbnVsbCkgPyBuZXcgRGF0ZSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZkNhbGVuZGFyW2luZGV4XS5nZXRUaW1lKCk7CisKKyAgICAgICAgZkNhbGVuZGFyW2luZGV4XSA9IGM7CisgICAgICAgIGZDYWxlbmRhcltpbmRleF0uc2V0VGltZShkYXRlKTsKKworICAgICAgICBmU3ltYm9sc1tpbmRleF0gPSBuZXcgRGF0ZUZvcm1hdFN5bWJvbHMoYywgZkRpc3BsYXlMb2NhbGUpOworICAgICAgICBkaXJ0eSA9IHRydWU7CisgICAgICAgIHJlcGFpbnQoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgQ2FsZW5kYXIgZ2V0Q2FsZW5kYXIoaW50IGluZGV4KSB7CisgICAgICAgIHJldHVybiBmQ2FsZW5kYXJbaW5kZXhdOworICAgIH0KKworICAgIHB1YmxpYyBMb2NhbGUgZ2V0RGlzcGxheUxvY2FsZSgpIHsKKyAgICAgICAgcmV0dXJuIGZEaXNwbGF5TG9jYWxlOworICAgIH0KKworICAgIHB1YmxpYyBEYXRlIGZpcnN0T2ZNb250aCgpIHsKKyAgICAgICAgcmV0dXJuIGZTdGFydE9mTW9udGg7CisgICAgfQorCisgICAgcHJpdmF0ZSBEYXRlIHN0YXJ0T2ZNb250aChEYXRlIGRhdGVJbk1vbnRoKQorICAgIHsKKyAgICAgICAgc3luY2hyb25pemVkKGZDYWxlbmRhcikgeworICAgICAgICAgICAgZkNhbGVuZGFyWzBdLnNldFRpbWUoZGF0ZUluTW9udGgpOworCisgICAgICAgICAgICBpbnQgZXJhID0gZkNhbGVuZGFyWzBdLmdldChDYWxlbmRhci5FUkEpOworICAgICAgICAgICAgaW50IHllYXIgPSBmQ2FsZW5kYXJbMF0uZ2V0KENhbGVuZGFyLllFQVIpOworICAgICAgICAgICAgaW50IG1vbnRoID0gZkNhbGVuZGFyWzBdLmdldChDYWxlbmRhci5NT05USCk7CisKKyAgICAgICAgICAgIGZDYWxlbmRhclswXS5jbGVhcigpOworICAgICAgICAgICAgZkNhbGVuZGFyWzBdLnNldChDYWxlbmRhci5FUkEsIGVyYSk7CisgICAgICAgICAgICBmQ2FsZW5kYXJbMF0uc2V0KENhbGVuZGFyLllFQVIsIHllYXIpOworICAgICAgICAgICAgZkNhbGVuZGFyWzBdLnNldChDYWxlbmRhci5NT05USCwgbW9udGgpOworICAgICAgICAgICAgZkNhbGVuZGFyWzBdLnNldChDYWxlbmRhci5EQVRFLCAxKTsKKworICAgICAgICAgICAgcmV0dXJuIGZDYWxlbmRhclswXS5nZXRUaW1lKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgY2FsY3VsYXRlKCkKKyAgICB7CisgICAgICAgIC8vCisgICAgICAgIC8vIEFzIGEgd29ya2Fyb3VuZCBmb3IgSkRLIDEuMS4zIGFuZCBiZWxvdywgd2hlcmUgQ2FsZW5kYXJzIGFuZCB0aW1lCisgICAgICAgIC8vIHpvbmVzIGFyZSBhIGJpdCBnb29meSwgYWx3YXlzIHNldCBteSBjYWxlbmRhcidzIHRpbWUgem9uZSB0byBVVEMuCisgICAgICAgIC8vIFlvdSB3b3VsZCB0aGluayBJIHdvdWxkIHdhbnQgdG8gZG8gdGhpcyBpbiB0aGUgInNldCIgZnVuY3Rpb24gYWJvdmUsCisgICAgICAgIC8vIGJ1dCBpZiBJIGRvIHRoYXQsIHRoZSBwcm9ncmFtIGhhbmdzIHdoZW4gdGhpcyBjbGFzcyBpcyBsb2FkZWQsCisgICAgICAgIC8vIHBlcmhhcHMgZHVlIHRvIHNvbWUgc29ydCBvZiBzdGF0aWMgaW5pdGlhbGl6YXRpb24gb3JkZXJpbmcgcHJvYmxlbS4KKyAgICAgICAgLy8gU28gSSBkbyBpdCBoZXJlIGluc3RlYWQuCisgICAgICAgIC8vCisgICAgICAgIGZDYWxlbmRhclswXS5zZXRUaW1lWm9uZShuZXcgU2ltcGxlVGltZVpvbmUoMCwgIlVUQyIpKTsKKworICAgICAgICBDYWxlbmRhciBjID0gKENhbGVuZGFyKWZDYWxlbmRhclswXS5jbG9uZSgpOyAvLyBUZW1wb3JhcnkgY29weQorCisgICAgICAgIGZTdGFydE9mTW9udGggPSBzdGFydE9mTW9udGgoZlN0YXJ0T2ZNb250aCk7CisKKyAgICAgICAgLy8gU3Rhc2ggYXdheSBhIGZldyB1c2VmdWwgY29uc3RhbnRzIGZvciB0aGlzIGNhbGVuZGFyIGFuZCBkaXNwbGF5CisgICAgICAgIG1pbkRheSA9IGMuZ2V0TWluaW11bShDYWxlbmRhci5EQVlfT0ZfV0VFSyk7CisgICAgICAgIGRheXNJbldlZWsgPSBjLmdldE1heGltdW0oQ2FsZW5kYXIuREFZX09GX1dFRUspIC0gbWluRGF5ICsgMTsKKworICAgICAgICBmaXJzdERheU9mV2VlayA9IENhbGVuZGFyLmdldEluc3RhbmNlKGZEaXNwbGF5TG9jYWxlKS5nZXRGaXJzdERheU9mV2VlaygpOworCisgICAgICAgIC8vIFN0YXNoIGF3YXkgYSBEYXRlIGZvciB0aGUgc3RhcnQgb2YgdGhpcyBtb250aAorCisgICAgICAgIC8vIEZpbmQgdGhlIGRheSBvZiB3ZWVrIG9mIHRoZSBmaXJzdCBkYXkgaW4gdGhpcyBtb250aAorICAgICAgICBjLnNldFRpbWUoZlN0YXJ0T2ZNb250aCk7CisgICAgICAgIGZpcnN0RGF5SW5Nb250aCA9IGMuZ2V0KENhbGVuZGFyLkRBWV9PRl9XRUVLKTsKKyAgICAgICAgaW50IGZpcnN0V2VlayA9IGMuZ2V0KENhbGVuZGFyLldFRUtfT0ZfTU9OVEgpOworCisgICAgICAgIC8vIE5vdyBmaW5kIHRoZSAjIG9mIGRheXMgaW4gdGhlIG1vbnRoCisgICAgICAgIGMucm9sbChDYWxlbmRhci5EQVRFLCBmYWxzZSk7CisgICAgICAgIGRheXNJbk1vbnRoID0gYy5nZXQoQ2FsZW5kYXIuREFURSk7CisKKyAgICAgICAgLy8gRmluYWxseSwgZmluZCB0aGUgZW5kIG9mIHRoZSBtb250aCwgaS5lLiB0aGUgc3RhcnQgb2YgdGhlIG5leHQgb25lCisgICAgICAgIGMucm9sbChDYWxlbmRhci5EQVRFLCB0cnVlKTsKKyAgICAgICAgYy5hZGQoQ2FsZW5kYXIuTU9OVEgsIDEpOworICAgICAgICBjLmdldFRpbWUoKTsgICAgICAgIC8vIEpESyAxLjEuMiBidWcgd29ya2Fyb3VuZAorICAgICAgICBjLmFkZChDYWxlbmRhci5TRUNPTkQsIC0xKTsKKyAgICAgICAgRGF0ZSBlbmRPZk1vbnRoID0gYy5nZXRUaW1lKCk7CisgICAgICAgIGVuZE9mTW9udGggPSBudWxsOworICAgICAgICBpbnQgbGFzdFdlZWsgPSBjLmdldChDYWxlbmRhci5XRUVLX09GX01PTlRIKTsKKworICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIG51bWJlciBvZiBmdWxsIG9yIHBhcnRpYWwgd2Vla3MgaW4gdGhpcyBtb250aC4KKyAgICAgICAgbnVtV2Vla3MgPSBsYXN0V2VlayAtIGZpcnN0V2VlayArIDE7CisKKyAgICAgICAgZGlydHkgPSBmYWxzZTsKKyAgICB9CisKKyAgICBzdGF0aWMgZmluYWwgaW50IFhJTlNFVCA9IDQ7CisgICAgc3RhdGljIGZpbmFsIGludCBZSU5TRVQgPSAyOworCisgICAgLyoKKyAgICAgKiBDb252ZXJ0IGZyb20gdGhlIGRheSBudW1iZXIgd2l0aGluIGEgbW9udGggKDEtYmFzZWQpCisgICAgICogdG8gdGhlIGNlbGwgY29vcmRpbmF0ZXMgb24gdGhlIGNhbGVuZGFyICgwLWJhc2VkKQorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBkYXRlVG9DZWxsKGludCBkYXRlLCBQb2ludCBwb3MpCisgICAgeworICAgICAgICBpbnQgY2VsbCA9IChkYXRlICsgZmlyc3REYXlJbk1vbnRoIC0gZmlyc3REYXlPZldlZWsgLSBtaW5EYXkpOworICAgICAgICBpZiAoZmlyc3REYXlJbk1vbnRoIDwgZmlyc3REYXlPZldlZWspIHsKKyAgICAgICAgICAgIGNlbGwgKz0gZGF5c0luV2VlazsKKyAgICAgICAgfQorCisgICAgICAgIHBvcy54ID0gY2VsbCAlIGRheXNJbldlZWs7CisgICAgICAgIHBvcy55ID0gY2VsbCAvIGRheXNJbldlZWs7CisgICAgfQorICAgIHByaXZhdGUgUG9pbnQgZGF0ZVRvQ2VsbChpbnQgZGF0ZSkgeworICAgICAgICBQb2ludCBwID0gbmV3IFBvaW50KDAsMCk7CisgICAgICAgIGRhdGVUb0NlbGwoZGF0ZSwgcCk7CisgICAgICAgIHJldHVybiBwOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHBhaW50KEdyYXBoaWNzIGcpIHsKKworICAgICAgICBpZiAoZGlydHkpIHsKKyAgICAgICAgICAgIGNhbGN1bGF0ZSgpOworICAgICAgICB9CisKKyAgICAgICAgUG9pbnQgY2VsbFBvcyA9IG5ldyBQb2ludCgwLDApOyAgICAgLy8gVGVtcG9yYXJ5IHZhcmlhYmxlCisgICAgICAgIERpbWVuc2lvbiBkID0gdGhpcy5nZXRTaXplKCk7CisKKyAgICAgICAgZy5zZXRDb2xvcihDb2xvci5saWdodEdyYXkpOworICAgICAgICBnLmZpbGxSZWN0KDAsMCxkLndpZHRoLGQuaGVpZ2h0KTsKKworICAgICAgICAvLyBEcmF3IHRoZSBkYXkgbmFtZXMgYXQgdGhlIHRvcAorICAgICAgICBnLnNldENvbG9yKENvbG9yLmJsYWNrKTsKKyAgICAgICAgZy5zZXRGb250KERlbW9VdGlsaXR5LmxhYmVsRm9udCk7CisgICAgICAgIEZvbnRNZXRyaWNzIGZtID0gZy5nZXRGb250TWV0cmljcygpOworICAgICAgICBpbnQgbGFiZWxIZWlnaHQgPSBmbS5nZXRIZWlnaHQoKSArIFlJTlNFVCAqIDI7CisKKyAgICAgICAgaW50IHYgPSBmbS5nZXRBc2NlbnQoKSArIFlJTlNFVDsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBkYXlzSW5XZWVrOyBpKyspIHsKKyAgICAgICAgICAgIGludCBkYXlOdW0gPSAoaSArIG1pbkRheSArIGZpcnN0RGF5T2ZXZWVrIC0gMikgJSBkYXlzSW5XZWVrICsgMTsKKyAgICAgICAgICAgIFN0cmluZyBkYXlOYW1lID0gZlN5bWJvbHNbMF0uZ2V0V2Vla2RheXMoKVtkYXlOdW1dOworCisKKyAgICAgICAgICAgIGRvdWJsZSBoOworICAgICAgICAgICAgaWYgKGxlZnRUb1JpZ2h0KSB7CisgICAgICAgICAgICAgICAgaCA9IGQud2lkdGgqKGkgKyAwLjUpIC8gZGF5c0luV2VlazsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaCA9IGQud2lkdGgqKGRheXNJbldlZWsgLSBpIC0gMC41KSAvIGRheXNJbldlZWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBoIC09IGZtLnN0cmluZ1dpZHRoKGRheU5hbWUpIC8gMjsKKworICAgICAgICAgICAgZy5kcmF3U3RyaW5nKGRheU5hbWUsIChpbnQpaCwgdik7CisgICAgICAgIH0KKworICAgICAgICBkb3VibGUgY2VsbEhlaWdodCA9IChkLmhlaWdodCAtIGxhYmVsSGVpZ2h0IC0gMSkgLyBudW1XZWVrczsKKyAgICAgICAgZG91YmxlIGNlbGxXaWR0aCA9IChkb3VibGUpKGQud2lkdGggLSAxKSAvIGRheXNJbldlZWs7CisKKyAgICAgICAgLy8gRHJhdyBhIHdoaXRlIGJhY2tncm91bmQgaW4gdGhlIHBhcnQgb2YgdGhlIGNhbGVuZGFyCisgICAgICAgIC8vIHRoYXQgZGlzcGxheXMgdGhpcyBtb250aC4KKyAgICAgICAgLy8gRmlyc3QgZmlndXJlIG91dCBob3cgbXVjaCBvZiB0aGUgZmlyc3Qgd2VlayBzaG91bGQgYmUgc2hhZGVkLgorICAgICAgICB7CisgICAgICAgICAgICBnLnNldENvbG9yKENvbG9yLndoaXRlKTsKKyAgICAgICAgICAgIGRhdGVUb0NlbGwoMSwgY2VsbFBvcyk7CisgICAgICAgICAgICBpbnQgd2lkdGggPSAoaW50KShjZWxsUG9zLngqY2VsbFdpZHRoKTsgIC8vIFdpZHRoIG9mIHVuc2hhZGVkIGFyZWEKKworICAgICAgICAgICAgaWYgKGxlZnRUb1JpZ2h0KSB7CisgICAgICAgICAgICAgICAgZy5maWxsUmVjdCgoaW50KSh3aWR0aCksIGxhYmVsSGVpZ2h0ICwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGQud2lkdGggLSB3aWR0aCwgKGludCljZWxsSGVpZ2h0KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZy5maWxsUmVjdCgwLCBsYWJlbEhlaWdodCAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkLndpZHRoIC0gd2lkdGgsIChpbnQpY2VsbEhlaWdodCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEFsbCBvZiB0aGUgaW50ZXJtZWRpYXRlIHdlZWtzIGdldCBzaGFkZWQgY29tcGxldGVseQorICAgICAgICAgICAgZy5maWxsUmVjdCgwLCAoaW50KShsYWJlbEhlaWdodCArIGNlbGxIZWlnaHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgZC53aWR0aCwgKGludCkoY2VsbEhlaWdodCAqIChudW1XZWVrcyAtIDIpKSk7CisKKyAgICAgICAgICAgIC8vIE5vdyBmaWd1cmUgb3V0IHRoZSBsYXN0IHdlZWsuCisgICAgICAgICAgICBkYXRlVG9DZWxsKGRheXNJbk1vbnRoLCBjZWxsUG9zKTsKKyAgICAgICAgICAgIHdpZHRoID0gKGludCkoKGNlbGxQb3MueCsxKSpjZWxsV2lkdGgpOyAgLy8gV2lkdGggb2Ygc2hhZGVkIGFyZWEKKworICAgICAgICAgICAgaWYgKGxlZnRUb1JpZ2h0KSB7CisgICAgICAgICAgICAgICAgZy5maWxsUmVjdCgwLCAoaW50KShsYWJlbEhlaWdodCArIChudW1XZWVrcy0xKSAqIGNlbGxIZWlnaHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIChpbnQpY2VsbEhlaWdodCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGcuZmlsbFJlY3QoZC53aWR0aCAtIHdpZHRoLCAoaW50KShsYWJlbEhlaWdodCArIChudW1XZWVrcy0xKSAqIGNlbGxIZWlnaHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIChpbnQpY2VsbEhlaWdodCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgfQorICAgICAgICAvLyBEcmF3IHRoZSBYL1kgZ3JpZCBsaW5lcworICAgICAgICBnLnNldENvbG9yKENvbG9yLmJsYWNrKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gbnVtV2Vla3M7IGkrKykgeworICAgICAgICAgICAgaW50IHkgPSAoaW50KShsYWJlbEhlaWdodCArIGkgKiBjZWxsSGVpZ2h0KTsKKyAgICAgICAgICAgIGcuZHJhd0xpbmUoMCwgeSwgZC53aWR0aCAtIDEsIHkpOworICAgICAgICB9CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IGRheXNJbldlZWs7IGkrKykgeworICAgICAgICAgICAgaW50IHggPSAoaW50KShpICogY2VsbFdpZHRoKTsKKyAgICAgICAgICAgIGcuZHJhd0xpbmUoeCwgbGFiZWxIZWlnaHQsIHgsIGQuaGVpZ2h0IC0gMSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBOb3cgbG9vcCB0aHJvdWdoIGFsbCBvZiB0aGUgZGF5cyBpbiB0aGUgbW9udGgsIGZpZ3VyZSBvdXQgd2hlcmUKKyAgICAgICAgLy8gdGhleSBnbyBpbiB0aGUgZ3JpZCwgYW5kIGRyYXcgdGhlIGRheSAjIGZvciBlYWNoIG9uZQorCisgICAgICAgIC8vIEZpZ3VyZSBvdXQgdGhlIGRhdGUgb2YgdGhlIGZpcnN0IGNlbGwgaW4gdGhlIGNhbGVuZGFyIGRpc3BsYXkKKyAgICAgICAgaW50IGNlbGwgPSAoMSArIGZpcnN0RGF5SW5Nb250aCAtIGZpcnN0RGF5T2ZXZWVrIC0gbWluRGF5KTsKKyAgICAgICAgaWYgKGZpcnN0RGF5SW5Nb250aCA8IGZpcnN0RGF5T2ZXZWVrKSB7CisgICAgICAgICAgICBjZWxsICs9IGRheXNJbldlZWs7CisgICAgICAgIH0KKworICAgICAgICBDYWxlbmRhciBjID0gKENhbGVuZGFyKWZDYWxlbmRhclswXS5jbG9uZSgpOworICAgICAgICBjLnNldFRpbWUoZlN0YXJ0T2ZNb250aCk7CisgICAgICAgIGMuYWRkKENhbGVuZGFyLkRBVEUsIC1jZWxsKTsKKworICAgICAgICBTdHJpbmdCdWZmZXIgYnVmZmVyID0gbmV3IFN0cmluZ0J1ZmZlcigpOworCisgICAgICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IG51bVdlZWtzOyByb3crKykgeworICAgICAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgZGF5c0luV2VlazsgY29sKyspIHsKKworICAgICAgICAgICAgICAgIGcuc2V0Rm9udChEZW1vVXRpbGl0eS5udW1iZXJGb250KTsKKyAgICAgICAgICAgICAgICBnLnNldENvbG9yKENvbG9yLmJsYWNrKTsKKyAgICAgICAgICAgICAgICBmbSA9IGcuZ2V0Rm9udE1ldHJpY3MoKTsKKworICAgICAgICAgICAgICAgIGludCBjZWxseDsKKyAgICAgICAgICAgICAgICBpZiAobGVmdFRvUmlnaHQpIHsKKyAgICAgICAgICAgICAgICAgICAgY2VsbHggPSAoaW50KSgoY29sKSAqIGNlbGxXaWR0aCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgY2VsbHggPSAoaW50KSgoZGF5c0luV2VlayAtIGNvbCAtIDEpICogY2VsbFdpZHRoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpbnQgY2VsbHkgPSAoaW50KShyb3cgKiBjZWxsSGVpZ2h0ICsgbGFiZWxIZWlnaHQpOworCisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgZkNhbGVuZGFyW2ldLnNldFRpbWUoYy5nZXRUaW1lKCkpOworCisgICAgICAgICAgICAgICAgICAgIGludCBkYXRlID0gZkNhbGVuZGFyW2ldLmdldChDYWxlbmRhci5EQVRFKTsKKyAgICAgICAgICAgICAgICAgICAgYnVmZmVyLnNldExlbmd0aCgwKTsKKyAgICAgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChkYXRlKTsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGRheU51bSA9IGJ1ZmZlci50b1N0cmluZygpOworCisgICAgICAgICAgICAgICAgICAgIGludCB4OworCisgICAgICAgICAgICAgICAgICAgIGlmIChsZWZ0VG9SaWdodCkgeworICAgICAgICAgICAgICAgICAgICAgICAgeCA9IGNlbGx4ICsgKGludCljZWxsV2lkdGggLSBYSU5TRVQgLSBmbS5zdHJpbmdXaWR0aChkYXlOdW0pOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgeCA9IGNlbGx4ICsgWElOU0VUOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGludCB5ID0gY2VsbHkgKyArIGZtLmdldEFzY2VudCgpICsgWUlOU0VUICsgaSAqIGZtLmdldEhlaWdodCgpOworCisgICAgICAgICAgICAgICAgICAgIGlmIChmQ29sb3JbaV0gIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZy5zZXRDb2xvcihmQ29sb3JbaV0pOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGcuZHJhd1N0cmluZyhkYXlOdW0sIHgsIHkpOworCisgICAgICAgICAgICAgICAgICAgIGlmIChkYXRlID09IDEgfHwgcm93ID09IDAgJiYgY29sID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGcuc2V0Rm9udChEZW1vVXRpbGl0eS5udW1iZXJGb250KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBtb250aCA9IGZTeW1ib2xzW2ldLmdldE1vbnRocygpWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmQ2FsZW5kYXJbaV0uZ2V0KENhbGVuZGFyLk1PTlRIKV07CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZWZ0VG9SaWdodCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggPSBjZWxseCArIFhJTlNFVDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9IGNlbGx4ICsgKGludCljZWxsV2lkdGggLSBYSU5TRVQgLSBmbS5zdHJpbmdXaWR0aChtb250aCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBnLmRyYXdTdHJpbmcobW9udGgsIHgsIHkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgYy5hZGQoQ2FsZW5kYXIuREFURSwgMSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBJbXBvcnRhbnQgc3RhdGUgdmFyaWFibGVzCisgICAgcHJpdmF0ZSBDYWxlbmRhcltdICAgICAgICAgIGZDYWxlbmRhciA9IG5ldyBDYWxlbmRhcls0XTsKKyAgICBwcml2YXRlIENvbG9yW10gICAgICAgICAgICAgZkNvbG9yID0gbmV3IENvbG9yWzRdOworCisgICAgcHJpdmF0ZSBMb2NhbGUgICAgICAgICAgICAgIGZEaXNwbGF5TG9jYWxlOworICAgIHByaXZhdGUgRGF0ZUZvcm1hdFN5bWJvbHNbXSBmU3ltYm9scyA9IG5ldyBEYXRlRm9ybWF0U3ltYm9sc1s0XTsKKworICAgIHByaXZhdGUgRGF0ZSAgICAgICAgICAgICAgICBmU3RhcnRPZk1vbnRoID0gbmV3IERhdGUoKTsgICAgIC8vIDAwOjAwOjAwIG9uIGZpcnN0IGRheSBvZiBtb250aAorCisgICAgLy8gQ2FjaGVkIGNhbGN1bGF0aW9ucyB0byBtYWtlIGRyYXdpbmcgZmFzdGVyLgorICAgIHByaXZhdGUgdHJhbnNpZW50IGludCAgICAgICBtaW5EYXk7ICAgICAgICAgICAvLyBNaW5pbXVtIGxlZ2FsIGRheSAjCisgICAgcHJpdmF0ZSB0cmFuc2llbnQgaW50ICAgICAgIGRheXNJbldlZWs7ICAgICAgIC8vICMgb2YgZGF5cyBpbiBhIHdlZWsKKyAgICBwcml2YXRlIHRyYW5zaWVudCBpbnQgICAgICAgZmlyc3REYXlPZldlZWs7ICAgLy8gRmlyc3QgZGF5IHRvIGRpc3BsYXkgaW4gd2VlaworICAgIHByaXZhdGUgdHJhbnNpZW50IGludCAgICAgICBudW1XZWVrczsgICAgICAgICAvLyAjIGZ1bGwgb3IgcGFydGlhbCB3ZWVrcyBpbiBtb250aAorICAgIHByaXZhdGUgdHJhbnNpZW50IGludCAgICAgICBkYXlzSW5Nb250aDsgICAgICAvLyAjIGRheXMgaW4gdGhpcyBtb250aAorICAgIHByaXZhdGUgdHJhbnNpZW50IGludCAgICAgICBmaXJzdERheUluTW9udGg7ICAvLyBEYXkgb2Ygd2VlayBvZiBmaXJzdCBkYXkgaW4gbW9udGgKKyAgICBwcml2YXRlIHRyYW5zaWVudCBib29sZWFuICAgbGVmdFRvUmlnaHQ7CisKKyAgICBwcml2YXRlIHRyYW5zaWVudCBib29sZWFuIGRpcnR5ID0gdHJ1ZTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby9jYWxlbmRhci9wYWNrYWdlLmh0bWwgYi9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vY2FsZW5kYXIvcGFja2FnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmQ2NTIwMDEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vY2FsZW5kYXIvcGFja2FnZS5odG1sCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8IS0tICBDb3B5cmlnaHQgKEMpIDIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kCisgIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKworICAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vY2FsZW5kYXIvcGFja2FnZS5odG1sLHYgJAorICAkUmV2aXNpb246IDEuMSAkCisgICREYXRlOiAyMDAwLzAzLzE1IDA2OjI4OjQ4ICQKKy0tPgorPC9oZWFkPgorPGJvZHkgYmdjb2xvcj0id2hpdGUiPgorQ2FsZW5kYXIgZGVtbyBhcHBsaWNhdGlvbnMgaW5jbHVkaW5nIGRhdGUvdGltZSBhcml0aG1ldGljLgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby9ob2xpZGF5L0hvbGlkYXlCb3JkZXJQYW5lbC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL2hvbGlkYXkvSG9saWRheUJvcmRlclBhbmVsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNjJiMTIxYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby9ob2xpZGF5L0hvbGlkYXlCb3JkZXJQYW5lbC5qYXZhCkBAIC0wLDAgKzEsNTUxIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ny0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vaG9saWRheS9Ib2xpZGF5Qm9yZGVyUGFuZWwuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNDo1NSAkIAorICogJFJldmlzaW9uOiAxLjUgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi5kZW1vLmhvbGlkYXk7CisKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYuZGVtby4qOworaW1wb3J0IGphdmEuYXd0Lio7CisKKy8qKgorICogVmFyaW91cyBncmFwaGljYWwgYm9yZGVycy4gVGhlIGJvcmRlciBpdHNlbGYgaXMgYSBQYW5lbCBzbyB0aGF0IGl0IGNhbgorICogY29udGFpbiBvdGhlciBDb21wb25lbnRzIChpLmUuIGl0IGJvcmRlcnMgc29tZXRoaW5nKS4gWW91IHVzZSB0aGUKKyAqIEhvbGlkYXlCb3JkZXJQYW5lbCBsaWtlIGFueSBvdGhlciBQYW5lbDogeW91IHNldCB0aGUgbGF5b3V0IHRoYXQgeW91IHByZWZlciBhbmQKKyAqIGFkZCBDb21wb25lbnRzIHRvIGl0LiBCZXdhcmUgdGhhdCBhIG51bGwgbGF5b3V0IGRvZXMgbm90IG9iZXkgdGhlIGluc2V0cworICogb2YgdGhlIHBhbmVsIHNvIGlmIHlvdSB1c2UgbnVsbCBsYXlvdXRzLCBhZGp1c3QgeW91ciBtZWFzdXJlbWVudHMgdG8KKyAqIGhhbmRsZSB0aGUgYm9yZGVyIGJ5IGNhbGxpbmcgaW5zZXRzKCkuCisgKgorICogQGF1dGhvciAgQW5keSBDbGFyaywgVGFsaWdlbnQgSW5jLgorICogQHZlcnNpb24gMS4wCisgKi8KK3B1YmxpYyBjbGFzcyBIb2xpZGF5Qm9yZGVyUGFuZWwgZXh0ZW5kcyBQYW5lbCB7CisgICAgLy8gQ29uc3RhbnRzCisKKyAgICAvKiogU29saWQgYm9yZGVyLiAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IFNPTElEID0gMDsKKyAgICAvKiogQSByYWlzZWQgYm9yZGVyLiAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IFJBSVNFRCA9IDE7CisgICAgLyoqIEEgbG93ZXJlZCBib3JkZXIuICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgTE9XRVJFRCA9IDI7CisgICAgLyoqIEFuIGV0Y2hlZCBpbiBib3JkZXIuICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgSU4gPSAzOworICAgIC8qKiBBbiBldGNoZWQgb3V0IGJvcmRlci4gKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBPVVQgPSA0OworCisgICAgLyoqIExlZnQgYWxpZ25tZW50LiAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IExFRlQgPSAwOworICAgIC8qKiBDZW50ZXIgYWxpZ25tZW50LiAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IENFTlRFUiA9IDE7CisgICAgLyoqIFJpZ2h0IGFsaWdubWVudC4gKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBSSUdIVCA9IDI7CisKKyAgICAvKiogRGVmYXVsdCBzdHlsZSAoSU4pLiAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IERFRkFVTFRfU1RZTEUgPSBJTjsKKyAgICAvKiogRGVmYXVsdCB0aGlja25lc3MgKDEwKS4gKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBERUZBVUxUX1RISUNLTkVTUyA9IDEwOworICAgIC8qKiBEZWZhdWx0IHRoaWNrbmVzcyBmb3Igc29saWQgYm9yZGVycyAoNCkuICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgREVGQVVMVF9TT0xJRF9USElDS05FU1MgPSA0OworICAgIC8qKiBEZWZhdWx0IHRoaWNrbmVzcyBmb3IgcmFpc2VkIGJvcmRlcnMgKDIpLiAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IERFRkFVTFRfUkFJU0VEX1RISUNLTkVTUyA9IDI7CisgICAgLyoqIERlZmF1bHQgdGhpY2tuZXNzIGZvciBsb3dlcmVkIGJvcmRlcnMgKDIpLiAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IERFRkFVTFRfTE9XRVJFRF9USElDS05FU1MgPSAyOworICAgIC8qKiBEZWZhdWx0IHRoaWNrbmVzcyBmb3IgZXRjaGVkLWluIGJvcmRlcnMgKDEwKS4gKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBERUZBVUxUX0lOX1RISUNLTkVTUyA9IDEwOworICAgIC8qKiBEZWZhdWx0IHRoaWNrbmVzcyBmb3IgZXRjaGVkLW91dCBib3JkZXJzICgxMCkuICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgREVGQVVMVF9PVVRfVEhJQ0tORVNTID0gMTA7CisgICAgLyoqIERlZmF1bHQgZ2FwIGJldHdlZW4gYm9yZGVyIGFuZCBjb250YWluZWQgY29tcG9uZW50ICg1KS4gKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBERUZBVUxUX0dBUCA9IDU7CisgICAgLyoqIERlZmF1bHQgY29sb3IgKGJsYWNrKS4gQXBwbGllcyB0byBTT0xJRCBhbmQgZXRjaGVkIGJvcmRlcnMuICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBDb2xvciBERUZBVUxUX0NPTE9SID0gQ29sb3IuYmxhY2s7CisKKyAgICAvKiogRGVmYXVsdCBmb250IChUaW1lc1JvbWFuLFBMQUlOLDE0KS4gT25seSBhcHBsaWVzIHRvIGV0Y2hlZCBib3JkZXJzLiAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgRm9udCBERUZBVUxUX0ZPTlQgPSBuZXcgRm9udCgiVGltZXNSb21hbiIsIEZvbnQuUExBSU4sIDE0KTsKKyAgICAvKiogRGVmYXVsdCBhbGlnbm1lbnQgKExFRlQpLiBPbmx5IGFwcGxpZXMgdG8gZXRjaGVkIGJvcmRlcnMuICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgREVGQVVMVF9BTElHTk1FTlQgPSBMRUZUOworCisgICAgLy8gRGF0YQorICAgIHByaXZhdGUgaW50IHN0eWxlOworICAgIHByaXZhdGUgaW50IHRoaWNrbmVzczsKKyAgICBwcml2YXRlIGludCBnYXA7CisgICAgcHJpdmF0ZSBDb2xvciBjb2xvcjsKKworICAgIHByaXZhdGUgRm9udCBmb250OworICAgIHByaXZhdGUgU3RyaW5nIHRleHQ7CisgICAgcHJpdmF0ZSBpbnQgYWxpZ25tZW50OworCisgICAgLyoqCisgICAgICogQ29uc3RydWN0b3IuIE1ha2VzIGRlZmF1bHQgYm9yZGVyLgorICAgICAqLworICAgIHB1YmxpYyBIb2xpZGF5Qm9yZGVyUGFuZWwoKSB7CisKKyAgICAgICAgLy8gaW5pdGlhbGl6ZSBkYXRhCisgICAgICAgIHN0eWxlICAgICAgID0gREVGQVVMVF9TVFlMRTsKKyAgICAgICAgdGhpY2tuZXNzICAgPSBERUZBVUxUX1RISUNLTkVTUzsKKyAgICAgICAgZ2FwICAgICAgICAgPSBERUZBVUxUX0dBUDsKKyAgICAgICAgY29sb3IgICAgICAgPSBERUZBVUxUX0NPTE9SOworCisgICAgICAgIHRleHQgICAgICAgID0gbnVsbDsKKyAgICAgICAgZm9udCAgICAgICAgPSBERUZBVUxUX0ZPTlQ7CisgICAgICAgIGFsaWdubWVudCAgID0gREVGQVVMVF9BTElHTk1FTlQ7CisKKyAgICAgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0b3IuIE1ha2VzIGFuIGV0Y2hlZCBJTiBib3JkZXIgd2l0aCBnaXZlbiB0ZXh0IGNhcHRpb24uCisgICAgICoKKyAgICAgKiBAcGFyYW0gdGV4dCAgVGV4dCBjYXB0aW9uCisgICAgICovCisgICAgcHVibGljIEhvbGlkYXlCb3JkZXJQYW5lbChTdHJpbmcgdGV4dCkgeworICAgICAgICB0aGlzKCk7CisKKyAgICAgICAgc3R5bGUgPSBJTjsKKyAgICAgICAgdGhpcy50ZXh0ID0gdGV4dDsKKyAgICAgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0b3IuIE1ha2VzIFNPTElEIGJvcmRlciB3aXRoIGNvbG9yIGFuZCB0aGlja25lc3MgZ2l2ZW4uCisgICAgICoKKyAgICAgKiBAcGFyYW0gY29sb3IgICAgIFRoZSBjb2xvciBmb3IgdGhlIGJvcmRlci4KKyAgICAgKiBAcGFyYW0gdGhpY2tuZXNzIFRoZSB0aGlja25lc3Mgb2YgdGhlIGJvcmRlci4KKyAgICAgKi8KKyAgICBwdWJsaWMgSG9saWRheUJvcmRlclBhbmVsKENvbG9yIGNvbG9yLCBpbnQgdGhpY2tuZXNzKSB7CisgICAgICAgIHRoaXMoKTsKKworICAgICAgICBzdHlsZSA9IFNPTElEOworICAgICAgICB0aGlzLmNvbG9yID0gY29sb3I7CisgICAgICAgIHRoaXMudGhpY2tuZXNzID0gdGhpY2tuZXNzOworICAgICAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3Rvci4gTWFrZXMgYSBib3JkZXIgb2YgdGhlIGdpdmVuIHN0eWxlIHdpdGggdGhlIGRlZmF1bHQKKyAgICAgKiB0aGlja25lc3MgZm9yIHRoYXQgc3R5bGUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gc3R5bGUgVGhlIHN0eWxlIGZvciB0aGlzIGJvcmRlci4KKyAgICAgKi8KKyAgICBwdWJsaWMgSG9saWRheUJvcmRlclBhbmVsKGludCBzdHlsZSkgeworICAgICAgICB0aGlzKCk7CisKKyAgICAgICAgLy8gc2V0IHRoaWNrbmVzcyBhcHByb3ByaWF0ZSB0byB0aGlzIHN0eWxlCisgICAgICAgIGludCB0aGlja25lc3M7CisgICAgICAgIHN3aXRjaCAoc3R5bGUpIHsKKyAgICAgICAgICAgIGNhc2UgU09MSUQ6IHRoaWNrbmVzcyA9IERFRkFVTFRfU09MSURfVEhJQ0tORVNTOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgUkFJU0VEOiB0aGlja25lc3MgPSBERUZBVUxUX1JBSVNFRF9USElDS05FU1M7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBMT1dFUkVEOiB0aGlja25lc3MgPSBERUZBVUxUX0xPV0VSRURfVEhJQ0tORVNTOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgSU46IHRoaWNrbmVzcyA9IERFRkFVTFRfSU5fVEhJQ0tORVNTOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgT1VUOiB0aGlja25lc3MgPSBERUZBVUxUX09VVF9USElDS05FU1M7IGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0aGlja25lc3MgPSBERUZBVUxUX1RISUNLTkVTUzsKKyAgICAgICAgICAgIH0KKworICAgICAgICB0aGlzLnN0eWxlID0gc3R5bGU7CisgICAgICAgIHRoaXMudGhpY2tuZXNzID0gdGhpY2tuZXNzOworICAgICAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3Rvci4gTWFrZXMgYm9yZGVyIHdpdGggZ2l2ZW4gc3R5bGUgYW5kIHRoaWNrbmVzcy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzdHlsZSAgICAgVGhlIHN0eWxlIGZvciB0aGlzIGJvcmRlci4KKyAgICAgKiBAcGFyYW0gdGhpY2tuZXNzIFRoZSB0aGlja25lc3MgZm9yIHRoaXMgYm9yZGVyLgorICAgICAqLworICAgIHB1YmxpYyBIb2xpZGF5Qm9yZGVyUGFuZWwoaW50IHN0eWxlLCBpbnQgdGhpY2tuZXNzKSB7CisgICAgICAgIHRoaXMoKTsKKworICAgICAgICB0aGlzLnN0eWxlID0gc3R5bGU7CisgICAgICAgIHRoaXMudGhpY2tuZXNzID0gdGhpY2tuZXNzOworICAgICAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBpbnNldHMgb2YgdGhpcyBwYW5lbC4uCisgICAgICovCisgICAgcHVibGljIEluc2V0cyBnZXRJbnNldHMoKSB7CisgICAgICAgIGludCBhZGp1c3RtZW50ID0gMDsKKworICAgICAgICAvLyBhZGp1c3QgZm9yIHRleHQgc3RyaW5nCisgICAgICAgIGlmIChzdHlsZSA9PSBJTiB8fCBzdHlsZSA9PSBPVVQpIHsKKyAgICAgICAgICAgIGlmICh0ZXh0ICE9IG51bGwgJiYgdGV4dC5sZW5ndGgoKSA+IDApIHsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAvLyBzZXQgZm9udCBhbmQgZ2V0IGluZm8KKyAgICAgICAgICAgICAgICAgICAgaW50IGhlaWdodCA9IGdldEdyYXBoaWNzKCkuZ2V0Rm9udE1ldHJpY3MoZm9udCkuZ2V0SGVpZ2h0KCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChoZWlnaHQgPiB0aGlja25lc3MpCisgICAgICAgICAgICAgICAgICAgICAgICBhZGp1c3RtZW50ID0gaGVpZ2h0IC0gdGhpY2tuZXNzOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIG5vdGhpbmc6IGp1c3QgaW4gY2FzZSB0aGVyZSBpcyBubyBncmFwaGljcyBjb250ZXh0CisgICAgICAgICAgICAgICAgICAgIC8vICAgYXQgdGhlIGJlZ2lubmluZy4KKyAgICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludCgiIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgLy8gcmV0dXJuIGFwcHJvcHJpYXRlIGluc2V0cworICAgICAgICBpbnQgZGlzdCA9IHRoaWNrbmVzcyArIGdhcDsKKyAgICAgICAgcmV0dXJuIG5ldyBJbnNldHMoZGlzdCArIGFkanVzdG1lbnQsIGRpc3QsIGRpc3QsIGRpc3QpOworICAgICAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBzdHlsZSBvZiB0aGUgYm9yZGVyCisgICAgICoKKyAgICAgKiBAcGFyYW0gc3R5bGUgVGhlIG5ldyBzdHlsZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgSG9saWRheUJvcmRlclBhbmVsIHNldFN0eWxlKGludCBzdHlsZSkgeworCisgICAgICAgIC8vIHNldCB0aGUgc3R5bGUgYW5kIHJlLWxheW91dCB0aGUgcGFuZWwKKyAgICAgICAgdGhpcy5zdHlsZSA9IHN0eWxlOworICAgICAgICBkb0xheW91dCgpOworICAgICAgICByZXBhaW50KCk7CisKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIHN0eWxlIG9mIHRoZSBib3JkZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldFN0eWxlKCkgeworCisgICAgICAgIHJldHVybiBzdHlsZTsKKyAgICAgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgdGhpY2tuZXNzIG9mIHRoZSBib3JkZXIuCisgICAgICoKKyAgICAgKiBAcGFyYW0gdGhpY2tuZXNzIFRoZSBuZXcgdGhpY2tuZXNzCisgICAgICovCisgICAgcHVibGljIEhvbGlkYXlCb3JkZXJQYW5lbCBzZXRUaGlja25lc3MoaW50IHRoaWNrbmVzcykgeworCisgICAgICAgIGlmICh0aGlja25lc3MgPiAwKSB7CisgICAgICAgICAgICB0aGlzLnRoaWNrbmVzcyA9IHRoaWNrbmVzczsKKyAgICAgICAgICAgIGRvTGF5b3V0KCk7CisgICAgICAgICAgICByZXBhaW50KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIHRoaWNrbmVzcyBvZiB0aGUgYm9yZGVyLgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0VGhpY2tuZXNzKCkgeworCisgICAgICAgIHJldHVybiB0aGlja25lc3M7CisgICAgICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIGdhcCBiZXR3ZWVuIHRoZSBib3JkZXIgYW5kIHRoZSBjb250YWluZWQgQ29tcG9uZW50LgorICAgICAqCisgICAgICogQHBhcmFtIGdhcCBUaGUgbmV3IGdhcCwgaW4gcGl4ZWxzLgorICAgICAqLworICAgIHB1YmxpYyBIb2xpZGF5Qm9yZGVyUGFuZWwgc2V0R2FwKGludCBnYXApIHsKKworICAgICAgICBpZiAoZ2FwID4gLTEpIHsKKyAgICAgICAgICAgIHRoaXMuZ2FwID0gZ2FwOworICAgICAgICAgICAgZG9MYXlvdXQoKTsKKyAgICAgICAgICAgIHJlcGFpbnQoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgfQorCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgZ2FwIGJldHdlZW4gdGhlIGJvcmRlciBhbmQgdGhlIGNvbnRhaW5lZCBDb21wb25lbnQuCisgICAgICovCisgICAgcHVibGljIGludCBnZXRHYXAoKSB7CisKKyAgICAgICAgcmV0dXJuIGdhcDsKKyAgICAgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgY3VycmVudCBjb2xvciBmb3IgU09MSUQgYm9yZGVycyBhbmQgdGhlIGNhcHRpb24gdGV4dAorICAgICAqIGNvbG9yIGZvciBldGNoZWQgYm9yZGVycy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBjb2xvciBUaGUgbmV3IGNvbG9yLgorICAgICAqLworICAgIHB1YmxpYyBIb2xpZGF5Qm9yZGVyUGFuZWwgc2V0Q29sb3IoQ29sb3IgY29sb3IpIHsKKworICAgICAgICB0aGlzLmNvbG9yID0gY29sb3I7CisgICAgICAgIGlmIChzdHlsZSA9PSBTT0xJRCB8fCBzdHlsZSA9PSBJTiB8fCBzdHlsZSA9PSBPVVQpCisgICAgICAgICAgICByZXBhaW50KCk7CisKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIGN1cnJlbnQgY29sb3IgZm9yIFNPTElEIGJvcmRlcnMgYW5kIHRoZSBjYXB0aW9uCisgICAgICogdGV4dCBjb2xvciBmb3IgZXRjaGVkIGJvcmRlcnMuCisgICAgICovCisgICAgcHVibGljIENvbG9yIGdldENvbG9yKCkgeworCisgICAgICAgIHJldHVybiBjb2xvcjsKKyAgICAgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgZm9udC4gT25seSBhcHBsaWVzIHRvIGV0Y2hlZCBib3JkZXJzLgorICAgICAqLworICAgIHB1YmxpYyBIb2xpZGF5Qm9yZGVyUGFuZWwgc2V0VGV4dEZvbnQoRm9udCBmb250KSB7CisKKyAgICAgICAgLy8gc2V0IGZvbnQKKyAgICAgICAgaWYgKGZvbnQgIT0gbnVsbCkgeworICAgICAgICAgICAgdGhpcy5mb250ID0gZm9udDsKKyAgICAgICAgICAgIGlmIChzdHlsZSA9PSBJTiB8fCBzdHlsZSA9PSBPVVQpIHsKKyAgICAgICAgICAgICAgICBkb0xheW91dCgpOworICAgICAgICAgICAgICAgIHJlcGFpbnQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIGZvbnQgb2YgdGhlIHRleHQuIE9ubHkgYXBwbGllcyB0byBldGNoZWQgYm9yZGVycy4KKyAgICAgKi8KKyAgICBwdWJsaWMgRm9udCBnZXRUZXh0Rm9udCgpIHsKKworICAgICAgICByZXR1cm4gZm9udDsKKyAgICAgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgdGV4dC4gT25seSBhcHBsaWVzIHRvIGV0Y2hlZCBib3JkZXJzLgorICAgICAqCisgICAgICogQHBhcmFtIHRleHQgIFRoZSBuZXcgdGV4dC4KKyAgICAgKi8KKyAgICBwdWJsaWMgSG9saWRheUJvcmRlclBhbmVsIHNldFRleHQoU3RyaW5nIHRleHQpIHsKKworICAgICAgICB0aGlzLnRleHQgPSB0ZXh0OworICAgICAgICBpZiAoc3R5bGUgPT0gSU4gfHwgc3R5bGUgPT0gT1VUKSB7CisgICAgICAgICAgICBkb0xheW91dCgpOworICAgICAgICAgICAgcmVwYWludCgpOworICAgICAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSB0ZXh0LiBPbmx5IGFwcGxpZXMgdG8gZXRjaGVkIGJvcmRlcnMuCisgICAgICovCisgICAgcHVibGljIFN0cmluZyBnZXRUZXh0KCkgeworCisgICAgICAgIHJldHVybiB0ZXh0OworICAgICAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSB0ZXh0IGFsaWdubWVudC4gT25seSBhcHBsaWVzIHRvIGV0Y2hlZCBib3JkZXJzLgorICAgICAqCisgICAgICogQHBhcmFtIGFsaWdubWVudCBUaGUgbmV3IGFsaWdubWVudC4KKyAgICAgKi8KKyAgICBwdWJsaWMgSG9saWRheUJvcmRlclBhbmVsIHNldEFsaWdubWVudChpbnQgYWxpZ25tZW50KSB7CisKKyAgICAgICAgdGhpcy5hbGlnbm1lbnQgPSBhbGlnbm1lbnQ7CisgICAgICAgIGlmIChzdHlsZSA9PSBJTiB8fCBzdHlsZSA9PSBPVVQpIHsKKyAgICAgICAgICAgIGRvTGF5b3V0KCk7CisgICAgICAgICAgICByZXBhaW50KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIHRleHQgYWxpZ25tZW50LgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0QWxpZ25tZW50KCkgeworCisgICAgICAgIHJldHVybiBhbGlnbm1lbnQ7CisgICAgICAgIH0KKworICAgIC8qKgorICAgICAqIFJlcGFpbnRzIHRoZSBib3JkZXIuCisgICAgICoKKyAgICAgKiBAcGFyYW0gZyBUaGUgZ3JhcGhpY3MgY29udGV4dC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBwYWludChHcmFwaGljcyBnKSB7CisKKyAgICAgICAgLy8gZ2V0IGN1cnJlbnQgZGltZW5zaW9ucworICAgICAgICBEaW1lbnNpb24gc2l6ZSA9IGdldFNpemUoKTsKKyAgICAgICAgaW50IHdpZHRoID0gc2l6ZS53aWR0aDsKKyAgICAgICAgaW50IGhlaWdodCA9IHNpemUuaGVpZ2h0OworCisgICAgICAgIC8vIHNldCBjb2xvcnMKKyAgICAgICAgQ29sb3IgbGlnaHQgPSBnZXRCYWNrZ3JvdW5kKCkuYnJpZ2h0ZXIoKS5icmlnaHRlcigpLmJyaWdodGVyKCk7CisgICAgICAgIENvbG9yIGRhcmsgPSBnZXRCYWNrZ3JvdW5kKCkuZGFya2VyKCkuZGFya2VyKCkuZGFya2VyKCk7CisKKyAgICAgICAgLy8gRHJhdyBib3JkZXIKKyAgICAgICAgc3dpdGNoIChzdHlsZSkgeworICAgICAgICAgICAgY2FzZSBSQUlTRUQ6ICAgIC8vIDNEIEJvcmRlciAoaW4gb3Igb3V0KQorICAgICAgICAgICAgY2FzZSBMT1dFUkVEOgorICAgICAgICAgICAgICAgIENvbG9yIHRvcGxlZnQgPSBudWxsOworICAgICAgICAgICAgICAgIENvbG9yIGJvdHRvbXJpZ2h0ID0gbnVsbDsKKworICAgICAgICAgICAgICAgIC8vIHNldCBjb2xvcnMKKyAgICAgICAgICAgICAgICBpZiAoc3R5bGUgPT0gUkFJU0VEKSB7CisgICAgICAgICAgICAgICAgICAgIHRvcGxlZnQgPSBsaWdodDsKKyAgICAgICAgICAgICAgICAgICAgYm90dG9tcmlnaHQgPSBkYXJrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHRvcGxlZnQgPSBkYXJrOworICAgICAgICAgICAgICAgICAgICBib3R0b21yaWdodCA9IGxpZ2h0OworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBkcmF3IGJvcmRlcgorICAgICAgICAgICAgICAgIGcuc2V0Q29sb3IodG9wbGVmdCk7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0aGlja25lc3M7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBnLmRyYXdMaW5lKGksIGksIHdpZHRoIC0gaSAtIDIsIGkpOworICAgICAgICAgICAgICAgICAgICBnLmRyYXdMaW5lKGksIGkgKyAxLCBpLCBoZWlnaHQgLSBpIC0gMSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBnLnNldENvbG9yKGJvdHRvbXJpZ2h0KTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRoaWNrbmVzczsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGcuZHJhd0xpbmUoaSArIDEsIGhlaWdodCAtIGkgLSAxLCB3aWR0aCAtIGkgLSAxLCBoZWlnaHQgLSBpIC0gMSk7CisgICAgICAgICAgICAgICAgICAgIGcuZHJhd0xpbmUod2lkdGggLSBpIC0gMSwgaSwgd2lkdGggLSBpIC0gMSwgaGVpZ2h0IC0gaSAtIDIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgSU46ICAgIC8vIEV0Y2hlZCBCb3JkZXIgKGluIG9yIG91dCkKKyAgICAgICAgICAgIGNhc2UgT1VUOgorICAgICAgICAgICAgICAgIGludCBhZGp1c3QxID0gMDsKKyAgICAgICAgICAgICAgICBpbnQgYWRqdXN0MiA9IDA7CisKKyAgICAgICAgICAgICAgICAvLyBzZXQgZm9udCBhbmQgZ2V0IGluZm8KKyAgICAgICAgICAgICAgICBGb250IG9sZGZvbnQgPSBnLmdldEZvbnQoKTsKKyAgICAgICAgICAgICAgICBnLnNldEZvbnQoZm9udCk7CisgICAgICAgICAgICAgICAgRm9udE1ldHJpY3MgZm0gPSBnLmdldEZvbnRNZXRyaWNzKCk7CisgICAgICAgICAgICAgICAgaW50IGFzY2VudCA9IGZtLmdldEFzY2VudCgpOworCisgICAgICAgICAgICAgICAgLy8gc2V0IGFkanVzdG1lbnQKKyAgICAgICAgICAgICAgICBpZiAoc3R5bGUgPT0gSU4pCisgICAgICAgICAgICAgICAgICAgIGFkanVzdDEgPSAxOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgYWRqdXN0MiA9IDE7CisKKyAgICAgICAgICAgICAgICAvLyBDYWxjdWxhdGUgYWRqdXN0bWVudCBmb3IgdGV4dAorICAgICAgICAgICAgICAgIGludCBhZGp1c3RtZW50ID0gMDsKKyAgICAgICAgICAgICAgICBpZiAodGV4dCAhPSBudWxsICYmIHRleHQubGVuZ3RoKCkgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChhc2NlbnQgPiB0aGlja25lc3MpCisgICAgICAgICAgICAgICAgICAgICAgICBhZGp1c3RtZW50ID0gKGFzY2VudCAtIHRoaWNrbmVzcykgLyAyOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBUaGUgYWRqdXN0bWVudCBpcyB0aGVyZSBzbyB0aGF0IHdlIGFsd2F5cyBkcmF3IHRoZQorICAgICAgICAgICAgICAgIC8vIGxpZ2h0IHJlY3RhbmdsZSBmaXJzdC4gT3RoZXJ3aXNlLCB5b3VyIGV5ZSBwaWNrcyB1cAorICAgICAgICAgICAgICAgIC8vIHRoZSBkaXNjcmVwYW5jeSB3aGVyZSB0aGUgbGlnaHQgcmVjdC4gcGFzc2VzIG92ZXIKKyAgICAgICAgICAgICAgICAvLyB0aGUgZGFya2VyIHJlY3QuCisgICAgICAgICAgICAgICAgaW50IHggPSB0aGlja25lc3MgLyAyOworICAgICAgICAgICAgICAgIGludCB5ID0gdGhpY2tuZXNzIC8gMiArIGFkanVzdG1lbnQ7CisgICAgICAgICAgICAgICAgaW50IHcgPSB3aWR0aCAtIHRoaWNrbmVzcyAtIDE7CisgICAgICAgICAgICAgICAgaW50IGggPSBoZWlnaHQgLSB0aGlja25lc3MgLSAxIC0gYWRqdXN0bWVudDsKKworICAgICAgICAgICAgICAgIC8vIGRyYXcgcmVjdGFuZ2xlcworICAgICAgICAgICAgICAgIGcuc2V0Q29sb3IobGlnaHQpOworICAgICAgICAgICAgICAgIGcuZHJhd1JlY3QoeCArIGFkanVzdDEsIHkgKyBhZGp1c3QxLCB3LCBoKTsKKyAgICAgICAgICAgICAgICBnLnNldENvbG9yKGRhcmspOworICAgICAgICAgICAgICAgIGcuZHJhd1JlY3QoeCArIGFkanVzdDIsIHkgKyBhZGp1c3QyLCB3LCBoKTsKKworICAgICAgICAgICAgICAgIC8vIGRyYXcgdGV4dCwgaWYgYXBwbGljYWJsZQorICAgICAgICAgICAgICAgIGlmICh0ZXh0ICE9IG51bGwgJiYgdGV4dC5sZW5ndGgoKSA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gY2FsY3VsYXRlIGRyYXdpbmcgYXJlYQorICAgICAgICAgICAgICAgICAgICBpbnQgZm9udGhlaWdodCA9IGZtLmdldEhlaWdodCgpOworICAgICAgICAgICAgICAgICAgICBpbnQgc3Ryd2lkdGggPSBmbS5zdHJpbmdXaWR0aCh0ZXh0KTsKKworICAgICAgICAgICAgICAgICAgICBpbnQgdGV4dHdpZHRoID0gd2lkdGggLSAyICogKHRoaWNrbmVzcyArIDUpOworICAgICAgICAgICAgICAgICAgICBpZiAoc3Ryd2lkdGggPiB0ZXh0d2lkdGgpCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJ3aWR0aCA9IHRleHR3aWR0aDsKKworICAgICAgICAgICAgICAgICAgICAvLyBjYWxjdWxhdGUgb2Zmc2V0IGZvciBhbGlnbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgaW50IG9mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChhbGlnbm1lbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQ0VOVEVSOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9ICh3aWR0aCAtIHN0cndpZHRoKSAvIDI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFJJR0hUOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IHdpZHRoIC0gc3Ryd2lkdGggLSB0aGlja25lc3MgLSA1OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBMRUZUOgorICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogLy8gYXNzdW1lIGxlZnQgYWxpZ25tZW50IGlmIGludmFsaWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSB0aGlja25lc3MgKyA1OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIC8vIGNsZWFyIGRyYXdpbmcgYXJlYSBhbmQgc2V0IGNsaXBwaW5nIHJlZ2lvbgorICAgICAgICAgICAgICAgICAgICBnLmNsZWFyUmVjdChvZmZzZXQgLSA1LCAwLCBzdHJ3aWR0aCAgKyAxMCwgZm9udGhlaWdodCk7CisgICAgICAgICAgICAgICAgICAgIGcuY2xpcFJlY3Qob2Zmc2V0LCAwLCBzdHJ3aWR0aCwgZm9udGhlaWdodCk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gZHJhdyB0ZXh0CisgICAgICAgICAgICAgICAgICAgIGcuc2V0Q29sb3IoY29sb3IpOworICAgICAgICAgICAgICAgICAgICBnLmRyYXdTdHJpbmcodGV4dCwgb2Zmc2V0LCBhc2NlbnQpOworCisgICAgICAgICAgICAgICAgICAgIC8vIHJlc3RvcmUgb2xkIGNsaXBwaW5nIGFyZWEKKyAgICAgICAgICAgICAgICAgICAgZy5jbGlwUmVjdCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZy5zZXRGb250KG9sZGZvbnQpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIFNPTElEOgorICAgICAgICAgICAgZGVmYXVsdDogLy8gYXNzdW1lIFNPTElECisgICAgICAgICAgICAgICAgZy5zZXRDb2xvcihjb2xvcik7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0aGlja25lc3M7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgZy5kcmF3UmVjdChpLCBpLCB3aWR0aCAtIDIgKiBpIC0gMSwgaGVpZ2h0IC0gMiAqIGkgLSAxKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBzZXR0aW5ncyBvZiB0aGlzIEhvbGlkYXlCb3JkZXJQYW5lbCBpbnN0YW5jZSBhcyBhIHN0cmluZy4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICBTdHJpbmdCdWZmZXIgc3RyID0gbmV3IFN0cmluZ0J1ZmZlcigiSG9saWRheUJvcmRlclBhbmVsWyIpOworCisgICAgICAgIC8vIHN0eWxlCisgICAgICAgIHN0ci5hcHBlbmQoInN0eWxlPSIpOworICAgICAgICBzd2l0Y2ggKHN0eWxlKSB7CisgICAgICAgICAgICBjYXNlIFNPTElEOiBzdHIuYXBwZW5kKCJTT0xJRCIpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgUkFJU0VEOiBzdHIuYXBwZW5kKCJSQUlTRUQiKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIExPV0VSRUQ6IHN0ci5hcHBlbmQoIkxPV0VSRUQiKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIElOOiBzdHIuYXBwZW5kKCJJTiIpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgT1VUOiBzdHIuYXBwZW5kKCJPVVQiKTsgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OiBzdHIuYXBwZW5kKCJ1bmtub3duIik7CisgICAgICAgICAgICB9CisgICAgICAgIHN0ci5hcHBlbmQoIiwiKTsKKworICAgICAgICAvLyB0aGlja25lc3MKKyAgICAgICAgc3RyLmFwcGVuZCgidGhpY2tuZXNzPSIpOworICAgICAgICBzdHIuYXBwZW5kKHRoaWNrbmVzcyk7CisgICAgICAgIHN0ci5hcHBlbmQoIiwiKTsKKworICAgICAgICAvLyBnYXAKKyAgICAgICAgc3RyLmFwcGVuZCgiZ2FwPSIpOworICAgICAgICBzdHIuYXBwZW5kKGdhcCk7CisgICAgICAgIHN0ci5hcHBlbmQoIiwiKTsKKworICAgICAgICAvLyBjb2xvcgorICAgICAgICBzdHIuYXBwZW5kKGNvbG9yKTsKKyAgICAgICAgc3RyLmFwcGVuZCgiLCIpOworCisgICAgICAgIC8vIGZvbnQKKyAgICAgICAgc3RyLmFwcGVuZChmb250KTsKKyAgICAgICAgc3RyLmFwcGVuZCgiLCIpOworCisgICAgICAgIC8vIHRleHQKKyAgICAgICAgc3RyLmFwcGVuZCgidGV4dD0iKTsKKyAgICAgICAgc3RyLmFwcGVuZCh0ZXh0KTsKKyAgICAgICAgc3RyLmFwcGVuZCgiLCIpOworCisgICAgICAgIC8vIGFsaWdubWVudAorICAgICAgICBzdHIuYXBwZW5kKCJhbGlnbm1lbnQ9Iik7CisgICAgICAgIHN3aXRjaCAoYWxpZ25tZW50KSB7CisgICAgICAgICAgICBjYXNlIExFRlQ6IHN0ci5hcHBlbmQoIkxFRlQiKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENFTlRFUjogc3RyLmFwcGVuZCgiQ0VOVEVSIik7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBSSUdIVDogc3RyLmFwcGVuZCgiUklHSFQiKTsgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OiBzdHIuYXBwZW5kKCJ1bmtub3duIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgc3RyLmFwcGVuZCgiXSIpOworCisgICAgICAgIHJldHVybiBzdHIudG9TdHJpbmcoKTsKKyAgICAgICAgfQorCisgICAgfQorCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vaG9saWRheS9Ib2xpZGF5Q2FsZW5kYXJEZW1vLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vaG9saWRheS9Ib2xpZGF5Q2FsZW5kYXJEZW1vLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNTdhZjMwNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby9ob2xpZGF5L0hvbGlkYXlDYWxlbmRhckRlbW8uamF2YQpAQCAtMCwwICsxLDcyMiBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL2hvbGlkYXkvSG9saWRheUNhbGVuZGFyRGVtby5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzAyLzE5IDA0OjEwOjIzICQgCisgKiAkUmV2aXNpb246IDEuOSAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworcGFja2FnZSBjb20uaWJtLmljdS5kZXYuZGVtby5ob2xpZGF5OworCitpbXBvcnQgY29tLmlibS5pY3UuZGV2LmRlbW8uKjsKK2ltcG9ydCBqYXZhLmFwcGxldC5BcHBsZXQ7CitpbXBvcnQgamF2YS5hd3QuKjsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC4qOworLy9pbXBvcnQgamF2YS51dGlsLio7CitpbXBvcnQgamF2YS5uZXQuKjsKK2ltcG9ydCBqYXZhLmlvLio7CisKKy8vaW1wb3J0IGphdmEudGV4dC5TaW1wbGVEYXRlRm9ybWF0OworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuU2ltcGxlRGF0ZUZvcm1hdDsKK2ltcG9ydCBqYXZhLnRleHQuRGF0ZUZvcm1hdFN5bWJvbHM7CisvL2ltcG9ydCBqYXZhLnV0aWwuU2ltcGxlVGltZVpvbmU7CitpbXBvcnQgY29tLmlibS5pY3UudXRpbC5TaW1wbGVUaW1lWm9uZTsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CisKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLio7CitpbXBvcnQgY29tLmlibS5pY3UuZGV2LmRlbW8uaW1wbC4qOworCisvKioKKyAqIENhbGVuZGFyRGVtbyBkZW1vbnN0cmF0ZXMgaG93IENhbGVuZGFyIHdvcmtzLgorICovCitwdWJsaWMgY2xhc3MgSG9saWRheUNhbGVuZGFyRGVtbyBleHRlbmRzIERlbW9BcHBsZXQgCit7CisgICAgLyoqCisgICAgICogVGhlIG1haW4gZnVuY3Rpb24gd2hpY2ggZGVmaW5lcyB0aGUgYmVoYXZpb3Igb2YgdGhlIENhbGVuZGFyRGVtbworICAgICAqIGFwcGxldCB3aGVuIGFuIGFwcGxldCBpcyBzdGFydGVkLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZyBhcmd2W10pIHsKKworICAgICAgICBuZXcgSG9saWRheUNhbGVuZGFyRGVtbygpLnNob3dEZW1vKCk7CisgICAgfQorCisgICAgLyogVGhpcyBjcmVhdGVzIGEgQ2FsZW5kYXJGcmFtZSBmb3IgdGhlIGRlbW8gYXBwbGV0LiAqLworICAgIHB1YmxpYyBGcmFtZSBjcmVhdGVEZW1vRnJhbWUoRGVtb0FwcGxldCBhcHBsZXQpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBDYWxlbmRhckZyYW1lKGFwcGxldCk7CisgICAgfQorCisJLyoqCisJKiBBIEZyYW1lIGlzIGEgdG9wLWxldmVsIHdpbmRvdyB3aXRoIGEgdGl0bGUuIFRoZSBkZWZhdWx0IGxheW91dCBmb3IgYSBmcmFtZQorCSogaXMgQm9yZGVyTGF5b3V0LiAgVGhlIENhbGVuZGFyRnJhbWUgY2xhc3MgZGVmaW5lcyB0aGUgd2luZG93IGxheW91dCBvZgorCSogQ2FsZW5kYXJEZW1vLgorCSovCisJcHJpdmF0ZSBzdGF0aWMgY2xhc3MgQ2FsZW5kYXJGcmFtZSBleHRlbmRzIEZyYW1lIGltcGxlbWVudHMgQWN0aW9uTGlzdGVuZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlbUxpc3RlbmVyCisJeworICAgIAlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgY3JlZGl0U3RyaW5nID0gIiI7CisKKyAgICAJcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVRyA9IGZhbHNlOworCisgICAgCXByaXZhdGUgTG9jYWxlIGN1ckxvY2FsZSA9IExvY2FsZS5VUzsKKworICAgIAlwcml2YXRlIERlbW9BcHBsZXQgYXBwbGV0OworCisgICAgCXByaXZhdGUgc3RhdGljIGZpbmFsIExvY2FsZVtdIGNhbGVuZGFycyA9IHsKKyAgICAgICAgCS8vbmV3IExvY2FsZSgiZGUiLCJBVCIpLAorICAgICAgICAJTG9jYWxlLkNBTkFEQSwKKyAgICAgICAgCUxvY2FsZS5DQU5BREFfRlJFTkNILAorICAgICAgICAJTG9jYWxlLkZSQU5DRSwKKyAgICAgICAgCUxvY2FsZS5HRVJNQU5ZLAorICAgICAgICAJbmV3IExvY2FsZSgiaXciLCJJTCIpLAorICAgICAgICAJbmV3IExvY2FsZSgiZWwiLCJHUiIpLAorICAgICAgICAJLy9uZXcgTG9jYWxlKCJlcyIsIk1YIiksCisgICAgICAgIAlMb2NhbGUuVUssCisgICAgICAgIAlMb2NhbGUuVVMsCisgICAgCX07CisgICAgCXByaXZhdGUgc3RhdGljIGZpbmFsIExvY2FsZVtdIGRpc3BsYXlzID0geworICAgICAgICAJTG9jYWxlLkNBTkFEQSwKKyAgICAgICAgCUxvY2FsZS5VSywKKyAgICAgICAgCUxvY2FsZS5VUywKKyAgICAgICAgCUxvY2FsZS5GUkFOQ0UsCisgICAgICAgIAlMb2NhbGUuQ0FOQURBX0ZSRU5DSCwKKyAgICAgICAgCS8vbmV3IExvY2FsZSgiZGUiLCJBVCIpLAorICAgICAgICAJTG9jYWxlLkdFUk1BTiwKKyAgICAgICAgCW5ldyBMb2NhbGUoImVsIiwiR1IiKSwKKyAgICAgICAgCS8vbmV3IExvY2FsZSgiaXciLCJJTCIpLAorICAgICAgICAJbmV3IExvY2FsZSgiZXMiLCJNWCIpLAorICAgIAl9OworCisgICAgCS8qKgorICAgIAkqIENvbnN0cnVjdHMgYSBuZXcgQ2FsZW5kYXJGcmFtZSB0aGF0IGlzIGluaXRpYWxseSBpbnZpc2libGUuCisgICAgCSovCisgICAgCXB1YmxpYyBDYWxlbmRhckZyYW1lKERlbW9BcHBsZXQgYXBwbGV0KQorICAgIAl7CisgICAgICAgIAlzdXBlcigiQ2FsZW5kYXIgRGVtbyIpOworICAgICAgICAJdGhpcy5hcHBsZXQgPSBhcHBsZXQ7CisgICAgICAgIAlpbml0KCk7CisgICAgICAgIAlzdGFydCgpOworICAgICAgICAJZW5hYmxlRXZlbnRzKFdpbmRvd0V2ZW50LldJTkRPV19DTE9TSU5HKTsKKyAgICAJfQorCisgICAgCS8qKgorICAgIAkqIEluaXRpYWxpemVzIHRoZSBhcHBsZXQuIFlvdSBuZXZlciBuZWVkIHRvIGNhbGwgdGhpcyBkaXJlY3RseSwgaXQKKyAgICAJKiBpcyBjYWxsZWQgYXV0b21hdGljYWxseSBieSB0aGUgc3lzdGVtIG9uY2UgdGhlIGFwcGxldCBpcyBjcmVhdGVkLgorICAgIAkqLworICAgIAlwdWJsaWMgdm9pZCBpbml0KCkKKyAgICAJeworICAgICAgICAJLy8gR2V0IEc3IGxvY2FsZXMgb25seSBmb3IgZGVtbyBwdXJwb3NlLiBUbyBnZXQgYWxsIHRoZSBsb2NhbGVzCisgICAgICAgIAkvLyBzdXBwb3J0ZWQsIHN3aXRjaCB0byBjYWxsaW5nIENhbGVuZGFyLmdldEF2YWlsYWJsZUxvY2FsZXMoKS4KKyAgICAgICAgCS8vIGNvbW1lbnRlZAorICAgICAgICAJbG9jYWxlcyA9IGRpc3BsYXlzOworCisgICAgICAgIAlidWlsZEdVSSgpOworICAgIAl9CisKKyAgICAJLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAJLy8gcGFja2FnZSBwcml2YXRlCisgICAgCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCXZvaWQgYWRkV2l0aEZvbnQoQ29udGFpbmVyIGNvbnRhaW5lciwgQ29tcG9uZW50IGZvbywgRm9udCBmb250KSB7CisgICAgICAgIAlpZiAoZm9udCAhPSBudWxsKQorICAgICAgICAgICAgCWZvby5zZXRGb250KGZvbnQpOworICAgICAgICAJY29udGFpbmVyLmFkZChmb28pOworICAgIAl9CisKKyAgICAJLyoqCisgICAgCSogQ2FsbGVkIHRvIHN0YXJ0IHRoZSBhcHBsZXQuIFlvdSBuZXZlciBuZWVkIHRvIGNhbGwgdGhpcyBtZXRob2QKKyAgICAJKiBkaXJlY3RseSwgaXQgaXMgY2FsbGVkIHdoZW4gdGhlIGFwcGxldCdzIGRvY3VtZW50IGlzIHZpc2l0ZWQuCisgICAgCSovCisgICAgCXB1YmxpYyB2b2lkIHN0YXJ0KCkKKyAgICAJeworICAgICAgICAJLy8gZG8gbm90aGluZworICAgIAl9CisKKyAgICAJcHJpdmF0ZSBDaG9pY2UgICAgICAgICAgbG9jYWxlTWVudTsKKyAgICAJcHJpdmF0ZSBDaG9pY2UgICAgICAgICAgZGlzcGxheU1lbnU7CisgICAgCXByaXZhdGUgTG9jYWxlW10gICAgICAgIGxvY2FsZXM7CisKKyAgICAJcHJpdmF0ZSBMYWJlbCAgICAgICAgICAgbW9udGhMYWJlbDsKKyAgICAJcHJpdmF0ZSBCdXR0b24gICAgICAgICAgcHJldlllYXI7CisgICAgCXByaXZhdGUgQnV0dG9uICAgICAgICAgIHByZXZNb250aDsKKyAgICAJcHJpdmF0ZSBCdXR0b24gICAgICAgICAgZ290b1RvZGF5OworICAgIAlwcml2YXRlIEJ1dHRvbiAgICAgICAgICBuZXh0TW9udGg7CisgICAgCXByaXZhdGUgQnV0dG9uICAgICAgICAgIG5leHRZZWFyOworICAgIAlwcml2YXRlIENhbGVuZGFyUGFuZWwgICBjYWxlbmRhclBhbmVsOworCisgICAgCXByaXZhdGUgc3RhdGljIGZpbmFsIExvY2FsZSBrRmlyc3RMb2NhbGUgPSBMb2NhbGUuVVM7CisKKyAgICAJcHJpdmF0ZSBzdGF0aWMgdm9pZCBhZGQoQ29udGFpbmVyIGNvbnRhaW5lciwgQ29tcG9uZW50IGNvbXBvbmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAJR3JpZEJhZ0xheW91dCBnLCBHcmlkQmFnQ29uc3RyYWludHMgYykKKyAgICAJeworICAgICAgICAJZy5zZXRDb25zdHJhaW50cyhjb21wb25lbnQsIGMpOworICAgICAgICAJY29udGFpbmVyLmFkZChjb21wb25lbnQpOworICAgIAl9CisKKyAgICAJcHVibGljIHZvaWQgYnVpbGRHVUkoKQorICAgIAl7CisgICAgICAgIAlzZXRCYWNrZ3JvdW5kKERlbW9VdGlsaXR5LmJnQ29sb3IpOworICAgICAgICAJc2V0TGF5b3V0KG5ldyBCb3JkZXJMYXlvdXQoMTAsMTApKTsKKworICAgICAgICAJLy8gTGFiZWwgZm9yIHRoZSBkZW1vJ3MgdGl0bGUKKyAgICAgICAgCUxhYmVsIHRpdGxlTGFiZWwgPSBuZXcgTGFiZWwoIkNhbGVuZGFyIERlbW8iLCBMYWJlbC5DRU5URVIpOworICAgICAgICAJdGl0bGVMYWJlbC5zZXRGb250KERlbW9VdGlsaXR5LnRpdGxlRm9udCk7CisKKyAgICAgICAgCS8vIExhYmVsIGZvciB0aGUgY3VycmVudCBtb250aCBuYW1lCisgICAgICAgIAltb250aExhYmVsID0gbmV3IExhYmVsKCIiLCBMYWJlbC5MRUZUKTsKKyAgICAgICAgCW1vbnRoTGFiZWwuc2V0Rm9udChuZXcgRm9udChEZW1vVXRpbGl0eS50aXRsZUZvbnQuZ2V0TmFtZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCURlbW9VdGlsaXR5LnRpdGxlRm9udC5nZXRTdHlsZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCShEZW1vVXRpbGl0eS50aXRsZUZvbnQuZ2V0U2l6ZSgpICogMykvMikpOworCisgICAgICAgIAkvLyBNYWtlIHRoZSBsb2NhbGUgcG9wdXAgbWVudXMKKyAgICAgICAgCWxvY2FsZU1lbnU9IG5ldyBDaG9pY2UoKTsKKyAgICAgICAgCWxvY2FsZU1lbnUuYWRkSXRlbUxpc3RlbmVyKHRoaXMpOworICAgICAgICAJaW50IHNlbGVjdE1lID0gMDsKKyAgICAgICAgCQorICAgICAgICAJZm9yIChpbnQgaSA9IDA7IGkgPCBjYWxlbmRhcnMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIAlpZiAoaSA+IDAgJiYKKyAgICAgICAgICAgICAgICAgICAgCWNhbGVuZGFyc1tpXS5nZXRDb3VudHJ5KCkuZXF1YWxzKGNhbGVuZGFyc1tpLTFdLmdldENvdW50cnkoKSkgfHwKKyAgICAgICAgICAgICAgICAJaSA8IGNhbGVuZGFycy5sZW5ndGggLSAxICYmCisgICAgICAgICAgICAgICAgICAgIAljYWxlbmRhcnNbaV0uZ2V0Q291bnRyeSgpLmVxdWFscyhjYWxlbmRhcnNbaSsxXS5nZXRDb3VudHJ5KCkpKQorICAgICAgICAgICAgCXsKKyAgICAgICAgICAgICAgICAJbG9jYWxlTWVudS5hZGRJdGVtKGNhbGVuZGFyc1tpXS5nZXREaXNwbGF5Q291bnRyeSgpICsgIiAoIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAljYWxlbmRhcnNbaV0uZ2V0RGlzcGxheUxhbmd1YWdlKCkgKyAiKSIpOworICAgICAgICAgICAgCX0gZWxzZSB7CisgICAgICAgICAgICAgICAgCWxvY2FsZU1lbnUuYWRkSXRlbSggY2FsZW5kYXJzW2ldLmdldERpc3BsYXlDb3VudHJ5KCkgKTsKKyAgICAgICAgICAgIAl9CisgICAgICAgICAgICAJCisgICAgICAgICAgICAJaWYgKGNhbGVuZGFyc1tpXS5lcXVhbHMoa0ZpcnN0TG9jYWxlKSkgeworICAgICAgICAgICAgICAgIAlzZWxlY3RNZSA9IGk7CisgICAgICAgICAgICAJfQorICAgICAgICAJfQorICAgICAgICAJCisgICAgICAgIAlsb2NhbGVNZW51LnNldEJhY2tncm91bmQoRGVtb1V0aWxpdHkuY2hvaWNlQ29sb3IpOworICAgICAgICAJbG9jYWxlTWVudS5zZWxlY3Qoc2VsZWN0TWUpOworCisgICAgICAgIAlkaXNwbGF5TWVudSA9IG5ldyBDaG9pY2UoKTsKKyAgICAgICAgCWRpc3BsYXlNZW51LmFkZEl0ZW1MaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgCQorICAgICAgICAJc2VsZWN0TWUgPSAwOworICAgICAgICAJZm9yIChpbnQgaSA9IDA7IGkgPCBsb2NhbGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAJaWYgKGkgPiAwICYmCisgICAgICAgICAgICAgICAgICAgIAlsb2NhbGVzW2ldLmdldExhbmd1YWdlKCkuZXF1YWxzKGxvY2FsZXNbaS0xXS5nZXRMYW5ndWFnZSgpKSB8fAorICAgICAgICAgICAgICAgIAlpIDwgbG9jYWxlcy5sZW5ndGggLSAxICYmCisgICAgICAgICAgICAgICAgICAgIAlsb2NhbGVzW2ldLmdldExhbmd1YWdlKCkuZXF1YWxzKGxvY2FsZXNbaSsxXS5nZXRMYW5ndWFnZSgpKSkKKyAgICAgICAgICAgIAl7CisgICAgICAgICAgICAgICAgCWRpc3BsYXlNZW51LmFkZEl0ZW0oIGxvY2FsZXNbaV0uZ2V0RGlzcGxheU5hbWUoKSApOworICAgICAgICAgICAgCX0gZWxzZSB7CisgICAgICAgICAgICAgICAgCWRpc3BsYXlNZW51LmFkZEl0ZW0oIGxvY2FsZXNbaV0uZ2V0RGlzcGxheUxhbmd1YWdlKCkpOworICAgICAgICAgICAgCX0KKyAgICAgICAgICAgIAkKKyAgICAgICAgICAgIAlpZiAobG9jYWxlc1tpXS5lcXVhbHMoa0ZpcnN0TG9jYWxlKSkgeworICAgICAgICAgICAgCSAgICBzZWxlY3RNZSA9IGk7CisgICAgICAgICAgICAJfQorICAgICAgICAJfQorICAgICAgICAJCisgICAgICAgIAlkaXNwbGF5TWVudS5zZXRCYWNrZ3JvdW5kKERlbW9VdGlsaXR5LmNob2ljZUNvbG9yKTsKKyAgICAgICAgCWRpc3BsYXlNZW51LnNlbGVjdChzZWxlY3RNZSk7CisKKyAgICAgICAgCS8vIE1ha2UgYWxsIHRoZSBuZXh0L3ByZXZpb3VzL3RvZGF5IGJ1dHRvbnMKKyAgICAgICAgCXByZXZZZWFyID0gbmV3IEJ1dHRvbigiPDwiKTsKKyAgICAgICAgCXByZXZZZWFyLmFkZEFjdGlvbkxpc3RlbmVyKHRoaXMpOworICAgICAgICAJcHJldk1vbnRoID0gbmV3IEJ1dHRvbigiPCIpOworICAgICAgICAJcHJldk1vbnRoLmFkZEFjdGlvbkxpc3RlbmVyKHRoaXMpOworICAgICAgICAJZ290b1RvZGF5ID0gbmV3IEJ1dHRvbigiVG9kYXkiKTsKKyAgICAgICAgCWdvdG9Ub2RheS5hZGRBY3Rpb25MaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgCW5leHRNb250aCA9IG5ldyBCdXR0b24oIj4iKTsKKyAgICAgICAgCW5leHRNb250aC5hZGRBY3Rpb25MaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgCW5leHRZZWFyID0gbmV3IEJ1dHRvbigiPj4iKTsKKyAgICAgICAgCW5leHRZZWFyLmFkZEFjdGlvbkxpc3RlbmVyKHRoaXMpOworCisgICAgICAgIAkvLyBUaGUgbW9udGggbmFtZSBhbmQgdGhlIGNvbnRyb2wgYnV0dG9ucyBhcmUgYnVuY2hlZCB0b2dldGhlcgorICAgICAgICAJUGFuZWwgbW9udGhQYW5lbCA9IG5ldyBQYW5lbCgpOworICAgICAgICAJeworICAgICAgICAgICAgCUdyaWRCYWdMYXlvdXQgZyA9IG5ldyBHcmlkQmFnTGF5b3V0KCk7CisgICAgICAgICAgICAJR3JpZEJhZ0NvbnN0cmFpbnRzIGMgPSBuZXcgR3JpZEJhZ0NvbnN0cmFpbnRzKCk7CisgICAgICAgICAgICAJbW9udGhQYW5lbC5zZXRMYXlvdXQoZyk7CisKKyAgICAgICAgICAgIAljLndlaWdodHggPSAxOworICAgICAgICAgICAgCWMud2VpZ2h0eSA9IDE7CisKKyAgICAgICAgICAgIAljLmdyaWR3aWR0aCA9IDE7CisgICAgICAgICAgICAJYy5maWxsID0gR3JpZEJhZ0NvbnN0cmFpbnRzLkhPUklaT05UQUw7CisgICAgICAgICAgICAJYy5ncmlkd2lkdGggPSBHcmlkQmFnQ29uc3RyYWludHMuUkVNQUlOREVSOworICAgICAgICAgICAgCWFkZChtb250aFBhbmVsLCBtb250aExhYmVsLCBnLCBjKTsKKworICAgICAgICAgICAgCWMuZ3JpZHdpZHRoID0gMTsKKyAgICAgICAgICAgIAlhZGQobW9udGhQYW5lbCwgcHJldlllYXIsIGcsIGMpOworICAgICAgICAgICAgCWFkZChtb250aFBhbmVsLCBwcmV2TW9udGgsIGcsIGMpOworICAgICAgICAgICAgCWFkZChtb250aFBhbmVsLCBnb3RvVG9kYXksIGcsIGMpOworICAgICAgICAgICAgCWFkZChtb250aFBhbmVsLCBuZXh0TW9udGgsIGcsIGMpOworICAgICAgICAgICAgCWMuZ3JpZHdpZHRoID0gR3JpZEJhZ0NvbnN0cmFpbnRzLlJFTUFJTkRFUjsKKyAgICAgICAgICAgIAlhZGQobW9udGhQYW5lbCwgbmV4dFllYXIsIGcsIGMpOworICAgICAgICAJfQorCisgICAgICAgIAkvLyBTdGljayB0aGUgbWVudSBhbmQgYnV0dG9ucyBpbiBhIGxpdHRsZSAiY29udHJvbCBwYW5lbCIKKyAgICAgICAgCVBhbmVsIG1lbnVQYW5lbCA9IG5ldyBQYW5lbCgpOworICAgICAgICAJeworICAgICAgICAgICAgCUdyaWRCYWdMYXlvdXQgZyA9IG5ldyBHcmlkQmFnTGF5b3V0KCk7CisgICAgICAgICAgICAJR3JpZEJhZ0NvbnN0cmFpbnRzIGMgPSBuZXcgR3JpZEJhZ0NvbnN0cmFpbnRzKCk7CisgICAgICAgICAgICAJbWVudVBhbmVsLnNldExheW91dChnKTsKKworICAgICAgICAgICAgCWMud2VpZ2h0eCA9IDE7CisgICAgICAgICAgICAJYy53ZWlnaHR5ID0gMTsKKworICAgICAgICAgICAgCWMuZmlsbCA9IEdyaWRCYWdDb25zdHJhaW50cy5IT1JJWk9OVEFMOworCisgICAgICAgICAgICAJYy5ncmlkd2lkdGggPSBHcmlkQmFnQ29uc3RyYWludHMuUkVMQVRJVkU7CisgICAgICAgICAgICAJTGFiZWwgbDEgPSBuZXcgTGFiZWwoIkhvbGlkYXlzIik7CisgICAgICAgICAgICAJbDEuc2V0Rm9udChEZW1vVXRpbGl0eS5sYWJlbEZvbnQpOworICAgICAgICAgICAgCWFkZChtZW51UGFuZWwsIGwxLCBnLCBjKTsKKworICAgICAgICAgICAgCWMuZ3JpZHdpZHRoID0gR3JpZEJhZ0NvbnN0cmFpbnRzLlJFTUFJTkRFUjsKKyAgICAgICAgICAgIAlhZGQobWVudVBhbmVsLCBsb2NhbGVNZW51LCBnLCBjKTsKKworICAgICAgICAgICAgCWMuZ3JpZHdpZHRoID0gR3JpZEJhZ0NvbnN0cmFpbnRzLlJFTEFUSVZFOworICAgICAgICAgICAgCUxhYmVsIGwyID0gbmV3IExhYmVsKCJEaXNwbGF5OiIpOworICAgICAgICAgICAgCWwyLnNldEZvbnQoRGVtb1V0aWxpdHkubGFiZWxGb250KTsKKyAgICAgICAgICAgIAlhZGQobWVudVBhbmVsLCBsMiwgZywgYyk7CisKKyAgICAgICAgICAgIAljLmdyaWR3aWR0aCA9IEdyaWRCYWdDb25zdHJhaW50cy5SRU1BSU5ERVI7CisgICAgICAgICAgICAJYWRkKG1lbnVQYW5lbCwgZGlzcGxheU1lbnUsIGcsIGMpOworICAgICAgICAJfQorCisgICAgICAgIAkvLyBUaGUgdGl0bGUsIGJ1dHRvbnMsIGV0Yy4gZ28gaW4gYSBwYW5lbCBhdCB0aGUgdG9wIG9mIHRoZSB3aW5kb3cKKyAgICAgICAgCVBhbmVsIHRvcFBhbmVsID0gbmV3IFBhbmVsKCk7CisgICAgICAgIAl7CisgICAgICAgICAgICAJdG9wUGFuZWwuc2V0TGF5b3V0KG5ldyBCb3JkZXJMYXlvdXQoKSk7CisKKyAgICAgICAgICAgIAkvL3RvcFBhbmVsLmFkZCgiTm9ydGgiLCB0aXRsZUxhYmVsKTsKKyAgICAgICAgICAgIAl0b3BQYW5lbC5hZGQoIkNlbnRlciIsIG1vbnRoUGFuZWwpOworICAgICAgICAgICAgCXRvcFBhbmVsLmFkZCgiRWFzdCIsIG1lbnVQYW5lbCk7CisgICAgICAgIAl9CisgICAgICAgIAlhZGQoIk5vcnRoIiwgdG9wUGFuZWwpOworCisgICAgICAgIAkvLyBUaGUgY29weXJpZ2h0IG5vdGljZSBnb2VzIGF0IHRoZSBib3R0b20gb2YgdGhlIHdpbmRvdworICAgICAgICAJTGFiZWwgY29weXJpZ2h0ID0gbmV3IExhYmVsKERlbW9VdGlsaXR5LmNvcHlyaWdodDEsIExhYmVsLkxFRlQpOworICAgICAgICAJY29weXJpZ2h0LnNldEZvbnQoRGVtb1V0aWxpdHkuY3JlZGl0Rm9udCk7CisgICAgICAgIAlhZGQoIlNvdXRoIiwgY29weXJpZ2h0KTsKKworICAgICAgICAJLy8gTm93IGNyZWF0ZSB0aGUgYmlnIGNhbGVuZGFyIHBhbmVsIGFuZCBzdGljayBpdCBpbiB0aGUgbWlkZGxlCisgICAgICAgIAljYWxlbmRhclBhbmVsID0gbmV3IENhbGVuZGFyUGFuZWwoIGtGaXJzdExvY2FsZSApOworICAgICAgICAJYWRkKCJDZW50ZXIiLCBjYWxlbmRhclBhbmVsKTsKKworICAgICAgICAJdXBkYXRlTW9udGhOYW1lKCk7CisgICAgCX0KKworICAgIAlwcml2YXRlIHZvaWQgdXBkYXRlTW9udGhOYW1lKCkKKyAgICAJeworICAgICAgICAJU2ltcGxlRGF0ZUZvcm1hdCBmID0gbmV3IFNpbXBsZURhdGVGb3JtYXQoIk1NTU0geXl5eXkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAljYWxlbmRhclBhbmVsLmdldERpc3BsYXlMb2NhbGUoKSk7CisgICAgICAgIAlmLnNldENhbGVuZGFyKGNhbGVuZGFyUGFuZWwuZ2V0Q2FsZW5kYXIoKSk7CisgICAgICAgIAlmLnNldFRpbWVab25lKG5ldyBTaW1wbGVUaW1lWm9uZSgwLCAiVVRDIikpOyAgICAgICAgLy8gSkRLIDEuMS4yIHdvcmthcm91bmQKKyAgICAgICAgCW1vbnRoTGFiZWwuc2V0VGV4dCggZi5mb3JtYXQoIGNhbGVuZGFyUGFuZWwuZmlyc3RPZk1vbnRoKCkgKSk7CisgICAgCX0KKyAgICAJCisgICAgCS8qKgorICAgIAkqIEhhbmRsZXMgdGhlIGV2ZW50LiBSZXR1cm5zIHRydWUgaWYgdGhlIGV2ZW50IGlzIGhhbmRsZWQgYW5kIHNob3VsZCBub3QKKyAgICAJKiBiZSBwYXNzZWQgdG8gdGhlIHBhcmVudCBvZiB0aGlzIGNvbXBvbmVudC4gVGhlIGRlZmF1bHQgZXZlbnQgaGFuZGxlcgorICAgIAkqIGNhbGxzIHNvbWUgaGVscGVyIG1ldGhvZHMgdG8gbWFrZSBsaWZlIGVhc2llciBvbiB0aGUgcHJvZ3JhbW1lci4KKyAgICAJKi8KKyAgICAJcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEFjdGlvbkV2ZW50IGUpCisgICAgCXsKKyAgICAJICAgIE9iamVjdCBvYmogPSBlLmdldFNvdXJjZSgpOworICAgIAkgICAgCisgICAgCSAgICAvLyAqKiogQnV0dG9uIGV2ZW50cyBhcmUgaGFuZGxlZCBoZXJlLgorICAgICAgICAJaWYgKG9iaiBpbnN0YW5jZW9mIEJ1dHRvbikgeworICAgICAgICAgICAgCWlmIChvYmogPT0gbmV4dE1vbnRoKSB7CisgICAgICAgICAgICAgICAgCWNhbGVuZGFyUGFuZWwuYWRkKENhbGVuZGFyLk1PTlRILCArMSk7CisgICAgICAgICAgICAJfQorICAgICAgICAgICAgCWVsc2UKKyAgICAgICAgICAgIAlpZiAob2JqID09IHByZXZNb250aCkgeworICAgICAgICAgICAgICAgIAljYWxlbmRhclBhbmVsLmFkZChDYWxlbmRhci5NT05USCwgLTEpOworICAgICAgICAgICAgCX0KKyAgICAgICAgICAgIAllbHNlCisgICAgICAgICAgICAJaWYgKG9iaiA9PSBwcmV2WWVhcikgeworICAgICAgICAgICAgICAgIAljYWxlbmRhclBhbmVsLmFkZChDYWxlbmRhci5ZRUFSLCAtMSk7CisgICAgICAgICAgICAJfQorICAgICAgICAgICAgCWVsc2UKKyAgICAgICAgICAgIAlpZiAob2JqID09IG5leHRZZWFyKSB7CisgICAgICAgICAgICAgICAgCWNhbGVuZGFyUGFuZWwuYWRkKENhbGVuZGFyLllFQVIsICsxKTsKKyAgICAgICAgICAgIAl9CisgICAgICAgICAgICAJZWxzZQorICAgICAgICAgICAgCWlmIChvYmogPT0gZ290b1RvZGF5KSB7CisgICAgICAgICAgICAgICAgCWNhbGVuZGFyUGFuZWwuc2V0KCBuZXcgRGF0ZSgpICk7CisgICAgICAgICAgICAJfQorICAgICAgICAgICAgCXVwZGF0ZU1vbnRoTmFtZSgpOworICAgICAgICAJfQorICAgIAl9CisgICAgCQorICAgIAlwdWJsaWMgdm9pZCBpdGVtU3RhdGVDaGFuZ2VkKEl0ZW1FdmVudCBlKQorICAgICAgICB7CisgICAgICAgICAgICBPYmplY3Qgb2JqID0gZS5nZXRTb3VyY2UoKTsKKyAgICAgICAgICAgIGlmIChvYmogPT0gbG9jYWxlTWVudSkgeworICAgICAgICAgICAgCWNhbGVuZGFyUGFuZWwuc2V0Q2FsZW5kYXJMb2NhbGUoY2FsZW5kYXJzW2xvY2FsZU1lbnUuZ2V0U2VsZWN0ZWRJbmRleCgpXSk7CisgICAgICAgICAgICAJdXBkYXRlTW9udGhOYW1lKCk7CisgICAgICAgIAl9CisgICAgICAgIAllbHNlIAorICAgICAgICAJICAgIGlmIChvYmogPT0gZGlzcGxheU1lbnUpIHsKKyAgICAgICAgICAgIAkgICAgY2FsZW5kYXJQYW5lbC5zZXREaXNwbGF5TG9jYWxlKGxvY2FsZXNbZGlzcGxheU1lbnUuZ2V0U2VsZWN0ZWRJbmRleCgpXSk7CisgICAgICAgICAgICAJICAgIHVwZGF0ZU1vbnRoTmFtZSgpOworICAgICAgICAgICAgCX0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLyoqCisgICAgCSogUHJpbnQgb3V0IHRoZSBlcnJvciBtZXNzYWdlIHdoaWxlIGRlYnVnZ2luZyB0aGlzIHByb2dyYW0uCisgICAgCSovCisgICAgCXB1YmxpYyB2b2lkIGVycm9yVGV4dChTdHJpbmcgcykKKyAgICAJeworICAgICAgICAJaWYgKERFQlVHKQorICAgICAgICAJeworICAgICAgICAgICAgCVN5c3RlbS5vdXQucHJpbnRsbihzKTsKKyAgICAgICAgCX0KKyAgICAJfQorICAgIAkKKyAgICAJcHJvdGVjdGVkIHZvaWQgcHJvY2Vzc1dpbmRvd0V2ZW50KFdpbmRvd0V2ZW50IGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiZXZlbnQgIiArIGUpOworICAgICAgICAgICAgaWYgKGUuZ2V0SUQoKSA9PSBXaW5kb3dFdmVudC5XSU5ET1dfQ0xPU0lORykgeworICAgICAgICAgICAgCXRoaXMuaGlkZSgpOworICAgICAgICAgICAgCXRoaXMuZGlzcG9zZSgpOworCisgICAgICAgICAgICAJaWYgKGFwcGxldCAhPSBudWxsKSB7CisgICAgICAgICAgICAJICAgIGFwcGxldC5kZW1vQ2xvc2VkKCk7CisgICAgICAgICAgICAJfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmV4aXQoMCk7CisgICAgICAgICAgICAJfQorICAgICAgICAJfQorICAgICAgICB9CisJfQorCisKKwlwcml2YXRlIHN0YXRpYyBjbGFzcyBDYWxlbmRhclBhbmVsIGV4dGVuZHMgQ2FudmFzIHsKKworICAgIAlwdWJsaWMgQ2FsZW5kYXJQYW5lbCggTG9jYWxlIGxvY2FsZSApIHsKKyAgICAgICAgCXNldChsb2NhbGUsIGxvY2FsZSwgbmV3IERhdGUoKSk7CisgICAgCX0KKworICAgIAlwdWJsaWMgdm9pZCBzZXRDYWxlbmRhckxvY2FsZShMb2NhbGUgbG9jYWxlKSB7CisgICAgICAgIAlzZXQobG9jYWxlLCBmRGlzcGxheUxvY2FsZSwgZkNhbGVuZGFyLmdldFRpbWUoKSk7CisgICAgCX0KKworICAgIAlwdWJsaWMgdm9pZCBzZXREaXNwbGF5TG9jYWxlKExvY2FsZSBsb2NhbGUpIHsKKyAgICAgICAgCXNldChmQ2FsZW5kYXJMb2NhbGUsIGxvY2FsZSwgZkNhbGVuZGFyLmdldFRpbWUoKSk7CisgICAgCX0KKworICAgIAlwdWJsaWMgdm9pZCBzZXQoRGF0ZSBkYXRlKSB7CisgICAgICAgIAlzZXQoZkNhbGVuZGFyTG9jYWxlLCBmRGlzcGxheUxvY2FsZSwgZGF0ZSk7CisgICAgCX0KKworICAgIAlwdWJsaWMgdm9pZCBzZXQoTG9jYWxlIGxvYywgTG9jYWxlIGRpc3BsYXksIERhdGUgZGF0ZSkKKyAgICAJeworICAgICAgICAJaWYgKGZDYWxlbmRhckxvY2FsZSA9PSBudWxsIHx8ICFsb2MuZXF1YWxzKGZDYWxlbmRhckxvY2FsZSkpIHsKKyAgICAgICAgICAgIAlmQ2FsZW5kYXJMb2NhbGUgPSBsb2M7CisgICAgICAgICAgICAJZkNhbGVuZGFyID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoZkNhbGVuZGFyTG9jYWxlKTsKKyAgICAgICAgICAgIAlmQWxsSG9saWRheXMgPSBIb2xpZGF5LmdldEhvbGlkYXlzKGZDYWxlbmRhckxvY2FsZSk7CisgICAgICAgIAl9CisgICAgICAgIAlpZiAoZkRpc3BsYXlMb2NhbGUgPT0gbnVsbCB8fCAhZGlzcGxheS5lcXVhbHMoZkRpc3BsYXlMb2NhbGUpKSB7CisgICAgICAgICAgICAJZkRpc3BsYXlMb2NhbGUgPSBkaXNwbGF5OworICAgICAgICAgICAgCWZTeW1ib2xzID0gbmV3IERhdGVGb3JtYXRTeW1ib2xzKGZEaXNwbGF5TG9jYWxlKTsKKyAgICAgICAgCX0KKworICAgICAgICAJZlN0YXJ0T2ZNb250aCA9IGRhdGU7CisKKyAgICAgICAgCWRpcnR5ID0gdHJ1ZTsKKyAgICAgICAgCXJlcGFpbnQoKTsKKyAgICAJfQorCisgICAgCXB1YmxpYyB2b2lkIGFkZChpbnQgZmllbGQsIGludCBkZWx0YSkKKyAgICAJeworICAgICAgICAJc3luY2hyb25pemVkKGZDYWxlbmRhcikgeworICAgICAgICAgICAgCWZDYWxlbmRhci5zZXRUaW1lKGZTdGFydE9mTW9udGgpOworICAgICAgICAgICAgCWZDYWxlbmRhci5hZGQoZmllbGQsIGRlbHRhKTsKKyAgICAgICAgICAgIAlmU3RhcnRPZk1vbnRoID0gZkNhbGVuZGFyLmdldFRpbWUoKTsKKyAgICAgICAgCX0KKyAgICAgICAgCWRpcnR5ID0gdHJ1ZTsKKyAgICAgICAgCXJlcGFpbnQoKTsKKyAgICAJfQorCisgICAgCXB1YmxpYyBjb20uaWJtLmljdS51dGlsLkNhbGVuZGFyIGdldENhbGVuZGFyKCkgeworICAgICAgICAJcmV0dXJuIGZDYWxlbmRhcjsKKyAgICAJfQorCisgICAgCXB1YmxpYyBMb2NhbGUgZ2V0Q2FsZW5kYXJMb2NhbGUoKSB7CisgICAgICAgIAlyZXR1cm4gZkNhbGVuZGFyTG9jYWxlOworICAgIAl9CisKKyAgICAJcHVibGljIExvY2FsZSBnZXREaXNwbGF5TG9jYWxlKCkgeworICAgICAgICAJcmV0dXJuIGZEaXNwbGF5TG9jYWxlOworICAgIAl9CisKKworICAgIAlwdWJsaWMgRGF0ZSBmaXJzdE9mTW9udGgoKSB7CisgICAgICAgIAlyZXR1cm4gZlN0YXJ0T2ZNb250aDsKKyAgICAJfQorCisgICAgCXByaXZhdGUgRGF0ZSBzdGFydE9mTW9udGgoRGF0ZSBkYXRlSW5Nb250aCkKKyAgICAJeworICAgICAgICAJc3luY2hyb25pemVkKGZDYWxlbmRhcikgeworICAgICAgICAgICAgCWZDYWxlbmRhci5zZXRUaW1lKGRhdGVJbk1vbnRoKTsgICAgICAgICAgICAgLy8gVE9ETzogc3luY2hyb25pemF0aW9uCisKKyAgICAgICAgICAgIAlpbnQgZXJhID0gZkNhbGVuZGFyLmdldChDYWxlbmRhci5FUkEpOworICAgICAgICAgICAgCWludCB5ZWFyID0gZkNhbGVuZGFyLmdldChDYWxlbmRhci5ZRUFSKTsKKyAgICAgICAgICAgIAlpbnQgbW9udGggPSBmQ2FsZW5kYXIuZ2V0KENhbGVuZGFyLk1PTlRIKTsKKworICAgICAgICAgICAgCWZDYWxlbmRhci5jbGVhcigpOworICAgICAgICAgICAgCWZDYWxlbmRhci5zZXQoQ2FsZW5kYXIuRVJBLCBlcmEpOworICAgICAgICAgICAgCWZDYWxlbmRhci5zZXQoQ2FsZW5kYXIuWUVBUiwgeWVhcik7CisgICAgICAgICAgICAJZkNhbGVuZGFyLnNldChDYWxlbmRhci5NT05USCwgbW9udGgpOworICAgICAgICAgICAgCWZDYWxlbmRhci5zZXQoQ2FsZW5kYXIuREFURSwgMSk7CisKKyAgICAgICAgICAgIAlyZXR1cm4gZkNhbGVuZGFyLmdldFRpbWUoKTsKKyAgICAgICAgCX0KKyAgICAJfQorCisgICAgCXByaXZhdGUgdm9pZCBjYWxjdWxhdGUoKQorICAgIAl7CisgICAgICAgIAkvLworICAgICAgICAJLy8gQXMgYSB3b3JrYXJvdW5kIGZvciBKREsgMS4xLjMgYW5kIGJlbG93LCB3aGVyZSBDYWxlbmRhcnMgYW5kIHRpbWUKKyAgICAgICAgCS8vIHpvbmVzIGFyZSBhIGJpdCBnb29meSwgYWx3YXlzIHNldCBteSBjYWxlbmRhcidzIHRpbWUgem9uZSB0byBVVEMuCisgICAgICAgIAkvLyBZb3Ugd291bGQgdGhpbmsgSSB3b3VsZCB3YW50IHRvIGRvIHRoaXMgaW4gdGhlICJzZXQiIGZ1bmN0aW9uIGFib3ZlLAorICAgICAgICAJLy8gYnV0IGlmIEkgZG8gdGhhdCwgdGhlIHByb2dyYW0gaGFuZ3Mgd2hlbiB0aGlzIGNsYXNzIGlzIGxvYWRlZCwKKyAgICAgICAgCS8vIHBlcmhhcHMgZHVlIHRvIHNvbWUgc29ydCBvZiBzdGF0aWMgaW5pdGlhbGl6YXRpb24gb3JkZXJpbmcgcHJvYmxlbS4KKyAgICAgICAgCS8vIFNvIEkgZG8gaXQgaGVyZSBpbnN0ZWFkLgorICAgICAgICAJLy8KKyAgICAgICAgCWZDYWxlbmRhci5zZXRUaW1lWm9uZShuZXcgU2ltcGxlVGltZVpvbmUoMCwgIlVUQyIpKTsKKworICAgICAgICAJQ2FsZW5kYXIgYyA9IChDYWxlbmRhcilmQ2FsZW5kYXIuY2xvbmUoKTsgLy8gVGVtcG9yYXJ5IGNvcHkKKworICAgICAgICAJZlN0YXJ0T2ZNb250aCA9IHN0YXJ0T2ZNb250aChmU3RhcnRPZk1vbnRoKTsKKworICAgICAgICAJLy8gU3Rhc2ggYXdheSBhIGZldyB1c2VmdWwgY29uc3RhbnRzIGZvciB0aGlzIGNhbGVuZGFyIGFuZCBkaXNwbGF5CisgICAgICAgIAltaW5EYXkgPSBjLmdldE1pbmltdW0oQ2FsZW5kYXIuREFZX09GX1dFRUspOworICAgICAgICAJZGF5c0luV2VlayA9IGMuZ2V0TWF4aW11bShDYWxlbmRhci5EQVlfT0ZfV0VFSykgLSBtaW5EYXkgKyAxOworCisgICAgICAgIAlmaXJzdERheU9mV2VlayA9IENhbGVuZGFyLmdldEluc3RhbmNlKGZEaXNwbGF5TG9jYWxlKS5nZXRGaXJzdERheU9mV2VlaygpOworCisgICAgICAgIAkvLyBTdGFzaCBhd2F5IGEgRGF0ZSBmb3IgdGhlIHN0YXJ0IG9mIHRoaXMgbW9udGgKKworICAgICAgICAJLy8gRmluZCB0aGUgZGF5IG9mIHdlZWsgb2YgdGhlIGZpcnN0IGRheSBpbiB0aGlzIG1vbnRoCisgICAgICAgIAljLnNldFRpbWUoZlN0YXJ0T2ZNb250aCk7CisgICAgICAgIAlmaXJzdERheUluTW9udGggPSBjLmdldChDYWxlbmRhci5EQVlfT0ZfV0VFSyk7CisKKyAgICAgICAgCS8vIE5vdyBmaW5kIHRoZSAjIG9mIGRheXMgaW4gdGhlIG1vbnRoCisgICAgICAgIAljLnJvbGwoQ2FsZW5kYXIuREFURSwgZmFsc2UpOworICAgICAgICAJZGF5c0luTW9udGggPSBjLmdldChDYWxlbmRhci5EQVRFKTsKKworICAgICAgICAJLy8gRmluYWxseSwgZmluZCB0aGUgZW5kIG9mIHRoZSBtb250aCwgaS5lLiB0aGUgc3RhcnQgb2YgdGhlIG5leHQgb25lCisgICAgICAgIAljLnJvbGwoQ2FsZW5kYXIuREFURSwgdHJ1ZSk7CisgICAgICAgIAljLmFkZChDYWxlbmRhci5NT05USCwgMSk7CisgICAgICAgIAljLmdldFRpbWUoKTsgICAgICAgIC8vIEpESyAxLjEuMiBidWcgd29ya2Fyb3VuZAorICAgICAgICAJYy5hZGQoQ2FsZW5kYXIuU0VDT05ELCAtMSk7CisgICAgICAgIAlEYXRlIGVuZE9mTW9udGggPSBjLmdldFRpbWUoKTsKKworICAgICAgICAJLy8KKyAgICAgICAgCS8vIENhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIGZ1bGwgb3IgcGFydGlhbCB3ZWVrcyBpbiB0aGlzIG1vbnRoLgorICAgICAgICAJLy8gVG8gZG8gdGhpcyBJIGNhbiBqdXN0IHJldXNlIHRoZSBjb2RlIHRoYXQgY2FsY3VsYXRlcyB3aGljaAorICAgICAgICAJLy8gY2FsZW5kYXIgY2VsbCBjb250YWlucyBhIGdpdmVuIGRhdGUuCisgICAgICAgIAkvLworICAgICAgICAJbnVtV2Vla3MgPSBkYXRlVG9DZWxsKGRheXNJbk1vbnRoKS55IC0gZGF0ZVRvQ2VsbCgxKS55ICsgMTsKKworICAgICAgICAJLy8gUmVtZW1iZXIgd2hpY2ggaG9saWRheXMgZmFsbCBvbiB3aGljaCBkYXlzIGluIHRoaXMgbW9udGgsCisgICAgICAgIAkvLyB0byBzYXZlIHRoZSB0cm91YmxlIG9mIGhhdmluZyB0byBkbyBpdCBsYXRlcgorICAgICAgICAJZkhvbGlkYXlzLnNldFNpemUoMCk7CisKKyAgICAgICAgCWZvciAoaW50IGggPSAwOyBoIDwgZkFsbEhvbGlkYXlzLmxlbmd0aDsgaCsrKQorICAgICAgICAJeworICAgICAgICAgICAgCURhdGUgZCA9IGZTdGFydE9mTW9udGg7CisgICAgICAgICAgICAJd2hpbGUgKCAoZCA9IGZBbGxIb2xpZGF5c1toXS5maXJzdEJldHdlZW4oZCwgZW5kT2ZNb250aCkgKSAhPSBudWxsKQorICAgICAgICAgICAgCXsKKyAgICAgICAgICAgICAgICAJYy5zZXRUaW1lKGQpOworICAgICAgICAgICAgICAgIAlmSG9saWRheXMuYWRkRWxlbWVudCggbmV3IEhvbGlkYXlJbmZvKGMuZ2V0KENhbGVuZGFyLkRBVEUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAlmQWxsSG9saWRheXNbaF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCWZBbGxIb2xpZGF5c1toXS5nZXREaXNwbGF5TmFtZShmRGlzcGxheUxvY2FsZSkgKSk7CisKKyAgICAgICAgICAgICAgICAJZC5zZXRUaW1lKCBkLmdldFRpbWUoKSArIDEwMDAgKTsgICAgLy8gImQrKyIKKyAgICAgICAgICAgIAl9CisgICAgICAgIAl9CisgICAgICAgIAlkaXJ0eSA9IGZhbHNlOworICAgIAl9CisKKyAgICAJc3RhdGljIGZpbmFsIGludCBJTlNFVCA9IDI7CisKKyAgICAJLyoKKyAgICAJKiBDb252ZXJ0IGZyb20gdGhlIGRheSBudW1iZXIgd2l0aGluIGEgbW9udGggKDEtYmFzZWQpCisgICAgCSogdG8gdGhlIGNlbGwgY29vcmRpbmF0ZXMgb24gdGhlIGNhbGVuZGFyICgwLWJhc2VkKQorICAgIAkqLworICAgIAlwcml2YXRlIHZvaWQgZGF0ZVRvQ2VsbChpbnQgZGF0ZSwgUG9pbnQgcG9zKQorICAgIAl7CisgICAgICAgIAlpbnQgY2VsbCA9IChkYXRlICsgZmlyc3REYXlJbk1vbnRoIC0gZmlyc3REYXlPZldlZWsgLSBtaW5EYXkpOworICAgICAgICAJaWYgKGZpcnN0RGF5SW5Nb250aCA8IGZpcnN0RGF5T2ZXZWVrKSB7CisgICAgICAgICAgICAJY2VsbCArPSBkYXlzSW5XZWVrOworICAgICAgICAJfQorCisgICAgICAgIAlwb3MueCA9IGNlbGwgJSBkYXlzSW5XZWVrOworICAgICAgICAJcG9zLnkgPSBjZWxsIC8gZGF5c0luV2VlazsKKyAgICAJfQorICAgIAlwcml2YXRlIFBvaW50IGRhdGVUb0NlbGwoaW50IGRhdGUpIHsKKyAgICAgICAgCVBvaW50IHAgPSBuZXcgUG9pbnQoMCwwKTsKKyAgICAgICAgCWRhdGVUb0NlbGwoZGF0ZSwgcCk7CisgICAgICAgIAlyZXR1cm4gcDsKKyAgICAJfQorCisgICAgCXB1YmxpYyB2b2lkIHBhaW50KEdyYXBoaWNzIGcpIHsKKworICAgICAgICAJaWYgKGRpcnR5KSB7CisgICAgICAgICAgICAJY2FsY3VsYXRlKCk7CisgICAgICAgIAl9CisKKyAgICAgICAgCVBvaW50IGNlbGxQb3MgPSBuZXcgUG9pbnQoMCwwKTsgICAgIC8vIFRlbXBvcmFyeSB2YXJpYWJsZQorICAgICAgICAJRGltZW5zaW9uIGQgPSBnZXRTaXplKCk7CisKKyAgICAgICAgCWcuc2V0Q29sb3IoRGVtb1V0aWxpdHkuYmdDb2xvcik7CisgICAgICAgIAlnLmZpbGxSZWN0KDAsMCxkLndpZHRoLGQuaGVpZ2h0KTsKKworICAgICAgICAJLy8gRHJhdyB0aGUgZGF5IG5hbWVzIGF0IHRoZSB0b3AKKyAgICAgICAgCWcuc2V0Q29sb3IoQ29sb3IuYmxhY2spOworICAgICAgICAJZy5zZXRGb250KERlbW9VdGlsaXR5LmxhYmVsRm9udCk7CisgICAgICAgIAlGb250TWV0cmljcyBmbSA9IGcuZ2V0Rm9udE1ldHJpY3MoKTsKKyAgICAgICAgCWludCBsYWJlbEhlaWdodCA9IGZtLmdldEhlaWdodCgpICsgSU5TRVQgKiAyOworCisgICAgICAgIAlpbnQgdiA9IGZtLmdldEFzY2VudCgpICsgSU5TRVQ7CisgICAgICAgIAlmb3IgKGludCBpID0gMDsgaSA8IGRheXNJbldlZWs7IGkrKykgeworICAgICAgICAgICAgCWludCBkYXlOdW0gPSAoaSArIG1pbkRheSArIGZpcnN0RGF5T2ZXZWVrIC0gMikgJSBkYXlzSW5XZWVrICsgMTsKKyAgICAgICAgICAgIAlTdHJpbmcgZGF5TmFtZSA9IGZTeW1ib2xzLmdldFdlZWtkYXlzKClbZGF5TnVtXTsKKworICAgICAgICAgICAgCWludCBoID0gKGludCkgKGQud2lkdGggKiAoaSArIDAuNSkpIC8gZGF5c0luV2VlazsKKyAgICAgICAgICAgIAloIC09IGZtLnN0cmluZ1dpZHRoKGRheU5hbWUpIC8gMjsKKworICAgICAgICAgICAgCWcuZHJhd1N0cmluZyhkYXlOYW1lLCBoLCB2KTsKKyAgICAgICAgCX0KKworICAgICAgICAJZG91YmxlIGNlbGxIZWlnaHQgPSAoZC5oZWlnaHQgLSBsYWJlbEhlaWdodCAtIDEpIC8gbnVtV2Vla3M7CisgICAgICAgIAlkb3VibGUgY2VsbFdpZHRoID0gKGRvdWJsZSkoZC53aWR0aCAtIDEpIC8gZGF5c0luV2VlazsKKworICAgICAgICAJLy8gRHJhdyBhIHdoaXRlIGJhY2tncm91bmQgaW4gdGhlIHBhcnQgb2YgdGhlIGNhbGVuZGFyCisgICAgICAgIAkvLyB0aGF0IGRpc3BsYXlzIHRoaXMgbW9udGguCisgICAgICAgIAkvLyBGaXJzdCBmaWd1cmUgb3V0IGhvdyBtdWNoIG9mIHRoZSBmaXJzdCB3ZWVrIHNob3VsZCBiZSBzaGFkZWQuCisgICAgICAgIAl7CisgICAgICAgICAgICAJZy5zZXRDb2xvcihDb2xvci53aGl0ZSk7CisgICAgICAgICAgICAJZGF0ZVRvQ2VsbCgxLCBjZWxsUG9zKTsKKyAgICAgICAgICAgIAlpbnQgd2lkdGggPSAoaW50KShjZWxsUG9zLngqY2VsbFdpZHRoKTsgIC8vIFdpZHRoIG9mIHVuc2hhZGVkIGFyZWEKKworICAgICAgICAgICAgCWcuZmlsbFJlY3QoKGludCkod2lkdGgpLCBsYWJlbEhlaWdodCAsCisgICAgICAgICAgICAgICAgICAgIAkoaW50KShkLndpZHRoIC0gd2lkdGgpLCAoaW50KWNlbGxIZWlnaHQpOworCisgICAgICAgICAgICAJLy8gQWxsIG9mIHRoZSBpbnRlcm1lZGlhdGUgd2Vla3MgZ2V0IHNoYWRlZCBjb21wbGV0ZWx5CisgICAgICAgICAgICAJZy5maWxsUmVjdCgwLCAoaW50KShsYWJlbEhlaWdodCArIGNlbGxIZWlnaHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgCWQud2lkdGgsIChpbnQpKGNlbGxIZWlnaHQgKiAobnVtV2Vla3MgLSAyKSkpOworCisgICAgICAgICAgICAJLy8gTm93IGZpZ3VyZSBvdXQgdGhlIGxhc3Qgd2Vlay4KKyAgICAgICAgICAgIAlkYXRlVG9DZWxsKGRheXNJbk1vbnRoLCBjZWxsUG9zKTsKKyAgICAgICAgICAgIAl3aWR0aCA9IChpbnQpKChjZWxsUG9zLngrMSkqY2VsbFdpZHRoKTsgIC8vIFdpZHRoIG9mIHNoYWRlZCBhcmVhCisKKyAgICAgICAgICAgIAlnLmZpbGxSZWN0KDAsIChpbnQpKGxhYmVsSGVpZ2h0ICsgKG51bVdlZWtzLTEpICogY2VsbEhlaWdodCksCisgICAgICAgICAgICAgICAgICAgICAgICAJd2lkdGgsIChpbnQpKGNlbGxIZWlnaHQpKTsKKworICAgICAgICAJfQorICAgICAgICAJLy8gRHJhdyB0aGUgWC9ZIGdyaWQgbGluZXMKKyAgICAgICAgCWcuc2V0Q29sb3IoQ29sb3IuYmxhY2spOworICAgICAgICAJZm9yIChpbnQgaSA9IDA7IGkgPD0gbnVtV2Vla3M7IGkrKykgeworICAgICAgICAgICAgCWludCB5ID0gKGludCkobGFiZWxIZWlnaHQgKyBpICogY2VsbEhlaWdodCk7CisgICAgICAgICAgICAJZy5kcmF3TGluZSgwLCB5LCBkLndpZHRoIC0gMSwgeSk7CisgICAgICAgIAl9CisgICAgICAgIAlmb3IgKGludCBpID0gMDsgaSA8PSBkYXlzSW5XZWVrOyBpKyspIHsKKyAgICAgICAgICAgIAlpbnQgeCA9IChpbnQpKGkgKiBjZWxsV2lkdGgpOworICAgICAgICAgICAgCWcuZHJhd0xpbmUoeCwgbGFiZWxIZWlnaHQsIHgsIGQuaGVpZ2h0IC0gMSk7CisgICAgICAgIAl9CisKKyAgICAgICAgCS8vIE5vdyBsb29wIHRocm91Z2ggYWxsIG9mIHRoZSBkYXlzIGluIHRoZSBtb250aCwgZmlndXJlIG91dCB3aGVyZQorICAgICAgICAJLy8gdGhleSBnbyBpbiB0aGUgZ3JpZCwgYW5kIGRyYXcgdGhlIGRheSAjIGZvciBlYWNoIG9uZQorICAgICAgICAJRm9udCBudW1iZXJGb250ID0gbmV3IEZvbnQoIkhlbHZldGljYSIsRm9udC5QTEFJTiwxMik7CisgICAgICAgIAkvLyBub3QgdXNlZCBGb250IGhvbGlkYXlGb250ID0gRGVtb1V0aWxpdHkuY3JlZGl0Rm9udDsKKworICAgICAgICAJQ2FsZW5kYXIgYyA9IChDYWxlbmRhcilmQ2FsZW5kYXIuY2xvbmUoKTsKKyAgICAgICAgCWMuc2V0VGltZShmU3RhcnRPZk1vbnRoKTsKKworICAgICAgICAJZm9yIChpbnQgaSA9IDEsIGggPSAwOyBpIDw9IGRheXNJbk1vbnRoOyBpKyspIHsKKyAgICAgICAgICAgIAlnLnNldEZvbnQobnVtYmVyRm9udCk7CisgICAgICAgICAgICAJZy5zZXRDb2xvcihDb2xvci5ibGFjayk7CisgICAgICAgICAgICAJZm0gPSBnLmdldEZvbnRNZXRyaWNzKCk7CisKKyAgICAgICAgICAgIAlkYXRlVG9DZWxsKGksIGNlbGxQb3MpOworICAgICAgICAgICAgCWludCB4ID0gKGludCkoKGNlbGxQb3MueCArIDEpICogY2VsbFdpZHRoKTsKKyAgICAgICAgICAgIAlpbnQgeSA9IChpbnQpKGNlbGxQb3MueSAqIGNlbGxIZWlnaHQgKyBsYWJlbEhlaWdodCk7CisKKyAgICAgICAgICAgIAlTdHJpbmdCdWZmZXIgYnVmZmVyID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICAgICAgCWJ1ZmZlci5hcHBlbmQoaSk7CisgICAgICAgICAgICAJU3RyaW5nIGRheU51bSA9IGJ1ZmZlci50b1N0cmluZygpOworCisgICAgICAgICAgICAJeCA9IHggLSBJTlNFVCAtIGZtLnN0cmluZ1dpZHRoKGRheU51bSk7CisgICAgICAgICAgICAJeSA9IHkgKyBmbS5nZXRBc2NlbnQoKSArIElOU0VUOworCisgICAgICAgICAgICAJZy5kcmF3U3RyaW5nKGRheU51bSwgeCwgeSk7CisKKyAgICAgICAgICAgIAkvLyBTZWUgaWYgYW55IG9mIHRoZSBob2xpZGF5cyBsYW5kIG9uIHRoaXMgZGF5Li4uLgorICAgICAgICAgICAgCUhvbGlkYXlJbmZvIGluZm8gPSBudWxsOworICAgICAgICAgICAgCWludCBjb3VudCA9IDA7CisKKyAgICAgICAgICAgIAkvLyBDb29yZGluYXRlcyBvZiBsb3dlci1sZWZ0IGNvcm5lciBvZiBjZWxsLgorICAgICAgICAgICAgCXggPSAoaW50KSgoY2VsbFBvcy54KSAqIGNlbGxXaWR0aCk7CisgICAgICAgICAgICAJeSA9IChpbnQpKChjZWxsUG9zLnkrMSkgKiBjZWxsSGVpZ2h0KSArIGxhYmVsSGVpZ2h0OworCisgICAgICAgICAgICAJd2hpbGUgKGggPCBmSG9saWRheXMuc2l6ZSgpICYmCisgICAgICAgICAgICAgICAgICAgIAkoaW5mbyA9IChIb2xpZGF5SW5mbylmSG9saWRheXMuZWxlbWVudEF0KGgpKS5kYXRlIDw9IGkpCisgICAgICAgICAgICAJeworICAgICAgICAgICAgICAgIAlpZiAoaW5mby5kYXRlID09IGkpIHsKKyAgICAgICAgICAgICAgICAgICAgCS8vIERyYXcgdGhlIGhvbGlkYXkgaGVyZS4KKyAgICAgICAgICAgICAgICAgICAgCWcuc2V0Rm9udChudW1iZXJGb250KTsKKyAgICAgICAgICAgICAgICAgICAgCWcuc2V0Q29sb3IoQ29sb3IucmVkKTsKKworICAgICAgICAgICAgICAgICAgICAJRGVtb1RleHRCb3ggYm94ID0gbmV3IERlbW9UZXh0Qm94KGcsIGluZm8ubmFtZSwgKGludCkoY2VsbFdpZHRoIC0gSU5TRVQpKTsKKyAgICAgICAgICAgICAgICAgICAgCWJveC5kcmF3KGcsIHggKyBJTlNFVCwgeSAtIElOU0VUIC0gYm94LmdldEhlaWdodCgpKTsKKworICAgICAgICAgICAgICAgICAgICAJeSAtPSAoYm94LmdldEhlaWdodCgpICsgSU5TRVQpOworICAgICAgICAgICAgICAgICAgICAJY291bnQrKzsKKyAgICAgICAgICAgICAgICAJfQorICAgICAgICAgICAgICAgIAloKys7CisgICAgICAgICAgICAJfQorICAgICAgICAJfQorICAgIAl9CisKKyAgICAJLy8gSW1wb3J0YW50IHN0YXRlIHZhcmlhYmxlcworICAgIAlwcml2YXRlIExvY2FsZSAgICAgICAgICAgICAgZkNhbGVuZGFyTG9jYWxlOyAgICAvLyBXaG9zZSBjYWxlbmRhcgorICAgIAlwcml2YXRlIENhbGVuZGFyICAgICAgICAgICAgZkNhbGVuZGFyOyAgICAgICAgICAvLyBDYWxlbmRhciBmb3IgY2FsY3VsYXRpb25zCisKKyAgICAJcHJpdmF0ZSBMb2NhbGUgICAgICAgICAgICAgIGZEaXNwbGF5TG9jYWxlOyAgICAgLy8gSG93IHRvIGRpc3BsYXkgaXQKKyAgICAJcHJpdmF0ZSBEYXRlRm9ybWF0U3ltYm9scyAgIGZTeW1ib2xzOyAgICAgICAgICAgLy8gU3ltYm9scyBmb3IgZHJhd2luZworCisgICAgCXByaXZhdGUgRGF0ZSAgICAgICAgICAgICAgICBmU3RhcnRPZk1vbnRoOyAgICAgIC8vIDAwOjAwOjAwIG9uIGZpcnN0IGRheSBvZiBtb250aAorCisgICAgCS8vIENhY2hlZCBjYWxjdWxhdGlvbnMgdG8gbWFrZSBkcmF3aW5nIGZhc3Rlci4KKyAgICAJcHJpdmF0ZSB0cmFuc2llbnQgaW50IG1pbkRheTsgICAgICAgICAgIC8vIE1pbmltdW0gbGVnYWwgZGF5ICMKKyAgICAJcHJpdmF0ZSB0cmFuc2llbnQgaW50IGRheXNJbldlZWs7ICAgICAgIC8vICMgb2YgZGF5cyBpbiBhIHdlZWsKKyAgICAJcHJpdmF0ZSB0cmFuc2llbnQgaW50IGZpcnN0RGF5T2ZXZWVrOyAgIC8vIEZpcnN0IGRheSB0byBkaXNwbGF5IGluIHdlZWsKKyAgICAJcHJpdmF0ZSB0cmFuc2llbnQgaW50IG51bVdlZWtzOyAgICAgICAgIC8vICMgZnVsbCBvciBwYXJ0aWFsIHdlZWtzIGluIG1vbnRoCisgICAgCXByaXZhdGUgdHJhbnNpZW50IGludCBkYXlzSW5Nb250aDsgICAgICAvLyAjIGRheXMgaW4gdGhpcyBtb250aAorICAgIAlwcml2YXRlIHRyYW5zaWVudCBpbnQgZmlyc3REYXlJbk1vbnRoOyAgLy8gRGF5IG9mIHdlZWsgb2YgZmlyc3QgZGF5IGluIG1vbnRoCisKKyAgICAJcHJpdmF0ZSB0cmFuc2llbnQgSG9saWRheVtdIGZBbGxIb2xpZGF5czsKKyAgICAJcHJpdmF0ZSB0cmFuc2llbnQgVmVjdG9yICAgIGZIb2xpZGF5cyA9IG5ldyBWZWN0b3IoNSw1KTsKKworICAgIAlwcml2YXRlIHRyYW5zaWVudCBib29sZWFuIGRpcnR5ID0gdHJ1ZTsKKwl9CisKKwlwcml2YXRlIHN0YXRpYyBjbGFzcyBIb2xpZGF5SW5mbyB7CisgICAgCXB1YmxpYyBIb2xpZGF5SW5mbyhpbnQgZGF0ZSwgSG9saWRheSBob2xpZGF5LCBTdHJpbmcgbmFtZSkgeworICAgICAgICAJdGhpcy5kYXRlID0gZGF0ZTsKKyAgICAgICAgCXRoaXMuaG9saWRheSA9IGhvbGlkYXk7CisgICAgICAgIAl0aGlzLm5hbWUgPSBuYW1lOworICAgIAl9CisKKyAgICAJcHVibGljIEhvbGlkYXkgaG9saWRheTsKKyAgICAJcHVibGljIGludCBkYXRlOworICAgIAlwdWJsaWMgU3RyaW5nIG5hbWU7CisJfQorfQorCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vaG9saWRheS9wYWNrYWdlLmh0bWwgYi9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vaG9saWRheS9wYWNrYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZWZhM2U0YQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby9ob2xpZGF5L3BhY2thZ2UuaHRtbApAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPCEtLSAgQ29weXJpZ2h0IChDKSAyMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZAorICBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL2hvbGlkYXkvcGFja2FnZS5odG1sLHYgJAorICAkUmV2aXNpb246IDEuMSAkCisgICREYXRlOiAyMDAwLzAzLzE1IDA2OjU0OjUwICQKKy0tPgorPC9oZWFkPgorPGJvZHkgYmdjb2xvcj0id2hpdGUiPgorSG9saWRheSBkZW1vIGFwcGxpY2F0aW9uLgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby9pbXBsL0FwcGxldEZyYW1lLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vaW1wbC9BcHBsZXRGcmFtZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjg5ZDY3OGQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vaW1wbC9BcHBsZXRGcmFtZS5qYXZhCkBAIC0wLDAgKzEsMTUyIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vaW1wbC9BcHBsZXRGcmFtZS5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzAyLzE2IDAzOjA0OjU2ICQgCisgKiAkUmV2aXNpb246IDEuNCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LmRlbW8uaW1wbDsKK2ltcG9ydCBqYXZhLmFwcGxldC4qOworaW1wb3J0IGphdmEubmV0LlVSTDsKK2ltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247CitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworaW1wb3J0IGphdmEuYXd0Lio7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuKjsKK2ltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CisKKy8qKgorICogPHA+QSBGcmFtZSB0aGF0IHJ1bnMgYW4gQXBwbGV0IHdpdGhpbiBpdHNlbGYsIG1ha2luZyBpdCBwb3NzaWJsZQorICogZm9yIGFuIGFwcGxldCB0byBydW4gYXMgYW4gYXBwbGljYXRpb24uICBVc2FnZToKKyAqCisgKiA8cHJlPgorICogcHVibGljIGNsYXNzIE15QXBwbGV0IGV4dGVuZHMgQXBwbGV0IHsKKyAqICAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgYXJnc1tdKSB7CisgKiAgICAgICAgIE15QXBwbGV0IGFwcGxldCA9IG5ldyBNeUFwcGxldCgpOworICogICAgICAgICBuZXcgQXBwbGV0RnJhbWUoIk15IEFwcGxldCBSdW5uaW5nIEFzIEFuIEFwcCIsIGFwcGxldCwgNjQwLCA0ODApOworICogICAgIH0KKyAqICAgICAuLi4KKyAqIH0KKyAqIDxwcmU+CisgKgorICogPHA+Q29weXJpZ2h0ICZjb3B5OyBJQk0gQ29ycG9yYXRpb24gMTk5OS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogQGF1dGhvciBBbGFuIExpdQorICogQHZlcnNpb24gJFJDU2ZpbGU6IEFwcGxldEZyYW1lLmphdmEsdiAkICRSZXZpc2lvbjogMS40ICQgJERhdGU6IDIwMDIvMDIvMTYgMDM6MDQ6NTYgJAorICovCitwdWJsaWMgY2xhc3MgQXBwbGV0RnJhbWUgZXh0ZW5kcyBGcmFtZSBpbXBsZW1lbnRzIEFwcGxldFN0dWIsIEFwcGxldENvbnRleHQgeworCisgICAgQXBwbGV0IGFwcGxldDsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAiXHUwMEE5IElCTSBDb3Jwb3JhdGlvbiAxOTk5LiBBbGwgcmlnaHRzIHJlc2VydmVkLiI7CisgICAgCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGEgRnJhbWUgcnVubmluZyB0aGUgZ2l2ZW4gQXBwbGV0IHdpdGggdGhlIGRlZmF1bHQgc2l6ZQorICAgICAqIG9mIDY0MCBieSA0ODAuCisgICAgICogV2hlbiB0aGUgRnJhbWUgaXMgY2xvc2VkLCB0aGUgYXBwbGV0J3Mgc3RvcCgpIG1ldGhvZCBpcyBjYWxsZWQsCisgICAgICogdGhlIEZyYW1lIGlzIGRpc3Bvc2UoKWQgb2YsIGFuZCBTeXN0ZW0uZXhpdCgwKSBpcyBjYWxsZWQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gbmFtZSB0aGUgRnJhbWUgdGl0bGUKKyAgICAgKiBAcGFyYW0gYXBwbGV0IHRoZSBhcHBsZXQgdG8gYmUgcnVuCisgICAgICovCisgICAgcHVibGljIEFwcGxldEZyYW1lKFN0cmluZyBuYW1lLCBBcHBsZXQgYXBwbGV0KSB7CisgICAgICAgIHRoaXMobmFtZSwgYXBwbGV0LCA2NDAsIDQ4MCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGEgRnJhbWUgcnVubmluZyB0aGUgZ2l2ZW4gQXBwbGV0IHdpdGggdGhlIGdpdmVuIHNpemUuCisgICAgICogV2hlbiB0aGUgRnJhbWUgaXMgY2xvc2VkLCB0aGUgYXBwbGV0J3Mgc3RvcCgpIG1ldGhvZCBpcyBjYWxsZWQsCisgICAgICogdGhlIEZyYW1lIGlzIGRpc3Bvc2UoKWQgb2YsIGFuZCBTeXN0ZW0uZXhpdCgwKSBpcyBjYWxsZWQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gbmFtZSB0aGUgRnJhbWUgdGl0bGUKKyAgICAgKiBAcGFyYW0gYXBwbGV0IHRoZSBhcHBsZXQgdG8gYmUgcnVuCisgICAgICogQHBhcmFtIHdpZHRoIHdpZHRoIG9mIHRoZSBGcmFtZQorICAgICAqIEBwYXJhbSBoZWlnaHQgaGVpZ2h0IG9mIHRoZSBGcmFtZQorICAgICAqLworICAgIHB1YmxpYyBBcHBsZXRGcmFtZShTdHJpbmcgbmFtZSwgQXBwbGV0IGFwcGxldCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSB7CisgICAgICAgIHN1cGVyKG5hbWUpOworICAgICAgICB0aGlzLmFwcGxldCA9IGFwcGxldDsKKyAgICAgICAgYXBwbGV0LnNldFN0dWIodGhpcyk7CisKKyAgICAgICAgc2V0U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgYWRkKCJDZW50ZXIiLCBhcHBsZXQpOworICAgICAgICBzaG93KCk7CisgICAgICAgIGFkZFdpbmRvd0xpc3RlbmVyKG5ldyBXaW5kb3dBZGFwdGVyKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgd2luZG93Q2xvc2luZyhXaW5kb3dFdmVudCBlKSB7CisgICAgICAgICAgICAgICAgQXBwbGV0RnJhbWUudGhpcy5hcHBsZXQuc3RvcCgpOworICAgICAgICAgICAgICAgIGRpc3Bvc2UoKTsKKyAgICAgICAgICAgICAgICBTeXN0ZW0uZXhpdCgwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisKKyAgICAgICAgYXBwbGV0LmluaXQoKTsKKyAgICAgICAgYXBwbGV0LnN0YXJ0KCk7CisgICAgfQorCisgICAgLy8gQXBwbGV0U3R1YiBBUEkKKyAgICBwdWJsaWMgdm9pZCBhcHBsZXRSZXNpemUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSB7CisgICAgICAgIHNldFNpemUod2lkdGgsIGhlaWdodCk7CisgICAgfQorCisgICAgcHVibGljIEFwcGxldENvbnRleHQgZ2V0QXBwbGV0Q29udGV4dCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCisgICAgcHVibGljIFVSTCBnZXRDb2RlQmFzZSgpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgcHVibGljIFVSTCBnZXREb2N1bWVudEJhc2UoKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgU3RyaW5nIGdldFBhcmFtZXRlcihTdHJpbmcgbmFtZSkgeworICAgICAgICByZXR1cm4gIlBBUkFNRVRFUiI7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gaXNBY3RpdmUoKSB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICAKKyAgICAvLyBBcHBsZXRDb250ZXh0IEFQSQorICAgIHB1YmxpYyBBcHBsZXQgZ2V0QXBwbGV0KFN0cmluZyBuYW1lKSB7CisgICAgICAgIHJldHVybiBhcHBsZXQ7CisgICAgfQorCisgICAgcHVibGljIEVudW1lcmF0aW9uIGdldEFwcGxldHMoKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIHB1YmxpYyBBdWRpb0NsaXAgZ2V0QXVkaW9DbGlwKFVSTCB1cmwpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgcHVibGljIEltYWdlIGdldEltYWdlKFVSTCB1cmwpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2hvd0RvY3VtZW50KFVSTCB1cmwpIHt9CisgICAgcHVibGljIHZvaWQgc2hvd0RvY3VtZW50KFVSTCB1cmwsIFN0cmluZyB0YXJnZXQpIHt9CisKKyAgICBwdWJsaWMgdm9pZCBzaG93U3RhdHVzKFN0cmluZyBzdGF0dXMpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHN0YXR1cyk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIHNldFN0cmVhbShTdHJpbmcga2V5LCBJbnB1dFN0cmVhbSBzdHJlYW0pIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBJbnB1dFN0cmVhbSBnZXRTdHJlYW0oU3RyaW5nIGtleSkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgICAgCisgICAgcHVibGljIEl0ZXJhdG9yIGdldFN0cmVhbUtleXMoKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby9pbXBsL0RlbW9BcHBsZXQuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby9pbXBsL0RlbW9BcHBsZXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4yMTUzZTQyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL2ltcGwvRGVtb0FwcGxldC5qYXZhCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk3LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby9pbXBsL0RlbW9BcHBsZXQuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xOSAwNDoxMDoyMyAkIAorICogJFJldmlzaW9uOiAxLjYgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LmRlbW8uaW1wbDsKKworaW1wb3J0IGphdmEuYXBwbGV0LkFwcGxldDsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworaW1wb3J0IGphdmEuYXd0Lio7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuKjsKKworcHVibGljIGFic3RyYWN0IGNsYXNzIERlbW9BcHBsZXQgZXh0ZW5kcyBqYXZhLmFwcGxldC5BcHBsZXQgeworICAgIHByaXZhdGUgQnV0dG9uICAgZGVtb0J1dHRvbjsKKyAgICBwcml2YXRlIEZyYW1lICAgIGRlbW9GcmFtZTsKKwlwcml2YXRlIHN0YXRpYyBpbnQgZGVtb0ZyYW1lQ291bnQgPSAwOworCisgICAgcHJvdGVjdGVkIGFic3RyYWN0IEZyYW1lIGNyZWF0ZURlbW9GcmFtZShEZW1vQXBwbGV0IGFwcGxldCk7CisgICAgcHJvdGVjdGVkIERpbWVuc2lvbiBnZXREZWZhdWx0RnJhbWVTaXplKERlbW9BcHBsZXQgYXBwbGV0LCBGcmFtZSBmKSB7CisgICAgCXJldHVybiBuZXcgRGltZW5zaW9uKDcwMCwgNTUwKTsKKyAgICB9CisKKyAgICAvL0NyZWF0ZSBhIGJ1dHRvbiB0aGF0IHdpbGwgZGlzcGxheSB0aGUgZGVtbworICAgIHB1YmxpYyB2b2lkIGluaXQoKQorICAgIHsKKyAgICAgICAgc2V0QmFja2dyb3VuZChDb2xvci53aGl0ZSk7CisgICAgICAgIGRlbW9CdXR0b24gPSBuZXcgQnV0dG9uKCJEZW1vIik7CisgICAgICAgIGRlbW9CdXR0b24uc2V0QmFja2dyb3VuZChDb2xvci55ZWxsb3cpOworICAgICAgICBhZGQoIGRlbW9CdXR0b24gKTsKKworICAgICAgICBkZW1vQnV0dG9uLmFkZEFjdGlvbkxpc3RlbmVyKCBuZXcgQWN0aW9uTGlzdGVuZXIoKSB7CisgICAgICAgICAgICAgcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEFjdGlvbkV2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICBpZiAoZS5nZXRJRCgpID09IEFjdGlvbkV2ZW50LkFDVElPTl9QRVJGT1JNRUQpIHsKKyAgICAgICAgICAgICAgICAgICAgZGVtb0J1dHRvbi5zZXRMYWJlbCgibG9hZGluZyIpOworCisgICAgICAgICAgICAgICAgICAgIGlmIChkZW1vRnJhbWUgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICBkZW1vRnJhbWUgPSBjcmVhdGVEZW1vRnJhbWUoRGVtb0FwcGxldC50aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgc2hvd0RlbW8oKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGRlbW9CdXR0b24uc2V0TGFiZWwoIkRlbW8iKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgfQorICAgICAgICB9ICk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2hvd0RlbW8oKQorICAgIHsKKyAgICAJZGVtb0ZyYW1lID0gY3JlYXRlRGVtb0ZyYW1lKHRoaXMpOworICAgICAgICBkZW1vRnJhbWUuZG9MYXlvdXQoKTsKKyAgICAgICAgRGltZW5zaW9uIGQgPSBnZXREZWZhdWx0RnJhbWVTaXplKHRoaXMsIGRlbW9GcmFtZSk7CisgICAgICAgIGRlbW9GcmFtZS5zZXRTaXplKGQud2lkdGgsIGQuaGVpZ2h0KTsKKyAgICAgICAgZGVtb0ZyYW1lLnNob3coKTsKKwkJZGVtb0ZyYW1lT3BlbmVkKCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgZGVtb0Nsb3NlZCgpCisgICAgeworICAgICAgICBkZW1vRnJhbWUgPSBudWxsOworCQlkZW1vRnJhbWVDbG9zZWQoKTsKKyAgICB9CisKKwlwcm90ZWN0ZWQgc3RhdGljIHZvaWQgZGVtb0ZyYW1lT3BlbmVkKCkgeworCQlkZW1vRnJhbWVDb3VudCsrOworICAgIH0KKwlwcm90ZWN0ZWQgc3RhdGljIHZvaWQgZGVtb0ZyYW1lQ2xvc2VkKCkgeworCQlpZiAoLS1kZW1vRnJhbWVDb3VudCA9PSAwKSB7CisJCQlTeXN0ZW0uZXhpdCgwKTsKKwkJfQorICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL2ltcGwvRGVtb1RleHRCb3guamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby9pbXBsL0RlbW9UZXh0Qm94LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMmJmNTNlMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby9pbXBsL0RlbW9UZXh0Qm94LmphdmEKQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk3LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby9pbXBsL0RlbW9UZXh0Qm94LmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDIvMTkgMDQ6MTA6MjMgJCAKKyAqICRSZXZpc2lvbjogMS40ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5kZXYuZGVtby5pbXBsOworCisKK2ltcG9ydCBqYXZhLnRleHQuQnJlYWtJdGVyYXRvcjsKK2ltcG9ydCBqYXZhLmF3dC4qOworCitwdWJsaWMgY2xhc3MgRGVtb1RleHRCb3ggeworCisgICAgcHVibGljIERlbW9UZXh0Qm94KEdyYXBoaWNzIGcsIFN0cmluZyB0ZXh0LCBpbnQgd2lkdGgpCisgICAgeworICAgICAgICB0aGlzLnRleHQgPSB0ZXh0OworICAgICAgICB0aGlzLmNoYXJzID0gbmV3IGNoYXJbdGV4dC5sZW5ndGgoKV07CisgICAgICAgIHRleHQuZ2V0Q2hhcnMoMCwgdGV4dC5sZW5ndGgoKSwgY2hhcnMsIDApOworCisgICAgICAgIHRoaXMud2lkdGggPSB3aWR0aDsKKyAgICAgICAgdGhpcy5wb3J0ID0gZzsKKyAgICAgICAgdGhpcy5tZXRyaWNzID0gZy5nZXRGb250TWV0cmljcygpOworCisgICAgICAgIGJyZWFrVGV4dCgpOworICAgIH0KKworICAgIHB1YmxpYyAgaW50IGdldEhlaWdodCgpIHsKKyAgICAgICAgcmV0dXJuIChuYnJlYWtzICsgMSkgKiBtZXRyaWNzLmdldEhlaWdodCgpOworICAgIH0KKworICAgIHB1YmxpYyAgdm9pZCBkcmF3KEdyYXBoaWNzIGcsIGludCB4LCBpbnQgeSkKKyAgICB7CisgICAgICAgIGludCBpbmRleCA9IDA7CisKKyAgICAgICAgeSArPSBtZXRyaWNzLmdldEFzY2VudCgpOworCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbmJyZWFrczsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBnLmRyYXdDaGFycyhjaGFycywgaW5kZXgsIGJyZWFrUG9zW2ldIC0gaW5kZXgsIHgsIHkpOworICAgICAgICAgICAgaW5kZXggPSBicmVha1Bvc1tpXTsKKyAgICAgICAgICAgIHkgKz0gbWV0cmljcy5nZXRIZWlnaHQoKTsKKyAgICAgICAgfQorCisgICAgICAgIGcuZHJhd0NoYXJzKGNoYXJzLCBpbmRleCwgY2hhcnMubGVuZ3RoIC0gaW5kZXgsIHgsIHkpOworICAgIH0KKworCisgICAgcHJpdmF0ZSB2b2lkIGJyZWFrVGV4dCgpCisgICAgeworICAgICAgICBpZiAobWV0cmljcy5jaGFyc1dpZHRoKGNoYXJzLCAwLCBjaGFycy5sZW5ndGgpID4gd2lkdGgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEJyZWFrSXRlcmF0b3IgaXRlciA9IEJyZWFrSXRlcmF0b3IuZ2V0V29yZEluc3RhbmNlKCk7CisgICAgICAgICAgICBpdGVyLnNldFRleHQodGV4dCk7CisKKyAgICAgICAgICAgIGludCBzdGFydCA9IGl0ZXIuZmlyc3QoKTsKKyAgICAgICAgICAgIGludCBlbmQgPSBzdGFydDsKKyAgICAgICAgICAgIGludCBwb3M7CisKKyAgICAgICAgICAgIHdoaWxlICggKHBvcyA9IGl0ZXIubmV4dCgpKSAhPSBCcmVha0l0ZXJhdG9yLkRPTkUgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGludCB3ID0gbWV0cmljcy5jaGFyc1dpZHRoKGNoYXJzLCBzdGFydCwgcG9zIC0gc3RhcnQpOworICAgICAgICAgICAgICAgIGlmICh3ID4gd2lkdGgpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAvLyBXZSd2ZSBnb25lIHBhc3QgdGhlIG1heGltdW0gd2lkdGgsIHNvIGJyZWFrIHRoZSBsaW5lCisgICAgICAgICAgICAgICAgICAgIGlmIChlbmQgPiBzdGFydCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlcmUgd2FzIGF0IGxlYXN0IG9uZSBicmVhayBwb3NpdGlvbiBiZWZvcmUgdGhpcyBwb2ludAorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtQb3NbbmJyZWFrcysrXSA9IGVuZDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ID0gZW5kOworICAgICAgICAgICAgICAgICAgICAgICAgZW5kID0gcG9zOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlcmUgd2VyZW4ndCBhbnkgYnJlYWsgcG9zaXRpb25zIGJlZm9yZSB0aGlzIG9uZSwgc28KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxldCB0aGlzIHdvcmQgb3ZlcmZsb3cgdGhlIG1hcmdpbiAoeXVjaykKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrUG9zW25icmVha3MrK10gPSBwb3M7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCA9IGVuZCA9IHBvczsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBjdXJyZW50IHBvc2l0aW9uIHN0aWxsIGZpdHMgb24gdGhlIGxpbmU7IGl0J3MgdGhlIGJlc3QKKyAgICAgICAgICAgICAgICAgICAgLy8gdGVudGF0aXZlIGJyZWFrIHBvc2l0aW9uIHdlIGhhdmUgc28gZmFyLgorICAgICAgICAgICAgICAgICAgICBlbmQgPSBwb3M7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIFN0cmluZyAgICAgICAgICB0ZXh0OworICAgIHByaXZhdGUgY2hhcltdICAgICAgICAgIGNoYXJzOworICAgIHByaXZhdGUgR3JhcGhpY3MgICAgICAgIHBvcnQ7CisgICAgcHJpdmF0ZSBGb250TWV0cmljcyAgICAgbWV0cmljczsKKyAgICBwcml2YXRlIGludCAgICAgICAgICAgICB3aWR0aDsKKworICAgIHByaXZhdGUgaW50W10gICAgICAgICAgIGJyZWFrUG9zID0gbmV3IGludFsxMF07IC8vIFRPRE86IGdldCByZWFsCisgICAgcHJpdmF0ZSBpbnQgICAgICAgICAgICAgbmJyZWFrcyA9IDA7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL2ltcGwvRGVtb1V0aWxpdHkuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby9pbXBsL0RlbW9VdGlsaXR5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uY2Y1YWZkZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby9pbXBsL0RlbW9VdGlsaXR5LmphdmEKQEAgLTAsMCArMSwxMzQgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk3LTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby9pbXBsL0RlbW9VdGlsaXR5LmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDgvMDEgMjA6Mjc6MjAgJCAKKyAqICRSZXZpc2lvbjogMS44ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5kZXYuZGVtby5pbXBsOworCitpbXBvcnQgamF2YS5hd3QuKjsKK2ltcG9ydCBqYXZhLmxhbmcuKjsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworcHVibGljIGNsYXNzIERlbW9VdGlsaXR5Cit7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBGb250IHRpdGxlRm9udCA9IG5ldyBGb250KCJUaW1lc1JvbWFuIixGb250LkJPTEQsMTgpOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgRm9udCBsYWJlbEZvbnQgPSBuZXcgRm9udCgiVGltZXNSb21hbiIsRm9udC5CT0xELDE0KTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIEZvbnQgY2hvaWNlRm9udCA9IG5ldyBGb250KCJIZWx2ZXRpY2EiLEZvbnQuQk9MRCwxMik7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBGb250IGVkaXRGb250ID0gbmV3IEZvbnQoIkhlbHZldGljYSIsRm9udC5QTEFJTiwxNCk7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBGb250IGNyZWRpdEZvbnQgPSBuZXcgRm9udCgiSGVsdmV0aWNhIixGb250LlBMQUlOLDEwKTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIEZvbnQgbnVtYmVyRm9udCA9IG5ldyBGb250KCJzYW5zc2VyaWYiLCBGb250LlBMQUlOLCAxNCk7CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIENvbG9yIGJnQ29sb3IgPSBDb2xvci5saWdodEdyYXk7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBDb2xvciBjaG9pY2VDb2xvciA9IENvbG9yLndoaXRlOworCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0MSA9CisgICAgICAgICJDb3B5cmlnaHQgKEMpIElCTSBDb3JwIGFuZCBvdGhlcnMuIDE5OTcgLSAyMDAyIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworCisgICAgLyoqCisgICAgUHJvdmlkZXMgZWFzeSB3YXkgdG8gdXNlIGJhc2ljIGZ1bmN0aW9ucyBvZiBHcmlkQmFnTGF5b3V0LCB3aXRob3V0CisgICAgdGhlIGNvbXBsaWNhdGlvbnMuIEFmdGVyIGJ1aWxkaW5nIGEgcGFuZWwsIGFuZCBpbnNlcnRpbmcgYWxsIHRoZQorICAgICogc3ViY29tcG9uZW50cywgY2FsbCB0aGlzIHRvIGxheSBpdCBvdXQgaW4gdGhlIGRlc2lyZWQgbnVtYmVyIG9mIGNvbHVtbnMuCisgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgZml4R3JpZChDb250YWluZXIgY29udCwgaW50IGNvbHVtbnMpIHsKKyAgICAgICAgR3JpZEJhZ0xheW91dCBncmlkYmFnID0gbmV3IEdyaWRCYWdMYXlvdXQoKTsKKyAgICAgICAgY29udC5zZXRMYXlvdXQoZ3JpZGJhZyk7CisKKyAgICAgICAgR3JpZEJhZ0NvbnN0cmFpbnRzIGMgPSBuZXcgR3JpZEJhZ0NvbnN0cmFpbnRzKCk7CisgICAgICAgIGMuZmlsbCA9IEdyaWRCYWdDb25zdHJhaW50cy5WRVJUSUNBTDsKKyAgICAgICAgYy53ZWlnaHR4ID0gMS4wOworICAgICAgICBjLmluc2V0cyA9IG5ldyBJbnNldHMoMiwyLDIsMik7CisKKyAgICAgICAgQ29tcG9uZW50W10gY29tcG9uZW50cyA9IGNvbnQuZ2V0Q29tcG9uZW50cygpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvbXBvbmVudHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIC8vIG5vdCB1c2VkIGludCBjb2xOdW1iZXIgPSBpJWNvbHVtbnM7CisgICAgICAgICAgICBjLmdyaWR3aWR0aCA9IDE7ICAgIC8vIGRlZmF1bHQKKyAgICAgICAgICAgIGlmICgoaSVjb2x1bW5zKSA9PSBjb2x1bW5zIC0gMSkKKyAgICAgICAgICAgICAgICBjLmdyaWR3aWR0aCA9IEdyaWRCYWdDb25zdHJhaW50cy5SRU1BSU5ERVI7ICAgIC8vIGxhc3QgaW4gZ3JpZAorICAgICAgICAgICAgaWYgKGNvbXBvbmVudHNbaV0gaW5zdGFuY2VvZiBMYWJlbCkgeworICAgICAgICAgICAgICAgIHN3aXRjaCAoKChMYWJlbCljb21wb25lbnRzW2ldKS5nZXRBbGlnbm1lbnQoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgTGFiZWwuQ0VOVEVSOiBjLmFuY2hvciA9IEdyaWRCYWdDb25zdHJhaW50cy5DRU5URVI7IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgTGFiZWwuTEVGVDogYy5hbmNob3IgPSBHcmlkQmFnQ29uc3RyYWludHMuV0VTVDsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBMYWJlbC5SSUdIVDogYy5hbmNob3IgPSBHcmlkQmFnQ29uc3RyYWludHMuRUFTVDsgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZ3JpZGJhZy5zZXRDb25zdHJhaW50cyhjb21wb25lbnRzW2ldLCBjKTsKKyAgICAgICAgfQorCisgICAgfQorCisgICAgLyoqCisgICAgUHJvdmlkZXMgZWFzeSB3YXkgdG8gY2hhbmdlIHRoZSBzcGFjaW5nIGFyb3VuZCBhbiBvYmplY3QgaW4gYSBHcmlkQmFnTGF5b3V0LgorICAgIENhbGwgQUZURVIgZml4R3JpZEJhZywgcGFzc2luZyBpbiB0aGUgY29udGFpbmVyLCB0aGUgY29tcG9uZW50LCBhbmQgdGhlCisgICAgbmV3IGluc2V0cy4KKyAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBzZXRJbnNldHMoQ29udGFpbmVyIGNvbnQsIENvbXBvbmVudCBjb21wLCBJbnNldHMgaW5zZXRzKSB7CisgICAgICAgIEdyaWRCYWdMYXlvdXQgZ2JsID0gKEdyaWRCYWdMYXlvdXQpY29udC5nZXRMYXlvdXQoKTsKKyAgICAgICAgR3JpZEJhZ0NvbnN0cmFpbnRzIGcgPSBnYmwuZ2V0Q29uc3RyYWludHMoY29tcCk7CisgICAgICAgIGcuaW5zZXRzID0gaW5zZXRzOworICAgICAgICBnYmwuc2V0Q29uc3RyYWludHMoY29tcCxnKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIFBhbmVsIGNyZWF0ZVNwYWNlcigpIHsKKyAgICAgICAgUGFuZWwgc3BhY2VyID0gbmV3IFBhbmVsKCk7CisgICAgICAgIHNwYWNlci5zZXRMYXlvdXQobnVsbCk7CisgICAgICAgIHNwYWNlci5zZXRTaXplKDEwMDAsIDEpOworICAgICAgICByZXR1cm4gc3BhY2VyOworICAgIH0KKworICAgIC8vIHRvIGF2b2lkIGdvb2Z5IHVwZGF0ZXMgYW5kIG1pc3BsYWNlZCBjdXJzb3JzCisgICAgcHVibGljIHN0YXRpYyB2b2lkIHNldFRleHQoVGV4dENvbXBvbmVudCBhcmVhLCBTdHJpbmcgbmV3VGV4dCkgeworICAgICAgICBTdHJpbmcgZm9vID0gYXJlYS5nZXRUZXh0KCk7CisgICAgICAgIGlmIChmb28uZXF1YWxzKG5ld1RleHQpKSByZXR1cm47CisgICAgICAgIGFyZWEuc2V0VGV4dChuZXdUZXh0KTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQ29tcGFyZXMgdHdvIGxvY2Fscy4gUmV0dXJuIHZhbHVlIGlzIG5lZ2F0aXZlCisgICAgICogaWYgdGhleSdyZSBkaWZmZXJlbnQsIGFuZCBtb3JlIHBvc2l0aXZlIHRoZSBtb3JlCisgICAgICogZmllbGRzIHRoYXQgbWF0Y2guCisgICAgICovCisgICAgIAorICAgIHB1YmxpYyBzdGF0aWMgaW50IGNvbXBhcmVMb2NhbGVzKExvY2FsZSBsMSwgTG9jYWxlIGwyKQorICAgIHsKKyAgICAgICAgaW50IHJlc3VsdCA9IC0xOworICAgICAgICAKKyAgICAgICAgaWYgKGwxLmdldExhbmd1YWdlKCkuZXF1YWxzKGwyLmdldExhbmd1YWdlKCkpKSB7CisgICAgICAgICAgICByZXN1bHQgKz0gMTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGwxLmdldENvdW50cnkoKS5lcXVhbHMobDIuZ2V0Q291bnRyeSgpKSkgeworICAgICAgICAgICAgICAgIHJlc3VsdCArPSAxOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChsMS5nZXRWYXJpYW50KCkuZXF1YWxzKGwyLmdldFZhcmlhbnQoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBHZXQgdGhlIEc3IGxvY2FsZSBsaXN0IGZvciBkZW1vcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIExvY2FsZVtdIGdldEc3TG9jYWxlcygpIHsKKyAgICAgICAgcmV0dXJuIGxvY2FsZUxpc3Q7CisgICAgfQorICAgIHByaXZhdGUgc3RhdGljIExvY2FsZVtdIGxvY2FsZUxpc3QgPSB7CisgICAgICAgIG5ldyBMb2NhbGUoIkRBIiwgIkRLIiwgIiIpLAorICAgICAgICBuZXcgTG9jYWxlKCJFTiIsICJVUyIsICIiKSwKKyAgICAgICAgbmV3IExvY2FsZSgiRU4iLCAiR0IiLCAiIiksCisgICAgICAgIG5ldyBMb2NhbGUoIkVOIiwgIkNBIiwgIiIpLAorICAgICAgICBuZXcgTG9jYWxlKCJGUiIsICJGUiIsICIiKSwKKyAgICAgICAgbmV3IExvY2FsZSgiRlIiLCAiQ0EiLCAiIiksCisgICAgICAgIG5ldyBMb2NhbGUoIkRFIiwgIkRFIiwgIiIpLAorICAgICAgICBuZXcgTG9jYWxlKCJJVCIsICJJVCIsICIiKSwKKyAgICAvL25ldyBMb2NhbGUoIkpBIiwgIkpQIiwgIiIpLAorICAgIH07Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vaW1wbC9EdW1iVGV4dENvbXBvbmVudC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL2ltcGwvRHVtYlRleHRDb21wb25lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4yZmM0MTg0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL2ltcGwvRHVtYlRleHRDb21wb25lbnQuamF2YQpAQCAtMCwwICsxLDgwNCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL2ltcGwvRHVtYlRleHRDb21wb25lbnQuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMy8xOSAwMDoxNzowMSAkIAorICogJFJldmlzaW9uOiAxLjYgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi5kZW1vLmltcGw7CitpbXBvcnQgamF2YS5hd3QuKjsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC4qOworaW1wb3J0IGphdmEudGV4dC4qOworaW1wb3J0IGphdmEuYXd0LmRhdGF0cmFuc2Zlci4qOworCisvLyBMSVU6IENoYW5nZWQgZnJvbSBmaW5hbCB0byBub24tZmluYWwKK3B1YmxpYyBjbGFzcyBEdW1iVGV4dENvbXBvbmVudCBleHRlbmRzIENhbnZhcworICBpbXBsZW1lbnRzIEtleUxpc3RlbmVyLCBNb3VzZUxpc3RlbmVyLCBNb3VzZU1vdGlvbkxpc3RlbmVyLCBGb2N1c0xpc3RlbmVyCisgIHsKKyAgICBwcml2YXRlIHRyYW5zaWVudCBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9CisgICAgICAiQ29weXJpZ2h0IFx1MDBBOSAxOTk4LCBNYXJrIERhdmlzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiI7CisgICAgcHJpdmF0ZSB0cmFuc2llbnQgc3RhdGljIGJvb2xlYW4gREVCVUcgPSBmYWxzZTsKKworICAgIHByaXZhdGUgU3RyaW5nIGNvbnRlbnRzID0gIiI7CisgICAgcHJpdmF0ZSBTZWxlY3Rpb24gc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbigpOworICAgIHByaXZhdGUgaW50IGFjdGl2ZVN0YXJ0ID0gLTE7CisgICAgcHJpdmF0ZSBib29sZWFuIGVkaXRhYmxlID0gdHJ1ZTsKKworICAgIHByaXZhdGUgdHJhbnNpZW50IFNlbGVjdGlvbiB0ZW1wU2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbigpOworICAgIHByaXZhdGUgdHJhbnNpZW50IGJvb2xlYW4gZm9jdXM7CisgICAgcHJpdmF0ZSB0cmFuc2llbnQgQnJlYWtJdGVyYXRvciBsaW5lQnJlYWtlciA9IEJyZWFrSXRlcmF0b3IuZ2V0TGluZUluc3RhbmNlKCk7CisgICAgcHJpdmF0ZSB0cmFuc2llbnQgQnJlYWtJdGVyYXRvciB3b3JkQnJlYWtlciA9IEJyZWFrSXRlcmF0b3IuZ2V0V29yZEluc3RhbmNlKCk7CisgICAgcHJpdmF0ZSB0cmFuc2llbnQgQnJlYWtJdGVyYXRvciBjaGFyQnJlYWtlciA9IEJyZWFrSXRlcmF0b3IuZ2V0Q2hhcmFjdGVySW5zdGFuY2UoKTsKKyAgICBwcml2YXRlIHRyYW5zaWVudCBpbnQgbGluZUFzY2VudDsKKyAgICBwcml2YXRlIHRyYW5zaWVudCBpbnQgbGluZUhlaWdodDsKKyAgICBwcml2YXRlIHRyYW5zaWVudCBpbnQgbGluZUxlYWRpbmc7CisgICAgcHJpdmF0ZSB0cmFuc2llbnQgaW50IGxhc3RIZWlnaHQgPSAxMDsKKyAgICBwcml2YXRlIHRyYW5zaWVudCBpbnQgbGFzdFdpZHRoID0gNTA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1BWF9MSU5FUyA9IDIwMDsgLy8gTElVOiBVc2Ugc3ltYm9saWMgbmFtZQorICAgIHByaXZhdGUgdHJhbnNpZW50IGludFtdIGxpbmVTdGFydHMgPSBuZXcgaW50W01BWF9MSU5FU107IC8vIExJVQorICAgIHByaXZhdGUgdHJhbnNpZW50IGludCBsaW5lQ291bnQgPSAxOworCisgICAgcHJpdmF0ZSB0cmFuc2llbnQgYm9vbGVhbiB2YWxpZCA9IGZhbHNlOworICAgIHByaXZhdGUgdHJhbnNpZW50IEZvbnRNZXRyaWNzIGZtOworICAgIHByaXZhdGUgdHJhbnNpZW50IGJvb2xlYW4gcmVkb0xpbmVzID0gdHJ1ZTsKKyAgICBwcml2YXRlIHRyYW5zaWVudCBib29sZWFuIGRvdWJsZUNsaWNrID0gZmFsc2U7CisgICAgcHJpdmF0ZSB0cmFuc2llbnQgVGV4dExpc3RlbmVyIHRleHRMaXN0ZW5lcjsKKyAgICBwcml2YXRlIHRyYW5zaWVudCBBY3Rpb25MaXN0ZW5lciBzZWxlY3Rpb25MaXN0ZW5lcjsKKyAgICBwcml2YXRlIHRyYW5zaWVudCBJbWFnZSBjYWNoZUltYWdlOworICAgIHByaXZhdGUgdHJhbnNpZW50IERpbWVuc2lvbiBteVNpemU7CisgICAgcHJpdmF0ZSB0cmFuc2llbnQgaW50IHhJbnNldCA9IDU7CisgICAgcHJpdmF0ZSB0cmFuc2llbnQgaW50IHlJbnNldCA9IDU7CisgICAgcHJpdmF0ZSB0cmFuc2llbnQgUG9pbnQgc3RhcnRQb2ludCA9IG5ldyBQb2ludCgpOworICAgIHByaXZhdGUgdHJhbnNpZW50IFBvaW50IGVuZFBvaW50ID0gbmV3IFBvaW50KCk7CisgICAgcHJpdmF0ZSB0cmFuc2llbnQgUG9pbnQgY2FyZXRQb2ludCA9IG5ldyBQb2ludCgpOworICAgIHByaXZhdGUgdHJhbnNpZW50IFBvaW50IGFjdGl2ZVBvaW50ID0gbmV3IFBvaW50KCk7CisgICAgCisgICAgLy9wcml2YXRlIHRyYW5zaWVudCBzdGF0aWMgU3RyaW5nIGNsaXBCb2FyZDsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgQ1IgPSAnXDAxNSc7IC8vIExJVQorCisgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgIHB1YmxpYyBEdW1iVGV4dENvbXBvbmVudCgpIHsKKyAgICAgICAgYWRkTW91c2VMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgYWRkTW91c2VNb3Rpb25MaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgYWRkS2V5TGlzdGVuZXIodGhpcyk7CisgICAgICAgIGFkZEZvY3VzTGlzdGVuZXIodGhpcyk7CisgICAgICAgIHNldEN1cnNvcihDdXJzb3IuZ2V0UHJlZGVmaW5lZEN1cnNvcihDdXJzb3IuVEVYVF9DVVJTT1IpKTsKKworICAgIH0KKworLy8gPT09PT09PT09PT09PT09PSBFdmVudHMgPT09PT09PT09PT09PT09PT09PT0KKworICAgIHB1YmxpYyBib29sZWFuIGlzRm9jdXNUcmF2ZXJzYWJsZSgpIHsgcmV0dXJuIHRydWU7IH0KKworCXB1YmxpYyB2b2lkIGFkZEFjdGlvbkxpc3RlbmVyKEFjdGlvbkxpc3RlbmVyIGwpIHsKKyAgICAgICAgc2VsZWN0aW9uTGlzdGVuZXIgPSBBV1RFdmVudE11bHRpY2FzdGVyLmFkZChzZWxlY3Rpb25MaXN0ZW5lciwgbCk7CisJfQorCisJcHVibGljIHZvaWQgcmVtb3ZlQWN0aW9uTGlzdGVuZXIoQWN0aW9uTGlzdGVuZXIgbCkgeworICAgICAgICBzZWxlY3Rpb25MaXN0ZW5lciA9IEFXVEV2ZW50TXVsdGljYXN0ZXIucmVtb3ZlKHNlbGVjdGlvbkxpc3RlbmVyLCBsKTsKKwl9CisKKwlwdWJsaWMgdm9pZCBhZGRUZXh0TGlzdGVuZXIoVGV4dExpc3RlbmVyIGwpIHsKKyAgICAgICAgdGV4dExpc3RlbmVyID0gQVdURXZlbnRNdWx0aWNhc3Rlci5hZGQodGV4dExpc3RlbmVyLCBsKTsKKwl9CisKKwlwdWJsaWMgdm9pZCByZW1vdmVUZXh0TGlzdGVuZXIoVGV4dExpc3RlbmVyIGwpIHsKKyAgICAgICAgdGV4dExpc3RlbmVyID0gQVdURXZlbnRNdWx0aWNhc3Rlci5yZW1vdmUodGV4dExpc3RlbmVyLCBsKTsKKwl9CisKKyAgICBwcml2YXRlIHRyYW5zaWVudCBib29sZWFuIHByZXNzZWQ7CisKKwlwdWJsaWMgdm9pZCBtb3VzZVByZXNzZWQoTW91c2VFdmVudCBlKSB7CisJICAgIGlmIChERUJVRykgU3lzdGVtLm91dC5wcmludGxuKCJtb3VzZVByZXNzZWQiKTsKKwkgICAgaWYgKHByZXNzZWQpIHsKKwkgICAgICAgIHNlbGVjdChlLGZhbHNlKTsKKwkgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRvdWJsZUNsaWNrID0gZS5nZXRDbGlja0NvdW50KCkgPiAxOworICAgICAgICAgICAgcmVxdWVzdEZvY3VzKCk7CisgICAgICAgICAgICBzZWxlY3QoZSwgdHJ1ZSk7CisgICAgCSAgICBwcmVzc2VkID0gdHJ1ZTsKKwkgICAgfQorCX0KKworCXB1YmxpYyB2b2lkIG1vdXNlRHJhZ2dlZChNb3VzZUV2ZW50IGUpIHsKKwkgICAgaWYgKERFQlVHKSBTeXN0ZW0ub3V0LnByaW50bG4oIm1vdXNlRHJhZ2dlZCIpOworCSAgICBzZWxlY3QoZSwgZmFsc2UpOworCX0KKworCXB1YmxpYyB2b2lkIG1vdXNlUmVsZWFzZWQoTW91c2VFdmVudCBlKSB7CisJICAgIGlmIChERUJVRykgU3lzdGVtLm91dC5wcmludGxuKCJtb3VzZVJlbGVhc2VkIik7CisJICAgIHByZXNzZWQgPSBmYWxzZTsKKwl9CisKKwlwdWJsaWMgdm9pZCBtb3VzZUVudGVyZWQoTW91c2VFdmVudCBlKSB7CisJICAgIC8vaWYgKHByZXNzZWQpIHNlbGVjdChlLCBmYWxzZSk7CisJfQorCisJcHVibGljIHZvaWQgbW91c2VFeGl0ZWQoTW91c2VFdmVudCBlKXsKKwkgICAgLy9pZiAocHJlc3NlZCkgc2VsZWN0KGUsIGZhbHNlKTsKKwl9CisKKwlwdWJsaWMgdm9pZCBtb3VzZUNsaWNrZWQoTW91c2VFdmVudCBlKSB7fQorCXB1YmxpYyB2b2lkIG1vdXNlTW92ZWQoTW91c2VFdmVudCBlKSB7fQorCisKKyAgICBwdWJsaWMgdm9pZCBmb2N1c0dhaW5lZChGb2N1c0V2ZW50IGUpIHsKKwkgICAgaWYgKERFQlVHKSBTeXN0ZW0ub3V0LnByaW50bG4oImZvY3VzR2FpbmVkIik7CisJICAgIGZvY3VzID0gdHJ1ZTsKKwkgICAgdmFsaWQgPSBmYWxzZTsKKwkgICAgcmVwYWludCgxNik7CisJfQorCXB1YmxpYyB2b2lkIGZvY3VzTG9zdChGb2N1c0V2ZW50IGUpIHsKKwkgICAgaWYgKERFQlVHKSBTeXN0ZW0ub3V0LnByaW50bG4oImZvY3VzTG9zdCIpOworCSAgICBmb2N1cyA9IGZhbHNlOworCSAgICB2YWxpZCA9IGZhbHNlOworCSAgICByZXBhaW50KDE2KTsKKwl9CisKKyAgICBwdWJsaWMgdm9pZCBzZWxlY3QoTW91c2VFdmVudCBlLCBib29sZWFuIGZpcnN0KSB7CisgICAgICAgIHNldEtleVN0YXJ0KC0xKTsKKwkgICAgcG9pbnQyT2Zmc2V0KGUuZ2V0UG9pbnQoKSwgdGVtcFNlbGVjdGlvbik7CisgICAgICAgIGlmIChmaXJzdCkgeworICAgICAgICAgICAgaWYgKChlLmdldE1vZGlmaWVycygpICYgSW5wdXRFdmVudC5TSElGVF9NQVNLKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgdGVtcFNlbGVjdGlvbi5hbmNob3IgPSB0ZW1wU2VsZWN0aW9uLmNhcmV0OworICAgICAgICAgICAgfQorCSAgICB9CisJICAgIC8vIGZpeCB3b3JkcworCSAgICBpZiAoZG91YmxlQ2xpY2spIHsKKwkgICAgICAgIHRlbXBTZWxlY3Rpb24uZXhwYW5kKHdvcmRCcmVha2VyKTsKKwkgICAgfQorCSAgICBzZWxlY3QodGVtcFNlbGVjdGlvbik7CisgICAgfQorICAgIAorCXB1YmxpYyB2b2lkIGtleVByZXNzZWQoS2V5RXZlbnQgZSkgeworICAgICAgICBpbnQgY29kZSA9IGUuZ2V0S2V5Q29kZSgpOworICAgICAgICBpZiAoREVCVUcpIFN5c3RlbS5vdXQucHJpbnRsbigia2V5UHJlc3NlZCAiCisgICAgICAgICAgKyBoZXgoKGNoYXIpY29kZSkgKyAiLCAiICsgaGV4KChjaGFyKWUuZ2V0TW9kaWZpZXJzKCkpKTsKKyAgICAgICAgaW50IHN0YXJ0ID0gc2VsZWN0aW9uLmdldFN0YXJ0KCk7CisgICAgICAgIGludCBlbmQgPSBzZWxlY3Rpb24uZ2V0RW5kKCk7CisgICAgICAgIGJvb2xlYW4gc2hpZnQgPSAoZS5nZXRNb2RpZmllcnMoKSAmIEtleUV2ZW50LlNISUZUX01BU0spICE9IDA7CisgICAgICAgIGJvb2xlYW4gY3RybCA9IChlLmdldE1vZGlmaWVycygpICYgS2V5RXZlbnQuQ1RSTF9NQVNLKSAhPSAwOworICAgICAgICAgICAgICAgIAorICAgICAgICBzd2l0Y2ggKGNvZGUpIHsKKyAgICAgICAgY2FzZSBLZXlFdmVudC5WS19ROgorICAgICAgICAgICAgaWYgKCFjdHJsIHx8ICFlZGl0YWJsZSkgYnJlYWs7CisgICAgICAgICAgICBzZXRLZXlTdGFydCgtMSk7CisgICAgICAgICAgICBmaXhIZXgoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEtleUV2ZW50LlZLX1Y6CisgICAgICAgICAgICBpZiAoIWN0cmwpIGJyZWFrOworICAgICAgICAgICAgaWYgKCFlZGl0YWJsZSkgeworICAgICAgICAgICAgICAgIHRoaXMuZ2V0VG9vbGtpdCgpLmJlZXAoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcGFzdGUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEtleUV2ZW50LlZLX0M6CisgICAgICAgICAgICBpZiAoIWN0cmwpIGJyZWFrOworICAgICAgICAgICAgY29weSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgS2V5RXZlbnQuVktfWDoKKyAgICAgICAgICAgIGlmICghY3RybCkgYnJlYWs7CisgICAgICAgICAgICBpZiAoIWVkaXRhYmxlKSB7CisgICAgICAgICAgICAgICAgdGhpcy5nZXRUb29sa2l0KCkuYmVlcCgpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBjb3B5KCk7CisgICAgICAgICAgICAgICAgaW5zZXJ0VGV4dCgiIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBLZXlFdmVudC5WS19BOgorICAgICAgICAgICAgaWYgKCFjdHJsKSBicmVhazsKKyAgICAgICAgICAgIHNldEtleVN0YXJ0KC0xKTsKKyAgICAgICAgICAgIHNlbGVjdChJbnRlZ2VyLk1BWF9WQUxVRSwgMCwgZmFsc2UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgS2V5RXZlbnQuVktfUklHSFQ6CisgICAgICAgICAgICBzZXRLZXlTdGFydCgtMSk7CisgICAgICAgICAgICB0ZW1wU2VsZWN0aW9uLnNldChzZWxlY3Rpb24pOworICAgICAgICAgICAgdGVtcFNlbGVjdGlvbi5uZXh0Qm91bmQoY3RybCA/IHdvcmRCcmVha2VyIDogY2hhckJyZWFrZXIsICsxLCBzaGlmdCk7CisgICAgICAgICAgICBzZWxlY3QodGVtcFNlbGVjdGlvbik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBLZXlFdmVudC5WS19MRUZUOgorICAgICAgICAgICAgc2V0S2V5U3RhcnQoLTEpOworICAgICAgICAgICAgdGVtcFNlbGVjdGlvbi5zZXQoc2VsZWN0aW9uKTsKKyAgICAgICAgICAgIHRlbXBTZWxlY3Rpb24ubmV4dEJvdW5kKGN0cmwgPyB3b3JkQnJlYWtlciA6IGNoYXJCcmVha2VyLCAtMSwgc2hpZnQpOworICAgICAgICAgICAgc2VsZWN0KHRlbXBTZWxlY3Rpb24pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgS2V5RXZlbnQuVktfVVA6IC8vIExJVTogQWRkIHN1cHBvcnQgZm9yIHVwIGFycm93CisgICAgICAgICAgICBzZXRLZXlTdGFydCgtMSk7CisgICAgICAgICAgICB0ZW1wU2VsZWN0aW9uLnNldChzZWxlY3Rpb24pOworICAgICAgICAgICAgdGVtcFNlbGVjdGlvbi5jYXJldCA9IGxpbmVEZWx0YSh0ZW1wU2VsZWN0aW9uLmNhcmV0LCAtMSk7CisgICAgICAgICAgICBpZiAoIXNoaWZ0KSB7CisgICAgICAgICAgICAgICAgdGVtcFNlbGVjdGlvbi5hbmNob3IgPSB0ZW1wU2VsZWN0aW9uLmNhcmV0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgc2VsZWN0KHRlbXBTZWxlY3Rpb24pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgS2V5RXZlbnQuVktfRE9XTjogLy8gTElVOiBBZGQgc3VwcG9ydCBmb3IgZG93biBhcnJvdworICAgICAgICAgICAgc2V0S2V5U3RhcnQoLTEpOworICAgICAgICAgICAgdGVtcFNlbGVjdGlvbi5zZXQoc2VsZWN0aW9uKTsKKyAgICAgICAgICAgIHRlbXBTZWxlY3Rpb24uY2FyZXQgPSBsaW5lRGVsdGEodGVtcFNlbGVjdGlvbi5jYXJldCwgKzEpOworICAgICAgICAgICAgaWYgKCFzaGlmdCkgeworICAgICAgICAgICAgICAgIHRlbXBTZWxlY3Rpb24uYW5jaG9yID0gdGVtcFNlbGVjdGlvbi5jYXJldDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNlbGVjdCh0ZW1wU2VsZWN0aW9uKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEtleUV2ZW50LlZLX0RFTEVURTogLy8gTElVOiBBZGQgZGVsZXRlIGtleSBzdXBwb3J0CisgICAgICAgICAgICBpZiAoIWVkaXRhYmxlKSBicmVhazsKKyAgICAgICAgICAgIHNldEtleVN0YXJ0KC0xKTsKKyAgICAgICAgICAgIGlmIChjb250ZW50cy5sZW5ndGgoKSA9PSAwKSBicmVhazsKKyAgICAgICAgICAgIHN0YXJ0ID0gc2VsZWN0aW9uLmdldFN0YXJ0KCk7CisgICAgICAgICAgICBlbmQgPSBzZWxlY3Rpb24uZ2V0RW5kKCk7CisgICAgICAgICAgICBpZiAoc3RhcnQgPT0gZW5kKSB7CisgICAgICAgICAgICAgICAgKytlbmQ7CisgICAgICAgICAgICAgICAgaWYgKGVuZCA+IGNvbnRlbnRzLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGdldFRvb2xraXQoKS5iZWVwKCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXBsYWNlUmFuZ2UoIiIsIHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGNvcHkoKSB7CisgICAgICAgIENsaXBib2FyZCBjYiA9IHRoaXMuZ2V0VG9vbGtpdCgpLmdldFN5c3RlbUNsaXBib2FyZCgpOworICAgICAgICBTdHJpbmdTZWxlY3Rpb24gc3MgPSBuZXcgU3RyaW5nU2VsZWN0aW9uKAorICAgICAgICAgICAgY29udGVudHMuc3Vic3RyaW5nKHNlbGVjdGlvbi5nZXRTdGFydCgpLCBzZWxlY3Rpb24uZ2V0RW5kKCkpKTsKKyAgICAgICAgY2Iuc2V0Q29udGVudHMoc3MsIHNzKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBwYXN0ZSAoKSB7CisgICAgICAgIENsaXBib2FyZCBjYiA9IHRoaXMuZ2V0VG9vbGtpdCgpLmdldFN5c3RlbUNsaXBib2FyZCgpOworICAgICAgICBUcmFuc2ZlcmFibGUgdCA9IGNiLmdldENvbnRlbnRzKHRoaXMpOworICAgICAgICBpZiAodCA9PSBudWxsKSB7CisgICAgICAgICAgICB0aGlzLmdldFRvb2xraXQoKS5iZWVwKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFN0cmluZyB0ZW1wID0gKFN0cmluZykgdC5nZXRUcmFuc2ZlckRhdGEoRGF0YUZsYXZvci5zdHJpbmdGbGF2b3IpOworICAgICAgICAgICAgaW5zZXJ0VGV4dCh0ZW1wKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHRoaXMuZ2V0VG9vbGtpdCgpLmJlZXAoKTsKKyAgICAgICAgfSAgICAgICAgICAgIAorICAgIH0KKworICAgIC8qKgorICAgICAqIExJVTogR2l2ZW4gYW4gb2Zmc2V0IGludG8gY29udGVudHMsIG1vdmVzIHVwIG9yIGRvd24gYnkgbGluZXMsCisgICAgICogYWNjb3JkaW5nIHRvIGxpbmVTdGFydHNbXS4KKyAgICAgKiBAcGFyYW0gb2ZmIHRoZSBvZmZzZXQgaW50byBjb250ZW50cworICAgICAqIEBwYXJhbSBkZWx0YSBob3cgbWFueSBsaW5lcyB0byBtb3ZlIHVwICg8IDApIG9yIGRvd24gKD4gMCkKKyAgICAgKiBAcmV0dXJuIHRoZSBuZXcgb2Zmc2V0IGludG8gY29udGVudHMKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBsaW5lRGVsdGEoaW50IG9mZiwgaW50IGRlbHRhKSB7CisgICAgICAgIGludCBsaW5lID0gZmluZExpbmUob2ZmLCBmYWxzZSk7CisgICAgICAgIGludCBwb3NJbkxpbmUgPSBvZmYgLSBsaW5lU3RhcnRzW2xpbmVdOworICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oIm9mZj0iICsgb2ZmICsgIiBhdCAiICsgbGluZSArICI6IiArIHBvc0luTGluZSk7CisgICAgICAgIGxpbmUgKz0gZGVsdGE7CisgICAgICAgIGlmIChsaW5lIDwgMCkgeworICAgICAgICAgICAgbGluZSA9IHBvc0luTGluZSA9IDA7CisgICAgICAgIH0gZWxzZSBpZiAobGluZSA+PSBsaW5lQ291bnQpIHsKKyAgICAgICAgICAgIHJldHVybiBjb250ZW50cy5sZW5ndGgoKTsKKyAgICAgICAgfQorICAgICAgICBvZmYgPSBsaW5lU3RhcnRzW2xpbmVdICsgcG9zSW5MaW5lOworICAgICAgICBpZiAob2ZmID49IGxpbmVTdGFydHNbbGluZSsxXSkgeworICAgICAgICAgICAgb2ZmID0gbGluZVN0YXJ0c1tsaW5lKzFdIC0gMTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gb2ZmOworICAgIH0KKyAgICAgIAorCXB1YmxpYyB2b2lkIGtleVJlbGVhc2VkKEtleUV2ZW50IGUpIHsKKyAgICAgICAgaW50IGNvZGUgPSBlLmdldEtleUNvZGUoKTsKKyAgICAgICAgaWYgKERFQlVHKSBTeXN0ZW0ub3V0LnByaW50bG4oImtleVJlbGVhc2VkICIKKyAgICAgICAgICArIGhleCgoY2hhciljb2RlKSArICIsICIgKyBoZXgoKGNoYXIpZS5nZXRNb2RpZmllcnMoKSkpOworICAgIH0KKworCXB1YmxpYyB2b2lkIGtleVR5cGVkKEtleUV2ZW50IGUpIHsKKyAgICAgICAgY2hhciBjaCA9IGUuZ2V0S2V5Q2hhcigpOworICAgICAgICBpZiAoREVCVUcpIFN5c3RlbS5vdXQucHJpbnRsbigia2V5VHlwZWQgIgorICAgICAgICAgICsgaGV4KChjaGFyKWNoKSArICIsICIgKyBoZXgoKGNoYXIpZS5nZXRNb2RpZmllcnMoKSkpOworICAgICAgICBpZiAoKGUuZ2V0TW9kaWZpZXJzKCkgJiBLZXlFdmVudC5DVFJMX01BU0spICE9IDApIHJldHVybjsKKyAgICAgICAgaW50IHN0YXJ0LCBlbmQ7CisgICAgICAgIHN3aXRjaCAoY2gpIHsKKyAgICAgICAgY2FzZSBLZXlFdmVudC5DSEFSX1VOREVGSU5FRDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEtleUV2ZW50LlZLX0JBQ0tfU1BBQ0U6CisgICAgICAgICAgICAvL3NldEtleVN0YXJ0KC0xKTsKKyAgICAgICAgICAgIGlmICghZWRpdGFibGUpIGJyZWFrOworICAgICAgICAgICAgaWYgKGNvbnRlbnRzLmxlbmd0aCgpID09IDApIGJyZWFrOworICAgICAgICAgICAgc3RhcnQgPSBzZWxlY3Rpb24uZ2V0U3RhcnQoKTsKKyAgICAgICAgICAgIGVuZCA9IHNlbGVjdGlvbi5nZXRFbmQoKTsKKyAgICAgICAgICAgIGlmIChzdGFydCA9PSBlbmQpIHsKKyAgICAgICAgICAgICAgICAtLXN0YXJ0OworICAgICAgICAgICAgICAgIGlmIChzdGFydCA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgZ2V0VG9vbGtpdCgpLmJlZXAoKTsgLy8gTElVOiBBZGQgYXVkaW8gZmVlZGJhY2sgb2YgTk9QCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXBsYWNlUmFuZ2UoIiIsIHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgYnJlYWs7ICAgICAgICAKKyAgICAgICAgY2FzZSBLZXlFdmVudC5WS19ERUxFVEU6CisgICAgICAgICAgICAvL3NldEtleVN0YXJ0KC0xKTsKKyAgICAgICAgICAgIGlmICghZWRpdGFibGUpIGJyZWFrOworICAgICAgICAgICAgaWYgKGNvbnRlbnRzLmxlbmd0aCgpID09IDApIGJyZWFrOworICAgICAgICAgICAgc3RhcnQgPSBzZWxlY3Rpb24uZ2V0U3RhcnQoKTsKKyAgICAgICAgICAgIGVuZCA9IHNlbGVjdGlvbi5nZXRFbmQoKTsKKyAgICAgICAgICAgIGlmIChzdGFydCA9PSBlbmQpIHsKKyAgICAgICAgICAgICAgICArK2VuZDsKKyAgICAgICAgICAgICAgICBpZiAoZW5kID4gY29udGVudHMubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZ2V0VG9vbGtpdCgpLmJlZXAoKTsgLy8gTElVOiBBZGQgYXVkaW8gZmVlZGJhY2sgb2YgTk9QCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXBsYWNlUmFuZ2UoIiIsIHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBpZiAoIWVkaXRhYmxlKSBicmVhazsKKyAgICAgICAgICAgIC8vIExJVTogRGlzcGF0Y2ggdG8gc3ViY2xhc3MgQVBJCisgICAgICAgICAgICBoYW5kbGVLZXlUeXBlZChlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gTElVOiBTdWJjbGFzcyBBUEkgZm9yIGhhbmRsaW5nIG9mIGtleSB0eXBpbmcKKyAgICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVLZXlUeXBlZChLZXlFdmVudCBlKSB7CisgICAgICAgIGluc2VydFRleHQoU3RyaW5nLnZhbHVlT2YoZS5nZXRLZXlDaGFyKCkpKTsKKyAgICB9CisgICAgCisgICAgcHJvdGVjdGVkIHZvaWQgc2V0S2V5U3RhcnQoaW50IGtleVN0YXJ0KSB7CisgICAgICAgIGlmIChhY3RpdmVTdGFydCAhPSBrZXlTdGFydCkgeworICAgICAgICAgICAgYWN0aXZlU3RhcnQgPSBrZXlTdGFydDsKKyAgICAgICAgICAgIHJlcGFpbnQoMTApOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHByb3RlY3RlZCB2b2lkIHZhbGlkYXRlS2V5U3RhcnQoKSB7CisgICAgCWlmIChhY3RpdmVTdGFydCA+IHNlbGVjdGlvbi5nZXRTdGFydCgpKSB7CisgICAgICAgICAgICBhY3RpdmVTdGFydCA9IHNlbGVjdGlvbi5nZXRTdGFydCgpOworICAgICAgICAgICAgcmVwYWludCgxMCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHJvdGVjdGVkIGludCBnZXRLZXlTdGFydCgpIHsKKyAgICAgICAgcmV0dXJuIGFjdGl2ZVN0YXJ0OworICAgIH0KKworLy8gPT09PT09PT09PT09PT09PT09PT09IENvbnRyb2wgPT09PT09PT09PT09PT09PT09PT09PQorCisgICAgcHVibGljIHN5bmNocm9uaXplZCB2b2lkIHNldEVkaXRhYmxlKGJvb2xlYW4gYikgeworICAgICAgICBlZGl0YWJsZSA9IGI7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gaXNFZGl0YWJsZSgpIHsKKyAgICAgICAgcmV0dXJuIGVkaXRhYmxlOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNlbGVjdChTZWxlY3Rpb24gbmV3U2VsZWN0aW9uKSB7CisgICAgICAgIG5ld1NlbGVjdGlvbi5waW4oY29udGVudHMpOworICAgICAgICBpZiAoIXNlbGVjdGlvbi5lcXVhbHMobmV3U2VsZWN0aW9uKSkgeworICAgICAgICAgICAgc2VsZWN0aW9uLnNldChuZXdTZWxlY3Rpb24pOworICAgICAgICAgICAgaWYgKHNlbGVjdGlvbkxpc3RlbmVyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBzZWxlY3Rpb25MaXN0ZW5lci5hY3Rpb25QZXJmb3JtZWQoCisgICAgICAgICAgICAgICAgICBuZXcgQWN0aW9uRXZlbnQodGhpcywgQWN0aW9uRXZlbnQuQUNUSU9OX1BFUkZPUk1FRCwKKyAgICAgICAgICAgICAgICAgICAgIlNlbGVjdGlvbiBDaGFuZ2VkIiwgMCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVwYWludCgxMCk7CisgICAgICAgICAgICB2YWxpZCA9IGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2VsZWN0KGludCBzdGFydCwgaW50IGVuZCkgeworICAgICAgICBzZWxlY3Qoc3RhcnQsIGVuZCwgZmFsc2UpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNlbGVjdChpbnQgc3RhcnQsIGludCBlbmQsIGJvb2xlYW4gY2xpY2tBZnRlcikgeworICAgICAgICB0ZW1wU2VsZWN0aW9uLnNldChzdGFydCwgZW5kLCBjbGlja0FmdGVyKTsKKyAgICAgICAgc2VsZWN0KHRlbXBTZWxlY3Rpb24pOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgZ2V0U2VsZWN0aW9uU3RhcnQoKSB7CisgICAgICAgIHJldHVybiBzZWxlY3Rpb24uZ2V0U3RhcnQoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50IGdldFNlbGVjdGlvbkVuZCgpIHsKKyAgICAgICAgcmV0dXJuIHNlbGVjdGlvbi5nZXRFbmQoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRCb3VuZHMoaW50IHgsIGludCB5LCBpbnQgdywgaW50IGgpIHsKKyAgICAgICAgc3VwZXIuc2V0Qm91bmRzKHgseSx3LGgpOworICAgICAgICByZWRvTGluZXMgPSB0cnVlOworICAgIH0KKworICAgIHB1YmxpYyBEaW1lbnNpb24gZ2V0UHJlZmVycmVkU2l6ZSgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBEaW1lbnNpb24obGFzdFdpZHRoLGxhc3RIZWlnaHQpOworICAgIH0KKworICAgIHB1YmxpYyBEaW1lbnNpb24gZ2V0TWF4aW11bVNpemUoKSB7CisgICAgICAgIHJldHVybiBuZXcgRGltZW5zaW9uKGxhc3RXaWR0aCxsYXN0SGVpZ2h0KTsKKyAgICB9CisKKyAgICBwdWJsaWMgRGltZW5zaW9uIGdldE1pbmltdW1TaXplKCkgeworICAgICAgICByZXR1cm4gbmV3IERpbWVuc2lvbihsYXN0SGVpZ2h0LGxhc3RIZWlnaHQpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFRleHQoU3RyaW5nIHRleHQpIHsKKyAgICAgICAgc2V0VGV4dDIodGV4dCk7CisgICAgICAgIHNlbGVjdCh0ZW1wU2VsZWN0aW9uLnNldChzZWxlY3Rpb24pLnBpbihjb250ZW50cykpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFRleHQyKFN0cmluZyB0ZXh0KSB7CisgICAgICAgIGNvbnRlbnRzID0gdGV4dDsKKyAgICAgICAgY2hhckJyZWFrZXIuc2V0VGV4dCh0ZXh0KTsKKyAgICAgICAgd29yZEJyZWFrZXIuc2V0VGV4dCh0ZXh0KTsKKyAgICAgICAgbGluZUJyZWFrZXIuc2V0VGV4dCh0ZXh0KTsKKyAgICAgICAgcmVkb0xpbmVzID0gdHJ1ZTsKKyAgICAgICAgaWYgKHRleHRMaXN0ZW5lciAhPSBudWxsKQorICAgICAgICAgICAgdGV4dExpc3RlbmVyLnRleHRWYWx1ZUNoYW5nZWQoCisgICAgICAgICAgICAgIG5ldyBUZXh0RXZlbnQodGhpcywgVGV4dEV2ZW50LlRFWFRfVkFMVUVfQ0hBTkdFRCkpOworICAgICAgICByZXBhaW50KDE2KTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBpbnNlcnRUZXh0KFN0cmluZyB0ZXh0KSB7CisgICAgICAgIGlmIChhY3RpdmVTdGFydCA9PSAtMSkgYWN0aXZlU3RhcnQgPSBzZWxlY3Rpb24uZ2V0U3RhcnQoKTsKKyAgICAgICAgcmVwbGFjZVJhbmdlKHRleHQsIHNlbGVjdGlvbi5nZXRTdGFydCgpLCBzZWxlY3Rpb24uZ2V0RW5kKCkpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHJlcGxhY2VSYW5nZShTdHJpbmcgcywgaW50IHN0YXJ0LCBpbnQgZW5kKSB7CisgICAgICAgIHNldFRleHQyKGNvbnRlbnRzLnN1YnN0cmluZygwLHN0YXJ0KSArIHMKKyAgICAgICAgICArIGNvbnRlbnRzLnN1YnN0cmluZyhlbmQpKTsKKyAgICAgICAgc2VsZWN0KHRlbXBTZWxlY3Rpb24uc2V0KHNlbGVjdGlvbikuCisgICAgICAgICAgZml4QWZ0ZXJSZXBsYWNlKHN0YXJ0LCBlbmQsIHMubGVuZ3RoKCkpKTsKKyAgICAgICAgdmFsaWRhdGVLZXlTdGFydCgpOworICAgIH0KKworICAgIHB1YmxpYyBTdHJpbmcgZ2V0VGV4dCgpIHsKKyAgICAgICAgcmV0dXJuIGNvbnRlbnRzOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEZvbnQoRm9udCBmb250KSB7CisgICAgICAgIHN1cGVyLnNldEZvbnQoZm9udCk7CisgICAgICAgIHJlZG9MaW5lcyA9IHRydWU7CisgICAgICAgIHJlcGFpbnQoMTYpOworICAgIH0KKworICAgIC8vID09PT09PT09PT09PT09PT09PSBHcmFwaGljcyA9PT09PT09PT09PT09PT09PT09PT09CisKKyAgICBwdWJsaWMgdm9pZCB1cGRhdGUoR3JhcGhpY3MgZykgeworICAgICAgICBpZiAoREVCVUcpIFN5c3RlbS5vdXQucHJpbnRsbigidXBkYXRlIik7CisgICAgICAgIHBhaW50KGcpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHBhaW50KEdyYXBoaWNzIGcpIHsKKyAgICAgICAgbXlTaXplID0gZ2V0U2l6ZSgpOworICAgICAgICBpZiAoY2FjaGVJbWFnZSA9PSBudWxsCisgICAgICAgICAgfHwgY2FjaGVJbWFnZS5nZXRIZWlnaHQodGhpcykgIT0gbXlTaXplLmhlaWdodAorICAgICAgICAgIHx8IGNhY2hlSW1hZ2UuZ2V0V2lkdGgodGhpcykgIT0gbXlTaXplLndpZHRoKSB7CisgICAgICAgICAgICBjYWNoZUltYWdlID0gY3JlYXRlSW1hZ2UobXlTaXplLndpZHRoLCBteVNpemUuaGVpZ2h0KTsKKyAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCF2YWxpZCB8fCByZWRvTGluZXMpIHsKKyAgICAgICAgICAgIGlmIChERUJVRykgU3lzdGVtLm91dC5wcmludGxuKCJwYWludGluZyIpOworICAgICAgICAgICAgcGFpbnQyKGNhY2hlSW1hZ2UuZ2V0R3JhcGhpY3MoKSk7CisgICAgICAgICAgICB2YWxpZCA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgLy9nZXRUb29sa2l0KCkuc3luYygpOworICAgICAgICBpZiAoREVCVUcpIFN5c3RlbS5vdXQucHJpbnRsbigiY29weWluZyIpOworICAgICAgICBnLmRyYXdJbWFnZShjYWNoZUltYWdlLAorICAgICAgICAgIDAsIDAsIG15U2l6ZS53aWR0aCwgbXlTaXplLmhlaWdodCwKKyAgICAgICAgICAwLCAwLCBteVNpemUud2lkdGgsIG15U2l6ZS5oZWlnaHQsCisgICAgICAgICAgdGhpcyk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgcGFpbnQyKEdyYXBoaWNzIGcpIHsKKyAgICAgICAgZy5jbGVhclJlY3QoMCwgMCwgbXlTaXplLndpZHRoLCBteVNpemUuaGVpZ2h0KTsKKyAgICAgICAgaWYgKERFQlVHKSBTeXN0ZW0ub3V0LnByaW50bG4oInByaW50Iik7CisgICAgICAgIGlmIChmb2N1cykgZy5zZXRDb2xvcihDb2xvci5ibGFjayk7CisgICAgICAgIGVsc2UgZy5zZXRDb2xvcihDb2xvci5ncmF5KTsKKyAgICAgICAgZy5kcmF3UmVjdCgwLDAsbXlTaXplLndpZHRoLTEsbXlTaXplLmhlaWdodC0xKTsKKyAgICAgICAgZy5zZXRDbGlwKDEsMSwKKyAgICAgICAgICBteVNpemUud2lkdGgtMixteVNpemUuaGVpZ2h0LTIpOworICAgICAgICBnLnNldENvbG9yKENvbG9yLmJsYWNrKTsKKyAgICAgICAgZy5zZXRGb250KGdldEZvbnQoKSk7CisgICAgICAgIGZtID0gZy5nZXRGb250TWV0cmljcygpOworICAgICAgICBsaW5lQXNjZW50ID0gZm0uZ2V0QXNjZW50KCk7CisgICAgICAgIGxpbmVMZWFkaW5nID0gZm0uZ2V0TGVhZGluZygpOworICAgICAgICBsaW5lSGVpZ2h0ID0gbGluZUFzY2VudCArIGZtLmdldERlc2NlbnQoKSArIGxpbmVMZWFkaW5nOworICAgICAgICBpbnQgeSA9IHlJbnNldCArIGxpbmVBc2NlbnQ7CisgICAgICAgIFN0cmluZyBsYXN0U3Vic3RyaW5nID0gIiI7CisgICAgICAgIGlmIChyZWRvTGluZXMpIGZpeExpbmVTdGFydHMobXlTaXplLndpZHRoLXhJbnNldC14SW5zZXQpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxpbmVDb3VudDsgeSArPSBsaW5lSGVpZ2h0LCArK2kpIHsKKyAgICAgICAgICAgIC8vIExJVTogRG9uJ3QgZGlzcGxheSB0ZXJtaW5hdGluZyBeTSBjaGFyYWN0ZXJzCisgICAgICAgICAgICBpbnQgbGltID0gbGluZVN0YXJ0c1tpKzFdOworICAgICAgICAgICAgaWYgKGxpbSA+IDAgJiYgY29udGVudHMubGVuZ3RoKCkgPiAwICYmCisgICAgICAgICAgICAgICAgY29udGVudHMuY2hhckF0KGxpbS0xKSA9PSBDUikgLS1saW07CisgICAgICAgICAgICBsYXN0U3Vic3RyaW5nID0gY29udGVudHMuc3Vic3RyaW5nKGxpbmVTdGFydHNbaV0sbGltKTsKKyAgICAgICAgICAgIGcuZHJhd1N0cmluZyhsYXN0U3Vic3RyaW5nLCB4SW5zZXQsIHkpOworICAgICAgICB9CisgICAgICAgIGRyYXdTZWxlY3Rpb24oZywgbGFzdFN1YnN0cmluZyk7CisgICAgICAgIGxhc3RIZWlnaHQgPSB5ICsgeUluc2V0IC0gbGluZUhlaWdodCArIHlJbnNldDsKKyAgICAgICAgbGFzdFdpZHRoID0gbXlTaXplLndpZHRoLXhJbnNldC14SW5zZXQ7CisgICAgfQorCisgICAgdm9pZCBwYWludFJlY3QoR3JhcGhpY3MgZywgaW50IHgsIGludCB5LCBpbnQgdywgaW50IGgpIHsKKyAgICAgICAgaWYgKGZvY3VzKSB7CisgICAgICAgICAgICBnLmZpbGxSZWN0KHgsIHksIHcsIGgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZy5kcmF3UmVjdCh4LCB5LCB3LTEsIGgtMSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBkcmF3U2VsZWN0aW9uKEdyYXBoaWNzIGcsIFN0cmluZyBsYXN0U3Vic3RyaW5nKSB7CisgICAgICAgIGcuc2V0WE9STW9kZShDb2xvci5ibGFjayk7CisgICAgICAgIGlmIChhY3RpdmVTdGFydCAhPSAtMSkgeworICAgICAgICAgICAgb2Zmc2V0MlBvaW50KGFjdGl2ZVN0YXJ0LCBmYWxzZSwgYWN0aXZlUG9pbnQpOworICAgICAgICAgICAgZy5zZXRDb2xvcihDb2xvci5tYWdlbnRhKTsKKyAgICAgICAgICAgIGludCBsaW5lID0gYWN0aXZlUG9pbnQueCAtIDE7CisgICAgICAgICAgICBnLmZpbGxSZWN0KGxpbmUsIGFjdGl2ZVBvaW50LnksIDEsIGxpbmVIZWlnaHQpOworICAgICAgICB9CisgICAgICAgIGlmIChzZWxlY3Rpb24uaXNDYXJldCgpKSB7CisgICAgICAgICAgICBvZmZzZXQyUG9pbnQoc2VsZWN0aW9uLmNhcmV0LCBzZWxlY3Rpb24uY2xpY2tBZnRlciwgY2FyZXRQb2ludCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoZm9jdXMpIGcuc2V0Q29sb3IoQ29sb3IuYmx1ZSk7CisgICAgICAgICAgICBlbHNlIGcuc2V0Q29sb3IoQ29sb3IueWVsbG93KTsKKyAgICAgICAgICAgIG9mZnNldDJQb2ludChzZWxlY3Rpb24uZ2V0U3RhcnQoKSwgdHJ1ZSwgc3RhcnRQb2ludCk7CisgICAgICAgICAgICBvZmZzZXQyUG9pbnQoc2VsZWN0aW9uLmdldEVuZCgpLCBmYWxzZSwgZW5kUG9pbnQpOworICAgICAgICAgICAgaWYgKHNlbGVjdGlvbi5nZXRTdGFydCgpID09IHNlbGVjdGlvbi5jYXJldCkKKyAgICAgICAgICAgICAgICBjYXJldFBvaW50LnNldExvY2F0aW9uKHN0YXJ0UG9pbnQpOworICAgICAgICAgICAgZWxzZSBjYXJldFBvaW50LnNldExvY2F0aW9uKGVuZFBvaW50KTsKKyAgICAgICAgICAgIGlmIChzdGFydFBvaW50LnkgPT0gZW5kUG9pbnQueSkgeworICAgICAgICAgICAgICAgIHBhaW50UmVjdChnLCBzdGFydFBvaW50LngsIHN0YXJ0UG9pbnQueSwKKyAgICAgICAgICAgICAgICAgIE1hdGgubWF4KDEsZW5kUG9pbnQueC1zdGFydFBvaW50LngpLCBsaW5lSGVpZ2h0KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcGFpbnRSZWN0KGcsIHN0YXJ0UG9pbnQueCwgc3RhcnRQb2ludC55LAorICAgICAgICAgICAgICAgICAgKG15U2l6ZS53aWR0aC14SW5zZXQpLXN0YXJ0UG9pbnQueCwgbGluZUhlaWdodCk7CisgICAgICAgICAgICAgICAgaWYgKHN0YXJ0UG9pbnQueSArIGxpbmVIZWlnaHQgPCBlbmRQb2ludC55KQorICAgICAgICAgICAgICAgICAgcGFpbnRSZWN0KGcsIHhJbnNldCwgc3RhcnRQb2ludC55ICsgbGluZUhlaWdodCwKKyAgICAgICAgICAgICAgICAgIChteVNpemUud2lkdGgteEluc2V0KS14SW5zZXQsIGVuZFBvaW50LnkgLSBzdGFydFBvaW50LnkgLSBsaW5lSGVpZ2h0KTsKKyAgICAgICAgICAgICAgICBwYWludFJlY3QoZywgeEluc2V0LCBlbmRQb2ludC55LCBlbmRQb2ludC54LXhJbnNldCwgbGluZUhlaWdodCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKGZvY3VzIHx8IHNlbGVjdGlvbi5pc0NhcmV0KCkpIHsKKyAgICAgICAgICAgIGlmIChmb2N1cykgZy5zZXRDb2xvcihDb2xvci5ncmVlbik7CisgICAgICAgICAgICBlbHNlIGcuc2V0Q29sb3IoQ29sb3IucmVkKTsKKyAgICAgICAgICAgIGludCBsaW5lID0gY2FyZXRQb2ludC54IC0gKHNlbGVjdGlvbi5jbGlja0FmdGVyID8gMCA6IDEpOworICAgICAgICAgICAgZy5maWxsUmVjdChsaW5lLCBjYXJldFBvaW50LnksIDEsIGxpbmVIZWlnaHQpOworICAgICAgICAgICAgaW50IHcgPSBsaW5lSGVpZ2h0LzEyICsgMTsKKyAgICAgICAgICAgIGludCBicmFjZXMgPSBsaW5lIC0gKHNlbGVjdGlvbi5jbGlja0FmdGVyID8gLTEgOiB3KTsKKyAgICAgICAgICAgIGcuZmlsbFJlY3QoYnJhY2VzLCBjYXJldFBvaW50LnksIHcsIDEpOworICAgICAgICAgICAgZy5maWxsUmVjdChicmFjZXMsIGNhcmV0UG9pbnQueSArIGxpbmVIZWlnaHQgLSAxLCB3LCAxKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBQb2ludCBvZmZzZXQyUG9pbnQoaW50IG9mZiwgYm9vbGVhbiBzdGFydCwgUG9pbnQgcCkgeworICAgICAgICBpbnQgbGluZSA9IGZpbmRMaW5lKG9mZiwgc3RhcnQpOworICAgICAgICBpbnQgd2lkdGggPSAwOworICAgICAgICB0cnkgeworICAgICAgICAgICAgd2lkdGggPSBmbS5zdHJpbmdXaWR0aCgKKyAgICAgICAgICAgICAgY29udGVudHMuc3Vic3RyaW5nKGxpbmVTdGFydHNbbGluZV0sIG9mZikpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGUpOworICAgICAgICB9CisgICAgICAgIHAueCA9IHdpZHRoICsgeEluc2V0OworICAgICAgICBpZiAocC54ID4gbXlTaXplLndpZHRoIC0geEluc2V0KQorICAgICAgICAgICAgcC54ID0gbXlTaXplLndpZHRoIC0geEluc2V0OworICAgICAgICBwLnkgPSBsaW5lSGVpZ2h0ICogbGluZSArIHlJbnNldDsKKyAgICAgICAgcmV0dXJuIHA7CisgICAgfQorCisgICAgcHJpdmF0ZSBpbnQgZmluZExpbmUoaW50IG9mZiwgYm9vbGVhbiBzdGFydCkgeworICAgICAgICAvLyBpZiBpdCBpcyBzdGFydCwgdGhlbiBnbyB0byB0aGUgbmV4dCBsaW5lIQorICAgICAgICBpZiAoc3RhcnQpICsrb2ZmOworICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IGxpbmVDb3VudDsgKytpKSB7CisgICAgICAgICAgICAvLyBMSVU6IFRoaXMgd2FzIDw9IDsgY2hhbmdlZCB0byA8IHRvIG1ha2UgY2FyZXQgYWZ0ZXIKKyAgICAgICAgICAgIC8vIGZpbmFsIENSIGluIGxpbmUgYXBwZWFyIGF0IFNUQVJUIG9mIG5leHQgbGluZS4KKyAgICAgICAgICAgIGlmIChvZmYgPCBsaW5lU3RhcnRzW2ldKSByZXR1cm4gaS0xOworICAgICAgICB9CisgICAgICAgIC8vIExJVTogQ2hlY2sgZm9yIHNwZWNpYWwgY2FzZTsgYWZ0ZXIgQ1IgYXQgZW5kIG9mIHRoZSBsYXN0IGxpbmUKKyAgICAgICAgaWYgKG9mZiA9PSBsaW5lU3RhcnRzW2xpbmVDb3VudF0gJiYKKyAgICAgICAgICAgIG9mZiA+IDAgJiYgY29udGVudHMubGVuZ3RoKCkgPiAwICYmIGNvbnRlbnRzLmNoYXJBdChvZmYtMSkgPT0gQ1IpIHsKKyAgICAgICAgICAgIHJldHVybiBsaW5lQ291bnQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGxpbmVDb3VudC0xOworICAgIH0KKworICAgIC8vIG9mZnNldHMgb24gYW55IGxpbmUgd2lsbCBnbyBmcm9tIHN0YXJ0LHRydWUgdG8gZW5kLGZhbHNlCisgICAgLy8gZXhjbHVkaW5nIHN0YXJ0LGZhbHNlIGFuZCBlbmQsdHJ1ZQorICAgIHB1YmxpYyBTZWxlY3Rpb24gcG9pbnQyT2Zmc2V0KFBvaW50IHAsIFNlbGVjdGlvbiBvKSB7CisgICAgICAgIGlmIChwLnkgPCB5SW5zZXQpIHsKKyAgICAgICAgICAgIG8uY2FyZXQgPSAwOworICAgICAgICAgICAgby5jbGlja0FmdGVyID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBvOworICAgICAgICB9CisgICAgICAgIGludCBsaW5lID0gKHAueSAtIHlJbnNldCkvbGluZUhlaWdodDsKKyAgICAgICAgaWYgKGxpbmUgPj0gbGluZUNvdW50KSB7CisgICAgICAgICAgICBvLmNhcmV0ID0gY29udGVudHMubGVuZ3RoKCk7CisgICAgICAgICAgICBvLmNsaWNrQWZ0ZXIgPSBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiBvOworICAgICAgICB9CisgICAgICAgIGludCB0YXJnZXQgPSBwLnggLSB4SW5zZXQ7CisgICAgICAgIGlmICh0YXJnZXQgPD0gMCkgeworICAgICAgICAgICAgby5jYXJldCA9IGxpbmVTdGFydHNbbGluZV07CisgICAgICAgICAgICBvLmNsaWNrQWZ0ZXIgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuIG87CisgICAgICAgIH0KKyAgICAgICAgaW50IGxvd0d1ZXNzID0gbGluZVN0YXJ0c1tsaW5lXTsKKyAgICAgICAgaW50IGxvd1dpZHRoID0gMDsKKyAgICAgICAgaW50IGhpZ2hHdWVzcyA9IGxpbmVTdGFydHNbbGluZSsxXTsKKyAgICAgICAgaW50IGhpZ2hXaWR0aCA9IGZtLnN0cmluZ1dpZHRoKGNvbnRlbnRzLnN1YnN0cmluZyhsaW5lU3RhcnRzW2xpbmVdLGhpZ2hHdWVzcykpOworICAgICAgICBpZiAodGFyZ2V0ID49IGhpZ2hXaWR0aCkgeworICAgICAgICAgICAgby5jYXJldCA9IGxpbmVTdGFydHNbbGluZSsxXTsKKyAgICAgICAgICAgIG8uY2xpY2tBZnRlciA9IGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIG87CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKGxvd0d1ZXNzIDwgaGlnaEd1ZXNzIC0gMSkgeworICAgICAgICAgICAgaW50IGd1ZXNzID0gKGxvd0d1ZXNzICsgaGlnaEd1ZXNzKS8yOworICAgICAgICAgICAgaW50IHdpZHRoID0gZm0uc3RyaW5nV2lkdGgoY29udGVudHMuc3Vic3RyaW5nKGxpbmVTdGFydHNbbGluZV0sZ3Vlc3MpKTsKKyAgICAgICAgICAgIGlmICh3aWR0aCA8PSB0YXJnZXQpIHsKKyAgICAgICAgICAgICAgICBsb3dHdWVzcyA9IGd1ZXNzOworICAgICAgICAgICAgICAgIGxvd1dpZHRoID0gd2lkdGg7CisgICAgICAgICAgICAgICAgaWYgKHdpZHRoID09IHRhcmdldCkgYnJlYWs7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGhpZ2hHdWVzcyA9IGd1ZXNzOworICAgICAgICAgICAgICAgIGhpZ2hXaWR0aCA9IHdpZHRoOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIC8vIGF0IGVuZCwgZWl0aGVyIGxvd1dpZHRoIDwgdGFyZ2V0IDwgd2lkdGgobG93KzEpLCBvciBsb3dXaWR0aCA9IHRhcmdldAorICAgICAgICBpbnQgaGlnaEJvdW5kID0gY2hhckJyZWFrZXIuZm9sbG93aW5nKGxvd0d1ZXNzKTsKKyAgICAgICAgaW50IGxvd0JvdW5kID0gY2hhckJyZWFrZXIucHJldmlvdXMoKTsKKyAgICAgICAgLy8gd2UgYXJlIG5vdyBhdCBjaGFyYWN0ZXIgYm91bmRhcmllcworICAgICAgICBpZiAobG93Qm91bmQgIT0gbG93R3Vlc3MpCisgICAgICAgICAgICBsb3dXaWR0aCA9IGZtLnN0cmluZ1dpZHRoKGNvbnRlbnRzLnN1YnN0cmluZyhsaW5lU3RhcnRzW2xpbmVdLGxvd0JvdW5kKSk7CisgICAgICAgIGlmIChoaWdoQm91bmQgIT0gaGlnaEd1ZXNzKQorICAgICAgICAgICAgaGlnaFdpZHRoID0gZm0uc3RyaW5nV2lkdGgoY29udGVudHMuc3Vic3RyaW5nKGxpbmVTdGFydHNbbGluZV0saGlnaEJvdW5kKSk7CisgICAgICAgIC8vIHdlIG5vdyBoYXZlIHRoZSByaWdodCB3aWR0aHMKKyAgICAgICAgaWYgKHRhcmdldCAtIGxvd1dpZHRoIDwgaGlnaFdpZHRoIC0gdGFyZ2V0KSB7CisgICAgICAgICAgICBvLmNhcmV0ID0gbG93Qm91bmQ7CisgICAgICAgICAgICBvLmNsaWNrQWZ0ZXIgPSB0cnVlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgby5jYXJldCA9IGhpZ2hCb3VuZDsKKyAgICAgICAgICAgIG8uY2xpY2tBZnRlciA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIC8vIHdlIG5vdyBoYXZlIHRoZSBjbG9zZXN0IQorICAgICAgICByZXR1cm4gbzsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgZml4TGluZVN0YXJ0cyhpbnQgd2lkdGgpIHsKKyAgICAgICAgbGluZUNvdW50ID0gMTsKKyAgICAgICAgbGluZVN0YXJ0c1swXSA9IDA7CisgICAgICAgIGlmIChjb250ZW50cy5sZW5ndGgoKSA9PSAwKSB7CisgICAgICAgICAgICBsaW5lU3RhcnRzWzFdID0gMDsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpbnQgZW5kID0gMDsKKyAgICAgICAgLy8gTElVOiBBZGQgY2hlY2sgZm9yIE1BWF9MSU5FUworICAgICAgICBmb3IgKGludCBzdGFydCA9IDA7IHN0YXJ0IDwgY29udGVudHMubGVuZ3RoKCkgJiYgbGluZUNvdW50IDwgTUFYX0xJTkVTOworICAgICAgICAgICAgIHN0YXJ0ID0gZW5kKSB7CisgICAgICAgICAgICBlbmQgPSBuZXh0TGluZShmbSwgc3RhcnQsIHdpZHRoKTsKKyAgICAgICAgICAgIGxpbmVTdGFydHNbbGluZUNvdW50KytdID0gZW5kOworICAgICAgICAgICAgaWYgKGVuZCA9PSBzdGFydCkgeyAvLyBMSVU6IEFzc2VydGlvbgorICAgICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJuZXh0TGluZSBicm9rZW4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAtLWxpbmVDb3VudDsKKyAgICAgICAgcmVkb0xpbmVzID0gZmFsc2U7CisgICAgfQorCisgICAgLy8gTElVOiBFbmhhbmNlZCB0byB3cmFwIGxvbmcgbGluZXMuICBCdWcgd2l0aCByZXR1cm4gb2Ygc3RhcnQgZml4ZWQuCisgICAgcHVibGljIGludCBuZXh0TGluZShGb250TWV0cmljcyBmbSwgaW50IHN0YXJ0LCBpbnQgd2lkdGgpIHsKKyAgICAgICAgaW50IGxlbiA9IGNvbnRlbnRzLmxlbmd0aCgpOworICAgICAgICBmb3IgKGludCBpID0gc3RhcnQ7IGkgPCBsZW47ICsraSkgeworICAgICAgICAgICAgLy8gY2hlY2sgZm9yIGxpbmUgc2VwYXJhdG9yCisgICAgICAgICAgICBjaGFyIGNoID0gKGNvbnRlbnRzLmNoYXJBdChpKSk7CisgICAgICAgICAgICBpZiAoY2ggPj0gMHgwMDBBICYmIGNoIDw9IDB4MDAwRCB8fCBjaCA9PSAweDIwMjggfHwgY2ggPT0gMHgyMDI5KSB7CisgICAgICAgICAgICAgICAgbGVuID0gaSArIDE7CisgICAgICAgICAgICAgICAgaWYgKGNoID09IDB4MDAwRCAmJiBpKzEgPCBsZW4gJiYgY29udGVudHMuY2hhckF0KGkrMSkgPT0gMHgwMDBBKSAvLyBjcmxmCisgICAgICAgICAgICAgICAgICAgICsrbGVuOyAvLyBncmFiIGV4dHJhIGNoYXIKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBTdHJpbmcgc3ViamVjdCA9IGNvbnRlbnRzLnN1YnN0cmluZyhzdGFydCxsZW4pOworICAgICAgICBpZiAodmlzaWJsZVdpZHRoKGZtLCBzdWJqZWN0KSA8PSB3aWR0aCkKKyAgICAgICAgICByZXR1cm4gbGVuOworCisgICAgICAgIC8vIExJVTogUmVtYWluZGVyIG9mIHRoaXMgbWV0aG9kIHJld3JpdHRlbiB0byBhY2NvbW9kYXRlIGxpbmVzCisgICAgICAgIC8vIGxvbmdlciB0aGFuIHRoZSBjb21wb25lbnQgd2lkdGggYnkgZmlyc3QgdHJ5aW5nIHRvIGJyZWFrCisgICAgICAgIC8vIGludG8gbGluZXM7IHRoZW4gd29yZHM7IGZpbmFsbHkgY2hhcnMuCisgICAgICAgIGludCBuID0gZmluZEZpdHRpbmdCcmVhayhmbSwgc3ViamVjdCwgd2lkdGgsIGxpbmVCcmVha2VyKTsKKyAgICAgICAgaWYgKG4gPT0gMCkgeworICAgICAgICAgICAgbiA9IGZpbmRGaXR0aW5nQnJlYWsoZm0sIHN1YmplY3QsIHdpZHRoLCB3b3JkQnJlYWtlcik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG4gPT0gMCkgeworICAgICAgICAgICAgbiA9IGZpbmRGaXR0aW5nQnJlYWsoZm0sIHN1YmplY3QsIHdpZHRoLCBjaGFyQnJlYWtlcik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG4gPiAwID8gc3RhcnQgKyBuIDogbGVuOworICAgIH0KKworICAgIC8qKgorICAgICAqIExJVTogRmluZHMgdGhlIGxvbmdlc3Qgc3Vic3RyaW5nIHRoYXQgZml0cyBhIGdpdmVuIHdpZHRoCisgICAgICogY29tcG9zZWQgb2Ygc3VidW5pdHMgcmV0dXJuZWQgYnkgYSBCcmVha0l0ZXJhdG9yLiAgSWYgdGhlIHNtYWxsZXN0CisgICAgICogc3VidW5pdCBpcyB0b28gbG9uZywgcmV0dXJucyAwLgorICAgICAqIEBwYXJhbSBmbSBtZXRyaWNzIHRvIHVzZQorICAgICAqIEBwYXJhbSBsaW5lIHRoZSBzdHJpbmcgdG8gYmUgZml4IGludG8gd2lkdGgKKyAgICAgKiBAcGFyYW0gd2lkdGggbGluZS5zdWJzdHJpbmcoMCwgcmVzdWx0KSBtdXN0IGJlIDw9IHdpZHRoCisgICAgICogQHBhcmFtIGJyZWFrZXIgdGhlIEJyZWFrSXRlcmF0b3IgdGhhdCB3aWxsIGJlIHVzZWQgdG8gZmluZCBzdWJ1bml0cworICAgICAqIEByZXR1cm4gbWF4aW11bSBjaGFyYWN0ZXJzLCBhdCBib3VuZGFyaWVzIHJldHVybmVkIGJ5IGJyZWFrZXIsCisgICAgICogdGhhdCBmaXQgaW50byB3aWR0aCwgb3IgemVybyBvbiBmYWlsdXJlCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgZmluZEZpdHRpbmdCcmVhayhGb250TWV0cmljcyBmbSwgU3RyaW5nIGxpbmUsIGludCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJyZWFrSXRlcmF0b3IgYnJlYWtlcikgeworICAgICAgICBicmVha2VyLnNldFRleHQobGluZSk7CisgICAgICAgIGludCBsYXN0ID0gYnJlYWtlci5maXJzdCgpOworICAgICAgICBpbnQgZW5kID0gYnJlYWtlci5uZXh0KCk7CisgICAgICAgIHdoaWxlIChlbmQgIT0gQnJlYWtJdGVyYXRvci5ET05FICYmCisgICAgICAgICAgICAgICB2aXNpYmxlV2lkdGgoZm0sIGxpbmUuc3Vic3RyaW5nKDAsIGVuZCkpIDw9IHdpZHRoKSB7CisgICAgICAgICAgICBsYXN0ID0gZW5kOworICAgICAgICAgICAgZW5kID0gYnJlYWtlci5uZXh0KCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGxhc3Q7CisgICAgfQorCisgICAgcHVibGljIGludCB2aXNpYmxlV2lkdGgoRm9udE1ldHJpY3MgZm0sIFN0cmluZyBzKSB7CisgICAgICAgIGludCBpOworICAgICAgICBmb3IgKGkgPSBzLmxlbmd0aCgpLTE7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgICAgICBjaGFyIGNoID0gcy5jaGFyQXQoaSk7CisgICAgICAgICAgICBpZiAoIShjaCA9PSAnICcgfHwgY2ggPj0gMHgwMDBBICYmIGNoIDw9IDB4MDAwRCB8fCBjaCA9PSAweDIwMjggfHwgY2ggPT0gMHgyMDI5KSkKKyAgICAgICAgICAgICAgcmV0dXJuIGZtLnN0cmluZ1dpZHRoKHMuc3Vic3RyaW5nKDAsaSsxKSk7OworICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworLy8gPT09PT09PT09PT09PT09IFV0aWxpdHkgPT09PT09PT09PT09PT09PT09PT0KKworICAgIHByaXZhdGUgdm9pZCBmaXhIZXgoKSB7CisgICAgICAgIGlmIChzZWxlY3Rpb24uZ2V0RW5kKCkgPT0gMCkgcmV0dXJuOworICAgICAgICBpbnQgc3RvcmUgPSAwOworICAgICAgICBpbnQgcGxhY2VzID0gMTsKKyAgICAgICAgaW50IGNvdW50ID0gMDsKKyAgICAgICAgaW50IG1pbiA9IE1hdGgubWluKDgsc2VsZWN0aW9uLmdldEVuZCgpKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtaW47ICsraSkgeworICAgICAgICAgICAgY2hhciBjaCA9IGNvbnRlbnRzLmNoYXJBdChzZWxlY3Rpb24uZ2V0RW5kKCktMS1pKTsKKyAgICAgICAgICAgIGludCB2YWx1ZSA9IENoYXJhY3Rlci5nZXROdW1lcmljVmFsdWUoY2gpOworICAgICAgICAgICAgaWYgKHZhbHVlIDwgMCB8fCB2YWx1ZSA+IDE1KSBicmVhazsKKyAgICAgICAgICAgIHN0b3JlICs9IHBsYWNlcyAqIHZhbHVlOworICAgICAgICAgICAgKytjb3VudDsKKyAgICAgICAgICAgIHBsYWNlcyAqPSAxNjsKKyAgICAgICAgfQorICAgICAgICBTdHJpbmcgYWRkID0gIiI7CisgICAgICAgIGludCBib3R0b20gPSBzdG9yZSAmIDB4RkZGRjsKKyAgICAgICAgaWYgKHN0b3JlID49IDB4RDgwMDAwMDAgJiYgc3RvcmUgPCAweERDMDAwMDAwCisgICAgICAgICAgJiYgYm90dG9tID49IDB4REMwMCAmJiBib3R0b20gPCAweEUwMDApIHsgLy8gc3Vycm9nYXRlcworICAgICAgICAgICAgYWRkID0gIiIgKyAoY2hhcikoc3RvcmUgPj4gMTYpICsgKGNoYXIpYm90dG9tOworICAgICAgICB9IGVsc2UgaWYgKHN0b3JlID4gMHhGRkZGICYmIHN0b3JlIDw9IDB4MTBGRkZGKSB7CisgICAgICAgICAgICBzdG9yZSAtPSAweDEwMDAwOworICAgICAgICAgICAgYWRkID0gIiIgKyAoY2hhcikoKChzdG9yZSA+PiAxMCkgJiAweDNGRikgKyAweEQ4MDApCisgICAgICAgICAgICAgICsgKGNoYXIpKChzdG9yZSAmIDB4M0ZGKSArIDB4REMwMCk7CisgICAgICAgICAgICAgIAorICAgICAgICB9IGVsc2UgaWYgKGNvdW50ID49IDQpIHsKKyAgICAgICAgICAgIGNvdW50ID0gNDsKKyAgICAgICAgICAgIGFkZCA9ICIiKyhjaGFyKShzdG9yZSAmIDB4RkZGRik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb3VudCA9IDE7CisgICAgICAgICAgICBjaGFyIGNoID0gY29udGVudHMuY2hhckF0KHNlbGVjdGlvbi5nZXRFbmQoKS0xKTsKKyAgICAgICAgICAgIGFkZCA9IGhleChjaCk7CisgICAgICAgICAgICBpZiAoY2ggPj0gMHhEQzAwICYmIGNoIDw9IDB4REZGRiAmJiBzZWxlY3Rpb24uZ2V0RW5kKCkgPiAxKSB7CisgICAgICAgICAgICAgICAgY2ggPSBjb250ZW50cy5jaGFyQXQoc2VsZWN0aW9uLmdldEVuZCgpLTIpOworICAgICAgICAgICAgICAgIGlmIChjaCA+PSAweEQ4MDAgJiYgY2ggPD0gMHhEQkZGKSB7CisgICAgICAgICAgICAgICAgICAgIGNvdW50ID0gMjsKKyAgICAgICAgICAgICAgICAgICAgYWRkID0gaGV4KGNoKSArIGFkZDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmVwbGFjZVJhbmdlKGFkZCwgc2VsZWN0aW9uLmdldEVuZCgpLWNvdW50LCBzZWxlY3Rpb24uZ2V0RW5kKCkpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGhleChjaGFyIGNoKSB7CisgICAgICAgIFN0cmluZyByZXN1bHQgPSBJbnRlZ2VyLnRvU3RyaW5nKGNoLDE2KS50b1VwcGVyQ2FzZSgpOworICAgICAgICByZXN1bHQgPSAiMDAwMCIuc3Vic3RyaW5nKHJlc3VsdC5sZW5ndGgoKSw0KSArIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vaW1wbC9TZWxlY3Rpb24uamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby9pbXBsL1NlbGVjdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjU5YzEzY2QKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vaW1wbC9TZWxlY3Rpb24uamF2YQpAQCAtMCwwICsxLDE2NyBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL2ltcGwvU2VsZWN0aW9uLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDIvMTYgMDM6MDQ6NTcgJCAKKyAqICRSZXZpc2lvbjogMS4yICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5kZXYuZGVtby5pbXBsOworaW1wb3J0IGphdmEudGV4dC4qOworCitwdWJsaWMgZmluYWwgY2xhc3MgU2VsZWN0aW9uIHsKKworICAgIHB1YmxpYyBpbnQgYW5jaG9yOworICAgIHB1YmxpYyBpbnQgY2FyZXQ7CisgICAgcHVibGljIGJvb2xlYW4gY2xpY2tBZnRlcjsKKworICAgIHB1YmxpYyBpbnQgZ2V0U3RhcnQoKSB7CisgICAgICAgIHJldHVybiBhbmNob3IgPCBjYXJldCA/IGFuY2hvciA6IGNhcmV0OworICAgIH0KKworICAgIHB1YmxpYyBpbnQgZ2V0RW5kKCkgeworICAgICAgICByZXR1cm4gYW5jaG9yID4gY2FyZXQgPyBhbmNob3IgOiBjYXJldDsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBpc0NhcmV0KCkgeworICAgICAgICByZXR1cm4gYW5jaG9yID09IGNhcmV0OworICAgIH0KKworICAgIHB1YmxpYyBTZWxlY3Rpb24gc2V0KFNlbGVjdGlvbiBvdGhlcikgeworICAgICAgICBhbmNob3IgPSBvdGhlci5hbmNob3I7CisgICAgICAgIGNhcmV0ID0gb3RoZXIuY2FyZXQ7CisgICAgICAgIGNsaWNrQWZ0ZXIgPSBvdGhlci5jbGlja0FmdGVyOworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICBwdWJsaWMgU2VsZWN0aW9uIHNldChpbnQgYW5jaG9yLCBpbnQgY2FyZXQsIGJvb2xlYW4gY2xpY2tBZnRlcikgeworICAgICAgICB0aGlzLmFuY2hvciA9IGFuY2hvcjsKKyAgICAgICAgdGhpcy5jYXJldCA9IGNhcmV0OworICAgICAgICB0aGlzLmNsaWNrQWZ0ZXIgPSBjbGlja0FmdGVyOworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG90aGVyKSB7CisgICAgICAgIFNlbGVjdGlvbiBvdGhlcjIgPSAoU2VsZWN0aW9uKW90aGVyOworICAgICAgICByZXR1cm4gYW5jaG9yID09IG90aGVyMi5hbmNob3IKKyAgICAgICAgICAmJiBjYXJldCA9PSBvdGhlcjIuY2FyZXQKKyAgICAgICAgICAmJiBjbGlja0FmdGVyID09IG90aGVyMi5jbGlja0FmdGVyOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGlzTGVzc1RoYW4oU2VsZWN0aW9uIG90aGVyKSB7CisgICAgICAgIHJldHVybiBnZXRTdGFydCgpIDwgb3RoZXIuZ2V0RW5kKCk7CisgICAgfQorCisgICAgcHVibGljIFNlbGVjdGlvbiBwaW4oU3RyaW5nIHRleHQpIHsKKyAgICAgICAgaWYgKGFuY2hvciA+IHRleHQubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIGFuY2hvciA9IHRleHQubGVuZ3RoKCk7CisgICAgICAgIH0gZWxzZSBpZiAoYW5jaG9yIDwgMCkgeworICAgICAgICAgICAgYW5jaG9yID0gMDsKKyAgICAgICAgfQorICAgICAgICBpZiAoY2FyZXQgPiB0ZXh0Lmxlbmd0aCgpKSB7CisgICAgICAgICAgICBjYXJldCA9IHRleHQubGVuZ3RoKCk7CisgICAgICAgICAgICBjbGlja0FmdGVyID0gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIGlmIChjYXJldCA8IDApIHsKKyAgICAgICAgICAgIGNhcmV0ID0gMDsKKyAgICAgICAgICAgIGNsaWNrQWZ0ZXIgPSBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICBwdWJsaWMgU2VsZWN0aW9uIHN3YXAoU2VsZWN0aW9uIGFmdGVyKSB7CisgICAgICAgIGludCB0ZW1wID0gYW5jaG9yOworICAgICAgICBhbmNob3IgPSBhZnRlci5hbmNob3I7CisgICAgICAgIGFmdGVyLmFuY2hvciA9IHRlbXA7CisgICAgICAgIHRlbXAgPSBjYXJldDsKKyAgICAgICAgY2FyZXQgPSBhZnRlci5jYXJldDsKKyAgICAgICAgYWZ0ZXIuY2FyZXQgPSB0ZW1wOworICAgICAgICBib29sZWFuIGIgPSBjbGlja0FmdGVyOworICAgICAgICBjbGlja0FmdGVyID0gYWZ0ZXIuY2xpY2tBZnRlcjsKKyAgICAgICAgYWZ0ZXIuY2xpY2tBZnRlciA9IGI7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIHB1YmxpYyBTZWxlY3Rpb24gZml4QWZ0ZXJSZXBsYWNlKGludCBzdGFydCwgaW50IGVuZCwgaW50IGxlbikgeworICAgICAgICBpZiAoYW5jaG9yID49IHN0YXJ0KSB7CisgICAgICAgICAgICBpZiAoYW5jaG9yIDwgZW5kKSBhbmNob3IgPSBlbmQ7CisgICAgICAgICAgICBhbmNob3IgPSBzdGFydCArIGxlbiArIGFuY2hvciAtIGVuZDsKKyAgICAgICAgfQorICAgICAgICBpZiAoY2FyZXQgPj0gc3RhcnQpIHsKKyAgICAgICAgICAgIGlmIChjYXJldCA8IGVuZCkgY2FyZXQgPSBlbmQ7CisgICAgICAgICAgICBjYXJldCA9IHN0YXJ0ICsgbGVuICsgY2FyZXQgLSBlbmQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCisgICAgICAgIC8vIE1hYyAmIFdpbmRvd3MgY29uc2lkZXJhYmx5IGRpZmZlcmVudAorICAgICAgICAvLyBNYWM6IGVuZCsrLiBJZiBzdGFydCE9ZW5kLCBzdGFydD1lbmQKKyAgICAgICAgLy8gIFNISUZUOiBtb3ZlIGVuZCByaWdodAorICAgICAgICAvLyAgQ1RMOiBubyBkaWZmZXJlbnQKKyAgICAgICAgLy8gV2luZG93czoKKyAgICAgICAgLy8gIFVOU0hJRlRFRDogaWYgc3RhcnQhPWVuZCwgc3RhcnQgPSBlbmQsIGVsc2Ugc3RhcnQ9ZW5kPWVuZCsxOworICAgICAgICAvLyAgICAgICBhbmNob3IgPSB0aXAgPSBzdGFydAorICAgICAgICAvLyAgU0hJRlQ6IHRpcCsrCisgICAgICAgIC8vICBDVEw6IGlmIHN0YXJ0IT1lbmQsIHN0YXJ0ID0gZW5kID0gbmV4dGJvdW5kKGVuZC0xKSwKKyAgICAgICAgLy8gICBlbHNlIHN0YXJ0PWVuZD1uZXh0Ym91bmQoZW5kKQorICAgICAgICAvLyAgICAgICBhbmNob3IgPSB0aXAgPSBzdGFydAorICAgICAgICAvLyAgQ1RML1NISUZUOiB0aXAgPSBuZXh0Ym91bmQodGlwKQorCisgICAgcHVibGljIFNlbGVjdGlvbiBuZXh0Qm91bmQoQnJlYWtJdGVyYXRvciBicmVha2VyLAorICAgICAgaW50IGRpcmVjdGlvbiwgYm9vbGVhbiBleHRlbmQpIHsKKyAgICAgICAgaWYgKCFleHRlbmQgJiYgYW5jaG9yICE9IGNhcmV0KSBjYXJldCAtPSBkaXJlY3Rpb247CisgICAgICAgIGNhcmV0ID0gbmV4dChjYXJldCwgYnJlYWtlciwgZGlyZWN0aW9uLCB0cnVlKTsKKyAgICAgICAgaWYgKCFleHRlbmQpIGFuY2hvciA9IGNhcmV0OworICAgICAgICBjbGlja0FmdGVyID0gZmFsc2U7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIC8vIGV4cGFuZCBzdGFydCBhbmQgZW5kIHRvIHdvcmQgYnJlYWtzLS1pZiB0aGV5IGFyZSBub3QgYWxyZWFkeSBvbiBvbmUKKyAgICBwdWJsaWMgdm9pZCBleHBhbmQoQnJlYWtJdGVyYXRvciBicmVha2VyKSB7CisgICAgICAgIGlmIChhbmNob3IgPD0gY2FyZXQpIHsKKyAgICAgICAgICAgIGFuY2hvciA9IG5leHQoYW5jaG9yLGJyZWFrZXIsLTEsZmFsc2UpOworICAgICAgICAgICAgY2FyZXQgPSBuZXh0KGNhcmV0LGJyZWFrZXIsMSxmYWxzZSk7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBicmVha2VyLmZvbGxvd2luZyhhbmNob3IpOworICAgICAgICAgICAgICAgIGFuY2hvciA9IGJyZWFrZXIucHJldmlvdXMoKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7fQorICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBjYXJldCA9IGJyZWFrZXIuZm9sbG93aW5nKGNhcmV0LTEpOworICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHt9CisgICAgICAgICAgICAqLworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYW5jaG9yID0gbmV4dChhbmNob3IsYnJlYWtlciwxLGZhbHNlKTsKKyAgICAgICAgICAgIGNhcmV0ID0gbmV4dChjYXJldCxicmVha2VyLC0xLGZhbHNlKTsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGJyZWFrZXIuZm9sbG93aW5nKGNhcmV0KTsKKyAgICAgICAgICAgICAgICBjYXJldCA9IGJyZWFrZXIucHJldmlvdXMoKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7fQorICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBhbmNob3IgPSBicmVha2VyLmZvbGxvd2luZyhhbmNob3ItMSk7CisgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkge30KKyAgICAgICAgICAgICovCisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBkaWZmZXJlbnQgPSBmYWxzZSAtIG1vdmUgdG8gbmV4dCBib3VuZGFyeSwgdW5sZXNzIG9uIG9uZQorICAgIC8vIHRydWUgLSBtb3ZlIHRvIG5leHQgYm91bmRhcnksIGV2ZW4gaWYgb24gb25lCisgICAgcHVibGljIHN0YXRpYyBpbnQgbmV4dChpbnQgcG9zaXRpb24sIEJyZWFrSXRlcmF0b3IgYnJlYWtlciwKKyAgICAgIGludCBkaXJlY3Rpb24sIGJvb2xlYW4gZGlmZmVyZW50KSB7CisgICAgICAgIGlmICghZGlmZmVyZW50KSBwb3NpdGlvbiAtPSBkaXJlY3Rpb247CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBpZiAoZGlyZWN0aW9uID4gMCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gYnJlYWtlci5mb2xsb3dpbmcocG9zaXRpb24pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBicmVha2VyLmZvbGxvd2luZyhwb3NpdGlvbi0xKTsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IGJyZWFrZXIucHJldmlvdXMoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHt9CisgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby9pbXBsL3BhY2thZ2UuaHRtbCBiL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby9pbXBsL3BhY2thZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43NDk4YzZiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL2ltcGwvcGFja2FnZS5odG1sCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8IS0tICBDb3B5cmlnaHQgKEMpIDIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kCisgIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKworICAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vaW1wbC9wYWNrYWdlLmh0bWwsdiAkCisgICRSZXZpc2lvbjogMS4xICQKKyAgJERhdGU6IDIwMDAvMDMvMTUgMTc6NDM6NDAgJAorLS0+Cis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSI+CitTaGFyZWQgdXRpbGl0aWVzIGZvciBkZW1vIGFwcGxpY2F0aW9ucyBhbmQgQXBwbGV0cy4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vcmJiaS9CcmVha0l0ZXJhdG9yUnVsZXNfZW5fVVNfREVNTy5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL3JiYmkvQnJlYWtJdGVyYXRvclJ1bGVzX2VuX1VTX0RFTU8uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5kZWQyNTUyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL3JiYmkvQnJlYWtJdGVyYXRvclJ1bGVzX2VuX1VTX0RFTU8uamF2YQpAQCAtMCwwICsxLDIyMyBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL3JiYmkvQnJlYWtJdGVyYXRvclJ1bGVzX2VuX1VTX0RFTU8uamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xOSAwNDoxMDoyMyAkIAorICogJFJldmlzaW9uOiAxLjggJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi5kZW1vLnJiYmk7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworaW1wb3J0IGphdmEubmV0LlVSTDsKKworLyoqCisgKiBUaGlzIHJlc291cmNlIGJ1bmRsZSBpcyBpbmNsdWRlZCBmb3IgdGVzdGluZyBhbmQgZGVtb25zdHJhdGlvbiBwdXJwb3NlcyBvbmx5LgorICogSXQgYXBwbGllcyB0aGUgZGljdGlvbmFyeS1iYXNlZCBhbGdvcml0aG0gdG8gRW5nbGlzaCB0ZXh0IHRoYXQgaGFzIGhhZCBhbGwgdGhlCisgKiBzcGFjZXMgcmVtb3ZlZC4gIE9uY2Ugd2UgaGF2ZSBnb29kIHRlc3QgY2FzZXMgZm9yIFRoYWksIHdlIHdpbGwgcmVwbGFjZSB0aGlzCisgKiB3aXRoIGdvb2QgcmVzb3VyY2UgZGF0YSAoYW5kIGEgZ29vZCBkaWN0aW9uYXJ5IGZpbGUpIGZvciBUaGFpCisgKi8KK3B1YmxpYyBjbGFzcyBCcmVha0l0ZXJhdG9yUnVsZXNfZW5fVVNfREVNTyBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgVVJMIHVybCA9CisgICAgICAgIEJyZWFrSXRlcmF0b3JSdWxlc19lbl9VU19ERU1PLmNsYXNzLmdldFJlc291cmNlKCIvY29tL2libS9kYXRhL21pc2MvZW5nbGlzaC5kaWN0Iik7CisgICAgCisgICAgcHVibGljIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7CisgICAgICAgIHJldHVybiBjb250ZW50czsKKyAgICB9CisKKyAgICBzdGF0aWMgZmluYWwgT2JqZWN0W11bXSBjb250ZW50cyA9IHsKKyAgICAgICAgLy8gbmFtZXMgb2YgY2xhc3NlcyB0byBpbnN0YW50aWF0ZSBmb3IgdGhlIGRpZmZlcmVudCBraW5kcyBvZiBicmVhaworICAgICAgICAvLyBpdGVyYXRvci4gIE5vdGljZSB3ZSdyZSBub3cgdXNpbmcgRGljdGlvbmFyeUJhc2VkQnJlYWtJdGVyYXRvcgorICAgICAgICAvLyBmb3Igd29yZCBhbmQgbGluZSBicmVha2luZy4KKyAgICAgICAgeyAiQnJlYWtJdGVyYXRvckNsYXNzZXMiLAorICAgICAgICAgICAgbmV3IFN0cmluZ1tdIHsgIlJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IiLCAgICAgICAgICAgLy8gY2hhcmFjdGVyLWJyZWFrIGl0ZXJhdG9yIGNsYXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGljdGlvbmFyeUJhc2VkQnJlYWtJdGVyYXRvciIsICAgICAvLyB3b3JkLWJyZWFrIGl0ZXJhdG9yIGNsYXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGljdGlvbmFyeUJhc2VkQnJlYWtJdGVyYXRvciIsICAgICAvLyBsaW5lLWJyZWFrIGl0ZXJhdG9yIGNsYXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiUnVsZUJhc2VkQnJlYWtJdGVyYXRvciIgfSAgICAgICAgICAvLyBzZW50ZW5jZS1icmVhayBpdGVyYXRvciBjbGFzcworICAgICAgICB9LAorICAgICAgICAKKyAgICAgICAgLy8gVGhlc2UgYXJlIHRoZSBzYW1lIHdvcmQtYnJlYWtpbmcgcnVsZXMgYXMgYXJlIHNwZWNpZmllZCBpbiB0aGUgZGVmYXVsdAorICAgICAgICAvLyByZXNvdXJjZSwgZXhjZXB0IHRoYXQgdGhlIExhdGluIGxldHRlcnMsIGFwb3N0cm9waGUsIGFuZCBoeXBoZW4gYXJlCisgICAgICAgIC8vIHNwZWNpZmllZCBhcyBkaWN0aW9uYXJ5IGNoYXJhY3RlcnMKKyAgICAgICAgeyAiV29yZEJyZWFrUnVsZXMiLAorICAgICAgICAgICAgLy8gaWdub3JlIG5vbi1zcGFjaW5nIG1hcmtzLCBlbmNsb3NpbmcgbWFya3MsIGFuZCBmb3JtYXQgY2hhcmFjdGVycywKKyAgICAgICAgICAgIC8vIGFsbCBvZiB3aGljaCBzaG91bGQgbm90IGluZmx1ZW5jZSB0aGUgYWxnb3JpdGhtCisgICAgICAgICAgICAiJF9pZ25vcmVfPVtbOk1uOl1bOk1lOl1bOkNmOl1dOyIKKworICAgICAgICAgICAgLy8gbG93ZXIgYW5kIHVwcGVyIGNhc2UgUm9tYW4gbGV0dGVycywgYXBvc3Ryb3BoeSBhbmQgZGFzaCBhcmUKKyAgICAgICAgICAgIC8vIGluIHRoZSBFbmdsaXNoIGRpY3Rpb25hcnkKKyAgICAgICAgICAgICsgIiRfZGljdGlvbmFyeV89W2EtekEtWlxcJ1xcLV07IgorCisgICAgICAgICAgICAvLyBIaW5kaSBwaHJhc2Ugc2VwYXJhdG9yLCBrYW5qaSwga2F0YWthbmEsIGhpcmFnYW5hLCBDSksgZGlhY3JpdGljYWxzLAorICAgICAgICAgICAgLy8gb3RoZXIgbGV0dGVycywgYW5kIGRpZ2l0cworICAgICAgICAgICAgKyAiJGRhbmRhPVtcdTA5NjRcdTA5NjVdOyIKKyAgICAgICAgICAgICsgIiRrYW5qaT1bXHUzMDA1XHU0ZTAwLVx1OWZhNVx1ZjkwMC1cdWZhMmRdOyIKKyAgICAgICAgICAgICsgIiRrYXRhPVtcdTMwOTktXHUzMDljXHUzMGExLVx1MzBmZV07IgorICAgICAgICAgICAgKyAiJGhpcmE9W1x1MzA0MS1cdTMwOWVcdTMwZmNdOyIKKyAgICAgICAgICAgICsgIiRsZXQ9W1tbOkw6XVs6TWM6XV0tWyRrYW5qaSRrYXRhJGhpcmFdXTsiCisgICAgICAgICAgICArICIkZGd0PVs6TjpdOyIKKworICAgICAgICAgICAgLy8gcHVuY3R1YXRpb24gdGhhdCBjYW4gb2NjdXIgaW4gdGhlIG1pZGRsZSBvZiBhIHdvcmQ6IGN1cnJlbnRseQorICAgICAgICAgICAgLy8gZGFzaGVzLCBhcG9zdHJvcGhlcywgYW5kIHF1b3RhdGlvbiBtYXJrcworICAgICAgICAgICAgKyAiJG1pZF93b3JkPVtbOlBkOl1cdTAwYWRcdTIwMjdcXFwiXFxcJ107IgorCisgICAgICAgICAgICAvLyBwdW5jdHVhdGlvbiB0aGF0IGNhbiBvY2N1ciBpbiB0aGUgbWlkZGxlIG9mIGEgbnVtYmVyOiBjdXJyZW50bHkKKyAgICAgICAgICAgIC8vIGFwb3N0cm9waGVzLCBxb3V0YXRpb24gbWFya3MsIHBlcmlvZHMsIGNvbW1hcywgYW5kIHRoZSBBcmFiaWMKKyAgICAgICAgICAgIC8vIGRlY2ltYWwgcG9pbnQKKyAgICAgICAgICAgICsgIiRtaWRfbnVtPVtcXFwiXFxcJ1xcLFx1MDY2YlxcLl07IgorCisgICAgICAgICAgICAvLyBwdW5jdHVhdGlvbiB0aGF0IGNhbiBvY2N1ciBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbnVtYmVyOiBjdXJyZW50bHkKKyAgICAgICAgICAgIC8vIHRoZSBwZXJpb2QsIHRoZSBudW1iZXIgc2lnbiwgYW5kIGFsbCBjdXJyZW5jeSBzeW1ib2xzIGV4Y2VwdCB0aGUgY2VudHMgc2lnbgorICAgICAgICAgICAgKyAiJHByZV9udW09W1tbOlNjOl0tW1x1MDBhMl1dXFwjXFwuXTsiCisKKyAgICAgICAgICAgIC8vIHB1bmN0dWF0aW9uIHRoYXQgY2FuIG9jY3VyIGF0IHRoZSBlbmQgb2YgYSBudW1iZXI6IGN1cnJlbnRseQorICAgICAgICAgICAgLy8gdGhlIHBlcmNlbnQsIHBlci10aG91c2FuZCwgcGVyLXRlbi10aG91c2FuZCwgYW5kIEFyYWJpYyBwZXJjZW50CisgICAgICAgICAgICAvLyBzaWducywgdGhlIGNlbnRzIHNpZ24sIGFuZCB0aGUgYW1wZXJzYW5kCisgICAgICAgICAgICArICIkcG9zdF9udW09W1xcJVxcJlx1MDBhMlx1MDY2YVx1MjAzMFx1MjAzMV07IgorCisgICAgICAgICAgICAvLyBsaW5lIHNlcGFyYXRvcnM6IGN1cnJlbnRseSBMRiwgRkYsIFBTLCBhbmQgTFMKKyAgICAgICAgICAgICsgIiRscz1bXG5cdTAwMGNcdTIwMjhcdTIwMjldOyIKKworICAgICAgICAgICAgLy8gd2hpdGVzcGFjZTogYWxsIHNwYWNlIHNlcGFyYXRvcnMgYW5kIHRoZSB0YWIgY2hhcmFjdGVyCisgICAgICAgICAgICArICIkd3M9W1s6WnM6XVx0XTsiCisKKyAgICAgICAgICAgIC8vIGEgd29yZCBpcyBhIHNlcXVlbmNlIG9mIGxldHRlcnMgdGhhdCBtYXkgY29udGFpbiBpbnRlcm5hbAorICAgICAgICAgICAgLy8gcHVuY3R1YXRpb24sIGFzIGxvbmcgYXMgaXQgYmVnaW5zIGFuZCBlbmRzIHdpdGggYSBsZXR0ZXIgYW5kCisgICAgICAgICAgICAvLyBuZXZlciBjb250YWlucyB0d28gcHVuY3R1YXRpb24gbWFya3MgaW4gYSByb3cKKyAgICAgICAgICAgICsgIiR3b3JkPSgkbGV0KygkbWlkX3dvcmQkbGV0KykqJGRhbmRhPyk7IgorCisgICAgICAgICAgICAvLyBhIG51bWJlciBpcyBhIHNlcXVlbmNlIG9mIGRpZ2l0cyB0aGF0IG1heSBjb250YWluIGludGVybmFsCisgICAgICAgICAgICAvLyBwdW5jdHVhdGlvbiwgYXMgbG9uZyBhcyBpdCBiZWdpbnMgYW5kIGVuZHMgd2l0aCBhIGRpZ2l0IGFuZAorICAgICAgICAgICAgLy8gbmV2ZXIgY29udGFpbnMgdHdvIHB1bmN0dWF0aW9uIG1hcmtzIGluIGEgcm93LgorICAgICAgICAgICAgKyAiJG51bWJlcj0oJGRndCsoJG1pZF9udW0kZGd0KykqKTsiCisKKyAgICAgICAgICAgIC8vIGJyZWFrIGFmdGVyIGV2ZXJ5IGNoYXJhY3Rlciwgd2l0aCB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbnMKKyAgICAgICAgICAgIC8vICh0aGlzIHdpbGwgY2F1c2UgcHVuY3R1YXRpb24gbWFya3MgdGhhdCBhcmVuJ3QgY29uc2lkZXJlZAorICAgICAgICAgICAgLy8gcGFydCBvZiB3b3JkcyBvciBudW1iZXJzIHRvIGJlIHRyZWF0ZWQgYXMgd29yZHMgdW50byB0aGVtc2VsdmVzKQorICAgICAgICAgICAgKyAiLjsiCisKKyAgICAgICAgICAgIC8vIGtlZXAgdG9nZXRoZXIgYW55IHNlcXVlbmNlIG9mIGNvbnRpZ3VvdXMgd29yZHMgYW5kIG51bWJlcnMKKyAgICAgICAgICAgIC8vIChpbmNsdWRpbmcganVzdCBvbmUgb2YgZWl0aGVyKSwgcGx1cyBhbiBvcHRpb25hbCB0cmFpbGluZworICAgICAgICAgICAgLy8gbnVtYmVyLXN1ZmZpeCBjaGFyYWN0ZXIKKyAgICAgICAgICAgICsgIiR3b3JkPygkbnVtYmVyJHdvcmQpKigkbnVtYmVyJHBvc3RfbnVtPyk/OyIKKworICAgICAgICAgICAgLy8ga2VlcCB0b2dldGhlciBhbmQgc2VxdWVuY2Ugb2YgY29udGlndW91cyB3b3JkcyBhbmQgbnVtYmVycworICAgICAgICAgICAgLy8gdGhhdCBzdGFydHMgd2l0aCBhIG51bWJlci1wcmVmaXggY2hhcmFjdGVyIGFuZCBhIG51bWJlciwKKyAgICAgICAgICAgIC8vIGFuZCBtYXkgZW5kIHdpdGggYSBudW1iZXItc3VmZml4IGNoYXJhY3RlcgorICAgICAgICAgICAgKyAiJHByZV9udW0oJG51bWJlciR3b3JkKSooJG51bWJlciRwb3N0X251bT8pPzsiCisKKyAgICAgICAgICAgIC8vIGtlZXAgdG9nZXRoZXIgcnVucyBvZiB3aGl0ZXNwYWNlIChvcHRpb25hbGx5IHdpdGggYSBzaW5nbGUgdHJhaWxpbmcKKyAgICAgICAgICAgIC8vIGxpbmUgc2VwYXJhdG9yIG9yIENSTEYgc2VxdWVuY2UpCisgICAgICAgICAgICArICIkd3MqXHI/JGxzPzsiCisKKyAgICAgICAgICAgIC8vIGtlZXAgdG9nZXRoZXIgcnVucyBvZiBLYXRha2FuYQorICAgICAgICAgICAgKyAiJGthdGEqOyIKKworICAgICAgICAgICAgLy8ga2VlcCB0b2dldGhlciBydW5zIG9mIEhpcmFnYW5hCisgICAgICAgICAgICArICIkaGlyYSo7IgorCisgICAgICAgICAgICAvLyBrZWVwIHRvZ2V0aGVyIHJ1bnMgb2YgS2FuamkKKyAgICAgICAgICAgICsgIiRrYW5qaSo7In0sCisgICAgICAgIAorICAgICAgICAvLyBUaGVzZSBhcmUgdGhlIHNhbWUgbGluZS1icmVha2luZyBydWxlcyBhcyBhcmUgc3BlY2lmaWVkIGluIHRoZSBkZWZhdWx0CisgICAgICAgIC8vIHJlc291cmNlLCBleGNlcHQgdGhhdCB0aGUgTGF0aW4gbGV0dGVycywgYXBvc3Ryb3BoZSwgYW5kIGh5cGhlbiBhcmUKKyAgICAgICAgLy8gc3BlY2lmaWVkIGFzIGRpY3Rpb25hcnkgY2hhcmFjdGVycworICAgICAgICB7ICJMaW5lQnJlYWtSdWxlcyIsCisgICAgICAgICAgICAvLyBpZ25vcmUgbm9uLXNwYWNpbmcgbWFya3MsIGVuY2xvc2luZyBtYXJrcywgYW5kIGZvcm1hdCBjaGFyYWN0ZXJzCisgICAgICAgICAgICAiJF9pZ25vcmVfPVtbOk1uOl1bOk1lOl1bOkNmOl1dOyIKKworICAgICAgICAgICAgLy8gbG93ZXIgYW5kIHVwcGVyIGNhc2UgUm9tYW4gbGV0dGVycywgYXBvc3Ryb3BoeSBhbmQgZGFzaAorICAgICAgICAgICAgLy8gYXJlIGluIHRoZSBFbmdsaXNoIGRpY3Rpb25hcnkKKyAgICAgICAgICAgICsgIiRfZGljdGlvbmFyeV89W2EtekEtWlxcJ1xcLV07IgorCisgICAgICAgICAgICAvLyBIaW5kaSBwaHJhc2Ugc2VwYXJhdG9ycworICAgICAgICAgICAgKyAiJGRhbmRhPVtcdTA5NjRcdTA5NjVdOyIKKworICAgICAgICAgICAgLy8gY2hhcmFjdGVycyB0aGF0IGFsd2F5cyBjYXVzZSBhIGJyZWFrOiBFVFgsIHRhYiwgTEYsIEZGLCBMUywgYW5kIFBTCisgICAgICAgICAgICArICIkYnJlYWs9W1x1MDAwM1x0XG5cZlx1MjAyOFx1MjAyOV07IgorCisgICAgICAgICAgICAvLyBjaGFyYWN0ZXJzIHRoYXQgYWx3YXlzIHByZXZlbnQgYSBicmVhazogdGhlIG5vbi1icmVha2luZyBzcGFjZQorICAgICAgICAgICAgLy8gYW5kIHNpbWlsYXIgY2hhcmFjdGVycworICAgICAgICAgICAgKyAiJG5ic3A9W1x1MDBhMFx1MjAwN1x1MjAxMVx1ZmVmZl07IgorCisgICAgICAgICAgICAvLyB3aGl0ZXNwYWNlOiBzcGFjZSBzZXBhcmF0b3JzIGFuZCBjb250cm9sIGNoYXJhY3RlcnMsIGV4Y2VwdCBmb3IKKyAgICAgICAgICAgIC8vIENSIGFuZCB0aGUgb3RoZXIgY2hhcmFjdGVycyBtZW50aW9uZWQgYWJvdmUKKyAgICAgICAgICAgICsgIiRzcGFjZT1bW1s6WnM6XVs6Q2M6XV0tWyRuYnNwJGJyZWFrXHJdXTsiCisKKyAgICAgICAgICAgIC8vIGRhc2hlczogZGFzaCBwdW5jdHVhdGlvbiBhbmQgdGhlIGRpc2NyZXRpb25hcnkgaHlwaGVuLCBleGNlcHQgZm9yCisgICAgICAgICAgICAvLyBub24tYnJlYWtpbmcgaHlwaGVucworICAgICAgICAgICAgKyAiJGRhc2g9W1tbOlBkOl1cdTAwYWRdLVskbmJzcF1dOyIKKworICAgICAgICAgICAgLy8gY2hhcmFjdGVycyB0aGF0IHN0aWNrIHRvIGEgd29yZCBpZiB0aGV5IHByZWNlZGUgaXQ6IGN1cnJlbmN5IHN5bWJvbHMKKyAgICAgICAgICAgIC8vIChleGNlcHQgdGhlIGNlbnRzIHNpZ24pIGFuZCBzdGFydGluZyBwdW5jdHVhdGlvbgorICAgICAgICAgICAgKyAiJHByZV93b3JkPVtbWzpTYzpdLVtcdTAwYTJdXVs6UHM6XVxcXCJcXFwnXTsiCisKKyAgICAgICAgICAgIC8vIGNoYXJhY3RlcnMgdGhhdCBzdGljayB0byBhIHdvcmQgaWYgdGhleSBmb2xsb3cgaXQ6IGVuZGluZyBwdW5jdHVhdGlvbiwKKyAgICAgICAgICAgIC8vIG90aGVyIHB1bmN0dWF0aW9uIHRoYXQgdXN1YWxseSBvY2N1cnMgYXQgdGhlIGVuZCBvZiBhIHNlbnRlbmNlLAorICAgICAgICAgICAgLy8gc21hbGwgS2FuYSBjaGFyYWN0ZXJzLCBzb21lIENKSyBkaWFjcml0aWNzLCBldGMuCisgICAgICAgICAgICArICIkcG9zdF93b3JkPVtbOlBlOl1cXCFcXFwiXFxcJ1xcJVxcLlxcLFxcOlxcO1xcP1x1MDBhMlx1MDBiMFx1MDY2YVx1MjAzMC1cdTIwMzQiCisgICAgICAgICAgICAgICAgICAgICsgIlx1MjEwM1x1MjEwNVx1MjEwOVx1MzAwMVx1MzAwMlx1MzAwNVx1MzA0MVx1MzA0M1x1MzA0NVx1MzA0N1x1MzA0OVx1MzA2MyIKKyAgICAgICAgICAgICAgICAgICAgKyAiXHUzMDgzXHUzMDg1XHUzMDg3XHUzMDhlXHUzMDk5LVx1MzA5ZVx1MzBhMVx1MzBhM1x1MzBhNVx1MzBhN1x1MzBhOSIKKyAgICAgICAgICAgICAgICAgICAgKyAiXHUzMGMzXHUzMGUzXHUzMGU1XHUzMGU3XHUzMGVlXHUzMGY1XHUzMGY2XHUzMGZjLVx1MzBmZVx1ZmYwMVx1ZmYwYyIKKyAgICAgICAgICAgICAgICAgICAgKyAiXHVmZjBlXHVmZjFmXTsiCisKKyAgICAgICAgICAgIC8vIEthbmppOiBhY3R1YWxseSBpbmNsdWRlcyBib3RoIEthbmppIGFuZCBLYW5hLCBleGNlcHQgZm9yIHNtYWxsIEthbmEgYW5kCisgICAgICAgICAgICAvLyBDSksgZGlhY3JpdGljcworICAgICAgICAgICAgKyAiJGthbmppPVtbXHU0ZTAwLVx1OWZhNVx1ZjkwMC1cdWZhMmRcdTMwNDEtXHUzMDk0XHUzMGExLVx1MzBmYV0tWyRwb3N0X3dvcmQkX2lnbm9yZV9dXTsiCisKKyAgICAgICAgICAgIC8vIGRpZ2l0cworICAgICAgICAgICAgKyAiJGRpZ2l0PVtbOk5kOl1bOk5vOl1dOyIKKworICAgICAgICAgICAgLy8gcHVuY3R1YXRpb24gdGhhdCBjYW4gb2NjdXIgaW4gdGhlIG1pZGRsZSBvZiBhIG51bWJlcjogcGVyaW9kcyBhbmQgY29tbWFzCisgICAgICAgICAgICArICIkbWlkX251bT1bXFwuXFwsXTsiCisKKyAgICAgICAgICAgIC8vIGV2ZXJ5dGhpbmcgbm90IG1lbnRpb25lZCBhYm92ZSwgcGx1cyB0aGUgcXVvdGUgbWFya3MgKHdoaWNoIGFyZSBib3RoCisgICAgICAgICAgICAvLyA8cHJlLXdvcmQ+LCA8cG9zdC13b3JkPiwgYW5kIDxjaGFyPikKKyAgICAgICAgICAgICsgIiRjaGFyPVteJGJyZWFrJHNwYWNlJGRhc2gka2FuamkkbmJzcCRfaWdub3JlXyRwcmVfd29yZCRwb3N0X3dvcmQkbWlkX251bSRkYW5kYVxyXFxcIlxcXCddOyIKKworICAgICAgICAgICAgLy8gYSAibnVtYmVyIiBpcyBhIHJ1biBvZiBwcmVmaXggY2hhcmFjdGVycyBhbmQgZGFzaGVzLCBmb2xsb3dlZCBieSBvbmUgb3IKKyAgICAgICAgICAgIC8vIG1vcmUgZGlnaXRzIHdpdGggaXNvbGF0ZWQgbnVtYmVyLXB1bmN0dWF0aW9uIGNoYXJhY3RlcnMgaW50ZXJzcGVyc2VkCisgICAgICAgICAgICArICIkbnVtYmVyPShbJHByZV93b3JkJGRhc2hdKiRkaWdpdCsoJG1pZF9udW0kZGlnaXQrKSopOyIKKworICAgICAgICAgICAgLy8gdGhlIGJhc2ljIGNvcmUgb2YgYSB3b3JkIGNhbiBiZSBlaXRoZXIgYSAibnVtYmVyIiBhcyBkZWZpbmVkIGFib3ZlLCBhIHNpbmdsZQorICAgICAgICAgICAgLy8gIkthbmppIiBjaGFyYWN0ZXIsIG9yIGEgcnVuIG9mIGFueSBudW1iZXIgb2Ygbm90LWV4cGxpY2l0bHktbWVudGlvbmVkCisgICAgICAgICAgICAvLyBjaGFyYWN0ZXJzICh0aGlzIGluY2x1ZGVzIExhdGluIGxldHRlcnMpCisgICAgICAgICAgICArICIkd29yZF9jb3JlPShbJHByZV93b3JkJGNoYXJdKnwka2Fuaml8JG51bWJlcik7IgorCisgICAgICAgICAgICAvLyBhIHdvcmQgbWF5IGVuZCB3aXRoIGFuIG9wdGlvbmFsIHN1ZmZpeCB0aGF0IGJlIGVpdGhlciBhIHJ1biBvZiBvbmUgb3IKKyAgICAgICAgICAgIC8vIG1vcmUgZGFzaGVzIG9yIGEgcnVuIG9mIHdvcmQtc3VmZml4IGNoYXJhY3RlcnMsIGZvbGxvd2VkIGJ5IGFuIG9wdGlvbmFsCisgICAgICAgICAgICAvLyBydW4gb2Ygd2hpdGVzcGFjZQorICAgICAgICAgICAgKyAiJHdvcmRfc3VmZml4PSgoJGRhc2grfCRwb3N0X3dvcmQqKSRzcGFjZSopOyIKKworICAgICAgICAgICAgLy8gYSB3b3JkLCB0aHVzLCBpcyBhbiBvcHRpb25hbCBydW4gb2Ygd29yZC1wcmVmaXggY2hhcmFjdGVycywgZm9sbG93ZWQgYnkKKyAgICAgICAgICAgIC8vIGEgd29yZCBjb3JlIGFuZCBhIHdvcmQgc3VmZml4ICh0aGUgc3ludGF4IG9mIDx3b3JkLWNvcmU+IGFuZCA8d29yZC1zdWZmaXg+CisgICAgICAgICAgICAvLyBhY3R1YWxseSBhbGxvd3MgZWl0aGVyIG9mIHRoZW0gdG8gbWF0Y2ggdGhlIGVtcHR5IHN0cmluZywgcHV0dGluZyBhIGJyZWFrCisgICAgICAgICAgICAvLyBiZXR3ZWVuIHRoaW5ncyBsaWtlICIpKCIgb3IgImFhYShhYWEiCisgICAgICAgICAgICArICIkd29yZD0oJHByZV93b3JkKiR3b3JkX2NvcmUkd29yZF9zdWZmaXgpOyIKKworICAgICAgICAgICAgLy8gZmluYWxseSwgdGhlIHJ1bGUgdGhhdCBkb2VzIHRoZSB3b3JrOiBLZWVwIHRvZ2V0aGVyIGFueSBydW4gb2Ygd29yZHMgdGhhdAorICAgICAgICAgICAgLy8gYXJlIGpvaW5lZCBieSBydW5zIG9mIG9uZSBvZiBtb3JlIG5vbi1zcGFjaW5nIG1hcmsuICBBbHNvIGtlZXAgYSB0cmFpbGluZworICAgICAgICAgICAgLy8gbGluZS1icmVhayBjaGFyYWN0ZXIgb3IgQ1JMRiBjb21iaW5hdGlvbiB3aXRoIHRoZSB3b3JkLiAgKGxpbmUgc2VwYXJhdG9ycworICAgICAgICAgICAgLy8gIndpbiIgb3ZlciBuYnNwJ3MpCisgICAgICAgICAgICArICIkd29yZCgkbmJzcCskd29yZCkqXHI/JGJyZWFrPzsiIH0sCisgICAgICAgICAgICAKKyAgICAgICAgLy8gdGhlc2UgdHdvIHJlc291cmNlcyBzcGVjaWZ5IHRoZSBwYXRobmFtZXMgb2YgdGhlIGRpY3Rpb25hcnkgZmlsZXMgdG8KKyAgICAgICAgLy8gdXNlIGZvciB3b3JkIGJyZWFraW5nIGFuZCBsaW5lIGJyZWFraW5nLiAgQm90aCBjdXJyZW50bHkgcmVmZXIgdG8gCisgICAgICAgIC8vIGEgZmlsZSBjYWxsZWQgZW5nbGlzaC5kaWN0IHBsYWNlZCBpbiBjb20uaWJtLmljdS5pbXBsLmRhdGEKKyAgICAgICAgLy8gc29tZXdoZXJlIGluIHRoZSBjbGFzcyBwYXRoLiAgSXQncyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0CisgICAgICAgIC8vIGVuZ2xpc2guZGljdCB3YXMgY3JlYXRlZCBmb3IgdGVzdGluZyBwdXJwb3NlcyBvbmx5LCBhbmQgZG9lc24ndAorICAgICAgICAvLyBjb21lIGFueXdoZXJlIGNsb3NlIHRvIGJlaW5nIGFuIGV4aGF1c3RpdmUgZGljdGlvbmFyeSBvZiBFbmdsaXNoCisgICAgICAgIC8vIHdvcmRzIChiYXNpY2FsbHksIGl0IGNvbnRhaW5zIGFsbCB0aGUgd29yZHMgaW4gdGhlIERlY2xhcmF0aW9uIG9mCisgICAgICAgIC8vIEluZGVwZW5kZW5jZSwgYW5kIHRoZSBSZXZpc2VkIFN0YW5kYXJkIFZlcnNpb24gb2YgdGhlIGJvb2sgb2YgR2VuZXNpcywKKyAgICAgICAgLy8gcGx1cyBhIGZldyBvdGhlciB3b3JkcyB0aHJvd24gaW4gdG8gc2hvdyBtb3JlIGludGVyZXN0aW5nIGNhc2VzKS4KKyAgICAgICAgLy8geyAiV29yZEJyZWFrRGljdGlvbmFyeSIsICJjb21cXGlibVxcdGV4dFxccmVzb3VyY2VzXFxlbmdsaXNoLmRpY3QiIH0sCisgICAgICAgIC8vIHsgIkxpbmVCcmVha0RpY3Rpb25hcnkiLCAiY29tXFxpYm1cXHRleHRcXHJlc291cmNlc1xcZW5nbGlzaC5kaWN0IiB9CisgICAgICAgIHsgIldvcmRCcmVha0RpY3Rpb25hcnkiLCB1cmwgfSwKKyAgICAgICAgeyAiTGluZUJyZWFrRGljdGlvbmFyeSIsIHVybCB9CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby9yYmJpL0RCQklEZW1vLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vcmJiaS9EQkJJRGVtby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjY1MGJkMmQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vcmJiaS9EQkJJRGVtby5qYXZhCkBAIC0wLDAgKzEsNDY5IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vcmJiaS9EQkJJRGVtby5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzA4LzAxIDIwOjI3OjIwICQgCisgKiAkUmV2aXNpb246IDEuMTIgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi5kZW1vLnJiYmk7CisKKworaW1wb3J0IGNvbS5pYm0uaWN1LmRldi5kZW1vLio7CitpbXBvcnQgamF2YS5hcHBsZXQuQXBwbGV0OworaW1wb3J0IGphdmEuYXd0Lio7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuV2luZG93RXZlbnQ7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuS2V5RXZlbnQ7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuSXRlbUxpc3RlbmVyOworaW1wb3J0IGphdmEuYXd0LmV2ZW50Lkl0ZW1FdmVudDsKK2ltcG9ydCBqYXZheC5zd2luZy5KVGV4dEFyZWE7CitpbXBvcnQgamF2YXguc3dpbmcuSlNjcm9sbFBhbmU7CitpbXBvcnQgamF2YXguc3dpbmcuQm9yZGVyRmFjdG9yeTsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYuZGVtby5pbXBsLio7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC5CcmVha0l0ZXJhdG9yOworCitwdWJsaWMgY2xhc3MgREJCSURlbW8gZXh0ZW5kcyBEZW1vQXBwbGV0Cit7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIGFyZ3ZbXSkgeworICAgICAgICBMb2NhbGUuc2V0RGVmYXVsdChuZXcgTG9jYWxlKCJlbiIsICJVUyIsICJERU1PIikpOworCQluZXcgREJCSURlbW8oKS5zaG93RGVtbygpOworICAgIH0KKworICAgIHB1YmxpYyBGcmFtZSBjcmVhdGVEZW1vRnJhbWUoRGVtb0FwcGxldCBhcHBsZXQpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBEQkJJRnJhbWUoYXBwbGV0KTsKKyAgICB9Cit9CisKKworCitjbGFzcyBEQkJJRnJhbWUgZXh0ZW5kcyBGcmFtZSBpbXBsZW1lbnRzIEl0ZW1MaXN0ZW5lcgoreworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBjcmVkaXRTdHJpbmcgPQorICAgICAgICAidjEuMWE5LCBEZW1vIjsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBGSUVMRF9DT0xVTU5TID0gNDU7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgRm9udCBjaG9pY2VGb250ID0gbnVsbDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIERFQlVHID0gZmFsc2U7CisgICAgcHJpdmF0ZSBEZW1vQXBwbGV0IGFwcGxldDsKKworICAgIGZpbmFsIFN0cmluZyByaWdodCA9ICItLT4iOworICAgIGZpbmFsIFN0cmluZyBsZWZ0ID0gIjwtLSI7CisKKyAgICBwcml2YXRlIEJyZWFrSXRlcmF0b3IgZW51bTsKKyAgICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGlzY3RybGRvd25fID0gZmFsc2U7CisKK0pUZXh0QXJlYSB0ZXh0OworLy8gICAgVGV4dEFyZWEgdGV4dDsKKyAgICBDaG9pY2UgYm91bmQ7CisKKyAgICBwdWJsaWMgREJCSUZyYW1lKERlbW9BcHBsZXQgYXBwbGV0KQorICAgIHsKKyAgICAgICAgdGhpcy5hcHBsZXQgPSBhcHBsZXQ7CisgICAgICAgIGluaXQoKTsKKyAgICAgICAgc3RhcnQoKTsKKyAgICB9CisKKworCisgICAgcHVibGljIHZvaWQgcnVuKCkKKyAgICB7CisgICAgICAgIC8qCisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGNoZWNrQ2hhbmdlKCk7CisgICAgICAgICAgICAgICAgVGhyZWFkLnNsZWVwKDI1MCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXRjaCAoSW50ZXJydXB0ZWRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXRjaCAoVGhyb3dhYmxlIGUpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAqLworICAgIH0KKworICAgIGludCBzLCBlOworICAgIGludCB0cywgdGU7CisKKyAgICBwdWJsaWMgdm9pZCBjaGVja0NoYW5nZSgpCisgICAgeworLy8gICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiY2hlY2tDaGFuZ2UuLi4iKTsKKyAgICAgICAgaWYgKCh0ZXh0LmdldFNlbGVjdGlvblN0YXJ0KCkgJiAweDdGRkYpICE9IHRzIHx8CisgICAgICAgICAgICAodGV4dC5nZXRTZWxlY3Rpb25FbmQoKSAmIDB4N0ZGRikgIT0gdGUpIHsKKworICAgICAgICAgICAgLy8gbm90IHVzZWQgaW50IHRlbXBTID0gdGV4dC5nZXRTZWxlY3Rpb25TdGFydCgpICYgMHg3RkZGOworICAgICAgICAgICAgLy8gbm90IHVzZWQgaW50IHRlbXBFID0gdGV4dC5nZXRTZWxlY3Rpb25FbmQoKSAmIDB4N0ZGRjsKKworLy8gICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCI+Iik7CisvLyAgICAgICAgICBzZWxlY3QoMCwgMCk7CisvLyAgICAgICAgICBzZWxlY3QodGVtcFMsIHRlbXBFKTsKKyAgICAgICAgICAgIC8vc2VsZWN0KHRlbXBTIC0gKHRzIC0gcyksIHRlbXBFIC0gKHRlIC0gZSkpOworLy8gICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCI8Iik7CisKKworLy8gICAgICAgICAgaWYgKHMgIT0gdHMgfHwgZSAhPSB0ZSkgU3lzdGVtLm91dC5wcmludGxuKCIgICAgIHMoIitzKyIpIHRzKCIrdHMrIikgZSgiK2UrIikgdGUoIit0ZSsiKSIpOworLy8gICAgICAgICAgaWYgKHRlbXBTICE9IHRzIHx8IHRlbXBFICE9IHRlKSBTeXN0ZW0ub3V0LnByaW50bG4oIj5zKCIrcysiKSB0ZW1wUygiK3RlbXBTKyIpIGUoIitlKyIpIHRlbXBFKCIrdGVtcEUrIikiKTsKKy8vICAgICAgICAgIHNlbGVjdChzIC0gKHRzIC0gcyksIGUgLSAodGUgLSBlKSk7CisvLyAgICAgICAgICBpZiAodGVtcFMgIT0gdHMgfHwgdGVtcEUgIT0gdGUpIFN5c3RlbS5vdXQucHJpbnRsbigicygiK3MrIikgdGVtcFMoIit0ZW1wUysiKSBlKCIrZSsiKSB0ZW1wRSgiK3RlbXBFKyIpIik7CisKKy8vICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigibGtkc2xrc2oiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNlbGVjdChpbnQgc0luLCBpbnQgZUluKQorICAgIHsKKyAgICAgICAgcyA9IHNJbjsKKyAgICAgICAgZSA9IGVJbjsKKyAgICAgICAgdGV4dC5zZWxlY3QocywgZSk7CisgICAgICAgIHRzID0gdGV4dC5nZXRTZWxlY3Rpb25TdGFydCgpICYgMHg3RkZGOworICAgICAgICB0ZSA9IHRleHQuZ2V0U2VsZWN0aW9uRW5kKCkgJiAweDdGRkY7CisvLyAgICAgICAgaWYgKHMgIT0gdHMgfHwgZSAhPSB0ZSkgeworLy8gICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIj5zKCIrcysiKSB0cygiK3RzKyIpIGUoIitlKyIpIHRlKCIrdGUrIikiKTsKKy8vICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIgICAiKyh0cy1zKSsiLCIrKHRlLWUpKTsKKy8vICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIGludCBnZXRTZWxlY3Rpb25TdGFydCgpCisgICAgeworICAgICAgICBjaGVja0NoYW5nZSgpOworLy8gICAgICByZXR1cm4gczsKKyAgICAgICAgcmV0dXJuIHRleHQuZ2V0U2VsZWN0aW9uU3RhcnQoKSAmIDB4N0ZGRjsKKyAgICB9CisKKworICAgIHB1YmxpYyBpbnQgZ2V0U2VsZWN0aW9uRW5kKCkKKyAgICB7CisgICAgICAgIGNoZWNrQ2hhbmdlKCk7CisvLyAgICAgIHJldHVybiBlOworICAgICAgICByZXR1cm4gdGV4dC5nZXRTZWxlY3Rpb25FbmQoKSAmIDB4N0ZGRjsKKyAgICB9CisKKyAgICBwdWJsaWMgZmluYWwgc3luY2hyb25pemVkIHZvaWQgc2VsZWN0UmFuZ2UoaW50IHMsIGludCBlKQorICAgIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIC8vaWYgKGdldFNlbGVjdGlvblN0YXJ0KCkgIT0gcyB8fCBnZXRTZWxlY3Rpb25FbmQoKSAhPSBlKSB7CisgICAgICAgICAgICAgICAgLy90ZXh0LnNlbGVjdChzLCBlKTsKKyAgICAgICAgICAgICAgICBzZWxlY3QocyxlKTsKKyAgICAgICAgICAgIC8vfQorLy8gICAgICAgICAgaWYgKGdldFNlbGVjdGlvblN0YXJ0KCkgIT0gcyB8fCBnZXRTZWxlY3Rpb25FbmQoKSAhPSBlKSB7CisvLyAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJBR0ghIHNlbGVjdCgiK3MrIiwiK2UrIikgLT4gKCIrCisvLyAgICAgICAgICAgICAgZ2V0U2VsZWN0aW9uU3RhcnQoKSsiLCIrZ2V0U2VsZWN0aW9uRW5kKCkrIikiKTsKKy8vICAgICAgICAgICAgICB0ZXh0LnNlbGVjdChzIC0gKGdldFNlbGVjdGlvblN0YXJ0KCkgLSBzKSwgZSAtIChnZXRTZWxlY3Rpb25FbmQoKSAtIGUpKTsKKy8vICAgICAgICAgIH0KKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4cCkgeworICAgICAgICAgICAgZXJyb3JUZXh0KGV4cC50b1N0cmluZygpKTsKKyAgICAgICAgfQorICAgIH0KKworCisKKyAgICBwdWJsaWMgdm9pZCBpbml0KCkKKyAgICB7CisgICAgICAgIGJ1aWxkR1VJKCk7CisgICAgfQorCisKKyAgICBwdWJsaWMgdm9pZCBzdGFydCgpCisgICAgeworICAgIH0KKworCisgICAgdm9pZCBhZGRXaXRoRm9udChDb250YWluZXIgY29udGFpbmVyLCBDb21wb25lbnQgZm9vLCBGb250IGZvbnQpIHsKKyAgICAgICAgaWYgKGZvbnQgIT0gbnVsbCkKKyAgICAgICAgICAgIGZvby5zZXRGb250KGZvbnQpOworICAgICAgICBjb250YWluZXIuYWRkKGZvbyk7CisgICAgfQorCisKKworICAgcHVibGljIHZvaWQgYnVpbGRHVUkoKQorICAgIHsKKyAgICAgICAgc2V0QmFja2dyb3VuZChEZW1vVXRpbGl0eS5iZ0NvbG9yKTsKKyAgICAgICAgc2V0TGF5b3V0KG5ldyBCb3JkZXJMYXlvdXQoKSk7CisKKyAgICAgICBQYW5lbCB0b3BQYW5lbCA9IG5ldyBQYW5lbCgpOworCisgICAgICAgICAgICBMYWJlbCB0aXRsZUxhYmVsID0KKyAgICAgICAgICAgICAgICBuZXcgTGFiZWwoIlRleHQgQm91bmRhcnkgRGVtbyIsIExhYmVsLkNFTlRFUik7CisgICAgICAgICAgICB0aXRsZUxhYmVsLnNldEZvbnQoRGVtb1V0aWxpdHkudGl0bGVGb250KTsKKyAgICAgICAgICAgIHRvcFBhbmVsLmFkZCh0aXRsZUxhYmVsKTsKKworICAgICAgICAgICAgLy9MYWJlbCBkZW1vPW5ldyBMYWJlbChjcmVkaXRTdHJpbmcsIExhYmVsLkNFTlRFUik7CisgICAgICAgICAgICAvL2RlbW8uc2V0Rm9udChEZW1vVXRpbGl0eS5jcmVkaXRGb250KTsKKyAgICAgICAgICAgIC8vdG9wUGFuZWwuYWRkKGRlbW8pOworCisgICAgICAgICAgICBQYW5lbCBjaG9pY2VQYW5lbCA9IG5ldyBQYW5lbCgpOworCisgICAgICAgICAgICBMYWJlbCBkZW1vMT1uZXcgTGFiZWwoIkJvdW5kYXJpZXMiLCBMYWJlbC5MRUZUKTsKKyAgICAgICAgICAgIGRlbW8xLnNldEZvbnQoRGVtb1V0aWxpdHkubGFiZWxGb250KTsKKyAgICAgICAgICAgIGNob2ljZVBhbmVsLmFkZChkZW1vMSk7CisKKyAgICAgICAgICAgIGJvdW5kID0gbmV3IENob2ljZSgpOworICAgICAgICAgICAgICAgIGJvdW5kLnNldEJhY2tncm91bmQoRGVtb1V0aWxpdHkuY2hvaWNlQ29sb3IpOworICAgICAgICAgICAgYm91bmQuYWRkSXRlbSgiU2VudGVuY2UiKTsKKyAgICAgICAgICAgIGJvdW5kLmFkZEl0ZW0oIkxpbmUgQnJlYWsiKTsKKyAgICAgICAgICAgIGJvdW5kLmFkZEl0ZW0oIldvcmQiKTsKKyAgICAgICAgICAgIGJvdW5kLmFkZEl0ZW0oIkNoYXIiKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgYm91bmQuYWRkSXRlbUxpc3RlbmVyKHRoaXMpOworICAgICAgICAgICAgaWYgKGNob2ljZUZvbnQgIT0gbnVsbCkKKyAgICAgICAgICAgICAgICBib3VuZC5zZXRGb250KGNob2ljZUZvbnQpOworCisgICAgICAgICAgICBjaG9pY2VQYW5lbC5hZGQoYm91bmQpOworICAgICAgICAgICAgdG9wUGFuZWwuYWRkKGNob2ljZVBhbmVsKTsKKworICAgICAgICAgICAgRGVtb1V0aWxpdHkuZml4R3JpZCh0b3BQYW5lbCwxKTsKKworCisgICAgICAgIGFkZCgiTm9ydGgiLCB0b3BQYW5lbCk7CisKKworICAgICAgICAgICAgaW50IFJPV1MgPSAxNTsKKyAgICAgICAgICAgIGludCBDT0xVTU5TID0gNTA7CisvLyAgICAgICAgICAgIHRleHQgPSBuZXcgVGV4dEFyZWEoZ2V0SW5pdGlhbFRleHQoKSwgUk9XUywgQ09MVU1OUyk7Cit0ZXh0ID0gbmV3IEpUZXh0QXJlYShnZXRJbml0aWFsVGV4dCgpLCBST1dTLCBDT0xVTU5TKTsKK3RleHQuc2V0TGluZVdyYXAodHJ1ZSk7Cit0ZXh0LnNldFdyYXBTdHlsZVdvcmQodHJ1ZSk7CisgICAgICAgICAgICB0ZXh0LnNldEVkaXRhYmxlKHRydWUpOworICAgICAgICAgICAgdGV4dC5zZWxlY3RBbGwoKTsKKyAgICAgICAgICAgIHRleHQuc2V0Rm9udChEZW1vVXRpbGl0eS5lZGl0Rm9udCk7CisgICAgICAgICAgICB0ZXh0LnNldEJvcmRlcihCb3JkZXJGYWN0b3J5LmNyZWF0ZUVtcHR5Qm9yZGVyKDIsIDIsIDIsIDIpKTsKKworICAgICAgICBhZGQoIkNlbnRlciIsIG5ldyBKU2Nyb2xsUGFuZSh0ZXh0LCBKU2Nyb2xsUGFuZS5WRVJUSUNBTF9TQ1JPTExCQVJfQUxXQVlTLAorICAgICAgICAgICAgICAgICAgICAgICAgSlNjcm9sbFBhbmUuSE9SSVpPTlRBTF9TQ1JPTExCQVJfTkVWRVIpKTsKKworICAgICAgICBQYW5lbCBjb3B5cmlnaHRQYW5lbCA9IG5ldyBQYW5lbCgpOworICAgICAgICBhZGRXaXRoRm9udCAoY29weXJpZ2h0UGFuZWwsCisgICAgICAgICAgICBuZXcgTGFiZWwoRGVtb1V0aWxpdHkuY29weXJpZ2h0MSwgTGFiZWwuTEVGVCksRGVtb1V0aWxpdHkuY3JlZGl0Rm9udCk7CisgICAgICAgIERlbW9VdGlsaXR5LmZpeEdyaWQoY29weXJpZ2h0UGFuZWwsMSk7CisgICAgICAgIGFkZCgiU291dGgiLCBjb3B5cmlnaHRQYW5lbCk7CisKKyAgICAgICAgLy9sYXlvdXQoKTsKKyAgICAgICAgaGFuZGxlRW51bUNoYW5nZWQoKTsKKyAgICAgICAgCisgICAgICAgIGVuYWJsZUV2ZW50cyhXaW5kb3dFdmVudC5XSU5ET1dfQ0xPU0lORyk7CisgICAgICAgIGVuYWJsZUV2ZW50cyhLZXlFdmVudC5LRVlfUFJFU1NFRCk7CisgICAgICAgIGVuYWJsZUV2ZW50cyhLZXlFdmVudC5LRVlfUkVMRUFTRUQpOworCisgICAgICAgIC8vIChuZXcgVGhyZWFkKHRoaXMpKS5zdGFydCgpOworICAgIH0KKworCisKKyAgICBwdWJsaWMgU3RyaW5nIGdldEluaXRpYWxUZXh0KCkKKyAgICB7CisgICAgICAgIHJldHVybgorIldoZW4saW50aGVjb3Vyc2VvZmh1bWFuZXZlbnRzLGl0YmVjb21lc25lY2Vzc2FyeWZvcm9uZXBlb3BsZXRvZGlzc29sdmV0aGVwb2xpdGljYWxib25kc3doaWNoaGF2ZSIKKysgImNvbm5lY3RlZHRoZW13aXRoYW5vdGhlcixhbmR0b2Fzc3VtZWFtb25ndGhlcG93ZXJzb2Z0aGVlYXJ0aCx0aGVzZXBhcmF0ZWFuZGVxdWFsc3RhdGlvbnRvd2hpY2h0aGVsYXdzIgorKyAib2ZuYXR1cmVhbmRvZm5hdHVyZSdzR29kZW50aXRsZXRoZW0sYWRlY2VudHJlc3BlY3R0b3RoZW9waW5pb25zb2ZtYW5raW5kcmVxdWlyZXN0aGF0dGhleXNob3VsZGRlY2xhcmV0aGUiCisrICJjYXVzZXN3aGljaGltcGVsdGhlbXRvdGhlc2VwYXJhdGlvbi5cbiIKKysgIldlaG9sZHRoZXNldHJ1dGhzdG9iZXNlbGYtZXZpZGVudCx0aGF0YWxsbWVuYXJlY3JlYXRlZGVxdWFsLHRoYXR0aGV5YXJlZW5kb3dlZGJ5dGhlaXJDcmVhdG9yd2l0aGNlcnRhaW4iCisrICJ1bmFsaWVuYWJsZXJpZ2h0cyx0aGF0YW1vbmd0aGVzZWFyZWxpZmUsbGliZXJ0eWFuZHRoZXB1cnN1aXRvZmhhcHBpbmVzcy5UaGF0dG9zZWN1cmV0aGVzZXJpZ2h0cyxnb3Zlcm5tZW50c2FyZSIKKysgImluc3RpdHV0ZWRhbW9uZ21lbixkZXJpdmluZ3RoZWlyanVzdHBvd2Vyc2Zyb210aGVjb25zZW50b2Z0aGVnb3Zlcm5lZC5UaGF0d2hlbmV2ZXJhbnlmb3Jtb2Znb3Zlcm5tZW50IgorKyAiYmVjb21lc2Rlc3RydWN0aXZldG90aGVzZWVuZHMsaXRpc3RoZXJpZ2h0b2Z0aGVwZW9wbGV0b2FsdGVyb3J0b2Fib2xpc2hpdCxhbmR0b2luc3RpdHV0ZW5ld2dvdmVybm1lbnQsbGF5aW5nIgorKyAiaXRzZm91bmRhdGlvbm9uc3VjaHByaW5jaXBsZXNhbmRvcmdhbml6aW5naXRzcG93ZXJzaW5zdWNoZm9ybSxhc3RvdGhlbXNoYWxsc2VlbW1vc3RsaWtlbHl0b2VmZmVjdHRoZWlyc2FmZXR5IgorKyAiYW5kaGFwcGluZXNzLlBydWRlbmNlLGluZGVlZCx3aWxsZGljdGF0ZXRoYXRnb3Zlcm5tZW50c2xvbmdlc3RhYmxpc2hlZHNob3VsZG5vdGJlY2hhbmdlZGZvcmxpZ2h0YW5kdHJhbnNpZW50IgorKyAiY2F1c2VzO2FuZGFjY29yZGluZ2x5YWxsZXhwZXJpZW5jZWhhdGhzaG93bnRoYXRtYW5raW5kYXJlbW9yZWRpc3Bvc2VkdG9zdWZmZXIsd2hpbGVldmlsc2FyZXN1ZmZlcmFibGUsdGhhbiIKKysgInRvcmlnaHR0aGVtc2VsdmVzYnlhYm9saXNoaW5ndGhlZm9ybXN0b3doaWNodGhleWFyZWFjY3VzdG9tZWQuQnV0d2hlbmFsb25ndHJhaW5vZmFidXNlc2FuZHVzdXJwYXRpb25zLCIKKysgInB1cnN1aW5naW52YXJpYWJseXRoZXNhbWVvYmplY3RldmluY2VzYWRlc2lnbnRvcmVkdWNldGhlbXVuZGVyYWJzb2x1dGVkZXNwb3Rpc20saXRpc3RoZWlycmlnaHQsaXRpc3RoZWlyZHV0eSwiCisrICJ0b3Rocm93b2Zmc3VjaGdvdmVybm1lbnQsYW5kdG9wcm92aWRlbmV3Z3VhcmRzZm9ydGhlaXJmdXR1cmVzZWN1cml0eS4tLVN1Y2hoYXNiZWVudGhlcGF0aWVudHN1ZmZlcmFuY2VvZiIKKysgInRoZXNlY29sb25pZXM7YW5kc3VjaGlzbm93dGhlbmVjZXNzaXR5d2hpY2hjb25zdHJhaW5zdGhlbXRvYWx0ZXJ0aGVpcmZvcm1lcnN5c3RlbXNvZmdvdmVybm1lbnQuVGhlaGlzdG9yeSIKKysgIm9mdGhlcHJlc2VudEtpbmdvZkdyZWF0QnJpdGFpbmlzYWhpc3RvcnlvZnJlcGVhdGVkaW5qdXJpZXNhbmR1c3VycGF0aW9ucyxhbGxoYXZpbmdpbmRpcmVjdG9iamVjdHRoZSIKKysgImVzdGFibGlzaG1lbnRvZmFuYWJzb2x1dGV0eXJhbm55b3ZlcnRoZXNlc3RhdGVzLlRvcHJvdmV0aGlzLGxldGZhY3RzYmVzdWJtaXR0ZWR0b2FjYW5kaWR3b3JsZC5cbiIKKysgIkhlaGFzcmVmdXNlZGhpc2Fzc2VudHRvbGF3cyx0aGVtb3N0d2hvbGVzb21lYW5kbmVjZXNzYXJ5Zm9ydGhlcHVibGljZ29vZC5cbiIKKysgIkhlaGFzZm9yYmlkZGVuaGlzZ292ZXJub3JzdG9wYXNzbGF3c29maW1tZWRpYXRlYW5kcHJlc3NpbmdpbXBvcnRhbmNlLHVubGVzc3N1c3BlbmRlZGludGhlaXJvcGVyYXRpb250aWxsIgorKyAiaGlzYXNzZW50c2hvdWxkYmVvYnRhaW5lZDthbmR3aGVuc29zdXNwZW5kZWQsaGVoYXN1dHRlcmx5bmVnbGVjdGVkdG9hdHRlbmR0b3RoZW0uXG4iCisrICJIZWhhc3JlZnVzZWR0b3Bhc3NvdGhlcmxhd3Nmb3J0aGVhY2NvbW1vZGF0aW9ub2ZsYXJnZWRpc3RyaWN0c29mcGVvcGxlLHVubGVzc3Rob3NlcGVvcGxld291bGRyZWxpbnF1aXNoIgorKyAidGhlcmlnaHRvZnJlcHJlc2VudGF0aW9uaW50aGVsZWdpc2xhdHVyZSxhcmlnaHRpbmVzdGltYWJsZXRvdGhlbWFuZGZvcm1pZGFibGV0b3R5cmFudHNvbmx5LlxuIgorKyAiSGVoYXNjYWxsZWR0b2dldGhlcmxlZ2lzbGF0aXZlYm9kaWVzYXRwbGFjZXN1bnVzdWFsLHVuY29tZm9ydGFibGUsYW5kZGlzdGFudGZyb210aGVkZXBvc2l0b3J5b2Z0aGVpcnB1YmxpYyIKKysgInJlY29yZHMsZm9ydGhlc29sZXB1cnBvc2VvZmZhdGlndWluZ3RoZW1pbnRvY29tcGxpYW5jZXdpdGhoaXNtZWFzdXJlcy5cbiIKKysgIkhlaGFzZGlzc29sdmVkcmVwcmVzZW50YXRpdmVob3VzZXNyZXBlYXRlZGx5LGZvcm9wcG9zaW5nd2l0aG1hbmx5ZmlybW5lc3NoaXNpbnZhc2lvbnNvbnRoZXJpZ2h0c29mdGhlcGVvcGxlLlxuIgorKyAiSGVoYXNyZWZ1c2VkZm9yYWxvbmd0aW1lLGFmdGVyc3VjaGRpc3NvbHV0aW9ucyx0b2NhdXNlb3RoZXJzdG9iZWVsZWN0ZWQ7d2hlcmVieXRoZWxlZ2lzbGF0aXZlcG93ZXJzLCIKKysgImluY2FwYWJsZW9mYW5uaWhpbGF0aW9uLGhhdmVyZXR1cm5lZHRvdGhlcGVvcGxlYXRsYXJnZWZvcnRoZWlyZXhlcmNpc2U7dGhlc3RhdGVyZW1haW5pbmdpbnRoZW1lYW50aW1lZXhwb3NlZCIKKysgInRvYWxsdGhlZGFuZ2Vyc29maW52YXNpb25mcm9td2l0aG91dCxhbmRjb252dWxzaW9uc3dpdGhpbi5cbiIKKysgIkhlaGFzZW5kZWF2b3JlZHRvcHJldmVudHRoZXBvcHVsYXRpb25vZnRoZXNlc3RhdGVzO2ZvcnRoYXRwdXJwb3Nlb2JzdHJ1Y3Rpbmd0aGVsYXdzZm9ybmF0dXJhbGl6YXRpb25vZiIKKysgImZvcmVpZ25lcnM7cmVmdXNpbmd0b3Bhc3NvdGhlcnN0b2VuY291cmFnZXRoZWlybWlncmF0aW9uaGl0aGVyLGFuZHJhaXNpbmd0aGVjb25kaXRpb25zb2ZuZXdhcHByb3ByaWF0aW9uc29mIgorKyAibGFuZHMuXG4iCisrICJIZWhhc29ic3RydWN0ZWR0aGVhZG1pbmlzdHJhdGlvbm9manVzdGljZSxieXJlZnVzaW5naGlzYXNzZW50dG9sYXdzZm9yZXN0YWJsaXNoaW5nanVkaWNpYXJ5cG93ZXJzLlxuIgorKyAiSGVoYXNtYWRlanVkZ2VzZGVwZW5kZW50b25oaXN3aWxsYWxvbmUsZm9ydGhldGVudXJlb2Z0aGVpcm9mZmljZXMsYW5kdGhlYW1vdW50YW5kcGF5bWVudG9mdGhlaXJzYWxhcmllcy5cbiIKKysgIkhlaGFzZXJlY3RlZGFtdWx0aXR1ZGVvZm5ld29mZmljZXMsYW5kc2VudGhpdGhlcnN3YXJtc29mb2ZmaWNlcnN0b2hhcmFzc291cnBlb3BsZSxhbmRlYXRvdXR0aGVpciIKKysgInN1YnN0YW5jZS5cbiIKKysgIkhlaGFza2VwdGFtb25ndXMsaW50aW1lc29mcGVhY2Usc3RhbmRpbmdhcm1pZXN3aXRob3V0dGhlY29uc2VudG9mb3VybGVnaXNsYXR1cmUuXG4iCisrICJIZWhhc2FmZmVjdGVkdG9yZW5kZXJ0aGVtaWxpdGFyeWluZGVwZW5kZW50b2ZhbmRzdXBlcmlvcnRvY2l2aWxwb3dlci5cbiIKKysgIkhlaGFzY29tYmluZWR3aXRob3RoZXJzdG9zdWJqZWN0dXN0b2FqdXJpc2RpY3Rpb25mb3JlaWdudG9vdXJjb25zdGl0dXRpb24sYW5kdW5hY2tub3dsZWRnZWRieW91cmxhd3M7IgorKyAiZ2l2aW5naGlzYXNzZW50dG90aGVpcmFjdHNvZnByZXRlbmRlZGxlZ2lzbGF0aW9uOlxuIgorKyAiRm9ycXVhcnRlcmluZ2xhcmdlYm9kaWVzb2Zhcm1lZHRyb29wc2Ftb25ndXM6XG4iCisrICJGb3Jwcm90ZWN0aW5ndGhlbSxieW1vY2t0cmlhbCxmcm9tcHVuaXNobWVudGZvcmFueW11cmRlcnN3aGljaHRoZXlzaG91bGRjb21taXRvbnRoZWluaGFiaXRhbnRzb2Z0aGVzZSIKKysgInN0YXRlczpcbiIKKysgIkZvcmN1dHRpbmdvZmZvdXJ0cmFkZXdpdGhhbGxwYXJ0c29mdGhld29ybGQ6XG4iCisrICJGb3JpbXBvc2luZ3RheGVzb251c3dpdGhvdXRvdXJjb25zZW50OlxuIgorKyAiRm9yZGVwcml2aW5ndXNpbm1hbnljYXNlcyxvZnRoZWJlbmVmaXRzb2Z0cmlhbGJ5anVyeTpcbiIKKysgIkZvcnRyYW5zcG9ydGluZ3VzYmV5b25kc2Vhc3RvYmV0cmllZGZvcnByZXRlbmRlZG9mZmVuc2VzOlxuIgorKyAiRm9yYWJvbGlzaGluZ3RoZWZyZWVzeXN0ZW1vZkVuZ2xpc2hsYXdzaW5hbmVpZ2hib3Jpbmdwcm92aW5jZSxlc3RhYmxpc2hpbmd0aGVyZWluYW5hcmJpdHJhcnlnb3Zlcm5tZW50LGFuZCIKKysgImVubGFyZ2luZ2l0c2JvdW5kYXJpZXNzb2FzdG9yZW5kZXJpdGF0b25jZWFuZXhhbXBsZWFuZGZpdGluc3RydW1lbnRmb3JpbnRyb2R1Y2luZ3RoZXNhbWVhYnNvbHV0ZXJ1bGVpbnRoZXNlIgorKyAiY29sb25pZXM6XG4iCisrICJGb3J0YWtpbmdhd2F5b3VyY2hhcnRlcnMsYWJvbGlzaGluZ291cm1vc3R2YWx1YWJsZWxhd3MsYW5kYWx0ZXJpbmdmdW5kYW1lbnRhbGx5dGhlZm9ybXNvZm91cmdvdmVybm1lbnRzOlxuIgorKyAiRm9yc3VzcGVuZGluZ291cm93bmxlZ2lzbGF0dXJlcyxhbmRkZWNsYXJpbmd0aGVtc2VsdmVzaW52ZXN0ZWR3aXRocG93ZXJ0b2xlZ2lzbGF0ZWZvcnVzaW5hbGxjYXNlc3doYXRzb2V2ZXIuXG4iCisrICJIZWhhc2FiZGljYXRlZGdvdmVybm1lbnRoZXJlLGJ5ZGVjbGFyaW5ndXNvdXRvZmhpc3Byb3RlY3Rpb25hbmR3YWdpbmd3YXJhZ2FpbnN0dXMuXG4iCisrICJIZWhhc3BsdW5kZXJlZG91cnNlYXMscmF2YWdlZG91cmNvYXN0cyxidXJuZWRvdXJ0b3ducyxhbmRkZXN0cm95ZWR0aGVsaXZlc29mb3VycGVvcGxlLlxuIgorKyAiSGVpc2F0dGhpc3RpbWV0cmFuc3BvcnRpbmdsYXJnZWFybWllc29mZm9yZWlnbm1lcmNlbmFyaWVzdG9jb21wbGV0ZXRoZXdvcmtzb2ZkZWF0aCxkZXNvbGF0aW9uYW5kdHlyYW5ueSwiCisrICJhbHJlYWR5YmVndW53aXRoY2lyY3Vtc3RhbmNlc29mY3J1ZWx0eWFuZHBlcmZpZHlzY2FyY2VseXBhcmFsbGVsZWRpbnRoZW1vc3RiYXJiYXJvdXNhZ2VzLGFuZHRvdGFsbHl1bndvcnRoeSIKKysgInRoZWhlYWRvZmFjaXZpbGl6ZWRuYXRpb24uXG4iCisrICJIZWhhc2NvbnN0cmFpbmVkb3VyZmVsbG93Y2l0aXplbnN0YWtlbmNhcHRpdmVvbnRoZWhpZ2hzZWFzdG9iZWFyYXJtc2FnYWluc3R0aGVpcmNvdW50cnksdG9iZWNvbWV0aGUiCisrICJleGVjdXRpb25lcnNvZnRoZWlyZnJpZW5kc2FuZGJyZXRocmVuLG9ydG9mYWxsdGhlbXNlbHZlc2J5dGhlaXJoYW5kcy5cbiIKKysgIkhlaGFzZXhjaXRlZGRvbWVzdGljaW5zdXJyZWN0aW9uc2Ftb25nc3R1cyxhbmRoYXNlbmRlYXZvcmVkdG9icmluZ29udGhlaW5oYWJpdGFudHNvZm91cmZyb250aWVycyx0aGUiCisrICJtZXJjaWxlc3NJbmRpYW5zYXZhZ2VzLHdob3Nla25vd25ydWxlb2Z3YXJmYXJlLGlzdW5kaXN0aW5ndWlzaGVkZGVzdHJ1Y3Rpb25vZmFsbGFnZXMsc2V4ZXNhbmRjb25kaXRpb25zLlxuIgorKyAiSW5ldmVyeXN0YWdlb2Z0aGVzZW9wcHJlc3Npb25zd2VoYXZlcGV0aXRpb25lZGZvcnJlZHJlc3NpbnRoZW1vc3RodW1ibGV0ZXJtczpvdXJyZXBlYXRlZHBldGl0aW9uc2hhdmUiCisrICJiZWVuYW5zd2VyZWRvbmx5YnlyZXBlYXRlZGluanVyeS5BcHJpbmNlLHdob3NlY2hhcmFjdGVyaXN0aHVzbWFya2VkYnlldmVyeWFjdHdoaWNobWF5ZGVmaW5lYXR5cmFudCxpcyIKKysgInVuZml0dG9iZXRoZXJ1bGVyb2ZhZnJlZXBlb3BsZS5cbiIKKysgIk5vcmhhdmV3ZWJlZW53YW50aW5naW5hdHRlbnRpb250b291ckJyaXRpc2hicmV0aHJlbi5XZWhhdmV3YXJuZWR0aGVtZnJvbXRpbWV0b3RpbWVvZmF0dGVtcHRzYnl0aGVpciIKKysgImxlZ2lzbGF0dXJldG9leHRlbmRhbnVud2FycmFudGFibGVqdXJpc2RpY3Rpb25vdmVydXMuV2VoYXZlcmVtaW5kZWR0aGVtb2Z0aGVjaXJjdW1zdGFuY2Vzb2ZvdXJlbWlncmF0aW9uIgorKyAiYW5kc2V0dGxlbWVudGhlcmUuV2VoYXZlYXBwZWFsZWR0b3RoZWlybmF0aXZlanVzdGljZWFuZG1hZ25hbmltaXR5LGFuZHdlaGF2ZWNvbmp1cmVkdGhlbWJ5dGhldGllc29mb3VyIgorKyAiY29tbW9ua2luZHJlZHRvZGlzYXZvd3RoZXNldXN1cnBhdGlvbnMsd2hpY2gsd291bGRpbmV2aXRhYmx5aW50ZXJydXB0b3VyY29ubmVjdGlvbnNhbmRjb3JyZXNwb25kZW5jZS5XZSIKKysgIm11c3QsdGhlcmVmb3JlLGFjcXVpZXNjZWludGhlbmVjZXNzaXR5LHdoaWNoZGVub3VuY2Vzb3Vyc2VwYXJhdGlvbixhbmRob2xkdGhlbSxhc3dlaG9sZHRoZXJlc3RvZm1hbmtpbmQsIgorKyAiZW5lbWllc2lud2FyLGlucGVhY2VmcmllbmRzLlxuIgorKyAiV2UsdGhlcmVmb3JlLHRoZXJlcHJlc2VudGF0aXZlc29mdGhlVW5pdGVkU3RhdGVzb2ZBbWVyaWNhLGluR2VuZXJhbENvbmdyZXNzLGFzc2VtYmxlZCxhcHBlYWxpbmd0b3RoZSIKKysgIlN1cHJlbWVKdWRnZW9mdGhld29ybGRmb3J0aGVyZWN0aXR1ZGVvZm91cmludGVudGlvbnMsZG8saW50aGVuYW1lLGFuZGJ5dGhlYXV0aG9yaXR5b2Z0aGVnb29kcGVvcGxlb2YiCisrICJ0aGVzZWNvbG9uaWVzLHNvbGVtbmx5cHVibGlzaGFuZGRlY2xhcmUsdGhhdHRoZXNldW5pdGVkY29sb25pZXNhcmUsYW5kb2ZyaWdodG91Z2h0dG9iZWZyZWVhbmRpbmRlcGVuZGVudCIKKysgInN0YXRlczt0aGF0dGhleWFyZWFic29sdmVkZnJvbWFsbGFsbGVnaWFuY2V0b3RoZUJyaXRpc2hDcm93bixhbmR0aGF0YWxscG9saXRpY2FsY29ubmVjdGlvbmJldHdlZW50aGVtYW5kdGhlIgorKyAic3RhdGVvZkdyZWF0QnJpdGFpbixpc2FuZG91Z2h0dG9iZXRvdGFsbHlkaXNzb2x2ZWQ7YW5kdGhhdGFzZnJlZWFuZGluZGVwZW5kZW50c3RhdGVzLHRoZXloYXZlZnVsbHBvd2VydG8iCisrICJsZXZleXdhcixjb25jbHVkZXBlYWNlLGNvbnRyYWN0YWxsaWFuY2VzLGVzdGFibGlzaGNvbW1lcmNlLGFuZHRvZG9hbGxvdGhlcmFjdHNhbmR0aGluZ3N3aGljaGluZGVwZW5kZW50IgorKyAic3RhdGVzbWF5b2ZyaWdodGRvLkFuZGZvcnRoZXN1cHBvcnRvZnRoaXNkZWNsYXJhdGlvbix3aXRoYWZpcm1yZWxpYW5jZW9udGhlcHJvdGVjdGlvbm9mRGl2aW5lUHJvdmlkZW5jZSx3ZSIKKysgIm11dHVhbGx5cGxlZGdldG9lYWNob3RoZXJvdXJsaXZlcyxvdXJmb3J0dW5lc2FuZG91cnNhY3JlZGhvbm9yLlxuIjsKKyAgICB9CisKKworICAgIHB1YmxpYyB2b2lkIGhhbmRsZUVudW1DaGFuZ2VkKCkKKyAgICB7CisgICAgICAgIFN0cmluZyBzID0gYm91bmQuZ2V0U2VsZWN0ZWRJdGVtKCk7CisgICAgICAgIGlmIChzLmVxdWFscygiQ2hhciIpKSB7CisgICAgICAgICAgICBlcnJvclRleHQoImdldENoYXJhY3Rlckluc3RhbmNlIik7CisgICAgICAgICAgICBlbnVtID0gQnJlYWtJdGVyYXRvci5nZXRDaGFyYWN0ZXJJbnN0YW5jZSgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHMuZXF1YWxzKCJXb3JkIikpIHsKKyAgICAgICAgICAgIGVycm9yVGV4dCgiZ2V0V29yZEluc3RhbmNlIik7CisgICAgICAgICAgICBlbnVtID0gQnJlYWtJdGVyYXRvci5nZXRXb3JkSW5zdGFuY2UoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChzLmVxdWFscygiTGluZSBCcmVhayIpKSB7CisgICAgICAgICAgICBlcnJvclRleHQoImdldExpbmVJbnN0YW5jZSIpOworICAgICAgICAgICAgZW51bSA9IEJyZWFrSXRlcmF0b3IuZ2V0TGluZUluc3RhbmNlKCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSAvKiBpZiAocy5lcXVhbHMoIlNlbnRlbmNlIikpICovIHsKKyAgICAgICAgICAgIGVycm9yVGV4dCgiZ2V0U2VudGVuY2VJbnN0YW5jZSIpOworICAgICAgICAgICAgZW51bSA9IEJyZWFrSXRlcmF0b3IuZ2V0U2VudGVuY2VJbnN0YW5jZSgpOworICAgICAgICB9CisgICAgICAgIGVudW0uc2V0VGV4dCh0ZXh0LmdldFRleHQoKSk7CisgICAgICAgIHNlbGVjdFJhbmdlKDAsIDApOworICAgICAgICAvL3RleHQuc2VsZWN0KDAsMCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgaGFuZGxlRm9yd2FyZCgpCisgICAgeworICAgICAgICB0cnkgeworLy8gICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJlbnRlcmluZyBoYW5kbGVGb3J3YXJkIik7CisgICAgICAgICAgICBlbnVtLnNldFRleHQodGV4dC5nZXRUZXh0KCkpOworICAgICAgICAgICAgaW50IG9sZFN0YXJ0ID0gZ2V0U2VsZWN0aW9uU3RhcnQoKTsKKyAgICAgICAgICAgIGludCBvbGRFbmQgPSBnZXRTZWxlY3Rpb25FbmQoKTsKKworLy8gICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJoYW5kbGVGb3J3YXJkOiBvbGRTdGFydD0iICsgb2xkU3RhcnQgKyAiLCBvbGRFbmQ9IiArIG9sZEVuZCk7CisKKyAgICAgICAgICAgIGlmIChvbGRFbmQgPCAxKSB7CisgICAgICAgICAgICAgICAgc2VsZWN0UmFuZ2UoMCwgZW51bS5mb2xsb3dpbmcoMCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaW50IHMgPSBlbnVtLmZvbGxvd2luZyhvbGRFbmQtMSk7CisgICAgICAgICAgICAgICAgaW50IGUgPSBlbnVtLm5leHQoKTsKKyAgICAgICAgICAgICAgICBpZiAoZSA9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICBlID0gczsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc2VsZWN0UmFuZ2UocywgZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvL3RleHQuc2VsZWN0KHMsIGUpOworICAgICAgICAgICAgZXJyb3JUZXh0KCI8IiArIG9sZFN0YXJ0ICsgIiwiICsgb2xkRW5kICsgIj4gLT4gPCIgKworICAgICAgICAgICAgICAgIHMgKyAiLCIgKyBlICsgIj4iKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGV4cCkgeworICAgICAgICAgICAgZXJyb3JUZXh0KGV4cC50b1N0cmluZygpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGhhbmRsZUJhY2t3YXJkKCkKKyAgICB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBlbnVtLnNldFRleHQodGV4dC5nZXRUZXh0KCkpOworICAgICAgICAgICAgaW50IG9sZFN0YXJ0ID0gZ2V0U2VsZWN0aW9uU3RhcnQoKTsKKyAgICAgICAgICAgIGludCBvbGRFbmQgPSBnZXRTZWxlY3Rpb25FbmQoKTsKKyAgICAgICAgICAgIGlmIChvbGRTdGFydCA8IDEpIHsKKyAgICAgICAgICAgICAgICBzZWxlY3RSYW5nZSgwLCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGludCBlID0gZW51bS5mb2xsb3dpbmcob2xkU3RhcnQtMSk7CisgICAgICAgICAgICAgICAgaW50IHMgPSBlbnVtLnByZXZpb3VzKCk7CisgICAgICAgICAgICAgICAgc2VsZWN0UmFuZ2UocywgZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvL3RleHQuc2VsZWN0KHMsIGUpOworICAgICAgICAgICAgZXJyb3JUZXh0KCI8IiArIG9sZFN0YXJ0ICsgIiwiICsgb2xkRW5kICsgIj4gLT4gPCIgKyBzICsgIiwiICsgZSArICI+Iik7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBleHApIHsKKyAgICAgICAgICAgIGVycm9yVGV4dChleHAudG9TdHJpbmcoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBpdGVtU3RhdGVDaGFuZ2VkKEl0ZW1FdmVudCBldnQpCisgICAgeworICAgICAgICBpZiAoZXZ0LmdldFNvdXJjZSgpIGluc3RhbmNlb2YgQ2hvaWNlKSB7CisgICAgICAgICAgICBoYW5kbGVFbnVtQ2hhbmdlZCgpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgZXJyb3JUZXh0KFN0cmluZyBzKQorICAgIHsKKyAgICAgICBpZiAoREVCVUcpCisgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihzKTsKKyAgICB9CisgICAgCisgICAgcHJvdGVjdGVkIHZvaWQgcHJvY2Vzc1dpbmRvd0V2ZW50KFdpbmRvd0V2ZW50IGV2dCkKKyAgICB7CisgICAgICAgIGlmIChldnQuZ2V0SUQoKSA9PSBXaW5kb3dFdmVudC5XSU5ET1dfQ0xPU0lORyAmJiAKKyAgICAgICAgICAgIGV2dC5nZXRXaW5kb3coKSA9PSB0aGlzKSB7CisgICAgICAgICAgICBoaWRlKCk7CisgICAgICAgICAgICBkaXNwb3NlKCk7CisgICAgICAgICAgICBpZiAoYXBwbGV0ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBhcHBsZXQuZGVtb0Nsb3NlZCgpOworICAgICAgICAgICAgfSBlbHNlIFN5c3RlbS5leGl0KDApOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHByb3RlY3RlZCB2b2lkIHByb2Nlc3NLZXlFdmVudChLZXlFdmVudCBldnQpCisgICAgeworICAgICAgICBzd2l0Y2ggKGV2dC5nZXRJRCgpKSB7CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWV9QUkVTU0VEIDoKKyAgICAgICAgICAgICAgICBpZiAoZXZ0LmdldEtleUNvZGUoKSA9PSBLZXlFdmVudC5WS19DT05UUk9MKSB7CisgICAgICAgICAgICAgICAgICAgIGlzY3RybGRvd25fID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWV9SRUxFQVNFRCA6CisgICAgICAgICAgICAgICAgLy8ga2V5IGRldGVjdGlvbiBmb3IgbGVmdCBhbmQgcmlnaHQgYnV0dG9ucyBhcmUgcmVtb3ZlZAorICAgICAgICAgICAgICAgIC8vIHRvIGVtdWxhdGUgdGhlIG9sZCByZWxlYXNlIGJlaGF2aW91cgorICAgICAgICAgICAgICAgIGludCBrZXkgPSBldnQuZ2V0S2V5Q29kZSgpOworICAgICAgICAgICAgICAgIGlmIChrZXkgPT0gS2V5RXZlbnQuVktfTiAmJiBpc2N0cmxkb3duXykgeworICAgICAgICAgICAgICAgICAgICBoYW5kbGVGb3J3YXJkKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgCisgICAgICAgICAgICAgICAgaWYgKGtleSA9PSBLZXlFdmVudC5WS19QICYmIGlzY3RybGRvd25fKSB7CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZUJhY2t3YXJkKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgCisgICAgICAgICAgICAgICAgaWYgKGtleSA9PSBLZXlFdmVudC5WS19DT05UUk9MKSB7CisgICAgICAgICAgICAgICAgICAgIGlzY3RybGRvd25fID0gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL3JiYmkvUkJCSURlbW8uamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby9yYmJpL1JCQklEZW1vLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOGQyYjM4MAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby9yYmJpL1JCQklEZW1vLmphdmEKQEAgLTAsMCArMSw0NTIgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby9yYmJpL1JCQklEZW1vLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDgvMDEgMjA6Mjc6MjEgJCAKKyAqICRSZXZpc2lvbjogMS43ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5kZXYuZGVtby5yYmJpOworCitpbXBvcnQgY29tLmlibS5pY3UuZGV2LmRlbW8uKjsKK2ltcG9ydCBqYXZhLmFwcGxldC5BcHBsZXQ7CitpbXBvcnQgamF2YS5hd3QuKjsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5XaW5kb3dFdmVudDsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5LZXlFdmVudDsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5JdGVtTGlzdGVuZXI7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuSXRlbUV2ZW50OworaW1wb3J0IGphdmF4LnN3aW5nLkpUZXh0QXJlYTsKK2ltcG9ydCBqYXZheC5zd2luZy5KU2Nyb2xsUGFuZTsKK2ltcG9ydCBqYXZheC5zd2luZy5Cb3JkZXJGYWN0b3J5OworaW1wb3J0IGphdmEudXRpbC4qOworaW1wb3J0IGNvbS5pYm0uaWN1LmRldi5kZW1vLmltcGwuKjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0LkJyZWFrSXRlcmF0b3I7CisKK3B1YmxpYyBjbGFzcyBSQkJJRGVtbyBleHRlbmRzIERlbW9BcHBsZXQKK3sKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgYXJndltdKSB7CisgICAgICAgIExvY2FsZS5zZXREZWZhdWx0KG5ldyBMb2NhbGUoImVuIiwgIlVTIikpOworCQluZXcgUkJCSURlbW8oKS5zaG93RGVtbygpOworICAgIH0KKworICAgIHB1YmxpYyBGcmFtZSBjcmVhdGVEZW1vRnJhbWUoRGVtb0FwcGxldCBhcHBsZXQpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBSQkJJRnJhbWUoYXBwbGV0KTsKKyAgICB9Cit9CisKKworCitjbGFzcyBSQkJJRnJhbWUgZXh0ZW5kcyBGcmFtZSBpbXBsZW1lbnRzIEl0ZW1MaXN0ZW5lcgoreworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBjcmVkaXRTdHJpbmcgPQorICAgICAgICAidjEuMWE5LCBEZW1vIjsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBGSUVMRF9DT0xVTU5TID0gNDU7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgRm9udCBjaG9pY2VGb250ID0gbnVsbDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIERFQlVHID0gZmFsc2U7CisgICAgcHJpdmF0ZSBEZW1vQXBwbGV0IGFwcGxldDsKKworICAgIGZpbmFsIFN0cmluZyByaWdodCA9ICItLT4iOworICAgIGZpbmFsIFN0cmluZyBsZWZ0ID0gIjwtLSI7CisKKyAgICBwcml2YXRlIEJyZWFrSXRlcmF0b3IgZW51bTsKKyAgICBwcml2YXRlIGJvb2xlYW4gICAgICAgaXNjdHJsZG93bl8gPSBmYWxzZTsKKworSlRleHRBcmVhIHRleHQ7CisvLyAgICBUZXh0QXJlYSB0ZXh0OworICAgIENob2ljZSBib3VuZDsKKworICAgIHB1YmxpYyBSQkJJRnJhbWUoRGVtb0FwcGxldCBhcHBsZXQpCisgICAgeworICAgICAgICB0aGlzLmFwcGxldCA9IGFwcGxldDsKKyAgICAgICAgaW5pdCgpOworICAgICAgICBzdGFydCgpOworICAgIH0KKworCisKKyAgICBwdWJsaWMgdm9pZCBydW4oKQorICAgIHsKKyAgICAgICAgLyoKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgY2hlY2tDaGFuZ2UoKTsKKyAgICAgICAgICAgICAgICBUaHJlYWQuc2xlZXAoMjUwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhdGNoIChJbnRlcnJ1cHRlZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhdGNoIChUaHJvd2FibGUgZSkgeworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgICovCisgICAgfQorCisgICAgaW50IHMsIGU7CisgICAgaW50IHRzLCB0ZTsKKworICAgIHB1YmxpYyB2b2lkIGNoZWNrQ2hhbmdlKCkKKyAgICB7CisvLyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJjaGVja0NoYW5nZS4uLiIpOworICAgICAgICBpZiAoKHRleHQuZ2V0U2VsZWN0aW9uU3RhcnQoKSAmIDB4N0ZGRikgIT0gdHMgfHwKKyAgICAgICAgICAgICh0ZXh0LmdldFNlbGVjdGlvbkVuZCgpICYgMHg3RkZGKSAhPSB0ZSkgeworCisgICAgICAgICAgICAvLyBub3QgdXNlZCBpbnQgdGVtcFMgPSB0ZXh0LmdldFNlbGVjdGlvblN0YXJ0KCkgJiAweDdGRkY7CisgICAgICAgICAgICAvLyBub3QgdXNlZCBpbnQgdGVtcEUgPSB0ZXh0LmdldFNlbGVjdGlvbkVuZCgpICYgMHg3RkZGOworCisvLyAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIj4iKTsKKy8vICAgICAgICAgIHNlbGVjdCgwLCAwKTsKKy8vICAgICAgICAgIHNlbGVjdCh0ZW1wUywgdGVtcEUpOworICAgICAgICAgICAgLy9zZWxlY3QodGVtcFMgLSAodHMgLSBzKSwgdGVtcEUgLSAodGUgLSBlKSk7CisvLyAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIjwiKTsKKworCisvLyAgICAgICAgICBpZiAocyAhPSB0cyB8fCBlICE9IHRlKSBTeXN0ZW0ub3V0LnByaW50bG4oIiAgICAgcygiK3MrIikgdHMoIit0cysiKSBlKCIrZSsiKSB0ZSgiK3RlKyIpIik7CisvLyAgICAgICAgICBpZiAodGVtcFMgIT0gdHMgfHwgdGVtcEUgIT0gdGUpIFN5c3RlbS5vdXQucHJpbnRsbigiPnMoIitzKyIpIHRlbXBTKCIrdGVtcFMrIikgZSgiK2UrIikgdGVtcEUoIit0ZW1wRSsiKSIpOworLy8gICAgICAgICAgc2VsZWN0KHMgLSAodHMgLSBzKSwgZSAtICh0ZSAtIGUpKTsKKy8vICAgICAgICAgIGlmICh0ZW1wUyAhPSB0cyB8fCB0ZW1wRSAhPSB0ZSkgU3lzdGVtLm91dC5wcmludGxuKCJzKCIrcysiKSB0ZW1wUygiK3RlbXBTKyIpIGUoIitlKyIpIHRlbXBFKCIrdGVtcEUrIikiKTsKKworLy8gICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJsa2RzbGtzaiIpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2VsZWN0KGludCBzSW4sIGludCBlSW4pCisgICAgeworICAgICAgICBzID0gc0luOworICAgICAgICBlID0gZUluOworICAgICAgICB0ZXh0LnNlbGVjdChzLCBlKTsKKyAgICAgICAgdHMgPSB0ZXh0LmdldFNlbGVjdGlvblN0YXJ0KCkgJiAweDdGRkY7CisgICAgICAgIHRlID0gdGV4dC5nZXRTZWxlY3Rpb25FbmQoKSAmIDB4N0ZGRjsKKy8vICAgICAgICBpZiAocyAhPSB0cyB8fCBlICE9IHRlKSB7CisvLyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiPnMoIitzKyIpIHRzKCIrdHMrIikgZSgiK2UrIikgdGUoIit0ZSsiKSIpOworLy8gICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiAgICIrKHRzLXMpKyIsIisodGUtZSkpOworLy8gICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgaW50IGdldFNlbGVjdGlvblN0YXJ0KCkKKyAgICB7CisgICAgICAgIGNoZWNrQ2hhbmdlKCk7CisvLyAgICAgIHJldHVybiBzOworICAgICAgICByZXR1cm4gdGV4dC5nZXRTZWxlY3Rpb25TdGFydCgpICYgMHg3RkZGOworICAgIH0KKworCisgICAgcHVibGljIGludCBnZXRTZWxlY3Rpb25FbmQoKQorICAgIHsKKyAgICAgICAgY2hlY2tDaGFuZ2UoKTsKKy8vICAgICAgcmV0dXJuIGU7CisgICAgICAgIHJldHVybiB0ZXh0LmdldFNlbGVjdGlvbkVuZCgpICYgMHg3RkZGOworICAgIH0KKworICAgIHB1YmxpYyBmaW5hbCBzeW5jaHJvbml6ZWQgdm9pZCBzZWxlY3RSYW5nZShpbnQgcywgaW50IGUpCisgICAgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgLy9pZiAoZ2V0U2VsZWN0aW9uU3RhcnQoKSAhPSBzIHx8IGdldFNlbGVjdGlvbkVuZCgpICE9IGUpIHsKKyAgICAgICAgICAgICAgICAvL3RleHQuc2VsZWN0KHMsIGUpOworICAgICAgICAgICAgICAgIHNlbGVjdChzLGUpOworICAgICAgICAgICAgLy99CisvLyAgICAgICAgICBpZiAoZ2V0U2VsZWN0aW9uU3RhcnQoKSAhPSBzIHx8IGdldFNlbGVjdGlvbkVuZCgpICE9IGUpIHsKKy8vICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkFHSCEgc2VsZWN0KCIrcysiLCIrZSsiKSAtPiAoIisKKy8vICAgICAgICAgICAgICBnZXRTZWxlY3Rpb25TdGFydCgpKyIsIitnZXRTZWxlY3Rpb25FbmQoKSsiKSIpOworLy8gICAgICAgICAgICAgIHRleHQuc2VsZWN0KHMgLSAoZ2V0U2VsZWN0aW9uU3RhcnQoKSAtIHMpLCBlIC0gKGdldFNlbGVjdGlvbkVuZCgpIC0gZSkpOworLy8gICAgICAgICAgfQorICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXhwKSB7CisgICAgICAgICAgICBlcnJvclRleHQoZXhwLnRvU3RyaW5nKCkpOworICAgICAgICB9CisgICAgfQorCisKKworICAgIHB1YmxpYyB2b2lkIGluaXQoKQorICAgIHsKKyAgICAgICAgYnVpbGRHVUkoKTsKKyAgICB9CisKKworICAgIHB1YmxpYyB2b2lkIHN0YXJ0KCkKKyAgICB7CisgICAgfQorCisKKyAgICB2b2lkIGFkZFdpdGhGb250KENvbnRhaW5lciBjb250YWluZXIsIENvbXBvbmVudCBmb28sIEZvbnQgZm9udCkgeworICAgICAgICBpZiAoZm9udCAhPSBudWxsKQorICAgICAgICAgICAgZm9vLnNldEZvbnQoZm9udCk7CisgICAgICAgIGNvbnRhaW5lci5hZGQoZm9vKTsKKyAgICB9CisKKworCisgICBwdWJsaWMgdm9pZCBidWlsZEdVSSgpCisgICAgeworICAgICAgICBzZXRCYWNrZ3JvdW5kKERlbW9VdGlsaXR5LmJnQ29sb3IpOworICAgICAgICBzZXRMYXlvdXQobmV3IEJvcmRlckxheW91dCgpKTsKKworICAgICAgIFBhbmVsIHRvcFBhbmVsID0gbmV3IFBhbmVsKCk7CisKKyAgICAgICAgICAgIExhYmVsIHRpdGxlTGFiZWwgPQorICAgICAgICAgICAgICAgIG5ldyBMYWJlbCgiRGV2YSBUZXh0IEJvdW5kYXJ5IERlbW8iLCBMYWJlbC5DRU5URVIpOworICAgICAgICAgICAgdGl0bGVMYWJlbC5zZXRGb250KERlbW9VdGlsaXR5LnRpdGxlRm9udCk7CisgICAgICAgICAgICB0b3BQYW5lbC5hZGQodGl0bGVMYWJlbCk7CisKKyAgICAgICAgICAgIC8vTGFiZWwgZGVtbz1uZXcgTGFiZWwoY3JlZGl0U3RyaW5nLCBMYWJlbC5DRU5URVIpOworICAgICAgICAgICAgLy9kZW1vLnNldEZvbnQoRGVtb1V0aWxpdHkuY3JlZGl0Rm9udCk7CisgICAgICAgICAgICAvL3RvcFBhbmVsLmFkZChkZW1vKTsKKworICAgICAgICAgICAgUGFuZWwgY2hvaWNlUGFuZWwgPSBuZXcgUGFuZWwoKTsKKworICAgICAgICAgICAgTGFiZWwgZGVtbzE9bmV3IExhYmVsKCJCb3VuZGFyaWVzIiwgTGFiZWwuTEVGVCk7CisgICAgICAgICAgICBkZW1vMS5zZXRGb250KERlbW9VdGlsaXR5LmxhYmVsRm9udCk7CisgICAgICAgICAgICBjaG9pY2VQYW5lbC5hZGQoZGVtbzEpOworCisgICAgICAgICAgICBib3VuZCA9IG5ldyBDaG9pY2UoKTsKKyAgICAgICAgICAgICAgICBib3VuZC5zZXRCYWNrZ3JvdW5kKERlbW9VdGlsaXR5LmNob2ljZUNvbG9yKTsKKyAgICAgICAgICAgIGJvdW5kLmFkZEl0ZW0oIlNlbnRlbmNlIik7CisgICAgICAgICAgICBib3VuZC5hZGRJdGVtKCJMaW5lIEJyZWFrIik7CisgICAgICAgICAgICBib3VuZC5hZGRJdGVtKCJXb3JkIik7CisgICAgICAgICAgICBib3VuZC5hZGRJdGVtKCJDaGFyIik7CisgICAgICAgICAgICBib3VuZC5hZGRJdGVtTGlzdGVuZXIodGhpcyk7CisgICAgICAgICAgICBpZiAoY2hvaWNlRm9udCAhPSBudWxsKQorICAgICAgICAgICAgICAgIGJvdW5kLnNldEZvbnQoY2hvaWNlRm9udCk7CisKKyAgICAgICAgICAgIGNob2ljZVBhbmVsLmFkZChib3VuZCk7CisgICAgICAgICAgICB0b3BQYW5lbC5hZGQoY2hvaWNlUGFuZWwpOworCisgICAgICAgICAgICBEZW1vVXRpbGl0eS5maXhHcmlkKHRvcFBhbmVsLDEpOworCisKKyAgICAgICAgYWRkKCJOb3J0aCIsIHRvcFBhbmVsKTsKKworCisgICAgICAgICAgICBpbnQgUk9XUyA9IDE1OworICAgICAgICAgICAgaW50IENPTFVNTlMgPSA1MDsKKy8vICAgICAgICAgICAgdGV4dCA9IG5ldyBUZXh0QXJlYShnZXRJbml0aWFsVGV4dCgpLCBST1dTLCBDT0xVTU5TKTsKKyAgICAgICAgICAgIHRleHQgPSBuZXcgSlRleHRBcmVhKGdldEluaXRpYWxUZXh0KCksIFJPV1MsIENPTFVNTlMpOworICAgICAgICAgICAgdGV4dC5zZXRMaW5lV3JhcCh0cnVlKTsKKyAgICAgICAgICAgIHRleHQuc2V0V3JhcFN0eWxlV29yZCh0cnVlKTsKKyAgICAgICAgICAgIHRleHQuc2V0RWRpdGFibGUodHJ1ZSk7CisgICAgICAgICAgICB0ZXh0LnNlbGVjdEFsbCgpOworICAgICAgICAgICAgdGV4dC5zZXRGb250KG5ldyBGb250KCJEZXZhbmFnYXJpIE1UIGZvciBJQk0iLCBGb250LlBMQUlOLCA0OCkpOworICAgICAgICAgICAgdGV4dC5zZXRCb3JkZXIoQm9yZGVyRmFjdG9yeS5jcmVhdGVFbXB0eUJvcmRlcigyLCAyLCAyLCAyKSk7CisKKyAgICAgICAgYWRkKCJDZW50ZXIiLCBuZXcgSlNjcm9sbFBhbmUodGV4dCwgSlNjcm9sbFBhbmUuVkVSVElDQUxfU0NST0xMQkFSX0FMV0FZUywKKyAgICAgICAgICAgICAgICAgICAgICAgIEpTY3JvbGxQYW5lLkhPUklaT05UQUxfU0NST0xMQkFSX05FVkVSKSk7CisKKyAgICAgICAgUGFuZWwgY29weXJpZ2h0UGFuZWwgPSBuZXcgUGFuZWwoKTsKKyAgICAgICAgYWRkV2l0aEZvbnQgKGNvcHlyaWdodFBhbmVsLAorICAgICAgICAgICAgbmV3IExhYmVsKERlbW9VdGlsaXR5LmNvcHlyaWdodDEsIExhYmVsLkxFRlQpLERlbW9VdGlsaXR5LmNyZWRpdEZvbnQpOworICAgICAgICBEZW1vVXRpbGl0eS5maXhHcmlkKGNvcHlyaWdodFBhbmVsLDEpOworICAgICAgICBhZGQoIlNvdXRoIiwgY29weXJpZ2h0UGFuZWwpOworCisgICAgICAgIC8vbGF5b3V0KCk7CisgICAgICAgIGhhbmRsZUVudW1DaGFuZ2VkKCk7CisgICAgICAgIAorICAgICAgICBlbmFibGVFdmVudHMoV2luZG93RXZlbnQuV0lORE9XX0NMT1NJTkcpOworICAgICAgICBlbmFibGVFdmVudHMoS2V5RXZlbnQuS0VZX1BSRVNTRUQpOworICAgICAgICBlbmFibGVFdmVudHMoS2V5RXZlbnQuS0VZX1JFTEVBU0VEKTsgICAgCisKKyAgICAgICAgLy8gKG5ldyBUaHJlYWQodGhpcykpLnN0YXJ0KCk7CisgICAgfQorCisKKworICAgIHB1YmxpYyBTdHJpbmcgZ2V0SW5pdGlhbFRleHQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuCisgICAgICAgICAgICAiXHUwOTM2XHUwOTRkXHUwOTMwXHUwOTQwXHUwOTJlXHUwOTI2XHUwOTRkICIgKworICAgICAgICAgICAgIlx1MDkyZFx1MDkxN1x1MDkzNVx1MDkyNlx1MDk0ZFx1MDkxN1x1MDk0MFx1MDkyNFx1MDkzZSAiICsKKyAgICAgICAgICAgICJcdTA5MDVcdTA5MjdcdTA5NGRcdTA5MmZcdTA5M2VcdTA5MmYgIiArCisgICAgICAgICAgICAiXHUwOTA1XHUwOTMwXHUwOTRkXHUwOTFjXHUwOTQxXHUwOTI4ICIgKworICAgICAgICAgICAgIlx1MDkzNVx1MDkzZlx1MDkzN1x1MDkzZVx1MDkyNiAiICsKKyAgICAgICAgICAgICJcdTA5MmZcdTA5NGJcdTA5MTcgIiArCisgICAgICAgICAgICAiXHUwOTI3XHUwOTQzXHUwOTI0XHUwOTMwXHUwOTNlXHUwOTM3XHUwOTRkXHUwOTFmXHUwOTRkXHUwOTMwICIgKworICAgICAgICAgICAgIlx1MDkwOVx1MDkzNVx1MDkzRVx1MDkxQVx1MDk0MyAiICsKKyAgICAgICAgICAgICJcdTA5MjdcdTA5MzBcdTA5NGRcdTA5MmVcdTA5MTVcdTA5NGRcdTA5MzdcdTA5NDdcdTA5MjRcdTA5NGRcdTA5MzBcdTA5NDcgIiArCisgICAgICAgICAgICAiXHUwOTE1XHUwOTQxXHUwOTMwXHUwOTQxXHUwOTE1XHUwOTRkXHUwOTM3XHUwOTQ3XHUwOTI0XHUwOTRkXHUwOTMwXHUwOTQ3ICIgKworICAgICAgICAgICAgIlx1MDkzOFx1MDkyZVx1MDkzNVx1MDk0N1x1MDkyNFx1MDkzZSAiICsKKyAgICAgICAgICAgICJcdTA5MmZcdTA5NDFcdTA5MmZcdTA5NDFcdTA5MjRcdTA5NGRcdTA5MzhcdTA5MzVcdTA5MDMgIiArCisgICAgICAgICAgICAiXHUwOTJlXHUwOTNlXHUwOTJlXHUwOTE1XHUwOTNlXHUwOTAzICIgKworICAgICAgICAgICAgIlx1MDkyYVx1MDkzZVx1MDkyM1x1MDk0ZFx1MDkyMVx1MDkzNVx1MDkzZVx1MDkzNlx1MDk0ZFx1MDkxYVx1MDk0OFx1MDkzNSAiICsKKyAgICAgICAgICAgICJcdTA5MTVcdTA5M2ZcdTA5MmVcdTA5MTVcdTA5NDFcdTA5MzBcdTA5NGRcdTA5MzVcdTA5MjQgIiArCisgICAgICAgICAgICAiXHUwOTM4XHUwOTAyXHUwOTFjXHUwOTM1IjsKKyAgICB9CisKKworICAgIHB1YmxpYyB2b2lkIGhhbmRsZUVudW1DaGFuZ2VkKCkKKyAgICB7CisgICAgICAgIFN0cmluZyBzID0gYm91bmQuZ2V0U2VsZWN0ZWRJdGVtKCk7CisgICAgICAgIGlmIChzLmVxdWFscygiQ2hhciIpKSB7CisgICAgICAgICAgICBlcnJvclRleHQoImdldENoYXJhY3Rlckluc3RhbmNlIik7CisgICAgICAgICAgICBlbnVtID0gQnJlYWtJdGVyYXRvci5nZXRDaGFyYWN0ZXJJbnN0YW5jZSgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHMuZXF1YWxzKCJXb3JkIikpIHsKKyAgICAgICAgICAgIGVycm9yVGV4dCgidFdvcmRCcmVhayIpOworICAgICAgICAgICAgZW51bSA9IEJyZWFrSXRlcmF0b3IuZ2V0V29yZEluc3RhbmNlKCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAocy5lcXVhbHMoIkxpbmUgQnJlYWsiKSkgeworICAgICAgICAgICAgZXJyb3JUZXh0KCJnZXRMaW5lSW5zdGFuY2UiKTsKKyAgICAgICAgICAgIGVudW0gPSBCcmVha0l0ZXJhdG9yLmdldExpbmVJbnN0YW5jZSgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgLyogaWYgKHMuZXF1YWxzKCJTZW50ZW5jZSIpKSAqLyB7CisgICAgICAgICAgICBlcnJvclRleHQoImdldFNlbnRlbmNlSW5zdGFuY2UiKTsKKyAgICAgICAgICAgIGVudW0gPSBCcmVha0l0ZXJhdG9yLmdldFNlbnRlbmNlSW5zdGFuY2UoKTsKKyAgICAgICAgfQorICAgICAgICBlbnVtLnNldFRleHQodGV4dC5nZXRUZXh0KCkpOworICAgICAgICBzZWxlY3RSYW5nZSgwLCAwKTsKKyAgICAgICAgLy90ZXh0LnNlbGVjdCgwLDApOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGhhbmRsZUZvcndhcmQoKQorICAgIHsKKyAgICAgICAgdHJ5IHsKKy8vICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiZW50ZXJpbmcgaGFuZGxlRm9yd2FyZCIpOworICAgICAgICAgICAgZW51bS5zZXRUZXh0KHRleHQuZ2V0VGV4dCgpKTsKKyAgICAgICAgICAgIGludCBvbGRTdGFydCA9IGdldFNlbGVjdGlvblN0YXJ0KCk7CisgICAgICAgICAgICBpbnQgb2xkRW5kID0gZ2V0U2VsZWN0aW9uRW5kKCk7CisKKy8vICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiaGFuZGxlRm9yd2FyZDogb2xkU3RhcnQ9IiArIG9sZFN0YXJ0ICsgIiwgb2xkRW5kPSIgKyBvbGRFbmQpOworCisgICAgICAgICAgICBpZiAob2xkRW5kIDwgMSkgeworICAgICAgICAgICAgICAgIHNlbGVjdFJhbmdlKDAsIGVudW0uZm9sbG93aW5nKDApKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGludCBzID0gZW51bS5mb2xsb3dpbmcob2xkRW5kLTEpOworICAgICAgICAgICAgICAgIGludCBlID0gZW51bS5uZXh0KCk7CisgICAgICAgICAgICAgICAgaWYgKGUgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgZSA9IHM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHNlbGVjdFJhbmdlKHMsIGUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy90ZXh0LnNlbGVjdChzLCBlKTsKKyAgICAgICAgICAgIGVycm9yVGV4dCgiPCIgKyBvbGRTdGFydCArICIsIiArIG9sZEVuZCArICI+IC0+IDwiICsKKyAgICAgICAgICAgICAgICBzICsgIiwiICsgZSArICI+Iik7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBleHApIHsKKyAgICAgICAgICAgIGVycm9yVGV4dChleHAudG9TdHJpbmcoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBoYW5kbGVCYWNrd2FyZCgpCisgICAgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgZW51bS5zZXRUZXh0KHRleHQuZ2V0VGV4dCgpKTsKKyAgICAgICAgICAgIGludCBvbGRTdGFydCA9IGdldFNlbGVjdGlvblN0YXJ0KCk7CisgICAgICAgICAgICBpbnQgb2xkRW5kID0gZ2V0U2VsZWN0aW9uRW5kKCk7CisgICAgICAgICAgICBpZiAob2xkU3RhcnQgPCAxKSB7CisgICAgICAgICAgICAgICAgc2VsZWN0UmFuZ2UoMCwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpbnQgZSA9IGVudW0uZm9sbG93aW5nKG9sZFN0YXJ0LTEpOworICAgICAgICAgICAgICAgIGludCBzID0gZW51bS5wcmV2aW91cygpOworICAgICAgICAgICAgICAgIHNlbGVjdFJhbmdlKHMsIGUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy90ZXh0LnNlbGVjdChzLCBlKTsKKyAgICAgICAgICAgIGVycm9yVGV4dCgiPCIgKyBvbGRTdGFydCArICIsIiArIG9sZEVuZCArICI+IC0+IDwiICsgcyArICIsIiArIGUgKyAiPiIpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZXhwKSB7CisgICAgICAgICAgICBlcnJvclRleHQoZXhwLnRvU3RyaW5nKCkpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoKKyAgICBwdWJsaWMgYm9vbGVhbiBhY3Rpb24oRXZlbnQgZXZ0LCBPYmplY3Qgb2JqKQorICAgIHsKKworICAgICAgICBpZihldnQudGFyZ2V0IGluc3RhbmNlb2YgQnV0dG9uICYmIGxlZnQuZXF1YWxzKG9iaikpCisgICAgICAgIHsKKyAgICAgICAgICAgIGhhbmRsZUJhY2t3YXJkKCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmKGV2dC50YXJnZXQgaW5zdGFuY2VvZiBCdXR0b24gJiYgcmlnaHQuZXF1YWxzKG9iaikpCisgICAgICAgIHsKKyAgICAgICAgICAgIGhhbmRsZUZvcndhcmQoKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYoZXZ0LnRhcmdldCBpbnN0YW5jZW9mIENob2ljZSkKKyAgICAgICAgeworICAgICAgICAgICAgaGFuZGxlRW51bUNoYW5nZWQoKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBoYW5kbGVFdmVudChFdmVudCBldnQpCisgICAgeworICAgICAgICBpZiAoZXZ0LmlkID09IEV2ZW50LktFWV9QUkVTUyB8fCBldnQuaWQgPT0gRXZlbnQuS0VZX0FDVElPTikgeworICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT0gRXZlbnQuUklHSFQgfHwgKGV2dC5rZXkgPT0gMHgwRSAmJiBldnQuY29udHJvbERvd24oKSkpIHsKKyAgICAgICAgICAgICAgICBoYW5kbGVGb3J3YXJkKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChldnQua2V5ID09IEV2ZW50LkxFRlQgfHwgKGV2dC5rZXkgPT0gMHgxMCAmJiBldnQuY29udHJvbERvd24oKSkpIHsKKyAgICAgICAgICAgICAgICBoYW5kbGVCYWNrd2FyZCgpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgaWYgKGV2dC5pZCA9PSBFdmVudC5XSU5ET1dfREVTVFJPWSAmJiBldnQudGFyZ2V0ID09IHRoaXMpIHsKKyAgICAgICAgICAgIHRoaXMuaGlkZSgpOworICAgICAgICAgICAgdGhpcy5kaXNwb3NlKCk7CisgICAgICAgICAgICAgICAgaWYgKGFwcGxldCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICBhcHBsZXQuZGVtb0Nsb3NlZCgpOworICAgICAgICAgICAgICAgfSBlbHNlIFN5c3RlbS5leGl0KDApOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHN1cGVyLmhhbmRsZUV2ZW50KGV2dCk7CisgICAgfSovCisKKyAgICBwdWJsaWMgdm9pZCBpdGVtU3RhdGVDaGFuZ2VkKEl0ZW1FdmVudCBldnQpCisgICAgeworICAgICAgICBpZiAoZXZ0LmdldFNvdXJjZSgpIGluc3RhbmNlb2YgQ2hvaWNlKSB7CisgICAgICAgICAgICBoYW5kbGVFbnVtQ2hhbmdlZCgpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgZXJyb3JUZXh0KFN0cmluZyBzKQorICAgIHsKKyAgICAgICBpZiAoREVCVUcpCisgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihzKTsKKyAgICB9CisgICAgCisgICAgcHJvdGVjdGVkIHZvaWQgcHJvY2Vzc1dpbmRvd0V2ZW50KFdpbmRvd0V2ZW50IGV2dCkKKyAgICB7CisgICAgICAgIGlmIChldnQuZ2V0SUQoKSA9PSBXaW5kb3dFdmVudC5XSU5ET1dfQ0xPU0lORyAmJiAKKyAgICAgICAgICAgIGV2dC5nZXRXaW5kb3coKSA9PSB0aGlzKSB7CisgICAgICAgICAgICBoaWRlKCk7CisgICAgICAgICAgICBkaXNwb3NlKCk7CisgICAgICAgICAgICBpZiAoYXBwbGV0ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBhcHBsZXQuZGVtb0Nsb3NlZCgpOworICAgICAgICAgICAgfSBlbHNlIFN5c3RlbS5leGl0KDApOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHByb3RlY3RlZCB2b2lkIHByb2Nlc3NLZXlFdmVudChLZXlFdmVudCBldnQpCisgICAgeworICAgICAgICBzd2l0Y2ggKGV2dC5nZXRJRCgpKSB7CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWV9QUkVTU0VEIDoKKyAgICAgICAgICAgICAgICBpZiAoZXZ0LmdldEtleUNvZGUoKSA9PSBLZXlFdmVudC5WS19DT05UUk9MKSB7CisgICAgICAgICAgICAgICAgICAgIGlzY3RybGRvd25fID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWV9SRUxFQVNFRCA6CisgICAgICAgICAgICAgICAgLy8ga2V5IGRldGVjdGlvbiBmb3IgbGVmdCBhbmQgcmlnaHQgYnV0dG9ucyBhcmUgcmVtb3ZlZAorICAgICAgICAgICAgICAgIC8vIHRvIGVtdWxhdGUgdGhlIG9sZCByZWxlYXNlIGJlaGF2aW91cgorICAgICAgICAgICAgICAgIGludCBrZXkgPSBldnQuZ2V0S2V5Q29kZSgpOworICAgICAgICAgICAgICAgIGlmIChrZXkgPT0gS2V5RXZlbnQuVktfTiAmJiBpc2N0cmxkb3duXykgeworICAgICAgICAgICAgICAgICAgICBoYW5kbGVGb3J3YXJkKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgCisgICAgICAgICAgICAgICAgaWYgKGtleSA9PSBLZXlFdmVudC5WS19QICYmIGlzY3RybGRvd25fKSB7CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZUJhY2t3YXJkKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgCisgICAgICAgICAgICAgICAgaWYgKGtleSA9PSBLZXlFdmVudC5WS19DT05UUk9MKSB7CisgICAgICAgICAgICAgICAgICAgIGlzY3RybGRvd25fID0gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL3JiYmkvVGV4dEJvdW5kRGVtby5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL3JiYmkvVGV4dEJvdW5kRGVtby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjZhYWI5M2MKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vcmJiaS9UZXh0Qm91bmREZW1vLmphdmEKQEAgLTAsMCArMSw0MzMgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby9yYmJpL1RleHRCb3VuZERlbW8uamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wOC8wMSAyMDoyNzoyMSAkIAorICogJFJldmlzaW9uOiAxLjkgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi5kZW1vLnJiYmk7CisKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYuZGVtby4qOworaW1wb3J0IGphdmEuYXBwbGV0LkFwcGxldDsKK2ltcG9ydCBqYXZhLmF3dC4qOworaW1wb3J0IGphdmEuYXd0LmV2ZW50Lkl0ZW1MaXN0ZW5lcjsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5JdGVtRXZlbnQ7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuS2V5RXZlbnQ7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuV2luZG93RXZlbnQ7CitpbXBvcnQgamF2YXguc3dpbmcuSlRleHRBcmVhOworaW1wb3J0IGphdmF4LnN3aW5nLkpTY3JvbGxQYW5lOworaW1wb3J0IGphdmF4LnN3aW5nLkJvcmRlckZhY3Rvcnk7CitpbXBvcnQgamF2YS51dGlsLio7CitpbXBvcnQgY29tLmlibS5pY3UuZGV2LmRlbW8uaW1wbC4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuQnJlYWtJdGVyYXRvcjsKKworcHVibGljIGNsYXNzIFRleHRCb3VuZERlbW8gZXh0ZW5kcyBEZW1vQXBwbGV0Cit7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIGFyZ3ZbXSkgeworICAgICAgICBuZXcgVGV4dEJvdW5kRGVtbygpLnNob3dEZW1vKCk7CisgICAgfQorCisgICAgcHVibGljIEZyYW1lIGNyZWF0ZURlbW9GcmFtZShEZW1vQXBwbGV0IGFwcGxldCkgeworICAgICAgICByZXR1cm4gbmV3IFRleHRCb3VuZEZyYW1lKGFwcGxldCk7CisgICAgfQorfQorCisKKworY2xhc3MgVGV4dEJvdW5kRnJhbWUgZXh0ZW5kcyBGcmFtZSBpbXBsZW1lbnRzIEl0ZW1MaXN0ZW5lcgoreworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBjcmVkaXRTdHJpbmcgPQorICAgICAgICAidjEuMWE5LCBEZW1vIjsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBGSUVMRF9DT0xVTU5TID0gNDU7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgRm9udCBjaG9pY2VGb250ID0gbnVsbDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIERFQlVHID0gZmFsc2U7CisgICAgcHJpdmF0ZSBEZW1vQXBwbGV0IGFwcGxldDsKKworICAgIGZpbmFsIFN0cmluZyByaWdodCA9ICItLT4iOworICAgIGZpbmFsIFN0cmluZyBsZWZ0ID0gIjwtLSI7CisKKyAgICBwcml2YXRlIEJyZWFrSXRlcmF0b3IgZW51bTsKKyAgICBwcml2YXRlIGJvb2xlYW4gaXNjdHJsZG93bl8gPSBmYWxzZTsKKworSlRleHRBcmVhIHRleHQ7CisvLyAgICBUZXh0QXJlYSB0ZXh0OworICAgIENob2ljZSBib3VuZDsKKworICAgIHB1YmxpYyBUZXh0Qm91bmRGcmFtZShEZW1vQXBwbGV0IGFwcGxldCkKKyAgICB7CisgICAgICAgIHRoaXMuYXBwbGV0ID0gYXBwbGV0OworICAgICAgICBpbml0KCk7CisgICAgICAgIHN0YXJ0KCk7CisgICAgfQorCisKKworICAgIHB1YmxpYyB2b2lkIHJ1bigpCisgICAgeworICAgICAgICAvKgorICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBjaGVja0NoYW5nZSgpOworICAgICAgICAgICAgICAgIFRocmVhZC5zbGVlcCgyNTApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2F0Y2ggKEludGVycnVwdGVkRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2F0Y2ggKFRocm93YWJsZSBlKSB7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgKi8KKyAgICB9CisKKyAgICBpbnQgcywgZTsKKyAgICBpbnQgdHMsIHRlOworCisgICAgcHVibGljIHZvaWQgY2hlY2tDaGFuZ2UoKQorICAgIHsKKy8vICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImNoZWNrQ2hhbmdlLi4uIik7CisgICAgICAgIGlmICgodGV4dC5nZXRTZWxlY3Rpb25TdGFydCgpICYgMHg3RkZGKSAhPSB0cyB8fAorICAgICAgICAgICAgKHRleHQuZ2V0U2VsZWN0aW9uRW5kKCkgJiAweDdGRkYpICE9IHRlKSB7CisKKyAgICAgICAgICAgIC8vIG5vdCB1c2VkIGludCB0ZW1wUyA9IHRleHQuZ2V0U2VsZWN0aW9uU3RhcnQoKSAmIDB4N0ZGRjsKKyAgICAgICAgICAgIC8vIG5vdCB1c2VkIGludCB0ZW1wRSA9IHRleHQuZ2V0U2VsZWN0aW9uRW5kKCkgJiAweDdGRkY7CisKKy8vICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiPiIpOworLy8gICAgICAgICAgc2VsZWN0KDAsIDApOworLy8gICAgICAgICAgc2VsZWN0KHRlbXBTLCB0ZW1wRSk7CisgICAgICAgICAgICAvL3NlbGVjdCh0ZW1wUyAtICh0cyAtIHMpLCB0ZW1wRSAtICh0ZSAtIGUpKTsKKy8vICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiPCIpOworCisKKy8vICAgICAgICAgIGlmIChzICE9IHRzIHx8IGUgIT0gdGUpIFN5c3RlbS5vdXQucHJpbnRsbigiICAgICBzKCIrcysiKSB0cygiK3RzKyIpIGUoIitlKyIpIHRlKCIrdGUrIikiKTsKKy8vICAgICAgICAgIGlmICh0ZW1wUyAhPSB0cyB8fCB0ZW1wRSAhPSB0ZSkgU3lzdGVtLm91dC5wcmludGxuKCI+cygiK3MrIikgdGVtcFMoIit0ZW1wUysiKSBlKCIrZSsiKSB0ZW1wRSgiK3RlbXBFKyIpIik7CisvLyAgICAgICAgICBzZWxlY3QocyAtICh0cyAtIHMpLCBlIC0gKHRlIC0gZSkpOworLy8gICAgICAgICAgaWYgKHRlbXBTICE9IHRzIHx8IHRlbXBFICE9IHRlKSBTeXN0ZW0ub3V0LnByaW50bG4oInMoIitzKyIpIHRlbXBTKCIrdGVtcFMrIikgZSgiK2UrIikgdGVtcEUoIit0ZW1wRSsiKSIpOworCisvLyAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImxrZHNsa3NqIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZWxlY3QoaW50IHNJbiwgaW50IGVJbikKKyAgICB7CisgICAgICAgIHMgPSBzSW47CisgICAgICAgIGUgPSBlSW47CisgICAgICAgIHRleHQuc2VsZWN0KHMsIGUpOworICAgICAgICB0cyA9IHRleHQuZ2V0U2VsZWN0aW9uU3RhcnQoKSAmIDB4N0ZGRjsKKyAgICAgICAgdGUgPSB0ZXh0LmdldFNlbGVjdGlvbkVuZCgpICYgMHg3RkZGOworLy8gICAgICAgIGlmIChzICE9IHRzIHx8IGUgIT0gdGUpIHsKKy8vICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCI+cygiK3MrIikgdHMoIit0cysiKSBlKCIrZSsiKSB0ZSgiK3RlKyIpIik7CisvLyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiICAgIisodHMtcykrIiwiKyh0ZS1lKSk7CisvLyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBpbnQgZ2V0U2VsZWN0aW9uU3RhcnQoKQorICAgIHsKKyAgICAgICAgY2hlY2tDaGFuZ2UoKTsKKy8vICAgICAgcmV0dXJuIHM7CisgICAgICAgIHJldHVybiB0ZXh0LmdldFNlbGVjdGlvblN0YXJ0KCkgJiAweDdGRkY7CisgICAgfQorCisKKyAgICBwdWJsaWMgaW50IGdldFNlbGVjdGlvbkVuZCgpCisgICAgeworICAgICAgICBjaGVja0NoYW5nZSgpOworLy8gICAgICByZXR1cm4gZTsKKyAgICAgICAgcmV0dXJuIHRleHQuZ2V0U2VsZWN0aW9uRW5kKCkgJiAweDdGRkY7CisgICAgfQorCisgICAgcHVibGljIGZpbmFsIHN5bmNocm9uaXplZCB2b2lkIHNlbGVjdFJhbmdlKGludCBzLCBpbnQgZSkKKyAgICB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAvL2lmIChnZXRTZWxlY3Rpb25TdGFydCgpICE9IHMgfHwgZ2V0U2VsZWN0aW9uRW5kKCkgIT0gZSkgeworICAgICAgICAgICAgICAgIC8vdGV4dC5zZWxlY3QocywgZSk7CisgICAgICAgICAgICAgICAgc2VsZWN0KHMsZSk7CisgICAgICAgICAgICAvL30KKy8vICAgICAgICAgIGlmIChnZXRTZWxlY3Rpb25TdGFydCgpICE9IHMgfHwgZ2V0U2VsZWN0aW9uRW5kKCkgIT0gZSkgeworLy8gICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQUdIISBzZWxlY3QoIitzKyIsIitlKyIpIC0+ICgiKworLy8gICAgICAgICAgICAgIGdldFNlbGVjdGlvblN0YXJ0KCkrIiwiK2dldFNlbGVjdGlvbkVuZCgpKyIpIik7CisvLyAgICAgICAgICAgICAgdGV4dC5zZWxlY3QocyAtIChnZXRTZWxlY3Rpb25TdGFydCgpIC0gcyksIGUgLSAoZ2V0U2VsZWN0aW9uRW5kKCkgLSBlKSk7CisvLyAgICAgICAgICB9CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleHApIHsKKyAgICAgICAgICAgIGVycm9yVGV4dChleHAudG9TdHJpbmcoKSk7CisgICAgICAgIH0KKyAgICB9CisKKworCisgICAgcHVibGljIHZvaWQgaW5pdCgpCisgICAgeworICAgICAgICBidWlsZEdVSSgpOworICAgIH0KKworCisgICAgcHVibGljIHZvaWQgc3RhcnQoKQorICAgIHsKKyAgICB9CisKKworICAgIHZvaWQgYWRkV2l0aEZvbnQoQ29udGFpbmVyIGNvbnRhaW5lciwgQ29tcG9uZW50IGZvbywgRm9udCBmb250KSB7CisgICAgICAgIGlmIChmb250ICE9IG51bGwpCisgICAgICAgICAgICBmb28uc2V0Rm9udChmb250KTsKKyAgICAgICAgY29udGFpbmVyLmFkZChmb28pOworICAgIH0KKworCisKKyAgIHB1YmxpYyB2b2lkIGJ1aWxkR1VJKCkKKyAgICB7CisgICAgICAgIHNldEJhY2tncm91bmQoRGVtb1V0aWxpdHkuYmdDb2xvcik7CisgICAgICAgIHNldExheW91dChuZXcgQm9yZGVyTGF5b3V0KCkpOworCisgICAgICAgUGFuZWwgdG9wUGFuZWwgPSBuZXcgUGFuZWwoKTsKKworICAgICAgICAgICAgTGFiZWwgdGl0bGVMYWJlbCA9CisgICAgICAgICAgICAgICAgbmV3IExhYmVsKCJUZXh0IEJvdW5kYXJ5IERlbW8iLCBMYWJlbC5DRU5URVIpOworICAgICAgICAgICAgdGl0bGVMYWJlbC5zZXRGb250KERlbW9VdGlsaXR5LnRpdGxlRm9udCk7CisgICAgICAgICAgICB0b3BQYW5lbC5hZGQodGl0bGVMYWJlbCk7CisKKyAgICAgICAgICAgIC8vTGFiZWwgZGVtbz1uZXcgTGFiZWwoY3JlZGl0U3RyaW5nLCBMYWJlbC5DRU5URVIpOworICAgICAgICAgICAgLy9kZW1vLnNldEZvbnQoRGVtb1V0aWxpdHkuY3JlZGl0Rm9udCk7CisgICAgICAgICAgICAvL3RvcFBhbmVsLmFkZChkZW1vKTsKKworICAgICAgICAgICAgUGFuZWwgY2hvaWNlUGFuZWwgPSBuZXcgUGFuZWwoKTsKKworICAgICAgICAgICAgTGFiZWwgZGVtbzE9bmV3IExhYmVsKCJCb3VuZGFyaWVzIiwgTGFiZWwuTEVGVCk7CisgICAgICAgICAgICBkZW1vMS5zZXRGb250KERlbW9VdGlsaXR5LmxhYmVsRm9udCk7CisgICAgICAgICAgICBjaG9pY2VQYW5lbC5hZGQoZGVtbzEpOworCisgICAgICAgICAgICBib3VuZCA9IG5ldyBDaG9pY2UoKTsKKyAgICAgICAgICAgICAgICBib3VuZC5zZXRCYWNrZ3JvdW5kKERlbW9VdGlsaXR5LmNob2ljZUNvbG9yKTsKKyAgICAgICAgICAgIGJvdW5kLmFkZEl0ZW0oIlNlbnRlbmNlIik7CisgICAgICAgICAgICBib3VuZC5hZGRJdGVtKCJMaW5lIEJyZWFrIik7CisgICAgICAgICAgICBib3VuZC5hZGRJdGVtKCJXb3JkIik7CisgICAgICAgICAgICBib3VuZC5hZGRJdGVtKCJDaGFyIik7CisgICAgICAgICAgICBib3VuZC5hZGRJdGVtTGlzdGVuZXIodGhpcyk7CisgICAgICAgICAgICBpZiAoY2hvaWNlRm9udCAhPSBudWxsKQorICAgICAgICAgICAgICAgIGJvdW5kLnNldEZvbnQoY2hvaWNlRm9udCk7CisKKyAgICAgICAgICAgIGNob2ljZVBhbmVsLmFkZChib3VuZCk7CisgICAgICAgICAgICB0b3BQYW5lbC5hZGQoY2hvaWNlUGFuZWwpOworCisgICAgICAgICAgICBEZW1vVXRpbGl0eS5maXhHcmlkKHRvcFBhbmVsLDEpOworCisKKyAgICAgICAgYWRkKCJOb3J0aCIsIHRvcFBhbmVsKTsKKworCisgICAgICAgICAgICBpbnQgUk9XUyA9IDE1OworICAgICAgICAgICAgaW50IENPTFVNTlMgPSA1MDsKKy8vICAgICAgICAgICAgdGV4dCA9IG5ldyBUZXh0QXJlYShnZXRJbml0aWFsVGV4dCgpLCBST1dTLCBDT0xVTU5TKTsKK3RleHQgPSBuZXcgSlRleHRBcmVhKGdldEluaXRpYWxUZXh0KCksIFJPV1MsIENPTFVNTlMpOwordGV4dC5zZXRMaW5lV3JhcCh0cnVlKTsKK3RleHQuc2V0V3JhcFN0eWxlV29yZCh0cnVlKTsKKyAgICAgICAgICAgIHRleHQuc2V0RWRpdGFibGUodHJ1ZSk7CisgICAgICAgICAgICB0ZXh0LnNlbGVjdEFsbCgpOworICAgICAgICAgICAgdGV4dC5zZXRGb250KERlbW9VdGlsaXR5LmVkaXRGb250KTsKKyAgICAgICAgICAgIHRleHQuc2V0Qm9yZGVyKEJvcmRlckZhY3RvcnkuY3JlYXRlRW1wdHlCb3JkZXIoMiwgMiwgMiwgMikpOworCisgICAgICAgIGFkZCgiQ2VudGVyIiwgbmV3IEpTY3JvbGxQYW5lKHRleHQsIEpTY3JvbGxQYW5lLlZFUlRJQ0FMX1NDUk9MTEJBUl9BTFdBWVMsCisgICAgICAgICAgICAgICAgICAgICAgICBKU2Nyb2xsUGFuZS5IT1JJWk9OVEFMX1NDUk9MTEJBUl9ORVZFUikpOworCisgICAgICAgIFBhbmVsIGNvcHlyaWdodFBhbmVsID0gbmV3IFBhbmVsKCk7CisgICAgICAgIGFkZFdpdGhGb250IChjb3B5cmlnaHRQYW5lbCwKKyAgICAgICAgICAgIG5ldyBMYWJlbChEZW1vVXRpbGl0eS5jb3B5cmlnaHQxLCBMYWJlbC5MRUZUKSxEZW1vVXRpbGl0eS5jcmVkaXRGb250KTsKKyAgICAgICAgRGVtb1V0aWxpdHkuZml4R3JpZChjb3B5cmlnaHRQYW5lbCwxKTsKKyAgICAgICAgYWRkKCJTb3V0aCIsIGNvcHlyaWdodFBhbmVsKTsKKworICAgICAgICAvL2xheW91dCgpOworICAgICAgICBoYW5kbGVFbnVtQ2hhbmdlZCgpOworICAgICAgICAKKyAgICAgICAgZW5hYmxlRXZlbnRzKFdpbmRvd0V2ZW50LldJTkRPV19DTE9TSU5HKTsKKyAgICAgICAgZW5hYmxlRXZlbnRzKEtleUV2ZW50LktFWV9QUkVTU0VEKTsKKyAgICAgICAgZW5hYmxlRXZlbnRzKEtleUV2ZW50LktFWV9SRUxFQVNFRCk7CisKKyAgICAgICAgLy8gKG5ldyBUaHJlYWQodGhpcykpLnN0YXJ0KCk7CisgICAgfQorCisKKworICAgIHB1YmxpYyBTdHJpbmcgZ2V0SW5pdGlhbFRleHQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuCisgICAgLyoKKyAgICAgICAgICAgICJcIlRoaXMgaXMgYSBzZW50ZW5jZS5cIiBUaGlzIGlzIG5vdC5cIiBcImJlY2F1c2UuIEFuZCBnby4gIiArCisgICAgICAgICAgICAiVGhpcyBpcyBhIHNpbXBsZSAwMTIuNTY2LDUgc2FtcGxlIHNlbnRlbmNlLiBcbiIrCisgICAgICAgICAgICAiSXQgZG9lcyBub3QgaGF2ZSB0byBtYWtlIGFueSBzZW5zZSBhcyB5b3UgY2FuIHNlZS4gXG4iKworICAgICAgICAgICAgIk5lbCBtZXp6byBkZWwgY2FtbWluIGRpIG5vc3RyYSB2aXRhLCBtaSByaXRyb3ZhaSBpbiAiKworICAgICAgICAgICAgICAgICJ1bmEgc2VsdmEgb3NjdXJhLiBcbiIrCisgICAgICAgICAgICAiQ2hlIGxhIGRyaXR0YSB2aWEgYXZlbyBzbWFycml0YS4gXG4iKworICAgICAgICAgICAgIkhlIHNhaWQsIHRoYXQgSSBzYWlkLCB0aGF0IHlvdSBzYWlkISEgXG4iKworICAgICAgICAgICAgIkRvbid0IHJvY2sgdGhlIGJvYXQuXG5cbiIrCisgICAgICAgICAgICAiQmVjYXVzZSBJIGFtIHRoZSBkYWRkeSwgdGhhdCBpcyB3aHkuIFxuIisKKyAgICAgICAgICAgICJOb3Qgb24gbXkgdGltZSAoZWwgdGltby4pISBcbiIrCisgICAgICAgICAgICAiVGFiXHRUYWJcclRhYlx0V293LiIrCisgICAgICAgICAgICAiU28gd2hhdCEhXG5cbiIrCisgICAgICAgICAgICAiSXMgdGhpcyBhIHF1ZXN0aW9uPz8/ICAiICsKKyAgICAgICAgICAgICJJIHdvbmRlci4uLkhtbS5cbiIgKworICAgICAgICAgICAgIkhhcnJpcyB0aHVtYmVkIGRvd24gc2V2ZXJhbCwgaW5jbHVkaW5nIFwiQXdheSBXZSBHb1wiICIrCisgICAgICAgICAgICAgICAgIih3aGljaCBiZWNhbWUgdGhlIGh1Z2Ugc3VjY2VzcyBPa2xhaG9tYSEpLiBcbiIrCisgICAgICAgICAgICAiT25lIHNwZWNpZXMsIEIuIGFudGhyYWNpcywgaXMgaGlnaGx5IHZpcnVsZW50LlxuIisKKyAgICAgICAgICAgICJXb2xmIHNhaWQgYWJvdXQgU291bmRlcjogXCJCZWF1dGlmdWxseSB0aG91Z2h0LW91dCBhbmQgIisKKyAgICAgICAgICAgICAgICAiZGlyZWN0ZWQuXCJcbiIrCisgICAgICAgICAgICAiSGF2ZSB5b3UgZXZlciBzYWlkLCBcIlRoaXMgaXMgd2hlcmUgSSBzaGFsbCBsaXZlXCI/IFxuIisKKyAgICAgICAgICAgICJIZSAxMDAwLDIzMyw0NTYuMDAwIGFuc3dlcmVkLCBcIllvdSBtYXkgbm90IVwiIFxuIisKKyAgICAgICAgICAgICJBbm90aGVyIHBvcHVsYXIgc2F5aW5nIGlzOiBcIkhvdyBkbyB5b3UgZG8/XCIuIFxuIisKKyAgICAgICAgICAgICJXaGF0IGlzIHRoZSBwcm9wZXIgdXNlIG9mIHRoZSBhYmJyZXZpYXRpb24gcHAuPyBcbiIrCisgICAgICAgICAgICAiWWVzLCBJIGFtIDEsMjMuMzIyJSBkZWZpbmF0ZWxseSAxMlwiIHRhbGwhISI7CisgICAgKi8KKyAgICAgICAgICAgICIoXCJUaGlzIGlzIGEgY29tcGxldGUgc2VudGVuY2UuXCIpIFRoaXMgaXMgKFwibm90LlwiKSBhbHNvLiAgIgorICAgICAgICAgICAgKyJBbiBhYmJyZXZpYXRpb24gaW4gdGhlIG1pZGRsZSwgZXRjLiBhbmQgb25lIGF0IHRoZSBlbmQsIGV0Yy4gIisKKyAgICAgICAgICAgICAgICAiVGhpcyAiCisgICAgICAgICAgICArImlzIGEgc2ltcGxlIHNhbXBsZSAwMTIuNTY2LDUgc2VudGVuY2UuIEl0IGRvZXNuJ3QgIgorICAgICAgICAgICAgKyJoYXZlIHRvIG1ha2UgYW55IHNlbnNlLCBhcyB5b3UgY2FuIHNlZS4gTmVsIG1lenpvIGRlbCAgYyIKKyAgICAgICAgICAgICsiYW1taW4gZGkgbm9zdHJhIHZpdGEsIG1pIHJpdHJvdmFpIGluIHVuYSBzZWx2YSBvc2N1cmEuIENoZSAiCisgICAgICAgICAgICArImxhIGRyaXR0YSB2aWEgYXZlbyBzbWFycml0YS4gTm90IG9uIG15IHRpbWUgKGVsIHRpbW8uKSEgQW5kICIKKyAgICAgICAgICAgICsidGFidWxhdGVkIGNvbHVtbnM6IFx0Q29sMVx0Q29sMlx0Myw0NTYlLlx0ICIKKyAgICAgICAgICAgICsiSXMgdGhpcyBhIHF1ZXN0aW9uPz8/ICBJIHdvbmRlci4uLiBIbW0uIEhhcnJpcyB0aHVtYmVkICIKKyAgICAgICAgICAgICsiZG93biBzZXZlcmFsLCBpbmNsdWRpbmcgXCJBd2F5IFdlIEdvXCIgKHdoaWNoIGJlY2FtZSB0aGUgICIKKyAgICAgICAgICAgICsiaHVnZSBzdWNjZXNzIE9rbGFob21hISkuIE9uZSBzcGVjaWVzLCBCLiBhbnRocmFjaXMsIGlzICAiCisgICAgICAgICAgICArImhpZ2hseSB2aXJ1bGVudC4gV29sZiBzYWlkIGFib3V0IFNvdW5kZXI6IFwiQmVhdXRpZnVsbHkgICIKKyAgICAgICAgICAgICsidGhvdWdodC1vdXQgYW5kIGRpcmVjdGVkLlwiIEhhdmUgeW91IGV2ZXIgc2FpZCwgXCJUaGlzIGlzICIrCisgICAgICAgICAgICAgICAgIndoZXJlIEkgIgorICAgICAgICAgICAgKyJzaGFsbCBsaXZlXCI/IEhlIHNhaWQgMTAwMCwyMzMsNDU2LjAwMCBhbmQgYW5zd2VyZWQsIFwiWW91ICIrCisgICAgICAgICAgICAgICAgIm1heSBub3QhXCIgICIKKyAgICAgICAgICAgICsiQW5vdGhlciBwb3B1bGFyIHNheWluZyBpczogXCJIb3cgZG8geW91IGRvP1wiLiBXaGF0IGlzIHRoZSAgIgorICAgICAgICAgICAgKyJwcm9wZXIgdXNlIG9mIHRoZSBhYmJyZXZpYXRpb24gcHAuPyBZZXMsIEkgYW0gMTJcJyAzXCIgdGFsbCEhIjsKKyAgICB9CisKKworICAgIHB1YmxpYyB2b2lkIGhhbmRsZUVudW1DaGFuZ2VkKCkKKyAgICB7CisgICAgICAgIFN0cmluZyBzID0gYm91bmQuZ2V0U2VsZWN0ZWRJdGVtKCk7CisgICAgICAgIGlmIChzLmVxdWFscygiQ2hhciIpKSB7CisgICAgICAgICAgICBlcnJvclRleHQoImdldENoYXJhY3Rlckluc3RhbmNlIik7CisgICAgICAgICAgICBlbnVtID0gQnJlYWtJdGVyYXRvci5nZXRDaGFyYWN0ZXJJbnN0YW5jZSgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHMuZXF1YWxzKCJXb3JkIikpIHsKKyAgICAgICAgICAgIGVycm9yVGV4dCgidFdvcmRCcmVhayIpOworICAgICAgICAgICAgZW51bSA9IEJyZWFrSXRlcmF0b3IuZ2V0V29yZEluc3RhbmNlKCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAocy5lcXVhbHMoIkxpbmUgQnJlYWsiKSkgeworICAgICAgICAgICAgZXJyb3JUZXh0KCJnZXRMaW5lSW5zdGFuY2UiKTsKKyAgICAgICAgICAgIGVudW0gPSBCcmVha0l0ZXJhdG9yLmdldExpbmVJbnN0YW5jZSgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgLyogaWYgKHMuZXF1YWxzKCJTZW50ZW5jZSIpKSAqLyB7CisgICAgICAgICAgICBlcnJvclRleHQoImdldFNlbnRlbmNlSW5zdGFuY2UiKTsKKyAgICAgICAgICAgIGVudW0gPSBCcmVha0l0ZXJhdG9yLmdldFNlbnRlbmNlSW5zdGFuY2UoKTsKKyAgICAgICAgfQorICAgICAgICBlbnVtLnNldFRleHQodGV4dC5nZXRUZXh0KCkpOworICAgICAgICBzZWxlY3RSYW5nZSgwLCAwKTsKKyAgICAgICAgLy90ZXh0LnNlbGVjdCgwLDApOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGhhbmRsZUZvcndhcmQoKQorICAgIHsKKyAgICAgICAgdHJ5IHsKKy8vICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiZW50ZXJpbmcgaGFuZGxlRm9yd2FyZCIpOworICAgICAgICAgICAgZW51bS5zZXRUZXh0KHRleHQuZ2V0VGV4dCgpKTsKKyAgICAgICAgICAgIGludCBvbGRTdGFydCA9IGdldFNlbGVjdGlvblN0YXJ0KCk7CisgICAgICAgICAgICBpbnQgb2xkRW5kID0gZ2V0U2VsZWN0aW9uRW5kKCk7CisKKy8vICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiaGFuZGxlRm9yd2FyZDogb2xkU3RhcnQ9IiArIG9sZFN0YXJ0ICsgIiwgb2xkRW5kPSIgKyBvbGRFbmQpOworCisgICAgICAgICAgICBpZiAob2xkRW5kIDwgMSkgeworICAgICAgICAgICAgICAgIHNlbGVjdFJhbmdlKDAsIGVudW0uZm9sbG93aW5nKDApKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGludCBzID0gZW51bS5mb2xsb3dpbmcob2xkRW5kLTEpOworICAgICAgICAgICAgICAgIGludCBlID0gZW51bS5uZXh0KCk7CisgICAgICAgICAgICAgICAgaWYgKGUgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgZSA9IHM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHNlbGVjdFJhbmdlKHMsIGUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy90ZXh0LnNlbGVjdChzLCBlKTsKKyAgICAgICAgICAgIGVycm9yVGV4dCgiPCIgKyBvbGRTdGFydCArICIsIiArIG9sZEVuZCArICI+IC0+IDwiICsKKyAgICAgICAgICAgICAgICBzICsgIiwiICsgZSArICI+Iik7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBleHApIHsKKyAgICAgICAgICAgIGVycm9yVGV4dChleHAudG9TdHJpbmcoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBoYW5kbGVCYWNrd2FyZCgpCisgICAgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgZW51bS5zZXRUZXh0KHRleHQuZ2V0VGV4dCgpKTsKKyAgICAgICAgICAgIGludCBvbGRTdGFydCA9IGdldFNlbGVjdGlvblN0YXJ0KCk7CisgICAgICAgICAgICBpbnQgb2xkRW5kID0gZ2V0U2VsZWN0aW9uRW5kKCk7CisgICAgICAgICAgICBpZiAob2xkU3RhcnQgPCAxKSB7CisgICAgICAgICAgICAgICAgc2VsZWN0UmFuZ2UoMCwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpbnQgZSA9IGVudW0uZm9sbG93aW5nKG9sZFN0YXJ0LTEpOworICAgICAgICAgICAgICAgIGludCBzID0gZW51bS5wcmV2aW91cygpOworICAgICAgICAgICAgICAgIHNlbGVjdFJhbmdlKHMsIGUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy90ZXh0LnNlbGVjdChzLCBlKTsKKyAgICAgICAgICAgIGVycm9yVGV4dCgiPCIgKyBvbGRTdGFydCArICIsIiArIG9sZEVuZCArICI+IC0+IDwiICsgcyArICIsIiArIGUgKyAiPiIpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZXhwKSB7CisgICAgICAgICAgICBlcnJvclRleHQoZXhwLnRvU3RyaW5nKCkpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgaXRlbVN0YXRlQ2hhbmdlZChJdGVtRXZlbnQgZXZ0KQorICAgIHsKKyAgICAgICAgaWYgKGV2dC5nZXRTb3VyY2UoKSBpbnN0YW5jZW9mIENob2ljZSkgeworICAgICAgICAgICAgaGFuZGxlRW51bUNoYW5nZWQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGVycm9yVGV4dChTdHJpbmcgcykKKyAgICB7CisgICAgICAgaWYgKERFQlVHKQorICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocyk7CisgICAgfQorICAgIAorICAgIHByb3RlY3RlZCB2b2lkIHByb2Nlc3NXaW5kb3dFdmVudChXaW5kb3dFdmVudCBldnQpCisgICAgeworICAgICAgICBpZiAoZXZ0LmdldElEKCkgPT0gV2luZG93RXZlbnQuV0lORE9XX0NMT1NJTkcgJiYgCisgICAgICAgICAgICBldnQuZ2V0V2luZG93KCkgPT0gdGhpcykgeworICAgICAgICAgICAgaGlkZSgpOworICAgICAgICAgICAgZGlzcG9zZSgpOworICAgICAgICAgICAgaWYgKGFwcGxldCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgYXBwbGV0LmRlbW9DbG9zZWQoKTsKKyAgICAgICAgICAgIH0gZWxzZSBTeXN0ZW0uZXhpdCgwKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwcm90ZWN0ZWQgdm9pZCBwcm9jZXNzS2V5RXZlbnQoS2V5RXZlbnQgZXZ0KQorICAgIHsKKyAgICAgICAgc3dpdGNoIChldnQuZ2V0SUQoKSkgeworICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlfUFJFU1NFRCA6CisgICAgICAgICAgICAgICAgaWYgKGV2dC5nZXRLZXlDb2RlKCkgPT0gS2V5RXZlbnQuVktfQ09OVFJPTCkgeworICAgICAgICAgICAgICAgICAgICBpc2N0cmxkb3duXyA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlfUkVMRUFTRUQgOgorICAgICAgICAgICAgICAgIC8vIGtleSBkZXRlY3Rpb24gZm9yIGxlZnQgYW5kIHJpZ2h0IGJ1dHRvbnMgYXJlIHJlbW92ZWQKKyAgICAgICAgICAgICAgICAvLyB0byBlbXVsYXRlIHRoZSBvbGQgcmVsZWFzZSBiZWhhdmlvdXIKKyAgICAgICAgICAgICAgICBpbnQga2V5ID0gZXZ0LmdldEtleUNvZGUoKTsKKyAgICAgICAgICAgICAgICBpZiAoa2V5ID09IEtleUV2ZW50LlZLX04gJiYgaXNjdHJsZG93bl8pIHsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlRm9yd2FyZCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIAorICAgICAgICAgICAgICAgIGlmIChrZXkgPT0gS2V5RXZlbnQuVktfUCAmJiBpc2N0cmxkb3duXykgeworICAgICAgICAgICAgICAgICAgICBoYW5kbGVCYWNrd2FyZCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaWYgKGtleSA9PSBLZXlFdmVudC5WS19DT05UUk9MKSB7CisgICAgICAgICAgICAgICAgICAgIGlzY3RybGRvd25fID0gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL3JiYmkvcGFja2FnZS5odG1sIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL3JiYmkvcGFja2FnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjk1ZDZmYTAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vcmJiaS9wYWNrYWdlLmh0bWwKQEAgLTAsMCArMSwxNSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzwhLS0gIENvcHlyaWdodCAoQykgMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQKKyAgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorCisgICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby9yYmJpL3BhY2thZ2UuaHRtbCx2ICQKKyAgJFJldmlzaW9uOiAxLjEgJAorICAkRGF0ZTogMjAwMC8wMy8xNSAxNzo0Mzo1MyAkCistLT4KKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IndoaXRlIj4KK1J1bGVCYXNlZEJyZWFrSXRlcmF0b3IgYW5kIERpY3Rpb25hcnlCYXNlZEJyZWFrSXRlcmF0b3IgZGVtbyBhcHBsaWNhdGlvbnMuCis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL3JibmYvUmJuZkRlbW8uamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby9yYm5mL1JibmZEZW1vLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNDcyMjMwMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby9yYm5mL1JibmZEZW1vLmphdmEKQEAgLTAsMCArMSw1MzMgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby9yYm5mL1JibmZEZW1vLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDIvMTkgMDQ6MTA6MjQgJCAKKyAqICRSZXZpc2lvbjogMS40ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5kZXYuZGVtby5yYm5mOworCitpbXBvcnQgY29tLmlibS5pY3UuZGV2LmRlbW8uKjsKK2ltcG9ydCBqYXZhLmFwcGxldC5BcHBsZXQ7CitpbXBvcnQgamF2YS5hd3QuKjsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC4qOworaW1wb3J0IGphdmEudGV4dC5EZWNpbWFsRm9ybWF0OworaW1wb3J0IGphdmEudGV4dC5CcmVha0l0ZXJhdG9yOworaW1wb3J0IGphdmEudGV4dC5QYXJzZVBvc2l0aW9uOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CitpbXBvcnQgY29tLmlibS5pY3UuZGV2LmRlbW8uaW1wbC4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuUnVsZUJhc2VkTnVtYmVyRm9ybWF0OworCitwdWJsaWMgY2xhc3MgUmJuZkRlbW8gZXh0ZW5kcyBEZW1vQXBwbGV0IHsKKyAgICAvKioKKyAgICAgKiBQdXRzIGEgY29weXJpZ2h0IGluIHRoZSAuY2xhc3MgZmlsZQorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHROb3RpY2UKKyAgICAgICAgPSAiQ29weXJpZ2h0IFx1MDBhOTE5OTctMTk5OCBJQk0gQ29ycC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuIjsKKworICAgIC8qCisgICAgICogY29kZSB0byBydW4gdGhlIGRlbW8gYXMgYW4gYXBwbGljYXRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmd2KSB7CisgICAgCW5ldyBSYm5mRGVtbygpLnNob3dEZW1vKCk7CisgICAgfQorCisgICAgcHJvdGVjdGVkIERpbWVuc2lvbiBnZXREZWZhdWx0RnJhbWVTaXplKERlbW9BcHBsZXQgYXBwbGV0LCBGcmFtZSBmKSB7CisgICAgCXJldHVybiBuZXcgRGltZW5zaW9uKDQzMCwyNzApOworICAgIH0KKworICAgIHByb3RlY3RlZCBGcmFtZSBjcmVhdGVEZW1vRnJhbWUoRGVtb0FwcGxldCBhcHBsZXQpIHsKKyAgICAgICAgZmluYWwgRnJhbWUgd2luZG93ID0gbmV3IEZyYW1lKCJOdW1iZXIgU3BlbGxvdXQgRGVtbyIpOworICAgICAgICB3aW5kb3cuc2V0U2l6ZSg4MDAsIDYwMCk7CisgICAgICAgIHdpbmRvdy5zZXRMYXlvdXQobmV3IEJvcmRlckxheW91dCgpKTsKKworICAgICAgICBQYW5lbCBtYWluUGFuZWwgPSBuZXcgUGFuZWwoKTsKKyAgICAgICAgbWFpblBhbmVsLnNldExheW91dChuZXcgR3JpZExheW91dCgxLDIpKTsKKworICAgICAgICBjb21tZW50YXJ5RmllbGQgPSBuZXcgVGV4dEFyZWEoIiIsIDAsIDAsIFRleHRBcmVhLlNDUk9MTEJBUlNfVkVSVElDQUxfT05MWSk7CisgICAgICAgIGNvbW1lbnRhcnlGaWVsZC5zZXRTaXplKDgwMCwgNTApOworICAgICAgICBjb21tZW50YXJ5RmllbGQuc2V0VGV4dChSYm5mU2FtcGxlUnVsZVNldHMuc2FtcGxlUnVsZVNldENvbW1lbnRhcnlbMF0pOworICAgICAgICBjb21tZW50YXJ5RmllbGQuc2V0RWRpdGFibGUoZmFsc2UpOworICAgICAgICBjb21tZW50YXJ5RmllbGQuc2V0Rm9udChuZXcgRm9udCgiSGVsdmV0aWNhIiwgRm9udC5QTEFJTiwgMTQpKTsKKworICAgICAgICBzcGVsbG91dEZvcm1hdHRlciA9IG5ldyBSdWxlQmFzZWROdW1iZXJGb3JtYXQoUmJuZlNhbXBsZVJ1bGVTZXRzLnVzRW5nbGlzaCwgTG9jYWxlLlVTKTsKKyAgICAgICAgc3BlbGxvdXRGb3JtYXR0ZXIuc2V0TGVuaWVudFBhcnNlTW9kZShsZW5pZW50UGFyc2UpOworICAgICAgICBwb3B1bGF0ZVJ1bGVTZXRNZW51KCk7CisgICAgICAgIG51bWJlckZvcm1hdHRlciA9IG5ldyBEZWNpbWFsRm9ybWF0KCIjLCMjMC4jIyMjIyMjIyMjIik7CisgICAgICAgIHBhcnNlUG9zaXRpb24gPSBuZXcgUGFyc2VQb3NpdGlvbigwKTsKKyAgICAgICAgdGhlTnVtYmVyID0gMDsKKworICAgICAgICBudW1iZXJGaWVsZCA9IG5ldyBUZXh0RmllbGQoKTsKKyAgICAgICAgbnVtYmVyRmllbGQuc2V0Rm9udChuZXcgRm9udCgiU2VyaWYiLCBGb250LlBMQUlOLCAyNCkpOworICAgICAgICB0ZXh0RmllbGQgPSBuZXcgRGVtb1RleHRGaWVsZEhvbGRlcigpOworICAgICAgICB0ZXh0RmllbGQuc2V0Rm9udChuZXcgRm9udCgiU2VyaWYiLCBGb250LlBMQUlOLCAyNCkpOworICAgICAgICBydWxlc0ZpZWxkID0gbmV3IERlbW9UZXh0RmllbGRIb2xkZXIoKTsKKyAgICAgICAgcnVsZXNGaWVsZC5zZXRGb250KG5ldyBGb250KCJTZXJpZiIsIEZvbnQuUExBSU4sIDE0KSk7CisgICAgICAgIGxlbmllbnRQYXJzZUJ1dHRvbiA9IG5ldyBDaGVja2JveCgiTGVuaWVudCBwYXJzZSIsIGxlbmllbnRQYXJzZSk7CisKKyAgICAgICAgbnVtYmVyRmllbGQuYWRkVGV4dExpc3RlbmVyKG5ldyBUZXh0TGlzdGVuZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCB0ZXh0VmFsdWVDaGFuZ2VkKFRleHRFdmVudCBlKSB7CisgICAgICAgICAgICAgICAgaWYgKCFudW1iZXJGaWVsZEhhc0ZvY3VzKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICBTdHJpbmcgZmllbGRUZXh0ID0gKChUZXh0Q29tcG9uZW50KShlLmdldFNvdXJjZSgpKSkuZ2V0VGV4dCgpOworICAgICAgICAgICAgICAgIHBhcnNlUG9zaXRpb24uc2V0SW5kZXgoMCk7CisgICAgICAgICAgICAgICAgTnVtYmVyIHRlbXAgPSBudW1iZXJGb3JtYXR0ZXIucGFyc2UoZmllbGRUZXh0LCBwYXJzZVBvc2l0aW9uKTsKKyAgICAgICAgICAgICAgICBpZiAodGVtcCA9PSBudWxsIHx8IHBhcnNlUG9zaXRpb24uZ2V0SW5kZXgoKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIHRoZU51bWJlciA9IDA7CisgICAgICAgICAgICAgICAgICAgIHRleHRGaWVsZC5zZXRUZXh0KCJQQVJTRSBFUlJPUiIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdGhlTnVtYmVyID0gdGVtcC5kb3VibGVWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICB0ZXh0RmllbGQuc2V0VGV4dChzcGVsbG91dEZvcm1hdHRlci5mb3JtYXQodGhlTnVtYmVyLCBydWxlU2V0TmFtZSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSApOworCisgICAgICAgIG51bWJlckZpZWxkLmFkZEZvY3VzTGlzdGVuZXIobmV3IEZvY3VzQWRhcHRlcigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGZvY3VzTG9zdChGb2N1c0V2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICBudW1iZXJGaWVsZEhhc0ZvY3VzID0gZmFsc2U7CisgICAgICAgICAgICAgICAgbnVtYmVyRmllbGQuc2V0VGV4dChudW1iZXJGb3JtYXR0ZXIuZm9ybWF0KHRoZU51bWJlcikpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwdWJsaWMgdm9pZCBmb2N1c0dhaW5lZChGb2N1c0V2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICBudW1iZXJGaWVsZEhhc0ZvY3VzID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBudW1iZXJGaWVsZC5zZWxlY3RBbGwoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSApOworCisgICAgICAgIHRleHRGaWVsZC5hZGRLZXlMaXN0ZW5lcihuZXcgS2V5QWRhcHRlcigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGtleVR5cGVkKEtleUV2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICBpZiAoZS5nZXRLZXlDaGFyKCkgPT0gJ1x0JykgeworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZmllbGRUZXh0ID0gKChUZXh0Q29tcG9uZW50KShlLmdldFNvdXJjZSgpKSkuZ2V0VGV4dCgpOworICAgICAgICAgICAgICAgICAgICBwYXJzZVBvc2l0aW9uLnNldEluZGV4KDApOworICAgICAgICAgICAgICAgICAgICB0aGVOdW1iZXIgPSBzcGVsbG91dEZvcm1hdHRlci5wYXJzZShmaWVsZFRleHQsIHBhcnNlUG9zaXRpb24pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmRvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChwYXJzZVBvc2l0aW9uLmdldEluZGV4KCkgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhlTnVtYmVyID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckZpZWxkLnNldFRleHQoIlBBUlNFIEVSUk9SIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0RmllbGQuc2VsZWN0QWxsKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocGFyc2VQb3NpdGlvbi5nZXRJbmRleCgpIDwgZmllbGRUZXh0Lmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0RmllbGQuc2VsZWN0KHBhcnNlUG9zaXRpb24uZ2V0SW5kZXgoKSwgZmllbGRUZXh0Lmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckZpZWxkLnNldFRleHQobnVtYmVyRm9ybWF0dGVyLmZvcm1hdCh0aGVOdW1iZXIpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRleHRGaWVsZC5zZWxlY3RBbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckZpZWxkLnNldFRleHQobnVtYmVyRm9ybWF0dGVyLmZvcm1hdCh0aGVOdW1iZXIpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlLmNvbnN1bWUoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gKTsKKworICAgICAgICB0ZXh0RmllbGQuYWRkRm9jdXNMaXN0ZW5lcihuZXcgRm9jdXNBZGFwdGVyKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgZm9jdXNMb3N0KEZvY3VzRXZlbnQgZSkgeworICAgICAgICAgICAgICAgIFN0cmluZyBmaWVsZFRleHQgPSAoKFRleHRDb21wb25lbnQpKGUuZ2V0U291cmNlKCkpKS5nZXRUZXh0KCk7CisgICAgICAgICAgICAgICAgcGFyc2VQb3NpdGlvbi5zZXRJbmRleCgwKTsKKyAgICAgICAgICAgICAgICB0aGVOdW1iZXIgPSBzcGVsbG91dEZvcm1hdHRlci5wYXJzZShmaWVsZFRleHQsIHBhcnNlUG9zaXRpb24pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5kb3VibGVWYWx1ZSgpOworICAgICAgICAgICAgICAgIGlmIChwYXJzZVBvc2l0aW9uLmdldEluZGV4KCkgPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgbnVtYmVyRmllbGQuc2V0VGV4dCgiUEFSU0UgRVJST1IiKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG51bWJlckZpZWxkLnNldFRleHQobnVtYmVyRm9ybWF0dGVyLmZvcm1hdCh0aGVOdW1iZXIpKTsKKyAgICAgICAgICAgICAgICB0ZXh0RmllbGQuc2V0VGV4dCh0ZXh0RmllbGQuZ2V0VGV4dCgpKTsgLy8gdGV4dEZpZWxkLnJlcGFpbnQoKSBkaWRuJ3Qgd29yayByaWdodAorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwdWJsaWMgdm9pZCBmb2N1c0dhaW5lZChGb2N1c0V2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICB0ZXh0RmllbGQuc2VsZWN0QWxsKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gKTsKKworICAgICAgICBydWxlc0ZpZWxkLmFkZEtleUxpc3RlbmVyKG5ldyBLZXlBZGFwdGVyKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQga2V5VHlwZWQoS2V5RXZlbnQgZSkgeworICAgICAgICAgICAgICAgIGlmIChlLmdldEtleUNoYXIoKSA9PSAnXHQnKSB7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBmaWVsZFRleHQgPSAoKFRleHRDb21wb25lbnQpKGUuZ2V0U291cmNlKCkpKS5nZXRUZXh0KCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChmb3JtYXR0ZXJNZW51LmdldFNlbGVjdGVkSXRlbSgpLmVxdWFscygiQ3VzdG9tIikgfHwgIWZpZWxkVGV4dC5lcXVhbHMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYm5mU2FtcGxlUnVsZVNldHMuc2FtcGxlUnVsZVNldHNbZm9ybWF0dGVyTWVudS5nZXRTZWxlY3RlZEluZGV4KCldKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdWxlQmFzZWROdW1iZXJGb3JtYXQgdGVtcCA9IG5ldyBSdWxlQmFzZWROdW1iZXJGb3JtYXQoZmllbGRUZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLnNldExlbmllbnRQYXJzZU1vZGUobGVuaWVudFBhcnNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3B1bGF0ZVJ1bGVTZXRNZW51KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlbGxvdXRGb3JtYXR0ZXIgPSB0ZW1wOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbVJ1bGVTZXQgPSBmaWVsZFRleHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyTWVudS5zZWxlY3QoIkN1c3RvbSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnRhcnlGaWVsZC5zZXRUZXh0KFJibmZTYW1wbGVSdWxlU2V0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlUnVsZVNldENvbW1lbnRhcnlbUmJuZlNhbXBsZVJ1bGVTZXRzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVSdWxlU2V0Q29tbWVudGFyeS5sZW5ndGggLSAxXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXNwbGF5KCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIHgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0RmllbGQuc2V0VGV4dCh4LnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGUuY29uc3VtZSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSApOworCisgICAgICAgIHJ1bGVzRmllbGQuYWRkRm9jdXNMaXN0ZW5lcihuZXcgRm9jdXNBZGFwdGVyKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgZm9jdXNMb3N0KEZvY3VzRXZlbnQgZSkgeworICAgICAgICAgICAgICAgIFN0cmluZyBmaWVsZFRleHQgPSAoKFRleHRDb21wb25lbnQpKGUuZ2V0U291cmNlKCkpKS5nZXRUZXh0KCk7CisgICAgICAgICAgICAgICAgaWYgKGZvcm1hdHRlck1lbnUuZ2V0U2VsZWN0ZWRJdGVtKCkuZXF1YWxzKCJDdXN0b20iKSB8fCAhZmllbGRUZXh0LmVxdWFscygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmJuZlNhbXBsZVJ1bGVTZXRzLnNhbXBsZVJ1bGVTZXRzW2Zvcm1hdHRlck1lbnUuZ2V0U2VsZWN0ZWRJbmRleCgpXSkpIHsKKyAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZE51bWJlckZvcm1hdCB0ZW1wID0gbmV3IFJ1bGVCYXNlZE51bWJlckZvcm1hdChmaWVsZFRleHQpOworICAgICAgICAgICAgICAgICAgICAgICAgdGVtcC5zZXRMZW5pZW50UGFyc2VNb2RlKGxlbmllbnRQYXJzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwb3B1bGF0ZVJ1bGVTZXRNZW51KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBzcGVsbG91dEZvcm1hdHRlciA9IHRlbXA7CisgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21SdWxlU2V0ID0gZmllbGRUZXh0OworICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyTWVudS5zZWxlY3QoIkN1c3RvbSIpOworICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXNwbGF5KCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiB4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0RmllbGQuc2V0VGV4dCh4LnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJ1bGVzRmllbGQuc2V0VGV4dChydWxlc0ZpZWxkLmdldFRleHQoKSk7IC8vIHJ1bGVzRmllbGQucmVwYWludCgpIGRpZG4ndCB3b3JrIHJpZ2h0CisgICAgICAgICAgICB9CisgICAgICAgIH0gKTsKKworICAgICAgICBsZW5pZW50UGFyc2VCdXR0b24uYWRkSXRlbUxpc3RlbmVyKG5ldyBJdGVtTGlzdGVuZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBpdGVtU3RhdGVDaGFuZ2VkKEl0ZW1FdmVudCBlKSB7CisgICAgICAgICAgICAgICAgbGVuaWVudFBhcnNlID0gbGVuaWVudFBhcnNlQnV0dG9uLmdldFN0YXRlKCk7CisgICAgICAgICAgICAgICAgc3BlbGxvdXRGb3JtYXR0ZXIuc2V0TGVuaWVudFBhcnNlTW9kZShsZW5pZW50UGFyc2UpOworICAgICAgICAgICAgfQorICAgICAgICB9ICk7CisKKyAgICAgICAgbnVtYmVyRmllbGQuc2V0VGV4dChudW1iZXJGb3JtYXR0ZXIuZm9ybWF0KHRoZU51bWJlcikpOworICAgICAgICBudW1iZXJGaWVsZC5zZWxlY3RBbGwoKTsKKyAgICAgICAgdGV4dEZpZWxkLnNldFRleHQoc3BlbGxvdXRGb3JtYXR0ZXIuZm9ybWF0KHRoZU51bWJlciwgcnVsZVNldE5hbWUpKTsKKworICAgICAgICBQYW5lbCBsZWZ0UGFuZWwgPSBuZXcgUGFuZWwoKTsKKyAgICAgICAgbGVmdFBhbmVsLnNldExheW91dChuZXcgQm9yZGVyTGF5b3V0KCkpOworICAgICAgICBQYW5lbCBwYW5lbCA9IG5ldyBQYW5lbCgpOworICAgICAgICBwYW5lbC5zZXRMYXlvdXQobmV3IEJvcmRlckxheW91dCgpKTsKKyAgICAgICAgUGFuZWwgcGFuZWwxID0gbmV3IFBhbmVsKCk7CisgICAgICAgIHBhbmVsMS5zZXRMYXlvdXQobmV3IEdyaWRMYXlvdXQoMywgMSkpOworICAgICAgICBwYW5lbDEuYWRkKG5ldyBQYW5lbCgpKTsKKyAgICAgICAgcGFuZWwxLmFkZChudW1iZXJGaWVsZCwgIkNlbnRlciIpOworICAgICAgICBwYW5lbDEuYWRkKGxlbmllbnRQYXJzZUJ1dHRvbik7CisgICAgICAgIHBhbmVsLmFkZChwYW5lbDEsICJDZW50ZXIiKTsKKyAgICAgICAgUGFuZWwgcGFuZWwyID0gbmV3IFBhbmVsKCk7CisgICAgICAgIHBhbmVsMi5zZXRMYXlvdXQobmV3IEdyaWRMYXlvdXQoMywgMykpOworICAgICAgICBCdXR0b24gYnV0dG9uID0gbmV3IEJ1dHRvbigiKzEwMCIpOworICAgICAgICBidXR0b24uYWRkQWN0aW9uTGlzdGVuZXIoIG5ldyBBY3Rpb25MaXN0ZW5lcigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGFjdGlvblBlcmZvcm1lZChBY3Rpb25FdmVudCBlKSB7CisgICAgICAgICAgICAgICAgcm9sbCgxMDApOworICAgICAgICAgICAgfQorICAgICAgICB9ICk7CisgICAgICAgIHBhbmVsMi5hZGQoYnV0dG9uKTsKKyAgICAgICAgYnV0dG9uID0gbmV3IEJ1dHRvbigiKzEwIik7CisgICAgICAgIGJ1dHRvbi5hZGRBY3Rpb25MaXN0ZW5lciggbmV3IEFjdGlvbkxpc3RlbmVyKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEFjdGlvbkV2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICByb2xsKDEwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSApOworICAgICAgICBwYW5lbDIuYWRkKGJ1dHRvbik7CisgICAgICAgIGJ1dHRvbiA9IG5ldyBCdXR0b24oIisxIik7CisgICAgICAgIGJ1dHRvbi5hZGRBY3Rpb25MaXN0ZW5lciggbmV3IEFjdGlvbkxpc3RlbmVyKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEFjdGlvbkV2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICByb2xsKDEpOworICAgICAgICAgICAgfQorICAgICAgICB9ICk7CisgICAgICAgIHBhbmVsMi5hZGQoYnV0dG9uKTsKKyAgICAgICAgYnV0dG9uID0gbmV3IEJ1dHRvbigiPCIpOworICAgICAgICBidXR0b24uYWRkQWN0aW9uTGlzdGVuZXIoIG5ldyBBY3Rpb25MaXN0ZW5lcigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGFjdGlvblBlcmZvcm1lZChBY3Rpb25FdmVudCBlKSB7CisgICAgICAgICAgICAgICAgdGhlTnVtYmVyICo9IDEwOworICAgICAgICAgICAgICAgIHJlZGlzcGxheSgpOworICAgICAgICAgICAgfQorICAgICAgICB9ICk7CisgICAgICAgIHBhbmVsMi5hZGQoYnV0dG9uKTsKKyAgICAgICAgcGFuZWwyLmFkZChuZXcgUGFuZWwoKSk7CisgICAgICAgIGJ1dHRvbiA9IG5ldyBCdXR0b24oIj4iKTsKKyAgICAgICAgYnV0dG9uLmFkZEFjdGlvbkxpc3RlbmVyKCBuZXcgQWN0aW9uTGlzdGVuZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBhY3Rpb25QZXJmb3JtZWQoQWN0aW9uRXZlbnQgZSkgeworICAgICAgICAgICAgICAgIHRoZU51bWJlciAvPSAxMDsKKyAgICAgICAgICAgICAgICByZWRpc3BsYXkoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSApOworICAgICAgICBwYW5lbDIuYWRkKGJ1dHRvbik7CisgICAgICAgIGJ1dHRvbiA9IG5ldyBCdXR0b24oIi0xMDAiKTsKKyAgICAgICAgYnV0dG9uLmFkZEFjdGlvbkxpc3RlbmVyKCBuZXcgQWN0aW9uTGlzdGVuZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBhY3Rpb25QZXJmb3JtZWQoQWN0aW9uRXZlbnQgZSkgeworICAgICAgICAgICAgICAgIHJvbGwoLTEwMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gKTsKKyAgICAgICAgcGFuZWwyLmFkZChidXR0b24pOworICAgICAgICBidXR0b24gPSBuZXcgQnV0dG9uKCItMTAiKTsKKyAgICAgICAgYnV0dG9uLmFkZEFjdGlvbkxpc3RlbmVyKCBuZXcgQWN0aW9uTGlzdGVuZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBhY3Rpb25QZXJmb3JtZWQoQWN0aW9uRXZlbnQgZSkgeworICAgICAgICAgICAgICAgIHJvbGwoLTEwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSApOworICAgICAgICBwYW5lbDIuYWRkKGJ1dHRvbik7CisgICAgICAgIGJ1dHRvbiA9IG5ldyBCdXR0b24oIi0xIik7CisgICAgICAgIGJ1dHRvbi5hZGRBY3Rpb25MaXN0ZW5lciggbmV3IEFjdGlvbkxpc3RlbmVyKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEFjdGlvbkV2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICByb2xsKC0xKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSApOworICAgICAgICBwYW5lbDIuYWRkKGJ1dHRvbik7CisgICAgICAgIHBhbmVsLmFkZChwYW5lbDIsICJFYXN0Iik7CisgICAgICAgIGxlZnRQYW5lbC5hZGQocGFuZWwsICJOb3J0aCIpOworICAgICAgICBsZWZ0UGFuZWwuYWRkKHRleHRGaWVsZCwgIkNlbnRlciIpOworCisgICAgICAgIFBhbmVsIHJpZ2h0UGFuZWwgPSBuZXcgUGFuZWwoKTsKKyAgICAgICAgcmlnaHRQYW5lbC5zZXRMYXlvdXQobmV3IEJvcmRlckxheW91dCgpKTsKKyAgICAgICAgZm9ybWF0dGVyTWVudSA9IG5ldyBDaG9pY2UoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBSYm5mU2FtcGxlUnVsZVNldHMuc2FtcGxlUnVsZVNldE5hbWVzLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgZm9ybWF0dGVyTWVudS5hZGRJdGVtKFJibmZTYW1wbGVSdWxlU2V0cy5zYW1wbGVSdWxlU2V0TmFtZXNbaV0pOworICAgICAgICBmb3JtYXR0ZXJNZW51LmFkZEl0ZW0oIkN1c3RvbSIpOworICAgICAgICBmb3JtYXR0ZXJNZW51LmFkZEl0ZW1MaXN0ZW5lcihuZXcgSXRlbUxpc3RlbmVyKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgaXRlbVN0YXRlQ2hhbmdlZChJdGVtRXZlbnQgZSkgeworICAgICAgICAgICAgICAgIENob2ljZSBzb3VyY2UgPSAoQ2hvaWNlKShlLmdldFNvdXJjZSgpKTsKKyAgICAgICAgICAgICAgICBpbnQgaXRlbSA9IHNvdXJjZS5nZXRTZWxlY3RlZEluZGV4KCk7CisgICAgICAgICAgICAgICAgTG9jYWxlIGxvY2FsZSA9IFJibmZTYW1wbGVSdWxlU2V0cy5zYW1wbGVSdWxlU2V0TG9jYWxlc1tpdGVtXTsKKworICAgICAgICAgICAgICAgIGNvbW1lbnRhcnlGaWVsZC5zZXRUZXh0KFJibmZTYW1wbGVSdWxlU2V0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlUnVsZVNldENvbW1lbnRhcnlbaXRlbV0pOworCisgICAgICAgICAgICAgICAgaWYgKGxvY2FsZSAhPSBudWxsICYmIChsb2NhbGUuZ2V0TGFuZ3VhZ2UoKS5lcXVhbHMoIml3IikKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IGxvY2FsZS5nZXRMYW5ndWFnZSgpLmVxdWFscygicnUiKSB8fCBsb2NhbGUuZ2V0TGFuZ3VhZ2UoKS5lcXVhbHMoImphIikKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IGxvY2FsZS5nZXRMYW5ndWFnZSgpLmVxdWFscygiZWwiKQorICAgICAgICAgICAgICAgICAgICAgICAgfHwgbG9jYWxlLmdldExhbmd1YWdlKCkuZXF1YWxzKCJ6aCIpKSkgeworICAgICAgICAgICAgICAgICAgICB0ZXh0RmllbGQudG9nZ2xlUGFuZXMoZmFsc2UpOworICAgICAgICAgICAgICAgICAgICBydWxlc0ZpZWxkLnRvZ2dsZVBhbmVzKGZhbHNlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHRleHRGaWVsZC50b2dnbGVQYW5lcyh0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgcnVsZXNGaWVsZC50b2dnbGVQYW5lcyh0cnVlKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBtYWtlTmV3U3BlbGxvdXRGb3JtYXR0ZXIoKTsKKyAgICAgICAgICAgICAgICByZWRpc3BsYXkoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSApOworCisgICAgICAgIHJ1bGVTZXRNZW51ID0gbmV3IENob2ljZSgpOworICAgICAgICBwb3B1bGF0ZVJ1bGVTZXRNZW51KCk7CisKKyAgICAgICAgcnVsZVNldE1lbnUuYWRkSXRlbUxpc3RlbmVyKG5ldyBJdGVtTGlzdGVuZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBpdGVtU3RhdGVDaGFuZ2VkKEl0ZW1FdmVudCBlKSB7CisgICAgICAgICAgICAgICAgcnVsZVNldE5hbWUgPSBydWxlU2V0TWVudS5nZXRTZWxlY3RlZEl0ZW0oKTsKKyAgICAgICAgICAgICAgICByZWRpc3BsYXkoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSApOworCisgICAgICAgIFBhbmVsIG1lbnVQYW5lbCA9IG5ldyBQYW5lbCgpOworICAgICAgICBtZW51UGFuZWwuc2V0TGF5b3V0KG5ldyBHcmlkTGF5b3V0KDEsIDIpKTsKKyAgICAgICAgbWVudVBhbmVsLmFkZChmb3JtYXR0ZXJNZW51KTsKKyAgICAgICAgbWVudVBhbmVsLmFkZChydWxlU2V0TWVudSk7CisgICAgICAgIHJpZ2h0UGFuZWwuYWRkKG1lbnVQYW5lbCwgIk5vcnRoIik7CisKKyAgICAgICAgcnVsZXNGaWVsZC5zZXRUZXh0KFJibmZTYW1wbGVSdWxlU2V0cy5zYW1wbGVSdWxlU2V0c1tmb3JtYXR0ZXJNZW51LmdldFNlbGVjdGVkSW5kZXgoKV0pOworICAgICAgICByaWdodFBhbmVsLmFkZChydWxlc0ZpZWxkLCAiQ2VudGVyIik7CisKKyAgICAgICAgbWFpblBhbmVsLmFkZChsZWZ0UGFuZWwpOworICAgICAgICBtYWluUGFuZWwuYWRkKHJpZ2h0UGFuZWwpOworCisgICAgICAgIHdpbmRvdy5hZGQobWFpblBhbmVsLCAiQ2VudGVyIik7CisgICAgICAgIHdpbmRvdy5hZGQoY29tbWVudGFyeUZpZWxkLCAiU291dGgiKTsKKworICAgICAgICB3aW5kb3cuZG9MYXlvdXQoKTsKKyAgICAgICAgd2luZG93LnNob3coKTsKKyAgICAgICAgcmV0dXJuIHdpbmRvdzsKKyAgICB9CisKKyAgICB2b2lkIHJvbGwoaW50IGRlbHRhKSB7CisgICAgICAgIHRoZU51bWJlciArPSBkZWx0YTsKKyAgICAgICAgcmVkaXNwbGF5KCk7CisgICAgfQorCisgICAgdm9pZCByZWRpc3BsYXkoKSB7CisgICAgICAgIG51bWJlckZpZWxkLnNldFRleHQobnVtYmVyRm9ybWF0dGVyLmZvcm1hdCh0aGVOdW1iZXIpKTsKKyAgICAgICAgdGV4dEZpZWxkLnNldFRleHQoc3BlbGxvdXRGb3JtYXR0ZXIuZm9ybWF0KHRoZU51bWJlciwgcnVsZVNldE5hbWUpKTsKKyAgICB9CisKKyAgICB2b2lkIG1ha2VOZXdTcGVsbG91dEZvcm1hdHRlcigpIHsKKyAgICAgICAgaW50IGl0ZW0gPSBmb3JtYXR0ZXJNZW51LmdldFNlbGVjdGVkSW5kZXgoKTsKKyAgICAgICAgU3RyaW5nIGZvcm1hdHRlck1lbnVJdGVtID0gZm9ybWF0dGVyTWVudS5nZXRTZWxlY3RlZEl0ZW0oKTsKKworICAgICAgICBpZiAoZm9ybWF0dGVyTWVudUl0ZW0uZXF1YWxzKCJDdXN0b20iKSkgeworICAgICAgICAgICAgcnVsZXNGaWVsZC5zZXRUZXh0KGN1c3RvbVJ1bGVTZXQpOworICAgICAgICAgICAgc3BlbGxvdXRGb3JtYXR0ZXIgPSBuZXcgUnVsZUJhc2VkTnVtYmVyRm9ybWF0KGN1c3RvbVJ1bGVTZXQpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcnVsZXNGaWVsZC5zZXRUZXh0KFJibmZTYW1wbGVSdWxlU2V0cy5zYW1wbGVSdWxlU2V0c1tpdGVtXSk7CisKKyAgICAgICAgICAgIExvY2FsZSBsb2NhbGUgPSBSYm5mU2FtcGxlUnVsZVNldHMuc2FtcGxlUnVsZVNldExvY2FsZXNbaXRlbV07CisgICAgICAgICAgICBpZiAobG9jYWxlID09IG51bGwpCisgICAgICAgICAgICAgICAgbG9jYWxlID0gTG9jYWxlLmdldERlZmF1bHQoKTsKKworICAgICAgICAgICAgc3BlbGxvdXRGb3JtYXR0ZXIgPSBuZXcgUnVsZUJhc2VkTnVtYmVyRm9ybWF0KFJibmZTYW1wbGVSdWxlU2V0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVSdWxlU2V0c1tpdGVtXSwgbG9jYWxlKTsKKyAgICAgICAgfQorICAgICAgICBzcGVsbG91dEZvcm1hdHRlci5zZXRMZW5pZW50UGFyc2VNb2RlKGxlbmllbnRQYXJzZSk7CisgICAgICAgIHBvcHVsYXRlUnVsZVNldE1lbnUoKTsKKyAgICB9CisKKyAgICB2b2lkIHBvcHVsYXRlUnVsZVNldE1lbnUoKSB7CisgICAgICAgIFN0cmluZ1tdIHJ1bGVTZXROYW1lcyA9IHNwZWxsb3V0Rm9ybWF0dGVyLmdldFJ1bGVTZXROYW1lcygpOworCisgICAgICAgIGlmIChydWxlU2V0TWVudSAhPSBudWxsKSB7CisgICAgICAgICAgICBydWxlU2V0TWVudS5yZW1vdmVBbGwoKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcnVsZVNldE5hbWVzLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgICAgIHJ1bGVTZXRNZW51LmFkZEl0ZW0ocnVsZVNldE5hbWVzW2ldKTsKKworICAgICAgICAgICAgcnVsZVNldE5hbWUgPSBydWxlU2V0TWVudS5nZXRTZWxlY3RlZEl0ZW0oKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBydWxlU2V0TmFtZSA9IHJ1bGVTZXROYW1lc1swXTsKKyAgICB9CisKKyAgICBwcml2YXRlIEZyYW1lIGRlbW9XaW5kb3cgPSBudWxsOworCisgICAgcHJpdmF0ZSBUZXh0Q29tcG9uZW50IG51bWJlckZpZWxkOworICAgIHByaXZhdGUgRGVtb1RleHRGaWVsZEhvbGRlciB0ZXh0RmllbGQ7CisgICAgcHJpdmF0ZSBEZW1vVGV4dEZpZWxkSG9sZGVyIHJ1bGVzRmllbGQ7CisgICAgcHJpdmF0ZSBUZXh0Q29tcG9uZW50IGNvbW1lbnRhcnlGaWVsZDsKKyAgICBwcml2YXRlIENoZWNrYm94IGxlbmllbnRQYXJzZUJ1dHRvbjsKKworICAgIHByaXZhdGUgYm9vbGVhbiBudW1iZXJGaWVsZEhhc0ZvY3VzID0gdHJ1ZTsKKworICAgIHByaXZhdGUgUnVsZUJhc2VkTnVtYmVyRm9ybWF0IHNwZWxsb3V0Rm9ybWF0dGVyOworICAgIHByaXZhdGUgRGVjaW1hbEZvcm1hdCBudW1iZXJGb3JtYXR0ZXI7CisgICAgcHJpdmF0ZSBQYXJzZVBvc2l0aW9uIHBhcnNlUG9zaXRpb247CisKKyAgICBwcml2YXRlIGJvb2xlYW4gbGVuaWVudFBhcnNlID0gdHJ1ZTsKKworICAgIHByaXZhdGUgZG91YmxlIHRoZU51bWJlciA9IDA7CisgICAgcHJpdmF0ZSBib29sZWFuIGNhbkVkaXQgPSB0cnVlOworCisgICAgcHJpdmF0ZSBDaG9pY2UgZm9ybWF0dGVyTWVudTsKKyAgICBwcml2YXRlIENob2ljZSBydWxlU2V0TWVudTsKKyAgICBwcml2YXRlIFN0cmluZyBydWxlU2V0TmFtZTsKKworICAgIHByaXZhdGUgU3RyaW5nIGN1c3RvbVJ1bGVTZXQgPSAiTk8gUlVMRVMhIjsKK30KKworY2xhc3MgRGVtb1RleHRGaWVsZCBleHRlbmRzIENvbXBvbmVudCB7CisgICAgcHVibGljIERlbW9UZXh0RmllbGQoKSB7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0VGV4dChTdHJpbmcgdGV4dCkgeworICAgICAgICB0aGlzLnRleHQgPSB0ZXh0OworICAgICAgICB0aGlzLnJlcGFpbnQoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nIGdldFRleHQoKSB7CisgICAgICAgIHJldHVybiB0ZXh0OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHBhaW50KEdyYXBoaWNzIGcpIHsKKyAgICAgICAgRm9udCBmb250ID0gZ2V0Rm9udCgpOworICAgICAgICBGb250TWV0cmljcyBmbSA9IGcuZ2V0Rm9udE1ldHJpY3MoKTsKKyAgICAgICAgZy5zZXRGb250KGZvbnQpOworICAgICAgICBTdHJpbmcgdGV4dCA9IGdldFRleHQoKTsKKyAgICAgICAgQnJlYWtJdGVyYXRvciBiaSA9IEJyZWFrSXRlcmF0b3IuZ2V0TGluZUluc3RhbmNlKCk7CisgICAgICAgIGJpLnNldFRleHQodGV4dCk7CisgICAgICAgIGludCBsaW5lSGVpZ2h0ID0gZm0uZ2V0SGVpZ2h0KCk7CisgICAgICAgIGludCB3aWR0aCA9IGdldFNpemUoKS53aWR0aDsKKyAgICAgICAgaW50IHBlblkgPSBmbS5nZXRBc2NlbnQoKTsKKyAgICAgICAgaW50IGxpbmVTdGFydCA9IDA7CisgICAgICAgIGludCB0ZW1wTGluZUVuZCA9IGJpLmZpcnN0KCk7CisgICAgICAgIGludCBsaW5lRW5kID0gMDsKKyAgICAgICAgaW50IG1heExpbmVFbmQgPSAwOworICAgICAgICB0b3RhbEhlaWdodCA9IDA7CisKKyAgICAgICAgd2hpbGUgKGxpbmVTdGFydCA8IHRleHQubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIG1heExpbmVFbmQgPSB0ZXh0LmluZGV4T2YoJ1xuJywgbGluZVN0YXJ0KTsKKyAgICAgICAgICAgIGlmIChtYXhMaW5lRW5kID09IC0xKQorICAgICAgICAgICAgICAgIG1heExpbmVFbmQgPSBJbnRlZ2VyLk1BWF9WQUxVRTsKKyAgICAgICAgICAgIHdoaWxlICh0ZW1wTGluZUVuZCAhPSBCcmVha0l0ZXJhdG9yLkRPTkUgJiYgZm0uc3RyaW5nV2lkdGgodGV4dC5zdWJzdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVN0YXJ0LCB0ZW1wTGluZUVuZCkpIDwgd2lkdGgpIHsKKyAgICAgICAgICAgICAgICBsaW5lRW5kID0gdGVtcExpbmVFbmQ7CisgICAgICAgICAgICAgICAgdGVtcExpbmVFbmQgPSBiaS5uZXh0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobGluZVN0YXJ0ID49IGxpbmVFbmQpIHsKKyAgICAgICAgICAgICAgICBpZiAodGVtcExpbmVFbmQgPT0gQnJlYWtJdGVyYXRvci5ET05FKQorICAgICAgICAgICAgICAgICAgICBsaW5lRW5kID0gdGV4dC5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGxpbmVFbmQgPSB0ZW1wTGluZUVuZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChsaW5lRW5kID4gbWF4TGluZUVuZCkKKyAgICAgICAgICAgICAgICBsaW5lRW5kID0gbWF4TGluZUVuZDsKKyAgICAgICAgICAgIGcuZHJhd1N0cmluZyh0ZXh0LnN1YnN0cmluZyhsaW5lU3RhcnQsIGxpbmVFbmQpLCAwLCBwZW5ZKTsKKyAgICAgICAgICAgIHBlblkgKz0gbGluZUhlaWdodDsKKyAgICAgICAgICAgIHRvdGFsSGVpZ2h0ICs9IGxpbmVIZWlnaHQ7CisgICAgICAgICAgICBsaW5lU3RhcnQgPSBsaW5lRW5kOworICAgICAgICAgICAgaWYgKGxpbmVTdGFydCA8IHRleHQubGVuZ3RoKCkgJiYgdGV4dC5jaGFyQXQobGluZVN0YXJ0KSA9PSAnXG4nKQorICAgICAgICAgICAgICAgICsrbGluZVN0YXJ0OworICAgICAgICB9CisgICAgfQorCisvKgorICAgIHB1YmxpYyBEaW1lbnNpb24gZ2V0UHJlZmVycmVkU2l6ZSgpIHsKKyAgICAgICAgRGltZW5zaW9uIHNpemUgPSBnZXRQYXJlbnQoKS5nZXRTaXplKCk7CisgICAgICAgIHJldHVybiBuZXcgRGltZW5zaW9uKHNpemUud2lkdGgsIHRvdGFsSGVpZ2h0KTsKKyAgICB9CisqLworCisgICAgcHJpdmF0ZSBTdHJpbmcgdGV4dDsKKyAgICBwcml2YXRlIGludCB0b3RhbEhlaWdodDsKK30KKworY2xhc3MgRGVtb1RleHRGaWVsZEhvbGRlciBleHRlbmRzIFBhbmVsIHsKKyAgICBwdWJsaWMgRGVtb1RleHRGaWVsZEhvbGRlcigpIHsKKyAgICAgICAgdGYxID0gbmV3IFRleHRBcmVhKCIiLCAwLCAwLCBUZXh0QXJlYS5TQ1JPTExCQVJTX1ZFUlRJQ0FMX09OTFkpOworICAgICAgICB0ZjIgPSBuZXcgRGVtb1RleHRGaWVsZCgpOworICAgICAgICBzcCA9IG5ldyBTY3JvbGxQYW5lKCk7CisKKyAgICAgICAgc2V0TGF5b3V0KG5ldyBDYXJkTGF5b3V0KCkpOworCisgICAgICAgIHNwLmFkZCh0ZjIsICJUZXh0RmllbGQxIik7CisgICAgICAgIHNwLnNldFZpc2libGUoZmFsc2UpOworICAgICAgICBhZGQodGYxLCAiVGVzdEZpZWxkMiIpOworICAgICAgICBhZGQoc3AsICJTY3JvbGxQYW5lIik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgYWRkRm9jdXNMaXN0ZW5lcihGb2N1c0xpc3RlbmVyIGwpIHsKKyAgICAgICAgdGYxLmFkZEZvY3VzTGlzdGVuZXIobCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgYWRkS2V5TGlzdGVuZXIoS2V5TGlzdGVuZXIgbCkgeworICAgICAgICB0ZjEuYWRkS2V5TGlzdGVuZXIobCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0VGV4dChTdHJpbmcgdGV4dCkgeworICAgICAgICB0ZjEuc2V0VGV4dCh0ZXh0KTsKKyAgICAgICAgdGYyLnNldFRleHQodGV4dCk7CisgICAgfQorCisgICAgcHVibGljIFN0cmluZyBnZXRUZXh0KCkgeworICAgICAgICByZXR1cm4gdGYxLmdldFRleHQoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZWxlY3QoaW50IHN0YXJ0LCBpbnQgZW5kKSB7CisgICAgICAgIHRmMS5zZWxlY3Qoc3RhcnQsIGVuZCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2VsZWN0QWxsKCkgeworICAgICAgICB0ZjEuc2VsZWN0QWxsKCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdG9nZ2xlUGFuZXMoYm9vbGVhbiBjYW5TaG93UmVhbFRleHRGaWVsZCkgeworICAgICAgICBpZiAoY2FuU2hvd1JlYWxUZXh0RmllbGQgIT0gc2hvd2luZ1JlYWxUZXh0RmllbGQpIHsKKyAgICAgICAgICAgIENhcmRMYXlvdXQgbGF5b3V0ID0gKENhcmRMYXlvdXQpKGdldExheW91dCgpKTsKKyAgICAgICAgICAgIGxheW91dC5uZXh0KHRoaXMpOworICAgICAgICAgICAgc2hvd2luZ1JlYWxUZXh0RmllbGQgPSBjYW5TaG93UmVhbFRleHRGaWVsZDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgVGV4dEFyZWEgdGYxID0gbnVsbDsKKyAgICBwcml2YXRlIERlbW9UZXh0RmllbGQgdGYyID0gbnVsbDsKKyAgICBwcml2YXRlIFNjcm9sbFBhbmUgc3AgPSBudWxsOworICAgIHByaXZhdGUgYm9vbGVhbiBzaG93aW5nUmVhbFRleHRGaWVsZCA9IHRydWU7Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vcmJuZi9SYm5mU2FtcGxlUnVsZVNldHMuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby9yYm5mL1JibmZTYW1wbGVSdWxlU2V0cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjlmOGE2OWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vcmJuZi9SYm5mU2FtcGxlUnVsZVNldHMuamF2YQpAQCAtMCwwICsxLDE5NDkgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby9yYm5mL1JibmZTYW1wbGVSdWxlU2V0cy5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzAyLzE2IDAzOjA0OjU5ICQgCisgKiAkUmV2aXNpb246IDEuMyAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LmRlbW8ucmJuZjsKKworaW1wb3J0IGNvbS5pYm0uaWN1LmRldi5kZW1vLio7CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKKworLyoqCisgKiBBIGNvbGxlY3Rpb24gb2YgZXhhbXBsZSBydWxlIHNldHMgZm9yIHVzZSB3aXRoIFJ1bGVCYXNlZE51bWJlckZvcm1hdC4KKyAqIFRoZXNlIGV4YW1wbGVzIGFyZSBpbnRlbmRlZCB0byBzZXJ2ZSBib3RoIGFzIGRlbW9uc3RyYXRpb25zIG9mIHdoYXQgY2FuCisgKiBiZSBkb25lIHdpdGggdGhpcyBmcmFtZXdvcmssIGFuZCBhcyBzdGFydGluZyBwb2ludHMgZm9yIGRlc2lnbmluZyBuZXcKKyAqIHJ1bGUgc2V0cy4KKyAqCisgKiBGb3IgdGhvc2UgdGhhdCBjbGFpbSB0byByZXByZXNlbnQgbnVtYmVyLXNwZWxsb3V0IHJ1bGVzIGZvciBsYW5ndWFnZXMKKyAqIG90aGVyIHRoYW4gVS5TLiBFbmdsaXNoLCB3ZSBtYWtlIG5vIGNsYWltcyBvZiBlaXRoZXIgYWNjdXJhY3kgb3IKKyAqIGNvbXBsZXRlbmVzcy4gIEluIGZhY3QsIHdlIGtub3cgdGhlbSB0byBiZSBpbmNvbXBsZXRlLCBhbmQgc3VzcGVjdAorICogbW9zdCBoYXZlIG1pc3Rha2VzIGluIHRoZW0uICBJZiB5b3Ugc2VlIHNvbWV0aGluZyB0aGF0IHlvdSBrbm93IGlzIHdyb25nLAorICogcGxlYXNlIHRlbGwgdXMhCisgKgorICogQGF1dGhvciBSaWNoYXJkIEdpbGxhbQorICogQHZlcnNpb24gJFZlcnNpb24kICREYXRlOiAyMDAyLzAyLzE2IDAzOjA0OjU5ICQKKyAqLworcHVibGljIGNsYXNzIFJibmZTYW1wbGVSdWxlU2V0cyB7CisgICAgLyoqCisgICAgICogUHV0cyBhIGNvcHlyaWdodCBpbiB0aGUgLmNsYXNzIGZpbGUKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0Tm90aWNlCisgICAgICAgID0gIkNvcHlyaWdodCBcdTAwYTkxOTk3LTE5OTggSUJNIENvcnAuICBBbGwgcmlnaHRzIHJlc2VydmVkLiI7CisKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIFNwZWxsb3V0IHJ1bGVzIGZvciB2YXJpb3VzIGxhbmd1YWdlcworICAgIC8vCisgICAgLy8gVGhlIGZvbGxvd2luZyBSdWxlQmFzZWROdW1iZXJGb3JtYXQgZGVzY3JpcHRpb25zIHNob3cgdGhlIHJ1bGVzIGZvcgorICAgIC8vIHNwZWxsaW5nIG91dCBudW1lcmljIHZhbHVlcyBpbiB2YXJpb3VzIGxhbmd1YWdlcy4gIEFzIG1lbnRpb25lZAorICAgIC8vIGJlZm9yZSwgd2UgY2Fubm90IHZvdWNoIGZvciB0aGUgYWNjdXJhY3kgb3IgY29tcGxldGVuZXNzIG9mIHRoaXMKKyAgICAvLyBkYXRhLCBhbHRob3VnaCB3ZSBiZWxpZXZlIGl0J3MgcHJldHR5IGNsb3NlLiAgQmFzaWNhbGx5LCB0aGlzCisgICAgLy8gcmVwcmVzZW50cyBvbmUgZGF5J3Mgd29ydGggb2YgV2ViLXN1cmZpbmcuICBJZiB5b3UgY2FuIHN1cHBseSB0aGUKKyAgICAvLyBtaXNzaW5nIGluZm9ybWF0aW9uIGluIGFueSBvZiB0aGVzZSBydWxlIHNldHMsIG9yIGlmIHlvdSBmaW5kIGVycm9ycywKKyAgICAvLyBvciBpZiB5b3UgY2FuIHN1cHBseSBzcGVsbG91dCBydWxlcyBmb3IgbGFuZ3VhZ2VzIHRoYXQgYXJlbid0IHNob3duCisgICAgLy8gaGVyZSwgd2Ugd2FudCB0byBoZWFyIGZyb20geW91IQorICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAvKioKKyAgICAgKiBTcGVsbG91dCBydWxlcyBmb3IgVS5TLiBFbmdsaXNoLiAgVGhpcyBkZW1vbnN0cmF0aW9uIHZlcnNpb24gb2YgdGhlCisgICAgICogVS5TLiBFbmdsaXNoIHNwZWxsb3V0IHJ1bGVzIGhhcyBmb3VyIHZhcmlhbnRzOiAxKSAlc2ltcGxpZmllZCBpcyBhCisgICAgICogc2V0IG9mIHJ1bGVzIHNob3dpbmcgdGhlIHNpbXBsZSBtZXRob2Qgb2Ygc3BlbGxpbmcgb3V0IG51bWJlcnMgaW4KKyAgICAgKiBFbmdsaXNoOiAyODkgaXMgZm9ybWF0dGVkIGFzICJ0d28gaHVuZHJlZCBlaWdodHktbmluZSIuICAyKSAlYWx0LXRlZW5zCisgICAgICogaXMgdGhlIHNhbWUgYXMgJXNpbXBsaWZpZWQsIGV4Y2VwdCB0aGF0IHZhbHVlcyBiZXR3ZWVuIDEsMDAwIGFuZCA5LDk5OQorICAgICAqIHdob3NlIGh1bmRyZWRzIHBsYWNlIGlzbid0IHplcm8gYXJlIGZvcm1hdHRlZCBpbiBodW5kcmVkcy4gIEZvciBleGFtcGxlLAorICAgICAqIDEsOTgzIGlzIGZvcm1hdHRlZCBhcyAibmluZXRlZW4gaHVuZHJlZCBlaWdodHktdGhyZWUsIiBhbmQgMiwxODMgaXMKKyAgICAgKiBmb3JtYXR0ZWQgYXMgInR3ZW50eS1vbmUgaHVuZHJlZCBlaWdodHktdGhyZWUsIiBidXQgMiwwODMgaXMgc3RpbGwKKyAgICAgKiBmb3JtYXR0ZWQgYXMgInR3byB0aG91c2FuZCBlaWdodHktdGhyZWUuIiAgMykgJW9yZGluYWwgZm9ybWF0cyB0aGUKKyAgICAgKiB2YWx1ZXMgYXMgb3JkaW5hbCBudW1iZXJzIGluIEVuZ2xpc2ggKGUuZy4sIDI4OSBpcyAidHdvIGh1bmRyZWQgZWlnaHR5LQorICAgICAqIG5pbnRoIikuICA0KSAlZGVmYXVsdCB1c2VzIGEgbW9yZSBjb21wbGljYXRlZCBhbGdvcml0aG0gdG8gZm9ybWF0CisgICAgICogbnVtYmVycyBpbiBhIG1vcmUgbmF0dXJhbCB3YXk6IDI4OSBpcyBmb3JtYXR0ZWQgYXMgInR3byBodW5kcmVkIEFORAorICAgICAqIGVpZ2h0eS1uaW5lIiBhbmQgY29tbWFzIGFyZSBpbnNlcnRlZCBiZXR3ZWVuIHRoZSB0aG91c2FuZHMgZ3JvdXBzIGZvcgorICAgICAqIHZhbHVlcyBhYm92ZSAxMDAsMDAwLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIHVzRW5nbGlzaCA9CisgICAgICAgIC8vIFRoaXMgcnVsZSBzZXQgc2hvd3MgdGhlIG5vcm1hbCBzaW1wbGUgZm9ybWF0dGluZyBydWxlcyBmb3IgRW5nbGlzaAorICAgICAgICAiJXNpbXBsaWZpZWQ6XG4iCisgICAgICAgICAgICAgICAvLyBuZWdhdGl2ZSBudW1iZXIgcnVsZS4gIFRoaXMgcnVsZSBpcyB1c2VkIHRvIGZvcm1hdCBuZWdhdGl2ZQorICAgICAgICAgICAgICAgLy8gbnVtYmVycy4gIFRoZSByZXN1bHQgb2YgZm9ybWF0dGluZyB0aGUgbnVtYmVyJ3MgYWJzb2x1dGUKKyAgICAgICAgICAgICAgIC8vIHZhbHVlIGlzIHBsYWNlZCB3aGVyZSB0aGUgPj4gaXMuCisgICAgICAgICsgIiAgICAteDogbWludXMgPj47XG4iCisgICAgICAgICAgICAgICAvLyBmYWN0aW9uIHJ1bGUuICBUaGlzIHJ1bGUgaXMgdXNlZCBmb3IgZm9ybWF0dGluZyBudW1iZXJzCisgICAgICAgICAgICAgICAvLyB3aXRoIGZyYWN0aW9uYWwgcGFydHMuICBUaGUgcmVzdWx0IG9mIGZvcm1hdHRpbmcgdGhlCisgICAgICAgICAgICAgICAvLyBudW1iZXIncyBpbnRlZ3JhbCBwYXJ0IGlzIHN1YnN0aXR1dGVkIGZvciB0aGUgPDwsIGFuZAorICAgICAgICAgICAgICAgLy8gdGhlIHJlc3VsdCBvZiBmb3JtYXR0aW5nIHRoZSBudW1iZXIncyBmcmFjdGlvbmFsIHBhcnQKKyAgICAgICAgICAgICAgIC8vIChvbmUgZGlnaXQgYXQgYSB0aW1lLCBlLmcuLCAwLjEyMyBpcyAiemVybyBwb2ludCBvbmUgdHdvCisgICAgICAgICAgICAgICAvLyB0aHJlZSIpIHJlcGxhY2VzIHRoZSA+Pi4KKyAgICAgICAgKyAiICAgIHgueDogPDwgcG9pbnQgPj47XG4iCisgICAgICAgICAgICAgICAvLyB0aGUgcnVsZXMgZm9yIHRoZSB2YWx1ZXMgZnJvbSAwIHRvIDE5IGFyZSBzaW1wbHkgdGhlCisgICAgICAgICAgICAgICAvLyB3b3JkcyBmb3IgdGhvc2UgbnVtYmVycworICAgICAgICArICIgICAgemVybzsgb25lOyB0d287IHRocmVlOyBmb3VyOyBmaXZlOyBzaXg7IHNldmVuOyBlaWdodDsgbmluZTtcbiIKKyAgICAgICAgKyAiICAgIHRlbjsgZWxldmVuOyB0d2VsdmU7IHRoaXJ0ZWVuOyBmb3VydGVlbjsgZmlmdGVlbjsgc2l4dGVlbjtcbiIKKyAgICAgICAgKyAiICAgICAgICBzZXZlbnRlZW47IGVpZ2h0ZWVuOyBuaW5ldGVlbjtcbiIKKyAgICAgICAgICAgICAgIC8vIGJlZ2lubmluZyBhdCAyMCwgd2UgdXNlIHRoZSA+PiB0byBtYXJrIHRoZSBwb3NpdGlvbiB3aGVyZQorICAgICAgICAgICAgICAgLy8gdGhlIHJlc3VsdCBvZiBmb3JtYXR0aW5nIHRoZSBudW1iZXIncyBvbmVzIGRpZ2l0LiAgVGh1cywKKyAgICAgICAgICAgICAgIC8vIHdlIG9ubHkgbmVlZCBhIG5ldyBydWxlIGF0IGV2ZXJ5IG11bHRpcGxlIG9mIDEwLiAgVGV4dCBpbgorICAgICAgICAgICAgICAgLy8gYmFja2V0cyBpcyBvbWl0dGVkIGlmIHRoZSB2YWx1ZSBiZWluZyBmb3JtYXR0ZWQgaXMgYW4KKyAgICAgICAgICAgICAgIC8vIGV2ZW4gbXVsdGlwbGUgb2YgMTAuCisgICAgICAgICsgIiAgICAyMDogdHdlbnR5Wy0+Pl07XG4iCisgICAgICAgICsgIiAgICAzMDogdGhpcnR5Wy0+Pl07XG4iCisgICAgICAgICsgIiAgICA0MDogZm9ydHlbLT4+XTtcbiIKKyAgICAgICAgKyAiICAgIDUwOiBmaWZ0eVstPj5dO1xuIgorICAgICAgICArICIgICAgNjA6IHNpeHR5Wy0+Pl07XG4iCisgICAgICAgICsgIiAgICA3MDogc2V2ZW50eVstPj5dO1xuIgorICAgICAgICArICIgICAgODA6IGVpZ2h0eVstPj5dO1xuIgorICAgICAgICArICIgICAgOTA6IG5pbmV0eVstPj5dO1xuIgorICAgICAgICAgICAgICAgLy8gYmVnaW5uaW5nIGF0IDEwMCwgd2UgY2FuIHVzZSA8PCB0byBtYXJrIHRoZSBwb3NpdGlvbiB3aGVyZQorICAgICAgICAgICAgICAgLy8gdGhlIHJlc3VsdCBvZiBmb3JtYXR0aW5nIHRoZSBtdWx0aXBsZSBvZiAxMDAgaXMgdG8gYmUKKyAgICAgICAgICAgICAgIC8vIGluc2VydGVkLiAgTm90aWNlIGFsc28gdGhhdCB0aGUgbWVhbmluZyBvZiA+PiBoYXMgc2hpZnRlZDoKKyAgICAgICAgICAgICAgIC8vIGhlcmUsIGl0IHJlZmVycyB0byBib3RoIHRoZSBvbmVzIHBsYWNlIGFuZCB0aGUgdGVucyBwbGFjZS4KKyAgICAgICAgICAgICAgIC8vIFRoZSBtZWFuaW5ncyBvZiB0aGUgPDwgYW5kID4+IHRva2VucyBkZXBlbmQgb24gdGhlIGJhc2UgdmFsdWUKKyAgICAgICAgICAgICAgIC8vIG9mIHRoZSBydWxlLiAgQSBydWxlJ3MgZGl2aXNvciBpcyAodXN1YWxseSkgdGhlIGhpZ2hlc3QKKyAgICAgICAgICAgICAgIC8vIHBvd2VyIG9mIDEwIHRoYXQgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBydWxlJ3MgYmFzZQorICAgICAgICAgICAgICAgLy8gdmFsdWUuICBUaGUgdmFsdWUgYmVpbmcgZm9ybWF0dGVkIGlzIGRpdmlkZWQgYnkgdGhlIHJ1bGUncworICAgICAgICAgICAgICAgLy8gZGl2aXNvciwgYW5kIHRoZSBpbnRlZ3JhbCBxdW90aWVudCBpcyB1c2VkIHRvIGdldCB0aGUgdGV4dAorICAgICAgICAgICAgICAgLy8gZm9yIDw8LCB3aGlsZSB0aGUgcmVtYWluZGVyIGlzIHVzZWQgdG8gcHJvZHVjZSB0aGUgdGV4dAorICAgICAgICAgICAgICAgLy8gZm9yID4+LiAgQWdhaW4sIHRleHQgaW4gYnJhY2tldHMgaXMgb21pdHRlZCBpZiB0aGUgdmFsdWUKKyAgICAgICAgICAgICAgIC8vIGJlaW5nIGZvcm1hdHRlZCBpcyBhbiBldmVuIG11bHRpcGxlIG9mIHRoZSBydWxlJ3MgZGl2aXNvcgorICAgICAgICAgICAgICAgLy8gKGluIHRoaXMgY2FzZSwgYW4gZXZlbiBtdWx0aXBsZSBvZiAxMDApCisgICAgICAgICsgIiAgICAxMDA6IDw8IGh1bmRyZWRbID4+XTtcbiIKKyAgICAgICAgICAgICAgIC8vIFRoZSBydWxlcyBmb3IgdGhlIGhpZ2hlciBudW1iZXJzIHdvcmsgdGhlIHNhbWUgd2F5IGFzIHRoZQorICAgICAgICAgICAgICAgLy8gcnVsZSBmb3IgMTAwOiBBZ2FpbiwgdGhlIDw8IGFuZCA+PiB0b2tlbnMgZGVwZW5kIG9uIHRoZQorICAgICAgICAgICAgICAgLy8gcnVsZSdzIGRpdmlzb3IsIHdoaWNoIGZvciBhbGwgdGhlc2UgcnVsZXMgaXMgYWxzbyB0aGUgcnVsZSdzCisgICAgICAgICAgICAgICAvLyBiYXNlIHZhbHVlLiAgVG8gZ3JvdXAgYnkgdGhvdXNhbmQsIHdlIHNpbXBseSBkb24ndCBoYXZlIGFueQorICAgICAgICAgICAgICAgLy8gcnVsZXMgYmV0d2VlbiAxLDAwMCBhbmQgMSwwMDAsMDAwLgorICAgICAgICArICIgICAgMTAwMDogPDwgdGhvdXNhbmRbID4+XTtcbiIKKyAgICAgICAgKyAiICAgIDEsMDAwLDAwMDogPDwgbWlsbGlvblsgPj5dO1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMDogPDwgYmlsbGlvblsgPj5dO1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMCwwMDA6IDw8IHRyaWxsaW9uWyA+Pl07XG4iCisgICAgICAgICAgICAgICAvLyBvdmVyZmxvdyBydWxlLiAgVGhpcyBydWxlIHNwZWNpZmllcyB0aGF0IHZhbHVlcyBvZiBhCisgICAgICAgICAgICAgICAvLyBxdWFkcmlsbGlvbiBvciBtb3JlIGFyZSBzaG93biBpbiBudW1lcmFscyByYXRoZXIgdGhhbiB3b3Jkcy4KKyAgICAgICAgICAgICAgIC8vIFRoZSA9PSB0b2tlbiBtZWFucyB0byBmb3JtYXQgKHdpdGggbmV3IHJ1bGVzKSB0aGUgdmFsdWUKKyAgICAgICAgICAgICAgIC8vIGJlaW5nIGZvcm1hdHRlZCBieSB0aGlzIHJ1bGUgYW5kIHBsYWNlIHRoZSByZXN1bHQgd2hlcmUKKyAgICAgICAgICAgICAgIC8vIHRoZSA9PSBpcy4gIFRoZSAjLCMjMCBpbnNpZGUgdGhlID09IHNpZ25zIGlzIGEKKyAgICAgICAgICAgICAgIC8vIERlY2ltYWxGb3JtYXQgcGF0dGVybi4gIEl0IHNwZWNpZmllcyB0aGF0IHRoZSB2YWx1ZSBzaG91bGQKKyAgICAgICAgICAgICAgIC8vIGJlIGZvcm1hdHRlZCB3aXRoIGEgRGVjaW1hbEZvcm1hdCBvYmplY3QsIGFuZCB0aGF0IGl0CisgICAgICAgICAgICAgICAvLyBzaG91bGQgYmUgZm9ybWF0dGVkIHdpdGggbm8gZGVjaW1hbCBwbGFjZXMsIGF0IGxlYXN0IG9uZQorICAgICAgICAgICAgICAgLy8gZGlnaXQsIGFuZCBhIHRob3VzYW5kcyBzZXBhcmF0b3IuCisgICAgICAgICsgIiAgICAxLDAwMCwwMDAsMDAwLDAwMCwwMDA6ID0jLCMjMD07XG4iCisKKyAgICAgICAgLy8gVGhpcyBydWxlIHNldCBmb3JtYXRzIG51bWJlcnMgYmV0d2VlbiAxLDAwMCBhbmQgOSw5OTkgc29tZXdoYXQKKyAgICAgICAgLy8gZGlmZmVyZW50bHk6IElmIHRoZSBodW5kcmVkcyBkaWdpdCBpcyBub3QgemVybywgdGhlIGZpcnN0IHR3bworICAgICAgICAvLyBkaWdpdHMgYXJlIHRyZWF0ZWQgYXMgYSBudW1iZXIgb2YgaHVuZHJlZHMuICBGb3IgZXhhbXBsZSwgMiwxOTcKKyAgICAgICAgLy8gd291bGQgY29tZSBvdXQgYXMgInR3ZW50eS1vbmUgaHVuZHJlZCBuaW5ldHktc2V2ZW4uIgorICAgICAgICArICIlYWx0LXRlZW5zOlxuIgorICAgICAgICAgICAgICAgLy8ganVzdCB1c2UgJXNpbXBsaWZpZWQgdG8gZm9ybWF0IHZhbHVlcyBiZWxvdyAxLDAwMAorICAgICAgICArICIgICAgPSVzaW1wbGlmaWVkPTtcbiIKKyAgICAgICAgICAgICAgIC8vIHZhbHVlcyBiZXR3ZWVuIDEsMDAwIGFuZCA5LDk5OSBhcmUgZGVsZWdhdGVkIHRvICUlYWx0LWh1bmRyZWRzCisgICAgICAgICAgICAgICAvLyBmb3IgZm9ybWF0dGluZy4gIFRoZSA+IGFmdGVyICIxMDAwIiBkZWNyZWFzZXMgdGhlIGV4cG9uZW50CisgICAgICAgICAgICAgICAvLyBvZiB0aGUgcnVsZSdzIHJhZGl4IGJ5IG9uZSwgY2F1c2luZyB0aGUgcnVsZSdzIGRpdmlzb3IKKyAgICAgICAgICAgICAgIC8vIHRvIGJlIDEwMCBpbnN0ZWFkIG9mIDEsMDAwLiAgVGhpcyBjYXVzZXMgdGhlIGZpcnN0IFRXTworICAgICAgICAgICAgICAgLy8gZGlnaXRzIG9mIHRoZSBudW1iZXIsIGluc3RlYWQgb2YganVzdCB0aGUgZmlyc3QgZGlnaXQsCisgICAgICAgICAgICAgICAvLyB0byBiZSBzZW50IHRvICUlYWx0LWh1bmRyZWRzCisgICAgICAgICsgIiAgICAxMDAwPjogPCUlYWx0LWh1bmRyZWRzPFsgPj5dO1xuIgorICAgICAgICAgICAgICAgLy8gZm9yIHZhbHVlcyBvZiAxMCwwMDAgYW5kIG1vcmUsIHdlIGFnYWluIGp1c3QgdXNlICVzaW1wbGlmaWVkCisgICAgICAgICsgIiAgICAxMCwwMDA6ID0lc2ltcGxpZmllZD07XG4iCisgICAgICAgIC8vIFRoaXMgcnVsZSBzZXQgdXNlcyBzb21lIG9ic2N1cmUgdm9vZG9vIG9mIHRoZSBkZXNjcmlwdGlvbiBsYW5ndWFnZQorICAgICAgICAvLyB0byBmb3JtYXQgdGhlIGZpcnN0IHR3byBkaWdpdHMgb2YgYSB2YWx1ZSBpbiB0aGUgdGhvdXNhbmRzLgorICAgICAgICAvLyBUaGUgcnVsZSBhdCAxMCBmb3JtYXRzIHRoZSBmaXJzdCB0d28gZGlnaXRzIGFzIGEgbXVsdGlwbGUgb2YgMSwwMDAKKyAgICAgICAgLy8gYW5kIHRoZSBydWxlIGF0IDExIGZvcm1hdHMgdGhlIGZpcnN0IHR3byBkaWdpdHMgYXMgYSBtdWx0aXBsZSBvZgorICAgICAgICAvLyAxMDAuICBUaGlzIHdvcmtzIGJlY2F1c2Ugb2Ygc29tZXRoaW5nIGtub3duIGFzIHRoZSAicm9sbGJhY2sgcnVsZSI6CisgICAgICAgIC8vIGlmIHRoZSBydWxlIGFwcGxpY2FibGUgdG8gdGhlIHZhbHVlIGJlaW5nIGZvcm1hdHRlZCBoYXMgdHdvCisgICAgICAgIC8vIHN1YnN0aXR1dGlvbnMsIHRoZSB2YWx1ZSBiZWluZyBmb3JtYXR0ZWQgaXMgYW4gZXZlbiBtdWx0aXBsZSBvZgorICAgICAgICAvLyB0aGUgcnVsZSdzIGRpdmlzb3IsIGFuZCB0aGUgcnVsZSdzIGJhc2UgdmFsdWUgSVNOJ1QgYW4gZXZlbiBtdWx0aXBsZQorICAgICAgICAvLyBpZiB0aGUgcnVsZSdzIGRpdmlzb3IsIHRoZW4gdGhlIHJ1bGUgdGhhdCBwcmVjZWRlcyB0aGlzIG9uZSBpbiB0aGUKKyAgICAgICAgLy8gbGlzdCBpcyB1c2VkIGluc3RlYWQuICAoVGhlIFtdIG5vdGF0aW9uIGlzIGltcGxlbWVudGVkIGludGVybmFsbHkKKyAgICAgICAgLy8gdXNpbmcgdGhpcyBub3RhdGlvbjogYSBydWxlIGNvbnRhaW5pbmcgW10gaXMgc3BsaXQgaW50byB0d28gcnVsZXMsCisgICAgICAgIC8vIGFuZCB0aGUgcmlnaHQgb25lIGlzIGNob3NlbiB1c2luZyB0aGUgcm9sbGJhY2sgcnVsZS4pIEluIHRoaXMgY2FzZSwKKyAgICAgICAgLy8gaXQgbWVhbnMgdGhhdCBpZiB0aGUgZmlyc3QgdHdvIGRpZ2l0cyBhcmUgYW4gZXZlbiBtdWx0aXBsZSBvZiAxMCwKKyAgICAgICAgLy8gdGhleSdyZSBmb3JtYXR0ZWQgd2l0aCB0aGUgMTAgcnVsZSAoY29udGFpbmluZyAidGhvdXNhbmQiKSwgYW5kIGlmCisgICAgICAgIC8vIHRoZXkncmUgbm90LCB0aGV5J3JlIGZvcm1hdHRlZCB3aXRoIHRoZSAxMSBydWxlIChjb250YWluaW5nCisgICAgICAgIC8vICJodW5kcmVkIikuICAlJWVtcHR5IGlzIGEgaGFjayB0byBjYXVzZSB0aGUgcm9sbGJhY2sgcnVsZSB0byBiZQorICAgICAgICAvLyBpbnZva2VkOiBpdCBtYWtlcyB0aGUgMTEgcnVsZSBoYXZlIHR3byBzdWJzdGl0dXRpb25zLCBldmVuIHRob3VnaAorICAgICAgICAvLyB0aGUgc2Vjb25kIHN1YnN0aXR1dGlvbiAoY2FsbGluZyAlJWVtcHR5KSBkb2Vzbid0IGFjdHVhbGx5IGRvCisgICAgICAgIC8vIGFueXRoaW5nLgorICAgICAgICArICIlJWFsdC1odW5kcmVkczpcbiIKKyAgICAgICAgKyAiICAgIDA6IFNIT1VMRCBORVZFUiBHRVQgSEVSRSE7XG4iCisgICAgICAgICsgIiAgICAxMDogPCVzaW1wbGlmaWVkPCB0aG91c2FuZDtcbiIKKyAgICAgICAgKyAiICAgIDExOiA9JXNpbXBsaWZpZWQ9IGh1bmRyZWQ+JSVlbXB0eT47XG4iCisgICAgICAgICsgIiUlZW1wdHk6XG4iCisgICAgICAgICsgIiAgICAwOjsiCisKKyAgICAgICAgLy8gdGhpcyBydWxlIHNldCBpcyB0aGUgc2FtZSBhcyAlc2ltcGxpZmllZCwgZXhjZXB0IHRoYXQgaXQgZm9ybWF0cworICAgICAgICAvLyB0aGUgdmFsdWUgYXMgYW4gb3JkaW5hbCBudW1iZXI6IDIzNCBpcyBmb3JtYXR0ZWQgYXMgInR3byBodW5kcmVkCisgICAgICAgIC8vIHRoaXJ0eS1mb3VydGgiLiAgTm90aWNlIHRoZSBjYWxscyB0byBec2ltcGxpZmllZDogd2UgaGF2ZSB0bworICAgICAgICAvLyBjYWxsICVzaW1wbGlmaWVkIHRvIGF2b2lkIGdldHRpbmcgInNlY29uZCBodW5kcmVkIHRoaXJ0eS1mb3VydGguIgorICAgICAgICArICIlb3JkaW5hbDpcbiIKKyAgICAgICAgKyAiICAgIHplcm90aDsgZmlyc3Q7IHNlY29uZDsgdGhpcmQ7IGZvdXJ0aDsgZmlmdGg7IHNpeHRoOyBzZXZlbnRoO1xuIgorICAgICAgICArICIgICAgICAgIGVpZ2h0aDsgbmludGg7XG4iCisgICAgICAgICsgIiAgICB0ZW50aDsgZWxldmVudGg7IHR3ZWxmdGg7IHRoaXJ0ZWVudGg7IGZvdXJ0ZWVudGg7XG4iCisgICAgICAgICsgIiAgICAgICAgZmlmdGVlbnRoOyBzaXh0ZWVudGg7IHNldmVudGVlbnRoOyBlaWdodGVlbnRoO1xuIgorICAgICAgICArICIgICAgICAgIG5pbmV0ZWVudGg7XG4iCisgICAgICAgICsgIiAgICB0d2VudGlldGg7IHR3ZW50eS0+PjtcbiIKKyAgICAgICAgKyAiICAgIDMwOiB0aGlydGlldGg7IHRoaXJ0eS0+PjtcbiIKKyAgICAgICAgKyAiICAgIDQwOiBmb3J0aWV0aDsgZm9ydHktPj47XG4iCisgICAgICAgICsgIiAgICA1MDogZmlmdGlldGg7IGZpZnR5LT4+O1xuIgorICAgICAgICArICIgICAgNjA6IHNpeHRpZXRoOyBzaXh0eS0+PjtcbiIKKyAgICAgICAgKyAiICAgIDcwOiBzZXZlbnRpZXRoOyBzZXZlbnR5LT4+O1xuIgorICAgICAgICArICIgICAgODA6IGVpZ2h0aWV0aDsgZWlnaHR5LT4+O1xuIgorICAgICAgICArICIgICAgOTA6IG5pbmV0aWV0aDsgbmluZXR5LT4+O1xuIgorICAgICAgICArICIgICAgMTAwOiA8JXNpbXBsaWZpZWQ8IGh1bmRyZWR0aDsgPCVzaW1wbGlmaWVkPCBodW5kcmVkID4+O1xuIgorICAgICAgICArICIgICAgMTAwMDogPCVzaW1wbGlmaWVkPCB0aG91c2FuZHRoOyA8JXNpbXBsaWZpZWQ8IHRob3VzYW5kID4+O1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwOiA8JXNpbXBsaWZpZWQ8IG1pbGxpb250aDsgPCVzaW1wbGlmaWVkPCBtaWxsaW9uID4+O1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMDogPCVzaW1wbGlmaWVkPCBiaWxsaW9udGg7XG4iCisgICAgICAgICsgIiAgICAgICAgPCVzaW1wbGlmaWVkPCBiaWxsaW9uID4+O1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMCwwMDA6IDwlc2ltcGxpZmllZDwgdHJpbGxpb250aDtcbiIKKyAgICAgICAgKyAiICAgICAgICA8JXNpbXBsaWZpZWQ8IHRyaWxsaW9uID4+O1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMCwwMDAsMDAwOiA9IywjIzA9OyIKKworICAgICAgICAvLyAlZGVmYXVsdCBpcyBhIG1vcmUgZWxhYm9yYXRlIGZvcm0gb2YgJXNpbXBsaWZpZWQ7ICBJdCBpcyBiYXNpY2FsbHkKKyAgICAgICAgLy8gdGhlIHNhbWUsIGV4Y2VwdCB0aGF0IGl0IGludHJvZHVjZXMgImFuZCIgYmVmb3JlIHRoZSBvbmVzIGRpZ2l0CisgICAgICAgIC8vIHdoZW4gYXBwcm9wcmlhdGUgKGJhc2ljYWxseSwgYmV0d2VlbiB0aGUgdGVucyBhbmQgb25lcyBkaWdpdHMpIGFuZAorICAgICAgICAvLyBzZXBhcmF0ZXMgdGhlIHRob3VzYW5kcyBncm91cHMgd2l0aCBjb21tYXMgaW4gdmFsdWVzIG92ZXIgMTAwLDAwMC4KKyAgICAgICAgKyAiJWRlZmF1bHQ6XG4iCisgICAgICAgICAgICAgICAvLyBuZWdhdGl2ZS1udW1iZXIgYW5kIGZyYWN0aW9uIHJ1bGVzLiAgVGhlc2UgYXJlIHRoZSBzYW1lCisgICAgICAgICAgICAgICAvLyBhcyB0aG9zZSBmb3IgJXNpbXBsaWZpZWQsIGJ1dCBhdmUgdG8gYmUgc3RhdGVkIGhlcmUgdG9vCisgICAgICAgICAgICAgICAvLyBiZWNhdXNlIHRoaXMgaXMgYW4gZW50cnkgcG9pbnQKKyAgICAgICAgKyAiICAgIC14OiBtaW51cyA+PjtcbiIKKyAgICAgICAgKyAiICAgIHgueDogPDwgcG9pbnQgPj47XG4iCisgICAgICAgICAgICAgICAvLyBqdXN0IHVzZSAlc2ltcGxpZmllZCBmb3IgdmFsdWVzIGJlbG93IDEwMAorICAgICAgICArICIgICAgPSVzaW1wbGlmaWVkPTtcbiIKKyAgICAgICAgICAgICAgIC8vIGZvciB2YWx1ZXMgZnJvbSAxMDAgdG8gOSw5OTkgdXNlICUlYW5kIHRvIGRlY2lkZSB3aGV0aGVyIG9yCisgICAgICAgICAgICAgICAvLyBub3QgdG8gaW50ZXJwb3NlIHRoZSAiYW5kIgorICAgICAgICArICIgICAgMTAwOiA8PCBodW5kcmVkWyA+JSVhbmQ+XTtcbiIKKyAgICAgICAgKyAiICAgIDEwMDA6IDw8IHRob3VzYW5kWyA+JSVhbmQ+XTtcbiIKKyAgICAgICAgICAgICAgIC8vIGZvciB2YWx1ZXMgb2YgMTAwLDAwMCBhbmQgdXAsIHVzZSAlJWNvbW1hcyB0byBpbnRlcnBvc2UgdGhlCisgICAgICAgICAgICAgICAvLyBjb21tYXMgaW4gdGhlIHJpZ2h0IHBsYWNlcyAoYW5kIGFsc28gdG8gaW50ZXJwb3NlIHRoZSAiYW5kIikKKyAgICAgICAgKyAiICAgIDEwMCwwMDA+PjogPDwgdGhvdXNhbmRbPiUlY29tbWFzPl07XG4iCisgICAgICAgICsgIiAgICAxLDAwMCwwMDA6IDw8IG1pbGxpb25bPiUlY29tbWFzPl07XG4iCisgICAgICAgICsgIiAgICAxLDAwMCwwMDAsMDAwOiA8PCBiaWxsaW9uWz4lJWNvbW1hcz5dO1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMCwwMDA6IDw8IHRyaWxsaW9uWz4lJWNvbW1hcz5dO1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMCwwMDAsMDAwOiA9IywjIzA9O1xuIgorICAgICAgICAvLyBpZiB0aGUgdmFsdWUgcGFzc2VkIHRvIHRoaXMgcnVsZSBzZXQgaXMgZ3JlYXRlciB0aGFuIDEwMCwgZG9uJ3QKKyAgICAgICAgLy8gYWRkIHRoZSAiYW5kIjsgaWYgaXQncyBsZXNzIHRoYW4gMTAwLCBhZGQgImFuZCIgYmVmb3JlIHRoZSBsYXN0CisgICAgICAgIC8vIGRpZ2l0cworICAgICAgICArICIlJWFuZDpcbiIKKyAgICAgICAgKyAiICAgIGFuZCA9JWRlZmF1bHQ9O1xuIgorICAgICAgICArICIgICAgMTAwOiA9JWRlZmF1bHQ9O1xuIgorICAgICAgICAvLyB0aGlzIHJ1bGUgc2V0IGlzIHVzZWQgdG8gcGxhY2UgdGhlIGNvbW1hcworICAgICAgICArICIlJWNvbW1hczpcbiIKKyAgICAgICAgICAgICAgIC8vIGZvciB2YWx1ZXMgYmVsb3cgMTAwLCBhZGQgImFuZCIgKHRoZSBhcG9zdHJvcGhlIGF0IHRoZQorICAgICAgICAgICAgICAgLy8gYmVnaW5uaW5nIGlzIGlnbm9yZWQsIGJ1dCBjYXVzZXMgdGhlIHNwYWNlIHRoYXQgZm9sbG93cyBpdAorICAgICAgICAgICAgICAgLy8gdG8gYmUgc2lnbmlmaWNhbnQ6IHRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgdGhlIHJ1bGVzCisgICAgICAgICAgICAgICAvLyBjYWxsaW5nICUlY29tbWFzIGRvbid0IHB1dCBhIHNwYWNlIGJlZm9yZSBpdCkKKyAgICAgICAgKyAiICAgICcgYW5kID0lZGVmYXVsdD07XG4iCisgICAgICAgICAgICAgICAvLyBwdXQgYSBjb21tYSBhZnRlciB0aGUgdGhvdXNhbmRzIChvciB3aGF0ZXZlciBwcmVjZWRlZCB0aGUKKyAgICAgICAgICAgICAgIC8vIGh1bmRyZWRzKQorICAgICAgICArICIgICAgMTAwOiAsID0lZGVmYXVsdD07XG4iCisgICAgICAgICAgICAgICAvLyBwdXQgYSBjb21tYSBhZnRlciB0aGUgbWlsbGlvbnMgKG9yIHdoYXRldmVyIHByZWNlZGVzIHRoZQorICAgICAgICAgICAgICAgLy8gdGhvdXNhbmRzKQorICAgICAgICArICIgICAgMTAwMDogLCA8JWRlZmF1bHQ8IHRob3VzYW5kLCA+JWRlZmF1bHQ+O1xuIgorICAgICAgICAgICAgICAgLy8gYW5kIHNvIG9uLi4uCisgICAgICAgICsgIiAgICAxLDAwMCwwMDA6ICwgPSVkZWZhdWx0PTsiCisgICAgICAgIC8vICUlbGVuaWVudC1wYXJzZSBpc24ndCByZWFsbHkgYSBzZXQgb2YgbnVtYmVyIGZvcm1hdHRpbmcgcnVsZXM7CisgICAgICAgIC8vIGl0J3MgYSBzZXQgb2YgY29sbGF0aW9uIHJ1bGVzLiAgTGVuaWVudC1wYXJzZSBtb2RlIHVzZXMgYSBDb2xsYXRvcgorICAgICAgICAvLyBvYmplY3QgdG8gY29tcGFyZSBmcmFnbWVudHMgb2YgdGhlIHRleHQgYmVpbmcgcGFyc2VkIHRvIHRoZSB0ZXh0CisgICAgICAgIC8vIGluIHRoZSBydWxlcywgYWxsb3dpbmcgbW9yZSBsZWV3YXkgaW4gdGhlIG1hdGNoaW5nIHRleHQuICBUaGlzIHNldAorICAgICAgICAvLyBvZiBydWxlcyB0ZWxscyB0aGUgZm9ybWF0dGVyIHRvIGlnbm9yZSBjb21tYXMgd2hlbiBwYXJzaW5nIChpdAorICAgICAgICAvLyBhbHJlYWR5IGlnbm9yZXMgc3BhY2VzLCB3aGljaCBpcyB3aHkgd2UgcmVmZXIgdG8gdGhlIHNwYWNlOyBpdCBhbHNvCisgICAgICAgIC8vIGlnbm9yZXMgaHlwaGVucywgbWFraW5nICJ0d2VudHkgb25lIiBhbmQgInR3ZW50eS1vbmUiIHBhcnNlCisgICAgICAgIC8vIGlkZW50aWNhbGx5KQorICAgICAgICArICIlJWxlbmllbnQtcGFyc2U6XG4iCisgICAgICAgICsgIiAgICAmICcgJyAsICcsJyA7XG4iOworCisgICAgLyoqCisgICAgICogU3BlbGxvdXQgcnVsZXMgZm9yIFUuSy4gRW5nbGlzaC4gIFUuSy4gRW5nbGlzaCBoYXMgb25lIHNpZ25pZmljYW50CisgICAgICogZGlmZmVyZW5jZSBmcm9tIFUuUy4gRW5nbGlzaDogdGhlIG5hbWVzIGZvciB2YWx1ZXMgb2YgMSwwMDAsMDAwLDAwMAorICAgICAqIGFuZCBoaWdoZXIuICBJbiBBbWVyaWNhbiBFbmdsaXNoLCBlYWNoIHN1Y2Nlc3NpdmUgIi1pbGxpb24iIGlzIDEsMDAwCisgICAgICogdGltZXMgZ3JlYXRlciB0aGFuIHRoZSBwcmVjZWRpbmcgb25lOiAxLDAwMCwwMDAsMDAwIGlzICJvbmUgYmlsbGlvbiIKKyAgICAgKiBhbmQgMSwwMDAsMDAwLDAwMCwwMDAgaXMgIm9uZSB0cmlsbGlvbi4iICBJbiBCcml0aXNoIEVuZ2xpc2gsIGVhY2gKKyAgICAgKiBzdWNjZXNzaXZlICItaWxsaW9uIiBpcyBvbmUgbWlsbGlvbiB0aW1lcyBncmVhdGVyIHRoYW4gdGhlIG9uZSBiZWZvcmU6CisgICAgICogIm9uZSBiaWxsaW9uIiBpcyAxLDAwMCwwMDAsMDAwLDAwMCAob3Igd2hhdCBBbWVyaWNhbnMgd291bGQgY2FsbCBhCisgICAgICogInRyaWxsaW9uIiksIGFuZCAib25lIHRyaWxsaW9uIiBpcyAxLDAwMCwwMDAsMDAwLDAwMCwwMDAsMDAwLgorICAgICAqIDEsMDAwLDAwMCwwMDAgaW4gQnJpdGlzaCBFbmdsaXNoIGlzICJvbmUgdGhvdXNhbmQgbWlsbGlvbi4iICAoVGhpcworICAgICAqIHZhbHVlIGlzIHNvbWV0aW1lcyBjYWxsZWQgYSAibWlsbGlhcmQsIiBidXQgdGhpcyB3b3JkIHNlZW1zIHRvIGhhdmUKKyAgICAgKiBmYWxsZW4gaW50byBkaXN1c2UuKQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIHVrRW5nbGlzaCA9CisgICAgICAgICIlc2ltcGxpZmllZDpcbiIKKyAgICAgICAgKyAiICAgIC14OiBtaW51cyA+PjtcbiIKKyAgICAgICAgKyAiICAgIHgueDogPDwgcG9pbnQgPj47XG4iCisgICAgICAgICsgIiAgICB6ZXJvOyBvbmU7IHR3bzsgdGhyZWU7IGZvdXI7IGZpdmU7IHNpeDsgc2V2ZW47IGVpZ2h0OyBuaW5lO1xuIgorICAgICAgICArICIgICAgdGVuOyBlbGV2ZW47IHR3ZWx2ZTsgdGhpcnRlZW47IGZvdXJ0ZWVuOyBmaWZ0ZWVuOyBzaXh0ZWVuO1xuIgorICAgICAgICArICIgICAgICAgIHNldmVudGVlbjsgZWlnaHRlZW47IG5pbmV0ZWVuO1xuIgorICAgICAgICArICIgICAgMjA6IHR3ZW50eVstPj5dO1xuIgorICAgICAgICArICIgICAgMzA6IHRoaXJ0eVstPj5dO1xuIgorICAgICAgICArICIgICAgNDA6IGZvcnR5Wy0+Pl07XG4iCisgICAgICAgICsgIiAgICA1MDogZmlmdHlbLT4+XTtcbiIKKyAgICAgICAgKyAiICAgIDYwOiBzaXh0eVstPj5dO1xuIgorICAgICAgICArICIgICAgNzA6IHNldmVudHlbLT4+XTtcbiIKKyAgICAgICAgKyAiICAgIDgwOiBlaWdodHlbLT4+XTtcbiIKKyAgICAgICAgKyAiICAgIDkwOiBuaW5ldHlbLT4+XTtcbiIKKyAgICAgICAgKyAiICAgIDEwMDogPDwgaHVuZHJlZFsgPj5dO1xuIgorICAgICAgICArICIgICAgMTAwMDogPDwgdGhvdXNhbmRbID4+XTtcbiIKKyAgICAgICAgKyAiICAgIDEsMDAwLDAwMDogPDwgbWlsbGlvblsgPj5dO1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMCwwMDA6IDw8IGJpbGxpb25bID4+XTtcbiIKKyAgICAgICAgKyAiICAgIDEsMDAwLDAwMCwwMDAsMDAwLDAwMDogPSMsIyMwPTtcbiIKKyAgICAgICAgKyAiJWFsdC10ZWVuczpcbiIKKyAgICAgICAgKyAiICAgID0lc2ltcGxpZmllZD07XG4iCisgICAgICAgICsgIiAgICAxMDAwPjogPCUlYWx0LWh1bmRyZWRzPFsgPj5dO1xuIgorICAgICAgICArICIgICAgMTAsMDAwOiA9JXNpbXBsaWZpZWQ9O1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwOiA8PCBtaWxsaW9uWyA+JXNpbXBsaWZpZWQ+XTtcbiIKKyAgICAgICAgKyAiICAgIDEsMDAwLDAwMCwwMDAsMDAwOiA8PCBiaWxsaW9uWyA+JXNpbXBsaWZpZWQ+XTtcbiIKKyAgICAgICAgKyAiICAgIDEsMDAwLDAwMCwwMDAsMDAwLDAwMDogPSMsIyMwPTtcbiIKKyAgICAgICAgKyAiJSVhbHQtaHVuZHJlZHM6XG4iCisgICAgICAgICsgIiAgICAwOiBTSE9VTEQgTkVWRVIgR0VUIEhFUkUhO1xuIgorICAgICAgICArICIgICAgMTA6IDwlc2ltcGxpZmllZDwgdGhvdXNhbmQ7XG4iCisgICAgICAgICsgIiAgICAxMTogPSVzaW1wbGlmaWVkPSBodW5kcmVkPiUlZW1wdHk+O1xuIgorICAgICAgICArICIlJWVtcHR5OlxuIgorICAgICAgICArICIgICAgMDo7IgorICAgICAgICArICIlb3JkaW5hbDpcbiIKKyAgICAgICAgKyAiICAgIHplcm90aDsgZmlyc3Q7IHNlY29uZDsgdGhpcmQ7IGZvdXJ0aDsgZmlmdGg7IHNpeHRoOyBzZXZlbnRoO1xuIgorICAgICAgICArICIgICAgICAgIGVpZ2h0aDsgbmludGg7XG4iCisgICAgICAgICsgIiAgICB0ZW50aDsgZWxldmVudGg7IHR3ZWxmdGg7IHRoaXJ0ZWVudGg7IGZvdXJ0ZWVudGg7XG4iCisgICAgICAgICsgIiAgICAgICAgZmlmdGVlbnRoOyBzaXh0ZWVudGg7IHNldmVudGVlbnRoOyBlaWdodGVlbnRoO1xuIgorICAgICAgICArICIgICAgICAgIG5pbmV0ZWVudGg7XG4iCisgICAgICAgICsgIiAgICB0d2VudGlldGg7IHR3ZW50eS0+PjtcbiIKKyAgICAgICAgKyAiICAgIDMwOiB0aGlydGlldGg7IHRoaXJ0eS0+PjtcbiIKKyAgICAgICAgKyAiICAgIDQwOiBmb3J0aWV0aDsgZm9ydHktPj47XG4iCisgICAgICAgICsgIiAgICA1MDogZmlmdGlldGg7IGZpZnR5LT4+O1xuIgorICAgICAgICArICIgICAgNjA6IHNpeHRpZXRoOyBzaXh0eS0+PjtcbiIKKyAgICAgICAgKyAiICAgIDcwOiBzZXZlbnRpZXRoOyBzZXZlbnR5LT4+O1xuIgorICAgICAgICArICIgICAgODA6IGVpZ2h0aWV0aDsgZWlnaHR5LT4+O1xuIgorICAgICAgICArICIgICAgOTA6IG5pbmV0aWV0aDsgbmluZXR5LT4+O1xuIgorICAgICAgICArICIgICAgMTAwOiA8JXNpbXBsaWZpZWQ8IGh1bmRyZWR0aDsgPCVzaW1wbGlmaWVkPCBodW5kcmVkID4+O1xuIgorICAgICAgICArICIgICAgMTAwMDogPCVzaW1wbGlmaWVkPCB0aG91c2FuZHRoOyA8JXNpbXBsaWZpZWQ8IHRob3VzYW5kID4+O1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwOiA8JXNpbXBsaWZpZWQ8IG1pbGxpb250aDsgPCVzaW1wbGlmaWVkPCBtaWxsaW9uID4+O1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMCwwMDA6IDwlc2ltcGxpZmllZDwgYmlsbGlvbnRoO1xuIgorICAgICAgICArICIgICAgICAgIDwlc2ltcGxpZmllZDwgYmlsbGlvbiA+PjtcbiIKKyAgICAgICAgKyAiICAgIDEsMDAwLDAwMCwwMDAsMDAwLDAwMDogPSMsIyMwPTsiCisgICAgICAgICsgIiVkZWZhdWx0OlxuIgorICAgICAgICArICIgICAgLXg6IG1pbnVzID4+O1xuIgorICAgICAgICArICIgICAgeC54OiA8PCBwb2ludCA+PjtcbiIKKyAgICAgICAgKyAiICAgID0lc2ltcGxpZmllZD07XG4iCisgICAgICAgICsgIiAgICAxMDA6IDw8IGh1bmRyZWRbID4lJWFuZD5dO1xuIgorICAgICAgICArICIgICAgMTAwMDogPDwgdGhvdXNhbmRbID4lJWFuZD5dO1xuIgorICAgICAgICArICIgICAgMTAwLDAwMD4+OiA8PCB0aG91c2FuZFs+JSVjb21tYXM+XTtcbiIKKyAgICAgICAgKyAiICAgIDEsMDAwLDAwMDogPDwgbWlsbGlvbls+JSVjb21tYXM+XTtcbiIKKyAgICAgICAgKyAiICAgIDEsMDAwLDAwMCwwMDAsMDAwOiA8PCBiaWxsaW9uWz4lJWNvbW1hcz5dO1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMCwwMDAsMDAwOiA9IywjIzA9O1xuIgorICAgICAgICArICIlJWFuZDpcbiIKKyAgICAgICAgKyAiICAgIGFuZCA9JWRlZmF1bHQ9O1xuIgorICAgICAgICArICIgICAgMTAwOiA9JWRlZmF1bHQ9O1xuIgorICAgICAgICArICIlJWNvbW1hczpcbiIKKyAgICAgICAgKyAiICAgICcgYW5kID0lZGVmYXVsdD07XG4iCisgICAgICAgICsgIiAgICAxMDA6ICwgPSVkZWZhdWx0PTtcbiIKKyAgICAgICAgKyAiICAgIDEwMDA6ICwgPCVkZWZhdWx0PCB0aG91c2FuZCwgPiVkZWZhdWx0PjtcbiIKKyAgICAgICAgKyAiICAgIDEsMDAwLDAwMDogLCA9JWRlZmF1bHQ9OyIKKyAgICAgICAgKyAiJSVsZW5pZW50LXBhcnNlOlxuIgorICAgICAgICArICIgICAgJiAnICcgLCAnLCcgO1xuIjsKKyAgICAvLyBDb3VsZCBzb21lb25lIHBsZWFzZSBjb3JyZWN0IG1lIGlmIEknbSB3cm9uZyBhYm91dCAibWlsbGlhcmQiIGZhbGxpbmcKKyAgICAvLyBpbnRvIGRpc3VzZSwgb3IgaGF2ZSBtaXNzZWQgYW55IG90aGVyIGRldGFpbHMgb2YgaG93IGxhcmdlIG51bWJlcnMKKyAgICAvLyBhcmUgcmVuZGVyZWQuICBBbHNvLCBjb3VsZCBzb21lb25lIHBsZWFzZSBwcm92aWRlIG1lIHdpdGggaW5mb3JtYXRpb24KKyAgICAvLyBvbiB3aGljaCBvdGhlciBFbmdsaXNoLXNwZWFraW5nIGNvdW50cmllcyB1c2Ugd2hpY2ggc3lzdGVtPyAgUmlnaHQgbm93LAorICAgIC8vIEknbSBhc3N1bWluZyB0aGF0IHRoZSBVLlMuIHN5c3RlbSBpcyB1c2VkIGluIENhbmFkYSBhbmQgdGhhdCBhbGwgdGhlCisgICAgLy8gb3RoZXIgRW5nbGlzaC1zcGVha2luZyBjb3VudHJpZXMgZm9sbG93IHRoZSBCcml0aXNoIHN5c3RlbS4gIENhbgorICAgIC8vIHNvbWVvbmUgb3V0IHRoZXJlIGNvbmZpcm0gdGhpcz8KKworICAgIC8qKgorICAgICAqIFNwZWxsb3V0IHJ1bGVzIGZvciBTcGFuaXNoLiAgVGhlIFNwYW5pc2ggcnVsZXMgYXJlIHF1aXRlIHNpbWlsYXIgdG8KKyAgICAgKiB0aGUgRW5nbGlzaCBydWxlcywgYnV0IHRoZXJlIGFyZSBzb21lIGltcG9ydGFudCBkaWZmZXJlbmNlczoKKyAgICAgKiBGaXJzdCwgd2UgaGF2ZSB0byBwcm92aWRlIHNlcGFyYXRlIHJ1bGVzIGZvciBtb3N0IG9mIHRoZSB0d2VudGllcworICAgICAqIGJlY2F1c2UgdGhlIG9uZXMgZGlnaXQgZnJlcXVlbnRseSBwaWNrcyB1cCBhbiBhY2NlbnQgbWFyayB0aGF0IGl0CisgICAgICogZG9lc24ndCBoYXZlIHdoZW4gc3RhbmRpbmcgYWxvbmUuICBTZWNvbmQsIGVhY2ggbXVsdGlwbGUgb2YgMTAwIGhhcworICAgICAqIHRvIGJlIHNwZWNpZmllZCBzZXBhcmF0ZWx5IGJlY2F1c2UgdGhlIG11bHRpcGxpZXIgb24gMTAwIHZlcnkgb2Z0ZW4KKyAgICAgKiBjaGFuZ2VzIGZvcm0gaW4gdGhlIGNvbnRyYWN0aW9uOiA1MDAgaXMgInF1aW5pZW50b3MsIiBub3QKKyAgICAgKiAiY2luY29jaWVudG9zLiIgIEluIGFkZGl0aW9uLCB0aGUgd29yZCBmb3IgMTAwIGlzICJjaWVuIiB3aGVuCisgICAgICogc3RhbmRpbmcgYWxvbmUsIGJ1dCBjaGFuZ2VzIHRvICJjaWVudG8iIHdoZW4gZm9sbG93ZWQgYnkgbW9yZSBkaWdpdHMuCisgICAgICogVGhlcmUgYWxzbyBzb21lIG90aGVyIGRpZmZlcmVuY2VzLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIHNwYW5pc2ggPQorICAgICAgICAvLyBuZWdhdGl2ZS1udW1iZXIgYW5kIGZyYWN0aW9uIHJ1bGVzCisgICAgICAgICIteDogbWVub3MgPj47XG4iCisgICAgICAgICsgIngueDogPDwgcHVudG8gPj47XG4iCisgICAgICAgIC8vIHdvcmRzIGZvciB2YWx1ZXMgZnJvbSAwIHRvIDE5CisgICAgICAgICsgImNlcm87IHVubzsgZG9zOyB0cmVzOyBjdWF0cm87IGNpbmNvOyBzZWlzOyBzaWV0ZTsgb2NobzsgbnVldmU7XG4iCisgICAgICAgICsgImRpZXo7IG9uY2U7IGRvY2U7IHRyZWNlOyBjYXRvcmNlOyBxdWluY2U7IGRpZWNpc1x1MDBlOWlzO1xuIgorICAgICAgICArICIgICAgZGllY2lzaWV0ZTsgZGllY2lvY2hvOyBkaWVjaW51ZXZlO1xuIgorICAgICAgICAvLyB3b3JkcyBmb3IgdmFsdWVzIGZyb20gMjAgdG8gMjkgKG5lY2Vzc2FyeSBiZWNhdXNlIHRoZSBvbmVzIGRpZ2l0CisgICAgICAgIC8vIG9mdGVuIHBpY2tzIHVwIGFuIGFjY2VudCBtYXJrIGl0IGRvZXNuJ3QgaGF2ZSB3aGVuIHN0YW5kaW5nIGFsb25lKQorICAgICAgICArICJ2ZWludGU7IHZlaW50aXVubzsgdmVpbnRpZFx1MDBmM3M7IHZlaW50aXRyXHUwMGU5czsgdmVpbnRpY3VhdHJvO1xuIgorICAgICAgICArICIgICAgdmVpbnRpY2luY287IHZlaW50aXNcdTAwZTlpczsgdmVpbnRpc2lldGU7IHZlaW50aW9jaG87XG4iCisgICAgICAgICsgIiAgICB2ZWludGludWV2ZTtcbiIKKyAgICAgICAgLy8gd29yZHMgZm9yIG11bHRpcGxlcyBvZiAxMCAobm90aWNlIHRoYXQgdGhlIHRlbnMgZGlnaXQgaXMgc2VwYXJhdGVkCisgICAgICAgIC8vIGZyb20gdGhlIG9uZXMgZGlnaXQgYnkgdGhlIHdvcmQgInkiLikKKyAgICAgICAgKyAiMzA6IHRyZWludGFbIHkgPj5dO1xuIgorICAgICAgICArICI0MDogY3VhcmVudGFbIHkgPj5dO1xuIgorICAgICAgICArICI1MDogY2luY3VlbnRhWyB5ID4+XTtcbiIKKyAgICAgICAgKyAiNjA6IHNlc2VudGFbIHkgPj5dO1xuIgorICAgICAgICArICI3MDogc2V0ZW50YVsgeSA+Pl07XG4iCisgICAgICAgICsgIjgwOiBvY2hlbnRhWyB5ID4+XTtcbiIKKyAgICAgICAgKyAiOTA6IG5vdmVudGFbIHkgPj5dO1xuIgorICAgICAgICAvLyAxMDAgYnkgaXRzZWxmIGlzICJjaWVuLCIgYnV0IDEwMCBmb2xsb3dlZCBieSBzb21ldGhpbmcgaXMgImNpbmV0byIKKyAgICAgICAgKyAiMTAwOiBjaWVuO1xuIgorICAgICAgICArICIxMDE6IGNpZW50byA+PjtcbiIKKyAgICAgICAgLy8gd29yZHMgZm9yIG11bHRpcGxlcyBvZiAxMDAgKG11c3QgYmUgc3RhdGVkIGJlY2F1c2UgdGhleSdyZQorICAgICAgICAvLyByYXJlbHkgc2ltcGxlIGNvbmNhdGVuYXRpb25zKQorICAgICAgICArICIyMDA6IGRvc2NpZW50b3NbID4+XTtcbiIKKyAgICAgICAgKyAiMzAwOiB0cmVzY2llbnRvc1sgPj5dO1xuIgorICAgICAgICArICI0MDA6IGN1YXRyb2NpZW50b3NbID4+XTtcbiIKKyAgICAgICAgKyAiNTAwOiBxdWluaWVudG9zWyA+Pl07XG4iCisgICAgICAgICsgIjYwMDogc2Vpc2NpZW50b3NbID4+XTtcbiIKKyAgICAgICAgKyAiNzAwOiBzZXRlY2llbnRvc1sgPj5dO1xuIgorICAgICAgICArICI4MDA6IG9jaG9jaWVudG9zWyA+Pl07XG4iCisgICAgICAgICsgIjkwMDogbm92ZWNpZW50b3NbID4+XTtcbiIKKyAgICAgICAgLy8gZm9yIDEsMDAwLCB0aGUgbXVsdGlwbGllciBvbiAibWlsIiBpcyBvbWl0dGVkOiAyLDAwMCBpcyAiZG9zIG1pbCwiCisgICAgICAgIC8vIGJ1dCAxLDAwMCBpcyBqdXN0ICJtaWwuIgorICAgICAgICArICIxMDAwOiBtaWxbID4+XTtcbiIKKyAgICAgICAgKyAiMjAwMDogPDwgbWlsWyA+Pl07XG4iCisgICAgICAgIC8vIDEsMDAwLDAwMCBpcyAidW4gbWlsbG9uLCIgbm90ICJ1bm8gbWlsbG9uIgorICAgICAgICArICIxLDAwMCwwMDA6IHVuIG1pbGxcdTAwZjNuWyA+Pl07XG4iCisgICAgICAgICsgIjIsMDAwLDAwMDogPDwgbWlsbFx1MDBmM25bID4+XTtcbiIKKyAgICAgICAgLy8gb3ZlcmZsb3cgcnVsZQorICAgICAgICArICIxLDAwMCwwMDAsMDAwOiA9IywjIzA9IChpbmNvbXBsZXRlIGRhdGEpOyI7CisgICAgLy8gVGhlIFNwYW5pc2ggcnVsZXMgYXJlIGluY29tcGxldGUuICBJJ20gbWlzc2luZyBpbmZvcm1hdGlvbiBvbiBuZWdhdGl2ZQorICAgIC8vIG51bWJlcnMgYW5kIG51bWJlcnMgd2l0aCBmcmFjdGlvbmFsIHBhcnRzLiAgSSBhbHNvIGRvbid0IGhhdmUKKyAgICAvLyBpbmZvcm1hdGlvbiBvbiBudW1iZXJzIGhpZ2hlciB0aGFuIHRoZSBtaWxsaW9ucworCisgICAgLyoqCisgICAgICogU3BlbGxvdXQgcnVsZXMgZm9yIEZyZW5jaC4gIEZyZW5jaCBhZGRzIHNvbWUgaW50ZXJlc3RpbmcgcXVpcmtzIG9mIGl0cworICAgICAqIG93bjogMSkgVGhlIHdvcmQgImV0IiBpcyBpbnRlcnBvc2VkIGJldHdlZW4gdGhlIHRlbnMgYW5kIG9uZXMgZGlnaXRzLAorICAgICAqIGJ1dCBvbmx5IGlmIHRoZSBvbmVzIGRpZ2l0IGlmIDE6IDIwIGlzICJ2aW5ndCwiIGFuZCAyIGlzICJ2aW5ndC1kZXV4LCIKKyAgICAgKiBidXQgMjEgaXMgInZpbmd0LWV0LXVuLiIgIDIpICBUaGVyZSBhcmUgbm8gd29yZHMgZm9yIDcwLCA4MCwgb3IgOTAuCisgICAgICogInF1YXRyZS12aW5ndHMiICgiZm91ciB0d2VudGllcyIpIGlzIHVzZWQgZm9yIDgwLCBhbmQgdmFsdWVzIHByb2NlZWQKKyAgICAgKiBieSBzY29yZSBmcm9tIDYwIHRvIDk5IChlLmcuLCA3MyBpcyAic29peGFudGUtdHJlaXplIiBbInNpeHR5LXRoaXJ0ZWVuIl0pLgorICAgICAqIE51bWJlcnMgZnJvbSAxLDEwMCB0byAxLDE5OSBhcmUgcmVuZGVyZWQgYXMgaHVuZHJlZHMgcmF0aGVyIHRoYW4KKyAgICAgKiB0aG91c2FuZHM6IDEsMTAwIGlzICJvbnplIGNlbnRzIiAoImVsZXZlbiBodW5kcmVkIiksIHJhdGhlciB0aGFuCisgICAgICogIm1pbGxlIGNlbnQiICgib25lIHRob3VzYW5kIG9uZSBodW5kcmVkIikKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBmcmVuY2ggPQorICAgICAgICAvLyB0aGUgbWFpbiBydWxlIHNldAorICAgICAgICAiJW1haW46XG4iCisgICAgICAgICAgICAgICAvLyBuZWdhdGl2ZS1udW1iZXIgYW5kIGZyYWN0aW9uIHJ1bGVzCisgICAgICAgICsgIiAgICAteDogbW9pbnMgPj47XG4iCisgICAgICAgICsgIiAgICB4Lng6IDw8IHZpcmd1bGUgPj47XG4iCisgICAgICAgICAgICAgICAvLyB3b3JkcyBmb3IgbnVtYmVycyBmcm9tIDAgdG8gMTAKKyAgICAgICAgKyAiICAgIHpcdTAwZTlybzsgdW47IGRldXg7IHRyb2lzOyBxdWF0cmU7IGNpbnE7IHNpeDsgc2VwdDsgaHVpdDsgbmV1ZjtcbiIKKyAgICAgICAgKyAiICAgIGRpeDsgb256ZTsgZG91emU7IHRyZWl6ZTsgcXVhdG9yemU7IHF1aW56ZTsgc2VpemU7XG4iCisgICAgICAgICsgIiAgICAgICAgZGl4LXNlcHQ7IGRpeC1odWl0OyBkaXgtbmV1ZjtcbiIKKyAgICAgICAgICAgICAgIC8vIG9yZHMgZm9yIHRoZSBtdWx0aXBsZXMgb2YgMTA6ICUlYWx0LW9uZXMgaW5zZXJ0cyAiZXQiCisgICAgICAgICAgICAgICAvLyB3aGVuIG5lZWRlZAorICAgICAgICArICIgICAgMjA6IHZpbmd0Wy0+JSVhbHQtb25lcz5dO1xuIgorICAgICAgICArICIgICAgMzA6IHRyZW50ZVstPiUlYWx0LW9uZXM+XTtcbiIKKyAgICAgICAgKyAiICAgIDQwOiBxdWFyYW50ZVstPiUlYWx0LW9uZXM+XTtcbiIKKyAgICAgICAgKyAiICAgIDUwOiBjaW5xdWFudGVbLT4lJWFsdC1vbmVzPl07XG4iCisgICAgICAgICAgICAgICAvLyBydWxlIGZvciA2MC4gIFRoZSAvMjAgY2F1c2VzIHRoaXMgcnVsZSdzIG11bHRpcGxpZXIgdG8gYmUKKyAgICAgICAgICAgICAgIC8vIDIwIHJhdGhlciB0aGFuIDEwLCBhbGxvd2luaGcgdXMgdG8gcmVjdXJzZSBmb3IgYWxsIHZhbHVlcworICAgICAgICAgICAgICAgLy8gZnJvbSA2MCB0byA3OS4uLgorICAgICAgICArICIgICAgNjAvMjA6IHNvaXhhbnRlWy0+JSVhbHQtb25lcz5dO1xuIgorICAgICAgICAgICAgICAgLy8gLi4uZXhjZXB0IGZvciA3MSwgd2hpY2ggbXVzdCBiZSBzcGVjaWFsLWNhc2VkCisgICAgICAgICsgIiAgICA3MTogc29peGFudGUgZXQgb256ZTtcbiIKKyAgICAgICAgICAgICAgIC8vIGF0IDcyLCB3ZSBoYXZlIHRvIHJlcGVhdCB0aGUgcnVsZSBmb3IgNjAgdG8gZ2V0IHVzIHRvIDc5CisgICAgICAgICsgIiAgICA3Mi8yMDogc29peGFudGUtPiUlYWx0LW9uZXM+O1xuIgorICAgICAgICAgICAgICAgLy8gYXQgODAsIHdlIHN0YXRlIGEgbmV3IHJ1bGUgd2l0aCB0aGUgcGhyYXNlIGZvciA4MC4gIFNpbmNlCisgICAgICAgICAgICAgICAvLyBpdCBjaGFuZ2VzIGZvcm0gd2hlbiB0aGVyZSdzIGEgb25lcyBkaWdpdCwgd2UgbmVlZCBhIHNlY29uZAorICAgICAgICAgICAgICAgLy8gcnVsZSBhdCA4MS4gIFRoaXMgcnVsZSBhbHNvIGluY2x1ZGVzICIvMjAsIiBhbGxvd2luZyBpdCB0bworICAgICAgICAgICAgICAgLy8gYmUgdXNlZCBjb3JyZWN0bHkgZm9yIGFsbCB2YWx1ZXMgdXAgdG8gOTkKKyAgICAgICAgKyAiICAgIDgwOiBxdWF0cmUtdmluZ3RzOyA4MS8yMDogcXVhdHJlLXZpbmd0LT4+O1xuIgorICAgICAgICAgICAgICAgLy8gImNlbnQiIGJlY29tZXMgcGx1cmFsIHdoZW4gcHJlY2VkZWQgYnkgYSBtdWx0aXBsaWVyLCBhbmQKKyAgICAgICAgICAgICAgIC8vIHRoZSBtdWx0aXBsaWVyIGlzIG9taXR0ZWQgZnJvbSB0aGUgc2luZ3VsYXIgZm9ybQorICAgICAgICArICIgICAgMTAwOiBjZW50WyA+Pl07XG4iCisgICAgICAgICsgIiAgICAyMDA6IDw8IGNlbnRzWyA+Pl07XG4iCisgICAgICAgICsgIiAgICAxMDAwOiBtaWxsZVsgPj5dO1xuIgorICAgICAgICAgICAgICAgLy8gdmFsdWVzIGZyb20gMSwxMDAgdG8gMSwxOTkgYXJlIHJlbmRlcmVkIGFzICJvbnplIGNlbnRzLi4uIgorICAgICAgICAgICAgICAgLy8gaW5zdGVhZCBvZiAibWlsbGUgY2VudC4uLiIgIFRoZSA+IGFmdGVyICIxMDAwIiBkZWNyZWFzZXMKKyAgICAgICAgICAgICAgIC8vIHRoZSBydWxlJ3MgZXhwb25lbnQsIGNhdXNpbmcgaXRzIG11bHRpcGxpZXIgdG8gYmUgMTAwIGluc3RlYWQKKyAgICAgICAgICAgICAgIC8vIG9mIDEsMDAwLiAgVGhpcyBwcmV2ZW50cyB1cyBmcm9tIGdldHRpbmcgIm9uemUgY2VudHMgY2VudAorICAgICAgICAgICAgICAgLy8gdmluZ3QtZGV1eCIgKCJlbGV2ZW4gaHVuZHJlZCBvbmUgaHVuZHJlZCB0d2VudHktdHdvIikuCisgICAgICAgICsgIiAgICAxMTAwPjogb256ZSBjZW50c1sgPj5dO1xuIgorICAgICAgICAgICAgICAgLy8gYXQgMSwyMDAsIHdlIGdvIGJhY2sgdG8gZm9ybWF0aW5nIGluIHRob3VzYW5kcywgc28gd2UKKyAgICAgICAgICAgICAgIC8vIHJlcGVhdCB0aGUgcnVsZSBmb3IgMSwwMDAKKyAgICAgICAgKyAiICAgIDEyMDA6IG1pbGxlID4+O1xuIgorICAgICAgICAgICAgICAgLy8gYXQgMiwwMDAsIHRoZSBtdWx0aXBsaWVyIGlzIGFkZGVkCisgICAgICAgICsgIiAgICAyMDAwOiA8PCBtaWxsZVsgPj5dO1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwOiA8PCBtaWxsaW9uWyA+Pl07XG4iCisgICAgICAgICsgIiAgICAxLDAwMCwwMDAsMDAwOiA8PCBtaWxsaWFyZGVbID4+XTtcbiIKKyAgICAgICAgKyAiICAgIDEsMDAwLDAwMCwwMDAsMDAwOiA8PCBiaWxsaW9uWyA+Pl07XG4iCisgICAgICAgICsgIiAgICAxLDAwMCwwMDAsMDAwLDAwMCwwMDA6ID0jLCMjMD07XG4iCisgICAgICAgIC8vICUlYWx0LW9uZXMgaXMgdXNlZCB0byBpbnNlcnQgImV0IiB3aGVuIHRoZSBvbmVzIGRpZ2l0IGlzIDEKKyAgICAgICAgKyAiJSVhbHQtb25lczpcbiIKKyAgICAgICAgKyAiICAgIDsgZXQtdW47ID0lbWFpbj07IjsKKworICAgIC8qKgorICAgICAqIFNwZWxsb3V0IHJ1bGVzIGZvciBTd2lzcyBGcmVuY2guICBTd2lzcyBGcmVuY2ggZGlmZmVycyBmcm9tIEZyZW5jaCBGcmVuY2gKKyAgICAgKiBpbiB0aGF0IGl0IGRvZXMgaGF2ZSB3b3JkcyBmb3IgNzAsIDgwLCBhbmQgOTAuICBUaGlzIHJ1bGUgc2V0IHNob3dzIHRoZW0sCisgICAgICogYW5kIGlzIHNpbXBsZXIgYXMgYSByZXN1bHQuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgc3dpc3NGcmVuY2ggPQorICAgICAgICAiJW1haW46XG4iCisgICAgICAgICsgIiAgICAteDogbW9pbnMgPj47XG4iCisgICAgICAgICsgIiAgICB4Lng6IDw8IHZpcmd1bGUgPj47XG4iCisgICAgICAgICsgIiAgICB6XHUwMGU5cm87IHVuOyBkZXV4OyB0cm9pczsgcXVhdHJlOyBjaW5xOyBzaXg7IHNlcHQ7IGh1aXQ7IG5ldWY7XG4iCisgICAgICAgICsgIiAgICBkaXg7IG9uemU7IGRvdXplOyB0cmVpemU7IHF1YXRvcnplOyBxdWluemU7IHNlaXplO1xuIgorICAgICAgICArICIgICAgICAgIGRpeC1zZXB0OyBkaXgtaHVpdDsgZGl4LW5ldWY7XG4iCisgICAgICAgICsgIiAgICAyMDogdmluZ3RbLT4lJWFsdC1vbmVzPl07XG4iCisgICAgICAgICsgIiAgICAzMDogdHJlbnRlWy0+JSVhbHQtb25lcz5dO1xuIgorICAgICAgICArICIgICAgNDA6IHF1YXJhbnRlWy0+JSVhbHQtb25lcz5dO1xuIgorICAgICAgICArICIgICAgNTA6IGNpbnF1YW50ZVstPiUlYWx0LW9uZXM+XTtcbiIKKyAgICAgICAgKyAiICAgIDYwOiBzb2l4YW50ZVstPiUlYWx0LW9uZXM+XTtcbiIKKyAgICAgICAgICAgICAgIC8vIG5vdGljZSBuZXcgd29yZHMgZm9yIDcwLCA4MCwgYW5kIDkwCisgICAgICAgICsgIiAgICA3MDogc2VwdGFudGVbLT4lJWFsdC1vbmVzPl07XG4iCisgICAgICAgICsgIiAgICA4MDogb2N0YW50ZVstPiUlYWx0LW9uZXM+XTtcbiIKKyAgICAgICAgKyAiICAgIDkwOiBub25hbnRlWy0+JSVhbHQtb25lcz5dO1xuIgorICAgICAgICArICIgICAgMTAwOiBjZW50WyA+Pl07XG4iCisgICAgICAgICsgIiAgICAyMDA6IDw8IGNlbnRzWyA+Pl07XG4iCisgICAgICAgICsgIiAgICAxMDAwOiBtaWxsZVsgPj5dO1xuIgorICAgICAgICArICIgICAgMTEwMD46IG9uemUgY2VudHNbID4+XTtcbiIKKyAgICAgICAgKyAiICAgIDEyMDA6IG1pbGxlID4+O1xuIgorICAgICAgICArICIgICAgMjAwMDogPDwgbWlsbGVbID4+XTtcbiIKKyAgICAgICAgKyAiICAgIDEsMDAwLDAwMDogPDwgbWlsbGlvblsgPj5dO1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMDogPDwgbWlsbGlhcmRlWyA+Pl07XG4iCisgICAgICAgICsgIiAgICAxLDAwMCwwMDAsMDAwLDAwMDogPDwgYmlsbGlvblsgPj5dO1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMCwwMDAsMDAwOiA9IywjIzA9O1xuIgorICAgICAgICArICIlJWFsdC1vbmVzOlxuIgorICAgICAgICArICIgICAgOyBldC11bjsgPSVtYWluPTsiOworICAgIC8vIEknbSBub3QgMTAwJSBzdXJlIGFib3V0IFN3aXNzIEZyZW5jaC4gIElzCisgICAgLy8gdGhpcyBjb3JyZWN0PyAgSXMgIm9uemUgY2VudHMiIGNvbW1vbmx5IHVzZWQgZm9yIDEsMTAwIGluIGJvdGggRnJhbmNlCisgICAgLy8gYW5kIFN3aXR6ZXJsYW5kPyAgQ2FuIHNvbWVvbmUgZmlsbCBtZSBpbiBvbiB0aGUgcnVsZXMgZm9yIHRoZSBvdGhlcgorICAgIC8vIEZyZW5jaC1zcGVha2luZyBjb3VudHJpZXM/ICBJJ3ZlIGhlYXJkIGNvbmZsaWN0aW5nIG9waW5pb25zIG9uIHdoaWNoCisgICAgLy8gdmVyc2lvbiBpcyB1c2VkIGluIENhbmFkYSwgYW5kIEkgdW5kZXJzdGFuZCB0aGVyZSdzIGFuIGFsdGVybmF0ZSBzZXQKKyAgICAvLyBvZiB3b3JkcyBmb3IgNzAsIDgwLCBhbmQgOTAgdGhhdCBpcyB1c2VkIHNvbWV3aGVyZSwgYnV0IEkgZG9uJ3Qga25vdworICAgIC8vIHdoYXQgdGhvc2Ugd29yZHMgYXJlIG9yIHdoZXJlIHRoZXkncmUgdXNlZC4KKworICAgIC8qKgorICAgICAqIFNwZWxsb3V0IHJ1bGVzIGZvciBHZXJtYW4uICBHZXJtYW4gYWxzbyBhZGRzIHNvbWUgaW50ZXJlc3RpbmcKKyAgICAgKiBjaGFyYWN0ZXJpc3RpY3MuICBGb3IgdmFsdWVzIGJlbG93IDEsMDAwLDAwMCwgbnVtYmVycyBhcmUgY3VzdG9tYXJpbHkKKyAgICAgKiB3cml0dGVuIG91dCBhcyBhIHNpbmdsZSB3b3JkLiAgQW5kIHRoZSBvbmVzIGRpZ2l0IFBSRUNFREVTIHRoZSB0ZW5zCisgICAgICogZGlnaXQgKGUuZy4sIDIzIGlzICJkcmVpdW5kendhbnppZywiIG5vdCAiendhbnppZ3VuZGRyZWkiKS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBnZXJtYW4gPQorICAgICAgICAvLyAxIGlzICJlaW5zIiB3aGVuIGJ5IGl0c2VsZiwgYnV0IHR1cm5zIGludG8gImVpbiIgaW4gbW9zdAorICAgICAgICAvLyBjb21iaW5hdGlvbnMKKyAgICAgICAgIiVhbHQtb25lczpcbiIKKyAgICAgICAgKyAiICAgIG51bGw7IGVpbnM7ID0lJW1haW49O1xuIgorICAgICAgICArICIlJW1haW46XG4iCisgICAgICAgICAgICAgICAvLyB3b3JkcyBmb3IgbnVtYmVycyBmcm9tIDAgdG8gMTIuICBOb3RpY2UgdGhhdCB0aGUgdmFsdWVzCisgICAgICAgICAgICAgICAvLyBmcm9tIDEzIHRvIDE5IGNhbiBkZXJpdmVkIGFsZ29yaXRobWljYWxseSwgdW5saWtlIGluIG1vc3QKKyAgICAgICAgICAgICAgIC8vIG90aGVyIGxhbmd1YWdlcworICAgICAgICArICIgICAgbnVsbDsgZWluOyB6d2VpOyBkcmVpOyB2aWVyOyBmXHUwMGZjbmY7IHNlY2hzOyBzaWViZW47IGFjaHQ7IG5ldW47XG4iCisgICAgICAgICsgIiAgICB6ZWhuOyBlbGY7IHp3XHUwMGY2bGY7ID4+emVobjtcbiIKKyAgICAgICAgICAgICAgIC8vIHJ1bGVzIGZvciB0aGUgbXVsdGlwbGVzIG9mIDEwLiAgTm90aWNlIHRoYXQgdGhlIG9uZXMgZGlnaXQKKyAgICAgICAgICAgICAgIC8vIGdvZXMgb24gdGhlIGZyb250CisgICAgICAgICsgIiAgICAyMDogWz4+dW5kXXp3YW56aWc7XG4iCisgICAgICAgICsgIiAgICAzMDogWz4+dW5kXWRyZWlcdTAwZGZpZztcbiIKKyAgICAgICAgKyAiICAgIDQwOiBbPj51bmRddmllcnppZztcbiIKKyAgICAgICAgKyAiICAgIDUwOiBbPj51bmRdZlx1MDBmY25memlnO1xuIgorICAgICAgICArICIgICAgNjA6IFs+PnVuZF1zZWNoemlnO1xuIgorICAgICAgICArICIgICAgNzA6IFs+PnVuZF1zaWViemlnO1xuIgorICAgICAgICArICIgICAgODA6IFs+PnVuZF1hY2h0emlnO1xuIgorICAgICAgICArICIgICAgOTA6IFs+PnVuZF1uZXVuemlnO1xuIgorICAgICAgICArICIgICAgMTAwOiBodW5kZXJ0Wz4lYWx0LW9uZXM+XTtcbiIKKyAgICAgICAgKyAiICAgIDIwMDogPDxodW5kZXJ0Wz4lYWx0LW9uZXM+XTtcbiIKKyAgICAgICAgKyAiICAgIDEwMDA6IHRhdXNlbmRbPiVhbHQtb25lcz5dO1xuIgorICAgICAgICArICIgICAgMjAwMDogPDx0YXVzZW5kWz4lYWx0LW9uZXM+XTtcbiIKKyAgICAgICAgKyAiICAgIDEsMDAwLDAwMDogZWluZSBNaWxsaW9uWyA+JWFsdC1vbmVzPl07XG4iCisgICAgICAgICsgIiAgICAyLDAwMCwwMDA6IDw8IE1pbGxpb25lblsgPiVhbHQtb25lcz5dO1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMDogZWluZSBNaWxsaWFyZGVbID4lYWx0LW9uZXM+XTtcbiIKKyAgICAgICAgKyAiICAgIDIsMDAwLDAwMCwwMDA6IDw8IE1pbGxpYXJkZW5bID4lYWx0LW9uZXM+XTtcbiIKKyAgICAgICAgKyAiICAgIDEsMDAwLDAwMCwwMDAsMDAwOiBlaW5lIEJpbGxpb25bID4lYWx0LW9uZXM+XTtcbiIKKyAgICAgICAgKyAiICAgIDIsMDAwLDAwMCwwMDAsMDAwOiA8PCBCaWxsaW9uZW5bID4lYWx0LW9uZXM+XTtcbiIKKyAgICAgICAgKyAiICAgIDEsMDAwLDAwMCwwMDAsMDAwLDAwMDogPSMsIyMwPTsiOworICAgIC8vIGFnYWluLCBJJ20gbm90IDEwMCUgc3VyZSBvZiB0aGVzZSBydWxlcy4gIEkgdGhpbmsgYm90aCAiaHVuZGVydCIgYW5kCisgICAgLy8gImVpbmh1bmRlcnQiIGFyZSBjb3JyZWN0IG9yIDEwMCwgYnV0IEknbSBub3Qgc3VyZSB3aGljaCBpcyBwcmVmZXJhYmxlCisgICAgLy8gaW4gc2l0dWF0aW9ucyB3aGVyZSB0aGlzIGZyYW1ld29yayBpcyBsaWtlbHkgdG8gYmUgdXNlZC4gIEFsc28sIGlzIGl0CisgICAgLy8gcmVhbGx5IHRydWUgdGhhdCBudW1iZXJzIGFyZSBydW4gdG9nZXRoZXIgaW50byBjb21wb3VuZCB3b3JkcyBhbGwgdGhlCisgICAgLy8gdGltZT8gIEFuZCBhZ2FpbiwgSSdtIG1pc3NpbmcgaW5mb3JtYXRpb24gb24gbmVnYXRpdmUgbnVtYmVycyBhbmQKKyAgICAvLyBkZWNpbWFzLgorCisgICAgLyoqCisgICAgICogU3BlbGxvdXQgcnVsZXMgZm9yIEl0YWxpYW4uICBMaWtlIEdlcm1hbiwgbW9zdCBJdGFsaWFuIG51bWJlcnMgYXJlCisgICAgICogd3JpdHRlbiBhcyBzaW5nbGUgd29yZHMuICBXaGF0IG1ha2VzIHRoZXNlIHJ1bGVzIGNvbXBsaWNhdGVkIGlzIHRoZSBydWxlCisgICAgICogdGhhdCBzYXlzIHRoYXQgd2hlbiBhIHdvcmQgZW5kaW5nIGluIGEgdm93ZWwgYW5kIGEgd29yZCBiZWdpbm5pbmcgd2l0aAorICAgICAqIGEgdm93ZWwgYXJlIGNvbWJpbmVkIGludG8gYSBjb21wb3VuZCwgdGhlIHZvd2VsIGlzIGRyb3BwZWQgZnJvbSB0aGUKKyAgICAgKiBlbmQgb2YgdGhlIGZpcnN0IHdvcmQ6IDE4MCBpcyAiY2VudG90dGFudGEsIiBub3QgImNlbnRvb3R0YW50YS4iCisgICAgICogVGhlIGNvbXBsZXhpdHkgb2YgdGhpcyBydWxlIHNldCBpcyB0byBwcm9kdWNlIHRoaXMgYmVoYXZpb3IuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgaXRhbGlhbiA9CisgICAgICAgIC8vIG1haW4gcnVsZSBzZXQuICBGb2xsb3dzIHRoZSBwYXR0ZXJucyBvZiB0aGUgcHJlY2VkaW5nIHJ1bGUgc2V0cywKKyAgICAgICAgLy8gZXhjZXB0IHRoYXQgdGhlIGZpbmFsIHZvd2VsIGlzIG9taXR0ZWQgZnJvbSB3b3JkcyBlbmRpbmcgaW4KKyAgICAgICAgLy8gdm93ZWxzIHdoZW4gdGhleSBhcmUgZm9sbG93ZWQgYnkgYW5vdGhlciB3b3JkOyBpbnN0ZWFkLCB3ZSBoYXZlCisgICAgICAgIC8vIHNlcGFyYXRlIHJ1bGUgc2V0cyB0aGF0IGFyZSBpZGVudGljYWwgdG8gdGhpcyBvbmUsIGV4Y2VwdCB0aGF0CisgICAgICAgIC8vIGFsbCB0aGUgd29yZHMgdGhhdCBkb24ndCBiZWdpbiB3aXRoIGEgdm93ZWwgaGF2ZSBhIHZvd2VsIHRhY2tlZAorICAgICAgICAvLyBvbnRvIHRoZW0gYXQgdGhlIGZyb250LiAgQSB3b3JkIGVuZGluZyBpbiBhIHZvd2VsIGNhbGxzIGEKKyAgICAgICAgLy8gc3Vic3RpdHV0aW9uIHRoYXQgd2lsbCBzdXBwbHkgdGhhdCB2b3dlbCwgdW5sZXNzIHRoYXQgdm93ZWwgaXMgdG8KKyAgICAgICAgLy8gYmUgZWxpZGVkLgorICAgICAgICAiJW1haW46XG4iCisgICAgICAgICsgIiAgICAteDogbWVubyA+PjtcbiIKKyAgICAgICAgKyAiICAgIHgueDogPDwgdmlyZ29sYSA+PjtcbiIKKyAgICAgICAgKyAiICAgIHplcm87IHVubzsgZHVlOyB0cmU7IHF1YXR0cm87IGNpbnF1ZTsgc2VpOyBzZXR0ZTsgb3R0bztcbiIKKyAgICAgICAgKyAiICAgICAgICBub3ZlO1xuIgorICAgICAgICArICIgICAgZGllY2k7IHVuZGljaTsgZG9kaWNpOyB0cmVkaWNpOyBxdWF0dG9yZGljaTsgcXVpbmRpY2k7IHNlZGljaTtcbiIKKyAgICAgICAgKyAiICAgICAgICBkaWNpYXNldHRlOyBkaWNpb3R0bzsgZGljaWFubm92ZTtcbiIKKyAgICAgICAgKyAiICAgIDIwOiB2ZW50aTsgdmVudD4lJXdpdGgtaT47XG4iCisgICAgICAgICsgIiAgICAzMDogdHJlbnRhOyB0cmVudD4lJXdpdGgtaT47XG4iCisgICAgICAgICsgIiAgICA0MDogcXVhcmFudGE7IHF1YXJhbnQ+JSV3aXRoLWE+O1xuIgorICAgICAgICArICIgICAgNTA6IGNpbnF1YW50YTsgY2lucXVhbnQ+JSV3aXRoLWE+O1xuIgorICAgICAgICArICIgICAgNjA6IHNlc3NhbnRhOyBzZXNzYW50PiUld2l0aC1hPjtcbiIKKyAgICAgICAgKyAiICAgIDcwOiBzZXR0YW50YTsgc2V0dGFudD4lJXdpdGgtYT47XG4iCisgICAgICAgICsgIiAgICA4MDogb3R0YW50YTsgb3R0YW50PiUld2l0aC1hPjtcbiIKKyAgICAgICAgKyAiICAgIDkwOiBub3ZhbnRhOyBub3ZhbnQ+JSV3aXRoLWE+O1xuIgorICAgICAgICArICIgICAgMTAwOiBjZW50bzsgY2VudFs+JSV3aXRoLW8+XTtcbiIKKyAgICAgICAgKyAiICAgIDIwMDogPDxjZW50bzsgPDxjZW50Wz4lJXdpdGgtbz5dO1xuIgorICAgICAgICArICIgICAgMTAwMDogbWlsbGU7IG1pbGxbPiUld2l0aC1pPl07XG4iCisgICAgICAgICsgIiAgICAyMDAwOiA8PG1pbGE7IDw8bWlsWz4lJXdpdGgtYT5dO1xuIgorICAgICAgICArICIgICAgMTAwLDAwMD4+OiA8PG1pbGFbID4+XTtcbiIKKyAgICAgICAgKyAiICAgIDEsMDAwLDAwMDogPSMsIyMwPSAoaW5jb21wbGV0ZSBkYXRhKTtcbiIKKyAgICAgICAgKyAiJSV3aXRoLWE6XG4iCisgICAgICAgICsgIiAgICBhemVybzsgdW5vOyBhZHVlOyBhdHJlOyBhcXVhdHRybzsgYWNpbnF1ZTsgYXNlaTsgYXNldHRlOyBvdHRvO1xuIgorICAgICAgICArICIgICAgICAgIGFub3ZlO1xuIgorICAgICAgICArICIgICAgYWRpZWNpOyB1bmRpY2k7IGFkb2RpY2k7IGF0cmVkaWNpOyBhcXVhdHRvcmRpY2k7IGFxdWluZGljaTsgYXNlZGljaTtcbiIKKyAgICAgICAgKyAiICAgICAgICBhZGljaWFzZXR0ZTsgYWRpY2lvdHRvOyBhZGljaWFubm92ZTtcbiIKKyAgICAgICAgKyAiICAgIDIwOiBhdmVudGk7IGF2ZW50PiUld2l0aC1pPjtcbiIKKyAgICAgICAgKyAiICAgIDMwOiBhdHJlbnRhOyBhdHJlbnQ+JSV3aXRoLWk+O1xuIgorICAgICAgICArICIgICAgNDA6IGFxdWFyYW50YTsgYXF1YXJhbnQ+JSV3aXRoLWE+O1xuIgorICAgICAgICArICIgICAgNTA6IGFjaW5xdWFudGE7IGFjaW5xdWFudD4lJXdpdGgtYT47XG4iCisgICAgICAgICsgIiAgICA2MDogYXNlc3NhbnRhOyBhc2Vzc2FudD4lJXdpdGgtYT47XG4iCisgICAgICAgICsgIiAgICA3MDogYXNldHRhbnRhOyBhc2V0dGFudD4lJXdpdGgtYT47XG4iCisgICAgICAgICsgIiAgICA4MDogb3R0YW50YTsgb3R0YW50PiUld2l0aC1hPjtcbiIKKyAgICAgICAgKyAiICAgIDkwOiBhbm92YW50YTsgYW5vdmFudD4lJXdpdGgtYT47XG4iCisgICAgICAgICsgIiAgICAxMDA6IGFjZW50bzsgYWNlbnRbPiUld2l0aC1vPl07XG4iCisgICAgICAgICsgIiAgICAyMDA6IDwlJXdpdGgtYTxjZW50bzsgPCUld2l0aC1hPGNlbnRbPiUld2l0aC1vPl07XG4iCisgICAgICAgICsgIiAgICAxMDAwOiBhbWlsbGU7IGFtaWxsWz4lJXdpdGgtaT5dO1xuIgorICAgICAgICArICIgICAgMjAwMDogPCUld2l0aC1hPG1pbGE7IDwlJXdpdGgtYTxtaWxbPiUld2l0aC1hPl07XG4iCisgICAgICAgICsgIiAgICAxMDAsMDAwOiA9JW1haW49O1xuIgorICAgICAgICArICIlJXdpdGgtaTpcbiIKKyAgICAgICAgKyAiICAgIGl6ZXJvOyB1bm87IGlkdWU7IGl0cmU7IGlxdWF0dHJvOyBpY2lucXVlOyBpc2VpOyBpc2V0dGU7IG90dG87XG4iCisgICAgICAgICsgIiAgICAgICAgaW5vdmU7XG4iCisgICAgICAgICsgIiAgICBpZGllY2k7IHVuZGljaTsgaWRvZGljaTsgaXRyZWRpY2k7IGlxdWF0dG9yZGljaTsgaXF1aW5kaWNpOyBpc2VkaWNpO1xuIgorICAgICAgICArICIgICAgICAgIGlkaWNpYXNldHRlOyBpZGljaW90dG87IGlkaWNpYW5ub3ZlO1xuIgorICAgICAgICArICIgICAgMjA6IGl2ZW50aTsgaXZlbnQ+JSV3aXRoLWk+O1xuIgorICAgICAgICArICIgICAgMzA6IGl0cmVudGE7IGl0cmVudD4lJXdpdGgtaT47XG4iCisgICAgICAgICsgIiAgICA0MDogaXF1YXJhbnRhOyBpcXVhcmFudD4lJXdpdGgtYT47XG4iCisgICAgICAgICsgIiAgICA1MDogaWNpbnF1YW50YTsgaWNpbnF1YW50PiUld2l0aC1hPjtcbiIKKyAgICAgICAgKyAiICAgIDYwOiBpc2Vzc2FudGE7IGlzZXNzYW50PiUld2l0aC1hPjtcbiIKKyAgICAgICAgKyAiICAgIDcwOiBpc2V0dGFudGE7IGlzZXR0YW50PiUld2l0aC1hPjtcbiIKKyAgICAgICAgKyAiICAgIDgwOiBvdHRhbnRhOyBvdHRhbnQ+JSV3aXRoLWE+O1xuIgorICAgICAgICArICIgICAgOTA6IGlub3ZhbnRhOyBpbm92YW50PiUld2l0aC1hPjtcbiIKKyAgICAgICAgKyAiICAgIDEwMDogaWNlbnRvOyBpY2VudFs+JSV3aXRoLW8+XTtcbiIKKyAgICAgICAgKyAiICAgIDIwMDogPCUld2l0aC1pPGNlbnRvOyA8JSV3aXRoLWk8Y2VudFs+JSV3aXRoLW8+XTtcbiIKKyAgICAgICAgKyAiICAgIDEwMDA6IGltaWxsZTsgaW1pbGxbPiUld2l0aC1pPl07XG4iCisgICAgICAgICsgIiAgICAyMDAwOiA8JSV3aXRoLWk8bWlsYTsgPCUld2l0aC1pPG1pbFs+JSV3aXRoLWE+XTtcbiIKKyAgICAgICAgKyAiICAgIDEwMCwwMDA6ID0lbWFpbj07XG4iCisgICAgICAgICsgIiUld2l0aC1vOlxuIgorICAgICAgICArICIgICAgb3plcm87IHVubzsgb2R1ZTsgb3RyZTsgb3F1YXR0cm87IG9jaW5xdWU7IG9zZWk7IG9zZXR0ZTsgb3R0bztcbiIKKyAgICAgICAgKyAiICAgICAgICBvbm92ZTtcbiIKKyAgICAgICAgKyAiICAgIG9kaWVjaTsgdW5kaWNpOyBvZG9kaWNpOyBvdHJlZGljaTsgb3F1YXR0b3JkaWNpOyBvcXVpbmRpY2k7IG9zZWRpY2k7XG4iCisgICAgICAgICsgIiAgICAgICAgb2RpY2lhc2V0dGU7IG9kaWNpb3R0bzsgb2RpY2lhbm5vdmU7XG4iCisgICAgICAgICsgIiAgICAyMDogb3ZlbnRpOyBvdmVudD4lJXdpdGgtaT47XG4iCisgICAgICAgICsgIiAgICAzMDogb3RyZW50YTsgb3RyZW50PiUld2l0aC1pPjtcbiIKKyAgICAgICAgKyAiICAgIDQwOiBvcXVhcmFudGE7IG9xdWFyYW50PiUld2l0aC1hPjtcbiIKKyAgICAgICAgKyAiICAgIDUwOiBvY2lucXVhbnRhOyBvY2lucXVhbnQ+JSV3aXRoLWE+O1xuIgorICAgICAgICArICIgICAgNjA6IG9zZXNzYW50YTsgb3Nlc3NhbnQ+JSV3aXRoLWE+O1xuIgorICAgICAgICArICIgICAgNzA6IG9zZXR0YW50YTsgb3NldHRhbnQ+JSV3aXRoLWE+O1xuIgorICAgICAgICArICIgICAgODA6IG90dGFudGE7IG90dGFudD4lJXdpdGgtYT47XG4iCisgICAgICAgICsgIiAgICA5MDogb25vdmFudGE7IG9ub3ZhbnQ+JSV3aXRoLWE+O1xuIgorICAgICAgICArICIgICAgMTAwOiBvY2VudG87IG9jZW50Wz4lJXdpdGgtbz5dO1xuIgorICAgICAgICArICIgICAgMjAwOiA8JSV3aXRoLW88Y2VudG87IDwlJXdpdGgtbzxjZW50Wz4lJXdpdGgtbz5dO1xuIgorICAgICAgICArICIgICAgMTAwMDogb21pbGxlOyBvbWlsbFs+JSV3aXRoLWk+XTtcbiIKKyAgICAgICAgKyAiICAgIDIwMDA6IDwlJXdpdGgtbzxtaWxhOyA8JSV3aXRoLW88bWlsWz4lJXdpdGgtYT5dO1xuIgorICAgICAgICArICIgICAgMTAwLDAwMDogPSVtYWluPTtcbiI7CisgICAgLy8gQ2FuIHNvbWVvbmUgY29uZmlybSB0aGF0IEkgZGlkIHRoZSB2b3dlbC1lbGlkaW5nIHRoaW5nIHJpZ2h0PyAgSSdtCisgICAgLy8gbm90IDEwMCUgc3VyZSBJJ20gZG9pbmcgaXQgaW4gYWxsIHRoZSByaWdodCBwbGFjZXMsIG9yIGNvbXBsZXRlbHkKKyAgICAvLyBjb3JyZWN0bHkuICBBbHNvLCBJIGRvbid0IGhhdmUgaW5mb3JtYXRpb24gZm9yIG5lZ2F0aXZlcyBhbmQgZGVjaW1hbHMsCisgICAgLy8gYW5kIEkgbGFjayB3b3JkcyBmcm9yIHZhbHVlcyBmcm9tIDEsMDAwLDAwMCBvbiB1cC4KKworICAgIC8qKgorICAgICAqIFNwZWxsb3V0IHJ1bGVzIGZvciBTd2VkaXNoLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIHN3ZWRpc2ggPQorICAgICAgICAibm9sbDsgZXR0OyB0dlx1MDBlNTsgdHJlOyBmeXJhOyBmZW07IHNleDsgc2pvOyBcdTAwZTV0dGE7IG5pbztcbiIKKyAgICAgICAgKyAidGlvOyBlbHZhOyB0b2x2OyB0cmV0dG9uOyBmam9ydG9uOyBmZW10b247IHNleHRvbjsgc2p1dHRvbjsgYXJ0b247IG5pdHRvbjtcbiIKKyAgICAgICAgKyAiMjA6IHRqdWdvWz4+XTtcbiIKKyAgICAgICAgKyAiMzA6IHRyZXR0aW9bPj5dO1xuIgorICAgICAgICArICI0MDogZnlydGlvWz4+XTtcbiIKKyAgICAgICAgKyAiNTA6IGZlbXRpb1s+Pl07XG4iCisgICAgICAgICsgIjYwOiBzZXh0aW9bPj5dO1xuIgorICAgICAgICArICI3MDogc2p1dHRpb1s+Pl07XG4iCisgICAgICAgICsgIjgwOiBcdTAwZTV0dGlvWz4+XTtcbiIKKyAgICAgICAgKyAiOTA6IG5pdHRpb1s+Pl07XG4iCisgICAgICAgICsgIjEwMDogaHVuZHJhWz4+XTtcbiIKKyAgICAgICAgKyAiMjAwOiA8PGh1bmRyYVs+Pl07XG4iCisgICAgICAgICsgIjEwMDA6IHR1c2VuWyA+Pl07XG4iCisgICAgICAgICsgIjIwMDA6IDw8IHR1c2VuWyA+Pl07XG4iCisgICAgICAgICsgIjEsMDAwLDAwMDogZW4gbWlsam9uWyA+Pl07XG4iCisgICAgICAgICsgIjIsMDAwLDAwMDogPDwgbWlsam9uWyA+Pl07XG4iCisgICAgICAgICsgIjEsMDAwLDAwMCwwMDA6IGVuIG1pbGphcmRbID4+XTtcbiIKKyAgICAgICAgKyAiMiwwMDAsMDAwLDAwMDogPDwgbWlsamFyZFsgPj5dO1xuIgorICAgICAgICArICIxLDAwMCwwMDAsMDAwLDAwMDogZW4gYmlsam9uWyA+Pl07XG4iCisgICAgICAgICsgIjIsMDAwLDAwMCwwMDAsMDAwOiA8PCBiaWxqb25bID4+XTtcbiIKKyAgICAgICAgKyAiMSwwMDAsMDAwLDAwMCwwMDAsMDAwOiA9IywjIzA9IjsKKyAgICAvLyBjYW4gc29tZW9uZSBzdXBwbHkgbWUgd2l0aCBpbmZvcm1hdGlvbiBvbiBuZWdhdGl2ZXMgYW5kIGRlY2ltYWxzPworCisgICAgLyoqCisgICAgICogU3BlbGxvdXQgcnVsZXMgZm9yIER1dGNoLiAgTm90aWNlIHRoYXQgaW4gRHV0Y2gsIGFzIGluIEdlcm1hbiwKKyAgICAgKiB0aGUgb25lcyBkaWdpdCBwcmVjZWRlcyB0aGUgdGVucyBkaWdpdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBkdXRjaCA9CisgICAgICAgICIgLXg6IG1pbiA+PjtcbiIKKyAgICAgICAgKyAieC54OiA8PCBrb21tYSA+PjtcbiIKKyAgICAgICAgKyAiKHplcm8/KTsgZWVuOyB0d2VlOyBkcmllOyB2aWVyOyB2aWpmOyB6ZXM7IHpldmVuOyBhY2h0OyBuZWdlbjtcbiIKKyAgICAgICAgKyAidGllbjsgZWxmOyB0d2FhbGY7IGRlcnRpZW47IHZlZXJ0aWVuOyB2aWpmdGllbjsgemVzdGllbjtcbiIKKyAgICAgICAgKyAiemV2ZW50aWVuOyBhY2h0aWVuOyBuZWdlbnRpZW47XG4iCisgICAgICAgICsgIjIwOiBbPj4gZW4gXXR3aW50aWc7XG4iCisgICAgICAgICsgIjMwOiBbPj4gZW4gXWRlcnRpZztcbiIKKyAgICAgICAgKyAiNDA6IFs+PiBlbiBddmVlcnRpZztcbiIKKyAgICAgICAgKyAiNTA6IFs+PiBlbiBddmlqZnRpZztcbiIKKyAgICAgICAgKyAiNjA6IFs+PiBlbiBdemVzdGlnO1xuIgorICAgICAgICArICI3MDogWz4+IGVuIF16ZXZlbnRpZztcbiIKKyAgICAgICAgKyAiODA6IFs+PiBlbiBddGFjaHRpZztcbiIKKyAgICAgICAgKyAiOTA6IFs+PiBlbiBdbmVnZW50aWc7XG4iCisgICAgICAgICsgIjEwMDogPDwgaG9uZGVyZFsgPj5dO1xuIgorICAgICAgICArICIxMDAwOiA8PCBkdWl6ZW5kWyA+Pl07XG4iCisgICAgICAgICsgIjEsMDAwLDAwMDogPDwgbWlsam9lblsgPj5dO1xuIgorICAgICAgICArICIxLDAwMCwwMDAsMDAwOiA8PCBiaWxqb2VuWyA+Pl07XG4iCisgICAgICAgICsgIjEsMDAwLDAwMCwwMDAsMDAwOiA9IywjIzA9IjsKKworICAgIC8qKgorICAgICAqIFNwZWxsb3V0IHJ1bGVzIGZvciBKYXBhbmVzZS4gIEluIEphcGFuZXNlLCB0aGVyZSByZWFsbHkgaXNuJ3QgYW55CisgICAgICogZGlzdGluY3Rpb24gYmV0d2VlbiBhIG51bWJlciB3cml0dGVuIG91dCBpbiBkaWdpdHMgYW5kIGEgbnVtYmVyCisgICAgICogd3JpdHRlbiBvdXQgaW4gd29yZHM6IHRoZSBpZGVvZ3JhcGhpYyBjaGFyYWN0ZXJzIGFyZSBib3RoIGRpZ2l0cworICAgICAqIGFuZCB3b3Jkcy4gIFRoaXMgcnVsZSBzZXQgcHJvdmlkZXMgdHdvIHZhcmlhbnRzOiAgJXRyYWRpdGlvbmFsCisgICAgICogdXNlcyB0aGUgdHJhZGl0aW9uYWwgQ0pLIG51bWVyYWxzICh3aGljaCBhcmUgYWxzbyB1c2VkIGluIENoaW5hCisgICAgICogYW5kIEtvcmVhKS4gICVmaW5hbmNpYWwgdXNlcyBhbHRlcm5hdGUgaWRlb2dyYXBocyBmb3IgbWFueSBudW1iZXJzCisgICAgICogdGhhdCBhcmUgaGFyZGVyIHRvIGFsdGVyIHRoYW4gdGhlIHRyYWRpdGlvbmFsIG51bWVyYWxzIChvbmUgY291bGQKKyAgICAgKiBmYWlybHkgZWFzaWx5IGNoYW5nZSBhIG9uZSB0bworICAgICAqIGEgdGhyZWUganVzdCBieSBhZGRpbmcgdHdvIHN0cm9rZXMsIGZvciBleGFtcGxlKS4gIFRoaXMgaXMgYWxzbyBkb25lIGluCisgICAgICogdGhlIG90aGVyIGNvdW50cmllcyB1c2luZyBDaGluZXNlIGlkb2dyYXBocywgYnV0IGRpZmZlcmVudCBpZGVvZ3JhcGhzCisgICAgICogYXJlIHVzZWQgaW4gdGhvc2UgcGxhY2VzLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGphcGFuZXNlID0KKyAgICAgICAgIiVmaW5hbmNpYWw6XG4iCisgICAgICAgICsgIiAgICBcdTk2ZjY7IFx1NThmMTsgXHU1ZjEwOyBcdTUzYzI7IFx1NTZkYjsgXHU0ZjBkOyBcdTUxNmQ7IFx1NGUwMzsgXHU1MTZiOyBcdTRlNWQ7XG4iCisgICAgICAgICsgIiAgICBcdTYyZmVbPj5dO1xuIgorICAgICAgICArICIgICAgMjA6IDw8XHU2MmZlWz4+XTtcbiIKKyAgICAgICAgKyAiICAgIDEwMDogPDxcdTc2N2VbPj5dO1xuIgorICAgICAgICArICIgICAgMTAwMDogPDxcdTUzNDNbPj5dO1xuIgorICAgICAgICArICIgICAgMTAsMDAwOiA8PFx1NGUwN1s+Pl07XG4iCisgICAgICAgICsgIiAgICAxMDAsMDAwLDAwMDogPDxcdTUxMDRbPj5dO1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMCwwMDA6IDw8XHU1MTQ2Wz4+XTtcbiIKKyAgICAgICAgKyAiICAgIDEwLDAwMCwwMDAsMDAwLDAwMCwwMDA6ID0jLCMjMD07XG4iCisgICAgICAgICsgIiV0cmFkaXRpb25hbDpcbiIKKyAgICAgICAgKyAiICAgIFx1OTZmNjsgXHU0ZTAwOyBcdTRlOGM7IFx1NGUwOTsgXHU1NmRiOyBcdTRlOTQ7IFx1NTE2ZDsgXHU0ZTAzOyBcdTUxNmI7IFx1NGU1ZDtcbiIKKyAgICAgICAgKyAiICAgIFx1NTM0MVs+Pl07XG4iCisgICAgICAgICsgIiAgICAyMDogPDxcdTUzNDFbPj5dO1xuIgorICAgICAgICArICIgICAgMTAwOiA8PFx1NzY3ZVs+Pl07XG4iCisgICAgICAgICsgIiAgICAxMDAwOiA8PFx1NTM0M1s+Pl07XG4iCisgICAgICAgICsgIiAgICAxMCwwMDA6IDw8XHU0ZTA3Wz4+XTtcbiIKKyAgICAgICAgKyAiICAgIDEwMCwwMDAsMDAwOiA8PFx1NTEwNFs+Pl07XG4iCisgICAgICAgICsgIiAgICAxLDAwMCwwMDAsMDAwLDAwMDogPDxcdTUxNDZbPj5dO1xuIgorICAgICAgICArICIgICAgMTAsMDAwLDAwMCwwMDAsMDAwLDAwMDogPSMsIyMwPTsiOworICAgIC8vIENhbiBzb21lb25lIHN1cHBseSBtZSB3aXRoIHRoZSByaWdodCBmcmF1ZC1wcm9vZiBpZGVvZ3JhcGhzIGZvcgorICAgIC8vIFNpbXBsaWZpZWQgYW5kIFRyYWRpdGlvbmFsIENoaW5lc2UsIGFuZCBmb3IgS29yZWFuPyAgQ2FuIHNvbWVvbmUKKyAgICAvLyBzdXBwbHkgbWUgd2l0aCBpbmZvcm1hdGlvbiBvbiBuZWdhdGl2ZXMgYW5kIGRlY2ltYWxzPworCisgICAgLyoqCisgICAgICogU3BlbGxvdXQgcnVsZXMgZm9yIEdyZWVrLiAgQWdhaW4gaW4gR3JlZWsgd2UgaGF2ZSB0byBzdXBwbHkgdGhlIHdvcmRzCisgICAgICogZm9yIHRoZSBtdWx0aXBsZXMgb2YgMTAwIGJlY2F1c2UgdGhleSBjYW4ndCBiZSBkZXJpdmVkIGFsZ29yaXRobWljYWxseS4KKyAgICAgKiBBbHNvLCB0aGUgdGVucyBkZ2l0IGNoYW5nZXMgZm9ybSB3aGVuIGZvbGxvd2VkIGJ5IGEgb25lcyBkaWdpdDogYW4KKyAgICAgKiBhY2NlbnQgbWFyayBkaXNhcHBlYXJzIGZyb20gdGhlIHRlbnMgZGlnaXQgYW5kIG1vdmVzIHRvIHRoZSBvbmVzIGRpZ2l0LgorICAgICAqIFRoZXJlZm9yZSwgaW5zdGVhZCBvZiB1c2luZyB0aGUgW10gbm90YXRpb24sIHdlIGFjdHVhbGx5IGhhdmUgdG8gdXNlCisgICAgICogdHdvIHNlcGFyYXRlIHJ1bGVzIGZvciBlYWNoIG11bHRpcGxlIG9mIDEwIHRvIHNob3cgdGhlIHR3byBmb3JtcyBvZgorICAgICAqIHRoZSB3b3JkLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGdyZWVrID0KKyAgICAgICAgInplcm8gKGluY29tcGxldGUgZGF0YSk7IFx1MDNhZFx1MDNiZFx1MDNiMTsgXHUwM2I0XHUwM2NkXHUwM2JmOyBcdTAzYjRcdTAzYzFcdTAzYWZcdTAzYjE7ICIKKyAgICAgICAgKyAiXHUwM2M0XHUwM2FkXHUwM2MzXHUwM2MzXHUwM2I1XHUwM2MxXHUwM2IxOyBcdTAzYzBcdTAzYWRcdTAzYmRcdTAzYzRcdTAzYjU7ICIKKyAgICAgICAgKyAiXHUwM2FkXHUwM2JlXHUwM2I5OyBcdTAzYjVcdTAzYzBcdTAzYzRcdTAzYWM7IFx1MDNiZlx1MDNiYVx1MDNjNFx1MDNjZTsgIgorICAgICAgICArICJcdTAzYjVcdTAzYmRcdTAzYmRcdTAzYWRcdTAzYjE7XG4iCisgICAgICAgICsgIjEwOiBcdTAzYjRcdTAzYWRcdTAzYmFcdTAzYjE7ICIKKyAgICAgICAgKyAiXHUwM2FkXHUwM2JkXHUwM2I0XHUwM2I1XHUwM2JhXHUwM2IxOyBcdTAzYjRcdTAzY2VcdTAzYjRcdTAzYjVcdTAzYmFcdTAzYjE7ICIKKyAgICAgICAgKyAiXHUwM2I0XHUwM2I1XHUwM2JhXHUwM2IxPj47XG4iCisgICAgICAgICsgIjIwOiBcdTAzYjVcdTAzYWZcdTAzYmFcdTAzYmZcdTAzYzNcdTAzYjk7IFx1MDNiNVx1MDNiOVx1MDNiYVx1MDNiZlx1MDNjM1x1MDNiOT4+O1xuIgorICAgICAgICArICIzMDogXHUwM2M0XHUwM2MxXHUwM2I5XHUwM2FjXHUwM2JkXHUwM2M0XHUwM2IxOyBcdTAzYzRcdTAzYzFcdTAzYjlcdTAzYjFcdTAzYmRcdTAzYzRcdTAzYjE+PjtcbiIKKyAgICAgICAgKyAiNDA6IFx1MDNjM1x1MDNiMVx1MDNjMVx1MDNhY1x1MDNiZFx1MDNjNFx1MDNiMTsgXHUwM2MzXHUwM2IxXHUwM2MxXHUwM2IxXHUwM2JkXHUwM2M0XHUwM2IxPj47XG4iCisgICAgICAgICsgIjUwOiBcdTAzYzBcdTAzYjVcdTAzYmRcdTAzYWVcdTAzYmRcdTAzYzRcdTAzYjE7IFx1MDNjMFx1MDNiNVx1MDNiZFx1MDNiN1x1MDNiZFx1MDNjNFx1MDNiMT4+O1xuIgorICAgICAgICArICI2MDogXHUwM2I1XHUwM2JlXHUwM2FlXHUwM2JkXHUwM2M0XHUwM2IxOyBcdTAzYjVcdTAzYmVcdTAzYjdcdTAzYmRcdTAzYzRcdTAzYjE+PjtcbiIKKyAgICAgICAgKyAiNzA6IFx1MDNiNVx1MDNiMlx1MDNiNFx1MDNiZlx1MDNiY1x1MDNhZVx1MDNiZFx1MDNjNFx1MDNiMTsgIgorICAgICAgICArICJcdTAzYjVcdTAzYjJcdTAzYjRcdTAzYmZcdTAzYmNcdTAzYjdcdTAzYmRcdTAzYzRcdTAzYjE+PjtcbiIKKyAgICAgICAgKyAiODA6IFx1MDNiZlx1MDNiM1x1MDNiNFx1MDNjY1x1MDNiZFx1MDNjNFx1MDNiMTsgXHUwM2JmXHUwM2IzXHUwM2I0XHUwM2JmXHUwM2JkXHUwM2M0XHUwM2IxPj47XG4iCisgICAgICAgICsgIjkwOiBcdTAzYjVcdTAzYmRcdTAzYmRcdTAzYjVcdTAzYmRcdTAzYWVcdTAzYmRcdTAzYzRcdTAzYjE7ICIKKyAgICAgICAgKyAiXHUwM2I1XHUwM2JkXHUwM2JkXHUwM2I1XHUwM2JkXHUwM2I3XHUwM2JkXHUwM2M0XHUwM2IxPj47XG4iCisgICAgICAgICsgIjEwMDogXHUwM2I1XHUwM2JhXHUwM2IxXHUwM2M0XHUwM2NjW1x1MDNiZCA+Pl07XG4iCisgICAgICAgICsgIjIwMDogXHUwM2I0XHUwM2I5XHUwM2IxXHUwM2JhXHUwM2NjXHUwM2MzXHUwM2I5XHUwM2IxWyA+Pl07XG4iCisgICAgICAgICsgIjMwMDogXHUwM2M0XHUwM2MxXHUwM2I5XHUwM2IxXHUwM2JhXHUwM2NjXHUwM2MzXHUwM2I5XHUwM2IxWyA+Pl07XG4iCisgICAgICAgICsgIjQwMDogXHUwM2M0XHUwM2I1XHUwM2M0XHUwM2MxXHUwM2IxXHUwM2JhXHUwM2NjXHUwM2MzXHUwM2I5XHUwM2IxWyA+Pl07XG4iCisgICAgICAgICsgIjUwMDogXHUwM2MwXHUwM2I1XHUwM2JkXHUwM2M0XHUwM2IxXHUwM2JhXHUwM2NjXHUwM2MzXHUwM2I5XHUwM2IxWyA+Pl07XG4iCisgICAgICAgICsgIjYwMDogXHUwM2I1XHUwM2JlXHUwM2IxXHUwM2JhXHUwM2NjXHUwM2MzXHUwM2I5XHUwM2IxWyA+Pl07XG4iCisgICAgICAgICsgIjcwMDogXHUwM2I1XHUwM2MwXHUwM2M0XHUwM2IxXHUwM2JhXHUwM2NjXHUwM2MzXHUwM2I5XHUwM2IxWyA+Pl07XG4iCisgICAgICAgICsgIjgwMDogXHUwM2JmXHUwM2JhXHUwM2M0XHUwM2IxXHUwM2JhXHUwM2NjXHUwM2MzXHUwM2I5XHUwM2IxWyA+Pl07XG4iCisgICAgICAgICsgIjkwMDogXHUwM2I1XHUwM2JkXHUwM2JkXHUwM2I5XHUwM2IxXHUwM2JhXHUwM2NjXHUwM2MzXHUwM2I5XHUwM2IxWyA+Pl07XG4iCisgICAgICAgICsgIjEwMDA6IFx1MDNjN1x1MDNhZlx1MDNiYlx1MDNiOVx1MDNiMVsgPj5dO1xuIgorICAgICAgICArICIyMDAwOiA8PCBcdTAzYzdcdTAzYWZcdTAzYmJcdTAzYjlcdTAzYjFbID4+XTtcbiIKKyAgICAgICAgKyAiMSwwMDAsMDAwOiA8PCBcdTAzYjVcdTAzYmFcdTAzYjFcdTAzYzRcdTAzYmZcdTAzYmNcdTAzYmNcdTAzYjlcdTAzY2NcdTAzYzFcdTAzYjlcdTAzYmZbID4+XTtcbiIKKyAgICAgICAgKyAiMSwwMDAsMDAwLDAwMDogPDwgXHUwM2I0XHUwM2I5XHUwM2MzXHUwM2I1XHUwM2JhXHUwM2IxXHUwM2M0XHUwM2JmXHUwM2JjXHUwM2JjXHUwM2I5XHUwM2NjXHUwM2MxXHUwM2I5XHUwM2JmWyA+Pl07XG4iCisgICAgICAgICsgIjEsMDAwLDAwMCwwMDAsMDAwOiA9IywjIzA9IjsKKyAgICAvLyBDYW4gc29tZW9uZSBzdXBwbHkgbWUgd2l0aCBpbmZvcm1hdGlvbiBvbiBuZWdhdGl2ZXMgYW5kIGRlY2ltYWxzPworICAgIC8vIEknbSBhbHNvIG1pc3NpbmcgdGhlIHdvcmQgZm9yIHplcm8uICBDYW4gc29tZW9uZSBjbHVlIG1lIGluPworCisgICAgLyoqCisgICAgICogU3BlbGxvdXQgcnVsZXMgZm9yIFJ1c3NpYW4uCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgcnVzc2lhbiA9CisgICAgICAgICJcdTA0M2RcdTA0M2VcdTA0M2JcdTA0NGM7IFx1MDQzZVx1MDQzNFx1MDQzOFx1MDQzZDsgXHUwNDM0XHUwNDMyXHUwNDMwOyBcdTA0NDJcdTA0NDBcdTA0Mzg7ICIKKyAgICAgICAgKyAiXHUwNDQ3XHUwNDM1XHUwNDQyXHUwNDRiXHUwNDQwXHUwNDM1OyBcdTA0M2ZcdTA0NGZcdTA0NDI7IFx1MDQ0OFx1MDQzNVx1MDQ0MVx1MDQ0MjsgIgorICAgICAgICArICJcdTA0NDFcdTA0MzVcdTA0M2NcdTA0NGM7IFx1MDQzMlx1MDQzZVx1MDQ0MVx1MDQzNVx1MDQzY1x1MDQ0YzsgXHUwNDM0XHUwNDM1XHUwNDMyXHUwNDRmXHUwNDQyO1xuIgorICAgICAgICArICIxMDogXHUwNDM0XHUwNDM1XHUwNDQxXHUwNDRmXHUwNDQyOyAiCisgICAgICAgICsgIlx1MDQzZVx1MDQzNFx1MDQzOFx1MDQzZFx1MDQzZFx1MDQzMFx1MDQzNFx1MDQ0Nlx1MDQzMFx1MDQ0Mlx1MDQ0YztcbiIKKyAgICAgICAgKyAiXHUwNDM0XHUwNDMyXHUwNDM1XHUwNDNkXHUwNDNkXHUwNDMwXHUwNDM0XHUwNDQ2XHUwNDMwXHUwNDQyXHUwNDRjOyAiCisgICAgICAgICsgIlx1MDQ0Mlx1MDQ0MFx1MDQzOFx1MDQzZFx1MDQzMFx1MDQzNFx1MDQ0Nlx1MDQzMFx1MDQ0Mlx1MDQ0YzsgIgorICAgICAgICArICJcdTA0NDdcdTA0MzVcdTA0NDJcdTA0NGJcdTA0NDBcdTA0M2RcdTA0MzBcdTA0MzRcdTA0NDZcdTA0MzBcdTA0NDJcdTA0NGM7XG4iCisgICAgICAgICsgIjE1OiBcdTA0M2ZcdTA0NGZcdTA0NDJcdTA0M2RcdTA0MzBcdTA0MzRcdTA0NDZcdTA0MzBcdTA0NDJcdTA0NGM7ICIKKyAgICAgICAgKyAiXHUwNDQ4XHUwNDM1XHUwNDQxXHUwNDQyXHUwNDNkXHUwNDMwXHUwNDM0XHUwNDQ2XHUwNDMwXHUwNDQyXHUwNDRjOyAiCisgICAgICAgICsgIlx1MDQ0MVx1MDQzNVx1MDQzY1x1MDQzZFx1MDQzMFx1MDQzNFx1MDQ0Nlx1MDQzMFx1MDQ0Mlx1MDQ0YzsgIgorICAgICAgICArICJcdTA0MzJcdTA0M2VcdTA0NDFcdTA0MzVcdTA0M2NcdTA0M2RcdTA0MzBcdTA0MzRcdTA0NDZcdTA0MzBcdTA0NDJcdTA0NGM7ICIKKyAgICAgICAgKyAiXHUwNDM0XHUwNDM1XHUwNDMyXHUwNDRmXHUwNDQyXHUwNDNkXHUwNDMwXHUwNDM0XHUwNDQ2XHUwNDMwXHUwNDQyXHUwNDRjO1xuIgorICAgICAgICArICIyMDogXHUwNDM0XHUwNDMyXHUwNDMwXHUwNDM0XHUwNDQ2XHUwNDMwXHUwNDQyXHUwNDRjWyA+Pl07XG4iCisgICAgICAgICsgIjMwOiBcdTA0NDJcdTA0NDBcdTA0M2JcdTA0MzRcdTA0NDZcdTA0MzBcdTA0NDJcdTA0NGNbID4+XTtcbiIKKyAgICAgICAgKyAiNDA6IFx1MDQ0MVx1MDQzZVx1MDQ0MFx1MDQzZVx1MDQzYVsgPj5dO1xuIgorICAgICAgICArICI1MDogXHUwNDNmXHUwNDRmXHUwNDQyXHUwNDRjXHUwNDM0XHUwNDM1XHUwNDQxXHUwNDRmXHUwNDQyWyA+Pl07XG4iCisgICAgICAgICsgIjYwOiBcdTA0NDhcdTA0MzVcdTA0NDFcdTA0NDJcdTA0NGNcdTA0MzRcdTA0MzVcdTA0NDFcdTA0NGZcdTA0NDJbID4+XTtcbiIKKyAgICAgICAgKyAiNzA6IFx1MDQ0MVx1MDQzNVx1MDQzY1x1MDQ0Y1x1MDQzNFx1MDQzNVx1MDQ0MVx1MDQ0Zlx1MDQ0MlsgPj5dO1xuIgorICAgICAgICArICI4MDogXHUwNDMyXHUwNDNlXHUwNDQxXHUwNDM1XHUwNDNjXHUwNDRjXHUwNDM0XHUwNDM1XHUwNDQxXHUwNDRmXHUwNDQyWyA+Pl07XG4iCisgICAgICAgICsgIjkwOiBcdTA0MzRcdTA0MzVcdTA0MzJcdTA0NGZcdTA0M2RcdTA0M2VcdTA0NDFcdTA0NDJcdTA0M2VbID4+XTtcbiIKKyAgICAgICAgKyAiMTAwOiBcdTA0NDFcdTA0NDJcdTA0M2VbID4+XTtcbiIKKyAgICAgICAgKyAiMjAwOiA8PCBcdTA0NDFcdTA0NDJcdTA0M2VbID4+XTtcbiIKKyAgICAgICAgKyAiMTAwMDogXHUwNDQyXHUwNDRiXHUwNDQxXHUwNDRmXHUwNDQ3XHUwNDMwWyA+Pl07XG4iCisgICAgICAgICsgIjIwMDA6IDw8IFx1MDQ0Mlx1MDQ0Ylx1MDQ0MVx1MDQ0Zlx1MDQ0N1x1MDQzMFsgPj5dO1xuIgorICAgICAgICArICIxLDAwMCwwMDA6IFx1MDQzY1x1MDQzOFx1MDQzYlx1MDQzYlx1MDQzOFx1MDQzZVx1MDQzZFsgPj5dO1xuIgorICAgICAgICArICIyLDAwMCwwMDA6IDw8IFx1MDQzY1x1MDQzOFx1MDQzYlx1MDQzYlx1MDQzOFx1MDQzZVx1MDQzZFsgPj5dO1xuIgorICAgICAgICArICIxLDAwMCwwMDAsMDAwOiA9IywjIzA9OyI7CisgICAgLy8gQ2FuIHNvbWVvbmUgc3VwcGx5IG1lIHdpdGggaW5mb3JtYXRpb24gb24gbmVnYXRpdmVzIGFuZCBkZWNpbWFscz8KKyAgICAvLyBIb3cgYWJvdXQgd29yZHMgZm9yIGJpbGxpb25zIGFuZCB0cmlsbGlvbnM/CisKKyAgICAvKioKKyAgICAgKiBTcGVsbG91dCBydWxlcyBmb3IgSGVicmV3LiAgSGVicmV3IGFjdHVhbGx5IGhhcyBpbmZsZWN0ZWQgZm9ybXMgZm9yCisgICAgICogbW9zdCBvZiB0aGUgbG93ZXItb3JkZXIgbnVtYmVycy4gIFRoZSBtYXNjdWxpbmUgZm9ybXMgYXJlIHNob3duCisgICAgICogaGVyZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBoZWJyZXcgPQorICAgICAgICAiemVybyAoaW5jb21wbGV0ZSBkYXRhKTsgXHUwNWQwXHUwNWQ0XHUwNWQzOyBcdTA1ZTlcdTA1ZDJcdTA1ZDlcdTA1ZDlcdTA1ZGQ7IFx1MDVlOVx1MDVkY1x1MDVkNVx1MDVlOVx1MDVkNDtcbiIKKyAgICAgICAgKyAiNDogXHUwNWQwXHUwNWQzXHUwNWQxXHUwNWU2XHUwNWQ0OyBcdTA1ZDdcdTA1ZDJcdTA1ZDVcdTA1ZDlcdTA1ZTlcdTA1ZDQ7IFx1MDVlOVx1MDVlOVx1MDVkNDtcbiIKKyAgICAgICAgKyAiNzogXHUwNWU5XHUwNWQxXHUwNWU2XHUwNWQ0OyBcdTA1ZTlcdTA1ZGVcdTA1ZDVcdTA1ZDJcdTA1ZDQ7IFx1MDVlYVx1MDVlOVx1MDVlNlx1MDVkNDtcbiIKKyAgICAgICAgKyAiMTA6IFx1MDVlNlx1MDVlOVx1MDVkM1x1MDVkNFsgPj5dO1xuIgorICAgICAgICArICIyMDogXHUwNWU2XHUwNWU5XHUwNWQzXHUwNWQ5XHUwNWRkWyA+Pl07XG4iCisgICAgICAgICsgIjMwOiBcdTA1ZTlcdTA1ZGNcdTA1ZDVcdTA1ZTlcdTA1ZDlcdTA1ZGRbID4+XTtcbiIKKyAgICAgICAgKyAiNDA6IFx1MDVkMFx1MDVkM1x1MDVkMVx1MDVlNlx1MDVkOVx1MDVkZFsgPj5dO1xuIgorICAgICAgICArICI1MDogXHUwNWQ3XHUwNWRlXHUwNWQ5XHUwNWU5XHUwNWQ5XHUwNWRkWyA+Pl07XG4iCisgICAgICAgICsgIjYwOiBcdTA1ZTlcdTA1ZTlcdTA1ZDlcdTA1ZGRbID4+XTtcbiIKKyAgICAgICAgKyAiNzA6IFx1MDVlOVx1MDVkMVx1MDVlNlx1MDVkOVx1MDVkZFsgPj5dO1xuIgorICAgICAgICArICI4MDogXHUwNWU5XHUwNWRlXHUwNWQ1XHUwNWQyXHUwNWQ5XHUwNWRkWyA+Pl07XG4iCisgICAgICAgICsgIjkwOiBcdTA1ZWFcdTA1ZTlcdTA1ZTZcdTA1ZDlcdTA1ZGRbID4+XTtcbiIKKyAgICAgICAgKyAiMTAwOiBcdTA1ZGVcdTA1ZDBcdTA1ZDRbID4+XTtcbiIKKyAgICAgICAgKyAiMjAwOiA8PCBcdTA1ZGVcdTA1ZDBcdTA1ZDRbID4+XTtcbiIKKyAgICAgICAgKyAiMTAwMDogXHUwNWQwXHUwNWRjXHUwNWUzWyA+Pl07XG4iCisgICAgICAgICsgIjIwMDA6IDw8IFx1MDVkMFx1MDVkY1x1MDVlM1sgPj5dO1xuIgorICAgICAgICArICIxLDAwMCwwMDA6ID0jLCMjMD0gKGluY29tcGxldGUgZGF0YSk7IjsKKyAgICAvLyBUaGlzIGRhdGEgaXMgd29lZnVsbHkgaW5jb21wbGV0ZS4gIENhbiBzb21lb25lIGZpbGwgbWUgaW4gb24gdGhlCisgICAgLy8gdmFyaW91cyBpbmZsZWN0ZWQgZm9ybXMgb2YgdGhlIG51bWJlcnMsIHdoaWNoIHNlZW0gdG8gYmUgbmVjZXNzYXJ5CisgICAgLy8gdG8gZG8gSGVicmV3IGNvcnJlY3RseT8gIENhbiBzb21vbmUgc3VwcGx5IG1lIHdpdGggZGF0YSBmb3IgdmFsdWVzCisgICAgLy8gZnJvbSAxLDAwMCwwMDAgb24gdXA/ICBXaGF0IGFib3V0IHRoZSB3b3JkIGZvciB6ZXJvPyAgV2hhdCBhYm91dAorICAgIC8vIGluZm9ybWF0aW9uIG9uIG5lZ2F0aXZlcyBhbmQgZGVjaW1hbHM/CisKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIFNpbXBsZSBleGFtcGxlcworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAvKioKKyAgICAgKiBUaGlzIHJ1bGUgc2V0IGFkZHMgYW4gRW5nbGlzaCBvcmRpbmFsIGFiYnJldmlhdGlvbiB0byB0aGUgZW5kIG9mIGEKKyAgICAgKiBudW1iZXIuICBGb3IgZXhhbXBsZSwgMiBpcyBmb3JtYXR0ZWQgYXMgIjJuZCIuICBQYXJzaW5nIGRvZXNuJ3Qgd29yayB3aXRoCisgICAgICogdGhpcyBydWxlIHNldC4gIFRvIHBhcnNlLCB1c2UgRGVjaW1hbEZvcm1hdCBvbiB0aGUgbnVtZXJhbC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBvcmRpbmFsID0KKyAgICAgICAgLy8gdGhpcyBydWxlIHNldCBmb3JtYXRzIHRoZSBudW1lcmFsIGFuZCBjYWxscyAlJWFiYnJldiB0bworICAgICAgICAvLyBzdXBwbHkgdGhlIGFiYnJldmlhdGlvbgorICAgICAgICAiJW1haW46XG4iCisgICAgICAgICsgIiAgICA9IywjIzA9PSUlYWJicmV2PTtcbiIKKyAgICAgICAgLy8gdGhpcyBydWxlIHNldCBzdXBwbGllcyB0aGUgYWJicmV2aWF0aW9uCisgICAgICAgICsgIiUlYWJicmV2OlxuIgorICAgICAgICAgICAgICAgLy8gdGhlIGFiYnJldmlhdGlvbnMuICBFdmVyeXRoaW5nIGZyb20gNCB0byAxOSBlbmRzIGluICJ0aCIKKyAgICAgICAgKyAiICAgIHRoOyBzdDsgbmQ7IHJkOyB0aDtcbiIKKyAgICAgICAgICAgICAgIC8vIGF0IDIwLCB3ZSBiZWdpbiByZXBlYXRpbmcgdGhlIGN5Y2xlIGV2ZXJ5IDEwICgxMyBpcyAiMTN0aCIsCisgICAgICAgICAgICAgICAvLyBidXQgMjMgYW5kIDMzIGFyZSAiMjNyZCIgYW5kICIzM3JkIikgIFdlIGRvIHRoaXMgYnkKKyAgICAgICAgICAgICAgIC8vIGlnbm9yaW5nIGFsbCBidWcgdGhlIG9uZXMgZGlnaXQgaW4gc2VsZWN0aW5nIHRoZSBhYmJyZXZpYXRpb24KKyAgICAgICAgKyAiICAgIDIwOiA+PjtcbiIKKyAgICAgICAgICAgICAgIC8vIGF0IDEwMCwgd2UgcmVwZWF0IHRoZSB3aG9sZSBjeWNsZSBieSBjb25zaWRlcmluZyBvbmx5IHRoZQorICAgICAgICAgICAgICAgLy8gdGVucyBhbmQgb25lcyBkaWdpdHMgaW4gcGlja2luZyBhbiBhYmJyZXZpYXRpb24KKyAgICAgICAgKyAiICAgIDEwMDogPj47XG4iOworCisgICAgLyoqCisgICAgICogVGhpcyBpcyBhIHNpbXBsZSBtZXNzYWdlLWZvcm1hdHRpbmcgZXhhbXBsZS4gIE5vcm1hbGx5IG9uZSB3b3VsZAorICAgICAqIHVzZSBDaG9pY2VGb3JtYXQgYW5kIE1lc3NhZ2VGb3JtYXQgdG8gZG8gc29tZXRoaW5nIHRoaXMgc2ltcGxlLAorICAgICAqIGJ1dCB0aGlzIHNob3dzIGl0IGNvdWxkIGJlIGRvbmUgd2l0aCBSdWxlQmFzZWROdW1iZXJGb3JtYXQgdG9vLgorICAgICAqIEEgbWVzc2FnZS1mb3JtYXR0aW5nIGV4YW1wbGUgdGhhdCBtaWdodCB3b3JrIGJldHRlciB3aXRoCisgICAgICogUnVsZUJhc2VkTnVtYmVyRm9ybWF0IGFwcGVhcnMgbGF0ZXIuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgbWVzc2FnZTEgPQorICAgICAgICAvLyB0aGlzIHJ1bGUgc3Vycm91bmRzIHdoYXRldmVyIHRoZSBvdGhlciBydWxlcyBwcm9kdWNlIHdpdGggdGhlCisgICAgICAgIC8vIHJlc3Qgb2YgdGhlIHNlbnRlbmNlCisgICAgICAgICJ4LjA6IFRoZSBzZWFyY2ggZm91bmQgPDwuO1xuIgorICAgICAgICAvLyB1c2Ugd29yZHMgZm9yIHZhbHVlcyBiZWxvdyAxMCAoYW5kIGNoYW5nZSB0byAiZmlsZSIgZm9yIDEpCisgICAgICAgICsgIm5vIGZpbGVzOyBvbmUgZmlsZTsgdHdvIGZpbGVzOyB0aHJlZSBmaWxlczsgZm91ciBmaWxlczsgZml2ZSBmaWxlcztcbiIKKyAgICAgICAgKyAiICAgIHNpeCBmaWxlczsgc2V2ZW4gZmlsZXM7IGVpZ2h0IGZpbGVzOyBuaW5lIGZpbGVzO1xuIgorICAgICAgICAvLyB1c2UgbnVtZXJhbHMgZm9yIHZhbHVlcyBoaWdoZXIgdGhhbiAxMAorICAgICAgICArICI9IywjIzA9IGZpbGVzOyI7CisKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIEZyYWN0aW9uIGhhbmRsaW5nCisgICAgLy8KKyAgICAvLyBUaGUgbmV4dCBmZXcgZXhhbXBsZXMgc2hvdyBob3cgUnVsZUJhc2VkTnVtYmVyRm9ybWF0IGNhbiBiZSB1c2VkIGZvcgorICAgIC8vIG1vcmUgZmxleGlibGUgaGFuZGxpbmcgb2YgZnJhY3Rpb25zCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgIC8qKgorICAgICAqIFRoaXMgZXhhbXBsZSBmb3JtYXRzIGEgbnVtYmVyIGluIG9uZSBvZiB0aGUgdHdvIHN0eWxlcyBvZnRlbiB1c2VkCisgICAgICogb24gY2hlY2tzLiAgJWRvbGxhcnMtYW5kLWh1bmRyZWR0aHMgZm9ybWF0cyBjZW50cyBhcyBodW5kcmVkdGhzIG9mCisgICAgICogYSBkb2xsYXIgKDIzLjQwIGNvbWVzIG91dCBhcyAidHdlbnR5LXRocmVlIGFuZCA0MC8xMDAgZG9sbGFycyIpLgorICAgICAqICVkb2xsYXJzLWFuZC1jZW50cyBmb3JtYXRzIGluIGRvbGxhcnMgYW5kIGNlbnRzICgyMy40MCBjb21lcyBvdXQgYXMKKyAgICAgKiAidHdlbnR5LXRocmVlIGRvbGxhcnMgYW5kIGZvcnR5IGNlbnRzIikKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBkb2xsYXJzQW5kQ2VudHMgPQorICAgICAgICAvLyB0aGlzIHJ1bGUgc2V0IGZvcm1hdHMgbnVtYmVycyBhcyBkb2xsYXJzIGFuZCBjZW50cworICAgICAgICAiJWRvbGxhcnMtYW5kLWNlbnRzOlxuIgorICAgICAgICAgICAgICAgLy8gaWYgdGhlIHZhbHVlIGlzIDEgb3IgbW9yZSwgcHV0ICJ4eCBkb2xsYXJzIGFuZCB5eSBjZW50cyIuCisgICAgICAgICAgICAgICAvLyB0aGUgImFuZCB5IGNlbnRzIiBwYXJ0IGlzIHN1cHByZXNzZWQgaWYgdGhlIHZhbHVlIGlzIGFuCisgICAgICAgICAgICAgICAvLyBldmVuIG51bWJlciBvZiBkb2xsYXJzCisgICAgICAgICsgIiAgICB4LjA6IDw8IFthbmQgPiUlY2VudHM+XTtcbiIKKyAgICAgICAgICAgICAgIC8vIGlmIHRoZSB2YWx1ZSBpcyBiZXR3ZWVuIDAgYW5kIDEsIHB1dCAieHggY2VudHMiCisgICAgICAgICsgIiAgICAwLng6ID4lJWNlbnRzPjtcbiIKKyAgICAgICAgICAgICAgIC8vIHRoZXNlIHRocmVlIHJ1bGVzIHRha2UgY2FyZSBvZiB0aGUgc2luZ3VsYXIgYW5kIHBsdXJhbAorICAgICAgICAgICAgICAgLy8gZm9ybXMgb2YgImRvbGxhciIgYW5kIHVzZSAlJW1haW4gdG8gZm9ybWF0IHRoZSBudW1iZXIKKyAgICAgICAgKyAiICAgIDA6IHplcm8gZG9sbGFyczsgb25lIGRvbGxhcjsgPSUlbWFpbj0gZG9sbGFycztcbiIKKyAgICAgICAgLy8gdGhlc2UgYXJlIHRoZSByZWd1bGFyIFUuUy4gRW5nbGlzaCBudW1iZXIgc3BlbGxvdXQgcnVsZXMKKyAgICAgICAgKyAiJSVtYWluOlxuIgorICAgICAgICArICIgICAgemVybzsgb25lOyB0d287IHRocmVlOyBmb3VyOyBmaXZlOyBzaXg7IHNldmVuOyBlaWdodDsgbmluZTtcbiIKKyAgICAgICAgKyAiICAgIHRlbjsgZWxldmVuOyB0d2VsdmU7IHRoaXJ0ZWVuOyBmb3VydGVlbjsgZmlmdGVlbjsgc2l4dGVlbjtcbiIKKyAgICAgICAgKyAiICAgICAgICBzZXZlbnRlZW47IGVpZ2h0ZWVuOyBuaW5ldGVlbjtcbiIKKyAgICAgICAgKyAiICAgIDIwOiB0d2VudHlbLT4+XTtcbiIKKyAgICAgICAgKyAiICAgIDMwOiB0aGlydHlbLT4+XTtcbiIKKyAgICAgICAgKyAiICAgIDQwOiBmb3J0eVstPj5dO1xuIgorICAgICAgICArICIgICAgNTA6IGZpZnR5Wy0+Pl07XG4iCisgICAgICAgICsgIiAgICA2MDogc2l4dHlbLT4+XTtcbiIKKyAgICAgICAgKyAiICAgIDcwOiBzZXZlbnR5Wy0+Pl07XG4iCisgICAgICAgICsgIiAgICA4MDogZWlnaHR5Wy0+Pl07XG4iCisgICAgICAgICsgIiAgICA5MDogbmluZXR5Wy0+Pl07XG4iCisgICAgICAgICsgIiAgICAxMDA6IDw8IGh1bmRyZWRbID4+XTtcbiIKKyAgICAgICAgKyAiICAgIDEwMDA6IDw8IHRob3VzYW5kWyA+Pl07XG4iCisgICAgICAgICsgIiAgICAxLDAwMCwwMDA6IDw8IG1pbGxpb25bID4+XTtcbiIKKyAgICAgICAgKyAiICAgIDEsMDAwLDAwMCwwMDA6IDw8IGJpbGxpb25bID4+XTtcbiIKKyAgICAgICAgKyAiICAgIDEsMDAwLDAwMCwwMDAsMDAwOiA8PCB0cmlsbGlvblsgPj5dO1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMCwwMDAsMDAwOiA9IywjIzA9O1xuIgorICAgICAgICAvLyB0aGlzIHJ1bGUgdGFrZXMgY2FyZSBvZiB0aGUgZnJhY3Rpb25hbCBwYXJ0IG9mIHRoZSB2YWx1ZS4gIEl0CisgICAgICAgIC8vIG11bHRpcGxpZXMgdGhlIGZyYWN0aW9uYWwgcGFydCBvZiB0aGUgbnVtYmVyIGJlaW5nIGZvcm1hdHRlZCBieQorICAgICAgICAvLyAxMDAsIGZvcm1hdHMgaXQgd2l0aCAlJW1haW4sIGFuZCB0aGVuIGFkZGVzIHRoZSB3b3JkICJjZW50IiBvcgorICAgICAgICAvLyAiY2VudHMiIHRvIHRoZSBlbmQuICAoVGhlIHRleHQgaW4gYnJhY2tldHMgaXMgb21pdHRlZCBpZiB0aGUKKyAgICAgICAgLy8gbnVtZXJhdG9yIG9mIHRoZSBmcmFjdGlvbiBpcyAxLikKKyAgICAgICAgKyAiJSVjZW50czpcbiIKKyAgICAgICAgKyAiICAgIDEwMDogPCUlbWFpbjwgY2VudFtzXTtcbiIKKworICAgICAgICAvLyB0aGlzIHJ1bGUgc2V0IGZvcm1hdHMgbnVtYmVycyBhcyBkb2xsYXJzIGFuZCBodW5kcmVkdGhzIG9mIGRvbGxhcnMKKyAgICAgICAgKyAiJWRvbGxhcnMtYW5kLWh1bmRyZWR0aHM6XG4iCisgICAgICAgICAgICAgICAvLyB0aGlzIHJ1bGUgdGFrZXMgY2FyZSBvZiB0aGUgZ2VuZXJhbCBzaGVsbCBvZiB0aGUgb3V0cHV0CisgICAgICAgICAgICAgICAvLyBzdHJpbmcuICBXZSBhbHdheXMgc2hvdyB0aGUgY2VudHMsIGV2ZW4gd2hlbiB0aGVyZSBhcmVuJ3QKKyAgICAgICAgICAgICAgIC8vIGFueS4gIEJlY2F1c2Ugb2YgdGhpcywgdGhlIHdvcmQgaXMgYWx3YXlzICJkb2xsYXJzIi0tCisgICAgICAgICAgICAgICAvLyB3ZSBkb24ndCBoYXZlIHRvIHdvcnJ5IGFib3V0IHRoZSBzaW5ndWxhciBmb3JtLiAgV2UgdXNlCisgICAgICAgICAgICAgICAvLyAlJW1haW4gdG8gZm9ybWF0IHRoZSBudW1iZXIgb2YgZG9sbGFycyBhbmQgJSVodW5kcmVkdGhzIHRvCisgICAgICAgICAgICAgICAvLyBmb3JtYXQgdGhlIG51bWJlciBvZiBjZW50cworICAgICAgICArICIgICAgeC4wOiA8JSVtYWluPCBhbmQgPiUlaHVuZHJlZHRocz4vMTAwIGRvbGxhcnM7XG4iCisgICAgICAgIC8vIHRoaXMgcnVsZSBzZXQgZm9ybWF0cyB0aGUgY2VudHMgZm9yICVkb2xsYXJzLWFuZC1odW5kcmVkdGhzLgorICAgICAgICAvLyBJdCBtdWx0aXBsaWVzIHRoZSBmcmFjdGlvbmFsIHBhcnQgb2YgdGhlIG51bWJlciBieSAxMDAgYW5kIGZvcm1hdHMKKyAgICAgICAgLy8gdGhlIHJlc3VsdCB1c2luZyBhIERlY2ltYWxGb3JtYXQgKCIwMCIgdGVsbHMgdGhlIERlY2ltYWxGb3JtYXQgdG8KKyAgICAgICAgLy8gYWx3YXlzIHVzZSB0d28gZGlnaXRzLCBldmVuIGZvciBudW1iZXJzIHVuZGVyIDEwKQorICAgICAgICArICIlJWh1bmRyZWR0aHM6XG4iCisgICAgICAgICsgIiAgICAxMDA6IDwwMDw7XG4iOworCisgICAgLyoqCisgICAgICogVGhpcyBydWxlIHNldCBzaG93cyB0aGUgZnJhY3Rpb25hbCBwYXJ0IG9mIHRoZSBudW1iZXIgYXMgYSBmcmFjdGlvbgorICAgICAqIHdpdGggYSBwb3dlciBvZiAxMCBhcyB0aGUgZGVub21pbmF0b3IuICBTb21lIGxhbmd1YWdlcyBkb24ndCBzcGVsbAorICAgICAqIG91dCB0aGUgZnJhY3Rpb25hbCBwYXJ0IG9mIGEgbnVtYmVyIGFzICJwb2ludCBvbmUgdHdvIHRocmVlLCIgYnV0CisgICAgICogYWx3YXlzIHJlbmRlciBpdCBhcyBhIGZyYWN0aW9uLiAgSWYgd2Ugc3RpbGwgd2FudCB0byB0cmVhdCB0aGUgZnJhY3Rpb25hbAorICAgICAqIHBhcnQgb2YgdGhlIG51bWJlciBhcyBhIGRlY2ltYWwsIHRoZW4gdGhlIGZyYWN0aW9uJ3MgZGVub21pbmF0b3IKKyAgICAgKiBpcyBhbHdheXMgYSBwb3dlciBvZiAxMC4gIFRoaXMgZXhhbXBsZSBkb2VzIHRoYXQ6IDIzLjEyNSBpcyBmb3JtYXR0ZWQKKyAgICAgKiBhcyAidHdlbnR5LXRocmVlIGFuZCBvbmUgaHVuZHJlZCB0d2VudHktZml2ZSB0aG91c2FuZHRocyIgKGFzIG9wcG9zZWQKKyAgICAgKiB0byAidHdlbnR5LXRocmVlIHBvaW50IG9uZSB0d28gZml2ZSIgb3IgInR3ZW50eS10aHJlZSBhbmQgb25lIGVpZ2h0aCIpLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGRlY2ltYWxBc0ZyYWN0aW9uID0KKyAgICAgICAgLy8gdGhlIHJlZ3VsYXIgVS5TLiBFbmdsaXNoIHNwZWxsb3V0IHJ1bGVzLCB3aXRoIG9uZSBkaWZmZXJlbmNlCisgICAgICAgICIlbWFpbjpcbiIKKyAgICAgICAgKyAiICAgIC14OiBtaW51cyA+PjtcbiIKKyAgICAgICAgICAgICAgIC8vIHRoZSBkaWZmZXJlbmNlLiAgVGhpcyBydWxlIHVzZXMgJSVmcmFjIHRvIHNob3cgdGhlIGZyYWN0aW9uYWwKKyAgICAgICAgICAgICAgIC8vIHBhcnQgb2YgdGhlIG51bWJlci4gIFRleHQgaW4gYnJhY2tldHMgaXMgb21pdHRlZCB3aGVuIHRoZQorICAgICAgICAgICAgICAgLy8gdmFsdWUgaXMgYmV0d2VlbiAwIGFuZCAxIChjYXVzaW5nIDAuMyB0byBjb21lIG91dCBhcyAidGhyZWUKKyAgICAgICAgICAgICAgIC8vIHRlbnRocyIgaW5zdGVhZCBvZiAiemVybyBhbmQgdGhyZWUgdGVudGhzIikuCisgICAgICAgICsgIiAgICB4Lng6IFs8PCBhbmQgXT4lJWZyYWM+O1xuIgorICAgICAgICArICIgICAgemVybzsgb25lOyB0d287IHRocmVlOyBmb3VyOyBmaXZlOyBzaXg7IHNldmVuOyBlaWdodDsgbmluZTtcbiIKKyAgICAgICAgKyAiICAgIHRlbjsgZWxldmVuOyB0d2VsdmU7IHRoaXJ0ZWVuOyBmb3VydGVlbjsgZmlmdGVlbjsgc2l4dGVlbjtcbiIKKyAgICAgICAgKyAiICAgICAgICBzZXZlbnRlZW47IGVpZ2h0ZWVuOyBuaW5ldGVlbjtcbiIKKyAgICAgICAgKyAiICAgIHR3ZW50eVstPj5dO1xuIgorICAgICAgICArICIgICAgMzA6IHRoaXJ0eVstPj5dO1xuIgorICAgICAgICArICIgICAgNDA6IGZvcnR5Wy0+Pl07XG4iCisgICAgICAgICsgIiAgICA1MDogZmlmdHlbLT4+XTtcbiIKKyAgICAgICAgKyAiICAgIDYwOiBzaXh0eVstPj5dO1xuIgorICAgICAgICArICIgICAgNzA6IHNldmVudHlbLT4+XTtcbiIKKyAgICAgICAgKyAiICAgIDgwOiBlaWdodHlbLT4+XTtcbiIKKyAgICAgICAgKyAiICAgIDkwOiBuaW5ldHlbLT4+XTtcbiIKKyAgICAgICAgKyAiICAgIDEwMDogPDwgaHVuZHJlZFsgPj5dO1xuIgorICAgICAgICArICIgICAgMTAwMDogPDwgdGhvdXNhbmRbID4+XTtcbiIKKyAgICAgICAgKyAiICAgIDEsMDAwLDAwMDogPDwgbWlsbGlvblsgPj5dO1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMDogPDwgYmlsbGlvblsgPj5dO1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMCwwMDA6IDw8IHRyaWxsaW9uWyA+Pl07XG4iCisgICAgICAgICsgIiAgICAxLDAwMCwwMDAsMDAwLDAwMCwwMDA6ID0jLCMjMD07XG4iCisgICAgICAgIC8vIHRoZSBydWxlIHNldCB0aGF0IGZvcm1hdHMgdGhlIGZyYWN0aW9uYWwgcGFydCBvZiB0aGUgbnVtYmVyLgorICAgICAgICAvLyBUaGUgcnVsZSB0aGF0IGlzIHVzZWQgaXMgdGhlIG9uZSB0aGF0LCB3aGVuIGl0cyBiYWFzZSB2YWx1ZSBpcworICAgICAgICAvLyBtdWx0aXBsaWVkIGJ5IHRoZSBmcmFjdGlvbmFsIHBhcnQgb2YgdGhlIG51bWJlciBiZWluZyBmb3JtYXR0ZWQsCisgICAgICAgIC8vIHByb2R1Y2VzIHRoZSByZXN1bHQgY2xvc2VzdCB0byB6ZXJvLiAgVGh1cywgdGhlIGJhc2UgdmFsdWVzIGFyZQorICAgICAgICAvLyBwcm9zcGVjdGl2ZSBkZW5vbWluYXRvcnMgb2YgdGhlIGZyYWN0aW9uLiAgVGhlIDw8IG1hcmtzIHRoZSBwbGFjZQorICAgICAgICAvLyB3aGVyZSB0aGUgbnVtZXJhdG9yIG9mIHRoZSBmcmFjdGlvbiAodGhlIHJlc3VsdCBvZiBtdWx0aXBseWluZyB0aGUKKyAgICAgICAgLy8gZnJhY3Rpb25hbCBwYXJ0IG9mIHRoZSBudW1iZXIgYnkgdGhlIHJ1bGUncyBiYXNlIHZhbHVlKSBpcworICAgICAgICAvLyBwbGFjZWQuICBUZXh0IGluIGJyYWNrZXRzIGlzIG9taXR0ZWQgd2hlbiB0aGUgbnVtZXJhdG9yIGlzIDEsIGdpdmluZworICAgICAgICAvLyB1cyB0aGUgc2luZ3VsYXIgYW5kIHBsdXJhbCBmb3JtcyBvZiB0aGUgd29yZHMuCisgICAgICAgIC8vIFtJbiBsYW5ndWFnZXMgd2hlcmUgdGhlIHNpbmd1bGFyIGFuZCBwbHVyYWwgYXJlIGNvbXBsZXRlbHkgZGlmZmVyZW50CisgICAgICAgIC8vIHdvcmRzLCB0aGUgcnVsZSBjYW4ganVzdCBiZSBzdGF0ZWQgdHdpY2U6IHRoZSBzZWNvbmQgdGltZSB3aXRoCisgICAgICAgIC8vIHRoZSBwbHVyYWwgZm9ybS5dCisgICAgICAgICsgIiUlZnJhYzpcbiIKKyAgICAgICAgKyAiICAgIDEwOiA8PCB0ZW50aFtzXTtcbiIKKyAgICAgICAgKyAiICAgIDEwMDogPDwgaHVuZHJlZHRoW3NdO1xuIgorICAgICAgICArICIgICAgMTAwMDogPDwgdGhvdXNhbmR0aFtzXTtcbiIKKyAgICAgICAgKyAiICAgIDEwLDAwMDogPDwgdGVuLXRob3VzYW5kdGhbc107XG4iCisgICAgICAgICsgIiAgICAxMDAsMDAwOiA8PCBodW5kcmVkLXRob3VzYW5kdGhbc107XG4iCisgICAgICAgICsgIiAgICAxLDAwMCwwMDA6IDw8IG1pbGxpb250aFtzXTsiOworCisgICAgLyoqCisgICAgICogTnVtYmVyIHdpdGggY2xvc2VzdCBmcmFjdGlvbi4gIFRoaXMgZXhhbXBsZSBmb3JtYXRzIGEgdmFsdWUgdXNpbmcKKyAgICAgKiBudW1lcmFscywgYnV0IHNob3dzIHRoZSBmcmFjdGlvbmFsIHBhcnQgYXMgYSByYXRpbyAoZnJhY3Rpb24pIHJhdGhlcgorICAgICAqIHRoYW4gYSBkZWNpbWFsLiAgVGhlIGZyYWN0aW9uIGFsd2F5cyBoYXMgYSBkZW5vbWluYXRvciBiZXR3ZWVuIDIgYW5kIDEwLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNsb3Nlc3RGcmFjdGlvbiA9CisgICAgICAgICIlbWFpbjpcbiIKKyAgICAgICAgICAgICAgIC8vIHRoaXMgcnVsZSBmb3JtYXRzIHRoZSBudW1iZXIgaWYgaXQncyAxIG9yIG1vcmUuICBJdCBmb3JtYXRzCisgICAgICAgICAgICAgICAvLyB0aGUgaW50ZWdyYWwgcGFydCB1c2luZyBhIERlY2ltYWxGb3JtYXQgKCIjLCMjMCIgcHV0cworICAgICAgICAgICAgICAgLy8gdGhvdXNhbmRzIHNlcGFyYXRvcnMgaW4gdGhlIHJpZ2h0IHBsYWNlcykgYW5kIHRoZSBmcmFjdGlvbmFsCisgICAgICAgICAgICAgICAvLyBwYXJ0IHVzaW5nICUlZnJhYy4gIElmIHRoZXJlIGlzIG5vIGZyYWN0aW9uYWwgcGFydCwgaXQKKyAgICAgICAgICAgICAgIC8vIGp1c3Qgc2hvd3MgdGhlIGludGVncmFsIHBhcnQuCisgICAgICAgICsgIiAgICB4LjA6IDwjLCMjMDxbID4lJWZyYWM+XTtcbiIKKyAgICAgICAgICAgICAgIC8vIHRoaXMgcnVsZSBmb3JtYXRzIHRoZSBudW1iZXIgaWYgaXQncyBiZXR3ZWVuIDAgYW5kIDEuICBJdAorICAgICAgICAgICAgICAgLy8gc2hvd3Mgb25seSB0aGUgZnJhY3Rpb25hbCBwYXJ0ICgwLjUgc2hvd3MgdXAgYXMgIjEvMiwiIG5vdAorICAgICAgICAgICAgICAgLy8gIjAgMS8yIikKKyAgICAgICAgKyAiICAgIDAueDogPiUlZnJhYz47XG4iCisgICAgICAgIC8vIHRoZSBmcmFjdGlvbiBydWxlIHNldC4gIFRoaXMgd29ya3MgdGhlIHNhbWUgd2F5IGFzIHRoZSBvbmUgaW4gdGhlCisgICAgICAgIC8vIHByZWNlZGluZyBleGFtcGxlOiBXZSBtdWx0aXBseSB0aGUgZnJhY3Rpb25hbCBwYXJ0IG9mIHRoZSBudW1iZXIKKyAgICAgICAgLy8gYmVpbmcgZm9ybWF0dGVkIGJ5IGVhY2ggcnVsZSdzIGJhc2UgdmFsdWUgYW5kIHVzZSB0aGUgcnVsZSB0aGF0CisgICAgICAgIC8vIHByb2R1Y2VzIHRoZSByZXN1bHQgY2xvc2VzdCB0byAwIChvciB0aGUgZmlyc3QgcnVsZSB0aGF0IHByb2R1Y2VzIDApLgorICAgICAgICAvLyBTaW5jZSB3ZSBvbmx5IHByb3ZpZGUgcnVsZXMgZm9yIHRoZSBudW1iZXJzIGZyb20gMiB0byAxMCwgd2Uga25vdworICAgICAgICAvLyB3ZSdsbCBnZXQgYSBmcmFjdGlvbiB3aXRoIGEgZGVub21pbmF0b3IgYmV0d2VlbiAyIGFuZCAxMC4KKyAgICAgICAgLy8gIjwwPCIgY2F1c2VzIHRoZSBudW1lcmF0b3Igb2YgdGhlIGZyYWN0aW9uIHRvIGJlIGZvcm1hdHRlZAorICAgICAgICAvLyB1c2luZyBudW1lcmFscworICAgICAgICArICIlJWZyYWM6XG4iCisgICAgICAgICsgIiAgICAyOiAxLzI7XG4iCisgICAgICAgICsgIiAgICAzOiA8MDwvMztcbiIKKyAgICAgICAgKyAiICAgIDQ6IDwwPC80O1xuIgorICAgICAgICArICIgICAgNTogPDA8LzU7XG4iCisgICAgICAgICsgIiAgICA2OiA8MDwvNjtcbiIKKyAgICAgICAgKyAiICAgIDc6IDwwPC83O1xuIgorICAgICAgICArICIgICAgODogPDA8Lzg7XG4iCisgICAgICAgICsgIiAgICA5OiA8MDwvOTtcbiIKKyAgICAgICAgKyAiICAgIDEwOiA8MDwvMTA7XG4iOworCisgICAgLyoqCisgICAgICogQW1lcmljYW4gc3RvY2stcHJpY2UgZm9ybWF0dGluZy4gIE5vbi1pbnRlZ3JhbCBzdG9jayBwcmljZXMgYXJlIHN0aWxsCisgICAgICogZ2VuZXJhbGx5IHNob3duIGluIGVpZ2h0aHMgb3Igc2l4dGVlbnRocyBvZiBkb2xsYXJzIGluc3RlYWQgb2YgZG9sbGFycworICAgICAqIGFuZCBjZW50cy4gIFRoaXMgZXhhbXBsZSBmb3JtYXRzIHN0b2NrIHByaWNlcyBpbiB0aGlzIHdheSBpZiBwb3NzaWJsZSwKKyAgICAgKiBhbmQgaW4gZG9sbGFycyBhbmQgY2VudHMgaWYgbm90LgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIHN0b2NrID0KKyAgICAgICAgIiVtYWluOlxuIgorICAgICAgICAgICAgICAgLy8gdGhpcyBydWxlIGZvcm1hdHMgdGhlIGludGVncmFsIHBhcnQgb2YgdGhlIG51bWJlciBpbiBudW1lcmFscworICAgICAgICAgICAgICAgLy8gYW5kIChpZiBuZWNlc3NhcnkpIHRoZSBmcmFjdGlvbmFsIHBhcnQgdXNpbmcgJSVmcmFjMQorICAgICAgICArICIgICAgeC4wOiA8IywjIzA8Wz4lJWZyYWMxPl07XG4iCisgICAgICAgICAgICAgICAvLyB0aGlzIHJ1bGUgaXMgdXNlZCBmb3IgdmFsdWVzIGJldHdlZW4gMCBhbmQgMSBhbmQgb21pdHMgdGhlCisgICAgICAgICAgICAgICAvLyBpbnRlZ3JhbCBwYXJ0CisgICAgICAgICsgIiAgICAwLng6ID4lJWZyYWMyPjtcbiIKKyAgICAgICAgLy8gdGhpcyBydWxlIHNldCBpcyB1c2VkIHRvIGZvcm1hdCB0aGUgZnJhY3Rpb25hbCBwYXJ0IG9mIHRoZSBudW1iZXIgd2hlbgorICAgICAgICAvLyB0aGVyZSdzIGFuIGludGVncmFsIHBhcnQgYmVmb3JlIGl0IChhZ2Fpbiwgd2UgdHJ5IGFsbCBkZW5vbWluYXRvcnMKKyAgICAgICAgLy8gYW5kIHVzZSB0aGUgImJlc3QiIG9uZSkKKyAgICAgICAgKyAiJSVmcmFjMTpcbiIKKyAgICAgICAgICAgICAgIC8vIGZvciBldmVuIG11bHRpcGxlcyBvZiAxLzQsIGZvcm1hdCB0aGUgZnJhY3Rpb24gdXNpbmcgdGhlCisgICAgICAgICAgICAgICAvLyB0eXBvZ3JhcGhlcidzIGZyYWN0aW9ucworICAgICAgICArICIgICAgNDogPCUlcXVhcnRlcnM8O1xuIgorICAgICAgICAgICAgICAgLy8gZm9ybWF0IHRoZSB2YWx1ZSBhcyBhIG51bWJlciBvZiBlaWdodGhzLCBzaXh0ZWVudGhzLCBvcgorICAgICAgICAgICAgICAgLy8gdGhpcnR5LXNlY29uZHMsIHdoaWNoZXZlciBwcm9kdWNlcyB0aGUgbW9zdCBhY2N1cmF0ZSB2YWx1ZS4KKyAgICAgICAgICAgICAgIC8vIFRoZSBhcG9zdHJvcGhlIGF0IHRoZSBmcm9udCBvZiB0aGVzZSBydWxlcyBpcyBpZ25vcmVkLCBidXQKKyAgICAgICAgICAgICAgIC8vIGl0IG1ha2VzIHRoZSBzcGFjZSB0aGF0IGZvbGxvd3MgaXQgc2lnbmlmaWNhbnQuICBUaGlzIHB1dHMgYQorICAgICAgICAgICAgICAgLy8gc3BhY2UgYmV0d2VlbiB0aGUgdmFsdWUncyBpbnRlZ3JhbCBhbmQgZnJhY3Rpb25hbCBwYXJ0cyBzbworICAgICAgICAgICAgICAgLy8geW91IGNhbiByZWFkIGl0CisgICAgICAgICsgIiAgICA4OiAnIDwwPC84O1xuIgorICAgICAgICArICIgICAgMTY6ICcgPDA8LzE2O1xuIgorICAgICAgICArICIgICAgMzI6ICcgPDA8LzMyO1xuIgorICAgICAgICAgICAgICAgLy8gaWYgd2UgY2FuJ3QgcmVhc29uYWJseSBmb3JtYXQgdGhlIG51bWJlciBpbiBwb3dlcnMgb2YgMiwKKyAgICAgICAgICAgICAgIC8vIHRoZW4gc2hvdyBpdCBhcyBkb2xsYXJzIGFuZCBjZW50cworICAgICAgICArICIgICAgMTAwOiAuPDAwPDtcbiIKKyAgICAgICAgLy8gdGhpcyBydWxlIHNldCBpcyB1c2VkIHdoZW4gdGhlIGZyYWN0aW9uYWwgcGFydCBvZiB0aGUgdmFsdWUgc3RhbmRzCisgICAgICAgIC8vIGFsb25lCisgICAgICAgICsgIiUlZnJhYzI6XG4iCisgICAgICAgICsgIiAgICA0OiA8JSVxdWFydGVyczw7XG4iCisgICAgICAgICAgICAgICAvLyBmb3IgZnJhY3Rpb25zIHRoYXQgd2UgY2FuJ3Qgc2hvdyB1c2luZyB0eXBvZ3JhcGhlcidzIGZyYWN0aW9ucywKKyAgICAgICAgICAgICAgIC8vIHdlIGRvbid0IGhhdmUgdG8gcHV0IGEgc3BhY2UgYmVmb3JlIHRoZSBmcmFjdGlvbgorICAgICAgICArICIgICAgODogPDA8Lzg7XG4iCisgICAgICAgICsgIiAgICAxNjogPDA8LzE2O1xuIgorICAgICAgICArICIgICAgMzI6IDwwPC8zMjtcbiIKKyAgICAgICAgICAgICAgIC8vIGJ1dCBkb2xsYXJzIGFuZCBjZW50cyBsb29rIGJldHRlciB3aXRoIGEgbGVhZGluZyAwCisgICAgICAgICsgIiAgICAxMDA6IDAuPDAwPDtcbiIKKyAgICAgICAgLy8gdGhpcyBydWxlIHNldCBmb3JtYXRzIDEvNCwgMS8yLCBhbmQgMy80IHVzaW5nIHR5cG9ncmFwaGVyJ3MgZnJhY3Rpb25zCisgICAgICAgICsgIiUlcXVhcnRlcnM6XG4iCisgICAgICAgICsgIiAgICA7IFx1MDBiYzsgXHUwMGJkOyBcdTAwYmU7XG4iCisgICAgICAgIC8vIHRoZXJlIGFyZSB0aGUgbGVuaWVudC1wYXJzZSBydWxlcy4gIFRoZXNlIGFsbG93IHRoZSB1c2VyIHRvIHR5cGUKKyAgICAgICAgLy8gIjEvNCwiICIxLzIsIiBhbmQgIjMvNCIgaW5zdGVhZCBvZiB0aGVpciB0eXBvZ3JhcGhpY2FsIGNvdW50ZXJwYXJ0cworICAgICAgICAvLyBhbmQgc3RpbGwgaGF2ZSB0aGVtIGJlIHVuZGVyc3Rvb2QgYnkgdGhlIGZvcm1hdHRlcgorICAgICAgICArICIlJWxlbmllbnQtcGFyc2U6XG4iCisgICAgICAgICsgIiAgICAmICcxLzQnICwgXHUwMGJjXG4iCisgICAgICAgICsgIiAgICAmICcxLzInICwgXHUwMGJkXG4iCisgICAgICAgICsgIiAgICAmICczLzQnICwgXHUwMGJlXG47IjsKKworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gQ2hhbmdpbmcgZGltZW5zaW9ucworICAgIC8vCisgICAgLy8gVGhlIG5leHQgZmV3IGV4YW1wbGVzIGRlbW9uc3RyYXRlIHVzaW5nIGEgUnVsZUJhc2VkTnVtYmVyRm9ybWF0IHRvCisgICAgLy8gY2hhbmdlIHRoZSB1bml0cyBhIHZhbHVlIGlzIGRlbm9taW5hdGVkIGluIGRlcGVuZGluZyBvbiBpdHMgbWFnbml0dWRlCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgIC8qKgorICAgICAqIFRoZSBleGFtcGxlIHNob3dzIGxhcmdlIG51bWJlcnMgdGhlIHdheSB0aGV5IG9mdGVuIGFwcGVhciBpcyBud2VzcGFwZXJzOgorICAgICAqIDEsMjAwLDAwMCBpcyBmb3JtYXR0ZWQgYXMgIjEuMiBtaWxsaW9uIi4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBhYmJFbmdsaXNoID0KKyAgICAgICAgIj0jLCMjMD07XG4iCisgICAgICAgIC8vIHRoaXMgaXMgZmFpcmx5IHNlbGYtZXhwbGFuYXRvcnksIGJ1dCBub3RlIHRoYXQgdGhlIDw8IHN1YnN0aXR1dGlvbgorICAgICAgICAvLyBjYW4gc2hvdyB0aGUgZnJhY3Rpb25hbCBwYXJ0IG9mIHRoZSBzdWJzdGl0dXRpb24gdmFsdWUgaWYgdGhlIHVzZXIKKyAgICAgICAgLy8gd2FudHMgaXQKKyAgICAgICAgKyAiMSwwMDAsMDAwOiA8IyMwLiMjIzwgbWlsbGlvbjtcbiIKKyAgICAgICAgKyAiMSwwMDAsMDAwLDAwMDogPCMjMC4jIyM8IGJpbGxpb247XG4iCisgICAgICAgICsgIjEsMDAwLDAwMCwwMDAsMDAwOiA8IyMwLiMjIzwgdHJpbGxpb247XG4iOworCisgICAgLyoqCisgICAgICogVGhpcyBleGFtcGxlIHRha2VzIGEgbnVtYmVyIG9mIG1ldGVycyBhbmQgZm9ybWF0cyBpdCBpbiB3aGF0ZXZlciB1bml0CisgICAgICogd2lsbCBwcm9kdWNlIGEgbnVtYmVyIHdpdGggZnJvbSBvbmUgdG8gdGhyZWUgZGlnaXRzIGJlZm9yZSB0aGUgZGVjaW1hbAorICAgICAqIHBvaW50LiAgRm9yIGV4YW1wbGUsIDIzMCwwMDAgaXMgZm9ybWF0dGVkIGFzICIyMzAga20iLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIHVuaXRzID0KKyAgICAgICAgIiVtYWluOlxuIgorICAgICAgICAgICAgICAgLy8gZm9yIHZhbHVlcyBiZXR3ZWVuIDAgYW5kIDEsIGRlbGVnYXRlIHRvICUlc21hbGwKKyAgICAgICAgKyAiICAgIDAueDogPiUlc21hbGw+O1xuIgorICAgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlLCBzaG93IGJldHdlZW4gMyBhbmQgNiBzaWduaWZpY2FudCBkaWdpdHMgb2YgdGhlIHZhbHVlCisgICAgICAgICAgICAgICAvLyBhbG9uZyB3aXRoIHRoZSBtb3N0IGFwcHJvcHJpYXRlIHVuaXQKKyAgICAgICAgKyAiICAgIDA6ID0jIzAuIyMjPSBtO1xuIgorICAgICAgICArICIgICAgMSwwMDA6IDwjIzAuIyMjPCBrbTtcbiIKKyAgICAgICAgKyAiICAgIDEsMDAwLDAwMDogPCMjMC4jIyM8IE1tO1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMDogPCMjMC4jIyM8IEdtO1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMCwwMDA6IDwjLCMjMC4jIyM8IFRtO1xuIgorICAgICAgICAvLyAlJXNtYWxsIGZvcm1hdHMgdGhlIG51bWJlciB3aGVuIGl0J3MgbGVzcyB0aGVuIDEuICBJdCBtdWx0aXBsaWVzIHRoZQorICAgICAgICAvLyB2YWx1ZSBieSBvbmUgYmlsbGlvbiwgYW5kIHRoZW4gdXNlcyAlJXNtYWxsMiB0byBhY3R1YWxseSBkbyB0aGUKKyAgICAgICAgLy8gZm9ybWF0dGluZy4KKyAgICAgICAgKyAiJSVzbWFsbDpcbiIKKyAgICAgICAgKyAiICAgIDEsMDAwLDAwMCwwMDAsMDAwOiA8JSVzbWFsbDI8O1xuIgorICAgICAgICAvLyB0aGlzIHJ1bGUgc2V0IGFjdHVhbGx5IGZvcm1hdHMgc21hbGwgdmFsdWVzLiAgJSVzbWFsbCBwYXNzZXMgdGhpcworICAgICAgICAvLyBydWxlIHNldCBhIG51bWJlciBvZiBwaWNvbWV0ZXJzLCBhbmQgaXQgdGFrZXMgY2FyZSBvZiBzY2FsaW5nIHVwIGFzCisgICAgICAgIC8vIGFwcHJvcHJpYXRlIGluIGV4YWN0bHkgdGhlIHNhbWUgd2F5ICVtYWluIGRvZXMgKHdlIGNhbid0IG5vcm1hbGx5CisgICAgICAgIC8vIGhhbmRsZSBmcmFjdGlvbmFsIHZhbHVlcyB0aGlzIHdheTogaGVyZSwgd2UncmUgY29uY2VybmVkIGFib3V0CisgICAgICAgIC8vIG1hZ25pdHVkZTsgbW9zdCBvZiB0aGUgdGltZSwgd2UncmUgY29uY2VybmVkIGFib3V0IHByZWNzaW9uKQorICAgICAgICArICIlJXNtYWxsMjpcbiIKKyAgICAgICAgKyAiICAgIDA6ID0jIzA9IHBtO1xuIgorICAgICAgICArICIgICAgMSwwMDA6IDwjIzAuIyMjPCBubTtcbiIKKyAgICAgICAgKyAiICAgIDEsMDAwLDAwMDogPCMjMC4jIyM8IFx1MDBiNW07XG4iCisgICAgICAgICsgIiAgICAxLDAwMCwwMDAsMDAwOiA8IyMwLiMjIzwgbW07XG4iOworCisgICAgLyoqCisgICAgICogQSBtb3JlIGNvbXBsaWNhdGVkIG1lc3NhZ2UtZm9ybWF0dGluZyBleGFtcGxlLiAgSGVyZSwgaW4gYWRkaXRpb24gdG8KKyAgICAgKiBoYW5kbGluZyB0aGUgc2luZ3VsYXIgYW5kIHBsdXJhbCB2ZXJzaW9ucyBvZiB0aGUgd29yZCwgdGhlIHZhbHVlIGlzCisgICAgICogZGVub21pbmF0ZWQgaW4gYnl0ZXMsIGtpbG9ieXRlcywgb3IgbWVnYWJ5dGVzIGRlcGVuZGluZyBvbiBpdHMgbWFnbml0dWRlLgorICAgICAqIEFsc28gbm90aWNlIHRoYXQgaXQgY29ycmVjdGx5IHRyZWF0cyBhIGtpbG9ieXRlIGFzIDEsMDI0IGJ5dGVzIChub3QgMSwwMDApLAorICAgICAqIGFuZCBhIG1lZ2FieXRlIGFzIDEsMDI0IGtpbG9ieXRlcyAobm90IDEsMDAwKS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBtZXNzYWdlMiA9CisgICAgICAgIC8vIHRoaXMgcnVsZSBzdXBwbGllcyB0aGUgc2hlbGwgb2YgdGhlIHNlbnRlbmNlCisgICAgICAgICJ4LjA6IFRoZXJlIDw8IGZyZWUgc3BhY2Ugb24gdGhlIGRpc2suO1xuIgorICAgICAgICAvLyBoYW5kbGUgc2luZ3VsYXIgYW5kIHBsdXJhbCBmb3JtcyBvZiAiYnl0ZSIgKGFuZCBmb3JtYXQgMCBhcworICAgICAgICAvLyAiVGhlcmUgaXMgbm8gZnJlZSBzcGFjZS4uLiIpCisgICAgICAgICsgIjA6IGlzIG5vO1xuIgorICAgICAgICArICJpcyBvbmUgYnl0ZSBvZjtcbiIKKyAgICAgICAgKyAiYXJlID0wPSBieXRlcyBvZjtcbiIKKyAgICAgICAgLy8gZm9yIHZhbHVlcyBhYm92ZSAxLDAyNCwgZm9ybWF0IHRoZSBudW1iZXIgaW4gSyAoc2luY2UgIksiIGlzIHVzdWFsbHkKKyAgICAgICAgLy8gcHJvbW91bmNlZCAiSyIgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0J3Mgc2luZ3VsYXIgb3IgcGx1cmFsLCB3ZQorICAgICAgICAvLyBkb24ndCB3b3JyeSBhYm91dCB0aGUgcGx1cmFsIGZvcm0pLiAgVGhlICIvMTAyNCIgaGVyZSBjYXVzZXMgdXMgdG8KKyAgICAgICAgLy8gdHJlYXQgYSBLIGFzIDEsMDI0IGJ5dGVzIHJhdGhlciB0aGFuIDEsMDAwIGJ5dGVzLgorICAgICAgICArICIxMDI0LzEwMjQ6IGlzIDwwPEsgb2Y7XG4iCisgICAgICAgIC8vIGZvciB2YWx1ZXMgYWJvdXQgMSwwNDgsNTc2LCBmb3JtYXQgdGhlIG51bWJlciBpbiBNYi4gIFNpbmNlICJNYiIgaXMKKyAgICAgICAgLy8gdXN1YWxseSBwcm9tb3VuY2VkICJtZWciIGluIHNpbmd1bGFyIGFuZCAibWVncyIgaW4gcGx1cmFsLCB3ZSBkbyBoYXZlCisgICAgICAgIC8vIGJvdGggc2luZ3VsYXIgYW5kIHBsdXJhbCBmb3Jtcy4gIEFnYWluLCBub3RpY2Ugd2UgdHJlYXQgYSBtZWdhYnl0ZQorICAgICAgICAvLyBhcyAxLDAyNCBraWxvYnl0ZXMuCisgICAgICAgICsgIjEsMDQ4LDU3Ni8xMDI0OiBpcyAxIE1iIG9mO1xuIgorICAgICAgICArICIyLDA5NywxNTIvMTAyNDogYXJlIDwwPCBNYiBvZjsiOworCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBBbHRlcm5hdGUgcmFkaWNlcworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAvKioKKyAgICAgKiBUaGlzIGV4YW1wbGUgZm9ybWF0cyBhIG51bWJlciBpbiBkb3plbnMgYW5kIGdyb3NzLiAgVGhpcyBpcyBpbnRlbmRlZCB0bworICAgICAqIGRlbW9uc3RyYXRlIGhvdyB0aGlzIHJ1bGUgc2V0IGNhbiBiZSB1c2VkIHRvIGZvcm1hdCBudW1iZXJzIGluIHN5c3RlbXMKKyAgICAgKiBvdGhlciB0aGFuIGJhc2UgMTAuICBUaGUgIi8xMiIgYWZ0ZXIgdGhlIHJ1bGVzJyBiYXNlIHZhbHVlcyBjb250cm9scyB0aGlzLgorICAgICAqIEFsc28gbm90aWNlIHRoYXQgdGhlIGJhc2UgZG9lc24ndCBoYXZlIHRvIGJlIGNvbnNpc3RlbnQgdGhyb3VnaG91dCB0aGUKKyAgICAgKiB3aG9sZSBydWxlIHNldDogd2UgZ28gYmFjayB0byBiYXNlIDEwIGZvciB2YWx1ZXMgb3ZlciAxLDAwMC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBkb3plbnMgPQorICAgICAgICAvLyB3b3JkcyBmb3IgbnVtYmVycy4uLgorICAgICAgICAiemVybzsgb25lOyB0d287IHRocmVlOyBmb3VyOyBmaXZlOyBzaXg7XG4iCisgICAgICAgICsgInNldmVuOyBlaWdodDsgbmluZTsgdGVuOyBlbGV2ZW47XG4iCisgICAgICAgIC8vIGZvcm1hdCB2YWx1ZXMgb3ZlciAxMiBpbiBkb3plbnMKKyAgICAgICAgKyAiMTIvMTI6IDw8IGRvemVuWyBhbmQgPj5dO1xuIgorICAgICAgICAvLyBmb3JtYXQgdmFsdWVzIG92ZXIgMTQ0IGluIGdyb3NzCisgICAgICAgICsgIjE0NC8xMjogPDwgZ3Jvc3NbLCA+Pl07XG4iCisgICAgICAgIC8vIGZvcm1hdCB2YWx1ZXMgb3ZlciAxLDAwMCBpbiB0aG91c2FuZHMKKyAgICAgICAgKyAiMTAwMDogPDwgdGhvdXNhbmRbLCA+Pl07XG4iCisgICAgICAgIC8vIG92ZXJmbG93IHJ1bGUuICBGb3JtYXQgdmFsdWVzIG92ZXIgMTAsMDAwIGluIG51bWVyYWxzCisgICAgICAgICsgIjEwLDAwMDogPSMsIyMwPTtcbiI7CisKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIE1ham9yIGFuZCBtaW5vciB1bml0cworICAgIC8vCisgICAgLy8gVGhlc2UgZXhhbXBsZXMgc2hvdyBob3cgYSBzaW5nbGUgdmFsdWUgY2FuIGJlIGRpdmlkZWQgdXAgaW50byBtYWpvcgorICAgIC8vIGFuZCBtaW5vciB1bml0cyB0aGF0IGRvbid0IHJlbGF0ZSB0byBlYWNoIG90aGVyIGJ5IGEgZmFjdG9yIG9mIDEwLgorICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAvKioKKyAgICAgKiBUaGlzIGV4YW1wbGUgZm9ybWF0cyBhIG51bWJlciBvZiBzZWNvbmRzIGluIHNleGFnZXNpbWFsIG5vdGF0aW9uCisgICAgICogKGkuZS4sIGhvdXJzLCBtaW51dGVzLCBhbmQgc2Vjb25kcykuICAld2l0aC13b3JkcyBmb3JtYXRzIGl0IHdpdGgKKyAgICAgKiB3b3JkcyAoMzc0MCBpcyAiMSBob3VyLCAyIG1pbnV0ZXMsIDIwIHNlY29uZHMiKSBhbmQgJWluLW51bWVyYWxzCisgICAgICogZm9ybWF0cyBpdCBlbnRpcmVseSBpbiBudW1lcmFscyAoMzc0MCBpcyAiMTowMjoyMCIpLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGR1cmF0aW9uSW5TZWNvbmRzID0KKyAgICAgICAgLy8gbWFpbiBydWxlIHNldCBmb3IgZm9ybWF0dGluZyB3aXRoIHdvcmRzCisgICAgICAgICIld2l0aC13b3JkczpcbiIKKyAgICAgICAgICAgICAgIC8vIHRha2UgY2FyZSBvZiBzaW5ndWxhciBhbmQgcGx1cmFsIGZvcm1zIG9mICJzZWNvbmQiCisgICAgICAgICsgIiAgICAwIHNlY29uZHM7IDEgc2Vjb25kOyA9MD0gc2Vjb25kcztcbiIKKyAgICAgICAgICAgICAgIC8vIHVzZSAlJW1pbiB0byBmb3JtYXQgdmFsdWVzIGdyZWF0ZXIgdGhhbiA2MCBzZWNvbmRzCisgICAgICAgICsgIiAgICA2MC82MDogPCUlbWluPFssID4+XTtcbiIKKyAgICAgICAgICAgICAgIC8vIHVzZSAlJWhyIHRvIGZvcm1hdCB2YWx1ZXMgZ3JlYXRlciB0aGFuIDMsNjAwIHNlY29uZHMKKyAgICAgICAgICAgICAgIC8vICh0aGUgIj4+PiIgYmVsb3cgY2F1c2VzIHVzIHRvIHNlZSB0aGUgbnVtYmVyIG9mIG1pbnV0ZXMKKyAgICAgICAgICAgICAgIC8vIHdoZW4gd2hlbiB0aGVyZSBhcmUgemVybyBtaW51dGVzKQorICAgICAgICArICIgICAgMzYwMC82MDogPCUlaHI8WywgPj4+XTtcbiIKKyAgICAgICAgLy8gdGhpcyBydWxlIHNldCB0YWtlcyBjYXJlIG9mIHRoZSBzaW5ndWxhciBhbmQgcGx1cmFsIGZvcm1zCisgICAgICAgIC8vIG9mICJtaW51dGUiCisgICAgICAgICsgIiUlbWluOlxuIgorICAgICAgICArICIgICAgMCBtaW51dGVzOyAxIG1pbnV0ZTsgPTA9IG1pbnV0ZXM7XG4iCisgICAgICAgIC8vIHRoaXMgcnVsZSBzZXQgdGFrZXMgY2FyZSBvZiB0aGUgc2luZ3VsYXIgYW5kIHBsdXJhbCBmb3JtcworICAgICAgICAvLyBvZiAiaG91ciIKKyAgICAgICAgKyAiJSVocjpcbiIKKyAgICAgICAgKyAiICAgIDAgaG91cnM7IDEgaG91cjsgPTA9IGhvdXJzO1xuIgorCisgICAgICAgIC8vIG1haW4gcnVsZSBzZXQgZm9yIGZvcm1hdHRpbmcgaW4gbnVtZXJhbHMKKyAgICAgICAgKyAiJWluLW51bWVyYWxzOlxuIgorICAgICAgICAgICAgICAgLy8gdmFsdWVzIGJlbG93IDYwIHNlY29uZHMgYXJlIHNob3duIHdpdGggInNlYy4iCisgICAgICAgICsgIiAgICA9MD0gc2VjLjtcbiIKKyAgICAgICAgICAgICAgIC8vIGhpZ2hlciB2YWx1ZXMgYXJlIHNob3duIHdpdGggY29sb25zOiAlJW1pbi1zZWMgaXMgdXNlZCBmb3IKKyAgICAgICAgICAgICAgIC8vIHZhbHVlcyBiZWxvdyAzLDYwMCBzZWNvbmRzLi4uCisgICAgICAgICsgIiAgICA2MDogPSUlbWluLXNlYz07XG4iCisgICAgICAgICAgICAgICAvLyAuLi5hbmQgJSVoci1taW4tc2VjIGlzIHVzZWQgZm9yIHZhbHVlcyBvZiAzLDYwMCBzZWNvbmRzCisgICAgICAgICAgICAgICAvLyBhbmQgYWJvdmUKKyAgICAgICAgKyAiICAgIDM2MDA6ID0lJWhyLW1pbi1zZWM9O1xuIgorICAgICAgICAvLyB0aGlzIHJ1bGUgY2F1c2VzIHZhbHVlcyBvZiBsZXNzIHRoYW4gMTAgbWludXRlcyB0byBzaG93IHdpdGhvdXQKKyAgICAgICAgLy8gYSBsZWFkaW5nIHplcm8KKyAgICAgICAgKyAiJSVtaW4tc2VjOlxuIgorICAgICAgICArICIgICAgMDogOj0wMD07XG4iCisgICAgICAgICsgIiAgICA2MC82MDogPDA8Pj47XG4iCisgICAgICAgIC8vIHRoaXMgcnVsZSBzZXQgaXMgdXNlZCBmb3IgdmFsdWVzIG9mIDMsNjAwIG9yIG1vcmUuICBNaW51dGVzIGFyZSBhbHdheXMKKyAgICAgICAgLy8gc2hvd24sIGFuZCBhbHdheXMgc2hvd24gd2l0aCB0d28gZGlnaXRzCisgICAgICAgICsgIiUlaHItbWluLXNlYzpcbiIKKyAgICAgICAgKyAiICAgIDA6IDo9MDA9O1xuIgorICAgICAgICArICIgICAgNjAvNjA6IDwwMDw+PjtcbiIKKyAgICAgICAgKyAiICAgIDM2MDAvNjA6IDwjLCMjMDw6Pj4+O1xuIgorICAgICAgICAvLyB0aGUgbGVuaWVudC1wYXJzZSBydWxlcyBhbGxvdyBzZXZlcmFsIGRpZmZlcmVudCBjaGFyYWN0ZXJzIHRvIGJlIHVzZWQKKyAgICAgICAgLy8gYXMgZGVsaW1pdGVycyBiZXR3ZWVuIGhvdXJzLCBtaW51dGVzLCBhbmQgc2Vjb25kcworICAgICAgICArICIlJWxlbmllbnQtcGFyc2U6XG4iCisgICAgICAgICsgIiAgICAmIDogPSAuID0gJyAnID0gLTtcbiI7CisKKyAgICAvKioKKyAgICAgKiBUaGlzIGV4YW1wbGUgZm9ybWF0cyBhIG51bWJlciBvZiBob3VycyBpbiBzZXhhZ2VzaW1hbCBub3RhdGlvbiAoaS5lLiwKKyAgICAgKiBob3VycywgbWludXRlcywgYW5kIHNlY29uZHMpLiAgJXdpdGgtd29yZHMgZm9ybWF0cyB0aGUgdmFsdWUgdXNpbmcKKyAgICAgKiB3b3JkcyBmb3IgdGhlIHVuaXRzLCBhbmQgJWluLW51bWVyYWxzIGZvcm1hdHMgdGhlIHZhbHVlIHVzaW5nIG9ubHkKKyAgICAgKiBudW1lcmFscy4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBkdXJhdGlvbkluSG91cnMgPQorICAgICAgICAvLyBtYWluIGVudHJ5IHBvaW50IGZvciBmb3JtYXR0aW5nIHdpdGggd29yZHMKKyAgICAgICAgIiV3aXRoLXdvcmRzOlxuIgorICAgICAgICAgICAgICAgLy8gdGhpcyBydWxlIG9taXRzIG1pbnV0ZXMgYW5kIHNlY29uZHMgd2hlbiB0aGUgdmFsdWUgaXMKKyAgICAgICAgICAgICAgIC8vIGFuIGV2ZW4gbnVtYmVyIG9mIGhvdXJzCisgICAgICAgICsgIiAgICB4LjA6IDw8WywgPiUlbWluLXNlYz5dO1xuIgorICAgICAgICAgICAgICAgLy8gdGhlc2UgcnVsZXMgdGFrZSBjYXJlIG9mIHRoZSBzaW5ndWxhciBhbmQgcGx1cmFsIGZvcm1zCisgICAgICAgICAgICAgICAvLyBvZiBob3VycworICAgICAgICArICIgICAgMCBob3VyczsgMSBob3VyOyA9IywjIzA9IGhvdXJzO1xuIgorICAgICAgICAvLyB0aGlzIHJ1bGUgc2V0IHRha2VzIHRoZSBmcmFjdGlvbmFsIHBhcnQgb2YgdGhlIG51bWJlciBhbmQgbXVsdGlwbGllcworICAgICAgICAvLyBpdCBieSAzLDYwMCAodHVybmluZyBpdCBpbnRvIGEgbnVtYmVyIG9mIHNlY29uZHMpLiAgVGhlbiBpdCBkZWxlZ2F0ZXMKKyAgICAgICAgLy8gdG8gJSVtaW4tc2VjLWltcGxlbWVudGF0aW9uIHRvIGZvcm1hdCB0aGUgcmVzdWx0aW5nIHZhbHVlCisgICAgICAgICsgIiUlbWluLXNlYzpcbiIKKyAgICAgICAgKyAiICAgIDM2MDA6ID0lJW1pbi1zZWMtaW1wbGVtZW50YXRpb249O1xuIgorICAgICAgICAvLyB0aGlzIHJ1bGUgc2V0IGZvcm1hdHMgdGhlIHNlY29uZHMgYXMgZWl0aGVyIHNlY29uZHMgb3IgbWludXRlcyBhbmQKKyAgICAgICAgLy8gc2Vjb25kcywgYW5kIHRha2VzIGNhcmUgb2YgdGhlIHNpbmd1bGFyIGFuZCBwbHVyYWwgZm9ybXMgb2YKKyAgICAgICAgLy8gIm1pbnV0ZSIgYW5kICJzZWNvbmQiCisgICAgICAgICsgIiUlbWluLXNlYy1pbXBsZW1lbnRhdGlvbjpcbiIKKyAgICAgICAgKyAiICAgIDAgc2Vjb25kczsgMSBzZWNvbmQ7ID0wPSBzZWNvbmRzO1xuIgorICAgICAgICArICIgICAgNjAvNjA6IDEgbWludXRlWywgPj5dO1xuIgorICAgICAgICArICIgICAgMTIwLzYwOiA8MDwgbWludXRlc1ssID4+XTtcbiIKKworICAgICAgICAvLyBtYWluIGVudHJ5IHBvaW50IGZvciBmb3JtYXR0aW5nIGluIG51bWVyYWxzCisgICAgICAgICsgIiVpbi1udW1lcmFsczpcbiIKKyAgICAgICAgICAgICAgIC8vIHNob3cgbWludXRlcyBldmVuIGZvciBldmVuIG51bWJlcnMgb2YgaG91cnMKKyAgICAgICAgKyAiICAgIHguMDogPCMsIyMwPDowMDtcbiIKKyAgICAgICAgICAgICAgIC8vIGRlbGVnYXRlIHRvICUlbWluLXNlYzIgdG8gZm9ybWF0IG1pbnV0ZXMgYW5kIHNlY29uZHMKKyAgICAgICAgKyAiICAgIHgueDogPCMsIyMwPDo+JSVtaW4tc2VjMj47XG4iCisgICAgICAgIC8vIHRoaXMgcnVsZSBzZXQgZm9ybWF0cyBtaW51dGVzIHdoZW4gdGhlcmUgaXMgYW4gZXZlbiBudW1iZXIgb2YKKyAgICAgICAgLy8gbWludXRlcywgYW5kIGRlbGVnYXRlcyB0byAlJW1pbi1zZWMyLWltcGxlbWVudGF0aW9uIHdoZW4gdGhlcmUKKyAgICAgICAgLy8gYXJlIHNlY29uZHMKKyAgICAgICAgKyAiJSVtaW4tc2VjMjpcbiIKKyAgICAgICAgKyAiICAgIDYwOiA8MDA8O1xuIgorICAgICAgICArICIgICAgMzYwMDogPCUlbWluLXNlYzItaW1wbGVtZW50YXRpb248O1xuIgorICAgICAgICAvLyB0aGVzZSB0d28gcnVsZSBzZXRzIGFyZSB1c2VkIHRvIGZvcm1hdCB0aGUgbWludXRlcyBhbmQgc2Vjb25kcworICAgICAgICArICIlJW1pbi1zZWMyLWltcGxlbWVudGF0aW9uOlxuIgorICAgICAgICAgICAgICAgLy8gaWYgdGhlcmUgYXJlIGZld2VyIHRoYW4gNjAgc2Vjb25kcywgc2hvdyB0aGUgbWludXRlcyBhbnl3YXkKKyAgICAgICAgKyAiICAgIDA6IDAwOj0wMD07XG4iCisgICAgICAgICAgICAgICAvLyBpZiB0aGVyZSBhcmUgbWludXRlcywgZm9ybWF0IHRoZW0gdG9vLCBhbmQgYWx3YXlzIHVzZSAyIGRpZ2l0cworICAgICAgICAgICAgICAgLy8gZm9yIGJvdGggbWludXRlcyBhbmQgc2Vjb25kcworICAgICAgICArICIgICAgNjA6ID0lJW1pbi1zZWMzPTtcbiIKKyAgICAgICAgKyAiJSVtaW4tc2VjMzpcbiIKKyAgICAgICAgKyAiICAgIDA6IDo9MDA9O1xuIgorICAgICAgICArICIgICAgNjAvNjA6IDwwMDw+PjtcbiIKKyAgICAgICAgLy8gdGhlIGxlbmllbnQtcGFyc2UgcnVsZXMgYWxsb3cgdGhlIHVzZXIgdG8gdXNlIGFueSBvZiBzZXZlcmFsCisgICAgICAgIC8vIGNoYXJhY3RlcnMgYXMgZGVsaW1pdGVycyBiZXR3ZWVuIGhvdXJzLCBtaW51dGVzLCBhbmQgc2Vjb25kcworICAgICAgICArICIlJWxlbmllbnQtcGFyc2U6XG4iCisgICAgICAgICsgIiAgICAmIDogPSAuID0gJyAnID0gLTtcbiI7CisKKyAgICAvKioKKyAgICAgKiBUaGlzIHJ1bGUgc2V0IGZvcm1hdHMgYSBudW1iZXIgb2YgcG91bmRzIGFzIHBvdW5kcywgc2hpbGxpbmdzLCBhbmQKKyAgICAgKiBwZW5jZSBpbiB0aGUgb2xkIEVuZ2xpc2ggc3lzdGVtIG9mIGN1cnJlbmN5LgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIHBvdW5kc1NoaWxsaW5nc0FuZFBlbmNlID0KKyAgICAgICAgLy8gZm9yIHZhbHVlcyBvZiAxIG9yIG1vcmUsIGZvcm1hdCB0aGUgaW50ZWdyYWwgcGFydCB3aXRoIGEgcG91bmQKKyAgICAgICAgLy8gc2lnbiBpbiBmcm9udCwgYW5kIHNob3cgc2hpbGxpbmdzIGFuZCBwZW5jZSBpZiBuZWNlc3NhcnkKKyAgICAgICAgIiVtYWluOlxuIgorICAgICAgICArICIgICAgeC4wOiBcdTAwYTM8IywjIzA8WyA+JSVzaGlsbGluZ3MtYW5kLXBlbmNlPl07XG4iCisgICAgICAgIC8vIGZvciB2YWx1ZXMgYmV0d2VlbiAwIGFuZCAxLCBvbWl0IHRoZSBudW1iZXIgb2YgcG91bmRzCisgICAgICAgICsgIiAgICAwLng6ID4lJXBlbmNlLWFsb25lPjtcbiIKKyAgICAgICAgLy8gdGhpcyBydWxlIHNldCBpcyB1c2VkIHRvIHNob3cgc2hpbGxpbmdzIGFuZCBwZW5jZS4gIEl0IG11bHRpcGxpZXMKKyAgICAgICAgLy8gdGhlIGZyYWN0aW9uYWwgcGFydCBvZiB0aGUgbnVtYmVyIGJ5IDI0MCAodGhlIG51bWJlciBvZiBwZW5jZSBpbiBhCisgICAgICAgIC8vIHBvdW5kKSBhbmQgdXNlcyAlJXNoaWxsaW5ncy1hbmQtcGVuY2UtaW1wbGVtZW50YXRpb24gdG8gZm9ybWF0CisgICAgICAgIC8vIHRoZSByZXN1bHQKKyAgICAgICAgKyAiJSVzaGlsbGluZ3MtYW5kLXBlbmNlOlxuIgorICAgICAgICArICIgICAgMjQwOiA8JSVzaGlsbGluZ3MtYW5kLXBlbmNlLWltcGxlbWVudGF0aW9uPDtcbiIKKyAgICAgICAgLy8gdGhpcyBydWxlIHNldCBpcyB1c2VkIHRvIHNob3cgc2hpbGxpbmdzIGFuZCBwZW5jZSB3aGVuIHRoZXJlIGFyZQorICAgICAgICAvLyBubyBwb3VuZHMuICBJdCBhbHNvIG11bHRpcGxpZXMgdGhlIHZhbHVlIGJ5IDI0MCwgYW5kIHRoZW4gaXQgdXNlcworICAgICAgICAvLyAlJXBlbmNlLWFsb25lLWltcGxlbWVudGF0aW9uIHRvIGZvcm1hdCB0aGUgcmVzdWx0LgorICAgICAgICArICIlJXBlbmNlLWFsb25lOlxuIgorICAgICAgICArICIgICAgMjQwOiA8JSVwZW5jZS1hbG9uZS1pbXBsZW1lbnRhdGlvbjw7XG4iCisgICAgICAgIC8vIHRoaXMgcnVsZSBzZXQgZm9ybWF0cyBhIG51bWJlciBvZiBwZW5jZSB3aGVuIHdlIGtub3cgd2UgYWxzbworICAgICAgICAvLyBoYXZlIHBvdW5kcy4gIFdlIGFsd2F5cyBzaG93IHNoaWxsaW5ncyAod2l0aCBhIDAgaWYgbmVjZXNzYXJ5KSwKKyAgICAgICAgLy8gYnV0IG9ubHkgc2hvdyBwZW5jZSBpZiB0aGUgdmFsdWUgaXNuJ3QgYW4gZXZlbiBudW1iZXIgb2Ygc2hpbGxpbmdzCisgICAgICAgICsgIiUlc2hpbGxpbmdzLWFuZC1wZW5jZS1pbXBsZW1lbnRhdGlvbjpcbiIKKyAgICAgICAgKyAiICAgIDAvOyAwLz0wPTtcbiIKKyAgICAgICAgKyAiICAgIDEyLzEyOiA8MDwvWz4wPl07XG4iCisgICAgICAgIC8vIHRoaXMgcnVsZSBzZXQgZm9ybWF0cyBhIG51bWJlciBvZiBwZW5jZSB3aGVuIHdlIGtub3cgdGhlcmUgYXJlCisgICAgICAgIC8vIG5vIHBvdW5kcy4gIFZhbHVlcyBsZXNzIHRoYW4gYSBzaGlsbGluZyBhcmUgc2hvd24gd2l0aCAiZC4iICh0aGUKKyAgICAgICAgLy8gYWJicmV2aWF0aW9uIGZvciBwZW5jZSksIGFuZCB2YWx1ZXMgZ3JlYXRlciB0aGFuIGEgc2hpbGxpbmcgYXJlCisgICAgICAgIC8vIHNob3duIHdpdGggYSBzaGlsbGluZyBiYXIgKGFuZCB3aXRob3V0IHBlbmNlIHdoZW4gdGhlIHZhbHVlIGlzCisgICAgICAgIC8vIGFuIGV2ZW4gbnVtYmVyIG9mIHNoaWxsaW5ncykKKyAgICAgICAgKyAiJSVwZW5jZS1hbG9uZS1pbXBsZW1lbnRhdGlvbjpcbiIKKyAgICAgICAgKyAiICAgID0wPSBkLjtcbiIKKyAgICAgICAgKyAiICAgIDEyLzEyOiA8MDwvWz4wPl07XG4iOworCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBBbHRlcm5hdGUgbnVtZXJhdGlvbiBzeXN0ZW1zCisgICAgLy8KKyAgICAvLyBUaGVzZSBleGFtcGxlcyBzaG93IGhvdyBSdWxlQmFzZWROdW1iZXJGb3JtYXQgY2FuIGJlIHVzZWQgdG8gZm9ybWF0CisgICAgLy8gbnVtYmVycyB1c2luZyBub24tcG9zaXRpb25hbCBudW1lcmF0aW9uIHN5c3RlbXMuCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgIC8qKgorICAgICAqIEFyYWJpYyBkaWdpdHMuICBUaGlzIGV4YW1wbGUgZm9ybWF0cyBudW1iZXJzIGluIEFyYWJpYyBudW1lcmFscy4KKyAgICAgKiBOb3JtYWxseSwgeW91J2QgZG8gdGhpcyB3aXRoIERlY2ltYWxGb3JtYXQsIGJ1dCB0aGlzIHNob3dzIHRoYXQKKyAgICAgKiBSdWxlQmFzZWROdW1iZXJGb3JtYXQgY2FuIGhhbmRsZSBpdCB0b28uCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgYXJhYmljTnVtZXJhbHMgPQorICAgICAgICAiMDsgMTsgMjsgMzsgNDsgNTsgNjsgNzsgODsgOTtcbiIKKyAgICAgICAgKyAiMTA6IDw8Pj47XG4iCisgICAgICAgICsgIjEwMDogPDw+Pj47XG4iCisgICAgICAgICsgIjEwMDA6IDw8LD4+PjtcbiIKKyAgICAgICAgKyAiMSwwMDAsMDAwOiA8PCw+Pj47XG4iCisgICAgICAgICsgIjEsMDAwLDAwMCwwMDA6IDw8LD4+PjtcbiIKKyAgICAgICAgKyAiMSwwMDAsMDAwLDAwMCwwMDA6IDw8LD4+PjtcbiIKKyAgICAgICAgKyAiMSwwMDAsMDAwLDAwMCwwMDAsMDAwOiA9IywjIzA9O1xuIgorICAgICAgICArICIteDogLT4+O1xuIgorICAgICAgICArICJ4Lng6IDw8Lj4+OyI7CisKKyAgICAvKioKKyAgICAgKiBXb3JkcyBmb3IgZGlnaXRzLiAgRm9sbG93cyB0aGUgc2FtZSBwYXR0ZXJuIGFzIHRoZSBBcmFiaWMtbnVtZXJhbHMKKyAgICAgKiBleGFtcGxlIGFib3ZlLCBidXQgdXNlcyB3b3JkcyBmb3IgdGhlIHZhcmlvdXMgZGlnaXRzIChlLmcuLCAxMjMgY29tZXMKKyAgICAgKiBvdXQgYXMgIm9uZSB0d28gdGhyZWUiKS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyB3b3Jkc0ZvckRpZ2l0cyA9CisgICAgICAgICIteDogbWludXMgPj47XG4iCisgICAgICAgICsgIngueDogPDwgcG9pbnQgPj47XG4iCisgICAgICAgICsgInplcm87IG9uZTsgdHdvOyB0aHJlZTsgZm91cjsgZml2ZTsgc2l4O1xuIgorICAgICAgICArICIgICAgc2V2ZW47IGVpZ2h0OyBuaW5lO1xuIgorICAgICAgICArICIxMDogPDwgPj47XG4iCisgICAgICAgICsgIjEwMDogPDwgPj4+O1xuIgorICAgICAgICArICIxMDAwOiA8PCwgPj4+O1xuIgorICAgICAgICArICIxLDAwMCwwMDA6IDw8LCA+Pj47XG4iCisgICAgICAgICsgIjEsMDAwLDAwMCwwMDA6IDw8LCA+Pj47XG4iCisgICAgICAgICsgIjEsMDAwLDAwMCwwMDAsMDAwOiA8PCwgPj4+O1xuIgorICAgICAgICArICIxLDAwMCwwMDAsMDAwLDAwMCwwMDA6ID0jLCMjMD07XG4iOworCisgICAgLyoqCisgICAgICogVGhpcyBleGFtcGxlIGZvcm1hdHMgbnVtYmVycyB1c2luZyBDaGluZXNlIGNoYXJhY3RlcnMgaW4gdGhlIEFyYWJpYworICAgICAqIHBsYWNlLXZhbHVlIG1ldGhvZC4gIFRoaXMgd2FzIHVzZWQgaGlzdG9yaWNhbGx5IGluIENoaW5hIGZvciBhIHdoaWxlLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNoaW5lc2VQbGFjZVZhbHVlID0KKyAgICAgICAgIlx1MzAwNzsgXHU0ZTAwOyBcdTRlOGM7IFx1NGUwOTsgXHU1NmRiOyBcdTRlOTQ7IFx1NTE2ZDsgXHU0ZTAzOyBcdTUxNmI7IFx1NGU1ZDtcbiIKKyAgICAgICAgKyAiMTA6IDw8Pj47XG4iCisgICAgICAgICsgIjEwMDogPDw+Pj47XG4iCisgICAgICAgICsgIjEwMDA6IDw8Pj4+O1xuIgorICAgICAgICArICIxLDAwMCwwMDA6IDw8Pj4+O1xuIgorICAgICAgICArICIxLDAwMCwwMDAsMDAwOiA8PD4+PjtcbiIKKyAgICAgICAgKyAiMSwwMDAsMDAwLDAwMCwwMDA6IDw8Pj4+O1xuIgorICAgICAgICArICIxLDAwMCwwMDAsMDAwLDAwMCwwMDA6ID0jLCMjMD07XG4iOworCisgICAgLyoqCisgICAgICogUm9tYW4gbnVtZXJhbHMuICBUaGlzIGV4YW1wbGUgaGFzIHR3byB2YXJpYW50czogJW1vZGVybiBzaG93cyBob3cgbGFyZ2UKKyAgICAgKiBudW1iZXJzIGFyZSB1c3VhbGx5IGhhbmRsZWQgdG9kYXk7ICVoaXN0b3JpY2FsIHNlcyB0aGUgb2xkZXIgc3ltYm9scyBmb3IKKyAgICAgKiB0aG91c2FuZHMuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgcm9tYW5OdW1lcmFscyA9CisgICAgICAgICIlaGlzdG9yaWNhbDpcbiIKKyAgICAgICAgKyAiICAgID0lbW9kZXJuPTtcbiIKKyAgICAgICAgICAgICAgIC8vIGluIGVhcmx5IFJvbWFuIG51bWVyYWxzLCAxLDAwMCB3YXMgc2hvd24gd2l0aCBhIGNpcmNsZQorICAgICAgICAgICAgICAgLy8gYmlzZWN0ZWQgYnkgYSB2ZXJ0aWNhbCBsaW5lLiAgQWRkaXRpb25hbCB0aG91c2FuZHMgd2VyZQorICAgICAgICAgICAgICAgLy8gc2hvd24gYnkgYWRkaW5nIG1vcmUgY29uY2VudHJpYyBjaXJjbGVzLCBhbmQgZml2ZXMgd2VyZQorICAgICAgICAgICAgICAgLy8gc2hvd24gYnkgY3V0dGluZyB0aGUgc3ltYm9sIGZvciBuZXh0LWhpZ2hlciBwb3dlciBvZiAxMAorICAgICAgICAgICAgICAgLy8gaW4gaGFsZiAodGhlIGxldHRlciBEIGZvciA1MDAgZXZvbHZlZCBmcm9tIHRoaXMpLgorICAgICAgICAgICAgICAgLy8gV2UgY291bGQgZ28gYmV5b25kIDQwLDAwMCwgYnV0IFVuaWNvZGUgZG9lc24ndCBlbmNvZGUKKyAgICAgICAgICAgICAgIC8vIHRoZSBzeW1ib2xzIGZvciBoaWdoZXIgbnVtYmVycy8KKyAgICAgICAgKyAiICAgIDEwMDA6IFx1MjE4MFs+Pl07IDIwMDA6IFx1MjE4MFx1MjE4MFs+Pl07IDMwMDA6IFx1MjE4MFx1MjE4MFx1MjE4MFs+Pl07IDQwMDA6IFx1MjE4MFx1MjE4MVs+Pl07XG4iCisgICAgICAgICsgIiAgICA1MDAwOiBcdTIxODFbPj5dOyA2MDAwOiBcdTIxODFcdTIxODBbPj5dOyA3MDAwOiBcdTIxODFcdTIxODBcdTIxODBbPj5dO1xuIgorICAgICAgICArICIgICAgODAwMDogXHUyMTgxXHUyMTgwXHUyMTgwXHUyMTgwWz4+XTsgOTAwMDogXHUyMTgwXHUyMTgyWz4+XTtcbiIKKyAgICAgICAgKyAiICAgIDEwLDAwMDogXHUyMTgyWz4+XTsgMjAsMDAwOiBcdTIxODJcdTIxODJbPj5dOyAzMCwwMDA6IFx1MjE4Mlx1MjE4Mlx1MjE4Mls+Pl07XG4iCisgICAgICAgICsgIiAgICA0MCwwMDA6ID0jLCMjMD07XG4iCisgICAgICAgICsgIiVtb2Rlcm46XG4iCisgICAgICAgICsgIiAgICA7IEk7IElJOyBJSUk7IElWOyBWOyBWSTsgVklJOyBWSUlJOyBJWDtcbiIKKyAgICAgICAgKyAiICAgIDEwOiBYWz4+XTsgMjA6IFhYWz4+XTsgMzA6IFhYWFs+Pl07IDQwOiBYTFs+Pl07IDUwOiBMWz4+XTtcbiIKKyAgICAgICAgKyAiICAgIDYwOiBMWFs+Pl07IDcwOiBMWFhbPj5dOyA4MDogTFhYWFs+Pl07IDkwOiBYQ1s+Pl07XG4iCisgICAgICAgICsgIiAgICAxMDA6IENbPj5dOyAyMDA6IENDWz4+XTsgMzAwOiBDQ0NbPj5dOyA0MDA6IENEWz4+XTsgNTAwOiBEWz4+XTtcbiIKKyAgICAgICAgKyAiICAgIDYwMDogRENbPj5dOyA3MDA6IERDQ1s+Pl07IDgwMDogRENDQ1s+Pl07IDkwMDogQ01bPj5dO1xuIgorICAgICAgICAgICAgICAgLy8gaW4gbW9kZXJuIFJvbWFuIG51bWVyYWxzLCBoaWdoIG51bWJlcnMgYXJlIGdlbmVyYWxseSBzaG93bgorICAgICAgICAgICAgICAgLy8gYnkgcGxhY2luZyBhIGJhciBvdmVyIHRoZSBsZXR0ZXJzIGZvciB0aGUgbG93ZXIgbnVtYmVyczoKKyAgICAgICAgICAgICAgIC8vIHRoZSBiYXIgbXVsdGlwbGllZCBhIGxldHRlcidzIHZhbHVlIGJ5IDEsMDAwCisgICAgICAgICsgIiAgICAxMDAwOiBNWz4+XTsgMjAwMDogTU1bPj5dOyAzMDAwOiBNTU1bPj5dOyA0MDAwOiBNVlx1MDMwNls+Pl07XG4iCisgICAgICAgICsgIiAgICA1MDAwOiBWXHUwMzA2Wz4+XTsgNjAwMDogVlx1MDMwNk1bPj5dOyA3MDAwOiBWXHUwMzA2TU1bPj5dO1xuIgorICAgICAgICArICIgICAgODAwMDogVlx1MDMwNk1NTVs+Pl07IDkwMDA6IE1YXHUwMzA2Wz4+XTtcbiIKKyAgICAgICAgKyAiICAgIDEwLDAwMDogWFx1MDMwNls+Pl07IDIwLDAwMDogWFx1MDMwNlhcdTAzMDZbPj5dOyAzMCwwMDA6IFhcdTAzMDZYXHUwMzA2WFx1MDMwNls+Pl07XG4iCisgICAgICAgICsgIiAgICA0MCwwMDA6IFhcdTAzMDZMXHUwMzA2Wz4+XTsgNTAsMDAwOiBMXHUwMzA2Wz4+XTsgNjAsMDAwOiBMXHUwMzA2WFx1MDMwNls+Pl07XG4iCisgICAgICAgICsgIiAgICA3MCwwMDA6IExcdTAzMDZYXHUwMzA2WFx1MDMwNls+Pl07IDgwLDAwMDogTFx1MDMwNlhcdTAzMDZYXHUwMzA2WFx1MDMwNls+Pl07XG4iCisgICAgICAgICsgIiAgICA5MCwwMDA6IFhcdTAzMDZDXHUwMzA2Wz4+XTtcbiIKKyAgICAgICAgKyAiICAgIDEwMCwwMDA6IENcdTAzMDZbPj5dOyAyMDAsMDAwOiBDXHUwMzA2Q1x1MDMwNls+Pl07IDMwMCwwMDA6IENcdTAzMDZDXHUwMzA2Wz4+XTtcbiIKKyAgICAgICAgKyAiICAgIDQwMCwwMDA6IENcdTAzMDZEXHUwMzA2Wz4+XTsgNTAwLDAwMDogRFx1MDMwNls+Pl07IDYwMCwwMDA6IERcdTAzMDZDXHUwMzA2Wz4+XTtcbiIKKyAgICAgICAgKyAiICAgIDcwMCwwMDA6IERcdTAzMDZDXHUwMzA2Q1x1MDMwNls+Pl07IDgwMCwwMDA6IERcdTAzMDZDXHUwMzA2Q1x1MDMwNkNcdTAzMDZbPj5dO1xuIgorICAgICAgICArICIgICAgOTAwLDAwMDogPSMsIyMwPTtcbiI7CisKKyAgICAvKioKKyAgICAgKiBIZWJyZXcgYWxwaGFiZXRpYyBudW1lcmFscy4gIEJlZm9yZSBhZG9wdGlvbiBvZiBBcmFiaWMgbnVtZXJhbHMsIEhlYnJldyBzcGVha2VycworICAgICAqIHVzZWQgdGhlIGxldHRlciBvZiB0aGVpciBhbHBoYWJldCBhcyBudW1lcmFscy4gIFRoZSBmaXJzdCBuaW5lIGxldHRlcnMgb2YKKyAgICAgKiB0aGUgYWxwaGFiZXQgcmVwZXNlbnRlZCB0aGUgdmFsdWVzIGZyb20gMSB0byA5LCB0aGUgc2Vjb25kIG5pbmUgbGV0dGVycyB0aGUKKyAgICAgKiBtdWx0aXBsZXMgb2YgMTAsIGFuZCB0aGUgcmVtYWluaW5nIGxldHRlcnMgdGhlIG11bHRpcGxlcyBvZiAxMDAuICBTaW5jZSB0aGV5CisgICAgICogcmFuIG91dCBvZiBsZXR0ZXJzIGF0IDQwMCwgdGhlIHJlbWFpbmluZyBtdWx0aXBsZXMgb2YgMTAwIHdlcmUgcmVwcmVzZW50ZWQKKyAgICAgKiB1c2luZyBjb21iaW5hdGlvbnMgb2YgdGhlIGV4aXN0aW5nIGxldHRlcnMgZm9yIHRoZSBodW5kcmVkcy4gIE51bWJlcnMgd2VyZQorICAgICAqIGRpc3Rpbmd1aXNoZWQgZnJvbSB3b3JkcyBpbiBhIG51bWJlciBvZiBkaWZmZXJlbnQgd2F5czogdGhlIHdheSBzaG93biBoZXJlCisgICAgICogdXNlcyBhIHNpbmdsZSBtYXJrIGFmdGVyIGEgbnVtYmVyIGNvbnNpc3Rpbmcgb2Ygb25lIGxldHRlciwgYW5kIGEgZG91YmxlCisgICAgICogbWFyayBiZXR3ZWVuIHRoZSBsYXN0IHR3byBsZXR0ZXJzIG9mIGEgbnVtYmVyIGNvbnNpc3Rpbmcgb2YgdHdvIG9yIG1vcmUKKyAgICAgKiBsZXR0ZXJzLiAgVHdvIGRvdHMgb3ZlciBhIGxldHRlciBtdWx0aXBsaWVkIGl0cyB2YWx1ZSBieSAxLDAwMC4gIEFsc28sIHNpbmNlCisgICAgICogdGhlIGxldHRlciBmb3IgMTAgaXMgdGhlIGZpcnN0IGxldHRlciBvZiBHb2QncyBuYW1lIGFuZCB0aGUgbGV0dGVycyBmb3IgNSBhbmQgNgorICAgICAqIGFyZSBsZXR0ZXJzIGluIEdvZCdzIG5hbWUsIHdoaWNoIHdhc24ndCBzdXBwb3NlZCB0byBiZSB3cml0dGVuIG9yIHNwb2tlbiwgMTUgYW5kCisgICAgICogMTYgd2VyZSB1c3VhbGx5IHdyaXR0ZW4gYXMgOSArIDYgYW5kIDkgKyA3IGluc3RlYWQgb2YgMTAgKyA1IGFuZCAxMCArIDYuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgaGVicmV3QWxwaGFiZXRpYyA9CisgICAgICAgIC8vIGxldHRlcnMgZm9yIHRoZSBvbmVzCisgICAgICAgICIlJW9uZXM6XG4iCisgICAgICAgICsgIiAgICAobm8gemVybyk7IFx1MDVkMDsgXHUwNWQxOyBcdTA1ZDI7IFx1MDVkMzsgXHUwNWQ0OyBcdTA1ZDU7IFx1MDVkNjsgXHUwNWQ3OyBcdTA1ZDg7XG4iCisgICAgICAgIC8vIGxldHRlcnMgZm9yIHRoZSB0ZW5zCisgICAgICAgICsgIiUldGVuczpcbiIKKyAgICAgICAgKyAiICAgIDsgXHUwNWQ5OyBcdTA1ZGI7IFx1MDVkYzsgXHUwNWRlOyBcdTA1ZTA7IFx1MDVlMTsgXHUwNWUyOyBcdTA1ZTQ7IFx1MDVlNjtcbiIKKyAgICAgICAgLy8gbGV0dGVycyBmb3IgdGhlIGZpcnN0IGZvdXIgaHVuZHJlZHMKKyAgICAgICAgKyAiJSVodW5kcmVkczpcbiIKKyAgICAgICAgKyAiICAgIDsgXHUwNWU3OyBcdTA1ZTg7IFx1MDVlOTsgXHUwNWVhO1xuIgorICAgICAgICAvLyB0aGlzIHJ1bGUgc2V0IGlzIHVzZWQgdG8gd3JpdGUgdGhlIGNvbWJpbmF0aW9uIG9mIHRoZSB0ZW5zIGFuZCBvbmVzIGRpZ2l0cworICAgICAgICAvLyB3aGVuIHdlIGtub3cgdGhhdCBubyBvdGhlciBkaWdpdHMgcHJlY2VkZSB0aGVtOiB0aGV5IHB1dCB0aGUgbnVtZXJhbCBtYXJrcworICAgICAgICAvLyBpbiB0aGUgcmlnaHQgcGxhY2UgYW5kIHByb3Blcmx5IGhhbmRsZSAxNSBhbmQgMTYgKEknbSB1c2luZyB0aGUgbWF0aGVtYXRpY2FsCisgICAgICAgIC8vIHByaW1lIGNoYXJhY3RlcnMgZm9yIHRoZSBudW1lcmFsIG1hcmtzIGJlY2F1c2UgbXkgVW5pY29kZSBmb250IGRvZXNuJ3QKKyAgICAgICAgLy8gaW5jbHVkZSB0aGUgcmVhbCBIZWJyZXcgY2hhcmFjdGVycywgd2hpY2ggbG9vayBqdXN0IGxpa2UgdGhlIHByaW1lIG1hcmtzKQorICAgICAgICArICIlJXRlbnMtYW5kLW9uZXM6XG4iCisgICAgICAgICAgICAgICAvLyBmb3IgdmFsdWVzIGxlc3MgdGhhbiAxMCwganVzdCB1c2UgJSVvbmVzIGFuZCBwdXQgdGhlIG51bWVyYWwgbWFyaworICAgICAgICAgICAgICAgLy8gYWZ0ZXJ3YXJkCisgICAgICAgICsgIiAgICA9JSVvbmVzPVx1MjAzMjtcbiIKKyAgICAgICAgICAgICAgIC8vIHB1dCB0aGUgbnVtZXJhbCBtYXJrIGF0IHRoZSBlbmQgZm9yIDEwLCBidXQgaW4gdGhlIG1pZGRsZSBmb3IKKyAgICAgICAgICAgICAgIC8vIDExIHRocm91Z2ggMTQKKyAgICAgICAgKyAiICAgIDEwOiA8JSV0ZW5zPFx1MjAzMjsgPCUldGVuczxcdTIwMzM+JSVvbmVzPjtcbiIKKyAgICAgICAgICAgICAgIC8vIHNwZWNpYWwtY2FzZSAxNSBhbmQgMTYKKyAgICAgICAgKyAiICAgIDE1OiBcdTA1ZDhcdTIwMzNcdTA1ZDU7IDE2OiBcdTA1ZDhcdTIwMzNcdTA1ZDY7XG4iCisgICAgICAgICAgICAgICAvLyBnbyBiYWNrIHRvIHRoZSBub3JtYWwgbWV0aG9kIGF0IDE3CisgICAgICAgICsgIiAgICAxNzogPCUldGVuczxcdTIwMzM+JSVvbmVzPjtcbiIKKyAgICAgICAgICAgICAgIC8vIHJlcGVhdCB0aGUgcnVsZXMgZm9yIDEwIGFuZCAxMSB0byBjb3ZlciB0aGUgdmFsdWVzIGZyb20gMjAgdG8gOTkKKyAgICAgICAgKyAiICAgIDIwOiA8JSV0ZW5zPFx1MjAzMjsgPCUldGVuczxcdTIwMzM+JSVvbmVzPjtcbiIKKyAgICAgICAgLy8gdGhpcyBydWxlIHNldCBpcyB1c2VkIHRvIGZvcm1hdCBudW1iZXJzIGJlbG93IDEsMDAwLiAgSXQgcmVsaWVzIG9uCisgICAgICAgIC8vICUldGVucy1hbmQtb25lcyB0byBmb3JtYXQgdGhlIHRlbnMgYW5kIG9uZXMgcGxhY2VzLCBhbmQgYWRkcyBsb2dpYworICAgICAgICAvLyB0byBoYW5kbGUgdGhlIGhpZ2ggaHVuZHJlZHMgYW5kIHRoZSBudW1lcmFsIG1hcmtzIHdoZW4gdGhlcmUgaXMgbm8KKyAgICAgICAgLy8gdGVucyBkaWdpdC4gIE5vdGljZSBob3cgdGhlIHJ1bGVzIGFyZSBwYWlyZWQ6IGFsbCBvZiB0aGVzZSBwYWlycyBvZgorICAgICAgICAvLyBydWxlcyB0YWtlIGFkdmFudGFnZSBvZiB0aGUgcm9sbGJhY2sgcnVsZTogaWYgdGhlIHZhbHVlIChiZXR3ZWVuIDEwMAorICAgICAgICAvLyBhbmQgNDk5KSBpcyBhbiBldmVuIG11bHRpcGxlIG9mIDEwMCwgdGhlIHJ1bGUgZm9yIDEwMCBpcyB1c2VkOyBvdGhlcndpc2UsCisgICAgICAgIC8vIHRoZSBydWxlIGZvciAxMDEgKHRoZSBmb2xsb3dpbmcgcnVsZSkgaXMgdXNlZC4gIFRoZSBmaXJzdCBydWxlIGluIGVhY2gKKyAgICAgICAgLy8gcGFpciAodGhlIG9uZSBmb3IgdGhlIGV2ZW4gbXVsdGlwbGUpIHBsYWNlcyB0aGUgbnVtZXJhbCBtYXJrIGluIGEgZGlmZmVyZW50CisgICAgICAgIC8vIHNwb3QgdGhhbiB0aGUgc2Vjb25kIHJ1bGUgaW4gZWFjaCBwYWlyICh3aGljaCBrbm93cyB0aGVyZSBhcmUgbW9yZSBkaWdpdHMKKyAgICAgICAgLy8gYW5kIHJlbGllcyBvbiB0aGUgcnVsZSBzdXBwbHlpbmcgdGhlbSB0byBhbHNvIHN1cHBseSB0aGUgbnVtZXJhbCBtYXJrKS4KKyAgICAgICAgLy8gVGhlIGNhbGwgdG8gJSVudWxsIGluIGxpbmUgMTAgaXMgdGhlcmUgc2ltcGx5IHRvIGludm9rZSB0aGUgcm9sbGJhY2sKKyAgICAgICAgLy8gcnVsZS4KKyAgICAgICAgKyAiJSVsb3ctb3JkZXI6XG4iCisgICAgICAgICAgICAgICAvLyB0aGlzIHJ1bGUgaXMgb25seSBjYWxsZWQgd2hlbiB0aGVyZSBhcmUgb3RoZXIgY2hhcmFjdGVycyBiZWZvcmUuCisgICAgICAgICAgICAgICAvLyBJdCBwbGFjZXMgdGhlIG51bWVyYWwgbWFyayBiZWZvcmUgdGhlIGxhc3QgZGlnaXQKKyAgICAgICAgKyAiICAgIFx1MjAzMz0lJW9uZXM9O1xuIgorICAgICAgICAgICAgICAgLy8gdGhlIHJ1bGUgZm9yIDEwIHBsYWNlcyB0aGUgbnVtZXJhbCBtYXJrIGJlZm9yZSB0aGUgMTAgY2hhcmFjdGVyCisgICAgICAgICAgICAgICAvLyAoYmVjYXVzZSB3ZSBrbm93IGl0J3MgdGhlIGxhc3QgY2hhcmFjdGVyKTsgdGhlIHJ1bGUgZm9yIDExIHJlbGllcworICAgICAgICAgICAgICAgLy8gb24gJSV0ZW5zLWFuZC1vbmVzIHRvIHBsYWNlIHRoZSBudW1lcmFsIG1hcmsKKyAgICAgICAgKyAiICAgIDEwOiBcdTIwMzM8JSV0ZW5zPDsgPSUldGVucy1hbmQtb25lcz0+JSVudWxsPjtcbiIKKyAgICAgICAgICAgICAgIC8vIHRoZSBydWxlIGZvciAxMDAgcGxhY2VzIHRoZSBudW1lcmFsIG1hcmsgYmVmb3JlIHRoZSAxMDAgY2hhcmFjdGVyCisgICAgICAgICAgICAgICAvLyAod2Uga25vdyBpdCdzIHRoZSBsYXN0IGNoYXJhY3Rlcik7IHRoZSBydWxlIGZvciAxMDEgcmVjdXJzZXMgdG8KKyAgICAgICAgICAgICAgIC8vIGZpbGwgaW4gdGhlIHJlbWFpbmluZyBkaWdpdHMgYW5kIHRoZSBudW1lcmFsIG1hcmsKKyAgICAgICAgKyAiICAgIDEwMDogPCUlaHVuZHJlZHM8XHUyMDMyOyA8JSVodW5kcmVkczw+PjtcbiIKKyAgICAgICAgICAgICAgIC8vIHNwZWNpYWwtY2FzZSB0aGUgaHVuZHJlZHMgZnJvbSA1MDAgdG8gOTAwIGJlY2F1c2UgdGhleSBjb25zaXN0IG9mCisgICAgICAgICAgICAgICAvLyBtb3JlIHRoYW4gb25lIGNoYXJhY3RlcgorICAgICAgICArICIgICAgNTAwOiBcdTA1ZWFcdTIwMzNcdTA1ZTc7IFx1MDVlYVx1MDVlNz4+O1xuIgorICAgICAgICArICIgICAgNjAwOiBcdTA1ZWFcdTIwMzNcdTA1ZTg7IFx1MDVlYVx1MDVlOD4+O1xuIgorICAgICAgICArICIgICAgNzAwOiBcdTA1ZWFcdTIwMzNcdTA1ZTk7IFx1MDVlYVx1MDVlOT4+O1xuIgorICAgICAgICArICIgICAgODAwOiBcdTA1ZWFcdTIwMzNcdTA1ZWE7IFx1MDVlYVx1MDVlYT4+O1xuIgorICAgICAgICArICIgICAgOTAwOiBcdTA1ZWFcdTA1ZWFcdTIwMzNcdTA1ZTc7IFx1MDVlYVx1MDVlYVx1MDVlNz4+O1xuIgorICAgICAgICAvLyB0aGlzIHJ1bGUgc2V0IGlzIHVzZWQgdG8gZm9ybWF0IHZhbHVlcyBvZiAxLDAwMCBvciBtb3JlLiAgSGVyZSwgd2UgZG9uJ3QKKyAgICAgICAgLy8gd29ycnkgYWJvdXQgdGhlIG51bWVyYWwgbWFyaywgYW5kIHdlIGFkZCB0d28gZG90cyAodGhlIFVuaWNvZGUgY29tYmluaW5nCisgICAgICAgIC8vIGRpYWVyZXNpcyBjaGFyYWN0ZXIpIHRvIGV2ZXIgbGV0dGVyCisgICAgICAgICsgIiUlaGlnaC1vcmRlcjpcbiIKKyAgICAgICAgICAgICAgIC8vIHB1dCB0aGUgb25lcyBkaWdpdCwgZm9sbG93ZWQgYnkgdGhlIGRpYWVyZXNpcworICAgICAgICArICIgICAgPSUlb25lcz1cdTAzMDg7XG4iCisgICAgICAgICAgICAgICAvLyB0aGUgdGVucyBjYW4gYmUgaGFuZGxlZCB3aXRoIHJlY3Vyc2lvbgorICAgICAgICArICIgICAgMTA6IDwlJXRlbnM8XHUwMzA4Wz4+XTtcbiIKKyAgICAgICAgICAgICAgIC8vIHN0aWxsIGhhdmUgdG8gc3BlY2lhbC1jYXNlIDE1IGFuZCAxNgorICAgICAgICArICIgICAgMTU6IFx1MDVkOFx1MDMwOFx1MDVkNVx1MDMwODsgMTY6IFx1MDVkOFx1MDAzMDc4XHUwNWQ2XHUwMzA4O1xuIgorICAgICAgICAgICAgICAgLy8gYmFjayB0byB0aGUgcmVndWxhciBydWxlcyBhdCAxNworICAgICAgICArICIgICAgMTc6IDwlJXRlbnM8XHUwMzA4Wz4+XTtcbiIKKyAgICAgICAgICAgICAgIC8vIHRoZSBodW5kcmVkcyB3aXRoIHRoZSBkb3RzIGFkZGVkIChhbmQgd2l0aG91dCB3b3JyeWluZyBhYm91dAorICAgICAgICAgICAgICAgLy8gcGxhY2luZyB0aGUgbnVtZXJhbCBtYXJrKQorICAgICAgICArICIgICAgMTAwOiA8JSVodW5kcmVkczxcdTAzMDhbPj5dO1xuIgorICAgICAgICArICIgICAgNTAwOiBcdTA1ZWFcdTAzMDhcdTA1ZTdcdTAzMDhbPj5dO1xuIgorICAgICAgICArICIgICAgNjAwOiBcdTA1ZWFcdTAzMDhcdTA1ZThcdTAzMDhbPj5dO1xuIgorICAgICAgICArICIgICAgNzAwOiBcdTA1ZWFcdTAzMDhcdTA1ZTlcdTAzMDhbPj5dO1xuIgorICAgICAgICArICIgICAgODAwOiBcdTA1ZWFcdTAzMDhcdTA1ZWFcdTAzMDhbPj5dO1xuIgorICAgICAgICArICIgICAgOTAwOiBcdTA1ZWFcdTAzMDhcdTA1ZWFcdTAzMDhcdTA1ZTdcdTAzMDhbPj5dO1xuIgorICAgICAgICAvLyB0aGlzIHJ1bGUgc2V0IGRvZXNuJ3QgZG8gYW55dGhpbmc7IGl0J3MgdXNlZCBieSBzb21lIG90aGVyIHJ1bGVzIHRvCisgICAgICAgIC8vIGludm9rZSB0aGUgcm9sbGJhY2sgcnVsZQorICAgICAgICArICIgJSVudWxsOlxuIgorICAgICAgICArICIgICAgO1xuIgorICAgICAgICAvLyB0aGUgbWFpbiBydWxlIHNldC4KKyAgICAgICAgKyAiJW1haW46XG4iCisgICAgICAgICAgICAgICAvLyBmb3IgdmFsdWVzIGJlbG93IDEwLCBqdXN0IG91dHB1dCB0aGUgbGV0dGVyIGFuZCB0aGUgbnVtZXJhbCBtYXJrCisgICAgICAgICsgIiAgICA9JSVvbmVzPVx1MjAzMjtcbiIKKyAgICAgICAgICAgICAgIC8vIGZvciB2YWx1ZXMgZnJvbSAxMCB0byA5OSwgdXNlICUldGVucy1hbmQtb25lcyB0byBkbyB0aGUgZm9ybWF0dGluZworICAgICAgICArICIgICAgMTA6ID0lJXRlbnMtYW5kLW9uZXM9O1xuIgorICAgICAgICAgICAgICAgLy8gZm9yIHZhbHVlcyBmcm9tIDEwMCB0byA5OTksIHVzZSAlJWxvdy1vcmRlciB0byBkbyB0aGUgZm9ybWF0dGluZworICAgICAgICArICIgICAgMTAwOiA9JSVsb3ctb3JkZXI9O1xuIgorICAgICAgICAgICAgICAgLy8gZm9yIHZhbHVlcyBvZiAxLDAwMCBhbmQgb3ZlciwgdXNlICUlaGlnaC1vcmRlciB0byBkbyB0aGUgZm9ybWF0dGluZworICAgICAgICArICIgICAgMTAwMDogPCUlaGlnaC1vcmRlcjxbPiUlbG93LW9yZGVyPl07XG4iOworCisgICAgLyoqCisgICAgICogR3JlZWsgYWxwaGFiZXRpYyBudW1lcmFscy4gIFRoZSBHcmVla3MsIGJlZm9yZSBhZG9wdGluZyB0aGUgQXJhYmljIG51bWVyYWxzLAorICAgICAqIGFsc28gdXNlZCB0aGUgbGV0dGVycyBvZiB0aGVpciBhbHBoYWJldCBhcyBudW1lcmFscy4gIFRoZXJlIGFyZSB0aHJlZSBub3ctCisgICAgICogb2Jzb2xldGUgR3JlZWsgbGV0dGVycyB0aGF0IGFyZSB1c2VkIGFzIG51bWVyYWxzOyBtYW55IGZvbnRzIGRvbid0IGhhdmUgdGhlbS4KKyAgICAgKiBMYXJnZSBudW1iZXJzIHdlcmUgaGFuZGxlZCBtYW55IGRpZmZlcmVudCB3YXlzOyB0aGUgd2F5IHNob3duIGhlcmUgZGl2aWRlcworICAgICAqIGxhcmdlIG51bWJlcnMgaW50byBncm91cHMgb2YgZm91ciBsZXR0ZXJzIChmYWN0b3JzIG9mIDEwLDAwMCksIGFuZCBzZXBhcmF0ZXMKKyAgICAgKiB0aGUgZ3JvdXBzIHdpdGggdGhlIGNhcGl0YWwgbGV0dGVyIG11IChmb3IgbXlyaWFkKS4gIENhcGl0YWwgbGV0dGVycyBhcmUgdXNlZAorICAgICAqIGZvciB2YWx1ZXMgYmVsb3cgMTAsMDAwOyBzbWFsbCBsZXR0ZXJzIGZvciBoaWdoZXIgbnVtYmVycyAodG8gbWFrZSB0aGUgY2FwaXRhbAorICAgICAqIG11IHN0YW5kIG91dCkuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgZ3JlZWtBbHBoYWJldGljID0KKyAgICAgICAgLy8gdGhpcyBydWxlIHNldCBpcyB1c2VkIGZvciBmb3JtYXR0aW5nIG51bWJlcnMgYmVsb3cgMTAsMDAwLiAgSXQgdXNlcworICAgICAgICAvLyBjYXBpdGFsIGxldHRlcnMuCisgICAgICAgICIlJWxvdy1vcmRlcjpcbiIKKyAgICAgICAgKyAiICAgIChubyB6ZXJvKTsgXHUwMzkxOyBcdTAzOTI7IFx1MDM5MzsgXHUwMzk0OyBcdTAzOTU7IFx1MDNkYzsgXHUwMzk2OyBcdTAzOTc7IFx1MDM5ODtcbiIKKyAgICAgICAgKyAiICAgIDEwOiBcdTAzOTlbPj5dOyAyMDogXHUwMzlhWz4+XTsgMzA6IFx1MDM5Yls+Pl07IDQwOiBcdTAzOWNbPj5dOyA1MDogXHUwMzlkWz4+XTtcbiIKKyAgICAgICAgKyAiICAgIDYwOiBcdTAzOWVbPj5dOyA3MDogXHUwMzlmWz4+XTsgODA6IFx1MDNhMFs+Pl07IDkwOiBcdTAzZGVbPj5dO1xuIgorICAgICAgICArICIgICAgMTAwOiBcdTAzYTFbPj5dOyAyMDA6IFx1MDNhM1s+Pl07IDMwMDogXHUwM2E0Wz4+XTsgNDAwOiBcdTAzYTVbPj5dO1xuIgorICAgICAgICArICIgICAgNTAwOiBcdTAzYTZbPj5dOyA2MDA6IFx1MDNhN1s+Pl07IDcwMDogXHUwM2E4Wz4+XTsgODAwOiBcdTAzYTlbPj5dO1xuIgorICAgICAgICArICIgICAgOTAwOiBcdTAzZTBbPj5dO1xuIgorICAgICAgICAgICAgICAgLy8gdGhlIHRob3VzYW5kcyBhcmUgcmVwcmVzZW50ZWQgYnkgdGhlIHNhbWUgbnVtYmVycyBhcyB0aGUgb25lcywgYnV0CisgICAgICAgICAgICAgICAvLyB3aXRoIGEgY29tbWEtbGlrZSBtYXJrIGFkZGVkIHRvIHRoZWlyIGxlZnQgc2hvdWxkZXIKKyAgICAgICAgKyAiICAgIDEwMDA6IFx1MDM5MVx1MDMxM1s+Pl07IDIwMDA6IFx1MDM5Mlx1MDMxM1s+Pl07IDMwMDA6IFx1MDM5M1x1MDMxM1s+Pl07XG4iCisgICAgICAgICsgIiAgICA0MDAwOiBcdTAzOTRcdTAzMTNbPj5dOyA1MDAwOiBcdTAzOTVcdTAzMTNbPj5dOyA2MDAwOiBcdTAzZGNcdTAzMTNbPj5dO1xuIgorICAgICAgICArICIgICAgNzAwMDogXHUwMzk2XHUwMzEzWz4+XTsgODAwMDogXHUwMzk3XHUwMzEzWz4+XTsgOTAwMDogXHUwMzk4XHUwMzEzWz4+XTtcbiIKKyAgICAgICAgLy8gdGhpcyBydWxlIHNldCBpcyB0aGUgc2FtZSBhcyBhYm92ZSwgYnV0IHVzZXMgbG93ZXJjYXNlIGxldHRlcnMuICBJdCBpcyB1c2VkCisgICAgICAgIC8vIGZvciBmb3JtYXR0aW5nIHRoZSBncm91cHMgaW4gbnVtYmVycyBhYm92ZSAxMCwwMDAuCisgICAgICAgICsgIiUlaGlnaC1vcmRlcjpcbiIKKyAgICAgICAgKyAiICAgIChubyB6ZXJvKTsgXHUwM2IxOyBcdTAzYjI7IFx1MDNiMzsgXHUwM2I0OyBcdTAzYjU7IFx1MDNkYzsgXHUwM2I2OyBcdTAzYjc7IFx1MDNiODtcbiIKKyAgICAgICAgKyAiICAgIDEwOiBcdTAzYjlbPj5dOyAyMDogXHUwM2JhWz4+XTsgMzA6IFx1MDNiYls+Pl07IDQwOiBcdTAzYmNbPj5dOyA1MDogXHUwM2JkWz4+XTtcbiIKKyAgICAgICAgKyAiICAgIDYwOiBcdTAzYmVbPj5dOyA3MDogXHUwM2JmWz4+XTsgODA6IFx1MDNjMFs+Pl07IDkwOiBcdTAzZGVbPj5dO1xuIgorICAgICAgICArICIgICAgMTAwOiBcdTAzYzFbPj5dOyAyMDA6IFx1MDNjM1s+Pl07IDMwMDogXHUwM2M0Wz4+XTsgNDAwOiBcdTAzYzVbPj5dO1xuIgorICAgICAgICArICIgICAgNTAwOiBcdTAzYzZbPj5dOyA2MDA6IFx1MDNjN1s+Pl07IDcwMDogXHUwM2M4Wz4+XTsgODAwOiBcdTAzYzlbPj5dO1xuIgorICAgICAgICArICIgICAgOTAwOiBcdTAzYzBbPj5dO1xuIgorICAgICAgICArICIgICAgMTAwMDogXHUwM2IxXHUwMzEzWz4+XTsgMjAwMDogXHUwM2IyXHUwMzEzWz4+XTsgMzAwMDogXHUwM2IzXHUwMzEzWz4+XTtcbiIKKyAgICAgICAgKyAiICAgIDQwMDA6IFx1MDNiNFx1MDMxM1s+Pl07IDUwMDA6IFx1MDNiNVx1MDMxM1s+Pl07IDYwMDA6IFx1MDNkY1x1MDMxM1s+Pl07XG4iCisgICAgICAgICsgIiAgICA3MDAwOiBcdTAzYjZcdTAzMTNbPj5dOyA4MDAwOiBcdTAzYjdcdTAzMTNbPj5dOyA5MDAwOiBcdTAzYjhcdTAzMTNbPj5dO1xuIgorICAgICAgICAvLyB0aGUgbWFpbiBydWxlIHNldAorICAgICAgICArICIlbWFpbjpcbiIKKyAgICAgICAgICAgICAgIC8vIGZvciB2YWx1ZXMgYmVsb3cgMTAsMDAwLCBqdXN0IHVzZSAlJWxvdy1vcmRlcgorICAgICAgICArICIgICAgPSUlbG93LW9yZGVyPTtcbiIKKyAgICAgICAgICAgICAgIC8vIGZvciB2YWx1ZXMgYWJvdmUgMTAsMDAwLCBzcGxpdCBpbnRvIHR3byBncm91cHMgb2YgZm91ciBkaWdpdHMKKyAgICAgICAgICAgICAgIC8vIGFuZCBmb3JtYXQgZWFjaCB3aXRoICUlaGlnaC1vcmRlciAocHV0dGluZyBhbiBNIGluIGJldHdlbikKKyAgICAgICAgKyAiICAgIDEwLDAwMDogPCUlaGlnaC1vcmRlcjxcdTAzOWM+JSVoaWdoLW9yZGVyPjtcbiIKKyAgICAgICAgICAgICAgIC8vIGZvciB2YWx1ZXMgYWJvdmUgMTAwLDAwMCwwMDAsIGFkZCBhbm90aGVyIGdyb3VwIG9udG8gdGhlIGZyb250CisgICAgICAgICAgICAgICAvLyBhbmQgYW5vdGhlciBNCisgICAgICAgICsgIiAgICAxMDAsMDAwLDAwMDogPCUlaGlnaC1vcmRlcjxcdTAzOWM+PlxuIjsKKworICAgIC8qKgorICAgICAqIEEgbGlzdCBvZiBhbGwgdGhlIHNhbXBsZSBydWxlIHNldHMsIHVzZWQgYnkgdGhlIGRlbW8gcHJvZ3JhbS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZ1tdIHNhbXBsZVJ1bGVTZXRzID0KKyAgICAgICAgeyB1c0VuZ2xpc2gsCisgICAgICAgICAgdWtFbmdsaXNoLAorICAgICAgICAgIHNwYW5pc2gsCisgICAgICAgICAgZnJlbmNoLAorICAgICAgICAgIHN3aXNzRnJlbmNoLAorICAgICAgICAgIGdlcm1hbiwKKyAgICAgICAgICBpdGFsaWFuLAorICAgICAgICAgIHN3ZWRpc2gsCisgICAgICAgICAgZHV0Y2gsCisgICAgICAgICAgamFwYW5lc2UsCisgICAgICAgICAgZ3JlZWssCisgICAgICAgICAgcnVzc2lhbiwKKyAgICAgICAgICBoZWJyZXcsCisgICAgICAgICAgb3JkaW5hbCwKKyAgICAgICAgICBtZXNzYWdlMSwKKyAgICAgICAgICBkb2xsYXJzQW5kQ2VudHMsCisgICAgICAgICAgZGVjaW1hbEFzRnJhY3Rpb24sCisgICAgICAgICAgY2xvc2VzdEZyYWN0aW9uLAorICAgICAgICAgIHN0b2NrLAorICAgICAgICAgIGFiYkVuZ2xpc2gsCisgICAgICAgICAgdW5pdHMsCisgICAgICAgICAgbWVzc2FnZTIsCisgICAgICAgICAgZG96ZW5zLAorICAgICAgICAgIGR1cmF0aW9uSW5TZWNvbmRzLAorICAgICAgICAgIGR1cmF0aW9uSW5Ib3VycywKKyAgICAgICAgICBwb3VuZHNTaGlsbGluZ3NBbmRQZW5jZSwKKyAgICAgICAgICBhcmFiaWNOdW1lcmFscywKKyAgICAgICAgICB3b3Jkc0ZvckRpZ2l0cywKKyAgICAgICAgICBjaGluZXNlUGxhY2VWYWx1ZSwKKyAgICAgICAgICByb21hbk51bWVyYWxzLAorICAgICAgICAgIGhlYnJld0FscGhhYmV0aWMsCisgICAgICAgICAgZ3JlZWtBbHBoYWJldGljIH07CisKKyAgICAvKioKKyAgICAgKiBUaGUgZGlzcGxheWFibGUgbmFtZXMgZm9yIGFsbCB0aGUgc2FtcGxlIHJ1bGUgc2V0cywgaW4gdGhlIHNhbWUgb3JkZXIgYXMKKyAgICAgKiB0aGUgcHJlY2VkaW5nIGFycmF5LgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nW10gc2FtcGxlUnVsZVNldE5hbWVzID0KKyAgICAgICAgeyAiRW5nbGlzaCAoVVMpIiwKKyAgICAgICAgICAiRW5nbGlzaCAoVUspIiwKKyAgICAgICAgICAiU3BhbmlzaCIsCisgICAgICAgICAgIkZyZW5jaCAoRnJhbmNlKSIsCisgICAgICAgICAgIkZyZW5jaCAoU3dpdHplcmxhbmQpIiwKKyAgICAgICAgICAiR2VybWFuIiwKKyAgICAgICAgICAiSXRhbGlhbiIsCisgICAgICAgICAgIlN3ZWRpc2giLAorICAgICAgICAgICJEdXRjaCIsCisgICAgICAgICAgIkphcGFuZXNlIiwKKyAgICAgICAgICAiR3JlZWsiLAorICAgICAgICAgICJSdXNzaWFuIiwKKyAgICAgICAgICAiSGVicmV3IiwKKyAgICAgICAgICAiRW5nbGlzaCBvcmRpbmFsIGFiYnJldmlhdGlvbnMiLAorICAgICAgICAgICJTaW1wbGUgbWVzc2FnZSBmb3JtYXR0aW5nIiwKKyAgICAgICAgICAiRG9sbGFycyBhbmQgY2VudHMiLAorICAgICAgICAgICJEZWNpbWFscyBhcyBmcmFjdGlvbnMiLAorICAgICAgICAgICJDbG9zZXN0IGZyYWN0aW9uIiwKKyAgICAgICAgICAiU3RvY2sgcHJpY2VzIiwKKyAgICAgICAgICAiQWJicmV2aWF0ZWQgVVMgRW5nbGlzaCIsCisgICAgICAgICAgIkNoYW5naW5nIGRpbWVuc2lvbnMiLAorICAgICAgICAgICJDb21wbGV4IG1lc3NhZ2UgZm9ybWF0dGluZyIsCisgICAgICAgICAgIkRvemVucyIsCisgICAgICAgICAgIkR1cmF0aW9uICh2YWx1ZSBpbiBzZWNvbmRzKSIsCisgICAgICAgICAgIkR1cmF0aW9uICh2YWx1ZSBpbiBob3VycykiLAorICAgICAgICAgICJQb3VuZHMsIHNoaWxsaW5ncywgYW5kIHBlbmNlIiwKKyAgICAgICAgICAiQXJhYmljIG51bWVyYWxzIiwKKyAgICAgICAgICAiV29yZHMgZm9yIGRpZ2l0cyIsCisgICAgICAgICAgIkNoaW5lc2UgcGxhY2UtdmFsdWUgbm90YXRpb24iLAorICAgICAgICAgICJSb21hbiBudW1lcmFscyIsCisgICAgICAgICAgIkhlYnJldyBhaGxwaGFiZXRpYyBudW1lcmFscyIsCisgICAgICAgICAgIkdyZWVrIGFscGhhYmV0aWMgbnVtZXJhbHMiIH07CisKKyAgICAvKioKKyAgICAgKiBUaGUgYmFzZSBsb2NhbGUgZm9yIGVhY2ggb2YgdGhlIHNhbXBsZSBydWxlIHNldHMuICBUaGUgbG9jYWxlIGlzIHVzZWQgdG8KKyAgICAgKiBkZXRlcm1pbmUgRGVjaW1hbEZvcm1hdCBiZWhhdmlvciwgbGVuaWVudC1wYXJzZSBiZWhhdmlvciwgYW5kIHRleHQtZGlzcGxheQorICAgICAqIHNlbGVjdGlvbiAod2UgaGF2ZSBhIGhhY2sgaW4gaGVyZSB0byBhbGxvdyBkaXNwbGF5IG9mIG5vbi1MYXRpbiBzY3JpcHRzKS4KKyAgICAgKiBOdWxsIG1lYW5zIHRoZSBsb2NhbGUgc2V0dGluZyBpcyBpcnJlbGV2YW50IGFuZCB0aGUgZGVmYXVsdCBjYW4gYmUgdXNlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIExvY2FsZVtdIHNhbXBsZVJ1bGVTZXRMb2NhbGVzID0KKyAgICAgICAgeyBMb2NhbGUuVVMsCisgICAgICAgICAgTG9jYWxlLlVLLAorICAgICAgICAgIG5ldyBMb2NhbGUoImVzIiwgIiIsICIiKSwKKyAgICAgICAgICBMb2NhbGUuRlJBTkNFLAorICAgICAgICAgIG5ldyBMb2NhbGUoImZyIiwgIkNIIiwgIiIpLAorICAgICAgICAgIExvY2FsZS5HRVJNQU4sCisgICAgICAgICAgTG9jYWxlLklUQUxJQU4sCisgICAgICAgICAgbmV3IExvY2FsZSgic3YiLCAiIiwgIiIpLAorICAgICAgICAgIG5ldyBMb2NhbGUoIm5sIiwgIiIsICIiKSwKKyAgICAgICAgICBMb2NhbGUuSkFQQU5FU0UsCisgICAgICAgICAgbmV3IExvY2FsZSgiZWwiLCAiIiwgIiIpLAorICAgICAgICAgIG5ldyBMb2NhbGUoInJ1IiwgIiIsICIiKSwKKyAgICAgICAgICBuZXcgTG9jYWxlKCJpdyIsICIiLCAiIiksCisgICAgICAgICAgTG9jYWxlLkVOR0xJU0gsCisgICAgICAgICAgTG9jYWxlLkVOR0xJU0gsCisgICAgICAgICAgTG9jYWxlLlVTLAorICAgICAgICAgIExvY2FsZS5FTkdMSVNILAorICAgICAgICAgIG51bGwsCisgICAgICAgICAgbnVsbCwKKyAgICAgICAgICBMb2NhbGUuRU5HTElTSCwKKyAgICAgICAgICBudWxsLAorICAgICAgICAgIExvY2FsZS5FTkdMSVNILAorICAgICAgICAgIExvY2FsZS5FTkdMSVNILAorICAgICAgICAgIG51bGwsCisgICAgICAgICAgbnVsbCwKKyAgICAgICAgICBMb2NhbGUuVUssCisgICAgICAgICAgbnVsbCwKKyAgICAgICAgICBMb2NhbGUuRU5HTElTSCwKKyAgICAgICAgICBuZXcgTG9jYWxlKCJ6aCIsICIiLCAiIiksCisgICAgICAgICAgbnVsbCwKKyAgICAgICAgICBuZXcgTG9jYWxlKCJpdyIsICIiLCAiIiksCisgICAgICAgICAgbmV3IExvY2FsZSgiZWwiLCAiIiwgIiIpLAorICAgICAgICAgIG51bGwgfTsKKworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZ1tdIHNhbXBsZVJ1bGVTZXRDb21tZW50YXJ5ID0geworICAgICAgICAgICAgIlRoaXMgZGVtb25zdHJhdGlvbiB2ZXJzaW9uIG9mIHRoZSAiCisgICAgICAgICAgICArICJVLlMuIEVuZ2xpc2ggc3BlbGxvdXQgcnVsZXMgaGFzIGZvdXIgdmFyaWFudHM6IDEpICVzaW1wbGlmaWVkIGlzIGEgIgorICAgICAgICAgICAgKyAic2V0IG9mIHJ1bGVzIHNob3dpbmcgdGhlIHNpbXBsZSBtZXRob2Qgb2Ygc3BlbGxpbmcgb3V0IG51bWJlcnMgaW4gIgorICAgICAgICAgICAgKyAiRW5nbGlzaDogMjg5IGlzIGZvcm1hdHRlZCBhcyBcInR3byBodW5kcmVkIGVpZ2h0eS1uaW5lXCIuICAyKSAlYWx0LXRlZW5zICIKKyAgICAgICAgICAgICsgImlzIHRoZSBzYW1lIGFzICVzaW1wbGlmaWVkLCBleGNlcHQgdGhhdCB2YWx1ZXMgYmV0d2VlbiAxLDAwMCBhbmQgOSw5OTkgIgorICAgICAgICAgICAgKyAid2hvc2UgaHVuZHJlZHMgcGxhY2UgaXNuJ3QgemVybyBhcmUgZm9ybWF0dGVkIGluIGh1bmRyZWRzLiAgRm9yIGV4YW1wbGUsICIKKyAgICAgICAgICAgICsgIjEsOTgzIGlzIGZvcm1hdHRlZCBhcyBcIm5pbmV0ZWVuIGh1bmRyZWQgZWlnaHR5LXRocmVlLFwiIGFuZCAyLDE4MyBpcyAiCisgICAgICAgICAgICArICJmb3JtYXR0ZWQgYXMgXCJ0d2VudHktb25lIGh1bmRyZWQgZWlnaHR5LXRocmVlLFwiIGJ1dCAyLDA4MyBpcyBzdGlsbCAiCisgICAgICAgICAgICArICJmb3JtYXR0ZWQgYXMgXCJ0d28gdGhvdXNhbmQgZWlnaHR5LXRocmVlLlwiICAzKSAlb3JkaW5hbCBmb3JtYXRzIHRoZSAiCisgICAgICAgICAgICArICJ2YWx1ZXMgYXMgb3JkaW5hbCBudW1iZXJzIGluIEVuZ2xpc2ggKGUuZy4sIDI4OSBpcyBcInR3byBodW5kcmVkIGVpZ2h0eS0iCisgICAgICAgICAgICArICJuaW50aFwiKS4gIDQpICVkZWZhdWx0IHVzZXMgYSBtb3JlIGNvbXBsaWNhdGVkIGFsZ29yaXRobSB0byBmb3JtYXQgIgorICAgICAgICAgICAgKyAibnVtYmVycyBpbiBhIG1vcmUgbmF0dXJhbCB3YXk6IDI4OSBpcyBmb3JtYXR0ZWQgYXMgXCJ0d28gaHVuZHJlZCBBTkQgIgorICAgICAgICAgICAgKyAiZWlnaHR5LW5pbmVcIiBhbmQgY29tbWFzIGFyZSBpbnNlcnRlZCBiZXR3ZWVuIHRoZSB0aG91c2FuZHMgZ3JvdXBzIGZvciAiCisgICAgICAgICAgICArICJ2YWx1ZXMgYWJvdmUgMTAwLDAwMC4iLAorCisgICAgICAgICAgICAiVS5LLiBFbmdsaXNoIGhhcyBvbmUgc2lnbmlmaWNhbnQgIgorICAgICAgICAgICAgKyAiZGlmZmVyZW5jZSBmcm9tIFUuUy4gRW5nbGlzaDogdGhlIG5hbWVzIGZvciB2YWx1ZXMgb2YgMSwwMDAsMDAwLDAwMCAiCisgICAgICAgICAgICArICJhbmQgaGlnaGVyLiAgSW4gQW1lcmljYW4gRW5nbGlzaCwgZWFjaCBzdWNjZXNzaXZlIFwiLWlsbGlvblwiIGlzIDEsMDAwICIKKyAgICAgICAgICAgICsgInRpbWVzIGdyZWF0ZXIgdGhhbiB0aGUgcHJlY2VkaW5nIG9uZTogMSwwMDAsMDAwLDAwMCBpcyBcIm9uZSBiaWxsaW9uXCIgIgorICAgICAgICAgICAgKyAiYW5kIDEsMDAwLDAwMCwwMDAsMDAwIGlzIFwib25lIHRyaWxsaW9uLlwiICBJbiBCcml0aXNoIEVuZ2xpc2gsIGVhY2ggIgorICAgICAgICAgICAgKyAic3VjY2Vzc2l2ZSBcIi1pbGxpb25cIiBpcyBvbmUgbWlsbGlvbiB0aW1lcyBncmVhdGVyIHRoYW4gdGhlIG9uZSBiZWZvcmU6ICIKKyAgICAgICAgICAgICsgIlwib25lIGJpbGxpb25cIiBpcyAxLDAwMCwwMDAsMDAwLDAwMCAob3Igd2hhdCBBbWVyaWNhbnMgd291bGQgY2FsbCBhICIKKyAgICAgICAgICAgICsgIlwidHJpbGxpb25cIiksIGFuZCBcIm9uZSB0cmlsbGlvblwiIGlzIDEsMDAwLDAwMCwwMDAsMDAwLDAwMCwwMDAuICAiCisgICAgICAgICAgICArICIxLDAwMCwwMDAsMDAwIGluIEJyaXRpc2ggRW5nbGlzaCBpcyBcIm9uZSB0aG91c2FuZCBtaWxsaW9uLlwiICAoVGhpcyAiCisgICAgICAgICAgICArICJ2YWx1ZSBpcyBzb21ldGltZXMgY2FsbGVkIGEgXCJtaWxsaWFyZCxcIiBidXQgdGhpcyB3b3JkIHNlZW1zIHRvIGhhdmUgIgorICAgICAgICAgICAgKyAiZmFsbGVuIGludG8gZGlzdXNlLikiLAorCisgICAgICAgICAgICAiVGhlIFNwYW5pc2ggcnVsZXMgYXJlIHF1aXRlIHNpbWlsYXIgdG8gIgorICAgICAgICAgICAgKyAidGhlIEVuZ2xpc2ggcnVsZXMsIGJ1dCB0aGVyZSBhcmUgc29tZSBpbXBvcnRhbnQgZGlmZmVyZW5jZXM6ICIKKyAgICAgICAgICAgICsgIkZpcnN0LCB3ZSBoYXZlIHRvIHByb3ZpZGUgc2VwYXJhdGUgcnVsZXMgZm9yIG1vc3Qgb2YgdGhlIHR3ZW50aWVzICIKKyAgICAgICAgICAgICsgImJlY2F1c2UgdGhlIG9uZXMgZGlnaXQgZnJlcXVlbnRseSBwaWNrcyB1cCBhbiBhY2NlbnQgbWFyayB0aGF0IGl0ICIKKyAgICAgICAgICAgICsgImRvZXNuJ3QgaGF2ZSB3aGVuIHN0YW5kaW5nIGFsb25lLiAgU2Vjb25kLCBlYWNoIG11bHRpcGxlIG9mIDEwMCBoYXMgIgorICAgICAgICAgICAgKyAidG8gYmUgc3BlY2lmaWVkIHNlcGFyYXRlbHkgYmVjYXVzZSB0aGUgbXVsdGlwbGllciBvbiAxMDAgdmVyeSBvZnRlbiAiCisgICAgICAgICAgICArICJjaGFuZ2VzIGZvcm0gaW4gdGhlIGNvbnRyYWN0aW9uOiA1MDAgaXMgXCJxdWluaWVudG9zLFwiIG5vdCAiCisgICAgICAgICAgICArICJcImNpbmNvY2llbnRvcy5cIiAgSW4gYWRkaXRpb24sIHRoZSB3b3JkIGZvciAxMDAgaXMgXCJjaWVuXCIgd2hlbiAiCisgICAgICAgICAgICArICJzdGFuZGluZyBhbG9uZSwgYnV0IGNoYW5nZXMgdG8gXCJjaWVudG9cIiB3aGVuIGZvbGxvd2VkIGJ5IG1vcmUgZGlnaXRzLiAgIgorICAgICAgICAgICAgKyAiVGhlcmUgYWxzbyBzb21lIG90aGVyIGRpZmZlcmVuY2VzLiIsCisKKyAgICAgICAgICAgICJGcmVuY2ggYWRkcyBzb21lIGludGVyZXN0aW5nIHF1aXJrcyBvZiBpdHMgIgorICAgICAgICAgICAgKyAib3duOiAxKSBUaGUgd29yZCBcImV0XCIgaXMgaW50ZXJwb3NlZCBiZXR3ZWVuIHRoZSB0ZW5zIGFuZCBvbmVzIGRpZ2l0cywgIgorICAgICAgICAgICAgKyAiYnV0IG9ubHkgaWYgdGhlIG9uZXMgZGlnaXQgaWYgMTogMjAgaXMgXCJ2aW5ndCxcIiBhbmQgMiBpcyBcInZpbmd0LWRldXgsXCIgIgorICAgICAgICAgICAgKyAiYnV0IDIxIGlzIFwidmluZ3QtZXQtdW4uXCIgIDIpICBUaGVyZSBhcmUgbm8gd29yZHMgZm9yIDcwLCA4MCwgb3IgOTAuICAiCisgICAgICAgICAgICArICJcInF1YXRyZS12aW5ndHNcIiAoXCJmb3VyIHR3ZW50aWVzXCIpIGlzIHVzZWQgZm9yIDgwLCBhbmQgdmFsdWVzIHByb2NlZWQgIgorICAgICAgICAgICAgKyAiYnkgc2NvcmUgZnJvbSA2MCB0byA5OSAoZS5nLiwgNzMgaXMgXCJzb2l4YW50ZS10cmVpemVcIiBbXCJzaXh0eS10aGlydGVlblwiXSkuICAiCisgICAgICAgICAgICArICJOdW1iZXJzIGZyb20gMSwxMDAgdG8gMSwxOTkgYXJlIHJlbmRlcmVkIGFzIGh1bmRyZWRzIHJhdGhlciB0aGFuICIKKyAgICAgICAgICAgICsgInRob3VzYW5kczogMSwxMDAgaXMgXCJvbnplIGNlbnRzXCIgKFwiZWxldmVuIGh1bmRyZWRcIiksIHJhdGhlciB0aGFuICIKKyAgICAgICAgICAgICsgIlwibWlsbGUgY2VudFwiIChcIm9uZSB0aG91c2FuZCBvbmUgaHVuZHJlZFwiKSIsCisKKyAgICAgICAgICAgICJTd2lzcyBGcmVuY2ggZGlmZmVycyBmcm9tIEZyZW5jaCBGcmVuY2ggIgorICAgICAgICAgICAgKyAiaW4gdGhhdCBpdCBkb2VzIGhhdmUgd29yZHMgZm9yIDcwLCA4MCwgYW5kIDkwLiAgVGhpcyBydWxlIHNldCBzaG93cyB0aGVtLCAiCisgICAgICAgICAgICArICJhbmQgaXMgc2ltcGxlciBhcyBhIHJlc3VsdC4iLAorCisgICAgICAgICAgICAiR2VybWFuIGFsc28gYWRkcyBzb21lIGludGVyZXN0aW5nICIKKyAgICAgICAgICAgICsgImNoYXJhY3RlcmlzdGljcy4gIEZvciB2YWx1ZXMgYmVsb3cgMSwwMDAsMDAwLCBudW1iZXJzIGFyZSBjdXN0b21hcmlseSAiCisgICAgICAgICAgICArICJ3cml0dGVuIG91dCBhcyBhIHNpbmdsZSB3b3JkLiAgQW5kIHRoZSBvbmVzIGRpZ2l0IFBSRUNFREVTIHRoZSB0ZW5zICIKKyAgICAgICAgICAgICsgImRpZ2l0IChlLmcuLCAyMyBpcyBcImRyZWl1bmR6d2FuemlnLFwiIG5vdCBcInp3YW56aWd1bmRkcmVpXCIpLiIsCisKKyAgICAgICAgICAgICJMaWtlIEdlcm1hbiwgbW9zdCBJdGFsaWFuIG51bWJlcnMgYXJlICIKKyAgICAgICAgICAgICsgIndyaXR0ZW4gYXMgc2luZ2xlIHdvcmRzLiAgV2hhdCBtYWtlcyB0aGVzZSBydWxlcyBjb21wbGljYXRlZCBpcyB0aGUgcnVsZSAiCisgICAgICAgICAgICArICJ0aGF0IHNheXMgdGhhdCB3aGVuIGEgd29yZCBlbmRpbmcgaW4gYSB2b3dlbCBhbmQgYSB3b3JkIGJlZ2lubmluZyB3aXRoICIKKyAgICAgICAgICAgICsgImEgdm93ZWwgYXJlIGNvbWJpbmVkIGludG8gYSBjb21wb3VuZCwgdGhlIHZvd2VsIGlzIGRyb3BwZWQgZnJvbSB0aGUgIgorICAgICAgICAgICAgKyAiZW5kIG9mIHRoZSBmaXJzdCB3b3JkOiAxODAgaXMgXCJjZW50b3R0YW50YSxcIiBub3QgXCJjZW50b290dGFudGEuXCIgICIKKyAgICAgICAgICAgICsgIlRoZSBjb21wbGV4aXR5IG9mIHRoaXMgcnVsZSBzZXQgaXMgdG8gcHJvZHVjZSB0aGlzIGJlaGF2aW9yLiIsCisKKyAgICAgICAgICAgICJTcGVsbG91dCBydWxlcyBmb3IgU3dlZGlzaC4iLAorCisgICAgICAgICAgICAiU3BlbGxvdXQgcnVsZXMgZm9yIER1dGNoLiAgTm90aWNlIHRoYXQgaW4gRHV0Y2gsIGFzIGluIEdlcm1hbiwiCisgICAgICAgICAgICArICJ0aGUgb25lcyBkaWdpdCBwcmVjZWRlcyB0aGUgdGVucyBkaWdpdC4iLAorCisgICAgICAgICAgICAiSW4gSmFwYW5lc2UsIHRoZXJlIHJlYWxseSBpc24ndCBhbnkgIgorICAgICAgICAgICAgKyAiZGlzdGluY3Rpb24gYmV0d2VlbiBhIG51bWJlciB3cml0dGVuIG91dCBpbiBkaWdpdHMgYW5kIGEgbnVtYmVyICIKKyAgICAgICAgICAgICsgIndyaXR0ZW4gb3V0IGluIHdvcmRzOiB0aGUgaWRlb2dyYXBoaWMgY2hhcmFjdGVycyBhcmUgYm90aCBkaWdpdHMgIgorICAgICAgICAgICAgKyAiYW5kIHdvcmRzLiAgVGhpcyBydWxlIHNldCBwcm92aWRlcyB0d28gdmFyaWFudHM6ICAldHJhZGl0aW9uYWwgIgorICAgICAgICAgICAgKyAidXNlcyB0aGUgdHJhZGl0aW9uYWwgQ0pLIG51bWVyYWxzICh3aGljaCBhcmUgYWxzbyB1c2VkIGluIENoaW5hICIKKyAgICAgICAgICAgICsgImFuZCBLb3JlYSkuICAlZmluYW5jaWFsIHVzZXMgYWx0ZXJuYXRlIGlkZW9ncmFwaHMgZm9yIG1hbnkgbnVtYmVycyAiCisgICAgICAgICAgICArICJ0aGF0IGFyZSBoYXJkZXIgdG8gYWx0ZXIgdGhhbiB0aGUgdHJhZGl0aW9uYWwgbnVtZXJhbHMgKG9uZSBjb3VsZCAiCisgICAgICAgICAgICArICJmYWlybHkgZWFzaWx5IGNoYW5nZSBhIG9uZSB0byAiCisgICAgICAgICAgICArICJhIHRocmVlIGp1c3QgYnkgYWRkaW5nIHR3byBzdHJva2VzLCBmb3IgZXhhbXBsZSkuICBUaGlzIGlzIGFsc28gZG9uZSBpbiAiCisgICAgICAgICAgICArICJ0aGUgb3RoZXIgY291bnRyaWVzIHVzaW5nIENoaW5lc2UgaWRvZ3JhcGhzLCBidXQgZGlmZmVyZW50IGlkZW9ncmFwaHMgIgorICAgICAgICAgICAgKyAiYXJlIHVzZWQgaW4gdGhvc2UgcGxhY2VzLiIsCisKKyAgICAgICAgICAgICJBZ2FpbiBpbiBHcmVlayB3ZSBoYXZlIHRvIHN1cHBseSB0aGUgd29yZHMgIgorICAgICAgICAgICAgKyAiZm9yIHRoZSBtdWx0aXBsZXMgb2YgMTAwIGJlY2F1c2UgdGhleSBjYW4ndCBiZSBkZXJpdmVkIGFsZ29yaXRobWljYWxseS4gICIKKyAgICAgICAgICAgICsgIkFsc28sIHRoZSB0ZW5zIGRnaXQgY2hhbmdlcyBmb3JtIHdoZW4gZm9sbG93ZWQgYnkgYSBvbmVzIGRpZ2l0OiBhbiAiCisgICAgICAgICAgICArICJhY2NlbnQgbWFyayBkaXNhcHBlYXJzIGZyb20gdGhlIHRlbnMgZGlnaXQgYW5kIG1vdmVzIHRvIHRoZSBvbmVzIGRpZ2l0LiAgIgorICAgICAgICAgICAgKyAiVGhlcmVmb3JlLCBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBbXSBub3RhdGlvbiwgd2UgYWN0dWFsbHkgaGF2ZSB0byB1c2UgIgorICAgICAgICAgICAgKyAidHdvIHNlcGFyYXRlIHJ1bGVzIGZvciBlYWNoIG11bHRpcGxlIG9mIDEwIHRvIHNob3cgdGhlIHR3byBmb3JtcyBvZiAiCisgICAgICAgICAgICArICJ0aGUgd29yZC4iLAorCisgICAgICAgICAgICAiU3BlbGxvdXQgcnVsZXMgZm9yIFJ1c3NpYW4uIiwKKworICAgICAgICAgICAgIlNwZWxsb3V0IHJ1bGVzIGZvciBIZWJyZXcuICBIZWJyZXcgYWN0dWFsbHkgaGFzIGluZmxlY3RlZCBmb3JtcyBmb3IgIgorICAgICAgICAgICAgKyAibW9zdCBvZiB0aGUgbG93ZXItb3JkZXIgbnVtYmVycy4gIFRoZSBtYXNjdWxpbmUgZm9ybXMgYXJlIHNob3duICIKKyAgICAgICAgICAgICsgImhlcmUuIiwKKworICAgICAgICAgICAgIlRoaXMgcnVsZSBzZXQgYWRkcyBhbiBFbmdsaXNoIG9yZGluYWwgYWJicmV2aWF0aW9uIHRvIHRoZSBlbmQgb2YgYSAiCisgICAgICAgICAgICArICJudW1iZXIuICBGb3IgZXhhbXBsZSwgMiBpcyBmb3JtYXR0ZWQgYXMgXCIybmRcIi4gIFBhcnNpbmcgZG9lc24ndCB3b3JrIHdpdGggIgorICAgICAgICAgICAgKyAidGhpcyBydWxlIHNldC4gIFRvIHBhcnNlLCB1c2UgRGVjaW1hbEZvcm1hdCBvbiB0aGUgbnVtZXJhbC4iLAorCisgICAgICAgICAgICAiVGhpcyBpcyBhIHNpbXBsZSBtZXNzYWdlLWZvcm1hdHRpbmcgZXhhbXBsZS4gIE5vcm1hbGx5IG9uZSB3b3VsZCAiCisgICAgICAgICAgICArICJ1c2UgQ2hvaWNlRm9ybWF0IGFuZCBNZXNzYWdlRm9ybWF0IHRvIGRvIHNvbWV0aGluZyB0aGlzIHNpbXBsZSwgIgorICAgICAgICAgICAgKyAiYnV0IHRoaXMgc2hvd3MgaXQgY291bGQgYmUgZG9uZSB3aXRoIFJ1bGVCYXNlZE51bWJlckZvcm1hdCB0b28uICAiCisgICAgICAgICAgICArICJBIG1lc3NhZ2UtZm9ybWF0dGluZyBleGFtcGxlIHRoYXQgbWlnaHQgd29yayBiZXR0ZXIgd2l0aCAiCisgICAgICAgICAgICArICJSdWxlQmFzZWROdW1iZXJGb3JtYXQgYXBwZWFycyBsYXRlci4iLAorCisgICAgICAgICAgICAiVGhlIG5leHQgZmV3IGV4YW1wbGVzIGRlbW9uc3RyYXRlIGZyYWN0aW9uIGhhbmRsaW5nLiAgIgorICAgICAgICAgICAgKyAiVGhpcyBleGFtcGxlIGZvcm1hdHMgYSBudW1iZXIgaW4gb25lIG9mIHRoZSB0d28gc3R5bGVzIG9mdGVuIHVzZWQgIgorICAgICAgICAgICAgKyAib24gY2hlY2tzLiAgJWRvbGxhcnMtYW5kLWh1bmRyZWR0aHMgZm9ybWF0cyBjZW50cyBhcyBodW5kcmVkdGhzIG9mICIKKyAgICAgICAgICAgICsgImEgZG9sbGFyICgyMy40MCBjb21lcyBvdXQgYXMgXCJ0d2VudHktdGhyZWUgYW5kIDQwLzEwMCBkb2xsYXJzXCIpLiAgIgorICAgICAgICAgICAgKyAiJWRvbGxhcnMtYW5kLWNlbnRzIGZvcm1hdHMgaW4gZG9sbGFycyBhbmQgY2VudHMgKDIzLjQwIGNvbWVzIG91dCBhcyAiCisgICAgICAgICAgICArICJcInR3ZW50eS10aHJlZSBkb2xsYXJzIGFuZCBmb3J0eSBjZW50c1wiKSIsCisKKyAgICAgICAgICAgICJUaGlzIHJ1bGUgc2V0IHNob3dzIHRoZSBmcmFjdGlvbmFsIHBhcnQgb2YgdGhlIG51bWJlciBhcyBhIGZyYWN0aW9uICIKKyAgICAgICAgICAgICsgIndpdGggYSBwb3dlciBvZiAxMCBhcyB0aGUgZGVub21pbmF0b3IuICBTb21lIGxhbmd1YWdlcyBkb24ndCBzcGVsbCAiCisgICAgICAgICAgICArICJvdXQgdGhlIGZyYWN0aW9uYWwgcGFydCBvZiBhIG51bWJlciBhcyBcInBvaW50IG9uZSB0d28gdGhyZWUsXCIgYnV0ICIKKyAgICAgICAgICAgICsgImFsd2F5cyByZW5kZXIgaXQgYXMgYSBmcmFjdGlvbi4gIElmIHdlIHN0aWxsIHdhbnQgdG8gdHJlYXQgdGhlIGZyYWN0aW9uYWwgIgorICAgICAgICAgICAgKyAicGFydCBvZiB0aGUgbnVtYmVyIGFzIGEgZGVjaW1hbCwgdGhlbiB0aGUgZnJhY3Rpb24ncyBkZW5vbWluYXRvciAiCisgICAgICAgICAgICArICJpcyBhbHdheXMgYSBwb3dlciBvZiAxMC4gIFRoaXMgZXhhbXBsZSBkb2VzIHRoYXQ6IDIzLjEyNSBpcyBmb3JtYXR0ZWQgIgorICAgICAgICAgICAgKyAiYXMgXCJ0d2VudHktdGhyZWUgYW5kIG9uZSBodW5kcmVkIHR3ZW50eS1maXZlIHRob3VzYW5kdGhzXCIgKGFzIG9wcG9zZWQgIgorICAgICAgICAgICAgKyAidG8gXCJ0d2VudHktdGhyZWUgcG9pbnQgb25lIHR3byBmaXZlXCIgb3IgXCJ0d2VudHktdGhyZWUgYW5kIG9uZSBlaWdodGhcIikuIiwKKworICAgICAgICAgICAgIk51bWJlciB3aXRoIGNsb3Nlc3QgZnJhY3Rpb24uICBUaGlzIGV4YW1wbGUgZm9ybWF0cyBhIHZhbHVlIHVzaW5nICIKKyAgICAgICAgICAgICsgIm51bWVyYWxzLCBidXQgc2hvd3MgdGhlIGZyYWN0aW9uYWwgcGFydCBhcyBhIHJhdGlvIChmcmFjdGlvbikgcmF0aGVyICIKKyAgICAgICAgICAgICsgInRoYW4gYSBkZWNpbWFsLiAgVGhlIGZyYWN0aW9uIGFsd2F5cyBoYXMgYSBkZW5vbWluYXRvciBiZXR3ZWVuIDIgYW5kIDEwLiIsCisKKyAgICAgICAgICAgICJBbWVyaWNhbiBzdG9jay1wcmljZSBmb3JtYXR0aW5nLiAgTm9uLWludGVncmFsIHN0b2NrIHByaWNlcyBhcmUgc3RpbGwgIgorICAgICAgICAgICAgKyAiZ2VuZXJhbGx5IHNob3duIGluIGVpZ2h0aHMgb3Igc2l4dGVlbnRocyBvZiBkb2xsYXJzIGluc3RlYWQgb2YgZG9sbGFycyAiCisgICAgICAgICAgICArICJhbmQgY2VudHMuICBUaGlzIGV4YW1wbGUgZm9ybWF0cyBzdG9jayBwcmljZXMgaW4gdGhpcyB3YXkgaWYgcG9zc2libGUsICIKKyAgICAgICAgICAgICsgImFuZCBpbiBkb2xsYXJzIGFuZCBjZW50cyBpZiBub3QuIiwKKworICAgICAgICAgICAgIlRoZSBuZXh0IGZldyBleGFtcGxlcyBkZW1vbnN0cmF0ZSB1c2luZyBhIFJ1bGVCYXNlZE51bWJlckZvcm1hdCB0byAiCisgICAgICAgICAgICArICJjaGFuZ2UgdGhlIHVuaXRzIGEgdmFsdWUgaXMgZGVub21pbmF0ZWQgaW4gZGVwZW5kaW5nIG9uIGl0cyBtYWduaXR1ZGUuICAiCisgICAgICAgICAgICArICJUaGUgZXhhbXBsZSBzaG93cyBsYXJnZSBudW1iZXJzIHRoZSB3YXkgdGhleSBvZnRlbiBhcHBlYXIgaXMgbndlc3BhcGVyczogIgorICAgICAgICAgICAgKyAiMSwyMDAsMDAwIGlzIGZvcm1hdHRlZCBhcyBcIjEuMiBtaWxsaW9uXCIuIiwKKworICAgICAgICAgICAgIlRoaXMgZXhhbXBsZSB0YWtlcyBhIG51bWJlciBvZiBtZXRlcnMgYW5kIGZvcm1hdHMgaXQgaW4gd2hhdGV2ZXIgdW5pdCAiCisgICAgICAgICAgICArICJ3aWxsIHByb2R1Y2UgYSBudW1iZXIgd2l0aCBmcm9tIG9uZSB0byB0aHJlZSBkaWdpdHMgYmVmb3JlIHRoZSBkZWNpbWFsICIKKyAgICAgICAgICAgICsgInBvaW50LiAgRm9yIGV4YW1wbGUsIDIzMCwwMDAgaXMgZm9ybWF0dGVkIGFzIFwiMjMwIGttXCIuIiwKKworICAgICAgICAgICAgIkEgbW9yZSBjb21wbGljYXRlZCBtZXNzYWdlLWZvcm1hdHRpbmcgZXhhbXBsZS4gIEhlcmUsIGluIGFkZGl0aW9uIHRvICIKKyAgICAgICAgICAgICsgImhhbmRsaW5nIHRoZSBzaW5ndWxhciBhbmQgcGx1cmFsIHZlcnNpb25zIG9mIHRoZSB3b3JkLCB0aGUgdmFsdWUgaXMgIgorICAgICAgICAgICAgKyAiZGVub21pbmF0ZWQgaW4gYnl0ZXMsIGtpbG9ieXRlcywgb3IgbWVnYWJ5dGVzIGRlcGVuZGluZyBvbiBpdHMgbWFnbml0dWRlLiAgIgorICAgICAgICAgICAgKyAiQWxzbyBub3RpY2UgdGhhdCBpdCBjb3JyZWN0bHkgdHJlYXRzIGEga2lsb2J5dGUgYXMgMSwwMjQgYnl0ZXMgKG5vdCAxLDAwMCksICIKKyAgICAgICAgICAgICsgImFuZCBhIG1lZ2FieXRlIGFzIDEsMDI0IGtpbG9ieXRlcyAobm90IDEsMDAwKS4iLAorCisgICAgICAgICAgICAiVGhpcyBleGFtcGxlIGZvcm1hdHMgYSBudW1iZXIgaW4gZG96ZW5zIGFuZCBncm9zcy4gIFRoaXMgaXMgaW50ZW5kZWQgdG8gIgorICAgICAgICAgICAgKyAiZGVtb25zdHJhdGUgaG93IHRoaXMgcnVsZSBzZXQgY2FuIGJlIHVzZWQgdG8gZm9ybWF0IG51bWJlcnMgaW4gc3lzdGVtcyAiCisgICAgICAgICAgICArICJvdGhlciB0aGFuIGJhc2UgMTAuICBUaGUgXCIvMTJcIiBhZnRlciB0aGUgcnVsZXMnIGJhc2UgdmFsdWVzIGNvbnRyb2xzIHRoaXMuICAiCisgICAgICAgICAgICArICJBbHNvIG5vdGljZSB0aGF0IHRoZSBiYXNlIGRvZXNuJ3QgaGF2ZSB0byBiZSBjb25zaXN0ZW50IHRocm91Z2hvdXQgdGhlICIKKyAgICAgICAgICAgICsgIndob2xlIHJ1bGUgc2V0OiB3ZSBnbyBiYWNrIHRvIGJhc2UgMTAgZm9yIHZhbHVlcyBvdmVyIDEsMDAwLiIsCisKKyAgICAgICAgICAgICJUaGUgbmV4dCBmZXcgZXhhbXBsZXMgc2hvdyBob3cgYSBzaW5nbGUgdmFsdWUgY2FuIGJlIGRpdmlkZWQgdXAgaW50byBtYWpvciAiCisgICAgICAgICAgICArICJhbmQgbWlub3IgdW5pdHMgdGhhdCBkb24ndCByZWxhdGUgdG8gZWFjaCBvdGhlciBieSBhIGZhY3RvciBvZiAxMC4gICIKKyAgICAgICAgICAgICsgIlRoaXMgZXhhbXBsZSBmb3JtYXRzIGEgbnVtYmVyIG9mIHNlY29uZHMgaW4gc2V4YWdlc2ltYWwgbm90YXRpb24gIgorICAgICAgICAgICAgKyAiKGkuZS4sIGhvdXJzLCBtaW51dGVzLCBhbmQgc2Vjb25kcykuICAld2l0aC13b3JkcyBmb3JtYXRzIGl0IHdpdGggIgorICAgICAgICAgICAgKyAid29yZHMgKDM3NDAgaXMgXCIxIGhvdXIsIDIgbWludXRlcywgMjAgc2Vjb25kc1wiKSBhbmQgJWluLW51bWVyYWxzICIKKyAgICAgICAgICAgICsgImZvcm1hdHMgaXQgZW50aXJlbHkgaW4gbnVtZXJhbHMgKDM3NDAgaXMgXCIxOjAyOjIwXCIpLiIsCisKKyAgICAgICAgICAgICJUaGlzIGV4YW1wbGUgZm9ybWF0cyBhIG51bWJlciBvZiBob3VycyBpbiBzZXhhZ2VzaW1hbCBub3RhdGlvbiAoaS5lLiwgIgorICAgICAgICAgICAgKyAiaG91cnMsIG1pbnV0ZXMsIGFuZCBzZWNvbmRzKS4gICV3aXRoLXdvcmRzIGZvcm1hdHMgdGhlIHZhbHVlIHVzaW5nICIKKyAgICAgICAgICAgICsgIndvcmRzIGZvciB0aGUgdW5pdHMsIGFuZCAlaW4tbnVtZXJhbHMgZm9ybWF0cyB0aGUgdmFsdWUgdXNpbmcgb25seSAiCisgICAgICAgICAgICArICJudW1lcmFscy4iLAorCisgICAgICAgICAgICAiVGhpcyBydWxlIHNldCBmb3JtYXRzIGEgbnVtYmVyIG9mIHBvdW5kcyBhcyBwb3VuZHMsIHNoaWxsaW5ncywgYW5kICIKKyAgICAgICAgICAgICsgInBlbmNlIGluIHRoZSBvbGQgRW5nbGlzaCBzeXN0ZW0gb2YgY3VycmVuY3kuIiwKKworICAgICAgICAgICAgIlRoZXNlIGV4YW1wbGVzIHNob3cgaG93IFJ1bGVCYXNlZE51bWJlckZvcm1hdCBjYW4gYmUgdXNlZCB0byBmb3JtYXQgIgorICAgICAgICAgICAgKyAibnVtYmVycyB1c2luZyBub24tcG9zaXRpb25hbCBudW1lcmF0aW9uIHN5c3RlbXMuICAiCisgICAgICAgICAgICArICJUaGlzIGV4YW1wbGUgZm9ybWF0cyBudW1iZXJzIGluIEFyYWJpYyBudW1lcmFscy4gICIKKyAgICAgICAgICAgICsgIk5vcm1hbGx5LCB5b3UnZCBkbyB0aGlzIHdpdGggRGVjaW1hbEZvcm1hdCwgYnV0IHRoaXMgc2hvd3MgdGhhdCAiCisgICAgICAgICAgICArICJSdWxlQmFzZWROdW1iZXJGb3JtYXQgY2FuIGhhbmRsZSBpdCB0b28uIiwKKworICAgICAgICAgICAgIlRoaXMgZXhhbXBsZSBmb2xsb3dzIHRoZSBzYW1lIHBhdHRlcm4gYXMgdGhlIEFyYWJpYy1udW1lcmFscyAiCisgICAgICAgICAgICArICJleGFtcGxlLCBidXQgdXNlcyB3b3JkcyBmb3IgdGhlIHZhcmlvdXMgZGlnaXRzIChlLmcuLCAxMjMgY29tZXMgIgorICAgICAgICAgICAgKyAib3V0IGFzIFwib25lIHR3byB0aHJlZVwiKS4iLAorCisgICAgICAgICAgICAiVGhpcyBleGFtcGxlIGZvcm1hdHMgbnVtYmVycyB1c2luZyBDaGluZXNlIGNoYXJhY3RlcnMgaW4gdGhlIEFyYWJpYyAiCisgICAgICAgICAgICArICJwbGFjZS12YWx1ZSBtZXRob2QuICBUaGlzIHdhcyB1c2VkIGhpc3RvcmljYWxseSBpbiBDaGluYSBmb3IgYSB3aGlsZS4iLAorCisgICAgICAgICAgICAiUm9tYW4gbnVtZXJhbHMuICBUaGlzIGV4YW1wbGUgaGFzIHR3byB2YXJpYW50czogJW1vZGVybiBzaG93cyBob3cgbGFyZ2UgIgorICAgICAgICAgICAgKyAibnVtYmVycyBhcmUgdXN1YWxseSBoYW5kbGVkIHRvZGF5OyAlaGlzdG9yaWNhbCBzZXMgdGhlIG9sZGVyIHN5bWJvbHMgZm9yICIKKyAgICAgICAgICAgICsgInRob3VzYW5kcy4gIE5vdCBhbGwgb2YgdGhlIGNoYXJhY3RlcnMgYXJlIGRpc3BsYXlhYmxlIHdpdGggbW9zdCBmb250cy4iLAorCisgICAgICAgICAgICAiSGVicmV3IGFscGhhYmV0aWMgbnVtZXJhbHMuICBCZWZvcmUgYWRvcHRpb24gb2YgQXJhYmljIG51bWVyYWxzLCBIZWJyZXcgc3BlYWtlcnMgIgorICAgICAgICAgICAgKyAidXNlZCB0aGUgbGV0dGVyIG9mIHRoZWlyIGFscGhhYmV0IGFzIG51bWVyYWxzLiAgVGhlIGZpcnN0IG5pbmUgbGV0dGVycyBvZiAiCisgICAgICAgICAgICArICJ0aGUgYWxwaGFiZXQgcmVwZXNlbnRlZCB0aGUgdmFsdWVzIGZyb20gMSB0byA5LCB0aGUgc2Vjb25kIG5pbmUgbGV0dGVycyB0aGUgIgorICAgICAgICAgICAgKyAibXVsdGlwbGVzIG9mIDEwLCBhbmQgdGhlIHJlbWFpbmluZyBsZXR0ZXJzIHRoZSBtdWx0aXBsZXMgb2YgMTAwLiAgU2luY2UgdGhleSAiCisgICAgICAgICAgICArICJyYW4gb3V0IG9mIGxldHRlcnMgYXQgNDAwLCB0aGUgcmVtYWluaW5nIG11bHRpcGxlcyBvZiAxMDAgd2VyZSByZXByZXNlbnRlZCAiCisgICAgICAgICAgICArICJ1c2luZyBjb21iaW5hdGlvbnMgb2YgdGhlIGV4aXN0aW5nIGxldHRlcnMgZm9yIHRoZSBodW5kcmVkcy4gIE51bWJlcnMgd2VyZSAiCisgICAgICAgICAgICArICJkaXN0aW5ndWlzaGVkIGZyb20gd29yZHMgaW4gYSBudW1iZXIgb2YgZGlmZmVyZW50IHdheXM6IHRoZSB3YXkgc2hvd24gaGVyZSAiCisgICAgICAgICAgICArICJ1c2VzIGEgc2luZ2xlIG1hcmsgYWZ0ZXIgYSBudW1iZXIgY29uc2lzdGluZyBvZiBvbmUgbGV0dGVyLCBhbmQgYSBkb3VibGUgIgorICAgICAgICAgICAgKyAibWFyayBiZXR3ZWVuIHRoZSBsYXN0IHR3byBsZXR0ZXJzIG9mIGEgbnVtYmVyIGNvbnNpc3Rpbmcgb2YgdHdvIG9yIG1vcmUgIgorICAgICAgICAgICAgKyAibGV0dGVycy4gIFR3byBkb3RzIG92ZXIgYSBsZXR0ZXIgbXVsdGlwbGllZCBpdHMgdmFsdWUgYnkgMSwwMDAuICBBbHNvLCBzaW5jZSAiCisgICAgICAgICAgICArICJ0aGUgbGV0dGVyIGZvciAxMCBpcyB0aGUgZmlyc3QgbGV0dGVyIG9mIEdvZCdzIG5hbWUgYW5kIHRoZSBsZXR0ZXJzIGZvciA1IGFuZCA2ICIKKyAgICAgICAgICAgICsgImFyZSBsZXR0ZXJzIGluIEdvZCdzIG5hbWUsIHdoaWNoIHdhc24ndCBzdXBwb3NlZCB0byBiZSB3cml0dGVuIG9yIHNwb2tlbiwgMTUgYW5kICIKKyAgICAgICAgICAgICsgIjE2IHdlcmUgdXN1YWxseSB3cml0dGVuIGFzIDkgKyA2IGFuZCA5ICsgNyBpbnN0ZWFkIG9mIDEwICsgNSBhbmQgMTAgKyA2LiIsCisKKyAgICAgICAgICAgICJHcmVlayBhbHBoYWJldGljIG51bWVyYWxzLiAgVGhlIEdyZWVrcywgYmVmb3JlIGFkb3B0aW5nIHRoZSBBcmFiaWMgbnVtZXJhbHMsICIKKyAgICAgICAgICAgICsgImFsc28gdXNlZCB0aGUgbGV0dGVycyBvZiB0aGVpciBhbHBoYWJldCBhcyBudW1lcmFscy4gIFRoZXJlIGFyZSB0aHJlZSBub3ctIgorICAgICAgICAgICAgKyAib2Jzb2xldGUgR3JlZWsgbGV0dGVycyB0aGF0IGFyZSB1c2VkIGFzIG51bWVyYWxzOyBtYW55IGZvbnRzIGRvbid0IGhhdmUgdGhlbS4gICIKKyAgICAgICAgICAgICsgIkxhcmdlIG51bWJlcnMgd2VyZSBoYW5kbGVkIG1hbnkgZGlmZmVyZW50IHdheXM7IHRoZSB3YXkgc2hvd24gaGVyZSBkaXZpZGVzICIKKyAgICAgICAgICAgICsgImxhcmdlIG51bWJlcnMgaW50byBncm91cHMgb2YgZm91ciBsZXR0ZXJzIChmYWN0b3JzIG9mIDEwLDAwMCksIGFuZCBzZXBhcmF0ZXMgIgorICAgICAgICAgICAgKyAidGhlIGdyb3VwcyB3aXRoIHRoZSBjYXBpdGFsIGxldHRlciBtdSAoZm9yIG15cmlhZCkuICBDYXBpdGFsIGxldHRlcnMgYXJlIHVzZWQgIgorICAgICAgICAgICAgKyAiZm9yIHZhbHVlcyBiZWxvdyAxMCwwMDA7IHNtYWxsIGxldHRlcnMgZm9yIGhpZ2hlciBudW1iZXJzICh0byBtYWtlIHRoZSBjYXBpdGFsICIKKyAgICAgICAgICAgICsgIm11IHN0YW5kIG91dCkuIiwKKworICAgICAgICAgICAgIlRoaXMgaXMgYSBjdXN0b20gKHVzZXItZGVmaW5lZCkgcnVsZSBzZXQuIgorICAgICAgICB9OworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL3JibmYvcGFja2FnZS5odG1sIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL3JibmYvcGFja2FnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjMwYjg0ODQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vcmJuZi9wYWNrYWdlLmh0bWwKQEAgLTAsMCArMSwxNSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzwhLS0gIENvcHlyaWdodCAoQykgMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQKKyAgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorCisgICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby9yYm5mL3BhY2thZ2UuaHRtbCx2ICQKKyAgJFJldmlzaW9uOiAxLjEgJAorICAkRGF0ZTogMjAwMC8wMy8xNSAxNzo0NDowMiAkCistLT4KKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IndoaXRlIj4KK1J1bGVCYXNlZE51bWJlckZvcm1hdCBkZW1vIGFwcGxpYXRpb24uCis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL3RyYW5zbGl0L0FueVRyYW5zbGl0ZXJhdG9yLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vdHJhbnNsaXQvQW55VHJhbnNsaXRlcmF0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDBmMWM3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL3RyYW5zbGl0L0FueVRyYW5zbGl0ZXJhdG9yLmphdmEKQEAgLTAsMCArMSwzMDYgQEAKKy8qKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMS0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vdHJhbnNsaXQvQW55VHJhbnNsaXRlcmF0b3IuamF2YSx2ICQKKyAqICREYXRlOiAyMDAyLzA4LzEzIDIxOjUwOjQ0ICQKKyAqICRSZXZpc2lvbjogMS4zICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi5kZW1vLnRyYW5zbGl0OworaW1wb3J0IGNvbS5pYm0uaWN1LmRldi5kZW1vLmltcGwuKjsKK2ltcG9ydCBjb20uaWJtLmljdS5sYW5nLio7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC4qOworaW1wb3J0IGphdmEudXRpbC4qOworCitwdWJsaWMgY2xhc3MgQW55VHJhbnNsaXRlcmF0b3IgZXh0ZW5kcyBUcmFuc2xpdGVyYXRvciB7CisJCisJc3RhdGljIGZpbmFsIGJvb2xlYW4gREVCVUcgPSBmYWxzZTsKKwlwcml2YXRlIFN0cmluZyB0YXJnZXROYW1lOworCXByaXZhdGUgUnVuSXRlcmF0b3IgaXQ7CisJcHJpdmF0ZSBQb3NpdGlvbiBydW47CisJCisJCisJcHVibGljIEFueVRyYW5zbGl0ZXJhdG9yKFN0cmluZyB0YXJnZXROYW1lLCBVbmljb2RlRmlsdGVyIGZpbHRlciwgUnVuSXRlcmF0b3IgaXQpeworCQlzdXBlcigiQW55LSIgKyB0YXJnZXROYW1lLCBmaWx0ZXIpOworCQl0aGlzLnRhcmdldE5hbWUgPSB0YXJnZXROYW1lOworCQl0aGlzLml0ID0gaXQ7CisJCXJ1biA9IG5ldyBQb3NpdGlvbigpOworCX0KKwkKKwlwdWJsaWMgQW55VHJhbnNsaXRlcmF0b3IoU3RyaW5nIHRhcmdldE5hbWUsIFVuaWNvZGVGaWx0ZXIgZmlsdGVyKXsKKwkJdGhpcyh0YXJnZXROYW1lLCBmaWx0ZXIsIG5ldyBTY3JpcHRSdW5JdGVyYXRvcigpKTsKKwl9CisJCisJc3RhdGljIHByaXZhdGUgVHJhbnNsaXRlcmF0b3IgaGV4ID0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoIlteXFx1MDAyMC1cXHUwMDdFXSBoZXgiKTsKKwkKKyAgICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVUcmFuc2xpdGVyYXRlKFJlcGxhY2VhYmxlIHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb3NpdGlvbiBvZmZzZXRzLCBib29sZWFuIGlzSW5jcmVtZW50YWwpIHsKKyAgICAJaWYgKERFQlVHKSB7CisgICAgCQlTeXN0ZW0ub3V0LnByaW50bG4oIi0gaGFuZGxlVHJhbnNsaXRlcmF0ZSAiICsgaGV4LnRyYW5zbGl0ZXJhdGUodGV4dC50b1N0cmluZygpKQorICAgIAkJCSsgIiwgIiArIHRvU3RyaW5nKG9mZnNldHMpKTsKKyAgICAJfQorCQlpdC5yZXNldCh0ZXh0LCBvZmZzZXRzKTsKKwkJCisgICAgICAgIHdoaWxlIChpdC5uZXh0KHJ1bikpIHsKKwkJCWlmICh0YXJnZXROYW1lLmVxdWFsc0lnbm9yZUNhc2UoaXQuZ2V0TmFtZSgpKSkgeworCQkJCWlmIChERUJVRykgU3lzdGVtLm91dC5wcmludGxuKCJTa2lwcGluZyBpZGVudGljYWw6ICIgKyB0YXJnZXROYW1lKTsKKwkJCQlydW4uc3RhcnQgPSBydW4ubGltaXQ7IC8vIHNob3cgd2UgcHJvY2Vzc2VkCisJCQkJY29udGludWU7IC8vIHNraXAgaWYgc2FtZQorCQkJfQorICAgICAgICAJCisJCQlUcmFuc2xpdGVyYXRvciB0OworCQkJU3RyaW5nIGlkID0gaXQuZ2V0TmFtZSgpICsgJy0nICsgdGFyZ2V0TmFtZTsKKwkJCXRyeSB7CisgICAgICAgIAkJdCA9IFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKGlkKTsKKyAgICAgICAgCX0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBleCkgeworICAgICAgICAJCWlmIChERUJVRykgU3lzdGVtLm91dC5wcmludGxuKCJDb3VsZG4ndCBmaW5kOiAiICsgaWQgKyAiLCBUcnlpbmcgTGF0aW4gYXMgUGl2b3QiKTsKKwkJCQlpZCA9IGl0LmdldE5hbWUoKSArICItTGF0aW47IExhdGluLSIgKyB0YXJnZXROYW1lOworCQkJCXRyeSB7CisgICAgICAgIAkJCXQgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZShpZCk7CisgICAgICAgIAkJfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGV4MikgeworICAgICAgICAJCQlpZiAoREVCVUcpIFN5c3RlbS5vdXQucHJpbnRsbigiQ291bGRuJ3QgZmluZDogIiArIGlkKTsKKyAgICAgICAgCQkJY29udGludWU7CisgICAgICAgIAkJfQorICAgICAgICAJfQorICAgICAgICAJLy8gVE9ETyBjYXRjaCBlcnJvciBsYXRlciEhCisgICAgICAgIAkJCisgICAgICAgIAlpZiAoREVCVUcpIHsKKyAgICAgICAgCQlTeXN0ZW0ub3V0LnByaW50bG4odC5nZXRJRCgpKTsKKyAgICAgICAgCQlTeXN0ZW0ub3V0LnByaW50bG4oImlucHV0OiAiICsgaGV4LnRyYW5zbGl0ZXJhdGUodGV4dC50b1N0cmluZygpKQorICAgICAgICAJCSArICIsICIgKyB0b1N0cmluZyhydW4pKTsKKyAgICAgICAgCX0KKyAgICAgICAgCQorICAgICAgICAJaWYgKGlzSW5jcmVtZW50YWwgJiYgaXQuYXRFbmQoKSkgeworICAgICAgICAJCXQudHJhbnNsaXRlcmF0ZSh0ZXh0LCBydW4pOworICAgICAgICAJfSBlbHNlIHsKKyAgICAgICAgCQl0LmZpbmlzaFRyYW5zbGl0ZXJhdGlvbih0ZXh0LCBydW4pOworICAgICAgICAJfQorICAgICAgICAJLy8gYWRqdXN0IHRoZSBvZmZzZXRzIGluIGxpbmUgd2l0aCB0aGUgY2hhbmdlcworICAgICAgICAJaXQuYWRqdXN0KHJ1bi5saW1pdCk7CisgICAgICAgIAkKKyAgICAgICAgCWlmIChERUJVRykgeworICAgICAgICAJCVN5c3RlbS5vdXQucHJpbnRsbigib3V0cHV0OiAiICsgaGV4LnRyYW5zbGl0ZXJhdGUodGV4dC50b1N0cmluZygpKQorICAgICAgICAJCSArICIsICIgKyB0b1N0cmluZyhydW4pKTsKKyAgICAgICAgCX0KKyAgICAgICAgfQorCisJCS8vIHNob3cgaG93IGZhciB3ZSBnb3QhCisJCWl0LmdldEV4cGFuc2Uob2Zmc2V0cyk7CisJCWlmIChydW4uc3RhcnQgPT0gcnVuLmxpbWl0KSBvZmZzZXRzLnN0YXJ0ID0gb2Zmc2V0cy5saW1pdDsKKwkJZWxzZSBvZmZzZXRzLnN0YXJ0ID0gcnVuLnN0YXJ0OworICAgIAlpZiAoREVCVUcpIHsKKyAgICAJCVN5c3RlbS5vdXQucHJpbnRsbigiKyBoYW5kbGVUcmFuc2xpdGVyYXRlOiAiICsgIiwgIiArIHRvU3RyaW5nKG9mZnNldHMpKTsKKyAgICAgICAgCVN5c3RlbS5vdXQucHJpbnRsbigpOworICAgIAl9CisgICAgfQorICAgIAorICAgIC8vIHNob3VsZCBiZSBtZXRob2Qgb24gUG9zaXRpb24KKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyB0b1N0cmluZyhQb3NpdGlvbiBvZmZzZXRzKSB7CisgICAgCXJldHVybiAiW2NzOiAiICsgb2Zmc2V0cy5jb250ZXh0U3RhcnQKKyAgICAJCQkrICIsIHM6ICIgKyBvZmZzZXRzLnN0YXJ0CisgICAgCQkJKyAiLCBsOiAiICsgb2Zmc2V0cy5saW1pdAorICAgIAkJCSsgIiwgY2w6ICIgKyBvZmZzZXRzLmNvbnRleHRMaW1pdAorICAgIAkJCSsgIl0iOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgaW50ZXJmYWNlIFJ1bkl0ZXJhdG9yIHsKKyAgICAJcHVibGljIHZvaWQgcmVzZXQoUmVwbGFjZWFibGUgdGV4dCwgUG9zaXRpb24gZXhwYW5zZSk7CisgICAgCXB1YmxpYyB2b2lkIGdldEV4cGFuc2UoUG9zaXRpb24gcnVuKTsKKyAgICAJcHVibGljIHZvaWQgcmVzZXQoKTsKKyAgICAJcHVibGljIGJvb2xlYW4gbmV4dChQb3NpdGlvbiBydW4pOworICAgIAlwdWJsaWMgdm9pZCBnZXRDdXJyZW50KFBvc2l0aW9uIHJ1bik7CisgICAgCXB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpOworICAgIAlwdWJsaWMgdm9pZCBhZGp1c3QoaW50IG5ld0N1cnJlbnRMaW1pdCk7CisgICAgCXB1YmxpYyBib29sZWFuIGF0RW5kKCk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybnMgYSBzZXJpZXMgb2YgcmFuZ2VzIGNvcnJlc3BvbmRpbmcgdG8gc2NyaXB0cy4gVGhleSB3aWxsIGJlIG9mIHRoZSBmb3JtOgorICAgICAqIGNjY2NTU2NTU2NjY2NUVGNUY2NjYwktIHdoZXJlIGMgaXMgY29tbW9uLCBTIGlzIHRoZSBmaXJzdCBzY3JpcHQgYW5kIFQgaXMgdGhlIHNlY29uZAorICAgICAqfCAgICAgICAgICAgIHwJCQktIGZpcnN0IHJ1bgorICAgICAqICAgICAgICAgfCAgICAgICAgICAgIHwJLSBzZWNvbmQgcnVuCisgICAgICogVGhhdCBpcywgdGhlIHJ1bnMgd2lsbCBvdmVybGFwLiBUaGUgcmVhc29uIGZvciB0aGlzIGlzIHNvIHRoYXQgYSB0cmFuc2xpdGVyYXRvciBjYW4KKyAgICAgKiBjb25zaWRlciBjb21tb24gY2hhcmFjdGVycyBib3RoIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIHNjcmlwdHMuCisgICAgICogVGhlIG9ubHkgdGltZSB0aGF0IGNvbnRleHRTdGFydCAhPSBzdGFydCBpcyBmb3IgdGhlIGZpcnN0IHJ1biAKKyAgICAgKgkodGhlIGNvbnRleHQgaXMgdGhlIHN0YXJ0IGNvbnRleHQgb2YgdGhlIGVudGlyZSBleHBhbnNlKQorICAgICAqIFRoZSBvbmx5IHRpbWUgdGhhdCBjb250ZXh0TGltaXQgIT0gbGltaXQgaXMgZm9yIHRoZSBsYXN0IHJ1biAKKyAgICAgKgkodGhlIGNvbnRleHQgaXMgdGhlIGVuZCBjb250ZXh0IG9mIHRoZSBlbnRpcmUgZXhwYW5zZSkKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFNjcmlwdFJ1bkl0ZXJhdG9yIGltcGxlbWVudHMgUnVuSXRlcmF0b3IgeworICAgIAlwcml2YXRlIFJlcGxhY2VhYmxlIHRleHQ7CisgICAgCXByaXZhdGUgUG9zaXRpb24gZXhwYW5zZSA9IG5ldyBQb3NpdGlvbigpOworICAgIAlwcml2YXRlIFBvc2l0aW9uIGN1cnJlbnQgPSBuZXcgUG9zaXRpb24oKTsKKyAgICAJcHJpdmF0ZSBpbnQgc2NyaXB0OworICAgIAlwcml2YXRlIGJvb2xlYW4gZG9uZSA9IHRydWU7CisgICAgCQorCisgICAgCXB1YmxpYyB2b2lkIHJlc2V0KFJlcGxhY2VhYmxlIHRleHQsIFBvc2l0aW9uIGV4cGFuc2UpIHsKKyAgICAJCXNldCh0aGlzLmV4cGFuc2UsIGV4cGFuc2UpOworICAgIAkJdGhpcy50ZXh0ID0gdGV4dDsKKyAgICAJCXJlc2V0KCk7CisgICAgCX0KKyAgICAJCQorICAgIAlwdWJsaWMgdm9pZCByZXNldCgpIHsKKyAgICAJCWRvbmUgPSBmYWxzZTsKKyAgICAJCXRoaXMuZXhwYW5zZSA9IGV4cGFuc2U7CisgICAgCQlzY3JpcHQgPSBVU2NyaXB0LklOVkFMSURfQ09ERTsKKyAgICAJCS8vIHNldCB1cCBmaXJzdCByYW5nZSB0byBiZSBlbXB0eSwgYXQgYmVnaW5uaW5nCisgICAgCQljdXJyZW50LmNvbnRleHRTdGFydCA9IGV4cGFuc2UuY29udGV4dFN0YXJ0OworICAgIAkJY3VycmVudC5zdGFydCA9IGN1cnJlbnQubGltaXQgPSBjdXJyZW50LmNvbnRleHRMaW1pdCA9IGV4cGFuc2Uuc3RhcnQ7ICAgIAkJCisgICAgCX0KKyAgICAJCQorICAgIAlwdWJsaWMgYm9vbGVhbiBuZXh0KFBvc2l0aW9uIHJ1bikgeworICAgIAkJaWYgKGRvbmUpIHJldHVybiBmYWxzZTsKKyAgICAJCWlmIChERUJVRykgeworICAgIAkJCVN5c3RlbS5vdXQucHJpbnRsbigiK2NzOiAiICsgY3VycmVudC5jb250ZXh0U3RhcnQKKyAgICAJCQkJKyAiLCBzOiAiICsgY3VycmVudC5zdGFydAorICAgIAkJCQkrICIsIGw6ICIgKyBjdXJyZW50LmxpbWl0CisgICAgCQkJCSsgIiwgY2w6ICIgKyBjdXJyZW50LmNvbnRleHRMaW1pdCk7CisgICAgCQl9CisgICAgCQkvLyByZXNldCBzdGFydCBjb250ZXh0IHJ1biB0byB0aGUgbGFzdCBlbmQKKyAgICAJCWN1cnJlbnQuc3RhcnQgPSBjdXJyZW50LmxpbWl0OworICAgIAkJCisgICAgCQkvLyBQaGFzZSAxLiBCYWNrdXAgdGhlIFNUQVJUIHZhbHVlIHRocm91Z2ggQ09NTU9OIHVudGlsIHdlIGdldCB0byBleHBhbnNlLnN0YXJ0IG9yIGEgcmVhbCBzY3JpcHQuCisgICAgCQlpbnQgaSwgY3A7CisgICAgCQlpbnQgbGltaXQgPSBleHBhbnNlLnN0YXJ0OworICAgIAkJZm9yIChpID0gY3VycmVudC5zdGFydDsgaSA+IGxpbWl0OyBpIC09IFVURjE2LmdldENoYXJDb3VudChjcCkpIHsKKyAgICAJCQljcCA9IHRleHQuY2hhcjMyQXQoaSk7CisgICAgCQkJaW50IHNjcmlwdCA9IFVTY3JpcHQuZ2V0U2NyaXB0KGNwKTsKKyAgICAJCQlpZiAoc2NyaXB0ICE9IFVTY3JpcHQuQ09NTU9OICYmIHNjcmlwdCAhPSBVU2NyaXB0LklOSEVSSVRFRCkgYnJlYWs7CisgICAgCQl9CisgICAgCQljdXJyZW50LnN0YXJ0ID0gaTsKKyAgICAJCWN1cnJlbnQuY29udGV4dFN0YXJ0ID0gKGkgPT0gbGltaXQpID8gZXhwYW5zZS5jb250ZXh0U3RhcnQgOiBpOyAvLyBleHRlbmQgYXQgc3RhcnQKKyAgICAJCQorICAgIAkJLy8gUEhBU0UgMi4gTW92ZSB1cCB0aGUgTElNSVQgdmFsdWUgdGhyb3VnaCBDT01NT04gb3Igc2luZ2xlIHNjcmlwdCB1bnRpbCB3ZSBnZXQgdG8gZXhwYW5zZS5saW1pdAorICAgIAkJaW50IGxhc3RTY3JpcHQgPSBVU2NyaXB0LkNPTU1PTjsKKyAgICAJCWludCB2ZXJ5TGFzdFNjcmlwdCA9IFVTY3JpcHQuQ09NTU9OOworICAgIAkJbGltaXQgPSBleHBhbnNlLmxpbWl0OyAKKyAgICAJCWZvciAoaSA9IGN1cnJlbnQubGltaXQ7IGkgPCBsaW1pdDsgaSArPSBVVEYxNi5nZXRDaGFyQ291bnQoY3ApKSB7CisgICAgCQkJY3AgPSB0ZXh0LmNoYXIzMkF0KGkpOworICAgIAkJCWludCBzY3JpcHQgPSBVU2NyaXB0LmdldFNjcmlwdChjcCk7CisgICAgCQkJaWYgKHNjcmlwdCA9PSBVU2NyaXB0LklOSEVSSVRFRCkgc2NyaXB0ID0gVVNjcmlwdC5DT01NT047CisgICAgCQkJaWYgKHNjcmlwdCAhPSBVU2NyaXB0LkNPTU1PTikgeworICAgIAkJCQkvLyBpZiB3ZSBmaW5kIGEgcmVhbCBzY3JpcHQ6CisgICAgCQkJCS8vICAgaWYgd2UgYWxyZWFkeSBoYWQgYSBzY3JpcHQsIGJhaWwKKyAgICAJCQkJLy8gICBvdGhlcndpc2Ugc2V0IG91ciBzY3JpcHQKKyAgICAJCQkJaWYgKGxhc3RTY3JpcHQgPT0gVVNjcmlwdC5DT01NT04pIGxhc3RTY3JpcHQgPSBzY3JpcHQ7CisgICAgCQkJCWVsc2UgaWYgKGxhc3RTY3JpcHQgIT0gc2NyaXB0KSBicmVhazsKKyAgICAJCQl9CisgICAgCQl9CisgICAgCQljdXJyZW50LmxpbWl0ID0gaTsKKyAgICAJCWN1cnJlbnQuY29udGV4dExpbWl0ID0gKGkgPT0gbGltaXQpID8gZXhwYW5zZS5jb250ZXh0TGltaXQgOiBpOyAvLyBleHRlbmQgYXQgZW5kCisgICAgCQlkb25lID0gKGkgPT0gbGltaXQpOworICAgIAkJc2NyaXB0ID0gbGFzdFNjcmlwdDsKKyAgICAJCQorICAgIAkJaWYgKERFQlVHKSB7CisgICAgCQkJU3lzdGVtLm91dC5wcmludGxuKCItY3M6ICIgKyBjdXJyZW50LmNvbnRleHRTdGFydAorICAgIAkJCQkrICIsIHM6ICIgKyBjdXJyZW50LnN0YXJ0CisgICAgCQkJCSsgIiwgbDogIiArIGN1cnJlbnQubGltaXQKKyAgICAJCQkJKyAiLCBjbDogIiArIGN1cnJlbnQuY29udGV4dExpbWl0KTsKKyAgICAJCX0KKyAgICAJCQorICAgIAkJc2V0KHJ1biwgY3VycmVudCk7CisgICAgCQlyZXR1cm4gdHJ1ZTsKKyAgICAJfQorICAgIAkKKyAgICAJLy8gU0hPVUxEIEJFIE1FVEhPRCBPTiBQT1NJVElPTgorICAgIAlwdWJsaWMgc3RhdGljIHZvaWQgc2V0KFBvc2l0aW9uIHJ1biwgUG9zaXRpb24gY3VycmVudCkgeworICAgIAkJcnVuLmNvbnRleHRTdGFydCA9IGN1cnJlbnQuY29udGV4dFN0YXJ0OworICAgIAkJcnVuLnN0YXJ0ID0gY3VycmVudC5zdGFydDsKKyAgICAJCXJ1bi5saW1pdCA9IGN1cnJlbnQubGltaXQ7CisgICAgCQlydW4uY29udGV4dExpbWl0ID0gY3VycmVudC5jb250ZXh0TGltaXQ7CisgICAgCX0KKyAgICAJCisgICAgCXB1YmxpYyBib29sZWFuIGF0RW5kKCkgeworICAgIAkJcmV0dXJuIGN1cnJlbnQubGltaXQgPT0gZXhwYW5zZS5saW1pdDsKKyAgICAJfQorICAgIAkKKyAgICAJcHVibGljIHZvaWQgZ2V0Q3VycmVudChQb3NpdGlvbiBydW4pIHsKKyAgICAJCXNldChydW4sIGN1cnJlbnQpOworICAgIAl9CisgICAgCQorICAgIAlwdWJsaWMgdm9pZCBnZXRFeHBhbnNlKFBvc2l0aW9uIHJ1bikgeworICAgIAkJc2V0KHJ1biwgZXhwYW5zZSk7CisgICAgCX0KKyAgICAJCisgICAgCXB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpIHsKKyAgICAJCXJldHVybiBVU2NyaXB0LmdldE5hbWUoc2NyaXB0KTsKKyAgICAJfQorICAgIAkKKyAgICAJcHVibGljIHZvaWQgYWRqdXN0KGludCBuZXdDdXJyZW50TGltaXQpIHsKKyAgICAJCWlmIChleHBhbnNlID09IG51bGwpIHsKKyAgICAJCQl0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJNdXN0IHJlc2V0KCkgYmVmb3JlIGNhbGxpbmciKTsKKyAgICAJCX0KKyAgICAJCWludCBkZWx0YSA9IG5ld0N1cnJlbnRMaW1pdCAtIGN1cnJlbnQubGltaXQ7CisgICAgCQljdXJyZW50LmxpbWl0ICs9IGRlbHRhOworICAgIAkJY3VycmVudC5jb250ZXh0TGltaXQgKz0gZGVsdGE7CisgICAgCQlleHBhbnNlLmxpbWl0ICs9IGRlbHRhOworICAgIAkJZXhwYW5zZS5jb250ZXh0TGltaXQgKz0gZGVsdGE7CisgICAgCX0KKyAgICAJCisgICAgCS8vIHJlZ2lzdGVyIEFueS1TY3JpcHQgZm9yIGV2ZXJ5IHNjcmlwdC4KKyAgICAJCisgICAgCXByaXZhdGUgc3RhdGljIFNldCBzY3JpcHRMaXN0ID0gbmV3IEhhc2hTZXQoKTsKKyAgICAJCisgICAgCXB1YmxpYyBzdGF0aWMgdm9pZCByZWdpc3RlckFueVRvU2NyaXB0KCkgeworICAgIAkJc3luY2hyb25pemVkIChzY3JpcHRMaXN0KSB7CisgICAgICAgIAkJRW51bWVyYXRpb24gc291cmNlcyA9IFRyYW5zbGl0ZXJhdG9yLmdldEF2YWlsYWJsZVNvdXJjZXMoKTsKKyAgICAgICAgCQl3aGlsZShzb3VyY2VzLmhhc01vcmVFbGVtZW50cygpKSB7CisgICAgICAgICAgICAJCVN0cmluZyBzb3VyY2UgPSAoU3RyaW5nKSBzb3VyY2VzLm5leHRFbGVtZW50KCk7CisgICAgICAgICAgICAJCWlmIChzb3VyY2UuZXF1YWxzKCJBbnkiKSkgY29udGludWU7IC8vIHRvIGtlZXAgZnJvbSBsb29waW5nCisJICAgICAgICAgICAgCQorICAgICAgICAgICAgCQlFbnVtZXJhdGlvbiB0YXJnZXRzID0gVHJhbnNsaXRlcmF0b3IuZ2V0QXZhaWxhYmxlVGFyZ2V0cyhzb3VyY2UpOworICAgICAgICAgICAgCQl3aGlsZSh0YXJnZXRzLmhhc01vcmVFbGVtZW50cygpKSB7CisgICAgICAgICAgICAgICAgCQlTdHJpbmcgdGFyZ2V0ID0gKFN0cmluZykgdGFyZ2V0cy5uZXh0RWxlbWVudCgpOworICAgICAgICAgICAgCQkJaWYgKFVTY3JpcHQuZ2V0Q29kZSh0YXJnZXQpID09IG51bGwpIGNvbnRpbnVlOyAvLyBTS0lQIHVubGVzcyB3ZSBoYXZlIGEgc2NyaXB0IChvciBsb2NhbGUpCisgICAgICAgICAgICAJCQlpZiAoc2NyaXB0TGlzdC5jb250YWlucyh0YXJnZXQpKSBjb250aW51ZTsgLy8gYWxyZWFkeSBlbmNvdW50ZXJlZAorICAgICAgICAgICAgCQkJc2NyaXB0TGlzdC5hZGQodGFyZ2V0KTsgLy8gb3RoZXJ3aXNlIGFkZCBmb3IgbGF0ZXIgdGVzdGluZworCSAgICAgICAgICAgIAkJCisgICAgICAgICAgICAgICAgCQlTZXQgdmFyaWFudFNldCA9IGFkZChuZXcgVHJlZVNldCgpLCBUcmFuc2xpdGVyYXRvci5nZXRBdmFpbGFibGVWYXJpYW50cyhzb3VyY2UsIHRhcmdldCkpOworICAgICAgICAgICAgICAgIAkJaWYgKHZhcmlhbnRTZXQuc2l6ZSgpIDwgMikgeworICAgIAkJCQkJCUFueVRyYW5zbGl0ZXJhdG9yIGF0ID0gbmV3IEFueVRyYW5zbGl0ZXJhdG9yKHRhcmdldCwgbnVsbCk7CisgICAgCQkJCQkJRHVtbXlGYWN0b3J5LmFkZChhdC5nZXRJRCgpLCBhdCk7CisgICAgICAgICAgICAgICAgCQl9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAJCUl0ZXJhdG9yIHZhcmlhbnRzID0gdmFyaWFudFNldC5pdGVyYXRvcigpOworICAgICAgICAgICAgICAgICAgICAJCXdoaWxlKHZhcmlhbnRzLmhhc05leHQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcgdmFyaWFudCA9IChTdHJpbmcpIHZhcmlhbnRzLm5leHQoKTsKKyAgICAJCQkJCQkJQW55VHJhbnNsaXRlcmF0b3IgYXQgPSBuZXcgQW55VHJhbnNsaXRlcmF0b3IoCisgICAgCQkJCQkJCQkodmFyaWFudC5sZW5ndGgoKSA+IDApID8gdGFyZ2V0ICsgIi8iICsgdmFyaWFudCA6IHRhcmdldCwgbnVsbCk7CisgICAgCQkJCQkJCUR1bW15RmFjdG9yeS5hZGQoYXQuZ2V0SUQoKSwgYXQpOworICAgICAgICAgICAgICAgICAgICAJCX0KKyAgICAgICAgICAgICAgICAJCX0KKyAgICAgICAgICAgIAkJfQorICAgICAgICAJCX0KKyAgICAgICAgCX0KKyAgICAJfQorICAgIAkKKyAgICAJc3RhdGljIGNsYXNzIER1bW15RmFjdG9yeSBpbXBsZW1lbnRzIFRyYW5zbGl0ZXJhdG9yLkZhY3RvcnkgeworICAgICAgICAJc3RhdGljIER1bW15RmFjdG9yeSBzaW5nbGV0b24gPSBuZXcgRHVtbXlGYWN0b3J5KCk7CisgICAgICAgIAlzdGF0aWMgSGFzaE1hcCBtID0gbmV3IEhhc2hNYXAoKTsKKworICAgICAgICAJLy8gU2luY2UgVHJhbnNsaXRlcmF0b3JzIGFyZSBpbW11dGFibGUsIHdlIGRvbid0IGhhdmUgdG8gY2xvbmUgb24gc2V0ICYgZ2V0CisgICAgICAgIAlzdGF0aWMgdm9pZCBhZGQoU3RyaW5nIElELCBUcmFuc2xpdGVyYXRvciB0KSB7CisgICAgICAgICAgICAJbS5wdXQoSUQsIHQpOworICAgICAgICAgICAgCVN5c3RlbS5vdXQucHJpbnRsbigiUmVnaXN0ZXJpbmc6ICIgKyBJRCArICIsICIgKyB0LnRvUnVsZXModHJ1ZSkpOworICAgICAgICAgICAgCVRyYW5zbGl0ZXJhdG9yLnJlZ2lzdGVyRmFjdG9yeShJRCwgc2luZ2xldG9uKTsKKyAgICAgICAgCX0KKyAgICAgICAgCXB1YmxpYyBUcmFuc2xpdGVyYXRvciBnZXRJbnN0YW5jZShTdHJpbmcgSUQpIHsKKyAgICAgICAgICAgIAlyZXR1cm4gKFRyYW5zbGl0ZXJhdG9yKSBtLmdldChJRCk7CisgICAgICAgIAl9CisgICAgCX0KKyAgICAJCisgICAgCS8vIE5pY2UgbGl0dGxlIFV0aWxpdHkgZm9yIGNvbnZlcnRpbmcgRW51bWVyYXRpb24gdG8gY29sbGVjdGlvbgorICAgIAlzdGF0aWMgU2V0IGFkZChTZXQgcywgRW51bWVyYXRpb24gZW51bSkgeworICAgICAgICAJd2hpbGUoZW51bS5oYXNNb3JlRWxlbWVudHMoKSkgeworICAgICAgICAgICAgCXMuYWRkKGVudW0ubmV4dEVsZW1lbnQoKSk7CisgICAgICAgIAl9CisgICAgICAgIAlyZXR1cm4gczsKKyAgICAJfQorICAgIAkKKyAgICAJCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL3RyYW5zbGl0L0Nhc2VJdGVyYXRvci5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL3RyYW5zbGl0L0Nhc2VJdGVyYXRvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2YTJiNzIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vdHJhbnNsaXQvQ2FzZUl0ZXJhdG9yLmphdmEKQEAgLTAsMCArMSw0OTIgQEAKKy8qKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vdHJhbnNsaXQvQ2FzZUl0ZXJhdG9yLmphdmEsdiAkCisqICREYXRlOiAyMDAyLzEyLzA5IDIzOjIzOjQ2ICQKKyogJFJldmlzaW9uOiAxLjEgJAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKworcGFja2FnZSBjb20uaWJtLmljdS5kZXYuZGVtby50cmFuc2xpdDsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ltcG9ydCBjb20uaWJtLmljdS5sYW5nLlVDaGFyYWN0ZXI7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC5VVEYxNjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0LlRyYW5zbGl0ZXJhdG9yOworCisvKioKKyAqIEluY3JlbWVudGFsbHkgcmV0dXJucyB0aGUgc2V0IG9mIGFsbCBzdHJpbmdzIHRoYXQgY2FzZS1mb2xkIHRvIHRoZSBzYW1lIHZhbHVlLgorICovCitwdWJsaWMgY2xhc3MgQ2FzZUl0ZXJhdG9yIHsKKyAgICAKKyAgICAvLyB0ZXN0aW5nIHN0dWZmCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVRyA9IHRydWU7CisgICAgc3RhdGljIFRyYW5zbGl0ZXJhdG9yIHRvTmFtZSA9IFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKCJbOl5hc2NpaTpdIEFueS1OYW1lIik7CisgICAgc3RhdGljIFRyYW5zbGl0ZXJhdG9yIHRvSGV4ID0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoIls6XmFzY2lpOl0gQW55LUhleCIpOworICAgIAorICAgIC8vIGdsb2JhbCB0YWJsZXMgKGNvdWxkIGJlIHByZWNvbXBpbGVkKQorICAgIHByaXZhdGUgc3RhdGljIE1hcCBmcm9tQ2FzZUZvbGQgPSBuZXcgSGFzaE1hcCgpOworICAgIHByaXZhdGUgc3RhdGljIE1hcCB0b0Nhc2VGb2xkID0gbmV3IEhhc2hNYXAoKTsKKyAgICBwcml2YXRlIHN0YXRpYyBpbnQgbWF4TGVuZ3RoID0gMDsKKyAgICAKKyAgICAvLyBUaGlzIGV4Y2VwdGlvbiBsaXN0IGlzIGdlbmVyYXRlZCBvbiB0aGUgY29uc29sZSBieSB0dXJuaW5nIG9uIHRoZSBHRU5FUkFURUQgZmxhZywgCisgICAgLy8gd2hpY2ggTVVTVCBiZSBmYWxzZSBmb3Igbm9ybWFsIG9wZXJhdGlvbi4KKyAgICAvLyBPbmNlIHRoZSBsaXN0IGlzIGdlbmVyYXRlZCwgaXQgaXMgcGFzdGVkIGluIGhlcmUuCisgICAgLy8gQSBiaXQgb2YgYSBjbHVkZ2UsIGJ1dCB0aGlzIGJvb3RzdHJhcHBpbmcgaXMgdGhlIGVhc2llc3Qgd2F5IAorICAgIC8vIHRvIGdldCBhcm91bmQgY2VydGFpbiBjb21wbGljYXRpb25zIGluIHRoZSBkYXRhLgorICAgIAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gR0VORVJBVEUgPSBmYWxzZTsKKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmdbXVtdIGV4Y2VwdGlvbkxpc3QgPSB7CisgICAgICAgIC8vIGFcTntNT0RJRklFUiBMRVRURVIgUklHSFQgSEFMRiBSSU5HfQorICAgICAgICB7ImFcdTAyQkUiLCJBXHUwMkJFIiwiYVx1MDJCRSIsfSwKKyAgICAgICAgLy8gZmYKKyAgICAgICAgeyJmZiIsIkZGIiwiRmYiLCJmRiIsImZmIix9LAorICAgICAgICAvLyBmZmkKKyAgICAgICAgeyJmZmkiLCJGRkkiLCJGRmkiLCJGZkkiLCJGZmkiLCJGXHVGQjAxIiwiZkZJIiwiZkZpIiwiZmZJIiwiZmZpIiwiZlx1RkIwMSIsIlx1RkIwMEkiLCJcdUZCMDBpIix9LAorICAgICAgICAvLyBmZmwKKyAgICAgICAgeyJmZmwiLCJGRkwiLCJGRmwiLCJGZkwiLCJGZmwiLCJGXHVGQjAyIiwiZkZMIiwiZkZsIiwiZmZMIiwiZmZsIiwiZlx1RkIwMiIsIlx1RkIwMEwiLCJcdUZCMDBsIix9LAorICAgICAgICAvLyBmaQorICAgICAgICB7ImZpIiwiRkkiLCJGaSIsImZJIiwiZmkiLH0sCisgICAgICAgIC8vIGZsCisgICAgICAgIHsiZmwiLCJGTCIsIkZsIiwiZkwiLCJmbCIsfSwKKyAgICAgICAgLy8gaFxOe0NPTUJJTklORyBNQUNST04gQkVMT1d9CisgICAgICAgIHsiaFx1MDMzMSIsIkhcdTAzMzEiLCJoXHUwMzMxIix9LAorICAgICAgICAvLyBpXE57Q09NQklOSU5HIERPVCBBQk9WRX0KKyAgICAgICAgeyJpXHUwMzA3IiwiSVx1MDMwNyIsImlcdTAzMDciLH0sCisgICAgICAgIC8vIGpcTntDT01CSU5JTkcgQ0FST059CisgICAgICAgIHsialx1MDMwQyIsIkpcdTAzMEMiLCJqXHUwMzBDIix9LAorICAgICAgICAvLyBzcworICAgICAgICB7InNzIiwiU1MiLCJTcyIsIlNcdTAxN0YiLCJzUyIsInNzIiwic1x1MDE3RiIsIlx1MDE3RlMiLCJcdTAxN0ZzIiwiXHUwMTdGXHUwMTdGIix9LAorICAgICAgICAvLyBzdAorICAgICAgICB7InN0IiwiU1QiLCJTdCIsInNUIiwic3QiLCJcdTAxN0ZUIiwiXHUwMTdGdCIsfSwKKyAgICAgICAgLy8gdFxOe0NPTUJJTklORyBESUFFUkVTSVN9CisgICAgICAgIHsidFx1MDMwOCIsIlRcdTAzMDgiLCJ0XHUwMzA4Iix9LAorICAgICAgICAvLyB3XE57Q09NQklOSU5HIFJJTkcgQUJPVkV9CisgICAgICAgIHsid1x1MDMwQSIsIldcdTAzMEEiLCJ3XHUwMzBBIix9LAorICAgICAgICAvLyB5XE57Q09NQklOSU5HIFJJTkcgQUJPVkV9CisgICAgICAgIHsieVx1MDMwQSIsIllcdTAzMEEiLCJ5XHUwMzBBIix9LAorICAgICAgICAvLyBcTntNT0RJRklFUiBMRVRURVIgQVBPU1RST1BIRX1uCisgICAgICAgIHsiXHUwMkJDbiIsIlx1MDJCQ04iLCJcdTAyQkNuIix9LAorICAgICAgICAvLyBcTntHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBUT05PU31cTntHUkVFSyBTTUFMTCBMRVRURVIgSU9UQX0KKyAgICAgICAgeyJcdTAzQUNcdTAzQjkiLCJcdTAzODZcdTAzNDUiLCJcdTAzODZcdTAzOTkiLCJcdTAzODZcdTAzQjkiLCJcdTAzODZcdTFGQkUiLCJcdTAzQUNcdTAzNDUiLCJcdTAzQUNcdTAzOTkiLCJcdTAzQUNcdTAzQjkiLCJcdTAzQUNcdTFGQkUiLH0sCisgICAgICAgIC8vIFxOe0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBUT05PU31cTntHUkVFSyBTTUFMTCBMRVRURVIgSU9UQX0KKyAgICAgICAgeyJcdTAzQUVcdTAzQjkiLCJcdTAzODlcdTAzNDUiLCJcdTAzODlcdTAzOTkiLCJcdTAzODlcdTAzQjkiLCJcdTAzODlcdTFGQkUiLCJcdTAzQUVcdTAzNDUiLCJcdTAzQUVcdTAzOTkiLCJcdTAzQUVcdTAzQjkiLCJcdTAzQUVcdTFGQkUiLH0sCisgICAgICAgIC8vIFxOe0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQX1cTntDT01CSU5JTkcgR1JFRUsgUEVSSVNQT01FTkl9CisgICAgICAgIHsiXHUwM0IxXHUwMzQyIiwiXHUwMzkxXHUwMzQyIiwiXHUwM0IxXHUwMzQyIix9LAorICAgICAgICAvLyBcTntHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEF9XE57Q09NQklOSU5HIEdSRUVLIFBFUklTUE9NRU5JfVxOe0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBfQorICAgICAgICB7Ilx1MDNCMVx1MDM0Mlx1MDNCOSIsIlx1MDM5MVx1MDM0Mlx1MDM0NSIsIlx1MDM5MVx1MDM0Mlx1MDM5OSIsIlx1MDM5MVx1MDM0Mlx1MDNCOSIsIlx1MDM5MVx1MDM0Mlx1MUZCRSIsCisgICAgICAgICAgICAiXHUwM0IxXHUwMzQyXHUwMzQ1IiwiXHUwM0IxXHUwMzQyXHUwMzk5IiwiXHUwM0IxXHUwMzQyXHUwM0I5IiwiXHUwM0IxXHUwMzQyXHUxRkJFIiwiXHUxRkI2XHUwMzQ1IiwKKyAgICAgICAgICAgICJcdTFGQjZcdTAzOTkiLCJcdTFGQjZcdTAzQjkiLCJcdTFGQjZcdTFGQkUiLH0sCisgICAgICAgIC8vIFxOe0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQX1cTntHUkVFSyBTTUFMTCBMRVRURVIgSU9UQX0KKyAgICAgICAgeyJcdTAzQjFcdTAzQjkiLCJcdTAzOTFcdTAzNDUiLCJcdTAzOTFcdTAzOTkiLCJcdTAzOTFcdTAzQjkiLCJcdTAzOTFcdTFGQkUiLCJcdTAzQjFcdTAzNDUiLCJcdTAzQjFcdTAzOTkiLCJcdTAzQjFcdTAzQjkiLCJcdTAzQjFcdTFGQkUiLH0sCisgICAgICAgIC8vIFxOe0dSRUVLIFNNQUxMIExFVFRFUiBFVEF9XE57Q09NQklOSU5HIEdSRUVLIFBFUklTUE9NRU5JfQorICAgICAgICB7Ilx1MDNCN1x1MDM0MiIsIlx1MDM5N1x1MDM0MiIsIlx1MDNCN1x1MDM0MiIsfSwKKyAgICAgICAgLy8gXE57R1JFRUsgU01BTEwgTEVUVEVSIEVUQX1cTntDT01CSU5JTkcgR1JFRUsgUEVSSVNQT01FTkl9XE57R1JFRUsgU01BTEwgTEVUVEVSIElPVEF9CisgICAgICAgIHsiXHUwM0I3XHUwMzQyXHUwM0I5IiwiXHUwMzk3XHUwMzQyXHUwMzQ1IiwiXHUwMzk3XHUwMzQyXHUwMzk5IiwiXHUwMzk3XHUwMzQyXHUwM0I5IiwiXHUwMzk3XHUwMzQyXHUxRkJFIiwKKyAgICAgICAgICAgICJcdTAzQjdcdTAzNDJcdTAzNDUiLCJcdTAzQjdcdTAzNDJcdTAzOTkiLCJcdTAzQjdcdTAzNDJcdTAzQjkiLCJcdTAzQjdcdTAzNDJcdTFGQkUiLCJcdTFGQzZcdTAzNDUiLCJcdTFGQzZcdTAzOTkiLAorICAgICAgICAgICAgIlx1MUZDNlx1MDNCOSIsIlx1MUZDNlx1MUZCRSIsfSwKKyAgICAgICAgLy8gXE57R1JFRUsgU01BTEwgTEVUVEVSIEVUQX1cTntHUkVFSyBTTUFMTCBMRVRURVIgSU9UQX0KKyAgICAgICAgeyJcdTAzQjdcdTAzQjkiLCJcdTAzOTdcdTAzNDUiLCJcdTAzOTdcdTAzOTkiLCJcdTAzOTdcdTAzQjkiLCJcdTAzOTdcdTFGQkUiLCJcdTAzQjdcdTAzNDUiLCJcdTAzQjdcdTAzOTkiLCJcdTAzQjdcdTAzQjkiLCJcdTAzQjdcdTFGQkUiLH0sCisgICAgICAgIC8vIFxOe0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBfVxOe0NPTUJJTklORyBESUFFUkVTSVN9XE57Q09NQklOSU5HIEdSQVZFIEFDQ0VOVH0KKyAgICAgICAgeyJcdTAzQjlcdTAzMDhcdTAzMDAiLCJcdTAzNDVcdTAzMDhcdTAzMDAiLCJcdTAzOTlcdTAzMDhcdTAzMDAiLCJcdTAzQjlcdTAzMDhcdTAzMDAiLCJcdTFGQkVcdTAzMDhcdTAzMDAiLH0sCisgICAgICAgIC8vIFxOe0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBfVxOe0NPTUJJTklORyBESUFFUkVTSVN9XE57Q09NQklOSU5HIEFDVVRFIEFDQ0VOVH0KKyAgICAgICAgeyJcdTAzQjlcdTAzMDhcdTAzMDEiLCJcdTAzNDVcdTAzMDhcdTAzMDEiLCJcdTAzOTlcdTAzMDhcdTAzMDEiLCJcdTAzQjlcdTAzMDhcdTAzMDEiLCJcdTFGQkVcdTAzMDhcdTAzMDEiLH0sCisgICAgICAgIC8vIFxOe0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBfVxOe0NPTUJJTklORyBESUFFUkVTSVN9XE57Q09NQklOSU5HIEdSRUVLIFBFUklTUE9NRU5JfQorICAgICAgICB7Ilx1MDNCOVx1MDMwOFx1MDM0MiIsIlx1MDM0NVx1MDMwOFx1MDM0MiIsIlx1MDM5OVx1MDMwOFx1MDM0MiIsIlx1MDNCOVx1MDMwOFx1MDM0MiIsIlx1MUZCRVx1MDMwOFx1MDM0MiIsfSwKKyAgICAgICAgLy8gXE57R1JFRUsgU01BTEwgTEVUVEVSIElPVEF9XE57Q09NQklOSU5HIEdSRUVLIFBFUklTUE9NRU5JfQorICAgICAgICB7Ilx1MDNCOVx1MDM0MiIsIlx1MDM0NVx1MDM0MiIsIlx1MDM5OVx1MDM0MiIsIlx1MDNCOVx1MDM0MiIsIlx1MUZCRVx1MDM0MiIsfSwKKyAgICAgICAgLy8gXE57R1JFRUsgU01BTEwgTEVUVEVSIFJIT31cTntDT01CSU5JTkcgQ09NTUEgQUJPVkV9CisgICAgICAgIHsiXHUwM0MxXHUwMzEzIiwiXHUwM0ExXHUwMzEzIiwiXHUwM0MxXHUwMzEzIiwiXHUwM0YxXHUwMzEzIix9LAorICAgICAgICAvLyBcTntHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTn1cTntDT01CSU5JTkcgRElBRVJFU0lTfVxOe0NPTUJJTklORyBHUkFWRSBBQ0NFTlR9CisgICAgICAgIHsiXHUwM0M1XHUwMzA4XHUwMzAwIiwiXHUwM0E1XHUwMzA4XHUwMzAwIiwiXHUwM0M1XHUwMzA4XHUwMzAwIix9LAorICAgICAgICAvLyBcTntHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTn1cTntDT01CSU5JTkcgRElBRVJFU0lTfVxOe0NPTUJJTklORyBBQ1VURSBBQ0NFTlR9CisgICAgICAgIHsiXHUwM0M1XHUwMzA4XHUwMzAxIiwiXHUwM0E1XHUwMzA4XHUwMzAxIiwiXHUwM0M1XHUwMzA4XHUwMzAxIix9LAorICAgICAgICAvLyBcTntHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTn1cTntDT01CSU5JTkcgRElBRVJFU0lTfVxOe0NPTUJJTklORyBHUkVFSyBQRVJJU1BPTUVOSX0KKyAgICAgICAgeyJcdTAzQzVcdTAzMDhcdTAzNDIiLCJcdTAzQTVcdTAzMDhcdTAzNDIiLCJcdTAzQzVcdTAzMDhcdTAzNDIiLH0sCisgICAgICAgIC8vIFxOe0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OfVxOe0NPTUJJTklORyBDT01NQSBBQk9WRX0KKyAgICAgICAgeyJcdTAzQzVcdTAzMTMiLCJcdTAzQTVcdTAzMTMiLCJcdTAzQzVcdTAzMTMiLH0sCisgICAgICAgIC8vIFxOe0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OfVxOe0NPTUJJTklORyBDT01NQSBBQk9WRX1cTntDT01CSU5JTkcgR1JBVkUgQUNDRU5UfQorICAgICAgICB7Ilx1MDNDNVx1MDMxM1x1MDMwMCIsIlx1MDNBNVx1MDMxM1x1MDMwMCIsIlx1MDNDNVx1MDMxM1x1MDMwMCIsIlx1MUY1MFx1MDMwMCIsfSwKKyAgICAgICAgLy8gXE57R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT059XE57Q09NQklOSU5HIENPTU1BIEFCT1ZFfVxOe0NPTUJJTklORyBBQ1VURSBBQ0NFTlR9CisgICAgICAgIHsiXHUwM0M1XHUwMzEzXHUwMzAxIiwiXHUwM0E1XHUwMzEzXHUwMzAxIiwiXHUwM0M1XHUwMzEzXHUwMzAxIiwiXHUxRjUwXHUwMzAxIix9LAorICAgICAgICAvLyBcTntHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTn1cTntDT01CSU5JTkcgQ09NTUEgQUJPVkV9XE57Q09NQklOSU5HIEdSRUVLIFBFUklTUE9NRU5JfQorICAgICAgICB7Ilx1MDNDNVx1MDMxM1x1MDM0MiIsIlx1MDNBNVx1MDMxM1x1MDM0MiIsIlx1MDNDNVx1MDMxM1x1MDM0MiIsIlx1MUY1MFx1MDM0MiIsfSwKKyAgICAgICAgLy8gXE57R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT059XE57Q09NQklOSU5HIEdSRUVLIFBFUklTUE9NRU5JfQorICAgICAgICB7Ilx1MDNDNVx1MDM0MiIsIlx1MDNBNVx1MDM0MiIsIlx1MDNDNVx1MDM0MiIsfSwKKyAgICAgICAgLy8gXE57R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBfVxOe0NPTUJJTklORyBHUkVFSyBQRVJJU1BPTUVOSX0KKyAgICAgICAgeyJcdTAzQzlcdTAzNDIiLCJcdTAzQTlcdTAzNDIiLCJcdTAzQzlcdTAzNDIiLCJcdTIxMjZcdTAzNDIiLH0sCisgICAgICAgIC8vIFxOe0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQX1cTntDT01CSU5JTkcgR1JFRUsgUEVSSVNQT01FTkl9XE57R1JFRUsgU01BTEwgTEVUVEVSIElPVEF9CisgICAgICAgIHsiXHUwM0M5XHUwMzQyXHUwM0I5IiwiXHUwM0E5XHUwMzQyXHUwMzQ1IiwiXHUwM0E5XHUwMzQyXHUwMzk5IiwiXHUwM0E5XHUwMzQyXHUwM0I5IiwiXHUwM0E5XHUwMzQyXHUxRkJFIiwiXHUwM0M5XHUwMzQyXHUwMzQ1IiwiXHUwM0M5XHUwMzQyXHUwMzk5IiwiXHUwM0M5XHUwMzQyXHUwM0I5IiwiXHUwM0M5XHUwMzQyXHUxRkJFIiwiXHUxRkY2XHUwMzQ1IiwKKyAgICAgICAgICAgICJcdTFGRjZcdTAzOTkiLCJcdTFGRjZcdTAzQjkiLCJcdTFGRjZcdTFGQkUiLCJcdTIxMjZcdTAzNDJcdTAzNDUiLCJcdTIxMjZcdTAzNDJcdTAzOTkiLCJcdTIxMjZcdTAzNDJcdTAzQjkiLCJcdTIxMjZcdTAzNDJcdTFGQkUiLH0sCisgICAgICAgIC8vIFxOe0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQX1cTntHUkVFSyBTTUFMTCBMRVRURVIgSU9UQX0KKyAgICAgICAgeyJcdTAzQzlcdTAzQjkiLCJcdTAzQTlcdTAzNDUiLCJcdTAzQTlcdTAzOTkiLCJcdTAzQTlcdTAzQjkiLCJcdTAzQTlcdTFGQkUiLCJcdTAzQzlcdTAzNDUiLCJcdTAzQzlcdTAzOTkiLCJcdTAzQzlcdTAzQjkiLCJcdTAzQzlcdTFGQkUiLCJcdTIxMjZcdTAzNDUiLCJcdTIxMjZcdTAzOTkiLCJcdTIxMjZcdTAzQjkiLCJcdTIxMjZcdTFGQkUiLH0sCisgICAgICAgIC8vIFxOe0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFRPTk9TfVxOe0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBfQorICAgICAgICB7Ilx1MDNDRVx1MDNCOSIsIlx1MDM4Rlx1MDM0NSIsIlx1MDM4Rlx1MDM5OSIsIlx1MDM4Rlx1MDNCOSIsIlx1MDM4Rlx1MUZCRSIsIlx1MDNDRVx1MDM0NSIsIlx1MDNDRVx1MDM5OSIsIlx1MDNDRVx1MDNCOSIsIlx1MDNDRVx1MUZCRSIsfSwKKyAgICAgICAgLy8gXE57QVJNRU5JQU4gU01BTEwgTEVUVEVSIEVDSH1cTntBUk1FTklBTiBTTUFMTCBMRVRURVIgWUlXTn0KKyAgICAgICAgeyJcdTA1NjVcdTA1ODIiLCJcdTA1MzVcdTA1NTIiLCJcdTA1MzVcdTA1ODIiLCJcdTA1NjVcdTA1NTIiLCJcdTA1NjVcdTA1ODIiLH0sCisgICAgICAgIC8vIFxOe0FSTUVOSUFOIFNNQUxMIExFVFRFUiBNRU59XE57QVJNRU5JQU4gU01BTEwgTEVUVEVSIEVDSH0KKyAgICAgICAgeyJcdTA1NzRcdTA1NjUiLCJcdTA1NDRcdTA1MzUiLCJcdTA1NDRcdTA1NjUiLCJcdTA1NzRcdTA1MzUiLCJcdTA1NzRcdTA1NjUiLH0sCisgICAgICAgIC8vIFxOe0FSTUVOSUFOIFNNQUxMIExFVFRFUiBNRU59XE57QVJNRU5JQU4gU01BTEwgTEVUVEVSIElOSX0KKyAgICAgICAgeyJcdTA1NzRcdTA1NkIiLCJcdTA1NDRcdTA1M0IiLCJcdTA1NDRcdTA1NkIiLCJcdTA1NzRcdTA1M0IiLCJcdTA1NzRcdTA1NkIiLH0sCisgICAgICAgIC8vIFxOe0FSTUVOSUFOIFNNQUxMIExFVFRFUiBNRU59XE57QVJNRU5JQU4gU01BTEwgTEVUVEVSIFhFSH0KKyAgICAgICAgeyJcdTA1NzRcdTA1NkQiLCJcdTA1NDRcdTA1M0QiLCJcdTA1NDRcdTA1NkQiLCJcdTA1NzRcdTA1M0QiLCJcdTA1NzRcdTA1NkQiLH0sCisgICAgICAgIC8vIFxOe0FSTUVOSUFOIFNNQUxMIExFVFRFUiBNRU59XE57QVJNRU5JQU4gU01BTEwgTEVUVEVSIE5PV30KKyAgICAgICAgeyJcdTA1NzRcdTA1NzYiLCJcdTA1NDRcdTA1NDYiLCJcdTA1NDRcdTA1NzYiLCJcdTA1NzRcdTA1NDYiLCJcdTA1NzRcdTA1NzYiLH0sCisgICAgICAgIC8vIFxOe0FSTUVOSUFOIFNNQUxMIExFVFRFUiBWRVd9XE57QVJNRU5JQU4gU01BTEwgTEVUVEVSIE5PV30KKyAgICAgICAgeyJcdTA1N0VcdTA1NzYiLCJcdTA1NEVcdTA1NDYiLCJcdTA1NEVcdTA1NzYiLCJcdTA1N0VcdTA1NDYiLCJcdTA1N0VcdTA1NzYiLH0sCisgICAgICAgIC8vIFxOe0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJfVxOe0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBfQorICAgICAgICB7Ilx1MUYwMFx1MDNCOSIsIlx1MUYwMFx1MDM0NSIsIlx1MUYwMFx1MDM5OSIsIlx1MUYwMFx1MDNCOSIsIlx1MUYwMFx1MUZCRSIsIlx1MUYwOFx1MDM0NSIsIlx1MUYwOFx1MDM5OSIsIlx1MUYwOFx1MDNCOSIsIlx1MUYwOFx1MUZCRSIsfSwKKyAgICAgICAgLy8gXE57R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUF9XE57R1JFRUsgU01BTEwgTEVUVEVSIElPVEF9CisgICAgICAgIHsiXHUxRjAxXHUwM0I5IiwiXHUxRjAxXHUwMzQ1IiwiXHUxRjAxXHUwMzk5IiwiXHUxRjAxXHUwM0I5IiwiXHUxRjAxXHUxRkJFIiwiXHUxRjA5XHUwMzQ1IiwiXHUxRjA5XHUwMzk5IiwiXHUxRjA5XHUwM0I5IiwiXHUxRjA5XHUxRkJFIix9LAorICAgICAgICAvLyBcTntHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgVkFSSUF9XE57R1JFRUsgU01BTEwgTEVUVEVSIElPVEF9CisgICAgICAgIHsiXHUxRjAyXHUwM0I5IiwiXHUxRjAyXHUwMzQ1IiwiXHUxRjAyXHUwMzk5IiwiXHUxRjAyXHUwM0I5IiwiXHUxRjAyXHUxRkJFIiwiXHUxRjBBXHUwMzQ1IiwiXHUxRjBBXHUwMzk5IiwiXHUxRjBBXHUwM0I5IiwiXHUxRjBBXHUxRkJFIix9LAorICAgICAgICAvLyBcTntHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgVkFSSUF9XE57R1JFRUsgU01BTEwgTEVUVEVSIElPVEF9CisgICAgICAgIHsiXHUxRjAzXHUwM0I5IiwiXHUxRjAzXHUwMzQ1IiwiXHUxRjAzXHUwMzk5IiwiXHUxRjAzXHUwM0I5IiwiXHUxRjAzXHUxRkJFIiwiXHUxRjBCXHUwMzQ1IiwiXHUxRjBCXHUwMzk5IiwiXHUxRjBCXHUwM0I5IiwiXHUxRjBCXHUxRkJFIix9LAorICAgICAgICAvLyBcTntHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgT1hJQX1cTntHUkVFSyBTTUFMTCBMRVRURVIgSU9UQX0KKyAgICAgICAgeyJcdTFGMDRcdTAzQjkiLCJcdTFGMDRcdTAzNDUiLCJcdTFGMDRcdTAzOTkiLCJcdTFGMDRcdTAzQjkiLCJcdTFGMDRcdTFGQkUiLCJcdTFGMENcdTAzNDUiLCJcdTFGMENcdTAzOTkiLCJcdTFGMENcdTAzQjkiLCJcdTFGMENcdTFGQkUiLH0sCisgICAgICAgIC8vIFxOe0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBPWElBfVxOe0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBfQorICAgICAgICB7Ilx1MUYwNVx1MDNCOSIsIlx1MUYwNVx1MDM0NSIsIlx1MUYwNVx1MDM5OSIsIlx1MUYwNVx1MDNCOSIsIlx1MUYwNVx1MUZCRSIsIlx1MUYwRFx1MDM0NSIsIlx1MUYwRFx1MDM5OSIsIlx1MUYwRFx1MDNCOSIsIlx1MUYwRFx1MUZCRSIsfSwKKyAgICAgICAgLy8gXE57R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JfVxOe0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBfQorICAgICAgICB7Ilx1MUYwNlx1MDNCOSIsIlx1MUYwNlx1MDM0NSIsIlx1MUYwNlx1MDM5OSIsIlx1MUYwNlx1MDNCOSIsIlx1MUYwNlx1MUZCRSIsIlx1MUYwRVx1MDM0NSIsIlx1MUYwRVx1MDM5OSIsIlx1MUYwRVx1MDNCOSIsIlx1MUYwRVx1MUZCRSIsfSwKKyAgICAgICAgLy8gXE57R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JfVxOe0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBfQorICAgICAgICB7Ilx1MUYwN1x1MDNCOSIsIlx1MUYwN1x1MDM0NSIsIlx1MUYwN1x1MDM5OSIsIlx1MUYwN1x1MDNCOSIsIlx1MUYwN1x1MUZCRSIsIlx1MUYwRlx1MDM0NSIsIlx1MUYwRlx1MDM5OSIsIlx1MUYwRlx1MDNCOSIsIlx1MUYwRlx1MUZCRSIsfSwKKyAgICAgICAgLy8gXE57R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJfVxOe0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBfQorICAgICAgICB7Ilx1MUYyMFx1MDNCOSIsIlx1MUYyMFx1MDM0NSIsIlx1MUYyMFx1MDM5OSIsIlx1MUYyMFx1MDNCOSIsIlx1MUYyMFx1MUZCRSIsIlx1MUYyOFx1MDM0NSIsIlx1MUYyOFx1MDM5OSIsIlx1MUYyOFx1MDNCOSIsIlx1MUYyOFx1MUZCRSIsfSwKKyAgICAgICAgLy8gXE57R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIERBU0lBfVxOe0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBfQorICAgICAgICB7Ilx1MUYyMVx1MDNCOSIsIlx1MUYyMVx1MDM0NSIsIlx1MUYyMVx1MDM5OSIsIlx1MUYyMVx1MDNCOSIsIlx1MUYyMVx1MUZCRSIsIlx1MUYyOVx1MDM0NSIsIlx1MUYyOVx1MDM5OSIsIlx1MUYyOVx1MDNCOSIsIlx1MUYyOVx1MUZCRSIsfSwKKyAgICAgICAgLy8gXE57R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBWQVJJQX1cTntHUkVFSyBTTUFMTCBMRVRURVIgSU9UQX0KKyAgICAgICAgeyJcdTFGMjJcdTAzQjkiLCJcdTFGMjJcdTAzNDUiLCJcdTFGMjJcdTAzOTkiLCJcdTFGMjJcdTAzQjkiLCJcdTFGMjJcdTFGQkUiLCJcdTFGMkFcdTAzNDUiLCJcdTFGMkFcdTAzOTkiLCJcdTFGMkFcdTAzQjkiLCJcdTFGMkFcdTFGQkUiLH0sCisgICAgICAgIC8vIFxOe0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgVkFSSUF9XE57R1JFRUsgU01BTEwgTEVUVEVSIElPVEF9CisgICAgICAgIHsiXHUxRjIzXHUwM0I5IiwiXHUxRjIzXHUwMzQ1IiwiXHUxRjIzXHUwMzk5IiwiXHUxRjIzXHUwM0I5IiwiXHUxRjIzXHUxRkJFIiwiXHUxRjJCXHUwMzQ1IiwiXHUxRjJCXHUwMzk5IiwiXHUxRjJCXHUwM0I5IiwiXHUxRjJCXHUxRkJFIix9LAorICAgICAgICAvLyBcTntHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIE9YSUF9XE57R1JFRUsgU01BTEwgTEVUVEVSIElPVEF9CisgICAgICAgIHsiXHUxRjI0XHUwM0I5IiwiXHUxRjI0XHUwMzQ1IiwiXHUxRjI0XHUwMzk5IiwiXHUxRjI0XHUwM0I5IiwiXHUxRjI0XHUxRkJFIiwiXHUxRjJDXHUwMzQ1IiwiXHUxRjJDXHUwMzk5IiwiXHUxRjJDXHUwM0I5IiwiXHUxRjJDXHUxRkJFIix9LAorICAgICAgICAvLyBcTntHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIE9YSUF9XE57R1JFRUsgU01BTEwgTEVUVEVSIElPVEF9CisgICAgICAgIHsiXHUxRjI1XHUwM0I5IiwiXHUxRjI1XHUwMzQ1IiwiXHUxRjI1XHUwMzk5IiwiXHUxRjI1XHUwM0I5IiwiXHUxRjI1XHUxRkJFIiwiXHUxRjJEXHUwMzQ1IiwiXHUxRjJEXHUwMzk5IiwiXHUxRjJEXHUwM0I5IiwiXHUxRjJEXHUxRkJFIix9LAorICAgICAgICAvLyBcTntHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JfVxOe0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBfQorICAgICAgICB7Ilx1MUYyNlx1MDNCOSIsIlx1MUYyNlx1MDM0NSIsIlx1MUYyNlx1MDM5OSIsIlx1MUYyNlx1MDNCOSIsIlx1MUYyNlx1MUZCRSIsIlx1MUYyRVx1MDM0NSIsIlx1MUYyRVx1MDM5OSIsIlx1MUYyRVx1MDNCOSIsIlx1MUYyRVx1MUZCRSIsfSwKKyAgICAgICAgLy8gXE57R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSX1cTntHUkVFSyBTTUFMTCBMRVRURVIgSU9UQX0KKyAgICAgICAgeyJcdTFGMjdcdTAzQjkiLCJcdTFGMjdcdTAzNDUiLCJcdTFGMjdcdTAzOTkiLCJcdTFGMjdcdTAzQjkiLCJcdTFGMjdcdTFGQkUiLCJcdTFGMkZcdTAzNDUiLCJcdTFGMkZcdTAzOTkiLCJcdTFGMkZcdTAzQjkiLCJcdTFGMkZcdTFGQkUiLH0sCisgICAgICAgIC8vIFxOe0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJfVxOe0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBfQorICAgICAgICB7Ilx1MUY2MFx1MDNCOSIsIlx1MUY2MFx1MDM0NSIsIlx1MUY2MFx1MDM5OSIsIlx1MUY2MFx1MDNCOSIsIlx1MUY2MFx1MUZCRSIsIlx1MUY2OFx1MDM0NSIsIlx1MUY2OFx1MDM5OSIsIlx1MUY2OFx1MDNCOSIsIlx1MUY2OFx1MUZCRSIsfSwKKyAgICAgICAgLy8gXE57R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUF9XE57R1JFRUsgU01BTEwgTEVUVEVSIElPVEF9CisgICAgICAgIHsiXHUxRjYxXHUwM0I5IiwiXHUxRjYxXHUwMzQ1IiwiXHUxRjYxXHUwMzk5IiwiXHUxRjYxXHUwM0I5IiwiXHUxRjYxXHUxRkJFIiwiXHUxRjY5XHUwMzQ1IiwiXHUxRjY5XHUwMzk5IiwiXHUxRjY5XHUwM0I5IiwiXHUxRjY5XHUxRkJFIix9LAorICAgICAgICAvLyBcTntHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgVkFSSUF9XE57R1JFRUsgU01BTEwgTEVUVEVSIElPVEF9CisgICAgICAgIHsiXHUxRjYyXHUwM0I5IiwiXHUxRjYyXHUwMzQ1IiwiXHUxRjYyXHUwMzk5IiwiXHUxRjYyXHUwM0I5IiwiXHUxRjYyXHUxRkJFIiwiXHUxRjZBXHUwMzQ1IiwiXHUxRjZBXHUwMzk5IiwiXHUxRjZBXHUwM0I5IiwiXHUxRjZBXHUxRkJFIix9LAorICAgICAgICAvLyBcTntHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgVkFSSUF9XE57R1JFRUsgU01BTEwgTEVUVEVSIElPVEF9CisgICAgICAgIHsiXHUxRjYzXHUwM0I5IiwiXHUxRjYzXHUwMzQ1IiwiXHUxRjYzXHUwMzk5IiwiXHUxRjYzXHUwM0I5IiwiXHUxRjYzXHUxRkJFIiwiXHUxRjZCXHUwMzQ1IiwiXHUxRjZCXHUwMzk5IiwiXHUxRjZCXHUwM0I5IiwiXHUxRjZCXHUxRkJFIix9LAorICAgICAgICAvLyBcTntHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgT1hJQX1cTntHUkVFSyBTTUFMTCBMRVRURVIgSU9UQX0KKyAgICAgICAgeyJcdTFGNjRcdTAzQjkiLCJcdTFGNjRcdTAzNDUiLCJcdTFGNjRcdTAzOTkiLCJcdTFGNjRcdTAzQjkiLCJcdTFGNjRcdTFGQkUiLCJcdTFGNkNcdTAzNDUiLCJcdTFGNkNcdTAzOTkiLCJcdTFGNkNcdTAzQjkiLCJcdTFGNkNcdTFGQkUiLH0sCisgICAgICAgIC8vIFxOe0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBPWElBfVxOe0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBfQorICAgICAgICB7Ilx1MUY2NVx1MDNCOSIsIlx1MUY2NVx1MDM0NSIsIlx1MUY2NVx1MDM5OSIsIlx1MUY2NVx1MDNCOSIsIlx1MUY2NVx1MUZCRSIsIlx1MUY2RFx1MDM0NSIsIlx1MUY2RFx1MDM5OSIsIlx1MUY2RFx1MDNCOSIsIlx1MUY2RFx1MUZCRSIsfSwKKyAgICAgICAgLy8gXE57R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JfVxOe0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBfQorICAgICAgICB7Ilx1MUY2Nlx1MDNCOSIsIlx1MUY2Nlx1MDM0NSIsIlx1MUY2Nlx1MDM5OSIsIlx1MUY2Nlx1MDNCOSIsIlx1MUY2Nlx1MUZCRSIsIlx1MUY2RVx1MDM0NSIsIlx1MUY2RVx1MDM5OSIsIlx1MUY2RVx1MDNCOSIsIlx1MUY2RVx1MUZCRSIsfSwKKyAgICAgICAgLy8gXE57R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JfVxOe0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBfQorICAgICAgICB7Ilx1MUY2N1x1MDNCOSIsIlx1MUY2N1x1MDM0NSIsIlx1MUY2N1x1MDM5OSIsIlx1MUY2N1x1MDNCOSIsIlx1MUY2N1x1MUZCRSIsIlx1MUY2Rlx1MDM0NSIsIlx1MUY2Rlx1MDM5OSIsIlx1MUY2Rlx1MDNCOSIsIlx1MUY2Rlx1MUZCRSIsfSwKKyAgICAgICAgLy8gXE57R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggVkFSSUF9XE57R1JFRUsgU01BTEwgTEVUVEVSIElPVEF9CisgICAgICAgIHsiXHUxRjcwXHUwM0I5IiwiXHUxRjcwXHUwMzQ1IiwiXHUxRjcwXHUwMzk5IiwiXHUxRjcwXHUwM0I5IiwiXHUxRjcwXHUxRkJFIiwiXHUxRkJBXHUwMzQ1IiwiXHUxRkJBXHUwMzk5IiwiXHUxRkJBXHUwM0I5IiwiXHUxRkJBXHUxRkJFIix9LAorICAgICAgICAvLyBcTntHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggVkFSSUF9XE57R1JFRUsgU01BTEwgTEVUVEVSIElPVEF9CisgICAgICAgIHsiXHUxRjc0XHUwM0I5IiwiXHUxRjc0XHUwMzQ1IiwiXHUxRjc0XHUwMzk5IiwiXHUxRjc0XHUwM0I5IiwiXHUxRjc0XHUxRkJFIiwiXHUxRkNBXHUwMzQ1IiwiXHUxRkNBXHUwMzk5IiwiXHUxRkNBXHUwM0I5IiwiXHUxRkNBXHUxRkJFIix9LAorICAgICAgICAvLyBcTntHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBWQVJJQX1cTntHUkVFSyBTTUFMTCBMRVRURVIgSU9UQX0KKyAgICAgICAgeyJcdTFGN0NcdTAzQjkiLCJcdTFGN0NcdTAzNDUiLCJcdTFGN0NcdTAzOTkiLCJcdTFGN0NcdTAzQjkiLCJcdTFGN0NcdTFGQkUiLCJcdTFGRkFcdTAzNDUiLCJcdTFGRkFcdTAzOTkiLCJcdTFGRkFcdTAzQjkiLCJcdTFGRkFcdTFGQkUiLH0sCisgICAgfTsKKyAgICAKKyAgICAvLyB0aGlzIGluaXRpYWxpemVzIHRoZSBkYXRhIHVzZWQgdG8gZ2VuZXJhdGVkIHRoZSBjYXNlLWVxdWl2YWxlbnRzCisKKyAgICBzdGF0aWMgeworICAgICAgICAKKyAgICAgICAgLy8gR2F0aGVyIHVwIHRoZSBleGNlcHRpb25zIGluIGEgZm9ybSB3ZSBjYW4gdXNlCisgICAgICAgIAorICAgICAgICBpZiAoIUdFTkVSQVRFKSB7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGV4Y2VwdGlvbkxpc3QubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmdbXSBleGNlcHRpb24gPSBleGNlcHRpb25MaXN0W2ldOworICAgICAgICAgICAgICAgIFNldCBzID0gbmV3IEhhc2hTZXQoKTsKKyAgICAgICAgICAgICAgICAvLyB0aGVyZSBoYXMgdG8gYmUgc29tZSBtZXRob2QgdG8gZG8gdGhlIGZvbGxvd2luZywgYnV0IEkgY2FuJ3QgZmluZCBpdCBpbiB0aGUgY29sbGVjdGlvbnMKKyAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGV4Y2VwdGlvbi5sZW5ndGg7ICsraikgeworICAgICAgICAgICAgICAgICAgICBzLmFkZChleGNlcHRpb25bal0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmcm9tQ2FzZUZvbGQucHV0KGV4Y2VwdGlvblswXSwgcyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIHdhbGsgdGhyb3VnaCBhbGwgdGhlIGNoYXJhY3RlcnMsIGFuZCBhdCBldmVyeSBjYXNlIGZvbGQgcmVzdWx0LAorICAgICAgICAvLyBwdXQgYSBzZXQgb2YgYWxsIHRoZSBjaGFyYWN0ZXJzIHRoYXQgbWFwIHRvIHRoYXQgcmVzdWx0CisgICAgICAgIAorICAgICAgICBib29sZWFuIGRlZmF1bHRtYXBwaW5nID0gdHJ1ZTsgLy8gZmFsc2UgZm9yIHR1cmtpc2gKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gMHgxMEZGRkY7ICsraSkgeworICAgICAgICAgICAgaW50IGNhdCA9IFVDaGFyYWN0ZXIuZ2V0VHlwZShpKTsKKyAgICAgICAgICAgIGlmIChjYXQgPT0gQ2hhcmFjdGVyLlVOQVNTSUdORUQgfHwgY2F0ID09IENoYXJhY3Rlci5QUklWQVRFX1VTRSkgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFN0cmluZyBjcCA9IFVURjE2LnZhbHVlT2YoaSk7CisgICAgICAgICAgICBTdHJpbmcgbWFwcGVkID0gVUNoYXJhY3Rlci5mb2xkQ2FzZShjcCwgZGVmYXVsdG1hcHBpbmcpOworICAgICAgICAgICAgaWYgKG1hcHBlZC5lcXVhbHMoY3ApKSBjb250aW51ZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG1heExlbmd0aCA8IG1hcHBlZC5sZW5ndGgoKSkgbWF4TGVuZ3RoID0gbWFwcGVkLmxlbmd0aCgpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBhdCB0aGlzIHBvaW50LCBoYXZlIGRpZmZlcmVudCBjYXNlIGZvbGRpbmcKKyAgICAgICAgICAgIAorICAgICAgICAgICAgU2V0IHMgPSAoU2V0KSBmcm9tQ2FzZUZvbGQuZ2V0KG1hcHBlZCk7CisgICAgICAgICAgICBpZiAocyA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgcyA9IG5ldyBIYXNoU2V0KCk7CisgICAgICAgICAgICAgICAgcy5hZGQobWFwcGVkKTsgLy8gYWRkIHRoZSBjYXNlIGZvbGQgcmVzdWx0IGl0c2VsZgorICAgICAgICAgICAgICAgIGZyb21DYXNlRm9sZC5wdXQobWFwcGVkLCBzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHMuYWRkKGNwKTsKKyAgICAgICAgICAgIHRvQ2FzZUZvbGQucHV0KGNwLCBtYXBwZWQpOworICAgICAgICAgICAgdG9DYXNlRm9sZC5wdXQobWFwcGVkLCBtYXBwZWQpOyAvLyBhZGQgbWFwcGluZyB0byBzZWxmCisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIE5vdyBjb252ZXJ0IGFsbCB0aG9zZSBzZXRzIGludG8gbGluZWFyIGFycmF5cworICAgICAgICAvLyBXZSBjYW4ndCBkbyB0aGlzIGluIHBsYWNlIGluIEphdmEsIHNvIG1ha2UgYSB0ZW1wb3JhcnkgdGFyZ2V0IGFycmF5CisgICAgICAgIAorICAgICAgICAvLyBOb3RlOiBUaGlzIGNvdWxkIGJlIHRyYW5zZm9ybWVkIGludG8gYSBzaW5nbGUgYXJyYXksIHdpdGggb2Zmc2V0cyBpbnRvIGl0LgorICAgICAgICAvLyBNaWdodCBiZSBiZXN0IGNob2ljZSBpbiBDLgorICAgICAgICAKKyAgICAgICAgCisgICAgICAgIE1hcCBmcm9tQ2FzZUZvbGQyID0gbmV3IEhhc2hNYXAoKTsKKyAgICAgICAgSXRlcmF0b3IgaXQgPSBmcm9tQ2FzZUZvbGQua2V5U2V0KCkuaXRlcmF0b3IoKTsKKyAgICAgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkgeworICAgICAgICAgICAgT2JqZWN0IGtleSA9IGl0Lm5leHQoKTsKKyAgICAgICAgICAgIFNldCBzID0gKFNldCkgZnJvbUNhc2VGb2xkLmdldChrZXkpOworICAgICAgICAgICAgU3RyaW5nW10gdGVtcCA9IG5ldyBTdHJpbmdbcy5zaXplKCldOworICAgICAgICAgICAgcy50b0FycmF5KHRlbXApOworICAgICAgICAgICAgZnJvbUNhc2VGb2xkMi5wdXQoa2V5LCB0ZW1wKTsKKyAgICAgICAgfQorICAgICAgICBmcm9tQ2FzZUZvbGQgPSBmcm9tQ2FzZUZvbGQyOworICAgICAgICAKKyAgICAgICAgLy8gV2UgaGF2ZSBwcm9jZXNzZWQgZXZlcnl0aGluZywgc28gdGhlIGl0ZXJhdG9yIHdpbGwgbm93IHdvcmsKKyAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBpcyBub3JtYWxseSBPRkYuIAorICAgICAgICAvLyBJdCBpcyBoZXJlIHRvIGdlbmVyYXRlICh1bmRlciB0aGUgR0VORVJBVEUgZmxhZykgdGhlIHN0YXRpYyBleGNlcHRpb24gbGlzdC4KKyAgICAgICAgLy8gSXQgbXVzdCBiZSBhdCB0aGUgdmVyeSBlbmQgb2YgaW5pdGlhbGl6YXRpb24sIHNvIHRoYXQgdGhlIGl0ZXJhdG9yIGlzIGZ1bmN0aW9uYWwuCisgICAgICAgIC8vIChlYXNpZXN0IHRvIGRvIGl0IHRoYXQgd2F5KQorICAgICAgICAgICAgCisgICAgICAgIGlmIChHRU5FUkFURSkgeworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBmaXJzdCBnZXQgc21hbGwgc2V0IG9mIGl0ZW1zIHRoYXQgaGF2ZSBtdWx0aXBsZSBjaGFyYWN0ZXJzCisgICAgICAgICAgICAKKyAgICAgICAgICAgIFNldCBtdWx0aWNoYXJzID0gbmV3IFRyZWVTZXQoKTsKKyAgICAgICAgICAgIGl0ID0gZnJvbUNhc2VGb2xkLmtleVNldCgpLml0ZXJhdG9yKCk7CisgICAgICAgICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIGtleSA9IChTdHJpbmcpIGl0Lm5leHQoKTsKKyAgICAgICAgICAgICAgICBpZiAoVVRGMTYuY291bnRDb2RlUG9pbnQoa2V5KSA8IDIpIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIG11bHRpY2hhcnMuYWRkKGtleSk7CisgICAgICAgICAgICB9ICAgICAgICAgICAgCisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIG5vdyB3ZSB3aWxsIGdvIHRocm91Z2ggZWFjaCBvZiB0aGVtLgorICAgICAgICAgICAgCisgICAgICAgICAgICBDYXNlSXRlcmF0b3IgY2kgPSBuZXcgQ2FzZUl0ZXJhdG9yKCk7CisgICAgICAgICAgICBpdCA9IG11bHRpY2hhcnMuaXRlcmF0b3IoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkgeworICAgICAgICAgICAgICAgIFN0cmluZyBrZXkgPSAoU3RyaW5nKSBpdC5uZXh0KCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gaGVyZSBpcyBhIG5hc3R5IGNvbXBsaWNhdGlvbi4gVGFrZSAnZmZpJyBsaWdhdHVyZS4gV2UKKyAgICAgICAgICAgICAgICAvLyBjYW4ndCBqdXN0IGNsb3NlIGl0LCBzaW5jZSB3ZSB3b3VsZCBtaXNzIHRoZSBjb21iaW5hdGlvbgorICAgICAgICAgICAgICAgIC8vIHRoYXQgaW5jbHVkZXMgdGhlICdmaScgPT4gImZpIiBsaWdhdHVyZQorICAgICAgICAgICAgICAgIC8vIHNvIGZpcnN0IGRvIGEgcGFzcyB0aHJvdWdoLCBhbmQgYWRkIHN1YnN0cmluZyBjb21iaW5hdGlvbnMKKyAgICAgICAgICAgICAgICAvLyB3ZSBjYWxsIHRoaXMgYSAncGFydGlhbCBjbG9zdXJlJworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIFNldCBwYXJ0aWFsQ2xvc3VyZSA9IG5ldyBUcmVlU2V0KCk7CisgICAgICAgICAgICAgICAgcGFydGlhbENsb3N1cmUuYWRkKGtleSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKFVURjE2LmNvdW50Q29kZVBvaW50KGtleSkgPiAyKSB7CisgICAgICAgICAgICAgICAgICAgIEl0ZXJhdG9yIG11bHRpSXQyID0gbXVsdGljaGFycy5pdGVyYXRvcigpOworICAgICAgICAgICAgICAgICAgICB3aGlsZSAobXVsdGlJdDIuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgb3RoZXJLZXkgPSAoU3RyaW5nKSBtdWx0aUl0Mi5uZXh0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3RoZXJLZXkubGVuZ3RoKCkgPj0ga2V5Lmxlbmd0aCgpKSBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBwb3MgPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBpcyBub3QgY29tcGxldGVseSBnZW5lcmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnV0IHdvcmtzIGZvciB0aGUgYWN0dWFsIGNhc2VkIHN0dWZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBzaG91bGQgd29yayBmb3IgZnV0dXJlIGNoYXJhY3RlcnMsIHNpbmNlIHdlIHdvbid0IGhhdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtb3JlIGxpZ2F0dXJlcyAmIG90aGVyIG9kZGl0aWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcyA9IGtleS5pbmRleE9mKG90aGVyS2V5LCBwb3MrMSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvcyA8IDApIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBlbmRQb3MgPSBwb3MgKyBvdGhlcktleS5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSBrbm93IHdlIGhhdmUgYSBwcm9wZXIgc3Vic3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNvIGdldCB0aGUgY29tYmluYXRpb25zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nW10gY2hvaWNlcyA9IChTdHJpbmdbXSkgZnJvbUNhc2VGb2xkLmdldChvdGhlcktleSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaWkgPSAwOyBpaSA8IGNob2ljZXMubGVuZ3RoOyArK2lpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBwYXRjaHdvcmsgPSBrZXkuc3Vic3RyaW5nKDAsIHBvcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgY2hvaWNlc1tpaV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsga2V5LnN1YnN0cmluZyhlbmRQb3MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aWFsQ2xvc3VyZS5hZGQocGF0Y2h3b3JrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gbm93LCBmb3IgZWFjaCB0aGluZyBpbiB0aGUgcGFydGlhbCBjbG9zdXJlLCBnZXQgaXRzCisgICAgICAgICAgICAgICAgLy8gY2FzZSBjbG9zdXJlIGFuZCBhZGQgaXQgdG8gdGhlIGZpbmFsIHJlc3VsdC4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBTZXQgY2xvc3VyZSA9IG5ldyBUcmVlU2V0KCk7IC8vIHRoaXMgd2lsbCBiZSB0aGUgcmVhbCBjbG9zdXJlCisgICAgICAgICAgICAgICAgSXRlcmF0b3IgcGFydGlhbEl0ID0gcGFydGlhbENsb3N1cmUuaXRlcmF0b3IoKTsKKyAgICAgICAgICAgICAgICB3aGlsZSAocGFydGlhbEl0Lmhhc05leHQoKSkgeworICAgICAgICAgICAgICAgICAgICBTdHJpbmcga2V5MiA9IChTdHJpbmcpIHBhcnRpYWxJdC5uZXh0KCk7CisgICAgICAgICAgICAgICAgICAgIGNpLnJlc2V0KGtleTIpOworICAgICAgICAgICAgICAgICAgICBmb3IgKFN0cmluZyB0ZW1wID0gY2kubmV4dCgpOyB0ZW1wICE9IG51bGw7IHRlbXAgPSBjaS5uZXh0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsb3N1cmUuYWRkKHRlbXApOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIC8vIGZvcm0gY2xvc3VyZQorICAgICAgICAgICAgICAgICAgICAvKlN0cmluZ1tdIGNob2ljZXMgPSAoU3RyaW5nW10pIGZyb21DYXNlRm9sZC5nZXQoa2V5Mik7CisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2hvaWNlcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2kucmVzZXQoY2hvaWNlc1tpXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgdGVtcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChudWxsICE9ICh0ZW1wID0gY2kubmV4dCgpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3N1cmUuYWRkKHRlbXApOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIHByaW50IGl0IG91dCwgc28gdGhhdCBpdCBjYW4gYmUgY3V0IGFuZCBwYXN0ZWQgYmFjayBpbnRvIHRoaXMgZG9jdW1lbnQuCisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgSXRlcmF0b3IgaXQyID0gY2xvc3VyZS5pdGVyYXRvcigpOworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiXHQvLyAiICsgdG9OYW1lLnRyYW5zbGl0ZXJhdGUoa2V5KSk7CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludCgiXHR7XCIiICsgdG9IZXgudHJhbnNsaXRlcmF0ZShrZXkpICsgIlwiLCIpOworICAgICAgICAgICAgICAgIHdoaWxlIChpdDIuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBpdGVtID0gKFN0cmluZylpdDIubmV4dCgpOworICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCJcIiIgKyB0b0hleC50cmFuc2xpdGVyYXRlKGl0ZW0pICsgIlwiLCIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIn0sIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLy8gPT09PT09PT09PT09IFBSSVZBVEUgQ0xBU1MgREFUQSA9PT09PT09PT09PT0gCisgICAgCisgICAgLy8gcGllY2VzIHRoYXQgd2Ugd2lsbCBwdXQgdG9nZXRoZXIKKyAgICAvLyBpcyBub3QgY2hhbmdlZCBkdXJpbmcgaXRlcmF0aW9uCisgICAgcHJpdmF0ZSBpbnQgY291bnQgPSAwOworICAgIHByaXZhdGUgU3RyaW5nW11bXSB2YXJpYW50czsKKyAgICAKKyAgICAvLyBzdGF0ZSBpbmZvcm1hdGlvbiwgY2hhbmdlcyBkdXJpbmcgaXRlcmF0aW9uCisgICAgcHJpdmF0ZSBib29sZWFuIGRvbmUgPSBmYWxzZTsKKyAgICBwcml2YXRlIGludFtdIGNvdW50czsKKyAgICAKKyAgICAvLyBpbnRlcm5hbCBidWZmZXIgZm9yIGVmZmljaWVuY3kKKyAgICBwcml2YXRlIFN0cmluZ0J1ZmZlciBuZXh0QnVmZmVyID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgIAorICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PSAgCisKKyAgICAvKioKKyAgICAgKiBSZXNldCB0byBkaWZmZXJlbnQgc291cmNlLiBPbmNlIHJlc2V0LCB0aGUgaXRlcmF0aW9uIHN0YXJ0cyBmcm9tIHRoZSBiZWdpbm5pbmcuCisgICAgICogQHBhcmFtIHNvdXJjZSBUaGUgc3RyaW5nIHRvIGdldCBjYXNlIHZhcmlhbnRzIGZvcgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHJlc2V0KFN0cmluZyBzb3VyY2UpIHsKKyAgICAgICAgCisgICAgICAgIC8vIGFsbG9jYXRlIGFycmF5cyB0byBzdG9yZSBwaWVjZXMKKyAgICAgICAgLy8gdXNpbmcgbGVuZ3RoIG1pZ2h0IGJlIHNsaWdodGx5IHRvbyBsb25nLCBidXQgd2UgZG9uJ3QgY2FyZSBtdWNoCisgICAgICAgIAorICAgICAgICBjb3VudHMgPSBuZXcgaW50W3NvdXJjZS5sZW5ndGgoKV07CisgICAgICAgIHZhcmlhbnRzID0gbmV3IFN0cmluZ1tzb3VyY2UubGVuZ3RoKCldW107CisgICAgICAgIAorICAgICAgICAvLyB3YWxrIHRocm91Z2ggdGhlIHNvdXJjZSwgYW5kIGJyZWFrIHVwIGludG8gcGllY2VzCisgICAgICAgIC8vIGVhY2ggcGllY2UgYmVjb21lcyBhbiBhcnJheSBvZiBlcXVpdmFsZW50IHZhbHVlcworICAgICAgICAvLyBUT0RPOiBjb3VsZCBvcHRpbWl6ZWQgdGhpcyBsYXRlciB0byBjb2FsZXNjZSBhbGwgc2luZ2xlIHN0cmluZyBwaWVjZXMKKyAgICAgICAgCisgICAgICAgIFN0cmluZyBwaWVjZSA9IG51bGw7CisgICAgICAgIGNvdW50ID0gMDsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzb3VyY2UubGVuZ3RoKCk7IGkgKz0gcGllY2UubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gZmluZCAqbG9uZ2VzdCogbWF0Y2hpbmcgcGllY2UKKyAgICAgICAgICAgIFN0cmluZyBjYXNlRm9sZCA9IG51bGw7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChHRU5FUkFURSkgeworICAgICAgICAgICAgICAgIC8vIGRvIGV4YWN0bHkgb25lIENQCisgICAgICAgICAgICAgICAgcGllY2UgPSBVVEYxNi52YWx1ZU9mKHNvdXJjZSwgaSk7CisgICAgICAgICAgICAgICAgY2FzZUZvbGQgPSAoU3RyaW5nKSB0b0Nhc2VGb2xkLmdldChwaWVjZSk7CisgICAgICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGludCBtYXggPSBpICsgbWF4TGVuZ3RoOworICAgICAgICAgICAgICAgIGlmIChtYXggPiBzb3VyY2UubGVuZ3RoKCkpIG1heCA9IHNvdXJjZS5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gbWF4OyBqID4gaTsgLS1qKSB7CisgICAgICAgICAgICAgICAgICAgIHBpZWNlID0gc291cmNlLnN1YnN0cmluZyhpLCBqKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZUZvbGQgPSAoU3RyaW5nKSB0b0Nhc2VGb2xkLmdldChwaWVjZSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjYXNlRm9sZCAhPSBudWxsKSBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIGlmIHdlIGZhaWwsIHBpY2sgb25lIGNvZGUgcG9pbnQKKyAgICAgICAgICAgIGlmIChjYXNlRm9sZCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgcGllY2UgPSBVVEYxNi52YWx1ZU9mKHNvdXJjZSwgaSk7CisgICAgICAgICAgICAgICAgdmFyaWFudHNbY291bnQrK10gPSBuZXcgU3RyaW5nW10ge3BpZWNlfTsgLy8gc2luZ2xlIGl0ZW0gc3RyaW5nCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHZhcmlhbnRzW2NvdW50KytdID0gKFN0cmluZ1tdKWZyb21DYXNlRm9sZC5nZXQoY2FzZUZvbGQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJlc2V0KCk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJlc3RhcnQgdGhlIGl0ZXJhdGlvbiBmcm9tIHRoZSBiZWdpbm5pbmcsIGJ1dCB3aXRoIHNhbWUgc291cmNlCisgICAgICovCisgICAgcHVibGljIHZvaWQgcmVzZXQoKSB7CisgICAgICAgIGRvbmUgPSBmYWxzZTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgICAgICBjb3VudHNbaV0gPSAwOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEl0ZXJhdGVzIHRocm91Z2ggdGhlIGNhc2UgdmFyaWFudHMuCisgICAgICogQHJldHVybiBuZXh0IGNhc2UgdmFyaWFudC4gRWFjaCB2YXJpYW50IHdpbGwgY2FzZS1mb2xkIHRvIHRoZSBzYW1lIHZhbHVlIGFzIHRoZSBzb3VyY2Ugd2lsbC4KKyAgICAgKiBXaGVuIHRoZSBpdGVyYXRpb24gaXMgZG9uZSwgbnVsbCBpcyByZXR1cm5lZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIG5leHQoKSB7CisgICAgICAgIAorICAgICAgICBpZiAoZG9uZSkgcmV0dXJuIG51bGw7CisgICAgICAgIGludCBpOworICAgICAgICAKKyAgICAgICAgLy8gVE9ETyBPcHRpbWl6ZSBzbyB3ZSBrZWVwIHRoZSBwaWVjZSBiZWZvcmUgYW5kIGFmdGVyIHRoZSBjdXJyZW50IHBvc2l0aW9uCisgICAgICAgIC8vIHNvIHdlIGRvbid0IGhhdmUgc28gbXVjaCBjb25jYXRlbmF0aW9uCisgICAgICAgIAorICAgICAgICAvLyBnZXQgdGhlIHJlc3VsdCwgYSBjb25jYXRlbmF0aW9uCisgICAgICAgIAorICAgICAgICBuZXh0QnVmZmVyLnNldExlbmd0aCgwKTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgICAgIG5leHRCdWZmZXIuYXBwZW5kKHZhcmlhbnRzW2ldW2NvdW50c1tpXV0pOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBmaW5kIHRoZSBuZXh0IHJpZ2h0IHNldCBvZiBwaWVjZXMgdG8gY29uY2F0ZW5hdGUKKyAgICAgICAgCisgICAgICAgIGZvciAoaSA9IGNvdW50LTE7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgICAgICBjb3VudHNbaV0rKzsKKyAgICAgICAgICAgIGlmIChjb3VudHNbaV0gPCB2YXJpYW50c1tpXS5sZW5ndGgpIGJyZWFrOworICAgICAgICAgICAgY291bnRzW2ldID0gMDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gaWYgd2UgZ28gdG9vIGZhciwgYmFpbAorICAgICAgICAKKyAgICAgICAgaWYgKGkgPCAwKSB7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIG5leHRCdWZmZXIudG9TdHJpbmcoKTsgICAgICAgICAgICAKKyAgICB9CisgICAgICAgIAorICAgICAgICAKKyAgICAvKioKKyAgICAgKiBUZW1wb3JhcnkgdGVzdCwganVzdCB0byBzZWUgaG93IHRoZSBzdHVmZiB3b3Jrcy4KKyAgICAgKi8KKyAgICBzdGF0aWMgcHVibGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIFN0cmluZ1tdIHRlc3RDYXNlcyA9IHsiZmlzcyIsICJoXHUwM2EzIn07CisgICAgICAgIENhc2VJdGVyYXRvciBjaSA9IG5ldyBDYXNlSXRlcmF0b3IoKTsKKyAgICAgICAgCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGVzdENhc2VzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBTdHJpbmcgaXRlbSA9IHRlc3RDYXNlc1tpXTsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJUZXN0aW5nOiAiICsgdG9OYW1lLnRyYW5zbGl0ZXJhdGUoaXRlbSkpOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CisgICAgICAgICAgICBjaS5yZXNldChpdGVtKTsKKyAgICAgICAgICAgIGludCBjb3VudCA9IDA7CisgICAgICAgICAgICBmb3IgKFN0cmluZyB0ZW1wID0gY2kubmV4dCgpOyB0ZW1wICE9IG51bGw7IHRlbXAgPSBjaS5uZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4odG9OYW1lLnRyYW5zbGl0ZXJhdGUodGVtcCkpOworICAgICAgICAgICAgICAgIGNvdW50Kys7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRvdGFsOiAiICsgY291bnQpOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby90cmFuc2xpdC9EZW1vLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vdHJhbnNsaXQvRGVtby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjI4MzIzOGYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vdHJhbnNsaXQvRGVtby5qYXZhCkBAIC0wLDAgKzEsMTM4MSBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL3RyYW5zbGl0L0RlbW8uamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wNy8yNiAxOTo1Njo1OCAkIAorICogJFJldmlzaW9uOiAxLjI0ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5kZXYuZGVtby50cmFuc2xpdDsKK2ltcG9ydCBqYXZhLmFwcGxldC4qOworaW1wb3J0IGphdmEuYXd0Lio7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuKjsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ltcG9ydCBqYXZhLnRleHQuQ2hhcmFjdGVySXRlcmF0b3I7CitpbXBvcnQgY29tLmlibS5pY3UuZGV2LmRlbW8uaW1wbC4qOworaW1wb3J0IGNvbS5pYm0uaWN1LmxhbmcuKjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0Lio7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC4qOworaW1wb3J0IGphdmEuaW8uKjsKKworLyoqCisgKiBBIGZyYW1lIHRoYXQgYWxsb3dzIHRoZSB1c2VyIHRvIGV4cGVyaW1lbnQgd2l0aCBrZXlib2FyZAorICogdHJhbnNsaXRlcmF0aW9uLiAgVGhpcyBjbGFzcyBoYXMgYSBtYWluKCkgbWV0aG9kIHNvIGl0IGNhbiBiZSBydW4KKyAqIGFzIGFuIGFwcGxpY2F0aW9uLiAgVGhlIGZyYW1lIGNvbnRhaW5zIGFuIGVkaXRhYmxlIHRleHQgY29tcG9uZW50CisgKiBhbmQgdXNlcyBrZXlib2FyZCB0cmFuc2xpdGVyYXRpb24gdG8gcHJvY2VzcyBrZXlib2FyZCBldmVudHMuCisgKgorICogPHA+Q29weXJpZ2h0IChjKSBJQk0gQ29ycG9yYXRpb24gMTk5OS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogQGF1dGhvciBBbGFuIExpdQorICogQHZlcnNpb24gJFJDU2ZpbGU6IERlbW8uamF2YSx2ICQgJFJldmlzaW9uOiAxLjI0ICQgJERhdGU6IDIwMDIvMDcvMjYgMTk6NTY6NTggJAorICovCitwdWJsaWMgY2xhc3MgRGVtbyBleHRlbmRzIEZyYW1lIHsKKworICAgIHN0YXRpYyBmaW5hbCBib29sZWFuIERFQlVHID0gZmFsc2U7CisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBTVEFSVF9URVhUID0gIihjdXQsXHUwM0JBXHUwM0M1XHUwM0M0LFx1MDVEMCxcdTMwQUZcdTMwQzgsXHU0RTgwLFx1MDkxQVx1MDk0MVx1MDkyNFx1MDk0RCkiOworCisgICAgVHJhbnNsaXRlcmF0b3IgdHJhbnNsaXQgPSBudWxsOworICAgIFN0cmluZyBmb250TmFtZSA9ICJBcmlhbCBVbmljb2RlIE1TIjsKKyAgICBpbnQgZm9udFNpemUgPSAxODsKKyAgICAKKyAgICAKKworICAgIC8qCisgICAgYm9vbGVhbiBjb21wb3VuZCA9IGZhbHNlOworICAgIFRyYW5zbGl0ZXJhdG9yW10gY29tcG91bmRUcmFuc2xpdCA9IG5ldyBUcmFuc2xpdGVyYXRvcltNQVhfQ09NUE9VTkRdOworICAgIHN0YXRpYyBmaW5hbCBpbnQgTUFYX0NPTVBPVU5EID0gMTI4OworICAgIGludCBjb21wb3VuZENvdW50ID0gMDsKKyAgICAqLworCisgICAgVHJhbnNsaXRlcmF0aW5nVGV4dENvbXBvbmVudCB0ZXh0ID0gbnVsbDsKKworICAgIE1lbnUgdHJhbnNsaXRNZW51OworICAgIENoZWNrYm94TWVudUl0ZW0gdHJhbnNsaXRJdGVtOworICAgIENoZWNrYm94TWVudUl0ZW0gbm9UcmFuc2xpdEl0ZW07CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIE5PX1RSQU5TTElURVJBVE9SID0gIk5vbmUiOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICJcdTAwQTkgSUJNIENvcnBvcmF0aW9uIDE5OTkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIjsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgRnJhbWUgZiA9IG5ldyBEZW1vKDYwMCwgMjAwKTsKKyAgICAgICAgZi5hZGRXaW5kb3dMaXN0ZW5lcihuZXcgV2luZG93QWRhcHRlcigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHdpbmRvd0Nsb3NpbmcoV2luZG93RXZlbnQgZSkgeworICAgICAgICAgICAgICAgIFN5c3RlbS5leGl0KDApOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgICAgZi5zZXRWaXNpYmxlKHRydWUpOworICAgIH0KKworCXB1YmxpYyBEZW1vKGludCB3aWR0aCwgaW50IGhlaWdodCkgeworICAgICAgICBzdXBlcigiVHJhbnNsaXRlcmF0aW9uIERlbW8iKTsKKworICAgICAgICBpbml0TWVudXMoKTsKKworICAgICAgICBhZGRXaW5kb3dMaXN0ZW5lcihuZXcgV2luZG93QWRhcHRlcigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHdpbmRvd0Nsb3NpbmcoV2luZG93RXZlbnQgZSkgeworICAgICAgICAgICAgICAgIGhhbmRsZUNsb3NlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgICAKKyAgICAgICAgdGV4dCA9IG5ldyBUcmFuc2xpdGVyYXRpbmdUZXh0Q29tcG9uZW50KCk7CisgICAgICAgIEZvbnQgZm9udCA9IG5ldyBGb250KGZvbnROYW1lLCBGb250LlBMQUlOLCBmb250U2l6ZSk7CisgICAgICAgIHRleHQuc2V0Rm9udChmb250KTsKKyAgICAgICAgdGV4dC5zZXRTaXplKHdpZHRoLCBoZWlnaHQpOworICAgICAgICB0ZXh0LnNldFZpc2libGUodHJ1ZSk7CisgICAgICAgIHRleHQuc2V0VGV4dChTVEFSVF9URVhUKTsKKyAgICAgICAgYWRkKHRleHQpOworCisgICAgICAgIHNldFNpemUod2lkdGgsIGhlaWdodCk7CisgICAgICAgIHNldFRyYW5zbGl0ZXJhdG9yKCJMYXRpbi1HcmVlayIsIG51bGwpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBpbml0TWVudXMoKSB7CisgICAgICAgIE1lbnVCYXIgbWJhcjsKKyAgICAgICAgTWVudSBtZW51OworICAgICAgICBNZW51SXRlbSBtaXRlbTsKKyAgICAgICAgQ2hlY2tib3hNZW51SXRlbSBjaXRlbTsKKyAgICAgICAgCisgICAgICAgIHNldE1lbnVCYXIobWJhciA9IG5ldyBNZW51QmFyKCkpOworICAgICAgICBtYmFyLmFkZChtZW51ID0gbmV3IE1lbnUoIkZpbGUiKSk7CisgICAgICAgIG1lbnUuYWRkKG1pdGVtID0gbmV3IE1lbnVJdGVtKCJRdWl0IikpOworICAgICAgICBtaXRlbS5hZGRBY3Rpb25MaXN0ZW5lcihuZXcgQWN0aW9uTGlzdGVuZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBhY3Rpb25QZXJmb3JtZWQoQWN0aW9uRXZlbnQgZSkgeworICAgICAgICAgICAgICAgIGhhbmRsZUNsb3NlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworLyoKKyAgICAgICAgZmluYWwgSXRlbUxpc3RlbmVyIHNldFRyYW5zbGl0ZXJhdG9yTGlzdGVuZXIgPSBuZXcgSXRlbUxpc3RlbmVyKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgaXRlbVN0YXRlQ2hhbmdlZChJdGVtRXZlbnQgZSkgeworICAgICAgICAgICAgICAgIENoZWNrYm94TWVudUl0ZW0gaXRlbSA9IChDaGVja2JveE1lbnVJdGVtKSBlLmdldFNvdXJjZSgpOworICAgICAgICAgICAgICAgIGlmIChlLmdldFN0YXRlQ2hhbmdlKCkgPT0gSXRlbUV2ZW50LkRFU0VMRUNURUQpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgbGV0IHRoZSBjdXJyZW50IHRyYW5zbGl0ZXJhdG9yIGJlIGRlc2VsZWN0ZWQuCisgICAgICAgICAgICAgICAgICAgIC8vIEp1c3QgcmVzZWxlY3QgaXQuCisgICAgICAgICAgICAgICAgICAgIGl0ZW0uc2V0U3RhdGUodHJ1ZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb21wb3VuZCkgeworICAgICAgICAgICAgICAgICAgICAvLyBBZGRpbmcgYW4gaXRlbSB0byBhIGNvbXBvdW5kIHRyYW5zbGl0ZXJhdG9yCisgICAgICAgICAgICAgICAgICAgIGhhbmRsZUFkZFRvQ29tcG91bmQoaXRlbS5nZXRMYWJlbCgpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gIT0gdHJhbnNsaXRJdGVtKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIERlc2VsZWN0IHByZXZpb3VzIGNob2ljZS4gIERvbid0IG5lZWQgdG8gY2FsbAorICAgICAgICAgICAgICAgICAgICAvLyBzZXRTdGF0ZSh0cnVlKSBvbiBuZXcgY2hvaWNlLgorICAgICAgICAgICAgICAgICAgICB0cmFuc2xpdEl0ZW0uc2V0U3RhdGUoZmFsc2UpOworICAgICAgICAgICAgICAgICAgICB0cmFuc2xpdEl0ZW0gPSBpdGVtOworICAgICAgICAgICAgICAgICAgICBoYW5kbGVTZXRUcmFuc2xpdGVyYXRvcihpdGVtLmdldExhYmVsKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyovCisgICAgICAgIC8qCisgICAgICAgIHRyYW5zbGl0TWVudS5hZGQodHJhbnNsaXRJdGVtID0gbm9UcmFuc2xpdEl0ZW0gPQorICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBDaGVja2JveE1lbnVJdGVtKE5PX1RSQU5TTElURVJBVE9SLCB0cnVlKSk7CisgICAgICAgIG5vVHJhbnNsaXRJdGVtLmFkZEl0ZW1MaXN0ZW5lcihuZXcgSXRlbUxpc3RlbmVyKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgaXRlbVN0YXRlQ2hhbmdlZChJdGVtRXZlbnQgZSkgeworICAgICAgICAgICAgICAgIC8vIENhbid0IHVuY2hlY2sgTm9uZSAtLSBhbnkgYWN0aW9uIGhlcmUgc2V0cyBOb25lIHRvIHRydWUKKyAgICAgICAgICAgICAgICBzZXROb1RyYW5zbGl0ZXJhdG9yKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworCisgICAgICAgIHRyYW5zbGl0TWVudS5hZGRTZXBhcmF0b3IoKTsKKyAgICAgICAgKi8KKworLyoKKyAgICAgICAgdHJhbnNsaXRNZW51LmFkZChjaXRlbSA9IG5ldyBDaGVja2JveE1lbnVJdGVtKCJDb21wb3VuZCIpKTsKKyAgICAgICAgY2l0ZW0uYWRkSXRlbUxpc3RlbmVyKG5ldyBJdGVtTGlzdGVuZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBpdGVtU3RhdGVDaGFuZ2VkKEl0ZW1FdmVudCBlKSB7CisgICAgICAgICAgICAgICAgQ2hlY2tib3hNZW51SXRlbSBpdGVtID0gKENoZWNrYm94TWVudUl0ZW0pIGUuZ2V0U291cmNlKCk7CisgICAgICAgICAgICAgICAgaWYgKGUuZ2V0U3RhdGVDaGFuZ2UoKSA9PSBJdGVtRXZlbnQuREVTRUxFQ1RFRCkgeworICAgICAgICAgICAgICAgICAgICAvLyBJZiBjb21wb3VuZCBnZXRzIGRlc2VsZWN0ZWQsIHRoZW4gc2VsZWN0IE5PTkUKKyAgICAgICAgICAgICAgICAgICAgc2V0Tm9UcmFuc2xpdGVyYXRvcigpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWNvbXBvdW5kKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFN3aXRjaGluZyBmcm9tIG5vbi1jb21wb3VuZCB0byBjb21wb3VuZAorICAgICAgICAgICAgICAgICAgICB0cmFuc2xpdEl0ZW0uc2V0U3RhdGUoZmFsc2UpOworICAgICAgICAgICAgICAgICAgICB0cmFuc2xpdEl0ZW0gPSBpdGVtOworICAgICAgICAgICAgICAgICAgICB0cmFuc2xpdCA9IG51bGw7CisgICAgICAgICAgICAgICAgICAgIGNvbXBvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgY29tcG91bmRDb3VudCA9IDA7CisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxNQVhfQ09NUE9VTkQ7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY29tcG91bmRUcmFuc2xpdFtpXSA9IG51bGw7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgCisgICAgICAgIHRyYW5zbGl0TWVudS5hZGRTZXBhcmF0b3IoKTsKKyAgICAgICAqLworCisgICAgICAgIC8qCisgICAgICAgIGZvciAoRW51bWVyYXRpb24gZT1nZXRTeXN0ZW1UcmFuc2xpdGVyYXRvck5hbWVzKCkuZWxlbWVudHMoKTsKKyAgICAgICAgICAgICBlLmhhc01vcmVFbGVtZW50cygpOyApIHsKKyAgICAgICAgICAgIFN0cmluZyBzID0gKFN0cmluZykgZS5uZXh0RWxlbWVudCgpOworICAgICAgICAgICAgdHJhbnNsaXRNZW51LmFkZChjaXRlbSA9IG5ldyBDaGVja2JveE1lbnVJdGVtKHMpKTsKKyAgICAgICAgICAgIGNpdGVtLmFkZEl0ZW1MaXN0ZW5lcihzZXRUcmFuc2xpdGVyYXRvckxpc3RlbmVyKTsKKyAgICAgICAgfQorICAgICAgICAqLworICAgICAgICAKKyAgICAgICAgTWVudSBmb250TWVudSA9IG5ldyBNZW51KCJGb250Iik7CisgICAgICAgIFN0cmluZ1tdIGZvbnRzID0gR3JhcGhpY3NFbnZpcm9ubWVudC5nZXRMb2NhbEdyYXBoaWNzRW52aXJvbm1lbnQoKS5nZXRBdmFpbGFibGVGb250RmFtaWx5TmFtZXMoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmb250cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgTWVudUl0ZW0gbUl0ZW0gPSBuZXcgTWVudUl0ZW0oZm9udHNbaV0pOworICAgICAgICAgICAgbUl0ZW0uYWRkQWN0aW9uTGlzdGVuZXIobmV3IEZvbnRBY3Rpb25MaXN0ZW5lcihmb250c1tpXSkpOworICAgICAgICAgICAgZm9udE1lbnUuYWRkKG1JdGVtKTsKKyAgICAgICAgfQorICAgICAgICBtYmFyLmFkZChmb250TWVudSk7CisgICAgICAgIAorICAgICAgICBNZW51IHNpemVNZW51ID0gbmV3IE1lbnUoIlNpemUiKTsKKyAgICAgICAgaW50W10gc2l6ZXMgPSB7OSwgMTAsIDEyLCAxNCwgMTgsIDI0LCAzNiwgNDgsIDcyfTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgTWVudUl0ZW0gbUl0ZW0gPSBuZXcgTWVudUl0ZW0oIiIgKyBzaXplc1tpXSk7CisgICAgICAgICAgICBtSXRlbS5hZGRBY3Rpb25MaXN0ZW5lcihuZXcgU2l6ZUFjdGlvbkxpc3RlbmVyKHNpemVzW2ldKSk7CisgICAgICAgICAgICBzaXplTWVudS5hZGQobUl0ZW0pOworICAgICAgICB9CisgICAgICAgIG1iYXIuYWRkKHNpemVNZW51KTsKKyAgICAgICAgCisgICAgICAgIHRyYW5zbGl0ID0gbnVsbDsKKyAgICAgICAgCisgICAgICAgIG1iYXIuYWRkKHRyYW5zbGl0TWVudSA9IG5ldyBNZW51KCJUcmFuc2xpdGVyYXRvciIpKTsKKyAgICAgICAgCisgICAgICAgIHRyYW5zbGl0TWVudS5hZGQoY29udmVydFNlbGVjdGlvbkl0ZW0gPSBuZXcgTWVudUl0ZW0oIlRyYW5zbGl0ZXJhdGUiLCAKKyAgICAgICAgICAgIG5ldyBNZW51U2hvcnRjdXQoS2V5RXZlbnQuVktfSykpKTsKKyAgICAgICAgY29udmVydFNlbGVjdGlvbkl0ZW0uYWRkQWN0aW9uTGlzdGVuZXIobmV3IEFjdGlvbkxpc3RlbmVyKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEFjdGlvbkV2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICBoYW5kbGVCYXRjaFRyYW5zbGl0ZXJhdGUodHJhbnNsaXQpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgICAgCisgICAgICAgIHRyYW5zbGl0TWVudS5hZGQoc3dhcFNlbGVjdGlvbkl0ZW0gPSBuZXcgTWVudUl0ZW0oIlJldmVyc2UiLCAKKyAgICAgICAgICAgIG5ldyBNZW51U2hvcnRjdXQoS2V5RXZlbnQuVktfUykpKTsKKyAgICAgICAgc3dhcFNlbGVjdGlvbkl0ZW0uYWRkQWN0aW9uTGlzdGVuZXIobmV3IEFjdGlvbkxpc3RlbmVyKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEFjdGlvbkV2ZW50IGUpIHsKKyAgICAgICAgICAgIAlUcmFuc2xpdGVyYXRvciBpbnY7CisgICAgICAgICAgICAJdHJ5IHsKKyAgICAgICAgICAgICAgICAJaW52ID0gdHJhbnNsaXQuZ2V0SW52ZXJzZSgpOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiB4KSB7CisgICAgICAgICAgICAgICAgCWludiA9IG5ldyBOdWxsVHJhbnNsaXRlcmF0b3IoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAJc2V0VHJhbnNsaXRlcmF0b3IoaW52LmdldElEKCksIG51bGwpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgICAgCisgICAgICAgIHRyYW5zbGl0TWVudS5hZGQoY29udmVydFR5cGluZ0l0ZW0gPSBuZXcgTWVudUl0ZW0oIk5vIFR5cGluZyBDb252ZXJzaW9uIiwKKyAgICAgICAgICAgIG5ldyBNZW51U2hvcnRjdXQoS2V5RXZlbnQuVktfVCkpKTsKKyAgICAgICAgY29udmVydFR5cGluZ0l0ZW0uYWRkQWN0aW9uTGlzdGVuZXIobmV3IEFjdGlvbkxpc3RlbmVyKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEFjdGlvbkV2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXRyYW5zbGl0ZXJhdGVUeXBpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgdGV4dC5zZXRUcmFuc2xpdGVyYXRvcih0cmFuc2xpdCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRUeXBpbmdJdGVtLnNldExhYmVsKCJObyBUeXBpbmcgQ29udmVyc2lvbiIpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHRleHQuZmx1c2goKTsKKyAgICAgICAgICAgICAgICAgICAgdGV4dC5zZXRUcmFuc2xpdGVyYXRvcihudWxsKTsKKyAgICAgICAgICAgICAgICAgICAgY29udmVydFR5cGluZ0l0ZW0uc2V0TGFiZWwoIkNvbnZlcnQgVHlwaW5nIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRyYW5zbGl0ZXJhdGVUeXBpbmcgPSAhdHJhbnNsaXRlcmF0ZVR5cGluZzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgICAgIAorICAgICAgICB0cmFuc2xpdE1lbnUuYWRkKGhpc3RvcnlNZW51ID0gbmV3IE1lbnUoIlJlY2VudCIpKTsKKyAgICAgICAgCisgICAgICAgIGhlbHBEaWFsb2cgPSBuZXcgSW5mb0RpYWxvZyh0aGlzLCAiU2ltcGxlIERlbW8iLCAiSW5zdHJ1Y3Rpb25zIiwKKyAgICAgICAgICAgIkNUTCBBLCBYLCBDLCBWIGhhdmUgY3VzdG9tYXJ5IG1lYW5pbmdzLlxuIgorICAgICAgICAgKyAiQXJyb3cga2V5cywgZGVsZXRlIGFuZCBiYWNrc3BhY2Ugd29yay5cbiIKKyAgICAgICAgICsgIlRvIGdldCBhIGNoYXJhY3RlciBmcm9tIGl0cyBjb250cm9sIHBvaW50LCB0eXBlIHRoZSBoZXgsIHRoZW4gaGl0IENUTCBRIgorICAgICAgICApOworICAgICAgICBoZWxwRGlhbG9nLmdldEFyZWEoKS5zZXRFZGl0YWJsZShmYWxzZSk7CisgICAgICAgIAorICAgICAgIAorICAgICAgICBNZW51IGhlbHBNZW51OworICAgICAgICBtYmFyLmFkZChoZWxwTWVudSA9IG5ldyBNZW51KCJFeHRyYXMiKSk7CisgICAgICAgIGhlbHBNZW51LmFkZChtaXRlbSA9IG5ldyBNZW51SXRlbSgiSGVscCIpKTsKKyAgICAgICAgbWl0ZW0uYWRkQWN0aW9uTGlzdGVuZXIobmV3IEFjdGlvbkxpc3RlbmVyKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEFjdGlvbkV2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICBoZWxwRGlhbG9nLnNob3coKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7ICAgCisgICAgICAgIAorICAgICAgICBoZXhEaWFsb2cgPSBuZXcgSW5mb0RpYWxvZyh0aGlzLCAiSGV4IEVudHJ5IiwgIlVzZSBVKy4uLiwgXFx1Li4uLCBcXHh7Li4ufSwgb3IgJiN4Li4uOyIsCisgICAgICAgICAgICJcXHUwMEUxIgorICAgICAgICApOworICAgICAgICBCdXR0b24gYnV0dG9uID0gbmV3IEJ1dHRvbigiSW5zZXJ0Iik7CisgICAgICAgIGJ1dHRvbi5hZGRBY3Rpb25MaXN0ZW5lcihuZXcgQWN0aW9uTGlzdGVuZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBhY3Rpb25QZXJmb3JtZWQoQWN0aW9uRXZlbnQgZSkgeworICAgICAgICAgICAgICAgIFN0cmluZyBoZXhWYWx1ZSA9IGhleERpYWxvZy5nZXRBcmVhKCkuZ2V0VGV4dCgpOworICAgICAgICAgICAgICAgIHRleHQuaW5zZXJ0VGV4dChmcm9tSGV4LnRyYW5zbGl0ZXJhdGUoaGV4VmFsdWUpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgICAgIGhleERpYWxvZy5nZXRCb3R0b20oKS5hZGQoYnV0dG9uKTsKKyAgICAgICAgCisgICAgICAgIGhlbHBNZW51LmFkZChtaXRlbSA9IG5ldyBNZW51SXRlbSgiSGV4Li4uIiwgCisgICAgICAgICAgICBuZXcgTWVudVNob3J0Y3V0KEtleUV2ZW50LlZLX0gpKSk7CisgICAgICAgIG1pdGVtLmFkZEFjdGlvbkxpc3RlbmVyKG5ldyBBY3Rpb25MaXN0ZW5lcigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGFjdGlvblBlcmZvcm1lZChBY3Rpb25FdmVudCBlKSB7CisgICAgICAgICAgICAgICAgaGV4RGlhbG9nLnNob3coKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgICAgIAorICAgICAgICAvLyBDb21wb3VuZCBUcmFuc2xpdGVyYXRvcgorICAgICAgICAKKyAgICAgICAgY29tcG91bmREaWFsb2cgPSBuZXcgSW5mb0RpYWxvZyh0aGlzLCAiQ29tcG91bmQgVHJhbnNsaXRlcmF0b3IiLCAiIiwKKyAgICAgICAgICAgIlteXFx1MDAwMC1cXHUwMEZGXSBoZXgiCisgICAgICAgICk7CisgICAgICAgIGJ1dHRvbiA9IG5ldyBCdXR0b24oIlNldCIpOworICAgICAgICBidXR0b24uYWRkQWN0aW9uTGlzdGVuZXIobmV3IEFjdGlvbkxpc3RlbmVyKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEFjdGlvbkV2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgY29tcG91bmQgPSAiIjsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBjb21wb3VuZCA9IGNvbXBvdW5kRGlhbG9nLmdldEFyZWEoKS5nZXRUZXh0KCk7CisgICAgICAgICAgICAgICAgICAgIHNldFRyYW5zbGl0ZXJhdG9yKGNvbXBvdW5kLCBudWxsKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChSdW50aW1lRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICAgICAgICAgIGNvbXBvdW5kRGlhbG9nLmdldEFyZWEoKS5zZXRUZXh0KGNvbXBvdW5kICsgIlxuIiArIGV4LmdldE1lc3NhZ2UoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgICAgY29tcG91bmREaWFsb2cuZ2V0Qm90dG9tKCkuYWRkKGJ1dHRvbik7CisgICAgICAgIAorICAgICAgICB0cmFuc2xpdE1lbnUuYWRkKG1pdGVtID0gbmV3IE1lbnVJdGVtKCJNdWx0aXBsZS4uLiIsIAorICAgICAgICAgICAgbmV3IE1lbnVTaG9ydGN1dChLZXlFdmVudC5WS19NKSkpOworICAgICAgICBtaXRlbS5hZGRBY3Rpb25MaXN0ZW5lcihuZXcgQWN0aW9uTGlzdGVuZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBhY3Rpb25QZXJmb3JtZWQoQWN0aW9uRXZlbnQgZSkgeworICAgICAgICAgICAgICAgIGNvbXBvdW5kRGlhbG9nLnNob3coKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgICAgIAorICAgICAgICAvLyBSdWxlQmFzZWQgVHJhbnNsaXRlcmF0b3IKKyAgICAgICAgCisgICAgICAgIHJ1bGVzRGlhbG9nID0gbmV3IEluZm9EaWFsb2codGhpcywgIlJ1bGUtQmFzZWQgVHJhbnNsaXRlcmF0b3IiLCAiIiwKKyAgICAgICAgICAgIihbQS1aXSkgPiAmSGV4KCQxKSAmTmFtZSgkMSk7XHJcbiIgCisgICAgICAgICAgICArICImSGV4LUFueSgkMSkgPCAoJ1xcJyBbdVVdIFthLWZBLUYwLTldKik7XHJcbiIgCisJCQkrICImTmFtZS1BbnkoJDEpIDwgKCd7JyBbXlxcfV0qICd9Jyk7IgorICAgICAgICApOworICAgICAgICBidXR0b24gPSBuZXcgQnV0dG9uKCJTZXQiKTsKKyAgICAgICAgYnV0dG9uLmFkZEFjdGlvbkxpc3RlbmVyKG5ldyBBY3Rpb25MaXN0ZW5lcigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGFjdGlvblBlcmZvcm1lZChBY3Rpb25FdmVudCBlKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIGNvbXBvdW5kID0gIiI7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgY29tcG91bmQgPSBydWxlc0RpYWxvZy5nZXRBcmVhKCkuZ2V0VGV4dCgpOworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgaWQgPSBydWxlSWQuZ2V0VGV4dCgpOworICAgICAgICAgICAgICAgICAgICBzZXRUcmFuc2xpdGVyYXRvcihjb21wb3VuZCwgaWQpOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJ1bnRpbWVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgcnVsZXNEaWFsb2cuZ2V0QXJlYSgpLnNldFRleHQoY29tcG91bmQgKyAiXG4jIiArIGV4LmdldE1lc3NhZ2UoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgICAgcnVsZXNEaWFsb2cuZ2V0Qm90dG9tKCkuYWRkKGJ1dHRvbik7CisgICAgICAgIHJ1bGVJZCA9IG5ldyBUZXh0RmllbGQoInRlc3QxIiwgMjApOworICAgICAgICBMYWJlbCB0ZW1wID0gbmV3IExhYmVsKCIgTmFtZToiKTsKKyAgICAgICAgcnVsZXNEaWFsb2cuZ2V0Qm90dG9tKCkuYWRkKHRlbXApOworICAgICAgICBydWxlc0RpYWxvZy5nZXRCb3R0b20oKS5hZGQocnVsZUlkKTsKKyAgICAgICAgCisgICAgICAgIAorICAgICAgICB0cmFuc2xpdE1lbnUuYWRkKG1pdGVtID0gbmV3IE1lbnVJdGVtKCJGcm9tIFJ1bGVzLi4uIiwgCisgICAgICAgICAgICBuZXcgTWVudVNob3J0Y3V0KEtleUV2ZW50LlZLX1IpKSk7CisgICAgICAgIG1pdGVtLmFkZEFjdGlvbkxpc3RlbmVyKG5ldyBBY3Rpb25MaXN0ZW5lcigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGFjdGlvblBlcmZvcm1lZChBY3Rpb25FdmVudCBlKSB7CisgICAgICAgICAgICAgICAgcnVsZXNEaWFsb2cuc2hvdygpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgICAgCisgICAgICAgIAorICAgICAgICB0cmFuc2xpdE1lbnUuYWRkKG1pdGVtID0gbmV3IE1lbnVJdGVtKCJGcm9tIEZpbGUuLi4iLCAKKyAgICAgICAgICAgIG5ldyBNZW51U2hvcnRjdXQoS2V5RXZlbnQuVktfRikpKTsKKyAgICAgICAgbWl0ZW0uYWRkQWN0aW9uTGlzdGVuZXIobmV3IEZpbGVMaXN0ZW5lcih0aGlzLCBSVUxFX0ZJTEUpKTsKKyAgICAgICAgCisgICAgICAgIHRyYW5zbGl0TWVudS5hZGQobWl0ZW0gPSBuZXcgTWVudUl0ZW0oIlRlc3QgRmlsZS4uLiIpKTsKKyAgICAgICAgbWl0ZW0uYWRkQWN0aW9uTGlzdGVuZXIobmV3IEZpbGVMaXN0ZW5lcih0aGlzLCBURVNUX0ZJTEUpKTsKKyAgICAgICAgCisgICAgICAgIC8vIEZsZXNoIG91dCB0aGUgbWVudSB3aXRoIHRoZSBpbnN0YWxsZWQgdHJhbnNsaXRlcmF0b3JzCisgICAgICAgIAorICAgICAgICB0cmFuc2xpdE1lbnUuYWRkU2VwYXJhdG9yKCk7CisgICAgICAgIAorICAgICAgICBJdGVyYXRvciBzb3VyY2VzID0gYWRkKG5ldyBUcmVlU2V0KCksIFRyYW5zbGl0ZXJhdG9yLmdldEF2YWlsYWJsZVNvdXJjZXMoKSkuaXRlcmF0b3IoKTsKKyAgICAgICAgd2hpbGUoc291cmNlcy5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgIFN0cmluZyBzb3VyY2UgPSAoU3RyaW5nKSBzb3VyY2VzLm5leHQoKTsKKyAgICAgICAgICAgIEl0ZXJhdG9yIHRhcmdldHMgPSBhZGQobmV3IFRyZWVTZXQoKSwgVHJhbnNsaXRlcmF0b3IuZ2V0QXZhaWxhYmxlVGFyZ2V0cyhzb3VyY2UpKS5pdGVyYXRvcigpOworICAgICAgICAgICAgTWVudSB0YXJnZXRNZW51ID0gbmV3IE1lbnUoc291cmNlKTsKKyAgICAgICAgICAgIHdoaWxlKHRhcmdldHMuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHRhcmdldCA9IChTdHJpbmcpIHRhcmdldHMubmV4dCgpOworICAgICAgICAgICAgICAgIFNldCB2YXJpYW50U2V0ID0gYWRkKG5ldyBUcmVlU2V0KCksIFRyYW5zbGl0ZXJhdG9yLmdldEF2YWlsYWJsZVZhcmlhbnRzKHNvdXJjZSwgdGFyZ2V0KSk7CisgICAgICAgICAgICAgICAgaWYgKHZhcmlhbnRTZXQuc2l6ZSgpIDwgMikgeworICAgICAgICAgICAgICAgICAgICBtaXRlbSA9IG5ldyBNZW51SXRlbSh0YXJnZXQpOworICAgICAgICAgICAgICAgICAgICBtaXRlbS5hZGRBY3Rpb25MaXN0ZW5lcihuZXcgVHJhbnNsaXRlcmF0aW9uTGlzdGVuZXIoc291cmNlICsgIi0iICsgdGFyZ2V0KSk7CisgICAgICAgICAgICAgICAgICAgIHRhcmdldE1lbnUuYWRkKG1pdGVtKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBJdGVyYXRvciB2YXJpYW50cyA9IHZhcmlhbnRTZXQuaXRlcmF0b3IoKTsKKyAgICAgICAgICAgICAgICAgICAgTWVudSB2YXJpYW50TWVudSA9IG5ldyBNZW51KHRhcmdldCk7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlKHZhcmlhbnRzLmhhc05leHQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHZhcmlhbnQgPSAoU3RyaW5nKSB2YXJpYW50cy5uZXh0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbWVudU5hbWUgPSB2YXJpYW50Lmxlbmd0aCgpID09IDAgPyAiPGRlZmF1bHQ+IiA6IHZhcmlhbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiPCIgKyBzb3VyY2UgKyAiLSIgKyB0YXJnZXQgKyAiLyIgKyB2YXJpYW50ICsgIj4sIDwiICsgbWVudU5hbWUgKyAiPiIpOworICAgICAgICAgICAgICAgICAgICAgICAgbWl0ZW0gPSBuZXcgTWVudUl0ZW0obWVudU5hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgbWl0ZW0uYWRkQWN0aW9uTGlzdGVuZXIobmV3IFRyYW5zbGl0ZXJhdGlvbkxpc3RlbmVyKHNvdXJjZSArICItIiArIHRhcmdldCArICIvIiArIHZhcmlhbnQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnRNZW51LmFkZChtaXRlbSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0TWVudS5hZGQodmFyaWFudE1lbnUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRyYW5zbGl0TWVudS5hZGQodGFyZ2V0TWVudSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIAorICAgIH0KKyAgICAKKyAgICBzdGF0aWMgZmluYWwgaW50IFJVTEVfRklMRSA9IDAsIFRFU1RfRklMRSA9IDE7CisgICAgLy8KKyAgICBzdGF0aWMgY2xhc3MgRmlsZUxpc3RlbmVyIGltcGxlbWVudHMgQWN0aW9uTGlzdGVuZXIgeworICAgICAgICBEZW1vIGZyYW1lOworICAgICAgICBpbnQgY2hvaWNlOworICAgICAgICAKKyAgICAgICAgRmlsZUxpc3RlbmVyKERlbW8gZnJhbWUsIGludCBjaG9pY2UpIHsKKyAgICAgICAgICAgIHRoaXMuZnJhbWUgPSBmcmFtZTsKKyAgICAgICAgICAgIHRoaXMuY2hvaWNlID0gY2hvaWNlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwdWJsaWMgdm9pZCBhY3Rpb25QZXJmb3JtZWQoQWN0aW9uRXZlbnQgZSkgeworICAgICAgICAgICAgU3RyaW5nIGlkID0gZnJhbWUudHJhbnNsaXQuZ2V0SUQoKTsKKyAgICAgICAgICAgIGludCBzbGFzaFBvcyA9IGlkLmluZGV4T2YoJy8nKTsKKyAgICAgICAgICAgIFN0cmluZyB2YXJpYW50ID0gIiI7CisgICAgICAgICAgICBpZiAoc2xhc2hQb3MgPj0gMCkgeworICAgICAgICAgICAgICAgIHZhcmlhbnQgPSAiXyIgKyBpZC5zdWJzdHJpbmcoc2xhc2hQb3MrMSk7CisgICAgICAgICAgICAgICAgaWQgPSBpZC5zdWJzdHJpbmcoMCwgc2xhc2hQb3MpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBGaWxlRGlhbG9nIGZpbGVEaWFsb2cgPSBuZXcgRmlsZURpYWxvZyhmcmFtZSwgIklucHV0IEZpbGUiKTsKKyAgICAgICAgICAgIGZpbGVEaWFsb2cuc2V0RmlsZSgiVGVzdF8iICsgaWQgKyAiLnR4dCIpOworICAgICAgICAgICAgZmlsZURpYWxvZy5zaG93KCk7CisgICAgICAgICAgICBTdHJpbmcgZmlsZU5hbWUgPSBmaWxlRGlhbG9nLmdldEZpbGUoKTsKKyAgICAgICAgICAgIFN0cmluZyBmaWxlRGlyZWN0b3J5ID0gZmlsZURpYWxvZy5nZXREaXJlY3RvcnkoKTsKKyAgICAgICAgICAgIGlmIChmaWxlTmFtZSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgRmlsZSBmID0gbmV3IEZpbGUoZmlsZURpcmVjdG9yeSwgZmlsZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBpZiAoY2hvaWNlID09IFJVTEVfRklMRSkgeworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWFkIHN0dWZmIGludG8gYnVmZmVyCisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ0J1ZmZlciBidWZmZXIgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBGaWxlSW5wdXRTdHJlYW0gZmlzID0gbmV3IEZpbGVJbnB1dFN0cmVhbShmKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIElucHV0U3RyZWFtUmVhZGVyIGlzciA9IG5ldyBJbnB1dFN0cmVhbVJlYWRlcihmaXMsICJVVEY4Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJlZFJlYWRlciBiciA9IG5ldyBCdWZmZXJlZFJlYWRlcihpc3IsIDMyKjEwMjQpOworICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbGluZSA9IGJyLnJlYWRMaW5lKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmUgPT0gbnVsbCkgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmUubGVuZ3RoKCkgPiAwICYmIGxpbmUuY2hhckF0KDApID09ICdcdUZFRkYnKSBsaW5lID0gbGluZS5zdWJzdHJpbmcoMSk7IC8vIHN0cmlwIEJPTQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoJ1xuJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChsaW5lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyLmNsb3NlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRyYW5zZm9ybSBmaWxlIG5hbWUgaW50byBpZAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbGVOYW1lLnN0YXJ0c1dpdGgoIlRyYW5zbGl0ZXJhdG9yXyIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZU5hbWUgPSBmaWxlTmFtZS5zdWJzdHJpbmcoIlRyYW5zbGl0ZXJhdG9yXyIubGVuZ3RoKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBvcyA9IGZpbGVOYW1lLmluZGV4T2YoJ18nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwb3MgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBmaWxlTmFtZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBmaWxlTmFtZS5zdWJzdHJpbmcoMCwgcG9zKSArICItIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcG9zMiA9IGZpbGVOYW1lLmluZGV4T2YoJ18nLCBwb3MrMSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvczIgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkICs9IGZpbGVOYW1lLnN1YnN0cmluZyhwb3MrMSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgKz0gZmlsZU5hbWUuc3Vic3RyaW5nKHBvcysxLCBwb3MyKSArICIvIiArIGZpbGVOYW1lLnN1YnN0cmluZyhwb3MyICsgMSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gaWQubGFzdEluZGV4T2YoJy4nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwb3MgPj0gMCkgaWQgPSBpZC5zdWJzdHJpbmcoMCwgcG9zKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm93IHNldAorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS5zZXRUcmFuc2xpdGVyYXRvcihidWZmZXIudG9TdHJpbmcoKSwgaWQpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNob2ljZSA9PSBURVNUX0ZJTEUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdlblRlc3RGaWxlKGYsIGZyYW1lLnRyYW5zbGl0LCB2YXJpYW50KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlMikgeworICAgICAgICAgICAgICAgICAgICBlMi5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJQcm9ibGVtIG9wZW5pbmcvcmVhZGluZzogIiArIGZpbGVEaXJlY3RvcnkgKyAiLCAiICsgZmlsZU5hbWUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZpbGVEaWFsb2cuZGlzcG9zZSgpOworICAgICAgICB9CisgICAgfQorICAgIAorCisgICAgYm9vbGVhbiB0cmFuc2xpdGVyYXRlVHlwaW5nID0gdHJ1ZTsKKyAgICBUcmFuc2xpdGVyYXRvciBmcm9tSGV4ID0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoIkhleC1BbnkiKTsKKyAgICBJbmZvRGlhbG9nIGhlbHBEaWFsb2c7CisgICAgSW5mb0RpYWxvZyBoZXhEaWFsb2c7CisgICAgSW5mb0RpYWxvZyBjb21wb3VuZERpYWxvZzsKKyAgICBJbmZvRGlhbG9nIHJ1bGVzRGlhbG9nOworICAgIFRleHRGaWVsZCBydWxlSWQ7CisgICAgTWVudUl0ZW0gY29udmVydFNlbGVjdGlvbkl0ZW0gPSBudWxsOworICAgIE1lbnVJdGVtIHN3YXBTZWxlY3Rpb25JdGVtID0gbnVsbDsKKyAgICBNZW51SXRlbSBjb252ZXJ0VHlwaW5nSXRlbSA9IG51bGw7CisgICAgTWVudSBoaXN0b3J5TWVudTsKKyAgICBNYXAgaGlzdG9yeU1hcCA9IG5ldyBIYXNoTWFwKCk7CisgICAgU2V0IGhpc3RvcnlTZXQgPSBuZXcgVHJlZVNldChuZXcgQ29tcGFyYXRvcigpIHsKKyAgICAgICAgICAgIHB1YmxpYyBpbnQgY29tcGFyZShPYmplY3QgYSwgT2JqZWN0IGIpIHsKKyAgICAgICAgICAgICAgICBNZW51SXRlbSBhYSA9IChNZW51SXRlbSlhOworICAgICAgICAgICAgICAgIE1lbnVJdGVtIGJiID0gKE1lbnVJdGVtKWI7CisgICAgICAgICAgICAgICAgcmV0dXJuIGFhLmdldExhYmVsKCkuY29tcGFyZVRvKGJiLmdldExhYmVsKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgICAgCisgICAgLy8gQUREIEZhY3Rvcnkgc2luY2Ugb3RoZXJ3aXNlIGdldEludmVyc2UgYmxvd3Mgb3V0CisgICAgc3RhdGljIGNsYXNzIER1bW15RmFjdG9yeSBpbXBsZW1lbnRzIFRyYW5zbGl0ZXJhdG9yLkZhY3RvcnkgeworICAgICAgICBzdGF0aWMgRHVtbXlGYWN0b3J5IHNpbmdsZXRvbiA9IG5ldyBEdW1teUZhY3RvcnkoKTsKKyAgICAgICAgc3RhdGljIEhhc2hNYXAgbSA9IG5ldyBIYXNoTWFwKCk7CisKKyAgICAgICAgLy8gU2luY2UgVHJhbnNsaXRlcmF0b3JzIGFyZSBpbW11dGFibGUsIHdlIGRvbid0IGhhdmUgdG8gY2xvbmUgb24gc2V0ICYgZ2V0CisgICAgICAgIHN0YXRpYyB2b2lkIGFkZChTdHJpbmcgSUQsIFRyYW5zbGl0ZXJhdG9yIHQpIHsKKyAgICAgICAgICAgIG0ucHV0KElELCB0KTsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiUmVnaXN0ZXJpbmc6ICIgKyBJRCArICIsICIgKyB0LnRvUnVsZXModHJ1ZSkpOworICAgICAgICAgICAgVHJhbnNsaXRlcmF0b3IucmVnaXN0ZXJGYWN0b3J5KElELCBzaW5nbGV0b24pOworICAgICAgICB9CisgICAgICAgIHB1YmxpYyBUcmFuc2xpdGVyYXRvciBnZXRJbnN0YW5jZShTdHJpbmcgSUQpIHsKKyAgICAgICAgICAgIHJldHVybiAoVHJhbnNsaXRlcmF0b3IpIG0uZ2V0KElEKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBzdGF0aWMgdm9pZCBwcmludEJyZWFrcyhpbnQgbnVtLCBTdHJpbmcgdGVzdFNvdXJjZSwgQnJlYWtJdGVyYXRvciBiaSkgeworICAgICAgICBTdHJpbmcgcmVzdWx0ID0gIiI7CisgICAgICAgIGludCBsYXN0UG9zID0gMDsKKyAgICAJd2hpbGUgKHRydWUpIHsKKyAgICAJICAgIGludCBwb3MgPSBiaS5uZXh0KCk7CisgICAgCSAgICBpZiAocG9zID09IGJpLkRPTkUpIGJyZWFrOworICAgIAkgICAgcmVzdWx0ICs9IHRlc3RTb3VyY2Uuc3Vic3RyaW5nKGxhc3RQb3MsIHBvcykgKyAiJiI7CisgICAgCSAgICBsYXN0UG9zID0gcG9zOworICAgIAkgICAgU3lzdGVtLm91dC5wcmludGxuKHBvcyk7CisgICAgCX0KKyAgICAJU3lzdGVtLm91dC5wcmludGxuKCJUZXN0IiArIG51bSArICI6ICIgKyByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgdm9pZCBwcmludEl0ZXJhdGlvbihpbnQgbnVtLCBTdHJpbmcgdGVzdFNvdXJjZSwgQ2hhcmFjdGVySXRlcmF0b3IgY2kpIHsKKyAgICAgICAgU3RyaW5nIHJlc3VsdCA9ICIiOworICAgIAl3aGlsZSAodHJ1ZSkgeworICAgIAkgICAgY2hhciBjaCA9IGNpLm5leHQoKTsKKyAgICAJICAgIGlmIChjaCA9PSBjaS5ET05FKSBicmVhazsKKyAgICAJICAgIHJlc3VsdCArPSBjaCArICIoIiArIGNpLmdldEluZGV4KCkgKyAiKSI7CisgICAgCX0KKyAgICAJU3lzdGVtLm91dC5wcmludGxuKCJUZXN0IiArIG51bSArICI6ICIgKyByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgdm9pZCBwcmludFNvdXJjZXMoKSB7CisgICAgICAgIFN0cmluZ1tdIGxpc3QgPSB7IkxhdGluLVRoYWlMb2dpY2FsIiwgIlRoYWlMb2dpY2FsLUxhdGluIiwgIlRoYWktVGhhaUxvZ2ljYWwiLCAiVGhhaUxvZ2ljYWwtVGhhaSJ9OworICAgICAgICBVbmljb2RlU2V0IGFsbCA9IG5ldyBVbmljb2RlU2V0KCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgVHJhbnNsaXRlcmF0b3IgdHIgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZShsaXN0W2ldKTsKKyAgICAgICAgICAgIFVuaWNvZGVTZXQgc3JjID0gdHIuZ2V0U291cmNlU2V0KCk7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obGlzdFtpXSArICI6ICIgKyBzcmMudG9QYXR0ZXJuKHRydWUpKTsKKyAgICAgICAgICAgIGFsbC5hZGRBbGwoc3JjKTsKKyAgICAgICAgfQorICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkFsbDogIiArIGFsbC50b1BhdHRlcm4odHJ1ZSkpOworICAgICAgICBVbmljb2RlU2V0IHJlbSA9IG5ldyBVbmljb2RlU2V0KCJbWzpsYXRpbjpdWzp0aGFpOl1dIik7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigibWlzc2luZyBmcm9tIFs6bGF0aW46XVs6dGhhaTpdOiAiICsgYWxsLnJlbW92ZUFsbChyZW0pLnRvUGF0dGVybih0cnVlKSk7CisgICAgfQorICAgIAorICAgIC8vIDIwMEU7TEVGVC1UTy1SSUdIVCBNQVJLO0NmOzA7TDs7Ozs7Tjs7Ozs7CisKKyAgICBzdGF0aWMgVHJhbnNsaXRlcmF0b3IgdGl0bGUgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgidGl0bGUiKTsKKyAgICBzdGF0aWMgU3RyaW5nIGhleEFuZE5hbWVSdWxlcyA9ICIgICAgKFs6YzpdKSA+IFxcdTIwMEUgJmhleC91bmljb2RlKCQxKSAnICggKSAnICZuYW1lKCQxKSBcXHUyMDBFICcgJzsiCisgICAgICAgICsgIihbOm1hcms6XSkgPiBcXHUyMDBFICZoZXgvdW5pY29kZSgkMSkgJyAoICcgXFx1MjAwRSBcdTI1Q0MgJDEgXFx1MjAwRSAnICkgJyAmbmFtZSgkMSkgXFx1MjAwRSAnICc7IgorICAgICAgICArICIoLikgPiBcXHUyMDBFICZoZXgvdW5pY29kZSgkMSkgJyAoICcgXFx1MjAwRSAkMSBcXHUyMDBFICcgKSAnICZuYW1lKCQxKSAnICcgXFx1MjAwRTsiOworCisgICAgc3RhdGljIFRyYW5zbGl0ZXJhdG9yIGhleEFuZE5hbWUgPSBUcmFuc2xpdGVyYXRvci5jcmVhdGVGcm9tUnVsZXMoImFueS1oZXhBbmROYW1lIiwgCisgICAgICAgIGhleEFuZE5hbWVSdWxlcywgVHJhbnNsaXRlcmF0b3IuRk9SV0FSRCk7CisgICAgCisKKworICAgIC8vc3RhdGljIFRyYW5zbGl0ZXJhdG9yIHVwcGVyID0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoInVwcGVyIik7CisgICAgIAorICAgIHN0YXRpYyBmaW5hbCBieXRlIE5PTkUgPSAwLCBUSVRMRVdPUkQgPSAxLCBUSVRMRUxJTkUgPSAyOworICAgIAorICAgIHN0YXRpYyB2b2lkIGdlblRlc3RGaWxlKEZpbGUgc291cmNlRmlsZSwgVHJhbnNsaXRlcmF0b3IgdHJhbnNsaXQsIFN0cmluZyB2YXJpYW50KSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiUmVhZGluZzogIiArIHNvdXJjZUZpbGUuZ2V0Q2Fub25pY2FsUGF0aCgpKTsKKyAgICAgICAgICAgIEJ1ZmZlcmVkUmVhZGVyIGluID0gbmV3IEJ1ZmZlcmVkUmVhZGVyKAorICAgICAgICAgICAgICAgIG5ldyBJbnB1dFN0cmVhbVJlYWRlcigKKyAgICAgICAgICAgICAgICAgICAgbmV3IEZpbGVJbnB1dFN0cmVhbShzb3VyY2VGaWxlKSwgIlVURi04IikpOworICAgICAgICAgICAgU3RyaW5nIHRhcmdldEZpbGUgPSBzb3VyY2VGaWxlLmdldENhbm9uaWNhbFBhdGgoKTsKKyAgICAgICAgICAgIGludCBkb3RQb3MgPSB0YXJnZXRGaWxlLmxhc3RJbmRleE9mKCcuJyk7CisgICAgICAgICAgICBpZiAoZG90UG9zID49IDApIHRhcmdldEZpbGUgPSB0YXJnZXRGaWxlLnN1YnN0cmluZygwLGRvdFBvcyk7CisgICAgICAgICAgICB0YXJnZXRGaWxlICs9IHZhcmlhbnQ7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEZpbGUgb3V0RmlsZSA9IG5ldyBGaWxlKHRhcmdldEZpbGUgKyAiLmh0bWwiKTsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiV3JpdGluZzogIiArIG91dEZpbGUuZ2V0Q2Fub25pY2FsUGF0aCgpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgUHJpbnRXcml0ZXIgb3V0ID0gbmV3IFByaW50V3JpdGVyKAorICAgICAgICAgICAgICAgIG5ldyBCdWZmZXJlZFdyaXRlcigKKyAgICAgICAgICAgICAgICAgICAgbmV3IE91dHB1dFN0cmVhbVdyaXRlcigKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBGaWxlT3V0cHV0U3RyZWFtKG91dEZpbGUpLCAiVVRGLTgiKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBTdHJpbmcgZGlyZWN0aW9uID0gIiI7CisgICAgICAgICAgICBTdHJpbmcgaWQgPSB0cmFuc2xpdC5nZXRJRCgpOworICAgICAgICAgICAgaWYgKGlkLmluZGV4T2YoIkFyYWJpYyIpID49IDAgfHwgaWQuaW5kZXhPZigiSGVicmV3IikgPj0gMCkgeworICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9ICIgZGlyZWN0aW9uOiBydGw7IjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJvb2xlYW4gdGVzdFJvdW5kVHJpcCA9IHRydWU7CisgICAgICAgICAgICBib29sZWFuIGdlbmVyYXRlU2V0cyA9IHRydWU7CisgICAgICAgICAgICBpZiAoaWQuc3RhcnRzV2l0aCgiSGFuLSIpIHx8IGlkLnN0YXJ0c1dpdGgoImphLSIpKSB7CisgICAgICAgICAgICAgICAgdGVzdFJvdW5kVHJpcCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGdlbmVyYXRlU2V0cyA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgb3V0LnByaW50bG4oIjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9J0NvbnRlbnQtVHlwZScgY29udGVudD0ndGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Jz4iKTsKKyAgICAgICAgICAgIG91dC5wcmludGxuKCI8c3R5bGU+PCEtLSIpOworICAgICAgICAgICAgb3V0LnByaW50bG4oInRkLCB0aCAgICAgICB7IHZlcnRpY2FsLWFsaWduOiB0b3A7IGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrIH0iKTsKKyAgICAgICAgICAgIG91dC5wcmludGxuKCJ0ZC5zICAgICAgIHsgYmFja2dyb3VuZC1jb2xvcjogI0VFRUVFRTsiICsgZGlyZWN0aW9uICsgIiB9Iik7CisgICAgICAgICAgICBvdXQucHJpbnRsbigidGQuciAgICAgICB7IGJhY2tncm91bmQtY29sb3I6ICNDQ0NDQ0M7IiArIGRpcmVjdGlvbiArICIgfSIpOworICAgICAgICAgICAgb3V0LnByaW50bG4oInRkLm4gICAgICAgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkNDOyB9Iik7CisgICAgICAgICAgICBvdXQucHJpbnRsbigidGQudGl0bGUgICAgICAgeyBib3JkZXI6IDBweCBzb2xpZCBibGFja30iKTsKKyAgICAgICAgICAgIG91dC5wcmludGxuKCJzcGFuLmQgICAgICAgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjRkY2NjY2IH0iKTsKKyAgICAgICAgICAgIG91dC5wcmludGxuKCJzcGFuLnIgICAgICAgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjNjZGRjY2IH0iKTsKKworICAgICAgICAgICAgb3V0LnByaW50bG4oImJvZHkgICAgICAgICB7IGZvbnQtZmFtaWx5OiAnQXJpYWwgVW5pY29kZSBNUycsICdMdWNpZGEgU2FucyBVbmljb2RlJywgQXJpYWwsIHNhbnMtc2VyaWY7IG1hcmdpbjogNSB9Iik7CisgICAgICAgICAgICBvdXQucHJpbnRsbigiLS0+PC9zdHlsZT4iKTsKKyAgICAgICAgICAgIG91dC5wcmludGxuKCI8dGl0bGU+IiArIGlkICsgIiBUcmFuc2xpdGVyYXRpb24gQ2hlY2s8L3RpdGxlPjwvaGVhZD4iKTsKKyAgICAgICAgICAgIG91dC5wcmludGxuKCI8Ym9keSBiZ2NvbG9yPScjRkZGRkZGJz48cD5TZWUgPGEgaHJlZj0nVGVzdF9JbnN0cnVjdGlvbnMuaHRtbCc+VGVzdF9JbnN0cnVjdGlvbnMuaHRtbDwvYT4gZm9yIGRldGFpbHMuPC9wPiIpOworICAgICAgICAgICAgb3V0LnByaW50bG4oIjx0YWJsZT4iKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy9vdXQucHJpbnRsbigiPHRyPjx0aCB3aWR0aD0nMzMlJz5UaGFpPC90aD48dGggd2lkdGg9JzMzJSc+TGF0aW48L3RoPjx0aCB3aWR0aD0nMzMlJz5UaGFpPC90aD48L3RyPiIpOworICAKKyAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHRsID0gdHJhbnNsaXQ7CisgICAgICAgICAgICBUcmFuc2xpdGVyYXRvciBsdCA9IHRsLmdldEludmVyc2UoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgVHJhbnNsaXRlcmF0b3IgbHRGaWx0ZXIgPSB0bC5nZXRJbnZlcnNlKCk7CisgICAgICAgICAgICBsdEZpbHRlci5zZXRGaWx0ZXIobmV3IFVuaWNvZGVTZXQoIls6Xkx1Ol0iKSk7CisgICAgICAgICAgICBUcmFuc2xpdGVyYXRvciB0bEZpbHRlciA9IGx0LmdldEludmVyc2UoKTsKKyAgICAgICAgICAgIHRsRmlsdGVyLnNldEZpbHRlcihuZXcgVW5pY29kZVNldCgiWzpeTHU6XSIpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy9UcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgiWzpeTHU6XSIgKyAgbHQuZ2V0SUQoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEJyZWFrSXRlcmF0b3Igc2VudGVuY2VCcmVhayA9IEJyZWFrSXRlcmF0b3IuZ2V0U2VudGVuY2VJbnN0YW5jZSgpOworICAgICAgICAgICAgCisgICAgICAgICAgICBieXRlIHRpdGxlU2V0dGluZyA9IFRJVExFTElORTsKKyAgICAgICAgICAgIGJvb2xlYW4gdXBwZXJmaWx0ZXIgPSBmYWxzZTsKKyAgICAgICAgICAgIGJvb2xlYW4gZmlyc3QgPSB0cnVlOworICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgbGluZSA9IGluLnJlYWRMaW5lKCk7CisgICAgICAgICAgICAgICAgaWYgKGxpbmUgPT0gbnVsbCkgYnJlYWs7CisgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUudHJpbSgpOworICAgICAgICAgICAgICAgIGlmIChsaW5lLmxlbmd0aCgpID09IDApIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGlmIChsaW5lLmNoYXJBdCgwKSA9PSAnXHVGRUZGJykgbGluZSA9IGxpbmUuc3Vic3RyaW5nKDEpOyAvLyByZW1vdmUgQk9NCisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKGxpbmUuY2hhckF0KDApID09ICcjJykgY29udGludWU7IC8vIGNvbW1lbnRzCisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKGxpbmUuZXF1YWxzKCJAVElUTEVDQVNFQCIpKSB7CisgICAgICAgICAgICAgICAgICAgIHRpdGxlU2V0dGluZyA9IFRJVExFV09SRDsKKyAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oIjx0cj48dGQgY29sc3Bhbj0nMicgY2xhc3M9J3RpdGxlJz48Yj5OYW1lczwvYj48L3RkPjwvdHI+Iik7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobGluZS5lcXVhbHMoIkBVUFBFUkZJTFRFUkAiKSkgeworICAgICAgICAgICAgICAgICAgICB1cHBlcmZpbHRlciA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobGluZS5zdGFydHNXaXRoKCJAU0VUIikpIHsKKyAgICAgICAgICAgICAgICAgICAgVW5pY29kZVNldCBzID0gbmV3IFVuaWNvZGVTZXQobGluZS5zdWJzdHJpbmcoNCkudHJpbSgpKTsKKyAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oIjx0cj48dGQgY29sc3Bhbj0nMicgY2xhc3M9J3RpdGxlJz48Yj5DaGFyYWN0ZXJzPC9iPjwvdGQ+PC90cj4iKTsKKyAgICAgICAgICAgICAgICAgICAgVW5pY29kZVNldEl0ZXJhdG9yIGl0ID0gbmV3IFVuaWNvZGVTZXRJdGVyYXRvcihzKTsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGl0Lm5leHQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYWRkU2VudGVuY2VUb1RhYmxlKG91dCwgaXQuY29kZXBvaW50ICE9IGl0LklTX1NUUklORyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFVURjE2LnZhbHVlT2YoaXQuY29kZXBvaW50KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaXQuc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5PTkUsIHRydWUsIHRlc3RSb3VuZFRyaXAsIGZpcnN0LCB0bCwgbHQpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHNlbnRlbmNlQnJlYWsuc2V0VGV4dChsaW5lKTsKKyAgICAgICAgICAgICAgICBpbnQgc3RhcnQgPSAwOworICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgICAgIGludCBlbmQgPSBzZW50ZW5jZUJyZWFrLm5leHQoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGVuZCA9PSBzZW50ZW5jZUJyZWFrLkRPTkUpIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgY29yZVNlbnRlbmNlID0gbGluZS5zdWJzdHJpbmcoc3RhcnQsIGVuZCk7CisgICAgICAgICAgICAgICAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCJDb3JlOiAiICsgaGV4LnRyYW5zbGl0ZXJhdGUoY29yZVNlbnRlbmNlKSk7CisgICAgICAgICAgICAgICAgICAgIGVuZCA9IHN0YXJ0OworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaW50IG9sZFBvcyA9IDA7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlIChvbGRQb3MgPCBjb3JlU2VudGVuY2UubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhY2ssIGJlY2F1c2Ugc2VudGVuY2UgZG9lc24ndCBzZWVtIHRvIGJlIHdvcmtpbmcgcmlnaHQKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBwb3MgPSBjb3JlU2VudGVuY2UuaW5kZXhPZigiLiAiLCBvbGRQb3MpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvcyA8IDApIHBvcyA9IGNvcmVTZW50ZW5jZS5sZW5ndGgoKTsgZWxzZSBwb3MgPSBwb3MrMjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBwb3MyID0gY29yZVNlbnRlbmNlLmluZGV4T2YoJ1x1MzAwMicsIG9sZFBvcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9zMiA8IDApIHBvczIgPSBjb3JlU2VudGVuY2UubGVuZ3RoKCk7IGVsc2UgcG9zMiA9IHBvczIgKyAxOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvcyA+IHBvczIpIHBvcyA9IHBvczI7CisgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgc2VudGVuY2UgPSBjb3JlU2VudGVuY2Uuc3Vic3RyaW5nKG9sZFBvcywgcG9zKS50cmltKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiU2VudGVuY2U6ICIgKyBoZXgudHJhbnNsaXRlcmF0ZShjb3JlU2VudGVuY2UpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9sZFBvcyA9IHBvczsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgYWRkU2VudGVuY2VUb1RhYmxlKG91dCwgc2VudGVuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVTZXR0aW5nLCBmYWxzZSwgdGVzdFJvdW5kVHJpcCwgZmlyc3QsIHRsLCBsdCk7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBvdXQucHJpbnRsbigiPC90YWJsZT48L2JvZHk+Iik7CisgICAgICAgICAgICBvdXQuY2xvc2UoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gTm93IHdyaXRlIHRoZSBzb3VyY2UvdGFyZ2V0IHNldHMKKyAgICAgICAgICAgIGlmIChnZW5lcmF0ZVNldHMpIHsKKyAgICAgICAgICAgICAgICBvdXRGaWxlID0gbmV3IEZpbGUodGFyZ2V0RmlsZSArICJfU2V0cy5odG1sIik7CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJXcml0aW5nOiAiICsgb3V0RmlsZS5nZXRDYW5vbmljYWxQYXRoKCkpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG91dCA9IG5ldyBQcmludFdyaXRlcigKKyAgICAgICAgICAgICAgICAgICAgbmV3IEJ1ZmZlcmVkV3JpdGVyKAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IE91dHB1dFN0cmVhbVdyaXRlcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgRmlsZU91dHB1dFN0cmVhbShvdXRGaWxlKSwgIlVURi04IikpKTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiPGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgnPiIpOworICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCI8c3R5bGU+PCEtLSIpOworICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJib2R5ICAgICAgICAgeyBmb250LWZhbWlseTogJ0FyaWFsIFVuaWNvZGUgTVMnLCAnTHVjaWRhIFNhbnMgVW5pY29kZScsIEFyaWFsLCBzYW5zLXNlcmlmOyBtYXJnaW46IDUgfSIpOworICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCItLT48L3N0eWxlPiIpOworICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCI8dGl0bGU+IiArIGlkICsgIiBUcmFuc2xpdGVyYXRpb24gU2V0czwvdGl0bGU+PC9oZWFkPiIpOworICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCI8Ym9keSBiZ2NvbG9yPScjRkZGRkZGJz4iKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpbnQgZGFzaFBvcyA9IGlkLmluZGV4T2YoJy0nKTsKKyAgICAgICAgICAgICAgICBpbnQgc2xhc2hQb3MgPSBpZC5pbmRleE9mKCcvJyk7CisgICAgICAgICAgICAgICAgaWYgKHNsYXNoUG9zIDwgMCkgc2xhc2hQb3MgPSBpZC5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICBVbmljb2RlU2V0IHNvdXJjZVN1cGVyID0gbnVsbDsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgdGVtcCA9IGlkLnN1YnN0cmluZygwLGRhc2hQb3MpOworICAgICAgICAgICAgICAgICAgICBpZiAodGVtcC5lcXVhbHMoImphIikpIHNvdXJjZVN1cGVyID0gbmV3IFVuaWNvZGVTZXQoIltbOkhhbjpdWzpoaXJhZ2FuYTpdWzprYXRha2FuYTpdXSIpOworICAgICAgICAgICAgICAgICAgICBlbHNlIHNvdXJjZVN1cGVyID0gbmV3IFVuaWNvZGVTZXQoIltbOiIgKyB0ZW1wICsgIjpdWzpNbjpdWzpNZTpdXSIpOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7fQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIFVuaWNvZGVTZXQgdGFyZ2V0U3VwZXIgPSBudWxsOworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIHRhcmdldFN1cGVyID0gbmV3IFVuaWNvZGVTZXQoIltbOiIgKyBpZC5zdWJzdHJpbmcoZGFzaFBvcysxLCBzbGFzaFBvcykgKyAiOl1bOk1uOl1bOk1lOl1dIik7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHt9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaW50IG5mZFN0eWxlID0gQ0xPU0VfQ0FTRSB8IENMT1NFX0ZMQVRURU4gfCBDTE9TRV9DQU5PTklDQUw7CisgICAgICAgICAgICAgICAgaW50IG5ma2RTdHlsZSA9IG5mZFN0eWxlIHwgQ0xPU0VfQ09NUEFUSUJJTElUWTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiPHVsPiIpOworICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCI8cD48Yj5Ob25lPC9iPjwvcD4iKTsKKyAgICAgICAgICAgICAgICBzaG93U2V0cyhvdXQsIHRyYW5zbGl0LCBsdCwgbnVsbCwgbnVsbCwgMCk7CisgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oIjxwPjxiPk5GRDwvYj48L3A+Iik7CisgICAgICAgICAgICAgICAgc2hvd1NldHMob3V0LCB0cmFuc2xpdCwgbHQsIHNvdXJjZVN1cGVyLCB0YXJnZXRTdXBlciwgbmZkU3R5bGUpOworICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCI8cD48Yj5ORktEPC9iPjwvcD4iKTsKKyAgICAgICAgICAgICAgICBzaG93U2V0cyhvdXQsIHRyYW5zbGl0LCBsdCwgc291cmNlU3VwZXIsIHRhcmdldFN1cGVyLCBuZmtkU3R5bGUpOworICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCI8L3VsPjwvYm9keT4iKTsKKyAgICAgICAgICAgICAgICBvdXQuY2xvc2UoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRG9uZSBXcml0aW5nIik7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHN0YXRpYyB2b2lkIGFkZFNlbnRlbmNlVG9UYWJsZShQcmludFdyaXRlciBvdXQsIFN0cmluZyBzZW50ZW5jZSwgCisgICAgICAgICAgICBieXRlIHRpdGxlU2V0dGluZywgYm9vbGVhbiBhZGROYW1lLCBib29sZWFuIHRlc3RSb3VuZFRyaXAsIGJvb2xlYW4gZmlyc3QsCisgICAgICAgICAgICBUcmFuc2xpdGVyYXRvciB0bCwgVHJhbnNsaXRlcmF0b3IgbHQpIHsKKyAgICAgICAgaWYgKHNlbnRlbmNlLmxlbmd0aCgpID09IDApIHJldHVybjsgLy8gc2tpcCBlbXB0eSBsaW5lcworICAgICAgICAKKyAgICAgICAgU3RyaW5nIG9yaWdpbmFsU2hvdyA9IHNlbnRlbmNlOworICAgICAgICBTdHJpbmcgbGF0aW47CisgICAgICAgIGxhdGluID0gdGwudHJhbnNsaXRlcmF0ZShzYXZlQXNjaWkudHJhbnNsaXRlcmF0ZShzZW50ZW5jZSkpOworCisgICAgICAgIFN0cmluZyBsYXRpblNob3cgPSBsYXRpbjsKKyAgICAgICAgaWYgKHRpdGxlU2V0dGluZyA9PSBUSVRMRVdPUkQpIHsKKyAgICAgICAgICAgIGxhdGluU2hvdyA9IHRpdGxlLnRyYW5zbGl0ZXJhdGUobGF0aW4pOworICAgICAgICB9IGVsc2UgaWYgKHRpdGxlU2V0dGluZyA9PSBUSVRMRUxJTkUpIHsKKyAgICAgICAgICAgIGxhdGluU2hvdyA9IHRpdGxlY2FzZUZpcnN0V29yZChsYXRpblNob3cpOworICAgICAgICB9CisgICAgICAgIGxhdGluU2hvdyA9IHJlc3RvcmVBc2NpaS50cmFuc2xpdGVyYXRlKGxhdGluU2hvdyk7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgU3RyaW5nIHJldmVyc2U7CisgICAgICAgIHJldmVyc2UgPSByZXN0b3JlQXNjaWkudHJhbnNsaXRlcmF0ZShsdC50cmFuc2xpdGVyYXRlKGxhdGluKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgU3RyaW5nIE5GS0RTZW50ZW5jZSA9IE5vcm1hbGl6ZXIubm9ybWFsaXplKHNlbnRlbmNlLCBOb3JtYWxpemVyLk5GS0QpOworICAgICAgICBTdHJpbmcgTkZLRExhdGluID0gTm9ybWFsaXplci5ub3JtYWxpemUobGF0aW4sIE5vcm1hbGl6ZXIuTkZLRCk7CisgICAgICAgIFN0cmluZyBORktEUmV2ZXJzZSA9IE5vcm1hbGl6ZXIubm9ybWFsaXplKHJldmVyc2UsIE5vcm1hbGl6ZXIuTkZLRCk7CisgICAgICAgIAorICAgICAgICBpZiAobGF0aW5TaG93Lmxlbmd0aCgpID09IDApIHsKKyAgICAgICAgICAgIGxhdGluU2hvdyA9ICI8aT5lbXB0eTwvaT4iOworICAgICAgICB9IGVsc2UgaWYgKE5GS0RTZW50ZW5jZS5lcXVhbHMoTkZLRExhdGluKSkgeworICAgICAgICAgICAgbGF0aW5TaG93ID0gIjxzcGFuIGNsYXNzPSdyJz4iICsgbGF0aW5TaG93ICsgIjwvc3Bhbj4iOworICAgICAgICB9CisgICAgICAgIFN0cmluZyByZXZlcnNlU2hvdyA9IHJldmVyc2U7CisgICAgICAgIAorICAgICAgICBpZiAodGVzdFJvdW5kVHJpcCAmJiAhTkZLRFJldmVyc2UuZXF1YWxzKE5GS0RTZW50ZW5jZSkpIHsKKyAgICAgICAgICAgIGludCBtaW5MZW4gPSByZXZlcnNlLmxlbmd0aCgpOworICAgICAgICAgICAgaWYgKG1pbkxlbiA+IHNlbnRlbmNlLmxlbmd0aCgpKSBtaW5MZW4gPSBzZW50ZW5jZS5sZW5ndGgoKTsKKyAgICAgICAgICAgIGludCBpOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG1pbkxlbjsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKHJldmVyc2UuY2hhckF0KGkpICE9IHNlbnRlbmNlLmNoYXJBdChpKSkgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvL29yaWdpbmFsU2hvdyA9IHNlbnRlbmNlLnN1YnN0cmluZygwLGkpICsgIjxzcGFuIGNsYXNzPSdkJz4iICsgc2VudGVuY2Uuc3Vic3RyaW5nKGkpICsgIjwvc3Bhbj4iOworICAgICAgICAgICAgcmV2ZXJzZVNob3cgPSByZXZlcnNlU2hvdy5sZW5ndGgoKSA9PSAwIAorICAgICAgICAgICAgICAgID8gIjxpPmVtcHR5PC9pPiIgCisgICAgICAgICAgICAgICAgLy86IHJldmVyc2Uuc3Vic3RyaW5nKDAsaSkgKyAiPHNwYW4gY2xhc3M9J2QnPiIgKyByZXZlcnNlLnN1YnN0cmluZyhpKSArICI8L3NwYW4+IjsKKyAgICAgICAgICAgICAgICA6IHNob3dEaWZmZXJlbmNlKHNlbnRlbmNlLCByZXZlcnNlKTsKKyAgICAgICAgICAgIG91dC5wcmludGxuKCI8dHI+PHRkIGNsYXNzPSdzJyIgKyAoZmlyc3QgPyAiIHdpZHRoPSc1MCUnPiIgOiAiPiIpICsgb3JpZ2luYWxTaG93IAorICAgICAgICAgICAgICAgICsgIjwvdGQ+PHRkIHJvd1NwYW49JzInPiIgKyBsYXRpblNob3cKKyAgICAgICAgICAgICAgICArICI8L3RkPjwvdHI+PHRyPjx0ZCBjbGFzcz0ncic+IiArIHJldmVyc2VTaG93CisgICAgICAgICAgICAgICAgKyAiPC90ZD48L3RyPiIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgb3V0LnByaW50bG4oIjx0cj48dGQgY2xhc3M9J3MnIiArIChmaXJzdCA/ICIgd2lkdGg9JzUwJSc+IiA6ICI+IikgKyBvcmlnaW5hbFNob3cgCisgICAgICAgICAgICAgICAgKyAiPC90ZD48dGQ+IiArIGxhdGluU2hvdworICAgICAgICAgICAgICAgICsgIjwvdGQ+PC90cj4iKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoYWRkTmFtZSkgeworICAgICAgICAgICAgbGF0aW5TaG93ID0gaGV4QW5kTmFtZS50cmFuc2xpdGVyYXRlKGxhdGluKTsKKyAgICAgICAgICAgIGlmIChsYXRpblNob3cubGVuZ3RoKCkgPT0gMCkgbGF0aW5TaG93ID0gIjxpPmVtcHR5PC9pPiI7CisgICAgICAgICAgICBvcmlnaW5hbFNob3cgPSBoZXhBbmROYW1lLnRyYW5zbGl0ZXJhdGUoc2VudGVuY2UpOworICAgICAgICAgICAgaWYgKG9yaWdpbmFsU2hvdy5sZW5ndGgoKSA9PSAwKSBvcmlnaW5hbFNob3cgPSAiPGk+ZW1wdHk8L2k+IjsKKworICAgICAgICAgICAgb3V0LnByaW50bG4oIjx0cj48dGQgY2xhc3M9J24nPiIgKyBvcmlnaW5hbFNob3cKKyAgICAgICAgICAgICAgICArICI8L3RkPjx0ZCBjbGFzcz0nbic+IiArIGxhdGluU2hvdworICAgICAgICAgICAgICAgICsgIjwvdGQ+PC90cj4iKTsKKyAgICAgICAgfQorICAgICAgICBvdXQucHJpbnRsbigiPHRyPjx0ZD48L3RkPjwvdHI+Iik7CisgICAgICAgIAorICAgIH0KKyAgICAKKyAgICBzdGF0aWMgU3RyaW5nIHNob3dEaWZmZXJlbmNlKFN0cmluZyBhcywgU3RyaW5nIGJzKSB7CisgICAgICAgIERpZmZlciBkaWZmZXIgPSBuZXcgRGlmZmVyKDMwMCwgMyk7CisgICAgICAgIFN0cmluZ0J1ZmZlciBvdXQgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIGludCBtYXggPSBhcy5sZW5ndGgoKTsKKyAgICAgICAgaWYgKG1heCA8IGJzLmxlbmd0aCgpKSBtYXggPSBicy5sZW5ndGgoKTsKKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPD0gbWF4OyArK2opIHsKKyAgICAgICAgICAgIGlmIChqIDwgYXMubGVuZ3RoKCkpIGRpZmZlci5hZGRBKGFzLnN1YnN0cmluZyhqLCBqKzEpKTsKKyAgICAgICAgICAgIGlmIChqIDwgYnMubGVuZ3RoKCkpIGRpZmZlci5hZGRCKGJzLnN1YnN0cmluZyhqLCBqKzEpKTsKKyAgICAgICAgICAgIGRpZmZlci5jaGVja01hdGNoKGogPT0gbWF4KTsKKworICAgICAgICAgICAgaWYgKGRpZmZlci5nZXRBQ291bnQoKSAhPSAwIHx8IGRpZmZlci5nZXRCQ291bnQoKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgb3V0LmFwcGVuZCgiLi4uIik7CisgICAgICAgICAgICAgICAgaWYgKGRpZmZlci5nZXRBQ291bnQoKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIG91dC5hcHBlbmQoIjxzcGFuIGNsYXNzPSdyJz4iKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBkaWZmZXIuZ2V0QUNvdW50KCk7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3V0LmFwcGVuZChkaWZmZXIuZ2V0QShpKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgb3V0LmFwcGVuZCgiPC9zcGFuPiIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoZGlmZmVyLmdldEJDb3VudCgpICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgb3V0LmFwcGVuZCgiPHNwYW4gY2xhc3M9J2QnPiIpOworICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGRpZmZlci5nZXRCQ291bnQoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvdXQuYXBwZW5kKGRpZmZlci5nZXRCKGkpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBvdXQuYXBwZW5kKCI8L3NwYW4+Iik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG91dC5hcHBlbmQoIi4uLiIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBvdXQudG9TdHJpbmcoKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIHZvaWQgc2hvd1NldHMoUHJpbnRXcml0ZXIgb3V0LCBUcmFuc2xpdGVyYXRvciB0cmFuc2xpdCwgVHJhbnNsaXRlcmF0b3IgaW52ZXJzZSwKKyAgICAgIFVuaWNvZGVTZXQgc291cmNlU3VwZXIsIFVuaWNvZGVTZXQgdGFyZ2V0U3VwZXIsIGludCBvcHRpb25zKSB7CisgICAgICAgIG91dC5wcmludGxuKCI8bGk+U291cmNlIFNldDo8dWw+PGxpPiIgKyAgICAgICAgIHRvUGF0dGVybihjbG9zZVVuaWNvZGVTZXQodHJhbnNsaXQuZ2V0U291cmNlU2V0KCksIG9wdGlvbnMpLCBzb3VyY2VTdXBlcikgKyAiPC9saT48L3VsPjwvbGk+Iik7CisgICAgICAgIG91dC5wcmludGxuKCI8bGk+UmV2ZXJzZSBUYXJnZXQgU2V0Ojx1bD48bGk+IiArIHRvUGF0dGVybihjbG9zZVVuaWNvZGVTZXQoaW52ZXJzZS5nZXRUYXJnZXRTZXQoKSwgIG9wdGlvbnMpLCBzb3VyY2VTdXBlcikgKyAiPC9saT48L3VsPjwvbGk+Iik7CisgICAgICAgIG91dC5wcmludGxuKCI8bGk+VGFyZ2V0IFNldDo8dWw+PGxpPiIgKyAgICAgICAgIHRvUGF0dGVybihjbG9zZVVuaWNvZGVTZXQodHJhbnNsaXQuZ2V0VGFyZ2V0U2V0KCksIG9wdGlvbnMpLCB0YXJnZXRTdXBlcikgKyAiPC9saT48L3VsPjwvbGk+Iik7CisgICAgICAgIG91dC5wcmludGxuKCI8bGk+UmV2ZXJzZSBTb3VyY2UgU2V0Ojx1bD48bGk+IiArIHRvUGF0dGVybihjbG9zZVVuaWNvZGVTZXQoaW52ZXJzZS5nZXRTb3VyY2VTZXQoKSwgIG9wdGlvbnMpLCB0YXJnZXRTdXBlcikgKyAiPC9saT48L3VsPjwvbGk+Iik7CisgICAgfQorICAgICAgICAKKyAgICBzdGF0aWMgZmluYWwgaW50IENMT1NFX0NBU0UgPSAxLCBDTE9TRV9GTEFUVEVOID0gMiwgQ0xPU0VfQ0FOT05JQ0FMID0gNCwgQ0xPU0VfQ09NUEFUSUJJTElUWSA9IDg7CisgICAgCisgICAgc3RhdGljIFVuaWNvZGVTZXQgY2xvc2VVbmljb2RlU2V0KFVuaWNvZGVTZXQgc291cmNlLCBpbnQgb3B0aW9ucykgeworICAgICAgICBpZiAob3B0aW9ucyA9PSAwKSByZXR1cm4gc291cmNlOworICAgICAgICAKKyAgICAgICAgVW5pY29kZVNldEl0ZXJhdG9yIGl0ID0gbmV3IFVuaWNvZGVTZXRJdGVyYXRvcihzb3VyY2UpOworICAgICAgICBVbmljb2RlU2V0IGFkZGl0aW9ucyA9IG5ldyBVbmljb2RlU2V0KCk7IC8vIHRvIGF2b2lkIG1lc3NpbmcgdXAgaXRlcmF0b3IKKyAgICAgICAgVW5pY29kZVNldCByZW1vdmFscyA9IG5ldyBVbmljb2RlU2V0KCk7IC8vIHRvIGF2b2lkIG1lc3NpbmcgdXAgaXRlcmF0b3IKKyAgICAgICAgU3RyaW5nIGJhc2U7CisgICAgICAgIGludCBjcDsKKyAgICAgICAgCisgICAgICAgIC8vIEFkZCBhbGwgY2FzZSBlcXVpdmFsZW50cworICAgICAgICBpZiAoKG9wdGlvbnMgJiBDTE9TRV9DQVNFKSAhPSAwKSB7CisgICAgICAgICAgICB3aGlsZSAoaXQubmV4dCgpKSB7CisgICAgICAgICAgICAgICAgY3AgPSBpdC5jb2RlcG9pbnQ7CisgICAgICAgICAgICAgICAgaWYgKGNwID09IGl0LklTX1NUUklORykgY29udGludWU7CisgICAgICAgICAgICAgICAgaW50IHR5cGUgPSBVQ2hhcmFjdGVyLmdldFR5cGUoY3ApOworICAgICAgICAgICAgICAgIGlmICh0eXBlID09IENoYXJhY3Rlci5VUFBFUkNBU0VfTEVUVEVSIHx8IHR5cGUgPT0gQ2hhcmFjdGVyLkxPV0VSQ0FTRV9MRVRURVIgfHwgdHlwZSA9PSBDaGFyYWN0ZXIuVElUTEVDQVNFX0xFVFRFUikgeworICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbnMuYWRkKFVDaGFyYWN0ZXIudG9Mb3dlckNhc2UoVVRGMTYudmFsdWVPZihjcCkpKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25zLmFkZChVQ2hhcmFjdGVyLnRvVXBwZXJDYXNlKFVURjE2LnZhbHVlT2YoY3ApKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgc291cmNlLmFkZEFsbChhZGRpdGlvbnMpOworICAgICAgICB9CisgICAgICAgCisgICAgICAgIC8vIEFkZCB0aGUgY2Fub25pY2FsIGNsb3N1cmUgb2YgYWxsIHN0cmluZ3MgYW5kIGNoYXJhY3RlcnMgaW4gc291cmNlCisgICAgICAgIGlmICgob3B0aW9ucyAmIENMT1NFX0NBTk9OSUNBTCkgIT0gMCkgeworICAgICAgICAgICAgaXQucmVzZXQoKTsKKyAgICAgICAgICAgIGFkZGl0aW9ucy5jbGVhcigpOworICAgICAgICAgICAgQ2Fub25pY2FsSXRlcmF0b3IgY2kgPSBuZXcgQ2Fub25pY2FsSXRlcmF0b3IoIi4iKTsKKyAgICAgICAgICAgIHdoaWxlIChpdC5uZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXQuY29kZXBvaW50ID09IGl0LklTX1NUUklORykgYmFzZSA9IGl0LnN0cmluZzsKKyAgICAgICAgICAgICAgICBlbHNlIGJhc2UgPSBVVEYxNi52YWx1ZU9mKGl0LmNvZGVwb2ludCk7CisgICAgICAgICAgICAgICAgY2kuc2V0U291cmNlKGJhc2UpOworICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyB0cmlhbCA9IGNpLm5leHQoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRyaWFsID09IG51bGwpIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBpZiAodHJpYWwuZXF1YWxzKGJhc2UpKSBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25zLmFkZCh0cmlhbCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgc291cmNlLmFkZEFsbChhZGRpdGlvbnMpOworICAgICAgICB9CisKKyAgICAgICAgLy8gZmxhdHRlbiBzdHJpbmdzCisgICAgICAgIGlmICgob3B0aW9ucyAmIENMT1NFX0ZMQVRURU4pICE9IDApIHsKKyAgICAgICAgICAgIGl0LnJlc2V0KCk7CisgICAgICAgICAgICBhZGRpdGlvbnMuY2xlYXIoKTsKKyAgICAgICAgICAgIHdoaWxlIChpdC5uZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXQuY29kZXBvaW50ICE9IGl0LklTX1NUUklORykgY29udGludWU7CisgICAgICAgICAgICAgICAgYWRkaXRpb25zLmFkZEFsbChpdC5zdHJpbmcpOworICAgICAgICAgICAgICAgIHJlbW92YWxzLmFkZChpdC5zdHJpbmcpOworICAgICAgICAgICAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCJmbGF0dGVuaW5nICciICsgaGV4LnRyYW5zbGl0ZXJhdGUoaXQuc3RyaW5nKSArICInIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzb3VyY2UuYWRkQWxsKGFkZGl0aW9ucyk7CisgICAgICAgICAgICBzb3VyY2UucmVtb3ZlQWxsKHJlbW92YWxzKTsKKyAgICAgICAgfQorICAgICAgIAorICAgICAgICAvLyBOb3cgYWRkIGRlY29tcG9zaXRpb25zIG9mIGNoYXJhY3RlcnMgaW4gc291cmNlCisgICAgICAgIGlmICgob3B0aW9ucyAmIENMT1NFX0NPTVBBVElCSUxJVFkpICE9IDApIHsKKyAgICAgICAgICAgIGl0LnJlc2V0KHNvdXJjZSk7CisgICAgICAgICAgICBhZGRpdGlvbnMuY2xlYXIoKTsKKyAgICAgICAgICAgIHdoaWxlIChpdC5uZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXQuY29kZXBvaW50ID09IGl0LklTX1NUUklORykgYmFzZSA9IGl0LnN0cmluZzsKKyAgICAgICAgICAgICAgICBlbHNlIGJhc2UgPSBVVEYxNi52YWx1ZU9mKGl0LmNvZGVwb2ludCk7CisgICAgICAgICAgICAgICAgaWYgKE5vcm1hbGl6ZXIuaXNOb3JtYWxpemVkKGJhc2UsIE5vcm1hbGl6ZXIuTkZLRCkpIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIFN0cmluZyBkZWNvbXAgPSBOb3JtYWxpemVyLm5vcm1hbGl6ZShiYXNlLCBOb3JtYWxpemVyLk5GS0QpOworICAgICAgICAgICAgICAgIGFkZGl0aW9ucy5hZGQoZGVjb21wKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNvdXJjZS5hZGRBbGwoYWRkaXRpb25zKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gTm93IGFkZCBhbnkgb3RoZXIgY2hhcmFjdGVyIHRoYXQgZGVjb21wb3NlcyB0byBhIGNoYXJhY3RlciBpbiBzb3VyY2UKKyAgICAgICAgICAgIGZvciAoY3AgPSAwOyBjcCA8IDB4MTBGRkZGOyArK2NwKSB7CisgICAgICAgICAgICAgICAgaWYgKCFVQ2hhcmFjdGVyLmlzRGVmaW5lZChjcCkpIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGlmIChOb3JtYWxpemVyLmlzTm9ybWFsaXplZChjcCwgTm9ybWFsaXplci5ORktEKSkgY29udGludWU7CisgICAgICAgICAgICAgICAgaWYgKHNvdXJjZS5jb250YWlucyhjcCkpIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIFN0cmluZyBkZWNvbXAgPSBOb3JtYWxpemVyLm5vcm1hbGl6ZShjcCwgTm9ybWFsaXplci5ORktEKTsKKyAgICAgICAgICAgICAgICBpZiAoc291cmNlLmNvbnRhaW5zQWxsKGRlY29tcCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCJBZGRpbmc6ICIgKyBJbnRlZ2VyLnRvU3RyaW5nKGNwLDE2KSArICIgIiArIFVDaGFyYWN0ZXIuZ2V0TmFtZShjcCkpOworICAgICAgICAgICAgICAgICAgICBzb3VyY2UuYWRkKGNwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBzb3VyY2U7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBTdHJpbmcgdG9QYXR0ZXJuKFVuaWNvZGVTZXQgc291cmNlLCBVbmljb2RlU2V0IHN1cGVyc2V0KSB7CisgICAgICAgIGlmIChzdXBlcnNldCAhPSBudWxsKSB7CisgICAgICAgICAgICBzb3VyY2UucmVtb3ZlQWxsKHN1cGVyc2V0KTsKKyAgICAgICAgICAgIHJldHVybiAiWyIgKyBzdXBlcnNldC50b1BhdHRlcm4odHJ1ZSkgKyAiICIgKyBzb3VyY2UudG9QYXR0ZXJuKHRydWUpICsgIl0iOworICAgICAgICB9CisgICAgICAgIHJldHVybiBzb3VyY2UudG9QYXR0ZXJuKHRydWUpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgQnJlYWtJdGVyYXRvciBiaSA9IEJyZWFrSXRlcmF0b3IuZ2V0V29yZEluc3RhbmNlKCk7CisgICAgCisgICAgc3RhdGljIFN0cmluZyB0aXRsZWNhc2VGaXJzdFdvcmQoU3RyaW5nIGxpbmUpIHsKKyAgICAgICAgLy8gc2VhcmNoIGZvciBmaXJzdCB3b3JkIHdpdGggbGV0dGVycy4gSWYgdGhlIGZpcnN0IGxldHRlciBpcyBsb3dlciwgdGhlbiB0aXRsZWNhc2UgaXQuCisgICAgICAgIGJpLnNldFRleHQobGluZSk7CisgICAgICAgIGludCBzdGFydCA9IDA7CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBpbnQgZW5kID0gYmkubmV4dCgpOworICAgICAgICAgICAgaWYgKGVuZCA9PSBiaS5ET05FKSBicmVhazsKKyAgICAgICAgICAgIGludCBmaXJzdExldHRlclR5cGUgPSBnZXRGaXJzdExldHRlclR5cGUobGluZSwgc3RhcnQsIGVuZCk7CisgICAgICAgICAgICBpZiAoZmlyc3RMZXR0ZXJUeXBlICE9IENoYXJhY3Rlci5VTkFTU0lHTkVEKSB7CisgICAgICAgICAgICAgICAgaWYgKGZpcnN0TGV0dGVyVHlwZSAhPSBDaGFyYWN0ZXIuTE9XRVJDQVNFX0xFVFRFUikgYnJlYWs7CisgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUuc3Vic3RyaW5nKDAsIHN0YXJ0KSAKKyAgICAgICAgICAgICAgICAgICAgKyBVQ2hhcmFjdGVyLnRvVGl0bGVDYXNlKGxpbmUuc3Vic3RyaW5nKHN0YXJ0LCBlbmQpLCBiaSkKKyAgICAgICAgICAgICAgICAgICAgKyBsaW5lLnN1YnN0cmluZyhlbmQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZW5kID0gc3RhcnQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGxpbmU7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBmaW5hbCBpbnQgTEVUVEVSX01BU0sgPSAKKyAgICAgICAgICAoMTw8Q2hhcmFjdGVyLlVQUEVSQ0FTRV9MRVRURVIpCisgICAgICAgIHwgKDE8PENoYXJhY3Rlci5MT1dFUkNBU0VfTEVUVEVSKQorICAgICAgICB8ICgxPDxDaGFyYWN0ZXIuVElUTEVDQVNFX0xFVFRFUikKKyAgICAgICAgfCAoMTw8Q2hhcmFjdGVyLk1PRElGSUVSX0xFVFRFUikKKyAgICAgICAgfCAoMTw8Q2hhcmFjdGVyLk9USEVSX0xFVFRFUikKKyAgICAgICAgOworICAgIAorICAgIHN0YXRpYyBpbnQgZ2V0Rmlyc3RMZXR0ZXJUeXBlKFN0cmluZyBsaW5lLCBpbnQgc3RhcnQsIGludCBlbmQpIHsKKyAgICAgICAgaW50IGNwOworICAgICAgICBmb3IgKGludCBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkgKz0gVVRGMTYuZ2V0Q2hhckNvdW50KGNwKSkgeworICAgICAgICAgICAgY3AgPSBVVEYxNi5jaGFyQXQobGluZSwgaSk7CisgICAgICAgICAgICBpbnQgdHlwZSA9IFVDaGFyYWN0ZXIuZ2V0VHlwZShjcCk7CisgICAgICAgICAgICBpZiAoKCgxPDx0eXBlKSAmIExFVFRFUl9NQVNLKSAhPSAwKSByZXR1cm4gdHlwZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gQ2hhcmFjdGVyLlVOQVNTSUdORUQ7CisgICAgfQorICAgIAorICAgIHN0YXRpYyB2b2lkIHByaW50TmFtZXMoVW5pY29kZVNldCBzLCBTdHJpbmcgdGFyZ2V0RmlsZSkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgRmlsZSBvdXRGaWxlID0gbmV3IEZpbGUodGFyZ2V0RmlsZSk7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIldyaXRpbmc6ICIgKyBvdXRGaWxlLmdldENhbm9uaWNhbFBhdGgoKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBQcmludFdyaXRlciBvdXQgPSBuZXcgUHJpbnRXcml0ZXIoCisgICAgICAgICAgICAgICAgbmV3IEJ1ZmZlcmVkV3JpdGVyKAorICAgICAgICAgICAgICAgICAgICBuZXcgT3V0cHV0U3RyZWFtV3JpdGVyKAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEZpbGVPdXRwdXRTdHJlYW0ob3V0RmlsZSksICJVVEYtOCIpKSk7CisgICAgICAgICAgICBVbmljb2RlU2V0IG1haW4gPSBuZXcgVW5pY29kZVNldCgpOworICAgICAgICAgICAgCisgICAgICAgICAgICBVbmljb2RlU2V0IG90aGVycyA9IG5ldyBVbmljb2RlU2V0KCk7CisgICAgICAgICAgICBVbmljb2RlU2V0SXRlcmF0b3IgaXQgPSBuZXcgVW5pY29kZVNldEl0ZXJhdG9yKHMpOworICAgICAgICAgICAgd2hpbGUgKGl0Lm5leHQoKSkgeworICAgICAgICAgICAgICAgIGlmICghVUNoYXJhY3Rlci5pc0RlZmluZWQoaXQuY29kZXBvaW50KSkgY29udGludWU7CisgICAgICAgICAgICAgICAgaWYgKCFOb3JtYWxpemVyLmlzTm9ybWFsaXplZChpdC5jb2RlcG9pbnQsIE5vcm1hbGl6ZXIuTkZEKSkgeworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZGVjb21wID0gTm9ybWFsaXplci5ub3JtYWxpemUoaXQuY29kZXBvaW50LCBOb3JtYWxpemVyLk5GRCk7CisgICAgICAgICAgICAgICAgICAgIG90aGVycy5hZGRBbGwoZGVjb21wKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCIgIiArIFVURjE2LnZhbHVlT2YoaXQuY29kZXBvaW50KSArICIgPD4gWFhYICMgIiArIFVDaGFyYWN0ZXIuZ2V0TmFtZShpdC5jb2RlcG9pbnQpKTsKKyAgICAgICAgICAgICAgICBtYWluLmFkZChpdC5jb2RlcG9pbnQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAob3RoZXJzLnNpemUoKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oIkRlY29tcG9zZWQgY2hhcmFjdGVycyBmb3VuZCBhYm92ZTogIik7CisgICAgICAgICAgICAgICAgb3RoZXJzLnJlbW92ZUFsbChtYWluKTsKKyAgICAgICAgICAgICAgICBpdC5yZXNldChvdGhlcnMpOworICAgICAgICAgICAgICAgIHdoaWxlIChpdC5uZXh0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oIiAiICsgVVRGMTYudmFsdWVPZihpdC5jb2RlcG9pbnQpICsgIiA8PiBYWFggIyAiICsgVUNoYXJhY3Rlci5nZXROYW1lKGl0LmNvZGVwb2ludCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgb3V0LmNsb3NlKCk7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkRvbmUgV3JpdGluZyIpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBzdGF0aWMgVHJhbnNsaXRlcmF0b3IgaGV4ID0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoIlteXFx1MDAyMC1cXHUwMDdFXSBoZXgiKTsKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIHNhdmVSdWxlcyA9IAorICAgICAgICAgICJBIDw+IFx1RUE0MTsgQiA8PiBcdUVBNDI7IEMgPD4gXHVFQTQzOyBEIDw+IFx1RUE0NDsgRSA8PiBcdUVBNDU7IEYgPD4gXHVFQTQ2OyBHIDw+IFx1RUE0NzsgSCA8PiBcdUVBNDg7IEkgPD4gXHVFQTQ5OyAiCisgICAgICAgICsgIkogPD4gXHVFQTRBOyBLIDw+IFx1RUE0QjsgTCA8PiBcdUVBNEM7IE0gPD4gXHVFQTREOyBOIDw+IFx1RUE0RTsgTyA8PiBcdUVBNEY7IFAgPD4gXHVFQTUwOyBRIDw+IFx1RUE1MTsgUiA8PiBcdUVBNTI7ICIKKyAgICAgICAgKyAiUyA8PiBcdUVBNTM7IFQgPD4gXHVFQTU0OyBVIDw+IFx1RUE1NTsgViA8PiBcdUVBNTY7IFcgPD4gXHVFQTU3OyBYIDw+IFx1RUE1ODsgWSA8PiBcdUVBNTk7IFogPD4gXHVFQTVBOyAiCisgICAgICAgICsgImEgPD4gXHVFQTYxOyBiIDw+IFx1RUE2MjsgYyA8PiBcdUVBNjM7IGQgPD4gXHVFQTY0OyBlIDw+IFx1RUE2NTsgZiA8PiBcdUVBNjY7IGcgPD4gXHVFQTY3OyBoIDw+IFx1RUE2ODsgaSA8PiBcdUVBNjk7ICIKKyAgICAgICAgKyAiaiA8PiBcdUVBNkE7IGsgPD4gXHVFQTZCOyBsIDw+IFx1RUE2QzsgbSA8PiBcdUVBNkQ7IG4gPD4gXHVFQTZFOyBvIDw+IFx1RUE2RjsgcCA8PiBcdUVBNzA7IHEgPD4gXHVFQTcxOyByIDw+IFx1RUE3MjsgIgorICAgICAgICArICJzIDw+IFx1RUE3MzsgdCA8PiBcdUVBNzQ7IHUgPD4gXHVFQTc1OyB2IDw+IFx1RUE3NjsgdyA8PiBcdUVBNzc7IHggPD4gXHVFQTc4OyB5IDw+IFx1RUE3OTsgeiA8PiBcdUVBN0E7IjsKKyAgICAgICAgCisgICAgc3RhdGljIFRyYW5zbGl0ZXJhdG9yIHNhdmVBc2NpaSA9IFRyYW5zbGl0ZXJhdG9yLmNyZWF0ZUZyb21SdWxlcygiYXNjaWktc2F2ZWQiLCBzYXZlUnVsZXMsIFRyYW5zbGl0ZXJhdG9yLkZPUldBUkQpOworICAgIHN0YXRpYyBUcmFuc2xpdGVyYXRvciByZXN0b3JlQXNjaWkgPSBUcmFuc2xpdGVyYXRvci5jcmVhdGVGcm9tUnVsZXMoImFzY2lpLXNhdmVkIiwgc2F2ZVJ1bGVzLCBUcmFuc2xpdGVyYXRvci5SRVZFUlNFKTsKKyAgICAKKyAgICBzdGF0aWMgeworICAgICAgICAKKyAgICAgICAgaWYgKGZhbHNlKSB7CisgICAgICAgIAorICAgICAgICBmb3IgKGNoYXIgaSA9ICdBJzsgaSA8PSAneic7ICsraSkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludChpICsgIiA8PiAiICsgaGV4LnRyYW5zbGl0ZXJhdGUoU3RyaW5nLnZhbHVlT2YoKGNoYXIpKDB4RUEwMCArIGkpKSkgKyAiOyAiKTsKKyAgICAgICAgfQorCisgICAgICAgIFVuaWNvZGVTZXQgeCA9IG5ldyBVbmljb2RlU2V0KCJbWzpeY2NjPTA6XSZbOl5jY2M9MjMwOl1dIik7CisgICAgICAgIHggPSB4LmNvbXBsZW1lbnQoKTsKKyAgICAgICAgeCA9IHguY29tcGxlbWVudCgpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRlc3Q6ICIgKyB4LnRvUGF0dGVybih0cnVlKSk7CisgICAgICAgIAorICAgICAgICBUcmFuc2xpdGVyYXRvciB5ID0gVHJhbnNsaXRlcmF0b3IuY3JlYXRlRnJvbVJ1bGVzKCJ4eHgiLCAiJG5vdEFib3ZlID0gW1s6XmNjYz0wOl0mWzpeY2NjPTIzMDpdXTsgdSAoJG5vdEFib3ZlKikgXHUwMzA4ID4gWFhYIHwgJDE7ICIsIFRyYW5zbGl0ZXJhdG9yLkZPUldBUkQpOworICAgICAgICAKKyAgICAgICAgU3RyaW5nW10gdGVzdExpc3QgPSB7InVcdTAzMDgiLCAidVx1MDMxNlx1MDMwOCIsICJ1XHUwMzA4XHUwMzE2IiwgInVcdTAzMDFcdTAzMDgiLCAidVx1MDMwOFx1MDMwMSJ9OworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRlc3RMaXN0Lmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBTdHJpbmcgeXkgPSB5LnRyYW5zbGl0ZXJhdGUodGVzdExpc3RbaV0pOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGhleC50cmFuc2xpdGVyYXRlKHRlc3RMaXN0W2ldKSArICIgPT4gIiArIGhleC50cmFuc2xpdGVyYXRlKHl5KSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vcHJpbnROYW1lcyhuZXcgVW5pY29kZVNldCgiW1x1MDYwMC1cdTA2RkZdIiksICJBcmFiaWMtTGF0aW4udHh0Iik7CisgICAgICAgIAorICAgICAgICAKKyAgICAgICAgLyogIAorICAgICAgICBCcmVha1RyYW5zbGl0ZXJhdG9yLnJlZ2lzdGVyKCk7CisgICAgICAgIAorICAgIAlCcmVha1RyYW5zbGl0ZXJhdG9yIHRlc3RUcmFucyA9IG5ldyBCcmVha1RyYW5zbGl0ZXJhdG9yKCJBbnktWFhYIiwgbnVsbCwgbnVsbCwgIiQiKTsKKyAgICAJU3RyaW5nIHRlc3RTb3VyY2UgPSAiVGhlIFF1aWNrOiAgIEJyb3duIGZveC0tanVtcGVkLiI7CisgICAgCUJyZWFrSXRlcmF0b3IgYmkgPSB0ZXN0VHJhbnMuZ2V0QnJlYWtJdGVyYXRvcigpOworICAgICAgICBiaS5zZXRUZXh0KG5ldyBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvcih0ZXN0U291cmNlKSk7CisgICAgICAgIHByaW50QnJlYWtzKDAsIHRlc3RTb3VyY2UsIGJpKTsKKyAgICAgICAgLy9iaS5zZXRUZXh0KFVDaGFyYWN0ZXJJdGVyYXRvci5nZXRJbnN0YW5jZSh0ZXN0U291cmNlKSk7CisgICAgICAgIC8vcHJpbnRCcmVha3MoMSwgdGVzdFNvdXJjZSwgYmkpOworICAgICAgICAKKyAgICAgICAgcHJpbnRJdGVyYXRpb24oMiwgdGVzdFNvdXJjZSwgbmV3IFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yKHRlc3RTb3VyY2UpKTsKKyAgICAgICAgLy9wcmludEl0ZXJhdGlvbigzLCB0ZXN0U291cmNlLCBVQ2hhcmFjdGVySXRlcmF0b3IuZ2V0SW5zdGFuY2UodGVzdFNvdXJjZSkpOworICAgICAgICAKKyAgICAJCisgICAgCQorICAgIAlTdHJpbmcgdGVzdCA9IHRlc3RUcmFucy50cmFuc2xpdGVyYXRlKHRlc3RTb3VyY2UpOworICAgIAlTeXN0ZW0ub3V0LnByaW50bG4oIlRlc3QzOiAiICsgdGVzdCk7CisgICAgCUR1bW15RmFjdG9yeS5hZGQodGVzdFRyYW5zLmdldElEKCksIHRlc3RUcmFucyk7CisgICAgCSovCisgICAgCQorICAgIAkvLyBBbnlUcmFuc2xpdGVyYXRvci5TY3JpcHRSdW5JdGVyYXRvci5yZWdpc3RlckFueVRvU2NyaXB0KCk7CisgICAgCQorICAgIAlBbnlUcmFuc2xpdGVyYXRvciBhdCA9IG5ldyBBbnlUcmFuc2xpdGVyYXRvcigiR3JlZWsiLCBudWxsKTsKKyAgICAJYXQudHJhbnNsaXRlcmF0ZSgiKGNhdCxcdTAzYjEsXHUwOTE1KSIpOworICAgIAlEdW1teUZhY3RvcnkuYWRkKGF0LmdldElEKCksIGF0KTsKKyAgICAJCisgICAgCWF0ID0gbmV3IEFueVRyYW5zbGl0ZXJhdG9yKCJEZXZhbmFnYXJpIiwgbnVsbCk7CisgICAgCWF0LnRyYW5zbGl0ZXJhdGUoIihjYXQsXHUwM2IxLFx1MDkxNSkiKTsKKyAgICAJRHVtbXlGYWN0b3J5LmFkZChhdC5nZXRJRCgpLCBhdCk7CisgICAgCQorICAgIAlhdCA9IG5ldyBBbnlUcmFuc2xpdGVyYXRvcigiTGF0aW4iLCBudWxsKTsKKyAgICAJYXQudHJhbnNsaXRlcmF0ZSgiKGNhdCxcdTAzYjEsXHUwOTE1KSIpOworICAgIAlEdW1teUZhY3RvcnkuYWRkKGF0LmdldElEKCksIGF0KTsKKyAgICAJCisgICAgICAgIER1bW15RmFjdG9yeS5hZGQoIkFueS1naWYiLCBUcmFuc2xpdGVyYXRvci5jcmVhdGVGcm9tUnVsZXMoImdpZiIsICInXFwndSguLikoLi4pID4gJzxpbWcgc3JjPVwiaHR0cDovL3d3dy51bmljb2RlLm9yZy9naWZzLzI0LycgJDEgJy9VJyAkMSQyICcuZ2lmXCI+JzsiLCBUcmFuc2xpdGVyYXRvci5GT1JXQVJEKSk7ICAgIAkKKyAgICAgICAgRHVtbXlGYWN0b3J5LmFkZCgiZ2lmLUFueSIsIFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKCJBbnktTnVsbCIpKTsgICAgCQorCisgICAgICAgIER1bW15RmFjdG9yeS5hZGQoIkFueS1SZW1vdmVDdXJseSIsIFRyYW5zbGl0ZXJhdG9yLmNyZWF0ZUZyb21SdWxlcygiUmVtb3ZlQ3VybHkiLCAiW1xce1xcfV0gPiA7IiwgVHJhbnNsaXRlcmF0b3IuRk9SV0FSRCkpOyAgICAJCisgICAgICAgIER1bW15RmFjdG9yeS5hZGQoIlJlbW92ZUN1cmx5LUFueSIsIFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKCJBbnktTnVsbCIpKTsKKyAgICAgICAgCisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVHJ5aW5nICZoZXgiKTsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgdCA9IFRyYW5zbGl0ZXJhdG9yLmNyZWF0ZUZyb21SdWxlcygiaGV4MiIsICIoLikgPiAmaGV4KCQxKTsiLCBUcmFuc2xpdGVyYXRvci5GT1JXQVJEKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJSZWdpc3RlcmluZyIpOworICAgICAgICBEdW1teUZhY3RvcnkuYWRkKCJBbnktaGV4MiIsIHQpOyAgICAJCisgICAgICAgIAorICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRyeWluZyAmZ2lmIik7CisgICAgICAgIHQgPSBUcmFuc2xpdGVyYXRvci5jcmVhdGVGcm9tUnVsZXMoImdpZjIiLCAiKC4pID4gJmFueS1naWYoJDEpOyIsIFRyYW5zbGl0ZXJhdG9yLkZPUldBUkQpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlJlZ2lzdGVyaW5nIik7CisgICAgICAgIER1bW15RmFjdG9yeS5hZGQoIkFueS1naWYyIiwgdCk7ICAgIAorICAgICAgICB9CisgICAgfQorICAgIAorICAgIAorICAgIHZvaWQgc2V0VHJhbnNsaXRlcmF0b3IoU3RyaW5nIG5hbWUsIFN0cmluZyBpZCkgeworICAgICAgICBpZiAoREVCVUcpIFN5c3RlbS5vdXQucHJpbnRsbigiR290OiAiICsgbmFtZSk7CisgICAgICAgIGlmIChpZCA9PSBudWxsKSB7CisgICAgICAgIAl0cmFuc2xpdCA9IFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKG5hbWUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgU3RyaW5nIHJldmVyc2VJZCA9ICIiOworICAgICAgICAgICAgaW50IHBvcyA9IGlkLmluZGV4T2YoJy0nKTsKKyAgICAgICAgICAgIGlmIChwb3MgPCAwKSB7CisgICAgICAgICAgICAJcmV2ZXJzZUlkID0gaWQgKyAiLUFueSI7CisgICAgICAgICAgICAJaWQgPSAiQW55LSIgKyBpZDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaW50IHBvczIgPSBpZC5pbmRleE9mKCIvIiwgcG9zKTsKKyAgICAgICAgICAgICAgICBpZiAocG9zMiA8IDApIHsKKyAgICAgICAgICAgIAkgICAgcmV2ZXJzZUlkID0gaWQuc3Vic3RyaW5nKHBvcysxKSArICItIiArIGlkLnN1YnN0cmluZygwLHBvcyk7CisgICAgICAgICAgICAJfSBlbHNlIHsKKyAgICAgICAgICAgIAkgICAgcmV2ZXJzZUlkID0gaWQuc3Vic3RyaW5nKHBvcysxLCBwb3MyKSArICItIiArIGlkLnN1YnN0cmluZygwLHBvcykgKyBpZC5zdWJzdHJpbmcocG9zMik7CisgICAgICAgICAgICAJfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIAkKKyAgICAgICAgCXRyYW5zbGl0ID0gVHJhbnNsaXRlcmF0b3IuY3JlYXRlRnJvbVJ1bGVzKGlkLCBuYW1lLCBUcmFuc2xpdGVyYXRvci5GT1JXQVJEKTsKKyAgICAgICAgCWlmIChERUJVRykgeworICAgICAgICAJICAgIFN5c3RlbS5vdXQucHJpbnRsbigiKioqRm9yd2FyZCBSdWxlcyIpOworICAgICAgICAJICAgIFN5c3RlbS5vdXQucHJpbnRsbigoKFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yKXRyYW5zbGl0KS50b1J1bGVzKHRydWUpKTsKKyAgICAgICAgCSAgICBTeXN0ZW0ub3V0LnByaW50bG4oIioqKlNvdXJjZSBTZXQiKTsKKyAgICAgICAgCSAgICBTeXN0ZW0ub3V0LnByaW50bG4odHJhbnNsaXQuZ2V0U291cmNlU2V0KCkudG9QYXR0ZXJuKHRydWUpKTsKKyAgICAgICAgCX0KKyAgICAgICAgCSAgICBTeXN0ZW0ub3V0LnByaW50bG4oIioqKlRhcmdldCBTZXQiKTsKKyAgICAgICAgCSAgICBVbmljb2RlU2V0IHRhcmdldCA9IHRyYW5zbGl0LmdldFRhcmdldFNldCgpOworICAgICAgICAJICAgIFN5c3RlbS5vdXQucHJpbnRsbih0YXJnZXQudG9QYXR0ZXJuKHRydWUpKTsKKyAgICAgICAgCSAgICBVbmljb2RlU2V0IHJlc3QgPSBuZXcgVW5pY29kZVNldCgiW2Etel0iKS5yZW1vdmVBbGwodGFyZ2V0KTsKKyAgICAgICAgCSAgICBTeXN0ZW0ub3V0LnByaW50bG4oIioqKkFTQ0lJIC0gVGFyZ2V0IFNldCIpOworICAgICAgICAJICAgIFN5c3RlbS5vdXQucHJpbnRsbihyZXN0LnRvUGF0dGVybih0cnVlKSk7CisgICAgICAgIAkgICAgCisgICAgICAgICAgICBEdW1teUZhY3RvcnkuYWRkKGlkLCB0cmFuc2xpdCk7CisgICAgICAgICAgICAKKyAgICAgICAgCVRyYW5zbGl0ZXJhdG9yIHRyYW5zbGl0MiA9IFRyYW5zbGl0ZXJhdG9yLmNyZWF0ZUZyb21SdWxlcyhyZXZlcnNlSWQsIG5hbWUsIFRyYW5zbGl0ZXJhdG9yLlJFVkVSU0UpOworICAgICAgICAJaWYgKERFQlVHKSB7CisgICAgICAgIAkgICAgU3lzdGVtLm91dC5wcmludGxuKCIqKipCYWNrd2FyZCBSdWxlcyIpOworICAgICAgICAJICAgIFN5c3RlbS5vdXQucHJpbnRsbigoKFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yKXRyYW5zbGl0MikudG9SdWxlcyh0cnVlKSk7CisgICAgICAgIAl9CisgICAgICAgICAgICBEdW1teUZhY3RvcnkuYWRkKHJldmVyc2VJZCwgdHJhbnNsaXQyKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgVHJhbnNsaXRlcmF0b3IgcmV2ID0gdHJhbnNsaXQuZ2V0SW52ZXJzZSgpOworICAgICAgICAJaWYgKERFQlVHKSBTeXN0ZW0ub3V0LnByaW50bG4oIioqKkludmVyc2UgUnVsZXMiKTsKKyAgICAgICAgCWlmIChERUJVRykgU3lzdGVtLm91dC5wcmludGxuKCgoUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3IpcmV2KS50b1J1bGVzKHRydWUpKTsKKyAgICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIHRleHQuZmx1c2goKTsKKyAgICAgICAgdGV4dC5zZXRUcmFuc2xpdGVyYXRvcih0cmFuc2xpdCk7CisgICAgICAgIGNvbnZlcnRTZWxlY3Rpb25JdGVtLnNldExhYmVsKFRyYW5zbGl0ZXJhdG9yLmdldERpc3BsYXlOYW1lKHRyYW5zbGl0LmdldElEKCkpKTsKKyAgICAgICAgCisgICAgICAgIGFkZEhpc3RvcnkodHJhbnNsaXQpOworICAgICAgICAKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgaW52OworICAgICAgICB0cnkgeworICAgICAgICAJaW52ID0gdHJhbnNsaXQuZ2V0SW52ZXJzZSgpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgCWludiA9IG51bGw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGludiAhPSBudWxsKSB7CisgICAgICAgICAgICBhZGRIaXN0b3J5KGludik7CisgICAgICAgICAgICBzd2FwU2VsZWN0aW9uSXRlbS5zZXRFbmFibGVkKHRydWUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc3dhcFNlbGVjdGlvbkl0ZW0uc2V0RW5hYmxlZChmYWxzZSk7CisgICAgICAgIH0KKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJTZXQgdHJhbnNsaXRlcmF0b3I6ICIgKyB0cmFuc2xpdC5nZXRJRCgpCisgICAgICAgICAgICArIChpbnYgPT0gbnVsbCA/ICIgYW5kICIgKyBpbnYuZ2V0SUQoKSA6ICIiKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYWRkSGlzdG9yeShUcmFuc2xpdGVyYXRvciB0cmFuc2xpdCkgeworICAgICAgICBTdHJpbmcgbmFtZSA9IHRyYW5zbGl0LmdldElEKCk7CisgICAgICAgIE1lbnVJdGVtIGNtaSA9IChNZW51SXRlbSkgaGlzdG9yeU1hcC5nZXQobmFtZSk7CisgICAgICAgIGlmIChjbWkgPT0gbnVsbCkgeworICAgICAgICAgICAgY21pID0gbmV3IE1lbnVJdGVtKHRyYW5zbGl0LmdldERpc3BsYXlOYW1lKG5hbWUpKTsKKyAgICAgICAgICAgIGNtaS5hZGRBY3Rpb25MaXN0ZW5lcihuZXcgVHJhbnNsaXRlcmF0aW9uTGlzdGVuZXIobmFtZSkpOworICAgICAgICAgICAgaGlzdG9yeU1hcC5wdXQobmFtZSwgY21pKTsKKyAgICAgICAgICAgIGhpc3RvcnlTZXQuYWRkKGNtaSk7CisgICAgICAgICAgICBoaXN0b3J5TWVudS5yZW1vdmVBbGwoKTsKKyAgICAgICAgICAgIEl0ZXJhdG9yIGl0ID0gaGlzdG9yeVNldC5pdGVyYXRvcigpOworICAgICAgICAgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkgeworICAgICAgICAgICAgICAgIGhpc3RvcnlNZW51LmFkZCgoTWVudUl0ZW0paXQubmV4dCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBjbGFzcyBUcmFuc2xpdGVyYXRpb25MaXN0ZW5lciBpbXBsZW1lbnRzIEFjdGlvbkxpc3RlbmVyLCBJdGVtTGlzdGVuZXIgeworICAgICAgICBTdHJpbmcgbmFtZTsKKyAgICAgICAgcHVibGljIFRyYW5zbGl0ZXJhdGlvbkxpc3RlbmVyKFN0cmluZyBuYW1lKSB7CisgICAgICAgICAgICB0aGlzLm5hbWUgPSBuYW1lOworICAgICAgICB9CisgICAgICAgIHB1YmxpYyB2b2lkIGFjdGlvblBlcmZvcm1lZChBY3Rpb25FdmVudCBlKSB7CisgICAgICAgICAgICBzZXRUcmFuc2xpdGVyYXRvcihuYW1lLCBudWxsKTsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgdm9pZCBpdGVtU3RhdGVDaGFuZ2VkKEl0ZW1FdmVudCBlKSB7CisgICAgICAgICAgICBpZiAoZS5nZXRTdGF0ZUNoYW5nZSgpID09IGUuU0VMRUNURUQpIHsKKyAgICAgICAgICAgICAgICBzZXRUcmFuc2xpdGVyYXRvcihuYW1lLCBudWxsKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc2V0VHJhbnNsaXRlcmF0b3IoIkFueS1OdWxsIiwgbnVsbCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgY2xhc3MgRm9udEFjdGlvbkxpc3RlbmVyIGltcGxlbWVudHMgQWN0aW9uTGlzdGVuZXIgeworICAgICAgICBTdHJpbmcgbmFtZTsKKyAgICAgICAgcHVibGljIEZvbnRBY3Rpb25MaXN0ZW5lcihTdHJpbmcgbmFtZSkgeworICAgICAgICAgICAgdGhpcy5uYW1lID0gbmFtZTsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgdm9pZCBhY3Rpb25QZXJmb3JtZWQoQWN0aW9uRXZlbnQgZSkgeworICAgICAgICAgICAgaWYgKERFQlVHKSBTeXN0ZW0ub3V0LnByaW50bG4oIkZvbnQ6ICIgKyBuYW1lKTsKKyAgICAgICAgICAgIGZvbnROYW1lID0gbmFtZTsKKyAgICAgICAgICAgIHRleHQuc2V0Rm9udChuZXcgRm9udChmb250TmFtZSwgRm9udC5QTEFJTiwgZm9udFNpemUpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBjbGFzcyBTaXplQWN0aW9uTGlzdGVuZXIgaW1wbGVtZW50cyBBY3Rpb25MaXN0ZW5lciB7CisgICAgICAgIGludCBzaXplOworICAgICAgICBwdWJsaWMgU2l6ZUFjdGlvbkxpc3RlbmVyKGludCBzaXplKSB7CisgICAgICAgICAgICB0aGlzLnNpemUgPSBzaXplOworICAgICAgICB9CisgICAgICAgIHB1YmxpYyB2b2lkIGFjdGlvblBlcmZvcm1lZChBY3Rpb25FdmVudCBlKSB7CisgICAgICAgICAgICBpZiAoREVCVUcpIFN5c3RlbS5vdXQucHJpbnRsbigiU2l6ZTogIiArIHNpemUpOworICAgICAgICAgICAgZm9udFNpemUgPSBzaXplOworICAgICAgICAgICAgdGV4dC5zZXRGb250KG5ldyBGb250KGZvbnROYW1lLCBGb250LlBMQUlOLCBmb250U2l6ZSkpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIFNldCBhZGQoU2V0IHMsIEVudW1lcmF0aW9uIGVudW0pIHsKKyAgICAgICAgd2hpbGUoZW51bS5oYXNNb3JlRWxlbWVudHMoKSkgeworICAgICAgICAgICAgcy5hZGQoZW51bS5uZXh0RWxlbWVudCgpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gczsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXQgYSBzb3J0ZWQgbGlzdCBvZiB0aGUgc3lzdGVtIHRyYW5zbGl0ZXJhdG9ycy4KKyAgICAgKi8KKyAgICAgLyoKKyAgICBwcml2YXRlIHN0YXRpYyBWZWN0b3IgZ2V0U3lzdGVtVHJhbnNsaXRlcmF0b3JOYW1lcygpIHsKKyAgICAgICAgVmVjdG9yIHYgPSBuZXcgVmVjdG9yKCk7CisgICAgICAgIGZvciAoRW51bWVyYXRpb24gZT1UcmFuc2xpdGVyYXRvci5nZXRBdmFpbGFibGVJRHMoKTsKKyAgICAgICAgICAgICBlLmhhc01vcmVFbGVtZW50cygpOyApIHsKKyAgICAgICAgICAgIHYuYWRkRWxlbWVudChlLm5leHRFbGVtZW50KCkpOworICAgICAgICB9CisgICAgICAgIC8vIEluc2VydGlvbiBzb3J0LCBPKG5eMikgYWNjZXB0YWJsZSBmb3Igc21hbGwgbgorICAgICAgICBmb3IgKGludCBpPTA7IGk8KHYuc2l6ZSgpLTEpOyArK2kpIHsKKyAgICAgICAgICAgIFN0cmluZyBhID0gKFN0cmluZykgdi5lbGVtZW50QXQoaSk7CisgICAgICAgICAgICBmb3IgKGludCBqPWkrMTsgajx2LnNpemUoKTsgKytqKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIGIgPSAoU3RyaW5nKSB2LmVsZW1lbnRBdChqKTsKKyAgICAgICAgICAgICAgICBpZiAoYS5jb21wYXJlVG8oYikgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIHYuc2V0RWxlbWVudEF0KGIsIGkpOworICAgICAgICAgICAgICAgICAgICB2LnNldEVsZW1lbnRBdChhLCBqKTsKKyAgICAgICAgICAgICAgICAgICAgYSA9IGI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiB2OworICAgIH0KKyAgICAqLworCisvKgorICAgIHByaXZhdGUgdm9pZCBzZXROb1RyYW5zbGl0ZXJhdG9yKCkgeworICAgICAgICB0cmFuc2xpdEl0ZW0gPSBub1RyYW5zbGl0SXRlbTsKKyAgICAgICAgbm9UcmFuc2xpdEl0ZW0uc2V0U3RhdGUodHJ1ZSk7CisgICAgICAgIGhhbmRsZVNldFRyYW5zbGl0ZXJhdG9yKG5vVHJhbnNsaXRJdGVtLmdldExhYmVsKCkpOworICAgICAgICBjb21wb3VuZCA9IGZhbHNlOworICAgICAgICBmb3IgKGludCBpPTA7IGk8dHJhbnNsaXRNZW51LmdldEl0ZW1Db3VudCgpOyArK2kpIHsKKyAgICAgICAgICAgIE1lbnVJdGVtIGl0ID0gdHJhbnNsaXRNZW51LmdldEl0ZW0oaSk7CisgICAgICAgICAgICBpZiAoaXQgIT0gbm9UcmFuc2xpdEl0ZW0gJiYgaXQgaW5zdGFuY2VvZiBDaGVja2JveE1lbnVJdGVtKSB7CisgICAgICAgICAgICAgICAgKChDaGVja2JveE1lbnVJdGVtKSBpdCkuc2V0U3RhdGUoZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorKi8KKy8qCisgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZUFkZFRvQ29tcG91bmQoU3RyaW5nIG5hbWUpIHsKKyAgICAgICAgaWYgKGNvbXBvdW5kQ291bnQgPCBNQVhfQ09NUE9VTkQpIHsKKyAgICAgICAgICAgIGNvbXBvdW5kVHJhbnNsaXRbY29tcG91bmRDb3VudF0gPSBkZWNvZGVUcmFuc2xpdEl0ZW0obmFtZSk7CisgICAgICAgICAgICArK2NvbXBvdW5kQ291bnQ7CisgICAgICAgICAgICBUcmFuc2xpdGVyYXRvciB0W10gPSBuZXcgVHJhbnNsaXRlcmF0b3JbY29tcG91bmRDb3VudF07CisgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KGNvbXBvdW5kVHJhbnNsaXQsIDAsIHQsIDAsIGNvbXBvdW5kQ291bnQpOworICAgICAgICAgICAgdHJhbnNsaXQgPSBuZXcgQ29tcG91bmRUcmFuc2xpdGVyYXRvcih0KTsKKyAgICAgICAgICAgIHRleHQuc2V0VHJhbnNsaXRlcmF0b3IodHJhbnNsaXQpOworICAgICAgICB9CisgICAgfQorKi8KKy8qCisgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZVNldFRyYW5zbGl0ZXJhdG9yKFN0cmluZyBuYW1lKSB7CisgICAgICAgIHRyYW5zbGl0ID0gZGVjb2RlVHJhbnNsaXRJdGVtKG5hbWUpOworICAgICAgICB0ZXh0LnNldFRyYW5zbGl0ZXJhdG9yKHRyYW5zbGl0KTsKKyAgICB9CisgICAgKi8KKworICAgIC8qKgorICAgICAqIERlY29kZSBhIG1lbnUgaXRlbSB0aGF0IGxvb2tzIGxpa2UgPHRyYW5zbGl0IG5hbWU+LgorICAgICAqLworICAgICAvKgorICAgIHByaXZhdGUgc3RhdGljIFRyYW5zbGl0ZXJhdG9yIGRlY29kZVRyYW5zbGl0SXRlbShTdHJpbmcgbmFtZSkgeworICAgICAgICByZXR1cm4gKG5hbWUuZXF1YWxzKE5PX1RSQU5TTElURVJBVE9SKSkKKyAgICAgICAgICAgID8gbnVsbCA6IFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKG5hbWUpOworICAgIH0KKyAgICAqLworCisgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZUJhdGNoVHJhbnNsaXRlcmF0ZShUcmFuc2xpdGVyYXRvciB0cmFuc2xpdCkgeworICAgICAgICBpZiAodHJhbnNsaXQgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaW50IHN0YXJ0ID0gdGV4dC5nZXRTZWxlY3Rpb25TdGFydCgpOworICAgICAgICBpbnQgZW5kID0gdGV4dC5nZXRTZWxlY3Rpb25FbmQoKTsKKyAgICAgICAgUmVwbGFjZWFibGVTdHJpbmcgcyA9CisgICAgICAgICAgICBuZXcgUmVwbGFjZWFibGVTdHJpbmcodGV4dC5nZXRUZXh0KCkuc3Vic3RyaW5nKHN0YXJ0LCBlbmQpKTsKKworICAgICAgICBTdHJpbmdCdWZmZXIgbG9nID0gbnVsbDsKKyAgICAgICAgaWYgKERFQlVHKSB7CisgICAgICAgICAgICBsb2cgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgICAgICBsb2cuYXBwZW5kKCciJyArIHMudG9TdHJpbmcoKSArICJcIiAoc3RhcnQgIiArIHN0YXJ0ICsKKyAgICAgICAgICAgICAgICAgICAgICAgIiwgZW5kICIgKyBlbmQgKyAiKSAtPiBcIiIpOworICAgICAgICB9CisKKyAgICAgICAgdHJhbnNsaXQudHJhbnNsaXRlcmF0ZShzKTsKKyAgICAgICAgU3RyaW5nIHN0ciA9IHMudG9TdHJpbmcoKTsKKworICAgICAgICBpZiAoREVCVUcpIHsKKyAgICAgICAgICAgIGxvZy5hcHBlbmQoc3RyICsgIlwiIik7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkJhdGNoICIgKyB0cmFuc2xpdC5nZXRJRCgpICsgIjogIiArIGxvZy50b1N0cmluZygpKTsKKyAgICAgICAgfQorCisgICAgICAgIHRleHQucmVwbGFjZVJhbmdlKHN0ciwgc3RhcnQsIGVuZCk7CisgICAgICAgIHRleHQuc2VsZWN0KHN0YXJ0LCBzdGFydCArIHN0ci5sZW5ndGgoKSk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZUNsb3NlKCkgeworICAgICAgICBoZWxwRGlhbG9nLmRpc3Bvc2UoKTsKKyAgICAgICAgZGlzcG9zZSgpOworICAgIH0KKyAgICAKKyAgICAvKgorICAgIGNsYXNzIEluZm9EaWFsb2cgZXh0ZW5kcyBEaWFsb2cgeworICAgICAgICBwcm90ZWN0ZWQgQnV0dG9uIGJ1dHRvbjsKKyAgICAgICAgcHJvdGVjdGVkIFRleHRBcmVhIGFyZWE7CisgICAgICAgIHByb3RlY3RlZCBEaWFsb2cgbWU7CisgICAgICAgIHByb3RlY3RlZCBQYW5lbCBib3R0b207CisgICAgICAgIAorICAgICAgICBwdWJsaWMgVGV4dEFyZWEgZ2V0QXJlYSgpIHsKKyAgICAgICAgICAgIHJldHVybiBhcmVhOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwdWJsaWMgUGFuZWwgZ2V0Qm90dG9tKCkgeworICAgICAgICAgICAgcmV0dXJuIGJvdHRvbTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgSW5mb0RpYWxvZyhGcmFtZSBwYXJlbnQsIFN0cmluZyB0aXRsZSwgU3RyaW5nIGxhYmVsLCBTdHJpbmcgbWVzc2FnZSkgeworICAgICAgICAgICAgc3VwZXIocGFyZW50LCB0aXRsZSwgZmFsc2UpOworICAgICAgICAgICAgbWUgPSB0aGlzOworICAgICAgICAgICAgdGhpcy5zZXRMYXlvdXQobmV3IEJvcmRlckxheW91dCgpKTsKKyAgICAgICAgICAgIGlmIChsYWJlbC5sZW5ndGgoKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgdGhpcy5hZGQoIk5vcnRoIiwgbmV3IExhYmVsKGxhYmVsKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGFyZWEgPSBuZXcgVGV4dEFyZWEobWVzc2FnZSwgOCwgODAsIFRleHRBcmVhLlNDUk9MTEJBUlNfVkVSVElDQUxfT05MWSk7CisgICAgICAgICAgICB0aGlzLmFkZCgiQ2VudGVyIiwgYXJlYSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGJ1dHRvbiA9IG5ldyBCdXR0b24oIkhpZGUiKTsKKyAgICAgICAgICAgIGJ1dHRvbi5hZGRBY3Rpb25MaXN0ZW5lcihuZXcgQWN0aW9uTGlzdGVuZXIoKSB7CisgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEFjdGlvbkV2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICAgICAgbWUuaGlkZSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgYm90dG9tID0gbmV3IFBhbmVsKCk7CisgICAgICAgICAgICBib3R0b20uc2V0TGF5b3V0KG5ldyBGbG93TGF5b3V0KEZsb3dMYXlvdXQuQ0VOVEVSLCAwLCAwKSk7CisgICAgICAgICAgICBib3R0b20uYWRkKGJ1dHRvbik7CisgICAgICAgICAgICB0aGlzLmFkZCgiU291dGgiLCBib3R0b20pOworICAgICAgICAgICAgdGhpcy5wYWNrKCk7CisgICAgICAgICAgICBhZGRXaW5kb3dMaXN0ZW5lcihuZXcgV2luZG93QWRhcHRlcigpIHsKKyAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCB3aW5kb3dDbG9zaW5nKFdpbmRvd0V2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICAgICAgbWUuaGlkZSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfQorICAgICovCit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vdHJhbnNsaXQvRGVtb0FwcGxldC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL3RyYW5zbGl0L0RlbW9BcHBsZXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5jYzZmMDZkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL3RyYW5zbGl0L0RlbW9BcHBsZXQuamF2YQpAQCAtMCwwICsxLDc0IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vdHJhbnNsaXQvRGVtb0FwcGxldC5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzAyLzE2IDAzOjA1OjAwICQgCisgKiAkUmV2aXNpb246IDEuNiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LmRlbW8udHJhbnNsaXQ7CitpbXBvcnQgamF2YS5hd3QuKjsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC4qOworaW1wb3J0IGphdmEuYXBwbGV0Lio7CitpbXBvcnQgY29tLmlibS5pY3UuZGV2LmRlbW8uaW1wbC5BcHBsZXRGcmFtZTsKKworLyoqCisgKiBBIHNpbXBsZSBBcHBsZXQgdGhhdCBzaG93cyBhIGJ1dHRvbi4gIFdoZW4gcHJlc3NlZCwgdGhlIGJ1dHRvbgorICogc2hvd3MgdGhlIERlbW9BcHBsZXRGcmFtZS4gIFRoaXMgQXBwbGV0IGlzIG1lYW50IHRvIGJlIGVtYmVkZGVkCisgKiBpbiBhIHdlYiBwYWdlLgorICoKKyAqIDxwPkNvcHlyaWdodCAoYykgSUJNIENvcnBvcmF0aW9uIDE5OTkuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIEBhdXRob3IgQWxhbiBMaXUKKyAqIEB2ZXJzaW9uICRSQ1NmaWxlOiBEZW1vQXBwbGV0LmphdmEsdiAkICRSZXZpc2lvbjogMS42ICQgJERhdGU6IDIwMDIvMDIvMTYgMDM6MDU6MDAgJAorICovCitwdWJsaWMgY2xhc3MgRGVtb0FwcGxldCBleHRlbmRzIEFwcGxldCB7CisKKyAgICBEZW1vIGZyYW1lID0gbnVsbDsKKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgIlx1MDBBOSBJQk0gQ29ycG9yYXRpb24gMTk5OS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4iOworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIGFyZ3NbXSkgeworICAgICAgICBmaW5hbCBEZW1vQXBwbGV0IGFwcGxldCA9IG5ldyBEZW1vQXBwbGV0KCk7CisgICAgICAgIG5ldyBBcHBsZXRGcmFtZSgiVHJhbnNsaXRlcmF0aW9uIERlbW8iLCBhcHBsZXQsIDY0MCwgNDgwKTsKKyAgICB9CisKKwlwdWJsaWMgdm9pZCBpbml0KCkgeworCisJCUJ1dHRvbiBidXR0b24gPSBuZXcgQnV0dG9uKCJUcmFuc2xpdGVyYXRpb24gRGVtbyIpOworCQlidXR0b24uYWRkQWN0aW9uTGlzdGVuZXIobmV3IEFjdGlvbkxpc3RlbmVyKCkgeworCQkgICAgcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEFjdGlvbkV2ZW50IGUpIHsKKwkJICAgICAgICBpZiAoZnJhbWUgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBmcmFtZSA9IG5ldyBEZW1vKDYwMCwgMjAwKTsKKyAgICAgICAgICAgICAgICAgICAgZnJhbWUuYWRkV2luZG93TGlzdGVuZXIobmV3IFdpbmRvd0FkYXB0ZXIoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCB3aW5kb3dDbG9zaW5nKFdpbmRvd0V2ZW50IHdlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUgPSBudWxsOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZnJhbWUuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICAgICAgICAgICAgICBmcmFtZS50b0Zyb250KCk7CisJCSAgICB9CisJCX0pOworCisJCWFkZChidXR0b24pOworCisgICAgICAgIERpbWVuc2lvbiBzaXplID0gYnV0dG9uLmdldFByZWZlcnJlZFNpemUoKTsKKyAgICAgICAgc2l6ZS53aWR0aCArPSAxMDsKKyAgICAgICAgc2l6ZS5oZWlnaHQgKz0gMTA7CisKKwkJcmVzaXplKHNpemUpOworCX0KKwkKKyAgICBwdWJsaWMgdm9pZCBzdG9wKCkgeworICAgICAgICBpZiAoZnJhbWUgIT0gbnVsbCkgeworICAgICAgICAgICAgZnJhbWUuZGlzcG9zZSgpOworICAgICAgICB9CisgICAgICAgIGZyYW1lID0gbnVsbDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vdHJhbnNsaXQvRGlmZmVyLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vdHJhbnNsaXQvRGlmZmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTljODgzYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby90cmFuc2xpdC9EaWZmZXIuamF2YQpAQCAtMCwwICsxLDE3NyBAQAorLyoqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby90cmFuc2xpdC9EaWZmZXIuamF2YSx2ICQKKyogJERhdGU6IDIwMDIvMDcvMjYgMjA6MDk6MDEgJAorKiAkUmV2aXNpb246IDEuMSAkCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi5kZW1vLnRyYW5zbGl0OworCisvKiogVkVSWSBCYXNpYyBEaWZmIHByb2dyYW0uIENvbXBhcmVzIHR3byBzZXF1ZW5jZXMgb2Ygb2JqZWN0cyBmZWQgaW50byBpdCwgYW5kCisgKiBsZXRzIHlvdSBrbm93IHdoZXJlIHRoZXkgYXJlIGRpZmZlcmVudC4KKyAqIEBhdXRob3IgTWFyayBEYXZpcworICogQHZlcnNpb24gMS4wCisgKi8KKworZmluYWwgcHVibGljIGNsYXNzIERpZmZlciB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0KKyAgICAgICJDb3B5cmlnaHQgKEMpIDIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4iOworCisgICAgLyoqCisgICAgICogQHBhcmFtIHN0YWNrU2l6ZSBUaGUgc2l6ZSBvZiB0aGUgbGFyZ2VzdCBkaWZmZXJlbmNlIHlvdSBleHBlY3QuCisgICAgICogQHBhcmFtIG1hdGNoQ291bnQgVGhlIG51bWJlciBvZiBpdGVtcyB0aGF0IGhhdmUgdG8gYmUgdGhlIHNhbWUgdG8gY291bnQgYXMgYSBtYXRjaAorICAgICAqLworICAgIHB1YmxpYyBEaWZmZXIoaW50IHN0YWNrU2l6ZSwgaW50IG1hdGNoQ291bnQpIHsKKyAgICAgICAgdGhpcy5TVEFDS1NJWkUgPSBzdGFja1NpemU7CisgICAgICAgIHRoaXMuRVFVQUxTSVpFID0gbWF0Y2hDb3VudDsKKyAgICAgICAgYSA9IG5ldyBPYmplY3Rbc3RhY2tTaXplK21hdGNoQ291bnRdOworICAgICAgICBiID0gbmV3IE9iamVjdFtzdGFja1NpemUrbWF0Y2hDb3VudF07CisgICAgfQorCisgICAgcHVibGljIHZvaWQgYWRkIChPYmplY3QgYVN0ciwgT2JqZWN0IGJTdHIpIHsKKyAgICAgICAgYWRkQShhU3RyKTsKKyAgICAgICAgYWRkQihiU3RyKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBhZGRBIChPYmplY3QgYVN0cikgeworICAgICAgICBmbHVzaCgpOworICAgICAgICBhW2FDb3VudCsrXSA9IGFTdHI7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgYWRkQiAoT2JqZWN0IGJTdHIpIHsKKyAgICAgICAgZmx1c2goKTsKKyAgICAgICAgYltiQ291bnQrK10gPSBiU3RyOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgZ2V0QUxpbmUoaW50IG9mZnNldCkgeworICAgICAgICByZXR1cm4gYUxpbmUgKyBtYXhTYW1lICsgb2Zmc2V0OworICAgIH0KKworICAgIHB1YmxpYyBPYmplY3QgZ2V0QShpbnQgb2Zmc2V0KSB7CisgICAgICAgIGlmIChvZmZzZXQgPCAwKSByZXR1cm4gbGFzdDsKKyAgICAgICAgaWYgKG9mZnNldCA+IGFUb3AtbWF4U2FtZSkgcmV0dXJuIG5leHQ7CisgICAgICAgIHJldHVybiBhW29mZnNldF07CisgICAgfQorCisgICAgcHVibGljIGludCBnZXRBQ291bnQoKSB7CisgICAgICAgIHJldHVybiBhVG9wLW1heFNhbWU7CisgICAgfQorCisgICAgcHVibGljIGludCBnZXRCQ291bnQoKSB7CisgICAgICAgIHJldHVybiBiVG9wLW1heFNhbWU7CisgICAgfQorCisgICAgcHVibGljIGludCBnZXRCTGluZShpbnQgb2Zmc2V0KSB7CisgICAgICAgIHJldHVybiBiTGluZSArIG1heFNhbWUgKyBvZmZzZXQ7CisgICAgfQorCisgICAgcHVibGljIE9iamVjdCBnZXRCKGludCBvZmZzZXQpIHsKKyAgICAgICAgaWYgKG9mZnNldCA8IDApIHJldHVybiBsYXN0OworICAgICAgICBpZiAob2Zmc2V0ID4gYlRvcC1tYXhTYW1lKSByZXR1cm4gbmV4dDsKKyAgICAgICAgcmV0dXJuIGJbb2Zmc2V0XTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBjaGVja01hdGNoKGJvb2xlYW4gZmluYWxQYXNzKSB7CisgICAgICAgIC8vIGZpbmQgdGhlIGluaXRpYWwgc3RyaW5ncyB0aGF0IGFyZSB0aGUgc2FtZQorICAgICAgICBpbnQgbWF4ID0gYUNvdW50OworICAgICAgICBpZiAobWF4ID4gYkNvdW50KSBtYXggPSBiQ291bnQ7CisgICAgICAgIGludCBpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbWF4OyArK2kpIHsKKyAgICAgICAgICAgIGlmICghYVtpXS5lcXVhbHMoYltpXSkpIGJyZWFrOworICAgICAgICB9CisgICAgICAgIC8vIGF0IHRoaXMgcG9pbnQsIGFsbCBpdGVtcyB1cCB0byBpIGFyZSBlcXVhbAorICAgICAgICBtYXhTYW1lID0gaTsKKyAgICAgICAgYVRvcCA9IGJUb3AgPSBtYXhTYW1lOworICAgICAgICBpZiAobWF4U2FtZSA+IDApIGxhc3QgPSBhW21heFNhbWUtMV07CisgICAgICAgIG5leHQgPSAiIjsKKworICAgICAgICBpZiAoZmluYWxQYXNzKSB7CisgICAgICAgICAgICBhVG9wID0gYUNvdW50OworICAgICAgICAgICAgYlRvcCA9IGJDb3VudDsKKyAgICAgICAgICAgIG5leHQgPSAiIjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChhQ291bnQgLSBtYXhTYW1lIDwgRVFVQUxTSVpFIHx8IGJDb3VudCAtIG1heFNhbWUgPCBFUVVBTFNJWkUpIHJldHVybjsKKworICAgICAgICAvLyBub3cgc2VlIGlmIHRoZSBsYXN0IGZldyBhJ3Mgb2NjdXIgYW55d2hlcmUgaW4gdGhlIGIncywgb3IgdmljZSB2ZXJzYQorICAgICAgICBpbnQgbWF0Y2ggPSBmaW5kIChhLCBhQ291bnQtRVFVQUxTSVpFLCBhQ291bnQsIGIsIG1heFNhbWUsIGJDb3VudCk7CisgICAgICAgIGlmIChtYXRjaCAhPSAtMSkgeworICAgICAgICAgICAgYVRvcCA9IGFDb3VudC1FUVVBTFNJWkU7CisgICAgICAgICAgICBiVG9wID0gbWF0Y2g7CisgICAgICAgICAgICBuZXh0ID0gYVthVG9wXTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBtYXRjaCA9IGZpbmQgKGIsIGJDb3VudC1FUVVBTFNJWkUsIGJDb3VudCwgYSwgbWF4U2FtZSwgYUNvdW50KTsKKyAgICAgICAgaWYgKG1hdGNoICE9IC0xKSB7CisgICAgICAgICAgICBiVG9wID0gYkNvdW50LUVRVUFMU0laRTsKKyAgICAgICAgICAgIGFUb3AgPSBtYXRjaDsKKyAgICAgICAgICAgIG5leHQgPSBiW2JUb3BdOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChhQ291bnQgPj0gU1RBQ0tTSVpFIHx8IGJDb3VudCA+PSBTVEFDS1NJWkUpIHsKKyAgICAgICAgICAgIC8vIGZsdXNoIHNvbWUgb2YgdGhlbQorICAgICAgICAgICAgYUNvdW50ID0gKGFDb3VudCArIG1heFNhbWUpIC8gMjsKKyAgICAgICAgICAgIGJDb3VudCA9IChiQ291bnQgKyBtYXhTYW1lKSAvIDI7CisgICAgICAgICAgICBuZXh0ID0gIiI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiogQ29udmVuaWVudCB1dGlsaXR5CisgICAgICogZmluZHMgYSBzZWdtZW50IG9mIHRoZSBmaXJzdCBhcnJheSBpbiB0aGUgc2Vjb25kIGFycmF5LgorICAgICAqIEByZXR1cm4gLTEgaWYgbm90IGZvdW5kLCBvdGhlcndpc2Ugc3RhcnQgcG9zaXRpb24gaW4gYgorICAgICAqLworCisgICAgcHVibGljIGludCBmaW5kIChPYmplY3RbXSBhLCBpbnQgYVN0YXJ0LCBpbnQgYUVuZCwgT2JqZWN0W10gYiwgaW50IGJTdGFydCwgaW50IGJFbmQpIHsKKyAgICAgICAgaW50IGxlbiA9IGFFbmQgLSBhU3RhcnQ7CisgICAgICAgIGludCBiRW5kTWludXMgPSBiRW5kIC0gbGVuOworICAgICAgICB0cnlBOgorICAgICAgICBmb3IgKGludCBpID0gYlN0YXJ0OyBpIDw9IGJFbmRNaW51czsgKytpKSB7CisgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGxlbjsgKytqKSB7CisgICAgICAgICAgICAgICAgaWYgKCFiW2kgKyBqXS5lcXVhbHMoYVthU3RhcnQgKyBqXSkpIGNvbnRpbnVlIHRyeUE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gaTsgLy8gd2UgaGF2ZSBhIG1hdGNoIQorICAgICAgICB9CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09IFBSSVZBVEVTID09PT09PT09PT09PT09PT09PT09PT0KKworICAgIHByaXZhdGUgdm9pZCBmbHVzaCgpIHsKKyAgICAgICAgaWYgKGFUb3AgIT0gMCkgeworICAgICAgICAgICAgaW50IG5ld0NvdW50ID0gYUNvdW50LWFUb3A7CisgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KGEsIGFUb3AsIGEsIDAsIG5ld0NvdW50KTsKKyAgICAgICAgICAgIGFDb3VudCA9IG5ld0NvdW50OworICAgICAgICAgICAgYUxpbmUgKz0gYVRvcDsKKyAgICAgICAgICAgIGFUb3AgPSAwOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGJUb3AgIT0gMCkgeworICAgICAgICAgICAgaW50IG5ld0NvdW50ID0gYkNvdW50LWJUb3A7CisgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KGIsIGJUb3AsIGIsIDAsIG5ld0NvdW50KTsKKyAgICAgICAgICAgIGJDb3VudCA9IG5ld0NvdW50OworICAgICAgICAgICAgYkxpbmUgKz0gYlRvcDsKKyAgICAgICAgICAgIGJUb3AgPSAwOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBpbnQgU1RBQ0tTSVpFOworICAgIHByaXZhdGUgaW50IEVRVUFMU0laRTsKKworICAgIHByaXZhdGUgT2JqZWN0IFtdIGE7CisgICAgcHJpdmF0ZSBPYmplY3QgW10gYjsKKyAgICBwcml2YXRlIE9iamVjdCBsYXN0ID0gIiI7CisgICAgcHJpdmF0ZSBPYmplY3QgbmV4dCA9ICIiOworICAgIHByaXZhdGUgaW50IGFDb3VudCA9IDA7CisgICAgcHJpdmF0ZSBpbnQgYkNvdW50ID0gMDsKKyAgICBwcml2YXRlIGludCBhTGluZSA9IDE7CisgICAgcHJpdmF0ZSBpbnQgYkxpbmUgPSAxOworICAgIHByaXZhdGUgaW50IG1heFNhbWUgPSAwLCBhVG9wID0gMCwgYlRvcCA9IDA7CisKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby90cmFuc2xpdC9JbmZvRGlhbG9nLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vdHJhbnNsaXQvSW5mb0RpYWxvZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxYjkxMTAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vdHJhbnNsaXQvSW5mb0RpYWxvZy5qYXZhCkBAIC0wLDAgKzEsNTggQEAKKy8qKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMS0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vdHJhbnNsaXQvSW5mb0RpYWxvZy5qYXZhLHYgJAorICogJERhdGU6IDIwMDIvMDgvMTMgMjE6NTA6NDQgJAorICogJFJldmlzaW9uOiAxLjIgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LmRlbW8udHJhbnNsaXQ7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuKjsKK2ltcG9ydCBqYXZhLmF3dC4qOworcHVibGljIGNsYXNzIEluZm9EaWFsb2cgZXh0ZW5kcyBEaWFsb2cgeworICAgIHByb3RlY3RlZCBCdXR0b24gYnV0dG9uOworICAgIHByb3RlY3RlZCBUZXh0QXJlYSBhcmVhOworICAgIHByb3RlY3RlZCBEaWFsb2cgbWU7CisgICAgcHJvdGVjdGVkIFBhbmVsIGJvdHRvbTsKKyAgICAgICAgCisgICAgcHVibGljIFRleHRBcmVhIGdldEFyZWEoKSB7CisgICAgICAgIHJldHVybiBhcmVhOworICAgIH0KKyAgICAgICAgCisgICAgcHVibGljIFBhbmVsIGdldEJvdHRvbSgpIHsKKyAgICAgICAgcmV0dXJuIGJvdHRvbTsKKyAgICB9CisgICAgICAgIAorICAgIEluZm9EaWFsb2coRnJhbWUgcGFyZW50LCBTdHJpbmcgdGl0bGUsIFN0cmluZyBsYWJlbCwgU3RyaW5nIG1lc3NhZ2UpIHsKKyAgICAgICAgc3VwZXIocGFyZW50LCB0aXRsZSwgZmFsc2UpOworICAgICAgICBtZSA9IHRoaXM7CisgICAgICAgIHRoaXMuc2V0TGF5b3V0KG5ldyBCb3JkZXJMYXlvdXQoKSk7CisgICAgICAgIGlmIChsYWJlbC5sZW5ndGgoKSAhPSAwKSB7CisgICAgICAgICAgICB0aGlzLmFkZCgiTm9ydGgiLCBuZXcgTGFiZWwobGFiZWwpKTsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGFyZWEgPSBuZXcgVGV4dEFyZWEobWVzc2FnZSwgOCwgODAsIFRleHRBcmVhLlNDUk9MTEJBUlNfVkVSVElDQUxfT05MWSk7CisgICAgICAgIHRoaXMuYWRkKCJDZW50ZXIiLCBhcmVhKTsKKyAgICAgICAgICAgIAorICAgICAgICBidXR0b24gPSBuZXcgQnV0dG9uKCJIaWRlIik7CisgICAgICAgIGJ1dHRvbi5hZGRBY3Rpb25MaXN0ZW5lcihuZXcgQWN0aW9uTGlzdGVuZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBhY3Rpb25QZXJmb3JtZWQoQWN0aW9uRXZlbnQgZSkgeworICAgICAgICAgICAgICAgIG1lLmhpZGUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgICAgIGJvdHRvbSA9IG5ldyBQYW5lbCgpOworICAgICAgICBib3R0b20uc2V0TGF5b3V0KG5ldyBGbG93TGF5b3V0KEZsb3dMYXlvdXQuQ0VOVEVSLCAwLCAwKSk7CisgICAgICAgIGJvdHRvbS5hZGQoYnV0dG9uKTsKKyAgICAgICAgdGhpcy5hZGQoIlNvdXRoIiwgYm90dG9tKTsKKyAgICAgICAgdGhpcy5wYWNrKCk7CisgICAgICAgIGFkZFdpbmRvd0xpc3RlbmVyKG5ldyBXaW5kb3dBZGFwdGVyKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgd2luZG93Q2xvc2luZyhXaW5kb3dFdmVudCBlKSB7CisgICAgICAgICAgICAgICAgbWUuaGlkZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vdHJhbnNsaXQvVGVzdF9BcmFiaWMtTGF0aW4udHh0IGIvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL3RyYW5zbGl0L1Rlc3RfQXJhYmljLUxhdGluLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZWIxOWY1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL3RyYW5zbGl0L1Rlc3RfQXJhYmljLUxhdGluLnR4dApAQCAtMCwwICsxLDI4IEBACivvu78jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ29weXJpZ2h0IChjKSAxOTk5LTIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyMgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vdHJhbnNsaXQvVGVzdF9BcmFiaWMtTGF0aW4udHh0LHYgJAorIyAkRGF0ZTogMjAwMi8wNy8yNiAyMDowOTowMSAkCisjICRSZXZpc2lvbjogMS4xICQKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQFVQUEVSRklMVEVSQAor2YXYpyDZh9mKINin2YTYtNmB2LHYqSDYp9mE2YXZiNit2K/YqSAi2YrZiNmG2ZDZg9mI2K8iINifCisKK9ij2LPYp9iz2YvYp9iMINiq2KrYudin2YXZhCDYp9mE2K3ZiNin2LPZitioINmB2YLYtyDZhdi5INin2YTYo9ix2YLYp9mF2Iwg2YjYqtmC2YjZhSDYqNiq2K7YstmK2YYg2KfZhNij2K3YsdmBINmI2KfZhNmF2K3Yp9ix2YEg2KfZhNij2K7YsdmJINio2LnYryDYo9mGINiq2Y/Yudi32Yog2LHZgtmF2Kcg2YXYudmK2YbYpyDZhNmD2YQg2YjYp9it2K8g2YXZhtmH2KcuINmI2YLYqNmEINin2K7Yqtix2KfYuSAi2YrZiNmG2ZDZg9mI2K8i2Iwg2YPYp9mGINmH2YbYp9mDINmF2KbYp9iqINin2YTYo9mG2LjZhdipINmE2YTYqti02YHZitixINmI2KrYrti12YrYtSDZh9iw2Ycg2KfZhNij2LHZgtin2YUg2YTZhNmF2K3Yp9ix2YHYjCDZiNmE2YUg2YrZiNis2K8g2YbYuNin2YUg2KrYtNmB2YrYsSDZiNin2K3YryDZitit2KrZiNmKINi52YTZiSDYrNmF2YrYuSDYp9mE2YXYrdin2LHZgSDYp9mE2LbYsdmI2LHZitipLiDZiNi52YTZiSDYs9io2YrZhCDYp9mE2YXYq9in2YTYjCDZgdil2YYg2KfZhNin2KrYrdin2K8g2KfZhNij2YjYsdmI2KjZiiDZhNmI2K3Yr9mH2Iwg2KfYrdiq2YjZiSDYp9mE2LnYr9mK2K8g2YXZhiDYp9mE2LTZgdix2KfYqiDYp9mE2YXYrtiq2YTZgdipINmE2YrYuti32Yog2KzZhdmK2Lkg2KfZhNmE2LrYp9iqINin2YTZhdiz2KrYrtiv2YXYqSDZgdmKINin2YTYp9iq2K3Yp9ivLiDZiNit2KrZiSDZhNmIINin2LnYqtio2LHZhtinINmE2LrYqSDZiNin2K3Yr9ip2Iwg2YPYp9mE2YTYutipINin2YTYpdmG2KzZhNmK2LLZitip2Iwg2YHYpdmGINis2K/ZiNmEINi02YHYsdipINmI2KfYrdivINmE2YUg2YrZg9mBINmE2KfYs9iq2YrYudin2Kgg2KzZhdmK2Lkg2KfZhNij2K3YsdmBINmI2LnZhNin2YXYp9iqINin2YTYqtix2YLZitmFINmI2KfZhNix2YXZiNiyINin2YTZgdmG2YrYqSDZiNin2YTYudmE2YXZitipINin2YTYtNin2KbYudipINin2YTYp9iz2KrYudmF2KfZhC4KKworIAorCivZiNiq2KzYr9ixINin2YTZhdmE2KfYrdi42Kkg2KPZhiDYo9mG2LjZhdipINin2YTYqti02YHZitixINin2YTZhdiu2KrZhNmB2Kkg2KrYqti52KfYsdi2INmF2Lkg2KjYudi22YfYpyDYp9mE2KjYudi2LiDZiNio2LnYqNin2LHYqSDYo9iu2LHZidiMINmK2YXZg9mGINij2YYg2YrYs9iq2K7Yr9mQ2YUg2KzYr9mI2YTZiiDYtNmB2LHYqSDZhtmB2LMg2KfZhNix2YLZhSDZhNiq2YXYq9mK2YQg2YXYrdix2YHZitmGINmF2K7YqtmE2YHZitmG2Iwg2KPZiCDYsdmC2YXZitmGINmF2K7YqtmE2YHZitmGINmE2KrZhdir2YrZhCDZhtmB2LMg2KfZhNmF2K3YsdmBLiDZiNmE2Ygg2KPYrtiw2YbYpyDYo9mKINis2YfYp9iyINit2KfYs9mI2KjYjCDZiNio2K7Yp9i12Kkg2KzZh9in2LIg2KfZhNmG2KfYr9mEIChzZXJ2ZXIp2Iwg2YHZitis2Kgg2KPZhiDYqtmD2YjZhiDZhNiv2YrZhyDYp9mE2YLYr9ix2Kkg2LnZhNmJINin2YTYqti52KfZhdmEINmF2Lkg2LnYr9ivINmD2KjZitixINmF2YYg2KfZhNi02YHYsdin2Kog2KfZhNmF2K7YqtmE2YHYqdiMINmI2YrYqtmFINiq2LXZhdmK2YXZhyDYudmE2Ykg2YfYsNinINin2YTYo9iz2KfYsy4g2YjZhdi5INiw2YTZg9iMINmB2LnZhtiv2YXYpyDYqtmF2LEg2KfZhNio2YrYp9mG2KfYqiDYudio2LEg2KPZhti42YXYqSDZhdiu2KrZhNmB2KnYjCDYqtmI2KzYryDZh9mG2KfZgyDYrti32YjYsdipINmE2LbZitin2Lkg2KPZiCDYqtit2LHZitmBINio2LnYtiDZh9iw2Ycg2KfZhNio2YrYp9mG2KfYqi4KKworIAorCisi2YrZiNmG2ZDZg9mI2K8iINiq2LrZitixINmH2LDYpyDZg9mE2YrYpyAhCisKK9iq2K7Ytdi1INin2YTYtNmB2LHYqSDYp9mE2YXZiNit2K/YqSAi2YrZiNmG2ZDZg9mI2K8iINix2YLZhdinINmI2K3Zitiv2Kcg2YTZg9mEINmF2K3YsdmBINmB2Yog2KzZhdmK2Lkg2KfZhNmE2LrYp9iqINin2YTYudin2YTZhdmK2KnYjCDZiNiw2YTZgyDYqNi62LYg2KfZhNmG2LjYsSDYudmGINmG2YjYuSDYp9mE2K3Yp9iz2YjYqCDYo9mIINin2YTYqNix2KfZhdisINin2YTZhdiz2KrYrtiv2YXYqS4g2YjZgtivINiq2YUg2KrYqNmG2Yog2YXZiNin2LXZgdipICLZitmI2YbZkNmD2YjYryIg2YXZhiDZgtio2YQg2YLYp9iv2Kkg2KfZhNi12KfZhti52YrZhiDZhNij2YbYuNmF2Kkg2KfZhNit2YjYp9iz2YrYqCDZgdmKINin2YTYudin2YTZhdiMINmF2KvZhCDYtNix2YPYp9iqINii2You2KjZii7YpdmFLiAoSUJNKdiMINij2KjZhCAoQVBQTEUp2Iwg2YfZkNmK2ZLZiNmE2ZDYqiDYqNin2YPYsdivIChIZXdsZXR0LVBhY2thcmQpINiMINmF2KfZitmD2LHZiNiz2YjZgdiqIChNaWNyb3NvZnQp2Iwg2KPZiNix2KfZg9mQ2YQgKE9yYWNsZSkg2Iwg2LXZhiAoU3VuKSDZiNi62YrYsdmH2KcuINmD2YXYpyDYo9mGINin2YTZhdmI2KfYtdmB2KfYqiDZiNin2YTZhdmC2KfZitmK2LMg2KfZhNit2K/Zitir2KkgKNmF2KvZhCDZhNi62Kkg2KfZhNio2LHZhdis2KkgItis2KfZgdinIiAiSkFWQSIg2YjZhNi62KkgItil2YPYsyDYpdmFINil2YQiICJYTUwiINin2YTYqtmKINiq2LPYqtiu2K/ZhSDZhNio2LHZhdis2Kkg2KfZhNin2YbYqtix2YbZitiqKSDYqtiq2LfZhNioINin2LPYqtiu2K/Yp9mFICLZitmI2YbZkNmD2YjYryIuINi52YTYp9mI2Kkg2LnZhNmJINiw2YTZgyDYjCDZgdil2YYgItmK2YjZhtmQ2YPZiNivIiDZh9mKINin2YTYt9ix2YrZgtipINin2YTYsdiz2YXZitipINmE2KrYt9io2YrZgiDYp9mE2YXZgtmK2KfYsyDYp9mE2LnYp9mE2YXZiiDYpdmK2LLZiCDZodmg2abZpNmmICAoSVNPIDEwNjQ2KSAuCisKKyAKKwor2KXZhiDYqNiy2YjYuiDZhdmI2KfYtdmB2KkgItmK2YjZhtmQ2YPZiNivIiDZiNiq2YjZgdmR2Y/YsSDYp9mE2KPZhti42YXYqSDYp9mE2KrZiiDYqtiz2KrYrtiv2YXZhyDZiNiq2K/YudmF2YfYjCDZiti52KrYqNixINmF2YYg2KPZh9mFINin2YTYp9iu2KrYsdin2LnYp9iqINin2YTYrdiv2YrYq9ipINmB2Yog2LnZiNmE2YXYqSDYp9mE2KjYsdmF2KzZitin2Kog2YTYrNmF2YrYuSDYp9mE2YTYutin2Kog2YHZiiDYp9mE2LnYp9mE2YUuINmI2KXZhiDYp9iz2KrYrtiv2KfZhSAi2YrZiNmG2ZDZg9mI2K8iINmB2Yog2LnYp9mE2YUg2KfZhNin2YbYqtix2YbZitiqINiz2YrYpNiv2Yog2KXZhNmJINiq2YjZgdmK2LEg2YPYqNmK2LEg2YXZgtin2LHZhtipINmF2Lkg2KfYs9iq2K7Yr9in2YUg2KfZhNmF2KzZhdmI2LnYp9iqINin2YTYqtmC2YTZitiv2YrYqSDZhNmE2YXYrdin2LHZgSDYp9mE2YXYtNmB2LHYqS4g2YPZhdinINij2YYg2KfYs9iq2K7Yr9in2YUgItmK2YjZhtmQ2YPZiNivIiDYs9mK2Y/ZhdmD2ZHZkNmGINin2YTZhdio2LHZhdisINmF2YYg2YPYqtin2KjYqSDYp9mE2KjYsdmG2KfZhdisINmF2LHYqSDZiNin2K3Yr9ip2Iwg2YjYp9iz2KrYrtiv2KfZhdmHINi52YTZiSDYo9mKINmG2YjYuSDZhdmGINin2YTYo9is2YfYstipINij2Ygg2KfZhNij2YbYuNmF2KnYjCDZiNmE2KPZiiDZhNi62Kkg2KPZiCDYr9mI2YTYqSDZgdmKINin2YTYudin2YTZhSDYo9mK2YbZhdinINmD2KfZhtiq2Iwg2K/ZiNmGINin2YTYrdin2KzYqSDZhNil2LnYp9iv2Kkg2KfZhNio2LHZhdis2Kkg2KPZiCDYpdis2LHYp9ihINij2Yog2KrYudiv2YrZhC4g2YjYo9iu2YrYsdin2Iwg2YHYpdmGINin2LPYqtiu2K/Yp9mFICLZitmI2YbZkNmD2YjYryIg2LPZitmF2YPZhiDYp9mE2KjZitin2YbYp9iqINmF2YYg2KfZhNin2YbYqtmC2KfZhCDYudio2LEg2KfZhNij2YbYuNmF2Kkg2YjYp9mE2KPYrNmH2LLYqSDYp9mE2YXYrtiq2YTZgdipINiv2YjZhiDYo9mKINiu2LfZiNix2Kkg2YTYqtit2LHZitmB2YfYp9iMINmF2YfZhdinINiq2LnYr9iv2Kog2KfZhNi02LHZg9in2Kog2KfZhNi12KfZhti52Kkg2YTZhNij2YbYuNmF2Kkg2YjYp9mE2YTYutin2KrYjCDZiNin2YTYr9mI2YQg2KfZhNiq2Yog2KrZhdixINmF2YYg2K7ZhNin2YTZh9inINmH2LDZhyDYp9mE2KjZitin2YbYp9iqLiAKKworQFNFVCBbW1s6QXJhYmljOl0gJiBbXHUwNjAwLVx1MDZGRl1dIFvigI5cdTA2MENcdTA2MUJcdTA2MUZcdTA2NDBcdTA2NEItXHUwNjU1XHUwNjYwLVx1MDY2Q1x1MDZGMC1cdTA2RjldXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby90cmFuc2xpdC9UZXN0X0dyZWVrLUxhdGluLnR4dCBiL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby90cmFuc2xpdC9UZXN0X0dyZWVrLUxhdGluLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZGFjNmEzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL3RyYW5zbGl0L1Rlc3RfR3JlZWstTGF0aW4udHh0CkBAIC0wLDAgKzEsNzcgQEAKK++7vyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDb3B5cmlnaHQgKGMpIDE5OTktMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworIyBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby90cmFuc2xpdC9UZXN0X0dyZWVrLUxhdGluLnR4dCx2ICQKKyMgJERhdGU6IDIwMDIvMDcvMjYgMjA6MDk6MDEgJAorIyAkUmV2aXNpb246IDEuMSAkCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworzqTOuSDOtc6vzr3Osc65IM+Ezr8gVW5pY29kZT8gCisKK86XIM66z4nOtM65zrrOv8+DzrXOu86vzrTOsSBVbmljb2RlIM+Az4HOv8+EzrXOr869zrXOuSDOrc69zrHOvSDOus6xzrkgzrzOv869zrHOtM65zrrPjCDOsc+BzrnOuM68z4wgzrPOuc6xIM66zqzOuM61IM+HzrHPgc6xzrrPhM6uz4HOsSwgzrHOvc61zr7OrM+Bz4TOt8+EzrEgzrHPgM+MIM+Ezr8gzrvOtc65z4TOv8+Fz4HOs865zrrPjCDPg8+Nz4PPhM63zrzOsSwgzrHOvc61zr7OrM+Bz4TOt8+EzrEgzrHPgM+MIM+Ezr8gzrvOv86zzrnPg868zrnOus+MLCDOsc69zrXOvs6sz4HPhM63z4TOsSDOsc+Az4wgz4TOt869IM6zzrvPjs+Dz4POsS4KKworzp/OuSDOt867zrXOus+Ez4HOv869zrnOus6/zq8gz4XPgM6/zrvOv86zzrnPg8+Ezq3Pgiwgz4POtSDPhM61zrvOuc66zq4gzrHOvc6szrvPhc+DzrcsIM+HzrXOuc+Bzq/Ots6/zr3PhM6xzrkgzrHPgM67z47PgiDOsc+BzrnOuM68zr/Pjc+CLiDOkc+Azr/OuM63zrrOtc+Nzr/Phc69IM6zz4HOrM68zrzOsc+EzrEgzrrOsc65IM6szrvOu86/z4XPgiDPh86xz4HOsc66z4TOrs+BzrXPgiDOsc69z4TOuc+Dz4TOv865z4fPjs69z4TOsc+CIM+Dz4TOvyDOus6xzrjOrc69zrEgz4TOv8+Fz4IgzrHPgM+MIM6tzr3Osc69IM6xz4HOuc64zrzPjCAozr/Ovc6/zrzOrM62zr/Phc68zrUgzrzOr86xIM+Ezq3PhM6/zrnOsSDOsc69z4TOuc+Dz4TOv865z4fOr86xIM66z4nOtM65zrrOv8+DzrXOu86vzrTOsSkuIM6gz4HOuc69IM+EzrfOvSDOtc+GzrXPjc+BzrXPg863IM+Ezr/PhSBVbmljb2RlLCDPhc+Azq7Pgc+HzrHOvSDOtc66zrHPhM6/zr3PhM6szrTOtc+CIM60zrnOsc+Gzr/Pgc61z4TOuc66zq3PgiDOus+JzrTOuc66zr/Pg861zrvOr860zrXPgi4gzpvPjM6zz4kgz4DOtc+BzrnOv8+BzrnPg868z47OvSDOvM61zrPOrc64zr/Phc+CIM+MzrzPic+CLCDPg861IM66zrHOvM6vzrEgzrrPic60zrnOus6/z4POtc67zq/OtM6xIM60zrXOvSDPh8+Jz4HOv8+Nz4POsc69IM6xz4HOus61z4TOv86vIM+HzrHPgc6xzrrPhM6uz4HOtc+COiDOu8+MzrPOv8+FIM+HzqzPgc65zr0sIM63IM6Vz4XPgc+Jz4DOsc+KzrrOriDOiM69z4nPg863IM+Hz4HOtc65zrHOts+Mz4TOsc69IM+AzrvOrs64zr/PgiDOtM65zrHPhs6/z4HOtc+EzrnOus+Ozr0gzrrPic60zrnOus6/z4POtc67zq/OtM+Jzr0gzrPOuc6xIM69zrEgzrrOsc67z43PiM61zrkgz4zOu861z4Igz4TOuc+CIM6zzrvPjs+Dz4POtc+CIM+Ez4nOvSDPh8+Jz4HPjs69Lc68zrXOu8+Ozr0gz4TOt8+CLiDOkc66z4zOvM6xIM66zrHOuSDOs865zrEgzrzOr86xIM66zrHOuSDOvM+Mzr3OtyDOs867z47Pg8+DzrEsIM+Mz4DPic+CIM+ALs+HLiDPhM6xIM6RzrPOs867zrnOus6sLCDOvM6vzrEgzrrPic60zrnOus6/z4POtc67zq/OtM6xIM60zrXOvSDOtc+AzrHPgc66zr/Pjc+DzrUgzrPOuc6xIM69zrEgzrrOsc67z43PiM61zrkgz4zOu86xIM+EzrEgzrPPgc6szrzOvM6xz4TOsSwgz4POt868zrXOr86xIM+Dz4TOr86+zrfPgiDOus6xzrkgz4TOtc+Hzr3Ouc66zqwgz4PPjc68zrLOv867zrEgzrXPhc+BzrXOr86xz4Igz4fPgc6uz4POt8+CLgorCivOlc66z4TPjM+CIM6xz4XPhM6/z40sIM6/zrkgzrrPic60zrnOus6/z4POtc67zq/OtM61z4IgzrHPhc+Ezq3PgiDOtM65zrHPhs+Jzr3Ov8+Nz4POsc69IM68zrXPhM6xzr7PjSDPhM6/z4XPgi4gzojPhM+DzrksIM60z43OvyDOus+JzrTOuc66zr/Pg861zrvOr860zrXPgiDOvM+Azr/Pgc6/z43Pg86xzr0gzrrOrM67zrvOuc+Dz4TOsSDOvc6xIM+Hz4HOt8+DzrnOvM6/z4DOv865zr/Pjc69IM+Ezr/OvSDOr860zrnOvyDOsc+BzrnOuM68z4wgzrPOuc6xIM60z43OvyDOtM65zrHPhs6/z4HOtc+EzrnOus6/z43PgiDPh86xz4HOsc66z4TOrs+BzrXPgiwgzq4gzr3OsSDPh8+BzrfPg865zrzOv8+Azr/Ouc6/z43OvSDOtM65zrHPhs6/z4HOtc+EzrnOus6/z43PgiDOsc+BzrnOuM68zr/Pjc+CIM6zzrnOsSDPhM6/zr0gzq/OtM65zr8gz4fOsc+BzrHOus+Ezq7Pgc6xLiDOms6szrjOtSDPhc+Azr/Ou86/zrPOuc+Dz4TOrs+CICjOus6xzrkgzrnOtM6vz4nPgiDOtc6szr0gzq7PhM6xzr0gzrTOuc6xzrrOv868zrnPg8+Ezq7Pgikgzq3PgM+BzrXPgM61IM69zrEgz4XPgM6/z4PPhM63z4HOr862zrXOuSDPgM67zq7OuM6/z4IgzrTOuc6xz4bOv8+BzrXPhM65zrrPjs69IM66z4nOtM65zrrOv8+DzrXOu86vzrTPic69zocgz4TOsc+Fz4TPjM+Hz4HOv869zrEgzrrOrM64zrUgz4bOv8+Bzqwgz4DOv8+FIM60zrXOtM6/zrzOrc69zrEgzrzOtc+EzrHPhs6tz4HOv869z4TOsc69IM68zrXPhM6xzr7PjSDOtM65zrHPhs6/z4HOtc+EzrnOus+Ozr0gzrrPic60zrnOus6/z4POtc67zq/OtM+Jzr0gzq4gzrvOtc65z4TOv8+Fz4HOs865zrrPjs69IM+Dz4XPg8+EzrfOvM6sz4TPic69LCDPhM6xIM60zrXOtM6/zrzOrc69zrEgzrHPhc+EzqwgzrrOuc69zrTPjc69zrXPhc6xzr0gzr3OsSDOsc67zrvOv865z4nOuM6/z43OvS4KKworzqTOvyBVbmljb2RlIM6xzrvOu86szrbOtc65IM6xz4XPhM6uIM+EzrfOvSDOus6xz4TOrM+Dz4TOsc+DzrchCivOpM6/IFVuaWNvZGUgz4DPgc6/z4TOtc6vzr3Otc65IM6tzr3Osc69IM68zr/Ovc6xzrTOuc66z4wgzrHPgc65zrjOvM+MIM6zzrnOsSDOus6szrjOtSDPh86xz4HOsc66z4TOrs+BzrEsIM6xzr3Otc6+zqzPgc+EzrfPhM6xIM6xz4DPjCDPhM6/IM67zrXOuc+Ezr/Phc+BzrPOuc66z4wgz4PPjc+Dz4TOt868zrEsIM6xzr3Otc6+zqzPgc+EzrfPhM6xIM6xz4DPjCDPhM6/IM67zr/Os865z4POvM65zrrPjCwgzrHOvc61zr7OrM+Bz4TOt8+EzrEgzrHPgM+MIM+EzrfOvSDOs867z47Pg8+DzrEuIM6kzrfOvSDOus+JzrTOuc66zr/Pg861zrvOr860zrEgVW5pY29kZSDOrc+Hzr/Phc69IM6xz4PPgM6xz4POuM61zq8gzrrOv8+Bz4XPhs6xzq/Ov865IM+AzrHPgc6szrPOv869z4TOtc+CIM+Ezr/PhSDPh8+Oz4HOv8+FIM+Ez4nOvSDOu86/zrPOuc+DzrzOuc66z47OvSDPjM+Az4nPgiDOv865OiBBcHBsZSwgSFAsIElCTSwgSnVzdFN5c3RlbSwgTWljcm9zb2Z0LCBPcmFjbGUsIFNBUCwgU3VuLCBTeWJhc2UsIFVuaXN5cyDOus6xzrkgz4DOv867zrvOv86vIM6szrvOu86/zrkuIM6kzr8gVW5pY29kZSDOsc+AzrHOuc+Ezr/Pjc69IM+Azr/Ou867zq3PgiDPg8+NzrPPh8+Bzr/Ovc61z4Igz4TPhc+Azr/PgM6/zrnOrs+DzrXOuc+CIM+Mz4DPic+CIM6/zrk6IFhNTCwgSmF2YSwgRUNNQVNjcmlwdCAoSmF2YVNjcmlwdCksIExEQVAsIENPUkJBIDMuMCwgV01MLCDOui7Ou8+ALiwgzrrOsc65IM61zq/Ovc6xzrkgzrcgzrXPgM6vz4POt868zrcgzrzOrc64zr/OtM6/z4IgzrXPhs6xz4HOvM6/zrPOrs+CIM+EzrfPgiDPhM+Fz4DOv8+Azr/Or863z4POt8+CIElTTy9JRUMgMTA2NDYuIM6lz4DOv8+Dz4TOt8+Bzq/Ots61z4TOsc65IM6xz4DPjCDPgM6/zrvOu86sIM67zrXOuc+Ezr/Phc+BzrPOuc66zqwgz4PPhc+Dz4TOrs68zrHPhM6xLCDPjM67zr/Phc+CIM+Ezr/Phc+CIM+Dz43Ph8+Bzr/Ovc6/z4XPgiDPgM61z4HOuc63zrPOt8+Ezq3PgiDOlM65zrHOtM65zrrPhM+Nzr/PhSwgzrrOsc65IM+Azr/Ou867zqwgzqzOu867zrEgz4DPgc6/z4rPjM69z4TOsS4gzpcgzrXOvM+GzqzOvc65z4POtyDPhM63z4IgzrrPic60zrnOus6/z4POtc67zq/OtM6xz4IgVW5pY29kZSwgzrrOsc65IM63IM60zrnOsc64zrXPg865zrzPjM+EzrfPhM6xIM61z4HOs86xzrvOtc6vz4nOvSDPgM6/z4Ugzr3OsSDPhM63zr0gz4XPgM6/z4PPhM63z4HOr862zr/Phc69IM61zq/Ovc6xzrkgzrHPgM+MIM+EzrnPgiDPg863zrzOsc69z4TOuc66z4zPhM61z4HOtc+CIM61zr7Otc67zq/Ovs61zrnPgiDPhM63z4Igz4DPgc+Mz4PPhs6xz4TOt8+CIM+EzrXPh869zr/Ou86/zrPOr86xz4IgzrvOv86zzrnPg868zrnOus+Ozr0uCisKK86XIM61zr3Pg8+JzrzOrM+Ez4nPg863IM+Ezr/PhSBVbmljb2RlIM+DzrUgzrXPhs6xz4HOvM6/zrPOrc+CIM+AzrXOu86sz4TOty3OtM65zrHOus6/zrzOuc+Dz4TOriDOriAibXVsdGktdGllcmVkIiDPgM+Bzr/Pg8+Gzq3Pgc61zrkgz4POt868zrHOvc+EzrnOus6tz4Igzr/Ouc66zr/Ovc6/zrzOr861z4Igz4POtSDPg8+Hzq3Pg863IM68zrUgz4TOuc+CIM+Jz4Igz4TPjs+BzrEgz4XPgM6sz4HPh86/z4XPg861z4IgzrrPic60zrnOus6/z4POtc67zq/OtM61z4IuIM6nzqzPgc65z4Igz4PPhM6/IFVuaWNvZGUgzq3Ovc6xIM66zrHOuSDOvM+Mzr3OvyDPgM+Bzr/Pis+Mzr0gzq4gzrzOr86xIM66zrHOuSDOvM+Mzr3OtyDPhM6/z4DOv864zrXPg86vzrEgzpTOuc6xzrTOuc66z4TPjc6/z4UgzrzPgM6/z4HOtc6vIM69zrEgzrXPgM65zrrOv865zr3Pic69zrXOryDOvM61IM60zrnOrM+Gzr/Pgc6xIM67zrXOuc+Ezr/Phc+BzrPOuc66zqwgz4PPhc+Dz4TOrs68zrHPhM6xLCDPg861IM60zrnOrM+Gzr/Pgc61z4IgzrPOu8+Oz4PPg861z4IgzrrOsc65IM+Hz47Pgc61z4IsIM+Hz4nPgc6vz4Igz4TOt869IM6xzr3OrM6zzrrOtyDOtc+AzrHOvc6xz4DPgc6/zrPPgc6xzrzOvM6xz4TOuc+DzrzOv8+NLiDOk86vzr3Otc+EzrHOuSDOrc+Ez4POuSDOtM+Fzr3Osc+Ezq4gzrcgzrzOtc+EzrHPhs6/z4HOrCDOtM61zrTOv868zq3Ovc+Jzr0gzrHOvc6szrzOtc+DzrEgz4POtSDPgM67zq7OuM6/z4IgzrTOuc6xz4bOv8+BzrXPhM65zrrPjs69IM+Dz4XPg8+EzrfOvM6sz4TPic69IM60zq/Ph8+Jz4IgzrrOr869zrTPhc69zr8gzrHOu867zr/Or8+Jz4POt8+CLgorCivOo8+HzrXPhM65zrrOrCDOvM61IM+Ezr8gzprOv869z4PPjM+Bz4TOuc6/z4XOvCBVbmljb2RlCitUzr8gzprOv869z4PPjM+Bz4TOuc6/z4XOvCBVbmljb2RlIM61zq/Ovc6xzrkgzq3Ovc6xz4IgzrrOv865zr3Pic+GzrXOu86uz4Igzr/Pgc6zzrHOvc65z4POvM+Mz4LOhyDOuc60z4HPjc64zrfOus61IM6zzrnOsSDOvc6xIM6xzr3Osc+Az4TPjc6+zrXOuSwgzr3OsSDOtc+AzrXOus+EzrXOr869zrXOuSDOus6xzrkgzr3OsSDOvM61z4TOsc60z47Pg861zrkgz4TOt869IM+Hz4HOrs+Dzrcgz4TOt8+CIM66z4nOtM65zrrOv8+DzrXOu86vzrTOsc+CIFVuaWNvZGUgz4DOv8+FIM66zrHOuM6/z4HOr862zrXOuSDPhM63zr0gzrHOvc6xz4DOsc+BzqzPg8+EzrHPg863IM66zrXOuc68zq3Ovc6/z4Ugz4POtSDPg8+NzrPPh8+Bzr/Ovc6xIM67zr/Os865z4POvM65zrrOrCDPgM+Bzr/Pis+Mzr3PhM6xIM66zrHOuSDPhM+Fz4DOv8+Azr/Ouc6uz4POtc65z4IuIM6czrXOs86szrvOv8+CIM6xz4HOuc64zrzPjM+CIM61z4TOsc65z4HOtc65z47OvSDOus6xzrkgzr/Pgc6zzrHOvc65z4POvM+Ozr0gz4TOt8+CIM60zrnOtc64zr3Ov8+Nz4IgzrLOuc6/zrzOt8+HzrHOvc6vzrHPgiDPhc+Azr/Ou86/zrPOuc+Dz4TPjs69IM66zrHOuSDOu86/zrPOuc+DzrzOuc66z47OvSDOtc6vzr3Osc65IM68zq3Ou863IM+Ezr/PhSDOms6/zr3Pg8+Mz4HPhM65zr/Phc68IFVuaWNvZGUuIM6kzr8gzprOv869z4PPjM+Bz4TOuc6/z4XOvCDPh8+BzrfOvM6xz4TOv860zr/PhM61zq/PhM6xzrkgzrzPjM69zr8gzrHPgM+MIM+EzrnPgiDPg8+Fzr3OtM+Bzr/OvM6tz4Igz4TPic69IM68zrXOu8+Ozr0gz4TOv8+FLiDOnM6tzrvOv8+CIM+Ezr/PhSDOus6/zr3Pg8+Mz4HPhM65zr/Phc68IFVuaWNvZGUgzrzPgM6/z4HOtc6vIM69zrEgzrPOr869zrXOuSDOv865zr/Pg860zq7PgM6/z4TOtSAozr/Pgc6zzrHOvc65z4POvM+Mz4IsIM61z4TOsc65z4HOtc6vzrEgzq4gzrnOtM65z47PhM63z4IsIM6/z4DOv8+FzrTOrs+Azr/PhM61IM+Dz4TOv869IM66z4zPg868zr8pIM+Azr/PhSDOvc6xIM+Fz4DOv8+Dz4TOt8+Bzq/Ots61zrkgz4TOt869IM66z4nOtM65zrrOv8+DzrXOu86vzrTOsSBVbmljb2RlIM66zrHOuSDOvc6xIM61z4DOuc64z4XOvM61zq8gzr3OsSDPg8+Fzr3OtM+BzqzOvM61zrkgz4PPhM63zr0gzrXPgM6tzrrPhM6xz4POtyDOus6xzrkgz4PPhM63zr0gzrXPhs6xz4HOvM6/zrPOriDPhM63z4IuCisKK86TzrnOsSDPgM61z4HOsc65z4TOrc+Bz4kgz4DOu863z4HOv8+Gzr/Pgc6vzrXPgiwgzrLOu86tz4DOtSDPhM65z4IgzrXOvs6uz4IgzrnPg8+Ezr/Pg861zrvOr860zrXPgjogzpPOu8+Jz4PPg86sz4HOuSwgzpTOtc6vzrPOvM6xz4TOsSDPgM+Bzr/Pis+Mzr3PhM+Jzr0gz4PPhc68zrLOsc+Ez47OvSDOvM61IM+Ezr8gVW5pY29kZSwgzqTOtc+Hzr3Ouc66zq4gzpXOuc+DzrHOs8+JzrPOriDOus6xzrkgzqfPgc6uz4POuc68zrXPgiDPgM63zrPOrc+CIM+AzrvOt8+Bzr/Phs6/z4HOuc+Ozr0uCisKKyhBTkNJRU5UKQorCivhvITOvc60z4HOsSDOvM6/zrkg4byUzr3Ovc61z4DOtSwgzrzOv+G/ps+DzrEsIM+Azr/Ou8+Nz4TPgc6/z4DOv869LCDhvYPPgiDOvM6szrvOsSDPgM6/zrvOu+G9sAorz4DOu86szrPPh864zrcsIOG8kM+AzrXhvbYgzqTPgc6/zq/Ot8+CIOG8sc61z4HhvbjOvSDPgM+Ezr/Ou86vzrXOuM+Bzr/OvSDhvJTPgM61z4HPg861zr06CivPgM6/zrvOu+G/ts69IM604oCZIOG8gM69zrjPgc+Oz4DPic69IOG8tM60zrXOvSDhvITPg8+EzrXOsSDOus6x4b22IM69z4zOv869IOG8lM6zzr3PiSwKK8+Azr/Ou8674b2wIM604oCZIOG9hSDOs+KAmSDhvJDOvSDPgM+Mzr3PhOG/syDPgM6szrjOtc69IOG8hM67zrPOtc6xIOG9g869IM66zrHPhOG9sCDOuM+FzrzPjM69LAor4byAz4HOvc+NzrzOtc69zr/PgiDhvKXOvSDPhM61IM+Iz4XPh+G9tM69IM66zrHhvbYgzr3PjM+Dz4TOv869IOG8kc+EzrHOr8+Bz4nOvS4KK+G8gM67zrvigJkgzr/hvZDOtOKAmSDhvaPPgiDhvJHPhM6sz4HOv8+Fz4Ig4byQz4HPgc+Nz4POsc+Ezr8sIOG8sc6tzrzOtc69z4zPgiDPgM61z4E6CivOseG9kM+E4b+2zr0gzrPhvbDPgSDPg8+GzrXPhM6tz4Hhv4PPg865zr0g4byAz4TOsc+DzrjOsc67zq/hv4PPg865zr0g4b2EzrvOv869z4TOvywKK869zq7PgM65zr/OuSwgzr/hvLMgzrrOsc+E4b2wIM6yzr/hv6bPgiDhvZnPgM61z4HOr86/zr3Ov8+CIOG8qM61zrvOr86/zrnOvwor4bykz4POuM65zr/OvTogzrHhvZDPhOG9sM+BIOG9gSDPhM6/4b+Wz4POuc69IOG8gM+GzrXOr867zrXPhM6/IM69z4zPg8+EzrnOvM6/zr0g4bymzrzOsc+BLgorz4Thv7bOvSDhvIHOvM+MzrjOtc69IM6zzrUsIM64zrXOrCwgzrjPjc6zzrHPhM61z4EgzpTOuc+Mz4IsIM614bywz4DhvbIgzrrOseG9tiDhvKHOvOG/ls69LgorKgor4byUzr3OuOKAmSDhvITOu867zr/OuSDOvOG9ss69IM+AzqzOvc+EzrXPgiwg4b2Fz4POv865IM+Gz43Os86/zr0gzrHhvLDPgOG9us69IOG9hM67zrXOuM+Bzr/OvSwKK86/4by0zrrOv865IOG8lM+DzrHOvSwgz4DPjM67zrXOvM+Mzr0gz4TOtSDPgM61z4bOtc+FzrPPjM+EzrXPgiDhvKDOtOG9siDOuM6szrvOsc+Dz4POsc69Ogorz4ThvbjOvSDOtOKAmSDOv+G8ts6/zr0gzr3PjM+Dz4TOv8+FIM66zrXPh8+BzrfOvM6tzr3Ov869IOG8oM604b2yIM6zz4XOvc6xzrnOuuG9uM+CCivOvc+NzrzPhs63IM+Az4zPhM69zrnigJkg4byUz4HPhc66zrUgzprOsc67z4XPiOG9vCDOtOG/ls6xIM64zrXOrM+Jzr0KK+G8kM69IM+Dz4DOrc+Dz4POuSDOs867zrHPhs+Fz4HOv+G/ls+DzrksIM67zrnOu86xzrnOv868zq3Ovc63IM+Az4zPg865zr0gzrXhvLbOvc6xzrkuCivhvIDOu8674oCZIOG9hc+EzrUgzrThvbQg4byUz4TOv8+CIOG8ps67zrjOtSDPgM61z4HOuc+AzrvOv868zq3Ovc+Jzr0g4byQzr3Ouc6xz4XPhOG/ts69LAorz4Thv7cgzr/hvLEg4byQz4DOtc66zrvPjs+DzrHOvc+Ezr8gzrjOtc6/4b22IM6/4by2zrrPjM69zrTOtSDOvc6tzrXPg864zrHOuQorzrXhvLDPgiDhvLjOuM6szrrOt869LCDOv+G9kM604oCZIOG8lM69zrjOsSDPgM61z4bPhc6zzrzOrc69zr/PgiDhvKbOtc69IOG8gM6tzrjOu8+Jzr0KK866zrHhvbYgzrzOtc+E4b2wIM6/4by3z4POuSDPhs6vzrvOv865z4POuS4gzrjOtc6/4b22IM604oCZIOG8kM67zq3Osc65z4HOv869IOG8hc+AzrHOvc+EzrXPggorzr3PjM+Dz4bOuSDOoM6/z4POtc65zrTOrM+Jzr3Ov8+COiDhvYEgzrTigJkg4byAz4PPgM61z4HPh+G9ss+CIM68zrXOvc6tzrHOuc69zrXOvQor4byAzr3PhM65zrjOreG/syDhvYjOtM+Fz4Phv4bOuSDPgM6sz4HOv8+CIOG8o869IM6zzrHhv5bOsc69IOG8sc66zq3Pg864zrHOuS4KKyoKK+G8gM67zrvigJkg4b2BIM684b2yzr0gzpHhvLDOuM6vzr/PgM6xz4IgzrzOtc+EzrXOus6vzrHOuM61IM+EzrfOu8+MzrjigJkg4byQz4zOvc+EzrHPgiwKK86R4bywzrjOr86/z4DOsc+CIM+Ezr/hvbYgzrTOuc+HzrjhvbAgzrTOtc60zrHOr86xz4TOsc65LCDhvJTPg8+HzrHPhM6/zrkg4byAzr3OtM+B4b+2zr0sCivOv+G8sSDOvOG9ss69IM60z4XPg86/zrzOrc69zr/PhSDhvZnPgM61z4HOr86/zr3Ov8+CIM6/4byxIM604oCZIOG8gM69zrnPjM69z4TOv8+CLAor4byAzr3PhM65z4zPic69IM+EzrHPjc+Bz4nOvSDPhM61IM66zrHhvbYg4byAz4HOvc61zrnhv7bOvSDhvJHOus6xz4TPjM68zrLOt8+CLgor4byUzr3OuOKAmSDhvYUgzrPigJkg4byQz4TOrc+Bz4DOtc+Ezr8gzrTOsc65z4ThvbYgz4DOsc+Bzq7OvM61zr3Ov8+COiDOv+G8sSDOtOG9siDOtOG9tCDhvITOu867zr/OuQorzpbOt8694b24z4Ig4byQzr3hvbYgzrzOtc6zzqzPgc6/zrnPg865zr0g4b2IzrvPhc68z4DOr86/z4Ug4byBzrjPgc+Mzr/OuSDhvKbPg86xzr0uCivPhM6/4b+Wz4POuSDOtOG9siDOvM+NzrjPic69IOG8ps+Bz4fOtSDPgM6xz4ThvbTPgSDhvIDOvc60z4Hhv7bOvSDPhM61IM64zrXhv7bOvSDPhM61OgorzrzOvc6uz4POsc+Ezr8gzrPhvbDPgSDOus6xz4ThvbAgzrjPhc684b24zr0g4byAzrzPjc68zr/Ovc6/z4IgzpHhvLDOs86vz4POuM6/zrnOvywKK8+Ez4zOvSDhv6XigJkg4byIzrPOsc68zrXOvM69zr/Ovc6vzrTOt8+CIM+EzrfOu861zrrOu8+Fz4ThvbjPgiDhvJTOus+EzrHOveKAmSDhvYjPgc6tz4PPhM63z4I6CivPhM6/4b+mIOG9hSDOs+KAmSDhvJDPgM65zrzOvc63z4POuM614b22z4Ig4byUz4DOteKAmSDhvIDOuM6xzr3OrM+Ezr/Ouc+DzrkgzrzOtc+EzrfPjc60zrE6CisqCivigJzhvaIgz4DPjM+Azr/OuSwgzr/hvLfOv869IM60zq4gzr3PhSDOuM61zr/hvbrPgiDOss+Bzr/PhM6/4b22IM6x4bywz4TOuc+Mz4nOvc+EzrHOuToKK+G8kM6+IOG8oc68zq3Pic69IM6zzqzPgSDPhs6xz4POuSDOus6szrrigJkg4byUzrzOvM61zr3Osc65LCDOv+G8sSDOtOG9siDOus6x4b22IM6x4b2Qz4TOv+G9tgorz4PPhuG/h8+DzrnOvSDhvIDPhM6xz4POuM6xzrvOr+G/g8+DzrnOvSDhvZHPgOG9ss+BIM68z4zPgc6/zr0g4byEzrvOs8614oCZIOG8lM+Hzr/Phc+DzrnOvSwKK+G9oc+CIM66zrHhvbYgzr3hv6bOvSDOkeG8tM6zzrnPg864zr/PgiDhvZHPgOG9ss+BIM68z4zPgc6/zr0g4byIz4TPgc61zq/MiM60zrHOvworzrPhv4bOvOKAmSDhvITOu86/z4fOv869IM68zr3Ot8+Dz4TOrs69LCDPhOG9uM69IM604oCZIOG8lM66z4TOsc69zrUgzr3Ov8+Dz4TOrs+DzrHOvc+EzrEsCivOteG8sM604b28z4IgzrHhvLDPgOG9us69IOG9hM67zrXOuM+Bzr/OvSwg4byQz4DOteG9tiDPgM+Bz4wgzr/hvLEgzrXhvLTPgM6/zrzOtc69IOG8oc68zrXhv5bPgiwKK+G8mc+BzrzOtc6vzrHOvSDPgM6tzrzPiM6xzr3PhM61z4IsIOG8kM+Nz4POus6/z4DOv869IOG8gM+BzrPOtc+Kz4bPjM69z4TOt869LAorzrzOrs+E4oCZIM6x4b2Qz4ThvbjOvSDOus+EzrXOr869zrXOuc69IM68zq7PhM61IM68zr3OrM6xz4POuM6xzrkg4byEzrrOv865z4TOuc69Ogor4byQzrogzrPhvbDPgSDhvYjPgc6tz4PPhM6xzr8gz4TOr8+DzrnPgiDhvJTPg8+DzrXPhM6xzrkg4byIz4TPgc61zq/MiM60zrHOvywKK+G9gc+Az4DPjM+E4oCZIOG8gs69IOG8oc6yzq7Pg+G/gyDPhM61IM66zrHhvbYg4bynz4Ig4byxzrzOtc6vz4HOtc+EzrHOuSDOseG8tM63z4IuCivhvaPPgiDhvJTPhs6xzrjigJkg4byZz4HOvM61zq/Osc+CLCDhvIDOu8674oCZIM6/4b2QIM+Gz4HOrc69zrHPgiDOkeG8sM6zzq/Pg864zr/Ouc6/CivPgM614b+WzrjigJkg4byAzrPOsc644b2wIM+Gz4HOv869zq3Pic69OiDOveG/ps69IM604oCZIOG8gc64z4HPjM6xIM+AzqzOvc+E4oCZIOG8gM+Azq3PhM65z4POtc69LuKAnQorCitAU0VUIFtbWzpHcmVlazpdJltcdTAzNzAtXHUwM0UxIFx1MDNGMC1cdTAzRkZdXSBbXDotOz9cdTAwQjdcdTAzN0VcdTAzODddXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby90cmFuc2xpdC9UZXN0X0hhbi1MYXRpbi50eHQgYi9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vdHJhbnNsaXQvVGVzdF9IYW4tTGF0aW4udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkNDgwNjUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vdHJhbnNsaXQvVGVzdF9IYW4tTGF0aW4udHh0CkBAIC0wLDAgKzEsMzAgQEAKK++7vyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDb3B5cmlnaHQgKGMpIDE5OTktMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworIyBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby90cmFuc2xpdC9UZXN0X0hhbi1MYXRpbi50eHQsdiAkCisjICREYXRlOiAyMDAyLzA3LzI2IDIwOjA5OjAxICQKKyMgJFJldmlzaW9uOiAxLjEgJAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitAVVBQRVJGSUxURVJACivku4DkuYjmmK9Vbmljb2RlKOe7n+S4gOeggSk/CitVbmljb2Rl57uZ5q+P5Liq5a2X56ym5o+Q5L6b5LqG5LiA5Liq5ZSv5LiA55qE5pWw5a2X77yMCivkuI3orrrmmK/ku4DkuYjlubPlj7DvvIwKK+S4jeiuuuaYr+S7gOS5iOeoi+W6j++8jAor5LiN6K665piv5LuA5LmI6K+t6KiA44CCCisKK+WfuuacrOS4iu+8jOiuoeeul+acuuWPquaYr+WkhOeQhuaVsOWtl+OAguWug+S7rOaMh+WumuS4gOS4quaVsOWtl++8jOadpeWCqOWtmOWtl+avjeaIluWFtuS7luWtl+espuOAguWcqOWIm+mAoFVuaWNvZGXkuYvliY3vvIzmnInmlbDnmb7np43mjIflrprov5nkupvmlbDlrZfnmoTnvJbnoIHns7vnu5/jgILmsqHmnInkuIDkuKrnvJbnoIHlj6/ku6XljIXlkKvotrPlpJ/nmoTlrZfnrKbvvJrkvovlpoLvvIzljZXljZXmrKflt57lhbHlkIzkvZPlsLHpnIDopoHlpb3lh6Dnp43kuI3lkIznmoTnvJbnoIHmnaXljIXmi6zmiYDmnInnmoTor63oqIDjgILljbPkvb/mmK/ljZXkuIDnp43or63oqIDvvIzkvovlpoLoi7Hor63vvIzkuZ/msqHmnInlk6rkuIDkuKrnvJbnoIHlj6/ku6XpgILnlKjkuo7miYDmnInnmoTlrZfmr43vvIzmoIfngrnnrKblj7fvvIzlkozluLjnlKjnmoTmioDmnK/nrKblj7fjgIIKKwor6L+Z5Lqb57yW56CB57O757uf5Lmf5Lya5LqS55u45Yay56qB44CC5Lmf5bCx5piv6K+077yM5Lik56eN57yW56CB5Y+v6IO95L2/55So55u45ZCM55qE5pWw5a2X5Luj6KGo5Lik5Liq5LiN5ZCM55qE5a2X56ym77yM5oiW5L2/55So5LiN5ZCM55qE5pWw5a2X5Luj6KGo55u45ZCM55qE5a2X56ym44CC5Lu75L2V5LiA5Y+w54m55a6a55qE6K6h566X5py6KOeJueWIq+aYr+acjeWKoeWZqCnpg73pnIDopoHmlK/mjIHorrjlpJrkuI3lkIznmoTnvJbnoIHvvIzkvYbmmK/vvIzkuI3orrrku4DkuYjml7blgJnmlbDmja7pgJrov4fkuI3lkIznmoTnvJbnoIHmiJblubPlj7DkuYvpl7TvvIzpgqPkupvmlbDmja7mgLvkvJrmnInmjZ/lnY/nmoTljbHpmanjgIIKKworVW5pY29kZeato+WcqOaUueWPmOaJgOaciei/meS4gOWIh++8gQorVW5pY29kZee7meavj+S4quWtl+espuaPkOS+m+S6huS4gOS4quWUr+S4gOeahOaVsOWtl++8jOS4jeiuuuaYr+S7gOS5iOW5s+WPsO+8jOS4jeiuuuaYr+S7gOS5iOeoi+W6j++8jOS4jeiuuuS7gOS5iOivreiogOOAglVuaWNvZGXmoIflh4blt7Lnu4/ooqvov5nkupvlt6XkuJrnlYznmoTpooblr7zku6zmiYDph4fnlKjvvIzkvovlpoLvvJpBcHBsZSwgSFAsIElCTSwgSnVzdFN5c3RlbSwgTWljcm9zb2Z0LCBPcmFjbGUsIFNBUCwgU3VuLCBTeWJhc2UsIFVuaXN5c+WSjOWFtuWug+iuuOWkmuWFrOWPuOOAguacgOaWsOeahOagh+WHhumDvemcgOimgVVuaWNvZGXvvIzkvovlpoJYTUwsIEphdmEsIEVDTUFTY3JpcHQgKEphdmFTY3JpcHQpLCBMREFQLCBDT1JCQSAzLjAsIFdNTOetieetie+8jOW5tuS4lO+8jFVuaWNvZGXmmK/lrp7njrBJU08vSUVDIDEwNjQ255qE5q2j6KeE5pa55byP44CC6K645aSa5pON5L2c57O757uf77yM5omA5pyJ5pyA5paw55qE5rWP6KeI5Zmo5ZKM6K645aSa5YW25LuW5Lqn5ZOB6YO95pSv5oyB5a6D44CCVW5pY29kZeagh+WHhueahOWHuueOsOWSjOaUr+aMgeWug+W3peWFt+eahOWtmOWcqO+8jOaYr+i/keadpeWFqOeQg+i9r+S7tuaKgOacr+acgOmHjeimgeeahOWPkeWxlei2i+WKv+OAggorCivlsIZVbmljb2Rl5LiO5a6i5oi35pyN5Yqh5Zmo5oiW5aSa5bGC5bqU55So56iL5bqP5ZKM572R56uZ57uT5ZCI77yM5q+U5L2/55So5Lyg57uf5a2X56ym6ZuG6IqC55yB6LS555So44CCVW5pY29kZeS9v+WNleS4gOi9r+S7tuS6p+WTgeaIluWNleS4gOe9keermeiDveWkn+i0r+epv+WkmuS4quW5s+WPsO+8jOivreiogOWSjOWbveWutu+8jOiAjOS4jemcgOimgemHjeW7uuOAguWug+WPr+WwhuaVsOaNruS8oOi+k+WIsOiuuOWkmuS4jeWQjOeahOezu+e7n++8jOiAjOaXoOaNn+Wdj+OAggorCivlhbPkuo5Vbmljb2Rl5a2m5pyv5a2m5LyaCitVbmljb2Rl5a2m5pyv5a2m5Lya5piv5LiA5Liq6Z2e55uI5Yip55qE57uE57uH77yM5piv5Li65Y+R5bGV77yM5omp5bGV5ZKM5o6o5bm/5L2/55SoVW5pY29kZeagh+WHhuiAjOW7uueri+eahO+8jFVuaWNvZGXlrabmnK/lrabkvJrorr7nq4vkuobnjrDku6Pova/ku7bkuqflk4HlkozmoIflh4bmlofmnKznmoTooajnpLrms5XjgILlrabmnK/lrabkvJrnmoTkvJrlkZjku6Pooajkuoblub/ms5vpoobln5/nmoTorqHnrpfmnLrlkozotYTorq/lt6XkuJrnmoTlhazlj7jlkoznu4Tnu4fjgILlrabmnK/lrabkvJrlj6rnlLHkvJrlkZjmj5DkvpvotYTph5HjgIJVbmljb2Rl5a2m5pyv5a2m5Lya55qE5Lya5ZGY6LWE5qC85byA5pS+57uZ5LiW55WM5LiK5Lu75L2V5pSv5oyBVW5pY29kZeagh+WHhuWSjOW4jOacm+WNj+WKqeWFtuaJqeWxleWSjOaJp+ihjOeahOe7hOe7h+WPiuS4quS6uuOAggorCivmrLLnn6Xmm7TlpJrkv6Hmga/vvIzor7flj4LpmIXmnK/or63or43msYfooajvvIxVbmljb2Rl5Lqn5ZOB5qC35pys77yM5oqA5pyv566A5LuL5ZKM5Y+C6ICD6LWE5paZ44CCCisKK0NoaW5lc2UgdHJhbnNsYXRpb24gYnkgIOm7juWci+ePjSwgWGVyb3gKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vdHJhbnNsaXQvVGVzdF9IZWJyZXctTGF0aW4udHh0IGIvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL3RyYW5zbGl0L1Rlc3RfSGVicmV3LUxhdGluLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YmJlOTE0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL3RyYW5zbGl0L1Rlc3RfSGVicmV3LUxhdGluLnR4dApAQCAtMCwwICsxLDMwIEBACivvu78jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ29weXJpZ2h0IChjKSAxOTk5LTIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyMgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vdHJhbnNsaXQvVGVzdF9IZWJyZXctTGF0aW4udHh0LHYgJAorIyAkRGF0ZTogMjAwMi8wNy8yNiAyMDowOTowMSAkCisjICRSZXZpc2lvbjogMS4xICQKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQFVQUEVSRklMVEVSQAor157XlCDXlteUINeZ15XXoNeZ16fXldeTIChVbmljb2RlKT8KK9eZ15XXoNeZ16fXldeTINee16fXpteUINee16HXpNeoINeZ15nXl9eV15PXmSDXnNeb15wg16rXlSwgCivXnNeQINee16nXoNeUINei15wg15DXmdeW15Ug16TXnNeY16TXldeo157XlCwgCivXnNeQINee16nXoNeUINeR15DXmdeW15Ug16rXldeb16DXmdeqLCAKK9eV15zXkCDXntep16DXlCDXkdeQ15nXlteVINep16TXlC4KKwor15HXkNeV16TXnyDXkdeh15nXodeZLCDXnteX16nXkdeZ150g16LXldeh16fXmdedINeo16cg15HXnteh16TXqNeZ150uINeU150g157XkNeX16HXoNeZ150g15DXldeq15nXldeqINeV16rXldeV15nXnSDXkNeX16jXmdedINei15wt15nXk9eZINeU16fXpteQ16og157Xodek16gg15zXm9ecINeQ15fXkyDXnteU150uINeR15jXqNedINeU15XXntem15Ag15TXmdeV16DXmden15XXkywg15TXmdeVINee15DXldeqINee16LXqNeb15XXqiDXp9eZ15PXldeTINep15XXoNeV16og15zXlNen16bXkNeqINeU157Xodek16jXmdedINeU15zXnNeVLiDXkNejINec15Ag15DXl9eqINee15TXnyDXmdeb15zXlCDXnNeU15vXmdecINeb157XldeqINeq15XXldeZ150g157Xodek16fXqi4g15zXk9eV15LXnteQOiDXqNenINec15DXmdeX15XXkyDXlNeQ15nXqNeV16TXkNeZINeg15PXqNep15nXnSDXm9ee15Qg16HXldeS15kg16fXmdeT15XXk9eZ150g16nXldeg15nXnSDXotecINee16DXqiDXnNeb16HXldeqINeQ16og15vXnCDXlNep16TXldeqINeU157Xk9eV15HXqNeV16og15HXlS4g15nXqteZ16jXlCDXnteW15DXqiDXkNejINec16nXpNeUINeR15XXk9eT16osINeb157XlSDXkNeg15LXnNeZ16og15zXntep15wsINec15Ag15TXmdeUINeT15kg15HXntei16jXm9eqINen15nXk9eV15Mg15DXl9eqINeR16LXkdeV16gg15vXnCDXlNeQ15XXqteZ15XXqiwg16HXmdee16DXmSDXlNek15nXodeV16cg15XXlNeh157XnNeZ150g15TXmNeb16DXmdeZ150g16nXkdep15nXnteV16kg16nXldeY16MuIAorCivXntei16jXm9eV16og16fXmdeT15XXkyDXkNec15Ug15DXoyDXodeV16rXqNeV16og15bXlSDXkNeqINeW15UuINeb15zXldee16gsINep16DXmSDXp9eZ15PXldeT15nXnSDXmdeb15XXnNeZ150g15zXlNep16rXntepINeR15DXldeq15Ug157Xodek16gg15zXqdeg15kg16rXldeZ150g16DXkdeT15zXmdedLCDXkNeVINec15TXqdeq157XqSDXkdee16HXpNeo15nXnSDXqdeV16DXmdedINec15DXldeq15Ug16rXlS4g16LXnCDXm9ecINee15fXqdeRICjXldeR157XmdeV15fXkyDXqdeo16rXmdedKSDXnNeq157XldeaINeR157Xodek16gg16jXkSDXqdecINee16LXqNeb15XXqiDXp9eZ15PXldeTINep15XXoNeV16o7INeQ15XXnNedINeb15wg15DXmdee16og16nXoNeq15XXoNeZ150g16LXldeR16jXmdedINeR15nXnyDXntei16jXm9eV16og16fXmdeT15XXkyDXkNeVINek15zXmNek15XXqNee15XXqiDXqdeV16DXldeqINen15nXmdedINeU16HXmdeb15XXnyDXqdeZ15nXpNeS157XlS4KKwor15nXldeg15nXp9eV15Mg157Xqdeg15Qg15DXqiDXm9ecINeW15QhCivXmdeV16DXmden15XXkyDXnten16bXlCDXnteh16TXqCDXmdeZ15fXldeT15kg15zXm9ecINeq15UsINec15zXkCDXqtec15XXqiDXkdek15zXmNek15XXqNee15QsINeR16rXldeb16DXmdeqLCDXkNeVINeR16nXpNeULiDXqten158g15TXmdeV16DXmden15XXkyDXkNeV157XpSDXotecLdeZ15PXmSDXlNee15XXkdeZ15zXmdedINeR16rXotep15nXmdeUINeb157XlSBBcHBsZeKAjywgSFDigI8sIElCTeKAjywgSnVzdFN5c3RlbeKAjywgTWljcm9zb2Z04oCPLCBPcmFjbGXigI8sIFNBUOKAjywgU3Vu4oCPLCBTeWJhc2XigI8sIFVuaXN5c+KAjyDXldeo15HXmdedINeQ15fXqNeZ150uINeZ15XXoNeZ16fXldeTINeg15PXqNepINei15wt15nXk9eZINeq16fXoNeZ150g157XldeT16jXoNeZ15nXnSDXm9ee15UgWE1M4oCPLCBKYXZh4oCPLCBFQ01BU2NyaXB0IChKYXZhU2NyaXB0KeKAjuKAjywgTERBUOKAjywgQ09SQkEgMy4w4oCO4oCPLCBXTUzigI8g15XXm9eT15XXnteULCDXldee15TXldeV15Qg15zXntei16nXlCDXkNeqINeU15nXmdep15XXnSDXlNeo16nXnteZINep15wg16rXp9efIElTTy9JRUMgMTA2NDYuINeU15XXkCDXoNeq157XmiDXotecINeZ15PXmSDXntei16jXm9eV16og15TXpNei15zXlCDXqNeR15XXqiwg15vXnCDXlNeT16TXk9ek16DXmdedINeU15fXk9eZ16nXmdedLCDXldee15XXpteo15nXnSDXqNeR15nXnSDXkNeX16jXmdedLiDXlNeV16TXoteqINeq16fXnyDXlNeZ15XXoNeZ16fXldeTINeV15bXnteZ16DXldeqINeU15vXnNeZ150g15TXqteV157Xm9eZ150g15HXlSDXoNee16DXldeqINei150g15TXnteS157XldeqINeU15vXnNecLdei15XXnNee15nXldeqINeU15fXqdeV15HXldeqINeR15nXldeq16gsINeQ16nXqCDXnteh16rXnteg15XXqiDXnNeQ15fXqNeV16DXlCDXkdeY15vXoNeV15zXldeS15nXmdeqINeU16rXldeb16DXlC4KKwor16nXmdec15XXkSDXmdeV16DXmden15XXkyDXkdeZ15nXqdeV157XmSDXqdeo16ot15zXp9eV15cg15DXlSDXkdeZ15nXqdeV157XmdedINeo15HXmS3Xqdeb15HXldeqINeV15HXkNeq16jXmSDXkNeZ16DXmNeo16DXmCDXnteQ16TXqdeoINeX15nXodeb15XXnyDXoNeZ15vXqCDXkdei15zXldeZ15XXqiDXnNei15XXnteqINeU16nXmdee15XXqSDXkdeh15PXqNeV16og15TXqteV15XXmdedINeU157XodeV16jXqteZ15XXqi4g15TXldeT15XXqiDXnNeZ15XXoNeZ16fXldeTLCDXnteV16bXqCDXqteV15vXoNeUINeQ15fXkyDXkNeVINeQ16rXqCDXmdeX15nXkyDXkdeo16nXqiDXmdeb15XXnCDXnNeU16jXl9eZ15Eg15DXqiDXmdei15PXmdeVINec157XkteV15XXnyDXpNec15jXpNeV16jXnteV16osINeQ16jXpteV16og15XXqdek15XXqiDXnNec15Ag16bXldeo15og15HXqdeZ16DXldeZ15nXnSDXnteo15fXmden15nXnS4g15nXldeg15nXp9eV15Mg157XkNek16nXqCDXntei15HXqCDXoNeq15XXoNeZ150g15PXqNeaINee16LXqNeb15XXqiDXqNeR15XXqiDXldep15XXoNeV16og157Xkdec15kg16nXmdeZ16TXktee15UuCisKK9ek16jXmNeZ150g15DXldeT15XXqiDXlNen15XXoNeh15XXqNem15nXldedINep15wg15nXldeg15nXp9eV15MgKFVuaWNvZGUgQ29uc29ydGl1bSkgCivXlNen15XXoNeh15XXqNem15nXldedINep15wg15nXldeg15nXp9eV15Mg15TXldeQINeQ16jXkteV158g15zXnNeQINee15jXqNeqINeo15XXldeXINep16DXldeh15Mg15vXk9eZINec16TXqteXLCDXnNeU16jXl9eZ15Eg15XXnNen15PXnSDXkNeqINeU16nXmdee15XXqSDXkdeq16fXnyDXmdeV16DXmden15XXkywg15DXqdeoINee15LXk9eZ16gg15DXqiDXmdeZ16bXldeSINeU15jXp9eh15gg15HXnteV16bXqNeZINeq15XXm9eg15Qg15XXqten16DXmdedINee15XXk9eo16DXmdeZ150uINeX15HXqNeZ150g15HXp9eV16DXodeV16jXpteZ15XXnSDXnteS15XXldefINeo15fXkSDXqdecINeq15DXkteZ15PXmdedINeV15DXqNeS15XXoNeZ150g15HXqtei16nXmdeZ16og15TXnteX16nXkdeZ150g15XXoteZ15HXldeTINeU157XmdeT16IuINeU16fXldeg16HXldeo16bXmdeV150g157XnteV157XnyDXotecLdeZ15PXmSDXk9ee15kt15fXkdeoINeR15zXkdeTLiDXlNeX15HXqNeV16og15HXp9eV16DXodeV16jXpteZ15XXnSDXmdeV16DXmden15XXkyDXpNeq15XXl9eUINec15DXqNeS15XXoNeZ150g15XXnNeQ16DXqdeZ150g16TXqNeY15nXmdedLCDXkdeb15wg16jXl9eR15kg15TXoteV15zXnSwg15DXqdeoINeq15XXnteb15nXnSDXkdeq16fXnyDXmdeV16DXmden15XXkyDXldee16LXldeg15nXmdeg15nXnSDXnNeh15nXmdeiINeR15TXqtek16rXl9eV16rXlSDXldeU15jXntei16rXlS4KKwor15zXnteZ15PXoiDXoNeV16HXoywg16jXkNeUINee15nXnNeV158g157Xldeg15fXmdedLCDXqNep15nXnteUINeX15zXp9eZ16og16nXnCDXnteV16bXqNeZ150g157Xldeq15DXnteZ150g15zXmdeV16DXmden15XXkywg157XkdeV15Ag15jXm9eg15kg15UtINeX15XXnteo15kg16LXlteoIFvXp9eZ16nXldeo15nXnSDXkdeQ16DXktec15nXql0uCisKK0BTRVQgW1s6SGVicmV3Ol0gW1x1MDVCMC1cdTA1QjlcdTA1QkItXHUwNUJDXHUwNUMxLVx1MDVDMlx1MjEzNS1cdTIxMzhdXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby90cmFuc2xpdC9UZXN0X0luc3RydWN0aW9ucy5odG1sIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL3RyYW5zbGl0L1Rlc3RfSW5zdHJ1Y3Rpb25zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDYxNjVkOQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby90cmFuc2xpdC9UZXN0X0luc3RydWN0aW9ucy5odG1sCkBAIC0wLDAgKzEsMTcwIEBACis8IS0tIAorLyoqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby90cmFuc2xpdC9UZXN0X0luc3RydWN0aW9ucy5odG1sLHYgJAorICogJERhdGU6IDIwMDIvMTIvMTggMDE6NDU6NDkgJAorICogJFJldmlzaW9uOiAxLjIgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKy0tPgorPGh0bWw+CisKKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1MYW5ndWFnZSIgY29udGVudD0iZW4tdXMiPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9d2luZG93cy0xMjUyIj4KKzxtZXRhIG5hbWU9IkdFTkVSQVRPUiIgY29udGVudD0iTWljcm9zb2Z0IEZyb250UGFnZSA0LjAiPgorPG1ldGEgbmFtZT0iUHJvZ0lkIiBjb250ZW50PSJGcm9udFBhZ2UuRWRpdG9yLkRvY3VtZW50Ij4KKzx0aXRsZT5OZXcgVHJhbnNsaXRlcmF0aW9uIFRlc3QgRmlsZXM8L3RpdGxlPgorPC9oZWFkPgorCis8Ym9keSBiZ2NvbG9yPSIjRkZGRkZGIj4KKworPGgyPk5ldyBUcmFuc2xpdGVyYXRpb24gVGVzdCBGaWxlczwvaDI+Cis8cD5UaGUgVGVzdF8qLmh0bWwgZmlsZXMgc2hvdyB0aGUgdHJhbnNsaXRlcmF0aW9uIG9mIGNoYXJhY3RlcnMgZm9yIGdpdmVuCitsYW5ndWFnZXMuIFRoZSBzYW1wbGUgZm9yIGVhY2ggbGFuZ3VhZ2UgY29uc2lzdHMgb2YgJnF1b3Q7V2hhdCBJcyBVbmljb2RlJnF1b3Q7CitpbiBUaGFpLCBmb2xsb3dlZCBieSBvdGhlciBhdmFpbGFibGUgdGV4dC4gVGhlIHRleHQgaXMgYnJva2VuIGFwYXJ0IGludG8KK3NlbnRlbmNlcyBmb3IgZWFzZSBvZiB2aWV3aW5nIChub3RlOiB3ZSBrbm93IG9mIHNvbWUgcHJvYmxlbXMgd2l0aCB0aGUgc2VudGVuY2UKK3J1bGVzIGZvciBKYXBhbmVzZSBhbmQgQ2hpbmVzZSkuIFRoZSBsZWZ0IGNvbHVtbiBpcyB0aGUgb3JpZ2luYWwsIGFuZCB0aGUgcmlnaHQKK2lzIHRoZSByb21hbml6YXRpb24uIFRoZSBwcm9ncmFtIGFsc28gY29udmVydHMgYmFjayB0byB0aGUgb3JpZ2luYWwgc2NyaXB0LiBJZgordGhlcmUgaXMgYSBkaXNjcmVwYW5jeSBiZXR3ZWVuIHRoZSBzb3VyY2UgYW5kIHRoZSByZXZlcnNlIHRyYW5zZm9ybWF0aW9uLCB0aGF0CitpcyBpbmRpY2F0ZWQgYnkgbWFraW5nIHRoZSBiYWNrZ3JvdW5kIDxmb250IGNvbG9yPSIjRkYwMDAwIj48Yj5yZWQ8L2I+PC9mb250PgorZnJvbSB0aGF0IHBvaW50IG9uLjwvcD4KKzxibG9ja3F1b3RlPgorICA8cD48aT48Yj5Ob3RlOiA8L2I+SWYgeW91IGhhdmUgc29tZSBtb3JlIHRleHQgdGhhdCB5b3Ugd291bGQgbGlrZSBhZGRlZCB0byB0aGUKKyAgc2FtcGxlLCBqdXN0IGxldCBtZSBrbm93LiBJIGFtIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIG5hbWUgbGlzdHMsIHNpbmNlCisgIHRoZXkgYXJlIHRoZSB0eXBpY2FsIHNvdXJjZS48L2k+PC9wPgorPC9ibG9ja3F1b3RlPgorPGgzPlN0YW5kYXJkczwvaDM+Cis8cD5UaGUgZ29hbCBpcyB0byBmb2xsb3cgYSBnaXZlbiBzdGFuZGFyZCwgc3VjaCBhcyBJU08qIG9yIFVOR0VHTiB3aGVyZXZlcgorcG9zc2libGUuIFdlIGFsc28gbmVlZCB0byByb3VuZC10cmlwLCBzbyBpbiBzb21lIGNhc2VzLCB0aGF0IG1lYW5zIGFkZGluZyBzb21lCithZGRpdGlvbmFsIGFjY2VudCBtYXJrcyB0byBkaXNhbWJpZ3VhdGUgY2hhcmFjdGVycy4gQW5kIG9mdGVuIHRoZSBzb3VyY2UKK3N0YW5kYXJkcyBhcmUgbWlzc2luZyBzb21lIGNoYXJhY3RlcnMsIHN1Y2ggYXMgY2hhcmFjdGVycyB3aXRoIGNvbWJpbmluZyBIYW16YXMKK2luIEFyYWJpYy4gUmVtZW1iZXIgdGhhdCB0aGUgZ29hbCBmb3IgdGhlc2UgaXMgdHJhbnNsaXRlcmF0aW9uICh1bmFtYmlndW91c2x5CityZXByZXNlbnRpbmcgYWxsIHRoZSBsZXR0ZXJzIGluIHRoZSBvcmlnaW5hbCksIG5vdCB0cmFuc2NyaXB0aW9uIChyZXByZXNlbnRpbmcKK3RoZSBiZXN0IHByb251bmNpYXRpb24pLjwvcD4KKzx1bD4KKyAgPGxpPjxiPjxhIGhyZWY9IlRlc3RfVGhhaS1MYXRpbi5odG1sIj5UaGFpPC9hPjo8L2I+IElTTyAxMTk0MCAmbHQ7IDxhIGhyZWY9Imh0dHA6Ly9ob21lcGFnZS5tYWMuY29tL3NpcmJpbmtzL3BkZi9UaGFpLnIyLnBkZiI+aHR0cDovL2hvbWVwYWdlLm1hYy5jb20vc2lyYmlua3MvcGRmL1RoYWkucjIucGRmPC9hPgorICAgICZndDsgcGx1cyBhIGZldyBpdGVtczoKKyAgICA8dWw+CisgICAgICA8bGk+QWNjZW50cyBtYXkgYmUgYWRkZWQgdG8gdGhlIExhdGluIGZvciBkaXNhbWJpZ3VhdGlvbi48L2xpPgorICAgICAgPGxpPkluIHRoZSBuZXh0IHJlbGVhc2UsIHdlJ2QgbGlrZSB0byBkbyB0aGUgVU5HRUdOIHZlcnNpb24gJmx0OyA8YSBocmVmPSJodHRwOi8vd3d3LmVraS5lZS93Z3JzL3JvbTFfdGgucGRmIj5odHRwOi8vd3d3LmVraS5lZS93Z3JzL3JvbTFfdGgucGRmPC9hPgorICAgICAgICAmZ3Q7IHdoaWNoIGlzIHByb2JhYmx5IG1vcmUgdXNlZnVsIChhbmQgcmVhZGFibGUpLCBhbmQgZm9sbG93cyBtb3JlCisgICAgICAgIGNsb3NlbHkgdGhlIFRoYWkgc3RhbmRhcmQuPC9saT4KKyAgICAgIDxsaT5TcGFjZXMgYXJlIHByb3ZpZGVkIGF0IHdvcmQtYnJlYWtzLCB1c2luZyB0aGUgVGhhaSBCcmVha0l0ZXJhdG9yLjwvbGk+CisgICAgICA8bGk+QW4gaW5oZXJlbnQgdm93ZWwgKCYjNzg4NTspIGlzIGFkZGVkLCBhcyBpbiBVTkdFR04uIFRoZSBkb3QgaXMgZm9yCisgICAgICAgIGRpc2FtYmlndWF0aW9uLgorICAgICAgICA8dWw+CisgICAgICAgICAgPGxpPjxpPk5vdGU6IGlmIHRoZSBpbmhlcmVudCB2b3dlbCBwb3NpdGlvbnMgY2Fubm90IGJlIGFsZ29yaXRobWljYWxseQorICAgICAgICAgICAgZGV0ZXJtaW5lZCwgbGV0IG1lIGtub3cgYW5kIEkgd2lsbCByZW1vdmUgdGhlbS48L2k+PC9saT4KKyAgICAgICAgPC91bD4KKyAgICAgIDwvbGk+CisgICAgPC91bD4KKyAgPC9saT4KKyAgPGxpPjxiPjxhIGhyZWY9IlRlc3RfQXJhYmljLUxhdGluLmh0bWwiPkFyYWJpYzwvYT46IDwvYj5HZW5lcmFsbHkgZm9sbG93cworICAgIFVOR0VHTiAmbHQ7IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWtpLmVlL3dncnMvcm9tMV9hci5wZGYiPmh0dHA6Ly93d3cuZWtpLmVlL3dncnMvcm9tMV9hci5wZGY8L2E+CisgICAgJmd0OworICAgIDx1bD4KKyAgICAgIDxsaT5BY2NlbnRzIG1heSBiZSBhZGRlZCB0byB0aGUgTGF0aW4gZm9yIGRpc2FtYmlndWF0aW9uLjwvbGk+CisgICAgICA8bGk+T2NjYXNpb25hbGx5IGRldmlhdGVzIGluIHRoZSBkaXJlY3Rpb24gb2YgSVNPIDIzMyAmbHQ7IDxhIGhyZWY9Imh0dHA6Ly9ob21lcGFnZS5tYWMuY29tL3NpcmJpbmtzL3BkZi9BcmFiaWMucGRmIj5odHRwOi8vaG9tZXBhZ2UubWFjLmNvbS9zaXJiaW5rcy9wZGYvQXJhYmljLnBkZjwvYT4KKyAgICAgICAgJmd0OworICAgICAgICA8dWw+CisgICAgICAgICAgPGxpPndpdGggdW5kZXJkb3QgaW5zdGVhZCBvZiBjZWRpbGxhIGZvciBsZXR0ZXIgbGlrZSBTQUQsIHNpbmNlIHRob3NlCisgICAgICAgICAgICBhcmUgZXhwbGljaXRseSBpbiBVbmljb2RlIGZvciB0cmFuc2xpdGVyYXRpb24gb2YgQXJhYmljPC9saT4KKyAgICAgICAgICA8bGk+YWRkaW5nIGV4dHJhIG5vbi1BcmFiaWMtbGFuZ3VhZ2UgbGV0dGVycywgbGlrZSBQRUguIE5vdGU6IG5vdCBhbGwKKyAgICAgICAgICAgIGV4dGVuZGVkIEFyYWJpYyBjaGFyYWN0ZXJzIGFyZSBoYW5kbGVkIHlldC48L2xpPgorICAgICAgICA8L3VsPgorICAgICAgPC9saT4KKyAgICAgIDxsaT5Eb2VzIDxpPm5vdDwvaT4gZG8gYXNzaW1pbGF0aW9uIG9mICZxdW90O2FsJnF1b3Q7LCBub3IgaHlwaGVuYXRpb24gb2YKKyAgICAgICAgaXQuCisgICAgICAgIDx1bD4KKyAgICAgICAgICA8bGk+V2hpbGUgaXQgY291bGQgYmUgZG9uZSwgd2UgbmVlZCB0byBkZXRlcm1pbmUgd2hldGhlciBhIHByZWZpeAorICAgICAgICAgICAgJnF1b3Q7YWwmcXVvdDsgY291bGQgb2NjdXIgb3RoZXIgdGhhbiBhcyB0aGUgZGVmaW5pdGUgYXJ0aWNsZSAoc2luY2UKKyAgICAgICAgICAgIG5vIHNwYWNlIGlzIHVzZWQpLjwvbGk+CisgICAgICAgIDwvdWw+CisgICAgICA8L2xpPgorICAgICAgPGxpPlRoaXMgaXMgdHJhbnNsaXRlcmF0aW9uLiBGb3IgPGk+dHJhbnNjcmlwdGlvbjwvaT4gb25lIHdvdWxkIHdhbnQgYW4KKyAgICAgICAgZW5naW5lIHRoYXQgYWRkZWQgcG9pbnRzIGFwcHJvcHJpYXRlbHkgdG8gdGhlIEhlYnJldy48L2xpPgorICAgIDwvdWw+CisgIDwvbGk+CisgIDxsaT48Yj48YSBocmVmPSJUZXN0X0hlYnJldy1MYXRpbi5odG1sIj5IZWJyZXc8L2E+PC9iPjxiPjogPC9iPkdlbmVyYWxseQorICAgIGZvbGxvd3MgVU5HRUdOICZsdDsgPGEgaHJlZj0iaHR0cDovL3d3dy5la2kuZWUvd2dycy9yb20xX2hlLnBkZiI+aHR0cDovL3d3dy5la2kuZWUvd2dycy9yb20xX2hlLnBkZjwvYT4KKyAgICAmZ3Q7LCB3aXRoIHNvbWUgZXhjZXB0aW9uczoKKyAgICA8dWw+CisgICAgICA8bGk+QWNjZW50cyBtYXkgYmUgYWRkZWQgdG8gdGhlIExhdGluIGZvciBkaXNhbWJpZ3VhdGlvbi48L2xpPgorICAgICAgPGxpPkNvbWJpbmF0aW9ucyBvZiBkYWdlc2gsIHNoaW4vc2luIGRvdCB0aGF0IHdvdWxkIHByb2R1Y2UgZGlmZmVyZW50CisgICAgICAgIGxldHRlcnMgYXJlIG5vdCB5ZXQgY2FsbGVkIG91dC48L2xpPgorICAgICAgPGxpPk5vdGUgdGhhdCB0aGUgZmluYWwgZm9ybXMgYXJlIG5vdCBwcmVzZXJ2ZWQuIFRodXMsIHdoZW4gZ29pbmcgZnJvbQorICAgICAgICBMYXRpbiB0byBIZWJyZXcsIGEgY2hhcmFjdGVyIGlzIGdpdmVuIGZpbmFsIGZvcm0gZGVwZW5kaW5nIG9uIGl0cworICAgICAgICBwb3NpdGlvbi4KKyAgICAgICAgPHVsPgorICAgICAgICAgIDxsaT5FLmcuICYjMTUwMjsmIzE1MDE7JiMxNTAyOyYjMTUwMTsgPSZndDsgbW1tbSA9Jmd0OworICAgICAgICAgICAgJiMxNTAyOyYjMTUwMjsmIzE1MDI7JiMxNTAxOzwvbGk+CisgICAgICAgIDwvdWw+CisgICAgICA8L2xpPgorICAgICAgPGxpPlRoaXMgaXMgdHJhbnNsaXRlcmF0aW9uLiBGb3IgPGk+dHJhbnNjcmlwdGlvbjwvaT4gb25lIHdvdWxkIHdhbnQgYW4KKyAgICAgICAgZW5naW5lIHRoYXQgYWRkZWQgcG9pbnRzIGFwcHJvcHJpYXRlbHkgdG8gdGhlIEhlYnJldy48L2xpPgorICAgICAgPGxpPlNlZSBhbHNvICZsdDsgPGEgaHJlZj0iaHR0cDovL2hvbWVwYWdlLm1hYy5jb20vc2lyYmlua3MvcGRmL0hlYnJldy5yMS5wZGYiPmh0dHA6Ly9ob21lcGFnZS5tYWMuY29tL3NpcmJpbmtzL3BkZi9IZWJyZXcucjEucGRmPC9hPgorICAgICAgICAmZ3Q7IGZvciB0aGUgSVNPIHZlcnNpb24uIFRoZSBDaGljYWdvIE1hbnVhbCBvZiBTdHlsZSBoYXMgYSBjbGVhciB0YWJsZQorICAgICAgICBvZiBtYXBwaW5ncyBmb3IgdGhlIHZvd2VsIG1hcmtzLjwvbGk+CisgICAgPC91bD4KKyAgPC9saT4KKyAgPGxpPjxiPjxhIGhyZWY9IlRlc3RfSGFuLUxhdGluLmh0bWwiPkhhbjwvYT46PC9iPiBVc2VzIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3Lm1hbmRhcmludG9vbHMuY29tL2NlZGljdC5odG1sIj5DRURJQ1Q8L2E+CisgICAgZGF0YSBwbHVzIFVuaWNvZGUgVW5paGFuIDxpPmtNYW5kYXJpbjwvaT4gdmFsdWVzIGZvciBwaW55aW4uIERvZXNuJ3QKKyAgICByb3VuZHRyaXAhCisgICAgPHVsPgorICAgICAgPGxpPjxpPk5vdGU6IDwvaT50aGUgQ2hpbmVzZSBwcm9udW5jaWF0aW9uIG9mIEhhbiBjaGFyYWN0ZXJzIHZhcmllcyBieQorICAgICAgICBjb250ZXh0IGFuZCBncmFtbWFyLCB0aG91Z2ggbm93aGVyZSBuZWFyIGFzIG11Y2ggYSBKYXBhbmVzZS4KKyAgICAgICAgPHVsPgorICAgICAgICAgIDxsaT5JZGVhbGx5IHdlJ2QgaGF2ZSBhbiB1bmRlcmx5aW5nIGVuZ2luZSBmb3IgdGhpcy4gSW4gMi40IHdlIHdpbGwKKyAgICAgICAgICAgIGhhdmUgYSBwbHVnLWluIGludGVyZmFjZSBzbyB0aGF0IHBlb3BsZSBjb3VsZCBhZGQgb25lLCBzdWNoIGFzIHRoZQorICAgICAgICAgICAgSUJNIGVuZ2luZS48L2xpPgorICAgICAgICAgIDxsaT5UaGUgZGF0YSBmcm9tIENFRElDVCBhbmQgVW5paGFuIGRvbid0IGxpc3QgdGhlIG1vc3QgZnJlcXVlbnQKKyAgICAgICAgICAgIGNob2ljZSBmaXJzdCwgc28gd2Ugd2lsbCBiZSB1cGRhdGluZyB0aGF0LjwvbGk+CisgICAgICAgIDwvdWw+CisgICAgICA8L2xpPgorICAgIDwvdWw+CisgIDwvbGk+CisgIDxsaT48YSBocmVmPSJUZXN0X0dyZWVrLUxhdGluX1VOR0VHTi5odG1sIj48Yj5HcmVlay9VTkdFR048L2I+PC9hPjogVXNlcyBhCisgICAgbW9kZXJuIEdyZWVrIHRyYW5zbGl0ZXJhdGlvbiwgYmFzZWQgb24gdGhlIFVOR0VHTiBydWxlcyBhdCAmbHQ7IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWtpLmVlL3dncnMvcm9tMV9lbC5wZGYiPmh0dHA6Ly93d3cuZWtpLmVlL3dncnMvcm9tMV9lbC5wZGY8L2E+CisgICAgJmd0Oy4gVGhpcyB2ZXJzaW9uIHdpbGwgbm90IHJvdW5kdHJpcCBhbmNpZW50IEdyZWVrLjwvbGk+CisgIDxsaT48YSBocmVmPSJUZXN0X0dyZWVrLUxhdGluLmh0bWwiPjxiPkdyZWVrPC9iPjwvYT46IFVzZXMgYSBjbGFzc2ljIEdyZWVrCisgICAgdHJhbnNsaXRlcmF0aW9uLiBUaGlzIHZlcnNpb24gd2lsbCBub3Qgcm91bmR0cmlwIG1vZGVybiBHcmVlay48L2xpPgorPC91bD4KKzxoMz48Yj5Ob3RlczwvYj48L2gzPgorPG9sPgorICA8bGk+Rm9yIHJlYWRhYmlsaXR5LCB0aGUgZmlsZXMgaGF2ZSBhIGZldyBvdGhlciB0aGluZ3MgYmVzaWRlcyBqdXN0IHRoZQorICAgIHRyYW5zbGl0ZXJhdGlvbjoKKyAgICA8dWw+CisgICAgICA8bGk+VGhlIGZpcnN0IHdvcmQgb2YgdGhlIHNlbnRlbmNlcyBhcmUgdGl0bGVjYXNlZCwgYXMgYXJlIG5hbWVzICh3aGVyZSB3ZQorICAgICAgICBoYXZlIGEgbmFtZS1saXN0LCBzdWNoIGFzIGluIFRoYWkpLjwvbGk+CisgICAgICA8bGk+VGhlIExhdGluIGluIHRoZSBvcmlnaW5hbCBpcyBtYXBwZWQgdG8gdGhlIHByaXZhdGUtdXNlIHpvbmUgYmVmb3JlCisgICAgICAgIGNvbnZlcnNpb24sIGFuZCB0aGVuIGFnYWluIGFmdGVyIGNvbnZlcnNpb24uIFRoaXMgZG9lcyBoYXZlIHRoZSBkb3duc2lkZQorICAgICAgICB0aGF0IGFueSBydWxlcyAoc3VjaCBhcyBpbiBIYW4pIHRoYXQgbmVlZCB0byBrbm93IHRoZSBjb250ZXh0IChlLmcuIGZvcgorICAgICAgICBpbnNlcnRpbmcgc3BhY2VzIG9yIGNhcGl0YWxpemF0aW9uKSB3aWxsIGd1bSB1cCBhIGxpdHRsZSBiaXQuIFRoaXMgaXMKKyAgICAgICAganVzdCBhbiBhcnRpZmFjdCBvZiB0aGUgdGVzdCBkaXNwbGF5LjwvbGk+CisgICAgPC91bD4KKyAgPC9saT4KKyAgPGxpPkkgZG9uJ3QgdGhpbmsgdGhhdCBJU08gMTE5NDAgaXMgYSBwYXJ0aWN1bGFybHkgZ29vZCB3YXkgdG8gcm9tYW5pemUsIGJ1dAorICAgIGl0IGlzIGF0IGxlYXN0IGNvbXBsZXRlIGFuZCBhIHN0YW5kYXJkLiBTbyB3aGF0IEkgYW0gaW50ZXJlc3RlZCBpbiBqdXN0IGZvcgorICAgIG5vdyBpcyB3aGV0aGVyIHRoZSBzYW1wbGVzIGluIHRoZSBmaWxlIGZvbGxvdyBpdCAod2l0aCB0aGUgYWJvdmUKKyAgICBleGNlcHRpb25zKS48L2xpPgorICA8bGk+U29tZSBvZiB0aGUgZmlsZXMgYWxzbyBoYXZlIGEgc2V0IG9mIGNoYXJhY3RlcnMgYXQgdGhlIGVuZCwgb25lIGNoYXJhY3RlcgorICAgIHBlciByb3csIHdpdGggYSBmb2xsb3dpbmcgcm93IGxpc3RpbmcgdGhlIGhleCBhbmQgbmFtZS48L2xpPgorICA8bGk+VGhlIHNvdXJjZSBydWxlcyBmb3IgYWxsIG9mIHRoZXNlIGlzIGluIHRoZSBmb2xsb3dpbmcgVVJMLiBTbyBpZiB5b3Ugd2FudAorICAgIHRvIGtub3cgdGhlIGRldGFpbHMgb2YgaG93IHRoZSBjaGFyYWN0ZXJzIGFyZSBoYW5kbGVkLCB0aGF0IGlzIHRoZSBwbGFjZSB0bworICAgIGxvb2suCisgICAgPHVsPgorICAgICAgPGxpPiZuYnNwOzxhIGhyZWY9Imh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9jdnMvaWN1NGovaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS8iPmh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9jdnMvaWN1NGovaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS88L2E+PGJyPgorICAgICAgPC9saT4KKyAgICA8L3VsPgorICA8L2xpPgorPC9vbD4KKworPC9ib2R5PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vdHJhbnNsaXQvVGVzdF9UaGFpLUxhdGluLnR4dCBiL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby90cmFuc2xpdC9UZXN0X1RoYWktTGF0aW4udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4ZmY4MGUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vdHJhbnNsaXQvVGVzdF9UaGFpLUxhdGluLnR4dApAQCAtMCwwICsxLDczIEBACivvu78jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ29weXJpZ2h0IChjKSAxOTk5LTIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyMgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vdHJhbnNsaXQvVGVzdF9UaGFpLUxhdGluLnR4dCx2ICQKKyMgJERhdGU6IDIwMDIvMDcvMjYgMjA6MDk6MDEgJAorIyAkUmV2aXNpb246IDEuMSAkCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0BVUFBFUkZJTFRFUkAKK1VuaWNvZGUg4LiE4Li34Lit4Lit4Liw4LmE4LijPworVW5pY29kZSDguIHguLPguKvguJnguJTguKvguKHguLLguKLguYDguKXguILguYDguInguJ7guLLguLDguKrguLPguKvguKPguLHguJrguJfguLjguIHguK3guLHguIHguILguKPguLAKK+C5guC4lOC4ouC5hOC4oeC5iOC4quC4meC5g+C4iOC4p+C5iOC4suC5gOC4m+C5h+C4meC5geC4nuC4peC5h+C4leC4n+C4reC4o+C5jOC4oeC5g+C4lAor4LmE4Lih4LmI4LiC4Li24LmJ4LiZ4LiB4Lix4Lia4Lin4LmI4Liy4LiI4Liw4LmA4Lib4LmH4LiZ4LmC4Lib4Lij4LmB4LiB4Lij4Lih4LmD4LiUCivguYHguKXguLDguYTguKHguYjguKfguYjguLLguIjguLDguYDguJvguYfguJnguKDguLLguKnguLLguYPguJQKKwor4LmC4LiU4Lii4Lie4Li34LmJ4LiZ4LiQ4Liy4LiZ4LmB4Lil4LmJ4LinLCDguITguK3guKHguJ7guLTguKfguYDguJXguK3guKPguYzguIjguLDguYDguIHguLXguYjguKLguKfguILguYnguK3guIfguIHguLHguJrguYDguKPguLfguYjguK3guIfguILguK3guIfguJXguLHguKfguYDguKXguIIuIOC4hOC4reC4oeC4nuC4tOC4p+C5gOC4leC4reC4o+C5jOC4iOC4seC4lOC5gOC4geC5h+C4muC4leC4seC4p+C4reC4seC4geC4qeC4o+C5geC4peC4sOC4reC4seC4geC4guC4o+C4sOC4reC4t+C5iOC4meC5hiDguYLguJTguKLguIHguLLguKPguIHguLPguKvguJnguJTguKvguKHguLLguKLguYDguKXguILguYPguKvguYnguKrguLPguKvguKPguLHguJrguYHguJXguYjguKXguLDguJXguLHguKcuIOC4geC5iOC4reC4meC4q+C4meC5ieC4suC4l+C4teC5iOC5iiBVbmljb2RlIOC4iOC4sOC4luC4ueC4geC4quC4o+C5ieC4suC4h+C4guC4tuC5ieC4mSwg4LmE4LiU4LmJ4Lih4Li14Lij4Liw4Lia4LiaIGVuY29kaW5nIOC4reC4ouC4ueC5iOC4q+C4peC4suC4ouC4o+C5ieC4reC4ouC4o+C4sOC4muC4muC4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C4geC4s+C4q+C4meC4lOC4q+C4oeC4suC4ouC5gOC4peC4guC5gOC4q+C4peC5iOC4suC4meC4teC5iS4g4LmE4Lih4LmI4Lih4Li1IGVuY29kaW5nIOC5g+C4lOC4l+C4teC5iOC4oeC4teC4iOC4s+C4meC4p+C4meC4leC4seC4p+C4reC4seC4geC4guC4o+C4sOC4oeC4suC4geC5gOC4nuC4teC4ouC4h+C4nuC4rTog4Lii4LiB4LiV4Lix4Lin4Lit4Lii4LmI4Liy4LiH4LmA4LiK4LmI4LiZLCDguYDguInguJ7guLLguLDguYPguJnguIHguKXguLjguYjguKHguKrguKvguKDguLLguJ7guKLguLjguYLguKPguJvguYDguJ7guLXguKLguIfguYHguKvguYjguIfguYDguJTguLXguKLguKcg4LiB4LmH4LiV4LmJ4Lit4LiH4LiB4Liy4Lij4Lir4Lil4Liy4LiiIGVuY29kaW5nIOC5g+C4meC4geC4suC4o+C4hOC4o+C4reC4muC4hOC4peC4uOC4oeC4l+C4uOC4geC4oOC4suC4qeC4suC5g+C4meC4geC4peC4uOC5iOC4oS4g4Lir4Lij4Li34Lit4LmB4Lih4LmJ4LmB4LiV4LmI4LmD4LiZ4Lig4Liy4Lip4Liy4LmA4LiU4Li14LmI4Lii4LinIOC5gOC4iuC5iOC4mSDguKDguLLguKnguLLguK3guLHguIfguIHguKTguKkg4LiB4LmH4LmE4Lih4LmI4Lih4Li1IGVuY29kaW5nIOC5g+C4lOC4l+C4teC5iOC5gOC4nuC4teC4ouC4h+C4nuC4reC4quC4s+C4q+C4o+C4seC4muC4l+C4uOC4geC4leC4seC4p+C4reC4seC4geC4qeC4oywg4LmA4LiE4Lij4Li34LmI4Lit4LiH4Lir4Lih4Liy4Lii4Lin4Lij4Lij4LiE4LiV4Lit4LiZIOC5geC4peC4sOC4quC4seC4jeC4peC4seC4geC4qeC4k+C5jOC4l+C4suC4h+C5gOC4l+C4hOC4meC4tOC4hOC4l+C4teC5iOC5g+C4iuC5ieC4geC4seC4meC4reC4ouC4ueC5iOC4l+C4seC5iOC4p+C5hOC4my4gCisKK+C4o+C4sOC4muC4miBlbmNvZGluZyDguYDguKvguKXguYjguLLguJnguLXguYnguKLguLHguIfguILguLHguJTguYHguKLguYnguIfguIvguLbguYjguIfguIHguLHguJnguYHguKXguLDguIHguLHguJkuIOC4meC4seC5iOC4meC4geC5h+C4hOC4t+C4rSwg4LmD4LiZ4Liq4Lit4LiHIGVuY29kaW5nIOC4quC4suC4oeC4suC4o+C4luC5g+C4iuC5ieC4q+C4oeC4suC4ouC5gOC4peC4guC5gOC4lOC4teC4ouC4p+C4geC4seC4meC4quC4s+C4q+C4o+C4seC4muC4leC4seC4p+C4reC4seC4geC4guC4o+C4sOC4quC4reC4h+C4leC4seC4p+C4l+C4teC5iOC5geC4leC4geC4leC5iOC4suC4h+C4geC4seC4mSzguKvguKPguLfguK3guYPguIrguYnguKvguKHguLLguKLguYDguKXguILguJXguYjguLLguIfguIHguLHguJnguKrguLPguKvguKPguLHguJrguK3guLHguIHguILguKPguLDguJXguLHguKfguYDguJTguLXguKLguKfguIHguLHguJkuIOC5g+C4meC4o+C4sOC4muC4muC4hOC4reC4oeC4nuC4tOC4p+C5gOC4leC4reC4o+C5jCAo4LmC4LiU4Lii4LmA4LiJ4Lie4Liy4Liw4LmA4LiL4Li04Lij4LmM4Lif4LmA4Lin4Lit4Lij4LmMKSDguJXguYnguK3guIfguKHguLXguIHguLLguKPguKrguJnguLHguJrguKrguJnguLjguJnguKvguKXguLLguKIgZW5jb2Rpbmc7IOC5geC4peC4sOC5gOC4oeC4t+C5iOC4reC4guC5ieC4reC4oeC4ueC4peC4l+C4teC5iOC4nOC5iOC4suC4meC5hOC4m+C4oeC4suC4o+C4sOC4q+C4p+C5iOC4suC4h+C4geC4suC4o+C5gOC4guC5ieC4suC4o+C4q+C4seC4quC4q+C4o+C4t+C4reC5geC4nuC4peC5h+C4leC4n+C4reC4o+C5jOC4oeC4l+C4teC5iOC4leC5iOC4suC4h+C4geC4seC4mSwg4LiC4LmJ4Lit4Lih4Li54Lil4LiZ4Lix4LmJ4LiZ4LiI4Liw4LmA4Liq4Li14LmI4Lii4LiH4LiV4LmI4Lit4LiB4Liy4Lij4Lic4Li04LiU4Lie4Lil4Liy4LiU4LmA4Liq4Li14Lii4Lir4Liy4LiiLgorCitVbmljb2RlIOC4iOC4sOC5gOC4m+C4peC4teC5iOC4ouC4meC5geC4m+C4peC4h+C4quC4tOC5iOC4h+C5gOC4q+C4peC5iOC4suC4meC4seC5ieC4meC4l+C4seC5ieC4h+C4q+C4oeC4lCEKK1VuaWNvZGUg4LiB4Liz4Lir4LiZ4LiU4Lir4Lih4Liy4Lii4LmA4Lil4LiC4LmA4LiJ4Lie4Liy4Liw4Liq4Liz4Lir4Lij4Lix4Lia4LmB4LiV4LmI4Lil4Liw4Lit4Lix4LiB4LiC4Lij4LiwLCDguYLguJTguKLguYTguKHguYjguKrguJnguYPguIjguKfguYjguLLguYDguJvguYfguJnguYHguJ7guKXguYfguJXguJ/guK3guKPguYzguKHguYPguJQsIOC5hOC4oeC5iOC4guC4tuC5ieC4meC4geC4seC4muC4p+C5iOC4suC4iOC4sOC5gOC4m+C5h+C4meC5guC4m+C4o+C5geC4geC4o+C4oeC5g+C4lOC5geC4peC4sOC5hOC4oeC5iOC4p+C5iOC4suC4iOC4sOC5gOC4m+C5h+C4meC4oOC4suC4qeC4suC5g+C4lC4g4Lih4Liy4LiV4Lij4LiQ4Liy4LiZIFVuaWNvZGUg4LmE4LiU4LmJ4LiW4Li54LiB4LiZ4Liz4LmE4Lib4LmD4LiK4LmJ4LmC4LiU4Lii4Lic4Li54LmJ4LiZ4Liz4LmD4LiZ4Lit4Li44LiV4Liq4Liy4Lir4LiB4Lij4Lij4LihIOC5gOC4iuC5iOC4mSBBcHBsZSwgSFAsIElCTSwgSnVzdFN5c3RlbSwgTWljcm9zb2Z0LCBPcmFjbGUsIFNBUCwgU3VuLCBTeWJhc2UsIFVuaXN5cyDguYHguKXguLDguK3guLfguYjguJnguYYg4Lit4Li14LiB4Lih4Liy4LiBLiBVbmljb2RlIOC5gOC4m+C5h+C4meC4quC4tOC5iOC4h+C4l+C4teC5iOC4iOC4s+C5gOC4m+C5h+C4meC4quC4s+C4q+C4o+C4seC4muC4oeC4suC4leC4o+C4kOC4suC4meC5g+C4q+C4oeC5iOC5hiDguYDguIrguYjguJkgWE1MLCBKYXZhLCBFQ01BU2NyaXB0IChKYXZhU2NyaXB0KSwgTERBUCwgQ09SQkEgMy4wLCBXTUwg4Liv4Lil4LivLiwg4LmB4Lil4Liw4LmA4Lib4LmH4LiZ4LmB4LiZ4Lin4LiX4Liy4LiH4Lit4Lii4LmI4Liy4LiH4LmA4Lib4LmH4LiZ4LiX4Liy4LiH4LiB4Liy4Lij4LmD4LiZ4LiB4Liy4Lij4LiX4LizIElTTy9JRUMgMTA2NDYuIFVuaWNvZGUg4LmE4LiU4LmJ4Lij4Lix4Lia4LiB4Liy4Lij4Liq4LiZ4Lix4Lia4Liq4LiZ4Li44LiZ4LmD4LiZ4Lij4Liw4Lia4Lia4Lib4LiP4Li04Lia4Lix4LiV4Li04LiB4Liy4Lij4LiI4Liz4LiZ4Lin4LiZ4Lih4Liy4LiBLCDguJrguKPguLLguKfguYDguIvguK3guKPguYzguYPguKvguKHguYjguYYg4LiX4LiB4LiV4Lix4LinLCDguYHguKXguLDguJzguKXguLTguJXguKDguLHguJPguJHguYzguK3guLfguYjguJnguYYg4Lit4Li14LiB4Lih4Liy4LiBLiDguIHguLLguKPguYDguIHguLTguJTguILguLbguYnguJnguILguK3guIcgVW5pY29kZSBTdGFuZGFyZCDguYHguKXguLDguJfguLnguKXguKrguYzguJXguYjguLLguIfguYYg4LiX4Li14LmI4Lih4Li14LmD4LiZ4LiB4Liy4Lij4Liq4LiZ4Lix4Lia4Liq4LiZ4Li44LiZIFVuaWNvZGUsIOC5gOC4m+C5h+C4meC4q+C4meC4tuC5iOC4h+C5g+C4meC5geC4meC4p+C5guC4meC5ieC4oeC4l+C4suC4h+C5gOC4l+C4hOC5guC4meC5guC4peC4ouC4teC4i+C4reC4n+C4leC5jOC5geC4p+C4o+C5jOC4o+C4sOC4lOC4seC4muC5guC4peC4geC4l+C4teC5iOC4oeC4teC4hOC4p+C4suC4oeC4quC4s+C4hOC4seC4jeC4l+C4teC5iOC4quC4uOC4lC4KKwor4LiB4Liy4Lij4Lij4Lin4LihIFVuaWNvZGUg4LmA4LiC4LmJ4Liy4LmE4Lib4LmD4LiZ4Lij4Liw4Lia4Lia4LmE4LiE4Lil4LmA4Lit4LmH4LiZ4LiV4LmMLeC5gOC4i+C4tOC4o+C5jOC4n+C5gOC4p+C4reC4o+C5jCDguKvguKPguLfguK3guYHguK3guYfguJ7guJ7guKXguLTguYDguITguIrguLHguJnguYHguJrguJogbXVsdGktdGllcmVkIOC5geC4peC4sOC5gOC4p+C5h+C4muC5hOC4i+C4leC5jCDguIjguLDguJfguLPguYPguKvguYnguYDguIHguLTguJTguIHguLLguKPguJvguKPguLDguKvguKLguLHguJTguITguYjguLLguYPguIrguYnguIjguYjguLLguKLguKHguLLguIHguIHguKfguYjguLLguIHguLLguKPguYPguIrguYnguIrguLjguJTguK3guLHguIHguILguKPguLDguYHguJrguJrguYDguJTguLTguKEuIFVuaWNvZGUg4LiX4Liz4LmD4Lir4LmJ4Lic4Lil4Li04LiV4Lig4Lix4LiT4LiR4LmM4LiL4Lit4Lif4LiV4LmM4LmB4Lin4Lij4LmM4Lir4LiZ4Li24LmI4LiH4LmA4LiU4Li14Lii4LinIOC4q+C4o+C4t+C4reC5gOC4p+C5h+C4muC5hOC4i+C4leC5jOC5geC4q+C5iOC4h+C5gOC4lOC4teC4ouC4pyDguKPguK3guIfguKPguLHguJrguYTguJTguYnguKvguKXguLLguKLguYHguJ7guKXguYfguJXguJ/guK3guKPguYzguKEsIOC4q+C4peC4suC4ouC4oOC4suC4qeC4suC5geC4peC4sOC4q+C4peC4suC4ouC4m+C4o+C4sOC5gOC4l+C4qOC5guC4lOC4ouC5hOC4oeC5iOC4leC5ieC4reC4h+C4l+C4s+C4geC4suC4o+C4o+C4t+C5ieC4reC4m+C4o+C4seC4muC4o+C4sOC4muC4mi4gVW5pY29kZSDguKLguLHguIfguJfguLPguYPguKvguYnguILguYnguK3guKHguLnguKXguKrguLLguKHguLLguKPguJbguYDguITguKXguLfguYjguK3guJnguKLguYnguLLguKLguYTguJvguKHguLLguYPguJnguKvguKXguLLguKLguYYg4Lij4Liw4Lia4Lia4LmC4LiU4Lii4LmE4Lih4LmI4LmA4LiB4Li04LiU4LiE4Lin4Liy4Lih4Lic4Li04LiU4Lie4Lil4Liy4LiU4LmA4Liq4Li14Lii4Lir4Liy4LiiLgorCivguYDguIHguLXguYjguKLguKfguIHguLHguJogVW5pY29kZSBDb25zb3J0aXVtCitVbmljb2RlIENvbnNvcnRpdW0g4LmA4Lib4LmH4LiZ4Lit4LiH4LiE4LmM4LiB4Lij4LmE4Lih4LmI4LmB4Liq4Lin4LiH4Lir4Liy4LiB4Liz4LmE4Lij4LiX4Li14LmI4LiB4LmI4Lit4LiV4Lix4LmJ4LiH4LiC4Li24LmJ4LiZ4LmA4Lie4Li34LmI4Lit4Lie4Lix4LiS4LiZ4LiyLCDguILguKLguLLguKLguYHguKXguLDguKrguYjguIfguYDguKrguKPguLTguKHguIHguLLguKPguYPguIrguYkgVW5pY29kZSBTdGFuZGFyZCwg4LiL4Li24LmI4LiH4LiB4Liz4Lir4LiZ4LiU4Lij4Li54Lib4LmB4Lia4Lia4LiB4Liy4Lij4LmB4LiX4LiZ4LiE4LmI4Liy4LiC4Lit4LiH4LiC4LmJ4Lit4LiE4Lin4Liy4Lih4LmD4LiZ4Lic4Lil4Li04LiV4Lig4Lix4LiT4LiR4LmM4LiL4Lit4Lif4LiV4LmM4LmB4Lin4Lij4LmM4LmB4Lil4Liw4Lih4Liy4LiV4Lij4LiQ4Liy4LiZ4LmD4Lir4Lih4LmI4LmGLiDguKrguKHguLLguIrguLTguIHguILguK3guIfguKrguKHguLLguITguKHguYDguJvguYfguJnguJXguLHguKfguYHguJfguJnguIjguLLguIHguJrguKPguLTguKnguLHguJfguYHguKXguLDguK3guIfguITguYzguIHguKPguYPguJnguK3guLjguJXguKrguLLguKvguIHguKPguKPguKHguITguK3guKHguJ7guLTguKfguYDguJXguK3guKPguYzguYHguKXguLDguIHguLLguKPguJvguKPguLDguKHguKfguKXguJzguKXguKrguLLguKPguKrguJnguYDguJfguKguIOC4quC4oeC4suC4hOC4oeC5hOC4lOC5ieC4o+C4seC4muC4geC4suC4o+C4quC4meC4seC4muC4quC4meC4uOC4meC4l+C4suC4h+C4geC4suC4o+C5gOC4h+C4tOC4meC4nOC5iOC4suC4meC4l+C4suC4h+C4hOC5iOC4suC4mOC4o+C4o+C4oeC5gOC4meC4teC4ouC4oeC4guC4reC4h+C4geC4suC4o+C5gOC4m+C5h+C4meC4quC4oeC4suC4iuC4tOC4geC5gOC4l+C5iOC4suC4meC4seC5ieC4mS4g4Liq4Lih4Liy4LiK4Li04LiB4Lig4Liy4Lie4LiC4Lit4LiHIFVuaWNvZGUgQ29uc29ydGl1bSDguYDguJvguLTguJTguIHguKfguYnguLLguIfguKrguLPguKvguKPguLHguJrguK3guIfguITguYzguIHguKPguKvguKPguLfguK3guJrguLjguITguITguKXguYPguJTguYYg4LmD4LiZ4LmC4Lil4LiB4LiX4Li14LmI4LiV4LmJ4Lit4LiH4LiB4Liy4Lij4Liq4LiZ4Lix4Lia4Liq4LiZ4Li44LiZIFVuaWNvZGUgU3RhbmRhcmQg4LmB4Lil4Liw4LiK4LmI4Lin4Lii4LmA4Lir4Lil4Li34Lit4LiB4Liy4Lij4LiC4Lii4Liy4Lii4LiV4Lix4Lin4LmB4Lil4Liw4LiB4Liy4Lij4LiZ4LizIFVuaWNvZGUg4LmE4Lib4LmD4LiK4LmJ4LiH4Liy4LiZLiAKKwor4Liq4Liz4Lir4Lij4Lix4Lia4LiC4LmJ4Lit4Lih4Li54Lil4LmA4Lie4Li04LmI4Lih4LmA4LiV4Li04LihLCDguYPguKvguYnguJTguLnguJfguLXguYggR2xvc3NhcnksIFNhbXBsZSBVbmljb2RlLUVuYWJsZWQgUHJvZHVjdHMsIFRlY2huaWNhbCBJbnRyb2R1Y3Rpb24g4LmB4Lil4LiwIFVzZWZ1bCBSZXNvdXJjZXMuCisKK+C5gOC4m+C5h+C4meC4oeC4meC4uOC4qeC4ouC5jOC4quC4uOC4lOC4m+C4o+C4sOC5gOC4quC4o+C4tOC4kOC5gOC4peC4tOC4qOC4hOC4uOC4k+C4hOC5iOC4sgor4LiB4Lin4LmI4Liy4Lia4Lij4Lij4LiU4Liy4Lid4Li54LiH4Liq4Lix4LiV4Lin4LmM4LmA4LiU4Lij4Lix4LiI4LiJ4Liy4LiZCivguIjguIfguJ3guYjguLLguJ/guLHguJnguJ7guLHguJLguJnguLLguKfguLTguIrguLLguIHguLLguKMKK+C4reC4ouC5iOC4suC4peC5ieC4suC4h+C4nOC4peC4suC4jeC4pOC5heC5gOC4guC5iOC4meC4huC5iOC4suC4muC4teC4keC4suC5g+C4hOC4owor4LmE4Lih4LmI4LiW4Li34Lit4LmC4LiX4Lip4LmC4LiB4Lij4LiY4LmB4LiK4LmI4LiH4LiL4Lix4LiU4Liu4Li24LiU4Liu4Lix4LiU4LiU4LmI4LiyCivguKvguLHguJTguK3guKDguLHguKLguYDguKvguKHguLfguK3guJnguIHguLXguKzguLLguK3guLHguIrguIzguLLguKrguLHguKIKK+C4m+C4j+C4tOC4muC4seC4leC4tOC4m+C4o+C4sOC4nuC4pOC4leC4tOC4geC4juC4geC4s+C4q+C4meC4lOC5g+C4iAor4Lie4Li54LiU4LiI4Liy4LmD4Lir4LmJ4LiI4LmK4LiwIOC5hiDguIjguYvguLIg4LmGIOC4meC5iOC4suC4n+C4seC4h+C5gOC4reC4ouC4rworCivguYHguKvguKXguYjguIfguJfguLXguYjguKHguLIgOiDguKrguKHguLLguITguKHguITguK3guKHguJ7guLTguKfguYDguJXguK3guKPguYzguYHguKvguYjguIfguJvguKPguLDguYDguJfguKjguYTguJfguKIKKwor4LiF4LiZ4LiD4Lin4LiUIGtobyBraHVhdCBhbmQga2hvIGtob24KK0BUSVRMRUNBU0VACivguIHguYrguIHguYDguK7guIcg4LmB4LiL4LmI4LmB4LiV4LmJCivguIHguIrguIHguKMg4Lio4Lij4Liy4LiX4LiY4LiX4Lix4LiVCivguIHguJXguLTguIHguLIg4Lit4Lix4LiH4LiE4Liq4Li44Lig4LiTCivguIHguJnguIEg4LiY4Lij4Lij4Lih4Lib4Lij4Liw4LiX4Li14LibCivguIHguJnguIEg4Lin4LiH4Lio4LmM4LiX4Lit4LiH4Lio4Lij4Li1CivguIHguJnguIHguIHguKMg4LiK4LmJ4Liy4LiH4LmA4Lii4LmH4LiZ4LiJ4LmI4LizCivguIHguJnguIHguInguLHguJXguKPguYwg4LiW4Liy4Lin4Lij4LiZ4Lix4LiZ4LiX4LmMCivguIHguJnguIHguJnguKfguKUg4LmC4Lib4Lip4Lii4Liw4LiZ4Lix4LiZ4LiX4LiZ4LmMCivguIHguJnguIHguJ7guKMg4LiE4Lih4LiE4Liy4LiiCivguIHguJnguIHguJ7guKMg4LiV4Li14Lij4LmA4Lil4Li04Lio4Lie4Liy4LiZ4Li04LiKCivguIHguJnguIHguJ7guKMg4Lie4Lix4LiZ4LiX4LijCivguIHguJnguIHguJ7guKMg4Lio4Lij4Li14Lia4Lix4LiT4LiR4Li04LiVCivguIHguJnguIHguJ7guKMg4Lit4LiV4Li04Lin4Lij4Lij4LiT4Liy4Lie4Lix4LiS4LiZ4LmMCivguIHguJnguIHguJ7guKPguKPguJMg4Lio4Lij4Li14Lin4LiZ4Liy4Lig4Li04Lij4Lih4Lii4LmMCivguIHguJnguIHguKPguLHguJXguJnguYwg4LmA4LiB4Li14Lii4Lij4LiV4Li04Lii4Li04LmI4LiH4Lit4Lix4LiH4Lio4Li44Lil4Li1CivguIHguJnguIHguKPguLHguJXguJnguYwg4Liq4Li44LiY4Lij4Lij4Lih4Lie4Li04LiX4Lix4LiB4Lip4LmMCivguIHguJnguIHguKfguKPguKPguJMg4LiE4LiH4LiE4Liy4Lib4Lij4Liw4LmA4Liq4Lij4Li04LiQCivguIHguJnguIHguKfguKPguKPguJMg4LmB4LiL4LmI4LmA4LiV4Li14Lii4LinCivguIHguJnguIHguKfguKPguKPguJMg4Lia4Li44LiN4Lib4Lij4Liw4LmA4Liq4Lij4Li04LiQCivguIHguJnguIHguKfguKPguKPguJMg4Lij4Lix4LiB4LiX4Lij4Lix4Lie4Lii4LmMCivguIHguJnguIHguKfguKPguKPguJMg4Liq4Lix4LiI4LiI4Lie4LiH4Lip4LmMCivguIHguJnguIHguKfguKPguKPguJMg4Lit4Li44LmJ4Lii4Lin4LiH4Lio4LmM4LmE4Lie4Lio4Liy4LilCivguIHguJnguIHguKjguLHguIHguJTguLTguYwg4Lii4Li04LmI4LiH4Lii4LiHCivguIHguJnguIHguYHguIHguYnguKcg4LiB4Lij4Liq4Lih4Li04LiVCivguIHguJnguLTguKnguJDguLIg4LiX4LiZ4Li44LiW4LiZ4Lit4Lih4Lij4Liy4Lip4LiO4Lij4LmMCivguIHguJnguLTguKnguJDguLIg4Lir4Lin4Lix4LiH4Lin4Li04Lia4Li54Lil4Lii4LmM4LiB4Li04LiICivguIHguKHguKUg4LiB4Liy4LiN4LiI4LiZ4LmC4Lij4LiI4LiZ4LmMCivguIHguKHguKUg4LiE4Lix4Lih4Lig4Li14Lij4LmMCivguIHguKHguKUg4LmA4LiI4LiV4LiZ4LmM4Lih4LiH4LiE4Lil4Lij4Lix4LiV4LiZ4LmMCivguIHguKHguKUg4LiK4Li54LiV4Lij4Liw4LiB4Li54Lil4LiY4Lij4Lij4LihCitAU0VUIFtbOnRoYWk6XSBcdTBFMDEtXHUwRTNBXHUwRTQwLVx1MEU1Ql0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vdHJhbnNsaXQvVHJhbnNsaXRlcmF0aW5nVGV4dENvbXBvbmVudC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL3RyYW5zbGl0L1RyYW5zbGl0ZXJhdGluZ1RleHRDb21wb25lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43ZDY2OTcyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL3RyYW5zbGl0L1RyYW5zbGl0ZXJhdGluZ1RleHRDb21wb25lbnQuamF2YQpAQCAtMCwwICsxLDI2MyBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL3RyYW5zbGl0L1RyYW5zbGl0ZXJhdGluZ1RleHRDb21wb25lbnQuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMy8xOSAwMDoxNzoyNyAkIAorICogJFJldmlzaW9uOiAxLjUgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi5kZW1vLnRyYW5zbGl0OworCitpbXBvcnQgamF2YS5hd3QuKjsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC4qOworaW1wb3J0IGphdmEudGV4dC4qOworaW1wb3J0IGphdmEuYXd0LmRhdGF0cmFuc2Zlci4qOworaW1wb3J0IGNvbS5pYm0uaWN1LmxhbmcuKjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0Lio7CitpbXBvcnQgY29tLmlibS5pY3UuZGV2LmRlbW8uaW1wbC4qOworCisvKioKKyAqIEEgc3ViY2xhc3Mgb2Yge0BsaW5rIER1bWJUZXh0Q29tcG9uZW50fSB0aGF0IHBhc3NlcyBrZXkgZXZlbnRzIHRocm91Z2gKKyAqIGEge0BsaW5rIGNvbS5pYm0uaWN1LnRleHQuVHJhbnNsaXRlcmF0b3J9LgorICoKKyAqIDxwPkNvcHlyaWdodCAmY29weTsgSUJNIENvcnBvcmF0aW9uIDE5OTkuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIEBhdXRob3IgQWxhbiBMaXUKKyAqIEB2ZXJzaW9uICRSQ1NmaWxlOiBUcmFuc2xpdGVyYXRpbmdUZXh0Q29tcG9uZW50LmphdmEsdiAkICRSZXZpc2lvbjogMS41ICQgJERhdGU6IDIwMDIvMDMvMTkgMDA6MTc6MjcgJAorICovCitwdWJsaWMgY2xhc3MgVHJhbnNsaXRlcmF0aW5nVGV4dENvbXBvbmVudCBleHRlbmRzIER1bWJUZXh0Q29tcG9uZW50IHsKKworICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gREVCVUcgPSBmYWxzZTsKKworICAgIHByaXZhdGUgVHJhbnNsaXRlcmF0b3IgdHJhbnNsaXQgPSBudWxsOworICAgIAorICAgIC8vIE5PVEU6IERJU0FCTEUgVEhFIFNUQVJUIEFORCBDVVJTT1IgVU5USUwgV0UgQ0FOIEdFVCBJVCBUTyBXT1JLIEFUIEFMTAorCisgICAgLy8gSW5kZXggaW50byBnZXRUZXh0KCkgd2hlcmUgdGhlIHN0YXJ0IG9mIHRyYW5zbGl0ZXJhdGlvbiBpcy4KKyAgICAvLyBBcyB3ZSBjb21taXQgdGV4dCBkdXJpbmcgdHJhbnNsaXRlcmF0aW9uLCB3ZSBhZHZhbmNlCisgICAgLy8gdGhpcy4KKyAgICAvL3ByaXZhdGUgaW50IHN0YXJ0ID0gMDsKKworICAgIC8vIEluZGV4IGludG8gZ2V0VGV4dCgpIHdoZXJlIHRoZSBjdXJzb3IgaXM7IGN1cnNvciA+PSBzdGFydAorICAgIC8vcHJpdmF0ZSBpbnQgY3Vyc29yID0gMDsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAiXHUwMEE5IElCTSBDb3Jwb3JhdGlvbiAxOTk5LiBBbGwgcmlnaHRzIHJlc2VydmVkLiI7CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3Rvci4KKyAgICAgKi8KKyAgICBwdWJsaWMgVHJhbnNsaXRlcmF0aW5nVGV4dENvbXBvbmVudCgpIHsKKyAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgLyoKKyAgICAgICAgYWRkQWN0aW9uTGlzdGVuZXIobmV3IEFjdGlvbkxpc3RlbmVyKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEFjdGlvbkV2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBnZXQgYW4gQWN0aW9uRXZlbnQgb25seSB3aGVuIHRoZSBzZWxlY3Rpb24gY2hhbmdlcworICAgICAgICAgICAgICAgIHJlc2V0VHJhbnNsaXRlcmF0aW9uU3RhcnQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgICAgICovCisgICAgfQorCisgICAgLyoqCisgICAgICoge0BsaW5rIER1bWJUZXh0Q29tcG9uZW50fSBBUEkuICBGcmFtZXdvcmsgbWV0aG9kIHRoYXQgaXMgY2FsbGVkCisgICAgICogd2hlbiBhIDxjb2RlPktleUV2ZW50PC9jb2RlPiBpcyByZWNlaXZlZC4gIFRoaXMgaW1wbGVtZW50YXRpb24KKyAgICAgKiBydW5zIHRoZSBuZXcgY2hhcmFjdGVyIHRocm91Z2ggdGhlIGN1cnJlbnQKKyAgICAgKiA8Y29kZT5UcmFuc2xpdGVyYXRvcjwvY29kZT4sIGlmIG9uZSBpcyBzZXQsIGFuZCBpbnNlcnRzIHRoZQorICAgICAqIHRyYW5zbGl0ZXJhdGVkIHRleHQgaW50byB0aGUgYnVmZmVyLgorICAgICAqLworCXByb3RlY3RlZCB2b2lkIGhhbmRsZUtleVR5cGVkKEtleUV2ZW50IGUpIHsKKyAgICAgICAgY2hhciBjaCA9IGUuZ2V0S2V5Q2hhcigpOworICAgICAgICAKKyAgICAgICAgaWYgKHRyYW5zbGl0ID09IG51bGwpIHsKKyAgICAgICAgICAgIHNldEtleVN0YXJ0KC0xKTsKKyAgICAgICAgICAgIHN1cGVyLmhhbmRsZUtleVR5cGVkKGUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdHJhbnNsaXRlcmF0ZShjaCwgZmFsc2UpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBmbHVzaCgpIHsKKyAgICAgICAgaWYgKHRyYW5zbGl0ICE9IG51bGwpIHRyYW5zbGl0ZXJhdGUoJ1x1RkZGRicsIHRydWUpOworICAgIH0KKyAgICAKKyAgICAKKyAgICBwcm90ZWN0ZWQgdm9pZCB0cmFuc2xpdGVyYXRlKGNoYXIgY2gsIGJvb2xlYW4gZmx1c2gpIHsKKworICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBjYXNlIG1vdGl2YXRlcyB0aGUgdHdvIGxpbmVzIHRoYXQgcmVjb21wdXRlCisgICAgICAgIC8vIHN0YXJ0IGFuZCBjdXJzb3IgYmVsb3cuCisKKyAgICAgICAgLy8gICAgICAiICAgICAiICAgCisgICAgICAgIC8vIGEgYiBjIHEgcnxzIHQgdSBtIG0KKyAgICAgICAgLy8gMCAxIDIgMyA0IDUgNiA3IDggOQorICAgICAgICAvLyAgICAgICAwIDEgMgorCisgICAgICAgIC8vIHN0YXJ0IDMsIGN1cnNvciA1LCBzZWwgNiAtPiB7IDAsIDMsIDIgfQorICAgICAgICAvLyA6IG5ldyBpbnRbXSB7IDAsIHNlbCAtIHN0YXJ0LCBjdXJzb3IgLSBzdGFydCB9OworICAgICAgICAKKyAgICAgICAgLy8gc3o+OTl8OQorCisgICAgICAgIC8vICAgICAgIiAgICAgeyAgICIKKyAgICAgICAgLy8gYSBiIGMgcSByIDkgOXw5IHQgdSBtIG0KKyAgICAgICAgLy8gMCAxIDIgMyA0IDUgNiA3IDggOSBhIGIKKyAgICAgICAgLy8gICAgICAgMCAxIDIgMyA0CisKKyAgICAgICAgLy8geyAzLCA1LCA0IH0gLT4gc3RhcnQgNiwgY3Vyc29yIDcsIHNlbCA4CisgICAgICAgIC8vIDogc3RhcnQgKz0gaW5kZXhbMF07CisgICAgICAgIC8vIDogY3Vyc29yID0gc3RhcnQgKyBpbmRleFsyXSAtIGluZGV4WzBdOworICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgICAgICAvLyBOZWVkIHRvIHNhdmUgc3RhcnQgYmVjYXVzZSBjYWxscyB0byByZXBsYWNlUmFuZ2Ugd2lsbCB1cGRhdGUKKyAgICAgICAgLy8gc3RhcnQgYW5kIGN1cnNvci4KKyAgICAgICAgLy9pbnQgc2F2ZVN0YXJ0ID0gc3RhcnQ7CisKKyAgICAgICAgaW50IGVuZCA9IGZsdXNoID8gZ2V0U2VsZWN0aW9uRW5kKCkgOiBnZXRTZWxlY3Rpb25TdGFydCgpOworICAgICAgICBTdHJpbmcgc291cmNlVGV4dCA9IGdldFRleHQoKS5zdWJzdHJpbmcoMCxlbmQpOworICAgICAgICBSZXBsYWNlYWJsZVN0cmluZyBidWYgPSBuZXcgUmVwbGFjZWFibGVTdHJpbmcoc291cmNlVGV4dCk7CisgICAgICAgIC8qYnVmLnJlcGxhY2UoMCwgMSwgZ2V0VGV4dCgpLnN1YnN0cmluZyhzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRTZWxlY3Rpb25TdGFydCgpKSk7Ki8KKworICAgICAgICBUcmFuc2xpdGVyYXRvci5Qb3NpdGlvbiBpbmRleCA9IG5ldyBUcmFuc2xpdGVyYXRvci5Qb3NpdGlvbigpOworICAgICAgICBpbmRleC5jb250ZXh0TGltaXQgPSBidWYubGVuZ3RoKCk7CisgICAgICAgIGluZGV4LmNvbnRleHRTdGFydCA9IDA7CisgICAgICAgIGluZGV4LnN0YXJ0ID0gZ2V0S2V5U3RhcnQoKTsKKyAgICAgICAgaWYgKGluZGV4LnN0YXJ0ID09IC0xKSBpbmRleC5zdGFydCA9IGdldFNlbGVjdGlvblN0YXJ0KCk7CisgICAgICAgIGluZGV4LmxpbWl0ID0gYnVmLmxlbmd0aCgpOworCisgICAgICAgIFN0cmluZ0J1ZmZlciBsb2cgPSBudWxsOworICAgICAgICBpZiAoREVCVUcpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVHJhbnNsaXRlcmF0b3I6ICIgKyB0cmFuc2xpdC5nZXRJRCgpKTsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRnJvbTpcdCIgKyAnIicgKyBidWYudG9TdHJpbmcoKSArICciJworICAgICAgICAgICAgICAgICsgIjsge2NzOiAiICsgaW5kZXguY29udGV4dFN0YXJ0CisgICAgICAgICAgICAgICAgKyAiLCBzOiAiICsgaW5kZXguc3RhcnQKKyAgICAgICAgICAgICAgICArICIsIGw6ICIgKyBpbmRleC5saW1pdAorICAgICAgICAgICAgICAgICsgIiwgY2w6ICIgKyBpbmRleC5jb250ZXh0TGltaXQgCisgICAgICAgICAgICAgICAgKyAifSIgKyAiOyAnIiArIGNoICsgIiciCisgICAgICAgICAgICAgICAgKyAiICIgKyBnZXRLZXlTdGFydCgpCisgICAgICAgICAgICApOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZsdXNoKSB7CisgICAgICAgICAgICB0cmFuc2xpdC5maW5pc2hUcmFuc2xpdGVyYXRpb24oYnVmLCBpbmRleCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0cmFuc2xpdC50cmFuc2xpdGVyYXRlKGJ1ZiwgaW5kZXgsIGNoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKERFQlVHKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRvOlx0IiArICciJyArIGJ1Zi50b1N0cmluZygpICsgJyInCisgICAgICAgICAgICAgICAgKyAiOyB7Y3M6ICIgKyBpbmRleC5jb250ZXh0U3RhcnQKKyAgICAgICAgICAgICAgICArICIsIHM6ICIgKyBpbmRleC5zdGFydAorICAgICAgICAgICAgICAgICsgIiwgbDogIiArIGluZGV4LmxpbWl0CisgICAgICAgICAgICAgICAgKyAiLCBjbDogIiArIGluZGV4LmNvbnRleHRMaW1pdCAKKyAgICAgICAgICAgICAgICArICJ9IgorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKKyAgICAgICAgfQorICAgICAgICAvKgorICAgICAgICBidWYucmVwbGFjZShidWYubGVuZ3RoKCksIGJ1Zi5sZW5ndGgoKSwgU3RyaW5nLnZhbHVlT2YoY2gpKTsKKyAgICAgICAgdHJhbnNsaXQudHJhbnNsaXRlcmF0ZShidWYpOworICAgICAgICAqLworICAgICAgICAKKyAgICAgICAgU3RyaW5nIHJlc3VsdCA9IGJ1Zi50b1N0cmluZygpOworICAgICAgICAvL2lmIChyZXN1bHQuZXF1YWxzKHNvdXJjZVRleHQgKyBjaCkpIHJldHVybjsKKyAgICAgICAgCisgICAgICAgIHJlcGxhY2VSYW5nZShyZXN1bHQsIDAsIGdldFNlbGVjdGlvbkVuZCgpKTsKKyAgICAgICAgc2V0S2V5U3RhcnQoaW5kZXguc3RhcnQpOworICAgICAgICAKKyAgICAgICAgLy8gQXQgdGhpcyBwb2ludCBzdGFydCBoYXMgYmVlbiBjaGFuZ2VkIGJ5IHRoZSBjYWxsYmFjayB0bworICAgICAgICAvLyByZXNldFRyYW5zbGl0ZXJhdG9yU3RhcnQoKSB2aWEgcmVwbGFjZVJhbmdlKCkgLS0gc28gdXNlIG91cgorICAgICAgICAvLyBsb2NhbCBjb3B5LCBzYXZlU3RhcnQuCisKKyAgICAgICAgLy8gVGhlIFNUQVJUIGluZGV4IGlzIHplcm8tYmFzZWQuICBPbiBlbnRyeSB0byB0cmFuc2xpdGVyYXRlKCksCisgICAgICAgIC8vIGl0IHdhcyB6ZXJvLiAgV2UgY2FuIHRoZXJlZm9yZSBqdXN0IGFkZCBpdCB0byBvdXIgb3JpZ2luYWwKKyAgICAgICAgLy8gZ2V0VGV4dCgpLWJhc2VkIGluZGV4IHZhbHVlIG9mIHN0YXJ0IChpbiBzYXZlU3RhcnQpIHRvIGdldAorICAgICAgICAvLyB0aGUgbmV3IGdldFRleHQoKS1iYXNlZCBzdGFydC4KKy8vICAgICAgICBzdGFydCA9IHNhdmVTdGFydCArIGluZGV4LmNvbnRleHRTdGFydDsKKworICAgICAgICAvLyBNYWtlIHRoZSBjdXJzb3IgZ2V0VGV4dCgpLWJhc2VkLiAgVGhlIENVUlNPUiBpbmRleCBpcyB6ZXJvLWJhc2VkLgorLy8gICAgICAgIGN1cnNvciA9IHN0YXJ0ICsgaW5kZXguc3RhcnQgLSBpbmRleC5jb250ZXh0U3RhcnQ7CisKKy8qCisgICAgICAgIGlmIChERUJVRykgeworICAgICAgICAgICAgU3RyaW5nIG91dCA9IGJ1Zi50b1N0cmluZygpOworICAgICAgICAgICAgbG9nLmFwcGVuZChvdXQuc3Vic3RyaW5nKDAsIGluZGV4LmNvbnRleHRTdGFydCkpLgorICAgICAgICAgICAgICAgIGFwcGVuZCgneycpLgorICAgICAgICAgICAgICAgIGFwcGVuZChvdXQuc3Vic3RyaW5nKGluZGV4LmNvbnRleHRTdGFydCwgaW5kZXguc3RhcnQpKS4KKyAgICAgICAgICAgICAgICBhcHBlbmQoJ3wnKS4KKyAgICAgICAgICAgICAgICBhcHBlbmQob3V0LnN1YnN0cmluZyhpbmRleC5zdGFydCkpLgorICAgICAgICAgICAgICAgIGFwcGVuZCgnIicpOworICAgICAgICAgICAgbG9nLmFwcGVuZCgiLCB7IiArIGluZGV4LmNvbnRleHRTdGFydCArICIsICIgKyBpbmRleC5jb250ZXh0TGltaXQgKyAiLCAiICsgaW5kZXguc3RhcnQgKyAifSwgIik7CisvLyAgICAgICAgICAgIGxvZy5hcHBlbmQoInN0YXJ0ICIgKyBzdGFydCArICIsIGN1cnNvciAiICsgY3Vyc29yKTsKKyAgICAgICAgICAgIGxvZy5hcHBlbmQoIiwgc2VsICIgKyBnZXRTZWxlY3Rpb25TdGFydCgpKTsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihlc2NhcGUobG9nLnRvU3RyaW5nKCkpKTsKKyAgICAgICAgfQorICAgICAgICAqLworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIHtAbGluayBjb20uaWJtLmljdS50ZXh0LlRyYW5zbGl0ZXJhdG9yfSBhbmQgZGlyZWN0aW9uIHRvCisgICAgICogdXNlIHRvIHByb2Nlc3MgaW5jb21pbmcgPGNvZGU+S2V5RXZlbnQ8L2NvZGU+cy4KKyAgICAgKiBAcGFyYW0gdCB0aGUge0BsaW5rIGNvbS5pYm0uaWN1LnRleHQuVHJhbnNsaXRlcmF0b3J9IHRvIHVzZQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFRyYW5zbGl0ZXJhdG9yKFRyYW5zbGl0ZXJhdG9yIHQpIHsKKyAgICAgICAgLyoKKyAgICAgICAgaWYgKHRyYW5zbGl0ICE9IHQpIHsgLy8gW3NpY10gcG9pbnRlciBjb21wYXJlIG9rOyBzaW5nbGV0b25zCisgICAgICAgICAgICByZXNldFRyYW5zbGl0ZXJhdGlvblN0YXJ0KCk7CisgICAgICAgIH0KKyAgICAgICAgKi8KKyAgICAgICAgdHJhbnNsaXQgPSB0OworICAgIH0KKworICAgIHB1YmxpYyBUcmFuc2xpdGVyYXRvciBnZXRUcmFuc2xpdGVyYXRvcigpIHsKKyAgICAgICAgcmV0dXJuIHRyYW5zbGl0OworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlc2V0IHRoZSBzdGFydCBwb2ludCBhdCB3aGljaCB0cmFuc2xpdGVyYXRpb24gYmVnaW5zLiAgVGhpcworICAgICAqIG5lZWRzIHRvIGJlIGRvbmUgd2hlbiB0aGUgdXNlciBtb3ZlcyB0aGUgY3Vyc29yIG9yIHdoZW4gdGhlCisgICAgICogY3VycmVudCB7QGxpbmsgY29tLmlibS5pY3UudGV4dC5UcmFuc2xpdGVyYXRvcn0gaXMgY2hhbmdlZC4gCisgICAgICovCisgICAgIC8qCisgICAgcHJpdmF0ZSB2b2lkIHJlc2V0VHJhbnNsaXRlcmF0aW9uU3RhcnQoKSB7CisgICAgICAgIHN0YXJ0ID0gZ2V0U2VsZWN0aW9uU3RhcnQoKTsKKyAgICAgICAgY3Vyc29yID0gc3RhcnQ7CisgICAgfQorICAgICovCisKKyAgICAvKioKKyAgICAgKiBFc2NhcGUgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgYXMgVW5pY29kZS4KKyAgICAgKiBKVVNUIEZPUiBERUJVR0dJTkcgT1VUUFVULgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGVzY2FwZShTdHJpbmcgcykgeworICAgICAgICBTdHJpbmdCdWZmZXIgYnVmID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBmb3IgKGludCBpPTA7IGk8cy5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBjaGFyIGMgPSBzLmNoYXJBdChpKTsKKyAgICAgICAgICAgIGlmIChjID49ICcgJyAmJiBjIDw9IDB4MDA3RikgeworICAgICAgICAgICAgICAgIGlmIChjID09ICdcXCcpIHsKKyAgICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgiXFxcXCIpOyAvLyBUaGF0IGlzLCAiXFwiCisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZChjKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIlxcdSIpOworICAgICAgICAgICAgICAgIGlmIChjIDwgMHgxMDAwKSB7CisgICAgICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoJzAnKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgPCAweDEwMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgnMCcpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPCAweDEwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgnMCcpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoSW50ZWdlci50b0hleFN0cmluZyhjKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGJ1Zi50b1N0cmluZygpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby90cmFuc2xpdC9kZW1vLmJhdCBiL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby90cmFuc2xpdC9kZW1vLmJhdApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44MDc1OWJjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL3RyYW5zbGl0L2RlbW8uYmF0CkBAIC0wLDAgKzEsMTkgQEAKK1JFTSAvKgorUkVNICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK1JFTSAgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorUkVNICAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCitSRU0gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK1JFTSAgKgorUkVNICAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby90cmFuc2xpdC9kZW1vLmJhdCx2ICQgCitSRU0gICogJERhdGU6IDIwMDAvMDMvMTAgMDM6NDc6NDQgJCAKK1JFTSAgKiAkUmV2aXNpb246IDEuMiAkCitSRU0gICoKK1JFTSAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK1JFTSAgKi8KK1JFTSBGb3IgYmVzdCByZXN1bHRzLCBydW4gdGhlIGRlbW8gYXMgYW4gYXBwbGV0IGluc2lkZSBvZiBOZXRzY2FwZQorUkVNIHdpdGggQml0c3RyZWFtIEN5YmVyYml0IGluc3RhbGxlZC4KKworUkVNIHNldHVwIHlvdXIgSkRLIDEuMS54IHBhdGggYW5kIGNsYXNzcGF0aCBoZXJlOgorY2FsbCBKREsxMQorc2V0IENMQVNTUEFUSD0uLi90cmFuc2xpdC5qYXI7JUNMQVNTUEFUSCUKK2phdmF3IERlbW8KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby90cmFuc2xpdC9kZW1vLmh0bWwgYi9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vdHJhbnNsaXQvZGVtby5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjM0MDcxMjMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vdHJhbnNsaXQvZGVtby5odG1sCkBAIC0wLDAgKzEsNDAgQEAKKzwhLS0gCisvKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL3RyYW5zbGl0L2RlbW8uaHRtbCx2ICQKKyAqICREYXRlOiAyMDAyLzEyLzE4IDAxOjQ1OjQ5ICQKKyAqICRSZXZpc2lvbjogMS40ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCistLT4KKzxIVE1MPgorPEhFQUQ+Cis8VElUTEU+VHJhbnNsaXRlcmF0aW9uIERlbW88L1RJVExFPgorPC9IRUFEPgorPEJPRFk+Cis8QVBQTEVUIENPREU9ImNvbS5pYm0uZGVtby50cmFuc2xpdC5EZW1vQXBwbGV0LmNsYXNzIiBXSURUSD0xNDAgSEVJR0hUPTMzPjwvQVBQTEVUPgorCis8SFI+CisKK0lmIHlvdSBkb24ndCBzZWUgYSBidXR0b24gYWJvdmUsIHRoZW4geW91ciBicm93c2VyIGlzIGZhaWxpbmcgdG8KK2xvY2F0ZSB0aGUgbmVjZXNzYXJ5IEphdmEgY2xhc3MgZmlsZXMuCisKKzxQPgorCitPbmUgd2F5IHRvIG1ha2UgdGhpcyB3b3JrIGlzIHRvIGNvcHkgdGhpcyBIVE1MIGZpbGUgdG8KKzxjb2RlPmljdTRqL3NyYzwvY29kZT4sIGFuZCBtYWtlIHN1cmUgdGhlIEphdmEgZmlsZXMgaW4gdGhlIGRpcmVjdG9yaWVzCit1bmRlciA8Y29kZT5pY3U0ai9zcmMvY29tPC9jb2RlPiBhcmUgYnVpbHQuICBUaGVuIG9wZW4gdGhpcyBIVE1MIGZpbGUKK3VzaW5nIGEgYnJvd3NlciBvciBhcHBsZXR2aWV3ZXIuCisKKzxQPgorCitGb3IgYmVzdCByZXN1bHRzLCBydW4gdGhpcyBkZW1vIGFzIGFuIGFwcGxldCB3aXRoaW4gTmV0c2NhcGUgd2l0aAorQml0c3RyZWFtIEN5YmVyYml0IGluc3RhbGxlZC4KKworPC9CT0RZPgorPC9IVE1MPgpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL3RyYW5zbGl0L3BhY2thZ2UuaHRtbCBiL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby90cmFuc2xpdC9wYWNrYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZjAxNDY0OQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby90cmFuc2xpdC9wYWNrYWdlLmh0bWwKQEAgLTAsMCArMSwxNSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzwhLS0gIENvcHlyaWdodCAoQykgMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQKKyAgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorCisgICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby90cmFuc2xpdC9wYWNrYWdlLmh0bWwsdiAkCisgICRSZXZpc2lvbjogMS4xICQKKyAgJERhdGU6IDIwMDAvMDMvMTUgMTc6NDQ6MTIgJAorLS0+Cis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSI+CitUcmFuc2xpdGVyYXRvciBkZW1vIGFwcGxpYXRpb24uCis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL3RyYW5zbGl0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9IYW5fUGlueWluLnR4dCBiL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby90cmFuc2xpdC9yZXNvdXJjZXMvVHJhbnNsaXRlcmF0b3JfSGFuX1Bpbnlpbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOGY3YzIxZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby90cmFuc2xpdC9yZXNvdXJjZXMvVHJhbnNsaXRlcmF0b3JfSGFuX1Bpbnlpbi50eHQKQEAgLTAsMCArMSwyMDM2NSBAQAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENvcHlyaWdodCAoYykgMTk5OS0yMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisjIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEdlbmVyYXRlZDogRnJpIEphbiAyNiAxNToxNDo0OCAyMDAxCisjIFRvb2w6IC4uXC4uXHRvb2xzXHRyYW5zbGl0XGhhbnBpbnlpbi5wbAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMgSGFuLVBpbnlpbgorCisjIE1lY2hhbmljYWxseSBkZXJpdmVkIGZyb20gXGRlc2tcVW5paGFuLnR4dCAoZnRwLnVuaWNvZGUub3JnKSwgdmVyc2lvbjoKKyMKKyMJTmFtZTogICAgICAgICAgICAgVW5paGFuIGRhdGFiYXNlCisjCVVuaWNvZGUgdmVyc2lvbjogIDMuMGIxCisjCVRhYmxlIHZlcnNpb246ICAgIDEuMQorIwlEYXRlOiAgICAgICAgICAgICAyIEp1bHkgMTk5OQorIworIwlDb3B5cmlnaHQgKGMpIDE5OTYtMTk5OSBVbmljb2RlLCBJbmMuICBBbGwgUmlnaHRzIHJlc2VydmVkLgorCivkuIEgPiBkxKtuZzsgIzRFMDEKK+S4giA+IGvEg287ICM0RTAyCivkuIMgPiBxxKs7ICM0RTAzCivkuIQgPiBzaMOgbmc7ICM0RTA0CivkuIUgPiB4acOgOyAjNEUwNQor5LiHID4gbcOyOyAjNEUwNwor5LiIID4gemjDoG5nOyAjNEUwOAor5LiJID4gc8SBbjsgIzRFMDkKK+S4iiA+IHNow6BuZzsgIzRFMEEKK+S4iyA+IHhpw6A7ICM0RTBCCivkuIwgPiBqxKs7ICM0RTBDCivkuI0gPiBiw7k7ICM0RTBECivkuI4gPiB5xa07ICM0RTBFCivkuI8gPiBtacSDbjsgIzRFMEYKK+S4kCA+IGfDoGk7ICM0RTEwCivkuJEgPiBjaMWPdTsgIzRFMTEKK+S4kiA+IGNoxY91OyAjNEUxMgor5LiTID4gemh1xIFuOyAjNEUxMwor5LiUID4gcWnElTsgIzRFMTQKK+S4lSA+IHDEqzsgIzRFMTUKK+S4liA+IHNow6w7ICM0RTE2CivkuJcgPiBzaMOsOyAjNEUxNwor5LiYID4gccSrdTsgIzRFMTgKK+S4mSA+IGLErW5nOyAjNEUxOQor5LiaID4gecOoOyAjNEUxQQor5LibID4gY8Ozbmc7ICM0RTFCCivkuJwgPiBkxY1uZzsgIzRFMUMKK+S4nSA+IHPEqzsgIzRFMUQKK+S4niA+IGNow6luZzsgIzRFMUUKK+S4nyA+IGTEq3U7ICM0RTFGCivkuKAgPiBxxKt1OyAjNEUyMAor5LihID4gbGnEg25nOyAjNEUyMQor5LiiID4gZMSrdTsgIzRFMjIKK+S4oyA+IHnFj3U7ICM0RTIzCivkuKQgPiBsacSDbmc7ICM0RTI0CivkuKUgPiB5w6FuOyAjNEUyNQor5LimID4gYsOsbmc7ICM0RTI2CivkuKcgPiBzxIFuZzsgIzRFMjcKK+S4qCA+IGfFrW47ICM0RTI4CivkuKkgPiBqxKt1OyAjNEUyOQor5LiqID4gZ8OoOyAjNEUyQQor5LirID4gecSBOyAjNEUyQgor5LisID4gcWnDoW5nOyAjNEUyQwor5LitID4gemjFjW5nOyAjNEUyRAor5LiuID4gasStOyAjNEUyRQor5LivID4gamnDqDsgIzRFMkYKK+S4sCA+IGbEk25nOyAjNEUzMAor5LixID4gZ3XDoG47ICM0RTMxCivkuLIgPiBjaHXDoG47ICM0RTMyCivkuLMgPiBjaMSDbjsgIzRFMzMKK+S4tCA+IGzDrW47ICM0RTM0CivkuLUgPiB6aMWtbzsgIzRFMzUKK+S4tiA+IHpoxa07ICM0RTM2CivkuLggPiB3w6FuOyAjNEUzOAor5Li5ID4gZMSBbjsgIzRFMzkKK+S4uiA+IHfDqGk7ICM0RTNBCivkuLsgPiB6aMWtOyAjNEUzQgor5Li8ID4gasStbmc7ICM0RTNDCivkuL0gPiBsw6w7ICM0RTNECivkuL4gPiBqxa07ICM0RTNFCivkuL8gPiBwacSVOyAjNEUzRgor5LmAID4gZsO6OyAjNEU0MAor5LmBID4gecOtOyAjNEU0MQor5LmCID4gecOsOyAjNEU0Mgor5LmDID4gbsSDaTsgIzRFNDMKK+S5hSA+IGrErXU7ICM0RTQ1CivkuYYgPiBqxK11OyAjNEU0Ngor5LmHID4gemjDqTsgIzRFNDcKK+S5iCA+IHnEgW87ICM0RTQ4CivkuYkgPiB5w6w7ICM0RTQ5CivkuYsgPiB6aMSrOyAjNEU0Qgor5LmMID4gd8WrOyAjNEU0Qwor5LmNID4gemjDoDsgIzRFNEQKK+S5jiA+IGjFqzsgIzRFNEUKK+S5jyA+IGbDoTsgIzRFNEYKK+S5kCA+IGzDqDsgIzRFNTAKK+S5kSA+IHpow7JuZzsgIzRFNTEKK+S5kiA+IHDEq25nOyAjNEU1Mgor5LmTID4gcGFuZzsgIzRFNTMKK+S5lCA+IHFpw6FvOyAjNEU1NAor5LmVID4gaMWtOyAjNEU1NQor5LmWID4gZ3XEgWk7ICM0RTU2CivkuZcgPiBjaMOpbmc7ICM0RTU3CivkuZggPiBjaMOpbmc7ICM0RTU4CivkuZkgPiB5xK07ICM0RTU5CivkuZogPiB5xK1uOyAjNEU1QQor5LmcID4gbWnEkzsgIzRFNUMKK+S5nSA+IGrErXU7ICM0RTVECivkuZ4gPiBxxK07ICM0RTVFCivkuZ8gPiB5xJU7ICM0RTVGCivkuaAgPiB4w607ICM0RTYwCivkuaEgPiB4acSBbmc7ICM0RTYxCivkuaIgPiBnw6BpOyAjNEU2Mgor5LmjID4gZMSrdTsgIzRFNjMKK+S5piA+IHNoxas7ICM0RTY2CivkuaggPiBzaMStOyAjNEU2OAor5LmpID4gasSrOyAjNEU2OQor5LmqID4gbsSBbmc7ICM0RTZBCivkuasgPiBqacSBOyAjNEU2Qgor5LmtID4gc2jDrTsgIzRFNkQKK+S5sCA+IG3Eg2k7ICM0RTcwCivkubEgPiBsdcOgbjsgIzRFNzEKK+S5syA+IHLFrTsgIzRFNzMKK+S5tCA+IHh1w6k7ICM0RTc0CivkubUgPiB5xINuOyAjNEU3NQor5Lm2ID4gZsWtOyAjNEU3Ngor5Lm3ID4gc2jEgTsgIzRFNzcKK+S5uCA+IG7EgzsgIzRFNzgKK+S5uSA+IGfEgW47ICM0RTc5Civkub4gPiBnxIFuOyAjNEU3RQor5Lm/ID4gY2jDrDsgIzRFN0YKK+S6gCA+IGfFq2k7ICM0RTgwCivkuoEgPiBnxIFuOyAjNEU4MQor5LqCID4gbHXDoG47ICM0RTgyCivkuoMgPiBsw61uOyAjNEU4Mwor5LqEID4gecOsOyAjNEU4NAor5LqFID4ganXDqTsgIzRFODUKK+S6hiA+IGxpxINvOyAjNEU4Ngor5LqIID4gecO6OyAjNEU4OAor5LqJID4gemjEk25nOyAjNEU4OQor5LqKID4gc2jDrDsgIzRFOEEKK+S6iyA+IHNow6w7ICM0RThCCivkuowgPiDDqHI7ICM0RThDCivkuo0gPiBjaMO5OyAjNEU4RAor5LqOID4gecO6OyAjNEU4RQor5LqPID4gecO6OyAjNEU4Rgor5LqQID4gecO6OyAjNEU5MAor5LqRID4gecO6bjsgIzRFOTEKK+S6kiA+IGjDuTsgIzRFOTIKK+S6kyA+IHHDrTsgIzRFOTMKK+S6lCA+IHfFrTsgIzRFOTQKK+S6lSA+IGrErW5nOyAjNEU5NQor5LqWID4gc8OsOyAjNEU5Ngor5LqXID4gc8O5aTsgIzRFOTcKK+S6mCA+IGfDqG47ICM0RTk4CivkupkgPiBnw6huOyAjNEU5OQor5LqaID4gecOgOyAjNEU5QQor5LqbID4geGnEkzsgIzRFOUIKK+S6nCA+IHnDoDsgIzRFOUMKK+S6nSA+IHHDrTsgIzRFOUQKK+S6niA+IHnDoDsgIzRFOUUKK+S6nyA+IGrDrTsgIzRFOUYKK+S6oCA+IHTDs3U7ICM0RUEwCivkuqEgPiB3w6FuZzsgIzRFQTEKK+S6oiA+IGvDoG5nOyAjNEVBMgor5LqjID4gdMOgOyAjNEVBMwor5LqkID4gamnEgW87ICM0RUE0CivkuqUgPiBow6BpOyAjNEVBNQor5LqmID4gecOsOyAjNEVBNgor5LqnID4gY2jEg247ICM0RUE3CivkuqggPiBoxJNuZzsgIzRFQTgKK+S6qSA+IG3FrTsgIzRFQTkKK+S6qyA+IHhpxINuZzsgIzRFQUIKK+S6rCA+IGrEq25nOyAjNEVBQwor5LqtID4gdMOtbmc7ICM0RUFECivkuq4gPiBsacOgbmc7ICM0RUFFCivkuq8gPiB4acSDbmc7ICM0RUFGCivkurAgPiBqxKtuZzsgIzRFQjAKK+S6sSA+IHnDqDsgIzRFQjEKK+S6siA+IHHEq247ICM0RUIyCivkurMgPiBiw7M7ICM0RUIzCivkurQgPiB5w7J1OyAjNEVCNAor5Lq1ID4geGnDqDsgIzRFQjUKK+S6tiA+IGTEg247ICM0RUI2CivkurcgPiBsacOhbjsgIzRFQjcKK+S6uCA+IGTFrW87ICM0RUI4CivkurkgPiB3xJVpOyAjNEVCOQor5Lq6ID4gcsOpbjsgIzRFQkEKK+S6uyA+IHLDqW47ICM0RUJCCivkurwgPiBqw607ICM0RUJDCivkur4gPiB3w6FuZzsgIzRFQkUKK+S6vyA+IHnDrDsgIzRFQkYKK+S7gCA+IHNow607ICM0RUMwCivku4EgPiByw6luOyAjNEVDMQor5LuCID4gbMOoOyAjNEVDMgor5LuDID4gZMSrbmc7ICM0RUMzCivku4QgPiB6w6g7ICM0RUM0Civku4UgPiBqxK1uOyAjNEVDNQor5LuGID4gcMWrOyAjNEVDNgor5LuHID4gY2jDs3U7ICM0RUM3Civku4ggPiBixIE7ICM0RUM4Civku4kgPiB6aMSDbmc7ICM0RUM5Civku4ogPiBqxKtuOyAjNEVDQQor5LuLID4gamnDqDsgIzRFQ0IKK+S7jCA+IGLEq25nOyAjNEVDQwor5LuNID4gcsOpbmc7ICM0RUNECivku44gPiBjw7NuZzsgIzRFQ0UKK+S7jyA+IGbDszsgIzRFQ0YKK+S7kCA+IHPEg247ICM0RUQwCivku5EgPiBsw7puOyAjNEVEMQor5LuTID4gY8SBbmc7ICM0RUQzCivku5QgPiB6xK07ICM0RUQ0Civku5UgPiBzaMOsOyAjNEVENQor5LuWID4gdMSBOyAjNEVENgor5LuXID4gemjDoG5nOyAjNEVENwor5LuYID4gZsO5OyAjNEVEOAor5LuZID4geGnEgW47ICM0RUQ5Civku5ogPiB4acSBbjsgIzRFREEKK+S7myA+IHTFq287ICM0RURCCivku5wgPiBow7NuZzsgIzRFREMKK+S7nSA+IHTDs25nOyAjNEVERAor5LueID4gcsOobjsgIzRFREUKK+S7nyA+IHFpxIFuOyAjNEVERgor5LugID4gZ8OhbjsgIzRFRTAKK+S7oSA+IHnDrDsgIzRFRTEKK+S7oiA+IGTDrTsgIzRFRTIKK+S7oyA+IGTDoGk7ICM0RUUzCivku6QgPiBsw6xuZzsgIzRFRTQKK+S7pSA+IHnErTsgIzRFRTUKK+S7piA+IGNow6BvOyAjNEVFNgor5LunID4gY2jDoW5nOyAjNEVFNwor5LuoID4gc8SBOyAjNEVFOAor5LuqID4gecOtOyAjNEVFQQor5LurID4gbcO5OyAjNEVFQgor5LusID4gbWVuOyAjNEVFQwor5LutID4gcsOobjsgIzRFRUQKK+S7riA+IGppxIM7ICM0RUVFCivku68gPiBjaMOgbzsgIzRFRUYKK+S7sCA+IHnEg25nOyAjNEVGMAor5LuxID4gcWnDoW47ICM0RUYxCivku7IgPiB6aMOybmc7ICM0RUYyCivku7MgPiBwxK07ICM0RUYzCivku7QgPiB3w6BuOyAjNEVGNAor5Lu1ID4gd8WtOyAjNEVGNQor5Lu2ID4gamnDoG47ICM0RUY2Civku7cgPiBqacOoOyAjNEVGNwor5Lu4ID4gecSDbzsgIzRFRjgKK+S7uSA+IGbEk25nOyAjNEVGOQor5Lu6ID4gY8SBbmc7ICM0RUZBCivku7sgPiByw6huOyAjNEVGQgor5Lu8ID4gd8Ohbmc7ICM0RUZDCivku70gPiBmw6huOyAjNEVGRAor5Lu+ID4gZMSrOyAjNEVGRQor5Lu/ID4gZsSDbmc7ICM0RUZGCivkvIAgPiB6aMWNbmc7ICM0RjAwCivkvIEgPiBxxK07ICM0RjAxCivkvIIgPiBww6hpOyAjNEYwMgor5LyDID4gecO6OyAjNEYwMwor5LyEID4gZGnDoG87ICM0RjA0CivkvIUgPiBkw7luOyAjNEYwNQor5LyGID4gd8OobjsgIzRGMDYKK+S8hyA+IHnDrDsgIzRGMDcKK+S8iCA+IHjErW47ICM0RjA4CivkvIkgPiBrw6BuZzsgIzRGMDkKK+S8iiA+IHnEqzsgIzRGMEEKK+S8iyA+IGrDrTsgIzRGMEIKK+S8jCA+IMOgaTsgIzRGMEMKK+S8jSA+IHfFrTsgIzRGMEQKK+S8jiA+IGrDrDsgIzRGMEUKK+S8jyA+IGbDujsgIzRGMEYKK+S8kCA+IGbDoTsgIzRGMTAKK+S8kSA+IHjEq3U7ICM0RjExCivkvJIgPiBqw6xuOyAjNEYxMgor5LyTID4gYsSTaTsgIzRGMTMKK+S8lCA+IGTEg247ICM0RjE0CivkvJUgPiBmxas7ICM0RjE1CivkvJYgPiB0xINuZzsgIzRGMTYKK+S8lyA+IHpow7JuZzsgIzRGMTcKK+S8mCA+IHnFjXU7ICM0RjE4CivkvJkgPiBoxa1vOyAjNEYxOQor5LyaID4gaMO5aTsgIzRGMUEKK+S8myA+IHnFrTsgIzRGMUIKK+S8nCA+IGPDuWk7ICM0RjFDCivkvJ0gPiBjaHXDoW47ICM0RjFECivkvJ4gPiBzxINuOyAjNEYxRQor5LyfID4gd8SVaTsgIzRGMUYKK+S8oCA+IGNodcOhbjsgIzRGMjAKK+S8oSA+IGNoxJM7ICM0RjIxCivkvKIgPiB5w6E7ICM0RjIyCivkvKMgPiB4acOgbjsgIzRGMjMKK+S8pCA+IHNoxIFuZzsgIzRGMjQKK+S8pSA+IGNoxIFuZzsgIzRGMjUKK+S8piA+IGzDum47ICM0RjI2CivkvKcgPiBjxIFuZzsgIzRGMjcKK+S8qCA+IHjDuW47ICM0RjI4CivkvKkgPiB4w6xuOyAjNEYyOQor5LyqID4gd8SVaTsgIzRGMkEKK+S8qyA+IHpow7k7ICM0RjJCCivkvK0gPiB4dcOhbjsgIzRGMkQKK+S8riA+IG7DujsgIzRGMkUKK+S8ryA+IGLDszsgIzRGMkYKK+S8sCA+IGfFqzsgIzRGMzAKK+S8sSA+IG7ErTsgIzRGMzEKK+S8siA+IG7ErTsgIzRGMzIKK+S8syA+IHhpw6g7ICM0RjMzCivkvLQgPiBiw6BuOyAjNEYzNAor5Ly1ID4geMO5OyAjNEYzNQor5Ly2ID4gbMOtbmc7ICM0RjM2CivkvLcgPiB6aMOydTsgIzRGMzcKK+S8uCA+IHNoxJNuOyAjNEYzOAor5Ly5ID4gccWrOyAjNEYzOQor5Ly6ID4gc8OsOyAjNEYzQQor5Ly7ID4gYsSTbmc7ICM0RjNCCivkvLwgPiBzw6w7ICM0RjNDCivkvL0gPiBqacSBOyAjNEYzRAor5Ly+ID4gcMSrOyAjNEYzRQor5Ly/ID4gecOsOyAjNEYzRgor5L2AID4gc8OsOyAjNEY0MAor5L2BID4gxINpOyAjNEY0MQor5L2CID4gemjEk25nOyAjNEY0Mgor5L2DID4gZGnDoG47ICM0RjQzCivkvYQgPiBow6FuOyAjNEY0NAor5L2FID4gbcOgaTsgIzRGNDUKK+S9hiA+IGTDoG47ICM0RjQ2CivkvYcgPiB6aMO5OyAjNEY0Nwor5L2IID4gYsO5OyAjNEY0OAor5L2JID4gccWrOyAjNEY0OQor5L2KID4gYsStOyAjNEY0QQor5L2LID4gc2jDoG87ICM0RjRCCivkvYwgPiBjxK07ICM0RjRDCivkvY0gPiB3w6hpOyAjNEY0RAor5L2OID4gZMSrOyAjNEY0RQor5L2PID4gemjDuTsgIzRGNEYKK+S9kCA+IHrFrW87ICM0RjUwCivkvZEgPiB5w7J1OyAjNEY1MQor5L2SID4gecSBbmc7ICM0RjUyCivkvZMgPiB0xK07ICM0RjUzCivkvZQgPiB6aMOgbjsgIzRGNTQKK+S9lSA+IGjDqTsgIzRGNTUKK+S9liA+IGLDrDsgIzRGNTYKK+S9lyA+IHTFq287ICM0RjU3CivkvZggPiBzaMOpOyAjNEY1OAor5L2ZID4gecO6OyAjNEY1OQor5L2aID4gecOsOyAjNEY1QQor5L2bID4gZsOzOyAjNEY1Qgor5L2cID4gesO5bzsgIzRGNUMKK+S9nSA+IGvDsnU7ICM0RjVECivkvZ4gPiBuw6xuZzsgIzRGNUUKK+S9nyA+IHTDs25nOyAjNEY1Rgor5L2gID4gbsStOyAjNEY2MAor5L2hID4geHXEgW47ICM0RjYxCivkvaIgPiBxw7o7ICM0RjYyCivkvaMgPiB5w7JuZzsgIzRGNjMKK+S9pCA+IHfEgzsgIzRGNjQKK+S9pSA+IHFpxIFuOyAjNEY2NQor5L2nID4ga8SDOyAjNEY2Nwor5L2pID4gcMOoaTsgIzRGNjkKK+S9qiA+IGh1w6FpOyAjNEY2QQor5L2rID4gaMOoOyAjNEY2Qgor5L2sID4gbMSDbzsgIzRGNkMKK+S9rSA+IHhpw6FuZzsgIzRGNkQKK+S9riA+IGfDqTsgIzRGNkUKK+S9ryA+IHnDoW5nOyAjNEY2Rgor5L2wID4gYsSDaTsgIzRGNzAKK+S9sSA+IGbEgzsgIzRGNzEKK+S9siA+IG3DrW5nOyAjNEY3Mgor5L2zID4gamlhOyAjNEY3Mwor5L20ID4gw6hyOyAjNEY3NAor5L21ID4gYsOsbmc7ICM0Rjc1CivkvbYgPiBqw607ICM0Rjc2CivkvbcgPiBoxJVuOyAjNEY3Nwor5L24ID4gaMO6bzsgIzRGNzgKK+S9uSA+IGfFrWk7ICM0Rjc5CivkvbogPiBxdcOhbjsgIzRGN0EKK+S9uyA+IHRpxIFvOyAjNEY3Qgor5L28ID4gamnEg287ICM0RjdDCivkvb0gPiBjw6w7ICM0RjdECivkvb4gPiB5w6w7ICM0RjdFCivkvb8gPiBzaMStOyAjNEY3Rgor5L6AID4geMOtbmc7ICM0RjgwCivkvoEgPiBzaMSTbjsgIzRGODEKK+S+giA+IHTFq287ICM0RjgyCivkvoMgPiBrxINuOyAjNEY4Mwor5L6EID4gemjDrTsgIzRGODQKK+S+hSA+IGfEgWk7ICM0Rjg1CivkvoYgPiBsw6FpOyAjNEY4Ngor5L6HID4gecOtOyAjNEY4Nwor5L6IID4gY2jErTsgIzRGODgKK+S+iSA+IGt1xIE7ICM0Rjg5CivkvoogPiBndcSBbmc7ICM0RjhBCivkvosgPiBsw6w7ICM0RjhCCivkvowgPiB5xKtuOyAjNEY4Qwor5L6NID4gc2jDrDsgIzRGOEQKK+S+jiA+IG3ErTsgIzRGOEUKK+S+jyA+IHpoxas7ICM0RjhGCivkvpAgPiB4w7k7ICM0RjkwCivkvpEgPiB5w7J1OyAjNEY5MQor5L6SID4gxIFuOyAjNEY5Mgor5L6TID4gbMO5OyAjNEY5Mwor5L6UID4gbcOzdTsgIzRGOTQKK+S+lSA+IMOpcjsgIzRGOTUKK+S+liA+IGzDum47ICM0Rjk2CivkvpcgPiB0w7NuZzsgIzRGOTcKK+S+mCA+IGNow6A7ICM0Rjk4CivkvpkgPiBjaMOsOyAjNEY5OQor5L6aID4geMO5bjsgIzRGOUEKK+S+myA+IGfFjW5nOyAjNEY5Qgor5L6cID4gemjFjXU7ICM0RjlDCivkvp0gPiB5xKs7ICM0RjlECivkvp4gPiByxa07ICM0RjlFCivkvp8gPiBqacOgbjsgIzRGOUYKK+S+oCA+IHhpw6E7ICM0RkEwCivkvqEgPiBqacOgOyAjNEZBMQor5L6iID4gesOgaTsgIzRGQTIKK+S+oyA+IGzHmjsgIzRGQTMKK+S+pSA+IGppxINvOyAjNEZBNQor5L6mID4gemjEk247ICM0RkE2CivkvqcgPiBjw6g7ICM0RkE3CivkvqggPiBxacOhbzsgIzRGQTgKK+S+qSA+IGt1w6BpOyAjNEZBOQor5L6qID4gY2jDoWk7ICM0RkFBCivkvqsgPiBuw6xuZzsgIzRGQUIKK+S+rCA+IG7Ds25nOyAjNEZBQwor5L6tID4gasStbjsgIzRGQUQKK+S+riA+IHfFrTsgIzRGQUUKK+S+ryA+IGjDs3U7ICM0RkFGCivkvrAgPiBqxK1vbmc7ICM0RkIwCivkvrEgPiBjaMSVbmc7ICM0RkIxCivkvrIgPiB6aMOobjsgIzRGQjIKK+S+syA+IHrDuW87ICM0RkIzCivkvrQgPiBjaMWPdTsgIzRGQjQKK+S+tSA+IHHEq247ICM0RkI1CivkvrYgPiBsx5o7ICM0RkI2CivkvrcgPiBqw7o7ICM0RkI3CivkvrggPiBzaMO5OyAjNEZCOAor5L65ID4gdMStbmc7ICM0RkI5CivkvrogPiBzaMOobjsgIzRGQkEKK+S+uyA+IHTFq287ICM0RkJCCivkvrwgPiBiw7M7ICM0RkJDCivkvr0gPiBuw6FuOyAjNEZCRAor5L6+ID4gaMSBbzsgIzRGQkUKK+S+vyA+IGJpw6BuOyAjNEZCRgor5L+AID4gdMWtaTsgIzRGQzAKK+S/gSA+IHnFrTsgIzRGQzEKK+S/giA+IHjDrDsgIzRGQzIKK+S/gyA+IGPDuTsgIzRGQzMKK+S/hCA+IMOpOyAjNEZDNAor5L+FID4gccOtdTsgIzRGQzUKK+S/hiA+IHjDujsgIzRGQzYKK+S/hyA+IGt1xINuZzsgIzRGQzcKK+S/iCA+IGvDuTsgIzRGQzgKK+S/iSA+IHfDuTsgIzRGQzkKK+S/iiA+IGrDuW47ICM0RkNBCivkv4sgPiB5w6w7ICM0RkNCCivkv4wgPiBmxa07ICM0RkNDCivkv40gPiBsw6FuZzsgIzRGQ0QKK+S/jiA+IHrFrTsgIzRGQ0UKK+S/jyA+IHFpw6BvOyAjNEZDRgor5L+QID4gbMOsOyAjNEZEMAor5L+RID4gecWPbmc7ICM0RkQxCivkv5IgPiBow7luOyAjNEZEMgor5L+TID4gasOsbmc7ICM0RkQzCivkv5QgPiB4acOgbjsgIzRGRDQKK+S/lSA+IHPDoG47ICM0RkQ1Civkv5YgPiBwxINpOyAjNEZENgor5L+XID4gc8O6OyAjNEZENwor5L+YID4gZsO6OyAjNEZEOAor5L+ZID4geMSrOyAjNEZEOQor5L+aID4gbMStOyAjNEZEQQor5L+bID4gZsWtOyAjNEZEQgor5L+cID4gcMSrbmc7ICM0RkRDCivkv50gPiBixINvOyAjNEZERAor5L+eID4gecO6OyAjNEZERQor5L+fID4gc8OsOyAjNEZERgor5L+gID4geGnDoTsgIzRGRTAKK+S/oSA+IHjDrG47ICM0RkUxCivkv6IgPiB4xKt1OyAjNEZFMgor5L+jID4gecWtOyAjNEZFMwor5L+kID4gdMOsOyAjNEZFNAor5L+lID4gY2jEkzsgIzRGRTUKK+S/piA+IGNow7N1OyAjNEZFNgor5L+oID4gecSDbjsgIzRGRTgKK+S/qSA+IGxpxIM7ICM0RkU5Civkv6ogPiBsw6w7ICM0RkVBCivkv6sgPiBsw6FpOyAjNEZFQgor5L+tID4gamnEg247ICM0RkVECivkv64gPiB4xKt1OyAjNEZFRQor5L+vID4gZsWtOyAjNEZFRgor5L+wID4gaMOoOyAjNEZGMAor5L+xID4gasO5OyAjNEZGMQor5L+yID4geGnDoG87ICM0RkYyCivkv7MgPiBww6FpOyAjNEZGMwor5L+0ID4gamnDoG47ICM0RkY0Civkv7UgPiBiacOgbzsgIzRGRjUKK+S/tiA+IGNow7k7ICM0RkY2Civkv7cgPiBmw6hpOyAjNEZGNwor5L+4ID4gZsOobmc7ICM0RkY4Civkv7kgPiB5w6A7ICM0RkY5Civkv7ogPiDEg247ICM0RkZBCivkv7sgPiBiw6hpOyAjNEZGQgor5L+8ID4gecO5OyAjNEZGQwor5L+9ID4geMSrbjsgIzRGRkQKK+S/viA+IGLErTsgIzRGRkUKK+S/vyA+IGppw6BuOyAjNEZGRgor5YCAID4gY2jEgW5nOyAjNTAwMAor5YCBID4gY2jDrTsgIzUwMDEKK+WAgiA+IGLDrG5nOyAjNTAwMgor5YCDID4gesOhbjsgIzUwMDMKK+WAhCA+IHnDoW87ICM1MDA0CivlgIUgPiBjw7lpOyAjNTAwNQor5YCGID4gbGnEgzsgIzUwMDYKK+WAhyA+IHfEg247ICM1MDA3CivlgIggPiBsw6FpOyAjNTAwOAor5YCJID4gY8SBbmc7ICM1MDA5CivlgIogPiB6w7JuZzsgIzUwMEEKK+WAiyA+IGfDqDsgIzUwMEIKK+WAjCA+IGd1xIFuOyAjNTAwQwor5YCNID4gYsOoaTsgIzUwMEQKK+WAjiA+IHRpxIFuOyAjNTAwRQor5YCPID4gc2jFqzsgIzUwMEYKK+WAkCA+IHNoxas7ICM1MDEwCivlgJEgPiBtZW47ICM1MDExCivlgJIgPiBkxINvOyAjNTAxMgor5YCTID4gdMOhbjsgIzUwMTMKK+WAlCA+IGp1w6k7ICM1MDE0CivlgJUgPiBjaMO6aTsgIzUwMTUKK+WAliA+IHjDrG5nOyAjNTAxNgor5YCXID4gcMOpbmc7ICM1MDE3CivlgJggPiB0xINuZzsgIzUwMTgKK+WAmSA+IGjDsnU7ICM1MDE5CivlgJogPiB5xK07ICM1MDFBCivlgJsgPiBxxKs7ICM1MDFCCivlgJwgPiB0w6w7ICM1MDFDCivlgJ0gPiBnw6BuOyAjNTAxRAor5YCeID4gasOsbmc7ICM1MDFFCivlgJ8gPiBqacOoOyAjNTAxRgor5YCgID4gc8WraTsgIzUwMjAKK+WAoSA+IGNow6BuZzsgIzUwMjEKK+WAoiA+IGppw6k7ICM1MDIyCivlgKMgPiBmxINuZzsgIzUwMjMKK+WApCA+IHpow607ICM1MDI0CivlgKUgPiBrxY1uZzsgIzUwMjUKK+WApiA+IGp1w6BuOyAjNTAyNgor5YCnID4gesWNbmc7ICM1MDI3CivlgKggPiBqw7k7ICM1MDI4CivlgKkgPiBxacOgbjsgIzUwMjkKK+WAqiA+IG7DrTsgIzUwMkEKK+WAqyA+IGzDum47ICM1MDJCCivlgKwgPiB6aMWrbzsgIzUwMkMKK+WArSA+IHfEk2k7ICM1MDJECivlgK4gPiBsxa1vOyAjNTAyRQor5YCvID4gc8WNbmc7ICM1MDJGCivlgLAgPiBsw6luZzsgIzUwMzAKK+WAsSA+IGjDuW47ICM1MDMxCivlgLIgPiBkxY1uZzsgIzUwMzIKK+WAsyA+IHrDrDsgIzUwMzMKK+WAtCA+IGLDqG47ICM1MDM0CivlgLUgPiB3xa07ICM1MDM1CivlgLYgPiBqw7k7ICM1MDM2CivlgLcgPiBuw6BpOyAjNTAzNwor5YC4ID4gY8SDaTsgIzUwMzgKK+WAuSA+IGppxINuOyAjNTAzOQor5YC6ID4gemjDoGk7ICM1MDNBCivlgLsgPiB5xJM7ICM1MDNCCivlgLwgPiB6aMOtOyAjNTAzQwor5YC9ID4gc2jDoDsgIzUwM0QKK+WAviA+IHHEq25nOyAjNTAzRQor5YGAID4gecSrbmc7ICM1MDQwCivlgYEgPiBjaMSTbmc7ICM1MDQxCivlgYIgPiBqacSBbjsgIzUwNDIKK+WBgyA+IHnEg247ICM1MDQzCivlgYQgPiBudcOgbjsgIzUwNDQKK+WBhSA+IHpow7JuZzsgIzUwNDUKK+WBhiA+IGNoxa1uOyAjNTA0Ngor5YGHID4gamnEgzsgIzUwNDcKK+WBiCA+IGppw6k7ICM1MDQ4CivlgYkgPiB3xJVpOyAjNTA0OQor5YGKID4gecWtOyAjNTA0QQor5YGLID4gYsStbmc7ICM1MDRCCivlgYwgPiByw7lvOyAjNTA0Qwor5YGNID4gdMOtOyAjNTA0RAor5YGOID4gd8STaTsgIzUwNEUKK+WBjyA+IHBpxIFuOyAjNTA0Rgor5YGQID4gecOgbjsgIzUwNTAKK+WBkSA+IGbEk25nOyAjNTA1MQor5YGSID4gdMSDbmc7ICM1MDUyCivlgZMgPiB3w7I7ICM1MDUzCivlgZQgPiDDqDsgIzUwNTQKK+WBlSA+IHhpw6k7ICM1MDU1CivlgZYgPiBjaMSVOyAjNTA1Ngor5YGXID4gc2jElW5nOyAjNTA1Nwor5YGYID4ga8SDbjsgIzUwNTgKK+WBmSA+IGTDrDsgIzUwNTkKK+WBmiA+IHrDuW87ICM1MDVBCivlgZsgPiBjaMSBOyAjNTA1Qgor5YGcID4gdMOtbmc7ICM1MDVDCivlgZ0gPiBiw6hpOyAjNTA1RAor5YGeID4gecOoOyAjNTA1RQor5YGfID4gaHXDoW5nOyAjNTA1Rgor5YGgID4gecSDbzsgIzUwNjAKK+WBoSA+IHpow6BuOyAjNTA2MQor5YGiID4gY2jFj3U7ICM1MDYyCivlgaMgPiB5xIFuOyAjNTA2Mwor5YGkID4gecWPdTsgIzUwNjQKK+WBpSA+IGppw6BuOyAjNTA2NQor5YGmID4geMWrOyAjNTA2Ngor5YGnID4gemjEgTsgIzUwNjcKK+WBqCA+IGPEqzsgIzUwNjgKK+WBqSA+IGbDuTsgIzUwNjkKK+WBqiA+IGLEqzsgIzUwNkEKK+WBqyA+IHpow6w7ICM1MDZCCivlgawgPiB6xY9uZzsgIzUwNkMKK+WBrSA+IG1pxINuOyAjNTA2RAor5YGuID4gasOtOyAjNTA2RQor5YGvID4gecStOyAjNTA2Rgor5YGwID4geGnDqDsgIzUwNzAKK+WBsSA+IHjDum47ICM1MDcxCivlgbIgPiBzxKs7ICM1MDcyCivlgbMgPiBkdcSBbjsgIzUwNzMKK+WBtCA+IGPDqDsgIzUwNzQKK+WBtSA+IHpoxJNuOyAjNTA3NQor5YG2ID4gxY91OyAjNTA3Ngor5YG3ID4gdMWNdTsgIzUwNzcKK+WBuCA+IHTFjXU7ICM1MDc4CivlgbkgPiBiw6hpOyAjNTA3OQor5YG6ID4gesOhOyAjNTA3QQor5YG7ID4gbMeaOyAjNTA3Qgor5YG8ID4gamnDqTsgIzUwN0MKK+WBvSA+IHfElWk7ICM1MDdECivlgb4gPiBmw6huOyAjNTA3RQor5YG/ID4gY2jDoW5nOyAjNTA3Rgor5YKAID4gZ8WraTsgIzUwODAKK+WCgSA+IHPFj3U7ICM1MDgxCivlgoIgPiB6aMOsOyAjNTA4Mgor5YKDID4gc8O5OyAjNTA4Mwor5YKEID4geGnEgTsgIzUwODQKK+WChSA+IGbDuTsgIzUwODUKK+WChiA+IHl1w6BuOyAjNTA4Ngor5YKHID4gcsWPbmc7ICM1MDg3CivlgoggPiBsw6w7ICM1MDg4CivlgokgPiByw7k7ICM1MDg5CivlgoogPiB5xa1uOyAjNTA4QQor5YKLID4gZ8OydTsgIzUwOEIKK+WCjCA+IG3DoDsgIzUwOEMKK+WCjSA+IGLDoG5nOyAjNTA4RAor5YKOID4gZGnEgW47ICM1MDhFCivlgo8gPiB0w6FuZzsgIzUwOEYKK+WCkCA+IGjDoG87ICM1MDkwCivlgpEgPiBqacOpOyAjNTA5MQor5YKSID4geMSrOyAjNTA5Mgor5YKTID4gc2jDoG47ICM1MDkzCivlgpQgPiBxacOgbjsgIzUwOTQKK+WClSA+IGp1w6k7ICM1MDk1CivlgpYgPiBjxIFuZzsgIzUwOTYKK+WClyA+IGNow7k7ICM1MDk3CivlgpggPiBzxINuOyAjNTA5OAor5YKZID4gYsOoaTsgIzUwOTkKK+WCmiA+IHhpw6BvOyAjNTA5QQor5YKbID4gecWPbmc7ICM1MDlCCivlgpwgPiB5w6FvOyAjNTA5Qwor5YKdID4gdMOgbjsgIzUwOUQKK+WCniA+IHPFq287ICM1MDlFCivlgp8gPiB5xINuZzsgIzUwOUYKK+WCoCA+IGbEgTsgIzUwQTAKK+WCoSA+IGLDrG5nOyAjNTBBMQor5YKiID4gamnEgTsgIzUwQTIKK+WCoyA+IGTEg2k7ICM1MEEzCivlgqQgPiB6w6BpOyAjNTBBNAor5YKlID4gdMSDbmc7ICM1MEE1CivlgqcgPiBiw6xuOyAjNTBBNwor5YKoID4gY2jFrTsgIzUwQTgKK+WCqSA+IG7Dum87ICM1MEE5CivlgqogPiBjxIFuOyAjNTBBQQor5YKrID4gbMSVaTsgIzUwQUIKK+WCrCA+IGPFq2k7ICM1MEFDCivlgq0gPiB5xY1uZzsgIzUwQUQKK+WCriA+IHrEgW87ICM1MEFFCivlgq8gPiB6xY9uZzsgIzUwQUYKK+WCsCA+IHDDqW5nOyAjNTBCMAor5YKxID4gc8WPbmc7ICM1MEIxCivlgrIgPiDDoG87ICM1MEIyCivlgrMgPiBjaHXDoW47ICM1MEIzCivlgrQgPiB5xa07ICM1MEI0CivlgrUgPiB6aMOgaTsgIzUwQjUKK+WCtiA+IGPDsnU7ICM1MEI2CivlgrcgPiBzaMSBbmc7ICM1MEI3CivlgrggPiBxacSDbmc7ICM1MEI4CivlgrkgPiBqw6xuZzsgIzUwQjkKK+WCuiA+IGNow6w7ICM1MEJBCivlgrsgPiBzaMSDOyAjNTBCQgor5YK8ID4gaMOgbjsgIzUwQkMKK+WCvSA+IHpoxIFuZzsgIzUwQkQKK+WCviA+IHHEq25nOyAjNTBCRQor5YK/ID4gecOgbjsgIzUwQkYKK+WDgCA+IGTDrDsgIzUwQzAKK+WDgSA+IHjEqzsgIzUwQzEKK+WDgiA+IGzHmjsgIzUwQzIKK+WDgyA+IGLDqGk7ICM1MEMzCivlg4QgPiBwacOgbzsgIzUwQzQKK+WDhSA+IGrErW47ICM1MEM1Civlg4YgPiBsacOhbjsgIzUwQzYKK+WDhyA+IGzDuTsgIzUwQzcKK+WDiCA+IG3DoG47ICM1MEM4Civlg4kgPiBxacSBbjsgIzUwQzkKK+WDiiA+IHhpxIFuOyAjNTBDQQor5YOLID4gdMOgbjsgIzUwQ0IKK+WDjCA+IHnDrW5nOyAjNTBDQwor5YONID4gZMOybmc7ICM1MENECivlg44gPiB6aHXDoG47ICM1MENFCivlg48gPiB4acOgbmc7ICM1MENGCivlg5AgPiBzaMOgbjsgIzUwRDAKK+WDkSA+IHFpw6FvOyAjNTBEMQor5YOSID4gasStb25nOyAjNTBEMgor5YOTID4gdMWtaTsgIzUwRDMKK+WDlCA+IHrFrW47ICM1MEQ0Civlg5UgPiBww7o7ICM1MEQ1Civlg5YgPiB4xKs7ICM1MEQ2Civlg5cgPiBsw6FvOyAjNTBENwor5YOYID4gY2jEg25nOyAjNTBEOAor5YOZID4gZ3XEgW5nOyAjNTBEOQor5YOaID4gbGnDoW87ICM1MERBCivlg5sgPiBxxKs7ICM1MERCCivlg5wgPiBkw6huZzsgIzUwREMKK+WDnSA+IGNow6FuOyAjNTBERAor5YOeID4gd8SVaTsgIzUwREUKK+WDnyA+IGrEqzsgIzUwREYKK+WDoCA+IGbEgW47ICM1MEUwCivlg6EgPiBow7lpOyAjNTBFMQor5YOiID4gY2h1xINuOyAjNTBFMgor5YOjID4gamnDoG47ICM1MEUzCivlg6QgPiBkw6BuOyAjNTBFNAor5YOlID4gamnEg287ICM1MEU1Civlg6YgPiBqw6x1OyAjNTBFNgor5YOnID4gc8STbmc7ICM1MEU3Civlg6ggPiBmw6huOyAjNTBFOAor5YOpID4geGnDoG47ICM1MEU5Civlg6ogPiBqdcOpOyAjNTBFQQor5YOrID4gw6g7ICM1MEVCCivlg6wgPiBqacSBbzsgIzUwRUMKK+WDrSA+IGppw6BuOyAjNTBFRAor5YOuID4gdMOzbmc7ICM1MEVFCivlg68gPiBsxK1uOyAjNTBFRgor5YOwID4gYsOzOyAjNTBGMAor5YOxID4gZ8O5OyAjNTBGMQor5YOzID4gc8O5OyAjNTBGMwor5YO0ID4geGnDoG47ICM1MEY0Civlg7UgPiBqacSBbmc7ICM1MEY1Civlg7YgPiBtxK1uOyAjNTBGNgor5YO3ID4gecOoOyAjNTBGNwor5YO4ID4gasOsbjsgIzUwRjgKK+WDuSA+IGppw6A7ICM1MEY5Civlg7ogPiBxacOgbzsgIzUwRkEKK+WDuyA+IHDDrDsgIzUwRkIKK+WDvCA+IGbEk25nOyAjNTBGQwor5YO9ID4gemjDsnU7ICM1MEZECivlg74gPiDDoGk7ICM1MEZFCivlg78gPiBzw6BpOyAjNTBGRgor5YSAID4gecOtOyAjNTEwMAor5YSBID4gasO5bjsgIzUxMDEKK+WEgiA+IG7Ds25nOyAjNTEwMgor5YSDID4gY2jDoW47ICM1MTAzCivlhIQgPiB5w6w7ICM1MTA0CivlhIUgPiBkxIFuZzsgIzUxMDUKK+WEhiA+IGrErW5nOyAjNTEwNgor5YSHID4geHXEgW47ICM1MTA3CivlhIggPiBrdcOgaTsgIzUxMDgKK+WEiSA+IGppxINuOyAjNTEwOQor5YSKID4gY2jDuTsgIzUxMEEKK+WEiyA+IGTEgW47ICM1MTBCCivlhIwgPiBqacSDbzsgIzUxMEMKK+WEjSA+IHNoxIM7ICM1MTBECivlhI4gPiB6w6BpOyAjNTEwRQor5YSQID4gYsOsbjsgIzUxMTAKK+WEkSA+IMOgbjsgIzUxMTEKK+WEkiA+IHLDujsgIzUxMTIKK+WEkyA+IHTDoWk7ICM1MTEzCivlhJQgPiBjaMOzdTsgIzUxMTQKK+WElSA+IGNow6FpOyAjNTExNQor5YSWID4gbMOhbjsgIzUxMTYKK+WElyA+IG7ErTsgIzUxMTcKK+WEmCA+IGrErW47ICM1MTE4CivlhJkgPiBxacOgbjsgIzUxMTkKK+WEmiA+IG3DqW5nOyAjNTExQQor5YSbID4gd8WtOyAjNTExQgor5YScID4gbsOtbmc7ICM1MTFDCivlhJ0gPiBxw61vbmc7ICM1MTFECivlhJ4gPiBuxK07ICM1MTFFCivlhJ8gPiBjaMOhbmc7ICM1MTFGCivlhKAgPiBsacOoOyAjNTEyMAor5YShID4gbMSVaTsgIzUxMjEKK+WEoiA+IGzHmjsgIzUxMjIKK+WEoyA+IGt1w6BuZzsgIzUxMjMKK+WEpCA+IGLDoG87ICM1MTI0CivlhKUgPiBkw7o7ICM1MTI1CivlhKYgPiBiacSBbzsgIzUxMjYKK+WEpyA+IHrEg247ICM1MTI3CivlhKggPiB6aMOtOyAjNTEyOAor5YSpID4gc8OsOyAjNTEyOQor5YSqID4gecWNdTsgIzUxMkEKK+WEqyA+IGjDoW87ICM1MTJCCivlhKwgPiBjaMOobjsgIzUxMkMKK+WErSA+IGNow6huOyAjNTEyRAor5YSuID4gbMOsOyAjNTEyRQor5YSvID4gdMOpbmc7ICM1MTJGCivlhLAgPiB3xJVpOyAjNTEzMAor5YSxID4gbMWPbmc7ICM1MTMxCivlhLIgPiBjaMWtOyAjNTEzMgor5YSzID4gY2jDoG47ICM1MTMzCivlhLQgPiByw6FuZzsgIzUxMzQKK+WEtSA+IHNoxas7ICM1MTM1CivlhLYgPiBow7lpOyAjNTEzNgor5YS3ID4gbMOsOyAjNTEzNwor5YS4ID4gbMO6bzsgIzUxMzgKK+WEuSA+IHrEg247ICM1MTM5CivlhLogPiBuw7pvOyAjNTEzQQor5YS7ID4gdMSDbmc7ICM1MTNCCivlhLwgPiB5xINuOyAjNTEzQwor5YS9ID4gbMSVaTsgIzUxM0QKK+WEviA+IG7DoG5nOyAjNTEzRQor5YS/ID4gw6lyOyAjNTEzRgor5YWAID4gd8O5OyAjNTE0MAor5YWBID4gecWtbjsgIzUxNDEKK+WFgiA+IHrEgW47ICM1MTQyCivlhYMgPiB5dcOhbjsgIzUxNDMKK+WFhCA+IHjEq29uZzsgIzUxNDQKK+WFhSA+IGNoxY1uZzsgIzUxNDUKK+WFhiA+IHpow6BvOyAjNTE0Ngor5YWHID4geMSrb25nOyAjNTE0Nwor5YWIID4geGnEgW47ICM1MTQ4CivlhYkgPiBndcSBbmc7ICM1MTQ5CivlhYogPiBkw7lpOyAjNTE0QQor5YWLID4ga8OoOyAjNTE0Qgor5YWMID4gZMO5aTsgIzUxNEMKK+WFjSA+IG1pxINuOyAjNTE0RAor5YWOID4gdMO5OyAjNTE0RQor5YWPID4gY2jDoW5nOyAjNTE0Rgor5YWQID4gw6lyOyAjNTE1MAor5YWRID4gZMO5aTsgIzUxNTEKK+WFkiA+IMOpcjsgIzUxNTIKK+WFkyA+IHjEq247ICM1MTUzCivlhZQgPiB0w7k7ICM1MTU0CivlhZUgPiBzw6w7ICM1MTU1CivlhZYgPiB5xINuOyAjNTE1Ngor5YWXID4gecSDbjsgIzUxNTcKK+WFmCA+IHNoxK07ICM1MTU4CivlhZkgPiBzaMOtJyAna8OoOyAjNTE1OQor5YWaID4gZMSDbmc7ICM1MTVBCivlhZsgPiBxacSBbjsgIzUxNUIKK+WFnCA+IGTFjXU7ICM1MTVDCivlhZ0gPiBmxJNuOyAjNTE1RAor5YWeID4gbcOhbzsgIzUxNUUKK+WFnyA+IHNoxJNuOyAjNTE1Rgor5YWgID4gZMWNdTsgIzUxNjAKK+WFoSA+IGLEg2knICdrw6g7ICM1MTYxCivlhaIgPiBqxKtuZzsgIzUxNjIKK+WFoyA+IGzErTsgIzUxNjMKK+WFpCA+IGh1w6FuZzsgIzUxNjQKK+WFpSA+IHLDuTsgIzUxNjUKK+WFpiA+IHfDoW5nOyAjNTE2Ngor5YWnID4gbsOoaTsgIzUxNjcKK+WFqCA+IHF1w6FuOyAjNTE2OAor5YWpID4gbGnEg25nOyAjNTE2OQor5YWqID4gecO6OyAjNTE2QQor5YWrID4gYsSBOyAjNTE2Qgor5YWsID4gZ8WNbmc7ICM1MTZDCivlha0gPiBsw6x1OyAjNTE2RAor5YWuID4geMSrOyAjNTE2RQor5YWwID4gbMOhbjsgIzUxNzAKK+WFsSA+IGfDsm5nOyAjNTE3MQor5YWyID4gdGnEgW47ICM1MTcyCivlhbMgPiBndcSBbjsgIzUxNzMKK+WFtCA+IHjEq25nOyAjNTE3NAor5YW1ID4gYsSrbmc7ICM1MTc1CivlhbYgPiBxw607ICM1MTc2CivlhbcgPiBqw7k7ICM1MTc3CivlhbggPiBkacSDbjsgIzUxNzgKK+WFuSA+IHrEqzsgIzUxNzkKK+WFuyA+IHnEg25nOyAjNTE3Qgor5YW8ID4gamnEgW47ICM1MTdDCivlhb0gPiBzaMOydTsgIzUxN0QKK+WFviA+IGrDrDsgIzUxN0UKK+WFvyA+IHnDrDsgIzUxN0YKK+WGgCA+IGrDrDsgIzUxODAKK+WGgSA+IGNoxINuOyAjNTE4MQor5YaCID4gasSrb25nOyAjNTE4Mgor5YaDID4gbWFvOyAjNTE4Mwor5YaEID4gcsSDbjsgIzUxODQKK+WGhSA+IG7DqGk7ICM1MTg1CivlhoYgPiB5dWFuOyAjNTE4Ngor5YaHID4gbcSDbzsgIzUxODcKK+WGiCA+IGfEgW5nOyAjNTE4OAor5YaJID4gcsSDbjsgIzUxODkKK+WGiiA+IGPDqDsgIzUxOEEKK+WGiyA+IGrEq29uZzsgIzUxOEIKK+WGjCA+IGPDqDsgIzUxOEMKK+WGjSA+IHrDoGk7ICM1MThECivlho4gPiBndcSDOyAjNTE4RQor5YaPID4gasStb25nOyAjNTE4Rgor5YaQID4gbcOgbzsgIzUxOTAKK+WGkSA+IHpow7J1OyAjNTE5MQor5YaSID4gbcOydTsgIzUxOTIKK+WGkyA+IGfDsnU7ICM1MTkzCivlhpQgPiB4xa07ICM1MTk0CivlhpUgPiBtacSDbjsgIzUxOTUKK+WGliA+IG3DrDsgIzUxOTYKK+WGlyA+IHLFj25nOyAjNTE5Nwor5YaYID4gecOtbjsgIzUxOTgKK+WGmSA+IHhpxJU7ICM1MTk5CivlhpogPiBrxINuOyAjNTE5QQor5YabID4gasWrbjsgIzUxOUIKK+WGnCA+IG7Ds25nOyAjNTE5Qwor5YadID4gecOtOyAjNTE5RAor5YaeID4gbcOtOyAjNTE5RQor5YafID4gc2jDrDsgIzUxOUYKK+WGoCA+IGd1xIFuOyAjNTFBMAor5YahID4gbcOpbmc7ICM1MUExCivlhqIgPiB6aMWPbmc7ICM1MUEyCivlhqMgPiBqw7k7ICM1MUEzCivlhqQgPiB5dcSBbjsgIzUxQTQKK+WGpSA+IG3DrW5nOyAjNTFBNQor5YamID4ga8OydTsgIzUxQTYKK+WGqCA+IGbDuTsgIzUxQTgKK+WGqSA+IHhpxJU7ICM1MUE5CivlhqogPiBtw6w7ICM1MUFBCivlhqsgPiBixKtuZzsgIzUxQUIKK+WGrCA+IGTFjW5nOyAjNTFBQwor5YatID4gdMOhaTsgIzUxQUQKK+WGriA+IGfEgW5nOyAjNTFBRQor5YavID4gZsOpbmc7ICM1MUFGCivlhrAgPiBixKtuZzsgIzUxQjAKK+WGsSA+IGjDuTsgIzUxQjEKK+WGsiA+IGNoxY1uZzsgIzUxQjIKK+WGsyA+IGp1w6k7ICM1MUIzCivlhrQgPiBow7k7ICM1MUI0CivlhrUgPiBrdcOgbmc7ICM1MUI1CivlhrYgPiB5xJU7ICM1MUI2CivlhrcgPiBsxJVuZzsgIzUxQjcKK+WGuCA+IHDDoG47ICM1MUI4CivlhrkgPiBmw7o7ICM1MUI5CivlhrogPiBtxK1uOyAjNTFCQQor5Ya7ID4gZMOybmc7ICM1MUJCCivlhrwgPiB4acSDbjsgIzUxQkMKK+WGvSA+IGxpw6g7ICM1MUJECivlhr4gPiB4acOhOyAjNTFCRQor5Ya/ID4gamnEgW47ICM1MUJGCivlh4AgPiBqw6xuZzsgIzUxQzAKK+WHgSA+IHNow7k7ICM1MUMxCivlh4IgPiBtxJVpOyAjNTFDMgor5YeDID4gdMO6OyAjNTFDMwor5YeEID4gccSrOyAjNTFDNAor5YeFID4gZ8O5OyAjNTFDNQor5YeGID4gemjFrW47ICM1MUM2Civlh4cgPiBzw7JuZzsgIzUxQzcKK+WHiCA+IGrDrG5nOyAjNTFDOAor5YeJID4gbGnDoW5nOyAjNTFDOQor5YeKID4gccOsbmc7ICM1MUNBCivlh4sgPiBkacSBbzsgIzUxQ0IKK+WHjCA+IGzDrW5nOyAjNTFDQwor5YeNID4gZMOybmc7ICM1MUNECivlh44gPiBnw6BuOyAjNTFDRQor5YePID4gamnEg247ICM1MUNGCivlh5AgPiB5xKtuOyAjNTFEMAor5YeRID4gY8OydTsgIzUxRDEKK+WHkiA+IHnDrTsgIzUxRDIKK+WHkyA+IGzDrDsgIzUxRDMKK+WHlCA+IGPEgW5nOyAjNTFENAor5YeVID4gbcStbmc7ICM1MUQ1Civlh5YgPiB6aHXElW47ICM1MUQ2Civlh5cgPiBjw7ppOyAjNTFENwor5YeYID4gc8SrOyAjNTFEOAor5YeZID4gZMO6bzsgIzUxRDkKK+WHmiA+IGrDrG47ICM1MURBCivlh5sgPiBsxK1uOyAjNTFEQgor5YecID4gbMStbjsgIzUxREMKK+WHnSA+IG7DrW5nOyAjNTFERAor5YeeID4geMSrOyAjNTFERQor5YefID4gZMO6OyAjNTFERgor5YegID4gasSrOyAjNTFFMAor5YehID4gZsOhbjsgIzUxRTEKK+WHoiA+IGbDoW47ICM1MUUyCivlh6MgPiBmw6FuOyAjNTFFMwor5YekID4gZsOobmc7ICM1MUU0Civlh6UgPiBqxas7ICM1MUU1Civlh6YgPiBjaMWtOyAjNTFFNgor5YeoID4gZsSTbmc7ICM1MUU4Civlh6sgPiBmw7o7ICM1MUVCCivlh6wgPiBmxJNuZzsgIzUxRUMKK+WHrSA+IHDDrW5nOyAjNTFFRAor5YeuID4gZsSTbmc7ICM1MUVFCivlh68gPiBrxINpOyAjNTFFRgor5YewID4gaHXDoW5nOyAjNTFGMAor5YexID4ga8SDaTsgIzUxRjEKK+WHsiA+IGfEgW47ICM1MUYyCivlh7MgPiBkw6huZzsgIzUxRjMKK+WHtCA+IHDDrW5nOyAjNTFGNAor5Ye1ID4gccWrOyAjNTFGNQor5Ye2ID4geMSrb25nOyAjNTFGNgor5Ye3ID4ga3XDoGk7ICM1MUY3Civlh7ggPiB0xas7ICM1MUY4Civlh7kgPiDEgW87ICM1MUY5Civlh7ogPiBjaMWrOyAjNTFGQQor5Ye7ID4gasOtOyAjNTFGQgor5Ye8ID4gZMOgbmc7ICM1MUZDCivlh70gPiBow6FuOyAjNTFGRAor5Ye+ID4gaMOhbjsgIzUxRkUKK+WHvyA+IHrDoW87ICM1MUZGCivliIAgPiBkxIFvOyAjNTIwMAor5YiBID4gZGnEgW87ICM1MjAxCivliIIgPiBkxIFvOyAjNTIwMgor5YiDID4gcsOobjsgIzUyMDMKK+WIhCA+IHLDqG47ICM1MjA0CivliIUgPiBjaHXEgW5nOyAjNTIwNQor5YiGID4gZsSTbjsgIzUyMDYKK+WIhyA+IHFpxJM7ICM1MjA3CivliIggPiB5w6w7ICM1MjA4CivliIkgPiBqxKs7ICM1MjA5CivliIogPiBrxIFuOyAjNTIwQQor5YiLID4gcWnDoG47ICM1MjBCCivliIwgPiBjxa1uOyAjNTIwQwor5YiNID4gY2jDujsgIzUyMEQKK+WIjiA+IHfElW47ICM1MjBFCivliI8gPiBqxKs7ICM1MjBGCivliJAgPiBkxINuOyAjNTIxMAor5YiRID4geMOtbmc7ICM1MjExCivliJIgPiBodcOhOyAjNTIxMgor5YiTID4gd8OhbjsgIzUyMTMKK+WIlCA+IGp1w6k7ICM1MjE0CivliJUgPiBsw607ICM1MjE1CivliJYgPiB5dcOoOyAjNTIxNgor5YiXID4gbGnDqDsgIzUyMTcKK+WImCA+IGzDrXU7ICM1MjE4CivliJkgPiB6w6k7ICM1MjE5CivliJogPiBnxIFuZzsgIzUyMUEKK+WImyA+IGNodcOgbmc7ICM1MjFCCivliJwgPiBmw7o7ICM1MjFDCivliJ0gPiBjaMWrOyAjNTIxRAor5YieID4gccO5OyAjNTIxRQor5YifID4gasWrOyAjNTIxRgor5YigID4gc2jEgW47ICM1MjIwCivliKEgPiBtxK1uOyAjNTIyMQor5YiiID4gbMOtbmc7ICM1MjIyCivliKMgPiB6aMWNbmc7ICM1MjIzCivliKQgPiBww6BuOyAjNTIyNAor5YilID4gYmnDqTsgIzUyMjUKK+WIpiA+IGppw6k7ICM1MjI2CivliKcgPiBqacOpOyAjNTIyNwor5YioID4gYsOgbzsgIzUyMjgKK+WIqSA+IGzDrDsgIzUyMjkKK+WIqiA+IHNoxIFuOyAjNTIyQQor5YirID4gYmnDqTsgIzUyMkIKK+WIrCA+IGNoxINuOyAjNTIyQwor5YitID4gasStbmc7ICM1MjJECivliK4gPiBndcSBOyAjNTIyRQor5YivID4gZ8STbjsgIzUyMkYKK+WIsCA+IGTDoG87ICM1MjMwCivliLEgPiBjaHXDoG5nOyAjNTIzMQor5YiyID4ga8WraTsgIzUyMzIKK+WIsyA+IGvFqzsgIzUyMzMKK+WItCA+IGTDuW87ICM1MjM0CivliLUgPiDDqHI7ICM1MjM1CivliLYgPiB6aMOsOyAjNTIzNgor5Yi3ID4gc2h1xIE7ICM1MjM3CivliLggPiBxdcOgbjsgIzUyMzgKK+WIuSA+IGNow6A7ICM1MjM5CivliLogPiBjw6w7ICM1MjNBCivliLsgPiBrw6g7ICM1MjNCCivliLwgPiBqacOpOyAjNTIzQwor5Yi9ID4gZ8O5aTsgIzUyM0QKK+WIviA+IGPDrDsgIzUyM0UKK+WIvyA+IGfDuWk7ICM1MjNGCivliYAgPiBrxINpOyAjNTI0MAor5YmBID4gZMO5bzsgIzUyNDEKK+WJgiA+IGrDrDsgIzUyNDIKK+WJgyA+IHTDrDsgIzUyNDMKK+WJhCA+IGrErW5nOyAjNTI0NAor5YmFID4gbMOzdTsgIzUyNDUKK+WJhiA+IGfEk247ICM1MjQ2CivliYcgPiB6w6k7ICM1MjQ3CivliYggPiB5dcSBbjsgIzUyNDgKK+WJiSA+IGPDuW87ICM1MjQ5CivliYogPiB4dcSTOyAjNTI0QQor5YmLID4ga8OoOyAjNTI0Qgor5YmMID4gbMOgOyAjNTI0Qwor5YmNID4gcWnDoW47ICM1MjRECivliY4gPiBjaMOgOyAjNTI0RQor5YmPID4gY2h1w6BuZzsgIzUyNEYKK+WJkCA+IGd1xIM7ICM1MjUwCivliZEgPiBqacOgbjsgIzUyNTEKK+WJkiA+IGPDuW87ICM1MjUyCivliZMgPiBsw607ICM1MjUzCivliZQgPiB0xKs7ICM1MjU0CivliZUgPiBmw6hpOyAjNTI1NQor5YmWID4gcMWNdTsgIzUyNTYKK+WJlyA+IGNoxINuOyAjNTI1Nwor5YmYID4gccOtOyAjNTI1OAor5YmZID4gY2h1w6BuZzsgIzUyNTkKK+WJmiA+IHrDrDsgIzUyNUEKK+WJmyA+IGfEgW5nOyAjNTI1Qgor5YmcID4gd8SBbjsgIzUyNUMKK+WJnSA+IGLFjTsgIzUyNUQKK+WJniA+IGrEqzsgIzUyNUUKK+WJnyA+IGTFq287ICM1MjVGCivliaAgPiBxw61uZzsgIzUyNjAKK+WJoSA+IHnEg247ICM1MjYxCivliaIgPiB6aMO6bzsgIzUyNjIKK+WJoyA+IGppw6BuOyAjNTI2Mwor5YmkID4gasOsOyAjNTI2NAor5YmlID4gYsWNOyAjNTI2NQor5YmmID4gecSBbjsgIzUyNjYKK+WJpyA+IGrDuTsgIzUyNjcKK+WJqCA+IGjDuW87ICM1MjY4CivliakgPiBzaMOobmc7ICM1MjY5CivliaogPiBqacSDbjsgIzUyNkEKK+WJqyA+IGTDum87ICM1MjZCCivliawgPiBkdcSBbjsgIzUyNkMKK+WJrSA+IHfFqzsgIzUyNkQKK+WJriA+IGd1xIM7ICM1MjZFCivlia8gPiBmw7k7ICM1MjZGCivlibAgPiBzaMOobmc7ICM1MjcwCivlibEgPiBqacOgbjsgIzUyNzEKK+WJsiA+IGfEkzsgIzUyNzIKK+WJsyA+IHpoxIE7ICM1MjczCivlibQgPiBrxINpOyAjNTI3NAor5Ym1ID4gY2h1w6BuZzsgIzUyNzUKK+WJtiA+IGp1xIFuOyAjNTI3Ngor5Ym3ID4gY2jEg247ICM1Mjc3CivlibggPiB0dcOhbjsgIzUyNzgKK+WJuSA+IGzDuTsgIzUyNzkKK+WJuiA+IGzDrTsgIzUyN0EKK+WJuyA+IGbDs3U7ICM1MjdCCivlibwgPiBzaMSBbjsgIzUyN0MKK+WJvSA+IHBpw6BvOyAjNTI3RAor5Ym+ID4ga8WNdTsgIzUyN0UKK+WJvyA+IGppxINvOyAjNTI3Rgor5YqAID4gZ3XEgTsgIzUyODAKK+WKgSA+IHFpxIFvOyAjNTI4MQor5YqCID4ganXDqTsgIzUyODIKK+WKgyA+IGh1w6A7ICM1MjgzCivlioQgPiB6aMOhOyAjNTI4NAor5YqFID4gemjDuW87ICM1Mjg1CivlioYgPiBsacOhbjsgIzUyODYKK+WKhyA+IGrDuTsgIzUyODcKK+WKiCA+IHDEqzsgIzUyODgKK+WKiSA+IGzDrXU7ICM1Mjg5CivlioogPiBnw7lpOyAjNTI4QQor5YqLID4gamnEg287ICM1MjhCCivliowgPiBnw7lpOyAjNTI4Qwor5YqNID4gamnDoG47ICM1MjhECivlio4gPiBqacOgbjsgIzUyOEUKK+WKjyA+IHTEgW5nOyAjNTI4Rgor5YqQID4gaMWrbzsgIzUyOTAKK+WKkSA+IGrDrDsgIzUyOTEKK+WKkiA+IGppw6BuOyAjNTI5Mgor5YqTID4gecOsOyAjNTI5Mwor5YqUID4gamnDoG47ICM1Mjk0CivlipUgPiB6aMOtOyAjNTI5NQor5YqWID4gY2jDoW47ICM1Mjk2CivlipcgPiBjdcOhbjsgIzUyOTcKK+WKmCA+IG3DszsgIzUyOTgKK+WKmSA+IGzDrTsgIzUyOTkKK+WKmiA+IHpow7o7ICM1MjlBCivlipsgPiBsw6w7ICM1MjlCCivlipwgPiB5xIE7ICM1MjlDCivlip0gPiBxdcOgbjsgIzUyOUQKK+WKniA+IGLDoG47ICM1MjlFCivlip8gPiBnxY1uZzsgIzUyOUYKK+WKoCA+IGppxIE7ICM1MkEwCivliqEgPiB3w7k7ICM1MkExCivliqIgPiBtw6BpOyAjNTJBMgor5YqjID4gbGnDqDsgIzUyQTMKK+WKpCA+IGrDrG47ICM1MkE0CivliqUgPiBrxJNuZzsgIzUyQTUKK+WKpiA+IHhpw6k7ICM1MkE2CivliqcgPiB6aMStOyAjNTJBNwor5YqoID4gZMOybmc7ICM1MkE4CivliqkgPiB6aMO5OyAjNTJBOQor5YqqID4gbsWtOyAjNTJBQQor5YqrID4gamnDqTsgIzUyQUIKK+WKrCA+IHHDujsgIzUyQUMKK+WKrSA+IHNow6BvOyAjNTJBRAor5YquID4gecOsOyAjNTJBRQor5YqvID4gemjFqzsgIzUyQUYKK+WKsCA+IG1pxINvOyAjNTJCMAor5YqxID4gbMOsOyAjNTJCMQor5YqyID4gasOsbmc7ICM1MkIyCivlirMgPiBsw6FvOyAjNTJCMwor5Yq0ID4gbMOhbzsgIzUyQjQKK+WKtSA+IGp1w6BuOyAjNTJCNQor5Yq2ID4ga8WPdTsgIzUyQjYKK+WKtyA+IHnDoW5nOyAjNTJCNwor5Yq4ID4gd8SBOyAjNTJCOAor5Yq5ID4geGnDoG87ICM1MkI5CivlirogPiBtw7N1OyAjNTJCQQor5Yq7ID4ga3XEgW5nOyAjNTJCQgor5Yq8ID4gamnDqTsgIzUyQkMKK+WKvSA+IGxpw6g7ICM1MkJECivlir4gPiBow6k7ICM1MkJFCivlir8gPiBzaMOsOyAjNTJCRgor5YuAID4ga8OoOyAjNTJDMAor5YuBID4gasOsbmc7ICM1MkMxCivli4IgPiBow6FvOyAjNTJDMgor5YuDID4gYsOzOyAjNTJDMwor5YuEID4gbcStbjsgIzUyQzQKK+WLhSA+IGNow6w7ICM1MkM1Civli4YgPiBsw6FuZzsgIzUyQzYKK+WLhyA+IHnFj25nOyAjNTJDNwor5YuIID4gecWPbmc7ICM1MkM4Civli4kgPiBtacSDbjsgIzUyQzkKK+WLiiA+IGvDqDsgIzUyQ0EKK+WLiyA+IHjFq247ICM1MkNCCivli4wgPiBqdcOgbjsgIzUyQ0MKK+WLjSA+IHHDrW5nOyAjNTJDRAor5YuOID4gbMO5OyAjNTJDRQor5YuPID4gcMWPdTsgIzUyQ0YKK+WLkCA+IG3ElW5nOyAjNTJEMAor5YuRID4gbMOgaTsgIzUyRDEKK+WLkiA+IGzDqDsgIzUyRDIKK+WLkyA+IGvDoGk7ICM1MkQzCivli5QgPiBtacSDbjsgIzUyRDQKK+WLlSA+IGTDsm5nOyAjNTJENQor5YuWID4geMO5OyAjNTJENgor5YuXID4geMO5OyAjNTJENwor5YuYID4ga8SBbjsgIzUyRDgKK+WLmSA+IHfDuTsgIzUyRDkKK+WLmiA+IHnDrDsgIzUyREEKK+WLmyA+IHjFq247ICM1MkRCCivli5wgPiB3xJVuZzsgIzUyREMKK+WLnSA+IHNow6huZzsgIzUyREQKK+WLniA+IGzDoW87ICM1MkRFCivli58gPiBtw7k7ICM1MkRGCivli6AgPiBsw7k7ICM1MkUwCivli6EgPiBwacOgbzsgIzUyRTEKK+WLoiA+IHNow6w7ICM1MkUyCivli6MgPiBqxKs7ICM1MkUzCivli6QgPiBxw61uOyAjNTJFNAor5YulID4gcWnEg25nOyAjNTJFNQor5YumID4gamnEg287ICM1MkU2Civli6cgPiBxdcOgbjsgIzUyRTcKK+WLqCA+IHnEg25nOyAjNTJFOAor5YupID4gecOsOyAjNTJFOQor5YuqID4ganXDqTsgIzUyRUEKK+WLqyA+IGbDoW47ICM1MkVCCivli6wgPiBqdcOgbjsgIzUyRUMKK+WLrSA+IHTDs25nOyAjNTJFRAor5YuuID4gasO5OyAjNTJFRQor5YuvID4gZMSBbjsgIzUyRUYKK+WLsCA+IHhpw6k7ICM1MkYwCivli7EgPiBtw6BpOyAjNTJGMQor5YuyID4geMWrbjsgIzUyRjIKK+WLsyA+IHjFq247ICM1MkYzCivli7QgPiBsx5w7ICM1MkY0Civli7UgPiBsw6w7ICM1MkY1Civli7YgPiBjaMOoOyAjNTJGNgor5Yu3ID4gcsOhbmc7ICM1MkY3Civli7ggPiBxdcOgbjsgIzUyRjgKK+WLuSA+IGLEgW87ICM1MkY5Civli7ogPiBzaMOhbzsgIzUyRkEKK+WLuyA+IHnDum47ICM1MkZCCivli7wgPiBqxKt1OyAjNTJGQwor5Yu9ID4gYsOgbzsgIzUyRkQKK+WLviA+IGfFjXU7ICM1MkZFCivli78gPiB3w7k7ICM1MkZGCivljIAgPiB5w7puOyAjNTMwMAor5YyDID4gZ8OgaTsgIzUzMDMKK+WMhCA+IGfDoGk7ICM1MzA0CivljIUgPiBixIFvOyAjNTMwNQor5YyGID4gY8WNbmc7ICM1MzA2CivljIggPiB4xKtvbmc7ICM1MzA4CivljIkgPiBwxJNuZzsgIzUzMDkKK+WMiiA+IGrDujsgIzUzMEEKK+WMiyA+IHTDoW87ICM1MzBCCivljIwgPiBnw6k7ICM1MzBDCivljI0gPiBww7o7ICM1MzBECivljI4gPiDDoG47ICM1MzBFCivljI8gPiBww6FvOyAjNTMwRgor5YyQID4gZsO6OyAjNTMxMAor5YyRID4gZ8WNbmc7ICM1MzExCivljJIgPiBkw6E7ICM1MzEyCivljJMgPiBqw6x1OyAjNTMxMwor5YyUID4gccSrb25nOyAjNTMxNAor5YyVID4gYsStOyAjNTMxNQor5YyWID4gaHXDoDsgIzUzMTYKK+WMlyA+IGLElWk7ICM1MzE3CivljJggPiBuxINvOyAjNTMxOAor5YyZID4gY2jDrTsgIzUzMTkKK+WMmiA+IGbEgW5nOyAjNTMxQQor5YybID4gasOsdTsgIzUzMUIKK+WMnCA+IHnDrTsgIzUzMUMKK+WMnSA+IHrEgTsgIzUzMUQKK+WMniA+IGppw6BuZzsgIzUzMUUKK+WMnyA+IGvDoG5nOyAjNTMxRgor5YygID4gamnDoG5nOyAjNTMyMAor5YyhID4ga3XEgW5nOyAjNTMyMQor5YyiID4gaMWrOyAjNTMyMgor5YyjID4geGnDoTsgIzUzMjMKK+WMpCA+IHHFqzsgIzUzMjQKK+WMpSA+IGJpw6BuOyAjNTMyNQor5YymID4gZ8WtaTsgIzUzMjYKK+WMpyA+IHFpw6g7ICM1MzI3CivljKggPiB6xIFuZzsgIzUzMjgKK+WMqSA+IGt1xIFuZzsgIzUzMjkKK+WMqiA+IGbElWk7ICM1MzJBCivljKsgPiBoxas7ICM1MzJCCivljKwgPiB0w7N1OyAjNTMyQwor5YytID4gZ8WtaTsgIzUzMkQKK+WMriA+IGfDuWk7ICM1MzJFCivljK8gPiBow7lpOyAjNTMyRgor5YywID4gZMSBbjsgIzUzMzAKK+WMsSA+IGfDuWk7ICM1MzMxCivljLIgPiBsacOhbjsgIzUzMzIKK+WMsyA+IGxpw6FuOyAjNTMzMwor5Yy0ID4gc3XEg247ICM1MzM0CivljLUgPiBkw7o7ICM1MzM1CivljLYgPiBqw6x1OyAjNTMzNgor5Yy3ID4gccO6OyAjNTMzNwor5Yy4ID4geMStOyAjNTMzOAor5Yy5ID4gcMStOyAjNTMzOQor5Yy6ID4gccWrOyAjNTMzQQor5Yy7ID4gecOsOyAjNTMzQgor5Yy8ID4gcWnDoDsgIzUzM0MKK+WMvSA+IHnEg247ICM1MzNECivljL4gPiBiacSDbjsgIzUzM0UKK+WMvyA+IG7DrDsgIzUzM0YKK+WNgCA+IHHFqzsgIzUzNDAKK+WNgSA+IHNow607ICM1MzQxCivljYIgPiB4w6xuOyAjNTM0Mgor5Y2DID4gcWnEgW47ICM1MzQzCivljYQgPiBuacOgbjsgIzUzNDQKK+WNhSA+IHPDoDsgIzUzNDUKK+WNhiA+IHrDujsgIzUzNDYKK+WNhyA+IHNoxJNuZzsgIzUzNDcKK+WNiCA+IHfFrTsgIzUzNDgKK+WNiSA+IGjDuWk7ICM1MzQ5CivljYogPiBiw6BuOyAjNTM0QQor5Y2LID4gc2jDrDsgIzUzNEIKK+WNjCA+IHjDrDsgIzUzNEMKK+WNjSA+IHfDoG47ICM1MzRECivljY4gPiBodcOhOyAjNTM0RQor5Y2PID4geGnDqTsgIzUzNEYKK+WNkCA+IHfDoG47ICM1MzUwCivljZEgPiBixJNpOyAjNTM1MQor5Y2SID4gesO6OyAjNTM1Mgor5Y2TID4gemjFq287ICM1MzUzCivljZQgPiB4acOpOyAjNTM1NAor5Y2VID4gZMSBbjsgIzUzNTUKK+WNliA+IG3DoGk7ICM1MzU2CivljZcgPiBuw6FuOyAjNTM1Nwor5Y2YID4gZMSBbjsgIzUzNTgKK+WNmSA+IGrDrTsgIzUzNTkKK+WNmiA+IGLDszsgIzUzNUEKK+WNmyA+IHNodcOgaTsgIzUzNUIKK+WNnCA+IGLFrTsgIzUzNUMKK+WNnSA+IGt1w6BuZzsgIzUzNUQKK+WNniA+IGJpw6BuOyAjNTM1RQor5Y2fID4gYsWtOyAjNTM1Rgor5Y2gID4gemjEgW47ICM1MzYwCivljaEgPiBxacSDOyAjNTM2MQor5Y2iID4gbMO6OyAjNTM2Mgor5Y2jID4gecWPdTsgIzUzNjMKK+WNpCA+IGzFrTsgIzUzNjQKK+WNpSA+IHjEqzsgIzUzNjUKK+WNpiA+IGd1w6A7ICM1MzY2CivljacgPiB3w7I7ICM1MzY3CivljaggPiB4acOoOyAjNTM2OAor5Y2pID4gamnDqTsgIzUzNjkKK+WNqiA+IGppw6k7ICM1MzZBCivljasgPiB3w6hpOyAjNTM2Qgor5Y2sID4gw6FuZzsgIzUzNkMKK+WNrSA+IHHDrW9uZzsgIzUzNkQKK+WNriA+IHpoxKs7ICM1MzZFCivlja8gPiBtxINvOyAjNTM2Rgor5Y2wID4gecOsbjsgIzUzNzAKK+WNsSA+IHfEk2k7ICM1MzcxCivljbIgPiBzaMOgbzsgIzUzNzIKK+WNsyA+IGrDrTsgIzUzNzMKK+WNtCA+IHF1w6g7ICM1Mzc0CivljbUgPiBsdcSDbjsgIzUzNzUKK+WNtiA+IHNow6w7ICM1Mzc2CivljbcgPiBqdcOgbjsgIzUzNzcKK+WNuCA+IHhpw6g7ICM1Mzc4CivljbkgPiB4w7k7ICM1Mzc5CivljbogPiBqxK1uOyAjNTM3QQor5Y27ID4gcXXDqDsgIzUzN0IKK+WNvCA+IHfDuTsgIzUzN0MKK+WNvSA+IGrDrTsgIzUzN0QKK+WNviA+IMOoOyAjNTM3RQor5Y2/ID4gccSrbmc7ICM1MzdGCivljoAgPiB4xKs7ICM1MzgwCivljoIgPiBow6BuOyAjNTM4Mgor5Y6DID4gemjEgW47ICM1MzgzCivljoQgPiDDqDsgIzUzODQKK+WOhSA+IHTEq25nOyAjNTM4NQor5Y6GID4gbMOsOyAjNTM4Ngor5Y6HID4gemjDqTsgIzUzODcKK+WOiCA+IGjEg247ICM1Mzg4CivljokgPiBsw6w7ICM1Mzg5CivljoogPiB5xIM7ICM1MzhBCivljosgPiB5xIE7ICM1MzhCCivljowgPiB5w6BuOyAjNTM4Qwor5Y6NID4gc2jDqDsgIzUzOEQKK+WOjiA+IHpoxK07ICM1MzhFCivljo8gPiB6aMSDOyAjNTM4Rgor5Y6QID4gcMOhbmc7ICM1MzkwCivljpIgPiBow6k7ICM1MzkyCivljpMgPiB5w6E7ICM1MzkzCivljpQgPiB6aMOsOyAjNTM5NAor5Y6VID4gY8OoOyAjNTM5NQor5Y6WID4gcMOhbmc7ICM1Mzk2CivljpcgPiB0w607ICM1Mzk3CivljpggPiBsw607ICM1Mzk4CivljpkgPiBzaMOoOyAjNTM5OQor5Y6aID4gaMOydTsgIzUzOUEKK+WOmyA+IHTEq25nOyAjNTM5Qgor5Y6cID4gesWraTsgIzUzOUMKK+WOnSA+IGPDuW87ICM1MzlECivljp4gPiBmw6hpOyAjNTM5RQor5Y6fID4geXXDoW47ICM1MzlGCivljqAgPiBjw6g7ICM1M0EwCivljqEgPiB5dcOhbjsgIzUzQTEKK+WOoiA+IHhpxIFuZzsgIzUzQTIKK+WOoyA+IHnEg247ICM1M0EzCivljqQgPiBsw6w7ICM1M0E0CivljqUgPiBqdcOpOyAjNTNBNQor5Y6mID4gc2jDoDsgIzUzQTYKK+WOpyA+IGRpxIFuOyAjNTNBNwor5Y6oID4gY2jDujsgIzUzQTgKK+WOqSA+IGrDrHU7ICM1M0E5CivljqogPiBxw61uOyAjNTNBQQor5Y6rID4gw6FvOyAjNTNBQgor5Y6sID4gZ8WtaTsgIzUzQUMKK+WOrSA+IHnDoG47ICM1M0FECivljq4gPiBzxKs7ICM1M0FFCivljq8gPiBsw6w7ICM1M0FGCivljrAgPiBjaMSDbmc7ICM1M0IwCivljrEgPiBsw6FuOyAjNTNCMQor5Y6yID4gbMOsOyAjNTNCMgor5Y6zID4gecOhbjsgIzUzQjMKK+WOtCA+IHnEg247ICM1M0I0CivljrUgPiB5dcOhbjsgIzUzQjUKK+WOtiA+IHPEqzsgIzUzQjYKK+WOtyA+IGfFjW5nOyAjNTNCNwor5Y64ID4gbMOtbjsgIzUzQjgKK+WOuSA+IHHDrXU7ICM1M0I5CivljrogPiBxw7k7ICM1M0JBCivljrsgPiBxw7k7ICM1M0JCCivljr0gPiBsxJVpOyAjNTNCRAor5Y6+ID4gZMWrOyAjNTNCRQor5Y6/ID4geGnDoG47ICM1M0JGCivlj4AgPiB6aHXEgW47ICM1M0MwCivlj4EgPiBzxIFuOyAjNTNDMQor5Y+CID4gY8SBbjsgIzUzQzIKK+WPgyA+IGPEgW47ICM1M0MzCivlj4QgPiBjxIFuOyAjNTNDNAor5Y+FID4gY8SBbjsgIzUzQzUKK+WPhiA+IMOgaTsgIzUzQzYKK+WPhyA+IGTDoGk7ICM1M0M3Civlj4ggPiB5w7J1OyAjNTNDOAor5Y+JID4gY2hhOyAjNTNDOQor5Y+KID4gasOtOyAjNTNDQQor5Y+LID4gecWPdTsgIzUzQ0IKK+WPjCA+IHNodcSBbmc7ICM1M0NDCivlj40gPiBmxINuOyAjNTNDRAor5Y+OID4gc2jFjXU7ICM1M0NFCivlj48gPiBndcOgaTsgIzUzQ0YKK+WPkCA+IGLDoTsgIzUzRDAKK+WPkSA+IGbEgTsgIzUzRDEKK+WPkiA+IHLDuW87ICM1M0QyCivlj5MgPiBzaMOsOyAjNTNEMwor5Y+UID4gc2jFqzsgIzUzRDQKK+WPlSA+IHpow7pvOyAjNTNENQor5Y+WID4gccWrOyAjNTNENgor5Y+XID4gc2jDsnU7ICM1M0Q3Civlj5ggPiBiacOgbjsgIzUzRDgKK+WPmSA+IHjDuTsgIzUzRDkKK+WPmiA+IGppxIM7ICM1M0RBCivlj5sgPiBww6BuOyAjNTNEQgor5Y+cID4gc8WPdTsgIzUzREMKK+WPnSA+IGfDoG87ICM1M0RECivlj54gPiB3w6hpOyAjNTNERQor5Y+fID4gc8WPdTsgIzUzREYKK+WPoCA+IGRpw6k7ICM1M0UwCivlj6EgPiByw7lpOyAjNTNFMQor5Y+iID4gY8Ozbmc7ICM1M0UyCivlj6MgPiBrxY91OyAjNTNFMwor5Y+kID4gZ8WtOyAjNTNFNAor5Y+lID4gasO5OyAjNTNFNQor5Y+mID4gbMOsbmc7ICM1M0U2Civlj6cgPiBndcSDOyAjNTNFNwor5Y+oID4gdMSBbzsgIzUzRTgKK+WPqSA+IGvDsnU7ICM1M0U5Civlj6ogPiB6aMStOyAjNTNFQQor5Y+rID4gamnDoG87ICM1M0VCCivlj6wgPiB6aMOgbzsgIzUzRUMKK+WPrSA+IGLEgTsgIzUzRUQKK+WPriA+IGTEq25nOyAjNTNFRQor5Y+vID4ga8SVOyAjNTNFRgor5Y+wID4gdMOhaTsgIzUzRjAKK+WPsSA+IGNow6w7ICM1M0YxCivlj7IgPiBzaMStOyAjNTNGMgor5Y+zID4gecOydTsgIzUzRjMKK+WPtCA+IHHDrXU7ICM1M0Y0Civlj7UgPiBwxY87ICM1M0Y1Civlj7YgPiB4acOpOyAjNTNGNgor5Y+3ID4gaMOgbzsgIzUzRjcKK+WPuCA+IHPEqzsgIzUzRjgKK+WPuSA+IHTDoG47ICM1M0Y5Civlj7ogPiBjaMStOyAjNTNGQQor5Y+7ID4gbMOoOyAjNTNGQgor5Y+8ID4gZGnEgW87ICM1M0ZDCivlj70gPiBqxKs7ICM1M0ZECivlj78gPiBoxY1uZzsgIzUzRkYKK+WQgCA+IG1pxJM7ICM1NDAwCivlkIEgPiB4xas7ICM1NDAxCivlkIIgPiBtw6FuZzsgIzU0MDIKK+WQgyA+IGNoxKs7ICM1NDAzCivlkIQgPiBnw6g7ICM1NDA0CivlkIUgPiB4dcSBbjsgIzU0MDUKK+WQhiA+IHnEgW87ICM1NDA2CivlkIcgPiB6xK07ICM1NDA3CivlkIggPiBow6k7ICM1NDA4CivlkIkgPiBqw607ICM1NDA5CivlkIogPiBkacOgbzsgIzU0MEEKK+WQiyA+IGPDuW47ICM1NDBCCivlkIwgPiB0w7NuZzsgIzU0MEMKK+WQjSA+IG3DrW5nOyAjNTQwRAor5ZCOID4gaMOydTsgIzU0MEUKK+WQjyA+IGzDrDsgIzU0MEYKK+WQkCA+IHTFrTsgIzU0MTAKK+WQkSA+IHhpw6BuZzsgIzU0MTEKK+WQkiA+IHpow6A7ICM1NDEyCivlkJMgPiB4acOgOyAjNTQxMwor5ZCUID4gecSVOyAjNTQxNAor5ZCVID4gbMeaOyAjNTQxNQor5ZCWID4gxIE7ICM1NDE2CivlkJcgPiBtYTsgIzU0MTcKK+WQmCA+IMWPdTsgIzU0MTgKK+WQmSA+IHh1xJM7ICM1NDE5CivlkJogPiB5xKs7ICM1NDFBCivlkJsgPiBqxatuOyAjNTQxQgor5ZCcID4gY2jFj3U7ICM1NDFDCivlkJ0gPiBsw6xuOyAjNTQxRAor5ZCeID4gdMWrbjsgIzU0MUUKK+WQnyA+IHnDrW47ICM1NDFGCivlkKAgPiBmw6hpOyAjNTQyMAor5ZChID4gYsStOyAjNTQyMQor5ZCiID4gccOsbjsgIzU0MjIKK+WQoyA+IHHDrG47ICM1NDIzCivlkKQgPiBqacOoOyAjNTQyNAor5ZClID4gYsO5OyAjNTQyNQor5ZCmID4gZsWPdTsgIzU0MjYKK+WQpyA+IGJhOyAjNTQyNwor5ZCoID4gZMWrbjsgIzU0MjgKK+WQqSA+IGbEk247ICM1NDI5CivlkKogPiDDqTsgIzU0MkEKK+WQqyA+IGjDoW47ICM1NDJCCivlkKwgPiB0xKtuZzsgIzU0MkMKK+WQrSA+IGjDoW5nOyAjNTQyRAor5ZCuID4gc2jFrW47ICM1NDJFCivlkK8gPiBxxK07ICM1NDJGCivlkLAgPiBow7NuZzsgIzU0MzAKK+WQsSA+IHpoxKs7ICM1NDMxCivlkLIgPiBzaMSVbjsgIzU0MzIKK+WQsyA+IHfDujsgIzU0MzMKK+WQtCA+IHfDujsgIzU0MzQKK+WQtSA+IGNoxINvOyAjNTQzNQor5ZC2ID4gbsOoOyAjNTQzNgor5ZC3ID4geHXDqDsgIzU0MzcKK+WQuCA+IHjEqzsgIzU0MzgKK+WQuSA+IGNoxatpOyAjNTQzOQor5ZC6ID4gZMWNdTsgIzU0M0EKK+WQuyA+IHfElW47ICM1NDNCCivlkLwgPiBoxY91OyAjNTQzQwor5ZC9ID4gw7N1OyAjNTQzRAor5ZC+ID4gd8O6OyAjNTQzRQor5ZC/ID4gZ8OgbzsgIzU0M0YKK+WRgCA+IHnEgTsgIzU0NDAKK+WRgSA+IGrDuW47ICM1NDQxCivlkYIgPiBsx5o7ICM1NDQyCivlkYMgPiDDqDsgIzU0NDMKK+WRhCA+IGfDqTsgIzU0NDQKK+WRhSA+IG3DqWk7ICM1NDQ1CivlkYYgPiDDoWk7ICM1NDQ2CivlkYcgPiBxxK07ICM1NDQ3CivlkYggPiBjaMOpbmc7ICM1NDQ4CivlkYkgPiB3w7o7ICM1NDQ5CivlkYogPiBnw6BvOyAjNTQ0QQor5ZGLID4gZsWrOyAjNTQ0Qgor5ZGMID4gamnDoG87ICM1NDRDCivlkY0gPiBoxY1uZzsgIzU0NEQKK+WRjiA+IGNoxK07ICM1NDRFCivlkY8gPiBzaMSTbmc7ICM1NDRGCivlkZAgPiBuw6g7ICM1NDUwCivlkZEgPiB0xatuOyAjNTQ1MQor5ZGSID4gZsWtOyAjNTQ1Mgor5ZGTID4gecOsOyAjNTQ1Mwor5ZGUID4gZMSBaTsgIzU0NTQKK+WRlSA+IMWNdTsgIzU0NTUKK+WRliA+IGzDrDsgIzU0NTYKK+WRlyA+IGLDoGk7ICM1NDU3CivlkZggPiB5dcOhbjsgIzU0NTgKK+WRmSA+IGt1xIFpOyAjNTQ1OQor5ZGbID4gcWnEgW5nOyAjNTQ1Qgor5ZGcID4gd8WrOyAjNTQ1Qwor5ZGdID4gw6g7ICM1NDVECivlkZ4gPiBzaMSrOyAjNTQ1RQor5ZGfID4gcXXEg247ICM1NDVGCivlkaAgPiBwxJNuOyAjNTQ2MAor5ZGhID4gd8SVbjsgIzU0NjEKK+WRoiA+IG7DrTsgIzU0NjIKK+WRoyA+IG3MgTsgIzU0NjMKK+WRpCA+IGzErW5nOyAjNTQ2NAor5ZGlID4gcsSDbjsgIzU0NjUKK+WRpiA+IHnFjXU7ICM1NDY2CivlkacgPiBkxK07ICM1NDY3CivlkaggPiB6aMWNdTsgIzU0NjgKK+WRqSA+IHNow6w7ICM1NDY5CivlkaogPiB6aMOydTsgIzU0NkEKK+WRqyA+IHRpxJM7ICM1NDZCCivlkawgPiB4w6w7ICM1NDZDCivlka0gPiB5w6w7ICM1NDZECivlka4gPiBxw6w7ICM1NDZFCivlka8gPiBww61uZzsgIzU0NkYKK+WRsCA+IHrErTsgIzU0NzAKK+WRsSA+IGfFqzsgIzU0NzEKK+WRsiA+IHrEqzsgIzU0NzIKK+WRsyA+IHfDqGk7ICM1NDczCivlkbQgPiB4xas7ICM1NDc0CivlkbUgPiBoxJM7ICM1NDc1CivlkbYgPiBuw6FvOyAjNTQ3Ngor5ZG3ID4geGnEgTsgIzU0NzcKK+WRuCA+IHDEk2k7ICM1NDc4CivlkbkgPiB5w6w7ICM1NDc5CivlkbogPiB4acSBbzsgIzU0N0EKK+WRuyA+IHNoxJNuOyAjNTQ3Qgor5ZG8ID4gaMWrOyAjNTQ3Qwor5ZG9ID4gbcOsbmc7ICM1NDdECivlkb4gPiBkw6E7ICM1NDdFCivlkb8gPiBxxas7ICM1NDdGCivlkoAgPiBqxa07ICM1NDgwCivlkoEgPiBnw6htOyAjNTQ4MQor5ZKCID4gesSBOyAjNTQ4Mgor5ZKDID4gdMWrbzsgIzU0ODMKK+WShCA+IGTFq287ICM1NDg0CivlkoUgPiBww7J1OyAjNTQ4NQor5ZKGID4gcMOhbzsgIzU0ODYKK+WShyA+IGLDrDsgIzU0ODcKK+WSiCA+IGbDujsgIzU0ODgKK+WSiSA+IHnEgW5nOyAjNTQ4OQor5ZKKID4gaMOpOyAjNTQ4QQor5ZKLID4gemjDoDsgIzU0OEIKK+WSjCA+IGjDqTsgIzU0OEMKK+WSjSA+IGjEgWk7ICM1NDhECivlko4gPiBqw6x1OyAjNTQ4RQor5ZKPID4gecWPbmc7ICM1NDhGCivlkpAgPiBmw7k7ICM1NDkwCivlkpEgPiBxdcOoOyAjNTQ5MQor5ZKSID4gemjDsnU7ICM1NDkyCivlkpMgPiB3xIM7ICM1NDkzCivlkpQgPiBrxIM7ICM1NDk0CivlkpUgPiBnxas7ICM1NDk1CivlkpYgPiBrxIE7ICM1NDk2CivlkpcgPiB6xa1vOyAjNTQ5Nwor5ZKYID4gYsO5OyAjNTQ5OAor5ZKZID4gbMOzbmc7ICM1NDk5CivlkpogPiBkxY1uZzsgIzU0OUEKK+WSmyA+IG7DrW5nOyAjNTQ5Qgor5ZKdID4gc8SrOyAjNTQ5RAor5ZKeID4geGnDoG47ICM1NDlFCivlkp8gPiBow7lvOyAjNTQ5Rgor5ZKgID4gccOsOyAjNTRBMAor5ZKhID4gw6hyOyAjNTRBMQor5ZKiID4gw6g7ICM1NEEyCivlkqMgPiBndcSBbmc7ICM1NEEzCivlkqQgPiB6aMOgOyAjNTRBNAor5ZKlID4geMOsOyAjNTRBNQor5ZKmID4gecOtOyAjNTRBNgor5ZKnID4gbGnElTsgIzU0QTcKK+WSqCA+IHrEqzsgIzU0QTgKK+WSqSA+IG1pxJM7ICM1NEE5CivlkqogPiBtxKs7ICM1NEFBCivlkqsgPiB6aMStOyAjNTRBQgor5ZKsID4gecSDbzsgIzU0QUMKK+WSrSA+IGrEqzsgIzU0QUQKK+WSriA+IHpow7J1OyAjNTRBRQor5ZKvID4gZ8STOyAjNTRBRgor5ZKwID4gc2h1w6BpOyAjNTRCMAor5ZKxID4gesOhbjsgIzU0QjEKK+WSsiA+IHhpw6BvOyAjNTRCMgor5ZKzID4ga8OpOyAjNTRCMwor5ZK0ID4gaMWraTsgIzU0QjQKK+WStSA+IGt1xIE7ICM1NEI1CivlkrYgPiBodcOgaTsgIzU0QjYKK+WStyA+IHTDoW87ICM1NEI3CivlkrggPiB4acOhbjsgIzU0QjgKK+WSuSA+IMOoOyAjNTRCOQor5ZK6ID4geHXEgW47ICM1NEJBCivlkrsgPiB4xKt1OyAjNTRCQgor5ZK8ID4gd8SBaTsgIzU0QkMKK+WSvSA+IHnEgW47ICM1NEJECivlkr4gPiBsxINvOyAjNTRCRQor5ZK/ID4gecSrOyAjNTRCRgor5ZOAID4gxIFpOyAjNTRDMAor5ZOBID4gcMStbjsgIzU0QzEKK+WTgiA+IHNoxJVuOyAjNTRDMgor5ZODID4gdMOzbmc7ICM1NEMzCivlk4QgPiBoxY1uZzsgIzU0QzQKK+WThSA+IHjEq29uZzsgIzU0QzUKK+WThiA+IGNoxK07ICM1NEM2Civlk4cgPiB3xIE7ICM1NEM3Civlk4ggPiBoxIE7ICM1NEM4Civlk4kgPiB6xIFpOyAjNTRDOQor5ZOKID4gecO5OyAjNTRDQQor5ZOLID4gZMOsOyAjNTRDQgor5ZOMID4gcMOgaTsgIzU0Q0MKK+WTjSA+IHhpxINuZzsgIzU0Q0QKK+WTjiA+IMSBaTsgIzU0Q0UKK+WTjyA+IGjElW47ICM1NENGCivlk5AgPiBrdcSBbmc7ICM1NEQwCivlk5EgPiB5xIM7ICM1NEQxCivlk5IgPiBkxIE7ICM1NEQyCivlk5MgPiB4acSBbzsgIzU0RDMKK+WTlCA+IGLDrDsgIzU0RDQKK+WTlSA+IHl1xJU7ICM1NEQ1Civlk5cgPiBodcSBOyAjNTRENwor5ZOZID4ga3XDoGk7ICM1NEQ5Civlk5ogPiBkxa1vOyAjNTREQQor5ZOcID4gasOsOyAjNTREQwor5ZOdID4gbsOzbmc7ICM1NERECivlk54gPiBtxY11OyAjNTRERQor5ZOfID4geW87ICM1NERGCivlk6AgPiBow6BvOyAjNTRFMAor5ZOhID4geXXDoW47ICM1NEUxCivlk6IgPiBsw7JuZzsgIzU0RTIKK+WToyA+IHDFj3U7ICM1NEUzCivlk6QgPiBtw6FuZzsgIzU0RTQKK+WTpSA+IGfEkzsgIzU0RTUKK+WTpiA+IMOpOyAjNTRFNgor5ZOnID4gY2jEqzsgIzU0RTcKK+WTqCA+IHNow6BvOyAjNTRFOAor5ZOpID4gbMSrOyAjNTRFOQor5ZOqID4gbsSDOyAjNTRFQQor5ZOrID4gesO6OyAjNTRFQgor5ZOsID4gaMOpOyAjNTRFQwor5ZOtID4ga8WrOyAjNTRFRAor5ZOuID4geGnEgW87ICM1NEVFCivlk68gPiB4acOgbjsgIzU0RUYKK+WTsCA+IGzDoW87ICM1NEYwCivlk7EgPiBixY07ICM1NEYxCivlk7IgPiB6aMOpOyAjNTRGMgor5ZOzID4gemjEgTsgIzU0RjMKK+WTtCA+IGxpw6BuZzsgIzU0RjQKK+WTtSA+IGLEgTsgIzU0RjUKK+WTtiA+IG1pxJM7ICM1NEY2Civlk7cgPiBsw6g7ICM1NEY3Civlk7ggPiBzxatpOyAjNTRGOAor5ZO5ID4gZsOzdTsgIzU0RjkKK+WTuiA+IGLFrTsgIzU0RkEKK+WTuyA+IGjDoG47ICM1NEZCCivlk7wgPiBoxJNuZzsgIzU0RkMKK+WTvSA+IGfElW5nOyAjNTRGRAor5ZO+ID4gc2jFq287ICM1NEZFCivlk78gPiBnxJU7ICM1NEZGCivllIAgPiB5xY91OyAjNTUwMAor5ZSBID4gecOgbjsgIzU1MDEKK+WUgiA+IGfFrTsgIzU1MDIKK+WUgyA+IGfFrTsgIzU1MDMKK+WUhCA+IGLDoGk7ICM1NTA0CivllIUgPiBoxIFuOyAjNTUwNQor5ZSGID4gc8WrbzsgIzU1MDYKK+WUhyA+IGNow7puOyAjNTUwNwor5ZSIID4gecOsOyAjNTUwOAor5ZSJID4gxIFpOyAjNTUwOQor5ZSKID4gamnDoTsgIzU1MEEKK+WUiyA+IHTFrTsgIzU1MEIKK+WUjCA+IHhpw6FuOyAjNTUwQwor5ZSNID4gaHXEg247ICM1NTBECivllI4gPiBsxKs7ICM1NTBFCivllI8gPiB4xKs7ICM1NTBGCivllJAgPiB0w6FuZzsgIzU1MTAKK+WUkSA+IHrDuW87ICM1NTExCivllJIgPiBxw611OyAjNTUxMgor5ZSTID4gY2jEkzsgIzU1MTMKK+WUlCA+IHfDujsgIzU1MTQKK+WUlSA+IHrDoG87ICM1NTE1CivllJYgPiB5xIM7ICM1NTE2CivllJcgPiBkxY11OyAjNTUxNwor5ZSYID4gccStOyAjNTUxOAor5ZSZID4gZMOtOyAjNTUxOQor5ZSaID4gccOsbjsgIzU1MUEKK+WUmyA+IG3DoDsgIzU1MUIKK+WUnSA+IGjFj25nOyAjNTUxRAor5ZSeID4gZMWPdTsgIzU1MUUKK+WUoCA+IGzDoW87ICM1NTIwCivllKEgPiBsacSDbmc7ICM1NTIxCivllKIgPiBzxa1vOyAjNTUyMgor5ZSjID4gesOgbzsgIzU1MjMKK+WUpCA+IGh1w6BuOyAjNTUyNAor5ZSmID4gc2jEgTsgIzU1MjYKK+WUpyA+IGrEqzsgIzU1MjcKK+WUqCA+IHrFrW87ICM1NTI4CivllKkgPiB3xY07ICM1NTI5CivllKogPiBmxJVuZzsgIzU1MkEKK+WUqyA+IHnDrW47ICM1NTJCCivllKwgPiBoxa07ICM1NTJDCivllK0gPiBxxKs7ICM1NTJECivllK4gPiBzaMOydTsgIzU1MkUKK+WUryA+IHfDqWk7ICM1NTJGCivllLAgPiBzaHXEgTsgIzU1MzAKK+WUsSA+IGNow6BuZzsgIzU1MzEKK+WUsiA+IMOpcjsgIzU1MzIKK+WUsyA+IGzDrDsgIzU1MzMKK+WUtCA+IHFpw6BuZzsgIzU1MzQKK+WUtSA+IMSDbjsgIzU1MzUKK+WUtiA+IGppw6g7ICM1NTM2CivllLcgPiB5xY07ICM1NTM3CivllLggPiBuacOgbjsgIzU1MzgKK+WUuSA+IHnFqzsgIzU1MzkKK+WUuiA+IHRpxINuOyAjNTUzQQor5ZS7ID4gbMSDaTsgIzU1M0IKK+WUvCA+IHNow6A7ICM1NTNDCivllL0gPiB4xKs7ICM1NTNECivllL4gPiB0w7lvOyAjNTUzRQor5ZS/ID4gaMWrOyAjNTUzRgor5ZWAID4gw6FpOyAjNTU0MAor5ZWBID4gemjFjXU7ICM1NTQxCivllYIgPiBuw7J1OyAjNTU0Mgor5ZWDID4ga8SVbjsgIzU1NDMKK+WVhCA+IHpow7pvOyAjNTU0NAor5ZWFID4gemjDum87ICM1NTQ1CivllYYgPiBzaMSBbmc7ICM1NTQ2CivllYcgPiBkw607ICM1NTQ3CivllYggPiBow6huZzsgIzU1NDgKK+WViSA+IGzDoW47ICM1NTQ5CivllYogPiBhOyAjNTU0QQor5ZWLID4geGnEgW87ICM1NTRCCivllYwgPiB4acSBbmc7ICM1NTRDCivllY0gPiB0xatuOyAjNTU0RAor5ZWOID4gd8WtOyAjNTU0RQor5ZWPID4gd8OobjsgIzU1NEYKK+WVkCA+IGPDuWk7ICM1NTUwCivllZEgPiBzaMOgOyAjNTU1MQor5ZWSID4gaMWrOyAjNTU1Mgor5ZWTID4gccStOyAjNTU1Mwor5ZWUID4gccStOyAjNTU1NAor5ZWVID4gdMOhbzsgIzU1NTUKK+WVliA+IGTDoG47ICM1NTU2CivllZcgPiBkw6BuOyAjNTU1Nwor5ZWYID4gecOoOyAjNTU1OAor5ZWZID4gesStOyAjNTU1OQor5ZWaID4gYsStOyAjNTU1QQor5ZWbID4gY8O5aTsgIzU1NUIKK+WVnCA+IGNow7lvOyAjNTU1Qwor5ZWdID4gaMOpOyAjNTU1RAor5ZWeID4gecSDOyAjNTU1RQor5ZWfID4gccStOyAjNTU1Rgor5ZWgID4gemjDqTsgIzU1NjAKK+WVoSA+IHDEk2k7ICM1NTYxCivllaIgPiBsacSDbmc7ICM1NTYyCivllaMgPiB4acOhbjsgIzU1NjMKK+WVpCA+IHDDrTsgIzU1NjQKK+WVpSA+IHNow6A7ICM1NTY1CivllaYgPiBsYTsgIzU1NjYKK+WVpyA+IHrDqTsgIzU1NjcKK+WVqCA+IHHEq25nOyAjNTU2OAor5ZWpID4gZ3XDoDsgIzU1NjkKK+WVqiA+IHDEgTsgIzU1NkEKK+WVqyA+IHpoxJU7ICM1NTZCCivllawgPiBzw6g7ICM1NTZDCivlla0gPiB6aHXDoG47ICM1NTZECivlla4gPiBuacOoOyAjNTU2RQor5ZWvID4gZ3VvOyAjNTU2Rgor5ZWwID4gbMWrbzsgIzU1NzAKK+WVsSA+IHnEgW47ICM1NTcxCivllbIgPiBkw6w7ICM1NTcyCivllbMgPiBxdcOhbjsgIzU1NzMKK+WVtCA+IHTEgW47ICM1NTc0CivllbUgPiBibzsgIzU1NzUKK+WVtiA+IGTDrG5nOyAjNTU3Ngor5ZW3ID4gbMSBbmc7ICM1NTc3CivllbggPiB4acOgbzsgIzU1NzgKK+WVuiA+IHTDoW5nOyAjNTU3QQor5ZW7ID4gY2jDrDsgIzU1N0IKK+WVvCA+IHTDrTsgIzU1N0MKK+WVvSA+IMOhbjsgIzU1N0QKK+WVviA+IGrEq3U7ICM1NTdFCivllb8gPiBkw6BuOyAjNTU3Rgor5ZaAID4ga8OoOyAjNTU4MAor5ZaBID4gecOzbmc7ICM1NTgxCivlloIgPiB3w6hpOyAjNTU4Mgor5ZaDID4gbsOhbjsgIzU1ODMKK+WWhCA+IHNow6BuOyAjNTU4NAor5ZaFID4gecO5OyAjNTU4NQor5ZaGID4gemjDqTsgIzU1ODYKK+WWhyA+IGzEgzsgIzU1ODcKK+WWiCA+IGppxJM7ICM1NTg4CivllokgPiBow7N1OyAjNTU4OQor5ZaKID4gaMSDbjsgIzU1OEEKK+WWiyA+IGRpw6k7ICM1NThCCivllowgPiB6aMWNdTsgIzU1OEMKK+WWjSA+IGNow6FpOyAjNTU4RAor5ZaOID4gd8SBaTsgIzU1OEUKK+WWjyA+IHLElTsgIzU1OEYKK+WWkCA+IHnDuTsgIzU1OTAKK+WWkSA+IHnEq247ICM1NTkxCivllpIgPiB6w6FuOyAjNTU5Mgor5ZaTID4gecSBbzsgIzU1OTMKK+WWlCA+IHfFjTsgIzU1OTQKK+WWlSA+IG1pxINuOyAjNTU5NQor5ZaWID4gaMO6OyAjNTU5Ngor5ZaXID4gecWtbjsgIzU1OTcKK+WWmCA+IGNodcSDbjsgIzU1OTgKK+WWmSA+IGjDuWk7ICM1NTk5CivllpogPiBodcOgbjsgIzU1OUEKK+WWmyA+IGh1w6BuOyAjNTU5Qgor5ZacID4geMStOyAjNTU5Qwor5ZadID4gaMSTOyAjNTU5RAor5ZaeID4gasSrOyAjNTU5RQor5ZafID4ga8O5aTsgIzU1OUYKK+WWoCA+IHpoxY9uZzsgIzU1QTAKK+WWoSA+IHfElWk7ICM1NUExCivllqIgPiBzaMOgOyAjNTVBMgor5ZajID4geMWtOyAjNTVBMwor5ZakID4gaHXDoW5nOyAjNTVBNAor5ZalID4gZMO5OyAjNTVBNQor5ZamID4gbmnDqDsgIzU1QTYKK+WWpyA+IDF4dcSBbjsgIzU1QTcKK+WWqCA+IGxpw6BuZzsgIzU1QTgKK+WWqSA+IHnDuTsgIzU1QTkKK+WWqiA+IHPEgW5nOyAjNTVBQQor5ZarID4gY2jEqzsgIzU1QUIKK+WWrCA+IHFpw6FvOyAjNTVBQwor5ZatID4gecOgbjsgIzU1QUQKK+WWriA+IGTEgW47ICM1NUFFCivllq8gPiBwxJNuOyAjNTVBRgor5ZawID4gY8SBbjsgIzU1QjAKK+WWsSA+IGzDrTsgIzU1QjEKK+WWsiA+IHlvOyAjNTVCMgor5ZazID4gemjEgTsgIzU1QjMKK+WWtCA+IHfEk2k7ICM1NUI0CivllrUgPiBtacSBbzsgIzU1QjUKK+WWtiA+IHnDrW5nOyAjNTVCNgor5Za3ID4gcMSTbjsgIzU1QjcKK+WWuSA+IGvDumk7ICM1NUI5CivllrogPiB4w6w7ICM1NUJBCivllrsgPiB5w7k7ICM1NUJCCivllrwgPiBqacOpOyAjNTVCQwor5Za9ID4gbG91OyAjNTVCRAor5Za+ID4ga8O5OyAjNTVCRQor5Za/ID4gc8OgbzsgIzU1QkYKK+WXgCA+IGjDuW87ICM1NUMwCivll4EgPiB0w607ICM1NUMxCivll4IgPiB5w6FvOyAjNTVDMgor5ZeDID4gaMOoOyAjNTVDMwor5ZeEID4gw6E7ICM1NUM0Civll4UgPiB4w6x1OyAjNTVDNQor5ZeGID4gcWnEgW5nOyAjNTVDNgor5ZeHID4gc8OoOyAjNTVDNwor5ZeIID4gecWNbmc7ICM1NUM4Civll4kgPiBzw7k7ICM1NUM5Civll4ogPiBoxY9uZzsgIzU1Q0EKK+WXiyA+IHhpw6k7ICM1NUNCCivll4wgPiB5w6w7ICM1NUNDCivll40gPiBzxatvOyAjNTVDRAor5ZeOID4gbWE7ICM1NUNFCivll48gPiBjaMSBOyAjNTVDRgor5ZeQID4gaMOgaTsgIzU1RDAKK+WXkSA+IGvDqDsgIzU1RDEKK+WXkiA+IHTDoDsgIzU1RDIKK+WXkyA+IHPEg25nOyAjNTVEMwor5ZeUID4gdGnDoW47ICM1NUQ0Civll5UgPiByw7k7ICM1NUQ1Civll5YgPiBzxY11OyAjNTVENgor5ZeXID4gd8SBOyAjNTVENwor5ZeYID4gasSrOyAjNTVEOAor5ZeZID4gcMSDbmc7ICM1NUQ5Civll5ogPiB3xas7ICM1NURBCivll5sgPiB4acOhbjsgIzU1REIKK+WXnCA+IHNow6w7ICM1NURDCivll50gPiBnw6k7ICM1NURECivll54gPiB6xKs7ICM1NURFCivll58gPiBqacSTOyAjNTVERgor5ZegID4gbMO5bzsgIzU1RTAKK+WXoSA+IHfEk25nOyAjNTVFMQor5ZeiID4gd8OgOyAjNTVFMgor5ZejID4gc8OsOyAjNTVFMwor5ZekID4gY2jEqzsgIzU1RTQKK+WXpSA+IGjDoW87ICM1NUU1Civll6YgPiBzxatvOyAjNTVFNgor5ZenID4gamnEgScgJ2zDum47ICM1NUU3Civll6ggPiBoxINpOyAjNTVFOAor5ZepID4gc8WtbzsgIzU1RTkKK+WXqiA+IHHDrW47ICM1NUVBCivll6sgPiBuacOoOyAjNTVFQgor5ZesID4gaMSTOyAjNTVFQwor5ZeuID4gc8OgaTsgIzU1RUUKK+WXryA+IG7MgGc7ICM1NUVGCivll7AgPiBnw6g7ICM1NUYwCivll7EgPiBuw6E7ICM1NUYxCivll7IgPiBkacSDOyAjNTVGMgor5ZezID4gw6BpOyAjNTVGMwor5Ze1ID4gdMWNbmc7ICM1NUY1Civll7YgPiBiw6w7ICM1NUY2Civll7cgPiDDoW87ICM1NUY3Civll7ggPiDDoW87ICM1NUY4Civll7kgPiBsacOhbjsgIzU1RjkKK+WXuiA+IGPFq2k7ICM1NUZBCivll7sgPiB6aMSTOyAjNTVGQgor5Ze8ID4gbcOyOyAjNTVGQwor5Ze9ID4gc8OydTsgIzU1RkQKK+WXviA+IHPFj3U7ICM1NUZFCivll78gPiB0xINuOyAjNTVGRgor5ZiAID4gZMOtOyAjNTYwMAor5ZiBID4gccSrOyAjNTYwMQor5ZiCID4gamnDoG87ICM1NjAyCivlmIMgPiBjaMWNbmc7ICM1NjAzCivlmIQgPiBqacSBbzsgIzU2MDQKK+WYhSA+IGvEg2k7ICM1NjA1CivlmIYgPiB0w6BuOyAjNTYwNgor5ZiHID4gc8SBbjsgIzU2MDcKK+WYiCA+IGPDoW87ICM1NjA4CivlmIkgPiBqacSBOyAjNTYwOQor5ZiKID4gw6FpOyAjNTYwQQor5ZiLID4geGnEgW87ICM1NjBCCivlmIwgPiBwacSBbzsgIzU2MEMKK+WYjSA+IGxvdTsgIzU2MEQKK+WYjiA+IGfEgTsgIzU2MEUKK+WYjyA+IGfFrTsgIzU2MEYKK+WYkCA+IHhpxIFvOyAjNTYxMAor5ZiRID4gaMWrOyAjNTYxMQor5ZiSID4gaMO5aTsgIzU2MTIKK+WYkyA+IGd1bzsgIzU2MTMKK+WYlCA+IMWNdTsgIzU2MTQKK+WYlSA+IHhpxIFuOyAjNTYxNQor5ZiWID4gesOpOyAjNTYxNgor5ZiXID4gY2jDoW5nOyAjNTYxNwor5ZiYID4geMWrOyAjNTYxOAor5ZiZID4gcMOzOyAjNTYxOQor5ZiaID4gZMOpOyAjNTYxQQor5ZibID4gbWE7ICM1NjFCCivlmJwgPiBtw6A7ICM1NjFDCivlmJ0gPiBow7o7ICM1NjFECivlmJ4gPiBsZWk7ICM1NjFFCivlmJ8gPiBkxas7ICM1NjFGCivlmKAgPiBnxIE7ICM1NjIwCivlmKEgPiB0xIFuZzsgIzU2MjEKK+WYoiA+IHnElTsgIzU2MjIKK+WYoyA+IGLEk25nOyAjNTYyMwor5ZikID4gecSrbmc7ICM1NjI0CivlmKYgPiBqacOgbzsgIzU2MjYKK+WYpyA+IG3EqzsgIzU2MjcKK+WYqCA+IHhpw6BvOyAjNTYyOAor5ZipID4gaHXEgTsgIzU2MjkKK+WYqiA+IG3Eg2k7ICM1NjJBCivlmKsgPiByw6FuOyAjNTYyQgor5ZisID4gesWrbzsgIzU2MkMKK+WYrSA+IHDEk25nOyAjNTYyRAor5ZiuID4gbMOhbzsgIzU2MkUKK+WYryA+IHhpw6BvOyAjNTYyRgor5ZiwID4gasSrOyAjNTYzMAor5ZixID4gemjFrTsgIzU2MzEKK+WYsiA+IGNow6FvOyAjNTYzMgor5ZizID4ga8O5aTsgIzU2MzMKK+WYtCA+IHrFrWk7ICM1NjM0CivlmLUgPiB4acSBbzsgIzU2MzUKK+WYtiA+IHPEqzsgIzU2MzYKK+WYtyA+IGjDoW87ICM1NjM3CivlmLggPiBmxa07ICM1NjM4CivlmLkgPiBsacOhbzsgIzU2MzkKK+WYuiA+IHFpw6FvOyAjNTYzQQor5Zi7ID4geMSrOyAjNTYzQgor5Zi8ID4geMOsdTsgIzU2M0MKK+WYvSA+IHTEgW47ICM1NjNECivlmL4gPiB0w6FuOyAjNTYzRQor5Zi/ID4gbcOyOyAjNTYzRgor5ZmAID4geMO5bjsgIzU2NDAKK+WZgSA+IMSVOyAjNTY0MQor5ZmCID4gesWtbjsgIzU2NDIKK+WZgyA+IGbEgW47ICM1NjQzCivlmYQgPiBjaMSrOyAjNTY0NAor5ZmFID4gaMWraTsgIzU2NDUKK+WZhiA+IHrEg247ICM1NjQ2CivlmYcgPiBjaHXDoW5nOyAjNTY0Nwor5ZmIID4gY8O5OyAjNTY0OAor5ZmJID4gZMOgbjsgIzU2NDkKK+WZiiA+IHnDuTsgIzU2NEEKK+WZiyA+IHTFq247ICM1NjRCCivlmYwgPiBjaMSTbmc7ICM1NjRDCivlmY0gPiBqacOgbzsgIzU2NEQKK+WZjiA+IHnEkzsgIzU2NEUKK+WZjyA+IHjEqzsgIzU2NEYKK+WZkCA+IHHDrDsgIzU2NTAKK+WZkSA+IGjDoW87ICM1NjUxCivlmZIgPiBsacOhbjsgIzU2NTIKK+WZkyA+IHjFqzsgIzU2NTMKK+WZlCA+IGTEk25nOyAjNTY1NAor5ZmVID4gaMWraTsgIzU2NTUKK+WZliA+IHnDrW47ICM1NjU2CivlmZcgPiBwxas7ICM1NjU3CivlmZggPiBqdcSTOyAjNTY1OAor5ZmZID4gccOtbjsgIzU2NTkKK+WZmiA+IHjDum47ICM1NjVBCivlmZsgPiBuacOoOyAjNTY1Qgor5ZmcID4gbMWrOyAjNTY1Qwor5ZmdID4gc8SrOyAjNTY1RAor5ZmeID4gecSDbjsgIzU2NUUKK+WZnyA+IHnDrG5nOyAjNTY1Rgor5ZmgID4gZMSBOyAjNTY2MAor5ZmhID4gZMSBbjsgIzU2NjEKK+WZoiA+IHnFrTsgIzU2NjIKK+WZoyA+IHpow7J1OyAjNTY2Mwor5ZmkID4gasOsbjsgIzU2NjQKK+WZpSA+IG7Ds25nOyAjNTY2NQor5ZmmID4geXXElTsgIzU2NjYKK+WZpyA+IGjDuWk7ICM1NjY3CivlmaggPiBxw6w7ICM1NjY4CivlmakgPiDDqDsgIzU2NjkKK+WZqiA+IHrDoG87ICM1NjZBCivlmasgPiB5xKs7ICM1NjZCCivlmawgPiBzaMOsOyAjNTY2Qwor5ZmtID4gamnDoG87ICM1NjZECivlma4gPiB5dcSBbjsgIzU2NkUKK+WZryA+IMOgaTsgIzU2NkYKK+WZsCA+IHnFjW5nOyAjNTY3MAor5ZmxID4ganXDqTsgIzU2NzEKK+WZsiA+IGt1w6BpOyAjNTY3Mgor5ZmzID4gecWtOyAjNTY3Mwor5Zm0ID4gcMSTbjsgIzU2NzQKK+WZtSA+IGTDoG87ICM1Njc1CivlmbYgPiBnw6k7ICM1Njc2CivlmbcgPiB4xKtuOyAjNTY3Nwor5Zm4ID4gZMWrbjsgIzU2NzgKK+WZuSA+IGTEgW5nOyAjNTY3OQor5Zm7ID4gc2FpOyAjNTY3Qgor5Zm8ID4gcMSrOyAjNTY3Qwor5Zm9ID4gcMStOyAjNTY3RAor5Zm+ID4gecSrbjsgIzU2N0UKK+WZvyA+IHrFrWk7ICM1NjdGCivlmoAgPiBuw61uZzsgIzU2ODAKK+WagSA+IGTDrTsgIzU2ODEKK+WagiA+IGzDoG47ICM1NjgyCivlmoMgPiB0xIE7ICM1NjgzCivlmoQgPiBow7lvOyAjNTY4NAor5ZqFID4gcsO6OyAjNTY4NQor5ZqGID4gaMSBbzsgIzU2ODYKK+WahyA+IHhpw6A7ICM1Njg3CivlmoggPiB5w6A7ICM1Njg4CivlmokgPiBkxatvOyAjNTY4OQor5ZqKID4geMOsOyAjNTY4QQor5ZqLID4gY2jDs3U7ICM1NjhCCivlmowgPiBqw6w7ICM1NjhDCivlmo0gPiBqw6xuOyAjNTY4RAor5ZqOID4gaMOhbzsgIzU2OEUKK+WajyA+IHTDrDsgIzU2OEYKK+WakCA+IGNow6FuZzsgIzU2OTAKK+WakyA+IGPEgTsgIzU2OTMKK+WalCA+IHTDrDsgIzU2OTQKK+WalSA+IGzFqzsgIzU2OTUKK+WaliA+IGjDuWk7ICM1Njk2CivlmpcgPiBiw7M7ICM1Njk3CivlmpggPiB5xY11OyAjNTY5OAor5ZqZID4gbmnDqDsgIzU2OTkKK+WamiA+IHnDrW47ICM1NjlBCivlmpsgPiBow7k7ICM1NjlCCivlmpwgPiBtw7I7ICM1NjlDCivlmp0gPiBodcSBbmc7ICM1NjlECivlmp4gPiB6aMOpOyAjNTY5RQor5ZqfID4gbMOtOyAjNTY5Rgor5ZqgID4gbMOtdTsgIzU2QTAKK+WaoiA+IG7DoW5nOyAjNTZBMgor5ZqjID4geGnEgW87ICM1NkEzCivlmqQgPiBtw7M7ICM1NkE0CivlmqUgPiB5w6BuOyAjNTZBNQor5ZqmID4gbMOsOyAjNTZBNgor5ZqnID4gbMO6OyAjNTZBNwor5ZqoID4gbMOzbmc7ICM1NkE4CivlmqkgPiBmw7o7ICM1NkE5CivlmqogPiBkw6BuOyAjNTZBQQor5ZqrID4gY2jDqG47ICM1NkFCCivlmqwgPiBww61uOyAjNTZBQwor5ZqtID4gcMStOyAjNTZBRAor5ZquID4geGnDoG5nOyAjNTZBRQor5ZqvID4gaMO5bzsgIzU2QUYKK+WasCA+IG3DszsgIzU2QjAKK+WasSA+IHjDrDsgIzU2QjEKK+WasiA+IGTFrW87ICM1NkIyCivlmrMgPiBrw7k7ICM1NkIzCivlmrQgPiB5w6FuOyAjNTZCNAor5Zq1ID4gY2jDoW47ICM1NkI1CivlmrYgPiB5xKtuZzsgIzU2QjYKK+WatyA+IHLEg25nOyAjNTZCNwor5Zq4ID4gZGnEg247ICM1NkI4CivlmrkgPiBsxIE7ICM1NkI5CivlmrogPiB0w6A7ICM1NkJBCivlmrsgPiB4acSBbzsgIzU2QkIKK+WavCA+IGppw6FvOyAjNTZCQwor5Zq9ID4gY2jDuW87ICM1NkJECivlmr4gPiBodcSBbjsgIzU2QkUKK+WavyA+IGjDuW87ICM1NkJGCivlm4AgPiB6aHXDoG47ICM1NkMwCivlm4EgPiBuacOoOyAjNTZDMQor5ZuCID4geGnEgW87ICM1NkMyCivlm4MgPiBjw6A7ICM1NkMzCivlm4QgPiBsw607ICM1NkM0Civlm4UgPiBjaMSDbjsgIzU2QzUKK+WbhiA+IGNow6BpOyAjNTZDNgor5ZuHID4gbMOsOyAjNTZDNwor5ZuIID4gecOsOyAjNTZDOAor5ZuJID4gbMWrbzsgIzU2QzkKK+WbiiA+IG7DoW5nOyAjNTZDQQor5ZuLID4gesOgbjsgIzU2Q0IKK+WbjCA+IHPFqzsgIzU2Q0MKK+WbjSA+IHjErTsgIzU2Q0QKK+WbjyA+IGppxIFuOyAjNTZDRgor5ZuQID4gesOhOyAjNTZEMAor5ZuRID4gemjFrTsgIzU2RDEKK+WbkiA+IGzDoW47ICM1NkQyCivlm5MgPiBuacOoOyAjNTZEMwor5ZuUID4gbsSBbmc7ICM1NkQ0Civlm5cgPiB3w6lpOyAjNTZENwor5ZuYID4gaMO6aTsgIzU2RDgKK+WbmSA+IHnEq247ICM1NkQ5Civlm5ogPiBxw611OyAjNTZEQQor5ZubID4gc8OsOyAjNTZEQgor5ZucID4gbsOtbjsgIzU2REMKK+WbnSA+IGppxINuOyAjNTZERAor5ZueID4gaMO6aTsgIzU2REUKK+WbnyA+IHjDrG47ICM1NkRGCivlm6AgPiB5xKtuOyAjNTZFMAor5ZuhID4gbsSBbjsgIzU2RTEKK+WboiA+IHR1w6FuOyAjNTZFMgor5ZujID4gdHXDoW47ICM1NkUzCivlm6QgPiBkw7luOyAjNTZFNAor5ZulID4ga8Ogbmc7ICM1NkU1Civlm6YgPiB5dcSBbjsgIzU2RTYKK+WbpyA+IGrErW9uZzsgIzU2RTcKK+WbqCA+IHBpxIFuOyAjNTZFOAor5ZupID4gecO5bjsgIzU2RTkKK+WbqiA+IGPFjW5nOyAjNTZFQQor5ZurID4gaMO6OyAjNTZFQgor5ZusID4gaMO6aTsgIzU2RUMKK+WbrSA+IHl1w6FuOyAjNTZFRAor5ZuuID4gecOzdTsgIzU2RUUKK+WbryA+IGfDum87ICM1NkVGCivlm7AgPiBrw7luOyAjNTZGMAor5ZuxID4gY8WNbmc7ICM1NkYxCivlm7IgPiB3w6lpOyAjNTZGMgor5ZuzID4gdMO6OyAjNTZGMwor5Zu0ID4gd8OpaTsgIzU2RjQKK+WbtSA+IGzDum47ICM1NkY1Civlm7YgPiBnw7pvOyAjNTZGNgor5Zu3ID4gccWrbjsgIzU2RjcKK+WbuCA+IHLDrDsgIzU2RjgKK+WbuSA+IGzDrW5nOyAjNTZGOQor5Zu6ID4gZ8O5OyAjNTZGQQor5Zu7ID4gZ8O6bzsgIzU2RkIKK+WbvCA+IHTEgWk7ICM1NkZDCivlm70gPiBnw7pvOyAjNTZGRAor5Zu+ID4gdMO6OyAjNTZGRQor5Zu/ID4gecOydTsgIzU2RkYKK+WcgCA+IGfDum87ICM1NzAwCivlnIEgPiB5w61uOyAjNTcwMQor5ZyCID4gaMO5bjsgIzU3MDIKK+WcgyA+IHDFrTsgIzU3MDMKK+WchCA+IHnFrTsgIzU3MDQKK+WchSA+IGjDoW47ICM1NzA1CivlnIYgPiB5dcOhbjsgIzU3MDYKK+WchyA+IGzDum47ICM1NzA3CivlnIggPiBxdcSBbjsgIzU3MDgKK+WciSA+IHnFrTsgIzU3MDkKK+WciiA+IHHEq25nOyAjNTcwQQor5ZyLID4gZ8O6bzsgIzU3MEIKK+WcjCA+IGNodcOhbjsgIzU3MEMKK+WcjSA+IHfDqWk7ICM1NzBECivlnI4gPiB5dcOhbjsgIzU3MEUKK+WcjyA+IHF1xIFuOyAjNTcwRgor5ZyQID4ga8WrOyAjNTcxMAor5ZyRID4gZsO5OyAjNTcxMQor5ZySID4geXXDoW47ICM1NzEyCivlnJMgPiB5dcOhbjsgIzU3MTMKK+WclCA+IMOoOyAjNTcxNAor5ZyVID4gdMO6JyAnc2jFqycgJ2d1xINuOyAjNTcxNQor5ZyWID4gdMO6OyAjNTcxNgor5ZyXID4gdMO6OyAjNTcxNwor5ZyYID4gdHXDoW47ICM1NzE4CivlnJkgPiBsx5xlOyAjNTcxOQor5ZyaID4gaMO5aTsgIzU3MUEKK+WcmyA+IHnDrDsgIzU3MUIKK+WcnCA+IHl1w6FuOyAjNTcxQwor5ZydID4gbHXDoW47ICM1NzFECivlnJ4gPiBsdcOhbjsgIzU3MUUKK+WcnyA+IHTFrTsgIzU3MUYKK+WcoCA+IHnDoDsgIzU3MjAKK+WcoSA+IHTFrTsgIzU3MjEKK+WcoiA+IHTEq25nOyAjNTcyMgor5ZyjID4gc2jDqG5nOyAjNTcyMwor5ZykID4gcMWtOyAjNTcyNAor5ZylID4gbMO5OyAjNTcyNQor5ZynID4gecSBOyAjNTcyNwor5ZyoID4gesOgaTsgIzU3MjgKK+WcqSA+IHfDqWk7ICM1NzI5CivlnKogPiBnxJM7ICM1NzJBCivlnKsgPiB5w7k7ICM1NzJCCivlnKwgPiB3xas7ICM1NzJDCivlnK0gPiBnxatpOyAjNTcyRAor5ZyuID4gcMStOyAjNTcyRQor5ZyvID4gecOtOyAjNTcyRgor5ZywID4gZMOsOyAjNTczMAor5ZyxID4gcWnEgW47ICM1NzMxCivlnLIgPiBxacSBbjsgIzU3MzIKK+WcsyA+IHpow6huOyAjNTczMwor5Zy0ID4gemjDum87ICM1NzM0CivlnLUgPiBkw6BuZzsgIzU3MzUKK+WctiA+IHFpw6A7ICM1NzM2CivlnLkgPiBrdcOgbmc7ICM1NzM5CivlnLogPiBjaMOhbmc7ICM1NzNBCivlnLsgPiBxw607ICM1NzNCCivlnLwgPiBuacOoOyAjNTczQwor5Zy9ID4gbcOyOyAjNTczRAor5Zy+ID4gasOtOyAjNTczRQor5Zy/ID4gamnDoTsgIzU3M0YKK+WdgCA+IHpoxK07ICM1NzQwCivlnYEgPiB6aMStOyAjNTc0MQor5Z2CID4gYsSDbjsgIzU3NDIKK+WdgyA+IHjFq247ICM1NzQzCivlnYQgPiB0w7N1OyAjNTc0NAor5Z2FID4gccStbjsgIzU3NDUKK+WdhiA+IGbDqW47ICM1NzQ2CivlnYcgPiBqxatuOyAjNTc0Nwor5Z2IID4ga8STbmc7ICM1NzQ4CivlnYkgPiB0w7puOyAjNTc0OQor5Z2KID4gZsSBbmc7ICM1NzRBCivlnYsgPiBmw6huOyAjNTc0Qgor5Z2MID4gYsOobjsgIzU3NEMKK+WdjSA+IHTEgW47ICM1NzRECivlnY4gPiBrxINuOyAjNTc0RQor5Z2PID4gcMSrOyAjNTc0Rgor5Z2QID4gesO5bzsgIzU3NTAKK+WdkSA+IGvEk25nOyAjNTc1MQor5Z2SID4gYsOsOyAjNTc1Mgor5Z2TID4geMOtbmc7ICM1NzUzCivlnZQgPiBkw6w7ICM1NzU0CivlnZUgPiBqxKtuZzsgIzU3NTUKK+WdliA+IGrDrDsgIzU3NTYKK+WdlyA+IGt1w6BpOyAjNTc1Nwor5Z2YID4gZMStOyAjNTc1OAor5Z2ZID4gasSrbmc7ICM1NzU5CivlnZogPiBqacSBbjsgIzU3NUEKK+WdmyA+IHTDoW47ICM1NzVCCivlnZwgPiBsw6w7ICM1NzVDCivlnZ0gPiBiw6A7ICM1NzVECivlnZ4gPiB3w7k7ICM1NzVFCivlnZ8gPiBmw6luOyAjNTc1Rgor5Z2gID4gemjDuWk7ICM1NzYwCivlnaEgPiBwxY07ICM1NzYxCivlnaIgPiBwxINuOyAjNTc2Mgor5Z2jID4gdMSBbmc7ICM1NzYzCivlnaQgPiBrxatuOyAjNTc2NAor5Z2lID4gccWrOyAjNTc2NQor5Z2mID4gdMSDbjsgIzU3NjYKK+WdpyA+IHpoxKs7ICM1NzY3CivlnaggPiB0w7pvOyAjNTc2OAor5Z2pID4gZ8SBbjsgIzU3NjkKK+WdqiA+IHDDrW5nOyAjNTc2QQor5Z2rID4gZGnDoG47ICM1NzZCCivlnawgPiBndcOgOyAjNTc2Qwor5Z2tID4gbsOtOyAjNTc2RAor5Z2uID4gdMOhaTsgIzU3NkUKK+WdryA+IHDEqzsgIzU3NkYKK+WdsCA+IGrEq29uZzsgIzU3NzAKK+WdsSA+IHnEg25nOyAjNTc3MQor5Z2yID4gZsOzOyAjNTc3Mgor5Z2zID4gw6BvOyAjNTc3Mwor5Z20ID4gbMOsdTsgIzU3NzQKK+WdtSA+IHHEq3U7ICM1Nzc1CivlnbYgPiBtw7k7ICM1Nzc2CivlnbcgPiBrxJU7ICM1Nzc3CivlnbggPiBnw7J1OyAjNTc3OAor5Z25ID4geHXDqDsgIzU3NzkKK+WduiA+IGLDoTsgIzU3N0EKK+WduyA+IGNow607ICM1NzdCCivlnbwgPiBjaMOoOyAjNTc3Qwor5Z29ID4gbMOtbmc7ICM1NzdECivlnb4gPiB6aMO5OyAjNTc3RQor5Z2/ID4gZsO5OyAjNTc3Rgor5Z6AID4gaMWrOyAjNTc4MAor5Z6BID4gemjDrDsgIzU3ODEKK+WegiA+IGNow7ppOyAjNTc4Mgor5Z6DID4gbMSBOyAjNTc4Mwor5Z6EID4gbMWPbmc7ICM1Nzg0CivlnoUgPiBsxY9uZzsgIzU3ODUKK+WehiA+IGzDujsgIzU3ODYKK+WehyA+IMOgbzsgIzU3ODcKK+WeiSA+IHDDoW87ICM1Nzg5CivlnosgPiB4w61uZzsgIzU3OEIKK+WejCA+IGTDsm5nOyAjNTc4Qwor5Z6NID4gasOsOyAjNTc4RAor5Z6OID4ga8OoOyAjNTc4RQor5Z6PID4gbMO5OyAjNTc4Rgor5Z6QID4gY8OtOyAjNTc5MAor5Z6RID4gY2jErTsgIzU3OTEKK+WekiA+IGzElWk7ICM1NzkyCivlnpMgPiBnxIFpOyAjNTc5Mwor5Z6UID4gecSrbjsgIzU3OTQKK+WelSA+IGjDsnU7ICM1Nzk1CivlnpYgPiBkxatpOyAjNTc5Ngor5Z6XID4gemjDoG87ICM1Nzk3CivlnpggPiBmw7o7ICM1Nzk4CivlnpkgPiBndcSBbmc7ICM1Nzk5CivlnpogPiB5w6FvOyAjNTc5QQor5Z6bID4gZMWtbzsgIzU3OUIKK+WenCA+IGTFrW87ICM1NzlDCivlnp0gPiBnxa1pOyAjNTc5RAor5Z6eID4gY2jDoTsgIzU3OUUKK+WenyA+IHnDoW5nOyAjNTc5Rgor5Z6gID4gecOtbjsgIzU3QTAKK+WeoSA+IGbDoTsgIzU3QTEKK+WeoiA+IGfDsnU7ICM1N0EyCivlnqMgPiB5dcOhbjsgIzU3QTMKK+WepCA+IGRpw6k7ICM1N0E0CivlnqUgPiB4acOpOyAjNTdBNQor5Z6mID4ga8SVbjsgIzU3QTYKK+WepyA+IGrEq29uZzsgIzU3QTcKK+WeqCA+IHNoxY91OyAjNTdBOAor5Z6pID4gw6g7ICM1N0E5CivlnqsgPiBkacOgbjsgIzU3QUIKK+WerCA+IGjDs25nOyAjNTdBQwor5Z6tID4gd8O5OyAjNTdBRAor5Z6uID4ga3XEgzsgIzU3QUUKK+WesSA+IGTDoG5nOyAjNTdCMQor5Z6yID4ga8SDaTsgIzU3QjIKK+WetCA+IG7Eg287ICM1N0I0CivlnrUgPiDEg247ICM1N0I1CivlnrYgPiB4xKtuZzsgIzU3QjYKK+WetyA+IHhpw6BuOyAjNTdCNwor5Z64ID4gaHXDoG47ICM1N0I4CivlnrkgPiBixIFuZzsgIzU3QjkKK+WeuiA+IHDEk2k7ICM1N0JBCivlnrsgPiBiw6A7ICM1N0JCCivlnrwgPiB5w6w7ICM1N0JDCivlnr0gPiB5w6xuOyAjNTdCRAor5Z6+ID4gaMOgbjsgIzU3QkUKK+WevyA+IHjDuTsgIzU3QkYKK+WfgCA+IGNow7ppOyAjNTdDMAor5Z+BID4gY8OpbjsgIzU3QzEKK+WfgiA+IGfElW5nOyAjNTdDMgor5Z+DID4gxIFpOyAjNTdDMwor5Z+EID4gcMOpbmc7ICM1N0M0Civln4UgPiBmw6FuZzsgIzU3QzUKK+WfhiA+IHF1w6g7ICM1N0M2Civln4cgPiB5xY9uZzsgIzU3QzcKK+WfiCA+IHjDuW47ICM1N0M4Civln4kgPiBqacOhOyAjNTdDOQor5Z+KID4gZMOsOyAjNTdDQQor5Z+LID4gbcOhaTsgIzU3Q0IKK+WfjCA+IGzDoG5nOyAjNTdDQwor5Z+NID4geHXDoG47ICM1N0NECivln44gPiBjaMOpbmc7ICM1N0NFCivln48gPiB5w6FuOyAjNTdDRgor5Z+QID4gasSrbjsgIzU3RDAKK+WfkSA+IHpow6k7ICM1N0QxCivln5IgPiBsw6hpOyAjNTdEMgor5Z+TID4gbGnDqDsgIzU3RDMKK+WflCA+IGLDuTsgIzU3RDQKK+WflSA+IGNow6luZzsgIzU3RDUKK+WflyA+IGLDuTsgIzU3RDcKK+WfmCA+IHNow607ICM1N0Q4Civln5kgPiB4xatuOyAjNTdEOQor5Z+aID4gZ8WrbzsgIzU3REEKK+WfmyA+IGrEq29uZzsgIzU3REIKK+WfnCA+IHnElTsgIzU3REMKK+WfnSA+IG5pw6BuOyAjNTdERAor5Z+eID4gZMStOyAjNTdERQor5Z+fID4gecO5OyAjNTdERgor5Z+gID4gYsO5OyAjNTdFMAor5Z+hID4gecOgOyAjNTdFMQor5Z+iID4ganXEg247ICM1N0UyCivln6MgPiBzw7lpOyAjNTdFMwor5Z+kID4gcMOtOyAjNTdFNAor5Z+lID4gY2jEk25nOyAjNTdFNQor5Z+mID4gd8SDbjsgIzU3RTYKK+WfpyA+IGrDuTsgIzU3RTcKK+WfqCA+IGzFrW47ICM1N0U4Civln6kgPiB6aMSTbmc7ICM1N0U5Civln6ogPiBrxY1uZzsgIzU3RUEKK+WfqyA+IGNoxY9uZzsgIzU3RUIKK+WfrCA+IGTFjW5nOyAjNTdFQwor5Z+tID4gZMOgaTsgIzU3RUQKK+WfriA+IHTDoG47ICM1N0VFCivln68gPiDEg247ICM1N0VGCivln7AgPiBjw6BpOyAjNTdGMAor5Z+xID4gc2jDujsgIzU3RjEKK+WfsiA+IGLElW5nOyAjNTdGMgor5Z+zID4ga8SDbjsgIzU3RjMKK+WftCA+IHpow607ICM1N0Y0Civln7UgPiBkxa1vOyAjNTdGNQor5Z+2ID4gecOsOyAjNTdGNgor5Z+3ID4gemjDrTsgIzU3RjcKK+WfuCA+IHnDrDsgIzU3RjgKK+WfuSA+IHDDqWk7ICM1N0Y5Civln7ogPiBqxKs7ICM1N0ZBCivln7sgPiB6aMWtbjsgIzU3RkIKK+WfvCA+IHHDrTsgIzU3RkMKK+WfvSA+IHPDoG87ICM1N0ZECivln74gPiBqw7k7ICM1N0ZFCivln78gPiBuw607ICM1N0ZGCivloIAgPiBrxas7ICM1ODAwCivloIEgPiBrw6g7ICM1ODAxCivloIIgPiB0w6FuZzsgIzU4MDIKK+WggyA+IGvFq247ICM1ODAzCivloIQgPiBuw6w7ICM1ODA0CivloIUgPiBqacSBbjsgIzU4MDUKK+WghiA+IGTFq2k7ICM1ODA2CivloIcgPiBqxK1uOyAjNTgwNwor5aCIID4gZ8SBbmc7ICM1ODA4CivloIkgPiB5w7k7ICM1ODA5CivloIogPiDDqDsgIzU4MEEKK+WgiyA+IHDDqW5nOyAjNTgwQgor5aCMID4gZ8O5OyAjNTgwQwor5aCNID4gdMO5OyAjNTgwRAor5aCOID4gbMOobmc7ICM1ODBFCivloJAgPiB5w6E7ICM1ODEwCivloJEgPiBxacOgbjsgIzU4MTEKK+WgkyA+IMOgbjsgIzU4MTMKK+WglSA+IGTDuW87ICM1ODE1CivloJYgPiBuxINvOyAjNTgxNgor5aCXID4gdMWrOyAjNTgxNwor5aCYID4gY2jDqW5nOyAjNTgxOAor5aCZID4gecSrbjsgIzU4MTkKK+WgmiA+IGjDum47ICM1ODFBCivloJsgPiBiw6w7ICM1ODFCCivloJwgPiBsacOgbjsgIzU4MUMKK+WgnSA+IGfFq287ICM1ODFECivloJ4gPiBkacOpOyAjNTgxRQor5aCfID4gemh1w6BuOyAjNTgxRgor5aCgID4gaMOydTsgIzU4MjAKK+WgoSA+IGLEg287ICM1ODIxCivloKIgPiBixINvOyAjNTgyMgor5aCjID4gecO6OyAjNTgyMwor5aCkID4gZMSrOyAjNTgyNAor5aClID4gbcOhbzsgIzU4MjUKK+WgpiA+IGppxJM7ICM1ODI2CivloKcgPiBydcOhbjsgIzU4MjcKK+WgqCA+IMOoOyAjNTgyOAor5aCpID4gZ8Oobmc7ICM1ODI5CivloKogPiBrxIFuOyAjNTgyQQor5aCrID4gesWNbmc7ICM1ODJCCivloKwgPiB5w7o7ICM1ODJDCivloK0gPiBodcOhbmc7ICM1ODJECivloK4gPiDDqDsgIzU4MkUKK+WgryA+IHnDoW87ICM1ODJGCivloLAgPiB5w6BuOyAjNTgzMAor5aCxID4gYsOgbzsgIzU4MzEKK+WgsiA+IGrDrTsgIzU4MzIKK+WgsyA+IG3DqWk7ICM1ODMzCivloLQgPiBjaMOhbmc7ICM1ODM0CivloLUgPiBkxa07ICM1ODM1CivloLYgPiB0w7pvOyAjNTgzNgor5aC3ID4gecOsbjsgIzU4MzcKK+WguCA+IGbDqW5nOyAjNTgzOAor5aC5ID4gemjDsm5nOyAjNTgzOQor5aC6ID4gamnDqDsgIzU4M0EKK+WguyA+IHpoxJNuOyAjNTgzQgor5aC8ID4gZsSTbmc7ICM1ODNDCivloL0gPiBnxIFuZzsgIzU4M0QKK+WgviA+IGNodcSDbjsgIzU4M0UKK+WgvyA+IGppxINuOyAjNTgzRgor5aGCID4geGnDoG5nOyAjNTg0Mgor5aGDID4gaHXEgW5nOyAjNTg0Mwor5aGEID4gbMOpbmc7ICM1ODQ0CivloYUgPiBkdcOgbjsgIzU4NDUKK+WhhyA+IHh1xIFuOyAjNTg0Nwor5aGIID4gasOsOyAjNTg0OAor5aGJID4gasOtOyAjNTg0OQor5aGKID4ga3XDoGk7ICM1ODRBCivloYsgPiB5w61uZzsgIzU4NEIKK+WhjCA+IHTEgTsgIzU4NEMKK+WhjSA+IGNow6luZzsgIzU4NEQKK+WhjiA+IHnFj25nOyAjNTg0RQor5aGPID4ga8SDaTsgIzU4NEYKK+WhkCA+IHPDuTsgIzU4NTAKK+WhkSA+IHPDuTsgIzU4NTEKK+WhkiA+IHNow607ICM1ODUyCivloZMgPiBtw6w7ICM1ODUzCivloZQgPiB0xIM7ICM1ODU0CivloZUgPiB3xJVuZzsgIzU4NTUKK+WhliA+IGNow6luZzsgIzU4NTYKK+WhlyA+IHTDujsgIzU4NTcKK+WhmCA+IHTDoW5nOyAjNTg1OAor5aGZID4gcXXDqDsgIzU4NTkKK+WhmiA+IHpoxY9uZzsgIzU4NUEKK+WhmyA+IGzDrDsgIzU4NUIKK+WhnCA+IHDDqW5nOyAjNTg1Qwor5aGdID4gYsOgbmc7ICM1ODVECivloZ4gPiBzxIFpOyAjNTg1RQor5aGfID4gesOgbmc7ICM1ODVGCivloaAgPiBkxatpOyAjNTg2MAor5aGhID4gdGnDoW47ICM1ODYxCivloaIgPiB3w7k7ICM1ODYyCivloaMgPiBjaMSVbmc7ICM1ODYzCivloaQgPiB4xatuOyAjNTg2NAor5aGlID4gZ8OpOyAjNTg2NQor5aGmID4gemjDqG47ICM1ODY2CivloacgPiDDoGk7ICM1ODY3CivloaggPiBnxY1uZzsgIzU4NjgKK+WhqSA+IHnDoW47ICM1ODY5CivloaogPiBrxINuOyAjNTg2QQor5aGrID4gdGnDoW47ICM1ODZCCivloawgPiB5dcOhbjsgIzU4NkMKK+WhrSA+IHfEk247ICM1ODZECivloa4gPiB4acOoOyAjNTg2RQor5aGvID4gbMOsdTsgIzU4NkYKK+WhsSA+IGzEg25nOyAjNTg3MQor5aGyID4gY2jDoW5nOyAjNTg3Mgor5aGzID4gcMOpbmc7ICM1ODczCivlobQgPiBiw6huZzsgIzU4NzQKK+WhtSA+IGNow6luOyAjNTg3NQor5aG2ID4gY8O5OyAjNTg3Ngor5aG3ID4gbMWtOyAjNTg3Nwor5aG4ID4gxY91OyAjNTg3OAor5aG5ID4gcWnDoG47ICM1ODc5CivlobogPiBtw6lpOyAjNTg3QQor5aG7ID4gbcOyOyAjNTg3Qgor5aG8ID4gemh1xIFuOyAjNTg3Qwor5aG9ID4gc2h1xINuZzsgIzU4N0QKK+WhviA+IHNow7o7ICM1ODdFCivlob8gPiBsxY91OyAjNTg3Rgor5aKAID4gY2jDrTsgIzU4ODAKK+WigSA+IG3DoG47ICM1ODgxCivlooIgPiBiacSBbzsgIzU4ODIKK+WigyA+IGrDrG5nOyAjNTg4Mwor5aKEID4gccSrOyAjNTg4NAor5aKFID4gc2jDuTsgIzU4ODUKK+WihiA+IGTDrDsgIzU4ODYKK+WihyA+IHpoxIFuZzsgIzU4ODcKK+WiiCA+IGvDoG47ICM1ODg4CivlookgPiB5xY1uZzsgIzU4ODkKK+WiiiA+IGRpw6BuOyAjNTg4QQor5aKLID4gY2jElW47ICM1ODhCCivloowgPiB6aMSrOyAjNTg4Qwor5aKNID4geMOsOyAjNTg4RAor5aKOID4gZ8WrbzsgIzU4OEUKK+WijyA+IHFpxINuZzsgIzU4OEYKK+WikCA+IGrDrG47ICM1ODkwCivlopEgPiBkxKs7ICM1ODkxCivlopIgPiBzaMSBbmc7ICM1ODkyCivlopMgPiBtw7k7ICM1ODkzCivlopQgPiBjxatpOyAjNTg5NAor5aKVID4gecOgbjsgIzU4OTUKK+WiliA+IHTEgzsgIzU4OTYKK+WilyA+IHrEk25nOyAjNTg5Nwor5aKYID4gccOtOyAjNTg5OAor5aKZID4gcWnDoW5nOyAjNTg5OQor5aKaID4gbGnDoW5nOyAjNTg5QQor5aKcID4gemjDuWk7ICM1ODlDCivlop0gPiBxacSBbzsgIzU4OUQKK+WiniA+IHrEk25nOyAjNTg5RQor5aKfID4geMWrOyAjNTg5Rgor5aKgID4gc2jDoG47ICM1OEEwCivloqEgPiBzaMOgbjsgIzU4QTEKK+WioiA+IGLDoTsgIzU4QTIKK+WioyA+IHDFqzsgIzU4QTMKK+WipCA+IGt1w6BpOyAjNThBNAor5aKlID4gZMWPbmc7ICM1OEE1CivloqYgPiBmw6FuOyAjNThBNgor5aKnID4gcXXDqDsgIzU4QTcKK+WiqCA+IG3DsjsgIzU4QTgKK+WiqSA+IGTFq247ICM1OEE5CivloqogPiBkxatuOyAjNThBQQor5aKrID4gZMWrbjsgIzU4QUIKK+WirCA+IGTDrDsgIzU4QUMKK+WirSA+IHNow6huZzsgIzU4QUQKK+WiriA+IGTDuW87ICM1OEFFCivloq8gPiBkw7lvOyAjNThBRgor5aKwID4gdMOhbjsgIzU4QjAKK+WisSA+IGTDqG5nOyAjNThCMQor5aKyID4gd8WtOyAjNThCMgor5aKzID4gZsOpbjsgIzU4QjMKK+WitCA+IGh1w6FuZzsgIzU4QjQKK+WitSA+IHTDoW47ICM1OEI1CivlorYgPiBkxIE7ICM1OEI2CivlorcgPiB5w6g7ICM1OEI3CivlorogPiB5w7k7ICM1OEJBCivlorsgPiBxacOhbmc7ICM1OEJCCivlorwgPiBqxKs7ICM1OEJDCivlor0gPiBxacSBbzsgIzU4QkQKK+WiviA+IGvElW47ICM1OEJFCivlor8gPiB5w6w7ICM1OEJGCivlo4AgPiBww607ICM1OEMwCivlo4EgPiBiw6w7ICM1OEMxCivlo4IgPiBkacOgbjsgIzU4QzIKK+WjgyA+IGppxIFuZzsgIzU4QzMKK+WjhCA+IHnElTsgIzU4QzQKK+WjhSA+IHnFjW5nOyAjNThDNQor5aOGID4gYsOzOyAjNThDNgor5aOHID4gdMOhbjsgIzU4QzcKK+WjiCA+IGzEg247ICM1OEM4Civlo4kgPiBqw7k7ICM1OEM5Civlo4ogPiBodcOgaTsgIzU4Q0EKK+WjiyA+IGTDoG5nOyAjNThDQgor5aOMID4gcsSDbmc7ICM1OENDCivlo40gPiBxacOgbjsgIzU4Q0QKK+WjjiA+IHjFq247ICM1OENFCivlo48gPiBsw6BuOyAjNThDRgor5aOQID4geMStOyAjNThEMAor5aORID4gaMOoOyAjNThEMQor5aOSID4gw6BpOyAjNThEMgor5aOTID4gecSBOyAjNThEMwor5aOUID4gZMSDbzsgIzU4RDQKK+WjlSA+IGjDoW87ICM1OEQ1Civlo5YgPiBydcOhbjsgIzU4RDYKK+WjmCA+IGzElWk7ICM1OEQ4Civlo5kgPiBrdcOgbmc7ICM1OEQ5Civlo5ogPiBsw7o7ICM1OERBCivlo5sgPiB5w6FuOyAjNThEQgor5aOcID4gdMOhbjsgIzU4REMKK+WjnSA+IHfDqWk7ICM1OERECivlo54gPiBodcOgaTsgIzU4REUKK+WjnyA+IGzFj25nOyAjNThERgor5aOgID4gbMWPbmc7ICM1OEUwCivlo6EgPiByw7lpOyAjNThFMQor5aOiID4gbMOsOyAjNThFMgor5aOjID4gbMOtbjsgIzU4RTMKK+WjpCA+IHLEg25nOyAjNThFNAor5aOmID4geMWrbjsgIzU4RTYKK+WjpyA+IHnDoW47ICM1OEU3Civlo6ggPiBsw6lpOyAjNThFOAor5aOpID4gYsOgOyAjNThFOQor5aOrID4gc2jDrDsgIzU4RUIKK+WjrCA+IHLDqW47ICM1OEVDCivlo64gPiB6aHXDoG5nOyAjNThFRQor5aOvID4gemh1w6BuZzsgIzU4RUYKK+WjsCA+IHNoxJNuZzsgIzU4RjAKK+WjsSA+IHnEqzsgIzU4RjEKK+WjsiA+IG3DoGk7ICM1OEYyCivlo7MgPiBrw6k7ICM1OEYzCivlo7QgPiB6aMWtOyAjNThGNAor5aO1ID4gemh1w6BuZzsgIzU4RjUKK+WjtiA+IGjDujsgIzU4RjYKK+WjtyA+IGjDujsgIzU4RjcKK+WjuCA+IGvFrW47ICM1OEY4Civlo7kgPiB5xKs7ICM1OEY5Civlo7ogPiBow7o7ICM1OEZBCivlo7sgPiB4w7k7ICM1OEZCCivlo7wgPiBrxa1uOyAjNThGQwor5aO9ID4gc2jDsnU7ICM1OEZECivlo74gPiBtxINuZzsgIzU4RkUKK+WjvyA+IHrFrW47ICM1OEZGCivlpIAgPiBzaMOydTsgIzU5MDAKK+WkgSA+IHnEqzsgIzU5MDEKK+WkgiA+IHpoxK07ICM1OTAyCivlpIMgPiBnxas7ICM1OTAzCivlpIQgPiBjaMO5OyAjNTkwNAor5aSFID4gamnDoG5nOyAjNTkwNQor5aSGID4gZsSTbmc7ICM1OTA2CivlpIcgPiBiw6hpOyAjNTkwNwor5aSJID4gYmnDoG47ICM1OTA5CivlpIogPiBzxatpOyAjNTkwQQor5aSLID4gccWrbjsgIzU5MEIKK+WkjCA+IGzDrW5nOyAjNTkwQwor5aSNID4gZsO5OyAjNTkwRAor5aSOID4gesO5bzsgIzU5MEUKK+WkjyA+IHhpw6A7ICM1OTBGCivlpJAgPiB4w6xvbmc7ICM1OTEwCivlpJIgPiBuw6FvOyAjNTkxMgor5aSTID4geGnDoDsgIzU5MTMKK+WklCA+IGvDumk7ICM1OTE0CivlpJUgPiB4xKs7ICM1OTE1CivlpJYgPiB3w6BpOyAjNTkxNgor5aSXID4geXXDoG47ICM1OTE3CivlpJggPiBtxINvOyAjNTkxOAor5aSZID4gc8O5OyAjNTkxOQor5aSaID4gZMWrbzsgIzU5MUEKK+WkmyA+IGTFq287ICM1OTFCCivlpJwgPiB5w6g7ICM1OTFDCivlpJ0gPiBxw61uZzsgIzU5MUQKK+WknyA+IGfDsnU7ICM1OTFGCivlpKAgPiBnw7J1OyAjNTkyMAor5aShID4gccOsOyAjNTkyMQor5aSiID4gbcOobmc7ICM1OTIyCivlpKMgPiBtw6huZzsgIzU5MjMKK+WkpCA+IHnDrW47ICM1OTI0CivlpKUgPiBoxa1vOyAjNTkyNQor5aSmID4gY2jDqG47ICM1OTI2CivlpKcgPiBkw6A7ICM1OTI3CivlpKggPiB6w6g7ICM1OTI4CivlpKkgPiB0acSBbjsgIzU5MjkKK+WkqiA+IHTDoGk7ICM1OTJBCivlpKsgPiBmxas7ICM1OTJCCivlpKwgPiBndcOgaTsgIzU5MkMKK+WkrSA+IHnEg287ICM1OTJECivlpK4gPiB5xIFuZzsgIzU5MkUKK+WkryA+IGjEgW5nOyAjNTkyRgor5aSwID4gZ8SDbzsgIzU5MzAKK+WksSA+IHNoxKs7ICM1OTMxCivlpLIgPiBixJVuOyAjNTkzMgor5aSzID4gdMOgaTsgIzU5MzMKK+WktCA+IHTDs3U7ICM1OTM0CivlpLUgPiB5xINuOyAjNTkzNQor5aS2ID4gYsStOyAjNTkzNgor5aS3ID4gecOtOyAjNTkzNwor5aS4ID4ga3XEgTsgIzU5MzgKK+WkuSA+IGppxIE7ICM1OTM5CivlpLogPiBkw7pvOyAjNTkzQQor5aS8ID4ga3XEg25nOyAjNTkzQwor5aS9ID4gecO5bjsgIzU5M0QKK+WkviA+IGppxIE7ICM1OTNFCivlpL8gPiBwxIE7ICM1OTNGCivlpYAgPiDEk247ICM1OTQwCivlpYEgPiBsacOhbjsgIzU5NDEKK+WlgiA+IGh1w6BuOyAjNTk0Mgor5aWDID4gZMOsOyAjNTk0Mwor5aWEID4gecSDbjsgIzU5NDQKK+WlhSA+IHDDoG87ICM1OTQ1CivlpYYgPiBxdcSDbjsgIzU5NDYKK+WlhyA+IHHDrTsgIzU5NDcKK+WliCA+IG7DoGk7ICM1OTQ4CivlpYkgPiBmw6huZzsgIzU5NDkKK+WliiA+IHhpw6k7ICM1OTRBCivlpYsgPiBmw6huOyAjNTk0Qgor5aWMID4gZGnEg247ICM1OTRDCivlpY4gPiBrw7ppOyAjNTk0RQor5aWPID4gesOydTsgIzU5NEYKK+WlkCA+IGh1w6BuOyAjNTk1MAor5aWRID4gccOsOyAjNTk1MQor5aWSID4ga8SBaTsgIzU5NTIKK+WlkyA+IHpow6A7ICM1OTUzCivlpZQgPiBixJNuOyAjNTk1NAor5aWVID4gecOsOyAjNTk1NQor5aWWID4gamnEg25nOyAjNTk1Ngor5aWXID4gdMOgbzsgIzU5NTcKK+WlmCA+IHrDoG5nOyAjNTk1OAor5aWZID4gYsSVbjsgIzU5NTkKK+WlmiA+IHjEqzsgIzU5NUEKK+WlmyA+IHhpxINuZzsgIzU5NUIKK+WlnCA+IGbElWk7ICM1OTVDCivlpZ0gPiBkacSBbzsgIzU5NUQKK+WlniA+IHjDuW47ICM1OTVFCivlpZ8gPiBrxJNuZzsgIzU5NUYKK+WloCA+IGRpw6BuOyAjNTk2MAor5aWhID4gw6BvOyAjNTk2MQor5aWiID4gc2jEkzsgIzU5NjIKK+WloyA+IHfElW5nOyAjNTk2Mwor5aWkID4gcMSDbjsgIzU5NjQKK+WlpSA+IMOgbzsgIzU5NjUKK+WlpiA+IHfDuTsgIzU5NjYKK+WlpyA+IMOgbzsgIzU5NjcKK+WlqCA+IGppxINuZzsgIzU5NjgKK+WlqSA+IGxpw6FuOyAjNTk2OQor5aWqID4gZMO6bzsgIzU5NkEKK+WlqyA+IHnFq247ICM1OTZCCivlpawgPiBqacSDbmc7ICM1OTZDCivlpa0gPiBzaMOsOyAjNTk2RAor5aWuID4gZsOobjsgIzU5NkUKK+WlryA+IGjDuW87ICM1OTZGCivlpbAgPiBiw6w7ICM1OTcwCivlpbEgPiBsacOhbjsgIzU5NzEKK+WlsiA+IGTFrW87ICM1OTcyCivlpbMgPiBux5o7ICM1OTczCivlpbQgPiBuw7o7ICM1OTc0CivlpbUgPiBkxKtuZzsgIzU5NzUKK+WltiA+IG7Eg2k7ICM1OTc2CivlpbcgPiBxacSBbjsgIzU5NzcKK+WluCA+IGppxIFuOyAjNTk3OAor5aW5ID4gdMSBOyAjNTk3OQor5aW6ID4gasStdTsgIzU5N0EKK+WluyA+IG7DoW47ICM1OTdCCivlpbwgPiBjaMOgOyAjNTk3Qwor5aW9ID4gaMSDbzsgIzU5N0QKK+WlviA+IHhpxIFuOyAjNTk3RQor5aW/ID4gZsOgbjsgIzU5N0YKK+WmgCA+IGrErTsgIzU5ODAKK+WmgSA+IHNow7lvOyAjNTk4MQor5aaCID4gcsO6OyAjNTk4Mgor5aaDID4gZsSTaTsgIzU5ODMKK+WmhCA+IHfDoG5nOyAjNTk4NAor5aaFID4gaMOzbmc7ICM1OTg1CivlpoYgPiB6aHXEgW5nOyAjNTk4Ngor5aaHID4gZsO5OyAjNTk4Nwor5aaIID4gbcSBOyAjNTk4OAor5aaJID4gZMSBbjsgIzU5ODkKK+WmiiA+IHLDqG47ICM1OThBCivlposgPiBmxas7ICM1OThCCivlpowgPiBqw6xuZzsgIzU5OEMKK+WmjSA+IHnDoW47ICM1OThECivlpo4gPiB4acOoOyAjNTk4RQor5aaPID4gd8OobjsgIzU5OEYKK+WmkCA+IHpoxY1uZzsgIzU5OTAKK+WmkSA+IHDEgTsgIzU5OTEKK+WmkiA+IGTDuTsgIzU5OTIKK+WmkyA+IGrDrDsgIzU5OTMKK+WmlCA+IGvEk25nOyAjNTk5NAor5aaVID4gemjDsm5nOyAjNTk5NQor5aaWID4gecSBbzsgIzU5OTYKK+WmlyA+IGrDrG47ICM1OTk3CivlppggPiB5w7puOyAjNTk5OAor5aaZID4gbWnDoG87ICM1OTk5CivlppogPiBwxJNpOyAjNTk5QQor5aacID4geXXDqDsgIzU5OUMKK+WmnSA+IHpodcSBbmc7ICM1OTlECivlpp4gPiBuxKt1OyAjNTk5RQor5aafID4gecOgbjsgIzU5OUYKK+WmoCA+IG7DoDsgIzU5QTAKK+WmoSA+IHjEq247ICM1OUExCivlpqIgPiBmw6luOyAjNTlBMgor5aajID4gYsStOyAjNTlBMwor5aakID4gecO6OyAjNTlBNAor5aalID4gdMWtbzsgIzU5QTUKK+WmpiA+IGbEk25nOyAjNTlBNgor5aanID4geXXDoW47ICM1OUE3CivlpqggPiBmw6FuZzsgIzU5QTgKK+WmqSA+IHfFrTsgIzU5QTkKK+WmqiA+IHnDuTsgIzU5QUEKK+WmqyA+IGfFq2k7ICM1OUFCCivlpqwgPiBkw7k7ICM1OUFDCivlpq0gPiBiw6E7ICM1OUFECivlpq4gPiBuxKs7ICM1OUFFCivlpq8gPiB6aMOzdTsgIzU5QUYKK+WmsCA+IHpow7pvOyAjNTlCMAor5aaxID4gemjEgW87ICM1OUIxCivlprIgPiBkw6E7ICM1OUIyCivlprMgPiBuxINpOyAjNTlCMwor5aa0ID4geXXEg247ICM1OUI0CivlprUgPiB0xY91OyAjNTlCNQor5aa2ID4geHXDoW47ICM1OUI2CivlprcgPiB6aMOtOyAjNTlCNwor5aa4ID4gxJM7ICM1OUI4CivlprkgPiBtw6hpOyAjNTlCOQor5aa6ID4gbcOyOyAjNTlCQQor5aa7ID4gccSrOyAjNTlCQgor5aa8ID4gYsOsOyAjNTlCQwor5aa9ID4gc2jEk247ICM1OUJECivlpr4gPiBxacOoOyAjNTlCRQor5aa/ID4gxJM7ICM1OUJGCivlp4AgPiBow6k7ICM1OUMwCivlp4EgPiB4xa07ICM1OUMxCivlp4IgPiBmw6E7ICM1OUMyCivlp4MgPiB6aMSTbmc7ICM1OUMzCivlp4QgPiBtw61uOyAjNTlDNAor5aeFID4gYsOgbjsgIzU5QzUKK+WnhiA+IG3FrTsgIzU5QzYKK+WnhyA+IGbFqzsgIzU5QzcKK+WniCA+IGzDrW5nOyAjNTlDOAor5aeJID4gesStOyAjNTlDOQor5aeKID4gesStOyAjNTlDQQor5aeLID4gc2jErTsgIzU5Q0IKK+WnjCA+IHLEg247ICM1OUNDCivlp40gPiBzaMSBbjsgIzU5Q0QKK+WnjiA+IHnEgW5nOyAjNTlDRQor5aePID4gbcOhbjsgIzU5Q0YKK+WnkCA+IGppxJU7ICM1OUQwCivlp5EgPiBnxas7ICM1OUQxCivlp5IgPiBzw6w7ICM1OUQyCivlp5MgPiB4w6xuZzsgIzU5RDMKK+WnlCA+IHfElWk7ICM1OUQ0Civlp5UgPiB6xKs7ICM1OUQ1Civlp5YgPiBqw7k7ICM1OUQ2Civlp5cgPiBzaMSBbjsgIzU5RDcKK+WnmCA+IHDEq247ICM1OUQ4Civlp5kgPiByw6huOyAjNTlEOQor5aeaID4gecOhbzsgIzU5REEKK+WnmyA+IHTFj25nOyAjNTlEQgor5aecID4gamnEgW5nOyAjNTlEQwor5aedID4gc2jFqzsgIzU5REQKK+WnniA+IGrDrTsgIzU5REUKK+WnnyA+IGfEgWk7ICM1OURGCivlp6AgPiBzaMOgbmc7ICM1OUUwCivlp6EgPiBrw7lvOyAjNTlFMQor5aeiID4ganXEgW47ICM1OUUyCivlp6MgPiBqacSBbzsgIzU5RTMKK+WnpCA+IGfDsnU7ICM1OUU0Civlp6UgPiBtxa07ICM1OUU1Civlp6YgPiBqacSBbjsgIzU5RTYKK+WnpyA+IGppxIFuOyAjNTlFNwor5aeoID4gecOtOyAjNTlFOAor5aepID4gbmnDoG47ICM1OUU5Civlp6ogPiB6aMOtOyAjNTlFQQor5aerID4gasSrOyAjNTlFQgor5aesID4gasSrOyAjNTlFQwor5aetID4geGnDoG47ICM1OUVECivlp64gPiBow6luZzsgIzU5RUUKK+WnryA+IGd1xIFuZzsgIzU5RUYKK+WnsCA+IGrFq247ICM1OUYwCivlp7EgPiBrdcSBOyAjNTlGMQor5aeyID4gecOgbjsgIzU5RjIKK+WnsyA+IG3ErW5nOyAjNTlGMwor5ae0ID4gbGnDqDsgIzU5RjQKK+WntSA+IHDDqGk7ICM1OUY1Civlp7YgPiB5xINuOyAjNTlGNgor5ae3ID4gecOydTsgIzU5RjcKK+WnuCA+IHnDoW47ICM1OUY4Civlp7kgPiBjaMOgOyAjNTlGOQor5ae6ID4gc2jEk247ICM1OUZBCivlp7sgPiB5xKtuOyAjNTlGQgor5ae8ID4gY2jErTsgIzU5RkMKK+WnvSA+IGfFrWk7ICM1OUZECivlp74gPiBxdcSBbjsgIzU5RkUKK+WnvyA+IHrEqzsgIzU5RkYKK+WogCA+IHPFjW5nOyAjNUEwMAor5aiBID4gd8STaTsgIzVBMDEKK+WogiA+IGjDs25nOyAjNUEwMgor5aiDID4gd8OhOyAjNUEwMwor5aiEID4gbMOzdTsgIzVBMDQKK+WohSA+IHnDoDsgIzVBMDUKK+WohiA+IHLEg287ICM1QTA2CivlqIcgPiBqacSBbzsgIzVBMDcKK+WoiCA+IGx1w6FuOyAjNUEwOAor5aiJID4gcMSrbmc7ICM1QTA5CivlqIogPiB4acOgbjsgIzVBMEEKK+WoiyA+IHNow6BvOyAjNUEwQgor5aiMID4gbMStOyAjNUEwQwor5aiNID4gY2jDqW5nOyAjNUEwRAor5aiOID4geGnDoG87ICM1QTBFCivlqI8gPiBtw6FuZzsgIzVBMEYKK+WokCA+IGZ1OyAjNUExMAor5aiRID4gc8WrbzsgIzVBMTEKK+WokiA+IHfFrTsgIzVBMTIKK+WokyA+IHfElWk7ICM1QTEzCivlqJQgPiBrw6g7ICM1QTE0CivlqJUgPiBsw6BpOyAjNUExNQor5aiWID4gY2jDuW87ICM1QTE2CivlqJcgPiBkw6xuZzsgIzVBMTcKK+WomCA+IG5pw6FuZzsgIzVBMTgKK+WomSA+IHjDrW5nOyAjNUExOQor5aiaID4gbsOhbjsgIzVBMUEKK+WomyA+IHnDujsgIzVBMUIKK+WonCA+IG7Dum87ICM1QTFDCivlqJ0gPiBwxJNpOyAjNUExRAor5aieID4gbsSVaTsgIzVBMUUKK+WonyA+IGp1xIFuOyAjNUExRgor5aigID4gc2jEk247ICM1QTIwCivlqKEgPiB6aMOsOyAjNUEyMQor5aiiID4gaMOhbjsgIzVBMjIKK+WooyA+IGTDrDsgIzVBMjMKK+WopCA+IHpodcSBbmc7ICM1QTI0CivlqKUgPiDDqTsgIzVBMjUKK+WopiA+IHDDrW47ICM1QTI2CivlqKcgPiB0w7lpOyAjNUEyNwor5aioID4gaMOgbjsgIzVBMjgKK+WoqSA+IG1pxINuOyAjNUEyOQor5aiqID4gd8O6OyAjNUEyQQor5airID4gecOhbjsgIzVBMkIKK+WorCA+IHfFrTsgIzVBMkMKK+WorSA+IHjEqzsgIzVBMkQKK+WoriA+IHnDoW47ICM1QTJFCivlqK8gPiB5w7o7ICM1QTJGCivlqLAgPiBzw6w7ICM1QTMwCivlqLEgPiB5w7o7ICM1QTMxCivlqLIgPiB3xIE7ICM1QTMyCivlqLQgPiB4acOhbjsgIzVBMzQKK+WotSA+IGrFqzsgIzVBMzUKK+WotiA+IHHFrTsgIzVBMzYKK+WotyA+IHNow7lpOyAjNUEzNwor5ai4ID4gccSrOyAjNUEzOAor5ai5ID4geGnDoW47ICM1QTM5CivlqLogPiB6aMWraTsgIzVBM0EKK+WouyA+IGTFjW5nOyAjNUEzQgor5ai8ID4gY2jEgW5nOyAjNUEzQwor5ai9ID4gbMO5OyAjNUEzRAor5ai+ID4gxINpOyAjNUEzRQor5ai/ID4gxJM7ICM1QTNGCivlqYAgPiDEkzsgIzVBNDAKK+WpgSA+IGzDs3U7ICM1QTQxCivlqYIgPiBtacOhbjsgIzVBNDIKK+WpgyA+IGPDs25nOyAjNUE0Mwor5amEID4gcMWPdTsgIzVBNDQKK+WphSA+IGrDujsgIzVBNDUKK+WphiA+IHDDszsgIzVBNDYKK+WphyA+IGPEg2k7ICM1QTQ3CivlqYggPiBkw61uZzsgIzVBNDgKK+WpiSA+IHfEg247ICM1QTQ5CivlqYogPiBiacSDbzsgIzVBNEEKK+WpiyA+IHhpxIFvOyAjNUE0Qgor5amMID4gc2jFrTsgIzVBNEMKK+WpjSA+IHHErTsgIzVBNEQKK+WpjiA+IGjFq2k7ICM1QTRFCivlqY8gPiBmw7k7ICM1QTRGCivlqZAgPiDEkzsgIzVBNTAKK+WpkSA+IHfFjzsgIzVBNTEKK+WpkiA+IHTDoW47ICM1QTUyCivlqZMgPiBmxJNpOyAjNUE1Mwor5amUID4gd2VpOyAjNUE1NAor5amVID4gamnDqTsgIzVBNTUKK+WpliA+IHRpxIFuOyAjNUE1Ngor5amXID4gbsOtOyAjNUE1Nwor5amYID4gcXXDoW47ICM1QTU4CivlqZkgPiBqw6xuZzsgIzVBNTkKK+WpmiA+IGjFq247ICM1QTVBCivlqZsgPiBqxKtuZzsgIzVBNUIKK+WpnCA+IHFpxIFuOyAjNUE1Qwor5amdID4gZGnDoG47ICM1QTVECivlqZ4gPiB4w6xuZzsgIzVBNUUKK+WpnyA+IGjDuTsgIzVBNUYKK+WpoCA+IHfDoDsgIzVBNjAKK+WpoSA+IGzDoWk7ICM1QTYxCivlqaIgPiBiw6w7ICM1QTYyCivlqaMgPiB5xKtuOyAjNUE2Mwor5amkID4gY2jFjXU7ICM1QTY0CivlqaUgPiBjaMO5bzsgIzVBNjUKK+WppiA+IGbDuTsgIzVBNjYKK+WppyA+IGrDrG5nOyAjNUE2Nwor5amoID4gbMO6bjsgIzVBNjgKK+WpqSA+IHnDoG47ICM1QTY5CivlqaogPiBsw6FuOyAjNUE2QQor5amrID4ga8WrbjsgIzVBNkIKK+WprCA+IHnDrW47ICM1QTZDCivlqa0gPiB5w6A7ICM1QTZECivlqa4gPiBqdTsgIzVBNkUKK+WpryA+IGzDrDsgIzVBNkYKK+WpsCA+IGRpxINuOyAjNUE3MAor5amxID4geGnDoW47ICM1QTcxCivlqbMgPiBodcOgOyAjNUE3Mwor5am0ID4gecSrbmc7ICM1QTc0CivlqbUgPiBjaMOhbjsgIzVBNzUKK+WptiA+IHNoxJVuOyAjNUE3Ngor5am3ID4gdMOtbmc7ICM1QTc3CivlqbggPiBkw6BuZzsgIzVBNzgKK+WpuSA+IHnEg287ICM1QTc5CivlqbogPiB3w7k7ICM1QTdBCivlqbsgPiBuw6BuOyAjNUE3Qgor5am8ID4gcsO5bzsgIzVBN0MKK+WpvSA+IGppxIM7ICM1QTdECivlqb4gPiB0xY11OyAjNUE3RQor5am/ID4geMO5OyAjNUE3Rgor5aqAID4gecO6OyAjNUE4MAor5aqBID4gd8STaTsgIzVBODEKK+WqgiA+IHTDrTsgIzVBODIKK+WqgyA+IHLDs3U7ICM1QTgzCivlqoQgPiBtxJVpOyAjNUE4NAor5aqFID4gZMSBbjsgIzVBODUKK+WqhiA+IHJ1xINuOyAjNUE4Ngor5aqHID4gccSrbjsgIzVBODcKK+WqiCA+IGh1aTsgIzVBODgKK+WqiSA+IHfFqzsgIzVBODkKK+WqiiA+IHFpw6FuOyAjNUE4QQor5aqLID4gY2jFq247ICM1QThCCivlqowgPiBtw6FvOyAjNUE4Qwor5aqNID4gZsO5OyAjNUE4RAor5aqOID4gamnElTsgIzVBOEUKK+WqjyA+IGR1xIFuOyAjNUE4Rgor5aqQID4geMSrOyAjNUE5MAor5aqRID4gemjDsm5nOyAjNUE5MQor5aqSID4gbcOpaTsgIzVBOTIKK+WqkyA+IGh1w6FuZzsgIzVBOTMKK+WqlCA+IG1pw6FuOyAjNUE5NAor5aqVID4gxIFuOyAjNUE5NQor5aqWID4gecSrbmc7ICM1QTk2CivlqpcgPiB4dcSBbjsgIzVBOTcKK+WqmCA+IGppZTsgIzVBOTgKK+WqmSA+IHfEk2k7ICM1QTk5CivlqpogPiBtw6hpOyAjNUE5QQor5aqbID4geXXDoG47ICM1QTlCCivlqpwgPiB6aMSTbjsgIzVBOUMKK+WqnSA+IHHEq3U7ICM1QTlECivlqp4gPiB0w607ICM1QTlFCivlqp8gPiB4acOoOyAjNUE5Rgor5aqgID4gdMWtbzsgIzVBQTAKK+WqoSA+IGxpw6BuOyAjNUFBMQor5aqiID4gbcOgbzsgIzVBQTIKK+WqoyA+IHLEg247ICM1QUEzCivlqqQgPiBzxKs7ICM1QUE0CivlqqUgPiBwacSBbjsgIzVBQTUKK+WqpiA+IHfDqGk7ICM1QUE2CivlqqcgPiB3xIE7ICM1QUE3CivlqqggPiBqw6x1OyAjNUFBOAor5aqpID4gaMO6OyAjNUFBOQor5aqqID4gxINvOyAjNUFBQQor5aqtID4geMWrOyAjNUFBRAor5aquID4gdMWNdTsgIzVBQUUKK+WqryA+IGfFq2k7ICM1QUFGCivlqrAgPiB6xY11OyAjNUFCMAor5aqxID4gecOhbzsgIzVBQjEKK+WqsiA+IHDDrDsgIzVBQjIKK+WqsyA+IHjDrTsgIzVBQjMKK+WqtCA+IHl1w6FuOyAjNUFCNAor5aq1ID4gecOsbmc7ICM1QUI1CivlqrYgPiByw7NuZzsgIzVBQjYKK+WqtyA+IHLDuTsgIzVBQjcKK+WquCA+IGNoxKs7ICM1QUI4CivlqrkgPiBsw611OyAjNUFCOQor5aq6ID4gbcSVaTsgIzVBQkEKK+WquyA+IHDDoW47ICM1QUJCCivlqrwgPiDEg287ICM1QUJDCivlqr0gPiBtxIE7ICM1QUJECivlqr4gPiBnw7J1OyAjNUFCRQor5aq/ID4ga8O5aTsgIzVBQkYKK+WrgCA+IHHDrW47ICM1QUMwCivlq4EgPiBqacOgOyAjNUFDMQor5auCID4gc8SDbzsgIzVBQzIKK+WrgyA+IHpoxJNuOyAjNUFDMwor5auEID4geXXDoW47ICM1QUM0Civlq4UgPiBjaMSBOyAjNUFDNQor5auGID4gecOzbmc7ICM1QUM2Civlq4cgPiBtw61uZzsgIzVBQzcKK+WriCA+IHnEq25nOyAjNUFDOAor5auJID4gasOtOyAjNUFDOQor5auKID4gc8O5OyAjNUFDQQor5auLID4gbmnEg287ICM1QUNCCivlq4wgPiB4acOhbjsgIzVBQ0MKK+WrjSA+IHTEgW87ICM1QUNECivlq44gPiBww6FuZzsgIzVBQ0UKK+WrjyA+IGzDoW5nOyAjNUFDRgor5auQID4gbsSDbzsgIzVBRDAKK+WrkSA+IGLDoW87ICM1QUQxCivlq5IgPiDDoGk7ICM1QUQyCivlq5MgPiBww6w7ICM1QUQzCivlq5QgPiBww61uOyAjNUFENAor5auVID4gecOsOyAjNUFENQor5auWID4gcGnDoG87ICM1QUQ2Civlq5cgPiB5w7k7ICM1QUQ3Civlq5ggPiBsw6lpOyAjNUFEOAor5auZID4geHXDoW47ICM1QUQ5Civlq5ogPiBtw6BuOyAjNUFEQQor5aubID4gecSrOyAjNUFEQgor5aucID4gemjEgW5nOyAjNUFEQwor5audID4ga8SBbmc7ICM1QURECivlq54gPiB5w7NuZzsgIzVBREUKK+WrnyA+IG7DrDsgIzVBREYKK+WroCA+IGzDrTsgIzVBRTAKK+WroSA+IGTDrTsgIzVBRTEKK+WroiA+IGfFq2k7ICM1QUUyCivlq6MgPiB5xIFuOyAjNUFFMwor5aukID4gasOsbjsgIzVBRTQKK+WrpSA+IHpodcSBbjsgIzVBRTUKK+WrpiA+IGNow6FuZzsgIzVBRTYKK+WrpyA+IGPDqDsgIzVBRTcKK+WrqCA+IGjEgW47ICM1QUU4Civlq6kgPiBuw6huOyAjNUFFOQor5auqID4gbMOgbzsgIzVBRUEKK+WrqyA+IG3DszsgIzVBRUIKK+WrrCA+IHpoxJM7ICM1QUVDCivlq60gPiBow7k7ICM1QUVECivlq64gPiBow7k7ICM1QUVFCivlq68gPiDDoG87ICM1QUVGCivlq7AgPiBuw6huOyAjNUFGMAor5auxID4gcWnDoW5nOyAjNUFGMQor5auzID4gcGnDqDsgIzVBRjMKK+WrtCA+IGfFqzsgIzVBRjQKK+WrtSA+IHfFrTsgIzVBRjUKK+WrtiA+IGppw6FvOyAjNUFGNgor5au3ID4gdMWtbzsgIzVBRjcKK+WruCA+IHpoxINuOyAjNUFGOAor5au5ID4gbcOhbzsgIzVBRjkKK+WruiA+IHhpw6FuOyAjNUFGQQor5au7ID4geGnDoW47ICM1QUZCCivlq7wgPiBtw7I7ICM1QUZDCivlq70gPiBsacOhbzsgIzVBRkQKK+WrviA+IGxpw6FuOyAjNUFGRQor5au/ID4gaHXDoDsgIzVBRkYKK+WsgCA+IGfFq2k7ICM1QjAwCivlrIEgPiBkxJNuZzsgIzVCMDEKK+WsgiA+IHpoxKs7ICM1QjAyCivlrIMgPiB4xas7ICM1QjAzCivlrIQgPiB5aTsgIzVCMDQKK+WshSA+IGh1w6E7ICM1QjA1CivlrIYgPiB4xKs7ICM1QjA2CivlrIcgPiBow7lpOyAjNUIwNwor5ayIID4gcsSDbzsgIzVCMDgKK+WsiSA+IHjEqzsgIzVCMDkKK+WsiiA+IHnDoG47ICM1QjBBCivlrIsgPiBjaMOhbjsgIzVCMEIKK+WsjCA+IGppxIFvOyAjNUIwQwor5ayNID4gbcSVaTsgIzVCMEQKK+WsjiA+IGbDoG47ICM1QjBFCivlrI8gPiBmxIFuOyAjNUIwRgor5ayQID4geGnEgW47ICM1QjEwCivlrJEgPiB5w6w7ICM1QjExCivlrJIgPiB3w6hpOyAjNUIxMgor5ayTID4gamnDoG87ICM1QjEzCivlrJQgPiBmw7k7ICM1QjE0CivlrJUgPiBzaMOsOyAjNUIxNQor5ayWID4gYsOsOyAjNUIxNgor5ayXID4gc2jDoG47ICM1QjE3CivlrJggPiBzw7lpOyAjNUIxOAor5ayZID4gcWnDoW5nOyAjNUIxOQor5ayaID4gbGnEg247ICM1QjFBCivlrJsgPiBodcOhbjsgIzVCMUIKK+WsnCA+IHhpbjsgIzVCMUMKK+WsnSA+IG5pxINvOyAjNUIxRAor5ayeID4gZMWPbmc7ICM1QjFFCivlrJ8gPiB5w6w7ICM1QjFGCivlrKAgPiBjw6FuOyAjNUIyMAor5ayhID4gw6BpOyAjNUIyMQor5ayiID4gbmnDoW5nOyAjNUIyMgor5ayjID4gbsOpbmc7ICM1QjIzCivlrKQgPiBtxIE7ICM1QjI0CivlrKUgPiB0acSDbzsgIzVCMjUKK+WspiA+IGNow7N1OyAjNUIyNgor5aynID4gasOsbjsgIzVCMjcKK+WsqCA+IGPDrTsgIzVCMjgKK+WsqSA+IHnDujsgIzVCMjkKK+WsqiA+IHDDrW47ICM1QjJBCivlrKsgPiB5b25nOyAjNUIyQgor5aysID4geMWrOyAjNUIyQwor5aytID4gbsSDaTsgIzVCMkQKK+WsriA+IHnEgW47ICM1QjJFCivlrK8gPiB0w6FpOyAjNUIyRgor5aywID4gecSrbmc7ICM1QjMwCivlrLEgPiBjw6FuOyAjNUIzMQor5ayyID4gbmnEg287ICM1QjMyCivlrLMgPiB3bzsgIzVCMzMKK+WstCA+IHnDrW5nOyAjNUIzNAor5ay1ID4gbWnDoW47ICM1QjM1CivlrLcgPiBtxIE7ICM1QjM3CivlrLggPiBzaMSVbjsgIzVCMzgKK+WsuSA+IHjDrG5nOyAjNUIzOQor5ay6ID4gbsOsOyAjNUIzQQor5ay7ID4gZMO6OyAjNUIzQgor5ay8ID4gbMStdTsgIzVCM0MKK+WsvSA+IHl1xIFuOyAjNUIzRAor5ay+ID4gbMSDbjsgIzVCM0UKK+WsvyA+IHnDoG47ICM1QjNGCivlrYAgPiBzaHXEgW5nOyAjNUI0MAor5a2BID4gbMOtbmc7ICM1QjQxCivlrYIgPiBqacSDbzsgIzVCNDIKK+WtgyA+IG5pw6FuZzsgIzVCNDMKK+WthCA+IGzEg247ICM1QjQ0CivlrYUgPiB4acSBbjsgIzVCNDUKK+WthiA+IHnEq25nOyAjNUI0Ngor5a2HID4gc2h1xIFuZzsgIzVCNDcKK+WtiCA+IHNodcSBaTsgIzVCNDgKK+WtiSA+IHF1w6FuOyAjNUI0OQor5a2KID4gbcStOyAjNUI0QQor5a2LID4gbMOtOyAjNUI0Qgor5a2MID4gbHXDoW47ICM1QjRDCivlrY0gPiB5w6FuOyAjNUI0RAor5a2OID4gemjFrTsgIzVCNEUKK+WtjyA+IGzEg247ICM1QjRGCivlrZAgPiB6xK07ICM1QjUwCivlrZEgPiBqacOpOyAjNUI1MQor5a2SID4ganXDqTsgIzVCNTIKK+WtkyA+IGp1w6k7ICM1QjUzCivlrZQgPiBrxY9uZzsgIzVCNTQKK+WtlSA+IHnDuW47ICM1QjU1CivlrZYgPiB6xKs7ICM1QjU2CivlrZcgPiB6w6w7ICM1QjU3CivlrZggPiBjw7puOyAjNUI1OAor5a2ZID4gc8WrbjsgIzVCNTkKK+WtmiA+IGbDujsgIzVCNUEKK+WtmyA+IGLDqGk7ICM1QjVCCivlrZwgPiB6xKs7ICM1QjVDCivlrZ0gPiB4acOgbzsgIzVCNUQKK+WtniA+IHjDrG47ICM1QjVFCivlrZ8gPiBtw6huZzsgIzVCNUYKK+WtoCA+IHPDrDsgIzVCNjAKK+WtoSA+IHTEgWk7ICM1QjYxCivlraIgPiBixIFvOyAjNUI2Mgor5a2jID4gasOsOyAjNUI2Mwor5a2kID4gZ8WrOyAjNUI2NAor5a2lID4gbsO6OyAjNUI2NQor5a2mID4geHXDqTsgIzVCNjYKK+WtqCA+IHpodcSDbjsgIzVCNjgKK+WtqSA+IGjDoWk7ICM1QjY5CivlraogPiBsdcOhbjsgIzVCNkEKK+WtqyA+IHPFq247ICM1QjZCCivlrawgPiBodcOgaTsgIzVCNkMKK+WtrSA+IG1pxJM7ICM1QjZECivlra4gPiBjw7NuZzsgIzVCNkUKK+WtryA+IHFpxIFuOyAjNUI2Rgor5a2wID4gc2jDujsgIzVCNzAKK+WtsSA+IGNow6FuOyAjNUI3MQor5a2yID4gecSBOyAjNUI3Mgor5a2zID4gesSrOyAjNUI3Mwor5a20ID4gbsStOyAjNUI3NAor5a21ID4gZsWrOyAjNUI3NQor5a22ID4gesSrOyAjNUI3Ngor5a23ID4gbMOtOyAjNUI3Nwor5a24ID4geHXDqTsgIzVCNzgKK+WtuSA+IGLDsjsgIzVCNzkKK+WtuiA+IHLDujsgIzVCN0EKK+WtuyA+IGzDoWk7ICM1QjdCCivlrbwgPiBuacOoOyAjNUI3Qwor5a29ID4gbmnDqDsgIzVCN0QKK+WtviA+IHnEq25nOyAjNUI3RQor5a2/ID4gbHXDoW47ICM1QjdGCivlroAgPiBtacOhbjsgIzVCODAKK+WugSA+IHpow7k7ICM1QjgxCivlroIgPiByxY9uZzsgIzVCODIKK+WugyA+IHTEgTsgIzVCODMKK+WuhCA+IGfFrWk7ICM1Qjg0CivlroUgPiB6aMOhaTsgIzVCODUKK+WuhiA+IHHDrW9uZzsgIzVCODYKK+WuhyA+IHnFrTsgIzVCODcKK+WuiCA+IHNoxY91OyAjNUI4OAor5a6JID4gxIFuOyAjNUI4OQor5a6KID4gdMO6OyAjNUI4QQor5a6LID4gc8Oybmc7ICM1QjhCCivlrowgPiB3w6FuOyAjNUI4Qwor5a6NID4gcsOydTsgIzVCOEQKK+WujiA+IHnEg287ICM1QjhFCivlro8gPiBow7NuZzsgIzVCOEYKK+WukCA+IHnDrTsgIzVCOTAKK+WukSA+IGrErW5nOyAjNUI5MQor5a6SID4gemjFq247ICM1QjkyCivlrpMgPiBtw6w7ICM1QjkzCivlrpQgPiB6aMWtOyAjNUI5NAor5a6VID4gZMOgbmc7ICM1Qjk1CivlrpYgPiBow7NuZzsgIzVCOTYKK+WulyA+IHrFjW5nOyAjNUI5Nwor5a6YID4gZ3XEgW47ICM1Qjk4CivlrpkgPiB6aMOydTsgIzVCOTkKK+WumiA+IGTDrG5nOyAjNUI5QQor5a6bID4gd8SDbjsgIzVCOUIKK+WunCA+IHnDrTsgIzVCOUMKK+WunSA+IGLEg287ICM1QjlECivlrp4gPiBzaMOtOyAjNUI5RQor5a6fID4gc2jDrTsgIzVCOUYKK+WuoCA+IGNoxY9uZzsgIzVCQTAKK+WuoSA+IHNoxJVuOyAjNUJBMQor5a6iID4ga8OoOyAjNUJBMgor5a6jID4geHXEgW47ICM1QkEzCivlrqQgPiBzaMOsOyAjNUJBNAor5a6lID4gecOydTsgIzVCQTUKK+WupiA+IGh1w6BuOyAjNUJBNgor5a6nID4gecOtOyAjNUJBNwor5a6oID4gdGnEg287ICM1QkE4CivlrqkgPiBzaMStOyAjNUJBOQor5a6qID4geGnDoG47ICM1QkFBCivlrqsgPiBnxY1uZzsgIzVCQUIKK+WurCA+IGNow6luZzsgIzVCQUMKK+WurSA+IHHDum47ICM1QkFECivlrq4gPiBnxY1uZzsgIzVCQUUKK+WuryA+IHhpxIFvOyAjNUJBRgor5a6wID4gesSDaTsgIzVCQjAKK+WusSA+IHpow6A7ICM1QkIxCivlrrIgPiBixINvOyAjNUJCMgor5a6zID4gaMOgaTsgIzVCQjMKK+WutCA+IHnDoG47ICM1QkI0CivlrrUgPiB4acSBbzsgIzVCQjUKK+WutiA+IGppxIE7ICM1QkI2CivlrrcgPiBzaMSVbjsgIzVCQjcKK+WuuCA+IGNow6luOyAjNUJCOAor5a65ID4gcsOzbmc7ICM1QkI5CivlrrogPiBodcSDbmc7ICM1QkJBCivlrrsgPiBtw6w7ICM1QkJCCivlrrwgPiBrw7J1OyAjNUJCQwor5a69ID4ga3XEgW47ICM1QkJECivlrr4gPiBixKtuOyAjNUJCRQor5a6/ID4gc8O5OyAjNUJCRgor5a+AID4gY8OgaTsgIzVCQzAKK+WvgSA+IHrEg247ICM1QkMxCivlr4IgPiBqw6w7ICM1QkMyCivlr4MgPiB5dcSBbjsgIzVCQzMKK+WvhCA+IGrDrDsgIzVCQzQKK+WvhSA+IHnDrW47ICM1QkM1Civlr4YgPiBtw6w7ICM1QkM2Civlr4cgPiBrw7J1OyAjNUJDNwor5a+IID4gccSrbmc7ICM1QkM4Civlr4kgPiBxdcOoOyAjNUJDOQor5a+KID4gemjEk247ICM1QkNBCivlr4sgPiBqacSDbjsgIzVCQ0IKK+WvjCA+IGbDuTsgIzVCQ0MKK+WvjSA+IG7DrW5nOyAjNUJDRAor5a+OID4gYsOsbmc7ICM1QkNFCivlr48gPiBodcOhbjsgIzVCQ0YKK+WvkCA+IG3DqGk7ICM1QkQwCivlr5EgPiBxxK1uOyAjNUJEMQor5a+SID4gaMOhbjsgIzVCRDIKK+WvkyA+IHnDuTsgIzVCRDMKK+WvlCA+IHNow607ICM1QkQ0Civlr5UgPiBuw61uZzsgIzVCRDUKK+WvliA+IHHDrG47ICM1QkQ2Civlr5cgPiBuw61uZzsgIzVCRDcKK+WvmCA+IHpow6w7ICM1QkQ4Civlr5kgPiB5xa07ICM1QkQ5Civlr5ogPiBixINvOyAjNUJEQQor5a+bID4ga3XEgW47ICM1QkRCCivlr5wgPiBuw61uZzsgIzVCREMKK+WvnSA+IHHErW47ICM1QkRECivlr54gPiBtw7I7ICM1QkRFCivlr58gPiBjaMOhOyAjNUJERgor5a+gID4gasO5OyAjNUJFMAor5a+hID4gZ3XEgzsgIzVCRTEKK+WvoiA+IHHErW47ICM1QkUyCivlr6MgPiBoxas7ICM1QkUzCivlr6QgPiB3w7k7ICM1QkU0Civlr6UgPiBsacOhbzsgIzVCRTUKK+WvpiA+IHNow607ICM1QkU2Civlr6cgPiB6aMO5OyAjNUJFNwor5a+oID4gemjDoGk7ICM1QkU4Civlr6kgPiBzaMSVbjsgIzVCRTkKK+WvqiA+IHfElWk7ICM1QkVBCivlr6sgPiB4acSVOyAjNUJFQgor5a+sID4ga3XEgW47ICM1QkVDCivlr60gPiBow7lpOyAjNUJFRAor5a+uID4gbGnDoW87ICM1QkVFCivlr68gPiBqw7luOyAjNUJFRgor5a+wID4gaHXDoW47ICM1QkYwCivlr7EgPiB5w6w7ICM1QkYxCivlr7IgPiB5w607ICM1QkYyCivlr7MgPiBixINvOyAjNUJGMwor5a+0ID4gccOsbjsgIzVCRjQKK+WvtSA+IGNoxY9uZzsgIzVCRjUKK+WvtiA+IGLEg287ICM1QkY2Civlr7cgPiBmxJNuZzsgIzVCRjcKK+WvuCA+IGPDuW47ICM1QkY4Civlr7kgPiBkw7lpOyAjNUJGOQor5a+6ID4gc8OsOyAjNUJGQQor5a+7ID4geMO6bjsgIzVCRkIKK+WvvCA+IGTEg287ICM1QkZDCivlr70gPiBsx5w7ICM1QkZECivlr74gPiBkw7lpOyAjNUJGRQor5a+/ID4gc2jDsnU7ICM1QkZGCivlsIAgPiBwxY87ICM1QzAwCivlsIEgPiBmxJNuZzsgIzVDMDEKK+WwgiA+IHpodcSBbjsgIzVDMDIKK+WwgyA+IGbFqzsgIzVDMDMKK+WwhCA+IHNow6g7ICM1QzA0CivlsIUgPiBrw6g7ICM1QzA1CivlsIYgPiBqacSBbmc7ICM1QzA2CivlsIcgPiBqacSBbmc7ICM1QzA3CivlsIggPiB6aHXEgW47ICM1QzA4CivlsIkgPiB3w6hpOyAjNUMwOQor5bCKID4gesWrbjsgIzVDMEEKK+WwiyA+IHjDum47ICM1QzBCCivlsIwgPiBzaMO5OyAjNUMwQwor5bCNID4gZMO5aTsgIzVDMEQKK+WwjiA+IGTEg287ICM1QzBFCivlsI8gPiB4acSDbzsgIzVDMEYKK+WwkCA+IGrEqzsgIzVDMTAKK+WwkSA+IHNoxINvOyAjNUMxMQor5bCSID4gxJVyOyAjNUMxMgor5bCTID4gxJVyOyAjNUMxMwor5bCUID4gxJVyOyAjNUMxNAor5bCVID4gZ8SDOyAjNUMxNQor5bCWID4gamnEgW47ICM1QzE2CivlsJcgPiBzaMO6OyAjNUMxNwor5bCYID4gY2jDqW47ICM1QzE4CivlsJkgPiBzaMOgbmc7ICM1QzE5CivlsJogPiBzaMOgbmc7ICM1QzFBCivlsJsgPiBtbzsgIzVDMUIKK+WwnCA+IGfDoTsgIzVDMUMKK+WwnSA+IGNow6FuZzsgIzVDMUQKK+WwniA+IGxpw6BvOyAjNUMxRQor5bCfID4geGnEg247ICM1QzFGCivlsKAgPiB4acSDbjsgIzVDMjAKK+WwoiA+IHfEgW5nOyAjNUMyMgor5bCjID4gd8SBbmc7ICM1QzIzCivlsKQgPiB5w7N1OyAjNUMyNAor5bClID4gbGnDoG87ICM1QzI1CivlsKYgPiBsacOgbzsgIzVDMjYKK+WwpyA+IHnDoW87ICM1QzI3CivlsKggPiBtw6FuZzsgIzVDMjgKK+WwqSA+IHfEgW5nOyAjNUMyOQor5bCqID4gd8SBbmc7ICM1QzJBCivlsKsgPiB3xIFuZzsgIzVDMkIKK+WwrCA+IGfDoDsgIzVDMkMKK+WwrSA+IHnDoW87ICM1QzJECivlsK4gPiBkw7lvOyAjNUMyRQor5bCvID4ga8O5aTsgIzVDMkYKK+WwsCA+IHpoxY9uZzsgIzVDMzAKK+WwsSA+IGrDrHU7ICM1QzMxCivlsLIgPiBnxIFuOyAjNUMzMgor5bCzID4gZ8WtOyAjNUMzMwor5bC0ID4gZ8SBbjsgIzVDMzQKK+WwtSA+IHTDumk7ICM1QzM1CivlsLYgPiBnxIFuOyAjNUMzNgor5bC3ID4gZ8SBbjsgIzVDMzcKK+WwuCA+IHNoxKs7ICM1QzM4CivlsLkgPiB5xK1uOyAjNUMzOQor5bC6ID4gY2jErTsgIzVDM0EKK+WwuyA+IGvEgW87ICM1QzNCCivlsLwgPiBuw607ICM1QzNDCivlsL0gPiBqxK1uOyAjNUMzRAor5bC+ID4gd8SVaTsgIzVDM0UKK+WwvyA+IG5pw6BvOyAjNUMzRgor5bGAID4gasO6OyAjNUM0MAor5bGBID4gcMOsOyAjNUM0MQor5bGCID4gY8Opbmc7ICM1QzQyCivlsYMgPiB4w6w7ICM1QzQzCivlsYQgPiBixKs7ICM1QzQ0CivlsYUgPiBqxas7ICM1QzQ1CivlsYYgPiBqacOoOyAjNUM0Ngor5bGHID4gdGnDoW47ICM1QzQ3CivlsYggPiBxxas7ICM1QzQ4CivlsYkgPiB0w6w7ICM1QzQ5CivlsYogPiBqacOoOyAjNUM0QQor5bGLID4gd8WrOyAjNUM0Qgor5bGMID4gZGnEg287ICM1QzRDCivlsY0gPiBzaMSrOyAjNUM0RAor5bGOID4gc2jErTsgIzVDNEUKK+WxjyA+IHDDrW5nOyAjNUM0Rgor5bGQID4gasSrOyAjNUM1MAor5bGRID4geGnDqDsgIzVDNTEKK+WxkiA+IGNow6luOyAjNUM1Mgor5bGTID4geMOsOyAjNUM1Mwor5bGUID4gbsOtOyAjNUM1NAor5bGVID4gemjEg247ICM1QzU1CivlsZYgPiB4xKs7ICM1QzU2CivlsZggPiBtxINuOyAjNUM1OAor5bGZID4gxJM7ICM1QzU5CivlsZogPiBsw7J1OyAjNUM1QQor5bGbID4gcMOtbmc7ICM1QzVCCivlsZwgPiB0w6w7ICM1QzVDCivlsZ0gPiBmw6hpOyAjNUM1RAor5bGeID4gc2jFrTsgIzVDNUUKK+WxnyA+IHhpw6g7ICM1QzVGCivlsaAgPiB0w7o7ICM1QzYwCivlsaEgPiBsx5o7ICM1QzYxCivlsaIgPiBsx5o7ICM1QzYyCivlsaMgPiB4xK07ICM1QzYzCivlsaQgPiBjw6luZzsgIzVDNjQKK+WxpSA+IGzHmjsgIzVDNjUKK+WxpiA+IGrDuTsgIzVDNjYKK+WxpyA+IHhpw6g7ICM1QzY3CivlsaggPiBqw7k7ICM1QzY4CivlsakgPiBqdcSTOyAjNUM2OQor5bGqID4gbGnDoW87ICM1QzZBCivlsasgPiBqdcOpOyAjNUM2Qgor5bGsID4gc2jFrTsgIzVDNkMKK+WxrSA+IHjDrDsgIzVDNkQKK+WxriA+IGNow6g7ICM1QzZFCivlsa8gPiB0w7puOyAjNUM2Rgor5bGwID4gbsOsOyAjNUM3MAor5bGxID4gc2jEgW47ICM1QzcxCivlsbMgPiB4acSBbjsgIzVDNzMKK+WxtCA+IGzDrDsgIzVDNzQKK+WxtSA+IHh1xJM7ICM1Qzc1CivlsbggPiBsw7NuZzsgIzVDNzgKK+WxuSA+IHnDrDsgIzVDNzkKK+WxuiA+IHHErTsgIzVDN0EKK+WxuyA+IHLDqG47ICM1QzdCCivlsbwgPiB3w7k7ICM1QzdDCivlsb0gPiBow6BuOyAjNUM3RAor5bG+ID4gc2jEk247ICM1QzdFCivlsb8gPiB5xa07ICM1QzdGCivlsoAgPiBjaMWrOyAjNUM4MAor5bKBID4gc8O5aTsgIzVDODEKK+WygiA+IHHErTsgIzVDODIKK+WyhCA+IHl1w6g7ICM1Qzg0CivlsoUgPiBixINuOyAjNUM4NQor5bKGID4gecSDbzsgIzVDODYKK+WyhyA+IMOhbmc7ICM1Qzg3CivlsoggPiB5w6E7ICM1Qzg4CivlsokgPiB3w7k7ICM1Qzg5CivlsoogPiBqacOpOyAjNUM4QQor5bKLID4gw6g7ICM1QzhCCivlsowgPiBqw607ICM1QzhDCivlso0gPiBxacSBbjsgIzVDOEQKK+WyjiA+IGbEk247ICM1QzhFCivlso8gPiB5dcOhbjsgIzVDOEYKK+WykCA+IHHDrTsgIzVDOTAKK+WykSA+IGPDqW47ICM1QzkxCivlspIgPiBxacOhbjsgIzVDOTIKK+WykyA+IHHDrTsgIzVDOTMKK+WylCA+IGNow6A7ICM1Qzk0CivlspUgPiBqacOoOyAjNUM5NQor5bKWID4gccWrOyAjNUM5Ngor5bKXID4gZ8SDbmc7ICM1Qzk3CivlspggPiB4acOgbjsgIzVDOTgKK+WymSA+IMOgbzsgIzVDOTkKK+WymiA+IGzDoW47ICM1QzlBCivlspsgPiBkxINvOyAjNUM5Qgor5bKcID4gYsSBOyAjNUM5Qwor5bKdID4gesO5bzsgIzVDOUQKK+WyniA+IHrDuW87ICM1QzlFCivlsp8gPiB5xINuZzsgIzVDOUYKK+WyoCA+IGrDuTsgIzVDQTAKK+WyoSA+IGfEgW5nOyAjNUNBMQor5bKiID4ga8SVOyAjNUNBMgor5bKjID4gZ8WPdTsgIzVDQTMKK+WypCA+IHh1w6g7ICM1Q0E0CivlsqUgPiBixJNpOyAjNUNBNQor5bKmID4gbMOsOyAjNUNBNgor5bKnID4gdGnDoW87ICM1Q0E3CivlsqggPiBqxas7ICM1Q0E4CivlsqkgPiB5w6FuOyAjNUNBOQor5bKqID4gZsO6OyAjNUNBQQor5bKrID4geMOsdTsgIzVDQUIKK+WyrCA+IGppxIM7ICM1Q0FDCivlsq0gPiBsw61uZzsgIzVDQUQKK+WyriA+IHTDum87ICM1Q0FFCivlsq8gPiBwxJNpOyAjNUNBRgor5bKwID4gecWPdTsgIzVDQjAKK+WysSA+IGTDoGk7ICM1Q0IxCivlsrIgPiBrdcOgbmc7ICM1Q0IyCivlsrMgPiB5dcOoOyAjNUNCMwor5bK0ID4gccWrOyAjNUNCNAor5bK1ID4gaMO5OyAjNUNCNQor5bK2ID4gcMOyOyAjNUNCNgor5bK3ID4gbcOtbjsgIzVDQjcKK+WyuCA+IMOgbjsgIzVDQjgKK+WyuSA+IHRpw6FvOyAjNUNCOQor5bK6ID4gbMOtbmc7ICM1Q0JBCivlsrsgPiBjaMOtOyAjNUNCQgor5bK9ID4gZMWNbmc7ICM1Q0JECivlsr8gPiBrxatpOyAjNUNCRgor5bOAID4geMOsdTsgIzVDQzAKK+WzgSA+IG3Eg287ICM1Q0MxCivls4IgPiB0w7NuZzsgIzVDQzIKK+WzgyA+IHh1w6k7ICM1Q0MzCivls4QgPiB5w6w7ICM1Q0M0Civls4YgPiBoxJM7ICM1Q0M2Civls4cgPiBrxJM7ICM1Q0M3Civls4ggPiBsw7lvOyAjNUNDOAor5bOJID4gxJM7ICM1Q0M5Civls4ogPiBmw7k7ICM1Q0NBCivls4sgPiB4w7puOyAjNUNDQgor5bOMID4gZGnDqTsgIzVDQ0MKK+WzjSA+IGzDuTsgIzVDQ0QKK+WzjiA+IMSBbjsgIzVDQ0UKK+WzjyA+IMSVcjsgIzVDQ0YKK+WzkCA+IGfEgWk7ICM1Q0QwCivls5EgPiBxdcOhbjsgIzVDRDEKK+WzkiA+IHTDs25nOyAjNUNEMgor5bOTID4gecOtOyAjNUNEMwor5bOUID4gbcWtOyAjNUNENAor5bOVID4gc2jDrTsgIzVDRDUKK+WzliA+IMSBbjsgIzVDRDYKK+WzlyA+IHfDqWk7ICM1Q0Q3Civls5ggPiBoxas7ICM1Q0Q4Civls5kgPiB6aMOsOyAjNUNEOQor5bOaID4gbcOsOyAjNUNEQQor5bObID4gbMStOyAjNUNEQgor5bOcID4gasSrOyAjNUNEQwor5bOdID4gdMOzbmc7ICM1Q0RECivls54gPiB3w6lpOyAjNUNERQor5bOfID4gecOydTsgIzVDREYKK+WzoSA+IHhpw6E7ICM1Q0UxCivls6IgPiBsxK07ICM1Q0UyCivls6MgPiB5w6FvOyAjNUNFMwor5bOkID4gamnDoG87ICM1Q0U0Civls6UgPiB6aMSTbmc7ICM1Q0U1Civls6YgPiBsdcOhbjsgIzVDRTYKK+WzpyA+IGppxIFvOyAjNUNFNwor5bOoID4gw6k7ICM1Q0U4Civls6kgPiDDqTsgIzVDRTkKK+WzqiA+IHnDuTsgIzVDRUEKK+WzqyA+IHnDqTsgIzVDRUIKK+WzrCA+IGLFqzsgIzVDRUMKK+WzrSA+IHFpw6BvOyAjNUNFRAor5bOuID4gccWrbjsgIzVDRUUKK+WzryA+IGbEk25nOyAjNUNFRgor5bOwID4gZsSTbmc7ICM1Q0YwCivls7EgPiBuw6FvOyAjNUNGMQor5bOyID4gbMStOyAjNUNGMgor5bOzID4gecOzdTsgIzVDRjMKK+WztCA+IHhpw6BuOyAjNUNGNAor5bO1ID4gaMOzbmc7ICM1Q0Y1Civls7YgPiBkxINvOyAjNUNGNgor5bO3ID4gc2jEk247ICM1Q0Y3Civls7ggPiBjaMOpbmc7ICM1Q0Y4Civls7kgPiB0w7o7ICM1Q0Y5Civls7ogPiBnxJVuZzsgIzVDRkEKK+WzuyA+IGrDuW47ICM1Q0ZCCivls7wgPiBow6BvOyAjNUNGQwor5bO9ID4geGnDoTsgIzVDRkQKK+WzviA+IHnEq247ICM1Q0ZFCivls78gPiB5xa07ICM1Q0ZGCivltIAgPiBsw6BuZzsgIzVEMDAKK+W0gSA+IGvEg247ICM1RDAxCivltIIgPiBsw6FvOyAjNUQwMgor5bSDID4gbMOhaTsgIzVEMDMKK+W0hCA+IHhpxINuOyAjNUQwNAor5bSFID4gcXXDqDsgIzVEMDUKK+W0hiA+IGvFjW5nOyAjNUQwNgor5bSHID4gY2jDs25nOyAjNUQwNwor5bSIID4gY2jDs25nOyAjNUQwOAor5bSJID4gdMOgOyAjNUQwOQor5bSKID4gbGluOyAjNUQwQQor5bSLID4gaHXDoTsgIzVEMEIKK+W0jCA+IGrFqzsgIzVEMEMKK+W0jSA+IGzDoWk7ICM1RDBECivltI4gPiBxw607ICM1RDBFCivltI8gPiBtw61uOyAjNUQwRgor5bSQID4ga8WrbjsgIzVEMTAKK+W0kSA+IGvFq247ICM1RDExCivltJIgPiB6w7o7ICM1RDEyCivltJMgPiBnw7k7ICM1RDEzCivltJQgPiBjxatpOyAjNUQxNAor5bSVID4gecOhOyAjNUQxNQor5bSWID4gecOhOyAjNUQxNgor5bSXID4gZ8SDbmc7ICM1RDE3CivltJggPiBsw7puOyAjNUQxOAor5bSZID4gbMO6bjsgIzVEMTkKK+W0miA+IGzDqW5nOyAjNUQxQQor5bSbID4ganXDqTsgIzVEMUIKK+W0nCA+IGTFq287ICM1RDFDCivltJ0gPiB6aMSTbmc7ICM1RDFECivltJ4gPiBnxatvOyAjNUQxRQor5bSfID4gecOtbjsgIzVEMUYKK+W0oCA+IGTFjW5nOyAjNUQyMAor5bShID4gaMOhbjsgIzVEMjEKK+W0oiA+IHpoxJNuZzsgIzVEMjIKK+W0oyA+IHfElWk7ICM1RDIzCivltKQgPiB5w6FvOyAjNUQyNAor5bSlID4gcMStOyAjNUQyNQor5bSmID4gecSBbjsgIzVEMjYKK+W0pyA+IHPFjW5nOyAjNUQyNwor5bSoID4gamnDqTsgIzVEMjgKK+W0qSA+IGLEk25nOyAjNUQyOQor5bSqID4gesO6OyAjNUQyQQor5bSrID4ganXDqTsgIzVEMkIKK+W0rCA+IGTFjW5nOyAjNUQyQwor5bStID4gemjEg247ICM1RDJECivltK4gPiBnw7k7ICM1RDJFCivltK8gPiB5w61uOyAjNUQyRgor5bSxID4gesOpOyAjNUQzMQor5bSyID4gaHXDoW5nOyAjNUQzMgor5bSzID4gecO6OyAjNUQzMwor5bS0ID4gd8STaTsgIzVEMzQKK+W0tSA+IHnDoW5nOyAjNUQzNQor5bS2ID4gZsSTbmc7ICM1RDM2CivltLcgPiBxw611OyAjNUQzNwor5bS4ID4gZMO5bjsgIzVEMzgKK+W0uSA+IHTDrTsgIzVEMzkKK+W0uiA+IHnErTsgIzVEM0EKK+W0uyA+IHpow6w7ICM1RDNCCivltLwgPiBzaMOsOyAjNUQzQwor5bS9ID4gesSDaTsgIzVEM0QKK+W0viA+IHnEg287ICM1RDNFCivltL8gPiDDqDsgIzVEM0YKK+W1gCA+IHpow7k7ICM1RDQwCivltYEgPiBrxIFuOyAjNUQ0MQor5bWCID4gbMecOyAjNUQ0Mgor5bWDID4gecSDbjsgIzVENDMKK+W1hCA+IG3ElWk7ICM1RDQ0CivltYUgPiBnxIFuOyAjNUQ0NQor5bWGID4gasSrOyAjNUQ0Ngor5bWHID4gasSrOyAjNUQ0Nwor5bWIID4gaHXEg247ICM1RDQ4CivltYkgPiB0w61uZzsgIzVENDkKK+W1iiA+IHNow6huZzsgIzVENEEKK+W1iyA+IG3DqWk7ICM1RDRCCivltYwgPiBxacOgbjsgIzVENEMKK+W1jSA+IHfDuTsgIzVENEQKK+W1jiA+IHnDujsgIzVENEUKK+W1jyA+IHrFjW5nOyAjNUQ0Rgor5bWQID4gbMOhbjsgIzVENTAKK+W1kSA+IGp1w6k7ICM1RDUxCivltZIgPiB5w6FuOyAjNUQ1Mgor5bWTID4gecOhbjsgIzVENTMKK+W1lCA+IHfElWk7ICM1RDU0CivltZUgPiB6xY1uZzsgIzVENTUKK+W1liA+IGNow6E7ICM1RDU2CivltZcgPiBzw7lpOyAjNUQ1Nwor5bWYID4gcsOzbmc7ICM1RDU4CivltZogPiBxxKtuOyAjNUQ1QQor5bWbID4gecO6OyAjNUQ1Qgor5bWdID4gbMWPdTsgIzVENUQKK+W1niA+IHTDujsgIzVENUUKK+W1nyA+IGTFq2k7ICM1RDVGCivltaAgPiB4xKs7ICM1RDYwCivltaEgPiB3xJNuZzsgIzVENjEKK+W1oiA+IGPEgW5nOyAjNUQ2Mgor5bWjID4gZMSBbmc7ICM1RDYzCivltaQgPiBow7NuZzsgIzVENjQKK+W1pSA+IGppw6k7ICM1RDY1CivltaYgPiDDoWk7ICM1RDY2CivltacgPiBsw611OyAjNUQ2Nwor5bWoID4gd8WtOyAjNUQ2OAor5bWpID4gc8WNbmc7ICM1RDY5CivltaogPiBxacSBbzsgIzVENkEKK+W1qyA+IHrEqzsgIzVENkIKK+W1rCA+IHfDqWk7ICM1RDZDCivlta0gPiBixJNuZzsgIzVENkQKK+W1riA+IGRpxIFuOyAjNUQ2RQor5bWvID4gY8O6bzsgIzVENkYKK+W1sCA+IHFpxINuOyAjNUQ3MAor5bWxID4gecWPbmc7ICM1RDcxCivltbIgPiBuacOoOyAjNUQ3Mgor5bWzID4gY8O6bzsgIzVENzMKK+W1tCA+IGrDrTsgIzVENzQKK+W1tyA+IHPFj25nOyAjNUQ3Nwor5bW4ID4gesWNbmc7ICM1RDc4CivltbkgPiBqacOgbmc7ICM1RDc5CivltbogPiBsacOhbzsgIzVEN0EKK+W1uyA+IGthbmc7ICM1RDdCCivltbwgPiBjaMSDbjsgIzVEN0MKK+W1vSA+IGRpw6k7ICM1RDdECivltb4gPiBjxJNuOyAjNUQ3RQor5bW/ID4gZMStbmc7ICM1RDdGCivltoAgPiB0xas7ICM1RDgwCivltoEgPiBsxY91OyAjNUQ4MQor5baCID4gemjDoG5nOyAjNUQ4Mgor5baDID4gemjEg247ICM1RDgzCivltoQgPiB6aMSDbjsgIzVEODQKK+W2hSA+IMOhbzsgIzVEODUKK+W2hiA+IGPDoW87ICM1RDg2CivltocgPiBxxas7ICM1RDg3CivltoggPiBxacSBbmc7ICM1RDg4CivltokgPiB6xatpOyAjNUQ4OQor5baKID4gesWtaTsgIzVEOEEKK+W2iyA+IGTEg287ICM1RDhCCivltowgPiBkxINvOyAjNUQ4Qwor5baNID4geMOtOyAjNUQ4RAor5baOID4gecO5OyAjNUQ4RQor5baPID4gYsOzOyAjNUQ4Rgor5baQID4gbMOzbmc7ICM1RDkwCivltpEgPiB4acSDbmc7ICM1RDkxCivltpIgPiBjw6luZzsgIzVEOTIKK+W2kyA+IGLFjTsgIzVEOTMKK+W2lCA+IHHEq247ICM1RDk0CivltpUgPiBqacSBbzsgIzVEOTUKK+W2liA+IHnEg247ICM1RDk2CivltpcgPiBsw6FvOyAjNUQ5Nwor5baYID4gemjDoG47ICM1RDk4CivltpkgPiBsw61uOyAjNUQ5OQor5baaID4gbGnDoW87ICM1RDlBCivltpsgPiBsacOhbzsgIzVEOUIKK+W2nCA+IGrEq247ICM1RDlDCivltp0gPiBkw6huZzsgIzVEOUQKK+W2niA+IGTDuW87ICM1RDlFCivltp8gPiB6xatuOyAjNUQ5Rgor5bagID4gamnDoG87ICM1REEwCivltqEgPiBnw7lpOyAjNURBMQor5baiID4gecOhbzsgIzVEQTIKK+W2oyA+IHFpw6FvOyAjNURBMwor5bakID4gecOhbzsgIzVEQTQKK+W2pSA+IGp1w6k7ICM1REE1CivltqYgPiB6aMSBbjsgIzVEQTYKK+W2pyA+IHnDrDsgIzVEQTcKK+W2qCA+IHh1w6k7ICM1REE4CivltqkgPiBuw6FvOyAjNURBOQor5baqID4gecOoOyAjNURBQQor5barID4gecOoOyAjNURBQgor5basID4gecOtOyAjNURBQwor5batID4gw6g7ICM1REFECivltq4gPiB4acSDbjsgIzVEQUUKK+W2ryA+IGrDrTsgIzVEQUYKK+W2sCA+IHhpw6g7ICM1REIwCivltrEgPiBrxJU7ICM1REIxCivltrIgPiB4xKs7ICM1REIyCivltrMgPiBkw6w7ICM1REIzCivltrQgPiDDoG87ICM1REI0CivltrUgPiB6xa1pOyAjNURCNQor5ba3ID4gbsOsOyAjNURCNwor5ba4ID4gcsOzbmc7ICM1REI4CivltrkgPiBkxINvOyAjNURCOQor5ba6ID4gbMStbmc7ICM1REJBCivltrsgPiB6w6E7ICM1REJCCivltrwgPiB5xa07ICM1REJDCivltr0gPiB5dcOoOyAjNURCRAor5ba+ID4gecStbjsgIzVEQkUKK+W3gCA+IGppxJM7ICM1REMwCivlt4EgPiBsw6w7ICM1REMxCivlt4IgPiBzxa1pOyAjNURDMgor5beDID4gbMOzbmc7ICM1REMzCivlt4QgPiBsw7NuZzsgIzVEQzQKK+W3hSA+IGRpxIFuOyAjNURDNQor5beGID4gecOtbmc7ICM1REM2Civlt4cgPiB4xKs7ICM1REM3Civlt4ggPiBqw7o7ICM1REM4Civlt4kgPiBjaMOhbjsgIzVEQzkKK+W3iiA+IHnErW5nOyAjNURDQQor5beLID4ga8WraTsgIzVEQ0IKK+W3jCA+IHnDoW47ICM1RENDCivlt40gPiB3xJNpOyAjNURDRAor5beOID4gbsOhbzsgIzVEQ0UKK+W3jyA+IHF1w6FuOyAjNURDRgor5beQID4gY2jEg287ICM1REQwCivlt5EgPiBjdcOhbjsgIzVERDEKK+W3kiA+IGx1w6FuOyAjNUREMgor5beTID4gZGnEgW47ICM1REQzCivlt5QgPiBkacSBbjsgIzVERDQKK+W3liA+IHnDoW47ICM1REQ2Civlt5cgPiB5w6FuOyAjNURENwor5beYID4gecSDbjsgIzVERDgKK+W3mSA+IG7DoW87ICM1REQ5Civlt5ogPiB5xINuOyAjNUREQQor5bebID4gY2h1xIFuOyAjNUREQgor5becID4gZ8O5aTsgIzVEREMKK+W3nSA+IGNodcSBbjsgIzVEREQKK+W3niA+IHpoxY11OyAjNURERQor5befID4gaHXEgW5nOyAjNURERgor5begID4gasSrbmc7ICM1REUwCivlt6EgPiB4w7puOyAjNURFMQor5beiID4gY2jDoW87ICM1REUyCivlt6MgPiBjaMOhbzsgIzVERTMKK+W3pCA+IGxpxJM7ICM1REU0Civlt6UgPiBnxY1uZzsgIzVERTUKK+W3piA+IHrFrW87ICM1REU2Civlt6cgPiBxacSDbzsgIzVERTcKK+W3qCA+IGrDuTsgIzVERTgKK+W3qSA+IGfFj25nOyAjNURFOQor5berID4gd8WrOyAjNURFQgor5beuID4gY2jEgWk7ICM1REVFCivlt68gPiBxw611OyAjNURFRgor5bewID4gccOtdTsgIzVERjAKK+W3sSA+IGrErTsgIzVERjEKK+W3siA+IHnErTsgIzVERjIKK+W3syA+IHPDrDsgIzVERjMKK+W3tCA+IGLEgTsgIzVERjQKK+W3tSA+IHpoxKs7ICM1REY1Civlt7YgPiB6aMSBbzsgIzVERjYKK+W3tyA+IHhpw6BuZzsgIzVERjcKK+W3uCA+IHnDrTsgIzVERjgKK+W3uSA+IGrErW47ICM1REY5Civlt7ogPiB4w7luOyAjNURGQQor5be7ID4ganXDoG47ICM1REZCCivlt70gPiB4w7luOyAjNURGRAor5be+ID4gasSrbjsgIzVERkUKK+W3vyA+IGbDujsgIzVERkYKK+W4gCA+IHrEgTsgIzVFMDAKK+W4gSA+IGLDrDsgIzVFMDEKK+W4giA+IHNow6w7ICM1RTAyCivluIMgPiBiw7k7ICM1RTAzCivluIQgPiBkxKtuZzsgIzVFMDQKK+W4hSA+IHNodcOgaTsgIzVFMDUKK+W4hiA+IGbEgW47ICM1RTA2CivluIcgPiBuacOoOyAjNUUwNwor5biIID4gc2jEqzsgIzVFMDgKK+W4iSA+IGbEk247ICM1RTA5CivluIogPiBww6A7ICM1RTBBCivluIsgPiB6aMStOyAjNUUwQgor5biMID4geMSrOyAjNUUwQwor5biNID4gaMO5OyAjNUUwRAor5biOID4gZMOgbjsgIzVFMEUKK+W4jyA+IHfDqWk7ICM1RTBGCivluJAgPiB6aMOgbmc7ICM1RTEwCivluJEgPiB0xINuZzsgIzVFMTEKK+W4kiA+IGTDoGk7ICM1RTEyCivluJMgPiBtw6A7ICM1RTEzCivluJQgPiBww6hpOyAjNUUxNAor5biVID4gcMOgOyAjNUUxNQor5biWID4gdGnEkzsgIzVFMTYKK+W4lyA+IGbDujsgIzVFMTcKK+W4mCA+IGxpw6FuOyAjNUUxOAor5biZID4gemjDrDsgIzVFMTkKK+W4miA+IHpoxY91OyAjNUUxQQor5bibID4gYsOzOyAjNUUxQgor5bicID4gemjDrDsgIzVFMUMKK+W4nSA+IGTDrDsgIzVFMUQKK+W4niA+IG3DsjsgIzVFMUUKK+W4nyA+IHnDrDsgIzVFMUYKK+W4oCA+IHnDrDsgIzVFMjAKK+W4oSA+IHDDrW5nOyAjNUUyMQor5biiID4gcWnDoDsgIzVFMjIKK+W4oyA+IGp1w6BuOyAjNUUyMwor5bikID4gcsO6OyAjNUUyNAor5bilID4gc2h1w6BpOyAjNUUyNQor5bimID4gZMOgaTsgIzVFMjYKK+W4pyA+IHpow6huZzsgIzVFMjcKK+W4qCA+IHNow7lpOyAjNUUyOAor5bipID4gcWnDoG87ICM1RTI5CivluKogPiB6aMSTbjsgIzVFMkEKK+W4qyA+IHNoxKs7ICM1RTJCCivluKwgPiBxw7puOyAjNUUyQwor5bitID4geMOtOyAjNUUyRAor5biuID4gYsSBbmc7ICM1RTJFCivluK8gPiBkw6BpOyAjNUUyRgor5biwID4gZ8WraTsgIzVFMzAKK+W4sSA+IGNow7N1OyAjNUUzMQor5biyID4gcMOtbmc7ICM1RTMyCivluLMgPiB6aMOgbmc7ICM1RTMzCivluLQgPiBzaMSBOyAjNUUzNAor5bi1ID4gd8SBbjsgIzVFMzUKK+W4tiA+IGTDoGk7ICM1RTM2CivluLcgPiB3w6lpOyAjNUUzNwor5bi4ID4gY2jDoW5nOyAjNUUzOAor5bi5ID4gc2jDoDsgIzVFMzkKK+W4uiA+IHHDrTsgIzVFM0EKK+W4uyA+IHrDqTsgIzVFM0IKK+W4vCA+IGfDum87ICM1RTNDCivluL0gPiBtw6BvOyAjNUUzRAor5bi+ID4gZMWtOyAjNUUzRQor5bi/ID4gaMOzdTsgIzVFM0YKK+W5gCA+IHpow6huZzsgIzVFNDAKK+W5gSA+IHjFqzsgIzVFNDEKK+W5giA+IG3DrDsgIzVFNDIKK+W5gyA+IHfDqWk7ICM1RTQzCivluYQgPiB3w7I7ICM1RTQ0CivluYUgPiBmw7o7ICM1RTQ1CivluYYgPiB5w6w7ICM1RTQ2CivluYcgPiBixIFuZzsgIzVFNDcKK+W5iCA+IHDDrW5nOyAjNUU0OAor5bmKID4gZ8WNbmc7ICM1RTRBCivluYsgPiBww6FuOyAjNUU0Qgor5bmMID4gaHXEg25nOyAjNUU0Qwor5bmNID4gZMSBbzsgIzVFNEQKK+W5jiA+IG3DrDsgIzVFNEUKK+W5jyA+IGppxIE7ICM1RTRGCivluZAgPiB0w6luZzsgIzVFNTAKK+W5kSA+IGjFq2k7ICM1RTUxCivluZIgPiB6aMWNbmc7ICM1RTUyCivluZMgPiBzaMSBbjsgIzVFNTMKK+W5lCA+IG3DoG47ICM1RTU0CivluZUgPiBtw7k7ICM1RTU1CivluZYgPiBiacSBbzsgIzVFNTYKK+W5lyA+IGfDum87ICM1RTU3CivluZggPiB6w6k7ICM1RTU4CivluZkgPiBtw7k7ICM1RTU5CivluZogPiBixIFuZzsgIzVFNUEKK+W5myA+IHpow6BuZzsgIzVFNUIKK+W5nCA+IGrErW9uZzsgIzVFNUMKK+W5nSA+IGNoxINuOyAjNUU1RAor5bmeID4gZsO6OyAjNUU1RQor5bmfID4gemjDrDsgIzVFNUYKK+W5oCA+IGjFqzsgIzVFNjAKK+W5oSA+IGbEgW47ICM1RTYxCivluaIgPiBjaHXDoW5nOyAjNUU2Mgor5bmjID4gYsOsOyAjNUU2Mwor5bmmID4gbcOsOyAjNUU2Ngor5bmnID4gcWnEgW87ICM1RTY3CivluaggPiBjaMSBbjsgIzVFNjgKK+W5qSA+IGbDqW47ICM1RTY5CivluaogPiBtw6luZzsgIzVFNkEKK+W5qyA+IGLEgW5nOyAjNUU2Qgor5bmsID4gY2jDs3U7ICM1RTZDCivlua0gPiBtacOoOyAjNUU2RAor5bmuID4gY2jDujsgIzVFNkUKK+W5ryA+IGppw6k7ICM1RTZGCivlubAgPiB4acSDbjsgIzVFNzAKK+W5sSA+IGzDoW47ICM1RTcxCivlubIgPiBnxIFuOyAjNUU3Mgor5bmzID4gcMOtbmc7ICM1RTczCivlubQgPiBuacOhbjsgIzVFNzQKK+W5tSA+IHFpxIFuOyAjNUU3NQor5bm2ID4gYsOsbmc7ICM1RTc2CivlubcgPiBiw6xuZzsgIzVFNzcKK+W5uCA+IHjDrG5nOyAjNUU3OAor5bm5ID4gZ8OgbjsgIzVFNzkKK+W5uiA+IHnEgW87ICM1RTdBCivlubsgPiBodcOgbjsgIzVFN0IKK+W5vCA+IHnDsnU7ICM1RTdDCivlub0gPiB5xY11OyAjNUU3RAor5bm+ID4gasStOyAjNUU3RQor5bm/ID4gecSDbjsgIzVFN0YKK+W6gCA+IHDErTsgIzVFODAKK+W6gSA+IHTEq25nOyAjNUU4MQor5bqCID4gesOoOyAjNUU4Mgor5bqDID4gZ3XEg25nOyAjNUU4Mwor5bqEID4gemh1xIFuZzsgIzVFODQKK+W6hSA+IG1vOyAjNUU4NQor5bqGID4gccOsbmc7ICM1RTg2CivluocgPiBiw6w7ICM1RTg3CivluoggPiBxw61uOyAjNUU4OAor5bqJID4gZMO5bjsgIzVFODkKK+W6iiA+IGNodcOhbmc7ICM1RThBCivluosgPiBnxa1pOyAjNUU4Qgor5bqMID4gecSDOyAjNUU4Qwor5bqNID4gYsOgaTsgIzVFOEQKK+W6jiA+IGppw6g7ICM1RThFCivluo8gPiB4w7k7ICM1RThGCivlupAgPiBsw7o7ICM1RTkwCivlupEgPiB3xa07ICM1RTkxCivlupMgPiBrw7k7ICM1RTkzCivlupQgPiB5w6xuZzsgIzVFOTQKK+W6lSA+IGTErTsgIzVFOTUKK+W6liA+IHDDoW87ICM1RTk2CivlupcgPiBkacOgbjsgIzVFOTcKK+W6mCA+IHnEgTsgIzVFOTgKK+W6mSA+IG1pw6BvOyAjNUU5OQor5bqaID4gZ8STbmc7ICM1RTlBCivlupsgPiBjxKs7ICM1RTlCCivlupwgPiBmxa07ICM1RTlDCivlup0gPiB0w7NuZzsgIzVFOUQKK+W6niA+IHDDoW5nOyAjNUU5RQor5bqfID4gZsOoaTsgIzVFOUYKK+W6oCA+IHhpw6FuZzsgIzVFQTAKK+W6oSA+IHnErTsgIzVFQTEKK+W6oiA+IHpow6w7ICM1RUEyCivluqMgPiB0acSBbzsgIzVFQTMKK+W6pCA+IHpow6w7ICM1RUE0CivluqUgPiB4xKt1OyAjNUVBNQor5bqmID4gZMO5OyAjNUVBNgor5bqnID4gesO5bzsgIzVFQTcKK+W6qCA+IHhpxIFvOyAjNUVBOAor5bqpID4gdMO6OyAjNUVBOQor5bqqID4gZ8WtaTsgIzVFQUEKK+W6qyA+IGvDuTsgIzVFQUIKK+W6rCA+IHDDoW5nOyAjNUVBQwor5bqtID4gdMOtbmc7ICM1RUFECivluq4gPiB5xY91OyAjNUVBRQor5bqvID4gYsWrOyAjNUVBRgor5bqwID4gZMSrbmc7ICM1RUIwCivlurEgPiBjaMSVbmc7ICM1RUIxCivlurIgPiBsw6FpOyAjNUVCMgor5bqzID4gYsSTaTsgIzVFQjMKK+W6tCA+IGrDrTsgIzVFQjQKK+W6tSA+IMSBbjsgIzVFQjUKK+W6tiA+IHNow7k7ICM1RUI2CivlurcgPiBrxIFuZzsgIzVFQjcKK+W6uCA+IHnFjW5nOyAjNUVCOAor5bq5ID4gdMWtbzsgIzVFQjkKK+W6uiA+IHPFjW5nOyAjNUVCQQor5bq7ID4gc2jDuTsgIzVFQkIKK+W6vCA+IHHErW5nOyAjNUVCQwor5bq9ID4gecO5OyAjNUVCRAor5bq+ID4gecWtOyAjNUVCRQor5bq/ID4gbWnDoG87ICM1RUJGCivlu4AgPiBzxY11OyAjNUVDMAor5buBID4gY8OoOyAjNUVDMQor5buCID4geGnEgW5nOyAjNUVDMgor5buDID4gZsOoaTsgIzVFQzMKK+W7hCA+IGrDrHU7ICM1RUM0Civlu4UgPiBow6k7ICM1RUM1Civlu4YgPiBow7lpOyAjNUVDNgor5buHID4gbMOsdTsgIzVFQzcKK+W7iCA+IHNow6A7ICM1RUM4Civlu4kgPiBsacOhbjsgIzVFQzkKK+W7iiA+IGzDoW5nOyAjNUVDQQor5buLID4gc8WNdTsgIzVFQ0IKK+W7jCA+IGppw6BuOyAjNUVDQwor5buNID4gcMWPdTsgIzVFQ0QKK+W7jiA+IHHErW5nOyAjNUVDRQor5buPID4gasOsdTsgIzVFQ0YKK+W7kCA+IGrDrHU7ICM1RUQwCivlu5EgPiBxw61uOyAjNUVEMQor5buSID4gw6FvOyAjNUVEMgor5buTID4ga8O5bzsgIzVFRDMKK+W7lCA+IGzDs3U7ICM1RUQ0Civlu5UgPiB5xKtuOyAjNUVENQor5buWID4gbGnDoG87ICM1RUQ2Civlu5cgPiBkw6BpOyAjNUVENwor5buYID4gbMO5OyAjNUVEOAor5buZID4gecOsOyAjNUVEOQor5buaID4gY2jDujsgIzVFREEKK+W7myA+IGNow6FuOyAjNUVEQgor5bucID4gdMWrOyAjNUVEQwor5budID4gc8SrOyAjNUVERAor5bueID4geMSrbjsgIzVFREUKK+W7nyA+IG1pw6BvOyAjNUVERgor5bugID4gY2jEg25nOyAjNUVFMAor5buhID4gd8WtOyAjNUVFMQor5buiID4gZsOoaTsgIzVFRTIKK+W7oyA+IGd1xINuZzsgIzVFRTMKK+W7pSA+IGt1w6BpOyAjNUVFNQor5bumID4gYsOsOyAjNUVFNgor5bunID4gcWnDoW5nOyAjNUVFNwor5buoID4geGnDqDsgIzVFRTgKK+W7qSA+IGzErW47ICM1RUU5Civlu6ogPiBsxK1uOyAjNUVFQQor5burID4gbGnDoW87ICM1RUVCCivlu6wgPiBsw7o7ICM1RUVDCivlu64gPiB5w61uZzsgIzVFRUUKK+W7ryA+IHhpxIFuOyAjNUVFRgor5buwID4gdMSrbmc7ICM1RUYwCivlu7EgPiB5xY1uZzsgIzVFRjEKK+W7siA+IGzDrTsgIzVFRjIKK+W7syA+IHTEq25nOyAjNUVGMwor5bu0ID4gecStbjsgIzVFRjQKK+W7tSA+IHjDum47ICM1RUY1Civlu7YgPiB5w6FuOyAjNUVGNgor5bu3ID4gdMOtbmc7ICM1RUY3Civlu7ggPiBkw607ICM1RUY4Civlu7kgPiBww7I7ICM1RUY5Civlu7ogPiBqacOgbjsgIzVFRkEKK+W7uyA+IGjDumk7ICM1RUZCCivlu7wgPiBuxINpOyAjNUVGQwor5bu9ID4gaMO6aTsgIzVFRkQKK+W7viA+IGfDsm5nOyAjNUVGRQor5bu/ID4gbmnDoG47ICM1RUZGCivlvIAgPiBrxIFpOyAjNUYwMAor5byBID4gYmnDoG47ICM1RjAxCivlvIIgPiB5w6w7ICM1RjAyCivlvIMgPiBxw6w7ICM1RjAzCivlvIQgPiBuw7JuZzsgIzVGMDQKK+W8hSA+IGbDqW47ICM1RjA1CivlvIYgPiBqxa07ICM1RjA2CivlvIcgPiB5xINuOyAjNUYwNwor5byIID4gecOsOyAjNUYwOAor5byJID4gesOgbmc7ICM1RjA5CivlvIogPiBiw6w7ICM1RjBBCivlvIsgPiB5w6w7ICM1RjBCCivlvIwgPiB5xKs7ICM1RjBDCivlvI0gPiDDqHI7ICM1RjBECivlvI4gPiBzxIFuOyAjNUYwRQor5byPID4gc2jDrDsgIzVGMEYKK+W8kCA+IMOocjsgIzVGMTAKK+W8kSA+IHNow6w7ICM1RjExCivlvJIgPiBzaMOsOyAjNUYxMgor5byTID4gZ8WNbmc7ICM1RjEzCivlvJQgPiBkacOgbzsgIzVGMTQKK+W8lSA+IHnErW47ICM1RjE1CivlvJYgPiBow7k7ICM1RjE2CivlvJcgPiBmw7o7ICM1RjE3CivlvJggPiBow7NuZzsgIzVGMTgKK+W8mSA+IHfFqzsgIzVGMTkKK+W8miA+IHTDumk7ICM1RjFBCivlvJsgPiBjaMOtOyAjNUYxQgor5bycID4gamnDoG5nOyAjNUYxQwor5bydID4gYsOgOyAjNUYxRAor5byeID4gc2jElW47ICM1RjFFCivlvJ8gPiBkw6w7ICM1RjFGCivlvKAgPiB6aMSBbmc7ICM1RjIwCivlvKEgPiBqdcOpOyAjNUYyMQor5byiID4gdMSBbzsgIzVGMjIKK+W8oyA+IGbFrTsgIzVGMjMKK+W8pCA+IGTErTsgIzVGMjQKK+W8pSA+IG3DrTsgIzVGMjUKK+W8piA+IHhpw6FuOyAjNUYyNgor5bynID4gaMO6OyAjNUYyNwor5byoID4gY2jEgW87ICM1RjI4CivlvKkgPiBuxa07ICM1RjI5CivlvKogPiBqw6xuZzsgIzVGMkEKK+W8qyA+IHpoxJVuOyAjNUYyQgor5bysID4gecOtOyAjNUYyQwor5bytID4gbcStOyAjNUYyRAor5byuID4gcXXEgW47ICM1RjJFCivlvK8gPiB3xIFuOyAjNUYyRgor5bywID4gc2jEgW87ICM1RjMwCivlvLEgPiByw7lvOyAjNUYzMQor5byyID4geHXEgW47ICM1RjMyCivlvLMgPiBqw6xuZzsgIzVGMzMKK+W8tCA+IGTFq247ICM1RjM0CivlvLUgPiB6aMSBbmc7ICM1RjM1CivlvLYgPiBqacOgbmc7ICM1RjM2CivlvLcgPiBxacOhbmc7ICM1RjM3CivlvLggPiBww6luZzsgIzVGMzgKK+W8uSA+IGTDoG47ICM1RjM5CivlvLogPiBxacOhbmc7ICM1RjNBCivlvLsgPiBiw6w7ICM1RjNCCivlvLwgPiBiw6w7ICM1RjNDCivlvL0gPiBzaMOoOyAjNUYzRAor5by+ID4gZMOgbjsgIzVGM0UKK+W8vyA+IGppxINuOyAjNUYzRgor5b2AID4gZ8OydTsgIzVGNDAKK+W9giA+IGbEgTsgIzVGNDIKK+W9gyA+IGLDrDsgIzVGNDMKK+W9hCA+IGvFjXU7ICM1RjQ0CivlvYYgPiBiacOoOyAjNUY0Ngor5b2HID4geGnEgW87ICM1RjQ3CivlvYggPiBkw6BuOyAjNUY0OAor5b2JID4ga8O5bzsgIzVGNDkKK+W9iiA+IHFpw6FuZzsgIzVGNEEKK+W9iyA+IGjDs25nOyAjNUY0Qgor5b2MID4gbcOtOyAjNUY0Qwor5b2NID4ga8O5bzsgIzVGNEQKK+W9jiA+IHfEgW47ICM1RjRFCivlvY8gPiBqdcOpOyAjNUY0Rgor5b2QID4gasOsOyAjNUY1MAor5b2RID4gasOsOyAjNUY1MQor5b2SID4gZ8WraTsgIzVGNTIKK+W9kyA+IGTEgW5nOyAjNUY1Mwor5b2UID4gbMO5OyAjNUY1NAor5b2VID4gbMO5OyAjNUY1NQor5b2WID4gdHXDoG47ICM1RjU2CivlvZcgPiBow7lpOyAjNUY1Nwor5b2YID4gemjDrDsgIzVGNTgKK+W9mSA+IGjDuWk7ICM1RjU5CivlvZogPiBow7lpOyAjNUY1QQor5b2bID4gecOtOyAjNUY1Qgor5b2cID4gecOtOyAjNUY1Qwor5b2dID4gecOtOyAjNUY1RAor5b2eID4gecOtOyAjNUY1RQor5b2fID4gaMO5bzsgIzVGNUYKK+W9oCA+IGjDuW87ICM1RjYwCivlvaEgPiBzaMSBbjsgIzVGNjEKK+W9oiA+IHjDrW5nOyAjNUY2Mgor5b2jID4gd8OpbjsgIzVGNjMKK+W9pCA+IHTDs25nOyAjNUY2NAor5b2lID4gecOgbjsgIzVGNjUKK+W9piA+IHnDoG47ICM1RjY2CivlvacgPiB5w7k7ICM1RjY3CivlvaggPiBjaMSrOyAjNUY2OAor5b2pID4gY8SDaTsgIzVGNjkKK+W9qiA+IGJpxIFvOyAjNUY2QQor5b2rID4gZGnEgW87ICM1RjZCCivlvawgPiBixKtuOyAjNUY2Qwor5b2tID4gcMOpbmc7ICM1RjZECivlva4gPiB5xY9uZzsgIzVGNkUKK+W9ryA+IHBpxIFvOyAjNUY2Rgor5b2wID4gemjEgW5nOyAjNUY3MAor5b2xID4gecStbmc7ICM1RjcxCivlvbIgPiBjaMSrOyAjNUY3Mgor5b2zID4gY2jDrDsgIzVGNzMKK+W9tCA+IHpow7pvOyAjNUY3NAor5b21ID4gdMWtbzsgIzVGNzUKK+W9tiA+IGrDrTsgIzVGNzYKK+W9tyA+IHDDoW5nOyAjNUY3Nwor5b24ID4gemjFjW5nOyAjNUY3OAor5b25ID4gecOsOyAjNUY3OQor5b26ID4gd8Ohbmc7ICM1RjdBCivlvbsgPiBjaMOoOyAjNUY3Qgor5b28ID4gYsStOyAjNUY3Qwor5b29ID4gY2jDrTsgIzVGN0QKK+W9viA+IGzErW5nOyAjNUY3RQor5b2/ID4gZsO6OyAjNUY3Rgor5b6AID4gd8SDbmc7ICM1RjgwCivlvoEgPiB6aMSTbmc7ICM1RjgxCivlvoIgPiBjw7o7ICM1RjgyCivlvoMgPiB3xINuZzsgIzVGODMKK+W+hCA+IGrDrG5nOyAjNUY4NAor5b6FID4gZMOgaTsgIzVGODUKK+W+hiA+IHjEqzsgIzVGODYKK+W+hyA+IHjDuW47ICM1Rjg3CivlvoggPiBoxJVuOyAjNUY4OAor5b6JID4gecOhbmc7ICM1Rjg5CivlvoogPiBodcOhaTsgIzVGOEEKK+W+iyA+IGzHnDsgIzVGOEIKK+W+jCA+IGjDsnU7ICM1RjhDCivlvo0gPiB3xIE7ICM1RjhECivlvo4gPiBjaMSVbmc7ICM1RjhFCivlvo8gPiB6aMOsOyAjNUY4Rgor5b6QID4geMO6OyAjNUY5MAor5b6RID4gasOsbmc7ICM1RjkxCivlvpIgPiB0w7o7ICM1RjkyCivlvpMgPiBjw7NuZzsgIzVGOTMKK+W+lSA+IGzDoWk7ICM1Rjk1CivlvpYgPiBjw7NuZzsgIzVGOTYKK+W+lyA+IGTDqTsgIzVGOTcKK+W+mCA+IHDDoWk7ICM1Rjk4CivlvpkgPiB4xK07ICM1Rjk5CivlvpsgPiBxw6w7ICM1RjlCCivlvpwgPiBjaMOhbmc7ICM1RjlDCivlvp0gPiB6aMOsOyAjNUY5RAor5b6eID4gY8Ozbmc7ICM1RjlFCivlvp8gPiB6aMWNdTsgIzVGOUYKK+W+oCA+IGzDoWk7ICM1RkEwCivlvqEgPiB5w7k7ICM1RkExCivlvqIgPiB4acOoOyAjNUZBMgor5b6jID4gamnDqDsgIzVGQTMKK+W+pCA+IGppw6BuOyAjNUZBNAor5b6lID4gY2jDrTsgIzVGQTUKK+W+piA+IGppxIM7ICM1RkE2CivlvqcgPiBiacOgbjsgIzVGQTcKK+W+qCA+IGh1w6FuZzsgIzVGQTgKK+W+qSA+IGbDuTsgIzVGQTkKK+W+qiA+IHjDum47ICM1RkFBCivlvqsgPiB3xJVpOyAjNUZBQgor5b6sID4gcMOhbmc7ICM1RkFDCivlvq0gPiB5w6FvOyAjNUZBRAor5b6uID4gd8STaTsgIzVGQUUKK+W+ryA+IHjEqzsgIzVGQUYKK+W+sCA+IHpoxJNuZzsgIzVGQjAKK+W+sSA+IHBpw6BvOyAjNUZCMQor5b6yID4gY2jDrTsgIzVGQjIKK+W+syA+IGTDqTsgIzVGQjMKK+W+tCA+IHpoxJNuZzsgIzVGQjQKK+W+tSA+IHpoxJNuZzsgIzVGQjUKK+W+tiA+IGJpw6g7ICM1RkI2CivlvrcgPiBkw6k7ICM1RkI3CivlvrggPiBjaMWNbmc7ICM1RkI4CivlvrkgPiBjaMOoOyAjNUZCOQor5b66ID4gamnEg287ICM1RkJBCivlvrsgPiB3w6hpOyAjNUZCQgor5b68ID4gamnDoG87ICM1RkJDCivlvr0gPiBoxatpOyAjNUZCRAor5b6+ID4gbcOpaTsgIzVGQkUKK+W+vyA+IGzDsm5nOyAjNUZCRgor5b+AID4geGnEgW5nOyAjNUZDMAor5b+BID4gYsOgbzsgIzVGQzEKK+W/giA+IHHDujsgIzVGQzIKK+W/gyA+IHjEq247ICM1RkMzCivlv4QgPiBzaMO5JyAneMSrbicgJ3DDoW5nOyAjNUZDNAor5b+FID4gYsOsOyAjNUZDNQor5b+GID4gecOsOyAjNUZDNgor5b+HID4gbMOoOyAjNUZDNwor5b+IID4gcsOpbjsgIzVGQzgKK+W/iSA+IGTEgW87ICM1RkM5Civlv4ogPiBkw6xuZzsgIzVGQ0EKK+W/iyA+IGfEg2k7ICM1RkNCCivlv4wgPiBqw6w7ICM1RkNDCivlv40gPiByxJVuOyAjNUZDRAor5b+OID4gcsOpbjsgIzVGQ0UKK+W/jyA+IGNow6BuOyAjNUZDRgor5b+QID4gdMSDbjsgIzVGRDAKK+W/kSA+IHTDqDsgIzVGRDEKK+W/kiA+IHTDqDsgIzVGRDIKK+W/kyA+IGfEgW47ICM1RkQzCivlv5QgPiBxw6w7ICM1RkQ0Civlv5UgPiBzaMOsOyAjNUZENQor5b+WID4gY8WtbjsgIzVGRDYKK+W/lyA+IHpow6w7ICM1RkQ3Civlv5ggPiB3w6BuZzsgIzVGRDgKK+W/mSA+IG3DoW5nOyAjNUZEOQor5b+aID4geMSrOyAjNUZEQQor5b+bID4gZsOhbjsgIzVGREIKK+W/nCA+IHnEq25nOyAjNUZEQwor5b+dID4gdGnEg247ICM1RkRECivlv54gPiBtw61uOyAjNUZERQor5b+fID4gbcOtbjsgIzVGREYKK+W/oCA+IHpoxY1uZzsgIzVGRTAKK+W/oSA+IGNoxY1uZzsgIzVGRTEKK+W/oiA+IHfDuTsgIzVGRTIKK+W/oyA+IGrDrTsgIzVGRTMKK+W/pCA+IHfFrTsgIzVGRTQKK+W/pSA+IHjDrDsgIzVGRTUKK+W/piA+IHnDqDsgIzVGRTYKK+W/pyA+IHnFjXU7ICM1RkU3Civlv6ggPiB3w6BuOyAjNUZFOAor5b+pID4gY8WNbmc7ICM1RkU5Civlv6ogPiB6aMWNbmc7ICM1RkVBCivlv6sgPiBrdcOgaTsgIzVGRUIKK+W/rCA+IHnDuTsgIzVGRUMKK+W/rSA+IGJpw6BuOyAjNUZFRAor5b+uID4gemjDrDsgIzVGRUUKK+W/ryA+IHHDrTsgIzVGRUYKK+W/sCA+IGPDuWk7ICM1RkYwCivlv7EgPiBjaMOpbjsgIzVGRjEKK+W/siA+IHTDoGk7ICM1RkYyCivlv7MgPiB0w7puOyAjNUZGMwor5b+0ID4gcWnDoW47ICM1RkY0Civlv7UgPiBuacOgbjsgIzVGRjUKK+W/tiA+IGjDum47ICM1RkY2Civlv7cgPiB4xKtvbmc7ICM1RkY3Civlv7ggPiBuxK11OyAjNUZGOAor5b+5ID4gd8SDbmc7ICM1RkY5Civlv7ogPiB4acSBbjsgIzVGRkEKK+W/uyA+IHjEq247ICM1RkZCCivlv7wgPiBrxIFuZzsgIzVGRkMKK+W/vSA+IGjFqzsgIzVGRkQKK+W/viA+IGvDoGk7ICM1RkZFCivlv78gPiBmw6huOyAjNUZGRgor5oCAID4gaHXDoWk7ICM2MDAwCivmgIEgPiB0w6BpOyAjNjAwMQor5oCCID4gc8WPbmc7ICM2MDAyCivmgIMgPiB3xa07ICM2MDAzCivmgIQgPiDDsnU7ICM2MDA0CivmgIUgPiBjaMOgbmc7ICM2MDA1CivmgIYgPiBjaHXDoG5nOyAjNjAwNgor5oCHID4gasO5OyAjNjAwNwor5oCIID4gecOsOyAjNjAwOAor5oCJID4gYsSDbzsgIzYwMDkKK+aAiiA+IGNoxIFvOyAjNjAwQQor5oCLID4gbcOtbjsgIzYwMEIKK+aAjCA+IHDEk2k7ICM2MDBDCivmgI0gPiB6w7lvOyAjNjAwRAor5oCOID4gesSVbjsgIzYwMEUKK+aAjyA+IHnDoG5nOyAjNjAwRgor5oCQID4ga8OydTsgIzYwMTAKK+aAkSA+IGLDoG47ICM2MDExCivmgJIgPiBuw7k7ICM2MDEyCivmgJMgPiBuw6FvOyAjNjAxMwor5oCUID4gemjEk25nOyAjNjAxNAor5oCVID4gcMOgOyAjNjAxNQor5oCWID4gYsO5OyAjNjAxNgor5oCXID4gdGnEkzsgIzYwMTcKK+aAmCA+IGfDuTsgIzYwMTgKK+aAmSA+IGjDuTsgIzYwMTkKK+aAmiA+IGrDuTsgIzYwMUEKK+aAmyA+IGTDoTsgIzYwMUIKK+aAnCA+IGxpw6FuOyAjNjAxQwor5oCdID4gc8SrOyAjNjAxRAor5oCeID4gY2jFjXU7ICM2MDFFCivmgJ8gPiBkw6w7ICM2MDFGCivmgKAgPiBkw6BpOyAjNjAyMAor5oChID4gecOtOyAjNjAyMQor5oCiID4gdMO6OyAjNjAyMgor5oCjID4gecOzdTsgIzYwMjMKK+aApCA+IGbFqzsgIzYwMjQKK+aApSA+IGrDrTsgIzYwMjUKK+aApiA+IHDEk25nOyAjNjAyNgor5oCnID4geMOsbmc7ICM2MDI3CivmgKggPiB5dcOgbjsgIzYwMjgKK+aAqSA+IG7DrTsgIzYwMjkKK+aAqiA+IGd1w6BpOyAjNjAyQQor5oCrID4gZsO6OyAjNjAyQgor5oCsID4geMOsOyAjNjAyQwor5oCtID4gYsOsOyAjNjAyRAor5oCuID4gecWNdTsgIzYwMkUKK+aAryA+IHFpw6g7ICM2MDJGCivmgLAgPiB4dcOgbjsgIzYwMzAKK+aAsSA+IGPFjW5nOyAjNjAzMQor5oCyID4gYsStbmc7ICM2MDMyCivmgLMgPiBodcSDbmc7ICM2MDMzCivmgLQgPiB4w7k7ICM2MDM0CivmgLUgPiBjaMO5OyAjNjAzNQor5oC2ID4gcMSrOyAjNjAzNgor5oC3ID4geMSrOyAjNjAzNwor5oC4ID4geMSrOyAjNjAzOAor5oC5ID4gdMSBbjsgIzYwMzkKK+aAuyA+IHrFj25nOyAjNjAzQgor5oC8ID4gZMO5aTsgIzYwM0MKK+aAvyA+IHnDrDsgIzYwM0YKK+aBgCA+IGNoxK07ICM2MDQwCivmgYEgPiByw6huOyAjNjA0MQor5oGCID4geMO6bjsgIzYwNDIKK+aBgyA+IHNow6w7ICM2MDQzCivmgYQgPiB4w6w7ICM2MDQ0CivmgYUgPiBsxINvOyAjNjA0NQor5oGGID4gaMOpbmc7ICM2MDQ2CivmgYcgPiBrdcSBbmc7ICM2MDQ3CivmgYggPiBtw7o7ICM2MDQ4CivmgYkgPiB6aMStOyAjNjA0OQor5oGKID4geGnDqTsgIzYwNEEKK+aBiyA+IGxpw6BuOyAjNjA0Qgor5oGMID4gdGnEgW87ICM2MDRDCivmgY0gPiBodcSDbmc7ICM2MDRECivmgY4gPiBkacOpOyAjNjA0RQor5oGPID4gaMSDbzsgIzYwNEYKK+aBkCA+IGvFj25nOyAjNjA1MAor5oGRID4gZ8WtaTsgIzYwNTEKK+aBkiA+IGjDqW5nOyAjNjA1Mgor5oGTID4geMSrOyAjNjA1Mwor5oGUID4geGnDoG87ICM2MDU0CivmgZUgPiBzaMO5OyAjNjA1NQor5oGWID4gc8SrOyAjNjA1Ngor5oGXID4ga3XEgzsgIzYwNTcKK+aBmCA+IHHEq3U7ICM2MDU4CivmgZkgPiB5w6BuZzsgIzYwNTkKK+aBmiA+IGjDuWk7ICM2MDVBCivmgZsgPiBow7ppOyAjNjA1Qgor5oGcID4gY2jDrDsgIzYwNUMKK+aBnSA+IGppw6E7ICM2MDVECivmgZ4gPiB5w607ICM2MDVFCivmgZ8gPiB4xKtvbmc7ICM2MDVGCivmgaAgPiBndcOgaTsgIzYwNjAKK+aBoSA+IGzDrG47ICM2MDYxCivmgaIgPiBoxatpOyAjNjA2Mgor5oGjID4gesOsOyAjNjA2Mwor5oGkID4geMO5OyAjNjA2NAor5oGlID4gY2jErTsgIzYwNjUKK+aBpiA+IHhpw6BuZzsgIzYwNjYKK+aBpyA+IG7HnDsgIzYwNjcKK+aBqCA+IGjDqG47ICM2MDY4CivmgakgPiDEk247ICM2MDY5CivmgaogPiBrw6g7ICM2MDZBCivmgasgPiB0xY1uZzsgIzYwNkIKK+aBrCA+IHRpw6FuOyAjNjA2Qwor5oGtID4gZ8WNbmc7ICM2MDZECivmga4gPiBxdcOhbjsgIzYwNkUKK+aBryA+IHjEqzsgIzYwNkYKK+aBsCA+IHFpw6A7ICM2MDcwCivmgbEgPiB5dcOoOyAjNjA3MQor5oGyID4gcMSTbmc7ICM2MDcyCivmgbMgPiBrxJVuOyAjNjA3Mwor5oG0ID4gZMOpOyAjNjA3NAor5oG1ID4gaMO5aTsgIzYwNzUKK+aBtiA+IMOoOyAjNjA3Ngor5oG4ID4gdMOybmc7ICM2MDc4CivmgbkgPiB5w6BuOyAjNjA3OQor5oG6ID4ga8SDaTsgIzYwN0EKK+aBuyA+IGPDqDsgIzYwN0IKK+aBvCA+IG7Eg287ICM2MDdDCivmgb0gPiB5w7luOyAjNjA3RAor5oG+ID4gbcOhbmc7ICM2MDdFCivmgb8gPiB5xY9uZzsgIzYwN0YKK+aCgCA+IHnFj25nOyAjNjA4MAor5oKBID4geXXEgW47ICM2MDgxCivmgoIgPiBwxKs7ICM2MDgyCivmgoMgPiBrxa1uOyAjNjA4Mwor5oKEID4gcWnEg287ICM2MDg0CivmgoUgPiB5dcOoOyAjNjA4NQor5oKGID4gecO5OyAjNjA4Ngor5oKHID4gecO5OyAjNjA4Nwor5oKIID4gamnDqDsgIzYwODgKK+aCiSA+IHjEqzsgIzYwODkKK+aCiiA+IHpow6k7ICM2MDhBCivmgosgPiBsw6xuOyAjNjA4Qgor5oKMID4gdMOsOyAjNjA4Qwor5oKNID4gaMOgbjsgIzYwOEQKK+aCjiA+IGjDoG87ICM2MDhFCivmgo8gPiBxacOoOyAjNjA4Rgor5oKQID4gdMOsOyAjNjA5MAor5oKRID4gYsO5OyAjNjA5MQor5oKSID4gecOsOyAjNjA5Mgor5oKTID4gcWnDoG47ICM2MDkzCivmgpQgPiBoxa1pOyAjNjA5NAor5oKVID4geMSrOyAjNjA5NQor5oKWID4gYsOoaTsgIzYwOTYKK+aClyA+IG3DoW47ICM2MDk3CivmgpggPiB5xKs7ICM2MDk4CivmgpkgPiBoxJNuZzsgIzYwOTkKK+aCmiA+IHPFj25nOyAjNjA5QQor5oKbID4gcXXEgW47ICM2MDlCCivmgpwgPiBjaMSVbmc7ICM2MDlDCivmgp0gPiBoxatpOyAjNjA5RAor5oKeID4gd8O5OyAjNjA5RQor5oKfID4gd8O5OyAjNjA5Rgor5oKgID4gecWNdTsgIzYwQTAKK+aCoSA+IGzDrTsgIzYwQTEKK+aCoiA+IGxpw6BuZzsgIzYwQTIKK+aCoyA+IGh1w6BuOyAjNjBBMwor5oKkID4gY8WNbmc7ICM2MEE0CivmgqUgPiB5w6w7ICM2MEE1CivmgqYgPiB5dcOoOyAjNjBBNgor5oKnID4gbMOsOyAjNjBBNwor5oKoID4gbsOtbjsgIzYwQTgKK+aCqSA+IG7Eg287ICM2MEE5CivmgqogPiDDqDsgIzYwQUEKK+aCqyA+IHF1w6g7ICM2MEFCCivmgqwgPiB4dcOhbjsgIzYwQUMKK+aCrSA+IHFpxIFuOyAjNjBBRAor5oKuID4gd8O5OyAjNjBBRQor5oKvID4gbcStbjsgIzYwQUYKK+aCsCA+IGPDs25nOyAjNjBCMAor5oKxID4gZsSVaTsgIzYwQjEKK+aCsiA+IGLEk2k7ICM2MEIyCivmgrMgPiBkw7pvOyAjNjBCMwor5oK0ID4gY8O5aTsgIzYwQjQKK+aCtSA+IGNow6BuZzsgIzYwQjUKK+aCtiA+IG3DqG47ICM2MEI2CivmgrcgPiBsw6w7ICM2MEI3CivmgrggPiBqw6w7ICM2MEI4CivmgrkgPiBndcOgbjsgIzYwQjkKK+aCuiA+IGd1w6BuOyAjNjBCQQor5oK7ID4geMOsbmc7ICM2MEJCCivmgrwgPiBkw6BvOyAjNjBCQwor5oK9ID4gccSrOyAjNjBCRAor5oK+ID4ga8WNbmc7ICM2MEJFCivmgr8gPiB0acSDbjsgIzYwQkYKK+aDgCA+IGzDum47ICM2MEMwCivmg4EgPiB4xKs7ICM2MEMxCivmg4IgPiBrxINuOyAjNjBDMgor5oODID4ga8WrbjsgIzYwQzMKK+aDhCA+IG7DrDsgIzYwQzQKK+aDhSA+IHHDrW5nOyAjNjBDNQor5oOGID4gY2jDs3U7ICM2MEM2Civmg4cgPiBkxatuOyAjNjBDNwor5oOIID4gZ8WtbzsgIzYwQzgKK+aDiSA+IGNoxIFuOyAjNjBDOQor5oOKID4gbGnDoW5nOyAjNjBDQQor5oOLID4gd8SDbjsgIzYwQ0IKK+aDjCA+IHl1xIFuOyAjNjBDQwor5oONID4gasSrbjsgIzYwQ0QKK+aDjiA+IGrDrDsgIzYwQ0UKK+aDjyA+IGzDrW47ICM2MENGCivmg5AgPiB5w7k7ICM2MEQwCivmg5EgPiBow7lvOyAjNjBEMQor5oOSID4gaMOpOyAjNjBEMgor5oOTID4gcXXDoW47ICM2MEQzCivmg5QgPiB0w6FuOyAjNjBENAor5oOVID4gdMOsOyAjNjBENQor5oOWID4gdMOsOyAjNjBENgor5oOXID4gbmnEkzsgIzYwRDcKK+aDmCA+IHfEg25nOyAjNjBEOAor5oOZID4gY2jDuW87ICM2MEQ5Civmg5ogPiBixas7ICM2MERBCivmg5sgPiBoxatuOyAjNjBEQgor5oOcID4geMSrOyAjNjBEQwor5oOdID4gdMSDbmc7ICM2MERECivmg54gPiB4xKtuOyAjNjBERQor5oOfID4gd8OpaTsgIzYwREYKK+aDoCA+IGjDuWk7ICM2MEUwCivmg6EgPiDDqDsgIzYwRTEKK+aDoiA+IHLFrWk7ICM2MEUyCivmg6MgPiB6xY9uZzsgIzYwRTMKK+aDpCA+IGppxIFuOyAjNjBFNAor5oOlID4gecWPbmc7ICM2MEU1Civmg6YgPiBkacOgbjsgIzYwRTYKK+aDpyA+IGrDuTsgIzYwRTcKK+aDqCA+IGPEg247ICM2MEU4Civmg6kgPiBjaMOpbmc7ICM2MEU5Civmg6ogPiBkw6k7ICM2MEVBCivmg6sgPiBiw6hpOyAjNjBFQgor5oOsID4gcWnDqDsgIzYwRUMKK+aDrSA+IGPDoW47ICM2MEVECivmg64gPiBkw6BuOyAjNjBFRQor5oOvID4gZ3XDoG47ICM2MEVGCivmg7AgPiBkw7lvOyAjNjBGMAor5oOxID4gbsSDbzsgIzYwRjEKK+aDsiA+IHnDuW47ICM2MEYyCivmg7MgPiB4acSDbmc7ICM2MEYzCivmg7QgPiB6aMO5aTsgIzYwRjQKK+aDtSA+IGRpw6g7ICM2MEY1Civmg7YgPiBodcOhbmc7ICM2MEY2Civmg7cgPiBjaMWtbjsgIzYwRjcKK+aDuCA+IHHDrW9uZzsgIzYwRjgKK+aDuSA+IHLElTsgIzYwRjkKK+aDuiA+IHjEq25nOyAjNjBGQQor5oO7ID4gY8OoOyAjNjBGQgor5oO8ID4gYmnEg247ICM2MEZDCivmg70gPiBoxatuOyAjNjBGRAor5oO+ID4gesWNbmc7ICM2MEZFCivmg78gPiB0w607ICM2MEZGCivmhIAgPiBxacSDbzsgIzYxMDAKK+aEgSA+IGNow7N1OyAjNjEwMQor5oSCID4gYsOoaTsgIzYxMDIKK+aEgyA+IHh1xIFuOyAjNjEwMwor5oSEID4gd8STaTsgIzYxMDQKK+aEhSA+IGfDqTsgIzYxMDUKK+aEhiA+IHFpxIFuOyAjNjEwNgor5oSHID4gd8SVaTsgIzYxMDcKK+aEiCA+IHnDuTsgIzYxMDgKK+aEiSA+IHnDujsgIzYxMDkKK+aEiiA+IGLDrDsgIzYxMEEKK+aEiyA+IHh1xIFuOyAjNjEwQgor5oSMID4gaHXDoG47ICM2MTBDCivmhI0gPiBtxK1uOyAjNjEwRAor5oSOID4gYsOsOyAjNjEwRQor5oSPID4gecOsOyAjNjEwRgor5oSQID4gbWnEg247ICM2MTEwCivmhJEgPiB5xY9uZzsgIzYxMTEKK+aEkiA+IGvDoGk7ICM2MTEyCivmhJMgPiBkw6BuZzsgIzYxMTMKK+aElCA+IHnEq247ICM2MTE0CivmhJUgPiDDqDsgIzYxMTUKK+aEliA+IGNow6luOyAjNjExNgor5oSXID4gbcOydTsgIzYxMTcKK+aEmCA+IGvDqDsgIzYxMTgKK+aEmSA+IGvDqDsgIzYxMTkKK+aEmiA+IHnDujsgIzYxMUEKK+aEmyA+IMOgaTsgIzYxMUIKK+aEnCA+IHFpw6g7ICM2MTFDCivmhJ0gPiB5xINuOyAjNjExRAor5oSeID4gbsO5bzsgIzYxMUUKK+aEnyA+IGfEg247ICM2MTFGCivmhKAgPiB5w7luOyAjNjEyMAor5oShID4gesWPbmc7ICM2MTIxCivmhKIgPiBzxIFpOyAjNjEyMgor5oSjID4gbMOpbmc7ICM2MTIzCivmhKQgPiBmw6huOyAjNjEyNAor5oSmID4ga8O5aTsgIzYxMjYKK+aEpyA+IGvDuWk7ICM2MTI3CivmhKggPiBxdcOoOyAjNjEyOAor5oSpID4gZ8WNbmc7ICM2MTI5CivmhKogPiB5w7puOyAjNjEyQQor5oSrID4gc8O5OyAjNjEyQgor5oSsID4gc8O5OyAjNjEyQwor5oStID4gccOtOyAjNjEyRAor5oSuID4gecOhbzsgIzYxMkUKK+aEryA+IHPFj25nOyAjNjEyRgor5oSwID4gaHXEg25nOyAjNjEzMAor5oSxID4gasOtOyAjNjEzMQor5oSyID4gZ8WtOyAjNjEzMgor5oSzID4gasO5OyAjNjEzMwor5oS0ID4gY2h1w6BuZzsgIzYxMzQKK+aEtSA+IG7DrDsgIzYxMzUKK+aEtiA+IHhpw6k7ICM2MTM2CivmhLcgPiBrxINpOyAjNjEzNwor5oS4ID4gemjElW5nOyAjNjEzOAor5oS5ID4gecWPbmc7ICM2MTM5CivmhLogPiBjxINvOyAjNjEzQQor5oS7ID4gc8O5bjsgIzYxM0IKK+aEvCA+IHNow6huOyAjNjEzQwor5oS9ID4gYsOzOyAjNjEzRAor5oS+ID4ga8OgaTsgIzYxM0UKK+aEvyA+IHl1w6BuOyAjNjEzRgor5oWAID4geGnDqTsgIzYxNDAKK+aFgSA+IGjDuW47ICM2MTQxCivmhYIgPiB5xY9uZzsgIzYxNDIKK+aFgyA+IHnEg25nOyAjNjE0Mwor5oWEID4gbMOsOyAjNjE0NAor5oWFID4gc8SBbzsgIzYxNDUKK+aFhiA+IHTEgW87ICM2MTQ2CivmhYcgPiB5xKtuOyAjNjE0Nwor5oWIID4gY8OtOyAjNjE0OAor5oWJID4geMO5OyAjNjE0OQor5oWKID4gcWnDoG47ICM2MTRBCivmhYsgPiB0w6BpOyAjNjE0Qgor5oWMID4gaHXEgW5nOyAjNjE0Qwor5oWNID4gecO5bjsgIzYxNEQKK+aFjiA+IHNow6huOyAjNjE0RQor5oWPID4gbcStbmc7ICM2MTRGCivmhZEgPiBzaMOoOyAjNjE1MQor5oWSID4gY8Ozbmc7ICM2MTUyCivmhZMgPiBwacOgbzsgIzYxNTMKK+aFlCA+IG3DsjsgIzYxNTQKK+aFlSA+IG3DuTsgIzYxNTUKK+aFliA+IGfDum87ICM2MTU2CivmhZcgPiBjaMOsOyAjNjE1Nwor5oWYID4gY8SDbjsgIzYxNTgKK+aFmSA+IGPDoW47ICM2MTU5CivmhZogPiBjw6FuOyAjNjE1QQor5oWbID4gY8O6aTsgIzYxNUIKK+aFnCA+IG3ErW47ICM2MTVDCivmhZ0gPiB0w6g7ICM2MTVECivmhZ4gPiB6aMSBbmc7ICM2MTVFCivmhZ8gPiB0w7JuZzsgIzYxNUYKK+aFoCA+IMOgbzsgIzYxNjAKK+aFoSA+IHNodcSDbmc7ICM2MTYxCivmhaIgPiBtw6BuOyAjNjE2Mgor5oWjID4gZ3XDoG47ICM2MTYzCivmhaQgPiBxdcOoOyAjNjE2NAor5oWlID4gesOgbzsgIzYxNjUKK+aFpiA+IGrDrHU7ICM2MTY2CivmhacgPiBow7lpOyAjNjE2Nwor5oWoID4ga8SDaTsgIzYxNjgKK+aFqSA+IGxpw6FuOyAjNjE2OQor5oWqID4gw7J1OyAjNjE2QQor5oWrID4gc8WPbmc7ICM2MTZCCivmhawgPiBqxK1uOyAjNjE2Qwor5oWtID4gecOsbjsgIzYxNkQKK+aFriA+IGzHnDsgIzYxNkUKK+aFryA+IHNoxIFuZzsgIzYxNkYKK+aFsCA+IHfDqGk7ICM2MTcwCivmhbEgPiB0dcOhbjsgIzYxNzEKK+aFsiA+IG3DoW47ICM2MTcyCivmhbMgPiBxacSBbjsgIzYxNzMKK+aFtCA+IHNow6g7ICM2MTc0CivmhbUgPiB5xY1uZzsgIzYxNzUKK+aFtiA+IHHDrG5nOyAjNjE3Ngor5oW3ID4ga8SBbmc7ICM2MTc3CivmhbggPiBkw6w7ICM2MTc4CivmhbkgPiB6aMOtOyAjNjE3OQor5oW6ID4gbMOzdTsgIzYxN0EKK+aFuyA+IGp1w6BuOyAjNjE3Qgor5oW8ID4gccSrOyAjNjE3Qwor5oW9ID4gccSrOyAjNjE3RAor5oW+ID4gecO5OyAjNjE3RQor5oW/ID4gcMOtbmc7ICM2MTdGCivmhoAgPiBsacOhbzsgIzYxODAKK+aGgSA+IGPFjW5nOyAjNjE4MQor5oaCID4gecWNdTsgIzYxODIKK+aGgyA+IGNoxY1uZzsgIzYxODMKK+aGhCA+IHpow6w7ICM2MTg0CivmhoUgPiB0w7JuZzsgIzYxODUKK+aGhiA+IGNoxJNuZzsgIzYxODYKK+aGhyA+IHHDrDsgIzYxODcKK+aGiCA+IHHFqzsgIzYxODgKK+aGiSA+IHDDqW5nOyAjNjE4OQor5oaKID4gYsOoaTsgIzYxOEEKK+aGiyA+IGJpxJM7ICM2MThCCivmhowgPiBjaMO6bjsgIzYxOEMKK+aGjSA+IGppxIFvOyAjNjE4RAor5oaOID4gesSTbmc7ICM2MThFCivmho8gPiBjaMOsOyAjNjE4Rgor5oaQID4gbGnDoW47ICM2MTkwCivmhpEgPiBww61uZzsgIzYxOTEKK+aGkiA+IGvDuWk7ICM2MTkyCivmhpMgPiBow7lpOyAjNjE5Mwor5oaUID4gcWnDoW87ICM2MTk0CivmhpUgPiBjaMOpbmc7ICM2MTk1CivmhpYgPiB5w6xuOyAjNjE5Ngor5oaXID4gecOsbjsgIzYxOTcKK+aGmCA+IHjErTsgIzYxOTgKK+aGmSA+IHjErTsgIzYxOTkKK+aGmiA+IGTDoG47ICM2MTlBCivmhpsgPiB0w6FuOyAjNjE5Qgor5oacID4gZMWtbzsgIzYxOUMKK+aGnSA+IGTDuWk7ICM2MTlECivmhp4gPiBkw7lpOyAjNjE5RQor5oafID4gc8O5OyAjNjE5Rgor5oagID4ganXDqTsgIzYxQTAKK+aGoSA+IGPDqDsgIzYxQTEKK+aGoiA+IHhpxIFvOyAjNjFBMgor5oajID4gZsOhbjsgIzYxQTMKK+aGpCA+IGbDqG47ICM2MUE0CivmhqUgPiBsw6FvOyAjNjFBNQor5oamID4gbMOgbzsgIzYxQTYKK+aGpyA+IGNoxY1uZzsgIzYxQTcKK+aGqCA+IGjEgW47ICM2MUE4CivmhqkgPiBxw6w7ICM2MUE5CivmhqogPiB4acOhbjsgIzYxQUEKK+aGqyA+IG3ErW47ICM2MUFCCivmhqwgPiBqxK1uZzsgIzYxQUMKK+aGrSA+IGxpxINvOyAjNjFBRAor5oauID4gd8WtOyAjNjFBRQor5oavID4gY8SDbjsgIzYxQUYKK+aGsCA+IGp1w6k7ICM2MUIwCivmhrEgPiBjw7k7ICM2MUIxCivmhrIgPiB4acOgbjsgIzYxQjIKK+aGsyA+IHTEg247ICM2MUIzCivmhrQgPiBzaMOpbmc7ICM2MUI0CivmhrUgPiBwxKs7ICM2MUI1CivmhrYgPiB5w6w7ICM2MUI2CivmhrcgPiBjaMWtOyAjNjFCNwor5oa4ID4geGnEgW47ICM2MUI4CivmhrkgPiBuw6FvOyAjNjFCOQor5oa6ID4gZMOgbjsgIzYxQkEKK+aGuyA+IHTEg247ICM2MUJCCivmhrwgPiBqxK1uZzsgIzYxQkMKK+aGvSA+IHPFjW5nOyAjNjFCRAor5oa+ID4gaMOgbjsgIzYxQkUKK+aGvyA+IGppxIFvOyAjNjFCRgor5oeAID4gd8OgaTsgIzYxQzAKK+aHgSA+IGh1w6FuOyAjNjFDMQor5oeCID4gZMWPbmc7ICM2MUMyCivmh4MgPiBxw61uOyAjNjFDMwor5oeEID4gccOtbjsgIzYxQzQKK+aHhSA+IHHDujsgIzYxQzUKK+aHhiA+IGPEg287ICM2MUM2Civmh4cgPiBrxJVuOyAjNjFDNwor5oeIID4geGnDqDsgIzYxQzgKK+aHiSA+IHnDrG5nOyAjNjFDOQor5oeKID4gw6BvOyAjNjFDQQor5oeLID4gbcOgbzsgIzYxQ0IKK+aHjCA+IHnDrDsgIzYxQ0MKK+aHjSA+IGzErW47ICM2MUNECivmh44gPiBzw6g7ICM2MUNFCivmh48gPiBqw7luOyAjNjFDRgor5oeQID4gaHXDoWk7ICM2MUQwCivmh5EgPiBtw6huOyAjNjFEMQor5oeSID4gbMSDbjsgIzYxRDIKK+aHkyA+IMOgaTsgIzYxRDMKK+aHlCA+IGzErW47ICM2MUQ0Civmh5UgPiB5xIFuOyAjNjFENQor5oeWID4gZ3XEgTsgIzYxRDYKK+aHlyA+IHhpw6A7ICM2MUQ3Civmh5ggPiBjaMOsOyAjNjFEOAor5oeZID4gecWtOyAjNjFEOQor5oeaID4gecOsbjsgIzYxREEKK+aHmyA+IGTEgWk7ICM2MURCCivmh5wgPiBtw6huZzsgIzYxREMKK+aHnSA+IMOgaTsgIzYxREQKK+aHniA+IG3DqW5nOyAjNjFERQor5oefID4gZMO5aTsgIzYxREYKK+aHoCA+IHHDrTsgIzYxRTAKK+aHoSA+IG3FjzsgIzYxRTEKK+aHoiA+IGzDoW47ICM2MUUyCivmh6MgPiBtw6huOyAjNjFFMwor5oekID4gY2jDs3U7ICM2MUU0Civmh6UgPiB6aMOsOyAjNjFFNQor5oemID4gbsO5bzsgIzYxRTYKK+aHpyA+IG7DuW87ICM2MUU3Civmh6ggPiB5xIFuOyAjNjFFOAor5oepID4gecSDbmc7ICM2MUU5Civmh6ogPiBiw7M7ICM2MUVBCivmh6sgPiB6aMOtOyAjNjFFQgor5oesID4ga3XDoG5nOyAjNjFFQwor5oetID4ga3XDoG5nOyAjNjFFRAor5oeuID4gecWPdTsgIzYxRUUKK+aHryA+IGbFqzsgIzYxRUYKK+aHsCA+IGzDrXU7ICM2MUYwCivmh7EgPiBtacOoOyAjNjFGMQor5oeyID4gY2jDqW5nOyAjNjFGMgor5oe0ID4gY2jDoG47ICM2MUY0Civmh7UgPiBtw6luZzsgIzYxRjUKK+aHtiA+IGzEg247ICM2MUY2Civmh7cgPiBodcOhaTsgIzYxRjcKK+aHuCA+IHh1w6FuOyAjNjFGOAor5oe5ID4gcsOgbmc7ICM2MUY5Civmh7ogPiBjaMOgbjsgIzYxRkEKK+aHuyA+IGrDrDsgIzYxRkIKK+aHvCA+IGrDuTsgIzYxRkMKK+aHvSA+IGh1xIFuOyAjNjFGRAor5oe+ID4gc2jDqDsgIzYxRkUKK+aHvyA+IHnDrDsgIzYxRkYKK+aIgCA+IGxpw6BuOyAjNjIwMAor5oiBID4gbsSDbjsgIzYyMDEKK+aIgiA+IG3DrTsgIzYyMDIKK+aIgyA+IHTEg25nOyAjNjIwMwor5oiEID4ganXDqTsgIzYyMDQKK+aIhSA+IGfDoG5nOyAjNjIwNQor5oiGID4gZ8Ogbmc7ICM2MjA2CivmiIcgPiBnw6BuZzsgIzYyMDcKK+aIiCA+IGfEkzsgIzYyMDgKK+aIiSA+IHl1w6g7ICM2MjA5CivmiIogPiB3w7k7ICM2MjBBCivmiIsgPiBqacSBbjsgIzYyMEIKK+aIjCA+IHjFqzsgIzYyMEMKK+aIjSA+IHNow7k7ICM2MjBECivmiI4gPiByw7NuZzsgIzYyMEUKK+aIjyA+IHjDrDsgIzYyMEYKK+aIkCA+IGNow6luZzsgIzYyMTAKK+aIkSA+IHfFjzsgIzYyMTEKK+aIkiA+IGppw6g7ICM2MjEyCivmiJMgPiBnxJM7ICM2MjEzCivmiJQgPiBqacSBbjsgIzYyMTQKK+aIlSA+IHFpxIFuZzsgIzYyMTUKK+aIliA+IGjDuW87ICM2MjE2CivmiJcgPiBxacSBbmc7ICM2MjE3CivmiJggPiB6aMOgbjsgIzYyMTgKK+aImSA+IGTDsm5nOyAjNjIxOQor5oiaID4gccSrOyAjNjIxQQor5oibID4gamnDoTsgIzYyMUIKK+aInCA+IGRpw6k7ICM2MjFDCivmiJ0gPiB6w6lpOyAjNjIxRAor5oieID4gamnDoTsgIzYyMUUKK+aInyA+IGrErTsgIzYyMUYKK+aIoCA+IHNow6w7ICM2MjIwCivmiKEgPiBrxIFuOyAjNjIyMQor5oiiID4gasOtOyAjNjIyMgor5oijID4ga8O6aTsgIzYyMjMKK+aIpCA+IGfDoGk7ICM2MjI0CivmiKUgPiBkxJVuZzsgIzYyMjUKK+aIpiA+IHpow6BuOyAjNjIyNgor5oinID4gY2h1xIFuZzsgIzYyMjcKK+aIqCA+IGfEkzsgIzYyMjgKK+aIqSA+IGppxINuOyAjNjIyOQor5oiqID4gamnDqTsgIzYyMkEKK+aIqyA+IHnDuTsgIzYyMkIKK+aIrCA+IGppxINuOyAjNjIyQwor5oitID4gecSDbjsgIzYyMkQKK+aIriA+IGzDuTsgIzYyMkUKK+aIryA+IHjDrDsgIzYyMkYKK+aIsCA+IHpow6BuOyAjNjIzMAor5oixID4geMOsOyAjNjIzMQor5oiyID4geMOsOyAjNjIzMgor5oizID4gY2jFq287ICM2MjMzCivmiLQgPiBkw6BpOyAjNjIzNAor5oi1ID4gccO6OyAjNjIzNQor5oi2ID4gaMO5OyAjNjIzNgor5oi3ID4gaMO5OyAjNjIzNwor5oi4ID4gaMO5OyAjNjIzOAor5oi5ID4gw6g7ICM2MjM5CivmiLogPiBzaMOsOyAjNjIzQQor5oi7ID4gbMOsOyAjNjIzQgor5oi8ID4gbcSDbzsgIzYyM0MKK+aIvSA+IGjDuTsgIzYyM0QKK+aIviA+IGzDrDsgIzYyM0UKK+aIvyA+IGbDoW5nOyAjNjIzRgor5omAID4gc8WtbzsgIzYyNDAKK+aJgSA+IGJpxINuOyAjNjI0MQor5omCID4gZGnDoG47ICM2MjQyCivmiYMgPiBqxKtvbmc7ICM2MjQzCivmiYQgPiBzaMSDbmc7ICM2MjQ0CivmiYUgPiB5w607ICM2MjQ1CivmiYYgPiB5xK07ICM2MjQ2CivmiYcgPiBzaMOgbjsgIzYyNDcKK+aJiCA+IGjDuTsgIzYyNDgKK+aJiSA+IGbEk2k7ICM2MjQ5CivmiYogPiB5xINuOyAjNjI0QQor5omLID4gc2jFj3U7ICM2MjRCCivmiYwgPiB0zIQnICdzaMWPdScgJ3DDoW5nOyAjNjI0Qwor5omNID4gY8OhaTsgIzYyNEQKK+aJjiA+IHpoxIE7ICM2MjRFCivmiY8gPiBxw611OyAjNjI0Rgor5omQID4gbMOoOyAjNjI1MAor5omRID4gYsWrOyAjNjI1MQor5omSID4gYsSBOyAjNjI1Mgor5omTID4gZMSDOyAjNjI1Mwor5omUID4gcsSTbmc7ICM2MjU0CivmiZUgPiBmw7o7ICM2MjU1CivmiZcgPiB6w6BpOyAjNjI1Nwor5omYID4gdMWrbzsgIzYyNTgKK+aJmSA+IHpow6BuZzsgIzYyNTkKK+aJmiA+IGRpxIFvOyAjNjI1QQor5ombID4ga8Ohbmc7ICM2MjVCCivmiZwgPiB5xas7ICM2MjVDCivmiZ0gPiBrxas7ICM2MjVECivmiZ4gPiBow6BuOyAjNjI1RQor5omfID4gc2jEk247ICM2MjVGCivmiaAgPiBjaMSBOyAjNjI2MAor5omhID4gecStOyAjNjI2MQor5omiID4gZ8WtOyAjNjI2Mgor5omjID4ga8OydTsgIzYyNjMKK+aJpCA+IHfDuTsgIzYyNjQKK+aJpSA+IHTFq287ICM2MjY1CivmiaYgPiBxacSBbjsgIzYyNjYKK+aJpyA+IHpow607ICM2MjY3CivmiaggPiByw6huOyAjNjI2OAor5ompID4ga8O5bzsgIzYyNjkKK+aJqiA+IG3DqW47ICM2MjZBCivmiasgPiBzxINvOyAjNjI2Qgor5omsID4gecOhbmc7ICM2MjZDCivmia0gPiBuxK11OyAjNjI2RAor5omuID4gYsOgbjsgIzYyNkUKK+aJryA+IGNoxJU7ICM2MjZGCivmibAgPiByxINvOyAjNjI3MAor5omxID4geMSrOyAjNjI3MQor5omyID4gcWnDoW47ICM2MjcyCivmibMgPiBixIFuOyAjNjI3Mwor5om0ID4gamnDoTsgIzYyNzQKK+aJtSA+IHnDujsgIzYyNzUKK+aJtiA+IGbDujsgIzYyNzYKK+aJtyA+IMOgbzsgIzYyNzcKK+aJuCA+IHjEqzsgIzYyNzgKK+aJuSA+IHDEqzsgIzYyNzkKK+aJuiA+IHpoxK07ICM2MjdBCivmibsgPiB6w6w7ICM2MjdCCivmibwgPiDDqDsgIzYyN0MKK+aJvSA+IGTDuW47ICM2MjdECivmib4gPiB6aMSDbzsgIzYyN0UKK+aJvyA+IGNow6luZzsgIzYyN0YKK+aKgCA+IGrDrDsgIzYyODAKK+aKgSA+IHnEg247ICM2MjgxCivmioIgPiBrdcOhbmc7ICM2MjgyCivmioMgPiBiacOgbjsgIzYyODMKK+aKhCA+IGNoxIFvOyAjNjI4NAor5oqFID4gasWrOyAjNjI4NQor5oqGID4gd8OobjsgIzYyODYKK+aKhyA+IGjDujsgIzYyODcKK+aKiCA+IHl1w6g7ICM2Mjg4CivmiokgPiBqdcOpOyAjNjI4OQor5oqKID4gYsSDOyAjNjI4QQor5oqLID4gccOsbjsgIzYyOEIKK+aKjCA+IHpoxJVuOyAjNjI4Qwor5oqNID4gemjElW5nOyAjNjI4RAor5oqOID4gecWtbjsgIzYyOEUKK+aKjyA+IHfDoW47ICM2MjhGCivmipAgPiBuw7k7ICM2MjkwCivmipEgPiB5w6w7ICM2MjkxCivmipIgPiBzaMWrOyAjNjI5Mgor5oqTID4gemh1xIE7ICM2MjkzCivmipQgPiBww7N1OyAjNjI5NAor5oqVID4gdMOzdTsgIzYyOTUKK+aKliA+IGTFj3U7ICM2Mjk2CivmipcgPiBrw6BuZzsgIzYyOTcKK+aKmCA+IHpow6k7ICM2Mjk4CivmipkgPiBww7N1OyAjNjI5OQor5oqaID4gZsWtOyAjNjI5QQor5oqbID4gcMSBbzsgIzYyOUIKK+aKnCA+IGLDoTsgIzYyOUMKK+aKnSA+IMSDbzsgIzYyOUQKK+aKniA+IHrDqTsgIzYyOUUKK+aKnyA+IHR1w6FuOyAjNjI5Rgor5oqgID4ga8WNdTsgIzYyQTAKK+aKoSA+IGzDum47ICM2MkExCivmiqIgPiBxacSDbmc7ICM2MkEyCivmiqQgPiBow7k7ICM2MkE0CivmiqUgPiBiw6BvOyAjNjJBNQor5oqmID4gYsStbmc7ICM2MkE2CivmiqcgPiB6aMStOyAjNjJBNwor5oqoID4gcMSTbmc7ICM2MkE4CivmiqkgPiB0xIFuOyAjNjJBOQor5oqqID4gcMWrOyAjNjJBQQor5oqrID4gcMSrOyAjNjJBQgor5oqsID4gdMOhaTsgIzYyQUMKK+aKrSA+IHnEg287ICM2MkFECivmiq4gPiB6aMSVbjsgIzYyQUUKK+aKryA+IHpoxIE7ICM2MkFGCivmirAgPiB5xINuZzsgIzYyQjAKK+aKsSA+IGLDoG87ICM2MkIxCivmirIgPiBoxJM7ICM2MkIyCivmirMgPiBuxK07ICM2MkIzCivmirQgPiB5w6w7ICM2MkI0CivmirUgPiBkxK07ICM2MkI1CivmirYgPiBjaMOsOyAjNjJCNgor5oq3ID4gcMSrOyAjNjJCNwor5oq4ID4gesSBOyAjNjJCOAor5oq5ID4gbcWPOyAjNjJCOQor5oq6ID4gbcWPOyAjNjJCQQor5oq7ID4gc2jDqG47ICM2MkJCCivmirwgPiB5xIE7ICM2MkJDCivmir0gPiBjaMWNdTsgIzYyQkQKK+aKviA+IHHFqzsgIzYyQkUKK+aKvyA+IG3ErW47ICM2MkJGCivmi4AgPiBjaMO5OyAjNjJDMAor5ouBID4gamnEgTsgIzYyQzEKK+aLgiA+IGbDujsgIzYyQzIKK+aLgyA+IHpoxINuOyAjNjJDMwor5ouEID4gemjFrTsgIzYyQzQKK+aLhSA+IGTDoG47ICM2MkM1Civmi4YgPiBjaMSBaTsgIzYyQzYKK+aLhyA+IG3FrTsgIzYyQzcKK+aLiCA+IG5pw6FuOyAjNjJDOAor5ouJID4gbMSBOyAjNjJDOQor5ouKID4gZsWtOyAjNjJDQQor5ouLID4gcMSBbzsgIzYyQ0IKK+aLjCA+IGLDoG47ICM2MkNDCivmi40gPiBwxIFpOyAjNjJDRAor5ouOID4gbMSrbmc7ICM2MkNFCivmi48gPiBuw6E7ICM2MkNGCivmi5AgPiBndcSDaTsgIzYyRDAKK+aLkSA+IHFpw6FuOyAjNjJEMQor5ouSID4gasO5OyAjNjJEMgor5ouTID4gdMO5bzsgIzYyRDMKK+aLlCA+IGLDoTsgIzYyRDQKK+aLlSA+IHTFq287ICM2MkQ1Civmi5YgPiB0xatvOyAjNjJENgor5ouXID4gxINvOyAjNjJENwor5ouYID4gasWrOyAjNjJEOAor5ouZID4gemjDum87ICM2MkQ5Civmi5ogPiBww6BuOyAjNjJEQQor5oubID4gemjEgW87ICM2MkRCCivmi5wgPiBiw6BpOyAjNjJEQwor5oudID4gYsOgaTsgIzYyREQKK+aLniA+IGTErTsgIzYyREUKK+aLnyA+IG7ErTsgIzYyREYKK+aLoCA+IGrDuTsgIzYyRTAKK+aLoSA+IGvDuW87ICM2MkUxCivmi6IgPiBsxY9uZzsgIzYyRTIKK+aLoyA+IGppxINuOyAjNjJFMwor5oulID4gecWPbmc7ICM2MkU1Civmi6YgPiBsw6FuOyAjNjJFNgor5ounID4gbsOtbmc7ICM2MkU3Civmi6ggPiBixY07ICM2MkU4Civmi6kgPiB6w6k7ICM2MkU5Civmi6ogPiBxacSBbjsgIzYyRUEKK+aLqyA+IGjDqW47ICM2MkVCCivmi6wgPiBndcSBOyAjNjJFQwor5outID4gc2jDrDsgIzYyRUQKK+aLriA+IGppw6k7ICM2MkVFCivmi68gPiB6aMSVbmc7ICM2MkVGCivmi7AgPiBuxK1uOyAjNjJGMAor5ouxID4gZ8WPbmc7ICM2MkYxCivmi7IgPiBnxY9uZzsgIzYyRjIKK+aLsyA+IHF1w6FuOyAjNjJGMwor5ou0ID4gc2h1xIFuOyAjNjJGNAor5ou1ID4gY8O6bjsgIzYyRjUKK+aLtiA+IHrEg247ICM2MkY2Civmi7cgPiBrxINvOyAjNjJGNwor5ou4ID4gY2jErTsgIzYyRjgKK+aLuSA+IHhpw6k7ICM2MkY5Civmi7ogPiBjw6g7ICM2MkZBCivmi7sgPiBoxatpOyAjNjJGQgor5ou8ID4gcMSrbjsgIzYyRkMKK+aLvSA+IHpodcSBaTsgIzYyRkQKK+aLviA+IHNow607ICM2MkZFCivmi78gPiBuw6E7ICM2MkZGCivmjIAgPiBiw7I7ICM2MzAwCivmjIEgPiBjaMOtOyAjNjMwMQor5oyCID4gZ3XDoDsgIzYzMDIKK+aMgyA+IHpow6w7ICM2MzAzCivmjIQgPiBrw7lvOyAjNjMwNAor5oyFID4gZMWtbzsgIzYzMDUKK+aMhiA+IGTFrW87ICM2MzA2CivmjIcgPiB6aMStOyAjNjMwNwor5oyIID4gcWnDqDsgIzYzMDgKK+aMiSA+IMOgbjsgIzYzMDkKK+aMiiA+IG7Dsm5nOyAjNjMwQQor5oyLID4gemjDqG47ICM2MzBCCivmjIwgPiBnw6k7ICM2MzBDCivmjI0gPiBqacOgbzsgIzYzMEQKK+aMjiA+IGvFqzsgIzYzMEUKK+aMjyA+IGTDsm5nOyAjNjMwRgor5oyQID4gcsO6OyAjNjMxMAor5oyRID4gdGnEgW87ICM2MzExCivmjJIgPiBsacOoOyAjNjMxMgor5oyTID4gemjEgTsgIzYzMTMKK+aMlCA+IGzHmjsgIzYzMTQKK+aMlSA+IGRpw6k7ICM2MzE1CivmjJYgPiB3xIE7ICM2MzE2CivmjJcgPiBqdcOpOyAjNjMxNwor5oyZID4gasWtOyAjNjMxOQor5oyaID4gemjDrDsgIzYzMUEKK+aMmyA+IGx1w6FuOyAjNjMxQgor5oycID4gecOgOyAjNjMxQwor5oydID4gemh1xIE7ICM2MzFECivmjJ4gPiB0w6A7ICM2MzFFCivmjJ8gPiB4acOpOyAjNjMxRgor5oygID4gbsOhbzsgIzYzMjAKK+aMoSA+IGTEg25nOyAjNjMyMQor5oyiID4gamnEg287ICM2MzIyCivmjKMgPiB6aMSTbmc7ICM2MzIzCivmjKQgPiBqxK07ICM2MzI0CivmjKUgPiBoxatpOyAjNjMyNQor5oymID4geMO6bjsgIzYzMjYKK+aMqCA+IMSBaTsgIzYzMjgKK+aMqSA+IHTFq287ICM2MzI5CivmjKogPiBuw7pvOyAjNjMyQQor5oyrID4gY8O5bzsgIzYzMkIKK+aMrCA+IGLDszsgIzYzMkMKK+aMrSA+IGfElW5nOyAjNjMyRAor5oyuID4gdMStOyAjNjMyRQor5oyvID4gemjDqG47ICM2MzJGCivmjLAgPiBjaMOpbmc7ICM2MzMwCivmjLEgPiBzxatvOyAjNjMzMQor5oyyID4gc8WrbzsgIzYzMzIKK+aMsyA+IGvEk25nOyAjNjMzMwor5oy0ID4gbcSVaTsgIzYzMzQKK+aMtSA+IGzDsm5nOyAjNjMzNQor5oy2ID4gasO6OyAjNjMzNgor5oy3ID4gcMOpbmc7ICM2MzM3CivmjLggPiBqacSDbjsgIzYzMzgKK+aMuSA+IHnDrDsgIzYzMzkKK+aMuiA+IHTErW5nOyAjNjMzQQor5oy7ID4gc2jEgW47ICM2MzNCCivmjLwgPiBuw7lvOyAjNjMzQwor5oy9ID4gd8SDbjsgIzYzM0QKK+aMviA+IHhpw6k7ICM2MzNFCivmjL8gPiBjaMSBOyAjNjMzRgor5o2AID4gZsSTbmc7ICM2MzQwCivmjYEgPiBqacSDbzsgIzYzNDEKK+aNgiA+IHfFrTsgIzYzNDIKK+aNgyA+IGrDuW47ICM2MzQzCivmjYQgPiBqw6x1OyAjNjM0NAor5o2FID4gdMWPbmc7ICM2MzQ1CivmjYYgPiBrxa1uOyAjNjM0Ngor5o2HID4gaMO5bzsgIzYzNDcKK+aNiCA+IHTDujsgIzYzNDgKK+aNiSA+IHpoxatvOyAjNjM0OQor5o2KID4gcMOzdTsgIzYzNEEKK+aNiyA+IGzDqDsgIzYzNEIKK+aNjCA+IGLEgTsgIzYzNEMKK+aNjSA+IGjDoG47ICM2MzRECivmjY4gPiBzaMSBbzsgIzYzNEUKK+aNjyA+IG5pxJM7ICM2MzRGCivmjZAgPiBqdcSBbjsgIzYzNTAKK+aNkSA+IHrDqTsgIzYzNTEKK+aNkiA+IHPFj25nOyAjNjM1Mgor5o2TID4gecOpOyAjNjM1Mwor5o2UID4ganXDqTsgIzYzNTQKK+aNlSA+IGLFrTsgIzYzNTUKK+aNliA+IGh1w6FuOyAjNjM1Ngor5o2XID4gYsO5OyAjNjM1Nwor5o2YID4gesO5bjsgIzYzNTgKK+aNmSA+IHnDrDsgIzYzNTkKK+aNmiA+IHpoxIFpOyAjNjM1QQor5o2bID4gbMeaOyAjNjM1Qgor5o2cID4gc8WNdTsgIzYzNUMKK+aNnSA+IHTFq287ICM2MzVECivmjZ4gPiBsxIFvOyAjNjM1RQor5o2fID4gc8WtbjsgIzYzNUYKK+aNoCA+IGLEgW5nOyAjNjM2MAor5o2hID4gamnEg247ICM2MzYxCivmjaIgPiBodcOgbjsgIzYzNjIKK+aNoyA+IGTEg287ICM2MzYzCivmjaUgPiB3w6BuOyAjNjM2NQor5o2mID4gccOtbjsgIzYzNjYKK+aNpyA+IHDElW5nOyAjNjM2Nwor5o2oID4gc2jElTsgIzYzNjgKK+aNqSA+IGxpw6g7ICM2MzY5CivmjaogPiBtw61uOyAjNjM2QQor5o2rID4gbcOpbjsgIzYzNkIKK+aNrCA+IGbFrTsgIzYzNkMKK+aNrSA+IGLEg2k7ICM2MzZECivmja4gPiBqw7k7ICM2MzZFCivmja8gPiBkxINvOyAjNjM2Rgor5o2wID4gd8WPOyAjNjM3MAor5o2xID4gw6FpOyAjNjM3MQor5o2yID4ganXEg247ICM2MzcyCivmjbMgPiB5dcOoOyAjNjM3Mwor5o20ID4gesWPbmc7ICM2Mzc0CivmjbUgPiBjaMSVbjsgIzYzNzUKK+aNtiA+IGNow7ppOyAjNjM3Ngor5o23ID4gamnDqTsgIzYzNzcKK+aNuCA+IHTFqzsgIzYzNzgKK+aNuSA+IGLDqG47ICM2Mzc5CivmjbogPiBuw6A7ICM2MzdBCivmjbsgPiBuacSDbjsgIzYzN0IKK+aNvCA+IG7Dum87ICM2MzdDCivmjb0gPiB6w7o7ICM2MzdECivmjb4gPiB3w7I7ICM2MzdFCivmjb8gPiB4xKs7ICM2MzdGCivmjoAgPiB4acSBbjsgIzYzODAKK+aOgSA+IGNow6luZzsgIzYzODEKK+aOgiA+IGRpxIFuOyAjNjM4Mgor5o6DID4gc8SDbzsgIzYzODMKK+aOhCA+IGzDum47ICM2Mzg0CivmjoUgPiBxw6xuZzsgIzYzODUKK+aOhiA+IGfEgW5nOyAjNjM4Ngor5o6HID4gZMO6bzsgIzYzODcKK+aOiCA+IHNow7J1OyAjNjM4OAor5o6JID4gZGnDoG87ICM2Mzg5CivmjoogPiBww7N1OyAjNjM4QQor5o6LID4gZMStOyAjNjM4Qgor5o6MID4gemjEg25nOyAjNjM4Qwor5o6NID4gZ8WtbjsgIzYzOEQKK+aOjiA+IGrErTsgIzYzOEUKK+aOjyA+IHTEgW87ICM2MzhGCivmjpAgPiBxacSBOyAjNjM5MAor5o6RID4gccOtOyAjNjM5MQor5o6SID4gcMOhaTsgIzYzOTIKK+aOkyA+IHNow7o7ICM2MzkzCivmjpQgPiBxacSBbjsgIzYzOTQKK+aOlSA+IGzDrG5nOyAjNjM5NQor5o6WID4gecOsOyAjNjM5Ngor5o6XID4gecOgOyAjNjM5Nwor5o6YID4ganXDqTsgIzYzOTgKK+aOmSA+IHpoxJNuZzsgIzYzOTkKK+aOmiA+IGxpxINuZzsgIzYzOUEKK+aOmyA+IGd1w6A7ICM2MzlCCivmjpwgPiB5xK07ICM2MzlDCivmjp0gPiBow7lvOyAjNjM5RAor5o6eID4gc2jDoG47ICM2MzlFCivmjp8gPiB6aMSVbmc7ICM2MzlGCivmjqAgPiBsx5xlOyAjNjNBMAor5o6hID4gY8SDaTsgIzYzQTEKK+aOoiA+IHTDoG47ICM2M0EyCivmjqMgPiBjaMOoOyAjNjNBMwor5o6kID4gYsSrbmc7ICM2M0E0CivmjqUgPiBqacSTOyAjNjNBNQor5o6mID4gdMOsOyAjNjNBNgor5o6nID4ga8Oybmc7ICM2M0E3CivmjqggPiB0xatpOyAjNjNBOAor5o6pID4gecSDbjsgIzYzQTkKK+aOqiA+IGPDuW87ICM2M0FBCivmjqsgPiB6xY11OyAjNjNBQgor5o6sID4gasO6OyAjNjNBQwor5o6tID4gdGnDoG47ICM2M0FECivmjq4gPiBxacOhbjsgIzYzQUUKK+aOryA+IGvDqG47ICM2M0FGCivmjrAgPiBixIFpOyAjNjNCMAor5o6xID4gc2jFj3U7ICM2M0IxCivmjrIgPiBqacSTOyAjNjNCMgor5o6zID4gbMWtOyAjNjNCMwor5o60ID4gZ8O6bzsgIzYzQjQKK+aOtyA+IHpow607ICM2M0I3CivmjrggPiBkxINuOyAjNjNCOAor5o66ID4geGnEgW47ICM2M0JBCivmjrsgPiBzxIFvOyAjNjNCQgor5o68ID4gZ3XDoG47ICM2M0JDCivmjr0gPiBww6huZzsgIzYzQkQKK+aOviA+IHl1w6BuOyAjNjNCRQor5o6/ID4gbsO5bzsgIzYzQkYKK+aPgCA+IGppxINuOyAjNjNDMAor5o+BID4gemjEk247ICM2M0MxCivmj4IgPiBqxKt1OyAjNjNDMgor5o+DID4gamnEgW47ICM2M0MzCivmj4QgPiB5w7o7ICM2M0M0Civmj4UgPiB5w6FuOyAjNjNDNQor5o+GID4ga8O6aTsgIzYzQzYKK+aPhyA+IG7Eg247ICM2M0M3Civmj4ggPiBoxY1uZzsgIzYzQzgKK+aPiSA+IHLDs3U7ICM2M0M5Civmj4ogPiBww6w7ICM2M0NBCivmj4sgPiB3xJNpOyAjNjNDQgor5o+MID4gc8SBaTsgIzYzQ0MKK+aPjSA+IHrDsnU7ICM2M0NECivmj44gPiB4dcSBbjsgIzYzQ0UKK+aPjyA+IG1pw6FvOyAjNjNDRgor5o+QID4gdMOtOyAjNjNEMAor5o+RID4gbmnEkzsgIzYzRDEKK+aPkiA+IGNoxIE7ICM2M0QyCivmj5MgPiBzaMOsOyAjNjNEMwor5o+UID4gesWPbmc7ICM2M0Q0Civmj5UgPiB6aMOobjsgIzYzRDUKK+aPliA+IHnEqzsgIzYzRDYKK+aPlyA+IHNoxa1uOyAjNjNENwor5o+YID4gaMOpbmc7ICM2M0Q4Civmj5kgPiBiacOgbjsgIzYzRDkKK+aPmiA+IHnDoW5nOyAjNjNEQQor5o+bID4gaHXDoG47ICM2M0RCCivmj5wgPiB5xINuOyAjNjNEQwor5o+dID4genXDoG47ICM2M0RECivmj54gPiDEg247ICM2M0RFCivmj58gPiB4xas7ICM2M0RGCivmj6AgPiB5w6A7ICM2M0UwCivmj6EgPiB3w7I7ICM2M0UxCivmj6IgPiBrw6g7ICM2M0UyCivmj6MgPiBjaHXEg2k7ICM2M0UzCivmj6QgPiBqw607ICM2M0U0Civmj6UgPiB0w6w7ICM2M0U1Civmj6YgPiBsw6E7ICM2M0U2Civmj6cgPiBsw6A7ICM2M0U3Civmj6ggPiBjaMOpbmc7ICM2M0U4Civmj6kgPiBrxIFpOyAjNjNFOQor5o+qID4gasSrdTsgIzYzRUEKK+aPqyA+IGrEq3U7ICM2M0VCCivmj6wgPiB0w7o7ICM2M0VDCivmj60gPiBqacSTOyAjNjNFRAor5o+uID4gaMWraTsgIzYzRUUKK+aPryA+IGfEk25nOyAjNjNFRgor5o+wID4gY2jDsm5nOyAjNjNGMAor5o+xID4gc2jDuW87ICM2M0YxCivmj7IgPiBzaMOpOyAjNjNGMgor5o+zID4geGnDqDsgIzYzRjMKK+aPtCA+IHl1w6FuOyAjNjNGNAor5o+1ID4gcWnDoW47ICM2M0Y1Civmj7YgPiB5w6k7ICM2M0Y2Civmj7cgPiBjaMSBOyAjNjNGNwor5o+4ID4gemjEgTsgIzYzRjgKK+aPuSA+IGLEk2k7ICM2M0Y5Civmj7ogPiB5w6FvOyAjNjNGQQor5o+9ID4gbMSDbjsgIzYzRkQKK+aPviA+IHfDqG47ICM2M0ZFCivmj78gPiBxw6xuOyAjNjNGRgor5pCAID4gY2jEgW47ICM2NDAwCivmkIEgPiBnxJM7ICM2NDAxCivmkIIgPiBsxY91OyAjNjQwMgor5pCDID4gesWPbmc7ICM2NDAzCivmkIQgPiBnxJNuZzsgIzY0MDQKK+aQhSA+IGppxINvOyAjNjQwNQor5pCGID4gZ8OydTsgIzY0MDYKK+aQhyA+IHHDrG47ICM2NDA3CivmkIggPiB5xY9uZzsgIzY0MDgKK+aQiSA+IHF1w6g7ICM2NDA5CivmkIogPiBjaMWNdTsgIzY0MEEKK+aQiyA+IGNoxK07ICM2NDBCCivmkIwgPiB6aMSDbjsgIzY0MEMKK+aQjSA+IHPFrW47ICM2NDBECivmkI4gPiBzxatuOyAjNjQwRQor5pCPID4gYsOzOyAjNjQwRgor5pCQID4gY2jDuTsgIzY0MTAKK+aQkSA+IHLFj25nOyAjNjQxMQor5pCSID4gYsOobmc7ICM2NDEyCivmkJMgPiBjxatvOyAjNjQxMwor5pCUID4gc8SBbzsgIzY0MTQKK+aQlSA+IGvDqDsgIzY0MTUKK+aQliA+IHnDoW87ICM2NDE2CivmkJcgPiBkxINvOyAjNjQxNwor5pCYID4gemjEqzsgIzY0MTgKK+aQmSA+IG7DuTsgIzY0MTkKK+aQmiA+IHhpw6k7ICM2NDFBCivmkJsgPiBqacSBbjsgIzY0MUIKK+aQnCA+IHPFjXU7ICM2NDFDCivmkJ0gPiBxxK11OyAjNjQxRAor5pCeID4gZ8SDbzsgIzY0MUUKK+aQnyA+IHhpxINuOyAjNjQxRgor5pCgID4gc2jDuW87ICM2NDIwCivmkKEgPiBzxINuZzsgIzY0MjEKK+aQoiA+IGrDrG47ICM2NDIyCivmkKMgPiBtacOoOyAjNjQyMwor5pCkID4gw6g7ICM2NDI0CivmkKUgPiBjaMO6aTsgIzY0MjUKK+aQpiA+IG7DuW87ICM2NDI2CivmkKcgPiBzaMSBbjsgIzY0MjcKK+aQqCA+IHTDoDsgIzY0MjgKK+aQqSA+IGppw6k7ICM2NDI5CivmkKogPiB0w6FuZzsgIzY0MkEKK+aQqyA+IHDDoW47ICM2NDJCCivmkKwgPiBixIFuOyAjNjQyQwor5pCtID4gZMSBOyAjNjQyRAor5pCuID4gbMOsOyAjNjQyRQor5pCvID4gdMSBbzsgIzY0MkYKK+aQsCA+IGjDujsgIzY0MzAKK+aQsSA+IHpow6w7ICM2NDMxCivmkLIgPiB3xIE7ICM2NDMyCivmkLMgPiB4acOhOyAjNjQzMwor5pC0ID4gcWnEgW47ICM2NDM0CivmkLUgPiB3w6huOyAjNjQzNQor5pC2ID4gcWnEg25nOyAjNjQzNgor5pC3ID4gdGnDoW47ICM2NDM3CivmkLggPiB6aMSTbjsgIzY0MzgKK+aQuSA+IMOoOyAjNjQzOQor5pC6ID4geMSrOyAjNjQzQQor5pC7ID4gbsO5bzsgIzY0M0IKK+aQvCA+IHF1w6FuOyAjNjQzQwor5pC9ID4gY2jDoTsgIzY0M0QKK+aQviA+IHpow6A7ICM2NDNFCivmkL8gPiBnw6k7ICM2NDNGCivmkYAgPiB3xa07ICM2NDQwCivmkYEgPiDDqG47ICM2NDQxCivmkYIgPiBzaMOoOyAjNjQ0Mgor5pGDID4ga8Ohbmc7ICM2NDQzCivmkYQgPiBzaMOoOyAjNjQ0NAor5pGFID4gc2jFqzsgIzY0NDUKK+aRhiA+IGLEg2k7ICM2NDQ2CivmkYcgPiB5w6FvOyAjNjQ0Nwor5pGIID4gYsOsbjsgIzY0NDgKK+aRiSA+IHPFjXU7ICM2NDQ5CivmkYogPiB0xIFuOyAjNjQ0QQor5pGLID4gc8OgOyAjNjQ0Qgor5pGMID4gY2jEg247ICM2NDRDCivmkY0gPiBzxatvOyAjNjQ0RAor5pGOID4gbGnDoW87ICM2NDRFCivmkY8gPiBjaMWNbmc7ICM2NDRGCivmkZAgPiBjaHXEgW5nOyAjNjQ1MAor5pGRID4gZ8O6bzsgIzY0NTEKK+aRkiA+IGLDrG5nOyAjNjQ1Mgor5pGTID4gZsOpbmc7ICM2NDUzCivmkZQgPiBzaHXEgWk7ICM2NDU0CivmkZUgPiBkw6w7ICM2NDU1CivmkZYgPiBxw6w7ICM2NDU2CivmkZcgPiBzb3U7ICM2NDU3CivmkZggPiB6aMSBaTsgIzY0NTgKK+aRmSA+IGxpxINuOyAjNjQ1OQor5pGaID4gdMOhbmc7ICM2NDVBCivmkZsgPiBjaMSrOyAjNjQ1Qgor5pGcID4gZ3XDoG47ICM2NDVDCivmkZ0gPiBsw7k7ICM2NDVECivmkZ4gPiBsw7pvOyAjNjQ1RQor5pGfID4gbMWPdTsgIzY0NUYKK+aRoCA+IHrFj25nOyAjNjQ2MAor5pGhID4gZ8OgaTsgIzY0NjEKK+aRoiA+IGjDuTsgIzY0NjIKK+aRoyA+IHpoxIE7ICM2NDYzCivmkaQgPiBjaHXEg25nOyAjNjQ2NAor5pGlID4gdMOgbmc7ICM2NDY1CivmkaYgPiBodcOgOyAjNjQ2Ngor5pGnID4gY8WraTsgIzY0NjcKK+aRqCA+IG7DoWk7ICM2NDY4CivmkakgPiBtw7M7ICM2NDY5CivmkaogPiBqacSBbmc7ICM2NDZBCivmkasgPiBnxatpOyAjNjQ2Qgor5pGsID4gecOsbmc7ICM2NDZDCivmka0gPiB6aMOtOyAjNjQ2RAor5pGuID4gw6FvOyAjNjQ2RQor5pGvID4gemjDrDsgIzY0NkYKK+aRsCA+IG5pw6g7ICM2NDcwCivmkbEgPiBtw6FuOyAjNjQ3MQor5pGyID4gc2jDoG47ICM2NDcyCivmkbMgPiBrxY11OyAjNjQ3Mwor5pG0ID4gc2jFqzsgIzY0NzQKK+aRtSA+IHPFrW87ICM2NDc1CivmkbYgPiB0dcOhbjsgIzY0NzYKK+aRtyA+IGppxINvOyAjNjQ3Nwor5pG4ID4gbcWNOyAjNjQ3OAor5pG5ID4gbcOzOyAjNjQ3OQor5pG6ID4gemjDqTsgIzY0N0EKK+aRuyA+IHhpxIFuOyAjNjQ3Qgor5pG8ID4ga8STbmc7ICM2NDdDCivmkb0gPiBwacSDbzsgIzY0N0QKK+aRviA+IGppw6BuZzsgIzY0N0UKK+aRvyA+IHnEq247ICM2NDdGCivmkoAgPiBnw7J1OyAjNjQ4MAor5pKBID4gcWnEgW47ICM2NDgxCivmkoIgPiBsx5xlOyAjNjQ4Mgor5pKDID4gasOtOyAjNjQ4Mwor5pKEID4gecSrbmc7ICM2NDg0CivmkoUgPiBqdcSTOyAjNjQ4NQor5pKGID4gcGnEkzsgIzY0ODYKK+aShyA+IHBpxJU7ICM2NDg3CivmkoggPiBsxIFvOyAjNjQ4OAor5pKJID4gZMWrbjsgIzY0ODkKK+aSiiA+IHhpw6BuOyAjNjQ4QQor5pKLID4gcnXDoW47ICM2NDhCCivmkowgPiBrw7lpOyAjNjQ4Qwor5pKNID4gesSDbjsgIzY0OEQKK+aSjiA+IHnDrDsgIzY0OEUKK+aSjyA+IHjDum47ICM2NDhGCivmkpAgPiBjaMSTbmc7ICM2NDkwCivmkpEgPiBjaMSTbmc7ICM2NDkxCivmkpIgPiBzxIM7ICM2NDkyCivmkpMgPiBuw6FvOyAjNjQ5Mwor5pKUID4gaMOobmc7ICM2NDk0CivmkpUgPiBzxKs7ICM2NDk1CivmkpYgPiBxacSDbjsgIzY0OTYKK+aSlyA+IGh1w6FuZzsgIzY0OTcKK+aSmCA+IGTEgTsgIzY0OTgKK+aSmSA+IHrFrW47ICM2NDk5CivmkpogPiBuacSDbjsgIzY0OUEKK+aSmyA+IGzErW47ICM2NDlCCivmkpwgPiB6aMSVbmc7ICM2NDlDCivmkp0gPiBoxatpOyAjNjQ5RAor5pKeID4gemh1w6BuZzsgIzY0OUUKK+aSnyA+IGppxINvOyAjNjQ5Rgor5pKgID4gasStOyAjNjRBMAor5pKhID4gY8SBbzsgIzY0QTEKK+aSoiA+IGTEg247ICM2NEEyCivmkqMgPiBkxINuOyAjNjRBMwor5pKkID4gY2jDqDsgIzY0QTQKK+aSpSA+IGLFjTsgIzY0QTUKK+aSpiA+IGNoxJU7ICM2NEE2CivmkqcgPiBqdcOpOyAjNjRBNwor5pKoID4geGnEgW87ICM2NEE4CivmkqkgPiBsacOhbzsgIzY0QTkKK+aSqiA+IGLDqG47ICM2NEFBCivmkqsgPiBmxa07ICM2NEFCCivmkqwgPiBxacOgbzsgIzY0QUMKK+aSrSA+IGLDsjsgIzY0QUQKK+aSriA+IGPFq287ICM2NEFFCivmkq8gPiB6aMO6bzsgIzY0QUYKK+aSsCA+IHpodcOgbjsgIzY0QjAKK+aSsSA+IHTFrW87ICM2NEIxCivmkrIgPiBwxas7ICM2NEIyCivmkrMgPiBxw6xuOyAjNjRCMwor5pK0ID4gZMWrbjsgIzY0QjQKK+aStSA+IG5pxINuOyAjNjRCNQor5pK3ID4geGnDqTsgIzY0QjcKK+aSuCA+IGzFrTsgIzY0QjgKK+aSuSA+IGppxINvOyAjNjRCOQor5pK6ID4gY3XEgW47ICM2NEJBCivmkrsgPiB0w6A7ICM2NEJCCivmkrwgPiBow6BuOyAjNjRCQwor5pK9ID4gcWnDoG87ICM2NEJECivmkr4gPiB6aHXEgTsgIzY0QkUKK+aSvyA+IGppxINuOyAjNjRCRgor5pOAID4gZ8SDbjsgIzY0QzAKK+aTgSA+IHnFj25nOyAjNjRDMQor5pOCID4gbMOpaTsgIzY0QzIKK+aTgyA+IGvFrW87ICM2NEMzCivmk4QgPiBsxa07ICM2NEM0Civmk4UgPiBzaMOgbjsgIzY0QzUKK+aThiA+IHpow7pvOyAjNjRDNgor5pOHID4gesOpOyAjNjRDNwor5pOIID4gcMWrOyAjNjRDOAor5pOJID4gY2jDuW87ICM2NEM5Civmk4ogPiBqw607ICM2NENBCivmk4sgPiBkxINuZzsgIzY0Q0IKK+aTjCA+IHPFrW87ICM2NENDCivmk40gPiBjxIFvOyAjNjRDRAor5pOOID4gccOtbmc7ICM2NENFCivmk48gPiBqw6xuZzsgIzY0Q0YKK+aTkCA+IGh1w6BuOyAjNjREMAor5pORID4gamnEkzsgIzY0RDEKK+aTkiA+IHHDrW47ICM2NEQyCivmk5MgPiBrdcSDaTsgIzY0RDMKK+aTlCA+IGTEgW47ICM2NEQ0Civmk5UgPiB4xKs7ICM2NEQ1Civmk5YgPiBnxJU7ICM2NEQ2Civmk5cgPiBww6w7ICM2NEQ3Civmk5ggPiBiw7I7ICM2NEQ4Civmk5kgPiDDoG87ICM2NEQ5Civmk5ogPiBqw7k7ICM2NERBCivmk5sgPiB5w6g7ICM2NERCCivmk54gPiBzxY91OyAjNjRERQor5pOfID4gbcOtOyAjNjRERgor5pOgID4gasStOyAjNjRFMAor5pOhID4gdMOhaTsgIzY0RTEKK+aToiA+IHpow7pvOyAjNjRFMgor5pOjID4gZMSDbzsgIzY0RTMKK+aTpCA+IHjErW5nOyAjNjRFNAor5pOlID4gbMSDbjsgIzY0RTUKK+aTpiA+IGPEgTsgIzY0RTYKK+aTpyA+IGrFrTsgIzY0RTcKK+aTqCA+IHnDqTsgIzY0RTgKK+aTqSA+IHLFrTsgIzY0RTkKK+aTqiA+IHnDqDsgIzY0RUEKK+aTqyA+IHnDqDsgIzY0RUIKK+aTrCA+IG7ErTsgIzY0RUMKK+aTrSA+IGjDuTsgIzY0RUQKK+aTriA+IGrDrTsgIzY0RUUKK+aTryA+IGLDrG47ICM2NEVGCivmk7AgPiBuw61uZzsgIzY0RjAKK+aTsSA+IGfEkzsgIzY0RjEKK+aTsiA+IHpow607ICM2NEYyCivmk7MgPiBqacOpOyAjNjRGMwor5pO0ID4ga8O5bzsgIzY0RjQKK+aTtSA+IG3DszsgIzY0RjUKK+aTtiA+IGppw6BuOyAjNjRGNgor5pO3ID4geGnDqTsgIzY0RjcKK+aTuCA+IGxpw6g7ICM2NEY4Civmk7kgPiB0xIFuOyAjNjRGOQor5pO6ID4gYsSDaTsgIzY0RkEKK+aTuyA+IHPFj3U7ICM2NEZCCivmk7wgPiBsxa07ICM2NEZDCivmk70gPiBsx5xlOyAjNjRGRAor5pO+ID4gcsSDbzsgIzY0RkUKK+aTvyA+IHpow607ICM2NEZGCivmlIAgPiBwxIFuOyAjNjUwMAor5pSBID4gecSDbmc7ICM2NTAxCivmlIIgPiBsw6hpOyAjNjUwMgor5pSDID4gc8OgOyAjNjUwMwor5pSEID4gc2jFqzsgIzY1MDQKK+aUhSA+IHrEg247ICM2NTA1CivmlIYgPiBuacSDbjsgIzY1MDYKK+aUhyA+IHhpxINuOyAjNjUwNwor5pSIID4gasO5bjsgIzY1MDgKK+aUiSA+IGjDuW87ICM2NTA5CivmlIogPiBsw6w7ICM2NTBBCivmlIsgPiBsw6A7ICM2NTBCCivmlIwgPiBow6BuOyAjNjUwQwor5pSNID4gecOtbmc7ICM2NTBECivmlI4gPiBsw7o7ICM2NTBFCivmlI8gPiBsxY9uZzsgIzY1MEYKK+aUkCA+IHFpxIFuOyAjNjUxMAor5pSRID4gcWnEgW47ICM2NTExCivmlJIgPiB6xINuOyAjNjUxMgor5pSTID4gcWnEgW47ICM2NTEzCivmlJQgPiBsw6FuOyAjNjUxNAor5pSVID4gc8SBbjsgIzY1MTUKK+aUliA+IHnEq25nOyAjNjUxNgor5pSXID4gbcOpaTsgIzY1MTcKK+aUmCA+IHLDoW5nOyAjNjUxOAor5pSZID4gY2jEgW47ICM2NTE5CivmlJsgPiBjdcSBbjsgIzY1MUIKK+aUnCA+IHjEqzsgIzY1MUMKK+aUnSA+IHNow6g7ICM2NTFECivmlJ4gPiBsxa1vOyAjNjUxRQor5pSfID4gasO5bjsgIzY1MUYKK+aUoCA+IG3DrTsgIzY1MjAKK+aUoSA+IGzDrTsgIzY1MjEKK+aUoiA+IHrEg247ICM2NTIyCivmlKMgPiBsx5hhbjsgIzY1MjMKK+aUpCA+IHTEgW47ICM2NTI0CivmlKUgPiB6dcOgbjsgIzY1MjUKK+aUpiA+IGzDrDsgIzY1MjYKK+aUpyA+IGRpxIFuOyAjNjUyNwor5pSoID4gd8SBOyAjNjUyOAor5pSpID4gZMSDbmc7ICM2NTI5CivmlKogPiBqacSDbzsgIzY1MkEKK+aUqyA+IGp1w6k7ICM2NTJCCivmlKwgPiBsxINuOyAjNjUyQwor5pStID4gbMOsOyAjNjUyRAor5pSuID4gbsSDbmc7ICM2NTJFCivmlK8gPiB6aMSrOyAjNjUyRgor5pSwID4gZ8O5aTsgIzY1MzAKK+aUsSA+IGfFrWk7ICM2NTMxCivmlLIgPiBxxKs7ICM2NTMyCivmlLMgPiB4w61uOyAjNjUzMwor5pS0ID4gcMWrOyAjNjUzNAor5pS1ID4gc8WraTsgIzY1MzUKK+aUtiA+IHNoxY11OyAjNjUzNgor5pS3ID4ga8OhbzsgIzY1MzcKK+aUuCA+IHnFjXU7ICM2NTM4CivmlLkgPiBnxINpOyAjNjUzOQor5pS6ID4gecStOyAjNjUzQQor5pS7ID4gZ8WNbmc7ICM2NTNCCivmlLwgPiBnxIFuOyAjNjUzQwor5pS9ID4gYsSBbjsgIzY1M0QKK+aUviA+IGbDoG5nOyAjNjUzRQor5pS/ID4gemjDqG5nOyAjNjUzRgor5pWAID4gYsOzOyAjNjU0MAor5pWBID4gZGnEgW47ICM2NTQxCivmlYIgPiBrw7J1OyAjNjU0Mgor5pWDID4gbcStbjsgIzY1NDMKK+aVhCA+IHfDuTsgIzY1NDQKK+aVhSA+IGfDuTsgIzY1NDUKK+aVhiA+IGjDqTsgIzY1NDYKK+aVhyA+IGPDqDsgIzY1NDcKK+aViCA+IHhpw6BvOyAjNjU0OAor5pWJID4gbcStOyAjNjU0OQor5pWKID4gY2jDuTsgIzY1NEEKK+aViyA+IGfDqTsgIzY1NEIKK+aVjCA+IGTDrTsgIzY1NEMKK+aVjSA+IHjDuTsgIzY1NEQKK+aVjiA+IGppw6BvOyAjNjU0RQor5pWPID4gbcStbjsgIzY1NEYKK+aVkCA+IGNow6luOyAjNjU1MAor5pWRID4gasOsdTsgIzY1NTEKK+aVkiA+IHpow6huOyAjNjU1Mgor5pWTID4gZMO6bzsgIzY1NTMKK+aVlCA+IHnFrTsgIzY1NTQKK+aVlSA+IGNow6w7ICM2NTU1CivmlZYgPiDDoW87ICM2NTU2CivmlZcgPiBiw6BpOyAjNjU1Nwor5pWYID4geMO5OyAjNjU1OAor5pWZID4gamnDoG87ICM2NTU5CivmlZogPiBkw7pvOyAjNjU1QQor5pWbID4gbGnDoG47ICM2NTVCCivmlZwgPiBuacOoOyAjNjU1Qwor5pWdID4gYsOsOyAjNjU1RAor5pWeID4gY2jEg25nOyAjNjU1RQor5pWfID4gZGnEg247ICM2NTVGCivmlaAgPiBkw7pvOyAjNjU2MAor5pWhID4gecOsOyAjNjU2MQor5pWiID4gZ8SDbjsgIzY1NjIKK+aVoyA+IHPDoG47ICM2NTYzCivmlaQgPiBrxJU7ICM2NTY0CivmlaUgPiB5w6BuOyAjNjU2NQor5pWmID4gZMWrbjsgIzY1NjYKK+aVpyA+IHHErTsgIzY1NjcKK+aVqCA+IGTFj3U7ICM2NTY4CivmlakgPiB4acOgbzsgIzY1NjkKK+aVqiA+IGTDum87ICM2NTZBCivmlasgPiBqacOgbzsgIzY1NkIKK+aVrCA+IGrDrG5nOyAjNjU2Qwor5pWtID4gecOhbmc7ICM2NTZECivmla4gPiB4acOhOyAjNjU2RQor5pWvID4gbcOtbjsgIzY1NkYKK+aVsCA+IHNow7k7ICM2NTcwCivmlbEgPiDDoWk7ICM2NTcxCivmlbIgPiBxacSBbzsgIzY1NzIKK+aVsyA+IMOhaTsgIzY1NzMKK+aVtCA+IHpoxJVuZzsgIzY1NzQKK+aVtSA+IGTDrTsgIzY1NzUKK+aVtiA+IHpow6huOyAjNjU3Ngor5pW3ID4gZsWrOyAjNjU3Nwor5pW4ID4gc2jDuTsgIzY1NzgKK+aVuSA+IGxpw6FvOyAjNjU3OQor5pW6ID4gccWrOyAjNjU3QQor5pW7ID4geMOsb25nOyAjNjU3Qgor5pW8ID4geMStOyAjNjU3Qwor5pW9ID4gamnEg287ICM2NTdECivmlb8gPiBqacSDbzsgIzY1N0YKK+aWgCA+IHpow7pvOyAjNjU4MAor5paBID4gecOsOyAjNjU4MQor5paCID4gbGnDoG47ICM2NTgyCivmloMgPiBiw6w7ICM2NTgzCivmloQgPiBsw6w7ICM2NTg0CivmloUgPiB4acOgbzsgIzY1ODUKK+aWhiA+IHhpw6BvOyAjNjU4Ngor5paHID4gd8OpbjsgIzY1ODcKK+aWiCA+IHh1w6k7ICM2NTg4CivmlokgPiBxw607ICM2NTg5CivmloogPiBxw607ICM2NThBCivmlosgPiB6aMSBaTsgIzY1OEIKK+aWjCA+IGLEq247ICM2NThDCivmlo0gPiBqdcOpOyAjNjU4RAor5paOID4gemjEgWk7ICM2NThFCivmlpAgPiBmxJVpOyAjNjU5MAor5paRID4gYsSBbjsgIzY1OTEKK+aWkiA+IGLEgW47ICM2NTkyCivmlpMgPiBsw6FuOyAjNjU5Mwor5paUID4gecWtOyAjNjU5NAor5paVID4gbMOhbjsgIzY1OTUKK+aWliA+IHfElWk7ICM2NTk2CivmlpcgPiBkxY91OyAjNjU5Nwor5paYID4gc2jEk25nOyAjNjU5OAor5paZID4gbGnDoG87ICM2NTk5CivmlpogPiBqacSDOyAjNjU5QQor5pabID4gaMO6OyAjNjU5Qgor5pacID4geGnDqTsgIzY1OUMKK+aWnSA+IGppxIM7ICM2NTlECivmlp4gPiB5xa07ICM2NTlFCivmlp8gPiB6aMSTbjsgIzY1OUYKK+aWoCA+IGppw6BvOyAjNjVBMAor5pahID4gd8OyOyAjNjVBMQor5paiID4gdMWPdTsgIzY1QTIKK+aWoyA+IGNow7k7ICM2NUEzCivmlqQgPiBqxKtuOyAjNjVBNAor5palID4gY2jDrDsgIzY1QTUKK+aWpiA+IHnDrW47ICM2NUE2CivmlqcgPiBmxa07ICM2NUE3CivmlqggPiBxacSBbmc7ICM2NUE4CivmlqkgPiB6aMSDbjsgIzY1QTkKK+aWqiA+IHHDujsgIzY1QUEKK+aWqyA+IHpow7pvOyAjNjVBQgor5pasID4gemjEg247ICM2NUFDCivmlq0gPiBkdcOgbjsgIzY1QUQKK+aWriA+IHpow7pvOyAjNjVBRQor5pavID4gc8SrOyAjNjVBRgor5pawID4geMSrbjsgIzY1QjAKK+aWsSA+IHpow7pvOyAjNjVCMQor5payID4gemjDum87ICM2NUIyCivmlrMgPiBxw61uOyAjNjVCMwor5pa0ID4gbMOtbjsgIzY1QjQKK+aWtSA+IHpow7pvOyAjNjVCNQor5pa2ID4gY2jDuTsgIzY1QjYKK+aWtyA+IGR1w6BuOyAjNjVCNwor5pa4ID4gemjFrTsgIzY1QjgKK+aWuSA+IGbEgW5nOyAjNjVCOQor5pa6ID4geGnDqDsgIzY1QkEKK+aWuyA+IGjDoW5nOyAjNjVCQgor5pa8ID4gecO6OyAjNjVCQwor5pa9ID4gc2jEqzsgIzY1QkQKK+aWviA+IHDDqGk7ICM2NUJFCivmlr8gPiB5w7N1OyAjNjVCRgor5peBID4gcMOhbmc7ICM2NUMxCivml4IgPiBxw607ICM2NUMyCivml4MgPiB6aMSBbjsgIzY1QzMKK+aXhCA+IG3DoW87ICM2NUM0Civml4UgPiBsx5o7ICM2NUM1Civml4YgPiBww6hpOyAjNjVDNgor5peHID4gcMSrOyAjNjVDNwor5peIID4gbMOtdTsgIzY1QzgKK+aXiSA+IGbFqzsgIzY1QzkKK+aXiiA+IGbEg25nOyAjNjVDQQor5peLID4geHXDoW47ICM2NUNCCivml4wgPiBqxKtuZzsgIzY1Q0MKK+aXjSA+IGrEq25nOyAjNjVDRAor5peOID4gbsStOyAjNjVDRQor5pePID4gesO6OyAjNjVDRgor5peQID4gemjDoG87ICM2NUQwCivml5EgPiB5xK07ICM2NUQxCivml5IgPiBsw611OyAjNjVEMgor5peTID4gc2jEgW87ICM2NUQzCivml5QgPiBqacOgbjsgIzY1RDQKK+aXliA+IHnErTsgIzY1RDYKK+aXlyA+IHHDrTsgIzY1RDcKK+aXmCA+IHpow6w7ICM2NUQ4Civml5kgPiBmxIFuOyAjNjVEOQor5peaID4gcGnEgW87ICM2NURBCivml5sgPiBmxIFuOyAjNjVEQgor5pecID4gemjEgW47ICM2NURDCivml50gPiBndcOgaTsgIzY1REQKK+aXniA+IHPDuWk7ICM2NURFCivml58gPiB5w7o7ICM2NURGCivml6AgPiB3w7o7ICM2NUUwCivml6EgPiBqw6w7ICM2NUUxCivml6IgPiBqw6w7ICM2NUUyCivml6MgPiBqw6w7ICM2NUUzCivml6QgPiBow7lvOyAjNjVFNAor5pelID4gcsOsOyAjNjVFNQor5pemID4gZMOgbjsgIzY1RTYKK+aXpyA+IGrDrHU7ICM2NUU3Civml6ggPiB6aMStOyAjNjVFOAor5pepID4gesSDbzsgIzY1RTkKK+aXqiA+IHhpw6k7ICM2NUVBCivml6sgPiB0acSBbzsgIzY1RUIKK+aXrCA+IHjDum47ICM2NUVDCivml60gPiB4w7k7ICM2NUVECivml64gPiB4w7k7ICM2NUVFCivml68gPiB4w7k7ICM2NUVGCivml7AgPiBnw6BuOyAjNjVGMAor5pexID4gaMOgbjsgIzY1RjEKK+aXsiA+IHTDoWk7ICM2NUYyCivml7MgPiBkw6w7ICM2NUYzCivml7QgPiB4xas7ICM2NUY0Civml7UgPiBjaMSDbjsgIzY1RjUKK+aXtiA+IHNow607ICM2NUY2Civml7cgPiBrdcOgbmc7ICM2NUY3Civml7ggPiB5w6FuZzsgIzY1RjgKK+aXuSA+IHNow607ICM2NUY5Civml7ogPiB3w6BuZzsgIzY1RkEKK+aXuyA+IG3DrW47ICM2NUZCCivml7wgPiBtw61uOyAjNjVGQwor5pe9ID4gdMWrbjsgIzY1RkQKK+aXviA+IGNoxatuOyAjNjVGRQor5pe/ID4gd8WtOyAjNjVGRgor5piAID4gecO6bjsgIzY2MDAKK+aYgSA+IGLDqGk7ICM2NjAxCivmmIIgPiDDoW5nOyAjNjYwMgor5piDID4gesOoOyAjNjYwMwor5piEID4gYsSDbjsgIzY2MDQKK+aYhSA+IGppw6k7ICM2NjA1CivmmIYgPiBrxatuOyAjNjYwNgor5piHID4gc2jEk25nOyAjNjYwNwor5piIID4gaMO5OyAjNjYwOAor5piJID4gZsSDbmc7ICM2NjA5CivmmIogPiBow6BvOyAjNjYwQQor5piLID4gZ8O5aTsgIzY2MEIKK+aYjCA+IGNoxIFuZzsgIzY2MEMKK+aYjSA+IHh1xIFuOyAjNjYwRAor5piOID4gbcOtbmc7ICM2NjBFCivmmI8gPiBoxatuOyAjNjYwRgor5piQID4gZsSTbjsgIzY2MTAKK+aYkSA+IHHErW47ICM2NjExCivmmJIgPiBoxas7ICM2NjEyCivmmJMgPiB5w6w7ICM2NjEzCivmmJQgPiB4w607ICM2NjE0CivmmJUgPiB4xKtuOyAjNjYxNQor5piWID4gecOhbjsgIzY2MTYKK+aYlyA+IHrDqDsgIzY2MTcKK+aYmCA+IGbEg25nOyAjNjYxOAor5piZID4gdMOhbjsgIzY2MTkKK+aYmiA+IHNow6huOyAjNjYxQQor5pibID4gasO5OyAjNjYxQgor5picID4gecOhbmc7ICM2NjFDCivmmJ0gPiB6xINuOyAjNjYxRAor5pieID4gYsStbmc7ICM2NjFFCivmmJ8gPiB4xKtuZzsgIzY2MUYKK+aYoCA+IHnDrG5nOyAjNjYyMAor5pihID4geHXDoG47ICM2NjIxCivmmKIgPiBwxJVpOyAjNjYyMgor5pijID4gemjElW47ICM2NjIzCivmmKQgPiBsxKtuZzsgIzY2MjQKK+aYpSA+IGNoxatuOyAjNjYyNQor5pimID4gaMOgbzsgIzY2MjYKK+aYpyA+IG3DqGk7ICM2NjI3CivmmKggPiB6w7pvOyAjNjYyOAor5pipID4gbcOyOyAjNjYyOQor5piqID4gYmnDoG47ICM2NjJBCivmmKsgPiB4xa07ICM2NjJCCivmmKwgPiBoxatuOyAjNjYyQwor5pitID4gemjEgW87ICM2NjJECivmmK4gPiB6w7JuZzsgIzY2MkUKK+aYryA+IHNow6w7ICM2NjJGCivmmLAgPiBzaMOsOyAjNjYzMAor5pixID4gecO5OyAjNjYzMQor5piyID4gZsOoaTsgIzY2MzIKK+aYsyA+IGRpw6k7ICM2NjMzCivmmLQgPiBtxINvOyAjNjYzNAor5pi1ID4gbsOsOyAjNjYzNQor5pi2ID4gY2jEg25nOyAjNjYzNgor5pi3ID4gd8STbjsgIzY2MzcKK+aYuCA+IGTFjW5nOyAjNjYzOAor5pi5ID4gxINpOyAjNjYzOQor5pi6ID4gYsStbmc7ICM2NjNBCivmmLsgPiDDoW5nOyAjNjYzQgor5pi8ID4gemjDsnU7ICM2NjNDCivmmL0gPiBsw7NuZzsgIzY2M0QKK+aYviA+IHhpxINuOyAjNjYzRQor5pi/ID4ga3XDoG5nOyAjNjYzRgor5pmAID4gdGnEg287ICM2NjQwCivmmYEgPiBjaMOhbzsgIzY2NDEKK+aZgiA+IHNow607ICM2NjQyCivmmYMgPiBodcSDbmc7ICM2NjQzCivmmYQgPiBodcSDbmc7ICM2NjQ0CivmmYUgPiB4dcSBbjsgIzY2NDUKK+aZhiA+IGvDumk7ICM2NjQ2CivmmYcgPiB4xas7ICM2NjQ3CivmmYggPiBqacSDbzsgIzY2NDgKK+aZiSA+IGrDrG47ICM2NjQ5CivmmYogPiB6aMStOyAjNjY0QQor5pmLID4gasOsbjsgIzY2NEIKK+aZjCA+IHNoxINuZzsgIzY2NEMKK+aZjSA+IHTDs25nOyAjNjY0RAor5pmOID4gaMWPbmc7ICM2NjRFCivmmY8gPiB5w6BuOyAjNjY0Rgor5pmQID4gZ8SBaTsgIzY2NTAKK+aZkSA+IHhpxINuZzsgIzY2NTEKK+aZkiA+IHNow6BpOyAjNjY1Mgor5pmTID4geGnEg287ICM2NjUzCivmmZQgPiB5xJM7ICM2NjU0CivmmZUgPiB5xatuOyAjNjY1NQor5pmWID4gaMWraTsgIzY2NTYKK+aZlyA+IGjDoW47ICM2NjU3CivmmZggPiBow6BuOyAjNjY1OAor5pmZID4gasO5bjsgIzY2NTkKK+aZmiA+IHfEg247ICM2NjVBCivmmZsgPiB4acOgbjsgIzY2NUIKK+aZnCA+IGvFq247ICM2NjVDCivmmZ0gPiB6aMOydTsgIzY2NUQKK+aZniA+IHjEqzsgIzY2NUUKK+aZnyA+IGNow6luZzsgIzY2NUYKK+aZoCA+IHNow6luZzsgIzY2NjAKK+aZoSA+IGLFqzsgIzY2NjEKK+aZoiA+IHpoxJM7ICM2NjYyCivmmaMgPiB6aMSTOyAjNjY2Mwor5pmkID4gd8O5OyAjNjY2NAor5pmlID4gaMOgbjsgIzY2NjUKK+aZpiA+IGjDuWk7ICM2NjY2CivmmacgPiBow6BvOyAjNjY2Nwor5pmoID4gY2jDqW47ICM2NjY4CivmmakgPiB3xINuOyAjNjY2OQor5pmqID4gdGnEg247ICM2NjZBCivmmasgPiB6aMO6bzsgIzY2NkIKK+aZrCA+IHrDuWk7ICM2NjZDCivmma0gPiB6aMWPdTsgIzY2NkQKK+aZriA+IHDFrTsgIzY2NkUKK+aZryA+IGrErW5nOyAjNjY2Rgor5pmwID4geMSrOyAjNjY3MAor5pmxID4gc2jEg247ICM2NjcxCivmmbIgPiB5xK07ICM2NjcyCivmmbMgPiB4w6w7ICM2NjczCivmmbQgPiBxw61uZzsgIzY2NzQKK+aZtSA+IHHErTsgIzY2NzUKK+aZtiA+IGrEq25nOyAjNjY3Ngor5pm3ID4gZ8WtaTsgIzY2NzcKK+aZuCA+IHpoxJVuOyAjNjY3OAor5pm5ID4gecOsOyAjNjY3OQor5pm6ID4gemjDrDsgIzY2N0EKK+aZuyA+IMSDbjsgIzY2N0IKK+aZvCA+IHfEg247ICM2NjdDCivmmb0gPiBsw61uOyAjNjY3RAor5pm+ID4gbGnDoG5nOyAjNjY3RQor5pm/ID4gY2jEgW5nOyAjNjY3Rgor5pqAID4gd8SDbmc7ICM2NjgwCivmmoEgPiB4acSDbzsgIzY2ODEKK+aagiA+IHrDoG47ICM2NjgyCivmmoQgPiB4dcSBbjsgIzY2ODQKK+aahSA+IHh1xINuOyAjNjY4NQor5pqGID4gecOtOyAjNjY4Ngor5pqHID4geGnDoTsgIzY2ODcKK+aaiCA+IHnFq247ICM2Njg4CivmmokgPiBoxatpOyAjNjY4OQor5pqKID4gZsWtOyAjNjY4QQor5pqLID4gbcStbjsgIzY2OEIKK+aajCA+IGvDumk7ICM2NjhDCivmmo0gPiBow6g7ICM2NjhECivmmo4gPiB5w6xuZzsgIzY2OEUKK+aajyA+IGTFrTsgIzY2OEYKK+aakCA+IHfElWk7ICM2NjkwCivmmpEgPiBzaMWtOyAjNjY5MQor5pqSID4gccOtbmc7ICM2NjkyCivmmpMgPiBtw6BvOyAjNjY5Mwor5pqUID4gbsOhbjsgIzY2OTQKK+aalSA+IGppxINuOyAjNjY5NQor5pqWID4gbnXEg247ICM2Njk2CivmmpcgPiDDoG47ICM2Njk3CivmmpggPiB5w6FuZzsgIzY2OTgKK+aamSA+IGNoxatuOyAjNjY5OQor5pqaID4gecOhbzsgIzY2OUEKK+aamyA+IHPFrW87ICM2NjlCCivmmpwgPiBqw6xuOyAjNjY5Qwor5pqdID4gbcOtbmc7ICM2NjlECivmmp4gPiBqacSDbzsgIzY2OUUKK+aanyA+IGvEg2k7ICM2NjlGCivmmqAgPiBnxINvOyAjNjZBMAor5pqhID4gd8SVbmc7ICM2NkExCivmmqIgPiBjaMOgbmc7ICM2NkEyCivmmqMgPiBxw6w7ICM2NkEzCivmmqQgPiBow6BvOyAjNjZBNAor5pqlID4gecOgbjsgIzY2QTUKK+aapiA+IGzDrDsgIzY2QTYKK+aapyA+IMOgaTsgIzY2QTcKK+aaqCA+IGrDrDsgIzY2QTgKK+aaqSA+IGfDuWk7ICM2NkE5CivmmqogPiBtxJVuOyAjNjZBQQor5pqrID4gesOgbjsgIzY2QUIKK+aarCA+IHhpw6g7ICM2NkFDCivmmq0gPiBow6BvOyAjNjZBRAor5pquID4gbcO5OyAjNjZBRQor5pqvID4gbcOyOyAjNjZBRgor5pqwID4gY8WNbmc7ICM2NkIwCivmmrEgPiBuw6w7ICM2NkIxCivmmrIgPiB6aMSBbmc7ICM2NkIyCivmmrMgPiBow7lpOyAjNjZCMwor5pq0ID4gYsOgbzsgIzY2QjQKK+aatSA+IGjDoG47ICM2NkI1CivmmrYgPiB4dcOhbjsgIzY2QjYKK+aatyA+IGNodcOhbjsgIzY2QjcKK+aauCA+IGxpw6FvOyAjNjZCOAor5pq5ID4geGnEgW47ICM2NkI5CivmmrogPiBkw6BuOyAjNjZCQQor5pq7ID4gasStbmc7ICM2NkJCCivmmrwgPiBwacSTOyAjNjZCQwor5pq9ID4gbMOtbjsgIzY2QkQKK+aaviA+IHTFq247ICM2NkJFCivmmr8gPiB4xK07ICM2NkJGCivmm4AgPiB5w6w7ICM2NkMwCivmm4EgPiBqw6w7ICM2NkMxCivmm4IgPiBodcOgbmc7ICM2NkMyCivmm4MgPiB0w6BpOyAjNjZDMwor5puEID4gecOoOyAjNjZDNAor5puFID4gecOoOyAjNjZDNQor5puGID4gbMOsOyAjNjZDNgor5puHID4gdMOhbjsgIzY2QzcKK+abiCA+IHTDs25nOyAjNjZDOAor5puJID4geGnEg287ICM2NkM5Civmm4ogPiBmw6hpOyAjNjZDQQor5puLID4gccStbjsgIzY2Q0IKK+abjCA+IHpow6BvOyAjNjZDQwor5puNID4gaMOgbzsgIzY2Q0QKK+abjiA+IHnDrDsgIzY2Q0UKK+abjyA+IHhpw6BuZzsgIzY2Q0YKK+abkCA+IHjEq25nOyAjNjZEMAor5puRID4gc8STbjsgIzY2RDEKK+abkiA+IGppxINvOyAjNjZEMgor5puTID4gYsOgbzsgIzY2RDMKK+ablCA+IGrDrG5nOyAjNjZENAor5puVID4geWnDoG47ICM2NkQ1Civmm5YgPiDDoGk7ICM2NkQ2Civmm5cgPiB5w6g7ICM2NkQ3Civmm5ggPiByw7o7ICM2NkQ4Civmm5kgPiBzaMO5OyAjNjZEOQor5puaID4gbcOpbmc7ICM2NkRBCivmm5sgPiB4xatuOyAjNjZEQgor5pucID4gecOgbzsgIzY2REMKK+abnSA+IHDDuTsgIzY2REQKK+abniA+IGzDrDsgIzY2REUKK+abnyA+IGNow6luOyAjNjZERgor5pugID4ga3XDoG5nOyAjNjZFMAor5puhID4gZGnDqTsgIzY2RTEKK+aboyA+IHnDoG47ICM2NkUzCivmm6QgPiBow7lvOyAjNjZFNAor5pulID4gbMO6OyAjNjZFNQor5pumID4geMSrOyAjNjZFNgor5punID4gcsOzbmc7ICM2NkU3Civmm6ggPiBsw7NuZzsgIzY2RTgKK+abqSA+IG7Eg25nOyAjNjZFOQor5puqID4gbMWtbzsgIzY2RUEKK+abqyA+IGx1w6FuOyAjNjZFQgor5pusID4gc2jDoGk7ICM2NkVDCivmm60gPiB0xINuZzsgIzY2RUQKK+abriA+IHnEg247ICM2NkVFCivmm68gPiBjaMO6OyAjNjZFRgor5puwID4geXXEkzsgIzY2RjAKK+absSA+IHl1xJM7ICM2NkYxCivmm7IgPiBxxa07ICM2NkYyCivmm7MgPiB5w6w7ICM2NkYzCivmm7QgPiBnw6huZzsgIzY2RjQKK+abtSA+IHnDqDsgIzY2RjUKK+abtiA+IGjFqzsgIzY2RjYKK+abtyA+IGjDqTsgIzY2RjcKK+abuCA+IHNoxas7ICM2NkY4Civmm7kgPiBjw6FvOyAjNjZGOQor5pu6ID4gY8OhbzsgIzY2RkEKK+abvCA+IG3DoG47ICM2NkZDCivmm70gPiBjxJNuZzsgIzY2RkQKK+abviA+IGPDqW5nOyAjNjZGRQor5pu/ID4gdMOsOyAjNjZGRgor5pyAID4gesO5aTsgIzY3MDAKK+acgSA+IGPEg247ICM2NzAxCivmnIIgPiB4w7k7ICM2NzAyCivmnIMgPiBow7lpOyAjNjcwMwor5pyEID4gecOsbjsgIzY3MDQKK+achSA+IHFpw6g7ICM2NzA1CivmnIYgPiBmxJNuOyAjNjcwNgor5pyHID4gcMOtOyAjNjcwNwor5pyIID4geXXDqDsgIzY3MDgKK+aciSA+IHnFj3U7ICM2NzA5CivmnIogPiBydcSDbjsgIzY3MEEKK+aciyA+IHDDqW5nOyAjNjcwQgor5pyMID4gYsSBbjsgIzY3MEMKK+acjSA+IGbDujsgIzY3MEQKK+acjiA+IGzDrW5nOyAjNjcwRQor5pyPID4gZsSVaTsgIzY3MEYKK+ackCA+IHHDujsgIzY3MTAKK+ackiA+IG7HnDsgIzY3MTIKK+ackyA+IHRpw6BvOyAjNjcxMwor5pyUID4gc2jDuW87ICM2NzE0CivmnJUgPiB6aMOobjsgIzY3MTUKK+acliA+IGzEg25nOyAjNjcxNgor5pyXID4gbMSDbmc7ICM2NzE3CivmnJggPiBqdcSBbjsgIzY3MTgKK+acmSA+IG3DrW5nOyAjNjcxOQor5pyaID4gaHXEgW5nOyAjNjcxQQor5pybID4gd8Ogbmc7ICM2NzFCCivmnJwgPiB0xatuOyAjNjcxQwor5pydID4gemjEgW87ICM2NzFECivmnJ4gPiBqxKs7ICM2NzFFCivmnJ8gPiBxw607ICM2NzFGCivmnKAgPiB5xKtuZzsgIzY3MjAKK+acoSA+IHrFjW5nOyAjNjcyMQor5pyiID4gd8Ogbmc7ICM2NzIyCivmnKMgPiB0w7NuZzsgIzY3MjMKK+acpCA+IGzEg25nOyAjNjcyNAor5pymID4gbcOpbmc7ICM2NzI2CivmnKcgPiBsw7NuZzsgIzY3MjcKK+acqCA+IG3DuTsgIzY3MjgKK+acqSA+IGTElW5nOyAjNjcyOQor5pyqID4gd8OoaTsgIzY3MkEKK+acqyA+IG3DsjsgIzY3MkIKK+acrCA+IGLElW47ICM2NzJDCivmnK0gPiB6aMOhOyAjNjcyRAor5pyuID4gemjDujsgIzY3MkUKK+acryA+IHpow7o7ICM2NzJGCivmnLEgPiB6aMWrOyAjNjczMQor5pyyID4gcsOpbjsgIzY3MzIKK+acsyA+IGLEgTsgIzY3MzMKK+actCA+IHDDsjsgIzY3MzQKK+actSA+IGTFrW87ICM2NzM1CivmnLYgPiBkxa1vOyAjNjczNgor5py3ID4gZMSBbzsgIzY3MzcKK+acuCA+IGzDrDsgIzY3MzgKK+acuSA+IHHDrXU7ICM2NzM5CivmnLogPiBqxKs7ICM2NzNBCivmnLsgPiBqxKt1OyAjNjczQgor5py8ID4gYsStOyAjNjczQwor5py9ID4geMStdTsgIzY3M0QKK+acviA+IHTDrW5nOyAjNjczRQor5py/ID4gY8OsOyAjNjczRgor5p2AID4gc2jEgTsgIzY3NDAKK+adgiA+IHrDoTsgIzY3NDIKK+adgyA+IHF1w6FuOyAjNjc0Mwor5p2EID4gcWnEgW47ICM2NzQ0CivmnYUgPiB5w7o7ICM2NzQ1CivmnYYgPiBnxIFuOyAjNjc0Ngor5p2HID4gd8WrOyAjNjc0Nwor5p2IID4gY2jEgTsgIzY3NDgKK+adiSA+IHNoxIFuOyAjNjc0OQor5p2KID4geMO6bjsgIzY3NEEKK+adiyA+IGbEgW47ICM2NzRCCivmnYwgPiB3w7k7ICM2NzRDCivmnY0gPiB6xK07ICM2NzRECivmnY4gPiBsxK07ICM2NzRFCivmnY8gPiB4w6xuZzsgIzY3NEYKK+adkCA+IGPDoWk7ICM2NzUwCivmnZEgPiBjxatuOyAjNjc1MQor5p2SID4gcsOobjsgIzY3NTIKK+adkyA+IHNow6FvOyAjNjc1Mwor5p2UID4gdMWrbzsgIzY3NTQKK+adlSA+IGTDrDsgIzY3NTUKK+adliA+IHpow6BuZzsgIzY3NTYKK+adlyA+IG3DoW5nOyAjNjc1Nwor5p2YID4gY2jDrDsgIzY3NTgKK+admSA+IHnDrDsgIzY3NTkKK+admiA+IGfFrTsgIzY3NUEKK+admyA+IGfFjW5nOyAjNjc1Qgor5p2cID4gZMO5OyAjNjc1Qwor5p2dID4gecOtOyAjNjc1RAor5p2eID4gccStOyAjNjc1RQor5p2fID4gc2jDuTsgIzY3NUYKK+adoCA+IGfEgW5nOyAjNjc2MAor5p2hID4gdGnDoW87ICM2NzYxCivmnaUgPiBsw6FpOyAjNjc2NQor5p2nID4gbcOhbmc7ICM2NzY3CivmnaggPiB5w6FuZzsgIzY3NjgKK+adqSA+IG3DoDsgIzY3NjkKK+adqiA+IG1pxINvOyAjNjc2QQor5p2rID4gc8OsOyAjNjc2Qgor5p2sID4geXXDoW47ICM2NzZDCivmna0gPiBow6FuZzsgIzY3NkQKK+adriA+IGbDqGk7ICM2NzZFCivmna8gPiBixJNpOyAjNjc2Rgor5p2wID4gamnDqTsgIzY3NzAKK+adsSA+IGTFjW5nOyAjNjc3MQor5p2yID4gZ8SDbzsgIzY3NzIKK+adsyA+IHnEg287ICM2NzczCivmnbQgPiB4acSBbjsgIzY3NzQKK+adtSA+IGNoxa07ICM2Nzc1CivmnbYgPiBxxatuOyAjNjc3Ngor5p23ID4gcMOhOyAjNjc3Nwor5p24ID4gc2jFqzsgIzY3NzgKK+aduSA+IGh1w6A7ICM2Nzc5CivmnbogPiB4xKtuOyAjNjc3QQor5p27ID4gY2jFj3U7ICM2NzdCCivmnbwgPiB6aMO5OyAjNjc3Qwor5p29ID4gY2jFj3U7ICM2NzdECivmnb4gPiBzxY1uZzsgIzY3N0UKK+advyA+IGLEg247ICM2NzdGCivmnoAgPiBzxY1uZzsgIzY3ODAKK+aegSA+IGrDrTsgIzY3ODEKK+aegiA+IHl1w6g7ICM2NzgyCivmnoMgPiBqw6xuOyAjNjc4Mwor5p6EID4gZ8WNdTsgIzY3ODQKK+aehSA+IGrEqzsgIzY3ODUKK+aehiA+IG3DoW87ICM2Nzg2CivmnocgPiBww607ICM2Nzg3CivmnoggPiBiw6w7ICM2Nzg4CivmnokgPiB3xINuZzsgIzY3ODkKK+aeiiA+IMOgbmc7ICM2NzhBCivmnosgPiBmxIFuZzsgIzY3OEIKK+aejCA+IGbDqW47ICM2NzhDCivmno0gPiB5w6w7ICM2NzhECivmno4gPiBmw7o7ICM2NzhFCivmno8gPiBuw6FuOyAjNjc4Rgor5p6QID4geMSrOyAjNjc5MAor5p6RID4gaMO5OyAjNjc5MQor5p6SID4gecOhOyAjNjc5Mgor5p6TID4gZMWPdTsgIzY3OTMKK+aelCA+IHjDum47ICM2Nzk0CivmnpUgPiB6aMSVbjsgIzY3OTUKK+aeliA+IHnEgW87ICM2Nzk2CivmnpcgPiBsw61uOyAjNjc5Nwor5p6YID4gcsO5aTsgIzY3OTgKK+aemSA+IMOpOyAjNjc5OQor5p6aID4gbcOpaTsgIzY3OUEKK+aemyA+IHpow6BvOyAjNjc5Qgor5p6cID4gZ8WtbzsgIzY3OUMKK+aenSA+IHpoxKs7ICM2NzlECivmnp4gPiBjxY1uZzsgIzY3OUUKK+aenyA+IHnDuW47ICM2NzlGCivmnqEgPiBkxY91OyAjNjdBMQor5p6iID4gc2jFqzsgIzY3QTIKK+aeoyA+IHrEg287ICM2N0EzCivmnqUgPiBsw6w7ICM2N0E1CivmnqcgPiBqacOgbjsgIzY3QTcKK+aeqCA+IGNow6luZzsgIzY3QTgKK+aeqiA+IHFpxIFuZzsgIzY3QUEKK+aeqyA+IGbEk25nOyAjNjdBQgor5p6sID4gbsOhbjsgIzY3QUMKK+aerSA+IHhpxIFvOyAjNjdBRAor5p6uID4geGnEgW47ICM2N0FFCivmnq8gPiBrxas7ICM2N0FGCivmnrAgPiBww61uZzsgIzY3QjAKK+aesSA+IHnDrTsgIzY3QjEKK+aesiA+IHjErTsgIzY3QjIKK+aesyA+IHpoxKs7ICM2N0IzCivmnrQgPiBndcSDaTsgIzY3QjQKK+aetSA+IHhpxIFvOyAjNjdCNQor5p62ID4gamnDoDsgIzY3QjYKK+aetyA+IGppxIE7ICM2N0I3CivmnrggPiBnxY91OyAjNjdCOAor5p65ID4gZsWrOyAjNjdCOQor5p66ID4gbcOyOyAjNjdCQQor5p67ID4gecOsOyAjNjdCQgor5p68ID4gecOoOyAjNjdCQwor5p69ID4gecOoOyAjNjdCRAor5p6+ID4gc2jDrDsgIzY3QkUKK+aevyA+IG5pw6g7ICM2N0JGCivmn4AgPiBixK07ICM2N0MwCivmn4EgPiBkw7lvOyAjNjdDMQor5p+CID4gecOtOyAjNjdDMgor5p+DID4gbMOtbmc7ICM2N0MzCivmn4QgPiBixK1uZzsgIzY3QzQKK+afhSA+IG7ErTsgIzY3QzUKK+afhiA+IGzEgTsgIzY3QzYKK+afhyA+IGjDqTsgIzY3QzcKK+afiCA+IHDDoW47ICM2N0M4Civmn4kgPiBmw6FuOyAjNjdDOQor5p+KID4gemjFjW5nOyAjNjdDQQor5p+LID4gZMOgaTsgIzY3Q0IKK+afjCA+IGPDrTsgIzY3Q0MKK+afjSA+IHnEgW5nOyAjNjdDRAor5p+OID4gZsWrOyAjNjdDRQor5p+PID4gYsOzOyAjNjdDRgor5p+QID4gbcWPdTsgIzY3RDAKK+afkSA+IGfEgW47ICM2N0QxCivmn5IgPiBxxKs7ICM2N0QyCivmn5MgPiByxINuOyAjNjdEMwor5p+UID4gcsOzdTsgIzY3RDQKK+aflSA+IG3DoG87ICM2N0Q1Civmn5YgPiB6aMSBbzsgIzY3RDYKK+aflyA+IHPFjW5nOyAjNjdENwor5p+YID4gemjDqDsgIzY3RDgKK+afmSA+IHhpw6E7ICM2N0Q5Civmn5ogPiB5w7J1OyAjNjdEQQor5p+bID4gc2jEk247ICM2N0RCCivmn5wgPiBqxa07ICM2N0RDCivmn50gPiB0w7lvOyAjNjdERAor5p+eID4gesO5bzsgIzY3REUKK+afnyA+IG7DoW47ICM2N0RGCivmn6AgPiBuw61uZzsgIzY3RTAKK+afoSA+IHnFj25nOyAjNjdFMQor5p+iID4gZMStOyAjNjdFMgor5p+jID4gemjDrTsgIzY3RTMKK+afpCA+IHpoxIE7ICM2N0U0Civmn6UgPiBjaMOhOyAjNjdFNQor5p+mID4gZMOgbjsgIzY3RTYKK+afpyA+IGfFqzsgIzY3RTcKK+afqCA+IHB1OyAjNjdFOAor5p+pID4gasOsdTsgIzY3RTkKK+afqiA+IMSBbzsgIzY3RUEKK+afqyA+IGbDujsgIzY3RUIKK+afrCA+IGppxINuOyAjNjdFQwor5p+tID4gYsWNOyAjNjdFRAor5p+uID4gZMO5bzsgIzY3RUUKK+afryA+IGvEkzsgIzY3RUYKK+afsCA+IG7DoGk7ICM2N0YwCivmn7EgPiB6aMO5OyAjNjdGMQor5p+yID4gYsOsOyAjNjdGMgor5p+zID4gbMStdTsgIzY3RjMKK+aftCA+IGNow6FpOyAjNjdGNAor5p+1ID4gemjDoDsgIzY3RjUKK+aftiA+IHPDrDsgIzY3RjYKK+aftyA+IHpow7k7ICM2N0Y3Civmn7ggPiBwxJNpOyAjNjdGOAor5p+5ID4gc2jDrDsgIzY3RjkKK+afuiA+IGd1xINpOyAjNjdGQQor5p+7ID4gY2jDoTsgIzY3RkIKK+afvCA+IHnEg287ICM2N0ZDCivmn70gPiBqdcOpOyAjNjdGRAor5p++ID4gasOsdTsgIzY3RkUKK+afvyA+IHNow6w7ICM2N0ZGCivmoIAgPiB6aMSrOyAjNjgwMAor5qCBID4gbMStdTsgIzY4MDEKK+aggiA+IG3DqWk7ICM2ODAyCivmoIQgPiByw7NuZzsgIzY4MDQKK+aghSA+IHpow6A7ICM2ODA1CivmoIcgPiBiacSBbzsgIzY4MDcKK+agiCA+IHpow6BuOyAjNjgwOAor5qCJID4gamnDqTsgIzY4MDkKK+agiiA+IGzDs25nOyAjNjgwQQor5qCLID4gZMOybmc7ICM2ODBCCivmoIwgPiBsw7o7ICM2ODBDCivmoI4gPiBsw6w7ICM2ODBFCivmoI8gPiBsw6FuOyAjNjgwRgor5qCQID4gecWPbmc7ICM2ODEwCivmoJEgPiBzaMO5OyAjNjgxMQor5qCSID4geMO6bjsgIzY4MTIKK+agkyA+IHNodcSBbjsgIzY4MTMKK+aglCA+IHHDrDsgIzY4MTQKK+aglSA+IHpoxJNuOyAjNjgxNQor5qCWID4gccSrOyAjNjgxNgor5qCXID4gbMOsOyAjNjgxNwor5qCYID4gecStOyAjNjgxOAor5qCZID4geGnDoW5nOyAjNjgxOQor5qCaID4gemjDqG47ICM2ODFBCivmoJsgPiBsw6w7ICM2ODFCCivmoJwgPiBzw7k7ICM2ODFDCivmoJ0gPiBndcSBOyAjNjgxRAor5qCeID4ga8SBbjsgIzY4MUUKK+agnyA+IGLEq25nOyAjNjgxRgor5qCgID4gcsSVbjsgIzY4MjAKK+agoSA+IHhpw6BvOyAjNjgyMQor5qCiID4gYsOzOyAjNjgyMgor5qCjID4gcsSVbjsgIzY4MjMKK+agpCA+IGLDrG5nOyAjNjgyNAor5qClID4gesSrOyAjNjgyNQor5qCmID4gY2jDs3U7ICM2ODI2CivmoKcgPiB5w6w7ICM2ODI3CivmoKggPiBqacOpOyAjNjgyOAor5qCpID4geMWtOyAjNjgyOQor5qCqID4gemjFqzsgIzY4MkEKK+agqyA+IGppw6BuOyAjNjgyQgor5qCsID4gesO5aTsgIzY4MkMKK+agrSA+IMOpcjsgIzY4MkQKK+agriA+IMSVcjsgIzY4MkUKK+agryA+IHnFj3U7ICM2ODJGCivmoLAgPiBmw6E7ICM2ODMwCivmoLEgPiBnxY9uZzsgIzY4MzEKK+agsiA+IGvEg287ICM2ODMyCivmoLMgPiBsxINvOyAjNjgzMwor5qC0ID4gemjEgW47ICM2ODM0CivmoLUgPiBsw6w7ICM2ODM1CivmoLYgPiB5aW47ICM2ODM2CivmoLcgPiB5w6FuZzsgIzY4MzcKK+aguCA+IGjDqTsgIzY4MzgKK+aguSA+IGfEk247ICM2ODM5CivmoLogPiB6aMStOyAjNjgzQQor5qC7ID4gY2jDrDsgIzY4M0IKK+agvCA+IGfDqTsgIzY4M0MKK+agvSA+IHrEgWk7ICM2ODNECivmoL4gPiBsdcOhbjsgIzY4M0UKK+agvyA+IGbDujsgIzY4M0YKK+ahgCA+IGppw6k7ICM2ODQwCivmoYEgPiBow6FuZzsgIzY4NDEKK+ahgiA+IGfDuWk7ICM2ODQyCivmoYMgPiB0w6FvOyAjNjg0Mwor5qGEID4gZ3XDoG5nOyAjNjg0NAor5qGFID4gd8OpaTsgIzY4NDUKK+ahhiA+IGt1w6BuZzsgIzY4NDYKK+ahhyA+IHLDujsgIzY4NDcKK+ahiCA+IMOgbjsgIzY4NDgKK+ahiSA+IMOgbjsgIzY4NDkKK+ahiiA+IGp1w6BuOyAjNjg0QQor5qGLID4gecOtOyAjNjg0Qgor5qGMID4gemjFq287ICM2ODRDCivmoY0gPiBrxas7ICM2ODRECivmoY4gPiB6aMOtOyAjNjg0RQor5qGPID4gccOtb25nOyAjNjg0Rgor5qGQID4gdMOzbmc7ICM2ODUwCivmoZEgPiBzxIFuZzsgIzY4NTEKK+ahkiA+IHPEgW5nOyAjNjg1Mgor5qGTID4gaHXDoW47ICM2ODUzCivmoZQgPiBqacOpOyAjNjg1NAor5qGVID4gasOsdTsgIzY4NTUKK+ahliA+IHh1w6g7ICM2ODU2CivmoZcgPiBkw7lvOyAjNjg1Nwor5qGYID4gemjDuWk7ICM2ODU4CivmoZkgPiB5w7o7ICM2ODU5CivmoZogPiB6xINuOyAjNjg1QQor5qGcID4gecSrbmc7ICM2ODVDCivmoZ8gPiB6aMOgbjsgIzY4NUYKK+ahoCA+IHnDoTsgIzY4NjAKK+ahoSA+IG7DoW87ICM2ODYxCivmoaIgPiB6aMSTbjsgIzY4NjIKK+ahoyA+IGTEg25nOyAjNjg2Mwor5qGkID4gccSrOyAjNjg2NAor5qGlID4gcWnDoW87ICM2ODY1CivmoaYgPiBodcOgOyAjNjg2Ngor5qGnID4ga3XDoGk7ICM2ODY3CivmoaggPiBqacSDbmc7ICM2ODY4CivmoakgPiB6aHXEgW5nOyAjNjg2OQor5qGqID4geMO6bjsgIzY4NkEKK+ahqyA+IHPFq287ICM2ODZCCivmoawgPiBzaMSBOyAjNjg2Qwor5qGtID4gemjEk247ICM2ODZECivmoa4gPiBixJNpOyAjNjg2RQor5qGvID4gdMSrbmc7ICM2ODZGCivmobAgPiBndcSBOyAjNjg3MAor5qGxID4gasOsbmc7ICM2ODcxCivmobIgPiBiw7M7ICM2ODcyCivmobMgPiBiw6huOyAjNjg3Mwor5qG0ID4gZsO6OyAjNjg3NAor5qG1ID4gcsWtaTsgIzY4NzUKK+ahtiA+IHTFj25nOyAjNjg3Ngor5qG3ID4ganXDqTsgIzY4NzcKK+ahuCA+IHjEqzsgIzY4NzgKK+ahuSA+IGzDoW5nOyAjNjg3OQor5qG6ID4gbMStdTsgIzY4N0EKK+ahuyA+IGbEk25nOyAjNjg3Qgor5qG8ID4gccSrOyAjNjg3Qwor5qG9ID4gd8SVbjsgIzY4N0QKK+ahviA+IGrFq247ICM2ODdFCivmob8gPiBnxINuOyAjNjg3Rgor5qKAID4gY8O5OyAjNjg4MAor5qKBID4gbGnDoW5nOyAjNjg4MQor5qKCID4gccOtdTsgIzY4ODIKK+aigyA+IHTErW5nOyAjNjg4Mwor5qKEID4gecWPdTsgIzY4ODQKK+aihSA+IG3DqWk7ICM2ODg1CivmooYgPiBixIFuZzsgIzY4ODYKK+aihyA+IGzDsm5nOyAjNjg4Nwor5qKIID4gcMSTbmc7ICM2ODg4CivmookgPiB6aHXEgW5nOyAjNjg4OQor5qKKID4gZMOsOyAjNjg4QQor5qKLID4geHXEgW47ICM2ODhCCivmoowgPiB0w7o7ICM2ODhDCivmoo0gPiB6w6BvOyAjNjg4RAor5qKOID4gxIFvOyAjNjg4RQor5qKPID4gZ8O5OyAjNjg4Rgor5qKQID4gYsOsOyAjNjg5MAor5qKRID4gZMOtOyAjNjg5MQor5qKSID4gaMOhbjsgIzY4OTIKK+aikyA+IHrErTsgIzY4OTMKK+ailCA+IHpoxKs7ICM2ODk0CivmopUgPiByw6huOyAjNjg5NQor5qKWID4gYsOoaTsgIzY4OTYKK+ailyA+IGfElW5nOyAjNjg5Nwor5qKYID4gamnDoG47ICM2ODk4CivmopkgPiBodcOgbjsgIzY4OTkKK+aimiA+IHfEg247ICM2ODlBCivmopsgPiBuw7pvOyAjNjg5Qgor5qKcID4gamnDoTsgIzY4OUMKK+ainSA+IHRpw6FvOyAjNjg5RAor5qKeID4gasOsOyAjNjg5RQor5qKfID4geGnEgW87ICM2ODlGCivmoqAgPiBsx5o7ICM2OEEwCivmoqEgPiBodcOhbjsgIzY4QTEKK+aioiA+IHNoxIFvOyAjNjhBMgor5qKjID4gY8OpbjsgIzY4QTMKK+aipCA+IGbDqW47ICM2OEE0CivmoqUgPiBzxY1uZzsgIzY4QTUKK+aipiA+IG3DqG5nOyAjNjhBNgor5qKnID4gd8O6OyAjNjhBNwor5qKoID4gbMOtOyAjNjhBOAor5qKpID4gbMOtOyAjNjhBOQor5qKqID4gZMOydTsgIzY4QUEKK+aiqyA+IGPEk247ICM2OEFCCivmoqwgPiB5xK1uZzsgIzY4QUMKK+airSA+IHPFq287ICM2OEFECivmoq4gPiBqw7o7ICM2OEFFCivmoq8gPiB0xKs7ICM2OEFGCivmorAgPiBqacOoOyAjNjhCMAor5qKxID4ga8WtbjsgIzY4QjEKK+aisiA+IHpow7pvOyAjNjhCMgor5qKzID4gc2jFqzsgIzY4QjMKK+aitCA+IGNoxIFuOyAjNjhCNAor5qK1ID4gZsOgbjsgIzY4QjUKK+aitiA+IHfElWk7ICM2OEI2CivmorcgPiBqw6xuZzsgIzY4QjcKK+aiuCA+IGzDrTsgIzY4QjgKK+aiuSA+IGLEq25nOyAjNjhCOQor5qK8ID4gdMOhbzsgIzY4QkMKK+aivSA+IHpow6w7ICM2OEJECivmor4gPiBsw6FpOyAjNjhCRQor5qK/ID4gbGnDoW47ICM2OEJGCivmo4AgPiBqacSDbjsgIzY4QzAKK+ajgSA+IHpow7pvOyAjNjhDMQor5qOCID4gbMOtbmc7ICM2OEMyCivmo4MgPiBsw607ICM2OEMzCivmo4QgPiBxw6w7ICM2OEM0Civmo4UgPiBiw6xuZzsgIzY4QzUKK+ajhiA+IHpoxatuOyAjNjhDNgor5qOHID4gY8WNbmc7ICM2OEM3Civmo4ggPiBxacOgbjsgIzY4QzgKK+ajiSA+IG1pw6FuOyAjNjhDOQor5qOKID4gccOtOyAjNjhDQQor5qOLID4gccOtOyAjNjhDQgor5qOMID4gY8SDaTsgIzY4Q0MKK+ajjSA+IGfDuW47ICM2OENECivmo44gPiBjaMOhbjsgIzY4Q0UKK+ajjyA+IHTDqDsgIzY4Q0YKK+ajkCA+IGbElWk7ICM2OEQwCivmo5EgPiBww6FpOyAjNjhEMQor5qOSID4gYsOgbmc7ICM2OEQyCivmo5MgPiBwxY91OyAjNjhEMwor5qOUID4gaMWrbjsgIzY4RDQKK+ajlSA+IHrFjW5nOyAjNjhENQor5qOWID4gY2jDqW5nOyAjNjhENgor5qOXID4gesSDbzsgIzY4RDcKK+ajmCA+IGrDrTsgIzY4RDgKK+ajmSA+IGzDrDsgIzY4RDkKK+ajmiA+IHDDqW5nOyAjNjhEQQor5qObID4gecO5OyAjNjhEQgor5qOcID4gecO5OyAjNjhEQwor5qOdID4gZ8O5OyAjNjhERAor5qOeID4gaMO6bjsgIzY4REUKK+ajnyA+IGTDsm5nOyAjNjhERgor5qOgID4gdMOhbmc7ICM2OEUwCivmo6EgPiBnxIFuZzsgIzY4RTEKK+ajoiA+IHfEg25nOyAjNjhFMgor5qOjID4gZMOsOyAjNjhFMwor5qOkID4geMOtOyAjNjhFNAor5qOlID4gZsOhbjsgIzY4RTUKK+ajpiA+IGNoxJNuZzsgIzY4RTYKK+ajpyA+IHpow6BuOyAjNjhFNwor5qOoID4gccStOyAjNjhFOAor5qOpID4geXXEgW47ICM2OEU5Civmo6ogPiB5xINuOyAjNjhFQQor5qOrID4gecO5OyAjNjhFQgor5qOsID4gcXXEgW47ICM2OEVDCivmo60gPiB5w6w7ICM2OEVECivmo64gPiBzxJNuOyAjNjhFRQor5qOvID4gcsSVbjsgIzY4RUYKK+ajsCA+IGNow7ppOyAjNjhGMAor5qOxID4gbMOpbmc7ICM2OEYxCivmo7IgPiBxxKs7ICM2OEYyCivmo7MgPiB6aMO6bzsgIzY4RjMKK+ajtCA+IGbDujsgIzY4RjQKK+ajtSA+IGvEkzsgIzY4RjUKK+ajtiA+IGzDoWk7ICM2OEY2Civmo7cgPiB6xY11OyAjNjhGNwor5qO4ID4gesWNdTsgIzY4RjgKK+ajuSA+IHpoxatvOyAjNjhGOQor5qO6ID4gZ3XEgW47ICM2OEZBCivmo7sgPiBmw6luOyAjNjhGQgor5qO8ID4gZsOpbjsgIzY4RkMKK+ajvSA+IGNoxJNuOyAjNjhGRAor5qO+ID4gccOtb25nOyAjNjhGRQor5qO/ID4gbmnDqDsgIzY4RkYKK+akgCA+IHfEg247ICM2OTAwCivmpIEgPiBnxa1vOyAjNjkwMQor5qSCID4gbMO5OyAjNjkwMgor5qSDID4gaMOhbzsgIzY5MDMKK+akhCA+IGppxJM7ICM2OTA0CivmpIUgPiB5xK07ICM2OTA1CivmpIYgPiBjaMOzdTsgIzY5MDYKK+akhyA+IGrFrTsgIzY5MDcKK+akiCA+IGrDujsgIzY5MDgKK+akiSA+IGNow6luZzsgIzY5MDkKK+akiiA+IHrDum87ICM2OTBBCivmpIsgPiBsacOhbmc7ICM2OTBCCivmpIwgPiBxacSBbmc7ICM2OTBDCivmpI0gPiB6aMOtOyAjNjkwRAor5qSOID4gemjFq2k7ICM2OTBFCivmpI8gPiB5xIE7ICM2OTBGCivmpJAgPiBqxas7ICM2OTEwCivmpJEgPiBixJNpOyAjNjkxMQor5qSSID4gamnEgW87ICM2OTEyCivmpJMgPiB6aMO6bzsgIzY5MTMKK+aklCA+IHrEqzsgIzY5MTQKK+aklSA+IGLEq247ICM2OTE1CivmpJYgPiBww6luZzsgIzY5MTYKK+aklyA+IGTDrG5nOyAjNjkxNwor5qSYID4gY2jFrTsgIzY5MTgKK+aknCA+IGppxINuOyAjNjkxQwor5qSdID4gZ8WraTsgIzY5MUQKK+akniA+IHjDrDsgIzY5MUUKK+aknyA+IGTDujsgIzY5MUYKK+akoCA+IHFpw6BuOyAjNjkyMAor5qSkID4gbMO6bzsgIzY5MjQKK+akpSA+IHpoxKs7ICM2OTI1CivmpKogPiBww6huZzsgIzY5MkEKK+akqyA+IHpoxINuOyAjNjkyQgor5qStID4gdMWtbzsgIzY5MkQKK+akriA+IHPEk247ICM2OTJFCivmpK8gPiBkw7pvOyAjNjkyRgor5qSwID4gecOpOyAjNjkzMAor5qSxID4gZsOydTsgIzY5MzEKK+aksiA+IHfElWk7ICM2OTMyCivmpLMgPiB3xJNpOyAjNjkzMwor5qS0ID4gZHXDoG47ICM2OTM0CivmpLUgPiBqacSDOyAjNjkzNQor5qS2ID4gesWNbmc7ICM2OTM2CivmpLcgPiBqacSBbjsgIzY5MzcKK+akuCA+IHnDrTsgIzY5MzgKK+akuSA+IHNow6huOyAjNjkzOQor5qS6ID4geMOtOyAjNjkzQQor5qS7ID4gecOgbjsgIzY5M0IKK+akvCA+IHnEg247ICM2OTNDCivmpL0gPiBjaHXDoW47ICM2OTNECivmpL4gPiB6aMOgbjsgIzY5M0UKK+akvyA+IGNoxatuOyAjNjkzRgor5qWAID4gecWtOyAjNjk0MAor5qWBID4gaMOpOyAjNjk0MQor5qWCID4gemjEgTsgIzY5NDIKK+algyA+IHfDsjsgIzY5NDMKK+alhCA+IHBpw6FuOyAjNjk0NAor5qWFID4gYsOsOyAjNjk0NQor5qWGID4gecSBbzsgIzY5NDYKK+alhyA+IGjDuW87ICM2OTQ3CivmpYggPiB4xas7ICM2OTQ4CivmpYkgPiByw7lvOyAjNjk0OQor5qWKID4gecOhbmc7ICM2OTRBCivmpYsgPiBsw6A7ICM2OTRCCivmpYwgPiB5w6FuOyAjNjk0Qwor5qWNID4gYsSVbjsgIzY5NEQKK+aljiA+IGjDum47ICM2OTRFCivmpY8gPiBrw7ppOyAjNjk0Rgor5qWQID4gamnDqDsgIzY5NTAKK+alkSA+IGvDumk7ICM2OTUxCivmpZIgPiBzxKs7ICM2OTUyCivmpZMgPiBmxJNuZzsgIzY5NTMKK+allCA+IHhpw6g7ICM2OTU0CivmpZUgPiB0xa1vOyAjNjk1NQor5qWWID4gemjDrDsgIzY5NTYKK+allyA+IGppw6BuOyAjNjk1Nwor5qWYID4gbcO5OyAjNjk1OAor5qWZID4gbcOgbzsgIzY5NTkKK+almiA+IGNoxa07ICM2OTVBCivmpZsgPiBow7k7ICM2OTVCCivmpZwgPiBow7o7ICM2OTVDCivmpZ0gPiBsacOgbjsgIzY5NUQKK+alniA+IGzDqW5nOyAjNjk1RQor5qWfID4gdMOtbmc7ICM2OTVGCivmpaAgPiBuw6FuOyAjNjk2MAor5qWhID4gecO6OyAjNjk2MQor5qWiID4gecOzdTsgIzY5NjIKK+aloyA+IG3DqWk7ICM2OTYzCivmpaQgPiBzxY9uZzsgIzY5NjQKK+alpSA+IHh1w6BuOyAjNjk2NQor5qWmID4geHXDoG47ICM2OTY2CivmpacgPiB5xKtuZzsgIzY5NjcKK+alqCA+IHpoxJNuOyAjNjk2OAor5qWpID4gcGnDoW47ICM2OTY5CivmpaogPiB5w6g7ICM2OTZBCivmpasgPiBqw607ICM2OTZCCivmpawgPiBqacOpOyAjNjk2Qwor5qWtID4gecOoOyAjNjk2RAor5qWuID4gY2jFrTsgIzY5NkUKK+alryA+IHNoxa1uOyAjNjk2Rgor5qWwID4gecO6OyAjNjk3MAor5qWxID4gY8OydTsgIzY5NzEKK+alsiA+IHfEk2k7ICM2OTcyCivmpbMgPiBtw6lpOyAjNjk3Mwor5qW0ID4gZMOsOyAjNjk3NAor5qW1ID4gasOtOyAjNjk3NQor5qW2ID4gamnDqTsgIzY5NzYKK+altyA+IGvEg2k7ICM2OTc3CivmpbggPiBxxKt1OyAjNjk3OAor5qW5ID4gecOtbmc7ICM2OTc5CivmpbogPiByw7N1OyAjNjk3QQor5qW7ID4gaMOpbmc7ICM2OTdCCivmpbwgPiBsw7N1OyAjNjk3Qwor5qW9ID4gbMOoOyAjNjk3RAor5qaAID4gcMStbjsgIzY5ODAKK+amgiA+IGfDoGk7ICM2OTgyCivmpoMgPiB0w6FuOyAjNjk4Mwor5qaEID4gbMSDbjsgIzY5ODQKK+amhSA+IHnDum47ICM2OTg1CivmpoYgPiB5w7o7ICM2OTg2CivmpocgPiBjaMOobjsgIzY5ODcKK+amiCA+IGzHmDsgIzY5ODgKK+amiSA+IGrFrTsgIzY5ODkKK+amjSA+IHhpw6g7ICM2OThECivmpo4gPiBqacSDOyAjNjk4RQor5qaPID4gecOsOyAjNjk4Rgor5qaQID4gemjEg247ICM2OTkwCivmppEgPiBmw7k7ICM2OTkxCivmppIgPiBuw6BpOyAjNjk5Mgor5qaTID4gbcOsOyAjNjk5Mwor5qaUID4gbMOhbmc7ICM2OTk0CivmppUgPiByw7NuZzsgIzY5OTUKK+amliA+IGfFrTsgIzY5OTYKK+amlyA+IGppw6BuOyAjNjk5Nwor5qaYID4gasWtOyAjNjk5OAor5qaZID4gdMSDOyAjNjk5OQor5qaaID4gecSDbzsgIzY5OUEKK+ammyA+IHpoxJNuOyAjNjk5Qgor5qacID4gYsSDbmc7ICM2OTlDCivmpp0gPiBzaMSBOyAjNjk5RAor5qaeID4geXXDoW47ICM2OTlFCivmpp8gPiB6xK07ICM2OTlGCivmpqAgPiBtxKtuZzsgIzY5QTAKK+amoSA+IHPDuTsgIzY5QTEKK+amoiA+IGppw6A7ICM2OUEyCivmpqMgPiB5w6FvOyAjNjlBMwor5qakID4gamnDqTsgIzY5QTQKK+ampSA+IGh1xINuZzsgIzY5QTUKK+ampiA+IGfDoG47ICM2OUE2CivmpqcgPiBmxJVpOyAjNjlBNwor5qaoID4gemjDoDsgIzY5QTgKK+amqSA+IHFpw6FuOyAjNjlBOQor5qaqID4gbcOgOyAjNjlBQQor5qarID4gc8WtbjsgIzY5QUIKK+amrCA+IHl1w6FuOyAjNjlBQwor5qatID4geGnDqDsgIzY5QUQKK+amriA+IHLDs25nOyAjNjlBRQor5qavID4gc2jDrTsgIzY5QUYKK+amsCA+IHpoxKs7ICM2OUIwCivmprEgPiBjxatpOyAjNjlCMQor5qayID4gecO6bjsgIzY5QjIKK+amsyA+IHTDrW5nOyAjNjlCMwor5qa0ID4gbMOtdTsgIzY5QjQKK+amtSA+IHLDs25nOyAjNjlCNQor5qa2ID4gdMOhbmc7ICM2OUI2CivmprcgPiBxdcOoOyAjNjlCNwor5qa4ID4gemjEgWk7ICM2OUI4CivmprkgPiBzxKs7ICM2OUI5CivmprogPiBzaMOobmc7ICM2OUJBCivmprsgPiB0w6A7ICM2OUJCCivmprwgPiBrw6g7ICM2OUJDCivmpr0gPiB4xKs7ICM2OUJECivmpr4gPiBnw7k7ICM2OUJFCivmpr8gPiBxxKs7ICM2OUJGCivmp4AgPiBrxINvOyAjNjlDMAor5qeBID4gZ8SDbzsgIzY5QzEKK+angiA+IHPFq247ICM2OUMyCivmp4MgPiBww6FuOyAjNjlDMwor5qeEID4gdMSBbzsgIzY5QzQKK+anhSA+IGfDqTsgIzY5QzUKK+anhiA+IHjDum47ICM2OUM2Civmp4cgPiBkacSBbjsgIzY5QzcKK+aniCA+IG7DsnU7ICM2OUM4Civmp4kgPiBqw607ICM2OUM5Civmp4ogPiBzaMO5bzsgIzY5Q0EKK+aniyA+IGfDsnU7ICM2OUNCCivmp4wgPiBjaMO6aTsgIzY5Q0MKK+anjSA+IHFpxIFuZzsgIzY5Q0QKK+anjiA+IGNoxIE7ICM2OUNFCivmp48gPiBxacSDbjsgIzY5Q0YKK+ankCA+IGh1w6FpOyAjNjlEMAor5qeRID4gbcOpaTsgIzY5RDEKK+ankiA+IHjDuTsgIzY5RDIKK+ankyA+IGfDoG5nOyAjNjlEMwor5qeUID4gZ8SBbzsgIzY5RDQKK+anlSA+IHpow7pvOyAjNjlENQor5qeWID4gdMO5bzsgIzY5RDYKK+anmCA+IHnDoG5nOyAjNjlEOAor5qeZID4gZGnEgW47ICM2OUQ5Civmp5ogPiBqacSDOyAjNjlEQQor5qebID4gamnDoG47ICM2OURCCivmp5wgPiB6w7lpOyAjNjlEQwor5qefID4gYsSrbjsgIzY5REYKK+anoCA+IHpoxas7ICM2OUUwCivmp6IgPiB4w607ICM2OUUyCivmp6MgPiBxxK07ICM2OUUzCivmp6QgPiBsacOhbjsgIzY5RTQKK+anpSA+IGjDuWk7ICM2OUU1Civmp6YgPiB5w7NuZzsgIzY5RTYKK+anpyA+IHFpw6BuOyAjNjlFNwor5qeoID4gZ8WtbzsgIzY5RTgKK+anqSA+IGfDoGk7ICM2OUU5Civmp6ogPiBnw6BpOyAjNjlFQQor5qerID4gdHXDoW47ICM2OUVCCivmp6wgPiBodcOgOyAjNjlFQwor5qetID4gY8O5OyAjNjlFRAor5qeuID4gc8STbjsgIzY5RUUKK+anryA+IGPFq2k7ICM2OUVGCivmp7AgPiBiw6huZzsgIzY5RjAKK+ansSA+IHnFj3U7ICM2OUYxCivmp7IgPiBow7o7ICM2OUYyCivmp7MgPiBqacSDbmc7ICM2OUYzCivmp7QgPiBow7k7ICM2OUY0Civmp7UgPiBodcOgbjsgIzY5RjUKK+antiA+IGvDuWk7ICM2OUY2Civmp7cgPiB5w6w7ICM2OUY3Civmp7ggPiBuacOoOyAjNjlGOAor5qe5ID4gZ8SBbzsgIzY5RjkKK+anuiA+IGvEgW5nOyAjNjlGQQor5qe7ID4gZ8WraTsgIzY5RkIKK+anvCA+IGfFq2k7ICM2OUZDCivmp70gPiBjw6FvOyAjNjlGRAor5qe+ID4gbcOhbjsgIzY5RkUKK+anvyA+IGrErW47ICM2OUZGCivmqIAgPiBkw6w7ICM2QTAwCivmqIEgPiB6aHXEgW5nOyAjNkEwMQor5qiCID4gbMOoOyAjNkEwMgor5qiDID4gbMOhbmc7ICM2QTAzCivmqIQgPiBjaMOpbjsgIzZBMDQKK+aohSA+IGPFjW5nOyAjNkEwNQor5qiGID4gbMOtOyAjNkEwNgor5qiHID4geMSrdTsgIzZBMDcKK+aoiCA+IHHDrW5nOyAjNkEwOAor5qiJID4gc2h1xINuZzsgIzZBMDkKK+aoiiA+IGbDoW47ICM2QTBBCivmqIsgPiB0xY1uZzsgIzZBMEIKK+aojCA+IGd1w6BuOyAjNkEwQwor5qiNID4gasSrOyAjNkEwRAor5qiOID4gc8WrbzsgIzZBMEUKK+aojyA+IGzElWk7ICM2QTBGCivmqJAgPiBsxa07ICM2QTEwCivmqJEgPiBsacOhbmc7ICM2QTExCivmqJIgPiBtw6w7ICM2QTEyCivmqJMgPiBsw7N1OyAjNkExMwor5qiUID4gY2jDoW87ICM2QTE0CivmqJUgPiBzw7k7ICM2QTE1CivmqJYgPiBrxJM7ICM2QTE2CivmqJcgPiBzaMWrOyAjNkExNwor5qiYID4gdMOhbmc7ICM2QTE4CivmqJkgPiBiacSBbzsgIzZBMTkKK+aomiA+IGzDuTsgIzZBMUEKK+aomyA+IGrEq3U7ICM2QTFCCivmqJwgPiBzaMO5OyAjNkExQwor5qidID4gemjEgTsgIzZBMUQKK+aoniA+IHNoxas7ICM2QTFFCivmqJ8gPiB6aMSBbmc7ICM2QTFGCivmqKAgPiBtw6luOyAjNkEyMAor5qihID4gbcOzOyAjNkEyMQor5qiiID4gbmnEg287ICM2QTIyCivmqKMgPiB5w6BuZzsgIzZBMjMKK+aopCA+IHRpw6FvOyAjNkEyNAor5qilID4gcMOpbmc7ICM2QTI1CivmqKYgPiB6aMO5OyAjNkEyNgor5qinID4gc2jEgTsgIzZBMjcKK+aoqCA+IHjEqzsgIzZBMjgKK+aoqSA+IHF1w6FuOyAjNkEyOQor5qiqID4gaMOpbmc7ICM2QTJBCivmqKsgPiBqacSBbjsgIzZBMkIKK+aorCA+IGPFjW5nOyAjNkEyQwor5qivID4gcWnDoW5nOyAjNkEyRgor5qixID4gecSrbmc7ICM2QTMxCivmqLIgPiDDqHI7ICM2QTMyCivmqLMgPiB4w61uOyAjNkEzMwor5qi0ID4gemjDrTsgIzZBMzQKK+aotSA+IHFpw6FvOyAjNkEzNQor5qi2ID4gesWraTsgIzZBMzYKK+aotyA+IGPFjW5nOyAjNkEzNwor5qi4ID4gcMO6OyAjNkEzOAor5qi5ID4gc2jDuTsgIzZBMzkKK+aouiA+IGh1w6A7ICM2QTNBCivmqLsgPiBrw7lpOyAjNkEzQgor5qi8ID4gemjEk247ICM2QTNDCivmqL0gPiB6xatuOyAjNkEzRAor5qi+ID4geXXDqDsgIzZBM0UKK+aovyA+IHpoxINuOyAjNkEzRgor5qmAID4geMSrOyAjNkE0MAor5qmBID4geMO6bjsgIzZBNDEKK+apgiA+IGRpw6BuOyAjNkE0Mgor5qmDID4gZsSBOyAjNkE0Mwor5qmEID4gZ8SDbjsgIzZBNDQKK+aphSA+IG3DszsgIzZBNDUKK+aphiA+IHfFrTsgIzZBNDYKK+aphyA+IHFpxIFvOyAjNkE0Nwor5qmIID4gbsOhbzsgIzZBNDgKK+apiSA+IGzDrG47ICM2QTQ5CivmqYogPiBsw611OyAjNkE0QQor5qmLID4gcWnDoW87ICM2QTRCCivmqYwgPiB4acOgbjsgIzZBNEMKK+apjSA+IHLDuW47ICM2QTRECivmqY4gPiBmw6FuOyAjNkE0RQor5qmPID4gemjEg247ICM2QTRGCivmqZAgPiB0w7lvOyAjNkE1MAor5qmRID4gbMSDbzsgIzZBNTEKK+apkiA+IHnDum47ICM2QTUyCivmqZMgPiBzaMO5bjsgIzZBNTMKK+aplCA+IHTDumk7ICM2QTU0CivmqZUgPiBjaMSTbmc7ICM2QTU1CivmqZYgPiB0w6FuZzsgIzZBNTYKK+aplyA+IG3DqW5nOyAjNkE1Nwor5qmYID4gasO6OyAjNkE1OAor5qmZID4gY2jDqW5nOyAjNkE1OQor5qmaID4gc8O5OyAjNkE1QQor5qmbID4ganXDqTsgIzZBNUIKK+apnCA+IGp1w6k7ICM2QTVDCivmqZ0gPiB0xIFuOyAjNkE1RAor5qmeID4gaMO5aTsgIzZBNUUKK+apnyA+IGrEqzsgIzZBNUYKK+apoCA+IG7FrW87ICM2QTYwCivmqaEgPiB4acOgbmc7ICM2QTYxCivmqaIgPiB0xa1vOyAjNkE2Mgor5qmjID4gbsStbmc7ICM2QTYzCivmqaQgPiByxa1pOyAjNkE2NAor5qmlID4gemjFqzsgIzZBNjUKK+appiA+IGNodcOhbmc7ICM2QTY2CivmqacgPiB6xJNuZzsgIzZBNjcKK+apqCA+IGbDqW47ICM2QTY4CivmqakgPiBxw61vbmc7ICM2QTY5CivmqaogPiByxINuOyAjNkE2QQor5qmrID4gaMOpbmc7ICM2QTZCCivmqawgPiBjw6luOyAjNkE2Qwor5qmtID4gZ8WrOyAjNkE2RAor5qmuID4gbMStdTsgIzZBNkUKK+apryA+IGzDoG87ICM2QTZGCivmqbAgPiBnxIFvOyAjNkE3MAor5qmxID4gY2jDujsgIzZBNzEKK+aptiA+IGrDrTsgIzZBNzYKK+aptyA+IGTFjXU7ICM2QTc3CivmqbkgPiBsxa07ICM2QTc5CivmqbwgPiB5dcOhbjsgIzZBN0MKK+apvSA+IHTDoDsgIzZBN0QKK+apviA+IHNoxas7ICM2QTdFCivmqb8gPiBqacSBbmc7ICM2QTdGCivmqoAgPiB0w6FuOyAjNkE4MAor5qqBID4gbMStbjsgIzZBODEKK+aqgiA+IG7Ds25nOyAjNkE4Mgor5qqDID4gecStbjsgIzZBODMKK+aqhCA+IHjDrTsgIzZBODQKK+aqhSA+IHPDuWk7ICM2QTg1CivmqoYgPiBzaMSBbjsgIzZBODYKK+aqhyA+IHrDuWk7ICM2QTg3CivmqoggPiB4dcOhbjsgIzZBODgKK+aqiSA+IGNoxJNuZzsgIzZBODkKK+aqiiA+IGfDoG47ICM2QThBCivmqosgPiBqxas7ICM2QThCCivmqowgPiB6w7lpOyAjNkE4Qwor5qqNID4gecOsOyAjNkE4RAor5qqOID4gccOtbjsgIzZBOEUKK+aqjyA+IHDFrTsgIzZBOEYKK+aqkCA+IHnDoW47ICM2QTkwCivmqpEgPiBsw6lpOyAjNkE5MQor5qqSID4gZsSTbmc7ICM2QTkyCivmqpMgPiBoxa1pOyAjNkE5Mwor5qqUID4gZMSDbmc7ICM2QTk0CivmqpUgPiBqw6w7ICM2QTk1CivmqpYgPiBzw7lpOyAjNkE5Ngor5qqXID4gYsOyOyAjNkE5Nwor5qqYID4gYsOsOyAjNkE5OAor5qqZID4gZMStbmc7ICM2QTk5CivmqpogPiBjaMWtOyAjNkE5QQor5qqbID4gemh1xIE7ICM2QTlCCivmqpwgPiBrdcOgaTsgIzZBOUMKK+aqnSA+IGrDrTsgIzZBOUQKK+aqniA+IGppxJU7ICM2QTlFCivmqp8gPiBqacSDOyAjNkE5Rgor5qqgID4gccOtbmc7ICM2QUEwCivmqqEgPiB6aMOoOyAjNkFBMQor5qqiID4gamnEg247ICM2QUEyCivmqqMgPiBxacOhbmc7ICM2QUEzCivmqqQgPiBkw6BvOyAjNkFBNAor5qqlID4gecStOyAjNkFBNQor5qqmID4gYmnEg287ICM2QUE2CivmqqcgPiBzxY1uZzsgIzZBQTcKK+aqqCA+IHNoxJM7ICM2QUE4CivmqqkgPiBsxK1uOyAjNkFBOQor5qqrID4gY2jDoTsgIzZBQUIKK+aqrCA+IG3DqW5nOyAjNkFBQwor5qqtID4gecOtbjsgIzZBQUQKK+aqriA+IHTDoW87ICM2QUFFCivmqq8gPiB0w6FpOyAjNkFBRgor5qqwID4gbWnDoW47ICM2QUIwCivmqrEgPiBxw607ICM2QUIxCivmqrIgPiB0w7NhbjsgIzZBQjIKK+aqsyA+IGLEq247ICM2QUIzCivmqrQgPiBow7lvOyAjNkFCNAor5qq1ID4gasOsOyAjNkFCNQor5qq2ID4gcWnEgW47ICM2QUI2CivmqrcgPiBtw607ICM2QUI3CivmqrggPiBuw61uZzsgIzZBQjgKK+aquSA+IHnEqzsgIzZBQjkKK+aquiA+IGfEg287ICM2QUJBCivmqrsgPiBqacOgbjsgIzZBQkIKK+aqvCA+IHnDrG47ICM2QUJDCivmqr0gPiDDqXI7ICM2QUJECivmqr4gPiBxxK1uZzsgIzZBQkUKK+aqvyA+IHnEg247ICM2QUJGCivmq4AgPiBxw607ICM2QUMwCivmq4EgPiBtw6w7ICM2QUMxCivmq4IgPiB6aMOgbzsgIzZBQzIKK+argyA+IGfDuWk7ICM2QUMzCivmq4QgPiBjaMWrbjsgIzZBQzQKK+arhSA+IGrEqzsgIzZBQzUKK+arhiA+IGvDumk7ICM2QUM2Civmq4cgPiBww7M7ICM2QUM3Civmq4ggPiBkw6huZzsgIzZBQzgKK+ariSA+IGNow7o7ICM2QUM5Civmq4sgPiBtacOhbjsgIzZBQ0IKK+arjCA+IHnFjXU7ICM2QUNDCivmq40gPiB6aMOsOyAjNkFDRAor5quOID4gZ3XDoG5nOyAjNkFDRQor5quPID4gcWnEgW47ICM2QUNGCivmq5AgPiBsxJVpOyAjNkFEMAor5quRID4gbMSVaTsgIzZBRDEKK+arkiA+IHPDoDsgIzZBRDIKK+arkyA+IGzFrTsgIzZBRDMKK+arlCA+IGzDrDsgIzZBRDQKK+arlSA+IGN1w6FuOyAjNkFENQor5quWID4gbMeYOyAjNkFENgor5quXID4gbWnDqDsgIzZBRDcKK+armCA+IGjDuWk7ICM2QUQ4Civmq5kgPiDFjXU7ICM2QUQ5Civmq5ogPiBsx5g7ICM2QURBCivmq5sgPiBqacOpOyAjNkFEQgor5qucID4gZ8SBbzsgIzZBREMKK+arnSA+IGTDujsgIzZBREQKK+arniA+IHl1w6FuOyAjNkFERQor5qufID4gbMOsOyAjNkFERgor5qugID4gZsOoaTsgIzZBRTAKK+aroSA+IHpow7pvOyAjNkFFMQor5quiID4gc8WPdTsgIzZBRTIKK+aroyA+IGxpw6FuOyAjNkFFMwor5qulID4gY2jDujsgIzZBRTUKK+arpyA+IHpoxas7ICM2QUU3Civmq6ggPiBsw7o7ICM2QUU4Civmq6kgPiB5w6FuOyAjNkFFOQor5quqID4gbMOsOyAjNkFFQQor5qurID4gemjFqzsgIzZBRUIKK+arrCA+IGNow6huOyAjNkFFQwor5qutID4gamnDqTsgIzZBRUQKK+arriA+IMOoOyAjNkFFRQor5quvID4gc8WrOyAjNkFFRgor5quwID4gaHXDoWk7ICM2QUYwCivmq7EgPiBuacOoOyAjNkFGMQor5quyID4gecO5OyAjNkFGMgor5quzID4gbMOzbmc7ICM2QUYzCivmq7QgPiBsw6BpOyAjNkFGNAor5qu2ID4geGnEg247ICM2QUY2Civmq7ggPiBqxa07ICM2QUY4Civmq7kgPiB4acSBbzsgIzZBRjkKK+aruiA+IGzDrW5nOyAjNkFGQQor5qu7ID4gecSrbmc7ICM2QUZCCivmq7wgPiBqacSBbjsgIzZBRkMKK+arvSA+IHnErW47ICM2QUZECivmq74gPiB5w7N1OyAjNkFGRQor5qu/ID4gecOtbmc7ICM2QUZGCivmrIAgPiB4acSBbmc7ICM2QjAwCivmrIEgPiBuw7NuZzsgIzZCMDEKK+asgiA+IGLDszsgIzZCMDIKK+asgyA+IGNow6FuOyAjNkIwMwor5qyEID4gbMOhbjsgIzZCMDQKK+ashSA+IGrFrTsgIzZCMDUKK+ashiA+IHNodcSBbmc7ICM2QjA2CivmrIcgPiBzaMOoOyAjNkIwNwor5qyIID4gd8OpaTsgIzZCMDgKK+asiSA+IGPDsm5nOyAjNkIwOQor5qyKID4gcXXDoW47ICM2QjBBCivmrIsgPiBxw7o7ICM2QjBCCivmrI4gPiB5w7k7ICM2QjBFCivmrI8gPiBsw7pvOyAjNkIwRgor5qyQID4gbMStOyAjNkIxMAor5qyRID4gesOgbjsgIzZCMTEKK+askiA+IGx1w6FuOyAjNkIxMgor5qyTID4gZMSDbmc7ICM2QjEzCivmrJQgPiBqdcOpOyAjNkIxNAor5qyWID4gbMSDbjsgIzZCMTYKK+aslyA+IGzDoW47ICM2QjE3CivmrJggPiB6aMWtOyAjNkIxOAor5qyZID4gbMOpaTsgIzZCMTkKK+asmiA+IGzErTsgIzZCMUEKK+asmyA+IGLDoDsgIzZCMUIKK+asnCA+IG7DoW5nOyAjNkIxQwor5qydID4gecO5OyAjNkIxRAor5qyeID4gbMOtbmc7ICM2QjFFCivmrKAgPiBxacOgbjsgIzZCMjAKK+asoSA+IGPDrDsgIzZCMjEKK+asoiA+IGh1xIFuOyAjNkIyMgor5qyjID4geMSrbjsgIzZCMjMKK+aspCA+IHnDujsgIzZCMjQKK+aspSA+IHnDuTsgIzZCMjUKK+aspiA+IHFpxIFuOyAjNkIyNgor5qynID4gxY11OyAjNkIyNwor5qyoID4geMWrOyAjNkIyOAor5qypID4gY2jEgW87ICM2QjI5CivmrKogPiBjaMO5OyAjNkIyQQor5qyrID4gY2jEqzsgIzZCMkIKK+asrCA+IGvDoGk7ICM2QjJDCivmrK0gPiB5w6w7ICM2QjJECivmrK4gPiBqdcOpOyAjNkIyRQor5qyvID4geMOtOyAjNkIyRgor5qywID4geMWrOyAjNkIzMAor5qyxID4geGnDoDsgIzZCMzEKK+assiA+IHnDuTsgIzZCMzIKK+assyA+IGt1w6BpOyAjNkIzMwor5qy0ID4gbMOhbmc7ICM2QjM0CivmrLUgPiBrdcSDbjsgIzZCMzUKK+astiA+IHNow7lvOyAjNkIzNgor5qy3ID4geMSrOyAjNkIzNwor5qy4ID4gxINpOyAjNkIzOAor5qy5ID4gecSrOyAjNkIzOQor5qy6ID4gccSrOyAjNkIzQQor5qy7ID4gaMWrOyAjNkIzQgor5qy8ID4gY2jErTsgIzZCM0MKK+asvSA+IHHEq247ICM2QjNECivmrL4gPiBrdcSDbjsgIzZCM0UKK+asvyA+IGvEg247ICM2QjNGCivmrYAgPiBrdcSDbjsgIzZCNDAKK+atgSA+IGvEg247ICM2QjQxCivmrYIgPiBjaHXDoW47ICM2QjQyCivmrYMgPiBzaMOgOyAjNkI0Mwor5q2EID4gZ3VhOyAjNkI0NAor5q2FID4gecSrbjsgIzZCNDUKK+athiA+IHjEq247ICM2QjQ2CivmrYcgPiB4acSTOyAjNkI0Nwor5q2IID4gecO6OyAjNkI0OAor5q2JID4gcWnDoG47ICM2QjQ5CivmrYogPiB4acSBbzsgIzZCNEEKK+atiyA+IHnDrTsgIzZCNEIKK+atjCA+IGfEkzsgIzZCNEMKK+atjSA+IHfFqzsgIzZCNEQKK+atjiA+IHTDoG47ICM2QjRFCivmrY8gPiBqw6xuOyAjNkI0Rgor5q2QID4gxY11OyAjNkI1MAor5q2RID4gaMWrOyAjNkI1MQor5q2SID4gdMOsOyAjNkI1Mgor5q2TID4gaHXEgW47ICM2QjUzCivmrZQgPiB4xas7ICM2QjU0CivmrZUgPiBww6huOyAjNkI1NQor5q2WID4geMSrOyAjNkI1Ngor5q2XID4geGnDoG87ICM2QjU3CivmrZggPiB4xas7ICM2QjU4CivmrZkgPiB4w6w7ICM2QjU5CivmrZsgPiBsacOgbjsgIzZCNUIKK+atnCA+IGNow7k7ICM2QjVDCivmrZ0gPiB5w6w7ICM2QjVECivmrZ4gPiBrxINuOyAjNkI1RQor5q2fID4gecO6OyAjNkI1Rgor5q2gID4gY2jDuW87ICM2QjYwCivmraEgPiBodcSBbjsgIzZCNjEKK+atoiA+IHpoxK07ICM2QjYyCivmraMgPiB6aMOobmc7ICM2QjYzCivmraQgPiBjxK07ICM2QjY0CivmraUgPiBiw7k7ICM2QjY1CivmraYgPiB3xa07ICM2QjY2CivmracgPiBxw607ICM2QjY3CivmraggPiBiw7k7ICM2QjY4CivmrakgPiBiw7k7ICM2QjY5CivmraogPiB3xIFpOyAjNkI2QQor5q2rID4gasO5OyAjNkI2Qgor5q2sID4gcWnDoW47ICM2QjZDCivmra0gPiBjaMOtOyAjNkI2RAor5q2uID4gc8OoOyAjNkI2RQor5q2vID4gY2jErTsgIzZCNkYKK+atsCA+IHPDqDsgIzZCNzAKK+atsSA+IHpoxY9uZzsgIzZCNzEKK+atsiA+IHPDuWk7ICM2QjcyCivmrbMgPiBzw7lpOyAjNkI3Mwor5q20ID4gbMOsOyAjNkI3NAor5q21ID4gY8O5bzsgIzZCNzUKK+attiA+IHnDujsgIzZCNzYKK+attyA+IGzDrDsgIzZCNzcKK+atuCA+IGfFq2k7ICM2Qjc4CivmrbkgPiBkxINpOyAjNkI3OQor5q26ID4gZMSDaTsgIzZCN0EKK+atuyA+IHPErTsgIzZCN0IKK+atvCA+IGppxIFuOyAjNkI3Qwor5q29ID4gemjDqTsgIzZCN0QKK+atviA+IG3DsjsgIzZCN0UKK+atvyA+IG3DsjsgIzZCN0YKK+augCA+IHnEg287ICM2QjgwCivmroEgPiBtw7I7ICM2QjgxCivmroIgPiBjw7o7ICM2QjgyCivmroMgPiB5xIFuZzsgIzZCODMKK+auhCA+IHRpxINuOyAjNkI4NAor5q6FID4gc2jEk25nOyAjNkI4NQor5q6GID4gZMOgaTsgIzZCODYKK+auhyA+IHNoxIFuZzsgIzZCODcKK+auiCA+IHjDuTsgIzZCODgKK+auiSA+IHjDuW47ICM2Qjg5CivmroogPiBzaMWrOyAjNkI4QQor5q6LID4gY8OhbjsgIzZCOEIKK+aujCA+IGp1w6k7ICM2QjhDCivmro0gPiBwacSDbzsgIzZCOEQKK+aujiA+IHFpw6A7ICM2QjhFCivmro8gPiBxw6x1OyAjNkI4Rgor5q6QID4gc8O5OyAjNkI5MAor5q6RID4gccOtbmc7ICM2QjkxCivmrpIgPiB5xa1uOyAjNkI5Mgor5q6TID4gbGnDoG47ICM2QjkzCivmrpQgPiB5w6w7ICM2Qjk0CivmrpUgPiBmxY91OyAjNkI5NQor5q6WID4gemjDrTsgIzZCOTYKK+aulyA+IHnDqDsgIzZCOTcKK+aumCA+IGPDoW47ICM2Qjk4CivmrpkgPiBoxatuOyAjNkI5OQor5q6aID4gZMSBbjsgIzZCOUEKK+aumyA+IGrDrTsgIzZCOUIKK+aunCA+IHnDqDsgIzZCOUMKK+aunSA+IHpoZW47ICM2QjlECivmrp4gPiB5xa1uOyAjNkI5RQor5q6fID4gd8STbjsgIzZCOUYKK+auoCA+IGNow7J1OyAjNkJBMAor5q6hID4gYsOsbjsgIzZCQTEKK+auoiA+IHTDrDsgIzZCQTIKK+auoyA+IGrErW47ICM2QkEzCivmrqQgPiBzaMSBbmc7ICM2QkE0CivmrqUgPiB5w61uOyAjNkJBNQor5q6mID4gZGnEgW87ICM2QkE2CivmrqcgPiBjw7k7ICM2QkE3CivmrqggPiBow7lpOyAjNkJBOAor5q6pID4gY3XDoG47ICM2QkE5CivmrqogPiB5w6w7ICM2QkFBCivmrqsgPiBkxIFuOyAjNkJBQgor5q6sID4gZMO5OyAjNkJBQwor5q6tID4gamnEgW5nOyAjNkJBRAor5q6uID4gbGnDoG47ICM2QkFFCivmrq8gPiBiw6xuOyAjNkJBRgor5q6wID4gZMO6OyAjNkJCMAor5q6yID4gamnEgW47ICM2QkIyCivmrrMgPiBzaMWrOyAjNkJCMwor5q60ID4gxY11OyAjNkJCNAor5q61ID4gZHXDoG47ICM2QkI1CivmrrYgPiB6aMO5OyAjNkJCNgor5q63ID4gecSrbjsgIzZCQjcKK+auuCA+IHHDrG5nOyAjNkJCOAor5q65ID4gecOsOyAjNkJCOQor5q66ID4gc2jEgTsgIzZCQkEKK+auuyA+IHF1w6g7ICM2QkJCCivmrrwgPiBrw6k7ICM2QkJDCivmrr0gPiB5w6FvOyAjNkJCRAor5q6+ID4gasO5bjsgIzZCQkUKK+auvyA+IGRpw6BuOyAjNkJCRgor5q+AID4gaMWtaTsgIzZCQzAKK+avgSA+IGjFrWk7ICM2QkMxCivmr4IgPiBnxa07ICM2QkMyCivmr4MgPiBxdcOoOyAjNkJDMwor5q+EID4gasSrOyAjNkJDNAor5q+FID4gecOsOyAjNkJDNQor5q+GID4gxY11OyAjNkJDNgor5q+HID4gaMWtaTsgIzZCQzcKK+aviCA+IGR1w6BuOyAjNkJDOAor5q+JID4gecSrOyAjNkJDOQor5q+KID4geGnEgW87ICM2QkNBCivmr4sgPiB3w7o7ICM2QkNCCivmr4wgPiBndcOgbjsgIzZCQ0MKK+avjSA+IG3FrTsgIzZCQ0QKK+avjiA+IG3ElWk7ICM2QkNFCivmr48gPiBtxJVpOyAjNkJDRgor5q+QID4gxINpOyAjNkJEMAor5q+RID4gesWtbzsgIzZCRDEKK+avkiA+IGTDujsgIzZCRDIKK+avkyA+IHnDuTsgIzZCRDMKK+avlCA+IGLErTsgIzZCRDQKK+avlSA+IGLDrDsgIzZCRDUKK+avliA+IGLDrDsgIzZCRDYKK+avlyA+IHDDrTsgIzZCRDcKK+avmCA+IHDDrTsgIzZCRDgKK+avmSA+IGLDrDsgIzZCRDkKK+avmiA+IGNow6FuOyAjNkJEQQor5q+bID4gbcOhbzsgIzZCREIKK+avniA+IHDDujsgIzZCREUKK+avoCA+IGppxIE7ICM2QkUwCivmr6EgPiB6aMSBbjsgIzZCRTEKK+avoiA+IHPEgWk7ICM2QkUyCivmr6MgPiBtw7k7ICM2QkUzCivmr6QgPiB0w7lvOyAjNkJFNAor5q+lID4geMO6bjsgIzZCRTUKK+avpiA+IMOocjsgIzZCRTYKK+avpyA+IHLDs25nOyAjNkJFNwor5q+oID4geGnEg247ICM2QkU4Civmr6kgPiBqw7o7ICM2QkU5Civmr6ogPiBtw7o7ICM2QkVBCivmr6sgPiBow6FvOyAjNkJFQgor5q+sID4gccOtdTsgIzZCRUMKK+avrSA+IGTDsnU7ICM2QkVECivmr68gPiB0xINuOyAjNkJFRgor5q+wID4gcMOpaTsgIzZCRjAKK+avsSA+IGrDujsgIzZCRjEKK+avsiA+IGTDum87ICM2QkYyCivmr7MgPiBjw7lpOyAjNkJGMwor5q+0ID4gYsSrOyAjNkJGNAor5q+1ID4gc8SBbjsgIzZCRjUKK+avtyA+IG3DoG87ICM2QkY3Civmr7ggPiBzxatpOyAjNkJGOAor5q+5ID4gecWrOyAjNkJGOQor5q+6ID4gecWrOyAjNkJGQQor5q+7ID4gdMO5bzsgIzZCRkIKK+avvCA+IGjDqTsgIzZCRkMKK+avvSA+IGppw6BuOyAjNkJGRAor5q++ID4gdMOgOyAjNkJGRQor5q+/ID4gc8SBbjsgIzZCRkYKK+awgCA+IGzHmDsgIzZDMDAKK+awgSA+IG3DujsgIzZDMDEKK+awgiA+IGzDrTsgIzZDMDIKK+awgyA+IHTDs25nOyAjNkMwMwor5rCEID4gcsWPbmc7ICM2QzA0CivmsIUgPiBjaMSDbmc7ICM2QzA1CivmsIYgPiBwxa07ICM2QzA2CivmsIcgPiBsw7pvOyAjNkMwNwor5rCIID4gemjEgW47ICM2QzA4CivmsIkgPiBzw6BvOyAjNkMwOQor5rCKID4gemjEgW47ICM2QzBBCivmsIsgPiBtw6luZzsgIzZDMEIKK+awjCA+IGzDum87ICM2QzBDCivmsI0gPiBxw7o7ICM2QzBECivmsI4gPiBkacOpOyAjNkMwRQor5rCPID4gc2jDrDsgIzZDMEYKK+awkCA+IGTErTsgIzZDMTAKK+awkSA+IG3DrW47ICM2QzExCivmsJIgPiBqdcOpOyAjNkMxMgor5rCTID4gbcOhbmc7ICM2QzEzCivmsJQgPiBxw6w7ICM2QzE0CivmsJUgPiBwacSTOyAjNkMxNQor5rCWID4gbsSDaTsgIzZDMTYKK+awlyA+IHHDrDsgIzZDMTcKK+awmCA+IGTEgW87ICM2QzE4CivmsJkgPiB4acSBbjsgIzZDMTkKK+awmiA+IGNodcSBbjsgIzZDMUEKK+awmyA+IGbEk247ICM2QzFCCivmsJwgPiByw6w7ICM2QzFDCivmsJ0gPiBuw6hpOyAjNkMxRAor5rCfID4gZsO6OyAjNkMxRgor5rCgID4gc2jEk247ICM2QzIwCivmsKEgPiBkxY1uZzsgIzZDMjEKK+awoiA+IHHEq25nOyAjNkMyMgor5rCjID4gccOsOyAjNkMyMwor5rCkID4gecSrbjsgIzZDMjQKK+awpSA+IHjEqzsgIzZDMjUKK+awpiA+IGjDoGk7ICM2QzI2CivmsKcgPiB5xINuZzsgIzZDMjcKK+awqCA+IMSBbjsgIzZDMjgKK+awqSA+IHnDoDsgIzZDMjkKK+awqiA+IGvDqDsgIzZDMkEKK+awqyA+IHHEq25nOyAjNkMyQgor5rCsID4gecOgOyAjNkMyQwor5rCtID4gZMWNbmc7ICM2QzJECivmsK4gPiBkw6BuOyAjNkMyRQor5rCvID4gbMecOyAjNkMyRgor5rCwID4gccSrbmc7ICM2QzMwCivmsLEgPiB5xINuZzsgIzZDMzEKK+awsiA+IHnFq247ICM2QzMyCivmsLMgPiB5xatuOyAjNkMzMwor5rC0ID4gc2jFrWk7ICM2QzM0CivmsLUgPiBzxIFuJyAnZGnEg24nICdzaMWtaTsgIzZDMzUKK+awtiA+IHpoxJVuZzsgIzZDMzYKK+awtyA+IGLEq25nOyAjNkMzNwor5rC4ID4gecWPbmc7ICM2QzM4CivmsLkgPiBkw6BuZzsgIzZDMzkKK+awuyA+IGzDqDsgIzZDM0IKK+awvCA+IG7DrDsgIzZDM0MKK+awvSA+IHTFrW47ICM2QzNECivmsL4gPiBmw6BuOyAjNkMzRQor5rC/ID4gZ8WtaTsgIzZDM0YKK+axgCA+IHTEq25nOyAjNkM0MAor5rGBID4gemjEqzsgIzZDNDEKK+axgiA+IHHDrXU7ICM2QzQyCivmsYMgPiBixKtuOyAjNkM0Mwor5rGEID4gesOoOyAjNkM0NAor5rGFID4gbWnEg247ICM2QzQ1CivmsYYgPiBjdcSBbjsgIzZDNDYKK+axhyA+IGjDuWk7ICM2QzQ3CivmsYggPiBkacSBbzsgIzZDNDgKK+axiSA+IHnDrDsgIzZDNDkKK+axiiA+IGNow6A7ICM2QzRBCivmsYsgPiB6aMO6bzsgIzZDNEIKK+axjCA+IGNodcOgbjsgIzZDNEMKK+axjSA+IHfDoW47ICM2QzRECivmsY4gPiBmw6BuOyAjNkM0RQor5rGPID4gZMOgaTsgIzZDNEYKK+axkCA+IHjDrDsgIzZDNTAKK+axkSA+IHTFq287ICM2QzUxCivmsZIgPiBtw6FuZzsgIzZDNTIKK+axkyA+IHHDrXU7ICM2QzUzCivmsZQgPiBxw6w7ICM2QzU0CivmsZUgPiBzaMOgbjsgIzZDNTUKK+axliA+IHDDoGk7ICM2QzU2CivmsZcgPiBow6BuOyAjNkM1Nwor5rGYID4gcWnEgW47ICM2QzU4CivmsZkgPiB3xas7ICM2QzU5CivmsZogPiB3xas7ICM2QzVBCivmsZsgPiB4w7luOyAjNkM1Qgor5rGcID4gc8OsOyAjNkM1Qwor5rGdID4gcsWtOyAjNkM1RAor5rGeID4gZ8WPbmc7ICM2QzVFCivmsZ8gPiBqacSBbmc7ICM2QzVGCivmsaAgPiBjaMOtOyAjNkM2MAor5rGhID4gd8WrOyAjNkM2MQor5rGkID4gdMSBbmc7ICM2QzY0CivmsaUgPiB6aMSrOyAjNkM2NQor5rGmID4gY2jDrTsgIzZDNjYKK+axpyA+IHFpxIFuOyAjNkM2Nwor5rGoID4gbcOsOyAjNkM2OAor5rGpID4gecO5OyAjNkM2OQor5rGqID4gd8SBbmc7ICM2QzZBCivmsasgPiBxw6xuZzsgIzZDNkIKK+axrCA+IGrErW5nOyAjNkM2Qwor5rGtID4gcsO5aTsgIzZDNkQKK+axriA+IGrFq247ICM2QzZFCivmsa8gPiBow7NuZzsgIzZDNkYKK+axsCA+IHTDoGk7ICM2QzcwCivmsbEgPiBxdcSDbjsgIzZDNzEKK+axsiA+IGrDrTsgIzZDNzIKK+axsyA+IGJpw6BuOyAjNkM3Mwor5rG0ID4gYmnDoG47ICM2Qzc0CivmsbUgPiBnw6BuOyAjNkM3NQor5rG2ID4gd8OobjsgIzZDNzYKK+axtyA+IHpoxY1uZzsgIzZDNzcKK+axuCA+IGbEgW5nOyAjNkM3OAor5rG5ID4geMSrb25nOyAjNkM3OQor5rG6ID4ganXDqTsgIzZDN0EKK+axuyA+IGjEg25nOyAjNkM3Qgor5rG8ID4gbmnFjXU7ICM2QzdDCivmsb0gPiBxw6w7ICM2QzdECivmsb4gPiBmw6luOyAjNkM3RQor5rG/ID4geMO5OyAjNkM3Rgor5rKAID4geMO5OyAjNkM4MAor5rKBID4gccOsbjsgIzZDODEKK+aygiA+IHnDrTsgIzZDODIKK+aygyA+IHfDsjsgIzZDODMKK+ayhCA+IHnDum47ICM2Qzg0CivmsoUgPiB5dcOhbjsgIzZDODUKK+ayhiA+IGjDoW5nOyAjNkM4Ngor5rKHID4gecSDbjsgIzZDODcKK+ayiCA+IGNow6luOyAjNkM4OAor5rKJID4gY2jDqW47ICM2Qzg5CivmsoogPiBkw6BuOyAjNkM4QQor5rKLID4gecOzdTsgIzZDOEIKK+ayjCA+IGTDuW47ICM2QzhDCivmso0gPiBow7k7ICM2QzhECivmso4gPiBow7lvOyAjNkM4RQor5rKPID4gcWnEkzsgIzZDOEYKK+aykCA+IG3DuTsgIzZDOTAKK+aykSA+IHLDs3U7ICM2QzkxCivmspIgPiBtw6lpOyAjNkM5Mgor5rKTID4gdMOgOyAjNkM5Mwor5rKUID4gbWnEg247ICM2Qzk0CivmspUgPiB3w7k7ICM2Qzk1CivmspYgPiBjaMWNbmc7ICM2Qzk2CivmspcgPiB0acSBbjsgIzZDOTcKK+aymCA+IGLErTsgIzZDOTgKK+aymSA+IHNoxIE7ICM2Qzk5CivmspogPiB6aMStOyAjNkM5QQor5rKbID4gcMOoaTsgIzZDOUIKK+aynCA+IHDDoG47ICM2QzlDCivmsp0gPiB6aMWtaTsgIzZDOUQKK+ayniA+IHrEgTsgIzZDOUUKK+aynyA+IGfFjXU7ICM2QzlGCivmsqAgPiBsw611OyAjNkNBMAor5rKhID4gbcOpaTsgIzZDQTEKK+ayoiA+IHrDqTsgIzZDQTIKK+ayoyA+IGbEk25nOyAjNkNBMwor5rKkID4gw7J1OyAjNkNBNAor5rKlID4gbMOsOyAjNkNBNQor5rKmID4gbMO6bjsgIzZDQTYKK+aypyA+IGPEgW5nOyAjNkNBNwor5rKoID4gZsOpbmc7ICM2Q0E4CivmsqkgPiB3w6lpOyAjNkNBOQor5rKqID4gaMO5OyAjNkNBQQor5rKrID4gbcOyOyAjNkNBQgor5rKsID4gbcOoaTsgIzZDQUMKK+ayrSA+IHNow7k7ICM2Q0FECivmsq4gPiBqxas7ICM2Q0FFCivmsq8gPiB6xINuOyAjNkNBRgor5rKwID4gdMWrbzsgIzZDQjAKK+aysSA+IHTDum87ICM2Q0IxCivmsrIgPiB0w7pvOyAjNkNCMgor5rKzID4gaMOpOyAjNkNCMwor5rK0ID4gbMOsOyAjNkNCNAor5rK1ID4gbcStOyAjNkNCNQor5rK2ID4gecOtOyAjNkNCNgor5rK3ID4gZsSBOyAjNkNCNwor5rK4ID4gZsOoaTsgIzZDQjgKK+ayuSA+IHnDs3U7ICM2Q0I5CivmsrogPiB0acOhbjsgIzZDQkEKK+ayuyA+IHpow6w7ICM2Q0JCCivmsrwgPiB6aMSDbzsgIzZDQkMKK+ayvSA+IGfFqzsgIzZDQkQKK+ayviA+IHpoxIFuOyAjNkNCRQor5rK/ID4gecOhbjsgIzZDQkYKK+azgCA+IHPEqzsgIzZDQzAKK+azgSA+IGt1w6BuZzsgIzZDQzEKK+azgiA+IGrErW9uZzsgIzZDQzIKK+azgyA+IGrDuTsgIzZDQzMKK+azhCA+IHhpw6g7ICM2Q0M0Civms4UgPiBxw611OyAjNkNDNQor5rOGID4gecSrOyAjNkNDNgor5rOHID4gamnEgTsgIzZDQzcKK+aziCA+IHpoxY1uZzsgIzZDQzgKK+aziSA+IHF1w6FuOyAjNkNDOQor5rOKID4gYsOzOyAjNkNDQQor5rOLID4gaMO5aTsgIzZDQ0IKK+azjCA+IG3DrDsgIzZDQ0MKK+azjSA+IGLEk247ICM2Q0NECivms44gPiB6aMO6bzsgIzZDQ0UKK+azjyA+IGNow7k7ICM2Q0NGCivms5AgPiBsw6g7ICM2Q0QwCivms5EgPiB5xY91OyAjNkNEMQor5rOSID4gZ8WrOyAjNkNEMgor5rOTID4gaMOzbmc7ICM2Q0QzCivms5QgPiBnxIFuOyAjNkNENAor5rOVID4gZsSDOyAjNkNENQor5rOWID4gbcSDbzsgIzZDRDYKK+azlyA+IHPDrDsgIzZDRDcKK+azmCA+IGjFqzsgIzZDRDgKK+azmSA+IHDDrW5nOyAjNkNEOQor5rOaID4gY8StOyAjNkNEQQor5rObID4gZsOgbjsgIzZDREIKK+aznCA+IGNow607ICM2Q0RDCivms50gPiBzw7k7ICM2Q0RECivms54gPiBuw6xuZzsgIzZDREUKK+aznyA+IGNoxJNuZzsgIzZDREYKK+azoCA+IGzDrW5nOyAjNkNFMAor5rOhID4gcMOgbzsgIzZDRTEKK+azoiA+IGLFjTsgIzZDRTIKK+azoyA+IHHDrDsgIzZDRTMKK+azpCA+IHPDrDsgIzZDRTQKK+azpSA+IG7DrTsgIzZDRTUKK+azpiA+IGrDujsgIzZDRTYKK+azpyA+IHl1w6g7ICM2Q0U3Civms6ggPiB6aMO5OyAjNkNFOAor5rOpID4gc2jEk25nOyAjNkNFOQor5rOqID4gbMOoaTsgIzZDRUEKK+azqyA+IHh1w6BuOyAjNkNFQgor5rOsID4geHXDqDsgIzZDRUMKK+azrSA+IGbFqzsgIzZDRUQKK+azriA+IHDDoG47ICM2Q0VFCivms68gPiBtxK1uOyAjNkNFRgor5rOwID4gdMOgaTsgIzZDRjAKK+azsSA+IHnEgW5nOyAjNkNGMQor5rOyID4gasStOyAjNkNGMgor5rOzID4gecWPbmc7ICM2Q0YzCivms7QgPiBndcOgbjsgIzZDRjQKK+aztSA+IGLDqG5nOyAjNkNGNQor5rO2ID4geHXDqTsgIzZDRjYKK+aztyA+IGzDs25nOyAjNkNGNwor5rO4ID4gbMO6OyAjNkNGOAor5rO6ID4gYsOzOyAjNkNGQQor5rO7ID4geGnDqDsgIzZDRkIKK+azvCA+IHDFjTsgIzZDRkMKK+azvSA+IHrDqTsgIzZDRkQKK+azviA+IGrEq25nOyAjNkNGRQor5rO/ID4gecOtbjsgIzZDRkYKK+a0gCA+IHpoxY11OyAjNkQwMAor5rSBID4gasOtOyAjNkQwMQor5rSCID4gecOsOyAjNkQwMgor5rSDID4gaMWraTsgIzZEMDMKK+a0hCA+IGjDumk7ICM2RDA0CivmtIUgPiB6xa1pOyAjNkQwNQor5rSGID4gY2jDqW5nOyAjNkQwNgor5rSHID4gecSrbjsgIzZEMDcKK+a0iCA+IHfDqWk7ICM2RDA4CivmtIkgPiBow7J1OyAjNkQwOQor5rSKID4gamnDoG47ICM2RDBBCivmtIsgPiB5w6FuZzsgIzZEMEIKK+a0jCA+IGxpw6g7ICM2RDBDCivmtI0gPiBzw6w7ICM2RDBECivmtI4gPiBqw6w7ICM2RDBFCivmtI8gPiDDqXI7ICM2RDBGCivmtJAgPiB4w61uZzsgIzZEMTAKK+a0kSA+IGbDujsgIzZEMTEKK+a0kiA+IHPEgzsgIzZEMTIKK+a0kyA+IHPFrW87ICM2RDEzCivmtJQgPiB6aMStOyAjNkQxNAor5rSVID4gecSrbjsgIzZEMTUKK+a0liA+IHfDujsgIzZEMTYKK+a0lyA+IHjErTsgIzZEMTcKK+a0mCA+IGvEg287ICM2RDE4CivmtJkgPiB6aMWrOyAjNkQxOQor5rSaID4gamnDoG5nOyAjNkQxQQor5rSbID4gbMO5bzsgIzZEMUIKK+a0nSA+IMOgbjsgIzZEMUQKK+a0niA+IGTDsm5nOyAjNkQxRQor5rSfID4gecOtOyAjNkQxRgor5rSgID4gbcOzdTsgIzZEMjAKK+a0oSA+IGzElWk7ICM2RDIxCivmtKIgPiB5xKs7ICM2RDIyCivmtKMgPiBtxK07ICM2RDIzCivmtKQgPiBxdcOhbjsgIzZEMjQKK+a0pSA+IGrEq247ICM2RDI1CivmtKYgPiBtw7I7ICM2RDI2CivmtKcgPiB3xJVpOyAjNkQyNwor5rSoID4geGnDoW87ICM2RDI4CivmtKkgPiB4acOoOyAjNkQyOQor5rSqID4gaMOzbmc7ICM2RDJBCivmtKsgPiB4w7k7ICM2RDJCCivmtKwgPiBzaMO5bzsgIzZEMkMKK+a0rSA+IGt1xIFuZzsgIzZEMkQKK+a0riA+IHTEgW87ICM2RDJFCivmtK8gPiBxacOoOyAjNkQyRgor5rSwID4gasO5OyAjNkQzMAor5rSxID4gxJVyOyAjNkQzMQor5rSyID4gemjFjXU7ICM2RDMyCivmtLMgPiByw7k7ICM2RDMzCivmtLQgPiBww61uZzsgIzZEMzQKK+a0tSA+IHjDum47ICM2RDM1CivmtLYgPiB4xKtvbmc7ICM2RDM2CivmtLcgPiB6aMOsOyAjNkQzNwor5rS4ID4gZ3XEgW5nOyAjNkQzOAor5rS5ID4gaHXDoW47ICM2RDM5CivmtLogPiBtw61uZzsgIzZEM0EKK+a0uyA+IGjDum87ICM2RDNCCivmtLwgPiB3xIE7ICM2RDNDCivmtL0gPiBxacOgOyAjNkQzRAor5rS+ID4gcMOgaTsgIzZEM0UKK+a0vyA+IHfFqzsgIzZEM0YKK+a1gCA+IHHFrTsgIzZENDAKK+a1gSA+IGzDrXU7ICM2RDQxCivmtYIgPiB5w6w7ICM2RDQyCivmtYMgPiBqacOhOyAjNkQ0Mwor5rWEID4gasOsbmc7ICM2RDQ0CivmtYUgPiBxacSDbjsgIzZENDUKK+a1hiA+IGppxIFuZzsgIzZENDYKK+a1hyA+IGppxIFvOyAjNkQ0Nwor5rWIID4gY2jDqW5nOyAjNkQ0OAor5rWJID4gc2jEqzsgIzZENDkKK+a1iiA+IHpow7pvOyAjNkQ0QQor5rWLID4gY8OoOyAjNkQ0Qgor5rWNID4ga3XDoGk7ICM2RDRECivmtY4gPiBqw6w7ICM2RDRFCivmtY8gPiBsw611OyAjNkQ0Rgor5rWQID4gY2jEg247ICM2RDUwCivmtZEgPiBow7puOyAjNkQ1MQor5rWSID4gaMWtOyAjNkQ1Mgor5rWTID4gbsOzbmc7ICM2RDUzCivmtZQgPiB4w7puOyAjNkQ1NAor5rWVID4gasOsbjsgIzZENTUKK+a1liA+IGxpw6g7ICM2RDU2CivmtZcgPiBxw611OyAjNkQ1Nwor5rWYID4gd8SVaTsgIzZENTgKK+a1mSA+IHpow6g7ICM2RDU5CivmtZogPiBqw7luOyAjNkQ1QQor5rWbID4gaMOgbjsgIzZENUIKK+a1nCA+IGLEgW5nOyAjNkQ1Qwor5rWdID4gbcOhbmc7ICM2RDVECivmtZ4gPiB6aMO6bzsgIzZENUUKK+a1nyA+IHnDs3U7ICM2RDVGCivmtaAgPiB4xKs7ICM2RDYwCivmtaEgPiBiw7M7ICM2RDYxCivmtaIgPiBkw7J1OyAjNkQ2Mgor5rWjID4gd8SDbjsgIzZENjMKK+a1pCA+IGjDs25nOyAjNkQ2NAor5rWlID4gecOsOyAjNkQ2NQor5rWmID4gcMWtOyAjNkQ2Ngor5rWnID4gecStbmc7ICM2RDY3CivmtaggPiBsxINuOyAjNkQ2OAor5rWpID4gaMOgbzsgIzZENjkKK+a1qiA+IGzDoG5nOyAjNkQ2QQor5rWrID4gaMSDbjsgIzZENkIKK+a1rCA+IGzErTsgIzZENkMKK+a1rSA+IGfEk25nOyAjNkQ2RAor5rWuID4gZsO6OyAjNkQ2RQor5rWvID4gd8O6OyAjNkQ2Rgor5rWwID4gbGnDoG47ICM2RDcwCivmtbEgPiBjaMO6bjsgIzZENzEKK+a1siA+IGbDqW5nOyAjNkQ3Mgor5rWzID4gecOsOyAjNkQ3Mwor5rW0ID4gecO5OyAjNkQ3NAor5rW1ID4gdMOzbmc7ICM2RDc1CivmtbYgPiBsw6FvOyAjNkQ3Ngor5rW3ID4gaMSDaTsgIzZENzcKK+a1uCA+IGrDrG47ICM2RDc4CivmtbkgPiBqacOhOyAjNkQ3OQor5rW6ID4gY2jFjW5nOyAjNkQ3QQor5rW7ID4gd8SVbmc7ICM2RDdCCivmtbwgPiBtxJVpOyAjNkQ3Qwor5rW9ID4gc8WraTsgIzZEN0QKK+a1viA+IGNoxJNuZzsgIzZEN0UKK+a1vyA+IHDDqGk7ICM2RDdGCivmtoAgPiB4acOgbjsgIzZEODAKK+a2gSA+IHNow6huOyAjNkQ4MQor5raCID4gdMO6OyAjNkQ4Mgor5raDID4ga8O5bjsgIzZEODMKK+a2hCA+IHDEq247ICM2RDg0CivmtoUgPiBuacOoOyAjNkQ4NQor5raGID4gaMOgbjsgIzZEODYKK+a2hyA+IGrEq25nOyAjNkQ4Nwor5raIID4geGnEgW87ICM2RDg4CivmtokgPiBzaMOoOyAjNkQ4OQor5raKID4gbmnDoG47ICM2RDhBCivmtosgPiB0xas7ICM2RDhCCivmtowgPiB5xY9uZzsgIzZEOEMKK+a2jSA+IHhpw6BvOyAjNkQ4RAor5raOID4geGnDoW47ICM2RDhFCivmto8gPiB0xK1uZzsgIzZEOEYKK+a2kCA+IMOpOyAjNkQ5MAor5raRID4gc8O5OyAjNkQ5MQor5raSID4gdMWrbjsgIzZEOTIKK+a2kyA+IGp1xIFuOyAjNkQ5Mwor5raUID4gY8OpbjsgIzZEOTQKK+a2lSA+IHTDrDsgIzZEOTUKK+a2liA+IGzDrDsgIzZEOTYKK+a2lyA+IHNow7lpOyAjNkQ5Nwor5raYID4gc8OsOyAjNkQ5OAor5raZID4gbMOoaTsgIzZEOTkKK+a2miA+IHNow7lpOyAjNkQ5QQor5rabID4gdMSBbzsgIzZEOUIKK+a2nCA+IGTDujsgIzZEOUMKK+a2nSA+IGzDoG87ICM2RDlECivmtp4gPiBsw6FpOyAjNkQ5RQor5rafID4gbGnDoW47ICM2RDlGCivmtqAgPiB3w6lpOyAjNkRBMAor5rahID4gd8WNOyAjNkRBMQor5raiID4gecO6bjsgIzZEQTIKK+a2oyA+IGh1w6BuOyAjNkRBMwor5rakID4gZMOtOyAjNkRBNAor5ramID4gcsO5bjsgIzZEQTYKK+a2pyA+IGppw6BuOyAjNkRBNwor5raoID4gemjEg25nOyAjNkRBOAor5rapID4gc8OoOyAjNkRBOQor5raqID4gZsO6OyAjNkRBQQor5rarID4gZ3XDoG47ICM2REFCCivmtqwgPiB4w6xuZzsgIzZEQUMKK+a2rSA+IHNow7J1OyAjNkRBRAor5rauID4gc2h1w6BuOyAjNkRBRQor5ravID4gecOhOyAjNkRBRgor5rawID4gY2jDuW87ICM2REIwCivmtrEgPiB6aMOgbmc7ICM2REIxCivmtrIgPiB5w6g7ICM2REIyCivmtrMgPiBrxY1uZzsgIzZEQjMKK+a2tCA+IHfDsjsgIzZEQjQKK+a2tSA+IGjDoW47ICM2REI1CivmtrYgPiB0xatvOyAjNkRCNgor5ra3ID4gZMWNbmc7ICM2REI3CivmtrggPiBow6k7ICM2REI4CivmtrkgPiB3xY07ICM2REI5CivmtrogPiBqxas7ICM2REJBCivmtrsgPiBnw6BuOyAjNkRCQgor5ra8ID4gbGnDoW5nOyAjNkRCQwor5ra9ID4gaMWrbjsgIzZEQkQKK+a2viA+IHTDoDsgIzZEQkUKK+a2vyA+IHpow7pvOyAjNkRCRgor5reAID4gZGnDoG47ICM2REMwCivmt4EgPiBxacOoOyAjNkRDMQor5reCID4gZMOpOyAjNkRDMgor5reDID4ganXDoG47ICM2REMzCivmt4QgPiB6xKs7ICM2REM0Civmt4UgPiB4xKs7ICM2REM1Civmt4YgPiB5w6FvOyAjNkRDNgor5reHID4gccOtOyAjNkRDNwor5reIID4gZ8WtOyAjNkRDOAor5reJID4gZ8WtbzsgIzZEQzkKK+a3iiA+IGjDoG47ICM2RENBCivmt4sgPiBsw61uOyAjNkRDQgor5reMID4gdMSDbmc7ICM2RENDCivmt40gPiB6aMWNdTsgIzZEQ0QKK+a3jiA+IHDElW5nOyAjNkRDRQor5rePID4gaMOgbzsgIzZEQ0YKK+a3kCA+IGNoxIFuZzsgIzZERDAKK+a3kSA+IHNow7o7ICM2REQxCivmt5IgPiBxxKs7ICM2REQyCivmt5MgPiBmxIFuZzsgIzZERDMKK+a3lCA+IGNow6w7ICM2REQ0Civmt5UgPiBsw7k7ICM2REQ1Civmt5YgPiBuw6BvOyAjNkRENgor5reXID4gasO6OyAjNkRENwor5reYID4gdMOhbzsgIzZERDgKK+a3mSA+IGPDs25nOyAjNkREOQor5reaID4gbMOoaTsgIzZEREEKK+a3myA+IHpow6w7ICM2RERCCivmt5wgPiBww6luZzsgIzZEREMKK+a3nSA+IGbDqWk7ICM2RERECivmt54gPiBzxY1uZzsgIzZEREUKK+a3nyA+IHRpxINuOyAjNkRERgor5regID4gcMOsOyAjNkRFMAor5rehID4gZMOgbjsgIzZERTEKK+a3oiA+IHnDuTsgIzZERTIKK+a3oyA+IG7DrTsgIzZERTMKK+a3pCA+IHnFqzsgIzZERTQKK+a3pSA+IGzDuTsgIzZERTUKK+a3piA+IGfDoG47ICM2REU2Civmt6cgPiBtw6w7ICM2REU3Civmt6ggPiBqw6xuZzsgIzZERTgKK+a3qSA+IGzDrW5nOyAjNkRFOQor5reqID4gbMO6bjsgIzZERUEKK+a3qyA+IHnDrW47ICM2REVCCivmt6wgPiBjw7lpOyAjNkRFQwor5retID4gccO6OyAjNkRFRAor5reuID4gaHXDoWk7ICM2REVFCivmt68gPiB5w7k7ICM2REVGCivmt7AgPiBuacOgbjsgIzZERjAKK+a3sSA+IHNoxJNuOyAjNkRGMQor5reyID4gcGnDoW87ICM2REYyCivmt7MgPiBjaMO6bjsgIzZERjMKK+a3tCA+IHfDoDsgIzZERjQKK+a3tSA+IHl1xIFuOyAjNkRGNQor5re2ID4gbMOhaTsgIzZERjYKK+a3tyA+IGjFrW47ICM2REY3Civmt7ggPiBxxKtuZzsgIzZERjgKK+a3uSA+IHnEgW47ICM2REY5Civmt7ogPiBxacSDbjsgIzZERkEKK+a3uyA+IHRpxIFuOyAjNkRGQgor5re8ID4gbWnEg287ICM2REZDCivmt70gPiB6aMStOyAjNkRGRAor5re+ID4gecStbjsgIzZERkUKK+a3vyA+IG3DrDsgIzZERkYKK+a4gCA+IGLEk247ICM2RTAwCivmuIEgPiB5dcSBbjsgIzZFMDEKK+a4giA+IHfDqG47ICM2RTAyCivmuIMgPiByw6g7ICM2RTAzCivmuIQgPiBmxJNpOyAjNkUwNAor5riFID4gccSrbmc7ICM2RTA1CivmuIYgPiB5dcSBbjsgIzZFMDYKK+a4hyA+IGvElTsgIzZFMDcKK+a4iCA+IGrDrDsgIzZFMDgKK+a4iSA+IHNow6g7ICM2RTA5CivmuIogPiB5dcSBbjsgIzZFMEEKK+a4jCA+IGzDuTsgIzZFMEMKK+a4jSA+IHrDrDsgIzZFMEQKK+a4jiA+IGTDujsgIzZFMEUKK+a4kCA+IGppw6BuOyAjNkUxMAor5riRID4gbcStbjsgIzZFMTEKK+a4kiA+IHDDrDsgIzZFMTIKK+a4lCA+IHnDujsgIzZFMTQKK+a4lSA+IHl1xIFuOyAjNkUxNQor5riWID4gc2jElW47ICM2RTE2CivmuJcgPiBzaMOobjsgIzZFMTcKK+a4mCA+IHLDs3U7ICM2RTE4CivmuJkgPiBodcOgbjsgIzZFMTkKK+a4miA+IHpoxa07ICM2RTFBCivmuJsgPiBqacSDbjsgIzZFMUIKK+a4nCA+IG51xINuOyAjNkUxQwor5ridID4gecO6OyAjNkUxRAor5rieID4gccOtdTsgIzZFMUUKK+a4nyA+IHTDrW5nOyAjNkUxRgor5rigID4gccO6OyAjNkUyMAor5rihID4gZMO5OyAjNkUyMQor5riiID4gZsOpbmc7ICM2RTIyCivmuKMgPiB6aMSBOyAjNkUyMwor5rikID4gYsOzOyAjNkUyNAor5rilID4gd8OyOyAjNkUyNQor5rimID4gd8WNOyAjNkUyNgor5rinID4gZMOsOyAjNkUyNwor5rioID4gd8STaTsgIzZFMjgKK+a4qSA+IHfEk247ICM2RTI5CivmuKogPiByw7o7ICM2RTJBCivmuKsgPiB4acOoOyAjNkUyQgor5risID4gY8OoOyAjNkUyQwor5ritID4gd8OoaTsgIzZFMkQKK+a4riA+IGfEkzsgIzZFMkUKK+a4ryA+IGfEg25nOyAjNkUyRgor5riwID4gecSDbjsgIzZFMzAKK+a4sSA+IGjDs25nOyAjNkUzMQor5riyID4geHXDoG47ICM2RTMyCivmuLMgPiBtxK07ICM2RTMzCivmuLQgPiBrxJU7ICM2RTM0CivmuLUgPiBtw6FvOyAjNkUzNQor5ri2ID4gecSrbmc7ICM2RTM2CivmuLcgPiB5xINuOyAjNkUzNwor5ri4ID4gecOzdTsgIzZFMzgKK+a4uSA+IGjFjW5nOyAjNkUzOQor5ri6ID4gbWnEg287ICM2RTNBCivmuLsgPiB4xK1uZzsgIzZFM0IKK+a4vCA+IG3ElWk7ICM2RTNDCivmuL0gPiB6xIFpOyAjNkUzRAor5ri+ID4gaMO6bjsgIzZFM0UKK+a4vyA+IG7DoGk7ICM2RTNGCivmuYAgPiBrw7ppOyAjNkU0MAor5rmBID4gc2jDrTsgIzZFNDEKK+a5giA+IMOoOyAjNkU0Mgor5rmDID4gcMOgaTsgIzZFNDMKK+a5hCA+IG3DqWk7ICM2RTQ0CivmuYUgPiBsacOgbjsgIzZFNDUKK+a5hiA+IHHDrDsgIzZFNDYKK+a5hyA+IHHDrDsgIzZFNDcKK+a5iCA+IG3DqWk7ICM2RTQ4CivmuYkgPiB0acOhbjsgIzZFNDkKK+a5iiA+IGPDsnU7ICM2RTRBCivmuYsgPiB3w6lpOyAjNkU0Qgor5rmMID4gY8SBbjsgIzZFNEMKK+a5jSA+IHR1xIFuOyAjNkU0RAor5rmOID4gbWnEg247ICM2RTRFCivmuY8gPiBow7lpOyAjNkU0Rgor5rmQID4gbcOyOyAjNkU1MAor5rmRID4geMWtOyAjNkU1MQor5rmSID4gasOtOyAjNkU1Mgor5rmTID4gcMOpbjsgIzZFNTMKK+a5lCA+IGppxIFuOyAjNkU1NAor5rmVID4gamnEg247ICM2RTU1CivmuZYgPiBow7o7ICM2RTU2CivmuZcgPiBmw6huZzsgIzZFNTcKK+a5mCA+IHhpxIFuZzsgIzZFNTgKK+a5mSA+IHnDrDsgIzZFNTkKK+a5miA+IHnDrG47ICM2RTVBCivmuZsgPiB6aMOgbjsgIzZFNUIKK+a5nCA+IHNow607ICM2RTVDCivmuZ0gPiBqacSTOyAjNkU1RAor5rmeID4gY2jDqW5nOyAjNkU1RQor5rmfID4gaHXDoW5nOyAjNkU1Rgor5rmgID4gdMOgbjsgIzZFNjAKK+a5oSA+IHnDujsgIzZFNjEKK+a5oiA+IGLDrDsgIzZFNjIKK+a5oyA+IG3ErW47ICM2RTYzCivmuaQgPiBzaMSrOyAjNkU2NAor5rmlID4gdMO6OyAjNkU2NQor5rmmID4gc2jEk25nOyAjNkU2Ngor5rmnID4gecWPbmc7ICM2RTY3CivmuaggPiBxw7k7ICM2RTY4CivmuakgPiB6aMOybmc7ICM2RTY5CivmuaogPiBzdcOoaTsgIzZFNkEKK+a5qyA+IGrEq3U7ICM2RTZCCivmuawgPiBqacSDbzsgIzZFNkMKK+a5rSA+IHFpw7N1OyAjNkU2RAor5rmuID4gecSrbjsgIzZFNkUKK+a5ryA+IHTEgW5nOyAjNkU2Rgor5rmwID4gbMOzbmc7ICM2RTcwCivmubEgPiBow7lvOyAjNkU3MQor5rmyID4geXXDoW47ICM2RTcyCivmubMgPiBuxINuOyAjNkU3Mwor5rm0ID4gYsOgbjsgIzZFNzQKK+a5tSA+IHnFj3U7ICM2RTc1CivmubYgPiBxdcOhbjsgIzZFNzYKK+a5tyA+IGNow7ppOyAjNkU3Nwor5rm4ID4gbGnDoG5nOyAjNkU3OAor5rm5ID4gY2jDoW47ICM2RTc5CivmubogPiB5w6FuOyAjNkU3QQor5rm7ID4gY2jDum47ICM2RTdCCivmubwgPiBuacOoOyAjNkU3Qwor5rm9ID4gesSrOyAjNkU3RAor5rm+ID4gd8SBbjsgIzZFN0UKK+a5vyA+IHNoxKs7ICM2RTdGCivmuoAgPiBtxINuOyAjNkU4MAor5rqBID4gecOtbmc7ICM2RTgxCivmuoMgPiBrw7lpOyAjNkU4Mwor5rqFID4gamnDoG47ICM2RTg1CivmuoYgPiB4w7k7ICM2RTg2CivmuocgPiBsx5o7ICM2RTg3CivmuoggPiBnxatpOyAjNkU4OAor5rqJID4gZ8OgaTsgIzZFODkKK+a6jCA+IHDFjTsgIzZFOEMKK+a6jSA+IGrDrG47ICM2RThECivmuo4gPiBnw7lpOyAjNkU4RQor5rqPID4gdMOhbmc7ICM2RThGCivmupAgPiB5dcOhbjsgIzZFOTAKK+a6kSA+IHPFrW87ICM2RTkxCivmupIgPiB5dcOhbjsgIzZFOTIKK+a6kyA+IGxpw6FuOyAjNkU5Mwor5rqUID4gecSDbzsgIzZFOTQKK+a6lSA+IG3DqG5nOyAjNkU5NQor5rqWID4gemjFrW47ICM2RTk2CivmupcgPiBzaMOpbmc7ICM2RTk3CivmupggPiBrw6g7ICM2RTk4CivmupkgPiB0w6BpOyAjNkU5OQor5rqaID4gZMOhOyAjNkU5QQor5rqbID4gd8SBOyAjNkU5Qgor5rqcID4gbMSrdTsgIzZFOUMKK+a6nSA+IGfFjXU7ICM2RTlECivmup4gPiBzxIFvOyAjNkU5RQor5rqfID4gbcOtbmc7ICM2RTlGCivmuqAgPiB6aMOgOyAjNkVBMAor5rqhID4gc2jDrTsgIzZFQTEKK+a6oiA+IHnDrDsgIzZFQTIKK+a6oyA+IGzDum47ICM2RUEzCivmuqQgPiBtxIM7ICM2RUE0CivmuqUgPiBwxa07ICM2RUE1CivmuqYgPiB3w6lpOyAjNkVBNgor5rqnID4gbMOsOyAjNkVBNwor5rqoID4gY8OhaTsgIzZFQTgKK+a6qSA+IHfDuTsgIzZFQTkKK+a6qiA+IHjEqzsgIzZFQUEKK+a6qyA+IHfEk247ICM2RUFCCivmuqwgPiBxacSBbmc7ICM2RUFDCivmuq0gPiB6w6k7ICM2RUFECivmuq4gPiBzaMSrOyAjNkVBRQor5rqvID4gc8O5OyAjNkVBRgor5rqwID4gecSrOyAjNkVCMAor5rqxID4gemjEk247ICM2RUIxCivmurIgPiBzxY11OyAjNkVCMgor5rqzID4gecO6bjsgIzZFQjMKK+a6tCA+IHjDrHU7ICM2RUI0CivmurUgPiB5xKtuOyAjNkVCNQor5rq2ID4gcsOzbmc7ICM2RUI2CivmurcgPiBow7luOyAjNkVCNwor5rq4ID4gc8O5OyAjNkVCOAor5rq5ID4gc8O5OyAjNkVCOQor5rq6ID4gbsOsOyAjNkVCQQor5rq7ID4gdMOgOyAjNkVCQgor5rq8ID4gc2jEqzsgIzZFQkMKK+a6vSA+IHLDuTsgIzZFQkQKK+a6viA+IHfEk2k7ICM2RUJFCivmur8gPiBww6BuOyAjNkVCRgor5ruAID4gY2jDuTsgIzZFQzAKK+a7gSA+IGNow7o7ICM2RUMxCivmu4IgPiBwxIFuZzsgIzZFQzIKK+a7gyA+IHfElW5nOyAjNkVDMwor5ruEID4gY8SBbmc7ICM2RUM0Civmu4UgPiBtacOoOyAjNkVDNQor5ruGID4gaMOpOyAjNkVDNgor5ruHID4gZGnEgW47ICM2RUM3Civmu4ggPiBow6BvOyAjNkVDOAor5ruJID4gaHXEg25nOyAjNkVDOQor5ruKID4geMOsOyAjNkVDQQor5ruLID4gesSrOyAjNkVDQgor5ruMID4gZMOtOyAjNkVDQwor5ruNID4gemjErTsgIzZFQ0QKK+a7jiA+IHnDrW5nOyAjNkVDRQor5ruPID4gZsWtOyAjNkVDRgor5ruQID4gamnDqTsgIzZFRDAKK+a7kSA+IGh1w6E7ICM2RUQxCivmu5IgPiBnxJM7ICM2RUQyCivmu5MgPiB6xK07ICM2RUQzCivmu5QgPiB0xIFvOyAjNkVENAor5ruVID4gdMOpbmc7ICM2RUQ1Civmu5YgPiBzxatpOyAjNkVENgor5ruXID4gYsStOyAjNkVENwor5ruYID4gamnDoG87ICM2RUQ4Civmu5kgPiBow7lpOyAjNkVEOQor5ruaID4gZ8WtbjsgIzZFREEKK+a7myA+IHnDrW47ICM2RURCCivmu5wgPiBnxIFvOyAjNkVEQwor5rudID4gbMOzbmc7ICM2RURECivmu54gPiB6aMOsOyAjNkVERQor5rufID4gecOgbjsgIzZFREYKK+a7oCA+IHNow6g7ICM2RUUwCivmu6EgPiBtxINuOyAjNkVFMQor5ruiID4gecOsbmc7ICM2RUUyCivmu6MgPiBjaMO6bjsgIzZFRTMKK+a7pCA+IGzHnDsgIzZFRTQKK+a7pSA+IGzDoG47ICM2RUU1Civmu6YgPiBsdcOhbjsgIzZFRTYKK+a7qCA+IGLEq247ICM2RUU4Civmu6kgPiB0xIFuOyAjNkVFOQor5ruqID4gecO5OyAjNkVFQQor5rurID4gc8WPdTsgIzZFRUIKK+a7rCA+IGjDuTsgIzZFRUMKK+a7rSA+IGLDrDsgIzZFRUQKK+a7riA+IGJpxIFvOyAjNkVFRQor5ruvID4gemjDrDsgIzZFRUYKK+a7sCA+IGppxINuZzsgIzZFRjAKK+a7sSA+IGvDsnU7ICM2RUYxCivmu7IgPiBzaMOobjsgIzZFRjIKK+a7syA+IHNoxIFuZzsgIzZFRjMKK+a7tCA+IGTEqzsgIzZFRjQKK+a7tSA+IG3DrDsgIzZFRjUKK+a7tiA+IMOhbzsgIzZFRjYKK+a7tyA+IGzFrTsgIzZFRjcKK+a7uCA+IGjFrTsgIzZFRjgKK+a7uSA+IGjFqzsgIzZFRjkKK+a7uiA+IHnDs3U7ICM2RUZBCivmu7sgPiBjaMSDbjsgIzZFRkIKK+a7vCA+IGbDoG47ICM2RUZDCivmu70gPiB5w7NuZzsgIzZFRkQKK+a7viA+IGfFrW47ICM2RUZFCivmu78gPiBtxINuOyAjNkVGRgor5ryAID4gccOsbmc7ICM2RjAwCivmvIEgPiB5w7o7ICM2RjAxCivmvIIgPiBwacSBbzsgIzZGMDIKK+a8gyA+IGrDrTsgIzZGMDMKK+a8hCA+IHnDoTsgIzZGMDQKK+a8hSA+IGppxINvOyAjNkYwNQor5ryGID4gccSrOyAjNkYwNgor5ryHID4geMStOyAjNkYwNwor5ryIID4gasOsOyAjNkYwOAor5ryJID4gbMO5OyAjNkYwOQor5ryKID4gbMeaOyAjNkYwQQor5ryLID4gbMOzbmc7ICM2RjBCCivmvIwgPiBqxK1uOyAjNkYwQwor5ryNID4gZ8O6bzsgIzZGMEQKK+a8jiA+IGPDs25nOyAjNkYwRQor5ryPID4gbMOydTsgIzZGMEYKK+a8kCA+IHpow607ICM2RjEwCivmvJEgPiBnw6BpOyAjNkYxMQor5rySID4gcWnDoW5nOyAjNkYxMgor5ryTID4gbMOtOyAjNkYxMwor5ryUID4gecSDbjsgIzZGMTQKK+a8lSA+IGPDoW87ICM2RjE1CivmvJYgPiBqacOgbzsgIzZGMTYKK+a8lyA+IGPFjW5nOyAjNkYxNwor5ryYID4gccO6bjsgIzZGMTgKK+a8mSA+IHR1w6FuOyAjNkYxOQor5ryaID4gw7J1OyAjNkYxQQor5rybID4gdMOpbmc7ICM2RjFCCivmvJwgPiB5xJU7ICM2RjFDCivmvJ0gPiB4w607ICM2RjFECivmvJ4gPiBtw6w7ICM2RjFFCivmvJ8gPiB0w6FuZzsgIzZGMUYKK+a8oCA+IG3DsjsgIzZGMjAKK+a8oSA+IHNoxIFuZzsgIzZGMjEKK+a8oiA+IGjDoG47ICM2RjIyCivmvKMgPiBsacOhbjsgIzZGMjMKK+a8pCA+IGzEg247ICM2RjI0CivmvKUgPiB3xIE7ICM2RjI1CivmvKYgPiBsw607ICM2RjI2CivmvKcgPiBxacOhbjsgIzZGMjcKK+a8qCA+IGbDqW5nOyAjNkYyOAor5rypID4geHXDoW47ICM2RjI5CivmvKogPiB5xKs7ICM2RjJBCivmvKsgPiBtw6BuOyAjNkYyQgor5rysID4gesOsOyAjNkYyQwor5rytID4gbcSDbmc7ICM2RjJECivmvK4gPiBrxIFuZzsgIzZGMkUKK+a8ryA+IGzElWk7ICM2RjJGCivmvLAgPiBwxJNuZzsgIzZGMzAKK+a8sSA+IHNow7k7ICM2RjMxCivmvLIgPiB6aMSDbmc7ICM2RjMyCivmvLMgPiB6aMSBbmc7ICM2RjMzCivmvLQgPiBjaMOzbmc7ICM2RjM0CivmvLUgPiB4w7k7ICM2RjM1CivmvLYgPiBodcOgbjsgIzZGMzYKK+a8tyA+IGvDuW87ICM2RjM3CivmvLggPiBqacOgbjsgIzZGMzgKK+a8uSA+IHnEgW47ICM2RjM5CivmvLogPiBjaHXEg25nOyAjNkYzQQor5ry7ID4gbGnDoW87ICM2RjNCCivmvLwgPiBjxa1pOyAjNkYzQwor5ry9ID4gdMOtOyAjNkYzRAor5ry+ID4gecOgbmc7ICM2RjNFCivmvL8gPiBqacSBbmc7ICM2RjNGCivmvYAgPiBjw7NuZzsgIzZGNDAKK+a9gSA+IHnErW5nOyAjNkY0MQor5r2CID4gaMOzbmc7ICM2RjQyCivmvYMgPiB4w7puOyAjNkY0Mwor5r2EID4gc2jDuTsgIzZGNDQKK+a9hSA+IGd1w6BuOyAjNkY0NQor5r2GID4gecOtbmc7ICM2RjQ2CivmvYcgPiB4acSBbzsgIzZGNDcKK+a9iiA+IHjDuTsgIzZGNEEKK+a9iyA+IGxpw6BuOyAjNkY0Qgor5r2MID4gemjDrDsgIzZGNEMKK+a9jSA+IHfDqWk7ICM2RjRECivmvY4gPiBww6w7ICM2RjRFCivmvY8gPiBqdcOpOyAjNkY0Rgor5r2QID4gamnDoG87ICM2RjUwCivmvZEgPiBwxY07ICM2RjUxCivmvZIgPiBkw6BuZzsgIzZGNTIKK+a9kyA+IGjDuWk7ICM2RjUzCivmvZQgPiBqacOpOyAjNkY1NAor5r2VID4gd8WtOyAjNkY1NQor5r2WID4gcMOhOyAjNkY1Ngor5r2XID4gasOtOyAjNkY1Nwor5r2YID4gcMSBbjsgIzZGNTgKK+a9mSA+IGfDumk7ICM2RjU5CivmvZogPiB4acSBbzsgIzZGNUEKK+a9myA+IHFpw6FuOyAjNkY1Qgor5r2cID4gcWnDoW47ICM2RjVDCivmvZ0gPiB4xKs7ICM2RjVECivmvZ4gPiBsw7k7ICM2RjVFCivmvZ8gPiB4w6w7ICM2RjVGCivmvaAgPiB4dcOgbjsgIzZGNjAKK+a9oSA+IGTDuW47ICM2RjYxCivmvaIgPiBodcOhbmc7ICM2RjYyCivmvaMgPiBtxK1uOyAjNkY2Mwor5r2kID4gcsO5bjsgIzZGNjQKK+a9pSA+IHPDuTsgIzZGNjUKK+a9piA+IGxpw6FvOyAjNkY2Ngor5r2nID4gemjEk247ICM2RjY3CivmvaggPiB6aMWNbmc7ICM2RjY4CivmvakgPiB5w6w7ICM2RjY5CivmvaogPiBkw607ICM2RjZBCivmvasgPiB3xIFuOyAjNkY2Qgor5r2sID4gZMOgbjsgIzZGNkMKK+a9rSA+IHTDoW47ICM2RjZECivmva4gPiBjaMOhbzsgIzZGNkUKK+a9ryA+IHjDum47ICM2RjZGCivmvbAgPiBrw7lpOyAjNkY3MAor5r2xID4geWllOyAjNkY3MQor5r2yID4gc2jDoG87ICM2RjcyCivmvbMgPiB0w7o7ICM2RjczCivmvbQgPiB6aMWrOyAjNkY3NAor5r21ID4gc8OgbjsgIzZGNzUKK+a9tiA+IGjEk2k7ICM2Rjc2CivmvbcgPiBixK07ICM2Rjc3CivmvbggPiBzaMSBbjsgIzZGNzgKK+a9uSA+IGNow6FuOyAjNkY3OQor5r26ID4gY2jDoW47ICM2RjdBCivmvbsgPiBzaMWtOyAjNkY3Qgor5r28ID4gdMOzbmc7ICM2RjdDCivmvb0gPiBwxa07ICM2RjdECivmvb4gPiBsw61uOyAjNkY3RQor5r2/ID4gd8OpaTsgIzZGN0YKK+a+gCA+IHPDqDsgIzZGODAKK+a+gSA+IHPDqDsgIzZGODEKK+a+giA+IGNow6luZzsgIzZGODIKK+a+gyA+IGrDrG9uZzsgIzZGODMKK+a+hCA+IGNow6luZzsgIzZGODQKK+a+hSA+IGh1w6A7ICM2Rjg1CivmvoYgPiBqacSBbzsgIzZGODYKK+a+hyA+IGzDoG87ICM2Rjg3CivmvoggPiBjaMOoOyAjNkY4OAor5r6JID4gZ8SDbjsgIzZGODkKK+a+iiA+IGPFq247ICM2RjhBCivmvosgPiBow6huZzsgIzZGOEIKK+a+jCA+IHPEqzsgIzZGOEMKK+a+jSA+IHNow7k7ICM2RjhECivmvo4gPiBww6luZzsgIzZGOEUKK+a+jyA+IGjDoG47ICM2RjhGCivmvpAgPiB5w7puOyAjNkY5MAor5r6RID4gbMOsdTsgIzZGOTEKK+a+kiA+IGjDsm5nOyAjNkY5Mgor5r6TID4gZsO6OyAjNkY5Mwor5r6UID4gaMOgbzsgIzZGOTQKK+a+lSA+IGjDqTsgIzZGOTUKK+a+liA+IHhpxIFuOyAjNkY5Ngor5r6XID4gamnDoG47ICM2Rjk3CivmvpggPiBzaMSBbjsgIzZGOTgKK+a+mSA+IHjDrDsgIzZGOTkKK+a+nCA+IGzDoW47ICM2RjlDCivmvp4gPiB5w7o7ICM2RjlFCivmvp8gPiBsxK1uOyAjNkY5Rgor5r6gID4gbcStbjsgIzZGQTAKK+a+oSA+IHrEg287ICM2RkExCivmvqIgPiBkxIFuZzsgIzZGQTIKK+a+oyA+IHfEg247ICM2RkEzCivmvqQgPiB6w6k7ICM2RkE0CivmvqUgPiB4acOoOyAjNkZBNQor5r6mID4gecO5OyAjNkZBNgor5r6nID4gbMStOyAjNkZBNwor5r6oID4gc2jDrDsgIzZGQTgKK+a+qSA+IHh1w6k7ICM2RkE5CivmvqogPiBsw61uZzsgIzZGQUEKK+a+qyA+IG3DoG47ICM2RkFCCivmvqwgPiB6xKs7ICM2RkFDCivmvq0gPiB5xY1uZzsgIzZGQUQKK+a+riA+IGt1w6BpOyAjNkZBRQor5r6vID4gY8OgbjsgIzZGQUYKK+a+sCA+IGxpw6BuOyAjNkZCMAor5r6xID4gZGnDoG47ICM2RkIxCivmvrIgPiB5w6g7ICM2RkIyCivmvrMgPiDDoG87ICM2RkIzCivmvrQgPiBodcOhbjsgIzZGQjQKK+a+tSA+IHpoxJNuOyAjNkZCNQor5r62ID4gY2jDoW47ICM2RkI2CivmvrcgPiBtw6BuOyAjNkZCNwor5r64ID4gZMSDbjsgIzZGQjgKK+a+uSA+IGTDoG47ICM2RkI5CivmvrogPiB5w6w7ICM2RkJBCivmvrsgPiBzw7lpOyAjNkZCQgor5r68ID4gcMOsOyAjNkZCQwor5r69ID4gasO5OyAjNkZCRAor5r6+ID4gdMOgOyAjNkZCRQor5r6/ID4gccOtbjsgIzZGQkYKK+a/gCA+IGrEqzsgIzZGQzAKK+a/gSA+IHpow7pvOyAjNkZDMQor5r+CID4gbGnDoW47ICM2RkMyCivmv4MgPiBuw7NuZzsgIzZGQzMKK+a/hCA+IGfFq287ICM2RkM0Civmv4UgPiBqw6xuOyAjNkZDNQor5r+GID4gZsOpbjsgIzZGQzYKK+a/hyA+IHPDqDsgIzZGQzcKK+a/iCA+IGrDrTsgIzZGQzgKK+a/iSA+IHPFq2k7ICM2RkM5Civmv4ogPiBow7lpOyAjNkZDQQor5r+LID4gY2jFrTsgIzZGQ0IKK+a/jCA+IHTDoDsgIzZGQ0MKK+a/jSA+IHPFjW5nOyAjNkZDRAor5r+OID4gZMStbmc7ICM2RkNFCivmv5AgPiB6aMWtOyAjNkZEMAor5r+RID4gbMOgaTsgIzZGRDEKK+a/kiA+IGLEq247ICM2RkQyCivmv5MgPiBsacOhbjsgIzZGRDMKK+a/lCA+IG3ErTsgIzZGRDQKK+a/lSA+IHNoxKs7ICM2RkQ1Civmv5YgPiBzaMO5OyAjNkZENgor5r+XID4gbcOsOyAjNkZENwor5r+YID4gbsOsbmc7ICM2RkQ4Civmv5kgPiB5w61uZzsgIzZGRDkKK+a/miA+IHnDrW5nOyAjNkZEQQor5r+bID4gbcOpbmc7ICM2RkRCCivmv5wgPiBqw6xuOyAjNkZEQwor5r+dID4gccOtOyAjNkZERAor5r+eID4gcMOsOyAjNkZERQor5r+fID4gasOsOyAjNkZERgor5r+gID4gaMOhbzsgIzZGRTAKK+a/oSA+IHLDujsgIzZGRTEKK+a/oiA+IHrFrWk7ICM2RkUyCivmv6MgPiB3w7I7ICM2RkUzCivmv6QgPiB0xIFvOyAjNkZFNAor5r+lID4gecOsbjsgIzZGRTUKK+a/piA+IHnErW47ICM2RkU2Civmv6cgPiBkw7lpOyAjNkZFNwor5r+oID4gY8OtOyAjNkZFOAor5r+pID4gaMO5bzsgIzZGRTkKK+a/qiA+IGrDrG5nOyAjNkZFQQor5r+rID4gbMOgbjsgIzZGRUIKK+a/rCA+IGrDuW47ICM2RkVDCivmv60gPiDDoGk7ICM2RkVECivmv64gPiBwxas7ICM2RkVFCivmv68gPiB6aMO6bzsgIzZGRUYKK+a/sCA+IHfDqWk7ICM2RkYwCivmv7EgPiBixKtuOyAjNkZGMQor5r+yID4gZ8WtOyAjNkZGMgor5r+zID4gcWnDoW47ICM2RkYzCivmv7QgPiB4w61uZzsgIzZGRjQKK+a/tiA+IGvDuW87ICM2RkY2Civmv7cgPiBmw6hpOyAjNkZGNwor5r+6ID4gamnDoG47ICM2RkZBCivmv7sgPiB3xJVpOyAjNkZGQgor5r+8ID4gbMO5bzsgIzZGRkMKK+a/vSA+IHrDoG47ICM2RkZECivmv74gPiBsx5w7ICM2RkZFCivmv78gPiBsw6w7ICM2RkZGCivngIAgPiB5xY11OyAjNzAwMAor54CBID4gecOgbmc7ICM3MDAxCivngIIgPiBsxa07ICM3MDAyCivngIMgPiBzw6w7ICM3MDAzCivngIQgPiBqacOpOyAjNzAwNAor54CFID4gecOsbmc7ICM3MDA1CivngIYgPiBkw7o7ICM3MDA2CivngIcgPiB3xINuZzsgIzcwMDcKK+eAiCA+IGjFq2k7ICM3MDA4CivngIkgPiB4acOoOyAjNzAwOQor54CKID4gcMOhbjsgIzcwMEEKK+eAiyA+IHNoxJVuOyAjNzAwQgor54CMID4gYmnEgW87ICM3MDBDCivngI0gPiBjaMOhbjsgIzcwMEQKK+eAjiA+IG3DsjsgIzcwMEUKK+eAjyA+IGzDrXU7ICM3MDBGCivngJAgPiBqacSBbjsgIzcwMTAKK+eAkSA+IHDDuTsgIzcwMTEKK+eAkiA+IHPDqDsgIzcwMTIKK+eAkyA+IGNow6luZzsgIzcwMTMKK+eAlCA+IGfFrTsgIzcwMTQKK+eAlSA+IGLEq247ICM3MDE1CivngJYgPiBow7lvOyAjNzAxNgor54CXID4geGnDoG47ICM3MDE3CivngJggPiBsw7o7ICM3MDE4CivngJkgPiBxxKtuOyAjNzAxOQor54CaID4gaMOgbjsgIzcwMUEKK+eAmyA+IHnDrW5nOyAjNzAxQgor54CcID4gecWNbmc7ICM3MDFDCivngJ0gPiBsw6w7ICM3MDFECivngJ4gPiBqw6xuZzsgIzcwMUUKK+eAnyA+IHhpxIFvOyAjNzAxRgor54CgID4gecOtbmc7ICM3MDIwCivngKEgPiBzxa1pOyAjNzAyMQor54CiID4gd8OpaTsgIzcwMjIKK+eAoyA+IHhpw6g7ICM3MDIzCivngKQgPiBodcOhaTsgIzcwMjQKK+eApSA+IGjDoG87ICM3MDI1CivngKYgPiB6aMWrOyAjNzAyNgor54CnID4gbMOzbmc7ICM3MDI3CivngKggPiBsw6BpOyAjNzAyOAor54CpID4gZMO5aTsgIzcwMjkKK+eAqiA+IGbDoW47ICM3MDJBCivngKsgPiBow7o7ICM3MDJCCivngKwgPiBsw6BpOyAjNzAyQwor54CvID4gecOtbmc7ICM3MDJGCivngLAgPiBtw607ICM3MDMwCivngLEgPiBqw6w7ICM3MDMxCivngLIgPiBsacOgbjsgIzcwMzIKK+eAsyA+IGppw6BuOyAjNzAzMwor54C0ID4gecStbmc7ICM3MDM0CivngLUgPiBmw6huOyAjNzAzNQor54C2ID4gbMOtbjsgIzcwMzYKK+eAtyA+IHnDrDsgIzcwMzcKK+eAuCA+IGppxIFuOyAjNzAzOAor54C5ID4geXXDqDsgIzcwMzkKK+eAuiA+IGNow6FuOyAjNzAzQQor54C7ID4gZMOgaTsgIzcwM0IKK+eAvCA+IHLDoW5nOyAjNzAzQwor54C9ID4gamnEg247ICM3MDNECivngL4gPiBsw6FuOyAjNzAzRQor54C/ID4gZsOhbjsgIzcwM0YKK+eBgCA+IHNodcOgbmc7ICM3MDQwCivngYEgPiB5dcSBbjsgIzcwNDEKK+eBgiA+IHpow7pvOyAjNzA0Mgor54GDID4gZsSTbmc7ICM3MDQzCivngYQgPiBzaMOoOyAjNzA0NAor54GFID4gbMSVaTsgIzcwNDUKK+eBhiA+IGzDoW47ICM3MDQ2CivngYcgPiBjw7NuZzsgIzcwNDcKK+eBiCA+IHHDujsgIzcwNDgKK+eBiSA+IHnFjW5nOyAjNzA0OQor54GKID4gcWnDoW47ICM3MDRBCivngYsgPiBmxIM7ICM3MDRCCivngYwgPiBndcOgbjsgIzcwNEMKK+eBjSA+IHF1w6g7ICM3MDRECivngY4gPiB5w6BuOyAjNzA0RQor54GPID4gaMOgbzsgIzcwNEYKK+eBkSA+IHPEgzsgIzcwNTEKK+eBkiA+IHrDoG47ICM3MDUyCivngZMgPiBsdcOhbjsgIzcwNTMKK+eBlCA+IHnDoG47ICM3MDU0CivngZUgPiBsw607ICM3MDU1CivngZYgPiBtxK07ICM3MDU2CivngZcgPiBzaMOgbjsgIzcwNTcKK+eBmCA+IHTEgW47ICM3MDU4CivngZkgPiBkxINuZzsgIzcwNTkKK+eBmiA+IGppxINvOyAjNzA1QQor54GbID4gY2jEg247ICM3MDVCCivngZ0gPiBow6BvOyAjNzA1RAor54GeID4gYsOgOyAjNzA1RQor54GfID4gemjDujsgIzcwNUYKK+eBoCA+IGzEg247ICM3MDYwCivngaEgPiBsw6FuOyAjNzA2MQor54GiID4gbsSDbmc7ICM3MDYyCivngaMgPiB3xIFuOyAjNzA2Mwor54GkID4gbHXDoW47ICM3MDY0CivngaUgPiB4w7puOyAjNzA2NQor54GmID4geGnEg247ICM3MDY2CivngacgPiB5w6BuOyAjNzA2Nwor54GoID4gZ8SDbjsgIzcwNjgKK+eBqSA+IHnDoG47ICM3MDY5CivngaogPiB5w7k7ICM3MDZBCivngasgPiBoxa1vOyAjNzA2Qgor54GsID4gc8OsJyAnZGnEg24nICdoxa1vOyAjNzA2Qwor54GtID4gbWnDqDsgIzcwNkQKK+eBriA+IGd1xIFuZzsgIzcwNkUKK+eBryA+IGTEk25nOyAjNzA2Rgor54GwID4gaMWraTsgIzcwNzAKK+eBsSA+IHhpxIFvOyAjNzA3MQor54GyID4geGnEgW87ICM3MDcyCivngbMgPiBoxasxOyAjNzA3Mwor54G0ID4gaMOzbmc7ICM3MDc0CivngbUgPiBsw61uZzsgIzcwNzUKK+eBtiA+IHrDoG87ICM3MDc2CivngbcgPiB6aHXDoG47ICM3MDc3CivngbggPiBqxK11OyAjNzA3OAor54G5ID4gemjDoDsgIzcwNzkKK+eBuiA+IHhpw6g7ICM3MDdBCivngbsgPiBjaMOsOyAjNzA3Qgor54G8ID4gemjDum87ICM3MDdDCivngb0gPiB6xIFpOyAjNzA3RAor54G+ID4gesSBaTsgIzcwN0UKK+eBvyA+IGPDoG47ICM3MDdGCivngoAgPiB5w6FuZzsgIzcwODAKK+eCgSA+IHHDrDsgIzcwODEKK+eCgiA+IHpoxY1uZzsgIzcwODIKK+eCgyA+IGbDqW47ICM3MDgzCivngoQgPiBuxK11OyAjNzA4NAor54KFID4gasStb25nOyAjNzA4NQor54KGID4gd8OpbjsgIzcwODYKK+eChyA+IHDDsjsgIzcwODcKK+eCiCA+IHnDrDsgIzcwODgKK+eCiSA+IGzDujsgIzcwODkKK+eCiiA+IGNoxatpOyAjNzA4QQor54KLID4gcMSrOyAjNzA4Qgor54KMID4ga8OgaTsgIzcwOEMKK+eCjSA+IHDDoG47ICM3MDhECivngo4gPiB5w6FuOyAjNzA4RQor54KPID4ga8OgaTsgIzcwOEYKK+eCkCA+IHDDoG5nOyAjNzA5MAor54KRID4gbcO5OyAjNzA5MQor54KSID4gY2jEg287ICM3MDkyCivngpMgPiBsacOgbzsgIzcwOTMKK+eClCA+IGfDuWk7ICM3MDk0CivngpUgPiBrw6BuZzsgIzcwOTUKK+eCliA+IHTFq247ICM3MDk2CivngpcgPiBndcSBbmc7ICM3MDk3CivngpggPiB4xKtuOyAjNzA5OAor54KZID4gemjDrDsgIzcwOTkKK+eCmiA+IGd1YW5nOyAjNzA5QQor54KbID4gZ3XEgW5nOyAjNzA5Qgor54KcID4gd8SVaTsgIzcwOUMKK+eCnSA+IHFpw6BuZzsgIzcwOUQKK+eCnyA+IGTDoTsgIzcwOUYKK+eCoCA+IHhpw6E7ICM3MEEwCivngqEgPiB6aMSTbmc7ICM3MEExCivngqIgPiB6aMO6OyAjNzBBMgor54KjID4ga8SVOyAjNzBBMwor54KkID4gemjDoG87ICM3MEE0CivngqUgPiBmw7o7ICM3MEE1CivngqYgPiBiw6E7ICM3MEE2CivngqcgPiBkw7lvOyAjNzBBNwor54KoID4gZMO5bzsgIzcwQTgKK+eCqSA+IGzDrG5nOyAjNzBBOQor54KqID4gemjDum87ICM3MEFBCivngqsgPiB4dcOgbjsgIzcwQUIKK+eCrCA+IGrDuTsgIzcwQUMKK+eCrSA+IHTDoG47ICM3MEFECivngq4gPiBww6BvOyAjNzBBRQor54KvID4gasStb25nOyAjNzBBRgor54KwID4gcMOhbzsgIzcwQjAKK+eCsSA+IHTDoWk7ICM3MEIxCivngrIgPiB0w6FpOyAjNzBCMgor54KzID4gYsStbmc7ICM3MEIzCivngrQgPiB5xINuZzsgIzcwQjQKK+eCtSA+IHTFjW5nOyAjNzBCNQor54K2ID4gaMSBbjsgIzcwQjYKK+eCtyA+IHpow7k7ICM3MEI3CivngrggPiB6aMOgOyAjNzBCOAor54K5ID4gZGnEg247ICM3MEI5CivngrogPiB3w6hpOyAjNzBCQQor54K7ID4gc2jDrTsgIzcwQkIKK+eCvCA+IGxpw6BuOyAjNzBCQwor54K9ID4gY2jDrDsgIzcwQkQKK+eCviA+IGh1xINuZzsgIzcwQkUKK+eDgCA+IGjFqzsgIzcwQzAKK+eDgSA+IHNow7lvOyAjNzBDMQor54OCID4gbMOgbjsgIzcwQzIKK+eDgyA+IGrErW5nOyAjNzBDMwor54OEID4gamnEg287ICM3MEM0Civng4UgPiB4w7k7ICM3MEM1Civng4YgPiB4w61uZzsgIzcwQzYKK+eDhyA+IHF1w6BuOyAjNzBDNwor54OIID4gbGnDqDsgIzcwQzgKK+eDiSA+IGh1w6BuOyAjNzBDOQor54OKID4gecOhbmc7ICM3MENBCivng4sgPiB4acSBbzsgIzcwQ0IKK+eDjCA+IHjEq3U7ICM3MENDCivng40gPiB4acSDbjsgIzcwQ0QKK+eDjiA+IHnDrW47ICM3MENFCivng48gPiB3xas7ICM3MENGCivng5AgPiB6aMWNdTsgIzcwRDAKK+eDkSA+IHnDoW87ICM3MEQxCivng5IgPiBzaMOsOyAjNzBEMgor54OTID4gd8STaTsgIzcwRDMKK+eDlCA+IHTDs25nOyAjNzBENAor54OVID4geHXDqDsgIzcwRDUKK+eDliA+IHrEgWk7ICM3MEQ2Civng5cgPiBrw6BpOyAjNzBENwor54OYID4gaMWNbmc7ICM3MEQ4Civng5kgPiBsw7lvOyAjNzBEOQor54OaID4geGnDoTsgIzcwREEKK+eDmyA+IHpow7o7ICM3MERCCivng5wgPiB4dcSDbjsgIzcwREMKK+eDnSA+IHpoxJNuZzsgIzcwREQKK+eDniA+IHDDsjsgIzcwREUKK+eDnyA+IHnEgW47ICM3MERGCivng6AgPiBoxa1pOyAjNzBFMAor54OhID4gZ3XEgW5nOyAjNzBFMQor54OiID4gemjDqDsgIzcwRTIKK+eDoyA+IGjFq2k7ICM3MEUzCivng6QgPiBrxINvOyAjNzBFNAor54OmID4gZsOhbjsgIzcwRTYKK+eDpyA+IHNoxIFvOyAjNzBFNwor54OoID4gecOoOyAjNzBFOAor54OpID4gaMO5aTsgIzcwRTkKK+eDqyA+IHTDoG5nOyAjNzBFQgor54OsID4gasOsbjsgIzcwRUMKK+eDrSA+IHLDqDsgIzcwRUQKK+eDryA+IHjEqzsgIzcwRUYKK+eDsCA+IGbDujsgIzcwRjAKK+eDsSA+IGrErW9uZzsgIzcwRjEKK+eDsiA+IGNow6g7ICM3MEYyCivng7MgPiBwxa07ICM3MEYzCivng7QgPiBqxK1uZzsgIzcwRjQKK+eDtSA+IHpow7pvOyAjNzBGNQor54O2ID4gdMStbmc7ICM3MEY2Civng7cgPiB3w6FuOyAjNzBGNwor54O4ID4gaMSDaTsgIzcwRjgKK+eDuSA+IHDEk25nOyAjNzBGOQor54O6ID4gbMSDbmc7ICM3MEZBCivng7sgPiBzaMSBbjsgIzcwRkIKK+eDvCA+IGjFqzsgIzcwRkMKK+eDvSA+IGbEk25nOyAjNzBGRAor54O+ID4gY2jDrDsgIzcwRkUKK+eDvyA+IHLDs25nOyAjNzBGRgor54SAID4gaMO6OyAjNzEwMAor54SBID4geGk7ICM3MTAxCivnhIIgPiBzaMO6OyAjNzEwMgor54SDID4gaMOoOyAjNzEwMwor54SEID4geMWrbjsgIzcxMDQKK+eEhSA+IGvDuTsgIzcxMDUKK+eEhiA+IGp1w6k7ICM3MTA2CivnhIcgPiB4acSBbzsgIzcxMDcKK+eEiCA+IHjEqzsgIzcxMDgKK+eEiSA+IHnEgW47ICM3MTA5CivnhIogPiBow6BuOyAjNzEwQQor54SLID4gemh1w6BuZzsgIzcxMEIKK+eEjCA+IGrDuW47ICM3MTBDCivnhI0gPiBkw6w7ICM3MTBECivnhI4gPiB4acOoOyAjNzEwRQor54SPID4gasOtOyAjNzEwRgor54SQID4gd8O5OyAjNzExMAor54STID4gaMOhbjsgIzcxMTMKK+eElCA+IHnDoG47ICM3MTE0CivnhJUgPiBodcOgbjsgIzcxMTUKK+eEliA+IG3DqG47ICM3MTE2CivnhJcgPiBqw7o7ICM3MTE3CivnhJggPiBjaMOzdTsgIzcxMTgKK+eEmSA+IGLDqGk7ICM3MTE5CivnhJogPiBmw6luOyAjNzExQQor54SbID4gbMOsbjsgIzcxMUIKK+eEnCA+IGvFq247ICM3MTFDCivnhJ0gPiBow7luOyAjNzExRAor54SeID4gdMWrbjsgIzcxMUUKK+eEnyA+IHjDrTsgIzcxMUYKK+eEoCA+IGPDuWk7ICM3MTIwCivnhKEgPiB3w7o7ICM3MTIxCivnhKIgPiBoxY1uZzsgIzcxMjIKK+eEoyA+IGrDuTsgIzcxMjMKK+eEpCA+IGbFrTsgIzcxMjQKK+eEpSA+IHfDsjsgIzcxMjUKK+eEpiA+IGppxIFvOyAjNzEyNgor54SnID4gY8WNbmc7ICM3MTI3CivnhKggPiBmw6huZzsgIzcxMjgKK+eEqSA+IHDEq25nOyAjNzEyOQor54SqID4gccSrb25nOyAjNzEyQQor54SrID4gcsO5bzsgIzcxMkIKK+eErCA+IHjDrTsgIzcxMkMKK+eErSA+IHHDrW9uZzsgIzcxMkQKK+eEriA+IHjDrG47ICM3MTJFCivnhK8gPiB6aMO6bzsgIzcxMkYKK+eEsCA+IHnDoG47ICM3MTMwCivnhLEgPiB5w6BuOyAjNzEzMQor54SyID4gecOsOyAjNzEzMgor54SzID4ganXDqTsgIzcxMzMKK+eEtCA+IHnDuTsgIzcxMzQKK+eEtSA+IGfDoG5nOyAjNzEzNQor54S2ID4gcsOhbjsgIzcxMzYKK+eEtyA+IHDDrTsgIzcxMzcKK+eEuCA+IGfFrTsgIzcxMzgKK+eEuiA+IHNoxJNuZzsgIzcxM0EKK+eEuyA+IGNow6BuZzsgIzcxM0IKK+eEvCA+IHNoxIFvOyAjNzEzQwor54WBID4gY2jDqW47ICM3MTQxCivnhYIgPiBow6g7ICM3MTQyCivnhYMgPiBrxa1pOyAjNzE0Mwor54WEID4gemjFjW5nOyAjNzE0NAor54WFID4gZHXDoG47ICM3MTQ1CivnhYYgPiB4acSBOyAjNzE0Ngor54WHID4gaMWraTsgIzcxNDcKK+eFiCA+IGbDqG5nOyAjNzE0OAor54WJID4gbGnDoG47ICM3MTQ5CivnhYogPiB4dcSBbjsgIzcxNEEKK+eFiyA+IHjEq25nOyAjNzE0Qgor54WMID4gaHXDoW5nOyAjNzE0Qwor54WNID4gamnEg287ICM3MTRECivnhY4gPiBqacSBbjsgIzcxNEUKK+eFjyA+IGLDrDsgIzcxNEYKK+eFkCA+IHnEq25nOyAjNzE1MAor54WRID4gemjFrTsgIzcxNTEKK+eFkiA+IHfElWk7ICM3MTUyCivnhZMgPiB0dcSBbjsgIzcxNTMKK+eFlCA+IHRpw6BuOyAjNzE1NAor54WVID4geMSrOyAjNzE1NQor54WWID4gbnXEg247ICM3MTU2CivnhZcgPiBudcSDbjsgIzcxNTcKK+eFmCA+IGNow6FuOyAjNzE1OAor54WZID4gecSBbjsgIzcxNTkKK+eFmiA+IGrErW9uZzsgIzcxNUEKK+eFmyA+IGrErW9uZzsgIzcxNUIKK+eFnCA+IHnDuTsgIzcxNUMKK+eFnSA+IG3DqGk7ICM3MTVECivnhZ4gPiBzaMOgOyAjNzE1RQor54WfID4gd8OoaTsgIzcxNUYKK+eFoCA+IHnDqDsgIzcxNjAKK+eFoSA+IHjDrG47ICM3MTYxCivnhaIgPiBxw61vbmc7ICM3MTYyCivnhaMgPiByxY91OyAjNzE2Mwor54WkID4gbcOpaTsgIzcxNjQKK+eFpSA+IGh1w6BuOyAjNzE2NQor54WmID4geMWtOyAjNzE2Ngor54WnID4gemjDoG87ICM3MTY3CivnhaggPiB3xJNpOyAjNzE2OAor54WpID4gZsOhbjsgIzcxNjkKK+eFqiA+IHHDrXU7ICM3MTZBCivnhasgPiBzw7lpOyAjNzE2Qgor54WsID4gecOhbmc7ICM3MTZDCivnha0gPiBsacOoOyAjNzE2RAor54WuID4gemjFrTsgIzcxNkUKK+eFryA+IGppZTsgIzcxNkYKK+eFsCA+IGfDoG87ICM3MTcwCivnhbEgPiBndcSBOyAjNzE3MQor54WyID4gYsOgbzsgIzcxNzIKK+eFsyA+IGjDujsgIzcxNzMKK+eFtCA+IHnFq247ICM3MTc0CivnhbUgPiB4acSBOyAjNzE3NQor54W4ID4gYmnEgW47ICM3MTc4CivnhbkgPiBnw7J1OyAjNzE3OQor54W6ID4gdMO5aTsgIzcxN0EKK+eFuyA+IHTDoW5nOyAjNzE3Qgor54W8ID4gY2jEg287ICM3MTdDCivnhb0gPiBzaMSBbjsgIzcxN0QKK+eFviA+IG47ICM3MTdFCivnhb8gPiBiw7M7ICM3MTdGCivnhoAgPiBodcSDbmc7ICM3MTgwCivnhoEgPiB4acOpOyAjNzE4MQor54aCID4geMOsOyAjNzE4Mgor54aDID4gd8O5OyAjNzE4Mwor54aEID4geMOtOyAjNzE4NAor54aFID4gecO6bjsgIzcxODUKK+eGhiA+IGjDqTsgIzcxODYKK+eGhyA+IGjDqDsgIzcxODcKK+eGiCA+IHjEqzsgIzcxODgKK+eGiSA+IHnDum47ICM3MTg5CivnhoogPiB4w61vbmc7ICM3MThBCivnhosgPiBuw6FpOyAjNzE4Qgor54aMID4gc2jDoG47ICM3MThDCivnho0gPiBxaW9uZzsgIzcxOEQKK+eGjiA+IHnDoG87ICM3MThFCivnho8gPiB4xatuOyAjNzE4Rgor54aQID4gbcOsOyAjNzE5MAor54aRID4gbGnDoW47ICM3MTkxCivnhpIgPiB5w61uZzsgIzcxOTIKK+eGkyA+IHfDqG47ICM3MTkzCivnhpQgPiByw7NuZzsgIzcxOTQKK+eGlyA+IHFpw6BuZzsgIzcxOTcKK+eGmCA+IGzEq3U7ICM3MTk4CivnhpkgPiB4xKs7ICM3MTk5CivnhpogPiBiw6w7ICM3MTlBCivnhpsgPiBiacSBbzsgIzcxOUIKK+eGnCA+IHrFj25nOyAjNzE5Qwor54adID4gbMO5OyAjNzE5RAor54aeID4gamnEgW47ICM3MTlFCivnhp8gPiBzaMOzdTsgIzcxOUYKK+eGoCA+IHnDrDsgIzcxQTAKK+eGoSA+IGzDs3U7ICM3MUExCivnhqIgPiBmxJNuZzsgIzcxQTIKK+eGoyA+IHPFq2k7ICM3MUEzCivnhqQgPiB5w6w7ICM3MUE0CivnhqUgPiB0xY1uZzsgIzcxQTUKK+eGpiA+IGp1w6k7ICM3MUE2CivnhqcgPiB6xY1uZzsgIzcxQTcKK+eGqCA+IHnDuW47ICM3MUE4CivnhqkgPiBow7k7ICM3MUE5CivnhqogPiB5w607ICM3MUFBCivnhqsgPiB6aMOsOyAjNzFBQgor54asID4gw6FvOyAjNzFBQwor54atID4gd8OoaTsgIzcxQUQKK+eGriA+IGxpw6FvOyAjNzFBRQor54avID4gaMOgbjsgIzcxQUYKK+eGsCA+IMWNdTsgIzcxQjAKK+eGsSA+IHLDqDsgIzcxQjEKK+eGsiA+IGrErW9uZzsgIzcxQjIKK+eGsyA+IG3DoG47ICM3MUIzCivnhrUgPiBzaMSBbmc7ICM3MUI1CivnhrYgPiBjdcOgbjsgIzcxQjYKK+eGtyA+IHrEk25nOyAjNzFCNwor54a4ID4gamnEgW47ICM3MUI4CivnhrkgPiB4xKs7ICM3MUI5CivnhrogPiB4xKs7ICM3MUJBCivnhrsgPiB4xKs7ICM3MUJCCivnhrwgPiB5w6w7ICM3MUJDCivnhr0gPiB4acOgbzsgIzcxQkQKK+eGviA+IGNow6w7ICM3MUJFCivnhr8gPiBodcOhbmc7ICM3MUJGCivnh4AgPiBjaMSDbjsgIzcxQzAKK+eHgSA+IHnDqDsgIzcxQzEKK+eHgiA+IHFpw6FuOyAjNzFDMgor54eDID4gcsOhbjsgIzcxQzMKK+eHhCA+IHnDoG47ICM3MUM0Civnh4UgPiB4acOhbjsgIzcxQzUKK+eHhiA+IHFpw6FvOyAjNzFDNgor54eHID4gesO5bjsgIzcxQzcKK+eHiCA+IGTEk25nOyAjNzFDOAor54eJID4gZMO5bjsgIzcxQzkKK+eHiiA+IHNoxJNuOyAjNzFDQQor54eLID4gamnEgW87ICM3MUNCCivnh4wgPiBmw6luOyAjNzFDQwor54eNID4gc8SrOyAjNzFDRAor54eOID4gbGnDoG87ICM3MUNFCivnh48gPiB5w7k7ICM3MUNGCivnh5AgPiBsw61uOyAjNzFEMAor54eRID4gdMOzbmc7ICM3MUQxCivnh5IgPiBzaMSBbzsgIzcxRDIKK+eHkyA+IGbEk247ICM3MUQzCivnh5QgPiBmw6FuOyAjNzFENAor54eVID4gecOgbjsgIzcxRDUKK+eHliA+IHjDum47ICM3MUQ2Civnh5cgPiBsw6BuOyAjNzFENwor54eYID4gbcSVaTsgIzcxRDgKK+eHmSA+IHTDoG5nOyAjNzFEOQor54eaID4gecSrOyAjNzFEQQor54ebID4gasStbmc7ICM3MURCCivnh5wgPiBtw6huOyAjNzFEQwor54efID4gecOtbmc7ICM3MURGCivnh6AgPiB5w7k7ICM3MUUwCivnh6EgPiB5w6w7ICM3MUUxCivnh6IgPiB4dcOpOyAjNzFFMgor54ejID4gbMOhbjsgIzcxRTMKK+eHpCA+IHTDoGk7ICM3MUU0Civnh6UgPiB6w6BvOyAjNzFFNQor54emID4gY8OgbjsgIzcxRTYKK+eHpyA+IHPDuWk7ICM3MUU3Civnh6ggPiB4xKs7ICM3MUU4Civnh6kgPiBxdcOoOyAjNzFFOQor54eqID4gY8WNbmc7ICM3MUVBCivnh6sgPiBsacOhbjsgIzcxRUIKK+eHrCA+IGjFrWk7ICM3MUVDCivnh60gPiB6aMO6OyAjNzFFRAor54euID4geGnDqDsgIzcxRUUKK+eHryA+IGzDrW5nOyAjNzFFRgor54ewID4gd8STaTsgIzcxRjAKK+eHsSA+IHnDrDsgIzcxRjEKK+eHsiA+IHhpw6k7ICM3MUYyCivnh7MgPiB6aMOgbzsgIzcxRjMKK+eHtCA+IGjDuWk7ICM3MUY0Civnh7cgPiBsw6FuOyAjNzFGNwor54e4ID4gcsO6OyAjNzFGOAor54e5ID4geGnEg247ICM3MUY5Civnh7ogPiBrxINvOyAjNzFGQQor54e7ID4geMWrbjsgIzcxRkIKK+eHvCA+IGrDrG47ICM3MUZDCivnh70gPiBjaMOzdTsgIzcxRkQKK+eHviA+IGNow7N1OyAjNzFGRQor54e/ID4gecOgbzsgIzcxRkYKK+eIgCA+IGjDqDsgIzcyMDAKK+eIgSA+IGzDoG47ICM3MjAxCivniIIgPiBiacSBbzsgIzcyMDIKK+eIgyA+IHLDs25nOyAjNzIwMwor54iEID4gbMOsOyAjNzIwNAor54iFID4gbcOyOyAjNzIwNQor54iGID4gYsOgbzsgIzcyMDYKK+eIhyA+IHLDuW87ICM3MjA3CivniIggPiBsx5g7ICM3MjA4CivniIkgPiBsw6A7ICM3MjA5CivniIogPiDDoW87ICM3MjBBCivniIsgPiB4w7luOyAjNzIwQgor54iMID4ga3XDoG5nOyAjNzIwQwor54iNID4gc2jDuW87ICM3MjBECivniI8gPiBsw6w7ICM3MjBGCivniJAgPiBsw7o7ICM3MjEwCivniJEgPiBqdcOpOyAjNzIxMQor54iSID4gbGnDoG87ICM3MjEyCivniJMgPiB5w6BuOyAjNzIxMwor54iUID4geMSrOyAjNzIxNAor54iVID4geGnDqDsgIzcyMTUKK+eIliA+IGzDs25nOyAjNzIxNgor54iXID4gecOoOyAjNzIxNwor54iZID4gcsSDbmc7ICM3MjE5CivniJogPiB5dcOoOyAjNzIxQQor54ibID4gbMOgbjsgIzcyMUIKK+eInCA+IGPDs25nOyAjNzIxQwor54idID4ganXDqTsgIzcyMUQKK+eIniA+IHTDs25nOyAjNzIxRQor54ifID4gZ3XDoG47ICM3MjFGCivniKEgPiBjaMOoOyAjNzIyMQor54iiID4gbcOtOyAjNzIyMgor54ijID4gdMSDbmc7ICM3MjIzCivniKQgPiBsw6BuOyAjNzIyNAor54ilID4gemjDujsgIzcyMjUKK+eIpyA+IGzDrW5nOyAjNzIyNwor54ioID4gY3XDoG47ICM3MjI4CivniKkgPiB5w7k7ICM3MjI5CivniKogPiB6aHXEgzsgIzcyMkEKK+eIrCA+IHDDoTsgIzcyMkMKK+eIrSA+IHpoxJNuZzsgIzcyMkQKK+eIriA+IHDDoW87ICM3MjJFCivniK8gPiBjaMSTbmc7ICM3MjJGCivniLAgPiB5dcOhbjsgIzcyMzAKK+eIsSA+IMOgaTsgIzcyMzEKK+eIsiA+IHfDqGk7ICM3MjMyCivniLQgPiBqdcOpOyAjNzIzNAor54i1ID4ganXDqTsgIzcyMzUKK+eItiA+IGbDuTsgIzcyMzYKK+eItyA+IHnDqTsgIzcyMzcKK+eIuCA+IGLDoDsgIzcyMzgKK+eIuSA+IGRpxJM7ICM3MjM5CivniLogPiB5w6k7ICM3MjNBCivniLsgPiB5w6FvOyAjNzIzQgor54i8ID4gesWtOyAjNzIzQwor54i9ID4gc2h1xINuZzsgIzcyM0QKK+eIviA+IMSVcjsgIzcyM0UKK+eIvyA+IHFpw6FuZzsgIzcyM0YKK+eJgCA+IGNodcOhbmc7ICM3MjQwCivniYEgPiBnxJM7ICM3MjQxCivniYIgPiB6xIFuZzsgIzcyNDIKK+eJgyA+IGRpw6k7ICM3MjQzCivniYQgPiBxacSBbmc7ICM3MjQ0CivniYUgPiB5w7NuZzsgIzcyNDUKK+eJhiA+IHFpw6FuZzsgIzcyNDYKK+eJhyA+IHBpw6BuOyAjNzI0Nwor54mIID4gYsSDbjsgIzcyNDgKK+eJiSA+IHDDoG47ICM3MjQ5CivniYogPiBzaMOhbzsgIzcyNEEKK+eJiyA+IGppxIFuOyAjNzI0Qgor54mMID4gcMOhaTsgIzcyNEMKK+eJjSA+IGTDujsgIzcyNEQKK+eJjiA+IGNodcSBbmc7ICM3MjRFCivniY8gPiB0w7N1OyAjNzI0Rgor54mQID4gemjDoTsgIzcyNTAKK+eJkSA+IGJpxIFuOyAjNzI1MQor54mSID4gZGnDqTsgIzcyNTIKK+eJkyA+IGLEg25nOyAjNzI1Mwor54mUID4gYsOzOyAjNzI1NAor54mVID4gY2h1xIFuZzsgIzcyNTUKK+eJliA+IHnFj3U7ICM3MjU2CivniZggPiBkw7o7ICM3MjU4CivniZkgPiB5w6E7ICM3MjU5CivniZogPiBjaMOobmc7ICM3MjVBCivniZsgPiBuw611OyAjNzI1Qgor54mdID4gcMOsbjsgIzcyNUQKK+eJniA+IGrEq3U7ICM3MjVFCivniZ8gPiBtw7N1OyAjNzI1Rgor54mgID4gdMWrbzsgIzcyNjAKK+eJoSA+IG3FrTsgIzcyNjEKK+eJoiA+IGzDoW87ICM3MjYyCivniaMgPiByw6huOyAjNzI2Mwor54mkID4gbcOhbmc7ICM3MjY0CivniaUgPiBmxIFuZzsgIzcyNjUKK+eJpiA+IG3DoW87ICM3MjY2CivniacgPiBtw7k7ICM3MjY3CivniaggPiBnxIFuZzsgIzcyNjgKK+eJqSA+IHfDuTsgIzcyNjkKK+eJqiA+IHnDoG47ICM3MjZBCivniasgPiBnxJM7ICM3MjZCCivniawgPiBiw6hpOyAjNzI2Qwor54mtID4gc8OsOyAjNzI2RAor54muID4gamnDoG47ICM3MjZFCivnia8gPiBnxa07ICM3MjZGCivnibAgPiB5w7J1OyAjNzI3MAor54mxID4gZ8STOyAjNzI3MQor54myID4gc2jEk25nOyAjNzI3Mgor54mzID4gbcWtOyAjNzI3Mwor54m0ID4gZMStOyAjNzI3NAor54m1ID4gcWnEgW47ICM3Mjc1CivnibYgPiBxdcOgbjsgIzcyNzYKK+eJtyA+IHF1w6FuOyAjNzI3Nwor54m4ID4gesOsOyAjNzI3OAor54m5ID4gdMOoOyAjNzI3OQor54m6ID4geMSrOyAjNzI3QQor54m7ID4gbcOhbmc7ICM3MjdCCivnibwgPiBrxJNuZzsgIzcyN0MKK+eJvSA+IHFpxIFuOyAjNzI3RAor54m+ID4gd8O6OyAjNzI3RQor54m/ID4gZ8O5OyAjNzI3Rgor54qAID4geMSrOyAjNzI4MAor54qBID4gbMOtOyAjNzI4MQor54qCID4gbMOtOyAjNzI4Mgor54qDID4gcMWPdTsgIzcyODMKK+eKhCA+IGrEqzsgIzcyODQKK+eKhSA+IGfEgW5nOyAjNzI4NQor54qGID4gemjDrTsgIzcyODYKK+eKhyA+IGLEk247ICM3Mjg3CivnioggPiBxdcOhbjsgIzcyODgKK+eKiSA+IHLDum47ICM3Mjg5CivnioogPiBkw7o7ICM3MjhBCivniosgPiBqw7k7ICM3MjhCCivniowgPiBqacSBOyAjNzI4Qwor54qNID4gamnEgW47ICM3MjhECivnio4gPiBmxJNuZzsgIzcyOEUKK+eKjyA+IHBpxIFuOyAjNzI4Rgor54qQID4ga8STOyAjNzI5MAor54qRID4gasO6OyAjNzI5MQor54qSID4ga8OgbzsgIzcyOTIKK+eKkyA+IGNow7o7ICM3MjkzCivnipQgPiB4w6w7ICM3Mjk0CivnipUgPiBiw6hpOyAjNzI5NQor54qWID4gbMO5bzsgIzcyOTYKK+eKlyA+IGppw6g7ICM3Mjk3CivnipggPiBtw6E7ICM3Mjk4CivnipkgPiBzxIFuOyAjNzI5OQor54qaID4gd8OoaTsgIzcyOUEKK+eKmyA+IGzDrTsgIzcyOUIKK+eKnCA+IGTFq247ICM3MjlDCivnip0gPiB0w7NuZzsgIzcyOUQKK+eKnyA+IGppw6BuZzsgIzcyOUYKK+eKoSA+IGzDrDsgIzcyQTEKK+eKoiA+IGTDujsgIzcyQTIKK+eKoyA+IGxpw6g7ICM3MkEzCivniqQgPiBww607ICM3MkE0CivniqUgPiBwacSDbzsgIzcyQTUKK+eKpiA+IGLDoG87ICM3MkE2CivniqcgPiB4xKs7ICM3MkE3CivniqggPiBjaMWNdTsgIzcyQTgKK+eKqSA+IHfDqGk7ICM3MkE5CivniqogPiBrw7ppOyAjNzJBQQor54qrID4gY2jFjXU7ICM3MkFCCivniqwgPiBxdcSDbjsgIzcyQUMKK+eKrSA+IGbEg24nICdxdcSDbicgJ3DDoW5nOyAjNzJBRAor54quID4gYsOhOyAjNzJBRQor54qvID4gZsOgbjsgIzcyQUYKK+eKsCA+IHHDrXU7ICM3MkIwCivnirEgPiBqxK07ICM3MkIxCivnirIgPiBjw6FpOyAjNzJCMgor54qzID4gY2jDum87ICM3MkIzCivnirQgPiDDoG47ICM3MkI0CivnirUgPiBqacOpOyAjNzJCNQor54q2ID4gemh1w6BuZzsgIzcyQjYKK+eKtyA+IGd1xINuZzsgIzcyQjcKK+eKuCA+IG3DoDsgIzcyQjgKK+eKuSA+IHnDs3U7ICM3MkI5CivnirogPiBrw6BuZzsgIzcyQkEKK+eKuyA+IGLDszsgIzcyQkIKK+eKvCA+IGjFj3U7ICM3MkJDCivnir0gPiB5w6E7ICM3MkJECivnir4gPiB5w61uOyAjNzJCRQor54q/ID4gaHXEgW47ICM3MkJGCivni4AgPiB6aHXDoG5nOyAjNzJDMAor54uBID4gecWtbjsgIzcyQzEKK+eLgiA+IGt1w6FuZzsgIzcyQzIKK+eLgyA+IG7ErXU7ICM3MkMzCivni4QgPiBkw607ICM3MkM0Civni4UgPiBxxKtuZzsgIzcyQzUKK+eLhiA+IHpow7JuZzsgIzcyQzYKK+eLhyA+IG3DuTsgIzcyQzcKK+eLiCA+IGLDqGk7ICM3MkM4Civni4kgPiBwxKs7ICM3MkM5Civni4ogPiBqw7o7ICM3MkNBCivni4sgPiBuw607ICM3MkNCCivni4wgPiBzaMSTbmc7ICM3MkNDCivni40gPiBww6FvOyAjNzJDRAor54uOID4geGnDoTsgIzcyQ0UKK+eLjyA+IHTDum87ICM3MkNGCivni5AgPiBow7o7ICM3MkQwCivni5EgPiBsw61uZzsgIzcyRDEKK+eLkiA+IGbDqGk7ICM3MkQyCivni5MgPiBwxKs7ICM3MkQzCivni5QgPiBuxK07ICM3MkQ0Civni5UgPiDEg287ICM3MkQ1Civni5YgPiB5w7J1OyAjNzJENgor54uXID4gZ8WPdTsgIzcyRDcKK+eLmCA+IHl1w6g7ICM3MkQ4Civni5kgPiBqxas7ICM3MkQ5Civni5ogPiBkw6BuOyAjNzJEQQor54ubID4gcMOyOyAjNzJEQgor54ucID4gZ8WtOyAjNzJEQwor54udID4geGnEg247ICM3MkRECivni54gPiBuw61uZzsgIzcyREUKK+eLnyA+IGh1w6FuOyAjNzJERgor54ugID4gaMSVbjsgIzcyRTAKK+eLoSA+IGppxINvOyAjNzJFMQor54uiID4gaMOpOyAjNzJFMgor54ujID4gemjDoG87ICM3MkUzCivni6QgPiBqw607ICM3MkU0Civni6UgPiB4w7luOyAjNzJFNQor54umID4gc2jEgW47ICM3MkU2Civni6cgPiB0w6A7ICM3MkU3Civni6ggPiByw7NuZzsgIzcyRTgKK+eLqSA+IHNow7J1OyAjNzJFOQor54uqID4gdMWNbmc7ICM3MkVBCivni6sgPiBsxINvOyAjNzJFQgor54usID4gZMO6OyAjNzJFQwor54utID4geGnDoTsgIzcyRUQKK+eLriA+IHNoxKs7ICM3MkVFCivni68gPiBodcOhOyAjNzJFRgor54uwID4gemjEk25nOyAjNzJGMAor54uxID4gecO5OyAjNzJGMQor54uyID4gc8WrbjsgIzcyRjIKK+eLsyA+IHnDujsgIzcyRjMKK+eLtCA+IGLDrDsgIzcyRjQKK+eLtSA+IG3DoW5nOyAjNzJGNQor54u2ID4geMStOyAjNzJGNgor54u3ID4ganXDoG47ICM3MkY3Civni7ggPiBsw607ICM3MkY4Civni7kgPiB4acOhOyAjNzJGOQor54u6ID4gecOtbjsgIzcyRkEKK+eLuyA+IHN1xIFuOyAjNzJGQgor54u8ID4gbMOhbmc7ICM3MkZDCivni70gPiBiw6hpOyAjNzJGRAor54u+ID4gemjDrDsgIzcyRkUKK+eLvyA+IHnDoW47ICM3MkZGCivnjIAgPiBzaMSBOyAjNzMwMAor54yBID4gbMOsOyAjNzMwMQor54yCID4gaMOgbjsgIzczMDIKK+eMgyA+IHhpxINuOyAjNzMwMwor54yEID4gasSrbmc7ICM3MzA0CivnjIUgPiBww6FpOyAjNzMwNQor54yGID4gZsSTaTsgIzczMDYKK+eMhyA+IHnDoW87ICM3MzA3CivnjIggPiBiw6A7ICM3MzA4CivnjIkgPiBxw607ICM3MzA5CivnjIogPiBuw607ICM3MzBBCivnjIsgPiBiacSBbzsgIzczMEIKK+eMjCA+IHnDrG47ICM3MzBDCivnjI0gPiBsw6FpOyAjNzMwRAor54yOID4geMOtOyAjNzMwRQor54yPID4gamnEgW47ICM3MzBGCivnjJAgPiBxacSBbmc7ICM3MzEwCivnjJEgPiBrxatuOyAjNzMxMQor54ySID4gecSBbjsgIzczMTIKK+eMkyA+IGfFrW87ICM3MzEzCivnjJQgPiB6w7JuZzsgIzczMTQKK+eMlSA+IG3DrTsgIzczMTUKK+eMliA+IGNoxIFuZzsgIzczMTYKK+eMlyA+IHnEqzsgIzczMTcKK+eMmCA+IHpow6w7ICM3MzE4CivnjJkgPiB6aMSTbmc7ICM3MzE5CivnjJogPiB5w6E7ICM3MzFBCivnjJsgPiBtxJVuZzsgIzczMUIKK+eMnCA+IGPEgWk7ICM3MzFDCivnjJ0gPiBjw7k7ICM3MzFECivnjJ4gPiBzaMOoOyAjNzMxRQor54yhID4gbMO6bzsgIzczMjEKK+eMoiA+IGjDujsgIzczMjIKK+eMoyA+IHrFjW5nOyAjNzMyMwor54ykID4gasOsOyAjNzMyNAor54ylID4gd8SVaTsgIzczMjUKK+eMpiA+IGbEk25nOyAjNzMyNgor54ynID4gd8WNOyAjNzMyNwor54yoID4geXXDoW47ICM3MzI4CivnjKkgPiB4xKtuZzsgIzczMjkKK+eMqiA+IHpoxas7ICM3MzJBCivnjKsgPiBtxIFvOyAjNzMyQgor54ysID4gd8OoaTsgIzczMkMKK+eMrSA+IHl1w6FuOyAjNzMyRAor54yuID4geGnDoG47ICM3MzJFCivnjK8gPiB0dcSBbjsgIzczMkYKK+eMsCA+IHnDoDsgIzczMzAKK+eMsSA+IG7DoW87ICM3MzMxCivnjLIgPiB4acSTOyAjNzMzMgor54yzID4gamnEgTsgIzczMzMKK+eMtCA+IGjDs3U7ICM3MzM0CivnjLUgPiBiacSBbjsgIzczMzUKK+eMtiA+IHnDs3U7ICM3MzM2CivnjLcgPiB5w7N1OyAjNzMzNwor54y4ID4gbcOpaTsgIzczMzgKK+eMuSA+IHpoxIE7ICM3MzM5CivnjLogPiB5w6FvOyAjNzMzQQor54y7ID4gc8WrbjsgIzczM0IKK+eMvCA+IGLDszsgIzczM0MKK+eMvSA+IG3DrW5nOyAjNzMzRAor54y+ID4gaHXDoTsgIzczM0UKK+eMvyA+IHl1w6FuOyAjNzMzRgor542AID4gc8WNdTsgIzczNDAKK+eNgSA+IG3DoDsgIzczNDEKK+eNgiA+IHl1w6FuOyAjNzM0Mgor542DID4gZMSBaTsgIzczNDMKK+eNhCA+IHnDuTsgIzczNDQKK+eNhSA+IHNoxKs7ICM3MzQ1CivnjYYgPiBow6FvOyAjNzM0Ngor542IID4gecOsOyAjNzM0OAor542JID4gemjEk247ICM3MzQ5CivnjYogPiBjaHXDoG5nOyAjNzM0QQor542LID4gaMOhbzsgIzczNEIKK+eNjCA+IG3DoG47ICM3MzRDCivnjY0gPiBqw6xuZzsgIzczNEQKK+eNjiA+IGppxINuZzsgIzczNEUKK+eNjyA+IG3DujsgIzczNEYKK+eNkCA+IHpoxIFuZzsgIzczNTAKK+eNkSA+IGNow6FuOyAjNzM1MQor542SID4gw6FvOyAjNzM1Mgor542TID4gw6FvOyAjNzM1Mwor542UID4gaMOhbzsgIzczNTQKK+eNlSA+IGPFq2k7ICM3MzU1CivnjZYgPiBmw6luOyAjNzM1Ngor542XID4ganXDqTsgIzczNTcKK+eNmCA+IGLDrDsgIzczNTgKK+eNmSA+IGLDrDsgIzczNTkKK+eNmiA+IGh1w6FuZzsgIzczNUEKK+eNmyA+IHDDujsgIzczNUIKK+eNnCA+IGzDrW47ICM3MzVDCivnjZ0gPiB5w7k7ICM3MzVECivnjZ4gPiB0w7NuZzsgIzczNUUKK+eNnyA+IHnDoG87ICM3MzVGCivnjaAgPiBsacOhbzsgIzczNjAKK+eNoSA+IHNow7lvOyAjNzM2MQor542iID4geGnEgW87ICM3MzYyCivnjaUgPiB4w607ICM3MzY1CivnjaYgPiBnw6k7ICM3MzY2CivnjacgPiBqdcOgbjsgIzczNjcKK+eNqCA+IGTDujsgIzczNjgKK+eNqSA+IGjDuWk7ICM3MzY5CivnjaogPiBrdcOgaTsgIzczNkEKK+eNqyA+IHhpxINuOyAjNzM2Qgor542sID4geGnDqDsgIzczNkMKK+eNrSA+IHTDoDsgIzczNkQKK+eNriA+IHhpxINuOyAjNzM2RQor542vID4geMWrbjsgIzczNkYKK+eNsCA+IG7DrW5nOyAjNzM3MAor542xID4gcMOtbjsgIzczNzEKK+eNsiA+IGjDuW87ICM3MzcyCivnjbMgPiBuw7J1OyAjNzM3Mwor5420ID4gbcOpbmc7ICM3Mzc0CivnjbUgPiBsacOoOyAjNzM3NQor5422ID4gbsOhbzsgIzczNzYKK+eNtyA+IGd1xINuZzsgIzczNzcKK+eNuCA+IHNow7J1OyAjNzM3OAor5425ID4gbMO6OyAjNzM3OQor5426ID4gdMOgOyAjNzM3QQor5427ID4geGnDoG47ICM3MzdCCivnjbwgPiBtw607ICM3MzdDCivnjb0gPiByw6FuZzsgIzczN0QKK+eNviA+IGh1xIFuOyAjNzM3RQor542/ID4gbsOhbzsgIzczN0YKK+eOgCA+IGzDum87ICM3MzgwCivnjoEgPiB4acSDbjsgIzczODEKK+eOgiA+IHHDrTsgIzczODIKK+eOgyA+IGp1w6k7ICM3MzgzCivnjoQgPiB4dcOhbjsgIzczODQKK+eOhSA+IG1pw6BvOyAjNzM4NQor546GID4gesSrOyAjNzM4Ngor546HID4gbMecOyAjNzM4Nwor546IID4gbMO6OyAjNzM4OAor546JID4gecO5OyAjNzM4OQor546KID4gc8O5OyAjNzM4QQor546LID4gd8Ohbmc7ICM3MzhCCivnjowgPiBxw611OyAjNzM4Qwor546NID4gZ8SDOyAjNzM4RAor546OID4gZMSrbmc7ICM3MzhFCivnjo8gPiBsw6g7ICM3MzhGCivnjpAgPiBixIE7ICM3MzkwCivnjpEgPiBqxKs7ICM3MzkxCivnjpIgPiBow7NuZzsgIzczOTIKK+eOkyA+IGTDrDsgIzczOTMKK+eOlCA+IHF1w6BuOyAjNzM5NAor546VID4gZ8SBbjsgIzczOTUKK+eOliA+IGrErXU7ICM3Mzk2CivnjpcgPiB5w7o7ICM3Mzk3CivnjpggPiBqxK07ICM3Mzk4CivnjpkgPiB5w7o7ICM3Mzk5CivnjpogPiB5w6FuZzsgIzczOUEKK+eOmyA+IG3EgzsgIzczOUIKK+eOnCA+IGfFjW5nOyAjNzM5Qwor546dID4gd8WtOyAjNzM5RAor546eID4gZsWrOyAjNzM5RQor546fID4gd8OpbjsgIzczOUYKK+eOoCA+IGppw6g7ICM3M0EwCivnjqEgPiB5w6A7ICM3M0ExCivnjqIgPiBmw6luOyAjNzNBMgor546jID4gYmnDoG47ICM3M0EzCivnjqQgPiBixJVuZzsgIzczQTQKK+eOpSA+IHl1w6g7ICM3M0E1CivnjqYgPiBqdcOpOyAjNzNBNgor546nID4gecWtbjsgIzczQTcKK+eOqCA+IGp1w6k7ICM3M0E4CivnjqkgPiB3w6FuOyAjNzNBOQor546qID4gamnEgW47ICM3M0FBCivnjqsgPiBtw6lpOyAjNzNBQgor546sID4gZMSDbjsgIzczQUMKK+eOrSA+IHDDrTsgIzczQUQKK+eOriA+IHfElWk7ICM3M0FFCivnjq8gPiBodcOhbjsgIzczQUYKK+eOsCA+IHhpw6BuOyAjNzNCMAor546xID4gcWnEgW5nOyAjNzNCMQor546yID4gbMOtbmc7ICM3M0IyCivnjrMgPiBkw6BpOyAjNzNCMwor5460ID4gecOsOyAjNzNCNAor5461ID4gw6FuOyAjNzNCNQor5462ID4gcMOtbmc7ICM3M0I2CivnjrcgPiBkacOgbjsgIzczQjcKK+eOuCA+IGbDujsgIzczQjgKK+eOuSA+IHh1w6FuOyAjNzNCOQor5466ID4geMStOyAjNzNCQQor5467ID4gYsWNOyAjNzNCQgor5468ID4gY8StOyAjNzNCQwor5469ID4gZ8WPdTsgIzczQkQKK+eOviA+IGppxIM7ICM3M0JFCivnjr8gPiBzaMOhbzsgIzczQkYKK+ePgCA+IHDDsjsgIzczQzAKK+ePgSA+IGPDrTsgIzczQzEKK+ePgiA+IGvEkzsgIzczQzIKK+ePgyA+IHLEg247ICM3M0MzCivnj4QgPiBzaMSTbmc7ICM3M0M0Civnj4UgPiBzaMSTbjsgIzczQzUKK+ePhiA+IHnDrTsgIzczQzYKK+ePhyA+IHrFrTsgIzczQzcKK+ePiCA+IGppxIE7ICM3M0M4Civnj4kgPiBtw61uOyAjNzNDOQor54+KID4gc2jEgW47ICM3M0NBCivnj4sgPiBsxK11OyAjNzNDQgor54+MID4gYsOsOyAjNzNDQwor54+NID4gemjEk247ICM3M0NECivnj44gPiB6aMSTbjsgIzczQ0UKK+ePjyA+IGp1w6k7ICM3M0NGCivnj5AgPiBmw6A7ICM3M0QwCivnj5EgPiBsw7NuZzsgIzczRDEKK+ePkiA+IGrEq247ICM3M0QyCivnj5MgPiBqacOgbzsgIzczRDMKK+ePlCA+IGppw6BuOyAjNzNENAor54+VID4gbMOsOyAjNzNENQor54+WID4gZ3XEgW5nOyAjNzNENgor54+XID4geGnEgW47ICM3M0Q3Civnj5ggPiB6aMWNdTsgIzczRDgKK+ePmSA+IGfFj25nOyAjNzNEOQor54+aID4gecSBbjsgIzczREEKK+ePmyA+IHjDrHU7ICM3M0RCCivnj5wgPiB5w6FuZzsgIzczREMKK+ePnSA+IHjFrTsgIzczREQKK+ePniA+IGzDuW87ICM3M0RFCivnj58gPiBzw7k7ICM3M0RGCivnj6AgPiB6aMWrOyAjNzNFMAor54+hID4gccOtbjsgIzczRTEKK+ePoiA+IGvDqG47ICM3M0UyCivnj6MgPiB4w7puOyAjNzNFMwor54+kID4gYsSDbzsgIzczRTQKK+ePpSA+IMSVcjsgIzczRTUKK+ePpiA+IHhpw6BuZzsgIzczRTYKK+ePpyA+IHnDoW87ICM3M0U3Civnj6ggPiB4acOhOyAjNzNFOAor54+pID4gaMOpbmc7ICM3M0U5Civnj6ogPiBnxatpOyAjNzNFQQor54+rID4gY2jFjW5nOyAjNzNFQgor54+sID4geMO5OyAjNzNFQwor54+tID4gYsSBbjsgIzczRUQKK+ePriA+IHDDqGk7ICM3M0VFCivnj7AgPiBkxIFuZzsgIzczRjAKK+ePsiA+IGjDum47ICM3M0YyCivnj7MgPiB3w6luOyAjNzNGMwor54+0ID4gw6k7ICM3M0Y0Civnj7UgPiBjaMOpbmc7ICM3M0Y1Civnj7YgPiB0w607ICM3M0Y2Civnj7cgPiB3xa07ICM3M0Y3Civnj7ggPiB3w7o7ICM3M0Y4Civnj7kgPiBjaMOpbmc7ICM3M0Y5Civnj7ogPiBqw7luOyAjNzNGQQor54+7ID4gbcOpaTsgIzczRkIKK+ePvCA+IGLDqGk7ICM3M0ZDCivnj70gPiB0xK1uZzsgIzczRkQKK+ePviA+IHhpw6BuOyAjNzNGRQor54+/ID4gY2jDuW87ICM3M0ZGCivnkIAgPiBow6FuOyAjNzQwMAor55CBID4geHVhbjsgIzc0MDEKK+eQgiA+IHnDoW47ICM3NDAyCivnkIMgPiBxw611OyAjNzQwMwor55CEID4gcXXEg247ICM3NDA0CivnkIUgPiBsw6FuZzsgIzc0MDUKK+eQhiA+IGzErTsgIzc0MDYKK+eQhyA+IHjDrHU7ICM3NDA3CivnkIggPiBmw7o7ICM3NDA4CivnkIkgPiBsw611OyAjNzQwOQor55CKID4gecOpOyAjNzQwQQor55CLID4geMSrOyAjNzQwQgor55CMID4gbMOtbmc7ICM3NDBDCivnkI0gPiBsw6w7ICM3NDBECivnkI4gPiBqw6xuOyAjNzQwRQor55CPID4gbGnDoW47ICM3NDBGCivnkJAgPiBzxa1vOyAjNzQxMAor55CTID4gd8OhbjsgIzc0MTMKK+eQlCA+IGRpw6BuOyAjNzQxNAor55CVID4gcMOtbjsgIzc0MTUKK+eQliA+IHpoxINuOyAjNzQxNgor55CXID4gY8O5aTsgIzc0MTcKK+eQmCA+IG3DrW47ICM3NDE4CivnkJkgPiB5w7k7ICM3NDE5CivnkJogPiBqxas7ICM3NDFBCivnkJsgPiBjaMSTbjsgIzc0MUIKK+eQnCA+IGzDoWk7ICM3NDFDCivnkJ0gPiB3w6luOyAjNzQxRAor55CeID4gc2jDqG5nOyAjNzQxRQor55CfID4gd8OpaTsgIzc0MUYKK+eQoCA+IGRpxINuOyAjNzQyMAor55ChID4gY2jDuTsgIzc0MjEKK+eQoiA+IHpow7pvOyAjNzQyMgor55CjID4gcMSVaTsgIzc0MjMKK+eQpCA+IGNoxJNuZzsgIzc0MjQKK+eQpSA+IGjFrTsgIzc0MjUKK+eQpiA+IHHDrTsgIzc0MjYKK+eQpyA+IMOoOyAjNzQyNwor55CoID4ga8WrbjsgIzc0MjgKK+eQqSA+IGNoxIFuZzsgIzc0MjkKK+eQqiA+IHHDrTsgIzc0MkEKK+eQqyA+IGLElW5nOyAjNzQyQgor55CsID4gd8SDbjsgIzc0MkMKK+eQrSA+IGzDuTsgIzc0MkQKK+eQriA+IGPDs25nOyAjNzQyRQor55CvID4gZ3XEg247ICM3NDJGCivnkLAgPiB5xINuOyAjNzQzMAor55CxID4gZGnEgW87ICM3NDMxCivnkLIgPiBiw6hpOyAjNzQzMgor55CzID4gbMOtbjsgIzc0MzMKK+eQtCA+IHHDrW47ICM3NDM0CivnkLUgPiBww607ICM3NDM1CivnkLYgPiBww6E7ICM3NDM2CivnkLcgPiBxdcOoOyAjNzQzNwor55C4ID4gemjDum87ICM3NDM4CivnkLkgPiBxw61uOyAjNzQzOQor55C6ID4gZsOgOyAjNzQzQQor55C8ID4gccOtb25nOyAjNzQzQwor55C9ID4gZMWtOyAjNzQzRAor55C+ID4gamnDqDsgIzc0M0UKK+eQvyA+IGjDum47ICM3NDNGCivnkYAgPiB5xa07ICM3NDQwCivnkYEgPiBtw6BvOyAjNzQ0MQor55GCID4gbcOpaTsgIzc0NDIKK+eRgyA+IGNodW47ICM3NDQzCivnkYQgPiB4dcSBbjsgIzc0NDQKK+eRhSA+IHTDrTsgIzc0NDUKK+eRhiA+IHjEq25nOyAjNzQ0Ngor55GHID4gZMOgaTsgIzc0NDcKK+eRiCA+IHLDs3U7ICM3NDQ4CivnkYkgPiBtw61uOyAjNzQ0OQor55GKID4gemjEk247ICM3NDRBCivnkYsgPiB3xJVpOyAjNzQ0Qgor55GMID4gcnXEg247ICM3NDRDCivnkY0gPiBodcOgbjsgIzc0NEQKK+eRjiA+IGppxJM7ICM3NDRFCivnkY8gPiBjaHXEgW47ICM3NDRGCivnkZAgPiBqacSDbjsgIzc0NTAKK+eRkSA+IHpodcOgbjsgIzc0NTEKK+eRkiA+IHnDoW5nOyAjNzQ1Mgor55GTID4gbGnDoG47ICM3NDUzCivnkZQgPiBxdcOhbjsgIzc0NTQKK+eRlSA+IHhpw6E7ICM3NDU1CivnkZYgPiBkdcOgbjsgIzc0NTYKK+eRlyA+IHl1w6BuOyAjNzQ1Nwor55GYID4gecOpOyAjNzQ1OAor55GZID4gbsSDbzsgIzc0NTkKK+eRmiA+IGjDujsgIzc0NUEKK+eRmyA+IHnEq25nOyAjNzQ1Qgor55GcID4gecO6OyAjNzQ1Qwor55GdID4gaHXDoW5nOyAjNzQ1RAor55GeID4gcsO5aTsgIzc0NUUKK+eRnyA+IHPDqDsgIzc0NUYKK+eRoCA+IGzDrXU7ICM3NDYwCivnkaEgPiBzaGk7ICM3NDYxCivnkaIgPiByw7NuZzsgIzc0NjIKK+eRoyA+IHPFrW87ICM3NDYzCivnkaQgPiB5w6FvOyAjNzQ2NAor55GlID4gd8STbjsgIzc0NjUKK+eRpiA+IHfFqzsgIzc0NjYKK+eRpyA+IGrEq247ICM3NDY3CivnkaggPiBqw6xuOyAjNzQ2OAor55GpID4gecOtbmc7ICM3NDY5CivnkaogPiBtxIM7ICM3NDZBCivnkasgPiB0xIFvOyAjNzQ2Qgor55GsID4gbMOtdTsgIzc0NkMKK+eRrSA+IHTDoW5nOyAjNzQ2RAor55GuID4gbMOsOyAjNzQ2RQor55GvID4gbMOhbmc7ICM3NDZGCivnkbAgPiBnxatpOyAjNzQ3MAor55GxID4gemjDqG47ICM3NDcxCivnkbIgPiBxacSBbmc7ICM3NDcyCivnkbMgPiBjxa1vOyAjNzQ3Mwor55G0ID4ganXDqTsgIzc0NzQKK+eRtSA+IHpoxINvOyAjNzQ3NQor55G2ID4gecOhbzsgIzc0NzYKK+eRtyA+IMOgaTsgIzc0NzcKK+eRuCA+IGLEq247ICM3NDc4CivnkbkgPiB0w7o7ICM3NDc5CivnkbogPiBjaMOhbmc7ICM3NDdBCivnkbsgPiBrxatuOyAjNzQ3Qgor55G8ID4gemh1xIFuOyAjNzQ3Qwor55G9ID4gY8WNbmc7ICM3NDdECivnkb4gPiBqxK1uOyAjNzQ3RQor55G/ID4gecSrOyAjNzQ3Rgor55KAID4gY8WtaTsgIzc0ODAKK+eSgSA+IGPFjW5nOyAjNzQ4MQor55KCID4gccOtOyAjNzQ4Mgor55KDID4gbMOtOyAjNzQ4Mwor55KEID4gecStbmc7ICM3NDg0CivnkoUgPiBzxa1vOyAjNzQ4NQor55KGID4gccOtdTsgIzc0ODYKK+eShyA+IHh1w6FuOyAjNzQ4Nwor55KIID4gw6FvOyAjNzQ4OAor55KJID4gbGnDoW47ICM3NDg5CivnkoogPiBtw6FuOyAjNzQ4QQor55KLID4gemjEgW5nOyAjNzQ4Qgor55KMID4gecOtbjsgIzc0OEMKK+eSjiA+IHnEq25nOyAjNzQ4RQor55KPID4gemjDrDsgIzc0OEYKK+eSkCA+IGzDuTsgIzc0OTAKK+eSkSA+IHfDujsgIzc0OTEKK+eSkiA+IGTEk25nOyAjNzQ5Mgor55KTID4geGnDsnU7ICM3NDkzCivnkpQgPiB6xJNuZzsgIzc0OTQKK+eSlSA+IHjDum47ICM3NDk1CivnkpYgPiBxw7o7ICM3NDk2CivnkpcgPiBkw6BuZzsgIzc0OTcKK+eSmCA+IGzDrW47ICM3NDk4CivnkpkgPiBsacOhbzsgIzc0OTkKK+eSmiA+IHHDrW9uZzsgIzc0OUEKK+eSmyA+IHPDuTsgIzc0OUIKK+eSnCA+IGh1w6FuZzsgIzc0OUMKK+eSnSA+IGfFq2k7ICM3NDlECivnkp4gPiBww7o7ICM3NDlFCivnkp8gPiBqxK1uZzsgIzc0OUYKK+eSoCA+IGbDoW47ICM3NEEwCivnkqEgPiBqw6xuOyAjNzRBMQor55KiID4gbMOtdTsgIzc0QTIKK+eSoyA+IGrEqzsgIzc0QTMKK+eSpSA+IGrErW5nOyAjNzRBNQor55KmID4gw6BpOyAjNzRBNgor55KnID4gYsOsOyAjNzRBNwor55KoID4gY8OgbjsgIzc0QTgKK+eSqSA+IHHDujsgIzc0QTkKK+eSqiA+IHrEg287ICM3NEFBCivnkqsgPiBkxIFuZzsgIzc0QUIKK+eSrCA+IGppxINvOyAjNzRBQwor55KtID4gZ8O5bjsgIzc0QUQKK+eSriA+IHTEg247ICM3NEFFCivnkq8gPiBow7lpOyAjNzRBRgor55KwID4gaHXDoW47ICM3NEIwCivnkrEgPiBzw6g7ICM3NEIxCivnkrIgPiBzw7lpOyAjNzRCMgor55KzID4gdGnDoW47ICM3NEIzCivnkrUgPiB5w7o7ICM3NEI1CivnkrYgPiBqw6xuOyAjNzRCNgor55K3ID4gbMO6OyAjNzRCNwor55K4ID4gYsSrbjsgIzc0QjgKK+eSuSA+IHNow7J1OyAjNzRCOQor55K6ID4gd8OobjsgIzc0QkEKK+eSuyA+IHrFrWk7ICM3NEJCCivnkrwgPiBsw6FuOyAjNzRCQwor55K9ID4geMStOyAjNzRCRAor55K+ID4gasOsOyAjNzRCRQor55K/ID4geHXDoW47ICM3NEJGCivnk4AgPiBydcSDbjsgIzc0QzAKK+eTgSA+IGjDuW87ICM3NEMxCivnk4IgPiBnw6BpOyAjNzRDMgor55ODID4gbMOpaTsgIzc0QzMKK+eThCA+IGTDujsgIzc0QzQKK+eThSA+IGzDrDsgIzc0QzUKK+eThiA+IHpow607ICM3NEM2Civnk4cgPiByw7N1OyAjNzRDNwor55OIID4gbMOtOyAjNzRDOAor55OJID4gesOgbjsgIzc0QzkKK+eTiiA+IHHDrW9uZzsgIzc0Q0EKK+eTiyA+IHpow6k7ICM3NENCCivnk4wgPiBnxatpOyAjNzRDQwor55ONID4gc8O5aTsgIzc0Q0QKK+eTjiA+IGzDoDsgIzc0Q0UKK+eTjyA+IGzDs25nOyAjNzRDRgor55OQID4gbMO6OyAjNzREMAor55ORID4gbMOsOyAjNzREMQor55OSID4gesOgbjsgIzc0RDIKK+eTkyA+IGzDoG47ICM3NEQzCivnk5QgPiB5xKtuZzsgIzc0RDQKK+eTlSA+IG3DrTsgIzc0RDUKK+eTliA+IHhpxIFuZzsgIzc0RDYKK+eTlyA+IHjEqzsgIzc0RDcKK+eTmCA+IGd1w6BuOyAjNzREOAor55OZID4gZMOgbzsgIzc0RDkKK+eTmiA+IHrDoG47ICM3NERBCivnk5sgPiBodcOhbjsgIzc0REIKK+eTnCA+IGd1xIE7ICM3NERDCivnk50gPiBiw7M7ICM3NERECivnk54gPiBkacOpOyAjNzRERQor55OfID4gYsOhbzsgIzc0REYKK+eToCA+IGjDuTsgIzc0RTAKK+eToSA+IHpow607ICM3NEUxCivnk6IgPiBwacOhbzsgIzc0RTIKK+eToyA+IGLDoG47ICM3NEUzCivnk6QgPiByw6FuZzsgIzc0RTQKK+eTpSA+IGzDrDsgIzc0RTUKK+eTpiA+IHfEgzsgIzc0RTYKK+eTqCA+IGppxIFuZzsgIzc0RTgKK+eTqSA+IHFpw6FuJyAnd8SDOyAjNzRFOQor55OqID4gZsSDbjsgIzc0RUEKK+eTqyA+IHDDqW47ICM3NEVCCivnk6wgPiBmxINuZzsgIzc0RUMKK+eTrSA+IGTEg247ICM3NEVECivnk64gPiB3w6huZzsgIzc0RUUKK+eTryA+IMWNdTsgIzc0RUYKK+eTsyA+IGjDujsgIzc0RjMKK+eTtCA+IGzDrW5nOyAjNzRGNAor55O1ID4gecOtOyAjNzRGNQor55O2ID4gcMOtbmc7ICM3NEY2Civnk7cgPiBjw607ICM3NEY3Civnk7kgPiBqdcOgbjsgIzc0RjkKK+eTuiA+IGNow6FuZzsgIzc0RkEKK+eTuyA+IGNoxKs7ICM3NEZCCivnk70gPiBkw6BuZzsgIzc0RkQKK+eTviA+IG3ElW5nOyAjNzRGRQor55O/ID4gcMWPdTsgIzc0RkYKK+eUgCA+IHpow7lpOyAjNzUwMAor55SBID4gcMOtbmc7ICM3NTAxCivnlIIgPiBiacSBbjsgIzc1MDIKK+eUgyA+IHpow7J1OyAjNzUwMwor55SEID4gemjEk247ICM3NTA0CivnlIYgPiBjw607ICM3NTA2CivnlIcgPiB5xKtuZzsgIzc1MDcKK+eUiCA+IHHDrDsgIzc1MDgKK+eUiSA+IHhpw6FuOyAjNzUwOQor55SKID4gbMWPdTsgIzc1MEEKK+eUiyA+IGTDrDsgIzc1MEIKK+eUjCA+IMWNdTsgIzc1MEMKK+eUjSA+IG3DqW5nOyAjNzUwRAor55SOID4gemh1xIFuOyAjNzUwRQor55SPID4gcMOobmc7ICM3NTBGCivnlJAgPiBsw61uOyAjNzUxMAor55SRID4gesOobmc7ICM3NTExCivnlJIgPiB3xa07ICM3NTEyCivnlJMgPiBww6w7ICM3NTEzCivnlJQgPiBkxIFuOyAjNzUxNAor55SVID4gd8Oobmc7ICM3NTE1CivnlJYgPiB5xKtuZzsgIzc1MTYKK+eUlyA+IHnEg247ICM3NTE3CivnlJggPiBnxIFuOyAjNzUxOAor55SZID4gZMOgaTsgIzc1MTkKK+eUmiA+IHNow6luOyAjNzUxQQor55SbID4gdGnDoW47ICM3NTFCCivnlJwgPiB0acOhbjsgIzc1MUMKK+eUnSA+IGjEgW47ICM3NTFECivnlJ4gPiBjaMOhbmc7ICM3NTFFCivnlJ8gPiBzaMSTbmc7ICM3NTFGCivnlKAgPiBxw61uZzsgIzc1MjAKK+eUoSA+IHNoxJNuZzsgIzc1MjEKK+eUoiA+IGNoxINuOyAjNzUyMgor55SjID4gY2jEg247ICM3NTIzCivnlKQgPiByw7ppOyAjNzUyNAor55SlID4gc2jEk25nOyAjNzUyNQor55SmID4gc8WrOyAjNzUyNgor55SnID4gc8STbjsgIzc1MjcKK+eUqCA+IHnDsm5nOyAjNzUyOAor55SpID4gc2h1xINpOyAjNzUyOQor55SqID4gbMO5OyAjNzUyQQor55SrID4gZsWtOyAjNzUyQgor55SsID4gecWPbmc7ICM3NTJDCivnlK0gPiBiw6luZzsgIzc1MkQKK+eUriA+IGbDqG5nOyAjNzUyRQor55SvID4gbsOtbmc7ICM3NTJGCivnlLAgPiB0acOhbjsgIzc1MzAKK+eUsSA+IHnDs3U7ICM3NTMxCivnlLIgPiBqacSDOyAjNzUzMgor55SzID4gc2jEk247ICM3NTMzCivnlLQgPiB6aMOhOyAjNzUzNAor55S1ID4gZGnDoG47ICM3NTM1CivnlLYgPiBmw7o7ICM3NTM2CivnlLcgPiBuw6FuOyAjNzUzNwor55S4ID4gZGnDoG47ICM3NTM4CivnlLkgPiBww61uZzsgIzc1MzkKK+eUuiA+IHTErW5nOyAjNzUzQQor55S7ID4gaHXDoDsgIzc1M0IKK+eUvCA+IHTErW5nOyAjNzUzQwor55S9ID4gcXXEg247ICM3NTNECivnlL4gPiB6xKs7ICM3NTNFCivnlL8gPiBtw6luZzsgIzc1M0YKK+eVgCA+IGLDrDsgIzc1NDAKK+eVgSA+IHHDrTsgIzc1NDEKK+eVgiA+IGzDrHU7ICM3NTQyCivnlYMgPiB4w7puOyAjNzU0Mwor55WEID4gbMOtdTsgIzc1NDQKK+eVhSA+IGNow6BuZzsgIzc1NDUKK+eVhiA+IG3FrTsgIzc1NDYKK+eVhyA+IHnDum47ICM3NTQ3CivnlYggPiBmw6BuOyAjNzU0OAor55WJID4gZsO6OyAjNzU0OQor55WKID4gZ8STbmc7ICM3NTRBCivnlYsgPiB0acOhbjsgIzc1NEIKK+eVjCA+IGppw6g7ICM3NTRDCivnlY0gPiBqacOoOyAjNzU0RAor55WOID4gcXXEg247ICM3NTRFCivnlY8gPiB3w6hpOyAjNzU0Rgor55WQID4gZsO6OyAjNzU1MAor55WRID4gdGnDoW47ICM3NTUxCivnlZIgPiBtxa07ICM3NTUyCivnlZQgPiBww6BuOyAjNzU1NAor55WVID4gamnEgW5nOyAjNzU1NQor55WWID4gd8SBOyAjNzU1Ngor55WXID4gZMOhOyAjNzU1Nwor55WYID4gbsOhbjsgIzc1NTgKK+eVmSA+IGzDrXU7ICM3NTU5CivnlZogPiBixJVuOyAjNzU1QQor55WbID4gemjElW47ICM3NTVCCivnlZwgPiBjaMO5OyAjNzU1Qwor55WdID4gbcWtOyAjNzU1RAor55WeID4gbcWtOyAjNzU1RQor55WfID4gY8OoOyAjNzU1Rgor55WhID4gZ8SBaTsgIzc1NjEKK+eVoiA+IGLDrDsgIzc1NjIKK+eVoyA+IGTDoTsgIzc1NjMKK+eVpCA+IHpow6w7ICM3NTY0CivnlaUgPiBsx5xlOyAjNzU2NQor55WmID4gccOtOyAjNzU2Ngor55WnID4gbMecZTsgIzc1NjcKK+eVqCA+IHDEgW47ICM3NTY4CivnlaogPiBmxIFuOyAjNzU2QQor55WrID4gaHXDoDsgIzc1NkIKK+eVrCA+IHnDujsgIzc1NkMKK+eVrSA+IHnDujsgIzc1NkQKK+eVriA+IG3FrTsgIzc1NkUKK+eVryA+IGrDuW47ICM3NTZGCivnlbAgPiB5w6w7ICM3NTcwCivnlbEgPiBsw611OyAjNzU3MQor55WyID4gecO6OyAjNzU3Mgor55WzID4gZGnDqTsgIzc1NzMKK+eVtCA+IGNow7N1OyAjNzU3NAor55W1ID4gaHXDoDsgIzc1NzUKK+eVtiA+IGTEgW5nOyAjNzU3Ngor55W3ID4gY2jDuW87ICM3NTc3CivnlbggPiBqxKs7ICM3NTc4CivnlbkgPiB3xINuOyAjNzU3OQor55W6ID4gamnEgW5nOyAjNzU3QQor55W7ID4gc2jDqW5nOyAjNzU3Qgor55W8ID4gY2jDoG5nOyAjNzU3Qwor55W9ID4gdHXEg247ICM3NTdECivnlb4gPiBsw6lpOyAjNzU3RQor55W/ID4gasSrOyAjNzU3Rgor55aAID4gY2jEgTsgIzc1ODAKK+eWgSA+IGzDrXU7ICM3NTgxCivnloMgPiB0dcSDbjsgIzc1ODMKK+eWhCA+IGzDrW47ICM3NTg0CivnloUgPiBqacSBbmc7ICM3NTg1CivnloYgPiBqacSBbmc7ICM3NTg2CivnlocgPiBjaMOzdTsgIzc1ODcKK+eWiCA+IGLDsjsgIzc1ODgKK+eWiSA+IGRpw6k7ICM3NTg5CivnloogPiBkacOpOyAjNzU4QQor55aLID4gcMStOyAjNzU4Qgor55aMID4gbmnDqDsgIzc1OEMKK+eWjSA+IGTDoG47ICM3NThECivnlo4gPiBzaMWrOyAjNzU4RQor55aPID4gc2jFqzsgIzc1OEYKK+eWkCA+IHpow6w7ICM3NTkwCivnlpEgPiB5w607ICM3NTkxCivnlpIgPiBjaHXDoW5nOyAjNzU5Mgor55aTID4gbsSDaTsgIzc1OTMKK+eWlCA+IGTEq25nOyAjNzU5NAor55aVID4gYsStOyAjNzU5NQor55aWID4gamnDqTsgIzc1OTYKK+eWlyA+IGxpw6FvOyAjNzU5Nwor55aYID4gZ8WNbmc7ICM3NTk4CivnlpkgPiBnxJM7ICM3NTk5CivnlpogPiBqw6x1OyAjNzU5QQor55abID4gemjFj3U7ICM3NTlCCivnlpwgPiB4acOgOyAjNzU5Qwor55adID4gc2jDoG47ICM3NTlECivnlp4gPiB4xas7ICM3NTlFCivnlp8gPiBux5xlOyAjNzU5Rgor55agID4gbMOsOyAjNzVBMAor55ahID4gecOhbmc7ICM3NUExCivnlqIgPiBjaMOobjsgIzc1QTIKK+eWoyA+IHnDs3U7ICM3NUEzCivnlqQgPiBixIE7ICM3NUE0CivnlqUgPiBqacOoOyAjNzVBNQor55amID4ganXDqTsgIzc1QTYKK+eWpyA+IHpoxKs7ICM3NUE3CivnlqggPiB4acSBOyAjNzVBOAor55apID4gY8O5aTsgIzc1QTkKK+eWqiA+IGLDrDsgIzc1QUEKK+eWqyA+IHnDrDsgIzc1QUIKK+eWrCA+IGzDrDsgIzc1QUMKK+eWrSA+IHrDsm5nOyAjNzVBRAor55auID4gY2h1xIFuZzsgIzc1QUUKK+eWryA+IGbEk25nOyAjNzVBRgor55awID4gemjDuTsgIzc1QjAKK+eWsSA+IHDDoG87ICM3NUIxCivnlrIgPiBww607ICM3NUIyCivnlrMgPiBnxIFuOyAjNzVCMwor55a0ID4ga8STOyAjNzVCNAor55a1ID4gY8SrOyAjNzVCNQor55a2ID4geGnDqDsgIzc1QjYKK+eWtyA+IHHDrTsgIzc1QjcKK+eWuCA+IGTEg247ICM3NUI4CivnlrkgPiB6aMSVbjsgIzc1QjkKK+eWuiA+IGbDoTsgIzc1QkEKK+eWuyA+IHpoxK07ICM3NUJCCivnlrwgPiB0w6luZzsgIzc1QkMKK+eWvSA+IGrFqzsgIzc1QkQKK+eWviA+IGrDrTsgIzc1QkUKK+eWvyA+IGbDqGk7ICM3NUJGCivnl4AgPiBxw7o7ICM3NUMwCivnl4EgPiBkacOgbjsgIzc1QzEKK+eXgiA+IGppxIE7ICM3NUMyCivnl4MgPiB4acOhbjsgIzc1QzMKK+eXhCA+IGNow6E7ICM3NUM0Civnl4UgPiBiw6xuZzsgIzc1QzUKK+eXhiA+IG7DrDsgIzc1QzYKK+eXhyA+IHpow6huZzsgIzc1QzcKK+eXiCA+IHnFjW5nOyAjNzVDOAor55eJID4gasOsbmc7ICM3NUM5Civnl4ogPiBxdcOhbjsgIzc1Q0EKK+eXiyA+IGNow7NuZzsgIzc1Q0IKK+eXjCA+IHTFjW5nOyAjNzVDQwor55eNID4gecOtOyAjNzVDRAor55eOID4ga8SBaTsgIzc1Q0UKK+eXjyA+IHfElWk7ICM3NUNGCivnl5AgPiBow7ppOyAjNzVEMAor55eRID4gZMWtbzsgIzc1RDEKK+eXkiA+IHnEg25nOyAjNzVEMgor55eTID4gY2jDrDsgIzc1RDMKK+eXlCA+IHpow6w7ICM3NUQ0Civnl5UgPiBow6luOyAjNzVENQor55eWID4gecSDOyAjNzVENgor55eXID4gbcOoaTsgIzc1RDcKK+eXmCA+IGTDsnU7ICM3NUQ4Civnl5kgPiBqw6xuZzsgIzc1RDkKK+eXmiA+IHhpxIFvOyAjNzVEQQor55ebID4gdMOybmc7ICM3NURCCivnl5wgPiB0xas7ICM3NURDCivnl50gPiBtw6FuZzsgIzc1REQKK+eXniA+IHDErTsgIzc1REUKK+eXnyA+IHhpxIFvOyAjNzVERgor55egID4gc3XEgW47ICM3NUUwCivnl6EgPiBwxas7ICM3NUUxCivnl6IgPiBsw6w7ICM3NUUyCivnl6MgPiB6aMOsOyAjNzVFMwor55ekID4gY8O6bzsgIzc1RTQKK+eXpSA+IGTDum87ICM3NUU1Civnl6YgPiB3w7k7ICM3NUU2Civnl6cgPiBzaMSBOyAjNzVFNwor55eoID4gbMOhbzsgIzc1RTgKK+eXqSA+IHNow7J1OyAjNzVFOQor55eqID4gaHXDoG47ICM3NUVBCivnl6sgPiB4acOhbjsgIzc1RUIKK+eXrCA+IHnDrDsgIzc1RUMKK+eXrSA+IHDDqW5nOyAjNzVFRAor55euID4gemjDoG5nOyAjNzVFRQor55evID4gZ3XEg247ICM3NUVGCivnl7AgPiB0w6FuOyAjNzVGMAor55exID4gZsOoaTsgIzc1RjEKK+eXsiA+IG3DoTsgIzc1RjIKK+eXsyA+IGzDrW47ICM3NUYzCivnl7QgPiBjaMSrOyAjNzVGNAor55e1ID4gasOsOyAjNzVGNQor55e2ID4gZGnEg247ICM3NUY2Civnl7cgPiDEgW47ICM3NUY3Civnl7ggPiBjaMOsOyAjNzVGOAor55e5ID4gYsOsOyAjNzVGOQor55e6ID4gYsSTaTsgIzc1RkEKK+eXuyA+IG3DrW47ICM3NUZCCivnl7wgPiBnxas7ICM3NUZDCivnl70gPiBkxatpOyAjNzVGRAor55e+ID4gxJM7ICM3NUZFCivnl78gPiB3xJVpOyAjNzVGRgor55iAID4gecWrOyAjNzYwMAor55iBID4gY8O5aTsgIzc2MDEKK+eYgiA+IHnEgzsgIzc2MDIKK+eYgyA+IHpoxa07ICM3NjAzCivnmIQgPiBjw7k7ICM3NjA0CivnmIUgPiBkw6BuOyAjNzYwNQor55iGID4gc2jDqG47ICM3NjA2CivnmIcgPiB6aMWtbmc7ICM3NjA3CivnmIggPiBqw6w7ICM3NjA4CivnmIkgPiB5w7k7ICM3NjA5CivnmIogPiBow7N1OyAjNzYwQQor55iLID4gZsSTbmc7ICM3NjBCCivnmIwgPiBsw6A7ICM3NjBDCivnmI0gPiB5w6FuZzsgIzc2MEQKK+eYjiA+IHNow6huOyAjNzYwRQor55iPID4gdMO6OyAjNzYwRgor55iQID4gecWtOyAjNzYxMAor55iRID4gZ3XEgTsgIzc2MTEKK+eYkiA+IHfDqW47ICM3NjEyCivnmJMgPiBodcOgbjsgIzc2MTMKK+eYlCA+IGvDuTsgIzc2MTQKK+eYlSA+IGppxIM7ICM3NjE1CivnmJYgPiB5xKtuOyAjNzYxNgor55iXID4gecOsOyAjNzYxNwor55iYID4gbMeYOyAjNzYxOAor55iZID4gc8SBbzsgIzc2MTkKK+eYmiA+IGp1w6k7ICM3NjFBCivnmJsgPiBjaMOsOyAjNzYxQgor55icID4geMOtOyAjNzYxQwor55idID4gZ3XEgW47ICM3NjFECivnmJ4gPiB5w6w7ICM3NjFFCivnmJ8gPiB3xJNuOyAjNzYxRgor55igID4gasOtOyAjNzYyMAor55ihID4gY2h1xIFuZzsgIzc2MjEKK+eYoiA+IGLEgW47ICM3NjIyCivnmKMgPiBsxJVpOyAjNzYyMwor55ikID4gbMOtdTsgIzc2MjQKK+eYpSA+IGNow6BpOyAjNzYyNQor55imID4gc2jDsnU7ICM3NjI2CivnmKcgPiBux5xlOyAjNzYyNwor55ioID4gZGnEgW47ICM3NjI4CivnmKkgPiBkxIE7ICM3NjI5CivnmKogPiBwacSTOyAjNzYyQQor55irID4gdMSBbjsgIzc2MkIKK+eYrCA+IHpow6BuZzsgIzc2MkMKK+eYrSA+IGJpxIFvOyAjNzYyRAor55iuID4gc2hlbjsgIzc2MkUKK+eYryA+IGPDuTsgIzc2MkYKK+eYsCA+IGzFrW87ICM3NjMwCivnmLEgPiB5w6w7ICM3NjMxCivnmLIgPiB6w7JuZzsgIzc2MzIKK+eYsyA+IGNoxY11OyAjNzYzMwor55i0ID4gemjDoG5nOyAjNzYzNAor55i1ID4gemjDoGk7ICM3NjM1CivnmLYgPiBzw7J1OyAjNzYzNgor55i3ID4gc8WtbzsgIzc2MzcKK+eYuCA+IHF1w6k7ICM3NjM4CivnmLkgPiBkacOgbzsgIzc2MzkKK+eYuiA+IGzDsnU7ICM3NjNBCivnmLsgPiBsx5g7ICM3NjNCCivnmLwgPiBtw7I7ICM3NjNDCivnmL0gPiBqw6xuOyAjNzYzRAor55i+ID4gecStbjsgIzc2M0UKK+eYvyA+IHnErW5nOyAjNzYzRgor55mAID4gaHXDoW5nOyAjNzY0MAor55mBID4gZsO6OyAjNzY0MQor55mCID4gbGnDoW87ICM3NjQyCivnmYMgPiBsw7NuZzsgIzc2NDMKK+eZhCA+IHFpw6FvOyAjNzY0NAor55mFID4gbMOtdTsgIzc2NDUKK+eZhiA+IGzDoW87ICM3NjQ2CivnmYcgPiB4acOhbjsgIzc2NDcKK+eZiCA+IGbDqGk7ICM3NjQ4CivnmYkgPiBkw6BuOyAjNzY0OQor55mKID4gecOsbjsgIzc2NEEKK+eZiyA+IGjDqDsgIzc2NEIKK+eZjCA+IHnDoW47ICM3NjRDCivnmY0gPiBixIFuOyAjNzY0RAor55mOID4geGnDoW47ICM3NjRFCivnmY8gPiBndcSBbjsgIzc2NEYKK+eZkCA+IGd1w6BpOyAjNzY1MAor55mRID4gbsOzbmc7ICM3NjUxCivnmZIgPiB5w7k7ICM3NjUyCivnmZMgPiB3w6lpOyAjNzY1Mwor55mUID4gecOsOyAjNzY1NAor55mVID4gecWNbmc7ICM3NjU1CivnmZYgPiBwxK07ICM3NjU2CivnmZcgPiBsxJVpOyAjNzY1Nwor55mYID4gbMOsOyAjNzY1OAor55mZID4gc2jFrTsgIzc2NTkKK+eZmiA+IGTDoG47ICM3NjVBCivnmZsgPiBsxK1uOyAjNzY1Qgor55mcID4gZGnDoG47ICM3NjVDCivnmZ0gPiBsxK1uOyAjNzY1RAor55meID4gbMOgaTsgIzc2NUUKK+eZnyA+IHBpxJM7ICM3NjVGCivnmaAgPiBqw6w7ICM3NjYwCivnmaEgPiBjaMSrOyAjNzY2MQor55miID4gecSDbmc7ICM3NjYyCivnmaMgPiB4acSDbjsgIzc2NjMKK+eZpCA+IGppw6k7ICM3NjY0CivnmaUgPiB6aMSTbmc7ICM3NjY1CivnmacgPiBsw6w7ICM3NjY3CivnmaggPiBow7lvOyAjNzY2OAor55mpID4gbMOgaTsgIzc2NjkKK+eZqyA+IGRpxIFuOyAjNzY2Qgor55msID4geGnEg247ICM3NjZDCivnma0gPiB5xK1uZzsgIzc2NkQKK+eZriA+IHnErW47ICM3NjZFCivnma8gPiBxw7o7ICM3NjZGCivnmbAgPiB5xY1uZzsgIzc2NzAKK+eZsSA+IHTEgW47ICM3NjcxCivnmbIgPiBkacSBbjsgIzc2NzIKK+eZsyA+IGzFrW87ICM3NjczCivnmbQgPiBsx5hhbjsgIzc2NzQKK+eZtSA+IGx1w6FuOyAjNzY3NQor55m2ID4gYsWNOyAjNzY3Ngor55m4ID4gZ8WtaTsgIzc2NzgKK+eZuSA+IHDFjTsgIzc2NzkKK+eZuiA+IGbEgTsgIzc2N0EKK+eZuyA+IGTEk25nOyAjNzY3Qgor55m8ID4gZsSBOyAjNzY3Qwor55m9ID4gYsOhaTsgIzc2N0QKK+eZviA+IGLEg2k7ICM3NjdFCivnmb8gPiBxacOpOyAjNzY3Rgor55qAID4gYsSrOyAjNzY4MAor55qBID4gesOgbzsgIzc2ODEKK+eagiA+IHrDoG87ICM3NjgyCivnmoMgPiBtw6BvOyAjNzY4Mwor55qEID4gZGU7ICM3Njg0CivnmoUgPiBwxIE7ICM3Njg1CivnmoYgPiBqacSTOyAjNzY4Ngor55qHID4gaHXDoW5nOyAjNzY4Nwor55qIID4gZ8WraTsgIzc2ODgKK+eaiSA+IGPErTsgIzc2ODkKK+eaiiA+IGzDrW5nOyAjNzY4QQor55qLID4gZ8SBbzsgIzc2OEIKK+eajCA+IG3DsjsgIzc2OEMKK+eajSA+IGrDrTsgIzc2OEQKK+eajiA+IGppxINvOyAjNzY4RQor55qPID4gcMSVbmc7ICM3NjhGCivnmpAgPiBnxIFvOyAjNzY5MAor55qRID4gw6FpOyAjNzY5MQor55qSID4gw6k7ICM3NjkyCivnmpMgPiBow6BvOyAjNzY5Mwor55qUID4gaMOgbjsgIzc2OTQKK+ealSA+IGLEqzsgIzc2OTUKK+ealiA+IHfEg247ICM3Njk2CivnmpcgPiBjaMOzdTsgIzc2OTcKK+eamCA+IHFpw6BuOyAjNzY5OAor55qZID4geMSrOyAjNzY5OQor55qaID4gw6FpOyAjNzY5QQor55qbID4gasStb25nOyAjNzY5Qgor55qcID4gaMOgbzsgIzc2OUMKK+eanSA+IGh1xINuZzsgIzc2OUQKK+eaniA+IGjDoG87ICM3NjlFCivnmp8gPiB6w6k7ICM3NjlGCivnmqAgPiBjxa1pOyAjNzZBMAor55qhID4gaMOgbzsgIzc2QTEKK+eaoiA+IHhpxINvOyAjNzZBMgor55qjID4gecOoOyAjNzZBMwor55qkID4gcMOzOyAjNzZBNAor55qlID4gaMOgbzsgIzc2QTUKK+eapiA+IGppxINvOyAjNzZBNgor55qnID4gw6BpOyAjNzZBNwor55qoID4geMSrbmc7ICM3NkE4CivnmqkgPiBodcOgbmc7ICM3NkE5CivnmqogPiBsw6w7ICM3NkFBCivnmqsgPiBwacSDbzsgIzc2QUIKK+earCA+IGjDqDsgIzc2QUMKK+earSA+IGppw6BvOyAjNzZBRAor55quID4gcMOtOyAjNzZBRQor55qvID4gZ8SDbjsgIzc2QUYKK+easCA+IHDDoG87ICM3NkIwCivnmrEgPiB6aMOydTsgIzc2QjEKK+easiA+IGrFq247ICM3NkIyCivnmrMgPiBxw611OyAjNzZCMwor55q0ID4gY8WrbjsgIzc2QjQKK+eatSA+IHF1w6g7ICM3NkI1CivnmrYgPiB6aMSBOyAjNzZCNgor55q3ID4gZ8WtOyAjNzZCNwor55q4ID4gasWrbjsgIzc2QjgKK+eauSA+IGrFq247ICM3NkI5CivnmrogPiB6aMOydTsgIzc2QkEKK+eauyA+IHpoxIE7ICM3NkJCCivnmrwgPiBnxa07ICM3NkJDCivnmr0gPiB6aMSDbjsgIzc2QkQKK+eaviA+IGTDujsgIzc2QkUKK+eavyA+IG3ErW47ICM3NkJGCivnm4AgPiBxxK07ICM3NkMwCivnm4EgPiB5w61uZzsgIzc2QzEKK+ebgiA+IHnDujsgIzc2QzIKK+ebgyA+IGLEk2k7ICM3NkMzCivnm4QgPiB6aMSBbzsgIzc2QzQKK+ebhSA+IHpoxY1uZzsgIzc2QzUKK+ebhiA+IHDDqW47ICM3NkM2Civnm4cgPiBow6k7ICM3NkM3Civnm4ggPiB5w61uZzsgIzc2QzgKK+ebiSA+IGjDqTsgIzc2QzkKK+ebiiA+IHnDrDsgIzc2Q0EKK+ebiyA+IGLFjTsgIzc2Q0IKK+ebjCA+IHfEg247ICM3NkNDCivnm40gPiBow6k7ICM3NkNECivnm44gPiDDoG5nOyAjNzZDRQor55uPID4gemjEg247ICM3NkNGCivnm5AgPiB5w6FuOyAjNzZEMAor55uRID4gamnEgW47ICM3NkQxCivnm5IgPiBow6k7ICM3NkQyCivnm5MgPiB5xas7ICM3NkQzCivnm5QgPiBrxatpOyAjNzZENAor55uVID4gZsOgbjsgIzc2RDUKK+ebliA+IGfDoGk7ICM3NkQ2Civnm5cgPiBkw6BvOyAjNzZENwor55uYID4gcMOhbjsgIzc2RDgKK+ebmSA+IGbFrTsgIzc2RDkKK+ebmiA+IHHDrXU7ICM3NkRBCivnm5sgPiBzaMOobmc7ICM3NkRCCivnm5wgPiBkw6BvOyAjNzZEQwor55udID4gbMO5OyAjNzZERAor55ueID4gemjEg247ICM3NkRFCivnm58gPiBtw6luZzsgIzc2REYKK+eboCA+IGzErTsgIzc2RTAKK+eboSA+IGrDrG47ICM3NkUxCivnm6IgPiB4w7k7ICM3NkUyCivnm6MgPiBqacSBbjsgIzc2RTMKK+ebpCA+IHDDoW47ICM3NkU0Civnm6UgPiBndcOgbjsgIzc2RTUKK+ebpiA+IMSBbjsgIzc2RTYKK+ebpyA+IGzDujsgIzc2RTcKK+ebqCA+IHNoxa07ICM3NkU4Civnm6kgPiB6aMWNdTsgIzc2RTkKK+ebqiA+IGTDoG5nOyAjNzZFQQor55urID4gxIFuOyAjNzZFQgor55usID4gZ8WtOyAjNzZFQwor55utID4gbMOsOyAjNzZFRAor55uuID4gbcO5OyAjNzZFRQor55uvID4gY2jDqW5nOyAjNzZFRgor55uwID4gZ8SDbjsgIzc2RjAKK+ebsSA+IHjFqzsgIzc2RjEKK+ebsiA+IG3DoW5nOyAjNzZGMgor55uzID4gbcOhbmc7ICM3NkYzCivnm7QgPiB6aMOtOyAjNzZGNAor55u1ID4gccOsOyAjNzZGNQor55u2ID4gcnXEg247ICM3NkY2Civnm7cgPiB0acOhbjsgIzc2RjcKK+ebuCA+IHhpxIFuZzsgIzc2RjgKK+ebuSA+IGTDuW47ICM3NkY5Civnm7ogPiB4xKtuOyAjNzZGQQor55u7ID4geMOsOyAjNzZGQgor55u8ID4gcMOgbjsgIzc2RkMKK+ebvSA+IGbEk25nOyAjNzZGRAor55u+ID4gZMO5bjsgIzc2RkUKK+ebvyA+IG3DrW47ICM3NkZGCivnnIAgPiBtw61uZzsgIzc3MDAKK+ecgSA+IHNoxJVuZzsgIzc3MDEKK+ecgiA+IHNow6w7ICM3NzAyCivnnIMgPiB5w7puOyAjNzcwMwor55yEID4gbWnEg247ICM3NzA0CivnnIUgPiBwxIFuOyAjNzcwNQor55yGID4gZsSDbmc7ICM3NzA2CivnnIcgPiBtacSDbzsgIzc3MDcKK+eciCA+IGTEgW47ICM3NzA4CivnnIkgPiBtw6lpOyAjNzcwOQor55yKID4gbcOgbzsgIzc3MEEKK+eciyA+IGvDoG47ICM3NzBCCivnnIwgPiB4acOgbjsgIzc3MEMKK+ecjSA+IMWNdTsgIzc3MEQKK+ecjiA+IHNow6w7ICM3NzBFCivnnI8gPiB5xIFuZzsgIzc3MEYKK+eckCA+IHpoxJNuZzsgIzc3MTAKK+eckSA+IHnEg287ICM3NzExCivnnJIgPiBzaMOobjsgIzc3MTIKK+eckyA+IGjDuW87ICM3NzEzCivnnJQgPiBkw6A7ICM3NzE0CivnnJUgPiB6aMSVbjsgIzc3MTUKK+ecliA+IGt1w6BuZzsgIzc3MTYKK+eclyA+IGrFqzsgIzc3MTcKK+ecmCA+IHNow6huOyAjNzcxOAor55yZID4gY2jDrDsgIzc3MTkKK+ecmiA+IHNoxJVuZzsgIzc3MUEKK+ecmyA+IG3DqGk7ICM3NzFCCivnnJwgPiBtw7I7ICM3NzFDCivnnJ0gPiB6aMO5OyAjNzcxRAor55yeID4gemjEk247ICM3NzFFCivnnJ8gPiB6aMSTbjsgIzc3MUYKK+ecoCA+IG1pw6FuOyAjNzcyMAor55yhID4gZMSrOyAjNzcyMQor55yiID4geXXEgW47ICM3NzIyCivnnKMgPiBkacOpOyAjNzcyMwor55ykID4gecOtOyAjNzcyNAor55ylID4gesOsOyAjNzcyNQor55ymID4gesOsOyAjNzcyNgor55ynID4gY2jEg287ICM3NzI3CivnnKggPiB6aMSDOyAjNzcyOAor55ypID4geHXDoG47ICM3NzI5CivnnKogPiBixK1uZzsgIzc3MkEKK+ecqyA+IG3ErTsgIzc3MkIKK+ecrCA+IGzDs25nOyAjNzcyQwor55ytID4gc8WraTsgIzc3MkQKK+ecriA+IGTDsm5nOyAjNzcyRQor55yvID4gbcStOyAjNzcyRgor55ywID4gZGnDqTsgIzc3MzAKK+ecsSA+IHnDrTsgIzc3MzEKK+ecsiA+IMOocjsgIzc3MzIKK+ecsyA+IG3ErW5nOyAjNzczMwor55y0ID4geHXDoG47ICM3NzM0CivnnLUgPiBjaMSrOyAjNzczNQor55y2ID4ga3XDoG5nOyAjNzczNgor55y3ID4ganXDoG47ICM3NzM3CivnnLggPiBtw7N1OyAjNzczOAor55y5ID4gemjDqG47ICM3NzM5CivnnLogPiB0acOgbzsgIzc3M0EKK+ecuyA+IHnDoW5nOyAjNzczQgor55y8ID4gecSDbjsgIzc3M0MKK+ecvSA+IG3DsjsgIzc3M0QKK+ecviA+IHpow7JuZzsgIzc3M0UKK+ecvyA+IG3DoGk7ICM3NzNGCivnnYAgPiB6aMOhbzsgIzc3NDAKK+edgSA+IHpoxJNuZzsgIzc3NDEKK+edgiA+IG3DqWk7ICM3NzQyCivnnYMgPiBqw7luOyAjNzc0Mwor552EID4gc2jDoG87ICM3NzQ0CivnnYUgPiBow6BuOyAjNzc0NQor552GID4gaHXEg247ICM3NzQ2CivnnYcgPiBkw6w7ICM3NzQ3CivnnYggPiBjaMSVbmc7ICM3NzQ4CivnnYkgPiBjxatvOyAjNzc0OQor552KID4ganXDoG47ICM3NzRBCivnnYsgPiDDqTsgIzc3NEIKK+edjCA+IHfEg247ICM3NzRDCivnnY0gPiB4acOgbjsgIzc3NEQKK+edjiA+IHjEqzsgIzc3NEUKK+edjyA+IGvDuW47ICM3NzRGCivnnZAgPiBsw6BpOyAjNzc1MAor552RID4gamnEg247ICM3NzUxCivnnZIgPiBzaMSDbjsgIzc3NTIKK+edkyA+IHRpxINuOyAjNzc1Mwor552UID4gaMWtbjsgIzc3NTQKK+edlSA+IHfEg247ICM3NzU1CivnnZYgPiBsw61uZzsgIzc3NTYKK+edlyA+IHNow6w7ICM3NzU3CivnnZggPiBxw61vbmc7ICM3NzU4CivnnZkgPiBsacOoOyAjNzc1OQor552aID4gecOhaTsgIzc3NUEKK+edmyA+IGrEq25nOyAjNzc1Qgor552cID4gemjEk25nOyAjNzc1Qwor552dID4gbMOtOyAjNzc1RAor552eID4gbMOgaTsgIzc3NUUKK+ednyA+IHPDuWk7ICM3NzVGCivnnaAgPiBqdcOgbjsgIzc3NjAKK+edoSA+IHNow7lpOyAjNzc2MQor552iID4gc8WraTsgIzc3NjIKK+edoyA+IGTFqzsgIzc3NjMKK+edpCA+IGLDrDsgIzc3NjQKK+edpSA+IGLDrDsgIzc3NjUKK+edpiA+IG3DuTsgIzc3NjYKK+edpyA+IGjFq247ICM3NzY3CivnnaggPiBuw6w7ICM3NzY4CivnnakgPiBsw7k7ICM3NzY5CivnnaogPiB5w6w7ICM3NzZBCivnnasgPiBqacOpOyAjNzc2Qgor552sID4gY8SDaTsgIzc3NkMKK+edrSA+IHpoxY91OyAjNzc2RAor552uID4gecO6OyAjNzc2RQor552vID4gaMWrbjsgIzc3NkYKK+edsCA+IG3DoDsgIzc3NzAKK+edsSA+IHhpw6A7ICM3NzcxCivnnbIgPiB4xK1uZzsgIzc3NzIKK+edsyA+IHjEqzsgIzc3NzMKK+edtCA+IGfDuW47ICM3Nzc0CivnnbUgPiBjYWk7ICM3Nzc1CivnnbYgPiBjaMWtbjsgIzc3NzYKK+edtyA+IGppxIFuOyAjNzc3Nwor5524ID4gbcOoaTsgIzc3NzgKK+eduSA+IGTFrTsgIzc3NzkKK+eduiA+IGjDs3U7ICM3NzdBCivnnbsgPiB4dcSBbjsgIzc3N0IKK+edvCA+IHTDrDsgIzc3N0MKK+edvSA+IGvDumk7ICM3NzdECivnnb4gPiBnxIFvOyAjNzc3RQor552/ID4gcsO5aTsgIzc3N0YKK+eegCA+IG3DsnU7ICM3NzgwCivnnoEgPiB4w7k7ICM3NzgxCivnnoIgPiBmxIE7ICM3NzgyCivnnoMgPiB3xJNuOyAjNzc4Mwor556EID4gbWnDoW87ICM3Nzg0CivnnoUgPiBjaMWPdTsgIzc3ODUKK+eehiA+IGvDuWk7ICM3Nzg2CivnnocgPiBtxKs7ICM3Nzg3CivnnoggPiB3xJVuZzsgIzc3ODgKK+eeiSA+IGvDsnU7ICM3Nzg5CivnnoogPiBkw6BuZzsgIzc3OEEKK+eeiyA+IGNoxJNuOyAjNzc4Qgor556MID4ga8STOyAjNzc4Qwor556NID4gc8WPdTsgIzc3OEQKK+eejiA+IHhpxIE7ICM3NzhFCivnno8gPiBxw61vbmc7ICM3NzhGCivnnpAgPiBtw6BvOyAjNzc5MAor556RID4gbcOtbmc7ICM3NzkxCivnnpIgPiBtw6FuOyAjNzc5Mgor556TID4gc2jDuWk7ICM3NzkzCivnnpQgPiB6w6k7ICM3Nzk0CivnnpUgPiB6aMOgbmc7ICM3Nzk1CivnnpYgPiB5w6w7ICM3Nzk2CivnnpcgPiBkacSBbzsgIzc3OTcKK+eemCA+IMWNdTsgIzc3OTgKK+eemSA+IG3DsjsgIzc3OTkKK+eemiA+IHNow7luOyAjNzc5QQor556bID4gY8WNbmc7ICM3NzlCCivnnpwgPiBsxY11OyAjNzc5Qwor556dID4gY2jEqzsgIzc3OUQKK+eeniA+IG3DoW47ICM3NzlFCivnnp8gPiBwacSDbzsgIzc3OUYKK+eeoCA+IGNoxJNuZzsgIzc3QTAKK+eeoSA+IGrDrDsgIzc3QTEKK+eeoiA+IG3DqW5nOyAjNzdBMgor556kID4gcsO6bjsgIzc3QTQKK+eepSA+IHBpxJM7ICM3N0E1CivnnqYgPiB4xKs7ICM3N0E2CivnnqcgPiBxacOhbzsgIzc3QTcKK+eeqCA+IHDDujsgIzc3QTgKK+eeqSA+IHpoxa07ICM3N0E5CivnnqogPiBkw6huZzsgIzc3QUEKK+eeqyA+IHNoxJVuOyAjNzdBQgor556sID4gc2jDuW47ICM3N0FDCivnnq0gPiBsacSDbzsgIzc3QUQKK+eeriA+IGNow6g7ICM3N0FFCivnnq8gPiB4acOhbjsgIzc3QUYKK+eesCA+IGvDoG47ICM3N0IwCivnnrEgPiB5w6g7ICM3N0IxCivnnrIgPiB4w7k7ICM3N0IyCivnnrMgPiB0w7NuZzsgIzc3QjMKK+eetCA+IG3Ds3U7ICM3N0I0CivnnrUgPiBsw61uOyAjNzdCNQor5562ID4ga8O5aTsgIzc3QjYKK+eetyA+IHhpw6FuOyAjNzdCNwor5564ID4gecOoOyAjNzdCOAor5565ID4gw6BpOyAjNzdCOQor5566ID4gaMO5aTsgIzc3QkEKK+eeuyA+IHpoxIFuOyAjNzdCQgor5568ID4gamnEg247ICM3N0JDCivnnr0gPiBnxa07ICM3N0JECivnnr4gPiB6aMOgbzsgIzc3QkUKK+eevyA+IHHFqzsgIzc3QkYKK+efgCA+IHfDqWk7ICM3N0MwCivnn4EgPiBjaMWPdTsgIzc3QzEKK+efgiA+IHPDoG87ICM3N0MyCivnn4MgPiBuxK1uZzsgIzc3QzMKK+efhCA+IHjFq247ICM3N0M0Civnn4UgPiB5w6BvOyAjNzdDNQor55+GID4gaMO5bzsgIzc3QzYKK+efhyA+IG3DqW5nOyAjNzdDNwor55+IID4gbWnDoW47ICM3N0M4Civnn4kgPiBixKtuOyAjNzdDOQor55+KID4gbWnDoW47ICM3N0NBCivnn4sgPiBsw6w7ICM3N0NCCivnn4wgPiBrdcOgbmc7ICM3N0NDCivnn40gPiBqdcOpOyAjNzdDRAor55+OID4geHXEgW47ICM3N0NFCivnn48gPiBtacOhbjsgIzc3Q0YKK+efkCA+IGjDuW87ICM3N0QwCivnn5EgPiBsw7o7ICM3N0QxCivnn5IgPiBtw6luZzsgIzc3RDIKK+efkyA+IGzDs25nOyAjNzdEMwor55+UID4gZ3XDoG47ICM3N0Q0Civnn5UgPiBtxINuOyAjNzdENQor55+WID4geMStOyAjNzdENgor55+XID4gY2jDuTsgIzc3RDcKK+efmCA+IHTEg25nOyAjNzdEOAor55+ZID4ga8OgbjsgIzc3RDkKK+efmiA+IHpoxa07ICM3N0RBCivnn5sgPiBtw6FvOyAjNzdEQgor55+cID4gasSrbjsgIzc3REMKK+efnSA+IGzDrW47ICM3N0RECivnn54gPiB5w7k7ICM3N0RFCivnn58gPiBzaMO5bzsgIzc3REYKK+efoCA+IGPDqDsgIzc3RTAKK+efoSA+IGp1w6k7ICM3N0UxCivnn6IgPiBzaMStOyAjNzdFMgor55+jID4gecStOyAjNzdFMwor55+kID4gc2jElW47ICM3N0U0Civnn6UgPiB6aMSrOyAjNzdFNQor55+mID4gaMOzdTsgIzc3RTYKK+efpyA+IHNoxJVuOyAjNzdFNwor55+oID4gecStbmc7ICM3N0U4Civnn6kgPiBqxa07ICM3N0U5Civnn6ogPiB6aMWNdTsgIzc3RUEKK+efqyA+IGppxINvOyAjNzdFQgor55+sID4gY8O6bzsgIzc3RUMKK+efrSA+IGR1xINuOyAjNzdFRAor55+uID4gxINpOyAjNzdFRQor55+vID4gamnEg287ICM3N0VGCivnn7AgPiB6xJNuZzsgIzc3RjAKK+efsSA+IGjDuW87ICM3N0YxCivnn7IgPiBixINpOyAjNzdGMgor55+zID4gc2jDrTsgIzc3RjMKK+eftCA+IGTDrG5nOyAjNzdGNAor55+1ID4gccOsOyAjNzdGNQor55+2ID4gasSrOyAjNzdGNgor55+3ID4gesStOyAjNzdGNwor55+4ID4gZ8SBbjsgIzc3RjgKK+efuSA+IHfDuTsgIzc3RjkKK+efuiA+IHTFq287ICM3N0ZBCivnn7sgPiBrw7k7ICM3N0ZCCivnn7wgPiBxacSBbmc7ICM3N0ZDCivnn70gPiB4w6w7ICM3N0ZECivnn74gPiBmw6FuOyAjNzdGRQor55+/ID4ga3XDoG5nOyAjNzdGRgor56CAID4gZMOgbmc7ICM3ODAwCivnoIEgPiBtxIM7ICM3ODAxCivnoIIgPiBzaMSBOyAjNzgwMgor56CDID4gZMSBbjsgIzc4MDMKK+eghCA+IGp1w6k7ICM3ODA0CivnoIUgPiBsw6w7ICM3ODA1CivnoIYgPiBmxas7ICM3ODA2CivnoIcgPiBtw61uOyAjNzgwNwor56CIID4gbsWtbzsgIzc4MDgKK+egiSA+IGjDuW87ICM3ODA5CivnoIogPiBrw6BuZzsgIzc4MEEKK+egiyA+IHpoxK07ICM3ODBCCivnoIwgPiBxw6w7ICM3ODBDCivnoI0gPiBrxINuOyAjNzgwRAor56COID4gamnDqDsgIzc4MEUKK+egjyA+IGbEk247ICM3ODBGCivnoJAgPiDDqDsgIzc4MTAKK+egkSA+IHnDoDsgIzc4MTEKK+egkiA+IHDEqzsgIzc4MTIKK+egkyA+IHpow6k7ICM3ODEzCivnoJQgPiB5w6FuOyAjNzgxNAor56CVID4gc8O5aTsgIzc4MTUKK+egliA+IHpodcSBbjsgIzc4MTYKK+eglyA+IGNoxJM7ICM3ODE3CivnoJggPiBkw7luOyAjNzgxOAor56CZID4gcMSBbjsgIzc4MTkKK+egmiA+IHnDoG47ICM3ODFBCivnoJwgPiBmxJNuZzsgIzc4MUMKK+egnSA+IGbDoTsgIzc4MUQKK+egniA+IG3DsjsgIzc4MUUKK+egnyA+IHpow6A7ICM3ODFGCivnoKAgPiBxxas7ICM3ODIwCivnoKEgPiB5w7k7ICM3ODIxCivnoKIgPiBsxa1vOyAjNzgyMgor56CjID4gdMO6bzsgIzc4MjMKK+egpCA+IHTDum87ICM3ODI0CivnoKUgPiBkxK07ICM3ODI1CivnoKYgPiB6aMOgaTsgIzc4MjYKK+egpyA+IHpoxJNuOyAjNzgyNwor56CoID4gw6BpOyAjNzgyOAor56CpID4gZsOoaTsgIzc4MjkKK+egqiA+IG3FrTsgIzc4MkEKK+egqyA+IHpoxa07ICM3ODJCCivnoKwgPiBsw6w7ICM3ODJDCivnoK0gPiBiacSBbjsgIzc4MkQKK+egriA+IG7FrTsgIzc4MkUKK+egryA+IHDEq25nOyAjNzgyRgor56CwID4gcMSTbmc7ICM3ODMwCivnoLEgPiBsw61uZzsgIzc4MzEKK+egsiA+IHDDoG87ICM3ODMyCivnoLMgPiBsw6g7ICM3ODMzCivnoLQgPiBww7I7ICM3ODM0CivnoLUgPiBixY07ICM3ODM1CivnoLYgPiBww7I7ICM3ODM2CivnoLcgPiBzaMSTbjsgIzc4MzcKK+eguCA+IHrDoTsgIzc4MzgKK+eguSA+IG7FrW87ICM3ODM5CivnoLogPiBsw6w7ICM3ODNBCivnoLsgPiBsw7NuZzsgIzc4M0IKK+egvCA+IHTDs25nOyAjNzgzQwor56C+ID4gbMOsOyAjNzgzRQor56GAID4gY2jFrTsgIzc4NDAKK+ehgSA+IGvEk25nOyAjNzg0MQor56GCID4gcXXDoW47ICM3ODQyCivnoYMgPiB6aMWrOyAjNzg0Mwor56GEID4ga3XEgW5nOyAjNzg0NAor56GFID4gaMO5bzsgIzc4NDUKK+ehhiA+IMOoOyAjNzg0Ngor56GHID4gbsOhbzsgIzc4NDcKK+ehiCA+IGppw6E7ICM3ODQ4CivnoYkgPiBsw7k7ICM3ODQ5CivnoYogPiB3xJVpOyAjNzg0QQor56GLID4gw6BpOyAjNzg0Qgor56GMID4gbMO5bzsgIzc4NEMKK+ehjSA+IGvDqG47ICM3ODRECivnoY4gPiB4w61uZzsgIzc4NEUKK+ehjyA+IHnDoW47ICM3ODRGCivnoZAgPiB0w7NuZzsgIzc4NTAKK+ehkSA+IHDEk25nOyAjNzg1MQor56GSID4geMSrOyAjNzg1Mgor56GUID4gaMOzbmc7ICM3ODU0CivnoZUgPiBzaMO5bzsgIzc4NTUKK+ehliA+IHhpw6E7ICM3ODU2CivnoZcgPiBxacSBbzsgIzc4NTcKK+ehmSA+IHfDqGk7ICM3ODU5CivnoZogPiBxacOhbzsgIzc4NUEKK+ehnCA+IGvEk25nOyAjNzg1Qwor56GdID4geGnEgW87ICM3ODVECivnoZ4gPiBxdcOoOyAjNzg1RQor56GfID4gY2jDoG47ICM3ODVGCivnoaAgPiBsxINuZzsgIzc4NjAKK+ehoSA+IGjDs25nOyAjNzg2MQor56GiID4gecO6OyAjNzg2Mgor56GjID4geGnEgW87ICM3ODYzCivnoaQgPiB4acOhOyAjNzg2NAor56GlID4gbcSDbmc7ICM3ODY1CivnoaYgPiBsw7JuZzsgIzc4NjYKK+ehpyA+IMStb25nOyAjNzg2Nwor56GoID4gY2jEkzsgIzc4NjgKK+ehqSA+IGNow6g7ICM3ODY5CivnoaogPiDDqTsgIzc4NkEKK+ehqyA+IGzDrXU7ICM3ODZCCivnoawgPiB5w6xuZzsgIzc4NkMKK+ehrSA+IG3DoW5nOyAjNzg2RAor56GuID4gcXXDqDsgIzc4NkUKK+ehryA+IHnDoG47ICM3ODZGCivnobAgPiBzaMSBOyAjNzg3MAor56GxID4ga8WtbjsgIzc4NzEKK+ehsiA+IHnDuTsgIzc4NzIKK+ehtSA+IGzFrTsgIzc4NzUKK+ehtiA+IGNoxJVuOyAjNzg3Ngor56G3ID4gamnEg247ICM3ODc3CivnobggPiBudcOoOyAjNzg3OAor56G5ID4gc8WNbmc7ICM3ODc5CivnobogPiB6aMO6bzsgIzc4N0EKK+ehuyA+IGvEk25nOyAjNzg3Qgor56G8ID4gcMOpbmc7ICM3ODdDCivnob0gPiB5xINuOyAjNzg3RAor56G+ID4gemjDuWk7ICM3ODdFCivnob8gPiBrxY1uZzsgIzc4N0YKK+eigCA+IGPDqW5nOyAjNzg4MAor56KBID4gccOtOyAjNzg4MQor56KCID4gesOybmc7ICM3ODgyCivnooMgPiBxw6xuZzsgIzc4ODMKK+eihCA+IGzDrW47ICM3ODg0CivnooUgPiBqxatuOyAjNzg4NQor56KGID4gYsWNOyAjNzg4Ngor56KHID4gZMOsbmc7ICM3ODg3CivnooggPiBtw61uOyAjNzg4OAor56KJID4gZGnEgW87ICM3ODg5CivnooogPiBqacSBbjsgIzc4OEEKK+eiiyA+IGjDqDsgIzc4OEIKK+eijCA+IGzDuTsgIzc4OEMKK+eijSA+IMOgaTsgIzc4OEQKK+eijiA+IHPDuWk7ICM3ODhFCivnoo8gPiBxdcOoOyAjNzg4Rgor56KQID4gbMOtbmc7ICM3ODkwCivnopEgPiBixJNpOyAjNzg5MQor56KSID4gecOtbjsgIzc4OTIKK+eikyA+IGTDuWk7ICM3ODkzCivnopQgPiB3xa07ICM3ODk0CivnopUgPiBxw607ICM3ODk1CivnopYgPiBsw7luOyAjNzg5Ngor56KXID4gd8SDbjsgIzc4OTcKK+eimCA+IGRpxINuOyAjNzg5OAor56KZID4gZ8SBbmc7ICM3ODk5CivnopogPiBww6lpOyAjNzg5QQor56KbID4gccOsOyAjNzg5Qgor56KcID4gY2jElW47ICM3ODlDCivnop0gPiBydcSDbjsgIzc4OUQKK+einiA+IHnDoW47ICM3ODlFCivnop8gPiBkacOpOyAjNzg5Rgor56KgID4gZMOsbmc7ICM3OEEwCivnoqEgPiBkw7o7ICM3OEExCivnoqIgPiB0w7pvOyAjNzhBMgor56KjID4gamnDqTsgIzc4QTMKK+eipCA+IHnEq25nOyAjNzhBNAor56KlID4gYmnEg247ICM3OEE1CivnoqYgPiBrw6g7ICM3OEE2CivnoqcgPiBiw6w7ICM3OEE3CivnoqggPiB3xJNpOyAjNzhBOAor56KpID4gc2jDuW87ICM3OEE5CivnoqogPiB6aMSTbjsgIzc4QUEKK+eiqyA+IGR1w6BuOyAjNzhBQgor56KsID4geGnDoTsgIzc4QUMKK+eirSA+IGTDoG5nOyAjNzhBRAor56KuID4gdMOtOyAjNzhBRQor56KvID4gbsSDbzsgIzc4QUYKK+eisCA+IHDDqG5nOyAjNzhCMAor56KxID4gamnEg247ICM3OEIxCivnorIgPiBkw6w7ICM3OEIyCivnorMgPiB0w6BuOyAjNzhCMwor56K0ID4gY2jDoTsgIzc4QjQKK+eitiA+IHHDrDsgIzc4QjYKK+eiuCA+IGbEk25nOyAjNzhCOAor56K5ID4geHXDoG47ICM3OEI5CivnorogPiBxdcOoOyAjNzhCQQor56K7ID4gcXXDqDsgIzc4QkIKK+eivCA+IG3EgzsgIzc4QkMKK+eivSA+IGfFjW5nOyAjNzhCRAor56K+ID4gbmnDoG47ICM3OEJFCivnor8gPiBzw7k7ICM3OEJGCivno4AgPiDDqTsgIzc4QzAKK+ejgSA+IGPDrTsgIzc4QzEKK+ejgiA+IGzDrHU7ICM3OEMyCivno4MgPiBzxKs7ICM3OEMzCivno4QgPiB0w6FuZzsgIzc4QzQKK+ejhSA+IGLDoG5nOyAjNzhDNQor56OGID4gaHXDoTsgIzc4QzYKK+ejhyA+IHDEqzsgIzc4QzcKK+ejiCA+IHfElWk7ICM3OEM4Civno4kgPiBzxINuZzsgIzc4QzkKK+ejiiA+IGzElWk7ICM3OENBCivno4sgPiBjxatvOyAjNzhDQgor56OMID4gemjEk247ICM3OENDCivno40gPiB4acOhOyAjNzhDRAor56OOID4gccSrOyAjNzhDRQor56OPID4gbGnDoW47ICM3OENGCivno5AgPiBww6FuOyAjNzhEMAor56ORID4gd8OoaTsgIzc4RDEKK+ejkiA+IHnFrW47ICM3OEQyCivno5MgPiBkxatpOyAjNzhEMwor56OUID4gemjDqTsgIzc4RDQKK+ejlSA+IGvEkzsgIzc4RDUKK+ejliA+IGzEgTsgIzc4RDYKK+ejmCA+IHHDrG5nOyAjNzhEOAor56OZID4gZ8WtbjsgIzc4RDkKK+ejmiA+IHpodcSBbjsgIzc4REEKK+ejmyA+IGNow6FuOyAjNzhEQgor56OcID4gccOsOyAjNzhEQwor56OdID4gw6FvOyAjNzhERAor56OeID4gcMSTbmc7ICM3OERFCivno58gPiBsw7k7ICM3OERGCivno6AgPiBsxa07ICM3OEUwCivno6EgPiBrw6BuOyAjNzhFMQor56OiID4gcWnEg25nOyAjNzhFMgor56OjID4gY2jElW47ICM3OEUzCivno6QgPiB5xK1uOyAjNzhFNAor56OlID4gbMSVaTsgIzc4RTUKK+ejpiA+IGJpxIFvOyAjNzhFNgor56OnID4gccOsOyAjNzhFNwor56OoID4gbcOzOyAjNzhFOAor56OpID4gccSrOyAjNzhFOQor56OqID4gY8WraTsgIzc4RUEKK+ejqyA+IHrFjW5nOyAjNzhFQgor56OsID4gccOsbmc7ICM3OEVDCivno60gPiBjaMO5bzsgIzc4RUQKK+ejryA+IGrEqzsgIzc4RUYKK+ejsCA+IHNow6BuOyAjNzhGMAor56OxID4gbMOhbzsgIzc4RjEKK+ejsiA+IHHDujsgIzc4RjIKK+ejsyA+IHrEk25nOyAjNzhGMwor56O0ID4gZMOobmc7ICM3OEY0Civno7UgPiBqacOgbjsgIzc4RjUKK+ejtiA+IHjDrDsgIzc4RjYKK+ejtyA+IGzDrG47ICM3OEY3Civno7ggPiBkw6xuZzsgIzc4RjgKK+ejuSA+IGRpw6BuOyAjNzhGOQor56O6ID4gaHXDoW5nOyAjNzhGQQor56O7ID4gcMOhbjsgIzc4RkIKK+ejvCA+IHrDoTsgIzc4RkMKK+ejvSA+IHFpxIFvOyAjNzhGRAor56O+ID4gZMSrOyAjNzhGRQor56O/ID4gbMOsOyAjNzhGRgor56SBID4gamnEgW87ICM3OTAxCivnpIMgPiB6aMSDbmc7ICM3OTAzCivnpIQgPiBxacOhbzsgIzc5MDQKK+ekhSA+IGTFq247ICM3OTA1CivnpIYgPiB4acSDbjsgIzc5MDYKK+ekhyA+IHnDuTsgIzc5MDcKK+ekiCA+IHpow7lpOyAjNzkwOAor56SJID4gaMOpOyAjNzkwOQor56SKID4gaMO5bzsgIzc5MEEKK+ekiyA+IHpow6FpOyAjNzkwQgor56SMID4gbMOoaTsgIzc5MEMKK+ekjSA+IGvElTsgIzc5MEQKK+ekjiA+IGNoxa07ICM3OTBFCivnpI8gPiBqw607ICM3OTBGCivnpJAgPiBxdcOoOyAjNzkxMAor56SRID4gZMOgbmc7ICM3OTExCivnpJIgPiB5xK07ICM3OTEyCivnpJMgPiBqacSBbmc7ICM3OTEzCivnpJQgPiBww6w7ICM3OTE0CivnpJUgPiBwxKs7ICM3OTE1CivnpJYgPiB5w7k7ICM3OTE2CivnpJcgPiBwxKtuOyAjNzkxNwor56SYID4gccOsOyAjNzkxOAor56SZID4gw6BpOyAjNzkxOQor56SaID4ga8OgaTsgIzc5MUEKK+ekmyA+IGppxIFuOyAjNzkxQgor56ScID4gecO5OyAjNzkxQwor56SdID4gcnXEg247ICM3OTFECivnpJ4gPiBtw6luZzsgIzc5MUUKK+eknyA+IHDDoG87ICM3OTFGCivnpKAgPiBjw607ICM3OTIwCivnpKMgPiBtacOoOyAjNzkyMwor56SkID4gY8SDOyAjNzkyNAor56SlID4geGnDoW47ICM3OTI1CivnpKYgPiBrdcOgbmc7ICM3OTI2CivnpKcgPiBsw6hpOyAjNzkyNwor56SoID4gbMSVaTsgIzc5MjgKK+ekqSA+IHpow6w7ICM3OTI5CivnpKogPiBsw6w7ICM3OTJBCivnpKsgPiBsw6w7ICM3OTJCCivnpKwgPiBmw6FuOyAjNzkyQwor56StID4gcXXDqDsgIzc5MkQKK+ekriA+IHDDoG87ICM3OTJFCivnpK8gPiB5xKtuZzsgIzc5MkYKK+eksCA+IGzDrDsgIzc5MzAKK+eksSA+IGzDs25nOyAjNzkzMQor56SyID4gbMOzbmc7ICM3OTMyCivnpLMgPiBtw7I7ICM3OTMzCivnpLQgPiBiw7M7ICM3OTM0CivnpLUgPiBzaHXEgW5nOyAjNzkzNQor56S2ID4gZ3XDoG47ICM3OTM2CivnpLcgPiBsw6FuOyAjNzkzNwor56S4ID4gesSDbjsgIzc5MzgKK+ekuSA+IHnDoW47ICM3OTM5CivnpLogPiBzaMOsOyAjNzkzQQor56S7ID4gc2jDrCcgJ3rDrCcgJ3DDoW5nOyAjNzkzQgor56S8ID4gbMStOyAjNzkzQwor56S9ID4gcsOpbmc7ICM3OTNECivnpL4gPiBzaMOoOyAjNzkzRQor56S/ID4geXXDqDsgIzc5M0YKK+elgCA+IHPDrDsgIzc5NDAKK+elgSA+IHHDrTsgIzc5NDEKK+elgiA+IHTEgTsgIzc5NDIKK+elgyA+IG3DoDsgIzc5NDMKK+elhCA+IHhpw6g7ICM3OTQ0CivnpYUgPiB4acSBbjsgIzc5NDUKK+elhiA+IHhpxIFuOyAjNzk0Ngor56WHID4gemjEqzsgIzc5NDcKK+eliCA+IHHDrTsgIzc5NDgKK+eliSA+IHpoxK07ICM3OTQ5CivnpYogPiBixJNuZzsgIzc5NEEKK+eliyA+IGTDuWk7ICM3OTRCCivnpYwgPiB6aMOybmc7ICM3OTRDCivnpY4gPiB5xKs7ICM3OTRFCivnpY8gPiBzaMOtOyAjNzk0Rgor56WQID4gecOydTsgIzc5NTAKK+elkSA+IHpow6w7ICM3OTUxCivnpZIgPiB0acOhbzsgIzc5NTIKK+elkyA+IGbDujsgIzc5NTMKK+ellCA+IGbDuTsgIzc5NTQKK+ellSA+IG3DrDsgIzc5NTUKK+elliA+IHrFrTsgIzc5NTYKK+ellyA+IHpoxKs7ICM3OTU3CivnpZggPiBzdcOgbjsgIzc5NTgKK+elmSA+IG3DqGk7ICM3OTU5CivnpZogPiB6w7lvOyAjNzk1QQor56WbID4gccWrOyAjNzk1Qgor56WcID4gaMO5OyAjNzk1Qwor56WdID4gemjDuTsgIzc5NUQKK+elniA+IHNow6luOyAjNzk1RQor56WfID4gc8O5aTsgIzc5NUYKK+eloCA+IGPDrTsgIzc5NjAKK+eloSA+IGNow6FpOyAjNzk2MQor56WiID4gbcOtOyAjNzk2Mgor56WjID4gbMeaOyAjNzk2Mwor56WkID4gecWtOyAjNzk2NAor56WlID4geGnDoW5nOyAjNzk2NQor56WmID4gd8O6OyAjNzk2Ngor56WnID4gdGnEgW87ICM3OTY3CivnpaggPiBwacOgbzsgIzc5NjgKK+elqSA+IHpoxas7ICM3OTY5CivnpaogPiBnxa1pOyAjNzk2QQor56WrID4geGnDoTsgIzc5NkIKK+elrCA+IHpoxKs7ICM3OTZDCivnpa0gPiBqw6w7ICM3OTZECivnpa4gPiBnw6BvOyAjNzk2RQor56WvID4gemjEk247ICM3OTZGCivnpbAgPiBnw6BvOyAjNzk3MAor56WxID4gc2jDuWk7ICM3OTcxCivnpbIgPiBqxKtuOyAjNzk3Mgor56WzID4gY2jElW47ICM3OTczCivnpbQgPiBnxIFpOyAjNzk3NAor56W1ID4ga8WtbjsgIzc5NzUKK+eltiA+IGTDrDsgIzc5NzYKK+eltyA+IGTEg287ICM3OTc3CivnpbggPiBow7lvOyAjNzk3OAor56W5ID4gdMOhbzsgIzc5NzkKK+eluiA+IHHDrTsgIzc5N0EKK+eluyA+IGfDuTsgIzc5N0IKK+elvCA+IGd1w6BuOyAjNzk3Qwor56W9ID4gesO5aTsgIzc5N0QKK+elviA+IGzDrW5nOyAjNzk3RQor56W/ID4gbMO5OyAjNzk3Rgor56aAID4gYsStbmc7ICM3OTgwCivnpoEgPiBqw6xuOyAjNzk4MQor56aCID4gZMSDbzsgIzc5ODIKK+emgyA+IHpow607ICM3OTgzCivnpoQgPiBsw7k7ICM3OTg0CivnpoUgPiBzaMOgbjsgIzc5ODUKK+emhiA+IGLEk2k7ICM3OTg2CivnpocgPiB6aMSVOyAjNzk4Nwor56aIID4gaMWraTsgIzc5ODgKK+emiSA+IHnFj3U7ICM3OTg5CivnpoogPiB4w6w7ICM3OThBCivnposgPiB5xKtuOyAjNzk4Qgor56aMID4gesSrOyAjNzk4Qwor56aNID4gaMO5bzsgIzc5OEQKK+emjiA+IHpoxJNuOyAjNzk4RQor56aPID4gZsO6OyAjNzk4Rgor56aQID4geXXDoG47ICM3OTkwCivnppEgPiB3w7o7ICM3OTkxCivnppIgPiB4acSDbjsgIzc5OTIKK+emkyA+IHnDoW5nOyAjNzk5Mwor56aUID4gdMOtOyAjNzk5NAor56aVID4gecSrOyAjNzk5NQor56aWID4gbcOpaTsgIzc5OTYKK+emlyA+IHPEqzsgIzc5OTcKK+emmCA+IGTDrDsgIzc5OTgKK+emmiA+IHpow7pvOyAjNzk5QQor56abID4gemjEk247ICM3OTlCCivnppwgPiB5xY9uZzsgIzc5OUMKK+emnSA+IGrDrTsgIzc5OUQKK+emniA+IGfDoG87ICM3OTlFCivnpp8gPiB0w6FuZzsgIzc5OUYKK+emoCA+IHPEqzsgIzc5QTAKK+emoSA+IG3DoDsgIzc5QTEKK+emoiA+IHTEgTsgIzc5QTIKK+empCA+IHh1xIFuOyAjNzlBNAor56alID4gccOtOyAjNzlBNQor56amID4gecO5OyAjNzlBNgor56anID4geMSrOyAjNzlBNwor56aoID4gasSrOyAjNzlBOAor56apID4gc8OsOyAjNzlBOQor56aqID4gY2jDoW47ICM3OUFBCivnpqsgPiB0xINuOyAjNzlBQgor56asID4ga3XDoGk7ICM3OUFDCivnpq0gPiBzw7lpOyAjNzlBRAor56auID4gbMStOyAjNzlBRQor56avID4gbsOzbmc7ICM3OUFGCivnprAgPiBuxK07ICM3OUIwCivnprEgPiBkxINvOyAjNzlCMQor56ayID4gbMOsOyAjNzlCMgor56azID4gcsOhbmc7ICM3OUIzCivnprQgPiB5dcOoOyAjNzlCNAor56a1ID4gdMOtOyAjNzlCNQor56a2ID4gesSDbjsgIzc5QjYKK+emtyA+IGzDqGk7ICM3OUI3CivnprggPiByw7N1OyAjNzlCOAor56a5ID4gecWtOyAjNzlCOQor56a6ID4gecO6OyAjNzlCQQor56a7ID4gY2jEqzsgIzc5QkIKK+emvCA+IHhpw6g7ICM3OUJDCivnpr0gPiBxw61uOyAjNzlCRAor56a+ID4gaMOpOyAjNzlCRQor56a/ID4gdMWrOyAjNzlCRgor56eAID4geMOsdTsgIzc5QzAKK+engSA+IHPEqzsgIzc5QzEKK+engiA+IHLDqW47ICM3OUMyCivnp4MgPiB0xas7ICM3OUMzCivnp4QgPiB6xK07ICM3OUM0Civnp4UgPiBjaMOhOyAjNzlDNQor56eGID4gZ8SDbjsgIzc5QzYKK+enhyA+IHnDrDsgIzc5QzcKK+eniCA+IHhpxIFuOyAjNzlDOAor56eJID4gYsStbmc7ICM3OUM5Civnp4ogPiBuacOhbjsgIzc5Q0EKK+eniyA+IHHEq3U7ICM3OUNCCivnp4wgPiBxxKt1OyAjNzlDQwor56eNID4gY2jDs25nOyAjNzlDRAor56eOID4gZsOpbjsgIzc5Q0UKK+enjyA+IGjDoG87ICM3OUNGCivnp5AgPiB5w7puOyAjNzlEMAor56eRID4ga8STOyAjNzlEMQor56eSID4gbWnEg287ICM3OUQyCivnp5MgPiB6aMSrOyAjNzlEMwor56eUID4gZ8STbmc7ICM3OUQ0Civnp5UgPiBixK07ICM3OUQ1Civnp5YgPiB6aMSrOyAjNzlENgor56eXID4gecO5OyAjNzlENwor56eYID4gbcOsOyAjNzlEOAor56eZID4ga8O5OyAjNzlEOQor56eaID4gYsOgbjsgIzc5REEKK+enmyA+IHDEqzsgIzc5REIKK+ennCA+IG7DrTsgIzc5REMKK+ennSA+IGzDrDsgIzc5REQKK+enniA+IHnDs3U7ICM3OURFCivnp58gPiB6xas7ICM3OURGCivnp6AgPiBwxKs7ICM3OUUwCivnp6EgPiBiw6E7ICM3OUUxCivnp6IgPiBsw61uZzsgIzc5RTIKK+enoyA+IG3DsjsgIzc5RTMKK+enpCA+IGNow6huZzsgIzc5RTQKK+enpSA+IG5pw6FuOyAjNzlFNQor56emID4gccOtbjsgIzc5RTYKK+enpyA+IHnEgW5nOyAjNzlFNwor56eoID4gesO6bzsgIzc5RTgKK+enqSA+IHpow6w7ICM3OUU5Civnp6ogPiB6aMSrOyAjNzlFQQor56erID4gc2jDujsgIzc5RUIKK+enrCA+IGrDuTsgIzc5RUMKK+enrSA+IHrErTsgIzc5RUQKK+enriA+IGjDum87ICM3OUVFCivnp68gPiBqxKs7ICM3OUVGCivnp7AgPiBjaMSTbmc7ICM3OUYwCivnp7EgPiB0w7NuZzsgIzc5RjEKK+ensiA+IHpow6w7ICM3OUYyCivnp7MgPiBow7pvOyAjNzlGMwor56e0ID4gaMOpOyAjNzlGNAor56e1ID4gecSrbjsgIzc5RjUKK+entiA+IHrEqzsgIzc5RjYKK+entyA+IHpow607ICM3OUY3Civnp7ggPiBqacSTOyAjNzlGOAor56e5ID4gcsSVbjsgIzc5RjkKK+enuiA+IGTDuTsgIzc5RkEKK+enuyA+IHnDrTsgIzc5RkIKK+envCA+IHpoxas7ICM3OUZDCivnp70gPiBow7lpOyAjNzlGRAor56e+ID4gbsOzbmc7ICM3OUZFCivnp78gPiBmxa07ICM3OUZGCivnqIAgPiB4xKs7ICM3QTAwCivnqIEgPiBrxINvOyAjN0EwMQor56iCID4gbMOhbmc7ICM3QTAyCivnqIMgPiBmxas7ICM3QTAzCivnqIQgPiB6w6g7ICM3QTA0CivnqIUgPiBzaMO5aTsgIzdBMDUKK+eohiA+IGzHmjsgIzdBMDYKK+eohyA+IGvFrW47ICM3QTA3CivnqIggPiBnxINuOyAjN0EwOAor56iJID4gZ8STbmc7ICM3QTA5CivnqIogPiB0w607ICM3QTBBCivnqIsgPiBjaMOpbmc7ICM3QTBCCivnqIwgPiB0w7o7ICM3QTBDCivnqI0gPiBzaMSBbzsgIzdBMEQKK+eojiA+IHNow7lpOyAjN0EwRQor56iPID4gecOgOyAjN0EwRgor56iQID4gbMWtbjsgIzdBMTAKK+eokSA+IGzDuTsgIzdBMTEKK+eokiA+IGfDuTsgIzdBMTIKK+eokyA+IHrDum87ICM3QTEzCivnqJQgPiByxJVuOyAjN0ExNAor56iVID4gemjDuW47ICM3QTE1CivnqJYgPiBiw6BuZzsgIzdBMTYKK+eolyA+IGLDoGk7ICM3QTE3CivnqJggPiBqxKs7ICM3QTE4CivnqJkgPiB6aMOtOyAjN0ExOQor56iaID4gemjDrDsgIzdBMUEKK+eomyA+IGvFrW47ICM3QTFCCivnqJwgPiBsw6luZzsgIzdBMUMKK+eonSA+IHDDqW5nOyAjN0ExRAor56ieID4ga8STOyAjN0ExRQor56ifID4gYsStbmc7ICM3QTFGCivnqKAgPiBjaMOzdTsgIzdBMjAKK+eooSA+IHrDujsgIzdBMjEKK+eooiA+IHnDuTsgIzdBMjIKK+eooyA+IHPFqzsgIzdBMjMKK+eopCA+IGzHnGU7ICM3QTI0CivnqKYgPiB5xKs7ICM3QTI2CivnqKcgPiB4w6w7ICM3QTI3CivnqKggPiBiacSBbjsgIzdBMjgKK+eoqSA+IGrDrDsgIzdBMjkKK+eoqiA+IGbDuTsgIzdBMkEKK+eoqyA+IGLEqzsgIzdBMkIKK+eorCA+IG7DuW87ICM3QTJDCivnqK0gPiBqacSTOyAjN0EyRAor56iuID4gemjFj25nOyAjN0EyRQor56ivID4gesWNbmc7ICM3QTJGCivnqLAgPiB4xas7ICM3QTMwCivnqLEgPiBjaMSTbmc7ICM3QTMxCivnqLIgPiBkw6BvOyAjN0EzMgor56izID4gd8SVbjsgIzdBMzMKK+eotCA+IGxpw6FuOyAjN0EzNAor56i1ID4gesSrOyAjN0EzNQor56i2ID4gecO5OyAjN0EzNgor56i3ID4gasOsOyAjN0EzNwor56i4ID4geMO5OyAjN0EzOAor56i5ID4gemjElW47ICM3QTM5CivnqLogPiB6aMOsOyAjN0EzQQor56i7ID4gZMOgbzsgIzdBM0IKK+eovCA+IGppw6A7ICM3QTNDCivnqL0gPiBqxKs7ICM3QTNECivnqL4gPiBnxINvOyAjN0EzRQor56i/ID4gZ8SDbzsgIzdBM0YKK+epgCA+IGfFrTsgIzdBNDAKK+epgSA+IHLDs25nOyAjN0E0MQor56mCID4gc8O5aTsgIzdBNDIKK+ephCA+IGrDrDsgIzdBNDQKK+ephSA+IGvEgW5nOyAjN0E0NQor56mGID4gbcO5OyAjN0E0Ngor56mHID4gc2jEgW47ICM3QTQ3CivnqYggPiBtw6luOyAjN0E0OAor56mJID4gemjDrDsgIzdBNDkKK+epiiA+IGrDrDsgIzdBNEEKK+epiyA+IGzDuTsgIzdBNEIKK+epjCA+IHPFqzsgIzdBNEMKK+epjSA+IGrEqzsgIzdBNEQKK+epjiA+IHnErW5nOyAjN0E0RQor56mPID4gd8SVbjsgIzdBNEYKK+epkCA+IHHEq3U7ICM3QTUwCivnqZEgPiBzw6g7ICM3QTUxCivnqZMgPiB5w6w7ICM3QTUzCivnqZQgPiBodcOhbmc7ICM3QTU0CivnqZUgPiBxacOoOyAjN0E1NQor56mWID4gasStOyAjN0E1Ngor56mXID4gc8O5aTsgIzdBNTcKK+epmCA+IHhpxIFvOyAjN0E1OAor56mZID4gcMO6OyAjN0E1OQor56maID4gamnEgW87ICM3QTVBCivnqZsgPiB6aMWrbzsgIzdBNUIKK+epnCA+IHTDs25nOyAjN0E1Qwor56meID4gbMeaOyAjN0E1RQor56mfID4gc8O5aTsgIzdBNUYKK+epoCA+IG7Ds25nOyAjN0E2MAor56mhID4gc8OoOyAjN0E2MQor56miID4gaMO5aTsgIzdBNjIKK+epoyA+IHLDoW5nOyAjN0E2Mwor56mkID4gbsO5bzsgIzdBNjQKK+eppSA+IHnDuTsgIzdBNjUKK+eppiA+IGJpbjsgIzdBNjYKK+eppyA+IGrDrDsgIzdBNjcKK+epqCA+IHTDumk7ICM3QTY4CivnqakgPiB3xJVuOyAjN0E2OQor56mqID4gY2jEk25nOyAjN0E2QQor56mrID4gaMO5bzsgIzdBNkIKK+eprCA+IGfFj25nOyAjN0E2Qwor56mtID4gbMeaOyAjN0E2RAor56muID4gYmnEgW87ICM3QTZFCivnqbAgPiByw6FuZzsgIzdBNzAKK+epsSA+IHpoxatvOyAjN0E3MQor56myID4gbMOtOyAjN0E3Mgor56mzID4gesOgbjsgIzdBNzMKK+eptCA+IHh1w6g7ICM3QTc0CivnqbUgPiB3xIE7ICM3QTc1CivnqbYgPiBqw6x1OyAjN0E3Ngor56m3ID4gccOtb25nOyAjN0E3Nwor56m4ID4geMOsOyAjN0E3OAor56m5ID4gccSrb25nOyAjN0E3OQor56m6ID4ga8WNbmc7ICM3QTdBCivnqbsgPiB5xas7ICM3QTdCCivnqbwgPiBzxJNuOyAjN0E3Qwor56m9ID4gasStbmc7ICM3QTdECivnqb4gPiB5w6BvOyAjN0E3RQor56m/ID4gY2h1xIFuOyAjN0E3Rgor56qAID4gemjFq247ICM3QTgwCivnqoEgPiB0w7o7ICM3QTgxCivnqoIgPiBsw6FvOyAjN0E4Mgor56qDID4gcWnDqDsgIzdBODMKK+eqhCA+IHpoxINpOyAjN0E4NAor56qFID4gecSDbzsgIzdBODUKK+eqhiA+IGJpxINuOyAjN0E4Ngor56qHID4gYsOhbzsgIzdBODcKK+eqiCA+IHnEg287ICM3QTg4CivnqokgPiBixK1uZzsgIzdBODkKK+eqiiA+IHfEgTsgIzdBOEEKK+eqiyA+IHpow7o7ICM3QThCCivnqowgPiBqacOgbzsgIzdBOEMKK+eqjSA+IHFpw6BvOyAjN0E4RAor56qOID4gZGnDoG87ICM3QThFCivnqo8gPiB3xas7ICM3QThGCivnqpAgPiBnxatpOyAjN0E5MAor56qRID4gecOhbzsgIzdBOTEKK+eqkiA+IHpow6w7ICM3QTkyCivnqpMgPiBjaHXEgW5nOyAjN0E5Mwor56qUID4gecSDbzsgIzdBOTQKK+eqlSA+IHRpxINvOyAjN0E5NQor56qWID4gamnDoG87ICM3QTk2CivnqpcgPiBjaHXEgW5nOyAjN0E5Nwor56qYID4gasStb25nOyAjN0E5OAor56qZID4geGnEgW87ICM3QTk5CivnqpogPiBjaMOpbmc7ICM3QTlBCivnqpsgPiBrw7J1OyAjN0E5Qgor56qcID4gY3XDoG47ICM3QTlDCivnqp0gPiB3xY07ICM3QTlECivnqp4gPiBkw6BuOyAjN0E5RQor56qfID4ga8WrOyAjN0E5Rgor56qgID4ga8STOyAjN0FBMAor56qhID4gemjDuWk7ICM3QUExCivnqqIgPiB4w7k7ICM3QUEyCivnqqMgPiBzw7k7ICM3QUEzCivnqqQgPiBndWFuOyAjN0FBNAor56qlID4ga8WraTsgIzdBQTUKK+eqpiA+IGTDsnU7ICM3QUE2CivnqqggPiB5w6xuOyAjN0FBOAor56qpID4gd8WNOyAjN0FBOQor56qqID4gd8SBOyAjN0FBQQor56qrID4gecOgOyAjN0FBQgor56qsID4gecO6OyAjN0FBQwor56qtID4gasO5OyAjN0FBRAor56quID4gccOtb25nOyAjN0FBRQor56qvID4gecOhbzsgIzdBQUYKK+eqsCA+IHnDoW87ICM3QUIwCivnqrEgPiB0acOgbzsgIzdBQjEKK+eqsiA+IGNow6FvOyAjN0FCMgor56qzID4gecWtOyAjN0FCMwor56q0ID4gdGnDoW47ICM3QUI0CivnqrUgPiBkacOgbzsgIzdBQjUKK+eqtiA+IGrDuTsgIzdBQjYKK+eqtyA+IGxpw6FvOyAjN0FCNwor56q4ID4geMSrOyAjN0FCOAor56q5ID4gd8O5OyAjN0FCOQor56q6ID4ga8WraTsgIzdBQkEKK+equyA+IGNodcSBbmc7ICM3QUJCCivnqrwgPiB6aMSBbzsgIzdBQkMKK+eqviA+IGt1xINuOyAjN0FCRQor56q/ID4gbMOzbmc7ICM3QUJGCivnq4AgPiBjaMSTbmc7ICM3QUMwCivnq4EgPiBjw7lpOyAjN0FDMQor56uCID4gcGnDoW87ICM3QUMyCivnq4MgPiB6w6BvOyAjN0FDMwor56uEID4gY3XDoG47ICM3QUM0Civnq4UgPiBxacOgbzsgIzdBQzUKK+erhiA+IHHDrW9uZzsgIzdBQzYKK+erhyA+IGTDsnU7ICM3QUM3Civnq4ggPiB6w6BvOyAjN0FDOAor56uJID4gbMWPbmc7ICM3QUM5Civnq4ogPiBxacOoOyAjN0FDQQor56uLID4gbMOsOyAjN0FDQgor56uMID4gY2jDuTsgIzdBQ0MKK+erjSA+IHNow60nICdnxY1uZycgJ3NoxJNuZzsgIzdBQ0QKK+erjiA+IGbDsnU7ICM3QUNFCivnq48gPiBxacSBbicgJ2fFjW5nJyAnc2jEk25nOyAjN0FDRgor56uQID4gY2jDuTsgIzdBRDAKK+erkSA+IGjDs25nOyAjN0FEMQor56uSID4gccOtOyAjN0FEMgor56uTID4gcWnEgW4nICdmxJNuJyAnemjEqycgJ3nEqycgJ2fFjW5nJyAnc2jEk25nOyAjN0FEMwor56uUID4gZ8WNbmcnICdzaMSTbmc7ICM3QUQ0Civnq5UgPiBzaMOtJyAnZsSTbicgJ3poxKsnICd5xKsnICdnxY1uZycgJ3NoxJNuZzsgIzdBRDUKK+erliA+IHNow7k7ICM3QUQ2Civnq5cgPiBtacOgbzsgIzdBRDcKK+ermCA+IGrFrTsgIzdBRDgKK+ermSA+IHpow6BuOyAjN0FEOQor56uaID4gemjDuTsgIzdBREEKK+ermyA+IGzDrW5nOyAjN0FEQgor56ucID4gbMOzbmc7ICM3QURDCivnq50gPiBiw6xuZzsgIzdBREQKK+erniA+IGrDrG5nOyAjN0FERQor56ufID4gasOsbmc7ICM3QURGCivnq6AgPiB6aMSBbmc7ICM3QUUwCivnq6EgPiB5xKsnICdnxY1uZycgJ3NoxJNuZycgJ2RlJyAnecSrJyAnYsSDaScgJ2LDqGk7ICM3QUUxCivnq6IgPiBzw6w7ICM3QUUyCivnq6MgPiBqw7luOyAjN0FFMwor56ukID4gaMOzbmc7ICM3QUU0Civnq6UgPiB0w7NuZzsgIzdBRTUKK+erpiA+IHPFj25nOyAjN0FFNgor56unID4gasOsbmc7ICM3QUU3Civnq6ggPiBkacOgbzsgIzdBRTgKK+erqSA+IHnDrDsgIzdBRTkKK+erqiA+IHNow7k7ICM3QUVBCivnq6sgPiBqw6xuZzsgIzdBRUIKK+errCA+IHHFrTsgIzdBRUMKK+errSA+IGppw6k7ICM3QUVECivnq64gPiBww61uZzsgIzdBRUUKK+erryA+IGR1xIFuOyAjN0FFRgor56uwID4gc2jDoW87ICM3QUYwCivnq7EgPiB6aHXEg247ICM3QUYxCivnq7IgPiBjw6luZzsgIzdBRjIKK+ersyA+IGTEk25nOyAjN0FGMwor56u0ID4gY8WraTsgIzdBRjQKK+ertSA+IGh1xIFpOyAjN0FGNQor56u2ID4gasOsbmc7ICM3QUY2Civnq7cgPiBrw6BuOyAjN0FGNwor56u4ID4gasOsbmc7ICM3QUY4Civnq7kgPiB6aMO6OyAjN0FGOQor56u6ID4gemjDujsgIzdBRkEKK+eruyA+IGzDqDsgIzdBRkIKK+ervCA+IHDDqW5nOyAjN0FGQwor56u9ID4gecO6OyAjN0FGRAor56u+ID4gY2jDrTsgIzdBRkUKK+ervyA+IGfEgW47ICM3QUZGCivnrIAgPiBtw6FuZzsgIzdCMDAKK+esgSA+IHpow7o7ICM3QjAxCivnrIMgPiBkxa07ICM3QjAzCivnrIQgPiBqxKs7ICM3QjA0CivnrIUgPiB4acOhbzsgIzdCMDUKK+eshiA+IGLEgTsgIzdCMDYKK+eshyA+IHN1w6BuOyAjN0IwNwor56yIID4gasOtOyAjN0IwOAor56yJID4gemjElW47ICM3QjA5CivnrIogPiB6aMOgbzsgIzdCMEEKK+esiyA+IHPFrW47ICM3QjBCCivnrIwgPiB5w6E7ICM3QjBDCivnrI0gPiB6aMO5aTsgIzdCMEQKK+esjiA+IHl1w6FuOyAjN0IwRQor56yPID4gaMO5OyAjN0IwRgor56yQID4gZ8SBbmc7ICM3QjEwCivnrJEgPiB4acOgbzsgIzdCMTEKK+eskiA+IGPDqW47ICM3QjEyCivnrJMgPiBww607ICM3QjEzCivnrJQgPiBixK07ICM3QjE0CivnrJUgPiBqacSDbjsgIzdCMTUKK+esliA+IHnErTsgIzdCMTYKK+eslyA+IGTFjW5nOyAjN0IxNwor56yYID4gc2jEgW47ICM3QjE4CivnrJkgPiBzaMSTbmc7ICM3QjE5CivnrJogPiB4acOhOyAjN0IxQQor56ybID4gZMOtOyAjN0IxQgor56ycID4gemjDujsgIzdCMUMKK+esnSA+IG7DoDsgIzdCMUQKK+esniA+IGNoxKs7ICM3QjFFCivnrJ8gPiBnxas7ICM3QjFGCivnrKAgPiBsw6w7ICM3QjIwCivnrKEgPiBxacOoOyAjN0IyMQor56yiID4gbcStbjsgIzdCMjIKK+esoyA+IGLEgW87ICM3QjIzCivnrKQgPiB0acOhbzsgIzdCMjQKK+espSA+IHPDrDsgIzdCMjUKK+espiA+IGbDujsgIzdCMjYKK+espyA+IGPDqDsgIzdCMjcKK+esqCA+IGLDqG47ICM3QjI4CivnrKkgPiBww6hpOyAjN0IyOQor56yqID4gZMOhOyAjN0IyQQor56yrID4gesStOyAjN0IyQgor56ysID4gZMOsOyAjN0IyQwor56ytID4gbMOtbmc7ICM3QjJECivnrK4gPiB6w6k7ICM3QjJFCivnrK8gPiBuw7o7ICM3QjJGCivnrLAgPiBmw7o7ICM3QjMwCivnrLEgPiBnxY91OyAjN0IzMQor56yyID4gZsSBbjsgIzdCMzIKK+essyA+IGppxIE7ICM3QjMzCivnrLQgPiBnxJU7ICM3QjM0CivnrLUgPiBmw6BuOyAjN0IzNQor56y2ID4gc2jErTsgIzdCMzYKK+estyA+IG3Eg287ICM3QjM3CivnrLggPiBwxY87ICM3QjM4CivnrLogPiBqacSBbjsgIzdCM0EKK+esuyA+IHHDrW9uZzsgIzdCM0IKK+esvCA+IGzDs25nOyAjN0IzQwor56y+ID4gYmnEgW47ICM3QjNFCivnrL8gPiBsw7lvOyAjN0IzRgor562AID4gZ8O5aTsgIzdCNDAKK+etgSA+IHHFrTsgIzdCNDEKK+etgiA+IGNow607ICM3QjQyCivnrYMgPiB5xKtuOyAjN0I0Mwor562EID4gecOgbzsgIzdCNDQKK+ethSA+IHhpxINuOyAjN0I0NQor562GID4gYsStOyAjN0I0Ngor562HID4gccOtb25nOyAjN0I0Nwor562IID4gZ3XEgTsgIzdCNDgKK+etiSA+IGTElW5nOyAjN0I0OQor562KID4gamnEg287ICM3QjRBCivnrYsgPiBqxKtuOyAjN0I0Qgor562MID4gcXXDoW47ICM3QjRDCivnrY0gPiBzxa1uOyAjN0I0RAor562OID4gcsO6OyAjN0I0RQor562PID4gZsOhOyAjN0I0Rgor562QID4ga3XEgW5nOyAjN0I1MAor562RID4gemjDujsgIzdCNTEKK+etkiA+IHTFj25nOyAjN0I1Mgor562TID4gasSrOyAjN0I1Mwor562UID4gZMOhOyAjN0I1NAor562VID4geMOtbmc7ICM3QjU1CivnrZYgPiBjw6g7ICM3QjU2CivnrZcgPiB6aMOybmc7ICM3QjU3CivnrZggPiBrw7J1OyAjN0I1OAor562ZID4gbMOhaTsgIzdCNTkKK+etmiA+IGLDrDsgIzdCNUEKK+etmyA+IHNoxIFpOyAjN0I1Qgor562cID4gZMSBbmc7ICM3QjVDCivnrZ0gPiB6aMSTbmc7ICM3QjVECivnrZ4gPiBjw6g7ICM3QjVFCivnrZ8gPiBmxas7ICM3QjVGCivnraAgPiB5w7puOyAjN0I2MAor562hID4gdMO6OyAjN0I2MQor562iID4gcMOhOyAjN0I2Mgor562jID4gbMOsOyAjN0I2Mwor562kID4gbMOhbmc7ICM3QjY0CivnraUgPiBqxa07ICM3QjY1CivnraYgPiBndcSDbjsgIzdCNjYKK+etpyA+IGppxINuOyAjN0I2Nwor562oID4gaMOhbjsgIzdCNjgKK+etqSA+IHTDs25nOyAjN0I2OQor562qID4geGnDoTsgIzdCNkEKK+etqyA+IHpow6w7ICM3QjZCCivnrawgPiBjaMOpbmc7ICM3QjZDCivnra0gPiBzdcOgbjsgIzdCNkQKK+etriA+IHNow6w7ICM3QjZFCivnra8gPiB6aMO5OyAjN0I2Rgor562wID4gesO6bzsgIzdCNzAKK+etsSA+IHhpxINvOyAjN0I3MQor562yID4gc2jEgW87ICM3QjcyCivnrbMgPiB0w61uZzsgIzdCNzMKK+ettCA+IGPDqDsgIzdCNzQKK+ettSA+IHnDoW47ICM3Qjc1CivnrbYgPiBnxINvOyAjN0I3Ngor5623ID4ga3XDoGk7ICM3Qjc3CivnrbggPiBnxIFuOyAjN0I3OAor5625ID4gY2jDs3U7ICM3Qjc5CivnrbsgPiBnw6BuZzsgIzdCN0IKK+etvCA+IHnDum47ICM3QjdDCivnrb4gPiBxacSBbjsgIzdCN0UKK+etvyA+IHhpxINvOyAjN0I3Rgor566AID4gamnEg247ICM3QjgwCivnroEgPiBww7o7ICM3QjgxCivnroIgPiBsw6FpOyAjN0I4Mgor566DID4gesWNdTsgIzdCODMKK+euhCA+IGLDrDsgIzdCODQKK+euhSA+IGLDrDsgIzdCODUKK+euhiA+IGLDrDsgIzdCODYKK+euhyA+IGfDqDsgIzdCODcKK+euiCA+IGNow607ICM3Qjg4CivnrokgPiBndcSDaTsgIzdCODkKK+euiiA+IHnFqzsgIzdCOEEKK+euiyA+IGppxIFuOyAjN0I4Qgor566MID4gemjDoG87ICM3QjhDCivnro0gPiBnxas7ICM3QjhECivnro4gPiBjaMOtOyAjN0I4RQor566PID4gemjEk25nOyAjN0I4Rgor566QID4gasSrbmc7ICM3QjkwCivnrpEgPiBzaMOgOyAjN0I5MQor566SID4gemjFj3U7ICM3QjkyCivnrpMgPiBsw7k7ICM3QjkzCivnrpQgPiBiw7M7ICM3Qjk0CivnrpUgPiBqxKs7ICM3Qjk1CivnrpYgPiBsw61uOyAjN0I5Ngor566XID4gc3XDoG47ICM3Qjk3CivnrpggPiBqw7luOyAjN0I5OAor566ZID4gZsO6OyAjN0I5OQor566aID4gemjDoTsgIzdCOUEKK+eumyA+IGfFqzsgIzdCOUIKK+eunCA+IGvFjW5nOyAjN0I5Qwor566dID4gcWnDoW47ICM3QjlECivnrp4gPiBxdcSBbjsgIzdCOUUKK+eunyA+IGrDuW47ICM3QjlGCivnrqAgPiBjaMO6aTsgIzdCQTAKK+euoSA+IGd1xINuOyAjN0JBMQor566iID4geXXEgW47ICM3QkEyCivnrqMgPiBjw6g7ICM3QkEzCivnrqQgPiBqw7o7ICM3QkE0CivnrqUgPiBixY87ICM3QkE1CivnrqYgPiB6w6k7ICM3QkE2CivnrqcgPiBxacOoOyAjN0JBNwor566oID4gdMO5bzsgIzdCQTgKK+euqSA+IGzDum87ICM3QkE5CivnrqogPiBkxIFuOyAjN0JBQQor566rID4geGnEgW87ICM3QkFCCivnrqwgPiByw7lvOyAjN0JBQwor566tID4gamnDoG47ICM3QkFECivnrq4gPiB4dWFuOyAjN0JBRQor566vID4gYmnEgW47ICM3QkFGCivnrrAgPiBzxa1uOyAjN0JCMAor566xID4geGnEgW5nOyAjN0JCMQor566yID4geGnEg247ICM3QkIyCivnrrMgPiBww61uZzsgIzdCQjMKK+eutCA+IHpoxJNuOyAjN0JCNAor5661ID4gc2jElW5nOyAjN0JCNQor5662ID4gaMO6OyAjN0JCNgor5663ID4gc2jEqzsgIzdCQjcKK+euuCA+IHpow7k7ICM3QkI4CivnrrkgPiB5dcSTOyAjN0JCOQor5666ID4gY2jFrW47ICM3QkJBCivnrrsgPiBsx5w7ICM3QkJCCivnrrwgPiB3xas7ICM3QkJDCivnrr0gPiBkxY9uZzsgIzdCQkQKK+euviA+IHhpxIFvOyAjN0JCRQor566/ID4gasOtOyAjN0JCRgor56+AID4gamnDqTsgIzdCQzAKK+evgSA+IGh1w6FuZzsgIzdCQzEKK+evgiA+IHjEq25nOyAjN0JDMgor56+DID4gbcOpaTsgIzdCQzMKK+evhCA+IGbDoG47ICM3QkM0Civnr4UgPiBjaMO6aTsgIzdCQzUKK+evhiA+IHpodcOgbjsgIzdCQzYKK+evhyA+IHBpxIFuOyAjN0JDNwor56+IID4gZsSTbmc7ICM3QkM4Civnr4kgPiB6aMO6OyAjN0JDOQor56+KID4gaMOzbmc7ICM3QkNBCivnr4sgPiBxacOoOyAjN0JDQgor56+MID4gaMOzdTsgIzdCQ0MKK+evjSA+IHHEq3U7ICM3QkNECivnr44gPiBtacSDbzsgIzdCQ0UKK+evjyA+IHFpw6BuOyAjN0JDRgor56+RID4ga8O5aTsgIzdCRDEKK+evkyA+IGzFj3U7ICM3QkQzCivnr5QgPiB5w7puOyAjN0JENAor56+VID4gaMOpOyAjN0JENQor56+WID4gdMOhbmc7ICM3QkQ2Civnr5cgPiB5dcOoOyAjN0JENwor56+YID4gY2jFjXU7ICM3QkQ4Civnr5kgPiBnxIFvOyAjN0JEOQor56+aID4gZsSVaTsgIzdCREEKK+evmyA+IHLDuW87ICM3QkRCCivnr5wgPiB6aMSTbmc7ICM3QkRDCivnr50gPiBnxY11OyAjN0JERAor56+eID4gbmnDqDsgIzdCREUKK+evnyA+IHFpw6BuOyAjN0JERgor56+gID4geGnEg287ICM3QkUwCivnr6EgPiBjdcOgbjsgIzdCRTEKK+evoiA+IGfFjW5nOyAjN0JFMgor56+jID4gcMOhbmc7ICM3QkUzCivnr6QgPiBkxa07ICM3QkU0Civnr6UgPiBsw6w7ICM3QkU1Civnr6YgPiBiw6w7ICM3QkU2Civnr6cgPiB6aMO6bzsgIzdCRTcKK+evqCA+IGNow7o7ICM3QkU4Civnr6kgPiBzaMSBaTsgIzdCRTkKK+evqiA+IGNow607ICM3QkVBCivnr6sgPiB6aMO6OyAjN0JFQgor56+sID4gcWnEgW5nOyAjN0JFQwor56+tID4gbMOzbmc7ICM3QkVECivnr64gPiBsw6FuOyAjN0JFRQor56+vID4gamnEgW47ICM3QkVGCivnr7AgPiBiw7k7ICM3QkYwCivnr7EgPiBsw607ICM3QkYxCivnr7IgPiBow7lpOyAjN0JGMgor56+zID4gYsOsOyAjN0JGMwor56+0ID4gZMOtOyAjN0JGNAor56+1ID4gY8WNbmc7ICM3QkY1Civnr7YgPiB5xIFuOyAjN0JGNgor56+3ID4gcMOpbmc7ICM3QkY3Civnr7ggPiBzxJNuOyAjN0JGOAor56+5ID4gemh1w6BuOyAjN0JGOQor56+6ID4gcMOhaTsgIzdCRkEKK+evuyA+IHBpw6BvOyAjN0JGQgor56+8ID4gZMWNdTsgIzdCRkMKK+evvSA+IHnFrTsgIzdCRkQKK+evviA+IG1pw6g7ICM3QkZFCivnr78gPiB6aHXEgW47ICM3QkZGCivnsIAgPiB6w6k7ICM3QzAwCivnsIEgPiB4xK07ICM3QzAxCivnsIIgPiBnw7pvOyAjN0MwMgor57CDID4gecOtOyAjN0MwMwor57CEID4gaMO5OyAjN0MwNAor57CFID4gY2jEg247ICM3QzA1CivnsIYgPiBrw7J1OyAjN0MwNgor57CHID4gY8O5OyAjN0MwNwor57CIID4gcMOtbmc7ICM3QzA4CivnsIkgPiBjaMOydTsgIzdDMDkKK+ewiiA+IGrEqzsgIzdDMEEKK+ewiyA+IGfFrWk7ICM3QzBCCivnsIwgPiBzw7k7ICM3QzBDCivnsI0gPiBsxY91OyAjN0MwRAor57COID4gemjDoDsgIzdDMEUKK+ewjyA+IGzDuTsgIzdDMEYKK+ewkCA+IG5pxINuOyAjN0MxMAor57CRID4gc8WrbzsgIzdDMTEKK+ewkiA+IGN1w6BuOyAjN0MxMgor57CUID4gc8WrbzsgIzdDMTQKK+ewlSA+IGzDqDsgIzdDMTUKK+ewliA+IGR1w6BuOyAjN0MxNgor57CYID4geGnEgW87ICM3QzE4CivnsJkgPiBiw7M7ICM3QzE5CivnsJogPiBtw6w7ICM3QzFBCivnsJsgPiBzxKs7ICM3QzFCCivnsJwgPiBkw6BuZzsgIzdDMUMKK+ewnSA+IGxpw6FvOyAjN0MxRAor57CeID4gZMSBbjsgIzdDMUUKK+ewnyA+IGRpw6BuOyAjN0MxRgor57CgID4gZsWtOyAjN0MyMAor57ChID4gamnEg247ICM3QzIxCivnsKIgPiBtxK1uOyAjN0MyMgor57CjID4ga8O5aTsgIzdDMjMKK+ewpCA+IGTDoGk7ICM3QzI0CivnsKUgPiBxacOhbzsgIzdDMjUKK+ewpiA+IGTEk25nOyAjN0MyNgor57CnID4gaHXDoW5nOyAjN0MyNwor57CoID4gc8WtbjsgIzdDMjgKK+ewqSA+IGzDoW87ICM3QzI5CivnsKogPiB6xIFuOyAjN0MyQQor57CrID4geGnEgW87ICM3QzJCCivnsKwgPiBkw7k7ICM3QzJDCivnsK0gPiBzaMOsOyAjN0MyRAor57CuID4gesSBbjsgIzdDMkUKK+ewsCA+IHDDoWk7ICM3QzMwCivnsLIgPiBww6FpOyAjN0MzMgor57CzID4gZ8OgbjsgIzdDMzMKK+ewtCA+IGrDuTsgIzdDMzQKK+ewtSA+IGTDuTsgIzdDMzUKK+ewtiA+IGzDuTsgIzdDMzYKK+ewtyA+IHnDoW47ICM3QzM3CivnsLggPiBiw7I7ICM3QzM4CivnsLkgPiBkxIFuZzsgIzdDMzkKK+ewuiA+IHPDoGk7ICM3QzNBCivnsLsgPiBrxJM7ICM3QzNCCivnsLwgPiBsw7NuZzsgIzdDM0MKK+ewvSA+IHFpxIFuOyAjN0MzRAor57C+ID4gbGnDoW47ICM3QzNFCivnsL8gPiBiw7M7ICM3QzNGCivnsYAgPiB6aMOydTsgIzdDNDAKK+exgSA+IGzDoGk7ICM3QzQxCivnsYMgPiBsw6FuOyAjN0M0Mwor57GEID4ga8O5aTsgIzdDNDQKK+exhSA+IHnDujsgIzdDNDUKK+exhiA+IHl1w6g7ICM3QzQ2CivnsYcgPiBow6FvOyAjN0M0Nwor57GIID4gemjEk247ICM3QzQ4CivnsYkgPiB0w6FpOyAjN0M0OQor57GKID4gdMOsOyAjN0M0QQor57GLID4gbcOtOyAjN0M0Qgor57GMID4gY2jDs3U7ICM3QzRDCivnsY0gPiBqw607ICM3QzRECivnsZAgPiB0w6luZzsgIzdDNTAKK+exkSA+IHpodcOgbjsgIzdDNTEKK+exkiA+IHpow7J1OyAjN0M1Mgor57GTID4gZsSBbjsgIzdDNTMKK+exlCA+IHPFj3U7ICM3QzU0CivnsZUgPiB6aMOydTsgIzdDNTUKK+exlyA+IHpow7pvOyAjN0M1Nwor57GYID4gdMOpbmc7ICM3QzU4CivnsZkgPiBsw7k7ICM3QzU5CivnsZogPiBsw7o7ICM3QzVBCivnsZsgPiBqacSBbjsgIzdDNUIKK+exnCA+IHTDuW87ICM3QzVDCivnsZ0gPiB5w61uZzsgIzdDNUQKK+exniA+IHnDuTsgIzdDNUUKK+exnyA+IGzDoGk7ICM3QzVGCivnsaAgPiBsw7NuZzsgIzdDNjAKK+exoiA+IGxpw6FuOyAjN0M2Mgor57GjID4gbMOhbjsgIzdDNjMKK+expCA+IHFpxIFuOyAjN0M2NAor57GlID4geXXDqDsgIzdDNjUKK+expiA+IHpoxY1uZzsgIzdDNjYKK+expyA+IHHDujsgIzdDNjcKK+exqCA+IGxpw6FuOyAjN0M2OAor57GpID4gYmnEgW47ICM3QzY5CivnsaogPiBkdcOgbjsgIzdDNkEKK+exqyA+IHp1xINuOyAjN0M2Qgor57GsID4gbMOtOyAjN0M2Qwor57GtID4gc8SrOyAjN0M2RAor57GuID4gbMO6bzsgIzdDNkUKK+exryA+IHnDrW5nOyAjN0M2Rgor57GwID4geXXDqDsgIzdDNzAKK+exsSA+IHpow7pvOyAjN0M3MQor57GyID4geMWrOyAjN0M3Mgor57GzID4gbcStOyAjN0M3Mwor57G0ID4gZMOtOyAjN0M3NAor57G1ID4gZsOhbjsgIzdDNzUKK+extiA+IHNoxJNuOyAjN0M3Ngor57G3ID4gemjDqTsgIzdDNzcKK+exuCA+IHNoxJNuOyAjN0M3OAor57G5ID4gbseaOyAjN0M3OQor57G6ID4geGnDqTsgIzdDN0EKK+exuyA+IGzDqGk7ICM3QzdCCivnsbwgPiB4acSBbjsgIzdDN0MKK+exvSA+IHrErTsgIzdDN0QKK+exviA+IG7DrTsgIzdDN0UKK+exvyA+IGPDuW47ICM3QzdGCivnsoEgPiBxacSBbjsgIzdDODEKK+eygyA+IGLErTsgIzdDODMKK+eyhCA+IGLEg247ICM3Qzg0CivnsoUgPiB3w7k7ICM3Qzg1CivnsoYgPiBzaMSBOyAjN0M4Ngor57KHID4ga8SBbmc7ICM3Qzg3CivnsoggPiByxY91OyAjN0M4OAor57KJID4gZsSVbjsgIzdDODkKK+eyiiA+IGLDrDsgIzdDOEEKK+eyiyA+IGPDuWk7ICM3QzhCCivnso0gPiBsw607ICM3QzhECivnso4gPiBjaMStOyAjN0M4RQor57KRID4gYsSBOyAjN0M5MQor57KSID4gbMOsOyAjN0M5Mgor57KTID4gZ8SBbjsgIzdDOTMKK+eylCA+IGrDuTsgIzdDOTQKK+eylSA+IHDDsjsgIzdDOTUKK+eyliA+IG3DsjsgIzdDOTYKK+eylyA+IGPFqzsgIzdDOTcKK+eymCA+IG5pw6FuOyAjN0M5OAor57KZID4gemjDsnU7ICM3Qzk5CivnspogPiBsw607ICM3QzlBCivnspsgPiBzw7k7ICM3QzlCCivnspwgPiB0acOgbzsgIzdDOUMKK+eynSA+IGzDrDsgIzdDOUQKK+eyniA+IHHEqzsgIzdDOUUKK+eynyA+IHPDuTsgIzdDOUYKK+eyoCA+IGjDs25nOyAjN0NBMAor57KhID4gdMOzbmc7ICM3Q0ExCivnsqIgPiB6xKs7ICM3Q0EyCivnsqMgPiBjw6g7ICM3Q0EzCivnsqQgPiB5dcOoOyAjN0NBNAor57KlID4gemjFjXU7ICM3Q0E1CivnsqYgPiBsw6xuOyAjN0NBNgor57KnID4gemh1xIFuZzsgIzdDQTcKK+eyqCA+IGLEg2k7ICM3Q0E4CivnsqogPiBmw6huOyAjN0NBQQor57KuID4gbGnDoW5nOyAjN0NBRQor57KvID4geGnDoG47ICM3Q0FGCivnsrAgPiBmw7o7ICM3Q0IwCivnsrEgPiBsacOhbmc7ICM3Q0IxCivnsrIgPiBjw6BuOyAjN0NCMgor57KzID4gZ8STbmc7ICM3Q0IzCivnsrQgPiBsxK07ICM3Q0I0CivnsrUgPiB5dcOoOyAjN0NCNQor57K2ID4gbMO5OyAjN0NCNgor57K3ID4gasO6OyAjN0NCNwor57K4ID4gccOtOyAjN0NCOAor57K5ID4gY8O5aTsgIzdDQjkKK+eyuiA+IGLDoGk7ICM3Q0JBCivnsrsgPiB6aMSBbmc7ICM3Q0JCCivnsrwgPiBsw61uOyAjN0NCQwor57K9ID4gesOybmc7ICM3Q0JECivnsr4gPiBqxKtuZzsgIzdDQkUKK+eyvyA+IGfFrW87ICM3Q0JGCivns4EgPiBzxIFuOyAjN0NDMQor57OCID4gc8SDbjsgIzdDQzIKK+ezgyA+IHTDoW5nOyAjN0NDMwor57OEID4gYmnEgW47ICM3Q0M0Civns4UgPiByxY91OyAjN0NDNQor57OGID4gbWnDoG47ICM3Q0M2Civns4cgPiBow7N1OyAjN0NDNwor57OIID4geMWtOyAjN0NDOAor57OJID4gesOybmc7ICM3Q0M5Civns4ogPiBow7o7ICM3Q0NBCivns4sgPiBqacOgbjsgIzdDQ0IKK+ezjCA+IHrDoW47ICM3Q0NDCivns40gPiBjw607ICM3Q0NECivns44gPiBsw607ICM3Q0NFCivns48gPiB4acOoOyAjN0NDRgor57OQID4gZsWrOyAjN0NEMAor57ORID4gbsOsOyAjN0NEMQor57OSID4gYsOoaTsgIzdDRDIKK+ezkyA+IGfFrTsgIzdDRDMKK+ezlCA+IHjErXU7ICM3Q0Q0Civns5UgPiBnxIFvOyAjN0NENQor57OWID4gdMOhbmc7ICM3Q0Q2Civns5cgPiBxxK11OyAjN0NENwor57OZID4gY8SBbzsgIzdDRDkKK+ezmiA+IHpodcSBbmc7ICM3Q0RBCivns5sgPiB0w6FuZzsgIzdDREIKK+eznCA+IG3DrTsgIzdDREMKK+eznSA+IHPEgW47ICM3Q0RECivns54gPiBmw6huOyAjN0NERQor57OfID4gesSBbzsgIzdDREYKK+ezoCA+IGvEgW5nOyAjN0NFMAor57OhID4gamnDoG5nOyAjN0NFMQor57OiID4gbcOzOyAjN0NFMgor57OjID4gc8SDbjsgIzdDRTMKK+ezpCA+IHPEg247ICM3Q0U0Civns6UgPiBuw7lvOyAjN0NFNQor57OmID4geMSrOyAjN0NFNgor57OnID4gbGnDoW5nOyAjN0NFNwor57OoID4gamnDoG5nOyAjN0NFOAor57OpID4ga3XDoGk7ICM3Q0U5Civns6ogPiBiw7M7ICM3Q0VBCivns6sgPiBodcOhbjsgIzdDRUIKK+ezrSA+IHrDsm5nOyAjN0NFRAor57OuID4geGnDoG47ICM3Q0VFCivns68gPiBuw7lvOyAjN0NFRgor57OwID4gdHXDoW47ICM3Q0YwCivns7EgPiBuacOoOyAjN0NGMQor57OyID4gbMOsOyAjN0NGMgor57OzID4gesO5bzsgIzdDRjMKK+eztCA+IGTDrTsgIzdDRjQKK+eztSA+IG5pw6g7ICM3Q0Y1Civns7YgPiB0acOgbzsgIzdDRjYKK+eztyA+IGzDoW47ICM3Q0Y3Civns7ggPiBtw6w7ICM3Q0Y4Civns7kgPiBqacSDbycgJ3PEqycgJ3DDoW5nOyAjN0NGOQor57O6ID4gasSrdTsgIzdDRkEKK+ezuyA+IHjDrDsgIzdDRkIKK+ezvCA+IGfFjW5nOyAjN0NGQwor57O9ID4gemjElW5nOyAjN0NGRAor57O+ID4gasSrdTsgIzdDRkUKK+ezvyA+IHnDsnU7ICM3Q0ZGCivntIAgPiBqw6w7ICM3RDAwCivntIEgPiBjaMOgOyAjN0QwMQor57SCID4gemjDsnU7ICM3RDAyCivntIMgPiB4w7puOyAjN0QwMwor57SEID4geXXEkzsgIzdEMDQKK+e0hSA+IGjDs25nOyAjN0QwNQor57SGID4gecWrOyAjN0QwNgor57SHID4gaMOpOyAjN0QwNwor57SIID4gd8OhbjsgIzdEMDgKK+e0iSA+IHLDqG47ICM3RDA5CivntIogPiB3w6huOyAjN0QwQQor57SLID4gd8OpbjsgIzdEMEIKK+e0jCA+IHHDrXU7ICM3RDBDCivntI0gPiBuw6A7ICM3RDBECivntI4gPiB6xKs7ICM3RDBFCivntI8gPiB0xY91OyAjN0QwRgor57SQID4gbsStdTsgIzdEMTAKK+e0kSA+IGbDs3U7ICM3RDExCivntJIgPiBqacOoOyAjN0QxMgor57STID4gc2jFqzsgIzdEMTMKK+e0lCA+IGNow7puOyAjN0QxNAor57SVID4gcMOtOyAjN0QxNQor57SWID4gecStbjsgIzdEMTYKK+e0lyA+IHNoxIE7ICM3RDE3CivntJggPiBow7NuZzsgIzdEMTgKK+e0mSA+IHpoxK07ICM3RDE5CivntJogPiBqw607ICM3RDFBCivntJsgPiBmxJNuOyAjN0QxQgor57ScID4gecO6bjsgIzdEMUMKK+e0nSA+IHLDqW47ICM3RDFECivntJ4gPiBkxINuOyAjN0QxRQor57SfID4gasSrbjsgIzdEMUYKK+e0oCA+IHPDuTsgIzdEMjAKK+e0oSA+IGbEg25nOyAjN0QyMQor57SiID4gc8WtbzsgIzdEMjIKK+e0oyA+IGPDuWk7ICM3RDIzCivntKQgPiBqxK11OyAjN0QyNAor57SlID4gemjDoTsgIzdEMjUKK+e0pyA+IGrErW47ICM3RDI3CivntKggPiBmw7k7ICM3RDI4CivntKkgPiB6aMOsOyAjN0QyOQor57SqID4gY8StOyAjN0QyQQor57SrID4gesStOyAjN0QyQgor57SsID4gY2jDs3U7ICM3RDJDCivntK0gPiBow7NuZzsgIzdEMkQKK+e0riA+IHpow6E7ICM3RDJFCivntK8gPiBsw6hpOyAjN0QyRgor57SwID4geMOsOyAjN0QzMAor57SxID4gZsO6OyAjN0QzMQor57SyID4geGnDqDsgIzdEMzIKK+e0syA+IHNoxJNuOyAjN0QzMwor57S0ID4gYsOoaTsgIzdEMzQKK+e0tSA+IHpow7k7ICM3RDM1CivntLYgPiBxxa07ICM3RDM2CivntLcgPiBsw61uZzsgIzdEMzcKK+e0uCA+IHpow7k7ICM3RDM4CivntLkgPiBzaMOgbzsgIzdEMzkKK+e0uiA+IGfDoG47ICM3RDNBCivntLsgPiB5xIFuZzsgIzdEM0IKK+e0vCA+IGbDujsgIzdEM0MKK+e0vSA+IHTDum87ICM3RDNECivntL4gPiB6aMSVbjsgIzdEM0UKK+e0vyA+IGTDoGk7ICM3RDNGCivntYAgPiB6aMO6bzsgIzdENDAKK+e1gSA+IHNoxKs7ICM3RDQxCivntYIgPiB6aMWNbmc7ICM3RDQyCivntYMgPiB4acOhbjsgIzdENDMKK+e1hCA+IHrFrTsgIzdENDQKK+e1hSA+IGrErW9uZzsgIzdENDUKK+e1hiA+IGLDoG47ICM3RDQ2CivntYcgPiBqw7k7ICM3RDQ3CivntYggPiBtw7I7ICM3RDQ4CivntYkgPiBzaMO5OyAjN0Q0OQor57WKID4gesO5aTsgIzdENEEKK+e1jCA+IGrEq25nOyAjN0Q0Qwor57WNID4gcsOpbjsgIzdENEQKK+e1jiA+IGjDqG5nOyAjN0Q0RQor57WPID4geGnDqDsgIzdENEYKK+e1kCA+IGppw6k7ICM3RDUwCivntZEgPiB6aMWrOyAjN0Q1MQor57WSID4gY2jDs3U7ICM3RDUyCivntZMgPiBndcOgOyAjN0Q1Mwor57WUID4gYsSDaTsgIzdENTQKK+e1lSA+IGp1w6k7ICM3RDU1CivntZYgPiBrdcOgbmc7ICM3RDU2CivntZcgPiBow7o7ICM3RDU3CivntZggPiBjw6w7ICM3RDU4CivntZkgPiBnxJNuZzsgIzdENTkKK+e1miA+IGfEk25nOyAjN0Q1QQor57WbID4gdMSBbzsgIzdENUIKK+e1nCA+IHhpw6k7ICM3RDVDCivntZ0gPiBrw7k7ICM3RDVECivntZ4gPiBqacSDbzsgIzdENUUKK+e1nyA+IHF1xIFuOyAjN0Q1Rgor57WgID4gZ8SDaTsgIzdENjAKK+e1oSA+IGzDuW87ICM3RDYxCivntaIgPiB4dcOgbjsgIzdENjIKK+e1oyA+IGLEq25nOyAjN0Q2Mwor57WkID4geGnDoG47ICM3RDY0CivntaUgPiBmw7o7ICM3RDY1CivntaYgPiBnxJVpOyAjN0Q2Ngor57WnID4gdMOzbmc7ICM3RDY3CivntaggPiByw7NuZzsgIzdENjgKK+e1qSA+IHRpw6BvOyAjN0Q2OQor57WqID4gecSrbjsgIzdENkEKK+e1qyA+IGzElWk7ICM3RDZCCivntawgPiB4acOoOyAjN0Q2Qwor57WtID4gcXXDoG47ICM3RDZECivnta4gPiB4w7k7ICM3RDZFCivnta8gPiBsx5xuOyAjN0Q2Rgor57WwID4gZGnDqTsgIzdENzAKK+e1sSA+IHTFj25nOyAjN0Q3MQor57WyID4gc8SrOyAjN0Q3Mgor57WzID4gamnDoG5nOyAjN0Q3Mwor57W0ID4geGnDoW5nOyAjN0Q3NAor57W1ID4gaMO5aTsgIzdENzUKK+e1tiA+IGp1w6k7ICM3RDc2CivntbcgPiB6aMOtOyAjN0Q3Nwor57W4ID4gamnEg247ICM3RDc4CivntbkgPiBqdcOgbjsgIzdENzkKK+e1uiA+IGNoxKs7ICM3RDdBCivntbsgPiBtacSDbjsgIzdEN0IKK+e1vCA+IHpoxJVuOyAjN0Q3Qwor57W9ID4gbMeaOyAjN0Q3RAor57W+ID4gY2jDqW5nOyAjN0Q3RQor57W/ID4gccOtdTsgIzdEN0YKK+e2gCA+IHNoxas7ICM3RDgwCivntoEgPiBixINuZzsgIzdEODEKK+e2giA+IHTFj25nOyAjN0Q4Mgor57aDID4geGnEgW87ICM3RDgzCivntoQgPiB3w6BuOyAjN0Q4NAor57aFID4gccSrbjsgIzdEODUKK+e2hiA+IGfElW5nOyAjN0Q4Ngor57aHID4geMStdTsgIzdEODcKK+e2iCA+IHTDrTsgIzdEODgKK+e2iSA+IHjDrHU7ICM3RDg5CivntoogPiB4acOpOyAjN0Q4QQor57aLID4gaMOzbmc7ICM3RDhCCivntowgPiB4w6w7ICM3RDhDCivnto0gPiBmw7o7ICM3RDhECivnto4gPiB0xKtuZzsgIzdEOEUKK+e2jyA+IHPFq2k7ICM3RDhGCivntpAgPiBkw7lpOyAjN0Q5MAor57aRID4ga8WtbjsgIzdEOTEKK+e2kiA+IGbFqzsgIzdEOTIKK+e2kyA+IGrEq25nOyAjN0Q5Mwor57aUID4gaMO5OyAjN0Q5NAor57aVID4gemjEqzsgIzdEOTUKK+e2liA+IHnDoW47ICM3RDk2CivntpcgPiBqxK1vbmc7ICM3RDk3CivntpggPiBmw6luZzsgIzdEOTgKK+e2mSA+IGrDrDsgIzdEOTkKK+e2nCA+IHrDsm5nOyAjN0Q5Qwor57adID4gbMOtbjsgIzdEOUQKK+e2niA+IGTFrW87ICM3RDlFCivntp8gPiBsw6w7ICM3RDlGCivntqAgPiBsx5w7ICM3REEwCivntqEgPiBsacOhbmc7ICM3REExCivntqIgPiBjaMOzdTsgIzdEQTIKK+e2oyA+IHF1xINuOyAjN0RBMwor57akID4gc2jDoG87ICM3REE0CivntqUgPiBxw6w7ICM3REE1CivntqYgPiBxw607ICM3REE2CivntqcgPiB6aMWtbjsgIzdEQTcKK+e2qCA+IHHDrTsgIzdEQTgKK+e2qSA+IHfEg247ICM3REE5CivntqogPiBxacOgbjsgIzdEQUEKK+e2qyA+IHhpw6BuOyAjN0RBQgor57asID4gc2jDsnU7ICM3REFDCivntq0gPiB3w6lpOyAjN0RBRAor57auID4gccStOyAjN0RBRQor57avID4gdMOhbzsgIzdEQUYKK+e2sCA+IHfEg247ICM3REIwCivntrEgPiBnxIFuZzsgIzdEQjEKK+e2siA+IHfEg25nOyAjN0RCMgor57azID4gYsSTbmc7ICM3REIzCivntrQgPiB6aMO5aTsgIzdEQjQKK+e2tSA+IGPEg2k7ICM3REI1CivntrYgPiBnxa1vOyAjN0RCNgor57a3ID4gY8O5aTsgIzdEQjcKK+e2uCA+IGzDum47ICM3REI4CivntrkgPiBsxK11OyAjN0RCOQor57a6ID4gccStOyAjN0RCQQor57a7ID4gemjDoG47ICM3REJCCivntrwgPiBixJNpOyAjN0RCQwor57a9ID4gY2jDuW87ICM3REJECivntr4gPiBsw61uZzsgIzdEQkUKK+e2vyA+IG1pw6FuOyAjN0RCRgor57eAID4gccSrOyAjN0RDMAor57eBID4gcWnDqDsgIzdEQzEKK+e3giA+IHTEgW47ICM3REMyCivnt4MgPiB6xY1uZzsgIzdEQzMKK+e3hCA+IGfFrW47ICM3REM0Civnt4UgPiB6xY11OyAjN0RDNQor57eGID4gecOsOyAjN0RDNgor57eHID4gesSrOyAjN0RDNwor57eIID4geMOsbmc7ICM3REM4Civnt4kgPiBsacSDbmc7ICM3REM5Civnt4ogPiBqxK1uOyAjN0RDQQor57eLID4gZsSTaTsgIzdEQ0IKK+e3jCA+IHLDumk7ICM3RENDCivnt40gPiBtw61uOyAjN0RDRAor57eOID4gecO5OyAjN0RDRQor57ePID4gesWPbmc7ICM3RENGCivnt5AgPiBmw6FuOyAjN0REMAor57eRID4gbMecOyAjN0REMQor57eSID4geMO5OyAjN0REMgor57eTID4geWluZ2w7ICM3REQzCivnt5QgPiB6aMOgbmc7ICM3REQ0Civnt5YgPiB4w7k7ICM3REQ2Civnt5cgPiB4acSBbmc7ICM3REQ3Civnt5ggPiBqacSBbjsgIzdERDgKK+e3mSA+IGvDqDsgIzdERDkKK+e3miA+IHhpw6BuOyAjN0REQQor57ebID4gcnXEg247ICM3RERCCivnt5wgPiBtacOhbjsgIzdEREMKK+e3nSA+IHHDrDsgIzdEREQKK+e3niA+IGR1w6BuOyAjN0RERQor57efID4gemjDsm5nOyAjN0RERgor57egID4gZMOsOyAjN0RFMAor57ehID4gbcOtbjsgIzdERTEKK+e3oiA+IG1pw6FvOyAjN0RFMgor57ejID4geXXDoW47ICM3REUzCivnt6QgPiB4acOoOyAjN0RFNAor57elID4gYsSDbzsgIzdERTUKK+e3piA+IHPEqzsgIzdERTYKK+e3pyA+IHHEq3U7ICM3REU3Civnt6ggPiBiacSBbjsgIzdERTgKK+e3qSA+IGh1xINuOyAjN0RFOQor57eqID4gZ8STbmc7ICM3REVBCivnt6sgPiBjxY1uZzsgIzdERUIKK+e3rCA+IG1pxINuOyAjN0RFQwor57etID4gd8OoaTsgIzdERUQKK+e3riA+IGbDuTsgIzdERUUKK+e3ryA+IHfElWk7ICM3REVGCivnt7AgPiB5w7o7ICM3REYwCivnt7EgPiBnxY11OyAjN0RGMQor57eyID4gbWnEg287ICM3REYyCivnt7MgPiB4acOpOyAjN0RGMwor57e0ID4gbGnDoG47ICM3REY0Civnt7UgPiB6xY1uZzsgIzdERjUKK+e3tiA+IGJpw6BuOyAjN0RGNgor57e3ID4gecO5bjsgIzdERjcKK+e3uCA+IHnEq247ICM3REY4Civnt7kgPiB0w607ICM3REY5Civnt7ogPiBndcSBOyAjN0RGQQor57e7ID4gemjDrDsgIzdERkIKK+e3vCA+IHnFq247ICM3REZDCivnt70gPiBjaMSTbmc7ICM3REZECivnt74gPiBjaMOhbjsgIzdERkUKK+e3vyA+IGTDoGk7ICM3REZGCivnuIAgPiB4acOhOyAjN0UwMAor57iBID4geXXDoW47ICM3RTAxCivnuIIgPiB6xY9uZzsgIzdFMDIKK+e4gyA+IHjFqzsgIzdFMDMKK+e4hiA+IGfEk25nOyAjN0UwNgor57iIID4gecOtbmc7ICM3RTA4CivnuIkgPiBqw6xuOyAjN0UwOQor57iKID4gecOsOyAjN0UwQQor57iLID4gemjDuWk7ICM3RTBCCivnuIwgPiBuw6w7ICM3RTBDCivnuI0gPiBixIFuZzsgIzdFMEQKK+e4jiA+IGfFrTsgIzdFMEUKK+e4jyA+IHDDoW47ICM3RTBGCivnuJAgPiB6aMOydTsgIzdFMTAKK+e4kSA+IGppxIFuOyAjN0UxMQor57iSID4gY8WtbzsgIzdFMTIKK+e4kyA+IHF1xINuOyAjN0UxMwor57iUID4gc2h1xINuZzsgIzdFMTQKK+e4lSA+IHnFq247ICM3RTE1CivnuJYgPiB4acOhOyAjN0UxNgor57iXID4gc2h1xIFpOyAjN0UxNwor57iYID4geMSrOyAjN0UxOAor57iZID4gcsOzbmc7ICM3RTE5CivnuJogPiB0xIFvOyAjN0UxQQor57ibID4gZsO6OyAjN0UxQgor57icID4gecO6bjsgIzdFMUMKK+e4nSA+IHpoxJNuOyAjN0UxRAor57ieID4gZ8SDbzsgIzdFMUUKK+e4nyA+IHLDuTsgIzdFMUYKK+e4oCA+IGjDujsgIzdFMjAKK+e4oSA+IHrEg2k7ICM3RTIxCivnuKIgPiB0w6luZzsgIzdFMjIKK+e4oyA+IHhpw6BuOyAjN0UyMwor57ikID4gc8O5OyAjN0UyNAor57ilID4gemjElW47ICM3RTI1CivnuKYgPiB6w7JuZzsgIzdFMjYKK+e4pyA+IHTEgW87ICM3RTI3CivnuKkgPiBjw6BpOyAjN0UyOQor57iqID4gYsOsOyAjN0UyQQor57irID4gZsOpbmc7ICM3RTJCCivnuKwgPiBjw7k7ICM3RTJDCivnuK0gPiBsw607ICM3RTJECivnuK4gPiBzxatvOyAjN0UyRQor57ivID4gecStbjsgIzdFMkYKK+e4sCA+IHjErTsgIzdFMzAKK+e4sSA+IHrDsm5nOyAjN0UzMQor57iyID4gbMOpaTsgIzdFMzIKK+e4syA+IHpodcOgbjsgIzdFMzMKK+e4tCA+IHFpxIFuOyAjN0UzNAor57i1ID4gbcOgbjsgIzdFMzUKK+e4tiA+IHpow607ICM3RTM2CivnuLcgPiBsx5o7ICM3RTM3CivnuLggPiBtw7I7ICM3RTM4CivnuLkgPiBwacSDbzsgIzdFMzkKK+e4uiA+IGxpw6FuOyAjN0UzQQor57i7ID4gbcOtOyAjN0UzQgor57i8ID4geHXDoG47ICM3RTNDCivnuL0gPiB6xY9uZzsgIzdFM0QKK+e4viA+IGrEqzsgIzdFM0UKK+e4vyA+IHNoxIFuOyAjN0UzRgor57mAID4gc8O5aTsgIzdFNDAKK+e5gSA+IGbDoW47ICM3RTQxCivnuYIgPiBzaHXDoGk7ICM3RTQyCivnuYMgPiBixJNuZzsgIzdFNDMKK+e5hCA+IHnEqzsgIzdFNDQKK+e5hSA+IHPEgW87ICM3RTQ1CivnuYYgPiBtw7N1OyAjN0U0Ngor57mHID4gemjDsnU7ICM3RTQ3CivnuYggPiBxacSDbmc7ICM3RTQ4CivnuYkgPiBow7puOyAjN0U0OQor57mLID4geMOsOyAjN0U0Qgor57mNID4geMOsdTsgIzdFNEQKK+e5jiA+IHLDoW47ICM3RTRFCivnuY8gPiB4dcOgbjsgIzdFNEYKK+e5kCA+IGjDuWk7ICM3RTUwCivnuZEgPiBxacSBbzsgIzdFNTEKK+e5kiA+IHrEk25nOyAjN0U1Mgor57mTID4gesWtbzsgIzdFNTMKK+e5lCA+IHpoxKs7ICM3RTU0CivnuZUgPiBzaMOgbjsgIzdFNTUKK+e5liA+IHPEg247ICM3RTU2CivnuZcgPiBsw61uOyAjN0U1Nwor57mYID4gecO5OyAjN0U1OAor57mZID4gZsSBbjsgIzdFNTkKK+e5miA+IGxpw6FvOyAjN0U1QQor57mbID4gY2jDuW87ICM3RTVCCivnuZwgPiB6xatuOyAjN0U1Qwor57mdID4gamnDoG47ICM3RTVECivnuZ4gPiByw6BvOyAjN0U1RQor57mfID4gY2jEg247ICM3RTVGCivnuaAgPiByxa1pOyAjN0U2MAor57mhID4geMOsdTsgIzdFNjEKK+e5oiA+IGjDuWk7ICM3RTYyCivnuaMgPiBodcOgOyAjN0U2Mwor57mkID4genXEg247ICM3RTY0CivnuaUgPiB4xKs7ICM3RTY1CivnuaYgPiBxacSDbmc7ICM3RTY2CivnuaggPiBkw6E7ICM3RTY4CivnuakgPiBzaMOpbmc7ICM3RTY5CivnuaogPiBow7lpOyAjN0U2QQor57mrID4geMOsOyAjN0U2Qgor57msID4gc8OoOyAjN0U2Qwor57mtID4gamnEg247ICM3RTZECivnua4gPiBqacSBbmc7ICM3RTZFCivnua8gPiBodcOhbjsgIzdFNkYKK+e5sCA+IHrEg287ICM3RTcwCivnubEgPiBjxY1uZzsgIzdFNzEKK+e5siA+IGppw6g7ICM3RTcyCivnubMgPiBqacSDbzsgIzdFNzMKK+e5tCA+IGLDsjsgIzdFNzQKK+e5tSA+IGNow6FuOyAjN0U3NQor57m2ID4gecOsOyAjN0U3Ngor57m3ID4gbsOhbzsgIzdFNzcKK+e5uCA+IHPDuWk7ICM3RTc4CivnubkgPiB5w6w7ICM3RTc5CivnubogPiBzaMSDaTsgIzdFN0EKK+e5uyA+IHjFqzsgIzdFN0IKK+e5vCA+IGrDrDsgIzdFN0MKK+e5vSA+IGLEq247ICM3RTdECivnub4gPiBxacSDbjsgIzdFN0UKK+e5vyA+IGzDoW47ICM3RTdGCivnuoAgPiBww7o7ICM3RTgwCivnuoEgPiB4xatuOyAjN0U4MQor57qCID4genXEg247ICM3RTgyCivnuoMgPiBxw607ICM3RTgzCivnuoQgPiBww6luZzsgIzdFODQKK+e6hSA+IGzDrDsgIzdFODUKK+e6hiA+IG3DsjsgIzdFODYKK+e6hyA+IGzDqGk7ICM3RTg3CivnuoggPiB4acOpOyAjN0U4OAor57qJID4genXEg247ICM3RTg5CivnuoogPiBrdcOgbmc7ICM3RThBCivnuosgPiB5xY11OyAjN0U4Qgor57qMID4geMO5OyAjN0U4Qwor57qNID4gbMOpaTsgIzdFOEQKK+e6jiA+IHhpxIFuOyAjN0U4RQor57qPID4gY2jDoW47ICM3RThGCivnupEgPiBsw7o7ICM3RTkxCivnupIgPiBjaMOhbjsgIzdFOTIKK+e6kyA+IHnEq25nOyAjN0U5Mwor57qUID4gY8OhaTsgIzdFOTQKK+e6lSA+IHhpxIFuZzsgIzdFOTUKK+e6liA+IHhpxIFuOyAjN0U5Ngor57qXID4gesWraTsgIzdFOTcKK+e6mCA+IHp1xINuOyAjN0U5OAor57qZID4gbMO5bzsgIzdFOTkKK+e6miA+IHjErTsgIzdFOUEKK+e6myA+IGTDoG87ICM3RTlCCivnupwgPiBsw6BuOyAjN0U5Qwor57qdID4gbMOpaTsgIzdFOUQKK+e6niA+IGxpw6BuOyAjN0U5RQor57qfID4gc8SrOyAjN0U5Rgor57qgID4gasSrdTsgIzdFQTAKK+e6oSA+IHnFqzsgIzdFQTEKK+e6oiA+IGjDs25nOyAjN0VBMgor57qjID4gemjDsnU7ICM3RUEzCivnuqQgPiB4acSBbjsgIzdFQTQKK+e6pSA+IGjDqTsgIzdFQTUKK+e6piA+IHl1xJM7ICM3RUE2CivnuqcgPiBqw607ICM3RUE3CivnuqggPiB3w6FuOyAjN0VBOAor57qpID4ga3XDoG5nOyAjN0VBOQor57qqID4gasOsOyAjN0VBQQor57qrID4gcsOobjsgIzdFQUIKK+e6rCA+IHfElWk7ICM3RUFDCivnuq0gPiB5w7puOyAjN0VBRAor57quID4gaMOzbmc7ICM3RUFFCivnuq8gPiBjaMO6bjsgIzdFQUYKK+e6sCA+IHDDrTsgIzdFQjAKK+e6sSA+IHNoxIE7ICM3RUIxCivnurIgPiBnxIFuZzsgIzdFQjIKK+e6syA+IG7DoDsgIzdFQjMKK+e6tCA+IHLDqW47ICM3RUI0CivnurUgPiB6w7JuZzsgIzdFQjUKK+e6tiA+IGzDum47ICM3RUI2CivnurcgPiBmxJNuOyAjN0VCNwor57q4ID4gemjErTsgIzdFQjgKK+e6uSA+IHfDqW47ICM3RUI5CivnurogPiBmxINuZzsgIzdFQkEKK+e6uyA+IHpow7k7ICM3RUJCCivnurwgPiB5xK1uOyAjN0VCQwor57q9ID4gbsStdTsgIzdFQkQKK+e6viA+IHNoxas7ICM3RUJFCivnur8gPiB4acOgbjsgIzdFQkYKK+e7gCA+IGfDoG47ICM3RUMwCivnu4EgPiB4acOoOyAjN0VDMQor57uCID4gZsO6OyAjN0VDMgor57uDID4gbGnDoG47ICM3RUMzCivnu4QgPiB6xa07ICM3RUM0Civnu4UgPiBzaMSTbjsgIzdFQzUKK+e7hiA+IHjDrDsgIzdFQzYKK+e7hyA+IHpoxKs7ICM3RUM3Civnu4ggPiB6aMWNbmc7ICM3RUM4Civnu4kgPiB6aMOydTsgIzdFQzkKK+e7iiA+IGLDoG47ICM3RUNBCivnu4sgPiBmw7o7ICM3RUNCCivnu4wgPiB6aMO6bzsgIzdFQ0MKK+e7jSA+IHNow6BvOyAjN0VDRAor57uOID4gecOsOyAjN0VDRQor57uPID4gasSrbmc7ICM3RUNGCivnu5AgPiBkw6BpOyAjN0VEMAor57uRID4gYsSDbmc7ICM3RUQxCivnu5IgPiByw7NuZzsgIzdFRDIKK+e7kyA+IGppw6k7ICM3RUQzCivnu5QgPiBrw7k7ICM3RUQ0Civnu5UgPiByw6BvOyAjN0VENQor57uWID4gZGnDqTsgIzdFRDYKK+e7lyA+IGjDqG5nOyAjN0VENwor57uYID4gaMO5aTsgIzdFRDgKK+e7mSA+IGfElWk7ICM3RUQ5Civnu5ogPiB4dcOgbjsgIzdFREEKK+e7myA+IGppw6BuZzsgIzdFREIKK+e7nCA+IGzDuW87ICM3RURDCivnu50gPiBqdcOpOyAjN0VERAor57ueID4gamnEg287ICM3RURFCivnu58gPiB0xY9uZzsgIzdFREYKK+e7oCA+IGfElW5nOyAjN0VFMAor57uhID4geGnEgW87ICM3RUUxCivnu6IgPiBqdcOgbjsgIzdFRTIKK+e7oyA+IHjDrHU7ICM3RUUzCivnu6QgPiB4w6w7ICM3RUU0Civnu6UgPiBzxatpOyAjN0VFNQor57umID4gdMSBbzsgIzdFRTYKK+e7pyA+IGrDrDsgIzdFRTcKK+e7qCA+IHTDrTsgIzdFRTgKK+e7qSA+IGrEqzsgIzdFRTkKK+e7qiA+IHjDuTsgIzdFRUEKK+e7qyA+IGzDrW5nOyAjN0VFQgor57utID4geMO5OyAjN0VFRAor57uuID4gccStOyAjN0VFRQor57uvID4gZsSTaTsgIzdFRUYKK+e7sCA+IGNow7lvOyAjN0VGMAor57uxID4gemjEg25nOyAjN0VGMQor57uyID4gZ8WtbjsgIzdFRjIKK+e7syA+IHNow6luZzsgIzdFRjMKK+e7tCA+IHfDqWk7ICM3RUY0Civnu7UgPiBtacOhbjsgIzdFRjUKK+e7tiA+IHNow7J1OyAjN0VGNgor57u3ID4gYsSTbmc7ICM3RUY3Civnu7ggPiBjaMOzdTsgIzdFRjgKK+e7uSA+IHTDoW87ICM3RUY5Civnu7ogPiBsxK11OyAjN0VGQQor57u7ID4gcXXEg247ICM3RUZCCivnu7wgPiB6w7JuZzsgIzdFRkMKK+e7vSA+IHpow6BuOyAjN0VGRAor57u+ID4gd8SDbjsgIzdFRkUKK+e7vyA+IGzHnDsgIzdFRkYKK+e8gCA+IHpow7lpOyAjN0YwMAor57yBID4gesSrOyAjN0YwMQor57yCID4ga8OoOyAjN0YwMgor57yDID4geGnEgW5nOyAjN0YwMwor57yEID4gamnEgW47ICM3RjA0CivnvIUgPiBtacSDbjsgIzdGMDUKK+e8hiA+IGzDoG47ICM3RjA2CivnvIcgPiB0w607ICM3RjA3CivnvIggPiBtacSDbzsgIzdGMDgKK+e8iSA+IHHDrDsgIzdGMDkKK+e8iiA+IHnFq247ICM3RjBBCivnvIsgPiBow7lpOyAjN0YwQgor57yMID4gc8SrOyAjN0YwQwor57yNID4gZMWtbzsgIzdGMEQKK+e8jiA+IGR1w6BuOyAjN0YwRQor57yPID4gYmnDoG47ICM3RjBGCivnvJAgPiB4acOgbjsgIzdGMTAKK+e8kSA+IGfFjXU7ICM3RjExCivnvJIgPiB6aMO5aTsgIzdGMTIKK+e8kyA+IGh1xINuOyAjN0YxMwor57yUID4gZMOsOyAjN0YxNAor57yVID4gbMeaOyAjN0YxNQor57yWID4gYmnEgW47ICM3RjE2CivnvJcgPiBtw61uOyAjN0YxNwor57yYID4geXXDoW47ICM3RjE4CivnvJkgPiBqw6xuOyAjN0YxOQor57yaID4gZsO6OyAjN0YxQQor57ybID4gcsO5OyAjN0YxQgor57ycID4gemjEk247ICM3RjFDCivnvJ0gPiBmw6luZzsgIzdGMUQKK+e8niA+IHNodcSBaTsgIzdGMUUKK+e8nyA+IGfEg287ICM3RjFGCivnvKAgPiBjaMOhbjsgIzdGMjAKK+e8oSA+IGzDrTsgIzdGMjEKK+e8oiA+IHnDrDsgIzdGMjIKK+e8oyA+IGppxIFuOyAjN0YyMwor57ykID4gYsSrbjsgIzdGMjQKK+e8pSA+IHBpxINvOyAjN0YyNQor57ymID4gbcOgbjsgIzdGMjYKK+e8pyA+IGzDqWk7ICM3RjI3CivnvKggPiB5xKtuZzsgIzdGMjgKK+e8qSA+IHPFq287ICM3RjI5CivnvKogPiBtw7N1OyAjN0YyQQor57yrID4gc8SBbzsgIzdGMkIKK+e8rCA+IHhpw6k7ICM3RjJDCivnvK0gPiBsacOhbzsgIzdGMkQKK+e8riA+IHNow6BuOyAjN0YyRQor57yvID4gesSTbmc7ICM3RjJGCivnvLAgPiBqacSBbmc7ICM3RjMwCivnvLEgPiBxacSDbjsgIzdGMzEKK+e8siA+IHrEg287ICM3RjMyCivnvLMgPiBodcOhbjsgIzdGMzMKK+e8tCA+IGppxINvOyAjN0YzNAor57y1ID4genXEg247ICM3RjM1CivnvLYgPiBmxY91OyAjN0YzNgor57y3ID4geGnDqDsgIzdGMzcKK+e8uCA+IGfEgW5nOyAjN0YzOAor57y5ID4gZsWPdTsgIzdGMzkKK+e8uiA+IHF1xJM7ICM3RjNBCivnvLsgPiBmxY91OyAjN0YzQgor57y9ID4gYsWNOyAjN0YzRAor57y+ID4gcMOtbmc7ICM3RjNFCivnvL8gPiBow7J1OyAjN0YzRgor572BID4gZ8SBbmc7ICM3RjQxCivnvYIgPiB5xKtuZzsgIzdGNDIKK+e9gyA+IHnEq25nOyAjN0Y0Mwor572EID4gccOsbmc7ICM3RjQ0CivnvYUgPiB4acOgOyAjN0Y0NQor572GID4gZ3XDoG47ICM3RjQ2CivnvYcgPiB6xatuOyAjN0Y0Nwor572IID4gdMOhbjsgIzdGNDgKK+e9iiA+IHHDrDsgIzdGNEEKK+e9iyA+IHfDqG5nOyAjN0Y0Qgor572MID4gecSrbmc7ICM3RjRDCivnvY0gPiBsw6lpOyAjN0Y0RAor572OID4gdMOhbjsgIzdGNEUKK+e9jyA+IGzDujsgIzdGNEYKK+e9kCA+IGd1w6BuOyAjN0Y1MAor572RID4gd8SDbmc7ICM3RjUxCivnvZIgPiB3xINuZzsgIzdGNTIKK+e9kyA+IGfEgW5nOyAjN0Y1Mwor572UID4gd8SDbmc7ICM3RjU0CivnvZUgPiBoxINuOyAjN0Y1NQor572XID4gbMWrbzsgIzdGNTcKK+e9mCA+IGbDujsgIzdGNTgKK+e9mSA+IG3DrTsgIzdGNTkKK+e9miA+IGbDoTsgIzdGNUEKK+e9myA+IGfFqzsgIzdGNUIKK+e9nCA+IHpoxa07ICM3RjVDCivnvZ0gPiBqxas7ICM3RjVECivnvZ4gPiBtw6FvOyAjN0Y1RQor572fID4gZ8WtOyAjN0Y1Rgor572gID4gbcOtbjsgIzdGNjAKK+e9oSA+IGfEgW5nOyAjN0Y2MQor572iID4gYsOgOyAjN0Y2Mgor572jID4gZ3XDoDsgIzdGNjMKK+e9pCA+IHTDrTsgIzdGNjQKK+e9pSA+IGp1w6BuOyAjN0Y2NQor572mID4gZsWrOyAjN0Y2Ngor572nID4gbMOtbjsgIzdGNjcKK+e9qCA+IHnEg247ICM3RjY4CivnvakgPiB6aMOgbzsgIzdGNjkKK+e9qiA+IHrDuWk7ICM3RjZBCivnvasgPiBndcOgOyAjN0Y2Qgor572sID4gemjDum87ICM3RjZDCivnva0gPiB5w7k7ICM3RjZECivnva4gPiB6aMOsOyAjN0Y2RQor572vID4gxINuOyAjN0Y2Rgor572wID4gZsOhOyAjN0Y3MAor572xID4gbsSDbjsgIzdGNzEKK+e9siA+IHNoxa07ICM3RjcyCivnvbMgPiBzxKs7ICM3RjczCivnvbQgPiBww607ICM3Rjc0CivnvbUgPiBtw6A7ICM3Rjc1CivnvbYgPiBsxK11OyAjN0Y3Ngor5723ID4gYsOgOyAjN0Y3Nwor5724ID4gZsOhOyAjN0Y3OAor5725ID4gbMOtOyAjN0Y3OQor5726ID4gY2jEgW87ICM3RjdBCivnvbsgPiB3w6hpOyAjN0Y3Qgor5728ID4gYsOsOyAjN0Y3Qwor5729ID4gasOsOyAjN0Y3RAor572+ID4gesSTbmc7ICM3RjdFCivnvb8gPiB0w7NuZzsgIzdGN0YKK+e+gCA+IGzErXU7ICM3RjgwCivnvoEgPiBqxKs7ICM3RjgxCivnvoIgPiBqdcOgbjsgIzdGODIKK+e+gyA+IG3DrDsgIzdGODMKK+e+hCA+IHpow6BvOyAjN0Y4NAor576FID4gbMO6bzsgIzdGODUKK+e+hiA+IHDDrTsgIzdGODYKK+e+hyA+IGrEqzsgIzdGODcKK+e+iCA+IGrEqzsgIzdGODgKK+e+iSA+IGx1w6FuOyAjN0Y4OQor576KID4gecOhbmc7ICM3RjhBCivnvosgPiBtacSTOyAjN0Y4Qgor576MID4gcWnEgW5nOyAjN0Y4Qwor576NID4gdMOgOyAjN0Y4RAor576OID4gbcSVaTsgIzdGOEUKK+e+jyA+IHnDoW5nOyAjN0Y4Rgor576QID4gecWPdTsgIzdGOTAKK+e+kSA+IHnFj3U7ICM3RjkxCivnvpIgPiBmw6luOyAjN0Y5Mgor576TID4gYsSBOyAjN0Y5Mwor576UID4gZ8SBbzsgIzdGOTQKK+e+lSA+IHnDoG5nOyAjN0Y5NQor576WID4gZ8WtOyAjN0Y5Ngor576XID4gcWnEgW5nOyAjN0Y5Nwor576YID4gesSBbmc7ICM3Rjk4CivnvpkgPiBnxIFvOyAjN0Y5OQor576aID4gbMOtbmc7ICM3RjlBCivnvpsgPiB5w6w7ICM3RjlCCivnvpwgPiB6aMO5OyAjN0Y5Qwor576dID4gZMSrOyAjN0Y5RAor576eID4geMSrdTsgIzdGOUUKK+e+nyA+IHFpxIFuOyAjN0Y5Rgor576gID4gecOtOyAjN0ZBMAor576hID4geGnDoG47ICM3RkExCivnvqIgPiByw7NuZzsgIzdGQTIKK+e+oyA+IHHDum47ICM3RkEzCivnvqQgPiBxw7puOyAjN0ZBNAor576lID4gcWnEgW47ICM3RkE1CivnvqYgPiBodcOhbjsgIzdGQTYKK+e+pyA+IHrFq2k7ICM3RkE3CivnvqggPiB4acOgbjsgIzdGQTgKK+e+qSA+IHnDrDsgIzdGQTkKK+e+qyA+IHFpxIFuZzsgIzdGQUIKK+e+rCA+IHhpw6FuOyAjN0ZBQwor576tID4gecO6OyAjN0ZBRAor576uID4gZ8STbmc7ICM3RkFFCivnvq8gPiBqacOpOyAjN0ZBRgor576wID4gdMSBbmc7ICM3RkIwCivnvrEgPiB5dcOhbjsgIzdGQjEKK+e+siA+IHjEqzsgIzdGQjIKK+e+syA+IGbDoW47ICM3RkIzCivnvrQgPiBzaMSBbjsgIzdGQjQKK+e+tSA+IGbElW47ICM3RkI1CivnvrYgPiBzaMSBbjsgIzdGQjYKK+e+tyA+IGxpxINuOyAjN0ZCNwor5764ID4gbMOpaTsgIzdGQjgKK+e+uSA+IGfEk25nOyAjN0ZCOQor5766ID4gbsOzdTsgIzdGQkEKK+e+uyA+IHFpw6BuZzsgIzdGQkIKK+e+vCA+IGNow6BuOyAjN0ZCQwor5769ID4gecWtOyAjN0ZCRAor576+ID4gZ8Oybmc7ICM3RkJFCivnvr8gPiB5w6w7ICM3RkJGCivnv4AgPiBjaMOzbmc7ICM3RkMwCivnv4EgPiB3xJNuZzsgIzdGQzEKK+e/giA+IGbEk247ICM3RkMyCivnv4MgPiBow7NuZzsgIzdGQzMKK+e/hCA+IGNow6w7ICM3RkM0Civnv4UgPiBjaMOsOyAjN0ZDNQor57+GID4gY8O5aTsgIzdGQzYKK+e/hyA+IGbDujsgIzdGQzcKK+e/iCA+IHhpw6E7ICM3RkM4Civnv4kgPiBwxJVuOyAjN0ZDOQor57+KID4gecOsOyAjN0ZDQQor57+LID4gbMSBOyAjN0ZDQgor57+MID4gecOsOyAjN0ZDQwor57+NID4gcMSrOyAjN0ZDRAor57+OID4gbMOtbmc7ICM3RkNFCivnv48gPiBsw6x1OyAjN0ZDRgor57+QID4gemjDrDsgIzdGRDAKK+e/kSA+IHHDujsgIzdGRDEKK+e/kiA+IHjDrTsgIzdGRDIKK+e/kyA+IHhpw6k7ICM3RkQzCivnv5QgPiB4acOhbmc7ICM3RkQ0Civnv5UgPiB4w6w7ICM3RkQ1Civnv5YgPiB4w6w7ICM3RkQ2Civnv5cgPiBxw607ICM3RkQ3Civnv5ggPiBxacOhbzsgIzdGRDgKK+e/mSA+IGjDuWk7ICM3RkQ5Civnv5ogPiBoxatpOyAjN0ZEQQor57+bID4geGnEgW87ICM3RkRCCivnv5wgPiBzw6g7ICM3RkRDCivnv50gPiBow7NuZzsgIzdGREQKK+e/niA+IGppxIFuZzsgIzdGREUKK+e/nyA+IGTDrTsgIzdGREYKK+e/oCA+IGPDuWk7ICM3RkUwCivnv6EgPiBmxJVpOyAjN0ZFMQor57+iID4gdMSBbzsgIzdGRTIKK+e/oyA+IHNow6A7ICM3RkUzCivnv6QgPiBjaMOsOyAjN0ZFNAor57+lID4gemjDuTsgIzdGRTUKK+e/piA+IGppxINuOyAjN0ZFNgor57+nID4geHXEgW47ICM3RkU3Civnv6ggPiBzaMOsOyAjN0ZFOAor57+pID4gcGnEgW47ICM3RkU5Civnv6ogPiB6xY1uZzsgIzdGRUEKK+e/qyA+IHfDoG47ICM3RkVCCivnv6wgPiBoxatpOyAjN0ZFQwor57+tID4gaMOzdTsgIzdGRUQKK+e/riA+IGjDqTsgIzdGRUUKK+e/ryA+IGjDqDsgIzdGRUYKK+e/sCA+IGjDoG47ICM3RkYwCivnv7EgPiDDoW87ICM3RkYxCivnv7IgPiBwacSBbzsgIzdGRjIKK+e/syA+IHnDrDsgIzdGRjMKK+e/tCA+IGxpw6FuOyAjN0ZGNAor57+1ID4gccO6OyAjN0ZGNQor57+3ID4gbMOtbjsgIzdGRjcKK+e/uCA+IHDElW47ICM3RkY4Civnv7kgPiBxacOhbzsgIzdGRjkKK+e/uiA+IMOhbzsgIzdGRkEKK+e/uyA+IGbEgW47ICM3RkZCCivnv7wgPiB5w6w7ICM3RkZDCivnv70gPiBow7lpOyAjN0ZGRAor57++ID4geHXEgW47ICM3RkZFCivnv78gPiBkw6BvOyAjN0ZGRgor6ICAID4gecOgbzsgIzgwMDAKK+iAgSA+IGzEg287ICM4MDAxCivogIMgPiBrxINvOyAjODAwMwor6ICEID4gbcOgbzsgIzgwMDQKK+iAhSA+IHpoxJU7ICM4MDA1CivogIYgPiBxw607ICM4MDA2CivogIcgPiBnxY91OyAjODAwNwor6ICIID4gZ8WPdTsgIzgwMDgKK+iAiSA+IGfFj3U7ICM4MDA5CivogIogPiBkacOoOyAjODAwQQor6ICLID4gZGnDqDsgIzgwMEIKK+iAjCA+IMOpcjsgIzgwMEMKK+iAjSA+IHNodcSDOyAjODAwRAor6ICOID4gcnXEg247ICM4MDBFCivogI8gPiDDqXI7ICM4MDBGCivogJAgPiBuw6BpOyAjODAxMAor6ICRID4gemh1xIFuOyAjODAxMQor6ICSID4gbMSVaTsgIzgwMTIKK+iAkyA+IHTEq25nOyAjODAxMwor6ICUID4gesStOyAjODAxNAor6ICVID4gZ8STbmc7ICM4MDE1CivogJYgPiBjaMOgbzsgIzgwMTYKK+iAlyA+IGjDoG87ICM4MDE3CivogJggPiB5w7puOyAjODAxOAor6ICZID4gcMOhOyAjODAxOQor6ICaID4gcMSrOyAjODAxQQor6ICbID4gY2jDrTsgIzgwMUIKK+iAnCA+IHPDrDsgIzgwMUMKK+iAnSA+IGNow7o7ICM4MDFECivogJ4gPiBqacSBOyAjODAxRQor6ICfID4gasO5OyAjODAxRgor6ICgID4gaMOpOyAjODAyMAor6IChID4gY2jDujsgIzgwMjEKK+iAoiA+IGzDoG87ICM4MDIyCivogKMgPiBsxa1uOyAjODAyMwor6ICkID4gasOtOyAjODAyNAor6IClID4gdMSDbmc7ICM4MDI1CivogKYgPiDFj3U7ICM4MDI2CivogKcgPiBsw7N1OyAjODAyNwor6ICoID4gbsOydTsgIzgwMjgKK+iAqSA+IGfFjXU7ICM4MDI5CivogKogPiBwxINuZzsgIzgwMkEKK+iAqyA+IHrDqTsgIzgwMkIKK+iArCA+IGzDs3U7ICM4MDJDCivogK0gPiBqxKs7ICM4MDJECivogK4gPiBsw6BvOyAjODAyRQor6ICvID4gaMO5bzsgIzgwMkYKK+iAsCA+IHnFjXU7ICM4MDMwCivogLEgPiBtw7I7ICM4MDMxCivogLIgPiBodcOhaTsgIzgwMzIKK+iAsyA+IMSVcjsgIzgwMzMKK+iAtCA+IHpow6k7ICM4MDM0CivogLUgPiB0xKtuZzsgIzgwMzUKK+iAtiA+IHnDqTsgIzgwMzYKK+iAtyA+IGTEgTsgIzgwMzcKK+iAuCA+IHPFj25nOyAjODAzOAor6IC5ID4gccOtbjsgIzgwMzkKK+iAuiA+IHnDum47ICM4MDNBCivogLsgPiBjaMStOyAjODAzQgor6IC8ID4gZMSBbjsgIzgwM0MKK+iAvSA+IGTEgW47ICM4MDNECivogL4gPiBow7NuZzsgIzgwM0UKK+iAvyA+IGfElW5nOyAjODAzRgor6IGAID4gemjDrTsgIzgwNDAKK+iBgiA+IG5pw6g7ICM4MDQyCivogYMgPiBkxIFuOyAjODA0Mwor6IGEID4gemjElW47ICM4MDQ0CivogYUgPiBjaMOoOyAjODA0NQor6IGGID4gbMOtbmc7ICM4MDQ2CivogYcgPiB6aMSTbmc7ICM4MDQ3CivogYggPiB5xY91OyAjODA0OAor6IGJID4gd8SBOyAjODA0OQor6IGKID4gbGnDoW87ICM4MDRBCivogYsgPiBsw7NuZzsgIzgwNEIKK+iBjCA+IHpow607ICM4MDRDCivogY0gPiBuw61uZzsgIzgwNEQKK+iBjiA+IHRpxIFvOyAjODA0RQor6IGPID4gw6lyOyAjODA0Rgor6IGQID4gecOgOyAjODA1MAor6IGRID4gZGnDqTsgIzgwNTEKK+iBkiA+IGd1xIE7ICM4MDUyCivogZQgPiBsacOhbjsgIzgwNTQKK+iBlSA+IGjDoG87ICM4MDU1CivogZYgPiBzaMOobmc7ICM4MDU2CivogZcgPiBsacOoOyAjODA1Nwor6IGYID4gcMOsbjsgIzgwNTgKK+iBmSA+IGrEq25nOyAjODA1OQor6IGaID4gasO5OyAjODA1QQor6IGbID4gYsOsOyAjODA1Qgor6IGcID4gZMStOyAjODA1Qwor6IGdID4gZ8O6bzsgIzgwNUQKK+iBniA+IHfDqW47ICM4MDVFCivogZ8gPiB4w7k7ICM4MDVGCivogaAgPiBww61uZzsgIzgwNjAKK+iBoSA+IGPFjW5nOyAjODA2MQor6IGkID4gdMOtbmc7ICM4MDY0CivogaUgPiB5xa07ICM4MDY1CivogaYgPiBjxY1uZzsgIzgwNjYKK+iBpyA+IGvDumk7ICM4MDY3CivogakgPiBrw7lpOyAjODA2OQor6IGqID4gY8WNbmc7ICM4MDZBCivogasgPiBsacOhbjsgIzgwNkIKK+iBrCA+IHfElW5nOyAjODA2Qwor6IGtID4ga8O5aTsgIzgwNkQKK+iBriA+IGxpw6FuOyAjODA2RQor6IGvID4gbGnDoW47ICM4MDZGCivogbAgPiBjxY1uZzsgIzgwNzAKK+iBsSA+IMOhbzsgIzgwNzEKK+iBsiA+IHNoxJNuZzsgIzgwNzIKK+iBsyA+IHPFj25nOyAjODA3Mwor6IG0ID4gdMSrbmc7ICM4MDc0CivogbUgPiBrw7lpOyAjODA3NQor6IG2ID4gbmnDqDsgIzgwNzYKK+iBtyA+IHpow607ICM4MDc3CivogbggPiBkxIFuOyAjODA3OAor6IG5ID4gbsOtbmc7ICM4MDc5CivogbogPiBxaWU7ICM4MDdBCivogbsgPiBqxKs7ICM4MDdCCivogbwgPiB0xKtuZzsgIzgwN0MKK+iBvSA+IHTEq25nOyAjODA3RAor6IG+ID4gbMOzbmc7ICM4MDdFCivogb8gPiB5w7k7ICM4MDdGCivogoAgPiB5w7k7ICM4MDgwCivogoEgPiB6aMOgbzsgIzgwODEKK+iCgiA+IHPDrDsgIzgwODIKK+iCgyA+IHPDuTsgIzgwODMKK+iChCA+IHnDrDsgIzgwODQKK+iChSA+IHPDuTsgIzgwODUKK+iChiA+IHPDrDsgIzgwODYKK+iChyA+IHpow6BvOyAjODA4Nwor6IKIID4gemjDoG87ICM4MDg4CivogokgPiByw7J1OyAjODA4OQor6IKKID4gecOsOyAjODA4QQor6IKLID4gbMOoOyAjODA4Qgor6IKMID4gasSrOyAjODA4Qwor6IKNID4gccOtdTsgIzgwOEQKK+iCjiA+IGvElW47ICM4MDhFCivogo8gPiBjw6BvOyAjODA4Rgor6IKQID4gZ8STOyAjODA5MAor6IKRID4gZMOsOyAjODA5MQor6IKSID4gaHXDoW47ICM4MDkyCivogpMgPiBodcSBbmc7ICM4MDkzCivogpQgPiB5xK07ICM4MDk0CivogpUgPiByw6huOyAjODA5NQor6IKWID4geGnDoG87ICM4MDk2CivogpcgPiByxa07ICM4MDk3CivogpggPiB6aMWPdTsgIzgwOTgKK+iCmSA+IHl1xIFuOyAjODA5OQor6IKaID4gZMO5OyAjODA5QQor6IKbID4gZ8SBbmc7ICM4MDlCCivogpwgPiByw7NuZzsgIzgwOUMKK+iCnSA+IGfEgW47ICM4MDlECivogp4gPiBjaMSBOyAjODA5RQor6IKfID4gd8OyOyAjODA5Rgor6IKgID4gY2jDoW5nOyAjODBBMAor6IKhID4gZ8WtOyAjODBBMQor6IKiID4gemjEqzsgIzgwQTIKK+iCoyA+IGjDoW47ICM4MEEzCivogqQgPiBmxas7ICM4MEE0CivogqUgPiBmw6lpOyAjODBBNQor6IKmID4gZsOpbjsgIzgwQTYKK+iCpyA+IHDEk2k7ICM4MEE3CivogqggPiBww6BuZzsgIzgwQTgKK+iCqSA+IGppxIFuOyAjODBBOQor6IKqID4gZsOhbmc7ICM4MEFBCivogqsgPiB6aMWrbjsgIzgwQUIKK+iCrCA+IHnDs3U7ICM4MEFDCivogq0gPiBuw6A7ICM4MEFECivogq4gPiBow6FuZzsgIzgwQUUKK+iCryA+IGvElW47ICM4MEFGCivogrAgPiByw6FuOyAjODBCMAor6IKxID4gZ8WNbmc7ICM4MEIxCivogrIgPiB5w7k7ICM4MEIyCivogrMgPiB3xJVuOyAjODBCMwor6IK0ID4gecOhbzsgIzgwQjQKK+iCtSA+IGrDrG47ICM4MEI1CivogrYgPiBww607ICM4MEI2CivogrcgPiBxacSBbjsgIzgwQjcKK+iCuCA+IHjDrDsgIzgwQjgKK+iCuSA+IHjEqzsgIzgwQjkKK+iCuiA+IGbDqGk7ICM4MEJBCivogrsgPiBrxJVuOyAjODBCQgor6IK8ID4gasStbmc7ICM4MEJDCivogr0gPiB0w6BpOyAjODBCRAor6IK+ID4gc2jDqG47ICM4MEJFCivogr8gPiB6aMWPbmc7ICM4MEJGCivog4AgPiB6aMOgbmc7ICM4MEMwCivog4EgPiB4acOpOyAjODBDMQor6IOCID4gc2jEk247ICM4MEMyCivog4MgPiB3w6hpOyAjODBDMwor6IOEID4gemjDsnU7ICM4MEM0Civog4UgPiBkacOpOyAjODBDNQor6IOGID4gZMSDbjsgIzgwQzYKK+iDhyA+IGbDqGk7ICM4MEM3Civog4ggPiBiw6E7ICM4MEM4Civog4kgPiBiw7M7ICM4MEM5Civog4ogPiBxw7o7ICM4MENBCivog4sgPiB0acOhbjsgIzgwQ0IKK+iDjCA+IGLDqGk7ICM4MENDCivog40gPiBndcSBOyAjODBDRAor6IOOID4gdMSBaTsgIzgwQ0UKK+iDjyA+IHrErTsgIzgwQ0YKK+iDkCA+IGvFqzsgIzgwRDAKK+iDkSA+IHpoxKs7ICM4MEQxCivog5IgPiBuw6w7ICM4MEQyCivog5MgPiBww61uZzsgIzgwRDMKK+iDlCA+IHrDrDsgIzgwRDQKK+iDlSA+IGbDuTsgIzgwRDUKK+iDliA+IHDDoG5nOyAjODBENgor6IOXID4gemjEk247ICM4MEQ3Civog5ggPiB4acOhbjsgIzgwRDgKK+iDmSA+IHrDuW87ICM4MEQ5Civog5ogPiBwxJNpOyAjODBEQQor6IObID4gamnEgzsgIzgwREIKK+iDnCA+IHNow6huZzsgIzgwREMKK+iDnSA+IHpoxKs7ICM4MERECivog54gPiBixIFvOyAjODBERQor6IOfID4gbcWtOyAjODBERgor6IOgID4gccWrOyAjODBFMAor6IOhID4gaMO6OyAjODBFMQor6IOiID4ga8STOyAjODBFMgor6IOjID4gecStOyAjODBFMwor6IOkID4gecOsbjsgIzgwRTQKK+iDpSA+IHjFqzsgIzgwRTUKK+iDpiA+IHnEgW5nOyAjODBFNgor6IOnID4gbMOzbmc7ICM4MEU3Civog6ggPiBkw7JuZzsgIzgwRTgKK+iDqSA+IGvEgzsgIzgwRTkKK+iDqiA+IGzDujsgIzgwRUEKK+iDqyA+IGrDrG5nOyAjODBFQgor6IOsID4gbsWtOyAjODBFQwor6IOtID4gecSBbjsgIzgwRUQKK+iDriA+IHDDoW5nOyAjODBFRQor6IOvID4ga3XDoDsgIzgwRUYKK+iDsCA+IHnDrTsgIzgwRjAKK+iDsSA+IGd1xIFuZzsgIzgwRjEKK+iDsiA+IGfEgWk7ICM4MEYyCivog7MgPiBnxJM7ICM4MEYzCivog7QgPiBkw7JuZzsgIzgwRjQKK+iDtSA+IHpow6w7ICM4MEY1Civog7YgPiB4acOhbzsgIzgwRjYKK+iDtyA+IHjEq29uZzsgIzgwRjcKK+iDuCA+IHjEq29uZzsgIzgwRjgKK+iDuSA+IMOpcjsgIzgwRjkKK+iDuiA+IMOoOyAjODBGQQor6IO7ID4geMOtbmc7ICM4MEZCCivog7wgPiBwacOhbjsgIzgwRkMKK+iDvSA+IG7DqW5nOyAjODBGRAor6IO+ID4gesOsOyAjODBGRQor6IO/ID4gZ3VpOyAjODBGRgor6ISAID4gY2jDqW5nOyAjODEwMAor6ISBID4gdGnDoG87ICM4MTAxCivohIIgPiB6aMSrOyAjODEwMgor6ISDID4gY8O5aTsgIzgxMDMKK+iEhCA+IG3DqWk7ICM4MTA0CivohIUgPiB4acOpOyAjODEwNQor6ISGID4gY8O5aTsgIzgxMDYKK+iEhyA+IHhpw6k7ICM4MTA3CivohIggPiBtw7I7ICM4MTA4CivohIkgPiBtw6BpOyAjODEwOQor6ISKID4gasOtOyAjODEwQQor6ISNID4ga3XDoGk7ICM4MTBECivohI4gPiBzw6A7ICM4MTBFCivohI8gPiB6xIFuZzsgIzgxMEYKK+iEkCA+IHHDrTsgIzgxMTAKK+iEkSA+IG7Eg287ICM4MTExCivohJIgPiBtxK07ICM4MTEyCivohJMgPiBuw7NuZzsgIzgxMTMKK+iElCA+IGx1w6FuOyAjODExNAor6ISVID4gd8SDbjsgIzgxMTUKK+iEliA+IGLDszsgIzgxMTYKK+iElyA+IHfElW47ICM4MTE3CivohJggPiBndcSDbjsgIzgxMTgKK+iEmSA+IHHDrXU7ICM4MTE5CivohJogPiBqacSDbzsgIzgxMUEKK+iEmyA+IGrDrG5nOyAjODExQgor6IScID4gcsOzdTsgIzgxMUMKK+iEnSA+IGjEk25nOyAjODExRAor6ISeID4gY8WtbzsgIzgxMUUKK+iEnyA+IGxpw6g7ICM4MTFGCivohKAgPiBzaMSBbjsgIzgxMjAKK+iEoSA+IHTErW5nOyAjODEyMQor6ISiID4gbcOpaTsgIzgxMjIKK+iEoyA+IGNow7puOyAjODEyMwor6ISkID4gc2jDqG47ICM4MTI0CivohKUgPiB4acOpOyAjODEyNQor6ISmID4gZGU7ICM4MTI2CivohKcgPiB6xatpOyAjODEyNwor6ISoID4gY8O5OyAjODEyOAor6ISpID4geMSrdTsgIzgxMjkKK+iEqiA+IHjDrG47ICM4MTJBCivohKsgPiB0xatvOyAjODEyQgor6ISsID4gcMSBbzsgIzgxMkMKK+iErSA+IGNow6luZzsgIzgxMkQKK+iEriA+IG7ElWk7ICM4MTJFCivohK8gPiBmxa07ICM4MTJGCivohLAgPiBkw7J1OyAjODEzMAor6ISxID4gdMWrbzsgIzgxMzEKK+iEsiA+IG5pw6BvOyAjODEzMgor6IS0ID4gcMStOyAjODEzNAor6IS1ID4gZ8WtOyAjODEzNQor6IS2ID4gZ3XEgTsgIzgxMzYKK+iEtyA+IGzDrDsgIzgxMzcKK+iEuCA+IGxpxINuOyAjODEzOAor6IS5ID4gemjDoG5nOyAjODEzOQor6IS6ID4gY8O5aTsgIzgxM0EKK+iEuyA+IGppw6k7ICM4MTNCCivohLwgPiBsacSDbmc7ICM4MTNDCivohL0gPiB6aMWNdTsgIzgxM0QKK+iEviA+IHDDrTsgIzgxM0UKK+iEvyA+IGJpxIFvOyAjODEzRgor6IWAID4gbMO6bjsgIzgxNDAKK+iFgSA+IHBpw6FuOyAjODE0MQor6IWCID4gZ8O5bzsgIzgxNDIKK+iFgyA+IGvDuWk7ICM4MTQzCivohYQgPiBjaMO6aTsgIzgxNDQKK+iFhSA+IGTDoG47ICM4MTQ1CivohYYgPiB0acSDbjsgIzgxNDYKK+iFhyA+IG7ElWk7ICM4MTQ3CivohYggPiBqxKtuZzsgIzgxNDgKK+iFiSA+IGppxJM7ICM4MTQ5CivohYogPiBsw6A7ICM4MTRBCivohYsgPiB5w6w7ICM4MTRCCivohYwgPiDEgW47ICM4MTRDCivohY0gPiByxJVuOyAjODE0RAor6IWOID4gc2jDqG47ICM4MTRFCivohY8gPiBjaMO5bzsgIzgxNEYKK+iFkCA+IGbFrTsgIzgxNTAKK+iFkSA+IGbFrTsgIzgxNTEKK+iFkiA+IGrFqzsgIzgxNTIKK+iFkyA+IGbDqWk7ICM4MTUzCivohZQgPiBxacSBbmc7ICM4MTU0CivohZUgPiB3w6BuOyAjODE1NQor6IWWID4gZMOybmc7ICM4MTU2CivohZcgPiBww607ICM4MTU3CivohZggPiBnw7pvOyAjODE1OAor6IWZID4gesWNbmc7ICM4MTU5CivohZogPiBkw6xuZzsgIzgxNUEKK+iFmyA+IHfFqzsgIzgxNUIKK+iFnCA+IG3DqWk7ICM4MTVDCivohZ0gPiBydcSDbjsgIzgxNUQKK+iFniA+IHpodcOgbjsgIzgxNUUKK+iFnyA+IHpow6w7ICM4MTVGCivohaAgPiBjw7J1OyAjODE2MAor6IWhID4gZ3XEgTsgIzgxNjEKK+iFoiA+IMWPdTsgIzgxNjIKK+iFoyA+IGTDrDsgIzgxNjMKK+iFpCA+IMSBbjsgIzgxNjQKK+iFpSA+IHjEq25nOyAjODE2NQor6IWmID4gbsSDbzsgIzgxNjYKK+iFpyA+IHnDujsgIzgxNjcKK+iFqCA+IGNodcSDbjsgIzgxNjgKK+iFqSA+IG7Eg247ICM4MTY5CivohaogPiB5w7luOyAjODE2QQor6IWrID4gemjFj25nOyAjODE2Qgor6IWsID4gcsOzdTsgIzgxNkMKK+iFrSA+IMOoOyAjODE2RAor6IWuID4gc8SBaTsgIzgxNkUKK+iFryA+IHTDujsgIzgxNkYKK+iFsCA+IHnEgW87ICM4MTcwCivohbEgPiBqacOgbjsgIzgxNzEKK+iFsiA+IHfElWk7ICM4MTcyCivohbMgPiBqacSDbzsgIzgxNzMKK+iFtCA+IHnDujsgIzgxNzQKK+iFtSA+IGppxIE7ICM4MTc1CivohbYgPiBkdcOgbjsgIzgxNzYKK+iFtyA+IGLDrDsgIzgxNzcKK+iFuCA+IGNow6FuZzsgIzgxNzgKK+iFuSA+IGbDuTsgIzgxNzkKK+iFuiA+IHhpw6BuOyAjODE3QQor6IW7ID4gbsOsOyAjODE3Qgor6IW8ID4gbWnEg247ICM4MTdDCivohb0gPiB3w6A7ICM4MTdECivohb4gPiB0w6luZzsgIzgxN0UKK+iFvyA+IHTFrWk7ICM4MTdGCivohoAgPiBixINuZzsgIzgxODAKK+iGgSA+IHFpxIFuOyAjODE4MQor6IaCID4gbMeaOyAjODE4Mgor6IaDID4gd8OgOyAjODE4Mwor6IaEID4gc8OydTsgIzgxODQKK+iGhSA+IHTDoW5nOyAjODE4NQor6IaGID4gc8O5OyAjODE4Ngor6IaHID4gemjDuWk7ICM4MTg3CivohoggPiBnw6k7ICM4MTg4CivohokgPiB5w6w7ICM4MTg5CivohoogPiBiw7M7ICM4MThBCivohosgPiBsacOhbzsgIzgxOEIKK+iGjCA+IGrDrTsgIzgxOEMKK+iGjSA+IHDDrTsgIzgxOEQKK+iGjiA+IHhpw6k7ICM4MThFCivoho8gPiBnxIFvOyAjODE4Rgor6IaQID4gbMeaOyAjODE5MAor6IaRID4gYsOsbjsgIzgxOTEKK+iGkiA+IG91OyAjODE5Mgor6IaTID4gY2jDoW5nOyAjODE5Mwor6IaUID4gbMO5OyAjODE5NAor6IaVID4gZ8O6bzsgIzgxOTUKK+iGliA+IHDEgW5nOyAjODE5Ngor6IaXID4gY2h1w6FpOyAjODE5Nwor6IaYID4gcGnEg287ICM4MTk4CivohpkgPiBqacSDbmc7ICM4MTk5CivohpogPiBmxas7ICM4MTlBCivohpsgPiB0w6FuZzsgIzgxOUIKK+iGnCA+IG3DsjsgIzgxOUMKK+iGnSA+IHjEqzsgIzgxOUQKK+iGniA+IHpodcSBbjsgIzgxOUUKK+iGnyA+IGzHnDsgIzgxOUYKK+iGoCA+IGppxIFvOyAjODFBMAor6IahID4gecOsbmc7ICM4MUExCivohqIgPiBsx5g7ICM4MUEyCivohqMgPiB6aMOsOyAjODFBMwor6IalID4gY2jFq247ICM4MUE1CivohqYgPiBsacSDbjsgIzgxQTYKK+iGpyA+IHTDs25nOyAjODFBNwor6IaoID4gcMOpbmc7ICM4MUE4CivohqkgPiBuw6w7ICM4MUE5CivohqogPiB6aMOgOyAjODFBQQor6IarID4gbGnDoW87ICM4MUFCCivohqwgPiBjw7lpOyAjODFBQwor6IatID4gZ8WraTsgIzgxQUQKK+iGriA+IHhpxIFvOyAjODFBRQor6IavID4gdMSTbmc7ICM4MUFGCivohrAgPiBmw6FuOyAjODFCMAor6IaxID4gemjDrTsgIzgxQjEKK+iGsiA+IGppxIFvOyAjODFCMgor6IazID4gc2jDoG47ICM4MUIzCivohrQgPiB3w7o7ICM4MUI0CivohrUgPiBjw7lpOyAjODFCNQor6Ia2ID4gcsO5bjsgIzgxQjYKK+iGtyA+IHhpxIFuZzsgIzgxQjcKK+iGuCA+IHPFrWk7ICM4MUI4CivohrkgPiBmw6huOyAjODFCOQor6Ia6ID4gecSrbmc7ICM4MUJBCivohrsgPiB0xINuOyAjODFCQgor6Ia8ID4gemh1xIE7ICM4MUJDCivohr0gPiBkxINuOyAjODFCRAor6Ia+ID4ga3XDoGk7ICM4MUJFCivohr8gPiBuw7NuZzsgIzgxQkYKK+iHgCA+IHTDum47ICM4MUMwCivoh4EgPiBsacOhbjsgIzgxQzEKK+iHgiA+IGLDrDsgIzgxQzIKK+iHgyA+IHnFj25nOyAjODFDMwor6IeEID4ganXDqTsgIzgxQzQKK+iHhSA+IGNow7k7ICM4MUM1Civoh4YgPiB5w6w7ICM4MUM2Civoh4cgPiBqdcSDbjsgIzgxQzcKK+iHiCA+IGzDoDsgIzgxQzgKK+iHiSA+IGxpxINuOyAjODFDOQor6IeKID4gc8SBbzsgIzgxQ0EKK+iHiyA+IHTDum47ICM4MUNCCivoh4wgPiBnxa07ICM4MUNDCivoh40gPiBxw607ICM4MUNECivoh44gPiBjw7lpOyAjODFDRQor6IePID4gYsOsbjsgIzgxQ0YKK+iHkCA+IHjFq247ICM4MUQwCivoh5EgPiByw7o7ICM4MUQxCivoh5IgPiBow7lvOyAjODFEMgor6IeTID4gesOgbmc7ICM4MUQzCivoh5QgPiB4acOgbjsgIzgxRDQKK+iHlSA+IGJpxIFvOyAjODFENQor6IeWID4geMOsbmc7ICM4MUQ2Civoh5cgPiBrdcSBbjsgIzgxRDcKK+iHmCA+IGzDoDsgIzgxRDgKK+iHmSA+IHnEgW47ICM4MUQ5Civoh5ogPiBsw7o7ICM4MURBCivoh5sgPiBow7lvOyAjODFEQgor6IecID4gesSBbmc7ICM4MURDCivoh50gPiBsxa1vOyAjODFERAor6IeeID4gccO6OyAjODFERQor6IefID4gesOgbmc7ICM4MURGCivoh6AgPiBsdcOhbjsgIzgxRTAKK+iHoSA+IG7DrTsgIzgxRTEKK+iHoiA+IHrEgW5nOyAjODFFMgor6IejID4gY2jDqW47ICM4MUUzCivoh6QgPiBxacSBbjsgIzgxRTQKK+iHpSA+IHfDsjsgIzgxRTUKK+iHpiA+IGd1w6BuZzsgIzgxRTYKK+iHpyA+IHrDoW5nOyAjODFFNwor6IeoID4gbMOtbjsgIzgxRTgKK+iHqSA+IGd1w6BuZzsgIzgxRTkKK+iHqiA+IHrDrDsgIzgxRUEKK+iHqyA+IGppxINvOyAjODFFQgor6IesID4gbmnDqDsgIzgxRUMKK+iHrSA+IGNow7J1OyAjODFFRAor6IeuID4gasOsOyAjODFFRQor6IevID4gZ8SBbzsgIzgxRUYKK+iHsCA+IGNow7J1OyAjODFGMAor6IexID4gbWnDoW47ICM4MUYxCivoh7IgPiBuacOoOyAjODFGMgor6IezID4gemjDrDsgIzgxRjMKK+iHtCA+IHpow6w7ICM4MUY0Civoh7UgPiBnw6k7ICM4MUY1Civoh7YgPiBqacOgbjsgIzgxRjYKK+iHtyA+IGRpw6k7ICM4MUY3Civoh7ggPiB6aMOsOyAjODFGOAor6Ie5ID4geMSrdTsgIzgxRjkKK+iHuiA+IHTDoWk7ICM4MUZBCivoh7sgPiB6aMSTbjsgIzgxRkIKK+iHvCA+IGrDrHU7ICM4MUZDCivoh70gPiB4acOgbjsgIzgxRkQKK+iHviA+IHnDujsgIzgxRkUKK+iHvyA+IGNoxIE7ICM4MUZGCivoiIAgPiB5xINvOyAjODIwMAor6IiBID4gecO6OyAjODIwMQor6IiCID4gY2jFjW5nOyAjODIwMgor6IiDID4geMOsOyAjODIwMwor6IiEID4geMOsOyAjODIwNAor6IiFID4gasOsdTsgIzgyMDUKK+iIhiA+IHnDujsgIzgyMDYKK+iIhyA+IHnFrTsgIzgyMDcKK+iIiCA+IHjEq25nOyAjODIwOAor6IiJID4gasWtOyAjODIwOQor6IiKID4gasOsdTsgIzgyMEEKK+iIiyA+IHjDrG47ICM4MjBCCivoiIwgPiBzaMOpOyAjODIwQwor6IiNID4gc2jDqDsgIzgyMEQKK+iIjyA+IGrErXU7ICM4MjBGCivoiJAgPiBzaMOsOyAjODIxMAor6IiRID4gdMSBbjsgIzgyMTEKK+iIkiA+IHNoxas7ICM4MjEyCivoiJMgPiBzaMOsOyAjODIxMwor6IiUID4gdGnEg247ICM4MjE0CivoiJUgPiBkw6BuOyAjODIxNQor6IiWID4gcMO5OyAjODIxNgor6IiXID4gcMO5OyAjODIxNwor6IiYID4gZ3XEg247ICM4MjE4CivoiJkgPiBodcOgOyAjODIxOQor6IiaID4gdMSBbjsgIzgyMUEKK+iImyA+IGNodcSDbjsgIzgyMUIKK+iInCA+IHNow7luOyAjODIxQwor6IidID4geGnDoTsgIzgyMUQKK+iIniA+IHfFrTsgIzgyMUUKK+iInyA+IHpoxY11OyAjODIxRgor6IigID4gZMSBbzsgIzgyMjAKK+iIoSA+IGfEgW5nOyAjODIyMQor6IiiID4gc2jEgW47ICM4MjIyCivoiKMgPiB5xK07ICM4MjIzCivoiKUgPiBwxIE7ICM4MjI1CivoiKYgPiB0w6BpOyAjODIyNgor6IinID4gZsOhbjsgIzgyMjcKK+iIqCA+IGLEg247ICM4MjI4CivoiKkgPiBjaHXDoW47ICM4MjI5CivoiKogPiBow6FuZzsgIzgyMkEKK+iIqyA+IGbEg25nOyAjODIyQgor6IisID4gYsSBbjsgIzgyMkMKK+iIrSA+IHF1w6g7ICM4MjJECivoiK8gPiB6aMWNbmc7ICM4MjJGCivoiLAgPiBqacOgbjsgIzgyMzAKK+iIsSA+IGPEgW5nOyAjODIzMQor6IiyID4gbMOtbmc7ICM4MjMyCivoiLMgPiB6aMO6OyAjODIzMwor6Ii0ID4gesOpOyAjODIzNAor6Ii1ID4gZMO5bzsgIzgyMzUKK+iItiA+IGLDszsgIzgyMzYKK+iItyA+IHhpw6FuOyAjODIzNwor6Ii4ID4gZ8SVOyAjODIzOAor6Ii5ID4gY2h1w6FuOyAjODIzOQor6Ii6ID4gamnDoTsgIzgyM0EKK+iIuyA+IGzFrTsgIzgyM0IKK+iIvCA+IGjDs25nOyAjODIzQwor6Ii9ID4gcMOhbmc7ICM4MjNECivoiL4gPiB4xKs7ICM4MjNFCivoiYAgPiBmw7o7ICM4MjQwCivoiYEgPiB6w6BvOyAjODI0MQor6ImCID4gZsOpbmc7ICM4MjQyCivoiYMgPiBsw607ICM4MjQzCivoiYQgPiBzaMSBbzsgIzgyNDQKK+iJhSA+IHnDujsgIzgyNDUKK+iJhiA+IGzDoW5nOyAjODI0Ngor6ImHID4gdMStbmc7ICM4MjQ3CivoiYkgPiB3xJVpOyAjODI0OQor6ImKID4gYsOzOyAjODI0QQor6ImLID4gbcSVbmc7ICM4MjRCCivoiYwgPiBuacOgbjsgIzgyNEMKK+iJjSA+IGrFqzsgIzgyNEQKK+iJjiA+IGh1w6FuZzsgIzgyNEUKK+iJjyA+IHNoxY91OyAjODI0Rgor6ImQID4gesWNbmc7ICM4MjUwCivoiZEgPiBiacOgbjsgIzgyNTEKK+iJkiA+IG3DoG87ICM4MjUyCivoiZMgPiBkacOpOyAjODI1Mwor6ImVID4gYsOgbmc7ICM4MjU1CivoiZYgPiBjaMSBOyAjODI1Ngor6ImXID4gecOsOyAjODI1Nwor6ImYID4gc8SBbzsgIzgyNTgKK+iJmSA+IGPEgW5nOyAjODI1OQor6ImaID4gY8OhbzsgIzgyNUEKK+iJmyA+IGzDs3U7ICM4MjVCCivoiZwgPiBkw6BpOyAjODI1Qwor6ImeID4gecOgbzsgIzgyNUUKK+iJnyA+IHTDs25nOyAjODI1Rgor6ImhID4gZMSBbmc7ICM4MjYxCivoiaIgPiB0w6FuOyAjODI2Mgor6ImjID4gbMWtOyAjODI2Mwor6ImkID4gecStOyAjODI2NAor6ImlID4gamnDqDsgIzgyNjUKK+iJpiA+IGppw6BuOyAjODI2Ngor6ImnID4gaMO5bzsgIzgyNjcKK+iJqCA+IG3DqW5nOyAjODI2OAor6ImpID4gccOtOyAjODI2OQor6ImqID4gbMWtOyAjODI2QQor6ImrID4gbMO6OyAjODI2Qgor6ImsID4gY2jDoW47ICM4MjZDCivoia0gPiBzaHXEgW5nOyAjODI2RAor6ImuID4gZ8OobjsgIzgyNkUKK+iJryA+IGxpw6FuZzsgIzgyNkYKK+iJsCA+IGppxIFuOyAjODI3MAor6ImxID4gamnEgW47ICM4MjcxCivoibIgPiBzw6g7ICM4MjcyCivoibMgPiB5w6BuOyAjODI3Mwor6Im0ID4gZsO6OyAjODI3NAor6Im1ID4gcMOtbmc7ICM4Mjc1CivoibYgPiB5w6BuOyAjODI3Ngor6Im3ID4gecOgbjsgIzgyNzcKK+iJuCA+IGPEg287ICM4Mjc4CivoibkgPiBjxINvJyAnesOsJyAndMOzdTsgIzgyNzkKK+iJuiA+IHnDrDsgIzgyN0EKK+iJuyA+IGzDqDsgIzgyN0IKK+iJvCA+IHTEq25nOyAjODI3Qwor6Im9ID4gccOtdTsgIzgyN0QKK+iJviA+IMOgaTsgIzgyN0UKK+iJvyA+IG7Eg2k7ICM4MjdGCivoioAgPiB0acOhbzsgIzgyODAKK+iKgSA+IGppxIFvOyAjODI4MQor6IqCID4gamnDqTsgIzgyODIKK+iKgyA+IHDDqW5nOyAjODI4Mwor6IqEID4gd8OhbjsgIzgyODQKK+iKhSA+IHnDrDsgIzgyODUKK+iKhiA+IGNoxIFpOyAjODI4Ngor6IqHID4gbWnDoW47ICM4Mjg3CivoioggPiBtacSTOyAjODI4OAor6IqJID4gZ8SBbjsgIzgyODkKK+iKiiA+IHFpxIFuOyAjODI4QQor6IqLID4gecO5OyAjODI4Qgor6IqMID4gecO5OyAjODI4Qwor6IqNID4gc2jDuW87ICM4MjhECivoio4gPiBxxKtvbmc7ICM4MjhFCivoio8gPiB0xa07ICM4MjhGCivoipAgPiB4acOgOyAjODI5MAor6IqRID4gccStOyAjODI5MQor6IqSID4gbcOhbmc7ICM4MjkyCivoipMgPiB6xK07ICM4MjkzCivoipQgPiBoxa1pOyAjODI5NAor6IqVID4gc8WraTsgIzgyOTUKK+iKliA+IHpow6w7ICM4Mjk2CivoipcgPiB4acSBbmc7ICM4Mjk3CivoipggPiBixKs7ICM4Mjk4CivoipkgPiBmw7o7ICM4Mjk5CivoipogPiB0w7puOyAjODI5QQor6IqbID4gd8SVaTsgIzgyOUIKK+iKnCA+IHfDujsgIzgyOUMKK+iKnSA+IHpoxKs7ICM4MjlECivoip4gPiBxxK07ICM4MjlFCivoip8gPiBzaMSBbjsgIzgyOUYKK+iKoCA+IHfDqW47ICM4MkEwCivoiqEgPiBxacOgbjsgIzgyQTEKK+iKoiA+IHLDqW47ICM4MkEyCivoiqMgPiBmxY91OyAjODJBMwor6IqkID4ga8WNdTsgIzgyQTQKK+iKpSA+IGppw6g7ICM4MkE1CivoiqYgPiBsw7o7ICM4MkE2CivoiqcgPiB4w7k7ICM4MkE3CivoiqggPiBqw607ICM4MkE4CivoiqkgPiBxw61uOyAjODJBOQor6IqqID4gccOtOyAjODJBQQor6IqrID4geXXDoW47ICM4MkFCCivoiqwgPiBmxJNuOyAjODJBQwor6IqtID4gYsSBOyAjODJBRAor6IquID4gcsO5aTsgIzgyQUUKK+iKryA+IHjEq247ICM4MkFGCivoirAgPiBqw6w7ICM4MkIwCivoirEgPiBodcSBOyAjODJCMQor6IqyID4gaHXEgTsgIzgyQjIKK+iKsyA+IGbEgW5nOyAjODJCMwor6Iq0ID4gd8O5OyAjODJCNAor6Iq1ID4ganXDqTsgIzgyQjUKK+iKtiA+IGfFjXU7ICM4MkI2CivoircgPiB6aMStOyAjODJCNwor6Iq4ID4gecO6bjsgIzgyQjgKK+iKuSA+IHHDrW47ICM4MkI5CivoirogPiDEg287ICM4MkJBCivoirsgPiBjaMO6OyAjODJCQgor6Iq8ID4gbcOgbzsgIzgyQkMKK+iKvSA+IHnDoTsgIzgyQkQKK+iKviA+IGbDqGk7ICM4MkJFCivoir8gPiByw6huZzsgIzgyQkYKK+iLgCA+IGjDoW5nOyAjODJDMAor6IuBID4gY8WNbmc7ICM4MkMxCivoi4IgPiB5w61uOyAjODJDMgor6IuDID4gecWPdTsgIzgyQzMKK+iLhCA+IGJpw6BuOyAjODJDNAor6IuFID4gecOsOyAjODJDNQor6IuHID4gd8SVaTsgIzgyQzcKK+iLiCA+IGzDrDsgIzgyQzgKK+iLiSA+IHDErTsgIzgyQzkKK+iLiiA+IMOoOyAjODJDQQor6IuLID4geGnDoG47ICM4MkNCCivoi4wgPiBjaMOhbmc7ICM4MkNDCivoi40gPiBjxIFuZzsgIzgyQ0QKK+iLjiA+IG3DqW5nOyAjODJDRQor6IuPID4gc8WrOyAjODJDRgor6IuQID4gecOtOyAjODJEMAor6IuRID4geXXDoG47ICM4MkQxCivoi5IgPiByxINuOyAjODJEMgor6IuTID4gbMOtbmc7ICM4MkQzCivoi5QgPiB0w6FpOyAjODJENAor6IuVID4gdGnDoW87ICM4MkQ1Civoi5YgPiBkxK07ICM4MkQ2Civoi5cgPiBtacOhbzsgIzgyRDcKK+iLmCA+IHHErW9uZzsgIzgyRDgKK+iLmSA+IGzDrDsgIzgyRDkKK+iLmiA+IHnDsm5nOyAjODJEQQor6IubID4ga8STOyAjODJEQgor6IucID4gbcO5OyAjODJEQwor6IudID4gcMOoaTsgIzgyREQKK+iLniA+IGLEgW87ICM4MkRFCivoi58gPiBnxY91OyAjODJERgor6IugID4gbcOtbjsgIzgyRTAKK+iLoSA+IHnErTsgIzgyRTEKK+iLoiA+IHnErTsgIzgyRTIKK+iLoyA+IGrDuTsgIzgyRTMKK+iLpCA+IHDErTsgIzgyRTQKK+iLpSA+IHLDuW87ICM4MkU1Civoi6YgPiBrxa07ICM4MkU2Civoi6cgPiB6aMO5OyAjODJFNwor6IuoID4gbsStOyAjODJFOAor6IupID4gYsOzOyAjODJFOQor6IuqID4gYsStbmc7ICM4MkVBCivoi6sgPiBzaMSBbjsgIzgyRUIKK+iLrCA+IHHDrXU7ICM4MkVDCivoi60gPiB5xINvOyAjODJFRAor6IuuID4geGnEgW47ICM4MkVFCivoi68gPiBixJVuOyAjODJFRgor6IuwID4gaMOzbmc7ICM4MkYwCivoi7EgPiB5xKtuZzsgIzgyRjEKK+iLsiA+IHpoxIM7ICM4MkYyCivoi7MgPiBkxY1uZzsgIzgyRjMKK+iLtCA+IGrFqzsgIzgyRjQKK+iLtSA+IGRpw6k7ICM4MkY1Civoi7YgPiBuacOpOyAjODJGNgor6Iu3ID4gZ8SBbjsgIzgyRjcKK+iLuCA+IGjFqzsgIzgyRjgKK+iLuSA+IHDDrW5nOyAjODJGOQor6Iu6ID4gbcOpaTsgIzgyRkEKK+iLuyA+IGbDujsgIzgyRkIKK+iLvCA+IHNoxJNuZzsgIzgyRkMKK+iLvSA+IGfFqzsgIzgyRkQKK+iLviA+IGLDrDsgIzgyRkUKK+iLvyA+IHfDqGk7ICM4MkZGCivojIAgPiBmw7o7ICM4MzAwCivojIEgPiB6aMO6bzsgIzgzMDEKK+iMgiA+IG3DoG87ICM4MzAyCivojIMgPiBmw6BuOyAjODMwMwor6IyEID4gcWnDqTsgIzgzMDQKK+iMhSA+IG3DoW87ICM4MzA1CivojIYgPiBtxINvOyAjODMwNgor6IyHID4gYsOhOyAjODMwNwor6IyIID4gesStOyAjODMwOAor6IyJID4gbcOyOyAjODMwOQor6IyKID4gesSrOyAjODMwQQor6IyLID4gZMStOyAjODMwQgor6IyMID4gY2jDrTsgIzgzMEMKK+iMjSA+IGrDrDsgIzgzMEQKK+iMjiA+IGrEq25nOyAjODMwRQor6IyPID4gbMOzbmc7ICM4MzBGCivojJEgPiBuacSDbzsgIzgzMTEKK+iMkyA+IHh1w6k7ICM4MzEzCivojJQgPiB5w61uZzsgIzgzMTQKK+iMlSA+IHHDrW9uZzsgIzgzMTUKK+iMliA+IGfDqTsgIzgzMTYKK+iMlyA+IG3ErW5nOyAjODMxNwor6IyYID4gbMOsOyAjODMxOAor6IyZID4gcsOzbmc7ICM4MzE5CivojJogPiB5w6xuOyAjODMxQQor6IybID4gZ8OobjsgIzgzMUIKK+iMnCA+IHFpw6BuOyAjODMxQwor6IydID4gY2jEg2k7ICM4MzFECivojJ4gPiBjaMOpbjsgIzgzMUUKK+iMnyA+IHnDuTsgIzgzMUYKK+iMoCA+IHjEq3U7ICM4MzIwCivojKEgPiB6w6w7ICM4MzIxCivojKIgPiBsacOoOyAjODMyMgor6IyjID4gd8O6OyAjODMyMwor6IykID4gasOsOyAjODMyNAor6IylID4ga8WraTsgIzgzMjUKK+iMpiA+IGPDqDsgIzgzMjYKK+iMpyA+IGNow7NuZzsgIzgzMjcKK+iMqCA+IGPDrTsgIzgzMjgKK+iMqSA+IGfFj3U7ICM4MzI5CivojKogPiBndcSBbmc7ICM4MzJBCivojKsgPiBtw6FuZzsgIzgzMkIKK+iMrCA+IGNow607ICM4MzJDCivojK0gPiBqacSBbzsgIzgzMkQKK+iMriA+IGppxIFvOyAjODMyRQor6IyvID4gZsO6OyAjODMyRgor6IywID4gecO6OyAjODMzMAor6IyxID4gemjFqzsgIzgzMzEKK+iMsiA+IHrEqzsgIzgzMzIKK+iMsyA+IGppxIFuZzsgIzgzMzMKK+iMtCA+IGjDumk7ICM4MzM0CivojLUgPiB5xKtuOyAjODMzNQor6Iy2ID4gY2jDoTsgIzgzMzYKK+iMtyA+IGbDoTsgIzgzMzcKK+iMuCA+IHLDs25nOyAjODMzOAor6Iy5ID4gcsO6OyAjODMzOQor6Iy6ID4gY2jFjW5nOyAjODMzQQor6Iy7ID4gbcSDbmc7ICM4MzNCCivojLwgPiB0w7NuZzsgIzgzM0MKK+iMvSA+IHpow7JuZzsgIzgzM0QKK+iMvyA+IHpow7o7ICM4MzNGCivojYAgPiB4w7puOyAjODM0MAor6I2BID4gaHXDoW47ICM4MzQxCivojYIgPiBrdcSBOyAjODM0Mgor6I2DID4gcXXDoW47ICM4MzQzCivojYQgPiBnxIFpOyAjODM0NAor6I2FID4gZMSBOyAjODM0NQor6I2GID4gasSrbmc7ICM4MzQ2CivojYcgPiB4w6xuZzsgIzgzNDcKK+iNiCA+IHF1w6BuOyAjODM0OAor6I2JID4gY8SDbzsgIzgzNDkKK+iNiiA+IGrEq25nOyAjODM0QQor6I2LID4gw6lyOyAjODM0Qgor6I2MID4gw6BuOyAjODM0Qwor6I2NID4gc2jFjXU7ICM4MzRECivojY4gPiBjaMOtOyAjODM0RQor6I2PID4gcsSVbjsgIzgzNEYKK+iNkCA+IGppw6BuOyAjODM1MAor6I2RID4gdMOtOyAjODM1MQor6I2SID4gaHXEgW5nOyAjODM1Mgor6I2TID4gcMOtbmc7ICM4MzUzCivojZQgPiBsw6w7ICM4MzU0CivojZUgPiBqxKtuOyAjODM1NQor6I2WID4gbMSDbzsgIzgzNTYKK+iNlyA+IHNow7k7ICM4MzU3CivojZggPiB6aHXEgW5nOyAjODM1OAor6I2ZID4gZMOhOyAjODM1OQor6I2aID4gamnDoTsgIzgzNUEKK+iNmyA+IHLDoW87ICM4MzVCCivojZwgPiBiw6w7ICM4MzVDCivojZ0gPiB6w6k7ICM4MzVECivojZ4gPiBxacOhbzsgIzgzNUUKK+iNnyA+IGjDuWk7ICM4MzVGCivojaAgPiBxw607ICM4MzYwCivojaEgPiBkw6BuZzsgIzgzNjEKK+iNoyA+IHLDs25nOyAjODM2Mwor6I2kID4gaMWrbjsgIzgzNjQKK+iNpSA+IHnDrW5nOyAjODM2NQor6I2mID4gbMO5bzsgIzgzNjYKK+iNpyA+IHnDrW5nOyAjODM2Nwor6I2oID4geMO6bjsgIzgzNjgKK+iNqSA+IGrDrG47ICM4MzY5CivojaogPiBzxatuOyAjODM2QQor6I2rID4gecOsbjsgIzgzNkIKK+iNrCA+IG3Eg2k7ICM4MzZDCivoja0gPiBow7NuZzsgIzgzNkQKK+iNriA+IHpow7J1OyAjODM2RQor6I2vID4gecOgbzsgIzgzNkYKK+iNsCA+IGTDuTsgIzgzNzAKK+iNsSA+IHfElWk7ICM4MzcxCivojbIgPiBjaMO5OyAjODM3Mgor6I2zID4gZMOydTsgIzgzNzMKK+iNtCA+IGbFqzsgIzgzNzQKK+iNtSA+IHLElW47ICM4Mzc1CivojbYgPiB5w61uOyAjODM3Ngor6I23ID4gaMOpOyAjODM3Nwor6I24ID4gYsOtOyAjODM3OAor6I25ID4gYsO5OyAjODM3OQor6I26ID4gecO6bjsgIzgzN0EKK+iNuyA+IGTDrTsgIzgzN0IKK+iNvCA+IHTDujsgIzgzN0MKK+iNvSA+IHPFq2k7ICM4MzdECivojb4gPiBzxatpOyAjODM3RQor6I2/ID4gY2jDqW5nOyAjODM3Rgor6I6AID4gY2jDqW47ICM4MzgwCivojoEgPiB3w7o7ICM4MzgxCivojoIgPiBiacOpOyAjODM4Mgor6I6DID4geMSrOyAjODM4Mwor6I6EID4gZ8SVbmc7ICM4Mzg0CivojoUgPiBsw6w7ICM4Mzg1CivojoYgPiBmxa07ICM4Mzg2CivojocgPiB6aMO5OyAjODM4Nwor6I6IID4gbcOyOyAjODM4OAor6I6JID4gbMOsOyAjODM4OQor6I6KID4gemh1xIFuZzsgIzgzOEEKK+iOiyA+IGrDrTsgIzgzOEIKK+iOjCA+IGTDum87ICM4MzhDCivojo0gPiBxw611OyAjODM4RAor6I6OID4gc2jEgTsgIzgzOEUKK+iOjyA+IHPFq287ICM4MzhGCivojpAgPiBjaMOpbjsgIzgzOTAKK+iOkSA+IGbEk25nOyAjODM5MQor6I6SID4gasWtOyAjODM5Mgor6I6TID4gbcOpaTsgIzgzOTMKK+iOlCA+IG3DqW5nOyAjODM5NAor6I6VID4geMOsbmc7ICM4Mzk1CivojpYgPiBqxKtuZzsgIzgzOTYKK+iOlyA+IGNoxJM7ICM4Mzk3CivojpggPiB4xKtuOyAjODM5OAor6I6ZID4gasWrbjsgIzgzOTkKK+iOmiA+IHnDoW47ICM4MzlBCivojpsgPiB0w61uZzsgIzgzOUIKK+iOnCA+IGRpw6BvOyAjODM5Qwor6I6dID4gY8O5bzsgIzgzOUQKK+iOniA+IHfEg247ICM4MzlFCivojp8gPiBow6BuOyAjODM5Rgor6I6gID4gecWPdTsgIzgzQTAKK+iOoSA+IGPDuW87ICM4M0ExCivojqIgPiBqacOhOyAjODNBMgor6I6jID4gd8Ohbmc7ICM4M0EzCivojqQgPiB5w7N1OyAjODNBNAor6I6lID4gbsStdTsgIzgzQTUKK+iOpiA+IHNoxIFvOyAjODNBNgor6I6nID4geGnDoG47ICM4M0E3CivojqggPiBsw6FuZzsgIzgzQTgKK+iOqSA+IGbDujsgIzgzQTkKK+iOqiA+IMOpOyAjODNBQQor6I6rID4gbcOyOyAjODNBQgor6I6sID4gd8OobjsgIzgzQUMKK+iOrSA+IGppw6k7ICM4M0FECivojq4gPiBuw6FuOyAjODNBRQor6I6vID4gbcO5OyAjODNBRgor6I6wID4ga8SDbjsgIzgzQjAKK+iOsSA+IGzDoWk7ICM4M0IxCivojrIgPiBsacOhbjsgIzgzQjIKK+iOsyA+IHNow607ICM4M0IzCivojrQgPiB3xY07ICM4M0I0CivojrYgPiBsacSDbjsgIzgzQjYKK+iOtyA+IGjDuW87ICM4M0I3CivojrggPiB5w7N1OyAjODNCOAor6I65ID4gecOtbmc7ICM4M0I5CivojrogPiB5xKtuZzsgIzgzQkEKK+iOvCA+IGNow7puOyAjODNCQwor6I69ID4gbcSDbmc7ICM4M0JECivojr4gPiBtxINuZzsgIzgzQkUKK+iOvyA+IGPDrDsgIzgzQkYKK+iPgCA+IHfEg247ICM4M0MwCivoj4EgPiBqxKtuZzsgIzgzQzEKK+iPgiA+IGTEqzsgIzgzQzIKK+iPgyA+IHHDujsgIzgzQzMKK+iPhCA+IGTFjW5nOyAjODNDNAor6I+FID4gamnEgW47ICM4M0M1Civoj4YgPiB6xY11OyAjODNDNgor6I+HID4gZ8WrOyAjODNDNwor6I+IID4gbMSBOyAjODNDOAor6I+JID4gbMO5OyAjODNDOQor6I+KID4gasO6OyAjODNDQQor6I+LID4gd8OoaTsgIzgzQ0IKK+iPjCA+IGrDuW47ICM4M0NDCivoj40gPiBuacOoOyAjODNDRAor6I+OID4ga8WrbjsgIzgzQ0UKK+iPjyA+IGjDqTsgIzgzQ0YKK+iPkCA+IHDDujsgIzgzRDAKK+iPkSA+IHrEqzsgIzgzRDEKK+iPkiA+IGfEg287ICM4M0QyCivoj5MgPiBnxa1vOyAjODNEMwor6I+UID4gZsO6OyAjODNENAor6I+VID4gbMO6bjsgIzgzRDUKK+iPliA+IGNoxIFuZzsgIzgzRDYKK+iPlyA+IGNow7N1OyAjODNENwor6I+YID4gc8WNbmc7ICM4M0Q4Civoj5kgPiBjaMO6aTsgIzgzRDkKK+iPmiA+IHpow6BuOyAjODNEQQor6I+bID4gbcOpbjsgIzgzREIKK+iPnCA+IGPDoGk7ICM4M0RDCivoj50gPiBiw6E7ICM4M0RECivoj54gPiBsw607ICM4M0RFCivoj58gPiB0w7k7ICM4M0RGCivoj6AgPiBixY07ICM4M0UwCivoj6EgPiBow6BuOyAjODNFMQor6I+iID4gYsOgbzsgIzgzRTIKK+iPoyA+IHHDrG47ICM4M0UzCivoj6QgPiBqdcSDbjsgIzgzRTQKK+iPpSA+IHjEqzsgIzgzRTUKK+iPpiA+IHHDrW47ICM4M0U2Civoj6cgPiBkxK07ICM4M0U3Civoj6ggPiBqacSTOyAjODNFOAor6I+pID4gcMO6OyAjODNFOQor6I+qID4gZMOgbmc7ICM4M0VBCivoj6sgPiBqxK1uOyAjODNFQgor6I+sID4gemjEg287ICM4M0VDCivoj60gPiB0w6FpOyAjODNFRAor6I+uID4gZ8STbmc7ICM4M0VFCivoj68gPiBodcOhOyAjODNFRgor6I+wID4gZ8WrOyAjODNGMAor6I+xID4gbMOtbmc7ICM4M0YxCivoj7IgPiBmxJNpOyAjODNGMgor6I+zID4gasSrbjsgIzgzRjMKK+iPtCA+IMSBbjsgIzgzRjQKK+iPtSA+IHfEg25nOyAjODNGNQor6I+2ID4gYsSVbmc7ICM4M0Y2Civoj7cgPiB6aMWPdTsgIzgzRjcKK+iPuCA+IHnEgW47ICM4M0Y4Civoj7kgPiBqxas7ICM4M0Y5Civoj7ogPiBqacSBbjsgIzgzRkEKK+iPuyA+IGzErW47ICM4M0ZCCivoj7wgPiB0xINuOyAjODNGQwor6I+9ID4gc2jDujsgIzgzRkQKK+iPviA+IHRpw6FuOyAjODNGRQor6I+/ID4gZMOgbzsgIzgzRkYKK+iQgCA+IGjFrTsgIzg0MDAKK+iQgSA+IHHDrTsgIzg0MDEKK+iQgiA+IGjDqTsgIzg0MDIKK+iQgyA+IGPDuWk7ICM4NDAzCivokIQgPiB0w6FvOyAjODQwNAor6JCFID4gY2jFq247ICM4NDA1CivokIYgPiBixJNpOyAjODQwNgor6JCHID4gY2jDoW5nOyAjODQwNwor6JCIID4gaHXDoW47ICM4NDA4CivokIkgPiBmw6lpOyAjODQwOQor6JCKID4gbMOhaTsgIzg0MEEKK+iQiyA+IHHEqzsgIzg0MEIKK+iQjCA+IG3DqW5nOyAjODQwQwor6JCNID4gcMOtbmc7ICM4NDBECivokI4gPiB3xJNpOyAjODQwRQor6JCPID4gZMOgbjsgIzg0MEYKK+iQkCA+IHNow6A7ICM4NDEwCivokJEgPiBodcOhbjsgIzg0MTEKK+iQkiA+IHnEg247ICM4NDEyCivokJMgPiB5w607ICM4NDEzCivokJQgPiB0acOhbzsgIzg0MTQKK+iQlSA+IHHDrTsgIzg0MTUKK+iQliA+IHfEg247ICM4NDE2CivokJcgPiBjw6g7ICM4NDE3CivokJggPiBuw6BpOyAjODQxOAor6JCaID4gdMO5bzsgIzg0MUEKK+iQmyA+IGrEq3U7ICM4NDFCCivokJwgPiB0acSTOyAjODQxQwor6JCdID4gbMO6bzsgIzg0MUQKK+iQoCA+IG3DqW5nOyAjODQyMAor6JCkID4gecOtbmc7ICM4NDI0CivokKUgPiB5w61uZzsgIzg0MjUKK+iQpiA+IHnDrW5nOyAjODQyNgor6JCnID4geGnEgW87ICM4NDI3CivokKggPiBzw6A7ICM4NDI4CivokKkgPiBxxKt1OyAjODQyOQor6JCqID4ga8STOyAjODQyQQor6JCrID4geGnDoG5nOyAjODQyQgor6JCsID4gd8OgbjsgIzg0MkMKK+iQrSA+IHnFrTsgIzg0MkQKK+iQriA+IHnDuTsgIzg0MkUKK+iQryA+IGbDuTsgIzg0MkYKK+iQsCA+IGxpw6BuOyAjODQzMAor6JCxID4geHXEgW47ICM4NDMxCivokLIgPiB5dcOhbjsgIzg0MzIKK+iQsyA+IG7DoW47ICM4NDMzCivokLQgPiB6w6k7ICM4NDM0CivokLUgPiB3xY07ICM4NDM1CivokLYgPiBjaMWtbjsgIzg0MzYKK+iQtyA+IHhpxIFvOyAjODQzNwor6JC4ID4gecO6OyAjODQzOAor6JC5ID4gcGnEgW47ICM4NDM5CivokLogPiBtw6BvOyAjODQzQQor6JC7ID4gxIFuOyAjODQzQgor6JC8ID4gw6g7ICM4NDNDCivokL0gPiBsw7lvOyAjODQzRAor6JC+ID4gecOtbmc7ICM4NDNFCivokL8gPiBow7pvOyAjODQzRgor6JGAID4gZ3XEgTsgIzg0NDAKK+iRgSA+IGppxIFuZzsgIzg0NDEKK+iRgiA+IG1pxINuOyAjODQ0Mgor6JGDID4gesO6bzsgIzg0NDMKK+iRhCA+IHrDuW87ICM4NDQ0CivokYUgPiBqxas7ICM4NDQ1CivokYYgPiBixINvOyAjODQ0Ngor6JGHID4gcsOzdTsgIzg0NDcKK+iRiCA+IHjErTsgIzg0NDgKK+iRiSA+IHhpw6k7ICM4NDQ5CivokYogPiDEgW47ICM4NDRBCivokYsgPiBxw7o7ICM4NDRCCivokYwgPiBqacSBbjsgIzg0NEMKK+iRjSA+IGbDujsgIzg0NEQKK+iRjiA+IGzHnDsgIzg0NEUKK+iRjyA+IGrEq25nOyAjODQ0Rgor6JGQID4gcMOpbjsgIzg0NTAKK+iRkSA+IGbEk25nOyAjODQ1MQor6JGSID4gaMOzbmc7ICM4NDUyCivokZMgPiBow7NuZzsgIzg0NTMKK+iRlCA+IGjDs3U7ICM4NDU0CivokZUgPiB5w6FuOyAjODQ1NQor6JGWID4gdMO6OyAjODQ1Ngor6JGXID4gemjDuTsgIzg0NTcKK+iRmCA+IHrEqzsgIzg0NTgKK+iRmSA+IHhpxIFuZzsgIzg0NTkKK+iRmiA+IHNow6huOyAjODQ1QQor6JGbID4gZ8SVOyAjODQ1Qgor6JGcID4gamnDqTsgIzg0NUMKK+iRnSA+IGrDrG5nOyAjODQ1RAor6JGeID4gbcStOyAjODQ1RQor6JGfID4gaHXDoW5nOyAjODQ1Rgor6JGgID4gc2jEk247ICM4NDYwCivokaEgPiBww7o7ICM4NDYxCivokaIgPiBnw6BpOyAjODQ2Mgor6JGjID4gZMWPbmc7ICM4NDYzCivokaQgPiB6aMOydTsgIzg0NjQKK+iRpSA+IHFpw6FuOyAjODQ2NQor6JGmID4gd8SVaTsgIzg0NjYKK+iRpyA+IGLDszsgIzg0NjcKK+iRqCA+IHfEk2k7ICM4NDY4CivokakgPiBwxIE7ICM4NDY5CivokaogPiBqw6w7ICM4NDZBCivokasgPiBow7o7ICM4NDZCCivokawgPiB6w6BuZzsgIzg0NkMKK+iRrSA+IGppxIE7ICM4NDZECivoka4gPiBkdcOgbjsgIzg0NkUKK+iRryA+IHnDoG87ICM4NDZGCivokbAgPiBqw7luOyAjODQ3MAor6JGxID4gY8WNbmc7ICM4NDcxCivokbIgPiBxdcOhbjsgIzg0NzIKK+iRsyA+IHfEk2k7ICM4NDczCivokbQgPiB4acOhbjsgIzg0NzQKK+iRtSA+IGvDumk7ICM4NDc1CivokbYgPiB0w61uZzsgIzg0NzYKK+iRtyA+IGjFq247ICM4NDc3CivokbggPiB4xK07ICM4NDc4CivokbkgPiBzaMSrOyAjODQ3OQor6JG6ID4gccOsOyAjODQ3QQor6JG7ID4gbMOhbjsgIzg0N0IKK+iRvCA+IHrFjW5nOyAjODQ3Qwor6JG9ID4gecSBbzsgIzg0N0QKK+iRviA+IHl1xIFuOyAjODQ3RQor6JG/ID4gbcOpaTsgIzg0N0YKK+iSgCA+IHnFq247ICM4NDgwCivokoEgPiBzaMO5OyAjODQ4MQor6JKCID4gZMOsOyAjODQ4Mgor6JKDID4gemh1w6BuOyAjODQ4Mwor6JKEID4gZ3XEgW47ICM4NDg0CivokoYgPiB4dcSTOyAjODQ4Ngor6JKHID4gY2jEg247ICM4NDg3CivokoggPiBrxINpOyAjODQ4OAor6JKJID4ga8O5aTsgIzg0ODkKK+iSiyA+IGppxINuZzsgIzg0OEIKK+iSjCA+IGzDs3U7ICM4NDhDCivoko0gPiB3w6lpOyAjODQ4RAor6JKOID4gcMOgaTsgIzg0OEUKK+iSkCA+IHPFjXU7ICM4NDkwCivokpEgPiB5xKtuOyAjODQ5MQor6JKSID4gc2jEqzsgIzg0OTIKK+iSkyA+IGNow7puOyAjODQ5Mwor6JKUID4gc2jDrTsgIzg0OTQKK+iSlSA+IHnFq247ICM4NDk1CivokpYgPiB6aMSTbjsgIzg0OTYKK+iSlyA+IGzDoG5nOyAjODQ5Nwor6JKYID4gbsO6OyAjODQ5OAor6JKZID4gbcOpbmc7ICM4NDk5CivokpogPiBow6k7ICM4NDlBCivokpsgPiBxdcSTOyAjODQ5Qgor6JKcID4gc3XDoG47ICM4NDlDCivokp0gPiB5dcOhbjsgIzg0OUQKK+iSniA+IGzDrDsgIzg0OUUKK+iSnyA+IGrFrTsgIzg0OUYKK+iSoCA+IHjDrTsgIzg0QTAKK+iSoSA+IHDDoW5nOyAjODRBMQor6JKiID4gY2jDujsgIzg0QTIKK+iSoyA+IHjDujsgIzg0QTMKK+iSpCA+IHTDujsgIzg0QTQKK+iSpSA+IGzDrXU7ICM4NEE1CivokqYgPiB3w7I7ICM4NEE2CivokqcgPiB6aMSTbjsgIzg0QTcKK+iSqCA+IHFpw6BuOyAjODRBOAor6JKpID4gesWrOyAjODRBOQor6JKqID4gcMOyOyAjODRBQQor6JKrID4gY8WrbzsgIzg0QUIKK+iSrCA+IHl1xIFuOyAjODRBQwor6JKtID4gY2jDujsgIzg0QUQKK+iSriA+IHnDuTsgIzg0QUUKK+iSryA+IGt1xINpOyAjODRBRgor6JKwID4gcMOhbjsgIzg0QjAKK+iSsSA+IHDDujsgIzg0QjEKK+iSsiA+IHDDujsgIzg0QjIKK+iSsyA+IG7DoDsgIzg0QjMKK+iStCA+IHNow7lvOyAjODRCNAor6JK1ID4geMSrOyAjODRCNQor6JK2ID4gZsOpbjsgIzg0QjYKK+iStyA+IHnDum47ICM4NEI3CivokrggPiB6aMSTbmc7ICM4NEI4CivokrkgPiBqacSBbjsgIzg0QjkKK+iSuiA+IGrDrTsgIzg0QkEKK+iSuyA+IHLDuW87ICM4NEJCCivokrwgPiBjxIFuZzsgIzg0QkMKK+iSvSA+IMSTbjsgIzg0QkQKK+iSviA+IG3DrTsgIzg0QkUKK+iSvyA+IGjEgW87ICM4NEJGCivok4AgPiBzxatuOyAjODRDMAor6JOBID4gemjEk247ICM4NEMxCivok4IgPiBtw61uZzsgIzg0QzIKK+iTgyA+IHNvdTsgIzg0QzMKK+iThCA+IHjDuTsgIzg0QzQKK+iThSA+IGzDrXU7ICM4NEM1Civok4YgPiB4w607ICM4NEM2Civok4cgPiBnxa07ICM4NEM3Civok4ggPiBsw6FuZzsgIzg0QzgKK+iTiSA+IHLDs25nOyAjODRDOQor6JOKID4gd8SVbmc7ICM4NENBCivok4sgPiBnw6BpOyAjODRDQgor6JOMID4gY8O5bzsgIzg0Q0MKK+iTjSA+IHNoxKs7ICM4NENECivok44gPiB0w6FuZzsgIzg0Q0UKK+iTjyA+IGzFrW87ICM4NENGCivok5AgPiByw7k7ICM4NEQwCivok5EgPiBzxatvOyAjODREMQor6JOSID4geGnEgW47ICM4NEQyCivok5MgPiBiw6hpOyAjODREMwor6JOUID4gecSDbzsgIzg0RDQKK+iTlSA+IGfDuWk7ICM4NEQ1Civok5YgPiBixKs7ICM4NEQ2Civok5cgPiB6xY9uZzsgIzg0RDcKK+iTmCA+IGfFrW47ICM4NEQ4Civok5ogPiB4xKt1OyAjODREQQor6JObID4gY8OoOyAjODREQgor6JOdID4gbMOhbjsgIzg0REQKK+iTnyA+IGrDrDsgIzg0REYKK+iToCA+IGzDrTsgIzg0RTAKK+iToSA+IGPEgW47ICM4NEUxCivok6IgPiBsw6FuZzsgIzg0RTIKK+iToyA+IHnDuTsgIzg0RTMKK+iTpSA+IHnDrG5nOyAjODRFNQor6JOmID4gbcOyOyAjODRFNgor6JOnID4gZGnDoG87ICM4NEU3Civok6ggPiB0acSBbzsgIzg0RTgKK+iTqSA+IG3DoG87ICM4NEU5Civok6ogPiB0xY1uZzsgIzg0RUEKK+iTqyA+IHpow7o7ICM4NEVCCivok6wgPiBww6luZzsgIzg0RUMKK+iTrSA+IMSBbjsgIzg0RUQKK+iTriA+IGxpw6FuOyAjODRFRQor6JOvID4gY8WNbmc7ICM4NEVGCivok7AgPiB4xK07ICM4NEYwCivok7EgPiBww61uZzsgIzg0RjEKK+iTsiA+IHHEq3U7ICM4NEYyCivok7MgPiBqw6xuOyAjODRGMwor6JO0ID4gY2jDum47ICM4NEY0Civok7UgPiBqacOpOyAjODRGNQor6JO2ID4gd8SVaTsgIzg0RjYKK+iTtyA+IHTFq2k7ICM4NEY3Civok7ggPiBjw6FvOyAjODRGOAor6JO5ID4gecWtOyAjODRGOQor6JO6ID4gecOsOyAjODRGQQor6JO7ID4gasOtOyAjODRGQgor6JO8ID4gbGnEg287ICM4NEZDCivok70gPiBiw6w7ICM4NEZECivok74gPiBsxa07ICM4NEZFCivok78gPiBzw7k7ICM4NEZGCivolIAgPiBiw7k7ICM4NTAwCivolIEgPiB6aMSBbmc7ICM4NTAxCivolIIgPiBsw7pvOyAjODUwMgor6JSDID4gamnDoG5nOyAjODUwMwor6JSEID4gbcOgbjsgIzg1MDQKK+iUhSA+IHnDoW47ICM4NTA1CivolIYgPiBsw61uZzsgIzg1MDYKK+iUhyA+IGrDrDsgIzg1MDcKK+iUiCA+IHBpxINvOyAjODUwOAor6JSJID4gZ8WtbjsgIzg1MDkKK+iUiiA+IGjEg247ICM4NTBBCivolIsgPiBkw607ICM4NTBCCivolIwgPiBzw7k7ICM4NTBDCivolI0gPiBsw7k7ICM4NTBECivolI4gPiBzaMOoOyAjODUwRQor6JSPID4gc2jEgW5nOyAjODUwRgor6JSQID4gZMOtOyAjODUxMAor6JSRID4gbWnDqDsgIzg1MTEKK+iUkiA+IHjFq247ICM4NTEyCivolJMgPiBtw6BuOyAjODUxMwor6JSUID4gYsOzOyAjODUxNAor6JSVID4gZMOsOyAjODUxNQor6JSWID4gY8O6bzsgIzg1MTYKK+iUlyA+IHpow6g7ICM4NTE3CivolJggPiBzxJNuOyAjODUxOAor6JSZID4geHXDoG47ICM4NTE5CivolJogPiB3w6hpOyAjODUxQQor6JSbID4gaMO6OyAjODUxQgor6JScID4gw6FvOyAjODUxQwor6JSdID4gbcStOyAjODUxRAor6JSeID4gbMOzdTsgIzg1MUUKK+iUnyA+IGPDuTsgIzg1MUYKK+iUoCA+IHpoxY1uZzsgIzg1MjAKK+iUoSA+IGPDoGk7ICM4NTIxCivolKIgPiBww7M7ICM4NTIyCivolKMgPiBqacSDbmc7ICM4NTIzCivolKQgPiBtw6w7ICM4NTI0CivolKUgPiBjxY1uZzsgIzg1MjUKK+iUpiA+IG5pxINvOyAjODUyNgor6JSnID4gaMO5aTsgIzg1MjcKK+iUqCA+IGrDuW47ICM4NTI4CivolKkgPiB5w61uOyAjODUyOQor6JSqID4gamnDoG47ICM4NTJBCivolKsgPiB5xIFuOyAjODUyQgor6JSsID4gc2jFqzsgIzg1MkMKK+iUrSA+IHnDrG47ICM4NTJECivolK4gPiBrw7lpOyAjODUyRQor6JSvID4gY2jDqW47ICM4NTJGCivolLAgPiBow7k7ICM4NTMwCivolLEgPiBzaMSBOyAjODUzMQor6JSyID4ga8OydTsgIzg1MzIKK+iUsyA+IHFpw6BuOyAjODUzMwor6JS0ID4gbcOhOyAjODUzNAor6JS1ID4gesSBbmc7ICM4NTM1CivolLcgPiBxacOhbmc7ICM4NTM3CivolLggPiBkxY11OyAjODUzOAor6JS5ID4gbGnDoG47ICM4NTM5CivolLogPiBsw6xuOyAjODUzQQor6JS7ID4ga8OydTsgIzg1M0IKK+iUvCA+IMSDaTsgIzg1M0MKK+iUvSA+IGLDrDsgIzg1M0QKK+iUviA+IGzDrTsgIzg1M0UKK+iUvyA+IHfDqWk7ICM4NTNGCivolYAgPiBqw607ICM4NTQwCivolYEgPiB4w7puOyAjODU0MQor6JWCID4gc2jDqG5nOyAjODU0Mgor6JWDID4gZsOhbjsgIzg1NDMKK+iVhCA+IG3DqW5nOyAjODU0NAor6JWFID4gxY91OyAjODU0NQor6JWGID4gY2jEg247ICM4NTQ2CivolYcgPiBkacSDbjsgIzg1NDcKK+iViCA+IHjDuW47ICM4NTQ4CivolYkgPiBqacSBbzsgIzg1NDkKK+iViiA+IHLFrWk7ICM4NTRBCivolYsgPiByxa1pOyAjODU0Qgor6JWMID4gbMSVaTsgIzg1NEMKK+iVjSA+IHnDujsgIzg1NEQKK+iVjiA+IHFpw6FvOyAjODU0RQor6JWPID4gY2jDujsgIzg1NEYKK+iVkCA+IGh1w6E7ICM4NTUwCivolZEgPiBqacSBbjsgIzg1NTEKK+iVkiA+IG3Eg2k7ICM4NTUyCivolZMgPiB5w7puOyAjODU1Mwor6JWUID4gYsSBbzsgIzg1NTQKK+iVlSA+IHnDs3U7ICM4NTU1CivolZYgPiBxw7o7ICM4NTU2CivolZcgPiBsw7k7ICM4NTU3CivolZggPiByw6FvOyAjODU1OAor6JWZID4gaMO5aTsgIzg1NTkKK+iVmiA+IMOoOyAjODU1QQor6JWbID4gdMOpbmc7ICM4NTVCCivolZwgPiBmxJVpOyAjODU1Qwor6JWdID4ganXDqTsgIzg1NUQKK+iVniA+IHrDuWk7ICM4NTVFCivolZ8gPiBmw6A7ICM4NTVGCivolaAgPiByw7o7ICM4NTYwCivolaEgPiBmw6luOyAjODU2MQor6JWiID4ga8O5aTsgIzg1NjIKK+iVoyA+IHNow7luOyAjODU2Mwor6JWkID4gcsO6aTsgIzg1NjQKK+iVpSA+IHnEgzsgIzg1NjUKK+iVpiA+IHjFqzsgIzg1NjYKK+iVpyA+IGbDuTsgIzg1NjcKK+iVqCA+IGp1w6k7ICM4NTY4CivolakgPiBkw6BuZzsgIzg1NjkKK+iVqiA+IHfDujsgIzg1NkEKK+iVqyA+IHTDs25nOyAjODU2Qgor6JWsID4gc8SrOyAjODU2Qwor6JWtID4geGnEgW87ICM4NTZECivola4gPiB4w6w7ICM4NTZFCivola8gPiBsw7NuZzsgIzg1NkYKK+iVsCA+IHnDuW47ICM4NTcwCivolbIgPiBxw607ICM4NTcyCivolbMgPiBqacSBbjsgIzg1NzMKK+iVtCA+IHnDuW47ICM4NTc0CivolbUgPiBzxatuOyAjODU3NQor6JW2ID4gbMOtbmc7ICM4NTc2CivolbcgPiB5w7k7ICM4NTc3CivolbggPiB4acOhOyAjODU3OAor6JW5ID4gecWNbmc7ICM4NTc5CivolbogPiBqw607ICM4NTdBCivolbsgPiBow7JuZzsgIzg1N0IKK+iVvCA+IHPDrDsgIzg1N0MKK+iVvSA+IG7Ds25nOyAjODU3RAor6JW+ID4gbMSVaTsgIzg1N0UKK+iVvyA+IHh1xIFuOyAjODU3Rgor6JaAID4gecO5bjsgIzg1ODAKK+iWgSA+IHnDuTsgIzg1ODEKK+iWgiA+IHjDrTsgIzg1ODIKK+iWgyA+IGjDoG87ICM4NTgzCivoloQgPiBiw7M7ICM4NTg0CivoloUgPiBoxIFvOyAjODU4NQor6JaGID4gw6BpOyAjODU4Ngor6JaHID4gd8OpaTsgIzg1ODcKK+iWiCA+IGjDuWk7ICM4NTg4CivolokgPiB3w6hpOyAjODU4OQor6JaKID4gasOsOyAjODU4QQor6JaLID4gY8SrOyAjODU4Qgor6JaMID4geGnEgW5nOyAjODU4Qwor6JaNID4gbHXDoG47ICM4NThECivolo4gPiBtacOoOyAjODU4RQor6JaPID4gecOsOyAjODU4Rgor6JaQID4gbMOpbmc7ICM4NTkwCivolpEgPiBqacSBbmc7ICM4NTkxCivolpIgPiBjw6BuOyAjODU5Mgor6JaTID4gc2jEk247ICM4NTkzCivolpQgPiBxacOhbmc7ICM4NTk0CivolpUgPiBsacOhbjsgIzg1OTUKK+iWliA+IGvEkzsgIzg1OTYKK+iWlyA+IHl1w6FuOyAjODU5Nwor6JaYID4gZMOhOyAjODU5OAor6JaZID4gdMOsOyAjODU5OQor6JaaID4gdMOhbmc7ICM4NTlBCivolpsgPiB4acSTOyAjODU5Qgor6JacID4gYsOsOyAjODU5Qwor6JadID4gemjDoW47ICM4NTlECivolp4gPiBzxatuOyAjODU5RQor6JafID4gbGnEg247ICM4NTlGCivolqAgPiBmw6FuOyAjODVBMAor6JahID4gZMStbmc7ICM4NUExCivolqIgPiBqacSTOyAjODVBMgor6JajID4gZ8WtOyAjODVBMwor6JakID4geGnDqDsgIzg1QTQKK+iWpSA+IHNoxa07ICM4NUE1CivolqYgPiBqacOgbjsgIzg1QTYKK+iWpyA+IGvEg287ICM4NUE3CivolqggPiBoxY1uZzsgIzg1QTgKK+iWqSA+IHPDoDsgIzg1QTkKK+iWqiA+IHjEq247ICM4NUFBCivolqsgPiB4xatuOyAjODVBQgor6JasID4gecOgbzsgIzg1QUMKK+iWriA+IHPFj3U7ICM4NUFFCivolq8gPiBzaMWtOyAjODVBRgor6JawID4geMWrbjsgIzg1QjAKK+iWsSA+IGTDuWk7ICM4NUIxCivolrIgPiBww61uOyAjODVCMgor6JazID4gd8SVaTsgIzg1QjMKK+iWtCA+IG7DqW5nOyAjODVCNAor6Ja1ID4gY2jDs3U7ICM4NUI1CivolrYgPiBtw6FpOyAjODVCNgor6Ja3ID4gcsO6OyAjODVCNwor6Ja4ID4gcGnEgW87ICM4NUI4CivolrkgPiB0w6FpOyAjODVCOQor6Ja6ID4gccOtOyAjODVCQQor6Ja7ID4gesSDbzsgIzg1QkIKK+iWvCA+IGNow6luOyAjODVCQwor6Ja9ID4gemjEk247ICM4NUJECivolr4gPiDElXI7ICM4NUJFCivolr8gPiBuxK07ICM4NUJGCivol4AgPiB5w61uZzsgIzg1QzAKK+iXgSA+IGfEg287ICM4NUMxCivol4IgPiBjw7JuZzsgIzg1QzIKK+iXgyA+IHhpxIFvOyAjODVDMwor6JeEID4gccOtOyAjODVDNAor6JeFID4gZsOhOyAjODVDNQor6JeGID4gamnEg247ICM4NUM2Civol4cgPiB4w7k7ICM4NUM3Civol4ggPiBrxatpOyAjODVDOAor6JeJID4gamnDqDsgIzg1QzkKK+iXiiA+IGJpxINuOyAjODVDQQor6JeLID4gZGnDoG87ICM4NUNCCivol4wgPiBtw6w7ICM4NUNDCivol40gPiBsw6FuOyAjODVDRAor6JeOID4gasOsbjsgIzg1Q0UKK+iXjyA+IGPDoW5nOyAjODVDRgor6JeQID4gbWnEg287ICM4NUQwCivol5EgPiBxw61vbmc7ICM4NUQxCivol5IgPiBxacOoOyAjODVEMgor6JeTID4geGnEg247ICM4NUQzCivol5UgPiDFj3U7ICM4NUQ1Civol5YgPiB4acOhbjsgIzg1RDYKK+iXlyA+IHPDuTsgIzg1RDcKK+iXmCA+IGzHmDsgIzg1RDgKK+iXmSA+IHnDrDsgIzg1RDkKK+iXmiA+IHjDuTsgIzg1REEKK+iXmyA+IHhpxJU7ICM4NURCCivol5wgPiBsw607ICM4NURDCivol50gPiB5w6w7ICM4NURECivol54gPiBsxIM7ICM4NURFCivol58gPiBsxJVpOyAjODVERgor6JegID4geGnDoG87ICM4NUUwCivol6EgPiBkw607ICM4NUUxCivol6IgPiB6aMStOyAjODVFMgor6JejID4gYsSTaTsgIzg1RTMKK+iXpCA+IHTDqW5nOyAjODVFNAor6JelID4gecOgbzsgIzg1RTUKK+iXpiA+IG3DsjsgIzg1RTYKK+iXpyA+IGh1xINuOyAjODVFNwor6JeoID4gcGnEg287ICM4NUU4Civol6kgPiBmw6FuOyAjODVFOQor6JeqID4gc8WPdTsgIzg1RUEKK+iXqyA+IHTDoW47ICM4NUVCCivol6wgPiB0xatpOyAjODVFQwor6JetID4gccOtb25nOyAjODVFRAor6JeuID4gcWnDoW87ICM4NUVFCivol68gPiB3w6hpOyAjODVFRgor6JewID4gbMOtdTsgIzg1RjAKK+iXsSA+IGjDuWk7ICM4NUYxCivol7MgPiBnxINvOyAjODVGMwor6Je0ID4gecO5bjsgIzg1RjQKK+iXtiA+IGzDrDsgIzg1RjYKK+iXtyA+IHNoxa07ICM4NUY3Civol7ggPiBjaMO6OyAjODVGOAor6Je5ID4gxINpOyAjODVGOQor6Je6ID4gbMOsbjsgIzg1RkEKK+iXuyA+IHrEg287ICM4NUZCCivol7wgPiB4dcSBbjsgIzg1RkMKK+iXvSA+IGNow6huOyAjODVGRAor6Je+ID4gbMOgaTsgIzg1RkUKK+iXvyA+IGjDuW87ICM4NUZGCivomIAgPiB0w7lvOyAjODYwMAor6JiBID4gd8O5OyAjODYwMQor6JiCID4gcsWtaTsgIzg2MDIKK+iYgyA+IHLFrWk7ICM4NjAzCivomIQgPiBxw607ICM4NjA0CivomIUgPiBow6luZzsgIzg2MDUKK+iYhiA+IGzDujsgIzg2MDYKK+iYhyA+IHPFqzsgIzg2MDcKK+iYiCA+IHTDumk7ICM4NjA4CivomIkgPiBtw6FuZzsgIzg2MDkKK+iYiiA+IHnDuW47ICM4NjBBCivomIsgPiBww61uOyAjODYwQgor6JiMID4gecWtOyAjODYwQwor6JiNID4geMWrbjsgIzg2MEQKK+iYjiA+IGrDrDsgIzg2MEUKK+iYjyA+IGrEq29uZzsgIzg2MEYKK+iYkCA+IHhpxIFuOyAjODYxMAor6JiRID4gbcOzOyAjODYxMQor6JiTID4gc8WrOyAjODYxMwor6JiUID4gasSrb25nOyAjODYxNAor6JiWID4gbmnDqDsgIzg2MTYKK+iYlyA+IGLDsjsgIzg2MTcKK+iYmCA+IHLDoW5nOyAjODYxOAor6JiZID4gecOsOyAjODYxOQor6JiaID4geGnEg247ICM4NjFBCivomJsgPiB5w7o7ICM4NjFCCivomJwgPiBqw7o7ICM4NjFDCivomJ0gPiBsacOgbjsgIzg2MUQKK+iYniA+IGxpw6BuOyAjODYxRQor6JifID4gecStbjsgIzg2MUYKK+iYoCA+IHFpw6FuZzsgIzg2MjAKK+iYoSA+IHnEq25nOyAjODYyMQor6JiiID4gbMOzbmc7ICM4NjIyCivomKMgPiB0w7JuZzsgIzg2MjMKK+iYpCA+IHfElWk7ICM4NjI0CivomKUgPiB5dcOoOyAjODYyNQor6JimID4gbMOtbmc7ICM4NjI2CivomKcgPiBxw7o7ICM4NjI3CivomKggPiB5w6FvOyAjODYyOAor6JipID4gZsOhbjsgIzg2MjkKK+iYqiA+IG3DrTsgIzg2MkEKK+iYqyA+IGzDoW47ICM4NjJCCivomKwgPiBrxatpOyAjODYyQwor6JitID4gbMOhbjsgIzg2MkQKK+iYriA+IGrDrDsgIzg2MkUKK+iYryA+IGTDoG5nOyAjODYyRgor6JixID4gbMOoaTsgIzg2MzEKK+iYsiA+IGzDqWk7ICM4NjMyCivomLMgPiBodcSDOyAjODYzMwor6Ji0ID4gZsSTbmc7ICM4NjM0CivomLUgPiB6aMOtOyAjODYzNQor6Ji2ID4gd8OoaTsgIzg2MzYKK+iYtyA+IGvDumk7ICM4NjM3CivomLggPiB6aMOgbjsgIzg2MzgKK+iYuSA+IGh1w6BpOyAjODYzOQor6Ji6ID4gbMOtOyAjODYzQQor6Ji7ID4gasOsOyAjODYzQgor6Ji8ID4gbcOtOyAjODYzQwor6Ji9ID4gbMSVaTsgIzg2M0QKK+iYviA+IGh1w6BpOyAjODYzRQor6Ji/ID4gbMO6bzsgIzg2M0YKK+iZgCA+IGrEqzsgIzg2NDAKK+iZgSA+IGvDumk7ICM4NjQxCivomYIgPiBsw7k7ICM4NjQyCivomYMgPiBqacSBbjsgIzg2NDMKK+iZhiA+IGzDqWk7ICM4NjQ2CivomYcgPiBxdcSDbjsgIzg2NDcKK+iZiCA+IHhpxIFvOyAjODY0OAor6JmJID4gecOsOyAjODY0OQor6JmKID4gbHXDoW47ICM4NjRBCivomYsgPiBtw6luOyAjODY0Qgor6JmMID4gYmnEkzsgIzg2NEMKK+iZjSA+IGjFqzsgIzg2NEQKK+iZjiA+IGjFrTsgIzg2NEUKK+iZjyA+IGzFrTsgIzg2NEYKK+iZkCA+IG7HnGU7ICM4NjUwCivomZEgPiBsx5w7ICM4NjUxCivomZIgPiBzxKs7ICM4NjUyCivomZMgPiB4acSBbzsgIzg2NTMKK+iZlCA+IHFpw6FuOyAjODY1NAor6JmVID4gY2jDuTsgIzg2NTUKK+iZliA+IGjFqzsgIzg2NTYKK+iZlyA+IHjFqzsgIzg2NTcKK+iZmCA+IGPDum87ICM4NjU4CivomZkgPiBmw7o7ICM4NjU5CivomZogPiB4xas7ICM4NjVBCivomZsgPiB4xas7ICM4NjVCCivomZwgPiBsxa07ICM4NjVDCivomZ0gPiBoxa07ICM4NjVECivomZ4gPiB5w7o7ICM4NjVFCivomZ8gPiBow6BvOyAjODY1Rgor6JmgID4gamnEg287ICM4NjYwCivomaEgPiBqw7k7ICM4NjYxCivomaIgPiBnw7pvOyAjODY2Mgor6JmjID4gYsOgbzsgIzg2NjMKK+iZpCA+IHnDoW47ICM4NjY0CivomaUgPiB6aMOgbjsgIzg2NjUKK+iZpiA+IHpow6BuOyAjODY2Ngor6JmnID4ga8WraTsgIzg2NjcKK+iZqCA+IGLEgW47ICM4NjY4CivomakgPiB4w6w7ICM4NjY5CivomaogPiBzaMO6OyAjODY2QQor6JmrID4gY2jDs25nOyAjODY2Qgor6JmsID4gccOtdTsgIzg2NkMKK+iZrSA+IGRpxIFvOyAjODY2RAor6JmuID4gasSrOyAjODY2RQor6JmvID4gccOtdTsgIzg2NkYKK+iZsCA+IGNow6luZzsgIzg2NzAKK+iZsSA+IHNoxKs7ICM4NjcxCivombMgPiBkw6w7ICM4NjczCivombQgPiB6aMOpOyAjODY3NAor6Jm1ID4gc2jDqTsgIzg2NzUKK+iZtiA+IHnFqzsgIzg2NzYKK+iZtyA+IGfEgW47ICM4Njc3CivombggPiB6xK07ICM4Njc4CivombkgPiBow7NuZzsgIzg2NzkKK+iZuiA+IGjFrWk7ICM4NjdBCivombsgPiBtw6luZzsgIzg2N0IKK+iZvCA+IGfDqDsgIzg2N0MKK+iZvSA+IHPFq2k7ICM4NjdECivomb4gPiB4acSBOyAjODY3RQor6Jm/ID4gY2jDoGk7ICM4NjdGCivomoAgPiBzaMOtOyAjODY4MAor6JqBID4gecStOyAjODY4MQor6JqCID4gbcSDOyAjODY4Mgor6JqDID4geGnDoG5nOyAjODY4Mwor6JqEID4gZsSBbmc7ICM4Njg0CivomoUgPiDDqDsgIzg2ODUKK+iahiA+IHDEgTsgIzg2ODYKK+iahyA+IGNoxK07ICM4Njg3CivomoggPiBxacSBbjsgIzg2ODgKK+iaiSA+IHfDqW47ICM4Njg5CivomoogPiB3w6luOyAjODY4QQor6JqLID4gcsO5aTsgIzg2OEIKK+iajCA+IGLDoG5nOyAjODY4Qwor6JqNID4gYsStOyAjODY4RAor6JqOID4geXXDqDsgIzg2OEUKK+iajyA+IHl1w6g7ICM4NjhGCivompAgPiBqxatuOyAjODY5MAor6JqRID4gccOtOyAjODY5MQor6JqSID4gcsOhbjsgIzg2OTIKK+iakyA+IHnErW47ICM4NjkzCivompQgPiBxw607ICM4Njk0CivompUgPiB0acSDbjsgIzg2OTUKK+ialiA+IHl1w6FuOyAjODY5Ngor6JqXID4ganXDqTsgIzg2OTcKK+iamCA+IGjDumk7ICM4Njk4CivompkgPiBxw61uOyAjODY5OQor6JqaID4gccOtOyAjODY5QQor6JqbID4gemjDsm5nOyAjODY5Qgor6JqcID4gecOhOyAjODY5Qwor6JqdID4gY8OsOyAjODY5RAor6JqeID4gbcO5OyAjODY5RQor6JqfID4gd8Ohbmc7ICM4NjlGCivomqAgPiBmw6luOyAjODZBMAor6JqhID4gZsOpbjsgIzg2QTEKK+iaoiA+IGjDoW5nOyAjODZBMgor6JqjID4gZ8WNbmc7ICM4NkEzCivomqQgPiB6xINvOyAjODZBNAor6JqlID4gZsWtOyAjODZBNQor6JqmID4gcsOhbjsgIzg2QTYKK+iapyA+IGppw6g7ICM4NkE3CivomqggPiBmw7o7ICM4NkE4CivomqkgPiBjaMSrOyAjODZBOQor6JqqID4gZMWPdTsgIzg2QUEKK+iaqyA+IHBpw6FvOyAjODZBQgor6JqsID4geGnDoG47ICM4NkFDCivomq0gPiBuw607ICM4NkFECivomq4gPiB0w6g7ICM4NkFFCivomq8gPiBxxKt1OyAjODZBRgor6JqwID4gecOzdTsgIzg2QjAKK+iasSA+IHpow6A7ICM4NkIxCivomrIgPiBww61uZzsgIzg2QjIKK+iasyA+IGNow607ICM4NkIzCivomrQgPiB5xY91OyAjODZCNAor6Jq1ID4gaMOpOyAjODZCNQor6Jq2ID4gaMSBbjsgIzg2QjYKK+iatyA+IGrDuTsgIzg2QjcKK+iauCA+IGzDrDsgIzg2QjgKK+iauSA+IGbDuTsgIzg2QjkKK+iauiA+IHLDoW47ICM4NkJBCivomrsgPiB6aMOhOyAjODZCQgor6Jq8ID4gZ8WPdTsgIzg2QkMKK+iavSA+IHDDrTsgIzg2QkQKK+iaviA+IGLFjzsgIzg2QkUKK+iavyA+IHhpw6FuOyAjODZCRgor6JuAID4gemjDuTsgIzg2QzAKK+ibgSA+IGRpxIFvOyAjODZDMQor6JuCID4gYmnElTsgIzg2QzIKK+ibgyA+IGLErW5nOyAjODZDMwor6JuEID4gZ8WrOyAjODZDNAor6JuFID4gcsOhbjsgIzg2QzUKK+ibhiA+IHHFqzsgIzg2QzYKK+ibhyA+IHNow6k7ICM4NkM3Civom4ggPiB0acOoOyAjODZDOAor6JuJID4gbMOtbmc7ICM4NkM5Civom4ogPiBnxa07ICM4NkNBCivom4sgPiBkw6BuOyAjODZDQgor6JuMID4gZ8WtOyAjODZDQwor6JuNID4gecOtbmc7ICM4NkNECivom44gPiBsw6w7ICM4NkNFCivom48gPiBjaMSTbmc7ICM4NkNGCivom5AgPiBxxas7ICM4NkQwCivom5EgPiBtw7N1OyAjODZEMQor6JuSID4gZ8OpOyAjODZEMgor6JuTID4gY8OsOyAjODZEMwor6JuUID4gaMO6aTsgIzg2RDQKK+iblSA+IGjDumk7ICM4NkQ1Civom5YgPiBtw6FuZzsgIzg2RDYKK+iblyA+IGbDuTsgIzg2RDcKK+ibmCA+IHnDoW5nOyAjODZEOAor6JuZID4gd8SBOyAjODZEOQor6JuaID4gbGnDqDsgIzg2REEKK+ibmyA+IHpoxas7ICM4NkRCCivom5wgPiB5xKs7ICM4NkRDCivom50gPiB4acOhbjsgIzg2REQKK+ibniA+IGvDuW87ICM4NkRFCivom58gPiBqacSBbzsgIzg2REYKK+iboCA+IGzDrDsgIzg2RTAKK+iboSA+IHnDrDsgIzg2RTEKK+iboiA+IHDDrW5nOyAjODZFMgor6JujID4gasSrOyAjODZFMwor6JukID4gaMOhOyAjODZFNAor6JulID4gc2jDqTsgIzg2RTUKK+ibpiA+IHnDrTsgIzg2RTYKK+ibpyA+IHfEg25nOyAjODZFNwor6JuoID4gbcOyOyAjODZFOAor6JupID4gccOtb25nOyAjODZFOQor6JuqID4gcWnDqDsgIzg2RUEKK+ibqyA+IGfFrWk7ICM4NkVCCivom6wgPiBnxY9uZzsgIzg2RUMKK+ibrSA+IHpow6w7ICM4NkVECivom64gPiBtw6FuOyAjODZFRQor6JuwID4gemjDrTsgIzg2RjAKK+ibsSA+IGppw6E7ICM4NkYxCivom7IgPiByw6FvOyAjODZGMgor6JuzID4gc8SrOyAjODZGMwor6Ju0ID4gccOtOyAjODZGNAor6Ju1ID4geMSrbmc7ICM4NkY1Civom7YgPiBsacOoOyAjODZGNgor6Ju3ID4gccOtdTsgIzg2RjcKK+ibuCA+IHNoxIFvOyAjODZGOAor6Ju5ID4gecWPbmc7ICM4NkY5Civom7ogPiBqacOhOyAjODZGQQor6Ju7ID4gc2jDuWk7ICM4NkZCCivom7wgPiBjaMSTOyAjODZGQwor6Ju9ID4gYsOgaTsgIzg2RkQKK+ibviA+IMOpOyAjODZGRQor6Ju/ID4gaMOgbjsgIzg2RkYKK+icgCA+IHNoxa07ICM4NzAwCivonIEgPiB4dcOhbjsgIzg3MDEKK+icgiA+IGbEk25nOyAjODcwMgor6JyDID4gc2jDqG47ICM4NzAzCivonIQgPiB6aMOobjsgIzg3MDQKK+ichSA+IGbFrTsgIzg3MDUKK+ichiA+IHhpw6BuOyAjODcwNgor6JyHID4gemjDqTsgIzg3MDcKK+iciCA+IHfDujsgIzg3MDgKK+iciSA+IGbDujsgIzg3MDkKK+iciiA+IGzDrTsgIzg3MEEKK+iciyA+IGzDoW5nOyAjODcwQgor6JyMID4gYsOsOyAjODcwQwor6JyNID4gY2jDujsgIzg3MEQKK+icjiA+IHl1xIFuOyAjODcwRQor6JyPID4gecWPdTsgIzg3MEYKK+ickCA+IGppw6k7ICM4NzEwCivonJEgPiBkw6BuOyAjODcxMQor6JySID4gecOhbjsgIzg3MTIKK+ickyA+IHTDrW5nOyAjODcxMwor6JyUID4gZGnDoG47ICM4NzE0CivonJUgPiBzaMO5aTsgIzg3MTUKK+icliA+IGjDumk7ICM4NzE2CivonJcgPiBndcSBOyAjODcxNwor6JyYID4gemjEqzsgIzg3MTgKK+icmSA+IHPFjW5nOyAjODcxOQor6JyaID4gZsSTaTsgIzg3MUEKK+icmyA+IGrFqzsgIzg3MUIKK+icnCA+IG3DrDsgIzg3MUMKK+icnSA+IHHDrTsgIzg3MUQKK+icniA+IHHDrTsgIzg3MUUKK+icnyA+IHnDuTsgIzg3MUYKK+icoCA+IGrFrW47ICM4NzIwCivonKEgPiB6aMOgOyAjODcyMQor6JyiID4gbcSVbmc7ICM4NzIyCivonKMgPiBxacSBbmc7ICM4NzIzCivonKQgPiBzxKs7ICM4NzI0CivonKUgPiB4xKs7ICM4NzI1CivonKYgPiBsw7puOyAjODcyNgor6JynID4gbMOsOyAjODcyNwor6JyoID4gZGnDqTsgIzg3MjgKK+icqSA+IHRpw6FvOyAjODcyOQor6JyqID4gdMSBbzsgIzg3MkEKK+icqyA+IGvFq247ICM4NzJCCivonKwgPiBnxIFuOyAjODcyQwor6JytID4gaMOgbjsgIzg3MkQKK+icriA+IHnDuTsgIzg3MkUKK+icryA+IGLDoG5nOyAjODcyRgor6JywID4gZsOpaTsgIzg3MzAKK+icsSA+IHDDrTsgIzg3MzEKK+icsiA+IHfElWk7ICM4NzMyCivonLMgPiBkxatuOyAjODczMwor6Jy0ID4gecOsOyAjODczNAor6Jy1ID4geXXEgW47ICM4NzM1CivonLYgPiBzw7k7ICM4NzM2CivonLcgPiBxdcOhbjsgIzg3MzcKK+icuCA+IHFpxINuOyAjODczOAor6Jy5ID4gcsO5aTsgIzg3MzkKK+icuiA+IG7DrTsgIzg3M0EKK+icuyA+IHHEq25nOyAjODczQgor6Jy8ID4gd8OoaTsgIzg3M0MKK+icvSA+IGxpxINuZzsgIzg3M0QKK+icviA+IGfFrW87ICM4NzNFCivonL8gPiB3xIFuOyAjODczRgor6J2AID4gZMWNbmc7ICM4NzQwCivonYEgPiDDqDsgIzg3NDEKK+idgiA+IGLEg247ICM4NzQyCivonYMgPiBkw6w7ICM4NzQzCivonYQgPiB3xINuZzsgIzg3NDQKK+idhSA+IGPDoW47ICM4NzQ1CivonYYgPiB5xINuZzsgIzg3NDYKK+idhyA+IHnDrW5nOyAjODc0Nwor6J2IID4gZ8WrbzsgIzg3NDgKK+idiSA+IGNow6FuOyAjODc0OQor6J2LID4gbMOgOyAjODc0Qgor6J2MID4ga8STOyAjODc0Qwor6J2NID4gasOtOyAjODc0RAor6J2OID4gaMOpOyAjODc0RQor6J2PID4gdMOtbmc7ICM4NzRGCivonZAgPiBtw6BpOyAjODc1MAor6J2RID4geMWrOyAjODc1MQor6J2SID4gbWnDoW47ICM4NzUyCivonZMgPiB5w7o7ICM4NzUzCivonZQgPiBqacSTOyAjODc1NAor6J2VID4gc2jDrTsgIzg3NTUKK+idliA+IHh1xIFuOyAjODc1Ngor6J2XID4gaHXDoW5nOyAjODc1Nwor6J2YID4gecSDbjsgIzg3NTgKK+idmSA+IGJpxIFuOyAjODc1OQor6J2aID4gcsOzdTsgIzg3NUEKK+idmyA+IHfEk2k7ICM4NzVCCivonZwgPiBmw7k7ICM4NzVDCivonZ0gPiB5dcOhbjsgIzg3NUQKK+idniA+IG3DqGk7ICM4NzVFCivonZ8gPiB3w6hpOyAjODc1Rgor6J2gID4gZsO6OyAjODc2MAor6J2hID4gcnXEg247ICM4NzYxCivonaIgPiB4acOpOyAjODc2Mgor6J2jID4gecOzdTsgIzg3NjMKK+idpCA+IHHDrXU7ICM4NzY0CivonaUgPiBtw6FvOyAjODc2NQor6J2mID4geGnEgTsgIzg3NjYKK+idpyA+IHnEq25nOyAjODc2Nwor6J2oID4gc2jEqzsgIzg3NjgKK+idqSA+IGNow7NuZzsgIzg3NjkKK+idqiA+IHTEgW5nOyAjODc2QQor6J2rID4gemjFqzsgIzg3NkIKK+idrCA+IHrFjW5nOyAjODc2Qwor6J2tID4gdMOtOyAjODc2RAor6J2uID4gZsO5OyAjODc2RQor6J2vID4geXXDoW47ICM4NzZGCivonbAgPiBoxa1pOyAjODc3MAor6J2xID4gbcOpbmc7ICM4NzcxCivonbIgPiBsw6A7ICM4NzcyCivonbMgPiBkw7o7ICM4NzczCivonbQgPiBow7o7ICM4Nzc0CivonbUgPiBxxKt1OyAjODc3NQor6J22ID4gZGnDqTsgIzg3NzYKK+idtyA+IGzDrDsgIzg3NzcKK+iduCA+IGd1xIE7ICM4Nzc4CivonbkgPiB5xatuOyAjODc3OQor6J26ID4gasWtOyAjODc3QQor6J27ID4gbsSDbjsgIzg3N0IKK+idvCA+IGzDs3U7ICM4NzdDCivonb0gPiBxxa1uOyAjODc3RAor6J2+ID4gcsOzbmc7ICM4NzdFCivonb8gPiB5w61uZzsgIzg3N0YKK+iegCA+IGppxIFuZzsgIzg3ODAKK+iegiA+IGzDoW5nOyAjODc4Mgor6J6DID4gcMOhbmc7ICM4NzgzCivonoQgPiBzxKs7ICM4Nzg0CivonoUgPiB4xKs7ICM4Nzg1CivonoYgPiBjw6w7ICM4Nzg2CivonocgPiB4xKs7ICM4Nzg3CivonoggPiB5dcOhbjsgIzg3ODgKK+ieiSA+IHfEk25nOyAjODc4OQor6J6KID4gbGnDoW47ICM4NzhBCivonosgPiBzxY11OyAjODc4Qgor6J6MID4gYsSBbjsgIzg3OEMKK+iejSA+IHLDs25nOyAjODc4RAor6J6OID4gcsOzbmc7ICM4NzhFCivono8gPiBqw607ICM4NzhGCivonpAgPiB3xas7ICM4NzkwCivonpEgPiBxw6x1OyAjODc5MQor6J6SID4gaMOgbjsgIzg3OTIKK+iekyA+IHHDrW47ICM4NzkzCivonpQgPiB5w607ICM4Nzk0CivonpUgPiBixKs7ICM4Nzk1CivonpYgPiBodcOhOyAjODc5Ngor6J6XID4gdMOhbmc7ICM4Nzk3CivonpggPiB5xK07ICM4Nzk4CivonpkgPiBkw7k7ICM4Nzk5CivonpogPiBuw6BpOyAjODc5QQor6J6bID4gaMOpOyAjODc5Qgor6J6cID4gaMO6OyAjODc5Qwor6J6dID4gaMO5aTsgIzg3OUQKK+ieniA+IG3EgzsgIzg3OUUKK+ienyA+IG3DrW5nOyAjODc5Rgor6J6gID4gecOsOyAjODdBMAor6J6hID4gd8OpbjsgIzg3QTEKK+ieoiA+IHnDrW5nOyAjODdBMgor6J6jID4gdMOpbmc7ICM4N0EzCivonqQgPiB5xa07ICM4N0E0CivonqUgPiBjxIFuZzsgIzg3QTUKK+ieqCA+IG3Eg247ICM4N0E4CivonqogPiBzaMSBbmc7ICM4N0FBCivonqsgPiB6aMSTOyAjODdBQgor6J6sID4gY8OhbzsgIzg3QUMKK+ierSA+IGNoxKs7ICM4N0FECivonq4gPiBkw6w7ICM4N0FFCivonq8gPiDDoW87ICM4N0FGCivonrAgPiBsw7k7ICM4N0IwCivonrEgPiB3w6hpOyAjODdCMQor6J6yID4gemjDrDsgIzg3QjIKK+iesyA+IHTDoW5nOyAjODdCMwor6J60ID4gY2jDqW47ICM4N0I0CivonrUgPiBwacSBbzsgIzg3QjUKK+ietiA+IHHDujsgIzg3QjYKK+ietyA+IHDDrTsgIzg3QjcKK+ieuCA+IHnDujsgIzg3QjgKK+ieuSA+IGppw6BuOyAjODdCOQor6J66ID4gbMO6bzsgIzg3QkEKK+ieuyA+IGzDs3U7ICM4N0JCCivonrwgPiBxxK1uOyAjODdCQwor6J69ID4gemjFjW5nOyAjODdCRAor6J6+ID4gecStbjsgIzg3QkUKK+ievyA+IGppxIFuZzsgIzg3QkYKK+ifgCA+IHNodcOgaTsgIzg3QzAKK+ifgSA+IHfDqW47ICM4N0MxCivon4IgPiBqacSBbzsgIzg3QzIKK+ifgyA+IHfDoG47ICM4N0MzCivon4QgPiB6aMOtOyAjODdDNAor6J+FID4gemjDqDsgIzg3QzUKK+ifhiA+IG3DoTsgIzg3QzYKK+ifhyA+IG3DoTsgIzg3QzcKK+ifiCA+IGfFq287ICM4N0M4Civon4kgPiBsw611OyAjODdDOQor6J+KID4gbcOhbzsgIzg3Q0EKK+ifiyA+IHjEqzsgIzg3Q0IKK+ifjCA+IGPFjW5nOyAjODdDQwor6J+NID4gbMOtOyAjODdDRAor6J+OID4gbcSDbjsgIzg3Q0UKK+ifjyA+IHhpxIFvOyAjODdDRgor6J+RID4gemjEgW5nOyAjODdEMQor6J+SID4gbcSDbmc7ICM4N0QyCivon5MgPiB4acOgbmc7ICM4N0QzCivon5QgPiBtw7I7ICM4N0Q0Civon5UgPiB6xatpOyAjODdENQor6J+WID4gc8SrOyAjODdENgor6J+XID4gccSrdTsgIzg3RDcKK+ifmCA+IHTDqDsgIzg3RDgKK+ifmSA+IHpow607ICM4N0Q5Civon5ogPiBww6luZzsgIzg3REEKK+ifmyA+IHDDqW5nOyAjODdEQgor6J+cID4gamnEg287ICM4N0RDCivon50gPiBxw7o7ICM4N0RECivon54gPiBiacOpOyAjODdERQor6J+fID4gbGnDoW87ICM4N0RGCivon6AgPiBww6FuOyAjODdFMAor6J+hID4gZ8WtaTsgIzg3RTEKK+ifoiA+IHjErTsgIzg3RTIKK+ifoyA+IGrErTsgIzg3RTMKK+ifpCA+IHpodcSBbjsgIzg3RTQKK+ifpSA+IGh1w6FuZzsgIzg3RTUKK+ifpiA+IGbDqGk7ICM4N0U2Civon6cgPiBsw6FvOyAjODdFNwor6J+oID4ganXDqTsgIzg3RTgKK+ifqSA+IGp1w6k7ICM4N0U5Civon6ogPiBow7lpOyAjODdFQQor6J+rID4gecOtbjsgIzg3RUIKK+ifrCA+IGNow6FuOyAjODdFQwor6J+tID4gamnEgW87ICM4N0VECivon64gPiBzaMOgbjsgIzg3RUUKK+ifryA+IHLDoW87ICM4N0VGCivon7AgPiB4acSBbzsgIzg3RjAKK+ifsSA+IG3Ds3U7ICM4N0YxCivon7IgPiBjaMOzbmc7ICM4N0YyCivon7MgPiB4w7puOyAjODdGMwor6J+0ID4gc8SrOyAjODdGNAor6J+2ID4gY2jEk25nOyAjODdGNgor6J+3ID4gZMSBbmc7ICM4N0Y3Civon7ggPiBsxK07ICM4N0Y4Civon7kgPiB4acOoOyAjODdGOQor6J+6ID4gc2jDoG47ICM4N0ZBCivon7sgPiB5xK07ICM4N0ZCCivon7wgPiBqxK1uZzsgIzg3RkMKK+ifvSA+IGTDoTsgIzg3RkQKK+ifviA+IGNow6FuOyAjODdGRQor6J+/ID4gccOsOyAjODdGRgor6KCAID4gY8SrOyAjODgwMAor6KCBID4geGnDoG5nOyAjODgwMQor6KCCID4gc2jDqDsgIzg4MDIKK+iggyA+IGzFrW87ICM4ODAzCivooIQgPiBxw61uOyAjODgwNAor6KCFID4gecOtbmc7ICM4ODA1CivooIYgPiBjaMOgaTsgIzg4MDYKK+ighyA+IGzDrDsgIzg4MDcKK+igiCA+IHrDqTsgIzg4MDgKK+igiSA+IHh1xIFuOyAjODgwOQor6KCKID4gbGnDoW47ICM4ODBBCivooIsgPiB6aMO6OyAjODgwQgor6KCMID4gesOpOyAjODgwQwor6KCNID4geGnEkzsgIzg4MEQKK+igjiA+IG3Eg25nOyAjODgwRQor6KCPID4geGnDqDsgIzg4MEYKK+igkCA+IHHDrTsgIzg4MTAKK+igkSA+IHLDs25nOyAjODgxMQor6KCSID4gamnEg247ICM4ODEyCivooJMgPiBtxJVuZzsgIzg4MTMKK+iglCA+IGjDoW87ICM4ODE0CivooJUgPiBydcSDbjsgIzg4MTUKK+igliA+IGjDuW87ICM4ODE2CivooJcgPiB6aMO6bzsgIzg4MTcKK+igmCA+IGppw6k7ICM4ODE4CivooJkgPiBixKtuOyAjODgxOQor6KCaID4gaMOoOyAjODgxQQor6KCbID4gbWnDqDsgIzg4MUIKK+ignCA+IGbDoW47ICM4ODFDCivooJ0gPiBsw6lpOyAjODgxRAor6KCeID4gamnDqTsgIzg4MUUKK+ignyA+IGzDoDsgIzg4MUYKK+igoCA+IG3DrDsgIzg4MjAKK+igoSA+IGzErTsgIzg4MjEKK+igoiA+IGNoxa1uOyAjODgyMgor6KCjID4gbMOsOyAjODgyMwor6KCkID4gccSrdTsgIzg4MjQKK+igpSA+IG5pw6g7ICM4ODI1CivooKYgPiBsw7o7ICM4ODI2CivooKcgPiBkw7k7ICM4ODI3CivooKggPiB4acSBbzsgIzg4MjgKK+igqSA+IHpoxas7ICM4ODI5CivooKogPiBsw7NuZzsgIzg4MkEKK+igqyA+IGzDrDsgIzg4MkIKK+igrCA+IGzDs25nOyAjODgyQwor6KCtID4gZsSTbmc7ICM4ODJECivooK4gPiB5xJM7ICM4ODJFCivooK8gPiBiw6huZzsgIzg4MkYKK+igsCA+IHNow6BuZzsgIzg4MzAKK+igsSA+IGfFrTsgIzg4MzEKK+igsiA+IGp1xIFuOyAjODgzMgor6KCzID4gecSrbmc7ICM4ODMzCivooLUgPiB4xKs7ICM4ODM1CivooLYgPiBjw6FuOyAjODgzNgor6KC3ID4gccO6OyAjODgzNwor6KC4ID4gcXXDoW47ICM4ODM4CivooLkgPiBkw7k7ICM4ODM5CivooLogPiBjw6FuOyAjODgzQQor6KC7ID4gbcOhbjsgIzg4M0IKK+igvCA+IGp1w6k7ICM4ODNDCivooL0gPiBqacOpOyAjODgzRAor6KC+ID4gemjDujsgIzg4M0UKK+igvyA+IHpow6E7ICM4ODNGCivooYAgPiB4acSVOyAjODg0MAor6KGBID4gaHXEgW5nOyAjODg0MQor6KGCID4gbsOsdTsgIzg4NDIKK+ihgyA+IHDEk2k7ICM4ODQzCivooYQgPiBux5w7ICM4ODQ0CivooYUgPiB4w6xuOyAjODg0NQor6KGGID4gemjDsm5nOyAjODg0Ngor6KGHID4gbcOyOyAjODg0Nwor6KGIID4gw6hyOyAjODg0OAor6KGJID4ga8OoOyAjODg0OQor6KGKID4gbWnDqDsgIzg4NEEKK+ihiyA+IHjDrDsgIzg4NEIKK+ihjCA+IHjDrW5nOyAjODg0Qwor6KGNID4gecSDbjsgIzg4NEQKK+ihjiA+IGvDoG47ICM4ODRFCivooY8gPiB5dcOgbjsgIzg4NEYKK+ihkSA+IGzDrW5nOyAjODg1MQor6KGSID4geHXDoG47ICM4ODUyCivooZMgPiBzaMO5OyAjODg1Mwor6KGUID4geGnDoW47ICM4ODU0CivooZUgPiB0w7JuZzsgIzg4NTUKK+ihliA+IGzDsm5nOyAjODg1Ngor6KGXID4gamnEkzsgIzg4NTcKK+ihmCA+IHhpw6FuOyAjODg1OAor6KGZID4gecOhOyAjODg1OQor6KGaID4gaMO6OyAjODg1QQor6KGbID4gd8OoaTsgIzg4NUIKK+ihnCA+IGTDoG87ICM4ODVDCivooZ0gPiBjaMWNbmc7ICM4ODVECivooZ4gPiB3w6hpOyAjODg1RQor6KGfID4gZMOgbzsgIzg4NUYKK+ihoCA+IHpoxatuOyAjODg2MAor6KGhID4gaMOpbmc7ICM4ODYxCivooaIgPiBxw7o7ICM4ODYyCivooaMgPiB5xKs7ICM4ODYzCivooaQgPiB5xKsnICd6w6wnICdww6FuZzsgIzg4NjQKK+ihpSA+IGLFrTsgIzg4NjUKK+ihpiA+IGfEg247ICM4ODY2CivooacgPiB5w7o7ICM4ODY3CivooaggPiBiacSDbzsgIzg4NjgKK+ihqSA+IGNow6A7ICM4ODY5CivooaogPiB5xK07ICM4ODZBCivooasgPiBzaMSBbjsgIzg4NkIKK+ihrCA+IGNow6huOyAjODg2Qwor6KGtID4gZsWrOyAjODg2RAor6KGuID4gZ8WtbjsgIzg4NkUKK+ihryA+IGbEk247ICM4ODZGCivoobAgPiBzaHXEgWk7ICM4ODcwCivoobEgPiBqacOpOyAjODg3MQor6KGyID4gbsOgOyAjODg3Mgor6KGzID4gemjFjW5nOyAjODg3Mwor6KG0ID4gZMSDbjsgIzg4NzQKK+ihtSA+IHLDrDsgIzg4NzUKK+ihtiA+IHpow7JuZzsgIzg4NzYKK+ihtyA+IHpoxY1uZzsgIzg4NzcKK+ihuCA+IHhpw6g7ICM4ODc4CivoobkgPiBxw607ICM4ODc5CivoobogPiB4acOpOyAjODg3QQor6KG7ID4gcsOhbjsgIzg4N0IKK+ihvCA+IHpoxKs7ICM4ODdDCivoob0gPiByw6huOyAjODg3RAor6KG+ID4gccSrbjsgIzg4N0UKK+ihvyA+IGrEq247ICM4ODdGCivoooAgPiBqxatuOyAjODg4MAor6KKBID4geXXDoW47ICM4ODgxCivoooIgPiBtw6hpOyAjODg4Mgor6KKDID4gY2jDoGk7ICM4ODgzCivoooQgPiDEg287ICM4ODg0CivoooUgPiBuacSDbzsgIzg4ODUKK+iihiA+IGjFq2k7ICM4ODg2CivooocgPiByw6FuOyAjODg4Nwor6KKIID4gamnEgTsgIzg4ODgKK+iiiSA+IHTDum87ICM4ODg5CivoooogPiBsxK1uZzsgIzg4OEEKK+iiiyA+IGTDoGk7ICM4ODhCCivooowgPiBiw6BvOyAjODg4Qwor6KKNID4gcMOhbzsgIzg4OEQKK+iijiA+IHnDoG87ICM4ODhFCivooo8gPiB6w7lvOyAjODg4Rgor6KKQID4gYsOsOyAjODg5MAor6KKRID4gc2jDoG87ICM4ODkxCivoopIgPiB0xINuOyAjODg5Mgor6KKTID4gasWtOyAjODg5Mwor6KKUID4gaMOoOyAjODg5NAor6KKVID4gc2jDuTsgIzg4OTUKK+iiliA+IHjDrHU7ICM4ODk2CivoopcgPiB6aMSVbjsgIzg4OTcKK+iimCA+IHnDrTsgIzg4OTgKK+iimSA+IHDDoDsgIzg4OTkKK+iimiA+IGLFjTsgIzg4OUEKK+iimyA+IGTEqzsgIzg4OUIKK+iinCA+IHfDoDsgIzg4OUMKK+iinSA+IGbDuTsgIzg4OUQKK+iiniA+IGfFrW47ICM4ODlFCivoop8gPiB6aMOsOyAjODg5Rgor6KKgID4gemjDrDsgIzg4QTAKK+iioSA+IHLDoW47ICM4OEExCivooqIgPiBww6BuOyAjODhBMgor6KKjID4gecOsOyAjODhBMwor6KKkID4gbcOgbzsgIzg4QTQKK+iipSA+IHR1bzsgIzg4QTUKK+iipiA+IG7DoDsgIzg4QTYKK+iipyA+IGvFjXU7ICM4OEE3CivooqggPiB4acOgbjsgIzg4QTgKK+iiqSA+IGNoxIFuOyAjODhBOQor6KKqID4gccWrOyAjODhBQQor6KKrID4gYsOoaTsgIzg4QUIKK+iirCA+IGfFrW47ICM4OEFDCivooq0gPiB4w607ICM4OEFECivooq8gPiBiw7M7ICM4OEFGCivoorEgPiBmw7o7ICM4OEIxCivoorIgPiB5w607ICM4OEIyCivoorMgPiBjaMStOyAjODhCMwor6KK0ID4ga8O5OyAjODhCNAor6KK1ID4gcsOobjsgIzg4QjUKK+iitiA+IGppw6BuZzsgIzg4QjYKK+iityA+IGppw6E7ICM4OEI3CivoorggPiBjw7puOyAjODhCOAor6KK5ID4gbcOyOyAjODhCOQor6KK6ID4gamnDqTsgIzg4QkEKK+iiuyA+IMOpcjsgIzg4QkIKK+iivCA+IGzDuW87ICM4OEJDCivoor0gPiByw7o7ICM4OEJECivoor4gPiB6aMWrOyAjODhCRQor6KK/ID4gZ8WraTsgIzg4QkYKK+ijgCA+IHnEq247ICM4OEMwCivoo4EgPiBjw6FpOyAjODhDMQor6KOCID4gbGnDqDsgIzg4QzIKK+ijhSA+IHpodcSBbmc7ICM4OEM1Civoo4YgPiBkxIFuZzsgIzg4QzYKK+ijiCA+IGvFq247ICM4OEM4Civoo4kgPiBrw6huOyAjODhDOQor6KOKID4gbmnEg287ICM4OENBCivoo4sgPiBzaMO5OyAjODhDQgor6KOMID4gamnDoTsgIzg4Q0MKK+ijjSA+IGvFrW47ICM4OENECivoo44gPiBjaMOpbmc7ICM4OENFCivoo48gPiBsxK07ICM4OENGCivoo5AgPiBqdcSBbjsgIzg4RDAKK+ijkSA+IHNoxJNuOyAjODhEMQor6KOSID4gcMOzdTsgIzg4RDIKK+ijkyA+IGfDqTsgIzg4RDMKK+ijlCA+IHnDrDsgIzg4RDQKK+ijlSA+IHnDuTsgIzg4RDUKK+ijliA+IHpoxJVuOyAjODhENgor6KOXID4gbMOtdTsgIzg4RDcKK+ijmCA+IHHDrXU7ICM4OEQ4Civoo5kgPiBxw7puOyAjODhEOQor6KOaID4gasOsOyAjODhEQQor6KObID4gecOsOyAjODhEQgor6KOcID4gYsWtOyAjODhEQwor6KOdID4gemh1xIFuZzsgIzg4REQKK+ijniA+IHNow7lpOyAjODhERQor6KOfID4gc2jEgTsgIzg4REYKK+ijoCA+IHHDum47ICM4OEUwCivoo6EgPiBsxK07ICM4OEUxCivoo6IgPiBsacOhbjsgIzg4RTIKK+ijoyA+IGxpw6BuOyAjODhFMwor6KOkID4ga8O5OyAjODhFNAor6KOlID4gamnEg247ICM4OEU1Civoo6YgPiBmw7N1OyAjODhFNgor6KOnID4gY2jEgW47ICM4OEU3Civoo6ggPiBiw6w7ICM4OEU4Civoo6kgPiBnxatuOyAjODhFOQor6KOqID4gdMOhbzsgIzg4RUEKK+ijqyA+IHl1w6BuOyAjODhFQgor6KOsID4gbMOtbmc7ICM4OEVDCivoo60gPiBjaMStOyAjODhFRAor6KOuID4gY2jEgW5nOyAjODhFRQor6KOvID4gY2jDs3U7ICM4OEVGCivoo7AgPiBkw7pvOyAjODhGMAor6KOxID4gYmnEg287ICM4OEYxCivoo7IgPiBsacSDbmc7ICM4OEYyCivoo7MgPiBjaMOhbmc7ICM4OEYzCivoo7QgPiBww6lpOyAjODhGNAor6KO1ID4gcMOpaTsgIzg4RjUKK+ijtiA+IGbEk2k7ICM4OEY2Civoo7cgPiB5dcSBbjsgIzg4RjcKK+ijuCA+IGzFrW87ICM4OEY4Civoo7kgPiBnxa1vOyAjODhGOQor6KO6ID4gecSDbjsgIzg4RkEKK+ijuyA+IGTFrTsgIzg4RkIKK+ijvCA+IHjDrTsgIzg4RkMKK+ijvSA+IHpow6w7ICM4OEZECivoo74gPiBqxas7ICM4OEZFCivoo78gPiBxxK07ICM4OEZGCivopIAgPiBqw6w7ICM4OTAwCivopIEgPiB6aMOtOyAjODkwMQor6KSCID4gZ3XDoDsgIzg5MDIKK+ikgyA+IGvDqG47ICM4OTAzCivopIUgPiB0w6w7ICM4OTA1CivopIYgPiB0w607ICM4OTA2CivopIcgPiBmw7k7ICM4OTA3CivopIggPiBjaMOzbmc7ICM4OTA4CivopIkgPiB4acSTOyAjODkwOQor6KSKID4gYmnEg247ICM4OTBBCivopIsgPiBkacOpOyAjODkwQgor6KSMID4ga8WrbjsgIzg5MEMKK+ikjSA+IGR1xIFuOyAjODkwRAor6KSOID4geMOsdTsgIzg5MEUKK+ikjyA+IHjDrHU7ICM4OTBGCivopJAgPiBow6k7ICM4OTEwCivopJEgPiB5dcOgbjsgIzg5MTEKK+ikkiA+IGLEgW87ICM4OTEyCivopJMgPiBixINvOyAjODkxMwor6KSUID4gZsO5OyAjODkxNAor6KSVID4gecO6OyAjODkxNQor6KSWID4gdHXDoG47ICM4OTE2CivopJcgPiB5xINuOyAjODkxNwor6KSYID4gaMWraTsgIzg5MTgKK+ikmSA+IGLDqGk7ICM4OTE5CivopJogPiBjaMWtOyAjODkxQQor6KSbID4gbMeaOyAjODkxQgor6KSeID4gecWtbjsgIzg5MUUKK+iknyA+IGTDoTsgIzg5MUYKK+ikoCA+IGfFjXU7ICM4OTIwCivopKEgPiBkxIE7ICM4OTIxCivopKIgPiBodcOhaTsgIzg5MjIKK+ikoyA+IHLDs25nOyAjODkyMwor6KSkID4geXXDoG47ICM4OTI0CivopKUgPiByw7k7ICM4OTI1CivopKYgPiBuw6BpOyAjODkyNgor6KSnID4gasStb25nOyAjODkyNwor6KSoID4gc8WtbzsgIzg5MjgKK+ikqSA+IGLEgW47ICM4OTI5CivopKogPiB0w7luOyAjODkyQQor6KSrID4gY2jErTsgIzg5MkIKK+ikrCA+IHPEg25nOyAjODkyQwor6KStID4gbmnEg287ICM4OTJECivopK4gPiB5xKtuZzsgIzg5MkUKK+ikryA+IGppw6g7ICM4OTJGCivopLAgPiBxacSBbjsgIzg5MzAKK+iksSA+IGh1w6FpOyAjODkzMQor6KSyID4ga8O5OyAjODkzMgor6KSzID4gbGnDoW47ICM4OTMzCivopLQgPiBixINvOyAjODkzNAor6KS1ID4gbMOtOyAjODkzNQor6KS2ID4gemjDqTsgIzg5MzYKK+iktyA+IHNoxKs7ICM4OTM3CivopLggPiBsx5o7ICM4OTM4CivopLkgPiB5w6w7ICM4OTM5CivopLogPiBkacOpOyAjODkzQQor6KS7ID4geGnDqDsgIzg5M0IKK+ikvCA+IHhpxIFuOyAjODkzQwor6KS9ID4gd8OoaTsgIzg5M0QKK+ikviA+IGJpxINvOyAjODkzRQor6KS/ID4gY8OhbzsgIzg5M0YKK+ilgCA+IGrEqzsgIzg5NDAKK+ilgSA+IGppxINuZzsgIzg5NDEKK+ilgiA+IHPEk247ICM4OTQyCivopYMgPiBixIFvOyAjODk0Mwor6KWEID4geGnEgW5nOyAjODk0NAor6KWGID4gcMO6OyAjODk0Ngor6KWHID4gamnEg247ICM4OTQ3CivopYggPiB6aHXDoG47ICM4OTQ4CivopYkgPiBqacOgbjsgIzg5NDkKK+iliiA+IHrDuWk7ICM4OTRBCivopYsgPiBqw607ICM4OTRCCivopYwgPiBkxIFuOyAjODk0Qwor6KWNID4gesOhOyAjODk0RAor6KWOID4gZsOhbjsgIzg5NEUKK+iljyA+IGLDszsgIzg5NEYKK+ilkCA+IHhpw6BuZzsgIzg5NTAKK+ilkSA+IHjDrW47ICM4OTUxCivopZIgPiBiacOpOyAjODk1Mgor6KWTID4gcsOhbzsgIzg5NTMKK+illCA+IG3Eg247ICM4OTU0CivopZUgPiBsw6FuOyAjODk1NQor6KWWID4gxINvOyAjODk1Ngor6KWXID4gZMO6bzsgIzg5NTcKK+ilmCA+IGfDuWk7ICM4OTU4CivopZkgPiBjw6BvOyAjODk1OQor6KWaID4gc8O5aTsgIzg5NUEKK+ilmyA+IG7Ds25nOyAjODk1Qgor6KWcID4gY2jEgW47ICM4OTVDCivopZ0gPiBsacOgbjsgIzg5NUQKK+ilniA+IGLDrDsgIzg5NUUKK+ilnyA+IGrEq247ICM4OTVGCivopaAgPiBkxIFuZzsgIzg5NjAKK+iloSA+IHNow7o7ICM4OTYxCivopaIgPiB0xINuOyAjODk2Mgor6KWjID4gYsOsOyAjODk2Mwor6KWkID4gbMOhbjsgIzg5NjQKK+ilpSA+IHDDujsgIzg5NjUKK+ilpiA+IHLDujsgIzg5NjYKK+ilpyA+IHpoxK07ICM4OTY3CivopakgPiBzaMWtOyAjODk2OQor6KWqID4gd8OgOyAjODk2QQor6KWrID4gc2jDrDsgIzg5NkIKK+ilrCA+IGLEg2k7ICM4OTZDCivopa0gPiB4acOpOyAjODk2RAor6KWuID4gYsOzOyAjODk2RQor6KWvID4gY2jDqG47ICM4OTZGCivopbAgPiBsw6BpOyAjODk3MAor6KWxID4gbMOzbmc7ICM4OTcxCivopbIgPiB4w607ICM4OTcyCivopbMgPiB4acSBbjsgIzg5NzMKK+iltCA+IGzDoW47ICM4OTc0CivopbUgPiB6aMOpOyAjODk3NQor6KW2ID4gZMOgaTsgIzg5NzYKK+iluCA+IHrDoG47ICM4OTc4CivopbkgPiBzaMSrOyAjODk3OQor6KW6ID4gamnEg247ICM4OTdBCivopbsgPiBww6BuOyAjODk3Qgor6KW8ID4gecOsOyAjODk3Qwor6KW+ID4gecOgOyAjODk3RQor6KW/ID4geMSrOyAjODk3Rgor6KaAID4geMSrOyAjODk4MAor6KaBID4gecOgbzsgIzg5ODEKK+imgiA+IGbElW5nOyAjODk4Mgor6KaDID4gdMOhbjsgIzg5ODMKK+imhSA+IGJpw6BvOyAjODk4NQor6KaGID4gZsO5OyAjODk4Ngor6KaHID4gYsOgOyAjODk4Nwor6KaIID4gaMOpOyAjODk4OAor6KaJID4gasSrOyAjODk4OQor6KaKID4gasSrOyAjODk4QQor6KaLID4gamnDoG47ICM4OThCCivopowgPiBndcSBbjsgIzg5OEMKK+imjSA+IGJpw6BuOyAjODk4RAor6KaOID4gecOgbjsgIzg5OEUKK+imjyA+IGfFq2k7ICM4OThGCivoppAgPiBqdcOpOyAjODk5MAor6KaRID4gcGnEg247ICM4OTkxCivoppIgPiBtw6FvOyAjODk5Mgor6KaTID4gbcOsOyAjODk5Mwor6KaUID4gbcOsOyAjODk5NAor6KaVID4gbWnDqDsgIzg5OTUKK+imliA+IHNow6w7ICM4OTk2CivoppcgPiBzxKs7ICM4OTk3CivoppggPiB6aMSBbjsgIzg5OTgKK+immSA+IGzDum87ICM4OTk5CivoppogPiBqdcOpOyAjODk5QQor6KabID4gbcOsOyAjODk5Qgor6KacID4gdGnDoG87ICM4OTlDCivopp0gPiBsacOhbjsgIzg5OUQKK+imniA+IHnDoG87ICM4OTlFCivopp8gPiB6aMOsOyAjODk5Rgor6KagID4gasWrbjsgIzg5QTAKK+imoSA+IHjDrTsgIzg5QTEKK+imoiA+IHNoxINuOyAjODlBMgor6KajID4gd8STaTsgIzg5QTMKK+impCA+IHjDrDsgIzg5QTQKK+impSA+IHRpxINuOyAjODlBNQor6KamID4gecO6OyAjODlBNgor6KanID4gbMSDbjsgIzg5QTcKK+imqCA+IMOoOyAjODlBOAor6KapID4gZMWtOyAjODlBOQor6KaqID4gccSrbjsgIzg5QUEKK+imqyA+IHDEg25nOyAjODlBQgor6KasID4gasOsOyAjODlBQwor6KatID4gbcOtbmc7ICM4OUFECivopq4gPiB5w61uZzsgIzg5QUUKK+imryA+IGfDsnU7ICM4OUFGCivoprAgPiBxw7k7ICM4OUIwCivoprEgPiB6aMOgbjsgIzg5QjEKK+imsiA+IGrErW47ICM4OUIyCivoprMgPiBndcSBbjsgIzg5QjMKK+imtCA+IGTEk25nOyAjODlCNAor6Ka1ID4gamnDoG47ICM4OUI1CivoprYgPiBsw7pvOyAjODlCNgor6Ka3ID4gccO5OyAjODlCNwor6Ka4ID4gamnDoG47ICM4OUI4CivoprkgPiB3w6lpOyAjODlCOQor6Ka6ID4ganXDqTsgIzg5QkEKK+imuyA+IHHDuTsgIzg5QkIKK+imvCA+IGzDum87ICM4OUJDCivopr0gPiBsxINuOyAjODlCRAor6Ka+ID4gc2jElW47ICM4OUJFCivopr8gPiBkw607ICM4OUJGCivop4AgPiBndcSBbjsgIzg5QzAKK+ingSA+IGppw6BuOyAjODlDMQor6KeCID4gZ3XEgW47ICM4OUMyCivop4MgPiB5w6BuOyAjODlDMwor6KeEID4gZ8WraTsgIzg5QzQKK+inhSA+IG3DrDsgIzg5QzUKK+inhiA+IHNow6w7ICM4OUM2Civop4cgPiB6aMSBbjsgIzg5QzcKK+iniCA+IGzEg247ICM4OUM4Civop4kgPiBqdcOpOyAjODlDOQor6KeKID4gasOsOyAjODlDQQor6KeLID4geMOtOyAjODlDQgor6KeMID4gZMOtOyAjODlDQwor6KeNID4gdGnEg247ICM4OUNECivop44gPiB5w7o7ICM4OUNFCivop48gPiBnw7J1OyAjODlDRgor6KeQID4gasStbjsgIzg5RDAKK+inkSA+IHHDuTsgIzg5RDEKK+inkiA+IGppxINvOyAjODlEMgor6KeTID4gasSrdTsgIzg5RDMKK+inlCA+IGrEq247ICM4OUQ0Civop5UgPiBjxas7ICM4OUQ1Civop5YgPiBqdcOpOyAjODlENgor6KeXID4gemjDrDsgIzg5RDcKK+inmCA+IGNow6BvOyAjODlEOAor6KeZID4gasOtOyAjODlEOQor6KeaID4gZ8WrOyAjODlEQQor6KebID4gZMOgbjsgIzg5REIKK+innCA+IHrFrWk7ICM4OURDCivop50gPiBkxK07ICM4OURECivop54gPiBzaMSBbmc7ICM4OURFCivop58gPiBodcOgOyAjODlERgor6KegID4gcXXDoW47ICM4OUUwCivop6EgPiBnw6k7ICM4OUUxCivop6IgPiBjaMOsOyAjODlFMgor6KejID4gamnElTsgIzg5RTMKK+inpCA+IGfFrWk7ICM4OUU0Civop6UgPiBnxY1uZzsgIzg5RTUKK+inpiA+IGjDs25nOyAjODlFNgor6KenID4gamnElTsgIzg5RTcKK+inqCA+IGjDuW47ICM4OUU4Civop6kgPiBxw611OyAjODlFOQor6KeqID4geMSrbmc7ICM4OUVBCivop6sgPiBzw7k7ICM4OUVCCivop6wgPiBuw607ICM4OUVDCivop60gPiBqxKs7ICM4OUVECivop64gPiBsw7k7ICM4OUVFCivop68gPiB6aMOsOyAjODlFRgor6KewID4gemjEgTsgIzg5RjAKK+insSA+IGLDrDsgIzg5RjEKK+insiA+IHjEq25nOyAjODlGMgor6KezID4gaMO6OyAjODlGMwor6Ke0ID4gc2jEgW5nOyAjODlGNAor6Ke1ID4gZ8WNbmc7ICM4OUY1Civop7YgPiB6aMOsOyAjODlGNgor6Ke3ID4geHXDqTsgIzg5RjcKK+inuCA+IGNow7k7ICM4OUY4Civop7kgPiB4xKs7ICM4OUY5Civop7ogPiB5w607ICM4OUZBCivop7sgPiBsw7k7ICM4OUZCCivop7wgPiBqdcOpOyAjODlGQwor6Ke9ID4geMSrOyAjODlGRAor6Ke+ID4gecOgbjsgIzg5RkUKK+invyA+IHjEqzsgIzg5RkYKK+iogCA+IHnDoW47ICM4QTAwCivoqIEgPiB5w6FuJyAnesOsJyAncMOhbmc7ICM4QTAxCivoqIIgPiBkw6xuZzsgIzhBMDIKK+iogyA+IGbDuTsgIzhBMDMKK+iohCA+IHHDrXU7ICM4QTA0CivoqIUgPiBxw611OyAjOEEwNQor6KiGID4gamnDoG87ICM4QTA2CivoqIcgPiBoxY1uZzsgIzhBMDcKK+ioiCA+IGrDrDsgIzhBMDgKK+ioiSA+IGbDoG47ICM4QTA5CivoqIogPiB4w7luOyAjOEEwQQor6KiLID4gZGnDoG87ICM4QTBCCivoqIwgPiBow7NuZzsgIzhBMEMKK+iojSA+IGNow6A7ICM4QTBECivoqI4gPiB0xINvOyAjOEEwRQor6KiPID4geMWrOyAjOEEwRgor6KiQID4gamnDqTsgIzhBMTAKK+iokSA+IHnDrTsgIzhBMTEKK+iokiA+IHLDqG47ICM4QTEyCivoqJMgPiB4w7luOyAjOEExMwor6KiUID4gecOtbjsgIzhBMTQKK+iolSA+IHNow6BuOyAjOEExNQor6KiWID4gccOsOyAjOEExNgor6KiXID4gdMWrbzsgIzhBMTcKK+iomCA+IGrDrDsgIzhBMTgKK+iomSA+IHjDuW47ICM4QTE5CivoqJogPiB5w61uOyAjOEExQQor6KibID4gw6k7ICM4QTFCCivoqJwgPiBmxJNuOyAjOEExQwor6KidID4gecOgOyAjOEExRAor6KieID4gecSBbzsgIzhBMUUKK+ionyA+IHPDsm5nOyAjOEExRgor6KigID4gc2jElW47ICM4QTIwCivoqKEgPiB5w61uOyAjOEEyMQor6KiiID4geMSrbjsgIzhBMjIKK+iooyA+IGp1w6k7ICM4QTIzCivoqKQgPiB4acOhbzsgIzhBMjQKK+iopSA+IG7DqDsgIzhBMjUKK+iopiA+IGNow6luOyAjOEEyNgor6KinID4gecOzdTsgIzhBMjcKK+ioqCA+IHpoxK07ICM4QTI4CivoqKkgPiB4xKtvbmc7ICM4QTI5CivoqKogPiBmxINuZzsgIzhBMkEKK+ioqyA+IHjDrG47ICM4QTJCCivoqKwgPiBjaMSBbzsgIzhBMkMKK+iorSA+IHNow6g7ICM4QTJECivoqK4gPiB4acSBbjsgIzhBMkUKK+ioryA+IHNoxIM7ICM4QTJGCivoqLAgPiB0w7puOyAjOEEzMAor6KixID4geMWtOyAjOEEzMQor6KiyID4gecOsOyAjOEEzMgor6KizID4gecOsOyAjOEEzMwor6Ki0ID4gc8O5OyAjOEEzNAor6Ki1ID4gY2jEqzsgIzhBMzUKK+iotiA+IGjEkzsgIzhBMzYKK+iotyA+IHNoxJNuOyAjOEEzNwor6Ki4ID4gaMOpOyAjOEEzOAor6Ki5ID4geMO5OyAjOEEzOQor6Ki6ID4gemjElW47ICM4QTNBCivoqLsgPiB6aMO5OyAjOEEzQgor6Ki8ID4gemjDqG5nOyAjOEEzQwor6Ki9ID4gZ8OydTsgIzhBM0QKK+ioviA+IHrErTsgIzhBM0UKK+iovyA+IHrErTsgIzhBM0YKK+ipgCA+IHpoxIFuOyAjOEE0MAor6KmBID4gZ8WtOyAjOEE0MQor6KmCID4gZsO5OyAjOEE0Mgor6KmDID4gcXXEg247ICM4QTQzCivoqYQgPiBkacOpOyAjOEE0NAor6KmFID4gbMOtbmc7ICM4QTQ1CivoqYYgPiBkxK07ICM4QTQ2CivoqYcgPiB5w6BuZzsgIzhBNDcKK+ipiCA+IGzDrDsgIzhBNDgKK+ipiSA+IG7DoW87ICM4QTQ5CivoqYogPiBww6BuOyAjOEE0QQor6KmLID4gemjDsnU7ICM4QTRCCivoqYwgPiBnw6BuOyAjOEE0Qwor6KmNID4gecOsOyAjOEE0RAor6KmOID4gasO5OyAjOEE0RQor6KmPID4gw6BvOyAjOEE0Rgor6KmQID4gemjDoDsgIzhBNTAKK+ipkSA+IHTDum87ICM4QTUxCivoqZIgPiB5w607ICM4QTUyCivoqZMgPiBxxa07ICM4QTUzCivoqZQgPiB6aMOgbzsgIzhBNTQKK+iplSA+IHDDrW5nOyAjOEE1NQor6KmWID4gYsOsOyAjOEE1Ngor6KmXID4geMOsb25nOyAjOEE1Nwor6KmYID4gccO5OyAjOEE1OAor6KmZID4gYsOhOyAjOEE1OQor6KmaID4gZMOhOyAjOEE1QQor6KmbID4gesWtOyAjOEE1Qgor6KmcID4gdMSBbzsgIzhBNUMKK+ipnSA+IHpoxa07ICM4QTVECivoqZ4gPiBjw607ICM4QTVFCivoqZ8gPiB6aMOpOyAjOEE1Rgor6KmgID4gecWPbmc7ICM4QTYwCivoqaEgPiB4xa07ICM4QTYxCivoqaIgPiB4w7puOyAjOEE2Mgor6KmjID4gecOsOyAjOEE2Mwor6KmkID4gaHXEg25nOyAjOEE2NAor6KmlID4gaMOpOyAjOEE2NQor6KmmID4gc2jDrDsgIzhBNjYKK+ippyA+IGNow6E7ICM4QTY3CivoqaggPiBqacSBbzsgIzhBNjgKK+ipqSA+IHNoxKs7ICM4QTY5CivoqaogPiBoxJVuOyAjOEE2QQor6KmrID4gY2jDoDsgIzhBNkIKK+iprCA+IGfDsnU7ICM4QTZDCivoqa0gPiBnxa1pOyAjOEE2RAor6KmuID4gcXXDoW47ICM4QTZFCivoqa8gPiBow7lpOyAjOEE2Rgor6KmwID4gamnDqTsgIzhBNzAKK+ipsSA+IGh1w6A7ICM4QTcxCivoqbIgPiBnxIFpOyAjOEE3Mgor6KmzID4geGnDoW5nOyAjOEE3Mwor6Km0ID4gd8STaTsgIzhBNzQKK+iptSA+IHNoxJNuOyAjOEE3NQor6Km2ID4gY2jDs3U7ICM4QTc2CivoqbcgPiB0w7NuZzsgIzhBNzcKK+ipuCA+IG3DrTsgIzhBNzgKK+ipuSA+IHpoxIFuOyAjOEE3OQor6Km6ID4gbcOsbmc7ICM4QTdBCivoqbsgPiDDqDsgIzhBN0IKK+ipvCA+IGjFq2k7ICM4QTdDCivoqb0gPiB5w6FuOyAjOEE3RAor6Km+ID4geMSrb25nOyAjOEE3RQor6Km/ID4gZ3XDoDsgIzhBN0YKK+iqgCA+IMOocjsgIzhBODAKK+iqgSA+IGLElW5nOyAjOEE4MQor6KqCID4gdGnEg287ICM4QTgyCivoqoMgPiBjaMStOyAjOEE4Mwor6KqEID4gbMSVaTsgIzhBODQKK+iqhSA+IHpoxas7ICM4QTg1CivoqoYgPiBrdcSBbmc7ICM4QTg2CivoqocgPiBrdcSBOyAjOEE4Nwor6KqIID4gd8O6OyAjOEE4OAor6KqJID4gecO5OyAjOEE4OQor6KqKID4gdMOpbmc7ICM4QThBCivoqosgPiBqw6w7ICM4QThCCivoqowgPiB6aMOsOyAjOEE4Qwor6KqNID4gcsOobjsgIzhBOEQKK+iqjiA+IHPDuTsgIzhBOEUKK+iqjyA+IGzEg25nOyAjOEE4Rgor6KqQID4gw6k7ICM4QTkwCivoqpEgPiBrdcOhbmc7ICM4QTkxCivoqpIgPiDDqDsgIzhBOTIKK+iqkyA+IHNow6w7ICM4QTkzCivoqpQgPiB0xK1uZzsgIzhBOTQKK+iqlSA+IGTDoG47ICM4QTk1CivoqpYgPiBiw7M7ICM4QTk2CivoqpcgPiBjaMOhbjsgIzhBOTcKK+iqmCA+IHnDsnU7ICM4QTk4CivoqpkgPiBow6luZzsgIzhBOTkKK+iqmiA+IHFpw6BvOyAjOEE5QQor6KqbID4gccSrbjsgIzhBOUIKK+iqnCA+IHNodcOgOyAjOEE5Qwor6KqdID4gxIFuOyAjOEE5RAor6KqeID4gecWtOyAjOEE5RQor6KqfID4geGnDoG87ICM4QTlGCivoqqAgPiBjaMOpbmc7ICM4QUEwCivoqqEgPiBqacOoOyAjOEFBMQor6KqiID4geGnDoG47ICM4QUEyCivoqqMgPiB3w7o7ICM4QUEzCivoqqQgPiB3w7k7ICM4QUE0CivoqqUgPiBnw6BvOyAjOEFBNQor6KqmID4gc8Oybmc7ICM4QUE2CivoqqcgPiBwxa07ICM4QUE3CivoqqggPiBow7lpOyAjOEFBOAor6KqpID4gasOsbmc7ICM4QUE5CivoqqogPiBzaMWrbzsgIzhBQUEKK+iqqyA+IHpow6huOyAjOEFBQgor6KqsID4gc2jFq287ICM4QUFDCivoqq0gPiBkw7o7ICM4QUFECivoqq8gPiBjaMOgbmc7ICM4QUFGCivoqrAgPiBzaMO6aTsgIzhBQjAKK+iqsSA+IGppw6k7ICM4QUIxCivoqrIgPiBrw6g7ICM4QUIyCivoqrMgPiBxxas7ICM4QUIzCivoqrQgPiBjw7NuZzsgIzhBQjQKK+iqtSA+IHhpw6FvOyAjOEFCNQor6Kq2ID4gc8O5aTsgIzhBQjYKK+iqtyA+IHfEg25nOyAjOEFCNwor6Kq4ID4geHXDoW47ICM4QUI4CivoqrkgPiBmxJVpOyAjOEFCOQor6Kq6ID4gY2jEqzsgIzhBQkEKK+iquyA+IHTDoDsgIzhBQkIKK+iqvCA+IHnDrTsgIzhBQkMKK+iqvSA+IG7DoTsgIzhBQkQKK+iqviA+IHnDrW47ICM4QUJFCivoqr8gPiBkacOgbzsgIzhBQkYKK+irgCA+IHDErTsgIzhBQzAKK+irgSA+IGNow7lvOyAjOEFDMQor6KuCID4gY2jEg247ICM4QUMyCivoq4MgPiBjaMSTbjsgIzhBQzMKK+irhCA+IHpoxatuOyAjOEFDNAor6KuFID4gasSrOyAjOEFDNQor6KuGID4gccSrOyAjOEFDNgor6KuHID4gdMOhbjsgIzhBQzcKK+iriCA+IHpow7lpOyAjOEFDOAor6KuJID4gd8SVaTsgIzhBQzkKK+iriiA+IGrDujsgIzhBQ0EKK+iriyA+IHHErW5nOyAjOEFDQgor6KuMID4gamnDoG47ICM4QUNDCivoq40gPiB6aMSTbmc7ICM4QUNECivoq44gPiB6w6k7ICM4QUNFCivoq48gPiB6xY11OyAjOEFDRgor6KuQID4gcWnEgW47ICM4QUQwCivoq5EgPiB6aMO6bzsgIzhBRDEKK+irkiA+IGxpw6BuZzsgIzhBRDIKK+irkyA+IGppw6BuOyAjOEFEMwor6KuUID4gemjDuTsgIzhBRDQKK+irlSA+IGjDoW87ICM4QUQ1Civoq5YgPiBsw7luOyAjOEFENgor6KuXID4gc2jElW47ICM4QUQ3Civoq5ggPiBiacSDbzsgIzhBRDgKK+irmSA+IGh1w6BpOyAjOEFEOQor6KuaID4gcGnDoW47ICM4QURBCivoq5sgPiB5w7o7ICM4QURCCivoq5wgPiBkacOpOyAjOEFEQwor6KudID4geMWtOyAjOEFERAor6KueID4gcGnDoW47ICM4QURFCivoq58gPiBzaMOsOyAjOEFERgor6KugID4geHXEgW47ICM4QUUwCivoq6EgPiBzaMOsOyAjOEFFMQor6KuiID4gaMO5bjsgIzhBRTIKK+iroyA+IGh1w6A7ICM4QUUzCivoq6QgPiDDqDsgIzhBRTQKK+irpSA+IHpow7JuZzsgIzhBRTUKK+irpiA+IGTDrDsgIzhBRTYKK+irpyA+IHhpw6k7ICM4QUU3Civoq6ggPiBmw7o7ICM4QUU4Civoq6kgPiBwxa07ICM4QUU5Civoq6ogPiB0w61uZzsgIzhBRUEKK+irqyA+IGppw6BuOyAjOEFFQgor6KusID4gccStOyAjOEFFQwor6KutID4gecO5OyAjOEFFRAor6KuuID4gesSrOyAjOEFFRQor6KuvID4gY2h1w6FuOyAjOEFFRgor6KuwID4geMStOyAjOEFGMAor6KuxID4gaMO5aTsgIzhBRjEKK+irsiA+IHnEq247ICM4QUYyCivoq7MgPiDEgW47ICM4QUYzCivoq7QgPiB4acOhbjsgIzhBRjQKK+irtSA+IG7DoW47ICM4QUY1Civoq7YgPiBjaMOpbjsgIzhBRjYKK+irtyA+IGbEk25nOyAjOEFGNwor6Ku4ID4gemjFqzsgIzhBRjgKK+iruSA+IHnDoW5nOyAjOEFGOQor6Ku6ID4gecOgbjsgIzhBRkEKK+iruyA+IGjEk25nOyAjOEFGQgor6Ku8ID4geHXEgW47ICM4QUZDCivoq70gPiBnw6k7ICM4QUZECivoq74gPiBuw7lvOyAjOEFGRQor6Ku/ID4gccOsOyAjOEFGRgor6KyAID4gbcOzdTsgIzhCMDAKK+isgSA+IHnDqDsgIzhCMDEKK+isgiA+IHfDqGk7ICM4QjAyCivorIQgPiB0w6luZzsgIzhCMDQKK+ishSA+IHrFjXU7ICM4QjA1CivorIYgPiBzaMOgbjsgIzhCMDYKK+ishyA+IGppxINuOyAjOEIwNwor6KyIID4gYsOzOyAjOEIwOAor6KyJID4ga8O5MTsgIzhCMDkKK+isiiA+IGh1xINuZzsgIzhCMEEKK+isiyA+IGjDuW87ICM4QjBCCivorIwgPiBnxJM7ICM4QjBDCivorI0gPiB5w61uZzsgIzhCMEQKK+isjiA+IG3DrTsgIzhCMEUKK+isjyA+IHhpxINvOyAjOEIwRgor6KyQID4gbcOsOyAjOEIxMAor6KyRID4geMOsOyAjOEIxMQor6KySID4gcWnEgW5nOyAjOEIxMgor6KyTID4gY2jEk247ICM4QjEzCivorJQgPiBux5xlOyAjOEIxNAor6KyVID4gdMOtOyAjOEIxNQor6KyWID4gc8O5OyAjOEIxNgor6KyXID4gYsOgbmc7ICM4QjE3CivorJggPiBjaMOtOyAjOEIxOAor6KyZID4gcWnEgW47ICM4QjE5CivorJogPiBzaMOsOyAjOEIxQQor6KybID4gamnEg25nOyAjOEIxQgor6KycID4geXXDoG47ICM4QjFDCivorJ0gPiB4acOoOyAjOEIxRAor6KyeID4geHXDqDsgIzhCMUUKK+isnyA+IHTEgW87ICM4QjFGCivorKAgPiB5w6FvOyAjOEIyMAor6KyhID4gecOhbzsgIzhCMjEKK+isoyA+IHnDujsgIzhCMjMKK+ispCA+IGJpxIFvOyAjOEIyNAor6KylID4gY8Oybmc7ICM4QjI1CivorKYgPiBxw6xuZzsgIzhCMjYKK+ispyA+IGzDrTsgIzhCMjcKK+isqCA+IG3DszsgIzhCMjgKK+isqSA+IG3DsjsgIzhCMjkKK+isqiA+IHNoxIFuZzsgIzhCMkEKK+isqyA+IHpow6k7ICM4QjJCCivorKwgPiBtw6x1OyAjOEIyQwor6KytID4gamnEg247ICM4QjJECivorK4gPiB6w6k7ICM4QjJFCivorK8gPiBqacSTOyAjOEIyRgor6KywID4gbGnDoW47ICM4QjMwCivorLEgPiBsw7N1OyAjOEIzMQor6KyyID4gY8SBbjsgIzhCMzIKK+issyA+IMWNdTsgIzhCMzMKK+istCA+IGd1w6BuOyAjOEIzNAor6Ky1ID4geMOtOyAjOEIzNQor6Ky2ID4gemjDum87ICM4QjM2CivorLcgPiDDoW87ICM4QjM3CivorLggPiDDoW87ICM4QjM4CivorLkgPiBqxK1uOyAjOEIzOQor6Ky6ID4gemjDqTsgIzhCM0EKK+isuyA+IHnDrTsgIzhCM0IKK+isvCA+IGjDuTsgIzhCM0MKK+isvSA+IGppw6BuZzsgIzhCM0QKK+isviA+IG3DoW47ICM4QjNFCivorL8gPiBjaMOhbzsgIzhCM0YKK+itgCA+IGjDoG47ICM4QjQwCivorYEgPiBodcOhOyAjOEI0MQor6K2CID4gY2jEg247ICM4QjQyCivorYMgPiB4xas7ICM4QjQzCivorYQgPiB6xJNuZzsgIzhCNDQKK+ithSA+IHPDqDsgIzhCNDUKK+ithiA+IHjEqzsgIzhCNDYKK+ithyA+IHNoxJM7ICM4QjQ3CivorYggPiBkw7lpOyAjOEI0OAor6K2JID4gemjDqG5nOyAjOEI0OQor6K2KID4gbsOhbzsgIzhCNEEKK+itiyA+IGzDoW47ICM4QjRCCivorYwgPiDDqTsgIzhCNEMKK+itjSA+IHnDrG5nOyAjOEI0RAor6K2OID4ganXDqTsgIzhCNEUKK+itjyA+IGrEqzsgIzhCNEYKK+itkCA+IHrFrW47ICM4QjUwCivorZEgPiBqacSDbzsgIzhCNTEKK+itkiA+IGLDsjsgIzhCNTIKK+itkyA+IGjDuWk7ICM4QjUzCivorZQgPiB6aHXDoG47ICM4QjU0CivorZUgPiBtw7o7ICM4QjU1CivorZYgPiB6w6huOyAjOEI1Ngor6K2XID4gemjDoTsgIzhCNTcKK+itmCA+IHNow6w7ICM4QjU4CivorZkgPiBxacOhbzsgIzhCNTkKK+itmiA+IHTDoW47ICM4QjVBCivorZsgPiB6w6huOyAjOEI1Qgor6K2cID4gcMWtOyAjOEI1Qwor6K2dID4gc2jDqW5nOyAjOEI1RAor6K2eID4geHXEgW47ICM4QjVFCivorZ8gPiB6w6BvOyAjOEI1Rgor6K2gID4gdMSBbjsgIzhCNjAKK+itoSA+IGTEg25nOyAjOEI2MQor6K2iID4gc8O5aTsgIzhCNjIKK+itoyA+IHFpxIFuOyAjOEI2Mwor6K2kID4gasSrOyAjOEI2NAor6K2lID4gamnDoG87ICM4QjY1CivoraYgPiBqxK1uZzsgIzhCNjYKK+itpyA+IGxpw6FuOyAjOEI2Nwor6K2oID4gbsOzdTsgIzhCNjgKK+itqSA+IHnEqzsgIzhCNjkKK+itqiA+IMOgaTsgIzhCNkEKK+itqyA+IHpoxIFuOyAjOEI2Qgor6K2sID4gcMOsOyAjOEI2Qwor6K2tID4gaMWtaTsgIzhCNkQKK+itriA+IGh1w6A7ICM4QjZFCivora8gPiB5w6w7ICM4QjZGCivorbAgPiB5w6w7ICM4QjcwCivorbEgPiBzaMOgbjsgIzhCNzEKK+itsiA+IHLDoG5nOyAjOEI3Mgor6K2zID4gbsOydTsgIzhCNzMKK+ittCA+IHFpxINuOyAjOEI3NAor6K21ID4gemjDuWk7ICM4Qjc1CivorbYgPiB0w6A7ICM4Qjc2CivorbcgPiBow7k7ICM4Qjc3CivorbggPiB6aMWNdTsgIzhCNzgKK+ituSA+IGjDoW87ICM4Qjc5CivorbogPiB5w6g7ICM4QjdBCivorbsgPiB5xKtuZzsgIzhCN0IKK+itvCA+IGppw6BuOyAjOEI3Qwor6K29ID4gecO5OyAjOEI3RAor6K2+ID4gamnEg247ICM4QjdFCivorb8gPiBow7lpOyAjOEI3Rgor6K6AID4gZMO6OyAjOEI4MAor6K6BID4gemjDqTsgIzhCODEKK+iugiA+IHh1w6BuOyAjOEI4Mgor6K6DID4gesOgbjsgIzhCODMKK+iuhCA+IGzElWk7ICM4Qjg0CivoroUgPiBzaMSVbjsgIzhCODUKK+iuhiA+IHfDqGk7ICM4Qjg2CivorocgPiBjaMSDbjsgIzhCODcKK+iuiCA+IGzDrDsgIzhCODgKK+iuiSA+IHnDrTsgIzhCODkKK+iuiiA+IGJpw6BuOyAjOEI4QQor6K6LID4gemjDqTsgIzhCOEIKK+iujCA+IHnDoG47ICM4QjhDCivoro0gPiDDqDsgIzhCOEQKK+iujiA+IGNow7N1OyAjOEI4RQor6K6PID4gd8OoaTsgIzhCOEYKK+iukCA+IGNow7N1OyAjOEI5MAor6K6RID4gecOgbzsgIzhCOTEKK+iukiA+IGNow6FuOyAjOEI5Mgor6K6TID4gcsOgbmc7ICM4QjkzCivorpQgPiB5xK1uOyAjOEI5NAor6K6VID4gbMOhbjsgIzhCOTUKK+iuliA+IGNow6huOyAjOEI5Ngor6K6XID4gaMO5bzsgIzhCOTcKK+iumCA+IHpow6k7ICM4Qjk4CivorpkgPiBodcSBbjsgIzhCOTkKK+iumiA+IHrDoG47ICM4QjlBCivorpsgPiB5w6w7ICM4QjlCCivorpwgPiBkxINuZzsgIzhCOUMKK+iunSA+IHpoxIFuOyAjOEI5RAor6K6eID4gecOgbjsgIzhCOUUKK+iunyA+IGTDujsgIzhCOUYKK+iuoCA+IHnDoW47ICM4QkEwCivorqEgPiBqw6w7ICM4QkExCivorqIgPiBkw6xuZzsgIzhCQTIKK+iuoyA+IGbDuTsgIzhCQTMKK+iupCA+IHLDqG47ICM4QkE0CivorqUgPiBqxKs7ICM4QkE1CivorqYgPiBqacOpOyAjOEJBNgor6K6nID4gaMOzbmc7ICM4QkE3CivorqggPiB0xINvOyAjOEJBOAor6K6pID4gcsOgbmc7ICM4QkE5CivorqogPiBzaMOgbjsgIzhCQUEKK+iuqyA+IHHDrDsgIzhCQUIKK+iurCA+IHTFq287ICM4QkFDCivorq0gPiB4w7luOyAjOEJBRAor6K6uID4gecOsOyAjOEJBRQor6K6vID4geMO5bjsgIzhCQUYKK+iusCA+IGrDrDsgIzhCQjAKK+iusSA+IHLDqG47ICM4QkIxCivorrIgPiBqacSDbmc7ICM4QkIyCivorrMgPiBow7lpOyAjOEJCMwor6K60ID4gxY11OyAjOEJCNAor6K61ID4gasO5OyAjOEJCNQor6K62ID4gecOgOyAjOEJCNgor6K63ID4gbsOoOyAjOEJCNwor6K64ID4geMWtOyAjOEJCOAor6K65ID4gw6k7ICM4QkI5CivorrogPiBsw7luOyAjOEJCQQor6K67ID4geMSrb25nOyAjOEJCQgor6K68ID4gc8Oybmc7ICM4QkJDCivorr0gPiBmxJNuZzsgIzhCQkQKK+iuviA+IHNow6g7ICM4QkJFCivorr8gPiBmxINuZzsgIzhCQkYKK+ivgCA+IGp1w6k7ICM4QkMwCivor4EgPiB6aMOobmc7ICM4QkMxCivor4IgPiBnxa07ICM4QkMyCivor4MgPiBoxJM7ICM4QkMzCivor4QgPiBww61uZzsgIzhCQzQKK+ivhSA+IHrFrTsgIzhCQzUKK+ivhiA+IHNow6w7ICM4QkM2Civor4cgPiB4w6xvbmc7ICM4QkM3Civor4ggPiB6aMOgOyAjOEJDOAor6K+JID4gc8O5OyAjOEJDOQor6K+KID4gemjElW47ICM4QkNBCivor4sgPiBkxK07ICM4QkNCCivor4wgPiB6xY11OyAjOEJDQwor6K+NID4gY8OtOyAjOEJDRAor6K+OID4gccO5OyAjOEJDRQor6K+PID4gemjDoG87ICM4QkNGCivor5AgPiBiw6w7ICM4QkQwCivor5EgPiB5w6w7ICM4QkQxCivor5IgPiB5w607ICM4QkQyCivor5MgPiBrdcSBbmc7ICM4QkQzCivor5QgPiBsxJVpOyAjOEJENAor6K+VID4gc2jDrDsgIzhCRDUKK+ivliA+IGd1w6A7ICM4QkQ2Civor5cgPiBzaMSrOyAjOEJENwor6K+YID4gamnDqTsgIzhCRDgKK+ivmSA+IGjFq2k7ICM4QkQ5Civor5ogPiBjaMOpbmc7ICM4QkRBCivor5sgPiB6aMWrOyAjOEJEQgor6K+cID4gc2jEk247ICM4QkRDCivor50gPiBodcOgOyAjOEJERAor6K+eID4gZMOgbjsgIzhCREUKK+ivnyA+IGfDsnU7ICM4QkRGCivor6AgPiBxdcOhbjsgIzhCRTAKK+ivoSA+IGfFrWk7ICM4QkUxCivor6IgPiB4w7puOyAjOEJFMgor6K+jID4gecOsOyAjOEJFMwor6K+kID4gemjEk25nOyAjOEJFNAor6K+lID4gZ8SBaTsgIzhCRTUKK+ivpiA+IHhpw6FuZzsgIzhCRTYKK+ivpyA+IGNow6A7ICM4QkU3Civor6ggPiBow7luOyAjOEJFOAor6K+pID4geMWtOyAjOEJFOQor6K+qID4gemjFjXU7ICM4QkVBCivor6sgPiBqacOoOyAjOEJFQgor6K+sID4gd8O6OyAjOEJFQwor6K+tID4gecWtOyAjOEJFRAor6K+uID4gcWnDoG87ICM4QkVFCivor68gPiB3w7k7ICM4QkVGCivor7AgPiBnw6BvOyAjOEJGMAor6K+xID4gecOydTsgIzhCRjEKK+ivsiA+IGjDuWk7ICM4QkYyCivor7MgPiBrdcOhbmc7ICM4QkYzCivor7QgPiBzaMWrbzsgIzhCRjQKK+ivtSA+IHPDsm5nOyAjOEJGNQor6K+2ID4gxIFpOyAjOEJGNgor6K+3ID4gccStbmc7ICM4QkY3Civor7ggPiB6aMWrOyAjOEJGOAor6K+5ID4gesWNdTsgIzhCRjkKK+ivuiA+IG7DuW87ICM4QkZBCivor7sgPiBkw7o7ICM4QkZCCivor7wgPiB6aMO6bzsgIzhCRkMKK+ivvSA+IGbElWk7ICM4QkZECivor74gPiBrw6g7ICM4QkZFCivor78gPiB3xJVpOyAjOEJGRgor6LCAID4gecO6OyAjOEMwMAor6LCBID4gc2jDumk7ICM4QzAxCivosIIgPiBzaMSVbjsgIzhDMDIKK+iwgyA+IGRpw6BvOyAjOEMwMwor6LCEID4gY2jEg247ICM4QzA0CivosIUgPiBsacOgbmc7ICM4QzA1CivosIYgPiB6aMWrbjsgIzhDMDYKK+iwhyA+IHPDuWk7ICM4QzA3CivosIggPiB0w6FuOyAjOEMwOAor6LCJID4gc2jElW47ICM4QzA5CivosIogPiB5w607ICM4QzBBCivosIsgPiBtw7N1OyAjOEMwQgor6LCMID4gY2jDqW47ICM4QzBDCivosI0gPiBkacOpOyAjOEMwRAor6LCOID4gaHXEg25nOyAjOEMwRQor6LCPID4gamnDoG47ICM4QzBGCivosJAgPiB4acOpOyAjOEMxMAor6LCRID4gbsecZTsgIzhDMTEKK+iwkiA+IHnDqDsgIzhDMTIKK+iwkyA+IHfDqGk7ICM4QzEzCivosJQgPiDDqDsgIzhDMTQKK+iwlSA+IHnDuTsgIzhDMTUKK+iwliA+IHh1xIFuOyAjOEMxNgor6LCXID4gY2jDoW47ICM4QzE3CivosJggPiB6xKs7ICM4QzE4CivosJkgPiDEgW47ICM4QzE5CivosJogPiB5w6BuOyAjOEMxQQor6LCbID4gZMOsOyAjOEMxQgor6LCcID4gbcOtOyAjOEMxQwor6LCdID4gcGnDoW47ICM4QzFECivosJ4gPiB4xa07ICM4QzFFCivosJ8gPiBtw7M7ICM4QzFGCivosKAgPiBkxINuZzsgIzhDMjAKK+iwoSA+IHPDuTsgIzhDMjEKK+iwoiA+IHhpw6g7ICM4QzIyCivosKMgPiB5w6FvOyAjOEMyMwor6LCkID4gYsOgbmc7ICM4QzI0CivosKUgPiBzaMOsOyAjOEMyNQor6LCmID4gcWnEgW47ICM4QzI2CivosKcgPiBtw6w7ICM4QzI3CivosKggPiBqxK1uOyAjOEMyOAor6LCpID4gbcOhbjsgIzhDMjkKK+iwqiA+IHpow6k7ICM4QzJBCivosKsgPiBqacSDbjsgIzhDMkIKK+iwrCA+IG3DrHU7ICM4QzJDCivosK0gPiB0w6FuOyAjOEMyRAor6LCuID4gesOobjsgIzhDMkUKK+iwryA+IHFpw6FvOyAjOEMyRgor6LCwID4gbMOhbjsgIzhDMzAKK+iwsSA+IHDFrTsgIzhDMzEKK+iwsiA+IGp1w6k7ICM4QzMyCivosLMgPiB5w6BuOyAjOEMzMwor6LC0ID4gcWnEg247ICM4QzM0CivosLUgPiB6aMSBbjsgIzhDMzUKK+iwtiA+IGNow6huOyAjOEMzNgor6LC3ID4gZ8WtOyAjOEMzNwor6LC4ID4gcWnEgW47ICM4QzM4CivosLkgPiBow7NuZzsgIzhDMzkKK+iwuiA+IHhpxIE7ICM4QzNBCivosLsgPiBqdcOpOyAjOEMzQgor6LC8ID4gaMOzbmc7ICM4QzNDCivosL0gPiBoxIFuOyAjOEMzRAor6LC+ID4gaMWNbmc7ICM4QzNFCivosL8gPiB4xKs7ICM4QzNGCivosYAgPiB4xKs7ICM4QzQwCivosYEgPiBow7lvOyAjOEM0MQor6LGCID4gbGnDoW87ICM4QzQyCivosYMgPiBoxINuOyAjOEM0Mwor6LGEID4gZMO6OyAjOEM0NAor6LGFID4gbMOzbmc7ICM4QzQ1CivosYYgPiBkw7J1OyAjOEM0Ngor6LGHID4gamnEgW5nOyAjOEM0Nwor6LGIID4gccStOyAjOEM0OAor6LGJID4gc2jDrDsgIzhDNDkKK+ixiiA+IGzErTsgIzhDNEEKK+ixiyA+IGTEk25nOyAjOEM0Qgor6LGMID4gd8SBbjsgIzhDNEMKK+ixjSA+IGLEqzsgIzhDNEQKK+ixjiA+IHNow7k7ICM4QzRFCivosY8gPiB4acOgbjsgIzhDNEYKK+ixkCA+IGbEk25nOyAjOEM1MAor6LGRID4gemjDrDsgIzhDNTEKK+ixkiA+IHpow6w7ICM4QzUyCivosZMgPiB5w6BuOyAjOEM1Mwor6LGUID4gecOgbjsgIzhDNTQKK+ixlSA+IHNoxK07ICM4QzU1CivosZYgPiBjaMO5OyAjOEM1Ngor6LGXID4gaMWraTsgIzhDNTcKK+ixmCA+IHTDum47ICM4QzU4CivosZkgPiB5w6w7ICM4QzU5CivosZogPiB0w7puOyAjOEM1QQor6LGbID4gecOsOyAjOEM1Qgor6LGcID4gamnEgW47ICM4QzVDCivosZ0gPiBixIE7ICM4QzVECivosZ4gPiBow7J1OyAjOEM1RQor6LGfID4gw6g7ICM4QzVGCivosaAgPiBjw7o7ICM4QzYwCivosaEgPiB4acOgbmc7ICM4QzYxCivosaIgPiBodcOgbjsgIzhDNjIKK+ixoyA+IGppxIFuOyAjOEM2Mwor6LGkID4ga8SVbjsgIzhDNjQKK+ixpSA+IGfEgWk7ICM4QzY1CivosaYgPiBxw7o7ICM4QzY2CivosacgPiBmxas7ICM4QzY3CivosaggPiB4xKs7ICM4QzY4CivosakgPiBixKtuOyAjOEM2OQor6LGqID4gaMOhbzsgIzhDNkEKK+ixqyA+IHnDuTsgIzhDNkIKK+ixrCA+IHpoxas7ICM4QzZDCivosa0gPiBqacSBOyAjOEM2RAor6LGvID4geMSrOyAjOEM2Rgor6LGwID4gYsOzOyAjOEM3MAor6LGxID4gd8STbjsgIzhDNzEKK+ixsiA+IGh1w6FuOyAjOEM3Mgor6LGzID4gYsSrbjsgIzhDNzMKK+ixtCA+IGTDrTsgIzhDNzQKK+ixtSA+IHrFjW5nOyAjOEM3NQor6LG2ID4gZsOpbjsgIzhDNzYKK+ixtyA+IHnDrDsgIzhDNzcKK+ixuCA+IHpow6w7ICM4Qzc4CivosbkgPiBiw6BvOyAjOEM3OQor6LG6ID4gY2jDoWk7ICM4QzdBCivosbsgPiBow6BuOyAjOEM3Qgor6LG8ID4gcMOtOyAjOEM3Qwor6LG9ID4gbsOgOyAjOEM3RAor6LG+ID4gcMSrOyAjOEM3RQor6LG/ID4gZ8WPdTsgIzhDN0YKK+iygCA+IG7DoDsgIzhDODAKK+iygSA+IHnDsnU7ICM4QzgxCivosoIgPiBkacSBbzsgIzhDODIKK+iygyA+IG3DsjsgIzhDODMKK+iyhCA+IHPDrDsgIzhDODQKK+iyhSA+IHjEq3U7ICM4Qzg1CivosoYgPiBodcOhbjsgIzhDODYKK+iyhyA+IGvFq247ICM4Qzg3CivosoggPiBow6k7ICM4Qzg4CivosokgPiBow6k7ICM4Qzg5CivosoogPiBtw7I7ICM4QzhBCivososgPiBow6BuOyAjOEM4Qgor6LKMID4gbcOgbzsgIzhDOEMKK+iyjSA+IGzDrTsgIzhDOEQKK+iyjiA+IG7DrTsgIzhDOEUKK+iyjyA+IGLErTsgIzhDOEYKK+iykCA+IHnFrTsgIzhDOTAKK+iykSA+IGppxIE7ICM4QzkxCivospIgPiB0dcSBbjsgIzhDOTIKK+iykyA+IG3EgW87ICM4QzkzCivospQgPiBww607ICM4Qzk0CivospUgPiB4xKs7ICM4Qzk1CivospYgPiDDqDsgIzhDOTYKK+iylyA+IGrDuTsgIzhDOTcKK+iymCA+IG3DsjsgIzhDOTgKK+iymSA+IGNoxas7ICM4Qzk5CivospogPiB0w6FuOyAjOEM5QQor6LKbID4gaHXEgW47ICM4QzlCCivospwgPiBqdcOpOyAjOEM5Qwor6LKdID4gYsOoaTsgIzhDOUQKK+iyniA+IHpoxJNuOyAjOEM5RQor6LKfID4geXXDoW47ICM4QzlGCivosqAgPiBmw7k7ICM4Q0EwCivosqEgPiBjw6FpOyAjOENBMQor6LKiID4gZ8Oybmc7ICM4Q0EyCivosqMgPiB0w6g7ICM4Q0EzCivosqQgPiB5w607ICM4Q0E0CivosqUgPiBow6FuZzsgIzhDQTUKK+iypiA+IHfDoG47ICM4Q0E2CivosqcgPiBww61uOyAjOENBNwor6LKoID4gaMO5bzsgIzhDQTgKK+iyqSA+IGbDoG47ICM4Q0E5CivosqogPiB0xIFuOyAjOENBQQor6LKrID4gZ3XDoG47ICM4Q0FCCivosqwgPiB6w6k7ICM4Q0FDCivosq0gPiB6aMOtOyAjOENBRAor6LKuID4gw6hyOyAjOENBRQor6LKvID4gemjFrTsgIzhDQUYKK+iysCA+IHNow6w7ICM4Q0IwCivosrEgPiBiw6w7ICM4Q0IxCivosrIgPiB6xKs7ICM4Q0IyCivosrMgPiDDqHI7ICM4Q0IzCivosrQgPiBnw7lpOyAjOENCNAor6LK1ID4gcGnEg247ICM4Q0I1CivosrYgPiBiacSDbjsgIzhDQjYKK+iytyA+IG3Eg2k7ICM4Q0I3CivosrggPiBkw6BpOyAjOENCOAor6LK5ID4gc2jDqG5nOyAjOENCOQor6LK6ID4ga3XDoG5nOyAjOENCQQor6LK7ID4gZsOoaTsgIzhDQkIKK+iyvCA+IHRpxJM7ICM4Q0JDCivosr0gPiB5w607ICM4Q0JECivosr4gPiBjaMOtOyAjOENCRQor6LK/ID4gbcOgbzsgIzhDQkYKK+izgCA+IGjDqDsgIzhDQzAKK+izgSA+IGLDrDsgIzhDQzEKK+izgiA+IGzDuTsgIzhDQzIKK+izgyA+IHLDqG47ICM4Q0MzCivos4QgPiBow7lpOyAjOENDNAor6LOFID4gZ8SBaTsgIzhDQzUKK+izhiA+IHBpw6FuOyAjOENDNgor6LOHID4gesSrOyAjOENDNwor6LOIID4gamnEgzsgIzhDQzgKK+iziSA+IHjDuTsgIzhDQzkKK+iziiA+IHrDqWk7ICM4Q0NBCivos4sgPiBqacSDbzsgIzhDQ0IKK+izjCA+IGfDoGk7ICM4Q0NDCivos40gPiB6xIFuZzsgIzhDQ0QKK+izjiA+IGppw6BuOyAjOENDRQor6LOPID4gecOsbmc7ICM4Q0NGCivos5AgPiB4w7luOyAjOENEMAor6LORID4gemjDqG47ICM4Q0QxCivos5IgPiBzaMSTOyAjOENEMgor6LOTID4gYsSrbjsgIzhDRDMKK+izlCA+IGLEq247ICM4Q0Q0Civos5UgPiBxw611OyAjOENENQor6LOWID4gc2jEkzsgIzhDRDYKK+izlyA+IGNodcOgbjsgIzhDRDcKK+izmCA+IHrEgW5nOyAjOENEOAor6LOZID4gemjFjXU7ICM4Q0Q5Civos5ogPiBsw6BpOyAjOENEQQor6LObID4gesOgbjsgIzhDREIKK+iznCA+IHPDrDsgIzhDREMKK+iznSA+IGNoxJNuOyAjOENERAor6LOeID4gc2jEg25nOyAjOENERQor6LOfID4gdGnEg247ICM4Q0RGCivos6AgPiBww6lpOyAjOENFMAor6LOhID4gZ8STbmc7ICM4Q0UxCivos6IgPiB4acOhbjsgIzhDRTIKK+izoyA+IG3DoGk7ICM4Q0UzCivos6QgPiBqacOgbjsgIzhDRTQKK+izpSA+IHPDuWk7ICM4Q0U1Civos6YgPiBmw7k7ICM4Q0U2Civos6cgPiB0w6BuOyAjOENFNwor6LOoID4gY8Ozbmc7ICM4Q0U4Civos6kgPiBjw7NuZzsgIzhDRTkKK+izqiA+IHpow607ICM4Q0VBCivos6sgPiBqxKs7ICM4Q0VCCivos6wgPiB6aMOgbmc7ICM4Q0VDCivos60gPiBkxa07ICM4Q0VECivos64gPiBqw6xuOyAjOENFRQor6LOvID4geMSrb25nOyAjOENFRgor6LOwID4gc2jFrW47ICM4Q0YwCivos7EgPiB5xa1uOyAjOENGMQor6LOyID4gYsSDbzsgIzhDRjIKK+izsyA+IHrEgWk7ICM4Q0YzCivos7QgPiBsw6BpOyAjOENGNAor6LO1ID4gZsOobmc7ICM4Q0Y1Civos7YgPiBjw6BuZzsgIzhDRjYKK+iztyA+IGrEqzsgIzhDRjcKK+izuCA+IHNow6huZzsgIzhDRjgKK+izuSA+IMOgaTsgIzhDRjkKK+izuiA+IHpodcOgbjsgIzhDRkEKK+izuyA+IGbDuTsgIzhDRkIKK+izvCA+IGfDsnU7ICM4Q0ZDCivos70gPiBzw6BpOyAjOENGRAor6LO+ID4gesOpOyAjOENGRQor6LO/ID4gbGnDoW87ICM4Q0ZGCivotIAgPiB3w6hpOyAjOEQwMAor6LSBID4gYsOgaTsgIzhEMDEKK+i0giA+IGNoxJVuOyAjOEQwMgor6LSDID4gemh1w6BuOyAjOEQwMwor6LSEID4gemjDrDsgIzhEMDQKK+i0hSA+IHpow7lpOyAjOEQwNQor6LSGID4gYmnEgW87ICM4RDA2CivotIcgPiB5xatuOyAjOEQwNwor6LSIID4gesOobmc7ICM4RDA4CivotIkgPiB0xINuOyAjOEQwOQor6LSKID4gesOgbjsgIzhEMEEKK+i0iyA+IHnDoG47ICM4RDBCCivotI0gPiBzaMOgbjsgIzhEMEQKK+i0jiA+IHfDoG47ICM4RDBFCivotI8gPiB5w61uZzsgIzhEMEYKK+i0kCA+IGrDrG47ICM4RDEwCivotJEgPiBnxINuOyAjOEQxMQor6LSSID4geGnDoW47ICM4RDEyCivotJMgPiB6xIFuZzsgIzhEMTMKK+i0lCA+IGLDrDsgIzhEMTQKK+i0lSA+IGTDujsgIzhEMTUKK+i0liA+IHNow7o7ICM4RDE2CivotJcgPiB5w6BuOyAjOEQxNwor6LSZID4geHXDoG47ICM4RDE5CivotJogPiBsw7JuZzsgIzhEMUEKK+i0myA+IGfDoG47ICM4RDFCCivotJwgPiB6xIFuZzsgIzhEMUMKK+i0nSA+IGLDqGk7ICM4RDFECivotJ4gPiB6aMSTbjsgIzhEMUUKK+i0nyA+IGbDuTsgIzhEMUYKK+i0oCA+IHl1w6FuOyAjOEQyMAor6LShID4gZ8Oybmc7ICM4RDIxCivotKIgPiBjw6FpOyAjOEQyMgor6LSjID4gesOpOyAjOEQyMwor6LSkID4geGnDoW47ICM4RDI0CivotKUgPiBiw6BpOyAjOEQyNQor6LSmID4gemjDoG5nOyAjOEQyNgor6LSnID4gaMO5bzsgIzhEMjcKK+i0qCA+IHpow607ICM4RDI4CivotKkgPiBmw6BuOyAjOEQyOQor6LSqID4gdMSBbjsgIzhEMkEKK+i0qyA+IHDDrW47ICM4RDJCCivotKwgPiBiacSDbjsgIzhEMkMKK+i0rSA+IGfDsnU7ICM4RDJECivotK4gPiB6aMWtOyAjOEQyRQor6LSvID4gZ3XDoG47ICM4RDJGCivotLAgPiDDqHI7ICM4RDMwCivotLEgPiBqacOgbjsgIzhEMzEKK+i0siA+IGLDrDsgIzhEMzIKK+i0syA+IHNow6w7ICM4RDMzCivotLQgPiB0acSTOyAjOEQzNAor6LS1ID4gZ8O5aTsgIzhEMzUKK+i0tiA+IGt1w6BuZzsgIzhEMzYKK+i0tyA+IGTDoGk7ICM4RDM3CivotLggPiBtw6BvOyAjOEQzOAor6LS5ID4gZsOoaTsgIzhEMzkKK+i0uiA+IGjDqDsgIzhEM0EKK+i0uyA+IHnDrTsgIzhEM0IKK+i0vCA+IHrDqWk7ICM4RDNDCivotL0gPiB6aMOsOyAjOEQzRAor6LS+ID4gamnEgzsgIzhEM0UKK+i0vyA+IGjDuWk7ICM4RDNGCivotYAgPiB6xKs7ICM4RDQwCivotYEgPiByw6huOyAjOEQ0MQor6LWCID4gbMO5OyAjOEQ0Mgor6LWDID4gesSBbmc7ICM4RDQzCivotYQgPiB6xKs7ICM4RDQ0CivotYUgPiBnxIFpOyAjOEQ0NQor6LWGID4gasOsbjsgIzhENDYKK+i1hyA+IHHDrXU7ICM4RDQ3CivotYggPiB6aMOobjsgIzhENDgKK+i1iSA+IGzDoGk7ICM4RDQ5CivotYogPiBzaMSTOyAjOEQ0QQor6LWLID4gZsO5OyAjOEQ0Qgor6LWMID4gZMWtOyAjOEQ0Qwor6LWNID4gasSrOyAjOEQ0RAor6LWOID4gc2jDujsgIzhENEUKK+i1jyA+IHNoxINuZzsgIzhENEYKK+i1kCA+IHPDrDsgIzhENTAKK+i1kSA+IGLDrDsgIzhENTEKK+i1kiA+IHpoxY11OyAjOEQ1Mgor6LWTID4gZ8STbmc7ICM4RDUzCivotZQgPiBww6lpOyAjOEQ1NAor6LWVID4gdMOgbjsgIzhENTUKK+i1liA+IGzDoGk7ICM4RDU2CivotZcgPiBmw6huZzsgIzhENTcKK+i1mCA+IHpow7lpOyAjOEQ1OAor6LWZID4gZsO5OyAjOEQ1OQor6LWaID4gemh1w6BuOyAjOEQ1QQor6LWbID4gc8OgaTsgIzhENUIKK+i1nCA+IHrDqTsgIzhENUMKK+i1nSA+IHnDoG47ICM4RDVECivotZ4gPiB6w6BuOyAjOEQ1RQor6LWfID4gecWrbjsgIzhENUYKK+i1oCA+IHrDqG5nOyAjOEQ2MAor6LWhID4gc2jDoG47ICM4RDYxCivotaIgPiB5w61uZzsgIzhENjIKK+i1oyA+IGfDoG47ICM4RDYzCivotaQgPiBjaMOsOyAjOEQ2NAor6LWlID4geMOsOyAjOEQ2NQor6LWmID4gc2jDqDsgIzhENjYKK+i1pyA+IG7Eg247ICM4RDY3CivotaggPiB4w61vbmc7ICM4RDY4CivotakgPiB4w6w7ICM4RDY5CivotaogPiBjaMSTbmc7ICM4RDZBCivotasgPiBow6g7ICM4RDZCCivotawgPiBjaMSTbmc7ICM4RDZDCivota0gPiB6aMSVOyAjOEQ2RAor6LWuID4geGnDoTsgIzhENkUKK+i1ryA+IHTDoW5nOyAjOEQ2Rgor6LWwID4gesWPdTsgIzhENzAKK+i1sSA+IHrFj3U7ICM4RDcxCivotbIgPiBsw6w7ICM4RDcyCivotbMgPiBqxK11OyAjOEQ3Mwor6LW0ID4gZsO5OyAjOEQ3NAor6LW1ID4gemjDoG87ICM4RDc1CivotbYgPiBnxINuOyAjOEQ3Ngor6LW3ID4gccStOyAjOEQ3Nwor6LW4ID4gc2jDoG47ICM4RDc4CivotbkgPiBxw61vbmc7ICM4RDc5CivotbogPiBxw61uOyAjOEQ3QQor6LW7ID4geGnEg247ICM4RDdCCivotbwgPiBjxKs7ICM4RDdDCivotb0gPiBqdcOpOyAjOEQ3RAor6LW+ID4gccStbjsgIzhEN0UKK+i1vyA+IGNow607ICM4RDdGCivotoAgPiBjxKs7ICM4RDgwCivotoEgPiBjaMOobjsgIzhEODEKK+i2giA+IGNow6huOyAjOEQ4Mgor6LaDID4gZGnDqTsgIzhEODMKK+i2hCA+IGrFqzsgIzhEODQKK+i2hSA+IGNoxIFvOyAjOEQ4NQor6LaGID4gZMSrOyAjOEQ4Ngor6LaHID4gc8OoOyAjOEQ4Nwor6LaIID4gemjEgW47ICM4RDg4CivotokgPiB6aMO6OyAjOEQ4OQor6LaKID4geXXDqDsgIzhEOEEKK+i2iyA+IHHFqzsgIzhEOEIKK+i2jCA+IGppw6k7ICM4RDhDCivoto0gPiBjaMOtOyAjOEQ4RAor6LaOID4gY2jDujsgIzhEOEUKK+i2jyA+IGd1xIE7ICM4RDhGCivotpAgPiB4dcOoOyAjOEQ5MAor6LaRID4gY8SrOyAjOEQ5MQor6LaSID4gdGnDoW87ICM4RDkyCivotpMgPiBkxa1vOyAjOEQ5Mwor6LaUID4gbGnDqDsgIzhEOTQKK+i2lSA+IGfEg247ICM4RDk1CivotpYgPiBzxatvOyAjOEQ5Ngor6LaXID4gY8O5OyAjOEQ5Nwor6LaYID4geMOtOyAjOEQ5OAor6LaZID4gemjDoG87ICM4RDk5CivotpogPiBzw7k7ICM4RDlBCivotpsgPiB5xK1uOyAjOEQ5Qgor6LacID4gasO6OyAjOEQ5Qwor6LadID4gamnDoG47ICM4RDlECivotp4gPiBxdcOoOyAjOEQ5RQor6LafID4gdMOgbmc7ICM4RDlGCivotqAgPiBjaMO5bzsgIzhEQTAKK+i2oSA+IGPFrWk7ICM4REExCivotqIgPiBsw7k7ICM4REEyCivotqMgPiBxw7k7ICM4REEzCivotqQgPiBkw6BuZzsgIzhEQTQKK+i2pSA+IHHEq3U7ICM4REE1CivotqYgPiB6xKs7ICM4REE2CivotqcgPiB0w607ICM4REE3CivotqggPiBxxas7ICM4REE4CivotqkgPiBjaMOsOyAjOERBOQor6LaqID4gaHXDoW5nOyAjOERBQQor6LarID4gcWnDoW87ICM4REFCCivotqwgPiBxacOhbzsgIzhEQUMKK+i2rSA+IHnDoG87ICM4REFECivotq4gPiB6w6BvOyAjOERBRQor6LavID4gdMOsOyAjOERBRgor6LaxID4gesSDbjsgIzhEQjEKK+i2siA+IHrEg247ICM4REIyCivotrMgPiB6w7o7ICM4REIzCivotrQgPiBwxIE7ICM4REI0CivotrUgPiBiw6BvOyAjOERCNQor6La2ID4ga8O5OyAjOERCNgor6La3ID4ga8STOyAjOERCNwor6La4ID4gZMWtbjsgIzhEQjgKK+i2uSA+IGp1w6k7ICM4REI5CivotrogPiBmxas7ICM4REJBCivotrsgPiBjaMSVbjsgIzhEQkIKK+i2vCA+IGppxINuOyAjOERCQwor6La9ID4gZsOgbmc7ICM4REJECivotr4gPiB6aMStOyAjOERCRQor6La/ID4gc8OgOyAjOERCRgor6LeAID4geXXDqDsgIzhEQzAKK+i3gSA+IHDDoTsgIzhEQzEKK+i3giA+IHHDrTsgIzhEQzIKK+i3gyA+IHl1w6g7ICM4REMzCivot4QgPiBxacSBbmc7ICM4REM0Civot4UgPiB0w7lvOyAjOERDNQor6LeGID4gdMOhaTsgIzhEQzYKK+i3hyA+IHnDrDsgIzhEQzcKK+i3iCA+IG5pxINuOyAjOERDOAor6LeJID4gbMOtbmc7ICM4REM5Civot4ogPiBtw6hpOyAjOERDQQor6LeLID4gYsOhOyAjOERDQgor6LeMID4gZGnEkzsgIzhEQ0MKK+i3jSA+IGvFqzsgIzhEQ0QKK+i3jiA+IHTDum87ICM4RENFCivot48gPiBqacSBOyAjOERDRgor6LeQID4gY8StOyAjOEREMAor6LeRID4gcMSDbzsgIzhERDEKK+i3kiA+IHFpxIM7ICM4REQyCivot5MgPiB6aMO5OyAjOEREMwor6LeUID4gasWrOyAjOERENAor6LeVID4gZGnDqTsgIzhERDUKK+i3liA+IHpoxKs7ICM4REQ2Civot5cgPiBmxas7ICM4REQ3Civot5ggPiBww6FuOyAjOEREOAor6LeZID4gasWtOyAjOEREOQor6LeaID4gc2jEgW47ICM4RERBCivot5sgPiBixY87ICM4RERCCivot5wgPiBuw607ICM4RERDCivot50gPiBqw7k7ICM4RERECivot54gPiBsw6w7ICM4RERFCivot58gPiBnxJNuOyAjOERERgor6LegID4gecOtOyAjOERFMAor6LehID4gasSrOyAjOERFMQor6LeiID4gZMOgaTsgIzhERTIKK+i3oyA+IHhpxINuOyAjOERFMwor6LekID4gamnEgW87ICM4REU0Civot6UgPiBkw7lvOyAjOERFNQor6LemID4gemjFqzsgIzhERTYKK+i3pyA+IHpodcSBbjsgIzhERTcKK+i3qCA+IGt1w6A7ICM4REU4Civot6kgPiB6aHXEg2k7ICM4REU5Civot6ogPiBnw7lpOyAjOERFQQor6LerID4gccOtb25nOyAjOERFQgor6LesID4ga8WtaTsgIzhERUMKK+i3rSA+IHhpw6FuZzsgIzhERUQKK+i3riA+IGNow6w7ICM4REVFCivot68gPiBsw7k7ICM4REVGCivot7AgPiBiw6huZzsgIzhERjAKK+i3sSA+IHpow6w7ICM4REYxCivot7IgPiBqacOhOyAjOERGMgor6LezID4gdGnDoG87ICM4REYzCivot7QgPiBjxINpOyAjOERGNAor6Le1ID4gamnDoG47ICM4REY1Civot7YgPiB0w6A7ICM4REY2Civot7cgPiBxacSBbzsgIzhERjcKK+i3uCA+IGLDrDsgIzhERjgKK+i3uSA+IHhpxIFuOyAjOERGOQor6Le6ID4gZMO5bzsgIzhERkEKK+i3uyA+IGrEqzsgIzhERkIKK+i3vCA+IGrDujsgIzhERkMKK+i3vSA+IGrDrDsgIzhERkQKK+i3viA+IHNow7o7ICM4REZFCivot78gPiB0w7o7ICM4REZGCivouIAgPiBjaMO5OyAjOEUwMAor6LiBID4gasOsbmc7ICM4RTAxCivouIIgPiBuacOoOyAjOEUwMgor6LiDID4geGnEgW87ICM4RTAzCivouIQgPiBiw7M7ICM4RTA0CivouIUgPiBjaMOsOyAjOEUwNQor6LiGID4gccWrbjsgIzhFMDYKK+i4hyA+IG3Fj3U7ICM4RTA3CivouIggPiBzaMWrOyAjOEUwOAor6LiJID4gbMOhbmc7ICM4RTA5CivouIogPiB5xY9uZzsgIzhFMEEKK+i4iyA+IGppxINvOyAjOEUwQgor6LiMID4gY2jDs3U7ICM4RTBDCivouI0gPiBxacSBbzsgIzhFMEQKK+i4jyA+IHTDoDsgIzhFMEYKK+i4kCA+IGppw6BuOyAjOEUxMAor6LiRID4gccOtOyAjOEUxMQor6LiSID4gd8WNOyAjOEUxMgor6LiTID4gd8SVaTsgIzhFMTMKK+i4lCA+IHpow7pvOyAjOEUxNAor6LiVID4gamnDqTsgIzhFMTUKK+i4liA+IGrDrTsgIzhFMTYKK+i4lyA+IG5pxJM7ICM4RTE3CivouJggPiBqw7o7ICM4RTE4CivouJkgPiBqxas7ICM4RTE5CivouJogPiBsw7puOyAjOEUxQQor6LibID4gbMO5OyAjOEUxQgor6LicID4gbMOobmc7ICM4RTFDCivouJ0gPiBodcOhaTsgIzhFMUQKK+i4niA+IGrDuTsgIzhFMUUKK+i4nyA+IGNow607ICM4RTFGCivouKAgPiB3xINuOyAjOEUyMAor6LihID4gcXXDoW47ICM4RTIxCivouKIgPiB0xKs7ICM4RTIyCivouKMgPiBiw7M7ICM4RTIzCivouKQgPiB6w7o7ICM4RTI0CivouKUgPiBxacOoOyAjOEUyNQor6LimID4gasStOyAjOEUyNgor6LinID4gY8O5OyAjOEUyNwor6LioID4gesWNbmc7ICM4RTI4CivouKkgPiBjxINpOyAjOEUyOQor6LiqID4gesWNbmc7ICM4RTJBCivouKsgPiBww6huZzsgIzhFMkIKK+i4rCA+IHpow6w7ICM4RTJDCivouK0gPiB6aMSTbmc7ICM4RTJECivouK4gPiBkacSDbjsgIzhFMkUKK+i4ryA+IHpow607ICM4RTJGCivouLAgPiB5w7o7ICM4RTMwCivouLEgPiBkw7lvOyAjOEUzMQor6LiyID4gZMO5bjsgIzhFMzIKK+i4syA+IGNoxa1uOyAjOEUzMwor6Li0ID4gecWPbmc7ICM4RTM0CivouLUgPiB6aMWPbmc7ICM4RTM1CivouLYgPiBkw6w7ICM4RTM2CivouLcgPiB6aMSVOyAjOEUzNwor6Li4ID4gY2jElW47ICM4RTM4CivouLkgPiBjaHXDoGk7ICM4RTM5CivouLogPiBqacOgbjsgIzhFM0EKK+i4uyA+IGd1xIE7ICM4RTNCCivouLwgPiB0w6FuZzsgIzhFM0MKK+i4vSA+IGrFrTsgIzhFM0QKK+i4viA+IGbDujsgIzhFM0UKK+i4vyA+IHrDujsgIzhFM0YKK+i5gCA+IGRpw6k7ICM4RTQwCivouYEgPiBwacOhbjsgIzhFNDEKK+i5giA+IHLDs3U7ICM4RTQyCivouYMgPiBuw7lvOyAjOEU0Mwor6LmEID4gdMOtOyAjOEU0NAor6LmFID4gY2jEgzsgIzhFNDUKK+i5hiA+IHTFrWk7ICM4RTQ2CivouYcgPiBqacSDbjsgIzhFNDcKK+i5iCA+IGTDoG87ICM4RTQ4CivouYkgPiBjxatvOyAjOEU0OQor6LmKID4geMSrOyAjOEU0QQor6LmLID4gdMOgOyAjOEU0Qgor6LmMID4gcWnEgW5nOyAjOEU0Qwor6LmNID4gemjEg247ICM4RTRECivouY4gPiBkacSBbjsgIzhFNEUKK+i5jyA+IHTDrTsgIzhFNEYKK+i5kCA+IGrDrTsgIzhFNTAKK+i5kSA+IG5pw6g7ICM4RTUxCivouZIgPiBtw6FuOyAjOEU1Mgor6LmTID4gbMSrdTsgIzhFNTMKK+i5lCA+IHpow6BuOyAjOEU1NAor6LmVID4gYsOsOyAjOEU1NQor6LmWID4gY2jFjW5nOyAjOEU1Ngor6LmXID4gbMO5OyAjOEU1Nwor6LmYID4gbGnDoW87ICM4RTU4CivouZkgPiBjw7k7ICM4RTU5CivouZogPiB0xIFuZzsgIzhFNUEKK+i5myA+IGTDoGk7ICM4RTVCCivouZwgPiBzxatvOyAjOEU1Qwor6LmdID4geMStOyAjOEU1RAor6LmeID4ga8WtaTsgIzhFNUUKK+i5nyA+IGrEqzsgIzhFNUYKK+i5oCA+IHpow607ICM4RTYwCivouaEgPiBxacSBbmc7ICM4RTYxCivouaIgPiBkw607ICM4RTYyCivouaMgPiBtw6FuOyAjOEU2Mwor6LmkID4gesWNbmc7ICM4RTY0CivouaUgPiBsacOhbjsgIzhFNjUKK+i5piA+IGLDqG5nOyAjOEU2Ngor6LmnID4gesSBbzsgIzhFNjcKK+i5qCA+IG5pxINuOyAjOEU2OAor6LmpID4gYmnDqTsgIzhFNjkKK+i5qiA+IHTDumk7ICM4RTZBCivouasgPiBqw7o7ICM4RTZCCivouawgPiBkw6huZzsgIzhFNkMKK+i5rSA+IGPDqG5nOyAjOEU2RAor6LmuID4geGnEgW47ICM4RTZFCivoua8gPiBmw6FuOyAjOEU2Rgor6LmwID4gY2jDujsgIzhFNzAKK+i5sSA+IHpoxY1uZzsgIzhFNzEKK+i5siA+IGTFq247ICM4RTcyCivoubMgPiBixY07ICM4RTczCivoubQgPiBjw7k7ICM4RTc0CivoubUgPiB6w7o7ICM4RTc1CivoubYgPiBqdcOpOyAjOEU3Ngor6Lm3ID4ganXDqTsgIzhFNzcKK+i5uCA+IGzDrG47ICM4RTc4CivoubkgPiB0w6A7ICM4RTc5CivoubogPiBxacSBbzsgIzhFN0EKK+i5uyA+IHFpxIFvOyAjOEU3Qgor6Lm8ID4gcMO6OyAjOEU3Qwor6Lm9ID4gbGnEgW87ICM4RTdECivoub4gPiBkxatuOyAjOEU3RQor6Lm/ID4gY3XEgW47ICM4RTdGCivouoAgPiBrdcOgbmc7ICM4RTgwCivouoEgPiB6w6BvOyAjOEU4MQor6LqCID4gdMOgOyAjOEU4Mgor6LqDID4gYsOsOyAjOEU4Mwor6LqEID4gYsOsOyAjOEU4NAor6LqFID4gemjDujsgIzhFODUKK+i6hiA+IGrDuTsgIzhFODYKK+i6hyA+IGNow7o7ICM4RTg3CivouoggPiBxacOgbzsgIzhFODgKK+i6iSA+IGTFrW47ICM4RTg5CivouoogPiBjaMOzdTsgIzhFOEEKK+i6iyA+IGrEqzsgIzhFOEIKK+i6jCA+IHfFrTsgIzhFOEMKK+i6jSA+IHl1w6g7ICM4RThECivouo4gPiBuacSDbjsgIzhFOEUKK+i6jyA+IGzDrG47ICM4RThGCivoupAgPiBsacOoOyAjOEU5MAor6LqRID4gemjDrTsgIzhFOTEKK+i6kiA+IGzDrDsgIzhFOTIKK+i6kyA+IHpow6w7ICM4RTkzCivoupQgPiBjaMOhbjsgIzhFOTQKK+i6lSA+IGNow7o7ICM4RTk1CivoupYgPiBkdcOgbjsgIzhFOTYKK+i6lyA+IHfDqGk7ICM4RTk3CivoupggPiBsw7NuZzsgIzhFOTgKK+i6mSA+IGzDrG47ICM4RTk5CivoupogPiB4acSBbjsgIzhFOUEKK+i6myA+IHfDqGk7ICM4RTlCCivoupwgPiB6dcSBbjsgIzhFOUMKK+i6nSA+IGzDoW47ICM4RTlECivoup4gPiB4acOoOyAjOEU5RQor6LqfID4gcsOhbmc7ICM4RTlGCivouqAgPiB4acSVOyAjOEVBMAor6LqhID4gbmnDqDsgIzhFQTEKK+i6oiA+IHTDoDsgIzhFQTIKK+i6oyA+IHHDujsgIzhFQTMKK+i6pCA+IGppw6g7ICM4RUE0CivouqUgPiBjdcSBbjsgIzhFQTUKK+i6piA+IHp1xIFuOyAjOEVBNgor6LqnID4geMStOyAjOEVBNwor6LqoID4ga8O6aTsgIzhFQTgKK+i6qSA+IGp1w6k7ICM4RUE5CivouqogPiBsw6xuOyAjOEVBQQor6LqrID4gc2jEk247ICM4RUFCCivouqwgPiBnxY1uZzsgIzhFQUMKK+i6rSA+IGTEgW47ICM4RUFECivouq8gPiBxxas7ICM4RUFGCivourAgPiB0xK07ICM4RUIwCivourEgPiBkxa1vOyAjOEVCMQor6LqyID4gZMWtbzsgIzhFQjIKK+i6syA+IGfFjW5nOyAjOEVCMwor6Lq0ID4gbMOhbmc7ICM4RUI0CivourYgPiBsxa1vOyAjOEVCNgor6Lq3ID4gxINpOyAjOEVCNwor6Lq4ID4gasSrOyAjOEVCOAor6Lq5ID4gasO6OyAjOEVCOQor6Lq6ID4gdMSDbmc7ICM4RUJBCivour0gPiB5xINuOyAjOEVCRAor6Lq/ID4ga8SBbmc7ICM4RUJGCivou4AgPiBxxas7ICM4RUMwCivou4EgPiBsw7N1OyAjOEVDMQor6LuCID4gbMOgbzsgIzhFQzIKK+i7gyA+IHTFrW87ICM4RUMzCivou4QgPiB6aMOtOyAjOEVDNAor6LuGID4gdMStOyAjOEVDNgor6LuHID4gZMOgbzsgIzhFQzcKK+i7iSA+IHnDuTsgIzhFQzkKK+i7iiA+IGNoxJM7ICM4RUNBCivou4sgPiB5w6A7ICM4RUNCCivou4wgPiBnxa1pOyAjOEVDQwor6LuNID4gasWrbjsgIzhFQ0QKK+i7jiA+IHfDqGk7ICM4RUNFCivou48gPiB5dcOoOyAjOEVDRgor6LuQID4geMOsbjsgIzhFRDAKK+i7kSA+IGTDrDsgIzhFRDEKK+i7kiA+IHh1xIFuOyAjOEVEMgor6LuTID4gZsOgbjsgIzhFRDMKK+i7lCA+IHLDqG47ICM4RUQ0Civou5UgPiBzaMSBbjsgIzhFRDUKK+i7liA+IHFpw6FuZzsgIzhFRDYKK+i7lyA+IHNoxas7ICM4RUQ3Civou5ggPiB0w7puOyAjOEVEOAor6LuZID4gY2jDqW47ICM4RUQ5Civou5ogPiBkw6BpOyAjOEVEQQor6LubID4gw6g7ICM4RURCCivou5wgPiBuw6A7ICM4RURDCivou50gPiBxw607ICM4RURECivou54gPiBtw6FvOyAjOEVERQor6LufID4gcnXEg247ICM4RURGCivou6AgPiByw6huOyAjOEVFMAor6LuhID4gZsSDbjsgIzhFRTEKK+i7oiA+IHpodcSDbjsgIzhFRTIKK+i7oyA+IGjFjW5nOyAjOEVFMwor6LukID4gaMWrOyAjOEVFNAor6LulID4gccO6OyAjOEVFNQor6LumID4gaHXDoG5nOyAjOEVFNgor6LunID4gZMStOyAjOEVFNwor6LuoID4gbMOtbmc7ICM4RUU4Civou6kgPiBkw6BpOyAjOEVFOQor6LuqID4gxIFvOyAjOEVFQQor6LurID4gemjElW47ICM4RUVCCivou6wgPiBmw6BuOyAjOEVFQwor6LutID4ga3XEgW5nOyAjOEVFRAor6LuuID4gxINuZzsgIzhFRUUKK+i7ryA+IHDEk25nOyAjOEVFRgor6LuwID4gYsOoaTsgIzhFRjAKK+i7sSA+IGfFqzsgIzhFRjEKK+i7siA+IGvFqzsgIzhFRjIKK+i7syA+IHDDoW87ICM4RUYzCivou7QgPiB6aMO5OyAjOEVGNAor6Lu1ID4gcsWPbmc7ICM4RUY1Civou7YgPiDDqDsgIzhFRjYKK+i7tyA+IGLDoTsgIzhFRjcKK+i7uCA+IHpow7N1OyAjOEVGOAor6Lu5ID4gemjErTsgIzhFRjkKK+i7uiA+IHnDoW87ICM4RUZBCivou7sgPiBrxJM7ICM4RUZCCivou7wgPiB5w6w7ICM4RUZDCivou70gPiBxxKtuZzsgIzhFRkQKK+i7viA+IHNow6w7ICM4RUZFCivou78gPiBww61uZzsgIzhFRkYKK+i8gCA+IMOpcjsgIzhGMDAKK+i8gSA+IHHDrW9uZzsgIzhGMDEKK+i8giA+IGrDujsgIzhGMDIKK+i8gyA+IGppw6BvOyAjOEYwMwor6LyEID4gZ3XEgW5nOyAjOEYwNAor6LyFID4gbMO5OyAjOEYwNQor6LyGID4ga8SDaTsgIzhGMDYKK+i8hyA+IHF1w6FuOyAjOEYwNwor6LyIID4gemjFjXU7ICM4RjA4CivovIkgPiB6w6BpOyAjOEYwOQor6LyKID4gemjDrDsgIzhGMEEKK+i8iyA+IHNoxJM7ICM4RjBCCivovIwgPiBsacOgbmc7ICM4RjBDCivovI0gPiB5w7k7ICM4RjBECivovI4gPiBzaMSBbzsgIzhGMEUKK+i8jyA+IHnDs3U7ICM4RjBGCivovJAgPiBodcSDbjsgIzhGMTAKK+i8kSA+IHnFrW47ICM4RjExCivovJIgPiB6aMOpOyAjOEYxMgor6LyTID4gd8SDbjsgIzhGMTMKK+i8lCA+IGbFrTsgIzhGMTQKK+i8lSA+IHHEq25nOyAjOEYxNQor6LyWID4gemjFjXU7ICM4RjE2CivovJcgPiBuw607ICM4RjE3CivovJggPiBsw61uZzsgIzhGMTgKK+i8mSA+IHpow6k7ICM4RjE5CivovJogPiB6aMOgbjsgIzhGMUEKK+i8myA+IGxpw6BuZzsgIzhGMUIKK+i8nCA+IHrEqzsgIzhGMUMKK+i8nSA+IGjFq2k7ICM4RjFECivovJ4gPiB3xINuZzsgIzhGMUUKK+i8nyA+IGNow7lvOyAjOEYxRgor6LygID4gZ8WtbzsgIzhGMjAKK+i8oSA+IGvEg247ICM4RjIxCivovKIgPiB5xK07ICM4RjIyCivovKMgPiBww6luZzsgIzhGMjMKK+i8pCA+IHFpw6BuOyAjOEYyNAor6LylID4gZ8WtbjsgIzhGMjUKK+i8piA+IG5pxINuOyAjOEYyNgor6LynID4gcGnDoW47ICM4RjI3CivovKggPiBndcSDbjsgIzhGMjgKK+i8qSA+IGLDqGk7ICM4RjI5CivovKogPiBsw7puOyAjOEYyQQor6LyrID4gcMOhaTsgIzhGMkIKK+i8rCA+IGxpw6FuZzsgIzhGMkMKK+i8rSA+IHJ1xINuOyAjOEYyRAor6LyuID4gcsOzdTsgIzhGMkUKK+i8ryA+IGrDrTsgIzhGMkYKK+i8sCA+IHnDoW5nOyAjOEYzMAor6LyxID4geGnDoW47ICM4RjMxCivovLIgPiBjaHXDoW47ICM4RjMyCivovLMgPiBjw7J1OyAjOEYzMwor6Ly0ID4gccWrbjsgIzhGMzQKK+i8tSA+IGfDqTsgIzhGMzUKK+i8tiA+IHnDs3U7ICM4RjM2CivovLcgPiBoxY1uZzsgIzhGMzcKK+i8uCA+IHNoxas7ICM4RjM4CivovLkgPiBmw7k7ICM4RjM5CivovLogPiB6xKs7ICM4RjNBCivovLsgPiBmw7o7ICM4RjNCCivovLwgPiB3xJNuOyAjOEYzQwor6Ly9ID4gYsOobjsgIzhGM0QKK+i8viA+IHpoxINuOyAjOEYzRQor6Ly/ID4gecO6OyAjOEYzRgor6L2AID4gd8STbjsgIzhGNDAKK+i9gSA+IHTEgW87ICM4RjQxCivovYIgPiBnxa07ICM4RjQyCivovYMgPiB6aMSTbjsgIzhGNDMKK+i9hCA+IHhpw6E7ICM4RjQ0CivovYUgPiB5dcOhbjsgIzhGNDUKK+i9hiA+IGzDuTsgIzhGNDYKK+i9hyA+IGrEq3U7ICM4RjQ3CivovYggPiBjaMOhbzsgIzhGNDgKK+i9iSA+IHpodcSDbjsgIzhGNDkKK+i9iiA+IHfDqGk7ICM4RjRBCivovYsgPiBow7puOyAjOEY0Qgor6L2NID4gY2jDqDsgIzhGNEQKK+i9jiA+IGppw6BvOyAjOEY0RQor6L2PID4gemjDoG47ICM4RjRGCivovZAgPiBww7o7ICM4RjUwCivovZEgPiBsxINvOyAjOEY1MQor6L2SID4gZsOpbjsgIzhGNTIKK+i9kyA+IGbEgW47ICM4RjUzCivovZQgPiBsw61uOyAjOEY1NAor6L2VID4gZ8OpOyAjOEY1NQor6L2WID4gc8OoOyAjOEY1Ngor6L2XID4ga8SDbjsgIzhGNTcKK+i9mCA+IGh1w6BuOyAjOEY1OAor6L2ZID4gecStOyAjOEY1OQor6L2aID4gasOtOyAjOEY1QQor6L2bID4gZMO5aTsgIzhGNUIKK+i9nCA+IMOpcjsgIzhGNUMKK+i9nSA+IHnDujsgIzhGNUQKK+i9niA+IHhpw6BuOyAjOEY1RQor6L2fID4gaMWNbmc7ICM4RjVGCivovaAgPiBsxJVpOyAjOEY2MAor6L2hID4gcMOoaTsgIzhGNjEKK+i9oiA+IGzDrDsgIzhGNjIKK+i9oyA+IGzDrDsgIzhGNjMKK+i9pCA+IGzDujsgIzhGNjQKK+i9pSA+IGzDrG47ICM4RjY1CivovaYgPiBjaMSTOyAjOEY2Ngor6L2nID4gecOgOyAjOEY2Nwor6L2oID4gZ8WtaTsgIzhGNjgKK+i9qSA+IHh1xIFuOyAjOEY2OQor6L2qID4gZMOsOyAjOEY2QQor6L2rID4gcsOobjsgIzhGNkIKK+i9rCA+IHpodcSDbjsgIzhGNkMKK+i9rSA+IMOoOyAjOEY2RAor6L2uID4gbMO6bjsgIzhGNkUKK+i9ryA+IHJ1xINuOyAjOEY2Rgor6L2wID4gaMWNbmc7ICM4RjcwCivovbEgPiBrxas7ICM4RjcxCivovbIgPiBrxJM7ICM4RjcyCivovbMgPiBsw7o7ICM4RjczCivovbQgPiB6aMOzdTsgIzhGNzQKK+i9tSA+IHpoxK07ICM4Rjc1CivovbYgPiB5w6w7ICM4Rjc2CivovbcgPiBoxas7ICM4Rjc3CivovbggPiB6aMSVbjsgIzhGNzgKK+i9uSA+IGzDrDsgIzhGNzkKK+i9uiA+IHnDoW87ICM4RjdBCivovbsgPiBxxKtuZzsgIzhGN0IKK+i9vCA+IHNow6w7ICM4RjdDCivovb0gPiB6w6BpOyAjOEY3RAor6L2+ID4gemjDrDsgIzhGN0UKK+i9vyA+IGppw6BvOyAjOEY3Rgor6L6AID4gemjFjXU7ICM4RjgwCivovoEgPiBxdcOhbjsgIzhGODEKK+i+giA+IGzDuTsgIzhGODIKK+i+gyA+IGppw6BvOyAjOEY4Mwor6L6EID4gemjDqTsgIzhGODQKK+i+hSA+IGbFrTsgIzhGODUKK+i+hiA+IGxpw6BuZzsgIzhGODYKK+i+hyA+IG5pxINuOyAjOEY4Nwor6L6IID4gYsOoaTsgIzhGODgKK+i+iSA+IGjFq2k7ICM4Rjg5CivovoogPiBnxa1uOyAjOEY4QQor6L6LID4gd8SDbmc7ICM4RjhCCivovowgPiBsacOhbmc7ICM4RjhDCivovo0gPiBjaMO5bzsgIzhGOEQKK+i+jiA+IHrEqzsgIzhGOEUKK+i+jyA+IGPDsnU7ICM4RjhGCivovpAgPiBmw7o7ICM4RjkwCivovpEgPiBqw607ICM4RjkxCivovpIgPiB3xJNuOyAjOEY5Mgor6L6TID4gc2jFqzsgIzhGOTMKK+i+lCA+IHDDqGk7ICM4Rjk0CivovpUgPiB5dcOhbjsgIzhGOTUKK+i+liA+IHhpw6E7ICM4Rjk2CivovpcgPiB6aMSDbjsgIzhGOTcKK+i+mCA+IGzDuTsgIzhGOTgKK+i+mSA+IGNow6g7ICM4Rjk5CivovpogPiBsw61uOyAjOEY5QQor6L6bID4geMSrbjsgIzhGOUIKK+i+nCA+IGfFqzsgIzhGOUMKK+i+nSA+IGPDrTsgIzhGOUQKK+i+niA+IGPDrTsgIzhGOUUKK+i+nyA+IHDDrDsgIzhGOUYKK+i+oCA+IHrDuWk7ICM4RkEwCivovqEgPiBiacOgbjsgIzhGQTEKK+i+oiA+IGzDoDsgIzhGQTIKK+i+oyA+IGzDoDsgIzhGQTMKK+i+pCA+IGPDrTsgIzhGQTQKK+i+pSA+IHh1xJM7ICM4RkE1CivovqYgPiBiw6BuOyAjOEZBNgor6L6nID4gYmnDoG47ICM4RkE3CivovqggPiBiacOgbjsgIzhGQTgKK+i+qSA+IGJpw6BuOyAjOEZBOQor6L6rID4gYmnDoG47ICM4RkFCCivovqwgPiBixIFuOyAjOEZBQwor6L6tID4gY8OtOyAjOEZBRAor6L6uID4gYmnDoG47ICM4RkFFCivovq8gPiBiacOgbjsgIzhGQUYKK+i+sCA+IGNow6luOyAjOEZCMAor6L6xID4gcsO5OyAjOEZCMQor6L6yID4gbsOzbmc7ICM4RkIyCivovrMgPiBuw7NuZzsgIzhGQjMKK+i+tCA+IHpoxJVuOyAjOEZCNAor6L61ID4gY2jDuW87ICM4RkI1CivovrYgPiBjaMO5bzsgIzhGQjYKK+i+uCA+IHLDqW5nOyAjOEZCOAor6L65ID4gYmnEgW47ICM4RkI5CivovrogPiBiacSBbjsgIzhGQkEKK+i+vSA+IGxpw6FvOyAjOEZCRAor6L6+ID4gZMOhOyAjOEZCRQor6L6/ID4gY2jEgW47ICM4RkJGCivov4AgPiBnxIFuOyAjOEZDMAor6L+BID4gcWnEgW47ICM4RkMxCivov4IgPiB5xas7ICM4RkMyCivov4MgPiB5xas7ICM4RkMzCivov4QgPiBxw6w7ICM4RkM0Civov4UgPiB4w7luOyAjOEZDNQor6L+GID4gecStOyAjOEZDNgor6L+HID4gZ8O5bzsgIzhGQzcKK+i/iCA+IG3DoGk7ICM4RkM4Civov4kgPiBxw607ICM4RkM5Civov4ogPiB6xIE7ICM4RkNBCivov4sgPiB3w6BuZzsgIzhGQ0IKK+i/jCA+IGppYTsgIzhGQ0MKK+i/jSA+IHpoxatuOyAjOEZDRAor6L+OID4gecOtbmc7ICM4RkNFCivov48gPiB0w6w7ICM4RkNGCivov5AgPiB5w7luOyAjOEZEMAor6L+RID4gasOsbjsgIzhGRDEKK+i/kiA+IGjDoW5nOyAjOEZEMgor6L+TID4gecOgOyAjOEZEMwor6L+UID4gZsSDbjsgIzhGRDQKK+i/lSA+IHfDuTsgIzhGRDUKK+i/liA+IGTDoTsgIzhGRDYKK+i/lyA+IMOpOyAjOEZENwor6L+YID4gaHXDoW47ICM4RkQ4Civov5kgPiB6aMOoOyAjOEZEOQor6L+bID4gasOsbjsgIzhGREIKK+i/nCA+IHl1xINuOyAjOEZEQwor6L+dID4gd8OpaTsgIzhGREQKK+i/niA+IGxpw6FuOyAjOEZERQor6L+fID4gY2jDrTsgIzhGREYKK+i/oCA+IGNow6g7ICM4RkUwCivov6EgPiBuw6w7ICM4RkUxCivov6IgPiB0acOhbzsgIzhGRTIKK+i/oyA+IHpow6w7ICM4RkUzCivov6QgPiB5xK07ICM4RkU0Civov6UgPiBqxK1vbmc7ICM4RkU1Civov6YgPiBqacSBOyAjOEZFNgor6L+nID4gY2jDqW47ICM4RkU3Civov6ggPiBkw6BpOyAjOEZFOAor6L+pID4gxJVyOyAjOEZFOQor6L+qID4gZMOtOyAjOEZFQQor6L+rID4gcMOyOyAjOEZFQgor6L+sID4gd8SDbmc7ICM4RkVDCivov60gPiBkacOpOyAjOEZFRAor6L+uID4gesOpOyAjOEZFRQor6L+vID4gdMOhbzsgIzhGRUYKK+i/sCA+IHNow7k7ICM4RkYwCivov7EgPiB0w7pvOyAjOEZGMQor6L+zID4gasOsbmc7ICM4RkYzCivov7QgPiBow7ppOyAjOEZGNAor6L+1ID4gdMOzbmc7ICM4RkY1Civov7YgPiB5w7J1OyAjOEZGNgor6L+3ID4gbcOtOyAjOEZGNwor6L+4ID4gYsOobmc7ICM4RkY4Civov7kgPiBqxKs7ICM4RkY5Civov7ogPiBuxINpOyAjOEZGQQor6L+7ID4gecOtOyAjOEZGQgor6L+8ID4gamnDqTsgIzhGRkMKK+i/vSA+IHpoxatpOyAjOEZGRAor6L++ID4gbGnDqDsgIzhGRkUKK+i/vyA+IHjDuW47ICM4RkZGCivpgIAgPiB0w7lpOyAjOTAwMAor6YCBID4gc8Oybmc7ICM5MDAxCivpgIIgPiBndcSBOyAjOTAwMgor6YCDID4gdMOhbzsgIzkwMDMKK+mAhCA+IHDDoW5nOyAjOTAwNAor6YCFID4gaMOydTsgIzkwMDUKK+mAhiA+IG7DrDsgIzkwMDYKK+mAhyA+IGTDuW47ICM5MDA3CivpgIggPiBqxK1vbmc7ICM5MDA4CivpgIkgPiB4dcSDbjsgIzkwMDkKK+mAiiA+IHjDuW47ICM5MDBBCivpgIsgPiBixas7ICM5MDBCCivpgIwgPiB5w7N1OyAjOTAwQwor6YCNID4geGnEgW87ICM5MDBECivpgI4gPiBxw611OyAjOTAwRQor6YCPID4gdMOydTsgIzkwMEYKK+mAkCA+IHpow7o7ICM5MDEwCivpgJEgPiBxw611OyAjOTAxMQor6YCSID4gZMOsOyAjOTAxMgor6YCTID4gZMOsOyAjOTAxMwor6YCUID4gdMO6OyAjOTAxNAor6YCVID4gasOsbmc7ICM5MDE1CivpgJYgPiB0w6w7ICM5MDE2CivpgJcgPiBkw7J1OyAjOTAxNwor6YCYID4gecStOyAjOTAxOAor6YCZID4gemjDqDsgIzkwMTkKK+mAmiA+IHTFjW5nOyAjOTAxQQor6YCbID4gZ3XDoG5nOyAjOTAxQgor6YCcID4gd8O5OyAjOTAxQwor6YCdID4gc2jDrDsgIzkwMUQKK+mAniA+IGNoxJVuZzsgIzkwMUUKK+mAnyA+IHPDuTsgIzkwMUYKK+mAoCA+IHrDoG87ICM5MDIwCivpgKEgPiBxxatuOyAjOTAyMQor6YCiID4gZsOpbmc7ICM5MDIyCivpgKMgPiBsacOhbjsgIzkwMjMKK+mApCA+IHPDuW87ICM5MDI0CivpgKUgPiBow7ppOyAjOTAyNQor6YCmID4gbMStOyAjOTAyNgor6YCoID4gbMOhaTsgIzkwMjgKK+mAqSA+IGLDqG47ICM5MDI5CivpgKogPiBjw7lvOyAjOTAyQQor6YCrID4ganXDqTsgIzkwMkIKK+mArCA+IGLDqG5nOyAjOTAyQwor6YCtID4gaHXDoG47ICM5MDJECivpgK4gPiBkw6BpOyAjOTAyRQor6YCvID4gbMO5OyAjOTAyRgor6YCwID4gecOzdTsgIzkwMzAKK+mAsSA+IHpoxY11OyAjOTAzMQor6YCyID4gasOsbjsgIzkwMzIKK+mAsyA+IHnDuTsgIzkwMzMKK+mAtCA+IGNow7lvOyAjOTAzNAor6YC1ID4ga8O6aTsgIzkwMzUKK+mAtiA+IHfEk2k7ICM5MDM2CivpgLcgPiB0w6w7ICM5MDM3CivpgLggPiB5w6w7ICM5MDM4CivpgLkgPiBkw6E7ICM5MDM5CivpgLogPiB5dcSDbjsgIzkwM0EKK+mAuyA+IGzDum87ICM5MDNCCivpgLwgPiBixKs7ICM5MDNDCivpgL0gPiBuw7lvOyAjOTAzRAor6YC+ID4gecO6OyAjOTAzRQor6YC/ID4gZMOgbmc7ICM5MDNGCivpgYAgPiBzw7ppOyAjOTA0MAor6YGBID4gZMO5bjsgIzkwNDEKK+mBgiA+IHPDuWk7ICM5MDQyCivpgYMgPiB5xINuOyAjOTA0Mwor6YGEID4gY2h1w6FuOyAjOTA0NAor6YGFID4gY2jDrTsgIzkwNDUKK+mBhiA+IHTDrTsgIzkwNDYKK+mBhyA+IHnDuTsgIzkwNDcKK+mBiCA+IHNow607ICM5MDQ4CivpgYkgPiB6aMSTbjsgIzkwNDkKK+mBiiA+IHnDs3U7ICM5MDRBCivpgYsgPiB5w7luOyAjOTA0Qgor6YGMID4gw6g7ICM5MDRDCivpgY0gPiBiacOgbjsgIzkwNEQKK+mBjiA+IGfDuW87ICM5MDRFCivpgY8gPiDDqDsgIzkwNEYKK+mBkCA+IHhpw6E7ICM5MDUwCivpgZEgPiBodcOhbmc7ICM5MDUxCivpgZIgPiBxw611OyAjOTA1Mgor6YGTID4gZMOgbzsgIzkwNTMKK+mBlCA+IGTDoTsgIzkwNTQKK+mBlSA+IHfDqWk7ICM5MDU1CivpgZcgPiB5w607ICM5MDU3CivpgZggPiBnw7J1OyAjOTA1OAor6YGZID4gecOhbzsgIzkwNTkKK+mBmiA+IGNow7k7ICM5MDVBCivpgZsgPiBsw611OyAjOTA1Qgor6YGcID4geMO5bjsgIzkwNUMKK+mBnSA+IHTDoDsgIzkwNUQKK+mBniA+IGTDrDsgIzkwNUUKK+mBnyA+IGNow607ICM5MDVGCivpgaAgPiB5dcSDbjsgIzkwNjAKK+mBoSA+IHPDuTsgIzkwNjEKK+mBoiA+IHTDoDsgIzkwNjIKK+mBoyA+IHFpxINuOyAjOTA2Mwor6YGlID4gecOhbzsgIzkwNjUKK+mBpiA+IGd1w6BuOyAjOTA2Ngor6YGnID4gemjEgW5nOyAjOTA2Nwor6YGoID4gw6FvOyAjOTA2OAor6YGpID4gc2jDrDsgIzkwNjkKK+mBqiA+IGPDqDsgIzkwNkEKK+mBqyA+IGNow6w7ICM5MDZCCivpgawgPiBzw7k7ICM5MDZDCivpga0gPiB6xIFvOyAjOTA2RAor6YGuID4gemjEkzsgIzkwNkUKK+mBryA+IGTDuW47ICM5MDZGCivpgbAgPiBkw6w7ICM5MDcwCivpgbEgPiBsw7N1OyAjOTA3MQor6YGyID4gY2jDrTsgIzkwNzIKK+mBsyA+IGPFq287ICM5MDczCivpgbQgPiBsw61uOyAjOTA3NAor6YG1ID4gesWrbjsgIzkwNzUKK+mBtiA+IHLDoG87ICM5MDc2CivpgbcgPiBxacSBbjsgIzkwNzcKK+mBuCA+IHh1xINuOyAjOTA3OAor6YG5ID4gecO5OyAjOTA3OQor6YG6ID4gecOtOyAjOTA3QQor6YG7ID4gd8O5OyAjOTA3Qgor6YG8ID4gbGnDoW87ICM5MDdDCivpgb0gPiBqw7k7ICM5MDdECivpgb4gPiBzaMOsOyAjOTA3RQor6YG/ID4gYsOsOyAjOTA3Rgor6YKAID4gecSBbzsgIzkwODAKK+mCgSA+IG3DoGk7ICM5MDgxCivpgoIgPiB4acOoOyAjOTA4Mgor6YKDID4gc8O5aTsgIzkwODMKK+mChCA+IGh1w6FuOyAjOTA4NAor6YKFID4gemjEgW47ICM5MDg1CivpgoYgPiB0w6luZzsgIzkwODYKK+mChyA+IMSVcjsgIzkwODcKK+mCiCA+IG1pxINvOyAjOTA4OAor6YKJID4gYmnEgW47ICM5MDg5CivpgoogPiBiacSBbjsgIzkwOEEKK+mCiyA+IGzDoTsgIzkwOEIKK+mCjCA+IGzDrTsgIzkwOEMKK+mCjSA+IHl1w6FuOyAjOTA4RAor6YKOID4gecOhbzsgIzkwOEUKK+mCjyA+IGzDum87ICM5MDhGCivpgpAgPiBsxK07ICM5MDkwCivpgpEgPiB5w6w7ICM5MDkxCivpgpIgPiB0w61uZzsgIzkwOTIKK+mCkyA+IGTDqG5nOyAjOTA5Mwor6YKUID4gccStOyAjOTA5NAor6YKVID4gecWNbmc7ICM5MDk1CivpgpYgPiBzaMSBbjsgIzkwOTYKK+mClyA+IGjDoW47ICM5MDk3CivpgpggPiB5w7o7ICM5MDk4CivpgpkgPiBtw6FuZzsgIzkwOTkKK+mCmiA+IHLDujsgIzkwOUEKK+mCmyA+IHHDrW9uZzsgIzkwOUIKK+mCnSA+IGt1w6BuZzsgIzkwOUQKK+mCniA+IGbFqzsgIzkwOUUKK+mCnyA+IGvDoG5nOyAjOTA5Rgor6YKgID4gYsSrbjsgIzkwQTAKK+mCoSA+IGbEgW5nOyAjOTBBMQor6YKiID4geMOtbmc7ICM5MEEyCivpgqMgPiBuw6A7ICM5MEEzCivpgqQgPiB4aW47ICM5MEE0CivpgqUgPiBzaMSVbjsgIzkwQTUKK+mCpiA+IGLEgW5nOyAjOTBBNgor6YKnID4geXXDoW47ICM5MEE3CivpgqggPiBjxatuOyAjOTBBOAor6YKpID4gaMWtbzsgIzkwQTkKK+mCqiA+IHhpw6k7ICM5MEFBCivpgqsgPiBixIFuZzsgIzkwQUIKK+mCrCA+IHfFqzsgIzkwQUMKK+mCrSA+IGrDuTsgIzkwQUQKK+mCriA+IHnDs3U7ICM5MEFFCivpgq8gPiBow6FuOyAjOTBBRgor6YKwID4gdMOhaTsgIzkwQjAKK+mCsSA+IHHEq3U7ICM5MEIxCivpgrIgPiBiw6w7ICM5MEIyCivpgrMgPiBww6lpOyAjOTBCMwor6YK0ID4gYsStbmc7ICM5MEI0CivpgrUgPiBzaMOgbzsgIzkwQjUKK+mCtiA+IGLDqGk7ICM5MEI2CivpgrcgPiB3xIM7ICM5MEI3CivpgrggPiBkxK07ICM5MEI4CivpgrkgPiB6xY11OyAjOTBCOQor6YK6ID4gecOoOyAjOTBCQQor6YK7ID4gbMOtbjsgIzkwQkIKK+mCvCA+IGt1xIFuZzsgIzkwQkMKK+mCvSA+IGfFq2k7ICM5MEJECivpgr4gPiB6aMWrOyAjOTBCRQor6YK/ID4gc2jEqzsgIzkwQkYKK+mDgCA+IGvFqzsgIzkwQzAKK+mDgSA+IHnDuTsgIzkwQzEKK+mDgiA+IGfEgWk7ICM5MEMyCivpg4MgPiBnw6k7ICM5MEMzCivpg4QgPiB4w6w7ICM5MEM0Civpg4UgPiB6aMOsOyAjOTBDNQor6YOGID4gasOtOyAjOTBDNgor6YOHID4geMO6bjsgIzkwQzcKK+mDiCA+IGjDsnU7ICM5MEM4Civpg4kgPiB4w61uZzsgIzkwQzkKK+mDiiA+IGppxIFvOyAjOTBDQQor6YOLID4geMOtOyAjOTBDQgor6YOMID4gZ8WraTsgIzkwQ0MKK+mDjSA+IG7Dum87ICM5MENECivpg44gPiBsw6FuZzsgIzkwQ0UKK+mDjyA+IGppw6E7ICM5MENGCivpg5AgPiBrdcOgaTsgIzkwRDAKK+mDkSA+IHpow6huZzsgIzkwRDEKK+mDkyA+IHnDuW47ICM5MEQzCivpg5QgPiB5w6FuOyAjOTBENAor6YOVID4gY2jDqW5nOyAjOTBENQor6YOWID4gZMWNdTsgIzkwRDYKK+mDlyA+IGNoxKs7ICM5MEQ3Civpg5ggPiBsx5o7ICM5MEQ4Civpg5kgPiBmxa07ICM5MEQ5Civpg5ogPiB3w7o7ICM5MERBCivpg5sgPiBmw7o7ICM5MERCCivpg5wgPiBnw6BvOyAjOTBEQwor6YOdID4gaMSDbzsgIzkwREQKK+mDniA+IGzDoW5nOyAjOTBERQor6YOfID4gamnDoTsgIzkwREYKK+mDoCA+IGfElW5nOyAjOTBFMAor6YOhID4gasO5bjsgIzkwRTEKK+mDoiA+IHnErW5nOyAjOTBFMgor6YOjID4gYsOzOyAjOTBFMwor6YOkID4geMOsOyAjOTBFNAor6YOlID4gYsOoaTsgIzkwRTUKK+mDpiA+IGzDrDsgIzkwRTYKK+mDpyA+IHnDum47ICM5MEU3Civpg6ggPiBiw7k7ICM5MEU4Civpg6kgPiB4acOhbzsgIzkwRTkKK+mDqiA+IHHEqzsgIzkwRUEKK+mDqyA+IHDDrTsgIzkwRUIKK+mDrCA+IHHEq25nOyAjOTBFQwor6YOtID4gZ8WrbzsgIzkwRUQKK+mDriA+IHpob3U7ICM5MEVFCivpg68gPiB0w6FuOyAjOTBFRgor6YOwID4gesWNdTsgIzkwRjAKK+mDsSA+IHDDrW5nOyAjOTBGMQor6YOyID4gbMOhaTsgIzkwRjIKK+mDsyA+IG7DrTsgIzkwRjMKK+mDtCA+IGNoxJNuOyAjOTBGNAor6YO1ID4gecOzdTsgIzkwRjUKK+mDtiA+IGLDuTsgIzkwRjYKK+mDtyA+IHhpxIFuZzsgIzkwRjcKK+mDuCA+IGTEgW47ICM5MEY4Civpg7kgPiBqw7o7ICM5MEY5Civpg7ogPiB5xY1uZzsgIzkwRkEKK+mDuyA+IHFpxIFvOyAjOTBGQgor6YO8ID4gecSrOyAjOTBGQwor6YO9ID4gZMWrOyAjOTBGRAor6YO+ID4gecSDbjsgIzkwRkUKK+mDvyA+IG3DqWk7ICM5MEZGCivphIAgPiByw7lvOyAjOTEwMAor6YSBID4gYsOoaTsgIzkxMDEKK+mEgiA+IMOoOyAjOTEwMgor6YSDID4gecO6OyAjOTEwMwor6YSEID4ganXDoG47ICM5MTA0CivphIUgPiB5xa07ICM5MTA1CivphIYgPiB5w7luOyAjOTEwNgor6YSHID4gaMOydTsgIzkxMDcKK+mEiCA+IGvDumk7ICM5MTA4CivphIkgPiB4acSBbmc7ICM5MTA5CivphIogPiB4acSBbmc7ICM5MTBBCivphIsgPiBzxY11OyAjOTEwQgor6YSMID4gdMOhbmc7ICM5MTBDCivphI0gPiBtw61uZzsgIzkxMEQKK+mEjiA+IHjDrDsgIzkxMEUKK+mEjyA+IHLDuTsgIzkxMEYKK+mEkCA+IGNow7k7ICM5MTEwCivphJEgPiB6xKs7ICM5MTExCivphJIgPiB6xY11OyAjOTExMgor6YSTID4gasO6OyAjOTExMwor6YSUID4gd8WrOyAjOTExNAor6YSVID4geGnEgW5nOyAjOTExNQor6YSWID4gecO6bjsgIzkxMTYKK+mElyA+IGjDoG87ICM5MTE3CivphJggPiB5xY1uZzsgIzkxMTgKK+mEmSA+IGLErTsgIzkxMTkKK+mEmiA+IG3DsjsgIzkxMUEKK+mEmyA+IGNow6FvOyAjOTExQgor6YScID4gZsWrOyAjOTExQwor6YSdID4gbGnEg287ICM5MTFECivphJ4gPiB5w61uOyAjOTExRQor6YSfID4gemh1xIFuOyAjOTExRgor6YSgID4gaMO5OyAjOTEyMAor6YShID4gcWnEgW87ICM5MTIxCivphKIgPiB5xIFuOyAjOTEyMgor6YSjID4gemjEgW5nOyAjOTEyMwor6YSkID4gZsOgbjsgIzkxMjQKK+mEpSA+IHFpxIFvOyAjOTEyNQor6YSmID4geMWtOyAjOTEyNgor6YSnID4gZMOobmc7ICM5MTI3CivphKggPiBiw6w7ICM5MTI4CivphKkgPiB4w61uOyAjOTEyOQor6YSqID4gYsOsOyAjOTEyQQor6YSrID4gY8Opbmc7ICM5MTJCCivphKwgPiB3w6lpOyAjOTEyQwor6YStID4gemjDqG5nOyAjOTEyRAor6YSuID4gbcOgbzsgIzkxMkUKK+mEryA+IHNow6BuOyAjOTEyRgor6YSwID4gbMOtbjsgIzkxMzAKK+mEsSA+IHDDszsgIzkxMzEKK+mEsiA+IGTEgW47ICM5MTMyCivphLMgPiBtw6luZzsgIzkxMzMKK+mEtCA+IHnDqDsgIzkxMzQKK+mEtSA+IGPEgW87ICM5MTM1CivphLYgPiBrdcOgaTsgIzkxMzYKK+mEtyA+IGbEk25nOyAjOTEzNwor6YS4ID4gbcOpbmc7ICM5MTM4CivphLkgPiB6xY11OyAjOTEzOQor6YS6ID4ga3XDoG5nOyAjOTEzQQor6YS7ID4gbGnDoW47ICM5MTNCCivphLwgPiB6w6BuOyAjOTEzQwor6YS9ID4gY2jDoW47ICM5MTNECivphL4gPiB5xY11OyAjOTEzRQor6YS/ID4gccOtOyAjOTEzRgor6YWAID4gecSBbjsgIzkxNDAKK+mFgSA+IGNow6FuOyAjOTE0MQor6YWCID4gesOgbjsgIzkxNDIKK+mFgyA+IGzDrW5nOyAjOTE0Mwor6YWEID4gaHXEgW47ICM5MTQ0CivphYUgPiB4xKs7ICM5MTQ1CivphYYgPiBmxJNuZzsgIzkxNDYKK+mFhyA+IHrDoG47ICM5MTQ3CivphYggPiBsw6w7ICM5MTQ4CivphYkgPiB5xY91OyAjOTE0OQor6YWKID4gZMStbmc7ICM5MTRBCivphYsgPiBxw611OyAjOTE0Qgor6YWMID4gemjDum87ICM5MTRDCivphY0gPiBww6hpOyAjOTE0RAor6YWOID4gemjDsnU7ICM5MTRFCivphY8gPiB5w607ICM5MTRGCivphZAgPiBoxINuZzsgIzkxNTAKK+mFkSA+IHnFrTsgIzkxNTEKK+mFkiA+IGrErXU7ICM5MTUyCivphZMgPiB5xINuOyAjOTE1Mwor6YWUID4gesO5aTsgIzkxNTQKK+mFlSA+IG3DoW87ICM5MTU1CivphZYgPiBkxIFuOyAjOTE1Ngor6YWXID4geMO5OyAjOTE1Nwor6YWYID4gdMOzdTsgIzkxNTgKK+mFmSA+IHpoxJNuOyAjOTE1OQor6YWaID4gZsSTbjsgIzkxNUEKK+mFnSA+IHnDuW47ICM5MTVECivphZ4gPiB0w6BpOyAjOTE1RQor6YWfID4gdGnEgW47ICM5MTVGCivphaAgPiBxacSDOyAjOTE2MAor6YWhID4gdMO6bzsgIzkxNjEKK+mFoiA+IHrDuW87ICM5MTYyCivphaMgPiBoxIFuOyAjOTE2Mwor6YWkID4gZ8WrOyAjOTE2NAor6YWlID4gc8WrOyAjOTE2NQor6YWmID4gcMOyOyAjOTE2Ngor6YWnID4gY2jDs3U7ICM5MTY3CivphaggPiB6w6BpOyAjOTE2OAor6YWpID4gbcOtbmc7ICM5MTY5CivphaogPiBsw7lvOyAjOTE2QQor6YWrID4gY2jDuW87ICM5MTZCCivphawgPiBjaMOzdTsgIzkxNkMKK+mFrSA+IHnDsnU7ICM5MTZECivpha4gPiB0w7NuZzsgIzkxNkUKK+mFryA+IHpoxK07ICM5MTZGCivphbAgPiB4acSBbjsgIzkxNzAKK+mFsSA+IGppw6BuZzsgIzkxNzEKK+mFsiA+IGNow6luZzsgIzkxNzIKK+mFsyA+IHnDrG47ICM5MTczCivphbQgPiB0w7o7ICM5MTc0CivphbUgPiB4acOgbzsgIzkxNzUKK+mFtiA+IG3DqWk7ICM5MTc2CivphbcgPiBrw7k7ICM5MTc3CivphbggPiBzdcSBbjsgIzkxNzgKK+mFuSA+IGzDqGk7ICM5MTc5CivphbogPiBww7o7ICM5MTdBCivphbsgPiB6w7lpOyAjOTE3Qgor6YW8ID4gaMSDaTsgIzkxN0MKK+mFvSA+IHnDoG47ICM5MTdECivphb4gPiB4xK07ICM5MTdFCivphb8gPiBuacOgbmc7ICM5MTdGCivphoAgPiB3w6lpOyAjOTE4MAor6YaBID4gbMO5OyAjOTE4MQor6YaCID4gbMSDbjsgIzkxODIKK+mGgyA+IHnEgW47ICM5MTgzCivphoQgPiB0w6FvOyAjOTE4NAor6YaFID4gcMSTaTsgIzkxODUKK+mGhiA+IHpoxINuOyAjOTE4Ngor6YaHID4gY2jDum47ICM5MTg3CivphoggPiB0w6FuOyAjOTE4OAor6YaJID4gesO5aTsgIzkxODkKK+mGiiA+IGNow7lvOyAjOTE4QQor6YaLID4gY8O5OyAjOTE4Qgor6YaMID4ga8WrbjsgIzkxOEMKK+mGjSA+IHTDrTsgIzkxOEQKK+mGjiA+IG1pw6FuOyAjOTE4RQor6YaPID4gZMWrOyAjOTE4Rgor6YaQID4gaMO6OyAjOTE5MAor6YaRID4geMWtOyAjOTE5MQor6YaSID4geMStbmc7ICM5MTkyCivphpMgPiB0xINuOyAjOTE5Mwor6YaUID4gasSrdTsgIzkxOTQKK+mGlSA+IGNow7puOyAjOTE5NQor6YaWID4gecO5bjsgIzkxOTYKK+mGlyA+IHDDsjsgIzkxOTcKK+mGmCA+IGvDqDsgIzkxOTgKK+mGmSA+IHPFjXU7ICM5MTk5CivphpogPiBtw607ICM5MTlBCivphpsgPiBxdcOhbjsgIzkxOUIKK+mGnCA+IGNoxY91OyAjOTE5Qwor6YadID4gY8O6bzsgIzkxOUQKK+mGniA+IHnDuW47ICM5MTlFCivphp8gPiB5w7JuZzsgIzkxOUYKK+mGoCA+IMOgbmc7ICM5MUEwCivphqEgPiB6aMOgOyAjOTFBMQor6YaiID4gaMSDaTsgIzkxQTIKK+mGoyA+IHTDoW5nOyAjOTFBMwor6YakID4gamnDoG5nOyAjOTFBNAor6YalID4gcGnEg287ICM5MUE1CivphqYgPiBzaMSDbjsgIzkxQTYKK+mGpyA+IHnDuTsgIzkxQTcKK+mGqCA+IGzDrTsgIzkxQTgKK+mGqSA+IHrDoW87ICM5MUE5CivphqogPiBsw6FvOyAjOTFBQQor6YarID4gecSrOyAjOTFBQgor6YasID4gamnDoG5nOyAjOTFBQwor6YatID4gcMWrOyAjOTFBRAor6YauID4gamnDoG87ICM5MUFFCivphq8gPiB4xKs7ICM5MUFGCivphrAgPiB0w6FuOyAjOTFCMAor6YaxID4gcMOyOyAjOTFCMQor6YayID4gbsOzbmc7ICM5MUIyCivphrMgPiB5w6w7ICM5MUIzCivphrQgPiBsxK07ICM5MUI0CivphrUgPiBqw7k7ICM5MUI1CivphrYgPiBqacOgbzsgIzkxQjYKK+mGtyA+IHnDrDsgIzkxQjcKK+mGuCA+IG5pw6BuZzsgIzkxQjgKK+mGuSA+IHLDujsgIzkxQjkKK+mGuiA+IHjFq247ICM5MUJBCivphrsgPiBjaMOzdTsgIzkxQkIKK+mGvCA+IHnDoG47ICM5MUJDCivphr0gPiBsw61uZzsgIzkxQkQKK+mGviA+IG3DrTsgIzkxQkUKK+mGvyA+IG3DrTsgIzkxQkYKK+mHgCA+IG5pw6BuZzsgIzkxQzAKK+mHgSA+IHjDrG47ICM5MUMxCivph4IgPiBqacOgbzsgIzkxQzIKK+mHgyA+IHjErTsgIzkxQzMKK+mHhCA+IG3DrTsgIzkxQzQKK+mHhSA+IHnDoG47ICM5MUM1Civph4YgPiBiacOgbjsgIzkxQzYKK+mHhyA+IGPEg2k7ICM5MUM3Civph4ggPiBzaMOsOyAjOTFDOAor6YeJID4gecOydTsgIzkxQzkKK+mHiiA+IHNow6w7ICM5MUNBCivph4sgPiBzaMOsOyAjOTFDQgor6YeMID4gbMStOyAjOTFDQwor6YeNID4gemjDsm5nOyAjOTFDRAor6YeOID4gecSVOyAjOTFDRQor6YePID4gbGnDoG5nOyAjOTFDRgor6YeQID4gbMOtOyAjOTFEMAor6YeRID4gasSrbjsgIzkxRDEKK+mHkiA+IGrEq24nICd6w6wnICdww6FuZzsgIzkxRDIKK+mHkyA+IHHDrXU7ICM5MUQzCivph5QgPiB5xK07ICM5MUQ0Civph5UgPiBkacSDbzsgIzkxRDUKK+mHliA+IGTEgW87ICM5MUQ2Civph5cgPiB6aMSBbzsgIzkxRDcKK+mHmCA+IGTEq25nOyAjOTFEOAor6YeZID4gcMOyOyAjOTFEOQor6YeaID4gccOtdTsgIzkxREEKK+mHmyA+IGjDqTsgIzkxREIKK+mHnCA+IGbFrTsgIzkxREMKK+mHnSA+IHpoxJNuOyAjOTFERAor6YeeID4gemjDrTsgIzkxREUKK+mHnyA+IGLEgTsgIzkxREYKK+mHoCA+IGx1w6BuOyAjOTFFMAor6YehID4gZsWtOyAjOTFFMQor6YeiID4gbsOhaTsgIzkxRTIKK+mHoyA+IGRpw6BvOyAjOTFFMwor6YekID4gc2jDoG47ICM5MUU0Civph6UgPiBxacSDbzsgIzkxRTUKK+mHpiA+IGvDsnU7ICM5MUU2Civph6cgPiBjaHXDoG47ICM5MUU3Civph6ggPiB6xK07ICM5MUU4Civph6kgPiBmw6FuOyAjOTFFOQor6YeqID4gecO6OyAjOTFFQQor6YerID4gaHXDoTsgIzkxRUIKK+mHrCA+IGjDoG47ICM5MUVDCivph60gPiBnxY1uZzsgIzkxRUQKK+mHriA+IHHDrTsgIzkxRUUKK+mHryA+IG3DoW5nOyAjOTFFRgor6YewID4gcsOsOyAjOTFGMAor6YexID4gZMOsOyAjOTFGMQor6YeyID4gc8OsOyAjOTFGMgor6YezID4geMOsOyAjOTFGMwor6Ye0ID4gecOsOyAjOTFGNAor6Ye1ID4gY2jEgWk7ICM5MUY1Civph7YgPiBzaMSrOyAjOTFGNgor6Ye3ID4gdMWtOyAjOTFGNwor6Ye4ID4geMOsOyAjOTFGOAor6Ye5ID4gbseaOyAjOTFGOQor6Ye6ID4gcWnEgW47ICM5MUZBCivph7wgPiBqacOgbjsgIzkxRkMKK+mHvSA+IHDEqzsgIzkxRkQKK+mHviA+IHnDqTsgIzkxRkUKK+mHvyA+IHnDrW47ICM5MUZGCivpiIAgPiBixIM7ICM5MjAwCivpiIEgPiBmxIFuZzsgIzkyMDEKK+mIgiA+IGNow6luOyAjOTIwMgor6YiDID4geMOtbmc7ICM5MjAzCivpiIQgPiB0xY91OyAjOTIwNAor6YiFID4geXXDqDsgIzkyMDUKK+mIhiA+IHnDoW47ICM5MjA2CivpiIcgPiBmxas7ICM5MjA3CivpiIggPiBwxKs7ICM5MjA4CivpiIkgPiBuw6A7ICM5MjA5CivpiIogPiB4xKtuOyAjOTIwQQor6YiLID4gw6k7ICM5MjBCCivpiIwgPiBqdcOpOyAjOTIwQwor6YiNID4gZMO5bjsgIzkyMEQKK+mIjiA+IGfFjXU7ICM5MjBFCivpiI8gPiB5xK1uOyAjOTIwRgor6YiQID4gcWnDoW47ICM5MjEwCivpiJEgPiBixINuOyAjOTIxMQor6YiSID4gasOtOyAjOTIxMgor6YiTID4gcsOpbjsgIzkyMTMKK+mIlCA+IGNoxIFvOyAjOTIxNAor6YiVID4gbsStdTsgIzkyMTUKK+mIliA+IGbEk247ICM5MjE2CivpiJcgPiB5xa1uOyAjOTIxNwor6YiYID4gasStOyAjOTIxOAor6YiZID4gccOtbjsgIzkyMTkKK+mImiA+IHDDrTsgIzkyMUEKK+mImyA+IGfFq287ICM5MjFCCivpiJwgPiBow7NuZzsgIzkyMUMKK+mInSA+IHnDrW47ICM5MjFECivpiJ4gPiBqxatuOyAjOTIxRQor6YifID4gc2jEqzsgIzkyMUYKK+mIoCA+IHnDrDsgIzkyMjAKK+mIoSA+IHpoxY1uZzsgIzkyMjEKK+mIoiA+IG5pxJM7ICM5MjIyCivpiKMgPiBnw6BpOyAjOTIyMwor6YikID4gcsOsOyAjOTIyNAor6YilID4gaMO6bzsgIzkyMjUKK+mIpiA+IHTDoGk7ICM5MjI2CivpiKcgPiBrw6BuZzsgIzkyMjcKK+mIrCA+IGTDum87ICM5MjJDCivpiK0gPiB6xKs7ICM5MjJECivpiK4gPiBuxK07ICM5MjJFCivpiK8gPiB0w7o7ICM5MjJGCivpiLAgPiBzaMOsOyAjOTIzMAor6YixID4gbcOtbjsgIzkyMzEKK+mIsiA+IGfFqzsgIzkyMzIKK+mIsyA+IMSTOyAjOTIzMwor6Yi0ID4gbMOtbmc7ICM5MjM0CivpiLUgPiBiw6xuZzsgIzkyMzUKK+mItiA+IHnDrTsgIzkyMzYKK+mItyA+IGfFqzsgIzkyMzcKK+mIuCA+IGLDoTsgIzkyMzgKK+mIuSA+IHDEqzsgIzkyMzkKK+mIuiA+IHnDuTsgIzkyM0EKK+mIuyA+IHPDrDsgIzkyM0IKK+mIvCA+IHrDum87ICM5MjNDCivpiL0gPiBiw7k7ICM5MjNECivpiL4gPiB5w7N1OyAjOTIzRQor6Yi/ID4gZGnDoG47ICM5MjNGCivpiYAgPiBqacSDOyAjOTI0MAor6YmBID4gemjEk247ICM5MjQxCivpiYIgPiBzaMStOyAjOTI0Mgor6YmDID4gc2jDrDsgIzkyNDMKK+mJhCA+IHRpxJU7ICM5MjQ0CivpiYUgPiBqw7k7ICM5MjQ1CivpiYYgPiB6aMSBbjsgIzkyNDYKK+mJhyA+IHNoxKs7ICM5MjQ3CivpiYggPiBzaMOpOyAjOTI0OAor6YmJID4geHXDoG47ICM5MjQ5CivpiYogPiB6aMSBbzsgIzkyNEEKK+mJiyA+IGLDoG87ICM5MjRCCivpiYwgPiBow6k7ICM5MjRDCivpiY0gPiBiw6w7ICM5MjRECivpiY4gPiBzaMSTbmc7ICM5MjRFCivpiY8gPiBjaMO6OyAjOTI0Rgor6YmQID4gc2jDrTsgIzkyNTAKK+mJkSA+IGLDszsgIzkyNTEKK+mJkiA+IHpow7k7ICM5MjUyCivpiZMgPiBjaMOsOyAjOTI1Mwor6YmUID4gesSBOyAjOTI1NAor6YmVID4gcMWNOyAjOTI1NQor6YmWID4gdMOzbmc7ICM5MjU2CivpiZcgPiBxacOhbjsgIzkyNTcKK+mJmCA+IGbDujsgIzkyNTgKK+mJmSA+IHpoxINpOyAjOTI1OQor6YmaID4gbMStdTsgIzkyNUEKK+mJmyA+IHFpxIFuOyAjOTI1Qgor6YmcID4gZsO6OyAjOTI1Qwor6YmdID4gbMOsOyAjOTI1RAor6YmeID4geXXDqDsgIzkyNUUKK+mJnyA+IHDEqzsgIzkyNUYKK+mJoCA+IHnEgW5nOyAjOTI2MAor6YmhID4gYsOgbjsgIzkyNjEKK+mJoiA+IGLFjTsgIzkyNjIKK+mJoyA+IGppw6k7ICM5MjYzCivpiaQgPiBnxY11OyAjOTI2NAor6YmlID4gc2jDuTsgIzkyNjUKK+mJpiA+IHpoxJNuZzsgIzkyNjYKK+mJpyA+IG3FrTsgIzkyNjcKK+mJqCA+IG7ErTsgIzkyNjgKK+mJqSA+IG5pxJM7ICM5MjY5CivpiaogPiBkw6w7ICM5MjZBCivpiasgPiBqacSBOyAjOTI2Qgor6YmsID4gbcO5OyAjOTI2Qwor6YmtID4gZMOgbjsgIzkyNkQKK+mJriA+IHNoxJNuOyAjOTI2RQor6YmvID4gecStOyAjOTI2Rgor6YmwID4gc8SrOyAjOTI3MAor6YmxID4ga3XDoG5nOyAjOTI3MQor6YmyID4ga8SDOyAjOTI3Mgor6YmzID4gYsSVaTsgIzkyNzMKK+mJtCA+IGppw6BuOyAjOTI3NAor6Ym1ID4gdMOzbmc7ICM5Mjc1CivpibYgPiB4w61uZzsgIzkyNzYKK+mJtyA+IGjDs25nOyAjOTI3Nwor6Ym4ID4gamnEg287ICM5Mjc4CivpibkgPiBjaMStOyAjOTI3OQor6Ym6ID4gw6hyOyAjOTI3QQor6Ym7ID4gZ8OoOyAjOTI3Qgor6Ym8ID4gYsStbmc7ICM5MjdDCivpib0gPiBzaMOsOyAjOTI3RAor6Ym+ID4gbcOzdTsgIzkyN0UKK+mJvyA+IGppw6E7ICM5MjdGCivpioAgPiB5w61uOyAjOTI4MAor6YqBID4gasWrbjsgIzkyODEKK+mKgiA+IHpoxY11OyAjOTI4Mgor6YqDID4gY2jDsm5nOyAjOTI4Mwor6YqEID4gc2jDoG5nOyAjOTI4NAor6YqFID4gdMOzbmc7ICM5Mjg1CivpioYgPiBtw7I7ICM5Mjg2CivpiocgPiBsw6hpOyAjOTI4Nwor6YqIID4gasSrOyAjOTI4OAor6YqJID4gecO5OyAjOTI4OQor6YqKID4geMO5OyAjOTI4QQor6YqLID4gcsOpbjsgIzkyOEIKK+mKjCA+IHrDuW47ICM5MjhDCivpio0gPiB6aMOsOyAjOTI4RAor6YqOID4gccSrb25nOyAjOTI4RQor6YqPID4gc2jDoG47ICM5MjhGCivpipAgPiBjaMOsOyAjOTI5MAor6YqRID4geGnEg247ICM5MjkxCivpipIgPiB4w61uZzsgIzkyOTIKK+mKkyA+IHF1w6FuOyAjOTI5Mwor6YqUID4gcMSrOyAjOTI5NAor6YqVID4gdGnElTsgIzkyOTUKK+mKliA+IHpoxas7ICM5Mjk2CivpipcgPiBow7N1OyAjOTI5Nwor6YqYID4gbcOtbmc7ICM5Mjk4CivpipkgPiBrdcSDOyAjOTI5OQor6YqaID4gecOhbzsgIzkyOUEKK+mKmyA+IHhpxIFuOyAjOTI5Qgor6YqcID4geGnDoW47ICM5MjlDCivpip0gPiB4xKt1OyAjOTI5RAor6YqeID4gasWrbjsgIzkyOUUKK+mKnyA+IGNoxIE7ICM5MjlGCivpiqAgPiBsxINvOyAjOTJBMAor6YqhID4gasOtOyAjOTJBMQor6YqiID4gcMStOyAjOTJBMgor6YqjID4gcsWtOyAjOTJBMwor6YqkID4gbcStOyAjOTJBNAor6YqlID4gecStOyAjOTJBNQor6YqmID4gecSrbjsgIzkyQTYKK+mKpyA+IGd1xIFuZzsgIzkyQTcKK+mKqCA+IMSBbjsgIzkyQTgKK+mKqSA+IGRpxY11OyAjOTJBOQor6YqqID4gecWPdTsgIzkyQUEKK+mKqyA+IHPDqDsgIzkyQUIKK+mKrCA+IGvDoG87ICM5MkFDCivpiq0gPiBxacOhbjsgIzkyQUQKK+mKriA+IGx1w6FuOyAjOTJBRQor6YqwID4gxIFpOyAjOTJCMAor6YqxID4gZGnDoG87ICM5MkIxCivpirIgPiBow6BuOyAjOTJCMgor6YqzID4gcsO5aTsgIzkyQjMKK+mKtCA+IHNow6w7ICM5MkI0CivpirUgPiBrxJNuZzsgIzkyQjUKK+mKtiA+IHHDrXU7ICM5MkI2CivpircgPiB4acSBbzsgIzkyQjcKK+mKuCA+IHpow6k7ICM5MkI4CivpirkgPiB4w6x1OyAjOTJCOQor6Yq6ID4gesOgbmc7ICM5MkJBCivpirsgPiB0w6w7ICM5MkJCCivpirwgPiBjw7lvOyAjOTJCQwor6Yq9ID4gZ3XEgTsgIzkyQkQKK+mKviA+IGfFj25nOyAjOTJCRQor6Yq/ID4gemjFjW5nOyAjOTJCRgor6YuAID4gZMOydTsgIzkyQzAKK+mLgSA+IGzHmjsgIzkyQzEKK+mLgiA+IG3DqWk7ICM5MkMyCivpi4MgPiBsw6FuZzsgIzkyQzMKK+mLhCA+IHfEg247ICM5MkM0Civpi4UgPiB4xKtuOyAjOTJDNQor6YuGID4gecO6bjsgIzkyQzYKK+mLhyA+IGLDqGk7ICM5MkM3Civpi4ggPiB3w7k7ICM5MkM4Civpi4kgPiBzw7k7ICM5MkM5Civpi4ogPiB5w7k7ICM5MkNBCivpi4sgPiBjaMOhbjsgIzkyQ0IKK+mLjCA+IHTErW5nOyAjOTJDQwor6YuNID4gYsOzOyAjOTJDRAor6YuOID4gaMOgbjsgIzkyQ0UKK+mLjyA+IGppw6E7ICM5MkNGCivpi5AgPiBow7NuZzsgIzkyRDAKK+mLkSA+IGN1xIFuOyAjOTJEMQor6YuSID4gZsSTbmc7ICM5MkQyCivpi5MgPiBjaMSBbjsgIzkyRDMKK+mLlCA+IHfEg247ICM5MkQ0Civpi5UgPiB6aMOsOyAjOTJENQor6YuWID4gc8SrOyAjOTJENgor6YuXID4geHXEgW47ICM5MkQ3Civpi5ggPiB3w7o7ICM5MkQ4Civpi5kgPiB3w7o7ICM5MkQ5Civpi5ogPiB0acOhbzsgIzkyREEKK+mLmyA+IGfFj25nOyAjOTJEQgor6YucID4gemjDum87ICM5MkRDCivpi50gPiBsx5xlOyAjOTJERAor6YueID4geMOtbmc7ICM5MkRFCivpi58gPiBxacSBbjsgIzkyREYKK+mLoCA+IHNow6huOyAjOTJFMAor6YuhID4gaMOhbjsgIzkyRTEKK+mLoiA+IGzHnGU7ICM5MkUyCivpi6MgPiB4acOpOyAjOTJFMwor6YukID4gY2jDujsgIzkyRTQKK+mLpSA+IHpow6huZzsgIzkyRTUKK+mLpiA+IGrDujsgIzkyRTYKK+mLpyA+IHhpw6BuOyAjOTJFNwor6YuoID4gdGnElTsgIzkyRTgKK+mLqSA+IG3DoW5nOyAjOTJFOQor6YuqID4gcMWrOyAjOTJFQQor6YurID4gbMOtOyAjOTJFQgor6YusID4gcMOgbjsgIzkyRUMKK+mLrSA+IHLDuWk7ICM5MkVECivpi64gPiBjaMOpbmc7ICM5MkVFCivpi68gPiBnw6BvOyAjOTJFRgor6YuwID4gbMStOyAjOTJGMAor6YuxID4gdMOoOyAjOTJGMQor6YuzID4gemjDuTsgIzkyRjMKK+mLtSA+IHTFqzsgIzkyRjUKK+mLtiA+IGzErXU7ICM5MkY2Civpi7cgPiB6w7lpOyAjOTJGNwor6Yu4ID4gasO5OyAjOTJGOAor6Yu5ID4gY2jEg25nOyAjOTJGOQor6Yu6ID4geXXEgW47ICM5MkZBCivpi7sgPiBqacOgbjsgIzkyRkIKK+mLvCA+IGfEgW5nOyAjOTJGQwor6Yu9ID4gZGnDoG87ICM5MkZECivpi74gPiB0w6FvOyAjOTJGRQor6Yu/ID4gY2jDoW5nOyAjOTJGRgor6YyAID4gbMO6bjsgIzkzMDAKK+mMgSA+IGt1xIM7ICM5MzAxCivpjIIgPiBsw61uZzsgIzkzMDIKK+mMgyA+IGLEk2k7ICM5MzAzCivpjIQgPiBsw7k7ICM5MzA0CivpjIUgPiBsw607ICM5MzA1CivpjIYgPiBxacSBbmc7ICM5MzA2CivpjIcgPiBww7N1OyAjOTMwNwor6YyIID4ganXDoG47ICM5MzA4CivpjIkgPiBtw61uOyAjOTMwOQor6YyKID4gesO5aTsgIzkzMEEKK+mMiyA+IHDDqW5nOyAjOTMwQgor6YyMID4gw6BuOyAjOTMwQwor6YyNID4gcMOtOyAjOTMwRAor6YyOID4geGnDoG47ICM5MzBFCivpjI8gPiB5w6A7ICM5MzBGCivpjJAgPiB6aMWraTsgIzkzMTAKK+mMkSA+IGzDqGk7ICM5MzExCivpjJIgPiDEgTsgIzkzMTIKK+mMkyA+IGvFjW5nOyAjOTMxMwor6YyUID4gdMOgOyAjOTMxNAor6YyVID4ga8WrbjsgIzkzMTUKK+mMliA+IGTFrTsgIzkzMTYKK+mMlyA+IHfDqGk7ICM5MzE3CivpjJggPiBjaMO6aTsgIzkzMTgKK+mMmSA+IHrEqzsgIzkzMTkKK+mMmiA+IHpoxJNuZzsgIzkzMUEKK+mMmyA+IGLEk247ICM5MzFCCivpjJwgPiBuacSTOyAjOTMxQwor6YydID4gY8Ozbmc7ICM5MzFECivpjJ4gPiBxw7puOyAjOTMxRQor6YyfID4gdMOhbjsgIzkzMUYKK+mMoCA+IGTDrG5nOyAjOTMyMAor6YyhID4gccOtOyAjOTMyMQor6YyiID4gcWnDoW47ICM5MzIyCivpjKMgPiB6aMO6bzsgIzkzMjMKK+mMpCA+IHHDrTsgIzkzMjQKK+mMpSA+IHnDuTsgIzkzMjUKK+mMpiA+IGrErW47ICM5MzI2CivpjKcgPiBndcSDbjsgIzkzMjcKK+mMqCA+IG3DoW87ICM5MzI4CivpjKkgPiBjaMSBbmc7ICM5MzI5CivpjKogPiB0acSDbjsgIzkzMkEKK+mMqyA+IHjDrTsgIzkzMkIKK+mMrCA+IGxpw6BuOyAjOTMyQwor6YytID4gdMOhbzsgIzkzMkQKK+mMriA+IGfDuTsgIzkzMkUKK+mMryA+IGPDuW87ICM5MzJGCivpjLAgPiBzaMO5OyAjOTMzMAor6YyxID4gemjEk247ICM5MzMxCivpjLIgPiBsw7k7ICM5MzMyCivpjLMgPiBtxJVuZzsgIzkzMzMKK+mMtCA+IGzDuTsgIzkzMzQKK+mMtSA+IGh1xIE7ICM5MzM1CivpjLYgPiBiacSDbzsgIzkzMzYKK+mMtyA+IGfDoTsgIzkzMzcKK+mMuCA+IGzDoWk7ICM5MzM4CivpjLkgPiBrxJVuOyAjOTMzOQor6Yy8ID4gbsOgaTsgIzkzM0MKK+mMvSA+IHfEg247ICM5MzNECivpjL4gPiB6w6BuOyAjOTMzRQor6Y2AID4gZMOpOyAjOTM0MAor6Y2BID4geGnEgW47ICM5MzQxCivpjYMgPiBoxatvOyAjOTM0Mwor6Y2EID4gbGnDoG5nOyAjOTM0NAor6Y2GID4gbcOpbjsgIzkzNDYKK+mNhyA+IGvEg2k7ICM5MzQ3CivpjYggPiB5xKtuZzsgIzkzNDgKK+mNiSA+IGTEqzsgIzkzNDkKK+mNiiA+IGxpw6BuOyAjOTM0QQor6Y2LID4gZ8WrbzsgIzkzNEIKK+mNjCA+IHhpxINuOyAjOTM0Qwor6Y2NID4gZMO5OyAjOTM0RAor6Y2OID4gdMO6OyAjOTM0RQor6Y2PID4gd8OpaTsgIzkzNEYKK+mNkCA+IGPFjW5nOyAjOTM1MAor6Y2RID4gZsO5OyAjOTM1MQor6Y2SID4gcsOzdTsgIzkzNTIKK+mNkyA+IGrDrTsgIzkzNTMKK+mNlCA+IMOoOyAjOTM1NAor6Y2VID4gcsOzdTsgIzkzNTUKK+mNliA+IGNoxJVuOyAjOTM1Ngor6Y2XID4gdMOtOyAjOTM1Nwor6Y2YID4gemjDoTsgIzkzNTgKK+mNmSA+IGjDsm5nOyAjOTM1OQor6Y2aID4gecOhbmc7ICM5MzVBCivpjZsgPiBkdcOgbjsgIzkzNUIKK+mNnCA+IHhpxIE7ICM5MzVDCivpjZ0gPiB5w7o7ICM5MzVECivpjZ4gPiBrxJNuZzsgIzkzNUUKK+mNnyA+IHjEq25nOyAjOTM1Rgor6Y2gID4gaHXDoW5nOyAjOTM2MAor6Y2hID4gd8SVaTsgIzkzNjEKK+mNoiA+IGbDuTsgIzkzNjIKK+mNoyA+IHpoxIFvOyAjOTM2Mwor6Y2kID4gY2jDoTsgIzkzNjQKK+mNpSA+IHFpw6g7ICM5MzY1CivpjaYgPiBzaMOpOyAjOTM2Ngor6Y2nID4gaMWNbmc7ICM5MzY3CivpjaggPiBrw7ppOyAjOTM2OAor6Y2pID4gdGnEg247ICM5MzY5CivpjaogPiBtw7N1OyAjOTM2QQor6Y2rID4gcWnEgW87ICM5MzZCCivpjawgPiBxacSBbzsgIzkzNkMKK+mNrSA+IGjDs3U7ICM5MzZECivpja4gPiB0xY11OyAjOTM2RQor6Y2vID4gY8WNbmc7ICM5MzZGCivpjbAgPiBodcOhbjsgIzkzNzAKK+mNsSA+IHnDqDsgIzkzNzEKK+mNsiA+IG3DrW47ICM5MzcyCivpjbMgPiBqacOgbjsgIzkzNzMKK+mNtCA+IGR1xIFuOyAjOTM3NAor6Y21ID4gamnDoG47ICM5Mzc1CivpjbYgPiBzxY1uZzsgIzkzNzYKK+mNtyA+IGvFq2k7ICM5Mzc3CivpjbggPiBow7o7ICM5Mzc4CivpjbkgPiB4dcSBbjsgIzkzNzkKK+mNuiA+IGTFrW87ICM5MzdBCivpjbsgPiBqacOpOyAjOTM3Qgor6Y28ID4gemjEk247ICM5MzdDCivpjb0gPiBiacSBbjsgIzkzN0QKK+mNviA+IHpoxY1uZzsgIzkzN0UKK+mNvyA+IHrEqzsgIzkzN0YKK+mOgCA+IHjEq3U7ICM5MzgwCivpjoEgPiB5w6k7ICM5MzgxCivpjoIgPiBtxJVpOyAjOTM4Mgor6Y6DID4gcMOgaTsgIzkzODMKK+mOhCA+IMSBaTsgIzkzODQKK+mOhSA+IGppw6g7ICM5Mzg1CivpjocgPiBtw6lpOyAjOTM4Nwor6Y6IID4gY2jFq287ICM5Mzg4CivpjokgPiB0w6A7ICM5Mzg5CivpjoogPiBiw6BuZzsgIzkzOEEKK+mOiyA+IHhpw6E7ICM5MzhCCivpjowgPiBsacOhbjsgIzkzOEMKK+mOjSA+IHPFrW87ICM5MzhECivpjo4gPiB4w6w7ICM5MzhFCivpjo8gPiBsw611OyAjOTM4Rgor6Y6QID4gesO6OyAjOTM5MAor6Y6RID4gecOoOyAjOTM5MQor6Y6SID4gbsOydTsgIzkzOTIKK+mOkyA+IHfEk25nOyAjOTM5Mwor6Y6UID4gcsOzbmc7ICM5Mzk0CivpjpUgPiB0w6FuZzsgIzkzOTUKK+mOliA+IHPFrW87ICM5Mzk2CivpjpcgPiBxacSBbmc7ICM5Mzk3CivpjpggPiBnw6k7ICM5Mzk4CivpjpkgPiBzaMO5bzsgIzkzOTkKK+mOmiA+IGNow7ppOyAjOTM5QQor6Y6bID4gYsOzOyAjOTM5Qgor6Y6cID4gcMOhbjsgIzkzOUMKK+mOnSA+IHPDoDsgIzkzOUQKK+mOniA+IGLDrDsgIzkzOUUKK+mOnyA+IHPEg25nOyAjOTM5Rgor6Y6gID4gZ8SBbmc7ICM5M0EwCivpjqEgPiB6xKs7ICM5M0ExCivpjqIgPiB3w7k7ICM5M0EyCivpjqMgPiB5w6xuZzsgIzkzQTMKK+mOpCA+IGh1xINuZzsgIzkzQTQKK+mOpSA+IHRpw6FvOyAjOTNBNQor6Y6mID4gbMOtdTsgIzkzQTYKK+mOpyA+IGvEg2k7ICM5M0E3CivpjqggPiBzxa1uOyAjOTNBOAor6Y6pID4gc2jEgTsgIzkzQTkKK+mOqiA+IHPFjXU7ICM5M0FBCivpjqsgPiB3w6BuOyAjOTNBQgor6Y6sID4gaMOgbzsgIzkzQUMKK+mOrSA+IHpow6huOyAjOTNBRAor6Y6uID4gemjDqG47ICM5M0FFCivpjq8gPiBsxa1vOyAjOTNBRgor6Y6wID4gecOsOyAjOTNCMAor6Y6xID4geXXDoW47ICM5M0IxCivpjrIgPiB0xINuZzsgIzkzQjIKK+mOsyA+IG5pw6g7ICM5M0IzCivpjrQgPiB4w607ICM5M0I0CivpjrUgPiBqacSBOyAjOTNCNQor6Y62ID4gZ8STOyAjOTNCNgor6Y63ID4gbcSDOyAjOTNCNwor6Y64ID4ganXEgW47ICM5M0I4CivpjrsgPiBzxa1vOyAjOTNCQgor6Y6/ID4gbsOhOyAjOTNCRgor6Y+AID4gbMWtOyAjOTNDMAor6Y+BID4gc8WtbzsgIzkzQzEKK+mPgiA+IMWNdTsgIzkzQzIKK+mPgyA+IHrDujsgIzkzQzMKK+mPhCA+IHR1w6FuOyAjOTNDNAor6Y+FID4geMSrdTsgIzkzQzUKK+mPhiA+IGd1w6BuOyAjOTNDNgor6Y+HID4geHXDoG47ICM5M0M3Civpj4ggPiBsacOgbjsgIzkzQzgKK+mPiSA+IHNow7J1OyAjOTNDOQor6Y+KID4gw6FvOyAjOTNDQQor6Y+LID4gbcSDbjsgIzkzQ0IKK+mPjCA+IG3DsjsgIzkzQ0MKK+mPjSA+IGzDum87ICM5M0NECivpj44gPiBiw6w7ICM5M0NFCivpj48gPiB3w6hpOyAjOTNDRgor6Y+QID4gbMOtdTsgIzkzRDAKK+mPkSA+IGTDrTsgIzkzRDEKK+mPkiA+IHFpxIFvOyAjOTNEMgor6Y+TID4gY8WNbmc7ICM5M0QzCivpj5QgPiB5w607ICM5M0Q0Civpj5UgPiBsw7k7ICM5M0Q1Civpj5YgPiDDoW87ICM5M0Q2Civpj5cgPiBrxJNuZzsgIzkzRDcKK+mPmCA+IHFpxIFuZzsgIzkzRDgKK+mPmSA+IGPFq2k7ICM5M0Q5Civpj5ogPiBxw6w7ICM5M0RBCivpj5sgPiBjaMOhbmc7ICM5M0RCCivpj5wgPiB0xIFuZzsgIzkzREMKK+mPnSA+IG3DoG47ICM5M0RECivpj54gPiB5xY1uZzsgIzkzREUKK+mPnyA+IGNoxINuOyAjOTNERgor6Y+gID4gZsSTbmc7ICM5M0UwCivpj6EgPiBqw6xuZzsgIzkzRTEKK+mPoiA+IGJpxIFvOyAjOTNFMgor6Y+jID4gc2jDuTsgIzkzRTMKK+mPpCA+IGzDsnU7ICM5M0U0Civpj6UgPiB4w6x1OyAjOTNFNQor6Y+mID4gY8WNbmc7ICM5M0U2Civpj6cgPiBsw7NuZzsgIzkzRTcKK+mPqCA+IHrDoG47ICM5M0U4Civpj6kgPiBqacOgbjsgIzkzRTkKK+mPqiA+IGPDoW87ICM5M0VBCivpj6sgPiBsw607ICM5M0VCCivpj6wgPiB4acOgOyAjOTNFQwor6Y+tID4geMSrOyAjOTNFRAor6Y+uID4ga8SBbmc7ICM5M0VFCivpj7AgPiBiw6huZzsgIzkzRjAKK+mPsyA+IHpoxJNuZzsgIzkzRjMKK+mPtCA+IGzDuTsgIzkzRjQKK+mPtSA+IGh1w6E7ICM5M0Y1Civpj7YgPiBqw607ICM5M0Y2Civpj7cgPiBww7o7ICM5M0Y3Civpj7ggPiBow7lpOyAjOTNGOAor6Y+5ID4gcWnEgW5nOyAjOTNGOQor6Y+6ID4gcMWNOyAjOTNGQQor6Y+7ID4gbMOtbjsgIzkzRkIKK+mPvCA+IHPFrW87ICM5M0ZDCivpj70gPiB4w6x1OyAjOTNGRAor6Y++ID4gc8SDbjsgIzkzRkUKK+mPvyA+IGNoxJNuZzsgIzkzRkYKK+mQgCA+IGvDuWk7ICM5NDAwCivpkIEgPiBzxKs7ICM5NDAxCivpkIIgPiBsw6x1OyAjOTQwMgor6ZCDID4gbsOhbzsgIzk0MDMKK+mQhCA+IGjDqW5nOyAjOTQwNAor6ZCFID4gcGnElTsgIzk0MDUKK+mQhiA+IHPDuWk7ICM5NDA2CivpkIcgPiBmw6FuOyAjOTQwNwor6ZCIID4gcWnDoW87ICM5NDA4CivpkIkgPiBxdcSBbjsgIzk0MDkKK+mQiiA+IHnDoW5nOyAjOTQwQQor6ZCLID4gdMOgbmc7ICM5NDBCCivpkIwgPiB4acOgbmc7ICM5NDBDCivpkI0gPiBqdcOpOyAjOTQwRAor6ZCOID4gamnEgW87ICM5NDBFCivpkI8gPiB6xatuOyAjOTQwRgor6ZCQID4gbGnDoW87ICM5NDEwCivpkJEgPiBqacOpOyAjOTQxMQor6ZCSID4gbMOhbzsgIzk0MTIKK+mQkyA+IGTDuWk7ICM5NDEzCivpkJQgPiB0w6FuOyAjOTQxNAor6ZCVID4gesSBbjsgIzk0MTUKK+mQliA+IGrEqzsgIzk0MTYKK+mQlyA+IGppxINuOyAjOTQxNwor6ZCYID4gemjFjW5nOyAjOTQxOAor6ZCZID4gZMSTbmc7ICM5NDE5CivpkJogPiB5w6A7ICM5NDFBCivpkJsgPiB5w6xuZzsgIzk0MUIKK+mQnCA+IGTDuWk7ICM5NDFDCivpkJ0gPiBqdcOpOyAjOTQxRAor6ZCeID4gbsOydTsgIzk0MUUKK+mQnyA+IHTDrDsgIzk0MUYKK+mQoCA+IHDFrTsgIzk0MjAKK+mQoSA+IHRpxJU7ICM5NDIxCivpkKQgPiBkxK1uZzsgIzk0MjQKK+mQpSA+IHNow6BuOyAjOTQyNQor6ZCmID4ga8SBaTsgIzk0MjYKK+mQpyA+IGppxINuOyAjOTQyNwor6ZCoID4gZsOoaTsgIzk0MjgKK+mQqSA+IHPDuWk7ICM5NDI5CivpkKogPiBsxa07ICM5NDJBCivpkKsgPiBqdcSBbjsgIzk0MkIKK+mQrCA+IGjDuWk7ICM5NDJDCivpkK0gPiB5w7k7ICM5NDJECivpkK4gPiBsacOhbjsgIzk0MkUKK+mQryA+IHpow7pvOyAjOTQyRgor6ZCwID4gcWnEgW87ICM5NDMwCivpkLEgPiBxacSBbjsgIzk0MzEKK+mQsiA+IHpow7pvOyAjOTQzMgor6ZCzID4gbMOpaTsgIzk0MzMKK+mQtCA+IGLDrDsgIzk0MzQKK+mQtSA+IHRpxJU7ICM5NDM1CivpkLYgPiBodcOhbjsgIzk0MzYKK+mQtyA+IHnDqDsgIzk0MzcKK+mQuCA+IGTDum87ICM5NDM4CivpkLkgPiBnxa1vOyAjOTQzOQor6ZC6ID4gZMSBbmc7ICM5NDNBCivpkLsgPiBqw7k7ICM5NDNCCivpkLwgPiBmw6luOyAjOTQzQwor6ZC9ID4gZMOhOyAjOTQzRAor6ZC+ID4gYsOoaTsgIzk0M0UKK+mQvyA+IHnDrDsgIzk0M0YKK+mRgCA+IMOgaTsgIzk0NDAKK+mRgSA+IHrFjW5nOyAjOTQ0MQor6ZGCID4geMO5bjsgIzk0NDIKK+mRgyA+IGRpw6BvOyAjOTQ0Mwor6ZGEID4gemjDuTsgIzk0NDQKK+mRhSA+IGjDqW5nOyAjOTQ0NQor6ZGGID4gemjDuWk7ICM5NDQ2CivpkYcgPiBqxKs7ICM5NDQ3CivpkYggPiBuacSTOyAjOTQ0OAor6ZGJID4gdMOgOyAjOTQ0OQor6ZGKID4gaMO5bzsgIzk0NEEKK+mRiyA+IHHDrG5nOyAjOTQ0Qgor6ZGMID4gYsSrbjsgIzk0NEMKK+mRjSA+IHnEq25nOyAjOTQ0RAor6ZGOID4ga8O5aTsgIzk0NEUKK+mRjyA+IG7DrW5nOyAjOTQ0Rgor6ZGQID4geMWrOyAjOTQ1MAor6ZGRID4gamnDoG47ICM5NDUxCivpkZIgPiBqacOgbjsgIzk0NTIKK+mRlCA+IGNoxIM7ICM5NDU0CivpkZUgPiB6aMOsOyAjOTQ1NQor6ZGWID4gbWnDqDsgIzk0NTYKK+mRlyA+IGzDrTsgIzk0NTcKK+mRmCA+IGzDqWk7ICM5NDU4CivpkZkgPiBqxKs7ICM5NDU5CivpkZogPiB6dcOgbjsgIzk0NUEKK+mRmyA+IGt1w6BuZzsgIzk0NUIKK+mRnCA+IHNow6BuZzsgIzk0NUMKK+mRnSA+IHDDqW5nOyAjOTQ1RAor6ZGeID4gbMOgOyAjOTQ1RQor6ZGfID4gZMO6OyAjOTQ1Rgor6ZGgID4gc2jDuW87ICM5NDYwCivpkaEgPiBjaMO5bzsgIzk0NjEKK+mRoiA+IGzHnDsgIzk0NjIKK+mRoyA+IGJpxIFvOyAjOTQ2Mwor6ZGkID4gYsOgbzsgIzk0NjQKK+mRpSA+IGzFrTsgIzk0NjUKK+mRqCA+IGzDs25nOyAjOTQ2OAor6ZGpID4gw6g7ICM5NDY5CivpkaogPiBsw7o7ICM5NDZBCivpkasgPiB4xKtuOyAjOTQ2Qgor6ZGsID4gamnDoG47ICM5NDZDCivpka0gPiBsw6BuOyAjOTQ2RAor6ZGuID4gYsOzOyAjOTQ2RQor6ZGvID4gamnEgW47ICM5NDZGCivpkbAgPiB5w6BvOyAjOTQ3MAor6ZGxID4gY2jDoW47ICM5NDcxCivpkbIgPiB4acSBbmc7ICM5NDcyCivpkbMgPiBqacOgbjsgIzk0NzMKK+mRtCA+IHjEqzsgIzk0NzQKK+mRtSA+IGd1w6BuOyAjOTQ3NQor6ZG2ID4gY8Ohbmc7ICM5NDc2CivpkbcgPiBuacOoOyAjOTQ3Nwor6ZG4ID4gbMSVaTsgIzk0NzgKK+mRuSA+IGN1w6BuOyAjOTQ3OQor6ZG6ID4gccO6OyAjOTQ3QQor6ZG7ID4gcMOgbjsgIzk0N0IKK+mRvCA+IGzDum87ICM5NDdDCivpkb0gPiB6dcOgbjsgIzk0N0QKK+mRviA+IGx1w6FuOyAjOTQ3RQor6ZG/ID4gesOhbzsgIzk0N0YKK+mSgCA+IG5pw6g7ICM5NDgwCivpkoEgPiBqdcOpOyAjOTQ4MQor6ZKCID4gdMSDbmc7ICM5NDgyCivpkoMgPiBzaMWtOyAjOTQ4Mwor6ZKEID4gbMOhbjsgIzk0ODQKK+mShSA+IGrEq247ICM5NDg1CivpkoYgPiBxw611OyAjOTQ4Ngor6ZKHID4gecStOyAjOTQ4Nwor6ZKIID4gemjEk247ICM5NDg4CivpkokgPiBkxKtuZzsgIzk0ODkKK+mSiiA+IHpoxIFvOyAjOTQ4QQor6ZKLID4gcMOyOyAjOTQ4Qgor6ZKMID4gZGnEg287ICM5NDhDCivpko0gPiB0xa07ICM5NDhECivpko4gPiBxacSBbjsgIzk0OEUKK+mSjyA+IGNodcOgbjsgIzk0OEYKK+mSkCA+IHNow6BuOyAjOTQ5MAor6ZKRID4gasOtOyAjOTQ5MQor6ZKSID4gZsOhbjsgIzk0OTIKK+mSkyA+IGRpw6BvOyAjOTQ5Mwor6ZKUID4gbcOpbjsgIzk0OTQKK+mSlSA+IG7HmjsgIzk0OTUKK+mSliA+IHjDrTsgIzk0OTYKK+mSlyA+IGNoxIFpOyAjOTQ5Nwor6ZKYID4geMOtbmc7ICM5NDk4CivpkpkgPiBnw6BpOyAjOTQ5OQor6ZKaID4gYsO5OyAjOTQ5QQor6ZKbID4gdMOgaTsgIzk0OUIKK+mSnCA+IGrDuTsgIzk0OUMKK+mSnSA+IGTDuW47ICM5NDlECivpkp4gPiBjaMSBbzsgIzk0OUUKK+mSnyA+IHpoxY1uZzsgIzk0OUYKK+mSoCA+IG7DoDsgIzk0QTAKK+mSoSA+IGLDqGk7ICM5NEExCivpkqIgPiBnxIFuZzsgIzk0QTIKK+mSoyA+IGLEg247ICM5NEEzCivpkqQgPiBxacOhbjsgIzk0QTQKK+mSpSA+IHnDoG87ICM5NEE1CivpkqYgPiBxxKtuOyAjOTRBNgor6ZKnID4gasWrbjsgIzk0QTcKK+mSqCA+IHfDuTsgIzk0QTgKK+mSqSA+IGfFjXU7ICM5NEE5CivpkqogPiBrw6BuZzsgIzk0QUEKK+mSqyA+IGbEgW5nOyAjOTRBQgor6ZKsID4gaMO6bzsgIzk0QUMKK+mSrSA+IHTFj3U7ICM5NEFECivpkq4gPiBuxK11OyAjOTRBRQor6ZKvID4gYsSDOyAjOTRBRgor6ZKwID4gecO5OyAjOTRCMAor6ZKxID4gcWnDoW47ICM5NEIxCivpkrIgPiB6aMSTbmc7ICM5NEIyCivpkrMgPiBxacOhbjsgIzk0QjMKK+mStCA+IGfFqzsgIzk0QjQKK+mStSA+IGLFjTsgIzk0QjUKK+mStiA+IMSTOyAjOTRCNgor6ZK3ID4gcMWNOyAjOTRCNwor6ZK4ID4gYsO5OyAjOTRCOAor6ZK5ID4gYsOhOyAjOTRCOQor6ZK6ID4geXXDqDsgIzk0QkEKK+mSuyA+IHp1w6BuOyAjOTRCQgor6ZK8ID4gbcO5OyAjOTRCQwor6ZK9ID4gZMOgbjsgIzk0QkQKK+mSviA+IGppxIM7ICM5NEJFCivpkr8gPiBkacOgbjsgIzk0QkYKK+mTgCA+IHnDs3U7ICM5NEMwCivpk4EgPiB0acSVOyAjOTRDMQor6ZOCID4gYsOzOyAjOTRDMgor6ZODID4gbMOtbmc7ICM5NEMzCivpk4QgPiBzaMO5bzsgIzk0QzQKK+mThSA+IHFpxIFuOyAjOTRDNQor6ZOGID4gbMStdTsgIzk0QzYKK+mThyA+IGLDoG87ICM5NEM3Civpk4ggPiBzaMOsOyAjOTRDOAor6ZOJID4geHXDoG47ICM5NEM5Civpk4ogPiBzaMOpOyAjOTRDQQor6ZOLID4gYsOsOyAjOTRDQgor6ZOMID4gbsStOyAjOTRDQwor6ZONID4gcMSrOyAjOTRDRAor6ZOOID4gZMO6bzsgIzk0Q0UKK+mTjyA+IHjDrW5nOyAjOTRDRgor6ZOQID4ga8OgbzsgIzk0RDAKK+mTkSA+IGzEg287ICM5NEQxCivpk5IgPiDDqHI7ICM5NEQyCivpk5MgPiBtw6FuZzsgIzk0RDMKK+mTlCA+IHnDoDsgIzk0RDQKK+mTlSA+IHnFj3U7ICM5NEQ1Civpk5YgPiBjaMOpbmc7ICM5NEQ2Civpk5cgPiBqacOhOyAjOTRENwor6ZOYID4gecOpOyAjOTREOAor6ZOZID4gbsOhbzsgIzk0RDkKK+mTmiA+IHpow6w7ICM5NERBCivpk5sgPiBkxIFuZzsgIzk0REIKK+mTnCA+IHTDs25nOyAjOTREQwor6ZOdID4gbMeaOyAjOTRERAor6ZOeID4gZGnDoG87ICM5NERFCivpk58gPiB5xKtuOyAjOTRERgor6ZOgID4ga8SDaTsgIzk0RTAKK+mToSA+IHpow6E7ICM5NEUxCivpk6IgPiB6aMWrOyAjOTRFMgor6ZOjID4geGnEg247ICM5NEUzCivpk6QgPiB0xK1uZzsgIzk0RTQKK+mTpSA+IGTEq3U7ICM5NEU1Civpk6YgPiB4acSBbjsgIzk0RTYKK+mTpyA+IGh1w6E7ICM5NEU3Civpk6ggPiBxdcOhbjsgIzk0RTgKK+mTqSA+IHNoxIE7ICM5NEU5Civpk6ogPiBqacOhOyAjOTRFQQor6ZOrID4gecOhbzsgIzk0RUIKK+mTrCA+IGfDqDsgIzk0RUMKK+mTrSA+IG3DrW5nOyAjOTRFRAor6ZOuID4gemjEk25nOyAjOTRFRQor6ZOvID4gc8OoOyAjOTRFRgor6ZOwID4gamnEg287ICM5NEYwCivpk7EgPiB5xK07ICM5NEYxCivpk7IgPiBjaMSDbjsgIzk0RjIKK+mTsyA+IGNow7JuZzsgIzk0RjMKK+mTtCA+IHTDoG5nOyAjOTRGNAor6ZO1ID4gxIFuOyAjOTRGNQor6ZO2ID4gecOtbjsgIzk0RjYKK+mTtyA+IHLFrTsgIzk0RjcKK+mTuCA+IHpow7k7ICM5NEY4Civpk7kgPiBsw6FvOyAjOTRGOQor6ZO6ID4gcMWrOyAjOTRGQQor6ZO7ID4gd8O6OyAjOTRGQgor6ZO8ID4gbMOhaTsgIzk0RkMKK+mTvSA+IHTDqDsgIzk0RkQKK+mTviA+IGxpw6BuOyAjOTRGRQor6ZO/ID4ga8STbmc7ICM5NEZGCivplIAgPiB4acSBbzsgIzk1MDAKK+mUgSA+IHPFrW87ICM5NTAxCivplIIgPiBsxK07ICM5NTAyCivplIMgPiB6aMOobmc7ICM5NTAzCivplIQgPiBjaMO6OyAjOTUwNAor6ZSFID4gZ8WrbzsgIzk1MDUKK+mUhiA+IGfDoG87ICM5NTA2CivplIcgPiB0acSVOyAjOTUwNwor6ZSIID4geMOsdTsgIzk1MDgKK+mUiSA+IGPDuW87ICM5NTA5CivplIogPiBsx5xlOyAjOTUwQQor6ZSLID4gZsSTbmc7ICM5NTBCCivplIwgPiB4xKtuOyAjOTUwQwor6ZSNID4gbMStdTsgIzk1MEQKK+mUjiA+IGvEgWk7ICM5NTBFCivplI8gPiBqacSDbjsgIzk1MEYKK+mUkCA+IHLDuWk7ICM5NTEwCivplJEgPiB0w6w7ICM5NTExCivplJIgPiBsw6FuZzsgIzk1MTIKK+mUkyA+IHFpxIFuOyAjOTUxMwor6ZSUID4gasO6OyAjOTUxNAor6ZSVID4gxIE7ICM5NTE1CivplJYgPiBxacSBbmc7ICM5NTE2CivplJcgPiBkxa1vOyAjOTUxNwor6ZSYID4gdGnEg247ICM5NTE4CivplJkgPiBjw7lvOyAjOTUxOQor6ZSaID4gbcOhbzsgIzk1MUEKK+mUmyA+IGLEk247ICM5NTFCCivplJwgPiBxw607ICM5NTFDCivplJ0gPiBkw6k7ICM5NTFECivplJ4gPiBrdcSDOyAjOTUxRQor6ZSfID4ga8WrbjsgIzk1MUYKK+mUoCA+IGNoxIFuZzsgIzk1MjAKK+mUoSA+IHjDrTsgIzk1MjEKK+mUoiA+IGfDuTsgIzk1MjIKK+mUoyA+IGzDum87ICM5NTIzCivplKQgPiBjaMO6aTsgIzk1MjQKK+mUpSA+IHpoxatpOyAjOTUyNQor6ZSmID4gasStbjsgIzk1MjYKK+mUpyA+IHpow6w7ICM5NTI3CivplKggPiB4acSBbjsgIzk1MjgKK+mUqSA+IGp1w6BuOyAjOTUyOQor6ZSqID4gaMWrbzsgIzk1MkEKK+mUqyA+IHDDs3U7ICM5NTJCCivplKwgPiB0w6FuOyAjOTUyQwor6ZStID4gZMOsbmc7ICM5NTJECivplK4gPiBqacOgbjsgIzk1MkUKK+mUryA+IGrDuTsgIzk1MkYKK+mUsCA+IG3ElW5nOyAjOTUzMAor6ZSxID4gesSrOyAjOTUzMQor6ZSyID4gcWnDqDsgIzk1MzIKK+mUsyA+IHnEq25nOyAjOTUzMwor6ZS0ID4ga8SDaTsgIzk1MzQKK+mUtSA+IHFpxIFuZzsgIzk1MzUKK+mUtiA+IHPFjW5nOyAjOTUzNgor6ZS3ID4gw6g7ICM5NTM3CivplLggPiBjaMOhOyAjOTUzOAor6ZS5ID4gcWnEgW87ICM5NTM5CivplLogPiB6aMWNbmc7ICM5NTNBCivplLsgPiBkdcOgbjsgIzk1M0IKK+mUvCA+IHPFjXU7ICM5NTNDCivplL0gPiBodcOhbmc7ICM5NTNECivplL4gPiBodcOhbjsgIzk1M0UKK+mUvyA+IMSBaTsgIzk1M0YKK+mVgCA+IGTDuTsgIzk1NDAKK+mVgSA+IG3ElWk7ICM5NTQxCivplYIgPiBsw7J1OyAjOTU0Mgor6ZWDID4gesSrOyAjOTU0Mwor6ZWEID4gZsOoaTsgIzk1NDQKK+mVhSA+IG3DqWk7ICM5NTQ1CivplYYgPiBtw7I7ICM5NTQ2CivplYcgPiB6aMOobjsgIzk1NDcKK+mViCA+IGLDszsgIzk1NDgKK+mViSA+IGfDqTsgIzk1NDkKK+mViiA+IG5pw6g7ICM5NTRBCivplYsgPiB0xINuZzsgIzk1NEIKK+mVjCA+IGp1xIFuOyAjOTU0Qwor6ZWNID4gbmnDqDsgIzk1NEQKK+mVjiA+IG7DoTsgIzk1NEUKK+mVjyA+IGzDrXU7ICM5NTRGCivplZAgPiBow6BvOyAjOTU1MAor6ZWRID4gYsOgbmc7ICM5NTUxCivplZIgPiB5w6w7ICM5NTUyCivplZMgPiBqacSBOyAjOTU1Mwor6ZWUID4gYsSrbjsgIzk1NTQKK+mVlSA+IHLDs25nOyAjOTU1NQor6ZWWID4gYmnEgW87ICM5NTU2CivplZcgPiB0xIFuZzsgIzk1NTcKK+mVmCA+IG3DoG47ICM5NTU4CivplZkgPiBsw7pvOyAjOTU1OQor6ZWaID4gYsOobmc7ICM5NTVBCivplZsgPiB5xY1uZzsgIzk1NUIKK+mVnCA+IGrDrG5nOyAjOTU1Qwor6ZWdID4gZMOtOyAjOTU1RAor6ZWeID4gesO6OyAjOTU1RQor6ZWfID4geHXDoG47ICM5NTVGCivplaAgPiBsw611OyAjOTU2MAor6ZWhID4gdMOhbjsgIzk1NjEKK+mVoiA+IGp1w6k7ICM5NTYyCivplaMgPiBsacOhbzsgIzk1NjMKK+mVpCA+IHDDujsgIzk1NjQKK+mVpSA+IGzFrTsgIzk1NjUKK+mVpiA+IGTDuWk7ICM5NTY2CivplacgPiBsw6BuOyAjOTU2Nwor6ZWoID4gcMWtOyAjOTU2OAor6ZWpID4gY3XDoG47ICM5NTY5CivplaogPiBxacSBbmc7ICM5NTZBCivplasgPiBkxJNuZzsgIzk1NkIKK+mVrCA+IGjDuW87ICM5NTZDCivpla0gPiBsw6lpOyAjOTU2RAor6ZWuID4gaHXDoW47ICM5NTZFCivpla8gPiB6aMO6bzsgIzk1NkYKK+mVsCA+IGxpw6FuOyAjOTU3MAor6ZWxID4gecOsOyAjOTU3MQor6ZWyID4gY2jEgzsgIzk1NzIKK+mVsyA+IGJpxIFvOyAjOTU3Mwor6ZW0ID4gbMOgOyAjOTU3NAor6ZW1ID4gY2jDoW47ICM5NTc1CivplbYgPiB4acSBbmc7ICM5NTc2CivplbcgPiBjaMOhbmc7ICM5NTc3CivplbggPiBjaMOhbmc7ICM5NTc4CivplbkgPiBqxK11OyAjOTU3OQor6ZW6ID4gxINvOyAjOTU3QQor6ZW7ID4gZGnDqTsgIzk1N0IKK+mVvCA+IHHFqzsgIzk1N0MKK+mVvSA+IGxpxINvOyAjOTU3RAor6ZW+ID4gbcOtOyAjOTU3RQor6ZW/ID4gY2jDoW5nOyAjOTU3Rgor6ZaAID4gbcOpbjsgIzk1ODAKK+mWgSA+IG3DoDsgIzk1ODEKK+mWgiA+IHNodcSBbjsgIzk1ODIKK+mWgyA+IHNoxINuOyAjOTU4Mwor6ZaEID4gaMO5bzsgIzk1ODQKK+mWhSA+IG3DqW47ICM5NTg1CivploYgPiB5w6BuOyAjOTU4Ngor6ZaHID4gYsOsOyAjOTU4Nwor6ZaIID4gaMOgbjsgIzk1ODgKK+mWiSA+IGLDrDsgIzk1ODkKK+mWiyA+IGvEgWk7ICM5NThCCivplowgPiBrw6BuZzsgIzk1OEMKK+mWjSA+IGLEk25nOyAjOTU4RAor6ZaOID4gaMOzbmc7ICM5NThFCivplo8gPiByw7luOyAjOTU4Rgor6ZaQID4gc8OgbjsgIzk1OTAKK+mWkSA+IHhpw6FuOyAjOTU5MQor6ZaSID4geGnDoW47ICM5NTkyCivplpMgPiBqacSBbjsgIzk1OTMKK+mWlCA+IG3ErW47ICM5NTk0CivplpUgPiB4acSBOyAjOTU5NQor6ZaXID4gZMOydTsgIzk1OTcKK+mWmCA+IHpow6E7ICM5NTk4CivplpkgPiBuw6BvOyAjOTU5OQor6ZaaID4gamlhbjsgIzk1OUEKK+mWmyA+IHDEk25nOyAjOTU5Qgor6ZacID4geGnEgzsgIzk1OUMKK+mWnSA+IGzDrW5nOyAjOTU5RAor6ZaeID4gYmnDoG47ICM5NTlFCivplp8gPiBiw6w7ICM5NTlGCivplqAgPiByw7luOyAjOTVBMAor6ZahID4gaMOpOyAjOTVBMQor6ZaiID4gZ3XEgW47ICM5NUEyCivplqMgPiBnw6k7ICM5NUEzCivplqQgPiBnw6k7ICM5NUE0CivplqUgPiBmw6E7ICM5NUE1CivplqYgPiBjaMO5OyAjOTVBNgor6ZanID4gaMOybmc7ICM5NUE3CivplqggPiBnxatpOyAjOTVBOAor6ZapID4gbcStbjsgIzk1QTkKK+mWqyA+IGvFrW47ICM5NUFCCivplqwgPiBsxINuZzsgIzk1QUMKK+mWrSA+IGzHmDsgIzk1QUQKK+mWriA+IHTDrW5nOyAjOTVBRQor6ZavID4gc2jDoDsgIzk1QUYKK+mWsCA+IGrDujsgIzk1QjAKK+mWsSA+IHl1w6g7ICM5NUIxCivplrIgPiB5dcOoOyAjOTVCMgor6ZazID4gY2jEg247ICM5NUIzCivplrQgPiBxw7k7ICM5NUI0CivplrUgPiBsw6xuOyAjOTVCNQor6Za2ID4gY2jEgW5nOyAjOTVCNgor6Za3ID4gc2jDoGk7ICM5NUI3CivplrggPiBrxa1uOyAjOTVCOAor6Za5ID4gecSBbjsgIzk1QjkKK+mWuiA+IG3DrW47ICM5NUJBCivplrsgPiB5w6FuOyAjOTVCQgor6Za8ID4gw6g7ICM5NUJDCivplr0gPiBoxatuOyAjOTVCRAor6Za+ID4gecO5OyAjOTVCRQor6Za/ID4gd8OpbjsgIzk1QkYKK+mXgCA+IHhpw6BuZzsgIzk1QzAKK+mXgSA+IGJhbzsgIzk1QzEKK+mXgiA+IHhpw6BuZzsgIzk1QzIKK+mXgyA+IHHDuTsgIzk1QzMKK+mXhCA+IHnEg287ICM5NUM0Civpl4UgPiB3w6luOyAjOTVDNQor6ZeGID4gYsSDbjsgIzk1QzYKK+mXhyA+IMOgbjsgIzk1QzcKK+mXiCA+IHfDqWk7ICM5NUM4Civpl4kgPiB5xKtuOyAjOTVDOQor6ZeKID4ga8O5bzsgIzk1Q0EKK+mXiyA+IHF1w6g7ICM5NUNCCivpl4wgPiBsw6FuOyAjOTVDQwor6ZeNID4gZMWrOyAjOTVDRAor6ZeQID4gdGnDoW47ICM5NUQwCivpl5EgPiBuacOoOyAjOTVEMQor6ZeSID4gdMOgOyAjOTVEMgor6ZeTID4ga8SDaTsgIzk1RDMKK+mXlCA+IGjDqTsgIzk1RDQKK+mXlSA+IHF1w6g7ICM5NUQ1Civpl5YgPiBjaHXEg25nOyAjOTVENgor6ZeXID4gZ3XEgW47ICM5NUQ3Civpl5ggPiBkw7J1OyAjOTVEOAor6ZeZID4gccStOyAjOTVEOQor6ZeaID4ga8WraTsgIzk1REEKK+mXmyA+IHTDoW5nOyAjOTVEQgor6ZecID4gZ3XEgW47ICM5NURDCivpl50gPiBwacOhbzsgIzk1REQKK+mXniA+IGvDoG47ICM5NURFCivpl58gPiB4w6w7ICM5NURGCivpl6AgPiBow7lpOyAjOTVFMAor6ZehID4gY2jEg247ICM5NUUxCivpl6IgPiBww6w7ICM5NUUyCivpl6MgPiBkw6BuZzsgIzk1RTMKK+mXpCA+IGh1w6FuOyAjOTVFNAor6ZelID4gdMOgOyAjOTVFNQor6ZemID4gd8OpbjsgIzk1RTYKK+mXqCA+IG3DqW47ICM5NUU4Civpl6kgPiBzaHXEgW47ICM5NUU5Civpl6ogPiBzaMSDbjsgIzk1RUEKK+mXqyA+IHnDoG47ICM5NUVCCivpl6wgPiBow6BuOyAjOTVFQwor6ZetID4gYsOsOyAjOTVFRAor6ZeuID4gd8OobjsgIzk1RUUKK+mXryA+IGNodcSDbmc7ICM5NUVGCivpl7AgPiByw7luOyAjOTVGMAor6ZexID4gd8OpaTsgIzk1RjEKK+mXsiA+IHhpw6FuOyAjOTVGMgor6ZezID4gaMOzbmc7ICM5NUYzCivpl7QgPiBqacSBbjsgIzk1RjQKK+mXtSA+IG3ErW47ICM5NUY1Civpl7YgPiBrw6BuZzsgIzk1RjYKK+mXtyA+IG3DqG47ICM5NUY3Civpl7ggPiB6aMOhOyAjOTVGOAor6Ze5ID4gbsOgbzsgIzk1RjkKK+mXuiA+IGfFq2k7ICM5NUZBCivpl7sgPiB3w6luOyAjOTVGQgor6Ze8ID4gdMOgOyAjOTVGQwor6Ze9ID4gbcStbjsgIzk1RkQKK+mXviA+IGzHmDsgIzk1RkUKK+mXvyA+IGvEg2k7ICM5NUZGCivpmIAgPiBmw6E7ICM5NjAwCivpmIEgPiBnw6k7ICM5NjAxCivpmIIgPiBow6k7ICM5NjAyCivpmIMgPiBrxa1uOyAjOTYwMwor6ZiEID4gasSrdTsgIzk2MDQKK+mYhSA+IHl1w6g7ICM5NjA1CivpmIYgPiBsxINuZzsgIzk2MDYKK+mYhyA+IGTFqzsgIzk2MDcKK+mYiCA+IHnDuTsgIzk2MDgKK+mYiSA+IHnEgW47ICM5NjA5CivpmIogPiBjaMSBbmc7ICM5NjBBCivpmIsgPiB4w6w7ICM5NjBCCivpmIwgPiB3w6luOyAjOTYwQwor6ZiNID4gaMWrbjsgIzk2MEQKK+mYjiA+IHnDoW47ICM5NjBFCivpmI8gPiDDqDsgIzk2MEYKK+mYkCA+IGNoxINuOyAjOTYxMAor6ZiRID4gbMOhbjsgIzk2MTEKK+mYkiA+IHHDuTsgIzk2MTIKK+mYkyA+IGjDuWk7ICM5NjEzCivpmJQgPiBrw7lvOyAjOTYxNAor6ZiVID4gcXXDqDsgIzk2MTUKK+mYliA+IGfDqTsgIzk2MTYKK+mYlyA+IHRpw6FuOyAjOTYxNwor6ZiYID4gdMOgOyAjOTYxOAor6ZiZID4gcXXDqDsgIzk2MTkKK+mYmiA+IGvDoG47ICM5NjFBCivpmJsgPiBodcOhbjsgIzk2MUIKK+mYnCA+IGbDuTsgIzk2MUMKK+mYnSA+IGbDuTsgIzk2MUQKK+mYniA+IGzDqDsgIzk2MUUKK+mYnyA+IGTDuWk7ICM5NjFGCivpmKAgPiB4w6xuOyAjOTYyMAor6ZihID4gcWnEgW47ICM5NjIxCivpmKIgPiB3w7k7ICM5NjIyCivpmKMgPiB5w6w7ICM5NjIzCivpmKQgPiB0w7pvOyAjOTYyNAor6ZilID4gecSrbjsgIzk2MjUKK+mYpiA+IHnDoW5nOyAjOTYyNgor6ZinID4gZMWPdTsgIzk2MjcKK+mYqCA+IMOoOyAjOTYyOAor6ZipID4gc2jEk25nOyAjOTYyOQor6ZiqID4gYsSDbjsgIzk2MkEKK+mYqyA+IHDDqWk7ICM5NjJCCivpmKwgPiBrxJNuZzsgIzk2MkMKK+mYrSA+IHnFrW47ICM5NjJECivpmK4gPiBydcSDbjsgIzk2MkUKK+mYryA+IHpoxK07ICM5NjJGCivpmLAgPiBww607ICM5NjMwCivpmLEgPiBqxK1uZzsgIzk2MzEKK+mYsiA+IGbDoW5nOyAjOTYzMgor6ZizID4gecOhbmc7ICM5NjMzCivpmLQgPiB5xKtuOyAjOTYzNAor6Zi1ID4gemjDqG47ICM5NjM1CivpmLYgPiBqacSTOyAjOTYzNgor6Zi3ID4gY2jEk25nOyAjOTYzNwor6Zi4ID4gw6g7ICM5NjM4CivpmLkgPiBxxas7ICM5NjM5CivpmLogPiBkxK07ICM5NjNBCivpmLsgPiB6xa07ICM5NjNCCivpmLwgPiB6w7lvOyAjOTYzQwor6Zi9ID4gZGnDoG47ICM5NjNECivpmL4gPiBsxK1uZzsgIzk2M0UKK+mYvyA+IMSBOyAjOTYzRgor6ZmAID4gdMO6bzsgIzk2NDAKK+mZgSA+IHTDum87ICM5NjQxCivpmYIgPiBwxY07ICM5NjQyCivpmYMgPiBixK1uZzsgIzk2NDMKK+mZhCA+IGbDuTsgIzk2NDQKK+mZhSA+IGrDrDsgIzk2NDUKK+mZhiA+IGzDuTsgIzk2NDYKK+mZhyA+IGzFj25nOyAjOTY0Nwor6ZmIID4gY2jDqW47ICM5NjQ4CivpmYkgPiB4w61uZzsgIzk2NDkKK+mZiiA+IGTDuW87ICM5NjRBCivpmYsgPiBsw7J1OyAjOTY0Qgor6ZmMID4gbcOyOyAjOTY0Qwor6ZmNID4gamnDoG5nOyAjOTY0RAor6ZmOID4gc2jFqzsgIzk2NEUKK+mZjyA+IGTDuW87ICM5NjRGCivpmZAgPiB4acOgbjsgIzk2NTAKK+mZkSA+IMOpcjsgIzk2NTEKK+mZkiA+IGfFrWk7ICM5NjUyCivpmZMgPiB5xas7ICM5NjUzCivpmZQgPiBnxIFpOyAjOTY1NAor6ZmVID4gc2jEg247ICM5NjU1CivpmZYgPiB4w7luOyAjOTY1Ngor6ZmXID4gcWnDoG87ICM5NjU3CivpmZggPiB4w61uZzsgIzk2NTgKK+mZmSA+IGNow7puOyAjOTY1OQor6ZmaID4gZsO5OyAjOTY1QQor6ZmbID4gYsOsOyAjOTY1Qgor6ZmcID4geGnDoTsgIzk2NUMKK+mZnSA+IHNoxINuOyAjOTY1RAor6ZmeID4gc2jEk25nOyAjOTY1RQor6ZmfID4gemjDrDsgIzk2NUYKK+mZoCA+IHDFqzsgIzk2NjAKK+mZoSA+IGTFj3U7ICM5NjYxCivpmaIgPiB5dcOgbjsgIzk2NjIKK+mZoyA+IHpow6huOyAjOTY2Mwor6ZmkID4gY2jDujsgIzk2NjQKK+mZpSA+IHhpw6BuOyAjOTY2NQor6ZmnID4gbmnDqDsgIzk2NjcKK+mZqCA+IHnFrW47ICM5NjY4CivpmakgPiB4acSDbjsgIzk2NjkKK+mZqiA+IHDDqWk7ICM5NjZBCivpmasgPiBww6lpOyAjOTY2Qgor6ZmsID4gesWNdTsgIzk2NkMKK+mZrSA+IHnEqzsgIzk2NkQKK+mZriA+IGTFrWk7ICM5NjZFCivpma8gPiBsw7puOyAjOTY2Rgor6ZmwID4gecSrbjsgIzk2NzAKK+mZsSA+IGrFqzsgIzk2NzEKK+mZsiA+IGNow7ppOyAjOTY3Mgor6ZmzID4gY2jDqW47ICM5NjczCivpmbQgPiBww607ICM5Njc0CivpmbUgPiBsw61uZzsgIzk2NzUKK+mZtiA+IHTDoW87ICM5Njc2CivpmbcgPiB4acOgbjsgIzk2NzcKK+mZuCA+IGzDuTsgIzk2NzgKK+mZuSA+IHNoZW5nOyAjOTY3OQor6Zm6ID4geGnEg247ICM5NjdBCivpmbsgPiB5xKtuOyAjOTY3Qgor6Zm8ID4gemjFrTsgIzk2N0MKK+mZvSA+IHnDoW5nOyAjOTY3RAor6Zm+ID4gcsOpbmc7ICM5NjdFCivpmb8gPiBzaMSDbjsgIzk2N0YKK+magCA+IGNow7NuZzsgIzk2ODAKK+magSA+IHnDoG47ICM5NjgxCivpmoIgPiB5xKtuOyAjOTY4Mgor6ZqDID4gecO6OyAjOTY4Mwor6ZqEID4gdMOtOyAjOTY4NAor6ZqFID4gecO6OyAjOTY4NQor6ZqGID4gbMOzbmc7ICM5Njg2CivpmocgPiB3xJNpOyAjOTY4Nwor6ZqIID4gd8STaTsgIzk2ODgKK+maiSA+IG5pw6g7ICM5Njg5CivpmoogPiBkw7lpOyAjOTY4QQor6ZqLID4gc8O6aTsgIzk2OEIKK+majCA+IMSDbjsgIzk2OEMKK+majSA+IGh1w6FuZzsgIzk2OEQKK+majiA+IGppxJM7ICM5NjhFCivpmo8gPiBzw7ppOyAjOTY4Rgor6ZqQID4gecStbjsgIzk2OTAKK+makSA+IGfEgWk7ICM5NjkxCivpmpIgPiB5xINuOyAjOTY5Mgor6ZqTID4gaMWraTsgIzk2OTMKK+malCA+IGfDqTsgIzk2OTQKK+malSA+IHnFrW47ICM5Njk1CivpmpYgPiB3w7k7ICM5Njk2CivpmpcgPiB3xJVpOyAjOTY5Nwor6ZqYID4gw6BpOyAjOTY5OAor6ZqZID4geMOsOyAjOTY5OQor6ZqaID4gdMOhbmc7ICM5NjlBCivpmpsgPiBqw6w7ICM5NjlCCivpmpwgPiB6aMOgbmc7ICM5NjlDCivpmp0gPiBkxINvOyAjOTY5RAor6ZqeID4gw6FvOyAjOTY5RQor6ZqfID4geMOsOyAjOTY5Rgor6ZqgID4gecStbjsgIzk2QTAKK+maoiA+IHLDoG87ICM5NkEyCivpmqMgPiBsw61uOyAjOTZBMwor6ZqkID4gdMO6aTsgIzk2QTQKK+mapSA+IGTDqG5nOyAjOTZBNQor6ZqmID4gcMStOyAjOTZBNgor6ZqnID4gc8O5aTsgIzk2QTcKK+maqCA+IHPDumk7ICM5NkE4CivpmqkgPiB5w7k7ICM5NkE5CivpmqogPiB4acSDbjsgIzk2QUEKK+maqyA+IGbEk247ICM5NkFCCivpmqwgPiBuxK07ICM5NkFDCivpmq0gPiDDqXI7ICM5NkFECivpmq4gPiBqxKs7ICM5NkFFCivpmq8gPiBkxINvOyAjOTZBRgor6ZqwID4geMOtOyAjOTZCMAor6ZqxID4gecStbjsgIzk2QjEKK+masiA+IMOpOyAjOTZCMgor6ZqzID4gaMWraTsgIzk2QjMKK+matCA+IGzFj25nOyAjOTZCNAor6Zq1ID4geMSrOyAjOTZCNQor6Zq2ID4gbMOsOyAjOTZCNgor6Zq3ID4gbMOsOyAjOTZCNwor6Zq4ID4gbMOsOyAjOTZCOAor6Zq5ID4gemjFq2k7ICM5NkI5CivpmrogPiBow6g7ICM5NkJBCivpmrsgPiB6aMSrOyAjOTZCQgor6Zq8ID4gemjFrW47ICM5NkJDCivpmr0gPiBqw7luOyAjOTZCRAor6Zq+ID4gbsOhbjsgIzk2QkUKK+mavyA+IHnDrDsgIzk2QkYKK+mbgCA+IHF1w6g7ICM5NkMwCivpm4EgPiB5w6BuOyAjOTZDMQor6ZuCID4gcWnDoW47ICM5NkMyCivpm4MgPiB5xIM7ICM5NkMzCivpm4QgPiB4w61vbmc7ICM5NkM0Civpm4UgPiB5xIM7ICM5NkM1Civpm4YgPiBqw607ICM5NkM2Civpm4cgPiBnw7k7ICM5NkM3Civpm4ggPiBodcOhbjsgIzk2QzgKK+mbiSA+IHpow6w7ICM5NkM5Civpm4ogPiBnw7J1OyAjOTZDQQor6ZuLID4gasO5bjsgIzk2Q0IKK+mbjCA+IGPDrTsgIzk2Q0MKK+mbjSA+IHnFjW5nOyAjOTZDRAor6ZuOID4gasWrOyAjOTZDRQor6ZuPID4gY2jDujsgIzk2Q0YKK+mbkCA+IGjFqzsgIzk2RDAKK+mbkSA+IHrDoTsgIzk2RDEKK+mbkiA+IGzDuW87ICM5NkQyCivpm5MgPiB5w7o7ICM5NkQzCivpm5QgPiBjaMOzdTsgIzk2RDQKK+mblSA+IGRpxIFvOyAjOTZENQor6ZuWID4gc8WraTsgIzk2RDYKK+mblyA+IGjDoG47ICM5NkQ3Civpm5ggPiBow7lvOyAjOTZEOAor6ZuZID4gc2h1xIFuZzsgIzk2RDkKK+mbmiA+IGd1w6BuOyAjOTZEQQor6ZubID4gY2jDujsgIzk2REIKK+mbnCA+IHrDoTsgIzk2REMKK+mbnSA+IHnFjW5nOyAjOTZERAor6ZueID4gasSrOyAjOTZERQor6ZufID4geMSrOyAjOTZERgor6ZugID4gY2jDs3U7ICM5NkUwCivpm6EgPiBsw6x1OyAjOTZFMQor6ZuiID4gbMOtOyAjOTZFMgor6ZujID4gbsOhbjsgIzk2RTMKK+mbpCA+IHh1w6k7ICM5NkU0Civpm6UgPiB6w6E7ICM5NkU1Civpm6YgPiBqw607ICM5NkU2Civpm6cgPiBqw607ICM5NkU3Civpm6ggPiB5xa07ICM5NkU4Civpm6kgPiB5w7o7ICM5NkU5Civpm6ogPiB4dcSVOyAjOTZFQQor6ZurID4gbsSDOyAjOTZFQgor6ZusID4gZsWPdTsgIzk2RUMKK+mbrSA+IHPDqDsgIzk2RUQKK+mbriA+IG3DuTsgIzk2RUUKK+mbryA+IHfDqW47ICM5NkVGCivpm7AgPiBmxJNuOyAjOTZGMAor6ZuxID4gcMOhbmc7ICM5NkYxCivpm7IgPiB5w7puOyAjOTZGMgor6ZuzID4gbMOsOyAjOTZGMwor6Zu0ID4gbMOsOyAjOTZGNAor6Zu1ID4gxINuZzsgIzk2RjUKK+mbtiA+IGzDrW5nOyAjOTZGNgor6Zu3ID4gbMOpaTsgIzk2RjcKK+mbuCA+IMOhbjsgIzk2RjgKK+mbuSA+IGLDoW87ICM5NkY5Civpm7ogPiBtw6luZzsgIzk2RkEKK+mbuyA+IGRpw6BuOyAjOTZGQgor6Zu8ID4gZMOgbmc7ICM5NkZDCivpm70gPiB4w61uZzsgIzk2RkQKK+mbviA+IHfDuTsgIzk2RkUKK+mbvyA+IHpow6BvOyAjOTZGRgor6ZyAID4geMWrOyAjOTcwMAor6ZyBID4gasOsOyAjOTcwMQor6ZyCID4gbcO5OyAjOTcwMgor6ZyDID4gY2jDqW47ICM5NzAzCivpnIQgPiB4acSBbzsgIzk3MDQKK+mchSA+IHpow6E7ICM5NzA1CivpnIYgPiB0w61uZzsgIzk3MDYKK+mchyA+IHpow6huOyAjOTcwNwor6ZyIID4gcMOoaTsgIzk3MDgKK+mciSA+IG3DqWk7ICM5NzA5CivpnIogPiBsw61uZzsgIzk3MEEKK+mciyA+IHHEqzsgIzk3MEIKK+mcjCA+IGNoxY11OyAjOTcwQwor6ZyNID4gaMO5bzsgIzk3MEQKK+mcjiA+IHNow6A7ICM5NzBFCivpnI8gPiBmxJNpOyAjOTcwRgor6ZyQID4gd8STbmc7ICM5NzEwCivpnJEgPiB6aMSBbjsgIzk3MTEKK+mckiA+IHnEq247ICM5NzEyCivpnJMgPiBuw607ICM5NzEzCivpnJQgPiBjaMOydTsgIzk3MTQKK+mclSA+IHTDum47ICM5NzE1CivpnJYgPiBsw61uOyAjOTcxNgor6ZyYID4gZMOybmc7ICM5NzE4CivpnJkgPiB5xKtuZzsgIzk3MTkKK+mcmiA+IHfDuTsgIzk3MUEKK+mcmyA+IGzDrW5nOyAjOTcxQgor6ZycID4gc2h1xIFuZzsgIzk3MUMKK+mcnSA+IGzDrW5nOyAjOTcxRAor6ZyeID4geGnDoTsgIzk3MUUKK+mcnyA+IGjDs25nOyAjOTcxRgor6ZygID4gecSrbjsgIzk3MjAKK+mcoSA+IG3DsjsgIzk3MjEKK+mcoiA+IG3DoGk7ICM5NzIyCivpnKMgPiB5xa1uOyAjOTcyMwor6ZykID4gbMOsdTsgIzk3MjQKK+mcpSA+IG3DqG5nOyAjOTcyNQor6ZymID4gYsSrbjsgIzk3MjYKK+mcpyA+IHfDuTsgIzk3MjcKK+mcqCA+IHfDqGk7ICM5NzI4CivpnKkgPiBow7lvOyAjOTcyOQor6ZyqID4gecOtbjsgIzk3MkEKK+mcqyA+IHjDrTsgIzk3MkIKK+mcrCA+IHnDrDsgIzk3MkMKK+mcrSA+IMSDaTsgIzk3MkQKK+mcriA+IGTDoG47ICM5NzJFCivpnK8gPiBkw6huZzsgIzk3MkYKK+mcsCA+IHhpw6BuOyAjOTczMAor6ZyxID4gecO5OyAjOTczMQor6ZyyID4gbMO5OyAjOTczMgor6ZyzID4gbMOzbmc7ICM5NzMzCivpnLQgPiBkw6BpOyAjOTczNAor6Zy1ID4gasOtOyAjOTczNQor6Zy2ID4gcMOhbmc7ICM5NzM2CivpnLcgPiB5w6FuZzsgIzk3MzcKK+mcuCA+IGLDoDsgIzk3MzgKK+mcuSA+IHDEqzsgIzk3MzkKK+mcuiA+IHfDqWk7ICM5NzNBCivpnLwgPiB4xK07ICM5NzNDCivpnL0gPiBqw6w7ICM5NzNECivpnL4gPiBtw6FpOyAjOTczRQor6Zy/ID4gbcOobmc7ICM5NzNGCivpnYAgPiBtw6luZzsgIzk3NDAKK+mdgSA+IGzDqWk7ICM5NzQxCivpnYIgPiBsw6w7ICM5NzQyCivpnYMgPiBow7lvOyAjOTc0Mwor6Z2EID4gxINpOyAjOTc0NAor6Z2FID4gZsOoaTsgIzk3NDUKK+mdhiA+IGTDoGk7ICM5NzQ2CivpnYcgPiBsw7NuZzsgIzk3NDcKK+mdiCA+IGzDrW5nOyAjOTc0OAor6Z2JID4gw6BpOyAjOTc0OQor6Z2KID4gZsSTbmc7ICM5NzRBCivpnYsgPiBsw6w7ICM5NzRCCivpnYwgPiBixINvOyAjOTc0Qwor6Z2OID4gaMOoOyAjOTc0RQor6Z2PID4gaMOoOyAjOTc0Rgor6Z2QID4gYsOsbmc7ICM5NzUwCivpnZEgPiBxxKtuZzsgIzk3NTEKK+mdkiA+IHHEq25nOyAjOTc1Mgor6Z2TID4gasOsbmc7ICM5NzUzCivpnZQgPiB0acSBbjsgIzk3NTQKK+mdlSA+IHpoxJNuOyAjOTc1NQor6Z2WID4gasOsbmc7ICM5NzU2CivpnZcgPiBjaMOobmc7ICM5NzU3CivpnZggPiBxw6xuZzsgIzk3NTgKK+mdmSA+IGrDrG5nOyAjOTc1OQor6Z2aID4gasOsbmc7ICM5NzVBCivpnZsgPiBkacOgbjsgIzk3NUIKK+mdnCA+IGrDrG5nOyAjOTc1Qwor6Z2dID4gdGnEgW47ICM5NzVECivpnZ4gPiBmxJNpOyAjOTc1RQor6Z2fID4gZsSTaTsgIzk3NUYKK+mdoCA+IGvDoG87ICM5NzYwCivpnaEgPiBtxK07ICM5NzYxCivpnaIgPiBtacOgbjsgIzk3NjIKK+mdoyA+IG1pw6BuOyAjOTc2Mwor6Z2kID4gcMOgbzsgIzk3NjQKK+mdpSA+IHnDqDsgIzk3NjUKK+mdpiA+IHRpxINuOyAjOTc2Ngor6Z2nID4gaMO5aTsgIzk3NjcKK+mdqCA+IHnDqDsgIzk3NjgKK+mdqSA+IGfDqTsgIzk3NjkKK+mdqiA+IGTEq25nOyAjOTc2QQor6Z2rID4gY2jEgTsgIzk3NkIKK+mdrCA+IGppxIFuOyAjOTc2Qwor6Z2tID4gcsOobjsgIzk3NkQKK+mdriA+IGTDrTsgIzk3NkUKK+mdryA+IGTDuTsgIzk3NkYKK+mdsCA+IHfDuTsgIzk3NzAKK+mdsSA+IHLDqG47ICM5NzcxCivpnbIgPiBxw61uOyAjOTc3Mgor6Z2zID4gasOsbjsgIzk3NzMKK+mdtCA+IHh1xJM7ICM5Nzc0CivpnbUgPiBuxK11OyAjOTc3NQor6Z22ID4gYsSDOyAjOTc3Ngor6Z23ID4gecStbjsgIzk3NzcKK+mduCA+IHPEgzsgIzk3NzgKK+mduSA+IG7DoDsgIzk3NzkKK+mduiA+IG3DsjsgIzk3N0EKK+mduyA+IHrFrTsgIzk3N0IKK+mdvCA+IGTDoTsgIzk3N0MKK+mdvSA+IGLDoG47ICM5NzdECivpnb4gPiB5w6w7ICM5NzdFCivpnb8gPiB5w6BvOyAjOTc3Rgor6Z6AID4gdMOhbzsgIzk3ODAKK+megSA+IHTDum87ICM5NzgxCivpnoIgPiBqacOhOyAjOTc4Mgor6Z6DID4gaMOzbmc7ICM5NzgzCivpnoQgPiBww6FvOyAjOTc4NAor6Z6FID4gecSDbmc7ICM5Nzg1CivpnocgPiB5xKtuOyAjOTc4Nwor6Z6IID4gamnDoTsgIzk3ODgKK+meiSA+IHTDoW87ICM5Nzg5CivpnoogPiBqw607ICM5NzhBCivpnosgPiB4acOpOyAjOTc4Qgor6Z6MID4gxIFuOyAjOTc4Qwor6Z6NID4gxIFuOyAjOTc4RAor6Z6OID4gaMOpbjsgIzk3OEUKK+mejyA+IGfFj25nOyAjOTc4Rgor6Z6RID4gZMOhOyAjOTc5MQor6Z6SID4gcWnEgW87ICM5NzkyCivpnpMgPiB0xKtuZzsgIzk3OTMKK+melCA+IHfEg247ICM5Nzk0CivpnpUgPiB5w6xuZzsgIzk3OTUKK+meliA+IHPFq2k7ICM5Nzk2CivpnpcgPiB0acOhbzsgIzk3OTcKK+memCA+IHFpw6BvOyAjOTc5OAor6Z6ZID4geHXDoG47ICM5Nzk5CivpnpogPiBrw7JuZzsgIzk3OUEKK+memyA+IGLElW5nOyAjOTc5Qgor6Z6cID4gdMOgOyAjOTc5Qwor6Z6dID4gemjEg25nOyAjOTc5RAor6Z6eID4gYsStbmc7ICM5NzlFCivpnp8gPiBrw7lvOyAjOTc5Rgor6Z6gID4gasO6OyAjOTdBMAor6Z6hID4gbGE7ICM5N0ExCivpnqIgPiB4acOoOyAjOTdBMgor6Z6jID4gcsOzdTsgIzk3QTMKK+mepCA+IGLEgW5nOyAjOTdBNAor6Z6lID4gecOsOyAjOTdBNQor6Z6mID4gccSrdTsgIzk3QTYKK+mepyA+IHHEq3U7ICM5N0E3CivpnqggPiBow6k7ICM5N0E4CivpnqkgPiB4acOgbzsgIzk3QTkKK+meqiA+IG3DuTsgIzk3QUEKK+meqyA+IGrDujsgIzk3QUIKK+merCA+IGppxIFuOyAjOTdBQwor6Z6tID4gYmnEgW47ICM5N0FECivpnq4gPiBkxKs7ICM5N0FFCivpnq8gPiBqacSBbjsgIzk3QUYKK+mesSA+IHTEgW87ICM5N0IxCivpnrIgPiBnxY11OyAjOTdCMgor6Z6zID4gdMOgOyAjOTdCMwor6Z60ID4gYsOoaTsgIzk3QjQKK+metSA+IHhpw6k7ICM5N0I1CivpnrYgPiBww6FuOyAjOTdCNgor6Z63ID4gZ8OpOyAjOTdCNwor6Z64ID4gYsOsOyAjOTdCOAor6Z65ID4ga8O5bzsgIzk3QjkKK+meuiA+IHRhbmc7ICM5N0JBCivpnrsgPiBsw7N1OyAjOTdCQgor6Z68ID4gZ8O5aTsgIzk3QkMKK+mevSA+IHFpw6FvOyAjOTdCRAor6Z6+ID4geHXEkzsgIzk3QkUKK+mevyA+IGrEqzsgIzk3QkYKK+mfgCA+IGppxIFuOyAjOTdDMAor6Z+BID4gamnEgW5nOyAjOTdDMQor6Z+CID4gY2jDoG47ICM5N0MyCivpn4MgPiBkw6E7ICM5N0MzCivpn4QgPiBow7lvOyAjOTdDNAor6Z+FID4geGnEg247ICM5N0M1Civpn4YgPiBxacSBbjsgIzk3QzYKK+mfhyA+IGTDujsgIzk3QzcKK+mfiCA+IHfDoDsgIzk3QzgKK+mfiSA+IGppxIFuOyAjOTdDOQor6Z+KID4gbMOhbjsgIzk3Q0EKK+mfiyA+IHfDqWk7ICM5N0NCCivpn4wgPiByw6huOyAjOTdDQwor6Z+NID4gZsO6OyAjOTdDRAor6Z+OID4gbcOoaTsgIzk3Q0UKK+mfjyA+IGp1w6BuOyAjOTdDRgor6Z+QID4gZ8OpOyAjOTdEMAor6Z+RID4gd8SVaTsgIzk3RDEKK+mfkiA+IHFpw6BvOyAjOTdEMgor6Z+TID4gaMOhbjsgIzk3RDMKK+mflCA+IGNow6BuZzsgIzk3RDQKK+mfliA+IHLDs3U7ICM5N0Q2Civpn5cgPiB4w7luOyAjOTdENwor6Z+YID4gc2jDqDsgIzk3RDgKK+mfmSA+IHfElWk7ICM5N0Q5Civpn5ogPiBnw6k7ICM5N0RBCivpn5sgPiBiw6hpOyAjOTdEQgor6Z+cID4gdMSBbzsgIzk3REMKK+mfnSA+IGfFjXU7ICM5N0RECivpn54gPiB5w7luOyAjOTdERQor6Z+gID4gYsOsOyAjOTdFMAor6Z+hID4gd8SVaTsgIzk3RTEKK+mfoiA+IGjDuWk7ICM5N0UyCivpn6MgPiBkw7o7ICM5N0UzCivpn6QgPiB3w6A7ICM5N0U0Civpn6UgPiBkw7o7ICM5N0U1Civpn6YgPiB3w6lpOyAjOTdFNgor6Z+nID4gcsOobjsgIzk3RTcKK+mfqCA+IGbDujsgIzk3RTgKK+mfqSA+IGjDoW47ICM5N0U5Civpn6ogPiB3xJVpOyAjOTdFQQor6Z+rID4gecO5bjsgIzk3RUIKK+mfrCA+IHTEgW87ICM5N0VDCivpn60gPiBqxK11OyAjOTdFRAor6Z+uID4gasStdTsgIzk3RUUKK+mfryA+IHhpxIFuOyAjOTdFRgor6Z+wID4geGnDqDsgIzk3RjAKK+mfsSA+IHhpxIFuOyAjOTdGMQor6Z+yID4gasSrOyAjOTdGMgor6Z+zID4gecSrbjsgIzk3RjMKK+mftCA+IHrDoTsgIzk3RjQKK+mftSA+IHnDuW47ICM5N0Y1Civpn7YgPiBzaMOhbzsgIzk3RjYKK+mftyA+IGzDqDsgIzk3RjcKK+mfuCA+IHDDqW5nOyAjOTdGOAor6Z+5ID4gaMOpbmc7ICM5N0Y5Civpn7ogPiB5xKtuZzsgIzk3RkEKK+mfuyA+IHnDuW47ICM5N0ZCCivpn7wgPiBww6luZzsgIzk3RkMKK+mfvSA+IHnEq247ICM5N0ZECivpn74gPiB5xKtuOyAjOTdGRQor6Z+/ID4geGnEg25nOyAjOTdGRgor6aCAID4gaMO5OyAjOTgwMAor6aCBID4gecOoOyAjOTgwMQor6aCCID4gZMStbmc7ICM5ODAyCivpoIMgPiBxxK1uZzsgIzk4MDMKK+mghCA+IHDDoG47ICM5ODA0CivpoIUgPiB4acOgbmc7ICM5ODA1CivpoIYgPiBzaMO5bjsgIzk4MDYKK+mghyA+IGjEgW47ICM5ODA3CivpoIggPiB4xas7ICM5ODA4CivpoIkgPiB5w607ICM5ODA5CivpoIogPiB4w7k7ICM5ODBBCivpoIsgPiBnw7k7ICM5ODBCCivpoIwgPiBzw7JuZzsgIzk4MEMKK+mgjSA+IGvFrWk7ICM5ODBECivpoI4gPiBxw607ICM5ODBFCivpoI8gPiBow6FuZzsgIzk4MEYKK+mgkCA+IHnDuTsgIzk4MTAKK+mgkSA+IHfDoW47ICM5ODExCivpoJIgPiBixIFuOyAjOTgxMgor6aCTID4gZMO5bjsgIzk4MTMKK+mglCA+IGTDrTsgIzk4MTQKK+mglSA+IGTEgW47ICM5ODE1CivpoJYgPiBww6BuOyAjOTgxNgor6aCXID4gcMWPOyAjOTgxNwor6aCYID4gbMStbmc7ICM5ODE4CivpoJkgPiBjw6g7ICM5ODE5CivpoJogPiBqxK1uZzsgIzk4MUEKK+mgmyA+IGzElWk7ICM5ODFCCivpoJwgPiBow6k7ICM5ODFDCivpoJ0gPiBxacSBbzsgIzk4MUQKK+mgniA+IMOoOyAjOTgxRQor6aCfID4gw6k7ICM5ODFGCivpoKAgPiB3xJVpOyAjOTgyMAor6aChID4gamnDqTsgIzk4MjEKK+mgoiA+IGd1xIE7ICM5ODIyCivpoKMgPiBzaMSVbjsgIzk4MjMKK+mgpCA+IHnDrTsgIzk4MjQKK+mgpSA+IHNoxJVuOyAjOTgyNQor6aCmID4gaMOhaTsgIzk4MjYKK+mgpyA+IGTFq2k7ICM5ODI3CivpoKggPiBwacSBbjsgIzk4MjgKK+mgqSA+IHDEq25nOyAjOTgyOQor6aCqID4gbMOoaTsgIzk4MkEKK+mgqyA+IGbFrTsgIzk4MkIKK+mgrCA+IGppw6E7ICM5ODJDCivpoK0gPiB0w7N1OyAjOTgyRAor6aCuID4gaMO5aTsgIzk4MkUKK+mgryA+IGvDumk7ICM5ODJGCivpoLAgPiBqacOhOyAjOTgzMAor6aCxID4gbMOoOyAjOTgzMQor6aCyID4gdGlhbjsgIzk4MzIKK+mgsyA+IGNoxJNuZzsgIzk4MzMKK+mgtCA+IHnErW5nOyAjOTgzNAor6aC1ID4gasWrbjsgIzk4MzUKK+mgtiA+IGjDujsgIzk4MzYKK+mgtyA+IGjDoG47ICM5ODM3CivpoLggPiBqxK1uZzsgIzk4MzgKK+mguSA+IHTDumk7ICM5ODM5CivpoLogPiB0w7ppOyAjOTgzQQor6aC7ID4gcMOtbjsgIzk4M0IKK+mgvCA+IGzDoGk7ICM5ODNDCivpoL0gPiB0w7ppOyAjOTgzRAor6aC+ID4gesSrOyAjOTgzRQor6aC/ID4gesSrOyAjOTgzRgor6aGAID4gY2jDumk7ICM5ODQwCivpoYEgPiBkw6xuZzsgIzk4NDEKK+mhgiA+IGzDoGk7ICM5ODQyCivpoYMgPiB5w6FuOyAjOTg0Mwor6aGEID4gaMOgbjsgIzk4NDQKK+mhhSA+IGppxIFuOyAjOTg0NQor6aGGID4ga8STOyAjOTg0Ngor6aGHID4gY8O5aTsgIzk4NDcKK+mhiCA+IGrErW9uZzsgIzk4NDgKK+mhiSA+IHHEq247ICM5ODQ5CivpoYogPiB5w607ICM5ODRBCivpoYsgPiBzxIFpOyAjOTg0Qgor6aGMID4gdMOtOyAjOTg0Qwor6aGNID4gw6k7ICM5ODRECivpoY4gPiDDqDsgIzk4NEUKK+mhjyA+IHnDoW47ICM5ODRGCivpoZAgPiBow7puOyAjOTg1MAor6aGRID4ga8SDbjsgIzk4NTEKK+mhkiA+IHnDs25nOyAjOTg1Mgor6aGTID4gemh1xIFuOyAjOTg1Mwor6aGUID4gecOhbjsgIzk4NTQKK+mhlSA+IHhpxINuOyAjOTg1NQor6aGWID4geMOsbjsgIzk4NTYKK+mhlyA+IHnErTsgIzk4NTcKK+mhmCA+IHl1w6BuOyAjOTg1OAor6aGZID4gc8SDbmc7ICM5ODU5CivpoZogPiBkacSBbjsgIzk4NUEKK+mhmyA+IGRpxIFuOyAjOTg1Qgor6aGcID4gamnEg25nOyAjOTg1Qwor6aGdID4ga8WrOyAjOTg1RAor6aGeID4gbMOoaTsgIzk4NUUKK+mhnyA+IGxpw6FvOyAjOTg1Rgor6aGgID4gcGnDoG87ICM5ODYwCivpoaEgPiB5w6w7ICM5ODYxCivpoaIgPiBtw6FuOyAjOTg2Mgor6aGjID4gccSrOyAjOTg2Mwor6aGkID4gcsOgbzsgIzk4NjQKK+mhpSA+IGjDoG87ICM5ODY1CivpoaYgPiBxacOhbzsgIzk4NjYKK+mhpyA+IGfDuTsgIzk4NjcKK+mhqCA+IHjDuW47ICM5ODY4CivpoakgPiBxacSBbjsgIzk4NjkKK+mhqiA+IGjFq2k7ICM5ODZBCivpoasgPiB6aMOgbjsgIzk4NkIKK+mhrCA+IHLDujsgIzk4NkMKK+mhrSA+IGjFjW5nOyAjOTg2RAor6aGuID4gYsSrbjsgIzk4NkUKK+mhryA+IHhpxINuOyAjOTg2Rgor6aGwID4gcMOtbjsgIzk4NzAKK+mhsSA+IGzDujsgIzk4NzEKK+mhsiA+IGzEg247ICM5ODcyCivpobMgPiBuacOoOyAjOTg3Mwor6aG0ID4gcXXDoW47ICM5ODc0CivpobUgPiB5w6g7ICM5ODc1CivpobYgPiBkxK1uZzsgIzk4NzYKK+mhtyA+IHHErW5nOyAjOTg3Nwor6aG4ID4gaMSBbjsgIzk4NzgKK+mhuSA+IHhpw6BuZzsgIzk4NzkKK+mhuiA+IHNow7luOyAjOTg3QQor6aG7ID4geMWrOyAjOTg3Qgor6aG8ID4geMO5OyAjOTg3Qwor6aG9ID4gd8OhbjsgIzk4N0QKK+mhviA+IGfDuTsgIzk4N0UKK+mhvyA+IGTDuW47ICM5ODdGCivpooAgPiBxw607ICM5ODgwCivpooEgPiBixIFuOyAjOTg4MQor6aKCID4gc8Oybmc7ICM5ODgyCivpooMgPiBow6FuZzsgIzk4ODMKK+mihCA+IHnDuTsgIzk4ODQKK+mihSA+IGzDujsgIzk4ODUKK+mihiA+IGzErW5nOyAjOTg4Ngor6aKHID4gcMWPOyAjOTg4Nwor6aKIID4gasStbmc7ICM5ODg4CivpookgPiBqacOpOyAjOTg4OQor6aKKID4gamnDoTsgIzk4OEEKK+miiyA+IHRpYW47ICM5ODhCCivpoowgPiBow6BuOyAjOTg4Qwor6aKNID4gecStbmc7ICM5ODhECivpoo4gPiBqxK1vbmc7ICM5ODhFCivpoo8gPiBow6FpOyAjOTg4Rgor6aKQID4gecOtOyAjOTg5MAor6aKRID4gcMOtbjsgIzk4OTEKK+mikiA+IGjDuWk7ICM5ODkyCivpopMgPiB0w7ppOyAjOTg5Mwor6aKUID4gaMOgbjsgIzk4OTQKK+milSA+IHnErW5nOyAjOTg5NQor6aKWID4gecStbmc7ICM5ODk2CivpopcgPiBrxJM7ICM5ODk3CivpopggPiB0w607ICM5ODk4CivpopkgPiB5w7NuZzsgIzk4OTkKK+mimiA+IMOoOyAjOTg5QQor6aKbID4gemh1xIFuOyAjOTg5Qgor6aKcID4gecOhbjsgIzk4OUMKK+minSA+IMOpOyAjOTg5RAor6aKeID4gbmnDqDsgIzk4OUUKK+minyA+IG3DoW47ICM5ODlGCivpoqAgPiBkacSBbjsgIzk4QTAKK+mioSA+IHPEg25nOyAjOThBMQor6aKiID4gaMOgbzsgIzk4QTIKK+mioyA+IGzDqGk7ICM5OEEzCivpoqQgPiB6aMOgbjsgIzk4QTQKK+mipSA+IHLDujsgIzk4QTUKK+mipiA+IHDDrW47ICM5OEE2CivpoqcgPiBxdcOhbjsgIzk4QTcKK+miqCA+IGbEk25nOyAjOThBOAor6aKpID4gYmnEgW87ICM5OEE5CivpoqsgPiBmw7o7ICM5OEFCCivpoqwgPiB4acSBOyAjOThBQwor6aKtID4gemjEg247ICM5OEFECivpoq4gPiBiacSBbzsgIzk4QUUKK+miryA+IHPDoDsgIzk4QUYKK+misCA+IGLDoTsgIzk4QjAKK+misSA+IHTDoWk7ICM5OEIxCivporIgPiBsacOoOyAjOThCMgor6aKzID4gZ3XEgTsgIzk4QjMKK+mitCA+IHh1w6BuOyAjOThCNAor6aK1ID4gc2jDoG87ICM5OEI1CivporYgPiBqw7k7ICM5OEI2CivporcgPiBixKs7ICM5OEI3CivporggPiBzxKs7ICM5OEI4CivporkgPiB3xJVpOyAjOThCOQor6aK6ID4gecOhbmc7ICM5OEJBCivporsgPiB5w6FvOyAjOThCQgor6aK8ID4gc8WNdTsgIzk4QkMKK+mivSA+IGvEg2k7ICM5OEJECivpor4gPiBzxIFvOyAjOThCRQor6aK/ID4gZsOhbjsgIzk4QkYKK+mjgCA+IGzDrXU7ICM5OEMwCivpo4EgPiB4w607ICM5OEMxCivpo4IgPiBsacOhbzsgIzk4QzIKK+mjgyA+IHBpxIFvOyAjOThDMwor6aOEID4gcGnEgW87ICM5OEM0Civpo4UgPiBsw611OyAjOThDNQor6aOGID4gYmnEgW87ICM5OEM2Civpo4cgPiBiacSBbzsgIzk4QzcKK+mjiCA+IGJpxINvOyAjOThDOAor6aOJID4gbGnDoW87ICM5OEM5Civpo4sgPiBzw6g7ICM5OENCCivpo4wgPiBmxJNuZzsgIzk4Q0MKK+mjjSA+IGJpxIFvOyAjOThDRAor6aOOID4gZsSTbmc7ICM5OENFCivpo48gPiB5w6FuZzsgIzk4Q0YKK+mjkCA+IHpoxINuOyAjOThEMAor6aORID4gYmnEgW87ICM5OEQxCivpo5IgPiBzw6A7ICM5OEQyCivpo5MgPiBqw7k7ICM5OEQzCivpo5QgPiBzxKs7ICM5OEQ0Civpo5UgPiBzxY11OyAjOThENQor6aOWID4gecOhbzsgIzk4RDYKK+mjlyA+IGzDrXU7ICM5OEQ3Civpo5ggPiBwacSBbzsgIzk4RDgKK+mjmSA+IGJpxIFvOyAjOThEOQor6aOaID4gYmnEgW87ICM5OERBCivpo5sgPiBmxJNpOyAjOThEQgor6aOcID4gZsSBbjsgIzk4REMKK+mjnSA+IGbEk2k7ICM5OERECivpo54gPiBmxJNpOyAjOThERQor6aOfID4gc2jDrTsgIzk4REYKK+mjoCA+IHNow607ICM5OEUwCivpo6EgPiBjxIFuOyAjOThFMQor6aOiID4gasSrOyAjOThFMgor6aOjID4gZMOsbmc7ICM5OEUzCivpo6QgPiBzw6w7ICM5OEU0Civpo6UgPiB0xatvOyAjOThFNQor6aOmID4gemjEgW47ICM5OEU2Civpo6cgPiBzxatuOyAjOThFNwor6aOoID4geGnEg25nOyAjOThFOAor6aOpID4gdMO6bjsgIzk4RTkKK+mjqiA+IHLDqG47ICM5OEVBCivpo6sgPiB5w7k7ICM5OEVCCivpo6wgPiBqdcOgbjsgIzk4RUMKK+mjrSA+IGNow6w7ICM5OEVECivpo64gPiB5xK1uOyAjOThFRQor6aOvID4gZsOgbjsgIzk4RUYKK+mjsCA+IGbDoG47ICM5OEYwCivpo7EgPiBzxatuOyAjOThGMQor6aOyID4gecStbjsgIzk4RjIKK+mjsyA+IHpow7k7ICM5OEYzCivpo7QgPiB5w607ICM5OEY0Civpo7UgPiB6aMSDaTsgIzk4RjUKK+mjtiA+IGLDrDsgIzk4RjYKK+mjtyA+IGppxJU7ICM5OEY3Civpo7ggPiB0xIFvOyAjOThGOAor6aO5ID4gbMStdTsgIzk4RjkKK+mjuiA+IGPDrTsgIzk4RkEKK+mjuyA+IHRpw6g7ICM5OEZCCivpo7wgPiBzw6w7ICM5OEZDCivpo70gPiBixINvOyAjOThGRAor6aO+ID4gc2jDrDsgIzk4RkUKK+mjvyA+IGTDuW87ICM5OEZGCivppIAgPiBow6BpOyAjOTkwMAor6aSBID4gcsOobjsgIzk5MDEKK+mkgiA+IHRpxINuOyAjOTkwMgor6aSDID4gamnEg287ICM5OTAzCivppIQgPiBqacOhOyAjOTkwNAor6aSFID4gYsStbmc7ICM5OTA1CivppIYgPiB5w6FvOyAjOTkwNgor6aSHID4gdMOzbmc7ICM5OTA3CivppIggPiBjw607ICM5OTA4CivppIkgPiB4acSDbmc7ICM5OTA5CivppIogPiB5xINuZzsgIzk5MEEKK+mkiyA+IHnEg25nOyAjOTkwQgor6aSMID4gxJVyOyAjOTkwQwor6aSNID4gecOgbjsgIzk5MEQKK+mkjiA+IGxlOyAjOTkwRQor6aSPID4gecSrOyAjOTkwRgor6aSQID4gY8SBbjsgIzk5MTAKK+mkkSA+IGLDszsgIzk5MTEKK+mkkiA+IG7ElWk7ICM5OTEyCivppJMgPiDDqDsgIzk5MTMKK+mklCA+IGLFqzsgIzk5MTQKK+mklSA+IGrDuW47ICM5OTE1CivppJYgPiBkw7J1OyAjOTkxNgor6aSXID4gc8O5OyAjOTkxNwor6aSYID4gecO6OyAjOTkxOAor6aSZID4gc2jDrDsgIzk5MTkKK+mkmiA+IHnDoW87ICM5OTFBCivppJsgPiBow7puOyAjOTkxQgor6aScID4gZ8WtbzsgIzk5MUMKK+mknSA+IHNow6w7ICM5OTFECivppJ4gPiBqacOgbjsgIzk5MUUKK+mknyA+IHpow7lpOyAjOTkxRgor6aSgID4gYsStbmc7ICM5OTIwCivppKEgPiB4acOgbjsgIzk5MjEKK+mkoiA+IGLDuTsgIzk5MjIKK+mkoyA+IHnDqDsgIzk5MjMKK+mkpCA+IHTDoW47ICM5OTI0CivppKUgPiBmxJVpOyAjOTkyNQor6aSmID4gemjEgW5nOyAjOTkyNgor6aSnID4gd8OoaTsgIzk5MjcKK+mkqCA+IGd1xINuOyAjOTkyOAor6aSpID4gw6g7ICM5OTI5CivppKogPiBudcSDbjsgIzk5MkEKK+mkqyA+IGjDum47ICM5OTJCCivppKwgPiBow7o7ICM5OTJDCivppK0gPiBodcOhbmc7ICM5OTJECivppK4gPiB0acOoOyAjOTkyRQor6aSvID4gaMO5aTsgIzk5MkYKK+mksCA+IGppxIFuOyAjOTkzMAor6aSxID4gaMOzdTsgIzk5MzEKK+mksiA+IGjDqTsgIzk5MzIKK+mksyA+IHjDrW5nOyAjOTkzMwor6aS0ID4gZsSTbjsgIzk5MzQKK+mktSA+IHfDqGk7ICM5OTM1CivppLYgPiBnxa07ICM5OTM2CivppLcgPiBjaMSBOyAjOTkzNwor6aS4ID4gc8Oybmc7ICM5OTM4CivppLkgPiB0w6FuZzsgIzk5MzkKK+mkuiA+IGLDszsgIzk5M0EKK+mkuyA+IGfEgW87ICM5OTNCCivppLwgPiB4w6w7ICM5OTNDCivppL0gPiBrw7lpOyAjOTkzRAor6aS+ID4gbMOsdTsgIzk5M0UKK+mkvyA+IHPFjXU7ICM5OTNGCivppYAgPiB0w6FvOyAjOTk0MAor6aWBID4gecOoOyAjOTk0MQor6aWCID4gecO6bjsgIzk5NDIKK+mlgyA+IG3DszsgIzk5NDMKK+mlhCA+IHTDoW5nOyAjOTk0NAor6aWFID4gbcOhbjsgIzk5NDUKK+mlhiA+IGLDrDsgIzk5NDYKK+mlhyA+IHnDuTsgIzk5NDcKK+mliCA+IHjEq3U7ICM5OTQ4CivppYkgPiBqxK1uOyAjOTk0OQor6aWKID4gc8SDbjsgIzk5NEEKK+mliyA+IGvDuWk7ICM5OTRCCivppYwgPiB6aHXDoG47ICM5OTRDCivppY0gPiBzaMOgbjsgIzk5NEQKK+mljiA+IGNow6w7ICM5OTRFCivppY8gPiBkw6BuOyAjOTk0Rgor6aWQID4gecOsOyAjOTk1MAor6aWRID4gasSrOyAjOTk1MQor6aWSID4gcsOhbzsgIzk5NTIKK+mlkyA+IGNoxJNuZzsgIzk5NTMKK+mllCA+IHnFjW5nOyAjOTk1NAor6aWVID4gdMSBbzsgIzk5NTUKK+mlliA+IGjDuWk7ICM5OTU2CivppZcgPiB4acSDbmc7ICM5OTU3CivppZggPiB6aMSBbjsgIzk5NTgKK+mlmSA+IGbEk247ICM5OTU5CivppZogPiBow6BpOyAjOTk1QQor6aWbID4gbcOpbmc7ICM5OTVCCivppZwgPiB5w6BuOyAjOTk1Qwor6aWdID4gbcOzOyAjOTk1RAor6aWeID4gY2jDoW47ICM5OTVFCivppZ8gPiB4acSDbmc7ICM5OTVGCivppaAgPiBsw7pvOyAjOTk2MAor6aWhID4genXDoG47ICM5OTYxCivppaIgPiBuxINuZzsgIzk5NjIKK+mloyA+IHNow607ICM5OTYzCivppaQgPiBkw6xuZzsgIzk5NjQKK+mlpSA+IGrEqzsgIzk5NjUKK+mlpiA+IHTFq287ICM5OTY2CivppacgPiB4w61uZzsgIzk5NjcKK+mlqCA+IHTDum47ICM5OTY4CivppakgPiB4w6w7ICM5OTY5CivppaogPiByw6huOyAjOTk2QQor6aWrID4gecO5OyAjOTk2Qgor6aWsID4gY2jDrDsgIzk5NkMKK+mlrSA+IGbDoG47ICM5OTZECivppa4gPiB5xK1uOyAjOTk2RQor6aWvID4gamnDoG47ICM5OTZGCivppbAgPiBzaMOsOyAjOTk3MAor6aWxID4gYsSDbzsgIzk5NzEKK+mlsiA+IHPDrDsgIzk5NzIKK+mlsyA+IGTDuW87ICM5OTczCivppbQgPiB5w607ICM5OTc0CivppbUgPiDElXI7ICM5OTc1CivppbYgPiByw6FvOyAjOTk3Ngor6aW3ID4geGnEg25nOyAjOTk3Nwor6aW4ID4gamnDoTsgIzk5NzgKK+mluSA+IGxlOyAjOTk3OQor6aW6ID4gamnEg287ICM5OTdBCivppbsgPiB5xKs7ICM5OTdCCivppbwgPiBixK1uZzsgIzk5N0MKK+mlvSA+IGLDszsgIzk5N0QKK+mlviA+IGTDsnU7ICM5OTdFCivppb8gPiDDqDsgIzk5N0YKK+mmgCA+IHnDujsgIzk5ODAKK+mmgSA+IG7ElWk7ICM5OTgxCivppoIgPiBqw7luOyAjOTk4Mgor6aaDID4gZ8WtbzsgIzk5ODMKK+mmhCA+IGjDum47ICM5OTg0CivppoUgPiB4acOgbjsgIzk5ODUKK+mmhiA+IGd1xINuOyAjOTk4Ngor6aaHID4gY2jEgTsgIzk5ODcKK+mmiCA+IGvDuWk7ICM5OTg4CivppokgPiBnxa07ICM5OTg5CivppoogPiBzxY11OyAjOTk4QQor6aaLID4gY2jDoW47ICM5OThCCivppowgPiB5w6g7ICM5OThDCivppo0gPiBtw7M7ICM5OThECivppo4gPiBiw7M7ICM5OThFCivppo8gPiBsw6x1OyAjOTk4Rgor6aaQID4geMSrdTsgIzk5OTAKK+mmkSA+IGrErW47ICM5OTkxCivpppIgPiBtw6FuOyAjOTk5Mgor6aaTID4gc8SDbjsgIzk5OTMKK+mmlCA+IHpodcOgbjsgIzk5OTQKK+mmlSA+IG7Eg25nOyAjOTk5NQor6aaWID4gc2jFj3U7ICM5OTk2CivpppcgPiBrw7ppOyAjOTk5Nwor6aaYID4gZ8O6bzsgIzk5OTgKK+mmmSA+IHhpxIFuZzsgIzk5OTkKK+mmmiA+IGbDqW47ICM5OTlBCivpppsgPiBiw6E7ICM5OTlCCivpppwgPiBuxK07ICM5OTlDCivppp0gPiBiw6w7ICM5OTlECivppp4gPiBiw7M7ICM5OTlFCivppp8gPiB0w7o7ICM5OTlGCivppqAgPiBoxIFuOyAjOTlBMAor6aahID4gZsSTaTsgIzk5QTEKK+mmoiA+IGppxIFuOyAjOTlBMgor6aajID4gxIFuOyAjOTlBMwor6aakID4gxINpOyAjOTlBNAor6aalID4gZsO5OyAjOTlBNQor6aamID4geGnEgW47ICM5OUE2CivppqcgPiB3xJNuOyAjOTlBNwor6aaoID4geMSrbjsgIzk5QTgKK+mmqSA+IGbDqW47ICM5OUE5CivppqogPiBixKtuOyAjOTlBQQor6aarID4geMSrbmc7ICM5OUFCCivppqwgPiBtxIM7ICM5OUFDCivppq0gPiB5w7k7ICM5OUFECivppq4gPiBmw6luZzsgIzk5QUUKK+mmryA+IGjDoG47ICM5OUFGCivpprAgPiBkw6w7ICM5OUIwCivpprEgPiB0w7pvOyAjOTlCMQor6aayID4gdMWrbzsgIzk5QjIKK+mmsyA+IGNow607ICM5OUIzCivpprQgPiB4w7puOyAjOTlCNAor6aa1ID4gemjDuTsgIzk5QjUKK+mmtiA+IHpoxKs7ICM5OUI2CivpprcgPiBww6hpOyAjOTlCNwor6aa4ID4geMOsbjsgIzk5QjgKK+mmuSA+IHLDrDsgIzk5QjkKK+mmuiA+IHPDoDsgIzk5QkEKK+mmuyA+IHnErW47ICM5OUJCCivpprwgPiB3w6luOyAjOTlCQwor6aa9ID4gemjDrTsgIzk5QkQKK+mmviA+IGTDoG47ICM5OUJFCivppr8gPiBsx5g7ICM5OUJGCivpp4AgPiB5w7N1OyAjOTlDMAor6aeBID4gYsOzOyAjOTlDMQor6aeCID4gYsSDbzsgIzk5QzIKK+mngyA+IGt1w6BpOyAjOTlDMwor6aeEID4gdMO6bzsgIzk5QzQKK+mnhSA+IHnDrDsgIzk5QzUKK+mnhiA+IHHFqzsgIzk5QzYKK+mniCA+IHHFqzsgIzk5QzgKK+mniSA+IGrEq29uZzsgIzk5QzkKK+mniiA+IGLFjzsgIzk5Q0EKK+mniyA+IHpoxIFvOyAjOTlDQgor6aeMID4geXXEgW47ICM5OUNDCivpp40gPiBwxJNuZzsgIzk5Q0QKK+mnjiA+IHpow7J1OyAjOTlDRQor6aePID4gasO5OyAjOTlDRgor6aeQID4gemjDuTsgIzk5RDAKK+mnkSA+IG7DujsgIzk5RDEKK+mnkiA+IGrFqzsgIzk5RDIKK+mnkyA+IHDDrTsgIzk5RDMKK+mnlCA+IHrEg25nOyAjOTlENAor6aeVID4gamnDoDsgIzk5RDUKK+mnliA+IGzDrW5nOyAjOTlENgor6aeXID4gemjEk247ICM5OUQ3Civpp5ggPiB0w6FpOyAjOTlEOAor6aeZID4gZsO5OyAjOTlEOQor6aeaID4gecSDbmc7ICM5OURBCivpp5sgPiBzaMStOyAjOTlEQgor6aecID4gYsOsOyAjOTlEQwor6aedID4gdMO6bzsgIzk5REQKK+mnniA+IHTDum87ICM5OURFCivpp58gPiBzw6w7ICM5OURGCivpp6AgPiBsw611OyAjOTlFMAor6aehID4gbcOgOyAjOTlFMQor6aeiID4gcGnDoW47ICM5OUUyCivpp6MgPiB0w6FvOyAjOTlFMwor6aekID4gemjDrDsgIzk5RTQKK+mnpSA+IHLDs25nOyAjOTlFNQor6aemID4gdMOpbmc7ICM5OUU2Civpp6cgPiBkw7JuZzsgIzk5RTcKK+mnqCA+IHjDum47ICM5OUU4Civpp6kgPiBxdcOhbjsgIzk5RTkKK+mnqiA+IHNoxJNuOyAjOTlFQQor6aerID4gasSrb25nOyAjOTlFQgor6aesID4gxJVyOyAjOTlFQwor6aetID4gaMOgaTsgIzk5RUQKK+mnriA+IGLDszsgIzk5RUUKK+mnryA+IHpodTsgIzk5RUYKK+mnsCA+IHnEq247ICM5OUYwCivpp7EgPiBsw7lvOyAjOTlGMQor6aezID4gZMOgbjsgIzk5RjMKK+mntCA+IHhpw6g7ICM5OUY0Civpp7UgPiBsw611OyAjOTlGNQor6ae2ID4gasO6OyAjOTlGNgor6ae3ID4gc8WPbmc7ICM5OUY3Civpp7ggPiBxxKtuOyAjOTlGOAor6ae5ID4gbcOhbmc7ICM5OUY5Civpp7ogPiBsacOhbmc7ICM5OUZBCivpp7sgPiBow6BuOyAjOTlGQgor6ae8ID4gdMO6OyAjOTlGQwor6ae9ID4geHXDoG47ICM5OUZECivpp74gPiB0w7lpOyAjOTlGRQor6ae/ID4gasO5bjsgIzk5RkYKK+mogCA+IMOpOyAjOUEwMAor6aiBID4gY2jElW5nOyAjOUEwMQor6aiCID4geMSrbjsgIzlBMDIKK+mogyA+IMOhaTsgIzlBMDMKK+mohCA+IGzDuTsgIzlBMDQKK+mohSA+IHpoxatpOyAjOUEwNQor6aiGID4gemjFjXU7ICM5QTA2CivpqIcgPiBzaMSVOyAjOUEwNwor6aiIID4gcGnDoW47ICM5QTA4CivpqIkgPiBrxatuOyAjOUEwOQor6aiKID4gdMOhbzsgIzlBMEEKK+moiyA+IGzDoWk7ICM5QTBCCivpqIwgPiB6xY1uZzsgIzlBMEMKK+mojSA+IGvDqDsgIzlBMEQKK+mojiA+IHHDrTsgIzlBMEUKK+mojyA+IHHDrTsgIzlBMEYKK+mokCA+IHnDoG47ICM5QTEwCivpqJEgPiBmxJNpOyAjOUExMQor6aiSID4gc8SBbzsgIzlBMTIKK+mokyA+IHnEg247ICM5QTEzCivpqJQgPiBqacOpOyAjOUExNAor6aiVID4gecSDbzsgIzlBMTUKK+moliA+IHfDuTsgIzlBMTYKK+molyA+IHBpw6BuOyAjOUExNwor6aiYID4gY8WNbmc7ICM5QTE4CivpqJkgPiBwacOgbjsgIzlBMTkKK+momiA+IHFpw6FuOyAjOUExQQor6aibID4gZsSTaTsgIzlBMUIKK+monCA+IGh1w6FuZzsgIzlBMUMKK+monSA+IGppxIFuOyAjOUExRAor6aieID4gaMO5bzsgIzlBMUUKK+monyA+IHnDuTsgIzlBMUYKK+mooCA+IHTDrTsgIzlBMjAKK+mooSA+IHF1w6FuOyAjOUEyMQor6aiiID4geGnDoTsgIzlBMjIKK+mooyA+IHrFjW5nOyAjOUEyMwor6aikID4ga8O6aTsgIzlBMjQKK+mopSA+IHLDs3U7ICM5QTI1CivpqKYgPiBzxKs7ICM5QTI2CivpqKcgPiBndcSBOyAjOUEyNwor6aioID4gdMO6bzsgIzlBMjgKK+moqSA+IGvDuWk7ICM5QTI5CivpqKogPiBzxY11OyAjOUEyQQor6airID4gcWnEgW47ICM5QTJCCivpqKwgPiBjaMOpbmc7ICM5QTJDCivpqK0gPiB6aMOsOyAjOUEyRAor6aiuID4gbMOtdTsgIzlBMkUKK+moryA+IHDDoW5nOyAjOUEyRgor6aiwID4gdMOpbmc7ICM5QTMwCivpqLEgPiB4xKs7ICM5QTMxCivpqLIgPiBjxINvOyAjOUEzMgor6aizID4gZMO6OyAjOUEzMwor6ai0ID4gecOgbjsgIzlBMzQKK+motSA+IHl1w6FuOyAjOUEzNQor6ai2ID4gesWNdTsgIzlBMzYKK+motyA+IHPEgW87ICM5QTM3CivpqLggPiBzaMOgbjsgIzlBMzgKK+mouSA+IGzDrTsgIzlBMzkKK+mouiA+IHpow6w7ICM5QTNBCivpqLsgPiBzaHXEg25nOyAjOUEzQgor6ai8ID4gbMO5OyAjOUEzQwor6ai9ID4geMOtOyAjOUEzRAor6ai+ID4gbMO6bzsgIzlBM0UKK+movyA+IHpoxIFuZzsgIzlBM0YKK+mpgCA+IG3DsjsgIzlBNDAKK+mpgSA+IMOhbzsgIzlBNDEKK+mpgiA+IGPEgW47ICM5QTQyCivpqYMgPiBwacOgbzsgIzlBNDMKK+mphCA+IGPFjW5nOyAjOUE0NAor6amFID4gccWrOyAjOUE0NQor6amGID4gYsOsOyAjOUE0Ngor6amHID4gemjDrDsgIzlBNDcKK+mpiCA+IHnDuTsgIzlBNDgKK+mpiSA+IHjFqzsgIzlBNDkKK+mpiiA+IGh1w6E7ICM5QTRBCivpqYsgPiBixY07ICM5QTRCCivpqYwgPiBzw7k7ICM5QTRDCivpqY0gPiB4acSBbzsgIzlBNEQKK+mpjiA+IGzDrW47ICM5QTRFCivpqY8gPiBjaMSDbjsgIzlBNEYKK+mpkCA+IGTFq247ICM5QTUwCivpqZEgPiBsw611OyAjOUE1MQor6amSID4gdMO6bzsgIzlBNTIKK+mpkyA+IHrEk25nOyAjOUE1Mwor6amUID4gdMOhbjsgIzlBNTQKK+mplSA+IGppxIFvOyAjOUE1NQor6amWID4gdGnElTsgIzlBNTYKK+mplyA+IHnDoG47ICM5QTU3CivpqZggPiBsw7pvOyAjOUE1OAor6amZID4gemjEgW47ICM5QTU5CivpqZogPiBqxKtuZzsgIzlBNUEKK+mpmyA+IHnDrDsgIzlBNUIKK+mpnCA+IHnDqDsgIzlBNUMKK+mpnSA+IHTFq287ICM5QTVECivpqZ4gPiBixKtuOyAjOUE1RQor6amfID4gesOydTsgIzlBNUYKK+mpoCA+IHnDoG47ICM5QTYwCivpqaEgPiBww6luZzsgIzlBNjEKK+mpoiA+IGzHmDsgIzlBNjIKK+mpoyA+IHTDqW5nOyAjOUE2Mwor6amkID4geGnEgW5nOyAjOUE2NAor6amlID4gasOsOyAjOUE2NQor6ammID4gc2h1xIFuZzsgIzlBNjYKK+mppyA+IGrDujsgIzlBNjcKK+mpqCA+IHjEqzsgIzlBNjgKK+mpqSA+IGh1xIFuOyAjOUE2OQor6amqID4gbMOtOyAjOUE2QQor6amrID4gYmnEgW87ICM5QTZCCivpqawgPiBtxIM7ICM5QTZDCivpqa0gPiB5w7k7ICM5QTZECivpqa4gPiB0w7pvOyAjOUE2RQor6amvID4geMO6bjsgIzlBNkYKK+mpsCA+IGNow607ICM5QTcwCivpqbEgPiBxxas7ICM5QTcxCivpqbIgPiByw6w7ICM5QTcyCivpqbMgPiBiw7M7ICM5QTczCivpqbQgPiBsx5g7ICM5QTc0CivpqbUgPiB6xINuZzsgIzlBNzUKK+mptiA+IHNoxK07ICM5QTc2CivpqbcgPiBzw6w7ICM5QTc3CivpqbggPiBmw7k7ICM5QTc4CivpqbkgPiBqxas7ICM5QTc5CivpqbogPiB6xY11OyAjOUE3QQor6am7ID4gemjDuTsgIzlBN0IKK+mpvCA+IHTDum87ICM5QTdDCivpqb0gPiBuw7o7ICM5QTdECivpqb4gPiBqacOgOyAjOUE3RQor6am/ID4gecOsOyAjOUE3Rgor6aqAID4gdMOhaTsgIzlBODAKK+mqgSA+IHhpxIFvOyAjOUE4MQor6aqCID4gbcOgOyAjOUE4Mgor6aqDID4gecSrbjsgIzlBODMKK+mqhCA+IGppxIFvOyAjOUE4NAor6aqFID4gaHXDoTsgIzlBODUKK+mqhiA+IGzDuW87ICM5QTg2CivpqocgPiBow6BpOyAjOUE4Nwor6aqIID4gcGnDoW47ICM5QTg4CivpqokgPiBiacSBbzsgIzlBODkKK+mqiiA+IGzDrTsgIzlBOEEKK+mqiyA+IGNoxJVuZzsgIzlBOEIKK+mqjCA+IHnDoG47ICM5QThDCivpqo0gPiB4xKtuOyAjOUE4RAor6aqOID4gccSrbjsgIzlBOEUKK+mqjyA+IGrDuW47ICM5QThGCivpqpAgPiBxw607ICM5QTkwCivpqpEgPiBxw607ICM5QTkxCivpqpIgPiBrw6g7ICM5QTkyCivpqpMgPiB6aMWraTsgIzlBOTMKK+mqlCA+IHrFjW5nOyAjOUE5NAor6aqVID4gc8O5OyAjOUE5NQor6aqWID4gY8SBbjsgIzlBOTYKK+mqlyA+IHBpw6BuOyAjOUE5Nwor6aqYID4gemjDrDsgIzlBOTgKK+mqmSA+IGvDumk7ICM5QTk5CivpqpogPiBzxIFvOyAjOUE5QQor6aqbID4gd8O5OyAjOUE5Qgor6aqcID4gw6FvOyAjOUE5Qwor6aqdID4gbMOtdTsgIzlBOUQKK+mqniA+IHFpxIFuOyAjOUE5RQor6aqfID4gc2jDoG47ICM5QTlGCivpqqAgPiBwacOgbzsgIzlBQTAKK+mqoSA+IGzDum87ICM5QUExCivpqqIgPiBjxY1uZzsgIzlBQTIKK+mqoyA+IGNoxINuOyAjOUFBMwor6aqkID4gesOydTsgIzlBQTQKK+mqpSA+IGrDrDsgIzlBQTUKK+mqpiA+IHNodcSBbmc7ICM5QUE2CivpqqcgPiB4acSBbmc7ICM5QUE3CivpqqggPiBnxa07ICM5QUE4CivpqqkgPiB3xJVpOyAjOUFBOQor6aqqID4gd8SVaTsgIzlBQUEKK+mqqyA+IHfElWk7ICM5QUFCCivpqqwgPiB5w7o7ICM5QUFDCivpqq0gPiBnw6BuOyAjOUFBRAor6aquID4gecOsOyAjOUFBRQor6aqvID4gxIFuZzsgIzlBQUYKK+mqsCA+IHTDs3U7ICM5QUIwCivpqrEgPiB4acOoOyAjOUFCMQor6aqyID4gYsSBbzsgIzlBQjIKK+mqsyA+IGLDrDsgIzlBQjMKK+mqtCA+IGNoxKs7ICM5QUI0CivpqrUgPiB0xK07ICM5QUI1CivpqrYgPiBkxK07ICM5QUI2CivpqrcgPiBrxas7ICM5QUI3CivpqrggPiBow6FpOyAjOUFCOAor6aq5ID4gcWnEgW87ICM5QUI5CivpqrogPiBnw7J1OyAjOUFCQQor6aq7ID4ga3XDoDsgIzlBQkIKK+mqvCA+IGfDqTsgIzlBQkMKK+mqvSA+IHTFrWk7ICM5QUJECivpqr4gPiBnxJVuZzsgIzlBQkUKK+mqvyA+IHBpw6FuOyAjOUFCRgor6auAID4gYsOsOyAjOUFDMAor6auBID4ga8STOyAjOUFDMQor6auCID4ga8OgOyAjOUFDMgor6auDID4gecO6OyAjOUFDMwor6auEID4gc8WtaTsgIzlBQzQKK+mrhSA+IGzDs3U7ICM5QUM1Civpq4YgPiBiw7M7ICM5QUM2Civpq4cgPiB4acSBbzsgIzlBQzcKK+mriCA+IHDDoW5nOyAjOUFDOAor6auJID4gYsWNOyAjOUFDOQor6auKID4gY8SrOyAjOUFDQQor6auLID4ga3XEgW47ICM5QUNCCivpq4wgPiBiw6xuOyAjOUFDQwor6auNID4gbcOzOyAjOUFDRAor6auOID4gbGnDoW87ICM5QUNFCivpq48gPiBsw7N1OyAjOUFDRgor6auQID4gbsOhbzsgIzlBRDAKK+mrkSA+IGTDujsgIzlBRDEKK+mrkiA+IHrEgW5nOyAjOUFEMgor6auTID4gc8WtaTsgIzlBRDMKK+mrlCA+IHTErTsgIzlBRDQKK+mrlSA+IGLDrG47ICM5QUQ1Civpq5YgPiBrdcSBbjsgIzlBRDYKK+mrlyA+IGzDujsgIzlBRDcKK+mrmCA+IGfEgW87ICM5QUQ4Civpq5kgPiBnxIFvOyAjOUFEOQor6auaID4gcWnDoG87ICM5QURBCivpq5sgPiBrxIFvOyAjOUFEQgor6aucID4gcWnEgW87ICM5QURDCivpq50gPiBsw6BvOyAjOUFERAor6aueID4gesOgbzsgIzlBREUKK+mrnyA+IGJpxIFvOyAjOUFERgor6augID4ga8WrbjsgIzlBRTAKK+mroSA+IGvFq247ICM5QUUxCivpq6IgPiB0w6w7ICM5QUUyCivpq6MgPiBmxINuZzsgIzlBRTMKK+mrpCA+IHjEq3U7ICM5QUU0Civpq6UgPiByw6FuOyAjOUFFNQor6aumID4gbcOhbzsgIzlBRTYKK+mrpyA+IGTDoG47ICM5QUU3Civpq6ggPiBrxatuOyAjOUFFOAor6aupID4gYsOsbjsgIzlBRTkKK+mrqiA+IGbDoDsgIzlBRUEKK+mrqyA+IHRpw6FvOyAjOUFFQgor6ausID4gcGVuZzsgIzlBRUMKK+mrrSA+IHrEqzsgIzlBRUQKK+mrriA+IGbEgzsgIzlBRUUKK+mrryA+IHLDoW47ICM5QUVGCivpq7AgPiB0w6w7ICM5QUYwCivpq7EgPiBww6BvOyAjOUFGMQor6auyID4gcMSrOyAjOUFGMgor6auzID4gbcOhbzsgIzlBRjMKK+mrtCA+IGbDujsgIzlBRjQKK+mrtSA+IMOpcjsgIzlBRjUKK+mrtiA+IHLDs25nOyAjOUFGNgor6au3ID4gccWrOyAjOUFGNwor6au4ID4gZ29uZzsgIzlBRjgKK+mruSA+IHjEq3U7ICM5QUY5Civpq7ogPiBndcOgOyAjOUFGQQor6au7ID4gasOsOyAjOUFGQgor6au8ID4gcMOpbmc7ICM5QUZDCivpq70gPiB6aHXEgTsgIzlBRkQKK+mrviA+IHNoxIFvOyAjOUFGRQor6au/ID4gc2jEgTsgIzlBRkYKK+msgCA+IHTDrDsgIzlCMDAKK+msgSA+IGzDrDsgIzlCMDEKK+msgiA+IGLDrG47ICM5QjAyCivprIMgPiB6xY1uZzsgIzlCMDMKK+mshCA+IHTDrDsgIzlCMDQKK+mshSA+IHDDqW5nOyAjOUIwNQor6ayGID4gc8WNbmc7ICM5QjA2CivprIcgPiB6aMSTbmc7ICM5QjA3CivprIggPiBxdcOhbjsgIzlCMDgKK+msiSA+IHrFjW5nOyAjOUIwOQor6ayKID4gc2jDuW47ICM5QjBBCivprIsgPiBqacSBbjsgIzlCMEIKK+msjCA+IGTFrW87ICM5QjBDCivprI0gPiBow7o7ICM5QjBECivprI4gPiBsw6A7ICM5QjBFCivprI8gPiBqxKt1OyAjOUIwRgor6ayQID4gccOtOyAjOUIxMAor6ayRID4gbGnDoW47ICM5QjExCivprJIgPiB6aMSVbjsgIzlCMTIKK+mskyA+IGLDrG47ICM5QjEzCivprJQgPiBww6luZzsgIzlCMTQKK+mslSA+IG3DsjsgIzlCMTUKK+msliA+IHPEgW47ICM5QjE2CivprJcgPiBtw6BuOyAjOUIxNwor6ayYID4gbcOhbjsgIzlCMTgKK+msmSA+IHPEk25nOyAjOUIxOQor6ayaID4geMWrOyAjOUIxQQor6aybID4gbGnDqDsgIzlCMUIKK+msnCA+IHFpxIFuOyAjOUIxQwor6aydID4gcWnEgW47ICM5QjFECivprJ4gPiBuw7NuZzsgIzlCMUUKK+msnyA+IGh1w6FuOyAjOUIxRgor6aygID4ga3XDoGk7ICM5QjIwCivprKEgPiBuw61uZzsgIzlCMjEKK+msoiA+IGLDrG47ICM5QjIyCivprKMgPiBsacOoOyAjOUIyMwor6aykID4gcsOhbmc7ICM5QjI0CivprKUgPiBkw7J1OyAjOUIyNQor6aymID4gZMOydTsgIzlCMjYKK+mspyA+IG7DoG87ICM5QjI3CivprKggPiBoxY1uZzsgIzlCMjgKK+msqSA+IHjDrDsgIzlCMjkKK+msqiA+IGTDsnU7ICM5QjJBCivprKsgPiBoxINuOyAjOUIyQgor6aysID4gZMOydTsgIzlCMkMKK+msrSA+IGTDsnU7ICM5QjJECivprK4gPiBqxKt1OyAjOUIyRQor6ayvID4gY2jDoG5nOyAjOUIyRgor6aywID4gecO5OyAjOUIzMAor6ayxID4gecO5OyAjOUIzMQor6ayyID4gbMOsOyAjOUIzMgor6ayzID4ganXDoG47ICM5QjMzCivprLQgPiBmxa07ICM5QjM0CivprLUgPiBxacOhbjsgIzlCMzUKK+mstiA+IGfFq2k7ICM5QjM2CivprLcgPiB6xY1uZzsgIzlCMzcKK+msuCA+IGzDrHU7ICM5QjM4CivprLkgPiBnxatpOyAjOUIzOQor6ay6ID4gc2jEgW5nOyAjOUIzQQor6ay7ID4gecO5OyAjOUIzQgor6ay8ID4gZ8WtaTsgIzlCM0MKK+msvSA+IG3DqGk7ICM5QjNECivprL4gPiBqw6w7ICM5QjNFCivprL8gPiBxw607ICM5QjNGCivprYAgPiBqacOoOyAjOUI0MAor6a2BID4ga8O6aTsgIzlCNDEKK+mtgiA+IGjDum47ICM5QjQyCivprYMgPiBiw6E7ICM5QjQzCivprYQgPiBww7I7ICM5QjQ0CivprYUgPiBtw6hpOyAjOUI0NQor6a2GID4geMO5OyAjOUI0Ngor6a2HID4gecSDbjsgIzlCNDcKK+mtiCA+IHhpxIFvOyAjOUI0OAor6a2JID4gbGnEg25nOyAjOUI0OQor6a2KID4gecO5OyAjOUI0QQor6a2LID4gdMO6aTsgIzlCNEIKK+mtjCA+IHHEqzsgIzlCNEMKK+mtjSA+IHfEg25nOyAjOUI0RAor6a2OID4gbGnEg25nOyAjOUI0RQor6a2PID4gd8OoaTsgIzlCNEYKK+mtkCA+IGppxIFuOyAjOUI1MAor6a2RID4gY2jEqzsgIzlCNTEKK+mtkiA+IHBpxIFvOyAjOUI1Mgor6a2TID4gYsOsOyAjOUI1Mwor6a2UID4gbcOzOyAjOUI1NAor6a2VID4gasStOyAjOUI1NQor6a2WID4geMWrOyAjOUI1Ngor6a2XID4gY2jFj3U7ICM5QjU3CivprZggPiB5xINuOyAjOUI1OAor6a2ZID4gemjEg247ICM5QjU5CivprZogPiB5w7o7ICM5QjVBCivprZsgPiBkxIFvOyAjOUI1Qgor6a2cID4gcsOpbjsgIzlCNUMKK+mtnSA+IGrDrDsgIzlCNUQKK+mtnyA+IGfFjW5nOyAjOUI1Rgor6a2gID4gdMO6bzsgIzlCNjAKK+mtoSA+IGRpw6BvOyAjOUI2MQor6a2iID4gasStOyAjOUI2Mgor6a2jID4geMO5OyAjOUI2Mwor6a2kID4gw6k7ICM5QjY0CivpraUgPiDDqDsgIzlCNjUKK+mtpiA+IHNoxIE7ICM5QjY2CivpracgPiBow6FuZzsgIzlCNjcKK+mtqCA+IHTDum47ICM5QjY4CivprakgPiBtw7I7ICM5QjY5CivpraogPiBqacOoOyAjOUI2QQor6a2rID4gc2jElW47ICM5QjZCCivprawgPiBmxINuOyAjOUI2Qwor6a2tID4geXXDoW47ICM5QjZECivpra4gPiBiw607ICM5QjZFCivpra8gPiBsxa07ICM5QjZGCivprbAgPiB3w6luOyAjOUI3MAor6a2xID4gaMO6OyAjOUI3MQor6a2yID4gbMO6OyAjOUI3Mgor6a2zID4gesOhOyAjOUI3Mwor6a20ID4gZsOhbmc7ICM5Qjc0CivprbUgPiBmw6luOyAjOUI3NQor6a22ID4gbsOgOyAjOUI3Ngor6a23ID4gecOzdTsgIzlCNzcKK+mtuiA+IGjDqTsgIzlCN0EKK+mtuyA+IHhpw6E7ICM5QjdCCivprbwgPiBxxas7ICM5QjdDCivprb0gPiBoxIFuOyAjOUI3RAor6a2+ID4gcMOtOyAjOUI3RQor6a2/ID4gbMOtbmc7ICM5QjdGCivproAgPiB0w7pvOyAjOUI4MAor6a6BID4gYsWNOyAjOUI4MQor6a6CID4gccOtdTsgIzlCODIKK+mugyA+IHDDrW5nOyAjOUI4Mwor6a6EID4gZsO6OyAjOUI4NAor6a6FID4gYsOsOyAjOUI4NQor6a6GID4gasOsOyAjOUI4Ngor6a6HID4gd8OoaTsgIzlCODcKK+muiCA+IGrFqzsgIzlCODgKK+muiSA+IGRpxIFvOyAjOUI4OQor6a6KID4gYsOzOyAjOUI4QQor6a6LID4gecOzdTsgIzlCOEIKK+mujCA+IGfFrW47ICM5QjhDCivpro0gPiBwxKs7ICM5QjhECivpro4gPiBuacOhbjsgIzlCOEUKK+mujyA+IHjEq25nOyAjOUI4Rgor6a6QID4gdMOhaTsgIzlCOTAKK+mukSA+IGLDoG87ICM5QjkxCivprpIgPiBmw7k7ICM5QjkyCivprpMgPiB6aMSDOyAjOUI5Mwor6a6UID4gasO5OyAjOUI5NAor6a6VID4gZ8WrOyAjOUI5NQor6a6ZID4gdMOgOyAjOUI5OQor6a6aID4gamnDqTsgIzlCOUEKK+mumyA+IHNow7k7ICM5QjlCCivprpwgPiBow7J1OyAjOUI5Qwor6a6dID4geGnEg25nOyAjOUI5RAor6a6eID4gw6lyOyAjOUI5RQor6a6fID4gw6BuOyAjOUI5Rgor6a6gID4gd8OpaTsgIzlCQTAKK+muoSA+IHRpxIFvOyAjOUJBMQor6a6iID4gemjFqzsgIzlCQTIKK+muoyA+IHnDrG47ICM5QkEzCivprqQgPiBsacOoOyAjOUJBNAor6a6lID4gbMO5bzsgIzlCQTUKK+mupiA+IHTDs25nOyAjOUJBNgor6a6nID4gecOtOyAjOUJBNwor6a6oID4gccOtOyAjOUJBOAor6a6pID4gYsOsbmc7ICM5QkE5CivprqogPiB3xJVpOyAjOUJBQQor6a6rID4gamnEg287ICM5QkFCCivprqwgPiBiw7k7ICM5QkFDCivprq0gPiBnxatpOyAjOUJBRAor6a6uID4geGnEgW47ICM5QkFFCivprq8gPiBnw6k7ICM5QkFGCivprrAgPiBow7ppOyAjOUJCMAor6a6zID4ga8SDbzsgIzlCQjMKK+mutSA+IGTDum87ICM5QkI1CivprrYgPiBqxatuOyAjOUJCNgor6a63ID4gdMOtOyAjOUJCNwor6a64ID4gbcSDbjsgIzlCQjgKK+muuSA+IHhpxIFvOyAjOUJCOQor6a66ID4gesSDOyAjOUJCQQor6a67ID4gc2jEgTsgIzlCQkIKK+muvCA+IHHEq247ICM5QkJDCivprr0gPiB5w7o7ICM5QkJECivprr4gPiBuxJVpOyAjOUJCRQor6a6/ID4gemjDqTsgIzlCQkYKK+mvgCA+IGfFrW47ICM5QkMwCivpr4EgPiBnxJVuZzsgIzlCQzEKK+mvgiA+IHN1OyAjOUJDMgor6a+DID4gd8O6OyAjOUJDMwor6a+EID4gccOtdTsgIzlCQzQKK+mvhSA+IHTDrW5nOyAjOUJDNQor6a+GID4gZsWtOyAjOUJDNgor6a+HID4gd8SDbjsgIzlCQzcKK+mviCA+IHnDs3U7ICM5QkM4Civpr4kgPiBsxK07ICM5QkM5Civpr4ogPiBzaMSBOyAjOUJDQQor6a+LID4gc2jEgTsgIzlCQ0IKK+mvjCA+IGfDoG87ICM5QkNDCivpr40gPiBtw6luZzsgIzlCQ0QKK+mvkiA+IHnFj25nOyAjOUJEMgor6a+TID4gbsOtOyAjOUJEMwor6a+UID4gesSrOyAjOUJENAor6a+VID4gccOtOyAjOUJENQor6a+WID4gccSrbmc7ICM5QkQ2Civpr5cgPiB4acSDbmc7ICM5QkQ3Civpr5ggPiBuxJVpOyAjOUJEOAor6a+ZID4gY2jDum47ICM5QkQ5Civpr5ogPiBqw6w7ICM5QkRBCivpr5sgPiBkacSBbzsgIzlCREIKK+mvnCA+IHFpw6g7ICM5QkRDCivpr50gPiBnw7k7ICM5QkRECivpr54gPiB6aMWPdTsgIzlCREUKK+mvnyA+IGTFjW5nOyAjOUJERgor6a+gID4gbMOhaTsgIzlCRTAKK+mvoSA+IGbEk2k7ICM5QkUxCivpr6IgPiBuw607ICM5QkUyCivpr6MgPiB5w6w7ICM5QkUzCivpr6QgPiBrxatuOyAjOUJFNAor6a+lID4gbMO5OyAjOUJFNQor6a+mID4gasOsdTsgIzlCRTYKK+mvpyA+IGNoxIFuZzsgIzlCRTcKK+mvqCA+IGrEq25nOyAjOUJFOAor6a+pID4gbMO6bjsgIzlCRTkKK+mvqiA+IGzDrW5nOyAjOUJFQQor6a+rID4gesWNdTsgIzlCRUIKK+mvrCA+IGzDrTsgIzlCRUMKK+mvrSA+IG3ElW5nOyAjOUJFRAor6a+uID4gesWNbmc7ICM5QkVFCivpr68gPiB6aMOsOyAjOUJFRgor6a+wID4gbmnDoW47ICM5QkYwCivpr7QgPiBzaMSrOyAjOUJGNAor6a+1ID4gc2jEk247ICM5QkY1Civpr7YgPiBoxa1uOyAjOUJGNgor6a+3ID4gc2jDrDsgIzlCRjcKK+mvuCA+IGjDs3U7ICM5QkY4Civpr7kgPiB4xKtuZzsgIzlCRjkKK+mvuiA+IHpoxas7ICM5QkZBCivpr7sgPiBsw6A7ICM5QkZCCivpr7wgPiB6xY1uZzsgIzlCRkMKK+mvvSA+IGrDrDsgIzlCRkQKK+mvviA+IGJpxIFuOyAjOUJGRQor6a+/ID4gYmnEgW47ICM5QkZGCivpsIAgPiBodcOgbjsgIzlDMDAKK+mwgSA+IHF1w6FuOyAjOUMwMQor6bCCID4gesOpOyAjOUMwMgor6bCDID4gd8STaTsgIzlDMDMKK+mwhCA+IHfEk2k7ICM5QzA0CivpsIUgPiB5w7o7ICM5QzA1CivpsIYgPiBxxatuOyAjOUMwNgor6bCHID4gcsOzdTsgIzlDMDcKK+mwiCA+IGRpw6k7ICM5QzA4CivpsIkgPiBodcOhbmc7ICM5QzA5CivpsIogPiBsacOgbjsgIzlDMEEKK+mwiyA+IHnEg247ICM5QzBCCivpsIwgPiBxw611OyAjOUMwQwor6bCNID4gccSrdTsgIzlDMEQKK+mwjiA+IGppw6BuOyAjOUMwRQor6bCPID4gYsOsOyAjOUMwRgor6bCQID4gw6g7ICM5QzEwCivpsJEgPiB5w6FuZzsgIzlDMTEKK+mwkiA+IGbDuTsgIzlDMTIKK+mwkyA+IHPEgWk7ICM5QzEzCivpsJQgPiBqacSDbjsgIzlDMTQKK+mwlSA+IHhpw6E7ICM5QzE1CivpsJYgPiB0xa1vOyAjOUMxNgor6bCXID4gaMO6OyAjOUMxNwor6bCZID4gcsO5bzsgIzlDMTkKK+mwmyA+IHfEk247ICM5QzFCCivpsJwgPiBqacSBbjsgIzlDMUMKK+mwnSA+IGjDoG87ICM5QzFECivpsJ4gPiB3xas7ICM5QzFFCivpsJ8gPiBmw6FuZzsgIzlDMUYKK+mwoCA+IHPEgW87ICM5QzIwCivpsKEgPiBsw611OyAjOUMyMQor6bCiID4gbcSDOyAjOUMyMgor6bCjID4gc2jDrTsgIzlDMjMKK+mwpCA+IHNoxKs7ICM5QzI0CivpsKUgPiB5w61uOyAjOUMyNQor6bCmID4gesyEOyAjOUMyNgor6bCnID4gdMOpbmc7ICM5QzI3CivpsKggPiB0w6A7ICM5QzI4CivpsKkgPiB5w6FvOyAjOUMyOQor6bCqID4gZ8OpOyAjOUMyQQor6bCrID4gcsOzbmc7ICM5QzJCCivpsKwgPiBxacOhbjsgIzlDMkMKK+mwrSA+IHHDrTsgIzlDMkQKK+mwriA+IHfEk247ICM5QzJFCivpsK8gPiByw7lvOyAjOUMyRgor6bCxID4gbGnDoW47ICM5QzMxCivpsLIgPiDDoW87ICM5QzMyCivpsLMgPiBsw6g7ICM5QzMzCivpsLQgPiBoxatpOyAjOUMzNAor6bC1ID4gbcStbjsgIzlDMzUKK+mwtiA+IGrDrDsgIzlDMzYKK+mwtyA+IHRpw6FvOyAjOUMzNwor6bC4ID4gccWrOyAjOUMzOAor6bC5ID4gamnEgW47ICM5QzM5CivpsLogPiBzxIFvOyAjOUMzQQor6bC7ID4gbcOhbjsgIzlDM0IKK+mwvCA+IHjDrTsgIzlDM0MKK+mwvSA+IHHDrXU7ICM5QzNECivpsL4gPiBiacOgbzsgIzlDM0UKK+mwvyA+IGrEqzsgIzlDM0YKK+mxgCA+IGrDrDsgIzlDNDAKK+mxgSA+IHpow7o7ICM5QzQxCivpsYIgPiBqacSBbmc7ICM5QzQyCivpsYMgPiBxxKt1OyAjOUM0Mwor6bGEID4gemh1xIFuOyAjOUM0NAor6bGFID4gecOzbmc7ICM5QzQ1CivpsYYgPiB6aMSBbmc7ICM5QzQ2CivpsYcgPiBrxIFuZzsgIzlDNDcKK+mxiCA+IHh1xJU7ICM5QzQ4CivpsYkgPiBiacSTOyAjOUM0OQor6bGKID4ganXDqTsgIzlDNEEKK+mxiyA+IHHFqzsgIzlDNEIKK+mxjCA+IHhpw6BuZzsgIzlDNEMKK+mxjSA+IGLFjTsgIzlDNEQKK+mxjiA+IGppxIFvOyAjOUM0RQor6bGPID4geMO6bjsgIzlDNEYKK+mxkCA+IHPDuTsgIzlDNTAKK+mxkSA+IGh1w6FuZzsgIzlDNTEKK+mxkiA+IHrDuW47ICM5QzUyCivpsZMgPiBzaMOgbjsgIzlDNTMKK+mxlCA+IHNow6BuOyAjOUM1NAor6bGVID4gZsSBbjsgIzlDNTUKK+mxliA+IGp1w6k7ICM5QzU2CivpsZcgPiBsw61uOyAjOUM1Nwor6bGYID4geMO6bjsgIzlDNTgKK+mxmSA+IG1pw6FvOyAjOUM1OQor6bGaID4geMStOyAjOUM1QQor6bGdID4gZsOobjsgIzlDNUQKK+mxniA+IGd1xIFuOyAjOUM1RQor6bGfID4gaMOydTsgIzlDNUYKK+mxoCA+IGt1w6BpOyAjOUM2MAor6bGhID4gesOpaTsgIzlDNjEKK+mxoiA+IHPEgW87ICM5QzYyCivpsaMgPiB6aMSBbjsgIzlDNjMKK+mxpCA+IGfEg247ICM5QzY0CivpsaUgPiBnw7lpOyAjOUM2NQor6bGmID4gc2jDqW5nOyAjOUM2Ngor6bGnID4gbMStOyAjOUM2Nwor6bGoID4gY2jDoW5nOyAjOUM2OAor6bGsID4gcsO6OyAjOUM2Qwor6bGtID4gasOsOyAjOUM2RAor6bGuID4geMO5OyAjOUM2RQor6bGvID4gaMO5bzsgIzlDNkYKK+mxsSA+IGzDrDsgIzlDNzEKK+mxsiA+IGxpw6g7ICM5QzcyCivpsbMgPiBsw6w7ICM5QzczCivpsbQgPiBtacOoOyAjOUM3NAor6bG1ID4gemjEk247ICM5Qzc1CivpsbYgPiB4acSDbmc7ICM5Qzc2CivpsbcgPiDDqDsgIzlDNzcKK+mxuCA+IGzDujsgIzlDNzgKK+mxuSA+IGd1w6BuOyAjOUM3OQor6bG6ID4gbMOtOyAjOUM3QQor6bG7ID4geGnEgW47ICM5QzdCCivpsbwgPiB5w7o7ICM5QzdDCivpsb0gPiBkxIFvOyAjOUM3RAor6bG+ID4gasStOyAjOUM3RQor6bG/ID4gecOzdTsgIzlDN0YKK+mygCA+IHTDum47ICM5QzgwCivpsoEgPiBsxa07ICM5QzgxCivpsoIgPiBmw6FuZzsgIzlDODIKK+mygyA+IGLEgTsgIzlDODMKK+myhCA+IGjDqTsgIzlDODQKK+myhSA+IGLFjTsgIzlDODUKK+myhiA+IHDDrW5nOyAjOUM4Ngor6bKHID4gbmnDoW47ICM5Qzg3CivpsoggPiBsw7o7ICM5Qzg4CivpsokgPiB5w7N1OyAjOUM4OQor6bKKID4gemjEgzsgIzlDOEEKK+myiyA+IGbDuTsgIzlDOEIKK+myjCA+IGLDszsgIzlDOEMKK+myjSA+IGLDoG87ICM5QzhECivpso4gPiBow7J1OyAjOUM4RQor6bKPID4gcMSrOyAjOUM4Rgor6bKQID4gdMOhaTsgIzlDOTAKK+mykSA+IGfFq2k7ICM5QzkxCivpspIgPiBqacOpOyAjOUM5Mgor6bKTID4ga8SDbzsgIzlDOTMKK+mylCA+IHfElWk7ICM5Qzk0CivpspUgPiDDqXI7ICM5Qzk1CivpspYgPiB0w7NuZzsgIzlDOTYKK+mylyA+IHrDqTsgIzlDOTcKK+mymCA+IGjDsnU7ICM5Qzk4CivpspkgPiBrdcOgaTsgIzlDOTkKK+mymiA+IGrDrDsgIzlDOUEKK+mymyA+IGppxINvOyAjOUM5Qgor6bKcID4geGnEgW47ICM5QzlDCivpsp0gPiB6xIM7ICM5QzlECivpsp4gPiB4acSDbmc7ICM5QzlFCivpsp8gPiB4w7puOyAjOUM5Rgor6bKgID4gZ8SVbmc7ICM5Q0EwCivpsqEgPiBsw607ICM5Q0ExCivpsqIgPiBsacOhbjsgIzlDQTIKK+myoyA+IGppxIFuOyAjOUNBMwor6bKkID4gbMStOyAjOUNBNAor6bKlID4gc2jDrTsgIzlDQTUKK+mypiA+IHRpw6FvOyAjOUNBNgor6bKnID4gZ8WtbjsgIzlDQTcKK+myqCA+IHNoxIE7ICM5Q0E4CivpsqkgPiB3xINuOyAjOUNBOQor6bKqID4gasWrbjsgIzlDQUEKK+myqyA+IGrDrDsgIzlDQUIKK+myrCA+IHnFj25nOyAjOUNBQwor6bKtID4gccSrbmc7ICM5Q0FECivpsq4gPiBsw61uZzsgIzlDQUUKK+myryA+IHHDrTsgIzlDQUYKK+mysCA+IHrFjXU7ICM5Q0IwCivpsrEgPiBmxJNpOyAjOUNCMQor6bKyID4ga8WrbjsgIzlDQjIKK+mysyA+IGNoxIFuZzsgIzlDQjMKK+mytCA+IGfDuTsgIzlDQjQKK+mytSA+IG7DrTsgIzlDQjUKK+mytiA+IG5pw6FuOyAjOUNCNgor6bK3ID4gZGnEgW87ICM5Q0I3CivpsrggPiBqxKtuZzsgIzlDQjgKK+myuSA+IHNoxJNuOyAjOUNCOQor6bK6ID4gc2jEqzsgIzlDQkEKK+myuyA+IHrEqzsgIzlDQkIKK+myvCA+IGbDqG47ICM5Q0JDCivpsr0gPiBkacOpOyAjOUNCRAor6bK+ID4gYsOsOyAjOUNCRQor6bK/ID4gY2jDoW5nOyAjOUNCRgor6bOAID4gc2jDrDsgIzlDQzAKK+mzgSA+IHfEk247ICM5Q0MxCivps4IgPiB3xJNpOyAjOUNDMgor6bODID4gc8SBaTsgIzlDQzMKK+mzhCA+IMOoOyAjOUNDNAor6bOFID4gccSrdTsgIzlDQzUKK+mzhiA+IGbDuTsgIzlDQzYKK+mzhyA+IGh1w6FuZzsgIzlDQzcKK+mziCA+IHF1w6FuOyAjOUNDOAor6bOJID4gamnEgW5nOyAjOUNDOQor6bOKID4gYmnEgW47ICM5Q0NBCivps4sgPiBzxIFvOyAjOUNDQgor6bOMID4gw6FvOyAjOUNDQwor6bONID4gccOtOyAjOUNDRAor6bOOID4gdMOgOyAjOUNDRQor6bOPID4gecOtbjsgIzlDQ0YKK+mzkCA+IHnDoW87ICM5Q0QwCivps5EgPiBmw6FuZzsgIzlDRDEKK+mzkiA+IGppxIFuOyAjOUNEMgor6bOTID4gbMOoOyAjOUNEMwor6bOUID4gYmnDoG87ICM5Q0Q0Civps5UgPiB4dcSVOyAjOUNENQor6bOWID4gYmnEkzsgIzlDRDYKK+mzlyA+IG3DoW47ICM5Q0Q3Civps5ggPiBtxK1uOyAjOUNEOAor6bOZID4gecOzbmc7ICM5Q0Q5Civps5ogPiB3w6hpOyAjOUNEQQor6bObID4geMOtOyAjOUNEQgor6bOcID4ganXDqTsgIzlDREMKK+mznSA+IHNow6BuOyAjOUNERAor6bOeID4gbMOtbjsgIzlDREUKK+mznyA+IHrDuW47ICM5Q0RGCivps6AgPiBow7lvOyAjOUNFMAor6bOhID4gZ8SDbjsgIzlDRTEKK+mzoiA+IGzErTsgIzlDRTIKK+mzoyA+IHpoxIFuOyAjOUNFMwor6bOkID4gZ3XEg247ICM5Q0U0Civps6UgPiBuacSDbzsgIzlDRTUKK+mzpiA+IHnErTsgIzlDRTYKK+mzpyA+IGbDujsgIzlDRTcKK+mzqCA+IGzDrDsgIzlDRTgKK+mzqSA+IGrEq3U7ICM5Q0U5Civps6ogPiBixa07ICM5Q0VBCivps6sgPiB5w6BuOyAjOUNFQgor6bOsID4gZsO6OyAjOUNFQwor6bOtID4gZGnEgW87ICM5Q0VECivps64gPiBqxKs7ICM5Q0VFCivps68gPiBmw6huZzsgIzlDRUYKK+mzsSA+IGfEgW47ICM5Q0YxCivps7IgPiBzaMSrOyAjOUNGMgor6bOzID4gZsOobmc7ICM5Q0YzCivps7QgPiBtw61uZzsgIzlDRjQKK+mztSA+IGLEg287ICM5Q0Y1Civps7YgPiB5dcSBbjsgIzlDRjYKK+mztyA+IHpoxKs7ICM5Q0Y3Civps7ggPiBow7k7ICM5Q0Y4Civps7kgPiBxw61uOyAjOUNGOQor6bO6ID4gZsWrOyAjOUNGQQor6bO7ID4gZsSTbjsgIzlDRkIKK+mzvCA+IHfDqW47ICM5Q0ZDCivps70gPiBqacSBbjsgIzlDRkQKK+mzviA+IHNoxKs7ICM5Q0ZFCivps78gPiB5w7k7ICM5Q0ZGCivptIAgPiBmxY91OyAjOUQwMAor6bSBID4geWnEgW87ICM5RDAxCivptIIgPiBqdcOoOyAjOUQwMgor6bSDID4ganXDqTsgIzlEMDMKK+m0hCA+IHDEqzsgIzlEMDQKK+m0hSA+IGh1xIFuOyAjOUQwNQor6bSGID4gemjDqG47ICM5RDA2CivptIcgPiBixINvOyAjOUQwNwor6bSIID4gecOgbjsgIzlEMDgKK+m0iSA+IHnEgTsgIzlEMDkKK+m0iiA+IHpow6huZzsgIzlEMEEKK+m0iyA+IGbEgW5nOyAjOUQwQgor6bSMID4gZsOobmc7ICM5RDBDCivptI0gPiB3w6luOyAjOUQwRAor6bSOID4gxY11OyAjOUQwRQor6bSPID4gdMOoOyAjOUQwRgor6bSQID4gamnEgTsgIzlEMTAKK+m0kSA+IG7DujsgIzlEMTEKK+m0kiA+IGzDrW5nOyAjOUQxMgor6bSTID4gbWnDqDsgIzlEMTMKK+m0lCA+IGbDujsgIzlEMTQKK+m0lSA+IHTDum87ICM5RDE1CivptJYgPiB3w6luOyAjOUQxNgor6bSXID4gbMOsOyAjOUQxNwor6bSYID4gYmnDoG47ICM5RDE4CivptJkgPiB6aMOsOyAjOUQxOQor6bSaID4gZ8STOyAjOUQxQQor6bSbID4geXXEgW47ICM5RDFCCivptJwgPiB6xKs7ICM5RDFDCivptJ0gPiBxw7o7ICM5RDFECivptJ4gPiB4acSBbzsgIzlEMUUKK+m0nyA+IHpoxKs7ICM5RDFGCivptKAgPiBkw6BuOyAjOUQyMAor6bShID4gasWrOyAjOUQyMQor6bSiID4gecOydTsgIzlEMjIKK+m0oyA+IGfFqzsgIzlEMjMKK+m0pCA+IHpoxY1uZzsgIzlEMjQKK+m0pSA+IHnDuTsgIzlEMjUKK+m0piA+IHnEgW5nOyAjOUQyNgor6bSnID4gcsOybmc7ICM5RDI3CivptKggPiB5xIE7ICM5RDI4CivptKkgPiB0acSVOyAjOUQyOQor6bSqID4gecO5OyAjOUQyQQor6bSsID4gecSrbmc7ICM5RDJDCivptK0gPiB6aMWraTsgIzlEMkQKK+m0riA+IHfFqzsgIzlEMkUKK+m0ryA+IMOpcjsgIzlEMkYKK+m0sCA+IGd1xIE7ICM5RDMwCivptLEgPiDDoGk7ICM5RDMxCivptLIgPiB6aMSrOyAjOUQzMgor6bSzID4gecOgbjsgIzlEMzMKK+m0tCA+IGjDqW5nOyAjOUQzNAor6bS1ID4gamnEgW87ICM5RDM1CivptLYgPiBqw607ICM5RDM2CivptLcgPiBsacOoOyAjOUQzNwor6bS4ID4gemjFqzsgIzlEMzgKK+m0uSA+IHLDqW47ICM5RDM5CivptLogPiB5w607ICM5RDNBCivptLsgPiBow7NuZzsgIzlEM0IKK+m0vCA+IGzDuW87ICM5RDNDCivptL0gPiByw7o7ICM5RDNECivptL4gPiBtw7N1OyAjOUQzRQor6bS/ID4gZ8STOyAjOUQzRgor6bWAID4gcsOobjsgIzlENDAKK+m1gSA+IGppxIFvOyAjOUQ0MQor6bWCID4geMSrdTsgIzlENDIKK+m1gyA+IHpoxY11OyAjOUQ0Mwor6bWEID4gemjEqzsgIzlENDQKK+m1hSA+IGzDuW87ICM5RDQ1CivptYkgPiBsdcOhbjsgIzlENDkKK+m1iiA+IGppw6E7ICM5RDRBCivptYsgPiBqw6w7ICM5RDRCCivptYwgPiB5w7o7ICM5RDRDCivptY0gPiBodcSBbjsgIzlENEQKK+m1jiA+IHTFrW87ICM5RDRFCivptY8gPiBixas7ICM5RDRGCivptZAgPiB3w7o7ICM5RDUwCivptZEgPiBqdcSBbjsgIzlENTEKK+m1kiA+IHnDuTsgIzlENTIKK+m1kyA+IGLDszsgIzlENTMKK+m1lCA+IHjDuW47ICM5RDU0CivptZUgPiB4w7luOyAjOUQ1NQor6bWWID4gYsOsOyAjOUQ1Ngor6bWXID4geMSrOyAjOUQ1Nwor6bWYID4gasO5bjsgIzlENTgKK+m1mSA+IGrDujsgIzlENTkKK+m1miA+IHTDujsgIzlENUEKK+m1myA+IGrEq25nOyAjOUQ1Qgor6bWcID4gdMOtOyAjOUQ1Qwor6bWdID4gw6k7ICM5RDVECivptZ4gPiDDqTsgIzlENUUKK+m1nyA+IGt1w6FuZzsgIzlENUYKK+m1oCA+IGjDujsgIzlENjAKK+m1oSA+IHfFrTsgIzlENjEKK+m1oiA+IHNoxJNuOyAjOUQ2Mgor6bWjID4gbMOgaTsgIzlENjMKK+m1piA+IGzDuTsgIzlENjYKK+m1pyA+IHDDrW5nOyAjOUQ2Nwor6bWoID4gc2jFqzsgIzlENjgKK+m1qSA+IGbDujsgIzlENjkKK+m1qiA+IMSBbjsgIzlENkEKK+m1qyA+IHpow6BvOyAjOUQ2Qgor6bWsID4gcMOpbmc7ICM5RDZDCivpta0gPiBxw61uOyAjOUQ2RAor6bWuID4gcWnEgW47ICM5RDZFCivpta8gPiBixJNpOyAjOUQ2Rgor6bWwID4gZGnEgW87ICM5RDcwCivptbEgPiBsw7k7ICM5RDcxCivptbIgPiBxdcOoOyAjOUQ3Mgor6bWzID4gamnEgW47ICM5RDczCivptbQgPiBqw7o7ICM5RDc0CivptbUgPiB0w7k7ICM5RDc1CivptbYgPiB5xIE7ICM5RDc2CivptbcgPiB5dcSBbjsgIzlENzcKK+m1uCA+IHHDrTsgIzlENzgKK+m1uSA+IGzDrTsgIzlENzkKK+m1uiA+IHnDqDsgIzlEN0EKK+m1uyA+IHpoxatpOyAjOUQ3Qgor6bW8ID4ga8WNbmc7ICM5RDdDCivptb0gPiB6aMO5aTsgIzlEN0QKK+m1viA+IGvFq247ICM5RDdFCivptb8gPiBzaMSTbmc7ICM5RDdGCivptoAgPiBxw607ICM5RDgwCivptoEgPiBqxKtuZzsgIzlEODEKK+m2giA+IHnDrDsgIzlEODIKK+m2gyA+IHnDrDsgIzlEODMKK+m2hCA+IGrEq25nOyAjOUQ4NAor6baFID4gesSrOyAjOUQ4NQor6baGID4gbMOhaTsgIzlEODYKK+m2hyA+IGTFjW5nOyAjOUQ4Nwor6baIID4gccSrOyAjOUQ4OAor6baJID4gY2jDum47ICM5RDg5CivptoogPiBnxJNuZzsgIzlEOEEKK+m2iyA+IGrFqzsgIzlEOEIKK+m2jCA+IHHFqzsgIzlEOEMKK+m2jyA+IGrEqzsgIzlEOEYKK+m2kCA+IHNow7k7ICM5RDkwCivptpIgPiBjaMOsOyAjOUQ5Mgor6baTID4gbWnDoW87ICM5RDkzCivptpQgPiByw7N1OyAjOUQ5NAor6baVID4gxIFuOyAjOUQ5NQor6baWID4gccSrdTsgIzlEOTYKK+m2lyA+IHTDrTsgIzlEOTcKK+m2mCA+IGjDujsgIzlEOTgKK+m2mSA+IHTDrTsgIzlEOTkKK+m2miA+IMOoOyAjOUQ5QQor6babID4gamnEkzsgIzlEOUIKK+m2nCA+IG3DoW87ICM5RDlDCivptp0gPiBmw7o7ICM5RDlECivptp4gPiBjaMWrbjsgIzlEOUUKK+m2nyA+IHTDujsgIzlEOUYKK+m2oCA+IHnEg247ICM5REEwCivptqEgPiBow6k7ICM5REExCivptqIgPiB5dcOhbjsgIzlEQTIKK+m2oyA+IHBpxIFuOyAjOURBMwor6bakID4gecO5bjsgIzlEQTQKK+m2pSA+IG3DqWk7ICM5REE1CivptqYgPiBow7o7ICM5REE2CivptqcgPiB5xKtuZzsgIzlEQTcKK+m2qCA+IGTDuW47ICM5REE4CivptqkgPiBtw7k7ICM5REE5CivptqogPiBqw7o7ICM5REFBCivptqwgPiBjxIFuZzsgIzlEQUMKK+m2rSA+IGbEg25nOyAjOURBRAor6bauID4gZ8O5OyAjOURBRQor6bavID4gecSrbmc7ICM5REFGCivptrAgPiB5dcOhbjsgIzlEQjAKK+m2sSA+IHh1xIFuOyAjOURCMQor6bayID4gd8STbmc7ICM5REIyCivptrMgPiBzaMSrOyAjOURCMwor6ba0ID4gaMOoOyAjOURCNAor6ba1ID4gY2jDujsgIzlEQjUKK+m2tiA+IHTDoW5nOyAjOURCNgor6ba3ID4geGnDoDsgIzlEQjcKK+m2uCA+IHLDuW87ICM5REI4CivptrkgPiBsw611OyAjOURCOQor6ba6ID4gasOtOyAjOURCQQor6ba7ID4gZ8O6OyAjOURCQgor6ba8ID4gamnEgW47ICM5REJDCivptr0gPiB6aMWtbjsgIzlEQkQKK+m2viA+IGjDoG47ICM5REJFCivptr8gPiB6xKs7ICM5REJGCivpt4AgPiB6xKs7ICM5REMwCivpt4EgPiBuw6w7ICM5REMxCivpt4IgPiB5w6BvOyAjOURDMgor6beDID4gecOgbjsgIzlEQzMKK+m3hCA+IGrEqzsgIzlEQzQKK+m3hSA+IGzDrDsgIzlEQzUKK+m3hiA+IHRpw6FuOyAjOURDNgor6beHID4ga8OydTsgIzlEQzcKK+m3iCA+IHTEqzsgIzlEQzgKK+m3iSA+IHTEqzsgIzlEQzkKK+m3iiA+IG7DrDsgIzlEQ0EKK+m3iyA+IHTDujsgIzlEQ0IKK+m3jCA+IG3EgzsgIzlEQ0MKK+m3jSA+IGppxIFvOyAjOURDRAor6beOID4gZ8SBbzsgIzlEQ0UKK+m3jyA+IHRpw6FuOyAjOURDRgor6beQID4gY2jDqW47ICM5REQwCivpt5EgPiBsw6w7ICM5REQxCivpt5IgPiB6aHXEgW47ICM5REQyCivpt5MgPiB6aMOoOyAjOUREMwor6beUID4gw6FvOyAjOURENAor6beVID4gecSDbzsgIzlERDUKK+m3liA+IHnEqzsgIzlERDYKK+m3lyA+IMWNdTsgIzlERDcKK+m3mCA+IGNow6w7ICM5REQ4Civpt5kgPiB6aMOsOyAjOUREOQor6beaID4gbGnDoW87ICM5RERBCivpt5sgPiByw7NuZzsgIzlEREIKK+m3nCA+IGzDs3U7ICM5RERDCivpt50gPiBiw6w7ICM5RERECivpt54gPiBzaHXEgW5nOyAjOURERQor6befID4gemjDum87ICM5RERGCivpt6AgPiB5w7o7ICM5REUwCivpt6EgPiB3w7o7ICM5REUxCivpt6IgPiBqdcOpOyAjOURFMgor6bejID4gecOtbjsgIzlERTMKK+m3pCA+IHF1w6FuOyAjOURFNAor6belID4gc8SrOyAjOURFNQor6bemID4gamnEgW87ICM5REU2Civpt6cgPiB5w6w7ICM5REU3Civpt6ggPiBodcSBOyAjOURFOAor6bepID4gYsOsOyAjOURFOQor6beqID4gecSrbmc7ICM5REVBCivpt6sgPiBzw7k7ICM5REVCCivpt6wgPiBodcOhbmc7ICM5REVDCivpt60gPiBmw6FuOyAjOURFRAor6beuID4gamnEgW87ICM5REVFCivpt68gPiBsacOhbzsgIzlERUYKK+m3sCA+IHnDoG47ICM5REYwCivpt7EgPiBrxIFvOyAjOURGMQor6beyID4gasOsdTsgIzlERjIKK+m3syA+IHhpw6FuOyAjOURGMwor6be0ID4geGnDoW47ICM5REY0Civpt7UgPiB0w7o7ICM5REY1Civpt7YgPiBtxINpOyAjOURGNgor6be3ID4gesWrbjsgIzlERjcKK+m3uCA+IHnDuTsgIzlERjgKK+m3uSA+IHnEq25nOyAjOURGOQor6be6ID4gbMO5OyAjOURGQQor6be7ID4gdHXDoW47ICM5REZCCivpt7wgPiB4acOhbjsgIzlERkMKK+m3vSA+IHh1w6k7ICM5REZECivpt74gPiB5w6w7ICM5REZFCivpt78gPiBww6w7ICM5REZGCivpuIAgPiBzaMO6OyAjOUUwMAor6biBID4gbMO6bzsgIzlFMDEKK+m4giA+IHHEqzsgIzlFMDIKK+m4gyA+IHnDrTsgIzlFMDMKK+m4hCA+IGrDrTsgIzlFMDQKK+m4hSA+IHpow6k7ICM5RTA1CivpuIYgPiB5w7o7ICM5RTA2CivpuIcgPiB6aMSBbjsgIzlFMDcKK+m4iCA+IHnDqDsgIzlFMDgKK+m4iSA+IHnDoW5nOyAjOUUwOQor6biKID4gcMOsOyAjOUUwQQor6biLID4gbsOtbmc7ICM5RTBCCivpuIwgPiBow7lvOyAjOUUwQwor6biNID4gbcOtOyAjOUUwRAor6biOID4gecSrbmc7ICM5RTBFCivpuI8gPiBtw6luZzsgIzlFMEYKK+m4kCA+IGTDrTsgIzlFMTAKK+m4kSA+IHl1w6g7ICM5RTExCivpuJIgPiB5w7o7ICM5RTEyCivpuJMgPiBsxJVpOyAjOUUxMwor6biUID4gYsOgbzsgIzlFMTQKK+m4lSA+IGzDujsgIzlFMTUKK+m4liA+IGjDqDsgIzlFMTYKK+m4lyA+IGzDs25nOyAjOUUxNwor6biYID4gc2h1xIFuZzsgIzlFMTgKK+m4mSA+IHl1w6g7ICM5RTE5CivpuJogPiB5xKtuZzsgIzlFMUEKK+m4myA+IGd1w6BuOyAjOUUxQgor6bicID4gccO6OyAjOUUxQwor6bidID4gbMOtOyAjOUUxRAor6bieID4gbHXDoW47ICM5RTFFCivpuJ8gPiBuacSDbzsgIzlFMUYKK+m4oCA+IGrEq3U7ICM5RTIwCivpuKEgPiBqxKs7ICM5RTIxCivpuKIgPiB5dcSBbjsgIzlFMjIKK+m4oyA+IG3DrW5nOyAjOUUyMwor6bikID4gc2jEqzsgIzlFMjQKK+m4pSA+IMWNdTsgIzlFMjUKK+m4piA+IHnEgTsgIzlFMjYKK+m4pyA+IGPEgW5nOyAjOUUyNwor6bioID4gYsSDbzsgIzlFMjgKK+m4qSA+IHpow6huOyAjOUUyOQor6biqID4gZ8WrOyAjOUUyQQor6birID4gZMWNbmc7ICM5RTJCCivpuKwgPiBsw7o7ICM5RTJDCivpuK0gPiB5xIE7ICM5RTJECivpuK4gPiB4acSBbzsgIzlFMkUKK+m4ryA+IHnEgW5nOyAjOUUyRgor6biwID4gbMOtbmc7ICM5RTMwCivpuLEgPiB6aMSrOyAjOUUzMQor6biyID4gccO6OyAjOUUzMgor6bizID4geXXEgW47ICM5RTMzCivpuLQgPiB4dcOpOyAjOUUzNAor6bi1ID4gdMO6bzsgIzlFMzUKK+m4tiA+IHPEqzsgIzlFMzYKK+m4tyA+IHpow6w7ICM5RTM3CivpuLggPiDDqXI7ICM5RTM4CivpuLkgPiBndcSBOyAjOUUzOQor6bi6ID4geMSrdTsgIzlFM0EKK+m4uyA+IGjDqW5nOyAjOUUzQgor6bi8ID4gemjFjXU7ICM5RTNDCivpuL0gPiBnxJM7ICM5RTNECivpuL4gPiBsdcOhbjsgIzlFM0UKK+m4vyA+IGjDs25nOyAjOUUzRgor6bmAID4gd8O6OyAjOUU0MAor6bmBID4gYsOzOyAjOUU0MQor6bmCID4gbMOtOyAjOUU0Mgor6bmDID4ganXEgW47ICM5RTQzCivpuYQgPiBow7o7ICM5RTQ0CivpuYUgPiDDqTsgIzlFNDUKK+m5hiA+IHnDuTsgIzlFNDYKK+m5hyA+IHhpw6FuOyAjOUU0Nwor6bmIID4gdMOtOyAjOUU0OAor6bmJID4gd8WtOyAjOUU0OQor6bmKID4gcXXDqDsgIzlFNEEKK+m5iyA+IG1pw6FvOyAjOUU0Qgor6bmMID4gxIFuOyAjOUU0Qwor6bmNID4ga8WrbjsgIzlFNEQKK+m5jiA+IGLEk2k7ICM5RTRFCivpuY8gPiBww6luZzsgIzlFNEYKK+m5kCA+IHFpxIFuOyAjOUU1MAor6bmRID4gY2jDum47ICM5RTUxCivpuZIgPiBnxJNuZzsgIzlFNTIKK+m5kyA+IHl1xIFuOyAjOUU1Mwor6bmUID4gc8O5OyAjOUU1NAor6bmVID4gaMO6OyAjOUU1NQor6bmWID4gaMOpOyAjOUU1Ngor6bmXID4gw6g7ICM5RTU3CivpuZggPiBnw7o7ICM5RTU4CivpuZkgPiBxxKt1OyAjOUU1OQor6bmaID4gesSrOyAjOUU1QQor6bmbID4gbcOpaTsgIzlFNUIKK+m5nCA+IG3DuTsgIzlFNUMKK+m5nSA+IG7DrDsgIzlFNUQKK+m5niA+IHnDoG87ICM5RTVFCivpuZ8gPiB3xJNuZzsgIzlFNUYKK+m5oCA+IGzDrXU7ICM5RTYwCivpuaEgPiBqw607ICM5RTYxCivpuaIgPiBuw6w7ICM5RTYyCivpuaMgPiBqacSBbjsgIzlFNjMKK+m5pCA+IGjDqDsgIzlFNjQKK+m5pSA+IHnEqzsgIzlFNjUKK+m5piA+IHnEq25nOyAjOUU2Ngor6bmnID4gemjDqDsgIzlFNjcKK+m5qCA+IGxpw6FvOyAjOUU2OAor6bmpID4gbGnDoW87ICM5RTY5CivpuaogPiBqacSBbzsgIzlFNkEKK+m5qyA+IGrDrHU7ICM5RTZCCivpuawgPiB5w7k7ICM5RTZDCivpua0gPiBsw7k7ICM5RTZECivpua4gPiB4dcOhbjsgIzlFNkUKK+m5ryA+IHpoxIFuOyAjOUU2Rgor6bmwID4gecSrbmc7ICM5RTcwCivpubEgPiBow7lvOyAjOUU3MQor6bmyID4gbcOpbmc7ICM5RTcyCivpubMgPiBndcOgbjsgIzlFNzMKK+m5tCA+IHNodcSBbmc7ICM5RTc0CivpubUgPiBsxa07ICM5RTc1CivpubYgPiBqxKtuOyAjOUU3Ngor6bm3ID4gbMOtbmc7ICM5RTc3CivpubggPiBqacSDbjsgIzlFNzgKK+m5uSA+IHhpw6FuOyAjOUU3OQor6bm6ID4gY8O6bzsgIzlFN0EKK+m5uyA+IGppxINuOyAjOUU3Qgor6bm8ID4gamnEg247ICM5RTdDCivpub0gPiB5w6FuOyAjOUU3RAor6bm+ID4gY8O6bzsgIzlFN0UKK+m5vyA+IGzDuTsgIzlFN0YKK+m6gCA+IHnFjXU7ICM5RTgwCivpuoEgPiBjxas7ICM5RTgxCivpuoIgPiBqxK07ICM5RTgyCivpuoMgPiBiacSBbzsgIzlFODMKK+m6hCA+IGPFqzsgIzlFODQKK+m6hSA+IGJpxIFvOyAjOUU4NQor6bqGID4gemjDuTsgIzlFODYKK+m6hyA+IGrFq247ICM5RTg3CivpuoggPiB6aMWtOyAjOUU4OAor6bqJID4gamnEgW47ICM5RTg5CivpuoogPiBtw607ICM5RThBCivpuosgPiBtw607ICM5RThCCivpuowgPiB3w7o7ICM5RThDCivpuo0gPiBsw611OyAjOUU4RAor6bqOID4gY2jDqW47ICM5RThFCivpuo8gPiBqxatuOyAjOUU4Rgor6bqQID4gbMOtbjsgIzlFOTAKK+m6kSA+IG7DrTsgIzlFOTEKK+m6kiA+IHHDrTsgIzlFOTIKK+m6kyA+IGzDuTsgIzlFOTMKK+m6lCA+IGrDrHU7ICM5RTk0CivpupUgPiBqxatuOyAjOUU5NQor6bqWID4gasSrbmc7ICM5RTk2CivpupcgPiBsw6w7ICM5RTk3CivpupggPiB4acSBbmc7ICM5RTk4CivpupkgPiB5w6FuOyAjOUU5OQor6bqaID4gamnEgTsgIzlFOUEKK+m6myA+IG3DrTsgIzlFOUIKK+m6nCA+IGzDrDsgIzlFOUMKK+m6nSA+IHNow6g7ICM5RTlECivpup4gPiB6aMSBbmc7ICM5RTlFCivpup8gPiBsw61uOyAjOUU5Rgor6bqgID4gasSrbmc7ICM5RUEwCivpuqEgPiBqxKs7ICM5RUExCivpuqIgPiBsw61uZzsgIzlFQTIKK+m6oyA+IHnDoW47ICM5RUEzCivpuqQgPiBjxas7ICM5RUE0CivpuqUgPiBtw6BpOyAjOUVBNQor6bqmID4gbcOgaTsgIzlFQTYKK+m6pyA+IGfEkzsgIzlFQTcKK+m6qCA+IGNoxINvOyAjOUVBOAor6bqpID4gZsWrOyAjOUVBOQor6bqqID4gbWnEg247ICM5RUFBCivpuqsgPiBtacSDbjsgIzlFQUIKK+m6rCA+IGbFqzsgIzlFQUMKK+m6rSA+IHDDoG87ICM5RUFECivpuq4gPiBxw7k7ICM5RUFFCivpuq8gPiBxw7o7ICM5RUFGCivpurAgPiBtw7N1OyAjOUVCMAor6bqxID4gZsWrOyAjOUVCMQor6bqyID4geGnDoG47ICM5RUIyCivpurMgPiBsw6FpOyAjOUVCMwor6bq0ID4gccO6OyAjOUVCNAor6bq1ID4gbWnDoG47ICM5RUI1CivpurcgPiBmxJNuZzsgIzlFQjcKK+m6uCA+IGbFqzsgIzlFQjgKK+m6uSA+IHHDujsgIzlFQjkKK+m6uiA+IG1pw6BuOyAjOUVCQQor6bq7ID4gbcOhOyAjOUVCQgor6bq8ID4gbW87ICM5RUJDCivpur0gPiBtbzsgIzlFQkQKK+m6viA+IGjFq2k7ICM5RUJFCivpu4AgPiB6xY11OyAjOUVDMAor6buBID4gbsSTbjsgIzlFQzEKK+m7giA+IGbDqW47ICM5RUMyCivpu4MgPiBodcOhbmc7ICM5RUMzCivpu4QgPiBodcOhbmc7ICM5RUM0Civpu4UgPiBqxKtuOyAjOUVDNQor6buGID4gZ3XEgW5nOyAjOUVDNgor6buHID4gdGnEgW47ICM5RUM3Civpu4ggPiB0xY91OyAjOUVDOAor6buJID4gaMOpbmc7ICM5RUM5Civpu4ogPiB4xKs7ICM5RUNBCivpu4sgPiBrdcSDbmc7ICM5RUNCCivpu4wgPiBow6luZzsgIzlFQ0MKK+m7jSA+IHNoxa07ICM5RUNECivpu44gPiBsw607ICM5RUNFCivpu48gPiBuacOhbjsgIzlFQ0YKK+m7kCA+IGNoxKs7ICM5RUQwCivpu5EgPiBoxJNpOyAjOUVEMQor6buSID4gaMSTaTsgIzlFRDIKK+m7kyA+IHnDrDsgIzlFRDMKK+m7lCA+IHFpw6FuOyAjOUVENAor6buVID4gZMSBbjsgIzlFRDUKK+m7liA+IHjDrDsgIzlFRDYKK+m7lyA+IHR1xINuOyAjOUVENwor6buYID4gbcOyOyAjOUVEOAor6buZID4gbcOyOyAjOUVEOQor6buaID4gcWnDoW47ICM5RURBCivpu5sgPiBkw6BpOyAjOUVEQgor6bucID4gY2jDuTsgIzlFREMKK+m7nSA+IHnFj3U7ICM5RURECivpu54gPiBkacSDbjsgIzlFREUKK+m7nyA+IHnEqzsgIzlFREYKK+m7oCA+IHhpw6E7ICM5RUUwCivpu6EgPiB5xINuOyAjOUVFMQor6buiID4gccWrOyAjOUVFMgor6bujID4gbcSVaTsgIzlFRTMKK+m7pCA+IHnEg247ICM5RUU0Civpu6UgPiBqxKtuZzsgIzlFRTUKK+m7piA+IHnDuTsgIzlFRTYKK+m7pyA+IGzDrTsgIzlFRTcKK+m7qCA+IGTEg25nOyAjOUVFOAor6bupID4gZMO6OyAjOUVFOQor6buqID4gY8SDbjsgIzlFRUEKK+m7qyA+IHnEq247ICM5RUVCCivpu6wgPiDDoG47ICM5RUVDCivpu60gPiB5xIFuOyAjOUVFRAor6buuID4gdMSDbjsgIzlFRUUKK+m7ryA+IMOgbjsgIzlFRUYKK+m7sCA+IHpoxJVuOyAjOUVGMAor6buxID4gZMOgaTsgIzlFRjEKK+m7siA+IGPEg247ICM5RUYyCivpu7MgPiB5xKs7ICM5RUYzCivpu7QgPiBtw6lpOyAjOUVGNAor6bu1ID4gZMSDbjsgIzlFRjUKK+m7tiA+IHnEg247ICM5RUY2Civpu7cgPiBkw7o7ICM5RUY3Civpu7ggPiBsw7o7ICM5RUY4Civpu7kgPiB6aMStOyAjOUVGOQor6bu6ID4gZsSVbjsgIzlFRkEKK+m7uyA+IGbDuTsgIzlFRkIKK+m7vCA+IGbFrTsgIzlFRkMKK+m7vSA+IG3ErW47ICM5RUZECivpu74gPiBtxK1uOyAjOUVGRQor6bu/ID4geXXDoW47ICM5RUZGCivpvIAgPiBjw7k7ICM5RjAwCivpvIEgPiBxw7k7ICM5RjAxCivpvIIgPiBjaMOhbzsgIzlGMDIKK+m8gyA+IHfEgTsgIzlGMDMKK+m8hCA+IHpoxas7ICM5RjA0CivpvIUgPiB6aMSrOyAjOUYwNQor6byGID4gbcOhbmc7ICM5RjA2CivpvIcgPiDDoW87ICM5RjA3CivpvIggPiBiacSTOyAjOUYwOAor6byJID4gdMO6bzsgIzlGMDkKK+m8iiA+IGLDrDsgIzlGMEEKK+m8iyA+IHl1w6FuOyAjOUYwQgor6byMID4gY2jDoW87ICM5RjBDCivpvI0gPiB0w7pvOyAjOUYwRAor6byOID4gZMStbmc7ICM5RjBFCivpvI8gPiBtw6w7ICM5RjBGCivpvJAgPiBuw6BpOyAjOUYxMAor6byRID4gZMStbmc7ICM5RjExCivpvJIgPiB6xKs7ICM5RjEyCivpvJMgPiBnxa07ICM5RjEzCivpvJQgPiBnxa07ICM5RjE0CivpvJUgPiBkxY1uZzsgIzlGMTUKK+m8liA+IGbDqW47ICM5RjE2CivpvJcgPiB0w6FvOyAjOUYxNwor6byYID4geXXEgW47ICM5RjE4CivpvJkgPiBww607ICM5RjE5CivpvJogPiBjaMSBbmc7ICM5RjFBCivpvJsgPiBnxIFvOyAjOUYxQgor6bycID4gccOsOyAjOUYxQwor6bydID4geXXEgW47ICM5RjFECivpvJ4gPiB0xIFuZzsgIzlGMUUKK+m8nyA+IHTEk25nOyAjOUYxRgor6bygID4gc2jFrTsgIzlGMjAKK+m8oSA+IHNoxa07ICM5RjIxCivpvKIgPiBmw6luOyAjOUYyMgor6byjID4gZsOoaTsgIzlGMjMKK+m8pCA+IHfDqW47ICM5RjI0CivpvKUgPiBiw6E7ICM5RjI1CivpvKYgPiBkacSBbzsgIzlGMjYKK+m8pyA+IHTDum87ICM5RjI3CivpvKggPiB0w7NuZzsgIzlGMjgKK+m8qSA+IHHDujsgIzlGMjkKK+m8qiA+IHNoxJNuZzsgIzlGMkEKK+m8qyA+IHNow607ICM5RjJCCivpvKwgPiB5w7J1OyAjOUYyQwor6bytID4gc2jDrTsgIzlGMkQKK+m8riA+IHTDrW5nOyAjOUYyRQor6byvID4gd8O6OyAjOUYyRgor6bywID4gbmnDoG47ICM5RjMwCivpvLEgPiBqxKtuZzsgIzlGMzEKK+m8siA+IGjDum47ICM5RjMyCivpvLMgPiBqw7o7ICM5RjMzCivpvLQgPiB5xINuOyAjOUYzNAor6by1ID4gdMO6OyAjOUYzNQor6by2ID4gdMOtOyAjOUYzNgor6by3ID4geMSrOyAjOUYzNwor6by4ID4geGnEg247ICM5RjM4CivpvLkgPiB5xINuOyAjOUYzOQor6by6ID4gbMOpaTsgIzlGM0EKK+m8uyA+IGLDrTsgIzlGM0IKK+m8vCA+IHnEg287ICM5RjNDCivpvL0gPiBxw611OyAjOUYzRAor6by+ID4gaMSBbjsgIzlGM0UKK+m8vyA+IHfFqzsgIzlGM0YKK+m9gCA+IHfDuTsgIzlGNDAKK+m9gSA+IGjDs3U7ICM5RjQxCivpvYIgPiB4w6w7ICM5RjQyCivpvYMgPiBnw6k7ICM5RjQzCivpvYQgPiB6aMSBOyAjOUY0NAor6b2FID4geMOsdTsgIzlGNDUKK+m9hiA+IHfDqG5nOyAjOUY0Ngor6b2HID4gemjEgTsgIzlGNDcKK+m9iCA+IG7Ds25nOyAjOUY0OAor6b2JID4gbsOgbmc7ICM5RjQ5CivpvYogPiBxw607ICM5RjRBCivpvYsgPiB6aMSBaTsgIzlGNEIKK+m9jCA+IGrDrDsgIzlGNEMKK+m9jSA+IHrEqzsgIzlGNEQKK+m9jiA+IGrEqzsgIzlGNEUKK+m9jyA+IGrEqzsgIzlGNEYKK+m9kCA+IHHDrTsgIzlGNTAKK+m9kSA+IGrEqzsgIzlGNTEKK+m9kiA+IGNoxK07ICM5RjUyCivpvZMgPiBjaMOobjsgIzlGNTMKK+m9lCA+IGNow6huOyAjOUY1NAor6b2VID4gaMOpOyAjOUY1NQor6b2WID4gecOhOyAjOUY1Ngor6b2XID4ga8SVbjsgIzlGNTcKK+m9mCA+IHhpw6g7ICM5RjU4CivpvZkgPiBww6FvOyAjOUY1OQor6b2aID4gY8O5bzsgIzlGNUEKK+m9myA+IHNow6w7ICM5RjVCCivpvZwgPiB6xKs7ICM5RjVDCivpvZ0gPiBjaMSrOyAjOUY1RAor6b2eID4gbmnDoG47ICM5RjVFCivpvZ8gPiBqxa07ICM5RjVGCivpvaAgPiB0acOhbzsgIzlGNjAKK+m9oSA+IGzDrW5nOyAjOUY2MQor6b2iID4gbMOtbmc7ICM5RjYyCivpvaMgPiBjaMWrOyAjOUY2Mwor6b2kID4gcXXDoW47ICM5RjY0CivpvaUgPiB4acOoOyAjOUY2NQor6b2mID4ga8SVbjsgIzlGNjYKK+m9pyA+IG5pw6g7ICM5RjY3CivpvaggPiBqw6x1OyAjOUY2OAor6b2pID4gecSDbzsgIzlGNjkKK+m9qiA+IGNow7lvOyAjOUY2QQor6b2rID4ga8WtbjsgIzlGNkIKK+m9rCA+IHnFrTsgIzlGNkMKK+m9rSA+IGNoxa07ICM5RjZECivpva4gPiB5xK07ICM5RjZFCivpva8gPiBuw607ICM5RjZGCivpvbAgPiBjw7lvOyAjOUY3MAor6b2xID4gesWNdTsgIzlGNzEKK+m9siA+IHHFrTsgIzlGNzIKK+m9syA+IG7ElW47ICM5RjczCivpvbQgPiB4acSDbjsgIzlGNzQKK+m9tSA+IMOzdTsgIzlGNzUKK+m9tiA+IMOoOyAjOUY3Ngor6b23ID4gd8OyOyAjOUY3Nwor6b24ID4gecOsOyAjOUY3OAor6b25ID4gY2jFq287ICM5Rjc5CivpvbogPiB6xY11OyAjOUY3QQor6b27ID4gZGnEgW47ICM5RjdCCivpvbwgPiBjaMWtOyAjOUY3Qwor6b29ID4gasOsbjsgIzlGN0QKK+m9viA+IHnDoDsgIzlGN0UKK+m9vyA+IGNoxK07ICM5RjdGCivpvoAgPiBjaMOobjsgIzlGODAKK+m+gSA+IGjDqTsgIzlGODEKK+m+giA+IGvElW47ICM5RjgyCivpvoMgPiBqxa07ICM5RjgzCivpvoQgPiBsw61uZzsgIzlGODQKK+m+hSA+IHDDoW87ICM5Rjg1CivpvoYgPiB0acOhbzsgIzlGODYKK+m+hyA+IHrEqzsgIzlGODcKK+m+iCA+IGvElW47ICM5Rjg4CivpvokgPiB5xa07ICM5Rjg5CivpvoogPiBjaMO5bzsgIzlGOEEKK+m+iyA+IHHFrTsgIzlGOEIKK+m+jCA+IHfDsjsgIzlGOEMKK+m+jSA+IGzDs25nOyAjOUY4RAor6b6OID4gcMOhbmc7ICM5RjhFCivpvo8gPiBnxY1uZzsgIzlGOEYKK+m+kCA+IHDDoW5nOyAjOUY5MAor6b6RID4gecSDbjsgIzlGOTEKK+m+kiA+IGzDs25nOyAjOUY5Mgor6b6TID4gbMOzbmc7ICM5RjkzCivpvpQgPiBnxY1uZzsgIzlGOTQKK+m+lSA+IGvEgW47ICM5Rjk1CivpvpYgPiB0w6A7ICM5Rjk2CivpvpcgPiBsw61uZzsgIzlGOTcKK+m+mCA+IHTDoDsgIzlGOTgKK+m+mSA+IGzDs25nOyAjOUY5OQor6b6aID4gZ8WNbmc7ICM5RjlBCivpvpsgPiBrxIFuOyAjOUY5Qgor6b6cID4gZ8WraTsgIzlGOUMKK+m+nSA+IHHEq3U7ICM5RjlECivpvp4gPiBiacSTOyAjOUY5RQor6b6fID4gZ8WraTsgIzlGOUYKK+m+oCA+IHl1w6g7ICM5RkEwCivpvqEgPiBjaMO5aTsgIzlGQTEKK+m+oiA+IGjDqTsgIzlGQTIKK+m+oyA+IGp1w6k7ICM5RkEzCivpvqQgPiB4acOpOyAjOUZBNAor6b6lID4gecO5OyAjOUZBNQor76SOID4gbMOgOyAjRjkwRQor76iMID4gd8O5OyAjRkEwQwor76iNID4gaMO5bzsgI0ZBMEQKK++okCA+IHpoxY9uZzsgI0ZBMTAKK++okiA+IHHDrW5nOyAjRkExMgor76iVID4geMSrOyAjRkExNQor76iWID4gemjFqzsgI0ZBMTYKK++olyA+IHnDrDsgI0ZBMTcKK++omCA+IGzErTsgI0ZBMTgKK++omSA+IHNow6luOyAjRkExOQor76iaID4geGnDoW5nOyAjRkExQQor76ibID4gZsO6OyAjRkExQgor76icID4gasOsbmc7ICNGQTFDCivvqJ0gPiBqxKtuZzsgI0ZBMUQKK++oniA+IHnFrTsgI0ZBMUUKK++ooiA+IHpoxas7ICNGQTIyCivvqKUgPiB5w6w7ICNGQTI1CivvqKYgPiBkxas7ICNGQTI2CivvqKogPiBmw6BuOyAjRkEyQQor76irID4gc8OsOyAjRkEyQgor76isID4gZ3XEg247ICNGQTJDCivvqK0gPiBow6g7ICNGQTJECisKKyMgZW9mCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vdHJhbnNsaXQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX0thbmppX0VuZ2xpc2gudHh0IGIvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL3RyYW5zbGl0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9LYW5qaV9FbmdsaXNoLnR4dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mZTM1M2YzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL3RyYW5zbGl0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9LYW5qaV9FbmdsaXNoLnR4dApAQCAtMCwwICsxLDYzNjYgQEAKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDb3B5cmlnaHQgKGMpIDE5OTktMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworIyBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBEYXRlOiBUdWUgSmFuIDIzIDEyOjQyOjAyIDIwMDEKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIEthbmppLUVuZ2xpc2gKKwor5LiBPidbbWFsZSBhZHVsdF0nOwor5LiDPidbc2V2ZW5dJzsKK+S4hz4nW3RlbiB0aG91c2FuZF0nOwor5LiIPidbdW5pdCBvZiBsZW5ndGggZXF1YWwgMy4zIG1ldGVyc10nOwor5LiJPidbdGhyZWVdJzsKK+S4ij4nW3RvcF0nOwor5LiLPidbdW5kZXJdJzsKK+S4jT4nW25vXSc7CivkuI4+J1thbmRdJzsKK+S4kD4nW2JlZ2dhcl0nOwor5LiRPidbY2xvd25dJzsKK+S4lD4nW21vcmVvdmVyXSc7CivkuJU+J1tncmVhdF0nOwor5LiWPidbZ2VuZXJhdGlvbl0nOwor5LiXPidbdGhpcnR5XSc7CivkuJg+J1toaWxsXSc7CivkuJk+J1t0aGlyZCBvZiBoZWF2ZW5seSBzdGVtc10nOwor5LiePidbYXNzaXN0XSc7CivkuKE+J1t0d29dJzsKK+S4pj4nW2VxdWFsIHRvXSc7CivkuKo+J1tudW1lcmFyeSBhZGp1bmN0XSc7CivkuK0+J1tjZW50cmFsXSc7CivkuLE+J1tjaGlsZCcncyBoYWlyc3R5bGUgYm91bmQgaW4gdHdvIHR1ZnRzXSc7CivkuLI+J1tzdHJpbmddJzsKK+S4tj4nW2RvdF0nOwor5Li4Pidbc21hbGwgcm91bmQgb2JqZWN0XSc7CivkuLk+J1tjaW5uYWJhciAobmF0aXZlIEhnUyldJzsKK+S4uz4nW21hc3Rlcl0nOwor5Li8PidbYm93bCBvZiBmb29kXSc7CivkuL8+J1tsaW5lXSc7CivkuYI+J1tnb3Zlcm5dJzsKK+S5gz4nW3RoZW5dJzsKK+S5hT4nW2xvbmcgdGltZSAoYWdvKV0nOwor5LmLPidbJydzIChtYXJrcyBwcmVjZWRpbmcgcGhyYXNlIGFzIG1vZGlmaWVyIG9mIGZvbGxvd2luZyBwaHJhc2UpXSc7CivkuY0+J1tzdWRkZW5seV0nOwor5LmOPidbaW50ZXJyb2dhdGl2ZSBvciBleGNsYW1hdG9yeSBmaW5hbCBwYXJ0aWNsZV0nOwor5LmPPidbbGFja10nOwor5LmVPidbdGlnZXJdJzsKK+S5lj4nW3JlYmVsXSc7CivkuZc+J1tyaWRlXSc7CivkuZg+J1tyaWRlXSc7CivkuZk+J1tzZWNvbmQgaGVhdmVuJydzIHN0ZW1dJzsKK+S5nT4nW25pbmVdJzsKK+S5nj4nW2JlZ10nOwor5LmfPidbYWxzb10nOwor5LmiPidbbGlkXSc7CivkubE+J1tjb25mdXNpb25dJzsKK+S5sz4nW2JyZWFzdF0nOwor5Lm+PidbZHJ5XSc7CivkuoA+J1t0dXJ0bGUgb3IgdG9ydG9pc2VdJzsKK+S6gj4nW2NvbmZ1c2lvbl0nOwor5LqFPidbaG9va10nOwor5LqGPidbdG8gZmluaXNoXSc7Civkuog+J1tJXSc7Civkuok+J1tkaXNwdXRlXSc7Civkuoo+J1thZmZhaXJdJzsKK+S6iz4nW2FmZmFpcl0nOwor5LqMPidbdHdvXSc7Civkuo4+J1tpbl0nOwor5LqRPidbc2F5XSc7CivkupI+J1ttdXR1YWxseV0nOwor5LqUPidbZml2ZV0nOwor5LqVPidbd2VsbF0nOwor5LqYPidbZXh0ZW5kIGFjcm9zc10nOwor5LqZPidbZXh0ZW5kIGFjcm9zc10nOwor5LqbPidbbGl0dGxlXSc7Civkupw+J1thc2lhXSc7Civkup4+J1thc2lhXSc7Civkup8+J1t1cmdlbnRseV0nOwor5LqgPidbaGVhZF0nOwor5LqhPidbZGVhdGhdJzsKK+S6oj4nW2hpZ2hdJzsKK+S6pD4nW21peF0nOwor5LqlPidbbGFzdCBvZiAxMiBlYXJ0aCBicmFuY2hlc10nOwor5LqmPidbYWxzb10nOwor5LqoPidbc21vb3RobHldJzsKK+S6qz4nW2Vuam95XSc7Civkuqw+J1tjYXBpdGFsIGNpdHldJzsKK+S6rT4nW3BhdmlsaW9uXSc7Civkuq4+J1ticmlnaHRdJzsKK+S6sD4nW2NhcGl0YWwgY2l0eV0nOwor5LqzPidbbmFtZSBvZiBkaXN0cmljdCBpbiBBbmh1aV0nOwor5Lq2Pidbc2luY2VyZV0nOwor5Lq6PidbbWFuXSc7Civku4A+J1tmaWxlIG9mIHRlbiBzb2xkaWVyc10nOwor5LuBPidbaHVtYW5lbmVzc10nOwor5LuCPidbc3VycGx1cyBvciBleGNlc3NdJzsKK+S7hD4nW3NsYW50aW5nXSc7Civku4Y+J1tmYWxsIGZvcndhcmRdJzsKK+S7hz4nW2VuZW15XSc7Civku4o+J1tub3ddJzsKK+S7iz4nW2ZvcmVydW5uZXJdJzsKK+S7jT4nW3lldF0nOwor5LuOPidbZnJvbV0nOwor5LuPPidbYnVkZGhhXSc7Civku5Q+J1tzbWFsbCB0aGluZ10nOwor5LuVPidbb2ZmaWNpYWxdJzsKK+S7lj4nW290aGVyXSc7Civku5c+J1tyZWx5IHVwb25dJzsKK+S7mD4nW2dpdmVdJzsKK+S7mT4nW1Rhb2lzdCBzdXBlci1iZWluZ10nOwor5LudPidbdG9nZXRoZXJdJzsKK+S7nj4nW2FuY2llbnQgdW5pdCBvZiBtZWFzdXJlICg4IGZlZXQpXSc7Civku58+J1tvbmUgdGhvdXNhbmRdJzsKK+S7oz4nW3JlcGxhY2VdJzsKK+S7pD4nW2NvbW1hbmRdJzsKK+S7pT4nW2J5IG1lYW5zIG9mXSc7Civku60+J1thbmNpZW50IHVuaXQgb2YgbWVhc3VyZSAoOCBmZWV0KV0nOwor5LuuPidbZmFsc2Vob29kXSc7Civku7A+J1tyYWlzZSB0aGUgaGVhZCB0byBsb29rXSc7Civku7I+J1ttaWRkbGUgYnJvdGhlcl0nOwor5Lu2PidbbnVtZXJhcnkgYWRqdW5jdCBmb3IgYXJ0aWNsZV0nOwor5Lu3PidbcHJpY2VdJzsKK+S7uz4nW3RydXN0IHRvXSc7CivkvIE+J1twbGFuIGEgcHJvamVjdF0nOwor5LyJPidbY29tcGFyZV0nOwor5LyKPidbdGhpcmQgcGVyc29uIHByb25vdW5dJzsKK+S8jT4nW2ZpdmVdJzsKK+S8jj4nW3RhbGVudF0nOwor5LyPPidbY3JvdWNoXSc7CivkvJA+J1tjdXQgZG93bl0nOwor5LyRPidbcmVzdF0nOwor5LyaPidbYXNzZW1ibGVdJzsKK+S8nD4nW2RlcHV0eV0nOwor5LydPidbc3VtbW9uXSc7CivkvK8+J1tvbGRlciBicm90aGVyXSc7CivkvLA+J1ttZXJjaGFudF0nOwor5Ly0PidbY29tcGFuaW9uXSc7CivkvLY+J1tsb25lbHldJzsKK+S8uD4nW2V4dGVuZF0nOwor5Ly6Pidbc2VydmVdJzsKK+S8vD4nW3Jlc2VtYmxlXSc7CivkvL0+J1t0cmFuc2NyaXB0aW9uIG9mIHNhbnNrcml0IGdoYSBpbiBidWRkaGlzdCB0ZXh0cyAoJ8OrbcOiw6YnIFwic2FtZ2hhXCIpXSc7CivkvYM+J1t0ZW5hbnQgZmFybWVyXSc7CivkvYY+J1tvbmx5XSc7CivkvYc+J1t3YWl0XSc7CivkvY0+J1t0aHJvbmVdJzsKK+S9jj4nW2xvd10nOwor5L2PPidbcmVzaWRlXSc7CivkvZA+J1thc3Npc3RdJzsKK+S9kT4nW2hlbHBdJzsKK+S9kz4nW2JvZHldJzsKK+S9lT4nW3doYXRdJzsKK+S9lz4nW290aGVyXSc7CivkvZk+J1tJXSc7CivkvZo+J1tpbmR1bGdlIGluIHBsZWFzdXJlc10nOwor5L2bPidbYnVkZGhhIChjb250cmFjdGlvbiBvZiBNQyAnYmhpw6p0ZGhhJyldJzsKK+S9nD4nW21ha2VdJzsKK+S9nT4nW3JpY2tldHNdJzsKK+S9nj4nW2ZsYXR0ZXJ5XSc7Civkvak+J1tiZWx0IG9ybmFtZW50XSc7Civkva8+J1twcmV0ZW5kXSc7CivkvbA+J1todW5kcmVkXSc7CivkvbM+J1tnb29kXSc7CivkvbU+J1tjb21iaW5lXSc7CivkvbY+J1tzdHJvbmddJzsKK+S9uz4nW2ZyaXZvbG91c10nOwor5L28PidbYmVhdXRpZnVsXSc7Civkvb8+J1tjYXVzZV0nOwor5L6DPidbdXByaWdodCBhbmQgc3Ryb25nXSc7CivkvoY+J1tjb21lXSc7Civkvog+J1tsdXh1cmlvdXNdJzsKK+S+iz4nW3ByZWNlZGVudF0nOwor5L6NPidbc2VydmVdJzsKK+S+jz4nW3NtYWxsXSc7CivkvpE+J1toZWxwXSc7CivkvpY+J1tsb2dpY2FsIHJlYXNvbnNdJzsKK+S+mD4nW2Rpc2FwcG9pbnRlZF0nOwor5L6bPidbc3VwcGx5XSc7Civkvp0+J1tyZWx5IG9uXSc7CivkvqA+J1tjaGl2YWxyb3VzIHBlcnNvbl0nOwor5L6hPidbcHJpY2VdJzsKK+S+qz4nW2ZsYXR0ZXJ5XSc7Civkvq0+J1tjb21wbGV0ZV0nOwor5L6uPidbaW5zdWx0XSc7Civkvq8+J1ttYXJxdWlzXSc7CivkvrU+J1tpbnZhZGVdJzsKK+S+tj4nW2NvbXBhbmlvbl0nOwor5L6/PidbY29udmVuaWVuY2VdJzsKK+S/gj4nW2JpbmRdJzsKK+S/gz4nW3VyZ2VdJzsKK+S/hD4nW3N1ZGRlbihseSldJzsKK+S/ij4nW3RhbGVudGVkXSc7Civkv44+J1tjaG9wcGluZyBib2FyZCBvciBibG9ja10nOwor5L+QPidbc21vb3RoXSc7Civkv5E+J1t3b29kZW4gZmlndXJlIGJ1cmllZCB3aXRoIGRlYWRdJzsKK+S/lD4nW2xpa2VdJzsKK+S/lz4nW3NvY2lhbCBjdXN0b21zXSc7Civkv5g+J1twcmlzb25lciBvZiB3YXJdJzsKK+S/mj4nW3J1c3RpY10nOwor5L+bPidbbWFrZSBlZmZvcnRdJzsKK+S/nT4nW3Byb3RlY3RdJzsKK+S/nz4nW3dhaXQgZm9yXSc7Civkv6E+J1t0cnVzdF0nOwor5L+jPidbYmlnXSc7CisjIuS/oz4nW2JpZ10nIiwKK+S/pT4nW3JpY2tzaGF3XSc7Civkv64+J1tzdHVkeV0nOwor5L+vPidbYm93IGRvd25dJzsKK+S/sz4nW2FjdG9yXSc7Civkv7U+J1tkaXZpZGVdJzsKK+S/tj4nW3N0YXJ0XSc7Civkv7g+J1t3YWdlc10nOwor5L+6PidbcGVyc29uYWwgcHJvbm91bl0nOwor5L++Pidbc28gdGhhdF0nOwor5YCFPidbZGVwdXR5XSc7CivlgIY+J1tjbGV2ZXJdJzsKK+WAiT4nW2dyYW5hcnldJzsKK+WAiz4nW251bWVyYXJ5IGFkanVuY3RdJzsKK+WAjT4nW3RpbWVzXSc7CivlgI8+J1toYXN0aWx5XSc7CivlgJE+J1thZGp1bmN0IHByb25vdW4gaW5kaWNhdGUgcGx1cmFsXSc7CivlgJI+J1tmYWxsIG92ZXJdJzsKK+WAlD4nW3N0dWJib3JuXSc7CivlgJY+J1tsdWNreV0nOwor5YCZPidbd2FpdF0nOwor5YCaPidbcmVseSBvbl0nOwor5YCfPidbYm9ycm93XSc7CivlgKE+J1tndWlkZV0nOwor5YCjPidbaW1pdGF0ZV0nOwor5YCkPidbcHJpY2VdJzsKK+WApT4nW2Jvb3Jpc2hdJzsKK+WApj4nW2JlIHRpcmVkIG9mXSc7CivlgKg+J1thcnJvZ2FudF0nOwor5YCpPidbYmVhdXRpZnVsXSc7CivlgKo+J1tmZWVibGVdJzsKK+WAqz4nW25vcm1hbCBodW1hbiByZWxhdGlvbnNoaXBzXSc7CivlgKw+J1tub3RpY2VhYmxlXSc7CivlgK0+J1tkd2FyZl0nOwor5YC2PidbYWxsXSc7CivlgLk+J1t0ZW1wZXJhdGVdJzsKK+WBgz4nW2NlYXNlXSc7CivlgYc+J1tmYWxzZWhvb2RdJzsKK+WBiD4nW2JyYXZlXSc7CivlgYk+J1tncmVhdF0nOwor5YGPPidbaW5jbGluZWQgb25lIHNpZGVdJzsKK+WBkD4nW2ZhbHNlXSc7CivlgZU+J1t0b2dldGhlcl0nOwor5YGWPidbcmlwIHVwXSc7CivlgZo+J1t3b3JrXSc7CivlgZw+J1tzdG9wXSc7CivlgaU+J1tzdHJvbmddJzsKK+WBrD4nW3VyZ2VudF0nOwor5YGyPidbdGFsZW50ZWRdJzsKK+WBtD4nW3NpZGVdJzsKK+WBtT4nW3NweV0nOwor5YG2PidbYWNjaWRlbnRhbGx5XSc7Civlgbg+J1t0byBzdGVhbF0nOwor5YG9PidbZmFsc2VdJzsKK+WCgD4nW2dyZWF0XSc7CivlgoU+J1t0dXRvcl0nOwor5YKNPidbYnkgc2lkZSBvZl0nOwor5YKRPidbaGVyb10nOwor5YKYPidbdW1icmVsbGFdJzsKK+WCmT4nW3ByZXBhcmVdJzsKK+WCmj4nW2ltaXRhdGVdJzsKK+WCrD4nW3ByZXNzXSc7Civlgq0+J1toaXJlXSc7CivlgrI+J1twcm91ZF0nOwor5YKzPidbc3VtbW9uXSc7CivlgrQ+J1todW1wYmFja10nOwor5YK1PidbZGVidF0nOwor5YK3Pidbd291bmRdJzsKK+WCvj4nW3Vwc2V0XSc7Civlg4I+J1todW1wYmFja10nOwor5YOFPidbb25seV0nOwor5YOJPidbYWxsXSc7Civlg4o+J1tUYW9pc3Qgc3VwZXItYmVpbmddJzsKK+WDjT4nW2xhYm9yXSc7Civlg48+J1twaWN0dXJlXSc7Civlg5E+J1tzb2pvdXJuXSc7Civlg5U+J1tzbGF2ZV0nOwor5YOWPidbam95XSc7Civlg5o+J1tjb21wYW5pb25dJzsKK+WDnj4nW2ZhbHNlXSc7Civlg6M+J1thc3N1bWVdJzsKK+WDpT4nW2JlIGx1Y2t5XSc7Civlg6c+J1tidWRkaGlzdCBwcmllc3RdJzsKK+WDrT4nW2Fzc3VtZV0nOwor5YOuPidbcGFnZV0nOwor5YO1Pidbc3RpZmYgYW5kIG1vdGlvbmxlc3NdJzsKK+WDuT4nW3ByaWNlXSc7Civlg7s+J1tvdXQtb2YtdGhlLXdheV0nOwor5YSAPidbY2VyZW1vbnldJzsKK+WEgT4nW291dHN0YW5kaW5nXSc7CivlhII+J1tJXSc7CivlhIQ+J1todW5kcmVkIG1pbGxpb25dJzsKK+WEiT4nW3RlbXBlcmF0ZV0nOwor5YSSPidbY29uZnVjaWFuIHNjaG9sYXJdJzsKK+WElD4nW2NvbXBhbmlvbl0nOwor5YSVPidbYSBjb21wYW55XSc7CisjIuWElT4nW2EgY29tcGFueV0nIiwKK+WEmD4nW3V0bW9zdF0nOworIyLlhJg+J1t1dG1vc3RdJyIsCivlhJ8+J1tyZXBheV0nOwor5YShPidbcHVwcGV0XSc7CivlhKo+J1tzdXBlcmlvcl0nOwor5YSyPidbc2F2ZSBtb25leV0nOwor5YS3Pidbc3BvdXNlXSc7CivlhLo+J1tyaWNoXSc7CivlhLs+J1tpZl0nOwor5YS8PidbZ3JhdmVdJzsKK+WEvz4nW3Nvbl0nOwor5YWAPidbdG8gY3V0IG9mZiB0aGUgZmVldF0nOwor5YWBPidbdG8gZ3JhbnRdJzsKK+WFgz4nW2ZpcnN0XSc7CivlhYQ+J1tlbGRlciBicm90aGVyXSc7CivlhYU+J1tmaWxsXSc7CivlhYY+J1tvbWVuXSc7CivlhYc+J1thdHJvY2lvdXNdJzsKK+WFiD4nW2ZpcnN0XSc7CivlhYk+J1tsaWdodF0nOwor5YWLPidbZ3JhbV0nOwor5YWMPidbY2FzaF0nOwor5YWNPidbc3BhcmVdJzsKK+WFjj4nW3JhYmJpdF0nOwor5YWQPidbc29uXSc7CivlhZI+J1tzb25dJzsKK+WFlD4nW3JhYmJpdF0nOwor5YWaPidbcG9saXRpY2FsIHBhcnR5XSc7CivlhZw+J1twb3VjaF0nOwor5YWiPidbZmVhcmZ1bF0nOwor5YWlPidbZW50ZXJdJzsKK+WFqD4nW21haW50YWluXSc7Civlhak+J1t0d29dJzsKK+WFqj4nW3N1cm5hbWVdJzsKK+WFqz4nW2VpZ2h0XSc7Civlhaw+J1tmYWlyXSc7Civlha0+J1tudW1iZXIgc2l4XSc7Civlha4+J1tleGNsYW1hdG9yeSBwYXJ0aWNsZV0nOwor5YWxPidbdG9nZXRoZXIgd2l0aF0nOwor5YW1Pidbc29sZGllcl0nOwor5YW2PidbaGlzXSc7Civlhbc+J1t0b29sXSc7Civlhbg+J1tsYXddJzsKK+WFvD4nW3VuaXRlXSc7CivlhoA+J1tob3BlIGZvcl0nOwor5YaCPidbd2lkZV0nOwor5YaFPidbaW5zaWRlXSc7CivlhoY+J1t5ZW5dJzsKK+WGiT4nW3RlbmRlcl0nOwor5YaKPidbYm9va10nOwor5YaMPidbYm9va10nOwor5YaNPidbYWdhaW5dJzsKK+WGjz4nW1tub3QgZm91bmQgaW4gZGljdGlvbmFyeV1dJzsKK+WGkD4nW3Jpc2tdJzsKK+WGkT4nW2hlbG1ldF0nOwor5YaSPidbcmlza10nOwor5YaTPidbYSBzZWNsdWRlZCBwbGFjZV0nOwor5YaVPidbY3Jvd25dJzsKK+WGlj4nW2NvdmVyXSc7Civlhpc+J1tleGNlc3NpdmVdJzsKK+WGmT4nW3dyaXRlXSc7CivlhqA+J1tjYXBdJzsKK+WGoj4nW2J1cmlhbCBtb3VuZF0nOwor5YakPidbZ3JpZXZhbmNlXSc7CivlhqU+J1tkYXJrXSc7CivlhqY+J1tiYW5kaXRzXSc7Civlhqg+J1thYnVuZGFudF0nOwor5YapPidbd3JpdGVdJzsKK+WGqj4nW2NvdmVyLWNsb3RoXSc7Civlhqs+J1tpY2VdJzsKK+WGrD4nW3dpbnRlcl0nOwor5YawPidbaWNlXSc7CivlhrE+J1tmcmVlemluZ10nOwor5YayPidbc29hcl0nOwor5YazPidbZGVjaWRlXSc7CivlhrQ+J1tmcmVlemluZ10nOwor5Ya1PidbY29uZGl0aW9uXSc7CivlhrY+J1tzbWVsdF0nOwor5Ya3PidbY29sZF0nOwor5Ya9PidbY29sZCBhbmQgcmF3XSc7Civlh4Q+J1tiaXR0ZXIgY29sZF0nOwor5YeFPidbZHJpZWQgdXBdJzsKK+WHhj4nW2FwcHJvdmVdJzsKK+WHiT4nW2Nvb2xdJzsKK+WHiz4nW2JlIHdpdGhlcmVkXSc7Civlh4w+J1twdXJlXSc7Civlh40+J1tmcmVlemVdJzsKK+WHlj4nW3J1bGVdJzsKK+WHmz4nW3RvIHNoaXZlciB3aXRoIGNvbGQgb3IgZmVhcl0nOwor5YecPidbc2hpdmVyIHdpdGggY29sZCBvciBmZWFyXSc7Civlh50+J1tjb2FndWxhdGVdJzsKK+WHoD4nW3NtYWxsIHRhYmxlXSc7Civlh6E+J1thbGxdJzsKK+WHpj4nW3BsYWNlXSc7Civlh6c+J1traXRlXSc7Civlh6k+J1t3aW50cnkgd2luZF0nOwor5YeqPidbY2FsbV0nOwor5YetPidbbGVhbiBvbl0nOwor5YewPidbZmVtYWxlIHBob2VuaXhdJzsKK+WHsT4nW3RyaXVtcGhhbnRdJzsKK+WHtT4nW3JlY2VwdGFjbGVdJzsKK+WHtj4nW2N1bHByaXRdJzsKK+WHuD4nW3Byb3RydWRlXSc7Civlh7k+J1tjb25jYXZlXSc7Civlh7o+J1tnbyBvdXRdJzsKK+WHvT4nW2NvcnJlc3BvbmRlbmNlXSc7Civlh74+J1tjb3JyZXNwb25kZW5jZV0nOwor5YiAPidba25pZmVdJzsKK+WIgz4nW2VkZ2VkIHRvb2xdJzsKK+WIhD4nW2VkZ2VkIHRvb2xdJzsKK+WIhj4nW2RpdmlkZV0nOwor5YiHPidbY3V0XSc7CivliIg+J1tjdXQgb2ZmXSc7CivliIo+J1twdWJsaWNhdGlvbl0nOwor5YiLPidbcHVibGljYXRpb25dJzsKK+WIjj4nW2JlaGVhZF0nOwor5YiRPidbcHVuaXNobWVudF0nOwor5YiUPidbc2Nvb3Agb3V0XSc7CivliJc+J1tsaW5lXSc7CivliJ0+J1tiZWdpbm5pbmddJzsKK+WIpD4nW2p1ZGdlXSc7CivliKU+J1tzZXBhcmF0ZV0nOwor5YinPidbZGlzYXN0ZXJdJzsKK+WIqT4nW2dhaW5zXSc7CivliKo+J1t0byBjdXRdJzsKK+WIrj4nW3NoYXZlXSc7CivliLA+J1tnbyB0b10nOwor5YizPidbY3V0IG91dF0nOwor5Yi2Pidbc3lzdGVtXSc7CivliLc+J1ticnVzaF0nOwor5Yi4PidbY2VydGlmaWNhdGVdJzsKK+WIuT4nW3RlbXBsZV0nOwor5Yi6Pidbc3RhYl0nOwor5Yi7PidbY2FydmVdJzsKK+WJgz4nW3NoYXZlXSc7CivliYQ+J1tjdXQgdGhyb2F0XSc7CivliYc+J1tydWxlXSc7CivliYo+J1tzY3JhcGUgb2ZmXSc7CivliYs+J1tzdWJkdWVdJzsKK+WJjD4nW3NsYXNoXSc7CivliY0+J1tpbiBmcm9udF0nOwor5YmPPidbZXN0YWJsaXNoXSc7CivliZQ+J1twaWNrIG91dF0nOwor5YmWPidbc3BsaXQgaW4gdHdvXSc7CivliZs+J1toYXJkXSc7CivliZ4+J1tjYXJ2aW5nIG9yIGVuZ3JhdmluZyBrbmlmZV0nOwor5YmjPidbc3dvcmRdJzsKK+WJpD4nW21lZGljaW5hbCBwcmVwYXJhdGlvbl0nOwor5YmlPidbcGVlbF0nOwor5YmpPidbbGVmdG92ZXJzXSc7Civliao+J1tzY2lzc29yc10nOwor5YmvPidbYXNzaXN0XSc7CivlibA+J1tsZWZ0b3ZlcnNdJzsKK+WJsT4nW3N3b3JkXSc7CivlibI+J1tjdXRdJzsKK+WJsz4nW2JyaWVmIG5vdGVdJzsKK+WJtD4nW3NoYXJwZW5dJzsKK+WJtT4nW2VzdGFibGlzaF0nOwor5Ym9Pidbcm9iXSc7Civlib8+J1tkZXN0cm95XSc7CivlioM+J1tkaXZpZGVdJzsKK+WKhz4nW3RoZWF0cmljYWwgcGxheXNdJzsKK+WKiD4nW2N1dCBhcGFydF0nOwor5YqJPidbc3VybmFtZV0nOwor5YqNPidbc3dvcmRdJzsKK+WKkT4nW21lZGljaW5hbCBwcmVwYXJhdGlvbl0nOwor5YqSPidbc3dvcmRdJzsKK+WKlD4nW3N3b3JkXSc7Civlips+J1twb3dlcl0nOwor5YqfPidbYWNoaWV2ZW1lbnRdJzsKK+WKoD4nW2FkZCB0b10nOwor5YqjPidbYmFkXSc7Civliqk+J1toZWxwXSc7Civliqo+J1tleGVydF0nOwor5YqrPidbdGFrZSBieSBmb3JjZV0nOwor5YqsPidbYmUgZGlsaWdlbnRdJzsKK+WKrT4nW2VuY291cmFnZV0nOwor5YqxPidbc3RyaXZlXSc7CivlirQ+J1tsYWJvcl0nOwor5Yq1PidbY2VydGlmaWNhdGVdJzsKK+WKuT4nW2VmZmljYWNpb3VzXSc7Civlirw+J1tiZSBkaXNjcmVldF0nOwor5Yq+PidbZXhhbWluZSBpbnRvXSc7Civli4E+J1tzdHJvbmddJzsKK+WLgz4nW3N1ZGRlbmx5XSc7Civli4U+J1tpbXBlcmlhbCBkZWdyZWVdJzsKK+WLhz4nW2JyYXZlXSc7Civli4k+J1tlbmRlYXZvcl0nOwor5YuNPidbc3Ryb25nXSc7Civli5I+J1tzdHJhbmdsZV0nOwor5YuVPidbbW92ZV0nOwor5YuXPidbZW5qb2luXSc7Civli5g+J1tpbnZlc3RpZ2F0ZV0nOwor5YuZPidbYWZmYWlyc10nOwor5YudPidbdmljdG9yeV0nOwor5YuePidbbGFib3JdJzsKK+WLnz4nW2xldnldJzsKK+WLoD4nW2pvaW4gZm9yY2VzXSc7Civli6I+J1twb3dlcl0nOwor5YujPidbYWNoaWV2ZW1lbnRzXSc7Civli6Q+J1tpbmR1c3RyaW91c10nOwor5YumPidbZGVzdHJveV0nOwor5YunPidbcmVjb21tZW5kXSc7Civli7I+J1ttZXJpdG9yaW91cyBkZWVkXSc7Civli7M+J1ttZXJpdG9yaW91cyBkZWVkXSc7Civli7U+J1tzdHJpdmVdJzsKK+WLuD4nW3JlY29tbWVuZF0nOwor5Yu5Pidbd3JhcF0nOwor5Yu6Pidbc3Bvb25dJzsKK+WLvj4nW2hvb2tdJzsKK+WLvz4nW211c3Qgbm90XSc7CivljIE+J1tKYXBhbmVzZSB1bml0IG9mIHdlaWdodCAoMS8xMDAwIG9mIGEga2FuKV0nOwor5YyCPidbZnJhZ3JhbmNlXSc7CivljIU+J1t3cmFwXSc7CivljIY+J1toYXN0aWx5XSc7CivljIg+J1ticmVhc3RdJzsKK+WMjT4nW2NyYXdsXSc7CivljI8+J1tnb3VyZF0nOwor5YyQPidbZmFsbCBwcm9zdHJhdGVdJzsKK+WMlT4nW3Nwb29uXSc7CivljJY+J1tjaGFuZ2VdJzsKK+WMlz4nW25vcnRoXSc7CivljJk+J1tzcG9vbl0nOwor5YyaPidbYm94XSc7CivljJ0+J1tmdWxsIGNpcmNsZV0nOwor5YygPidbY3JhZnRzbWFuXSc7CivljKE+J1tjb3JyZWN0XSc7CivljKM+J1tzbWFsbCBib3hdJzsKK+WMqj4nW2JhbmRpdHNdJzsKK+WMrz4nW2NvbmNvdXJzZV0nOwor5YyxPidbdG8gbGFja10nOwor5YyzPidbbGFkaWVzIHRvaWxldCBjYXNlIHdpdGggbWlycm9yXSc7CivljLg+J1tib3hdJzsKK+WMuT4nW2JvbHQgb2YgY2xvdGhdJzsKK+WMuj4nW2FyZWFdJzsKK+WMuz4nW2N1cmVdJzsKK+WMvz4nW2hpZGVdJzsKK+WNgD4nW2FyZWFdJzsKK+WNgT4nW3Rlbl0nOwor5Y2DPidbdGhvdXNhbmRdJzsKK+WNhT4nW3RoaXJ0eV0nOwor5Y2GPidbc29sZGllcl0nOwor5Y2HPidbYXJpc2VdJzsKK+WNiD4nW25vb25dJzsKK+WNiT4nW2dlbmVyYWwgdGVybSBmb3IgcGxhbnRzXSc7CivljYo+J1toYWxmXSc7CivljY0+J1tzd2FzdGlrYSAtIGZvdXJ0aCBvZiBhdXNwaWNpb3VzXSc7CivljZE+J1todW1ibGVdJzsKK+WNkj4nW3NvbGRpZXJdJzsKK+WNkz4nW3Byb2ZvdW5kXSc7CivljZQ+J1tiZSB1bml0ZWRdJzsKK+WNlz4nW3NvdXRoXSc7CisjIuWNlz4nW3NvdXRoXSciLAor5Y2aPidbZ2FtYmxlXSc7CivljZw+J1tmb3J0dW5lIHRlbGxpbmddJzsKK+WNnj4nW2JlIGltcGF0aWVudF0nOwor5Y2gPidbZGl2aW5lXSc7CivljaY+J1tmb3J0dW5lIHRlbGxpbmddJzsKK+WNqT4nW3NlYWxdJzsKK+WNrj4nW21lYXN1cmluZyBjdXBdJzsKK+WNrz4nWzR0aCBvZiBFYXJ0aCBCcmFuY2hlc10nOwor5Y2wPidbcHJpbnRdJzsKK+WNsT4nW2Rhbmdlcm91c10nOwor5Y2zPidbcHJvbXB0bHldJzsKK+WNtD4nW3N0aWxsXSc7CivljbU+J1tlZ2ddJzsKK+WNtz4nW3Njcm9sbF0nOwor5Y24PidbbGF5IGRvd25dJzsKK+WNuz4nW3N0aWxsXSc7Civljb8+J1tub2JsZV0nOwor5Y6CPidbZmFjdG9yeV0nOwor5Y6EPidbYWR2ZXJzaXR5XSc7CivljpY+J1tidWxreV0nOwor5Y6YPidbdGhvdXNhbmR0aCBwYXJ0IG9mIHRhZWxdJzsKK+WOmj4nW3RoaWNrXSc7Civljp8+J1tzb3VyY2VdJzsKK+WOoD4nW21pbmdsZSB3aXRoXSc7CivljqU+J1twZXJzb25hbCBwcm9ub3VuIC0gaGVdJzsKK+WOpj4nW2JpZyBidWlsZGluZ10nOwor5Y6oPidba2l0Y2hlbl0nOwor5Y6pPidbc3RhYmxlXSc7Civljq0+J1tkaXNsaWtlXSc7Civljq4+J1tzZXJ2YW50XSc7CivljrA+J1tmYWN0b3J5XSc7CivljrM+J1tzdHJpY3RdJzsKK+WOtj4nW3ByaXZhdGVdJzsKK+WOuz4nW2dvIGF3YXldJzsKK+WPgj4nW3Rha2UgcGFydCBpbl0nOwor5Y+DPidbdGFrZSBwYXJ0IGluXSc7Civlj4g+J1thbmRdJzsKK+WPiT4nW2Nyb3RjaF0nOwor5Y+KPidbZXh0ZW5kXSc7Civlj4s+J1tmcmllbmRdJzsKK+WPjD4nW3NldCBvZiB0d29dJzsKK+WPjT4nW3JldmVyc2VdJzsKK+WPjj4nW2dhdGhlciB0b2dldGhlcl0nOwor5Y+UPidbZmF0aGVyJydzIHlvdW5nZXIgYnJvdGhlcl0nOwor5Y+WPidbdGFrZV0nOwor5Y+XPidbcmVjZWl2ZV0nOwor5Y+ZPidbZXhwcmVzc10nOwor5Y+bPidbcmViZWxdJzsKK+WPnz4nW29sZCBtYW5dJzsKK+WPoT4nW2FzdHV0ZV0nOwor5Y+iPidbYnVzaF0nOwor5Y+jPidbbW91dGhdJzsKK+WPpD4nW29sZF0nOwor5Y+lPidbc2VudGVuY2VdJzsKK+WPqD4nW3RhbGthdGl2ZV0nOwor5Y+pPidba25vY2tdJzsKK+WPqj4nW29ubHldJzsKK+WPqz4nW2NyeV0nOwor5Y+sPidbaW1wZXJpYWwgZGVjcmVlXSc7Civlj60+J1t0cnVtcGV0XSc7Civlj64+J1tleGhvcnQgb3IgZW5qb2luIHJlcGVhdGVkbHldJzsKK+WPrz4nW21heV0nOwor5Y+wPidbcGxhdGZvcm1dJzsKK+WPsT4nW3Njb2xkXSc7Civlj7I+J1toaXN0b3J5XSc7Civlj7M+J1tyaWdodF0nOwor5Y+2PidbdG8gaGFybW9uaXplXSc7Civlj7c+J1ttYXJrXSc7Civlj7g+J1t0YWtlIGNoYXJnZSBvZl0nOworIyLlj7k+J1tzaWdoXSciLAor5ZCBPidbaW50ZXJqZWN0aW9uIFwiQWxhcyFcIl0nOwor5ZCDPidbZWF0XSc7CivlkIQ+J1tlYWNoXSc7CivlkIg+J1tjb21iaW5lXSc7CivlkIk+J1tsdWNreV0nOwor5ZCKPidbY29uZG9sZV0nOwor5ZCLPidbaW5jaF0nOwor5ZCMPidbc2FtZV0nOwor5ZCNPidbbmFtZV0nOwor5ZCOPidbcXVlZW5dJzsKK+WQjz4nW2dvdmVybm1lbnQgb2ZmaWNpYWxdJzsKK+WQkD4nW3ZvbWl0XSc7CivlkJE+J1t0b3dhcmRdJzsKK+WQmz4nW3NvdmVyZWlnbl0nOwor5ZCdPidbc3Rpbmd5XSc7CivlkJ8+J1tzaW5nXSc7CivlkKA+J1tiYXJrXSc7CivlkKY+J1tub3RdJzsKK+WQqT4nW29yZGVyXSc7CivlkKs+J1tob2xkIGluIG1vdXRoXSc7CivlkKw+J1toZWFyXSc7CivlkK0+J1t0aHJvYXRdJzsKK+WQrj4nW3N1Y2sgd2l0aCBtb3V0aF0nOwor5ZC2PidbcmFpc2Ugdm9pY2VdJzsKK+WQuD4nW2luaGFsZV0nOwor5ZC5PidbYmxvd10nOwor5ZC7Pidba2lzc10nOwor5ZC8Pidbcm9hcl0nOwor5ZC9PidbXCJPTVwiXSc7CivlkL4+J1tpXSc7CivlkYA+J1twYXJ0aWNsZSB1c2VkIGV4cHJlc3Mgc3VycHJpc2VdJzsKK+WRgj4nW3N1cm5hbWVdJzsKK+WRhj4nW2R1bGxdJzsKK+WRiD4nW3N1Ym1pdF0nOwor5ZGJPidbb25lIG9mIHdhcnJpbmcgc3RhdGVzXSc7CivlkYo+J1t0ZWxsXSc7CivlkY4+J1tmb290XSc7CivlkZE+J1tzd2FsbG93XSc7CisjIuWRnD4nW3NvdW5kIG9mIGNyeWluZ10nIiwKK+WRqD4nW3pob3UgZHluYXN0eV0nOwor5ZGqPidbY3Vyc2VdJzsKKyMi5ZGwPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivlkbE+J1t3YWlsXSc7CivlkbM+J1t0YXN0ZV0nOwor5ZG1Pidbc2NvbGRdJzsKK+WRtj4nW3RhbGthdGl2ZV0nOwor5ZG3Pidbc3Vja10nOwor5ZG7PidbZ3JvYW5dJzsKK+WRvD4nW2JyZWF0aGUgc2lnaF0nOwor5ZG9PidbbGlmZV0nOwor5ZKAPidbc3Vja10nOwor5ZKEPidbbm9pc2Ugb2YgcmFnZV0nOwor5ZKGPidbcm9hcl0nOwor5ZKLPidbd2h5PyBob3c/IHdoYXQ/XSc7Civlkow+J1toYXJtb255XSc7Civlko4+J1tmYXVsdF0nOwor5ZKPPidbc2luZyBzb25nIG9yIHBvZW1dJzsKK+WSkD4nW2luc3RydWN0XSc7CivlkpI+J1tjdXJzZV0nOwor5ZKiPidbc291bmRdJzsKK+WSpD4nW3Njb2xkXSc7CivlkqU+J1tzb3VuZCBvZiBjYXRdJzsKK+WSqD4nW2lucXVpcmVdJzsKK+WSqz4nW2Zvb3QgbWVhc3VyZSBvZiBaaG91IGR5bmFzdHldJzsKK+WSrD4nW2JpdGVdJzsKK+WSrz4nW2ZpbmFsIHBhcnRpY2xlXSc7CivlkrI+J1tzbWlsZV0nOwor5ZKzPidbY291Z2hdJzsKK+WSuD4nW3RvZ2V0aGVyXSc7Civlkrw+J1tjaGF0XSc7Civlkr0+J1t0aHJvYXRdJzsKK+WSvj4nW2Egbm9pc2VdJzsKK+WTgD4nW3NhZF0nOwor5ZOBPidbYXJ0aWNsZV0nOwor5ZOCPidbc21pbGVdJzsKK+WThD4nW2NvYXhdJzsKK+WThz4nW3ZvbWl0XSc7Civlk4g+J1tzb3VuZCBvZiBsYXVnaHRlcl0nOwor5ZOJPidbZmluYWwgZXhjbGFtYXRvcnkgcGFydGljbGVdJzsKKyMi5ZOXPidbcnVzaGluZyBzb3VuZF0nIiwKK+WToT4nW21lbWJlcl0nOwor5ZOiPidbc3lsbGFibGVdJzsKK+WTpT4nW2VsZGVyIGJyb3RoZXJdJzsKK+WTpj4nW29oPyByZWFsbHk/IGlzIHRoYXQgc28/XSc7Civlk6g+J1t3aGlzdGxlXSc7Civlk6k+J1ttaWxlXSc7Civlk60+J1t3ZWVwXSc7Civlk64+J1tjb3VnaF0nOwor5ZOyPidbd2lzZV0nOwor5ZO6PidbY2hldyBmb29kXSc7Civlk70+J1tjaG9rZV0nOwor5ZSEPidbZmluYWwgcGFydGljbGUgb2YgYXNzZXJ0aW9uIHBhdGhha2FdJzsKK+WUhj4nW21ha2UgbWlzY2hpZWZdJzsKK+WUhz4nW2xpcHNdJzsKK+WUjz4nW3dlZXAgb3Igc29iXSc7CivllJA+J1t0YW5nIGR5bmFzdHldJzsKK+WUlD4nW2hvbGQgaW4gbW91dGhdJzsKK+WUlj4nW2R1bWJdJzsKK+WUrj4nW3NlbGxdJzsKK+WUrz4nW29ubHldJzsKK+WUsT4nW3NpbmddJzsKK+WUsz4nW2NyeSBvZiBiaXJkXSc7CivllLg+J1tyZWNpdGVdJzsKK+WUuT4nW3RvIHNtaWxlIGF0XSc7CivllL4+J1tzcGl0XSc7CivllYA+J1tnbmF3XSc7CivllYQ+J1t0byBwZWNrXSc7CisjIuWVhD4nW3RvIHBlY2tdJyIsCivllYY+J1tjb21tZXJjZV0nOwor5ZWMPidbYW5pbWFsIGRpc2Vhc2VdJzsKK+WVjz4nW2FzayAoYWJvdXQpXSc7CivllZM+J1tvcGVuXSc7CivllZY+J1tlYXRdJzsKK+WVlz4nW2VhdF0nOwor5ZWcPidbc2lwXSc7CisjIuWVnD4nW3NpcF0nIiwKK+WVoz4nW2hvbGQgaW4gbW91dGhdJzsKK+WVuz4nW29ubHldJzsKK+WVvD4nW3dlZXBdJzsKK+WVvj4nW3dhaWxpbmcgb2YgY2hpbGRdJzsKK+WWgD4nW3ZvbWl0XSc7CivlloM+J1trZWVwIHRhbGtpbmddJzsKK+WWhD4nW2dvb2RdJzsKK+WWhz4nW2hvcm5dJzsKK+WWiT4nW3Rocm9hdF0nOwor5ZaKPidbc2hvdXRdJzsKK+WWiz4nW25hZ10nOwor5ZaYPidbcGFudF0nOwor5ZaZPidbYmVha10nOwor5ZaaPidbY2FsbF0nOwor5ZacPidbbGlrZV0nOwor5ZadPidbZHJpbmtdJzsKK+WWnj4nW2NoaXJwaW5nIG9mIGluc2VjdHNdJzsKK+WWnz4nW2hlYXZlIHNpZ2hdJzsKK+WWpz4nW2xpdmVseV0nOwor5ZaoPidbd2FpbF0nOwor5ZapPidbbWV0YXBob3JdJzsKK+WWqj4nW21vdXJuaW5nXSc7Civllqs+J1tlYXRdJzsKK+WWrD4nW3RhbGxdJzsKK+WWrj4nW3NpbmdsZV0nOwor5ZawPidbdG8gZWF0XSc7CivllrY+J1tlbmNhbXBtZW50XSc7Civll4Q+J1tob2Fyc2Ugb2Ygdm9pY2VdJzsKK+WXhT4nW3NtZWxsXSc7Civll4c+J1ttaXNlcmx5XSc7Civll5Q+J1tiZSBhbmdyeSBhdF0nOwor5ZeaPidbc291bmQgb2YgY3J5aW5nXSc7Civll5w+J1tiZSBmb25kIG9mXSc7Civll58+J1tzaWdoXSc7Civll6M+J1t0byBjb25uZWN0XSc7Civll6Q+J1tsYXVnaCBhdF0nOwor5Ze3PidbbG91ZCBjbGFtb3JdJzsKK+WXuT4nW2NoYXR0ZXJdJzsKK+WXvT4nW2NvdWdoXSc7Civll74+J1t0byBzZXQgYSBkb2cgb25dJzsKK+WYhj4nW3NpZ2hdJzsKK+WYiT4nW2V4Y2VsbGVudF0nOwor5ZiUPidbdm9taXRdJzsKK+WYlj4nW2ludGVyamVjdGlvbiBvZiBhcHByb3ZhbCBvciBhZG1pXSc7CivlmJc+J1t0YXN0ZV0nOwor5ZiYPidbZXhoYWxlXSc7CivlmJs+J1tmaW5hbCBleGNsYW1hdG9yeSBwYXJ0aWNsZV0nOwor5ZipPidbcnVzaGluZyBzb3VuZF0nOwor5ZivPidbcm9hcl0nOwor5ZixPidbb3JkZXJdJzsKK+WYsj4nW3JpZGljdWxlXSc7CivlmLQ+J1ttb3V0aF0nOwor5Zi2PidbbmVpZ2hpbmcgb2YgYSBob3JzZV0nOwor5Zi4PidbdW5jbGVhcl0nOwor5ZmCPidbbWVldF0nOwor5ZmMPidbc2NvbGRdJzsKK+WZjj4nW2Nob2tlXSc7CivlmZA+J1tyZWNlcHRhY2xlXSc7CivlmZs+J1tiaXRlXSc7CivlmaQ+J1tjbG9zZV0nOwor5ZmoPidbcmVjZXB0YWNsZV0nOwor5ZmqPidbYmUgbm9pc3ldJzsKK+WZqz4nW2JlbGNoXSc7Civlmaw+J1tiaXRlXSc7CivlmbQ+J1tzcHVydF0nOwor5Zm4PidbbWV0cmljIHRvbl0nOwor5Zm6Pidbc3RvcnldJzsKK+WagD4nW2Vuam9pbl0nOwor5ZqGPidbZ2l2ZSBmb3J0aCBzb3VuZF0nOwor5ZqHPidbc2NhcmVdJzsKK+Waij4nW3RvIHBhbnRdJzsKK+Wajz4nW3NuZWV6ZV0nOwor5ZqUPidbc25lZXplXSc7CisjIuWanD4nW2JlIHNpbGVudF0nIiwKK+Waoj4nW2JhZ10nOwor5ZqlPidbc3dhbGxvd10nOwor5ZquPidbZ3VpZGVdJzsKK+WatD4nW3N0cmljdF0nOwor5Zq2Pidbc2VlayBmcmllbmRzXSc7Civlmrw+J1twcmF0dGxlXSc7Civlm4A+J1tzaW5nXSc7Civlm4E+J1ttb3ZlIGxpcCB3aGVuIHNwZWFraW5nXSc7Civlm4I+J1tiZSBub2lzeV0nOworIyLlm4I+J1tiZSBub2lzeV0nIiwKK+WbiD4nW3RhbGsgaW4gb25lJydzIHNsZWVwXSc7CisjIuWbjT4nW2RvdWJsZSBoYXBwaW5lc3NdJyIsCivlm5E+J1tvcmRlcl0nOwor5ZuTPidbZ25hd10nOwor5ZuXPidbZXJlY3RdJzsKK+WbmD4nW3JldHVybl0nOwor5ZuaPidbcHJpc29uZXJdJzsKK+Wbmz4nW2ZvdXJdJzsKK+Wbnj4nW3JldHVybl0nOwor5ZugPidbY2F1c2VdJzsKK+Wboz4nW3NwaGVyZV0nOwor5ZuuPidbaW52ZWlnbGVdJzsKK+WbsD4nW3N1cnJvdW5kXSc7Civlm7I+J1tzdXJyb3VuZF0nOwor5ZuzPidbZGlhZ3JhbV0nOwor5Zu5PidbcHJpc29uXSc7Civlm7o+J1tiZWNvbWUgc29saWRdJzsKK+WbvT4nW25hdGlvbl0nOwor5Zu/PidbcGVuIHVwXSc7CivlnIA+J1tuYXRpb25dJzsKK+Wcgz4nW2dhcmRlbl0nOwor5ZyEPidbcHJpc29uXSc7CivlnIg+J1t0byBjaXJjbGVdJzsKK+WciT4nW3N0YWJsZV0nOwor5ZyLPidbbmF0aW9uXSc7CivlnI0+J1tzdXJyb3VuZF0nOwor5ZyPPidbdG8gY2lyY2xlXSc7CivlnJI+J1tnYXJkZW5dJzsKK+Wckz4nW2NpcmNsZV0nOwor5ZyWPidbZGlhZ3JhbV0nOwor5ZyYPidbc3BoZXJlXSc7CivlnJw+J1tjaXJjbGVdJzsKK+Wcnz4nW3NvaWxdJzsKK+Wcpj4nWyhrb2t1amkpIHdhdGVyIGdhdGVdJzsKKyMi5ZymPidbKGtva3VqaSkgd2F0ZXIgZ2F0ZV0nIiwKK+WcqD4nW2JlIGF0XSc7CivlnK0+J1tqYWRlIHBvaW50ZWQgYXQgdG9wXSc7CivlnLA+J1tlYXJ0aF0nOworIyLlnLM+J1tmdXJyb3cgaW4gZmllbGRdJyIsCisjIuWcsz4nW2Z1cnJvdyBpbiBmaWVsZF0nIiwKK+Wcuz4nW2JvcmRlcl0nOwor5Z2APidbc2l0ZV0nOwor5Z2CPidbaGlsbHNpZGVdJzsKK+Wdhz4nW2VxdWFsXSc7CivlnYo+J1tuZWlnaGJvcmhvb2RdJzsKK+Wdjj4nW3BpdF0nOwor5Z2PPidbcm90dGVuXSc7CivlnZA+J1tzaXRdJzsKK+WdkT4nW3BpdF0nOwor5Z2hPidbc2xvcGVdJzsKK+WdpD4nW2VhcnRoXSc7CivlnaY+J1tmbGF0XSc7Civlnak+J1tlYXJ0aGVud2FyZV0nOwor5Z2qPidbbGV2ZWwgZ3JvdW5kXSc7Civlnb8+J1ttb3VuZF0nOwor5Z6CPidbbGV0IGRvd25dJzsKKyMi5Z6GPidbYmxhY2sgY2xvZHMgb2YgZWFydGhdJyIsCisjIuWeiT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor5Z6LPidbcGF0dGVybl0nOwor5Z6TPidbYm9yZGVyXSc7CivlnqA+J1tib3VuZGFyeV0nOwor5Z6iPidbZGlydF0nOwor5Z6jPidbbG93IHdhbGxdJzsKK+WepD4nW2FudC1oaWxsXSc7CisjIuWeqT4nW2hvbHldJyIsCisjIuWerj4nW2JlIGRlZmVhdGVkXSciLAorIyLlnrI+J1toaWdoIGFuZCBkcnkgcGxhY2VdJyIsCivln4A+J1tsZXQgZG93bl0nOwor5Z+DPidbZmluZSBkdXN0XSc7Civln4Y+J1tzdG9ueV0nOwor5Z+LPidbYnVyeV0nOwor5Z+OPidbY2FzdGxlXSc7Civln5I+J1tlbmNsb3N1cmVdJzsKK+Wfkz4nW2VuY2xvc3VyZV0nOwor5Z+UPidbcGxhaW5dJzsKKyMi5Z+UPidbcGxhaW5dJyIsCivln5w+J1tvcGVuIGNvdW50cnldJzsKK+Wfnz4nW2Rpc3RyaWN0XSc7Civln6A+J1twb3J0IGNpdHldJzsKKyMi5Z+jPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivln7Q+J1tzb2lsIHdpdGggbGFyZ2UgY2xheSBjb250ZW50XSc7Civln7c+J1tob2xkIGluIGhhbmRdJzsKK+WfuT4nW2JhbmsgdXAgd2l0aCBkaXJ0XSc7Civln7o+J1tmb3VuZGF0aW9uXSc7Civln7w+J1toZWFkbGFuZF0nOwor5aCAPidbY2F2ZV0nOwor5aCCPidbaGFsbF0nOwor5aCFPidbaGFyZF0nOwor5aCGPidbaGVhcF0nOwor5aCKPidbd2hpdGUgZWFydGhdJzsKK+Wgiz4nW2J1cnldJzsKK+WglT4nW2ZhbGxdJzsKK+WgmT4nW2J1cnldJzsKK+WgnT4nW2NydWNpYmxlXSc7CivloKE+J1tmb3J0XSc7CivloKQ+J1tkaWtlXSc7CivloKo+J1thZGVxdWF0ZWx5IGNhcGFibGUgb2ZdJzsKK+Wgrz4nW2EgbGVnZW5kYXJ5IGFuY2llbnQgZW1wZXJvci1zYWdlXSc7CivloLA+J1tkYW1dJzsKK+WgsT4nW3JlcG9ydF0nOwor5aC0Pidbb3BlbiBzcGFjZV0nOwor5aC1Pidbd2FsbF0nOwor5aC6PidbcGVyc29uJydzIG5hbWVdJzsKK+WgvT4nW21vdW5kXSc7CivloYA+J1t3YWxsXSc7CivloYE+J1tyYW1wYXJ0XSc7CivloYo+J1twaWVjZV0nOwor5aGLPidbZ3JhdmVdJzsKK+WhkT4nW21vZGVsIGluIGNsYXldJzsKK+Whkj4nW3Jvb3N0XSc7CivloZQ+J1t0b3dlcl0nOwor5aGXPidbc21lYXJdJzsKK+WhmD4nW3BvbmRdJzsKK+WhmT4nW3RydWx5XSc7CivloZo+J1tjZW1ldGVyeV0nOwor5aGePidbc3RvcCB1cF0nOwor5aGiPidbZW50cmVuY2htZW50XSc7Civloak+J1tzYWx0XSc7Civloas+J1tmaWxsIGluXSc7CisjIuWhrT4nW1tub3QgZm91bmQgaW4gYW55IGRpY3Rpb25hcnldXSciLAor5aGyPidbb3BlbiBzcGFjZV0nOwor5aG1PidbZHVzdF0nOwor5aG5PidbbW9hdF0nOwor5aG+PidbdmlsbGFnZSBzY2hvb2xdJzsKK+Wigz4nW2JvdW5kZXJ5XSc7CivlooU+J1t2aWxsYV0nOwor5aKTPidbZ3JhdmVdJzsKK+Wilz4nW2luY3JlYXNlXSc7Civlopw+J1tmYWxsIGRvd25dJzsKK+Winz4nW2hpZ2ggbW91bmRdJzsKK+WiqD4nW2lua10nOwor5aKrPidbY3VwXSc7Civloq4+J1tmYWxsXSc7CivlorM+J1tncmF2ZV0nOworIyLlorM+J1tncmF2ZV0nIiwKKyMi5aKzPidbZ3JhdmVdJyIsCivloro+J1s0IHdhbGxzXSc7Civlors+J1t3YWxsXSc7Civlor4+J1tjdWx0aXZhdGVdJzsKK+WjgT4nW3BhcnRpdGlvbiB3YWxsXSc7Civlo4U+J1t0byBvYnN0cnVjdF0nOwor5aOHPidbYWx0YXJdJzsKK+Wjij4nW2JhZF0nOwor5aOMPidbc29pbF0nOwor5aORPidbYmVkIG9mIHRvcnJlbnRdJzsKK+Wjkz4nW3ByZXNzXSc7Civlo5U+J1t0cmVuY2hdJzsKKyMi5aOWPidbb3BlbiBzcGFjZSBhbG9uZyB3YXRlcl0nIiwKK+WjmD4nW3JhbXBhcnRdJzsKK+WjmT4nW3RvbWJdJzsKK+WjnD4nW2VhcnRoZW4gamFyIG9yIGp1Z10nOwor5aOePidbYmFkXSc7Civlo58+J1tncmF2ZV0nOwor5aOkPidbc29pbF0nOworIyLlo6U+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+Wjqz4nW3NjaG9sYXJdJzsKK+WjrD4nW25pbnRoIG9mIHRlbiBjZWxlc3RpYWwgc3RlbXNdJzsKK+Wjrj4nW2JpZ10nOwor5aOvPidbYmlnXSc7Civlo7A+J1tzb3VuZF0nOwor5aOxPidbbnVtYmVyIG9uZV0nOwor5aOyPidbc2VsbF0nOwor5aO3PidbamFyXSc7Civlo7k+J1tudW1iZXIgb25lXSc7Civlo7o+J1tqYXJdJzsKK+Wjuz4nW3Nvbi1pbi1sYXddJzsKK+WjvD4nW3BhbGFjZSBjb3JyaWRvciBvciBwYXNzYWdld2F5XSc7Civlo70+J1tvbGQgYWdlXSc7CivlpII+J1tnb10nOwor5aSJPidbY2hhbmdlXSc7CivlpIo+J1tSYWRpY2FsIE5vLiAzNV0nOwor5aSPPidbc3VtbWVyXSc7CivlpJA+J1tsb25nXSc7CivlpJU+J1tldmVuaW5nXSc7CivlpJY+J1tvdXRdJzsKK+WkmD4nWzR0aCBvZiBFYXJ0aCBCcmFuY2hlc10nOwor5aSZPidbZWFybHkgaW4gbW9ybmluZ10nOwor5aSaPidbbXVjaF0nOwor5aSbPidbbXVjaF0nOwor5aScPidbbmlnaHRdJzsKK+Wkoj4nW2RyZWFtXSc7CivlpKU+J1tjb21wYW5pb25dJzsKK+Wkpz4nW2JpZ10nOwor5aSpPidbc2t5XSc7CivlpKo+J1t2ZXJ5XSc7CivlpKs+J1ttYW5dJzsKK+WkrD4nW3BhcnRlZF0nOwor5aStPidbeW91bmddJzsKK+Wkrj4nW2NlbnRlcl0nOwor5aSxPidbbG9zZV0nOwor5aSyPidbYWR2YW5jZSBxdWlja2x5XSc7CivlpLc+J1thbmNpZW50IGJhcmJhcmlhbiB0cmliZXNdJzsKK+WkuD4nW2V4dHJhdmFnYW50XSc7CivlpL4+J1tiZSB3ZWRnZWQgb3IgaW5zZXJ0ZWQgYmV0d2Vlbl0nOwor5aWEPidbZXJlIGxvbmddJzsKK+Wlhz4nW3N0cmFuZ2VdJzsKK+WliD4nW2J1dF0nOwor5aWJPidbb2ZmZXJdJzsKK+Wljj4nW3N0cmlkZSBvZiBtYW5dJzsKK+Wljz4nW21lbW9yaWFsaXplIGVtcGVyb3JdJzsKK+WlkD4nW2JlIG51bWVyb3VzXSc7CivlpZE+J1tkZWVkXSc7CivlpZQ+J1tydW4gZmFzdF0nOwor5aWVPidbaW4gc2VxdWVuY2VdJzsKK+Wllz4nW2Nhc2VdJzsKK+WlmD4nW2xhcmdlXSc7CivlpZo+J1t3aGVyZT8gd2hhdD8gaG93PyB3aHk/XSc7CivlpaA+J1twYXkgcmVzcGVjdF0nOwor5aWiPidbZXh0cmF2YWdhbnRdJzsKK+WlpT4nW215c3RlcmlvdXNdJzsKK+Wlpz4nW215c3RlcmlvdXNdJzsKK+WlqD4nW3ByaXplXSc7Civlpak+J1tsYWR5JydzIHZhbml0eSBjYXNlXSc7Civlpao+J1t0YWtlIGJ5IGZvcmNlXSc7Civlpaw+J1twcml6ZV0nOwor5aWuPidbc3RyaXZlXSc7CivlpbM+J1t3b21hbl0nOwor5aW0Pidbc2xhdmVdJzsKK+WluD4nW2NyYWZ0eV0nOwor5aW9PidbZ29vZF0nOwor5aaBPidbYWN0IGFzIGdvLWJldHdlZW5dJzsKK+Wmgj4nW2lmXSc7CivlpoM+J1t3aWZlXSc7CivlpoQ+J1thYnN1cmRdJzsKK+Wmij4nW2NvbmNlaXZlXSc7Civlpo0+J1tiZWF1dGlmdWxdJzsKK+Wmkz4nW3Byb3N0aXR1dGVdJzsKK+Wmlj4nW3N0cmFuZ2VdJzsKK+WmmT4nW215c3RlcmlvdXNdJzsKKyMi5aaZPidbbXlzdGVyaW91c10nIiwKK+WmnT4nW2Fkb3JuIG9uZXNlbGZdJzsKK+Wmoz4nW29uZScncyBkZWNlYXNlZCBtb3RoZXJdJzsKK+WmpT4nW3NhdGlzZmFjdG9yeV0nOwor5aaoPidbaW50ZXJmZXJlIHdpdGhdJzsKK+WmrD4nW2plYWxvdXNdJzsKK+Wmsj4nW2NvbmN1YmluZSBvZiBsYXN0IHJ1bGVyIG9mIHNoYW5nXSc7Civlprk+J1t5b3VuZ2VyIHNpc3Rlcl0nOwor5aa7Pidbd2lmZV0nOwor5aa+PidbY29uY3ViaW5lXSc7Civlp4Y+J1tjaGlsZCcncyBnb3Zlcm5lc3NdJzsKK+WniT4nW2VsZGVyIHNpc3Rlcl0nOwor5aeLPidbYmVnaW5dJzsKK+WnkD4nW2VsZGVyIHNpc3Rlcl0nOwor5aeRPidbZmF0aGVyJydzIHNpc3Rlcl0nOwor5aeTPidbb25lJydzIGZhbWlseSBuYW1lXSc7Civlp5Q+J1thcHBvaW50XSc7Civlp5k+J1tjb25jZWl2ZV0nOwor5aeaPidbaGFuZHNvbWVdJzsKK+WnnD4nW3N1cm5hbWVdJzsKK+WnpT4nW21hdGVybmFsIGdyYW5kbW90aGVyXSc7Civlp6Y+J1thZHVsdGVyeV0nOwor5aeoPidbbW90aGVyL3dpZmUnJ3Mgc2lzdGVyXSc7Civlp6o+J1tuaWVjZV0nOwor5aerPidbYmVhdXR5XSc7CisjIuWnsT4nW2JlYXV0aWZ1bF0nIiwKK+Wnuz4nW3JlbGF0aXZlcyBieSBtYXJyaWFnZV0nOwor5ae/Pidbb25lJydzIG1hbm5lcl0nOwor5aiBPidbcG9tcF0nOwor5aiDPidbYmFieV0nOwor5aiJPidbYmVhdXRpZnVsXSc7CivlqJE+J1tkYW5jZV0nOwor5aiYPidbbW90aGVyXSc7CisjIuWomj4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor5aicPidbZWxlZ2FudF0nOwor5aifPidbYmVhdXRpZnVsXSc7CivlqKA+J1twcmVnbmFudF0nOwor5ailPidbYmUgYmVhdXRpZnVsXSc7CivlqKk+J1tnaXZlIGJpcnRoIGNoaWxkXSc7CivlqK8+J1twbGVhc3VyZV0nOwor5ai1Pidbc3Rhcl0nOwor5ai2PidbbWFycnldJzsKK+WovD4nW3Byb3N0aXR1dGVdJzsKK+WpgD4nW2JlIGJlYXV0aWZ1bF0nOwor5amBPidbc3VybmFtZV0nOwor5amGPidbb2xkIHdvbWFuXSc7CivlqYk+J1thbWlhYmxlXSc7CivlqZo+J1tnZXQgbWFycmllZF0nOwor5amiPidbc2VydmFudCBnaXJsXSc7CivlqaY+J1ttYXJyaWVkIHdvbWVuXSc7Civlqao+J1tjb3ZldF0nOwor5amsPidbb2JzY2VuZV0nOwor5am/Pidbc29uLWluLWxhd10nOwor5aqSPidbZ28tYmV0d2Vlbl0nOwor5aqaPidbY2hhcm1pbmddJzsKK+Wqmz4nW2JlYXV0eV0nOwor5aq8Pidbb2xkIHdvbWFuXSc7Civlqr0+J1ttb3RoZXJdJzsKK+Wqvj4nW21hcnJ5XSc7Civlq4E+J1ttYXJyeV0nOwor5auCPidbc2lzdGVyLWluLWxhd10nOwor5auJPidbamVhbG91c3ldJzsKK+Wriz4nW3NsZW5kZXIgYW5kIGRlbGljYXRlXSc7Civlq4w+J1toYXRlXSc7Civlq5A+J1tmcm9saWNdJzsKK+Wrlj4nW3BhdHJvbml6ZSBwcm9zdGl0dXRlc10nOwor5auXPidbb2xkIHdvbWFuXSc7Civlq6E+J1tsZWdhbCB3aWZlXSc7Civlq6M+J1tjaGFybWluZ10nOwor5aumPidbbmFtZSBvZiBhIG1vb24gZ29kZGVzc10nOwor5aupPidbc29mdF0nOwor5au6PidbcmVmaW5lZF0nOwor5au7PidbZWxlZ2FudF0nOwor5ayJPidbZW5qb3ldJzsKK+Wsiz4nW2JlYXV0aWZ1bF0nOwor5ayMPidbc2VkdWN0aXZlIGFuZCBsb3ZlYWJsZV0nOwor5ayWPidbZmF2b3JpdGVdJzsKK+Wsoj4nW3Ryb3VibGVkXSc7CivlrKo+J1tjb3VydCBsYWR5XSc7CivlrKw+J1ttaXN0cmVzc10nOwor5aywPidbYmFieV0nOwor5ayyPidbZnJvbGljXSc7CisjIuWstD4nW3RvIHdpbl0nIiwKK+Wsvj4nW2xhenldJzsKK+WtgD4nW3dpZG93XSc7CivlrYM+J1t0cm91YmxlZF0nOwor5a2FPidbc2xlbmRlcl0nOwor5a2QPidbb2Zmc3ByaW5nXSc7CivlrZE+J1tyZW1haW5pbmddJzsKK+WtlD4nW29wZW5pbmddJzsKK+WtlT4nW2JlIHByZWduYW50XSc7CivlrZc+J1tsZXR0ZXJdJzsKK+WtmD4nW2V4aXN0XSc7CivlrZo+J1ticm9vZCBvdmVyIGVnZ3NdJzsKK+Wtmz4nW2NvbWV0XSc7CivlrZw+J1tiZSBhcyBkaWxpZ2VudCBhcyBwb3NzaWJsZV0nOwor5a2dPidbZmlsaWFsIHBpZXR5XSc7CivlrZ8+J1tmaXJzdCBpbiBzZXJpZXNdJzsKK+Wtoz4nW3F1YXJ0ZXIgb2YgeWVhcl0nOwor5a2kPidbb3JwaGFuXSc7CivlraU+J1tvbmUnJ3MgY2hpbGRyZW5dJzsKK+Wtpj4nW2xlYXJuaW5nXSc7Civlrak+J1tiYWJ5XSc7Civlras+J1tncmFuZGNoaWxkXSc7CivlrbA+J1t3aG8/IHdoaWNoPyB3aGF0PyB3aGljaCBvbmU/XSc7CivlrbE+J1t3ZWFrXSc7CivlrbM+J1ticmVlZCBpbiBsYXJnZSBudW1iZXJzXSc7CivlrbU+J1tzaXQgb24gZWdnc10nOwor5a24PidbbGVhcm5pbmddJzsKK+Wtuj4nW2NoaWxkXSc7CivlroA+J1tyb29mXSc7CivlroM+J1tpdF0nOwor5a6FPidbcmVzaWRlbmNlXSc7Civlroc+J1tob3VzZV0nOwor5a6IPidbZGVmZW5kXSc7Civlrok+J1twZWFjZWZ1bF0nOwor5a6LPidbU29uZyBkeW5hc3R5XSc7Civlrow+J1tjb21wbGV0ZV0nOwor5a6NPidbZmxlc2hdJzsKK+Wujz4nW3dpZGVdJzsKK+WulT4nW3N0b25lIHF1YXJyeV0nOwor5a6XPidbbGluZWFnZV0nOwor5a6YPidbb2ZmaWNpYWxdJzsKK+WumT4nW3RpbWUgYXMgY29uY2VwdF0nOwor5a6aPidbZGVjaWRlXSc7Civlrps+J1tzZWVtXSc7Civlrpw+J1tzdWl0YWJsZV0nOwor5a6dPidbdHJlYXN1cmVdJzsKK+Wunz4nW3JlYWxdJzsKK+Wuoj4nW2d1ZXN0XSc7CivlrqM+J1tkZWNsYXJlXSc7CivlrqQ+J1tyb29tXSc7CivlrqU+J1tmb3JnaXZlXSc7CivlrqY+J1tvZmZpY2lhbGRvbV0nOwor5a6uPidbcGFsYWNlXSc7CivlrrA+J1t0byBzbGF1Z2h0ZXJdJzsKK+Wusz4nW2luanVyZV0nOwor5a60PidbZW50ZXJ0YWluXSc7CivlrrU+J1tuaWdodF0nOwor5a62PidbaG91c2VdJzsKK+WuuD4nW2ltcGVyaWFsXSc7Civlrrk+J1tsb29rc10nOwor5a6/Pidbc3RvcF0nOwor5a+CPidbc3RpbGxdJzsKK+Wvgz4nW2dyaWV2YW5jZV0nOwor5a+EPidbc2VuZF0nOwor5a+FPidbcmVzcGVjdF0nOwor5a+GPidbZGVuc2VdJzsKK+Wvhz4nW2JhbmRpdHNdJzsKKyMi5a+JPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivlr4w+J1thYnVuZGFudF0nOwor5a+QPidbc2xlZXBdJzsKK+Wvkj4nW2NvbGRdJzsKK+Wvkz4nW3Jlc2lkZW5jZV0nOwor5a+UPidbcmVhbF0nOwor5a+bPidbYnJvYWRdJzsKK+WvnT4nW3NsZWVwXSc7Civlr54+J1tzaWxlbnRdJzsKK+Wvnz4nW2V4YW1pbmVdJzsKK+WvoT4nW3dpZG93ZWRdJzsKK+Wvoj4nW3NsZWVwXSc7Civlr6Q+J1tmZXddJzsKK+WvpT4nW2Zld10nOwor5a+mPidbcmVhbF0nOwor5a+nPidbcmVwb3NlXSc7Civlr6g+J1tzdG9ja2FkZV0nOwor5a+pPidbZXhhbWluZV0nOwor5a+rPidbd3JpdGVdJzsKK+Wvrj4nW3NoYW50eV0nOwor5a+wPidbZ3JlYXQgZG9tYWluXSc7Civlr7M+J1t0cmVhc3VyZV0nOwor5a+1PidbZmF2b3JpdGVdJzsKK+Wvtj4nW3RyZWFzdXJlXSc7Civlr7g+J1tpbmNoXSc7Civlr7o+J1tjb3VydF0nOwor5a++PidbY29ycmVjdF0nOwor5a+/Pidbb2xkIGFnZV0nOwor5bCBPidbbGV0dGVyXSc7CivlsII+J1ttb25vcG9saXplXSc7CivlsIQ+J1tzaG9vdF0nOwor5bCFPidbc3ViZHVlXSc7CivlsIY+J1t3aWxsXSc7CivlsIc+J1t3aWxsXSc7CivlsIg+J1ttb25vcG9saXplXSc7CivlsIk+J1tvZmZpY2VyXSc7CivlsIo+J1tyZXNwZWN0XSc7CivlsIs+J1tzZWVrXSc7CivlsI0+J1tjb3JyZWN0XSc7CivlsI4+J1tkaXJlY3RdJzsKK+Wwjz4nW3NtYWxsXSc7CivlsJE+J1tmZXddJzsKK+Wwkz4nW3lvdV0nOwor5bCWPidbc2hhcnBdJzsKK+Wwmj4nW3N0aWxsXSc7CivlsKA+J1t2ZXJ5IGZld10nOwor5bCiPidbd2Vha10nOwor5bCkPidbZXNwZWNpYWxseV0nOwor5bCoPidbc2hhZ2d5IGhhaXJlZCBkb2ddJzsKK+WwrT4nW2EgbGVnZW5kYXJ5IGFuY2llbnQgZW1wZXJvci1zYWdlXSc7CivlsLE+J1tqdXN0XSc7CivlsLg+J1tjb3Jwc2VdJzsKK+WwuT4nW2dvdmVybl0nOwor5bC6PidbY2hpbmVzZSBtZWFzdXJlIGFwcHJveC4gXCJmb290XCJdJzsKK+Wwuz4nW2VuZCBvZiBzcGluZV0nOwor5bC8PidbYnVkZGhpc3QgbnVuXSc7CivlsL0+J1tleGhhdXN0XSc7CivlsL4+J1t0YWlsXSc7CivlsL8+J1t1cmluZV0nOwor5bGAPidbYnVyZWF1XSc7CivlsYE+J1ticmVhayB3aW5kXSc7CivlsYU+J1tsaXZlXSc7CivlsYY+J1tudW1lcmFyeSBhZGp1bmN0IGZvciB0aW1lXSc7CivlsYg+J1tiZW5kXSc7CivlsYo+J1tudW1lcmFyeSBhZGp1bmN0IGZvciB0aW1lXSc7CivlsYs+J1tob3VzZV0nOwor5bGNPidbY29ycHNlXSc7CivlsY4+J1tleGNyZW1lbnRdJzsKK+Wxjz4nW2ZvbGRpbmcgc2NyZWVuXSc7CivlsZA+J1t3b29kZW4gc2hvZXNdJzsKK+WxkT4nW2JpdHNdJzsKK+Wxkz4nW2dpZ2FudGljIHN0cmVuZ3RoXSc7CivlsZU+J1tvcGVuXSc7CivlsZ4+J1tjbGFzc10nOwor5bGgPidbYnV0Y2hlcl0nOwor5bGhPidbZnJlcXVlbnRseV0nOwor5bGkPidbc3RvcmV5XSc7CivlsaU+J1tmb290d2Vhcl0nOwor5bGsPidbY2xhc3NdJzsKK+Wxrj4nW3Nwcm91dF0nOwor5bGvPidbdmlsbGFnZV0nOwor5bGxPidbbW91bnRhaW5dJzsKK+Wxtj4nW2xvZnR5XSc7Civlsbk+J1t0byByaXNlIGhpZ2hdJzsKK+WyjD4nW3Blcmlsb3VzXSc7CivlspA+J1toaWdoXSc7CivlspE+J1tzdGVlcF0nOwor5bKUPidbZGl2ZXJnZV0nOwor5bKhPidbcmlkZ2Ugb3IgY3Jlc3Qgb2YgaGlsbF0nOwor5bKoPidbdW5ldmVuXSc7Civlsqk+J1tjbGlmZl0nOwor5bKrPidbbW91bnRhaW4gcGVha10nOwor5bKsPidbY2FwZV0nOwor5bKxPidbZGFpc2hhbiBvbmUgb2YgZml2ZSBzYWNyZWQgbW91bnRdJzsKK+Wysz4nW21vdW50YWluIHBlYWtdJzsKKyMi5bK2PidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivlsrc+J1ttaW4gbW91bnRhaW5dJzsKK+WyuD4nW2JhbmtdJzsKKyMi5bK6PidbbW91bnRhaW4gcmlkZ2VdJyIsCisjIuWyuj4nW21vdW50YWluIHJpZGdlXSciLAor5bK+PidbbW91bnRhaW4gcGFzcyAoa29yZWFuKV0nOworIyLls4Q+J1tyYW5nZSBvZiBwZWFrc10nIiwKK+Wzhz4nW2NhdmVdJzsKK+WzmT4nW3N0YW5kIGVyZWN0XSc7Civls6A+J1ttb3VudGFpbiBwYXNzXSc7Civls6E+J1tnb3JnZV0nOwor5bOoPidbbG9mdHldJzsKK+WzqT4nW2xvZnR5XSc7Civls6o+J1t2YWxsZXldJzsKK+WzrT4nW3N0ZWVwXSc7Civls68+J1twZWFrXSc7Civls7A+J1twZWFrXSc7Civls7Y+J1tpc2xhbmRdJzsKKyMi5bO6PidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivls7s+J1toaWdoXSc7Civls70+J1tnb3JnZV0nOwor5bSHPidbZXN0ZWVtXSc7CivltIs+J1tmbG93ZXJ5XSc7CivltI4+J1tyb3VnaF0nOwor5bSRPidbS3VubHVuIG1vdW50YWlucyBpbiBKaWFuZyBTdSBwcm92aW5jZS5dJzsKK+W0lD4nW2hpZ2hdJzsKK+W0lT4nW2NsaWZmXSc7CivltJY+J1tjbGlmZl0nOwor5bSXPidbcG9zdF0nOwor5bSYPidba3VubHVuIG1vdW50YWlucyBpbiBqaWFuZ3N1XSc7CivltJk+J1trdW5sdW4gbW91bnRhaW5zIGluIGppYW5nc3VdJzsKK+W0mj4nW2hpbGx5XSc7CivltJs+J1t0b3dlcmluZ10nOwor5bSfPidbY2xpZmZzXSc7CivltKI+J1toaWdoXSc7CivltKk+J1tydXB0dXJlXSc7CivltYs+J1tvbWVpIG1vdW50YWluIGluIHNpY2h1YW5dJzsKK+W1jD4nW2lubGF5XSc7CivltY4+J1ttb3VudGFpbiByZWNlc3NdJzsKK+W1kD4nW21vdW50YWluIG1pc3RdJzsKK+W1kj4nW2NsaWZmXSc7CivltZw+J1tyb3VnaF0nOwor5bWpPidbaGlnaF0nOwor5bWsPidbaGlnaF0nOwor5bWvPidbaGlnaF0nOwor5bWzPidbaGlnaF0nOwor5bW2PidbbG93IHBhcnQgb2YgYSBtb3VudGFpbl0nOwor5baCPidbY2xpZmZdJzsKK+W2hD4nW2hpZ2hdJzsKK+W2hz4nW3N0ZWVwXSc7Civltos+J1tpc2xhbmRdJzsKK+W2jD4nW2lzbGFuZF0nOworIyLltpA+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+W2nT4nW3BhdGggbGVhZGluZyB1cCBhIG1vdW50YWluXSc7CivltqI+J1toaWdoIG9yIHRhbGxdJzsKKyMi5basPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivltq4+J1toaWdoXSc7Civltrc+J1tyYW5nZSBvZiBtb3VudGFpbnMgaW4gaHVuYW4gcHJvdl0nOwor5ba6PidbbW91bnRhaW4gcmlkZ2VdJzsKK+W2vD4nW2lzbGFuZF0nOwor5ba9PidbbW91bnRhaW4gcGVha10nOwor5beJPidbc3RlZXBdJzsKK+W3jD4nW2NsaWZmXSc7Civlt40+J1toaWdoXSc7Civlt5I+J1ttb3VudGFpbiByYW5nZV0nOwor5beTPidbc3VtbWl0IG9mIG1vdW50YWluXSc7Civlt5Y+J1tjbGlmZl0nOwor5bebPidbcml2ZXJdJzsKK+W3nT4nW3N0cmVhbV0nOwor5beePidbYWRtaW5pc3RyYXRpdmUgZGl2aXNpb25dJzsKK+W3oT4nW3BhdHJvbF0nOwor5bejPidbbmVzdF0nOwor5belPidbbGFib3JdJzsKK+W3pj4nW2xlZnRdJzsKK+W3pz4nW3NraWxsZnVsXSc7Civlt6g+J1tsYXJnZV0nOwor5berPidbd2l6YXJkXSc7Civlt64+J1tkaWZmZXJdJzsKK+W3sT4nW3NlbGZdJzsKK+W3sj4nW2FscmVhZHldJzsKK+W3sz4nW3NpeHRoIG9mIHR3ZWx2ZSBicmFuY2hlc10nOwor5be0PidbZ3JlYXRseSBkZXNpcmVdJzsKK+W3tT4nW21lYXN1cmluZyBjdXBdJzsKK+W3tz4nW2FsbGV5XSc7Civlt7s+J1tzY3JvbGxdJzsKK+W3vT4nWzV0aCBvZiB0aGUgOCB0cmlncmFtc10nOwor5be+Pidba2VyY2hpZWZdJzsKK+W4gj4nW21hcmtldF0nOwor5biDPidbY290dG9uIGNsb3RoXSc7CivluIY+J1tzYWlsXSc7CivluIs+J1twYXBlcl0nOwor5biMPidbcmFyZV0nOwor5biRPidbYSB0cmVhc3VyeV0nOwor5biWPidbaW52aXRhdGlvbiBjYXJkXSc7CivluJk+J1tib29rIGNvdmVyXSc7CivluJo+J1ticm9vbV0nOwor5bibPidbc2lsa3NdJzsKK+W4nT4nW3N1cHJlbWUgcnVsZXJdJzsKK+W4pT4nW2NvbW1hbmRlcl0nOwor5birPidbdGVhY2hlcl0nOwor5bitPidbc2VhdF0nOwor5bivPidbYmVsdF0nOwor5biwPidbcmV0dXJuXSc7CivluLM+J1t0ZW50XSc7CivluLY+J1tiZWx0XSc7CivluLc+J1t0ZW50XSc7CivluLg+J1tjb21tb25dJzsKK+W4vT4nW2hhdF0nOwor5bmAPidbcGljdHVyZV0nOwor5bmDPidbY3VydGFpbiB0aGF0IGZvcm1zIHdhbGxdJzsKK+W5hD4nW3RlbnRdJzsKK+W5hT4nW3BpZWNlXSc7CivluYc+J1toZWxwXSc7CivluYw+J1tjdXJ0YWluXSc7CivluY4+J1tjb3Zlci1jbG90aF0nOwor5bmUPidbY3VydGFpbl0nOwor5bmVPidbY3VydGFpbl0nOwor5bmXPidbd29tZW4nJ3MgaGVhZGdlYXJdJzsKK+W5nz4nW2ZsYWddJzsKK+W5oT4nW3Blbm5hbnRdJzsKK+W5oj4nW2NhcnJpYWdlIGN1cnRhaW5dJzsKK+W5oz4nW2N1cnJlbmN5XSc7CivluaQ+J1tldmlsXSc7CivlubI+J1tvcHBvc2VdJzsKK+W5sz4nW2ZsYXRdJzsKK+W5tD4nW3llYXJdJzsKK+W5tT4nW2V2ZW4gbGV2ZWwuIHRvIHJhaXNlIGluIGJvdGggaGFuZHNdJzsKK+W5tj4nW2NvbWJpbmVdJzsKK+W5uD4nW2x1Y2soaWx5KV0nOwor5bm5PidbdHJ1bmsgb2YgdHJlZSBvciBvZiBodW1hbiBib2R5XSc7Civlubo+J1tvbmVdJzsKK+W5uz4nW2lsbHVzaW9uXSc7Civlubw+J1tpbmZhbnRdJzsKK+W5vT4nW3F1aWV0XSc7Civlub4+J1tob3cgbWFueT8gaG93IG11Y2g/IChhKWZld10nOwor5bm/Pidbd2lkZV0nOwor5bqBPidbaGFsbF0nOwor5bqDPidbYnJvYWRdJzsKK+W6hD4nW3ZpbGxhZ2VdJzsKK+W6hz4nW2NvdmVyXSc7Civluoo+J1tiZWRdJzsKK+W6jz4nW3Nlcmllc10nOwor5bqVPidbYm90dG9tXSc7CivlupY+J1traXRjaGVuXSc7Civlupc+J1tzaG9wXSc7Civlupo+J1tzZXZlbnRoIG9mIHRlbiBjeWNsaWNhbCBzdGVtc10nOwor5bqcPidbcHJlZmVjdHVyZV0nOwor5bqgPidbdmlsbGFnZSBzY2hvb2xdJzsKK+W6pj4nW2RlZ3JlZV0nOwor5bqnPidbc2VhdF0nOwor5bqrPidbYXJtb3J5XSc7Civluq0+J1tjb3VydHlhcmRdJzsKK+W6tT4nW2J1ZGRoaXN0IG1vbmFzdGVyeSBvciBudW5uZXJ5XSc7CivlurY+J1tudW1lcm91c10nOwor5bq3PidbcGVhY2VmdWxdJzsKK+W6uD4nW3VzdWFsXSc7Civlu4E+J1t0b2lsZXRdJzsKK+W7gj4nW3NpZGUtcm9vbV0nOwor5buDPidbYWJyb2dhdGVdJzsKK+W7iD4nW2JpZyBidWlsZGluZ10nOwor5buJPidbdXByaWdodF0nOwor5buKPidbY29ycmlkb3JdJzsKK+W7jz4nW3N0YWJsZV0nOwor5buQPidbc3RhYmxlXSc7Civlu5M+J1ticm9hZF0nOwor5buWPidbc3VybmFtZV0nOwor5buaPidba2l0Y2hlbl0nOwor5bubPidbc3RvcmVdJzsKK+W7nT4nW3NlcnZhbnRdJzsKK+W7nz4nW3RlbXBsZV0nOwor5bugPidbZmFjdG9yeV0nOwor5buhPidbY29ycmlkb3JdJzsKK+W7oj4nW2Ficm9nYXRlXSc7Civlu6M+J1ticm9hZF0nOwor5buoPidbZ292ZXJubWVudCBvZmZpY2VdJzsKK+W7qT4nW2dyYW5hcnldJzsKK+W7rD4nW2h1dF0nOwor5buwPidbaGFsbF0nOwor5buxPidbaGFybW9uaW91c10nOwor5buzPidbaGFsbF0nOwor5bu0PidbZ29dJzsKK+W7tj4nW2RlbGF5XSc7Civlu7c+J1tjb3VydF0nOwor5bu4PidbZW5saWdodGVuXSc7Civlu7o+J1tidWlsZF0nOwor5bu7PidbY2lyY2xlIGFyb3VuZF0nOwor5bu8PidbdGhlbl0nOwor5bu+PidbdHdvIGhhbmRzXSc7Civlu78+J1t0d2VudHldJzsKK+W8gT4nW2NvbmljYWwgY2FwIHdvcm4gdW5kZXIgemhvdSBkeW5hXSc7CivlvIM+J1tyZWplY3RdJzsKK+W8hD4nW2RvXSc7CivlvIk+J1tsYXJnZV0nOwor5byKPidbZXZpbF0nOwor5byLPidbY2F0Y2hdJzsKK+W8jD4nW251bWJlciBvbmVdJzsKK+W8jT4nW251bWJlciB0d29dJzsKK+W8jz4nW3N0eWxlXSc7CivlvJA+J1tudW1iZXIgdHdvXSc7CivlvJE+J1t0byBraWxsIG9uZScncyBzdXBlcmlvcl0nOwor5byTPidbYm93XSc7CivlvJQ+J1tjb25kb2xlXSc7CivlvJU+J1twdWxsXSc7CivlvJY+J1twaG9uZXRpYyBmb3IgXCJ0ZVwiIChKYXBhbmVzZSldJzsKK+W8lz4nW25vdF0nOwor5byYPidbZW5sYXJnZV0nOwor5bybPidbbG9vc2VuXSc7CivlvJ8+J1t5b3VuZyBicm90aGVyXSc7CivlvKU+J1tleHRlbnNpdmVdJzsKK+W8pj4nW3N0cmluZ10nOwor5bynPidbd29vZGVuIGJvd10nOwor5bypPidbY3Jvc3MtYm93XSc7CivlvK0+J1tzdG9wXSc7CivlvK8+J1tiZW5kXSc7CivlvLE+J1t3ZWFrXSc7CivlvLU+J1tzdHJldGNoXSc7CivlvLc+J1tzdHJvbmddJzsKK+W8uD4nW2JvdyBzdHJldGNoZWQgZnVsbF0nOwor5by8PidbYWlkXSc7CisjIuW8vD4nW2FpZF0nIiwKKyMi5b2BPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivlvYg+J1twZWxsZXRdJzsKK+W9ij4nW3N0dWJib3JuXSc7CivlvYw+J1tleHRlbnNpdmVdJzsKK+W9jj4nW2JlbmRdJzsKK+W9kT4nW3Nub3V0XSc7CivlvZM+J1tiZWFyXSc7CivlvZY+J1thIGhvZ10nOwor5b2XPidbYnJvb21zdGlja10nOwor5b2ZPidbY29sbGVjdF0nOwor5b2cPidbeWldJzsKK+W9nT4nW3lpXSc7CivlvaE+J1toYWlyXSc7CivlvaI+J1tmb3JtXSc7CivlvaY+J1tlbGVnYW50XSc7Civlvak+J1todWVdJzsKK+W9qj4nW3RpZ2VyXSc7Civlvas+J1tjYXJ2ZV0nOwor5b2sPidbY3VsdGl2YXRlZF0nOwor5b2tPidbbmFtZSBvZiBhbmNpZW50IGNvdW50cnldJzsKK+W9sD4nW2NsZWFyXSc7CivlvbE+J1tzaGFkb3ddJzsKK+W9sz4nW3N0ZXAgd2l0aCBsZWZ0IGZvb3RdJzsKK+W9tz4nW2xpa2VdJzsKK+W9uT4nW3NlcnZpY2VdJzsKK+W9vD4nW3RoYXRdJzsKK+W9vz4nW3Jlc2VtYmxpbmddJzsKK+W+gD4nW2dvXSc7CivlvoE+J1tpbnZhZGVdJzsKK+W+gj4nW2dvXSc7CivlvoM+J1tnb10nOwor5b6EPidbbmFycm93IHBhdGhdJzsKK+W+hT4nW3RyZWF0XSc7Civlvoc+J1tjb21wbHkgd2l0aF0nOwor5b6IPidbdmVyeV0nOwor5b6KPidbbGluZ2VyXSc7Civlvos+J1tzdGF0dXRlXSc7Civlvow+J1tiZWhpbmRdJzsKK+W+kD4nW3Nsb3dseV0nOwor5b6RPidbbmFycm93IHBhdGhdJzsKK+W+kj4nW2Rpc2NpcGxlXSc7CivlvpM+J1tmcm9tXSc7Civlvpc+J1tvYnRhaW5dJzsKK+W+mD4nW3dhbGsgYmFjayBhbmQgZm9ydGhdJzsKK+W+mT4nW21vdmUgb25lJydzIGFib2RlXSc7Civlvp4+J1tmcm9tXSc7CivlvqA+J1tpbmR1Y2VdJzsKK+W+oT4nW2RyaXZlXSc7Civlvqg+J1tkb3VidGZ1bF0nOwor5b6pPidbcmV0dXJuXSc7Civlvqo+J1tvYmV5XSc7Civlvq0+J1tjb25zY3JpcHQgbGFib3JdJzsKK+W+rj4nW3NtYWxsXSc7CivlvrM+J1t2aXJ0dWVdJzsKK+W+tD4nW3N1bW1vbl0nOwor5b65PidbcGVuZXRyYXRlXSc7Civlvrw+J1tmcm9udGllcl0nOwor5b69PidbYSBiYWRnZV0nOwor5b+DPidbaGVhcnRdJzsKK+W/hT4nW3N1cmVseV0nOwor5b+MPidbamVhbG91c10nOwor5b+NPidbZW5kdXJlXSc7Civlv5Y+J1tndWVzc10nOwor5b+XPidbcHVycG9zZV0nOwor5b+YPidbZm9yZ2V0XSc7Civlv5k+J1tidXN5XSc7Civlv5w+J1tzaG91bGRdJzsKK+W/nT4nW2Rpc2dyYWNlXSc7Civlv6A+J1tsb3lhbHR5XSc7Civlv6Q+J1tpbnN1Ym9yZGluYXRlXSc7Civlv6s+J1tyYXBpZF0nOwor5b+wPidbc3VmZmVyXSc7Civlv7E+J1t0cnV0aF0nOwor5b+1PidbdGhpbmsgb2ZdJzsKK+W/uD4nW2JsdXNoXSc7Civlv7s+J1tkZWxpZ2h0ZnVsXSc7Civlv70+J1tzdWRkZW5seV0nOwor5b+/PidbZ2V0IGFuZ3J5XSc7CivmgI4+J1t3aGF0PyB3aHk/IGhvdz9dJzsKK+aAjz4nW2Rpc2NvbnRlbnRlZF0nOworIyLmgJA+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+aAkj4nW2FuZ2VyXSc7CivmgJU+J1tmZWFyXSc7CivmgJY+J1t0ZXJyb3JdJzsKK+aAmT4nW3JlbHkgb25dJzsKK+aAmz4nW2dyaWV2ZWRdJzsKK+aAnD4nW3BpdHldJzsKK+aAnT4nW3RoaW5rXSc7CivmgKA+J1tpZGxlXSc7CivmgKE+J1toYXJtb255XSc7CivmgKU+J1txdWlja10nOwor5oCmPidbZWFnZXJdJzsKK+aApz4nW25hdHVyZV0nOwor5oCoPidbaGF0cmVkXSc7CivmgKk+J1tzaHldJzsKK+aAqj4nW3N0cmFuZ2VdJzsKK+aAqz4nW3NvcnJ5XSc7CivmgK8+J1tsYWNraW5nIGluIGNvdXJhZ2VdJzsKK+aAsT4nW2hhc3RpbHldJzsKK+aAuj4nW3RvIGVuZHVyZV0nOwor5oGBPidbdGhhdF0nOwor5oGCPidbY2FyZWZ1bF0nOwor5oGDPidbcmVseSBvbl0nOwor5oGGPidbY29uc3RhbnRdJzsKK+aBij4nW2JlIHVuaXRlZF0nOwor5oGLPidbbG92ZV0nOwor5oGNPidbc2VlbWluZ2x5XSc7CivmgZA+J1tmZWFyXSc7CivmgZI+J1tjb25zdGFudF0nOwor5oGVPidbZm9yZ2l2ZV0nOwor5oGZPidbaWxsbmVzc10nOwor5oGaPidbYW5nZXJdJzsKK+aBnz4nW3NjYXJlZF0nOwor5oGgPidbc3RyYW5nZV0nOwor5oGiPidbcmVzdG9yZV0nOwor5oGjPidbaW5kdWxnZSBvbmVzZWxmXSc7CivmgaQ+J1tzaG93IHBpdHldJzsKK+aBpT4nW3NoYW1lXSc7Civmgag+J1toYXRyZWRdJzsKK+aBqT4nW2tpbmRuZXNzXSc7Civmgao+J1tyZXNwZWN0ZnVsXSc7Civmgas+J1tpbiBwYWluXSc7Civmgaw+J1txdWlldF0nOwor5oGtPidbcmVzcGVjdGZ1bF0nOwor5oGvPidbcmVzdF0nOwor5oGwPidbanVzdF0nOwor5oG1PidbZmF2b3JdJzsKKyMi5oG2PidbZXZpbF0nIiwKK+aCgT4nW2lycml0YWJsZV0nOwor5oKDPidbc2luY2VyZV0nOwor5oKEPidbc2lsZW50XSc7Civmgok+J1trbm93XSc7Civmgos+J1tzdGluZ3ldJzsKK+aCjD4nW2Jyb3RoZXJseV0nOwor5oKNPidbY291cmFnZW91c10nOwor5oKSPidbc29ycm93ZnVsXSc7CivmgpQ+J1tyZXBlbnRdJzsKK+aClj4nW2JlIGNvbnRyYWRpY3RvcnkgdG9dJzsKKyMi5oKWPidbYmUgY29udHJhZGljdG9yeSB0b10nIiwKK+aCmj4nW2JlIGFmcmFpZF0nOwor5oKbPidbcmVwZW50XSc7Civmgp8+J1thcHByZWhlbmRdJzsKK+aCoD4nW2xvbmddJzsKK+aCoz4nW3N1ZmZlcl0nOwor5oKmPidbcGxlYXNlZF0nOwor5oKnPidbc21vb3RoXSc7Civmgqk+J1thbmdlcmVkXSc7Civmgqo+J1tldmlsXSc7CivmgrI+J1tzb3Jyb3ddJzsKK+aCsz4nW2V0aGljc10nOwor5oK0Pidbc3VmZmVyXSc7CivmgrU+J1tkaXNhcHBvaW50ZWRdJzsKK+aCtj4nW2dsb29teV0nOwor5oK4PidbZmVhcmZ1bF0nOwor5oK8PidbZ3JpZXZlXSc7Civmgr0+J1tzb3Jyb3dmdWxdJzsKK+aDhT4nW2ZlZWxpbmddJzsKK+aDhj4nW2Rpc3RyZXNzZWRdJzsKK+aDhz4nW2JlIGtpbmRdJzsKK+aDkT4nW2NvbmZ1c2VdJzsKK+aDkz4nW2NhcmVmdWxdJzsKK+aDmD4nW2Rpc2NvbmNlcnRlZF0nOwor5oOaPidbYWJzZW50LW1pbmRlZF0nOwor5oOcPidbcGl0eV0nOwor5oOfPidbYnV0XSc7Civmg6A+J1tmYXZvcl0nOwor5oOhPidbZXZpbF0nOwor5oOjPidbb3ZlcmFsbCBbcXVlc3Rpb25hYmxlIHZhcmlhbnRdXSc7Civmg6c+J1tmZWFyXSc7Civmg6g+J1tzYWRdJzsKK+aDsD4nW2luZG9sZW50XSc7Civmg7E+J1thbmdlcmVkXSc7Civmg7M+J1t0aGlua10nOwor5oO0PidbYWZyYWlkXSc7Civmg7Y+J1tmZWFyZnVsXSc7Civmg7c+J1t3cmlnZ2xlXSc7Civmg7k+J1tpcnJpdGF0ZV0nOwor5oO6PidbaW50ZWxsaWdlbnRdJzsKK+aDuz4nW2ZlZWwgYW5ndWlzaF0nOwor5oSAPidbY2hhbmdlIG9uZScncyBjb3VudGVuYW5jZV0nOwor5oSBPidbYW54aWV0eV0nOwor5oSDPidbcmVsYXhdJzsKK+aEhj4nW2ZhdWx0XSc7CivmhIg+J1ttb3JlIGFuZCBtb3JlXSc7CivmhIk+J1twbGVhc2FudF0nOwor5oSNPidbcGl0eV0nOwor5oSOPidbb2JzdGluYXRlXSc7CivmhI8+J1t0aG91Z2h0XSc7CivmhJU+J1tzdGFydGxlZF0nOwor5oSaPidbc3R1cGlkXSc7CivmhJs+J1tsb3ZlXSc7CivmhJ8+J1tmZWVsXSc7CivmhKE+J1thYnNlbnQtbWluZGVkXSc7CivmhKc+J1thc2hhbWVkXSc7CivmhKg+J1tzaW5jZXJpdHldJzsKK+aErD4nW2FjY3VzZV0nOwor5oS0Pidbc2FkXSc7CivmhLw+J1thY3Qgd2l0aCBjYXJlXSc7CivmhL0+J1tnYW1ibGVdJzsKK+aEvj4nW2FuZ2VyXSc7CivmhL8+J1tzaW5jZXJlXSc7CivmhYI+J1t1cmdlXSc7CivmhYQ+J1tzaGl2ZXJdJzsKK+aFhz4nW2NhcmVmdWxdJzsKK+aFiD4nW2tpbmRdJzsKK+aFij4nW3RvIHJlc2VudF0nOwor5oWLPidbbWFubmVyXSc7CivmhYw+J1tuZXJ2b3VzXSc7CivmhY0+J1thbmdyeV0nOwor5oWOPidbYWN0IHdpdGggY2FyZV0nOworIyLmhZM+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+aFlT4nW2xvbmcgZm9yXSc7CivmhZg+J1tzYWRdJzsKK+aFmT4nW2FzaGFtZWRdJzsKK+aFmj4nW2FzaGFtZWRdJzsKK+aFnT4nW2RvIGV2aWwgaW4gc2VjcmV0XSc7CivmhZ8+J1tzYWRuZXNzXSc7CivmhaI+J1tzbG93KGx5KV0nOwor5oWjPidbaGFiaXRdJzsKK+aFpT4nW3NpbmNlcmVdJzsKK+aFpz4nW2JyaWdodF0nOwor5oWoPidbc2lnaF0nOwor5oWrPidbdG8gYWxhcm1dJzsKK+aFrj4nW2JlIGNvbmNlcm5lZF0nOworIyLmha8+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+aFsD4nW2NvbWZvcnRdJzsKK+aFsT4nW3NhZF0nOwor5oWzPidbbWlzZXJseV0nOwor5oW0PidbZmVhcl0nOwor5oW1PidbaW5kb2xlbnRdJzsKK+aFtj4nW2NvbmdyYXR1bGF0ZV0nOwor5oW3PidbYXJkZW50XSc7Civmhb4+J1tsdXN0XSc7CivmhoI+J1tzYWRdJzsKK+aGhz4nW3Jlc3RdJzsKK+aGij4nW3RpcmVkXSc7Civmho4+J1toYXRlXSc7CivmhpA+J1twaXR5XSc7CivmhpE+J1tsZWFuIG9uXSc7CivmhpQ+J1tiZSB3b3JuLW91dF0nOwor5oaWPidbY2F1dGlvdXNdJzsKK+aGmT4nW2xpa2VdJzsKK+aGmj4nW2RyZWFkXSc7CivmhqQ+J1tyZXNlbnRdJzsKK+aGpz4nW2lycmVzb2x1dGVdJzsKK+aGqT4nW3Jlc3RdJzsKK+aGqz4nW3BpdHldJzsKK+aGrD4nW3JvdXNlXSc7Civmhq4+J1tyZWdyZXRmdWxdJzsKK+aGsj4nW2NvbnN0aXR1dGlvbl0nOwor5oa2PidbcmVtZW1iZXJdJzsKK+aGuj4nW3BlYWNlXSc7Civmhr4+J1tyZWdyZXRdJzsKK+aHgz4nW2NvdXJ0ZW91c10nOwor5oeGPidbYW54aW91c10nOwor5oeHPidbc2luY2VyZV0nOwor5oeIPidbaWRsZV0nOwor5oeJPidbc2hvdWxkXSc7Civmh4o+J1t2ZXhlZF0nOwor5oeLPidbc3BsZW5kaWRdJzsKK+aHjD4nW2Vuam95XSc7Civmh40+J1tiZSBhZnJhaWQgb2ZdJzsKK+aHkD4nW2Jvc29tXSc7Civmh6M+J1tiZSBzaWNrIGF0IGhlYXJ0XSc7Civmh6Y+J1t3ZWFrXSc7Civmh7I+J1twdW5pc2hdJzsKK+aHtD4nW3JlZ3JldF0nOwor5oe2PidbbGF6eV0nOwor5oe3PidbYm9zb21dJzsKK+aHuD4nW2hhbmddJzsKK+aHuj4nW3JlZ3JldF0nOwor5oe8PidbZmVhcl0nOwor5oe9PidbaGFwcHldJzsKK+aHvj4nW2FmcmFpZF0nOwor5oe/PidbdmlydHVvdXNdJzsKK+aIgD4nW2xvdmVdJzsKK+aIiD4nW2hhbGJlcmRdJzsKK+aIiT4nW2EgYmF0dGxlLWF4ZV0nOwor5oiKPidbZmlmdGggb2YgdGVuIGNlbGVzdGlhbCBzdGVtc10nOwor5oiMPidbZWxldmVudGggb2YgdGVycmVzdHJpYWwgYnJhbmNoZXNdJzsKK+aIjT4nW2RlZmVuZCBib3JkZXJzXSc7CivmiI4+J1thcm1zXSc7CivmiJA+J1tjb21wbGV0ZWRdJzsKK+aIkT4nW291cl0nOwor5oiSPidbd2Fybl0nOwor5oiUPidbc21hbGxdJzsKK+aIlj4nW29yXSc7CivmiJo+J1tyZWxhdGl2ZV0nOwor5oibPidbbGFuY2VdJzsKK+aInT4nW3BpcmF0ZV0nOwor5oiePidbbGFuY2VdJzsKK+aInz4nW2hhbGJlcmQgd2l0aCBjcmVzY2VudCBibGFkZV0nOwor5oihPidbc3VianVnYXRlXSc7CivmiKY+J1t3YXJdJzsKK+aIqj4nW2N1dCBvZmZdJzsKK+aIrj4nW2tpbGxdJzsKK+aIrz4nW3RoZWF0cmljYWwgcGxheV0nOwor5oiwPidbd2FyXSc7CivmiLI+J1t0aGVhdHJpY2FsIHBsYXldJzsKK+aIsz4nW3ByaWNrXSc7CivmiLQ+J1t3ZWFyIG9uIHRvcF0nOwor5oi4PidbZG9vcl0nOwor5oi7PidbcGVydmVyc2VdJzsKK+aIvz4nW2hvdXNlXSc7CivmiYA+J1twbGFjZV0nOwor5omBPidbZmxhdF0nOwor5omHPidbZmFuXSc7CivmiYg+J1tlc2NvcnRdJzsKK+aJiT4nW2Rvb3IgcGFuZWxdJzsKK+aJiz4nW2hhbmRdJzsKK+aJjT4nW3RhbGVudF0nOwor5omOPidbcHVsbCB1cF0nOwor5omTPidbc3RyaWtlXSc7CivmiZU+J1tzaGFrZSBvZmZdJzsKK+aJmD4nW2hvbGQgdXAgd2l0aCBwYWxtXSc7CivmiZs+J1tjYXJyeSBvbiBzaG91bGRlcnNdJzsKK+aJnj4nW3dhcmQgb2ZmXSc7CivmiaA+J1twaWNrIHVwIHdpdGggZm9yayBvciBwaW5jZXJzXSc7CivmiaM+J1trbm9ja10nOwor5omoPidbcGljayB1cCB3aXRoIGZvcmsgb3IgcGluY2Vyc10nOwor5omuPidbZHJlc3MgdXBdJzsKK+aJsT4nW2NvbGxlY3RdJzsKK+aJtj4nW3N1cHBvcnRdJzsKK+aJuT4nW2NvbW1lbnRdJzsKK+aJvD4nW2dyYXNwXSc7Civmib4+J1tzZWFyY2hdJzsKK+aJvz4nW2luaGVyaXRdJzsKK+aKgD4nW3NraWxsXSc7CisjIuaKgj4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor5oqDPidbdG8gY2xhcCBoYW5kc10nOwor5oqEPidbY29weV0nOwor5oqJPidbY2hvb3NlXSc7Civmioo+J1tob2xkXSc7CivmipE+J1twcmVzcyBkb3duXSc7CivmipI+J1tleHByZXNzXSc7CivmipM+J1tzY3JhdGNoXSc7CivmipQ+J1t0YWtlIG9yIGhvbGQgdXAgaW4gYm90aCBoYW5kc10nOwor5oqVPidbdGhyb3ddJzsKK+aKlj4nW3RyZW1ibGVdJzsKK+aKlz4nW3Jlc2lzdF0nOwor5oqYPidbYnJlYWsgb2ZmXSc7Civmips+J1t0aHJvdyAoYXdheSldJzsKK+aKnD4nW3Vwcm9vdF0nOwor5oqePidbc2VsZWN0XSc7Civmiqs+J1t3ZWFyXSc7Civmiqw+J1tsaWZ0XSc7CivmirE+J1tlbWJyYWNlXSc7CivmirU+J1tyZXNpc3RdJzsKK+aKuT4nW3NtZWFyXSc7Civmirs+J1twdWxsXSc7Civmirw+J1ttb3J0Z2FnZV0nOwor5oq9PidbZHJhdyBvdXRdJzsKK+aLgj4nW3NoYWtlIG9mZl0nOwor5ouFPidbY2FycnldJzsKK+aLhj4nW2JyZWFrIHVwXSc7Civmi4c+J1t0aHVtYl0nOwor5ouIPidbcGljayB1cCB3aXRoIGZpbmdlcnNdJzsKK+aLiT4nW3B1bGxdJzsKK+aLij4nW3NsYXBdJzsKK+aLjD4nW21peF0nOwor5ouNPidbY2xhcF0nOwor5ouPPidbdGFrZV0nOwor5ouQPidba2lkbmFwXSc7Civmi5E+J1t0byBjbGFtcF0nOwor5ouSPidbd2FyZCBvZmYgd2l0aCBoYW5kXSc7Civmi5M+J1tleHBhbmRdJzsKK+aLlD4nW3Vwcm9vdF0nOwor5ouXPidbb2JzdGluYXRlXSc7Civmi5g+J1tyZXN0cmFpbl0nOwor5ouZPidbc3R1cGlkXSc7Civmi5s+J1tiZWNrb25dJzsKK+aLnD4nW2RvIG9iZWlzYW5jZV0nOwor5oudPidbZG8gb2JlaXNhbmNlXSc7Civmi6A+J1tvY2N1cHldJzsKK+aLoT4nW2V4cGFuZF0nOwor5ousPidbaW5jbHVkZV0nOwor5outPidbd2lwZSBhd2F5IHN0YWlucyB3aXRoIGNsb3RoXSc7Civmi64+J1tsYWJvcmluZyBoYXJkXSc7Civmi68+J1toZWxwXSc7Civmi7E+J1tmb2xkIGhhbmRzIG9uIGJyZWFzdF0nOwor5ouzPidbZmlzdF0nOworIyLmi7Q+J1tiaW5kIHdpdGggcm9wZV0nIiwKK+aLtj4nW3ByZXNzXSc7Civmi7c+J1t0b3J0dXJlIGFuZCBpbnRlcnJvZ2F0ZV0nOwor5ou+PidbcGljayB1cF0nOwor5ou/PidbdGFrZV0nOwor5oyBPidbc3VzdGFpbl0nOwor5oyCPidbaGFuZ10nOwor5oyHPidbZmluZ2VyXSc7CivmjIg+J1thc3Npc3RdJzsKK+aMiT4nW3B1dCBoYW5kIG9uXSc7CivmjIw+J1tmaWdodF0nOwor5oyRPidbbG9hZCBjYXJyaWVkIG9uIHNob3VsZGVyc10nOwor5oyZPidbcmFpc2VdJzsKK+aMnz4nW2NsYXNwIHVuZGVyIGFybV0nOworIyLmjKU+J1tkaXJlY3RdJyIsCivmjKg+J1tuZWFyXSc7CivmjKs+J1twdXNoIGRvd25dJzsKK+aMrz4nW3JhaXNlXSc7CivmjLo+J1tzdGFuZCB1cHJpZ2h0XSc7CivmjL0+J1twdWxsXSc7CivmjL4+J1tjbGFzcCB1bmRlciBhcm1dJzsKK+aMvz4nW2luc2VydF0nOwor5o2JPidbZ3Jhc3BdJzsKK+aNjD4nW2JyZWFrIG9wZW5dJzsKK+aNjT4nW3dhcmQgb2ZmXSc7CivmjY8+J1twaWNrIHdpdGggZmluZ2Vyc10nOwor5o2QPidbY29udHJpYnV0ZV0nOwor5o2VPidbYXJyZXN0XSc7CivmjZc+J1ttYWtlIHByb2dyZXNzXSc7CivmjZw+J1tzZWFyY2hdJzsKK+aNpz4nW2hvbGQgdXAgaW4gdHdvIGhhbmRzXSc7Civmjag+J1tkaXNjYXJkXSc7Civmjak+J1t0d2lzdCB3aXRoIGhhbmRzXSc7Civmjas+J1tzdG9rZV0nOwor5o2uPidbb2NjdXB5XSc7CivmjbI+J1tjdXJsXSc7CivmjbY+J1tzdHJpa2Ugd2l0aCBzdGlja10nOwor5o23Pidbd2luXSc7Civmjbo+J1twcmVzcyBkb3duIGhlYXZpbHkgd2l0aCBmcmluZ2Vyc10nOwor5o27PidbdHdpc3Qgd2l0aCBmaW5nZXJzXSc7CivmjoA+J1tsaWZ0XSc7CivmjoM+J1tzd2VlcF0nOwor5o6IPidbZ2l2ZSB0b10nOwor5o6JPidbdHVybl0nOwor5o6MPidbcGFsbSBvZiBoYW5kXSc7Civmjo4+J1tkcmFnIGFzaWRlXSc7Civmjo8+J1t0YWtlIG91dF0nOwor5o6SPidbcm93XSc7CivmjpY+J1tzdGljayBpbl0nOwor5o6YPidbZGlnXSc7Civmjps+J1toYW5nXSc7CisjIuaOnz4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor5o6gPidbcm9iXSc7CivmjqE+J1tnYXRoZXJdJzsKK+aOoj4nW2ZpbmRdJzsKK+aOoz4nW2RyYWddJzsKK+aOpT4nW3JlY2VpdmVdJzsKK+aOpz4nW2FjY3VzZV0nOwor5o6oPidbcHVzaF0nOwor5o6pPidbY292ZXJdJzsKK+aOqj4nW3BsYWNlXSc7Civmjqs+J1tiZSBvbiBuaWdodCB3YXRjaF0nOwor5o6sPidbZ3Jhc3Agd2l0aCBib3RoIGhhbmRzXSc7CisjIuaOsT4nW3BpY2twb2NrZXRdJyIsCivmjrQ+J1tib3ggb25lJydzIGVhcnNdJzsKKyMi5o60PidbYm94IG9uZScncyBlYXJzXSciLAor5o67Pidbc2NyYXRjaCBsaWdodGx5XSc7Civmjr4+J1thIGdlbmVyYWwgZGVzaWduYXRpb24gb2Ygb2ZmaWNpYWxzXSc7Civmj4A+J1tjaG9vc2VdJzsKK+aPgz4nW3NoZWFyXSc7Civmj4Q+J1tsaWZ0XSc7Civmj4Y+J1twcmltZSBtaW5pc3Rlcl0nOwor5o+JPidbcnViXSc7Civmj48+J1tjb3B5XSc7Civmj5A+J1tob2xkIGluIGhhbmRdJzsKK+aPkj4nW2luc2VydF0nOwor5o+WPidbc2FsdXRlXSc7Civmj5o+J1tzY2F0dGVyXSc7Civmj5s+J1tjaGFuZ2VdJzsKK+aPoT4nW2dyYXNwXSc7Civmj6M+J1twdXQgdGhpbmdzIHVuZGVyIGNsb3RoZXNdJzsKK+aPqT4nW3J1YiBhbmQgd2lwZV0nOwor5o+uPidbZGlyZWN0XSc7Civmj7Q+J1thaWRdJzsKK+aPtj4nW21ha2UgZnVuIG9mXSc7Civmj7o+J1t3YWddJzsKK+aQhj4nW3B1bGxdJzsKK+aQjT4nW2RpbWluaXNoXSc7CivmkI8+J1tzZWl6ZV0nOwor5pCTPidbdHJhbXBsZV0nOwor5pCWPidbd2FnXSc7CivmkJc+J1todWxsXSc7CivmkJw+J1tzZWFyY2hdJzsKK+aQpj4nW2dyYXNwXSc7CivmkKg+J1tydWJdJzsKK+aQrD4nW3RyYW5zZmVyXSc7CivmkK0+J1tqb2luIHRvZ2V0aGVyXSc7CivmkLQ+J1tleHRyYWN0XSc7CivmkLY+J1twbHVuZGVyXSc7CivmkLo+J1tsZWFkIGJ5IGhhbmRdJzsKK+aQvj4nW3ByZXNzXSc7CivmkYI+J1t0YWtlIGluXSc7CivmkY4+J1t0byBzdHJhbmdsZV0nOwor5pGYPidbcGx1Y2tdJzsKK+aRpz4nW2Rlc3Ryb3ldJzsKK+aRqT4nW3J1Yl0nOwor5pGvPidbc2luY2VyZV0nOwor5pG2Pidbcm9sbCBhcm91bmQgd2l0aCBoYW5kXSc7Civmkbg+J1tnZW50bHkgdG91Y2ggd2l0aCBoYW5kXSc7Civmkbo+J1tmb2xkXSc7CivmkoM+J1tzdHJpa2VdJzsKK+aSiD4nW3Njb29wIG91dCBvZiB3YXRlcl0nOwor5pKSPidbcmVsZWFzZV0nOwor5pKTPidbc2NyYXRjaF0nOwor5pKVPidbcmlwXSc7Civmkpo+J1t0d2lybCBpbiBmaW5nZXJzXSc7Civmkp4+J1trbm9jayBhZ2FpbnN0XSc7CivmkqQ+J1tvbWl0XSc7CivmkqU+J1ttb3ZlXSc7Civmkqk+J1tsaWZ0IHVwXSc7Civmkqs+J1twYXRdJzsKK+aSrT4nW3Nvd10nOwor5pKuPidbbGl0dGxlIGJpdF0nOwor5pKwPidbY29tcG9zZV0nOwor5pKyPidbcG91bmRdJzsKK+aSuT4nW2Rpc3R1cmJdJzsKK+aSuz4nW2Zsb2ddJzsKK+aSvD4nW21vdmVdJzsKK+aTgT4nW2VtYnJhY2VdJzsKK+aTgj4nW3J1Yl0nOwor5pOFPidbbW9ub3BvbGl6ZV0nOwor5pOHPidbc2VsZWN0XSc7Civmk40+J1tjb25kdWN0XSc7Civmk5I+J1tjYXRjaF0nOwor5pOUPidbY2FycnldJzsKK+aTmD4nW3RodW1iXSc7Civmk5o+J1tvY2N1cHldJzsKK+aToD4nW2Nyb3dkXSc7Civmk6E+J1tjYXJyeV0nOwor5pOiPidbcHVsbCB1cF0nOwor5pOjPidbaHVsbF0nOwor5pOmPidbd2lwZV0nOwor5pOnPidbcmFpc2VdJzsKK+aTrD4nW2RyYWZ0XSc7Civmk68+J1tleGNsdWRlXSc7Civmk7E+J1twbGFjZV0nOwor5pOyPidbdGhyb3ddJzsKK+aTtD4nW2V4cGFuZF0nOworIyLmk7Y+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+aTuj4nW3B1dF0nOwor5pO9PidbdGlja2xlXSc7Civmk74+J1tkaXN0dXJiXSc7CivmlIA+J1tjbGltYl0nOwor5pSFPidbc2F2ZV0nOwor5pSYPidbc2VpemVdJzsKK+aUnD4nW2xlYWQgYnkgaGFuZF0nOwor5pSdPidbdGFrZSBpbl0nOwor5pSjPidbdGFuZ2xlZF0nOwor5pSkPidbc3ByZWFkIG91dF0nOwor5pSqPidbZGlzdHVyYl0nOwor5pSrPidbc25hdGNoIGF3YXldJzsKK+aUrD4nW2dyYXNwXSc7CivmlK8+J1tkaXNwZXJzZV0nOwor5pS0PidbcmFwXSc7CivmlLU+J1tyYXBdJzsKK+aUtj4nW2dhdGhlciB0b2dldGhlcl0nOwor5pS3PidbZXhhbWluZV0nOwor5pS4PidbZGlzdGFudF0nOwor5pS5PidbY2hhbmdlXSc7CivmlLs+J1thdHRhY2tdJzsKK+aUvj4nW3B1dF0nOwor5pS/PidbZ292ZXJubWVudF0nOwor5pWFPidbYW5jaWVudF0nOwor5pWIPidbcmVzdWx0XSc7CivmlY0+J1tleHByZXNzXSc7CivmlY8+J1tmYXN0XSc7CivmlZE+J1tzYXZlXSc7CivmlZU+J1thbiBpbXBlcmlhbCBvcmRlciBvciBkZWNyZWVdJzsKK+aVlj4nW3JhbWJsZV0nOwor5pWXPidbYmUgZGVmZWF0ZWRdJzsKK+aVmD4nW2V4cHJlc3NdJzsKK+aVmT4nW3RlYWNoXSc7CivmlZ0+J1ticmVha10nOwor5pWePidbcm9vbXldJzsKK+aVoj4nW2RhcmVdJzsKK+aVoz4nW3NjYXR0ZXJdJzsKK+aVpj4nW2VzdGVlbV0nOwor5pWsPidbcmVzcGVjdF0nOwor5pWwPidbbnVtYmVyXSc7CivmlbI+J1tzdHJpa2VdJzsKK+aVtD4nW29yZGVybHldJzsKK+aVtT4nW2VuZW15XSc7Civmlbc+J1tzcHJlYWRdJzsKK+aVuD4nW251bWJlcl0nOwor5paCPidbZHJhdyBiYWNrXSc7CivmloM+J1traWxsXSc7Civmloc+J1tsaXRlcmF0dXJlXSc7Civmlog+J1tsZWFybmluZ10nOwor5paJPidbZXZlbl0nOwor5paMPidbcmVmaW5lZF0nOwor5paOPidbdmVnZXRhcmlhbiBkaWV0XSc7CivmlpA+J1tncmFjZWZ1bF0nOwor5paRPidbbW90dGxlZF0nOwor5paXPidbY2hpbmVzZSBwZWNrXSc7Civmlpk+J1tjb25zaWRlcl0nOwor5pabPidbZHJ5IG1lYXN1cmUgMTAgb3IgNSB0aW1lcyBvZiBkb3VdJzsKK+aWnD4nW3NsYW50aW5nXSc7Civmlp8+J1twb3VyIHdpbmUgb3IgdGVhIGludG8gY3VwXSc7CivmlqE+J1tyZXZvbHZlXSc7CivmlqQ+J1tjYXR0eV0nOwor5palPidbc2NvbGRdJzsKK+aWpz4nW2F4ZV0nOwor5parPidbY3V0XSc7Civmlqw+J1tjdXRdJzsKK+aWrT4nW3NldmVyXSc7Civmlq8+J1t0aGlzXSc7CivmlrA+J1tuZXddJzsKK+aWtz4nW3NldmVyXSc7Civmlrk+J1tzcXVhcmVdJzsKK+aWvD4nW2luXSc7Civmlr0+J1tncmFudF0nOwor5peBPidbc2lkZV0nOwor5peDPidbc2lsayBiYW5uZXIgd2l0aCBiZW50IHBvbGVdJzsKK+aXhD4nW2Ega2luZCBvZiBhbmNpZW50IGZsYWddJzsKK+aXhT4nW3RyaXBdJzsKK+aXhj4nW2ZsYWcgb3JuYW1lbnRdJzsKK+aXiz4nW3Jldm9sdmVdJzsKK+aXjD4nW2Jhbm5lciBvciBmbGFnIGFkb3JuZWQgd2l0aCBmZWF0XSc7Civml48+J1tmYW1pbHkgY2xhbl0nOwor5peSPidbZnJpbmdlcyBvZiBwZWFybHMgb24gY3Jvd25zXSc7Civml5c+J1tiYW5uZXJdJzsKK+aXmT4nW2EgcGVubmFudF0nOwor5pebPidbYSBwZW5uYW50XSc7Civml6A+J1tuZWdhdGl2ZV0nOwor5pehPidbY2hva2Ugb24gc29tZXRoaW5nIGVhdGVuXSc7Civml6I+J1thbHJlYWR5XSc7Civml6U+J1tzdW5dJzsKK+aXpj4nW2Rhd25dJzsKK+aXpz4nW29sZF0nOwor5peoPidbcHVycG9zZV0nOwor5pepPidbZWFybHldJzsKK+aXrD4nW3Rlbi1kYXkgcGVyaW9kXSc7Civml60+J1tyaXNpbmcgc3VuXSc7Civml7E+J1tkcm91Z2h0XSc7Civml7o+J1twcm9zcGVyXSc7Civml7s+J1toZWF2ZW5dJzsKK+aYgj4nW3Jpc2VdJzsKK+aYgz4nW2FmdGVybm9vbl0nOwor5piGPidbZWxkZXIgYnJvdGhlcl0nOwor5piHPidbcmlzZV0nOwor5piKPidbc3VtbWVyIHRpbWVdJzsKK+aYjD4nW2xpZ2h0IG9mIHN1bl0nOwor5piOPidbYnJpZ2h0XSc7CivmmI8+J1tkdXNrXSc7CivmmJM+J1tjaGFuZ2VdJzsKK+aYlD4nW2Zvcm1lcmx5XSc7CivmmJw+J1t0byBvcGVuIG91dF0nOwor5pifPidbc3Rhcl0nOwor5pigPidbcHJvamVjdF0nOwor5pilPidbc3ByaW5nXSc7CivmmKc+J1tvYnNjdXJlXSc7CivmmKg+J1t5ZXN0ZXJkYXldJzsKK+aYrT4nW2JyaWdodF0nOwor5pivPidbaW5kZWVkXSc7CivmmLQ+J1tvbmUgb2YgdGhlIDI4IGNvbnN0ZWxsYXRpb25zXSc7CivmmLU+J1tpbnRpbWF0ZV0nOwor5pi2PidbYSBsb25nIGRheS4gYnJpZ2h0LiBleHRlbmRlZC4gY2xlYXJdJzsKK+aYvD4nW2RheXRpbWVdJzsKK+aYvz4nW2V4dGVuc2l2ZV0nOwor5pmBPidbbW9ybmluZ10nOwor5pmCPidbdGltZV0nOwor5pmDPidbYnJpZ2h0XSc7CivmmYQ+J1ticmlnaHRdJzsKK+aZiT4nW2FkdmFuY2VdJzsKK+aZiz4nW2FkdmFuY2VdJzsKK+aZjz4nW3BlYWNlZnVsXSc7CivmmZI+J1tkcnkgaW4gc3VuXSc7CivmmZ0+J1tkYXl0aW1lXSc7CivmmZ4+J1tkcnldJzsKK+aZnz4nW2NsZWFyXSc7CivmmaI+J1tsaWdodCBvZiBzdGFyc10nOwor5pmkPidbaGF2ZSBpbnRlcnZpZXcgd2l0aF0nOwor5pmmPidbZGFya10nOwor5pmnPidbZGF5YnJlYWtdJzsKK+aZqD4nW2Vhcmx5IG1vcm5pbmddJzsKK+aZqT4nW25pZ2h0XSc7Civmma4+J1t1bml2ZXJzYWxdJzsKK+aZrz4nW3NjZW5lcnldJzsKK+aZsD4nW2NsZWFyXSc7CivmmbQ+J1tjbGVhciB3ZWF0aGVyXSc7CivmmbY+J1tjcnlzdGFsXSc7Civmmbo+J1t3aXNkb21dJzsKK+aagT4nW2Rhd25dJzsKKyMi5pqCPidbdGVtcG9yYXJ5XSciLAor5pqEPidbd2FybV0nOwor5pqHPidbbGVpc3VyZV0nOwor5pqIPidbaGFsbyBpbiBza3ldJzsKK+aaiT4nW3N1bnNoaW5lXSc7Civmmo4+J1tzdW4gYmVnaW5uaW5nIGRlY2xpbmVdJzsKK+aakT4nW2hvdF0nOwor5pqWPidbd2FybV0nOwor5pqXPidbZGFya10nOwor5pqYPidbcmlzaW5nIHN1bl0nOwor5pqdPidbZGFya10nOwor5pqiPidbc21vb3RobHldJzsKK+aapj4nW2NhbGVuZGFyXSc7Civmmqs+J1t0ZW1wb3JhcnldJzsKK+aarj4nW2V2ZW5pbmddJzsKK+aatD4nW3Zpb2xlbnRdJzsKK+aauD4nW2JyaWdodF0nOwor5pq5PidbcmlzZV0nOwor5pq8PidbdGFrZSBmbGVldGluZyBnbGFuY2UgYXRdJzsKK+aavj4nW21vcm5pbmcgc3VuXSc7Civmm4E+J1thbmRdJzsKK+abhD4nW2JyaWdodF0nOwor5puHPidbYmVjb21lIGNsb3VkeV0nOwor5puJPidbZGF3bl0nOwor5puWPidbb2JzY3VyZV0nOwor5puZPidbYnJpZ2h0XSc7Civmm5o+J1t0d2lsaWdodCBqdXN0IGJlZm9yZSBzdW4gcmlzZXNdJzsKK+abnD4nW2dsb3Jpb3VzXSc7Civmm50+J1tzdW5dJzsKK+aboD4nW2V4dGVuc2l2ZV0nOwor5pumPidbc3VubGlnaHRdJzsKK+abqT4nW2luIGFuY2llbnQgdGltZXNdJzsKK+absD4nW3NheV0nOwor5puyPidbY3Jvb2tlZF0nOwor5puzPidbdHJhaWxdJzsKK+abtD4nW21vcmVdJzsKK+abtT4nW3RyYWlsXSc7Civmm7c+J1t3aHk/IHdoYXQ/IHdoZXJlP10nOwor5pu4PidbYm9va10nOwor5pu5PidbbWluaXN0cnkgb2ZmaWNpYWxzXSc7Civmm7w+J1tsb25nXSc7Civmm70+J1thbHJlYWR5XSc7Civmm74+J1thbHJlYWR5XSc7Civmm78+J1tjaGFuZ2VdJzsKK+acgD4nW21vc3RdJzsKK+acgz4nW2Fzc2VtYmxlXSc7CivmnIg+J1ttb29uXSc7CivmnIk+J1toYXZlXSc7CivmnIs+J1tmcmllbmRdJzsKK+acjT4nW2Nsb3RoZXNdJzsKK+acjz4nW2xpZ2h0IG9mIGNyZXNjZW50IG1vb25dJzsKK+aclD4nW2ZpcnN0IGRheSBvZiBsdW5hciBtb250aF0nOwor5pyVPidbcHJvbm91biBcImlcIl0nOwor5pyWPidbY2xlYXJdJzsKK+aclz4nW2NsZWFyXSc7CivmnJs+J1tsb29rIGF0IG9yIGZvcndhcmRdJzsKK+acnT4nW2R5bmFzdHldJzsKK+acnj4nW2Z1bGwgeWVhcl0nOwor5pyfPidbcGVyaW9kIG9mIHRpbWVdJzsKK+acpj4nW2NvbmRpdGlvbiBvciBhcHBlYXJhbmNlIG9mIG1vb25dJzsKK+acpz4nW2NvbmRpdGlvbiBvciBhcHBlYXJhbmNlIG9mIG1vb25dJzsKK+acqD4nW3RyZWVdJzsKK+acqj4nW25vdCB5ZXRdJzsKK+acqz4nW2ZpbmFsXSc7CivmnKw+J1tyb290XSc7CivmnK0+J1tsZXR0ZXJdJzsKK+acrj4nW3NraWxsXSc7CivmnLE+J1tjaW5uYWJhcl0nOwor5py0Pidbc2ltcGxlXSc7CivmnLY+J1tjbHVzdGVyIG9mIGZsb3dlcnNdJzsKKyMi5py2PidbY2x1c3RlciBvZiBmbG93ZXJzXSciLAorIyLmnLY+J1tjbHVzdGVyIG9mIGZsb3dlcnNdJyIsCivmnLo+J1tkZXNrXSc7CivmnL0+J1tkZWNheWVkXSc7CivmnL8+J1tzdGFiXSc7CisjIuadgD4nW2tpbGxdJyIsCivmnYY+J1twb2xlXSc7CivmnYk+J1t2YXJpb3VzIHNwZWNpZXMgb2YgcGluZSBhbmQgZmlyXSc7CivmnY4+J1twbHVtXSc7CivmnY8+J1thcHJpY290XSc7CivmnZA+J1ttYXRlcmlhbF0nOwor5p2RPidbdmlsbGFnZV0nOwor5p2TPidbaGFuZGxlIG9mIGN1cF0nOwor5p2WPidbY2FuZV0nOwor5p2ZPidbYSB0aW55IHdvb2RlbiBwb3N0XSc7CivmnZw+J1tzdG9wXSc7CivmnZ4+J1t3aWxsb3ddJzsKK+adnz4nW2JpbmRdJzsKK+adoD4nW2xldmVyXSc7CivmnaE+J1tjbGF1c2VdJzsKK+adoj4nW3dvb2R3b3JrZXJdJzsKKyMi5p2iPidbd29vZHdvcmtlcl0nIiwKK+adpD4nW3R5cGUgb2Ygb2FrXSc7CivmnaU+J1tjb21lXSc7Civmnao+J1t0aXAgb2YgdHdpZ10nOwor5p2tPidbY3Jvc3Mgc3RyZWFtXSc7Civmna8+J1tjdXBdJzsKK+adsD4nW2hlcm9dJzsKK+adsT4nW2Vhc3RdJzsKK+adsj4nW2JyaWdodCBzdW5dJzsKK+adsz4nW29ic2N1cmVdJzsKK+adtT4nW3Blc3RsZV0nOwor5p23PidbbG9xdWF0XSc7Civmnbw+J1tzaHV0dGxlIG9mIGxvb21dJzsKK+advj4nW3BpbmUgdHJlZV0nOwor5p2/PidbcGxhbmtdJzsKKyMi5p6FPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivmnoc+J1tsb3F1YXRdJzsKK+aeiT4nW3VzZWxlc3NdJzsKK+aeiz4nW3NhbmRhbHdvb2RdJzsKK+aejD4nW3ZhcmlldHkgb2YgZWxtIHdpdGggc21hbGwgc2VlZHNdJzsKK+aekD4nW3NwbGl0IHdvb2RdJzsKK+aelT4nW3BpbGxvd10nOwor5p6XPidbZm9yZXN0XSc7Civmnpo+J1tzdGFsayBvZiBzaHJ1Yl0nOwor5p6cPidbZnJ1aXRdJzsKK+aenT4nW2JyYW5jaGVzXSc7CisjIuaenz4nW3dvb2Qgc3RyZWFrc10nIiwKKyMi5p6fPidbd29vZCBzdHJlYWtzXSciLAor5p6iPidbZG9vciBoaW5nZV0nOworIyLmnqY+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+aeqT4nW3BpbmUgdHJlZV0nOwor5p6vPidbZHJpZWQgb3V0XSc7CivmnrM+J1t0cmlmb2xpYXRlIG9yYW5nZV0nOwor5p60PidbY2FuZV0nOwor5p62PidbcmFja10nOwor5p63PidbY2FuZ3VlIHNjYWZmb2xkXSc7Civmnrg+J1traW5kIG9mIGFzcGVuIGZvdW5kIGluIHNpY2h1YW5dJzsKK+aeuT4nW2RydW1zdGlja10nOwor5p+BPidbbGFyZ2UgdGllLWJlYW1zXSc7Civmn4Q+J1toYW5kbGVdJzsKKyMi5p+GPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCisjIuafiD4nW2NvbnRhaW5lcl0nIiwKK+afjj4nW2NhbHl4IG9mIGZsb3dlcl0nOwor5p+PPidbY3lwcmVzc10nOwor5p+QPidbY2VydGFpbiB0aGluZyBvciBwZXJzb25dJzsKK+afkT4nW3RhbmdlcmluZV0nOwor5p+TPidbZHllXSc7Civmn5Q+J1tzb2Z0XSc7Civmn5g+J1thIHRob3JueSB0cmVlXSc7Civmn5o+J1twdW1lbG9dJzsKK+afnT4nW3dhdGNobWFuJydzIHJhdHRsZV0nOwor5p+ePidbb2FrXSc7Civmn6I+J1tyb290XSc7Civmn6Q+J1toYXd0aG9ybl0nOworIyLmn6c+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+afqT4nW2NvZmZpbiB3aGljaCBjb250YWlucyBjb3Jwc2VdJzsKK+afrD4nW2xldHRlcl0nOwor5p+uPidbZmxhdCBwaWVjZXMgb2Ygd29vZF0nOwor5p+vPidbYXhlLWhhbmRsZV0nOwor5p+xPidbcGlsbGFyXSc7Civmn7M+J1t3aWxsb3cgdHJlZV0nOwor5p+0PidbZmlyZXdvb2RdJzsKK+aftT4nW2ZlbmNlXSc7Civmn7s+J1tpbnZlc3RpZ2F0ZV0nOwor5p++Pidbc3RyYWlnaHQgZ3JhaW5dJzsKK+afvz4nW3BlcnNpbW1vbl0nOwor5qCCPidbYSBraW5kIG9mIGV2ZXJncmVlbiB0cmVlXSc7CivmoIM+J1t0eXBlIG9mIG9ha10nOwor5qCEPidbZ2xvcnldJzsKK+agkz4nW3dvb2RlbiBwZWddJzsKK+aglj4nW3BlcmNoXSc7CivmoJc+J1tjaGVzdG51dCB0cmVlXSc7CivmoJ4+J1twdWJsaWNhdGlvbl0nOwor5qChPidbc2Nob29sXSc7CivmoKI+J1tjeXByZXNzXSc7CivmoKk+J1tzcGVjaWVzIG9mIG9ha10nOwor5qCqPidbbnVtZXJhcnkgYWRqdW5jdCBmb3IgdHJlZXNdJzsKK+agqz4nW2ZlbmNlXSc7CivmoLI+J1ttYW5ncm92ZV0nOwor5qC0Pidbc2FuZGFsd29vZF0nOwor5qC4Pidbc2VlZF0nOwor5qC5Pidbcm9vdF0nOwor5qC8PidbcGF0dGVybl0nOwor5qC9PidbY3VsdGl2YXRlXSc7CivmoYA+J1tjaGlja2VuIHJvb3N0XSc7CivmoYE+J1tjcm9zcy1iZWFtcyBvZiByb29mXSc7CivmoYI+J1tjYXNzaWEgb3IgY2lubmFtb25dJzsKK+ahgz4nW3BlYWNoXSc7CivmoYY+J1tmcmFtZV0nOwor5qGIPidbdGFibGVdJzsKKyMi5qGNPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivmoY4+J1tmZXR0ZXJzXSc7CivmoZA+J1tuYW1lIGFwcGxpZWQgdmFyaW91cyB0cmVlc10nOwor5qGRPidbbXVsYmVycnkgdHJlZV0nOwor5qGTPidbdmFyaWV0eSBvZiB0cmVlXSc7CivmoZQ+J1tjaGluZXNlIGJlbGxmbG93ZXJdJzsKKyMi5qGZPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivmoZw+J1tjaGVycnldJzsKK+ahnT4nWy4uLi4uLi4uLi4uLi4uLi5dJzsKKyMi5qGdPidbLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+ahoz4nW3NoZWxmXSc7Civmoac+J1tjaGluZXNlIGN5cHJlc3NdJzsKK+ahtD4nW3JhZnRdJzsKK+ahtj4nW3BhaWxdJzsKK+ahtz4nW3JhZnRlcl0nOworIyLmob4+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+ahvz4nW3BvbGVdJzsKK+aigT4nW2JyaWRnZV0nOwor5qKDPidbYSBjbHViXSc7CivmooU+J1twbHVtc10nOwor5qKNPidbdHJlZSBuYW1lXSc7Civmoo8+J1toYW5kY3VmZnNdJzsKK+aikz4nW2NhdGFscGEgb3ZhdGFdJzsKK+ailD4nW2dhcmRlbmlhXSc7Civmopc+J1tzdGVtIG9mIGZsb3dlcl0nOworIyLmopg+J1tiYW1ib28gdHViZV0nIiwKK+ainT4nW2NsYXVzZV0nOwor5qKfPidbb3dsIHRodXNdJzsKK+aioD4nW3NtYWxsIGJlYW0gc3VwcG9ydGluZyByYWZ0ZXJzIGF0XSc7CivmoqI+J1twb2ludGVkIHRpcCBvZiBzb21ldGhpbmcgbG9uZyBsaWtlIGEgYnJhbmNoXSc7CivmoqY+J1tkcmVhbV0nOwor5qKnPidbc3RlcmN1bGlhIHBsYXRhbmlmb2xpYV0nOwor5qKoPidbcGVhcl0nOwor5qKtPidbd2VhdmVyJydzIHNodXR0bGVdJzsKK+airz4nW2xhZGRlcl0nOwor5qKwPidbd2VhcG9uc10nOwor5qKxPidbZG9vcnNpbGxdJzsKK+aisz4nW2NvbWJdJzsKK+aitT4nW2J1ZGRoaXN0XSc7CivmorY+J1tvYXJdJzsKK+aiuT4nW3RoZSBhcmVjYS1udXRdJzsKKyMi5qK5PidbdGhlIGFyZWNhLW51dF0nIiwKK+aivD4nW2Jsb2NrIG9mIHdvb2RdJzsKK+ajhD4nW3JlamVjdF0nOworIyLmo4Y+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+ajiT4nW2NvdHRvbl0nOwor5qOKPidbY2hlc3NdJzsKK+ajiz4nW2NoZXNzXSc7Civmo40+J1tzdGlja10nOwor5qOSPidbc3RpY2tdJzsKKyMi5qOUPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivmo5U+J1toZW1wIHBhbG1dJzsKK+ajlz4nW2RhdGUgdHJlZV0nOwor5qOYPidbanVqdWJlIHRyZWVdJzsKK+ajmj4nW3RlbnRdJzsKK+ajnz4nW21haW4gYmVhbXMgc3VwcG9ydGluZyBob3VzZV0nOwor5qOgPidbY3JhYiBhcHBsZSB0cmVlXSc7CisjIuajoT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor5qOjPidba2VycmlhIGphcG9uaWNhIHBsYW50XSc7Civmo6c+J1t3YXJlaG91c2VdJzsKK+ajrj4nW2ZvcmVzdF0nOwor5qOvPidbanVqdWJlIHRyZWVdJzsKK+ajsj4nW3BlcmNoXSc7Civmo7k+J1tvYXJdJzsKK+ajuj4nW2NvZmZpbl0nOwor5qSAPidbYm93bF0nOwor5qSBPidbb3V0ZXItY29mZmluXSc7CivmpIQ+J1t0byBncmFmdF0nOwor5qSFPidbY2hhaXJdJzsKK+akiD4nW2NlZGFyXSc7CivmpIs+J1tmcnVpdF0nOwor5qSMPidbaW5zdHJ1bWVudF0nOwor5qSNPidbcGxhbnRdJzsKK+akjj4nW2hhbW1lcl0nOwor5qSPPidbdGhlIGZvcmtpbmcgYnJhbmNoIG9mIGEgdHJlZV0nOwor5qSSPidbcGVwcGVyXSc7CisjIuakkz4nW3N0cmlrZV0nIiwKKyMi5qSaPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivmpJs+J1t0eXBlIG9mIGJpcmNoXSc7CivmpJw+J1tjaGVja10nOworIyLmpKE+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKKyMi5qSiPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCisjIuakoz4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAorIyLmpKU+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKKyMi5qSmPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCisjIuakqD4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor5qSqPidbbWFjaGlsdXMgbmFubXVdJzsKK+aksD4nW3BhbG0gdHJlZV0nOwor5qS0PidbcG9wbGFyXSc7CivmpLY+J1twYWxtIHRyZWVdJzsKK+akuT4nW2EgY2hvcHBpbmcgYm9hcmRdJzsKK+akvT4nW2JlYW1zXSc7CivmpL8+J1tmYXRoZXJdJzsKK+alij4nW3dpbGxvd10nOwor5qWTPidbbWFwbGUgdHJlZV0nOwor5qWUPidbd2VkZ2VdJzsKK+allT4nW292YWwtc2hhcGVkXSc7CivmpZk+J1tuYW1lIG9mIHBsYW50XSc7CivmpZo+J1tuYW1lIG9mIGZldWRhbCBzdGF0ZV0nOworIyLmpZw+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+alnT4nW21lbGlhIGphcG9uaWNhXSc7CivmpZ4+J1t1c2VkIGZvciBjZXlsb24gaW4gYnVkZGhpc3QgdGV4dF0nOwor5qWgPidbbmFtZSBvZiB0cmVlXSc7CivmpaE+J1tlbG0gdHJlZV0nOwor5qWiPidbdGluZGVyXSc7Civmpao+J1tzbWFsbCBkaXNoXSc7Civmpas+J1tvYXJdJzsKK+alrT4nW3Byb2Zlc3Npb25dJzsKK+alrj4nW211bGJlcnJ5XSc7Civmpa8+J1tzaGllbGRdJzsKK+alsz4nW3BsdW1zXSc7CisjIualtD4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor5qW1PidbZXh0cmVtZV0nOwor5qW3PidbbW9kZWwgc3R5bGUgb2YgY2hpbmVzZSB3cml0aW5nXSc7Civmpbg+J1ttYWxsb3R1cyBqYXBvbmljdXNdJzsKK+aluT4nW2NvbHVtbl0nOwor5qW8PidbYnVpbGRpbmcgb2YgdHdvIG9yIG1vcmUgc3Rvcmllc10nOwor5qW9PidbaGFwcHldJzsKKyMi5qW9PidbaGFwcHldJyIsCisjIuamgD4nW1tub3QgZm91bmQgaW4gZGljdGlvbmFyeV1dJyIsCivmpoI+J1tnZW5lcmFsbHldJzsKKyMi5qaJPidbdHlwZSBvZiBlbG1dJyIsCivmpo4+J1tzbWFsbCBldmVyZ3JlZW4gc2hydWJdJzsKKyMi5qaRPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivmppQ+J1tiZXRlbC1udXQgdHJlZV0nOwor5qaVPidbYmFueWFuIHRyZWVdJzsKK+ammz4nW2hhemVsbnV0XSc7Civmppw+J1twbGFjYXJkXSc7CisjIuamoD4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor5qanPidbdHlwZSBvZiB5ZXddJzsKK+amrj4nW2dsb3J5XSc7CivmprE+J1tyYWZ0ZXJdJzsKK+amsj4nW3BpbGxhcl0nOwor5qa0PidbcG9tZWdyYW5hdGVdJzsKK+amuz4nW2NvdF0nOwor5qa+PidbcGllY2VzIG9mIHdvb2RdJzsKK+amvz4nW2FsZGVyXSc7Civmp4E+J1t3aXRoZXJdJzsKK+angz4nW3RyYXldJzsKK+anhz4nW3RpcCBvZiBhIHRyZWVdJzsKK+anij4nW3NwZWFyXSc7Civmp4s+J1tmcmFtZV0nOwor5qeMPidbaGFtbWVyXSc7Civmp40+J1tzcGVhcl0nOwor5qeOPidbcmFmdF0nOwor5qeQPidbbG9jdXN0IHRyZWVdJzsKK+ankz4nW2xldmVyXSc7Civmp5g+J1tzaGFwZV0nOworIyLmp5g+J1tzaGFwZV0nIiwKKyMi5qebPidbdGhyZXNob2xkXSciLAorIyLmp5s+J1t0aHJlc2hvbGRdJyIsCivmp6c+J1t3b29kZW4gdGFibGV0XSc7Civmp6g+J1tvdXRlci1jb2ZmaW5dJzsKKyMi5qerPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivmp60+J1ttYXBsZV0nOwor5qeyPidbdHlwZSBvZiBvYWtdJzsKK+anuT4nW3NwYXJdJzsKK+anuz4nW3plbGtvdmEgdHJlZV0nOwor5qe9PidbdHJvdWdoXSc7Civmp78+J1toaWJpc2N1c10nOwor5qiCPidbaGFwcHldJzsKK+aohT4nW2ZpciB0cmVlXSc7CivmqIo+J1thIHJhaWxpbmddJzsKK+aoiz4nW3RyZWUgbmFtZV0nOworIyLmqIw+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKKyMi5qiSPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivmqJM+J1tidWlsZGluZyBvZiB0d28gb3IgbW9yZSBzdG9yaWVzXSc7CisjIuaokz4nW2J1aWxkaW5nIG9mIHR3byBvciBtb3JlIHN0b3JpZXNdJyIsCivmqJc+J1traW5kIG9mIHRyZWUgd2l0aCB1c2VsZXNzIHRpbWJlcl0nOwor5qiZPidbbWFya10nOwor5qibPidbYmVuZGluZyBicmFuY2hlc10nOwor5qiePidbZG9vciBoaW5nZV0nOwor5qifPidbY2FtcGhvciB0cmVlXSc7CivmqKE+J1ttb2RlbF0nOworIyLmqKI+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+aooz4nW3NoYXBlXSc7CivmqKk+J1twb3dlcl0nOwor5qiqPidbYWNyb3NzXSc7CisjIuaoqj4nW2Fjcm9zc10nIiwKKyMi5qiqPidbYWNyb3NzXSciLAor5qi1Pidbd29vZGN1dHRlcl0nOwor5qi2PidbY10nOwor5qi4Pidbc2ltcGxlXSc7CivmqLk+J1t0cmVlXSc7CivmqLo+J1t0eXBlIG9mIGJpcmNoXSc7CivmqL0+J1tnb2JsZXRdJzsKK+aphD4nW29saXZlXSc7CivmqYc+J1thIHNsZWRnZSBmb3IgdHJhbnNwb3J0YXRpb25dJzsKK+apiD4nW2JlbnQgb3IgdHdpc3RlZCBwaWVjZSBvZiB3b29kXSc7CivmqYs+J1ticmlkZ2VdJzsKK+apmD4nW29yYW5nZV0nOwor5qmZPidbb3JhbmdlXSc7CivmqZ8+J1ttYWNoaW5lXSc7CivmqaE+J1tjaGVzdG51dCBvYWtdJzsKK+apoj4nW292YWwtc2hhcGVkXSc7CivmqaY+J1t0cmVlXSc7CisjIuapsT4nW2NhYmluZXRdJyIsCisjIuaptT4nW3dvb2QgcGxhY2VkIHVuZGVyIHJvb2YgdGlsZXNdJyIsCisjIuapvz4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor5qqAPidbc2FuZGFsd29vZF0nOwor5qqEPidbY2FsbCBhcm1zXSc7Civmqo0+J1tpbGV4XSc7Civmqo4+J1tzbWFsbCByZWQgYXBwbGVdJzsKK+aqkD4nW2VhdmVzIG9mIGhvdXNlXSc7Civmqpc+J1t0cmVlXSc7Civmqpw+J1tjaGluZXNlIGN5cHJlc3NdJzsKK+aqoD4nW3N0YW5kIGZvciBsYW1wXSc7CivmqqI+J1tjaGVja10nOwor5qqjPidbbWFzdF0nOwor5qqqPidbY2hlc3RudXQtbGVhdmVkIG9ha10nOwor5qqsPidbdHlwZSBvZiBsb2N1c3Qgb3JhY2FjaWFdJzsKK+aqrj4nW2Jsb2NrIG9mIHdvb2RdJzsKK+aqsz4nW2JldGVsbnV0XSc7Civmqrg+J1tsZW1vbl0nOwor5qq7PidbdGhyZXNob2xkXSc7CisjIuargT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor5quCPidbb2FyXSc7Civmq4M+J1tjdXBib2FyZF0nOworIyLmq5E+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+arkz4nW29hcl0nOwor5quaPidbcGFsbV0nOwor5qubPidbY29tYiBvdXRdJzsKK+arnj4nW2NpdHJ1c10nOwor5qufPidbY2hlc3RudXQtbGVhdmVkIG9ha10nOwor5quoPidbc3VwcG9ydGluZyBibG9ja10nOwor5quqPidbdHlwZSBvZiBvYWtdJzsKK+aruj4nW2NhcnZlZCBvciBwYXR0ZXJuZWQgd2luZG93IHNpbGxzXSc7Civmq7s+J1tjaGVycnldJzsKK+ashD4nW3JhaWxpbmddJzsKK+ashT4nW3plbGtvdmFdJzsKK+asij4nW3Bvd2VyXSc7CivmrJI+J1tuYW1lIG9mIHRyZWVdJzsKK+aslj4nW29saXZlXSc7CivmrJ0+J1tsdXh1cmlhbnRdJzsKKyMi5qyePidbdGhlIGxhdHRpY2Ugb2YgYSB3aW5kb3cgYSBzaWxsXSciLAor5qygPidbb3dlXSc7CivmrKE+J1tvcmRlcl0nOwor5qyjPidbaGFwcHldJzsKK+aspz4nW3RyYW5zbGl0LjogZXVyb3BlXSc7CivmrLI+J1tkZXNpcmVdJzsKK+astz4nW3NvYl0nOwor5qy4Pidbc2lnaHNdJzsKK+asuT4nW2ZpZXJjZSBkb2ddJzsKK+asuj4nW2NoZWF0XSc7CivmrL0+J1tyZXNwZWN0XSc7CivmrL4+J1tpdGVtXSc7CivmrYM+J1tzbWVhciBvbmUnJ3MgbW91dGggd2l0aCBibG9vZCBvZiBhIHZpY3RpbSB3aGVuIHRha2luZyBhbiBvYXRoXSc7CivmrYc+J1tyZXN0XSc7CivmrYk+J1tkZWZpY2llbnRdJzsKK+atjD4nW3NvbmddJzsKK+atjj4nW3NpZ2hdJzsKK+atkD4nW3RyYW5zbGl0LjogZXVyb3BlXSc7CivmrZM+J1toYXBweV0nOwor5q2UPidbYmxvdyB0aHJvdWdoIG5vc2VdJzsKK+atmT4nW3RvIHN1Y2tdJzsKK+atmz4nW2RyYXcgYmFja10nOwor5q2fPidbZmluYWwgcGFydGljbGUgdXNlZCBleHByZXNzIHF1ZXNdJzsKK+atoT4nW2hhcHB5XSc7CivmraI+J1tzdG9wXSc7CivmraM+J1tyaWdodF0nOwor5q2kPidbdGhpc10nOwor5q2mPidbbWlsaXRhcnldJzsKK+atqT4nW3N0ZXBdJzsKK+atqj4nW3NsYW50XSc7Civmra8+J1t0ZWV0aF0nOwor5q2zPidbeWVhcl0nOwor5q20PidbdGFrZSBwbGFjZV0nOwor5q24PidbcmV0dXJuXSc7Civmrbk+J1tiYWRdJzsKK+atuz4nW2RpZV0nOwor5q2/PidbZGllXSc7CivmroA+J1tkaWUgeW91bmddJzsKK+augz4nW21pc2ZvcnR1bmVdJzsKK+auhD4nW3RvIGVuZF0nOwor5q6GPidbZGFuZ2Vyb3VzXSc7Civmrok+J1tkaWUgZm9yIGNhdXNlXSc7Civmroo+J1tkaWZmZXJlbnRdJzsKK+auiz4nW2luanVyZV0nOwor5q6NPidbdG8gc3RhcnZlIHRvIGRlYXRoXSc7CivmrpU+J1tbbm90IGZvdW5kIGluIGRpY3Rpb25hcnldXSc7CivmrpY+J1ticmVlZF0nOwor5q6YPidbaW5qdXJlXSc7Civmrp4+J1tkaWVdJzsKK+aupD4nW2RpZSB5b3VuZ10nOwor5q6qPidbZGllXSc7Civmrqs+J1t1dG1vc3RdJzsKK+aurz4nW2VuY29mZmluXSc7CivmrrE+J1thbm5paGlsYXRlXSc7CivmrrI+J1thbm5paGlsYXRlXSc7CivmrrM+J1tuYW1lIG9mIG9sZCB3ZWFwb25dJzsKK+autD4nW2JlYXRdJzsKK+autT4nW3NlY3Rpb25dJzsKK+autz4nW21hbnldJzsKK+auuj4nW2tpbGxdJzsKK+auuz4nW2Nhc2luZ10nOwor5q68PidbY2FzaW5nXSc7Civmrr8+J1toYWxsXSc7Civmr4A+J1tkZXN0cm95XSc7Civmr4U+J1tyZXNvbHV0ZV0nOwor5q+GPidbYmVhdF0nOwor5q+LPidbZG8gbm90XSc7Civmr40+J1ttb3RoZXJdJzsKK+avjj4nW2V2ZXJ5XSc7Civmr5I+J1twb2lzb25dJzsKK+avkz4nW2dpdmUgYmlydGggdG9dJzsKK+avlD4nW2NvbXBhcmVdJzsKK+avmD4nW2hlbHBdJzsKK+avmz4nW2hhaXJdJzsKKyMi5q+fPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivmr6s+J1tmaW5lIGhhaXJdJzsKK+avrD4nW2JhbGxdJzsKK+avrz4nW3J1Z10nOwor5q+zPidbZmluZSBoYWlyIG9yIGZ1ciBvbiBhbmltYWxzXSc7CivmsIg+J1tmZWx0XSc7CivmsI8+J1tjbGFuXSc7CivmsJE+J1twZW9wbGVdJzsKK+awkz4nW3Blb3BsZV0nOwor5rCUPidbc3RlYW1dJzsKK+awlz4nW2Fpcl0nOwor5rCbPidbZ2FzXSc7CivmsKM+J1thaXJdJzsKK+awpD4nW2hhbmdpbmcgZm9nXSc7CivmsLQ+J1t3YXRlcl0nOwor5rC3PidbaWNlXSc7CivmsLg+J1tsb25nXSc7CivmsL4+J1tvdmVyZmxvd10nOwor5rGAPidbc2FuZGJhcl0nOwor5rGBPidbanVpY2VdJzsKK+axgj4nW3NlZWtdJzsKK+axjj4nW2Zsb2F0XSc7CivmsZA+J1tuaWdodCB0aWRlc10nOwor5rGVPidbYmFza2V0IGZvciBjYXRjaGluZyBmaXNoXSc7CivmsZc+J1twZXJzcGlyYXRpb25dJzsKK+axmj4nW2ZpbHRoeV0nOwor5rGdPidbeW91XSc7CivmsZ4+J1tlbGVtZW50IG1lcmN1cnldJzsKK+axnz4nW2xhcmdlIHJpdmVyXSc7CivmsaA+J1twb29sXSc7CisjIuaxoj4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor5rGoPidbTWkobHVvKSByaXZlciBpbiBodW5hbiBwcm92aW5jZSB3aGVyZSBRdSBZdWFuIGRyb3duZWQgaGltc2VsZl0nOwor5rGqPidbdmFzdF0nOwor5rGwPidbZXhjZXNzaXZlXSc7CivmsbI+J1tkcmF3IHdhdGVyIGZyb20gd2VsbF0nOworIyLmsbI+J1tkcmF3IHdhdGVyIGZyb20gd2VsbF0nIiwKK+axuj4nW2RlY2lkZV0nOwor5rG9Pidbc3RlYW1dJzsKK+axvj4nW3JpdmVyIGluIHNoYW54aSBwcm92aW5jZV0nOwor5rKBPidbc29hayBpbnRvXSc7CivmsoI+J1tyaXZlciBpbiBzb3V0aGVhc3Qgc2hhbmRvbmcgZmxvd10nOwor5rKDPidbd2F0ZXJdJzsKK+ayiD4nW3NpbmtdJzsKK+ayjD4nW2NoYW90aWNdJzsKK+ayjT4nW2ZyZWV6aW5nXSc7CivmspA+J1tiYXRoZV0nOwor5rKSPidbbm90XSc7CivmspM+J1tjb25uZWN0ZWRdJzsKK+aylj4nW3BvdXJdJzsKK+aymT4nW3NhbmRdJzsKK+aymj4nW2lzbGV0IGluIHN0cmVhbV0nOwor5rKbPidbYWJ1bmRhbnRdJzsKK+ayoT4nW25vdF0nOwor5rKiPidbbWFyc2hdJzsKK+ayqz4nW2Zyb3RoXSc7Civmsq4+J1tzdG9wXSc7CivmsrE+J1tyaXZlcnNdJzsKK+aysz4nW3JpdmVyXSc7Civmsrg+J1tib2lsXSc7Civmsrk+J1tvaWxdJzsKK+ayuj4nW3R1cmJ1bGVudF0nOwor5rK7PidbZ292ZXJuXSc7Civmsrw+J1tsYWtlXSc7Civmsr0+J1tidXkgYW5kIHNlbGxdJzsKK+ayvj4nW21vaXN0ZW5dJzsKK+ayvz4nW2ZvbGxvdyBjb3Vyc2VdJzsKK+azgT4nW2NvbmRpdGlvbl0nOwor5rOEPidbbGVha10nOwor5rOFPidbc3dpbV0nOwor5rOJPidbc3ByaW5nXSc7Civms4o+J1thbmNob3IgdmVzc2VsXSc7Civms4w+J1t0byBzZWVwIG91dF0nOwor5rOTPidbY2xlYXJdJzsKK+azlT4nW2xhd10nOwor5rOXPidbbXVjb3VzXSc7Civms5k+J1tyb2FyXSc7Civms5s+J1tkcmlmdF0nOwor5rOdPidbZ28gdXBzdHJlYW1dJzsKK+azoT4nW2J1YmJsZXNdJzsKK+azoj4nW3dhdmVzXSc7Civms6M+J1tjcnldJzsKK+azpT4nW211ZF0nOwor5rOoPidbY29uY2VudHJhdGVdJzsKK+azqj4nW3RlYXJzXSc7Civms68+J1tkZXN0cm95XSc7Civms7A+J1tncmVhdF0nOwor5rOxPidbZ3JlYXRdJzsKK+azsz4nW2RpdmVdJzsKK+a0iz4nW29jZWFuXSc7CivmtIw+J1tjbGVhcl0nOwor5rSSPidbc3ByaW5rbGVdJzsKK+a0lz4nW3dhc2hdJzsKK+a0mT4nW25hbWUgb2YgYSByaXZlciBpbiBzaGFuZG9uZ10nOwor5rSbPidbcml2ZXIgaW4gc2hhYW54aSBwcm92aW5jZV0nOwor5rSePidbY2F2ZV0nOwor5rSfPidbc25pdmVsXSc7CivmtKU+J1tmZXJyeV0nOwor5rSpPidbbGVha10nOwor5rSqPidbdmFzdF0nOwor5rSrPidbdG8gZGl0Y2hdJzsKK+a0sj4nW2NvbnRpbmVudF0nOwor5rSzPidbZGFtcF0nOwor5rS1PidbdHJ1ZV0nOwor5rS2PidbdGhlIHJ1c2ggb2Ygd2F0ZXJdJzsKK+a0uD4nW3NwYXJrbGVdJzsKK+a0uz4nW2xpdmVdJzsKK+a0vT4nW3NwcmVhZF0nOwor5rS+Pidbc2Nob29sIG9mIHRob3VnaHRdJzsKK+a1gT4nW2Zsb3ddJzsKK+a1hD4nW3B1cmVdJzsKK+a1hT4nW3NoYWxsb3ddJzsKK+a1mT4nW3poZWppYW5nIHByb3ZpbmNlXSc7CivmtZo+J1tkcmVkZ2VdJzsKK+a1nD4nW2NyZWVrXSc7CivmtaM+J1t0byB3YXNoXSc7CivmtaQ+J1tiZWF0aW5nIG9mIG9jZWFuXSc7CivmtaY+J1tiYW5rIG9mIHJpdmVyXSc7Civmtak+J1tncmVhdF0nOwor5rWqPidbd2F2ZV0nOwor5rWsPidbbmF1dGljYWwgbWlsZV0nOwor5rWuPidbZmxvYXRdJzsKK+a1tD4nW2JhdGhlXSc7Civmtbc+J1tzZWFdJzsKK+a1uD4nW3NvYWtdJzsKK+a1uT4nW3NhdHVyYXRlXSc7CivmtoU+J1tibGFja2VuXSc7Civmtog+J1t2YW5pc2hdJzsKK+a2jD4nW3N1cmdlIHVwXSc7Civmto4+J1tzYWxpdmFdJzsKK+a2kz4nW2Jyb29rXSc7CivmtpU+J1t0ZWFyXSc7Civmtpk+J1t0ZWFyc10nOwor5rabPidbbGFyZ2Ugd2F2ZXNdJzsKK+a2nD4nW2RpdGNoXSc7Civmtq8+J1tzaG9yZV0nOwor5rayPidbc2FwXSc7CivmtrU+J1tzb2FrXSc7Civmtrg+J1tkcmllZCB1cF0nOwor5ra8PidbY29vbF0nOwor5reAPidbc2hhbGxvdyB3YXRlcl0nOwor5reFPidbd2F0ZXIgdXNlZCB3YXNoIHJpY2VdJzsKK+a3hj4nW2NvbmZ1c2VkXSc7Civmt4c+J1tyaXZlciBpbiBoZW5hbiBwcm92aW5jZV0nOwor5reLPidbZHJpcF0nOwor5reMPidbdHJpY2tsZV0nOwor5reRPidbZ29vZF0nOwor5reSPidbYml0dGVyIGNvbGRdJzsKKyMi5reVPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivmt5g+J1t3YXNoIGluIHNpZXZlXSc7Civmt5k+J1tndXJnbGluZyBzb3VuZCBvZiB3YXRlcl0nOwor5reePidbbmFtZSBvZiBhIHJpdmVyIGluIEppYW5nc3VdJzsKK+a3oT4nW3dlYWtdJzsKK+a3pD4nW211ZF0nOwor5remPidbcml2ZXIgaW4gamlhbmd4aSBwcm92aW5jZTogd2F0ZXJdJzsKK+a3qD4nW3B1cmVdJzsKK+a3qj4nW2JlIGxvc3RdJzsKK+a3qz4nW29ic2NlbmVdJzsKK+a3rD4nW3RlbXBlcl0nOwor5reuPidbcml2ZXIgaW4gYW5odWkgcHJvdmluY2VdJzsKK+a3sT4nW2RlZXBdJzsKK+a3sz4nW2N5YW5vZ2VuXSc7Civmt7U+J1tndWxmXSc7Civmt7c+J1ttaXhdJzsKK+a3uT4nW2Ryb3duXSc7Civmt7o+J1tzaGFsbG93XSc7Civmt7s+J1thcHBlbmRdJzsKK+a4hT4nW2NsZWFyXSc7CivmuIc+J1t0aGlyc3R5XSc7CivmuIg+J1toZWxwXSc7CivmuIk+J1tmb3JkIHN0cmVhbV0nOwor5riKPidbc3VyZ2UgdXBdJzsKK+a4iz4nW2FzdHJpbmdlbnRdJzsKK+a4kz4nW21vdW50YWluIHN0cmVhbV0nOwor5riVPidbc3VyZ2UgdXBdJzsKK+a4mT4nW3NjYXR0ZXJdJzsKK+a4mj4nW3NtYWxsIHNhbmQgYmFua10nOwor5ribPidbZGVjcmVhc2VdJzsKK+a4nT4nW2NoYW5nZV0nOwor5rifPidbKG9mIHdhdGVyKSBub3QgZmxvd2luZ10nOwor5rigPidbZGl0Y2hdJzsKK+a4oT4nW2Nyb3NzXSc7CivmuKM+J1tyZWZ1c2VdJzsKK+a4pD4nW3N3ZWxsaW5nXSc7CivmuKU+J1ttb2lzdGVuXSc7CivmuKY+J1tzd2lybF0nOwor5ripPidbbHVrZXdhcm1dJzsKK+a4qz4nW2JlYXRpbmcgb2Ygb2NlYW5dJzsKK+a4rD4nW21lYXN1cmVdJzsKK+a4rT4nW25hbWUgb2YgYSByaXZlciBpbiBzaGFhbnhpXSc7CivmuK4+J1tyaXZlciBpbiBzaGFuZG9uZyBwcm92aW5jZV0nOwor5rivPidbcG9ydF0nOwor5ri4Pidbc3dpbV0nOwor5ri6PidbZW5kbGVzc2x5IGxvbmddJzsKK+a4vj4nW211ZGR5XSc7CivmuYM+J1tzb3VuZCBvZiB3YXZlc10nOwor5rmKPidbcGllY2UgdG9nZXRoZXJdJzsKK+a5jT4nW3JhcGlkIHdhdGVyIGN1cnJlbnRdJzsKK+a5jj4nW2ZsdXNoZWQgd2l0aCBkcmlua10nOwor5rmWPidbbGFrZV0nOwor5rmYPidbaHVuYW4gcHJvdmluY2VdJzsKK+a5mz4nW2RlZXBdJzsKK+a5nz4nW3JpdmVyIGluIHFpbmdoYWkgcHJvdmluY2VdJzsKK+a5pz4nW3dlbGwgdXBdJzsKK+a5qz4nW2Egc21hbGwgcG9uZF0nOwor5rmuPidbYnVyeV0nOwor5rmvPidbaG90IHdhdGVyXSc7CivmubI+J1tmbG93XSc7CisjIua5sz4nW1tub3QgZm91bmQgaW4gZGljdGlvbmFyeV1dJyIsCivmub4+J1tiYXldJzsKK+a5vz4nW3dldF0nOworIyLmub8+J1t3ZXRdJyIsCisjIua5vz4nW3dldF0nIiwKK+a6jD4nW3BvdXJdJzsKK+a6jz4nW3Bvb2xdJzsKK+a6kD4nW3NwcmluZ10nOwor5rqWPidbcnVsZV0nOwor5rqYPidbYWJydXB0bHldJzsKK+a6nD4nW3NsaWRlXSc7Civmup0+J1tkaXRjaF0nOwor5rqfPidbZHJpenpsaW5nIHJhaW5dJzsKK+a6oj4nW292ZXJmbG93XSc7CivmuqU+J1tiaWddJzsKK+a6qj4nW21vdW50YWluIHN0cmVhbV0nOwor5rqvPidbZ28gdXBzdHJlYW1dJzsKK+a6sj4nW3VyaW5hdGVdJzsKK+a6tj4nW21lbHRdJzsKK+a6tz4nW3ByaXZ5XSc7Civmuro+J1tkcm93bl0nOwor5rq9PidbbW9pc3RdJzsKK+a7gj4nW3RvcnJlbnRpYWxdJzsKK+a7hD4nW2JsdWVdJzsKK+a7hT4nW2V4dGluZ3Vpc2hdJzsKK+a7iT4nW2RlZXBdJzsKK+a7iz4nW2dyb3ddJzsKK+a7jD4nW3dhc2hdJzsKK+a7kT4nW3NsaXBdJzsKK+a7kz4nW3NlZGltZW50XSc7Civmu5Q+J1tvdmVyZmxvd10nOwor5ruVPidbPGFyY2g+IGNvdW50eSBpbiBzaGFuZG9uZyBwcm92aW5jZV0nOwor5rudPidbcmFpbmluZ10nOwor5ruePidbYmxvY2sgdXBdJzsKK+a7rD4nW3NoYW5naGFpXSc7Civmu68+J1tibG9jayB1cF0nOwor5ruyPidbc29hayB0aHJvdWdoXSc7Civmu7Q+J1tkcmlwXSc7Civmu7c+J1t0aGljayBncmF2eV0nOwor5ru4Pidbcml2ZXJiYW5rXSc7Civmu74+J1t0dXJuXSc7Civmu78+J1tmaWxsXSc7CivmvIE+J1t0byBmaXNoXSc7CivmvII+J1tmbG9hdF0nOwor5ryGPidbdmFybmlzaF0nOwor5ryJPidbZmlsdGVyXSc7CivmvI8+J1tsZWFrXSc7CivmvJE+J1t3YXRlcl0nOwor5ryTPidbcml2ZXIgaW4gZ3Vhbmd4aSBwcm92aW5jZV0nOwor5ryUPidbcGVyZm9ybV0nOwor5ryVPidbdHJhbnNwb3J0IGJ5IHdhdGVyXSc7CivmvKA+J1tkZXNlcnRdJzsKK+a8oj4nW2NoaW5lc2UgcGVvcGxlXSc7CivmvKM+J1tmbG93aW5nIHdhdGVyXSc7CivmvKs+J1tvdmVyZmxvdyBvZiB3YXRlcl0nOwor5rysPidbc29ha10nOwor5ryxPidbZ2FyZ2xlXSc7CivmvLI+J1tyaXNlIGluIHByaWNlXSc7CivmvLg+J1tncmFkdWFsbHldJzsKK+a8vj4nW292ZXJmbG93XSc7CivmvL8+J1thbnkgdGhpY2sgZmx1aWRdJzsKK+a9gT4nW3JpdmVyIGluIGFuaHVpXSc7CivmvYU+J1twb3VyXSc7CivmvZQ+J1tjbGVhbl0nOwor5r2YPidbc3VybmFtZV0nOwor5r2bPidbaGlkZV0nOwor5r2cPidbaGlkZV0nOwor5r2fPidbbGFuZCBpbnVuZGF0ZWQgd2l0aCBzYWx0IGZyb20gdGldJzsKK+a9pD4nW3NvZnRdJzsKK+a9pj4nW3RvIGZsb29kXSc7Civmva0+J1tkZWVwIHBvb2xdJzsKK+a9rj4nW3RpZGVdJzsKK+a9rz4nW3N0ZWVwIGJhbmsgYnkgc3RyZWFtXSc7CivmvbA+J1tmbG9vZGluZyByaXZlcl0nOwor5r20PidbcG9uZF0nOwor5r24Pidbd2VlcF0nOwor5r26Pidbc291bmQgb2YgZmxvd2luZyB3YXRlcl0nOwor5r28PidbaGlnaF0nOwor5r6APidbYXN0cmluZ2VudF0nOwor5r6BPidbYXN0cmluZ2VudF0nOwor5r6CPidbY2xlYXIgYW5kIHN0aWxsIHdhdGVyXSc7CivmvoQ+J1twdXJpZnkgd2F0ZXIgYnkgYWxsb3dpbmcgc2VkaW1lbl0nOwor5r6GPidbc3ByYXldJzsKK+a+jj4nW3NwbGF0dGVyXSc7CivmvpE+J1tzbGlkZV0nOwor5r6XPidbYnJvb2tdJzsKK+a+oT4nW3dhc2hdJzsKK+a+oz4nW2NsZWFuc2VdJzsKK+a+pD4nW21hcnNoXSc7CisjIua+qj4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor5r6xPidbc2VkaW1lbnRdJzsKK+a+sz4nW2lubGV0XSc7Civmvrk+J1tjYWxtXSc7Civmv4A+J1thcm91c2VdJzsKK+a/gT4nW211ZGR5XSc7Civmv4I+J1t3YXRlcmZhbGxdJzsKK+a/gz4nW3RoaWNrXSc7Civmv4Y+J1tyaXZlciBiYW5rXSc7Civmv5Q+J1ttYW55XSc7Civmv5U+J1t3ZXRdJzsKK+a/mD4nW211ZF0nOwor5r+bPidbZHJpenpsaW5nXSc7Civmv58+J1toZWxwXSc7Civmv6A+J1ttb2F0XSc7Civmv6E+J1tpbW1lcnNlXSc7Civmv6Q+J1tsYXJnZSB3YXZlc10nOwor5r+rPidbZmxvb2RdJzsKK+a/rD4nW2RyZWRnZV0nOwor5r+uPidbY291bnR5IGluIEhlbmFuIHByb3ZpbmNlXSc7Civmv68+J1t3YXNoIG91dF0nOwor5r+xPidbYmVhY2hdJzsKK+a/sz4nW2hpZGVdJzsKK+a/tj4nW2Jyb2FkXSc7Civmv7o+J1tzcHJpbmtsZV0nOwor5r++Pidbc3RyYWluIG91dF0nOwor54CBPidbd2F2ZXNdJzsKK+eAiT4nW2RyYWluIG9mZl0nOwor54CLPidbanVpY2VdJzsKK+eAjz4nW2NsZWFyXSc7CivngJE+J1t3YXRlcmZhbGxdJzsKK+eAlT4nW2FwcHJvYWNoXSc7CivngJg+J1tyaXZlciBpbiBqaWFuZ3hpIHByb3ZpbmNlXSc7CivngJo+J1t2YXN0XSc7CivngJs+J1tzZWFdJzsKK+eAnT4nW3RyaWNrbGVdJzsKK+eAnj4nW3Bvb2wgaW4gYSByaXZlcl0nOwor54CfPidbc291bmQgb2YgYmVhdGluZyB3aW5kIGFuZCByYWluXSc7CivngKY+J1twb25kXSc7CivngKc+J1tyYWluaW5nXSc7CivngKw+J1tzd2lmdCBjdXJyZW50XSc7CivngLA+J1tvdmVyZmxvd10nOwor54CyPidbd2F2ZXNdJzsKK+eAvj4nW292ZXJmbG93aW5nXSc7CivngYw+J1twb3VyXSc7CivngZE+J1tzcHJpbmtsZV0nOwor54GYPidbYmFua10nOwor54GjPidbYmF5XSc7Civngas+J1tmaXJlXSc7Civnga8+J1tsYW50ZXJuXSc7CivngbA+J1thc2hlc10nOwor54G4PidbY2F1dGVyaXplIHdpdGggbW94YV0nOwor54G8PidbYnVybl0nOwor54G9PidbY2FsYW1pdHldJzsKK+eCiT4nW2ZpcmVwbGFjZV0nOwor54KKPidbY29va10nOwor54KOPidbZmxhbWVdJzsKK+eCkj4nW2ZyeV0nOwor54KZPidbcm9hc3RdJzsKK+eCrD4nW3RvcmNoXSc7Civngq0+J1tjaGFyY29hbF0nOwor54KuPidbbGFyZ2UgZ3VuXSc7Civngq8+J1ticmlnaHRdJzsKK+eCsz4nW2JyaWdodF0nOwor54K4PidbZnJ5IGluIG9pbF0nOwor54K5PidbZG90XSc7Civngro+J1tkb10nOwor54OIPidbZmllcnldJzsKK+eDiz4nW2JvYXN0XSc7Civng48+J1tjcm93XSc7Civng5k+J1ticmFuZF0nOwor54OdPidbcmlzZV0nOwor54OfPidbc21va2VdJzsKK+eDsT4nW2JyaWdodF0nOwor54O5PidbYm9pbF0nOwor54O9Pidbc2lnbmFsIGZpcmVdJzsKK+eEiT4nW3RoZXJldXBvbl0nOwor54SUPidbZmxhbWVdJzsKK+eEmT4nW2RyeSBvdmVyIHNsb3cgZmlyZV0nOwor54SaPidbYnVybl0nOwor54ScPidbZmlyZV0nOwor54ShPidbbmVnYXRpdmVdJzsKK+eEpj4nW2J1cm5lZF0nOwor54S2PidbeWVzXSc7CivnhLw+J1tidXJuXSc7CivnhYk+J1tzbWVsdF0nOwor54WMPidbYnJpZ2h0XSc7CivnhY4+J1tmcnkgaW4gZmF0IG9yIG9pbF0nOwor54WVPidbYnJpZ2h0XSc7CivnhZY+J1t3YXJtXSc7CivnhZk+J1tzbW9rZV0nOwor54WiPidbYWxvbmVdJzsKK+eFpD4nW2NvYWxdJzsKK+eFpT4nW3NoaW5pbmddJzsKK+eFpj4nW2tpbmRdJzsKK+eFpz4nW3NoaW5lXSc7Civnhak+J1tib3RoZXJdJzsKK+eFrD4nW3JvYXN0XSc7Civnha4+J1tjb29rXSc7Civnhb0+J1tzdGlyIHVwXSc7CivnhoQ+J1twdXQgb3V0XSc7Civnhog+J1ticmlnaHRdJzsKK+eGij4nW2JlYXJdJzsKK+eGjz4nW3Ntb2tlXSc7CivnhpQ+J1ttZWx0XSc7CisjIueGlT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor54aZPidbYnJpZ2h0XSc7Civnhp8+J1t3ZWxsIGNvb2tlZF0nOwor54aoPidbaXJvbl0nOwor54asPidbY29vayBkb3duXSc7CivnhrE+J1tob3RdJzsKK+eGuT4nW2RpbSBsaWdodF0nOwor54a+PidbYnVybmluZyBob3RdJzsKK+eHgz4nW2J1cm5dJzsKK+eHiD4nW2xhbnRlcm5dJzsKK+eHiT4nW2hlYXQgd2l0aCBmaXJlXSc7Civnh44+J1tidXJuXSc7Civnh5A+J1twaG9zcGhvcnVzXSc7Civnh5I+J1tidXJuXSc7Civnh5Q+J1t0byByb2FzdF0nOwor54eVPidbc3dhbGxvdyAoYmlyZCldJzsKKyMi54eXPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivnh58+J1tlbmNhbXBtZW50XSc7Civnh6A+J1t3YXJtXSc7Civnh6U+J1tkcnldJzsKK+eHpj4nW3ZpdmlkXSc7Civnh6c+J1tmbGludHN0b25lXSc7Civnh6w+J1tidXJuIGRvd25dJzsKK+eHrT4nW2NhbmRsZV0nOwor54euPidbaGFybW9uaXplXSc7CisjIueHtT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor54e5PidbZmlyZV0nOwor54e7Pidbc21va2VdJzsKK+eHvD4nW2NpbmRlcnNdJzsKK+eHvz4nW3NoaW5lXSc7CivniIY+J1tjcmFja2xlXSc7CivniI0+J1tzaGluZV0nOwor54iQPidbZmlyZXBsYWNlXSc7CivniJs+J1tyb3R0ZW5dJzsKK+eIqD4nW292ZW5dJzsKK+eIqj4nW2NsYXddJzsKK+eIrD4nW2NyYXdsXSc7CivniK0+J1tkaXNwdXRlXSc7CivniLA+J1tsZWFkIG9uIHRvXSc7CivniLI+J1tkb10nOwor54i1PidbZmV1ZGFsIHRpdGxlIG9yIHJhbmtdJzsKK+eItj4nW2ZhdGhlcl0nOwor54i6PidbZmF0aGVyXSc7CivniLs+J1tkaWFncmFtcyBmb3IgZGl2aW5hdGlvbl0nOwor54i8PidbY2hvcHBpbmcgYm9hcmQgb3IgYmxvY2tdJzsKK+eIvT4nW2hhcHB5XSc7CivniL4+J1t5b3VdJzsKK+eIvz4nW2hhbGYgb2YgdHJlZSB0cnVua10nOwor54mAPidbYmVkXSc7CivniYY+J1t3YWxsXSc7CivniYc+J1tzbGljZV0nOwor54mIPidbcHJpbnRpbmcgYmxvY2tzXSc7CivniYs+J1ttZW1vcmFuZHVtXSc7CivniYw+J1tzaWduYm9hcmRdJzsKK+eJkj4nW2RvY3VtZW50c10nOwor54mYPidbd3JpdGluZyB0YWJsZXRdJzsKK+eJmT4nW3Rvb3RoXSc7CivniZs+J1tjb3ddJzsKK+eJnT4nW2ZlbWFsZSBvZiBzcGVjaWVzXSc7CivniZ8+J1ttYWtlXSc7CivniaE+J1ttYWxlIG9mIGFuaW1hbHNdJzsKK+eJoj4nW3ByaXNvbl0nOwor54mnPidbdGVuZCBjYXR0bGVdJzsKK+eJqT4nW3RoaW5nXSc7CivnibI+J1tzYWNyaWZpY2lhbCBhbmltYWxdJzsKK+eJtD4nW2dvcmVdJzsKK+eJuT4nW3NwZWNpYWxdJzsKK+eJvT4nW2RyYWddJzsKK+eJvj4nW3RvIG9wcG9zZV0nOwor54qAPidbcmhpbm9jZXJvc10nOwor54qBPidbcGxvd10nOwor54qCPidbcGxvd10nOwor54qHPidbcnVuIGZhc3RdJzsKK+eKkj4nW2VudGVydGFpbiB2aWN0b3Jpb3VzIHNvbGRpZXJzXSc7CivnipY+J1ticmluZGxlZCBveF0nOwor54qgPidbc2FjcmlmaWNlXSc7CivniqI+J1tjYWxmXSc7Civniqc+J1tzYWNyaWZpY2VdJzsKK+eKrD4nW2RvZ10nOwor54qvPidbY29tbWl0IGNyaW1lXSc7CivnirI+J1t3b2xmXSc7CivnirY+J1tmb3JtXSc7Civnirk+J1tsaWtlXSc7Civni4I+J1tpbnNhbmVdJzsKK+eLgz4nW3RvIGNvdmV0XSc7Civni4Q+J1t0cmliZSBmcm9tIG5vcnRoZXJuIGNoaW5hXSc7Civni4Y+J1twZWtpbmVzZSBkb2ddJzsKK+eLjj4nW2JlIGZhbWlsaWFyIHdpdGhdJzsKK+eLkD4nW3NwZWNpZXMgb2YgZm94XSc7Civni5I+J1tiYWJvb25dJzsKK+eLlz4nW2RvZ10nOwor54uZPidbYXBlXSc7CisjIueLmz4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor54ugPidbdmljaW91c10nOwor54uhPidbY3VubmluZ10nOwor54uiPidbYW5pbWFsIG5hbWVdJzsKK+eLqT4nW3dpbnRlciBodW50aW5nXSc7Civni6w+J1thbG9uZV0nOwor54utPidbbmFycm93XSc7Civni7c+J1tyYXNoXSc7Civni7g+J1tmb3hdJzsKK+eLuT4nW25hcnJvd10nOwor54u8Pidbd29sZl0nOwor54u9PidbbGVnZW5kYXJ5IGFuaW1hbCB3aXRoIHNob3J0IGZvcmVdJzsKK+eMij4nW2xpb25dJzsKK+eMlj4nW21hZF0nOwor54yXPidbZXhjbGFtYXRpb24gb2YgYWRtaXJhdGlvbl0nOwor54ybPidbdmlvbGVudF0nOwor54ycPidbZ3Vlc3NdJzsKK+eMnT4nW2FicnVwdGx5XSc7CivnjJ8+J1todW50XSc7CivnjKU+J1t2dWxnYXJdJzsKK+eMqT4nW3NwZWNpZXMgb2Ygb3Jhbmd1dGFuXSc7CivnjKo+J1twaWddJzsKK+eMqz4nW2NhdF0nOwor54yuPidbb2ZmZXJdJzsKKyMi54yvPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivnjLQ+J1ttb25rZXldJzsKK+eMtj4nW2xpa2VdJzsKK+eMtz4nW3BsYW5dJzsKK+eMvj4nW2NyYWZ0eV0nOwor54y/PidbYXBlXSc7CivnjYQ+J1twcmlzb25dJzsKK+eNhT4nW2xpb25dJzsKK+eNjj4nW3ByaXplXSc7CivnjY8+J1t0aGUgcGFudGhlcl0nOwor542XPidbdW5ydWx5XSc7CivnjaM+J1tiZWFzdF0nOwor542oPidbYWxvbmVdJzsKK+eNqj4nW3NseV0nOwor542wPidbZmVyb2Npb3VzIGFwcGVhcmFuY2VdJzsKK+eNsj4nW29idGFpbl0nOwor5421PidbaHVudF0nOwor5424PidbYmVhc3RdJzsKK+eNuj4nW290dGVyXSc7Civnjbs+J1tvZmZlcl0nOwor546EPidbZGVlcF0nOwor546HPidbdG8gbGVhZF0nOwor546JPidbamFkZV0nOwor546LPidba2luZ10nOwor546WPidbYmxhY2stY29sb3JlZCBqYWRlXSc7Civnjqk+J1twbGF5IHdpdGhdJzsKK+eOsj4nW3RpbmtsaW5nIG9mIGphZGVdJzsKK+eOsz4nW3RvcnRvaXNlIHNoZWxsXSc7Civnjrs+J1tnbGFzc10nOwor54+APidbYW1iZXJdJzsKK+ePgj4nW2luZmVyaW9yIGtpbmQgb2YgamFkZV0nOwor54+IPidbb3JuYW1lbnQgYXR0YWNoZWQgd29tYW4nJ3MgaGFpcnBpXSc7Civnj4o+J1tjb3JhbF0nOwor54+NPidbcHJlY2lvdXNdJzsKK+ePjj4nW3ByZWNpb3VzXSc7Civnj54+J1traW5kIG9mIG5lY2tsYWNlXSc7Civnj6A+J1twcmVjaW91cyBzdG9uZV0nOwor54+lPidbZWFyIG9ybmFtZW50XSc7Civnj6o+J1tqYWRlIHRhYmxlIGNvbmZlcnJlZCB1cG9uIGZldWRhbF0nOwor54+tPidbY2xhc3NdJzsKK+ePrj4nW2phZGUgb3JuYW1lbnRdJzsKK+ePsT4nW25lY2tsYWNlIG1hZGUgb2YgcHJlY2lvdXMgc3RvbmVzXSc7CisjIuePuD4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor54++PidbYXBwZWFyXSc7CivnkIM+J1tiYWxsXSc7CivnkIU+J1t2YXJpZXR5IG9mIHdoaXRlIGNhcm5lbGlhbl0nOwor55CGPidbcmVhc29uXSc7CivnkIk+J1tzcGFya2xpbmcgc3RvbmVdJzsKK+eQoj4nW3BvbGlzaCBqYWRlXSc7CivnkKU+J1tqZXdlbCBpbiBzaGFwZSBvZiB0aWdlcl0nOwor55CyPidbbmVja2xhY2VdJzsKK+eQsz4nW2JlYXV0aWZ1bCBqYWRlXSc7CivnkLQ+J1tjaGluZXNlIGx1dGUgb3IgZ3VpdGFyXSc7CivnkLU+J1tndWl0YXItbGlrZSBpbnN0cnVtZW50XSc7CivnkLY+J1tndWl0YXItbGlrZSBpbnN0cnVtZW50XSc7CivnkLo+J1tlbmFtZWxdJzsKK+eQvz4nW2JyaWdodF0nOwor55GBPidbZmluZSBwaWVjZSBvZiBqYWRlXSc7CivnkZU+J1tmbGF3IGluIGdlbV0nOwor55GZPidbYWdhdGVdJzsKK+eRmj4nW2NvcmFsXSc7CivnkZs+J1tsdXN0ZXIgb2YgZ2VtXSc7CivnkZw+J1tmbGF3bGVzcyBnZW0gb3IgamV3ZWxdJzsKK+eRnj4nW2ZlbGljaXRvdXMgb21lbl0nOwor55GfPidbbGFyZ2Ugc3RyaW5nZWQgbXVzaWNhbCBpbnN0cnVtZW50XSc7CivnkaA+J1twcmVjaW91cyBzdG9uZV0nOwor55GjPidbZnJhZ21lbnRzXSc7CivnkaQ+J1twcmVjaW91cyBqYWRlXSc7Civnkak+J1tsdXN0cmUgb2YgZ2Vtc10nOwor55GqPidbYWdhdGVdJzsKK+eRrz4nW2tpbmQgb2Ygd2hpdGUgY29ybmVsaWFuXSc7CivnkbA+J1tleHRyYW9yZGluYXJ5XSc7CivnkbM+J1tsdXN0ZXIgb2YgZ2VtXSc7CivnkbY+J1twcmVjaW91cyBqYWRlXSc7Civnkb4+J1ticmlsbGlhbmNlIG9mIGdlbXNdJzsKK+eSgz4nW2dsYXNzXSc7Civnkos+J1tqYWRlIHBsYXl0aGluZ10nOwor55KePidbdW5wb2xpc2hlZCBnZW1dJzsKK+eSoj4nW3ByZWNpb3VzIHN0b25lXSc7Civnkqc+J1twaWVjZSBvZiBqYWRlIHdpdGggaG9sZSBpbiBpdF0nOwor55KwPidbamFkZSByaW5nIG9yIGJyYWNlbGV0XSc7Civnkr0+J1tpbXBlcmlhbCBzaWduZXRdJzsKK+eTij4nW2phZGVdJzsKK+eTjz4nW2dlbSBjdXQgbGlrZSBkcmFnb25dJzsKK+eTlD4nW25lY2tsYWNlIG1hZGUgb2YgcHJlY2lvdXMgc3RvbmVzXSc7Civnk5w+J1ttZWxvbl0nOwor55OgPidbYm90dGxlIGdvdXJkXSc7Civnk6I+J1tsYWRsZSBtYWRlIGZyb20gZHJpZWQgZ291cmRdJzsKK+eToz4nW3BldGFsXSc7Civnk6Y+J1t0aWxlXSc7Civnk6c+J1tkZWNhZ3JhbV0nOwor55OpPidba2lsb3dhdHRdJzsKK+eTrj4nW2VhcnRoZW4gamFyXSc7Civnk7A+J1tbbm90IGZvdW5kIGluIGRpY3Rpb25hcnldXSc7Civnk7E+J1ttaWxsaWdyYW1dJzsKKyMi55OyPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivnk7Y+J1tqdWddJzsKK+eTtz4nW2Nyb2NrZXJ5XSc7Civnk7g+J1toZWN0b2dyYW1dJzsKK+eUgz4nW2JyaWNrIHdhbGwgb2YgYSB3ZWxsXSc7CivnlIQ+J1tleGFtaW5lXSc7CivnlIU+J1tjZW50aWdyYW1dJzsKK+eUjD4nW2Jvd2xdJzsKK+eUjT4nW3JhZnRlcnMgc3VwcG9ydGluZyByb29mIHRpbGVzXSc7CivnlI4+J1ticmlja10nOwor55SRPidbYm9pbGVyIGZvciBzdGVhbWluZyByaWNlXSc7CivnlJM+J1tnbGF6ZWQgdGlsZXNdJzsKK+eUlT4nW2VhcnRoZW4gamFyXSc7CivnlJg+J1tzd2VldG5lc3NdJzsKK+eUmj4nW2dyZWF0IGV4dGVudF0nOwor55ScPidbc3dlZXRdJzsKK+eUnj4nW3Rhc3RlXSc7CivnlJ8+J1tsaWZlXSc7CivnlKM+J1tnaXZlIGJpcnRoXSc7CivnlKU+J1tzaXN0ZXInJ3MgY2hpbGRdJzsKK+eUpj4nW2JlIHJlYm9ybl0nOwor55SoPidbdXNlXSc7CivnlKs+J1tiZWdpbl0nOwor55SsPidbcGF0aF0nOwor55SwPidbZmllbGRdJzsKK+eUsT4nW2NhdXNlXSc7CivnlLI+J1thcm1vcl0nOwor55SzPidbdG8gc3RhdGUgdG8gYSBzdXBlcmlvcl0nOwor55S3PidbbWFsZV0nOwor55S4Pidbc3VidXJicyBvZiBjYXBpdGFsXSc7CivnlLo+J1tyYWlzZWQgcGF0aCBiZXR3ZWVuIGZpZWxkc10nOwor55S7PidbcGFpbnRpbmddJzsKK+eUvD4nW3JhaXNlZCBwYXRoIGJldHdlZW4gZmllbGRzXSc7CivnlYQ+J1tzdG9wXSc7CivnlYY+J1tjaGluZXNlIGxhbmQgbWVhc3VyZV0nOworIyLnlYk+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+eVij4nW3Bsb3ddJzsKK+eViz4nW3RpbGwgbGFuZF0nOwor55WMPidbYm91bmRhcnldJzsKKyMi55WNPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivnlY8+J1tmZWFyXSc7CivnlZE+J1tkcnkgKGFzIG9wcG9zZWQgdG8gcmljZSkgZmllbGRdJzsKK+eVlD4nW2JvdW5kYXJ5IHBhdGggZGl2aWRpbmcgZmllbGRzXSc7CivnlZk+J1tzdG9wXSc7CivnlZo+J1tzdHJhdyBiYXNrZXRdJzsKK+eVmz4nW2JvcmRlcl0nOwor55WcPidbbGl2ZXN0b2NrXSc7CivnlZ0+J1tjaGluZXNlIGxhbmQgbWVhc3VyZV0nOwor55WgPidbZ2FyZGVuXSc7CivnlaI+J1tlbmRdJzsKK+eVpD4nW3BsYWNlIGZvciB3b3JzaGlwcGluZyB0aGUgaGF2ZW5dJzsKK+eVpT4nW2FwcHJveGltYXRlbHldJzsKK+eVpj4nW3NlY3Rpb25zIGluIHZlZ2V0YWJsZSBmYXJtXSc7Civnlac+J1thcHByb3hpbWF0ZWx5XSc7CisjIueVqT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor55WqPidbdGFrZSB0dXJuc10nOwor55WrPidbZGVsaW5lYXRlXSc7CisjIueVrT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor55WwPidbZGlmZmVyZW50XSc7CivnlbM+J1tyZXBlYXRdJzsKK+eVtD4nW2Zhcm1sYW5kXSc7CivnlbY+J1tiZWFyXSc7Civnlbc+J1tyYWlzZWQgcGF0aCBiZXR3ZWVuIGZpZWxkc10nOwor55W4Pidbb2RkXSc7Civnlb8+J1tpbXBlcmlhbCBkb21haW5dJzsKK+eWgj4nW3JlcGVhdF0nOwor55aGPidbYm91bmRhcnldJzsKK+eWhz4nW2Zhcm1sYW5kXSc7Civnlok+J1tyZXBlYXRdJzsKK+eWij4nW3JlcGVhdF0nOwor55aLPidbcm9sbF0nOwor55aOPidbbmVnbGVjdF0nOwor55aPPidbbmVnbGVjdF0nOwor55aRPidbZG91YnRdJzsKK+eWlD4nW2NhcmJ1bmNsZV0nOwor55aaPidbY2hyb25pYyBkaXNlYXNlXSc7Civnlp0+J1toZXJuaWFdJzsKK+eWoz4nW3dhcnRdJzsKK+eWpT4nW3NjYWJpZXNdJzsKK+eWqz4nW2VwaWRlbWljXSc7CivnlrE+J1thY25lXSc7CivnlrI+J1tmZWVsIHRpcmVkXSc7CivnlrM+J1tjaGlsZGhvb2QgZGlzZWFzZXNdJzsKK+eWtT4nW2ZsYXddJzsKK+eWuD4nW2phdW5kaWNlXSc7Civnlrk+J1ttZWFzbGVzXSc7Civnlrw+J1thY2hlc10nOwor55a9PidbdWxjZXJdJzsKK+eWvj4nW2lsbG5lc3NdJzsKK+eXgj4nW3NjYWJdJzsKK+eXgz4nW2luZGlnZXN0aW9uXSc7Civnl4U+J1tpbGxuZXNzXSc7Civnl4c+J1tkaXNlYXNlXSc7Civnl4o+J1tiZSBoZWFsZWRdJzsKK+eXjT4nW3dvdW5kXSc7Civnl5I+J1tpdGNoXSc7Civnl5Q+J1toZW1vcnJob2lkc10nOwor55eVPidbc2Nhcl0nOwor55eYPidbc21hbGxwb3hdJzsKK+eXmT4nW2NvbnZ1bHNpb25zXSc7Civnl5s+J1twYWluXSc7Civnl54+J1tkeXNwZXBzaWFdJzsKK+eXoj4nW2R5c2VudHJ5XSc7Civnl6M+J1tzcG90c10nOwor55epPidbdGhpbl0nOwor55ewPidbcGhsZWdtXSc7Civnl7I+J1twb2NrLW1hcmtlZF0nOwor55ezPidbcG9jay1tYXJrZWRdJzsKK+eXtD4nW2Zvb2xpc2hdJzsKK+eXuj4nW3BhcmFseXNpc10nOwor55e8PidbY2hyb25pYyBkaXNlYXNlXSc7Civnl74+J1tjaHJvbmljIGlsbG5lc3NdJzsKK+eXvz4nW3BhcmFseXNpc10nOwor55iBPidbZmVlbCB0aXJlZF0nOwor55iJPidbZ2V0IHdlbGxdJzsKK+eYiz4nW2NyYXp5XSc7CivnmI0+J1t1bGNlcnNdJzsKK+eYnz4nW2VwaWRlbWljXSc7CivnmKA+J1t0aGluXSc7CivnmKE+J1t0dW1vcl0nOwor55iiPidbc2Nhcl0nOwor55ikPidbdHVtb3JdJzsKK+eYpz4nW2ludGVybWl0dGVudCBmZXZlcl0nOwor55iwPidbc2Nyb2Z1bGFdJzsKK+eYtD4nW21hbGFyaWEgcGVzdGlsZW50aWFsIHZhcG9yc10nOwor55i7PidbZmlzdHVsYV0nOwor55mCPidbYmUgaGVhbGVkXSc7CivnmYY+J1tjb25zdW1wdGlvbl0nOwor55mHPidbZXBpbGVwc3ldJzsKK+eZiD4nW2Ficm9nYXRlXSc7CivnmYw+J1tjYW5jZXJdJzsKK+eZkj4nW2dldCB3ZWxsXSc7CivnmZY+J1tjcmF2aW5nXSc7CivnmZg+J1tzb3JlXSc7CivnmZw+J1tlcnl0aGVtYV0nOwor55mhPidbc2lsbHldJzsKK+eZoj4nW2l0Y2hdJzsKK+eZpz4nW3Njcm9mdWxvdXMgbHVtcHMgb3Igc3dlbGxpbmdzXSc7Civnmag+J1txdWlja2x5XSc7Civnmak+J1tsZXByb3N5XSc7Civnmao+J1tzcGFzbXNdJzsKK+eZrD4nW3Jpbmd3b3Jtc10nOwor55mwPidbY2FyYnVuY2xlXSc7CivnmbI+J1tjcmF6eV0nOwor55m2PidbbGVnc10nOwor55m4PidbbGFzdCBvZiB0ZW4gY2VsZXN0aWFsIHN0ZW1zXSc7Civnmbo+J1tpc3N1ZV0nOwor55m7PidbcmlzZV0nOwor55m8PidbaXNzdWVdJzsKK+eZvT4nW3doaXRlXSc7Civnmb4+J1tvbmUgaHVuZHJlZF0nOwor55qAPidba2VybmVsXSc7CivnmoM+J1tjb3VudGVuYW5jZV0nOwor55qEPidbcG9zc2Vzc2l2ZV0nOwor55qGPidbYWxsXSc7Civnmoc+J1tyb3lhbF0nOwor55qIPidbZm9sbG93XSc7Civnmos+J1t0aGUgaGlnaCBsYW5kIGFsb25nIGEgcml2ZXJdJzsKK+eajj4nW3doaXRlXSc7CivnmpA+J1t0aGUgaGlnaCBsYW5kIGFsb25nIGEgcml2ZXJdJzsKK+eakz4nW2JyaWdodF0nOwor55qWPidbYW5odWkgcHJvdmluY2VdJzsKK+eamT4nW3doaXRlXSc7Civnmpo+J1ticmlsbGlhbnQgd2hpdGVdJzsKK+earj4nW3NraW5dJzsKK+easD4nW3BpbXBsZXNdJzsKK+eatD4nW2NoYXBwZWRdJzsKK+eatz4nW2RydW1dJzsKK+eauD4nW2NyYWNrXSc7Civnmrk+J1tjcmFja10nOwor55q6Pidbd3JpbmtsZXNdJzsKK+eavz4nW3NoYWxsb3cgY29udGFpbmVyXSc7Civnm4I+J1tiYXNpbl0nOwor55uDPidbZ2xhc3NdJzsKK+ebhj4nW2Jhc2luXSc7Civnm4g+J1tmaWxsXSc7Civnm4o+J1twcm9maXRdJzsKK+ebjT4nW3doYXQ/IHdoeSBub3Q/IGNvcnJlc3BvbmRdJzsKK+ebkj4nW3NtYWxsIGJveCBvciBjYXNlXSc7Civnm5Y+J1tjb3Zlcl0nOwor55uXPidbcm9iXSc7Civnm5s+J1thYnVuZGFudF0nOwor55ucPidbcm9iXSc7Civnm54+J1tzbWFsbCBjdXAgb3IgY29udGFpbmVyXSc7Civnm58+J1tzd2Vhcl0nOwor55uhPidbZXhoYXVzdF0nOwor55ujPidbc3VwZXJ2aXNlXSc7Civnm6Q+J1t0cmF5XSc7Civnm6U+J1t3YXNoXSc7Civnm6c+J1tjb3R0YWdlXSc7Civnm6o+J1t0byB0b3NzIGFib3V0XSc7Civnm64+J1tleWVdJzsKK+ebsj4nW2JsaW5kXSc7Civnm7Q+J1tzdHJhaWdodF0nOwor55u4PidbbXV0dWFsXSc7Civnm7s+J1tnbGFyZV0nOwor55u+Pidbc2hpZWxkXSc7CivnnIE+J1twcm92aW5jZV0nOwor55yEPidbdG8gbG9vayBhc2thbmNlXSc7CivnnIc+J1tibGluZCBpbiBvbmUgZXllXSc7CivnnIg+J1tnbG9hdF0nOwor55yJPidbZXllYnJvd3NdJzsKK+eciz4nW2xvb2tdJzsKK+ecjD4nW2NvdW50eV0nOwor55ybPidbZGltXSc7CisjIuecnj4nW3JlYWxdJyIsCivnnJ8+J1tyZWFsXSc7CivnnKA+J1tjbG9zZSBleWVzXSc7CisjIuecpD4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor55ylPidbZXllIHNvY2tldHNdJzsKK+ecpj4nW2Nvcm5lciBvZiB0aGUgZXllc10nOwor55ypPidbY29uZnVzZV0nOwor55y3PidbdGFrZSBpbnRlcmVzdCBpbl0nOwor55y4PidbcHVwaWwgb2YgZXllXSc7CivnnLo+J1tsb29rIGF0XSc7CivnnLw+J1tleWVdJzsKK+edgD4nW21ha2UgbW92ZV0nOwor552HPidbbG9vayBhdF0nOwor552aPidbY29ybmVyIG9mIGV5ZV0nOwor552bPidbZXllYmFsbF0nOwor552hPidbc2xlZXBdJzsKK+edoz4nW3N1cGVydmlzZV0nOwor552lPidbbG9vayBhc2thbmNlIGF0XSc7CivnnaY+J1tmcmllbmRseV0nOwor552oPidbbG9vayBhc2thbmNlIGF0XSc7Civnnas+J1tleWVsYXNoZXNdJzsKK+eduT4nW2xvb2sgYXRdJzsKK+edvj4nW3Rlc3RpY2xlXSc7Civnnb8+J1tzaHJld2RdJzsKK+eeiz4nW2dsYXJlIHdpdGggYW5nZXJdJzsKK+eejj4nW2JsaW5kXSc7CivnnpE+J1tjbG9zZSBleWVzXSc7Civnnp4+J1tkZWNlaXZlXSc7CivnnqA+J1tsb29rIGF0XSc7CivnnqU+J1t0YWtlIGZsZWV0aW5nIGdsYW5jZSBhdF0nOwor556sPidbd2lua10nOwor556tPidbYnJpZ2h0XSc7CivnnrA+J1t3YXRjaF0nOwor556zPidbcHVwaWwgb2YgZXllXSc7CivnnrY+J1tkaW1dJzsKKyMi5562PidbZGltXSciLAor5567PidbbG9va10nOwor5568PidbZXllbGlkXSc7Civnnr0+J1tibGluZF0nOwor556/Pidbc3VybmFtZV0nOwor55+HPidbc3R1cGlkXSc7Civnn40+J1tsb29rIGFib3V0IGluIGZpcmdodCBvciBhbGFybV0nOwor55+XPidbc3RyYWlnaHRdJzsKK+efmj4nW3dhdGNoIGNhcmVmdWxseV0nOwor55+bPidbc3BlYXJdJzsKK+efnD4nW3BpdHldJzsKK+efoj4nW2Fycm93XSc7Civnn6M+J1twYXJ0aWNsZSBvZiBjb21wbGV0ZWQgYWN0aW9uXSc7Civnn6U+J1trbm93XSc7Civnn6c+J1ttdWNoIG1vcmVdJzsKK+efqT4nW2NhcnBlbnRlcicncyBzcXVhcmVdJzsKK+efrT4nW3Nob3J0XSc7Civnn64+J1tzaG9ydF0nOwor55+vPidbY29ycmVjdF0nOwor55+zPidbc3RvbmVdJzsKK+efvD4nW3N0b25lIGJyaWRnZV0nOwor56CCPidbc2FuZF0nOwor56CMPidbc3RvbmUgc3RlcHNdJzsKK+egkj4nW2Fyc2VuaWNdJzsKK+eglD4nW2dyaW5kXSc7CivnoJU+J1ticmVha10nOwor56CgPidbcm9ja3ldJzsKK+egpT4nW3doZXRzdG9uZV0nOwor56CmPidbc3RvY2thZGVdJzsKK+egpz4nW2FudmlsXSc7CivnoLI+J1tndW5dJzsKK+egtD4nW2JyZWFrXSc7CivnoLo+J1t3aGV0c3RvbmVdJzsKK+egvz4nW21pbmVdJzsKK+ehhT4nW3NpbGljb25dJzsKK+ehnT4nW3NhbHRwZXRlcl0nOwor56GrPidbc3VsZnVyXSc7Civnoaw+J1toYXJkXSc7Civnoa8+J1tpbmtzdG9uZV0nOworIyLnobI+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKKyMi56G0PidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivnobw+J1tib3JheF0nOwor56KBPidbY2hlc3NdJzsKK+eihj4nW2Fycm93LXRpcF0nOwor56KHPidbYW5jaG9yXSc7Civnoow+J1tyb3VnaF0nOwor56KNPidbb2JzdHJ1Y3RdJzsKK+eijj4nW2JyZWFrXSc7CivnopE+J1tzdG9uZSB0YWJsZXRdJzsKK+eikz4nW3Blc3RsZV0nOworIyLnopU+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+eilz4nW2Jvd2xdJzsKK+eimj4nW3N1YnVyYl0nOwor56KjPidbc3RvbmUgdGFibGV0XSc7Civnoqc+J1tqYWRlXSc7Civnoqk+J1tncmVhdF0nOwor56KqPidbc3RvbmUgc2xhYiB1c2VkIGZvciB3YXNoaW5nIGNsb3RdJzsKK+eirz4nW2FnYXRlXSc7CisjIueitT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor56K6Pidbc3VyZV0nOwor56K8PidbbnVtYmVyXSc7Civnor4+J1tyb2xsZXJdJzsKK+ejgT4nW21hZ25ldGljXSc7Civno4U+J1twb3VuZF0nOworIyLno4Y+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+ejij4nW3BpbGUgb2Ygcm9ja3Mgb3Igc3RvbmVzXSc7Civno4s+J1twb2xpc2hdJzsKK+ejkD4nW2xhcmdlIHJvY2tdJzsKK+ejkT4nW3N0b25lIG1pbGxdJzsKK+ejlD4nW2Rvd253YXJkIHN0cm9rZSBzbGFudGluZyByaWdoXSc7Civno5o+J1t0aWxlXSc7Civno6c+J1tzYW5kIGFuZCBncmF2ZWxdJzsKK+ejqD4nW2dyaW5kXSc7Civno6w+J1ttdXNpY2FsIGluc3RydW1lbnRdJzsKK+ejrz4nW2pldHR5XSc7Civno7Q+J1tzdGVwcyBvbiBsZWRnZV0nOwor56O9PidbYmFycmVuIGxhbmRdJzsKK+ekgT4nW3JlZWZdJzsKKyMi56SHPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivnpI4+J1tmb3VuZGF0aW9uIHN0b25lXSc7CisjIuekjj4nW2ZvdW5kYXRpb24gc3RvbmVdJyIsCisjIuekkj4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor56SZPidbb2JzdHJ1Y3RdJzsKK+ekpj4nW21pbmVdJzsKK+ekqj4nW3doZXRzdG9uZV0nOwor56SrPidbZ3JhdmVsXSc7CivnpKw+J1thbHVtXSc7CivnpLo+J1tzaG93XSc7CivnpLw+J1tzb2NpYWwgY3VzdG9tXSc7CivnpL4+J1tnb2Qgb2YgdGhlIHNvaWwgYW5kIGFsdGFycyB0byBoaW1dJzsKK+elgD4nW3RvIHNhY3JpZmljZV0nOwor56WBPidbcHJheV0nOwor56WHPidbb25seV0nOwor56WIPidbcHJheV0nOwor56WJPidbaGFwcGluZXNzXSc7CivnpZA+J1tkaXZpbmUgaW50ZXJ2ZW50aW9uXSc7CivnpZM+J1tleG9yY2lzZV0nOwor56WVPidbbXlzdGVyaW91c10nOwor56WWPidbYW5jZXN0b3JdJzsKK+ellz4nW3Jlc3BlY3RdJzsKK+elmj4nW3Rocm9uZV0nOwor56WdPidbcHJheSBmb3IgaGFwcGluZXNzIG9yIGJsZXNzaW5nc10nOwor56WePidbc3Bpcml0XSc7CivnpZ8+J1tldmlsIHNwaXJpdF0nOwor56WgPidbYW5jZXN0cmFsIHRlbXBsZV0nOwor56WiPidbb25lJydzIGRlY2Vhc2VkIGZhdGhlcl0nOwor56WlPidbZ29vZCBsdWNrXSc7Civnpag+J1tzbGlwIG9mIHBhcGVyIG9yIGJhbWJvb10nOwor56WtPidbc2FjcmlmaWNlIHRvXSc7Civnpbc+J1twcmF5XSc7Civnpbo+J1tnb29kIGx1Y2tdJzsKK+elvz4nW2JsZXNzaW5nXSc7CivnpoA+J1tyZXBvcnQgdG9dJzsKK+emgT4nW3Jlc3RyaWN0XSc7CivnpoQ+J1tibGVzc2luZ10nOwor56aFPidbbWVkaXRhdGlvbl0nOwor56aKPidbc2VtaS1hbm51YWwgY2VyZW1vbnkgb2YgcHVyaWZpY2FdJzsKK+emjT4nW21pc2ZvcnR1bmVdJzsKK+emjj4nW2x1Y2t5XSc7Civnpo8+J1toYXBwaW5lc3NdJzsKK+emnT4nW1tub3QgZm91bmQgaW4gZGljdGlvbmFyeV1dJzsKK+empj4nW2RlZmVuZF0nOwor56anPidbaGFwcGluZXNzXSc7Civnpqo+J1ttZWRpdGF0aW9uXSc7Civnpq4+J1tzb2NpYWwgY3VzdG9tXSc7CivnprA+J1tvbmUnJ3MgZGVjZWFzZWQgZmF0aGVyXSc7CivnprM+J1twcmF5IG9yIHNhY3JpZmljZV0nOwor56a5PidbbGVnZW5kYXJ5IGhzaWEgZHluYXN0eSBmb3VuZGVyXSc7Civnpro+J1tkaXN0cmljdF0nOwor56a9PidbYmlyZHNdJzsKK+emvj4nW2dyYWluIHN0aWxsIG9uIHN0YWxrXSc7Civnpr8+J1tiYWxkXSc7Civnp4A+J1tlYXIgb2YgZ3JhaW5dJzsKK+engT4nW3ByaXZhdGVdJzsKK+eniT4nW2dyYXNwXSc7Civnp4s+J1thdXR1bW5dJzsKK+enkT4nW3NlY3Rpb25dJzsKK+enkj4nW2JlYXJkIG9mIGdyYWluIG9yIGNvcm5dJzsKK+enlT4nW2VtcHR5IGdyYWluIG9yIHJpY2UgaHVza10nOwor56eYPidbc2VjcmV0XSc7Civnp58+J1tyZW50XSc7CisjIuenoT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor56ejPidbZm9kZGVyXSc7Civnp6Q+J1tiYWxhbmNlXSc7Civnp6Y+J1tmZXVkYWwgc3RhdGUgb2YgcWluXSc7Civnp6c+J1tyaWNlIHNlZWRsaW5nc10nOwor56epPidbb3JkZXJdJzsKK+enrD4nW2JsYWNrIG1pbGxldF0nOwor56ewPidbY2FsbF0nOwor56e7PidbY2hhbmdlIHBsYWNlXSc7CivnqIA+J1tyYXJlXSc7CivnqIg+J1tzdGFsayBvZiBncmFpbl0nOwor56iLPidbam91cm5leV0nOwor56iNPidbbGl0dGxlXSc7CivnqI4+J1t0YXhlc10nOwor56iUPidbcmlwZSBncmFpbl0nOwor56iXPidbZGFybmVsc10nOworIyLnqJg+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+eomT4nW2dyYWluIHJlYWR5IGZvciBncmluZGluZ10nOwor56iaPidbeW91bmddJzsKK+eonD4nW2Nvcm5lcl0nOwor56ifPidbcmVwb3J0IHRvXSc7CivnqKA+J1tkZW5zZV0nOwor56iuPidbc2VlZF0nOwor56ixPidbY2FsbF0nOwor56iyPidbcmljZSBncm93aW5nIGluIGZpZWxkXSc7CivnqLc+J1tnb2Qgb2YgY2VyZWFsc10nOwor56i7PidbcmljZSBncm93aW5nIGluIGZpZWxkXSc7CivnqLw+J1tzb3cgZ3JhaW5dJzsKK+eovT4nW2V4YW1pbmVdJzsKK+eovj4nW2RyYWZ0XSc7CivnqL8+J1tkcmFmdF0nOwor56mAPidbY29ybl0nOwor56mCPidbZWFyIG9mIGdyYWluXSc7CisjIuepgz4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor56mGPidbbWFqZXN0aWNdJzsKK+epiT4nW3lvdW5nIGdyYWluXSc7CivnqY0+J1thY2N1bXVsYXRlXSc7CivnqY4+J1tyaWNlIHRhc3NlbF0nOworIyLnqY4+J1tyaWNlIHRhc3NlbF0nIiwKK+epkD4nW2ZhbGxdJzsKK+eplz4nW2VhciBvZiBncmFpbl0nOwor56mhPidbZmFybV0nOwor56miPidbZGlydHldJzsKK+epoz4nW3N0YWxrcyBvZiBncmFpbl0nOwor56mpPidbc3RhYmxlXSc7Civnqas+J1toYXJ2ZXN0XSc7CivnqbA+J1tzdGFsa3Mgb2YgZ3JhaW5dJzsKK+eptD4nW2NhdmVdJzsKK+eptj4nW2V4YW1pbmVdJzsKK+epuT4nW2hpZ2ggYW5kIHZhc3RdJzsKK+epuj4nW2VtcHR5XSc7Civnqb0+J1tob2xlXSc7Civnqb8+J1twZW5ldHJhdGVdJzsKK+eqgT4nW3N1ZGRlbmx5XSc7CivnqoM+J1tzZWNyZXRseV0nOwor56qEPidbbmFycm93XSc7Civnqog+J1tvYnNjdXJlXSc7CivnqpI+J1tzdG9wIHVwXSc7CivnqpM+J1t3aW5kb3ddJzsKK+eqlT4nW3NsZW5kZXJdJzsKK+eqlj4nW3BpdF0nOwor56qXPidbd2luZG93XSc7Civnqpg+J1tlbWJyYXNzYXNzZWRdJzsKK+eqnz4nW2hvbGVdJzsKK+eqqT4nW25lc3RdJzsKK+eqqj4nW2hvbGxvd10nOwor56quPidbcG9vcl0nOwor56qvPidba2lsbl0nOwor56qwPidba2lsbl0nOwor56q2PidbcG9vcl0nOwor56q6PidbcGVlcF0nOwor56q/PidbbWluZSBzaGFmdF0nOwor56uDPidbZnVybmFjZV0nOwor56uEPidbcnVuIGF3YXldJzsKK+erhT4nW2hvbGVdJzsKK+erhz4nW3N1cm5hbWVdJzsKK+eriD4nW2Z1cm5hY2VdJzsKK+erij4nW3NlY3JldGx5XSc7Civnq4s+J1tzdGFuZF0nOwor56uNPidbZGVjYWxpdGVyXSc7Civnq48+J1traWxvbGl0ZXJdJzsKK+erkj4nW3N0cmFuZ2VdJzsKK+erkz4nW21pbGxpbGl0ZXJdJzsKK+erlT4nW2RlY2lsaXRlcl0nOwor56uZPidbc3RhbmQgdXBdJzsKK+ermj4nW3N0YW5kIGFuZCB3YWl0IGZvciBsb25nIHRpbWVdJzsKK+ernD4nW2RyYWdvbl0nOwor56udPidbY29tYmluZV0nOwor56ufPidbZmluYWxseV0nOwor56ugPidbY29tcG9zaXRpb25dJzsKK+eroT4nW2hlY3RvbGl0ZXJdJzsKK+eroj4nW3dhaXQgZm9yXSc7Civnq6M+J1t0ZXJtaW5hdGVdJzsKK+erpT4nW2NoaWxkXSc7Civnq6Y+J1tyZXZlcmVdJzsKK+erqj4nW3BlcnBlbmRpY3VsYXJdJzsKK+errT4nW3B1dCBmb3J0aCBncmVhdCBlZmZvcnRdJzsKK+errz4nW2VuZF0nOwor56uwPidbY2VudGlsaXRlcl0nOwor56u2PidbY29udGVuZF0nOwor56u4PidbY29udGVuZF0nOwor56u5PidbYmFtYm9vXSc7Civnq7o+J1tpbmRpYV0nOwor56u/PidbYmFtYm9vIHBvbGVdJzsKKyMi56yCPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivnrIQ+J1toYWlycGluXSc7CivnrIY+J1tiYW1ib28gZmVuY2VdJzsKK+esiD4nW2JhbWJvbyBib3ggdXNlZCBjYXJyeSBib29rc10nOwor56yKPidbbGFkbGVdJzsKK+esiz4nW2JhbWJvbyBzaG9vdHNdJzsKK+esjz4nW3RhYmxldCBoZWxkIGJ5IHNvbWVvbmUgaGF2aW5nIGF1XSc7CivnrJE+J1tzbWlsZV0nOworIyLnrJg+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+esmT4nW3NtYWxsIGdvdXJkLXNoYXBlZCBtdXNpY2FsIGluc3RydW1lbnRdJzsKK+esmz4nW2JhbWJvbyBmbHV0ZV0nOwor56yePidbYmFtYm9vIHJvZCB1c2VkIGZvciBiZWF0aW5nc10nOwor56ygPidbYmFtYm9vIGhhdF0nOwor56ylPidbYSBoYW1wZXJdJzsKK+espj4nW2kuZC4gdGFnXSc7CivnrKg+J1tmb29saXNoXSc7CivnrKw+J1tzZXF1ZW5jZV0nOwor56yzPidbYSByZWVkIGxlYWYgd2hpc3RsZV0nOwor56y1PidbYSBiYW1ib28gZm9ybV0nOworIyLnrLY+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+esuT4nW3NtYWxsIGJhbWJvb10nOwor562FPidbYmFtYm9vIGJydXNoXSc7CivnrYY+J1t3cml0aW5nIGJydXNoXSc7CivnrYg+J1thcnJvdyBlbmRdJzsKK+etiT4nW3JhbmtdJzsKK+etiz4nW211c2NsZXNdJzsKK+etjD4nW2JhbWJvbyBmaXNoIHRyYXBdJzsKK+etjT4nW2JhbWJvbyBzaG9vdF0nOwor562PPidbcmFmdF0nOwor562QPidbYmFtYm9vIGJhc2tldCBvciBjaGVzdF0nOwor562RPidbYW5jaWVudCBsdXRlXSc7CivnrZI+J1t0aGljayBwaWVjZSBvZiBiYW1ib29dJzsKK+etlD4nW2Fuc3dlcl0nOwor562WPidbc2NoZW1lXSc7CivnrZ0+J1tzdHJpbmdlZCBtdXNpY2FsIGluc3RydW1lbnRdJzsKK+etpT4nW3JvdW5kLXNoYXBlZCBiYW1ib28gYmFza2V0IGZvcl0nOwor562nPidbYmFtYm9vIHdhdGVyIHBpcGVdJzsKK+etrD4nW3JlZWQgb2YgYSBsb29tXSc7Civnra4+J1tkaXZpbmF0aW9uIHdpdGggc3RhbGtzIG9mIHBsYW50c10nOwor562wPidbY2FibGVdJzsKK+etsT4nW2R3YXJmIGJhbWJvb10nOwor5620PidbdHlwZSBvZiBncmFzcyB1c2VkIGluIGRpdmluYXRpb25dJzsKK+ettT4nW2JhbWJvbyBtYXRdJzsKK+etuj4nW2JhbWJvbyBiYXNrZXQgb3IgY2hlc3RdJzsKK+euhj4nW2ZpbmUtdG9vdGhlZCBjb21iXSc7Civnroc+J1tudW1lcmFyeSBhZGp1bmN0XSc7Civnros+J1tub3RlXSc7Civnro0+J1tob29wXSc7Civnro8+J1tzdHJpbmdlZCBtdXNpY2FsIGluc3RydW1lbnRdJzsKK+eukj4nW2Jyb29tXSc7CivnrpQ+J1tyZWVkIHNjcmVlbl0nOwor566VPidbc2lldmVdJzsKK+eulz4nW2NvdW50XSc7Civnrpg+J1tmaW5lIGJhbWJvb10nOwor566ZPidbcXVpdmVyXSc7Civnrpo+J1ticmllZiBub3RlXSc7Civnrpw+J1thbmNpZW50IHN0cmluZyBtdXNpYyBpbnN0cnVtZW50XSc7Civnrp0+J1t0d2VlemVyc10nOworIyLnrp8+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+euoT4nW3BpcGVdJzsKK+euqj4nW3NtYWxsIGJhbWJvbyBiYXNrZXQgZm9yIGhvbGRpbmddJzsKK+eurT4nW2Fycm93XSc7CivnrrE+J1tjYXNlXSc7CivnrrQ+J1tuZWVkbGVdJzsKK+euuD4nW2Nob3BzdGlja3NdJzsKK+evgD4nW2tub3RdJzsKK+evgT4nW2JhbWJvbyBncm92ZV0nOwor56+EPidbcGF0dGVybl0nOwor56+GPidbc2VhbCBzY3JpcHRdJzsKK+evhz4nW2NoYXB0ZXJdJzsKK+eviT4nW2J1aWxkXSc7Civnr4s+J1tyYXR0b24gYm94XSc7Civnr4w+J1thbmNpZW50IG11c2ljIGluc3RydW1lbnRdJzsKK+evjz4nW2lubGF5XSc7Civnr50+J1tiYW1ib28gYmFza2V0XSc7Civnr6A+J1tkd2FyZiBiYW1ib29dJzsKK+evpD4nW2RlZXBdJzsKK+evpT4nW2J1bGdsZV0nOwor56+mPidbZmluZS10b290aGVkIGNvbWJdJzsKK+evqT4nW3NpZXZlXSc7Civnr60+J1tjYWdlXSc7Civnr7M+J1t3aWNrZXJdJzsKKyMi56+2PidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivnr7c+J1thd25pbmddJzsKK+ewgD4nW2JlZCBtYXRdJzsKK+ewhz4nW3N3YXJtXSc7CivnsI0+J1tiYW1ib28gYmFza2V0XSc7CivnsJE+J1thIGNvaXIgcmFpbmNvYXRdJzsKK+ewkj4nW3VzdXJwXSc7CisjIuewkz4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor57CUPidbYSBjb2lyIHJhaW5jb2F0XSc7CisjIuewlz4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor57CfPidbYmFtYm9vIG1hdF0nOwor57ChPidbc2ltcGxlXSc7CivnsKM+J1tiYW1ib28gYmFza2V0IGZvciBjYXJyeWluZyBlYXJ0aF0nOwor57CnPidbcmVlZCBvZiB3b29kd2luZCBpbnN0cnVtZW50XSc7CivnsKo+J1toYWlycGluXSc7CivnsKs+J1ttdXNpY2FsIGluc3RydW1lbnQgbGlrZSBwYW4tcGlwZXNdJzsKK+ewtz4nW2VhdmVzIG9mIGhvdXNlXSc7CivnsLg+J1t3aW5ub3dlcl0nOwor57C9Pidbc2lnbl0nOwor57C+PidbYSBibGluZF0nOwor57C/PidbcmVnaXN0ZXJdJzsKK+exgD4nW3JlY2l0ZV0nOwor57GDPidbYmFza2V0XSc7CivnsYw+J1tjaGlwXSc7CivnsY0+J1tyZWNvcmRdJzsKK+exjz4nW2ZsYWddJzsKK+exkD4nW2NsaW1iaW5nIHBsYW50c10nOwor57GUPidbYmFtYm9vIGJhc2tldF0nOwor57GWPidbdGFsbHldJzsKK+exmD4nW2NsaW1iaW5nIHBsYW50c10nOwor57GfPidbYmFtYm9vIGZsdXRlXSc7CivnsaA+J1tjYWdlXSc7CivnsaQ+J1t0YWxseV0nOwor57GlPidba2V5XSc7Civnsaw+J1tiYW1ib28gb3Igd29vZGVuIGZlbmNlXSc7CivnsbM+J1todWxsZWQgb3IgaHVza2VkIHVuY29va2VkIHJpY2VdJzsKK+extT4nW2RtXSc7Civnsb4+J1t1bmh1bGxlZCByaWNlXSc7CivnsoE+J1trbV0nOwor57KCPidbc3VybmFtZV0nOwor57KDPidbZW1wdHkgaHVza3Mgb2YgZ3JhaW5dJzsKK+eyiT4nW3Bvd2Rlcl0nOwor57KLPidbcHVyZV0nOwor57KNPidbbW1dJzsKKyMi57KQPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivnspI+J1tncmFpbl0nOwor57KVPidbbGVlc10nOwor57KXPidbcm91Z2hdJzsKK+eymD4nW3Zpc2NvdXNdJzsKK+eymz4nW3BheSByZXNwZWN0c10nOwor57KfPidbdW5odXNrZWQgbWlsbGV0XSc7CisjIueyoT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor57KiPidbZ3JhaW4gb2ZmZXJlZCBpbiByaXR1YWwgc2FjcmlmaWNdJzsKK+eypD4nW0d1YW5nZG9uZyBhbmQgR3Vhbmd4aSBwcm92aW5jZXNdJzsKK+eypT4nW3JpY2UgZ3J1ZWxdJzsKK+eypz4nW3RvaWxldF0nOwor57KoPidbaG1dJzsKKyMi57KrPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCisjIueyrT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor57KuPidbZm9vZF0nOwor57KxPidbYmV0dGVyIHZhcmlldGllcyBvZiBtaWxsZXRdJzsKK+eysj4nW3BvbGlzaF0nOwor57KzPidbbm9uLWdsdXRpbm91cyByaWNlXSc7Civnsrk+J1twdXJlXSc7Civnsr0+J1tkdW1wbGluZyBtYWRlIG9mIGdsdXRpbm91cyByaWNlXSc7Civnsr4+J1tlc3NlbmNlXSc7CisjIuezgD4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAorIyLns4I+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+ezhT4nW2JsZW5kXSc7Civns4o+J1twYXN0ZV0nOwor57OOPidbbW1dJzsKK+ezkj4nW2Zvb2QgZm9yIGEgam91cm5leV0nOwor57OWPidbc3VnYXJdJzsKKyMi57OYPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivns5w+J1tyaWNlIGdydWVsXSc7Civns54+J1ttYW51cmVdJzsKK+eznz4nW3NlZGltZW50XSc7Civns6A+J1tjaGFmZl0nOwor57OiPidbcmljZSBzbmFja3NdJzsKK+ezpz4nW2Zvb2RdJzsKK+ezrz4nW2dsdXRpbm91cyByaWNlXSc7Civns7I+J1t1bnBvbGlzaGVkIHJpY2VdJzsKK+eztD4nW3B1cmNoYXNlIGdyYWluc10nOwor57O2Pidbc2VsbCBncmFpbnNdJzsKK+ezuD4nW3NpbGtdJzsKK+ezuj4nW3RvIGNvbGxhYm9yYXRlXSc7Civns7s+J1tzeXN0ZW1dJzsKK+ezvj4nW2ludmVzdGlnYXRlXSc7CivntIA+J1tyZWNvcmRdJzsKK+e0gj4nW25hbWUgb2YgYW4gZW1wZXJvcl0nOwor57SEPidbdHJlYXR5XSc7CivntIU+J1tyZWRdJzsKK+e0hj4nW2JlbmRdJzsKK+e0ij4nW2NvbmZ1c2VkXSc7CivntIs+J1tsaW5lXSc7CivntI0+J1thZG1pdF0nOwor57SQPidba25vdF0nOwor57SUPidbcHVyZV0nOwor57SVPidbc3BvaWxlZCBzaWxrXSc7CivntJc+J1tnYXV6ZV0nOwor57SYPidbc3RyaW5nXSc7CivntJk+J1twYXBlcl0nOwor57SaPidbbGV2ZWxdJzsKK+e0mz4nW2luIGRpc29yZGVyXSc7CivntJw+J1tjb25mdXNlZF0nOwor57SgPidbd2hpdGUgKHNpbGspXSc7CivntKE+J1tzcGluXSc7CivntKI+J1tsYXJnZSByb3BlXSc7CivntKs+J1twdXJwbGVdJzsKK+e0rD4nW2tpbmQgb2YgdGhpbiBzaWxrXSc7CivntK4+J1t0aWVdJzsKK+e0rz4nW3RpcmVkXSc7CivntLA+J1tmaW5lXSc7CivntLI+J1ticmlkbGVdJzsKK+e0sz4nW2dpcmRsZV0nOwor57S1PidbcmFtaWVdJzsKK+e0uT4nW2NvbnRpbnVlXSc7CivntLo+J1tkYXJrIGJsdWUgY29sb3JdJzsKK+e0vz4nW2NoZWF0XSc7CivntYI+J1tlbmRdJzsKK+e1gz4nW3N0cmluZyBvbiBtdXNpY2FsIGluc3RydW1lbnRdJzsKK+e1hD4nW2NsYXNzXSc7CivntYU+J1t1bmxpbmVkIGdhcm1lbnRdJzsKK+e1hj4nW2xvb3BdJzsKKyMi57WLPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivntYw+J1tjbGFzc2ljIHdvcmtzXSc7CivntY4+J1tiYXN0ZV0nOwor57WPPidbcm9wZV0nOwor57WQPidba25vdF0nOwor57WWPidbZmluZSBzaWxrc10nOwor57WbPidbc2lsayBicmFpZF0nOwor57WePidbdHdpc3RdJzsKK+e1oT4nW2VubWVzaF0nOwor57WiPidbdmFyaWVnYXRlZF0nOwor57WjPidbdG8gYmFzdGUgZm9yIHNld2luZ10nOwor57WmPidbZ2l2ZV0nOwor57WoPidbc2lsa10nOwor57WuPidbd2FzdGUgY290dG9uXSc7CivntbE+J1tnb3Zlcm5dJzsKK+e1sj4nW3NpbGtdJzsKK+e1sz4nW2RlZXAgcmVkXSc7CivntbU+J1tkcmF3XSc7CivntbY+J1tjdXRdJzsKK+e1uT4nW2tpbmQgb2YgdGhpY2sgc3RpZmYgc2lsa10nOworIyLntb0+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+e2iT4nW2VtYnJvaWRlcl0nOwor57aPPidbc29vdGhlXSc7CivntpM+J1tjbGFzc2ljIHdvcmtzXSc7Civntpk+J1tjb250aW51ZV0nOwor57aaPidbY29udGludWVdJzsKKyMi57abPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivntpw+J1thcnJhbmdlIHRocmVhZHMgZm9yIHdlYXZpbmddJzsKKyMi57afPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivntqI+J1tzaWxrIGNsb3RoXSc7CivntqM+J1thZmZlY3Rpb25hdGVdJzsKK+e2qz4nW2xpbmVdJzsKK+e2rD4nW3NpbGsgcmliYm9uIGF0dGFjaGVkIGFzIGEgc2VhbF0nOwor57atPidbbWFpbnRhaW5dJzsKK+e2rj4nW2VtYnJvaWRlcmVkIGJhbm5lcl0nOwor57avPidbYnJhaWRdJzsKK+e2sD4nW3RvIHN0cmluZyB0b2dldGhlcl0nOwor57axPidbaGVhdnkgcm9wZV0nOwor57ayPidbbmV0XSc7CivntrQ+J1twYXRjaCB0b2dldGhlcl0nOwor57a1PidbdmFyaWNvbG9yZWQgc2lsa10nOwor57a4PidbZ3JlZW4gc2lsayB0aHJlYWQgb3IgdGFzc2VsXSc7Civntro+J1tmaW5lIHRoaW4gc2lsa10nOwor57a7PidbcmlwcGVkIHNlYW1dJzsKK+e2vT4nW2dyYWNlZnVsXSc7Civntr4+J1t0aGluIHNpbGtdJzsKK+e2vz4nW2NvdHRvbiB3YWRdJzsKK+e3hz4nW2JsYWNrIHNpbGtdJzsKK+e3ij4nW3RlbnNlXSc7Civnt4s+J1tzY2FybGV0XSc7Civnt48+J1tjb2xsZWN0XSc7Civnt5E+J1tncmVlbl0nOwor57eSPidbZW5kIG9mIHRocmVhZF0nOworIyLnt5U+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+e3mD4nW3NlYWxdJzsKK+e3mj4nW3RocmVhZF0nOwor57ecPidbY290dG9uIHdhZF0nOwor57edPidbdG8gc2V3IGluIGNsb3NlIHN0aXRjaGVzXSc7Civnt54+J1tzYXRpbl0nOwor57egPidbdGllXSc7Civnt6E+J1tmaXNoaW5nLWxpbmVdJzsKK+e3pD4nW2NvcmRdJzsKK+e3qD4nW2tuaXRdJzsKK+e3qT4nW3Nsb3ddJzsKK+e3rD4nW2Rpc3RhbnRdJzsKK+e3rz4nW3dvb2ZdJzsKK+e3sj4nW2luZGlzdGluY3RdJzsKK+e3tD4nW3ByYWN0aWNlXSc7Civnt7s+J1tkZWxpY2F0ZV0nOwor57iBPidbaGVtXSc7CivnuIQ+J1tyb3BlXSc7CisjIue4hD4nW3JvcGVdJyIsCivnuIk+J1tyZWQgc2lsa10nOwor57iKPidbaGFuZ10nOwor57iLPidbY2xpbWQgZG93biByb3BlXSc7CisjIue4kT4nW2ZpbmUgc2lsa10nIiwKK+e4mz4nW3RvIHRpZV0nOwor57iePidbd2hpdGUgcmF3IHNpbGtdJzsKK+e4nz4nW2RlY29yYXRpdmVdJzsKK+e4oT4nW21hdHRlcl0nOwor57iiPidbYmluZF0nOwor57ijPidbY291bnR5XSc7CivnuKY+J1tpbmR1bGdlIGluXSc7CivnuKs+J1tzZXddJzsKK+e4rj4nW2NvbnRyYWN0XSc7CivnuLE+J1tpbmR1bGdlIGluXSc7CivnuLI+J1tjaGFpbiBvciByb3BlIHVzZWQgYmluZCBjcmltaW5hbF0nOwor57i1PidbcGxhaW4gc2lsa10nOwor57i3PidbdGhyZWFkXSc7CivnuLk+J1tsaWdodCBibHVlIHNpbGtdJzsKKyMi57i6PidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivnuLs+J1toYWx0ZXIgZm9yIG94XSc7CivnuL0+J1tjb2xsZWN0XSc7CivnuL4+J1tzcGluXSc7CivnuYE+J1tjb21wbGljYXRlZF0nOwor57mDPidbYmluZF0nOwor57mGPidbd2luZCBhcm91bmRdJzsKK+e5ij4nW2ZpbmVdJzsKK+e5iz4nW2F0dGFjaF0nOwor57mNPidbZW1icm9pZGVyXSc7CivnuZQ+J1t3ZWF2ZV0nOwor57mVPidbcmVwYWlyXSc7CivnuZY+J1t1bWJyZWxsYV0nOwor57mZPidbaW50ZXJwcmV0XSc7CivnuZo+J1t3aW5kIHJvdW5kXSc7CisjIue5nT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor57mePidbZW50d2luZV0nOwor57mmPidbc3RyaW5nIG9mIGNvcHBlciBjb2luc10nOworIyLnuac+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+e5qT4nW3JvcGVdJzsKK+e5qj4nW2RyYXddJzsKK+e5rT4nW2NvY29vbl0nOwor57mwPidbdG8gcmVlbCBzaWxrIGZyb20gY29jb29uc10nOwor57m5PidbdW5yYXZlbCBvciB1bnJlZWwgc2lsa10nOwor57m7PidbZmluZSBzaWxrIGd1YXplXSc7Civnubw+J1tjb250aW51ZV0nOwor57m9PidbZmxvdXJpc2hpbmddJzsKKyMi57m/PidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivnuoI+J1tlZGl0XSc7CisjIue6gz4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor57qIPidbcGF0dGVybmVkIHNpbGtdJzsKKyMi57qJPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivnuow+J1tjb250aW51ZV0nOwor57qOPidbZmluZV0nOwor57qPPidbd3JhcF0nOworIyLnupA+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+e6kj4nW3dyYXBdJzsKK+e6kz4nW2NoaW4gc3RyYXBdJzsKK+e6lD4nW3RhbGVudF0nOwor57qWPidbZmluZV0nOwor57qbPidbYSBiYW5uZXJdJzsKK+e6nD4nW2hhd3Nlcl0nOwor57y2PidbZWFydGhlbiBjcm9jayBvciBqYXJdJzsKK+e8uD4nW2VhcnRoZW4ganVnXSc7CivnvLo+J1tiZSBzaG9ydCBvZl0nOwor572FPidbY3JhY2tdJzsKK+e9jD4nW2xvbmcgbmVja2VkIGphciBvciBib3R0bGVdJzsKK+e9jT4nW2xhcmdlIGVhcnRoZW53YXJlIHdpbmUgamFyXSc7CivnvY4+J1thbiBlYXJ0aGVud2FyZSBqYXJdJzsKK+e9kD4nW2phcl0nOwor572RPidbbmV0XSc7CivnvZQ+J1tuZXRdJzsKK+e9lT4nW3JhcmVdJzsKK+e9mD4nW3NjcmVlbiB1c2VkIGluIGFuY2llbnQgdGltZXNdJzsKK+e9nz4nW25ldF0nOwor572gPidbYW5pbWFsIHRyYXBdJzsKKyMi572nPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivnvag+J1ttZWRpY2FsIGNvbXByZXNzXSc7Civnvak+J1tiYXNrZXQgZm9yIGNhdGNoaW5nIGZpc2hdJzsKK+e9qj4nW2NyaW1lXSc7Civnvas+J1toaW5kZXJdJzsKK+e9rj4nW3BsYWNlXSc7CivnvbA+J1twZW5hbHR5XSc7CivnvbI+J1twdWJsaWMgb2ZmaWNlXSc7CivnvbU+J1thY2N1c2VdJzsKK+e9tz4nW2NlYXNlXSc7Civnvbg+J1twZW5hbHR5XSc7Civnvbk+J1tzb3Jyb3ddJzsKKyMi576CPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivnvoM+J1tjb3Zlci1jbG90aF0nOwor576FPidbbmV0IGZvciBjYXRjaGluZyBiaXJkc10nOwor576GPidbYnJvd24gYmVhcl0nOwor576HPidbaW5uXSc7Civnvog+J1toYWx0ZXJdJzsKK+e+ij4nW3NoZWVwXSc7Civnvow+J1txaWFuZyBuYXRpb25hbGl0eV0nOwor576OPidbYmVhdXRpZnVsXSc7CivnvpQ+J1tsYW1iXSc7Civnvpo+J1tzcGVjaWVzIG9mIGFudGVsb3BlXSc7Civnvp0+J1tyYW1dJzsKK+e+nj4nW2Rpc2dyYWNlXSc7CivnvqM+J1tncm91cF0nOwor576kPidbZ3JvdXBdJzsKK+e+qD4nW2VudnldJzsKK+e+qT4nW3JpZ2h0IGNvbmR1Y3RdJzsKK+e+rj4nW3NvdXBdJzsKK+e+rz4nW3dldGhlcl0nOwor576yPidbYW5jaWVudCBlbXBlcm9yXSc7CivnvrY+J1tyYW5rIG9kb3JdJzsKK+e+uD4nW3dlYWtdJzsKK+e+uT4nW3NvdXBdJzsKK+e+vT4nW2ZlYXRoZXJdJzsKK+e/gT4nW29sZCBtYW5dJzsKK+e/hT4nW3dpbmdzXSc7Civnv4Y+J1tjb2xvciBncmVlbl0nOwor57+KPidbZmx5aW5nXSc7Civnv4w+J1ticmlnaHRdJzsKK+e/kj4nW3ByYWN0aWNlXSc7Civnv5Q+J1tzb2FyXSc7Civnv5U+J1thZ3JlZV0nOwor57+gPidbY29sb3IgZ3JlZW5dJzsKK+e/oT4nW2tpbmdmaXNoZXJdJzsKK+e/pj4nW3NjaXNzb3JzXSc7Civnv6k+J1tmbHldJzsKK+e/qz4nW2NhcmVsZXNzXSc7Civnv7A+J1t3cml0aW5nIGJydXNoXSc7Civnv7M+J1tzaGFkZV0nOwor57+5PidbdHVybiB1cF0nOwor57+7PidbZmxpcCBvdmVyXSc7Civnv7w+J1t3aW5nc10nOwor6ICAPidbc2hpbmVdJzsKK+iAgT4nW29sZF0nOwor6ICDPidbZXhhbWluZV0nOwor6ICEPidbZWxkZXJseSBwZXJzb25dJzsKK+iAhT4nW3RoYXQgd2hpY2hdJzsKK+iAhj4nW21hbiBvZiBzaXh0eV0nOwor6ICLPidbYWdlZF0nOwor6ICMPidbYW5kXSc7CivogJA+J1tlbmR1cmVdJzsKK+iAkj4nW2hhbmRsZSBvZiBwbG93XSc7CivogJU+J1twbG93XSc7CivogJc+J1tjb25zdW1lXSc7CivogJg+J1t3ZWVkXSc7CivogJk+J1tyYWtlXSc7CivogJw+J1tzcGFkZS1zaGFwZWQgdG9vbF0nOwor6IChPidbaG9lXSc7CivogKg+J1tob2VdJzsKK+iAsz4nW2Vhcl0nOwor6IC2PidbdXNlZCBpbiB0cmFuc2xpdGVyYXRpb25dJzsKK+iAuz4nW3NoYW1lXSc7CivogL0+J1tpbmR1bGdlIGluXSc7CivogL8+J1ticmlnaHRdJzsKK+iBhj4nW2xpc3Rlbl0nOwor6IGKPidbc29tZXdoYXRdJzsKK+iBkj4nW2NsYW1vcl0nOwor6IGWPidbaG9seV0nOwor6IGYPidbZW5nYWdlXSc7CivogZo+J1thc3NlbWJsZV0nOwor6IGePidbaGVhcl0nOwor6IGfPidbc29uLWluLWxhd10nOwor6IGhPidbaW50ZWxsaWdlbnRdJzsKKyMi6IGiPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivogag+J1tjb25uZWN0XSc7Civoga8+J1tjb25uZWN0XSc7CivogbA+J1tpbnRlbGxpZ2VudF0nOwor6IGyPidbc291bmRdJzsKK+iBsz4nW3VyZ2Ugb25dJzsKK+iBtD4nW2hlYXJdJzsKK+iBtj4nW3doaXNwZXJdJzsKK+iBtz4nW2R1dHldJzsKK+iBuT4nW2VhcndheF0nOwor6IG9PidbaGVhcl0nOwor6IG+PidbZGVhZl0nOwor6IG/Pidbd3JpdGluZyBicnVzaF0nOwor6IKEPidbbGVhcm5dJzsKK+iChT4nW3BheSByZXNwZWN0c10nOwor6IKGPidbaW5kdWxnZV0nOwor6IKHPidbYmVnaW5dJzsKK+iCiT4nW2ZsZXNoXSc7Civogos+J1tyaWJzXSc7Civogow+J1ttdXNjbGUgdGlzc3VlXSc7CivogpM+J1tyZWdpb24gYmV0d2VlbiBoZWFydCBhbmQgZGlhcGhyYWdtXSc7CivogpY+J1tsb29rIGxpa2VdJzsKK+iCmD4nW2VsYm93XSc7Civogpo+J1tiZWxseV0nOwor6IKbPidbYW51c10nOwor6IKdPidbbGl2ZXJdJzsKK+iCoT4nW3RoaWdoc10nOwor6IKiPidbaHVtYW4gbGltYnNdJzsKK+iCpT4nW2ZhdF0nOwor6IKpPidbc2hvdWxkZXJzXSc7Civogqo+J1thbmltYWwgZmF0XSc7Civogqw+J1t3YXJ0XSc7Civogq0+J1tmYXRdJzsKK+iCrz4nW3dpbGxpbmddJzsKK+iCsT4nW2ZvcmVhcm1dJzsKK+iCsj4nW3Byb2R1Y2VdJzsKK+iCtD4nW2Nvb2tlZCBvciBwcmVwYXJlZCBtZWF0XSc7Civogro+J1tsdW5nc10nOwor6IODPidbc3RvbWFjaF0nOwor6IOEPidbaGVsbWV0XSc7Civog4Y+J1tnYWxsIGJsYWRkZXJdJzsKK+iDjD4nW2JhY2tdJzsKK+iDjj4nW3VuYm9ybiBjaGlsZF0nOwor6IOWPidbZmF0XSc7Civog5k+J1tmb29kIG9mZmVyZWQgaW4gc2FjcmlmaWNpYWwgc2Vydl0nOwor6IOaPidbZW1icnlvXSc7Civog5s+J1t0aGUgc2hvdWxkZXJdJzsKK+iDnT4nW2NhbGxvdXNdJzsKK+iDnj4nW3dvbWJdJzsKK+iDoT4nW3JlY2tsZXNzbHldJzsKK+iDpD4nW2hlaXJdJzsKK+iDpT4nW2FsbF0nOwor6IOvPidbcGVsdmlzXSc7Civog7E+J1tibGFkZGVyXSc7Civog7Q+J1t0aGUgbGFyZ2UgaW50ZXN0aW5lXSc7Civog7g+J1ticmVhc3RdJzsKK+iDvD4nW2NhbGx1c10nOwor6IO9PidbYmUgYWJsZV0nOwor6ISCPidbZmF0XSc7CivohIU+J1tyaWJzXSc7CivohIY+J1tjcmlzcF0nOwor6ISHPidbcmlic10nOwor6ISIPidbYmxvb2QgdmVzc2Vsc10nOwor6ISJPidbYmxvb2QgdmVzc2Vsc10nOwor6ISKPidbc3BpbmVdJzsKK+iEmj4nW2xlZ10nOwor6ISbPidbc2hpbmJvbmVdJzsKK+iEoz4nW2xpcHNdJzsKK+iEqT4nW2RyaWVkIG1lYXQgKHVzZWQgYXMgdGVhY2hlcnMgcGF5bWVudCBpbiBhbmNpZW50IHRpbWVzKV0nOwor6ISvPidbZHJpZWQgbWVhdF0nOwor6ISxPidbdGFrZSBvZmZdJzsKK+iEsz4nW2JyYWluXSc7CivohLk+J1tzd2VsbF0nOwor6IS+Pidbc3BsZWVuXSc7CivohYY+J1twcm9zcGVyb3VzXSc7CivohYs+J1thcm1waXRdJzsKK+iFjj4nW2tpZG5leXNdJzsKK+iFkD4nW3JvdF0nOwor6IWRPidbYm93ZWxzXSc7CivohZM+J1tjYWxmXSc7CivohZQ+J1tjaGVzdCBjYXZpdHldJzsKK+iFlT4nW3dyaXN0XSc7CivohZ8+J1t2YWdpbmFdJzsKK+iFpT4nW3JhdyBtZWF0XSc7CivohaY+J1ticmFpbl0nOwor6IWrPidbc3dlbGxdJzsKK+iFrj4nW2xvd2VyIHBhcnQgb2YgZmFjZV0nOwor6IWwPidbd2Fpc3RdJzsKK+iFsT4nW3RlbmRvbnNdJzsKK+iFtD4nW2ZhdF0nOwor6IW4PidbaW50ZXN0aW5lc10nOwor6IW5Pidbc3RvbWFjaF0nOwor6IW6PidbZ2xhbmRdJzsKK+iFvz4nW2xlZ3NdJzsKK+iGgD4nW3VwcGVyIGFybV0nOwor6IaCPidbYmFja2JvbmVdJzsKK+iGgz4nW2ZhdF0nOwor6IaIPidbZGlhcGhyYWdtXSc7Civohoo+J1tzaG91bGRlcnNdJzsKK+iGjz4nW2dyZWFzZV0nOwor6IaTPidbaW50ZXN0aW5lc10nOwor6IaVPidbaG9sbG93XSc7Civohpo+J1tza2luXSc7Civohpw+J1ttZW1icmFuZV0nOwor6IadPidba25lZV0nOwor6IagPidbZ2x1ZV0nOwor6IajPidbdmFnaW5hXSc7CisjIuiGpD4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor6IaoPidbc3dlbGxdJzsKK+iGqT4nW2dyZWFzeV0nOwor6IawPidbY29vayBtZWF0IGZvciBzYWNyaWZpY2Ugb3Igb2ZmZXJdJzsKK+iGsz4nW21lYWxzXSc7CivohrU+J1twYW5jcmVhc10nOworIyLohrg+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+iGuj4nW2JyZWFzdF0nOwor6Ia9PidbZ2FsbCBibGFkZGVyXSc7Civohr4+J1ttaW5jZWQgbWVhdCBvciBmaXNoXSc7Civohr8+J1twdXNdJzsKK+iHgD4nW2J1dHRvY2tzXSc7Civoh4I+J1thcm1dJzsKK+iHhj4nW2NoZXN0XSc7Civoh4g+J1t5ZWFyIGVuZCBzYWNyaWZpY2VdJzsKK+iHiT4nW2ZhY2VdJzsKK+iHjT4nW2FiZG9taW5hbCBhcmVhIG9mIGNyYWJdJzsKK+iHkT4nW3NvZnRdJzsKK+iHkz4nW2ludGVybmFsIG9yZ2Fuc10nOwor6IeYPidbeWVhciBlbmQgc2FjcmlmaWNlXSc7Civoh5k+J1tyb3VnZV0nOwor6IeaPidbYXJyYW5nZSBpbiBvcmRlcl0nOwor6IefPidbaW50ZXJuYWwgb3JnYW5zXSc7Civoh6A+J1tzbWFsbCBsdW1wIG9mIG1lYXRdJzsKK+iHoz4nW21pbmlzdGVyXSc7Civoh6U+J1tsaWUgZG93bl0nOwor6IenPidbZ29vZF0nOwor6IeoPidbZHJhdyBuZWFyXSc7Civoh6o+J1tzZWxmXSc7Civoh60+J1tzbWVsbF0nOwor6IezPidbcmVhY2hdJzsKK+iHtD4nW3NlbmRdJzsKK+iHuj4nW3Rvd2VyXSc7Civoh7s+J1tyZWFjaF0nOwor6Ie8PidbbW9ydGFyXSc7Civoh74+J1ttb21lbnRdJzsKK+iIgT4nW2NhcnJ5IG9uIG9uZScncyBzaG91bGRlcl0nOwor6IiCPidbZ3JpbmQgaW4gbW9ydGFyXSc7CivoiIU+J1ttb3RoZXInJ3MgYnJvdGhlcl0nOwor6IiHPidbYW5kXSc7CivoiIg+J1t0aHJpdmVdJzsKK+iIiT4nW3JhaXNlXSc7CivoiIo+J1tvbGRdJzsKK+iIjD4nW3Rvbmd1ZV0nOwor6IiNPidbaG91c2VdJzsKK+iIjj4nW2hvdXNlXSc7CivoiJA+J1tsaWNrIHdpdGggdG9uZ3VlXSc7CivoiJI+J1tvcGVuIHVwXSc7CivoiJY+J1tzdG9yZV0nOwor6IiXPidbc3RvcmVdJzsKK+iImD4nW2EgbWFuc2lvbl0nOwor6IibPidbb3Bwb3NlXSc7CivoiJw+J1tsZWdlbmRhcnkgcnVsZXJdJzsKK+iInj4nW2RhbmNlXSc7CivoiJ8+J1tib2F0XSc7CivoiKk+J1tib2F0XSc7CivoiKo+J1tzYWlsXSc7CivoiKs+J1tmYW5jeSBib2F0XSc7CivoiKw+J1tzb3J0XSc7CivoiK4+J1tib3cgb3IgcHJvdyBvZiBib2F0XSc7CivoiLM+J1tzdGVybiBvZiBzaGlwXSc7CivoiLU+J1tydWRkZXJdJzsKK+iItj4nW2xhcmdlXSc7CivoiLc+J1tzaWRlcyBvZiBib2F0XSc7CivoiLg+J1tsYXJnZSBib2F0XSc7CivoiLk+J1tzaGlwXSc7CivoiYA+J1tbbm90IGZvdW5kIGluIGRpY3Rpb25hcnldXSc7CivoiYc+J1tzbWFsbCBib2F0XSc7CivoiZg+J1tjb3VudGVyIGZvciBzaGlwc10nOwor6ImZPidbaG9sZCBvZiBzaGlwXSc7CivoiZo+J1tzaGlwXSc7CisjIuiJnT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor6ImfPidbYW5jaWVudCB3YXJzaGlwXSc7CivoiaI+J1thIG1hc3RdJzsKK+iJpD4nW3RvIG1vb3IgYSBib2F0IHRvIHRoZSBiYW5rXSc7CivoiaY+J1t3YXJzaGlwXSc7Civoiag+J1tsb25nIGFuZCBuYXJyb3cgd2FyLWJvYXRdJzsKK+iJqj4nW29hcl0nOwor6ImrPidbYm93IG9yIHByb3cgb2YgYm9hdF0nOwor6ImuPidbc2V2ZW50aCBvZiBlaWdodCBkaWFncmFtc10nOwor6ImvPidbZ29vZF0nOwor6ImxPidbZGlmZmljdWx0XSc7CivoibI+J1tjb2xvcl0nOwor6Im2PidbYmVhdXRpZnVsXSc7Civoibc+J1tiZWF1dGlmdWxdJzsKK+iJuD4nW2dyYXNzXSc7Civoib4+J1thcnRlbWlzaWFdJzsKK+iKiz4nW3Rhcm9dJzsKK+iKjT4nW3Blb255XSc7CivoipI+J1ttaXNjYW50aHVzIHNpbmVuc2lzXSc7Civoipk+J1toaWJpc2N1c10nOwor6IqdPidbcHVycGxpc2ggbXVzaHJvb20gdGhvdWdodCBwcm9tb3RdJzsKK+iKnz4nW21vd10nOwor6IqlPidbbXVzdGFyZCBwbGFudF0nOwor6IqmPidbcnVzaGVzXSc7Civoiqs+J1tkYXBobmUgZ2Vua3dhXSc7Civoiqw+J1tmcmFncmFuY2VdJzsKK+iKrT4nW3BsYW50YWluIG9yIGJhbmFuYSBwYWxtXSc7Civoiq8+J1twaXRoIGZyb20gcnVzaCAoanVuY3VzIGVmZnVzdXMpXSc7CivoirE+J1tmbG93ZXJdJzsKK+iKsz4nW2ZyYWdyYW50XSc7Civoirg+J1tydWVdJzsKK+iKuT4nW2NlbGVyeV0nOwor6Iq7PidbbW93XSc7Civoir0+J1tidWRdJzsKK+iLhT4nW2N1dCBvZmZdJzsKK+iLkT4nW3Bhc3R1cmVdJzsKK+iLkj4nW2x1c2hdJzsKK+iLkz4nW2Z1bmd1c10nOwor6IuUPidbbW9zc10nOwor6IuXPidbc3Byb3V0c10nOwor6IuZPidbcGlnc3R5XSc7Civoi5s+J1tzbWFsbF0nOwor6IucPidbY2xvdmVyXSc7Civoi54+J1t2YXJpZXR5IG9mIHJ1c2hdJzsKK+iLnz4nW2NhcmVsZXNzXSc7Civoi6E+J1tiYXJsZXldJzsKK+iLoz4nW2tpbmQgb2YgbGV0dHVjZV0nOwor6IulPidbaWZdJzsKK+iLpj4nW2JpdHRlcl0nOwor6IunPidbY2hpbmEgZ3Jhc3NdJzsKK+iLqz4nW3J1c2ggb3Igc3RyYXcgbWF0dGluZ10nOwor6IuxPidbcGV0YWxdJzsKKyMi6IuzPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivoi7Q+J1tzYWNrY2xvdGhdJzsKK+iLuT4nW2FydGVtaXNpYV0nOwor6Iu6PidbYmVycmllc10nOwor6Iu7Pidba2luZCBvZiBoZXJiXSc7CivojII+J1t0aGlja10nOwor6IyDPidbc3VybmFtZV0nOwor6IyEPidbZWdncGxhbnRdJzsKK+iMhT4nW3JlZWRzXSc7CivojIY+J1tzcGVjaWVzIG9mIGdyYXNzXSc7CivojIk+J1t3aGl0ZSBqYXNtaW5lXSc7CivojI4+J1tzdGVtXSc7CivojJY+J1thbGxpdW0gdmljdG9yaWFsaXNdJzsKK+iMlz4nW3RlYV0nOworIyLojJc+J1t0ZWFdJyIsCivojJw+J1ttYWRkZXJdJzsKKyMi6IyjPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivojKg+J1tjYWx0cm9wXSc7CivojKs+J1t2YXN0XSc7CivojK8+J1tjaGluYSByb290XSc7CivojLE+J1tkb2d3b29kXSc7CivojLI+J1tub3ddJzsKK+iMtD4nW2Zlbm5lbF0nOwor6Iy1PidbY3VzaGlvbl0nOwor6Iy2PidbdGVhXSc7CivojLg+J1tzb2Z0XSc7CivojLk+J1tyb290c10nOwor6I2APidbc3VybmFtZV0nOwor6I2FPidbYW5zd2VyOiBzbWFsbCBiZWFuXSc7CivojYk+J1tncmFzc10nOwor6I2KPidbdGhvcm5zXSc7CivojY8+J1tiZWFuc10nOwor6I2QPidbcmVwZWF0XSc7CivojZI+J1t3YXN0ZWxhbmRdJzsKK+iNmD4nW3ZpbGxhZ2VdJzsKK+iNsz4nW2JlYW5zXSc7CisjIuiNtT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor6I23PidbbG90dXNdJzsKK+iNuz4nW3JlZWRdJzsKK+iNvD4nW2JpdHRlciB2ZWdldGFibGVdJzsKK+iOhT4nW2F0dGVuZF0nOworIyLojoc+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+iOiT4nW3doaXRlIGphc21pbmVdJzsKK+iOij4nW3ZpbGxhZ2VdJzsKK+iOjj4nW2tpbmQgb2Ygc2VkZ2UgZ3Jhc3NdJzsKK+iOkz4nW21vc3NdJzsKK+iOlj4nW3N0ZW1dJzsKK+iOmj4nW2JhbWJvbyBtYXRdJzsKK+iOnj4nW3NtaWxpbmddJzsKKyMi6I6fPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivojqA+J1t3ZWVkc10nOwor6I6iPidbcG9kcyBvZiBsZWd1bWlub3VzIHBsYW50c10nOwor6I6oPidbaGVyYl0nOwor6I6qPidbYXJ0ZW1pc2lhXSc7Civojqs+J1tkbyBub3RdJzsKK+iOsT4nW2dvb3NlZm9vdF0nOwor6I61PidbZG9kZGVyXSc7Civojr0+J1t0aGlja2V0XSc7Civoj4E+J1tmbG93ZXIgb2YgbGVlayBmYW1pbHldJzsKK+iPhT4nW2NvYXJzZSBncmFzc10nOwor6I+KPidbY2hyeXNhbnRoZW11bV0nOwor6I+MPidbbXVzaHJvb21dJzsKK+iPjj4nW2JlYXV0aWZ1bCBqYWRlXSc7Civoj5M+J1tmcnVpdHNdJzsKK+iPlj4nW2lyaXNdJzsKK+iPmD4nW2NlbGVyeV0nOwor6I+cPidbdmVnZXRhYmxlc10nOwor6I+fPidbZG9kZGVyXSc7Civoj6A+J1tzcGluYWNoIGFuZCBzaW1pbGFyIGdyZWVuc10nOwor6I+pPidbaGVyYl0nOwor6I+rPidbY2VsZXJ5XSc7Civoj68+J1tmbG93ZXJ5XSc7Civoj7A+J1t3aWxkIHJpY2VdJzsKK+iPsT4nW3dhdGVyLWNoZXN0bnV0XSc7Civoj7I+J1tmcmFncmFudF0nOwor6I+0Pidbc21hbGwgYnVkZGhpc3QgbW9uYXN0ZXJ5XSc7CisjIuiPtz4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor6I+7PidbYXJ0ZW1pc2lhXSc7Civoj70+J1tiZWFucyBhbmQgcGVhc10nOwor6JCDPidbZGVuc2VdJzsKK+iQhD4nW2dyYXBlc10nOwor6JCHPidbYXZlcnJob3JhIGNhcmFtYm9sYV0nOwor6JCLPidbbHV4dXJpYW50IGZvbGlhZ2VdJzsKK+iQjD4nW2J1ZF0nOwor6JCNPidbZHVja3dlZWRdJzsKK+iQjj4nW3dpdGhlcl0nOworIyLokJM+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+iQoD4nW2J1ZF0nOworIyLokKI+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+iQqT4nW3NjYW5kZW50IGhvcF0nOworIyLokKo+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+iQrD4nW3RlbiB0aG91c2FuZF0nOwor6JCxPidbZGF5LWxpbHldJzsKK+iQtT4nW2xldHR1Y2VdJzsKK+iQuD4nW2RvZ3dvb2RdJzsKK+iQvD4nW2NhbHl4IG9mIGZsb3dlcl0nOwor6JC9PidbZmFsbF0nOwor6JGGPidbcmVzZXJ2ZV0nOwor6JGJPidbbGVhZl0nOworIyLokY4+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+iRlz4nW21hbmlmZXN0XSc7CivokZs+J1tlZGlibGUgYmVhbl0nOwor6JGhPidbZ3JhcGVzXSc7CivokaI+J1tjb3Zlcl0nOwor6JGjPidbZGlyZWN0XSc7CivokaY+J1tyZWVkXSc7Civokak+J1tmbG93ZXJzXSc7Civokas+J1tib3R0bGUtZ291cmRdJzsKK+iRrD4nW2J1cnldJzsKK+iRrT4nW2J1bHJ1c2hdJzsKKyMi6JGtPidbYnVscnVzaF0nIiwKK+iRrz4nW2xlYWYgb2YgYW5nZWxpY2EgcGxhbnRdJzsKK+iRsT4nW3NjYWxsaW9uc10nOwor6JG1Pidbc3VuZmxvd2VyXSc7Civokbc+J1ttZWF0IGRpZXRdJzsKK+iRuT4nW2tpbmQgb2YgY2hyeXNhbnRoZW11bV0nOwor6JG6PidbdGhhdGNoXSc7CivokoI+J1twZWR1bmNsZSBvciBzdGVtIG9mIHBsYW50c10nOworIyLokoQ+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+iSiz4nW3N1cm5hbWVdJzsKK+iSkD4nW2NvbGxlY3RdJzsKK+iSlD4nW3RyYW5zcGxhbnRdJzsKK+iSmT4nW2NvdmVyXSc7Civokpw+J1tnYXJsaWNdJzsKK+iSnz4nW2JldGVsIHBlcHBlcl0nOwor6JKhPidbYnVyZG9ja10nOwor6JKtPidbdG8gY3V0Z3Jhc3NdJzsKK+iSsj4nW3R5cGUgb2YgcnVzaF0nOwor6JK4Pidbc3RlYW1dJzsKK+iSuT4nW3JlZWRdJzsKK+iSuz4nW3J1c2hlc10nOwor6JK8PidbYmx1ZV0nOwor6JK/PidbbXVnd29ydF0nOwor6JOBPidbYWJ1bmRhbnRdJzsKK+iThD4nW3N0b3JlXSc7Civok4Y+J1tzdHJhdyBtYXRdJzsKK+iTiT4nW2hpYmlzY3VzXSc7Civok4o+J1tsdXh1cmlhbnQgdmVnZXRhdGlvbl0nOwor6JOLPidbY292ZXJdJzsKK+iTjT4nW21pbGZvaWxdJzsKK+iTkD4nW3N0cmF3IGJlZCBtYXRdJzsKK+iTkT4nW3JhaW4gY29hdCBtYWRlIG9mIHN0cmF3XSc7Civok5Y+J1tjYXN0b3Itb2lsIHBsYW50XSc7CisjIuiTmT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor6JOaPidbb3hhbGljICh1c2VkIGluIGNvbXBvdW5kcyldJzsKK+iTrD4nW3R5cGUgb2YgcmFzcGJlcnJ5XSc7Civok64+J1tsb3R1c10nOwor6JO0PidbZWRpYmxlIHdhdGVyIHBsYW50XSc7Civok7w+J1tzbWFydHdlZWRdJzsKK+iTvz4nW2Nsb3Zlcl0nOwor6JSAPidbc2NyZWVuXSc7CivolIY+J1t3YXRlci1jaGVzdG51dF0nOwor6JSRPidbZGlzZGFpbl0nOwor6JSTPidbY3JlZXBpbmcgcGxhbnRzXSc7CivolJQ+J1tyYWRpc2hdJzsKK+iUlT4nW3BlZHVuY2xlIG9yIHN0ZW0gb2YgcGxhbnRzXSc7CivolJc+J1tzdWdhciBjYW5lXSc7CivolJg+J1tnaW5zZW5dJzsKK+iUmj4nW2x1eHVyaWFudF0nOwor6JSfPidbZnJhbWUgb24gd2hpY2ggc2lsa3dvcm1zIHNwaW5dJzsKK+iUoT4nW3N1cm5hbWVdJzsKK+iUpj4nW3BhcmFzaXRpYyBwbGFudHNdJzsKK+iUrD4nW3ZlZ2V0YWJsZXNdJzsKK+iUrT4nW3NoYWRlXSc7CivolLU+J1toaWRlXSc7CivolL0+J1tjb3Zlcl0nOworIyLolYA+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+iVgT4nW25ldHRsZV0nOwor6JWDPidbZm9yZWlnbiB0aGluZ3NdJzsKK+iViD4nW211c2hyb29tc10nOwor6JWJPidbYmFuYW5hXSc7CivolYo+J1t1bm9wZW5lZCBmbG93ZXJzXSc7CivolYs+J1t1bm9wZW5lZCBmbG93ZXJzXSc7CivolY4+J1tidWNrd2hlYXRdJzsKK+iVlT4nW2NhcnlvcHRlcmlzIGRpdmFyaWNhdGFdJzsKKyMi6JWXPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivolZg+J1tmdWVsXSc7CivolZo+J1tjYWx5eCBvZiBmbG93ZXJdJzsKK+iVoz4nW2hpYmlzY3VzXSc7Civolag+J1twdGVyaXMgYXF1aWxpbmFdJzsKK+iVqT4nW3BvbmRdJzsKK+iVqj4nW2x1eHVyaW91cyBncm93dGggb2Ygd2VlZHNdJzsKK+iVrT4nW2NvbW1vbiBhcnRlbWlzaWFdJzsKK+iVtz4nW3lhbV0nOwor6JW+PidbYnVkc10nOwor6JaAPidbdGhlIGhpcHB1cmlzIG9yIG1hcmUnJ3MgdGFpbCBwbGFudF0nOwor6JaEPidbdGhpbl0nOwor6JaHPidbb3NtdW5kYSByZWdhbGlzXSc7Civolog+J1tsdXh1cmlhbnRdJzsKK+iWij4nW2NpcmNpdW1dJzsKK+iWkD4nW3NwaW5hY2hdJzsKK+iWkT4nW2dpbmdlcl0nOwor6JaUPidbcm9zZV0nOwor6JaXPidbZ2FyZGVuXSc7Civolpk+J1t3ZWVkXSc7Civolps+J1traW5kIG9mIG1hcnNoIGdyYXNzXSc7Civolpw+J1tldmVyZ3JlZW4gc2hydWJzXSc7CivolqQ+J1thbGxpdW0gYmFrZXJpXSc7CivolqY+J1tvZmZlcl0nOwor6JaoPidbZGVhdGggb2YgcHJpbmNlXSc7Civolqk+J1t0cmFuc2xpdGVyYXRpb24gb2YgXCJzYXRcIiBvZiBib2RkaGlzYXR0dmEgZXRjLl0nOwor6JaqPidbZnVlbF0nOwor6JarPidbYSBtZWRpY2luYWwgaGVyYl0nOwor6JasPidbZHJ1Z3NdJzsKK+iWrj4nW21hcnNoXSc7Civolq8+J1t5YW1dJzsKK+iWuT4nW2N5cGVydXMgcm90dW5kdXNdJzsKK+iWuj4nW3dhdGVyLWNoZXN0bnV0c10nOwor6JeBPidbc3RyYXddJzsKK+iXiT4nW21hdF0nOwor6JeNPidbYmx1ZV0nOwor6JePPidbaGlkZV0nOwor6JeQPidbZGlzcmVnYXJkXSc7Civol5U+J1tsb3R1cyByb290XSc7Civol5w+J1tjaGVub3BvZGl1bSBhbGJ1bV0nOwor6JedPidbYXJ0XSc7Civol6Q+J1tyYXR0YW5dJzsKK+iXpT4nW2RydWdzXSc7Civol6k+J1tmZW5jZV0nOwor6JeqPidbbWFyc2hdJzsKK+iXtz4nW3lhbV0nOwor6Je5PidbbHVzaF0nOwor6Je6PidbcnVzaCB1c2VkIGluIG1ha2luZyBtYXRzXSc7Civol7s+J1tzcGxlbmRpZF0nOwor6Je+Pidbc2hhZGVdJzsKK+iYgj4nW3N0YW1lbiBvciBwaXN0aWxdJzsKK+iYhj4nW3J1c2hlc10nOwor6JiHPidbdGh5bWVdJzsKK+iYij4nW2NvbGxlY3RdJzsKK+iYiz4nW2FwcGxlXSc7CivomJM+J1t0aHltZV0nOwor6JiWPidbc3R1bXBdJzsKK+iYlz4nW3N0dW1wXSc7CivomJo+J1ttb3NzXSc7CivomKI+J1t0YWxsIGdyYXNzXSc7CivomK0+J1tvcmNoaWRdJzsKK+iYrz4nW3RvIHRvc3MgYWJvdXRdJzsKKyMi6JivPidbdG8gdG9zcyBhYm91dF0nIiwKK+iYvz4nW3R5cGUgb2YgY3JlZXBpbmcgcGxhbnRdJzsKK+iZjT4nW3RpZ2VyXSc7CivomY4+J1t0aWdlcl0nOwor6JmQPidbY3J1ZWxdJzsKK+iZlD4nW2FjdCB3aXRoIHJldmVyZW5jZV0nOwor6JmVPidbcGxhY2VdJzsKK+iZmj4nW2ZhbHNlXSc7CivomZw+J1tjYXB0dXJlXSc7CivomZ4+J1tjb25jZXJuZWQgYWJvdXRdJzsKK+iZnz4nW21hcmtdJzsKK+iZpz4nW2xvc2VdJzsKK+iZqz4nW2luc2VjdHNdJzsKK+iZsT4nW2xvdXNlXSc7Civombk+J1tyYWluYm93XSc7Civombs+J1tob3JzZWZseV0nOwor6JqKPidbbW9zcXVpdG9dJzsKK+iaiz4nW2duYXRdJzsKK+iajD4nW295c3RlcnNdJzsKK+iakz4nW2VhcnRod29ybV0nOwor6JqVPidbc2lsa3dvcm1zXSc7CivomqM+J1tjZW50aXBlZGVdJzsKK+iapD4nW2ZsZWFdJzsKK+iaqT4nW3dvcm1dJzsKK+iaqj4nW3RhZHBvbGVdJzsKK+iaqz4nW2FiYWxvbmVdJzsKK+iarz4nW2VhcnRod29ybV0nOwor6JqwPidbbWlsbGlwZWRlXSc7CivomrY+J1traW5kIG9mIGNsYW1dJzsKK+ibhD4nW21vbGUgY3JpY2tldF0nOwor6JuGPidbbWFnZ290c10nOwor6JuHPidbc25ha2VdJzsKK+ibiT4nW2RyYWdvbmZseV0nOwor6JuLPidbZWdnc10nOwor6JuNPidbZ2xvdy13b3JtXSc7Civom44+J1tveXN0ZXJdJzsKK+iblD4nW3RhcGV3b3JtXSc7Civom5k+J1tmcm9nXSc7Civom5s+J1tzcGlkZXJdJzsKK+ibnj4nW3NuYWlsXSc7Civom58+J1tzY2FseSBkcmFnb24gd2l0aCBmb3VyIGxlZ3NdJzsKK+ibpD4nW2NsYW1dJzsKK+ibqT4nW2NyaWNrZXRdJzsKKyMi6JupPidbY3JpY2tldF0nIiwKK+ibrT4nW2xlZWNoXSc7Civom64+J1tiYXJiYXJpYW5zXSc7Civom68+J1tzaHJpbXBdJzsKK+ibuD4nW2xvbmcgbGVnZ2VkIHNwaWRlcl0nOwor6Ju5PidbY2hyeXNhbGlzXSc7Civom7s+J1ttb2x0XSc7Civom74+J1ttb3RoXSc7CivonIA+J1tuYW1lIG9mIGFuIGFuY2llbnQgc3RhdGVdJzsKK+icgj4nW2JlZV0nOwor6JyDPidbbWFyaW5lIG1vbnN0ZXIgd2hpY2ggY2FuIGNoYW5nZSBpdHMgc2hhcGVdJzsKK+ichj4nW2EgdmFyaWV0eSBvZiBiaXZhbHZlc10nOwor6JyIPidbY2VudGlwZWRlXSc7CivonIk+J1ttYXlmbHldJzsKK+icij4nW2NsYW1dJzsKK+icjT4nW3RvYWRdJzsKK+ickT4nW2VnZ10nOwor6JySPidbbWlsbGlwZWRlXSc7CivonJg+J1tzcGlkZXJdJzsKK+icmj4nW2NvY2tyb2FjaF0nOwor6JycPidbaG9uZXldJzsKK+icpT4nW2xpemFyZF0nOwor6JypPidbY2ljYWRhXSc7CivonLQ+J1tsaXphcmRdJzsKK+ictz4nW2NyZWVwIGxpa2Ugd29ybV0nOwor6Jy7PidbZHJhZ29uZmx5XSc7CivonL8+J1tjcmVlcF0nOwor6J2JPidbY2ljYWRhXSc7CivonYs+J1t3YXhdJzsKK+idjD4nW3RhZHBvbGVdJzsKK+idjj4nW3Njb3JwaW9uXSc7CivonZM+J1tzbmFpbF0nOwor6J2VPidbbmliYmxlIGF3YXldJzsKK+idlz4nW2tpbmQgb2YgbG9jdXN0XSc7CivonZk+J1tiYXRdJzsKK+idnz4nW2hlZGdlaG9nXSc7CivonaA+J1traW5kIG9mIGJhdF0nOwor6J2jPidbbWF5Zmx5XSc7CivonaY+J1tzaHJpbXBdJzsKK+idqD4nW2xvdXNlXSc7CisjIuidqD4nW2xvdXNlXSciLAor6J2uPidbdmVub21vdXMgc25ha2VdJzsKK+idtD4nW2J1dHRlcmZseV0nOwor6J22PidbYnV0dGVyZmx5XSc7Civonbg+J1tzbmFpbF0nOwor6J2/PidbZmxpZXNdJzsKK+iegj4nW21hbnRpc10nOwor6J6NPidbbWVsdF0nOwor6J6fPidba2luZCBvZiBjYXRlcnBpbGxhcl0nOwor6J6iPidbZ2xvdy13b3JtXSc7Civonqs+J1twb2lzb25dJzsKK+ierz4nW25pcHBlcnNdJzsKK+iesz4nW21hbnRpc10nOwor6J66Pidbc3BpcmFsIHNoZWxsXSc7Civonrs+J1tncnlsbG90YWxwYSBhZnJpY2FuYV0nOwor6J69Pidba2F0eWRpZF0nOwor6J+APidbY3JpY2tldF0nOwor6J+EPidbdG8gaGliZXJuYXRlXSc7Civon4Y+J1tmcm9nXSc7Civon4c+J1tmcm9nXSc7Civon4s+J1tjcmlja2V0XSc7CisjIuifiz4nW2NyaWNrZXRdJyIsCivon5I+J1tweXRob25dJzsKK+ifoD4nW2NvaWxdJzsKK+ifrz4nW3dvcm1zXSc7Civon7I+J1t3b3Jtc10nOwor6J+2PidbcmF6b3IgY2xhbV0nOwor6J+3PidbbWFudGlzXSc7Civon7k+J1tjcmFiXSc7Civon7s+J1thbnRzXSc7Civon74+J1t0b2FkXSc7CivooIU+J1tmbGllc10nOwor6KCNPidbc2NvcnBpb25dJzsKK+igjj4nW3B5dGhvbl0nOwor6KCPPidbY3JhYl0nOwor6KCRPidbbGl6YXJkXSc7CivooJU+J1tldW1lbmVzIHBvbGlmb21pc10nOwor6KCWPidbbWVhc3VyaW5nIHdvcm1dJzsKK+igoT4nW3dvb2QtYm9yaW5nIGluc2VjdF0nOwor6KCiPidbd3JpZ2dsZV0nOwor6KCjPidbb3lzdGVyXSc7CivooKc+J1ttb3RoXSc7CivooLE+J1twb3Npb25dJzsKK+igtj4nW3NpbGt3b3Jtc10nOwor6KC5PidbbW90aF0nOwor6KC7PidbYmFyYmFyaWFuc10nOwor6KGAPidbYmxvb2RdJzsKK+ihgj4nW3RvIGJlIGRlZmVhdGVkXSc7CivooYQ+J1tlcGlzdGF4aXNdJzsKK+ihhj4nW211bHRpdHVkZV0nOwor6KGMPidbZ29dJzsKK+ihjT4nW292ZXJmbG93XSc7CivooZI+J1ticmFnXSc7CivooZM+J1thcnRdJzsKK+ihlz4nW3N0cmVldF0nOwor6KGZPidbcHVibGljIG9mZmljZV0nOwor6KGbPidbZ3VhcmRdJzsKK+ihnT4nW3J1c2ggYWdhaW5zdF0nOwor6KGePidbZ3VhcmRdJzsKK+ihoT4nW21lYXN1cmVdJzsKK+ihoj4nW2hpZ2h3YXldJzsKK+ihoz4nW2Nsb3RoZXNdJzsKK+ihqD4nW3Nob3ddJzsKK+ihqz4nW3NoaXJ0XSc7CivoobA+J1tkZWNsaW5lXSc7CivoobI+J1ttZW5kXSc7CivoobU+J1tjaGVtaXNlXSc7Civoobc+J1toZWFydF0nOwor6KG9PidbbGFwZWxdJzsKK+ihvj4nW2NvdmVybGV0XSc7Civoob8+J1tjb2xsYXIgb3IgbGFwZWwgb2YgZ2FybWVudF0nOwor6KKBPidbcm9iZV0nOwor6KKCPidbc2xlZXZlc10nOwor6KKIPidbYnVkZGhpc3QgY2Fzc29ja10nOwor6KKLPidbcG9ja2V0XSc7Civooo0+J1tsb25nIGdvd25dJzsKK+iikj4nW3N0cmlwXSc7CivoopY+J1tzbGVldmVdJzsKK+iilz4nW3VubGluZWQgZ2FybWVudHNdJzsKKyMi6KKZPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivoop4+J1tjZXJlbW9uaWFsIGRyZXNzIHdvcm4gYnkgZW1wZXJvcl0nOwor6KKiPidbcm9iZV0nOwor6KKkPidbbG9uZ2l0dWRlXSc7Civooqs+J1twYXNzaXZlIGluZGljYXRvciBcImJ5XCJdJzsKKyMi6KKuPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCisjIuiisD4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor6KKxPidbcGllY2Ugb2YgY2xvdGggdXNlZCB3cmFwIGJ1bmRsZXNdJzsKK+iitD4nW3BhbnRzXSc7CivoorU+J1tsYXBlbF0nOwor6KK3PidbbGluZWQgZ2FybWVudF0nOwor6KK/PidbZ293bl0nOwor6KOBPidbY3V0IG91dF0nOwor6KOCPidbc3BsaXRdJzsKKyMi6KOCPidbc3BsaXRdJyIsCisjIuijgj4nW3NwbGl0XSciLAor6KOFPidbZHJlc3NdJzsKK+ijjz4nW2luc2lkZV0nOwor6KOUPidbcHJvZ2VueV0nOwor6KOVPidbYWJ1bmRhbnRdJzsKK+ijmD4nW2Z1ciBnYXJtZW50c10nOwor6KOZPidbc2tpcnRdJzsKK+ijnD4nW21lbmRdJzsKK+ijnT4nW2RyZXNzXSc7Civoo58+J1thIGNhc3NvY2sgb3Igcm9iZSBvZiBhIG1vbmtdJzsKK+ijoT4nW2luc2lkZV0nOwor6KOoPidbYWlkXSc7Civoo7I+J1t3YWlzdGNvYXRdJzsKK+ijsz4nW2Nsb3RoZXNdJzsKK+ijtD4nW3N1cm5hbWVdJzsKK+ijuD4nW2JhcmVdJzsKK+ijuT4nW3dyYXBdJzsKK+ijvD4nW3RvIHRha2Ugb2ZmIG9uZScncyB0b3BdJzsKK+ijvT4nW21ha2VdJzsKK+ijvj4nW2xhcGVsXSc7CivopII+J1tqYWNrZXRdJzsKKyMi6KSDPidbYSBzZWFtIGluIGEgZ2FybWVudF0nIiwKK+ikhz4nW3JlcGVhdF0nOwor6KSKPidbY3JhbXBlZF0nOwor6KSMPidbdHJvdXNlcnNdJzsKK+ikkD4nW2NvYXJzZSB3b29sZW4gY2xvdGhdJzsKK+ikkj4nW3ByYWlzZV0nOwor6KSTPidbc3dhZGRsaW5nIGNsb3RoXSc7CivopJ0+J1t1bmxpbmVkIGdhcm1lbnRdJzsKKyMi6KSePidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivopKU+J1ttYXR0cmVzc10nOwor6KSqPidbc3RyaXBdJzsKK+ikqz4nW3N0cmlwXSc7CivopLY+J1twbGVhdF0nOwor6KS4PidbbGFwZWxdJzsKK+ikuz4nW2RpcnR5XSc7CivopYE+J1tzd2FkZGxpbmcgY2xvdGhlc10nOwor6KWDPidbY29tbWVuZF0nOwor6KWEPidbYWlkXSc7CivopYw+J1t1bmxpbmVkIGdhcm1lbnRdJzsKK+iljT4nW21peGVkXSc7CivopZY+J1tvdXRlciBnYXJtZW50c10nOwor6KWePidbZm9sZF0nOwor6KWfPidbbGFwZWxdJzsKK+iloD4nW2Nyb3RjaCBvciBzZWF0IG9mIHBhbnRzXSc7CivopaQ+J1tyYWdnZWRdJzsKK+ilpj4nW3Nob3J0IGNvYXRdJzsKK+ilqj4nW3NvY2tzXSc7Civopa0+J1t0dWNrIHVwIGhlbSBvZiBnYXJtZW50IGFuZCB3cmFwXSc7Civopa8+J1t1bmRlcndlYXJdJzsKK+ilsj4nW3JhaWRdJzsKK+iltD4nW2Egb25lIHBpZWNlIGdhcm1lbnRdJzsKKyMi6KW2PidbaWdub3JhbnRdJyIsCivopb4+J1tjb3Zlcl0nOwor6KW/Pidbd2VzdChlcm4pXSc7CivopoE+J1tuZWNlc3NhcnldJzsKK+imgz4nW3JlYWNoIHRvXSc7CivopoY+J1tjb3Zlcl0nOwor6KaHPidbcnVsZSBieSBtaWdodCByYXRoZXIgdGhhbiByaWdodF0nOwor6KaIPidbaW52ZXN0aWdhdGVdJzsKK+imij4nW2hhbHRlcl0nOwor6KaLPidbc2VlXSc7Civopo8+J1tydWxlc10nOwor6KaTPidbc2Vla10nOwor6KaWPidbbG9vayBhdF0nOwor6KaXPidbcGVla10nOwor6KaYPidbcGVla10nOwor6KaaPidbd2FrZSB1cCBmcm9tIHNsZWVwXSc7CivopqE+J1t3aXphcmRdJzsKK+impj4nW2Rlc2lyZSBzdHJvbmdseV0nOwor6KanPidbbG9vayBhdF0nOwor6KapPidbc2VlXSc7Civopqo+J1tyZWxhdGl2ZXNdJzsKK+imrD4nW2NvdmV0XSc7Civopq8+J1ttZWV0IG9yIHNlZSB1bmV4cGVjdGVkbHldJzsKK+imsj4nW2hhdmUgaW1wZXJpYWwgYXVkaWVuY2VdJzsKK+imsz4nW3NlZV0nOwor6Ka6Pidbd2FrZSB1cCBmcm9tIHNsZWVwXSc7Civopr0+J1tsb29rIGF0XSc7Civopr8+J1tzZWVdJzsKK+ingD4nW3NlZV0nOwor6KeSPidbaG9ybl0nOwor6KeaPidbanVnXSc7Civop5w+J1tiZWFrXSc7Civop50+J1tnb3JlXSc7Civop6M+J1tsb29zZW5dJzsKK+inpj4nW2J1dHRdJzsKK+inpz4nW2xvb3Nlbl0nOwor6Ke0Pidbd2luZSB2ZXNzZWxdJzsKK+inuD4nW3RvdWNoXSc7CivoqIA+J1t3b3Jkc10nOwor6KiCPidbZHJhdyB1cCBhZ3JlZW1lbnRdJzsKK+iogz4nW29iaXR1YXJ5XSc7CivoqIg+J1twbGFuXSc7CivoqIo+J1tpbnF1aXJlXSc7CivoqIw+J1tjb25mdXNpb25dJzsKK+iojj4nW2FzayBmb3JdJzsKK+iokD4nW2V4cG9zZSBvdGhlcicncyBzZWNyZXRzXSc7CivoqJM+J1t0ZWFjaF0nOwor6KiWPidbZmluaXNoXSc7CivoqJc+J1tlbnRydXN0XSc7CivoqJg+J1tyZWNvcmRdJzsKK+iomz4nW3N3aW5kbGVdJzsKK+ionT4nW2V4cHJlc3Mgc3VycHJpc2VdJzsKK+ionz4nW2FjY3VzZV0nOwor6KijPidbdGFrZSBsZWF2ZSBvZl0nOwor6KilPidbc2xvdyBvZiBzcGVlY2hdJzsKK+ioqj4nW3Zpc2l0XSc7CivoqK0+J1tidWlsZF0nOwor6KixPidbYWxsb3ddJzsKK+iosz4nW3RyYW5zbGF0ZV0nOwor6Ki0PidbYWNjdXNlXSc7CivoqLY+J1tzY29sZCBsb3VkbHldJzsKK+iouj4nW2V4YW1pbmUgcGF0aWVudF0nOwor6Ki7PidbZXhwbGFpbl0nOwor6Ki8PidbcHJvdmVdJzsKK+ipgT4nW2V4ZWdlc2lzXSc7CivoqYY+J1tzbGFuZGVyXSc7CivoqYg+J1tzY29sZF0nOwor6KmQPidbY2hlYXRdJzsKK+ipkT4nW2NoZWF0XSc7CivoqZI+J1tiZXF1ZWF0aF0nOwor6KmUPidbZGVjcmVlXSc7CivoqZU+J1thcHByYWlzZV0nOwor6KmbPidbY3Vyc2VdJzsKK+ipnj4nW3dvcmRzXSc7CivoqaA+J1tzaW5nXSc7CivoqaI+J1tpbnF1aXJlIGludG9dJzsKK+ipoz4nW3JlYWNoXSc7CivoqaY+J1t0ZXN0XSc7Civoqak+J1twb2V0cnldJzsKK+ipqz4nW2JlIHN1cnByaXNlZF0nOwor6KmsPidbYWJ1c2VdJzsKK+iprT4nW2RlY2VpdmVdJzsKK+iprj4nW2V4cGxhaW5dJzsKK+ipsD4nW3F1ZXN0aW9uXSc7CivoqbE+J1tzcGVlY2hdJzsKK+ipsj4nW3Nob3VsZF0nOwor6KmzPidbZGV0YWlsZWRdJzsKK+ipvD4nW3RlYXNlXSc7CivoqoI+J1t0ZW1wdF0nOwor6KqEPidbZXVsb2dpemVdJzsKK+iqhT4nW2V4ZWN1dGVdJzsKK+iqhz4nW2V4YWdnZXJhdGVdJzsKK+iqiT4nW2ZhbWVdJzsKK+iqjD4nW3dyaXRlIGRvd25dJzsKK+iqjT4nW3JlY29nbml6ZV0nOwor6KqRPidbZGVjZWl2ZV0nOwor6KqTPidbc3dlYXJdJzsKK+iqlT4nW2JlYXIgY2hpbGRyZW5dJzsKK+iqmD4nW3BlcnN1YWRlXSc7Civoqpo+J1tjcml0aWNpemVdJzsKK+iqnj4nW2xhbmd1YWdlXSc7CivoqqA+J1tzaW5jZXJlXSc7CivoqqE+J1t3YXJuXSc7CivoqqM+J1ttYWtlIGZhbHNlIGFjY3VzYXRpb25dJzsKK+iqpD4nW2Vycl0nOwor6KqlPidbaW5mb3JtXSc7CivoqqY+J1tyZWNpdGVdJzsKK+iqqD4nW3RlYWNoXSc7Civoqqw+J1tzcGVha10nOwor6KqtPidbcmVhZF0nOwor6KqwPidbd2hvPyB3aG9tPyB3aG9zZT8gYW55b25lP10nOwor6KqyPidbbGVzc29uXSc7Civoqrk+J1tzbGFuZGVyXSc7Civoqrw+J1tmcmllbmRzaGlwXSc7Civoqr8+J1t0cmFuc2Zlcl0nOwor6KuCPidbZmxhdHRlcl0nOwor6KuEPidbcGF0aWVudF0nOwor6KuHPidbdGFsa10nOwor6KuLPidbYXNrXSc7Civoq4w+J1tyZW1vbnN0cmF0ZV0nOwor6KuNPidbdG8gZXhwb3N0dWxhdGVdJzsKK+irjz4nW2NvbnN1bHRdJzsKK+irkj4nW2V4Y3VzZV0nOwor6KuWPidbZGViYXRlXSc7Civoq5o+J1soa29rdWppKSBjb21tYW5kXSc7Civoq5s+J1tmbGF0dGVyXSc7Civoq5w+J1tpbnRlbGxpZ2VuY2UgcmVwb3J0XSc7Civoq54+J1ticmFnXSc7Civoq6A+J1tub2lzeV0nOwor6KuhPidbcG9zdGh1bW91cyBuYW1lXSc7Civoq6I+J1tqb2tlc10nOwor6KukPidbaG9uZXN0IHNwZWVjaF0nOwor6KumPidbY2FyZWZ1bF0nOwor6KunPidbaGFybW9uaXplXSc7Civoq6s+J1tyZW1vbnN0cmF0ZV0nOwor6KutPidbcHJvY2xhaW1dJzsKK+irrj4nW2NvbnN1bHRdJzsKK+irsT4nW2NvbmNlYWxdJzsKK+irsz4nW3ZlcnNlZCBpbl0nOwor6Ku3PidbcmVjaXRlXSc7Civoq7g+J1tzZXZlcmFsXSc7Civoq7o+J1twcm92ZXJiXSc7Civoq74+J1twcm9taXNlXSc7CivorIA+J1twbGFuXSc7CivorIE+J1t2aXNpdF0nOwor6KyCPidbc2F5XSc7CivorIQ+J1tjb3B5XSc7CivorIc+J1tzdHV0dGVyXSc7CivorIw+J1tzbGFuZGVyXSc7CivorI4+J1tyaWRkbGVdJzsKK+iskD4nW2NhbG1dJzsKK+islD4nW2plZXJdJzsKK+islj4nW3Jpc2UgdXBdJzsKK+islz4nW3NsYW5kZXJdJzsKK+ismT4nW2h1bWJsZV0nOwor6KyaPidbdG8gY29uZmVyIHBvc3RodW1vdXMgdGl0bGVzXSc7CivorJs+J1tleHBsYWluXSc7CivorJ0+J1t0aGFua10nOwor6KygPidbc2luZ10nOwor6KyhPidbc2luZ10nOwor6KymPidbdCBzcGVhayBzb2Z0bHldJzsKK+isqD4nW3NjaGVtZV0nOwor6KyrPidbY2hhcmdlXSc7CivorKw+J1tlcnJvcl0nOwor6KyzPidbc2luZ10nOwor6Ky5PidbcHJ1ZGVudF0nOwor6Ky+PidbZGVjZWl2ZV0nOwor6K2BPidbbm9pc2VdJzsKK+itiT4nW3Byb29mXSc7CivorYw+J1tmYWxzZV0nOwor6K2OPidbY3VubmluZ10nOwor6K2PPidbcmlkaWN1bGVdJzsKK+itlj4nW3RvIHNsYW5kZXJdJzsKK+itmD4nW3JlY29nbml6ZV0nOwor6K2aPidbc3VybmFtZV0nOwor6K2bPidbdG8gc2xhbmRlcl0nOwor6K2cPidbcmVnaXN0ZXJdJzsKK+itnz4nW2NsYW1vcl0nOwor6K2mPidbZ3VhcmRdJzsKK+itqz4nW3RhbGthdGl2ZV0nOwor6K2sPidbbWV0YXBob3JdJzsKK+itrz4nW3RyYW5zbGF0ZV0nOwor6K2wPidbY29uc3VsdF0nOworIyLorbE+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+itsj4nW2FsbG93XSc7CivorbQ+J1tyZXByaW1hbmRdJzsKK+ittz4nW3Byb3RlY3RdJzsKK+itvT4nW2ZhbWVdJzsKK+iugD4nW3JlYWRdJzsKK+iugz4nW3ByYWlzZV0nOwor6K6KPidbY2hhbmdlXSc7Civorow+J1tmZWFzdF0nOwor6K6OPidbZW5lbXldJzsKK+iukD4nW2VuZW15XSc7CivorpI+J1tzbGFuZGVyXSc7CivorpM+J1thbGxvd10nOwor6K6WPidbcHJvcGhlY3ldJzsKK+iumT4nW2NoZWVyXSc7Civorpo+J1twcmFpc2VdJzsKK+iwtz4nW3ZhbGxleV0nOwor6LC6PidbdGhlIG1vdXRoIG9mIGEgdmFsbGV5XSc7CivosL8+J1t2YWxsZXldJzsKK+ixgT4nW29wZW4gdXBdJzsKK+ixhj4nW2JlYW5zXSc7CivosYg+J1tob3c/IHdoYXQ/XSc7CivosYo+J1thYnVuZGFudF0nOwor6LGMPidbcGVhc10nOwor6LGOPidbdmVydGljYWxdJzsKK+ixkD4nW2FidW5kYW50XSc7CivosZU+J1twaWdzXSc7CivosZo+J1tzbWFsbCBwaWddJzsKK+ixoT4nW2VsZXBoYW50XSc7CivosaI+J1tkb21lc3RpYyBhbmltYWxzXSc7Civosao+J1ticmF2ZV0nOwor6LGrPidbcmVsYXhlZF0nOwor6LGsPidbcGlnXSc7Civosbg+J1tyYWRpY2FsIDE1M10nOwor6LG5PidbbGVvcGFyZF0nOwor6LG6Pidbd29sZl0nOwor6LG8PidbZm94XSc7CivosoI+J1ttYXJ0ZW5dJzsKK+iyhT4nW2JyYXZlXSc7Civosok+J1tiYWRnZXJdJzsKK+iyij4nW2xlb3BhcmRdJzsKK+iyjD4nW2NvdW50ZW5hbmNlXSc7Civoso0+J1thIGZveC1saWtlIGFuaW1hbF0nOwor6LKOPidbbGlvbl0nOwor6LKUPidbZm94XSc7Civospg+J1t0aGUgcGFudGhlcl0nOwor6LKdPidbc2VhIHNoZWxsXSc7Civosp4+J1t2aXJ0dW91c10nOwor6LKgPidbbG9hZF0nOwor6LKhPidbd2VhbHRoXSc7CivosqI+J1tvZmZlciB0cmlidXRlXSc7Civosqc+J1twb29yXSc7Civosqg+J1tnb29kc10nOwor6LKpPidbcGVkZGxlcl0nOwor6LKqPidbZ3JlZWR5XSc7Civosqs+J1tzdHJpbmcgb2YgMTAwMCBjb2luc10nOwor6LKsPidbb25lJydzIHJlc3BvbnNpYmlsaXR5XSc7Civosq0+J1ttYXR0ZXJdJzsKK+iyrj4nW251bWJlciB0d29dJzsKK+iyrz4nW3N0b3JlXSc7CivosrA+J1tib3Jyb3ddJzsKK+iysj4nW3Byb3BlcnR5XSc7CivosrM+J1tudW1iZXIgdHdvXSc7CivosrQ+J1tleHBlbnNpdmVdJzsKK+iytj4nW2RlY3JlYXNlXSc7Civosrc+J1tidXldJzsKK+iyuD4nW2xlbmRdJzsKK+iyuz4nW2V4cGVuc2VzXSc7Civosrw+J1twYXN0ZSB0b10nOwor6LK9PidbZ2l2ZSB0b10nOwor6LK/PidbdHJhZGVdJzsKK+izgD4nW2NvbmdyYXR1bGF0ZV0nOwor6LOBPidbZm9yZ2UgYWhlYWRdJzsKK+izgj4nW2JyaWJlXSc7Civos4M+J1tyZW50XSc7Civos4Q+J1ticmliZV0nOwor6LOHPidbcHJvcGVydHldJzsKK+iziD4nW3N1cm5hbWVdJzsKK+izij4nW3RoaWVmXSc7Civos40+J1tib290eV0nOwor6LOOPidbbWVhbl0nOwor6LORPidbcmVsaWV2ZV0nOwor6LOTPidbZ3Vlc3RdJzsKK+izmj4nW2dpdmVdJzsKK+izmz4nW2hlbHBdJzsKK+iznD4nW2dpdmVdJzsKK+iznj4nW3Jld2FyZF0nOwor6LOgPidbaW5kZW1uaWZ5XSc7Civos6I+J1t2aXJ0dW91c10nOwor6LOjPidbc2VsbF0nOwor6LOkPidbbWVhbl0nOwor6LOmPidbdGF4XSc7Civos6o+J1ttYXR0ZXJdJzsKK+izrT4nW2JldF0nOwor6LO6PidbbWFrZSBtb25leV0nOwor6LO7PidbZ2lmdCBvZiBtb25leSBoZWxwIHBheSBmdW5lcmFsXSc7Civos7w+J1tidXldJzsKK+izvT4nW2NvbXBldGVdJzsKK+i0hD4nW2dpZnQgc3VwZXJpb3JdJzsKK+i0hT4nW3VubmVjZXNzYXJ5XSc7CivotIc+J1thZmZhYmxlXSc7CivotIg+J1tnaXZlIHByZXNlbnRdJzsKK+i0ij4nW2hlbHBdJzsKK+i0iz4nW2ZhbHNlXSc7CivotI0+J1tzdXBwb3J0XSc7CivotI8+J1t3aW5dJzsKK+i0kD4nW2ZhcmV3ZWxsIHByZXNlbnRdJzsKK+i0kz4nW2Jvb3R5XSc7CivotJQ+J1tzdHJvbmddJzsKK+i0lj4nW2J1eV0nOwor6LWkPidbcmVkXSc7CivotaY+J1tmb3JnaXZlXSc7Civotac+J1tibHVzaF0nOwor6LWrPidbYnJpZ2h0XSc7Civota0+J1tyZWRkaXNoIGJyb3duXSc7CivotbA+J1t3YWxrXSc7CivotbE+J1t3YWxrXSc7CivotbM+J1tncmFuZF0nOwor6LW0PidbZ28gdG9dJzsKK+i1tz4nW3Jpc2VdJzsKK+i2gT4nW3Rha2UgYWR2YW50YWdlIG9mXSc7CivotoU+J1tqdW1wIG92ZXJdJzsKK+i2ij4nW2V4Y2VlZF0nOwor6LaZPidbc3VybmFtZV0nOwor6LajPidbd2hhdCBhdHRyYWN0cyBvbmUnJ3MgYXR0ZW50aW9uXSc7Civotqg+J1toYXN0ZW5dJzsKK+i2sz4nW2Zvb3RdJzsKK+i2uj4nW3NpdCBjcm9zcy1sZWdnZWRdJzsKK+i2vj4nW3RvZV0nOwor6LeCPidbY3JlZXBpbmddJzsKK+i3iz4nW2dvIGJ5IGZvb3RdJzsKK+i3jD4nW3N0dW1ibGVdJzsKK+i3jz4nW3NpdCBjcm9zcy1sZWdnZWRdJzsKK+i3lj4nW3NvbGUgKG9mIHRoZSBmb290KV0nOwor6LeaPidbc3RhZ2dlcl0nOwor6LebPidbbGFtZV0nOwor6LedPidbZGlzdGFuY2VdJzsKK+i3nz4nW2hlZWxdJzsKK+i3oT4nW3NlYXJjaF0nOwor6LejPidbYmFyZSBmb290ZWRdJzsKK+i3qD4nW3N0cmFkZGxlXSc7Civot6o+J1trbmVlbF0nOwor6LerPidbc291bmQgb2YgZm9vdHN0ZXBzXSc7Civot68+J1tyb2FkXSc7Civot7M+J1tqdW1wXSc7Civot7U+J1t0cmFtcGxlXSc7Civot7w+J1tiZW50XSc7CisjIui3vz4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor6LiIPidbbmVnbGVjdF0nOwor6LiJPidbaG9wXSc7CivouIo+J1tsZWFwXSc7CivouI8+J1tzdGVwIG9uXSc7CivouJA+J1t0cmFtcGxlXSc7CivouJ0+J1thbmtsZV0nOwor6LiePidbY3JvdWNoXSc7CivouJ8+J1toZXNpdGF0ZV0nOwor6LiqPidbZm9vdHByaW50c10nOwor6LiwPidbZXhjZWVkXSc7CivouLQ+J1tsZWFwXSc7CivouLU+J1toZWVsXSc7CivouYI+J1t0cmFtcGxlIHVuZGVyIGZvb3RdJzsKK+i5hD4nW2hvb2ZdJzsKK+i5hz4nW2xhbWVdJzsKK+i5iD4nW3N0YW1wIGZlZXRdJzsKK+i5iT4nW2Vycm9yXSc7CivouYo+J1tmb290cGF0aF0nOwor6LmMPidbd2FsayByYXBpZGx5XSc7CivouZA+J1t0YWtlIHNob3J0IHN0ZXBzXSc7CivouZU+J1tjbGVhciB3YXldJzsKK+i5mT4nW3VyZ2VudF0nOwor6LmfPidbdHJhY2VdJzsKK+i5oD4nW3N0ZXAgb25dJzsKK+i5oz4nW3RvIGp1bXAgb3Zlcl0nOwor6LmkPidbZm9vdHByaW50c10nOwor6LmyPidbc3F1YXRdJzsKK+i5tD4nW2tpY2tdJzsKK+i5tj4nW3N0dW1ibGVdJzsKK+i5vD4nW3dlYmJlZCBmZWV0IG9mIHdhdGVyZm93bF0nOwor6LqBPidbdGVuc2VdJzsKK+i6hD4nW2NyaXBwbGVdJzsKK+i6hT4nW3dhbGsgY2FyZWZ1bGx5XSc7Civouoc+J1toZXNpdGF0ZV0nOwor6LqKPidbaGVzaXRhdGVdJzsKK+i6iz4nW2FzY2VuZF0nOwor6LqNPidbc2tpcF0nOwor6LqRPidbd2F2ZXJdJzsKK+i6kz4nW3N0dW1ibGVdJzsKK+i6lD4nW2ZvbGxvdyBpbl0nOwor6LqZPidbdHJhbXBsZSBkb3duXSc7CivouqE+J1t0cmVhZF0nOwor6LqqPidbdHJhbXBsZSBkb3duXSc7Civouqs+J1tib2R5XSc7Civouqw+J1tib2R5XSc7Civouq8+J1tib2R5XSc7CivourA+J1tib2R5XSc7CivourE+J1toaWRlXSc7CisjIui6uj4nW2xpZSBkb3duXSciLAorIyLou4Q+J1t0byBnb3Zlcm5dJyIsCivou4Y+J1tib2R5XSc7CisjIui7hj4nW2JvZHldJyIsCivou4o+J1tjYXJ0XSc7Civou4s+J1tjcnVzaCBieSB3ZWlnaHRdJzsKK+i7jD4nW3RyYWNrXSc7Civou40+J1thcm15XSc7Civou5I+J1tjYXJyaWFnZV0nOwor6LubPidbeW9rZV0nOwor6LufPidbc29mdF0nOwor6LuiPidbc2hpZnRdJzsKK+i7oz4nW3J1bWJsZV0nOwor6LurPidbY3Jvc3MgYm9hcmQgYXQgcmVhciBvZiBjYXJyaWFnZV0nOwor6Lu4PidbYXhsZV0nOwor6Lu7PidbYXhsZV0nOwor6Lu8PidbcnVzaCBmb3J0aF0nOwor6Lu9PidbbGlnaHRdJzsKK+i7vj4nW2hvcml6b250YWwgd29vZGVuIGJhciBpbiBmcm9udCBvZiBhIHNlZGFuIGNoYWlyXSc7CivovIM+J1tjb21wYXJlXSc7CivovIU+J1tjaGFyaW90XSc7CivovIk+J1tsb2FkXSc7CivovIo+J1tsb3cgcmVhciBwb3J0aW9uIG9mIGNhcnRdJzsKK+i8jD4nW251bWVyYXJ5IGFkanVuY3QgZm9yIHZlaGljbGVzXSc7CivovJI+J1tzaWRlcyBvZiBjaGFyaW90IHdoZXJlIHdlYXBvbnNdJzsKK+i8kz4nW21vdXJuXSc7CivovJQ+J1tjaGVlayBib25lXSc7CivovJU+J1tsaWdodF0nOwor6LyZPidbc2lkZXMgb2YgY2hhcmlvdCB3ZXJlIHdlYXBvbnNdJzsKK+i8mz4nW251bWVyYXJ5IGFkanVuY3QgZm9yIHZlaGljbGVzXSc7CivovJw+J1tzdXBwbHkgY2FydF0nOwor6LydPidbYnJpZ2h0bmVzc10nOwor6LyfPidbc3RvcF0nOwor6LymPidbaGFuZC1jYXJ0XSc7CivovKk+J1tnZW5lcmF0aW9uXSc7CivovKo+J1t3aGVlbF0nOwor6LyvPidbZ2F0aGVyIHVwXSc7CivovLM+J1todWJzIG9mIHdoZWVsXSc7CivovLg+J1t0cmFuc3BvcnRdJzsKK+i8uT4nW3R3byBwaWVjZXMgb2Ygd29vZCB1bmRlcm5lYXRoIGNhXSc7CivovLs+J1tzcG9rZXMgb2Ygd2hlZWxdJzsKK+i8vj4nW3R1cm4gb3Zlcl0nOwor6Ly/PidbY2FydF0nOwor6L2CPidbaHViIG9mIHdoZWVsXSc7CivovYQ+J1tsaW5jaHBpbiBvZiB3aGVlbF0nOwor6L2FPidbYXhsZV0nOwor6L2GPidbd2luZGxhc3NdJzsKK+i9iT4nW3NoaWZ0XSc7CivovYw+J1tzbGVkXSc7CivovY0+J1t3YWdvbiBydXRzXSc7CivovY4+J1tzZWRhbi1jaGFpcl0nOwor6L2XPidbZmFpbF0nOwor6L2cPidbaGVhcnNlXSc7CivovZ8+J1tydW1ibGVdJzsKK+i9oT4nW2JyaWRsZSBvZiBob3JzZV0nOwor6L2iPidbcnVuIG92ZXIgc29tZXRoaW5nIHdpdGggdmVoaWNsZV0nOworIyLovaM+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+i9pD4nW3B1bGxleV0nOwor6L6bPidbYml0dGVyXSc7Civovpw+J1tjcmltZV0nOwor6L6ePidbd29yZHNdJzsKK+i+nz4nW2xhd10nOwor6L6jPidbcGVwcGVyeV0nOwor6L6nPidbbWFuYWdlXSc7Civovqg+J1tkaXN0aW5ndWlzaF0nOwor6L6tPidbd29yZHNdJzsKK+i+rj4nW2JyYWlkXSc7Civovq8+J1tkaXNwdXRlXSc7CivovrA+J1tlYXJseSBtb3JuaW5nXSc7CivovrE+J1todW1pbGlhdGVdJzsKK+i+sj4nW2FncmljdWx0dXJlXSc7Civovrc+J1tzbW9vdGhdJzsKK+i+uj4nW2VkZ2VdJzsKK+i+uz4nW2Nyb3Nzcm9hZHNdJzsKK+i+vD4nW2Nyb3dkIGludG9dJzsKK+i+vz4nW2ZvbGxvd10nOwor6L+CPidbZG9jdHJpbmFpcmVdJzsKK+i/hD4nW2V4dGVuZF0nOwor6L+FPidbcXVpY2tdJzsKK+i/jj4nW3JlY2VpdmVdJzsKK+i/kT4nW25lYXJdJzsKK+i/lD4nW3JldHVybl0nOwor6L+aPidbdmVyeV0nOwor6L+iPidbZmFyXSc7Civov6U+J1tkaXN0YW50XSc7Civov6Y+J1tjaGFyYWN0ZXIgZm9yIHRyYW5zbGl0ZXJhdGlvbl0nOwor6L+pPidbYmUgbmVhcl0nOwor6L+qPidbZW5saWdodGVuXSc7Civov6s+J1tjb2VyY2VdJzsKK+i/rT4nW3JlcGVhdGVkbHldJzsKK+i/rz4nW2VzY2FwZV0nOwor6L+wPidbbmFycmF0ZV0nOwor6L+0PidbcmV2b2x2ZV0nOwor6L+3PidbYmV3aXRjaF0nOwor6L+4PidbZ3VzaCBvdXRdJzsKK+i/uT4nW3RyYWNlc10nOwor6L+6PidbdGhlbl0nOwor6L+9PidbcHVyc3VlXSc7CivpgIA+J1tzdGVwIGJhY2tdJzsKK+mAgT4nW3NlZSBvZmZdJzsKK+mAgz4nW2VzY2FwZV0nOwor6YCFPidbbWVldCB1bmV4cGVjdGVkbHldJzsKK+mAhj4nW2Rpc29iZXldJzsKK+mAiz4nW2ZsZWVdJzsKK+mAjT4nW3JhbWJsZV0nOwor6YCOPidbc3Ryb25nXSc7CivpgI8+J1twZW5ldHJhdGVdJzsKK+mAkD4nW2NoYXNlXSc7CivpgJE+J1tjb2xsZWN0XSc7CivpgJM+J1toYW5kIG92ZXJdJzsKK+mAlD4nW3dheV0nOwor6YCVPidbcGFzcyBieV0nOwor6YCWPidbZmFyXSc7CivpgJc+J1t0ZW1wdF0nOwor6YCZPidbdGhpc10nOwor6YCaPidbcGFzcyB0aHJvdWdoXSc7CivpgJ0+J1twYXNzIGF3YXldJzsKK+mAnj4nW2luZHVsZ2Ugb25lc2VsZl0nOwor6YCfPidbcXVpY2tdJzsKK+mAoD4nW2NvbnN0cnVjdF0nOwor6YChPidbcmV0cmVhdF0nOwor6YCiPidbY29tZSB1cG9uXSc7CivpgKM+J1tqb2luXSc7CisjIumApj4nW21lYW5kZXJpbmddJyIsCivpgK4+J1tzZWl6ZV0nOwor6YCxPidbd2Vla10nOwor6YCyPidbYWR2YW5jZV0nOwor6YC1PidbdGhvcm91Z2hmYXJlXSc7CivpgLY+J1t3aW5kaW5nXSc7CivpgLg+J1tmbGVlXSc7CivpgLk+J1thcnJpdmUgYXRdJzsKK+mAvD4nW2NvbXBlbF0nOwor6YC+PidbZ28gb3Zlcl0nOwor6YGBPidbaGlkZV0nOwor6YGCPidbY29tcGx5IHdpdGhdJzsKK+mBhT4nW2xhdGVdJzsKK+mBhz4nW21lZXRdJzsKK+mBiT4nW3NweV0nOwor6YGKPidbd2FuZGVyXSc7CivpgYs+J1tsdWNrXSc7CivpgY0+J1tldmVyeXdoZXJlXSc7CivpgY4+J1twYXNzXSc7CivpgY8+J1tzdG9wXSc7CivpgZA+J1thZmFyXSc7CivpgZE+J1tsZWlzdXJlXSc7CivpgZI+J1tzdHJvbmddJzsKK+mBkz4nW3BhdGhdJzsKK+mBlD4nW2Fycml2ZSBhdF0nOwor6YGVPidbZGlzb2JleV0nOworIyLpgZU+J1tkaXNvYmV5XSciLAor6YGYPidbdG8gbWVldF0nOwor6YGZPidbZmFyIGF3YXldJzsKK+mBnD4nW2h1bWJsZV0nOwor6YGePidbaGFuZCBvdmVyXSc7CivpgaA+J1tkaXN0YW50XSc7CivpgaE+J1tnbyB1cHN0cmVhbV0nOwor6YGjPidbc2VuZF0nOwor6YGlPidbZmFyIGF3YXldJzsKK+mBqD4nW3JhbWJsZV0nOwor6YGpPidbbWF0Y2hdJzsKK+mBrT4nW2NvbWUgYWNyb3NzXSc7Civpga4+J1tjb3Zlcl0nOwor6YGvPidbZGVjZWl2ZV0nOwor6YGyPidbbGF0ZV0nOwor6YG1Pidbb2JleV0nOwor6YG2PidbZW50d2luZV0nOwor6YG3PidbbW92ZV0nOwor6YG4PidbY2hvb3NlXSc7Civpgbo+J1tsb3NlXSc7Civpgbw+J1tkaXN0YW50XSc7Civpgb0+J1tzdWRkZW5seV0nOwor6YG/PidbYXZvaWRdJzsKK+mCgD4nW2ludml0ZV0nOwor6YKBPidbdGFrZSBhIGJpZyBzdHJpZGVdJzsKK+mCgj4nW3VuZXhwZWN0ZWQgbWVldGluZ10nOwor6YKDPidbcHJvZm91bmRdJzsKK+mChD4nW3N0aWxsXSc7Civpgoc+J1tiZSBuZWFyXSc7Civpgok+J1tlZGdlXSc7Civpgoo+J1tlZGdlXSc7Civpgo8+J1twYXRyb2xdJzsKK+mCkT4nW2FyZWFdJzsKK+mCoz4nW3RoYXRdJzsKK+mCpj4nW25hdGlvbl0nOwor6YKoPidbdmlsbGFnZV0nOwor6YKqPidbd3JvbmddJzsKK+mCrz4nW2NpdHkgaW4gaGViZWkgcHJvdmluY2VdJzsKK+mCsT4nW3N1cm5hbWVdJzsKK+mCtT4nW3N1cm5hbWVdJzsKK+mCuD4nW29mZmljaWFsIHJlc2lkZW5jZV0nOwor6YOBPidbc3dlZXQgc21lbGxpbmddJzsKK+mDij4nW3N1YnVyYnNdJzsKK+mDjj4nW2dlbnRsZW1hbl0nOwor6YObPidbb3V0ZXIgd2FsbHMgb2YgY2l0eV0nOwor6YOhPidbYWRtaW5pc3RyYXRpdmUgZGl2aXNpb25dJzsKK+mDoj4nW3N0YXRlIGluIHRvZGF5JydzIGh1YmVpIHByb3ZpbmNlXSc7Civpg6Q+J1tjcmFja10nOwor6YOoPidbcGFydF0nOwor6YOtPidbb3V0ZXIgcGFydCAob2YgYSBjaXR5KV0nOwor6YO1PidbcG9zdGFsXSc7Civpg7c+J1tjb3VudHJ5XSc7Civpg70+J1ttZXRyb3BvbGlzXSc7CivphII+J1todWJlaSBwcm92aW5jZV0nOwor6YSSPidbbmFtZSBvZiBhbiBhbmNpZW50IHN0YXRlXSc7CivphJk+J1ttZWFuXSc7CivphK0+J1tzdGF0ZSBpbiB0b2RheScncyBoZW5hbl0nOwor6YSwPidbbmVpZ2hib3JdJzsKK+mEsj4nW2NvdW50eSBpbiBoZWJlaSBwcm9pbmNldl0nOwor6YWJPidbdGVudGggaW4gc2VyaWVzIG9mIHR3ZWx2ZSBjeWNsaWNdJzsKK+mFij4nW2RydW5rXSc7CivphYs+J1tjaGllZiBvZiB0cmliZV0nOwor6YWMPidbc2VydmUgd2luZV0nOwor6YWNPidbbWF0Y2hdJzsKK+mFjj4nW2RvdWJsZS1mZXJtZW50ZWQgd2luZV0nOwor6YWSPidbd2luZV0nOwor6YWUPidbaW50b3hpY2F0ZWRdJzsKK+mFlj4nW3dpbmUgd2l0aCBiaXJkIHBvaXNvbiBhZGRlZF0nOworIyLphZg+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+mFoj4nW3RvYXN0IG9uZScncyBob3N0IHdpdGggd2luZV0nOwor6YWjPidbZW5qb3kgaW50b3hpY2FudHNdJzsKK+mFpT4nW2J1dHRlcl0nOwor6YWpPidbZHJ1bmtdJzsKK+mFqj4nW2NyZWFtXSc7Civphaw+J1t0b2FzdF0nOwor6YWyPidbaGFuZ292ZXJdJzsKKyMi6YWyPidbaGFuZ292ZXJdJyIsCivphbU+J1t5ZWFzdF0nOwor6YW3Pidbc3Ryb25nXSc7Civphbg+J1t0YXJ0XSc7CisjIumGgT4nW2Ega2luZCBvZiBncmVlbi1jb2xvcmVkIHdpbmVdJyIsCivphoc+J1tyaWNoXSc7Civphok+J1tpbnRveGljYXRlZF0nOwor6YaLPidbdmluZWdhcl0nOwor6YaNPidbZXNzZW50aWFsIG9pbCBvZiBidXR0ZXJdJzsKK+mGkD4nW3B1cmVzdCBjcmVhbV0nOwor6YaSPidbd2FrZSB1cF0nOwor6YaXPidbdG8gYnJldyBmb3IgdGhlIHNlY29uZCB0aW1lXSc7Civphpw+J1t1Z2x5IGxvb2tpbmddJzsKK+mGoj4nW21pbmNlZCBwaWNrbGVkIG1lYXRdJzsKK+mGpD4nW2FueSBqYW0tbGlrZSBvciBwYXN0ZS1saWtlIGZvb2RdJzsKK+mGqj4nW3VuY2xlYXIgd2luZV0nOwor6YarPidbY3VyZV0nOwor6YavPidbdmluZWdhcl0nOwor6Ya0Pidbc3dlZXQgd2luZV0nOwor6Ya1PidbY29udHJpYnV0ZSBmb3IgZHJpbmtzXSc7Civphrg+J1ticmV3XSc7Civphro+J1tnZXQgZHJ1bmtdJzsKK+mHgD4nW2JyZXddJzsKK+mHgT4nW3NtZWFyIHdpdGggYmxvb2QgaW4gc2FjcmlmaWNlXSc7Civph4Y+J1tkaXN0aW5ndWlzaF0nOwor6YeHPidbY29sbGVjdF0nOwor6YeIPidbaW50ZXJwcmV0ZV0nOwor6YeJPidbZ2xhemVdJzsKK+mHiz4nW2ludGVycHJldGVdJzsKK+mHjD4nW3VuaXQgb2YgZGlzdGFuY2VdJzsKK+mHjT4nW2hlYXZ5XSc7Civph44+J1tvcGVuIGNvdW50cnldJzsKK+mHjz4nW21lYXN1cmVdJzsKK+mHkD4nW21hbmFnZV0nOwor6YeRPidbZ29sZF0nOwor6YeWPidba25pZmVdJzsKK+mHmD4nW25haWxdJzsKKyMi6YebPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivph5w+J1tjYXVsZHJvbl0nOwor6YedPidbbmVlZGxlXSc7CisjIumHnz4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor6YehPidbY2F1bGRyb25dJzsKK+mHoz4nW2Zpc2hdJzsKK+mHpj4nW2J1dHRvbl0nOwor6YenPidbYnJhY2VsZXRdJzsKK+mHtT4nW29ybmFtZW50YWwgaGFpcnBpbl0nOworIyLph7Y+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+mHvD4nW3N3b3JkXSc7CisjIumHvz4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor6YiNPidbYmx1bnRdJzsKK+mIjj4nW2hvb2tdJzsKK+mIkT4nW3BsYXRlXSc7CivpiJQ+J1twYXBlciBtb25leV0nOwor6YiVPidbYnV0dG9uXSc7CivpiJ4+J1t1bml0IG9mIG1lYXN1cmUgZXF1aXZhbGVudCB0aGlydF0nOwor6YipPidbZmlyZXBsYWNlXSc7CivpiKw+J1tiZWxsXSc7CivpiLQ+J1tiZWxsXSc7CivpiLc+J1tjb2JhbHRdJzsKK+mIvz4nW2hhaXJwaW5dJzsKK+mJhD4nW2lyb25dJzsKK+mJhT4nW3N0ZWVsXSc7CivpiYg+J1t0aGFsbGl1bV0nOwor6YmJPidbZGV2aWNlIGZvciBjYXJyeWluZyBhIHRyaXBvZF0nOwor6YmLPidbY2FycGVudGVyJydzIHBsYW5lXSc7CisjIumJkD4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor6YmXPidbcGluY2Vyc10nOwor6YmaPidbcml2ZXRdJzsKK+mJmz4nW2xlYWQgcGx1bWJ1bV0nOwor6YmePidbYnJvYWQtYXhlXSc7CivpiaI+J1tlYXJ0aGVud2FyZSBiYXNpbl0nOwor6YmkPidbaG9va10nOwor6YmmPidba2luZCBvZiBnb25nIHVzZWQgaW4gYW5jaWVudCB0aW1dJzsKK+mJsT4nW21pbmVdJzsKK+mJvj4nW3NwZWFyXSc7CivpioA+J1tzaWx2ZXJdJzsKK+mKgz4nW2FuY2llbnQgd2VhcG9uXSc7CivpioU+J1tjb3BwZXJdJzsKK+mKkT4nW21pbGxdJzsKK+mKkz4nW3dlaWdoXSc7CivpipU+J1tpcm9uXSc7CivpipY+J1t1bml0IG9mIHdlaWdodF0nOwor6YqYPidbaW5zY3JpYmVdJzsKK+mKmj4nW2xhcmdlIGhvZV0nOwor6YqbPidbc2hhcnBdJzsKK+mKnD4nW2JpdF0nOwor6YqtPidbbW9uZXldJzsKK+mKtz4nW21lbHRdJzsKK+mKuT4nW3J1c3RdJzsKK+mLjz4nW3RvbmdzXSc7Civpi5I+J1twb2ludCBvZiBzcGVhcl0nOwor6YukPidbaG9lXSc7Civpi6k+J1twb2ludCBvZiBzd29yZF0nOwor6YuqPidbc3ByZWFkIG91dF0nOwor6YutPidbc2hhcnBdJzsKK+mLsj4nW3JpdmV0XSc7Civpi7M+J1ttZWx0XSc7Civpi7g+J1thIHNhd10nOworIyLpi7o+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+mLvD4nW3N0ZWVsXSc7CivpjIY+J1t0aGUgY29sb3Igb2YgYSBtaW5lcmFsXSc7CivpjI8+J1tzb2Z0IHN0ZWVsXSc7CivpjJA+J1tnaW1sZXRdJzsKK+mMmD4nW2JhbGFuY2Ugd2VpZ2h0IG9uIHNjYWxlXSc7CivpjJk+J1s4IG96XSc7CivpjJo+J1tjbGFuZ2luZyBzb3VuZF0nOwor6YygPidbc3BpbmRsZV0nOwor6YyiPidbbW9uZXldJzsKKyMi6YyjPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivpjKY+J1ticm9jYWRlXSc7CivpjKg+J1thbmNob3JdJzsKK+mMqz4nW3Rpbl0nOwor6YysPidbc21lbHQgbWV0YWxzXSc7CivpjK4+J1tydW4gbWV0YWwgaW50byBjcmFja3NdJzsKK+mMrz4nW2Vycm9yXSc7CivpjLI+J1tjb3B5XSc7CisjIumMtT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAorIyLpjLo+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKKyMi6Yy7PidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCisjIumNhD4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor6Y2LPidbY29va2luZy1wb3RdJzsKK+mNjT4nW3BsYXRlXSc7CivpjZQ+J1toaWdoXSc7CisjIumNlj4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor6Y2bPidbZm9yZ2UgbWV0YWxdJzsKKyMi6Y2cPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivpjaA+J1t3ZWFwb25dJzsKK+mNrD4nW3Nob3ZlbF0nOwor6Y2uPidbYnJhc3NdJzsKK+mNtT4nW2Rvb3IgYm9sdF0nOwor6Y28PidbbmVlZGxlXSc7Civpjb4+J1tjdXBdJzsKK+mOjD4nW3NpY2tsZV0nOwor6Y6UPidbZnVzZV0nOwor6Y6WPidbbG9ja10nOwor6Y6XPidbcmlmbGVdJzsKK+mOmj4nW2hhbW1lcl0nOwor6Y6nPidbYXJtb3JdJzsKK+mOrD4nW3N0b3ZlXSc7Civpjq0+J1t0b3duXSc7Civpjq4+J1t0b3duXSc7CivpjrA+J1ttZWFzdXJlIG9mIHdlaWdodCBmb3IgZ29sZF0nOworIyLpjrk+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+mPgz4nW2Fycm93aGVhZF0nOwor6Y+IPidbY2hhaW5dJzsKK+mPkD4nW3B1cmUgZ29sZF0nOwor6Y+RPidbZHlzcHJvc2l1bSB0aGUgYmFyYiBvZiBhbiBhcnJvd10nOwor6Y+WPidbZmlnaHQgZW5kXSc7Civpj5c+J1tzdHJpa2VdJzsKK+mPmD4nW3RpbmtsZV0nOwor6Y+dPidbdHJvd2VsXSc7Civpj6E+J1ttaXJyb3JdJzsKK+mPpD4nW2NhcnZlXSc7Civpj6U+J1tydXN0XSc7Civpj6g+J1tlbmdyYXZpbmcgdG9vbF0nOwor6ZCDPidbY3ltYmFsc10nOwor6ZCHPidbdmFuYWRpdW1dJzsKK+mQkD4nW2ZldHRlcnNdJzsKK+mQkz4nW2ZlcnJ1bGVdJzsKK+mQlD4nW2RhZ2dlcl0nOwor6ZCYPidbY2xvY2tdJzsKK+mQmT4nW2xhbXBdJzsKK+mQmj4nW3NvZnQgc3RlZWxdJzsKK+mQoT4nW2lyb25dJzsKK+mQqz4nW2VuZ3JhdmluZyB0b29sXSc7CivpkLU+J1tpcm9uXSc7CivpkLY+J1ttZXRhbCByaW5nXSc7CivpkLg+J1tiZWxsXSc7CivpkLo+J1tmcnlpbmcgcGFuXSc7CisjIumRgT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor6ZGEPidbbWVsdF0nOwor6ZGRPidbbWlycm9yXSc7CivpkZI+J1ttaXJyb3JdJzsKK+mRkz4nW3NwZWFyXSc7CivpkZo+J1tkcmlsbF0nOwor6ZGbPidbbWluZV0nOwor6ZGePidbc29sZGVyXSc7CivpkaA+J1ttZWx0XSc7CivpkaI+J1tmaWxlXSc7Civpkao+J1tmaXJlcGxhY2VdJzsKK+mRsD4nW2tleV0nOwor6ZG1PidbamFyXSc7Civpkbc+J1t0d2VlemVyc10nOwor6ZG8PidbZ29uZ10nOwor6ZG9PidbZHJpbGxdJzsKK+mRvj4nW2JlbGxzIGh1bmcgb24gaG9yc2VdJzsKK+mRvz4nW2NoaXNlbF0nOwor6ZKBPidbYSBtYXR0b2NrXSc7Civplbc+J1tsb25nXSc7CivploA+J1tnYXRlXSc7CivploI+J1tib2x0XSc7CivploM+J1tmbGFzaF0nOwor6ZaHPidbc2h1dF0nOwor6ZaJPidbc2h1dF0nOworIyLplok+J1tzaHV0XSciLAor6ZaLPidbb3Blbl0nOwor6ZaPPidbaW50ZXJjYWxhcnldJzsKK+mWkT4nW2ZlbmNlXSc7CivplpM+J1tpbnRlcnZhbF0nOwor6ZaUPidbbW91cm5dJzsKKyMi6ZaUPidbbW91cm5dJyIsCivplpg+J1tzbHVpY2VdJzsKK+mWmT4nW3F1YXJyZWxdJzsKK+mWoD4nW2ludGVyY2FsYXJ5XSc7CivplqI+J1tmcm9udGllciBwYXNzXSc7CivplqM+J1tjaGFtYmVyXSc7CivplqQ+J1tzbWFsbCBzaWRlIGRvb3JdJzsKK+mWpT4nW3Bvd2VyZnVsIGFuZCBpbmZsdWVudGlhbCBncm91cF0nOwor6ZanPidbYm9pc3Rlcm91c10nOwor6ZaoPidbc21hbGwgZW50cmFuY2VdJzsKK+mWrT4nW3ZpbGxhZ2Ugb2YgdHdlbnR5LWZpdmUgZmFtaWxpZXNdJzsKK+mWsj4nW2V4YW1pbmVdJzsKK+mWuT4nW2Nhc3RyYXRlXSc7Civplrs+J1t2aWxsYWdlIGdhdGVdJzsKK+mWvD4nW2Jsb2NrXSc7Civplr4+J1t0aHJlc2hvbGRdJzsKK+mXgz4nW2Fsb25lXSc7Civpl4c+J1tjbG9zZV0nOwor6ZeKPidbYnJvYWRdJzsKK+mXjD4nW2Rvb3Igc2NyZWVuXSc7Civpl40+J1t0b3dlciBvdmVyIGNpdHkgZ2F0ZV0nOwor6ZeUPidbY2xvc2VdJzsKK+mXlT4nW3dhdGNoIHRvd2VyXSc7Civpl5Y+J1tydXNoIGluXSc7Civpl5g+J1tzdHJ1Z2dsZV0nOwor6ZecPidbZnJvbnRpZXIgcGFzc10nOwor6ZehPidbZXhwbGFpbl0nOwor6ZeiPidbb3Blbl0nOwor6ZelPidbZG9vcl0nOwor6ZicPidbbW91bmRdJzsKK+mYoT4nW2Zvb3RwYXRocyBiZXR3ZWVuIGZpZWxkc10nOwor6ZioPidbaW4gZGlzdHJlc3NdJzsKK+mYqj4nW2hpbGxzaWRlIGZhcm1sYW5kXSc7CivpmK4+J1thbmNpZW50IG11c2ljYWwgaW5zdHJ1bWVudDogc3VybmFtZV0nOwor6ZivPidbZm91bmRhdGlvbl0nOwor6ZiyPidbZGVmZW5kXSc7CivpmLs+J1tpbXBlZGVdJzsKK+mYvz4nW3ByZWZpeCB0byBuYW1lXSc7CivpmYA+J1tzdGVlcCBiYW5rXSc7CivpmYI+J1tkYW1dJzsKK+mZhD4nW2FkaGVyZSB0b10nOwor6ZmLPidbbmFycm93XSc7CivpmYw+J1tmb290IHBhdGggYmV0d2VlbiByaWNlIGZpZWxkc10nOwor6ZmNPidbZGVzY2VuZF0nOworIyLpmY0+J1tkZXNjZW5kXSciLAor6ZmQPidbYm91bmRhcnldJzsKK+mZmz4nW3N0ZXBzIGxlYWRpbmcgdGhyb25lXSc7CivpmZw+J1tuYXJyb3ddJzsKK+mZnT4nW21vdW50YWluIHBhc3NdJzsKK+mZnj4nW3Byb21vdGVdJzsKK+mZnz4nW2NsaW1iXSc7CivpmaI+J1tjb3VydHlhcmRdJzsKK+mZoz4nW2NvbHVtbl0nOwor6ZmkPidbZWxpbWluYXRlXSc7CivpmaU+J1tzdWJtZXJnZV0nOworIyLpmaU+J1tzdWJtZXJnZV0nIiwKK+mZqj4nW2FjY29tcGFueV0nOwor6ZmsPidbY29ybmVyXSc7CivpmbA+J1tcImZlbWFsZVwiIHByaW5jaXBsZV0nOwor6ZmyPidbZnJvbnRpZXJdJzsKK+mZsz4nW2V4aGliaXRdJzsKK+mZtT4nW2hpbGxdJzsKK+mZtj4nW3BvdHRlcnldJzsKK+mZtz4nW3N1Ym1lcmdlXSc7Civpmbg+J1tsYW5kXSc7Civpmbo+J1tuYXJyb3cgcGFzc10nOwor6Zm9PidbXCJtYWxlXCIgcHJpbmNpcGxlXSc7CivpmoU+J1tjb3JuZXJdJzsKK+mahj4nW3Byb3NwZXJvdXNdJzsKK+maiD4nW2NvdmVdJzsKK+maij4nW3RlYW1dJzsKK+maiz4nW1N1aSBkeW5hc3R5XSc7Civpmo0+J1tkcnkgZGl0Y2hdJzsKK+majj4nW3N0YWlyc10nOwor6ZqPPidbZm9sbG93XSc7CivpmpQ+J1tzZXBhcmF0ZV0nOwor6ZqVPidbZmFsbF0nOwor6ZqXPidbaGlnaF0nOwor6ZqYPidbbmFycm93XSc7Civpmpk+J1tjcmFja10nOwor6ZqbPidbYm9yZGVyXSc7Civpmpw+J1tzZXBhcmF0ZV0nOworIyLpmpw+J1tzZXBhcmF0ZV0nIiwKK+maoz4nW25laWdoYm9yXSc7Civpmqc+J1t0dW5uZWxdJzsKK+maqD4nW2ZvbGxvd10nOwor6ZqqPidbbmFycm93IHBhc3NdJzsKK+masD4nW2xvd10nOwor6ZqxPidbaGlkZV0nOwor6ZqyPidbc3RhbGxpb25dJzsKK+matD4nW21vdW50YWluIGxvY2F0ZWQgYmV0d2VlbiBzaGFhbnhpXSc7CivpmrY+J1tzdWJzZXJ2aWVudF0nOwor6Zq3PidbYmUgc3Vic2VydmllbnQgdG9dJzsKK+mauD4nW2JlIHN1YnNlcnZpZW50IHRvXSc7Civpmrk+J1tiaXJkXSc7Civpmrs+J1tzaW5nbGVdJzsKK+mavD4nW2FxdWlsaW5lIChub3NlKV0nOwor6ZuAPidbc3BhcnJvd10nOwor6ZuBPidbd2lsZCBnb29zZV0nOwor6ZuEPidbbWFsZSBvZiBzcGVjaWVzXSc7Civpm4U+J1tlbGVnYW50XSc7Civpm4Y+J1thc3NlbWJsZV0nOwor6ZuHPidbZW1wbG95XSc7Civpm4k+J1twaGVhc2FudF0nOwor6ZuLPidbc3VwZXJpb3JdJzsKK+mbjD4nW2ZlbWFsZV0nOwor6ZuNPidbaGFybW9ueV0nOwor6ZuOPidbb3NwcmV5XSc7Civpm5E+J1ttaXhlZF0nOwor6ZuVPidbZW5ncmF2ZV0nOwor6ZuWPidbYWx0aG91Z2hdJzsKK+mbmT4nW3NldCBvZiB0d29dJzsKK+mbmz4nW2NoaWNrXSc7Civpm5w+J1ttaXhlZF0nOwor6ZuiPidbbGVhdmVdJzsKK+mboz4nW2RpZmZpY3VsdF0nOwor6ZuoPidbcmFpbl0nOwor6ZuqPidbc25vd10nOworIyLpm6s+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+mbsD4nW2F0bW9zcGhlcmVdJzsKK+mbsj4nW2Nsb3Vkc10nOwor6Zu2PidbemVyb10nOwor6Zu3PidbdGh1bmRlcl0nOwor6Zu5PidbaGFpbF0nOwor6Zu7PidbZWxlY3RyaWNpdHldJzsKK+mcgD4nW25lZWRdJzsKK+mchD4nW3NreV0nOwor6ZyGPidbYSBzdWRkZW4gcGVhbCBvZiB0aHVuZGVyXSc7CivpnIc+J1tzaGFrZV0nOwor6ZyIPidbdG9ycmVudGlhbCByYWluc10nOwor6ZyKPidbc3Bpcml0XSc7CivpnI0+J1txdWlja2x5XSc7CivpnI4+J1tsaWdodCByYWluXSc7CivpnI8+J1tmYWxsaW5nIG9mIHNub3cgYW5kIHJhaW5dJzsKK+mckT4nW2JlIG1vaXN0ZW5lZF0nOwor6ZyTPidbcmFpbmJvd10nOwor6ZyWPidbbG9uZyBzcGVsbCBvZiByYWluXSc7CivpnJk+J1tzbGVldF0nOwor6ZycPidbZnJvc3RdJzsKK+mcnj4nW3Jvc3kgY2xvdWRzXSc7CivpnKQ+J1tkcmlwXSc7CivpnKc+J1tmb2ddJzsKK+mcqj4nW2xvbmcgYW5kIGhlYXZ5IHJhaW5dJzsKK+mcsD4nW2hhaWxdJzsKK+mcsj4nW2Rld10nOwor6Zy4PidbcnVsZSBieSBtaWdodCByYXRoZXIgdGhhbiByaWdodF0nOwor6Zy5PidbdGh1bmRlcl0nOwor6Zy9PidbY2xlYXIgdXAgYWZ0ZXIgcmFpbiBjZWFzZSBiZSBhbmddJzsKK+mcvj4nW21pc3R5XSc7CivpnYI+J1t0aHVuZGVyY2xhcF0nOwor6Z2EPidbY2xvdWR5IHNreV0nOwor6Z2GPidbY2xvdWR5IHNreV0nOwor6Z2IPidbc3Bpcml0XSc7CivpnYk+J1tjbG91ZHkgc2t5XSc7CivpnZI+J1tibHVlXSc7CivpnZY+J1twYWNpZnldJzsKK+mdmT4nW3F1aWV0XSc7CivpnZw+J1txdWlldF0nOwor6Z2ePidbbm90XSc7CivpnaA+J1tsZWFuIG9uXSc7CivpnaE+J1tkaXZpZGVdJzsKK+mdoj4nW2ZhY2VdJzsKKyMi6Z2kPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivpnaY+J1t0aW1pZF0nOwor6Z2oPidbZGltcGxlc10nOwor6Z2pPidbbGVhdGhlcl0nOwor6Z2rPidbc3Ryb25nIGFuZCBwbGlhYmxlXSc7Civpna0+J1tzdHJvbmcgYW5kIHBsaWFibGVdJzsKK+mdsT4nW3N0cm9uZyBhbmQgcGxpYWJsZV0nOwor6Z20PidbYm9vdHNdJzsKKyMi6Z25PidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivpnbo+J1tzdG9ja2luZ10nOwor6Z28PidbdGFydGFyc10nOworIyLpnoE+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+mehD4nW3RvIHdvcmsgaGlkZXNdJzsKK+mehT4nW2xlYXRoZXIgc3RyYXAgb3ZlciBob3JzZScncyBuZWNrXSc7CisjIumehT4nW2xlYXRoZXIgc3RyYXAgb3ZlciBob3JzZScncyBuZWNrXSciLAor6Z6LPidbc2hvZXNdJzsKK+mejT4nW3NhZGRsZV0nOwor6Z6PPidbYmluZF0nOworIyLpno8+J1tiaW5kXSciLAor6Z6YPidbc2NhYmJhcmRdJzsKKyMi6Z6cPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivpnqA+J1tib3ddJzsKK+meoz4nW3Rhbl0nOwor6Z6mPidbbGVhdGhlciBzdGFwXSc7Civpnqg+J1t0cmliZV0nOwor6Z6rPidbaW50ZXJyb2dhdGVdJzsKK+merT4nW3doaXBdJzsKKyMi6Z6zPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivpnrQ+J1tzYWRkbGUgdXAgaG9yc2VdJzsKK+mfgz4nW3RhdGFyc10nOwor6Z+GPidbc3dpbmddJzsKK+mfiD4nW3NvY2tzXSc7Civpn4s+J1t0YW5uZWQgbGVhdGhlcl0nOwor6Z+TPidbZmVuY2VdJzsKK+mfnD4nW3NoZWF0aF0nOwor6Z+tPidbc2NhbGxpb25dJzsKK+mfrj4nW3NjYWxsaW9uXSc7Civpn7I+J1ticmVhayBvciBzbWFzaCBpbnRvIHBpZWNlc10nOwor6Z+zPidbc291bmRdJzsKK+mftT4nW3JoeW1lXSc7Civpn7Y+J1ttdXNpYyBvZiBlbXBlcm9yIFNodW5dJzsKK+mfuz4nW3JoeW1lXSc7Civpn78+J1ttYWtlIHNvdW5kXSc7CivpoIE+J1twYWdlXSc7CivpoII+J1t0b3BdJzsKK+mggz4nW21vbWVudF0nOwor6aCFPidbbmVja10nOwor6aCGPidbb2JleV0nOwor6aCIPidbbXVzdF0nOwor6aCMPidbbGF1ZF0nOwor6aCPPidbZmx5IGRvd24gb3IgZG93bndhcmRdJzsKK+mgkD4nW3ByZXBhcmVdJzsKK+mgkT4nW29ic3RpbmF0ZV0nOwor6aCSPidbY29uZmVyXSc7CivpoJM+J1twYXVzZV0nOwor6aCXPidbbGVhbiBvbmUgc2lkZV0nOwor6aCYPidbbmVja10nOwor6aCaPidbbmVja10nOwor6aChPidbZmx5IHVwd2FyZF0nOwor6aCkPidbY2hlZWtzXSc7CivpoKw+J1tjaGVla3NdJzsKK+mgrT4nW2hlYWRdJzsKK+mgtD4nW3JpY2UgdGFzc2VsXSc7CivpoLc+J1tjaGluXSc7CivpoLg+J1tuZWNrXSc7CivpoLs+J1tmcmVxdWVudGx5XSc7CivpoLw+J1tyZWx5XSc7CivpoL0+J1tydWluZWRdJzsKK+mhhj4nW2dyYWluXSc7CivpoYs+J1tsb3dlciBwYXJ0IG9mIGZhY2VdJzsKK+mhjD4nW2ZvcmVoZWFkXSc7CivpoY0+J1tmb3JlaGVhZF0nOwor6aGOPidbamF3XSc7CivpoY8+J1tmYWNlXSc7CivpoZQ+J1tmYWNlXSc7CivpoZU+J1ttYW5pZmVzdF0nOwor6aGYPidbZGVzaXJlXSc7CivpoZs+J1t0b3BdJzsKK+mhnj4nW2NsYXNzXSc7Civpoac+J1tsb29rIGJhY2tdJzsKK+mhqz4nW3NoaXZlcl0nOwor6aGvPidbbWFuaWZlc3RdJzsKK+mhsD4nW2Zyb3duXSc7CivpobE+J1tza3VsbF0nOwor6aGzPidbdGhlIHRlbXBvcmFsIGJvbmVdJzsKK+mhtD4nW2NoZWVrIGJvbmVzXSc7Civpoqg+J1t3aW5kXSc7CisjIumiqD4nW3dpbmRdJyIsCivpoq8+J1tzb3VuZCBvZiB3aW5kXSc7CivporE+J1t0YWlwaG9vbl0nOwor6aK2PidbY3ljbG9uZV0nOwor6aODPidbd2hpcmx3aW5kXSc7Civpo4Q+J1t3aGlybHdpbmRdJzsKK+mjhj4nW3doaXJsd2luZF0nOwor6aObPidbZmx5XSc7Civpo5w+J1tmbGlwIG92ZXJdJzsKK+mjnz4nW2VhdF0nOwor6aOiPidbaHVuZ2VyXSc7Civpo6k+J1tzdHVmZmVkIGR1bXBsaW5nc10nOwor6aOrPidbc3VyZmVpdGVkXSc7Civpo60+J1tvcmRlcl0nOwor6aOuPidbZHJpbmtdJzsKK+mjrz4nW2Nvb2tlZCByaWNlXSc7Civpo7I+J1tkcmlua10nOwor6aO0Pidbc3dlZXQtbWVhdHNdJzsKK+mjvD4nW3JhaXNlIGFuaW1hbHNdJzsKK+mjvT4nW2VhdCBoZWFydGlseV0nOwor6aO+PidbZGVjb3JhdGVdJzsKK+mkgz4nW3N0dWZmZWQgZHVtcGxpbmdzXSc7CivppIU+J1tyaWNlLWNha2VzXSc7CivppIk+J1tyYXRpb25zIGFuZCBwYXkgZm9yIHNvbGRpZXJzXSc7CivppIo+J1tyYWlzZV0nOwor6aSMPidbYmFpdF0nOwor6aSQPidbZWF0XSc7CivppJI+J1todW5ncnldJzsKK+mkkz4nW2JlIGh1bmdyeV0nOwor6aSUPidbZWF0XSc7CivppJg+J1tzdXJwbHVzXSc7CisjIumknT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor6aSePidbZmFyZXdlbGwgcGFydHldJzsKK+mkoD4nW3JpY2UtY2FrZXNdJzsKK+mkoT4nW3Bhc3RyeSBmaWxsaW5nXSc7CivppKQ+J1tpbmNpdGVdJzsKK+mkqD4nW3B1YmxpYyBidWlsZGluZ10nOwor6aSsPidbcG9ycmlkZ2VdJzsKK+mkrj4nW2EgbGVnZW5kYXJ5IGFuaW1hbF0nOwor6aS9PidbbWFrZSBwcmVzZW50IG9mIGZvb2RdJzsKK+mkvj4nW2Rpc3RpbGxdJzsKKyMi6aWBPidbY2FycnkgbWVhbCB0byB3b3JrZXJzIGluIGZpZWxkXSciLAor6aWFPidbc3RlYW1lZCBicmVhZF0nOwor6aWJPidbdGltZSBvZiBmYW1pbmUgb3IgY3JvcCBmYWlsdXJlXSc7CivppYs+J1tvZmZlciBmb29kIHN1cGVyaW9yXSc7CivppYw+J1tmZWVkXSc7CivppZA+J1tzcG9pbGVkXSc7CivppZE+J1tzdGFydmVdJzsKK+mlkj4nW2JvdW50aWZ1bF0nOwor6aWVPidbZ2x1dHRvbm91c10nOwor6aWXPidbaG9zdCBiYW5xdWV0XSc7CivpppY+J1toZWFkXSc7Civpppc+J1tjaGVla2JvbmVdJzsKK+mmmD4nW2N1dCBvZmYgbGVmdCBlYXJdJzsKK+mmmT4nW2ZyYWdyYW50XSc7CivppqU+J1tmcmFncmFuY2VdJzsKK+mmqD4nW2ZyYWdyYW50XSc7Civppqw+J1tob3JzZV0nOwor6aatPidbZHJpdmVdJzsKK+mmrj4nW3N1cm5hbWVdJzsKK+mmsz4nW2dvIHF1aWNrbHkgb3Igc3dpZnRseV0nOwor6aa0PidbdGFtZV0nOworIyLpprw+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+mngT4nW3Zhcmljb2xvcmVkXSc7CisjIumngz4nW2dhbGxvcF0nIiwKK+mnhT4nW3JlbGF5IHN0YXRpb25dJzsKK+mnhj4nW3NwdXIgaG9yc2Ugb25dJzsKK+mniD4nW3NwdXIgaG9yc2Ugb25dJzsKK+mnkD4nW3RvIGJlIHN0YXRpb25lZCBhdF0nOwor6aeRPidbdGlyZWRdJzsKK+mnkj4nW2NvbHRdJzsKK+mnlT4nW2RyaXZlXSc7Civpp5g+J1t0aXJlZF0nOwor6aebPidbc2FpbF0nOwor6aedPidbY2FtZWxdJzsKK+mnnz4nW3RlYW0gb2YgZm91ciBob3JzZXNdJzsKK+mnoj4nW3RlYW0gb2YgaG9yc2VzXSc7Civpp60+J1t0ZXJyaWZ5XSc7Civpp64+J1thIGtpbmQgb2YgZmllcmNlIGFuaW1hbF0nOwor6aexPidbd2hpdGUgaG9yc2Ugdy4gYmxhY2sgbWFuZV0nOworIyLpp7E+J1t3aGl0ZSBob3JzZSB3LiBibGFjayBtYW5lXSciLAor6ae4PidbZ2FsbG9waW5nXSc7CisjIumnuz4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor6ae/PidbZXhjZWxsZW50IGhvcnNlXSc7CivpqIE+J1tnYWxsb3AgaG9yc2VdJzsKK+mohT4nW3BpZWJhbGQgaG9yc2VdJzsKK+mojj4nW3JpZGUgaG9yc2ViYWNrXSc7CivpqI8+J1twaWViYWxkIGhvcnNlXSc7CivpqJI+J1toYXJhc3NdJzsKK+mokz4nW3Rlc3RdJzsKK+momT4nW3N3aW5kbGVdJzsKK+moqD4nW2RhcHBsZWRdJzsKK+moqz4nW3JhaXNlXSc7CivpqLA+J1tmbHldJzsKK+motz4nW2hhcmFzc10nOwor6ai+PidbbXVsZV0nOwor6amAPidbc3VkZGVubHldJzsKK+mpgj4nW3R3byBvdXRzaWRlIG9uZXMgaW4gdGhyZWUgaG9yc2VdJzsKK+mpgz4nW2NoYXJnZXJdJzsKK+mphT4nW3NwdXIgaG9yc2Ugb25dJzsKK+mpjT4nW2V4Y2VsbGVudCBob3JzZV0nOwor6amVPidbc3Bpcml0ZWQgaG9yc2VdJzsKK+mplz4nW3Rlc3RdJzsKK+mpmj4nW2ZyaWdodGVuXSc7CivpqZs+J1tyZWxheSBzdGF0aW9uXSc7CivpqZ8+J1twcm9jZWR1cmVdJzsKK+mpoj4nW2RvbmtleV0nOwor6amkPidbZ2FsbG9wIGFib3V0IHdpdGggaGVhZCB1cGxpZnRlZF0nOwor6amlPidbdGhvcm91Z2hicmVkIGhvcnNlXSc7Civpqak+J1toYXBweV0nOwor6amqPidbcHVyZSBibGFjayBob3JzZV0nOwor6amrPidbaG9yc2VzXSc7Civpqqg+J1tib25lXSc7Civpqq0+J1tzaGluIGJvbmVdJzsKK+mqsD4nW2RpZV0nOwor6aq4Pidbc2tlbHRvbl0nOwor6aq8PidbYm9uZV0nOwor6auAPidbYnV0dG9ja3NdJzsKK+mrhD4nW2JvbmUgbWFycm93XSc7Civpq48+J1tza3VsbF0nOwor6auRPidbc2t1bGxdJzsKK+mrkz4nW2JvbmUgbWFycm93XSc7Civpq5Q+J1tib2R5XSc7Civpq5g+J1toaWdoXSc7Civpq54+J1toaWdoXSc7Civpq58+J1toYWlyXSc7Civpq6I+J1t3aWddJzsKK+mroz4nW3NpbWlsYXIgdG9dJzsKK+mrpj4nW2Zsb3dpbmcgaGFpciBvZiB5b3VuZyBjaGlsZF0nOwor6auqPidbaGFpcl0nOwor6aurPidbY2hpbGRyZW4nJ3MgaGFpciBzdHlsZV0nOwor6autPidbbXVzdGFjaGVdJzsKK+mrrj4nW2hhaXJdJzsKK+mrrz4nW2JlYXJkXSc7CisjIumrsT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor6au0PidbZGlzaGV2ZWxlZCBoYWlyXSc7CisjIumrtz4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor6au7PidbaGFpciByb2xsZWQgdXAgaW4gYSBidW5dJzsKK+mshj4nW2xheF0nOwor6ayYPidbYmVhdXRpZnVsIGhhaXJdJzsKK+msmj4nW2JlYXJkXSc7CivprJ8+J1tkcmVzcyBoYWlyIGluIGNvaWxlZCBrbm90XSc7CivprKI+J1toYWlyIG9uIHRlbXBsZXNdJzsKK+msoz4nW2hvcnNlJydzIG1hbmVdJzsKK+mspT4nW3N0cnVnZ2xlXSc7CivprKc+J1txdWFycmVsXSc7CivprKg+J1tib2lzdGVyb3VzXSc7CivprKk+J1tmZXVkXSc7CivprKo+J1tzdHJ1Z2dsZV0nOwor6ayuPidbbG90cyAodG8gYmUgZHJhd24pXSc7CivprK8+J1tzYWNyaWZpY2lhbCB3aW5lXSc7CivprLE+J1tsdXh1cmlhbnRdJzsKK+mssj4nW3R5cGUgb2YgY2FsZHJvbl0nOwor6ay7Pidbc2VsbF0nOwor6ay8PidbZ2hvc3RdJzsKK+mtgT4nW2NoaWVmXSc7CivprYI+J1tzb3VsXSc7CivprYM+J1tkcm91Z2h0IGRlbW9uXSc7CivprYQ+J1t2aWdvcl0nOwor6a2FPidba2luZCBvZiBmb3Jlc3QgZGVtb25dJzsKK+mtjT4nW2RlbW9uc10nOwor6a2OPidbYSBraW5kIG9mIG1vbnN0ZXJdJzsKK+mtjz4nW2tpbmdkb20gb2Ygd2VpXSc7CivprZE+J1thIG1vbnRhaW4gZGVtb24gcmVzZW1ibGluZyB0aWdlcl0nOwor6a2UPidbZGVtb25dJzsKK+mtmD4nW25pZ2h0bWFyZV0nOwor6a2aPidbZmlzaF0nOwor6a2vPidbZm9vbGlzaF0nOwor6a20PidbYnJlYW1dJzsKKyMi6a6BPidbdGhlIGJvbml0b10nIiwKK+mujj4nW3NoZWF0ZmlzaF0nOwor6a6RPidbYWJhbG9uZV0nOwor6a6SPidbY2FycF0nOwor6a6TPidbbWluY2VkIGFuZCBzYWx0ZWQgZmlzaF0nOworIyLprpM+J1ttaW5jZWQgYW5kIHNhbHRlZCBmaXNoXSciLAorIyLprpM+J1ttaW5jZWQgYW5kIHNhbHRlZCBmaXNoXSciLAor6a6fPidbYW5nbGVyZmlzaF0nOwor6a6gPidbYSBraW5kIG9mIHNoYWQgd2l0aCBhIGhlYWQgbGlrZSBhIHN0dXJnZW9uXSc7CisjIumuqD4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor6a6qPidba2luZCBvZiBzdHVyZ2Vvbl0nOwor6a6rPidbc2hhcmtdJzsKK+murT4nW3NhbG1vbl0nOwor6a6uPidbZnJlc2hdJzsKKyMi6a60PidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCisjIumuuT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor6a+APidbZ2lhbnQgZmlzaF0nOwor6a+GPidbdGhlIHNrYXRlIG9yIHJheV0nOwor6a+JPidbY2FycF0nOwor6a+KPidbc2hhcmtdJzsKK+mvjz4nW2EgZGlhbGVjdC4uLi4uLi4uIG5hbWUgb2YgZmlzaF0nOworIyLpr5E+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKKyMi6a+SPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivpr5Q+J1ttdWxsZXRdJzsKK+mvlj4nW21hY2tlcmVsXSc7Civpr5s+J1twYWdyb3NvbXVzIG1ham9yXSc7Civpr6E+J1toZXJyaW5nXSc7Civpr6I+J1tjcnlwdG9icmFuY2h1cyBqYXBvbmljdXNdJzsKKyMi6a+jPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivpr6Q+J1tzcGF3bl0nOwor6a+oPidbd2hhbGVdJzsKK+mvsD4nW3NoZWF0XSc7CisjIumvsT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAorIyLpr7E+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKKyMi6a+xPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCisjIumwhD4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAorIyLpsIY+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+mwiD4nW2ZsYXRmaXNoXSc7CivpsIk+J1tzdHVyZ2Vvbl0nOworIyLpsIo+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+mwjD4nW2xvYWNoXSc7CivpsI0+J1tsb2FjaF0nOwor6bCQPidbYWxsaWdhdG9yXSc7CivpsJI+J1thYmFsb25lXSc7CivpsJM+J1tmaXNoIGdpbGxzXSc7CisjIumwlD4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor6bCVPidbc2hyaW1wXSc7CivpsJs+J1tzYXJkaW5lXSc7CisjIumwoT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAorIyLpsKQ+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+mwpT4nW2h1Z2UgZmlzaF0nOwor6bCtPidbZmluXSc7CivpsK4+J1tzYXJkaW5lXSc7CisjIumwrz4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAorIyLpsK8+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+mwsj4nW2h1Z2Ugc2VhIHR1cnRsZV0nOwor6bC5Pidbc2tpcGphY2tdJzsKKyMi6bC6PidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivpsLs+J1tlZWxdJzsKK+mwvj4nW3N3aW1taW5nIGJsYWRkZXIgb2YgZmlzaF0nOworIyLpsYY+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+mxhz4nW2FuZ2xlcmZpc2hdJzsKK+mxiD4nW2NvZGZpc2hdJzsKK+mxkj4nW2JhcmJlbF0nOwor6bGXPidbZmlzaCBzY2FsZXNdJzsKKyMi6bGYPidbc3R1cmdlb25dJyIsCivpsaA+J1ttaW5jZWQgZmlzaF0nOwor6bGnPidbc25ha2VoZWFkXSc7CisjIumxtj4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor6bG4Pidbc2VhIHBlcmNoXSc7Civps6U+J1tiaXJkXSc7Civps6c+J1t3aWxkIGR1Y2tdJzsKK+mzqT4nW3BpZ2Vvbl0nOwor6bOrPidbd2lsZCBnb29zZV0nOwor6bOsPidbd2lsZCBkdWNrXSc7CisjIumzsD4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLAor6bOzPidbbWFsZSBwaG9lbml4XSc7Civps7Q+J1tjcnkgb2YgYmlyZCBvciBhbmltYWxdJzsKK+mztj4nW2tpdGVdJzsKK+m0gz4nW3NocmlrZV0nOwor6bSGPidbYmlyZCByZXNlbWJsaW5nIHNlY3JldGFyeSBmYWxjb25dJzsKK+m0hz4nW2J1c3RhcmRdJzsKK+m0iD4nW3dpbGQgZ29vc2VdJzsKK+m0iT4nW2Nyb3ddJzsKK+m0jj4nW3NlYWd1bGxdJzsKK+m0kj4nW3NwZWNpZXMgb2YgbGFya10nOwor6bSVPidbb3N0cmljaF0nOwor6bSbPidbbWFsZSBtYW5kYXJpbiBkdWNrXSc7CivptJ8+J1traXRlXSc7CivptKM+J1tzcGVjaWVzIG9mIHRhaXdhbiBwaWdlb25dJzsKK+m0pj4nW2ZlbWFsZSBtYW5kYXJpbiBkdWNrXSc7CivptKg+J1tkdWNrXSc7CivptKo+J1tzd29vcF0nOwor6bSrPidbYSBzbmlwZV0nOwor6bSsPidbb3Jpb2xlXSc7CivptLs+J1tzcGVjaWVzIG9mIHdpbGQgc3dhbl0nOworIyLptL4+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+m0vz4nW3BpZ2Vvbl0nOworIyLptYE+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+m1hD4nW2tpdGVdJzsKKyMi6bWEPidba2l0ZV0nIiwKKyMi6bWEPidba2l0ZV0nIiwKKyMi6bWQPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsCivptZE+J1tjdWNrb29dJzsKK+m1mT4nW2Egc2hyaWtlXSc7CivptZw+J1twZWxpY2FuXSc7CivptZ0+J1tnb29zZV0nOwor6bWePidbZ29vc2VdJzsKK+m1oD4nW3RhcmdldF0nOwor6bWhPidbc3BlY2llcyBvZiBwYXJyb3RdJzsKKyMi6bWhPidbc3BlY2llcyBvZiBwYXJyb3RdJyIsCivptaw+J1tmYWJ1bG91cyBiaXJkIG9mIGVub3Jtb3VzIHNpemVdJzsKK+m1rz4nW2JpcmRdJzsKK+m1sj4nW21hZ3BpZV0nOworIyLptbo+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+m2hz4nW3RocnVzaF0nOwor6baJPidbcXVhaWxdJzsKK+m2jz4nW2NoaWNrZW5dJzsKK+m2mj4nW29zcHJleV0nOworIyLptqQ+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwKK+m2qT4nW2R1Y2tdJzsKK+m2qz4nW3RocnVzaF0nOwor6bavPidbb3Jpb2xlXSc7CisjIum2sT4nW3NvYXJdJyIsCivptrQ+J1tjcmFuZV0nOwor6ba4PidbW25vdCBmb3VuZCBpbiBhbnkgZGljdGlvbmFyeV1dJzsKK+m2uj4nW3dhZ3RhaWxdJzsKK+m2uz4nW2Ega2luZCBvZiBwaWdlb25dJzsKK+m3gT4nW2Zpc2hoYXdrIGJvdyBvciBwcm93XSc7Civpt4I+J1tzcGFycm93IGhhd2tdJzsKK+m3hD4nW2NoaWNrZW5dJzsKK+m3hj4nW2JpcmQgbmFtZV0nOwor6bePPidbYmlyZCBuYW1lXSc7Civpt5M+J1twYXJ0cmlkZ2VdJzsKK+m3mT4nW2hhd2tdJzsKK+m3pj4nW3dyZW5dJzsKKyMi6berPidbdHVycXVvaXNlIGtpbmdmaXNoZXJdJyIsCivpt68+J1t3cmVuXSc7Civpt7I+J1tjb25kb3JdJzsKK+m3uD4nW3NuaXBlXSc7Civpt7k+J1tlYWdsZV0nOwor6be6PidbaGVyb25dJzsKK+m3vT4nW29yaWVudGFsIGJ1bGxmaW5jaF0nOwor6biaPidbc3BlY2llcyBvZiBwYXJyb3RdJzsKK+m4mz4nW2NyYW5lXSc7CivpuJ4+J1tmYWJ1bG91cyBiaXJkXSc7CivpubU+J1tzYWxpbmUgc29pbF0nOwor6bm4PidbYWxrYWxpbmVdJzsKK+m5uT4nW3NhbHR5XSc7Civpub0+J1tzYWx0XSc7Civpub8+J1tkZWVyXSc7CivpuoE+J1tyb3VnaF0nOwor6bqIPidbc3BlY2llcyBvZiBkZWVyXSc7Civpuos+J1tlbGtdJzsKK+m6jD4nW3N0YWddJzsKK+m6kT4nW2Zhd25dJzsKK+m6kj4nW2xlZ2VuZGFyeSBhdXNwaWNpb3VzIGFuaW1hbF0nOwor6bqTPidbZm9vdCBvZiBoaWxsXSc7CivpupU+J1ttdW50amFjIGRlZXJdJzsKK+m6lz4nW2JlYXV0aWZ1bF0nOwor6bqdPidbbXVzayBkZWVyXSc7Civpup8+J1tmZW1hbGUgb2YgY2hpbmVzZSB1bmljb3JuXSc7CivpuqU+J1t3aGVhdF0nOwor6bqmPidbd2hlYXRdJzsKK+m6qT4nW2JyYW5dJzsKK+m6qj4nW2Zsb3VyXSc7CisjIum6qz4nW2Zsb3VyXSciLAor6bq4PidbYnJhbl0nOwor6bq5PidbeWVhc3RdJzsKK+m6uj4nW2Zsb3VyXSc7Civpurs+J1toZW1wXSc7Civpurw+J1tpbnRlcnJvZ2F0aXZlIGZpbmFsIHBhcnRpY2xlXSc7Civpur4+J1twZW5uYW50XSc7Civpur8+J1tJXSc7Civpu4Q+J1t5ZWxsb3ddJzsKK+m7jD4nW3NjaG9vbF0nOwor6buNPidbZ2x1dGlub3VzIG1pbGxldF0nOwor6buOPidbc3VybmFtZV0nOwor6buPPidbc3RpY2sgdG9dJzsKK+m7kD4nW3N0aWNrXSc7Civpu5I+J1tibGFja10nOwor6buUPidbYmxhY2tdJzsKK+m7mD4nW3NpbGVudF0nOwor6buZPidbc2lsZW50XSc7Civpu5s+J1tibGFja2VuIGV5ZWJyb3dzXSc7Civpu5w+J1tkaXNtaXNzXSc7Civpu50+J1tibGFja10nOwor6buePidbZG90XSc7Civpu6A+J1tzbHldJzsKK+m7pT4nW3RhdHRvb2luZyBmYWNlXSc7Civpu6g+J1twb2xpdGljYWwgcGFydHldJzsKK+m7rz4nW2RhcmtdJzsKK+m7tD4nW21vbGRdJzsKK+m7tj4nW21vbGVdJzsKK+m7tz4nW2Rpc2hvbm9yXSc7Civpu7k+J1tlbWJyb2lkZXJ5XSc7Civpu7s+J1tzcGVjaWFsIHBhdHRlcm4gb2YgZW1icm9pZGVyeV0nOwor6bu8PidbZW1icm9pZGVyZWQgb2ZmaWNpYWwgb3Igc2FjcmlmaWNdJzsKK+m7vT4nW3RvIHN0cml2ZV0nOwor6byHPidbaHVnZSBzZWEgdHVydGxlXSc7CivpvIg+J1tmcmVzaCB3YXRlciB0dXJ0bGVdJzsKK+m8jj4nW2xhcmdlXSc7CivpvJM+J1tkcnVtXSc7CivpvJU+J1tyYXR0bGUgb2YgZHJ1bXNdJzsKK+m8oD4nW3JhdF0nOwor6byhPidbcmF0XSc7CivpvKw+J1t3ZWFzZWxdJzsKK+m8uz4nW25vc2VdJzsKK+m8vj4nW3Nub3JlIGxvdWRseV0nOwor6b2KPidbZXZlbl0nOwor6b2LPidbdmVnZXRhcmlhbiBkaWV0XSc7CivpvY4+J1t0YWtlIGluIGJvdGggaGFuZHMgYW5kIG9mZmVyIHRvXSc7CivpvY8+J1ticmVhayBvciBzbWFzaCBpbnRvIHBpZWNlc10nOwor6b2SPidbdGVldGhdJzsKK+m9lD4nW2xvc2UgYmFieSB0ZWV0aCBhbmQgZ2V0IGFkdWx0IHRlXSc7CivpvZ8+J1tpcnJlZ3VsYXIgdGVldGhdJzsKK+m9oD4nW2xvc2UgYmFieSB0ZWV0aCBhbmQgZ2V0IGFkdWx0IHRlZXRoXSc7CivpvaE+J1thZ2VdJzsKK+m9oj4nW2FnZV0nOwor6b2jPidbYWN0XSc7CivpvaY+J1tndW1zXSc7Civpvac+J1tiaXRlXSc7Civpvao+J1tuYXJyb3ddJzsKK+m9rD4nW3VuZXZlbiB0ZWV0aF0nOwor6b2yPidbdG9vdGggZGVjYXldJzsKK+m9tj4nW3BhbGF0ZV0nOwor6b23PidbbmFycm93XSc7Civpvo0+J1tkcmFnb25dJzsKK+m+lT4nW25pY2hlXSc7Civpvpw+J1t0dXJ0bGUgb3IgdG9ydG9pc2VdJzsKK+m+nT4nW2F1dHVtbl0nOwor6b6gPidbZmx1dGVdJzsKKworIyBlb2YKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby90cmFuc2xpdC9yZXNvdXJjZXMvVHJhbnNsaXRlcmF0b3JfS2FuamlfT25Sb21hamkudHh0IGIvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL3RyYW5zbGl0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9LYW5qaV9PblJvbWFqaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNzQzNTkxMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvZGVtby90cmFuc2xpdC9yZXNvdXJjZXMvVHJhbnNsaXRlcmF0b3JfS2FuamlfT25Sb21hamkudHh0CkBAIC0wLDAgKzEsNjIxNiBAQAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENvcHlyaWdodCAoYykgMTk5OS0yMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisjIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIERhdGU6IFR1ZSBKYW4gMjMgMTI6NDI6MDMgMjAwMQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMgS2FuamktT25Sb21hamkKKwor5LiBPlRlaTsKK+S4gz5TaGljaGk7CivkuIc+TWFuOwor5LiIPkpvdTsKK+S4iT5TYW47CivkuIo+Sm91Owor5LiLPkthOwor5LiNPkZ1Owor5LiOPllvOwor5LiQPkthaTsKK+S4kT5DaHV1Owor5LiUPlNoYTsKK+S4lT5IaTsKK+S4lj5TZTsKK+S4lz5TZWk7CivkuJg+S3l1dTsKK+S4mT5IZWk7CivkuJ4+U2hvdTsKK+S4oT5SeW91Owor5LimPkhlaTsKK+S4qj5LYTsKK+S4rT5DaHV1Owor5LixPkthbjsKK+S4sj5TZW47CivkuLY+Q2h1Owor5Li4PkdhbjsKK+S4uT5UYW47CivkuLs+U2h1Owor5Li8PlNlaTsKK+S4vz5IZXRzdTsKK+S5gj5HYWk7CivkuYM+RGFpOwor5LmFPkt5dXU7CivkuYs+U2hpOwor5LmNPlNha3U7CivkuY4+S287CivkuY8+Qm91Owor5LmVPktvOwor5LmWPkthaTsKK+S5lz5Kb3U7CivkuZg+Sm91Owor5LmZPk90c3U7CivkuZ0+S3l1dTsKK+S5nj5Lb3RzdTsKK+S5nz5ZYTsKK+S5oj5HYWk7CivkubE+UmFuOwor5LmzPk55dXU7Civkub4+S2FuOwor5LqAPktpOwor5LqCPlJhbjsKK+S6hT5LZXRzdTsKK+S6hj5SeW91Owor5LqIPllvOwor5LqJPlNvdTsKK+S6ij5KaTsKK+S6iz5KaTsKK+S6jD5OaTsKK+S6jj5VOwor5LqRPlVuOwor5LqSPkdvOwor5LqUPkdvOwor5LqVPlNlaTsKK+S6mD5TZW47Civkupk+S291Owor5LqbPlNhOwor5LqcPkE7Civkup4+QTsKK+S6nz5LeW9rdTsKK+S6oD5Ub3U7CivkuqE+Qm91Owor5LqiPktvdTsKK+S6pD5Lb3U7CivkuqU+R2FpOwor5LqmPkVraTsKK+S6qD5LeW91Owor5LqrPkt5b3U7Civkuqw+S3lvdTsKK+S6rT5UZWk7Civkuq4+UnlvdTsKK+S6sD5LZWk7CivkurM+SGFrdTsKK+S6tj5UYW47Civkuro+SmluOwor5LuAPlNodXU7Civku4E+SmluOwor5LuCPlJva3U7Civku4Q+U29rdTsKK+S7hj5GdTsKK+S7hz5LeXV1Owor5LuKPktvbjsKK+S7iz5LYWk7Civku40+Sm91Owor5LuOPkp1dTsKK+S7jz5CdXRzdTsKK+S7lD5TaGk7Civku5U+U2hpOwor5LuWPlRhOwor5LuXPkpvdTsKK+S7mD5GdTsKK+S7mT5TZW47Civku50+RG91Owor5LuePkppbjsKK+S7nz5TZW47Civku6M+RGFpOwor5LukPlJlaTsKK+S7pT5JOwor5LutPkppbjsKK+S7rj5LYTsKK+S7sD5HeW91Owor5LuyPkNodXU7Civku7Y+S2VuOwor5Lu3PkthaTsKK+S7uz5OaW47CivkvIE+S2k7CivkvIk+S291Owor5LyKPkk7CivkvI0+R287CivkvI4+S2k7CivkvI8+RnVrdTsKK+S8kD5CYXRzdTsKK+S8kT5LeXV1Owor5LyaPkthaTsKK+S8nD5TYWk7CivkvJ0+RGVuOwor5LyvPkhha3U7CivkvLA+S287CivkvLQ+SGFuOwor5Ly2PlJlaTsKK+S8uD5TaGluOwor5Ly6PlNoaTsKK+S8vD5KaTsKK+S8vT5LeWE7CivkvYM+VGVuOwor5L2GPlRhbjsKK+S9hz5DaG87CivkvY0+STsKK+S9jj5UZWk7CivkvY8+SnV1Owor5L2QPlNhOwor5L2RPll1dTsKK+S9kz5UZWk7CivkvZU+S2E7CivkvZc+VGE7CivkvZk+WW87CivkvZo+SXRzdTsKK+S9mz5CdXRzdTsKK+S9nD5TYWt1Owor5L2dPktvdTsKK+S9nj5OZWk7Civkvak+SGFpOwor5L2vPllvdTsKK+S9sD5IYWt1Owor5L2zPkthOwor5L21PkhlaTsKK+S9tj5LaXRzdTsKK+S9uz5DaG91Owor5L28PktvdTsKK+S9vz5TaGk7CivkvoM+S2FuOwor5L6GPlJhaTsKK+S+iD5TaGk7Civkvos+UmVpOwor5L6NPkppOwor5L6PPlNodTsKK+S+kT5ZdXU7CivkvpY+Um9uOwor5L6YPlRhOwor5L6bPkt5b3U7Civkvp0+STsKK+S+oD5LeW91Owor5L6hPkthOwor5L6rPk5laTsKK+S+rT5KaW47Civkvq4+QnU7Civkvq8+S291Owor5L61PlNoaW47CivkvrY+UnlvOwor5L6/PkJlbjsKK+S/gj5LZWk7Civkv4M+U29rdTsKK+S/hD5HYTsKK+S/ij5TaHVuOwor5L+OPlNobzsKK+S/kD5SaTsKK+S/kT5Zb3U7Civkv5Q+S2VuOwor5L+XPlpva3U7Civkv5g+RnU7Civkv5o+Umk7Civkv5s+QmVuOwor5L+dPkhvOwor5L+fPlNoaTsKK+S/oT5TaGluOwor5L+uPlNodXU7Civkv68+RnU7Civkv7M+SGFpOwor5L+1Pkh5b3U7Civkv7Y+U2h1a3U7Civkv7g+SG91Owor5L+6PkVuOwor5L++PkhpOwor5YCFPlNhaTsKK+WAhj5SeW91Owor5YCJPlNvdTsKK+WAiz5LbzsKK+WAjT5CYWk7CivlgI8+U2h1a3U7CivlgJE+TW9uOwor5YCSPlRvdTsKK+WAlD5LdXRzdTsKK+WAlj5Lb3U7CivlgJk+S291Owor5YCaPkk7CivlgJ8+U2hha3U7CivlgKE+U2hvdTsKK+WAoz5Ib3U7CivlgKQ+Q2hpOwor5YClPktvdTsKK+WApj5LZW47CivlgKg+S3lvOwor5YCpPlNlbjsKK+WAqj5HZWk7CivlgKs+UmluOwor5YCsPlRha3U7CivlgK0+STsKK+WAtj5LdTsKK+WAuT5LZW47CivlgYM+RW47CivlgYc+S2E7CivlgYg+S2V0c3U7CivlgYk+STsKK+WBjz5IZW47CivlgZA+R2FuOwor5YGVPkthaTsKK+WBlj5TaGE7CivlgZo+U2FrdTsKK+WBnD5UZWk7CivlgaU+S2VuOwor5YGsPlNvdTsKK+WBsj5TaGk7CivlgbQ+U29rdTsKK+WBtT5UZWk7CivlgbY+R3V1Owor5YG4PkNodXU7Civlgb0+R2k7CivlgoA+S2FpOwor5YKFPkZ1Owor5YKNPkJvdTsKK+WCkT5LZXRzdTsKK+WCmD5TYW47Civlgpk+Qmk7Civlgpo+S291Owor5YKsPlNhaTsKK+WCrT5Zb3U7CivlgrI+R291Owor5YKzPkRlbjsKK+WCtD5VOwor5YK1PlNhaTsKK+WCtz5TaG91Owor5YK+PktlaTsKK+WDgj5Sb3U7Civlg4U+S2luOwor5YOJPlNlbjsKK+WDij5TZW47Civlg40+RG91Owor5YOPPlpvdTsKK+WDkT5LeW91Owor5YOVPkJva3U7Civlg5Y+S2k7Civlg5o+UnlvdTsKK+WDnj5HaTsKK+WDoz5TZW47Civlg6U+S3lvdTsKK+WDpz5Tb3U7Civlg60+U2VuOwor5YOuPkRvdTsKK+WDtT5LeW91Owor5YO5PkthOwor5YO7Pkhla2k7CivlhIA+R2k7CivlhIE+U2h1bjsKK+WEgj5Eb3U7CivlhIQ+T2t1Owor5YSJPktlbjsKK+WEkj5KdTsKK+WElD5DaHV1Owor5YSVPlNlaTsKK+WElj5SYW47CivlhJg+SmluOwor5YSaPkJvdTsKK+WEnz5TaG91Owor5YShPlJhaTsKK+WEqj5ZdXU7CivlhLI+Q2hvOwor5YS3PlJlaTsKK+WEuj5EYTsKK+WEuz5Ub3U7CivlhLw+R2VuOwor5YS/PkppbjsKK+WFgD5Lb3RzdTsKK+WFgT5JbjsKK+WFgz5HZW47CivlhYQ+S2VpOwor5YWFPkp1dTsKK+WFhj5DaG91Owor5YWHPkt5b3U7CivlhYg+U2VuOwor5YWJPktvdTsKK+WFiz5Lb2t1Owor5YWMPkRhOwor5YWNPk1lbjsKK+WFjj5UbzsKK+WFkD5KaTsKK+WFkj5KaTsKK+WFlD5UbzsKK+WFmj5Ub3U7CivlhZw+VG91Owor5YWiPkt5b3U7CivlhaU+Tnl1dTsKK+WFqD5aZW47Civlhak+UnlvdTsKK+WFqj5ZdTsKK+WFqz5IYWNoaTsKK+WFrD5Lb3U7Civlha0+Um9rdTsKK+WFrj5LZWk7CivlhbE+S3lvdTsKK+WFtT5IZWk7CivlhbY+S2k7Civlhbc+R3U7Civlhbg+VGVuOwor5YW8PktlbjsKK+WGgD5LaTsKK+WGgj5LZWk7CivlhoU+RGFpOwor5YaGPkVuOwor5YaJPk5lbjsKK+WGij5TYXRzdTsKK+WGjD5TYXRzdTsKK+WGjT5TYWk7Civlho8+S2VpOwor5YaQPkJvdTsKK+WGkT5DaHV1Owor5YaSPkJvdTsKK+WGkz5Lb3U7CivlhpU+QmVuOwor5YaWPkJla2k7Civlhpc+Sm91Owor5YaZPlNoYTsKK+WGoD5LYW47CivlhqI+Q2hvdTsKK+WGpD5FbjsKK+WGpT5NZWk7CivlhqY+S291Owor5YaoPkZ1Owor5YapPlNoYTsKK+WGqj5CZWtpOwor5YarPkh5b3U7Civlhqw+VG91Owor5YawPkh5b3U7CivlhrE+R287CivlhrI+Q2h1dTsKK+WGsz5LZXRzdTsKK+WGtD5HbzsKK+WGtT5LeW91Owor5Ya2PllhOwor5Ya3PlJlaTsKK+WGvT5SZXRzdTsKK+WHhD5TZWk7Civlh4U+S287Civlh4Y+SnVuOwor5YeJPlJ5b3U7Civlh4s+Q2hvdTsKK+WHjD5SeW91Owor5YeNPlRvdTsKK+WHlj5KdW47Civlh5s+UmluOwor5YecPlJpbjsKK+WHnT5HeW91Owor5YegPktpOwor5YehPkJvbjsKK+WHpj5TaG87Civlh60+SHlvdTsKK+WHsD5Lb3U7Civlh7E+R2FpOwor5Ye1PkthbjsKK+WHtj5LeW91Owor5Ye4PlRvdHN1Owor5Ye5Pk91Owor5Ye6PlNodXRzdTsKK+WHvT5LYW47Civlh74+S2FuOwor5YiAPlRvdTsKK+WIgz5KaW47CivliIQ+SmluOwor5YiGPkJ1bjsKK+WIhz5TZXRzdTsKK+WIiD5HYWk7CivliIo+S2FuOwor5YiLPlNlbjsKK+WIjj5GdW47CivliJE+S2VpOwor5YiUPktldHN1Owor5YiXPlJldHN1Owor5YidPlNobzsKK+WIpD5IYW47CivliKU+QmV0c3U7CivliKc+R291Owor5YipPlJpOwor5YiqPlNhbjsKK+WIrj5LYXRzdTsKK+WIsD5Ub3U7CivliLM+S287CivliLY+U2VpOwor5Yi3PlNhdHN1Owor5Yi4PktlbjsKK+WIuT5TYXRzdTsKK+WIuj5TaGk7CivliLs+S29rdTsKK+WJgz5UZWk7CivliYQ+S2VpOwor5YmHPlNva3U7CivliYo+U2FrdTsKK+WJiz5Lb2t1Owor5YmMPlJhdHN1Owor5YmNPlplbjsKK+WJjz5Tb3U7CivliZQ+VGVraTsKK+WJlj5Cb3U7CivliZs+R291Owor5YmePktpOwor5YmjPktlbjsKK+WJpD5aYWk7CivliaU+SGFrdTsKK+WJqT5Kb3U7Civliao+U2VuOwor5YmvPkZ1a3U7CivlibA+Sm91Owor5YmxPktlbjsKK+WJsj5LYXRzdTsKK+WJsz5Ub3U7CivlibQ+R2FpOwor5Ym1PlNvdTsKK+WJvT5IeW91Owor5Ym/PlNob3U7CivlioM+S2FrdTsKK+WKhz5HZWtpOwor5YqIPkhla2k7Civliok+UnU7Civlio0+S2VuOwor5YqRPlphaTsKK+WKkj5LZW47CivlipQ+S2VuOwor5YqbPlJ5b2t1Owor5YqfPktvdTsKK+WKoD5LYTsKK+WKoz5SZXRzdTsKK+WKqT5KbzsKK+WKqj5EbzsKK+WKqz5Hb3U7Civliqw+S3U7Civliq0+U2hvdTsKK+WKsT5SZWk7CivlirQ+Um91Owor5Yq1PktlbjsKK+WKuT5Lb3U7Civlirw+S2F0c3U7Civlir4+R2FpOwor5YuBPktlaTsKK+WLgz5Cb3RzdTsKK+WLhT5DaG9rdTsKK+WLhz5ZdXU7Civli4k+QmVuOwor5YuNPktlaTsKK+WLkj5Sb2t1Owor5YuVPkRvdTsKK+WLlz5Cb3U7Civli5g+S2FuOwor5YuZPk11Owor5YudPlNob3U7Civli54+Um91Owor5YufPkJvOwor5YugPlJpa3U7Civli6I+U2VpOwor5YujPlNla2k7Civli6Q+S2luOwor5YumPlNvdTsKK+WLpz5LYW47Civli7I+S3VuOwor5YuzPkt1bjsKK+WLtT5SZWk7Civli7g+S2FuOwor5Yu5PkhvdTsKK+WLuj5TaGFrdTsKK+WLvj5Lb3U7Civli78+QnV0c3U7CivljIU+SG91Owor5YyGPlNvdTsKK+WMiD5LeW91Owor5YyNPkhvOwor5YyPPkhvdTsKK+WMkD5Ib2t1Owor5YyVPkhpOwor5YyWPkthOwor5YyXPkhva3U7CivljJk+U2hpOwor5YyaPkhvdTsKK+WMnT5Tb3U7CivljKA+U2hvdTsKK+WMoT5LeW91Owor5YyjPktvdTsKK+WMqj5IaTsKK+WMrz5XYWk7CivljLE+S2k7CivljLM+UmVuOwor5Yy4PktlaTsKK+WMuT5IaXRzdTsKK+WMuj5LdTsKK+WMuz5JOwor5Yy/PlRva3U7CivljYA+S3U7CivljYE+SnV1Owor5Y2DPlNlbjsKK+WNhT5Tb3U7CivljYY+U290c3U7CivljYc+U2hvdTsKK+WNiD5HbzsKK+WNiT5LaTsKK+WNij5IYW47CivljY0+QmFuOwor5Y2RPkhpOwor5Y2SPlNvdHN1Owor5Y2TPlRha3U7CivljZQ+S3lvdTsKK+WNlz5OYW47CivljZg+VGFuOwor5Y2aPkhha3U7CivljZw+Qm9rdTsKK+WNnj5IZW47CivljaA+U2VuOwor5Y2mPkthOwor5Y2pPlNldHN1Owor5Y2uPlNoaTsKK+WNrz5Cb3U7CivljbA+SW47CivljbE+S2k7CivljbM+U29rdTsKK+WNtD5LeWFrdTsKK+WNtT5SYW47Civljbc+S2FuOwor5Y24PlNoYTsKK+WNuz5LeWFrdTsKK+WNvz5LeW91Owor5Y6CPkthbjsKK+WOhD5ZYWt1Owor5Y6WPkJvdTsKK+WOmD5SaW47Civljpo+S291Owor5Y6fPkdlbjsKK+WOoD5TaGk7CivljqU+S2V0c3U7CivljqY+S2E7Civljqg+WnU7Civljqk+S3l1dTsKK+WOrT5FbjsKK+WOrj5TaGk7CivljrA+U2hvdTsKK+WOsz5HZW47CivljrY+U2hpOwor5Y67Pkt5bzsKK+WPgj5TYW47Civlj4M+U2FuOwor5Y+IPll1dTsKK+WPiT5TaGE7Civlj4o+S3l1dTsKK+WPiz5ZdXU7Civlj4w+U291Owor5Y+NPkhhbjsKK+WPjj5TaHV1Owor5Y+UPlNodWt1Owor5Y+WPlNodTsKK+WPlz5KdTsKK+WPmT5KbzsKK+WPmz5IYW47Civlj58+U291Owor5Y+hPkVpOwor5Y+iPlNvdTsKK+WPoz5Lb3U7Civlj6Q+S287Civlj6U+S3U7Civlj6g+VG91Owor5Y+pPktvdTsKK+WPqj5TaGk7Civlj6s+S3lvdTsKK+WPrD5TaG91Owor5Y+tPkhhdHN1Owor5Y+uPlRlaTsKK+WPrz5LYTsKK+WPsD5EYWk7Civlj7E+U2hpdHN1Owor5Y+yPlNoaTsKK+WPsz5VOwor5Y+2Pkt5b3U7Civlj7c+R291Owor5Y+4PlNoaTsKK+WQgT5LdTsKK+WQgz5LaXRzdTsKK+WQhD5LYWt1Owor5ZCIPkdvdTsKK+WQiT5LaWNoaTsKK+WQij5DaG91Owor5ZCLPlN1bjsKK+WQjD5Eb3U7CivlkI0+TWVpOwor5ZCOPktvdTsKK+WQjz5SaTsKK+WQkD5UbzsKK+WQkT5Lb3U7CivlkJs+S3VuOwor5ZCdPlJpbjsKK+WQnz5HaW47CivlkKA+SGFpOwor5ZCmPkhpOwor5ZCpPkZ1bjsKK+WQqz5HYW47CivlkKw+S2luOwor5ZCtPktvdTsKK+WQrj5TZW47CivlkLY+VG90c3U7CivlkLg+S3l1dTsKK+WQuT5TdWk7CivlkLs+RnVuOwor5ZC8PktvdTsKK+WQvT5JbjsKK+WQvj5HbzsKK+WRgD5HYTsKK+WRgj5SeW87CivlkYY+Qm91Owor5ZGIPlRlaTsKK+WRiT5HbzsKK+WRij5Lb2t1Owor5ZGOPlNla2k7CivlkZE+RG9uOwor5ZGfPkdlbjsKK+WRqD5TaHV1Owor5ZGqPkp1Owor5ZGwPlNoaTsKK+WRsT5LbzsKK+WRsz5NaTsKK+WRtT5LYTsKK+WRtj5EbzsKK+WRtz5Lb3U7Civlkbs+U2hpbjsKK+WRvD5LbzsKK+WRvT5NZWk7CivlkoA+U287CivlkoQ+VG90c3U7CivlkoY+SG91Owor5ZKLPlNha3U7Civlkow+V2E7Civlko4+S3l1dTsKK+WSjz5FaTsKK+WSkD5IbzsKK+WSkj5TaHU7CivlkqI+R2FrdTsKK+WSpD5UYTsKK+WSpT5LaTsKK+WSqD5TaGk7Civlkqs+U2hpOwor5ZKsPktvdTsKK+WSrz5LYWt1Owor5ZKyPlNob3U7CivlkrM+R2FpOwor5ZK4PkthbjsKK+WSvD5LYTsKK+WSvT5JbjsKK+WSvj5Sb3U7Civlk4A+QWk7Civlk4E+SGluOwor5ZOCPlNoaW47Civlk4Q+S291Owor5ZOHPkFpOwor5ZOIPkdvdTsKK+WTiT5TYWk7Civlk6E+SW47Civlk6I+Um91Owor5ZOlPkthOwor5ZOmPkdhOwor5ZOoPlNob3U7Civlk6k+Umk7Civlk60+S29rdTsKK+WTrj5Lb3U7Civlk7I+VGV0c3U7Civlk7o+SG87Civlk70+S291Owor5ZSEPkJhaTsKK+WUhj5TYTsKK+WUhz5TaGluOwor5ZSPPktpOwor5ZSQPlRvdTsKK+WUlD5HbzsKK+WUlj5BOwor5ZSuPlNodXU7CivllK8+WXVpOwor5ZSxPlNob3U7CivllLM+UmVpOwor5ZS4PlRlbjsKK+WUuT5ZbzsKK+WUvj5EYTsKK+WVgD5HYWk7CivllYQ+VGFrdTsKK+WVhT5UYWt1Owor5ZWGPlNob3U7CivllYw+S291Owor5ZWPPk1vbjsKK+WVkz5LZWk7CivllZY+VGFuOwor5ZWXPlRhbjsKK+WVnD5TZXRzdTsKK+WVnT5LYTsKK+WVoz5LYW47Civllbs+U2hpOwor5ZW8PlRlaTsKK+WVvj5TaHV1Owor5ZaAPktha3U7CivlloM+TmFuOwor5ZaEPlplbjsKK+WWhz5SYXRzdTsKK+WWiT5Lb3U7Civlloo+S2FuOwor5ZaLPkNob3U7Civllpg+WmVuOwor5ZaZPkthaTsKK+WWmj5LYW47Civllpw+S2k7Civllp0+S2F0c3U7Civllp4+U29rdTsKK+WWnz5LaTsKK+WWpz5LZW47Civllqg+UnlvdTsKK+WWqT5ZdTsKK+WWqj5Tb3U7Civllqs+S2l0c3U7Civllqw+S3lvdTsKK+WWrj5UYW47CivllrY+RWk7Civll4Q+U2E7Civll4U+S3l1dTsKK+WXhz5TaG9rdTsKK+WXlD5TaGluOwor5ZeaPk87Civll5w+U2hpOwor5ZefPlNhOwor5ZejPlNoaTsKK+WXpD5TaGk7Civll7c+R291Owor5Ze5PlJlbjsKK+WXvT5Tb2t1Owor5Ze+PlNvdTsKK+WYhj5UYW47CivlmIk+S2E7CivlmJQ+T3U7CivlmJY+U2FrdTsKK+WYlz5TaG91Owor5ZiYPkt5bzsKK+WYmz5NYTsKK+WYqT5LYTsKK+WYrz5TaG91Owor5ZixPlNob2t1Owor5ZiyPlRvdTsKK+WYtD5TaGk7CivlmLY+U2VpOwor5Zi4PkJ1Owor5ZmCPlNvbjsKK+WZjD5Tb3U7CivlmY4+SXRzdTsKK+WZkD5LaTsKK+WZmz5Hb3U7CivlmaQ+S2luOwor5ZmoPktpOwor5ZmqPlNvdTsKK+WZqz5JOwor5ZmsPlplaTsKK+WZtD5GdW47Civlmbg+VG9uOwor5ZqAPkRlaTsKK+Wahj5Lb3U7Civlmoc+S2FrdTsKK+Waij5IaTsKK+Wajz5UZWk7CivlmpQ+VGVpOwor5ZqgPlJ5dXU7CivlmqI+Tm91Owor5ZqlPkVuOwor5ZquPktvdTsKK+WatD5HZW47CivlmrY+T3U7Civlmrw+U2hha3U7Civlm4A+VGVuOwor5ZuBPlNob3U7Civlm4I+R291Owor5ZuDPlNvdTsKK+WbiD5HZWk7Civlm44+U287Civlm5E+U2hva3U7Civlm5M+S2V0c3U7Civlm5c+STsKK+WbmD5LYWk7Civlm5o+U2h1dTsKK+Wbmz5TaGk7Civlm54+S2FpOwor5ZugPkluOwor5ZujPkRhbjsKK+Wbrj5LYTsKK+WbsD5Lb247Civlm7I+STsKK+Wbsz5UbzsKK+WbuT5SZWk7Civlm7o+S287Civlm70+S29rdTsKK+Wbvz5ZdXU7CivlnIA+S29rdTsKK+Wcgz5IbzsKK+WchD5HeW87CivlnIg+S2VuOwor5ZyJPkd5bzsKK+Wciz5Lb2t1Owor5ZyNPkk7CivlnI8+S2VuOwor5ZySPkVuOwor5ZyTPkVuOwor5ZyWPlRvOwor5ZyYPkRhbjsKK+WcnD5LYW47CivlnJ8+RG87CivlnKc+QXRzdTsKK+WcqD5aYWk7CivlnK0+S2VpOwor5ZywPkNoaTsKK+Wcuz5LaTsKK+WdgD5TaGk7CivlnYI+SGFuOwor5Z2HPktpbjsKK+Wdij5Cb3U7CivlnY4+S2FuOwor5Z2PPkhhaTsKK+WdkD5aYTsKK+WdkT5Lb3U7CivlnaE+SGE7CivlnaQ+S29uOwor5Z2mPlRhbjsKK+WdqT5LYW47Civlnao+SGVpOwor5Z2/PkZ1Owor5Z6CPlN1aTsKK+WeiD5UYWk7Civlnok+SG91Owor5Z6LPktlaTsKK+Wekz5HYWk7CivlnqA+R2luOwor5Z6iPktvdTsKK+Weoz5FbjsKK+WepD5UZXRzdTsKK+WfgD5TdWk7Civln4M+QWk7Civln4Y+S2FrdTsKK+Wfiz5NYWk7Civln44+Sm91Owor5Z+SPlJhY2hpOwor5Z+TPlJhY2hpOwor5Z+UPkhvOwor5Z+cPlNobzsKK+Wfnz5Ja2k7Civln6A+RnU7Civln6M+U2FpOwor5Z+0PlNob2t1Owor5Z+3PlNoaXRzdTsKK+WfuT5CYWk7Civln7o+S2k7Civln7w+S2k7CivloIA+S3V0c3U7CivloII+RG91Owor5aCFPktlbjsKK+Wghj5UYWk7CivloIo+QTsKK+Wgiz5Ib3U7CivloJU+RGE7CivloJk+SW47CivloJ0+S2E7CivloKE+SG91Owor5aCkPlRlaTsKK+Wgqj5LYW47CivloK8+R3lvdTsKK+WgsD5FbjsKK+WgsT5Ib3U7CivloLQ+Sm91Owor5aC1PlRvOwor5aC6PkthaTsKK+WgvT5Lb3U7CivloYE+UnVpOwor5aGKPkthaTsKK+Whiz5FaTsKK+WhkT5TbzsKK+Whkj5TaGk7CivloZQ+VG91Owor5aGXPlRvOwor5aGYPlRvdTsKK+WhmT5LYWt1Owor5aGaPkNob3U7CivloZ4+U29rdTsKK+Whoj5POwor5aGpPkVuOwor5aGrPlRlbjsKK+Whsj5Kb3U7CivlobU+SmluOwor5aG5PlphbjsKK+Whvj5KdWt1Owor5aKDPkt5b3U7CivlooU+U2hvOwor5aKTPkJvOwor5aKXPlpvdTsKK+WinD5Uc3VpOwor5aKfPkt5bzsKK+WiqD5Cb2t1Owor5aKrPlNodW47Civloq4+RGE7CivlorM+RnVuOwor5aK4PlNobzsKK+Wiuj5PdTsKK+Wiuz5TaG91Owor5aK+PktvbjsKK+WjgT5IZWtpOwor5aOFPllvdTsKK+Wjhz5EYW47Civlo4o+S2FpOwor5aOMPkpvdTsKK+WjkT5HYWt1Owor5aOTPkF0c3U7Civlo5U+R291Owor5aOYPlJ1aTsKK+WjmT5Lb3U7Civlo5w+VGFuOwor5aOePkthaTsKK+Wjnz5SeW91Owor5aOkPkpvdTsKK+WjpT5UZW47Civlo6s+U2hpOwor5aOsPkppbjsKK+Wjrj5Tb3U7Civlo68+U291Owor5aOwPlNlaTsKK+WjsT5JY2hpOwor5aOyPkJhaTsKK+Wjtz5LbzsKK+WjuT5JY2hpOwor5aO6PktvOwor5aO7PlNlaTsKK+WjvD5Lb247Civlo70+SnU7CivlpII+Q2hpOwor5aSJPkhlbjsKK+Wkij5TdWk7CivlpI8+S2E7CivlpJA+S2VpOwor5aSVPlNla2k7CivlpJY+R2FpOwor5aSYPkJvdTsKK+WkmT5TaHVrdTsKK+Wkmj5UYTsKK+Wkmz5UYTsKK+WknD5ZYTsKK+Wkoj5NdTsKK+WkpT5LYTsKK+Wkpz5UYWk7CivlpKk+VGVuOwor5aSqPlRhOwor5aSrPkZ1Owor5aSsPktldHN1Owor5aStPllvdTsKK+Wkrj5PdTsKK+WksT5TaGl0c3U7CivlpLI+VG91Owor5aS3Pkk7CivlpLg+S287CivlpL4+S291Owor5aWEPkVuOwor5aWHPktpOwor5aWIPk5hOwor5aWJPkhvdTsKK+Wljj5LZWk7CivlpY8+U291Owor5aWQPkthbjsKK+WlkT5TZXRzdTsKK+WllD5Ib247CivlpZU+RWtpOwor5aWXPlRvdTsKK+WlmD5Kb3U7CivlpZo+S2VpOwor5aWgPlRlbjsKK+Wloj5TaGE7CivlpaU+T3U7Civlpac+T3U7Civlpag+U2hvdTsKK+WlqT5SZW47Civlpao+RGF0c3U7Civlpaw+U2hvdTsKK+Wlrj5GdW47CivlpbM+Sm87CivlpbQ+RG87Civlpbg+S2FuOwor5aW9PktvdTsKK+WmgT5TaGFrdTsKK+Wmgj5KbzsKK+Wmgz5IaTsKK+WmhD5Cb3U7Civlpoo+TmluOwor5aaNPktlbjsKK+Wmkz5LaTsKK+Wmlj5Zb3U7Civlppk+TXlvdTsKK+Wmmz5TaGk7Civlpp0+U291Owor5aajPkhpOwor5aalPkRhOwor5aaoPkJvdTsKK+WmrD5UbzsKK+Wmsj5EYXRzdTsKK+WmuT5NYWk7Civlprs+U2FpOwor5aa+PlNob3U7Civlp4Y+Qm87Civlp4k+U2hpOwor5aeLPlNoaTsKK+WnkD5TbzsKK+WnkT5LbzsKK+Wnkz5TZWk7Civlp5Q+STsKK+WnmT5OaW47Civlp5o+WW91Owor5aecPkt5b3U7Civlp6U+Qm87Civlp6Y+S2FuOwor5aeoPkk7Civlp6o+VGV0c3U7Civlp6s+S2k7Civlp7Y+T3U7Civlp7s+SW47Civlp78+U2hpOwor5aiBPkk7CivlqIM+QTsKK+WoiT5IZWk7CivlqJE+U2hhOwor5aiYPkpvdTsKK+Womj5OYW47CivlqJw+RGE7CivlqJ8+S2VuOwor5aigPlNoaW47CivlqKU+R2E7CivlqKk+QmVuOwor5aivPkdvOwor5ai1PlNodTsKK+Wotj5TaHU7CivlqLw+U2hvdTsKK+WpgD5BOwor5amBPlJvdTsKK+Wphj5CYTsKK+WpiT5FbjsKK+Wpmj5Lb247CivlqaI+SGk7CivlqaY+RnU7Civlqao+UmFuOwor5amsPkluOwor5am/PlNlaTsKK+Wqkj5CYWk7Civlqpo+Qmk7Civlqps+RW47Civlqrw+T3U7Civlqr0+Qm87Civlqr4+S291Owor5auBPkthOwor5auCPlNvdTsKK+WriT5TaGl0c3U7Civlq4s+Sm91Owor5auMPktlbjsKK+WrkD5Kb3U7Civlq5Y+SHlvdTsKK+Wrlz5PdTsKK+WroT5DaGFrdTsKK+Wroz5FbjsKK+Wrpj5Lb3U7Civlq6k+RG9uOwor5au6PkthbjsKK+Wruz5LYW47CivlrIk+S2k7CivlrIs+U2VuOwor5ayMPkt5b3U7CivlrJY+SGVpOwor5ayiPkpvdTsKK+Wsqj5IaW47CivlrKw+U2h1Owor5aywPkVpOwor5ayyPkpvdTsKK+Wsvj5SYW47CivlrYA+U291Owor5a2DPkpvdTsKK+WthT5TZW47CivlrZA+U2hpOwor5a2RPkdldHN1Owor5a2UPktvdTsKK+WtlT5Zb3U7CivlrZc+Smk7CivlrZg+U29uOwor5a2aPkZ1Owor5a2bPkJvdHN1Owor5a2cPlNoaTsKK+WtnT5Lb3U7CivlrZ8+TW91Owor5a2jPktpOwor5a2kPktvOwor5a2lPkRvOwor5a2mPkdha3U7Civlrak+S2FpOwor5a2rPlNvbjsKK+WtsD5KdWt1Owor5a2xPlNlbjsKK+Wtsz5TaGk7CivlrbU+RnU7Civlrbg+R2FrdTsKK+Wtuj5KdTsKK+WugD5CZW47CivlroM+VGE7CivlroU+VGFrdTsKK+Wuhz5VOwor5a6IPlNodTsKK+WuiT5BbjsKK+Wuiz5Tb3U7Civlrow+S2FuOwor5a6NPk5pa3U7Civlro8+S291Owor5a6VPlRvdTsKK+Wulz5TaHV1Owor5a6YPkthbjsKK+WumT5DaHV1Owor5a6aPlRlaTsKK+Wumz5FbjsKK+WunD5HaTsKK+WunT5Ib3U7Civlrp8+Sml0c3U7CivlrqI+S3lha3U7CivlrqM+U2VuOwor5a6kPlNoaXRzdTsKK+WupT5ZdXU7CivlrqY+S2FuOwor5a6uPkt5dXU7CivlrrA+U2FpOwor5a6zPkdhaTsKK+WutD5FbjsKK+WutT5TaG91Owor5a62PkthOwor5a64PlNoaW47Civlrrk+WW91Owor5a6/PlNodWt1Owor5a+CPkpha3U7Civlr4M+RW47Civlr4Q+S2k7Civlr4U+SW47Civlr4Y+TWl0c3U7Civlr4c+S291Owor5a+JPktha3U7Civlr4w+RnU7Civlr5A+Qmk7Civlr5I+S2FuOwor5a+TPkd1dTsKK+WvlD5TaG9rdTsKK+Wvmz5LYW47Civlr50+U2hpbjsKK+Wvnj5CYWt1Owor5a+fPlNhdHN1Owor5a+hPkthOwor5a+iPlNoaW47Civlr6Q+R287Civlr6U+UnlvdTsKK+Wvpj5KaXRzdTsKK+Wvpz5OZWk7Civlr6g+U2FpOwor5a+pPlNoaW47Civlr6s+U2hhOwor5a+uPlJ5b3U7Civlr7A+S2FuOwor5a+zPkhvdTsKK+WvtT5DaG91Owor5a+2PkhvdTsKK+WvuD5TdW47Civlr7o+Smk7Civlr74+VGFpOwor5a+/Pkp1Owor5bCBPkZ1dTsKK+Wwgj5TZW47CivlsIQ+U2hhOwor5bCFPktva3U7CivlsIY+U2hvdTsKK+Wwhz5TaG91Owor5bCIPlNlbjsKK+WwiT5JOwor5bCKPlNvbjsKK+Wwiz5KaW47CivlsI0+VGFpOwor5bCOPkRvdTsKK+Wwjz5TaG91Owor5bCRPlNob3U7CivlsJM+Smk7CivlsJY+U2VuOwor5bCaPlNob3U7CivlsKA+U2VuOwor5bCiPk91Owor5bCkPll1dTsKK+WwqD5Cb3U7CivlsK0+R3lvdTsKK+WwsT5TaHV1Owor5bC4PlNoaTsKK+WwuT5JbjsKK+Wwuj5TaGFrdTsKK+Wwuz5Lb3U7CivlsLw+Tmk7CivlsL0+SmluOwor5bC+PkJpOwor5bC/Pk55b3U7CivlsYA+S3lva3U7CivlsYE+SGk7CivlsYU+S3lvOwor5bGGPkthaTsKK+WxiD5LdXRzdTsKK+Wxij5LYWk7CivlsYs+T2t1Owor5bGNPlNoaTsKK+Wxjj5TaGk7CivlsY8+SGVpOwor5bGQPkdla2k7CivlsZE+U2V0c3U7CivlsZM+S2k7CivlsZU+VGVuOwor5bGePlpva3U7CivlsaA+VG87CivlsaE+UnU7CivlsaQ+U291Owor5bGlPlJpOwor5bGsPlpva3U7Civlsa4+U2E7Civlsa8+VG9uOwor5bGxPlNhbjsKK+WxuT5LaXRzdTsKK+WyjD5LeXV1Owor5bKQPktpOwor5bKRPlNoaW47CivlspQ+U2E7CivlsqE+S291Owor5bKoPlNvOwor5bKpPkdhbjsKK+Wyqz5TaHV1Owor5bKsPktvdTsKK+WysT5UYWk7CivlsrM+R2FrdTsKK+Wytj5IYWt1Owor5bK3PkJpbjsKK+WyuD5HYW47Civlsrs+Smk7Civlsr4+U2VuOwor5bOHPktvdTsKK+WzmT5KaTsKK+WzoT5LeW91Owor5bOoPkdhOwor5bOpPkdhOwor5bOqPllva3U7Civls60+U2hvdTsKK+Wzrz5Ib3U7Civls7A+SG91Owor5bO2PlRvdTsKK+Wzuj5Lb3U7Civls7s+U2h1bjsKK+WzvT5LeW91Owor5bSHPlN1dTsKK+W0iz5LYTsKK+W0jj5LaTsKK+W0kT5Lb247CivltJQ+U2FpOwor5bSVPkdhaTsKK+W0lj5HYWk7CivltJc+S291Owor5bSYPlJvbjsKK+W0mT5Sb247CivltJo+UnlvdTsKK+W0mz5LdXRzdTsKK+W0nz5HaW47CivltKI+U291Owor5bSpPkhvdTsKK+W1iz5CaTsKK+W1jD5LYW47CivltY4+R3V1Owor5bWQPlJhbjsKK+W1kj5HYW47CivltZw+S2k7Civltak+U3V1Owor5bWsPkthaTsKK+W1rz5TYTsKK+W1sz5TYTsKK+W2gj5TaG91Owor5baEPlNhbjsKK+W2hz5LdTsKK+W2iz5Ub3U7Civltow+VG91Owor5baQPlJ5dXU7Civltp0+VG91Owor5baiPkd5b3U7Civltqw+R2k7Civltq4+S2VuOwor5ba3PkdpOwor5ba6PlJlaTsKK+W2vD5TaG87Civltr0+R2FrdTsKK+W3iT5TYW47Civlt4w+R2FuOwor5beNPkdpOwor5beSPlJhbjsKK+W3kz5UZW47Civlt5Y+R2FuOwor5bebPlNlbjsKK+W3nT5TZW47Civlt54+U2h1dTsKK+W3oT5KdW47Civlt6M+U291Owor5belPktvdTsKK+W3pj5TYTsKK+W3pz5Lb3U7Civlt6g+S3lvOwor5berPkZ1Owor5beuPlNoaTsKK+W3sT5LaTsKK+W3sj5JOwor5bezPlNoaTsKK+W3tD5IYTsKK+W3tT5TaGk7Civlt7c+S291Owor5be7PkthbjsKK+W3vT5Tb247Civlt74+S2luOwor5biCPlNoaTsKK+W4gz5GdTsKK+W4hj5IYW47CivluIs+U2hpOwor5biMPktpOwor5biRPkRvOwor5biWPkpvdTsKK+W4mT5DaGl0c3U7CivluJo+U291Owor5bibPkhha3U7CivluJ0+VGVpOwor5bilPlNvdHN1Owor5birPlNoaTsKK+W4rT5TZWtpOwor5bivPlRhaTsKK+W4sD5LaTsKK+W4sz5DaG91Owor5bi2PlRhaTsKK+W4tz5JOwor5bi4PkpvdTsKK+W4vT5Cb3U7CivluYA+VGVpOwor5bmDPkk7CivluYQ+QWt1Owor5bmFPkZ1a3U7CivluYc+SG91Owor5bmMPktvdTsKK+W5jj5CZWtpOwor5bmUPkJhbjsKK+W5lT5NYWt1Owor5bmXPktha3U7CivluZ8+U2hpOwor5bmhPkhhbjsKK+W5oj5Ub3U7CivluaM+SGVpOwor5bmkPkhlaTsKK+W5sj5LYW47CivlubM+SGVpOwor5bm0Pk5lbjsKK+W5tT5LZW47CivlubY+SGVpOwor5bm4PktvdTsKK+W5uT5LYW47Civlubo+WW91Owor5bm7PkdlbjsKK+W5vD5Zb3U7Civlub0+WXV1Owor5bm+PktpOwor5bm/PkdlbjsKK+W6gT5DaG91Owor5bqDPktvdTsKK+W6hD5Tb3U7Civluoc+SGk7Civluoo+U2hvdTsKK+W6jz5KbzsKK+W6lT5UZWk7CivlupY+SG91Owor5bqXPlRlbjsKK+W6mj5Lb3U7Civlupw+RnU7CivluqA+U2hvdTsKK+W6pj5UYWt1Owor5bqnPlphOwor5bqrPktvOwor5bqtPlRlaTsKK+W6tT5BbjsKK+W6tj5TaG87Civlurc+S291Owor5bq4PllvdTsKK+W7gT5TaGk7Civlu4I+U2hvdTsKK+W7gz5IYWk7Civlu4g+S2E7Civlu4k+UmVuOwor5buKPlJvdTsKK+W7kD5LeXV1Owor5buTPktha3U7Civlu5Y+UnlvdTsKK+W7mj5adTsKK+W7mz5UZW47Civlu50+U2hpOwor5bufPkJ5b3U7Civlu6A+U2hvdTsKK+W7oT5CdTsKK+W7oj5IYWk7Civlu6M+S291Owor5buoPkthaTsKK+W7qT5SaW47Civlu6w+UnlvOwor5buwPkNob3U7Civlu7E+WW91Owor5buzPkNob3U7Civlu7Q+SW47Civlu7Y+RW47Civlu7c+VGVpOwor5bu4PlRla2k7Civlu7o+S2VuOwor5bu7PkthaTsKK+W7vD5EYWk7Civlu74+S3lvdTsKK+W7vz5KdXU7CivlvIE+QmVuOwor5byDPktpOwor5byEPlJvdTsKK+W8iT5Kb3U7CivlvIo+SGVpOwor5byLPllva3U7CivlvIw+SXRzdTsKK+W8jT5OaTsKK+W8jz5TaGlraTsKK+W8kD5OaTsKK+W8kT5TaGk7CivlvJM+S3l1dTsKK+W8lD5DaG91Owor5byVPkluOwor5byXPkZ1dHN1Owor5byYPktvdTsKK+W8mz5TaGk7CivlvJ8+VGVpOwor5bylPk1pOwor5bymPkdlbjsKK+W8pz5LbzsKK+W8qT5EbzsKK+W8rT5CaTsKK+W8rz5XYW47CivlvLE+SmFrdTsKK+W8tT5DaG91Owor5by3Pkt5b3U7CivlvLg+SG91Owor5by8PkhpdHN1Owor5by+PkRhbjsKK+W9gT5TZWk7CivlvYg+RGFuOwor5b2KPkt5b3U7CivlvYw+Qmk7CivlvY4+V2FuOwor5b2RPktlaTsKK+W9kz5Ub3U7CivlvZY+VGFuOwor5b2XPlN1aTsKK+W9mT5JOwor5b2cPkk7CivlvZ0+STsKK+W9oT5TYW47CivlvaI+S2VpOwor5b2mPkdlbjsKK+W9qT5TYWk7Civlvao+SHlvdTsKK+W9qz5DaG91Owor5b2sPkhpbjsKK+W9rT5Ib3U7CivlvbA+U2hvdTsKK+W9sT5FaTsKK+W9sz5UZWtpOwor5b23PkhvdTsKK+W9uT5ZYWt1Owor5b28PkhpOwor5b2/PkZ1dHN1Owor5b6APk91Owor5b6BPlNlaTsKK+W+gj5TbzsKK+W+gz5PdTsKK+W+hD5LZWk7CivlvoU+VGFpOwor5b6HPlNodW47Civlvog+S29uOwor5b6KPkthaTsKK+W+iz5SaXRzdTsKK+W+jD5HbzsKK+W+kD5KbzsKK+W+kT5LZWk7CivlvpI+VG87CivlvpM+SnV1Owor5b6XPlRva3U7Civlvpg+SGFpOwor5b6ZPlNoaTsKK+W+nj5KdXU7CivlvqA+UmFpOwor5b6hPkd5bzsKK+W+qD5Lb3U7Civlvqk+RnVrdTsKK+W+qj5KdW47Civlvq0+WW91Owor5b6uPkJpOwor5b6zPlRva3U7CivlvrQ+Q2hvdTsKK+W+uT5UZXRzdTsKK+W+vD5LeW91Owor5b69PktpOwor5b+DPlNoaW47Civlv4U+SGl0c3U7Civlv4w+S2k7Civlv40+TmluOwor5b+WPlNvbjsKK+W/lz5TaGk7Civlv5g+Qm91Owor5b+ZPkJvdTsKK+W/nD5PdTsKK+W/nT5UZW47Civlv6A+Q2h1dTsKK+W/pD5HbzsKK+W/qz5LYWk7Civlv7A+U3VpOwor5b+xPlNoaW47Civlv7U+TmVuOwor5b+4Pkppa3U7Civlv7s+S2luOwor5b+9PktvdHN1Owor5b+/PkZ1bjsKK+aAjj5TaGluOwor5oCPPllvdTsKK+aAkD5Lb3U7CivmgJI+RG87CivmgJU+SGE7CivmgJY+RnU7CivmgJk+S287CivmgJs+RGF0c3U7CivmgJw+UmVpOwor5oCdPlNoaTsKK+aAoD5UYWk7CivmgKE+STsKK+aApT5LeXV1Owor5oCmPkhvdTsKK+aApz5TZWk7CivmgKg+RW47CivmgKk+Smk7CivmgKo+S2FpOwor5oCrPkZ1dHN1Owor5oCvPkt5b3U7CivmgLE+U291Owor5oGBPkluOwor5oGCPkp1bjsKK+aBgz5KaTsKK+aBhj5Lb3U7CivmgYo+S3lvdTsKK+aBiz5SZW47CivmgY0+S291Owor5oGQPkt5b3U7CivmgZI+S291Owor5oGVPkpvOwor5oGZPllvdTsKK+aBmj5JOwor5oGfPkt5b3U7CivmgaA+S2FpOwor5oGiPkthaTsKK+aBoz5TaGk7CivmgaQ+SnV0c3U7CivmgaU+Q2hpOwor5oGoPktvbjsKK+aBqT5PbjsKK+aBqj5LYWt1Owor5oGrPkRvdTsKK+aBrD5UZW47Civmga0+S3lvdTsKK+aBrz5Tb2t1Owor5oGwPktvdTsKK+aBtT5LZWk7Civmgbc+S3l1dTsKK+aCgT5FbjsKK+aCgz5Lb247CivmgoQ+U2hvdTsKK+aCiT5TaGl0c3U7Civmgos+UmluOwor5oKMPlRlaTsKK+aCjT5LYW47CivmgpI+WXV1Owor5oKUPkthaTsKK+aClj5IYWk7Civmgpc+QmFuOwor5oKaPlNob3U7Civmgps+U2VuOwor5oKfPkdvOwor5oKgPll1dTsKK+aCoz5LYW47CivmgqY+RXRzdTsKK+aCpz5SaTsKK+aCqT5Ob3U7Civmgqo+QWt1Owor5oKyPkhpOwor5oKzPlRva3U7CivmgrQ+U3VpOwor5oK1PkNob3U7CivmgrY+TW9uOwor5oK4PktpOwor5oK8PlRvdTsKK+aCvT5TZWk7Civmg4U+Sm91Owor5oOGPkNodXU7Civmg4c+VG9uOwor5oORPldha3U7Civmg5M+S2VuOwor5oOYPkJvdTsKK+aDmj5Lb3RzdTsKK+aDnD5TZWtpOwor5oOfPkk7Civmg6A+S2VpOwor5oOhPk87Civmg6M+U291Owor5oOnPkt1Owor5oOoPlNhbjsKK+aDsD5EYTsKK+aDsT5Ob3U7Civmg7M+U291Owor5oO0Plp1aTsKK+aDtj5Lb3U7Civmg7c+U2h1bjsKK+aDuT5KYTsKK+aDuj5TZWk7Civmg7s+U29rdTsKK+aEgD5TaG91Owor5oSBPlNodXU7CivmhIM+S2VuOwor5oSGPktlbjsKK+aEiD5ZdTsKK+aEiT5ZdTsKK+aEjT5CaW47CivmhI4+SHlva3U7CivmhI8+STsKK+aElT5HYWt1Owor5oSaPkd1Owor5oSbPkFpOwor5oSfPkthbjsKK+aEoT5Tb3U7CivmhKc+S2k7CivmhKg+S2FrdTsKK+aErD5TbzsKK+aEtD5Tb3U7CivmhLw+U2hpbjsKK+aEvT5IYWt1Owor5oS+PktpOwor5oS/PkdlbjsKK+aFgj5Zb3U7CivmhYQ+Uml0c3U7CivmhYc+SW47CivmhYg+Smk7CivmhYo+S2VuOwor5oWLPlRhaTsKK+aFjD5Lb3U7CivmhY0+VW47CivmhY4+U2hpbjsKK+aFkz5IeW91Owor5oWVPkJvOwor5oWYPlNhbjsKK+aFmT5aYW47CivmhZo+WmFuOwor5oWdPlRva3U7CivmhZ8+RG91Owor5oWiPk1hbjsKK+aFoz5LYW47CivmhaU+Wm91Owor5oWnPktlaTsKK+aFqD5HYWk7Civmhas+U2hvdTsKK+aFrj5SeW87Civmha8+U2hvdTsKK+aFsD5JOwor5oWxPlRhbjsKK+aFsz5LYW47CivmhbQ+U2hvdTsKK+aFtT5Zb3U7CivmhbY+S2VpOwor5oW3PktvdTsKK+aFvj5Zb2t1Owor5oaCPll1dTsKK+aGhz5LZWk7Civmhoo+SGFpOwor5oaOPlpvdTsKK+aGkD5SZW47CivmhpE+SHlvdTsKK+aGlD5TaG91Owor5oaWPkdpbjsKK+aGmT5LaTsKK+aGmj5UYW47CivmhqQ+RnVuOwor5oanPkRvdTsKK+aGqT5LZWk7Civmhqs+QmluOwor5oasPktlaTsKK+aGrj5CdTsKK+aGsj5LZW47CivmhrY+T2t1Owor5oa6PlRhbjsKK+aGvj5LYW47Civmh4M+S2luOwor5oeGPlNvdTsKK+aHhz5Lb247Civmh4g+S2FpOwor5oeJPllvdTsKK+aHij5PdTsKK+aHiz5Cb3U7Civmh4w+RWtpOwor5oeNPlJpbjsKK+aHkD5LYWk7Civmh6M+TW9uOwor5oemPkRhOwor5oeyPkNob3U7Civmh7Q+WmFuOwor5oe2PlJhbjsKK+aHtz5LYWk7Civmh7g+S2VuOwor5oe6PlphbjsKK+aHvD5LdTsKK+aHvT5LYW47Civmh74+U2hvdTsKK+aHvz5JOwor5oiAPlJlbjsKK+aIiD5LYTsKK+aIiT5FdHN1Owor5oiKPkJvOwor5oiMPkp1dHN1Owor5oiNPkp1Owor5oiOPkp1dTsKK+aIkD5TZWk7CivmiJE+R2E7CivmiJI+S2FpOwor5oiUPlNhbjsKK+aIlj5XYWt1Owor5oiaPlNla2k7CivmiJs+S2F0c3U7CivmiJ0+Wm9rdTsKK+aInj5LYXRzdTsKK+aInz5HZWtpOwor5oihPkthbjsKK+aIpj5TZW47CivmiKo+U2V0c3U7CivmiK4+UmlrdTsKK+aIrz5HaTsKK+aIsD5TZW47CivmiLI+R2k7CivmiLM+VGFrdTsKK+aItD5UYWk7CivmiLg+S287CivmiLs+UmVpOwor5oi/PkJvdTsKK+aJgD5TaG87CivmiYE+SGVuOwor5omHPlNlbjsKK+aJiD5LbzsKK+aJiT5IaTsKK+aJiz5TaHU7CivmiY0+U2FpOwor5omOPlNhdHN1Owor5omTPkRhOwor5omVPkZ1dHN1Owor5omYPlRha3U7CivmiZs+S291Owor5omePkthbjsKK+aJoD5TYTsKK+aJoz5Lb3U7Civmia4+RnVuOwor5omxPlNvdTsKK+aJtj5GdTsKK+aJuT5IaTsKK+aJvD5Ba3U7Civmib4+S2E7Civmib8+U2hvdTsKK+aKgD5HaTsKK+aKgj5LeW91Owor5oqDPkJlbjsKK+aKhD5TaG91Owor5oqJPktldHN1Owor5oqKPkhhOwor5oqRPllva3U7CivmipI+Sm87CivmipM+U291Owor5oqUPkhvdTsKK+aKlT5Ub3U7CivmipY+VG91Owor5oqXPktvdTsKK+aKmD5TZXRzdTsKK+aKmz5Ib3U7Civmipw+QmF0c3U7Civmip4+VGFrdTsKK+aKqz5IaTsKK+aKrD5UYWk7CivmirE+SG91Owor5oq1PlRlaTsKK+aKuT5NYXRzdTsKK+aKuz5TaGluOwor5oq8Pk91Owor5oq9PkNodXU7Civmi4I+RnV0c3U7Civmi4U+VGFuOwor5ouGPlRha3U7Civmi4c+Qm87Civmi4g+RGVuOwor5ouJPlJhdHN1Owor5ouKPkZ1Owor5ouMPkhhbjsKK+aLjT5IYWt1Owor5ouPPkRhOwor5ouQPkthaTsKK+aLkT5LYW47Civmi5I+S3lvOwor5ouTPlRha3U7Civmi5Q+QmF0c3U7Civmi5c+T3U7Civmi5g+S291Owor5ouZPlNldHN1Owor5oubPlNob3U7Civmi5w+SGFpOwor5oudPkhhaTsKK+aLoD5LeW87Civmi6E+S2FrdTsKK+aLrD5LYXRzdTsKK+aLrT5TaGlraTsKK+aLrj5LaXRzdTsKK+aLrz5Kb3U7Civmi7E+S3lvdTsKK+aLsz5LZW47Civmi7U+U29uOwor5ou2PlNhdHN1Owor5ou3PkdvdTsKK+aLvj5TaHV1Owor5ou/PkRhOwor5oyBPkppOwor5oyCPktlaTsKK+aMhz5TaGk7CivmjIg+S2V0c3U7CivmjIk+QW47CivmjIw+S2FrdTsKK+aMkT5DaG91Owor5oyZPkt5bzsKK+aMnz5LeW91Owor5oynPkt1Owor5oyoPkFpOwor5oyrPlphOwor5oyvPlNoaW47CivmjLo+VGVpOwor5oy9PkJhbjsKK+aMvj5LeW91Owor5oy/PlNvdTsKK+aNiT5Tb2t1Owor5o2MPkhhdHN1Owor5o2NPkthbjsKK+aNjz5EZXRzdTsKK+aNkD5FbjsKK+aNlT5IbzsKK+aNlz5IbzsKK+aNnD5Tb3U7Civmjac+SG91Owor5o2oPlNoYTsKK+aNqT5SZXRzdTsKK+aNqz5Nb247Civmja4+S3lvOwor5o2yPktlbjsKK+aNtj5TdWk7Civmjbc+U2hvdTsKK+aNuj5OYXRzdTsKK+aNuz5OZW47CivmjoA+S2luOwor5o6DPlNvdTsKK+aOiD5KdTsKK+aOiT5Ub3U7Civmjow+U2hvdTsKK+aOjj5LaTsKK+aOjz5Ub3U7CivmjpI+SGFpOwor5o6WPkVraTsKK+aOmD5LdXRzdTsKK+aOmz5LYTsKK+aOnz5Ub3U7CivmjqA+Unlha3U7CivmjqE+U2FpOwor5o6iPlRhbjsKK+aOoz5TZWk7CivmjqU+U2V0c3U7Civmjqc+S291Owor5o6oPlN1aTsKK+aOqT5FbjsKK+aOqj5TbzsKK+aOqz5Tb3U7Civmjqw+S2lrdTsKK+aOsj5LZWk7CivmjrQ+S2FrdTsKK+aOuz5Tb3U7Civmjr4+RW47Civmj4A+S2FuOwor5o+DPlNlbjsKK+aPhD5ZdTsKK+aPhj5LaTsKK+aPiT5KdXU7Civmj48+QnlvdTsKK+aPkD5UZWk7Civmj5I+U291Owor5o+WPll1dTsKK+aPmj5Zb3U7Civmj5s+S2FuOwor5o+hPkFrdTsKK+aPoz5TaGk7Civmj6k+S2FpOwor5o+uPktpOwor5o+0PkVuOwor5o+2PllhOwor5o+6PllvdTsKK+aQhj5Lb3U7CivmkI0+U29uOwor5pCPPkhha3U7CivmkJM+U2E7CivmkJY+WW91Owor5pCXPlRvdTsKK+aQnD5Tb3U7CivmkKY+SmFrdTsKK+aQqD5Ub3U7CivmkKw+SGFuOwor5pCtPlRvdTsKK+aQtD5LZW47CivmkLY+U2hvdTsKK+aQuj5LZWk7CivmkL4+U2FrdTsKK+aRgj5TZXRzdTsKK+aRjj5LeXV1Owor5pGYPlRla2k7Civmkac+U2FpOwor5pGpPk1hOwor5pGvPlNoaTsKK+aRtj5UYW47Civmkbg+TW87Civmkbo+U2hvdTsKK+aSgz5HZWtpOwor5pKIPlJvdTsKK+aSkj5TYW47CivmkpM+RG91Owor5pKVPlNlaTsKK+aSmj5OZW47Civmkp4+U2h1Owor5pKkPlRldHN1Owor5pKlPkhhdHN1Owor5pKpPlJ5b3U7Civmkqs+QnU7Civmkq0+SGE7Civmkq4+U2F0c3U7CivmkrA+U2FuOwor5pKyPkJva3U7Civmkrk+S2FrdTsKK+aSuz5UYWNoaTsKK+aSvD5LYW47Civmk4E+WW91Owor5pOCPlJhaTsKK+aThT5TZW47Civmk4c+VGFrdTsKK+aTjT5Tb3U7Civmk5I+S2luOwor5pOUPlRhbjsKK+aTmD5IYWt1Owor5pOaPkt5bzsKK+aToD5TZWk7Civmk6E+VGFpOwor5pOiPlRla2k7Civmk6M+VG91Owor5pOmPlNhdHN1Owor5pOnPkt5bzsKK+aTrD5HaTsKK+aTrz5IaW47Civmk7E+S2FrdTsKK+aTsj5UZWtpOwor5pO0Pktha3U7Civmk7Y+U2VuOwor5pO6PkhhaTsKK+aTvT5SeWFrdTsKK+aTvj5Kb3U7CivmlIA+SGFuOwor5pSFPlNhbjsKK+aUmD5Kb3U7CivmlJw+S2VpOwor5pSdPlNldHN1Owor5pSjPlJlbjsKK+aUpD5UYW47CivmlKo+S2FrdTsKK+aUqz5LYWt1Owor5pSsPlJhbjsKK+aUrz5TaGk7CivmlLQ+SG9rdTsKK+aUtT5Cb2t1Owor5pS2PlNodXU7CivmlLc+S291Owor5pS4Pll1dTsKK+aUuT5LYWk7CivmlLs+S291Owor5pS+PkhvdTsKK+aUvz5TZWk7CivmlYU+S287CivmlYg+S291Owor5pWNPkpvOwor5pWPPkJpbjsKK+aVkT5LeXV1Owor5pWVPkNob2t1Owor5pWWPkdvdTsKK+aVlz5IYWk7CivmlZg+Sm87CivmlZk+S3lvdTsKK+aVnT5IZWk7CivmlZ4+U2hvdTsKK+aVoj5LYW47CivmlaM+U2FuOwor5pWmPlRvbjsKK+aVrD5LZWk7CivmlbA+U3V1Owor5pWyPktvdTsKK+aVtD5TZWk7CivmlbU+VGVraTsKK+aVtz5GdTsKK+aVuD5TdXU7CivmloI+UmVuOwor5paDPkhlaTsKK+aWhz5CdW47Civmlog+R2FrdTsKK+aWiT5TZWk7Civmlow+SGluOwor5paOPlNhaTsKK+aWkD5IaTsKK+aWkT5IYW47Civmlpc+VG87Civmlpk+UnlvdTsKK+aWmz5Lb2t1Owor5pacPlNoYTsKK+aWnz5TaGluOwor5pahPkF0c3U7CivmlqQ+S2luOwor5palPlNla2k7Civmlqc+RnU7Civmlqs+U2hha3U7Civmlqw+WmFuOwor5patPkRhbjsKK+aWrz5TaGk7CivmlrA+U2hpbjsKK+aWtz5EYW47Civmlrk+SG91Owor5pa8Pk87Civmlr0+U2hpOwor5peBPkhvdTsKK+aXgz5TZW47Civml4Q+Qm91Owor5peFPlJ5bzsKK+aXhj5IYWk7Civml4s+U2VuOwor5peMPlNlaTsKK+aXjz5ab2t1Owor5peSPlJ5dXU7Civml5c+S2k7Civml5k+SGFuOwor5pebPkhhbjsKK+aXoD5CdTsKK+aXoT5LaTsKK+aXoj5LaTsKK+aXpT5OaWNoaTsKK+aXpj5UYW47Civml6c+S3l1dTsKK+aXqD5TaGk7Civml6k+U291Owor5pesPkp1bjsKK+aXrT5LeW9rdTsKK+aXsT5LYW47Civml7o+T3U7Civml7s+QmluOwor5piCPktvdTsKK+aYgz5Tb2t1Owor5piGPktvbjsKK+aYhz5TaG91Owor5piKPktvdTsKK+aYjD5TaG91Owor5piOPk1laTsKK+aYjz5Lb247CivmmJM+RWtpOwor5piUPlNla2k7CivmmJw+WW91Owor5pifPlNlaTsKK+aYoD5FaTsKK+aYpT5TaHVuOwor5pinPk1haTsKK+aYqD5TYWt1Owor5pitPlNob3U7CivmmK8+WmU7CivmmLQ+Qm91Owor5pi1PkppdHN1Owor5pi2PkNob3U7CivmmLw+Q2h1dTsKK+aYvz5Lb3U7CivmmYE+Q2hvdTsKK+aZgj5KaTsKK+aZgz5Lb3U7CivmmYQ+S291Owor5pmJPlNoaW47CivmmYs+U2hpbjsKK+aZjz5BbjsKK+aZkj5TYWk7CivmmZ0+Q2h1dTsKK+aZnj5LaTsKK+aZnz5TZWk7CivmmaI+U2V0c3U7CivmmaQ+R287CivmmaY+S2FpOwor5pmnPktvdTsKK+aZqD5TaGluOwor5pmpPkJhbjsKK+aZrj5GdTsKK+aZrz5LZWk7CivmmbA+U2VraTsKK+aZtD5TZWk7CivmmbY+U2hvdTsKK+aZuj5DaGk7CivmmoE+R3lvdTsKK+aagz5IaTsKK+aahD5LZW47Civmmoc+S2E7Civmmog+VW47Civmmok+S2k7Civmmo4+RWk7CivmmpE+U2hvOwor5pqWPkRhbjsKK+aalz5BbjsKK+aamD5Zb3U7Civmmp0+TWVpOwor5pqiPkNob3U7CivmmqY+UmVraTsKK+aaqz5aYW47Civmmq4+Qm87CivmmrQ+Qm91Owor5pq4PlJ5b3U7Civmmrk+U2VuOwor5pq8PkhldHN1Owor5pq+PlRvbjsKK+abgT5LaTsKK+abhD5Zb3U7Civmm4c+RG9uOwor5puJPkd5b3U7Civmm5Y+QWk7Civmm5k+U2hvOwor5puaPkJvdTsKK+abnD5Zb3U7Civmm50+QmFrdTsKK+aboD5Lb3U7Civmm6Y+R2k7Civmm6k+RG91Owor5puwPkV0c3U7Civmm7I+S3lva3U7Civmm7M+RWk7Civmm7Q+S291Owor5pu1PkVpOwor5pu3PkthdHN1Owor5pu4PlNobzsKK+abuT5Tb3U7Civmm7w+QmFuOwor5pu9PlpvOwor5pu+PlNvOwor5pu/PlRhaTsKK+acgD5TYWk7CivmnIM+S2FpOwor5pyIPkdldHN1Owor5pyJPll1dTsKK+aciz5Ib3U7CivmnI0+RnVrdTsKK+acjz5IaTsKK+aclD5TYWt1Owor5pyVPkNoaW47CivmnJY+Um91Owor5pyXPlJvdTsKK+acmz5Cb3U7CivmnJ0+Q2hvdTsKK+acnj5LaTsKK+acnz5LaTsKK+acpj5Cb3U7CivmnKc+Um91Owor5pyoPkJva3U7CivmnKo+TWk7CivmnKs+TWF0c3U7CivmnKw+SG9uOwor5pytPlNhdHN1Owor5pyuPkp1dHN1Owor5pyxPlNodTsKK+actD5Cb2t1Owor5py2PkRhOwor5py3PlRvdTsKK+acuD5SeW9rdTsKK+acuj5LaTsKK+acvT5LeXV1Owor5py/PlNoaTsKK+adhj5LYW47CivmnYk+U2FuOwor5p2OPlJpOwor5p2PPkt5b3U7CivmnZA+WmFpOwor5p2RPlNvbjsKK+adkz5IeW91Owor5p2WPkpvdTsKK+admT5Zb2t1Owor5p2cPkRvOwor5p2ePktvOwor5p2fPlNva3U7CivmnaA+S291Owor5p2hPkpvdTsKK+adpT5SYWk7Civmnao+QnlvdTsKK+adrT5Lb3U7Civmna8+SGFpOwor5p2wPktldHN1Owor5p2xPlRvdTsKK+adsj5Lb3U7CivmnbM+WW91Owor5p21PlNobzsKK+adtz5IYTsKK+advD5DaG87Civmnb4+U2hvdTsKK+advz5IYW47CivmnoU+S2VpOwor5p6HPkhpOwor5p6JPk91Owor5p6LPkhvdTsKK+aejD5GdW47CivmnpA+U2VraTsKK+aelT5DaGluOwor5p6XPlJpbjsKK+aemj5NYWk7Civmnpw+S2E7Civmnp0+U2hpOwor5p6iPlN1dTsKK+aepj5SbzsKK+aeqT5TaG91Owor5p6vPktvOwor5p6zPktpOwor5p60PkthaTsKK+aetj5LYTsKK+aetz5LYTsKK+aeuD5LdTsKK+aeuT5Ib3U7Civmn4E+VGE7Civmn4Q+SGVpOwor5p+GPlJvdTsKK+afij5TaHV1Owor5p+OPkZ1Owor5p+PPkhha3U7Civmn5A+Qm91Owor5p+RPkthbjsKK+afkz5TZW47Civmn5Q+Tnl1dTsKK+afmD5TaGE7Civmn5o+WXV1Owor5p+dPlRha3U7Civmn54+U2FrdTsKK+afoj5UZWk7Civmn6Q+U2E7Civmn6c+S287Civmn6k+S3l1dTsKK+afrD5LYW47Civmn64+VG90c3U7Civmn68+S2E7Civmn7E+Q2h1dTsKK+afsz5SeXV1Owor5p+0PlNhaTsKK+aftT5TYWt1Owor5p+7PlNhOwor5p++Pkt5dXU7Civmn78+U2hpOwor5qCEPkVpOwor5qCTPlNlbjsKK+aglj5TZWk7CivmoJc+Uml0c3U7CivmoJ4+S2FuOwor5qChPktvdTsKK+agoj5IYWt1Owor5qCpPkt1Owor5qCqPkNodTsKK+agqz5Tb247CivmoLI+R291Owor5qC0PlNlbjsKK+aguD5LYWt1Owor5qC5PktvbjsKK+agvD5Lb3U7CivmoL0+U2FpOwor5qGAPktldHN1Owor5qGBPktvdTsKK+ahgj5LZWk7CivmoYM+VG91Owor5qGGPkt5b3U7CivmoYg+QW47CivmoY0+S287CivmoY4+U2hpdHN1Owor5qGQPkRvdTsKK+ahkT5Tb3U7CivmoZM+S2FuOwor5qGUPktpdHN1Owor5qGZPlU7CivmoZw+T3U7CivmoZ8+U2FuOwor5qGjPlRvdTsKK+ahpz5LYWk7CivmobQ+RnU7CivmobY+VG91Owor5qG3Pktha3U7Civmob4+S3VuOwor5qG/PkthbjsKK+aigT5SeW91Owor5qKDPlRlaTsKK+aihT5CYWk7Civmoo0+U291Owor5qKPPktva3U7CivmopM+U2hpOwor5qKUPlNoaTsKK+ailz5Lb3U7Civmops+RGE7Civmop0+Sm91Owor5qKfPkt5b3U7CivmoqA+UnlvOwor5qKiPlNob3U7CivmoqY+TXU7Civmoqc+R287Civmoqg+Umk7Civmoq0+U2E7Civmoq8+VGVpOwor5qKwPkthaTsKK+aisT5Lb247CivmorM+U287CivmorU+RnV1Owor5qK2PkJpOwor5qK5PkJpbjsKK+aivD5Ub3U7Civmo4Q+S2k7Civmo4Y+UmluOwor5qOJPk1lbjsKK+ajij5LaTsKK+ajiz5LaTsKK+ajjT5Lb247Civmo5I+Qm91Owor5qOUPktvbjsKK+ajlT5TaHU7Civmo5c+U291Owor5qOYPkt5b2t1Owor5qOaPkhvdTsKK+ajnz5Ub3U7Civmo6A+VG91Owor5qOhPktvdTsKK+ajoz5UZWk7Civmo6c+U2FuOwor5qOuPlNoaW47Civmo68+SmluOwor5qOyPlNlaTsKK+ajuT5Ub3U7Civmo7o+S2FuOwor5qSAPldhbjsKK+akgT5LYWt1Owor5qSEPlNldHN1Owor5qSFPkk7CivmpIg+S2lrdTsKK+akiz5SeW91Owor5qSMPktvdTsKK+akjT5TaG9rdTsKK+akjj5Uc3VpOwor5qSPPkE7CivmpJI+U2hvdTsKK+aknD5LZW47CivmpKI+S2FpOwor5qSmPktlbjsKK+aksD5ZYTsKK+aktD5UYW47CivmpLY+U2h1Owor5qS5PkNoaW47CivmpL0+VGVuOwor5qS/PkNoaW47CivmpYo+WW91Owor5qWTPkZ1dTsKK+allD5TZXRzdTsKK+allT5EYTsKK+almT5Cb3U7CivmpZo+U287CivmpZw+S287CivmpZ0+UmVuOwor5qWePlJvdTsKK+aloD5OYW47CivmpaE+WXU7CivmpaI+U2h1dTsKK+alqj5Zb3U7Civmpas+U2h1dTsKK+alrT5HeW91Owor5qWuPkNobzsKK+alrz5KdW47CivmpbM+QmFpOwor5qW0PlRlaTsKK+altT5Hb2t1Owor5qW3PkthaTsKK+aluD5TaHV1Owor5qW5PkVpOwor5qW8PlJvdTsKK+alvT5HYWt1Owor5qaCPkdhaTsKK+amjj5LYTsKK+amkT5GdTsKK+amlD5Sb3U7CivmppU+WW91Owor5qabPlNoaW47Civmppw+Qm91Owor5qagPkJlaTsKK+ampz5IaTsKK+amrj5FaTsKK+amsT5TdWk7CivmprI+T3RzdTsKK+amtD5SeXV1Owor5qa7PlRvdTsKK+amvj5Lb3RzdTsKK+amvz5LaTsKK+angT5Lb3U7Civmp4M+SGFuOwor5qeHPlRlbjsKK+anij5TYWt1Owor5qeLPktvdTsKK+anjD5Uc3VpOwor5qeNPlNvdTsKK+anjj5TYTsKK+ankD5LYWk7Civmp5M+S291Owor5qeYPllvdTsKK+anmT5UZW47Civmp50+VG91Owor5qeePlJvdTsKK+anpz5TYW47Civmp6g+S2FrdTsKK+anqz5UYW47Civmp60+U2h1a3U7Civmp7I+S29rdTsKK+anuT5Lb3U7Civmp7s+S2k7Civmp70+U291Owor5qe/PktpbjsKK+aogj5HYWt1Owor5qiFPlNob3U7CivmqIo+SGFuOwor5qiLPlRvdTsKK+aojD5LYW47CivmqJI+TWl0c3U7CivmqJM+Um91Owor5qiUPlNvdTsKK+aolz5DaG87CivmqJk+SHlvdTsKK+aomz5LeXV1Owor5qiePlN1dTsKK+aonz5TaG91Owor5qihPk1vOwor5qiiPkJva3U7CivmqKM+WW91Owor5qipPktlbjsKK+aoqj5PdTsKK+aotT5TaG91Owor5qi2PlNhaTsKK+aouD5Cb2t1Owor5qi5Pkp1Owor5qi6PkthOwor5qi9PlNvbjsKK+aphD5LYW47CivmqYc+WmVpOwor5qmIPkRvdTsKK+apiz5LeW91Owor5qmYPktpdHN1Owor5qmZPlRvdTsKK+apnz5LaTsKK+apoT5TaG91Owor5qmiPkRhOwor5qmmPlRvdTsKK+apuD5TaG91Owor5qm/Pkt5b3U7CivmqoA+VGFuOwor5qqEPkdla2k7Civmqo0+WW9rdTsKK+aqjj5HbzsKK+aqkD5FbjsKK+aqlz5IYWt1Owor5qqcPkthaTsKK+aqoD5LZWk7CivmqqI+S2VuOwor5qqjPlNob3U7Civmqqo+UmVraTsKK+aqrD5Cb3U7Civmqq4+VG91Owor5qqzPkJpbjsKK+aquD5OZWk7Civmqrs+S2FuOwor5quBPk1pdHN1Owor5quCPlRvdTsKK+argz5LaTsKK+arkT5SYWk7Civmq5M+Um87Civmq5o+UnlvOwor5qubPlNoaXRzdTsKK+arnj5FbjsKK+arnz5SZWtpOwor5quoPlJvOwor5quqPlJla2k7Civmq7o+UmVpOwor5qu7Pk91Owor5qyEPlJhbjsKK+ashT5LeW87CivmrIo+S2VuOwor5qySPlJhbjsKK+aslj5SYW47CivmrJ0+VXRzdTsKK+asoD5LZXRzdTsKK+asoT5KaTsKK+asoz5Hb247CivmrKc+T3U7CivmrLI+WW9rdTsKK+astz5LaTsKK+asuD5BaTsKK+asuT5JOwor5qy6PkdpOwor5qy9PktpbjsKK+asvj5LYW47CivmrYM+U291Owor5q2HPktldHN1Owor5q2JPktlbjsKK+atjD5LYTsKK+atjj5UYW47CivmrZA+T3U7CivmrZM+S2FuOwor5q2UPkt5bzsKK+atmT5LeXV1Owor5q2bPkthbjsKK+atnz5ZbzsKK+atoT5LYW47CivmraI+U2hpOwor5q2jPlNlaTsKK+atpD5TaGk7CivmraY+QnU7Civmrak+SG87Civmrao+V2FpOwor5q2vPlNoaTsKK+atsz5TZWk7CivmrbQ+UmVraTsKK+atuD5LaTsKK+atuT5HYXRzdTsKK+atuz5TaGk7Civmrb8+Qm90c3U7CivmroA+WW91Owor5q6DPllvdTsKK+auhD5UZW47CivmroY+VGFpOwor5q6JPkp1bjsKK+auij5TaHU7Civmros+WmFuOwor5q6NPkh5b3U7CivmrpU+RnV1Owor5q6WPlNob2t1Owor5q6YPlphbjsKK+aunj5JbjsKK+aupD5TaG91Owor5q6qPkVpOwor5q6rPlRhbjsKK+aurz5IaW47CivmrrE+U2VuOwor5q6yPlNlbjsKK+ausz5TaHU7CivmrrQ+T3U7CivmrrU+RGFuOwor5q63PkluOwor5q66PlNhdHN1Owor5q67Pktha3U7Civmrrw+S2FrdTsKK+auvz5UZW47Civmr4A+S2k7Civmr4U+S2k7Civmr4Y+T3U7Civmr4s+QnU7Civmr40+Qm87Civmr44+TWFpOwor5q+SPkRva3U7Civmr5M+SWt1Owor5q+UPkhpOwor5q+YPkhpOwor5q+bPk1vdTsKK+avqz5Lb3U7Civmr6w+S3l1dTsKK+avrz5UYW47Civmr7M+WmVpOwor5rCIPlNlbjsKK+awjz5TaGk7CivmsJE+TWluOwor5rCTPkJvdTsKK+awlD5LaTsKK+awlz5LaTsKK+awmz5GdW47CivmsKM+S2k7CivmsKQ+SW47CivmsLQ+U3VpOwor5rC3Pkh5b3U7CivmsLg+RWk7CivmsL4+SGFuOwor5rGAPlRlaTsKK+axgT5KdXU7CivmsYI+S3l1dTsKK+axjj5IYW47CivmsZA+U2VraTsKK+axlT5TYW47CivmsZc+S2FuOwor5rGaPk87CivmsZ0+Sm87CivmsZ4+S291Owor5rGfPktvdTsKK+axoD5DaGk7Civmsag+QmVraTsKK+axqj5PdTsKK+axsD5UYTsKK+axsj5LeXV1Owor5rGzPkhlbjsKK+axuj5LZXRzdTsKK+axvT5LaTsKK+axvj5GdW47CivmsoE+U2hpbjsKK+aygj5LaTsKK+aygz5Zb2t1Owor5rKIPkNoaW47Civmsow+VG9uOwor5rKNPkdvOwor5rKQPkJva3U7CivmspI+Qm90c3U7CivmspM+VG91Owor5rKWPkNodXU7Civmspk+U2E7Civmspo+U2hpOwor5rKbPkhhaTsKK+ayoT5Cb3RzdTsKK+ayoj5UYWt1Owor5rKrPk1hdHN1Owor5rKuPlNobzsKK+aysT5UYTsKK+aysz5LYTsKK+ayuD5GdXRzdTsKK+ayuT5ZdTsKK+ayuj5UZW47Civmsrs+Smk7Civmsrw+U2hvdTsKK+ayvT5LbzsKK+ayvj5UZW47Civmsr8+RW47Civms4E+S3lvdTsKK+azhD5FaTsKK+azhT5TaHV1Owor5rOJPlNlbjsKK+azij5IYWt1Owor5rOMPkhpdHN1Owor5rOTPk91Owor5rOVPkhvdTsKK+azlz5TaGk7Civms5k+SG91Owor5rObPkhhbjsKK+aznT5TbzsKK+azoT5Ib3U7Civms6I+SGE7Civms6M+S3l1dTsKK+azpT5EZWk7Civms6g+Q2h1dTsKK+azqj5SdWk7Civms68+QmluOwor5rOwPlRhaTsKK+azsT5PdTsKK+azsz5FaTsKK+a0iz5Zb3U7CivmtIw+UmV0c3U7CivmtJI+U2VpOwor5rSXPlNlbjsKK+a0mT5TaHU7CivmtJs+UmFrdTsKK+a0nj5Eb3U7CivmtJ8+STsKK+a0pT5TaGluOwor5rSpPkVpOwor5rSqPktvdTsKK+a0qz5LeW9rdTsKK+a0sj5TaHV1Owor5rSzPkpvOwor5rS1PlNodW47CivmtLY+S3lvdTsKK+a0uD5Lb3U7CivmtLs+S2F0c3U7CivmtL0+S291Owor5rS+PkhhOwor5rWBPlJ5dXU7CivmtYQ+Sm91Owor5rWFPlNlbjsKK+a1mT5TZXRzdTsKK+a1mj5TaHVuOwor5rWcPkhpbjsKK+a1oz5LYW47CivmtaQ+S291Owor5rWmPkhvOwor5rWpPktvdTsKK+a1qj5Sb3U7Civmtaw+Umk7Civmta4+RnU7CivmtbQ+WW9rdTsKK+a1tz5LYWk7Civmtbg+U2hpbjsKK+a1uT5TaG91Owor5raFPk5ldHN1Owor5raIPlNob3U7Civmtow+WXV1Owor5raOPlNlbjsKK+a2kz5LZW47CivmtpU+VGVpOwor5raZPlJ1aTsKK+a2mz5Ub3U7Civmtpw+VG9rdTsKK+a2rz5HYWk7CivmtrI+RWtpOwor5ra1PkthbjsKK+a2uD5LbzsKK+a2vD5SeW91Owor5reAPlRlbjsKK+a3hT5TZWtpOwor5reGPktvdTsKK+a3hz5LaTsKK+a3iz5SaW47Civmt4w+U2hvdTsKK+a3kT5TaHVrdTsKK+a3kj5TZWk7Civmt5U+UmlrdTsKK+a3mD5Ub3U7Civmt5k+U291Owor5reePlNob3U7Civmt6E+VGFuOwor5rekPllvOwor5remPkthbjsKK+a3qD5Kb3U7Civmt6o+UmluOwor5rerPkluOwor5resPlNhaTsKK+a3rj5XYWk7Civmt7E+U2hpbjsKK+a3sz5TaHVuOwor5re1PkVuOwor5re3PktvbjsKK+a3uT5FbjsKK+a3uj5TZW47Civmt7s+VGVuOwor5riFPlNlaTsKK+a4hz5LYXRzdTsKK+a4iD5TYWk7CivmuIk+U2hvdTsKK+a4ij5FbjsKK+a4iz5KdXU7CivmuJM+S2VpOwor5riVPkVuOwor5riZPkthbjsKK+a4mj5TaG87CivmuJs+R2VuOwor5ridPll1Owor5rifPlRlaTsKK+a4oD5LeW87CivmuKE+VG87CivmuKM+U2E7CivmuKQ+Qm90c3U7CivmuKU+QWt1Owor5rimPkthOwor5ripPk9uOwor5rirPlNldHN1Owor5risPlNva3U7CivmuK0+STsKK+a4rj5LYTsKK+a4rz5Lb3U7CivmuLg+WXV1Owor5ri6PkJ5b3U7CivmuL4+S29uOwor5rmDPkhhaTsKK+a5ij5Tb3U7CivmuY0+VGFuOwor5rmOPkJlbjsKK+a5lj5LbzsKK+a5mD5TaG91Owor5rmbPlRhbjsKK+a5nz5Lb3U7Civmuac+WXV1Owor5rmrPlNob3U7Civmua4+SW47Civmua8+VG91Owor5rmyPkthbjsKK+a5tj5TZW47Civmub4+V2FuOwor5rm/PlNoaXRzdTsKK+a6gD5NYW47CivmuoI+UmF0c3U7Civmuow+SGF0c3U7Civmuo8+VG91Owor5rqQPkdlbjsKK+a6lj5KdW47Civmupg+S291Owor5rqcPlJ5dXU7Civmup0+S291Owor5rqfPk1laTsKK+a6oj5JdHN1Owor5rqlPkhvOwor5rqqPktlaTsKK+a6rz5TbzsKK+a6sj5Tb3U7CivmurY+WW91Owor5rq3PktvbjsKK+a6uj5EZWtpOwor5rq9Pkpva3U7Civmu4I+Qm91Owor5ruEPlNvdTsKK+a7hT5NZXRzdTsKK+a7iT5Lb3U7Civmu4s+Smk7Civmu4w+RGVraTsKK+a7kT5LYXRzdTsKK+a7kz5TYWk7Civmu5Q+VG91Owor5ruVPlRvdTsKK+a7nT5Tb3U7Civmu54+VGFpOwor5rusPktvOwor5ruvPlRhaTsKK+a7sj5TaGluOwor5ru0PlRla2k7Civmu7c+Um87Civmu7g+S287Civmu74+S29uOwor5ru/Pk1hbjsKK+a8gT5SeW91Owor5ryCPkh5b3U7CivmvIY+U2hpdHN1Owor5ryJPlJva3U7CivmvI8+Um91Owor5ryRPkdhaTsKK+a8kz5SaTsKK+a8lD5FbjsKK+a8lT5Tb3U7CivmvKA+QmFrdTsKK+a8oj5LYW47CivmvKM+UmFuOwor5ryrPk1hbjsKK+a8rD5TaGk7CivmvLE+U291Owor5ryyPkNob3U7CivmvLg+WmVuOwor5ry+PllvdTsKK+a8vz5TaG91Owor5r2BPkVpOwor5r2FPkthbjsKK+a9lD5LZXRzdTsKK+a9mD5IYW47CivmvZs+U2VuOwor5r2cPlNlbjsKK+a9nz5TZWtpOwor5r2kPkp1bjsKK+a9pj5Sb3U7Civmva0+VGFuOwor5r2uPkNob3U7Civmva8+SmluOwor5r2wPkthaTsKK+a9tD5DaG87Civmvbg+U2FuOwor5r26PlNhbjsKK+a9vD5Eb3U7CivmvoA+SnV1Owor5r6BPkp1dTsKK+a+gj5DaG91Owor5r6EPkNob3U7CivmvoY+R3lvdTsKK+a+jj5Ib3U7CivmvpE+Unl1dTsKK+a+lz5LYW47CivmvqE+U291Owor5r6jPkthbjsKK+a+pD5UYWt1Owor5r6qPlJlaTsKK+a+sT5UZW47CivmvrM+SWt1Owor5r65PlRhbjsKK+a/gD5HZWtpOwor5r+BPkRha3U7Civmv4I+UmVuOwor5r+DPk5vdTsKK+a/hj5GdW47Civmv5Q+RGVpOwor5r+VPlNoaXRzdTsKK+a/mD5OZWk7Civmv58+U2FpOwor5r+gPkdvdTsKK+a/oT5KdTsKK+a/pD5Ub3U7Civmv6s+UmFuOwor5r+sPlNodW47Civmv64+SG9rdTsKK+a/rz5UYWt1Owor5r+xPkhpbjsKK+a/sz5TZW47Civmv7Y+S2F0c3U7Civmv7o+U2VuOwor5r++PlJ5bzsKK+eAgT5Zb3U7CivngIk+U2hhOwor54CLPlNoaW47CivngI8+Unl1dTsKK+eAkT5CYWt1Owor54CVPkhpbjsKK+eAmD5SbzsKK+eAmj5LYW47CivngJs+RWk7CivngJ0+UmVraTsKK+eAnj5Kb3U7CivngJ8+U2hvdTsKK+eApj5DaG87CivngKc+U291Owor54CsPlJhaTsKK+eAsD5CaTsKK+eAsj5SZW47CivngL4+UmFuOwor54GMPkthbjsKK+eBkT5TYWk7CivngZg+RGFuOwor54GjPldhbjsKK+eBqz5LYTsKK+eBrz5Ub3U7CivngbA+S2FpOwor54G4Pkt5dXU7Civngbw+U2hha3U7Civngb0+U2FpOwor54KJPlJvOwor54KKPlN1aTsKK+eCjj5FbjsKK+eCkj5Tb3U7Civngpk+U2hhOwor54KsPktvOwor54KtPlRhbjsKK+eCrj5Ib3U7Civngq8+S2VpOwor54KzPkhlaTsKK+eCuD5TYWt1Owor54K5PlRlbjsKK+eCuj5JOwor54OIPlJldHN1Owor54OLPktvdTsKK+eDjz5VOwor54OZPlJha3U7Civng50+Sm91Owor54OfPkVuOwor54OxPktlaTsKK+eDuT5Ib3U7Civng70+SG91Owor54SJPkVuOwor54SUPkVuOwor54SZPkhvdTsKK+eEmj5GdW47CivnhJw+S29uOwor54ShPk11Owor54SmPlNob3U7CivnhLY+WmVuOwor54S8PlNob3U7CivnhYk+UmVuOwor54WMPktvdTsKK+eFjj5TZW47CivnhZU+S2k7CivnhZY+RGFuOwor54WZPkVuOwor54WiPktlaTsKK+eFpD5CYWk7CivnhaU+S2FuOwor54WmPkt1Owor54WnPlNob3U7Civnhak+SGFuOwor54WsPllvdTsKK+eFrj5TaGE7Civnhb0+U2VuOwor54aEPlNva3U7Civnhog+S2k7Civnhoo+WXV1Owor54aPPkt1bjsKK+eGlD5Zb3U7CivnhpU+S291Owor54aZPktpOwor54afPkp1a3U7Civnhqg+STsKK+eGrD5Hb3U7CivnhrE+TmV0c3U7Civnhrk+S2k7Civnhr4+U2hpOwor54eDPk5lbjsKK+eHiD5Ub3U7Civnh4k+VG9uOwor54eOPlJ5b3U7Civnh5A+UmluOwor54eSPlNob3U7Civnh5Q+SGFuOwor54eVPkVuOwor54eXPlJhbjsKK+eHnz5FaTsKK+eHoD5Ja3U7Civnh6U+U291Owor54emPlNhbjsKK+eHpz5TdWk7Civnh6w+S2k7Civnh60+U2hva3U7Civnh64+U2hvdTsKK+eHtT5UYXRzdTsKK+eHuT5TZW47Civnh7s+S3VuOwor54e8PkppbjsKK+eHvz5Zb3U7CivniIY+QmFrdTsKK+eIjT5TaGFrdTsKK+eIkD5SbzsKK+eImz5SYW47CivniKg+U2FuOwor54iqPlNvdTsKK+eIrD5IYTsKK+eIrT5Tb3U7CivniLA+RW47CivniLI+STsKK+eItT5TaGFrdTsKK+eItj5GdTsKK+eIuj5ZYTsKK+eIuz5Lb3U7CivniLw+U2hvOwor54i9PlNvdTsKK+eIvj5KaTsKK+eIvz5TaG91Owor54mAPlNvdTsKK+eJhj5TaG91Owor54mHPkhlbjsKK+eJiD5IYW47CivniYs+U2VuOwor54mMPkhhaTsKK+eJkj5DaG91Owor54mYPlRva3U7CivniZk+R2E7CivniZs+R3l1dTsKK+eJnT5IaW47CivniZ8+Qm91Owor54mhPkJvOwor54miPlJvdTsKK+eJpz5Cb2t1Owor54mpPk1vdHN1Owor54myPlNlaTsKK+eJtD5UZWk7Civnibk+VG9rdTsKK+eJvT5LZW47Civnib4+R287CivnioA+U2VpOwor54qBPlJpOwor54qCPlJpOwor54qHPkhvbjsKK+eKkj5Lb3U7CivnipY+UmFrdTsKK+eKoD5HaTsKK+eKoj5Ub2t1Owor54qnPkdpOwor54qsPktlbjsKK+eKrz5IYW47CivnirI+U2FpOwor54q2PkpvdTsKK+eKuT5ZdXU7Civni4I+S3lvdTsKK+eLgz5KdXU7Civni4Q+VGVraTsKK+eLhj5DaHV1Owor54uOPktvdTsKK+eLkD5LbzsKK+eLkj5IaTsKK+eLlz5Lb3U7Civni5k+U2hvOwor54ubPkhha3U7Civni6A+R2FuOwor54uhPktvdTsKK+eLoj5LYWt1Owor54upPlNodTsKK+eLrD5Eb2t1Owor54utPkt5b3U7Civni7c+S2VuOwor54u4PlJpOwor54u5Pkt5b3U7Civni7w+Um91Owor54u9PkhhaTsKK+eMij5HZWk7CivnjJY+U2hvdTsKK+eMlz5JOwor54ybPk1vdTsKK+eMnD5TYWk7CivnjJ0+U290c3U7CivnjJ8+UnlvdTsKK+eMpT5XYWk7CivnjKk+U2VpOwor54yqPkNobzsKK+eMqz5CeW91Owor54yuPktlbjsKK+eMrz5UYW47CivnjLQ+S291Owor54y2Pll1dTsKK+eMtz5ZdXU7CivnjL4+S2F0c3U7CivnjL8+RW47CivnjYQ+R29rdTsKK+eNhT5TaGk7CivnjY4+U2hvdTsKK+eNjz5CYWt1Owor542XPktldHN1Owor542jPkp1dTsKK+eNqD5Eb2t1Owor542qPkthaTsKK+eNsD5Eb3U7CivnjbI+S2FrdTsKK+eNtT5SeW91Owor5424Pkp1dTsKK+eNuj5EYXRzdTsKK+eNuz5LZW47CivnjoQ+R2VuOwor546HPlJpdHN1Owor546JPkd5b2t1Owor546LPk91Owor546WPkt5dXU7Civnjqk+R2FuOwor546yPlJlaTsKK+eOsz5UYWk7Civnjrs+SGE7Civnj4A+SGFrdTsKK+ePgj5LYTsKK+ePiD5LYTsKK+ePij5TYW47Civnj40+Q2hpbjsKK+ePjj5DaGluOwor54+ePlJha3U7Civnj6A+U2h1Owor54+lPkppOwor54+qPktlaTsKK+ePrT5IYW47Civnj64+SGFpOwor54+xPkVpOwor54+4PkdvOwor54++PkdlbjsKK+eQgz5LeXV1Owor55CFPlJvdTsKK+eQhj5SaTsKK+eQiT5SeXV1Owor55CiPlRha3U7CivnkKU+S287CivnkLI+SGFpOwor55CzPlJpbjsKK+eQtD5LaW47CivnkLU+Qmk7CivnkLY+SGE7CivnkLo+SG91Owor55C/PktvbjsKK+eRgT5Cb3U7CivnkZU+S2E7CivnkZk+RG91Owor55GaPktvOwor55GbPkVpOwor55GcPll1Owor55GePlp1aTsKK+eRnz5TaGl0c3U7CivnkaA+Unl1dTsKK+eRoz5TYTsKK+eRpD5Zb3U7Civnkak+RWk7Civnkao+QmE7Civnka8+Um91Owor55GwPkthaTsKK+eRsz5TYTsKK+eRtj5Zb3U7Civnkb4+S2luOwor55KDPlJpOwor55KLPlNob3U7Civnkp4+SGFrdTsKK+eSoj5SeXV1Owor55KnPkhla2k7CivnkrA+S2FuOwor55K9PkppOwor55OKPktlaTsKK+eTjz5Sb3U7Civnk5Q+RWk7Civnk5w+S2E7Civnk6A+S287Civnk6I+SHlvdTsKK+eToz5CZW47Civnk6Y+R2E7Civnk64+T3U7Civnk7Y+SGVpOwor55O3PlNoaTsKK+eUgz5TaHV1Owor55SEPktlbjsKK+eUjD5PdTsKK+eUjT5Cb3U7CivnlI4+U2VuOwor55SRPlNvdTsKK+eUkz5IZWtpOwor55SVPk91Owor55SYPkthbjsKK+eUmj5TaGluOwor55ScPlRlbjsKK+eUnj5TaG91Owor55SfPlNlaTsKK+eUoz5TYW47CivnlKU+U2VpOwor55SmPlNvOwor55SoPllvdTsKK+eUqz5IbzsKK+eUrD5Zb3U7CivnlLA+RGVuOwor55SxPll1dTsKK+eUsj5Lb3U7CivnlLM+U2hpbjsKK+eUtz5EYW47CivnlLg+VGVuOwor55S6PkNob3U7CivnlLs+R2E7CivnlLw+Q2hvdTsKK+eVhD5SeXV1Owor55WGPkhvOwor55WJPkZ1Owor55WKPktvdTsKK+eViz5UZW47CivnlYw+S2FpOwor55WNPkthaTsKK+eVjz5JOwor55WUPkhhbjsKK+eVmT5SeXV1Owor55WaPkhvbjsKK+eVmz5TaGluOwor55WcPkNoaWt1Owor55WdPkhvOwor55WiPkhpdHN1Owor55WkPlNoaTsKK+eVpT5SeWFrdTsKK+eVpj5LZWk7Civnlac+Unlha3U7Civnlao+QmFuOwor55WrPktha3U7Civnla0+WW87CivnlbA+STsKK+eVsz5Kb3U7CivnlbQ+Q2h1dTsKK+eVtj5Ub3U7Civnlbc+VGV0c3U7Civnlbg+S2k7Civnlb8+S2k7CivnloI+Sm91Owor55aGPkt5b3U7Civnloc+Q2h1dTsKK+eWiT5Kb3U7Civnloo+Sm91Owor55aLPlNvOwor55aOPlNvOwor55aPPlNvOwor55aRPkdpOwor55aUPkNob3U7Civnlpo+S3l1dTsKK+eWnT5TYW47CivnlqM+WXV1Owor55alPkthaTsKK+eWqz5Fa2k7CivnlrE+SG91Owor55ayPkhpOwor55azPkthbjsKK+eWtT5TaGk7Civnlrg+VGFuOwor55a5PlNoaW47Civnlrw+VG91Owor55a9PlNobzsKK+eWvj5TaGl0c3U7Civnl4I+S2E7Civnl4M+S2VuOwor55eFPkJ5b3U7Civnl4c+U2hvdTsKK+eXij5TZW47Civnl40+STsKK+eXkj5Zb3U7Civnl5Q+Smk7Civnl5U+S29uOwor55eYPlRvdTsKK+eXmT5LZWk7Civnl5s+VHM7Civnl54+SGk7Civnl6I+Umk7Civnl6M+U2hpOwor55epPlNvdTsKK+eXsD5UYW47Civnl7I+TWE7Civnl7M+UmluOwor55e0PkNoaTsKK+eXuj5IaTsKK+eXvD5LbzsKK+eXvj5BOwor55e/Pkk7CivnmIE+U3VpOwor55iJPll1Owor55iLPkZ1dTsKK+eYjT5Zb3U7CivnmJ8+T247CivnmKA+U2VraTsKK+eYoT5Tb3U7CivnmKI+SGFuOwor55ikPlJ5dXU7CivnmKc+R3lha3U7CivnmLA+UnVpOwor55i0PlNob3U7CivnmLs+Um91Owor55mCPlJ5b3U7CivnmYY+Um91Owor55mHPkthbjsKK+eZiD5IYWk7CivnmYw+R2FuOwor55mSPll1Owor55mWPkhla2k7CivnmZg+UmVpOwor55mcPkRlbjsKK+eZoT5DaGk7CivnmaI+WW91Owor55mnPlJla2k7Civnmag+S2FrdTsKK+eZqT5SYWk7Civnmao+U2hha3U7Civnmaw+U2VuOwor55mwPllvdTsKK+eZsj5UZW47CivnmbY+SGF0c3U7Civnmbg+S2k7Civnmbo+SG90c3U7Civnmbs+VG91Owor55m8PkhvdHN1Owor55m9Pkhha3U7Civnmb4+SHlha3U7CivnmoA+SHl1dTsKK+eagz5Cb3U7CivnmoQ+VGVraTsKK+eahj5LYWk7Civnmoc+S291Owor55qIPktpOwor55qLPktvdTsKK+eajj5Lb3U7CivnmpA+S291Owor55qTPktvdTsKK+ealj5LYW47Civnmpk+U2VraTsKK+eamj5HYWk7Civnmq4+SGk7CivnmrA+SG91Owor55q0PlNodW47Civnmrc+S287Civnmrg+S3VuOwor55q5Pkt1bjsKK+eauj5TdXU7Civnmr8+QmFpOwor55uCPlU7Civnm4M+SGFpOwor55uGPkJvbjsKK+ebiD5FaTsKK+ebij5Fa2k7Civnm40+S291Owor55uSPktvdTsKK+eblj5HYWk7Civnm5c+VG91Owor55ubPlNlaTsKK+ebnD5Ub3U7Civnm54+U2FuOwor55ufPk1laTsKK+eboT5KaW47Civnm6M+S2FuOwor55ukPkJhbjsKK+ebpT5LYW47Civnm6c+Um87Civnm6o+VG91Owor55uuPk1va3U7Civnm7I+TW91Owor55u0PkNob2t1Owor55u4PlNob3U7Civnm7s+S2VpOwor55u+Pkp1bjsKK+ecgT5TZWk7CivnnIQ+QmVuOwor55yHPkJ5b3U7CivnnIg+VGFuOwor55yJPkJpOwor55yLPkthbjsKK+ecjD5LZW47CivnnJs+TWFpOwor55yePlNoaW47CivnnJ8+U2hpbjsKK+ecoD5NaW47CivnnKQ+VGVpOwor55ylPlNlaTsKK+ecpj5TZWk7CivnnKk+R2VuOwor55y3PktlbjsKK+ecuD5Cb3U7CivnnLo+Q2hvdTsKK+ecvD5HYW47CivnnYA+Q2hha3U7CivnnYc+VGVpOwor552aPkdhaTsKK+edmz5TZWk7CivnnaE+U3VpOwor552jPlRva3U7CivnnaU+SGVpOwor552mPkJva3U7Civnnag+R2VpOwor552rPlNob3U7Civnnbk+VG87Civnnb4+S291Owor552/PkVpOwor556LPlNoaW47Civnno4+S2F0c3U7CivnnpE+TWVpOwor556ePkJhbjsKK+eeoD5Eb3U7CivnnqU+QmV0c3U7Civnnqw+U2h1bjsKK+eerT5SeW91Owor556wPkthbjsKK+eesz5Eb3U7CivnnrY+S2k7Civnnrk+QWk7Civnnrs+U2VuOwor5568PktlbjsKK+eevT5LbzsKK+eevz5LdTsKK+efhz5Nb3U7Civnn40+S2FrdTsKK+eflz5DaGlrdTsKK+efmj5TaG9rdTsKK+efmz5NdTsKK+efnD5LaW47Civnn6I+U2hpOwor55+jPkk7Civnn6U+Q2hpOwor55+nPlNoaW47Civnn6k+S3U7Civnn60+VGFuOwor55+uPldhaTsKK+efrz5LeW91Owor55+zPlNoYWt1Owor55+8PktvdTsKK+eggj5TYTsKK+egjD5TZWk7CivnoJI+SGk7CivnoJQ+S2VuOwor56CVPlNhaTsKK+egoD5TaG87CivnoKU+U2hpOwor56CmPlNhaTsKK+egpz5DaGluOwor56CyPkhvdTsKK+egtD5IYTsKK+eguj5SZWk7CivnoL8+S291Owor56GFPktlaTsKK+ehnT5TaG91Owor56GrPlJ5dXU7Civnoaw+S291Owor56GvPktlbjsKK+ehvD5Ib3U7CivnooE+R287CivnooY+SGE7Civnooc+VGVpOwor56KMPlJva3U7Civnoo0+R2FpOwor56KOPlNhaTsKK+eikT5IaTsKK+eikz5UYWk7CivnopU+S2k7Civnopc+V2FuOwor56KaPkhhaTsKK+eioz5LZXRzdTsKK+eipz5IZWtpOwor56KpPlNla2k7Civnoqo+Q2hpbjsKK+eirz5Eb3U7CivnorU+U2VraTsKK+eiuj5LYWt1Owor56K8PkJhOwor56K+PlRlbjsKK+ejgT5KaTsKK+ejhT5Ib3U7Civno4Y+S2F0c3U7Civno4o+UmFpOwor56OLPlNhOwor56OQPkhhbjsKK+ejkT5HYWk7Civno5Q+VGFrdTsKK+ejmj5TZW47Civno6c+U2VraTsKK+ejqD5NYTsKK+ejrD5LZWk7Civno68+S2k7Civno7Q+VG91Owor56O9PktvdTsKK+ekgT5TaG91Owor56SHPklrdTsKK+ekjj5TbzsKK+ekkT5Ub3U7CivnpJI+R2k7CivnpJk+R2FpOwor56SmPktvdTsKK+ekqj5SZWk7CivnpKs+UmVraTsKK+ekrD5CYW47CivnpLo+U2hpOwor56S8PlJlaTsKK+ekvj5TaGE7CivnpYA+U2hpOwor56WBPktpOwor56WHPktpOwor56WIPktpOwor56WJPlNoaTsKK+elkD5ZdXU7CivnpZM+RnV0c3U7CivnpZU+SGk7CivnpZY+U287CivnpZc+U2hpOwor56WaPlNvOwor56WdPlNodWt1Owor56WePlNoaW47CivnpZ8+U3VpOwor56WgPlNoaTsKK+eloj5EZWk7CivnpaU+U2hvdTsKK+elqD5IeW91Owor56WtPlNhaTsKK+eltz5Ub3U7Civnpbo+S2k7Civnpb8+Um9rdTsKK+emgD5SaW47CivnpoE+S2luOwor56aEPlJva3U7CivnpoU+WmVuOwor56aKPktlaTsKK+emjT5LYTsKK+emjj5UZWk7Civnpo8+RnVrdTsKK+emnT5TaG9rdTsKK+empj5HeW87Civnpqc+S2k7Civnpqo+WmVuOwor56auPlJlaTsKK+emsD5EZWk7CivnprM+Sm91Owor56a5PlU7Civnpro+R3V1Owor56a9PktpbjsKK+emvj5LYTsKK+emvz5Ub2t1Owor56eAPlNodXU7Civnp4E+U2hpOwor56eJPkhlaTsKK+eniz5TaHV1Owor56eRPkthOwor56eSPkJ5b3U7Civnp5U+SGk7Civnp5g+SGk7Civnp58+U287Civnp6E+SGF0c3U7Civnp6M+TWF0c3U7Civnp6Q+U2hvdTsKK+enpj5TaGluOwor56enPk91Owor56epPkNoaXRzdTsKK+enrD5LeW87Civnp7A+U2hvdTsKK+enuz5JOwor56iAPktpOwor56iIPkthbjsKK+eoiz5UZWk7CivnqI0+U291Owor56iOPlplaTsKK+eolD5KaW47CivnqJc+SGFpOwor56iYPktpOwor56iZPkNob2t1Owor56iaPkNoaTsKK+eonD5SeW91Owor56ifPlJpbjsKK+eooD5DaHV1Owor56iuPlNodTsKK+eosT5TaG91Owor56iyPlRvdTsKK+eotz5TaG9rdTsKK+eouz5Ub3U7CivnqLw+S2E7CivnqL0+S2VpOwor56i+PktvdTsKK+eovz5Lb3U7CivnqYA+S29rdTsKK+epgj5TdWk7CivnqYM+WW91Owor56mGPkJva3U7CivnqYk+Q2hpOwor56mNPlNla2k7CivnqY4+RWk7CivnqY8+T247CivnqZA+U2h1dTsKK+eplz5TdWk7CivnqaE+U2hva3U7CivnqaI+QWk7CivnqaM+Sm91Owor56mpPk9uOwor56mrPktha3U7CivnqbA+Sm91Owor56m0PktldHN1Owor56m2Pkt5dXU7Civnqbk+S3l1dTsKK+epuj5LdXU7Civnqb0+U2VpOwor56m/PlNlbjsKK+eqgT5Ub3RzdTsKK+eqgz5TZXRzdTsKK+eqhD5TYWt1Owor56qIPllvdTsKK+eqkj5DaGl0c3U7CivnqpM+U291Owor56qVPkNob3U7CivnqpY+S291Owor56qXPlNvdTsKK+eqmD5LaW47Civnqp8+S3V0c3U7Civnqqk+S2E7Civnqqo+V2E7Civnqq4+S3l1dTsKK+eqrz5Zb3U7CivnqrA+WW91Owor56q2Pkt1Owor56q6PktpOwor56q/PlJ5dXU7Civnq4M+U291Owor56uEPlphbjsKK+erhT5LeW91Owor56uHPlRvdTsKK+eriD5Tb3U7Civnq4o+U2V0c3U7Civnq4s+Uml0c3U7Civnq5I+S2k7Civnq5k+VGFuOwor56uaPkNobzsKK+ernD5SeXV1Owor56udPkhlaTsKK+ernz5LZWk7Civnq6A+U2hvdTsKK+eroj5TaGk7Civnq6M+U2h1bjsKK+erpT5Eb3U7Civnq6Y+U2hvdTsKK+erqj5KdTsKK+errT5LZXRzdTsKK+errz5UYW47Civnq7Y+S3lvdTsKK+eruD5LZWk7Civnq7k+Q2hpa3U7Civnq7o+VG9rdTsKK+ervz5LYW47CivnrIQ+S2VpOwor56yGPkhhOwor56yIPkt5dXU7CivnrIo+U291Owor56yLPkp1bjsKK+esjz5Lb3RzdTsKK+eskT5TaG91Owor56yYPlNlbjsKK+esmT5Tb3U7CivnrJs+VGVraTsKK+esnj5DaGk7CivnrKA+Unl1dTsKK+espT5TaGk7CivnrKY+RnU7CivnrKg+SG9uOwor56ysPkRhaTsKK+essz5LYTsKK+estT5IYW47CivnrLY+U2hpOwor562FPlNlbjsKK+ethj5IaXRzdTsKK+etiD5LYXRzdTsKK+etiT5Ub3U7CivnrYs+S2luOwor562MPlNlbjsKK+etjT5KdW47CivnrY8+QmF0c3U7CivnrZA+S3lvdTsKK+etkT5DaGlrdTsKK+etkj5Ub3U7CivnrZQ+VG91Owor562WPlNha3U7CivnrZ0+U291Owor562lPkt5bzsKK+etpz5LZW47Civnraw+U2VpOwor562uPlNlaTsKK+etsD5TYWt1Owor562xPlNob3U7CivnrbQ+S3lvdTsKK+ettT5FbjsKK+etuj5LeW91Owor566GPkhlaTsKK+euhz5LYTsKK+euiz5TZW47Civnro0+S287Civnro8+U291Owor566SPlNvdTsKK+eulD5IYWt1Owor566VPktpOwor566XPlNhbjsKK+eumD5LaW47Civnrpk+RnVrdTsKK+eumj5TYXRzdTsKK+eunD5Lb3U7Civnrp0+S2FuOwor566fPktpbjsKK+euoT5LYW47Civnrqo+VGFuOwor566tPlNlbjsKK+eusT5TaG91Owor5660PlNoaW47Civnrrg+Q2hvOwor56+APlNldHN1Owor56+BPktvdTsKK+evhD5IYW47Civnr4Y+VGVuOwor56+HPkhlbjsKK+eviT5DaGlrdTsKK+eviz5LeW91Owor56+MPktvdTsKK+evjz5LYW47Civnr50+S291Owor56+gPlNob3U7Civnr6Q+VG9rdTsKK+evpT5SaXRzdTsKK+evpj5IZWk7Civnr6k+U2hpOwor56+tPlJvdTsKK+evsz5IaXRzdTsKK+evtj5FbjsKK+evtz5Ib3U7CivnsIA+U2FrdTsKK+ewhz5Tb3U7CivnsI0+Um91Owor57CRPlNhOwor57CSPlNhbjsKK+ewkz5TZW47CivnsJQ+U2E7CivnsJ8+VGVuOwor57ChPkthbjsKK+ewoz5LaTsKK+ewpz5Lb3U7CivnsKo+U2hpbjsKK+ewqz5TaG91Owor57C3PkVuOwor57C4PkhhOwor57C9PlNlbjsKK+ewvj5SZW47CivnsL8+Qm87CivnsYA+Q2h1dTsKK+exgz5SYW47CivnsYw+Q2h1dTsKK+exjT5TZWtpOwor57GQPlRvdTsKK+exlD5TdTsKK+exlj5TZW47CivnsZg+VG91Owor57GfPlJhaTsKK+exoD5Sb3U7CivnsaQ+U2VuOwor57GlPllha3U7Civnsaw+Umk7CivnsbM+QmVpOwor57KDPkhpOwor57KJPkZ1bjsKK+eyiz5TdWk7CivnspA+Um87CivnspI+Unl1dTsKK+eylT5IYWt1Owor57KXPlNvOwor57KYPk5lbjsKK+eymz5TaHVrdTsKK+eynz5ab2t1Owor57KhPlRvdTsKK+eyoj5TaGk7CivnsqQ+RXRzdTsKK+eypT5TaHVrdTsKK+eypz5TaG91Owor57KrPkppOwor57KuPlJ5b3U7CivnsrE+UnlvdTsKK+eysj5TYW47CivnsrM+S291Owor57K5PlN1aTsKK+eyvT5Tb3U7Civnsr4+U2VpOwor57OCPlNhbjsKK+ezhT5KdXU7Civns4o+S287Civns5I+SGk7Civns5Y+VG91Owor57OcPkJpOwor57OePkZ1bjsKK+eznz5Tb3U7Civns6A+S291Owor57OiPkJvOwor57OnPlJ5b3U7Civns68+RGE7Civns7I+UmVpOwor57O0PlRla2k7Civns7Y+Q2hvdTsKK+ezuD5TaGk7Civns7o+S3l1dTsKK+ezuz5LZWk7Civns74+S3l1dTsKK+e0gD5LaTsKK+e0gj5DaHV1Owor57SEPllha3U7CivntIU+S3U7CivntIY+VTsKK+e0ij5CaW47CivntIs+TW9uOwor57SNPlRvdTsKK+e0kD5DaHV1Owor57SUPlNodW47CivntJU+SGk7CivntJc+U2E7CivntJg+S291Owor57SZPlNoaTsKK+e0mj5LeXV1Owor57SbPkZ1bjsKK+e0nD5VbjsKK+e0oD5TbzsKK+e0oT5Cb3U7CivntKI+U2FrdTsKK+e0qz5TaGk7CivntKw+Q2h1dTsKK+e0rj5TYXRzdTsKK+e0rz5SdWk7CivntLA+U2VpOwor57SyPlNldHN1Owor57SzPlNoaW47CivntLU+Q2hvOwor57S5PlNob3U7CivntLo+S29uOwor57S/PlRhaTsKK+e1gj5TaHV1Owor57WDPkdlbjsKK+e1hD5TbzsKK+e1hT5LZWk7CivntYY+QmFuOwor57WLPktvdTsKK+e1jD5LZWk7CivntY4+S291Owor57WPPlNldHN1Owor57WQPktldHN1Owor57WWPktvdTsKK+e1mz5Kb3U7CivntZ4+S291Owor57WhPlJha3U7CivntaI+S2VuOwor57WjPkhvdTsKK+e1pj5LeXV1Owor57WoPkp1dTsKK+e1rj5KbzsKK+e1sT5Ub3U7CivntbI+U2hpOwor57WzPktvdTsKK+e1tT5LYWk7CivntbY+WmV0c3U7Civntbk+S2VuOwor57W9PlJ5bzsKK+e2iT5Ub3U7Civnto8+U3VpOwor57aTPktlaTsKK+e2mT5LZWk7Civntpo+Wm9rdTsKK+e2nD5Tb3U7Civntp8+UmVpOwor57aiPkNodXU7CivntqM+S2VuOwor57arPlNlbjsKK+e2rD5KdTsKK+e2rT5JOwor57auPktlaTsKK+e2rz5Ub3U7CivntrA+V2FuOwor57axPktvdTsKK+e2sj5Nb3U7CivntrQ+VGVpOwor57a1PlNhaTsKK+e2uD5SaW47Civntro+S2k7Civntrs+VGFuOwor57a9PlNoYWt1Owor57a+PlJ5b3U7Civntr8+TWVuOwor57eHPlNoaTsKK+e3ij5LaW47Civnt4s+SGk7Civnt48+U291Owor57eRPlJ5b2t1Owor57eSPlNobzsKK+e3mD5LYW47Civnt5o+U2VuOwor57ecPkJlbjsKK+e3nT5TaHV1Owor57eePlRhbjsKK+e3oD5UZWk7Civnt6E+QmluOwor57ekPlNldHN1Owor57eoPkhlbjsKK+e3qT5LYW47Civnt6w+TWVuOwor57evPkk7Civnt7I+QnlvdTsKK+e3tD5SZW47Civnt7s+Q2hpOwor57iBPkVuOwor57iEPkpvdTsKK+e4iT5TaGluOwor57iKPkVpOwor57iLPlRzdWk7CivnuJI+U2hpOwor57ibPkJha3U7CivnuJ4+S291Owor57ifPkpva3U7CivnuKE+U2FpOwor57iiPlRvdTsKK+e4oz5LZW47CivnuKY+SnV1Owor57irPkhvdTsKK+e4rj5TaHVrdTsKK+e4sT5KdXU7CivnuLI+UnVpOwor57i1PkJhbjsKK+e4tz5SdTsKK+e4uT5IeW91Owor57i6PlJlbjsKK+e4uz5CaTsKK+e4vT5Tb3U7CivnuL4+U2VraTsKK+e5gT5IYW47CivnuYM+SG91Owor57mGPkt5dXU7CivnuYo+U2VuOwor57mLPktlaTsKK+e5jT5TaHV1Owor57mUPlNob2t1Owor57mVPlplbjsKK+e5lj5TYW47CivnuZk+SGFuOwor57maPlJ5b3U7CivnuZ0+S2FuOwor57mePkpvdTsKK+e5pj5LeW91Owor57mnPlVuOwor57mpPkpvdTsKK+e5qj5LYWk7Civnua0+S2VuOwor57mwPlNvdTsKK+e5uT5Fa2k7Civnubs+SnU7Civnubw+S2VpOwor57m9PkhpbjsKK+e5vz5SYW47CivnuoI+U2FuOwor57qIPktldHN1Owor57qJPlNhbjsKK+e6jD5ab2t1Owor57qOPlNlbjsKK+e6jz5UZW47CivnupI+VGVuOwor57qTPkVpOwor57qUPlNhbjsKK+e6lj5TZW47Civnups+VG91Owor57qcPlJhbjsKK+e8tj5LYW47CivnvLg+S291Owor57y6PktldHN1Owor572FPkthOwor572MPk91Owor572NPlJhaTsKK+e9jj5UYW47CivnvZA+S2FuOwor572RPkJvdTsKK+e9lD5Cb3U7CivnvZU+S2FuOwor572YPkZ1Owor572fPktvOwor572gPkJpbjsKK+e9pz5TaGluOwor572oPkFuOwor572pPlRvdTsKK+e9qj5aYWk7Civnvas+S2VpOwor572uPkNoaTsKK+e9sD5CYXRzdTsKK+e9sj5TaG87CivnvbU+QmE7Civnvbc+SGk7Civnvbg+QmF0c3U7Civnvbk+Umk7CivnvoI+S2VuOwor576DPkJla2k7CivnvoU+UmE7CivnvoY+SGk7Civnvoc+S2k7Civnvog+S2k7Civnvoo+WW91Owor576MPkt5b3U7Civnvo4+Qmk7CivnvpQ+S291Owor576aPlJlaTsKK+e+nT5UZWk7Civnvp4+U2h1dTsKK+e+oz5HdW47CivnvqQ+R3VuOwor576oPlNlbjsKK+e+qT5HaTsKK+e+rj5Lb3U7Civnvq8+S2F0c3U7CivnvrI+R2k7CivnvrY+U2VuOwor5764PlJ1aTsKK+e+uT5Lb3U7Civnvr0+VTsKK+e/gT5PdTsKK+e/hT5TaGk7Civnv4Y+U3VpOwor57+KPllva3U7Civnv4w+WW9rdTsKK+e/kj5TaHV1Owor57+UPlNob3U7Civnv5U+S3l1dTsKK+e/oD5TdWk7Civnv6E+SGk7Civnv6Y+U2VuOwor57+pPkhlbjsKK+e/qz5HYW47Civnv7A+S2FuOwor57+zPkVpOwor57+5Pkd5b3U7Civnv7s+SG9uOwor57+8Pllva3U7CivogIA+WW91Owor6ICBPlJvdTsKK+iAgz5Lb3U7CivogIQ+TW91Owor6ICFPlNoYTsKK+iAhj5LaTsKK+iAiz5UZXRzdTsKK+iAjD5KaTsKK+iAkD5UYWk7CivogJI+UmFpOwor6ICVPktvdTsKK+iAlz5Nb3U7CivogJg+VW47CivogJk+SGE7CivogJw+U2hpOwor6IChPkpvOwor6ICoPkRvdTsKK+iAsz5KaTsKK+iAtj5ZYTsKK+iAuz5DaGk7CivogL0+VGFuOwor6IC/PktvdTsKK+iBhj5SZWk7CivogYo+UnlvdTsKK+iBkj5LYXRzdTsKK+iBlj5TZWk7CivogZg+SGVpOwor6IGaPlNodXU7CivogZ4+QnVuOwor6IGfPlNlaTsKK+iBoT5Tb3U7Civogag+UmVuOwor6IGvPlJlbjsKK+iBsD5Tb3U7CivogbI+U2VpOwor6IGzPlNob3U7CivogbQ+Q2hvdTsKK+iBtj5Kb3U7Civogbc+U2hva3U7Civogbk+RGVpOwor6IG9PkNob3U7Civogb4+Um91Owor6IG/Pkl0c3U7CivogoQ+STsKK+iChT5TaHVrdTsKK+iChj5TaGk7Civogoc+Q2hvdTsKK+iCiT5OaWt1Owor6IKLPlJva3U7Civogow+S2k7CivogpM+S291Owor6IKWPlNob3U7Civogpg+Q2h1dTsKK+iCmj5UbzsKK+iCmz5Lb3U7Civogp0+S2FuOwor6IKhPktvOwor6IKiPlNoaTsKK+iCpT5IaTsKK+iCqT5LZW47Civogqo+Qm91Owor6IKsPll1dTsKK+iCrT5Eb3RzdTsKK+iCrz5Lb3U7CivogrE+S291Owor6IKyPklrdTsKK+iCtD5Lb3U7Civogro+SGFpOwor6IODPkk7Civog4Q+Q2h1dTsKK+iDhj5UYW47Civog4w+SGFpOwor6IOOPlRhaTsKK+iDlj5IYW47Civog5k+U287Civog5o+SGFpOwor6IObPktvdTsKK+iDnT5DaGk7Civog54+SG91Owor6IOhPktvOwor6IOkPkluOwor6IOlPlNobzsKK+iDrz5LbzsKK+iDsT5Lb3U7Civog7Q+RG91Owor6IO4Pkt5b3U7Civog7w+SGVuOwor6IO9Pk5vdTsKK+iEgj5TaGk7CivohIU+S3lvdTsKK+iEhj5aZWk7CivohIc+S3lvdTsKK+iEiD5NeWFrdTsKK+iEiT5NeWFrdTsKK+iEij5TZWtpOwor6ISaPkt5YWt1Owor6ISbPktlaTsKK+iEoz5TaGluOwor6ISpPlNodXU7CivohK8+SG87CivohLE+RGF0c3U7CivohLM+Tm91Owor6IS5PkNob3U7CivohL4+SGk7CivohYY+VGVuOwor6IWLPkVraTsKK+iFjj5KaW47CivohZA+RnU7CivohZE+RnU7CivohZM+SGk7CivohZQ+S291Owor6IWVPldhbjsKK+iFnz5DaGl0c3U7CivohaU+U2VpOwor6IWmPk5vdTsKK+iFqz5TaG91Owor6IWuPlNhaTsKK+iFsD5Zb3U7CivohbE+S2VuOwor6IW0Pll1Owor6IW4PkNob3U7Civohbk+RnVrdTsKK+iFuj5TZW47Civohb8+VGFpOwor6IaAPkhvdTsKK+iGgj5SeW87CivohoM+T3RzdTsKK+iGiD5LYWt1Owor6IaKPkhha3U7Civoho8+S291Owor6IaTPkNob3U7CivohpU+S2FrdTsKK+iGmj5GdTsKK+iGnD5NYWt1Owor6IadPlNoaXRzdTsKK+iGoD5Lb3U7CivohqM+Q2hpdHN1Owor6IaoPkJvdTsKK+iGqT5KaTsKK+iGsD5IYW47CivohrM+U2VuOwor6Ia1PlN1aTsKK+iGuD5adWk7Civohro+WW91Owor6Ia9PlRhbjsKK+iGvj5LYWk7Civohr8+RG91Owor6IeAPkRlbjsKK+iHgj5IaTsKK+iHhj5Pa3U7Civoh4g+Um91Owor6IeJPlJlbjsKK+iHjT5TZWk7Civoh5E+RGF1Owor6IeTPlpvdTsKK+iHmD5Sb3U7Civoh5k+RW47Civoh5o+UnlvOwor6IefPlpvdTsKK+iHoD5SZW47Civoh6M+U2hpbjsKK+iHpT5HYTsKK+iHpz5ab3U7Civoh6g+UmluOwor6IeqPlNoaTsKK+iHrT5TaHV1Owor6IezPlNoaTsKK+iHtD5DaGk7Civoh7o+VGFpOwor6Ie7PlNoaW47Civoh7w+S3l1dTsKK+iHvj5ZdTsKK+iIgT5ZbzsKK+iIgj5TaG91Owor6IiFPkt5dXU7CivoiIc+WW87CivoiIg+S3lvdTsKK+iIiT5LeW87CivoiIo+S3l1dTsKK+iIjD5aZXRzdTsKK+iIjT5TaGE7CivoiI4+U2hhOwor6IiQPlNoaTsKK+iIkj5KbzsKK+iIlj5IbzsKK+iIlz5IbzsKK+iImD5LYW47CivoiJs+U2VuOwor6IicPlNodW47CivoiJ4+QnU7CivoiJ8+U2h1dTsKK+iIqT5TZW47CivoiKo+S291Owor6IirPkhvdTsKK+iIrD5IYW47CivoiK4+Um87CivoiLM+Q2hpa3U7CivoiLU+VGE7CivoiLY+SGFrdTsKK+iItz5LZW47CivoiLg+S2E7CivoiLk+U2VuOwor6ImAPkZ1Owor6ImHPlRlaTsKK+iJmD5Tb3U7CivoiZk+U291Owor6ImaPlNvdTsKK+iJnz5Eb3U7CivoiaI+U2hvdTsKK+iJpD5HaTsKK+iJpj5LYW47Civoiag+TW91Owor6ImqPlJvOwor6ImrPlJvOwor6ImuPktvbjsKK+iJrz5SeW91Owor6ImxPkthbjsKK+iJsj5TaG9rdTsKK+iJtj5FbjsKK+iJtz5FbjsKK+iJuD5Tb3U7Civoib4+R2FpOwor6IqLPlU7Civoio0+U2hha3U7CivoipI+Qm91Owor6IqZPkZ1Owor6IqdPlNoaTsKK+iKnz5TYW47CivoiqU+S2FpOwor6IqmPlJvOwor6IqrPkdlbjsKK+iKrD5GdW47Civoiq0+QmE7Civoiq8+U2hpbjsKK+iKsT5LYTsKK+iKsz5Ib3U7Civoirg+R2VpOwor6Iq5PktpbjsKK+iKuz5TdXU7Civoir0+R2E7Civoi4U+R2FpOwor6IuRPkVuOwor6IuSPlplbjsKK+iLkz5SZWk7Civoi5Q+VGFpOwor6IuXPkJ5b3U7Civoi5k+Unl1dTsKK+iLmz5LYTsKK+iLnD5Cb2t1Owor6IuePkhvdTsKK+iLnz5Lb3U7Civoi6E+STsKK+iLoz5LeW87Civoi6U+SmFrdTsKK+iLpj5LdTsKK+iLpz5DaG87Civoi6s+U2VuOwor6IuxPkVpOwor6IuzPlRvdTsKK+iLtD5TbzsKK+iLuT5IZWk7Civoi7o+TWFpOwor6Iu7PkZ1Owor6IyCPk1vOwor6IyDPkhhbjsKK+iMhD5LYTsKK+iMhT5Cb3U7CivojIY+Qm91Owor6IyJPk1hdHN1Owor6IyOPktlaTsKK+iMlj5LYWt1Owor6IyXPk1laTsKK+iMmD5SaTsKK+iMnD5TZW47CivojKM+R287CivojKg+U2hpOwor6IyrPkJvdTsKK+iMrz5GdWt1Owor6IyxPlNodTsKK+iMsj5KaTsKK+iMtD5LYWk7CivojLU+SW47CivojLY+Q2hhOwor6Iy4PkpvdTsKK+iMuT5KbzsKK+iNgD5KdW47CivojYU+VG91Owor6I2JPlNvdTsKK+iNij5LZWk7CivojY8+SmluOwor6I2QPlNlbjsKK+iNkj5Lb3U7CivojZg+U291Owor6I2zPlRvdTsKK+iNtT5KaW47Civojbc+S2E7Civojbs+VGVraTsKK+iNvD5UbzsKK+iOhT5SaTsKK+iOhz5DaG87Civojok+Q2hpOwor6I6KPlNvdTsKK+iOjj5TYTsKK+iOkz5NYWk7CivojpY+S2VpOwor6I6aPkVuOwor6I6ePkthbjsKK+iOnz5LYW47CivojqA+WXV1Owor6I6iPkt5b3U7Civojqg+Um91Owor6I6qPkdhOwor6I6rPkJvOwor6I6xPlJhaTsKK+iOtT5UbzsKK+iOvT5Cb3U7Civoj4E+U2VpOwor6I+FPkthbjsKK+iPij5LaWt1Owor6I+MPktpbjsKK+iPjj5Lb247Civoj5M+S2E7Civoj5Y+U2hvdTsKK+iPmD5TdXU7Civoj5w+U2FpOwor6I+fPlRvOwor6I+gPkhhOwor6I+pPkhhaTsKK+iPqz5LaW47Civoj68+S2E7Civoj7A+S287Civoj7E+UnlvdTsKK+iPsj5IaTsKK+iPtD5BbjsKK+iPtz5Tb3U7Civoj7s+UmluOwor6I+9PlNodWt1Owor6JCDPlN1aTsKK+iQhD5Ub3U7CivokIc+Q2hvdTsKK+iQiz5TZWk7CivokIw+SG91Owor6JCNPkhlaTsKK+iQjj5JOwor6JCTPkdpOwor6JCgPkhvdTsKK+iQqT5TaHV1Owor6JCqPkt1d2E7CivokKw+TWFuOwor6JCxPktlbjsKK+iQtT5XYTsKK+iQuD5ZdTsKK+iQvD5HYWt1Owor6JC9PlJha3U7CivokYY+SG87CivokYk+WW91Owor6JGOPlJpdHN1Owor6JGXPkNobzsKK+iRmz5LYXRzdTsKK+iRoT5IbzsKK+iRoj5HYWk7CivokaM+VG91Owor6JGmPkk7Civokak+SGE7Civokas+S287Civokaw+U291Owor6JGtPkthOwor6JGuPlRhbjsKK+iRrz5ZYWt1Owor6JGxPlNvdTsKK+iRtT5LaTsKK+iRtz5HdW47Civokbk+U2hpOwor6JG6PlNodXU7CivokoI+VGVpOwor6JKEPkthbjsKK+iSiz5TaG91Owor6JKQPlNodXU7CivokpQ+U2hpOwor6JKZPkJvdTsKK+iSnD5TYW47Civokp8+S29uOwor6JKhPkhvdTsKK+iSrT5TdXU7CivokrI+SG87Civokrg+Sm91Owor6JK5PktlbjsKK+iSuz5KYWt1Owor6JK8PlNvdTsKK+iSvz5Lb3U7Civok4E+U2hpbjsKK+iThD5DaGlrdTsKK+iThj5TZWtpOwor6JOJPllvdTsKK+iTij5PdTsKK+iTiz5HYWk7Civok40+U2hpOwor6JOQPkpva3U7Civok5E+U2E7Civok5Y+SGk7Civok5o+Q2hvdTsKK+iTrD5Ib3U7Civok64+UmVuOwor6JO0PlNodW47Civok7w+UnlvdTsKK+iTvz5TaHVrdTsKK+iUgD5Ib3U7CivolIY+UnlvdTsKK+iUkT5CZXRzdTsKK+iUkz5CYW47CivolJQ+RnVrdTsKK+iUlT5UZWk7CivolJc+U2hvOwor6JSYPlNoaW47CivolJo+VXRzdTsKK+iUnz5ab2t1Owor6JShPlNhaTsKK+iUpj5DaG91Owor6JSsPlNvOwor6JStPkluOwor6JS1PlpvdTsKK+iUvT5IZWk7CivolYA+S3lva3U7CivolYE+SmluOwor6JWDPkJhbjsKK+iViD5TaGluOwor6JWJPlNob3U7CivolYo+WnVpOwor6JWLPlp1aTsKK+iVjj5LeW91Owor6JWVPll1dTsKK+iVlz5SbzsKK+iVmD5Kb3U7CivolZo+R2FrdTsKK+iVoz5TaHVuOwor6JWoPktldHN1Owor6JWpPlRvdTsKK+iVqj5CdTsKK+iVrT5TaG91Owor6JW3PllvOwor6JW+PlJhaTsKK+iWgD5VbjsKK+iWhD5IYWt1Owor6JaHPkJpOwor6JaIPkthaTsKK+iWij5LZWk7CivolpA+Um91Owor6JaRPkt5b3U7CivolpQ+U2hva3U7Civolpc+RW47Civolpk+VGVpOwor6JabPlNldHN1Owor6JacPkhla2k7CivolqQ+S2FpOwor6JamPlNlbjsKK+iWqD5Lb3U7Civolqk+U2F0c3U7Civolqo+U2hpbjsKK+iWqz5LdW47Civolqw+WWFrdTsKK+iWrj5Tb3U7Civolq8+U2hvOwor6Ja5PlRhaTsKK+iWuj5TZWk7Civol4E+S291Owor6JeJPlNoYTsKK+iXjT5SYW47Civol48+Wm91Owor6JeQPkJha3U7Civol5U+R3V1Owor6JecPlJlaTsKK+iXnT5HZWk7Civol6Q+VG91Owor6JelPllha3U7Civol6k+SGFuOwor6JeqPlNvdTsKK+iXtz5TaG87Civol7k+QWk7Civol7o+UmluOwor6Je7PlNvdTsKK+iXvj5SYWk7CivomII+WnVpOwor6JiGPlJvOwor6JiHPlNvOwor6JiKPlVuOwor6JiLPkhpbjsKK+iYkz5TbzsKK+iYlj5HZXRzdTsKK+iYlz5IYWt1Owor6JiaPlNlbjsKK+iYoj5Sb3U7CivomK0+UmFuOwor6JivPlRvdTsKK+iYvz5SYTsKK+iZjT5LbzsKK+iZjj5LbzsKK+iZkD5HeWFrdTsKK+iZlD5LZW47CivomZU+U2hvOwor6JmaPkt5bzsKK+iZnD5SeW87CivomZ4+R3U7CivomZ8+R291Owor6JmnPktpOwor6JmrPkNodXU7CivombE+U2hpdHN1Owor6Jm5PktvdTsKK+iZuz5Cb3U7Civomoo+QnVuOwor6JqLPlplaTsKK+iajD5Ib3U7CivompM+SW47CivompU+U2FuOwor6JqjPktvdTsKK+iapD5Tb3U7Civomqk+U2hpOwor6JqqPlRvdTsKK+iaqz5Ib3U7Civomq8+S3l1dTsKK+iasD5ZdXU7CivomrY+S2FuOwor6JuEPktvOwor6JuGPlNobzsKK+ibhz5KYTsKK+ibiT5SZWk7Civom4s+VGFuOwor6JuNPktlaTsKK+ibjj5SZWk7Civom5Q+S2FpOwor6JuZPkE7Civom5s+U2h1Owor6JuePkthdHN1Owor6JufPktvdTsKK+ibpD5Lb3U7Civom6k+S3lvdTsKK+ibrD5LeW91Owor6JutPlNoaXRzdTsKK+ibrj5CYW47Civom7g+U291Owor6Ju5PllvdTsKK+ibuz5aZWk7Civom74+R2E7CivonIA+U2hva3U7CivonII+SG91Owor6JyDPlNoaW47CivonIY+S2VuOwor6JyIPkdvOwor6JyJPkZ1Owor6JyKPlJpOwor6JyNPlNobzsKK+ickT5UYW47CivonJI+RW47CivonJg+Q2hpOwor6JyaPkhpOwor6JycPk1pdHN1Owor6JylPlNla2k7CivonKk+Q2hvdTsKK+ictD5Fa2k7CivonLc+S2VuOwor6Jy7PlNlaTsKK+icvz5FbjsKK+idiT5TZW47CivonYs+Um91Owor6J2MPkthOwor6J2OPkthdHN1Owor6J2TPll1Owor6J2VPlNob2t1Owor6J2XPktvdTsKK+idmT5IZW47CivonZ8+STsKK+idoD5GdWt1Owor6J2jPll1dTsKK+idpj5LYTsKK+idqD5TaGl0c3U7Civonao+VG91Owor6J2uPkZ1a3U7CivonbQ+S287CivonbY+Q2hvdTsKK+iduD5LYTsKK+idvz5Zb3U7CivonoI+Um91Owor6J6NPll1dTsKK+ienz5NZWk7CivonqI+S2VpOwor6J6rPlNla2k7Civonq8+R291Owor6J6zPlRvdTsKK+ieuj5SYTsKK+ieuz5Sb3U7Civonr0+U2h1dTsKK+ifgD5TaHV0c3U7Civon4Q+Q2hpdHN1Owor6J+GPkJhOwor6J+HPkJhOwor6J+LPlNoaXRzdTsKK+ifkD5Ub3U7Civon5I+Qm91Owor6J+gPkhhbjsKK+ifrz5HeW91Owor6J+yPktpOwor6J+2PlRlaTsKK+iftz5Ub3U7Civon7k+S2FpOwor6J+7PkdpOwor6J++PlNlbjsKK+ighT5Zb3U7CivooI0+S2F0c3U7CivooI4+Qm91Owor6KCPPkthaTsKK+igkT5FaTsKK+iglT5EYTsKK+iglj5LYWt1Owor6KChPlJlaTsKK+igoj5TaHVuOwor6KCjPlJlaTsKK+igpz5UbzsKK+igsT5LbzsKK+igtj5TYW47CivooLk+VG87CivooLs+QmFuOwor6KGAPktldHN1Owor6KGCPkppa3U7CivooYQ+SmlrdTsKK+ihhj5TaHV1Owor6KGMPktvdTsKK+ihjT5FbjsKK+ihkj5LZW47CivooZM+SnV0c3U7CivooZc+R2FpOwor6KGZPkd5bzsKK+ihmz5FaTsKK+ihnT5TaG91Owor6KGePkVpOwor6KGhPktvdTsKK+ihoj5LdTsKK+ihoz5JOwor6KGoPkh5b3U7Civooas+U2FuOwor6KGwPlNhOwor6KGyPkRvdTsKK+ihtT5KaXRzdTsKK+ihtz5DaHV1Owor6KG9PkppbjsKK+ihvj5LaW47Civoob8+S2luOwor6KKBPkVuOwor6KKCPkJlaTsKK+iiiD5LYTsKK+iiiz5UYWk7Civooo0+SG91Owor6KKSPlRhbjsKK+iilj5TaHV1Owor6KKXPlNoaW47Civoopk+SGE7Civoop4+S29uOwor6KKiPkhhbjsKK+iipD5Cb3U7Civooqs+SGk7Civooq4+TmU7CivoorE+RnVrdTsKK+iitD5LbzsKK+iitT5KaW47Civoorc+S291Owor6KK/PktlaTsKK+ijgT5TYWk7Civoo4I+UmV0c3U7Civoo4U+U291Owor6KOPPlJpOwor6KOUPkVpOwor6KOVPll1dTsKK+ijmD5LeXV1Owor6KOZPkt1bjsKK+ijnD5IbzsKK+ijnT5Tb3U7Civoo58+U2E7Civoo6E+Umk7Civoo6g+SGk7Civoo7I+UnlvdTsKK+ijsz5TaG91Owor6KO0PkhhaTsKK+ijuD5SYTsKK+ijuT5LYTsKK+ijvD5TZWtpOwor6KO9PlNlaTsKK+ijvj5LeW87CivopII+S2FpOwor6KSHPkZ1a3U7CivopIo+SGVuOwor6KSMPktvbjsKK+ikkD5LYXRzdTsKK+ikkj5Ib3U7CivopJM+SG87CivopJ0+VGFuOwor6KSePk9uOwor6KSlPkpva3U7CivopKo+VGFpOwor6KSrPkNoaTsKK+iktj5DaG91Owor6KS4PlJvdTsKK+ikuz5TZXRzdTsKK+ilgT5LeW91Owor6KWDPkhvdTsKK+ilhD5Kb3U7CivopYw+VGFuOwor6KWNPlphdHN1Owor6KWWPk91Owor6KWePkhla2k7CivopZ8+S2luOwor6KWgPlRvdTsKK+ilpD5SYW47CivopaY+SnU7Civopao+QmV0c3U7Civopa0+S2V0c3U7Civopa8+U2hpbjsKK+ilsj5TaHV1Owor6KW0PlJhbjsKK+ilvj5Ba2E7Civopb8+U2VpOwor6KaBPllvdTsKK+imgz5UYW47CivopoY+RnVrdTsKK+imhz5IYTsKK+imiD5LYWt1Owor6KaKPktpOwor6KaLPktlbjsKK+imjz5LaTsKK+imkz5CZWtpOwor6KaWPlNoaTsKK+imlz5TaGk7Civoppg+VGVuOwor6KaaPktha3U7CivopqE+R2VraTsKK+impj5ZdTsKK+impz5SYW47Civopqk+VG87Civopqo+U2hpbjsKK+imrD5LaTsKK+imrz5Lb3U7CivoprI+S2luOwor6KazPkthbjsKK+imuj5LYWt1Owor6Ka9PlJhbjsKK+imvz5UZWtpOwor6KeAPkthbjsKK+inkj5LYWt1Owor6KeaPktvOwor6KecPlNoaTsKK+innT5UZWk7Civop6M+S2FpOwor6KemPlNob2t1Owor6KenPkthaTsKK+intD5TaG91Owor6Ke4PlNob2t1Owor6KiAPkdlbjsKK+iogj5UZWk7CivoqIM+RnU7CivoqIg+S2VpOwor6KiKPkppbjsKK+iojD5Lb3U7CivoqI4+VG91Owor6KiQPktldHN1Owor6KiTPkt1bjsKK+iolj5LaXRzdTsKK+iolz5UYWt1Owor6KiYPktpOwor6KibPkthOwor6KidPkdhOwor6KifPlNob3U7CivoqKM+S2V0c3U7CivoqKU+VG90c3U7CivoqKo+SG91Owor6KitPlNldHN1Owor6KixPkt5bzsKK+iosz5ZYWt1Owor6Ki0PlNvOwor6Ki2PkthOwor6Ki6PlNoaW47CivoqLs+Q2h1dTsKK+iovD5TaG91Owor6KmBPktvOwor6KmGPlRlaTsKK+ipiD5SaTsKK+ipkD5TYTsKK+ipkT5UYTsKK+ipkj5UYWk7CivoqZQ+U2hvdTsKK+iplT5IeW91Owor6KmbPlNvOwor6KmePlNoaTsKK+ipoD5FaTsKK+ipoj5KdW47CivoqaM+S2VpOwor6KmmPlNoaTsKK+ipqT5TaGk7Civoqas+VGE7Civoqaw+S291Owor6KmtPktpOwor6KmuPlNlbjsKK+ipsD5LaXRzdTsKK+ipsT5XYTsKK+ipsj5HYWk7CivoqbM+U2hvdTsKK+ipvD5LYWk7CivoqoI+Q2hvdTsKK+iqhD5SdWk7CivoqoU+Q2h1dTsKK+iqhz5LbzsKK+iqiT5ZbzsKK+iqjD5TaGk7Civoqo0+TmluOwor6KqRPkt5b3U7CivoqpM+U2VpOwor6KqVPlRhbjsKK+iqmD5ZdXU7Civoqpo+U2hvdTsKK+iqnj5HbzsKK+iqoD5TZWk7CivoqqE+S2FpOwor6KqjPkZ1Owor6KqkPkdvOwor6KqlPktvdTsKK+iqpj5TaG91Owor6KqoPkthaTsKK+iqrD5TZXRzdTsKK+iqrT5Ub2t1Owor6KqwPlN1aTsKK+iqsj5LYTsKK+iquT5IaTsKK+iqvD5HaTsKK+iqvz5DaG91Owor6KuCPlRlbjsKK+irhD5KdW47Civoq4c+RGFuOwor6KuLPlNlaTsKK+irjD5LYW47Civoq40+U291Owor6KuPPlNodTsKK+irkj5SeW91Owor6KuWPlJvbjsKK+irmj5Kb3U7Civoq5s+WXU7Civoq5w+Q2hvdTsKK+irnj5IZW47Civoq6A+S2VuOwor6KuhPlNoaTsKK+iroj5Lb247Civoq6Q+R2FrdTsKK+irpj5UZWk7Civoq6c+S2FpOwor6KurPkthbjsKK+irrT5ZdTsKK+irrj5TaGk7Civoq7E+S2k7Civoq7M+QW47Civoq7c+RnV1Owor6Ku4PlNobzsKK+iruj5HZW47Civoq74+RGFrdTsKK+isgD5Cb3U7CivorIE+RXRzdTsKK+isgj5JOwor6KyEPlRvdTsKK+ishz5LZW47CivorIw+S2E7CivorI4+TWVpOwor6KyQPkhpdHN1Owor6KyUPkd5YWt1Owor6KyWPlNob2t1Owor6KyXPkJvdTsKK+ismT5LZW47CivorJo+U2hpOwor6KybPktvdTsKK+isnT5TaGE7CivorKA+WW91Owor6KyhPllvdTsKK+ispj5LZWk7CivorKg+Qm87CivorKs+VGFrdTsKK+isrD5CeW91Owor6KyzPk91Owor6Ky5PktpbjsKK+isvj5CYW47CivorYE+S2E7CivorYk+U2hvdTsKK+itjD5LYTsKK+itjj5LaXRzdTsKK+itjz5LaTsKK+itlj5TaGluOwor6K2YPlNoaWtpOwor6K2aPlRhbjsKK+itmz5TaGluOwor6K2cPkZ1Owor6K2fPlNvdTsKK+itpj5LZWk7Civoras+U2VuOwor6K2sPkhpOwor6K2vPllha3U7CivorbA+R2k7CivorbE+WmVuOwor6K2yPkpvdTsKK+ittD5LZW47Civorbc+R287Civorb0+WW87CivoroA+VG9rdTsKK+iugz5TYW47Civoroo+SGVuOwor6K6MPkVuOwor6K6OPlNodXU7CivorpA+U2h1dTsKK+iukj5TYW47CivorpM+Sm91Owor6K6WPlNoaW47Civorpk+S2FuOwor6K6aPlNhbjsKK+iwtz5Lb2t1Owor6LC6PkthOwor6LC/PktlaTsKK+ixgT5LYXRzdTsKK+ixhj5Ub3U7CivosYg+S2k7CivosYo+SG91Owor6LGMPkVuOwor6LGOPkp1Owor6LGQPkhvdTsKK+ixlT5TaGk7CivosZo+VG9uOwor6LGhPlNob3U7CivosaI+S2VuOwor6LGqPkdvdTsKK+ixqz5ZbzsKK+ixrD5DaG87Civosbg+Q2hpOwor6LG5PkhvdTsKK+ixuj5TYWk7Civosbw+SGk7CivosoI+Q2hvdTsKK+iyhT5LeXV1Owor6LKJPktha3U7Civosoo+SGFrdTsKK+iyjD5Cb3U7Civoso0+Umk7Civoso4+R2VpOwor6LKUPkhpOwor6LKYPkJha3U7Civosp0+QmFpOwor6LKePlRlaTsKK+iyoD5GdTsKK+iyoT5aYWk7CivosqI+S291Owor6LKnPkhpbjsKK+iyqD5LYTsKK+iyqT5IYW47Civosqo+RG9uOwor6LKrPkthbjsKK+iyrD5TZWtpOwor6LKtPlNoaXRzdTsKK+iyrj5OaTsKK+iyrz5DaG87CivosrA+U2VpOwor6LKyPlNoaTsKK+iysz5OaTsKK+iytD5LaTsKK+iytj5IZW47Civosrc+QmFpOwor6LK4PlRhaTsKK+iyuz5IaTsKK+iyvD5UZW47Civosr0+STsKK+iyvz5Cb3U7Civos4A+R2E7Civos4E+SGk7Civos4I+Um87Civos4M+Q2hpbjsKK+izhD5XYWk7Civos4c+U2hpOwor6LOIPktvOwor6LOKPlpva3U7Civos40+U291Owor6LOOPlNlbjsKK+izkT5TaGluOwor6LOTPkhpbjsKK+izmj5SYWk7Civos5s+U2FuOwor6LOcPlNoaTsKK+iznj5TaG91Owor6LOgPkJhaTsKK+izoj5LZW47Civos6M+QmFpOwor6LOkPlNlbjsKK+izpj5GdTsKK+izqj5TaGl0c3U7Civos60+VG87Civos7o+VGFuOwor6LO7PkZ1Owor6LO8PktvdTsKK+izvT5TYWk7CivotIQ+U2hpOwor6LSFPlplaTsKK+i0hz5JbjsKK+i0iD5ab3U7CivotIo+U2FuOwor6LSLPkdhbjsKK+i0jT5TZW47CivotI8+RWk7CivotJA+U2hpbjsKK+i0kz5ab3U7CivotJQ+SGk7CivotJY+U2hva3U7CivotaQ+U2VraTsKK+i1pj5TaGE7Civotac+VGFuOwor6LWrPktha3U7Civota0+U2hhOwor6LWwPlNvdTsKK+i1sT5Tb3U7CivotbM+S3l1dTsKK+i1tD5GdTsKK+i1tz5LaTsKK+i2gT5DaGluOwor6LaFPkNob3U7Civotoo+RXRzdTsKK+i2mT5DaG91Owor6LajPlNodTsKK+i2qD5TdXU7CivotrM+U29rdTsKK+i2uj5GdTsKK+i2vj5TaGk7Civot4I+S2k7Civot4s+QmF0c3U7Civot4w+VGV0c3U7Civot48+S2E7Civot5Y+U2VraTsKK+i3mj5TYW47Civot5s+SGE7Civot50+S3lvOwor6LefPktvbjsKK+i3oT5TZWtpOwor6LejPlNlbjsKK+i3qD5LbzsKK+i3qj5LaTsKK+i3qz5LeW91Owor6LevPlJvOwor6LezPkNob3U7Civot7U+U2VuOwor6Le8Pkt5b2t1Owor6Le/PlRvOwor6LiIPlNobzsKK+i4iT5SeW91Owor6LiKPllvdTsKK+i4jz5Ub3U7CivouJA+U2VuOwor6LidPkthOwor6LiePkt5bzsKK+i4nz5DaGk7CivouKo+U2hvdTsKK+i4sD5ZdTsKK+i4tD5Zb3U7CivouLU+U2hvdTsKK+i5gj5KdXU7CivouYQ+VGVpOwor6LmHPktlbjsKK+i5iD5Ub3U7CivouYk+U2E7CivouYo+S2VpOwor6LmMPlNob3U7CivouZA+U2VraTsKK+i5lT5IaXRzdTsKK+i5mT5TaHVrdTsKK+i5nz5TZWtpOwor6LmgPlNla2k7CivouaM+TWFuOwor6LmkPlNob3U7CivoubI+U29uOwor6Lm0PlNodXU7CivoubY+S2V0c3U7Civoubw+Qm9rdTsKK+i6gT5Tb3U7CivouoQ+SGVraTsKK+i6hT5DaG9rdTsKK+i6hz5DaG87Civouoo+Q2h1dTsKK+i6iz5TZWk7Civouo0+WWFrdTsKK+i6kT5UZWtpOwor6LqTPkNoaTsKK+i6lD5UZW47Civoupk+UmluOwor6LqhPkpvdTsKK+i6qj5SaW47Civouqs+U2hpbjsKK+i6rD5LeXV1Owor6LqvPkt1Owor6LqwPlRlaTsKK+i6sT5UYTsKK+i7hj5UZWk7Civou4o+U2hhOwor6LuLPkF0c3U7Civou4w+S2k7Civou40+R3VuOwor6LuSPktlbjsKK+i7mz5Ba3U7Civou58+TmFuOwor6LuiPlRlbjsKK+i7oz5Hb3U7Civou6s+U2hpbjsKK+i7uD5KaWt1Owor6Lu7PkthOwor6Lu8Pkl0c3U7Civou70+S2VpOwor6Lu+PlNob2t1Owor6LyDPktha3U7CivovIU+Um87CivovIk+U2FpOwor6LyKPkNoaTsKK+i8jD5SeW91Owor6LySPkNob3U7CivovJM+QmFuOwor6LyUPkZ1Owor6LyVPktlaTsKK+i8mT5DaG91Owor6LybPlJ5b3U7CivovJw+U2hpOwor6LydPktpOwor6LyfPlRldHN1Owor6LymPlJlbjsKK+i8qT5IYWk7CivovKo+UmluOwor6LyvPlNodXU7CivovLM+U291Owor6Ly4Pll1Owor6Ly5PkZ1a3U7CivovLs+RnVrdTsKK+i8vj5UZW47CivovL8+WW87CivovYI+S29rdTsKK+i9hD5LYXRzdTsKK+i9hT5FbjsKK+i9hj5Sb2t1Owor6L2JPlRlbjsKK+i9jT5UZXRzdTsKK+i9jj5LeW91Owor6L2XPkthbjsKK+i9nD5KaTsKK+i9nz5Hb3U7CivovaE+SGk7CivovaI+UmVraTsKK+i9oz5SZWtpOwor6L2kPlJvOwor6L6bPlNoaW47Civovpw+S287Civovp4+Smk7Civovp8+SGVraTsKK+i+oz5SYXRzdTsKK+i+pz5CZW47Civovqg+QmVuOwor6L6tPkppOwor6L6uPkhlbjsKK+i+rz5CZW47CivovrA+U2hpbjsKK+i+sT5Kb2t1Owor6L6yPk5vdTsKK+i+uj5IZW47Civovr8+VGVuOwor6L+CPlU7Civov4Q+S2l0c3U7Civov4U+SmluOwor6L+OPkdlaTsKK+i/kT5LaW47Civov5Q+SGVuOwor6L+iPkNob3U7Civov6U+S2VpOwor6L+mPkthOwor6L+pPkppOwor6L+qPlRla2k7Civov6s+SGFrdTsKK+i/rT5UZXRzdTsKK+i/rz5Ub3U7Civov7A+SnV0c3U7Civov7Q+S2FpOwor6L+3Pk1laTsKK+i/uD5Ib3U7Civov7k+U2VraTsKK+i/uj5EYWk7Civov70+VHN1aTsKK+mAgD5UYWk7CivpgIE+U291Owor6YCDPlRvdTsKK+mAhT5Lb3U7CivpgIY+R3lha3U7CivpgIs+SG87CivpgI0+U2hvdTsKK+mAjj5TaHV1Owor6YCPPlRvdTsKK+mAkD5DaGlrdTsKK+mAkT5LeXV1Owor6YCTPlRlaTsKK+mAlD5UbzsKK+mAlT5LZWk7CivpgJY+VGVraTsKK+mAlz5Ub3U7CivpgJk+R2VuOwor6YCaPlRzOwor6YCdPlNlaTsKK+mAnj5UZWk7CivpgJ8+U29rdTsKK+mAoD5ab3U7CivpgKE+U2h1bjsKK+mAoj5Ib3U7CivpgKM+UmVuOwor6YCuPlRhaTsKK+mAsT5TaHV1Owor6YCyPlNoaW47CivpgLU+S2k7CivpgLY+STsKK+mAuD5JdHN1Owor6YC5PlRhdHN1Owor6YC8PkhpdHN1Owor6YC+Pll1Owor6YGBPlRvbjsKK+mBgj5TdWk7CivpgYU+Q2hpOwor6YGHPkd1dTsKK+mBiT5UZWk7CivpgYo+WXV1Owor6YGLPlVuOwor6YGNPkhlbjsKK+mBjj5LYTsKK+mBjz5BdHN1Owor6YGQPkthOwor6YGRPktvdTsKK+mBkj5TaHV1Owor6YGTPkRvdTsKK+mBlD5UYXRzdTsKK+mBlT5JOwor6YGYPktvdTsKK+mBmT5Zb3U7CivpgZw+U29uOwor6YGePlRlaTsKK+mBoD5FbjsKK+mBoT5TbzsKK+mBoz5LZW47CivpgaU+WW91Owor6YGoPkdvdTsKK+mBqT5UZWtpOwor6YGtPlNvdTsKK+mBrj5TaGE7Civpga8+VG9uOwor6YGyPkNoaTsKK+mBtT5KdW47CivpgbY+Sm91Owor6YG3PlNlbjsKK+mBuD5TZW47Civpgbo+STsKK+mBvD5SeW91Owor6YG9Pkt5bzsKK+mBvz5IaTsKK+mCgD5Zb3U7CivpgoE+QmFpOwor6YKCPkthaTsKK+mCgz5TdWk7CivpgoQ+S2FuOwor6YKHPkppOwor6YKJPkhlbjsKK+mCij5IZW47Civpgo8+UmE7CivpgpE+WXV1Owor6YKjPkRhOwor6YKmPkhvdTsKK+mCqD5Tb247Civpgqo+WWE7Civpgq8+S2FuOwor6YKxPkt5dXU7CivpgrU+U2hvdTsKK+mCuD5UZWk7Civpg4E+SWt1Owor6YOKPktvdTsKK+mDjj5Sb3U7Civpg5s+RnU7Civpg6E+R3VuOwor6YOiPkVpOwor6YOkPkdla2k7Civpg6g+QnU7Civpg60+S2FrdTsKK+mDtT5ZdXU7Civpg7c+S3lvdTsKK+mDvT5UbzsKK+mEgj5HYWt1Owor6YSSPlN1dTsKK+mEmT5IaTsKK+mErT5UZWk7CivphLA+UmluOwor6YSyPlRhbjsKK+mFiT5ZdXU7CivphYo+VGVpOwor6YWLPlNodXU7CivphYw+U2hha3U7CivphY0+SGFpOwor6YWOPkNodXU7CivphZI+U2h1Owor6YWUPlN1aTsKK+mFlj5UYW47CivphZg+VG91Owor6YWiPlNha3U7CivphaM+S2FuOwor6YWlPlNvOwor6YWpPk1laTsKK+mFqj5SYWt1Owor6YWsPlNodXU7CivphbI+VGVpOwor6YWzPkluOwor6YW1PktvdTsKK+mFtz5Lb2t1Owor6YW4PlNhbjsKK+mGgj5SaW47Civphoc+U2h1bjsKK+mGiT5TdWk7Civphos+U2FrdTsKK+mGjT5UZWk7CivphpA+S287CivphpI+U2VpOwor6YaXPkhhdHN1Owor6YacPlNodXU7CivphqI+S2FpOwor6YakPlNob3U7Civphqo+Um91Owor6YarPkk7Civphq8+S2VpOwor6Ya0PlJlaTsKK+mGtT5LeW87Civphrg+Sm91Owor6Ya6Pkt1bjsKK+mHgD5Kb3U7Civph4E+S2luOwor6YeGPkhhbjsKK+mHhz5TYWk7Civph4g+U2hha3U7Civph4k+WXV1Owor6YeLPlNoYWt1Owor6YeMPlJpOwor6YeNPkNob3U7Civph44+WWE7Civph48+UnlvdTsKK+mHkD5SaTsKK+mHkT5LaW47Civph5Y+VG91Owor6YeYPlRlaTsKK+mHmz5Lb2t1Owor6YecPkZ1Owor6YedPlNoaW47Civph58+SGF0c3U7Civph6E+RnU7Civph6M+Q2hvdTsKK+mHpj5Lb3U7Civph6c+U2VuOwor6Ye1PlNhOwor6Ye2PlNoaTsKK+mHvD5LZW47Civph78+S2luOwor6YiNPkRvbjsKK+mIjj5Lb3U7CivpiJE+SGFuOwor6YiUPlNob3U7CivpiJU+Q2h1dTsKK+mInj5LaW47CivpiKk+Um87CivpiKw+VGFrdTsKK+mItD5SZWk7CivpiLc+S287CivpiL8+VGVuOwor6YmEPlRldHN1Owor6YmFPkt5bzsKK+mJiD5TaGE7CivpiYk+S2VuOwor6YmLPkhvdTsKK+mJkD5TZWtpOwor6YmXPkthbjsKK+mJmj5SeXV1Owor6YmbPkVuOwor6YmePkV0c3U7CivpiaI+SGFjaGk7CivpiaQ+S291Owor6YmmPlNlaTsKK+mJsT5Lb3U7Civpib4+Qm91Owor6YqAPkdpbjsKK+mKgz5KdXU7CivpioU+RG91Owor6YqRPlNlbjsKK+mKkz5TZW47CivpipU+VGV0c3U7CivpipY+U2h1Owor6YqYPk1laTsKK+mKmj5Zb3U7Civpips+U2VuOwor6YqcPkthbjsKK+mKrT5TZW47Civpirc+U2hvdTsKK+mKuT5TaHV1Owor6YuPPkt5b3U7Civpi5I+SG91Owor6YukPkpvOwor6YupPkJvdTsKK+mLqj5IbzsKK+mLrT5FaTsKK+mLsz5DaHV1Owor6Yu4Pkt5bzsKK+mLuj5FbjsKK+mLvD5Lb3U7CivpjIY+U2VpOwor6YyPPkE7CivpjJA+U3VpOwor6YyYPlRzdWk7CivpjJk+U2hpOwor6YyaPlNvdTsKK+mMoD5Kb3U7CivpjKI+U2VuOwor6YyjPlRlaTsKK+mMpj5LaW47CivpjKg+QnlvdTsKK+mMqz5TZWtpOwor6YysPlJlbjsKK+mMrj5LbzsKK+mMrz5TYWt1Owor6YyyPlJva3U7CivpjLs+QnU7CivpjYQ+S2VpOwor6Y2LPkthOwor6Y2NPlRvOwor6Y2UPkdha3U7CivpjZY+Q2hpbjsKK+mNmz5UYW47CivpjZw+S2E7CivpjaA+S291Owor6Y2sPlNodXU7Civpja4+Q2h1dTsKK+mNtT5LZW47Civpjbw+U2hpbjsKK+mNvj5TaG91Owor6Y6MPlJlbjsKK+mOlD5Zb3U7CivpjpY+U2E7Civpjpc+U291Owor6Y6aPlRzdWk7Civpjqc+R2FpOwor6Y6sPktvdTsKK+mOrT5DaGluOwor6Y6uPkNoaW47CivpjrA+SXRzdTsKK+mPgz5ab2t1Owor6Y+IPlJlbjsKK+mPkD5SeXV1Owor6Y+RPlRla2k7Civpj5Y+T3U7Civpj5c+S291Owor6Y+YPlNob3U7Civpj50+TWFuOwor6Y+hPkt5b3U7Civpj6Q+Um91Owor6Y+lPlNodXU7Civpj6g+U2FuOwor6ZCDPkRvdTsKK+mQhz5IYW47CivpkJA+UnlvdTsKK+mQkz5UYWk7CivpkJQ+U2hpbjsKK+mQmD5TaG91Owor6ZCZPlRvdTsKK+mQmj5BOwor6ZChPlRldHN1Owor6ZCrPlNlbjsKK+mQtT5UZXRzdTsKK+mQtj5LYW47CivpkLg+VGFrdTsKK+mQuj5Ub3U7CivpkYE+QmFuOwor6ZGEPkNodXU7CivpkZE+S2FuOwor6ZGSPkthbjsKK+mRmj5TYW47CivpkZs+S291Owor6ZGePlJvdTsKK+mRoD5TaGFrdTsKK+mRoj5SeW87Civpkao+Um87CivpkbA+WWFrdTsKK+mRtT5LYW47Civpkbc+Sm91Owor6ZG8PlJhOwor6ZG9PlNhbjsKK+mRvj5SYW47Civpkb8+U2FrdTsKK+mSgT5LYWt1Owor6ZW3PkNob3U7CivploA+TW9uOwor6ZaCPlNhbjsKK+mWgz5TZW47Civploc+SGVpOwor6ZaJPkhlaTsKK+mWiz5LYWk7Civplo8+SnVuOwor6ZaRPkthbjsKK+mWkz5LYW47CivplpQ+QmluOwor6ZaYPktvdTsKK+mWmT5Ub3U7CivplqI+S2FuOwor6ZajPktha3U7CivplqQ+S291Owor6ZalPkJhdHN1Owor6ZanPktvdTsKK+mWqD5LZWk7Civplq0+Um87CivplrI+RXRzdTsKK+mWuT5FbjsKK+mWuz5FbjsKK+mWvD5BOwor6Za+Pllva3U7Civpl4M+R2VraTsKK+mXhz5BbjsKK+mXij5LYXRzdTsKK+mXjD5SYW47Civpl40+VG87Civpl5Q+S291Owor6ZeVPktldHN1Owor6ZeWPkNoaW47Civpl5g+VG91Owor6ZecPkthbjsKK+mXoT5TZW47Civpl6I+SGVraTsKK+mXpT5UYXRzdTsKK+mYnD5GdTsKK+mYoT5TZW47CivpmKg+QWt1Owor6ZiqPkhhbjsKK+mYrj5HZW47CivpmK8+U2hpOwor6ZiyPkJvdTsKK+mYuz5TbzsKK+mYvz5BOwor6ZmAPkRhOwor6ZmCPkhhOwor6ZmEPkZ1Owor6ZmLPlJvdTsKK+mZjD5IYWt1Owor6ZmNPktvdTsKK+mZjz5UYTsKK+mZkD5HZW47CivpmZs+SGVpOwor6ZmcPktvdTsKK+mZnT5TZW47CivpmZ4+U2hvdTsKK+mZnz5DaG9rdTsKK+mZoj5JbjsKK+mZoz5KaW47CivpmaQ+Sm87CivpmaU+S2FuOwor6ZmmPlRvdTsKK+mZqj5CYWk7Civpmaw+U3V1Owor6ZmwPkluOwor6ZmyPlN1aTsKK+mZsz5DaGluOwor6Zm1PlJ5b3U7CivpmbY+VG91Owor6Zm3PkthbjsKK+mZuD5SaWt1Owor6Zm6PktlbjsKK+mZvT5Zb3U7CivpmoU+R3V1Owor6ZqGPlJ5dXU7Civpmog+V2FpOwor6ZqKPlRhaTsKK+maiz5UYTsKK+majT5Lb3U7Civpmo4+S2FpOwor6ZqPPlp1aTsKK+malD5LYWt1Owor6ZqVPkluOwor6ZqXPkthaTsKK+mamD5BaTsKK+mamT5HZWtpOwor6ZqbPlNhaTsKK+manD5TaG91Owor6ZqgPkluOwor6ZqjPlJpbjsKK+mapz5TdWk7Civpmqg+WnVpOwor6ZqqPktlbjsKK+masD5TaGl0c3U7CivpmrE+SW47CivpmrI+U2hpdHN1Owor6Zq0PlJvdTsKK+matj5UYWk7Civpmrc+UmVpOwor6Zq4PlJlaTsKK+mauT5TdWk7Civpmrs+U2VraTsKK+mavD5KdW47Civpm4A+SmFrdTsKK+mbgT5HYW47Civpm4Q+WXV1Owor6ZuFPkdhOwor6ZuGPlNodXU7Civpm4c+S287Civpm4k+Q2hpOwor6ZuLPlNlbjsKK+mbjD5TaGk7Civpm40+WW91Owor6ZuOPlNobzsKK+mbkT5aYXRzdTsKK+mblT5DaG91Owor6ZuWPlN1aTsKK+mbmT5Tb3U7Civpm5s+U3V1Owor6ZucPlphdHN1Owor6ZuiPlJpOwor6ZujPk5hbjsKK+mbqD5VOwor6ZuqPlNldHN1Owor6ZurPkRhOwor6ZuwPkZ1bjsKK+mbsj5VbjsKK+mbtj5SZWk7Civpm7c+UmFpOwor6Zu5Pkhha3U7Civpm7s+RGVuOwor6ZyAPkp1Owor6ZyEPlNob3U7CivpnIY+VGVpOwor6ZyHPlNoaW47CivpnIg+SGFpOwor6ZyKPlJlaTsKK+mcjT5LYWt1Owor6ZyOPlNvdTsKK+mcjz5IaTsKK+mckT5UZW47CivpnJM+R2VpOwor6ZyWPlJpbjsKK+mcmT5FaTsKK+mcnD5Tb3U7CivpnJ4+S2E7CivpnKQ+Unl1dTsKK+mcpz5NdTsKK+mcqj5JbjsKK+mcsD5TYW47CivpnLI+Um87CivpnLg+SGFrdTsKK+mcuT5IZWtpOwor6Zy9PlNlaTsKK+mcvj5CYWk7CivpnYI+UmVraTsKK+mdhD5BaTsKK+mdhj5UYWk7CivpnYg+UmVpOwor6Z2JPkFpOwor6Z2SPlNlaTsKK+mdlj5TZWk7CivpnZk+U2VpOwor6Z2cPlNlaTsKK+mdnj5IaTsKK+mdoD5Lb3U7CivpnaE+SGk7CivpnaI+TWVuOwor6Z2kPkhvdTsKK+mdpj5UZW47Civpnag+WW91Owor6Z2pPktha3U7Civpnas+U2FpOwor6Z2tPkppbjsKK+mdsT5KaW47CivpnbQ+S2E7Civpnbk+S2V0c3U7Civpnbo+TWF0c3U7Civpnbw+VGFuOwor6Z6BPkhpOwor6Z6EPkhvdTsKK+mehT5PdTsKK+meiz5BaTsKK+mejT5BbjsKK+mejz5LeW91Owor6Z6YPlNvdTsKK+menD5Ub3U7CivpnqA+S2lrdTsKK+meoz5KdXU7CivpnqY+U2h1dTsKK+meqD5LYXRzdTsKK+meqz5LaWt1Owor6Z6tPkhlbjsKK+mesz5Ub3U7CivpnrQ+RnVrdTsKK+mfgz5EYXRzdTsKK+mfhj5TZW47Civpn4g+QmV0c3U7Civpn4s+STsKK+mfkz5LYW47Civpn5w+VG91Owor6Z+tPkt5dXU7Civpn64+S3lvdTsKK+mfsj5TZWk7Civpn7M+T247Civpn7U+SW47Civpn7Y+U2hvdTsKK+mfuz5JbjsKK+mfvz5LeW91Owor6aCBPktldHN1Owor6aCCPkNob3U7CivpoIM+S2VpOwor6aCFPktvdTsKK+mghj5KdW47CivpoIg+U2h1Owor6aCMPlNob3U7CivpoI8+S291Owor6aCQPllvOwor6aCRPkdhbjsKK+mgkj5IYW47CivpoJM+VG9uOwor6aCXPkhhOwor6aCYPlJ5b3U7CivpoJo+S2VpOwor6aChPktpdHN1Owor6aCkPkk7CivpoKw+S3lvdTsKK+mgrT5Ub3U7CivpoLQ+RWk7CivpoLc+S2FuOwor6aC4PktlaTsKK+mguz5IaW47CivpoLw+UmFpOwor6aC9PlRhaTsKK+mhhj5LYTsKK+mhiz5TYWk7CivpoYw+RGFpOwor6aGNPkdha3U7CivpoY4+R2FrdTsKK+mhjz5HYW47CivpoZQ+R2FuOwor6aGVPktlbjsKK+mhmD5HYW47CivpoZs+VGVuOwor6aGePlJ1aTsKK+mhpz5LbzsKK+mhqz5TZW47Civpoa8+S2VuOwor6aGwPkhpbjsKK+mhsT5SbzsKK+mhsz5TaG91Owor6aG0PkthbjsKK+miqD5GdXU7Civpoq8+U2F0c3U7CivporE+VGFpOwor6aK2Pkt1Owor6aODPkh5b3U7Civpo4Q+SHlvdTsKK+mjhj5IeW91Owor6aObPkhpOwor6aOcPkhvbjsKK+mjnz5TaG9rdTsKK+mjoj5LaTsKK+mjqT5Ub247Civpo6s+WW87Civpo60+Q2hva3U7Civpo64+SW47Civpo68+SGFuOwor6aOyPkluOwor6aO0Pkk7Civpo7w+U2hpOwor6aO9PkhvdTsKK+mjvj5TaG9rdTsKK+mkgz5Lb3U7CivppIU+SGVpOwor6aSJPlNob3U7CivppIo+WW91Owor6aSMPkppOwor6aSQPlNhbjsKK+mkkj5EYWk7CivppJM+R2E7CivppJQ+SG87CivppJg+WW87CivppJ0+U2hva3U7CivppJ4+U2VuOwor6aSgPkhlaTsKK+mkoT5LYW47CivppKQ+VGFuOwor6aSoPkthbjsKK+mkrD5LbzsKK+mkrj5UZXRzdTsKK+mkvT5LaTsKK+mkvj5SeXV1Owor6aWCPlVuOwor6aWFPk1hbjsKK+mliT5LaW47CivppYs+S2k7CivppYw+U2VuOwor6aWQPkk7CivppZE+S2k7CivppZI+Sm91Owor6aWVPlRvdTsKK+mllz5LeW91Owor6aaWPlNodTsKK+mmlz5LaTsKK+mmmD5LYWt1Owor6aaZPktvdTsKK+mmpT5GdWt1Owor6aaoPktlaTsKK+mmrD5CYTsKK+mmrT5HeW87Civppq4+SHlvdTsKK+mmsz5DaGk7CivpprQ+U2h1bjsKK+mmvD5CdW47Civpp4E+QmFrdTsKK+mnhD5UYTsKK+mnhT5Fa2k7Civpp4Y+S3U7Civpp4g+S3U7Civpp5A+Q2h1dTsKK+mnkT5EbzsKK+mnkj5LdTsKK+mnlT5HYTsKK+mnmD5UYWk7Civpp5s+U2hpOwor6aedPlRhOwor6aefPlNoaTsKK+mnoj5IZW47Civpp60+S2FpOwor6aeuPkhha3U7Civpp7E+UmFrdTsKK+mnuD5TaGluOwor6ae7PkthbjsKK+mnvz5TaHVuOwor6aiBPlRlaTsKK+mohT5TdWk7CivpqI4+S2k7CivpqI8+S2k7CivpqJI+U291Owor6aiTPktlbjsKK+momT5IZW47CivpqKg+VGFuOwor6airPktlbjsKK+mosD5Ub3U7CivpqLc+U291Owor6ai+PlJhOwor6amAPkJha3U7CivpqYI+U2FuOwor6amDPkh5b3U7CivpqYU+S3U7CivpqY0+R3lvdTsKK+mplT5LeW91Owor6amXPktlbjsKK+mpmj5LeW91Owor6ambPkVraTsKK+mpnz5TaHV1Owor6amiPlJ5bzsKK+mppD5Kb3U7CivpqaU+S2k7Civpqak+S2FuOwor6amqPlJpOwor6amrPkh5dXU7Civpqqg+S290c3U7Civpqq0+S2FuOwor6aqwPlRvdTsKK+mquD5LYWk7Civpqrw+S2FrdTsKK+mrgD5IaTsKK+mrhD5adWk7Civpq48+Um91Owor6auRPlRva3U7Civpq5M+WnVpOwor6auUPlRlaTsKK+mrmD5Lb3U7Civpq54+U291Owor6aufPkh5b3U7Civpq6I+VGVpOwor6aujPkhvdTsKK+mrpj5Cb3U7Civpq6o+SGF0c3U7Civpq6s+Q2hvdTsKK+mrrT5TaGk7Civpq64+SGF0c3U7Civpq68+WmVuOwor6auxPkhvdTsKK+mrtD5GdXRzdTsKK+mrtz5LeW9rdTsKK+mruz5LZWk7CivprIY+U2hvdTsKK+msmD5CYW47CivprJo+U2h1Owor6ayfPkthbjsKK+msoj5IaW47CivprKM+UnlvdTsKK+mspT5Ub3U7CivprKc+VG91Owor6ayoPktvdTsKK+msqT5HZWtpOwor6ayqPlRvdTsKK+msrj5LeXV1Owor6ayvPkNob3U7CivprLE+VXRzdTsKK+mssj5SZWtpOwor6ay7PlNodWt1Owor6ay8PktpOwor6a2BPkthaTsKK+mtgj5Lb247CivprYM+QmF0c3U7CivprYQ+SGFrdTsKK+mthT5NaTsKK+mtjT5Cb3U7CivprY4+UnlvdTsKK+mtjz5HaTsKK+mtkT5DaGk7CivprZQ+TWE7CivprZg+RW47CivprZo+R3lvOwor6a2vPlJvOwor6a20PkhvdTsKK+mugz5IeW91Owor6a6OPk5lbjsKK+mukT5Ib3U7CivprpI+RnU7CivprpM+U2E7Civprp8+QW47CivprqA+R2FpOwor6a6oPlNoaTsKK+muqj5JOwor6a6rPktvdTsKK+murT5LZWk7Civprq4+U2VuOwor6a65PlNvdTsKK+mvgD5Lb247Civpr4Y+SG87Civpr4k+Umk7Civpr4o+U2E7Civpr5Q+U2hpOwor6a+WPlNlaTsKK+mvmz5DaG91Owor6a+hPkhpOwor6a+iPkdlaTsKK+mvoz5Fa2k7Civpr6Q+S29uOwor6a+oPkdlaTsKK+mvsD5OZW47Civpr7U+U291Owor6bCEPkk7CivpsIY+U2h1bjsKK+mwiD5DaG91Owor6bCJPktvdTsKK+mwij5SZW47CivpsIw+U2h1dTsKK+mwjT5TaHV1Owor6bCQPkdha3U7CivpsJI+RnVrdTsKK+mwkz5TYWk7CivpsJQ+S2FuOwor6bCVPkthOwor6bCbPk9uOwor6bChPlJ5dXU7CivpsKQ+U2hpOwor6bClPkthbjsKK+mwrT5LaTsKK+mwrj5PbjsKK+mwsj5Hb3U7CivpsLk+S2VuOwor6bC6PlNvdTsKK+mwuz5CYW47CivpsL4+SHlvdTsKK+mxhj5TaG91Owor6bGHPktvdTsKK+mxiD5TZXRzdTsKK+mxkj5Tb247CivpsZc+UmluOwor6bGgPkthaTsKK+mxpz5SZWk7CivpsbY+U2hvdTsKK+mxuD5SbzsKK+mzpT5DaG91Owor6bOnPkZ1Owor6bOpPkt5dXU7Civps6s+R2FuOwor6bOsPkZ1Owor6bOzPkhvdTsKK+mztD5NZWk7Civps7Y+RW47CivptIM+S2V0c3U7CivptIY+Q2hpbjsKK+m0hz5Ib3U7CivptIg+R2FuOwor6bSJPkE7CivptI4+T3U7CivptJI+UmVpOwor6bSVPlRhOwor6bSbPkVuOwor6bSfPlNoaTsKK+m0oz5LbzsKK+m0pj5Zb3U7CivptKg+T3U7CivptKo+SXRzdTsKK+m0rD5PdTsKK+m0uz5Lb3U7CivptL4+Qm91Owor6bS/PktvdTsKK+m1gT5Lb3U7CivptYQ+U2hpOwor6bWQPkJ1Owor6bWRPktlbjsKK+m1mT5HZWtpOwor6bWcPlRlaTsKK+m1nT5HYTsKK+m1nj5HYTsKK+m1oD5Lb2t1Owor6bWhPkJ1Owor6bWsPkhvdTsKK+m1rz5IaTsKK+m1sj5KYWt1Owor6bW6PllhOwor6baHPlRvdTsKK+m2iT5TaHVuOwor6baPPktlaTsKK+m2mj5HYWt1Owor6bakPktvbjsKK+m2qT5Cb2t1Owor6bavPk91Owor6bayPk91Owor6ba0Pktha3U7Civptrg+SmFrdTsKK+m2uj5TZWtpOwor6ba7PktvdHN1Owor6beBPkdla2k7Civpt4I+WW91Owor6beEPktlaTsKK+m3hj5UZW47Civpt48+VGVuOwor6beTPlNoYTsKK+m3mT5TaGk7Civpt6Y+U2hvdTsKK+m3rT5CYW47Civpt68+UnlvdTsKK+m3sj5TaHV1Owor6be4Pkl0c3U7Civpt7k+WW91Owor6be6PlJvOwor6be9Pktha3U7CivpuJo+T3U7CivpuJs+S2FuOwor6biePlJhbjsKK+m5tT5SbzsKK+m5uD5LZW47Civpubk+S2FuOwor6bm9PkVuOwor6bm/PlJva3U7CivpuoE+U287Civpuog+U2h1Owor6bqLPkJpOwor6bqMPkd1Owor6bqRPkdlaTsKK+m6kj5LaTsKK+m6kz5Sb2t1Owor6bqVPktpbjsKK+m6lz5SZWk7Civpup0+U2hhOwor6bqfPlJpbjsKK+m6pT5CYWt1Owor6bqmPkJha3U7Civpuqk+RnU7Civpuqo+TWVuOwor6bqtPkhvdTsKK+m6uD5GdTsKK+m6uT5LaWt1Owor6bq6Pk1lbjsKK+m6uz5NYTsKK+m6vD5NYTsKK+m6vj5LaTsKK+m6vz5SbzsKK+m7hD5Lb3U7Civpu4w+S291Owor6buNPlNobzsKK+m7jj5SZWk7Civpu48+TmVuOwor6buQPkNoaTsKK+m7kj5Lb2t1Owor6buUPktlbjsKK+m7mD5Nb2t1Owor6buZPk1va3U7Civpu5s+VGFpOwor6bucPkNodXRzdTsKK+m7nT5ZdXU7Civpu54+VGVuOwor6bugPkthdHN1Owor6bulPkdlaTsKK+m7qD5Ub3U7Civpu68+QW47Civpu7Q+QmFpOwor6bu2PkVuOwor6bu3PlRva3U7Civpu7k+Q2hpOwor6bu7PkZ1dHN1Owor6bu8PkhvOwor6bu9PkJvdTsKK+m8hz5Hb3U7CivpvIg+QmV0c3U7CivpvI4+VGVpOwor6byTPktvOwor6byVPlRvdTsKK+m8oD5TbzsKK+m8oT5TaG87CivpvKw+WXV1Owor6by7PkJpOwor6by+PkthbjsKK+m9ij5TZWk7CivpvYs+U2FpOwor6b2OPlNlaTsKK+m9jz5TZWk7CivpvZI+U2hpOwor6b2UPlNoaW47CivpvZ8+U287CivpvaA+Q2hvdTsKK+m9oT5SZWk7CivpvaI+UmVpOwor6b2jPlNodXRzdTsKK+m9pj5HaW47Civpvac+S2V0c3U7Civpvao+U29rdTsKK+m9rD5HeW87CivpvbI+S3U7CivpvbY+R2FrdTsKK+m9tz5Ba3U7Civpvo0+Unl1dTsKK+m+lT5HYW47Civpvpw+S2k7Civpvp0+U2h1dTsKK+m+oD5ZYWt1OworCisjIGVvZgpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL3RyYW5zbGl0L3RoYWlfdGVzdC50eHQgYi9zcmMvY29tL2libS9pY3UvZGV2L2RlbW8vdHJhbnNsaXQvdGhhaV90ZXN0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kN2I2YTVkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi9kZW1vL3RyYW5zbGl0L3RoYWlfdGVzdC50eHQKQEAgLTAsMCArMSw1MSBAQAor77u/QFVQUEVSRklMVEVSQAorVW5pY29kZSDguITguLfguK3guK3guLDguYTguKM/CitVbmljb2RlIOC4geC4s+C4q+C4meC4lOC4q+C4oeC4suC4ouC5gOC4peC4guC5gOC4ieC4nuC4suC4sOC4quC4s+C4q+C4o+C4seC4muC4l+C4uOC4geC4reC4seC4geC4guC4o+C4sAor4LmC4LiU4Lii4LmE4Lih4LmI4Liq4LiZ4LmD4LiI4Lin4LmI4Liy4LmA4Lib4LmH4LiZ4LmB4Lie4Lil4LmH4LiV4Lif4Lit4Lij4LmM4Lih4LmD4LiUCivguYTguKHguYjguILguLbguYnguJnguIHguLHguJrguKfguYjguLLguIjguLDguYDguJvguYfguJnguYLguJvguKPguYHguIHguKPguKHguYPguJQKK+C5geC4peC4sOC5hOC4oeC5iOC4p+C5iOC4suC4iOC4sOC5gOC4m+C5h+C4meC4oOC4suC4qeC4suC5g+C4lAorCivguYLguJTguKLguJ7guLfguYnguJnguJDguLLguJnguYHguKXguYnguKcsIOC4hOC4reC4oeC4nuC4tOC4p+C5gOC4leC4reC4o+C5jOC4iOC4sOC5gOC4geC4teC5iOC4ouC4p+C4guC5ieC4reC4h+C4geC4seC4muC5gOC4o+C4t+C5iOC4reC4h+C4guC4reC4h+C4leC4seC4p+C5gOC4peC4gi4g4LiE4Lit4Lih4Lie4Li04Lin4LmA4LiV4Lit4Lij4LmM4LiI4Lix4LiU4LmA4LiB4LmH4Lia4LiV4Lix4Lin4Lit4Lix4LiB4Lip4Lij4LmB4Lil4Liw4Lit4Lix4LiB4LiC4Lij4Liw4Lit4Li34LmI4LiZ4LmGIOC5guC4lOC4ouC4geC4suC4o+C4geC4s+C4q+C4meC4lOC4q+C4oeC4suC4ouC5gOC4peC4guC5g+C4q+C5ieC4quC4s+C4q+C4o+C4seC4muC5geC4leC5iOC4peC4sOC4leC4seC4py4g4LiB4LmI4Lit4LiZ4Lir4LiZ4LmJ4Liy4LiX4Li14LmI4LmKIFVuaWNvZGUg4LiI4Liw4LiW4Li54LiB4Liq4Lij4LmJ4Liy4LiH4LiC4Li24LmJ4LiZLCDguYTguJTguYnguKHguLXguKPguLDguJrguJogZW5jb2Rpbmcg4Lit4Lii4Li54LmI4Lir4Lil4Liy4Lii4Lij4LmJ4Lit4Lii4Lij4Liw4Lia4Lia4Liq4Liz4Lir4Lij4Lix4Lia4LiB4Liy4Lij4LiB4Liz4Lir4LiZ4LiU4Lir4Lih4Liy4Lii4LmA4Lil4LiC4LmA4Lir4Lil4LmI4Liy4LiZ4Li14LmJLiDguYTguKHguYjguKHguLUgZW5jb2Rpbmcg4LmD4LiU4LiX4Li14LmI4Lih4Li14LiI4Liz4LiZ4Lin4LiZ4LiV4Lix4Lin4Lit4Lix4LiB4LiC4Lij4Liw4Lih4Liy4LiB4LmA4Lie4Li14Lii4LiH4Lie4LitOiDguKLguIHguJXguLHguKfguK3guKLguYjguLLguIfguYDguIrguYjguJksIOC5gOC4ieC4nuC4suC4sOC5g+C4meC4geC4peC4uOC5iOC4oeC4quC4q+C4oOC4suC4nuC4ouC4uOC5guC4o+C4m+C5gOC4nuC4teC4ouC4h+C5geC4q+C5iOC4h+C5gOC4lOC4teC4ouC4pyDguIHguYfguJXguYnguK3guIfguIHguLLguKPguKvguKXguLLguKIgZW5jb2Rpbmcg4LmD4LiZ4LiB4Liy4Lij4LiE4Lij4Lit4Lia4LiE4Lil4Li44Lih4LiX4Li44LiB4Lig4Liy4Lip4Liy4LmD4LiZ4LiB4Lil4Li44LmI4LihLiDguKvguKPguLfguK3guYHguKHguYnguYHguJXguYjguYPguJnguKDguLLguKnguLLguYDguJTguLXguYjguKLguKcg4LmA4LiK4LmI4LiZIOC4oOC4suC4qeC4suC4reC4seC4h+C4geC4pOC4qSDguIHguYfguYTguKHguYjguKHguLUgZW5jb2Rpbmcg4LmD4LiU4LiX4Li14LmI4LmA4Lie4Li14Lii4LiH4Lie4Lit4Liq4Liz4Lir4Lij4Lix4Lia4LiX4Li44LiB4LiV4Lix4Lin4Lit4Lix4LiB4Lip4LijLCDguYDguITguKPguLfguYjguK3guIfguKvguKHguLLguKLguKfguKPguKPguITguJXguK3guJkg4LmB4Lil4Liw4Liq4Lix4LiN4Lil4Lix4LiB4Lip4LiT4LmM4LiX4Liy4LiH4LmA4LiX4LiE4LiZ4Li04LiE4LiX4Li14LmI4LmD4LiK4LmJ4LiB4Lix4LiZ4Lit4Lii4Li54LmI4LiX4Lix4LmI4Lin4LmE4LibLiAKKwor4Lij4Liw4Lia4LiaIGVuY29kaW5nIOC5gOC4q+C4peC5iOC4suC4meC4teC5ieC4ouC4seC4h+C4guC4seC4lOC5geC4ouC5ieC4h+C4i+C4tuC5iOC4h+C4geC4seC4meC5geC4peC4sOC4geC4seC4mS4g4LiZ4Lix4LmI4LiZ4LiB4LmH4LiE4Li34LitLCDguYPguJnguKrguK3guIcgZW5jb2Rpbmcg4Liq4Liy4Lih4Liy4Lij4LiW4LmD4LiK4LmJ4Lir4Lih4Liy4Lii4LmA4Lil4LiC4LmA4LiU4Li14Lii4Lin4LiB4Lix4LiZ4Liq4Liz4Lir4Lij4Lix4Lia4LiV4Lix4Lin4Lit4Lix4LiB4LiC4Lij4Liw4Liq4Lit4LiH4LiV4Lix4Lin4LiX4Li14LmI4LmB4LiV4LiB4LiV4LmI4Liy4LiH4LiB4Lix4LiZLOC4q+C4o+C4t+C4reC5g+C4iuC5ieC4q+C4oeC4suC4ouC5gOC4peC4guC4leC5iOC4suC4h+C4geC4seC4meC4quC4s+C4q+C4o+C4seC4muC4reC4seC4geC4guC4o+C4sOC4leC4seC4p+C5gOC4lOC4teC4ouC4p+C4geC4seC4mS4g4LmD4LiZ4Lij4Liw4Lia4Lia4LiE4Lit4Lih4Lie4Li04Lin4LmA4LiV4Lit4Lij4LmMICjguYLguJTguKLguYDguInguJ7guLLguLDguYDguIvguLTguKPguYzguJ/guYDguKfguK3guKPguYwpIOC4leC5ieC4reC4h+C4oeC4teC4geC4suC4o+C4quC4meC4seC4muC4quC4meC4uOC4meC4q+C4peC4suC4oiBlbmNvZGluZzsg4LmB4Lil4Liw4LmA4Lih4Li34LmI4Lit4LiC4LmJ4Lit4Lih4Li54Lil4LiX4Li14LmI4Lic4LmI4Liy4LiZ4LmE4Lib4Lih4Liy4Lij4Liw4Lir4Lin4LmI4Liy4LiH4LiB4Liy4Lij4LmA4LiC4LmJ4Liy4Lij4Lir4Lix4Liq4Lir4Lij4Li34Lit4LmB4Lie4Lil4LmH4LiV4Lif4Lit4Lij4LmM4Lih4LiX4Li14LmI4LiV4LmI4Liy4LiH4LiB4Lix4LiZLCDguILguYnguK3guKHguLnguKXguJnguLHguYnguJnguIjguLDguYDguKrguLXguYjguKLguIfguJXguYjguK3guIHguLLguKPguJzguLTguJTguJ7guKXguLLguJTguYDguKrguLXguKLguKvguLLguKIuCisKK1VuaWNvZGUg4LiI4Liw4LmA4Lib4Lil4Li14LmI4Lii4LiZ4LmB4Lib4Lil4LiH4Liq4Li04LmI4LiH4LmA4Lir4Lil4LmI4Liy4LiZ4Lix4LmJ4LiZ4LiX4Lix4LmJ4LiH4Lir4Lih4LiUIQorVW5pY29kZSDguIHguLPguKvguJnguJTguKvguKHguLLguKLguYDguKXguILguYDguInguJ7guLLguLDguKrguLPguKvguKPguLHguJrguYHguJXguYjguKXguLDguK3guLHguIHguILguKPguLAsIOC5guC4lOC4ouC5hOC4oeC5iOC4quC4meC5g+C4iOC4p+C5iOC4suC5gOC4m+C5h+C4meC5geC4nuC4peC5h+C4leC4n+C4reC4o+C5jOC4oeC5g+C4lCwg4LmE4Lih4LmI4LiC4Li24LmJ4LiZ4LiB4Lix4Lia4Lin4LmI4Liy4LiI4Liw4LmA4Lib4LmH4LiZ4LmC4Lib4Lij4LmB4LiB4Lij4Lih4LmD4LiU4LmB4Lil4Liw4LmE4Lih4LmI4Lin4LmI4Liy4LiI4Liw4LmA4Lib4LmH4LiZ4Lig4Liy4Lip4Liy4LmD4LiULiDguKHguLLguJXguKPguJDguLLguJkgVW5pY29kZSDguYTguJTguYnguJbguLnguIHguJnguLPguYTguJvguYPguIrguYnguYLguJTguKLguJzguLnguYnguJnguLPguYPguJnguK3guLjguJXguKrguLLguKvguIHguKPguKPguKEg4LmA4LiK4LmI4LiZIEFwcGxlLCBIUCwgSUJNLCBKdXN0U3lzdGVtLCBNaWNyb3NvZnQsIE9yYWNsZSwgU0FQLCBTdW4sIFN5YmFzZSwgVW5pc3lzIOC5geC4peC4sOC4reC4t+C5iOC4meC5hiDguK3guLXguIHguKHguLLguIEuIFVuaWNvZGUg4LmA4Lib4LmH4LiZ4Liq4Li04LmI4LiH4LiX4Li14LmI4LiI4Liz4LmA4Lib4LmH4LiZ4Liq4Liz4Lir4Lij4Lix4Lia4Lih4Liy4LiV4Lij4LiQ4Liy4LiZ4LmD4Lir4Lih4LmI4LmGIOC5gOC4iuC5iOC4mSBYTUwsIEphdmEsIEVDTUFTY3JpcHQgKEphdmFTY3JpcHQpLCBMREFQLCBDT1JCQSAzLjAsIFdNTCDguK/guKXguK8uLCDguYHguKXguLDguYDguJvguYfguJnguYHguJnguKfguJfguLLguIfguK3guKLguYjguLLguIfguYDguJvguYfguJnguJfguLLguIfguIHguLLguKPguYPguJnguIHguLLguKPguJfguLMgSVNPL0lFQyAxMDY0Ni4gVW5pY29kZSDguYTguJTguYnguKPguLHguJrguIHguLLguKPguKrguJnguLHguJrguKrguJnguLjguJnguYPguJnguKPguLDguJrguJrguJvguI/guLTguJrguLHguJXguLTguIHguLLguKPguIjguLPguJnguKfguJnguKHguLLguIEsIOC4muC4o+C4suC4p+C5gOC4i+C4reC4o+C5jOC5g+C4q+C4oeC5iOC5hiDguJfguIHguJXguLHguKcsIOC5geC4peC4sOC4nOC4peC4tOC4leC4oOC4seC4k+C4keC5jOC4reC4t+C5iOC4meC5hiDguK3guLXguIHguKHguLLguIEuIOC4geC4suC4o+C5gOC4geC4tOC4lOC4guC4tuC5ieC4meC4guC4reC4hyBVbmljb2RlIFN0YW5kYXJkIOC5geC4peC4sOC4l+C4ueC4peC4quC5jOC4leC5iOC4suC4h+C5hiDguJfguLXguYjguKHguLXguYPguJnguIHguLLguKPguKrguJnguLHguJrguKrguJnguLjguJkgVW5pY29kZSwg4LmA4Lib4LmH4LiZ4Lir4LiZ4Li24LmI4LiH4LmD4LiZ4LmB4LiZ4Lin4LmC4LiZ4LmJ4Lih4LiX4Liy4LiH4LmA4LiX4LiE4LmC4LiZ4LmC4Lil4Lii4Li14LiL4Lit4Lif4LiV4LmM4LmB4Lin4Lij4LmM4Lij4Liw4LiU4Lix4Lia4LmC4Lil4LiB4LiX4Li14LmI4Lih4Li14LiE4Lin4Liy4Lih4Liq4Liz4LiE4Lix4LiN4LiX4Li14LmI4Liq4Li44LiULgorCivguIHguLLguKPguKPguKfguKEgVW5pY29kZSDguYDguILguYnguLLguYTguJvguYPguJnguKPguLDguJrguJrguYTguITguKXguYDguK3guYfguJnguJXguYwt4LmA4LiL4Li04Lij4LmM4Lif4LmA4Lin4Lit4Lij4LmMIOC4q+C4o+C4t+C4reC5geC4reC5h+C4nuC4nuC4peC4tOC5gOC4hOC4iuC4seC4meC5geC4muC4miBtdWx0aS10aWVyZWQg4LmB4Lil4Liw4LmA4Lin4LmH4Lia4LmE4LiL4LiV4LmMIOC4iOC4sOC4l+C4s+C5g+C4q+C5ieC5gOC4geC4tOC4lOC4geC4suC4o+C4m+C4o+C4sOC4q+C4ouC4seC4lOC4hOC5iOC4suC5g+C4iuC5ieC4iOC5iOC4suC4ouC4oeC4suC4geC4geC4p+C5iOC4suC4geC4suC4o+C5g+C4iuC5ieC4iuC4uOC4lOC4reC4seC4geC4guC4o+C4sOC5geC4muC4muC5gOC4lOC4tOC4oS4gVW5pY29kZSDguJfguLPguYPguKvguYnguJzguKXguLTguJXguKDguLHguJPguJHguYzguIvguK3guJ/guJXguYzguYHguKfguKPguYzguKvguJnguLbguYjguIfguYDguJTguLXguKLguKcg4Lir4Lij4Li34Lit4LmA4Lin4LmH4Lia4LmE4LiL4LiV4LmM4LmB4Lir4LmI4LiH4LmA4LiU4Li14Lii4LinIOC4o+C4reC4h+C4o+C4seC4muC5hOC4lOC5ieC4q+C4peC4suC4ouC5geC4nuC4peC5h+C4leC4n+C4reC4o+C5jOC4oSwg4Lir4Lil4Liy4Lii4Lig4Liy4Lip4Liy4LmB4Lil4Liw4Lir4Lil4Liy4Lii4Lib4Lij4Liw4LmA4LiX4Lio4LmC4LiU4Lii4LmE4Lih4LmI4LiV4LmJ4Lit4LiH4LiX4Liz4LiB4Liy4Lij4Lij4Li34LmJ4Lit4Lib4Lij4Lix4Lia4Lij4Liw4Lia4LiaLiBVbmljb2RlIOC4ouC4seC4h+C4l+C4s+C5g+C4q+C5ieC4guC5ieC4reC4oeC4ueC4peC4quC4suC4oeC4suC4o+C4luC5gOC4hOC4peC4t+C5iOC4reC4meC4ouC5ieC4suC4ouC5hOC4m+C4oeC4suC5g+C4meC4q+C4peC4suC4ouC5hiDguKPguLDguJrguJrguYLguJTguKLguYTguKHguYjguYDguIHguLTguJTguITguKfguLLguKHguJzguLTguJTguJ7guKXguLLguJTguYDguKrguLXguKLguKvguLLguKIuCisKK+C5gOC4geC4teC5iOC4ouC4p+C4geC4seC4miBVbmljb2RlIENvbnNvcnRpdW0KK1VuaWNvZGUgQ29uc29ydGl1bSDguYDguJvguYfguJnguK3guIfguITguYzguIHguKPguYTguKHguYjguYHguKrguKfguIfguKvguLLguIHguLPguYTguKPguJfguLXguYjguIHguYjguK3guJXguLHguYnguIfguILguLbguYnguJnguYDguJ7guLfguYjguK3guJ7guLHguJLguJnguLIsIOC4guC4ouC4suC4ouC5geC4peC4sOC4quC5iOC4h+C5gOC4quC4o+C4tOC4oeC4geC4suC4o+C5g+C4iuC5iSBVbmljb2RlIFN0YW5kYXJkLCDguIvguLbguYjguIfguIHguLPguKvguJnguJTguKPguLnguJvguYHguJrguJrguIHguLLguKPguYHguJfguJnguITguYjguLLguILguK3guIfguILguYnguK3guITguKfguLLguKHguYPguJnguJzguKXguLTguJXguKDguLHguJPguJHguYzguIvguK3guJ/guJXguYzguYHguKfguKPguYzguYHguKXguLDguKHguLLguJXguKPguJDguLLguJnguYPguKvguKHguYjguYYuIOC4quC4oeC4suC4iuC4tOC4geC4guC4reC4h+C4quC4oeC4suC4hOC4oeC5gOC4m+C5h+C4meC4leC4seC4p+C5geC4l+C4meC4iOC4suC4geC4muC4o+C4tOC4qeC4seC4l+C5geC4peC4sOC4reC4h+C4hOC5jOC4geC4o+C5g+C4meC4reC4uOC4leC4quC4suC4q+C4geC4o+C4o+C4oeC4hOC4reC4oeC4nuC4tOC4p+C5gOC4leC4reC4o+C5jOC5geC4peC4sOC4geC4suC4o+C4m+C4o+C4sOC4oeC4p+C4peC4nOC4peC4quC4suC4o+C4quC4meC5gOC4l+C4qC4g4Liq4Lih4Liy4LiE4Lih4LmE4LiU4LmJ4Lij4Lix4Lia4LiB4Liy4Lij4Liq4LiZ4Lix4Lia4Liq4LiZ4Li44LiZ4LiX4Liy4LiH4LiB4Liy4Lij4LmA4LiH4Li04LiZ4Lic4LmI4Liy4LiZ4LiX4Liy4LiH4LiE4LmI4Liy4LiY4Lij4Lij4Lih4LmA4LiZ4Li14Lii4Lih4LiC4Lit4LiH4LiB4Liy4Lij4LmA4Lib4LmH4LiZ4Liq4Lih4Liy4LiK4Li04LiB4LmA4LiX4LmI4Liy4LiZ4Lix4LmJ4LiZLiDguKrguKHguLLguIrguLTguIHguKDguLLguJ7guILguK3guIcgVW5pY29kZSBDb25zb3J0aXVtIOC5gOC4m+C4tOC4lOC4geC4p+C5ieC4suC4h+C4quC4s+C4q+C4o+C4seC4muC4reC4h+C4hOC5jOC4geC4o+C4q+C4o+C4t+C4reC4muC4uOC4hOC4hOC4peC5g+C4lOC5hiDguYPguJnguYLguKXguIHguJfguLXguYjguJXguYnguK3guIfguIHguLLguKPguKrguJnguLHguJrguKrguJnguLjguJkgVW5pY29kZSBTdGFuZGFyZCDguYHguKXguLDguIrguYjguKfguKLguYDguKvguKXguLfguK3guIHguLLguKPguILguKLguLLguKLguJXguLHguKfguYHguKXguLDguIHguLLguKPguJnguLMgVW5pY29kZSDguYTguJvguYPguIrguYnguIfguLLguJkuIAorCivguKrguLPguKvguKPguLHguJrguILguYnguK3guKHguLnguKXguYDguJ7guLTguYjguKHguYDguJXguLTguKEsIOC5g+C4q+C5ieC4lOC4ueC4l+C4teC5iCBHbG9zc2FyeSwgU2FtcGxlIFVuaWNvZGUtRW5hYmxlZCBQcm9kdWN0cywgVGVjaG5pY2FsIEludHJvZHVjdGlvbiDguYHguKXguLAgVXNlZnVsIFJlc291cmNlcy4KK0BUSVRMRUNBU0VACivguIHguYrguIHguYDguK7guIcg4LmB4LiL4LmI4LmB4LiV4LmJCivguIHguIrguIHguKMg4Lio4Lij4Liy4LiX4LiY4LiX4Lix4LiVCivguIHguJXguLTguIHguLIg4Lit4Lix4LiH4LiE4Liq4Li44Lig4LiTCivguIHguJnguIEg4LiY4Lij4Lij4Lih4Lib4Lij4Liw4LiX4Li14LibCivguIHguJnguIEg4Lin4LiH4Lio4LmM4LiX4Lit4LiH4Lio4Lij4Li1CivguIHguJnguIHguIHguKMg4LiK4LmJ4Liy4LiH4LmA4Lii4LmH4LiZ4LiJ4LmI4LizCivguIHguJnguIHguInguLHguJXguKPguYwg4LiW4Liy4Lin4Lij4LiZ4Lix4LiZ4LiX4LmMCivguIHguJnguIHguJnguKfguKUg4LmC4Lib4Lip4Lii4Liw4LiZ4Lix4LiZ4LiX4LiZ4LmMCivguIHguJnguIHguJ7guKMg4LiE4Lih4LiE4Liy4LiiCivguIHguJnguIHguJ7guKMg4LiV4Li14Lij4LmA4Lil4Li04Lio4Lie4Liy4LiZ4Li04LiKCivguIHguJnguIHguJ7guKMg4Lie4Lix4LiZ4LiX4LijCivguIHguJnguIHguJ7guKMg4Lio4Lij4Li14Lia4Lix4LiT4LiR4Li04LiVCivguIHguJnguIHguJ7guKMg4Lit4LiV4Li04Lin4Lij4Lij4LiT4Liy4Lie4Lix4LiS4LiZ4LmMCivguIHguJnguIHguJ7guKPguKPguJMg4Lio4Lij4Li14Lin4LiZ4Liy4Lig4Li04Lij4Lih4Lii4LmMCivguIHguJnguIHguKPguLHguJXguJnguYwg4LmA4LiB4Li14Lii4Lij4LiV4Li04Lii4Li04LmI4LiH4Lit4Lix4LiH4Lio4Li44Lil4Li1CivguIHguJnguIHguKPguLHguJXguJnguYwg4Liq4Li44LiY4Lij4Lij4Lih4Lie4Li04LiX4Lix4LiB4Lip4LmMCivguIHguJnguIHguKfguKPguKPguJMg4LiE4LiH4LiE4Liy4Lib4Lij4Liw4LmA4Liq4Lij4Li04LiQCivguIHguJnguIHguKfguKPguKPguJMg4LmB4LiL4LmI4LmA4LiV4Li14Lii4LinCivguIHguJnguIHguKfguKPguKPguJMg4Lia4Li44LiN4Lib4Lij4Liw4LmA4Liq4Lij4Li04LiQCivguIHguJnguIHguKfguKPguKPguJMg4Lij4Lix4LiB4LiX4Lij4Lix4Lie4Lii4LmMCivguIHguJnguIHguKfguKPguKPguJMg4Liq4Lix4LiI4LiI4Lie4LiH4Lip4LmMCivguIHguJnguIHguKfguKPguKPguJMg4Lit4Li44LmJ4Lii4Lin4LiH4Lio4LmM4LmE4Lie4Lio4Liy4LilCivguIHguJnguIHguKjguLHguIHguJTguLTguYwg4Lii4Li04LmI4LiH4Lii4LiHCivguIHguJnguIHguYHguIHguYnguKcg4LiB4Lij4Liq4Lih4Li04LiVCivguIHguJnguLTguKnguJDguLIg4LiX4LiZ4Li44LiW4LiZ4Lit4Lih4Lij4Liy4Lip4LiO4Lij4LmMCivguIHguJnguLTguKnguJDguLIg4Lir4Lin4Lix4LiH4Lin4Li04Lia4Li54Lil4Lii4LmM4LiB4Li04LiICivguIHguKHguKUg4LiB4Liy4LiN4LiI4LiZ4LmC4Lij4LiI4LiZ4LmMCivguIHguKHguKUg4LiE4Lix4Lih4Lig4Li14Lij4LmMCivguIHguKHguKUg4LmA4LiI4LiV4LiZ4LmM4Lih4LiH4LiE4Lil4Lij4Lix4LiV4LiZ4LmMCivguIHguKHguKUg4LiK4Li54LiV4Lij4Liw4LiB4Li54Lil4LiY4Lij4Lij4LihClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L01vZHVsZVRlc3QuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9Nb2R1bGVUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY4MTNiYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9Nb2R1bGVUZXN0LmphdmEKQEAgLTAsMCArMSwyNDggQEAKKy8qKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMS0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvTW9kdWxlVGVzdC5qYXZhLHYgJAorICogJERhdGU6IDIwMDIvMDgvMzEgMDQ6NTU6MTAgJAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3Q7CisKK2ltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5NZXRob2Q7CitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworCitpbXBvcnQgY29tLmlibS5pY3UuZGV2LnRlc3QuVGVzdERhdGFNb2R1bGUuVGVzdERhdGE7CitpbXBvcnQgY29tLmlibS5pY3UuZGV2LnRlc3QuVGVzdERhdGFNb2R1bGUuRGF0YU1hcDsKKworLyoqCisgKiBBIGNvbnZlbmllbmNlIGV4dGVuc2lvbiBvZiBUZXN0Rm13ayBmb3IgdXNlIGJ5IGRhdGEgbW9kdWxlLWRyaXZlbgorICogdGVzdHMuICBUZXN0cyBjYW4gaW1wbGVtZW50IHRoaXMgaWYgdGhleSBtYWtlIGV4dGVuc2l2ZSB1c2Ugb2YKKyAqIGluZm9ybWF0aW9uIGluIGEgVGVzdERhdGFNb2R1bGUuICBUaGUgbW9kdWxlIHNob3VsZCBiZSBvcGVuYWJsZQorICogdXNpbmcgVGVzdERhdGFNb2R1bGUub3BlbigpIHBhc3NpbmcgaW4gdGhlIGNsYXNzIG5hbWUgb2YgdGhpcyB0ZXN0CisgKiArICJEYXRhIi4gIEZvciBleGFtcGxlLCBhIHRlc3QgbmFtZWQgTXlUZXN0IHdvdWxkIGhhdmUgYSBtb2R1bGUKKyAqIG5hbWVkIE15VGVzdERhdGEuICBFYWNoIHRlc3QgbWV0aG9kIHNob3VsZCBhbHNvIGhhdmUgYQorICogY29ycmVzcG9uZGluZyB0ZXN0IGRhdGEgaW4gdGhlIG1vZHVsZSB3aG9zZSBuYW1lIG1hdGNoZXMgdGhlIHRlc3QKKyAqIG1ldGhvZCBuYW1lLgorICoKKyAqIFN1YmNsYXNzZXMgY2FuIGFsbG93IGZvciB0ZXN0IG1ldGhvZHMgdGhhdCBkb24ndCB1c2UgZGF0YSBmcm9tIHRoZQorICogbW9kZXVsIGJ5IG92ZXJyaWRpbmcgdmFsaWRhdGVNZXRob2QgdG8gcmV0dXJuIHRydWUgZm9yIHRoZXNlCisgKiBtZXRob2RzLiAgVGVzdHMgYXJlIGFsc28gZnJlZSB0byBpbnN0YW50aWF0ZSB0aGVpciBvd24gbW9kdWxlcyBhbmQKKyAqIHJ1biBmcm9tIHRoZW0sIHRob3VnaCBjYXJlIHNob3VsZCBiZSB0YWtlbiBub3QgdG8gaW50ZXJmZXJlIHdpdGgKKyAqIHRoZSBtZXRob2RzIGluIHRoaXMgY2xhc3MuCisgKgorICogU2VlIE1vZHVsZVRlc3RTYW1wbGUgZm9yIGFuIGV4YW1wbGUuICAqLworcHVibGljIGNsYXNzIE1vZHVsZVRlc3QgZXh0ZW5kcyBUZXN0Rm13ayB7CisgICAgcHJpdmF0ZSBUZXN0RGF0YU1vZHVsZSBtOworICAgIHByaXZhdGUgVGVzdERhdGEgdDsKKyAgICBwcml2YXRlIFN0cmluZyBtZXRob2ROYW1lOworCisgICAgcHJvdGVjdGVkIE1vZHVsZVRlc3QoKSB7CisgICAgICAgIHRoaXMobnVsbCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUGFzcyB0aGUgbmFtZSBvZiBhIHB1YmxpYyBuby1hcmcgbWV0aG9kIGluIHRoaXMgY2xhc3MgaWYgCisgICAgICogeW91IHdhbnQgdXNlIHRoYXQgbWV0aG9kIHRvIHJ1biBhbGwgdGhlIHRlc3RzIG9mZiB0aGUKKyAgICAgKiBkYXRhLCBvdGhlcndpc2UgcGFzcyBudWxsIGZvciB0aGUgdHlwaWNhbCB0ZXN0IGJlaGF2aW9yLgorICAgICAqLworICAgIHByb3RlY3RlZCBNb2R1bGVUZXN0KFN0cmluZyBtZXRob2ROYW1lKSB7CisgICAgICAgIHRoaXMubWV0aG9kTmFtZSA9IG1ldGhvZE5hbWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogU3ViY2xhc3NlcyBhY2Nlc3MgdGhpcyBhZnRlciBjYWxsaW5nIG5leHRTZXR0aW5ncyBhbmQgZ2V0dGluZworICAgICAqIGEgdHJ1ZSByZXN1bHQuCisgICAgICovCisgICAgcHJvdGVjdGVkIERhdGFNYXAgc2V0dGluZ3M7CisKKyAgICAvKioKKyAgICAgKiBTdWJjbGFzc2VzIGFjY2VzcyB0aGlzIGFmdGVyIGNhbGxpbmcgbmV4dENhc2UgYW5kIGdldHRpbmcgYQorICAgICAqIHRydWUgcmVzdWx0LgorICAgICAqLworICAgIHByb3RlY3RlZCBEYXRhTWFwIHRlc3RjYXNlOworCisgICAgLyoKKyAgICAgKiBJZiB3ZSB3ZXJlIGluaXRpYWxpemVkIHdpdGggdGhlIG5hbWUgb2YgYSBtZXRob2QgdG8gcnVuIHRoZQorICAgICAqIGRhdGEgZHJpdmVuIHRlc3RzLCBkcml2ZSB0ZXN0cyBvZmYgdGhlIGRhdGEgdXNpbmcgdGhhdCBtZXRob2QuCisgICAgICovCisgICAgcHJvdGVjdGVkIE1hcCBnZXRBdmFpbGFibGVUZXN0cygpIHsKKyAgICAgICAgaWYgKG1ldGhvZE5hbWUgIT0gbnVsbCkgeworICAgICAgICAgICAgTGlzdCBsaXN0ID0gZ2V0TW9kdWxlTmFtZXMoKTsKKworICAgICAgICAgICAgaWYgKGxpc3QgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIE1hcCBtYXAgPSBuZXcgSGFzaE1hcChsaXN0LnNpemUoKSk7CisgICAgICAgICAgICAgICAgYWRkTmFtZWRNZXRob2RUb01hcChsaXN0LCBtZXRob2ROYW1lLCBtYXApOworICAgICAgICAgICAgICAgIHJldHVybiBtYXA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gQ29sbGVjdGlvbnMuRU1QVFlfTUFQOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmdldEF2YWlsYWJsZVRlc3RzKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXN0Rm13ayBjYWxscyB0aGlzIGJlZm9yZSB0cnlpbmcgdG8gcnVuIGEgc3VpdGUgb2YgdGVzdHMuCisgICAgICogVGhlIHRlc3Qgc3VpdGUgaWYgdmFsaWQgaWYgYSBtb2R1bGUgd2hvc2UgbmFtZSBpcyB0aGUgbmFtZSBvZgorICAgICAqIHRoaXMgY2xhc3MgKyAiRGF0YSIgY2FuIGJlIG9wZW5lZC4gIFN1YmNsYXNzZXMgY2FuIG92ZXJyaWRlCisgICAgICogdGhpcyBpZiB0aGVyZSBhcmUgZGlmZmVyZW50IG9yIGFkZGl0aW9uYWwgZGF0YSByZXF1aXJlZC4gIAorICAgICAqLworICAgIHByb3RlY3RlZCBib29sZWFuIHZhbGlkYXRlKCkgeworICAgICAgICByZXR1cm4gb3Blbk1vZHVsZShnZXRDbGFzcygpLmdldE5hbWUoKSsiRGF0YSIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3RGbXdrIGNhbGxzIHRoaXMgYmVmb3JlIHRyeWluZyB0byBpbnZva2UgYSB0ZXN0IG1ldGhvZC4KKyAgICAgKiBUaGUgbWV0aG9kIGlzIHZhbGlkIGlmIHRoZXJlIGlzIHRlc3QgZGF0YSB3aXRoIHRoZSBuYW1lIG9mIHRoaXMKKyAgICAgKiBtZXRob2QgaW4gdGhlIG1vZHVsZS4gIFN1YmNsYXNzZXMgY2FuIG92ZXJyaWRlIHRoaXMgdG8gYWxsb3cKKyAgICAgKiBmb3IgdGVzdHMgdGhhdCBkbyBub3QgcmVxdWlyZSB0ZXN0IGRhdGEgZnJvbSB0aGUgbW9kdWxlLCBvcgorICAgICAqIGlmIHRoZXJlIGFyZSBkaWZmZXJlbnQgb3IgYWRkaXRpb25hbCBkYXRhIHJlcXVpcmVkLgorICAgICAqLworICAgIHByb3RlY3RlZCBib29sZWFuIHZhbGlkYXRlTWV0aG9kKFN0cmluZyBtZXRob2ROYW1lKSB7CisJcmV0dXJuIG9wZW5UZXN0RGF0YShtZXRob2ROYW1lKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZSBvZiBUZXN0Rm13ayBtZXRob2QgdG8gZ2V0IHRoZSB0ZXN0IHN1aXRlIGRlc2NyaXB0aW9uCisgICAgICogZnJvbSB0aGUgREVTQ1JJUFRJT04gZmllbGQgb2YgdGhlIG1vZHVsZSBpbmZvLiAgCisgICAgICovCisgICAgcHJvdGVjdGVkIFN0cmluZyBnZXREZXNjcmlwdGlvbigpIHsKKwlEYXRhTWFwIGluZm8gPSBtb2R1bGVJbmZvKCk7CisJaWYgKGluZm8gIT0gbnVsbCkgeworCSAgICByZXR1cm4gaW5mby5nZXRTdHJpbmcoVGVzdERhdGFNb2R1bGUuREVTQ1JJUFRJT04pOworCX0KKwlyZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZSBvZiBUZXN0Rm13ayBtZXRob2QgdG8gZ2V0IHRoZSB0ZXN0IG1ldGhvZCBkZXNjcmlwdGlvbgorICAgICAqIGZyb20gdGhlIERFU0NSSVBUSU9OIGZpZWxkIG9mIHRoZSB0ZXN0IGluZm8uICAKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgU3RyaW5nIGdldE1ldGhvZERlc2NyaXB0aW9uKFN0cmluZyBtZXRob2ROYW1lKSB7CisJaWYgKG9wZW5UZXN0RGF0YShtZXRob2ROYW1lKSkgeworCSAgICBEYXRhTWFwIGluZm8gPSB0ZXN0SW5mbygpOworCSAgICBpZiAoaW5mbyAhPSBudWxsKSB7CisJCXJldHVybiBpbmZvLmdldFN0cmluZyhUZXN0RGF0YU1vZHVsZS5ERVNDUklQVElPTik7CisJICAgIH0KKwl9CisJcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgLyoqCisgICAgICogT3BlbnMgdGhlIG1vZHVsZSB3aXRoIHRoZSBnaXZlbiBuYW1lLCBhbmQgcmV0dXJuIHRydWUgaWYgc3VjY2Vzcy4KKyAgICAgKiBBbGwgY29udGVudHMgYXJlIHJlc2V0LgorICAgICAqLworICAgIHByb3RlY3RlZCBib29sZWFuIG9wZW5Nb2R1bGUoU3RyaW5nIG5hbWUpIHsKKwl0ID0gbnVsbDsKKwltID0gVGVzdERhdGFNb2R1bGUub3BlbihuYW1lLCB0aGlzKTsKKwlyZXR1cm4gbSAhPSBudWxsOworICAgIH0KKworICAgIC8qKgorICAgICAqIE9wZW4gdGhlIHRlc3QgZGF0YSBpbiB0aGUgbW9kdWxlIHdpdGggdGhlIGdpdmVuIG5hbWUsIGFuZCByZXR1cm4KKyAgICAgKiB0cnVlIGlmIHN1Y2Nlc3MuICBUaGUgY3VycmVudCB0ZXN0IGlzIHJlc2V0LgorICAgICAqLworICAgIHByb3RlY3RlZCBib29sZWFuIG9wZW5UZXN0RGF0YShTdHJpbmcgbmFtZSkgeworCXQgPSBtID09IG51bGwgPyBudWxsIDogbS5jcmVhdGVUZXN0RGF0YShuYW1lKTsKKwlyZXR1cm4gdCAhPSBudWxsOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhbiB1bm1vZGlmaWFibGUgTGlzdCBvZiB0aGUgbmFtZXMgb2YgYWxsIHRoZSB0ZXN0cyBpbiB0aGUgbW9kdWxlLgorICAgICAqLworICAgIHByb3RlY3RlZCBMaXN0IGdldE1vZHVsZU5hbWVzKCkgeworICAgICAgICBpZiAodmFsaWRhdGUoKSkgeworICAgICAgICAgICAgcmV0dXJuIG0uZ2V0VGVzdERhdGFOYW1lcygpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIC8qKgorICAgICAqIFV0aWxpdHkgdGhhdCBhc3NvY2lhdGVzIGEgcHVibGljIG5hbWVkIGZ1bmN0aW9uIGluIHRoaXMgY2xhc3MKKyAgICAgKiB3aXRoIGFsbCB0aGUgbmFtZXMgaW4gdGhlIHByb3ZpZGVkIFNldC4gIFRoZSBmdW5jdGlvbiBzaG91bGQgYmUKKyAgICAgKiBwdWJsaWMgYW5kIHRha2Ugbm8gcGFyYW1ldGVycyAobGlrZSBhIFRlc3RYWFggbWV0aG9kKS4gWW91IGNhbgorICAgICAqIHVzZSB0aGlzIHRvIG92ZXJyaWRlIGdldEF2YWlsYWJsZVRlc3RzIGZyb20gVGVzdEZtd2ssIHdoaWNoIGJ5CisgICAgICogZGVmYXVsdCBhc3NvY2lhdGVzIHRoZSBuYW1lcyAgVGVzdFhYWCBvciB0ZXN0WFhYIHdpdGgKKyAgICAgKiB0aGUgY29ycmVzcG9uZGluZyBtZXRob2RzIGluIHRoZSBjbGFzcy4gIE1vZHVsZVRlc3RzIG1heSB3aXNoCisgICAgICogdG8gdXNlIGEgc2luZ2xlIG1ldGhvZCB0byBkcml2ZSBhbGwgdGhlIHRlc3RzIGluIHRoZSBtb2R1bGUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gbmFtZXMgdGhlIG5hbWVzIHRvIGFzc29jaWF0ZWQgd2l0aCB0aGUgbmFtZWQgbWV0aG9kLgorICAgICAqIEBwYXJhbSBtZXRob2ROYW1lIHRoZSBuYW1lIG9mIHRoZSBtZXRob2QgaW4gdGhpcyBjbGFzcyB0byBhc3NvY2lhdGUgd2l0aCBuYW1lcworICAgICAqIEBwYXJhbSBkZXN0IHRoZSBtYXAgdG8gaG9sZCB0aGUgbmFtZS0+bWV0aG9kIG1hcHBpbmcgCisgICAgICovCisgICAgcHJvdGVjdGVkIHZvaWQgYWRkTmFtZWRNZXRob2RUb01hcChMaXN0IG5hbWVzLCBTdHJpbmcgbWV0aG9kTmFtZSwgTWFwIGRlc3QpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIE1ldGhvZCBtZXRob2QgPSBnZXRDbGFzcygpLmdldE1ldGhvZChtZXRob2ROYW1lLCBudWxsKTsKKyAgICAgICAgICAgIEl0ZXJhdG9yIGkgPSBuYW1lcy5pdGVyYXRvcigpOworICAgICAgICAgICAgd2hpbGUgKGkuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICAgICAgZGVzdC5wdXQoaS5uZXh0KCksIG1ldGhvZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihlLmdldE1lc3NhZ2UoKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogR2V0IGluZm9ybWF0aW9uIG9uIHRoaXMgbW9kdWxlLiAgUmV0dXJucyBudWxsIGlmIG5vIG1vZHVsZQorICAgICAqIG9wZW4gb3Igbm8gaW5mbyBmb3IgdGhlIG1vZHVsZS4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgRGF0YU1hcCBtb2R1bGVJbmZvKCkgeworCXJldHVybiBtID09IG51bGwgPyBudWxsIDogbS5nZXRJbmZvKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0IGluZm9ybWF0aW9uIG9uIHRoaXMgdGVzdC4gIFJldHVybnMgbnVsbCBpZiBubyBtb2R1bGUKKyAgICAgKiBvcGVuIG9yIG5vIHRlc3Qgb3BlbiBvciBub3QgaW5mbyBmb3IgdGhpcyB0ZXN0LgorICAgICAqLworICAgIHByb3RlY3RlZCBEYXRhTWFwIHRlc3RJbmZvKCkgeworCXJldHVybiB0ID09IG51bGwgPyBudWxsIDogdC5nZXRJbmZvKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQWR2YW5jZSB0ZXN0IHRvIHRoZSBuZXh0IHNldHRpbmdzLCBhbmQgcmV0dXJuIHRydWUgaWYgCisgICAgICogdGhlcmUgYXJlIG1vcmUgc2V0dGluZ3MuICBUaGUgcHJvdGVjdGVkIG1lbWJlciB2YXJpYWJsZQorICAgICAqICdzZXR0aW5ncycgaG9sZHMgdGhlIG5ldyBzZXR0aW5ncyBkYXRhLgorICAgICAqLworICAgIHByb3RlY3RlZCBib29sZWFuIG5leHRTZXR0aW5ncygpIHsKKwlzZXR0aW5ncyA9IHQgPT0gbnVsbCA/IG51bGwgOiB0Lm5leHRTZXR0aW5ncygpOworCXJldHVybiBzZXR0aW5ncyAhPSBudWxsOworICAgIH0KKworICAgIC8qKgorICAgICAqIEFkdmFuY2UgdGVzdCB0byB0aGUgbmV4dCBjYXNlLCBhbmQgcmV0dXJuIHRydWUgaWYgdGhlcmUKKyAgICAgKiBpcyBhbm90aGVyIGNhc2UuICBUaGUgcHJvdGVjdGVkIG1lbWJlciB2YXJpYWJsZQorICAgICAqICd0ZXN0Y2FzZScgaG9sZHMgdGhlIG5ldyBjYXNlIGRhdGEuCisgICAgICovCisgICAgcHJvdGVjdGVkIGJvb2xlYW4gbmV4dENhc2UoKSB7CisJdGVzdGNhc2UgPSB0ID09IG51bGwgPyBudWxsIDogdC5uZXh0Q2FzZSgpOworCXJldHVybiB0ZXN0Y2FzZSAhPSBudWxsOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlcG9ydCBhbiBlcnJvciwgYW5kIHN0b3AgaXRlcmF0aW9uIG9mIHRoZSBjdXJyZW50IHRlc3QuCisgICAgICovCisgICAgcHVibGljIHZvaWQgZXJyKFN0cmluZyBtZXNzYWdlKSB7CisJaWYgKHQgIT0gbnVsbCkgeworCSAgICB0LnN0b3BJdGVyYXRpb24oKTsKKwl9CisJc3VwZXIuZXJyKG1lc3NhZ2UpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlcG9ydCBhbiBlcnJvciwgYW5kIHN0b3AgaXRlcmF0aW9uIG9mIHRoZSBjdXJyZW50IHRlc3QuCisgICAgICovCisgICAgcHVibGljIHZvaWQgZXJybG4oU3RyaW5nIG1lc3NhZ2UpIHsKKwlpZiAodCAhPSBudWxsKSB7CisJICAgIHQuc3RvcEl0ZXJhdGlvbigpOworCX0KKwlzdXBlci5lcnJsbihtZXNzYWdlKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvUmVzb3VyY2VNb2R1bGUuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9SZXNvdXJjZU1vZHVsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkOWMzZWEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvUmVzb3VyY2VNb2R1bGUuamF2YQpAQCAtMCwwICsxLDU5MSBAQAorLyoqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9SZXNvdXJjZU1vZHVsZS5qYXZhLHYgJAorICogJERhdGU6IDIwMDIvMDgvMzEgMDQ6NTU6MTAgJAorICogJFJldmlzaW9uOiAxLjQgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3Q7CisKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGU7CisKKy8qKgorICogUmVzb3VyY2UtYmFzZWQgbW9kdWxlLgorICovCitwdWJsaWMgY2xhc3MgUmVzb3VyY2VNb2R1bGUgZXh0ZW5kcyBUZXN0RGF0YU1vZHVsZSB7CisgICAgcHJpdmF0ZSBOYW1lZEFycmF5IHRlc3RzOworICAgIHByaXZhdGUgUkJEYXRhTWFwIGluZm87CisgICAgcHJpdmF0ZSBTdHJpbmdbXSBkZWZhdWx0SGVhZGVyczsKKworICAgIC8qKgorICAgICAqIEZvciBpbnRlcm5hbCB1c2UuCisgICAgICovCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBURVNUUyA9ICJUZXN0RGF0YSI7CisKKyAgICAvKioKKyAgICAgKiBGb3IgaW50ZXJuYWwgdXNlLgorICAgICAqLworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgSU5GTyA9ICJJbmZvIjsKKworICAgIC8qKgorICAgICAqIEZvciBpbnRlcm5hbCB1c2UuCisgICAgICovCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBTRVRUSU5HUyA9ICJTZXR0aW5ncyI7CisKKyAgICAvKioKKyAgICAgKiBGb3IgaW50ZXJuYWwgdXNlLgorICAgICAqLworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ0FTRVMgPSAiQ2FzZXMiOworCisgICAgcHVibGljIFJlc291cmNlTW9kdWxlKFN0cmluZyBuYW1lLCBUZXN0TG9nIGxvZywgUmVzb3VyY2VCdW5kbGUgYikgeworCXN1cGVyKG5hbWUsIGxvZyk7CisKKwlpZiAoYiA9PSBudWxsKSB7CisJICAgIGxvZy5lcnJsbigiUmVzb3VyY2VNb2R1bGUgbXVzdCBoYXZlIG5vbi1udWxsIGJ1bmRsZSIpOworCSAgICByZXR1cm47CisJfQorCisJT2JqZWN0W11bXSBkYXRhID0gKE9iamVjdFtdW10pYi5nZXRPYmplY3QoVEVTVFMpOworCWlmIChkYXRhID09IG51bGwpIHsKKwkgICAgbG9nLmVycmxuKCJSZXNvdXJjZU1vZHVsZSBkb2VzIG5vdCBjb250YWluIHRlc3RzISIpOworCSAgICByZXR1cm47CisJfQorCXRoaXMudGVzdHMgPSBOYW1lZEFycmF5LmNyZWF0ZShkYXRhKTsKKworCU9iamVjdFtdW10gdGVtcCA9IChPYmplY3RbXVtdKWIuZ2V0T2JqZWN0KElORk8pOworCWlmICh0ZW1wICE9IG51bGwpIHsKKwkgICAgTmFtZWRBcnJheSBuYSA9IE5hbWVkQXJyYXkuY3JlYXRlKHRlbXApOworCSAgICBpZiAobmEuY291bnQoKSA8IDApIHsKKwkJbG9nLmVycmxuKCJCYWQgZGF0YSBmb3IgIiArIElORk8pOworCSAgICB9IGVsc2UgeworCQl0aGlzLmluZm8gPSBuZXcgUkJEYXRhTWFwKGxvZywgbmEsIGZhbHNlKTsJCisJCXRoaXMuZGVmYXVsdEhlYWRlcnMgPSBpbmZvLmdldFN0cmluZ0FycmF5KEhFQURFUlMpOwkKKwkgICAgfQorCX0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXQgYWRkaXRpb25hbCBkYXRhIHJlbGF0ZWQgdG8gdGhlIG1vZHVsZS4KKyAgICAgKiBSZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bGx5IGdvdCBpbmZvLgorICAgICAqLworICAgIHB1YmxpYyBEYXRhTWFwIGdldEluZm8oKSB7CisJcmV0dXJuIGluZm87CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgVGVzdCBvYmplY3QgY29ycmVzcG9uZGluZyB0byBuYW1lLCAKKyAgICAgKiBvciBudWxsIGlmIG5hbWUgbm90IGZvdW5kIGluIHRoaXMgbW9kdWxlLgorICAgICAqLworICAgIHB1YmxpYyBUZXN0RGF0YSBjcmVhdGVUZXN0RGF0YShTdHJpbmcgbmFtZSkgeworCWlmICh0ZXN0cyAhPSBudWxsKSB7CisJICAgIE9iamVjdFtdIHRkID0gdGVzdHMuZ2V0RW50cnkobmFtZSk7CisJICAgIGlmICh0ZCAhPSBudWxsKSB7CisJCXJldHVybiBjcmVhdGVUZXN0RGF0YSh0ZCk7CisJICAgIH0KKwl9CisKKwlyZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBUZXN0IG9iamVjdCBjb3JyZXNwb25kaW5nIHRvIGluZGV4LAorICAgICAqIG9yIG51bGwgaWYgaW5kZXggaXMgb3V0IG9mIHJhbmdlIGZvciB0aGlzIG1vZHVsZS4KKyAgICAgKiBObyBlcnJvciBsb2dnZWQgaWYgaW5kZXggaXMgb3V0IG9mIGJvdW5kcywgdGhlIGFzc3VtcHRpb24gaXMgdGhhdAorICAgICAqIGl0ZXJhdGlvbiBpcyBiZWluZyB1c2VkIGFuZCBwcm9jZWVkcyB1bnRpbCBhIG51bGwgcmV0dXJuLgorICAgICAqLworICAgIHB1YmxpYyBUZXN0RGF0YSBjcmVhdGVUZXN0RGF0YShpbnQgaW5kZXgpIHsKKwlpZiAodGVzdHMgIT0gbnVsbCkgeworCSAgICBPYmplY3RbXSB0ZCA9IHRlc3RzLmdldEVudHJ5KGluZGV4KTsKKwkgICAgaWYgKHRkICE9IG51bGwpIHsKKwkJcmV0dXJuIGNyZWF0ZVRlc3REYXRhKHRkKTsKKwkgICAgfQorCX0KKwlyZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYW4gdW5tb2RpZmlhYmxlIGxpc3Qgb2YgdGhlIHRlc3QgZGF0YSBuYW1lcywgaW4gaW5kZXggb3JkZXIuCisgICAgICovCisgICAgcHVibGljIExpc3QgZ2V0VGVzdERhdGFOYW1lcygpIHsKKyAgICAgICAgaWYgKHRlc3RzICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBDb2xsZWN0aW9ucy51bm1vZGlmaWFibGVMaXN0KEFycmF5cy5hc0xpc3QodGVzdHMubmFtZXMoKSkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIHByaXZhdGUgVGVzdERhdGEgY3JlYXRlVGVzdERhdGEoT2JqZWN0W10gZCkgeworCXJldHVybiBuZXcgUkJUZXN0RGF0YSh0aGlzLCAoU3RyaW5nKWRbMF0sIChPYmplY3RbXVtdKWRbMV0sIGRlZmF1bHRIZWFkZXJzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQcm92aWRlcyBhY2Nlc3MgdG8gdmFsdWVzIGVpdGhlciBieSBpbmRleCBvciBieSBjYXNlLWluc2Vuc2l0aXZlIHNlYXJjaCBvbiAKKyAgICAgKiB0aGUgbmFtZS4gIFBvb3IgbWFuJ3MgTWFwIHdpdGggaW5kZXguCisgICAgICovCisgICAgc3RhdGljIGFic3RyYWN0IGNsYXNzIE5hbWVkQXJyYXkgeworCWludCB0eGNhY2hlOworCWludCBjb3VudDsKKworCXN0YXRpYyBOYW1lZEFycmF5IGNyZWF0ZShPYmplY3RbXVtdIHBhaXJzKSB7CisJICAgIHJldHVybiBuZXcgTmFtZWRBcnJheU9mUGFpcnMocGFpcnMpOworCX0KKworCXN0YXRpYyBOYW1lZEFycmF5IGNyZWF0ZShTdHJpbmdbXSBuYW1lcywgT2JqZWN0W10gdmFsdWVzKSB7CisJICAgIHJldHVybiBuZXcgTmFtZWRBcnJheVR3b0xpc3RzKG5hbWVzLCB2YWx1ZXMpOworCX0KKworCXByb3RlY3RlZCBOYW1lZEFycmF5KGludCBjb3VudCkgeworCSAgICB0aGlzLmNvdW50ID0gY291bnQ7CisJfQorCisJcHVibGljIGZpbmFsIGludCBjb3VudCgpIHsKKwkgICAgcmV0dXJuIGNvdW50OworCX0KKworCXB1YmxpYyBmaW5hbCBib29sZWFuIGlzRGVmaW5lZChTdHJpbmcgbmFtZSkgeworCSAgICBpbnQgaXggPSBuYW1lVG9JbmRleChuYW1lKTsKKwkgICAgaWYgKGl4ICE9IC0xKSB7CisJCXR4Y2FjaGUgPSAoaXggPT0gMCA/IGNvdW50IDogaXgpIC0gMTsKKwkJcmV0dXJuIHRydWU7CisJICAgIH0KKwkgICAgcmV0dXJuIGZhbHNlOworCX0KKworCXB1YmxpYyBmaW5hbCBPYmplY3RbXSBnZXRFbnRyeShTdHJpbmcgbmFtZSkgeworCSAgICByZXR1cm4gZ2V0RW50cnkobmFtZVRvSW5kZXgobmFtZSkpOworCX0KKworCXB1YmxpYyBmaW5hbCBPYmplY3QgZ2V0VmFsdWUoU3RyaW5nIG5hbWUpIHsKKwkgICAgcmV0dXJuIGdldFZhbHVlKG5hbWVUb0luZGV4KG5hbWUpKTsKKwl9CisJCisJcHVibGljIGZpbmFsIE9iamVjdFtdIGdldEVudHJ5KGludCBpbmRleCkgeworCSAgICBpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IGNvdW50KSB7CisJCXJldHVybiBlbnRyeUF0SW5kZXgoaW5kZXgpOworCSAgICB9CisJICAgIHJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBmaW5hbCBPYmplY3QgZ2V0VmFsdWUoaW50IGluZGV4KSB7CisJICAgIGlmIChpbmRleCA+PSAwICYmIGluZGV4IDwgY291bnQpIHsKKwkJcmV0dXJuIHZhbHVlQXRJbmRleChpbmRleCk7CisJICAgIH0KKwkgICAgcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIFN0cmluZ1tdIG5hbWVzKCkgeworCSAgICBpZiAoY291bnQgPiAwKSB7CisJCVN0cmluZ1tdIHJlc3VsdCA9IG5ldyBTdHJpbmdbY291bnRdOworCQlmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKwkJICAgIHJlc3VsdFtpXSA9IG5hbWVBdEluZGV4KGkpOworCQl9CisJCXJldHVybiByZXN1bHQ7CisJICAgIH0KKwkgICAgcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIE9iamVjdFtdIHZhbHVlcygpIHsKKwkgICAgaWYgKGNvdW50ID4gMCkgeworCQlPYmplY3RbXSByZXN1bHQgPSBuZXcgT2JqZWN0W2NvdW50XTsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CisJCSAgICByZXN1bHRbaV0gPSB2YWx1ZUF0SW5kZXgoaSk7CisJCX0KKwkJcmV0dXJuIHJlc3VsdDsKKwkgICAgfQorCSAgICByZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworCSAgICBTdHJpbmdCdWZmZXIgYnVmID0gbmV3IFN0cmluZ0J1ZmZlcihzdXBlci50b1N0cmluZygpKTsKKwkgICAgYnVmLmFwcGVuZCgiY291bnQ6ICIgKyBjb3VudCArICJ7Iik7CisJICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworCQlidWYuYXBwZW5kKCJcbiAgeyAiICsgbmFtZUF0SW5kZXgoaSkgKyAiLCAiICsgdmFsdWVBdEluZGV4KGkpICsgIiB9Iik7CisJICAgIH0KKwkgICAgYnVmLmFwcGVuZCgifSIpOworCSAgICByZXR1cm4gYnVmLnRvU3RyaW5nKCk7CisJfQorCisJcHJvdGVjdGVkIGludCBuYW1lVG9JbmRleChTdHJpbmcgbmFtZSkgeworCSAgICBpZiAobmFtZSAhPSBudWxsICYmIGNvdW50ID4gMCkgeworCQlpbnQgaSA9IHR4Y2FjaGU7CisJCWRvIHsKKwkJICAgIGlmICgrK2kgPT0gY291bnQpIHsKKwkJCWkgPSAwOworCQkgICAgfQorCQkgICAgaWYgKG5hbWUuZXF1YWxzSWdub3JlQ2FzZShuYW1lQXRJbmRleChpKSkpIHsKKwkJCXR4Y2FjaGUgPSBpOworCQkJcmV0dXJuIGk7CisJCSAgICB9CisJCX0gd2hpbGUgKGkgIT0gdHhjYWNoZSk7CisJICAgIH0KKwkgICAgcmV0dXJuIC0xOworCX0KKworCXByb3RlY3RlZCBPYmplY3RbXSBlbnRyeUF0SW5kZXgoaW50IGluZGV4KSB7CisJICAgIHJldHVybiBuZXcgT2JqZWN0W10geyBuYW1lQXRJbmRleChpbmRleCksIHZhbHVlQXRJbmRleChpbmRleCkgfTsKKwl9CisKKwlwcm90ZWN0ZWQgYWJzdHJhY3QgU3RyaW5nIG5hbWVBdEluZGV4KGludCBpbmRleCk7CisJcHJvdGVjdGVkIGFic3RyYWN0IE9iamVjdCB2YWx1ZUF0SW5kZXgoaW50IGluZGV4KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBOYW1lZEFycmF5IGltcGxlbWVudGVkIHVzaW5nIGFuIGFycmF5IG9mIG5hbWUvdmFsdWUKKyAgICAgKiBwYWlycywgcmVwcmVzZW50ZWQgYnkgYW4gT2JqZWN0W11bXS4KKyAgICAgKi8KKyAgICBzdGF0aWMgZmluYWwgY2xhc3MgTmFtZWRBcnJheU9mUGFpcnMgZXh0ZW5kcyBOYW1lZEFycmF5IHsKKwlwcml2YXRlIE9iamVjdFtdW10gZGF0YTsKKworCXB1YmxpYyBOYW1lZEFycmF5T2ZQYWlycyhPYmplY3RbXVtdIGRhdGEpIHsKKwkgICAgc3VwZXIoZGF0YSA9PSBudWxsID8gLTEgOiBkYXRhLmxlbmd0aCk7CisJICAgIHRoaXMuZGF0YSA9IGRhdGE7CisJfQorCisJcHJvdGVjdGVkIE9iamVjdFtdIGVudHJ5QXRJbmRleChpbnQgaW5kZXgpIHsKKwkgICAgcmV0dXJuIGRhdGFbaW5kZXhdOworCX0KKworCXByb3RlY3RlZCBTdHJpbmcgbmFtZUF0SW5kZXgoaW50IGluZGV4KSB7CisJICAgIHJldHVybiAoU3RyaW5nKWRhdGFbaW5kZXhdWzBdOworCX0KKworCXByb3RlY3RlZCBPYmplY3QgdmFsdWVBdEluZGV4KGludCBpbmRleCkgeworCSAgICByZXR1cm4gZGF0YVtpbmRleF1bMV07CisJfQorICAgIH0KKworICAgIC8qKgorICAgICAqIE5hbWVkQXJyYXkgaW1wbGVtZW50ZWQgdXNpbmcgdHdvIGFycmF5cywgb25lIG9mIFN0cmluZyBhbmQgb25lIG9mIE9iamVjdC4KKyAgICAgKi8KKyAgICBzdGF0aWMgZmluYWwgY2xhc3MgTmFtZWRBcnJheVR3b0xpc3RzIGV4dGVuZHMgTmFtZWRBcnJheSB7CisJU3RyaW5nW10gbmFtZXM7CisJT2JqZWN0W10gdmFsdWVzOworCisJcHVibGljIE5hbWVkQXJyYXlUd29MaXN0cyhTdHJpbmdbXSBuYW1lcywgT2JqZWN0W10gdmFsdWVzKSB7CisJICAgIHN1cGVyICh2YWx1ZXMgIT0gbnVsbCAmJiBuYW1lcyAhPSBudWxsICYmIG5hbWVzLmxlbmd0aCA9PSB2YWx1ZXMubGVuZ3RoID8KKwkJICAgbmFtZXMubGVuZ3RoIDoKKwkJICAgLTEpOworCSAgICB0aGlzLm5hbWVzID0gbmFtZXM7CisJICAgIHRoaXMudmFsdWVzID0gdmFsdWVzOworCX0KKwkgICAgCisJcHVibGljIFN0cmluZ1tdIG5hbWVzKCkgeworCSAgICByZXR1cm4gbmFtZXM7CisJfQorCisJcHVibGljIE9iamVjdFtdIHZhbHVlcygpIHsKKwkgICAgcmV0dXJuIHZhbHVlczsKKwl9CisKKwlwcm90ZWN0ZWQgU3RyaW5nIG5hbWVBdEluZGV4KGludCBpbmRleCkgeworCSAgICByZXR1cm4gbmFtZXNbaW5kZXhdOworCX0KKworCXByb3RlY3RlZCBPYmplY3QgdmFsdWVBdEluZGV4KGludCBpbmRleCkgeworCSAgICByZXR1cm4gdmFsdWVzW2luZGV4XTsKKwl9CisgICAgfQorCisgICAgc3RhdGljIGNsYXNzIFJCVGVzdERhdGEgZXh0ZW5kcyBUZXN0RGF0YSB7CisJUmVzb3VyY2VNb2R1bGUgbTsKKwlSQkRhdGFNYXAgaW5mbzsKKwlPYmplY3RbXSBzZXR0aW5nczsKKyAgICAvKiogCisgICAgICogY2hhbmdlZCB0byBmaXQgdGhlIGMgZ2VucmIgZm9ybWF0LiB0aGlzIGlzIGFjdHVhbGx5IE9iamVjdFtdIHtPYmplY3RbXX0KKyAgICAgKi8KKwlPYmplY3RbXSBjYXNlczsgCisJU3RyaW5nW10gaGVhZGVyczsKKwlpbnQgc3g7CisJaW50IGN4OworCisJUkJUZXN0RGF0YShSZXNvdXJjZU1vZHVsZSBtLCBTdHJpbmcgbmFtZSwgT2JqZWN0W11bXSBkYXRhLCBTdHJpbmdbXSBkZWZhdWx0SGVhZGVycykgeworCSAgICBzdXBlcihuYW1lKTsKKwkgICAgdGhpcy5tID0gbTsKKworCSAgICBOYW1lZEFycmF5IG5hbWVkRGF0YSA9IE5hbWVkQXJyYXkuY3JlYXRlKGRhdGEpOworCisJICAgIHRyeSB7CisJCU9iamVjdFtdW10gdGVtcCA9IChPYmplY3RbXVtdKW5hbWVkRGF0YS5nZXRWYWx1ZShJTkZPKTsKKwkJaWYgKHRlbXAgIT0gbnVsbCkgeworCQkgICAgTmFtZWRBcnJheSBuYSA9IE5hbWVkQXJyYXkuY3JlYXRlKHRlbXApOworCQkgICAgaWYgKG5hLmNvdW50KCkgPCAxKSB7CisJCQltLmxvZy5lcnJsbigiQmFkIGRhdGEgZm9yICIgKyBJTkZPKTsKKwkJICAgIH0gZWxzZSB7CisJCQl0aGlzLmluZm8gPSBuZXcgUkJEYXRhTWFwKG0ubG9nLCBuYSwgZmFsc2UpOworCQkgICAgfQorCQl9CisJICAgIH0gCisJICAgIGNhdGNoIChDbGFzc0Nhc3RFeGNlcHRpb24gZSkgeworCQltLmxvZy5lcnJsbigiVGVzdCAiICsgbmFtZSArICIgaW4gbW9kdWxlICIgKyBtLmdldE5hbWUoKSArICIgaGFzIGJhZCB0eXBlIGZvciAiICsgSU5GTyk7CisJICAgIH0KKworCSAgICB0cnkgeworCQl0aGlzLnNldHRpbmdzID0gKE9iamVjdFtdKW5hbWVkRGF0YS5nZXRWYWx1ZShTRVRUSU5HUyk7CisJICAgIH0KKwkgICAgY2F0Y2ggKENsYXNzQ2FzdEV4Y2VwdGlvbiBlKSB7CisJCW0ubG9nLmVycmxuKCJUZXN0ICIgKyBuYW1lICsgIiBpbiBtb2R1bGUgIiArIG0uZ2V0TmFtZSgpICsgIiBoYXMgYmFkIHR5cGUgZm9yICIgKyBTRVRUSU5HUyk7CisJICAgIH0KKworCSAgICB0cnkgeworCQl0aGlzLmNhc2VzID0gKE9iamVjdFtdKW5hbWVkRGF0YS5nZXRWYWx1ZShDQVNFUyk7CisJICAgIH0KKwkgICAgY2F0Y2ggKENsYXNzQ2FzdEV4Y2VwdGlvbiBlKSB7CisJCW0ubG9nLmVycmxuKCJUZXN0ICIgKyBuYW1lICsgIiBpbiBtb2R1bGUgIiArIG0uZ2V0TmFtZSgpICsgIiBoYXMgYmFkIHR5cGUgZm9yICIgKyBDQVNFUyk7CisJICAgIH0KKworCSAgICBpZiAoaW5mbyAhPSBudWxsKSB7CisJCXRoaXMuaGVhZGVycyA9IGluZm8uZ2V0U3RyaW5nQXJyYXkoSEVBREVSUyk7CisJICAgIH0KKwkgICAgaWYgKHRoaXMuaGVhZGVycyA9PSBudWxsKSB7CisJCXRoaXMuaGVhZGVycyA9IGRlZmF1bHRIZWFkZXJzOworCSAgICB9CisJfQorCisJLyoqCisJICogR2V0IGFkZGl0aW9uYWwgZGF0YSByZWxhdGVkIHRvIHRoZSB0ZXN0LgorCSAqLworCXB1YmxpYyBEYXRhTWFwIGdldEluZm8oKSB7CisJICAgIHJldHVybiBpbmZvOworCX0KKworCS8qKgorCSAqIFJldHVybnMgRGF0YU1hcCB3aXRoIG5leHQgc2V0dGluZ3MgYW5kIHJlc2V0cyBjYXNlIGl0ZXJhdGlvbi4KKwkgKiBJZiBubyBtb3JlIHNldHRpbmdzLCB0ZXJtaW5hdGVzIGl0ZXJhdGlvbiBhbmQgcmV0dXJucyBudWxsLgorCSAqLworCXB1YmxpYyBEYXRhTWFwIG5leHRTZXR0aW5ncygpIHsKKwkgICAgaWYgKHNldHRpbmdzICE9IG51bGwgJiYgc3ggPCBzZXR0aW5ncy5sZW5ndGgpIHsKKwkJY3ggPSAwOworCQlOYW1lZEFycmF5IG5hID0gTmFtZWRBcnJheS5jcmVhdGUoKE9iamVjdFtdW10pc2V0dGluZ3Nbc3grK10pOworCQlpZiAobmEuY291bnQoKSA8IDApIHsKKwkJICAgIG0ubG9nLmVycmxuKCJCYWQgc2V0dGluZ3MgZGF0YSBmb3Igc2V0dGluZ3MgIiArIChzeC0xKSk7CisJCSAgICByZXR1cm4gbnVsbDsKKwkJfSBlbHNlIHsKKwkJICAgIHJldHVybiBuZXcgUkJEYXRhTWFwKG0ubG9nLCBuYSwgZmFsc2UpOworCQl9CisJICAgIH0KKwkgICAgc3RvcEl0ZXJhdGlvbigpOworCisJICAgIHJldHVybiBudWxsOworCX0KKworCS8qKgorCSAqIFJldHVybnMgRGF0YU1hcCB3aXRoIG5leHQgY2FzZS4gIElmIG5vIG5leHQgY2FzZSwgcmV0dXJucyBudWxsLgorCSAqLworCXB1YmxpYyBEYXRhTWFwIG5leHRDYXNlKCkgeworCSAgICBpZiAoY2FzZXMgIT0gbnVsbCAmJiBjeCA8IGNhc2VzLmxlbmd0aCkgeworCQlOYW1lZEFycmF5IG5hID0gTmFtZWRBcnJheS5jcmVhdGUoaGVhZGVycywgKE9iamVjdFtdKWNhc2VzW2N4KytdKTsKKwkJaWYgKG5hLmNvdW50KCkgPCAwKSB7CisJCSAgICBtLmxvZy5lcnJsbigiQmFkIGNhc2VzIGRhdGEgZm9yIGNhc2UgIiArIChjeC0xKSk7CisJCX0gZWxzZSB7CisJCSAgICByZXR1cm4gbmV3IFJCRGF0YU1hcChtLmxvZywgbmEsIHRydWUpOworCQl9CisJICAgIH0KKwkgICAgcmV0dXJuIG51bGw7CisJfQorCisJLyoqCisJICogU3RvcHMgaXRlcmF0aW9uLgorCSAqLworCXB1YmxpYyB2b2lkIHN0b3BJdGVyYXRpb24oKSB7CisJICAgIHN4ID0gY3ggPSBJbnRlZ2VyLk1BWF9WQUxVRTsKKwl9CisgICAgfQorICAgIAorICAgIHN0YXRpYyBmaW5hbCBjbGFzcyBSQkRhdGFNYXAgZXh0ZW5kcyBEYXRhTWFwIHsKKwlUZXN0TG9nIGxvZzsKKwlOYW1lZEFycmF5IG5hOworCWJvb2xlYW4gcmVxdWlyZWQ7CisKKwlSQkRhdGFNYXAoVGVzdExvZyBsb2csIE5hbWVkQXJyYXkgbmEsIGJvb2xlYW4gcmVxdWlyZWQpIHsKKwkgICAgdGhpcy5sb2cgPSBsb2c7CisJICAgIHRoaXMubmEgPSBuYTsKKwkgICAgdGhpcy5yZXF1aXJlZCA9IHJlcXVpcmVkOworCX0KKworCXB1YmxpYyBib29sZWFuIGlzRGVmaW5lZChTdHJpbmcga2V5KSB7CisJICAgIHJldHVybiBuYS5pc0RlZmluZWQoa2V5KTsKKwl9CisKKwlwdWJsaWMgT2JqZWN0IGdldE9iamVjdChTdHJpbmcga2V5KSB7IAorCSAgICBPYmplY3QgcmVzdWx0ID0gbmEuZ2V0VmFsdWUoa2V5KTsKKwkgICAgaWYgKHJlcXVpcmVkICYmIHJlc3VsdCA9PSBudWxsKSB7CisJCXJlcG9ydE51bGxFcnJvcihrZXkpOworCSAgICB9CisJICAgIHJldHVybiByZXN1bHQ7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRTdHJpbmcoU3RyaW5nIGtleSkgeyAKKwkgICAgU3RyaW5nIHJlc3VsdCA9IG51bGw7CisJICAgIHRyeSB7CisJCXJlc3VsdCA9IChTdHJpbmcpZ2V0T2JqZWN0KGtleSk7CisJICAgIH0KKwkgICAgY2F0Y2ggKENsYXNzQ2FzdEV4Y2VwdGlvbiBlKSB7CisJCXJlcG9ydFR5cGVFcnJvcigiU3RyaW5nIiwga2V5KTsKKwkgICAgfQorCSAgICByZXR1cm4gcmVzdWx0OworCX0KKworCXB1YmxpYyBjaGFyIGdldENoYXIoU3RyaW5nIGtleSkgeyAKKwkgICAgdHJ5IHsKKwkJU3RyaW5nIHMgPSBnZXRTdHJpbmcoa2V5KTsKKwkJaWYgKHMgIT0gbnVsbCkgeworCQkgICAgcmV0dXJuIHMuY2hhckF0KDApOworCQl9CisJICAgIH0KKwkgICAgY2F0Y2ggKEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gZSkgeworCQlyZXBvcnRUeXBlRXJyb3IoImNoYXIiLCBrZXkpOworCSAgICB9CisJICAgIHJldHVybiAweGZmZmY7CisJfQorCisJcHVibGljIGludCBnZXRJbnQoU3RyaW5nIGtleSkgeyAKKwkgICAgdHJ5IHsKKwkJU3RyaW5nIHMgPSBnZXRTdHJpbmcoa2V5KTsKKwkJaWYgKHMgIT0gbnVsbCkgeworCQkgICAgcmV0dXJuIEludGVnZXIucGFyc2VJbnQocyk7CisJCX0KKwkgICAgfQorCSAgICBjYXRjaCAoTnVtYmVyRm9ybWF0RXhjZXB0aW9uIGUpIHsKKwkJcmVwb3J0VHlwZUVycm9yKCJpbnQiLCBrZXkpOworCSAgICB9CisJICAgIHJldHVybiAtMTsKKwl9CisKKwlwdWJsaWMgYnl0ZSBnZXRCeXRlKFN0cmluZyBrZXkpIHsgCisJICAgIHRyeSB7CisJCVN0cmluZyBzID0gZ2V0U3RyaW5nKGtleSk7CisJCWlmIChzICE9IG51bGwpIHsKKwkJICAgIHJldHVybiBCeXRlLnBhcnNlQnl0ZShzKTsKKwkJfQorCSAgICB9CisJICAgIGNhdGNoIChOdW1iZXJGb3JtYXRFeGNlcHRpb24gZSkgeworCQlyZXBvcnRUeXBlRXJyb3IoImJ5dGUiLCBrZXkpOworCSAgICB9CisJICAgIHJldHVybiAoYnl0ZSktMTsKKwl9CisKKwlwdWJsaWMgYm9vbGVhbiBnZXRCb29sZWFuKFN0cmluZyBrZXkpIHsgCisJICAgIFN0cmluZyBzID0gZ2V0U3RyaW5nKGtleSk7CisJICAgIGlmIChzICE9IG51bGwpIHsKKwkJaWYgKHMuZXF1YWxzSWdub3JlQ2FzZSgidHJ1ZSIpKSB7CisJCSAgICByZXR1cm4gdHJ1ZTsKKwkJfSBlbHNlIGlmICghcy5lcXVhbHNJZ25vcmVDYXNlKCJmYWxzZSIpKSB7CisJCSAgICByZXBvcnRUeXBlRXJyb3IoImJvb2xlYW4iLCBrZXkpOworCQl9CisJICAgIH0KKwkgICAgcmV0dXJuIGZhbHNlOworCX0KKworCXB1YmxpYyBPYmplY3RbXSBnZXRPYmplY3RBcnJheShTdHJpbmcga2V5KSB7CisJICAgIHRyeSB7CisJCU9iamVjdFtdIHJlc3VsdCA9IChPYmplY3RbXSluYS5nZXRWYWx1ZShrZXkpOworCQlpZiAocmVzdWx0ID09IG51bGwgJiYgcmVxdWlyZWQpIHsKKwkJICAgIHJlcG9ydE51bGxFcnJvcihrZXkpOworCQl9CisJICAgIH0gY2F0Y2ggKENsYXNzQ2FzdEV4Y2VwdGlvbiBlKSB7CisJCXJlcG9ydFR5cGVFcnJvcigiT2JqZWN0W10iLCBrZXkpOworCSAgICB9CisJICAgIHJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBTdHJpbmdbXSBnZXRTdHJpbmdBcnJheShTdHJpbmcga2V5KSB7IAorCSAgICB0cnkgeworCQlTdHJpbmdbXSByZXN1bHQgPSAoU3RyaW5nW10pbmEuZ2V0VmFsdWUoa2V5KTsKKwkJaWYgKHJlc3VsdCA9PSBudWxsICYmIHJlcXVpcmVkKSB7CisJCSAgICByZXBvcnROdWxsRXJyb3Ioa2V5KTsKKwkJfQorCQlyZXR1cm4gcmVzdWx0OworCSAgICB9CisJICAgIGNhdGNoIChDbGFzc0Nhc3RFeGNlcHRpb24gZSkgeworCQlyZXBvcnRUeXBlRXJyb3IoIlN0cmluZ1tdIiwga2V5KTsKKwkgICAgfQorCSAgICByZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgY2hhcltdIGdldENoYXJBcnJheShTdHJpbmcga2V5KSB7IAorCSAgICB0cnkgeworCQlTdHJpbmcgdGVtcCA9IChTdHJpbmcpbmEuZ2V0VmFsdWUoa2V5KTsKKwkJaWYgKHRlbXAgPT0gbnVsbCkgeworCQkgICAgaWYgKHJlcXVpcmVkKSB7CisJCQlyZXBvcnROdWxsRXJyb3Ioa2V5KTsKKwkJICAgIH0KKwkJfSBlbHNlIHsKKwkJICAgIHJldHVybiB0ZW1wLnRvQ2hhckFycmF5KCk7CisJCX0KKwkgICAgfQorCSAgICBjYXRjaCAoQ2xhc3NDYXN0RXhjZXB0aW9uIGUpIHsKKwkJcmVwb3J0VHlwZUVycm9yKCJjaGFyW10iLCBrZXkpOworCSAgICB9CisJICAgIHJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBpbnRbXSBnZXRJbnRBcnJheShTdHJpbmcga2V5KSB7CisJICAgIFN0cmluZ1tdIGRhdGEgPSBnZXRTdHJpbmdBcnJheShrZXkpOworCSAgICBpZiAoZGF0YSAhPSBudWxsKSB7CisJCXRyeSB7CisJCSAgICBpbnRbXSByZXN1bHQgPSBuZXcgaW50W2RhdGEubGVuZ3RoXTsKKwkJICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSkgeworCQkJcmVzdWx0W2ldID0gSW50ZWdlci5wYXJzZUludChkYXRhW2ldKTsKKwkJICAgIH0KKwkJICAgIHJldHVybiByZXN1bHQ7CisJCX0KKwkJY2F0Y2ggKE51bWJlckZvcm1hdEV4Y2VwdGlvbiBlKSB7CisJCSAgICByZXBvcnRUeXBlRXJyb3IoImludFtdIiwga2V5KTsKKwkJfQorCSAgICB9CisJICAgIHJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBieXRlW10gZ2V0Qnl0ZUFycmF5KFN0cmluZyBrZXkpIHsgCisJICAgIFN0cmluZ1tdIGRhdGEgPSBnZXRTdHJpbmdBcnJheShrZXkpOworCSAgICBpZiAoZGF0YSAhPSBudWxsKSB7CisJCXRyeSB7CisJCSAgICBieXRlW10gcmVzdWx0ID0gbmV3IGJ5dGVbZGF0YS5sZW5ndGhdOworCQkgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXN1bHQubGVuZ3RoOyArK2kpIHsKKwkJCXJlc3VsdFtpXSA9IEJ5dGUucGFyc2VCeXRlKGRhdGFbaV0pOworCQkgICAgfQorCQkgICAgcmV0dXJuIHJlc3VsdDsKKwkJfQorCQljYXRjaCAoTnVtYmVyRm9ybWF0RXhjZXB0aW9uIGUpIHsKKwkJICAgIHJlcG9ydFR5cGVFcnJvcigiYnl0ZVtdIiwga2V5KTsKKwkJfQorCSAgICB9CisJICAgIHJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBib29sZWFuW10gZ2V0Qm9vbGVhbkFycmF5KFN0cmluZyBrZXkpIHsKKwkgICAgU3RyaW5nW10gZGF0YSA9IGdldFN0cmluZ0FycmF5KGtleSk7CisJICAgIGlmIChkYXRhICE9IG51bGwpIHsKKwkJYm9vbGVhbltdIHJlc3VsdCA9IG5ldyBib29sZWFuW2RhdGEubGVuZ3RoXTsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCByZXN1bHQubGVuZ3RoOyArK2kpIHsKKwkJICAgIFN0cmluZyBzID0gZGF0YVtpXTsKKwkJICAgIGlmIChzLmVxdWFsc0lnbm9yZUNhc2UoInRydWUiKSkgeworCQkJcmVzdWx0W2ldID0gdHJ1ZTsKKwkJICAgIH0gZWxzZSBpZiAocy5lcXVhbHNJZ25vcmVDYXNlKCJmYWxzZSIpKSB7CisJCQlyZXN1bHRbaV0gPSBmYWxzZTsKKwkJICAgIH0gZWxzZSB7CisJCQlyZXBvcnRUeXBlRXJyb3IoImJvb2xlYW5bXSIsIGtleSk7CisJCQlyZXR1cm4gbnVsbDsKKwkJICAgIH0KKwkJfQorCQlyZXR1cm4gcmVzdWx0OworCSAgICB9CisJICAgIHJldHVybiBudWxsOworCX0KKworCXByaXZhdGUgdm9pZCByZXBvcnROdWxsRXJyb3IoU3RyaW5nIGtleSkgeworCSAgICBsb2cuZXJybG4oIk1pc3NpbmcgcmVxdWlyZWQgdmFsdWUgZm9yICciICsga2V5ICsgIiciKTsKKwl9CisKKwlwcml2YXRlIHZvaWQgcmVwb3J0VHlwZUVycm9yKFN0cmluZyB0eXBlTmFtZSwgU3RyaW5nIGtleSkgeworCSAgICBsb2cuZXJybG4oIkNvdWxkIG5vdCByZXR1cm4gdmFsdWUgb2YgJyIgKyBrZXkgKyAiJyAoIiArIGdldE9iamVjdChrZXkpICsgIikgYXMgdHlwZSAnIiArIHR5cGVOYW1lICsgIiciKTsKKwl9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L1Rlc3RBbGwuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9UZXN0QWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYWYyZWY5ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9UZXN0QWxsLmphdmEKQEAgLTAsMCArMSwyMzIgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9UZXN0QWxsLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMTIvMTggMTk6NTg6MjUgJCAKKyAqICRSZXZpc2lvbjogMS40NCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3Q7CitpbXBvcnQgY29tLmlibS5pY3UuZGV2LnRlc3QuVGVzdEZtd2s7CitpbXBvcnQgY29tLmlibS5pY3UuZGV2LnRlc3QuYmlnZGVjLkRpYWdCaWdEZWNpbWFsOworaW1wb3J0IGphdmEudXRpbC5UaW1lWm9uZTsKKworLyoqCisgKiBUb3AgbGV2ZWwgdGVzdCB1c2VkIHRvIHJ1biBhbGwgb3RoZXIgdGVzdHMgYXMgYSBiYXRjaC4KKyAqLworIAorcHVibGljIGNsYXNzIFRlc3RBbGwgZXh0ZW5kcyBUZXN0Rm13ayB7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgVGltZVpvbmUuc2V0RGVmYXVsdChUaW1lWm9uZS5nZXRUaW1lWm9uZSgiUFNUIikpOworICAgICAgICBuZXcgVGVzdEFsbCgpLnJ1bihhcmdzKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0QmlnTnVtYmVyRm9ybWF0KCkgdGhyb3dzIEV4Y2VwdGlvbnsKKyAgICAgICAgcnVuKG5ldyBjb20uaWJtLmljdS5kZXYudGVzdC5mb3JtYXQuQmlnTnVtYmVyRm9ybWF0VGVzdCgpKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdENvbXByZXNzaW9uKCkgdGhyb3dzIEV4Y2VwdGlvbnsKKyAgICAgICAgcnVuKG5ldyBUZXN0Rm13a1tdIHsKKyAgICAgICAgICAgIG5ldyBjb20uaWJtLmljdS5kZXYudGVzdC5jb21wcmVzc2lvbi5EZWNvbXByZXNzaW9uVGVzdCgpLAorICAgICAgICAgICAgbmV3IGNvbS5pYm0uaWN1LmRldi50ZXN0LmNvbXByZXNzaW9uLkV4aGF1c3RpdmVUZXN0KCkKKyAgICAgICAgICAgICAgICB9KTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0UnVsZUJhc2VkTnVtYmVyRm9ybWF0KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHJ1bihuZXcgVGVzdEZtd2tbXSB7CisgICAgICAgICAgICBuZXcgY29tLmlibS5pY3UuZGV2LnRlc3QuZm9ybWF0LlJibmZUZXN0KCksCisgICAgICAgICAgICBuZXcgY29tLmlibS5pY3UuZGV2LnRlc3QuZm9ybWF0LlJibmZSb3VuZFRyaXBUZXN0KCkKKyAgICAgICAgICAgICAgICB9KTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0UnVsZUJhc2VkQnJlYWtJdGVyYXRvcigpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBydW4obmV3IFRlc3RGbXdrW10geworICAgICAgICAgICAgbmV3IGNvbS5pYm0uaWN1LmRldi50ZXN0LnJiYmkuU2ltcGxlQklUZXN0KCksCisgICAgICAgICAgICBuZXcgY29tLmlibS5pY3UuZGV2LnRlc3QucmJiaS5CcmVha0l0ZXJhdG9yVGVzdCgpLAorICAgICAgICAgICAgbmV3IGNvbS5pYm0uaWN1LmRldi50ZXN0LnJiYmkuUkJCSVRlc3QoKSwKKyAgICAgICAgICAgIG5ldyBjb20uaWJtLmljdS5kZXYudGVzdC5yYmJpLlJCQklBUElUZXN0KCkKKyAgICAgICAgICAgICAgICB9KTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0VHJhbnNsaXQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgcnVuKG5ldyBUZXN0Rm13a1tdIHsKKyAgICAgICAgICAgIG5ldyBjb20uaWJtLmljdS5kZXYudGVzdC50cmFuc2xpdC5UcmFuc2xpdGVyYXRvclRlc3QoKSwKKyAgICAgICAgICAgIG5ldyBjb20uaWJtLmljdS5kZXYudGVzdC50cmFuc2xpdC5Vbmljb2RlU2V0VGVzdCgpLAorICAgICAgICAgICAgbmV3IGNvbS5pYm0uaWN1LmRldi50ZXN0LnRyYW5zbGl0LlVuaWNvZGVGaWx0ZXJMb2dpY1Rlc3QoKSwKKyAgICAgICAgICAgIG5ldyBjb20uaWJtLmljdS5kZXYudGVzdC50cmFuc2xpdC5Db21wb3VuZFRyYW5zbGl0ZXJhdG9yVGVzdCgpLAorICAgICAgICAgICAgbmV3IGNvbS5pYm0uaWN1LmRldi50ZXN0LnRyYW5zbGl0LlVuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yVGVzdCgpLAorICAgICAgICAgICAgbmV3IGNvbS5pYm0uaWN1LmRldi50ZXN0LnRyYW5zbGl0LkhleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yVGVzdCgpLAorICAgICAgICAgICAgbmV3IGNvbS5pYm0uaWN1LmRldi50ZXN0LnRyYW5zbGl0LkphbW9UZXN0KCksCisgICAgICAgICAgICBuZXcgY29tLmlibS5pY3UuZGV2LnRlc3QudHJhbnNsaXQuRXJyb3JUZXN0KCksCisgICAgICAgICAgICBuZXcgY29tLmlibS5pY3UuZGV2LnRlc3QudHJhbnNsaXQuUm91bmRUcmlwVGVzdCgpLAorICAgICAgICAgICAgbmV3IGNvbS5pYm0uaWN1LmRldi50ZXN0LnRyYW5zbGl0LlJlcGxhY2VhYmxlVGVzdCgpCisgICAgICAgICAgICAgICAgfSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdFNlYXJjaCgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBydW4oCisgICAgICAgICAgICBuZXcgY29tLmlibS5pY3UuZGV2LnRlc3Quc2VhcmNoLlNlYXJjaFRlc3QoKSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RDb2xsYXRvcigpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBydW4obmV3IFRlc3RGbXdrW10geworICAgICAgICAgICAgbmV3IGNvbS5pYm0uaWN1LmRldi50ZXN0LmNvbGxhdG9yLkNvbGxhdGlvblRlc3QoKSwKKyAgICAgICAgICAgIG5ldyBjb20uaWJtLmljdS5kZXYudGVzdC5jb2xsYXRvci5Db2xsYXRpb25BUElUZXN0KCksCisgICAgICAgICAgICBuZXcgY29tLmlibS5pY3UuZGV2LnRlc3QuY29sbGF0b3IuQ29sbGF0aW9uQ3VycmVuY3lUZXN0KCksCisgICAgICAgICAgICBuZXcgY29tLmlibS5pY3UuZGV2LnRlc3QuY29sbGF0b3IuQ29sbGF0aW9uRGFuaXNoVGVzdCgpLAorICAgICAgICAgICAgbmV3IGNvbS5pYm0uaWN1LmRldi50ZXN0LmNvbGxhdG9yLkNvbGxhdGlvbkR1bW15VGVzdCgpLAorICAgICAgICAgICAgbmV3IGNvbS5pYm0uaWN1LmRldi50ZXN0LmNvbGxhdG9yLkNvbGxhdGlvbkVuZ2xpc2hUZXN0KCksCisgICAgICAgICAgICBuZXcgY29tLmlibS5pY3UuZGV2LnRlc3QuY29sbGF0b3IuQ29sbGF0aW9uRmlubmlzaFRlc3QoKSwKKyAgICAgICAgICAgIG5ldyBjb20uaWJtLmljdS5kZXYudGVzdC5jb2xsYXRvci5Db2xsYXRpb25GcmVuY2hUZXN0KCksCisgICAgICAgICAgICBuZXcgY29tLmlibS5pY3UuZGV2LnRlc3QuY29sbGF0b3IuQ29sbGF0aW9uR2VybWFuVGVzdCgpLAorICAgICAgICAgICAgbmV3IGNvbS5pYm0uaWN1LmRldi50ZXN0LmNvbGxhdG9yLkNvbGxhdGlvbkl0ZXJhdG9yVGVzdCgpLAorICAgICAgICAgICAgbmV3IGNvbS5pYm0uaWN1LmRldi50ZXN0LmNvbGxhdG9yLkNvbGxhdGlvbkthbmFUZXN0KCksCisgICAgICAgICAgICBuZXcgY29tLmlibS5pY3UuZGV2LnRlc3QuY29sbGF0b3IuQ29sbGF0aW9uTW9ua2V5VGVzdCgpLAorICAgICAgICAgICAgbmV3IGNvbS5pYm0uaWN1LmRldi50ZXN0LmNvbGxhdG9yLkNvbGxhdGlvblJlZ3Jlc3Npb25UZXN0KCksCisgICAgICAgICAgICBuZXcgY29tLmlibS5pY3UuZGV2LnRlc3QuY29sbGF0b3IuQ29sbGF0aW9uU3BhbmlzaFRlc3QoKSwKKyAgICAgICAgICAgIG5ldyBjb20uaWJtLmljdS5kZXYudGVzdC5jb2xsYXRvci5Db2xsYXRpb25UaGFpVGVzdCgpLAorICAgICAgICAgICAgbmV3IGNvbS5pYm0uaWN1LmRldi50ZXN0LmNvbGxhdG9yLkNvbGxhdGlvblR1cmtpc2hUZXN0KCksCisgICAgICAgICAgICBuZXcgY29tLmlibS5pY3UuZGV2LnRlc3QuY29sbGF0b3IuRzdDb2xsYXRpb25UZXN0KCksCisgICAgICAgICAgICBuZXcgY29tLmlibS5pY3UuZGV2LnRlc3QuY29sbGF0b3IuTG90dXNDb2xsYXRpb25Lb3JlYW5UZXN0KCksCisgICAgICAgICAgICBuZXcgY29tLmlibS5pY3UuZGV2LnRlc3QuY29sbGF0b3IuQ29sbGF0aW9uTWlzY1Rlc3QoKQorICAgICAgICAgICAgICAgIH0pOworICAgIH0KKwkKKyAgICBwdWJsaWMgdm9pZCBUZXN0QXJhYmljU2hhcGluZygpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBydW4obmV3IGNvbS5pYm0uaWN1LmRldi50ZXN0LnNoYXBpbmcuQXJhYmljU2hhcGluZ1JlZ1Rlc3QoKSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdENhbGVuZGFyKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHJ1bihuZXcgVGVzdEZtd2tbXSB7CisgICAgICAgICAgICBuZXcgY29tLmlibS5pY3UuZGV2LnRlc3QuY2FsZW5kYXIuQXN0cm9UZXN0KCksCisgICAgICAgICAgICBuZXcgY29tLmlibS5pY3UuZGV2LnRlc3QuY2FsZW5kYXIuQ2FsZW5kYXJSZWdyZXNzaW9uKCksCisgICAgICAgICAgICBuZXcgY29tLmlibS5pY3UuZGV2LnRlc3QuY2FsZW5kYXIuQ29tcGF0aWJpbGl0eVRlc3QoKSwKKyAgICAgICAgICAgIG5ldyBjb20uaWJtLmljdS5kZXYudGVzdC5jYWxlbmRhci5IZWJyZXdUZXN0KCksCisgICAgICAgICAgICBuZXcgY29tLmlibS5pY3UuZGV2LnRlc3QuY2FsZW5kYXIuSUJNQ2FsZW5kYXJUZXN0KCksCisgICAgICAgICAgICBuZXcgY29tLmlibS5pY3UuZGV2LnRlc3QuY2FsZW5kYXIuSXNsYW1pY1Rlc3QoKSwKKyAgICAgICAgICAgIG5ldyBjb20uaWJtLmljdS5kZXYudGVzdC5jYWxlbmRhci5KYXBhbmVzZVRlc3QoKSwKKyAgICAgICAgICAgIG5ldyBjb20uaWJtLmljdS5kZXYudGVzdC5jYWxlbmRhci5DaGluZXNlVGVzdCgpLAorICAgICAgICAgICAgbmV3IGNvbS5pYm0uaWN1LmRldi50ZXN0LmNhbGVuZGFyLkhvbGlkYXlUZXN0KCkKKyAgICAgICAgICAgICAgICB9KTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0VGltZVpvbmUoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgcnVuKG5ldyBUZXN0Rm13a1tdIHsKKyAgICAgICAgICAgIG5ldyBjb20uaWJtLmljdS5kZXYudGVzdC50aW1lem9uZS5UaW1lWm9uZVRlc3QoKSwKKyAgICAgICAgICAgIG5ldyBjb20uaWJtLmljdS5kZXYudGVzdC50aW1lem9uZS5UaW1lWm9uZVJlZ3Jlc3Npb24oKSwKKyAgICAgICAgICAgIG5ldyBjb20uaWJtLmljdS5kZXYudGVzdC50aW1lem9uZS5UaW1lWm9uZUJvdW5kYXJ5VGVzdCgpCisgICAgICAgICAgICAgICAgfSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdENoYXJhY3RlcigpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBydW4obmV3IFRlc3RGbXdrW10geworICAgICAgICAgICAgbmV3IGNvbS5pYm0uaWN1LmRldi50ZXN0LmxhbmcuVUNoYXJhY3RlclRlc3QoKSwKKyAgICAgICAgICAgIG5ldyBjb20uaWJtLmljdS5kZXYudGVzdC5sYW5nLlVDaGFyYWN0ZXJDYXNlVGVzdCgpLAorICAgICAgICAgICAgbmV3IGNvbS5pYm0uaWN1LmRldi50ZXN0LmxhbmcuVUNoYXJhY3Rlckl0ZXJhdG9yVGVzdCgpLAorICAgICAgICAgICAgbmV3IGNvbS5pYm0uaWN1LmRldi50ZXN0LmxhbmcuVUNoYXJhY3RlckNhdGVnb3J5VGVzdCgpLAorICAgICAgICAgICAgbmV3IGNvbS5pYm0uaWN1LmRldi50ZXN0LmxhbmcuVUNoYXJhY3RlckRpcmVjdGlvblRlc3QoKSwKKyAgICAgICAgICAgIG5ldyBjb20uaWJtLmljdS5kZXYudGVzdC5sYW5nLlVQcm9wZXJ0eUFsaWFzZXNUZXN0KCksCisgICAgICAgICAgICBuZXcgY29tLmlibS5pY3UuZGV2LnRlc3QubGFuZy5VVEYxNlRlc3QoKQorICAgICAgICAgICAgICAgIH0pOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0VHJpZSgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBydW4obmV3IFRlc3RGbXdrW10geworICAgICAgICAgICAgbmV3IGNvbS5pYm0uaWN1LmRldi50ZXN0LnV0aWwuVHJpZVRlc3QoKQorICAgICAgICAgICAgfSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RVU2NyaXB0KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHJ1biggbmV3IFRlc3RGbXdrW10geworICAgICAgICAgICAgbmV3IGNvbS5pYm0uaWN1LmRldi50ZXN0LmxhbmcuVGVzdFVTY3JpcHQoKSwKKyAgICAgICAgfSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3ROb3JtYWxpemVyKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHJ1biggbmV3IFRlc3RGbXdrW10geworICAgICAgICAgICAgbmV3IGNvbS5pYm0uaWN1LmRldi50ZXN0Lm5vcm1hbGl6ZXIuQmFzaWNUZXN0KCksCisgICAgICAgICAgICBuZXcgY29tLmlibS5pY3UuZGV2LnRlc3Qubm9ybWFsaXplci5Db25mb3JtYW5jZVRlc3QoKSwKKyAgICAgICAgICAgIG5ldyBjb20uaWJtLmljdS5kZXYudGVzdC5ub3JtYWxpemVyLkV4aGF1c3RpdmVUZXN0KCksCisgICAgICAgICAgICBuZXcgY29tLmlibS5pY3UuZGV2LnRlc3Qubm9ybWFsaXplci5UZXN0Q2Fub25pY2FsSXRlcmF0b3IoKSwKKyAgICAgICAgfSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RVU2NyaXB0UnVuKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHJ1biggbmV3IFRlc3RGbXdrW10geworICAgICAgICAgICAgbmV3IGNvbS5pYm0uaWN1LmRldi50ZXN0LmxhbmcuVGVzdFVTY3JpcHRSdW4oKSwKKyAgICAgICAgfSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3ROdW1iZXJGb3JtYXQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgcnVuKG5ldyBUZXN0Rm13a1tdIHsKKyAgICAgICAgICAgIG5ldyBjb20uaWJtLmljdS5kZXYudGVzdC5mb3JtYXQuSW50bFRlc3ROdW1iZXJGb3JtYXQoKSwKKyAgICAgICAgICAgIG5ldyBjb20uaWJtLmljdS5kZXYudGVzdC5mb3JtYXQuSW50bFRlc3ROdW1iZXJGb3JtYXRBUEkoKSwKKyAgICAgICAgICAgIG5ldyBjb20uaWJtLmljdS5kZXYudGVzdC5mb3JtYXQuTnVtYmVyRm9ybWF0VGVzdCgpLAorICAgICAgICAgICAgbmV3IGNvbS5pYm0uaWN1LmRldi50ZXN0LmZvcm1hdC5OdW1iZXJGb3JtYXRSb3VuZFRyaXBUZXN0KCksCisgICAgICAgICAgICBuZXcgY29tLmlibS5pY3UuZGV2LnRlc3QuZm9ybWF0Lk51bWJlclJlZ3Jlc3Npb24oKSwKKyAgICAgICAgICAgIG5ldyBjb20uaWJtLmljdS5kZXYudGVzdC5mb3JtYXQuTnVtYmVyRm9ybWF0UmVncmVzc2lvblRlc3QoKSwKKyAgICAgICAgICAgIG5ldyBjb20uaWJtLmljdS5kZXYudGVzdC5mb3JtYXQuSW50bFRlc3REZWNpbWFsRm9ybWF0QVBJKCksCisgICAgICAgICAgICBuZXcgY29tLmlibS5pY3UuZGV2LnRlc3QuZm9ybWF0LkludGxUZXN0RGVjaW1hbEZvcm1hdEFQSUMoKSwKKyAgICAgICAgICAgIG5ldyBjb20uaWJtLmljdS5kZXYudGVzdC5mb3JtYXQuSW50bFRlc3REZWNpbWFsRm9ybWF0U3ltYm9scygpLAorICAgICAgICAgICAgbmV3IGNvbS5pYm0uaWN1LmRldi50ZXN0LmZvcm1hdC5JbnRsVGVzdERlY2ltYWxGb3JtYXRTeW1ib2xzQygpCisgICAgICAgICAgICAgICAgfSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3REYXRlRm9ybWF0KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHJ1bihuZXcgVGVzdEZtd2tbXSB7CisgICAgICAgICAgICBuZXcgY29tLmlibS5pY3UuZGV2LnRlc3QuZm9ybWF0LkRhdGVGb3JtYXRNaXNjVGVzdHMoKSwKKyAgICAgICAgICAgIG5ldyBjb20uaWJtLmljdS5kZXYudGVzdC5mb3JtYXQuRGF0ZUZvcm1hdFJlZ3Jlc3Npb25UZXN0KCksCisgICAgICAgICAgICBuZXcgY29tLmlibS5pY3UuZGV2LnRlc3QuZm9ybWF0LkRhdGVGb3JtYXRSb3VuZFRyaXBUZXN0KCksCisgICAgICAgICAgICBuZXcgY29tLmlibS5pY3UuZGV2LnRlc3QuZm9ybWF0LkRhdGVGb3JtYXRUZXN0KCksCisgICAgICAgICAgICBuZXcgY29tLmlibS5pY3UuZGV2LnRlc3QuZm9ybWF0LkludGxUZXN0RGF0ZUZvcm1hdCgpLAorICAgICAgICAgICAgbmV3IGNvbS5pYm0uaWN1LmRldi50ZXN0LmZvcm1hdC5JbnRsVGVzdERhdGVGb3JtYXRBUEkoKSwKKyAgICAgICAgICAgIG5ldyBjb20uaWJtLmljdS5kZXYudGVzdC5mb3JtYXQuSW50bFRlc3REYXRlRm9ybWF0QVBJQygpLAorICAgICAgICAgICAgbmV3IGNvbS5pYm0uaWN1LmRldi50ZXN0LmZvcm1hdC5JbnRsVGVzdERhdGVGb3JtYXRTeW1ib2xzKCksCisgICAgICAgICAgICBuZXcgY29tLmlibS5pY3UuZGV2LnRlc3QuZm9ybWF0LkludGxUZXN0U2ltcGxlRGF0ZUZvcm1hdEFQSSgpLAorICAgICAgICAgICAgbmV3IGNvbS5pYm0uaWN1LmRldi50ZXN0LmZvcm1hdC5EYXRlRm9ybWF0UmVncmVzc2lvblRlc3RKKCkKKyAgICAgICAgICAgICAgICB9KTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0U2VydmljZSgpIHRocm93cyBFeGNlcHRpb24geworCXJ1bihuZXcgVGVzdEZtd2tbXSB7CisJICAgIG5ldyBjb20uaWJtLmljdS5kZXYudGVzdC51dGlsLklDVVNlcnZpY2VUZXN0KCksCisJICAgIG5ldyBjb20uaWJtLmljdS5kZXYudGVzdC51dGlsLklDVVNlcnZpY2VUaHJlYWRUZXN0KCkKKwkJfSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RWZXJzaW9uSW5mbygpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBydW4obmV3IFRlc3RGbXdrW10geworICAgICAgICBuZXcgY29tLmlibS5pY3UuZGV2LnRlc3QudXRpbC5WZXJzaW9uSW5mb1Rlc3QoKQorICAgICAgICB9KTsgICAgICAgIAorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0SXRlcmF0b3IoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgcnVuKG5ldyBUZXN0Rm13a1tdIHsKKyAgICAgICAgICAgIG5ldyBjb20uaWJtLmljdS5kZXYudGVzdC5pdGVyYXRvci5UZXN0VUNoYXJhY3Rlckl0ZXJhdG9yKCksCisgICAgICAgIH0pOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0VXRpbCgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBydW4obmV3IFRlc3RGbXdrW10geworICAgICAgICAgICAgbmV3IGNvbS5pYm0uaWN1LmRldi50ZXN0LnV0aWwuSUNVTGlzdFJlc291cmNlQnVuZGxlVGVzdCgpLAorCSAgICBuZXcgY29tLmlibS5pY3UuZGV2LnRlc3QudXRpbC5Db21wYWN0QXJyYXlUZXN0KCksCisgICAgICAgICAgICBuZXcgY29tLmlibS5pY3UuZGV2LnRlc3QudXRpbC5TdHJpbmdUb2tlbml6ZXJUZXN0KCksCisgICAgICAgICAgICBuZXcgY29tLmlibS5pY3UuZGV2LnRlc3QudXRpbC5DdXJyZW5jeVRlc3QoKSwKKyAgICAgICAgICAgIH0pOworICAgIH0KKyAgICBwdWJsaWMgdm9pZCBUZXN0TWF0aCgpIHRocm93cyBFeGNlcHRpb257CisgICAgICAgIHJ1biggbmV3IFRlc3RGbXdrW117CisgICAgICAgICAgICAgICAgbmV3IERpYWdCaWdEZWNpbWFsKCksCisgICAgICAgICAgICAgIH0pOworICAgIH0KKyAgICBwdWJsaWMgdm9pZCBUZXN0SUNVQmluYXJ5KCkgdGhyb3dzIEV4Y2VwdGlvbnsKKyAgICAgICAgcnVuKCBuZXcgVGVzdEZtd2tbXXsKKyAgICAgICAgICAgICAgICBuZXcgY29tLmlibS5pY3UuZGV2LnRlc3QudXRpbC5JQ1VCaW5hcnlUZXN0KCksCisgICAgICAgICAgICAgIH0pOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9UZXN0RGF0YU1vZHVsZS5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L1Rlc3REYXRhTW9kdWxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjhhMWU5OQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9UZXN0RGF0YU1vZHVsZS5qYXZhCkBAIC0wLDAgKzEsMTcyIEBACisvKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L1Rlc3REYXRhTW9kdWxlLmphdmEsdiAkCisgKiAkRGF0ZTogMjAwMi8wOC8zMSAwNDo1NToxMCAkCisgKiAkUmV2aXNpb246IDEuNCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudGVzdDsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5SZXNvdXJjZUJ1bmRsZTsKKworLyoqCisgKiBSZXByZXNlbnRzIGEgY29sbGVjdGlvbiBvZiB0ZXN0IGRhdGEgZGVzY3JpYmVkIGluIGEgZmlsZS4KKyAqLworcHVibGljIGFic3RyYWN0IGNsYXNzIFRlc3REYXRhTW9kdWxlIHsKKyAgICBwcm90ZWN0ZWQgZmluYWwgU3RyaW5nIG5hbWU7CisgICAgcHJvdGVjdGVkIGZpbmFsIFRlc3RMb2cgbG9nOworCisgICAgLyoqCisgICAgICogTG9va3MgZm9yIGZpbGUgd2l0aCBjb3JyZXNwb25kaW5nIG5hbWUsIGVpdGhlciB4bWwgb3IgcmVzb3VyY2UKKyAgICAgKiBidW5kbGUuICBSZXR1cm5zIG1vZHVsZSBvciBudWxsIGlmIG5vdCBwcmVzZW50LiAgCisgICAgICovCisgICAgc3RhdGljIGZpbmFsIFRlc3REYXRhTW9kdWxlIG9wZW4oU3RyaW5nIG5hbWUsIFRlc3RMb2cgbG9nKSB7CisJUmVzb3VyY2VCdW5kbGUgYnVuZGxlID0gUmVzb3VyY2VCdW5kbGUuZ2V0QnVuZGxlKG5hbWUpOworCWlmIChidW5kbGUgIT0gbnVsbCkgeworCSAgICByZXR1cm4gbmV3IFJlc291cmNlTW9kdWxlKG5hbWUsIGxvZywgYnVuZGxlKTsKKwl9CisJcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgLyoqCisgICAgICogU3ViY2xhc3MgY29uc3RydWN0b3JzIGNhbGwgdGhpcy4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgVGVzdERhdGFNb2R1bGUoU3RyaW5nIG5hbWUsIFRlc3RMb2cgbG9nKSB7CisJdGhpcy5uYW1lID0gbmFtZTsKKwl0aGlzLmxvZyA9IGxvZzsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBuYW1lIG9mIHRoaXMgdGVzdCBtb2R1bGUuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIFN0cmluZyBnZXROYW1lKCkgeworCXJldHVybiBuYW1lOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgbG9nIHVzZWQgYnkgdGhpcyBtb2R1bGUuICBFcnJvcnMgbG9nZ2VkIHRvIHRoaXMKKyAgICAgKiBsb2cgd2lsbCB0ZXJtaW5hdGUgc2V0dGluZ3MgYW5kIGNhc2VzIGl0ZXJhdGlvbiBmb3IgdGhlCisgICAgICogY3VycmVudCB0ZXN0LgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBUZXN0TG9nIGdldExvZygpIHsKKwlyZXR1cm4gbG9nOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldCBhZGRpdGlvbmFsIGRhdGEgcmVsYXRlZCB0byB0aGUgbW9kdWxlLCBlLmcuIERFU0NSSVBUSU9OLAorICAgICAqIGdsb2JhbCBzZXR0aW5ncy4gIE1pZ2h0IGJlIG51bGwuCisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IERhdGFNYXAgZ2V0SW5mbygpOworCisgICAgLyoqCisgICAgICogQSBzdGFuZGFyZCBkYXR1bSB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgRGF0YU1hcCByZXR1cm5lZCBieSBnZXRJbmZvLgorICAgICAqIERFU0NSSVBUSU9OIHByb3ZpZGVzIGEgb25lLWxpbmUgZGVzY3JpcHRpb24uICBUaGUgY29ycmVzcG9uZGluZyB0eXBlCisgICAgICogaXMgYSBTdHJpbmcuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgREVTQ1JJUFRJT04gPSAiRGVzY3JpcHRpb24iOworCisgICAgLyoqCisgICAgICogQSBzdGFuZGFyZCBkYXR1bSB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgRGF0YU1hcCByZXR1cm5lZCBieQorICAgICAqIGdldEluZm8uICBMT05HX0RFU0NSSVBUSU9OIHByb3ZpZGVzIGFuIGV4dGVuZGVkIGRlc2NyaXB0aW9uLgorICAgICAqIFRoZSBjb3JyZXNwb25kaW5nIHR5cGUgaXMgYSBTdHJpbmcuICAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBMT05HX0RFU0NSSVBUSU9OID0gIkxvbmdfRGVzY3JpcHRpb24iOworCisgICAgLyoqCisgICAgICogVGhlIG5hbWVzIG9mIHRoZSBjb2x1bW5zIG9mIHRlc3QgZGF0YS4gIFRoaXMgY2FuIGJlIGZvdW5kIGluCisgICAgICogZWl0aGVyIHRoZSBtb2R1bGUgSU5GTyBvciB0aGUgdGVzdCBJTkZPLiAgSWYgdGhlIHRlc3QgSU5GTworICAgICAqIGRvZXMgbm90IGRlZmluZSB0aGUgaGVhZGVycyB0aGVuIHRoZXkgYXJlIHRha2VuIGZyb20gdGhlCisgICAgICogbW9kdWxlLiAgSWYgdGVzdCBjYXNlcyBhcmUgdXNlZCBieSB0aGUgdGVzdCwgdGhlbiB0aGUgaGVhZGVycworICAgICAqIG11c3QgYmUgZGVmaW5lZC4gIE1vc3QgY2xpZW50cyB3aWxsIG5vdCBuZWVkIHRoaXMgaW5mb3JtYXRpb24sCisgICAgICogc2luY2UgaXQgaXMgaGFuZGxlZCBieSB0aGUgZnJhbWV3b3JrLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUlMgPSAiSGVhZGVycyI7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBUZXN0IG9iamVjdCBjb3JyZXNwb25kaW5nIHRvIGluZGV4LCBvciBudWxsIGlmCisgICAgICogaW5kZXggaXMgb3V0IG9mIHJhbmdlIGZvciB0aGlzIG1vZHVsZS4gIE5vIGVycm9yIGxvZ2dlZCBpZgorICAgICAqIGluZGV4IGlzIG91dCBvZiBib3VuZHMsIHRoZSBhc3N1bXB0aW9uIGlzIHRoYXQgaXRlcmF0aW9uIGlzCisgICAgICogYmVpbmcgdXNlZC4gIAorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBUZXN0RGF0YSBjcmVhdGVUZXN0RGF0YShpbnQgaW5kZXgpOworCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgVGVzdERhdGEgY29ycmVzcG9uZGluZyB0byBuYW1lLCBvciBudWxsIGlmIG5hbWUgbm90CisgICAgICogZm91bmQgaW4gdGhpcyBtb2R1bGUuICBMb2dzIGVycm9yIGlmIG5hbWUgaXMgbm90IGZvdW5kLiAgCisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IFRlc3REYXRhIGNyZWF0ZVRlc3REYXRhKFN0cmluZyBuYW1lKTsKKworICAgIC8qKgorICAgICAqIFJldHVybiBhbiB1bm1vZGlmaWFibGUgbGlzdCBvZiB0aGUgdGVzdCBkYXRhIG5hbWVzLCBpbiBpbmRleCBvcmRlci4KKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgTGlzdCBnZXRUZXN0RGF0YU5hbWVzKCk7CisKKyAgICAvKioKKyAgICAgKiBSZXByZXNlbnRzIGEgc2luZ2xlIHRlc3QgaW4gdGhlIG1vZHVsZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3Qgc3RhdGljIGNsYXNzIFRlc3REYXRhIHsKKwlTdHJpbmcgbmFtZTsKKworCXByb3RlY3RlZCBUZXN0RGF0YShTdHJpbmcgbmFtZSkgeworCSAgICB0aGlzLm5hbWUgPSBuYW1lOworCX0KKworCXB1YmxpYyBmaW5hbCBTdHJpbmcgbmFtZSgpIHsKKwkgICAgcmV0dXJuIG5hbWU7CisJfQorCisJLyoqCisJICogR2V0IGFkZGl0aW9uYWwgZGF0YSByZWxhdGVkIHRvIHRoZSB0ZXN0LCBlLmcuIERFU0NSSVBUSU9OLAorCSAqIExPTkdfREVTQ1JJUFRJT04sIEhFQURFUlMsIG9yIG90aGVyIHRlc3Qtc3BlY2lmaWMKKwkgKiBpbmZvcm1hdGlvbi4gIAorCSAqLworCXB1YmxpYyBhYnN0cmFjdCBEYXRhTWFwIGdldEluZm8oKTsKKworCS8qKgorCSAqIFJldHVybnMgbmV3IERhdGFNYXAgZm9yIG5leHQgc2V0dGluZ3MsIGFuZCByZXNldHMgdGVzdCBjYXNlCisJICogaXRlcmF0aW9uLiAgUmV0dXJucyBudWxsIGlmIG5vIG1vcmUgc2V0dGluZ3MuICAKKwkgKi8KKwlwdWJsaWMgYWJzdHJhY3QgRGF0YU1hcCBuZXh0U2V0dGluZ3MoKTsKKworCS8qKgorCSAqIFJldHVybnMgbmV3IERhdGFNYXAgZm9yIG5leHQgY2FzZXMuICAKKwkgKiBSZXR1cm5zIG51bGwgaWYgbm8gbW9yZSBjYXNlcy4KKwkgKi8KKwlwdWJsaWMgYWJzdHJhY3QgRGF0YU1hcCBuZXh0Q2FzZSgpOworCisJLyoqCisJICogU3RvcHMgaXRlcmF0aW9uIG9mIHRoZSB0ZXN0LiAgVXN1YWxseSBjYWxsZWQgaWYgc29tZQorCSAqIGNvbmRpdGlvbiBkZXRlY3RzIGFuIGVycm9yLgorCSAqLworCXB1YmxpYyBhYnN0cmFjdCB2b2lkIHN0b3BJdGVyYXRpb24oKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEYXRhTWFwIHByb3ZpZGVzIG5hbWVkIGFjY2VzcyB0byB0eXBlZCBkYXRhLiAgTG9va3VwIGRhdGEgYnkKKyAgICAgKiBrZXkgYW5kIGF0dGVtcHQgdG8gY2FzdCB0byBpbmRpY2F0ZWQgdHlwZS4gIElmIGRhdGEgbm90IGZvdW5kCisgICAgICogb3IgY2FzdCBmYWlscywgbG9nIGVycm9yIGFuZCByZXR1cm4gbnVsbC4gICovCisgICAgcHVibGljIGFic3RyYWN0IHN0YXRpYyBjbGFzcyBEYXRhTWFwIHsKKwlwdWJsaWMgYWJzdHJhY3QgYm9vbGVhbiAgICBpc0RlZmluZWQoU3RyaW5nIGtleSk7CisKKwlwdWJsaWMgYWJzdHJhY3QgT2JqZWN0ICAgICBnZXRPYmplY3QoU3RyaW5nIGtleSk7CisJcHVibGljIGFic3RyYWN0IFN0cmluZyAgICAgZ2V0U3RyaW5nKFN0cmluZyBrZXkpOworCXB1YmxpYyBhYnN0cmFjdCBjaGFyICAgICAgIGdldENoYXIoU3RyaW5nIGtleSk7CisJcHVibGljIGFic3RyYWN0IGludCAgICAgICAgZ2V0SW50KFN0cmluZyBrZXkpOworCXB1YmxpYyBhYnN0cmFjdCBieXRlICAgICAgIGdldEJ5dGUoU3RyaW5nIGtleSk7CisJcHVibGljIGFic3RyYWN0IGJvb2xlYW4gICAgZ2V0Qm9vbGVhbihTdHJpbmcga2V5KTsKKworCXB1YmxpYyBhYnN0cmFjdCBPYmplY3RbXSAgIGdldE9iamVjdEFycmF5KFN0cmluZyBrZXkpOworCXB1YmxpYyBhYnN0cmFjdCBTdHJpbmdbXSAgIGdldFN0cmluZ0FycmF5KFN0cmluZyBrZXkpOworCXB1YmxpYyBhYnN0cmFjdCBjaGFyW10gICAgIGdldENoYXJBcnJheShTdHJpbmcga2V5KTsKKwlwdWJsaWMgYWJzdHJhY3QgaW50W10gICAgICBnZXRJbnRBcnJheShTdHJpbmcga2V5KTsKKwlwdWJsaWMgYWJzdHJhY3QgYnl0ZVtdICAgICBnZXRCeXRlQXJyYXkoU3RyaW5nIGtleSk7CisJcHVibGljIGFic3RyYWN0IGJvb2xlYW5bXSAgZ2V0Qm9vbGVhbkFycmF5KFN0cmluZyBrZXkpOworICAgIH0KK30KKyAgICAKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9UZXN0Rm13ay5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L1Rlc3RGbXdrLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNjcwNWUwOQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9UZXN0Rm13ay5qYXZhCkBAIC0wLDAgKzEsNTAwIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvVGVzdEZtd2suamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8xMS8wNiAxOTowNzowMiAkIAorICogJFJldmlzaW9uOiAxLjMzICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudGVzdDsKKworaW1wb3J0IGphdmEuaW8uKjsKK2ltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC4qOworaW1wb3J0IGphdmEudGV4dC4qOworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKK2ltcG9ydCBqYXZhLnV0aWwuQ29tcGFyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLk1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuU2V0OworaW1wb3J0IGphdmEudXRpbC5UcmVlTWFwOworaW1wb3J0IGphdmEudXRpbC5UcmVlU2V0OworaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7CisKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLlV0aWxpdHk7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC5Vbmljb2RlU2V0OworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuVVRGMTY7CisKKy8qKgorICogVGVzdEZtd2sgaXMgYSBiYXNlIGNsYXNzIGZvciB0ZXN0cyB0aGF0IGNhbiBiZSBydW4gY29udmVuaWVudGx5IGZyb20KKyAqIHRoZSBjb21tYW5kIGxpbmUgYXMgd2VsbCBhcyB1bmRlciB0aGUgSmF2YSB0ZXN0IGhhcm5lc3MuCisgKiA8cD4KKyAqIFN1Yi1jbGFzc2VzIGltcGxlbWVudCBhIHNldCBvZiBtZXRob2RzIG5hbWVkIFRlc3Q8c29tZXRoaW5nPi4gRWFjaAorICogb2YgdGhlc2UgbWV0aG9kcyBwZXJmb3JtcyBzb21lIHRlc3QuIFRlc3QgbWV0aG9kcyBzaG91bGQgaW5kaWNhdGUKKyAqIGVycm9ycyBieSBjYWxsaW5nIGVpdGhlciBlcnIgb3IgZXJybG4uICBUaGlzIHdpbGwgaW5jcmVtZW50IHRoZQorICogZXJyb3JDb3VudCBmaWVsZCBhbmQgbWF5IG9wdGlvbmFsbHkgcHJpbnQgYSBtZXNzYWdlIHRvIHRoZSBsb2cuCisgKiBEZWJ1Z2dpbmcgaW5mb3JtYXRpb24gbWF5IGFsc28gYmUgYWRkZWQgdG8gdGhlIGxvZyB2aWEgdGhlIGxvZworICogYW5kIGxvZ2xuIG1ldGhvZHMuICBUaGVzZSBtZXRob2RzIHdpbGwgYWRkIHRoZWlyIGFyZ3VtZW50cyB0byB0aGUKKyAqIGxvZyBvbmx5IGlmIHRoZSB0ZXN0IGlzIGJlaW5nIHJ1biBpbiB2ZXJib3NlIG1vZGUuCisgKi8KKworcHVibGljIGNsYXNzIFRlc3RGbXdrIGltcGxlbWVudHMgVGVzdExvZyB7CisKKyAgICAvKioKKyAgICAgKiBQdXRzIGEgY29weXJpZ2h0IGluIHRoZSAuY2xhc3MgZmlsZQorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHROb3RpY2UKKyAgICAgICAgPSAiQ29weXJpZ2h0IFx1MDBhOTE5OTctMTk5OCBJQk0gQ29ycC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuIjsKKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gRXZlcnl0aGluZyBiZWxvdyBoZXJlIGlzIGJvaWxlcnBsYXRlIGNvZGUgdGhhdCBtYWtlcyBpdCBwb3NzaWJsZQorICAgIC8vIHRvIGFkZCBhIG5ldyB0ZXN0IGJ5IHNpbXBseSBhZGRpbmcgYSBmdW5jdGlvbiB0byBhbiBleGlzdGluZyBjbGFzcworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBwcm90ZWN0ZWQgVGVzdEZtd2soKSB7CisgICAgfQorCisgICAgLyoqCisgICAgICogRGVmYXVsdCBpcyB0byBjcmVhdGUgYSBoYXNobWFwIGNvbnRhaW5pbmcgYWxsIHRoZSB0ZXN0IG1ldGhvZHMuCisgICAgICogRGF0YS1kcml2ZW4gdGVzdHMgY2FuIG92ZXJyaWRlIHRvIHByb3ZpZGUgYSBkaWZmZXJlbnQgbWFwcGluZworICAgICAqIG9mIHRlc3QgbmFtZXMgdG8gdGVzdCBtZXRob2RzLCBhbmQgYSBkaWZmZXJlbnQgbGlzdC4gIElmIHRoaXMKKyAgICAgKiB0ZXN0IHN1aXRlIGlzIGludmFsaWQsIHN1YmNsYXNzZXJzIHNob3VsZCByZXR1cm4gYW4gZW1wdHkKKyAgICAgKiBjb2xsZWN0aW9uLgorICAgICAqLworICAgIHByb3RlY3RlZCBNYXAgZ2V0QXZhaWxhYmxlVGVzdHMoKSB7CisgICAgICAgIE1hcCByZXN1bHQgPSBDb2xsZWN0aW9ucy5FTVBUWV9NQVA7CisgICAgICAgIGlmICh2YWxpZGF0ZSgpKSB7CisgICAgICAgICAgICByZXN1bHQgPSBuZXcgSGFzaE1hcCgpOworICAgICAgICAgICAgTWV0aG9kW10gbWV0aG9kcyA9IGdldENsYXNzKCkuZ2V0RGVjbGFyZWRNZXRob2RzKCk7CisgICAgICAgICAgICBmb3IoIGludCBpPTA7IGk8bWV0aG9kcy5sZW5ndGg7IGkrKyApIHsKKyAgICAgICAgICAgICAgICBpZiggbWV0aG9kc1tpXS5nZXROYW1lKCkuc3RhcnRzV2l0aCgiVGVzdCIpIAorICAgICAgICAgICAgICAgICAgICB8fCBtZXRob2RzW2ldLmdldE5hbWUoKS5zdGFydHNXaXRoKCJ0ZXN0IikpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1dChtZXRob2RzW2ldLmdldE5hbWUoKSwgbWV0aG9kc1tpXSApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHByaXZhdGUgTWFwIGdldFRlc3RzVG9SdW4oU2V0IHRlc3ROYW1lcykgeworICAgICAgICBNYXAgbWV0aG9kc1RvUnVuID0gZ2V0QXZhaWxhYmxlVGVzdHMoKTsKKyAgICAgICAgaWYgKCEodGVzdE5hbWVzID09IG51bGwgIHx8IHRlc3ROYW1lcy5pc0VtcHR5KCkpKSB7CisgICAgICAgICAgICBtZXRob2RzVG9SdW4ua2V5U2V0KCkucmV0YWluQWxsKHRlc3ROYW1lcyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1ldGhvZHNUb1J1bjsKKyAgICB9CisKKyAgICBwcml2YXRlIEl0ZXJhdG9yIGdldFRlc3RFbnRyeUl0ZXJhdG9yKE1hcCB0ZXN0c1RvUnVuKSB7CisgICAgICAgIFRyZWVNYXAgc29ydGVkTWV0aG9kcyA9IG5ldyBUcmVlTWFwKFN0cmluZy5DQVNFX0lOU0VOU0lUSVZFX09SREVSKTsKKyAgICAgICAgc29ydGVkTWV0aG9kcy5wdXRBbGwodGVzdHNUb1J1bik7CisgICAgICAgIHJldHVybiBzb3J0ZWRNZXRob2RzLmVudHJ5U2V0KCkuaXRlcmF0b3IoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgX3J1bigpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBfcnVuKGdldFRlc3RzVG9SdW4obnVsbCkpOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHZvaWQgX3J1bihNYXAgdGVzdHNUb1J1bikgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHdyaXRlVGVzdE5hbWUoZ2V0Q2xhc3MoKS5nZXROYW1lKCkpOworICAgICAgICBwYXJhbXMuaW5kZW50TGV2ZWwrKzsKKyAgICAgICAgaW50IG9sZENsYXNzQ291bnQgPSBwYXJhbXMuZXJyb3JDb3VudDsKKyAgICAgICAgaW50IG9sZENsYXNzSW52YWxpZENvdW50ID0gcGFyYW1zLmludmFsaWRDb3VudDsKKworICAgICAgICBpZiAodmFsaWRhdGUoKSkgeworICAgICAgICAgICAgSXRlcmF0b3IgaXRlciA9IGdldFRlc3RFbnRyeUl0ZXJhdG9yKHRlc3RzVG9SdW4pOworCisgICAgICAgICAgICAvLyBSdW4gdGhlIGxpc3Qgb2YgdGVzdHMgZ2l2ZW4gaW4gdGhlIHRlc3QgYXJndW1lbnRzCisJICAgIGZpbmFsIE9iamVjdFtdIE5PX0FSR1MgPSBuZXcgT2JqZWN0WzBdOworICAgICAgICAgICAgd2hpbGUgKGl0ZXIuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICAgICAgaW50IG9sZENvdW50ID0gcGFyYW1zLmVycm9yQ291bnQ7CisgICAgICAgICAgICAgICAgaW50IG9sZEludmFsaWRDb3VudCA9IHBhcmFtcy5pbnZhbGlkQ291bnQ7CisKKyAgICAgICAgICAgICAgICBNYXAuRW50cnkgZW50cnkgPSAoTWFwLkVudHJ5KWl0ZXIubmV4dCgpOworCQlTdHJpbmcgdGVzdE5hbWUgPSAoU3RyaW5nKWVudHJ5LmdldEtleSgpOworICAgICAgICAgICAgICAgIE1ldGhvZCB0ZXN0TWV0aG9kID0gKE1ldGhvZCllbnRyeS5nZXRWYWx1ZSgpOworCisgICAgICAgICAgICAgICAgd3JpdGVUZXN0TmFtZSh0ZXN0TmFtZSk7CisKKwkJaWYgKHZhbGlkYXRlTWV0aG9kKHRlc3ROYW1lKSkgeworCQkgICAgdHJ5IHsKKwkJCXRlc3RNZXRob2QuaW52b2tlKHRoaXMsIE5PX0FSR1MpOworCQkgICAgfSBjYXRjaCggSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiBlICkgeworCQkJZXJybG4oIkNhbid0IGFjY2VzcyB0ZXN0IG1ldGhvZCAiICsgdGVzdE5hbWUpOworCQkgICAgfSBjYXRjaCggSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbiBlICkgeworCQkJZXJybG4oIlVuY2F1Z2h0IGV4Y2VwdGlvbiBcIiIgKyBlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIlwiIHRocm93biBpbiB0ZXN0IG1ldGhvZCAiICsgdGVzdE1ldGhvZC5nZXROYW1lKCkgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIiBhY2Nlc3NlZCB1bmRlciBuYW1lICIgKyB0ZXN0TmFtZSk7CisJCQllLmdldFRhcmdldEV4Y2VwdGlvbigpLnByaW50U3RhY2tUcmFjZSh0aGlzLnBhcmFtcy5sb2cpOworCQkgICAgfQorCQl9IGVsc2UgeworCQkgICAgcGFyYW1zLmludmFsaWRDb3VudCsrOworCQl9CisgICAgICAgICAgICAgICAgd3JpdGVUZXN0UmVzdWx0KHBhcmFtcy5lcnJvckNvdW50IC0gb2xkQ291bnQsIHBhcmFtcy5pbnZhbGlkQ291bnQgLSBvbGRJbnZhbGlkQ291bnQpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcGFyYW1zLmludmFsaWRDb3VudCsrOworICAgICAgICB9CisgICAgICAgIHBhcmFtcy5pbmRlbnRMZXZlbC0tOworICAgIAorICAgICAgICB3cml0ZVRlc3RSZXN1bHQocGFyYW1zLmVycm9yQ291bnQgLSBvbGRDbGFzc0NvdW50LCBwYXJhbXMuaW52YWxpZENvdW50IC0gb2xkQ2xhc3NJbnZhbGlkQ291bnQpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBydW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGlmIChwYXJhbXMgPT0gbnVsbCkgcGFyYW1zID0gbmV3IFRlc3RQYXJhbXMoKTsKKworICAgICAgICAvLyBQYXJzZSB0aGUgdGVzdCBhcmd1bWVudHMuICBUaGV5IGNhbiBiZSBlaXRoZXIgdGhlIGZsYWcKKyAgICAgICAgLy8gIi12ZXJib3NlIiBvciBuYW1lcyBvZiB0ZXN0IG1ldGhvZHMuIENyZWF0ZSBhIGxpc3Qgb2YKKyAgICAgICAgLy8gdGVzdHMgdG8gYmUgcnVuLgorCWJvb2xlYW4gdXNhZ2VFcnJvciA9IGZhbHNlOworICAgICAgICBTZXQgdGVzdE5hbWVzID0gbnVsbDsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBpZiAoYXJnc1tpXS5lcXVhbHMoIi12ZXJib3NlIikgfHwgYXJnc1tpXS5lcXVhbHMoIi12IikpIHsKKyAgICAgICAgICAgICAgICBwYXJhbXMudmVyYm9zZSA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChhcmdzW2ldLmVxdWFscygiLXByb21wdCIpKSB7CisgICAgICAgICAgICAgICAgcGFyYW1zLnByb21wdCA9IHRydWU7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGFyZ3NbaV0uZXF1YWxzKCItbm90aHJvdyIpIHx8IGFyZ3NbaV0uZXF1YWxzKCItbiIpKSB7CisgICAgICAgICAgICAgICAgcGFyYW1zLm5vdGhyb3cgPSB0cnVlOworCSAgICB9IGVsc2UgaWYgKGFyZ3NbaV0uZXF1YWxzKCItZGVzY3JpYmUiKSkgeworCQlwYXJhbXMuZGVzY3JpYmUgPSB0cnVlOworICAgICAgICAgICAgfSBlbHNlIGlmIChhcmdzW2ldLnN0YXJ0c1dpdGgoIi1lIikpIHsKKyAgICAgICAgICAgICAgICAvLyBzZWUgYWJvdmUKKyAgICAgICAgICAgICAgICBwYXJhbXMuaW5jbHVzaW9uID0gKGFyZ3NbaV0ubGVuZ3RoKCkgPT0gMikgPyA1IDogSW50ZWdlci5wYXJzZUludChhcmdzW2ldLnN1YnN0cmluZygyKSk7CisgICAgICAgICAgICAgICAgaWYgKHBhcmFtcy5pbmNsdXNpb24gPCAwIHx8IHBhcmFtcy5pbmNsdXNpb24gPiAxMCkgeworICAgICAgICAgICAgICAgICAgICB1c2FnZUVycm9yID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKGFyZ3NbaV0udG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCItZmlsdGVyOiIpKSB7CisgICAgICAgICAgICAgICAgcGFyYW1zLmZpbHRlciA9IGFyZ3NbaV0uc3Vic3RyaW5nKDgpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAodGVzdE5hbWVzID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdE5hbWVzID0gbmV3IFRyZWVTZXQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdGVzdE5hbWVzLmFkZChhcmdzW2ldKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIE1hcCB0ZXN0c1RvUnVuID0gbnVsbDsKKyAgICAgICAgaWYgKCF1c2FnZUVycm9yKSB7CisgICAgICAgICAgICB0ZXN0c1RvUnVuID0gZ2V0VGVzdHNUb1J1bih0ZXN0TmFtZXMpOworICAgICAgICB9CisgICAgICAgIGlmICh1c2FnZUVycm9yIHx8CisgICAgICAgICAgICAodGVzdE5hbWVzICE9IG51bGwgJiYgdGVzdHNUb1J1bi5zaXplKCkgIT0gdGVzdE5hbWVzLnNpemUoKSkpIHsKKwkgICAgdXNhZ2UoKTsKKwkgICAgcmV0dXJuOworCX0KKworICAgICAgICBfcnVuKHRlc3RzVG9SdW4pOworCisgICAgICAgIGlmIChwYXJhbXMucHJvbXB0KSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkhpdCBSRVRVUk4gdG8gZXhpdC4uLiIpOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0uaW4ucmVhZCgpOworICAgICAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRXhjZXB0aW9uOiAiICsgZS50b1N0cmluZygpICsgZS5nZXRNZXNzYWdlKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChwYXJhbXMubm90aHJvdykgeworICAgICAgICAgICAgU3lzdGVtLmV4aXQocGFyYW1zLmVycm9yQ291bnQpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgd2UgY2FuIHJ1biB0aGlzIHRlc3QgKGFsbG93cyB0ZXN0IHRvIGluc3BlY3QganZtLCBlbnZpcm9ubWVudCwgcGFyYW1zIGJlZm9yZSBydW5uaW5nKQorICAgICAqLworICAgIHByb3RlY3RlZCBib29sZWFuIHZhbGlkYXRlKCkgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgU3RyaW5nIGdldERlc2NyaXB0aW9uKCkgeworCXJldHVybiBudWxsOworICAgIH0KKworICAgIHByb3RlY3RlZCBib29sZWFuIHZhbGlkYXRlTWV0aG9kKFN0cmluZyBuYW1lKSB7CisJcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcHJvdGVjdGVkIFN0cmluZyBnZXRNZXRob2REZXNjcmlwdGlvbihTdHJpbmcgbmFtZSkgeworCXJldHVybiBudWxsOworICAgIH0KKworICAgIHByb3RlY3RlZCB2b2lkIHJ1bihUZXN0Rm13ayBjaGlsZFRlc3QpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBydW4obmV3IFRlc3RGbXdrW10geyBjaGlsZFRlc3QgfSk7CisgICAgfQorCisgICAgcHJvdGVjdGVkIHZvaWQgcnVuKFRlc3RGbXdrW10gdGVzdHMpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBmb3IgKGludCBpPTA7IGk8dGVzdHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHRlc3RzW2ldLnBhcmFtcyA9IHRoaXMucGFyYW1zOworICAgICAgICAgICAgcGFyYW1zLmluZGVudExldmVsKys7CisgICAgICAgICAgICB0ZXN0c1tpXS5fcnVuKCk7CisgICAgICAgICAgICBwYXJhbXMuaW5kZW50TGV2ZWwtLTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByb3RlY3RlZCBib29sZWFuIGlzVmVyYm9zZSgpIHsKKyAgICAgICAgcmV0dXJuIHBhcmFtcy52ZXJib3NlOworICAgIH0KKworICAgIC8qKgorICAgICAqIDAgPSBmZXdlc3QgdGVzdHMsIDUgaXMgbm9ybWFsIGJ1aWxkLCAxMCBpcyBtb3N0IHRlc3RzCisgICAgICovCisgICAgcHVibGljIGludCBnZXRJbmNsdXNpb24oKSB7CisgICAgICAgIHJldHVybiBwYXJhbXMuaW5jbHVzaW9uOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGlzUXVpY2soKSB7CisgICAgICAgIHJldHVybiBwYXJhbXMuaW5jbHVzaW9uID09IDA7CisgICAgfQorCisgICAgcHVibGljIFN0cmluZyBnZXRGaWx0ZXIoKSB7CisgICAgICAgIHJldHVybiBwYXJhbXMuZmlsdGVyOworICAgIH0KKworICAgIC8qKgorICAgICAqIEFkZHMgZ2l2ZW4gc3RyaW5nIHRvIHRoZSBsb2cgaWYgd2UgYXJlIGluIHZlcmJvc2UgbW9kZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBsb2coIFN0cmluZyBtZXNzYWdlICkgeworICAgICAgICBsb2cobWVzc2FnZSwgdHJ1ZSwgZmFsc2UpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGxvZ2xuKCBTdHJpbmcgbWVzc2FnZSApIHsKKyAgICAgICAgbG9nbG4obWVzc2FnZSwgdHJ1ZSwgZmFsc2UpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEFkZCBhIGdpdmVuIHN0cmluZyB0byB0aGUgbG9nLgorICAgICAqIEBwYXJhbSBtZXNzYWdlIHRleHQgdG8gYWRkCisgICAgICogQHBhcmFtIHBhc3MgaWYgdHJ1ZSBhbmQgaWYgaW4gdmVyYm9zZSBtb2RlLCBvciBpZiBmYWxzZSwgdGhlbiBhZGQKKyAgICAgKiB0aGUgdGV4dDsgb3RoZXJ3aXNlIHN1cHByZXNzIGl0CisgICAgICogQHBhcmFtIGluY3JlbWVudENvdW50IGlmIHBhc3MgaWYgZmFsc2UgYW5kIGluY3JlbWVudENvdW50IGlzIHRydWUsCisgICAgICogdGhlbiBpbmNyZW1lbnQgdGhlIGZhaWx1cmUgY291bnQ7IGlmIHBhc3MgaXMgdHJ1ZSwgdGhlbiB0aGlzIHBhcmFtCisgICAgICogaXMgaWdub3JlZAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGxvZyggU3RyaW5nIG1lc3NhZ2UsIGJvb2xlYW4gcGFzcywgYm9vbGVhbiBpbmNyZW1lbnRDb3VudCApIHsKKyAgICAgICAgaWYgKCFwYXNzICYmIGluY3JlbWVudENvdW50KSB7CisgICAgICAgICAgICBwYXJhbXMuZXJyb3JDb3VudCsrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFwYXNzIHx8IHBhcmFtcy52ZXJib3NlKSB7CisgICAgICAgICAgICBpZiAoIXBhcmFtcy5zdXBwcmVzc0luZGVudCkgaW5kZW50KHBhcmFtcy5pbmRlbnRMZXZlbCArIDEpOworICAgICAgICAgICAgcGFyYW1zLmxvZy5wcmludCggbWVzc2FnZSApOworICAgICAgICAgICAgcGFyYW1zLmxvZy5mbHVzaCgpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFwYXNzICYmICFwYXJhbXMubm90aHJvdykgeworICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24obWVzc2FnZSk7CisgICAgICAgIH0KKworICAgICAgICBwYXJhbXMuc3VwcHJlc3NJbmRlbnQgPSB0cnVlOyAvLyBkb24ndCBpbmRlbnQgb24gc3VjY2Vzc2l2ZSBjYWxscyB0byBsb2coKQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGxvZ2xuKCBTdHJpbmcgbWVzc2FnZSwgYm9vbGVhbiBwYXNzLCBib29sZWFuIGluY3JlbWVudENvdW50ICkgeworICAgICAgICBsb2cobWVzc2FnZSArIFN5c3RlbS5nZXRQcm9wZXJ0eSgibGluZS5zZXBhcmF0b3IiKSwgcGFzcywgaW5jcmVtZW50Q291bnQpOworICAgICAgICBwYXJhbXMuc3VwcHJlc3NJbmRlbnQgPSBmYWxzZTsgLy8gdGltZSB0byBpbmRlbnQgYWdhaW4KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb252ZW5pZW5jZSBvdmVybG9hZHMKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBsb2coIFN0cmluZyBtZXNzYWdlLCBib29sZWFuIHBhc3MgKSB7CisgICAgICAgIGxvZyhtZXNzYWdlLCBwYXNzLCB0cnVlKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBsb2dsbiggU3RyaW5nIG1lc3NhZ2UsIGJvb2xlYW4gcGFzcyApIHsKKyAgICAgICAgbG9nbG4obWVzc2FnZSwgcGFzcywgdHJ1ZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVwb3J0IGFuIGVycm9yCisgICAgICovCisgICAgcHVibGljIHZvaWQgZXJyKCBTdHJpbmcgbWVzc2FnZSApIHsKKyAgICAgICAgbG9nKG1lc3NhZ2UsIGZhbHNlLCB0cnVlKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBlcnJsbiggU3RyaW5nIG1lc3NhZ2UgKSB7CisgICAgICAgIGxvZ2xuKG1lc3NhZ2UsIGZhbHNlLCB0cnVlKTsKKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgaW50IGdldEVycm9yQ291bnQoKSB7CisgICAgICAgIHJldHVybiBwYXJhbXMuZXJyb3JDb3VudDsKKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgdm9pZCB3cml0ZVRlc3ROYW1lKFN0cmluZyB0ZXN0TmFtZSkgeworICAgICAgICBpbmRlbnQocGFyYW1zLmluZGVudExldmVsKTsKKyAgICAgICAgcGFyYW1zLmxvZy5wcmludCh0ZXN0TmFtZSk7CisgICAgICAgIHBhcmFtcy5sb2cuZmx1c2goKTsKKyAgICAgICAgcGFyYW1zLm5lZWRMaW5lRmVlZCA9IHRydWU7CisgICAgfQorCisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVUZXN0UmVzdWx0KGludCBmYWlsQ291bnQsIGludCBpbnZhbGlkQ291bnQpIHsKKyAgICAgICAgaWYgKCFwYXJhbXMubmVlZExpbmVGZWVkKSB7CisgICAgICAgICAgICBpbmRlbnQocGFyYW1zLmluZGVudExldmVsKTsKKyAgICAgICAgICAgIHBhcmFtcy5sb2cucHJpbnQoIn0iKTsKKyAgICAgICAgfQorICAgICAgICBwYXJhbXMubmVlZExpbmVGZWVkID0gZmFsc2U7CisKKyAgICAgICAgaWYgKGZhaWxDb3VudCAhPSAwKSB7CisgICAgICAgICAgICBwYXJhbXMubG9nLnByaW50bG4oIiBGQUlMRUQgKCIgKyBmYWlsQ291bnQgKyAiIGZhaWx1cmVzIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChpbnZhbGlkQ291bnQgIT0gMCkgPworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCAiICsgaW52YWxpZENvdW50ICsgIiB0ZXN0cyBza2lwcGVkKSIgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKSIpKTsKKyAgICAgICAgfSBlbHNlIGlmIChpbnZhbGlkQ291bnQgIT0gMCkgeworICAgICAgICAgICAgcGFyYW1zLmxvZy5wcmludGxuKCIgUXVhbGlmaWVkICgiICsgaW52YWxpZENvdW50ICsgIiB0ZXN0cyBza2lwcGVkKSIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcGFyYW1zLmxvZy5wcmludGxuKCIgUGFzc2VkIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIGZpbmFsIHZvaWQgaW5kZW50KGludCBkaXN0YW5jZSkgeworICAgICAgICBpZiAocGFyYW1zLm5lZWRMaW5lRmVlZCkgeworICAgICAgICAgICAgcGFyYW1zLmxvZy5wcmludGxuKCIgeyIpOworICAgICAgICAgICAgcGFyYW1zLm5lZWRMaW5lRmVlZCA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIHBhcmFtcy5sb2cucHJpbnQoc3BhY2VzLnN1YnN0cmluZygwLCBkaXN0YW5jZSAqIDIpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQcmludCBhIHVzYWdlIG1lc3NhZ2UgZm9yIHRoaXMgdGVzdCBjbGFzcy4KKyAgICAgKi8KKyAgICB2b2lkIHVzYWdlKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZ2V0Q2xhc3MoKS5nZXROYW1lKCkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIjogWy12ZXJib3NlXSBbLW5vdGhyb3ddIFstcHJvbXB0XSBbLWRlc2NyaWJlXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWy1lPG4+XSBbLWZpbHRlcjo8c3RyPl0gW3Rlc3QgbmFtZXNdIik7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiT3B0aW9uczoiKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIgLXZbZXJib3NlXSBTaG93IGFsbCBvdXRwdXQiKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIgLW5bb3Rocm93XSBNZXNzYWdlIG9uIHRlc3QgZmFpbHVyZSByYXRoZXIgdGhhbiBleGNlcHRpb24iKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIgLXByb21wdCBQcm9tcHQgYmVmb3JlIGV4aXRpbmciKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIgLWRlc2NyaWJlID8iKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIgLWU8bj4gU2V0IGV4aGF1c3RpdmVuZXNzIGZyb20gMC4uMTAuICBEZWZhdWx0IGlzIDAsIGZld2VzdCB0ZXN0cy5cbiAgICAgICBUbyBydW4gYWxsIHRlc3RzLCBzcGVjaWZ5IC1lMTAuICBHaXZpbmcgLWUgd2l0aCBubyA8bj4gaXNcbiAgICAgICB0aGUgc2FtZSBhcyAtZTUuIik7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIC1maWx0ZXI6PHN0cj4gPyIpOworCisJYm9vbGVhbiB2YWxpZCA9IHBhcmFtcy5kZXNjcmliZSAmJiB2YWxpZGF0ZSgpOworCWlmICh2YWxpZCkgeworCSAgICBTdHJpbmcgdGVzdERlc2NyaXB0aW9uID0gZ2V0RGVzY3JpcHRpb24oKTsKKwkgICAgaWYgKHRlc3REZXNjcmlwdGlvbiAhPSBudWxsKSB7CisJCVN5c3RlbS5vdXQucHJpbnRsbigiLS0gIiArIHRlc3REZXNjcmlwdGlvbik7CisJICAgIH0KKwl9CisKKyAgICAgICAgSXRlcmF0b3IgdGVzdEVudHJpZXMgPSBnZXRUZXN0RW50cnlJdGVyYXRvcihnZXRBdmFpbGFibGVUZXN0cygpKTsKKworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRlc3QgbmFtZXM6Iik7CisgICAgICAgIHdoaWxlKHRlc3RFbnRyaWVzLmhhc05leHQoKSApIHsKKyAgICAgICAgICAgIE1hcC5FbnRyeSBlID0gKE1hcC5FbnRyeSl0ZXN0RW50cmllcy5uZXh0KCk7CisJICAgIFN0cmluZyBtZXRob2ROYW1lID0gKFN0cmluZyllLmdldEtleSgpOworCisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCJcdCIgKyBtZXRob2ROYW1lICk7CisJICAgIGlmICh2YWxpZCkgeworCQlTdHJpbmcgbWV0aG9kRGVzY3JpcHRpb24gPSBnZXRNZXRob2REZXNjcmlwdGlvbihtZXRob2ROYW1lKTsKKwkJaWYgKG1ldGhvZERlc2NyaXB0aW9uICE9IG51bGwpIHsKKwkJICAgIFN5c3RlbS5vdXQucHJpbnQoIiAtLSAiICsgbWV0aG9kRGVzY3JpcHRpb24pOworCQl9CisJICAgIH0KKwkgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBoZXgoY2hhciBjaCkgeworICAgICAgICBTdHJpbmdCdWZmZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBTdHJpbmcgZm9vID0gSW50ZWdlci50b1N0cmluZyhjaCwxNikudG9VcHBlckNhc2UoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IGZvby5sZW5ndGgoKTsgaSA8IDQ7ICsraSkgeworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnMCcpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQgKyBmb287CisgICAgfQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGhleChpbnQgY2gpIHsKKyAgICAgICAgU3RyaW5nQnVmZmVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgU3RyaW5nIGZvbyA9IEludGVnZXIudG9TdHJpbmcoY2gsMTYpLnRvVXBwZXJDYXNlKCk7CisgICAgICAgIGZvciAoaW50IGkgPSBmb28ubGVuZ3RoKCk7IGkgPCA0OyArK2kpIHsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJzAnKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0ICsgZm9vOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGhleChTdHJpbmcgcykgeworICAgICAgICBTdHJpbmdCdWZmZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHMubGVuZ3RoKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKGkgIT0gMCkgcmVzdWx0LmFwcGVuZCgnLCcpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChoZXgocy5jaGFyQXQoaSkpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgaGV4KFN0cmluZ0J1ZmZlciBzKSB7CisgICAgICAgIHJldHVybiBoZXgocy50b1N0cmluZygpKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBBU0NJSVdyaXRlciBleHRlbmRzIFByaW50V3JpdGVyIHsKKyAgICAgICAgcHJpdmF0ZSBXcml0ZXIgdzsKKyAgICAgICAgcHJpdmF0ZSBTdHJpbmdCdWZmZXIgYnVmZmVyID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICAKKyAgICAgICAgLy8gQ2hhcmFjdGVycyB0aGF0IHdlIHRoaW5rIGFyZSBwcmludGFibGUgYnV0IHRoYXQgZXNjYXBlVW5wcmludGFibGUKKyAgICAgICAgLy8gZG9lc24ndAorICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBVbmljb2RlU2V0IFMgPQorICAgICAgICAgICAgbmV3IFVuaWNvZGVTZXQoIltcXHUwMDA5XFx1MDAwQVxcdTAwMERdIik7CisKKyAgICAgICAgcHVibGljIEFTQ0lJV3JpdGVyKFdyaXRlciB3LCBib29sZWFuIGF1dG9GbHVzaCkgeworICAgICAgICAgICAgc3VwZXIodywgYXV0b0ZsdXNoKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBBU0NJSVdyaXRlcihPdXRwdXRTdHJlYW0gb3MsIGJvb2xlYW4gYXV0b0ZsdXNoKSB7CisgICAgICAgICAgICBzdXBlcihvcywgYXV0b0ZsdXNoKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIHdyaXRlKGludCBjKSB7CisgICAgICAgICAgICBzeW5jaHJvbml6ZWQobG9jaykgeworICAgICAgICAgICAgICAgIGJ1ZmZlci5zZXRMZW5ndGgoMCk7CisgICAgICAgICAgICAgICAgaWYgKCFTLmNvbnRhaW5zKGMpICYmIFV0aWxpdHkuZXNjYXBlVW5wcmludGFibGUoYnVmZmVyLCBjKSkgeworICAgICAgICAgICAgICAgICAgICBzdXBlci53cml0ZShidWZmZXIudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc3VwZXIud3JpdGUoYyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwdWJsaWMgdm9pZCB3cml0ZShjaGFyW10gYnVmLCBpbnQgb2ZmLCBpbnQgbGVuKSB7CisgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKGxvY2spIHsKKyAgICAgICAgICAgICAgICBidWZmZXIuc2V0TGVuZ3RoKDApOworICAgICAgICAgICAgICAgIGludCBsaW1pdCA9IG9mZiArIGxlbjsKKyAgICAgICAgICAgICAgICB3aGlsZSAob2ZmIDwgbGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IGMgPSBVVEYxNi5jaGFyQXQoYnVmLCAwLCBidWYubGVuZ3RoLCBvZmYpOworICAgICAgICAgICAgICAgICAgICBvZmYgKz0gVVRGMTYuZ2V0Q2hhckNvdW50KGMpOworICAgICAgICAgICAgICAgICAgICBpZiAoIVMuY29udGFpbnMoYykgJiYgVXRpbGl0eS5lc2NhcGVVbnByaW50YWJsZShidWZmZXIsIGMpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdXBlci53cml0ZShidWZmZXIudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIuc2V0TGVuZ3RoKDApOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgc3VwZXIud3JpdGUoYyk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgcHVibGljIHZvaWQgd3JpdGUoU3RyaW5nIHMsIGludCBvZmYsIGludCBsZW4pIHsKKyAgICAgICAgICAgIHdyaXRlKHMuc3Vic3RyaW5nKG9mZiwgb2ZmICsgbGVuKS50b0NoYXJBcnJheSgpLCAwLCBsZW4pOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgVGVzdFBhcmFtcyB7CisgICAgICAgIHB1YmxpYyBib29sZWFuICAgcHJvbXB0ID0gZmFsc2U7CisgICAgICAgIHB1YmxpYyBib29sZWFuICAgbm90aHJvdyA9IGZhbHNlOworICAgICAgICBwdWJsaWMgYm9vbGVhbiAgIHZlcmJvc2UgPSBmYWxzZTsKKwlwdWJsaWMgYm9vbGVhbiAgIGRlc2NyaWJlID0gZmFsc2U7CisgICAgICAgIHB1YmxpYyBpbnQgICAgICBpbmNsdXNpb24gPSAwOworICAgICAgICBwdWJsaWMgU3RyaW5nICAgIGZpbHRlciA9IG51bGw7CisKKyAgICAgICAgcHVibGljIFByaW50V3JpdGVyIGxvZyA9IG5ldyBBU0NJSVdyaXRlcihTeXN0ZW0ub3V0LCB0cnVlKTsKKyAgICAgICAgcHVibGljIGludCAgICAgICAgIGluZGVudExldmVsID0gMDsKKyAgICAgICAgcHVibGljIGJvb2xlYW4gICAgIG5lZWRMaW5lRmVlZCA9IGZhbHNlOworICAgICAgICBwdWJsaWMgYm9vbGVhbiAgICAgc3VwcHJlc3NJbmRlbnQgPSBmYWxzZTsKKyAgICAgICAgcHVibGljIGludCAgICAgICAgIGVycm9yQ291bnQgPSAwOworICAgICAgICBwdWJsaWMgaW50ICAgICAgICAgaW52YWxpZENvdW50ID0gMDsKKyAgICB9CisKKyAgICBwcml2YXRlIFRlc3RQYXJhbXMgcGFyYW1zID0gbnVsbDsKKyAgICBwcml2YXRlIE1hcCB0ZXN0TWV0aG9kczsKKyAgICBwcml2YXRlIFNldCB0ZXN0c1RvUnVuOworICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIHNwYWNlcyA9ICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L1Rlc3RMb2cuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9UZXN0TG9nLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYzFhODhlOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9UZXN0TG9nLmphdmEKQEAgLTAsMCArMSwzMCBAQAorLyoqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9UZXN0TG9nLmphdmEsdiAkCisgKiAkRGF0ZTogMjAwMi8wOC8xMyAyMjowMjoxNiAkCisgKiAkUmV2aXNpb246IDEuMyAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudGVzdDsKKworcHVibGljIGludGVyZmFjZSBUZXN0TG9nIHsKKworICAgIC8qKgorICAgICAqIEFkZHMgZ2l2ZW4gc3RyaW5nIHRvIHRoZSBsb2cgaWYgd2UgYXJlIGluIHZlcmJvc2UgbW9kZS4KKyAgICAgKi8KKyAgICB2b2lkIGxvZyhTdHJpbmcgbWVzc2FnZSk7CisKKyAgICB2b2lkIGxvZ2xuKFN0cmluZyBtZXNzYWdlKTsKKworICAgIC8qKgorICAgICAqIFJlcG9ydCBhbiBlcnJvcgorICAgICAqLworICAgIHZvaWQgZXJyKFN0cmluZyBtZXNzYWdlKTsKKworICAgIHZvaWQgZXJybG4oU3RyaW5nIG1lc3NhZ2UpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L1Rlc3RVdGlsLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvVGVzdFV0aWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOGRjMGJjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L1Rlc3RVdGlsLmphdmEKQEAgLTAsMCArMSw4NSBAQAorLyoqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9UZXN0VXRpbC5qYXZhLHYgJAorICogJERhdGU6IDIwMDIvMDgvMTMgMjI6MDI6MTYgJAorICogJFJldmlzaW9uOiAxLjIgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3Q7CisKK2ltcG9ydCBqYXZhLmlvLkJ1ZmZlcmVkUmVhZGVyOworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLmlvLkZpbGVSZWFkZXI7CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKKworcHVibGljIGNsYXNzIFRlc3RVdGlsIHsKKwkvKioKKwkgKiBTdGFuZGFyZCBwYXRoIHRvIHRoZSB0ZXN0IGRhdGEuCisJICovCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgREFUQV9QQVRIID0gIi9zcmMvY29tL2libS9pY3UvZGV2L2RhdGEiOworCisJLyoqCisJICogUHJvcGVydHkgZm9yIHVzZXItZGVmaW5lZCBkYXRhIHBhdGguCisJICovCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgREFUQV9QQVRIX1BST1BFUlRZID0gIklDVURhdGFQYXRoIjsKKworCS8qKgorCSAqIEdldCBwYXRoIHRvIHRlc3QgZGF0YS48cD4KKwkgKiAKKwkgKiBwYXRoIGlzIHByb3ZpZGVkIHJlbGF0aXZlIHRvIHRoZSBzcmMgcGF0aCwgaG93ZXZlciB0aGUgdXNlciBjb3VsZCAKKwkgKiBzZXQgYSBzeXN0ZW0gcHJvcGVydHkgdG8gY2hhbmdlIHRoZSBkaXJlY3RvcnkgcGF0aC48YnI+CisJICovCisKKwlwdWJsaWMgc3RhdGljIGZpbmFsIEZpbGUgZ2V0RGF0YVBhdGhSb290KCkgeworCQlTdHJpbmcgcyA9IFN5c3RlbS5nZXRQcm9wZXJ0eShEQVRBX1BBVEhfUFJPUEVSVFkpOworCQlpZiAocyA9PSBudWxsKSB7CisJCQkvLyBhc3N1bWUgdXNlci5kaXIgaXMgZGlyZWN0bHkgYWJvdmUgc3JjIGRpcmVjdG9yeQorCQkJcyA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgidXNlci5kaXIiKTsKKwkJCXMgPSBzICsgREFUQV9QQVRIOworCQl9CisJCQorCQlGaWxlIGYgPSBuZXcgRmlsZShzKTsKKwkJaWYgKCFmLmV4aXN0cygpKSB7CisJCQl0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcigiY2Fubm90IGZpbmQgSUNVIGRhdGEgcm9vdCAnIiArIGYuZ2V0QWJzb2x1dGVQYXRoKCkgKyAiJywgdHJ5IGRlZmluaW5pbmcgIiArIERBVEFfUEFUSF9QUk9QRVJUWSk7CisJCX0KKworCQlyZXR1cm4gZjsKKwl9CisKKwkvKioKKwkgKiBSZXR1cm4gdGhlIGRhdGEgZmlsZSBhdCBwYXRoICduYW1lJyByb290ZWQgYXQgdGhlIGRhdGEgcGF0aC4KKwkgKiBGb3IgZXhhbXBsZSwgPHByZT5nZXREYXRhRmlsZSgidW5pY29kZS9Vbmljb2RlRGF0YS50eHQiKTs8L3ByZT4KKwkgKi8KKwlwdWJsaWMgc3RhdGljIGZpbmFsIEZpbGUgZ2V0RGF0YUZpbGUoU3RyaW5nIG5hbWUpIHsKKwkJRmlsZSBmID0gbmV3IEZpbGUoZ2V0RGF0YVBhdGhSb290KCksIG5hbWUpOworCQlpZiAoIWYuZXhpc3RzKCkpIHsKKwkJCXRocm93IG5ldyBJbnRlcm5hbEVycm9yKCJjYW5ub3QgZmluZCBJQ1UgZGF0YSBmaWxlICciICsgZi5nZXRBYnNvbHV0ZVBhdGgoKSArICInIik7CisJCX0KKworCQlyZXR1cm4gZjsKKwl9CisKKwkvKioKKwkgKiBSZXR1cm4gYSBidWZmZXJlZCByZWFkZXIgb24gdGhlIGRhdGEgZmlsZSBhdCBwYXRoICduYW1lJyByb290ZWQgYXQgdGhlIGRhdGEgcGF0aAorCSAqIHdpdGggaW5pdGlhbCBidWZmZXIgc2l6ZSAnYnVmU2l6ZScuCisJICovCisJcHVibGljIHN0YXRpYyBmaW5hbCBCdWZmZXJlZFJlYWRlciBnZXREYXRhUmVhZGVyKFN0cmluZyBuYW1lLCBpbnQgYnVmU2l6ZSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKwkJRmlsZSBmID0gZ2V0RGF0YUZpbGUobmFtZSk7CisJCUZpbGVSZWFkZXIgZnIgPSBuZXcgRmlsZVJlYWRlcihmKTsKKwkJQnVmZmVyZWRSZWFkZXIgYnIgPSBuZXcgQnVmZmVyZWRSZWFkZXIoZnIsIGJ1ZlNpemUpOworCQlyZXR1cm4gYnI7CisJfQorCisJLyoqCisJICogUmV0dXJuIGEgYnVmZmVyZWQgcmVhZGVyIG9uIHRoZSBkYXRhIGZpbGUgYXQgcGF0aCAnbmFtZScgcm9vdGVkIGF0IHRoZSBkYXRhIHBhdGguCisJICovCisJcHVibGljIHN0YXRpYyBmaW5hbCBCdWZmZXJlZFJlYWRlciBnZXREYXRhUmVhZGVyKFN0cmluZyBuYW1lKSB0aHJvd3MgSU9FeGNlcHRpb24geworCQlyZXR1cm4gZ2V0RGF0YVJlYWRlcihuYW1lLCAxMDI0KTsKKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9iaWdkZWMvRGlhZ0JpZ0RlY2ltYWwuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9iaWdkZWMvRGlhZ0JpZ0RlY2ltYWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mY2U4OTMzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2JpZ2RlYy9EaWFnQmlnRGVjaW1hbC5qYXZhCkBAIC0wLDAgKzEsNTM0MiBAQAorLyogR2VuZXJhdGVkIGZyb20gJ0RpYWdCaWdEZWNpbWFsLm5yeCcgMjcgTWFyIDIwMDAgMjI6Mzg6NDQgW3YxLjE2Ml0gKi8KKy8qIE9wdGlvbnM6IEJpbmFyeSBDb21tZW50cyBDcm9zc3JlZiBGb3JtYXQgSmF2YSBMb2dvIFRyYWNlMSBWZXJib3NlMyAqLworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudGVzdC5iaWdkZWM7CitpbXBvcnQgamF2YS5tYXRoLkJpZ0ludGVnZXI7CitpbXBvcnQgY29tLmlibS5pY3UubWF0aC4qOworaW1wb3J0IGNvbS5pYm0uaWN1LmRldi50ZXN0LlRlc3RGbXdrOworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qIERlY2ltYWwgZGlhZ25vc3RpYyB0ZXN0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1mYyAqLworLyogQ29weXJpZ2h0IChjKSBJQk0gQ29ycG9yYXRpb24gMTk5NiwgMjAwMC4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICovCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qIERpYWdCaWdEZWNpbWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgIEEgY2xhc3MgdGhhdCB0ZXN0cyB0aGUgQmlnRGVjaW1hbCBhbmQgTWF0aENvbnRleHQgY2xhc3Nlcy4gICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICBUaGUgdGVzdHMgaGVyZSBhcmUgZGVyaXZlZCBmcm9tIG9yIGNvdmVyIHRoZSBzYW1lIHBhdGhzIGFzOiAgICAgICovCisvKiAgICAgIC0tIEFOU0kgWDMtMjc0IHRlc3RjYXNlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgLS0gSmF2YSBKQ0sgdGVzdGNhc2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAtLSBOZXRSZXh4IHRlc3RjYXNlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgIC0tIFZNL0NNUyBTLzM3MCBSRVhYIGltcGxlbWVudGF0aW9uIHRlc3RjYXNlcyBbMTk4MStdICAgICAgICAgKi8KKy8qICAgICAgLS0gSUJNIFZpZW5uYSBMYWJvcmF0b3J5IFJleHggY29tcGlsZXIgdGVzdGNhc2VzIFsxOTg4K10gICAgICAqLworLyogICAgICAtLSBOZXcgdGVzdGNhc2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgVGhlIGF1dGhvcml0YXRpdmUgc291cmNlcyBmb3IgaG93IHRoZSB1bmRlcmx5aW5nIHRlY2hub2xvZ3kgICAgICAqLworLyogICAoYXJpdGhtZXRpYykgc2hvdWxkIHdvcmsgYXJlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgIC0tIGZvciBkaWdpdHM9MCAoZml4ZWQgcG9pbnQpOiBqYXZhLm1hdGguQmlnRGVjaW1hbCAgICAgICAgICAgKi8KKy8qICAgICAgLS0gZm9yIGRpZ2l0cz4wIChmbG9hdGluZyBwb2ludCk6IEFOU0kgWDMuMjc0LTE5OTYgKyBlcnJhdGEgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qIENoYW5nZSBsaXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogMTk5Ny4wOS4wNSBJbml0aWFsIGltcGxlbWVudGF0aW9uLCBmcm9tIERpYWdSZXh4IFtOZXRSZXh4IHRlc3RzXSAgICovCisvKiAxOTk4LjA1LjAyIDAuMDcgY2hhbmdlcyAoZS5nLiwgY29tcGFyZVRvKSAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIDE5OTguMDYuMDYgUm91bmRpbmcgbW9kZXMgYW5kIGZvcm1hdCBhZGRpdGlvbnMgICAgICAgICAgICAgICAgICAgICAqLworLyogMTk5OC4wNi4yNSBSZW5hbWUgZnJvbSBEaWFnRGVjaW1hbDsgbWFrZSBzdGFuZC1hbG9uZSBbYWRkICAgICAgICAgICovCisvKiAgICAgICAgICAgIERpYWdFeGNlcHRpb24gYXMgYSBNaW5vciBjbGFzc10gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIDE5OTguMDYuMjcgU3RhcnQgYWRkaW5nIHRlc3RjYXNlcyBmb3IgRElHSVRTPTAvRk9STT1QTEFJTiBjYXNlcyAgICAqLworLyogICAgICAgICAgICBSZW9yZ2FuaXplIGZvciBmYXN0ZXIgdHJhY2UgY29tcGlsYXRpb24gICAgICAgICAgICAgICAgICovCisvKiAxOTk4LjA2LjI4IG5ldzogdmFsdWVvZiwgc2NhbGUsIG1vdmVQb2ludFgsIHVuc2NhbGVkVmFsdWUsIGV0Yy4gICAgKi8KKy8qIDE5OTguMDcuMDcgU2NhbGVkIGRpdmlkZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogMTk5OC4wNy4wOCBzZXRTY2FsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAxOTk4LjA3LjE1IG5ldyBzY2FmZm9sZGluZyAoTWlub3IgVGVzdCBjbGFzcykgLS0gc2VlIGRpYWdhYnMgICAgICAgKi8KKy8qIDE5OTguMTIuMTQgYWRkIHRvQmlnRGVjaW1hbCBhbmQgQmlnRGVjaW1hbChqYXZhLm1hdGguQmlnRGVjaW1hbCkgICAqLworLyogMTk5OS4wMi4wNCBudW1iZXIgcHJlcGFyYXRpb24gcm91bmRzIGluc3RlYWQgb2YgZGlnaXRzKzEgdHJ1bmMgICAgICovCisvKiAxOTk5LjAyLjA5IGZvcm1hdCBtZXRob2Qgbm93IG9ubHkgaGFzIHR3byBzaWduYXR1cmVzICAgICAgICAgICAgICAgKi8KKy8qIDE5OTkuMDIuMjcgbm8gbG9uZ2VyIHVzZSBSZXh4IGNsYXNzIG9yIFJleHhJTyBjbGFzcyAgICAgICAgICAgICAgICAqLworLyogMTk5OS4wMy4wNSBhZGQgTWF0aENvbnRleHQgdGVzdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAxOTk5LjAzLjA1IHVwZGF0ZSBmb3IgMC45NiBbbm8gbnVsbCBzZXR0aW5ncywgZXRjLl0gICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgZHJvcCBzdW5kcnkgY29uc3RydWN0b3JzOyBubyBibGFua3M7IGNoYXJbXSBnZXRzIGludHMgICAqLworLyogICAgICAgICAgICBkcm9wIHN1bmRyeSBjb252ZXJ0ZXJzLCBhZGQgRXhhY3QgY29udmVydGVycyAgICAgICAgICAgICovCisvKiAxOTk5LjA1LjI3IGFkZGl0aW9uYWwgdGVzdHMgZm9yIHNjYWxlZCBhcml0aG1ldGljICAgICAgICAgICAgICAgICAgKi8KKy8qIDE5OTkuMDYuMjkgYWRkaXRpb25hbCB0ZXN0cyBmb3IgZXhwb25lbnQgb3ZlcmZsb3dzICAgICAgICAgICAgICAgICAqLworLyogMTk5OS4wNy4wMyBhZGQgJ2NvbnRpbnVlJyBvcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAxOTk5LjA3LjEwIGFkZGl0aW9uYWwgdGVzdHMgZm9yIHNjYWxlZCBhcml0aG1ldGljICAgICAgICAgICAgICAgICAgKi8KKy8qIDE5OTkuMDcuMTggcmFuZG9tbHktZ2VuZXJhdGVkIHRlc3RzIGFkZGVkIGZvciBiYXNlIG9wZXJhdG9ycyAgICAgICAqLworLyogMTk5OS4xMC4yOCB3ZWlyZCBpbnRWYWx1ZUV4YWN0IGJhZCBjYXNlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAxOTk5LjEyLjIxIG11bHRpcGxpY2F0aW9uIGZhc3QgcGF0aCBmYWlsdXJlIGFuZCBlZGdlIGNhc2VzICAgICAgICAgKi8KKy8qIDIwMDAuMDEuMDEgY29weXJpZ2h0IHVwZGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogMjAwMC4wMy4yNiBjb3NtZXRpYyB1cGRhdGVzOyBhZGQgZXh0cmEgZm9ybWF0KCkgdGVzdGNhc2VzICAgICAgICAgICovCisvKiAyMDAwLjAzLjI3IDEuMDAgbW92ZSB0byBjb20uaWJtLmljdS5tYXRoIHBhY2thZ2U7IG9wZW4gc291cmNlIHJlbGVhc2U7ICovCisvKiAgICAgICAgICAgICAgICAgY2hhbmdlIHRvIGphdmFkb2MgY29tbWVudHMgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisvLyBub3RlIEJJTkFSWSBmb3IgY29udmVyc2lvbnMgY2hlY2tpbmcKKworCisKKworLyoqCisgKiBUaGUgPGNvZGU+RGlhZ0JpZ0RlY2ltYWw8L2NvZGU+IGNsYXNzIGZvcm1zIGEgc3RhbmRhbG9uZSB0ZXN0IHN1aXRlCisgKiBmb3IgdGhlIDxjb2RlPmNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbDwvY29kZT4gYW5kCisgKiA8Y29kZT5jb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0PC9jb2RlPiBjbGFzc2VzIChvciwgYnkgY2hhbmdpbmcgdGhlCisgKiA8Y29kZT5wYWNrYWdlPC9jb2RlPiBzdGF0ZW1lbnQsIG90aGVyIGNsYXNzZXMgb2YgdGhlIHNhbWUgbmFtZXMgYW5kCisgKiBkZWZpbml0aW9uIGluIG90aGVyIHBhY2thZ2VzKS4gIEl0IG1heSBhbHNvIGJlIHVzZWQgYXMgYSBjb25zdHJ1Y3RlZAorICogb2JqZWN0IHRvIGVtYmVkIHRoZSB0ZXN0cyBpbiBhbiBleHRlcm5hbCB0ZXN0IGhhcm5lc3MuCisgKiA8cD4KKyAqIFRoZSB0ZXN0cyBhcmUgY29sbGVjdGVkIGludG8gPGk+Z3JvdXBzPC9pPiwgZWFjaCBjb3JyZXNwb25kaW5nIHRvIGEKKyAqIHRlc3RlZCBtZXRob2Qgb3IgYSBtb3JlIGdlbmVyYWwgZ3JvdXBpbmcuICBCeSBkZWZhdWx0LCB3aGVuIHJ1biBmcm9tCisgKiB0aGUgc3RhdGljIHtAbGluayAjbWFpbihqYXZhLmxhbmcuU3RyaW5nW10pfSBtZXRob2QsIHRoZSBydW4gd2lsbCBlbmQKKyAqIGlmIGFueSB0ZXN0IGZhaWxzIGluIGEgZ3JvdXAuICBUaGUgPGNvZGU+Y29udGludWU8L2NvZGU+IGFyZ3VtZW50IG1heQorICogYmUgc3BlY2lmaWVkIHRvIGZvcmNlIHRoZSB0ZXN0cyB0byBydW4gdG8gY29tcGxldGlvbi4KKyAqIDxwPgorICogVHdvIG1pbm9yIChpbm5lcikgY2xhc3NlcyBhcmUgdXNlZDsge0BsaW5rCisgKiBEaWFnQmlnRGVjaW1hbC5EaWFnRXhjZXB0aW9ufSBpcyB1c2VkIHRvIHNpZ25hbCB0aGUgZmFpbHVyZSBvZiBhIHRlc3QKKyAqIGdyb3VwLCBhbmQge0BsaW5rIERpYWdCaWdEZWNpbWFsLlRlc3R9LCBhIGRlcGVuZGVudCBtaW5vciBjbGFzcywgaXMKKyAqIHVzZWQgdG8gcmVnaXN0ZXIgdGVzdHMgc28gdGhhdCBhIHN1bW1hcnkgb2YgZmFpbHVyZXMgKG9yIHN1Y2Nlc3MpIGNhbiBiZQorICogcHJlc2VudGVkIGFzIGVhY2ggZ3JvdXAgaXMgY29tcGxldGVkLgorICoKKyAqIEBzZWUgICAgIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbAorICogQHNlZSAgICAgY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dAorICogQHZlcnNpb24gMS4wMCAyMDAwLjAzLjI3CisgKiBAYXV0aG9yICBNaWtlIENvd2xpc2hhdworICovCisKK3B1YmxpYyBjbGFzcyBEaWFnQmlnRGVjaW1hbCBleHRlbmRzIFRlc3RGbXdreworIHByaXZhdGUgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgJDA9IkRpYWdCaWdEZWNpbWFsLm5yeCI7CisgCisgLyogcHJvcGVydGllcyBzaGFyZWQgKi8KKyBqYXZhLnV0aWwuVmVjdG9yIFRlc3RzPW5ldyBqYXZhLnV0aWwuVmVjdG9yKDEwMCk7IC8vIHNjYWZmb2xkaW5nCisgCisgLyogcHJvcGVydGllcyBwcml2YXRlICovCisgcHJpdmF0ZSBpbnQgdG90YWxjb3VudD0wOyAvLyBjb3VudHMgdGVzdHMgcnVuCisgCisgLyogcHJvcGVydGllcyBjb25zdGFudCBwcml2YXRlICovCisgCisgLyogQ291bnQgb2YgdGVzdCBncm91cHMgKi8KKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgdGVzdGNvdW50PTM4OworIAorIHByaXZhdGUgc3RhdGljIGZpbmFsIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCB6ZXJvPWNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbC5aRVJPOworIHByaXZhdGUgc3RhdGljIGZpbmFsIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCBvbmU9Y29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsLk9ORTsKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgdHdvPW5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoMik7CisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIHRlbj1jb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwuVEVOOworIHByaXZhdGUgc3RhdGljIGZpbmFsIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCB0ZW5sb25nPW5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoKGxvbmcpMTIzNDU1NDMyMSk7IC8vIDEwLWRpZ2l0ZXIKKyAKKyAvKiBTb21lIGNvbnRleHQgb2JqZWN0cyAtLSBbc29tZSBvZiB0aGVzZSBhcmUgY2hlY2tlZCBsYXRlcl0gKi8KKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0IG1jZGVmPWNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuREVGQVVMVDsKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0IG1jMz1uZXcgY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dCgzKTsKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0IG1jNj1uZXcgY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dCg2KTsKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0IG1jOT1uZXcgY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dCg5KTsKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0IG1jNTA9bmV3IGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQoNTApOworIHByaXZhdGUgc3RhdGljIGZpbmFsIGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQgbWNzPW5ldyBjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0KDksY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5TQ0lFTlRJRklDKTsKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0IG1jZT1uZXcgY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dCg5LGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuRU5HSU5FRVJJTkcpOworIHByaXZhdGUgc3RhdGljIGZpbmFsIGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQgbWNsZD1uZXcgY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dCg5LGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuU0NJRU5USUZJQyx0cnVlKTsgLy8gbG9zdCBkaWdpdHMKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0IG1jbGQwPW5ldyBjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0KDAsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5TQ0lFTlRJRklDLHRydWUpOyAvLyBsb3N0IGRpZ2l0cywgZGlnaXRzPTAKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0IG1jZmQ9bmV3IGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQoMCxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlBMQUlOKTsgLy8gZml4ZWQgZGVjaW1hbCBzdHlsZQorIAorIC8qIGJvdW5kYXJ5IHByaW1pdGl2ZSB2YWx1ZXMgKi8KKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIGJtaW49LTEyODsKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIGJtYXg9MTI3OworIHByaXZhdGUgc3RhdGljIGZpbmFsIGJ5dGUgYnplcj0wOworIHByaXZhdGUgc3RhdGljIGZpbmFsIGJ5dGUgYm5lZz0tMTsKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIGJwb3M9MTsKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgaW1pbj0tMjE0NzQ4MzY0ODsKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgaW1heD0yMTQ3NDgzNjQ3OworIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBpemVyPTA7CisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IGluZWc9LTE7CisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IGlwb3M9MTsKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIGxtaW49LTkyMjMzNzIwMzY4NTQ3NzU4MDhMOworIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgbG1heD05MjIzMzcyMDM2ODU0Nzc1ODA3TDsKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIGx6ZXI9KGxvbmcpMDsKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIGxuZWc9KGxvbmcpLTE7CisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBscG9zPShsb25nKTE7CisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgc2hvcnQgc21pbj0tMzI3Njg7CisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgc2hvcnQgc21heD0zMjc2NzsKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBzaG9ydCBzemVyPShzaG9ydCkwOworIHByaXZhdGUgc3RhdGljIGZpbmFsIHNob3J0IHNuZWc9KHNob3J0KSgtMSk7CisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgc2hvcnQgc3Bvcz0oc2hvcnQpMTsKKyAKKyAKKyAvKiBwcm9wZXJ0aWVzIGNvbnN0YW50IHByaXZhdGUgdW51c2VkICovIC8vIHByZXNlbnQgYnV0IG5vdCByZWZlcmVuY2VkCisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyBjb3B5cmlnaHQ9IiBDb3B5cmlnaHQgKGMpIElCTSBDb3Jwb3JhdGlvbiAxOTk2LCAyMDAwLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIjsKKworIAorIC8qKiBDb25zdHJ1Y3RzIGEgPGNvZGU+RGlhZ0JpZ0RlY2ltYWw8L2NvZGU+IHRlc3Qgc3VpdGUuCisgICAqIDxwPgorICAgKiBJbnZva2UgaXRzIHtAbGluayAjZGlhZ3J1bn0gbWV0aG9kIHRvIHJ1biB0aGUgdGVzdHMuCisgICAqLworIAorIHB1YmxpYyBEaWFnQmlnRGVjaW1hbCgpe3N1cGVyKCk7CisgIHJldHVybjsKKyAgfQorCisgLyoqIFJ1biB0aGUgdGVzdHMgaW4gdGhlIHRlc3Qgc3VpdGUuCisgICoKKyAgKiBAcGFyYW0gaXNDb250aW51ZSBUaGUgPGNvZGU+Ym9vbGVhbjwvY29kZT4gd2hpY2ggZGV0ZXJtaW5lcyB3aGV0aGVyCisgICogICAgICAgICAgICAgICAgICAgdG8gc3RvcCBydW5uaW5nIGFmdGVyIGEgZ3JvdXAgZmFpbHMuICBJZiAxICh0cnVlKQorICAqICAgICAgICAgICAgICAgICAgIHRoZW4gdGhlIHRlc3RzIHNob3VsZCBiZSBydW4gdG8gY29tcGxldGlvbiBpZgorICAqICAgICAgICAgICAgICAgICAgIHBvc3NpYmxlOyBpZiAwIChmYWxzZSkgdGhlbiB0aGUgcnVuIHdpbGwgZW5kIGlmIGEKKyAgKiAgICAgICAgICAgICAgICAgICBncm91cCBmYWlscy4KKyAgKiBAcmV0dXJuIGFuIDxjb2RlPmludDwvY29kZT4gd2hpY2ggaXMgMCBpZiBhbGwgdGVzdHMgd2VyZQorICAqIHN1Y2Nlc3NmdWwsID4wICh0aGUgY291bnQgb2YgZmFpbHVyZXMpIGlmIHNvbWUgZmFpbHVyZXMgd2VyZQorICAqIGRldGVjdGVkLCBvciA8MCBpZiBhbiB1bmV4cGVjdGVkIEV4Y2VwdGlvbiB3YXMgc2lnbmFsbGVkLgorICAqLworIAorIHB1YmxpYyBpbnQgZGlhZ3J1bihib29sZWFuIGlzQ29udGludWUpeworICBpbnQgZmFpbHM7CisgIGludCBudW09MDsKKyAgRGlhZ0V4Y2VwdGlvbiBkZT1udWxsOworICBqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiBlPW51bGw7CisgIGphdmEubGFuZy5TdHJpbmcgcmVzdD1udWxsOworICAKKyAgZmFpbHM9MDsgLy8gY291bnQgb2YgZmFpbHVyZXMKKyAgdHJ5e251bT0xO251bTpmb3IoO251bTw9dGVzdGNvdW50O251bSsrKXsgLy8gW3Rlc3Rjb3VudCBpcyBjb25zdGFudCBzZXQgYWJvdmVdCisgICB0cnl7CisgICAgZG90ZXN0KG51bSk7CisgICB9CisgICBjYXRjaCAoRGlhZ0V4Y2VwdGlvbiAkMSl7ZGU9JDE7CisgICAgc2F5KCk7CisgICAgZXJybG4oIioqKiogRmFpbGVkOiIrIiAiK2RlLmdldE1lc3NhZ2UoKSsiICIrIioqKioiKTsKKyAgICBzYXkoKTsKKyAgICBmYWlscz1mYWlscytkZS5mYWlsY291bnQ7CisgICAgaWYgKCghaXNDb250aW51ZSkpIAorICAgICBicmVhayBudW07CisgICB9CisgICB9CisgIH0KKyAgY2F0Y2ggKGphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uICQyKXtlPSQyOyAvLyBhbnkgb3RoZXIgZXhjZXB0aW9uIGlzIHRvdGFsIGZhaWx1cmU7IGp1c3Qgc2hvdyB0cmFjZSBhbmQgcXVpdAorICAgc2F5KCk7CisgICBlcnJsbigiKioqKiBGYWlsZWQ6IHVuZXhwZWN0ZWQgZXhjZXB0aW9uICoqKioiKTsKKyAgIGUucHJpbnRTdGFja1RyYWNlKCk7CisgICByZXR1cm4gLTE7CisgIH0vKm51bSovCisgIAorICBpZiAoZmFpbHM9PTApIAorICAgc2F5KCItLS0gQWxsIE9LIC0tLSIrIiAiK3JpZ2h0KCJbIit0b3RhbGNvdW50KyIgIisidGVzdHNdIiwxNSkpOworICBlbHNlIAorICAgeworICAgIGlmIChpc0NvbnRpbnVlKSAKKyAgICAgeworICAgICAgaWYgKGZhaWxzPjEpIAorICAgICAgIHJlc3Q9InRlc3RzIjsKKyAgICAgIGVsc2UgCisgICAgICAgcmVzdD0idGVzdCI7CisgICAgICBzYXkoIi0tLSBBbGwgcnVuIC0tLSIrIiAiK3JpZ2h0KCJbIit0b3RhbGNvdW50KyIgIisidGVzdHMsIiwxNCkrIiAiKyJmYWlsZWQiKyIgIitmYWlscysiICIrcmVzdCsiXSIpOworICAgICAKKyAgICAgfQorICAgfQorICAKKyAgcmV0dXJuIGZhaWxzOworICB9CisKKyAvKiBSdW4gdGVzdCBieSBudW1iZXIgLS0gbWV0aG9kIGZvciBkZXZlbG9wbWVudC9wcml2YXRlIHN3aXRjaGluZyAqLworIAorIHByaXZhdGUgdm9pZCBkb3Rlc3QoaW50IG51bSl7CisgIHsvKnNlbGVjdCovc3dpdGNoKG51bSl7CisgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworICAgLyogTWF0aENvbnRleHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgIGNhc2UgMToKKyAgIGRpYWdtYXRoY29udGV4dCgpO2JyZWFrOworICAgCisgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworICAgLyogQ29uc3RydWN0b3JzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgIGNhc2UgMjoKKyAgIGRpYWdjb25zdHJ1Y3RvcnMoKTticmVhazsKKyAgIAorICAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAgIC8qIE9wZXJhdG9yIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworICBjYXNlIDM6CisgICBkaWFnYWJzKCk7YnJlYWs7CisgIGNhc2UgNDoKKyAgIGRpYWdhZGQoKTticmVhazsKKyAgY2FzZSA1OgorICAgZGlhZ2NvbXBhcmV0bygpO2JyZWFrOworICBjYXNlIDY6CisgICBkaWFnZGl2aWRlKCk7YnJlYWs7CisgIGNhc2UgNzoKKyAgIGRpYWdkaXZpZGVJbnRlZ2VyKCk7YnJlYWs7CisgIGNhc2UgODoKKyAgIGRpYWdtYXgoKTticmVhazsKKyAgY2FzZSA5OgorICAgZGlhZ21pbigpO2JyZWFrOworICBjYXNlIDEwOgorICAgZGlhZ211bHRpcGx5KCk7YnJlYWs7CisgIGNhc2UgMTE6CisgICBkaWFnbmVnYXRlKCk7YnJlYWs7CisgIGNhc2UgMTI6CisgICBkaWFncGx1cygpO2JyZWFrOworICBjYXNlIDEzOgorICAgZGlhZ3BvdygpO2JyZWFrOworICBjYXNlIDE0OgorICAgZGlhZ3JlbWFpbmRlcigpO2JyZWFrOworICBjYXNlIDE1OgorICAgZGlhZ3N1YnRyYWN0KCk7YnJlYWs7CisgIGNhc2UgMTY6CisgICBkaWFnbWF0aCgpO2JyZWFrOyAvLyBnZW5lcmFsIG1hdGgKKyAgIAorICAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAgIC8qIE90aGVyIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworICBjYXNlIDE3OgorICAgZGlhZ2J5dGVWYWx1ZSgpO2JyZWFrOworICBjYXNlIDE4OgorICAgZGlhZ2NvbXBhcmV0b09iaigpO2JyZWFrOworICBjYXNlIDE5OgorICAgZGlhZ2RvdWJsZXZhbHVlKCk7YnJlYWs7CisgIGNhc2UgMjA6CisgICBkaWFnZXF1YWxzKCk7YnJlYWs7CisgIGNhc2UgMjE6CisgICBkaWFnZmxvYXR2YWx1ZSgpO2JyZWFrOworICBjYXNlIDIyOgorICAgZGlhZ2Zvcm1hdCgpO2JyZWFrOworICBjYXNlIDIzOgorICAgZGlhZ2hhc2hjb2RlKCk7YnJlYWs7CisgIGNhc2UgMjQ6CisgICBkaWFnaW50dmFsdWUoKTticmVhazsKKyAgY2FzZSAyNToKKyAgIGRpYWdsb25ndmFsdWUoKTticmVhazsKKyAgY2FzZSAyNjoKKyAgIGRpYWdtb3ZlcG9pbnRsZWZ0KCk7YnJlYWs7CisgIGNhc2UgMjc6CisgICBkaWFnbW92ZXBvaW50cmlnaHQoKTticmVhazsKKyAgY2FzZSAyODoKKyAgIGRpYWdzY2FsZSgpO2JyZWFrOworICBjYXNlIDI5OgorICAgZGlhZ3NldHNjYWxlKCk7YnJlYWs7CisgIGNhc2UgMzA6CisgICBkaWFnc2hvcnR2YWx1ZSgpO2JyZWFrOworICBjYXNlIDMxOgorICAgZGlhZ3NpZ251bSgpO2JyZWFrOworICBjYXNlIDMyOgorICAgZGlhZ3RvYmlnZGVjaW1hbCgpO2JyZWFrOworICBjYXNlIDMzOgorICAgZGlhZ3RvYmlnaW50ZWdlcigpO2JyZWFrOworICBjYXNlIDM0OgorICAgZGlhZ3RvY2hhcmFycmF5KCk7YnJlYWs7CisgIGNhc2UgMzU6CisgICBkaWFndG9zdHJpbmcoKTticmVhazsKKyAgY2FzZSAzNjoKKyAgIGRpYWd1bnNjYWxlZHZhbHVlKCk7YnJlYWs7CisgIGNhc2UgMzc6CisgICBkaWFndmFsdWVvZigpO2JyZWFrOworICAgCisgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworICAgLyogTXV0YXRpb24gdGVzdCBbbXVzdCBiZSB0aGUgbGFzdCB0ZXN0XSAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgIGNhc2UgMzg6CisgICBkaWFnbXV0YXRpb24oKTticmVhazsKKyAgIC8vIGlmIGFueSBtb3JlLCBpbmNyZWFzZSB0ZXN0Y291bnQgYWJvdmUKKyAgZGVmYXVsdDp7CisgICBzYXkoIioqKiBkb3Rlc3QgY2FzZSBub3QgZm91bmQ6IisiICIrbnVtKyIgIisiKioqIik7CisgIH19CisgIH0KKyAgcmV0dXJuOworICB9CisKKyAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyAvKiBEaWFnbm9zdGljIGdyb3VwIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyAKKyAvKiogVGVzdCBjb25zdHJ1Y3RvcnMgKGFuZCB7QGxpbmsgI3RvU3RyaW5nKCl9IGZvciBlcXVhbGl0aWVzKS4gKi8KKyAKKyBwdWJsaWMgdm9pZCBkaWFnY29uc3RydWN0b3JzKCl7CisgIGJvb2xlYW4gZmxhZz1mYWxzZTsKKyAgamF2YS5sYW5nLlN0cmluZyBudW07CisgIGphdmEubWF0aC5CaWdJbnRlZ2VyIGJpcDsKKyAgamF2YS5tYXRoLkJpZ0ludGVnZXIgYml6OworICBqYXZhLm1hdGguQmlnSW50ZWdlciBiaW47CisgIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCBiZGE7CisgIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCBiZGI7CisgIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCBibWM7CisgIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCBibWQ7CisgIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCBibWU7CisgIGphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uIGU9bnVsbDsKKyAgY2hhciBjYVtdOworICBkb3VibGUgZHplcjsKKyAgZG91YmxlIGRwb3M7CisgIGRvdWJsZSBkbmVnOworICBkb3VibGUgZHBvczU7CisgIGRvdWJsZSBkbmVnNTsKKyAgZG91YmxlIGRtaW47CisgIGRvdWJsZSBkbWF4OworICBkb3VibGUgZDsKKyAgamF2YS5sYW5nLlN0cmluZyBiYWRzdHJpbmdzW107CisgIGludCBpPTA7CisgIAorICAvLyBjb25zdGFudHMgW3N0YXRpY2FsbHktY2FsbGVkIGNvbnN0cnVjdG9yc10KKyAgKG5ldyBUZXN0KCJjb24wMDEiKSkub2s9KGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbC5aRVJPLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoImNvbjAwMiIpKS5vaz0oY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsLk9ORS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJjb24wMDMiKSkub2s9KGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbC5URU4udG9TdHJpbmcoKSkuZXF1YWxzKCIxMCIpOworICAobmV3IFRlc3QoImNvbjAwNCIpKS5vaz0oY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsLlpFUk8uaW50VmFsdWVFeGFjdCgpKT09MDsKKyAgKG5ldyBUZXN0KCJjb24wMDUiKSkub2s9KGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbC5PTkUuaW50VmFsdWVFeGFjdCgpKT09MTsKKyAgKG5ldyBUZXN0KCJjb24wMDYiKSkub2s9KGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbC5URU4uaW50VmFsdWVFeGFjdCgpKT09MTA7CisgIAorICAvLyBbamF2YS5tYXRoLl0gQmlnRGVjaW1hbAorICAobmV3IFRlc3QoImNiZDAwMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwobmV3IGphdmEubWF0aC5CaWdEZWNpbWFsKCIwIikpKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJjYmQwMDIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKG5ldyBqYXZhLm1hdGguQmlnRGVjaW1hbCgiMSIpKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgiY2JkMDAzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChuZXcgamF2YS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpKS50b1N0cmluZygpKS5lcXVhbHMoIjEwIik7CisgIChuZXcgVGVzdCgiY2JkMDA0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChuZXcgamF2YS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAiKSkpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAwMCIpOworICAobmV3IFRlc3QoImNiZDAwNSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwobmV3IGphdmEubWF0aC5CaWdEZWNpbWFsKCIxMC4wIikpKS50b1N0cmluZygpKS5lcXVhbHMoIjEwLjAiKTsKKyAgKG5ldyBUZXN0KCJjYmQwMDYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKG5ldyBqYXZhLm1hdGguQmlnRGVjaW1hbCgiMTAuMSIpKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMC4xIik7CisgIChuZXcgVGVzdCgiY2JkMDA3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChuZXcgamF2YS5tYXRoLkJpZ0RlY2ltYWwoIi0xLjEiKSkpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEuMSIpOworICAobmV3IFRlc3QoImNiZDAwOCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwobmV3IGphdmEubWF0aC5CaWdEZWNpbWFsKCItOS4wIikpKS50b1N0cmluZygpKS5lcXVhbHMoIi05LjAiKTsKKyAgKG5ldyBUZXN0KCJjYmQwMDkiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKG5ldyBqYXZhLm1hdGguQmlnRGVjaW1hbCgiMC45IikpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuOSIpOworICAKKyAgbnVtPSIxMjM0NTY3ODkuMTIzNDU2Nzg5IjsKKyAgKG5ldyBUZXN0KCJjYmQwMTAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKG5ldyBqYXZhLm1hdGguQmlnRGVjaW1hbChudW0pKSkudG9TdHJpbmcoKSkuZXF1YWxzKG51bSk7CisgIG51bT0iMTIzNDU2Nzg5LjAwMDAwMDAwMCI7CisgIChuZXcgVGVzdCgiY2JkMDExIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChuZXcgamF2YS5tYXRoLkJpZ0RlY2ltYWwobnVtKSkpLnRvU3RyaW5nKCkpLmVxdWFscyhudW0pOworICBudW09IjEyMzQ1Njc4OTAwMDAwMDAwMCI7CisgIChuZXcgVGVzdCgiY2JkMDEyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChuZXcgamF2YS5tYXRoLkJpZ0RlY2ltYWwobnVtKSkpLnRvU3RyaW5nKCkpLmVxdWFscyhudW0pOworICBudW09IjAuMDAwMDAxMjM0NTY3ODkiOworICAobmV3IFRlc3QoImNiZDAxMyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwobmV3IGphdmEubWF0aC5CaWdEZWNpbWFsKG51bSkpKS50b1N0cmluZygpKS5lcXVhbHMobnVtKTsKKyAgbnVtPSIwLjAwMDAwMDEyMzQ1Njc4OSI7CisgIChuZXcgVGVzdCgiY2JkMDE0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChuZXcgamF2YS5tYXRoLkJpZ0RlY2ltYWwobnVtKSkpLnRvU3RyaW5nKCkpLmVxdWFscyhudW0pOworICAKKyAgdHJ5e2NoZWNrbnVsbDpkb3sKKyAgIG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoKGphdmEubWF0aC5CaWdEZWNpbWFsKW51bGwpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24gJDMpeworICAgZmxhZz10cnVlOworICB9LypjaGVja251bGwqLworICAobmV3IFRlc3QoImNiaTAxNSIpKS5vaz1mbGFnOworICAKKyAgLy8gQmlnSW50ZWdlcgorICBiaXA9bmV3IEJpZ0ludGVnZXIoIjk4NzY1NDMyMTk4NzY1NDMyMTk4NzY1NDMyMSIpOyAvLyBiaWdnaWUgK3ZlCisgIGJpej1uZXcgQmlnSW50ZWdlcigiMCIpOyAvLyBiaWdnaWUgMAorICBiaW49bmV3IEJpZ0ludGVnZXIoIi0xMjM0NTY3ODk5ODc2NTQzMjExMjM0NTY3OCIpOyAvLyBiaWdnaWUgLXZlCisgIChuZXcgVGVzdCgiY2JpMDAxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChiaXApKS50b1N0cmluZygpKS5lcXVhbHMoYmlwLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoImNiaTAwMiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoYml6KSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgiY2JpMDAzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChiaW4pKS50b1N0cmluZygpKS5lcXVhbHMoYmluLnRvU3RyaW5nKCkpOworICB0cnl7Y2hlY2tudWxsOmRveworICAgbmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgoamF2YS5tYXRoLkJpZ0ludGVnZXIpbnVsbCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAkNCl7CisgICBmbGFnPXRydWU7CisgIH0vKmNoZWNrbnVsbCovCisgIChuZXcgVGVzdCgiY2JpMDA0IikpLm9rPWZsYWc7CisgIAorICAvLyBCaWdJbnRlZ2VyIHdpdGggc2NhbGUKKyAgYmlwPW5ldyBCaWdJbnRlZ2VyKCIxMjM0NTY3ODkiKTsgLy8gYmlnaXNoCisgIGJkYT1uZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGJpcCk7CisgIGJkYj1uZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGJpcCw1KTsKKyAgYm1jPW5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoYmlwLDE1KTsKKyAgKG5ldyBUZXN0KCJjYnMwMDEiKSkub2s9KGJkYS50b1N0cmluZygpKS5lcXVhbHMoIjEyMzQ1Njc4OSIpOworICAobmV3IFRlc3QoImNiczAwMiIpKS5vaz0oYmRiLnRvU3RyaW5nKCkpLmVxdWFscygiMTIzNC41Njc4OSIpOworICAobmV3IFRlc3QoImNiczAwMyIpKS5vaz0oYm1jLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDAwMDAxMjM0NTY3ODkiKTsKKyAgYmlwPW5ldyBCaWdJbnRlZ2VyKCIxMjM0NTY3ODkxMjM0NTY3ODkxMjM0NTY3ODkiKTsgLy8gYmlnZ2llCisgIGJkYT1uZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGJpcCk7CisgIGJkYj1uZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGJpcCw3KTsKKyAgYm1jPW5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoYmlwLDEzKTsKKyAgYm1kPW5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoYmlwLDE5KTsKKyAgYm1lPW5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoYmlwLDI5KTsKKyAgKG5ldyBUZXN0KCJjYnMwMTEiKSkub2s9KGJkYS50b1N0cmluZygpKS5lcXVhbHMoIjEyMzQ1Njc4OTEyMzQ1Njc4OTEyMzQ1Njc4OSIpOworICAobmV3IFRlc3QoImNiczAxMiIpKS5vaz0oYmRiLnRvU3RyaW5nKCkpLmVxdWFscygiMTIzNDU2Nzg5MTIzNDU2Nzg5MTIuMzQ1Njc4OSIpOworICAobmV3IFRlc3QoImNiczAxMyIpKS5vaz0oYm1jLnRvU3RyaW5nKCkpLmVxdWFscygiMTIzNDU2Nzg5MTIzNDUuNjc4OTEyMzQ1Njc4OSIpOworICAobmV3IFRlc3QoImNiczAxNCIpKS5vaz0oYm1kLnRvU3RyaW5nKCkpLmVxdWFscygiMTIzNDU2NzguOTEyMzQ1Njc4OTEyMzQ1Njc4OSIpOworICAobmV3IFRlc3QoImNiczAxNSIpKS5vaz0oYm1lLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDEyMzQ1Njc4OTEyMzQ1Njc4OTEyMzQ1Njc4OSIpOworICB0cnl7Y2hlY2tudWxsOmRveworICAgbmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgoamF2YS5tYXRoLkJpZ0ludGVnZXIpbnVsbCwxKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uICQ1KXsKKyAgIGZsYWc9dHJ1ZTsKKyAgfS8qY2hlY2tudWxsKi8KKyAgKG5ldyBUZXN0KCJjYnMwMDQiKSkub2s9ZmxhZzsKKyAgdHJ5e2NoZWNrc2NhbGU6ZG97CisgICBuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGJpcCwtOCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uICQ2KXtlPSQ2OworICAgZmxhZz0oZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiTmVnYXRpdmUgc2NhbGU6IC04Iik7CisgIH0vKmNoZWNrc2NhbGUqLworICAobmV3IFRlc3QoImNiczAwNSIpKS5vaz1mbGFnOworICAKKyAgLy8gY2hhcltdCisgIC8vIFdlIGp1c3QgdGVzdCBpdCdzIHRoZXJlCisgIC8vIEZ1bmN0aW9uYWxpdHkgaXMgdGVzdGVkIGJ5IEJpZ0RlY2ltYWwoU3RyaW5nKS4KKyAgY2E9KCIxMjMuNDUiKS50b0NoYXJBcnJheSgpOworICAobmV3IFRlc3QoImNjYTAwMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoY2EpKS50b1N0cmluZygpKS5lcXVhbHMoIjEyMy40NSIpOworICB0cnl7Y2hlY2tudWxsOmRveworICAgbmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgoY2hhcltdKW51bGwpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24gJDcpeworICAgZmxhZz10cnVlOworICB9LypjaGVja251bGwqLworICAobmV3IFRlc3QoImNjYTAxMCIpKS5vaz1mbGFnOworICAKKyAgLy8gY2hhcltdLGludCxpbnQKKyAgLy8gV2UganVzdCB0ZXN0IGl0J3MgdGhlcmUsIGFuZCB0aGF0IG9mZnNldHMgd29yay4KKyAgLy8gRnVuY3Rpb25hbGl0eSBpcyB0ZXN0ZWQgYnkgQmlnRGVjaW1hbChTdHJpbmcpLgorICBjYT0oIjEyMy40NSIpLnRvQ2hhckFycmF5KCk7CisgIChuZXcgVGVzdCgiY2NhMTAxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChjYSwwLDYpKS50b1N0cmluZygpKS5lcXVhbHMoIjEyMy40NSIpOworICAobmV3IFRlc3QoImNjYTEwMiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoY2EsMSw1KSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyMy40NSIpOworICAobmV3IFRlc3QoImNjYTEwMyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoY2EsMiw0KSkudG9TdHJpbmcoKSkuZXF1YWxzKCIzLjQ1Iik7CisgIChuZXcgVGVzdCgiY2NhMTA0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChjYSwzLDMpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNDUiKTsKKyAgKG5ldyBUZXN0KCJjY2ExMDUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGNhLDQsMikpLnRvU3RyaW5nKCkpLmVxdWFscygiNDUiKTsKKyAgKG5ldyBUZXN0KCJjY2ExMDYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGNhLDUsMSkpLnRvU3RyaW5nKCkpLmVxdWFscygiNSIpOworICAKKyAgKG5ldyBUZXN0KCJjY2ExMTAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGNhLDAsMSkpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoImNjYTExMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoY2EsMSwxKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyIik7CisgIChuZXcgVGVzdCgiY2NhMTEyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChjYSwyLDEpKS50b1N0cmluZygpKS5lcXVhbHMoIjMiKTsKKyAgKG5ldyBUZXN0KCJjY2ExMTMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGNhLDQsMSkpLnRvU3RyaW5nKCkpLmVxdWFscygiNCIpOworICAKKyAgKG5ldyBUZXN0KCJjY2ExMjAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGNhLDAsMikpLnRvU3RyaW5nKCkpLmVxdWFscygiMTIiKTsKKyAgKG5ldyBUZXN0KCJjY2ExMjEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGNhLDEsMikpLnRvU3RyaW5nKCkpLmVxdWFscygiMjMiKTsKKyAgKG5ldyBUZXN0KCJjY2ExMjIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGNhLDIsMikpLnRvU3RyaW5nKCkpLmVxdWFscygiMyIpOworICAobmV3IFRlc3QoImNjYTEyMyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoY2EsMywyKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjQiKTsKKyAgCisgIChuZXcgVGVzdCgiY2NhMTMwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChjYSwwLDMpKS50b1N0cmluZygpKS5lcXVhbHMoIjEyMyIpOworICAobmV3IFRlc3QoImNjYTEzMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoY2EsMSwzKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyMyIpOworICAobmV3IFRlc3QoImNjYTEzMiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoY2EsMiwzKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIzLjQiKTsKKyAgCisgIChuZXcgVGVzdCgiY2NhMTQwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChjYSwwLDQpKS50b1N0cmluZygpKS5lcXVhbHMoIjEyMyIpOworICAobmV3IFRlc3QoImNjYTE0MSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoY2EsMSw0KSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyMy40Iik7CisgIAorICAobmV3IFRlc3QoImNjYTE1MCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoY2EsMCw1KSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMjMuNCIpOworICAKKyAgLy8gYSBjb3VwbGUgb2Ygb2RkaWVzCisgIGNhPSgieDIzLjR4IikudG9DaGFyQXJyYXkoKTsKKyAgKG5ldyBUZXN0KCJjY2ExNjAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGNhLDEsNCkpLnRvU3RyaW5nKCkpLmVxdWFscygiMjMuNCIpOworICAobmV3IFRlc3QoImNjYTE2MSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoY2EsMSwxKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyIik7CisgIChuZXcgVGVzdCgiY2NhMTYyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChjYSw0LDEpKS50b1N0cmluZygpKS5lcXVhbHMoIjQiKTsKKyAgCisgIGNhPSgiMDEyMzQ1Njc4OS45ODc2NTQzMjEwIikudG9DaGFyQXJyYXkoKTsKKyAgKG5ldyBUZXN0KCJjY2ExNjMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGNhLDAsMjEpKS50b1N0cmluZygpKS5lcXVhbHMoIjEyMzQ1Njc4OS45ODc2NTQzMjEwIik7CisgIChuZXcgVGVzdCgiY2NhMTY0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChjYSwxLDIwKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMjM0NTY3ODkuOTg3NjU0MzIxMCIpOworICAobmV3IFRlc3QoImNjYTE2NSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoY2EsMiwxOSkpLnRvU3RyaW5nKCkpLmVxdWFscygiMjM0NTY3ODkuOTg3NjU0MzIxMCIpOworICAobmV3IFRlc3QoImNjYTE2NiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoY2EsMiwxOCkpLnRvU3RyaW5nKCkpLmVxdWFscygiMjM0NTY3ODkuOTg3NjU0MzIxIik7CisgIChuZXcgVGVzdCgiY2NhMTY3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChjYSwyLDE3KSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyMzQ1Njc4OS45ODc2NTQzMiIpOworICAobmV3IFRlc3QoImNjYTE2OCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoY2EsMiwxNikpLnRvU3RyaW5nKCkpLmVxdWFscygiMjM0NTY3ODkuOTg3NjU0MyIpOworICAKKyAgdHJ5e2NoZWNrbnVsbDpkb3sKKyAgIG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoKGNoYXJbXSludWxsLDAsMSk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAkOCl7CisgICBmbGFnPXRydWU7CisgIH0vKmNoZWNrbnVsbCovCisgIChuZXcgVGVzdCgiY2NhMjAwIikpLm9rPWZsYWc7CisgIAorICB0cnl7Y2hlY2tsZW46ZG97CisgICBuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMjMiLnRvQ2hhckFycmF5KCksMCwwKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bWJlckZvcm1hdEV4Y2VwdGlvbiAkOSl7CisgICBmbGFnPXRydWU7CisgIH0vKmNoZWNrbGVuKi8KKyAgKG5ldyBUZXN0KCJjY2EyMDEiKSkub2s9ZmxhZzsKKyAgCisgIHRyeXtjaGVja2JvdW5kOmRveworICAgbmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTIzIi50b0NoYXJBcnJheSgpLDIsNCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uICQxMCl7IC8vIGFueXRoaW5nIE9LCisgICBmbGFnPXRydWU7CisgIH0vKmNoZWNrYm91bmQqLworICAobmV3IFRlc3QoImNjYTIwMiIpKS5vaz1mbGFnOworICB0cnl7Y2hlY2tib3VuZDI6ZG97CisgICBuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMjMiLnRvQ2hhckFycmF5KCksLTEsMik7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uICQxMSl7IC8vIGFueXRoaW5nIE9LCisgICBmbGFnPXRydWU7CisgIH0vKmNoZWNrYm91bmQyKi8KKyAgKG5ldyBUZXN0KCJjY2EyMDMiKSkub2s9ZmxhZzsKKyAgdHJ5e2NoZWNrYm91bmQzOmRveworICAgbmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTIzIi50b0NoYXJBcnJheSgpLDEsLTIpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiAkMTIpeyAvLyBhbnl0aGluZyBPSworICAgZmxhZz10cnVlOworICB9LypjaGVja2JvdW5kMyovCisgIChuZXcgVGVzdCgiY2NhMjA0IikpLm9rPWZsYWc7CisgIAorICAvLyBkb3VibGUgW2RlcHJlY2F0ZWRdCisgIC8vIE5vdGUgdGhhdCBtYW55IG9mIHRoZXNlIGRpZmZlciBmcm9tIHRoZSB2YWx1ZU9mKGRvdWJsZSkgcmVzdWx0cy4KKyAgZHplcj0oZG91YmxlKTA7CisgIGRwb3M9KGRvdWJsZSkxOworICBkcG9zPWRwb3MvKChkb3VibGUpMTApOworICBkbmVnPShkb3VibGUpLWRwb3M7CisgIChuZXcgVGVzdCgiY2RvMDAxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChkbmVnKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC4xMDAwMDAwMDAwMDAwMDAwMDU1NTExMTUxMjMxMjU3ODI3MDIxMTgxNTgzNDA0NTQxMDE1NjI1Iik7CisgIAorICAobmV3IFRlc3QoImNkbzAwMiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoZHplcikpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOyAvLyBOQiwgbm90ICcwLjAnCisgIChuZXcgVGVzdCgiY2RvMDAzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChkcG9zKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEwMDAwMDAwMDAwMDAwMDAwNTU1MTExNTEyMzEyNTc4MjcwMjExODE1ODM0MDQ1NDEwMTU2MjUiKTsKKyAgCisgIGRwb3M1PShkb3VibGUpMC41RDsKKyAgZG5lZzU9KGRvdWJsZSktZHBvczU7CisgIChuZXcgVGVzdCgiY2RvMDA0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChkbmVnNSkpLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuNSIpOworICAobmV3IFRlc3QoImNkbzAwNSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoZHBvczUpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNSIpOworICBkbWluPWphdmEubGFuZy5Eb3VibGUuTUlOX1ZBTFVFOworICBkbWF4PWphdmEubGFuZy5Eb3VibGUuTUFYX1ZBTFVFOworICAobmV3IFRlc3QoImNkbzAwNiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoZG1pbikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQ5NDA2NTY0NTg0MTI0NjU0NDE3NjU2ODc5Mjg2ODIyMTM3MjM2NTA1OTgwMjYxNDMyNDc2NDQyNTU4NTY4MjUwMDY3NTUwNzI3MDIwODc1MTg2NTI5OTgzNjM2MTYzNTk5MjM3OTc5NjU2NDY5NTQ0NTcxNzczMDkyNjY1NjcxMDM1NTkzOTc5NjM5ODc3NDc5NjAxMDc4MTg3ODEyNjMwMDcxMzE5MDMxMTQwNDUyNzg0NTgxNzE2Nzg0ODk4MjEwMzY4ODcxODYzNjA1Njk5ODczMDcyMzA1MDAwNjM4NzQwOTE1MzU2NDk4NDM4NzMxMjQ3MzM5NzI3MzE2OTYxNTE0MDAzMTcxNTM4NTM5ODA3NDEyNjIzODU2NTU5MTE3MTAyNjY1ODU1NjY4Njc2ODE4NzAzOTU2MDMxMDYyNDkzMTk0NTI3MTU5MTQ5MjQ1NTMyOTMwNTQ1NjU0NDQwMTEyNzQ4MDEyOTcwOTk5OTU0MTkzMTk4OTQwOTA4MDQxNjU2MzMyNDUyNDc1NzE0Nzg2OTAxNDcyNjc4MDE1OTM1NTIzODYxMTU1MDEzNDgwMzUyNjQ5MzQ3MjAxOTM3OTAyNjgxMDcxMDc0OTE3MDMzMzIyMjY4NDQ3NTMzMzU3MjA4MzI0MzE5MzYwOTIzODI4OTM0NTgzNjgwNjAxMDYwMTE1MDYxNjk4MDk3NTMwNzgzNDIyNzczMTgzMjkyNDc5MDQ5ODI1MjQ3MzA3NzYzNzU5MjcyNDc4NzQ2NTYwODQ3NzgyMDM3MzQ0Njk2OTk1MzM2NDcwMTc5NzI2Nzc3MTc1ODUxMjU2NjA1NTExOTkxMzE1MDQ4OTExMDE0NTEwMzc4NjI3MzgxNjcyNTA5NTU4MzczODk3MzM1OTg5OTM2NjQ4MDk5NDExNjQyMDU3MDI2MzcwOTAyNzkyNDI3Njc1NDQ1NjUyMjkwODc1Mzg2ODI1MDY0MTk3MTgyNjU1MzM0NDcyNjU2MjUiKTsKKyAgCisgIChuZXcgVGVzdCgiY2RvMDA3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChkbWF4KSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxNzk3NjkzMTM0ODYyMzE1NzA4MTQ1Mjc0MjM3MzE3MDQzNTY3OTgwNzA1Njc1MjU4NDQ5OTY1OTg5MTc0NzY4MDMxNTcyNjA3ODAwMjg1Mzg3NjA1ODk1NTg2MzI3NjY4NzgxNzE1NDA0NTg5NTM1MTQzODI0NjQyMzQzMjEzMjY4ODk0NjQxODI3Njg0Njc1NDY3MDM1Mzc1MTY5ODYwNDk5MTA1NzY1NTEyODIwNzYyNDU0OTAwOTAzODkzMjg5NDQwNzU4Njg1MDg0NTUxMzM5NDIzMDQ1ODMyMzY5MDMyMjI5NDgxNjU4MDg1NTkzMzIxMjMzNDgyNzQ3OTc4MjYyMDQxNDQ3MjMxNjg3MzgxNzcxODA5MTkyOTk4ODEyNTA0MDQwMjYxODQxMjQ4NTgzNjgiKTsKKyAgCisgIAorICAvLyBuYXN0aWVzCisgIGQ9KGRvdWJsZSk5OworICBkPWQvKChkb3VibGUpMTApOworICAobmV3IFRlc3QoImNkbzAxMCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoZCkpLnRvU3RyaW5nKCkpLmVxdWFscygiMC45MDAwMDAwMDAwMDAwMDAwMjIyMDQ0NjA0OTI1MDMxMzA4MDg0NzI2MzMzNjE4MTY0MDYyNSIpOworICAKKyAgZD1kLygoZG91YmxlKTEwKTsKKyAgKG5ldyBUZXN0KCJjZG8wMTEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGQpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDg5OTk5OTk5OTk5OTk5OTk2NjY5MzMwOTI2MTI0NTMwMzc4NzI5MTA0OTk1NzI3NTM5MDYyNSIpOworICAKKyAgZD1kLygoZG91YmxlKTEwKTsKKyAgKG5ldyBUZXN0KCJjZG8wMTIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGQpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDA4OTk5OTk5OTk5OTk5OTk5MzE5OTg4Mzk3NDE3MDkxNjE4OTkwNTI1NjAzMjk0MzcyNTU4NTkzNzUiKTsKKyAgCisgIGQ9ZC8oKGRvdWJsZSkxMCk7CisgIChuZXcgVGVzdCgiY2RvMDEzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChkKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMDg5OTk5OTk5OTk5OTk5OTk3NTM2NjkyNjY0MTEyOTMzOTI1OTM1MDY3MjM2NDIzNDkyNDMxNjQwNjI1Iik7CisgIAorICBkPWQvKChkb3VibGUpMTApOworICAobmV3IFRlc3QoImNkbzAxNCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoZCkpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDAwODk5OTk5OTk5OTk5OTk5OTIxMTU2ODE4MDE2ODU0MTE3NTU4OTc4MDMyMzIwNzM3ODM4NzQ1MTE3MTg3NSIpOworICAKKyAgZD1kLygoZG91YmxlKTEwKTsKKyAgKG5ldyBUZXN0KCJjZG8wMTUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGQpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwMDA4OTk5OTk5OTk5OTk5OTk4NTMzOTQxODIyMzY1MTAwOTA0MzM1MTIyMzIyNjYzNjY0ODE3ODEwMDU4NTkzNzUiKTsKKyAgCisgIGQ9ZC8oKGRvdWJsZSkxMCk7CisgIChuZXcgVGVzdCgiY2RvMDE2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChkKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMDAwMDg5OTk5OTk5OTk5OTk5OTg1MzM5NDE4MjIzNjUxMDA5MDQzMzUxMjIzMjI2NjM2NjQ4MTc4MTAwNTg1OTM3NSIpOworICAKKyAgZD1kLygoZG91YmxlKTEwKTsKKyAgKG5ldyBUZXN0KCJjZG8wMTciKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGQpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwMDAwMDg5OTk5OTk5OTk5OTk5OTg1MzM5NDE4MjIzNjUxMDA5MDQzMzUxMjIzMjI2NjM2NjQ4MTc4MTAwNTg1OTM3NSIpOworICAKKyAgZD1kLygoZG91YmxlKTEwKTsKKyAgKG5ldyBUZXN0KCJjZG8wMTgiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGQpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwMDAwMDA4OTk5OTk5OTk5OTk5OTk3ODcyMTk3MzMyMzIyNjc4NzY0NDM3OTk1MzY5MDA3Njk0NTM0OTU3NDA4OTA1MDI5Mjk2ODc1Iik7CisgIAorICAKKyAgdHJ5e2NoZWNrcGluOmRveworICAgbmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChqYXZhLmxhbmcuRG91YmxlLlBPU0lUSVZFX0lORklOSVRZKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bWJlckZvcm1hdEV4Y2VwdGlvbiAkMTMpeworICAgZmxhZz10cnVlOworICB9LypjaGVja3BpbiovCisgIChuZXcgVGVzdCgiY2RvMTAxIikpLm9rPWZsYWc7CisgIHRyeXtjaGVja25pbjpkb3sKKyAgIG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoamF2YS5sYW5nLkRvdWJsZS5ORUdBVElWRV9JTkZJTklUWSk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5OdW1iZXJGb3JtYXRFeGNlcHRpb24gJDE0KXsKKyAgIGZsYWc9dHJ1ZTsKKyAgfS8qY2hlY2tuaW4qLworICAobmV3IFRlc3QoImNkbzEwMiIpKS5vaz1mbGFnOworICB0cnl7Y2hlY2tuYW46ZG97CisgICBuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGphdmEubGFuZy5Eb3VibGUuTmFOKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bWJlckZvcm1hdEV4Y2VwdGlvbiAkMTUpeworICAgZmxhZz10cnVlOworICB9LypjaGVja25hbiovCisgIChuZXcgVGVzdCgiY2RvMTAzIikpLm9rPWZsYWc7CisgIAorICAvLyBpbnQKKyAgKG5ldyBUZXN0KCJjaW4wMDEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGltaW4pKS50b1N0cmluZygpKS5lcXVhbHMoIi0yMTQ3NDgzNjQ4Iik7CisgIChuZXcgVGVzdCgiY2luMDAyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChpbWF4KSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyMTQ3NDgzNjQ3Iik7CisgIChuZXcgVGVzdCgiY2luMDAzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChpbmVnKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMSIpOworICAobmV3IFRlc3QoImNpbjAwNCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoaXplcikpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoImNpbjAwNSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoaXBvcykpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoImNpbjAwNiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoMTApKS50b1N0cmluZygpKS5lcXVhbHMoIjEwIik7CisgIChuZXcgVGVzdCgiY2luMDA3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCg5KSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5Iik7CisgIChuZXcgVGVzdCgiY2luMDA4IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCg1KSkudG9TdHJpbmcoKSkuZXF1YWxzKCI1Iik7CisgIChuZXcgVGVzdCgiY2luMDA5IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgyKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyIik7CisgIChuZXcgVGVzdCgiY2luMDEwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgtMikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTIiKTsKKyAgKG5ldyBUZXN0KCJjaW4wMTEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKC01KSkudG9TdHJpbmcoKSkuZXF1YWxzKCItNSIpOworICAobmV3IFRlc3QoImNpbjAxMiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoLTkpKS50b1N0cmluZygpKS5lcXVhbHMoIi05Iik7CisgIChuZXcgVGVzdCgiY2luMDEzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgtMTApKS50b1N0cmluZygpKS5lcXVhbHMoIi0xMCIpOworICAobmV3IFRlc3QoImNpbjAxNCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoLTExKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMTEiKTsKKyAgKG5ldyBUZXN0KCJjaW4wMTUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKC05OSkpLnRvU3RyaW5nKCkpLmVxdWFscygiLTk5Iik7CisgIChuZXcgVGVzdCgiY2luMDE2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgtMTAwKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMTAwIik7CisgIChuZXcgVGVzdCgiY2luMDE3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgtOTk5KSkudG9TdHJpbmcoKSkuZXF1YWxzKCItOTk5Iik7CisgIChuZXcgVGVzdCgiY2luMDE4IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgtMTAwMCkpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEwMDAiKTsKKyAgCisgIChuZXcgVGVzdCgiY2luMDE5IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgxMSkpLnRvU3RyaW5nKCkpLmVxdWFscygiMTEiKTsKKyAgKG5ldyBUZXN0KCJjaW4wMjAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKDk5KSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5OSIpOworICAobmV3IFRlc3QoImNpbjAyMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoMTAwKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDAiKTsKKyAgKG5ldyBUZXN0KCJjaW4wMjIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKDk5OSkpLnRvU3RyaW5nKCkpLmVxdWFscygiOTk5Iik7CisgIChuZXcgVGVzdCgiY2luMDIzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgxMDAwKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDAwIik7CisgIAorICAvLyBsb25nCisgIChuZXcgVGVzdCgiY2xvMDAxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChsbWluKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItOTIyMzM3MjAzNjg1NDc3NTgwOCIpOworICAobmV3IFRlc3QoImNsbzAwMiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwobG1heCkpLnRvU3RyaW5nKCkpLmVxdWFscygiOTIyMzM3MjAzNjg1NDc3NTgwNyIpOworICAobmV3IFRlc3QoImNsbzAwMyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwobG5lZykpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEiKTsKKyAgKG5ldyBUZXN0KCJjbG8wMDQiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGx6ZXIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJjbG8wMDUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGxwb3MpKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgCisgIC8vIFN0cmluZyBbbWFueSBtb3JlIGV4YW1wbGVzIGFyZSBlbHNld2hlcmVdCisgIC8vIHN0cmluZ3Mgd2l0aG91dCBFIGNhbm5vdCBnZW5lcmF0ZSBFIGluIHJlc3VsdAorICAobmV3IFRlc3QoImNzdDAwMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMTIiKTsKKyAgKG5ldyBUZXN0KCJjc3QwMDIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItNzYiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItNzYiKTsKKyAgKG5ldyBUZXN0KCJjc3QwMDMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMi43NiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEyLjc2Iik7CisgIChuZXcgVGVzdCgiY3N0MDA0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiKzEyLjc2IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMTIuNzYiKTsKKyAgKG5ldyBUZXN0KCJjc3QwMDUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwMTIuNzYiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMi43NiIpOworICAobmV3IFRlc3QoImNzdDAwNiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIiswLjAwMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAzIik7CisgIChuZXcgVGVzdCgiY3N0MDA3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTcuIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMTciKTsKKyAgKG5ldyBUZXN0KCJjc3QwMDgiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIuNSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNSIpOworICAobmV3IFRlc3QoImNzdDAwOSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjA0NCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjQ0Iik7CisgIChuZXcgVGVzdCgiY3N0MDEwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMDA0NCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjQ0Iik7CisgIChuZXcgVGVzdCgiY3N0MDExIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wMDA1IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDA1Iik7CisgIChuZXcgVGVzdCgiY3N0MDEyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMDAuMDAwMDUiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMDA1Iik7CisgIChuZXcgVGVzdCgiY3N0MDEzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wMDAwMDUiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMDAwNSIpOworICAobmV3IFRlc3QoImNzdDAxNCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAwMDAwNSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwMDAwNSIpOyAvLyBcTlIKKyAgKG5ldyBUZXN0KCJjc3QwMTUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjAwMDAwMDA1IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDAwMDAwNSIpOyAvLyBcTlIKKyAgKG5ldyBUZXN0KCJjc3QwMTYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMjM0NTY3OC44NzY1NDMyMTAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMjM0NTY3OC44NzY1NDMyMTAiKTsKKyAgKG5ldyBUZXN0KCJjc3QwMTciKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyMzQ1Njc4Ljg3NjU0MzIxMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjIzNDU2NzguODc2NTQzMjEwIik7CisgIChuZXcgVGVzdCgiY3N0MDE4IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMzQ1Njc4Ljg3NjU0MzIxMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjM0NTY3OC44NzY1NDMyMTAiKTsKKyAgKG5ldyBUZXN0KCJjc3QwMTkiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwMzQ1Njc4Ljg3NjU0MzIxIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMzQ1Njc4Ljg3NjU0MzIxIik7CisgIChuZXcgVGVzdCgiY3N0MDIwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMzQ1Njc4Ljg3NjU0MzIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIzNDU2NzguODc2NTQzMiIpOworICAobmV3IFRlc3QoImNzdDAyMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIiszNDU2NzguODc2NTQzMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjM0NTY3OC44NzY1NDMyIik7CisgIChuZXcgVGVzdCgiY3N0MDIyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiKzAzNDU2NzguODc2NTQzMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjM0NTY3OC44NzY1NDMyIik7CisgIChuZXcgVGVzdCgiY3N0MDIzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiKzAwMzQ1Njc4Ljg3NjU0MzIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIzNDU2NzguODc2NTQzMiIpOworICAobmV3IFRlc3QoImNzdDAyNCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0zNDU2NzguODc2NTQzMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0zNDU2NzguODc2NTQzMiIpOworICAobmV3IFRlc3QoImNzdDAyNSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0wMzQ1Njc4Ljg3NjU0MzIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMzQ1Njc4Ljg3NjU0MzIiKTsKKyAgKG5ldyBUZXN0KCJjc3QwMjYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMDAzNDU2NzguODc2NTQzMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0zNDU2NzguODc2NTQzMiIpOworICAKKyAgLy8gZXhvdGljcyAtLQorICAobmV3IFRlc3QoImNzdDAzNSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIlx1MGU1Ny5cdTBlNTAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI3LjAiKTsKKyAgKG5ldyBUZXN0KCJjc3QwMzYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCJcdTBiNjYuXHUwYjY3IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xIik7CisgIChuZXcgVGVzdCgiY3N0MDM3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiXHUwYjY2XHUwYjY2IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoImNzdDAzOCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIlx1MGI2YVx1MGI2NiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjQwIik7CisgIAorICAvLyBzdHJpbmdzIHdpdGggRQorICAobmV3IFRlc3QoImNzdDA0MCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjFFKzkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxRSs5Iik7CisgIChuZXcgVGVzdCgiY3N0MDQxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMWUrMDkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxRSs5Iik7CisgIChuZXcgVGVzdCgiY3N0MDQyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMUUrOTAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxRSs5MCIpOworICAobmV3IFRlc3QoImNzdDA0MyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIisxRSswMDkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxRSs5Iik7CisgIChuZXcgVGVzdCgiY3N0MDQ0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMEUrOSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJjc3QwNDUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxRSs5IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMUUrOSIpOworICAobmV3IFRlc3QoImNzdDA0NiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjFFKzA5IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMUUrOSIpOworICAobmV3IFRlc3QoImNzdDA0NyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjFlKzkwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMUUrOTAiKTsKKyAgKG5ldyBUZXN0KCJjc3QwNDgiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxRSswMDkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxRSs5Iik7CisgIChuZXcgVGVzdCgiY3N0MDQ5IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMEUrOSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJjc3QwNTAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxRTkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxRSs5Iik7CisgIChuZXcgVGVzdCgiY3N0MDUxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMWUwOSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjFFKzkiKTsKKyAgKG5ldyBUZXN0KCJjc3QwNTIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxRTkwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMUUrOTAiKTsKKyAgKG5ldyBUZXN0KCJjc3QwNTMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxRTAwOSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjFFKzkiKTsKKyAgKG5ldyBUZXN0KCJjc3QwNTQiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwRTkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgiY3N0MDU1IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wMDBlKzAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgiY3N0MDU2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wMDBFLTEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgiY3N0MDU3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNEUrOSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjRFKzkiKTsKKyAgKG5ldyBUZXN0KCJjc3QwNTgiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI0NEUrOSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjQuNEUrMTAiKTsKKyAgKG5ldyBUZXN0KCJjc3QwNTkiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjczZS03IikpLnRvU3RyaW5nKCkpLmVxdWFscygiNy4zRS04Iik7CisgIChuZXcgVGVzdCgiY3N0MDYwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMDBFKzkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgiY3N0MDYxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMDBFLTkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgiY3N0MDYyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTBFKzkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjBFKzEwIik7CisgIChuZXcgVGVzdCgiY3N0MDYzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTBFKzA5IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wRSsxMCIpOworICAobmV3IFRlc3QoImNzdDA2NCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwZSs5MCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMEUrOTEiKTsKKyAgKG5ldyBUZXN0KCJjc3QwNjUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMEUrMDA5IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wRSsxMCIpOworICAobmV3IFRlc3QoImNzdDA2NiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwMGUrOSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDBFKzExIik7CisgIChuZXcgVGVzdCgiY3N0MDY3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAwZSswOSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDBFKzExIik7CisgIChuZXcgVGVzdCgiY3N0MDY4IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAwRSs5MCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDBFKzkyIik7CisgIChuZXcgVGVzdCgiY3N0MDY5IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAwZSswMDkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAwRSsxMSIpOworICAKKyAgKG5ldyBUZXN0KCJjc3QwNzAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjI2NSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1Iik7CisgIChuZXcgVGVzdCgiY3N0MDcxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS4yNjVFLTIwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFLTIwIik7CisgIChuZXcgVGVzdCgiY3N0MDcyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS4yNjVFLTgiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUtOCIpOworICAobmV3IFRlc3QoImNzdDA3MyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuMjY1RS00IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFLTQiKTsKKyAgKG5ldyBUZXN0KCJjc3QwNzQiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjI2NUUtMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RS0zIik7CisgIChuZXcgVGVzdCgiY3N0MDc1IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS4yNjVFLTIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUtMiIpOworICAobmV3IFRlc3QoImNzdDA3NiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuMjY1RS0xIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFLTEiKTsKKyAgKG5ldyBUZXN0KCJjc3QwNzciKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjI2NUUtMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1Iik7CisgIChuZXcgVGVzdCgiY3N0MDc4IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS4yNjVFKzEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrMSIpOworICAobmV3IFRlc3QoImNzdDA3OSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuMjY1RSsyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFKzIiKTsKKyAgKG5ldyBUZXN0KCJjc3QwODAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjI2NUUrMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RSszIik7CisgIChuZXcgVGVzdCgiY3N0MDgxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS4yNjVFKzQiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrNCIpOworICAobmV3IFRlc3QoImNzdDA4MiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuMjY1RSs4IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFKzgiKTsKKyAgKG5ldyBUZXN0KCJjc3QwODMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjI2NUUrMjAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrMjAiKTsKKyAgCisgIChuZXcgVGVzdCgiY3N0MDkwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTIuNjUiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMi42NSIpOworICAobmV3IFRlc3QoImNzdDA5MSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEyLjY1RS0yMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RS0xOSIpOworICAobmV3IFRlc3QoImNzdDA5MiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEyLjY1RS04IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFLTciKTsKKyAgKG5ldyBUZXN0KCJjc3QwOTMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMi42NUUtNCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RS0zIik7CisgIChuZXcgVGVzdCgiY3N0MDk0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTIuNjVFLTMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUtMiIpOworICAobmV3IFRlc3QoImNzdDA5NSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEyLjY1RS0yIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFLTEiKTsKKyAgKG5ldyBUZXN0KCJjc3QwOTYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMi42NUUtMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1Iik7CisgIChuZXcgVGVzdCgiY3N0MDk3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTIuNjVFLTAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrMSIpOworICAobmV3IFRlc3QoImNzdDA5OCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEyLjY1RSsxIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFKzIiKTsKKyAgKG5ldyBUZXN0KCJjc3QwOTkiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMi42NUUrMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RSszIik7CisgIChuZXcgVGVzdCgiY3N0MTAwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTIuNjVFKzMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrNCIpOworICAobmV3IFRlc3QoImNzdDEwMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEyLjY1RSs0IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFKzUiKTsKKyAgKG5ldyBUZXN0KCJjc3QxMDIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMi42NUUrOCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RSs5Iik7CisgIChuZXcgVGVzdCgiY3N0MTAzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTIuNjVFKzIwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFKzIxIik7CisgIAorICAobmV3IFRlc3QoImNzdDExMCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEyNi41IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMTI2LjUiKTsKKyAgKG5ldyBUZXN0KCJjc3QxMTEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMjYuNUUtMjAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUtMTgiKTsKKyAgKG5ldyBUZXN0KCJjc3QxMTIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMjYuNUUtOCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RS02Iik7CisgIChuZXcgVGVzdCgiY3N0MTEzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTI2LjVFLTQiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUtMiIpOworICAobmV3IFRlc3QoImNzdDExNCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEyNi41RS0zIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFLTEiKTsKKyAgKG5ldyBUZXN0KCJjc3QxMTUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMjYuNUUtMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1Iik7CisgIChuZXcgVGVzdCgiY3N0MTE2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTI2LjVFLTEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrMSIpOworICAobmV3IFRlc3QoImNzdDExNyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEyNi41RS0wIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFKzIiKTsKKyAgKG5ldyBUZXN0KCJjc3QxMTgiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMjYuNUUrMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RSszIik7CisgIChuZXcgVGVzdCgiY3N0MTE5IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTI2LjVFKzIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrNCIpOworICAobmV3IFRlc3QoImNzdDEyMCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEyNi41RSszIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFKzUiKTsKKyAgKG5ldyBUZXN0KCJjc3QxMjEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMjYuNUUrNCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RSs2Iik7CisgIChuZXcgVGVzdCgiY3N0MTIyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTI2LjVFKzgiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrMTAiKTsKKyAgKG5ldyBUZXN0KCJjc3QxMjMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMjYuNUUrMjAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrMjIiKTsKKyAgCisgIChuZXcgVGVzdCgiY3N0MTMwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTI2NSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEyNjUiKTsKKyAgKG5ldyBUZXN0KCJjc3QxMzEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMjY1RS0yMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RS0xNyIpOworICAobmV3IFRlc3QoImNzdDEzMiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEyNjVFLTgiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUtNSIpOworICAobmV3IFRlc3QoImNzdDEzMyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEyNjVFLTQiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUtMSIpOworICAobmV3IFRlc3QoImNzdDEzNCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEyNjVFLTMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NSIpOworICAobmV3IFRlc3QoImNzdDEzNSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEyNjVFLTIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrMSIpOworICAobmV3IFRlc3QoImNzdDEzNiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEyNjVFLTEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrMiIpOworICAobmV3IFRlc3QoImNzdDEzNyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEyNjVFLTAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrMyIpOworICAobmV3IFRlc3QoImNzdDEzOCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEyNjVFKzEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrNCIpOworICAobmV3IFRlc3QoImNzdDEzOSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEyNjVFKzIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrNSIpOworICAobmV3IFRlc3QoImNzdDE0MCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEyNjVFKzMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrNiIpOworICAobmV3IFRlc3QoImNzdDE0MSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEyNjVFKzQiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrNyIpOworICAobmV3IFRlc3QoImNzdDE0MiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEyNjVFKzgiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrMTEiKTsKKyAgKG5ldyBUZXN0KCJjc3QxNDMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMjY1RSsyMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RSsyMyIpOworICAKKyAgKG5ldyBUZXN0KCJjc3QxNTAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjEyNjUiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEyNjUiKTsKKyAgKG5ldyBUZXN0KCJjc3QxNTEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjEyNjVFLTIwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFLTIxIik7CisgIChuZXcgVGVzdCgiY3N0MTUyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4xMjY1RS04IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFLTkiKTsKKyAgKG5ldyBUZXN0KCJjc3QxNTMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjEyNjVFLTQiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUtNSIpOworICAobmV3IFRlc3QoImNzdDE1NCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMTI2NUUtMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RS00Iik7CisgIChuZXcgVGVzdCgiY3N0MTU1IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4xMjY1RS0yIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFLTMiKTsKKyAgKG5ldyBUZXN0KCJjc3QxNTYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjEyNjVFLTEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUtMiIpOworICAobmV3IFRlc3QoImNzdDE1NyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMTI2NUUtMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RS0xIik7CisgIChuZXcgVGVzdCgiY3N0MTU4IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4xMjY1RSsxIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjUiKTsKKyAgKG5ldyBUZXN0KCJjc3QxNTkiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjEyNjVFKzIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrMSIpOworICAobmV3IFRlc3QoImNzdDE2MCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMTI2NUUrMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RSsyIik7CisgIChuZXcgVGVzdCgiY3N0MTYxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4xMjY1RSs0IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFKzMiKTsKKyAgKG5ldyBUZXN0KCJjc3QxNjIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjEyNjVFKzgiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrNyIpOworICAobmV3IFRlc3QoImNzdDE2MyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMTI2NUUrMjAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrMTkiKTsKKyAgCisgIChuZXcgVGVzdCgiY3N0MTcwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wOWU5OTk5OTk5OTkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5RSs5OTk5OTk5OTciKTsKKyAgKG5ldyBUZXN0KCJjc3QxNzEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjllOTk5OTk5OTk5IikpLnRvU3RyaW5nKCkpLmVxdWFscygiOUUrOTk5OTk5OTk4Iik7CisgIChuZXcgVGVzdCgiY3N0MTcyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOWU5OTk5OTk5OTkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5RSs5OTk5OTk5OTkiKTsKKyAgKG5ldyBUZXN0KCJjc3QxNzMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5LjllOTk5OTk5OTk5IikpLnRvU3RyaW5nKCkpLmVxdWFscygiOS45RSs5OTk5OTk5OTkiKTsKKyAgKG5ldyBUZXN0KCJjc3QxNzQiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5Ljk5ZTk5OTk5OTk5OSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjkuOTlFKzk5OTk5OTk5OSIpOworICAobmV3IFRlc3QoImNzdDE3NSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjkuOTllLTk5OTk5OTk5OSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjkuOTlFLTk5OTk5OTk5OSIpOworICAobmV3IFRlc3QoImNzdDE3NiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjkuOWUtOTk5OTk5OTk5IikpLnRvU3RyaW5nKCkpLmVxdWFscygiOS45RS05OTk5OTk5OTkiKTsKKyAgKG5ldyBUZXN0KCJjc3QxNzciKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5ZS05OTk5OTk5OTkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5RS05OTk5OTk5OTkiKTsKKyAgKG5ldyBUZXN0KCJjc3QxNzkiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5OWUtOTk5OTk5OTk5IikpLnRvU3RyaW5nKCkpLmVxdWFscygiOS45RS05OTk5OTk5OTgiKTsKKyAgKG5ldyBUZXN0KCJjc3QxODAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5OTllLTk5OTk5OTk5OSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjkuOTlFLTk5OTk5OTk5NyIpOworICAKKyAgLy8gYmFkZGllcyAtLQorICBiYWRzdHJpbmdzPW5ldyBqYXZhLmxhbmcuU3RyaW5nW117IjEuLjIiLCIuIiwiLi4iLCIrKzEiLCItLTEiLCItKzEiLCIrLTEiLCIxMmUiLCIxMmUrKyIsIjEyZjQiLCIgKzEiLCIrIDEiLCIxMiAiLCIgKyAxIiwiIC0gMSAiLCJ4IiwiLTEtIiwiMTItIiwiMysiLCIiLCIxZS0iLCI3ZTEwMDAwMDAwMDAiLCIiLCJlMTAwIiwiXHUwZTVhIiwiXHUwYjY1IiwiOTllOTk5OTk5OTk5IiwiOTk5ZTk5OTk5OTk5OSIsIjAuOWUtOTk5OTk5OTk5IiwiMC4wOWUtOTk5OTk5OTk5IiwiMC4xZTEwMDAwMDAwMDAiLCIxMGUtMTAwMDAwMDAwMCIsIjAuOWU5OTk5OTk5OTk5IiwiOTllLTk5OTk5OTk5OTkiLCIxMTFlOTk5OTk5OTk5OSIsIjExMTFlLTk5OTk5OTk5OTkiKyIgIisiMTExZSoxMjMiLCIxMTFlMTIzLSIsIjExMWUrMTIrIiwiMTExZTEtMy0iLCIxMTFlMSoyMyIsIjExMWUxZSszIiwiMWUxLjAiLCIxZTEyM2UiLCJ0ZW4iLCJPTkUiLCIxZS4xIiwiMWUxLiIsIjFlZSIsImUrMSJ9OyAvLyAyMDAtMjAzCisgIC8vIDIwNC0yMDcKKyAgLy8gMjA4LTIxMQorICAvLyAyMTEtMjE0CisgIC8vIDIxNS0yMTkKKyAgLy8gMjIwLTIyMgorICAvLyAyMjMtMjI0CisgIC8vIDIyNS0yMjYKKyAgLy8gMjI3LTIyOAorICAvLyAyMjktMjMwCisgIC8vIDIzMS0yMzIKKyAgLy8gMjMzLTIzNAorICAvLyAyMzUtMjM3CisgIC8vIDIzOC0yNDAKKyAgLy8gMjQxLTI0NAorICAvLyAyNDUtMjQ4CisgIAorICAvLyB3YXRjaCBvdXQgZm9yIGNvbW1hcyBvbiBjb250aW51YXRpb24gbGluZXMKKyAgCisgIHtpbnQgJDE2PWJhZHN0cmluZ3MubGVuZ3RoO2k9MDtpOmZvcig7JDE2PjA7JDE2LS0saSsrKXsKKyAgIHRyeXsKKyAgICBuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGJhZHN0cmluZ3NbaV0pOworICAgIHNheSgiPj4+IGNzdCIrKDIwMCtpKSsiOiIrIiAiK2JhZHN0cmluZ3NbaV0rIiAiKyhuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGJhZHN0cmluZ3NbaV0pKS50b1N0cmluZygpKTsKKyAgICBmbGFnPWZhbHNlOworICAgfQorICAgY2F0Y2ggKGphdmEubGFuZy5OdW1iZXJGb3JtYXRFeGNlcHRpb24gJDE3KXsKKyAgICBmbGFnPXRydWU7CisgICB9CisgICAobmV3IFRlc3QoImNzdCIrKDIwMCtpKSkpLm9rPWZsYWc7CisgICB9CisgIH0vKmkqLworICAKKyAgdHJ5e2NoZWNrbnVsbDpkb3sKKyAgIG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoKGphdmEubGFuZy5TdHJpbmcpbnVsbCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAkMTgpeworICAgZmxhZz10cnVlOworICB9LypjaGVja251bGwqLworICAobmV3IFRlc3QoImNzdDMwMSIpKS5vaz1mbGFnOworICAKKyAgc3VtbWFyeSgiQ29uc3RydWN0b3JzIik7CisgIHJldHVybjsKKyAgfQorCisgLyoqIE11dGF0aW9uIHRlc3RzIChjaGVja3MgdGhhdCBjb250ZW50cyBvZiBjb25zdGFudCBvYmplY3RzIGFyZSB1bmNoYW5nZWQpLiAqLworIAorIHB1YmxpYyB2b2lkIGRpYWdtdXRhdGlvbigpeworICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgIC8qIEZpbmFsIHRlc3RzIC0tIGNoZWNrIGNvbnN0YW50cyBoYXZlbid0IG11dGF0ZWQgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgLS0gYWxzbyB0aGF0IE1DIG9iamVjdHMgaGF2ZW4ndCBtdXRhdGVkICAgICAgICAgICAgICAqLworICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgIChuZXcgVGVzdCgiY3VjMDAxIikpLm9rPShjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwuWkVSTy50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJjdWMwMDIiKSkub2s9KGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbC5PTkUudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgiY3VjMDAzIikpLm9rPShjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwuVEVOLnRvU3RyaW5nKCkpLmVxdWFscygiMTAiKTsKKyAgCisgIChuZXcgVGVzdCgiY3VjMDEwIikpLm9rPWNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbC5ST1VORF9DRUlMSU5HPT1jb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0NFSUxJTkc7CisgIChuZXcgVGVzdCgiY3VjMDExIikpLm9rPWNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbC5ST1VORF9ET1dOPT1jb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0RPV047CisgIChuZXcgVGVzdCgiY3VjMDEyIikpLm9rPWNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbC5ST1VORF9GTE9PUj09Y29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9GTE9PUjsKKyAgKG5ldyBUZXN0KCJjdWMwMTMiKSkub2s9Y29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsLlJPVU5EX0hBTEZfRE9XTj09Y29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0RPV047CisgIChuZXcgVGVzdCgiY3VjMDE0IikpLm9rPWNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbC5ST1VORF9IQUxGX0VWRU49PWNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9FVkVOOworICAobmV3IFRlc3QoImN1YzAxNSIpKS5vaz1jb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwuUk9VTkRfSEFMRl9VUD09Y29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQOworICAobmV3IFRlc3QoImN1YzAxNiIpKS5vaz1jb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwuUk9VTkRfVU5ORUNFU1NBUlk9PWNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfVU5ORUNFU1NBUlk7CisgIChuZXcgVGVzdCgiY3VjMDE3IikpLm9rPWNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbC5ST1VORF9VUD09Y29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9VUDsKKyAgCisgIChuZXcgVGVzdCgiY3VjMDIwIikpLm9rPShjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LkRFRkFVTFQuZ2V0RGlnaXRzKCkpPT05OworICAobmV3IFRlc3QoImN1YzAyMSIpKS5vaz0oY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ERUZBVUxULmdldEZvcm0oKSk9PWNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuU0NJRU5USUZJQzsKKyAgKG5ldyBUZXN0KCJjdWMwMjIiKSkub2s9KGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuREVGQVVMVC5nZXRMb3N0RGlnaXRzKCk/MTowKT09MDsKKyAgKG5ldyBUZXN0KCJjdWMwMjMiKSkub2s9KGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuREVGQVVMVC5nZXRSb3VuZGluZ01vZGUoKSk9PWNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUDsKKyAgCisgIC8vIG1jOSAgPU1hdGhDb250ZXh0KDkpCisgIC8vIG1jbGQgPU1hdGhDb250ZXh0KDksIFNDSUVOVElGSUMsIDEpCisgIC8vIG1jZmQgPU1hdGhDb250ZXh0KDAsIFBMQUlOKQorICAobmV3IFRlc3QoImN1YzAzMCIpKS5vaz0obWM5LmdldERpZ2l0cygpKT09OTsKKyAgKG5ldyBUZXN0KCJjdWMwMzEiKSkub2s9KG1jOS5nZXRGb3JtKCkpPT1jb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlNDSUVOVElGSUM7CisgIChuZXcgVGVzdCgiY3VjMDMyIikpLm9rPShtYzkuZ2V0TG9zdERpZ2l0cygpPzE6MCk9PTA7CisgIChuZXcgVGVzdCgiY3VjMDMzIikpLm9rPShtYzkuZ2V0Um91bmRpbmdNb2RlKCkpPT1jb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVA7CisgIChuZXcgVGVzdCgiY3VjMDM0IikpLm9rPShtY2xkLmdldERpZ2l0cygpKT09OTsKKyAgKG5ldyBUZXN0KCJjdWMwMzUiKSkub2s9KG1jbGQuZ2V0Rm9ybSgpKT09Y29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5TQ0lFTlRJRklDOworICAobmV3IFRlc3QoImN1YzAzNiIpKS5vaz0obWNsZC5nZXRMb3N0RGlnaXRzKCk/MTowKT09MTsKKyAgKG5ldyBUZXN0KCJjdWMwMzciKSkub2s9KG1jbGQuZ2V0Um91bmRpbmdNb2RlKCkpPT1jb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVA7CisgIChuZXcgVGVzdCgiY3VjMDM4IikpLm9rPShtY2ZkLmdldERpZ2l0cygpKT09MDsKKyAgKG5ldyBUZXN0KCJjdWMwMzkiKSkub2s9KG1jZmQuZ2V0Rm9ybSgpKT09Y29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5QTEFJTjsKKyAgKG5ldyBUZXN0KCJjdWMwNDAiKSkub2s9KG1jZmQuZ2V0TG9zdERpZ2l0cygpPzE6MCk9PTA7CisgIChuZXcgVGVzdCgiY3VjMDQxIikpLm9rPShtY2ZkLmdldFJvdW5kaW5nTW9kZSgpKT09Y29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQOworICAKKyAgc3VtbWFyeSgiTm8gbXV0YXRpb24iKTsKKyAgcmV0dXJuO30KKworIAorIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgLyogT3BlcmF0b3IgdGVzdCBtZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIC8vIFRoZSB1c2Ugb2YgY29udGV4dCBpbiB0aGVzZSB0ZXN0cyBhcmUgcHJpbWFyaWx5IHRvIHNob3cgdGhhdCB0aGV5CisgLy8gYXJlIGNvcnJlY3RseSBwYXNzZWQgdG8gdGhlIG1ldGhvZHMsIGV4Y2VwdCB0aGF0IHdlIGNoZWNrIHRoYXQKKyAvLyBlYWNoIG1ldGhvZCBjaGVja3MgZm9yIGxvc3REaWdpdHMuCisgCisgLyoqIFRlc3QgdGhlIHtAbGluayBCaWdEZWNpbWFsI2Fic30gbWV0aG9kLiAqLworIAorIHB1YmxpYyB2b2lkIGRpYWdhYnMoKXsKKyAgYm9vbGVhbiBmbGFnPWZhbHNlOworICBqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiBhZT1udWxsOworICAKKyAgLy8gbW9zdCBvZiB0aGUgZnVuY3Rpb24gb2YgdGhpcyBpcyB0ZXN0ZWQgYnkgYWRkCisgIChuZXcgVGVzdCgiYWJzMDAxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMiIpKS5hYnMoKS50b1N0cmluZygpKS5lcXVhbHMoIjIiKTsKKyAgKG5ldyBUZXN0KCJhYnMwMDIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMiIpKS5hYnMoKS50b1N0cmluZygpKS5lcXVhbHMoIjIiKTsKKyAgKG5ldyBUZXN0KCJhYnMwMDMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIrMC4wMDAiKSkuYWJzKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMCIpOworICAobmV3IFRlc3QoImFiczAwNCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAwLjAwMCIpKS5hYnMoKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwIik7CisgIChuZXcgVGVzdCgiYWJzMDA1IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTAuMDAwIikpLmFicygpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDAiKTsKKyAgKG5ldyBUZXN0KCJhYnMwMDYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIrMC4wMDAiKSkuYWJzKG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJhYnMwMDciKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwMC4wMDAiKSkuYWJzKG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJhYnMwMDgiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMC4wMDAiKSkuYWJzKG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJhYnMwMDkiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMjAwMDAwMCIpKS5hYnMoKS50b1N0cmluZygpKS5lcXVhbHMoIjIwMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJhYnMwMTAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMjAwMDAwMCIpKS5hYnMobWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMjAwMDAwMCIpOworICAobmV3IFRlc3QoImFiczAxMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0yMDAwMDAwIikpLmFicyhtYzYpLnRvU3RyaW5nKCkpLmVxdWFscygiMi4wMDAwMEUrNiIpOworICAobmV3IFRlc3QoImFiczAxMiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIwMDAwMDAiKSkuYWJzKG1jNikudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjAwMDAwRSs2Iik7CisgIChuZXcgVGVzdCgiYWJzMDEzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4yIikpLmFicygpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4yIik7CisgIChuZXcgVGVzdCgiYWJzMDE0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTAuMiIpKS5hYnMoKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMiIpOworICAobmV3IFRlc3QoImFiczAxNSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDEiKSkuYWJzKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAxIik7CisgIChuZXcgVGVzdCgiYWJzMDE2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTAuMDEiKSkuYWJzKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAxIik7CisgIHRyeXtjaGVja2RpZ2l0czpkb3sKKyAgIHRlbmxvbmcuYWJzKG1jbGQpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkMTkpe2FlPSQxOTsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJUb28gbWFueSBkaWdpdHM6IisiICIrdGVubG9uZy50b1N0cmluZygpKTsKKyAgfS8qY2hlY2tkaWdpdHMqLworICAobmV3IFRlc3QoImFiczAyMCIpKS5vaz1mbGFnOworICAvLyBjaGVjayBsb3N0ZGlnaXRzIG5vdCByYWlzZWQgaWYgZGlnaXRzPTAgW21vbmFkaWMgbWV0aG9kXQorICB0cnl7Y2hlY2tkaWdpdHM6ZG97CisgICB0ZW5sb25nLmFicyhtY2xkMCk7CisgICBmbGFnPXRydWU7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDIwKXthZT0kMjA7CisgICBmbGFnPWZhbHNlOworICB9LypjaGVja2RpZ2l0cyovCisgIChuZXcgVGVzdCgiYWJzMDIxIikpLm9rPWZsYWc7CisgIHRyeXtjaGVja251bGw6ZG97CisgICBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwuVEVOLmFicygoY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dCludWxsKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uICQyMSl7CisgICBmbGFnPXRydWU7CisgIH0vKmNoZWNrbnVsbCovCisgIChuZXcgVGVzdCgiYWJzMDIyIikpLm9rPWZsYWc7CisgIAorICBzdW1tYXJ5KCJhYnMiKTsKKyAgcmV0dXJuO30KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgCisgLyoqIFRlc3QgdGhlIHtAbGluayBCaWdEZWNpbWFsI2FkZH0gbWV0aG9kLiAqLworIAorIHB1YmxpYyB2b2lkIGRpYWdhZGQoKXsKKyAgYm9vbGVhbiBmbGFnPWZhbHNlOworICBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgYWxoczsKKyAgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIGFyaHM7CisgIGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uIGFlPW51bGw7CisgIAorICAvLyBbZmlyc3QgZ3JvdXAgYXJlICdxdWljayBjb25maWRlbmNlIGNoZWNrJ10KKyAgKG5ldyBUZXN0KCJhZGQwMDEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKDIpKS5hZGQobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgzKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCI1Iik7CisgIChuZXcgVGVzdCgiYWRkMDAzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNS43NSIpKS5hZGQobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMy4zIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiOS4wNSIpOworICAobmV3IFRlc3QoImFkZDAwNCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjUiKSkuYWRkKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0zIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMiIpOworICAobmV3IFRlc3QoImFkZDAwNSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi01IikpLmFkZChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMyIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIi04Iik7CisgIChuZXcgVGVzdCgiYWRkMDA2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTciKSkuYWRkKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIuNSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIi00LjUiKTsKKyAgKG5ldyBUZXN0KCJhZGQwMDciKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjciKSkuYWRkKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMyIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMCIpOworICAobmV3IFRlc3QoImFkZDAwOCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuMjUiKSkuYWRkKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuMjUiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjUwIik7CisgIChuZXcgVGVzdCgiYWRkMDA5IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS4yMzQ1Njc4OSIpKS5hZGQobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS4wMDAwMDAwMCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjIuMjM0NTY3ODkiKTsKKyAgCisgIChuZXcgVGVzdCgiYWRkMDEwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS4yMzQ1Njc4OSIpKS5hZGQobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS4wMDAwMDAxMSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjIuMjM0NTY4MDAiKTsKKyAgCisgIAorICAobmV3IFRlc3QoImFkZDAxMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuNDQ0NDQ0NDQ0NCIpKS5hZGQobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC41NTU1NTU1NTU1IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wMDAwMDAwMCIpOworICAKKyAgKG5ldyBUZXN0KCJhZGQwMTIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjQ0NDQ0NDQ0NDAiKSkuYWRkKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuNTU1NTU1NTU1NSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDAwMDAwMDAiKTsKKyAgCisgIChuZXcgVGVzdCgiYWRkMDEzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC40NDQ0NDQ0NDQ0IikpLmFkZChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjU1NTU1NTU1NTAiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjk5OTk5OTk5OSIpOworICAKKyAgKG5ldyBUZXN0KCJhZGQwMTQiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjQ0NDQ0NDQ0NDQ5OTkiKSkuYWRkKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjQ0NDQ0NDQ0NCIpOworICAKKyAgKG5ldyBUZXN0KCJhZGQwMTUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjQ0NDQ0NDQ0NDUwMDAiKSkuYWRkKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjQ0NDQ0NDQ0NSIpOworICAKKyAgCisgIChuZXcgVGVzdCgiYWRkMDE2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNzAiKSkuYWRkKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wMDAwMDAwMEUrMTMiKTsKKyAgCisgIChuZXcgVGVzdCgiYWRkMDE3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNzAwIikpLmFkZChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMDAwMGUrOSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDAwMDAwMDBFKzEzIik7CisgIAorICAobmV3IFRlc3QoImFkZDAxOCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAiKSkuYWRkKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wMDAwMDAwMEUrMTMiKTsKKyAgCisgIChuZXcgVGVzdCgiYWRkMDE5IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNzAwMDAiKSkuYWRkKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wMDAwMDAwMUUrMTMiKTsKKyAgCisgIChuZXcgVGVzdCgiYWRkMDIwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNzAwMDAwIikpLmFkZChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMDAwMGUrOSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDAwMDAwMDdFKzEzIik7CisgIAorICAKKyAgLy8gW05vdyB0aGUgc2FtZSBncm91cCB3aXRoIGZpeGVkIGFyaXRobWV0aWNdCisgIChuZXcgVGVzdCgiYWRkMDMwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgyKSkuYWRkKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoMykpLnRvU3RyaW5nKCkpLmVxdWFscygiNSIpOworICAobmV3IFRlc3QoImFkZDAzMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjUuNzUiKSkuYWRkKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMuMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjkuMDUiKTsKKyAgKG5ldyBUZXN0KCJhZGQwMzIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI1IikpLmFkZChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjIiKTsKKyAgKG5ldyBUZXN0KCJhZGQwMzMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItNSIpKS5hZGQobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItOCIpOworICAobmV3IFRlc3QoImFkZDAzNCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi03IikpLmFkZChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyLjUiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItNC41Iik7CisgIChuZXcgVGVzdCgiYWRkMDM1IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC43IikpLmFkZChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAiKTsKKyAgKG5ldyBUZXN0KCJhZGQwMzYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjI1IikpLmFkZChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjI1IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMi41MCIpOworICAobmV3IFRlc3QoImFkZDAzNyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuMjM0NTY3ODkiKSkuYWRkKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDAwMDAwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjIzNDU2Nzg5Iik7CisgIAorICAobmV3IFRlc3QoImFkZDAzOCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuMjM0NTY3ODkiKSkuYWRkKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDAwMDAwMTEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjIzNDU2ODAwIik7CisgIAorICAKKyAgKG5ldyBUZXN0KCJhZGQwMzkiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjQ0NDQ0NDQ0NDQiKSkuYWRkKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuNTU1NTU1NTU1NSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuOTk5OTk5OTk5OSIpOworICAKKyAgKG5ldyBUZXN0KCJhZGQwNDAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjQ0NDQ0NDQ0NDAiKSkuYWRkKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuNTU1NTU1NTU1NSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuOTk5OTk5OTk5NSIpOworICAKKyAgKG5ldyBUZXN0KCJhZGQwNDEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjQ0NDQ0NDQ0NDQiKSkuYWRkKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuNTU1NTU1NTU1MCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuOTk5OTk5OTk5NCIpOworICAKKyAgKG5ldyBUZXN0KCJhZGQwNDIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjQ0NDQ0NDQ0NDQ5OTkiKSkuYWRkKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjQ0NDQ0NDQ0NDQ5OTkiKTsKKyAgCisgIChuZXcgVGVzdCgiYWRkMDQzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC40NDQ0NDQ0NDQ1MDAwIikpLmFkZChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC40NDQ0NDQ0NDQ1MDAwIik7CisgIAorICAKKyAgKG5ldyBUZXN0KCJhZGQwNDQiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI3MCIpKS5hZGQobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDAwMDAwMDAwMDA3MCIpOworICAKKyAgKG5ldyBUZXN0KCJhZGQwNDUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI3MDAiKSkuYWRkKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAwMDAwMDAwMDA3MDAiKTsKKyAgCisgIChuZXcgVGVzdCgiYWRkMDQ2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNzAwMCIpKS5hZGQobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDAwMDAwMDAwNzAwMCIpOworICAKKyAgKG5ldyBUZXN0KCJhZGQwNDciKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI3MDAwMCIpKS5hZGQobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDAwMDAwMDA3MDAwMCIpOworICAKKyAgKG5ldyBUZXN0KCJhZGQwNDgiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI3MDAwMDAiKSkuYWRkKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAwMDAwMDA3MDAwMDAiKTsKKyAgCisgIAorICAvLyBzeW1tZXRyeToKKyAgKG5ldyBUZXN0KCJhZGQwNDkiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMDAwMGUrOSIpKS5hZGQobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNzAiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAwMDAwMDAwRSsxMyIpOworICAKKyAgKG5ldyBUZXN0KCJhZGQwNTAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMDAwMGUrOSIpKS5hZGQobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNzAwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wMDAwMDAwMEUrMTMiKTsKKyAgCisgIChuZXcgVGVzdCgiYWRkMDUxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSkuYWRkKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAwMDAwMDAwRSsxMyIpOworICAKKyAgKG5ldyBUZXN0KCJhZGQwNTIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMDAwMGUrOSIpKS5hZGQobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNzAwMDAiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAwMDAwMDAxRSsxMyIpOworICAKKyAgKG5ldyBUZXN0KCJhZGQwNTMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMDAwMGUrOSIpKS5hZGQobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNzAwMDAwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wMDAwMDAwN0UrMTMiKTsKKyAgCisgIAorICAobmV3IFRlc3QoImFkZDA1NCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IikpLmFkZChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI3MCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEwMDAwMDAwMDAwMDcwIik7CisgIAorICAobmV3IFRlc3QoImFkZDA1NSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IikpLmFkZChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI3MDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDAwMDAwMDAwMDcwMCIpOworICAKKyAgKG5ldyBUZXN0KCJhZGQwNTYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMDAwMGUrOSIpKS5hZGQobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNzAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEwMDAwMDAwMDA3MDAwIik7CisgIAorICAobmV3IFRlc3QoImFkZDA1NyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IikpLmFkZChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI3MDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEwMDAwMDAwMDcwMDAwIik7CisgIAorICAobmV3IFRlc3QoImFkZDA1OCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IikpLmFkZChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI3MDAwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDAwMDAwMDcwMDAwMCIpOworICAKKyAgLy8gc29tZSByb3VuZGluZyBlZmZlY3RzCisgIChuZXcgVGVzdCgiYWRkMDU5IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC45OTk4IikpLmFkZChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjAwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjk5OTgiKTsKKyAgCisgIChuZXcgVGVzdCgiYWRkMDYwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC45OTk4IikpLmFkZChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjAwMDEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjk5OTkiKTsKKyAgCisgIChuZXcgVGVzdCgiYWRkMDYxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC45OTk4IikpLmFkZChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjAwMDIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAwMDAiKTsKKyAgCisgIChuZXcgVGVzdCgiYWRkMDYyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC45OTk4IikpLmFkZChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjAwMDMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAwMDEiKTsKKyAgCisgIAorICAvLyBNQworICAobmV3IFRlc3QoImFkZDA3MCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IikpLmFkZChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI3MDAwMCIpLG1jZmQpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAwMDAwMDAwNzAwMDAiKTsKKyAgCisgIChuZXcgVGVzdCgiYWRkMDcxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSkuYWRkKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wMDAwMDAwMUUrMTMiKTsKKyAgCisgIChuZXcgVGVzdCgiYWRkMDcyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSkuYWRkKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAwIiksbWM2KS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDAwMDBFKzEzIik7CisgIAorICAKKyAgLy8gemVybyBwcmVzZXJ2YXRpb24KKyAgKG5ldyBUZXN0KCJhZGQwODAiKSkub2s9KGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbC5PTkUuYWRkKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAwMSIpLG1jNikudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAwMDEiKTsKKyAgCisgIChuZXcgVGVzdCgiYWRkMDgxIikpLm9rPShjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwuT05FLmFkZChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjAwMDAxIiksbWM2KS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDAwMDEiKTsKKyAgCisgIChuZXcgVGVzdCgiYWRkMDgyIikpLm9rPShjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwuT05FLmFkZChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjAwMDAwMSIpLG1jNikudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAwMDAwIik7CisgIAorICAobmV3IFRlc3QoImFkZDA4MyIpKS5vaz0oY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsLk9ORS5hZGQobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wMDAwMDAxIiksbWM2KS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDAwMDAiKTsKKyAgCisgIChuZXcgVGVzdCgiYWRkMDg0IikpLm9rPShjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwuT05FLmFkZChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjAwMDAwMDAxIiksbWM2KS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDAwMDAiKTsKKyAgCisgIAorICAvLyBtb3JlIGZpeGVkLCBMSFMgc3dhcHMKKyAgKG5ldyBUZXN0KCJhZGQwOTAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItNTYyNjdFLTEwIikpLmFkZCh6ZXJvKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjAwMDAwNTYyNjciKTsKKyAgKG5ldyBUZXN0KCJhZGQwOTEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItNTYyNjdFLTYiKSkuYWRkKHplcm8pLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuMDU2MjY3Iik7CisgIChuZXcgVGVzdCgiYWRkMDkyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTU2MjY3RS01IikpLmFkZCh6ZXJvKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjU2MjY3Iik7CisgIChuZXcgVGVzdCgiYWRkMDkzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTU2MjY3RS00IikpLmFkZCh6ZXJvKS50b1N0cmluZygpKS5lcXVhbHMoIi01LjYyNjciKTsKKyAgKG5ldyBUZXN0KCJhZGQwOTQiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItNTYyNjdFLTMiKSkuYWRkKHplcm8pLnRvU3RyaW5nKCkpLmVxdWFscygiLTU2LjI2NyIpOworICAobmV3IFRlc3QoImFkZDA5NSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi01NjI2N0UtMiIpKS5hZGQoemVybykudG9TdHJpbmcoKSkuZXF1YWxzKCItNTYyLjY3Iik7CisgIChuZXcgVGVzdCgiYWRkMDk2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTU2MjY3RS0xIikpLmFkZCh6ZXJvKS50b1N0cmluZygpKS5lcXVhbHMoIi01NjI2LjciKTsKKyAgKG5ldyBUZXN0KCJhZGQwOTciKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItNTYyNjdFLTAiKSkuYWRkKHplcm8pLnRvU3RyaW5nKCkpLmVxdWFscygiLTU2MjY3Iik7CisgIChuZXcgVGVzdCgiYWRkMDk4IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTVFLTEwIikpLmFkZCh6ZXJvKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjAwMDAwMDAwMDUiKTsKKyAgKG5ldyBUZXN0KCJhZGQwOTkiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItNUUtNSIpKS5hZGQoemVybykudG9TdHJpbmcoKSkuZXF1YWxzKCItMC4wMDAwNSIpOworICAobmV3IFRlc3QoImFkZDEwMCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi01RS0xIikpLmFkZCh6ZXJvKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjUiKTsKKyAgKG5ldyBUZXN0KCJhZGQxMDEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItNUUtMTAiKSkuYWRkKHplcm8pLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuMDAwMDAwMDAwNSIpOworICAobmV3IFRlc3QoImFkZDEwMiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi01RS01IikpLmFkZCh6ZXJvKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjAwMDA1Iik7CisgIChuZXcgVGVzdCgiYWRkMTAzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTVFLTEiKSkuYWRkKHplcm8pLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuNSIpOworICAobmV3IFRlc3QoImFkZDEwNCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi01RTEwIikpLmFkZCh6ZXJvKS50b1N0cmluZygpKS5lcXVhbHMoIi01MDAwMDAwMDAwMCIpOworICAobmV3IFRlc3QoImFkZDEwNSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi01RTUiKSkuYWRkKHplcm8pLnRvU3RyaW5nKCkpLmVxdWFscygiLTUwMDAwMCIpOworICAobmV3IFRlc3QoImFkZDEwNiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi01RTEiKSkuYWRkKHplcm8pLnRvU3RyaW5nKCkpLmVxdWFscygiLTUwIik7CisgIChuZXcgVGVzdCgiYWRkMTA3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTVFMCIpKS5hZGQoemVybykudG9TdHJpbmcoKSkuZXF1YWxzKCItNSIpOworICAKKyAgLy8gbW9yZSBmaXhlZCwgUkhTIHN3YXBzCisgIChuZXcgVGVzdCgiYWRkMTA4IikpLm9rPSh6ZXJvLmFkZChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItNTYyNjdFLTEwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuMDAwMDA1NjI2NyIpOworICAobmV3IFRlc3QoImFkZDEwOSIpKS5vaz0oemVyby5hZGQobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTU2MjY3RS02IikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuMDU2MjY3Iik7CisgIChuZXcgVGVzdCgiYWRkMTEwIikpLm9rPSh6ZXJvLmFkZChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItNTYyNjdFLTUiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC41NjI2NyIpOworICAobmV3IFRlc3QoImFkZDExMSIpKS5vaz0oemVyby5hZGQobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTU2MjY3RS00IikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTUuNjI2NyIpOworICAobmV3IFRlc3QoImFkZDExMiIpKS5vaz0oemVyby5hZGQobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTU2MjY3RS0zIikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTU2LjI2NyIpOworICAobmV3IFRlc3QoImFkZDExMyIpKS5vaz0oemVyby5hZGQobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTU2MjY3RS0yIikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTU2Mi42NyIpOworICAobmV3IFRlc3QoImFkZDExNCIpKS5vaz0oemVyby5hZGQobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTU2MjY3RS0xIikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTU2MjYuNyIpOworICAobmV3IFRlc3QoImFkZDExNSIpKS5vaz0oemVyby5hZGQobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTU2MjY3RS0wIikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTU2MjY3Iik7CisgIChuZXcgVGVzdCgiYWRkMTE2IikpLm9rPSh6ZXJvLmFkZChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItNUUtMTAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC4wMDAwMDAwMDA1Iik7CisgIChuZXcgVGVzdCgiYWRkMTE3IikpLm9rPSh6ZXJvLmFkZChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItNUUtNSIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjAwMDA1Iik7CisgIChuZXcgVGVzdCgiYWRkMTE4IikpLm9rPSh6ZXJvLmFkZChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItNUUtMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjUiKTsKKyAgKG5ldyBUZXN0KCJhZGQxMjkiKSkub2s9KHplcm8uYWRkKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi01RS0xMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjAwMDAwMDAwMDUiKTsKKyAgKG5ldyBUZXN0KCJhZGQxMzAiKSkub2s9KHplcm8uYWRkKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi01RS01IikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuMDAwMDUiKTsKKyAgKG5ldyBUZXN0KCJhZGQxMzEiKSkub2s9KHplcm8uYWRkKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi01RS0xIikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuNSIpOworICAobmV3IFRlc3QoImFkZDEzMiIpKS5vaz0oemVyby5hZGQobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTVFMTAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItNTAwMDAwMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJhZGQxMzMiKSkub2s9KHplcm8uYWRkKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi01RTUiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItNTAwMDAwIik7CisgIChuZXcgVGVzdCgiYWRkMTM0IikpLm9rPSh6ZXJvLmFkZChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItNUUxIikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTUwIik7CisgIChuZXcgVGVzdCgiYWRkMTM1IikpLm9rPSh6ZXJvLmFkZChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItNUUwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTUiKTsKKyAgCisgIC8vIFtzb21lIG9mIHRoZSBuZXh0IGdyb3VwIGFyZSByZWFsbHkgY29uc3RydWN0b3IgdGVzdHNdCisgIChuZXcgVGVzdCgiYWRkMTQwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMDAuMCIpKS5hZGQobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wMCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJhZGQxNDEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjAwIikpLmFkZChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwMC4wIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoImFkZDE0MiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkuYWRkKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi4zIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMy4zIik7CisgIChuZXcgVGVzdCgiYWRkMTQzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMy4iKSkuYWRkKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi4zIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMy4zIik7CisgIChuZXcgVGVzdCgiYWRkMTQ0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMy4wIikpLmFkZChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIuMyIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjMuMyIpOworICAobmV3IFRlc3QoImFkZDE0NSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMuMDAiKSkuYWRkKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi4zIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMy4zMCIpOworICAobmV3IFRlc3QoImFkZDE0NiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkuYWRkKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCI2Iik7CisgIChuZXcgVGVzdCgiYWRkMTQ3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMyIpKS5hZGQobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiKzMiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCI2Iik7CisgIChuZXcgVGVzdCgiYWRkMTQ4IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMyIpKS5hZGQobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTMiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgiYWRkMTQ5IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wMyIpKS5hZGQobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTAuMDMiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIAorICAobmV3IFRlc3QoImFkZDE1MCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAwLjAiKSkuYWRkKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwIik7CisgIChuZXcgVGVzdCgiYWRkMTUxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wMCIpKS5hZGQobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMDAuMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAiKTsKKyAgKG5ldyBUZXN0KCJhZGQxNTIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzIikpLmFkZChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIuMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjMuMyIpOworICAobmV3IFRlc3QoImFkZDE1MyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMuIikpLmFkZChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIuMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjMuMyIpOworICAobmV3IFRlc3QoImFkZDE1NCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMuMCIpKS5hZGQobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLjMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIzLjMiKTsKKyAgKG5ldyBUZXN0KCJhZGQxNTUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzLjAwIikpLmFkZChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIuMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjMuMzAiKTsKKyAgKG5ldyBUZXN0KCJhZGQxNTYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzIikpLmFkZChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzIikpLnRvU3RyaW5nKCkpLmVxdWFscygiNiIpOworICAobmV3IFRlc3QoImFkZDE1NyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkuYWRkKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIiszIikpLnRvU3RyaW5nKCkpLmVxdWFscygiNiIpOworICAobmV3IFRlc3QoImFkZDE1OCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkuYWRkKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0zIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoImFkZDE1OSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMyIpKS5hZGQobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTAuMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMCIpOworICAobmV3IFRlc3QoImFkZDE2MCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDMiKSkuYWRkKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0wLjAzIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMCIpOworICAobmV3IFRlc3QoImFkZDE2MSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjdFKzEyIikpLmFkZChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMSIpLG1jZmQpLnRvU3RyaW5nKCkpLmVxdWFscygiNjk5OTk5OTk5OTk5OSIpOworICAKKyAgKG5ldyBUZXN0KCJhZGQxNjIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI3RSsxMiIpKS5hZGQobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS4xMSIpLG1jZmQpLnRvU3RyaW5nKCkpLmVxdWFscygiNzAwMDAwMDAwMDAwMS4xMSIpOworICAKKyAgKG5ldyBUZXN0KCJhZGQxNjMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjExIikpLmFkZChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI3RSsxMiIpLG1jZmQpLnRvU3RyaW5nKCkpLmVxdWFscygiNzAwMDAwMDAwMDAwMS4xMSIpOworICAKKyAgCisgIC8vIGlucHV0IHByZXBhcmF0aW9uIHRlc3RzCisgIGFsaHM9bmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTIzNDU2Nzg5MDAwMDAiKTsKKyAgYXJocz1uZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5OTk5OTk5OTk5OTk5Iik7CisgIChuZXcgVGVzdCgiYWRkMTcwIikpLm9rPShhbGhzLmFkZChhcmhzLG1jMykudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjIzRSsxMyIpOworICAobmV3IFRlc3QoImFkZDE3MSIpKS5vaz0oYXJocy5hZGQoYWxocyxtYzMpLnRvU3RyaW5nKCkpLmVxdWFscygiMi4yM0UrMTMiKTsKKyAgKG5ldyBUZXN0KCJhZGQxNzIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMkUrMyIpKS5hZGQobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMzQ1NiIpLG1jMykudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjU1RSs0Iik7CisgIC8vIG5leHQgd2FzIDEuNTRFKzQgdW5kZXIgb2xkIFt0cnVuY2F0ZSB0byBkaWdpdHMrMV0gcnVsZXMKKyAgKG5ldyBUZXN0KCJhZGQxNzMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMkUrMyIpKS5hZGQobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMzQ0NiIpLG1jMykudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjU1RSs0Iik7CisgIChuZXcgVGVzdCgiYWRkMTc0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTJFKzMiKSkuYWRkKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjM0NTQiKSxtYzMpLnRvU3RyaW5nKCkpLmVxdWFscygiMS41NUUrNCIpOworICAobmV3IFRlc3QoImFkZDE3NSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEyRSszIikpLmFkZChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzNDQ0IiksbWMzKS50b1N0cmluZygpKS5lcXVhbHMoIjEuNTRFKzQiKTsKKyAgCisgIChuZXcgVGVzdCgiYWRkMTc2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMzQ1NiIpKS5hZGQobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTJFKzMiKSxtYzMpLnRvU3RyaW5nKCkpLmVxdWFscygiMS41NUUrNCIpOworICAvLyBuZXh0IHdhcyAxLjU0RSs0IHVuZGVyIG9sZCBbdHJ1bmNhdGUgdG8gZGlnaXRzKzFdIHJ1bGVzCisgIChuZXcgVGVzdCgiYWRkMTc3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMzQ0NiIpKS5hZGQobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTJFKzMiKSxtYzMpLnRvU3RyaW5nKCkpLmVxdWFscygiMS41NUUrNCIpOworICAobmV3IFRlc3QoImFkZDE3OCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjM0NTQiKSkuYWRkKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEyRSszIiksbWMzKS50b1N0cmluZygpKS5lcXVhbHMoIjEuNTVFKzQiKTsKKyAgKG5ldyBUZXN0KCJhZGQxNzkiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzNDQ0IikpLmFkZChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMkUrMyIpLG1jMykudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjU0RSs0Iik7CisgIAorICB0cnl7Y2hlY2tudWxsOmRveworICAgdGVuLmFkZCgoY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKW51bGwpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24gJDIyKXsKKyAgIGZsYWc9dHJ1ZTsKKyAgfS8qY2hlY2tudWxsKi8KKyAgKG5ldyBUZXN0KCJhZGQyMDAiKSkub2s9ZmxhZzsKKyAgdHJ5e2NoZWNrbnVsbDI6ZG97CisgICB0ZW4uYWRkKHRlbiwoY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dCludWxsKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uICQyMyl7CisgICBmbGFnPXRydWU7CisgIH0vKmNoZWNrbnVsbDIqLworICAobmV3IFRlc3QoImFkZDIwMSIpKS5vaz1mbGFnOworICAKKyAgdHJ5e2NoZWNrZGlnaXRzOmRveworICAgdGVubG9uZy5hZGQoY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsLlpFUk8sbWNsZCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQyNCl7YWU9JDI0OworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIlRvbyBtYW55IGRpZ2l0czoiKyIgIit0ZW5sb25nLnRvU3RyaW5nKCkpOworICB9LypjaGVja2RpZ2l0cyovCisgIChuZXcgVGVzdCgiYWRkMjAyIikpLm9rPWZsYWc7CisgIHRyeXtjaGVja2RpZ2l0czpkb3sKKyAgIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbC5aRVJPLmFkZCh0ZW5sb25nLG1jbGQpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkMjUpe2FlPSQyNTsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJUb28gbWFueSBkaWdpdHM6IisiICIrdGVubG9uZy50b1N0cmluZygpKTsKKyAgfS8qY2hlY2tkaWdpdHMqLworICAobmV3IFRlc3QoImFkZDIwMyIpKS5vaz1mbGFnOworICAKKyAgLy8gY2hlY2sgbG9zdGRpZ2l0cyBub3QgcmFpc2VkIGlmIGRpZ2l0cz0wIFtkeWFkaWMgbWV0aG9kXQorICB0cnl7Y2hlY2tkaWdpdHM6ZG97CisgICB0ZW5sb25nLmFkZChjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwuWkVSTyxtY2xkMCk7CisgICBmbGFnPXRydWU7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDI2KXthZT0kMjY7CisgICBmbGFnPWZhbHNlOworICB9LypjaGVja2RpZ2l0cyovCisgIChuZXcgVGVzdCgiYWRkMjA0IikpLm9rPWZsYWc7CisgIHRyeXtjaGVja2RpZ2l0czpkb3sKKyAgIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbC5aRVJPLmFkZCh0ZW5sb25nLG1jbGQwKTsKKyAgIGZsYWc9dHJ1ZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkMjcpe2FlPSQyNzsKKyAgIGZsYWc9ZmFsc2U7CisgIH0vKmNoZWNrZGlnaXRzKi8KKyAgKG5ldyBUZXN0KCJhZGQyMDUiKSkub2s9ZmxhZzsKKyAgCisgIHN1bW1hcnkoImFkZCIpOworICByZXR1cm47fQorCisgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAvKiogVGVzdCB0aGUge0BsaW5rIEJpZ0RlY2ltYWwjY29tcGFyZVRvKEJpZ0RlY2ltYWwpfSBtZXRob2QuICovCisgCisgcHVibGljIHZvaWQgZGlhZ2NvbXBhcmV0bygpeworICBib29sZWFuIGZsYWc9ZmFsc2U7CisgIGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uIGFlPW51bGw7CisgIC8vIHdlIGFzc3VtZSBhZGQvc3VidHJhY3QgdGVzdCBmdW5jdGlvbjsgdGhpcyBqdXN0CisgIC8vIHRlc3RzIGV4aXN0ZW5jZSwgZXhjZXB0aW9ucywgYW5kIHBvc3NpYmxlIHJlc3VsdHMKKyAgCisgIChuZXcgVGVzdCgiY3B0MDAxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNSIpKS5jb21wYXJlVG8obmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMiIpKSk9PTE7CisgIChuZXcgVGVzdCgiY3B0MDAyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNSIpKS5jb21wYXJlVG8obmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNSIpKSk9PTA7CisgIChuZXcgVGVzdCgiY3B0MDAzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNSIpKS5jb21wYXJlVG8obmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNS4wMCIpKSk9PTA7CisgIChuZXcgVGVzdCgiY3B0MDA0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC41IikpLmNvbXBhcmVUbyhuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjUiKSkpPT0wOworICAobmV3IFRlc3QoImNwdDAwNSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkuY29tcGFyZVRvKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjUiKSkpPT0oLTEpOworICAobmV3IFRlc3QoImNwdDAwNiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkuY29tcGFyZVRvKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjUiKSxtY2RlZikpPT0oLTEpOworICAobmV3IFRlc3QoImNwdDAwNyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkuY29tcGFyZVRvKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjUiKSxtYzYpKT09KC0xKTsKKyAgKG5ldyBUZXN0KCJjcHQwMDgiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyIikpLmNvbXBhcmVUbyhuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI1IiksbWNmZCkpPT0oLTEpOworICB0cnl7Y2hlY2tudWxsOmRveworICAgdGVuLmNvbXBhcmVUbygoY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKW51bGwpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24gJDI4KXsKKyAgIGZsYWc9dHJ1ZTsKKyAgfS8qY2hlY2tudWxsKi8KKyAgKG5ldyBUZXN0KCJjcHQxMDAiKSkub2s9ZmxhZzsKKyAgdHJ5e2NoZWNrbnVsbDI6ZG97CisgICB0ZW4uY29tcGFyZVRvKHRlbiwoY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dCludWxsKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uICQyOSl7CisgICBmbGFnPXRydWU7CisgIH0vKmNoZWNrbnVsbDIqLworICAobmV3IFRlc3QoImNwdDEwMSIpKS5vaz1mbGFnOworICAKKyAgdHJ5e2NoZWNrZGlnaXRzOmRveworICAgdGVubG9uZy5jb21wYXJlVG8oY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsLk9ORSxtY2xkKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDMwKXthZT0kMzA7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiVG9vIG1hbnkgZGlnaXRzOiIrIiAiK3RlbmxvbmcudG9TdHJpbmcoKSk7CisgIH0vKmNoZWNrZGlnaXRzKi8KKyAgKG5ldyBUZXN0KCJjcHQxMDIiKSkub2s9ZmxhZzsKKyAgdHJ5e2NoZWNrZGlnaXRzOmRveworICAgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsLk9ORS5jb21wYXJlVG8odGVubG9uZyxtY2xkKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDMxKXthZT0kMzE7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiVG9vIG1hbnkgZGlnaXRzOiIrIiAiK3RlbmxvbmcudG9TdHJpbmcoKSk7CisgIH0vKmNoZWNrZGlnaXRzKi8KKyAgKG5ldyBUZXN0KCJjcHQxMDMiKSkub2s9ZmxhZzsKKyAgCisgIHN1bW1hcnkoImNvbXBhcmVUbyIpOworICByZXR1cm47fQorCisgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiogVGVzdCB0aGUge0BsaW5rIEJpZ0RlY2ltYWwjZGl2aWRlfSBtZXRob2QuICovCisgCisgcHVibGljIHZvaWQgZGlhZ2RpdmlkZSgpeworICBib29sZWFuIGZsYWc9ZmFsc2U7CisgIGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQgcm1jZDsKKyAgaW50IHJodTsKKyAgaW50IHJkOworICBpbnQgcnU7CisgIGphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uIGU9bnVsbDsKKyAgamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gYWU9bnVsbDsKKyAgCisgIChuZXcgVGVzdCgiZGl2MzAxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMSIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMyIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMzMzMzMzMzMzIik7CisgIChuZXcgVGVzdCgiZGl2MzAyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMiIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMyIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNjY2NjY2NjY3Iik7CisgIChuZXcgVGVzdCgiZGl2MzAzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMi40IikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMi40Iik7CisgIChuZXcgVGVzdCgiZGl2MzA0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMi40IikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIi0yLjQiKTsKKyAgKG5ldyBUZXN0KCJkaXYzMDUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMi40IikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiLTIuNCIpOworICAobmV3IFRlc3QoImRpdjMwNiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0yLjQiKSkuZGl2aWRlKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0xIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMi40Iik7CisgIChuZXcgVGVzdCgiZGl2MzA3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMi40MCIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjIuNCIpOworICAobmV3IFRlc3QoImRpdjMwOCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIuNDAwIikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMi40Iik7CisgIChuZXcgVGVzdCgiZGl2MzA5IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMi40IikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yIik7CisgIChuZXcgVGVzdCgiZGl2MzEwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMi40MDAiKSkuZGl2aWRlKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjIiKTsKKyAgKG5ldyBUZXN0KCJkaXYzMTEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyLiIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMiIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJkaXYzMTIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyMCIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMjAiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgiZGl2MzEzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTg3IikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxODciKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgiZGl2MzE0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNSIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMiIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjIuNSIpOworICAobmV3IFRlc3QoImRpdjMxNSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjUiKSkuZGl2aWRlKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIuMCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjIuNSIpOworICAobmV3IFRlc3QoImRpdjMxNiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjUiKSkuZGl2aWRlKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIuMDAwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMi41Iik7CisgIChuZXcgVGVzdCgiZGl2MzE3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNSIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4yMDAiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIyNSIpOworICAobmV3IFRlc3QoImRpdjMxOCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjk5OTk5OTk5OSIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjk5OTk5OTk5OSIpOworICAobmV3IFRlc3QoImRpdjMxOSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjk5OTk5OTk5OS40IikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiOTk5OTk5OTk5Iik7CisgIChuZXcgVGVzdCgiZGl2MzIwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOTk5OTk5OTk5LjUiKSkuZGl2aWRlKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxRSs5Iik7CisgIChuZXcgVGVzdCgiZGl2MzIxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOTk5OTk5OTk5LjkiKSkuZGl2aWRlKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxRSs5Iik7CisgIChuZXcgVGVzdCgiZGl2MzIyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOTk5OTk5OTk5Ljk5OSIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjFFKzkiKTsKKyAgKG5ldyBUZXN0KCJkaXYzMjMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjAwMDBFLTUwIikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAvLyBNQworICAobmV3IFRlc3QoImRpdjMyNSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjk5OTk5OTk5OSIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjk5OTk5OTk5OSIpOworICAobmV3IFRlc3QoImRpdjMyNiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjk5OTk5OTk5OSIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMSIpLG1jNikudG9TdHJpbmcoKSkuZXF1YWxzKCIxRSs5Iik7CisgIChuZXcgVGVzdCgiZGl2MzI3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOTk5OTk5OSIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMSIpLG1jNikudG9TdHJpbmcoKSkuZXF1YWxzKCIxRSs3Iik7CisgIChuZXcgVGVzdCgiZGl2MzI4IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOTk5OTk5IikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxIiksbWM2KS50b1N0cmluZygpKS5lcXVhbHMoIjk5OTk5OSIpOworICAKKyAgLy8gY2hlY2sgcm91bmRpbmcgZXhwbGljaXRseSBbbm90ZTogZGlnaXRzKzEgdHJ1bmNhdGlvbl0KKyAgcm1jZD1uZXcgY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dCgyLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuU0NJRU5USUZJQyxmYWxzZSxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0NFSUxJTkcpOworICAobmV3IFRlc3QoImRpdjMzMCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuNTAiKSkuZGl2aWRlKG9uZSxybWNkKS50b1N0cmluZygpKS5lcXVhbHMoIjEuNSIpOworICAobmV3IFRlc3QoImRpdjMzMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuNTEiKSkuZGl2aWRlKG9uZSxybWNkKS50b1N0cmluZygpKS5lcXVhbHMoIjEuNiIpOworICAobmV3IFRlc3QoImRpdjMzMiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuNTUiKSkuZGl2aWRlKG9uZSxybWNkKS50b1N0cmluZygpKS5lcXVhbHMoIjEuNiIpOworICBybWNkPW5ldyBjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0KDIsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5TQ0lFTlRJRklDLGZhbHNlLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfRE9XTik7CisgIChuZXcgVGVzdCgiZGl2MzMzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS41NSIpKS5kaXZpZGUob25lLHJtY2QpLnRvU3RyaW5nKCkpLmVxdWFscygiMS41Iik7CisgIChuZXcgVGVzdCgiZGl2MzM0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS41OSIpKS5kaXZpZGUob25lLHJtY2QpLnRvU3RyaW5nKCkpLmVxdWFscygiMS41Iik7CisgIHJtY2Q9bmV3IGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQoMixjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlNDSUVOVElGSUMsZmFsc2UsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9GTE9PUik7CisgIChuZXcgVGVzdCgiZGl2MzM1IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS41NSIpKS5kaXZpZGUob25lLHJtY2QpLnRvU3RyaW5nKCkpLmVxdWFscygiMS41Iik7CisgIChuZXcgVGVzdCgiZGl2MzM2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS41OSIpKS5kaXZpZGUob25lLHJtY2QpLnRvU3RyaW5nKCkpLmVxdWFscygiMS41Iik7CisgIHJtY2Q9bmV3IGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQoMixjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlNDSUVOVElGSUMsZmFsc2UsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0RPV04pOworICAobmV3IFRlc3QoImRpdjMzNyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuNDUiKSkuZGl2aWRlKG9uZSxybWNkKS50b1N0cmluZygpKS5lcXVhbHMoIjEuNCIpOworICAobmV3IFRlc3QoImRpdjMzOCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuNTAiKSkuZGl2aWRlKG9uZSxybWNkKS50b1N0cmluZygpKS5lcXVhbHMoIjEuNSIpOworICAobmV3IFRlc3QoImRpdjMzOSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuNTUiKSkuZGl2aWRlKG9uZSxybWNkKS50b1N0cmluZygpKS5lcXVhbHMoIjEuNSIpOworICBybWNkPW5ldyBjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0KDIsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5TQ0lFTlRJRklDLGZhbHNlLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9FVkVOKTsKKyAgKG5ldyBUZXN0KCJkaXYzNDAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjQ1IikpLmRpdmlkZShvbmUscm1jZCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjQiKTsKKyAgKG5ldyBUZXN0KCJkaXYzNDEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjUwIikpLmRpdmlkZShvbmUscm1jZCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjUiKTsKKyAgKG5ldyBUZXN0KCJkaXYzNDIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjU1IikpLmRpdmlkZShvbmUscm1jZCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjYiKTsKKyAgcm1jZD1uZXcgY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dCgyLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuU0NJRU5USUZJQyxmYWxzZSxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApOworICAobmV3IFRlc3QoImRpdjM0MyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuNDUiKSkuZGl2aWRlKG9uZSxybWNkKS50b1N0cmluZygpKS5lcXVhbHMoIjEuNSIpOworICAobmV3IFRlc3QoImRpdjM0NCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuNTAiKSkuZGl2aWRlKG9uZSxybWNkKS50b1N0cmluZygpKS5lcXVhbHMoIjEuNSIpOworICAobmV3IFRlc3QoImRpdjM0NSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuNTUiKSkuZGl2aWRlKG9uZSxybWNkKS50b1N0cmluZygpKS5lcXVhbHMoIjEuNiIpOworICBybWNkPW5ldyBjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0KDIsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5TQ0lFTlRJRklDLGZhbHNlLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfVVApOworICAobmV3IFRlc3QoImRpdjM0NiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuNTAiKSkuZGl2aWRlKG9uZSxybWNkKS50b1N0cmluZygpKS5lcXVhbHMoIjEuNSIpOworICAobmV3IFRlc3QoImRpdjM0NyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuNTEiKSkuZGl2aWRlKG9uZSxybWNkKS50b1N0cmluZygpKS5lcXVhbHMoIjEuNiIpOworICAobmV3IFRlc3QoImRpdjM0OCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuNTUiKSkuZGl2aWRlKG9uZSxybWNkKS50b1N0cmluZygpKS5lcXVhbHMoIjEuNiIpOworICAKKyAgLy8gZml4ZWQgcG9pbnQuLi4KKyAgKG5ldyBUZXN0KCJkaXYzNTAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxIikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoImRpdjM1MSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkuZGl2aWRlKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgiZGl2MzUyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMi40IikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMi40Iik7CisgIChuZXcgVGVzdCgiZGl2MzUzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMi40IikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0yLjQiKTsKKyAgKG5ldyBUZXN0KCJkaXYzNTQiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMi40IikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxIikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTIuNCIpOworICAobmV3IFRlc3QoImRpdjM1NSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0yLjQiKSkuZGl2aWRlKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0xIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMi40Iik7CisgIChuZXcgVGVzdCgiZGl2MzU2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMi40MCIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjIuNDAiKTsKKyAgKG5ldyBUZXN0KCJkaXYzNTciKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyLjQwMCIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjIuNDAwIik7CisgIChuZXcgVGVzdCgiZGl2MzU4IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMi40IikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yIik7CisgIChuZXcgVGVzdCgiZGl2MzU5IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMi40MDAiKSkuZGl2aWRlKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjIwMCIpOworICAobmV3IFRlc3QoImRpdjM2MCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIuIikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoImRpdjM2MSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIwIikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJkaXYzNjIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxODciKSkuZGl2aWRlKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjE4NyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJkaXYzNjMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI1IikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMyIpOworICAobmV3IFRlc3QoImRpdjM2NCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjUiKSkuZGl2aWRlKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIuMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjMiKTsKKyAgKG5ldyBUZXN0KCJkaXYzNjUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI1IikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyLjAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjMiKTsKKyAgKG5ldyBUZXN0KCJkaXYzNjYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI1IikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjIwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjI1Iik7CisgIChuZXcgVGVzdCgiZGl2MzY3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNS4wIikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMi41Iik7CisgIChuZXcgVGVzdCgiZGl2MzY4IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNS4wIikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyLjAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjUiKTsKKyAgKG5ldyBUZXN0KCJkaXYzNjkiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI1LjAiKSkuZGl2aWRlKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIuMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMi41Iik7CisgIChuZXcgVGVzdCgiZGl2MzcwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNS4wIikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjIwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjI1LjAiKTsKKyAgKG5ldyBUZXN0KCJkaXYzNzEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5OTk5OTk5OTkiKSkuZGl2aWRlKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5OTk5OTk5OTkiKTsKKyAgKG5ldyBUZXN0KCJkaXYzNzIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5OTk5OTk5OTkuNCIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjk5OTk5OTk5OS40Iik7CisgIChuZXcgVGVzdCgiZGl2MzczIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOTk5OTk5OTk5LjUiKSkuZGl2aWRlKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5OTk5OTk5OTkuNSIpOworICAobmV3IFRlc3QoImRpdjM3NCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjk5OTk5OTk5OS45IikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTk5OTk5OTk5LjkiKTsKKyAgKG5ldyBUZXN0KCJkaXYzNzUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5OTk5OTk5OTkuOTk5IikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTk5OTk5OTk5Ljk5OSIpOworICAobmV3IFRlc3QoImRpdjM3NiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAwMEUtNSIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJkaXYzNzciKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjAwMDAwMDAwMCIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwMDAwMDAwIik7CisgIAorICAvLy0gRml4ZWQgcG9pbnQ7IGV4cGxpY2l0IHNjYWxlcyAmIHJvdW5kcyBbb2xkIEJpZ0RlY2ltYWwgZGl2aWRlc10KKyAgcmh1PWNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUDsKKyAgcmQ9Y29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9ET1dOOworICAobmV3IFRlc3QoImRpdjAwMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuZGl2aWRlKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgiZGl2MDAyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMCIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMyIpLHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgiZGl2MDAzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMCIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMyIpLDAscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJkaXYwMDQiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwIikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzIiksMSxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wIik7CisgIChuZXcgVGVzdCgiZGl2MDA1IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMCIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMyIpLDIscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAiKTsKKyAgKG5ldyBUZXN0KCJkaXYwMDYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwIikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzIiksMyxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDAiKTsKKyAgKG5ldyBUZXN0KCJkaXYwMDciKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwIikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzIiksNCxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDAwIik7CisgIChuZXcgVGVzdCgiZGl2MDA4IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMSIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJkaXYwMDkiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxIikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzIikscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJkaXYwMTAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxIikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzIiksMCxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoImRpdjAxMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkuZGl2aWRlKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSwxLHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjMiKTsKKyAgKG5ldyBUZXN0KCJkaXYwMTIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxIikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzIiksMixyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4zMyIpOworICAobmV3IFRlc3QoImRpdjAxMyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkuZGl2aWRlKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSwzLHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjMzMyIpOworICAobmV3IFRlc3QoImRpdjAxNCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkuZGl2aWRlKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSw0LHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjMzMzMiKTsKKyAgKG5ldyBUZXN0KCJkaXYwMTUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyIikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoImRpdjAxNiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkuZGl2aWRlKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoImRpdjAxNyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkuZGl2aWRlKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSwwLHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgiZGl2MDE4IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMiIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMyIpLDEscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuNyIpOworICAobmV3IFRlc3QoImRpdjAxOSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkuZGl2aWRlKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSwyLHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjY3Iik7CisgIChuZXcgVGVzdCgiZGl2MDIwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMiIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMyIpLDMscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuNjY3Iik7CisgIChuZXcgVGVzdCgiZGl2MDIxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMiIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMyIpLDQscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuNjY2NyIpOworICAKKyAgKG5ldyBUZXN0KCJkaXYwMzAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMDAwIikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyMDAwIiksNCxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC41MDAwIik7CisgIChuZXcgVGVzdCgiZGl2MDMxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAwMCIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMjAwMCIpLDMscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuNTAwIik7CisgIChuZXcgVGVzdCgiZGl2MDMyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAwMCIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMjAwMCIpLDIscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuNTAiKTsKKyAgKG5ldyBUZXN0KCJkaXYwMzMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMDAwIikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyMDAwIiksMSxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC41Iik7CisgIChuZXcgVGVzdCgiZGl2MDM0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAwMCIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMjAwMCIpLDAscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgCisgIChuZXcgVGVzdCgiZGl2MDM1IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAwIikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI1MDAwIiksNCxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMjAwIik7CisgIChuZXcgVGVzdCgiZGl2MDM2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAwIikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI1MDAwIiksMyxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMjAiKTsKKyAgKG5ldyBUZXN0KCJkaXYwMzciKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMDAiKSkuZGl2aWRlKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjUwMDAiKSwyLHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAyIik7CisgIChuZXcgVGVzdCgiZGl2MDM4IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAwIikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI1MDAwIiksMSxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wIik7CisgIChuZXcgVGVzdCgiZGl2MDM5IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAwIikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI1MDAwIiksMCxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAKKyAgKG5ldyBUZXN0KCJkaXYwNDAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5Ljk5OTk5OTk5IikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5Ljc3Nzc3Nzc3IiksNCxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wMjI3Iik7CisgIChuZXcgVGVzdCgiZGl2MDQxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOS45OTk5OTk5IikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5Ljc3Nzc3NzciKSw0LHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAyMjciKTsKKyAgKG5ldyBUZXN0KCJkaXYwNDIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5Ljk5OTk5OSIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOS43Nzc3NzciKSw0LHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAyMjciKTsKKyAgKG5ldyBUZXN0KCJkaXYwNDMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5Ljc3Nzc3Nzc3IikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5Ljk5OTk5OTk5IiksNCxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC45Nzc4Iik7CisgIChuZXcgVGVzdCgiZGl2MDQ0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOS43Nzc3Nzc3IikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5Ljk5OTk5OTkiKSw0LHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjk3NzgiKTsKKyAgKG5ldyBUZXN0KCJkaXYwNDUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5Ljc3Nzc3NyIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOS45OTk5OTkiKSw0LHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjk3NzgiKTsKKyAgKG5ldyBUZXN0KCJkaXYwNDYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5Ljc3Nzc3IikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5Ljk5OTk5IiksNCxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC45Nzc4Iik7CisgIChuZXcgVGVzdCgiZGl2MDQ3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOS43Nzc3IikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5Ljk5OTkiKSw0LHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjk3NzgiKTsKKyAgKG5ldyBUZXN0KCJkaXYwNDgiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5Ljc3NyIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOS45OTkiKSw0LHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjk3NzgiKTsKKyAgKG5ldyBUZXN0KCJkaXYwNDkiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5Ljc3IikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5Ljk5IiksNCxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC45NzgwIik7CisgIChuZXcgVGVzdCgiZGl2MDUwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOS43IikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5LjkiKSw0LHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjk3OTgiKTsKKyAgKG5ldyBUZXN0KCJkaXYwNTEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5LiIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOS4iKSw0LHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAwMDAiKTsKKyAgCisgIChuZXcgVGVzdCgiZGl2MDYwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOS45OTk5OTk5OSIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOS43Nzc3Nzc3NyIpLHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAyMjcyNzI3Iik7CisgIChuZXcgVGVzdCgiZGl2MDYxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOS45OTk5OTk5IikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5Ljc3Nzc3NzciKSxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wMjI3MjczIik7CisgIChuZXcgVGVzdCgiZGl2MDYyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOS45OTk5OTkiKSkuZGl2aWRlKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjkuNzc3Nzc3Iikscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDIyNzI3Iik7CisgIChuZXcgVGVzdCgiZGl2MDYzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOS43Nzc3Nzc3NyIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOS45OTk5OTk5OSIpLHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjk3Nzc3Nzc4Iik7CisgIChuZXcgVGVzdCgiZGl2MDY0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOS43Nzc3Nzc3IikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5Ljk5OTk5OTkiKSxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC45Nzc3Nzc4Iik7CisgIChuZXcgVGVzdCgiZGl2MDY1IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOS43Nzc3NzciKSkuZGl2aWRlKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjkuOTk5OTk5Iikscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuOTc3Nzc4Iik7CisgIChuZXcgVGVzdCgiZGl2MDY2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOS43Nzc3NyIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOS45OTk5OSIpLHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjk3Nzc4Iik7CisgIChuZXcgVGVzdCgiZGl2MDY3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOS43Nzc3IikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5Ljk5OTkiKSxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC45Nzc4Iik7CisgIChuZXcgVGVzdCgiZGl2MDY4IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOS43NzciKSkuZGl2aWRlKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjkuOTk5Iikscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuOTc4Iik7CisgIChuZXcgVGVzdCgiZGl2MDY5IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOS43NyIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOS45OSIpLHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjk4Iik7CisgIChuZXcgVGVzdCgiZGl2MDcwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOS43IikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5LjkiKSxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wIik7CisgIChuZXcgVGVzdCgiZGl2MDcxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOS4iKSkuZGl2aWRlKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjkuIikscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgCisgIHJkPWNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfRE9XTjsgLy8gdGVzdCB0aGlzIGlzIGFjdHVhbGx5IGJlaW5nIHVzZWQKKyAgKG5ldyBUZXN0KCJkaXYwODAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyIikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzIiksMCxyZCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgiZGl2MDgxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMiIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMyIpLDEscmQpLnRvU3RyaW5nKCkpLmVxdWFscygiMC42Iik7CisgIChuZXcgVGVzdCgiZGl2MDgyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMiIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMyIpLDIscmQpLnRvU3RyaW5nKCkpLmVxdWFscygiMC42NiIpOworICAobmV3IFRlc3QoImRpdjA4MyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkuZGl2aWRlKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSwzLHJkKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNjY2Iik7CisgIChuZXcgVGVzdCgiZGl2MDg0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMiIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMyIpLDQscmQpLnRvU3RyaW5nKCkpLmVxdWFscygiMC42NjY2Iik7CisgIAorICBydT1jb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX1VOTkVDRVNTQVJZOyAvLyBjaGVjayBmb3Igc29tZSAwIHJlc2lkdWVzCisgIChuZXcgVGVzdCgiZGl2MDkwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAwMCIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNSIpLDQscnUpLnRvU3RyaW5nKCkpLmVxdWFscygiMjAwLjAwMDAiKTsKKyAgKG5ldyBUZXN0KCJkaXYwOTEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMDAwIikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI1MCIpLDQscnUpLnRvU3RyaW5nKCkpLmVxdWFscygiMjAuMDAwMCIpOworICAobmV3IFRlc3QoImRpdjA5MiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAiKSkuZGl2aWRlKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjUwMCIpLDQscnUpLnRvU3RyaW5nKCkpLmVxdWFscygiMi4wMDAwIik7CisgIChuZXcgVGVzdCgiZGl2MDkzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAwMCIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNTAwMCIpLDQscnUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4yMDAwIik7CisgIChuZXcgVGVzdCgiZGl2MDk0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAwMCIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNTAwMCIpLDMscnUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4yMDAiKTsKKyAgKG5ldyBUZXN0KCJkaXYwOTUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMDAwIikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI1MDAwIiksMixydSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjIwIik7CisgIChuZXcgVGVzdCgiZGl2MDk2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAwMCIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNTAwMCIpLDEscnUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4yIik7CisgIAorICAvLyBjaGVjayByb3VuZGluZyBleHBsaWNpdGx5CisgIChuZXcgVGVzdCgiZGl2MTAxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wNTUiKSkuZGl2aWRlKG9uZSwyLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfQ0VJTElORykudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjA2Iik7CisgIChuZXcgVGVzdCgiZGl2MTAyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wNTUiKSkuZGl2aWRlKG9uZSwxLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfQ0VJTElORykudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEiKTsKKyAgKG5ldyBUZXN0KCJkaXYxMDMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjA1NSIpKS5kaXZpZGUob25lLDAsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9DRUlMSU5HKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJkaXYxMDQiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjA1NSIpKS5kaXZpZGUob25lLDIsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9ET1dOKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDUiKTsKKyAgKG5ldyBUZXN0KCJkaXYxMDUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjA1NSIpKS5kaXZpZGUob25lLDEsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9ET1dOKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMCIpOworICAobmV3IFRlc3QoImRpdjEwNiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDU1IikpLmRpdmlkZShvbmUsMCxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0RPV04pLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoImRpdjEwNyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDU1IikpLmRpdmlkZShvbmUsMixjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0ZMT09SKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDUiKTsKKyAgKG5ldyBUZXN0KCJkaXYxMDgiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjA1NSIpKS5kaXZpZGUob25lLDEsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9GTE9PUikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAiKTsKKyAgKG5ldyBUZXN0KCJkaXYxMDkiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjA1NSIpKS5kaXZpZGUob25lLDAsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9GTE9PUikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIAorICAobmV3IFRlc3QoImRpdjExMCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDQ1IikpLmRpdmlkZShvbmUsMixjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRE9XTikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjA0Iik7CisgIChuZXcgVGVzdCgiZGl2MTExIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wNDUiKSkuZGl2aWRlKG9uZSwxLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9ET1dOKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMCIpOworICAobmV3IFRlc3QoImRpdjExMiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDQ1IikpLmRpdmlkZShvbmUsMCxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRE9XTikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgiZGl2MTEzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wNTAiKSkuZGl2aWRlKG9uZSwyLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9ET1dOKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDUiKTsKKyAgKG5ldyBUZXN0KCJkaXYxMTQiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjA1MCIpKS5kaXZpZGUob25lLDEsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0RPV04pLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wIik7CisgIChuZXcgVGVzdCgiZGl2MTE1IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wNTAiKSkuZGl2aWRlKG9uZSwwLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9ET1dOKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJkaXYxMTYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjA1NSIpKS5kaXZpZGUob25lLDIsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0RPV04pLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wNSIpOworICAobmV3IFRlc3QoImRpdjExNyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDU1IikpLmRpdmlkZShvbmUsMSxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRE9XTikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEiKTsKKyAgKG5ldyBUZXN0KCJkaXYxMTgiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjA1NSIpKS5kaXZpZGUob25lLDAsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0RPV04pLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAKKyAgKG5ldyBUZXN0KCJkaXYxMjAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjA0NSIpKS5kaXZpZGUob25lLDIsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0VWRU4pLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wNCIpOworICAobmV3IFRlc3QoImRpdjEyMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDQ1IikpLmRpdmlkZShvbmUsMSxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRVZFTikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAiKTsKKyAgKG5ldyBUZXN0KCJkaXYxMjIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjA0NSIpKS5kaXZpZGUob25lLDAsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0VWRU4pLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoImRpdjEyMyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDUwIikpLmRpdmlkZShvbmUsMixjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRVZFTikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjA1Iik7CisgIChuZXcgVGVzdCgiZGl2MTI0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wNTAiKSkuZGl2aWRlKG9uZSwxLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9FVkVOKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMCIpOworICAobmV3IFRlc3QoImRpdjEyNSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDUwIikpLmRpdmlkZShvbmUsMCxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRVZFTikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgiZGl2MTI2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4xNTAiKSkuZGl2aWRlKG9uZSwyLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9FVkVOKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMTUiKTsKKyAgKG5ldyBUZXN0KCJkaXYxMjciKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjE1MCIpKS5kaXZpZGUob25lLDEsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0VWRU4pLnRvU3RyaW5nKCkpLmVxdWFscygiMC4yIik7CisgIChuZXcgVGVzdCgiZGl2MTI4IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4xNTAiKSkuZGl2aWRlKG9uZSwwLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9FVkVOKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJkaXYxMjkiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjA1NSIpKS5kaXZpZGUob25lLDIsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0VWRU4pLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wNiIpOworICAobmV3IFRlc3QoImRpdjEzMCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDU1IikpLmRpdmlkZShvbmUsMSxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRVZFTikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEiKTsKKyAgKG5ldyBUZXN0KCJkaXYxMzEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjA1NSIpKS5kaXZpZGUob25lLDAsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0VWRU4pLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAKKyAgKG5ldyBUZXN0KCJkaXYxNDAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjA0NSIpKS5kaXZpZGUob25lLDIsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDUiKTsKKyAgKG5ldyBUZXN0KCJkaXYxNDEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjA0NSIpKS5kaXZpZGUob25lLDEsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMCIpOworICAobmV3IFRlc3QoImRpdjE0MiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDQ1IikpLmRpdmlkZShvbmUsMCxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoImRpdjE0MyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDUwIikpLmRpdmlkZShvbmUsMixjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wNSIpOworICAobmV3IFRlc3QoImRpdjE0NCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDUwIikpLmRpdmlkZShvbmUsMSxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xIik7CisgIChuZXcgVGVzdCgiZGl2MTQ1IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wNTAiKSkuZGl2aWRlKG9uZSwwLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgiZGl2MTQ2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wNTUiKSkuZGl2aWRlKG9uZSwyLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjA2Iik7CisgIChuZXcgVGVzdCgiZGl2MTQ3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wNTUiKSkuZGl2aWRlKG9uZSwxLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEiKTsKKyAgKG5ldyBUZXN0KCJkaXYxNDgiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjA1NSIpKS5kaXZpZGUob25lLDAsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgCisgIChuZXcgVGVzdCgiZGl2MTUwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wNTUiKSkuZGl2aWRlKG9uZSwyLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wNiIpOworICAobmV3IFRlc3QoImRpdjE1MSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDU1IikpLmRpdmlkZShvbmUsMSxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMSIpOworICAobmV3IFRlc3QoImRpdjUyLiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDU1IikpLmRpdmlkZShvbmUsMCxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgCisgIC8vLSBlcnJvciBjb25kaXRpb25zIC0tLQorICB0cnl7Y2hlY2tudWxsOmRveworICAgdGVuLmRpdmlkZSgoY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKW51bGwpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24gJDMyKXsKKyAgIGZsYWc9dHJ1ZTsKKyAgfS8qY2hlY2tudWxsKi8KKyAgKG5ldyBUZXN0KCJkaXYyMDEiKSkub2s9ZmxhZzsKKyAgdHJ5e2NoZWNrbnVsbDI6ZG97CisgICB0ZW4uZGl2aWRlKHRlbiwoY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dCludWxsKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uICQzMyl7CisgICBmbGFnPXRydWU7CisgIH0vKmNoZWNrbnVsbDIqLworICAobmV3IFRlc3QoImRpdjIwMiIpKS5vaz1mbGFnOworICAKKyAgdHJ5e2NoZWNrc2NhbGU6ZG97CisgICAobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMSIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMyIpLC04LDApOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiAkMzQpe2U9JDM0OworICAgZmxhZz1mbGFnJihlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJOZWdhdGl2ZSBzY2FsZTogLTgiKTsKKyAgfS8qY2hlY2tzY2FsZSovCisgIChuZXcgVGVzdCgiZGl2MjAzIikpLm9rPWZsYWc7CisgIAorICB0cnl7cm91bm46ZG97CisgICAobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAwMCIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNTAwMCIpLDAsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9VTk5FQ0VTU0FSWSk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQzNSl7YWU9JDM1OworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIlJvdW5kaW5nIG5lY2Vzc2FyeSIpOworICB9Lypyb3VubiovCisgIChuZXcgVGVzdCgiZGl2MjA0IikpLm9rPWZsYWc7CisgIHRyeXtyb3Vubjpkb3sKKyAgIChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMDAxIikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMCIpLDAsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9VTk5FQ0VTU0FSWSk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQzNil7YWU9JDM2OworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIlJvdW5kaW5nIG5lY2Vzc2FyeSIpOworICB9Lypyb3VubiovCisgIChuZXcgVGVzdCgiZGl2MjA1IikpLm9rPWZsYWc7CisgIHRyeXtyb3Vubjpkb3sKKyAgIChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMDAxIikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMDAiKSwxLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfVU5ORUNFU1NBUlkpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkMzcpe2FlPSQzNzsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJSb3VuZGluZyBuZWNlc3NhcnkiKTsKKyAgfS8qcm91bm4qLworICAobmV3IFRlc3QoImRpdjIwNiIpKS5vaz1mbGFnOworICB0cnl7cm91bm46ZG97CisgICAobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAwMDEiKSkuZGl2aWRlKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwIiksMSxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX1VOTkVDRVNTQVJZKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDM4KXthZT0kMzg7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiUm91bmRpbmcgbmVjZXNzYXJ5Iik7CisgIH0vKnJvdW5uKi8KKyAgKG5ldyBUZXN0KCJkaXYyMDciKSkub2s9ZmxhZzsKKyAgdHJ5e3JvdW5uOmRveworICAgKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDAwMSIpKS5kaXZpZGUobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMSIpLDEsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9VTk5FQ0VTU0FSWSk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQzOSl7YWU9JDM5OworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIlJvdW5kaW5nIG5lY2Vzc2FyeSIpOworICB9Lypyb3VubiovCisgIChuZXcgVGVzdCgiZGl2MjA4IikpLm9rPWZsYWc7CisgIAorICB0cnl7ZGl2MDpkb3sKKyAgIChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI1IikpLmRpdmlkZShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjAwIikpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkNDApe2FlPSQ0MDsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJEaXZpZGUgYnkgMCIpOworICB9LypkaXYwKi8KKyAgKG5ldyBUZXN0KCJkaXYyMDkiKSkub2s9ZmxhZzsKKyAgCisgIHRyeXtjaGVja2RpZ2l0czpkb3sKKyAgIHRlbmxvbmcuZGl2aWRlKGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbC5PTkUsbWNsZCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQ0MSl7YWU9JDQxOworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIlRvbyBtYW55IGRpZ2l0czoiKyIgIit0ZW5sb25nLnRvU3RyaW5nKCkpOworICB9LypjaGVja2RpZ2l0cyovCisgIChuZXcgVGVzdCgiZGl2MjEwIikpLm9rPWZsYWc7CisgIHRyeXtjaGVja2RpZ2l0czpkb3sKKyAgIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbC5PTkUuZGl2aWRlKHRlbmxvbmcsbWNsZCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQ0Mil7YWU9JDQyOworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIlRvbyBtYW55IGRpZ2l0czoiKyIgIit0ZW5sb25nLnRvU3RyaW5nKCkpOworICB9LypjaGVja2RpZ2l0cyovCisgIChuZXcgVGVzdCgiZGl2MjExIikpLm9rPWZsYWc7CisgIAorICBzdW1tYXJ5KCJkaXZpZGUiKTsKKyAgcmV0dXJuO30KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgCisgLyoqIFRlc3QgdGhlIHtAbGluayBCaWdEZWNpbWFsI2RpdmlkZUludGVnZXJ9IG1ldGhvZC4gKi8KKyAKKyBwdWJsaWMgdm9pZCBkaWFnZGl2aWRlSW50ZWdlcigpeworICBib29sZWFuIGZsYWc9ZmFsc2U7CisgIGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uIGFlPW51bGw7CisgIAorICAobmV3IFRlc3QoImR2STAwMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwMS4zIikpLmRpdmlkZUludGVnZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEwMSIpOworICAobmV3IFRlc3QoImR2STAwMiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwMS4wIikpLmRpdmlkZUludGVnZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEwMSIpOworICAobmV3IFRlc3QoImR2STAwMyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwMS4zIikpLmRpdmlkZUludGVnZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMyIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjMzIik7CisgIChuZXcgVGVzdCgiZHZJMDA0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAxLjAiKSkuZGl2aWRlSW50ZWdlcihuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMzMiKTsKKyAgKG5ldyBUZXN0KCJkdkkwMDUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyLjQiKSkuZGl2aWRlSW50ZWdlcihuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMiIpOworICAobmV3IFRlc3QoImR2STAwNiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIuNDAwIikpLmRpdmlkZUludGVnZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjIiKTsKKyAgKG5ldyBUZXN0KCJkdkkwMDciKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxOCIpKS5kaXZpZGVJbnRlZ2VyKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjE4IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoImR2STAwOCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjExMjAiKSkuZGl2aWRlSW50ZWdlcihuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMDAwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoImR2STAwOSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIuNCIpKS5kaXZpZGVJbnRlZ2VyKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgiZHZJMDEwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMi40MDAiKSkuZGl2aWRlSW50ZWdlcihuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoImR2STAxMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuNSIpKS5kaXZpZGVJbnRlZ2VyKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIuMDAwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoImR2STAxMiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjguMDA1IikpLmRpdmlkZUludGVnZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNyIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJkdkkwMTMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI1IikpLmRpdmlkZUludGVnZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMiIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjIiKTsKKyAgKG5ldyBUZXN0KCJkdkkwMTQiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwIikpLmRpdmlkZUludGVnZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMiIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJkdkkwMTUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjAwIikpLmRpdmlkZUludGVnZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMiIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgLy8gTUMKKyAgKG5ldyBUZXN0KCJkdkkwMTYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI1IikpLmRpdmlkZUludGVnZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMiIpLG1jZSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyIik7CisgIChuZXcgVGVzdCgiZHZJMDE3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNSIpKS5kaXZpZGVJbnRlZ2VyKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSxtYzYpLnRvU3RyaW5nKCkpLmVxdWFscygiMiIpOworICAKKyAgLy8gRml4ZWQgLS0KKyAgKG5ldyBUZXN0KCJkdkkwMjEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMDEuMyIpKS5kaXZpZGVJbnRlZ2VyKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDEiKTsKKyAgKG5ldyBUZXN0KCJkdkkwMjIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMDEuMCIpKS5kaXZpZGVJbnRlZ2VyKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDEiKTsKKyAgKG5ldyBUZXN0KCJkdkkwMjMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMDEuMyIpKS5kaXZpZGVJbnRlZ2VyKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIzMyIpOworICAobmV3IFRlc3QoImR2STAyNCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwMS4wIikpLmRpdmlkZUludGVnZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjMzIik7CisgIChuZXcgVGVzdCgiZHZJMDI1IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMi40IikpLmRpdmlkZUludGVnZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjIiKTsKKyAgKG5ldyBUZXN0KCJkdkkwMjYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyLjQwMCIpKS5kaXZpZGVJbnRlZ2VyKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyIik7CisgIChuZXcgVGVzdCgiZHZJMDI3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTgiKSkuZGl2aWRlSW50ZWdlcihuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxOCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJkdkkwMjgiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMTIwIikpLmRpdmlkZUludGVnZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJkdkkwMjkiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyLjQiKSkuZGl2aWRlSW50ZWdlcihuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoImR2STAzMCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIuNDAwIikpLmRpdmlkZUludGVnZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJkdkkwMzEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjUiKSkuZGl2aWRlSW50ZWdlcihuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyLjAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJkdkkwMzIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI4LjAwNSIpKS5kaXZpZGVJbnRlZ2VyKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjciKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgiZHZJMDMzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNSIpKS5kaXZpZGVJbnRlZ2VyKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyIik7CisgIChuZXcgVGVzdCgiZHZJMDM0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMCIpKS5kaXZpZGVJbnRlZ2VyKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgiZHZJMDM1IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wMCIpKS5kaXZpZGVJbnRlZ2VyKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIAorICB0cnl7Y2hlY2tudWxsOmRveworICAgdGVuLmRpdmlkZUludGVnZXIoKGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCludWxsKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uICQ0Myl7CisgICBmbGFnPXRydWU7CisgIH0vKmNoZWNrbnVsbCovCisgIChuZXcgVGVzdCgiZHZJMTAxIikpLm9rPWZsYWc7CisgIHRyeXtjaGVja251bGwyOmRveworICAgdGVuLmRpdmlkZUludGVnZXIodGVuLChjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0KW51bGwpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24gJDQ0KXsKKyAgIGZsYWc9dHJ1ZTsKKyAgfS8qY2hlY2tudWxsMiovCisgIChuZXcgVGVzdCgiZHZJMTAyIikpLm9rPWZsYWc7CisgIAorICB0cnl7Y2hlY2tkaWdpdHM6ZG97CisgICBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwuT05FLmRpdmlkZUludGVnZXIodGVubG9uZyxtY2xkKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDQ1KXthZT0kNDU7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiVG9vIG1hbnkgZGlnaXRzOiIrIiAiK3RlbmxvbmcudG9TdHJpbmcoKSk7CisgIH0vKmNoZWNrZGlnaXRzKi8KKyAgKG5ldyBUZXN0KCJkdkkxMDMiKSkub2s9ZmxhZzsKKyAgCisgIHRyeXtjaGVja2RpZ2l0czpkb3sKKyAgIHRlbmxvbmcuZGl2aWRlSW50ZWdlcihjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwuT05FLG1jbGQpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkNDYpe2FlPSQ0NjsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJUb28gbWFueSBkaWdpdHM6IisiICIrdGVubG9uZy50b1N0cmluZygpKTsKKyAgfS8qY2hlY2tkaWdpdHMqLworICAobmV3IFRlc3QoImR2STEwNCIpKS5vaz1mbGFnOworICAKKyAgc3VtbWFyeSgiZGl2aWRlSW50ZWdlciIpOworICByZXR1cm47fQorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiogVGVzdCB0aGUge0BsaW5rIEJpZ0RlY2ltYWwjbWF4fSBtZXRob2QuICovCisgCisgcHVibGljIHZvaWQgZGlhZ21heCgpeworICBib29sZWFuIGZsYWc9ZmFsc2U7CisgIGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uIGFlPW51bGw7CisgIAorICAvLyB3ZSBhc3N1bWUgYWRkL3N1YnRyYWN0IHRlc3QgZnVuY3Rpb247IHRoaXMgYW5kIG1pbiBqdXN0CisgIC8vIHRlc3QgZXhpc3RlbmNlIGFuZCB0ZXN0IHRoZSB0cnV0aCB0YWJsZQorICAobmV3IFRlc3QoIm1heDAwMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjUiKSkubWF4KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI1Iik7CisgIChuZXcgVGVzdCgibWF4MDAyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNSIpKS5tYXgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjUiKTsKKyAgKG5ldyBUZXN0KCJtYXgwMDMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyIikpLm1heChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI3IikpLnRvU3RyaW5nKCkpLmVxdWFscygiNyIpOworICAobmV3IFRlc3QoIm1heDAwNCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkubWF4KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjciKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCI3Iik7CisgIChuZXcgVGVzdCgibWF4MDA1IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMiIpKS5tYXgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNyIpLG1jNikudG9TdHJpbmcoKSkuZXF1YWxzKCI3Iik7CisgIChuZXcgVGVzdCgibWF4MDA2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMkUrMyIpKS5tYXgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjIwMDAiKTsKKyAgKG5ldyBUZXN0KCJtYXgwMDciKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyRSszIikpLm1heChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI3IiksbWMzKS50b1N0cmluZygpKS5lcXVhbHMoIjJFKzMiKTsKKyAgKG5ldyBUZXN0KCJtYXgwMDgiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI3IikpLm1heChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyRSszIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMjAwMCIpOworICAobmV3IFRlc3QoIm1heDAwOSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjciKSkubWF4KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjJFKzMiKSxtYzMpLnRvU3RyaW5nKCkpLmVxdWFscygiMkUrMyIpOworICB0cnl7Y2hlY2tudWxsOmRveworICAgdGVuLm1heCgoY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKW51bGwpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24gJDQ3KXsKKyAgIGZsYWc9dHJ1ZTsKKyAgfS8qY2hlY2tudWxsKi8KKyAgKG5ldyBUZXN0KCJtYXgwMTAiKSkub2s9ZmxhZzsKKyAgdHJ5e2NoZWNrbnVsbDI6ZG97CisgICB0ZW4ubWF4KHRlbiwoY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dCludWxsKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uICQ0OCl7CisgICBmbGFnPXRydWU7CisgIH0vKmNoZWNrbnVsbDIqLworICAobmV3IFRlc3QoIm1heDAxMSIpKS5vaz1mbGFnOworICB0cnl7Y2hlY2tkaWdpdHM6ZG97CisgICB0ZW5sb25nLm1heChjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwuT05FLG1jbGQpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkNDkpe2FlPSQ0OTsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJUb28gbWFueSBkaWdpdHM6IisiICIrdGVubG9uZy50b1N0cmluZygpKTsKKyAgfS8qY2hlY2tkaWdpdHMqLworICAobmV3IFRlc3QoIm1heDAxMiIpKS5vaz1mbGFnOworICB0cnl7Y2hlY2tkaWdpdHM6ZG97CisgICBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwuT05FLm1heCh0ZW5sb25nLG1jbGQpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkNTApe2FlPSQ1MDsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJUb28gbWFueSBkaWdpdHM6IisiICIrdGVubG9uZy50b1N0cmluZygpKTsKKyAgfS8qY2hlY2tkaWdpdHMqLworICAobmV3IFRlc3QoIm1heDAxMyIpKS5vaz1mbGFnOworICBzdW1tYXJ5KCJtYXgiKTsKKyAgcmV0dXJuO30KKworIC8qKiBUZXN0IHRoZSB7QGxpbmsgQmlnRGVjaW1hbCNtaW59IG1ldGhvZC4gKi8KKyAKKyBwdWJsaWMgdm9pZCBkaWFnbWluKCl7CisgIGJvb2xlYW4gZmxhZz1mYWxzZTsKKyAgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIG1pbng9bnVsbDsKKyAgamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gYWU9bnVsbDsKKyAgLy8gd2UgYXNzdW1lIGFkZC9zdWJ0cmFjdCB0ZXN0IGZ1bmN0aW9uOyB0aGlzIGFuZCBtYXgganVzdAorICAvLyB0ZXN0IGV4aXN0ZW5jZSBhbmQgdGVzdCB0aGUgdHJ1dGggdGFibGUKKyAgCisgIChuZXcgVGVzdCgibWluMDAxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNSIpKS5taW4obmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjIiKTsKKyAgKG5ldyBUZXN0KCJtaW4wMDIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI1IikpLm1pbihuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI1IikpLnRvU3RyaW5nKCkpLmVxdWFscygiNSIpOworICAobmV3IFRlc3QoIm1pbjAwMyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkubWluKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjciKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyIik7CisgIChuZXcgVGVzdCgibWluMDA0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMiIpKS5taW4obmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNyIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjIiKTsKKyAgKG5ldyBUZXN0KCJtaW4wMDUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxIikpLm1pbihuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI3IiksbWM2KS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJtaW4wMDYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMkUrMyIpKS5taW4obmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNyIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0yMDAwIik7CisgIChuZXcgVGVzdCgibWluMDA3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTJFKzMiKSkubWluKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjciKSxtYzMpLnRvU3RyaW5nKCkpLmVxdWFscygiLTJFKzMiKTsKKyAgKG5ldyBUZXN0KCJtaW4wMDgiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI3IikpLm1pbihuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMkUrMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0yMDAwIik7CisgIChuZXcgVGVzdCgibWluMDA5IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNyIpKS5taW4obmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTJFKzMiKSxtYzMpLnRvU3RyaW5nKCkpLmVxdWFscygiLTJFKzMiKTsKKyAgdHJ5e2NoZWNrbnVsbDpkb3sKKyAgIG1pbng9dGVuOworICAgbWlueC5taW4oKGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCludWxsKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uICQ1MSl7CisgICBmbGFnPXRydWU7CisgIH0vKmNoZWNrbnVsbCovCisgIChuZXcgVGVzdCgibWluMDEwIikpLm9rPWZsYWc7CisgIHRyeXtjaGVja251bGwyOmRveworICAgbWlueD10ZW47CisgICBtaW54Lm1pbih0ZW4sKGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQpbnVsbCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAkNTIpeworICAgZmxhZz10cnVlOworICB9LypjaGVja251bGwyKi8KKyAgKG5ldyBUZXN0KCJtaW4wMTEiKSkub2s9ZmxhZzsKKyAgCisgIHRyeXtjaGVja2RpZ2l0czpkb3sKKyAgIHRlbmxvbmcubWluKGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbC5PTkUsbWNsZCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQ1Myl7YWU9JDUzOworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIlRvbyBtYW55IGRpZ2l0czoiKyIgIit0ZW5sb25nLnRvU3RyaW5nKCkpOworICB9LypjaGVja2RpZ2l0cyovCisgIChuZXcgVGVzdCgibWluMDEyIikpLm9rPWZsYWc7CisgIHRyeXtjaGVja2RpZ2l0czpkb3sKKyAgIChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKDkpKS5taW4odGVubG9uZyxtY2xkKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDU0KXthZT0kNTQ7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiVG9vIG1hbnkgZGlnaXRzOiIrIiAiK3RlbmxvbmcudG9TdHJpbmcoKSk7CisgIH0vKmNoZWNrZGlnaXRzKi8KKyAgKG5ldyBUZXN0KCJtaW4wMTMiKSkub2s9ZmxhZzsKKyAgc3VtbWFyeSgibWluIik7CisgIHJldHVybjt9CisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIAorIC8qKiBUZXN0IHRoZSB7QGxpbmsgQmlnRGVjaW1hbCNtdWx0aXBseX0gbWV0aG9kLiAqLworIAorIHB1YmxpYyB2b2lkIGRpYWdtdWx0aXBseSgpeworICBib29sZWFuIGZsYWc9ZmFsc2U7CisgIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCBsOTsKKyAgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIGw3N2U7CisgIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCBsMTIzNDU7CisgIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCBlZGdlOworICBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgdGVuZWRnZTsKKyAgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIGh1bmVkZ2U7CisgIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCBvcG87CisgIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCBkMT1udWxsOworICBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgZDI9bnVsbDsKKyAgamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gb2U9bnVsbDsKKyAgamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gYWU9bnVsbDsKKyAgCisgIChuZXcgVGVzdCgibXVsMDAxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMiIpKS5tdWx0aXBseShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiNiIpOworICAobmV3IFRlc3QoIm11bDAwMiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjUiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjUiKTsKKyAgKG5ldyBUZXN0KCJtdWwwMDMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI1IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxMCIpOworICAobmV3IFRlc3QoIm11bDAwNCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuMjAiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMiIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjIuNDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwwMDUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjIwIikpLm11bHRpcGx5KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgibXVsMDA2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS4yMCIpKS5tdWx0aXBseShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMiIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIi0yLjQwIik7CisgIChuZXcgVGVzdCgibXVsMDA3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTEuMjAiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMiIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIi0yLjQwIik7CisgIChuZXcgVGVzdCgibXVsMDA4IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTEuMjAiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJtdWwwMDkiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMS4yMCIpKS5tdWx0aXBseShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMiIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjIuNDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwwMTAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI1LjA5IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjcuMSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjM2LjEzOSIpOworICAobmV3IFRlc3QoIm11bDAxMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIuNSIpKS5tdWx0aXBseShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI0IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAuMCIpOworICAobmV3IFRlc3QoIm11bDAxMiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIuNTAiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEwLjAwIik7CisgIChuZXcgVGVzdCgibXVsMDEzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS4yMzQ1Njc4OSIpKS5tdWx0aXBseShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjAwMDAwMDAwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yMzQ1Njc4OSIpOworICAKKyAgKG5ldyBUZXN0KCJtdWwwMTQiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5Ljk5OTk5OTk5OSIpKS5tdWx0aXBseShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5Ljk5OTk5OTk5OSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEwMC4wMDAwMDAiKTsKKyAgCisgIChuZXcgVGVzdCgibXVsMDE1IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMi41MCIpKS5tdWx0aXBseShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI0IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAuMDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwwMTYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyLjUwIikpLm11bHRpcGx5KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjQiKSxtYzYpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAuMDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwwMTciKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5Ljk5OTk5OTk5OSIpKS5tdWx0aXBseShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5Ljk5OTk5OTk5OSIpLG1jNikudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDAuMDAwIik7CisgIAorICAKKyAgKG5ldyBUZXN0KCJtdWwwMjAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyIikpLm11bHRpcGx5KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI2Iik7CisgIChuZXcgVGVzdCgibXVsMDIxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNSIpKS5tdWx0aXBseShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxIikpLnRvU3RyaW5nKCkpLmVxdWFscygiNSIpOworICAobmV3IFRlc3QoIm11bDAyMiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjUiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEwIik7CisgIChuZXcgVGVzdCgibXVsMDIzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS4yMCIpKS5tdWx0aXBseShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMi40MCIpOworICAobmV3IFRlc3QoIm11bDAyNCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuMjAiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwwMjUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjIwIikpLm11bHRpcGx5KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0yIikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTIuNDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwwMjYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMS4yMCIpKS5tdWx0aXBseShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTIuNDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwwMjciKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMS4yMCIpKS5tdWx0aXBseShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMCIpOworICAobmV3IFRlc3QoIm11bDAyOCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0xLjIwIikpLm11bHRpcGx5KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0yIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMi40MCIpOworICAobmV3IFRlc3QoIm11bDAyOSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjUuMDkiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNy4xIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMzYuMTM5Iik7CisgIChuZXcgVGVzdCgibXVsMDMwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMi41IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjQiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMC4wIik7CisgIChuZXcgVGVzdCgibXVsMDMxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMi41MCIpKS5tdWx0aXBseShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI0IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAuMDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwwMzIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjIzNDU2Nzg5IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDAwMDAwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjIzNDU2Nzg5MDAwMDAwMDAiKTsKKyAgCisgIChuZXcgVGVzdCgibXVsMDMzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTIzNC41Njc4OSIpKS5tdWx0aXBseShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMTAwMC4wMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0xMjM0NTY3Ljg5MDAwMDAwMDAiKTsKKyAgCisgIChuZXcgVGVzdCgibXVsMDM0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTEyMzQuNTY3ODkiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAwMC4wMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0xMjM0NTY3Ljg5MDAwMDAwMDAiKTsKKyAgCisgIChuZXcgVGVzdCgibXVsMDM1IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOS45OTk5OTk5OTkiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOS45OTk5OTk5OTkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5OS45OTk5OTk5ODAwMDAwMDAwMDEiKTsKKyAgCisgIChuZXcgVGVzdCgibXVsMDM2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNS4wMCIpKS5tdWx0aXBseShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxRS0zIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDUwMCIpOworICAobmV3IFRlc3QoIm11bDAzNyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAwLjAwIikpLm11bHRpcGx5KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDAwMCIpOworICAobmV3IFRlc3QoIm11bDAzOCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAwLjAwIikpLm11bHRpcGx5KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjBFLTMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwIik7IC8vIHJocyBpcyAnMCcKKyAgLy8gMTk5OS4xMi4yMTogbmV4dCBvbmUgaXMgYSBlZGdlIGNhc2UgaWYgaW50ZXJtZWRpYXRlIGxvbmdzIGFyZSB1c2VkCisgIChuZXcgVGVzdCgibXVsMDM5IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOTk5OTk5OTk5OTk5IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjk3NjU2MjUiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5NzY1NjI0OTk5OTkwMjM0Mzc1Iik7CisgIAorICBsOT1uZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMjM0NTY3ODlFKzEwIik7CisgIGw3N2U9bmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNzdFLTIwIik7CisgIChuZXcgVGVzdCgibXVsMDQwIikpLm9rPShsOS5tdWx0aXBseShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzNDU2NzU3IikpLnRvU3RyaW5nKCkpLmVxdWFscygiNDI2NzYwMTE5NTczMjczMDAwMDAwMDAwMCIpOworICAobmV3IFRlc3QoIm11bDA0MSIpKS5vaz0obDkubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMzQ1Njc1NyIpLG1jMykudG9TdHJpbmcoKSkuZXF1YWxzKCI0LjI2RSsyNCIpOworICAobmV3IFRlc3QoIm11bDA0MiIpKS5vaz0obDkubXVsdGlwbHkobDc3ZSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjk1MDYxNzI3NTMwMDAwMDAwMDAwIik7CisgIChuZXcgVGVzdCgibXVsMDQzIikpLm9rPShsOS5tdWx0aXBseShsNzdlLG1jMykudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjk0NyIpOworICAobmV3IFRlc3QoIm11bDA0NCIpKS5vaz0obDc3ZS5tdWx0aXBseShsOSxtYzMpLnRvU3RyaW5nKCkpLmVxdWFscygiMC45NDciKTsKKyAgCisgIGwxMjM0NT1uZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMjMuNDUiKTsKKyAgKG5ldyBUZXN0KCJtdWwwNTAiKSkub2s9KGwxMjM0NS5tdWx0aXBseShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxZTExIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yMzQ1RSsxMyIpOworICAobmV3IFRlc3QoIm11bDA1MSIpKS5vaz0obDEyMzQ1Lm11bHRpcGx5KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjFlMTEiKSxtY3MpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yMzQ1RSsxMyIpOworICAobmV3IFRlc3QoIm11bDA1MiIpKS5vaz0obDEyMzQ1Lm11bHRpcGx5KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjFlKzkiKSxtY2UpLnRvU3RyaW5nKCkpLmVxdWFscygiMTIzLjQ1RSs5Iik7CisgIChuZXcgVGVzdCgibXVsMDUzIikpLm9rPShsMTIzNDUubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMWUxMCIpLG1jZSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjIzNDVFKzEyIik7CisgIChuZXcgVGVzdCgibXVsMDU0IikpLm9rPShsMTIzNDUubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMWUxMSIpLG1jZSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMi4zNDVFKzEyIik7CisgIChuZXcgVGVzdCgibXVsMDU1IikpLm9rPShsMTIzNDUubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMWUxMiIpLG1jZSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMjMuNDVFKzEyIik7CisgIChuZXcgVGVzdCgibXVsMDU2IikpLm9rPShsMTIzNDUubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMWUxMyIpLG1jZSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjIzNDVFKzE1Iik7CisgIAorICAvLyB0ZXN0IHNvbWUgY2FzZXMgdGhhdCBhcmUgY2xvc2UgdG8gZXhwb25lbnQgb3ZlcmZsb3cKKyAgKG5ldyBUZXN0KCJtdWwwNjAiKSkub2s9KG9uZS5tdWx0aXBseShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5ZTk5OTk5OTk5OSIpLG1jcykudG9TdHJpbmcoKSkuZXF1YWxzKCI5RSs5OTk5OTk5OTkiKTsKKyAgKG5ldyBUZXN0KCJtdWwwNjEiKSkub2s9KG9uZS5tdWx0aXBseShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5LjllOTk5OTk5OTk5IiksbWNzKS50b1N0cmluZygpKS5lcXVhbHMoIjkuOUUrOTk5OTk5OTk5Iik7CisgIChuZXcgVGVzdCgibXVsMDYyIikpLm9rPShvbmUubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOS45OWU5OTk5OTk5OTkiKSxtY3MpLnRvU3RyaW5nKCkpLmVxdWFscygiOS45OUUrOTk5OTk5OTk5Iik7CisgIChuZXcgVGVzdCgibXVsMDYzIikpLm9rPSh0ZW4ubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOWU5OTk5OTk5OTkiKSxtY2UpLnRvU3RyaW5nKCkpLmVxdWFscygiOTBFKzk5OTk5OTk5OSIpOworICAobmV3IFRlc3QoIm11bDA2NCIpKS5vaz0odGVuLm11bHRpcGx5KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjkuOWU5OTk5OTk5OTkiKSxtY2UpLnRvU3RyaW5nKCkpLmVxdWFscygiOTkuMEUrOTk5OTk5OTk5Iik7CisgIGVkZ2U9bmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOS45OTllOTk5OTk5OTk5Iik7CisgIHRlbmVkZ2U9dGVuLm11bHRpcGx5KGVkZ2UsbWNlKTsKKyAgKG5ldyBUZXN0KCJtdWwwNjUiKSkub2s9KHRlbmVkZ2UudG9TdHJpbmcoKSkuZXF1YWxzKCI5OS45OTBFKzk5OTk5OTk5OSIpOworICBodW5lZGdlPXRlbi5tdWx0aXBseSh0ZW5lZGdlLG1jZSk7CisgIChuZXcgVGVzdCgibXVsMDY2IikpLm9rPShodW5lZGdlLnRvU3RyaW5nKCkpLmVxdWFscygiOTk5LjkwMEUrOTk5OTk5OTk5Iik7CisgIG9wbz1uZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjEiKTsgLy8gb25lIHRlbnRoCisgIChuZXcgVGVzdCgibXVsMDY3IikpLm9rPShvcG8ubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOWUtOTk5OTk5OTk4IiksbWNzKS50b1N0cmluZygpKS5lcXVhbHMoIjlFLTk5OTk5OTk5OSIpOworICAobmV3IFRlc3QoIm11bDA2OCIpKS5vaz0ob3BvLm11bHRpcGx5KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjk5ZS05OTk5OTk5OTgiKSxtY3MpLnRvU3RyaW5nKCkpLmVxdWFscygiOS45RS05OTk5OTk5OTgiKTsKKyAgKG5ldyBUZXN0KCJtdWwwNjkiKSkub2s9KG9wby5tdWx0aXBseShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5OTllLTk5OTk5OTk5OCIpLG1jcykudG9TdHJpbmcoKSkuZXF1YWxzKCI5Ljk5RS05OTk5OTk5OTciKTsKKyAgCisgIChuZXcgVGVzdCgibXVsMDcwIikpLm9rPShvcG8ubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOWUtOTk5OTk5OTk4IiksbWNlKS50b1N0cmluZygpKS5lcXVhbHMoIjlFLTk5OTk5OTk5OSIpOworICAobmV3IFRlc3QoIm11bDA3MSIpKS5vaz0ob3BvLm11bHRpcGx5KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjk5ZS05OTk5OTk5OTgiKSxtY2UpLnRvU3RyaW5nKCkpLmVxdWFscygiOTlFLTk5OTk5OTk5OSIpOworICAobmV3IFRlc3QoIm11bDA3MiIpKS5vaz0ob3BvLm11bHRpcGx5KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjk5OWUtOTk5OTk5OTk4IiksbWNlKS50b1N0cmluZygpKS5lcXVhbHMoIjk5OUUtOTk5OTk5OTk5Iik7CisgIChuZXcgVGVzdCgibXVsMDczIikpLm9rPShvcG8ubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOTk5ZS05OTk5OTk5OTciKSxtY2UpLnRvU3RyaW5nKCkpLmVxdWFscygiOS45OUUtOTk5OTk5OTk2Iik7CisgIChuZXcgVGVzdCgibXVsMDc0IikpLm9rPShvcG8ubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOTk5OWUtOTk5OTk5OTk3IiksbWNlKS50b1N0cmluZygpKS5lcXVhbHMoIjk5Ljk5RS05OTk5OTk5OTYiKTsKKyAgKG5ldyBUZXN0KCJtdWwwNzQiKSkub2s9KG9wby5tdWx0aXBseShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5OTk5OWUtOTk5OTk5OTk3IiksbWNlKS50b1N0cmluZygpKS5lcXVhbHMoIjk5OS45OUUtOTk5OTk5OTk2Iik7CisgIAorICAvLyB0ZXN0IHNvbWUgaW50ZXJtZWRpYXRlIGxlbmd0aHMKKyAgKG5ldyBUZXN0KCJtdWwwODAiKSkub2s9KG9wby5tdWx0aXBseShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMjM0NTY3ODkiKSxtY3MpLnRvU3RyaW5nKCkpLmVxdWFscygiMTIzNDU2NzguOSIpOworICAobmV3IFRlc3QoIm11bDA4MSIpKS5vaz0ob3BvLm11bHRpcGx5KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1Njc4OTAxMjM0IiksbWNzKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjM0NTY3ODlFKzEyIik7CisgIChuZXcgVGVzdCgibXVsMDgyIikpLm9rPShvcG8ubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTIzNDU2Nzg5MTIzNDU2Nzg5IiksbWNzKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjM0NTY3ODlFKzE2Iik7CisgIChuZXcgVGVzdCgibXVsMDgzIikpLm9rPShvcG8ubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTIzNDU2Nzg5IiksbWNmZCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMjM0NTY3OC45Iik7CisgIChuZXcgVGVzdCgibXVsMDg0IikpLm9rPShvcG8ubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTIzNDU2Nzg5MDEyMzQiKSxtY2ZkKS50b1N0cmluZygpKS5lcXVhbHMoIjEyMzQ1Njc4OTAxMjMuNCIpOworICAobmV3IFRlc3QoIm11bDA4NSIpKS5vaz0ob3BvLm11bHRpcGx5KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1Njc4OTEyMzQ1Njc4OSIpLG1jZmQpLnRvU3RyaW5nKCkpLmVxdWFscygiMTIzNDU2Nzg5MTIzNDU2NzguOSIpOworICAKKyAgKG5ldyBUZXN0KCJtdWwwOTAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMjM0NTY3ODkiKSkubXVsdGlwbHkob3BvLG1jcykudG9TdHJpbmcoKSkuZXF1YWxzKCIxMjM0NTY3OC45Iik7CisgIChuZXcgVGVzdCgibXVsMDkxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTIzNDU2Nzg5MDEyMzQiKSkubXVsdGlwbHkob3BvLG1jcykudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjIzNDU2Nzg5RSsxMiIpOworICAobmV3IFRlc3QoIm11bDA5MiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1Njc4OTEyMzQ1Njc4OSIpKS5tdWx0aXBseShvcG8sbWNzKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjM0NTY3ODlFKzE2Iik7CisgIChuZXcgVGVzdCgibXVsMDkzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTIzNDU2Nzg5IikpLm11bHRpcGx5KG9wbyxtY2ZkKS50b1N0cmluZygpKS5lcXVhbHMoIjEyMzQ1Njc4LjkiKTsKKyAgKG5ldyBUZXN0KCJtdWwwOTQiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMjM0NTY3ODkwMTIzNCIpKS5tdWx0aXBseShvcG8sbWNmZCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMjM0NTY3ODkwMTIzLjQiKTsKKyAgKG5ldyBUZXN0KCJtdWwwOTUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMjM0NTY3ODkxMjM0NTY3ODkiKSkubXVsdGlwbHkob3BvLG1jZmQpLnRvU3RyaW5nKCkpLmVxdWFscygiMTIzNDU2Nzg5MTIzNDU2NzguOSIpOworICAKKyAgLy8gdGVzdCBzb21lIG1vcmUgZWRnZSBjYXNlcyBhbmQgY2FycmllcworICAobmV3IFRlc3QoIm11bDEwMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjkiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjgxIik7CisgIChuZXcgVGVzdCgibXVsMTAyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOSIpKS5tdWx0aXBseShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5MCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjgxMCIpOworICAobmV3IFRlc3QoIm11bDEwMyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjkiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOTAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiODEwMCIpOworICAobmV3IFRlc3QoIm11bDEwNCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjkiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOTAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjgxMDAwIik7CisgIChuZXcgVGVzdCgibXVsMTA1IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOSIpKS5tdWx0aXBseShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5MDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjgxMDAwMCIpOworICAobmV3IFRlc3QoIm11bDEwNiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjkiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOTAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiODEwMDAwMCIpOworICAobmV3IFRlc3QoIm11bDEwNyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjkiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOTAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjgxMDAwMDAwIik7CisgIChuZXcgVGVzdCgibXVsMTA4IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOSIpKS5tdWx0aXBseShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5MDAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjgxMDAwMDAwMCIpOworICAobmV3IFRlc3QoIm11bDEwOSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjkiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOTAwMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiODEwMDAwMDAwMCIpOworICAobmV3IFRlc3QoIm11bDExMCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjkiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOTAwMDAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjgxMDAwMDAwMDAwIik7CisgIChuZXcgVGVzdCgibXVsMTExIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOSIpKS5tdWx0aXBseShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5MDAwMDAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjgxMDAwMDAwMDAwMCIpOworICAobmV3IFRlc3QoIm11bDExMiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjkiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOTAwMDAwMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiODEwMDAwMDAwMDAwMCIpOworICAobmV3IFRlc3QoIm11bDExMyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjkiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOTAwMDAwMDAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjgxMDAwMDAwMDAwMDAwIik7CisgIChuZXcgVGVzdCgibXVsMTE0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOSIpKS5tdWx0aXBseShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5MDAwMDAwMDAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjgxMDAwMDAwMDAwMDAwMCIpOworICAobmV3IFRlc3QoIm11bDExNSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjkiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOTAwMDAwMDAwMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiODEwMDAwMDAwMDAwMDAwMCIpOworICAobmV3IFRlc3QoIm11bDExNiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjkiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOTAwMDAwMDAwMDAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjgxMDAwMDAwMDAwMDAwMDAwIik7CisgIChuZXcgVGVzdCgibXVsMTE3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOSIpKS5tdWx0aXBseShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5MDAwMDAwMDAwMDAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjgxMDAwMDAwMDAwMDAwMDAwMCIpOworICAobmV3IFRlc3QoIm11bDExOCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjkiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOTAwMDAwMDAwMDAwMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiODEwMDAwMDAwMDAwMDAwMDAwMCIpOworICAobmV3IFRlc3QoIm11bDExOSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjkiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOTAwMDAwMDAwMDAwMDAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjgxMDAwMDAwMDAwMDAwMDAwMDAwIik7CisgIChuZXcgVGVzdCgibXVsMTIwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOSIpKS5tdWx0aXBseShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5MDAwMDAwMDAwMDAwMDAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjgxMDAwMDAwMDAwMDAwMDAwMDAwMCIpOworICAobmV3IFRlc3QoIm11bDEyMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjkiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOTAwMDAwMDAwMDAwMDAwMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiODEwMDAwMDAwMDAwMDAwMDAwMDAwMCIpOworICAobmV3IFRlc3QoIm11bDEyMiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjkiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOTAwMDAwMDAwMDAwMDAwMDAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjgxMDAwMDAwMDAwMDAwMDAwMDAwMDAwIik7CisgIChuZXcgVGVzdCgibXVsMTIzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOSIpKS5tdWx0aXBseShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjgxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIpOworICAvLyB0ZXN0IHNvbWUgbW9yZSBlZGdlIGNhc2VzIHdpdGhvdXQgY2FycmllcworICAobmV3IFRlc3QoIm11bDEzMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjkiKTsKKyAgKG5ldyBUZXN0KCJtdWwxMzIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzIikpLm11bHRpcGx5KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTAiKTsKKyAgKG5ldyBUZXN0KCJtdWwxMzMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzIikpLm11bHRpcGx5KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjkwMCIpOworICAobmV3IFRlc3QoIm11bDEzNCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMzAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjkwMDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwxMzUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzIikpLm11bHRpcGx5KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwxMzYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzIikpLm11bHRpcGx5KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjkwMDAwMCIpOworICAobmV3IFRlc3QoIm11bDEzNyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMzAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjkwMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwxMzgiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzIikpLm11bHRpcGx5KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMwMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTAwMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwxMzkiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzIikpLm11bHRpcGx5KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMwMDAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjkwMDAwMDAwMCIpOworICAobmV3IFRlc3QoIm11bDE0MCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMzAwMDAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjkwMDAwMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwxNDEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzIikpLm11bHRpcGx5KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMwMDAwMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTAwMDAwMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwxNDIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzIikpLm11bHRpcGx5KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMwMDAwMDAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjkwMDAwMDAwMDAwMCIpOworICAobmV3IFRlc3QoIm11bDE0MyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMzAwMDAwMDAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjkwMDAwMDAwMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwxNDQiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzIikpLm11bHRpcGx5KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMwMDAwMDAwMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTAwMDAwMDAwMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwxNDUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzIikpLm11bHRpcGx5KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMwMDAwMDAwMDAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjkwMDAwMDAwMDAwMDAwMCIpOworICAobmV3IFRlc3QoIm11bDE0NiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMzAwMDAwMDAwMDAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjkwMDAwMDAwMDAwMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwxNDciKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzIikpLm11bHRpcGx5KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMwMDAwMDAwMDAwMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTAwMDAwMDAwMDAwMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwxNDgiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzIikpLm11bHRpcGx5KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMwMDAwMDAwMDAwMDAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjkwMDAwMDAwMDAwMDAwMDAwMCIpOworICAobmV3IFRlc3QoIm11bDE0OSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMzAwMDAwMDAwMDAwMDAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjkwMDAwMDAwMDAwMDAwMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwxNTAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzIikpLm11bHRpcGx5KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMwMDAwMDAwMDAwMDAwMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTAwMDAwMDAwMDAwMDAwMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwxNTEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzIikpLm11bHRpcGx5KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMwMDAwMDAwMDAwMDAwMDAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjkwMDAwMDAwMDAwMDAwMDAwMDAwMCIpOworICAobmV3IFRlc3QoIm11bDE1MiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMzAwMDAwMDAwMDAwMDAwMDAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjkwMDAwMDAwMDAwMDAwMDAwMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwxNTMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzIikpLm11bHRpcGx5KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiKTsKKyAgCisgIHRyeXtjaGVja251bGw6ZG97CisgICB0ZW4ubXVsdGlwbHkoKGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCludWxsKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uICQ1NSl7CisgICBmbGFnPXRydWU7CisgIH0vKmNoZWNrbnVsbCovCisgIChuZXcgVGVzdCgibXVsMjAwIikpLm9rPWZsYWc7CisgIHRyeXtjaGVja251bGwyOmRveworICAgdGVuLm11bHRpcGx5KHRlbiwoY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dCludWxsKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uICQ1Nil7CisgICBmbGFnPXRydWU7CisgIH0vKmNoZWNrbnVsbDIqLworICAobmV3IFRlc3QoIm11bDIwMSIpKS5vaz1mbGFnOworICAKKyAgdHJ5e2NoZWNrb3Zlcjpkb3sKKyAgIGQxPW5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0xLjIzNDU2Nzg5MDEyMzQ1RS0wIik7CisgICBkMj1uZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5RSs5OTk5OTk5OTkiKTsKKyAgIGQxLm11bHRpcGx5KGQyLG1jZGVmKTsgLy8gbWFyZ2luYWwgb3ZlcmZsb3cKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDU3KXtvZT0kNTc7CisgICBmbGFnPShvZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiRXhwb25lbnQgT3ZlcmZsb3c6IDEwMDAwMDAwMDAiKTsKKyAgfS8qY2hlY2tvdmVyKi8KKyAgKG5ldyBUZXN0KCJtdWwyMDIiKSkub2s9ZmxhZzsKKyAgdHJ5e2NoZWNrb3Zlcjpkb3sKKyAgIGQxPW5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjExMiIpOworICAgZDI9bmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOUUrOTk5OTk5OTk5Iik7CisgICBkMS5tdWx0aXBseShkMixtY2UpOyAvLyBtYXJnaW5hbCBvdmVyZmxvdywgZW5naW5lZXJpbmcKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDU4KXtvZT0kNTg7CisgICBmbGFnPShvZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiRXhwb25lbnQgT3ZlcmZsb3c6IDEwMDAwMDAwMDIiKTsKKyAgfS8qY2hlY2tvdmVyKi8KKyAgKG5ldyBUZXN0KCJtdWwyMDMiKSkub2s9ZmxhZzsKKyAgCisgIHRyeXtjaGVja292ZXI6ZG97CisgICBkMT1uZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjkiKTsKKyAgIGQyPW5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjFFLTk5OTk5OTk5OSIpOworICAgZDEubXVsdGlwbHkoZDIsbWNkZWYpOyAvLyBtYXJnaW5hbCBuZWdhdGl2ZSBvdmVyZmxvdworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkNTkpe29lPSQ1OTsKKyAgIGZsYWc9KG9lLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJFeHBvbmVudCBPdmVyZmxvdzogLTEwMDAwMDAwMDAiKTsKKyAgfS8qY2hlY2tvdmVyKi8KKyAgKG5ldyBUZXN0KCJtdWwyMDQiKSkub2s9ZmxhZzsKKyAgdHJ5e2NoZWNrb3Zlcjpkb3sKKyAgIGQxPW5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuOSIpOworICAgZDI9bmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMUUtOTk5OTk5OTk5Iik7CisgICBkMS5tdWx0aXBseShkMixtY2UpOyAvLyBtYXJnaW5hbCBuZWdhdGl2ZSBvdmVyZmxvdywgZW5naW5lZXJpbmcKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDYwKXtvZT0kNjA7CisgICBmbGFnPShvZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiRXhwb25lbnQgT3ZlcmZsb3c6IC0xMDAwMDAwMDAyIik7CisgIH0vKmNoZWNrb3ZlciovCisgIChuZXcgVGVzdCgibXVsMjA1IikpLm9rPWZsYWc7CisgIAorICB0cnl7Y2hlY2tkaWdpdHM6ZG97CisgICB0ZW5sb25nLm11bHRpcGx5KGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbC5PTkUsbWNsZCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQ2MSl7YWU9JDYxOworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIlRvbyBtYW55IGRpZ2l0czoiKyIgIit0ZW5sb25nLnRvU3RyaW5nKCkpOworICB9LypjaGVja2RpZ2l0cyovCisgIChuZXcgVGVzdCgibXVsMjA2IikpLm9rPWZsYWc7CisgIHRyeXtjaGVja2RpZ2l0czpkb3sKKyAgIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbC5URU4ubXVsdGlwbHkodGVubG9uZyxtY2xkKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDYyKXthZT0kNjI7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiVG9vIG1hbnkgZGlnaXRzOiIrIiAiK3RlbmxvbmcudG9TdHJpbmcoKSk7CisgIH0vKmNoZWNrZGlnaXRzKi8KKyAgKG5ldyBUZXN0KCJtdWwyMDciKSkub2s9ZmxhZzsKKyAgCisgIHN1bW1hcnkoIm11bHRpcGx5Iik7CisgIHJldHVybjt9CisKKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIAorIC8qKiBUZXN0IHRoZSB7QGxpbmsgQmlnRGVjaW1hbCNuZWdhdGV9IG1ldGhvZC4gKi8KKyAKKyBwdWJsaWMgdm9pZCBkaWFnbmVnYXRlKCl7CisgIGJvb2xlYW4gZmxhZz1mYWxzZTsKKyAgamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gYWU9bnVsbDsKKyAgCisgIChuZXcgVGVzdCgibmVnMDAxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMiIpKS5uZWdhdGUoKS50b1N0cmluZygpKS5lcXVhbHMoIi0yIik7CisgIChuZXcgVGVzdCgibmVnMDAyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTIiKSkubmVnYXRlKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIyIik7CisgIChuZXcgVGVzdCgibmVnMDAzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMi4wMCIpKS5uZWdhdGUobWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiLTIuMDAiKTsKKyAgKG5ldyBUZXN0KCJuZWcwMDQiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMi4wMCIpKS5uZWdhdGUobWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMi4wMCIpOworICAobmV3IFRlc3QoIm5lZzAwNSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkubmVnYXRlKG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJuZWcwMDYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjAwIikpLm5lZ2F0ZShtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgibmVnMDA3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMDAuMCIpKS5uZWdhdGUobWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoIm5lZzAwOCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAwIikpLm5lZ2F0ZShtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIAorICAobmV3IFRlc3QoIm5lZzAxMCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIuMDAiKSkubmVnYXRlKCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMi4wMCIpOworICAobmV3IFRlc3QoIm5lZzAxMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0yLjAwIikpLm5lZ2F0ZSgpLnRvU3RyaW5nKCkpLmVxdWFscygiMi4wMCIpOworICAobmV3IFRlc3QoIm5lZzAxMiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkubmVnYXRlKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgibmVnMDEzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wMCIpKS5uZWdhdGUoKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAiKTsKKyAgKG5ldyBUZXN0KCJuZWcwMTQiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwMC4wIikpLm5lZ2F0ZSgpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wIik7CisgIChuZXcgVGVzdCgibmVnMDE1IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMDAuMDAiKSkubmVnYXRlKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwIik7CisgIChuZXcgVGVzdCgibmVnMDE2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMDAiKSkubmVnYXRlKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIAorICAobmV3IFRlc3QoIm5lZzAyMCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0yMDAwMDAwIikpLm5lZ2F0ZSgpLnRvU3RyaW5nKCkpLmVxdWFscygiMjAwMDAwMCIpOworICAobmV3IFRlc3QoIm5lZzAyMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0yMDAwMDAwIikpLm5lZ2F0ZShtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIyMDAwMDAwIik7CisgIChuZXcgVGVzdCgibmVnMDIyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTIwMDAwMDAiKSkubmVnYXRlKG1jNikudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjAwMDAwRSs2Iik7CisgIChuZXcgVGVzdCgibmVnMDIzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMjAwMDAwMCIpKS5uZWdhdGUobWM2KS50b1N0cmluZygpKS5lcXVhbHMoIi0yLjAwMDAwRSs2Iik7CisgIAorICB0cnl7Y2hlY2tudWxsOmRveworICAgdGVuLm5lZ2F0ZSgoY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dCludWxsKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uICQ2Myl7CisgICBmbGFnPXRydWU7CisgIH0vKmNoZWNrbnVsbCovCisgIChuZXcgVGVzdCgibmVnMTAwIikpLm9rPWZsYWc7CisgIAorICB0cnl7Y2hlY2tkaWdpdHM6ZG97CisgICB0ZW5sb25nLm5lZ2F0ZShtY2xkKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDY0KXthZT0kNjQ7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiVG9vIG1hbnkgZGlnaXRzOiIrIiAiK3RlbmxvbmcudG9TdHJpbmcoKSk7CisgIH0vKmNoZWNrZGlnaXRzKi8KKyAgKG5ldyBUZXN0KCJuZWcxMDEiKSkub2s9ZmxhZzsKKyAgc3VtbWFyeSgibmVnYXRlIik7CisgIHJldHVybjt9CisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIAorIC8qKiBUZXN0IHRoZSB7QGxpbmsgQmlnRGVjaW1hbCNwbHVzfSBtZXRob2QuICovCisgCisgcHVibGljIHZvaWQgZGlhZ3BsdXMoKXsKKyAgYm9vbGVhbiBmbGFnPWZhbHNlOworICBjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0IG1jaGUxOworICBqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiBhZT1udWxsOworICAKKyAgKG5ldyBUZXN0KCJwbHUwMDEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyIikpLnBsdXMobWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMiIpOworICAobmV3IFRlc3QoInBsdTAwMiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0yIikpLnBsdXMobWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiLTIiKTsKKyAgKG5ldyBUZXN0KCJwbHUwMDMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyLjAwIikpLnBsdXMobWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMi4wMCIpOworICAobmV3IFRlc3QoInBsdTAwNCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0yLjAwIikpLnBsdXMobWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiLTIuMDAiKTsKKyAgKG5ldyBUZXN0KCJwbHUwMDUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwIikpLnBsdXMobWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoInBsdTAwNiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAiKSkucGx1cyhtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgicGx1MDA3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMDAuMCIpKS5wbHVzKG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJwbHUwMDgiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwMCIpKS5wbHVzKG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgCisgIChuZXcgVGVzdCgicGx1MDEwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMiIpKS5wbHVzKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIyIik7CisgIChuZXcgVGVzdCgicGx1MDExIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTIiKSkucGx1cygpLnRvU3RyaW5nKCkpLmVxdWFscygiLTIiKTsKKyAgKG5ldyBUZXN0KCJwbHUwMTIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyLjAwIikpLnBsdXMoKS50b1N0cmluZygpKS5lcXVhbHMoIjIuMDAiKTsKKyAgKG5ldyBUZXN0KCJwbHUwMTMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMi4wMCIpKS5wbHVzKCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMi4wMCIpOworICAobmV3IFRlc3QoInBsdTAxNCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkucGx1cygpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoInBsdTAxNSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAiKSkucGx1cygpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMCIpOworICAobmV3IFRlc3QoInBsdTAxNiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAwLjAiKSkucGx1cygpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wIik7CisgIChuZXcgVGVzdCgicGx1MDE3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMDAuMDAiKSkucGx1cygpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMCIpOworICAobmV3IFRlc3QoInBsdTAxOCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAwIikpLnBsdXMoKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgCisgIChuZXcgVGVzdCgicGx1MDIwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTIwMDAwMDAiKSkucGx1cygpLnRvU3RyaW5nKCkpLmVxdWFscygiLTIwMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJwbHUwMjEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMjAwMDAwMCIpKS5wbHVzKG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIi0yMDAwMDAwIik7CisgIChuZXcgVGVzdCgicGx1MDIyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTIwMDAwMDAiKSkucGx1cyhtYzYpLnRvU3RyaW5nKCkpLmVxdWFscygiLTIuMDAwMDBFKzYiKTsKKyAgKG5ldyBUZXN0KCJwbHUwMjMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyMDAwMDAwIikpLnBsdXMobWM2KS50b1N0cmluZygpKS5lcXVhbHMoIjIuMDAwMDBFKzYiKTsKKyAgCisgIC8vIHRyeSBzb21lIGV4b3RpYyBidXQgc2lsbHkgcm91bmRpbmcgW2Zvcm1hdCBjaGVja3MgbW9yZSB2YXJpZXRpZXNdCisgIC8vIFt0aGlzIG1vc3RseSBlbnN1cmVzIHdlIGNhbiBzZXQgdXAgYW5kIHBhc3MgdGhlIHNldHRpbmddCisgIG1jaGUxPW5ldyBjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0KDEsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5TQ0lFTlRJRklDLGZhbHNlLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9FVkVOKTsKKyAgKG5ldyBUZXN0KCJwbHUwMzAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjI0IikpLnBsdXMobWNoZTEpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4yIik7CisgIChuZXcgVGVzdCgicGx1MDMxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4yNSIpKS5wbHVzKG1jaGUxKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMiIpOworICAobmV3IFRlc3QoInBsdTAzMiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMjYiKSkucGx1cyhtY2hlMSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjMiKTsKKyAgKG5ldyBUZXN0KCJwbHUwMzMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjE0IikpLnBsdXMobWNoZTEpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xIik7CisgIChuZXcgVGVzdCgicGx1MDM0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4xNSIpKS5wbHVzKG1jaGUxKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMiIpOworICAobmV3IFRlc3QoInBsdTAzNSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMTYiKSkucGx1cyhtY2hlMSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjIiKTsKKyAgCisgIChuZXcgVGVzdCgicGx1MDQwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4yNTEiKSkucGx1cyhtY2hlMSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjMiKTsKKyAgKG5ldyBUZXN0KCJwbHUwNDEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjE1MSIpKS5wbHVzKG1jaGUxKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMiIpOworICAKKyAgKG5ldyBUZXN0KCJwbHUwNTAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMC4yNCIpKS5wbHVzKG1jaGUxKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjIiKTsKKyAgKG5ldyBUZXN0KCJwbHUwNTEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMC4yNSIpKS5wbHVzKG1jaGUxKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjIiKTsKKyAgKG5ldyBUZXN0KCJwbHUwNTIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMC4yNiIpKS5wbHVzKG1jaGUxKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjMiKTsKKyAgKG5ldyBUZXN0KCJwbHUwNTMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMC4xNCIpKS5wbHVzKG1jaGUxKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjEiKTsKKyAgKG5ldyBUZXN0KCJwbHUwNTQiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMC4xNSIpKS5wbHVzKG1jaGUxKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjIiKTsKKyAgKG5ldyBUZXN0KCJwbHUwNTUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMC4xNiIpKS5wbHVzKG1jaGUxKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjIiKTsKKyAgCisgIC8vIG1vcmUgZml4ZWQsIHBvdGVudGlhbCBMSFMgc3dhcHMgaWYgZG9uZSBieSBhZGQgMAorICAobmV3IFRlc3QoInBsdTA2MCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi01NjI2N0UtMTAiKSkucGx1cygpLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuMDAwMDA1NjI2NyIpOworICAobmV3IFRlc3QoInBsdTA2MSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi01NjI2N0UtNSIpKS5wbHVzKCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC41NjI2NyIpOworICAobmV3IFRlc3QoInBsdTA2MiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi01NjI2N0UtMiIpKS5wbHVzKCkudG9TdHJpbmcoKSkuZXF1YWxzKCItNTYyLjY3Iik7CisgIChuZXcgVGVzdCgicGx1MDYzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTU2MjY3RS0xIikpLnBsdXMoKS50b1N0cmluZygpKS5lcXVhbHMoIi01NjI2LjciKTsKKyAgKG5ldyBUZXN0KCJwbHUwNjUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItNTYyNjdFLTAiKSkucGx1cygpLnRvU3RyaW5nKCkpLmVxdWFscygiLTU2MjY3Iik7CisgIAorICB0cnl7Y2hlY2tudWxsOmRveworICAgdGVuLnBsdXMoKGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQpbnVsbCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAkNjUpeworICAgZmxhZz10cnVlOworICB9LypjaGVja251bGwqLworICAobmV3IFRlc3QoInBsdTEwMCIpKS5vaz1mbGFnOworICAKKyAgdHJ5e2NoZWNrZGlnaXRzOmRveworICAgdGVubG9uZy5wbHVzKG1jbGQpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkNjYpe2FlPSQ2NjsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJUb28gbWFueSBkaWdpdHM6IisiICIrdGVubG9uZy50b1N0cmluZygpKTsKKyAgfS8qY2hlY2tkaWdpdHMqLworICAobmV3IFRlc3QoInBsdTEwMSIpKS5vaz1mbGFnOworICBzdW1tYXJ5KCJwbHVzIik7CisgIHJldHVybjt9CisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIAorIC8qKiBUZXN0IHRoZSB7QGxpbmsgQmlnRGVjaW1hbCNwb3d9IG1ldGhvZC4gKi8KKyAKKyBwdWJsaWMgdm9pZCBkaWFncG93KCl7CisgIGJvb2xlYW4gZmxhZzsKKyAgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIHg7CisgIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCB0ZW1wOworICBpbnQgbj0wOworICBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgdng7CisgIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCB2bjsKKyAgamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gYWU9bnVsbDsKKyAgZmxhZz10cnVlOworICAobmV3IFRlc3QoInBvdzAwMSIpKS5vaz0iMSIuZXF1YWxzKChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjMiKSkucG93KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSxtY2RlZikudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgicG93MDAyIikpLm9rPSIwLjMiLmVxdWFscygobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4zIikpLnBvdyhuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxIiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoInBvdzAwMyIpKS5vaz0iMC4zIi5lcXVhbHMoKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMyIpKS5wb3cobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS4wMCIpLG1jZGVmKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJwb3cwMDQiKSkub2s9IjAuMDkiLmVxdWFscygobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4zIikpLnBvdyhuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyLjAwIiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoInBvdzAwNSIpKS5vaz0iMC4wOSIuZXF1YWxzKChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjMiKSkucG93KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIuMDAwMDAwMDAwIiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoInBvdzAwNiIpKS5vaz0oIjFFLTgiKS5lcXVhbHMoKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnBvdyhuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItOCIpLG1jZGVmKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJwb3cwMDciKSkub2s9KCIxRS03IikuZXF1YWxzKChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMCIpKS5wb3cobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTciKSxtY2RlZikudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgicG93MDA4IikpLm9rPSIwLjAwMDAwMSIuZXF1YWxzKChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMCIpKS5wb3cobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTYiKSxtY2RlZikudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgicG93MDA5IikpLm9rPSIwLjAwMDAxIi5lcXVhbHMoKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnBvdyhuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItNSIpLG1jZGVmKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJwb3cwMTAiKSkub2s9IjAuMDAwMSIuZXF1YWxzKChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMCIpKS5wb3cobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTQiKSxtY2RlZikudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgicG93MDExIikpLm9rPSIwLjAwMSIuZXF1YWxzKChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMCIpKS5wb3cobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTMiKSxtY2RlZikudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgicG93MDEyIikpLm9rPSIwLjAxIi5lcXVhbHMoKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnBvdyhuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMiIpLG1jZGVmKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJwb3cwMTMiKSkub2s9IjAuMSIuZXF1YWxzKChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMCIpKS5wb3cobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTEiKSxtY2RlZikudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgicG93MDE0IikpLm9rPSIxIi5lcXVhbHMoKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnBvdyhuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwIiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoInBvdzAxNSIpKS5vaz0iMTAiLmVxdWFscygobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAiKSkucG93KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSxtY2RlZikudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgicG93MDE2IikpLm9rPSIxMDAwMDAwMDAiLmVxdWFscygobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAiKSkucG93KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjgiKSxtY2RlZikudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgicG93MDE3IikpLm9rPSgiMUUrOSIpLmVxdWFscygobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAiKSkucG93KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjkiKSxtY2RlZikudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgicG93MDE4IikpLm9rPSgiMUUrOTkiKS5lcXVhbHMoKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnBvdyhuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5OSIpLG1jZGVmKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJwb3cwMTkiKSkub2s9KCIxRSs5OTk5OTk5OTkiKS5lcXVhbHMoKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnBvdyhuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5OTk5OTk5OTkiKSxtY2RlZikudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgicG93MDIwIikpLm9rPSgiMUUrOTk5OTk5OTk4IikuZXF1YWxzKChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMCIpKS5wb3cobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOTk5OTk5OTk4IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoInBvdzAyMSIpKS5vaz0oIjFFKzk5OTk5OTk5NyIpLmVxdWFscygobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAiKSkucG93KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjk5OTk5OTk5NyIpLG1jZGVmKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJwb3cwMjIiKSkub2s9KCIxRSszMzMzMzMzMzMiKS5lcXVhbHMoKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnBvdyhuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzMzMzMzMzMzMiKSxtY2RlZikudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgicG93MDIzIikpLm9rPSgiMUUtMzMzMzMzMzMzIikuZXF1YWxzKChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMCIpKS5wb3cobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTMzMzMzMzMzMyIpLG1jZGVmKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJwb3cwMjQiKSkub2s9KCIxRS05OTk5OTk5OTgiKS5lcXVhbHMoKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnBvdyhuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItOTk5OTk5OTk4IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoInBvdzAyNSIpKS5vaz0oIjFFLTk5OTk5OTk5OSIpLmVxdWFscygobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAiKSkucG93KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi05OTk5OTk5OTkiKSxtY2RlZikudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgicG93MDI2IikpLm9rPSIwLjUiLmVxdWFscygobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMiIpKS5wb3cobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTEiKSxtY2RlZikudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgicG93MDI3IikpLm9rPSIwLjI1Ii5lcXVhbHMoKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkucG93KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0yIiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoInBvdzAyOCIpKS5vaz0iMC4wNjI1Ii5lcXVhbHMoKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkucG93KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi00IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAKKyAgKG5ldyBUZXN0KCJwb3cwNTAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwIikpLnBvdyhuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoInBvdzA1MSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkucG93KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgicG93MDUyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMCIpKS5wb3cobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMiIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJwb3cwNTMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxIikpLnBvdyhuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoInBvdzA1NCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkucG93KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgicG93MDU1IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMSIpKS5wb3cobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMiIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJwb3cwNTYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjMiKSkucG93KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgicG93MDU3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAiKSkucG93KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjk5OTk5OTk5OSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjFFKzk5OTk5OTk5OSIpOworICAobmV3IFRlc3QoInBvdzA1OCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnBvdyhuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5OTk5OTk5OTgiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxRSs5OTk5OTk5OTgiKTsKKyAgKG5ldyBUZXN0KCJwb3cwNTkiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMCIpKS5wb3cobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOTk5OTk5OTk3IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMUUrOTk5OTk5OTk3Iik7CisgIChuZXcgVGVzdCgicG93MDYwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAiKSkucG93KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMzMzMzMzMzMyIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjFFKzMzMzMzMzMzMyIpOworICAobmV3IFRlc3QoInBvdzA2MSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnBvdyhuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI3NyIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjFFKzc3Iik7CisgIChuZXcgVGVzdCgicG93MDYyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAiKSkucG93KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIyIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMUUrMjIiKTsKKyAgKG5ldyBUZXN0KCJwb3cwNjMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMCIpKS5wb3cobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTc3IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMUUtNzciKTsKKyAgKG5ldyBUZXN0KCJwb3cwNjQiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMCIpKS5wb3cobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTIyIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMUUtMjIiKTsKKyAgKG5ldyBUZXN0KCJwb3cwNjUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyIikpLnBvdyhuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNSIpOworICAobmV3IFRlc3QoInBvdzA2NiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkucG93KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0yIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4yNSIpOworICAobmV3IFRlc3QoInBvdzA2NyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkucG93KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi00IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wNjI1Iik7CisgIChuZXcgVGVzdCgicG93MDY4IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNi4wIikpLnBvdyhuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMzYiKTsKKyAgKG5ldyBUZXN0KCJwb3cwNjkiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMyIpKS5wb3cobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMiIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjkiKTsvKiBmcm9tIGJvb2sgKi8KKyAgKG5ldyBUZXN0KCJwb3cwNzAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyIikpLnBvdyhuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyIiksbWNkZWYpLnBvdyhuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiNjQiKTsvKiBmcm9tIGJvb2sgKi8KKyAgCisgIC8vIDE5OTguMTIuMTQgTmV4dCB0ZXN0IHJlbW92ZWQgYXMgcG93KCkgbm8gbG9uZ2VyIHJvdW5kcyBSSFMgW2FzIHBlciBBTlNJXQorICAvLyBUZXN0KCdwb3cwNzEnKS5vaz1CaWdEZWNpbWFsKCcyJykucG93KEJpZ0RlY2ltYWwoJzIuMDAwMDAwMDAxJyksbWNkZWYpLnRvU3RyaW5nID09ICc0Jy8qIGNoZWNrIGlucHV0IHJvdW5kaW5nICovCisgIAorICAvKiBHZW5lcmFsIHRlc3RzIGZyb20gb3JpZ2luYWwgUmV4eCBkaWFnbm9zdGljcyAqLworICB4PW5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuNSIpOworICB0ZW1wPWNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbC5PTkU7CisgIGZsYWc9dHJ1ZTsKKyAge249MTtuOmZvcig7bjw9MTA7bisrKXsKKyAgIHRlbXA9dGVtcC5tdWx0aXBseSh4KS5kaXZpZGUoY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsLk9ORSk7CisgICBmbGFnPWZsYWcmKHgucG93KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwobiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscyh0ZW1wLnRvU3RyaW5nKCkpOworICAgfQorICB9LypuKi8KKyAgKG5ldyBUZXN0KCJwb3cwODAiKSkub2s9ZmxhZzsKKyAgCisgIHg9bmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMiIpOworICB0ZW1wPWNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbC5PTkU7CisgIGZsYWc9dHJ1ZTsKKyAge249MTtuOmZvcig7bjw9Mjk7bisrKXsKKyAgIHRlbXA9dGVtcC5tdWx0aXBseSh4KS5kaXZpZGUoY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsLk9ORSk7CisgICBmbGFnPWZsYWcmKHgucG93KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwobiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscyh0ZW1wLnRvU3RyaW5nKCkpOworICAgZmxhZz1mbGFnJih4LnBvdyhuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKChpbnQpLW4pLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsLk9ORS5kaXZpZGUodGVtcCxtY2RlZikudG9TdHJpbmcoKSk7CisgICAvKiBOb3RlIHRoYXQgcm91bmRpbmcgZXJyb3JzIGFyZSBwb3NzaWJsZSBmb3IgbGFyZ2VyICJuIiAqLworICAgLyogZHVlIHRvIHRoZSBpbmZvcm1hdGlvbiBjb250ZW50IG9mIHRoZSBleHBvbmVudCAgICAgICAgKi8KKyAgIH0KKyAgfS8qbiovCisgIChuZXcgVGVzdCgicG93MDgxIikpLm9rPWZsYWc7CisgIAorICAvKiBUaGUgVmllbm5hIGNhc2UuICBDaGVja3MgYm90aCBzZXR1cCBhbmQgMS9hY2Mgd29ya2luZyBwcmVjaXNpb24gKi8KKyAgLy8gTW9kaWZpZWQgMTk5OC4xMi4xNCBhcyBSSFMgbm8gbG9uZ2VyIHJvdW5kZWQgYmVmb3JlIHVzZSAobXVzdCBmaXQpCisgIC8vIE1vZGlmaWVkIDE5OTAuMDIuMDQgYXMgTEhTIGlzIG5vdyByb3VuZGVkIChpbnN0ZWFkIG9mIHRydW5jYXRlZCB0byBndWFyZCkKKyAgdng9bmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTIzNDU2Nzg5RSsxMCIpOyAvLyBsaHMgLi4gcm91bmRlZCB0byAxLjIzRSsxOAorICB2bj1uZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMS4yMzAwMGUrMiIpOyAvLyByaHMgLi4gW3dhczogLTEuMjM0NTVlKzIsIHJvdW5kcyB0byAtMTIzXQorICAobmV3IFRlc3QoInBvdzA5MCIpKS5vaz0odngucG93KHZuLG1jMykudG9TdHJpbmcoKSkuZXF1YWxzKCI4Ljc0RS0yMjI2Iik7CisgIAorICAvLy0gZml4ZWQgcG9pbnQgdmVyc2lvbnMgLS0tCisgIChuZXcgVGVzdCgicG93MTAxIikpLm9rPSIxIi5lcXVhbHMoKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMyIpKS5wb3cobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMCIpKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJwb3cxMDIiKSkub2s9IjAuMyIuZXF1YWxzKChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjMiKSkucG93KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgicG93MTAzIikpLm9rPSIwLjMiLmVxdWFscygobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4zIikpLnBvdyhuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjAwIikpLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoInBvdzEwNCIpKS5vaz0iMC4wOSIuZXF1YWxzKChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjMiKSkucG93KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgicG93MTA1IikpLm9rPSIwLjA5Ii5lcXVhbHMoKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMyIpKS5wb3cobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMi4wMCIpKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJwb3cxMDYiKSkub2s9IjEwIi5lcXVhbHMoKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnBvdyhuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxIikpLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoInBvdzEwNyIpKS5vaz0iMTAwMDAwMDAwIi5lcXVhbHMoKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnBvdyhuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI4IikpLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoInBvdzEwOCIpKS5vaz0iMTAwMDAwMDAwMCIuZXF1YWxzKChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMCIpKS5wb3cobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOSIpKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJwb3cxMDkiKSkub2s9IjEwMDAwMDAwMDAwIi5lcXVhbHMoKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnBvdyhuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMCIpKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJwb3cxMTAiKSkub2s9IjEiLmVxdWFscygobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMiIpKS5wb3cobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMCIpKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJwb3cxMTEiKSkub2s9IjE2Ii5lcXVhbHMoKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkucG93KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjQiKSkudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgicG93MTEyIikpLm9rPSIyNTYiLmVxdWFscygobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMiIpKS5wb3cobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOCIpKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJwb3cxMTMiKSkub2s9IjEwMjQiLmVxdWFscygobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMiIpKS5wb3cobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAiKSkudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgicG93MTE0IikpLm9rPSIxLjA1MTAxMDA1MDEiLmVxdWFscygobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS4wMSIpKS5wb3cobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNSIpKS50b1N0cmluZygpKTsKKyAgCisgIChuZXcgVGVzdCgicG93MTIwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMCIpKS5wb3cobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJwb3cxMjEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwIikpLnBvdyhuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoInBvdzEyMiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkucG93KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgicG93MTIzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMSIpKS5wb3cobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJwb3cxNDQiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxIikpLnBvdyhuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoInBvdzEyNSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkucG93KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgicG93MTI2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4zIikpLnBvdyhuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoInBvdzEyNyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnBvdyhuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI3IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAwMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJwb3cxMjgiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI2LjAiKSkucG93KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIzNi4wMCIpOworICAobmV3IFRlc3QoInBvdzEyOSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjYuMDAiKSkucG93KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIzNi4wMDAwIik7CisgIChuZXcgVGVzdCgicG93MTMwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNi4wMDAiKSkucG93KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIzNi4wMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJwb3cxMzEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMyIpKS5wb3cobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjkiKTsKKyAgKG5ldyBUZXN0KCJwb3cxMzIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyIikpLnBvdyhuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyIikpLnBvdyhuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzIikpLnRvU3RyaW5nKCkpLmVxdWFscygiNjQiKTsKKyAgCisgIC8qIGVycm9ycyAqLworICB0cnl7Y2hlY2tudWxsOmRveworICAgdGVuLnBvdygoY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKW51bGwpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24gJDY3KXsKKyAgIGZsYWc9dHJ1ZTsKKyAgfS8qY2hlY2tudWxsKi8KKyAgKG5ldyBUZXN0KCJwb3cxNTAiKSkub2s9ZmxhZzsKKyAgdHJ5e2NoZWNrbnVsbDI6ZG97CisgICB0ZW4ucG93KHRlbiwoY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dCludWxsKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uICQ2OCl7CisgICBmbGFnPXRydWU7CisgIH0vKmNoZWNrbnVsbDIqLworICAobmV3IFRlc3QoInBvdzE1MSIpKS5vaz1mbGFnOworICAKKyAgZmxhZz10cnVlOworICB0cnl7Y2hlY2tkaWdpdHM6ZG97CisgICB0ZW5sb25nLnBvdyhjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwuT05FLG1jbGQpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkNjkpe2FlPSQ2OTsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJUb28gbWFueSBkaWdpdHM6IisiICIrdGVubG9uZy50b1N0cmluZygpKTsKKyAgfS8qY2hlY2tkaWdpdHMqLworICAobmV3IFRlc3QoInBvdzE1MiIpKS5vaz1mbGFnOworICAKKyAgdHJ5e2NoZWNrZGlnaXRzOmRveworICAgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsLk9ORS5wb3codGVubG9uZyxtY2xkKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDcwKXthZT0kNzA7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiVG9vIG1hbnkgZGlnaXRzOiIrIiAiK3RlbmxvbmcudG9TdHJpbmcoKSk7CisgIH0vKmNoZWNrZGlnaXRzKi8KKyAgKG5ldyBUZXN0KCJwb3cxNTMiKSkub2s9ZmxhZzsKKyAgCisgIHRyeXtjaGVja3Bvczpkb3sKKyAgIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbC5PTkUucG93KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi03MSIpKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDcxKXthZT0kNzE7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiTmVnYXRpdmUgcG93ZXI6IC03MSIpOworICB9LypjaGVja3BvcyovCisgIChuZXcgVGVzdCgicG93MTU0IikpLm9rPWZsYWc7CisgIAorICB0cnl7Y2hlY2t3aG9sZTpkb3sKKyAgIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbC5PTkUucG93KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQiKSxtYzMpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkNzIpe2FlPSQ3MjsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJUb28gbWFueSBkaWdpdHM6IDEyMzQiKTsKKyAgfS8qY2hlY2t3aG9sZSovCisgIChuZXcgVGVzdCgicG93MTU1IikpLm9rPWZsYWc7CisgIAorICB0cnl7Y2hlY2t3aG9sZTE6ZG97CisgICBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwuT05FLnBvdyhuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMi4zNGUrMiIpLG1jMyk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQ3Myl7YWU9JDczOworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIlRvbyBtYW55IGRpZ2l0czogMS4yMzRFKzMiKTsKKyAgfS8qY2hlY2t3aG9sZTEqLworICAobmV3IFRlc3QoInBvdzE1NiIpKS5vaz1mbGFnOworICAKKyAgdHJ5e2NoZWNrd2hvbGUyOmRveworICAgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsLk9ORS5wb3cobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTIuNCIpLG1jZGVmKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDc0KXthZT0kNzQ7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiRGVjaW1hbCBwYXJ0IG5vbi16ZXJvOiAxMi40Iik7CisgIH0vKmNoZWNrd2hvbGUyKi8KKyAgKG5ldyBUZXN0KCJwb3cxNTciKSkub2s9ZmxhZzsKKyAgCisgIHRyeXtjaGVja3dob2xlMzpkb3sKKyAgIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbC5PTkUucG93KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDEiKSxtY2RlZik7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQ3NSl7YWU9JDc1OworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIkRlY2ltYWwgcGFydCBub24temVybzogMS4wMSIpOworICB9LypjaGVja3dob2xlMyovCisgIChuZXcgVGVzdCgicG93MTU4IikpLm9rPWZsYWc7CisgIAorICB0cnl7Y2hlY2t3aG9sZTQ6ZG97CisgICBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwuT05FLnBvdyhuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjAwMDAwMDAwMSIpLG1jZGVmKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDc2KXthZT0kNzY7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiRGVjaW1hbCBwYXJ0IG5vbi16ZXJvOiAxLjAwMDAwMDAwMSIpOworICB9LypjaGVja3dob2xlNCovCisgIChuZXcgVGVzdCgicG93MTU5IikpLm9rPWZsYWc7CisgIAorICB0cnl7Y2hlY2t3aG9sZTU6ZG97CisgICBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwuT05FLnBvdyhuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjAwMDAwMDAwMSIpLG1jMyk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQ3Nyl7YWU9JDc3OworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIkRlY2ltYWwgcGFydCBub24temVybzogMS4wMDAwMDAwMDEiKTsKKyAgfS8qY2hlY2t3aG9sZTUqLworICAobmV3IFRlc3QoInBvdzE2MCIpKS5vaz1mbGFnOworICAKKyAgdHJ5e2NoZWNrd2hvbGU2OmRveworICAgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsLk9ORS5wb3cobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNS42N0UtOTg3NjU0MzIxIiksbWMzKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDc4KXthZT0kNzg7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiRGVjaW1hbCBwYXJ0IG5vbi16ZXJvOiA1LjY3RS05ODc2NTQzMjEiKTsKKyAgfS8qY2hlY2t3aG9sZTYqLworICAobmV3IFRlc3QoInBvdzE2MSIpKS5vaz1mbGFnOworICAKKyAgc3VtbWFyeSgicG93Iik7CisgIHJldHVybjt9CisKKyAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyAKKyAvKiogVGVzdCB0aGUge0BsaW5rIEJpZ0RlY2ltYWwjcmVtYWluZGVyfSBtZXRob2QuICovCisgCisgcHVibGljIHZvaWQgZGlhZ3JlbWFpbmRlcigpeworICBib29sZWFuIGZsYWc9ZmFsc2U7CisgIGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uIGFlPW51bGw7CisgIAorICAobmV3IFRlc3QoInJlbTAwMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgicmVtMDAyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNSIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJyZW0wMDMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMyIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIzIik7CisgIChuZXcgVGVzdCgicmVtMDA0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTMiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjUwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMTMiKTsKKyAgKG5ldyBUZXN0KCJyZW0wMDUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMyIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMTMiKTsKKyAgKG5ldyBUZXN0KCJyZW0wMDYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMyIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAwMCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEzIik7CisgIChuZXcgVGVzdCgicmVtMDA3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLjEzIikpLnJlbWFpbmRlcihvbmUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xMyIpOworICAobmV3IFRlc3QoInJlbTAwOCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMTMzIikpLnJlbWFpbmRlcihvbmUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xMzMiKTsKKyAgKG5ldyBUZXN0KCJyZW0wMDkiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjEwMzMiKSkucmVtYWluZGVyKG9uZSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEwMzMiKTsKKyAgKG5ldyBUZXN0KCJyZW0wMTAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjAzMyIpKS5yZW1haW5kZXIob25lKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDMzIik7CisgIChuZXcgVGVzdCgicmVtMDExIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAuMzMiKSkucmVtYWluZGVyKG9uZSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjMzIik7CisgIChuZXcgVGVzdCgicmVtMDEyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAuMzMiKSkucmVtYWluZGVyKGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbC5URU4pLnRvU3RyaW5nKCkpLmVxdWFscygiMC4zMyIpOworICAobmV3IFRlc3QoInJlbTAxMyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwMy4zIikpLnJlbWFpbmRlcihjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwuT05FKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMyIpOworICAobmV3IFRlc3QoInJlbTAxNCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEzMyIpKS5yZW1haW5kZXIoY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsLlRFTikudG9TdHJpbmcoKSkuZXF1YWxzKCIzIik7CisgIChuZXcgVGVzdCgicmVtMDE1IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAzMyIpKS5yZW1haW5kZXIoY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsLlRFTikudG9TdHJpbmcoKSkuZXF1YWxzKCIzIik7CisgIChuZXcgVGVzdCgicmVtMDE2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAzMyIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCg1MCksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMzMiKTsKKyAgKG5ldyBUZXN0KCJyZW0wMTciKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMDEuMCIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgzKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjAiKTsKKyAgKG5ldyBUZXN0KCJyZW0wMTgiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMDIuMCIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgzKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgicmVtMDE5IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAzLjAiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoMyksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wIik7CisgIChuZXcgVGVzdCgicmVtMDIwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMi40MCIpKS5yZW1haW5kZXIob25lKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNDAiKTsKKyAgKG5ldyBUZXN0KCJyZW0wMjEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyLjQwMCIpKS5yZW1haW5kZXIob25lKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNDAwIik7CisgIChuZXcgVGVzdCgicmVtMDIyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMi40IikpLnJlbWFpbmRlcihvbmUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC40Iik7CisgIChuZXcgVGVzdCgicmVtMDIzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMi40IikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKDIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNCIpOworICAobmV3IFRlc3QoInJlbTAyNCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIuNDAwIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKDIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNDAwIik7CisgIChuZXcgVGVzdCgicmVtMDI1IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMSIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4zIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xIik7CisgIChuZXcgVGVzdCgicmVtMDI2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMSIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4zMCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMTAiKTsKKyAgKG5ldyBUZXN0KCJyZW0wMjciKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjMwMCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMTAwIik7CisgIChuZXcgVGVzdCgicmVtMDI4IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMSIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4zMDAwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xMDAwIik7CisgIChuZXcgVGVzdCgicmVtMDI5IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS4wIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjMiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEiKTsKKyAgKG5ldyBUZXN0KCJyZW0wMzAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjAwIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjMiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEwIik7CisgIChuZXcgVGVzdCgicmVtMDMxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS4wMDAiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMyIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMTAwIik7CisgIChuZXcgVGVzdCgicmVtMDMyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS4wMDAwIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjMiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEwMDAiKTsKKyAgKG5ldyBUZXN0KCJyZW0wMzMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjUiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIuMDAxIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC41Iik7CisgIAorICAobmV3IFRlc3QoInJlbTA0MCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuNSIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC41MDAwMDAxIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC41Iik7CisgIChuZXcgVGVzdCgicmVtMDQxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC41IikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjUwMDAwMDAxIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC41Iik7CisgIChuZXcgVGVzdCgicmVtMDQyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC41IikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjUwMDAwMDAwMSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNSIpOworICAobmV3IFRlc3QoInJlbTA0MyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuNSIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC41MDAwMDAwMDAxIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoInJlbTA0NCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuNSIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC41MDAwMDAwMDAwMSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJyZW0wNDUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjUiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuNDk5OTk5OSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjFFLTciKTsKKyAgKG5ldyBUZXN0KCJyZW0wNDYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjUiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuNDk5OTk5OTkiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxRS04Iik7CisgIChuZXcgVGVzdCgicmVtMDQ3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC41IikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjQ5OTk5OTk5OSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjFFLTkiKTsKKyAgKG5ldyBUZXN0KCJyZW0wNDgiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjUiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuNDk5OTk5OTk5OSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJyZW0wNDkiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjUiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuNDk5OTk5OTk5OTkiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIAorICAobmV3IFRlc3QoInJlbTA1MCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDMiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjciKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAzIik7CisgIChuZXcgVGVzdCgicmVtMDUxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNSIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMiIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJyZW0wNTIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI0LjEiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEiKTsKKyAgKG5ldyBUZXN0KCJyZW0wNTMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI0LjAxIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMSIpOworICAobmV3IFRlc3QoInJlbTA1NCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjQuMDAxIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDEiKTsKKyAgKG5ldyBUZXN0KCJyZW0wNTUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI0LjAwMDEiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMDEiKTsKKyAgKG5ldyBUZXN0KCJyZW0wNTYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI0LjAwMDAxIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDAwMSIpOworICAobmV3IFRlc3QoInJlbTA1NyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjQuMDAwMDAxIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDAwMDEiKTsKKyAgKG5ldyBUZXN0KCJyZW0wNTgiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI0LjAwMDAwMDEiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxRS03Iik7CisgIAorICAobmV3IFRlc3QoInJlbTA2MCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuMiIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC43MzQ1IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC40NjU1Iik7CisgIChuZXcgVGVzdCgicmVtMDYxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC44IikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMiIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuOCIpOworICAobmV3IFRlc3QoInJlbTA2MiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuOCIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4yIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoInJlbTA2MyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuOCIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4zIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4yIik7CisgIChuZXcgVGVzdCgicmVtMDY0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC44MDAiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEyIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC44MDAiKTsKKyAgKG5ldyBUZXN0KCJyZW0wNjUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjgwMCIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS43IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC44MDAiKTsKKyAgKG5ldyBUZXN0KCJyZW0wNjYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyLjQwMCIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgyKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjQwMCIpOworICAKKyAgLy8gTUMgLS0KKyAgKG5ldyBUZXN0KCJyZW0wNzEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyLjQwMCIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgyKSxtYzYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC40MDAiKTsKKyAgKG5ldyBUZXN0KCJyZW0wNzIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMjM0NTY3ODkwMDAwMCIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTJlKzEyIiksbWMzKS50b1N0cmluZygpKS5lcXVhbHMoIjNFKzExIik7CisgIAorICAvLyBGaXhlZCAtLQorICAobmV3IFRlc3QoInJlbTEwMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgicmVtMTAyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNSIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJyZW0xMDMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMyIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIzIik7CisgIChuZXcgVGVzdCgicmVtMTA0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTMiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjUwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMTMiKTsKKyAgKG5ldyBUZXN0KCJyZW0xMDUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMyIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMTMiKTsKKyAgKG5ldyBUZXN0KCJyZW0xMDYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMyIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEzIik7CisgIChuZXcgVGVzdCgicmVtMTA3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLjEzIikpLnJlbWFpbmRlcihvbmUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xMyIpOworICAobmV3IFRlc3QoInJlbTEwOCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMTMzIikpLnJlbWFpbmRlcihvbmUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xMzMiKTsKKyAgKG5ldyBUZXN0KCJyZW0xMDkiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjEwMzMiKSkucmVtYWluZGVyKG9uZSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEwMzMiKTsKKyAgKG5ldyBUZXN0KCJyZW0xMTAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjAzMyIpKS5yZW1haW5kZXIob25lKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDMzIik7CisgIChuZXcgVGVzdCgicmVtMTExIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAuMzMiKSkucmVtYWluZGVyKG9uZSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjMzIik7CisgIChuZXcgVGVzdCgicmVtMTEyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAuMzMiKSkucmVtYWluZGVyKGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbC5URU4pLnRvU3RyaW5nKCkpLmVxdWFscygiMC4zMyIpOworICAobmV3IFRlc3QoInJlbTExMyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwMy4zIikpLnJlbWFpbmRlcihjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwuT05FKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMyIpOworICAobmV3IFRlc3QoInJlbTExNCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEzMyIpKS5yZW1haW5kZXIoY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsLlRFTikudG9TdHJpbmcoKSkuZXF1YWxzKCIzIik7CisgIChuZXcgVGVzdCgicmVtMTE1IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAzMyIpKS5yZW1haW5kZXIoY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsLlRFTikudG9TdHJpbmcoKSkuZXF1YWxzKCIzIik7CisgIChuZXcgVGVzdCgicmVtMTE2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAzMyIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCg1MCkpLnRvU3RyaW5nKCkpLmVxdWFscygiMzMiKTsKKyAgKG5ldyBUZXN0KCJyZW0xMTciKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMDEuMCIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgzKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjAiKTsKKyAgKG5ldyBUZXN0KCJyZW0xMTgiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMDIuMCIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgzKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgicmVtMTE5IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAzLjAiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoMykpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wIik7CisgIChuZXcgVGVzdCgicmVtMTIwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMi40MCIpKS5yZW1haW5kZXIob25lKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNDAiKTsKKyAgKG5ldyBUZXN0KCJyZW0xMjEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyLjQwMCIpKS5yZW1haW5kZXIob25lKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNDAwIik7CisgIChuZXcgVGVzdCgicmVtMTIyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMi40IikpLnJlbWFpbmRlcihvbmUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC40Iik7CisgIChuZXcgVGVzdCgicmVtMTIzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMi40IikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKDIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNCIpOworICAobmV3IFRlc3QoInJlbTEyNCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIuNDAwIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKDIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNDAwIik7CisgIChuZXcgVGVzdCgicmVtMTI1IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMSIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4zIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xIik7CisgIChuZXcgVGVzdCgicmVtMTI2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMSIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4zMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMTAiKTsKKyAgKG5ldyBUZXN0KCJyZW0xMjciKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjMwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMTAwIik7CisgIChuZXcgVGVzdCgicmVtMTI4IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMSIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4zMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xMDAwIik7CisgIChuZXcgVGVzdCgicmVtMTI5IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS4wIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEiKTsKKyAgKG5ldyBUZXN0KCJyZW0xMzAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjAwIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEwIik7CisgIChuZXcgVGVzdCgicmVtMTMxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS4wMDAiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMTAwIik7CisgIChuZXcgVGVzdCgicmVtMTMyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS4wMDAwIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEwMDAiKTsKKyAgKG5ldyBUZXN0KCJyZW0xMzMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjUiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIuMDAxIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC41Iik7CisgIChuZXcgVGVzdCgicmVtMTM0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC41IikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjUwMDAwMDAwMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNSIpOworICAobmV3IFRlc3QoInJlbTEzNSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuNSIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC41MDAwMDAwMDAxIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC41Iik7CisgIChuZXcgVGVzdCgicmVtMTM2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wMyIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDMiKTsKKyAgKG5ldyBUZXN0KCJyZW0xMzciKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI1IikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoInJlbTEzOCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjQuMSIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMSIpOworICAobmV3IFRlc3QoInJlbTEzOSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjQuMDEiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAxIik7CisgIChuZXcgVGVzdCgicmVtMTQwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNC4wMDEiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMSIpOworICAobmV3IFRlc3QoInJlbTE0MSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjQuMDAwMSIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwMSIpOworICAobmV3IFRlc3QoInJlbTE0MiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjQuMDAwMDEiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMDAxIik7CisgIChuZXcgVGVzdCgicmVtMTQzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNC4wMDAwMDEiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMDAwMSIpOworICAobmV3IFRlc3QoInJlbTE0NCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjQuMDAwMDAwMSIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwMDAwMSIpOyAvLyAxRS03LCBwbGFpbgorICAobmV3IFRlc3QoInJlbTE0NSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuMiIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC43MzQ1IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC40NjU1Iik7CisgIChuZXcgVGVzdCgicmVtMTQ2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC44IikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuOCIpOworICAobmV3IFRlc3QoInJlbTE0NyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuOCIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4yIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoInJlbTE0OCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuOCIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4zIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4yIik7CisgIChuZXcgVGVzdCgicmVtMTQ5IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC44MDAiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC44MDAiKTsKKyAgKG5ldyBUZXN0KCJyZW0xNTAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjgwMCIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS43IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC44MDAiKTsKKyAgKG5ldyBUZXN0KCJyZW0xNTEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyLjQwMCIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgyKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjQwMCIpOworICAKKyAgdHJ5e2NoZWNrbnVsbDpkb3sKKyAgIHRlbi5yZW1haW5kZXIoKGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCludWxsKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uICQ3OSl7CisgICBmbGFnPXRydWU7CisgIH0vKmNoZWNrbnVsbCovCisgIChuZXcgVGVzdCgicmVtMjAwIikpLm9rPWZsYWc7CisgIHRyeXtjaGVja251bGwyOmRveworICAgdGVuLnJlbWFpbmRlcih0ZW4sKGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQpbnVsbCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAkODApeworICAgZmxhZz10cnVlOworICB9LypjaGVja251bGwyKi8KKyAgKG5ldyBUZXN0KCJyZW0yMDEiKSkub2s9ZmxhZzsKKyAgCisgIHRyeXtjaGVja2RpZ2l0czpkb3sKKyAgIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbC5PTkUucmVtYWluZGVyKHRlbmxvbmcsbWNsZCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQ4MSl7YWU9JDgxOworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIlRvbyBtYW55IGRpZ2l0czoiKyIgIit0ZW5sb25nLnRvU3RyaW5nKCkpOworICB9LypjaGVja2RpZ2l0cyovCisgIChuZXcgVGVzdCgicmVtMjAyIikpLm9rPWZsYWc7CisgIAorICB0cnl7Y2hlY2tkaWdpdHM6ZG97CisgICB0ZW5sb25nLnJlbWFpbmRlcihvbmUsbWNsZCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQ4Mil7YWU9JDgyOworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIlRvbyBtYW55IGRpZ2l0czoiKyIgIit0ZW5sb25nLnRvU3RyaW5nKCkpOworICB9LypjaGVja2RpZ2l0cyovCisgIChuZXcgVGVzdCgicmVtMjAzIikpLm9rPWZsYWc7CisgIAorICBzdW1tYXJ5KCJyZW1haW5kZXIiKTsKKyAgcmV0dXJuO30KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworIAorIC8qKiBUZXN0IHRoZSB7QGxpbmsgQmlnRGVjaW1hbCNzdWJ0cmFjdH0gbWV0aG9kLiAqLworIAorIHB1YmxpYyB2b2lkIGRpYWdzdWJ0cmFjdCgpeworICBib29sZWFuIGZsYWc9ZmFsc2U7CisgIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCBhbGhzOworICBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgYXJoczsKKyAgamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gYWU9bnVsbDsKKyAgCisgIC8vIFtmaXJzdCBncm91cCBhcmUgJ3F1aWNrIGNvbmZpZGVuY2UgY2hlY2snXQorICAobmV3IFRlc3QoInN1YjMwMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoMikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoMyksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEiKTsKKyAgKG5ldyBUZXN0KCJzdWIzMDIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI1Ljc1IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMuMyIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjIuNDUiKTsKKyAgKG5ldyBUZXN0KCJzdWIzMDMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI1IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0zIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiOCIpOworICAobmV3IFRlc3QoInN1YjMwNCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi01IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0zIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiLTIiKTsKKyAgKG5ldyBUZXN0KCJzdWIzMDUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItNyIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyLjUiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCItOS41Iik7CisgIChuZXcgVGVzdCgic3ViMzA2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC43IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMyIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNCIpOworICAobmV3IFRlc3QoInN1YjMwNyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuMyIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjMiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAiKTsKKyAgKG5ldyBUZXN0KCJzdWIzMDgiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjI1IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuMjUiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgic3ViMzA5IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS4yMzQ1Njc4OSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjAwMDAwMDAwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4yMzQ1Njc4OSIpOworICAKKyAgKG5ldyBUZXN0KCJzdWIzMTAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjIzNDU2Nzg5IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDAwMDAwODkiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjIzNDU2NzAwIik7CisgIAorICAobmV3IFRlc3QoInN1YjMxMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuNTU1NTU1NTU1OSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjAwMDAwMDAwMDEiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjU1NTU1NTU1NiIpOworICAKKyAgKG5ldyBUZXN0KCJzdWIzMTIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjU1NTU1NTU1NTkiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wMDAwMDAwMDA1IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC41NTU1NTU1NTYiKTsKKyAgCisgIChuZXcgVGVzdCgic3ViMzEzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC40NDQ0NDQ0NDQ0IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMTExMTExMTExMSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMzMzMzMzMzMzIik7CisgIAorICAobmV3IFRlc3QoInN1YjMxNCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDAwMDAwMDAwMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjAwMDAwMDAxIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC45OTk5OTk5OSIpOworICAKKyAgKG5ldyBUZXN0KCJzdWIzMTUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjQ0NDQ0NDQ0NDQ5OTkiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNDQ0NDQ0NDQ0Iik7CisgIAorICAobmV3IFRlc3QoInN1YjMxNiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuNDQ0NDQ0NDQ0NTAwMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC40NDQ0NDQ0NDUiKTsKKyAgCisgIAorICAobmV3IFRlc3QoInN1YjMxNyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjcwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEuMDAwMDAwMDBFKzEzIik7CisgIAorICAobmV3IFRlc3QoInN1YjMxOCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjcwMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMDAwMGUrOSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIi0xLjAwMDAwMDAwRSsxMyIpOworICAKKyAgKG5ldyBUZXN0KCJzdWIzMTkiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI3MDAwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEuMDAwMDAwMDBFKzEzIik7CisgIAorICAobmV3IFRlc3QoInN1YjMyMCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiLTkuOTk5OTk5OUUrMTIiKTsKKyAgCisgIChuZXcgVGVzdCgic3ViMzIxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNzAwMDAwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiLTkuOTk5OTk5M0UrMTIiKTsKKyAgCisgIC8vIHN5bW1ldHJ5OgorICAobmV3IFRlc3QoInN1YjMyMiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjcwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wMDAwMDAwMEUrMTMiKTsKKyAgCisgIChuZXcgVGVzdCgic3ViMzIzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNzAwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wMDAwMDAwMEUrMTMiKTsKKyAgCisgIChuZXcgVGVzdCgic3ViMzI0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNzAwMCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDAwMDAwMDBFKzEzIik7CisgIAorICAobmV3IFRlc3QoInN1YjMyNSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiOS45OTk5OTk5RSsxMiIpOworICAKKyAgKG5ldyBUZXN0KCJzdWIzMjYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMDAwMGUrOSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI3MDAwMDAiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCI5Ljk5OTk5OTNFKzEyIik7CisgIAorICAKKyAgLy8gW3NhbWUgd2l0aCBmaXhlZCBwb2ludCBhcml0aG1ldGljXQorICAobmV3IFRlc3QoInN1YjAwMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoMikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoMykpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEiKTsKKyAgKG5ldyBUZXN0KCJzdWIwMDIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI1Ljc1IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMuMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjIuNDUiKTsKKyAgKG5ldyBUZXN0KCJzdWIwMDMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI1IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0zIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOCIpOworICAobmV3IFRlc3QoInN1YjAwNCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi01IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0zIikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTIiKTsKKyAgKG5ldyBUZXN0KCJzdWIwMDUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItNyIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIyLjUiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItOS41Iik7CisgIChuZXcgVGVzdCgic3ViMDA2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC43IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNCIpOworICAobmV3IFRlc3QoInN1YjAwNyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuMyIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAiKTsKKyAgKG5ldyBUZXN0KCJzdWIwMDgiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjI1IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuMjUiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwIik7CisgIChuZXcgVGVzdCgic3ViMDA5IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wMiIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjAyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMCIpOworICAKKyAgKG5ldyBUZXN0KCJzdWIwMTAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjIzNDU2Nzg5IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDAwMDAwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjIzNDU2Nzg5Iik7CisgIAorICAobmV3IFRlc3QoInN1YjAxMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuMjM0NTY3ODkiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS4wMDAwMDA4OSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMjM0NTY3MDAiKTsKKyAgCisgIChuZXcgVGVzdCgic3ViMDEyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC41NTU1NTU1NTU5IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAwMDAwMDAwMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNTU1NTU1NTU1OCIpOworICAKKyAgKG5ldyBUZXN0KCJzdWIwMTMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjU1NTU1NTU1NTkiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wMDAwMDAwMDA1IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC41NTU1NTU1NTU0Iik7CisgIAorICAobmV3IFRlc3QoInN1YjAxNCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuNDQ0NDQ0NDQ0NCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjExMTExMTExMTEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjMzMzMzMzMzMzMiKTsKKyAgCisgIChuZXcgVGVzdCgic3ViMDE1IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS4wMDAwMDAwMDAwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAwMDAwMDEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjk5OTk5OTk5MDAiKTsKKyAgCisgIChuZXcgVGVzdCgic3ViMDE2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC40NDQ0NDQ0NDQ0OTk5IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjQ0NDQ0NDQ0NDQ5OTkiKTsKKyAgCisgIChuZXcgVGVzdCgic3ViMDE3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC40NDQ0NDQ0NDQ1MDAwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjQ0NDQ0NDQ0NDUwMDAiKTsKKyAgCisgIAorICAobmV3IFRlc3QoInN1YjAxOCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjcwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTk5OTk5OTk5OTk5MzAiKTsKKyAgCisgIChuZXcgVGVzdCgic3ViMDE5IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNzAwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTk5OTk5OTk5OTkzMDAiKTsKKyAgCisgIChuZXcgVGVzdCgic3ViMDIwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNzAwMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMDAwMGUrOSIpKS50b1N0cmluZygpKS5lcXVhbHMoIi05OTk5OTk5OTkzMDAwIik7CisgIAorICAobmV3IFRlc3QoInN1YjAyMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTk5OTk5OTk5MzAwMDAiKTsKKyAgCisgIChuZXcgVGVzdCgic3ViMDIyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNzAwMDAwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTk5OTk5OTkzMDAwMDAiKTsKKyAgCisgIC8vIHN5bW1ldHJ5OgorICAobmV3IFRlc3QoInN1YjAyMyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjcwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTk5OTk5OTk5OTkzMCIpOworICAKKyAgKG5ldyBUZXN0KCJzdWIwMjQiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMDAwMGUrOSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI3MDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5OTk5OTk5OTk5MzAwIik7CisgIAorICAobmV3IFRlc3QoInN1YjAyNSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5OTk5OTk5OTkzMDAwIik7CisgIAorICAobmV3IFRlc3QoInN1YjAyNiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTk5OTk5OTkzMDAwMCIpOworICAKKyAgKG5ldyBUZXN0KCJzdWIwMjciKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMDAwMGUrOSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI3MDAwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5OTk5OTk5MzAwMDAwIik7CisgIAorICAvLyBNQworICAobmV3IFRlc3QoInN1YjAzMCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiOS45OTk5OTk5RSsxMiIpOworICAKKyAgKG5ldyBUZXN0KCJzdWIwMzEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMDAwMGUrOSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI3MDAwMCIpLG1jNikudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAwMDAwRSsxMyIpOworICAKKyAgCisgIC8vIHNvbWUgb2YgdGhlIG5leHQgZ3JvdXAgYXJlIHJlYWxseSBjb25zdHJ1Y3RvciB0ZXN0cworICAobmV3IFRlc3QoInN1YjA0MCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAwLjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wIik7CisgIChuZXcgVGVzdCgic3ViMDQxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMDAuMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMCIpOworICAobmV3IFRlc3QoInN1YjA0MiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMDAuMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAiKTsKKyAgKG5ldyBUZXN0KCJzdWIwNDMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwMC4wIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgic3ViMDQ0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwMC4wIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoInN1YjA0NSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLjMiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjciKTsKKyAgKG5ldyBUZXN0KCJzdWIwNDYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzLiIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIuMyIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjIuNyIpOworICAobmV3IFRlc3QoInN1YjA0NyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMuMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIuMyIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjIuNyIpOworICAobmV3IFRlc3QoInN1YjA0OCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMuMDAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLjMiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjcwIik7CisgIChuZXcgVGVzdCgic3ViMDQ5IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMyIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoInN1YjA1MCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiKzMiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgic3ViMDUxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMyIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMyIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjYiKTsKKyAgKG5ldyBUZXN0KCJzdWIwNTIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi4zIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMi43Iik7CisgIChuZXcgVGVzdCgic3ViMDUzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMy4iKSkuc3VidHJhY3QobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLjMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjciKTsKKyAgKG5ldyBUZXN0KCJzdWIwNTQiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzLjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLjMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjciKTsKKyAgKG5ldyBUZXN0KCJzdWIwNTUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzLjAwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi4zIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMi43MCIpOworICAobmV3IFRlc3QoInN1YjA1NiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJzdWIwNTciKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIiszIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoInN1YjA1OCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI2Iik7CisgIAorICAvLyB0aGUgYWJvdmUgYWxsIGZyb20gYWRkOyBtYXNzYWdlZCBhbmQgZXh0ZW5kZWQuICBOb3cgc29tZSBuZXcgb25lcy4uLgorICAvLyBbcGFydGljdWxhcmx5IGltcG9ydGFudCBmb3IgY29tcGFyaXNvbnNdCisgIC8vIE5COiAtMUUtNyBiZWxvdyB3ZXJlIG5vbi1leHBvbmVudHMgcHJlLUFOU0kKKyAgKG5ldyBUZXN0KCJzdWIwODAiKSkub2s9KCItMUUtNyIpLmVxdWFscygobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAuMjM0NTY3ODQiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAuMjM0NTY3ODkiKSxtY2RlZikudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgic3ViMDgxIikpLm9rPSIwIi5lcXVhbHMoKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg1IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg5IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoInN1YjA4MiIpKS5vaz0iMCIuZXF1YWxzKChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc4NiIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc4OSIpLG1jZGVmKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJzdWIwODMiKSkub2s9IjAiLmVxdWFscygobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAuMjM0NTY3ODciKSkuc3VidHJhY3QobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAuMjM0NTY3ODkiKSxtY2RlZikudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgic3ViMDg0IikpLm9rPSIwIi5lcXVhbHMoKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg4IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg5IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoInN1YjA4NSIpKS5vaz0iMCIuZXF1YWxzKChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc4OSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc4OSIpLG1jZGVmKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJzdWIwODYiKSkub2s9IjAiLmVxdWFscygobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAuMjM0NTY3OTAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAuMjM0NTY3ODkiKSxtY2RlZikudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgic3ViMDg3IikpLm9rPSIwIi5lcXVhbHMoKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2NzkxIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg5IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoInN1YjA4OCIpKS5vaz0iMCIuZXF1YWxzKChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc5MiIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc4OSIpLG1jZGVmKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJzdWIwODkiKSkub2s9IjAiLmVxdWFscygobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAuMjM0NTY3OTMiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAuMjM0NTY3ODkiKSxtY2RlZikudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgic3ViMDkwIikpLm9rPSIwIi5lcXVhbHMoKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzk0IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg5IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoInN1YjA5MSIpKS5vaz0oIi0xRS03IikuZXF1YWxzKChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc4MSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc4NiIpLG1jZGVmKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJzdWIwOTIiKSkub2s9KCItMUUtNyIpLmVxdWFscygobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAuMjM0NTY3ODIiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAuMjM0NTY3ODYiKSxtY2RlZikudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgic3ViMDkzIikpLm9rPSgiLTFFLTciKS5lcXVhbHMoKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2NzgzIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg2IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoInN1YjA5NCIpKS5vaz0oIi0xRS03IikuZXF1YWxzKChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc4NCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc4NiIpLG1jZGVmKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJzdWIwOTUiKSkub2s9IjAiLmVxdWFscygobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAuMjM0NTY3ODUiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAuMjM0NTY3ODYiKSxtY2RlZikudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgic3ViMDk2IikpLm9rPSIwIi5lcXVhbHMoKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg2IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg2IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoInN1YjA5NyIpKS5vaz0iMCIuZXF1YWxzKChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc4NyIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc4NiIpLG1jZGVmKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJzdWIwOTgiKSkub2s9IjAiLmVxdWFscygobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAuMjM0NTY3ODgiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAuMjM0NTY3ODYiKSxtY2RlZikudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgic3ViMDk5IikpLm9rPSIwIi5lcXVhbHMoKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg5IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg2IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoInN1YjEwMCIpKS5vaz0iMCIuZXF1YWxzKChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc5MCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc4NiIpLG1jZGVmKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJzdWIxMDEiKSkub2s9IjAiLmVxdWFscygobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAuMjM0NTY3OTEiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAuMjM0NTY3ODYiKSxtY2RlZikudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgic3ViMTAyIikpLm9rPSIwIi5lcXVhbHMoY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsLk9ORS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjk5OTk5OTk5OSIpLG1jZGVmKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJzdWIxMDMiKSkub2s9IjAiLmVxdWFscygobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC45OTk5OTk5OTkiKSkuc3VidHJhY3QoY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsLk9ORSxtY2RlZikudG9TdHJpbmcoKSk7CisgIAorICBhbGhzPW5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1Njc4OTAwMDAwIik7CisgIGFyaHM9bmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOTk5OTk5OTk5OTk5OSIpOworICAobmV3IFRlc3QoInN1YjExMCIpKS5vaz0oYWxocy5zdWJ0cmFjdChhcmhzLG1jMykudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjNFKzEyIik7CisgIChuZXcgVGVzdCgic3ViMTExIikpLm9rPShhcmhzLnN1YnRyYWN0KGFsaHMsbWMzKS50b1N0cmluZygpKS5lcXVhbHMoIi0yLjNFKzEyIik7CisgIChuZXcgVGVzdCgic3ViMTEyIikpLm9rPShhbGhzLnN1YnRyYWN0KGFyaHMpLnRvU3RyaW5nKCkpLmVxdWFscygiMjM0NTY3ODkwMDAwMSIpOworICAobmV3IFRlc3QoInN1YjExMyIpKS5vaz0oYXJocy5zdWJ0cmFjdChhbGhzKS50b1N0cmluZygpKS5lcXVhbHMoIi0yMzQ1Njc4OTAwMDAxIik7CisgIAorICAvLyBhZGRpdGlvbmFsIHNjYWxlZCBhcml0aG1ldGljIHRlc3RzIFswLjk3IHByb2JsZW1dCisgIChuZXcgVGVzdCgic3ViMTIwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIuMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjEiKTsKKyAgKG5ldyBUZXN0KCJzdWIxMjEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIuOTc5ODMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC45Nzk4MyIpOworICAobmV3IFRlc3QoInN1YjEyMiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLjkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC45Iik7CisgIChuZXcgVGVzdCgic3ViMTIzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjEwMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjEwMiIpOworICAobmV3IFRlc3QoInN1YjEyNCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLjQiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC40Iik7CisgIChuZXcgVGVzdCgic3ViMTI1IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIuMzA3IikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuMzA3Iik7CisgIChuZXcgVGVzdCgic3ViMTI2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIuNDM4MjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC40MzgyMiIpOworICAobmV3IFRlc3QoInN1YjEyNyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLjkxMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjkxMSIpOworICAobmV3IFRlc3QoInN1YjEyOCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi4wIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi4wMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjAyIik7CisgIChuZXcgVGVzdCgic3ViMTI5IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMDAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLjM5MiIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjM5MiIpOworICAobmV3IFRlc3QoInN1YjEzMCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLjI2IikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuMjYiKTsKKyAgKG5ldyBUZXN0KCJzdWIxMzEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuNTEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC41MSIpOworICAobmV3IFRlc3QoInN1YjEzMiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLjIyMzQiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC4yMjM0Iik7CisgIChuZXcgVGVzdCgic3ViMTMzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIuMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjIiKTsKKyAgKG5ldyBUZXN0KCJzdWIxMzQiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIuMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIuMDAwOCIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjAwMDgiKTsKKyAgLy8gMC4gb24gbGVmdAorICAobmV3IFRlc3QoInN1YjE0MCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItLjEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEiKTsKKyAgKG5ldyBUZXN0KCJzdWIxNDEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjAwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0uOTc5ODMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjk3OTgzIik7CisgIChuZXcgVGVzdCgic3ViMTQyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0uOSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuOSIpOworICAobmV3IFRlc3QoInN1YjE0MyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMC4xMDIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEwMiIpOworICAobmV3IFRlc3QoInN1YjE0NCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItLjQiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjQiKTsKKyAgKG5ldyBUZXN0KCJzdWIxNDUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLS4zMDciKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjMwNyIpOworICAobmV3IFRlc3QoInN1YjE0NiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItLjQzODIyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC40MzgyMiIpOworICAobmV3IFRlc3QoInN1YjE0NyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItLjkxMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuOTExIik7CisgIChuZXcgVGVzdCgic3ViMTQ4IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0uMDIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAyIik7CisgIChuZXcgVGVzdCgic3ViMTQ5IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItLjM5MiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMzkyIik7CisgIChuZXcgVGVzdCgic3ViMTUwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0uMjYiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjI2Iik7CisgIChuZXcgVGVzdCgic3ViMTUxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0wLjUxIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC41MSIpOworICAobmV3IFRlc3QoInN1YjE1MiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItLjIyMzQiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjIyMzQiKTsKKyAgKG5ldyBUZXN0KCJzdWIxNTMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLS4yIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4yIik7CisgIChuZXcgVGVzdCgic3ViMTU0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0uMDAwOCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwOCIpOworICAvLyBuZWdhdGl2ZXMgb2Ygc2FtZQorICAobmV3IFRlc3QoInN1YjE2MCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLS4xIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xIik7CisgIChuZXcgVGVzdCgic3ViMTYxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMDAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLS45Nzk4MyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuOTc5ODMiKTsKKyAgKG5ldyBUZXN0KCJzdWIxNjIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0uOSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuOSIpOworICAobmV3IFRlc3QoInN1YjE2MyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTAuMTAyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xMDIiKTsKKyAgKG5ldyBUZXN0KCJzdWIxNjQiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0uNCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNCIpOworICAobmV3IFRlc3QoInN1YjE2NSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLS4zMDciKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjMwNyIpOworICAobmV3IFRlc3QoInN1YjE2NiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLS40MzgyMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNDM4MjIiKTsKKyAgKG5ldyBUZXN0KCJzdWIxNjciKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0uOTExIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC45MTEiKTsKKyAgKG5ldyBUZXN0KCJzdWIxNjgiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIuMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItLjAyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMiIpOworICAobmV3IFRlc3QoInN1YjE2OSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0uMzkyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4zOTIiKTsKKyAgKG5ldyBUZXN0KCJzdWIxNzAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0uMjYiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjI2Iik7CisgIChuZXcgVGVzdCgic3ViMTcxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMC41MSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNTEiKTsKKyAgKG5ldyBUZXN0KCJzdWIxNzIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0uMjIzNCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMjIzNCIpOworICAobmV3IFRlc3QoInN1YjE3MyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLS4yIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4yIik7CisgIChuZXcgVGVzdCgic3ViMTc0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLS4wMDA4IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDA4Iik7CisgIAorICAvLyBtb3JlIGZpeGVkLCBMSFMgc3dhcHMgW3JlYWxseSBzYW1lIGFzIHRlc3RjYXNlcyB1bmRlciBhZGRdCisgIChuZXcgVGVzdCgic3ViMTgwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTU2MjY3RS0xMCIpKS5zdWJ0cmFjdCh6ZXJvKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjAwMDAwNTYyNjciKTsKKyAgKG5ldyBUZXN0KCJzdWIxODEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItNTYyNjdFLTUiKSkuc3VidHJhY3QoemVybykudG9TdHJpbmcoKSkuZXF1YWxzKCItMC41NjI2NyIpOworICAobmV3IFRlc3QoInN1YjE4MiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi01NjI2N0UtMiIpKS5zdWJ0cmFjdCh6ZXJvKS50b1N0cmluZygpKS5lcXVhbHMoIi01NjIuNjciKTsKKyAgKG5ldyBUZXN0KCJzdWIxODMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItNTYyNjdFLTEiKSkuc3VidHJhY3QoemVybykudG9TdHJpbmcoKSkuZXF1YWxzKCItNTYyNi43Iik7CisgIChuZXcgVGVzdCgic3ViMTg1IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTU2MjY3RS0wIikpLnN1YnRyYWN0KHplcm8pLnRvU3RyaW5nKCkpLmVxdWFscygiLTU2MjY3Iik7CisgIAorICB0cnl7Y2hlY2tudWxsOmRveworICAgdGVuLnN1YnRyYWN0KChjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwpbnVsbCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAkODMpeworICAgZmxhZz10cnVlOworICB9LypjaGVja251bGwqLworICAobmV3IFRlc3QoInN1YjIwMCIpKS5vaz1mbGFnOworICB0cnl7Y2hlY2tudWxsMjpkb3sKKyAgIHRlbi5zdWJ0cmFjdCh0ZW4sKGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQpbnVsbCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAkODQpeworICAgZmxhZz10cnVlOworICB9LypjaGVja251bGwyKi8KKyAgKG5ldyBUZXN0KCJzdWIyMDEiKSkub2s9ZmxhZzsKKyAgCisgIHRyeXtjaGVja2RpZ2l0czpkb3sKKyAgIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbC5PTkUuc3VidHJhY3QodGVubG9uZyxtY2xkKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDg1KXthZT0kODU7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiVG9vIG1hbnkgZGlnaXRzOiIrIiAiK3RlbmxvbmcudG9TdHJpbmcoKSk7CisgIH0vKmNoZWNrZGlnaXRzKi8KKyAgKG5ldyBUZXN0KCJzdWIyMDIiKSkub2s9ZmxhZzsKKyAgdHJ5e2NoZWNrZGlnaXRzOmRveworICAgdGVubG9uZy5zdWJ0cmFjdChjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwuT05FLG1jbGQpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkODYpe2FlPSQ4NjsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJUb28gbWFueSBkaWdpdHM6IisiICIrdGVubG9uZy50b1N0cmluZygpKTsKKyAgfS8qY2hlY2tkaWdpdHMqLworICAobmV3IFRlc3QoInN1YjIwMyIpKS5vaz1mbGFnOworICBzdW1tYXJ5KCJzdWJ0cmFjdCIpOworICByZXR1cm47fQorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIC8qIE90aGVyIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiogVGVzdCB0aGUgPGNvZGU+QmlnRGVjaW1hbC5ieXRlVmFsdWUoKTwvY29kZT4gbWV0aG9kLiAqLworIAorIHB1YmxpYyB2b2lkIGRpYWdieXRlVmFsdWUoKXsKKyAgYm9vbGVhbiBmbGFnPWZhbHNlOworICBqYXZhLmxhbmcuU3RyaW5nIHY9bnVsbDsKKyAgamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gYWU9bnVsbDsKKyAgamF2YS5sYW5nLlN0cmluZyBiYWRzdHJpbmdzW107CisgIGludCBpPTA7CisgIGphdmEubGFuZy5TdHJpbmcgbm9ybT1udWxsOworICAKKyAgCisgIChuZXcgVGVzdCgiYnl2MDAxIikpLm9rPSgoKChieXRlKS0xMjgpKSk9PSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTEyOCIpKS5ieXRlVmFsdWUoKSk7CisgIChuZXcgVGVzdCgiYnl2MDAyIikpLm9rPSgoMCkpPT0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuYnl0ZVZhbHVlKCkpOworICAobmV3IFRlc3QoImJ5djAwMyIpKS5vaz0oKDEpKT09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxIikpLmJ5dGVWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJieXYwMDQiKSkub2s9KCg5OSkpPT0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjk5IikpLmJ5dGVWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJieXYwMDUiKSkub2s9KCgxMjcpKT09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMjciKSkuYnl0ZVZhbHVlKCkpOworICAobmV3IFRlc3QoImJ5djAwNiIpKS5vaz0oKC0xMjgpKT09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMjgiKSkuYnl0ZVZhbHVlKCkpOworICAobmV3IFRlc3QoImJ5djAwNyIpKS5vaz0oKC0xMjcpKT09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMjkiKSkuYnl0ZVZhbHVlKCkpOworICAobmV3IFRlc3QoImJ5djAwOCIpKS5vaz0oKDEyNykpPT0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0xMjkiKSkuYnl0ZVZhbHVlKCkpOworICAobmV3IFRlc3QoImJ5djAwOSIpKS5vaz0oKDEyNikpPT0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0xMzAiKSkuYnl0ZVZhbHVlKCkpOworICAobmV3IFRlc3QoImJ5djAxMCIpKS5vaz0oKGJtYXgpKT09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGJtYXgpKS5ieXRlVmFsdWUoKSk7CisgIChuZXcgVGVzdCgiYnl2MDExIikpLm9rPSgoYm1pbikpPT0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoYm1pbikpLmJ5dGVWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJieXYwMTIiKSkub2s9KChibmVnKSk9PSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChibmVnKSkuYnl0ZVZhbHVlKCkpOworICAobmV3IFRlc3QoImJ5djAxMyIpKS5vaz0oKGJ6ZXIpKT09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGJ6ZXIpKS5ieXRlVmFsdWUoKSk7CisgIChuZXcgVGVzdCgiYnl2MDE0IikpLm9rPSgoYnBvcykpPT0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoYnBvcykpLmJ5dGVWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJieXYwMTUiKSkub2s9KChibWluKSk9PSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChibWF4KzEpKS5ieXRlVmFsdWUoKSk7CisgIChuZXcgVGVzdCgiYnl2MDE2IikpLm9rPSgoYm1heCkpPT0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoYm1pbi0xKSkuYnl0ZVZhbHVlKCkpOworICAKKyAgKG5ldyBUZXN0KCJieXYwMjEiKSkub2s9KCgoKGJ5dGUpLTEyOCkpKT09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMTI4IikpLmJ5dGVWYWx1ZUV4YWN0KCkpOworICAobmV3IFRlc3QoImJ5djAyMiIpKS5vaz0oKDApKT09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwIikpLmJ5dGVWYWx1ZUV4YWN0KCkpOworICAobmV3IFRlc3QoImJ5djAyMyIpKS5vaz0oKDEpKT09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxIikpLmJ5dGVWYWx1ZUV4YWN0KCkpOworICAobmV3IFRlc3QoImJ5djAyNCIpKS5vaz0oKDk5KSk9PSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOTkiKSkuYnl0ZVZhbHVlRXhhY3QoKSk7CisgIChuZXcgVGVzdCgiYnl2MDI1IikpLm9rPSgoMTI3KSk9PSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTI3IikpLmJ5dGVWYWx1ZUV4YWN0KCkpOworICAobmV3IFRlc3QoImJ5djAyNiIpKS5vaz0oKGJtYXgpKT09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGJtYXgpKS5ieXRlVmFsdWVFeGFjdCgpKTsKKyAgKG5ldyBUZXN0KCJieXYwMjciKSkub2s9KChibWluKSk9PSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChibWluKSkuYnl0ZVZhbHVlRXhhY3QoKSk7CisgIChuZXcgVGVzdCgiYnl2MDI4IikpLm9rPSgoYm5lZykpPT0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoYm5lZykpLmJ5dGVWYWx1ZUV4YWN0KCkpOworICAobmV3IFRlc3QoImJ5djAyOSIpKS5vaz0oKGJ6ZXIpKT09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGJ6ZXIpKS5ieXRlVmFsdWVFeGFjdCgpKTsKKyAgKG5ldyBUZXN0KCJieXYwMzAiKSkub2s9KChicG9zKSk9PSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChicG9zKSkuYnl0ZVZhbHVlRXhhY3QoKSk7CisgIHRyeXsKKyAgIHY9Ii0xMjkiOworICAgKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwodikpLmJ5dGVWYWx1ZUV4YWN0KCk7CisgICBmbGFnPWZhbHNlOworICB9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkODcpe2FlPSQ4NzsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJDb252ZXJzaW9uIG92ZXJmbG93OiIrIiAiK3YpOworICB9CisgIChuZXcgVGVzdCgiYnl2MTAwIikpLm9rPWZsYWc7CisgIHRyeXsKKyAgIHY9IjEyOCI7CisgICAobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCh2KSkuYnl0ZVZhbHVlRXhhY3QoKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH0KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQ4OCl7YWU9JDg4OworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIkNvbnZlcnNpb24gb3ZlcmZsb3c6IisiICIrdik7CisgIH0KKyAgKG5ldyBUZXN0KCJieXYxMDEiKSkub2s9ZmxhZzsKKyAgdHJ5eworICAgdj0iMS41IjsKKyAgIChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKHYpKS5ieXRlVmFsdWVFeGFjdCgpOworICAgZmxhZz1mYWxzZTsKKyAgfQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDg5KXthZT0kODk7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiRGVjaW1hbCBwYXJ0IG5vbi16ZXJvOiIrIiAiK3YpOworICB9CisgIChuZXcgVGVzdCgiYnl2MTAyIikpLm9rPWZsYWc7CisgIAorICBiYWRzdHJpbmdzPW5ldyBqYXZhLmxhbmcuU3RyaW5nW117IjEyMzQiLChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGJtYXgpKS5hZGQob25lKS50b1N0cmluZygpLChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGJtaW4pKS5zdWJ0cmFjdChvbmUpLnRvU3RyaW5nKCksIjE3MCIsIjI3MCIsIjM3MCIsIjQ3MCIsIjU3MCIsIjY3MCIsIjc3MCIsIjg3MCIsIjk3MCIsIi0xNzAiLCItMjcwIiwiLTM3MCIsIi00NzAiLCItNTcwIiwiLTY3MCIsIi03NzAiLCItODcwIiwiLTk3MCIsKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoYm1pbikpLm11bHRpcGx5KHR3bykudG9TdHJpbmcoKSwobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChibWF4KSkubXVsdGlwbHkodHdvKS50b1N0cmluZygpLChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGJtaW4pKS5tdWx0aXBseSh0ZW4pLnRvU3RyaW5nKCksKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoYm1heCkpLm11bHRpcGx5KHRlbikudG9TdHJpbmcoKSwiLTEyMzQifTsgLy8gMjIwCisgIC8vIDIyMQorICAvLyAyMjIKKyAgLy8gMjIzCisgIC8vIDIyNAorICAvLyAyMjUKKyAgLy8gMjI2CisgIC8vIDIyNworICAvLyAyMjgKKyAgLy8gMjI5CisgIC8vIDIzMAorICAvLyAyMzEKKyAgLy8gMjMyCisgIC8vIDIzMworICAvLyAyMzQKKyAgLy8gMjM1CisgIC8vIDIzNgorICAvLyAyMzcKKyAgLy8gMjM4CisgIC8vIDIzOQorICAvLyAyNDAKKyAgLy8gMjQxCisgIC8vIDI0MgorICAvLyAyNDMKKyAgLy8gMjQ0CisgIC8vIDI0NQorICB7aW50ICQ5MD1iYWRzdHJpbmdzLmxlbmd0aDtpPTA7aTpmb3IoOyQ5MD4wOyQ5MC0tLGkrKyl7CisgICB0cnl7CisgICAgdj1iYWRzdHJpbmdzW2ldOworICAgIChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKHYpKS5ieXRlVmFsdWVFeGFjdCgpOworICAgIGZsYWc9ZmFsc2U7CisgICB9CisgICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDkxKXthZT0kOTE7CisgICAgbm9ybT0obmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCh2KSkudG9TdHJpbmcoKTsKKyAgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiQ29udmVyc2lvbiBvdmVyZmxvdzoiKyIgIitub3JtKTsKKyAgIH0KKyAgIChuZXcgVGVzdCgiYnl2IisoMjIwK2kpKSkub2s9ZmxhZzsKKyAgIH0KKyAgfS8qaSovCisgIAorICBzdW1tYXJ5KCJieXRlVmFsdWUrIik7CisgIHJldHVybjt9CisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIAorIC8qKiBUZXN0IHRoZSB7QGxpbmsgQmlnRGVjaW1hbCNjb21wYXJlVG8oamF2YS5sYW5nLk9iamVjdCl9IG1ldGhvZC4gKi8KKyAKKyBwdWJsaWMgdm9pZCBkaWFnY29tcGFyZXRvT2JqKCl7CisgIGJvb2xlYW4gZmxhZz1mYWxzZTsKKyAgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIGQ7CisgIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCBsb25nMTsKKyAgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIGxvbmcyOworICAKKyAgZD1uZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKDE3KTsKKyAgKG5ldyBUZXN0KCJjdG8wMDEiKSkub2s9KGQuY29tcGFyZVRvKChqYXZhLmxhbmcuT2JqZWN0KShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKDY2KSkpKT09KC0xKTsKKyAgKG5ldyBUZXN0KCJjdG8wMDIiKSkub2s9KGQuY29tcGFyZVRvKChqYXZhLmxhbmcuT2JqZWN0KSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgxMCkpLmFkZChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKDcpKSkpKT09MDsKKyAgKG5ldyBUZXN0KCJjdG8wMDMiKSkub2s9KGQuY29tcGFyZVRvKChqYXZhLmxhbmcuT2JqZWN0KShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKDEwKSkpKT09MTsKKyAgbG9uZzE9bmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTIzNDU2Nzg5MDMiKTsKKyAgbG9uZzI9bmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTIzNDU2Nzg5MDAiKTsKKyAgKG5ldyBUZXN0KCJjdG8wMDQiKSkub2s9KGxvbmcxLmNvbXBhcmVUbygoamF2YS5sYW5nLk9iamVjdClsb25nMikpPT0xOworICAobmV3IFRlc3QoImN0bzAwNSIpKS5vaz0obG9uZzIuY29tcGFyZVRvKChqYXZhLmxhbmcuT2JqZWN0KWxvbmcxKSk9PSgtMSk7CisgIChuZXcgVGVzdCgiY3RvMDA2IikpLm9rPShsb25nMi5jb21wYXJlVG8oKGphdmEubGFuZy5PYmplY3QpbG9uZzIpKT09MDsKKyAgdHJ5eworICAgZC5jb21wYXJlVG8oKGphdmEubGFuZy5PYmplY3QpbnVsbCk7CisgICBmbGFnPWZhbHNlOworICB9CisgIGNhdGNoIChqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24gJDkyKXsKKyAgIGZsYWc9dHJ1ZTsgLy8gc2hvdWxkIGdldCBoZXJlCisgIH0KKyAgKG5ldyBUZXN0KCJjdG8xMDEiKSkub2s9ZmxhZzsKKyAgdHJ5eworICAgZC5jb21wYXJlVG8oKGphdmEubGFuZy5PYmplY3QpImZvbyIpOworICAgZmxhZz1mYWxzZTsKKyAgfQorICBjYXRjaCAoamF2YS5sYW5nLkNsYXNzQ2FzdEV4Y2VwdGlvbiAkOTMpeworICAgZmxhZz10cnVlOyAvLyBzaG91bGQgZ2V0IGhlcmUKKyAgfQorICAobmV3IFRlc3QoImN0bzEwMiIpKS5vaz1mbGFnOworICBzdW1tYXJ5KCJjb21wYXJlVG8oT2JqKSIpOworICByZXR1cm47fQorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiogVGVzdCB0aGUge0BsaW5rIEJpZ0RlY2ltYWwjZG91YmxlVmFsdWV9IG1ldGhvZC4gKi8KKyAKKyBwdWJsaWMgdm9pZCBkaWFnZG91YmxldmFsdWUoKXsKKyAgamF2YS5sYW5nLlN0cmluZyB2YWw7CisgIC8vIDE5OTkuMDMuMDcgSW5maW5pdGllcyBubyBsb25nZXIgZXJyb3JzCisgIHZhbD0iLTEiOworICAobmV3IFRlc3QoImRvdjAwMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwodmFsKSkuZG91YmxlVmFsdWUoKSk9PSgobmV3IGphdmEubGFuZy5Eb3VibGUodmFsKSkuZG91YmxlVmFsdWUoKSk7CisgIHZhbD0iLTAuMSI7CisgIChuZXcgVGVzdCgiZG92MDAyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCh2YWwpKS5kb3VibGVWYWx1ZSgpKT09KChuZXcgamF2YS5sYW5nLkRvdWJsZSh2YWwpKS5kb3VibGVWYWx1ZSgpKTsKKyAgdmFsPSIwIjsKKyAgKG5ldyBUZXN0KCJkb3YwMDMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKHZhbCkpLmRvdWJsZVZhbHVlKCkpPT0oKG5ldyBqYXZhLmxhbmcuRG91YmxlKHZhbCkpLmRvdWJsZVZhbHVlKCkpOworICB2YWw9IjAuMSI7CisgIChuZXcgVGVzdCgiZG92MDA0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCh2YWwpKS5kb3VibGVWYWx1ZSgpKT09KChuZXcgamF2YS5sYW5nLkRvdWJsZSh2YWwpKS5kb3VibGVWYWx1ZSgpKTsKKyAgdmFsPSIxIjsKKyAgKG5ldyBUZXN0KCJkb3YwMDUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKHZhbCkpLmRvdWJsZVZhbHVlKCkpPT0oKG5ldyBqYXZhLmxhbmcuRG91YmxlKHZhbCkpLmRvdWJsZVZhbHVlKCkpOworICB2YWw9IjFlMTAwMCI7CisgIChuZXcgVGVzdCgiZG92MDA2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCh2YWwpKS5kb3VibGVWYWx1ZSgpKT09amF2YS5sYW5nLkRvdWJsZS5QT1NJVElWRV9JTkZJTklUWTsKKyAgdmFsPSItMWUxMDAwIjsKKyAgKG5ldyBUZXN0KCJkb3YwMDciKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKHZhbCkpLmRvdWJsZVZhbHVlKCkpPT1qYXZhLmxhbmcuRG91YmxlLk5FR0FUSVZFX0lORklOSVRZOworICBzdW1tYXJ5KCJkb3VibGVWYWx1ZSIpOworICByZXR1cm47fQorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiogVGVzdCB0aGUge0BsaW5rIEJpZ0RlY2ltYWwjZXF1YWxzfSBtZXRob2QuICovCisgCisgcHVibGljIHZvaWQgZGlhZ2VxdWFscygpeworICBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgZDsKKyAgZD1uZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKDE3KTsKKyAgKG5ldyBUZXN0KCJlcXUwMDEiKSkub2s9KCEoZC5lcXVhbHMoKGphdmEubGFuZy5PYmplY3QpbnVsbCkpKTsKKyAgKG5ldyBUZXN0KCJlcXUwMDIiKSkub2s9KCEoZC5lcXVhbHMoKGphdmEubGFuZy5PYmplY3QpImZvbyIpKSk7CisgIChuZXcgVGVzdCgiZXF1MDAzIikpLm9rPSghKGQuZXF1YWxzKChqYXZhLmxhbmcuT2JqZWN0KShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKDY2KSkpKSk7CisgIChuZXcgVGVzdCgiZXF1MDA0IikpLm9rPWQuZXF1YWxzKChqYXZhLmxhbmcuT2JqZWN0KWQpOworICAobmV3IFRlc3QoImVxdTAwNSIpKS5vaz1kLmVxdWFscygoamF2YS5sYW5nLk9iamVjdCkoKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoMTApKS5hZGQobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCg3KSkpKTsKKyAgc3VtbWFyeSgiZXF1YWxzIik7CisgIHJldHVybjt9CisKKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIAorIC8qKiBUZXN0IHRoZSB7QGxpbmsgQmlnRGVjaW1hbCNmbG9hdFZhbHVlfSBtZXRob2QuICovCisgCisgcHVibGljIHZvaWQgZGlhZ2Zsb2F0dmFsdWUoKXsKKyAgamF2YS5sYW5nLlN0cmluZyB2YWw7CisgIC8vIDE5OTkuMDMuMDcgSW5maW5pdGllcyBubyBsb25nZXIgZXJyb3JzCisgIHZhbD0iLTEiOworICAobmV3IFRlc3QoImZsdjAwMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwodmFsKSkuZmxvYXRWYWx1ZSgpKT09KChuZXcgamF2YS5sYW5nLkZsb2F0KHZhbCkpLmZsb2F0VmFsdWUoKSk7CisgIHZhbD0iLTAuMSI7CisgIChuZXcgVGVzdCgiZmx2MDAyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCh2YWwpKS5mbG9hdFZhbHVlKCkpPT0oKG5ldyBqYXZhLmxhbmcuRmxvYXQodmFsKSkuZmxvYXRWYWx1ZSgpKTsKKyAgdmFsPSIwIjsKKyAgKG5ldyBUZXN0KCJmbHYwMDMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKHZhbCkpLmZsb2F0VmFsdWUoKSk9PSgobmV3IGphdmEubGFuZy5GbG9hdCh2YWwpKS5mbG9hdFZhbHVlKCkpOworICB2YWw9IjAuMSI7CisgIChuZXcgVGVzdCgiZmx2MDA0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCh2YWwpKS5mbG9hdFZhbHVlKCkpPT0oKG5ldyBqYXZhLmxhbmcuRmxvYXQodmFsKSkuZmxvYXRWYWx1ZSgpKTsKKyAgdmFsPSIxIjsKKyAgKG5ldyBUZXN0KCJmbHYwMDUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKHZhbCkpLmZsb2F0VmFsdWUoKSk9PSgobmV3IGphdmEubGFuZy5GbG9hdCh2YWwpKS5mbG9hdFZhbHVlKCkpOworICB2YWw9IjFlMjAwIjsKKyAgKG5ldyBUZXN0KCJmbHYwMDYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKHZhbCkpLmZsb2F0VmFsdWUoKSk9PWphdmEubGFuZy5GbG9hdC5QT1NJVElWRV9JTkZJTklUWTsKKyAgdmFsPSItMWUyMDAiOworICAobmV3IFRlc3QoImZsdjAwNyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwodmFsKSkuZmxvYXRWYWx1ZSgpKT09amF2YS5sYW5nLkZsb2F0Lk5FR0FUSVZFX0lORklOSVRZOworICB2YWw9IjFlMTAwMCI7CisgIChuZXcgVGVzdCgiZmx2MDA4IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCh2YWwpKS5mbG9hdFZhbHVlKCkpPT1qYXZhLmxhbmcuRmxvYXQuUE9TSVRJVkVfSU5GSU5JVFk7CisgIHZhbD0iLTFlMTAwMCI7CisgIChuZXcgVGVzdCgiZmx2MDA5IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCh2YWwpKS5mbG9hdFZhbHVlKCkpPT1qYXZhLmxhbmcuRmxvYXQuTkVHQVRJVkVfSU5GSU5JVFk7CisgIHN1bW1hcnkoImZsb2F0VmFsdWUiKTsKKyAgcmV0dXJuO30KKworIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgCisgLyoqIFRlc3QgdGhlIHtAbGluayBCaWdEZWNpbWFsI2Zvcm1hdH0gbWV0aG9kLiAqLworIAorIHB1YmxpYyB2b2lkIGRpYWdmb3JtYXQoKXsKKyAgYm9vbGVhbiBmbGFnPWZhbHNlOworICBpbnQgZW5nOworICBpbnQgc2NpOworICBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgZDA0OworICBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgZDA1OworICBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgZDA2OworICBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgZDE1OworICBqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlhZT1udWxsOworICBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgZDA1MDsKKyAgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIGQxNTA7CisgIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCBtMDUwOworICBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgbTE1MDsKKyAgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIGQwNTE7CisgIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCBkMTUxOworICBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgZDAwMDsKKyAgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIGQ1MDA7CisgIGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uIGFlPW51bGw7CisgIC8vIDE5OTkuMDIuMDkgbm93IG9ubHkgdHdvIHNpZ25hdHVyZXMgZm9yIGZvcm1hdCgpLCBzbyBzb21lIHRlc3RzIGJlbG93CisgIC8vICAgICAgICAgICAgbWF5IG5vdyBiZSByZWR1bmRhbnQKKyAgCisgIChuZXcgVGVzdCgiZm9yMDAxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTIuMyIpKS5mb3JtYXQoLTEsLTEpKS5lcXVhbHMoIjEyLjMiKTsKKyAgKG5ldyBUZXN0KCJmb3IwMDIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMTIuNzMiKSkuZm9ybWF0KC0xLC0xKSkuZXF1YWxzKCItMTIuNzMiKTsKKyAgKG5ldyBUZXN0KCJmb3IwMDMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjAwMCIpKS5mb3JtYXQoLTEsLTEpKS5lcXVhbHMoIjAuMDAwIik7CisgIChuZXcgVGVzdCgiZm9yMDA0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiM0UrMyIpKS5mb3JtYXQoLTEsLTEpKS5lcXVhbHMoIjMwMDAiKTsKKyAgKG5ldyBUZXN0KCJmb3IwMDUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzIikpLmZvcm1hdCg0LC0xKSkuZXF1YWxzKCIgICAzIik7CisgIChuZXcgVGVzdCgiZm9yMDA2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS43MyIpKS5mb3JtYXQoNCwwKSkuZXF1YWxzKCIgICAyIik7CisgIChuZXcgVGVzdCgiZm9yMDA3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS43MyIpKS5mb3JtYXQoNCwxKSkuZXF1YWxzKCIgICAxLjciKTsKKyAgKG5ldyBUZXN0KCJmb3IwMDgiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjc1IikpLmZvcm1hdCg0LDEpKS5lcXVhbHMoIiAgIDEuOCIpOworICAobmV3IFRlc3QoImZvcjAwOSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuNSIpKS5mb3JtYXQoNCwxKSkuZXF1YWxzKCIgICAwLjUiKTsKKyAgKG5ldyBUZXN0KCJmb3IwMTAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjA1IikpLmZvcm1hdCg0LDEpKS5lcXVhbHMoIiAgIDAuMSIpOworICAobmV3IFRlc3QoImZvcjAxMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDQiKSkuZm9ybWF0KDQsMSkpLmVxdWFscygiICAgMC4wIik7CisgIChuZXcgVGVzdCgiZm9yMDEyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMCIpKS5mb3JtYXQoNCwwKSkuZXF1YWxzKCIgICAwIik7CisgIChuZXcgVGVzdCgiZm9yMDEzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMCIpKS5mb3JtYXQoNCwxKSkuZXF1YWxzKCIgICAwLjAiKTsKKyAgKG5ldyBUZXN0KCJmb3IwMTQiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwIikpLmZvcm1hdCg0LDIpKS5lcXVhbHMoIiAgIDAuMDAiKTsKKyAgKG5ldyBUZXN0KCJmb3IwMTUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwIikpLmZvcm1hdCg0LDMpKS5lcXVhbHMoIiAgIDAuMDAwIik7CisgIChuZXcgVGVzdCgiZm9yMDE2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMCIpKS5mb3JtYXQoNCw0KSkuZXF1YWxzKCIgICAwLjAwMDAiKTsKKyAgKG5ldyBUZXN0KCJmb3IwMTciKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjAwNSIpKS5mb3JtYXQoNCwwKSkuZXF1YWxzKCIgICAwIik7CisgIChuZXcgVGVzdCgiZm9yMDE4IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wMDUiKSkuZm9ybWF0KDQsMSkpLmVxdWFscygiICAgMC4wIik7CisgIChuZXcgVGVzdCgiZm9yMDE5IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wMDUiKSkuZm9ybWF0KDQsMikpLmVxdWFscygiICAgMC4wMSIpOworICAobmV3IFRlc3QoImZvcjAyMCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDA0IikpLmZvcm1hdCg0LDIpKS5lcXVhbHMoIiAgIDAuMDAiKTsKKyAgKG5ldyBUZXN0KCJmb3IwMjEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjAwNSIpKS5mb3JtYXQoNCwzKSkuZXF1YWxzKCIgICAwLjAwNSIpOworICAobmV3IFRlc3QoImZvcjAyMiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDA1IikpLmZvcm1hdCg0LDQpKS5lcXVhbHMoIiAgIDAuMDA1MCIpOworICAKKyAgKG5ldyBUZXN0KCJmb3IwMjMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjczIikpLmZvcm1hdCg0LDIpKS5lcXVhbHMoIiAgIDEuNzMiKTsKKyAgKG5ldyBUZXN0KCJmb3IwMjQiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjczIikpLmZvcm1hdCg0LDMpKS5lcXVhbHMoIiAgIDEuNzMwIik7CisgIChuZXcgVGVzdCgiZm9yMDI1IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLS43NiIpKS5mb3JtYXQoNCwxKSkuZXF1YWxzKCIgIC0wLjgiKTsKKyAgKG5ldyBUZXN0KCJmb3IwMjYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMTIuNzMiKSkuZm9ybWF0KC0xLDQpKS5lcXVhbHMoIi0xMi43MzAwIik7CisgIAorICAobmV3IFRlc3QoImZvcjAyNyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMuMDMiKSkuZm9ybWF0KDQsLTEpKS5lcXVhbHMoIiAgIDMuMDMiKTsKKyAgKG5ldyBUZXN0KCJmb3IwMjgiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIzLjAzIikpLmZvcm1hdCg0LDEpKS5lcXVhbHMoIiAgIDMuMCIpOworICAobmV3IFRlc3QoImZvcjAyOSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjMuMDMiKSkuZm9ybWF0KDQsLTEsMywtMSwtMSwtMSkpLmVxdWFscygiICAgMy4wMyAgICAgIik7CisgIChuZXcgVGVzdCgiZm9yMDMwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMy4wMyIpKS5mb3JtYXQoLTEsLTEsMywtMSwtMSwtMSkpLmVxdWFscygiMy4wMyAgICAgIik7CisgIChuZXcgVGVzdCgiZm9yMDMxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTIzNDUuNzMiKSkuZm9ybWF0KC0xLC0xLC0xLDQsLTEsLTEpKS5lcXVhbHMoIjEuMjM0NTczRSs0Iik7CisgIChuZXcgVGVzdCgiZm9yMDMyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTIzNDUuNzMiKSkuZm9ybWF0KC0xLC0xLC0xLDUsLTEsLTEpKS5lcXVhbHMoIjEyMzQ1LjczIik7CisgIChuZXcgVGVzdCgiZm9yMDMzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTIzNDUuNzMiKSkuZm9ybWF0KC0xLC0xLC0xLDYsLTEsLTEpKS5lcXVhbHMoIjEyMzQ1LjczIik7CisgIAorICAobmV3IFRlc3QoImZvcjAzNCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1LjczIikpLmZvcm1hdCgtMSw4LC0xLDMsLTEsLTEpKS5lcXVhbHMoIjEuMjM0NTczMDBFKzQiKTsKKyAgKG5ldyBUZXN0KCJmb3IwMzUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMjM0NS43MyIpKS5mb3JtYXQoLTEsNywtMSwzLC0xLC0xKSkuZXF1YWxzKCIxLjIzNDU3MzBFKzQiKTsKKyAgKG5ldyBUZXN0KCJmb3IwMzYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMjM0NS43MyIpKS5mb3JtYXQoLTEsNiwtMSwzLC0xLC0xKSkuZXF1YWxzKCIxLjIzNDU3M0UrNCIpOworICAobmV3IFRlc3QoImZvcjAzNyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1LjczIikpLmZvcm1hdCgtMSw1LC0xLDMsLTEsLTEpKS5lcXVhbHMoIjEuMjM0NTdFKzQiKTsKKyAgKG5ldyBUZXN0KCJmb3IwMzgiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMjM0NS43MyIpKS5mb3JtYXQoLTEsNCwtMSwzLC0xLC0xKSkuZXF1YWxzKCIxLjIzNDZFKzQiKTsKKyAgKG5ldyBUZXN0KCJmb3IwMzkiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMjM0NS43MyIpKS5mb3JtYXQoLTEsMywtMSwzLC0xLC0xKSkuZXF1YWxzKCIxLjIzNUUrNCIpOworICAobmV3IFRlc3QoImZvcjA0MCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1LjczIikpLmZvcm1hdCgtMSwyLC0xLDMsLTEsLTEpKS5lcXVhbHMoIjEuMjNFKzQiKTsKKyAgKG5ldyBUZXN0KCJmb3IwNDEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMjM0NS43MyIpKS5mb3JtYXQoLTEsMSwtMSwzLC0xLC0xKSkuZXF1YWxzKCIxLjJFKzQiKTsKKyAgKG5ldyBUZXN0KCJmb3IwNDIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMjM0NS43MyIpKS5mb3JtYXQoLTEsMCwtMSwzLC0xLC0xKSkuZXF1YWxzKCIxRSs0Iik7CisgIAorICAobmV3IFRlc3QoImZvcjA0MyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjk5OTk5Ljk5IikpLmZvcm1hdCgtMSw2LC0xLDMsLTEsLTEpKS5lcXVhbHMoIjkuOTk5OTk5RSs0Iik7CisgIChuZXcgVGVzdCgiZm9yMDQ0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOTk5OTkuOTkiKSkuZm9ybWF0KC0xLDUsLTEsMywtMSwtMSkpLmVxdWFscygiMS4wMDAwMEUrNSIpOworICAobmV3IFRlc3QoImZvcjA0NSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjk5OTk5Ljk5IikpLmZvcm1hdCgtMSwyLC0xLDMsLTEsLTEpKS5lcXVhbHMoIjEuMDBFKzUiKTsKKyAgKG5ldyBUZXN0KCJmb3IwNDYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5OTk5OS45OSIpKS5mb3JtYXQoLTEsMCwtMSwzLC0xLC0xKSkuZXF1YWxzKCIxRSs1Iik7CisgIChuZXcgVGVzdCgiZm9yMDQ3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiOTk5OTkuOTkiKSkuZm9ybWF0KDMsMCwtMSwzLC0xLC0xKSkuZXF1YWxzKCIgIDFFKzUiKTsKKyAgCisgIChuZXcgVGVzdCgiZm9yMDQ4IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTIzNDUuNzMiKSkuZm9ybWF0KC0xLC0xLDIsMiwtMSwtMSkpLmVxdWFscygiMS4yMzQ1NzNFKzA0Iik7CisgIChuZXcgVGVzdCgiZm9yMDQ5IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTIzNDUuNzMiKSkuZm9ybWF0KC0xLDMsLTEsMCwtMSwtMSkpLmVxdWFscygiMS4yMzVFKzQiKTsKKyAgKG5ldyBUZXN0KCJmb3IwNTAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjIzNDU3MyIpKS5mb3JtYXQoLTEsMywtMSwwLC0xLC0xKSkuZXF1YWxzKCIxLjIzNSIpOworICAobmV3IFRlc3QoImZvcjA1MSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEyMy40NSIpKS5mb3JtYXQoLTEsMywyLDAsLTEsLTEpKS5lcXVhbHMoIjEuMjM1RSswMiIpOworICAKKyAgKG5ldyBUZXN0KCJmb3IwNTIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjQ0NCIpKS5mb3JtYXQoLTEsMCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoImZvcjA1MyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0wLjQ0NCIpKS5mb3JtYXQoLTEsMCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoImZvcjA1NCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuNCIpKS5mb3JtYXQoLTEsMCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoImZvcjA1NSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0wLjQiKSkuZm9ybWF0KC0xLDApKS5lcXVhbHMoIjAiKTsKKyAgCisgIGVuZz1jb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LkVOR0lORUVSSU5HOworICBzY2k9Y29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5TQ0lFTlRJRklDOworICAobmV3IFRlc3QoImZvcjA2MCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQuNSIpKS5mb3JtYXQoLTEsMywyLDAsZW5nLC0xKSkuZXF1YWxzKCIxLjIzNUUrMDMiKTsKKyAgKG5ldyBUZXN0KCJmb3IwNjEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMjM0NSIpKS5mb3JtYXQoLTEsMywzLDAsZW5nLC0xKSkuZXF1YWxzKCIxMi4zNDVFKzAwMyIpOworICAobmV3IFRlc3QoImZvcjA2MiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1IikpLmZvcm1hdCgtMSwzLDMsMCxzY2ksLTEpKS5lcXVhbHMoIjEuMjM1RSswMDQiKTsKKyAgKG5ldyBUZXN0KCJmb3IwNjMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMjM0LjUiKSkuZm9ybWF0KDQsMywyLDAsZW5nLC0xKSkuZXF1YWxzKCIgICAxLjIzNUUrMDMiKTsKKyAgKG5ldyBUZXN0KCJmb3IwNjQiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMjM0NSIpKS5mb3JtYXQoNSwzLDMsMCxlbmcsLTEpKS5lcXVhbHMoIiAgIDEyLjM0NUUrMDAzIik7CisgIChuZXcgVGVzdCgiZm9yMDY1IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTIzNDUiKSkuZm9ybWF0KDYsMywzLDAsc2NpLC0xKSkuZXF1YWxzKCIgICAgIDEuMjM1RSswMDQiKTsKKyAgCisgIChuZXcgVGVzdCgiZm9yMDY2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS4yMzQ1IikpLmZvcm1hdCgtMSwzLDIsMCwtMSwtMSkpLmVxdWFscygiMS4yMzUgICAgIik7CisgIChuZXcgVGVzdCgiZm9yMDY3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTIzNDUuNzMiKSkuZm9ybWF0KC0xLC0xLDMsNiwtMSwtMSkpLmVxdWFscygiMTIzNDUuNzMgICAgICIpOworICAobmV3IFRlc3QoImZvcjA2OCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1ZSs1IikpLmZvcm1hdCgtMSwwKSkuZXF1YWxzKCIxMjM0NTAwMDAwIik7CisgIChuZXcgVGVzdCgiZm9yMDY5IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTIzNDVlKzUiKSkuZm9ybWF0KC0xLDEpKS5lcXVhbHMoIjEyMzQ1MDAwMDAuMCIpOworICAobmV3IFRlc3QoImZvcjA3MCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1ZSs1IikpLmZvcm1hdCgtMSwyKSkuZXF1YWxzKCIxMjM0NTAwMDAwLjAwIik7CisgIChuZXcgVGVzdCgiZm9yMDcxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTIzNDVlKzUiKSkuZm9ybWF0KC0xLDMpKS5lcXVhbHMoIjEyMzQ1MDAwMDAuMDAwIik7CisgIChuZXcgVGVzdCgiZm9yMDcyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTIzNDVlKzUiKSkuZm9ybWF0KC0xLDQpKS5lcXVhbHMoIjEyMzQ1MDAwMDAuMDAwMCIpOworICAKKyAgLy8gc29tZSBmcm9tIEFOU0kgRGFsbGFzIFtOb3YgMTk5OF0KKyAgKG5ldyBUZXN0KCJmb3IwNzMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5OS45OTkiKSkuZm9ybWF0KC0xLDIsLTEsMiwtMSwtMSkpLmVxdWFscygiMTAwLjAwIik7CisgIChuZXcgVGVzdCgiZm9yMDc0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC45OTk5OSIpKS5mb3JtYXQoLTEsNCwyLDIsLTEsLTEpKS5lcXVhbHMoIjEuMDAwMCAgICAiKTsKKyAgCisgIC8vIHRyeSBzb21lIHJvdW5kaW5nIG1vZGVzIFtkZWZhdWx0IFJPVU5EX0hBTEZfVVAgd2lkZWx5IHRlc3RlZCBhYm92ZV0KKyAgLy8gdGhlIGZpcnN0IGZldyBhbHNvIHRlc3RzIHRoYXQgZGVmYXVsdHMgYXJlIGFjY2VwdGVkIGZvciB0aGUgb3RoZXJzCisgIGQwND1uZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjA0Iik7CisgIGQwNT1uZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjA1Iik7CisgIGQwNj1uZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjA2Iik7CisgIGQxNT1uZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjE1Iik7CisgIChuZXcgVGVzdCgiZm9yMDgwIikpLm9rPShkMDUuZm9ybWF0KC0xLDEpKS5lcXVhbHMoIjAuMSIpOworICAobmV3IFRlc3QoImZvcjA4MSIpKS5vaz0oZDA1LmZvcm1hdCgtMSwxLC0xLC0xLC0xLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCkpLmVxdWFscygiMC4xIik7CisgIChuZXcgVGVzdCgiZm9yMDgyIikpLm9rPShkMDUuZm9ybWF0KC0xLDEsLTEsLTEsLTEsLTEpKS5lcXVhbHMoIjAuMSIpOworICAobmV3IFRlc3QoImZvcjA4MyIpKS5vaz0oZDA1LmZvcm1hdCgtMSwtMSwtMSwtMSwtMSwtMSkpLmVxdWFscygiMC4wNSIpOworICAobmV3IFRlc3QoImZvcjA4NCIpKS5vaz0oZDA1LmZvcm1hdCgtMSwtMSkpLmVxdWFscygiMC4wNSIpOworICB0cnl7CisgICBkMDUuZm9ybWF0KC0xLC0xLC0xLC0xLC0xLDMwKTsgLy8gYmFkIG1vZGUKKyAgIGZsYWc9ZmFsc2U7IC8vIHNob3VsZG4ndCBnZXQgaGVyZQorICB9CisgIGNhdGNoIChqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uICQ5NCl7aWFlPSQ5NDsKKyAgIGZsYWc9KGlhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiQmFkIGFyZ3VtZW50IDYgdG8gZm9ybWF0OiAzMCIpOworICB9CisgIChuZXcgVGVzdCgiZm9yMDg1IikpLm9rPWZsYWc7CisgIAorICAobmV3IFRlc3QoImZvcjA5MCIpKS5vaz0oZDA0LmZvcm1hdCgtMSwxKSkuZXF1YWxzKCIwLjAiKTsKKyAgKG5ldyBUZXN0KCJmb3IwOTEiKSkub2s9KGQwNi5mb3JtYXQoLTEsMSkpLmVxdWFscygiMC4xIik7CisgIChuZXcgVGVzdCgiZm9yMDkyIikpLm9rPShkMDQuZm9ybWF0KC0xLDEsLTEsLTEsLTEsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0RPV04pKS5lcXVhbHMoIjAuMCIpOworICAobmV3IFRlc3QoImZvcjA5MyIpKS5vaz0oZDA1LmZvcm1hdCgtMSwxLC0xLC0xLC0xLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9ET1dOKSkuZXF1YWxzKCIwLjAiKTsKKyAgKG5ldyBUZXN0KCJmb3IwOTQiKSkub2s9KGQwNi5mb3JtYXQoLTEsMSwtMSwtMSwtMSxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRE9XTikpLmVxdWFscygiMC4xIik7CisgIAorICAobmV3IFRlc3QoImZvcjA5NSIpKS5vaz0oZDA0LmZvcm1hdCgtMSwxLC0xLC0xLC0xLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9FVkVOKSkuZXF1YWxzKCIwLjAiKTsKKyAgKG5ldyBUZXN0KCJmb3IwOTYiKSkub2s9KGQwNS5mb3JtYXQoLTEsMSwtMSwtMSwtMSxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRVZFTikpLmVxdWFscygiMC4wIik7CisgIChuZXcgVGVzdCgiZm9yMDk3IikpLm9rPShkMDYuZm9ybWF0KC0xLDEsLTEsLTEsLTEsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0VWRU4pKS5lcXVhbHMoIjAuMSIpOworICAobmV3IFRlc3QoImZvcjA5OCIpKS5vaz0oZDE1LmZvcm1hdCgtMSwxLC0xLC0xLC0xLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9FVkVOKSkuZXF1YWxzKCIwLjIiKTsKKyAgZDA1MD1uZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjA1MCIpOworICBkMTUwPW5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMTUwIik7CisgIChuZXcgVGVzdCgiZm9yMDk5IikpLm9rPShkMDUwLmZvcm1hdCgtMSwxLC0xLC0xLC0xLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9FVkVOKSkuZXF1YWxzKCIwLjAiKTsKKyAgKG5ldyBUZXN0KCJmb3IxMDAiKSkub2s9KGQxNTAuZm9ybWF0KC0xLDEsLTEsLTEsLTEsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0VWRU4pKS5lcXVhbHMoIjAuMiIpOworICBtMDUwPW5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0wLjA1MCIpOworICBtMTUwPW5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0wLjE1MCIpOworICAobmV3IFRlc3QoImZvcjEwMSIpKS5vaz0obTA1MC5mb3JtYXQoLTEsMSwtMSwtMSwtMSxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRVZFTikpLmVxdWFscygiMC4wIik7CisgIChuZXcgVGVzdCgiZm9yMTAyIikpLm9rPShtMTUwLmZvcm1hdCgtMSwxLC0xLC0xLC0xLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9FVkVOKSkuZXF1YWxzKCItMC4yIik7CisgIGQwNTE9bmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wNTEiKTsKKyAgZDE1MT1uZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjE1MSIpOworICAobmV3IFRlc3QoImZvcjEwMyIpKS5vaz0oZDA1MS5mb3JtYXQoLTEsMSwtMSwtMSwtMSxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRVZFTikpLmVxdWFscygiMC4xIik7CisgIChuZXcgVGVzdCgiZm9yMTA0IikpLm9rPShkMTUxLmZvcm1hdCgtMSwxLC0xLC0xLC0xLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9FVkVOKSkuZXF1YWxzKCIwLjIiKTsKKyAgCisgIChuZXcgVGVzdCgiZm9yMTA1IikpLm9rPShtMDUwLmZvcm1hdCgtMSwxLC0xLC0xLC0xLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfQ0VJTElORykpLmVxdWFscygiMC4wIik7CisgIChuZXcgVGVzdCgiZm9yMTA2IikpLm9rPShtMTUwLmZvcm1hdCgtMSwxLC0xLC0xLC0xLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfQ0VJTElORykpLmVxdWFscygiLTAuMSIpOworICAobmV3IFRlc3QoImZvcjEwNyIpKS5vaz0oZDA1MC5mb3JtYXQoLTEsMSwtMSwtMSwtMSxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0NFSUxJTkcpKS5lcXVhbHMoIjAuMSIpOworICAobmV3IFRlc3QoImZvcjEwOCIpKS5vaz0oZDE1MC5mb3JtYXQoLTEsMSwtMSwtMSwtMSxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0NFSUxJTkcpKS5lcXVhbHMoIjAuMiIpOworICAKKyAgKG5ldyBUZXN0KCJmb3IxMDkiKSkub2s9KG0wNTAuZm9ybWF0KC0xLDEsLTEsLTEsLTEsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9GTE9PUikpLmVxdWFscygiLTAuMSIpOworICAobmV3IFRlc3QoImZvcjExMCIpKS5vaz0obTE1MC5mb3JtYXQoLTEsMSwtMSwtMSwtMSxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0ZMT09SKSkuZXF1YWxzKCItMC4yIik7CisgIChuZXcgVGVzdCgiZm9yMTExIikpLm9rPShkMDUwLmZvcm1hdCgtMSwxLC0xLC0xLC0xLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfRkxPT1IpKS5lcXVhbHMoIjAuMCIpOworICAobmV3IFRlc3QoImZvcjExMiIpKS5vaz0oZDE1MC5mb3JtYXQoLTEsMSwtMSwtMSwtMSxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0ZMT09SKSkuZXF1YWxzKCIwLjEiKTsKKyAgCisgIChuZXcgVGVzdCgiZm9yMTEzIikpLm9rPShtMDUwLmZvcm1hdCgtMSwxLC0xLC0xLC0xLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfVVApKS5lcXVhbHMoIi0wLjEiKTsKKyAgKG5ldyBUZXN0KCJmb3IxMTQiKSkub2s9KG0xNTAuZm9ybWF0KC0xLDEsLTEsLTEsLTEsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9VUCkpLmVxdWFscygiLTAuMiIpOworICAobmV3IFRlc3QoImZvcjExNSIpKS5vaz0oZDA1MC5mb3JtYXQoLTEsMSwtMSwtMSwtMSxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX1VQKSkuZXF1YWxzKCIwLjEiKTsKKyAgKG5ldyBUZXN0KCJmb3IxMTYiKSkub2s9KGQxNTAuZm9ybWF0KC0xLDEsLTEsLTEsLTEsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9VUCkpLmVxdWFscygiMC4yIik7CisgIAorICAobmV3IFRlc3QoImZvcjExNyIpKS5vaz0obTA1MC5mb3JtYXQoLTEsMSwtMSwtMSwtMSxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0RPV04pKS5lcXVhbHMoIjAuMCIpOworICAobmV3IFRlc3QoImZvcjExOCIpKS5vaz0obTE1MC5mb3JtYXQoLTEsMSwtMSwtMSwtMSxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0RPV04pKS5lcXVhbHMoIi0wLjEiKTsKKyAgKG5ldyBUZXN0KCJmb3IxMTkiKSkub2s9KGQwNTAuZm9ybWF0KC0xLDEsLTEsLTEsLTEsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9ET1dOKSkuZXF1YWxzKCIwLjAiKTsKKyAgKG5ldyBUZXN0KCJmb3IxMjAiKSkub2s9KGQxNTAuZm9ybWF0KC0xLDEsLTEsLTEsLTEsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9ET1dOKSkuZXF1YWxzKCIwLjEiKTsKKyAgCisgIGQwMDA9bmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wMDAiKTsKKyAgZDUwMD1uZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjUwMCIpOworICAobmV3IFRlc3QoImZvcjEyMSIpKS5vaz0oZDAwMC5mb3JtYXQoLTEsMSwtMSwtMSwtMSxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX1VOTkVDRVNTQVJZKSkuZXF1YWxzKCIwLjAiKTsKKyAgKG5ldyBUZXN0KCJmb3IxMjIiKSkub2s9KGQwMDAuZm9ybWF0KC0xLDIsLTEsLTEsLTEsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9VTk5FQ0VTU0FSWSkpLmVxdWFscygiMC4wMCIpOworICAobmV3IFRlc3QoImZvcjEyMyIpKS5vaz0oZDAwMC5mb3JtYXQoLTEsMywtMSwtMSwtMSxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX1VOTkVDRVNTQVJZKSkuZXF1YWxzKCIwLjAwMCIpOworICB0cnl7IC8vIHRoaXMgc2hvdWxkIHRyYXAuLgorICAgZDA1MC5mb3JtYXQoLTEsMSwtMSwtMSwtMSxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX1VOTkVDRVNTQVJZKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH0KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQ5NSl7YWU9JDk1OworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIlJvdW5kaW5nIG5lY2Vzc2FyeSIpOworICB9CisgIChuZXcgVGVzdCgiZm9yMTI0IikpLm9rPWZsYWc7CisgIChuZXcgVGVzdCgiZm9yMTI1IikpLm9rPShkMDUwLmZvcm1hdCgtMSwyLC0xLC0xLC0xLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfVU5ORUNFU1NBUlkpKS5lcXVhbHMoIjAuMDUiKTsKKyAgKG5ldyBUZXN0KCJmb3IxMjYiKSkub2s9KGQwNTAuZm9ybWF0KC0xLDMsLTEsLTEsLTEsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9VTk5FQ0VTU0FSWSkpLmVxdWFscygiMC4wNTAiKTsKKyAgKG5ldyBUZXN0KCJmb3IxMjciKSkub2s9KGQ1MDAuZm9ybWF0KC0xLDEsLTEsLTEsLTEsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9VTk5FQ0VTU0FSWSkpLmVxdWFscygiMC41Iik7CisgIChuZXcgVGVzdCgiZm9yMTI4IikpLm9rPShkNTAwLmZvcm1hdCgtMSwyLC0xLC0xLC0xLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfVU5ORUNFU1NBUlkpKS5lcXVhbHMoIjAuNTAiKTsKKyAgKG5ldyBUZXN0KCJmb3IxMjkiKSkub2s9KGQ1MDAuZm9ybWF0KC0xLDMsLTEsLTEsLTEsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9VTk5FQ0VTU0FSWSkpLmVxdWFscygiMC41MDAiKTsKKyAgCisgIC8vIGJhZCBuZWdzIC0tCisgIHRyeXsKKyAgIGQwNTAuZm9ybWF0KC0yLC0xLC0xLC0xLC0xLC0xKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH0KKyAgY2F0Y2ggKGphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gJDk2KXsKKyAgIGZsYWc9dHJ1ZTsKKyAgfQorICAobmV3IFRlc3QoImZvcjEzMSIpKS5vaz1mbGFnOworICB0cnl7CisgICBkMDUwLmZvcm1hdCgtMSwtMiwtMSwtMSwtMSwtMSk7CisgICBmbGFnPWZhbHNlOworICB9CisgIGNhdGNoIChqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uICQ5Nyl7CisgICBmbGFnPXRydWU7CisgIH0KKyAgKG5ldyBUZXN0KCJmb3IxMzIiKSkub2s9ZmxhZzsKKyAgdHJ5eworICAgZDA1MC5mb3JtYXQoLTEsLTEsLTIsLTEsLTEsLTEpOworICAgZmxhZz1mYWxzZTsKKyAgfQorICBjYXRjaCAoamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiAkOTgpeworICAgZmxhZz10cnVlOworICB9CisgIChuZXcgVGVzdCgiZm9yMTMzIikpLm9rPWZsYWc7CisgIHRyeXsKKyAgIGQwNTAuZm9ybWF0KC0xLC0xLC0xLC0yLC0xLC0xKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH0KKyAgY2F0Y2ggKGphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gJDk5KXsKKyAgIGZsYWc9dHJ1ZTsKKyAgfQorICAobmV3IFRlc3QoImZvcjEzNCIpKS5vaz1mbGFnOworICB0cnl7CisgICBkMDUwLmZvcm1hdCgtMSwtMSwtMSwtMSwtMiwtMSk7CisgICBmbGFnPWZhbHNlOworICB9CisgIGNhdGNoIChqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uICQxMDApeworICAgZmxhZz10cnVlOworICB9CisgIChuZXcgVGVzdCgiZm9yMTM1IikpLm9rPWZsYWc7CisgIHRyeXsKKyAgIGQwNTAuZm9ybWF0KC0xLC0xLC0xLC0xLC0xLC0yKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH0KKyAgY2F0Y2ggKGphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gJDEwMSl7CisgICBmbGFnPXRydWU7CisgIH0KKyAgKG5ldyBUZXN0KCJmb3IxMzYiKSkub2s9ZmxhZzsKKyAgCisgIHN1bW1hcnkoImZvcm1hdCIpOworICByZXR1cm47fQorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiogVGVzdCB0aGUge0BsaW5rIEJpZ0RlY2ltYWwjaGFzaENvZGV9IG1ldGhvZC4gKi8KKyAKKyBwdWJsaWMgdm9pZCBkaWFnaGFzaGNvZGUoKXsKKyAgamF2YS5sYW5nLlN0cmluZyBoczsKKyAgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIGQ7CisgIGhzPSIyNzgyNzgxNyI7CisgIGQ9bmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChocyk7CisgIChuZXcgVGVzdCgiaGFzMDAxIikpLm9rPShkLmhhc2hDb2RlKCkpPT0oaHMuaGFzaENvZGUoKSk7CisgIGhzPSIxLjI2NUUrMjAwIjsKKyAgZD1uZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGhzKTsKKyAgKG5ldyBUZXN0KCJoYXMwMDIiKSkub2s9KGQuaGFzaENvZGUoKSk9PShocy5oYXNoQ29kZSgpKTsKKyAgaHM9IjEyNi41RSsyMDAiOworICBkPW5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoaHMpOworICAobmV3IFRlc3QoImhhczAwMyIpKS5vaz0oZC5oYXNoQ29kZSgpKSE9KGhzLmhhc2hDb2RlKCkpOworICBzdW1tYXJ5KCJoYXNoQ29kZSIpOworICByZXR1cm47fQorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiogVGVzdCB0aGUge0BsaW5rIEJpZ0RlY2ltYWwjaW50VmFsdWV9IG1ldGhvZC4gKi8KKyAKKyBwdWJsaWMgdm9pZCBkaWFnaW50dmFsdWUoKXsKKyAgYm9vbGVhbiBmbGFnPWZhbHNlOworICBqYXZhLmxhbmcuU3RyaW5nIHY9bnVsbDsKKyAgamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gYWU9bnVsbDsKKyAgamF2YS5sYW5nLlN0cmluZyBiYWRzdHJpbmdzW107CisgIGludCBpPTA7CisgIGphdmEubGFuZy5TdHJpbmcgbm9ybT1udWxsOworICBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgZGltYXg7CisgIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCBudW09bnVsbDsKKyAgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIGR2PW51bGw7CisgIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCBkaW1pbjsKKyAgCisgIAorICAvLyBpbnRWYWx1ZSAtLQorICAKKyAgKG5ldyBUZXN0KCJpbnYwMDEiKSkub2s9aW1pbj09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGltaW4pKS5pbnRWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJpbnYwMDIiKSkub2s9KCg5OSkpPT0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjk5IikpLmludFZhbHVlKCkpOworICAobmV3IFRlc3QoImludjAwMyIpKS5vaz0oKDEpKT09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxIikpLmludFZhbHVlKCkpOworICAobmV3IFRlc3QoImludjAwNCIpKS5vaz0oKDApKT09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwIikpLmludFZhbHVlKCkpOworICAobmV3IFRlc3QoImludjAwNSIpKS5vaz0oKC0xKSk9PSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTEiKSkuaW50VmFsdWUoKSk7CisgIChuZXcgVGVzdCgiaW52MDA2IikpLm9rPSgoLTk5KSk9PSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTk5IikpLmludFZhbHVlKCkpOworICAobmV3IFRlc3QoImludjAwNyIpKS5vaz1pbWF4PT0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoaW1heCkpLmludFZhbHVlKCkpOworICAobmV3IFRlc3QoImludjAwOCIpKS5vaz0oKDUpKT09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI1LjAiKSkuaW50VmFsdWUoKSk7CisgIChuZXcgVGVzdCgiaW52MDA5IikpLm9rPSgoNSkpPT0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjUuMyIpKS5pbnRWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJpbnYwMTAiKSkub2s9KCg1KSk9PSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNS41IikpLmludFZhbHVlKCkpOworICAobmV3IFRlc3QoImludjAxMSIpKS5vaz0oKDUpKT09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI1LjciKSkuaW50VmFsdWUoKSk7CisgIChuZXcgVGVzdCgiaW52MDEyIikpLm9rPSgoNSkpPT0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjUuOSIpKS5pbnRWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJpbnYwMTMiKSkub2s9KCgtNSkpPT0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi01LjAiKSkuaW50VmFsdWUoKSk7CisgIChuZXcgVGVzdCgiaW52MDE0IikpLm9rPSgoLTUpKT09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItNS4zIikpLmludFZhbHVlKCkpOworICAobmV3IFRlc3QoImludjAxNSIpKS5vaz0oKC01KSk9PSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTUuNSIpKS5pbnRWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJpbnYwMTYiKSkub2s9KCgtNSkpPT0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi01LjciKSkuaW50VmFsdWUoKSk7CisgIChuZXcgVGVzdCgiaW52MDE3IikpLm9rPSgoLTUpKT09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItNS45IikpLmludFZhbHVlKCkpOworICAobmV3IFRlc3QoImludjAxOCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjg4ODg4ODg4ODg4IikpLmludFZhbHVlKCkpPT0oLTEzMDU0MjQzMjgpOyAvLyB1Z2gKKyAgKG5ldyBUZXN0KCJpbnYwMTkiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItODg4ODg4ODg4ODgiKSkuaW50VmFsdWUoKSk9PTEzMDU0MjQzMjg7IC8vIHVnaAorICAobmV3IFRlc3QoImludjAyMCIpKS5vaz0oKGltaW4pKT09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCgoKGxvbmcpaW1heCkpKzEpKS5pbnRWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJpbnYwMjEiKSkub2s9KChpbWF4KSk9PSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgoKChsb25nKWltaW4pKS0xKSkuaW50VmFsdWUoKSk7CisgIAorICAvLyBpbnRWYWx1ZUV4YWN0IC0tCisgIAorICAobmV3IFRlc3QoImludjEwMSIpKS5vaz1pbWluPT0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoaW1pbikpLmludFZhbHVlRXhhY3QoKSk7CisgIChuZXcgVGVzdCgiaW52MTAyIikpLm9rPSgoOTkpKT09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5OSIpKS5pbnRWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJpbnYxMDMiKSkub2s9KCgxKSk9PSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMSIpKS5pbnRWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJpbnYxMDQiKSkub2s9KCgwKSk9PSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMCIpKS5pbnRWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJpbnYxMDUiKSkub2s9KCgtMSkpPT0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0xIikpLmludFZhbHVlKCkpOworICAobmV3IFRlc3QoImludjEwNiIpKS5vaz0oKC05OSkpPT0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi05OSIpKS5pbnRWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJpbnYxMDciKSkub2s9aW1heD09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGltYXgpKS5pbnRWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJpbnYxMDgiKSkub2s9KCg1KSk9PSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiNS4wIikpLmludFZhbHVlKCkpOworICAobmV3IFRlc3QoImludjEwOSIpKS5vaz0oKC01KSk9PSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTUuMCIpKS5pbnRWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJpbnYxMTAiKSkub2s9aW1heD09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGltYXgpKS5pbnRWYWx1ZUV4YWN0KCkpOworICAKKyAgdHJ5eworICAgdj0iLTg4NTg4Njg4ODg4IjsKKyAgIChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKHYpKS5pbnRWYWx1ZUV4YWN0KCk7CisgICBmbGFnPWZhbHNlOworICB9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkMTAyKXthZT0kMTAyOworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIkNvbnZlcnNpb24gb3ZlcmZsb3c6IisiICIrdik7CisgIH0KKyAgKG5ldyBUZXN0KCJpbnYyMDAiKSkub2s9ZmxhZzsKKyAgCisgIC8vIHRoaXMgb25lIGNvdWxkIHJhaXNlIGVpdGhlciBvdmVyZmxvdyBvciBiYWQgZGVjaW1hbCBwYXJ0CisgIHRyeXsKKyAgIHY9Ijg4MDg4ODE4ODg4LjAwMDAxIjsKKyAgIChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKHYpKS5pbnRWYWx1ZUV4YWN0KCk7CisgICBmbGFnPWZhbHNlOworICB9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkMTAzKXsKKyAgIGZsYWc9dHJ1ZTsKKyAgfQorICAobmV3IFRlc3QoImludjIwMSIpKS5vaz1mbGFnOworICAKKyAgLy8gMTk5OS4xMC4yODogdGhlIHRlc3RjYXNlcyBtYXJrZWQgJyonIGZhaWxlZAorICBiYWRzdHJpbmdzPW5ldyBqYXZhLmxhbmcuU3RyaW5nW117IjEyMzQ1Njc4OTAxIiwobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChpbWF4KSkuYWRkKG9uZSkudG9TdHJpbmcoKSwobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChpbWluKSkuc3VidHJhY3Qob25lKS50b1N0cmluZygpLCIzNzMxMzY3MjkzIiwiNDczMTM2NzI5MyIsIjU3MzEzNjcyOTMiLCI2NzMxMzY3MjkzIiwiNzczMTM2NzI5MyIsIjg3MzEzNjcyOTMiLCI5NzMxMzY3MjkzIiwiLTM3MzEzNjcyOTMiLCItNDczMTM2NzI5MyIsIi01NzMxMzY3MjkzIiwiLTY3MzEzNjcyOTMiLCItNzczMTM2NzI5MyIsIi04NzMxMzY3MjkzIiwiLTk3MzEzNjcyOTMiLChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGltaW4pKS5tdWx0aXBseSh0d28pLnRvU3RyaW5nKCksKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoaW1heCkpLm11bHRpcGx5KHR3bykudG9TdHJpbmcoKSwobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChpbWluKSkubXVsdGlwbHkodGVuKS50b1N0cmluZygpLChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGltYXgpKS5tdWx0aXBseSh0ZW4pLnRvU3RyaW5nKCksIjQ3MzEzNjcyOTMiLCI0ODMxMzY3MjkzIiwiNDkzMTM2NzI5MyIsIjUwMzEzNjcyOTMiLCI1MTMxMzY3MjkzIiwiNTIzMTM2NzI5MyIsIjUzMzEzNjcyOTMiLCI1NDMxMzY3MjkzIiwiNTUzMTM2NzI5MyIsIjU2MzEzNjcyOTMiLCI1NzMxMzY3MjkzIiwiNTgzMTM2NzI5MyIsIjU5MzEzNjcyOTMiLCI2MDMxMzY3MjkzIiwiNjEzMTM2NzI5MyIsIjYyMzEzNjcyOTMiLCI2MzMxMzY3MjkzIiwiNjQzMTM2NzI5MyIsIjY1MzEzNjcyOTMiLCI2NjMxMzY3MjkzIiwiNjczMTM2NzI5MyIsIjIyMDAwMDAwMDAiLCIyMzAwMDAwMDAwIiwiMjQwMDAwMDAwMCIsIjI1MDAwMDAwMDAiLCIyNjAwMDAwMDAwIiwiMjcwMDAwMDAwMCIsIjI4MDAwMDAwMDAiLCIyOTAwMDAwMDAwIiwiLTIyMDAwMDAwMDAiLCItMjMwMDAwMDAwMCIsIi0yNDAwMDAwMDAwIiwiLTI1MDAwMDAwMDAiLCItMjYwMDAwMDAwMCIsIi0yNzAwMDAwMDAwIiwiLTI4MDAwMDAwMDAiLCItMjkwMDAwMDAwMCIsIjI1RSs4IiwiLTI1RSs4IiwiLTEyMzQ1Njc4OTAxIn07IC8vIDIyMAorICAvLyAyMjEKKyAgLy8gMjIyCisgIC8vIDIyMworICAvLyAyMjQKKyAgLy8gMjI1ICAqCisgIC8vIDIyNgorICAvLyAyMjcKKyAgLy8gMjI4CisgIC8vIDIyOSAgKgorICAvLyAyMzAKKyAgLy8gMjMxCisgIC8vIDIzMiAgKgorICAvLyAyMzMKKyAgLy8gMjM0CisgIC8vIDIzNQorICAvLyAyMzYgICoKKyAgLy8gMjM3CisgIC8vIDIzOAorICAvLyAyMzkKKyAgLy8gMjQwCisgIC8vIDI0MQorICAvLyAyNDIgICoKKyAgLy8gMjQzICAqCisgIC8vIDI0NCAgKgorICAvLyAyNDUgICoKKyAgLy8gMjQ2ICAqCisgIC8vIDI0NyAgKgorICAvLyAyNDggICoKKyAgLy8gMjQ5ICAqCisgIC8vIDI1MCAgKgorICAvLyAyNTEgICoKKyAgLy8gMjUyICAqCisgIC8vIDI1MyAgKgorICAvLyAyNTQgICoKKyAgLy8gMjU1ICAqCisgIC8vIDI1NiAgKgorICAvLyAyNTcgICoKKyAgLy8gMjU4ICAqCisgIC8vIDI1OQorICAvLyAyNjAKKyAgLy8gMjYxCisgIC8vIDI2MgorICAvLyAyNjMKKyAgLy8gMjY0CisgIC8vIDI2NQorICAvLyAyNjYKKyAgLy8gMjY3CisgIC8vIDI2OAorICAvLyAyNjkKKyAgLy8gMjcwCisgIC8vIDI3MQorICAvLyAyNzIKKyAgLy8gMjczCisgIC8vIDI3NAorICAvLyAyNzUKKyAgLy8gMjc2CisgIC8vIDI3NworICAvLyAyNzgKKyAgLy8gMjc5CisgIC8vIDI4MAorICB7aW50ICQxMDQ9YmFkc3RyaW5ncy5sZW5ndGg7aT0wO2k6Zm9yKDskMTA0PjA7JDEwNC0tLGkrKyl7CisgICB0cnl7CisgICAgdj1iYWRzdHJpbmdzW2ldOworICAgIChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKHYpKS5pbnRWYWx1ZUV4YWN0KCk7CisgICAgZmxhZz1mYWxzZTsKKyAgIH0KKyAgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkMTA1KXthZT0kMTA1OworICAgIG5vcm09KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwodikpLnRvU3RyaW5nKCk7CisgICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIkNvbnZlcnNpb24gb3ZlcmZsb3c6IisiICIrbm9ybSk7CisgICB9CisgICAobmV3IFRlc3QoImludiIrKDIyMCtpKSkpLm9rPWZsYWc7CisgICB9CisgIH0vKmkqLworICAKKyAgLy8gbm93IHNsaXAgaW4gc29tZSBzaW5nbGUgYml0cy4uLgorICBkaW1heD1uZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGltYXgpOworICB7aT0wO2k6Zm9yKDtpPD00OTtpKyspeworICAgdHJ5eworICAgIG51bT10d28ucG93KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoaSksbWM1MCk7CisgICAgZHY9ZGltYXguYWRkKG51bSxtYzUwKTsKKyAgICBkdi5pbnRWYWx1ZUV4YWN0KCk7CisgICAgZmxhZz1mYWxzZTsKKyAgIH0KKyAgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkMTA2KXthZT0kMTA2OworICAgIG5vcm09ZHYudG9TdHJpbmcoKTsKKyAgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiQ29udmVyc2lvbiBvdmVyZmxvdzoiKyIgIitub3JtKTsKKyAgIH0KKyAgIChuZXcgVGVzdCgiaW52IisoMzAwK2kpKSkub2s9ZmxhZzsKKyAgIH0KKyAgfS8qaSovCisgIGRpbWluPW5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoaW1pbik7CisgIHtpPTUwO2k6Zm9yKDtpPD05OTtpKyspeworICAgdHJ5eworICAgIG51bT10d28ucG93KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoaSksbWM1MCk7CisgICAgZHY9ZGltaW4uc3VidHJhY3QobnVtLG1jNTApOworICAgIGR2LmludFZhbHVlRXhhY3QoKTsKKyAgICBmbGFnPWZhbHNlOworICAgfQorICAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQxMDcpe2FlPSQxMDc7CisgICAgbm9ybT1kdi50b1N0cmluZygpOworICAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJDb252ZXJzaW9uIG92ZXJmbG93OiIrIiAiK25vcm0pOworICAgfQorICAgKG5ldyBUZXN0KCJpbnYiKygzMDAraSkpKS5vaz1mbGFnOworICAgfQorICB9LyppKi8KKyAgCisgIC8vIHRoZSBmb2xsb3dpbmcgc2hvdWxkIGFsbCByYWlzZSBiYWQtZGVjaW1hbC1wYXJ0IGV4Y2VwdGlvbnMKKyAgYmFkc3RyaW5ncz1uZXcgamF2YS5sYW5nLlN0cmluZ1tdeyIwLjA5IiwiMC45IiwiMC4wMSIsIjAuMSIsIi0wLjAxIiwiLTAuMSIsIjEuMDEiLCItMS4wMSIsIi0xLjEiLCItMTExLjExMSIsIisxMTEuMTExIiwiMS4wOSIsIjEuMDUiLCIxLjA0IiwiMS45OSIsIjEuOSIsIjEuNSIsIjEuNCIsIi0xLjA5IiwiLTEuMDUiLCItMS4wNCIsIi0xLjk5IiwiLTEuOSIsIi0xLjUiLCItMS40IiwiMUUtMTAwMCIsIi0xRS0xMDAwIiwiMTFFLTEiLCIxLjUifTsgLy8gNDAwLTQwMworICAvLyA0MDQtNDA3CisgIC8vIDQwOC00MTEKKyAgLy8gNDEyLTQxNgorICAvLyA0MTctNDIwCisgIC8vIDQyMS00MjQKKyAgLy8gNDI1LTQyOAorICAKKyAge2ludCAkMTA4PWJhZHN0cmluZ3MubGVuZ3RoO2k9MDtpOmZvcig7JDEwOD4wOyQxMDgtLSxpKyspeworICAgdHJ5eworICAgIHY9YmFkc3RyaW5nc1tpXTsKKyAgICAobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCh2KSkuaW50VmFsdWVFeGFjdCgpOworICAgIGZsYWc9ZmFsc2U7CisgICB9CisgICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDEwOSl7YWU9JDEwOTsKKyAgICBub3JtPShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKHYpKS50b1N0cmluZygpOworICAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJEZWNpbWFsIHBhcnQgbm9uLXplcm86IisiICIrbm9ybSk7CisgICB9CisgICAobmV3IFRlc3QoImludiIrKDQwMCtpKSkpLm9rPWZsYWc7CisgICB9CisgIH0vKmkqLworICAKKyAgc3VtbWFyeSgiaW50VmFsdWUrIik7CisgIHJldHVybjt9CisKKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIAorIC8qKiBUZXN0IHRoZSB7QGxpbmsgQmlnRGVjaW1hbCNsb25nVmFsdWV9IG1ldGhvZC4gKi8KKyAKKyBwdWJsaWMgdm9pZCBkaWFnbG9uZ3ZhbHVlKCl7CisgIGJvb2xlYW4gZmxhZz1mYWxzZTsKKyAgamF2YS5sYW5nLlN0cmluZyB2PW51bGw7CisgIGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uIGFlPW51bGw7CisgIGphdmEubGFuZy5TdHJpbmcgYmFkc3RyaW5nc1tdOworICBpbnQgaT0wOworICBqYXZhLmxhbmcuU3RyaW5nIG5vcm09bnVsbDsKKyAgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIGRsbWF4OworICBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgbnVtPW51bGw7CisgIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCBkdj1udWxsOworICBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgZGxtaW47CisgIAorICAKKyAgLy8gbG9uZ1ZhbHVlIC0tCisgIAorICAobmV3IFRlc3QoImxvdjAwMSIpKS5vaz1sbWluPT0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwobG1pbikpLmxvbmdWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJsb3YwMDIiKSkub2s9KCgobG9uZyk5OSkpPT0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjk5IikpLmxvbmdWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJsb3YwMDMiKSkub2s9KCgobG9uZykxKSk9PSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMSIpKS5sb25nVmFsdWUoKSk7CisgIChuZXcgVGVzdCgibG92MDA0IikpLm9rPSgoKGxvbmcpMCkpPT0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkubG9uZ1ZhbHVlKCkpOworICAobmV3IFRlc3QoImxvdjAwNSIpKS5vaz0oKChsb25nKS0xKSk9PSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTEiKSkubG9uZ1ZhbHVlKCkpOworICAobmV3IFRlc3QoImxvdjAwNiIpKS5vaz0oKChsb25nKS05OSkpPT0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi05OSIpKS5sb25nVmFsdWUoKSk7CisgIChuZXcgVGVzdCgibG92MDA3IikpLm9rPWxtYXg9PSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChsbWF4KSkubG9uZ1ZhbHVlKCkpOworICAobmV3IFRlc3QoImxvdjAwOCIpKS5vaz0oKChsb25nKTUpKT09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI1LjAiKSkubG9uZ1ZhbHVlKCkpOworICAobmV3IFRlc3QoImxvdjAwOSIpKS5vaz0oKChsb25nKTUpKT09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI1LjMiKSkubG9uZ1ZhbHVlKCkpOworICAobmV3IFRlc3QoImxvdjAxMCIpKS5vaz0oKChsb25nKTUpKT09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI1LjUiKSkubG9uZ1ZhbHVlKCkpOworICAobmV3IFRlc3QoImxvdjAxMSIpKS5vaz0oKChsb25nKTUpKT09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI1LjciKSkubG9uZ1ZhbHVlKCkpOworICAobmV3IFRlc3QoImxvdjAxMiIpKS5vaz0oKChsb25nKTUpKT09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI1LjkiKSkubG9uZ1ZhbHVlKCkpOworICAobmV3IFRlc3QoImxvdjAxMyIpKS5vaz0oKChsb25nKS01KSk9PSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTUuMCIpKS5sb25nVmFsdWUoKSk7CisgIChuZXcgVGVzdCgibG92MDE0IikpLm9rPSgoKGxvbmcpLTUpKT09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItNS4zIikpLmxvbmdWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJsb3YwMTUiKSkub2s9KCgobG9uZyktNSkpPT0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi01LjUiKSkubG9uZ1ZhbHVlKCkpOworICAobmV3IFRlc3QoImxvdjAxNiIpKS5vaz0oKChsb25nKS01KSk9PSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTUuNyIpKS5sb25nVmFsdWUoKSk7CisgIChuZXcgVGVzdCgibG92MDE3IikpLm9rPSgoKGxvbmcpLTUpKT09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItNS45IikpLmxvbmdWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJsb3YwMTgiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI4ODg4ODg4ODg4OTk5OTk5OTk5OTgiKSkubG9uZ1ZhbHVlKCkpPT0zNDQ1MTczMzYxOTQxNTIyNDMwTDsgLy8gdWdoCisgIChuZXcgVGVzdCgibG92MDE5IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTg4ODg4ODg4ODg5OTk5OTk5OTk5OCIpKS5sb25nVmFsdWUoKSk9PSgtMzQ0NTE3MzM2MTk0MTUyMjQzMEwpOyAvLyB1Z2gKKyAgCisgIC8vIGxvbmdWYWx1ZUV4YWN0IC0tCisgIAorICAobmV3IFRlc3QoImxvdjEwMSIpKS5vaz1sbWluPT0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwobG1pbikpLmxvbmdWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJsb3YxMDIiKSkub2s9KCgobG9uZyk5OSkpPT0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjk5IikpLmxvbmdWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJsb3YxMDMiKSkub2s9KCgobG9uZykxKSk9PSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMSIpKS5sb25nVmFsdWUoKSk7CisgIChuZXcgVGVzdCgibG92MTA0IikpLm9rPSgoKGxvbmcpMCkpPT0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkubG9uZ1ZhbHVlKCkpOworICAobmV3IFRlc3QoImxvdjEwNSIpKS5vaz0oKChsb25nKS0xKSk9PSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTEiKSkubG9uZ1ZhbHVlKCkpOworICAobmV3IFRlc3QoImxvdjEwNiIpKS5vaz0oKChsb25nKS05OSkpPT0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi05OSIpKS5sb25nVmFsdWUoKSk7CisgIChuZXcgVGVzdCgibG92MTA3IikpLm9rPWxtYXg9PSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChsbWF4KSkubG9uZ1ZhbHVlKCkpOworICAobmV3IFRlc3QoImxvdjEwOCIpKS5vaz0oKChsb25nKTUpKT09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI1LjAiKSkubG9uZ1ZhbHVlKCkpOworICAobmV3IFRlc3QoImxvdjEwOSIpKS5vaz0oKChsb25nKS01KSk9PSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTUuMCIpKS5sb25nVmFsdWUoKSk7CisgIAorICB0cnl7CisgICB2PSItODg4ODg4ODg4ODk5OTk5OTk5OTk4IjsKKyAgIChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKHYpKS5sb25nVmFsdWVFeGFjdCgpOworICAgZmxhZz1mYWxzZTsKKyAgfQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDExMCl7YWU9JDExMDsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJDb252ZXJzaW9uIG92ZXJmbG93OiIrIiAiK3YpOworICB9CisgIChuZXcgVGVzdCgibG92MjAwIikpLm9rPWZsYWc7CisgIHRyeXsKKyAgIHY9Ijg4ODg4ODg3NDg3NDg3NDc5NDg4ODg4IjsKKyAgIChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKHYpKS5sb25nVmFsdWVFeGFjdCgpOworICAgZmxhZz1mYWxzZTsKKyAgfQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDExMSl7YWU9JDExMTsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJDb252ZXJzaW9uIG92ZXJmbG93OiIrIiAiK3YpOworICB9CisgIChuZXcgVGVzdCgibG92MjAxIikpLm9rPWZsYWc7CisgIHRyeXsKKyAgIHY9IjEuNSI7CisgICAobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCh2KSkubG9uZ1ZhbHVlRXhhY3QoKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH0KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQxMTIpe2FlPSQxMTI7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiRGVjaW1hbCBwYXJ0IG5vbi16ZXJvOiIrIiAiK3YpOworICB9CisgIChuZXcgVGVzdCgibG92MjAyIikpLm9rPWZsYWc7CisgIAorICBiYWRzdHJpbmdzPW5ldyBqYXZhLmxhbmcuU3RyaW5nW117IjEyMzQ1Njc4OTAxMTA5ODc2NTQzMjEiLCItMTIzNDU2Nzg5MDExMDk4NzY1NDMyMSIsKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwobG1heCkpLmFkZChvbmUpLnRvU3RyaW5nKCksKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwobG1pbikpLnN1YnRyYWN0KG9uZSkudG9TdHJpbmcoKSwobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChsbWluKSkubXVsdGlwbHkodHdvKS50b1N0cmluZygpLChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGxtYXgpKS5tdWx0aXBseSh0d28pLnRvU3RyaW5nKCksKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwobG1pbikpLm11bHRpcGx5KHRlbikudG9TdHJpbmcoKSwobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChsbWF4KSkubXVsdGlwbHkodGVuKS50b1N0cmluZygpLCI5MjIzMzcyMDM2ODU0Nzc1ODE4IiwiOTMyMzM3MjAzNjg1NDc3NTgxOCIsIjk0MjMzNzIwMzY4NTQ3NzU4MTgiLCI5NTIzMzcyMDM2ODU0Nzc1ODE4IiwiOTYyMzM3MjAzNjg1NDc3NTgxOCIsIjk3MjMzNzIwMzY4NTQ3NzU4MTgiLCI5ODIzMzcyMDM2ODU0Nzc1ODE4IiwiOTkyMzM3MjAzNjg1NDc3NTgxOCIsIi05MjIzMzcyMDM2ODU0Nzc1ODE4IiwiLTkzMjMzNzIwMzY4NTQ3NzU4MTgiLCItOTQyMzM3MjAzNjg1NDc3NTgxOCIsIi05NTIzMzcyMDM2ODU0Nzc1ODE4IiwiLTk2MjMzNzIwMzY4NTQ3NzU4MTgiLCItOTcyMzM3MjAzNjg1NDc3NTgxOCIsIi05ODIzMzcyMDM2ODU0Nzc1ODE4IiwiLTk5MjMzNzIwMzY4NTQ3NzU4MTgiLCIxMjM0NTY3ODkwMTIzNDU2Nzg5MCJ9OyAvLyAyMjAKKyAgLy8gMjIxCisgIC8vIDIyMgorICAvLyAyMjMKKyAgLy8gMjI0CisgIC8vIDIyNQorICAvLyAyMjYKKyAgLy8gMjI3CisgIC8vIDIyOAorICAvLyAyMjkKKyAgLy8gMjMwCisgIC8vIDIzMQorICAvLyAyMzIKKyAgLy8gMjMzCisgIC8vIDIzNAorICAvLyAyMzUKKyAgLy8gMjM2CisgIC8vIDIzNworICAvLyAyMzgKKyAgLy8gMjM5CisgIC8vIDI0MAorICAvLyAyNDEKKyAgLy8gMjQyCisgIC8vIDI0MworICAvLyAyNDQKKyAge2ludCAkMTEzPWJhZHN0cmluZ3MubGVuZ3RoO2k9MDtpOmZvcig7JDExMz4wOyQxMTMtLSxpKyspeworICAgdHJ5eworICAgIHY9YmFkc3RyaW5nc1tpXTsKKyAgICAobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCh2KSkubG9uZ1ZhbHVlRXhhY3QoKTsKKyAgICBmbGFnPWZhbHNlOworICAgfQorICAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQxMTQpe2FlPSQxMTQ7CisgICAgbm9ybT0obmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCh2KSkudG9TdHJpbmcoKTsKKyAgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiQ29udmVyc2lvbiBvdmVyZmxvdzoiKyIgIitub3JtKTsKKyAgIH0KKyAgIChuZXcgVGVzdCgibG92IisoMjIwK2kpKSkub2s9ZmxhZzsKKyAgIH0KKyAgfS8qaSovCisgIAorICAvLyBub3cgc2xpcCBpbiBzb21lIHNpbmdsZSBiaXRzLi4uCisgIGRsbWF4PW5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwobG1heCk7CisgIHtpPTA7aTpmb3IoO2k8PTk5O2krKyl7CisgICB0cnl7CisgICAgbnVtPXR3by5wb3cobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChpKSxtYzUwKTsKKyAgICBkdj1kbG1heC5hZGQobnVtLG1jNTApOworICAgIGR2LmxvbmdWYWx1ZUV4YWN0KCk7CisgICAgZmxhZz1mYWxzZTsKKyAgIH0KKyAgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkMTE1KXthZT0kMTE1OworICAgIG5vcm09ZHYudG9TdHJpbmcoKTsKKyAgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiQ29udmVyc2lvbiBvdmVyZmxvdzoiKyIgIitub3JtKTsKKyAgIH0KKyAgIChuZXcgVGVzdCgibG92IisoMzAwK2kpKSkub2s9ZmxhZzsKKyAgIH0KKyAgfS8qaSovCisgIGRsbWluPW5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwobG1pbik7CisgIHtpPTA7aTpmb3IoO2k8PTk5O2krKyl7CisgICB0cnl7CisgICAgbnVtPXR3by5wb3cobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChpKSxtYzUwKTsKKyAgICBkdj1kbG1pbi5zdWJ0cmFjdChudW0sbWM1MCk7CisgICAgZHYubG9uZ1ZhbHVlRXhhY3QoKTsKKyAgICBmbGFnPWZhbHNlOworICAgfQorICAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQxMTYpe2FlPSQxMTY7CisgICAgbm9ybT1kdi50b1N0cmluZygpOworICAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJDb252ZXJzaW9uIG92ZXJmbG93OiIrIiAiK25vcm0pOworICAgfQorICAgKG5ldyBUZXN0KCJsb3YiKyg0MDAraSkpKS5vaz1mbGFnOworICAgfQorICB9LyppKi8KKyAgCisgIHN1bW1hcnkoImxvbmdWYWx1ZSsiKTsKKyAgcmV0dXJuO30KKworIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgCisgLyoqIFRlc3QgdGhlIHtAbGluayBCaWdEZWNpbWFsI21vdmVQb2ludExlZnR9IG1ldGhvZC4gKi8KKyAKKyBwdWJsaWMgdm9pZCBkaWFnbW92ZXBvaW50bGVmdCgpeworICAobmV3IFRlc3QoIm1wbDAwMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0xIikpLm1vdmVQb2ludExlZnQoLTEwKS50b1N0cmluZygpKS5lcXVhbHMoIi0xMDAwMDAwMDAwMCIpOworICAobmV3IFRlc3QoIm1wbDAwMiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0xIikpLm1vdmVQb2ludExlZnQoLTUpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEwMDAwMCIpOworICAobmV3IFRlc3QoIm1wbDAwMyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0xIikpLm1vdmVQb2ludExlZnQoLTEpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEwIik7CisgIChuZXcgVGVzdCgibXBsMDA0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTEiKSkubW92ZVBvaW50TGVmdCgwKS50b1N0cmluZygpKS5lcXVhbHMoIi0xIik7CisgIChuZXcgVGVzdCgibXBsMDA1IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTEiKSkubW92ZVBvaW50TGVmdCgrMSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC4xIik7CisgIChuZXcgVGVzdCgibXBsMDA2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTEiKSkubW92ZVBvaW50TGVmdCgrNSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC4wMDAwMSIpOworICAobmV3IFRlc3QoIm1wbDAwNyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0xIikpLm1vdmVQb2ludExlZnQoKzEwKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjAwMDAwMDAwMDEiKTsKKyAgCisgIChuZXcgVGVzdCgibXBsMDEwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMCIpKS5tb3ZlUG9pbnRMZWZ0KC0xMCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgibXBsMDEwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMCIpKS5tb3ZlUG9pbnRMZWZ0KC01KS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJtcGwwMTAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwIikpLm1vdmVQb2ludExlZnQoLTEpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoIm1wbDAxMCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkubW92ZVBvaW50TGVmdCgwKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJtcGwwMTAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwIikpLm1vdmVQb2ludExlZnQoKzEpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wIik7CisgIChuZXcgVGVzdCgibXBsMDEwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMCIpKS5tb3ZlUG9pbnRMZWZ0KCs1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtcGwwMTAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwIikpLm1vdmVQb2ludExlZnQoKzEwKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwMDAwMDAwMCIpOworICAKKyAgKG5ldyBUZXN0KCJtcGwwMjAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIrMSIpKS5tb3ZlUG9pbnRMZWZ0KC0xMCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDAwMDAwMDAwMCIpOworICAobmV3IFRlc3QoIm1wbDAyMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIisxIikpLm1vdmVQb2ludExlZnQoLTUpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAwMDAwIik7CisgIChuZXcgVGVzdCgibXBsMDIyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiKzEiKSkubW92ZVBvaW50TGVmdCgtMSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMCIpOworICAobmV3IFRlc3QoIm1wbDAyMyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIisxIikpLm1vdmVQb2ludExlZnQoMCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgibXBsMDI0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiKzEiKSkubW92ZVBvaW50TGVmdCgrMSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEiKTsKKyAgKG5ldyBUZXN0KCJtcGwwMjUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIrMSIpKS5tb3ZlUG9pbnRMZWZ0KCs1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwMDEiKTsKKyAgKG5ldyBUZXN0KCJtcGwwMjYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIrMSIpKS5tb3ZlUG9pbnRMZWZ0KCsxMCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMDAwMDAwMDEiKTsKKyAgCisgIChuZXcgVGVzdCgibXBsMDMwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC41RSsxIikpLm1vdmVQb2ludExlZnQoLTEwKS50b1N0cmluZygpKS5lcXVhbHMoIjUwMDAwMDAwMDAwIik7CisgIChuZXcgVGVzdCgibXBsMDMxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC41RSsxIikpLm1vdmVQb2ludExlZnQoLTUpLnRvU3RyaW5nKCkpLmVxdWFscygiNTAwMDAwIik7CisgIChuZXcgVGVzdCgibXBsMDMyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC41RSsxIikpLm1vdmVQb2ludExlZnQoLTEpLnRvU3RyaW5nKCkpLmVxdWFscygiNTAiKTsKKyAgKG5ldyBUZXN0KCJtcGwwMzMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjVFKzEiKSkubW92ZVBvaW50TGVmdCgwKS50b1N0cmluZygpKS5lcXVhbHMoIjUiKTsKKyAgKG5ldyBUZXN0KCJtcGwwMzQiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjVFKzEiKSkubW92ZVBvaW50TGVmdCgrMSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjUiKTsKKyAgKG5ldyBUZXN0KCJtcGwwMzUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjVFKzEiKSkubW92ZVBvaW50TGVmdCgrNSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMDA1Iik7CisgIChuZXcgVGVzdCgibXBsMDM2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC41RSsxIikpLm1vdmVQb2ludExlZnQoKzEwKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwMDAwMDAwNSIpOworICAKKyAgc3VtbWFyeSgibW92ZVBvaW50TGVmdCIpOworICByZXR1cm47fQorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiogVGVzdCB0aGUge0BsaW5rIEJpZ0RlY2ltYWwjbW92ZVBvaW50UmlnaHR9IG1ldGhvZC4gKi8KKyAKKyBwdWJsaWMgdm9pZCBkaWFnbW92ZXBvaW50cmlnaHQoKXsKKyAgKG5ldyBUZXN0KCJtcHIwMDEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMSIpKS5tb3ZlUG9pbnRSaWdodCgrMTApLnRvU3RyaW5nKCkpLmVxdWFscygiLTEwMDAwMDAwMDAwIik7CisgIChuZXcgVGVzdCgibXByMDAyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTEiKSkubW92ZVBvaW50UmlnaHQoKzUpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEwMDAwMCIpOworICAobmV3IFRlc3QoIm1wcjAwMyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0xIikpLm1vdmVQb2ludFJpZ2h0KCsxKS50b1N0cmluZygpKS5lcXVhbHMoIi0xMCIpOworICAobmV3IFRlc3QoIm1wcjAwNCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0xIikpLm1vdmVQb2ludFJpZ2h0KDApLnRvU3RyaW5nKCkpLmVxdWFscygiLTEiKTsKKyAgKG5ldyBUZXN0KCJtcHIwMDUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMSIpKS5tb3ZlUG9pbnRSaWdodCgtMSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC4xIik7CisgIChuZXcgVGVzdCgibXByMDA2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTEiKSkubW92ZVBvaW50UmlnaHQoLTUpLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuMDAwMDEiKTsKKyAgKG5ldyBUZXN0KCJtcHIwMDciKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMSIpKS5tb3ZlUG9pbnRSaWdodCgtMTApLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuMDAwMDAwMDAwMSIpOworICAKKyAgKG5ldyBUZXN0KCJtcHIwMTAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwIikpLm1vdmVQb2ludFJpZ2h0KCsxMCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgibXByMDExIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMCIpKS5tb3ZlUG9pbnRSaWdodCgrNSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgibXByMDEyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMCIpKS5tb3ZlUG9pbnRSaWdodCgrMSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgibXByMDEzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMCIpKS5tb3ZlUG9pbnRSaWdodCgwKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJtcHIwMTQiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwIikpLm1vdmVQb2ludFJpZ2h0KC0xKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMCIpOworICAobmV3IFRlc3QoIm1wcjAxNSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkubW92ZVBvaW50UmlnaHQoLTUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDAwMCIpOworICAobmV3IFRlc3QoIm1wcjAxNiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkubW92ZVBvaW50UmlnaHQoLTEwKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwMDAwMDAwMCIpOworICAKKyAgKG5ldyBUZXN0KCJtcHIwMjAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIrMSIpKS5tb3ZlUG9pbnRSaWdodCgrMTApLnRvU3RyaW5nKCkpLmVxdWFscygiMTAwMDAwMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtcHIwMjEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIrMSIpKS5tb3ZlUG9pbnRSaWdodCgrNSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtcHIwMjIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIrMSIpKS5tb3ZlUG9pbnRSaWdodCgrMSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMCIpOworICAobmV3IFRlc3QoIm1wcjAyMyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIisxIikpLm1vdmVQb2ludFJpZ2h0KDApLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoIm1wcjAyNCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIisxIikpLm1vdmVQb2ludFJpZ2h0KC0xKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMSIpOworICAobmV3IFRlc3QoIm1wcjAyNSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIisxIikpLm1vdmVQb2ludFJpZ2h0KC01KS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwMDEiKTsKKyAgKG5ldyBUZXN0KCJtcHIwMjYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIrMSIpKS5tb3ZlUG9pbnRSaWdodCgtMTApLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDAwMDAwMDAxIik7CisgIAorICAobmV3IFRlc3QoIm1wcjAzMCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuNUUrMSIpKS5tb3ZlUG9pbnRSaWdodCgrMTApLnRvU3RyaW5nKCkpLmVxdWFscygiNTAwMDAwMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtcHIwMzEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjVFKzEiKSkubW92ZVBvaW50UmlnaHQoKzUpLnRvU3RyaW5nKCkpLmVxdWFscygiNTAwMDAwIik7CisgIChuZXcgVGVzdCgibXByMDMyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC41RSsxIikpLm1vdmVQb2ludFJpZ2h0KCsxKS50b1N0cmluZygpKS5lcXVhbHMoIjUwIik7CisgIChuZXcgVGVzdCgibXByMDMzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC41RSsxIikpLm1vdmVQb2ludFJpZ2h0KDApLnRvU3RyaW5nKCkpLmVxdWFscygiNSIpOworICAobmV3IFRlc3QoIm1wcjAzNCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuNUUrMSIpKS5tb3ZlUG9pbnRSaWdodCgtMSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjUiKTsKKyAgKG5ldyBUZXN0KCJtcHIwMzUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjVFKzEiKSkubW92ZVBvaW50UmlnaHQoLTUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDAwNSIpOworICAobmV3IFRlc3QoIm1wcjAzNiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuNUUrMSIpKS5tb3ZlUG9pbnRSaWdodCgtMTApLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDAwMDAwMDA1Iik7CisgIAorICBzdW1tYXJ5KCJtb3ZlUG9pbnRSaWdodCIpOworICByZXR1cm47fQorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiogVGVzdCB0aGUge0BsaW5rIEJpZ0RlY2ltYWwjc2NhbGV9IG1ldGhvZC4gKi8KKyAKKyBwdWJsaWMgdm9pZCBkaWFnc2NhbGUoKXsKKyAgKG5ldyBUZXN0KCJzY2EwMDEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMSIpKS5zY2FsZSgpKT09MDsKKyAgKG5ldyBUZXN0KCJzY2EwMDIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMTAiKSkuc2NhbGUoKSk9PTA7CisgIChuZXcgVGVzdCgic2NhMDAzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiKzEiKSkuc2NhbGUoKSk9PTA7CisgIChuZXcgVGVzdCgic2NhMDA0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiKzEwIikpLnNjYWxlKCkpPT0wOworICAobmV3IFRlc3QoInNjYTAwNSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjFFKzEwIikpLnNjYWxlKCkpPT0wOworICAobmV3IFRlc3QoInNjYTAwNiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjFFLTEwIikpLnNjYWxlKCkpPT0xMDsKKyAgKG5ldyBUZXN0KCJzY2EwMDciKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwRS0xMCIpKS5zY2FsZSgpKT09MDsKKyAgKG5ldyBUZXN0KCJzY2EwMDgiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjAwMCIpKS5zY2FsZSgpKT09MzsKKyAgKG5ldyBUZXN0KCJzY2EwMDkiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjAwIikpLnNjYWxlKCkpPT0yOworICAobmV3IFRlc3QoInNjYTAxMCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMCIpKS5zY2FsZSgpKT09MTsKKyAgKG5ldyBUZXN0KCJzY2EwMTEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjEiKSkuc2NhbGUoKSk9PTE7CisgIChuZXcgVGVzdCgic2NhMDEyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4xMiIpKS5zY2FsZSgpKT09MjsKKyAgKG5ldyBUZXN0KCJzY2EwMTMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjEyMyIpKS5zY2FsZSgpKT09MzsKKyAgKG5ldyBUZXN0KCJzY2EwMTQiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMC4wIikpLnNjYWxlKCkpPT0xOworICAobmV3IFRlc3QoInNjYTAxNSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0wLjEiKSkuc2NhbGUoKSk9PTE7CisgIChuZXcgVGVzdCgic2NhMDE2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTAuMTIiKSkuc2NhbGUoKSk9PTI7CisgIChuZXcgVGVzdCgic2NhMDE3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTAuMTIzIikpLnNjYWxlKCkpPT0zOworICBzdW1tYXJ5KCJzY2FsZSIpOworICByZXR1cm47fQorCisgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiogVGVzdCB0aGUge0BsaW5rIEJpZ0RlY2ltYWwjc2V0U2NhbGV9IG1ldGhvZC4gKi8KKyAKKyBwdWJsaWMgdm9pZCBkaWFnc2V0c2NhbGUoKXsKKyAgYm9vbGVhbiBmbGFnPWZhbHNlOworICBqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiBlPW51bGw7CisgIAorICAobmV3IFRlc3QoInNzYzAwMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0xIikpLnNldFNjYWxlKDApLnRvU3RyaW5nKCkpLmVxdWFscygiLTEiKTsKKyAgKG5ldyBUZXN0KCJzc2MwMDIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMSIpKS5zZXRTY2FsZSgxKS50b1N0cmluZygpKS5lcXVhbHMoIi0xLjAiKTsKKyAgKG5ldyBUZXN0KCJzc2MwMDMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMSIpKS5zZXRTY2FsZSgyKS50b1N0cmluZygpKS5lcXVhbHMoIi0xLjAwIik7CisgIChuZXcgVGVzdCgic3NjMDA0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMCIpKS5zZXRTY2FsZSgwKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJzc2MwMDUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwIikpLnNldFNjYWxlKDEpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wIik7CisgIChuZXcgVGVzdCgic3NjMDA2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMCIpKS5zZXRTY2FsZSgyKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAiKTsKKyAgKG5ldyBUZXN0KCJzc2MwMDciKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIrMSIpKS5zZXRTY2FsZSgwKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJzc2MwMDgiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIrMSIpKS5zZXRTY2FsZSgxKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMCIpOworICAobmV3IFRlc3QoInNzYzAwOSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIisxIikpLnNldFNjYWxlKDIpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wMCIpOworICAobmV3IFRlc3QoInNzYzAxMCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0xIikpLnNldFNjYWxlKDAsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIi0xIik7CisgIChuZXcgVGVzdCgic3NjMDExIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTEiKSkuc2V0U2NhbGUoMSxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiLTEuMCIpOworICAobmV3IFRlc3QoInNzYzAxMiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0xIikpLnNldFNjYWxlKDIsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIi0xLjAwIik7CisgIChuZXcgVGVzdCgic3NjMDEzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMCIpKS5zZXRTY2FsZSgwLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgic3NjMDE0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMCIpKS5zZXRTY2FsZSgxLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAiKTsKKyAgKG5ldyBUZXN0KCJzc2MwMTUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwIikpLnNldFNjYWxlKDIsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAiKTsKKyAgKG5ldyBUZXN0KCJzc2MwMTYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIrMSIpKS5zZXRTY2FsZSgwLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgic3NjMDE3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiKzEiKSkuc2V0U2NhbGUoMSxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wIik7CisgIChuZXcgVGVzdCgic3NjMDE4IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiKzEiKSkuc2V0U2NhbGUoMixjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wMCIpOworICAKKyAgKG5ldyBUZXN0KCJzc2MwMjAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjA0IikpLnNldFNjYWxlKDMsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDQwIik7CisgIChuZXcgVGVzdCgic3NjMDIxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS4wNCIpKS5zZXRTY2FsZSgyLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjA0Iik7CisgIChuZXcgVGVzdCgic3NjMDIyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS4wNCIpKS5zZXRTY2FsZSgxLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAiKTsKKyAgKG5ldyBUZXN0KCJzc2MwMjMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjA0IikpLnNldFNjYWxlKDAsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJzc2MwMjQiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjA1IikpLnNldFNjYWxlKDMsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDUwIik7CisgIChuZXcgVGVzdCgic3NjMDI1IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS4wNSIpKS5zZXRTY2FsZSgyLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjA1Iik7CisgIChuZXcgVGVzdCgic3NjMDI2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS4wNSIpKS5zZXRTY2FsZSgxLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjEiKTsKKyAgKG5ldyBUZXN0KCJzc2MwMjciKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjA1IikpLnNldFNjYWxlKDAsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJzc2MwMjgiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjA1IikpLnNldFNjYWxlKDMsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0RPV04pLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wNTAiKTsKKyAgKG5ldyBUZXN0KCJzc2MwMjkiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjA1IikpLnNldFNjYWxlKDIsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0RPV04pLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wNSIpOworICAobmV3IFRlc3QoInNzYzAzMCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDUiKSkuc2V0U2NhbGUoMSxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRE9XTikudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAiKTsKKyAgKG5ldyBUZXN0KCJzc2MwMzEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjA1IikpLnNldFNjYWxlKDAsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0RPV04pLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoInNzYzAzMiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDYiKSkuc2V0U2NhbGUoMyxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wNjAiKTsKKyAgKG5ldyBUZXN0KCJzc2MwMzMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjA2IikpLnNldFNjYWxlKDIsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDYiKTsKKyAgKG5ldyBUZXN0KCJzc2MwMzQiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjA2IikpLnNldFNjYWxlKDEsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMSIpOworICAobmV3IFRlc3QoInNzYzAzNSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDYiKSkuc2V0U2NhbGUoMCxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAKKyAgKG5ldyBUZXN0KCJzc2MwNDAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMTAiKSkuc2V0U2NhbGUoMixjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiLTEwLjAwIik7CisgIChuZXcgVGVzdCgic3NjMDQxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiKzEiKSkuc2V0U2NhbGUoMixjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wMCIpOworICAobmV3IFRlc3QoInNzYzA0MiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIisxMCIpKS5zZXRTY2FsZSgyLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMC4wMCIpOworICAobmV3IFRlc3QoInNzYzA0MyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjFFKzEwIikpLnNldFNjYWxlKDIsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjEwMDAwMDAwMDAwLjAwIik7CisgIChuZXcgVGVzdCgic3NjMDQ0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMUUtMTAiKSkuc2V0U2NhbGUoMixjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMCIpOworICAobmV3IFRlc3QoInNzYzA0NSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjFFLTIiKSkuc2V0U2NhbGUoMixjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMSIpOworICAobmV3IFRlc3QoInNzYzA0NiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjBFLTEwIikpLnNldFNjYWxlKDIsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAiKTsKKyAgCisgIC8vIGNoZWNrIHJvdW5kaW5nCisgIChuZXcgVGVzdCgic3NjMDUwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wMDUiKSkuc2V0U2NhbGUoMixjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0NFSUxJTkcpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMSIpOworICAobmV3IFRlc3QoInNzYzA1MSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDA1IikpLnNldFNjYWxlKDEsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9DRUlMSU5HKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMSIpOworICAobmV3IFRlc3QoInNzYzA1MiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDA1IikpLnNldFNjYWxlKDAsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9DRUlMSU5HKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJzc2MwNTMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjAwNSIpKS5zZXRTY2FsZSgyLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfRE9XTikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwIik7CisgIChuZXcgVGVzdCgic3NjMDU0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wMDUiKSkuc2V0U2NhbGUoMSxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0RPV04pLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wIik7CisgIChuZXcgVGVzdCgic3NjMDU1IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wMDUiKSkuc2V0U2NhbGUoMCxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0RPV04pLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoInNzYzA1NiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDA1IikpLnNldFNjYWxlKDIsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9GTE9PUikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwIik7CisgIChuZXcgVGVzdCgic3NjMDU3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wMDUiKSkuc2V0U2NhbGUoMSxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0ZMT09SKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMCIpOworICAobmV3IFRlc3QoInNzYzA1OCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDA1IikpLnNldFNjYWxlKDAsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9GTE9PUikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgic3NjMDU5IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wMDUiKSkuc2V0U2NhbGUoMixjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRE9XTikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwIik7CisgIChuZXcgVGVzdCgic3NjMDYwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wMDUiKSkuc2V0U2NhbGUoMSxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRE9XTikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAiKTsKKyAgKG5ldyBUZXN0KCJzc2MwNjEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjAwNSIpKS5zZXRTY2FsZSgwLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9ET1dOKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJzc2MwNjIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjAwNSIpKS5zZXRTY2FsZSgyLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9FVkVOKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAiKTsKKyAgKG5ldyBUZXN0KCJzc2MwNjMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjAwNSIpKS5zZXRTY2FsZSgxLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9FVkVOKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMCIpOworICAobmV3IFRlc3QoInNzYzA2NCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDA1IikpLnNldFNjYWxlKDAsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0VWRU4pLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoInNzYzA2NSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDE1IikpLnNldFNjYWxlKDIsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0VWRU4pLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMiIpOworICAobmV3IFRlc3QoInNzYzA2NiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDE1IikpLnNldFNjYWxlKDEsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0VWRU4pLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wIik7CisgIChuZXcgVGVzdCgic3NjMDY3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wMTUiKSkuc2V0U2NhbGUoMCxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRVZFTikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgic3NjMDY4IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wMDUiKSkuc2V0U2NhbGUoMixjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMSIpOworICAobmV3IFRlc3QoInNzYzA2OSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDA1IikpLnNldFNjYWxlKDEsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMCIpOworICAobmV3IFRlc3QoInNzYzA3MCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDA1IikpLnNldFNjYWxlKDAsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJzc2MwNzEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjA5NSIpKS5zZXRTY2FsZSgyLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEwIik7CisgIChuZXcgVGVzdCgic3NjMDcyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wOTUiKSkuc2V0U2NhbGUoMSxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xIik7CisgIChuZXcgVGVzdCgic3NjMDczIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wOTUiKSkuc2V0U2NhbGUoMCxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoInNzYzA3NCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDA1IikpLnNldFNjYWxlKDIsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAxIik7CisgIChuZXcgVGVzdCgic3NjMDc1IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wMDUiKSkuc2V0U2NhbGUoMSxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMSIpOworICAobmV3IFRlc3QoInNzYzA3NiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDA1IikpLnNldFNjYWxlKDAsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIAorICB0cnl7Y2hlY2tzY2FsZTpkb3sKKyAgIChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKDEpKS5zZXRTY2FsZSgtOCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uICQxMTcpe2U9JDExNzsKKyAgIGZsYWc9KGUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIk5lZ2F0aXZlIHNjYWxlOiAtOCIpOworICB9LypjaGVja3NjYWxlKi8KKyAgKG5ldyBUZXN0KCJzc2MxMDAiKSkub2s9ZmxhZzsKKyAgdHJ5e2NoZWNrcnVubjpkb3sKKyAgIChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKDEuMDAwMUQpKS5zZXRTY2FsZSgzKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24gJDExOCl7ZT0kMTE4OworICAgZmxhZz0oZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiUm91bmRpbmcgbmVjZXNzYXJ5Iik7CisgIH0vKmNoZWNrcnVubiovCisgIChuZXcgVGVzdCgic3NjMTAxIikpLm9rPWZsYWc7CisgIHRyeXtjaGVja3J1bm46ZG97CisgICAobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgxRS04RCkpLnNldFNjYWxlKDMpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiAkMTE5KXtlPSQxMTk7CisgICBmbGFnPShlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJSb3VuZGluZyBuZWNlc3NhcnkiKTsKKyAgfS8qY2hlY2tydW5uKi8KKyAgKG5ldyBUZXN0KCJzc2MxMDIiKSkub2s9ZmxhZzsKKyAgc3VtbWFyeSgic2V0U2NhbGUiKTsKKyAgcmV0dXJuO30KKworIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgCisgLyoqIFRlc3QgdGhlIDxjb2RlPkJpZ0RlY2ltYWwuc2hvcnRWYWx1ZSgpPC9jb2RlPiBtZXRob2QuICovCisgCisgcHVibGljIHZvaWQgZGlhZ3Nob3J0dmFsdWUoKXsKKyAgYm9vbGVhbiBmbGFnPWZhbHNlOworICBqYXZhLmxhbmcuU3RyaW5nIHY9bnVsbDsKKyAgamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gYWU9bnVsbDsKKyAgamF2YS5sYW5nLlN0cmluZyBiYWRzdHJpbmdzW107CisgIGludCBpPTA7CisgIGphdmEubGFuZy5TdHJpbmcgbm9ybT1udWxsOworICAKKyAgKG5ldyBUZXN0KCJzaHYwMDIiKSkub2s9KCgoc2hvcnQpMCkpPT0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuc2hvcnRWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJzaHYwMDMiKSkub2s9KCgoc2hvcnQpMSkpPT0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkuc2hvcnRWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJzaHYwMDQiKSkub2s9KCgoc2hvcnQpOTkpKT09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCI5OSIpKS5zaG9ydFZhbHVlKCkpOworICAobmV3IFRlc3QoInNodjAwNiIpKS5vaz0oKHNtYXgpKT09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKHNtYXgpKS5zaG9ydFZhbHVlKCkpOworICAobmV3IFRlc3QoInNodjAwNyIpKS5vaz0oKHNtaW4pKT09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKHNtaW4pKS5zaG9ydFZhbHVlKCkpOworICAobmV3IFRlc3QoInNodjAwOCIpKS5vaz0oKHNuZWcpKT09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKHNuZWcpKS5zaG9ydFZhbHVlKCkpOworICAobmV3IFRlc3QoInNodjAwOSIpKS5vaz0oKHN6ZXIpKT09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKHN6ZXIpKS5zaG9ydFZhbHVlKCkpOworICAobmV3IFRlc3QoInNodjAxMCIpKS5vaz0oKHNwb3MpKT09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKHNwb3MpKS5zaG9ydFZhbHVlKCkpOworICAobmV3IFRlc3QoInNodjAxMSIpKS5vaz0oKHNtaW4pKT09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKHNtYXgrMSkpLnNob3J0VmFsdWUoKSk7CisgIChuZXcgVGVzdCgic2h2MDEyIikpLm9rPSgoc21heCkpPT0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoc21pbi0xKSkuc2hvcnRWYWx1ZSgpKTsKKyAgCisgIChuZXcgVGVzdCgic2h2MDIyIikpLm9rPSgoKHNob3J0KTApKT09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwIikpLnNob3J0VmFsdWVFeGFjdCgpKTsKKyAgKG5ldyBUZXN0KCJzaHYwMjMiKSkub2s9KCgoc2hvcnQpMSkpPT0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkuc2hvcnRWYWx1ZUV4YWN0KCkpOworICAobmV3IFRlc3QoInNodjAyNCIpKS5vaz0oKChzaG9ydCk5OSkpPT0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjk5IikpLnNob3J0VmFsdWVFeGFjdCgpKTsKKyAgKG5ldyBUZXN0KCJzaHYwMjYiKSkub2s9KChzbWF4KSk9PSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChzbWF4KSkuc2hvcnRWYWx1ZUV4YWN0KCkpOworICAobmV3IFRlc3QoInNodjAyNyIpKS5vaz0oKHNtaW4pKT09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKHNtaW4pKS5zaG9ydFZhbHVlRXhhY3QoKSk7CisgIChuZXcgVGVzdCgic2h2MDI4IikpLm9rPSgoc25lZykpPT0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoc25lZykpLnNob3J0VmFsdWVFeGFjdCgpKTsKKyAgKG5ldyBUZXN0KCJzaHYwMjkiKSkub2s9KChzemVyKSk9PSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChzemVyKSkuc2hvcnRWYWx1ZUV4YWN0KCkpOworICAobmV3IFRlc3QoInNodjAzMCIpKS5vaz0oKHNwb3MpKT09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKHNwb3MpKS5zaG9ydFZhbHVlRXhhY3QoKSk7CisgIHRyeXsKKyAgIHY9Ii04ODg4ODg4ODg4OCI7CisgICAobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCh2KSkuc2hvcnRWYWx1ZUV4YWN0KCk7CisgICBmbGFnPWZhbHNlOworICB9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkMTIwKXthZT0kMTIwOworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIkNvbnZlcnNpb24gb3ZlcmZsb3c6IisiICIrdik7CisgIH0KKyAgKG5ldyBUZXN0KCJzaHYxMDAiKSkub2s9ZmxhZzsKKyAgdHJ5eworICAgdj0iODg4ODg4ODg4ODgiOworICAgKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwodikpLnNob3J0VmFsdWVFeGFjdCgpOworICAgZmxhZz1mYWxzZTsKKyAgfQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDEyMSl7YWU9JDEyMTsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJDb252ZXJzaW9uIG92ZXJmbG93OiIrIiAiK3YpOworICB9CisgIChuZXcgVGVzdCgic2h2MTAxIikpLm9rPWZsYWc7CisgIHRyeXsKKyAgIHY9IjEuNSI7CisgICAobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCh2KSkuc2hvcnRWYWx1ZUV4YWN0KCk7CisgICBmbGFnPWZhbHNlOworICB9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkMTIyKXthZT0kMTIyOworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIkRlY2ltYWwgcGFydCBub24temVybzoiKyIgIit2KTsKKyAgfQorICAobmV3IFRlc3QoInNodjEwMiIpKS5vaz1mbGFnOworICAKKyAgYmFkc3RyaW5ncz1uZXcgamF2YS5sYW5nLlN0cmluZ1tdeyIxMjM0NTYiLChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKHNtYXgpKS5hZGQob25lKS50b1N0cmluZygpLChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKHNtaW4pKS5zdWJ0cmFjdChvbmUpLnRvU3RyaW5nKCksIjcxMTExIiwiODExMTEiLCI5MTExMSIsIi03MTExMSIsIi04MTExMSIsIi05MTExMSIsKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoc21pbikpLm11bHRpcGx5KHR3bykudG9TdHJpbmcoKSwobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChzbWF4KSkubXVsdGlwbHkodHdvKS50b1N0cmluZygpLChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKHNtaW4pKS5tdWx0aXBseSh0ZW4pLnRvU3RyaW5nKCksKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoc21heCkpLm11bHRpcGx5KHRlbikudG9TdHJpbmcoKSwiLTEyMzQ1NiJ9OyAvLyAyMjAKKyAgLy8gMjIxCisgIC8vIDIyMgorICAvLyAyMjMKKyAgLy8gMjI0CisgIC8vIDIyNQorICAvLyAyMjYKKyAgLy8gMjI3CisgIC8vIDIyOAorICAvLyAyMjkKKyAgLy8gMjMwCisgIC8vIDIzMQorICAvLyAyMzIKKyAgLy8gMjMzCisgIHtpbnQgJDEyMz1iYWRzdHJpbmdzLmxlbmd0aDtpPTA7aTpmb3IoOyQxMjM+MDskMTIzLS0saSsrKXsKKyAgIHRyeXsKKyAgICB2PWJhZHN0cmluZ3NbaV07CisgICAgKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwodikpLnNob3J0VmFsdWVFeGFjdCgpOworICAgIGZsYWc9ZmFsc2U7CisgICB9CisgICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDEyNCl7YWU9JDEyNDsKKyAgICBub3JtPShuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKHYpKS50b1N0cmluZygpOworICAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJDb252ZXJzaW9uIG92ZXJmbG93OiIrIiAiK25vcm0pOworICAgfQorICAgKG5ldyBUZXN0KCJzaHYiKygyMjAraSkpKS5vaz1mbGFnOworICAgfQorICB9LyppKi8KKyAgCisgIAorICBzdW1tYXJ5KCJzaG9ydFZhbHVlKyIpOworICByZXR1cm47fQorCisgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiogVGVzdCB0aGUge0BsaW5rIEJpZ0RlY2ltYWwjc2lnbnVtfSBtZXRob2QuICovCisgCisgcHVibGljIHZvaWQgZGlhZ3NpZ251bSgpeworICAvLyBuZWNlc3NhcmlseSBjaGVja3Mgc29tZSBvYnNjdXJlIGNvbnN0cnVjdGlvbnMsIHRvbworICAobmV3IFRlc3QoInNpZzAwMSIpKS5vaz0oLTEpPT0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0xIikpLnNpZ251bSgpKTsKKyAgKG5ldyBUZXN0KCJzaWcwMDIiKSkub2s9KC0xKT09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMC4wMDEwIikpLnNpZ251bSgpKTsKKyAgKG5ldyBUZXN0KCJzaWcwMDMiKSkub2s9KC0xKT09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMC4wMDEiKSkuc2lnbnVtKCkpOworICAobmV3IFRlc3QoInNpZzAwNCIpKS5vaz0wPT0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0wLjAwIikpLnNpZ251bSgpKTsKKyAgKG5ldyBUZXN0KCJzaWcwMDUiKSkub2s9MD09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMCIpKS5zaWdudW0oKSk7CisgIChuZXcgVGVzdCgic2lnMDA2IikpLm9rPTA9PSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMCIpKS5zaWdudW0oKSk7CisgIChuZXcgVGVzdCgic2lnMDA3IikpLm9rPTA9PSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMDAiKSkuc2lnbnVtKCkpOworICAobmV3IFRlc3QoInNpZzAwOCIpKS5vaz0wPT0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAwLjAiKSkuc2lnbnVtKCkpOworICAobmV3IFRlc3QoInNpZzAwOSIpKS5vaz0xPT0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAwLjAxIikpLnNpZ251bSgpKTsKKyAgKG5ldyBUZXN0KCJzaWcwMTAiKSkub2s9MT09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwMC4wMSIpKS5zaWdudW0oKSk7CisgIChuZXcgVGVzdCgic2lnMDExIikpLm9rPTE9PSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMDAuMDEwIikpLnNpZ251bSgpKTsKKyAgKG5ldyBUZXN0KCJzaWcwMTIiKSkub2s9MT09KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwMS4wMSIpKS5zaWdudW0oKSk7CisgIChuZXcgVGVzdCgic2lnMDEzIikpLm9rPTE9PSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiKzAuMDEiKSkuc2lnbnVtKCkpOworICAobmV3IFRlc3QoInNpZzAxNCIpKS5vaz0xPT0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIiswLjAwMSIpKS5zaWdudW0oKSk7CisgIChuZXcgVGVzdCgic2lnMDE1IikpLm9rPTE9PSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMSIpKS5zaWdudW0oKSk7CisgIChuZXcgVGVzdCgic2lnMDE2IikpLm9rPTE9PSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMWUrMTIiKSkuc2lnbnVtKCkpOworICAobmV3IFRlc3QoInNpZzAxNyIpKS5vaz0wPT0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAwZSsxMiIpKS5zaWdudW0oKSk7CisgIHN1bW1hcnkoInNpZ251bSIpOworICByZXR1cm47fQorCisgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiogVGVzdCB0aGUge0BsaW5rIEJpZ0RlY2ltYWwjdG9CaWdEZWNpbWFsfSBtZXRob2QuICovCisgCisgcHVibGljIHZvaWQgZGlhZ3RvYmlnZGVjaW1hbCgpeworICAobmV3IFRlc3QoInRiZDAwMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkudG9CaWdEZWNpbWFsKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgidGJkMDAyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTEiKSkudG9CaWdEZWNpbWFsKCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMSIpOworICAobmV3IFRlc3QoInRiZDAwMyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIisxIikpLnRvQmlnRGVjaW1hbCgpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoInRiZDAwNCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkudG9CaWdEZWNpbWFsKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgidGJkMDA1IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMUUrMiIpKS50b0JpZ0RlY2ltYWwoKS50b1N0cmluZygpKS5lcXVhbHMoIjEwMCIpOworICAobmV3IFRlc3QoInRiZDAwNiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjFFLTIiKSkudG9CaWdEZWNpbWFsKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAxIik7CisgIChuZXcgVGVzdCgidGJkMDA3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMUUtOCIpKS50b0JpZ0RlY2ltYWwoKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwMDAwMDEiKTsKKyAgKG5ldyBUZXN0KCJ0YmQwMDgiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxRS05IikpLnRvQmlnRGVjaW1hbCgpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDAwMDAwMDEiKTsKKyAgKG5ldyBUZXN0KCJ0YmQwMDkiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxRTEwIikpLnRvQmlnRGVjaW1hbCgpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAwMDAwMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJ0YmQwMTAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxRTEyIikpLnRvQmlnRGVjaW1hbCgpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAwMDAwMDAwMDAwMCIpOworICBzdW1tYXJ5KCJ0b0JpZ0RlY2ltYWwiKTsKKyAgcmV0dXJuO30KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgCisgLyoqIFRlc3QgdGhlIHtAbGluayBCaWdEZWNpbWFsI3RvQmlnSW50ZWdlcn0gbWV0aG9kLiAqLworIAorIHB1YmxpYyB2b2lkIGRpYWd0b2JpZ2ludGVnZXIoKXsKKyAgYm9vbGVhbiBmbGFnPWZhbHNlOworICBqYXZhLmxhbmcuU3RyaW5nIGJhZHN0cmluZ3NbXTsKKyAgaW50IGk9MDsKKyAgKG5ldyBUZXN0KCJ0YmkwMDEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMSIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIi0xIik7CisgIChuZXcgVGVzdCgidGJpMDAyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMCIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJ0YmkwMDMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIrMSIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJ0YmkwMDQiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMCIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIjEwIik7CisgIChuZXcgVGVzdCgidGJpMDA1IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAwMCIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIjEwMDAiKTsKKyAgKG5ldyBUZXN0KCJ0YmkwMDYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMUUrMCIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIi0xIik7CisgIChuZXcgVGVzdCgidGJpMDA3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMEUrMCIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJ0YmkwMDgiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIrMUUrMCIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJ0YmkwMDkiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMEUrMCIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIjEwIik7CisgIChuZXcgVGVzdCgidGJpMDEwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMUUrMyIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIjEwMDAiKTsKKyAgKG5ldyBUZXN0KCJ0YmkwMTEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjAwIikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoInRiaTAxMiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDEiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgidGJpMDEzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wIikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoInRiaTAxNCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMSIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJ0YmkwMTUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMC4wMCIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJ0YmkwMTYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMC4wMSIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJ0YmkwMTciKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMC4wIikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoInRiaTAxOCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0wLjEiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgidGJpMDE5IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS4wMCIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJ0YmkwMjAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjAxIikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoInRiaTAyMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuMCIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJ0YmkwMjIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjEiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgidGJpMDIzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTEuMDAiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMSIpOworICAobmV3IFRlc3QoInRiaTAyNCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0xLjAxIikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEiKTsKKyAgKG5ldyBUZXN0KCJ0YmkwMjUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMS4wIikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEiKTsKKyAgKG5ldyBUZXN0KCJ0YmkwMjYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMS4xIikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEiKTsKKyAgKG5ldyBUZXN0KCJ0YmkwMjciKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMTExLjExMSIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIi0xMTEiKTsKKyAgKG5ldyBUZXN0KCJ0YmkwMjgiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIrMTExLjExMSIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIjExMSIpOworICAobmV3IFRlc3QoInRiaTAyOSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDkiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgidGJpMDMwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC45IikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoInRiaTAzMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDkiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgidGJpMDMyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS4wNSIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJ0YmkwMzMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjA0IikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoInRiaTAzNCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuOTkiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgidGJpMDM0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS45IikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoInRiaTAzNSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuNSIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJ0YmkwMzYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjQiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgidGJpMDM3IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTEuMDkiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMSIpOworICAobmV3IFRlc3QoInRiaTAzOCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0xLjA1IikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEiKTsKKyAgKG5ldyBUZXN0KCJ0YmkwMzkiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMS4wNCIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIi0xIik7CisgIChuZXcgVGVzdCgidGJpMDQwIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTEuOTkiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMSIpOworICAobmV3IFRlc3QoInRiaTA0MSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0xLjkiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMSIpOworICAobmV3IFRlc3QoInRiaTA0MiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0xLjUiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMSIpOworICAobmV3IFRlc3QoInRiaTA0MyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0xLjQiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMSIpOworICAobmV3IFRlc3QoInRiaTA0NCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjFFLTEwMDAiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgidGJpMDQ1IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTFFLTEwMDAiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIAorICAvLyBFeGFjdCB2YXJpZXR5IC0tCisgIChuZXcgVGVzdCgidGJpMTAxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTEiKSkudG9CaWdJbnRlZ2VyRXhhY3QoKS50b1N0cmluZygpKS5lcXVhbHMoIi0xIik7CisgIChuZXcgVGVzdCgidGJpMTAyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMCIpKS50b0JpZ0ludGVnZXJFeGFjdCgpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoInRiaTEwMyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIisxIikpLnRvQmlnSW50ZWdlckV4YWN0KCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgidGJpMTA0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAiKSkudG9CaWdJbnRlZ2VyRXhhY3QoKS50b1N0cmluZygpKS5lcXVhbHMoIjEwIik7CisgIChuZXcgVGVzdCgidGJpMTA1IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAwMCIpKS50b0JpZ0ludGVnZXJFeGFjdCgpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAwMCIpOworICAobmV3IFRlc3QoInRiaTEwNiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0xRSswIikpLnRvQmlnSW50ZWdlckV4YWN0KCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMSIpOworICAobmV3IFRlc3QoInRiaTEwNyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjBFKzAiKSkudG9CaWdJbnRlZ2VyRXhhY3QoKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJ0YmkxMDgiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIrMUUrMCIpKS50b0JpZ0ludGVnZXJFeGFjdCgpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoInRiaTEwOSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEwRSswIikpLnRvQmlnSW50ZWdlckV4YWN0KCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMCIpOworICAobmV3IFRlc3QoInRiaTExMCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjFFKzMiKSkudG9CaWdJbnRlZ2VyRXhhY3QoKS50b1N0cmluZygpKS5lcXVhbHMoIjEwMDAiKTsKKyAgKG5ldyBUZXN0KCJ0YmkxMTEiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwLjAwIikpLnRvQmlnSW50ZWdlckV4YWN0KCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgidGJpMTEyIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4wIikpLnRvQmlnSW50ZWdlckV4YWN0KCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgidGJpMTEzIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTAuMDAiKSkudG9CaWdJbnRlZ2VyRXhhY3QoKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJ0YmkxMTQiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMC4wIikpLnRvQmlnSW50ZWdlckV4YWN0KCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgidGJpMTE1IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS4wMCIpKS50b0JpZ0ludGVnZXJFeGFjdCgpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoInRiaTExNiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuMCIpKS50b0JpZ0ludGVnZXJFeGFjdCgpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoInRiaTExNyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0xLjAwIikpLnRvQmlnSW50ZWdlckV4YWN0KCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMSIpOworICAobmV3IFRlc3QoInRiaTExOCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0xLjAiKSkudG9CaWdJbnRlZ2VyRXhhY3QoKS50b1N0cmluZygpKS5lcXVhbHMoIi0xIik7CisgIChuZXcgVGVzdCgidGJpMTE5IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIpKS50b0JpZ0ludGVnZXJFeGFjdCgpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAKKyAgLy8gdGhlIGZvbGxvd2luZyBzaG91bGQgYWxsIHJhaXNlIGV4Y2VwdGlvbnMKKyAgCisgIGJhZHN0cmluZ3M9bmV3IGphdmEubGFuZy5TdHJpbmdbXXsiMC4wOSIsIjAuOSIsIjAuMDEiLCIwLjEiLCItMC4wMSIsIi0wLjEiLCIxLjAxIiwiLTEuMDEiLCItMS4xIiwiLTExMS4xMTEiLCIrMTExLjExMSIsIjEuMDkiLCIxLjA1IiwiMS4wNCIsIjEuOTkiLCIxLjkiLCIxLjUiLCIxLjQiLCItMS4wOSIsIi0xLjA1IiwiLTEuMDQiLCItMS45OSIsIi0xLjkiLCItMS41IiwiLTEuNCIsIjFFLTEwMDAiLCItMUUtMTAwMCIsIjExRS0xIiwiMS4xIiwiMTI3NjIzMTU2MTIzNjU2NTYxMzU2MTIzNTEyMzE1NjMxMjMxNTUxMzEyMzU2LjAwMDAwMSIsIjAuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxIn07IC8vIDMwMC0zMDMKKyAgLy8gMzA0LTMwNworICAvLyAzMDgtMzExCisgIC8vIDMxMi0zMTYKKyAgLy8gMzE3LTMyMAorICAvLyAzMjEtMzI0CisgIC8vIDMyNS0zMjgKKyAgLy8gMzI5CisgIC8vIDMzMAorICAKKyAge2ludCAkMTI1PWJhZHN0cmluZ3MubGVuZ3RoO2k9MDtpOmZvcig7JDEyNT4wOyQxMjUtLSxpKyspeworICAgdHJ5eworICAgIChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGJhZHN0cmluZ3NbaV0pKS50b0JpZ0ludGVnZXJFeGFjdCgpOworICAgIGZsYWc9ZmFsc2U7CisgICB9CisgICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDEyNil7CisgICAgZmxhZz10cnVlOworICAgfQorICAgKG5ldyBUZXN0KCJ0YmkiKygzMDAraSkpKS5vaz1mbGFnOworICAgfQorICB9LyppKi8KKyAgCisgIHN1bW1hcnkoInRvQmlnSW50ZWdlcisiKTsKKyAgcmV0dXJuO30KKworIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgCisgLyoqIFRlc3QgdGhlIHtAbGluayBCaWdEZWNpbWFsI3RvQ2hhckFycmF5fSBtZXRob2QuICovCisgCisgcHVibGljIHZvaWQgZGlhZ3RvY2hhcmFycmF5KCl7CisgIGphdmEubGFuZy5TdHJpbmcgc3RyOworICBjaGFyIGNhcltdOworICBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgZDsKKyAgY2hhciBjYVtdOworICAvLyB0aGUgZnVuY3Rpb24gb2YgdGhpcyBoYXMgYmVlbiB0ZXN0ZWQgYWJvdmUsIHRoaXMgaXMgc2ltcGx5IGFuCisgIC8vIGV4aXN0ZW5jZSBwcm9vZiBhbmQgdHlwZS1jaGVjaworICBzdHI9Ii0xMjMuNDUiOworICBjYXI9KHN0cikudG9DaGFyQXJyYXkoKTsKKyAgZD1uZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKHN0cik7CisgIGNhPWQudG9DaGFyQXJyYXkoKTsKKyAgKG5ldyBUZXN0KCJ0Y2EwMDEiKSkub2s9Y2EubGVuZ3RoPT1jYXIubGVuZ3RoOworICAobmV3IFRlc3QoInRjYTAwMiIpKS5vaz0obmV3IGphdmEubGFuZy5TdHJpbmcoY2EpKS5lcXVhbHMoKGphdmEubGFuZy5PYmplY3QpKG5ldyBqYXZhLmxhbmcuU3RyaW5nKGNhcikpKTsKKyAgKG5ldyBUZXN0KCJ0Y2EwMDMiKSkub2s9KGQudG9DaGFyQXJyYXkoKSBpbnN0YW5jZW9mIGNoYXJbXSk7CisgIChuZXcgVGVzdCgidGNhMDA0IikpLm9rPShjYSBpbnN0YW5jZW9mIGNoYXJbXSk7CisgIHN1bW1hcnkoInRvQ2hhckFycmF5Iik7CisgIHJldHVybjt9CisKKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIAorIC8qKiBUZXN0IHRoZSB7QGxpbmsgQmlnRGVjaW1hbCN0b1N0cmluZ30gbWV0aG9kLiAqLworIAorIHB1YmxpYyB2b2lkIGRpYWd0b3N0cmluZygpeworICBqYXZhLmxhbmcuU3RyaW5nIHN0cjsKKyAgY2hhciBjYXJbXTsKKyAgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIGQ7CisgIGNoYXIgY2FbXTsKKyAgamF2YS5sYW5nLlN0cmluZyBjczsKKyAgLy8gdGhlIGZ1bmN0aW9uIG9mIHRoaXMgaGFzIGJlZW4gdGVzdGVkIGFib3ZlLCB0aGlzIGlzIHNpbXBseSBhbgorICAvLyBleGlzdGVuY2UgcHJvb2YgYW5kIHR5cGUtY2hlY2sKKyAgc3RyPSIxMjMuNDUiOworICBjYXI9KHN0cikudG9DaGFyQXJyYXkoKTsKKyAgZD1uZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGNhciwwLGNhci5sZW5ndGgpOworICBjYT1kLnRvQ2hhckFycmF5KCk7CisgIGNzPWQudG9TdHJpbmcoKTsKKyAgKG5ldyBUZXN0KCJ0b3MwMDEiKSkub2s9KHN0ci50b0NoYXJBcnJheSgpLmxlbmd0aCk9PWNhLmxlbmd0aDsKKyAgKG5ldyBUZXN0KCJ0b3MwMDIiKSkub2s9KHN0ci5sZW5ndGgoKSk9PShjcy5sZW5ndGgoKSk7CisgIChuZXcgVGVzdCgidG9zMDAzIikpLm9rPXN0ci5lcXVhbHMoKGphdmEubGFuZy5PYmplY3QpKG5ldyBqYXZhLmxhbmcuU3RyaW5nKGNhKSkpOworICAobmV3IFRlc3QoInRvczAwNCIpKS5vaz1zdHIuZXF1YWxzKChqYXZhLmxhbmcuT2JqZWN0KWNzKTsKKyAgKG5ldyBUZXN0KCJ0b3MwMDUiKSkub2s9KGNzIGluc3RhbmNlb2YgamF2YS5sYW5nLlN0cmluZyk7CisgIChuZXcgVGVzdCgidG9zMDA2IikpLm9rPShkLnRvU3RyaW5nKCkgaW5zdGFuY2VvZiBqYXZhLmxhbmcuU3RyaW5nKTsKKyAgc3VtbWFyeSgidG9TdHJpbmciKTsKKyAgcmV0dXJuO30KKworIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgCisgLyoqIFRlc3QgdGhlIHtAbGluayBCaWdEZWNpbWFsI3Vuc2NhbGVkVmFsdWV9IG1ldGhvZC4gKi8KKyAKKyBwdWJsaWMgdm9pZCBkaWFndW5zY2FsZWR2YWx1ZSgpeworICAvLyBqdXN0IGxpa2UgdG9CaWdJbnRlZ2VyLCBidXQgc2NhbHkgYml0cyBhcmUgcHJlc2VydmVkIFt3aXRob3V0IGRvdHNdCisgIChuZXcgVGVzdCgidW5zMDAxIikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTEiKSkudW5zY2FsZWRWYWx1ZSgpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEiKTsKKyAgKG5ldyBUZXN0KCJ1bnMwMDIiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIwIikpLnVuc2NhbGVkVmFsdWUoKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJ1bnMwMDMiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIrMSIpKS51bnNjYWxlZFZhbHVlKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgidW5zMDA0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMTAiKSkudW5zY2FsZWRWYWx1ZSgpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAiKTsKKyAgKG5ldyBUZXN0KCJ1bnMwMDUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMDAwIikpLnVuc2NhbGVkVmFsdWUoKS50b1N0cmluZygpKS5lcXVhbHMoIjEwMDAiKTsKKyAgKG5ldyBUZXN0KCJ1bnMwMDYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMUUrMCIpKS51bnNjYWxlZFZhbHVlKCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMSIpOworICAobmV3IFRlc3QoInVuczAwNyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjBFKzAiKSkudW5zY2FsZWRWYWx1ZSgpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoInVuczAwOCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIisxRSswIikpLnVuc2NhbGVkVmFsdWUoKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJ1bnMwMDkiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMEUrMCIpKS51bnNjYWxlZFZhbHVlKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMCIpOworICAobmV3IFRlc3QoInVuczAxMCIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjFFKzMiKSkudW5zY2FsZWRWYWx1ZSgpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAwMCIpOworICAobmV3IFRlc3QoInVuczAxMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAiKSkudW5zY2FsZWRWYWx1ZSgpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoInVuczAxMiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDEiKSkudW5zY2FsZWRWYWx1ZSgpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoInVuczAxMyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjAuMCIpKS51bnNjYWxlZFZhbHVlKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgidW5zMDE0IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMC4xIikpLnVuc2NhbGVkVmFsdWUoKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJ1bnMwMTUiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMC4wMCIpKS51bnNjYWxlZFZhbHVlKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgidW5zMDE2IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTAuMDEiKSkudW5zY2FsZWRWYWx1ZSgpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEiKTsKKyAgKG5ldyBUZXN0KCJ1bnMwMTciKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMC4wIikpLnVuc2NhbGVkVmFsdWUoKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJ1bnMwMTgiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMC4xIikpLnVuc2NhbGVkVmFsdWUoKS50b1N0cmluZygpKS5lcXVhbHMoIi0xIik7CisgIChuZXcgVGVzdCgidW5zMDE5IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiMS4wMCIpKS51bnNjYWxlZFZhbHVlKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDAiKTsKKyAgKG5ldyBUZXN0KCJ1bnMwMjAiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxLjAxIikpLnVuc2NhbGVkVmFsdWUoKS50b1N0cmluZygpKS5lcXVhbHMoIjEwMSIpOworICAobmV3IFRlc3QoInVuczAyMSIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuMCIpKS51bnNjYWxlZFZhbHVlKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMCIpOworICAobmV3IFRlc3QoInVuczAyMiIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEuMSIpKS51bnNjYWxlZFZhbHVlKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMSIpOworICAobmV3IFRlc3QoInVuczAyMyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0xLjAwIikpLnVuc2NhbGVkVmFsdWUoKS50b1N0cmluZygpKS5lcXVhbHMoIi0xMDAiKTsKKyAgKG5ldyBUZXN0KCJ1bnMwMjQiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMS4wMSIpKS51bnNjYWxlZFZhbHVlKCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMTAxIik7CisgIChuZXcgVGVzdCgidW5zMDI1IikpLm9rPSgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgiLTEuMCIpKS51bnNjYWxlZFZhbHVlKCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMTAiKTsKKyAgKG5ldyBUZXN0KCJ1bnMwMjYiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCItMS4xIikpLnVuc2NhbGVkVmFsdWUoKS50b1N0cmluZygpKS5lcXVhbHMoIi0xMSIpOworICAobmV3IFRlc3QoInVuczAyNyIpKS5vaz0oKG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIi0xMTEuMTExIikpLnVuc2NhbGVkVmFsdWUoKS50b1N0cmluZygpKS5lcXVhbHMoIi0xMTExMTEiKTsKKyAgKG5ldyBUZXN0KCJ1bnMwMjgiKSkub2s9KChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIrMTExLjExMSIpKS51bnNjYWxlZFZhbHVlKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMTExMTEiKTsKKyAgc3VtbWFyeSgidW5zY2FsZWRWYWx1ZSIpOworICByZXR1cm47fQorCisgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiogVGVzdCB0aGUge0BsaW5rIEJpZ0RlY2ltYWwjdmFsdWVPZn0gbWV0aG9kIFtsb25nIGFuZCBkb3VibGVdLiAqLworIAorIHB1YmxpYyB2b2lkIGRpYWd2YWx1ZW9mKCl7CisgIGJvb2xlYW4gZmxhZz1mYWxzZTsKKyAgamF2YS5sYW5nLk51bWJlckZvcm1hdEV4Y2VwdGlvbiBlPW51bGw7CisgIGRvdWJsZSBkemVyOworICBkb3VibGUgZHBvczsKKyAgZG91YmxlIGRuZWc7CisgIGRvdWJsZSBkcG9zNTsKKyAgZG91YmxlIGRuZWc1OworICBkb3VibGUgZG1pbjsKKyAgZG91YmxlIGRtYXg7CisgIGRvdWJsZSBkOworICAKKyAgLy8gdmFsdWVPZihsb25nIFssc2NhbGVdKSAtLQorICAKKyAgKG5ldyBUZXN0KCJ2YWwwMDEiKSkub2s9KGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKChsb25nKSgoYnl0ZSktMikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTIiKTsKKyAgKG5ldyBUZXN0KCJ2YWwwMDIiKSkub2s9KGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKChsb25nKSgoYnl0ZSktMSkpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEiKTsKKyAgKG5ldyBUZXN0KCJ2YWwwMDMiKSkub2s9KGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKChsb25nKSgoYnl0ZSktMCkpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoInZhbDAwNCIpKS5vaz0oY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YoKGxvbmcpKChieXRlKSsxKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgidmFsMDA1IikpLm9rPShjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZigobG9uZykoKGJ5dGUpKzIpKS50b1N0cmluZygpKS5lcXVhbHMoIjIiKTsKKyAgKG5ldyBUZXN0KCJ2YWwwMDYiKSkub2s9KGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKChsb25nKSgoYnl0ZSkxMCkpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAiKTsKKyAgKG5ldyBUZXN0KCJ2YWwwMDciKSkub2s9KGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKChsb25nKSgoYnl0ZSkxMSkpLnRvU3RyaW5nKCkpLmVxdWFscygiMTEiKTsKKyAgKG5ldyBUZXN0KCJ2YWwwMDgiKSkub2s9KGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKGxtaW4pLnRvU3RyaW5nKCkpLmVxdWFscygiLTkyMjMzNzIwMzY4NTQ3NzU4MDgiKTsKKyAgKG5ldyBUZXN0KCJ2YWwwMDkiKSkub2s9KGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKGxtYXgpLnRvU3RyaW5nKCkpLmVxdWFscygiOTIyMzM3MjAzNjg1NDc3NTgwNyIpOworICAobmV3IFRlc3QoInZhbDAxMCIpKS5vaz0oY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YobG5lZykudG9TdHJpbmcoKSkuZXF1YWxzKCItMSIpOworICAobmV3IFRlc3QoInZhbDAxMSIpKS5vaz0oY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YobHplcikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgidmFsMDEyIikpLm9rPShjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihscG9zKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJ2YWwwMTMiKSkub2s9KGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKGxtaW4sMCkudG9TdHJpbmcoKSkuZXF1YWxzKCItOTIyMzM3MjAzNjg1NDc3NTgwOCIpOworICAobmV3IFRlc3QoInZhbDAxNCIpKS5vaz0oY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YobG1heCwwKS50b1N0cmluZygpKS5lcXVhbHMoIjkyMjMzNzIwMzY4NTQ3NzU4MDciKTsKKyAgKG5ldyBUZXN0KCJ2YWwwMTUiKSkub2s9KGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKGxuZWcsMCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMSIpOworICAobmV3IFRlc3QoInZhbDAxNiIpKS5vaz0oY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YobHBvcywwKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgCisgIChuZXcgVGVzdCgidmFsMDE3IikpLm9rPShjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihsemVyLDApLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoInZhbDAxOCIpKS5vaz0oY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YobHplciwxKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMCIpOworICAobmV3IFRlc3QoInZhbDAxOSIpKS5vaz0oY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YobHplciwyKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAiKTsKKyAgKG5ldyBUZXN0KCJ2YWwwMjAiKSkub2s9KGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKGx6ZXIsMykudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMCIpOworICAobmV3IFRlc3QoInZhbDAyMSIpKS5vaz0oY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YobHplciwxMCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMDAwMDAwMDAiKTsKKyAgCisgIChuZXcgVGVzdCgidmFsMDIyIikpLm9rPShjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihsbWluLDcpLnRvU3RyaW5nKCkpLmVxdWFscygiLTkyMjMzNzIwMzY4NS40Nzc1ODA4Iik7CisgIChuZXcgVGVzdCgidmFsMDIzIikpLm9rPShjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihsbWF4LDExKS50b1N0cmluZygpKS5lcXVhbHMoIjkyMjMzNzIwLjM2ODU0Nzc1ODA3Iik7CisgIAorICAKKyAgdHJ5e2NoZWNrc2NhbGU6ZG97CisgICBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZigobG9uZykyMywtOCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5OdW1iZXJGb3JtYXRFeGNlcHRpb24gJDEyNyl7ZT0kMTI3OworICAgZmxhZz0oZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiTmVnYXRpdmUgc2NhbGU6IC04Iik7CisgIH0vKmNoZWNrc2NhbGUqLworICAobmV3IFRlc3QoInZhbDEwMCIpKS5vaz1mbGFnOworICAKKyAgLy8gdmFsdWVPZihkb3VibGUpIC0tCisgIAorICBkemVyPShkb3VibGUpMDsKKyAgZHBvcz0oZG91YmxlKTE7CisgIGRwb3M9ZHBvcy8oKGRvdWJsZSkxMCk7CisgIGRuZWc9KGRvdWJsZSktZHBvczsKKyAgKG5ldyBUZXN0KCJ2YWwyMDEiKSkub2s9KGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKGRuZWcpLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuMSIpOworICAobmV3IFRlc3QoInZhbDIwMiIpKS5vaz0oY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YoZHplcikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAiKTsgLy8gY2YuIGNvbnN0cnVjdG9yCisgIChuZXcgVGVzdCgidmFsMjAzIikpLm9rPShjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihkcG9zKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMSIpOworICBkcG9zNT0oZG91YmxlKTAuNUQ7CisgIGRuZWc1PShkb3VibGUpLWRwb3M1OworICAobmV3IFRlc3QoInZhbDIwNCIpKS5vaz0oY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YoZG5lZzUpLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuNSIpOworICAobmV3IFRlc3QoInZhbDIwNSIpKS5vaz0oY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YoZHBvczUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC41Iik7CisgIGRtaW49amF2YS5sYW5nLkRvdWJsZS5NSU5fVkFMVUU7CisgIGRtYXg9amF2YS5sYW5nLkRvdWJsZS5NQVhfVkFMVUU7CisgIChuZXcgVGVzdCgidmFsMjA2IikpLm9rPShjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihkbWluKS50b1N0cmluZygpKS5lcXVhbHMoIjQuOUUtMzI0Iik7CisgIChuZXcgVGVzdCgidmFsMjA3IikpLm9rPShjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihkbWF4KS50b1N0cmluZygpKS5lcXVhbHMoIjEuNzk3NjkzMTM0ODYyMzE1N0UrMzA4Iik7CisgIAorICAvLyBuYXN0aWVzCisgIGQ9KGRvdWJsZSk5OworICBkPWQvKChkb3VibGUpMTApOworICAobmV3IFRlc3QoInZhbDIxMCIpKS5vaz0oY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YoZCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjkiKTsKKyAgZD1kLygoZG91YmxlKTEwKTsKKyAgKG5ldyBUZXN0KCJ2YWwyMTEiKSkub2s9KGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKGQpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wOSIpOworICBkPWQvKChkb3VibGUpMTApOworICAobmV3IFRlc3QoInZhbDIxMiIpKS5vaz0oY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YoZCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwOTAiKTsKKyAgZD1kLygoZG91YmxlKTEwKTsKKyAgKG5ldyBUZXN0KCJ2YWwyMTMiKSkub2s9KGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKGQpLnRvU3RyaW5nKCkpLmVxdWFscygiOS4wRS00Iik7CisgIGQ9ZC8oKGRvdWJsZSkxMCk7CisgIChuZXcgVGVzdCgidmFsMjE0IikpLm9rPShjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihkKS50b1N0cmluZygpKS5lcXVhbHMoIjguOTk5OTk5OTk5OTk5OTk5RS01Iik7CisgIGQ9ZC8oKGRvdWJsZSkxMCk7CisgIChuZXcgVGVzdCgidmFsMjE1IikpLm9rPShjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihkKS50b1N0cmluZygpKS5lcXVhbHMoIjguOTk5OTk5OTk5OTk5OTk5RS02Iik7CisgIGQ9ZC8oKGRvdWJsZSkxMCk7CisgIChuZXcgVGVzdCgidmFsMjE2IikpLm9rPShjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihkKS50b1N0cmluZygpKS5lcXVhbHMoIjguOTk5OTk5OTk5OTk5OTk5RS03Iik7CisgIGQ9ZC8oKGRvdWJsZSkxMCk7CisgIChuZXcgVGVzdCgidmFsMjE3IikpLm9rPShjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihkKS50b1N0cmluZygpKS5lcXVhbHMoIjguOTk5OTk5OTk5OTk5OTk5RS04Iik7CisgIGQ9ZC8oKGRvdWJsZSkxMCk7CisgIChuZXcgVGVzdCgidmFsMjE4IikpLm9rPShjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihkKS50b1N0cmluZygpKS5lcXVhbHMoIjguOTk5OTk5OTk5OTk5OTk4RS05Iik7CisgIAorICB0cnl7Y2hlY2twaW46ZG97CisgICBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihqYXZhLmxhbmcuRG91YmxlLlBPU0lUSVZFX0lORklOSVRZKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bWJlckZvcm1hdEV4Y2VwdGlvbiAkMTI4KXsKKyAgIGZsYWc9dHJ1ZTsKKyAgfS8qY2hlY2twaW4qLworICAobmV3IFRlc3QoInZhbDMwMSIpKS5vaz1mbGFnOworICB0cnl7Y2hlY2tuaW46ZG97CisgICBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihqYXZhLmxhbmcuRG91YmxlLk5FR0FUSVZFX0lORklOSVRZKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bWJlckZvcm1hdEV4Y2VwdGlvbiAkMTI5KXsKKyAgIGZsYWc9dHJ1ZTsKKyAgfS8qY2hlY2tuaW4qLworICAobmV3IFRlc3QoInZhbDMwMiIpKS5vaz1mbGFnOworICB0cnl7Y2hlY2tuYW46ZG97CisgICBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihqYXZhLmxhbmcuRG91YmxlLk5hTik7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5OdW1iZXJGb3JtYXRFeGNlcHRpb24gJDEzMCl7CisgICBmbGFnPXRydWU7CisgIH0vKmNoZWNrbmFuKi8KKyAgKG5ldyBUZXN0KCJ2YWwzMDMiKSkub2s9ZmxhZzsKKyAgCisgIHN1bW1hcnkoInZhbHVlT2YiKTsKKyAgcmV0dXJuO30KKworIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgCisgLyoqIFRlc3QgdGhlIHtAbGluayBNYXRoQ29udGV4dH0gY2xhc3MuICovCisgCisgcHVibGljIHZvaWQgZGlhZ21hdGhjb250ZXh0KCl7CisgIGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQgbWNjb24xOworICBjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0IG1jY29uMjsKKyAgY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dCBtY2NvbjM7CisgIGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQgbWNjb240OworICBjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0IG1jcm1jOworICBjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0IG1jcm1kOworICBjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0IG1jcm1mOworICBjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0IG1jcm1oZDsKKyAgY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dCBtY3JtaGU7CisgIGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQgbWNybWh1OworICBjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0IG1jcm11bjsKKyAgY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dCBtY3JtdTsKKyAgYm9vbGVhbiBmbGFnPWZhbHNlOworICBqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGU9bnVsbDsKKyAgLy8gdGhlc2UgdGVzdHMgYXJlIG1vc3RseSBleGlzdGVuY2UgY2hlY2tzCisgIChuZXcgVGVzdCgibWNuMDAxIikpLm9rPShjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LkRFRkFVTFQuZ2V0RGlnaXRzKCkpPT05OworICAobmV3IFRlc3QoIm1jbjAwMiIpKS5vaz0oY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ERUZBVUxULmdldEZvcm0oKSk9PWNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuU0NJRU5USUZJQzsKKyAgKG5ldyBUZXN0KCJtY24wMDMiKSkub2s9KGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuREVGQVVMVC5nZXRGb3JtKCkpIT1jb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LkVOR0lORUVSSU5HOworICAobmV3IFRlc3QoIm1jbjAwNCIpKS5vaz0oY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ERUZBVUxULmdldEZvcm0oKSkhPWNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUExBSU47CisgIChuZXcgVGVzdCgibWNuMDA1IikpLm9rPShjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LkRFRkFVTFQuZ2V0TG9zdERpZ2l0cygpPzE6MCk9PTA7CisgIChuZXcgVGVzdCgibWNuMDA2IikpLm9rPShjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LkRFRkFVTFQuZ2V0Um91bmRpbmdNb2RlKCkpPT1jb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVA7CisgIAorICAobmV3IFRlc3QoIm1jbjAxMCIpKS5vaz1jb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0NFSUxJTkc+PTA7CisgIChuZXcgVGVzdCgibWNuMDExIikpLm9rPWNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfRE9XTj49MDsKKyAgKG5ldyBUZXN0KCJtY24wMTIiKSkub2s9Y29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9GTE9PUj49MDsKKyAgKG5ldyBUZXN0KCJtY24wMTMiKSkub2s9Y29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0RPV04+PTA7CisgIChuZXcgVGVzdCgibWNuMDE0IikpLm9rPWNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9FVkVOPj0wOworICAobmV3IFRlc3QoIm1jbjAxNSIpKS5vaz1jb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVA+PTA7CisgIChuZXcgVGVzdCgibWNuMDE2IikpLm9rPWNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfVU5ORUNFU1NBUlk+PTA7CisgIChuZXcgVGVzdCgibWNuMDE3IikpLm9rPWNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfVVA+PTA7CisgIAorICBtY2NvbjE9bmV3IGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQoMTExKTsKKyAgKG5ldyBUZXN0KCJtY24wMjEiKSkub2s9KG1jY29uMS5nZXREaWdpdHMoKSk9PTExMTsKKyAgKG5ldyBUZXN0KCJtY24wMjIiKSkub2s9KG1jY29uMS5nZXRGb3JtKCkpPT1jb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlNDSUVOVElGSUM7CisgIChuZXcgVGVzdCgibWNuMDIzIikpLm9rPShtY2NvbjEuZ2V0TG9zdERpZ2l0cygpPzE6MCk9PTA7CisgIChuZXcgVGVzdCgibWNuMDI0IikpLm9rPShtY2NvbjEuZ2V0Um91bmRpbmdNb2RlKCkpPT1jb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVA7CisgIAorICBtY2NvbjI9bmV3IGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQoNzgsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5FTkdJTkVFUklORyk7CisgIChuZXcgVGVzdCgibWNuMDMxIikpLm9rPShtY2NvbjIuZ2V0RGlnaXRzKCkpPT03ODsKKyAgKG5ldyBUZXN0KCJtY24wMzIiKSkub2s9KG1jY29uMi5nZXRGb3JtKCkpPT1jb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LkVOR0lORUVSSU5HOworICAobmV3IFRlc3QoIm1jbjAzMyIpKS5vaz0obWNjb24yLmdldExvc3REaWdpdHMoKT8xOjApPT0wOworICAobmV3IFRlc3QoIm1jbjAzNCIpKS5vaz0obWNjb24yLmdldFJvdW5kaW5nTW9kZSgpKT09Y29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQOworICAKKyAgbWNjb24zPW5ldyBjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0KDUsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5QTEFJTix0cnVlKTsKKyAgKG5ldyBUZXN0KCJtY24wNDEiKSkub2s9KG1jY29uMy5nZXREaWdpdHMoKSk9PTU7CisgIChuZXcgVGVzdCgibWNuMDQyIikpLm9rPShtY2NvbjMuZ2V0Rm9ybSgpKT09Y29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5QTEFJTjsKKyAgKG5ldyBUZXN0KCJtY24wNDMiKSkub2s9KG1jY29uMy5nZXRMb3N0RGlnaXRzKCk/MTowKT09MTsKKyAgKG5ldyBUZXN0KCJtY24wNDQiKSkub2s9KG1jY29uMy5nZXRSb3VuZGluZ01vZGUoKSk9PWNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUDsKKyAgCisgIG1jY29uND1uZXcgY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dCgwLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuU0NJRU5USUZJQyxmYWxzZSxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0ZMT09SKTsKKyAgKG5ldyBUZXN0KCJtY24wNTEiKSkub2s9KG1jY29uNC5nZXREaWdpdHMoKSk9PTA7CisgIChuZXcgVGVzdCgibWNuMDUyIikpLm9rPShtY2NvbjQuZ2V0Rm9ybSgpKT09Y29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5TQ0lFTlRJRklDOworICAobmV3IFRlc3QoIm1jbjA1MyIpKS5vaz0obWNjb240LmdldExvc3REaWdpdHMoKT8xOjApPT0wOworICAobmV3IFRlc3QoIm1jbjA1NCIpKS5vaz0obWNjb240LmdldFJvdW5kaW5nTW9kZSgpKT09Y29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9GTE9PUjsKKyAgCisgIChuZXcgVGVzdCgibWNuMDYxIikpLm9rPShtY2NvbjEudG9TdHJpbmcoKSkuZXF1YWxzKCJkaWdpdHM9MTExIGZvcm09U0NJRU5USUZJQyBsb3N0RGlnaXRzPTAgcm91bmRpbmdNb2RlPVJPVU5EX0hBTEZfVVAiKTsKKyAgCisgIChuZXcgVGVzdCgibWNuMDYyIikpLm9rPShtY2NvbjIudG9TdHJpbmcoKSkuZXF1YWxzKCJkaWdpdHM9NzggZm9ybT1FTkdJTkVFUklORyBsb3N0RGlnaXRzPTAgcm91bmRpbmdNb2RlPVJPVU5EX0hBTEZfVVAiKTsKKyAgCisgIChuZXcgVGVzdCgibWNuMDYzIikpLm9rPShtY2NvbjMudG9TdHJpbmcoKSkuZXF1YWxzKCJkaWdpdHM9NSBmb3JtPVBMQUlOIGxvc3REaWdpdHM9MSByb3VuZGluZ01vZGU9Uk9VTkRfSEFMRl9VUCIpOworICAKKyAgKG5ldyBUZXN0KCJtY24wNjQiKSkub2s9KG1jY29uNC50b1N0cmluZygpKS5lcXVhbHMoImRpZ2l0cz0wIGZvcm09U0NJRU5USUZJQyBsb3N0RGlnaXRzPTAgcm91bmRpbmdNb2RlPVJPVU5EX0ZMT09SIik7CisgIAorICAKKyAgLy8gY29tcGxldGUgdGVzdGluZyByb3VuZGluZyBtb2RlcyByb3VuZCB0cmlwcworICBtY3JtYz1uZXcgY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dCgwLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUExBSU4sZmFsc2UsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9DRUlMSU5HKTsKKyAgbWNybWQ9bmV3IGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQoMCxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlBMQUlOLGZhbHNlLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfRE9XTik7CisgIG1jcm1mPW5ldyBjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0KDAsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5QTEFJTixmYWxzZSxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0ZMT09SKTsKKyAgbWNybWhkPW5ldyBjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0KDAsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5QTEFJTixmYWxzZSxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRE9XTik7CisgIG1jcm1oZT1uZXcgY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dCgwLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUExBSU4sZmFsc2UsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0VWRU4pOworICBtY3JtaHU9bmV3IGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQoMCxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlBMQUlOLGZhbHNlLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCk7CisgIG1jcm11bj1uZXcgY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dCgwLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUExBSU4sZmFsc2UsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9VTk5FQ0VTU0FSWSk7CisgIG1jcm11PW5ldyBjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0KDAsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5QTEFJTixmYWxzZSxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX1VQKTsKKyAgCisgIChuZXcgVGVzdCgibWNuMDcxIikpLm9rPShtY3JtYy50b1N0cmluZygpKS5lcXVhbHMoImRpZ2l0cz0wIGZvcm09UExBSU4gbG9zdERpZ2l0cz0wIHJvdW5kaW5nTW9kZT1ST1VORF9DRUlMSU5HIik7CisgIAorICAobmV3IFRlc3QoIm1jbjA3MiIpKS5vaz0obWNybWQudG9TdHJpbmcoKSkuZXF1YWxzKCJkaWdpdHM9MCBmb3JtPVBMQUlOIGxvc3REaWdpdHM9MCByb3VuZGluZ01vZGU9Uk9VTkRfRE9XTiIpOworICAKKyAgKG5ldyBUZXN0KCJtY24wNzMiKSkub2s9KG1jcm1mLnRvU3RyaW5nKCkpLmVxdWFscygiZGlnaXRzPTAgZm9ybT1QTEFJTiBsb3N0RGlnaXRzPTAgcm91bmRpbmdNb2RlPVJPVU5EX0ZMT09SIik7CisgIAorICAobmV3IFRlc3QoIm1jbjA3NCIpKS5vaz0obWNybWhkLnRvU3RyaW5nKCkpLmVxdWFscygiZGlnaXRzPTAgZm9ybT1QTEFJTiBsb3N0RGlnaXRzPTAgcm91bmRpbmdNb2RlPVJPVU5EX0hBTEZfRE9XTiIpOworICAKKyAgKG5ldyBUZXN0KCJtY24wNzUiKSkub2s9KG1jcm1oZS50b1N0cmluZygpKS5lcXVhbHMoImRpZ2l0cz0wIGZvcm09UExBSU4gbG9zdERpZ2l0cz0wIHJvdW5kaW5nTW9kZT1ST1VORF9IQUxGX0VWRU4iKTsKKyAgCisgIChuZXcgVGVzdCgibWNuMDc2IikpLm9rPShtY3JtaHUudG9TdHJpbmcoKSkuZXF1YWxzKCJkaWdpdHM9MCBmb3JtPVBMQUlOIGxvc3REaWdpdHM9MCByb3VuZGluZ01vZGU9Uk9VTkRfSEFMRl9VUCIpOworICAKKyAgKG5ldyBUZXN0KCJtY24wNzciKSkub2s9KG1jcm11bi50b1N0cmluZygpKS5lcXVhbHMoImRpZ2l0cz0wIGZvcm09UExBSU4gbG9zdERpZ2l0cz0wIHJvdW5kaW5nTW9kZT1ST1VORF9VTk5FQ0VTU0FSWSIpOworICAKKyAgKG5ldyBUZXN0KCJtY24wNzgiKSkub2s9KG1jcm11LnRvU3RyaW5nKCkpLmVxdWFscygiZGlnaXRzPTAgZm9ybT1QTEFJTiBsb3N0RGlnaXRzPTAgcm91bmRpbmdNb2RlPVJPVU5EX1VQIik7CisgIAorICAKKyAgLy8gW2dldCBtZXRob2RzIHRlc3RlZCBhbHJlYWR5XQorICAKKyAgLy8gZXJyb3JzLi4uCisgIAorICB0cnl7Y2hlY2tkaWc6ZG97CisgICBuZXcgY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dCgtMSk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gJDEzMSl7ZT0kMTMxOworICAgZmxhZz0oZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiRGlnaXRzIHRvbyBzbWFsbDogLTEiKTsKKyAgfS8qY2hlY2tkaWcqLworICAobmV3IFRlc3QoIm1jbjEwMSIpKS5vaz1mbGFnOworICB0cnl7Y2hlY2tkaWdiaWc6ZG97CisgICBuZXcgY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dCgxMDAwMDAwMDAwKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiAkMTMyKXtlPSQxMzI7CisgICBmbGFnPShlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJEaWdpdHMgdG9vIGxhcmdlOiAxMDAwMDAwMDAwIik7CisgIH0vKmNoZWNrZGlnYmlnKi8KKyAgKG5ldyBUZXN0KCJtY24xMDIiKSkub2s9ZmxhZzsKKyAgCisgIHRyeXtjaGVja2Zvcm06ZG97CisgICBuZXcgY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dCgwLDUpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uICQxMzMpe2U9JDEzMzsKKyAgIGZsYWc9KGUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIkJhZCBmb3JtIHZhbHVlOiA1Iik7CisgIH0vKmNoZWNrZm9ybSovCisgIChuZXcgVGVzdCgibWNuMTExIikpLm9rPWZsYWc7CisgIHRyeXtjaGVja2Zvcm1uZWc6ZG97CisgICBuZXcgY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dCgwLC0xKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiAkMTM0KXtlPSQxMzQ7CisgICBmbGFnPShlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJCYWQgZm9ybSB2YWx1ZTogLTEiKTsKKyAgfS8qY2hlY2tmb3JtbmVnKi8KKyAgKG5ldyBUZXN0KCJtY24xMTIiKSkub2s9ZmxhZzsKKyAgCisgIC8vIFtsb3N0RGlnaXRzIGNhbm5vdCBiZSBpbnZhbGlkXQorICAKKyAgdHJ5e2NoZWNrcm91bmQ6ZG97CisgICBuZXcgY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dCgwLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUExBSU4sZmFsc2UsMTIpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uICQxMzUpe2U9JDEzNTsKKyAgIGZsYWc9KGUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIkJhZCByb3VuZGluZ01vZGUgdmFsdWU6IDEyIik7CisgIH0vKmNoZWNrcm91bmQqLworICAobmV3IFRlc3QoIm1jbjEyMSIpKS5vaz1mbGFnOworICB0cnl7Y2hlY2tyb3VuZG5lZzpkb3sKKyAgIG5ldyBjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0KDAsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5QTEFJTixmYWxzZSwtMSk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gJDEzNil7ZT0kMTM2OworICAgZmxhZz0oZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiQmFkIHJvdW5kaW5nTW9kZSB2YWx1ZTogLTEiKTsKKyAgfS8qY2hlY2tyb3VuZG5lZyovCisgIChuZXcgVGVzdCgibWNuMTIyIikpLm9rPWZsYWc7CisgIAorICBzdW1tYXJ5KCJNYXRoQ29udGV4dCIpOworICByZXR1cm47fQorCisgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiogVGVzdCBnZW5lcmFsIGFyaXRobWV0aWMgKGJhc2Ugb3BlcmF0b3JzKS4KKyAgKiA8cD5Vbmxpa2UgdGhlIHNwZWNpZmljIG1ldGhvZCB0ZXN0cywgdGhlc2UgdGVzdHMgd2VyZSByYW5kb21seQorICAqIGdlbmVyYXRlZCBieSBhbiBJQk0gT2JqZWN0IFJleHggcHJvY2VkdXJlLCB0aGVuIG1hbnVhbGx5IGNvcnJlY3RlZAorICAqIGZvciBrbm93biBkaWZmZXJlbmNlcyBmcm9tIEFOU0kgWDMtMjc0LiAgVGhlc2UgZGlmZmVyZW5jZXMgYXJlOgorICAqIDxvbD4KKyAgKiA8bGk+dGhlIHRyaWdnZXIgcG9pbnQgaW4gZXhwb25lbnRpYWwgbm90YXRpb24gaXMgZml4ZWQgaW4gQU5TSQorICAqICAgICBYMy0yNzQgYnV0IHZhcmllcyB3aXRoIERJR0lUUyBpbiBDbGFzc2ljIGFuZCBPYmplY3QgUmV4eAorICAqIDxsaT5zb21lIHRyYWlsaW5nIHplcm9zIHdlcmUgbWlzc2luZyAoZS5nLiwgMS4zICsgMUUtNjAgc2hvdWxkIHNob3cKKyAgKiAgICAgc2V2ZW4gdHJhaWxpbmcgemVyb3MpCisgICogPGxpPnRoZSBwb3dlciBvcGVyYXRvciBpcyBsZXNzIGFjY3VyYXRlIGluIE9iamVjdCBSZXh4CisgICogPGxpPkFOU0kgWDMtMjc0IFtlcnJhdGEgMTk5OV0gcm91bmRzIGlucHV0IG51bWJlcnMgdG8gRElHSVRTIChyYXRoZXIKKyAgKiAgICAgdGhhbiB0cnVuY2F0aW5nIHRvIERJR0lUUysxKS4KKyAgKiA8L29sPgorICAqLworIAorIHB1YmxpYyB2b2lkIGRpYWdtYXRoKCl7CisgIGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQgZGVmOworICBkZWY9Y29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ERUZBVUxUOworICBtYXRodGVzdCgxLGRlZiwiLTkzNzUyODQuNDIiLCI1NTE2Ljk5ODMyRSsyNzI3Njk4NCIsIjUuNTE2OTk4MzJFKzI3Mjc2OTg3IiwiLTUuNTE2OTk4MzJFKzI3Mjc2OTg3IiwiLTUuMTcyMzQyODRFKzI3Mjc2OTk0IiwiLTEuNjk5MzQ1MTZFLTI3Mjc2OTgxIiwiMCIsIi05Mzc1Mjg0LjQyIiwiNi43OTA1Nzc1MkUrNDEiKTsKKyAgbWF0aHRlc3QoMixkZWYsIi00MTAuODMyNzEwIiwiOTkuMzU4ODI0M0UtNTAyNzQwODYyIiwiLTQxMC44MzI3MTAiLCItNDEwLjgzMjcxMCIsIi00LjA4MTk4NTUwRS01MDI3NDA4NTgiLCItNC4xMzQ4Mzg2OEUrNTAyNzQwODYyIiwiIiwiIiwiMS4zNjk3Nzc4NkUrMjYiKTsKKyAgbWF0aHRlc3QoMyxkZWYsIjgwMDI1LjIzNDAiLCItOC4wMzA5NzU4MSIsIjgwMDE3LjIwMzAiLCI4MDAzMy4yNjUwIiwiLTY0MjY4MC43MTgiLCItOTk2NC41NzE2NyIsIi05OTY0IiwiNC41OTEwMjkxNiIsIjUuOTQ1NDQ1MTdFLTQwIik7CisgIG1hdGh0ZXN0KDQsZGVmLCI4MTA1MjAyMC4yIiwiLTQ2NDUyNTQ5NSIsIi0zODM0NzM0NzUiLCI1NDU1Nzc1MTUiLCItMy43NjUwNzI5OEUrMTYiLCItMC4xNzQ0ODM0NyIsIjAiLCI4MTA1MjAyMC4yIiwiIik7CisgIG1hdGh0ZXN0KDUsZGVmLCI3MTUuMDY5Mjk0RS0yNjkyMzE1MSIsIjg1LjQ0MDQxMjhFKzc5NjM4ODU1NyIsIjguNTQ0MDQxMjhFKzc5NjM4ODU1OCIsIi04LjU0NDA0MTI4RSs3OTYzODg1NTgiLCI2LjEwOTU4MTU3RSs3Njk0NjU0MTAiLCI4LjM2OTIxNjI4RS04MjMzMTE3MDgiLCIwIiwiNy4xNTA2OTI5NEUtMjY5MjMxNDkiLCI0Ljg4ODAyMjEzRS0yNDIzMDgzMzQiKTsKKyAgbWF0aHRlc3QoNixkZWYsIi0yMTk3MTU3NS4wRSszMTQ1NDQ0MSIsIi03MDk0NDk2MC4zRSsxMTEyMzgyMjEiLCItNy4wOTQ0OTYwM0UrMTExMjM4MjI4IiwiNy4wOTQ0OTYwM0UrMTExMjM4MjI4IiwiMS41NTg3NzI1MkUrMTQyNjkyNjc3IiwiMy4wOTY5ODg4NEUtNzk3ODM3ODEiLCIwIiwiLTIuMTk3MTU3NTBFKzMxNDU0NDQ4IiwiLTQuMDQ1NDk1MDJFLTIyMDE4MTEzOSIpOworICBtYXRodGVzdCg3LGRlZiwiNjgyLjI1MzE2IiwiNTQ0NzAxODUuNiIsIjU0NDcwODY3LjkiLCItNTQ0Njk1MDMuNCIsIjMuNzE2MjQ1NjNFKzEwIiwiMC4wMDAwMTI1MjUyNTg2IiwiMCIsIjY4Mi4yNTMxNiIsIjMuNDg1Nzg2OTlFKzE1NDM2NTU0MSIpOworICBtYXRodGVzdCg4LGRlZiwiLTI1NzU4Njc1Ny4iLCIyMDgyODg4LjcxIiwiLTI1NTUwMzg2OCIsIi0yNTk2Njk2NDYiLCItNS4zNjUyNDU0OEUrMTQiLCItMTIzLjY2ODAzNiIsIi0xMjMiLCItMTM5MTQ0NS42NyIsIi0xLjI2ODc5NTE1RSsxNzUxOTAyMCIpOworICBtYXRodGVzdCg5LGRlZiwiMzE5NTc3NTQwLkUrMjQyNTk5NzYxIiwiNjAuNzEyNDU2MSIsIjMuMTk1Nzc1NDBFKzI0MjU5OTc2OSIsIjMuMTk1Nzc1NDBFKzI0MjU5OTc2OSIsIjEuOTQwMjMzNzRFKzI0MjU5OTc3MSIsIjUuMjYzNzg4NjlFKzI0MjU5OTc2NyIsIiIsIiIsIiIpOworICBtYXRodGVzdCgxMCxkZWYsIi0xMzc2OTk3Ny4wIiwiMjQzNzEuMzM4MSIsIi0xMzc0NTYwNS43IiwiLTEzNzk0MzQ4LjMiLCItMy4zNTU5Mjc2NUUrMTEiLCItNTY1LjAwNzAxNSIsIi01NjUiLCItMTcwLjk3MzUiLCItOC43MzczNDAwMUUrMTczOTgyIik7CisgIG1hdGh0ZXN0KDExLGRlZiwiLTQ3NS40MzQ5NzJFLTcyNTQ2NDMxMSIsIi0zLjIyMjE0MDY2RS04NjU0NzY4MzYiLCItNC43NTQzNDk3MkUtNzI1NDY0MzA5IiwiLTQuNzU0MzQ5NzJFLTcyNTQ2NDMwOSIsIiIsIjEuNDc1NTI1MTlFKzE0MDAxMjUyNyIsIiIsIiIsIiIpOworICBtYXRodGVzdCgxMixkZWYsIjg0Mi4wMTI1MCIsIjE5NzE5OTg5MyIsIjE5NzIwMDczNSIsIi0xOTcxOTkwNTEiLCIxLjY2MDQ0Nzc1RSsxMSIsIjAuMDAwMDA0MjY5ODQyNTgiLCIwIiwiODQyLjAxMjUwIiwiNy4wMDY3NDE2NEUrNTc2ODcyNTAyIik7CisgIG1hdGh0ZXN0KDEzLGRlZiwiNTcyLjE3MzEwM0UrMjgwMTI4NDI4IiwiLTcxNDAuMTk0MjgiLCI1LjcyMTczMTAzRSsyODAxMjg0MzAiLCI1LjcyMTczMTAzRSsyODAxMjg0MzAiLCItNC4wODU0MjcxMkUrMjgwMTI4NDM0IiwiLTguMDEzNDEwODVFKzI4MDEyODQyNiIsIiIsIiIsIiIpOworICBtYXRodGVzdCgxNCxkZWYsIjY3NDIzNS45NTRFKzQ3NjEzNTI5MSIsIjk2ODQuODIyNDUiLCI2Ljc0MjM1OTU0RSs0NzYxMzUyOTYiLCI2Ljc0MjM1OTU0RSs0NzYxMzUyOTYiLCI2LjUyOTg1NTUwRSs0NzYxMzUzMDAiLCI2Ljk2MTc3OTE5RSs0NzYxMzUyOTIiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMTUsZGVmLCItMzYwNTU3LjkyMUUrNDM3MTE2NTE0IiwiOTMwNDI4ODUwIiwiLTMuNjA1NTc5MjFFKzQzNzExNjUxOSIsIi0zLjYwNTU3OTIxRSs0MzcxMTY1MTkiLCItMy4zNTQ3MzQ5MkUrNDM3MTE2NTI4IiwiLTMuODc1MTc5OTNFKzQzNzExNjUxMCIsIiIsIiIsIiIpOworICBtYXRodGVzdCgxNixkZWYsIjk1NzE2NTkxOEUtMzk0NTk1NzA1IiwiMTY3Ni41OTA3M0UtODI5NjE4OTQ0IiwiOS41NzE2NTkxOEUtMzk0NTk1Njk3IiwiOS41NzE2NTkxOEUtMzk0NTk1Njk3IiwiIiwiNS43MDkwMDE2MUUrNDM1MDIzMjQ0IiwiIiwiIiwiOS4xNjE2NjU5NUUtNzg5MTkxMzkzIik7CisgIG1hdGh0ZXN0KDE3LGRlZiwiLTI2MTA4NjQuNDAiLCIzMTI0NTkxMi43IiwiMjg2MzUwNDguMyIsIi0zMzg1Njc3Ny4xIiwiLTguMTU3ODg0MTFFKzEzIiwiLTAuMDgzNTU4NTg5NyIsIjAiLCItMjYxMDg2NC40MCIsIi0zLjEyMDA4OTA1RSsyMDA0OTgyODQiKTsKKyAgbWF0aHRlc3QoMTgsZGVmLCI5NTkuNTQ4NDYxIiwiOTguOTk0NTc3RSs3NzY3NzU0MjYiLCI5Ljg5OTQ1NzcwRSs3NzY3NzU0MjciLCItOS44OTk0NTc3MEUrNzc2Nzc1NDI3IiwiOS40OTkwMDk0MEUrNzc2Nzc1NDMwIiwiOS42OTI5Mzk2NUUtNzc2Nzc1NDI2IiwiMCIsIjk1OS41NDg0NjEiLCI2LjYxNzEyMTg1RSsyOSIpOworICBtYXRodGVzdCgxOSxkZWYsIi00MTA4NS4wMjY4IiwiMzExNTQ3Ny42MSIsIjMwNzQzOTIuNTgiLCItMzE1NjU2Mi42NCIsIi0xLjI3OTk5NDgxRSsxMSIsIi0wLjAxMzE4NzM5MjciLCIwIiwiLTQxMDg1LjAyNjgiLCI0LjczODQ0MTczRSsxNDM3MzgyOSIpOworICBtYXRodGVzdCgyMCxkZWYsIi03MjM0MjAyODUuIiwiMjY4MTY2MC4zNSIsIi03MjA3Mzg2MjUiLCItNzI2MTAxOTQ1IiwiLTEuOTM5OTY3NDlFKzE1IiwiLTI2OS43NjU4MTMiLCItMjY5IiwiLTIwNTM2NTAuODUiLCI0LjE0MzI0MTEzRSsyMzc1Nzg3MyIpOworICBtYXRodGVzdCgyMSxkZWYsIjYzNTQyMDE4LjBFLTgxNzczMjIzMCIsIi04ODM2MjQzLjIyIiwiLTg4MzYyNDMuMjIiLCI4ODM2MjQzLjIyIiwiLTUuNjE0NzI3MjZFLTgxNzczMjIxNiIsIi03LjE5MTA2NzExRS04MTc3MzIyMzAiLCIwIiwiNi4zNTQyMDE4MEUtODE3NzMyMjIzIiwiIik7CisgIG1hdGh0ZXN0KDIyLGRlZiwiLTk2MDUxLjcxMDgiLCItMjkxMjAxLjk1NSIsIi0zODcyNTMuNjY2IiwiMTk1MTUwLjI0NCIsIjIuNzk3MDQ0NjBFKzEwIiwiMC4zMjk4NDU2OTQiLCIwIiwiLTk2MDUxLjcxMDgiLCIzLjUzNjE3MTUzRS0xNDUwOTE2Iik7CisgIG1hdGh0ZXN0KDIzLGRlZiwiMTA4NDkwLjg1MyIsIjkxNjg1OTk2LjUiLCI5MTc5NDQ4Ny40IiwiLTkxNTc3NTA1LjciLCI5Ljk0NzA5MTk3RSsxMiIsIjAuMDAxMTgzMjg3MDYiLCIwIiwiMTA4NDkwLjg1MyIsIjYuOTgxMjQyNjVFKzQ2MTY3NTAzOCIpOworICBtYXRodGVzdCgyNCxkZWYsIi0yNzQ4OS4xNzM1IiwiLTk4MzU4MzUuNEUtNTA2NDExNjQ5IiwiLTI3NDg5LjE3MzUiLCItMjc0ODkuMTczNSIsIjIuNzAzNzg5ODZFLTUwNjQxMTYzOCIsIjIuNzk0Nzk4MDRFKzUwNjQxMTY0NiIsIiIsIiIsIjQuMDU4NjY0NzJFLTQ1Iik7CisgIG1hdGh0ZXN0KDI1LGRlZiwiLTg5MjIwNDA2LjYiLCI5OTMzOTEuMDA4RS02MTEwNDExNzUiLCItODkyMjA0MDYuNiIsIi04OTIyMDQwNi42IiwiLTguODYzMDc0OTZFLTYxMTA0MTE2MiIsIi04Ljk4MTM5ODY1RSs2MTEwNDExNzYiLCIiLCIiLCIzLjE5NjI1OTEzRSs3OSIpOworICBtYXRodGVzdCgyNixkZWYsIjQuNzU1MDIwMjAiLCItMTcwODkxNDQuOSIsIi0xNzA4OTE0MC4yIiwiMTcwODkxNDkuNyIsIi04MTI1OTIyOS4yIiwiLTIuNzgyNDc5ODlFLTciLCIwIiwiNC43NTUwMjAyMCIsIjEuMDYzMDE5MUUtMTE1NzE5NTUiKTsKKyAgbWF0aHRlc3QoMjcsZGVmLCI2ODAyNzkxNi4yIiwiLTc5Njg4My44MzkiLCI2NzIzMTAzMi40IiwiNjg4MjQ4MDAuMCIsIi01LjQyMTAzNDcwRSsxMyIsIi04NS4zNjc0MTg1IiwiLTg1IiwiMjkyNzg5Ljg4NSIsIjguMjk0MTUzNzRFLTYyNDE3NDQiKTsKKyAgbWF0aHRlc3QoMjgsZGVmLCItOC4wMTk2OTQzOUUrNzg4NjA1NDc4IiwiOTIxNTQxNTYuMCIsIi04LjAxOTY5NDM5RSs3ODg2MDU0NzgiLCItOC4wMTk2OTQzOUUrNzg4NjA1NDc4IiwiLTcuMzkwNDgxNjhFKzc4ODYwNTQ4NiIsIi04LjcwMjQ3NzE3RSs3ODg2MDU0NzAiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMjksZGVmLCItODAxMi45ODM0MSIsIjk2MTg4Ljg2NTEiLCI4ODE3NS44ODE3IiwiLTEwNDIwMS44NDkiLCItNzcwNzU5NzgwIiwiLTAuMDgzMzA0Njg4MSIsIjAiLCItODAxMi45ODM0MSIsIi0xLjE2MDEwMTU2RSszNzU1MDIiKTsKKyAgbWF0aHRlc3QoMzAsZGVmLCIyMTc2MTQ3NkUrNTkyMzMwNjc3IiwiLTkuNzA3NDQ1MDYiLCIyLjE3NjE0NzYwRSs1OTIzMzA2ODQiLCIyLjE3NjE0NzYwRSs1OTIzMzA2ODQiLCItMi4xMTI0ODMzM0UrNTkyMzMwNjg1IiwiLTIuMjQxNzMwNTNFKzU5MjMzMDY4MyIsIiIsIiIsIiIpOworICBtYXRodGVzdCgzMSxkZWYsIi05ODQwNzc4LjUxIiwiLTE3OTA3LjIxOSIsIi05ODU4Njg1LjczIiwiLTk4MjI4NzEuMjkiLCIxLjc2MjIwOTc2RSsxMSIsIjU0OS41NDI1MzQiLCI1NDkiLCItOTcxNS4yNzkiLCItNi42Mjk5NzQzN0UtMTI1MjI1Iik7CisgIG1hdGh0ZXN0KDMyLGRlZiwiLTQuMTA5NzYxNCIsIi04MTkuMjI1Nzc2RS0xNDUyMTQ3NTEiLCItNC4xMDk3NjE0MCIsIi00LjEwOTc2MTQwIiwiMy4zNjY4MjI0N0UtMTQ1MjE0NzQ4IiwiNS4wMTY2NDA3NEUrMTQ1MjE0NzQ4IiwiIiwiIiwiMC4wMDAwMTIyODc2MDE4Iik7CisgIG1hdGh0ZXN0KDMzLGRlZiwiLTQ0OC44ODA5ODUiLCItMzk0LjA4NzM3NEUtNDQyNTExNDM1IiwiLTQ0OC44ODA5ODUiLCItNDQ4Ljg4MDk4NSIsIjEuNzY4OTgzMjlFLTQ0MjUxMTQzMCIsIjEuMTM5MDM5MjVFKzQ0MjUxMTQzNSIsIiIsIiIsIjIuNDYzMDYwOTlFLTExIik7CisgIG1hdGh0ZXN0KDM0LGRlZiwiNzc5LjQ0NTMwNEUrODgyNjg4NTQ0IiwiLTc5Nzg2ODUxOSIsIjcuNzk0NDUzMDRFKzg4MjY4ODU0NiIsIjcuNzk0NDUzMDRFKzg4MjY4ODU0NiIsIi02LjIxODk0ODcwRSs4ODI2ODg1NTUiLCItOS43NjkwOTQ2RSs4ODI2ODg1MzciLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMzUsZGVmLCI3OTk5OTU0NzciLCItNi4yMzY3NTIwOEUrMTU2MzA5NDQwIiwiLTYuMjM2NzUyMDhFKzE1NjMwOTQ0MCIsIjYuMjM2NzUyMDhFKzE1NjMwOTQ0MCIsIi00Ljk4OTM3MzQ2RSsxNTYzMDk0NDkiLCItMS4yODI3MTE2OUUtMTU2MzA5NDMyIiwiMCIsIjc5OTk5NTQ3NyIsIjMuODE0ODI2NjdFLTU0Iik7CisgIG1hdGh0ZXN0KDM2LGRlZiwiLTUxOTMyLjgxNzAiLCI1OTE4NDAyNzVFLTI3ODQ4MDI4OSIsIi01MTkzMi44MTcwIiwiLTUxOTMyLjgxNzAiLCItMy4wNzM1OTMyN0UtMjc4NDgwMjc2IiwiLTguNzc0ODAyOEUrMjc4NDgwMjg0IiwiIiwiIiwiMS45NjE3ODQ0M0UrMjgiKTsKKyAgbWF0aHRlc3QoMzcsZGVmLCI3MC4zNTUyMzkyIiwiLTQyMjg2NTYuNzMiLCItNDIyODU4Ni4zOCIsIjQyMjg3MjcuMDkiLCItMjk3NTA4MTU2IiwiLTAuMDAwMDE2NjM3NzI3NyIsIjAiLCI3MC4zNTUyMzkyIiwiOS4xNDc0MjM4MkUtNzgxMTU4NCIpOworICBtYXRodGVzdCgzOCxkZWYsIjE1ODgzNTkuMzQiLCItMTIyMzI3OTkuMiIsIi0xMDY0NDQzOS45IiwiMTM4MjExNTguNSIsIi0xLjk0MzAwODA5RSsxMyIsIi0wLjEyOTg0NDMwNyIsIjAiLCIxNTg4MzU5LjM0IiwiMS41NjkxMDA4NkUtNzU4NTQ5NjAiKTsKKyAgbWF0aHRlc3QoMzksZGVmLCIyODQyLjE2MjA2IiwiLTMuMjMyMzQzNDUiLCIyODM4LjkyOTcyIiwiMjg0NS4zOTQ0MCIsIi05MTg2Ljg0MzkyIiwiLTg3OS4yODgzODgiLCItODc5IiwiMC45MzIxNjc0NSIsIjQuMzU1NjU1MTRFLTExIik7CisgIG1hdGh0ZXN0KDQwLGRlZiwiMjk5NjAuMjMwNSIsIjQ1LjI3MzU3NDdFLTk1MjA1NDc1IiwiMjk5NjAuMjMwNSIsIjI5OTYwLjIzMDUiLCIxLjM1NjQwNjczRS05NTIwNTQ2OSIsIjYuNjE3NTk3NzNFKzk1MjA1NDc3IiwiIiwiIiwiMi40MTM5MzZFKzIyIik7CisgIG1hdGh0ZXN0KDQxLGRlZiwiMjkxNjU2NS43NyIsIjExNTE5MzUuNDNFLTc4NzExODcyNCIsIjI5MTY1NjUuNzciLCIyOTE2NTY1Ljc3IiwiMy4zNTk2OTU0NEUtNzg3MTE4NzEyIiwiMi41MzE4ODMwM0UrNzg3MTE4NzI0IiwiIiwiIiwiMjkxNjU2NS43NyIpOworICBtYXRodGVzdCg0MixkZWYsIi01MjcyMzAxMi45RS05NjcxNDM3ODciLCI3OS40MDg4MjM3IiwiNzkuNDA4ODIzNyIsIi03OS40MDg4MjM3IiwiLTQuMTg2NjcyNDRFLTk2NzE0Mzc3OCIsIi02LjYzOTQ0MDExRS05NjcxNDM3ODIiLCIwIiwiLTUuMjcyMzAxMjlFLTk2NzE0Mzc4MCIsIiIpOworICBtYXRodGVzdCg0MyxkZWYsIi0xNjc0NzM0NjUiLCI3OTM2NDYuNTk3IiwiLTE2NjY3OTgxOSIsIi0xNjgyNjcxMTIiLCItMS4zMjkxNDc0NkUrMTQiLCItMjExLjAxNzY4MiIsIi0yMTEiLCItMTQwMzMuMDMzIiwiLTEuMTkwNTM3ODlFKzY1MjY5MTAiKTsKKyAgbWF0aHRlc3QoNDQsZGVmLCItMzE3NjkwNzEuMCIsIjEzMy40MzYwIiwiLTMxNzY4OTM3LjYiLCItMzE3NjkyMDQuNCIsIi00LjIzOTEzNzc2RSs5IiwiLTIzODA4NC43MDciLCItMjM4MDg0IiwiLTk0LjM3NjAiLCItNS44NDI1MjQzMkUrOTk3Iik7CisgIG1hdGh0ZXN0KDQ1LGRlZiwiNDU5NjAuNjM4MyIsIi05MzM1Mi43NDY4IiwiLTQ3MzkyLjEwODUiLCIxMzkzMTMuMzg1IiwiLTQuMjkwNTUxODNFKzkiLCItMC40OTIzMzMwMDQiLCIwIiwiNDU5NjAuNjM4MyIsIjEuODgzMzUzMjNFLTQzNTI0OCIpOworICBtYXRodGVzdCg0NixkZWYsIjYwNi4xNzU2NDgiLCI1LjI4NTI4NDU4RS05ODE5ODM2MjAiLCI2MDYuMTc1NjQ4IiwiNjA2LjE3NTY0OCIsIjMuMjAzODEwODFFLTk4MTk4MzYxNyIsIjEuMTQ2OTEyMDNFKzk4MTk4MzYyMiIsIiIsIiIsIjguMTg0NTA1MTZFKzEzIik7CisgIG1hdGh0ZXN0KDQ3LGRlZiwiMTcxNTc4LjYxN0UrNjQzMDA2MTEwIiwiLTQwNzc3NC4yOTMiLCIxLjcxNTc4NjE3RSs2NDMwMDYxMTUiLCIxLjcxNTc4NjE3RSs2NDMwMDYxMTUiLCItNi45OTY1MzQ5MkUrNjQzMDA2MTIwIiwiLTQuMjA3Njg1OTdFKzY0MzAwNjEwOSIsIiIsIiIsIiIpOworICBtYXRodGVzdCg0OCxkZWYsIi02ODIyODYzMzIuIiwiLTQ2NC44NzE2OTkiLCItNjgyMjg2Nzk3IiwiLTY4MjI4NTg2NyIsIjMuMTcxNzU2MDZFKzExIiwiMTQ2NzY4Ny4zOSIsIjE0Njc2ODciLCItMTgyLjcwOTc4NyIsIi0xLjYwNTA4NDNFLTQxMDgiKTsKKyAgbWF0aHRlc3QoNDksZGVmLCI0OTIwODguNDI4IiwiNjUzLjcyMTcwIiwiNDkyNzQyLjE1MCIsIjQ5MTQzNC43MDYiLCIzMjE2ODg4ODQiLCI3NTIuNzQ5MTEiLCI3NTIiLCI0ODkuNzA5NjAiLCIzLjk0NjU4NTk2RSszNzIyIik7CisgIG1hdGh0ZXN0KDUwLGRlZiwiNzQzMDM3ODIuNSIsIjExNDEuNjgwNTgiLCI3NDMwNDkyNC4yIiwiNzQzMDI2NDAuOCIsIjguNDgzMTE4NTVFKzEwIiwiNjUwODIuODEyIiwiNjUwODIiLCI5MjYuOTkyNDQiLCI0Ljk0ODQ5ODY5RSs4OTg4Iik7CisgIG1hdGh0ZXN0KDUxLGRlZiwiNzQuNzc5NDA4NEUrMTE5Mzc1MzI5IiwiLTM0Nzk5MzU1LjYiLCI3LjQ3Nzk0MDg0RSsxMTkzNzUzMzAiLCI3LjQ3Nzk0MDg0RSsxMTkzNzUzMzAiLCItMi42MDIyNzUyMkUrMTE5Mzc1MzM4IiwiLTIuMTQ4ODczMzdFKzExOTM3NTMyMyIsIiIsIiIsIiIpOworICBtYXRodGVzdCg1MixkZWYsIi05NDMyLjA4MzY5IiwiMzM3MzUuNTA1OCIsIjI0MzAzLjQyMjEiLCItNDMxNjcuNTg5NSIsIi0zMTgxOTYxMTQiLCItMC4yNzk1ODkyMTgiLCIwIiwiLTk0MzIuMDgzNjkiLCIyLjMwOTU2N0UrMTM0MDg3Iik7CisgIG1hdGh0ZXN0KDUzLGRlZiwiNDI0OTE5OC43OEUtMTEyNDMzMTU1IiwiNDE4NjczMDUxLiIsIjQxODY3MzA1MSIsIi00MTg2NzMwNTEiLCIxLjc3OTAyNTAyRS0xMTI0MzMxNDAiLCIxLjAxNDkyMDU0RS0xMTI0MzMxNTciLCIwIiwiNC4yNDkxOTg3OEUtMTEyNDMzMTQ5IiwiIik7CisgIG1hdGh0ZXN0KDU0LGRlZiwiLTI5NjA5MzMuMDIiLCItMjA3OTMzLjM4IiwiLTMxNjg4NjYuNDAiLCItMjc1Mjk5OS42NCIsIjYuMTU2NzY4MTFFKzExIiwiMTQuMjM5ODE1OCIsIjE0IiwiLTQ5ODY1LjcwIiwiLTIuNzU2ODAzOTdFLTEzNDU2MjQiKTsKKyAgbWF0aHRlc3QoNTUsZGVmLCIyOTMxNy43NTE5RSs5NDU2MDAwMzUiLCIxLjQzNTU1NzUwIiwiMi45MzE3NzUxOUUrOTQ1NjAwMDM5IiwiMi45MzE3NzUxOUUrOTQ1NjAwMDM5IiwiNC4yMDg3MzE4NkUrOTQ1NjAwMDM5IiwiMi4wNDIyNTU0OUUrOTQ1NjAwMDM5IiwiIiwiIiwiMi45MzE3NzUxOUUrOTQ1NjAwMDM5Iik7CisgIG1hdGh0ZXN0KDU2LGRlZiwiLTUxLjE2OTM3NzAiLCItNjM4MDU1LjQxNCIsIi02MzgxMDYuNTgzIiwiNjM4MDA0LjI0NSIsIjMyNjQ4ODk4LjAiLCIwLjAwMDA4MDE5NTgxOTgiLCIwIiwiLTUxLjE2OTM3NzAiLCItMy40ODI2NjA3NUUtMTA5MDQ0MyIpOworICBtYXRodGVzdCg1NyxkZWYsIi03NTYzNDMwNTUuIiwiLTY4LjkyNDgzNDRFKzIxNzEwMDk3NSIsIi02Ljg5MjQ4MzQ0RSsyMTcxMDA5NzYiLCI2Ljg5MjQ4MzQ0RSsyMTcxMDA5NzYiLCI1LjIxMzA4MTk4RSsyMTcxMDA5ODUiLCIxLjA5NzM0NDc1RS0yMTcxMDA5NjgiLCIwIiwiLTc1NjM0MzA1NSIsIi03LjA2MjY1ODk3RS02MyIpOworICBtYXRodGVzdCg1OCxkZWYsIjI1MzguODA0MDZFKzY5NDE4NTE5NyIsIi0zMzg2NDk5LjY1IiwiMi41Mzg4MDQwNkUrNjk0MTg1MjAwIiwiMi41Mzg4MDQwNkUrNjk0MTg1MjAwIiwiLTguNTk3NjU5MDZFKzY5NDE4NTIwNiIsIi03LjQ5NjgzODM5RSs2OTQxODUxOTMiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoNTksZGVmLCItNTQzNDQuMDY3MiIsIi04MDg2LjQ1MjM1IiwiLTYyNDMwLjUxOTYiLCItNDYyNTcuNjE0OSIsIjQzOTQ1MDcxMCIsIjYuNzIwMzg0MjciLCI2IiwiLTU4MjUuMzUzMTAiLCIzLjYyOTE2ODYxRS0zODI4OSIpOworICBtYXRodGVzdCg2MCxkZWYsIjMuMzE2MDAwNTQiLCIyMTc0ODE2NDgiLCIyMTc0ODE2NTEiLCItMjE3NDgxNjQ1IiwiNzIxMTY5MjYyIiwiMS41MjQ3MjY2RS04IiwiMCIsIjMuMzE2MDAwNTQiLCIzLjczMTM0OTY5RSsxMTMyMjQxMTkiKTsKKyAgbWF0aHRlc3QoNjEsZGVmLCI2ODE4MzIuNjcxIiwiMzIwMzQxLjE2MUUrNjI5NDY3NTYwIiwiMy4yMDM0MTE2MUUrNjI5NDY3NTY1IiwiLTMuMjAzNDExNjFFKzYyOTQ2NzU2NSIsIjIuMTg0MTkwNjlFKzYyOTQ2NzU3MSIsIjIuMTI4NDU3ODlFLTYyOTQ2NzU2MCIsIjAiLCI2ODE4MzIuNjcxIiwiMy4xNjk4MTEzOUUrMTciKTsKKyAgbWF0aHRlc3QoNjIsZGVmLCI4MzI2ODk0ODEiLCIzNDgwNDAwMjRFLTg4MjEyMjUwMSIsIjgzMjY4OTQ4MSIsIjgzMjY4OTQ4MSIsIjIuODk4MDkyNjdFLTg4MjEyMjQ4NCIsIjIuMzkyNTEwN0UrODgyMTIyNTAxIiwiIiwiIiwiNS43NzM2MzM4MUUrMjYiKTsKKyAgbWF0aHRlc3QoNjMsZGVmLCIxNC41NTEyMzI2RSsyNTc1MDA4MTEiLCI2MC45OTc5NTc3RS02NDczMTQ3MjQiLCIxLjQ1NTEyMzI2RSsyNTc1MDA4MTIiLCIxLjQ1NTEyMzI2RSsyNTc1MDA4MTIiLCI4Ljg3NTk1NDcxRS0zODk4MTM5MTEiLCIyLjM4NTUyNzg0RSs5MDQ4MTU1MzQiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoNjQsZGVmLCItOTAxLjI3ODg0NCIsIjQ0OTQ2MTY2Ny4iLCI0NDk0NjA3NjYiLCItNDQ5NDYyNTY4IiwiLTQuMDUwOTAyOTJFKzExIiwiLTAuMDAwMDAyMDA1MjQwNzQiLCIwIiwiLTkwMS4yNzg4NDQiLCIiKTsKKyAgbWF0aHRlc3QoNjUsZGVmLCItNS4zMjYyNzY3NSIsIi03Mzg4NjAyMTZFLTIzODI3MzIyNCIsIi01LjMyNjI3Njc1IiwiLTUuMzI2Mjc2NzUiLCIzLjkzNTM3Mzk5RS0yMzgyNzMyMTUiLCI3LjIwODc3NDU5RSsyMzgyNzMyMTUiLCIiLCIiLCItMC4wMDAwMDgyMjMwNjgzOCIpOworICBtYXRodGVzdCg2NixkZWYsIi01MDUzODM0NjMuIiwiMy4xODc1NjMyOCIsIi01MDUzODM0NjAiLCItNTA1MzgzNDY2IiwiLTEuNjEwOTQxNzdFKzkiLCItMTU4NTQ4NTI3IiwiLTE1ODU0ODUyNyIsIi0wLjIzNjcxMTQ0IiwiLTEuMjkwODEyMjZFKzI2Iik7CisgIG1hdGh0ZXN0KDY3LGRlZiwiNzY5MjQxLjQ0RS03MjA5MjczMjAiLCItMTQ1MzgyNjMxLiIsIi0xNDUzODI2MzEiLCIxNDUzODI2MzEiLCItMS4xMTgzNDM0NEUtNzIwOTI3MzA2IiwiLTUuMjkxMTUwOTFFLTcyMDkyNzMyMyIsIjAiLCI3LjY5MjQxNDRFLTcyMDkyNzMxNSIsIiIpOworICBtYXRodGVzdCg2OCxkZWYsIi02LjQ1MDM4OTEwIiwiNTY3MzYuNDQxMUUrNDQwOTM3MTY3IiwiNS42NzM2NDQxMUUrNDQwOTM3MTcxIiwiLTUuNjczNjQ0MTFFKzQ0MDkzNzE3MSIsIi0zLjY1OTcyMTIxRSs0NDA5MzcxNzIiLCItMS4xMzY5MDQwN0UtNDQwOTM3MTcxIiwiMCIsIi02LjQ1MDM4OTEwIiwiNzIwMzAuMzQyMSIpOworICBtYXRodGVzdCg2OSxkZWYsIjU4LjQ3MjEwNzUiLCItNzEyMTg2ODI5IiwiLTcxMjE4Njc3MSIsIjcxMjE4Njg4NyIsIi00LjE2NDMwNjQ4RSsxMCIsIi04LjIxMDIyMDI4RS04IiwiMCIsIjU4LjQ3MjEwNzUiLCIiKTsKKyAgbWF0aHRlc3QoNzAsZGVmLCI4MjQ0LjA4MzU3IiwiMjQ1LjMwMjgyOEUrNjUyMDA3OTU5IiwiMi40NTMwMjgyOEUrNjUyMDA3OTYxIiwiLTIuNDUzMDI4MjhFKzY1MjAwNzk2MSIsIjIuMDIyMjk3MDFFKzY1MjAwNzk2NSIsIjMuMzYwNzc4MDRFLTY1MjAwNzk1OCIsIjAiLCI4MjQ0LjA4MzU3IiwiNjc5NjQ5MTMuOSIpOworICBtYXRodGVzdCg3MSxkZWYsIjQ1LjUzNjEzOTciLCItNzY1NzkwNjMuOSIsIi03NjU3OTAxOC40IiwiNzY1NzkxMDkuNCIsIi0zLjQ4NzExNDk1RSs5IiwiLTUuOTQ2MjkwOThFLTciLCIwIiwiNDUuNTM2MTM5NyIsIjMuOTgzMzUzNzRFLTEyNjk5NTM2NyIpOworICBtYXRodGVzdCg3MixkZWYsIjU5NDQyMC41NEUrNjg1MjYzMDM5IiwiLTk1MjQyMC4xNzkiLCI1Ljk0NDIwNTQwRSs2ODUyNjMwNDQiLCI1Ljk0NDIwNTQwRSs2ODUyNjMwNDQiLCItNS42NjEzODExN0UrNjg1MjYzMDUwIiwiLTYuMjQxMTU4NjFFKzY4NTI2MzAzOCIsIiIsIiIsIiIpOworICBtYXRodGVzdCg3MyxkZWYsIi04NDEzMTA3MDEuIiwiOTM5ODExMC40IiwiLTgzMTkxMjU5MSIsIi04NTA3MDg4MTEiLCItNy45MDY3MzA4NUUrMTUiLCItODkuNTE5MTMzNyIsIi04OSIsIi00ODc4ODc1LjQiLCIxLjMwMDAxNDY2RSs4Mzg3NzcyMiIpOworICBtYXRodGVzdCg3NCxkZWYsIjkwNDM5MjE0NkUtMTQwMTAwMjc2IiwiMTY4MTE2MDkzLiIsIjE2ODExNjA5MyIsIi0xNjgxMTYwOTMiLCIxLjUyMDQyODc0RS0xNDAxMDAyNTkiLCI1LjM3OTU2OTE0RS0xNDAxMDAyNzYiLCIwIiwiOS4wNDM5MjE0NkUtMTQwMTAwMjY4IiwiIik7CisgIG1hdGh0ZXN0KDc1LGRlZiwiLTkwNzMyNDc5MkUrNjg1NTM5NjcwIiwiLTE1LjY5MDIxNzEiLCItOS4wNzMyNDc5MkUrNjg1NTM5Njc4IiwiLTkuMDczMjQ3OTJFKzY4NTUzOTY3OCIsIjEuNDIzNjEyMzBFKzY4NTUzOTY4MCIsIjUuNzgyNzQyMTFFKzY4NTUzOTY3NyIsIiIsIiIsIiIpOworICBtYXRodGVzdCg3NixkZWYsIjk4NzAxMzYwNi4iLCItMjY4MTguMzU3MkUrNTYwOTA3NDQyIiwiLTIuNjgxODM1NzJFKzU2MDkwNzQ0NiIsIjIuNjgxODM1NzJFKzU2MDkwNzQ0NiIsIi0yLjY0NzAwODM0RSs1NjA5MDc0NTUiLCItMy42ODAzNjU2NUUtNTYwOTA3NDM4IiwiMCIsIjk4NzAxMzYwNiIsIjEuMDM5OTkzNEUtMjciKTsKKyAgbWF0aHRlc3QoNzcsZGVmLCItNzQxMzE3NTY0IiwiNjMwLjI0MTUzMEUtMjEyNzgyOTQ2IiwiLTc0MTMxNzU2NCIsIi03NDEzMTc1NjQiLCItNC42NzIwOTExNkUtMjEyNzgyOTM1IiwiLTEuMTc2MjQzNkUrMjEyNzgyOTUyIiwiIiwiIiwiMS42NTk2ODUyN0UrNTMiKTsKKyAgbWF0aHRlc3QoNzgsZGVmLCI2MTg2NzkwNy4yIiwiLTEzOTIwNDY3MCIsIi03NzMzNjc2MyIsIjIwMTA3MjU3NyIsIi04LjYxMjMwMTYxRSsxNSIsIi0wLjQ0NDQzODQ0NiIsIjAiLCI2MTg2NzkwNy4yIiwiIik7CisgIG1hdGh0ZXN0KDc5LGRlZiwiLTI3My42MjI3NDNFKzUzMTI4MjcxNyIsIi00NTQzLjY4Njg0IiwiLTIuNzM2MjI3NDNFKzUzMTI4MjcxOSIsIi0yLjczNjIyNzQzRSs1MzEyODI3MTkiLCIxLjI0MzI1NjA2RSs1MzEyODI3MjMiLCI2LjAyMjA0MjI5RSs1MzEyODI3MTUiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoODAsZGVmLCItMzgzNTg4OTQ5LiIsIi00Mjg2NDA1ODMuIiwiLTgxMjIyOTUzMiIsIjQ1MDUxNjM0IiwiMS42NDQyMTc5MUUrMTciLCIwLjg5NDg5NjQ4IiwiMCIsIi0zODM1ODg5NDkiLCIiKTsKKyAgbWF0aHRlc3QoODEsZGVmLCItNTYxODIuMjY4NiIsIjMyLjc3NDE2NDkiLCItNTYxNDkuNDk0NCIsIi01NjIxNS4wNDI4IiwiLTE4NDEzMjYuOTQiLCItMTcxNC4yMjQyNiIsIi0xNzE0IiwiLTcuMzQ5OTYxNCIsIi01LjQ1NDc2NDAyRSsxNTYiKTsKKyAgbWF0aHRlc3QoODIsZGVmLCItNjM2NjM4NC4zMCIsIjMzMjAxNC45ODAiLCItNjAzNDM2OS4zMiIsIi02Njk4Mzk5LjI4IiwiLTIuMTEzNzM0OTZFKzEyIiwiLTE5LjE3NDk5MTEiLCItMTkiLCItNTgwOTkuNjgwIiwiLTMuMDUzOTIzOTlFKzIyNTg5OTQiKTsKKyAgbWF0aHRlc3QoODMsZGVmLCItMS4yNzg5NzcwMiIsIi04MjEzNzc2LjAzRS02ODY1MTkxMjMiLCItMS4yNzg5NzcwMiIsIi0xLjI3ODk3NzAyIiwiMS4wNTA1MjMwOEUtNjg2NTE5MTE2IiwiMS41NTcxMTIxMkUrNjg2NTE5MTE2IiwiIiwiIiwiMC4xMzk2NjgzNzEiKTsKKyAgbWF0aHRlc3QoODQsZGVmLCI2NS40MDU5MDM2IiwiNDAxMTYyMTQ1RSs4ODQxNTU1MDYiLCI0LjAxMTYyMTQ1RSs4ODQxNTU1MTQiLCItNC4wMTE2MjE0NUUrODg0MTU1NTE0IiwiMi42MjM4MzcyNkUrODg0MTU1NTE2IiwiMS42MzA0MTA2NkUtODg0MTU1NTEzIiwiMCIsIjY1LjQwNTkwMzYiLCIxODMwMDcwNC4xIik7CisgIG1hdGh0ZXN0KDg1LGRlZiwiLTIwNjMwOTE2LjgiLCIxNTg5ODc0MTEuRS00ODA1MDA2MTIiLCItMjA2MzA5MTYuOCIsIi0yMDYzMDkxNi44IiwiLTMuMjgwMDU2MDVFLTQ4MDUwMDU5NyIsIi0xLjI5NzY0NDY4RSs0ODA1MDA2MTEiLCIiLCIiLCI0LjI1NjM0NzI4RSsxNCIpOworICBtYXRodGVzdCg4NixkZWYsIi00LjcyNzA1ODUzIiwiLTk3NjI2NzQyLjQiLCItOTc2MjY3NDcuMSIsIjk3NjI2NzM3LjciLCI0NjE0ODczMjUiLCI0Ljg0MTk3MDk3RS04IiwiMCIsIi00LjcyNzA1ODUzIiwiMi45MjY1NDQ0OUUtNjU4NTgxMjAiKTsKKyAgbWF0aHRlc3QoODcsZGVmLCI4LjQzNTI4MTY5IiwiLTQ1NzMuNDU3NTIiLCItNDU2NS4wMjIyNCIsIjQ1ODEuODkyODAiLCItMzg1NzguNDAyNSIsIi0wLjAwMTg0NDM5OTI3IiwiMCIsIjguNDM1MjgxNjkiLCI4Ljg0MjQ4Njg4RS00MjM2Iik7CisgIG1hdGh0ZXN0KDg4LGRlZiwiMS45MTA3NTE4OSIsIi03MDQyNDcwODkuIiwiLTcwNDI0NzA4NyIsIjcwNDI0NzA5MSIsIi0xLjM0NTY0MTQ2RSs5IiwiLTIuNzEzMTgzOTRFLTkiLCIwIiwiMS45MTA3NTE4OSIsIjYuODQ1NDc0OTRFLTE5ODAzNzMwOSIpOworICBtYXRodGVzdCg4OSxkZWYsIjMxOTk3MTk4RS01NTE3NDYzMDgiLCIzMjYuODkyNTg0IiwiMzI2Ljg5MjU4NCIsIi0zMjYuODkyNTg0IiwiMS4wNDU5NjQ2N0UtNTUxNzQ2Mjk4IiwiOS43ODgyOTExOUUtNTUxNzQ2MzA0IiwiMCIsIjMuMTk5NzE5OEUtNTUxNzQ2MzAxIiwiIik7CisgIG1hdGh0ZXN0KDkwLGRlZiwiMTI3NTg5LjIxMyIsIjg0MTg0MzA0LiIsIjg0MzExODkzLjIiLCItODQwNTY3MTQuOCIsIjEuMDc0MTAwOTFFKzEzIiwiMC4wMDE1MTU1OTM4NSIsIjAiLCIxMjc1ODkuMjEzIiwiMi44NzkxNzA0MkUrNDI5ODI5Mzk0Iik7CisgIG1hdGh0ZXN0KDkxLGRlZiwiNzE0NDk0MjQ4IiwiLTcwMjUwNjMuNTkiLCI3MDc0NjkxODUiLCI3MjE1MTkzMTIiLCItNS4wMTkzNjc1M0UrMTUiLCItMTAxLjcwNjQ0NiIsIi0xMDEiLCI0OTYyODI1LjQxIiwiMS42NTAxODUxNkUtNjIxOTk5MDgiKTsKKyAgbWF0aHRlc3QoOTIsZGVmLCItNTI5ODc2ODAuMkUrMjc5NTMzNTAzIiwiLTQyMDE0MTE0LjgiLCItNS4yOTg3NjgwMkUrMjc5NTMzNTEwIiwiLTUuMjk4NzY4MDJFKzI3OTUzMzUxMCIsIjIuMjI2MjMwNDhFKzI3OTUzMzUxOCIsIjEuMjYxMTg3NTlFKzI3OTUzMzUwMyIsIiIsIiIsIiIpOworICBtYXRodGVzdCg5MyxkZWYsIi04Nzk1LjA1MTMiLCItMjI1Mjk0LjM5NEUtODg0NDE0MjM4IiwiLTg3OTUuMDUxMzAiLCItODc5NS4wNTEzMCIsIjEuOTgxNDc1NzVFLTg4NDQxNDIyOSIsIjMuOTAzODAzODhFKzg4NDQxNDIzNiIsIiIsIiIsIjEuMjkyNzc1OUUtOCIpOworICBtYXRodGVzdCg5NCxkZWYsIjgzMjgwLjEzOTQiLCIxNjE1NjYzNTQuIiwiMTYxNjQ5NjM0IiwiLTE2MTQ4MzA3NCIsIjEuMzQ1NTI2ODVFKzEzIiwiMC4wMDA1MTU0NTQ3MTgiLCIwIiwiODMyODAuMTM5NCIsIjUuMzA3NzQ4MDlFKzc5NDk5Mzk0MCIpOworICBtYXRodGVzdCg5NSxkZWYsIjExMi44Nzc4OTciLCItOS45NjQ4MTY2NiIsIjEwMi45MTMwODAiLCIxMjIuODQyNzE0IiwiLTExMjQuODA3NTUiLCItMTEuMzI3NjQ0MSIsIi0xMSIsIjMuMjY0OTEzNzQiLCIyLjk3NzkwNTQ1RS0yMSIpOworICBtYXRodGVzdCg5NixkZWYsIi01NzI1NDIuMTIxRSs4NDc0ODczOTciLCI0MzMuODQzNDIwIiwiLTUuNzI1NDIxMjFFKzg0NzQ4NzQwMiIsIi01LjcyNTQyMTIxRSs4NDc0ODc0MDIiLCItMi40ODM5MzYzMkUrODQ3NDg3NDA1IiwiLTEuMzE5Njk3NkUrODQ3NDg3NDAwIiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDk3LGRlZiwiNDcwOTY0OS44OSIsIjIwOTQ5MjY2LjQiLCIyNTY1ODkxNi4zIiwiLTE2MjM5NjE2LjUiLCI5Ljg2NjM3MTAyRSsxMyIsIjAuMjI0ODEyMTYzIiwiMCIsIjQ3MDk2NDkuODkiLCI0Ljg1MjkzNjQ0RSsxMzk3OTQyMTMiKTsKKyAgbWF0aHRlc3QoOTgsZGVmLCItOTQ3NS4xOTMyMiIsIi0zMDg4NS4yNDc1RSs1ODQ0ODczNDEiLCItMy4wODg1MjQ3NUUrNTg0NDg3MzQ1IiwiMy4wODg1MjQ3NUUrNTg0NDg3MzQ1IiwiMi45MjY0MzY4OEUrNTg0NDg3MzQ5IiwiMy4wNjc4NzAyNkUtNTg0NDg3MzQyIiwiMCIsIi05NDc1LjE5MzIyIiwiLTEuMTc1NTM1NTdFLTEyIik7CisgIG1hdGh0ZXN0KDk5LGRlZiwiLTIxMzIzMDQ0Ny4iLCI4NjQuODE1ODIyRSsxMjc3ODMwNDYiLCI4LjY0ODE1ODIyRSsxMjc3ODMwNDgiLCItOC42NDgxNTgyMkUrMTI3NzgzMDQ4IiwiLTEuODQ0MDUwNjRFKzEyNzc4MzA1NyIsIi0yLjQ2NTYxNjg2RS0xMjc3ODMwNDEiLCIwIiwiLTIxMzIzMDQ0NyIsIi05LjExMjYxMzYxRSs3NCIpOworICBtYXRodGVzdCgxMDAsZGVmLCItODkuMTE2ODc4NkUrNDAzMzc1ODczIiwiNjQ2NC4wNTc0NCIsIi04LjkxMTY4Nzg2RSs0MDMzNzU4NzQiLCItOC45MTE2ODc4NkUrNDAzMzc1ODc0IiwiLTUuNzYwNTY2MjJFKzQwMzM3NTg3OCIsIi0xLjM3ODY1MjMzRSs0MDMzNzU4NzEiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMTAxLGRlZiwiNjE3NzQuNDk1OCIsIi0xNDAwMC43NzA2IiwiNDc3NzMuNzI1MiIsIjc1Nzc1LjI2NjQiLCItODY0ODkwNTQ1IiwiLTQuNDEyMjIxMTIiLCItNCIsIjU3NzEuNDEzNCIsIjcuNTkwMzA0MDdFLTY3MDc3Iik7CisgIG1hdGh0ZXN0KDEwMixkZWYsIjEuNjA3MzE0MTQiLCI3LjA0MzMwMjkzRS00MjcwMzM0MTkiLCIxLjYwNzMxNDE0IiwiMS42MDczMTQxNCIsIjEuMTMyMDgwMDRFLTQyNzAzMzQxOCIsIjIuMjgyMDQ2MDJFKzQyNzAzMzQxOCIsIiIsIiIsIjI3LjcxNDM5MjEiKTsKKyAgbWF0aHRlc3QoMTAzLGRlZiwiNzk1NTAxMi41MSIsIi0yMzAxMTc2NjIuIiwiLTIyMjE2MjY1MCIsIjIzODA3MjY3NSIsIi0xLjgzMDU4ODg4RSsxNSIsIi0wLjAzNDU2OTMyNjEiLCIwIiwiNzk1NTAxMi41MSIsIiIpOworICBtYXRodGVzdCgxMDQsZGVmLCI0MDg2NjYxLjA4IiwiMS43NzYyMTk5NCIsIjQwODY2NjIuODYiLCI0MDg2NjU5LjMwIiwiNzI1ODgwOC45MCIsIjIzMDA3NjIuOTgiLCIyMzAwNzYyIiwiMS43Mzg0MDU3MiIsIjEuNjcwMDc5ODhFKzEzIik7CisgIG1hdGh0ZXN0KDEwNSxkZWYsIi02MTAuMDc2OTMxIiwiLTIwNy42NTgzMDYiLCItODE3LjczNTIzNyIsIi00MDIuNDE4NjI1IiwiMTI2Njg3LjU0MiIsIjIuOTM3ODg4NDEiLCIyIiwiLTE5NC43NjAzMTkiLCI0LjM2NTE4Mzc3RS01ODAiKTsKKyAgbWF0aHRlc3QoMTA2LGRlZiwiLTk4LjYzNTM2OTciLCItOTkyNTMuMzg5OUUtNzE2MzA5NjUzIiwiLTk4LjYzNTM2OTciLCItOTguNjM1MzY5NyIsIjkuNzg5ODk0ODFFLTcxNjMwOTY0NyIsIjkuOTM3NzMzMDlFKzcxNjMwOTY0OSIsIiIsIiIsIjEuMTQ3MjkwMDdFLTIwIik7CisgIG1hdGh0ZXN0KDEwNyxkZWYsIi05NTk5MjM3MzAiLCI0MDkuMTI1NTQyRS05MDAyOTU1MjgiLCItOTU5OTIzNzMwIiwiLTk1OTkyMzczMCIsIi0zLjkyNzI5MzE2RS05MDAyOTU1MTciLCItMi4zNDYyODE2RSs5MDAyOTU1MzQiLCIiLCIiLCI4LjQ5MDc2Njc3RSszNSIpOworICBtYXRodGVzdCgxMDgsZGVmLCIzNzk5NjUxMzMiLCItOC4xNTg2OTY1NyIsIjM3OTk2NTEyNSIsIjM3OTk2NTE0MSIsIi0zLjEwMDAyMDIzRSs5IiwiLTQ2NTcxNzkzLjYiLCItNDY1NzE3OTMiLCI1LjE5MjE0OTk5IiwiMi4zMDE3MDY5N0UtNjkiKTsKKyAgbWF0aHRlc3QoMTA5LGRlZiwiODMzLjY0Njc5NyIsIjEzODk0OTkuNDZFLTQ0MzQwNzI1MSIsIjgzMy42NDY3OTciLCI4MzMuNjQ2Nzk3IiwiMS4xNTgzNTE3N0UtNDQzNDA3MjQyIiwiNS45OTk2MTk0NEUrNDQzNDA3MjQ3IiwiIiwiIiwiODMzLjY0Njc5NyIpOworICBtYXRodGVzdCgxMTAsZGVmLCIyMzE0OTMzLjRFLTY0NjQ4OTE5NCIsIi03NDAxNTM4LjE3IiwiLTc0MDE1MzguMTciLCI3NDAxNTM4LjE3IiwiLTEuNzEzNDA2NzlFLTY0NjQ4OTE4MSIsIi0zLjEyNzYzODI2RS02NDY0ODkxOTUiLCIwIiwiMi4zMTQ5MzM0RS02NDY0ODkxODgiLCIiKTsKKyAgbWF0aHRlc3QoMTExLGRlZiwiODA4NTI1MzQ3IiwiLTU5NTkuNzQ2NjdFKzU4MjMyMTY4IiwiLTUuOTU5NzQ2NjdFKzU4MjMyMTcxIiwiNS45NTk3NDY2N0UrNTgyMzIxNzEiLCItNC44MTg2MDYyNEUrNTgyMzIxODAiLCItMS4zNTY2NDM4MkUtNTgyMzIxNjMiLCIwIiwiODA4NTI1MzQ3IiwiMy41Nzk2MzAyRS01NCIpOworICBtYXRodGVzdCgxMTIsZGVmLCItMTcyMjA0OTAuNkUrNzI2NDI4NzA0IiwiMTkuOTg1NTY4OCIsIi0xLjcyMjA0OTA2RSs3MjY0Mjg3MTEiLCItMS43MjIwNDkwNkUrNzI2NDI4NzExIiwiLTMuNDQxNjEzMDBFKzcyNjQyODcxMiIsIi04LjYxNjQ2MjU5RSs3MjY0Mjg3MDkiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMTEzLGRlZiwiNTkwMTUuOTcwNSIsIi03MjA3MDQwNS40RSszMjI5NTcyNzkiLCItNy4yMDcwNDA1NEUrMzIyOTU3Mjg2IiwiNy4yMDcwNDA1NEUrMzIyOTU3Mjg2IiwiLTQuMjUzMzA0OTJFKzMyMjk1NzI5MSIsIi04LjE4ODY1NTI3RS0zMjI5NTcyODMiLCIwIiwiNTkwMTUuOTcwNSIsIjQuMDEwNjM0ODhFLTM0Iik7CisgIG1hdGh0ZXN0KDExNCxkZWYsIjE2NDExNDcwRSs1NzgxOTIwMDgiLCI0OTc0NzAuMDA1RS0zNzc0NzM2MjEiLCIxLjY0MTE0NzAwRSs1NzgxOTIwMTUiLCIxLjY0MTE0NzAwRSs1NzgxOTIwMTUiLCI4LjE2NDIxNDA2RSsyMDA3MTgzOTkiLCIzLjI5ODk4Njg0RSs5NTU2NjU2MzAiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMTE1LGRlZiwiLTEwNy4zNTM1NDRFKzYwOTY4OTgwOCIsIi02NTkuNTAxMzZFLTQ1NjcxMTc0MyIsIi0xLjA3MzUzNTQ0RSs2MDk2ODk4MTAiLCItMS4wNzM1MzU0NEUrNjA5Njg5ODEwIiwiNy4wNzk5ODA4M0UrMTUyOTc4MDY5IiwiIiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDExNixkZWYsIjc4Ni4xMzQxNjMiLCItNTMuMDI5MjI3NUUtNjY0NDE5NzY4IiwiNzg2LjEzNDE2MyIsIjc4Ni4xMzQxNjMiLCItNC4xNjg4MDg3NEUtNjY0NDE5NzY0IiwiLTEuNDgyNDU0NDlFKzY2NDQxOTc2OSIsIiIsIiIsIjMuMzMwNTU1MzJFLTE1Iik7CisgIG1hdGh0ZXN0KDExNyxkZWYsIjIzLjU0MTQ3MTQiLCI1MDAwNzg2LjkxIiwiNTAwMDgxMC40NSIsIi01MDAwNzYzLjM3IiwiMTE3NzI1ODgyIiwiMC4wMDAwMDQ3MDc1NTM0IiwiMCIsIjIzLjU0MTQ3MTQiLCI0LjQ4OTU2MThFKzY4NjAyNDciKTsKKyAgbWF0aHRlc3QoMTE4LGRlZiwiLTY5Nzc1LjYxMTMiLCI1NjEyOTIxMjAuIiwiNTYxMjIyMzQ0IiwiLTU2MTM2MTg5NiIsIi0zLjkxNjQ1MDA4RSsxMyIsIi0wLjAwMDEyNDMxMjQ3MyIsIjAiLCItNjk3NzUuNjExMyIsIiIpOworICBtYXRodGVzdCgxMTksZGVmLCI5MTkwNDMuODcxIiwiLTcxNjA2NjEzLjciLCItNzA2ODc1NjkuOCIsIjcyNTI1NjU3LjYiLCItNi41ODA5NjE5NEUrMTMiLCItMC4wMTI4MzQ2MjI3IiwiMCIsIjkxOTA0My44NzEiLCIzLjA1ODYyNDI5RS00MjcwMTQzMTciKTsKKyAgbWF0aHRlc3QoMTIwLGRlZiwiLTI3NjY3LjE5MTUiLCItMjkzNDU1LjEwN0UtNzg5MTgxOTI0IiwiLTI3NjY3LjE5MTUiLCItMjc2NjcuMTkxNSIsIjguMTE5MDc4NjRFLTc4OTE4MTkxNSIsIjkuNDI4MDgzMTVFKzc4OTE4MTkyMiIsIiIsIiIsIi00LjcyMTc2OTM4RS0xNCIpOworICBtYXRodGVzdCgxMjEsZGVmLCItOTA4NjAzNjI1LiIsIi05ODIuNDA5MjczRSs0NDk0NDExMzQiLCItOS44MjQwOTI3M0UrNDQ5NDQxMTM2IiwiOS44MjQwOTI3M0UrNDQ5NDQxMTM2IiwiOC45MjYyMDYyN0UrNDQ5NDQxMTQ1IiwiOS4yNDg3MjgxRS00NDk0NDExMjkiLCIwIiwiLTkwODYwMzYyNSIsIjIuNjA3Njg2MzJFLTkwIik7CisgIG1hdGh0ZXN0KDEyMixkZWYsIjg0Ny4xMTMzNTEiLCI1LjcxNTExMjY4IiwiODUyLjgyODQ2NCIsIjg0MS4zOTgyMzgiLCI0ODQxLjM0ODI1IiwiMTQ4LjIyMzM4NiIsIjE0OCIsIjEuMjc2Njc0MzYiLCIzLjY5NTI5NTM4RSsxNyIpOworICBtYXRodGVzdCgxMjMsZGVmLCItOTkyMTQwNDc1IiwiMy44MjkxODIxOCIsIi05OTIxNDA0NzEiLCItOTkyMTQwNDc5IiwiLTMuNzk5MDg2NjNFKzkiLCItMjU5MDk5ODM2IiwiLTI1OTA5OTgzNiIsIi0wLjE0Nzg3NzUyIiwiOS42ODkzMDU5NUUrMzUiKTsKKyAgbWF0aHRlc3QoMTI0LGRlZiwiLTEyNjA2NDM3LjUiLCIyNjgxMjMxNDVFKzM2Mjc5ODg1OCIsIjIuNjgxMjMxNDVFKzM2Mjc5ODg2NiIsIi0yLjY4MTIzMTQ1RSszNjI3OTg4NjYiLCItMy4zODAwNzc2N0UrMzYyNzk4ODczIiwiLTQuNzAxNzM0MTZFLTM2Mjc5ODg2MCIsIjAiLCItMTI2MDY0MzcuNSIsIi0yLjAwMzQ0MzYyRSsyMSIpOworICBtYXRodGVzdCgxMjUsZGVmLCIzNzk5NDcwLjY0IiwiLTI2NC43MDM5OTIiLCIzNzk5MjA1Ljk0IiwiMzc5OTczNS4zNCIsIi0xLjAwNTczNTA1RSs5IiwiLTE0MzUzLjY1ODMiLCItMTQzNTMiLCIxNzQuMjQyODI0IiwiMi4zNjI1NDY2RS0xNzQ0Iik7CisgIG1hdGh0ZXN0KDEyNixkZWYsIi04LjExMDcwMjQ3IiwiLTkzMTI4NDA1Ni5FLTY1NDI4ODk3NCIsIi04LjExMDcwMjQ3IiwiLTguMTEwNzAyNDciLCI3LjU1MzM2Nzg5RS02NTQyODg5NjUiLCI4LjcwOTE2MDY3RSs2NTQyODg5NjUiLCIiLCIiLCItNi41ODM3NTY2MkUtOSIpOworICBtYXRodGVzdCgxMjcsZGVmLCItMjQyNjYwMTc3LiIsIi02LjA5ODMyNzE1RS05NDM3NDI0MTUiLCItMjQyNjYwMTc3IiwiLTI0MjY2MDE3NyIsIjEuNDc5ODIxMTVFLTk0Mzc0MjQwNiIsIjMuOTc5MTI2OTJFKzk0Mzc0MjQyMiIsIiIsIiIsIjQuODk3ODg5MDFFLTUxIik7CisgIG1hdGh0ZXN0KDEyOCxkZWYsIjc2LjE0NjM4MDMiLCItNDUuNjc1ODAwNkUtNjM2OTA3OTk2IiwiNzYuMTQ2MzgwMyIsIjc2LjE0NjM4MDMiLCItMy40NzgwNDY4OEUtNjM2OTA3OTkzIiwiLTEuNjY3MTA1NTRFKzYzNjkwNzk5NiIsIiIsIiIsIjMuOTA2MTkyODdFLTEwIik7CisgIG1hdGh0ZXN0KDEyOSxkZWYsIjc2MTE4NS44NjIiLCItNzA4Nzg0NzAuOUUrMjIxMjE0NzEyIiwiLTcuMDg3ODQ3MDlFKzIyMTIxNDcxOSIsIjcuMDg3ODQ3MDlFKzIyMTIxNDcxOSIsIi01LjM5NTE2OTAwRSsyMjEyMTQ3MjUiLCItMS4wNzM5MzA5OUUtMjIxMjE0NzE0IiwiMCIsIjc2MTE4NS44NjIiLCI2Ljc1NDA2MTQ0RS00MiIpOworICBtYXRodGVzdCgxMzAsZGVmLCI2MjAzNjA2LjU0IiwiLTE5NS45Mjc0OEUtODMzNTEyMDYxIiwiNjIwMzYwNi41NCIsIjYyMDM2MDYuNTQiLCItMS4yMTU0NTcwMEUtODMzNTEyMDUyIiwiLTMuMTY2Mjc2OUUrODMzNTEyMDY1IiwiIiwiIiwiMi41OTg0MzI5MkUtMTQiKTsKKyAgbWF0aHRlc3QoMTMxLGRlZiwiLTE2MzI3NDgzNy4iLCI5NS4wNDQ4NTUwRSs4ODc4NzY1MzMiLCI5LjUwNDQ4NTUwRSs4ODc4NzY1MzQiLCItOS41MDQ0ODU1MEUrODg3ODc2NTM0IiwiLTEuNTUxODQzMzJFKzg4Nzg3NjU0MyIsIi0xLjcxNzg3MTM5RS04ODc4NzY1MjciLCIwIiwiLTE2MzI3NDgzNyIsIjEuMzQ2NDU3MzFFKzgyIik7CisgIG1hdGh0ZXN0KDEzMixkZWYsIjIuMzg2MzgxOTAiLCItODA3OTg2MTc5LiIsIi04MDc5ODYxNzciLCI4MDc5ODYxODEiLCItMS45MjgxNjM1OUUrOSIsIi0yLjk1MzQ5MzQ3RS05IiwiMCIsIjIuMzg2MzgxOTAiLCIxLjE5MDI5MzA1RS0zMDUyMDg2NTYiKTsKKyAgbWF0aHRlc3QoMTMzLGRlZiwiLTEwOTAyMjI5NkUtODExOTgxMTU4IiwiNy4xOTY4NTY4MCIsIjcuMTk2ODU2ODAiLCItNy4xOTY4NTY4MCIsIi03Ljg0NjE3ODUyRS04MTE5ODExNTAiLCItMS41MTQ4NTk4OEUtODExOTgxMTUxIiwiMCIsIi0xLjA5MDIyMjk2RS04MTE5ODExNTAiLCIiKTsKKyAgbWF0aHRlc3QoMTM0LGRlZiwiLTU1OTI1MC43ODBFLTI3MzcxMDQyMSIsIi0zOTM3ODA4MTEuIiwiLTM5Mzc4MDgxMSIsIjM5Mzc4MDgxMSIsIjIuMjAyMjIyMjZFLTI3MzcxMDQwNyIsIjEuNDIwMjA4MzFFLTI3MzcxMDQyNCIsIjAiLCItNS41OTI1MDc4MEUtMjczNzEwNDE2IiwiIik7CisgIG1hdGh0ZXN0KDEzNSxkZWYsIi04ODAyMS45OTY2RSs1NTUzMzQ2NDIiLCI3NTk5Njg2LjY0RSs4MTg4ODQwNTMiLCI3LjU5OTY4NjY0RSs4MTg4ODQwNTkiLCItNy41OTk2ODY2NEUrODE4ODg0MDU5IiwiIiwiLTEuMTU4MjMxOTJFLTI2MzU0OTQxMyIsIjAiLCItOC44MDIxOTk2NkUrNTU1MzM0NjQ2IiwiIik7CisgIG1hdGh0ZXN0KDEzNixkZWYsIjE5NC4zMTc2NDhFLTE5NzQ1MDAwOSIsIi05MzAuOTc5MDY0IiwiLTkzMC45NzkwNjQiLCI5MzAuOTc5MDY0IiwiLTEuODA5MDU2NjJFLTE5NzQ1MDAwNCIsIi0yLjA4NzIzOTcyRS0xOTc0NTAwMTAiLCIwIiwiMS45NDMxNzY0OEUtMTk3NDUwMDA3IiwiIik7CisgIG1hdGh0ZXN0KDEzNyxkZWYsIjk0OTU0NzkuNjUiLCI3NDA1Njk3Ljk2IiwiMTY5MDExNzcuNiIsIjIwODk3ODEuNjkiLCI3LjAzMjA2NTQzRSsxMyIsIjEuMjgyMTg1NjUiLCIxIiwiMjA4OTc4MS42OSIsIjEuMDEzNTQ0NkUrNTE2NzMzODMiKTsKKyAgbWF0aHRlc3QoMTM4LGRlZiwiLTE2NTYuMjg5MjUiLCItMTYzMDUwNTExRS02ODI4ODIzODAiLCItMTY1Ni4yODkyNSIsIi0xNjU2LjI4OTI1IiwiMi43MDA1ODgwOUUtNjgyODgyMzY5IiwiMS4wMTU4MTM1OUUrNjgyODgyMzc1IiwiIiwiIiwiMy42NDUyNTI2NUUtNyIpOworICBtYXRodGVzdCgxMzksZGVmLCI5NTU4MS4zNzg0RSs2NDI2MjE0OSIsIi05OS4yODc5MzY1IiwiOS41NTgxMzc4NEUrNjQyNjIxNTMiLCI5LjU1ODEzNzg0RSs2NDI2MjE1MyIsIi05LjQ5MDA3NzgzRSs2NDI2MjE1NSIsIi05LjYyNjY4NTk2RSs2NDI2MjE1MSIsIiIsIiIsIiIpOworICBtYXRodGVzdCgxNDAsZGVmLCI2NDM3NjEuNDUyIiwiMy43MzQ0NjkzOSIsIjY0Mzc2NS4xODYiLCI2NDM3NTcuNzE4IiwiMjQwNDEwNy40NCIsIjE3MjM4My42NDciLCIxNzIzODMiLCIyLjQxNTE0MzYzIiwiMS43MTc1MTIzNkUrMjMiKTsKKyAgbWF0aHRlc3QoMTQxLGRlZiwiNzk2MC40OTg2NkUtMTI5ODI3NDIzIiwiMzIyMC4yMjg1MCIsIjMyMjAuMjI4NTAiLCItMzIyMC4yMjg1MCIsIjIuNTYzNDYyNDdFLTEyOTgyNzQxNiIsIjIuNDcyMDI5MTNFLTEyOTgyNzQyMyIsIjAiLCI3Ljk2MDQ5ODY2RS0xMjk4Mjc0MjAiLCIiKTsKKyAgbWF0aHRlc3QoMTQyLGRlZiwiLTYzNTYuNjQxMTJFLTcwNzIwMzgxOCIsIjE4MDUwNTQuOTgiLCIxODA1MDU0Ljk4IiwiLTE4MDUwNTQuOTgiLCItMS4xNDc0MDg2N0UtNzA3MjAzODA4IiwiLTMuNTIxNTc3NTZFLTcwNzIwMzgyMSIsIjAiLCItNi4zNTY2NDExMkUtNzA3MjAzODE1IiwiIik7CisgIG1hdGh0ZXN0KDE0MyxkZWYsIjIuMzkwNDA0MiIsIjg0NzYuNTIwMDYiLCI4NDc4LjkxMDQ2IiwiLTg0NzQuMTI5NjYiLCIyMDI2Mi4zMDkyIiwiMC4wMDAyODIwMDMwMTMiLCIwIiwiMi4zOTA0MDQyIiwiMi4wMDI1MTc1MkUrMzIwOCIpOworICBtYXRodGVzdCgxNDQsZGVmLCItNzEzMjk4LjY1OCIsIi05NTcuNzgyNzI5IiwiLTcxNDI1Ni40NDEiLCItNzEyMzQwLjg3NSIsIjY4MzE4NTEzNSIsIjc0NC43Mzk1MjgiLCI3NDQiLCItNzA4LjMwNzYyNCIsIjMuNjgxMjIzMjFFLTU2MDgiKTsKKyAgbWF0aHRlc3QoMTQ1LGRlZiwiNjA3Nzc5MjMzLkUtODIwNDk3MzY1IiwiLTIwLjExODg3NDJFLTg1NzMxODMyMyIsIjYuMDc3NzkyMzNFLTgyMDQ5NzM1NyIsIjYuMDc3NzkyMzNFLTgyMDQ5NzM1NyIsIiIsIi0zLjAyMDk0MDU3RSszNjgyMDk2NSIsIiIsIiIsIiIpOworICBtYXRodGVzdCgxNDYsZGVmLCItMjA1ODg4MjUxIiwiLTkwOC43OTI5MjJFKzI1MDY4MDYxMyIsIi05LjA4NzkyOTIyRSsyNTA2ODA2MTUiLCI5LjA4NzkyOTIyRSsyNTA2ODA2MTUiLCIxLjg3MTA5Nzg1RSsyNTA2ODA2MjQiLCIyLjI2NTUxMzM2RS0yNTA2ODA2MDgiLCIwIiwiLTIwNTg4ODI1MSIsIi0xLjUwNDIzNThFLTc1Iik7CisgIG1hdGh0ZXN0KDE0NyxkZWYsIjUxNTQyMzk5LjEiLCItMjMyMTIuMjQxNCIsIjUxNTE5MTg2LjkiLCI1MTU2NTYxMS4zIiwiLTEuMTk2NDE0NjFFKzEyIiwiLTIyMjAuNDgzNSIsIi0yMjIwIiwiMTEyMjMuMTkyMCIsIjEuNzE2NDEzNDhFLTE3OTAxNSIpOworICBtYXRodGVzdCgxNDgsZGVmLCI0LjQ0Mjg3MjMwIiwiMTU4OTIzMDIzIiwiMTU4OTIzMDI3IiwiLTE1ODkyMzAxOSIsIjcwNjA3NDY5NyIsIjIuNzk1NjEyNzVFLTgiLCIwIiwiNC40NDI4NzIzMCIsIjcuMTI1NzM0MTZFKzEwMjkyODY5MyIpOworICBtYXRodGVzdCgxNDksZGVmLCItNzkxMjM2ODIuNiIsIi0zLjg1NzE3NzAiLCItNzkxMjM2ODYuNSIsIi03OTEyMzY3OC44IiwiMzA1MTk0MDQ5IiwiMjA1MTMzNjUuOCIsIjIwNTEzMzY1IiwiLTIuOTI5Mzk1MCIsIjIuNTUxMzczNDVFLTMyIik7CisgIG1hdGh0ZXN0KDE1MCxkZWYsIi04MC4zMzI0MzQ3RS01Njk3MTUwMzAiLCI4ODMxNDIuMzUxIiwiODgzMTQyLjM1MSIsIi04ODMxNDIuMzUxIiwiLTcuMDk0NDk3NTJFLTU2OTcxNTAyMyIsIi05LjA5NjIwNDU1RS01Njk3MTUwMzUiLCIwIiwiLTguMDMzMjQzNDdFLTU2OTcxNTAyOSIsIiIpOworICBtYXRodGVzdCgxNTEsZGVmLCIxMzYzNy40ODMiLCItNTI3OTguNTYzMSIsIi0zOTE2MS4wODAxIiwiNjY0MzYuMDQ2MSIsIi03MjAwMzk1MDciLCItMC4yNTgyOTI2OTIiLCIwIiwiMTM2MzcuNDgzIiwiMS40NzE2Mzc5MUUtMjE4MzEwIik7CisgIG1hdGh0ZXN0KDE1MixkZWYsIjYuNDI5MzQ4NDNFLTI3NjQ3NjQ1OCIsIjg0MDU3NDQwLjBFLTM4ODAzOTc4MiIsIjYuNDI5MzQ4NDNFLTI3NjQ3NjQ1OCIsIjYuNDI5MzQ4NDNFLTI3NjQ3NjQ1OCIsIjUuNDA0MzQ1NzBFLTY2NDUxNjIzMiIsIjcuNjQ4NzU1OTNFKzExMTU2MzMxNiIsIiIsIiIsIiIpOworICBtYXRodGVzdCgxNTMsZGVmLCItNS42NDEzMzA4NyIsIi0xNzQwMTI5Ny4iLCItMTc0MDEzMDIuNiIsIjE3NDAxMjkxLjQiLCI5ODE2NjQ3My45IiwiMy4yNDE5MDI1M0UtNyIsIjAiLCItNS42NDEzMzA4NyIsIi0xLjI1OTA4OTE2RS0xMzA3NTAxNCIpOworICBtYXRodGVzdCgxNTQsZGVmLCI5NTQ2OS43MDU3RSs4NjU3MzM4MjQiLCIxOTguODI5NzQ5IiwiOS41NDY5NzA1N0UrODY1NzMzODI4IiwiOS41NDY5NzA1N0UrODY1NzMzODI4IiwiMS44OTgyMjE3NkUrODY1NzMzODMxIiwiNC44MDE1ODA1NkUrODY1NzMzODI2IiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDE1NSxkZWYsIi00MTY0NjYuMjA5IiwiLTkzMDE1MzQyNyIsIi05MzA1Njk4OTMiLCI5Mjk3MzY5NjEiLCIzLjg3Mzc3NDcyRSsxNCIsIjAuMDAwNDQ3NzM5MjYyIiwiMCIsIi00MTY0NjYuMjA5IiwiIik7CisgIG1hdGh0ZXN0KDE1NixkZWYsIi0xNTQxNzMzLjg1IiwiLTEuOTkyMDg3MDgiLCItMTU0MTczNS44NCIsIi0xNTQxNzMxLjg2IiwiMzA3MTI2OC4wOCIsIjc3MzkyOC45NDQiLCI3NzM5MjgiLCItMS44ODAzNDk3NiIsIjQuMjA3MDg0MDFFLTEzIik7CisgIG1hdGh0ZXN0KDE1NyxkZWYsIi0zOTE1MjY5MS44IiwiLTY0NTEzMTc0OC4iLCItNjg0Mjg0NDQwIiwiNjA1OTc5MDU2IiwiMi41MjU4NjQ0NUUrMTYiLCIwLjA2MDY4OTQ1MTMiLCIwIiwiLTM5MTUyNjkxLjgiLCIiKTsKKyAgbWF0aHRlc3QoMTU4LGRlZiwiMTEzLjkzOTk3OSIsIi01ODI4MjU1MC40IiwiLTU4MjgyNDM2LjUiLCI1ODI4MjY2NC4zIiwiLTYuNjQwNzEyNTdFKzkiLCItMC4wMDAwMDE5NTQ5NTg3IiwiMCIsIjExMy45Mzk5NzkiLCIyLjEwNjU1N0UtMTE5ODY4MzMwIik7CisgIG1hdGh0ZXN0KDE1OSxkZWYsIi0zMjQ5NzEuNzM2IiwiLTk1MTcuMTUxNTQiLCItMzM0NDg4Ljg4OCIsIi0zMTU0NTQuNTg1IiwiMy4wOTI4MDUyNkUrOSIsIjM0LjE0NTkwMzMiLCIzNCIsIi0xMzg4LjU4MzY0IiwiLTUuODI3OTUyNjNFLTUyNDU3Iik7CisgIG1hdGh0ZXN0KDE2MCxkZWYsIi03Ni45NDM2NzQ0IiwiLTk1NDgxMjIuNzVFLTI3MzU5OTcyOCIsIi03Ni45NDM2NzQ0IiwiLTc2Ljk0MzY3NDQiLCI3LjM0NjY3NjQ4RS0yNzM1OTk3MjAiLCI4LjA1ODUxMzMyRSsyNzM1OTk3MjIiLCIiLCIiLCIxLjM3NDg5ODk1RS0xOSIpOworICBtYXRodGVzdCgxNjEsZGVmLCItNDMwMzkzLjI4MiIsIi03MC4yNTUxNTA1IiwiLTQzMDQ2My41MzciLCItNDMwMzIzLjAyNyIsIjMwMjM3MzQ0LjgiLCI2MTI2LjE0NTYxIiwiNjEyNiIsIi0xMC4yMzAwMzcwIiwiNC4yNjAwNjQwOUUtMzk1Iik7CisgIG1hdGh0ZXN0KDE2MixkZWYsIi0zMzA4MDUxLjkwIiwiLTM0OTQzMzc5OS5FKzM5NzgxMzE4OCIsIi0zLjQ5NDMzNzk5RSszOTc4MTMxOTYiLCIzLjQ5NDMzNzk5RSszOTc4MTMxOTYiLCIxLjE1NTk0NTE0RSszOTc4MTMyMDMiLCI5LjQ2Njg5MTYxRS0zOTc4MTMxOTEiLCIwIiwiLTMzMDgwNTEuOTAiLCItMi43NjIzNzc2OEUtMjAiKTsKKyAgbWF0aHRlc3QoMTYzLGRlZiwiMjMuMTU0MzIxMkUtNjU1ODIyNzEyIiwiNTg0OC4yMDg1MyIsIjU4NDguMjA4NTMiLCItNTg0OC4yMDg1MyIsIjEuMzU0MTEyOTlFLTY1NTgyMjcwNyIsIjMuOTU5MjE2MDdFLTY1NTgyMjcxNSIsIjAiLCIyLjMxNTQzMjEyRS02NTU4MjI3MTEiLCIiKTsKKyAgbWF0aHRlc3QoMTY0LGRlZiwiLTE3NC4yNjEzMDhFLTgyOTAyMDc3IiwiLTIwMDA5NjIwNC4iLCItMjAwMDk2MjA0IiwiMjAwMDk2MjA0IiwiMy40ODY5MDI2MkUtODI5MDIwNjciLCI4LjcwODg3NjI2RS04MjkwMjA4NCIsIjAiLCItMS43NDI2MTMwOEUtODI5MDIwNzUiLCIiKTsKKyAgbWF0aHRlc3QoMTY1LGRlZiwiLTUwNjY5MTA1LjIiLCI5MTA1Nzg5LjAxRSs2MDk4ODk3MDAiLCI5LjEwNTc4OTAxRSs2MDk4ODk3MDYiLCItOS4xMDU3ODkwMUUrNjA5ODg5NzA2IiwiLTQuNjEzODIxODFFKzYwOTg4OTcxNCIsIi01LjU2NDQ5MzY2RS02MDk4ODk3MDAiLCIwIiwiLTUwNjY5MTA1LjIiLCItMi4yMDEzNTAwOEUrNjkiKTsKKyAgbWF0aHRlc3QoMTY2LGRlZiwiNDI0NzY4ODU2LiIsIi05NzEuNzE3NTciLCI0MjQ3Njc4ODQiLCI0MjQ3Njk4MjgiLCItNC4xMjc1NTM2MUUrMTEiLCItNDM3MTMyLjAxMiIsIi00MzcxMzIiLCIxMS4xOTA3NiIsIjIuNzI2NTE0NzNFLTgzODciKTsKKyAgbWF0aHRlc3QoMTY3LGRlZiwiNzE4MS4yNzY3IiwiOTk5MTE3LjkxOCIsIjEwMDYyOTkuMTkiLCItOTkxOTM2LjY0MSIsIjcuMTc0OTQyMjNFKzkiLCIwLjAwNzE4NzYxNjc3IiwiMCIsIjcxODEuMjc2NyIsIjMuMDk2NTUxMjRFKzM4NTI4MDAiKTsKKyAgbWF0aHRlc3QoMTY4LGRlZiwiODA5NjQxNy4wN0UtNDMzNjk0NTI4IiwiLTY4LjQ4NjMzNjMiLCItNjguNDg2MzM2MyIsIjY4LjQ4NjMzNjMiLCItNS41NDQ5Mzk0MkUtNDMzNjk0NTIwIiwiLTEuMTgyMTk0NTFFLTQzMzY5NDUyMyIsIjAiLCI4LjA5NjQxNzA3RS00MzM2OTQ1MjIiLCIiKTsKKyAgbWF0aHRlc3QoMTY5LGRlZiwiMTIzNjI4Ny41IiwiLTcxMTkuOTcyOTlFLTE3NjIwMDQ5OCIsIjEyMzYyODcuNTAiLCIxMjM2Mjg3LjUwIiwiLTguODAyMzMzNjFFLTE3NjIwMDQ4OSIsIi0xLjczNjM2NTQ0RSsxNzYyMDA1MDAiLCIiLCIiLCIyLjI2NTQ5Nzg0RS00MyIpOworICBtYXRodGVzdCgxNzAsZGVmLCItNzUyOTk1ODMzRS02NTQ0MDEwNjciLCItMTUuMjczNjkzMEUrODAzOTM5OTgzIiwiLTEuNTI3MzY5MzBFKzgwMzkzOTk4NCIsIjEuNTI3MzY5MzBFKzgwMzkzOTk4NCIsIjEuMTUwMTAyNzJFKzE0OTUzODkyNiIsIiIsIjAiLCItNy41Mjk5NTgzM0UtNjU0NDAxMDU5IiwiIik7CisgIG1hdGh0ZXN0KDE3MSxkZWYsIjcwMjk5Mi40NTkiLCItMzEyLjY4OTQ3NCIsIjcwMjY3OS43NzAiLCI3MDMzMDUuMTQ4IiwiLTIxOTgxODM0MiIsIi0yMjQ4LjIxMjc0IiwiLTIyNDgiLCI2Ni41MjE0NDgiLCI4LjAyNDkzMzIyRS0xODMxIik7CisgIG1hdGh0ZXN0KDE3MixkZWYsIi00NDE0LjM4ODA1IiwiLTE3NjgwLjQ2MzBFLTU4NDM2NDUzNiIsIi00NDE0LjM4ODA1IiwiLTQ0MTQuMzg4MDUiLCI3LjgwNDg0MjQ2RS01ODQzNjQ1MjkiLCIyLjQ5Njc2MDQ0RSs1ODQzNjQ1MzUiLCIiLCIiLCI1LjEzMTY3MzEyRS04Iik7CisgIG1hdGh0ZXN0KDE3MyxkZWYsIjkuNDYzNTA4MDciLCI3ODI2LjY1NDI0IiwiNzgzNi4xMTc3NSIsIi03ODE3LjE5MDczIiwiNzQwNjcuNjA1NiIsIjAuMDAxMjA5MTM4MzkiLCIwIiwiOS40NjM1MDgwNyIsIjMuNjMyNzE0OTVFKzc2MzkiKTsKKyAgbWF0aHRlc3QoMTc0LGRlZiwiMjA3ODE1My43IiwiLTE2OTM0NjA3LjNFKzIzMzU5NDQzOSIsIi0xLjY5MzQ2MDczRSsyMzM1OTQ0NDYiLCIxLjY5MzQ2MDczRSsyMzM1OTQ0NDYiLCItMy41MTkyNzE2OEUrMjMzNTk0NDUyIiwiLTEuMjI3MTYzOEUtMjMzNTk0NDQwIiwiMCIsIjIwNzgxNTMuNyIsIjIuMzE1NDk5MzlFLTEzIik7CisgIG1hdGh0ZXN0KDE3NSxkZWYsIi05MzU5Ljc0NjI5IiwiNy4wNzc2MTc4OEUrMjUyNDU3Njk2IiwiNy4wNzc2MTc4OEUrMjUyNDU3Njk2IiwiLTcuMDc3NjE3ODhFKzI1MjQ1NzY5NiIsIi02LjYyNDQ3MDc3RSsyNTI0NTc3MDAiLCItMS4zMjI0NDMwMUUtMjUyNDU3NjkzIiwiMCIsIi05MzU5Ljc0NjI5IiwiLTYuMjkyODY2NzdFKzI3Iik7CisgIG1hdGh0ZXN0KDE3NixkZWYsIjY2LjIzMTkyODRFKzczMDQ2ODQ3OSIsIjI1LjkzOTE2ODVFKzIyMTE0NzA0NCIsIjYuNjIzMTkyODRFKzczMDQ2ODQ4MCIsIjYuNjIzMTkyODRFKzczMDQ2ODQ4MCIsIjEuNzE4MDAxMTVFKzk1MTYxNTUyNiIsIjIuNTUzMzU1ODhFKzUwOTMyMTQzNSIsIiIsIiIsIiIpOworICBtYXRodGVzdCgxNzcsZGVmLCIzMTc5OTcwODguRS05MDk2ODc0MiIsIi05Nzc0MjYuNDYxIiwiLTk3NzQyNi40NjEiLCI5Nzc0MjYuNDYxIiwiLTMuMTA4MTg3NjhFLTkwOTY4NzI4IiwiLTMuMjUzNDExOUUtOTA5Njg3NDAiLCIwIiwiMy4xNzk5NzA4OEUtOTA5Njg3MzQiLCIiKTsKKyAgbWF0aHRlc3QoMTc4LGRlZiwiMjI3NDczMzg2IiwiLTY3NTkuNjEzOTAiLCIyMjc0NjY2MjYiLCIyMjc0ODAxNDYiLCItMS41Mzc2MzIyNkUrMTIiLCItMzM2NTEuODMxMiIsIi0zMzY1MSIsIjU2MTguNjUxMTAiLCIxLjQwOTkyNjI3RS01NjQ5MyIpOworICBtYXRodGVzdCgxNzksZGVmLCItMzkyMDE5LjQ2MiIsIi0yNDU0NTYuNTAzIiwiLTYzNzQ3NS45NjUiLCItMTQ2NTYyLjk1OSIsIjkuNjIyMzcyNjNFKzEwIiwiMS41OTcxMDM1OSIsIjEiLCItMTQ2NTYyLjk1OSIsIi0zLjA4NjU2NTMzRS0xMzcyOTE3Iik7CisgIG1hdGh0ZXN0KDE4MCxkZWYsIi0zNjE5NTU2LjI4RSs1ODc2NzM1ODMiLCItMy40NTIzNjk3MiIsIi0zLjYxOTU1NjI4RSs1ODc2NzM1ODkiLCItMy42MTk1NTYyOEUrNTg3NjczNTg5IiwiMS4yNDk2MDQ2NUUrNTg3NjczNTkwIiwiMS4wNDg0MjY2MUUrNTg3NjczNTg5IiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDE4MSxkZWYsIi0yNDkuNDAwNzA0RS05MjM5MzA4NDgiLCI4MzExMDIuOTE5IiwiODMxMTAyLjkxOSIsIi04MzExMDIuOTE5IiwiLTIuMDcyNzc2NTNFLTkyMzkzMDg0MCIsIi0zLjAwMDg0MDE5RS05MjM5MzA4NTIiLCIwIiwiLTIuNDk0MDA3MDRFLTkyMzkzMDg0NiIsIiIpOworICBtYXRodGVzdCgxODIsZGVmLCI2NTIzNC4yNzM5RSsxNTQ5NDk5MTQiLCItNjk0NTgxODk1IiwiNi41MjM0MjczOUUrMTU0OTQ5OTE4IiwiNi41MjM0MjczOUUrMTU0OTQ5OTE4IiwiLTQuNTMxMDU0NTZFKzE1NDk0OTkyNyIsIi05LjM5MTg3NjUyRSsxNTQ5NDk5MDkiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMTgzLGRlZiwiNDUuMjMxNjIxMyIsIi04ODc3NTA4My40IiwiLTg4Nzc1MDM4LjIiLCI4ODc3NTEyOC42IiwiLTQuMDE1NDQwOTVFKzkiLCItNS4wOTUwODA2OUUtNyIsIjAiLCI0NS4yMzE2MjEzIiwiMS45MjMxNDI1NEUtMTQ2OTYyMDE1Iik7CisgIG1hdGh0ZXN0KDE4NCxkZWYsIjMzMTEwMDM3NS4iLCI0NDIuMzQzMzc4IiwiMzMxMTAwODE3IiwiMzMxMDk5OTMzIiwiMS40NjQ2MDA1OEUrMTEiLCI3NDg1MTQuMzciLCI3NDg1MTQiLCIxNjMuNzU5NzA4IiwiNi42NDAxMTA0M0UrMzc2NSIpOworICBtYXRodGVzdCgxODUsZGVmLCI4MS44MTYyNzY1IiwiNS42MTIzOTUxNUUrNDY3MzcyMTYzIiwiNS42MTIzOTUxNUUrNDY3MzcyMTYzIiwiLTUuNjEyMzk1MTVFKzQ2NzM3MjE2MyIsIjQuNTkxODUyNzNFKzQ2NzM3MjE2NSIsIjEuNDU3Nzc4MjZFLTQ2NzM3MjE2MiIsIjAiLCI4MS44MTYyNzY1IiwiMi45OTk0MjY3N0UrMTEiKTsKKyAgbWF0aHRlc3QoMTg2LGRlZiwiLTU3MzguMTMwNjlFKzc4OTQ2NDA3OCIsIjMzOTY5NzE1LjAiLCItNS43MzgxMzA2OUUrNzg5NDY0MDgxIiwiLTUuNzM4MTMwNjlFKzc4OTQ2NDA4MSIsIi0xLjk0OTIyNjY0RSs3ODk0NjQwODkiLCItMS42ODkxOTAxMkUrNzg5NDY0MDc0IiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDE4NyxkZWYsIi03NDEzLjAzOTExIiwiMi43MDYzMDMyMEUtMjU0ODU4MjY0IiwiLTc0MTMuMDM5MTEiLCItNzQxMy4wMzkxMSIsIi0yLjAwNjE5MzE1RS0yNTQ4NTgyNjAiLCItMi43MzkxNzUzOUUrMjU0ODU4MjY3IiwiIiwiIiwiLTQuMDczNjk4NDJFKzExIik7CisgIG1hdGh0ZXN0KDE4OCxkZWYsIi00MTc2OTYuMTgyIiwiMjc0MDAuNjAwMiIsIi0zOTAyOTUuNTgyIiwiLTQ0NTA5Ni43ODIiLCItMS4xNDQ1MTI2MUUrMTAiLCItMTUuMjQ0MDUyMyIsIi0xNSIsIi02Njg3LjE3OTAiLCItMS41ODAyMDMzNEUrMTU0MDE3Iik7CisgIG1hdGh0ZXN0KDE4OSxkZWYsIjY4Ljg1Mzg3MzVFKzY1NTY0NzI4NyIsIjMxOTguMTc5MzNFLTEzMjQ1NDgyNiIsIjYuODg1Mzg3MzVFKzY1NTY0NzI4OCIsIjYuODg1Mzg3MzVFKzY1NTY0NzI4OCIsIjIuMjAyMDcwMzVFKzUyMzE5MjQ2NiIsIjIuMTUyOTA4NDZFKzc4ODEwMjExMSIsIiIsIiIsIiIpOworICBtYXRodGVzdCgxOTAsZGVmLCItNjgxNy4wNDI0NiIsIjQzNDQyMC40MzkiLCI0Mjc2MDMuMzk3IiwiLTQ0MTIzNy40ODEiLCItMi45NjE0NjI1OEUrOSIsIi0wLjAxNTY5MjI2OTIiLCIwIiwiLTY4MTcuMDQyNDYiLCI1Ljk0MTQzNTE4RSsxNjY1MzkwIik7CisgIG1hdGh0ZXN0KDE5MSxkZWYsIjg1NzguMjc1MTEiLCI2NDcwNDIuMzQxRS00OTA5MjQzMzQiLCI4NTc4LjI3NTExIiwiODU3OC4yNzUxMSIsIjUuNTUwNTA3MjFFLTQ5MDkyNDMyNSIsIjEuMzI1NzY3MkUrNDkwOTI0MzMyIiwiIiwiIiwiMy45ODQ3Mzg0NkUrMjMiKTsKKyAgbWF0aHRlc3QoMTkyLGRlZiwiNDEyNC4xMTYxNUUrNzMzMTA5NDI0IiwiNTk3Mzg1ODI4RSszNzU5Mjg3NDUiLCI0LjEyNDExNjE1RSs3MzMxMDk0MjciLCI0LjEyNDExNjE1RSs3MzMxMDk0MjciLCIiLCI2LjkwMzYwNTZFKzM1NzE4MDY3MyIsIiIsIiIsIiIpOworICBtYXRodGVzdCgxOTMsZGVmLCIxMDIuNzE0NDAwIiwiLTkxOTAxNy40NjgiLCItOTE4OTE0Ljc1NCIsIjkxOTEyMC4xODIiLCItOTQzOTYzMjcuOCIsIi0wLjAwMDExMTc2NTQ0OSIsIjAiLCIxMDIuNzE0NDAwIiwiNC4wNDI5NTY4OUUtMTg0ODcyNCIpOworICBtYXRodGVzdCgxOTQsZGVmLCItNDYxNC4zMzAxNUUrOTk2Nzc4NzMzIiwiLTQzMy41NjA4MTJFKzIyODYwNTk5IiwiLTQuNjE0MzMwMTVFKzk5Njc3ODczNiIsIi00LjYxNDMzMDE1RSs5OTY3Nzg3MzYiLCIiLCIxLjA2NDI4NjcyRSs5NzM5MTgxMzUiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMTk1LGRlZiwiNDU3NDU1MTcwLiIsIjM3MDkyMzAuNDhFKzY3NzAxMDg3OSIsIjMuNzA5MjMwNDhFKzY3NzAxMDg4NSIsIi0zLjcwOTIzMDQ4RSs2NzcwMTA4ODUiLCIxLjY5NjgwNjY2RSs2NzcwMTA4OTQiLCIxLjIzMzI4ODYxRS02NzcwMTA4NzciLCIwIiwiNDU3NDU1MTcwIiwiNC4zNzkxOTM3NkUrMzQiKTsKKyAgbWF0aHRlc3QoMTk2LGRlZiwiLTI1MjI0NjguMTUiLCItNDg0ODIwNDMuNSIsIi01MTAwNDUxMS43IiwiNDU5NTk1NzUuNCIsIjEuMjIyOTQ0MTFFKzE0IiwiMC4wNTIwMjg5MTU2IiwiMCIsIi0yNTIyNDY4LjE1IiwiMS40MjM0ODE3OEUtMzEwMzczNTk1Iik7CisgIG1hdGh0ZXN0KDE5NyxkZWYsIi02NTk4MTEzODQiLCI2Mjc3Ny42MTE4IiwiLTY1OTc0ODYwNiIsIi02NTk4NzQxNjIiLCItNC4xNDIxMzgyOUUrMTMiLCItMTA1MTAuMjk3NiIsIi0xMDUxMCIsIi0xODY4My45ODIwIiwiMy40MzkzNTI0RSs1NTM2NjUiKTsKKyAgbWF0aHRlc3QoMTk4LGRlZiwiNDQyNC45NDE3NiIsIi04MjU4NDguMjAiLCItODIxNDIzLjI1OCIsIjgzMDI3My4xNDIiLCItMy42NTQzMzAxOUUrOSIsIi0wLjAwNTM1ODA1NzA0IiwiMCIsIjQ0MjQuOTQxNzYiLCIzLjQyMTUyNzc1RS0zMDEwOTY2Iik7CisgIG1hdGh0ZXN0KDE5OSxkZWYsIjQzLjY0NDE4ODQiLCItNjUwOS44OTY2M0UtNjE0MTY5Mzc3IiwiNDMuNjQ0MTg4NCIsIjQzLjY0NDE4ODQiLCItMi44NDExOTE1NUUtNjE0MTY5MzcyIiwiLTYuNzA0MjgyODZFKzYxNDE2OTM3NCIsIiIsIiIsIjMuMzE1MjQwNTZFLTEyIik7CisgIG1hdGh0ZXN0KDIwMCxkZWYsIjg5Ny4zODgzODFFLTg0Mzg2NDg3NiIsIjg0MTk1LjEzNjkiLCI4NDE5NS4xMzY5IiwiLTg0MTk1LjEzNjkiLCI3LjU1NTU3Mzc2RS04NDM4NjQ4NjkiLCIxLjA2NTg0MzQ4RS04NDM4NjQ4NzgiLCIwIiwiOC45NzM4ODM4MUUtODQzODY0ODc0IiwiIik7CisgIG1hdGh0ZXN0KDIwMSxkZWYsIjc5NjE5OTgyNSIsIjQ5Ni43NjgzNCIsIjc5NjIwMDMyMiIsIjc5NjE5OTMyOCIsIjMuOTU1MjY4NjVFKzExIiwiMTYwMjc1OC43OSIsIjE2MDI3NTgiLCIzOTMuOTE4MjgiLCI2LjQyNjQ3MjY0RSs0NDIzIik7CisgIG1hdGh0ZXN0KDIwMixkZWYsIjU3MzU4MzU4MiIsIjE1OTguNjk1MjEiLCI1NzM1ODUxODEiLCI1NzM1ODE5ODMiLCI5LjE2OTg1MzI1RSsxMSIsIjM1ODc4Mi4zMjMiLCIzNTg3ODIiLCI1MTcuMTY1NzgiLCI5LjkxMTU2MzAyRSsxNDAwNCIpOworICBtYXRodGVzdCgyMDMsZGVmLCItNzgzMTQ0MjcwLiIsIjYzNDcuNzE0OTYiLCItNzgzMTM3OTIyIiwiLTc4MzE1MDYxOCIsIi00Ljk3MTE3NjYwRSsxMiIsIi0xMjMzNzQuMjAyIiwiLTEyMzM3NCIsIi0xMjg0LjUyNDk2IiwiMS4yODExMDgwM0UrNTY0NTgiKTsKKyAgbWF0aHRlc3QoMjA0LGRlZiwiMjY5MDkyMzQuNyIsIjUyNDExLjUwODEiLCIyNjk2MTY0Ni4yIiwiMjY4NTY4MjMuMiIsIjEuNDEwMzUzNTdFKzEyIiwiNTEzLjQyMjI1NSIsIjUxMyIsIjIyMTMxLjA0NDciLCI5Ljc1ODM2NTI4RSszODk0MTUiKTsKKyAgbWF0aHRlc3QoMjA1LGRlZiwiOC4yMTkxNTI4MiIsIjI0ODU5Ljc4NDFFLTg0MzI4Mjk1OSIsIjguMjE5MTUyODIiLCI4LjIxOTE1MjgyIiwiMi4wNDMyNjM2NUUtODQzMjgyOTU0IiwiMy4zMDYyMDQ0M0UrODQzMjgyOTU1IiwiIiwiIiwiNjcuNTU0NDczMSIpOworICBtYXRodGVzdCgyMDYsZGVmLCItNjg4LjM4NzcxMCIsIjgyNzgzLjUyMDdFLTgzMTg3MDg1OCIsIi02ODguMzg3NzEwIiwiLTY4OC4zODc3MTAiLCItNS42OTg3MTU4MkUtODMxODcwODUxIiwiLTguMzE1NTE2MjNFKzgzMTg3MDg1NSIsIiIsIiIsIjUuMDQyNzIwMTJFKzIyIik7CisgIG1hdGh0ZXN0KDIwNyxkZWYsIi05NzkyMjMyLiIsIi0xNzQ5LjAxMTY2IiwiLTk3OTM5ODEuMDEiLCItOTc5MDQ4Mi45OSIsIjEuNzEyNjcyNzlFKzEwIiwiNTU5OC43MjMxMSIsIjU1OTgiLCItMTI2NC43MjczMiIsIi04Ljg2OTg1Njc0RS0xMjIyOCIpOworICBtYXRodGVzdCgyMDgsZGVmLCItMTMwLjc2NTYwMCIsIjguNjc0Mzc0MjciLCItMTIyLjA5MTIyNiIsIi0xMzkuNDM5OTc0IiwiLTExMzQuMzA5NzYiLCItMTUuMDc0OTMxNyIsIi0xNSIsIi0wLjY0OTk4NTk1IiwiLTEuMTE3OTk5NDdFKzE5Iik7CisgIG1hdGh0ZXN0KDIwOSxkZWYsIjkxNy4yNTkxMDIiLCItMzY4NjQwLjQyNiIsIi0zNjc3MjMuMTY3IiwiMzY5NTU3LjY4NSIsIi0zMzgxMzg3ODYiLCItMC4wMDI0ODgyMjE2OSIsIjAiLCI5MTcuMjU5MTAyIiwiOC42NzEwNDI1NUUtMTA5MjA5NCIpOworICBtYXRodGVzdCgyMTAsZGVmLCItNC45NzI1NjMxIiwiLTI5NDU2MzcxNy4iLCItMjk0NTYzNzIyIiwiMjk0NTYzNzEyIiwiMS40NjQ3MzY2N0UrOSIsIjEuNjg4MTExMkUtOCIsIjAiLCItNC45NzI1NjMxIiwiLTYuMjc5NjI1ODRFLTIwNTE4NzI4NCIpOworICBtYXRodGVzdCgyMTEsZGVmLCItNjA5NjI4ODcuMkUtNTE0MjQ5NjYxIiwiLTI0MzAyMS40MDciLCItMjQzMDIxLjQwNyIsIjI0MzAyMS40MDciLCIxLjQ4MTUyODY2RS01MTQyNDk2NDgiLCIyLjUwODUzOThFLTUxNDI0OTY1OSIsIjAiLCItNi4wOTYyODg3MkUtNTE0MjQ5NjU0IiwiIik7CisgIG1hdGh0ZXN0KDIxMixkZWYsIi01NTM4OTIxOS44IiwiLTM3NzIyMDBFKzk4MTg2NjM5MyIsIi0zLjc3MjIwMDAwRSs5ODE4NjYzOTkiLCIzLjc3MjIwMDAwRSs5ODE4NjYzOTkiLCIyLjA4OTM5MjE1RSs5ODE4NjY0MDciLCIxLjQ2ODM1MzIxRS05ODE4NjYzOTIiLCIwIiwiLTU1Mzg5MjE5LjgiLCIxLjA2MjQyNjc4RS0zMSIpOworICBtYXRodGVzdCgyMTMsZGVmLCI2ODEuNjY2MDEwIiwiNjI2ODg2NzAwIiwiNjI2ODg3MzgyIiwiLTYyNjg4NjAxOCIsIjQuMjczMjczNTZFKzExIiwiMC4wMDAwMDEwODczODMxMSIsIjAiLCI2ODEuNjY2MDEwIiwiIik7CisgIG1hdGh0ZXN0KDIxNCxkZWYsIjYuNDI2NTIxMzgiLCI1MzQ2NTg5NC41IiwiNTM0NjU5MDAuOSIsIi01MzQ2NTg4OC4xIiwiMzQzNTk5NzE0IiwiMS4yMDE5ODUyRS03IiwiMCIsIjYuNDI2NTIxMzgiLCI0LjYxMTU1NTMyRSs0MzE5OTE1NyIpOworICBtYXRodGVzdCgyMTUsZGVmLCI1NjE1NDY2NTYiLCI2NTE0MDguNDc2IiwiNTYyMTk4MDY0IiwiNTYwODk1MjQ4IiwiMy42NTc5NjI1MUUrMTQiLCI4NjIuMDQ5OTY4IiwiODYyIiwiMzI1NDkuNjg4IiwiOC42MDUyMzc3RSs1Njk5NDE5Iik7CisgIG1hdGh0ZXN0KDIxNixkZWYsIjc4NDU3NzguMzZFLTc5OTUxMTM5IiwiOS40NTg1OTA0NyIsIjkuNDU4NTkwNDciLCItOS40NTg1OTA0NyIsIjcuNDIxMDAwNDRFLTc5OTUxMTMyIiwiOC4yOTQ4NzA1NkUtNzk5NTExMzQiLCIwIiwiNy44NDU3NzgzNkUtNzk5NTExMzMiLCIxLjEyNjQ4MjE2RS03MTk1NjAxODkiKTsKKyAgbWF0aHRlc3QoMjE3LGRlZiwiNTQ0ODYuMjExMiIsIjEwLjc1NjUwNzgiLCI1NDQ5Ni45Njc3IiwiNTQ0NzUuNDU0NyIsIjU4NjA4MS4zNTYiLCI1MDY1LjQxODI4IiwiNTA2NSIsIjQuNDk5MTkzMCIsIjEuMjU2NDcxNjhFKzUyIik7CisgIG1hdGh0ZXN0KDIxOCxkZWYsIjE2NTc2NDgyLjUiLCItMjIxNzcyMC44MyIsIjE0MzU4NzYxLjciLCIxODc5NDIwMy4zIiwiLTMuNjc2MjAxMDVFKzEzIiwiLTcuNDc0NTU3NzkiLCItNyIsIjEwNTI0MzYuNjkiLCIxLjM4MjU5Mzc0RS0xNjAxMDgyMCIpOworICBtYXRodGVzdCgyMTksZGVmLCI2MS4yNzkzNzg3RS0zOTIwNzAxMTEiLCI2LjIyNTc1NjUxIiwiNi4yMjU3NTY1MSIsIi02LjIyNTc1NjUxIiwiMy44MTUxMDQ5MUUtMzkyMDcwMTA5IiwiOS44NDI4ODA3MkUtMzkyMDcwMTExIiwiMCIsIjYuMTI3OTM3ODdFLTM5MjA3MDExMCIsIiIpOworICBtYXRodGVzdCgyMjAsZGVmLCI1MTE1MTM2LjM5IiwiLTY1MzY3NDM3Mi4iLCItNjQ4NTU5MjM2IiwiNjU4Nzg5NTA4IiwiLTMuMzQzNjMzNTdFKzE1IiwiLTAuMDA3ODI1MjA1NjUiLCIwIiwiNTExNTEzNi4zOSIsIiIpOworICBtYXRodGVzdCgyMjEsZGVmLCItNy44NDIzODM2NkUtNDE2NDc3MzM5IiwiLTM3NDMyNzU4LjlFKzk3MzY5MzkzIiwiLTMuNzQzMjc1ODlFKzk3MzY5NDAwIiwiMy43NDMyNzU4OUUrOTczNjk0MDAiLCIyLjkzNTYyMDU3RS0zMTkxMDc5MzgiLCIyLjA5NTA1ODk1RS01MTM4NDY3MzkiLCIwIiwiLTcuODQyMzgzNjZFLTQxNjQ3NzMzOSIsIiIpOworICBtYXRodGVzdCgyMjIsZGVmLCItMzg3NzgxLjNFKzI4NDEwODM4MCIsIi0yMTgwODUuNTkyIiwiLTMuODc3ODEzMDBFKzI4NDEwODM4NSIsIi0zLjg3NzgxMzAwRSsyODQxMDgzODUiLCI4LjQ1Njk1MTQ0RSsyODQxMDgzOTAiLCIxLjc3ODExNTE3RSsyODQxMDgzODAiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMjIzLGRlZiwiLTUzNTMuMTc3MzYiLCIzLjM5MzMyMzQ2RSs1NDY2ODUzNTkiLCIzLjM5MzMyMzQ2RSs1NDY2ODUzNTkiLCItMy4zOTMzMjM0NkUrNTQ2Njg1MzU5IiwiLTEuODE2NTA2MjNFKzU0NjY4NTM2MyIsIi0xLjU3NzU2MTc3RS01NDY2ODUzNTYiLCIwIiwiLTUzNTMuMTc3MzYiLCItMS41MzQwMzM2OUUrMTEiKTsKKyAgbWF0aHRlc3QoMjI0LGRlZiwiLTIwODM3LjI5MDBFLTE2ODY1Mjc3MiIsIi04MjM2Ljc4MzA1RS03MTI4MTkxNzMiLCItMi4wODM3MjkwMEUtMTY4NjUyNzY4IiwiLTIuMDgzNzI5MDBFLTE2ODY1Mjc2OCIsIjEuNzE2MzIyMzdFLTg4MTQ3MTkzNyIsIjIuNTI5Nzg0OTdFKzU0NDE2NjQwMSIsIiIsIiIsIiIpOworICBtYXRodGVzdCgyMjUsZGVmLCItOTg1NzMuODcyMkUrODI5MDIyMzY2IiwiMzA5MDExLjAwNyIsIi05Ljg1NzM4NzIyRSs4MjkwMjIzNzAiLCItOS44NTczODcyMkUrODI5MDIyMzcwIiwiLTMuMDQ2MDQxMTVFKzgyOTAyMjM3NiIsIi0zLjE4OTk3OTMyRSs4MjkwMjIzNjUiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMjI2LGRlZiwiNDk3MzA3NTAuNyIsIi01MzE1LjEwNjM2RS0yOTk1ODY5OTEiLCI0OTczMDc1MC43IiwiNDk3MzA3NTAuNyIsIi0yLjY0MzI0MjI5RS0yOTk1ODY5ODAiLCItOS4zNTY0OTIxMUUrMjk5NTg2OTk0IiwiIiwiIiwiMy4yODc1NjkzNkUtMzkiKTsKKyAgbWF0aHRlc3QoMjI3LGRlZiwiMTUzOTUyMy40MCIsIi05NjIzODguNTgxIiwiNTc3MTM0LjgyIiwiMjUwMTkxMS45OCIsIi0xLjQ4MTYxOTc0RSsxMiIsIi0xLjU5OTY5MDAxIiwiLTEiLCI1NzcxMzQuODE5IiwiMy4xMDE0NDgzNEUtNTk1NDY3MyIpOworICBtYXRodGVzdCgyMjgsZGVmLCI4MTU5Ni4yMTIxIiwiLTM3NjAwLjk2NTMiLCI0Mzk5NS4yNDY4IiwiMTE5MTk3LjE3NyIsIi0zLjA2ODA5NjM0RSs5IiwiLTIuMTcwMDU2MzEiLCItMiIsIjYzOTQuMjgxNSIsIjEuOTc4NzgyOTlFLTE4NDY4NCIpOworICBtYXRodGVzdCgyMjksZGVmLCI1OTAxNDYxOTkiLCItMTQyNTQwNC42MSIsIjU4ODcyMDc5NCIsIjU5MTU3MTYwNCIsIi04LjQxMTk3MTEzRSsxNCIsIi00MTQuMDIwMTI4IiwiLTQxNCIsIjI4NjkwLjQ2IiwiMi4wNDY1MDk5NEUtMTI1MDIxNzAiKTsKKyAgbWF0aHRlc3QoMjMwLGRlZiwiMTk2LjA1NTQzIiwiNTA1LjkzNjMwNSIsIjcwMS45OTE3MzUiLCItMzA5Ljg4MDg3NSIsIjk5MTkxLjU1OTgiLCIwLjM4NzUxMDEwNCIsIjAiLCIxOTYuMDU1NDMiLCI4Ljc4NDM3Mzk3RSsxMTU5Iik7CisgIG1hdGh0ZXN0KDIzMSxkZWYsIjc3LjgwNTg0NDkiLCItNjQyLjI3NTI3NCIsIi01NjQuNDY5NDI5IiwiNzIwLjA4MTExOSIsIi00OTk3Mi43NzA0IiwiLTAuMTIxMTQwOTYzIiwiMCIsIjc3LjgwNTg0NDkiLCI5LjMzNTgyNjI2RS0xMjE1Iik7CisgIG1hdGh0ZXN0KDIzMixkZWYsIjE0NjguNjA2ODQiLCIxMDA2OC4xMzgiLCIxMTUzNi43NDQ4IiwiLTg1OTkuNTMxMiIsIjE0Nzg2MTM2LjMiLCIwLjE0NTg2Njc3NyIsIjAiLCIxNDY4LjYwNjg0IiwiMi41NDEyMjQ4NEUrMzE4ODQiKTsKKyAgbWF0aHRlc3QoMjMzLGRlZiwiNC45ODc3NDc2N0UtMzg3OTY4NjMyIiwiNC40MTczMTQzOUUtNTc4ODEyMzc2IiwiNC45ODc3NDc2N0UtMzg3OTY4NjMyIiwiNC45ODc3NDc2N0UtMzg3OTY4NjMyIiwiMi4yMDMyNDQ5NkUtOTY2NzgxMDA3IiwiMS4xMjkxMzU3N0UrMTkwODQzNzQ0IiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDIzNCxkZWYsIjk4MS4wOTEwNTkiLCItOTIyMzguOTkzMCIsIi05MTI1Ny45MDIwIiwiOTMyMjAuMDg0MSIsIi05MDQ5NDg1MS4zIiwiLTAuMDEwNjM2NDAyNSIsIjAiLCI5ODEuMDkxMDU5IiwiNS4yOTk0MzM0MkUtMjc1OTUzIik7CisgIG1hdGh0ZXN0KDIzNSxkZWYsIi0zNjA2LjI0OTkyIiwiODI5MDIyNC43MCIsIjgyODY2MTguNDUiLCItODI5MzgzMC45NSIsIi0yLjk4OTY2MjIyRSsxMCIsIi0wLjAwMDQzNTAwMDI2MiIsIjAiLCItMzYwNi4yNDk5MiIsIi0xLjIzNzQ3MTA3RSsyOTQ4ODc5MyIpOworICBtYXRodGVzdCgyMzYsZGVmLCItODk3ODU3MS4zNSIsIjkyMjQzLjQ3OTYiLCItODg4NjMyNy44NyIsIi05MDcwODE0LjgzIiwiLTguMjgyMTQ2NjNFKzExIiwiLTk3LjMzNTU2NjYiLCItOTciLCItMzA5NTMuODI4OCIsIi00Ljk1NzYyODEzRSs2NDEzODQiKTsKKyAgbWF0aHRlc3QoMjM3LGRlZiwiLTYxOTY4LjE5OTJFKzgxMDA2MDQ3OCIsIjQ3NDI5NDY3MS5FKzE3OTI2MzQxNCIsIi02LjE5NjgxOTkyRSs4MTAwNjA0ODIiLCItNi4xOTY4MTk5MkUrODEwMDYwNDgyIiwiLTIuOTM5MTE4NjdFKzk4OTMyMzkwNSIsIi0xLjMwNjUzMzc0RSs2MzA3OTcwNjAiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMjM4LGRlZiwiNjEyOTg0MzEuNkUtNzU0NDI5MDQxIiwiLTI1ODQ4NjIuNzkiLCItMjU4NDg2Mi43OSIsIjI1ODQ4NjIuNzkiLCItMS41ODQ0ODAzNUUtNzU0NDI5MDI3IiwiLTIuMzcxNDM4NTFFLTc1NDQyOTA0MCIsIjAiLCI2LjEyOTg0MzE2RS03NTQ0MjkwMzQiLCIiKTsKKyAgbWF0aHRlc3QoMjM5LGRlZiwiNjIxMDM5LjA2NCIsIi01MzUxNTM5LjYyIiwiLTQ3MzA1MDAuNTYiLCI1OTcyNTc4LjY4IiwiLTMuMzIzNTE1MTZFKzEyIiwiLTAuMTE2MDQ4NjcyIiwiMCIsIjYyMTAzOS4wNjQiLCIyLjQxMTYzMzEyRS0zMTAwMjEwOCIpOworICBtYXRodGVzdCgyNDAsZGVmLCItMTkuNjAwNzYwNSIsIi01NzkwNTY5Ni4iLCItNTc5MDU3MTUuNiIsIjU3OTA1Njc2LjQiLCIxLjEzNDk5NTY4RSs5IiwiMy4zODQ5NDUxNUUtNyIsIjAiLCItMTkuNjAwNzYwNSIsIjEuMDU2NjM2NDZFLTc0ODI5OTYzIik7CisgIG1hdGh0ZXN0KDI0MSxkZWYsIjM2MjYuMTMxMDlFKzY4NzAzMDM0NiIsIjE4OS44OTYwMDQiLCIzLjYyNjEzMTA5RSs2ODcwMzAzNDkiLCIzLjYyNjEzMTA5RSs2ODcwMzAzNDkiLCI2Ljg4NTg3ODA0RSs2ODcwMzAzNTEiLCIxLjkwOTUzNTIzRSs2ODcwMzAzNDciLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMjQyLGRlZiwiLTI0OTMzNC4wMjYiLCItNy41NDczNTgzNEUtMTQxMzcxODgiLCItMjQ5MzM0LjAyNiIsIi0yNDkzMzQuMDI2IiwiMS44ODE4MTMyNEUtMTQxMzcxODIiLCIzLjMwMzU5MzMyRSsxNDEzNzE5MiIsIiIsIiIsIjYuNjk0OTU0MDhFLTQ0Iik7CisgIG1hdGh0ZXN0KDI0MyxkZWYsIjQxNzYxMzkyOC4iLCItOTI1MjEzLjIxNiIsIjQxNjY4ODcxNSIsIjQxODUzOTE0MSIsIi0zLjg2MzgxOTI1RSsxNCIsIi00NTEuMzcwNDc0IiwiLTQ1MSIsIjM0Mjc2Ny41ODQiLCI4LjM4NDMwMDg1RS03OTc2MDU0Iik7CisgIG1hdGh0ZXN0KDI0NCxkZWYsIjIzLjgzMjAzMDkiLCItNTAwNzQ5OTYuMSIsIi01MDA3NDk3Mi4zIiwiNTAwNzUwMTkuOSIsIi0xLjE5MzM4ODg1RSs5IiwiLTQuNzU5MjY3NjVFLTciLCIwIiwiMjMuODMyMDMwOSIsIjUuODE0NjYzODdFLTY4OTYxMzM1Iik7CisgIG1hdGh0ZXN0KDI0NSxkZWYsIjQ5Nzg5Njc3LjciLCItMTMxODI3ODEyRSsxNTY0MTI1MzQiLCItMS4zMTgyNzgxMkUrMTU2NDEyNTQyIiwiMS4zMTgyNzgxMkUrMTU2NDEyNTQyIiwiLTYuNTYzNjY0MjdFKzE1NjQxMjU0OSIsIi0zLjc3Njg3MjA0RS0xNTY0MTI1MzUiLCIwIiwiNDk3ODk2NzcuNyIsIjIuMDA4NDQ4NDNFLTgiKTsKKyAgbWF0aHRlc3QoMjQ2LGRlZiwiLTg5MDcxNjMuNjFFLTc0MTg2NzI0NiIsIjc3MzY1MS4yODhFLTQ3MjAzMzI4MiIsIjcuNzM2NTEyODhFLTQ3MjAzMzI3NyIsIi03LjczNjUxMjg4RS00NzIwMzMyNzciLCIiLCItMS4xNTEzMTUwNEUtMjY5ODMzOTYzIiwiMCIsIi04LjkwNzE2MzYxRS03NDE4NjcyNDAiLCIiKTsKKyAgbWF0aHRlc3QoMjQ3LGRlZiwiNTE0MDIxNzExLkUrNDYzNTM2NjQ2IiwiNjE3NDQxNjU5LiIsIjUuMTQwMjE3MTFFKzQ2MzUzNjY1NCIsIjUuMTQwMjE3MTFFKzQ2MzUzNjY1NCIsIjMuMTczNzg0MThFKzQ2MzUzNjY2MyIsIjguMzI1MDI0NzhFKzQ2MzUzNjY0NSIsIiIsIiIsIiIpOworICBtYXRodGVzdCgyNDgsZGVmLCI5OTgxNzU3NTAiLCIyLjM5Mjg1NDc4IiwiOTk4MTc1NzUyIiwiOTk4MTc1NzQ4IiwiMi4zODg0ODk2MUUrOSIsIjQxNzE0ODQ4NyIsIjQxNzE0ODQ4NiIsIjEuMzA1MTM2OTIiLCI5Ljk2MzU0ODI4RSsxNyIpOworICBtYXRodGVzdCgyNDksZGVmLCI4NzM1NzU0MjYuIiwiNjQ3ODUzLjE1MkUrNDk3NDUwNzgxIiwiNi40Nzg1MzE1MkUrNDk3NDUwNzg2IiwiLTYuNDc4NTMxNTJFKzQ5NzQ1MDc4NiIsIjUuNjU5NDg1OTNFKzQ5NzQ1MDc5NSIsIjEuMzQ4NDE1OEUtNDk3NDUwNzc4IiwiMCIsIjg3MzU3NTQyNiIsIjQuNDQ0MjkwNjRFKzUzIik7CisgIG1hdGh0ZXN0KDI1MCxkZWYsIjQzNTI2MjYuOCIsIi0xMzAzMzgwNDguRS03NDQ1NjA5MTEiLCI0MzUyNjI2LjgwIiwiNDM1MjYyNi44MCIsIi01LjY3MzEyODgxRS03NDQ1NjA4OTciLCItMy4zMzk0OTA1NUUrNzQ0NTYwOTA5IiwiIiwiIiwiMi4yOTc0NjMyMkUtNyIpOworICBtYXRodGVzdCgyNTEsZGVmLCI0MzcuMjg2OTYwIiwiNy4zNzU2MDgzNSIsIjQ0NC42NjI1NjgiLCI0MjkuOTExMzUyIiwiMzIyNS4yNTczNSIsIjU5LjI4ODI1NjUiLCI1OSIsIjIuMTI2MDY3MzUiLCIzLjA1NzQ5NDUyRSsxOCIpOworICBtYXRodGVzdCgyNTIsZGVmLCI4NDk4MjgwLjQ1RSsyMjA1MTE1MjIiLCI1ODg2MTc2MTIiLCI4LjQ5ODI4MDQ1RSsyMjA1MTE1MjgiLCI4LjQ5ODI4MDQ1RSsyMjA1MTE1MjgiLCI1LjAwMjIzNzU0RSsyMjA1MTE1MzciLCIxLjQ0Mzc2OTMxRSsyMjA1MTE1MjAiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMjUzLGRlZiwiLTUzMjAzODcuNzciLCItNzY3MzIzNy40NiIsIi0xMjk5MzYyNS4yIiwiMjM1Mjg0OS42OSIsIjQuMDgyNDU5ODdFKzEzIiwiMC42OTMzNjkzNjMiLCIwIiwiLTUzMjAzODcuNzciLCItMS4zMDExMzc0NUUtNTE2MDk3NTciKTsKKyAgbWF0aHRlc3QoMjU0LGRlZiwiNTg3NjU1Mzc1IiwiLTQuOTc0ODM2NiIsIjU4NzY1NTM3MCIsIjU4NzY1NTM4MCIsIi0yLjkyMzQ4OTQ3RSs5IiwiLTExODEyNTU2MyIsIi0xMTgxMjU1NjMiLCIwLjc5MTk5NDIiLCIxLjQyNjg3NjY3RS00NCIpOworICBtYXRodGVzdCgyNTUsZGVmLCIxMjY2MDk4LjQ0IiwiLTI2NjEuNjQ5MDRFLTY0MjYwMTE0MiIsIjEyNjYwOTguNDQiLCIxMjY2MDk4LjQ0IiwiLTMuMzY5OTA5NzBFLTY0MjYwMTEzMyIsIi00Ljc1NjgxOTYzRSs2NDI2MDExNDQiLCIiLCIiLCI0LjkyNzE3MDM2RS0xOSIpOworICBtYXRodGVzdCgyNTYsZGVmLCIzLjkyNzM3NDYzRSs0ODI4NzM0ODMiLCItNjg1LjUyMjc0NyIsIjMuOTI3Mzc0NjNFKzQ4Mjg3MzQ4MyIsIjMuOTI3Mzc0NjNFKzQ4Mjg3MzQ4MyIsIi0yLjY5MjMwNDY0RSs0ODI4NzM0ODYiLCItNS43MjkwMjE2MUUrNDgyODczNDgwIiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDI1NyxkZWYsIjIyODI2NDk0LjEiLCI5ODYxODk0NzQuIiwiMS4wMDkwMTU5N0UrOSIsIi05NjMzNjI5ODAiLCIyLjI1MTEyNDgyRSsxNiIsIjAuMDIzMTQ2MTU0NyIsIjAiLCIyMjgyNjQ5NC4xIiwiIik7CisgIG1hdGh0ZXN0KDI1OCxkZWYsIi02NDczNDIuMzgwIiwiLTQ5ODgxNjM4NiIsIi00OTk0NjM3MjgiLCI0OTgxNjkwNDQiLCIzLjIyOTA0OTg2RSsxNCIsIjAuMDAxMjk3NzU2ODUiLCIwIiwiLTY0NzM0Mi4zODAiLCIiKTsKKyAgbWF0aHRlc3QoMjU5LGRlZiwiMzkzMDkyMzczLiIsIi0yNS43MjI2ODIyIiwiMzkzMDkyMzQ3IiwiMzkzMDkyMzk5IiwiLTEuMDExMTM5MDJFKzEwIiwiLTE1MjgxOTM1LjYiLCItMTUyODE5MzUiLCIxNS41OTM5NDMwIiwiMy40OTI1MjgzOUUtMjI0Iik7CisgIG1hdGh0ZXN0KDI2MCxkZWYsIjIuOTYyNTM0OTIiLCIyMC43NDQ0ODg4IiwiMjMuNzA3MDIzNyIsIi0xNy43ODE5NTM5IiwiNjEuNDU2MjcyNSIsIjAuMTQyODEwNjk4IiwiMCIsIjIuOTYyNTM0OTIiLCI4LjAzNDAyMjQ2RSs5Iik7CisgIG1hdGh0ZXN0KDI2MSxkZWYsIjUzNTUzLjM3NTBFKzM4Njk1NTQyMyIsIi03MzI0NzA4NzYiLCI1LjM1NTMzNzUwRSszODY5NTU0MjciLCI1LjM1NTMzNzUwRSszODY5NTU0MjciLCItMy45MjI2Mjg3NUUrMzg2OTU1NDM2IiwiLTcuMzExMzMxNjVFKzM4Njk1NTQxOCIsIiIsIiIsIiIpOworICBtYXRodGVzdCgyNjIsZGVmLCItNjk2NDUxLjQwNkUtMjg2NTM1OTE3IiwiLTczMDg2MDkwLjgiLCItNzMwODYwOTAuOCIsIjczMDg2MDkwLjgiLCI1LjA5MDA5MTA3RS0yODY1MzU5MDQiLCI5LjUyOTE5MjE5RS0yODY1MzU5MjAiLCIwIiwiLTYuOTY0NTE0MDZFLTI4NjUzNTkxMiIsIiIpOworICBtYXRodGVzdCgyNjMsZGVmLCIxNTUxLjI5OTU3IiwiLTU4MDM1ODYyMi5FKzExNzAxNzI2NSIsIi01LjgwMzU4NjIyRSsxMTcwMTcyNzMiLCI1LjgwMzU4NjIyRSsxMTcwMTcyNzMiLCItOS4wMDMxMDA4MUUrMTE3MDE3Mjc2IiwiLTIuNjczMDAxNjhFLTExNzAxNzI3MSIsIjAiLCIxNTUxLjI5OTU3IiwiNy4xNzUwNjcxMUUtMjAiKTsKKyAgbWF0aHRlc3QoMjY0LGRlZiwiLTIwNTEyMzAwNi5FLTIxMzc1Mjc5OSIsIi03ODYzODQ2OC42IiwiLTc4NjM4NDY4LjYiLCI3ODYzODQ2OC42IiwiMS42MTMwNTU5MUUtMjEzNzUyNzgzIiwiMi42MDg0MzA4M0UtMjEzNzUyNzk5IiwiMCIsIi0yLjA1MTIzMDA2RS0yMTM3NTI3OTEiLCIiKTsKKyAgbWF0aHRlc3QoMjY1LGRlZiwiNzc2MzIuODA3MyIsIi0zMzc4NTQyLjg4RSs2Nzc0NDEzMTkiLCItMy4zNzg1NDI4OEUrNjc3NDQxMzI1IiwiMy4zNzg1NDI4OEUrNjc3NDQxMzI1IiwiLTIuNjIyODU3NjhFKzY3NzQ0MTMzMCIsIi0yLjI5NzgxOTIxRS02Nzc0NDEzMjEiLCIwIiwiNzc2MzIuODA3MyIsIjIuMTM3MjkzMzFFLTE1Iik7CisgIG1hdGh0ZXN0KDI2NixkZWYsIjMwNjg5OTkuMzciLCIyLjIxMDA2MjEyIiwiMzA2OTAwMS41OCIsIjMwNjg5OTcuMTYiLCI2NzgyNjc5LjI1IiwiMTM4ODY0OC40NiIsIjEzODg2NDgiLCIxLjAyNzE4NjI0IiwiOS40MTg3NTcxM0UrMTIiKTsKKyAgbWF0aHRlc3QoMjY3LGRlZiwiNjI1NTI0Mjc0LiIsIjU1LjI0Njg2MjQiLCI2MjU1MjQzMjkiLCI2MjU1MjQyMTkiLCIzLjQ1NTgyNTM1RSsxMCIsIjExMzIyMzQ5LjMiLCIxMTMyMjM0OSIsIjE2Ljc1MjIyMjQiLCI2LjIxNDgyOTQzRSs0ODMiKTsKKyAgbWF0aHRlc3QoMjY4LGRlZiwiNjEyNjkxMzQuOSIsIi04NDU3NjEzMDMuIiwiLTc4NDQ5MjE2OCIsIjkwNzAzMDQzOCIsIi01LjE4MTkwNjM0RSsxNiIsIi0wLjA3MjQ0MjU4NDgiLCIwIiwiNjEyNjkxMzQuOSIsIiIpOworICBtYXRodGVzdCgyNjksZGVmLCItMjg0MC4xMjA5OSIsIi0yODU2Ljc2NzMxRS04Mjc0MzY1MCIsIi0yODQwLjEyMDk5IiwiLTI4NDAuMTIwOTkiLCI4LjExMzU2NDgwRS04Mjc0MzY0NCIsIjkuOTQxNzMwMjJFKzgyNzQzNjQ5IiwiIiwiIiwiLTQuMzY1MDUyNTRFLTExIik7CisgIG1hdGh0ZXN0KDI3MCxkZWYsIjguOTUzODc4MSIsIi03LjU2NjAzMzkxIiwiMS4zODc4NDQxOSIsIjE2LjUxOTkxMjAiLCItNjcuNzQ1MzQ1MyIsIi0xLjE4MzQzMDg3IiwiLTEiLCIxLjM4Nzg0NDE5IiwiMi40MjA1MzA2MUUtOCIpOworICBtYXRodGVzdCgyNzEsZGVmLCItNTYyMzM1NDcuMiIsIjUwOTc1MjUzMCIsIjQ1MzUxODk4MyIsIi01NjU5ODYwNzciLCItMi44NjY1MTkzMEUrMTYiLCItMC4xMTAzMTUzODYiLCIwIiwiLTU2MjMzNTQ3LjIiLCIiKTsKKyAgbWF0aHRlc3QoMjcyLGRlZiwiLTMxNjcuNDc4NTNFLTg1NDg1OTQ5NyIsIi0xMTA4NTIxMTUiLCItMTEwODUyMTE1IiwiMTEwODUyMTE1IiwiMy41MTEyMTY5NEUtODU0ODU5NDg2IiwiMi44NTczOTExNkUtODU0ODU5NTAyIiwiMCIsIi0zLjE2NzQ3ODUzRS04NTQ4NTk0OTQiLCIiKTsKKyAgbWF0aHRlc3QoMjczLGRlZiwiLTU2NTIuNTIwOTIiLCItNjMyMjQzMjQ0LiIsIi02MzIyNDg4OTciLCI2MzIyMzc1OTIiLCIzLjU3Mzc2ODE2RSsxMiIsIjAuMDAwMDA4OTQwNDIxMjMiLCIwIiwiLTU2NTIuNTIwOTIiLCIiKTsKKyAgbWF0aHRlc3QoMjc0LGRlZiwiLTk0Ni4wMDk5MjgiLCI4MjAwOTAuNjZFLTU4OTI3ODAxNSIsIi05NDYuMDA5OTI4IiwiLTk0Ni4wMDk5MjgiLCItNy43NTgxMzkwNkUtNTg5Mjc4MDA3IiwiLTEuMTUzNTQzMTFFKzU4OTI3ODAxMiIsIiIsIiIsIjYuNDE0NTQwNTNFKzIzIik7CisgIG1hdGh0ZXN0KDI3NSxkZWYsIi0zNjcuNzU3NzU4IiwiLTk1OS42MjYwMTYiLCItMTMyNy4zODM3NyIsIjU5MS44NjgyNTgiLCIzNTI5MDkuOTEyIiwiMC4zODMyMzAyOTIiLCIwIiwiLTM2Ny43NTc3NTgiLCIxLjE0OTgyMTk5RS0yNDYzIik7CisgIG1hdGh0ZXN0KDI3NixkZWYsIjgwOTkyNjcyMS5FLTc0NDYxMTU1NCIsIi02Ny42NTYwNTQ5IiwiLTY3LjY1NjA1NDkiLCI2Ny42NTYwNTQ5IiwiLTUuNDc5NjQ0NjdFLTc0NDYxMTU0NCIsIi0xLjE5NzEyMzc4RS03NDQ2MTE1NDciLCIwIiwiOC4wOTkyNjcyMUUtNzQ0NjExNTQ2IiwiIik7CisgIG1hdGh0ZXN0KDI3NyxkZWYsIi0xNzI1LjA4NTU1IiwiNzU1ODYuMzAzMSIsIjczODYxLjIxNzYiLCItNzczMTEuMzg4NyIsIi0xMzAzOTI4MzkiLCItMC4wMjI4MjI3MjY5IiwiMCIsIi0xNzI1LjA4NTU1IiwiMy43MDU0MDU4N0UrMjQ0NjU3Iik7CisgIG1hdGh0ZXN0KDI3OCxkZWYsIjI2NTkuODQxOTFFKzI5MzE0NDkyIiwiLTc0MzcyLjQ1NTFFKzUxODE5NjY4MCIsIi03LjQzNzI0NTUxRSs1MTgxOTY2ODQiLCI3LjQzNzI0NTUxRSs1MTgxOTY2ODQiLCItMS45NzgxODk3M0UrNTQ3NTExMTgwIiwiLTMuNTc2MzgwNEUtNDg4ODgyMTkwIiwiMCIsIjIuNjU5ODQxOTFFKzI5MzE0NDk1IiwiMS4wNjE3MTgxMUUtMjA1MjAxNDY4Iik7CisgIG1hdGh0ZXN0KDI3OSxkZWYsIi05MS4xNDMxMTEzIiwiMTIxNDc1MDcuMCIsIjEyMTQ3NDE1LjkiLCItMTIxNDc1OTguMSIsIi0xLjEwNzE2MTU4RSs5IiwiLTAuMDAwMDA3NTAzMDMwMTUiLCIwIiwiLTkxLjE0MzExMTMiLCItMS41MjQxNzAwNkUrMjM4MDU3NTkiKTsKKyAgbWF0aHRlc3QoMjgwLGRlZiwiLTExMzY3NzguOTFFKzY5Nzc4Mzg3OCIsIi04MDE1NTI1NjkuIiwiLTEuMTM2Nzc4OTFFKzY5Nzc4Mzg4NCIsIi0xLjEzNjc3ODkxRSs2OTc3ODM4ODQiLCI5LjExMTg4MDU2RSs2OTc3ODM4OTIiLCIxLjQxODIyMTI4RSs2OTc3ODM4NzUiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMjgxLGRlZiwiNzMxMjM3NzMuMEUrNDMzMzM0MTQ5IiwiNjMuMzU0ODkzMCIsIjcuMzEyMzc3MzBFKzQzMzMzNDE1NiIsIjcuMzEyMzc3MzBFKzQzMzMzNDE1NiIsIjQuNjMyNzQ4ODFFKzQzMzMzNDE1OCIsIjEuMTU0MTkyOThFKzQzMzMzNDE1NSIsIiIsIiIsIiIpOworICBtYXRodGVzdCgyODIsZGVmLCItOTc2NTQ4NC44IiwiNzk3OS45MDgwMkUtMjM0MDI5NzE1IiwiLTk3NjU0ODQuODAiLCItOTc2NTQ4NC44MCIsIi03Ljc5Mjc2NzA1RS0yMzQwMjk3MDUiLCItMS4yMjM3NTkwN0UrMjM0MDI5NzE4IiwiIiwiIiwiOC4yNzA4NTYxNEUrNTUiKTsKKyAgbWF0aHRlc3QoMjgzLGRlZiwiLTY5NTAxMDI4OCIsIi04LjI2NTgyODIwIiwiLTY5NTAxMDI5NiIsIi02OTUwMTAyODAiLCI1Ljc0NDgzNTY0RSs5IiwiODQwODIzNTMuNCIsIjg0MDgyMzUzIiwiLTMuNDUwMjQ1NDAiLCIxLjgzNjgzNDk1RS03MSIpOworICBtYXRodGVzdCgyODQsZGVmLCIyMzk3NTY0My4zRS0xNTU5NTUyNjQiLCItNTA1NTQ3LjY5MkUrMTM3MjU4OTQ4IiwiLTUuMDU1NDc2OTJFKzEzNzI1ODk1MyIsIjUuMDU1NDc2OTJFKzEzNzI1ODk1MyIsIi0xLjIxMjA4MzExRS0xODY5NjMwMyIsIi00Ljc0MjUwODdFLTI5MzIxNDIxMSIsIjAiLCIyLjM5NzU2NDMzRS0xNTU5NTUyNTciLCIxLjI2MjI1OTUyRSs3Nzk3NzYyODMiKTsKKyAgbWF0aHRlc3QoMjg1LGRlZiwiMjg2Mi45NTkyMSIsIi0zMjYwMTI0OC42RS02MDU4NjEzMzMiLCIyODYyLjk1OTIxIiwiMjg2Mi45NTkyMSIsIi05LjMzMzYwNDQ5RS02MDU4NjEzMjMiLCItOC43ODE3NDcxMkUrNjA1ODYxMzI4IiwiIiwiIiwiNC4yNjE0MjE3NUUtMTEiKTsKKyAgbWF0aHRlc3QoMjg2LGRlZiwiLTEzLjEzMzUxOEUrMjQ2MDkwNTE2IiwiLTguNzEyNjk5MjVFLTk0NTA5MjEwOCIsIi0xLjMxMzM1MTgwRSsyNDYwOTA1MTciLCItMS4zMTMzNTE4MEUrMjQ2MDkwNTE3IiwiMS4xNDQyODM5MkUtNjk5MDAxNTkwIiwiIiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDI4NyxkZWYsIi0zNDY3MS4yMjMyIiwiODE3NzEwLjc2MiIsIjc4MzAzOS41MzkiLCItODUyMzgxLjk4NSIsIi0yLjgzNTEwMzIzRSsxMCIsIi0wLjA0MjQwMDM1MDgiLCIwIiwiLTM0NjcxLjIyMzIiLCItNS4zMDc4ODgyOEUrMzcxMjM4MiIpOworICBtYXRodGVzdCgyODgsZGVmLCItMjI0NjQ3NjkiLCI2Mi40MzY2MDYwIiwiLTIyNDY0NzA2LjYiLCItMjI0NjQ4MzEuNCIsIi0xLjQwMjYyMzkzRSs5IiwiLTM1OTgwMS4yNTIiLCItMzU5ODAxIiwiLTE1LjcyNDU5NDAiLCI2LjIxMDQyNTM2RSs0NTUiKTsKKyAgbWF0aHRlc3QoMjg5LGRlZiwiLTk0NTguNjA4ODdFLTU2MzA1MTk2MyIsIjU2NzYwNTYuMDEiLCI1Njc2MDU2LjAxIiwiLTU2NzYwNTYuMDEiLCItNS4zNjg3NTkzN0UtNTYzMDUxOTUzIiwiLTEuNjY2NDA1MTNFLTU2MzA1MTk2NiIsIjAiLCItOS40NTg2MDg4N0UtNTYzMDUxOTYwIiwiIik7CisgIG1hdGh0ZXN0KDI5MCxkZWYsIi01OTEuOTI0MTIzRS05NTMzMTg3NCIsIi0xMzQuNTk2MTg4IiwiLTEzNC41OTYxODgiLCIxMzQuNTk2MTg4IiwiNy45NjcwNzMwNUUtOTUzMzE4NzAiLCI0LjM5Nzc3Nzc3RS05NTMzMTg3NCIsIjAiLCItNS45MTkyNDEyM0UtOTUzMzE4NzIiLCIiKTsKKyAgbWF0aHRlc3QoMjkxLGRlZiwiLTE4MjU2NjA4NS5FKzY4ODcwNjQ2IiwiLTk2MDM0NTk5My4iLCItMS44MjU2NjA4NUUrNjg4NzA2NTQiLCItMS44MjU2NjA4NUUrNjg4NzA2NTQiLCIxLjc1MzI2NjA4RSs2ODg3MDY2MyIsIjEuOTAxMDQ0OUUrNjg4NzA2NDUiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMjkyLGRlZiwiODIzMi41NDg5MyIsIi05OTgyMjAwNEUrODkxOTc5ODQ1IiwiLTkuOTgyMjAwNDBFKzg5MTk3OTg1MiIsIjkuOTgyMjAwNDBFKzg5MTk3OTg1MiIsIi04LjIxNzg5NTMyRSs4OTE5Nzk4NTYiLCItOC4yNDcyMjg2N0UtODkxOTc5ODUwIiwiMCIsIjgyMzIuNTQ4OTMiLCI2Ljk5Mjg5MTU2RS00MCIpOworICBtYXRodGVzdCgyOTMsZGVmLCItNDMzNi45NDMxNyIsIi04MTkzNzMuNjAxRSs1NjMyMzM0MzAiLCItOC4xOTM3MzYwMUUrNTYzMjMzNDM1IiwiOC4xOTM3MzYwMUUrNTYzMjMzNDM1IiwiMy41NTM1NzY3NEUrNTYzMjMzNDM5IiwiNS4yOTI5OTg0MUUtNTYzMjMzNDMzIiwiMCIsIi00MzM2Ljk0MzE3IiwiNy45ODk2OTQwNUUtMzAiKTsKKyAgbWF0aHRlc3QoMjk0LGRlZiwiLTIuMDkwNDQzNjJFLTg3NjUyNzkwOCIsIi02NTE1NDYzLjMzIiwiLTY1MTU0NjMuMzMiLCI2NTE1NDYzLjMzIiwiMS4zNjIwMjA4N0UtODc2NTI3OTAxIiwiMy4yMDg0MzQzM0UtODc2NTI3OTE1IiwiMCIsIi0yLjA5MDQ0MzYyRS04NzY1Mjc5MDgiLCIiKTsKKyAgbWF0aHRlc3QoMjk1LGRlZiwiLTE5NDM0My4zNDQiLCIxLjk1OTI5OTc3IiwiLTE5NDM0MS4zODUiLCItMTk0MzQ1LjMwMyIsIi0zODA3NzYuODY5IiwiLTk5MTkwLjIwNDEiLCItOTkxOTAiLCItMC4zOTk4MTM3MCIsIjMuNzc2OTMzNTRFKzEwIik7CisgIG1hdGh0ZXN0KDI5NixkZWYsIi0zMjYwMDIuOTI3IiwiNDIxNS45OTAzMCIsIi0zMjE3ODYuOTM3IiwiLTMzMDIxOC45MTciLCItMS4zNzQ0MjUxOEUrOSIsIi03Ny4zMjUzNTAzIiwiLTc3IiwiLTEzNzEuNjczOTAiLCI1LjUxODc1ODIxRSsyMzI0MyIpOworICBtYXRodGVzdCgyOTcsZGVmLCItMTIwMzcuODU5MEUrODc2NDI5MDQ0IiwiMzE0LjgxODI3IiwiLTEuMjAzNzg1OTBFKzg3NjQyOTA0OCIsIi0xLjIwMzc4NTkwRSs4NzY0MjkwNDgiLCItMy43ODk3Mzc5NEUrODc2NDI5MDUwIiwiLTMuODIzNzQ4NTRFKzg3NjQyOTA0NSIsIiIsIiIsIiIpOworICBtYXRodGVzdCgyOTgsZGVmLCIyMTAzNjA0NS40RS0xNjI4MDQ4MDkiLCItOTEuNzE0OTIxOSIsIi05MS43MTQ5MjE5IiwiOTEuNzE0OTIxOSIsIi0xLjkyOTMxOTI2RS0xNjI4MDQ4MDAiLCItMi4yOTM2MzM5RS0xNjI4MDQ4MDQiLCIwIiwiMi4xMDM2MDQ1NEUtMTYyODA0ODAyIiwiIik7CisgIG1hdGh0ZXN0KDI5OSxkZWYsIi05NDcwMTkuNTM0IiwiOTkxNi4yOTI4MCIsIi05MzcxMDMuMjQxIiwiLTk1NjkzNS44MjciLCItOS4zOTA5MjI5OUUrOSIsIi05NS41MDEzNjg2IiwiLTk1IiwiLTQ5NzEuNzE4MDAiLCIzLjc2MDI5MDIyRSs1OTI2MSIpOworICBtYXRodGVzdCgzMDAsZGVmLCItNTk4NS44NDEzNiIsIi0xMi40MDkwMTg0RS0xMjM2NDIwNCIsIi01OTg1Ljg0MTM2IiwiLTU5ODUuODQxMzYiLCI3LjQyNzg0MTU2RS0xMjM2NDIwMCIsIjQuODIzNzgzMTNFKzEyMzY0MjA2IiwiIiwiIiwiLTAuMDAwMTY3MDYwODkzIik7CisgIG1hdGh0ZXN0KDMwMSxkZWYsIi04NTM0NDM3OS40IiwiLTY3ODMuMDg2NjlFKzIxODg0MDIxNSIsIi02Ljc4MzA4NjY5RSsyMTg4NDAyMTgiLCI2Ljc4MzA4NjY5RSsyMTg4NDAyMTgiLCI1Ljc4ODk4MzI0RSsyMTg4NDAyMjYiLCIxLjI1ODE5Mzg1RS0yMTg4NDAyMTEiLCIwIiwiLTg1MzQ0Mzc5LjQiLCItMy4wMzIzMjM0N0UtNTYiKTsKKyAgbWF0aHRlc3QoMzAyLGRlZiwiLTk0LjE5NDcwNzBFLTkzODI1NzEwMyIsIjE1MDAzLjI0MCIsIjE1MDAzLjI0MDAiLCItMTUwMDMuMjQwMCIsIi0xLjQxMzIyNTgwRS05MzgyNTcwOTciLCItNi4yNzgyOTEwMkUtOTM4MjU3MTA2IiwiMCIsIi05LjQxOTQ3MDcwRS05MzgyNTcxMDIiLCIiKTsKKyAgbWF0aHRlc3QoMzAzLGRlZiwiLTQ4NDYyMzMuNiIsIi04Mjg5NzY5Ljc2IiwiLTEzMTM2MDAzLjQiLCIzNDQzNTM2LjE2IiwiNC4wMTc0MTYwN0UrMTMiLCIwLjU4NDYwNDEyNSIsIjAiLCItNDg0NjIzMy42IiwiNC4yNTA3NzUyNEUtNTU0MjA0NjUiKTsKKyAgbWF0aHRlc3QoMzA0LGRlZiwiNjcuOTE0NzE5OCIsIi0xMDgzNzM2NDUuRSsyOTE3MTU0MTUiLCItMS4wODM3MzY0NUUrMjkxNzE1NDIzIiwiMS4wODM3MzY0NUUrMjkxNzE1NDIzIiwiLTcuMzYwMTY1NzNFKzI5MTcxNTQyNCIsIi02LjI2NjcxOTE2RS0yOTE3MTU0MjIiLCIwIiwiNjcuOTE0NzE5OCIsIjAuMDE0NzI0MzQ4NSIpOworICBtYXRodGVzdCgzMDUsZGVmLCIxOTU4Ljc3OTk0IiwiNS41NzI4NTEzN0UrNjkwMTM3ODI2IiwiNS41NzI4NTEzN0UrNjkwMTM3ODI2IiwiLTUuNTcyODUxMzdFKzY5MDEzNzgyNiIsIjEuMDkxNTk4OTVFKzY5MDEzNzgzMCIsIjMuNTE0ODYxMjZFLTY5MDEzNzgyNCIsIjAiLCIxOTU4Ljc3OTk0IiwiNS42NDgyNDk2OEUrMTkiKTsKKyAgbWF0aHRlc3QoMzA2LGRlZiwiMjI3ODAzMTQuMyIsIjg4MDUyNzkuODMiLCIzMTU4NTU5NC4xIiwiMTM5NzUwMzQuNSIsIjIuMDA1ODcwNDJFKzE0IiwiMi41ODcxMTk4NiIsIjIiLCI1MTY5NzU0LjY0IiwiMi4zOTEzMjE2OUUrNjQ3ODUzNzMiKTsKKyAgbWF0aHRlc3QoMzA3LGRlZiwiNTk2NzQ1LjE4NCIsIjE5NzYwMjQyMy4iLCIxOTgxOTkxNjgiLCItMTk3MDA1Njc4IiwiMS4xNzkxODI5NEUrMTQiLCIwLjAwMzAxOTkyODQ4IiwiMCIsIjU5Njc0NS4xODQiLCIiKTsKKyAgbWF0aHRlc3QoMzA4LGRlZiwiMTcxLjM0MDQ5NyIsIi00ODAzNDkuOTI0IiwiLTQ4MDE3OC41ODQiLCI0ODA1MjEuMjY0IiwiLTgyMzAzMzk0LjciLCItMC4wMDAzNTY2OTkzMzIiLCIwIiwiMTcxLjM0MDQ5NyIsIjIuMTc5MTQxMDJFLTEwNzMwMzUiKTsKKyAgbWF0aHRlc3QoMzA5LGRlZiwiODI0LjY1NTU1IiwiLTM3OTI4Ny41MzAiLCItMzc4NDYyLjg3NSIsIjM4MDExMi4xODYiLCItMzEyNzgxNTY3IiwiLTAuMDAyMTc0MjIyNjgiLCIwIiwiODI0LjY1NTU1IiwiNi4zNTgyOTI1NkUtMTEwNjEwOCIpOworICBtYXRodGVzdCgzMTAsZGVmLCIxOS4zMTY0MDMxIiwiLTkyMDc2NDQuMjRFKzk4ODExNTA2OSIsIi05LjIwNzY0NDI0RSs5ODgxMTUwNzUiLCI5LjIwNzY0NDI0RSs5ODgxMTUwNzUiLCItMS43Nzg1ODU2OEUrOTg4MTE1MDc3IiwiLTIuMDk3ODY1OTJFLTk4ODExNTA3NSIsIjAiLCIxOS4zMTY0MDMxIiwiMi42NzA5MzcxMUUtMTIiKTsKKyAgbWF0aHRlc3QoMzExLGRlZiwiLTMxMjMuNzc2NDZFKzE3NzgxNDI2NSIsIjk3MzI4NDQzNS5FKzM4MzI1NjExMiIsIjkuNzMyODQ0MzVFKzM4MzI1NjEyMCIsIi05LjczMjg0NDM1RSszODMyNTYxMjAiLCItMy4wNDAzMjMwMUUrNTYxMDcwMzg5IiwiLTMuMjA5NTIwNjJFLTIwNTQ0MTg1MyIsIjAiLCItMy4xMjM3NzY0NkUrMTc3ODE0MjY4IiwiIik7CisgIG1hdGh0ZXN0KDMxMixkZWYsIi04NTAuMTIzOTE1RSs2NjI5NTUzMDkiLCI2Nzc0ODQ5LjgxRS04NDY1NzY4NjUiLCItOC41MDEyMzkxNUUrNjYyOTU1MzExIiwiLTguNTAxMjM5MTVFKzY2Mjk1NTMxMSIsIi01Ljc1OTQ2MTg0RS0xODM2MjE1NDciLCIiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMzEzLGRlZiwiLTIzMzQ5Ljc3MjQiLCIyOTIxLjM1MzU1IiwiLTIwNDI4LjQxODkiLCItMjYyNzEuMTI2MCIsIi02ODIxMjk0MC41IiwiLTcuOTkyNzkyMzgiLCItNyIsIi0yOTAwLjI5NzU1IiwiLTUuNjcwNTU0NkUrMTI3NTkiKTsKKyAgbWF0aHRlc3QoMzE0LGRlZiwiMTg4ODY2NTMuMyIsIjU2ODcwNzQ3Ni4iLCI1ODc1OTQxMjkiLCItNTQ5ODIwODIzIiwiMS4wNzQwOTgwOUUrMTYiLCIwLjAzMzIwOTc4NTUiLCIwIiwiMTg4ODY2NTMuMyIsIiIpOworICBtYXRodGVzdCgzMTUsZGVmLCItOTA1NTI4MTguMCIsIi01NDIuMDM1NjNFLTk4NjYwNjg3OCIsIi05MDU1MjgxOC4wIiwiLTkwNTUyODE4LjAiLCI0LjkwODI4NTM4RS05ODY2MDY4NjgiLCIxLjY3MDYwNjM4RSs5ODY2MDY4ODMiLCIiLCIiLCItMS42NDI0NDI0MUUtNDAiKTsKKyAgbWF0aHRlc3QoMzE2LGRlZiwiNDE1MDExMjYuMUUrNzkxODM4NzY1IiwiLTY5LjY2NTE2NzVFKzIwNDI2ODM0OCIsIjQuMTUwMTEyNjFFKzc5MTgzODc3MiIsIjQuMTUwMTEyNjFFKzc5MTgzODc3MiIsIi0yLjg5MTE4MjkwRSs5OTYxMDcxMjIiLCItNS45NTcyMjc2M0UrNTg3NTcwNDIyIiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDMxNyxkZWYsIjc2NzgzMTkzLjNFLTI3MTQ4ODE1NCIsIjM3NjUuMDE4MjlFLTUyMDM0NjAwMyIsIjcuNjc4MzE5MzNFLTI3MTQ4ODE0NyIsIjcuNjc4MzE5MzNFLTI3MTQ4ODE0NyIsIjIuODkwOTAxMjdFLTc5MTgzNDE0NiIsIjIuMDM5Mzg0MzRFKzI0ODg1Nzg1MyIsIiIsIiIsIiIpOworICBtYXRodGVzdCgzMTgsZGVmLCI0MTkyLjk5MjgiLCI5ODc4MjIwMDdFLTE0NjU2MDk4OSIsIjQxOTIuOTkyODAiLCI0MTkyLjk5MjgwIiwiNC4xNDE5MzA1NkUtMTQ2NTYwOTc3IiwiNC4yNDQ2ODQ1NEUrMTQ2NTYwOTgzIiwiIiwiIiwiMS42Nzk3MzY1M0UrMzYiKTsKKyAgbWF0aHRlc3QoMzE5LGRlZiwiLTg5MTg0NS42MjkiLCI0ODI3Nzk1NS4iLCI0NzM4NjEwOS40IiwiLTQ5MTY5ODAwLjYiLCItNC4zMDU2NDgzMUUrMTMiLCItMC4wMTg0NzMxNDQzIiwiMCIsIi04OTE4NDUuNjI5IiwiLTYuMzI5NjQxNDdFKzI4NzI2NzgxNyIpOworICBtYXRodGVzdCgzMjAsZGVmLCIzMzQuOTAxMTc2IiwiLTc2MDkyOTYuNTVFKzQ0NzM0MDIyOCIsIi03LjYwOTI5NjU1RSs0NDczNDAyMzQiLCI3LjYwOTI5NjU1RSs0NDczNDAyMzQiLCItMi41NDgzNjIzNkUrNDQ3MzQwMjM3IiwiLTQuNDAxMjEwNzNFLTQ0NzM0MDIzMyIsIjAiLCIzMzQuOTAxMTc2IiwiNi4zMTkyNjU3NUUtMjEiKTsKKyAgbWF0aHRlc3QoMzIxLGRlZiwiNC40OTg2ODYzNiIsIi0zNDE4ODA4OTZFLTQ0NzI1MTg3MyIsIjQuNDk4Njg2MzYiLCI0LjQ5ODY4NjM2IiwiLTEuNTM4MDE0OTJFLTQ0NzI1MTg2NCIsIi0xLjMxNTg2MzYzRSs0NDcyNTE4NjUiLCIiLCIiLCIwLjAxMDk4MzU1MyIpOworICBtYXRodGVzdCgzMjIsZGVmLCI4MDc2MTUuNTgiLCItMzE0Mjg2NDgwIiwiLTMxMzQ3ODg2NSIsIjMxNTA5NDA5NiIsIi0yLjUzODIyNjU4RSsxNCIsIi0wLjAwMjU2OTY3OTY4IiwiMCIsIjgwNzYxNS41OCIsIiIpOworICBtYXRodGVzdCgzMjMsZGVmLCItMzcuNzQ1Nzk1NCIsIjUzMjc3LjgxMjlFLTg1OTIyNTUzOCIsIi0zNy43NDU3OTU0IiwiLTM3Ljc0NTc5NTQiLCItMi4wMTEwMTM0M0UtODU5MjI1NTMyIiwiLTcuMDg0NzExODhFKzg1OTIyNTUzNCIsIiIsIiIsIi03NjYyMDEzNC4xIik7CisgIG1hdGh0ZXN0KDMyNCxkZWYsIi0yODY3MTA4MS4iLCI5OC44ODE5NjIzIiwiLTI4NjcwOTgyLjEiLCItMjg2NzExNzkuOSIsIi0yLjgzNTA1Mjc1RSs5IiwiLTI4OTk1Mi41ODkiLCItMjg5OTUyIiwiLTU4LjI2NzE5MDQiLCItMS45MzYyNTU2NkUrNzM4Iik7CisgIG1hdGh0ZXN0KDMyNSxkZWYsIi04OTc1Mi4yMTA2RS00Njk0OTY4OTYiLCI5OS45ODc5OTYxIiwiOTkuOTg3OTk2MSIsIi05OS45ODc5OTYxIiwiLTguOTc0MTQzNjhFLTQ2OTQ5Njg5MCIsIi04Ljk3NjI5ODU3RS00Njk0OTY4OTQiLCIwIiwiLTguOTc1MjIxMDZFLTQ2OTQ5Njg5MiIsIiIpOworICBtYXRodGVzdCgzMjYsZGVmLCItNDk3OTgzNTY3RS0xMzUzODA1MiIsIjM5LjQ1Nzg3NDIiLCIzOS40NTc4NzQyIiwiLTM5LjQ1Nzg3NDIiLCItMS45NjQ5MzcyOUUtMTM1MzgwNDIiLCItMS4yNjIwNjM4NUUtMTM1MzgwNDUiLCIwIiwiLTQuOTc5ODM1NjdFLTEzNTM4MDQ0IiwiLTEuNTUzNzY1NDNFLTUyNzk4MzY4OSIpOworICBtYXRodGVzdCgzMjcsZGVmLCI4NDU3MzkyMjFFLTY1NDIwMjU2NSIsIi0zMzMxMy4xNTUxIiwiLTMzMzEzLjE1NTEiLCIzMzMxMy4xNTUxIiwiLTIuODE3NDI0MThFLTY1NDIwMjU1MiIsIi0yLjUzODc1NDQ5RS02NTQyMDI1NjEiLCIwIiwiOC40NTczOTIyMUUtNjU0MjAyNTU3IiwiIik7CisgIG1hdGh0ZXN0KDMyOCxkZWYsIjc0Mi4zMzIwNjdFKzUzNzgyNzg0MyIsIi00NTMyLjcwMDIzRS04NTUzODc0MTQiLCI3LjQyMzMyMDY3RSs1Mzc4Mjc4NDUiLCI3LjQyMzMyMDY3RSs1Mzc4Mjc4NDUiLCItMy4zNjQ3Njg3M0UtMzE3NTU5NTY1IiwiIiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDMyOSxkZWYsIi04OTMuNDg2NTQiLCI2NzAzODk5NjAiLCI2NzAzODkwNjciLCItNjcwMzkwODUzIiwiLTUuOTg5ODQ0MDZFKzExIiwiLTAuMDAwMDAxMzMyNzg2MjgiLCIwIiwiLTg5My40ODY1NCIsIiIpOworICBtYXRodGVzdCgzMzAsZGVmLCIxLjM3Njk3MTYyIiwiLTkxNS43Mzc0NzRFLTM1MTU3ODcyNCIsIjEuMzc2OTcxNjIiLCIxLjM3Njk3MTYyIiwiLTEuMjYwOTQ0NTFFLTM1MTU3ODcyMSIsIi0xLjUwMzY3NTA4RSszNTE1Nzg3MjEiLCIiLCIiLCIwLjA1NjE5MjA3ODQiKTsKKyAgbWF0aHRlc3QoMzMxLGRlZiwiLTY1LjI4Mzk4MDhFKzU1MDI4ODQwMyIsIi0xMjEzODkuMzA2IiwiLTYuNTI4Mzk4MDhFKzU1MDI4ODQwNCIsIi02LjUyODM5ODA4RSs1NTAyODg0MDQiLCI3LjkyNDc3NzEyRSs1NTAyODg0MDkiLCI1LjM3ODA2Njg5RSs1NTAyODgzOTkiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMzMyLGRlZiwiLTMwMzQ2NjAzLkUrMzQ2MDY3MzkwIiwiNzkyNjYxLjU0NCIsIi0zLjAzNDY2MDMwRSszNDYwNjczOTciLCItMy4wMzQ2NjAzMEUrMzQ2MDY3Mzk3IiwiLTIuNDA1NDU4NTJFKzM0NjA2NzQwMyIsIi0zLjgyODQ0Mzk2RSszNDYwNjczOTEiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMzMzLGRlZiwiLTYxMTcwLjcwNjUiLCItNDUzNzMxMTMxLiIsIi00NTM3OTIzMDIiLCI0NTM2Njk5NjAiLCIyLjc3NTUwNTM4RSsxMyIsIjAuMDAwMTM0ODE3MDgxIiwiMCIsIi02MTE3MC43MDY1IiwiIik7CisgIG1hdGh0ZXN0KDMzNCxkZWYsIjY1NjkuNTExMzMiLCIxMy44NzA2MzUxRSszOTk0MzQ5MTQiLCIxLjM4NzA2MzUxRSszOTk0MzQ5MTUiLCItMS4zODcwNjM1MUUrMzk5NDM0OTE1IiwiOS4xMTIzMjk0NEUrMzk5NDM0OTE4IiwiNC43MzYyNzI5MUUtMzk5NDM0OTEyIiwiMCIsIjY1NjkuNTExMzMiLCI2NTY5LjUxMTMzIik7CisgIG1hdGh0ZXN0KDMzNSxkZWYsIjMwMDcwMzkyNS4iLCItMzE1NjczNi44IiwiMjk3NTQ3MTg4IiwiMzAzODYwNjYyIiwiLTkuNDkyNDMxNDZFKzE0IiwiLTk1LjI1NzgzODciLCItOTUiLCI4MTM5MjkuMCIsIjQuMTg2MDkxMTRFLTI2NzYzMjU2Iik7CisgIG1hdGh0ZXN0KDMzNixkZWYsIjE5MjEzODIxNkUrMzUzMDExNTkyIiwiLTQ3My4wODA2MzMiLCIxLjkyMTM4MjE2RSszNTMwMTE2MDAiLCIxLjkyMTM4MjE2RSszNTMwMTE2MDAiLCItOS4wODk2ODY4OEUrMzUzMDExNjAyIiwiLTQuMDYxNDI2MzdFKzM1MzAxMTU5NyIsIiIsIiIsIiIpOworICBtYXRodGVzdCgzMzcsZGVmLCI4NjA3LjY0Nzk0IiwiLTM0NzQwLjMzNjciLCItMjYxMzIuNjg4OCIsIjQzMzQ3Ljk4NDYiLCItMjk5MDMyNTg4IiwiLTAuMjQ3NzcwOTk5IiwiMCIsIjg2MDcuNjQ3OTQiLCIxLjI5NjA0NTE5RS0xMzY2OTgiKTsKKyAgbWF0aHRlc3QoMzM4LGRlZiwiLTY3OTEzLjgyNDEiLCItOTM4MTUuNDIyOSIsIi0xNjE3MjkuMjQ3IiwiMjU5MDEuNTk4OCIsIjYuMzcxMzY0MTNFKzkiLCIwLjcyMzkwODk0OCIsIjAiLCItNjc5MTMuODI0MSIsIi02Ljk2MzU1MjAzRS00NTMzMTEiKTsKKyAgbWF0aHRlc3QoMzM5LGRlZiwiMzQuNTU1OTQ1NSIsIi05OTg3OTkzOTguIiwiLTk5ODc5OTM2NCIsIjk5ODc5OTQzMyIsIi0zLjQ1MTQ0NTc2RSsxMCIsIi0zLjQ1OTc0ODMzRS04IiwiMCIsIjM0LjU1NTk0NTUiLCIiKTsKKyAgbWF0aHRlc3QoMzQwLGRlZiwiMzg3OTk1LjMyOCIsIjk5MDE5OTU0My5FLTEyNDYyMzYwNyIsIjM4Nzk5NS4zMjgiLCIzODc5OTUuMzI4IiwiMy44NDE5Mjc5NkUtMTI0NjIzNTkzIiwiMy45MTgzNTQ5NUUrMTI0NjIzNjAzIiwiIiwiIiwiNy43MzE1MjEzOEUrNTUiKTsKKyAgbWF0aHRlc3QoMzQxLGRlZiwiLTQ3MS4wOTE2NkUtODM1MjE5MTkiLCItNDQxMjIyMzY4IiwiLTQ0MTIyMjM2OCIsIjQ0MTIyMjM2OCIsIjIuMDc4NTYxNzhFLTgzNTIxOTA4IiwiMS4wNjc2OTY2OUUtODM1MjE5MjUiLCIwIiwiLTQuNzEwOTE2NkUtODM1MjE5MTciLCIiKTsKKyAgbWF0aHRlc3QoMzQyLGRlZiwiLTk3ODM0LjM4NTgiLCI3MDc3OTc4OS44RSs1MDIxNjYwNjUiLCI3LjA3Nzk3ODk4RSs1MDIxNjYwNzIiLCItNy4wNzc5Nzg5OEUrNTAyMTY2MDcyIiwiLTYuOTI0Njk3MjZFKzUwMjE2NjA3NyIsIi0xLjM4MjIzNjE3RS01MDIxNjYwNjgiLCIwIiwiLTk3ODM0LjM4NTgiLCItOC41NzkwNzg4NkUrMzQiKTsKKyAgbWF0aHRlc3QoMzQzLGRlZiwiNzczMjMzMS4wNiIsIi05NTI3MTkuNDgyRSsxMTUzMjU1MDUiLCItOS41MjcxOTQ4MkUrMTE1MzI1NTEwIiwiOS41MjcxOTQ4MkUrMTE1MzI1NTEwIiwiLTcuMzY2NzQyNDRFKzExNTMyNTUxNyIsIi04LjExNjA2MjcxRS0xMTUzMjU1MDUiLCIwIiwiNzczMjMzMS4wNiIsIjEuMzA4ODY3MjRFLTY5Iik7CisgIG1hdGh0ZXN0KDM0NCxkZWYsIjIzLjI3NDU1NDciLCIyLjIzMTk0MjQ1RS0yMjEwNjI1OTIiLCIyMy4yNzQ1NTQ3IiwiMjMuMjc0NTU0NyIsIjUuMTk0NzQ2NjZFLTIyMTA2MjU5MSIsIjEuMDQyNzkzNjhFKzIyMTA2MjU5MyIsIiIsIiIsIjU0MS43MDQ4OTYiKTsKKyAgbWF0aHRlc3QoMzQ1LGRlZiwiNjcxLjA4MzM2M0UtMjE4MzI0MjA1IiwiLTc4NzE1MDAzMSIsIi03ODcxNTAwMzEiLCI3ODcxNTAwMzEiLCItNS4yODI0MzI5MEUtMjE4MzI0MTk0IiwiLTguNTI1NDgyMjdFLTIxODMyNDIxMiIsIjAiLCI2LjcxMDgzMzYzRS0yMTgzMjQyMDMiLCIiKTsKKyAgbWF0aHRlc3QoMzQ2LGRlZiwiMzY1MTY3LjgwIiwiLTgwMjYzLjY1MTYiLCIyODQ5MDQuMTQ4IiwiNDQ1NDMxLjQ1MiIsIi0yLjkzMDk3MDExRSsxMCIsIi00LjU0OTYwMzYyIiwiLTQiLCI0NDExMy4xOTM2IiwiMS4yNzA1MjIyN0UtNDQ2NDY4Iik7CisgIG1hdGh0ZXN0KDM0NyxkZWYsIi0xLjQzMjk3NjA0RS02NTEyOTc4MCIsIjU2LjU5ODczM0UtMTM1NTgxOTQyIiwiLTEuNDMyOTc2MDRFLTY1MTI5NzgwIiwiLTEuNDMyOTc2MDRFLTY1MTI5NzgwIiwiLTguMTEwNDYyODNFLTIwMDcxMTcyMSIsIi0yLjUzMTgxNjQ2RSs3MDQ1MjE2MCIsIiIsIiIsIjguNjU4MzE4ODFFLTM5MDc3ODY4MCIpOworICBtYXRodGVzdCgzNDgsZGVmLCI0MTY5OTg4NTkuIiwiMjYwLjIyMDMyM0UtMzQ5Mjg1NTkzIiwiNDE2OTk4ODU5IiwiNDE2OTk4ODU5IiwiMS4wODUxMTU3OEUtMzQ5Mjg1NTgyIiwiMS42MDI0ODM4M0UrMzQ5Mjg1NTk5IiwiIiwiIiwiNy4yNTExMTE3OEUrMjUiKTsKKyAgbWF0aHRlc3QoMzQ5LGRlZiwiNzI2Ny4xNzYxMUUrODYyNjMwNjA3IiwiNDAyMS41Njg2MSIsIjcuMjY3MTc2MTFFKzg2MjYzMDYxMCIsIjcuMjY3MTc2MTFFKzg2MjYzMDYxMCIsIjIuOTIyNTQ0NzNFKzg2MjYzMDYxNCIsIjEuODA3MDUwMTRFKzg2MjYzMDYwNyIsIiIsIiIsIiIpOworICBtYXRodGVzdCgzNTAsZGVmLCIxMi4yMTQyNDM0RSs1OTM5MDg3NDAiLCI1LjI3MjM2NTcxRS0zOTYwNTA3NDgiLCIxLjIyMTQyNDM0RSs1OTM5MDg3NDEiLCIxLjIyMTQyNDM0RSs1OTM5MDg3NDEiLCI2LjQzOTc5NTgxRSsxOTc4NTc5OTMiLCIyLjMxNjY1MzNFKzk4OTk1OTQ4OCIsIiIsIiIsIiIpOworICBtYXRodGVzdCgzNTEsZGVmLCItMjguNTkxOTMyIiwiLTEuNzkxNTMyMzhFLTgxNzA2NDU3NiIsIi0yOC41OTE5MzIwIiwiLTI4LjU5MTkzMjAiLCI1LjEyMjMzNzIwRS04MTcwNjQ1NzUiLCIxLjU5NTk0ODM4RSs4MTcwNjQ1NzciLCIiLCIiLCIwLjAwMTIyMzI0MzcyIik7CisgIG1hdGh0ZXN0KDM1MixkZWYsIjU5MC44NDk2NjYiLCI3NTM0MjQuMzA2RSsyNzcyMzI3NDQiLCI3LjUzNDI0MzA2RSsyNzcyMzI3NDkiLCItNy41MzQyNDMwNkUrMjc3MjMyNzQ5IiwiNC40NTE2MDUwMEUrMjc3MjMyNzUyIiwiNy44NDIxOTAxNEUtMjc3MjMyNzQ4IiwiMCIsIjU5MC44NDk2NjYiLCIxLjQ4NTMwNjA3RSsyMiIpOworICBtYXRodGVzdCgzNTMsZGVmLCIxLjcyNzA2MjgiLCItMTMyNTAyNi42NyIsIi0xMzI1MDI0Ljk0IiwiMTMyNTAyOC40MCIsIi0yMjg4NDA0LjI3IiwiLTAuMDAwMDAxMzAzNDE3MzkiLCIwIiwiMS43MjcwNjI4IiwiMi4wOTI2MDAzNkUtMzE0NDQwIik7CisgIG1hdGh0ZXN0KDM1NCxkZWYsIjMzNDAyMTE4LiIsIi01NTM0LjgzNzQ1IiwiMzMzOTY1ODMuMiIsIjMzNDA3NjUyLjgiLCItMS44NDg3NTI5NEUrMTEiLCItNjAzNC44ODY5IiwiLTYwMzQiLCI0OTA4LjgyNjcwIiwiOC4xNDQ3MzkxM0UtNDE2NDUiKTsKKyAgbWF0aHRlc3QoMzU1LGRlZiwiLTQzOTg0Mi41MDYiLCItNzc1MTEwLjgwNyIsIi0xMjE0OTUzLjMxIiwiMzM1MjY4LjMwMSIsIjMuNDA5MjY2ODBFKzExIiwiMC41Njc0NTc1ODQiLCIwIiwiLTQzOTg0Mi41MDYiLCItMS44NDY3ODQ3MkUtNDM3NDE4MiIpOworICBtYXRodGVzdCgzNTYsZGVmLCItMjQ4NjY0Ljc3OSIsIi00NDA4OTAuNDRFKzY2NjQzMzk0NCIsIi00LjQwODkwNDQwRSs2NjY0MzM5NDkiLCI0LjQwODkwNDQwRSs2NjY0MzM5NDkiLCIxLjA5NjMzOTI0RSs2NjY0MzM5NTUiLCI1LjY0MDA1ODMxRS02NjY0MzM5NDUiLCIwIiwiLTI0ODY2NC43NzkiLCIyLjYxNTQyODc3RS0yMiIpOworICBtYXRodGVzdCgzNTcsZGVmLCItMTQxNjEuOTE0MiIsIjgzMDYuNDk0OTMiLCItNTg1NS40MTkzIiwiLTIyNDY4LjQwOTEiLCItMTE3NjM1ODY5IiwiLTEuNzA0OTIwNTkiLCItMSIsIi01ODU1LjQxOTI3IiwiMS42NTU3MzM3MkUrMzQ0NzkiKTsKKyAgbWF0aHRlc3QoMzU4LGRlZiwiLTY0MTcyMjcuMTMiLCIxNjY3OS44ODQyIiwiLTY0MDA1NDcuMjUiLCItNjQzMzkwNy4wMSIsIi0xLjA3MDM4NjA1RSsxMSIsIi0zODQuNzI4NTE4IiwiLTM4NCIsIi0xMjE1MS41OTcyIiwiMy41ODc2Nzk3OEUrMTEzNTQ2Iik7CisgIG1hdGh0ZXN0KDM1OSxkZWYsIjUxNDgyNTAyNC4iLCItMjUuMDQ0NjM0NUUtMTAzODA5NDU3IiwiNTE0ODI1MDI0IiwiNTE0ODI1MDI0IiwiLTEuMjg5MzYwNDZFLTEwMzgwOTQ0NyIsIi0yLjA1NTYzMDAyRSsxMDM4MDk0NjQiLCIiLCIiLCI3LjMyODYwMDYyRS0yNyIpOworICBtYXRodGVzdCgzNjAsZGVmLCI1MjU5NDgxOTYiLCIyMTk0NTAzOTAiLCI3NDUzOTg1ODYiLCIzMDY0OTc4MDYiLCIxLjE1NDE5NTM3RSsxNyIsIjIuMzk2NjYxMDIiLCIyIiwiODcwNDc0MTYiLCIiKTsKKyAgbWF0aHRlc3QoMzYxLGRlZiwiLTYzODUwOS4xODEiLCI0NTU4MDE4OS4wRSsyNjkyMTI1NTkiLCI0LjU1ODAxODkwRSsyNjkyMTI1NjYiLCItNC41NTgwMTg5MEUrMjY5MjEyNTY2IiwiLTIuOTEwMzM2OTFFKzI2OTIxMjU3MiIsIi0xLjQwMDg0ODAzRS0yNjkyMTI1NjEiLCIwIiwiLTYzODUwOS4xODEiLCItMS4wNjEyOTQwNUUrMjkiKTsKKyAgbWF0aHRlc3QoMzYyLGRlZiwiMzMwNTkwNDIyIiwiNzQuMzU5OTI4RSs1MzUzNzc5NjUiLCI3LjQzNTk5MjgwRSs1MzUzNzc5NjYiLCItNy40MzU5OTI4MEUrNTM1Mzc3OTY2IiwiMi40NTgyNjgwMEUrNTM1Mzc3OTc1IiwiNC40NDU4MTQxOEUtNTM1Mzc3OTU5IiwiMCIsIjMzMDU5MDQyMiIsIjQuMzE1NTA3NDJFKzU5Iik7CisgIG1hdGh0ZXN0KDM2MyxkZWYsIi0zLjQ4NTkzODcxRS05NDA1Nzk5MDQiLCItMjAyNjUuOTY0MEUtMzIyOTg4OTg3IiwiLTIuMDI2NTk2NDBFLTMyMjk4ODk4MyIsIjIuMDI2NTk2NDBFLTMyMjk4ODk4MyIsIiIsIjEuNzIwMDk1MTlFLTYxNzU5MDkyMSIsIjAiLCItMy40ODU5Mzg3MUUtOTQwNTc5OTA0IiwiIik7CisgIG1hdGh0ZXN0KDM2NCxkZWYsIi0zMjgxMDM0ODAuIiwiLTcyMS45NDkzNzFFLTkyMzkzODY2NSIsIi0zMjgxMDM0ODAiLCItMzI4MTAzNDgwIiwiMi4zNjg3NDEwMUUtOTIzOTM4NjU0IiwiNC41NDQ2ODgyMkUrOTIzOTM4NjcwIiwiIiwiIiwiLTIuNDQzMDAzOEUtNjAiKTsKKyAgbWF0aHRlc3QoMzY1LGRlZiwiLTE4NTcuMDE0NDgiLCIxOTA4MTU3OC4xIiwiMTkwNzk3MjEuMSIsIi0xOTA4MzQzNS4xIiwiLTMuNTQzNDc2NjhFKzEwIiwiLTAuMDAwMDk3MzE5NzUzNyIsIjAiLCItMTg1Ny4wMTQ0OCIsIjguNDQzOTcwODdFKzYyMzc0MTUzIik7CisgIG1hdGh0ZXN0KDM2NixkZWYsIjM0Ny4yODcyMEUrMTQ1OTMwNzcxIiwiLTYyODIxLjk5MDZFLTY3NjU2NDEwNiIsIjMuNDcyODcyMDBFKzE0NTkzMDc3MyIsIjMuNDcyODcyMDBFKzE0NTkzMDc3MyIsIi0yLjE4MTcyNzMyRS01MzA2MzMzMjgiLCItNS41MjgxMTUxOEUrODIyNDk0ODc0IiwiIiwiIiwiNS42OTk5MDEzNUUtODc1NTg0NjQyIik7CisgIG1hdGh0ZXN0KDM2NyxkZWYsIi02NDMuMjExMzk5RSs0NDE4MDcwMDMiLCItNTA3MzM0MTkuMiIsIi02LjQzMjExMzk5RSs0NDE4MDcwMDUiLCItNi40MzIxMTM5OUUrNDQxODA3MDA1IiwiMy4yNjMyMzEzNUUrNDQxODA3MDEzIiwiMS4yNjc4MjU4NEUrNDQxODA2OTk4IiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDM2OCxkZWYsIi01Mzk5MTY2MS40RS04NDMzMzk1NTQiLCIyMDcxOC43MzQ2IiwiMjA3MTguNzM0NiIsIi0yMDcxOC43MzQ2IiwiLTEuMTE4NjM4OTBFLTg0MzMzOTU0MiIsIi0yLjYwNTkzNDMxRS04NDMzMzk1NTEiLCIwIiwiLTUuMzk5MTY2MTRFLTg0MzMzOTU0NyIsIiIpOworICBtYXRodGVzdCgzNjksZGVmLCItOTAwMTgxNDI0IiwiLTEwNTc2Mzk4Mi4iLCItMS4wMDU5NDU0MUUrOSIsIi03OTQ0MTc0NDIiLCI5LjUyMDY3NzE5RSsxNiIsIjguNTExMjI4NTYiLCI4IiwiLTU0MDY5NTY4IiwiMS4zMjYyNzA2MUUtOTQ3MDQ1NjAyIik7CisgIG1hdGh0ZXN0KDM3MCxkZWYsIjk0MjE4Ljc0NjJFKzU2MzIzMzk1MSIsIjE5MjYyLjYzODJFKzc2NTI2Mzg5MCIsIjEuOTI2MjYzODJFKzc2NTI2Mzg5NCIsIi0xLjkyNjI2MzgyRSs3NjUyNjM4OTQiLCIiLCI0Ljg5MTI2OTA2RS0yMDIwMjk5MzkiLCIwIiwiOS40MjE4NzQ2MkUrNTYzMjMzOTU1IiwiIik7CisgIG1hdGh0ZXN0KDM3MSxkZWYsIjI4NTQ5LjI3MUUrOTIxMzMxODI4IiwiLTIxNTA1OTAuNDAiLCIyLjg1NDkyNzEwRSs5MjEzMzE4MzIiLCIyLjg1NDkyNzEwRSs5MjEzMzE4MzIiLCItNi4xMzk3Nzg4MUUrOTIxMzMxODM4IiwiLTEuMzI3NTA4NTNFKzkyMTMzMTgyNiIsIiIsIiIsIiIpOworICBtYXRodGVzdCgzNzIsZGVmLCI4MTAuNzA4MEUrNzc5NjI1NzYzIiwiNTk1Ny45NDA0NCIsIjguMTA3MDgwMDBFKzc3OTYyNTc2NSIsIjguMTA3MDgwMDBFKzc3OTYyNTc2NSIsIjQuODMwMTQ5OThFKzc3OTYyNTc2OSIsIjEuMzYwNzE4NTRFKzc3OTYyNTc2MiIsIiIsIiIsIiIpOworICBtYXRodGVzdCgzNzMsZGVmLCItMjMuNzM1NzU0OUUrNzcxMTY5MDgiLCIzNTEuMTAwNjQ5RSs4NjQzNDgwMjIiLCIzLjUxMTAwNjQ5RSs4NjQzNDgwMjQiLCItMy41MTEwMDY0OUUrODY0MzQ4MDI0IiwiLTguMzMzNjM4OTVFKzk0MTQ2NDkzMyIsIi02Ljc2MDM4NDhFLTc4NzIzMTExNiIsIjAiLCItMi4zNzM1NzU0OUUrNzcxMTY5MDkiLCIzLjE3NDAzODUzRSszMDg0Njc2MzciKTsKKyAgbWF0aHRlc3QoMzc0LGRlZiwiNDAyMTYxMDIuMkUrMjkyNzI0NTQ0IiwiNjYxLjAyNTk2MiIsIjQuMDIxNjEwMjJFKzI5MjcyNDU1MSIsIjQuMDIxNjEwMjJFKzI5MjcyNDU1MSIsIjIuNjU4Mzg4NzZFKzI5MjcyNDU1NCIsIjYuMDgzODkxNDhFKzI5MjcyNDU0OCIsIiIsIiIsIiIpOworICBtYXRodGVzdCgzNzUsZGVmLCIyMjc4NTAyNC4zRSs3ODM3MTkxNjgiLCIzOTkuNTA1OTg5RSsxMzc0Nzg2NjYiLCIyLjI3ODUwMjQzRSs3ODM3MTkxNzUiLCIyLjI3ODUwMjQzRSs3ODM3MTkxNzUiLCI5LjEwMjc1MzY3RSs5MjExOTc4NDMiLCI1LjcwMzI5OTgxRSs2NDYyNDA1MDYiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMzc2LGRlZiwiNTE1LjU5MTgxOUUrODIxMzcxMzY0IiwiLTY5MjEzNzkxNC5FLTE0OTQ5ODY5MCIsIjUuMTU1OTE4MTlFKzgyMTM3MTM2NiIsIjUuMTU1OTE4MTlFKzgyMTM3MTM2NiIsIi0zLjU2ODYwNjQ2RSs2NzE4NzI2ODUiLCItNy40NDkyNjQyMUUrOTcwODcwMDQ3IiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDM3NyxkZWYsIi01MzY4ODMwNzJFKzQ3NzkxMTI1MSIsIjYyNDk5Ni4zMDEiLCItNS4zNjg4MzA3MkUrNDc3OTExMjU5IiwiLTUuMzY4ODMwNzJFKzQ3NzkxMTI1OSIsIi0zLjM1NTQ5OTM0RSs0Nzc5MTEyNjUiLCItOC41OTAxNzk5OUUrNDc3OTExMjUzIiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDM3OCxkZWYsIi0zOTk0OTIuOTE0RS0zMzQzNjkxOTIiLCI1MjAyMTE5Ljg3RSs0NDI0NDIyNTgiLCI1LjIwMjExOTg3RSs0NDI0NDIyNjQiLCItNS4yMDIxMTk4N0UrNDQyNDQyMjY0IiwiLTIuMDc4MjEwMDNFKzEwODA3MzA3OCIsIi03LjY3OTQyNTM5RS03NzY4MTE0NTIiLCIwIiwiLTMuOTk0OTI5MTRFLTMzNDM2OTE4NyIsIiIpOworICBtYXRodGVzdCgzNzksZGVmLCI3NjIuMDcxMTg0IiwiOTg1MTYzMS4zNyIsIjk4NTIzOTMuNDQiLCItOTg1MDg2OS4zMCIsIjcuNTA3NjQ0MzhFKzkiLCIwLjAwMDA3NzM1NDgyMTMiLCIwIiwiNzYyLjA3MTE4NCIsIjQuMDIxOTg0MzZFKzI4MzkyMzU2Iik7CisgIG1hdGh0ZXN0KDM4MCxkZWYsIjU2MjYuMTI0NzEiLCI3Mjk4OTgxOC4zIiwiNzI5OTU0NDQuNCIsIi03Mjk4NDE5Mi4yIiwiNC4xMDY0OTgyMEUrMTEiLCIwLjAwMDA3NzA4MDk1MjQiLCIwIiwiNTYyNi4xMjQ3MSIsIjEuNzk4MTQ3NTdFKzI3MzcyNzA5OCIpOworICBtYXRodGVzdCgzODEsZGVmLCItNDcyMDcyNjAuMSIsIi0yMDczLjMxNTIiLCItNDcyMDkzMzMuNCIsIi00NzIwNTE4Ni44IiwiOS43ODc1NTI5OUUrMTAiLCIyMjc2OC45NzQxIiwiMjI3NjgiLCItMjAxOS42MjY0IiwiLTYuMDIyMzgzMTlFLTE1OTA5Iik7CisgIG1hdGh0ZXN0KDM4MixkZWYsIjIwNy43NDA4NjAiLCItNTEuMDM5MDA5MCIsIjE1Ni43MDE4NTEiLCIyNTguNzc5ODY5IiwiLTEwNjAyLjg4NzYiLCItNC4wNzAyMzY5NCIsIi00IiwiMy41ODQ4MjQwIiwiNi40MDI5NzUxNUUtMTE5Iik7CisgIG1hdGh0ZXN0KDM4MyxkZWYsIi01NzIuODEyNDY0RS03NDU5MzQwMjEiLCItMTgyODA1ODcyLkUrNjA0NTA4NjgxIiwiLTEuODI4MDU4NzJFKzYwNDUwODY4OSIsIjEuODI4MDU4NzJFKzYwNDUwODY4OSIsIjEuMDQ3MTM0ODJFLTE0MTQyNTMyOSIsIiIsIjAiLCItNS43MjgxMjQ2NEUtNzQ1OTM0MDE5IiwiIik7CisgIG1hdGh0ZXN0KDM4NCxkZWYsIi02NDE4NTA0RSszNTMxNDA3IiwiODQ1OTQxNi4xIiwiLTYuNDE4NTA0MDBFKzM1MzE0MTMiLCItNi40MTg1MDQwMEUrMzUzMTQxMyIsIi01LjQyOTY3OTYxRSszNTMxNDIwIiwiLTcuNTg3NDA3ODRFKzM1MzE0MDYiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMzg1LGRlZiwiMjgwNjg5LjUzMSIsIi0xMjgyMTI1NDMiLCItMTI3OTMxODU0IiwiMTI4NDkzMjMzIiwiLTMuNTk4NzkxODZFKzEzIiwiLTAuMDAyMTg5MjUxNzMiLCIwIiwiMjgwNjg5LjUzMSIsIjEuNDIxNzM4MDlFLTY5ODUzMDkzOCIpOworICBtYXRodGVzdCgzODYsZGVmLCIxNS44MDM1NTFFLTc4MzQyMjc5MyIsIjIzOTEwODAzOEUtNDg5MTg2MzA4IiwiMi4zOTEwODAzOEUtNDg5MTg2MzAwIiwiLTIuMzkxMDgwMzhFLTQ4OTE4NjMwMCIsIiIsIjYuNjA5Mzc2NzJFLTI5NDIzNjQ5MyIsIjAiLCIxLjU4MDM1NTFFLTc4MzQyMjc5MiIsIiIpOworICBtYXRodGVzdCgzODcsZGVmLCIyNi41MTU5MjIiLCItOTQxODI0Mi45NkUtMTA1NDgxNjI4IiwiMjYuNTE1OTIyMCIsIjI2LjUxNTkyMjAiLCItMi40OTczMzM5NkUtMTA1NDgxNjIwIiwiLTIuODE1Mzc4ODVFKzEwNTQ4MTYyMiIsIiIsIiIsIjEuNTQzMjYxMDhFLTEzIik7CisgIG1hdGh0ZXN0KDM4OCxkZWYsIi04OC4xMDk0NTU3IiwiLTU0MDI5OTM0LjEiLCItNTQwMzAwMjIuMiIsIjU0MDI5ODQ2LjAiLCI0Ljc2MDU0ODA5RSs5IiwiMC4wMDAwMDE2MzA3NTI2IiwiMCIsIi04OC4xMDk0NTU3IiwiNS4wNTI4OTgyNkUtMTA1MDg5NDM5Iik7CisgIG1hdGh0ZXN0KDM4OSxkZWYsIjY3NzAuNjg2MDJFLTQ5ODQyMDM5NyIsIi02LjExMjQ4OTA4RS03Mjk2MTY5MDgiLCI2Ljc3MDY4NjAyRS00OTg0MjAzOTQiLCI2Ljc3MDY4NjAyRS00OTg0MjAzOTQiLCIiLCItMS4xMDc2ODA2N0UrMjMxMTk2NTE0IiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDM5MCxkZWYsIi04OTI5NzM4MTguRS03ODE5MDQ0NDEiLCI1NTUyMDEyOTkuIiwiNTU1MjAxMjk5IiwiLTU1NTIwMTI5OSIsIi00Ljk1NzgwMjI0RS03ODE5MDQ0MjQiLCItMS42MDgzNzg0N0UtNzgxOTA0NDQxIiwiMCIsIi04LjkyOTczODE4RS03ODE5MDQ0MzMiLCIiKTsKKyAgbWF0aHRlc3QoMzkxLGRlZiwiNjcwMTc1ODAyRSsxMzU0MzA2ODAiLCIyNzM1NTE5NS40IiwiNi43MDE3NTgwMkUrMTM1NDMwNjg4IiwiNi43MDE3NTgwMkUrMTM1NDMwNjg4IiwiMS44MzMyNzkwMEUrMTM1NDMwNjk2IiwiMi40NDk5MDMxOEUrMTM1NDMwNjgxIiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDM5MixkZWYsIi00NDA5NTAuMjYiLCIyMDUuNDc3NDY5RS02NzczNDU1NjEiLCItNDQwOTUwLjI2MCIsIi00NDA5NTAuMjYwIiwiLTkuMDYwNTM0MzRFLTY3NzM0NTU1NCIsIi0yLjE0NTk3ODY0RSs2NzczNDU1NjQiLCIiLCIiLCIxLjk0NDM3MTMyRSsxMSIpOworICBtYXRodGVzdCgzOTMsZGVmLCItOC4yMzM1Nzc5IiwiNTczNjY1MDEwRSs3NDI3MjIwNzUiLCI1LjczNjY1MDEwRSs3NDI3MjIwODMiLCItNS43MzY2NTAxMEUrNzQyNzIyMDgzIiwiLTQuNzIzMzE1NTVFKzc0MjcyMjA4NCIsIi0xLjQzNTI1ODg2RS03NDI3MjIwODMiLCIwIiwiLTguMjMzNTc3OSIsIjMxMTU1Mi43NTMiKTsKKyAgbWF0aHRlc3QoMzk0LGRlZiwiNDUyOTQzLjg2MyIsIjcwMjIuMjM2MjkiLCI0NTk5NjYuMDk5IiwiNDQ1OTIxLjYyNyIsIjMuMTgwNjc4ODNFKzkiLCI2NC41MDEzNzAzIiwiNjQiLCIzNTIwLjc0MDQ0IiwiNS41NDE1ODk3NkUrMzk3MTYiKTsKKyAgbWF0aHRlc3QoMzk1LGRlZiwiNjI4NzQuMTA3OSIsIi01MjcxOTY1NC4xIiwiLTUyNjU2NzgwLjAiLCI1Mjc4MjUyOC4yIiwiLTMuMzE0NzAxMjJFKzEyIiwiLTAuMDAxMTkyNjEyMyIsIjAiLCI2Mjg3NC4xMDc5IiwiMS4xODgxOTkzNkUtMjUyOTczNzc1Iik7CisgIG1hdGh0ZXN0KDM5NixkZWYsIi03NDI4LjQxNzQxRSs2MDk3NzIwMzciLCItNDYwMjQ4MTkuMyIsIi03LjQyODQxNzQxRSs2MDk3NzIwNDAiLCItNy40Mjg0MTc0MUUrNjA5NzcyMDQwIiwiMy40MTg5MTU2OUUrNjA5NzcyMDQ4IiwiMS42MTQwMDI1MUUrNjA5NzcyMDMzIiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDM5NyxkZWYsIjIuMjc5NTkyOTciLCI0MTkzNy4wMTkiLCI0MTkzOS4yOTg2IiwiLTQxOTM0LjczOTQiLCI5NTU5OS4zMzM3IiwiMC4wMDAwNTQzNTc1MzQ4IiwiMCIsIjIuMjc5NTkyOTciLCIyLjg5NzEyNDIzRSsxNTAwNyIpOworICBtYXRodGVzdCgzOTgsZGVmLCI1MDg2OTI0MDhFLTY3MTk2Nzc4MiIsIjg0OTE5ODkuMjAiLCI4NDkxOTg5LjIwIiwiLTg0OTE5ODkuMjAiLCI0LjMxOTgxMDQzRS02NzE5Njc3NjciLCI1Ljk5MDI2MjA3RS02NzE5Njc3ODEiLCIwIiwiNS4wODY5MjQwOEUtNjcxOTY3Nzc0IiwiIik7CisgIG1hdGh0ZXN0KDM5OSxkZWYsIjk0MC41MzM3MDVFLTM3OTMxMDQyMSIsIi00LjAxMTc2OTYxRSs0NjQ2MjAwMzciLCItNC4wMTE3Njk2MUUrNDY0NjIwMDM3IiwiNC4wMTE3Njk2MUUrNDY0NjIwMDM3IiwiLTMuNzczMjA0NTNFKzg1MzA5NjE5IiwiLTIuMzQ0NDM1OTlFLTg0MzkzMDQ1NiIsIjAiLCI5LjQwNTMzNzA1RS0zNzkzMTA0MTkiLCIiKTsKKyAgbWF0aHRlc3QoNDAwLGRlZiwiOTcuMDY0OTY1MiIsIi05Mi40NDg1NjQ5RS0xNTE5ODkwOTgiLCI5Ny4wNjQ5NjUyIiwiOTcuMDY0OTY1MiIsIi04Ljk3MzUxNjczRS0xNTE5ODkwOTUiLCItMS4wNDk5MzQ4RSsxNTE5ODkwOTgiLCIiLCIiLCIxLjMwNzQ4NzI4RS0xOCIpOworICBtYXRodGVzdCg0MDEsZGVmLCIyOTc1NDQuNTM2RSszNjAyNzk0NzMiLCI4LjgwMjc1MDA3IiwiMi45NzU0NDUzNkUrMzYwMjc5NDc4IiwiMi45NzU0NDUzNkUrMzYwMjc5NDc4IiwiMi42MTkyMTAxOUUrMzYwMjc5NDc5IiwiMy4zODAxMzE1OUUrMzYwMjc5NDc3IiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDQwMixkZWYsIi0yODg2MTAyOC4iLCI4MjgxOC44MjBFKzEzODM2ODc1OCIsIjguMjgxODgyMDBFKzEzODM2ODc2MiIsIi04LjI4MTg4MjAwRSsxMzgzNjg3NjIiLCItMi4zOTAyMzYyOEUrMTM4MzY4NzcwIiwiLTMuNDg0ODM5MzJFLTEzODM2ODc1NiIsIjAiLCItMjg4NjEwMjgiLCI0LjgxMzg3MDEzRSs1OSIpOworICBtYXRodGVzdCg0MDMsZGVmLCIzNi4yNDk2MjM4RSs2ODgyODAzOSIsIjQ5MjQzLjAwIiwiMy42MjQ5NjIzOEUrNjg4MjgwNDAiLCIzLjYyNDk2MjM4RSs2ODgyODA0MCIsIjEuNzg1MDQwMjJFKzY4ODI4MDQ1IiwiNy4zNjEzNzU5OUUrNjg4MjgwMzUiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoNDA0LGRlZiwiMjIuNDQ3ODI4RS00NzYwMTQ2ODMiLCItNTYwNjcuNTUyMCIsIi01NjA2Ny41NTIwIiwiNTYwNjcuNTUyMCIsIi0xLjI1ODU5NDc2RS00NzYwMTQ2NzciLCItNC4wMDM3MTEwOUUtNDc2MDE0Njg3IiwiMCIsIjIuMjQ0NzgyOEUtNDc2MDE0NjgyIiwiIik7CisgIG1hdGh0ZXN0KDQwNSxkZWYsIjI4MjY4OC43OTFFKzc1MDExOTUyIiwiNS45OTc4OTA1MSIsIjIuODI2ODg3OTFFKzc1MDExOTU3IiwiMi44MjY4ODc5MUUrNzUwMTE5NTciLCIxLjY5NTUzNjQyRSs3NTAxMTk1OCIsIjQuNzEzMTM2OUUrNzUwMTE5NTYiLCIiLCIiLCI1LjEwMzMwNTA3RSs0NTAwNzE3NDQiKTsKKyAgbWF0aHRlc3QoNDA2LGRlZiwiLTk4MS44NjAzMTBFLTczNzM4NzAwMiIsIi05OTQwNDYyODkiLCItOTk0MDQ2Mjg5IiwiOTk0MDQ2Mjg5IiwiOS43NjAxNDU5N0UtNzM3Mzg2OTkxIiwiOS44Nzc0MTAzNUUtNzM3Mzg3MDA5IiwiMCIsIi05LjgxODYwMzEwRS03MzczODcwMDAiLCIiKTsKKyAgbWF0aHRlc3QoNDA3LGRlZiwiLTcwMi45MTIxMCIsIi02NDQ0OTAzLjU1IiwiLTY0NDU2MDYuNDYiLCI2NDQ0MjAwLjY0IiwiNC41MzAyMDA2OUUrOSIsIjAuMDAwMTA5MDY0Nzk3IiwiMCIsIi03MDIuOTEyMTAiLCIxLjcwODY2NzAzRS0xODM0ODAwNCIpOworICBtYXRodGVzdCg0MDgsZGVmLCI5NzI0NTY3MjBFLTE3NTM2ODIzIiwiMTYzNzEuMjU5MCIsIjE2MzcxLjI1OTAiLCItMTYzNzEuMjU5MCIsIjEuNTkyMDM0MDhFLTE3NTM2ODEwIiwiNS45NDAwMjQwNEUtMTc1MzY4MTkiLCIwIiwiOS43MjQ1NjcyMEUtMTc1MzY4MTUiLCIiKTsKKyAgbWF0aHRlc3QoNDA5LGRlZiwiNzE0NzEuMjA0NSIsIi03NDMwMzI3OC40IiwiLTc0MjMxODA3LjIiLCI3NDM3NDc0OS42IiwiLTUuMzEwNTQ0ODFFKzEyIiwiLTAuMDAwOTYxODg0OTQiLCIwIiwiNzE0NzEuMjA0NSIsIjIuMTQ1MzUzNzRFLTM2MDY3Nzg1MyIpOworICBtYXRodGVzdCg0MTAsZGVmLCI2NDMuMTAzOTUxRSs0Mzk3MDg0NDEiLCI3ODgyNTE5MjUuIiwiNi40MzEwMzk1MUUrNDM5NzA4NDQzIiwiNi40MzEwMzk1MUUrNDM5NzA4NDQzIiwiNS4wNjkyNzkyN0UrNDM5NzA4NDUyIiwiOC4xNTg2MDkzM0UrNDM5NzA4NDM0IiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDQxMSxkZWYsIjQuMzA4Mzg2NjMiLCItNy40MzExMDgyNyIsIi0zLjEyMjcyMTY0IiwiMTEuNzM5NDk0OSIsIi0zMi4wMTYwODc1IiwiLTAuNTc5Nzc3MTMxIiwiMCIsIjQuMzA4Mzg2NjMiLCIwLjAwMDAzNjI5MDg2NDUiKTsKKyAgbWF0aHRlc3QoNDEyLGRlZiwiODIzLjY3ODAyNSIsIi01MTMuNTgxODQwRS0zMjQ0NTMxNDEiLCI4MjMuNjc4MDI1IiwiODIzLjY3ODAyNSIsIi00LjIzMDI2MDc2RS0zMjQ0NTMxMzYiLCItMS42MDM3OTExOEUrMzI0NDUzMTQxIiwiIiwiIiwiMi42Mzc2MjIyOEUtMTUiKTsKKyAgbWF0aHRlc3QoNDEzLGRlZiwiNDQ2MS44MTE2MiIsIjMuMjIwODE2ODAiLCI0NDY1LjAzMjQ0IiwiNDQ1OC41OTA4MCIsIjE0MzcwLjY3NzgiLCIxMzg1LjMwNDM4IiwiMTM4NSIsIjAuOTgwMzUyMDAiLCI4Ljg4MjQ2ODhFKzEwIik7CisgIG1hdGh0ZXN0KDQxNCxkZWYsIi00NDU4NTI3LjEwIiwiLTk5MDcyNjA1IiwiLTEwMzUzMTEzMiIsIjk0NjE0MDc3LjkiLCI0LjQxNzE3ODk0RSsxNCIsIjAuMDQ1MDAyNjIzMSIsIjAiLCItNDQ1ODUyNy4xMCIsIi02LjIzOTI4MDk5RS02NTg3NTI3MTUiKTsKKyAgbWF0aHRlc3QoNDE1LGRlZiwiLTU3Nzk2NDYxOCIsIjQ4NzQyNDM2OC4iLCItOTA1NDAyNTAiLCItMS4wNjUzODg5OUUrOSIsIi0yLjgxNzE0MDM5RSsxNyIsIi0xLjE4NTc1MjQxIiwiLTEiLCItOTA1NDAyNTAiLCIiKTsKKyAgbWF0aHRlc3QoNDE2LGRlZiwiLTg2Ny4wMzYxODQiLCItNTcuMTc2ODYwOCIsIi05MjQuMjEzMDQ1IiwiLTgwOS44NTkzMjMiLCI0OTU3NC40MDcyIiwiMTUuMTY0MTA5NiIsIjE1IiwiLTkuMzgzMjcyMCIsIi0zLjQwMzEyODM3RS0xNjgiKTsKKyAgbWF0aHRlc3QoNDE3LGRlZiwiNzcxODcxOTIxRS0zMzA1MDQ3NzAiLCI1LjM0Mjg1MjM2IiwiNS4zNDI4NTIzNiIsIi01LjM0Mjg1MjM2IiwiNC4xMjM5OTc3MUUtMzMwNTA0NzYxIiwiMS40NDQ2ODEzNkUtMzMwNTA0NzYyIiwiMCIsIjcuNzE4NzE5MjFFLTMzMDUwNDc2MiIsIiIpOworICBtYXRodGVzdCg0MTgsZGVmLCItMzM4NjgzLjA2MkUtNzI4Nzc3NTE4IiwiMTY2NDQxOTMxIiwiMTY2NDQxOTMxIiwiLTE2NjQ0MTkzMSIsIi01LjYzNzEwNjI4RS03Mjg3Nzc1MDUiLCItMi4wMzQ4NDIxOEUtNzI4Nzc3NTIxIiwiMCIsIi0zLjM4NjgzMDYyRS03Mjg3Nzc1MTMiLCIiKTsKKyAgbWF0aHRlc3QoNDE5LGRlZiwiLTUxMjU2ODc0MyIsIi00MTYzNzY4ODcuRS05NjU5NDUyOTUiLCItNTEyNTY4NzQzIiwiLTUxMjU2ODc0MyIsIjIuMTM0MjE3NzhFLTk2NTk0NTI3OCIsIjEuMjMxMDIxMTJFKzk2NTk0NTI5NSIsIiIsIiIsIjEuNDQ4NzQzNThFLTM1Iik7CisgIG1hdGh0ZXN0KDQyMCxkZWYsIjc0NDcxODEuOTkiLCI1MzE4NDM4LjUyIiwiMTI3NjU2MjAuNSIsIjIxMjg3NDMuNDciLCIzLjk2MDczNzk2RSsxMyIsIjEuNDAwMjU3MjMiLCIxIiwiMjEyODc0My40NyIsIjEuMjE2MzQ3ODJFKzM2NTQ4MjcwIik7CisgIG1hdGh0ZXN0KDQyMSxkZWYsIjU0Nzg5LjgyMDciLCI5MzE2NTQzNS4yIiwiOTMyMjAyMjUuMCIsIi05MzExMDY0NS40IiwiNS4xMDQ1MTc0OUUrMTIiLCIwLjAwMDU4ODA5MTcxNiIsIjAiLCI1NDc4OS44MjA3IiwiMy44MDc2OTgyNUUrNDQxNDgzMDM1Iik7CisgIG1hdGh0ZXN0KDQyMixkZWYsIjQxNDg4LjU5NjAiLCIxNDYuNzk3MDk0IiwiNDE2MzUuMzkzMSIsIjQxMzQxLjc5ODkiLCI2MDkwNDA1LjMzIiwiMjgyLjYyNTQ1OSIsIjI4MiIsIjkxLjgxNTQ5MiIsIjYuODQ3MzgxNTNFKzY3OCIpOworICBtYXRodGVzdCg0MjMsZGVmLCI3ODU3NDEuNjYzRSs1Njc1NDUyOSIsIi00NjEuNTMxNzMyIiwiNy44NTc0MTY2M0UrNTY3NTQ1MzQiLCI3Ljg1NzQxNjYzRSs1Njc1NDUzNCIsIi0zLjYyNjQ0NzExRSs1Njc1NDUzNyIsIi0xLjcwMjQ2NTA5RSs1Njc1NDUzMiIsIiIsIiIsIiIpOworICBtYXRodGVzdCg0MjQsZGVmLCItNC45NTQzNjc4NiIsIi0zMTMyLjQyMzMiLCItMzEzNy4zNzc2NyIsIjMxMjcuNDY4OTMiLCIxNTUxOS4xNzczIiwiMC4wMDE1ODE2NDA2IiwiMCIsIi00Ljk1NDM2Nzg2IiwiMS45ODA2MjQyMkUtMjE3NyIpOworICBtYXRodGVzdCg0MjUsZGVmLCI3NzMyMS44NDc4RSs0MDQ2MjY4NzQiLCI4Mi40Nzk3Njg4IiwiNy43MzIxODQ3OEUrNDA0NjI2ODc4IiwiNy43MzIxODQ3OEUrNDA0NjI2ODc4IiwiNi4zNzc0ODgxM0UrNDA0NjI2ODgwIiwiOS4zNzQ2NDQxRSs0MDQ2MjY4NzYiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoNDI2LGRlZiwiLTcuOTkzMDc3MjUiLCItMjkxNTMuNzI3MyIsIi0yOTE2MS43MjA0IiwiMjkxNDUuNzM0MiIsIjIzMzAyNy45OTQiLCIwLjAwMDI3NDE2OTk5NCIsIjAiLCItNy45OTMwNzcyNSIsIjEuODg2ODgwMjhFLTI2MzE4Iik7CisgIG1hdGh0ZXN0KDQyNyxkZWYsIi02MS42MzM3NDAxRSs0NzQ5OTk1MTciLCI1MjU0Ljg3MDkyIiwiLTYuMTYzMzc0MDFFKzQ3NDk5OTUxOCIsIi02LjE2MzM3NDAxRSs0NzQ5OTk1MTgiLCItMy4yMzg3NzM0OUUrNDc0OTk5NTIyIiwiLTEuMTcyODg3OEUrNDc0OTk5NTE1IiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDQyOCxkZWYsIi0xNi40MDQzMDg4IiwiMzUuMDA2NDgxMiIsIjE4LjYwMjE3MjQiLCItNTEuNDEwNzkwMCIsIi01NzQuMjU3MTI4IiwiLTAuNDY4NjA3NzYyIiwiMCIsIi0xNi40MDQzMDg4IiwiLTMuMzM4MzE4NDNFKzQyIik7CisgIG1hdGh0ZXN0KDQyOSxkZWYsIi04LjQxMTU2NTIwIiwiLTU2NTA4OTU4LjkiLCItNTY1MDg5NjcuMyIsIjU2NTA4OTUwLjUiLCI0NzUzMjg3OTIiLCIxLjQ4ODUzNjU3RS03IiwiMCIsIi04LjQxMTU2NTIwIiwiLTguODYzNjU0NThFLTUyMjYzODI3Iik7CisgIG1hdGh0ZXN0KDQzMCxkZWYsIi0zNjAxNjUuNzlFKzUwMzU1OTgzNSIsIi0xOTY2ODguNTE1IiwiLTMuNjAxNjU3OTBFKzUwMzU1OTg0MCIsIi0zLjYwMTY1NzkwRSs1MDM1NTk4NDAiLCI3LjA4NDA0NzQ0RSs1MDM1NTk4NDUiLCIxLjgzMTE0ODA1RSs1MDM1NTk4MzUiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoNDMxLGRlZiwiLTY1MzIzNjQ4MC5FKzU2NTY0ODQ5NSIsIi05MzAuNDQ1Mjc0IiwiLTYuNTMyMzY0ODBFKzU2NTY0ODUwMyIsIi02LjUzMjM2NDgwRSs1NjU2NDg1MDMiLCI2LjA3ODAwNzk2RSs1NjU2NDg1MDYiLCI3LjAyMDY4Njc0RSs1NjU2NDg1MDAiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoNDMyLGRlZiwiLTMuNzMzNDI5MDMiLCI4NTUuMDI5Mjg5IiwiODUxLjI5NTg2MCIsIi04NTguNzYyNzE4IiwiLTMxOTIuMTkxMTciLCItMC4wMDQzNjY0MzQwOCIsIjAiLCItMy43MzM0MjkwMyIsIi0xLjQxOTg4OTYxRSs0ODkiKTsKKyAgbWF0aHRlc3QoNDMzLGRlZiwiLTUuMTQ4OTA1MzJFKzU2MjA0ODAxMSIsIjEwODQ3MTI3LjhFLTM5MDkxODkxMCIsIi01LjE0ODkwNTMyRSs1NjIwNDgwMTEiLCItNS4xNDg5MDUzMkUrNTYyMDQ4MDExIiwiLTUuNTg1MDgzNDBFKzE3MTEyOTEwOCIsIi00Ljc0Njc5MTQyRSs5NTI5NjY5MTQiLCIiLCIiLCItNS4xNDg5MDUzMkUrNTYyMDQ4MDExIik7CisgIG1hdGh0ZXN0KDQzNCxkZWYsIjY1MzMxMTkwNyIsIi04MTAuMDM2OTY1RSs3NDQ1Mzc4MjMiLCItOC4xMDAzNjk2NUUrNzQ0NTM3ODI1IiwiOC4xMDAzNjk2NUUrNzQ0NTM3ODI1IiwiLTUuMjkyMDY3OTRFKzc0NDUzNzgzNCIsIi04LjA2NTIxMTA0RS03NDQ1Mzc4MTgiLCIwIiwiNjUzMzExOTA3IiwiMy4wMTMyNTE3MUUtNzEiKTsKKyAgbWF0aHRlc3QoNDM1LGRlZiwiLTEuMzE1NTc5MDciLCI5OC45MTM5MzAwRS01NzkyODE4MDIiLCItMS4zMTU1NzkwNyIsIi0xLjMxNTU3OTA3IiwiLTEuMzAxMjkwOTZFLTU3OTI4MTgwMCIsIi0xLjMzMDAyNDA2RSs1NzkyODE4MDAiLCIiLCIiLCIxNS41Mjk5MzIiKTsKKyAgbWF0aHRlc3QoNDM2LGRlZiwiLTg3NTE5MjM4OSIsIi03MjA3MTU2NS42IiwiLTk0NzI2Mzk1NSIsIi04MDMxMjA4MjMiLCI2LjMwNzY0ODU3RSsxNiIsIjEyLjE0MzM3OTciLCIxMiIsIi0xMDMzMzYwMS44IiwiMS4yNTU2NDQwOEUtNjQ0NDcxNDA1Iik7CisgIG1hdGh0ZXN0KDQzNyxkZWYsIi03MjgzODA3OC44IiwiLTM5MS4zOTg0MjMiLCItNzI4Mzg0NzAuMiIsIi03MjgzNzY4Ny40IiwiMi44NTA4NzA5MkUrMTAiLCIxODYwOTcuMDE3IiwiMTg2MDk3IiwiLTYuNDc0OTY5IiwiLTYuNTc0MDU3RS0zMDc1Iik7CisgIG1hdGh0ZXN0KDQzOCxkZWYsIjI5MTg2NTYwLjkiLCItNzkuNzQxOTk4OCIsIjI5MTg2NDgxLjIiLCIyOTE4NjY0MC42IiwiLTIuMzI3Mzk0NzBFKzkiLCItMzY2MDEyLjQwNyIsIi0zNjYwMTIiLCIzMi40MzUyMTQ0IiwiNi4xMDA1MDg2OUUtNTk4Iik7CisgIG1hdGh0ZXN0KDQzOSxkZWYsIi0zMjk4MDE2NjBFLTczMDI0OTQ2NSIsIi02NDg5LjkyNTYiLCItNjQ4OS45MjU2MCIsIjY0ODkuOTI1NjAiLCIyLjE0MDM4ODI0RS03MzAyNDk0NTMiLCI1LjA4MTc0NzkzRS03MzAyNDk0NjEiLCIwIiwiLTMuMjk4MDE2NjBFLTczMDI0OTQ1NyIsIiIpOworICBtYXRodGVzdCg0NDAsZGVmLCI5MS44NDI5MTE3RSsxMDMxNjQ4ODMiLCI3MTMxNDU1LjE2IiwiOS4xODQyOTExN0UrMTAzMTY0ODg0IiwiOS4xODQyOTExN0UrMTAzMTY0ODg0IiwiNi41NDk3MzYwN0UrMTAzMTY0ODkxIiwiMS4yODc4NTY1NEUrMTAzMTY0ODc4IiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDQ0MSxkZWYsIjM5NDM4NjYuMzhFKzE1MDg1NTExMyIsIi0zMTkyNzAwNy4zIiwiMy45NDM4NjYzOEUrMTUwODU1MTE5IiwiMy45NDM4NjYzOEUrMTUwODU1MTE5IiwiLTEuMjU5MTU4NTFFKzE1MDg1NTEyNyIsIi0xLjIzNTI3NTk0RSsxNTA4NTUxMTIiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoNDQyLGRlZiwiLTcwMDIuMDQ2OEUtNzk1OTYyMTU2IiwiLTU5Mzc4OTEuMDUiLCItNTkzNzg5MS4wNSIsIjU5Mzc4OTEuMDUiLCI0LjE1NzczOTEwRS03OTU5NjIxNDYiLCIxLjE3OTIxNDQzRS03OTU5NjIxNTkiLCIwIiwiLTcuMDAyMDQ2OEUtNzk1OTYyMTUzIiwiIik7CisgIG1hdGh0ZXN0KDQ0MyxkZWYsIjY5NjUwNDYwNS4iLCI1NDUwNi40NjE3IiwiNjk2NTU5MTExIiwiNjk2NDUwMDk5IiwiMy43OTY0MDAxNkUrMTMiLCIxMjc3OC4zODYiLCIxMjc3OCIsIjIxMDM3LjM5NzQiLCIyLjYwMDg1MzJFKzQ4MTk5MiIpOworICBtYXRodGVzdCg0NDQsZGVmLCItNTExNS43NjQ2NyIsIjY5MC45NjA5NzlFKzgxNTEyNjcwMSIsIjYuOTA5NjA5NzlFKzgxNTEyNjcwMyIsIi02LjkwOTYwOTc5RSs4MTUxMjY3MDMiLCItMy41MzQ3OTM3NkUrODE1MTI2NzA3IiwiLTcuNDAzODQwMkUtODE1MTI2NzAxIiwiMCIsIi01MTE1Ljc2NDY3IiwiLTkuMTcwMDk2NTVFKzI1Iik7CisgIG1hdGh0ZXN0KDQ0NSxkZWYsIi0yNjEuMjc5MzkyIiwiLTYxMy4wNzkzNTciLCItODc0LjM1ODc0OSIsIjM1MS43OTk5NjUiLCIxNjAxODUuMDAyIiwiMC40MjYxNzU0ODQiLCIwIiwiLTI2MS4yNzkzOTIiLCItMi4wNjMxODg0MUUtMTQ4MiIpOworICBtYXRodGVzdCg0NDYsZGVmLCItNTkxNDA3NzYzIiwiLTgwMTQ1ODIyLjgiLCItNjcxNTUzNTg2IiwiLTUxMTI2MTk0MCIsIjQuNzM5ODg2MThFKzE2IiwiNy4zNzkxNDY0NCIsIjciLCItMzAzODcwMDMuNCIsIi0yLjc5MzM0NTIyRS03MDMwMzAxMDUiKTsKKyAgbWF0aHRlc3QoNDQ3LGRlZiwiNjE1NjMwNDA3IiwiLTY5LjQ2NjE4NjkiLCI2MTU2MzAzMzgiLCI2MTU2MzA0NzYiLCItNC4yNzY1NDk2OUUrMTAiLCItODg2MjMwMy4xNSIsIi04ODYyMzAzIiwiMTAuNDM3NTY5MyIsIjMuNDQyODMxMDJFLTYwNyIpOworICBtYXRodGVzdCg0NDgsZGVmLCIxMDc4NzU3LjUwIiwiMjc0MDI1NjkuMEUtNzEzNzQyMDgyIiwiMTA3ODc1Ny41MCIsIjEwNzg3NTcuNTAiLCIyLjk1NjA3MjY4RS03MTM3NDIwNjkiLCIzLjkzNjcwMjA3RSs3MTM3NDIwODAiLCIiLCIiLCIxLjI1NTM2OTI0RSsxOCIpOworICBtYXRodGVzdCg0NDksZGVmLCItNDg2NS42MDM1OEUtNDAxMTE2NTE1IiwiNjY5NTIuNTMxNSIsIjY2OTUyLjUzMTUiLCItNjY5NTIuNTMxNSIsIi0zLjI1NzY0NDc3RS00MDExMTY1MDciLCItNy4yNjcyNDM2M0UtNDAxMTE2NTE3IiwiMCIsIi00Ljg2NTYwMzU4RS00MDExMTY1MTIiLCIiKTsKKyAgbWF0aHRlc3QoNDUwLGRlZiwiLTg3ODA1LjM5MjFFLTkzNDg5NjY5MCIsIi0xODc1LjE0NzQ1IiwiLTE4NzUuMTQ3NDUiLCIxODc1LjE0NzQ1IiwiMS42NDY0ODA1N0UtOTM0ODk2NjgyIiwiNC42ODI1ODYwMUUtOTM0ODk2Njg5IiwiMCIsIi04Ljc4MDUzOTIxRS05MzQ4OTY2ODYiLCIiKTsKKyAgbWF0aHRlc3QoNDUxLGRlZiwiLTIzMjU0MDYwOS5FKzYwMjcwMjUyMCIsIjY4LjA4MzQyMjMiLCItMi4zMjU0MDYwOUUrNjAyNzAyNTI4IiwiLTIuMzI1NDA2MDlFKzYwMjcwMjUyOCIsIi0xLjU4MzIxNjA1RSs2MDI3MDI1MzAiLCItMy40MTU1MjQ2OEUrNjAyNzAyNTI2IiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDQ1MixkZWYsIi0zMjA2MTA4MDMuIiwiLTg2Mzg3MTIzNS4iLCItMS4xODQ0ODIwNEUrOSIsIjU0MzI2MDQzMiIsIjIuNzY5NjY0NTBFKzE3IiwiMC4zNzExMzI2MyIsIjAiLCItMzIwNjEwODAzIiwiIik7CisgIG1hdGh0ZXN0KDQ1MyxkZWYsIi0zMDM5NTYzNjRFKzI3ODEzOTk3OSIsIjIyOTUzNy45MjBFKzQ3OTYwMzcyNSIsIjIuMjk1Mzc5MjBFKzQ3OTYwMzczMCIsIi0yLjI5NTM3OTIwRSs0Nzk2MDM3MzAiLCItNi45NzY5NTExNkUrNzU3NzQzNzE3IiwiLTEuMzI0MjA5OEUtMjAxNDYzNzQzIiwiMCIsIi0zLjAzOTU2MzY0RSsyNzgxMzk5ODciLCI5LjIzODk0NzEyRSs1NTYyNzk5NzQiKTsKKyAgbWF0aHRlc3QoNDU0LGRlZiwiLTQzOS43NDczNDgiLCI3NC45NDk0NDU3RS0zNTMxMTc1ODIiLCItNDM5Ljc0NzM0OCIsIi00MzkuNzQ3MzQ4IiwiLTMuMjk1ODgyMDBFLTM1MzExNzU3OCIsIi01Ljg2NzI1Mjg0RSszNTMxMTc1ODIiLCIiLCIiLCItMy4xNzk5NjY5M0UrMTgiKTsKKyAgbWF0aHRlc3QoNDU1LGRlZiwiLTg5NzAyMjMxLjkiLCIxLjI4OTkzOTkzIiwiLTg5NzAyMjMwLjYiLCItODk3MDIyMzMuMiIsIi0xMTU3MTA0OTEiLCItNjk1Mzk4NTIuMSIsIi02OTUzOTg1MiIsIi0wLjA3ODkwOTY0IiwiLTg5NzAyMjMxLjkiKTsKKyAgbWF0aHRlc3QoNDU2LGRlZiwiLTU4NTY5MzkuMTQiLCItNjc0MzM3NS4zNCIsIi0xMjYwMDMxNC41IiwiODg2NDM2LjIwIiwiMy45NDk1NTM5MEUrMTMiLCIwLjg2ODU0NzEwNyIsIjAiLCItNTg1NjkzOS4xNCIsIi0zLjI5MjEzMjQ4RS00NTYzNjk0MiIpOworICBtYXRodGVzdCg0NTcsZGVmLCI3MzMzMTcuNjY5RSsxMDAzODEzNDkiLCItMTM4MzIuNjc5MkUrMTc0MDU1NjA3IiwiLTEuMzgzMjY3OTJFKzE3NDA1NTYxMSIsIjEuMzgzMjY3OTJFKzE3NDA1NTYxMSIsIi0xLjAxNDM3NDgxRSsyNzQ0MzY5NjYiLCItNS4zMDEzNDIyN0UtNzM2NzQyNTciLCIwIiwiNy4zMzMxNzY2OUUrMTAwMzgxMzU0IiwiMS4zNjM2NjU0OUUtMTAwMzgxMzU1Iik7CisgIG1hdGh0ZXN0KDQ1OCxkZWYsIjg3LjQ3OTg3ODdFLTgwMTI0NzA0IiwiMTA4NDk3LjMyIiwiMTA4NDk3LjMyMCIsIi0xMDg0OTcuMzIwIiwiOS40OTEzMzIzOUUtODAxMjQ2OTgiLCI4LjA2Mjg2MDc5RS04MDEyNDcwOCIsIjAiLCI4Ljc0Nzk4Nzg3RS04MDEyNDcwMyIsIiIpOworICBtYXRodGVzdCg0NTksZGVmLCItNjk0NTYyMDUyIiwiMzEwNjgxLjMxOUUrNTQ5NDQ1MjY0IiwiMy4xMDY4MTMxOUUrNTQ5NDQ1MjY5IiwiLTMuMTA2ODEzMTlFKzU0OTQ0NTI2OSIsIi0yLjE1Nzg3NDU0RSs1NDk0NDUyNzgiLCItMi4yMzU2MDkzMkUtNTQ5NDQ1MjYxIiwiMCIsIi02OTQ1NjIwNTIiLCItMy4zNTA2ODE1NUUrMjYiKTsKKyAgbWF0aHRlc3QoNDYwLGRlZiwiLTk3NDQxMzUuODUiLCIxNzk3MDE2LjA0IiwiLTc5NDcxMTkuODEiLCItMTE1NDExNTEuOSIsIi0xLjc1MTAzNjg0RSsxMyIsIi01LjQyMjM5NzgyIiwiLTUiLCItNzU5MDU1LjY1IiwiMy44Mzg0ODAwNkUrMTI1NTg4ODMiKTsKKyAgbWF0aHRlc3QoNDYxLGRlZiwiMzYyNS44NzMwOCIsIi01MC4yMjA4NTM2RSs2NTg2Mjc0ODciLCItNS4wMjIwODUzNkUrNjU4NjI3NDg4IiwiNS4wMjIwODUzNkUrNjU4NjI3NDg4IiwiLTEuODIwOTQ0NDFFKzY1ODYyNzQ5MiIsIi03LjIxOTg1NTU0RS02NTg2Mjc0ODYiLCIwIiwiMzYyNS44NzMwOCIsIjEuNTk1NjQ3N0UtMTgiKTsKKyAgbWF0aHRlc3QoNDYyLGRlZiwiMzY1MzQ3LjUyIiwiLTM2NTU0MTQuNDciLCItMzI5MDA2Ni45NSIsIjQwMjA3NjEuOTkiLCItMS4zMzU0OTY2MUUrMTIiLCItMC4wOTk5NDY5NDgiLCIwIiwiMzY1MzQ3LjUyIiwiMS4wMjY2MzI1N0UtMjAzMzM5OTQiKTsKKyAgbWF0aHRlc3QoNDYzLGRlZiwiLTE5NzA2MzMzLjZFLTgxNjkyMzA1MCIsIi0zODM4NTgwMzIuIiwiLTM4Mzg1ODAzMiIsIjM4Mzg1ODAzMiIsIjcuNTY0NDM0NDNFLTgxNjkyMzAzNSIsIjUuMTMzNzU1N0UtODE2OTIzMDUyIiwiMCIsIi0xLjk3MDYzMzM2RS04MTY5MjMwNDMiLCIiKTsKKyAgbWF0aHRlc3QoNDY0LGRlZiwiLTg2MzQ2LjI2MTYiLCItOTguODA2Mzc4NSIsIi04NjQ0NS4wNjgwIiwiLTg2MjQ3LjQ1NTIiLCI4NTMxNTYxLjQxIiwiODczLjg5MzU5OCIsIjg3MyIsIi04OC4yOTMxNjk1IiwiLTIuMDUwNjQwODZFLTQ4OSIpOworICBtYXRodGVzdCg0NjUsZGVmLCItNDQ1NTg4LjE2MEUtNDk2NTkyMjE1IiwiMzI4LjgyMjk3NiIsIjMyOC44MjI5NzYiLCItMzI4LjgyMjk3NiIsIi0xLjQ2NTE5NjI1RS00OTY1OTIyMDciLCItMS4zNTUxMDA0NEUtNDk2NTkyMjEyIiwiMCIsIi00LjQ1NTg4MTYwRS00OTY1OTIyMTAiLCIiKTsKKyAgbWF0aHRlc3QoNDY2LGRlZiwiLTk3MDkyMTMuNzEiLCItMzQuNjY5MDEzNyIsIi05NzA5MjQ4LjM4IiwiLTk3MDkxNzkuMDQiLCIzMzY2MDg4NjMiLCIyODAwNTQuNTEyIiwiMjgwMDU0IiwiLTE3Ljc0NzI2MDIiLCItMi44MDkwMzk3NEUtMjQ1Iik7CisgIG1hdGh0ZXN0KDQ2NyxkZWYsIjc0MjM5NTUzNi4iLCItNDM1MzMuNjg4OSIsIjc0MjM1MjAwMiIsIjc0MjQzOTA3MCIsIi0zLjIzMTkyMTYzRSsxMyIsIi0xNzA1My4zNTY5IiwiLTE3MDUzIiwiMTU1MzkuMTg4MyIsIjUuNzYyMjczNEUtMzg2MTc1Iik7CisgIG1hdGh0ZXN0KDQ2OCxkZWYsIi04Nzg4NDkxOTMuIiwiLTU4NDI5ODIuNDdFLTk3MjUzNzM0MiIsIi04Nzg4NDkxOTMiLCItODc4ODQ5MTkzIiwiNS4xMzUxMDA0M0UtOTcyNTM3MzI3IiwiMS41MDQxMTA2MUUrOTcyNTM3MzQ0IiwiIiwiIiwiMi4xNzAyNzA0MkUtNTQiKTsKKyAgbWF0aHRlc3QoNDY5LGRlZiwiLTc4MDE0MTQyLjEiLCItNjI0NjU4LjUyMiIsIi03ODYzODgwMC42IiwiLTc3Mzg5NDgzLjYiLCI0Ljg3MzIxOTg3RSsxMyIsIjEyNC44OTA4NjMiLCIxMjQiLCItNTU2NDg1LjM3MiIsIi03Ljg2MDYzODY1RS00OTI5OTE4Iik7CisgIG1hdGh0ZXN0KDQ3MCxkZWYsIjg1NzAzOS4zNzEiLCI0NTQuMzc5NjcyIiwiODU3NDkzLjc1MSIsIjg1NjU4NC45OTEiLCIzODk0MjEyNjgiLCIxODg2LjE3NDU0IiwiMTg4NiIsIjc5LjMwOTYwOCIsIjMuODIyNTMxMDFFKzI2OTMiKTsKKyAgbWF0aHRlc3QoNDcxLGRlZiwiMTY2NTM0MDEwLiIsIi0xNzMuMDEyMjM2IiwiMTY2NTMzODM3IiwiMTY2NTM0MTgzIiwiLTIuODgxMjQyMTRFKzEwIiwiLTk2MjU1Ni4yNTUiLCItOTYyNTU2IiwiNDQuMTY0Nzg0IiwiNC43ODYyMDY2NEUtMTQyMyIpOworICBtYXRodGVzdCg0NzIsZGVmLCItODEwLjg3OTA2MyIsIjQzNzc2LjYxMCIsIjQyOTY1LjczMDkiLCItNDQ1ODcuNDg5MSIsIi0zNTQ5NzUzNi41IiwiLTAuMDE4NTIzMTEyMyIsIjAiLCItODEwLjg3OTA2MyIsIi0yLjM0NzU4NjkxRSsxMjczNDUiKTsKKyAgbWF0aHRlc3QoNDczLGRlZiwiLTMyNy4xMjc5MzUiLCI5MzQ1ODk0NCIsIjkzNDU4NjE2LjkiLCItOTM0NTkyNzEuMSIsIi0zLjA1NzMwMzE0RSsxMCIsIi0wLjAwMDAwMzUwMDIzMTQ1IiwiMCIsIi0zMjcuMTI3OTM1IiwiMi4yOTMyMzAyMUUrMjM1MDIyODU0Iik7CisgIG1hdGh0ZXN0KDQ3NCxkZWYsIjUzOTI5NTIxOC4iLCItOTU4Nzk0MS4xMEUtMzA5NjQzMDk4IiwiNTM5Mjk1MjE4IiwiNTM5Mjk1MjE4IiwiLTUuMTcwNzMwNzlFLTMwOTY0MzA4MyIsIi01LjYyNDcyMzk0RSszMDk2NDMwOTkiLCIiLCIiLCI0LjgwNTQ1MjY5RS04OCIpOworICBtYXRodGVzdCg0NzUsZGVmLCItMzg2MjcwMi42NSIsIjg3OTYxNi43MzMiLCItMjk4MzA4NS45MiIsIi00NzQyMzE5LjM4IiwiLTMuMzk3Njk3ODlFKzEyIiwiLTQuMzkxMzQ3NCIsIi00IiwiLTM0NDIzNS43MTgiLCItMy41MDY1MDE2N0UrNTc5Mzk0MSIpOworICBtYXRodGVzdCg0NzYsZGVmLCItOC4yNTI5MDUwMCIsIjk5Mi4wOTE1ODRFKzI1NjA3MDI1NyIsIjkuOTIwOTE1ODRFKzI1NjA3MDI1OSIsIi05LjkyMDkxNTg0RSsyNTYwNzAyNTkiLCItOC4xODc2Mzc1OUUrMjU2MDcwMjYwIiwiLTguMzE4NjkyNjhFLTI1NjA3MDI2MCIsIjAiLCItOC4yNTI5MDUwMCIsIjEuNDY1Nzc4ODhFKzkiKTsKKyAgbWF0aHRlc3QoNDc3LGRlZiwiNTQ2ODc1MjA1LiIsIjQ0Ny41Mjg1N0UrNTU3MzU3MTAxIiwiNC40NzUyODU3MEUrNTU3MzU3MTAzIiwiLTQuNDc1Mjg1NzBFKzU1NzM1NzEwMyIsIjIuNDQ3NDIyNzhFKzU1NzM1NzExMiIsIjEuMjIxOTg5NDhFLTU1NzM1NzA5NSIsIjAiLCI1NDY4NzUyMDUiLCI4Ljk0NDQzNTQyRSszNCIpOworICBtYXRodGVzdCg0NzgsZGVmLCIxNzc2MjM0MzciLCItNzc3OTExNi4xNCIsIjE2OTg0NDMyMSIsIjE4NTQwMjU1MyIsIi0xLjM4MTc1MzM1RSsxNSIsIi0yMi44MzMzNyIsIi0yMiIsIjY0ODI4ODEuOTIiLCIyLjkwMDg1MzA5RS02NDE3MzgyMCIpOworICBtYXRodGVzdCg0NzksZGVmLCIzNzcyMDQ3MzUuIiwiMTM3NjguMTQwMSIsIjM3NzIxODUwMyIsIjM3NzE5MDk2NyIsIjUuMTkzNDA3NjRFKzEyIiwiMjczOTYuOTI3NCIsIjI3Mzk2IiwiMTI3NjguODIwNCIsIjIuMDYwNjUyOTdFKzExODA4MiIpOworICBtYXRodGVzdCg0ODAsZGVmLCItMjQzNS40OTIzOSIsIi0xMTczMi4wNjQwRS0yMzMzMTUwNCIsIi0yNDM1LjQ5MjM5IiwiLTI0MzUuNDkyMzkiLCIyLjg1NzMzNTI2RS0yMzMzMTQ5NyIsIjIuMDc1OTI4MzJFKzIzMzMxNTAzIiwiIiwiIiwiLTAuMDAwNDEwNTk0NTkiKTsKKyAgbWF0aHRlc3QoNDgxLGRlZiwiLTYxMjg0NjUuMTRFLTEzNzEyMzI5NCIsIi01NzQyMjY0LjI3IiwiLTU3NDIyNjQuMjciLCI1NzQyMjY0LjI3IiwiMy41MTkxMjY2NEUtMTM3MTIzMjgxIiwiMS4wNjcyNTU4NUUtMTM3MTIzMjk0IiwiMCIsIi02LjEyODQ2NTE0RS0xMzcxMjMyODgiLCIiKTsKKyAgbWF0aHRlc3QoNDgyLGRlZiwiLTI4OTgwNjUuNDQiLCItNS4xMTYzODEwNSIsIi0yODk4MDcwLjU2IiwiLTI4OTgwNjAuMzIiLCIxNDgyNzYwNy4xIiwiNTY2NDI4Ljc3MyIsIjU2NjQyOCIsIi0zLjk1NDYxMDYwIiwiLTQuODkxNjkxNTFFLTMzIik7CisgIG1hdGh0ZXN0KDQ4MyxkZWYsIjE4NTEzOTUuMzFFKzU5NDM4MzE2MCIsIi01NTAzMDEuNDc1IiwiMS44NTEzOTUzMUUrNTk0MzgzMTY2IiwiMS44NTEzOTUzMUUrNTk0MzgzMTY2IiwiLTEuMDE4ODI1NTdFKzU5NDM4MzE3MiIsIi0zLjM2NDMyOTE4RSs1OTQzODMxNjAiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoNDg0LGRlZiwiNTM2NDEyNTg5LkUrMzc5NTgzOTc3IiwiODk5LjYwMTE2MSIsIjUuMzY0MTI1ODlFKzM3OTU4Mzk4NSIsIjUuMzY0MTI1ODlFKzM3OTU4Mzk4NSIsIjQuODI1NTczODhFKzM3OTU4Mzk4OCIsIjUuOTYyNzgyMzFFKzM3OTU4Mzk4MiIsIiIsIiIsIiIpOworICBtYXRodGVzdCg0ODUsZGVmLCIxODUuODUyOTciLCI4Njc0MTk0ODAuIiwiODY3NDE5NjY2IiwiLTg2NzQxOTI5NCIsIjEuNjEyMTI0ODdFKzExIiwiMi4xNDI1OTYyMkUtNyIsIjAiLCIxODUuODUyOTciLCIiKTsKKyAgbWF0aHRlc3QoNDg2LGRlZiwiLTUuMjY2MzEwNTMiLCItMzgxNTk0MS4zNUUrMTgzMjkxNzYzIiwiLTMuODE1OTQxMzVFKzE4MzI5MTc2OSIsIjMuODE1OTQxMzVFKzE4MzI5MTc2OSIsIjIuMDA5NTkzMjFFKzE4MzI5MTc3MCIsIjEuMzgwMDgxNjJFLTE4MzI5MTc2OSIsIjAiLCItNS4yNjYzMTA1MyIsIjAuMDAxMzAwMDkyMTgiKTsKKyAgbWF0aHRlc3QoNDg3LGRlZiwiLTguMTE1ODcwMjFFLTI0NTk0MjgwNiIsIjQ1NTMuMDY3NTNFKzk0MzQxMjA0OCIsIjQuNTUzMDY3NTNFKzk0MzQxMjA1MSIsIi00LjU1MzA2NzUzRSs5NDM0MTIwNTEiLCItMy42OTUyMTA1MUUrNjk3NDY5MjQ2IiwiIiwiMCIsIi04LjExNTg3MDIxRS0yNDU5NDI4MDYiLCIiKTsKKyAgbWF0aHRlc3QoNDg4LGRlZiwiLTQwNTc2NS4zNTIiLCI4NTQ5NjMyMzEiLCI4NTQ1NTc0NjYiLCItODU1MzY4OTk2IiwiLTMuNDY5MTQ0NTZFKzE0IiwiLTAuMDAwNDc0NTk5NzY5IiwiMCIsIi00MDU3NjUuMzUyIiwiIik7CisgIG1hdGh0ZXN0KDQ4OSxkZWYsIi0xNTkuNjA5NzU3IiwiLTQzMzU2Ljc1NjciLCItNDM1MTYuMzY2NSIsIjQzMTk3LjE0NzAiLCI2OTIwMTYxLjQwIiwiMC4wMDM2ODEzMTIxOSIsIjAiLCItMTU5LjYwOTc1NyIsIi04Ljk1Mzk3ODQ5RS05NTUxOSIpOworICBtYXRodGVzdCg0OTAsZGVmLCItNTY0MjQwLjI0MUUtNTAxMzE2NjcyIiwiLTU1Ny43ODE5NzciLCItNTU3Ljc4MTk3NyIsIjU1Ny43ODE5NzciLCIzLjE0NzIzMDM3RS01MDEzMTY2NjQiLCIxLjAxMTU3ODQ3RS01MDEzMTY2NjkiLCIwIiwiLTUuNjQyNDAyNDFFLTUwMTMxNjY2NyIsIiIpOworICBtYXRodGVzdCg0OTEsZGVmLCIzMTg4NDcuMjcwIiwiNTgyMTA3ODc4LkUrMzk5NjMzNDEyIiwiNS44MjEwNzg3OEUrMzk5NjMzNDIwIiwiLTUuODIxMDc4NzhFKzM5OTYzMzQyMCIsIjEuODU2MDM1MDhFKzM5OTYzMzQyNiIsIjUuNDc3NDYwMTRFLTM5OTYzMzQxNiIsIjAiLCIzMTg4NDcuMjcwIiwiMS4wNTA3NDIzRSszMyIpOworICBtYXRodGVzdCg0OTIsZGVmLCItNDQyNi41OTY2MyIsIjk1LjEwOTY3NjUiLCItNDMzMS40ODY5NSIsIi00NTIxLjcwNjMxIiwiLTQyMTAxMi4xNzMiLCItNDYuNTQyMDIxNyIsIi00NiIsIi01MS41NTE1MTEwIiwiLTIuMzgwMzczNzlFKzM0NiIpOworICBtYXRodGVzdCg0OTMsZGVmLCI2MDM3LjI4MzEwIiwiNTc4MjY0LjEwNSIsIjU4NDMwMS4zODgiLCItNTcyMjI2LjgyMiIsIjMuNDkxMTQ0MTFFKzkiLCIwLjAxMDQ0MDM1NiIsIjAiLCI2MDM3LjI4MzEwIiwiMy41NzI3OTQ4M0UrMjE4NjMyNCIpOworICBtYXRodGVzdCg0OTQsZGVmLCItNjYuOTU1NjY5MiIsIi01My44NTE5NDA0IiwiLTEyMC44MDc2MTAiLCItMTMuMTAzNzI4OCIsIjM2MDUuNjkyNzEiLCIxLjI0MzMyODgxIiwiMSIsIi0xMy4xMDM3Mjg4IiwiMi41NTU1NDA4NkUtOTkiKTsKKyAgbWF0aHRlc3QoNDk1LGRlZiwiLTkyNDg2LjAyMjIiLCItNTk5MzUuODU0NCIsIi0xNTI0MjEuODc3IiwiLTMyNTUwLjE2NzgiLCI1LjU0MzIyODc2RSs5IiwiMS41NDMwODM0IiwiMSIsIi0zMjU1MC4xNjc4IiwiMS44MzE1MjY1NkUtMjk3NjQ3Iik7CisgIG1hdGh0ZXN0KDQ5NixkZWYsIjg1MjEzNjIxOS5FKzkxNzc4NzM1MSIsIjkyNDYyMjEuOTEiLCI4LjUyMTM2MjE5RSs5MTc3ODczNTkiLCI4LjUyMTM2MjE5RSs5MTc3ODczNTkiLCI3Ljg3OTA0MDU4RSs5MTc3ODczNjYiLCI5LjIxNjA0NzY3RSs5MTc3ODczNTIiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoNDk3LGRlZiwiLTIxMjAwOTYuMTZFLTI2OTI1MzcxOCIsIjk0MzcuMDA1MTQiLCI5NDM3LjAwNTE0IiwiLTk0MzcuMDA1MTQiLCItMi4wMDA3MzU4NEUtMjY5MjUzNzA4IiwiLTIuMjQ2NTc3MzFFLTI2OTI1MzcxNiIsIjAiLCItMi4xMjAwOTYxNkUtMjY5MjUzNzEyIiwiIik7CisgIG1hdGh0ZXN0KDQ5OCxkZWYsIi01MjQ2NTMuMTY5RS04NjU3ODQyMjYiLCIyMjgwNTQuNjk4IiwiMjI4MDU0LjY5OCIsIi0yMjgwNTQuNjk4IiwiLTEuMTk2NDk2MjBFLTg2NTc4NDIxNSIsIi0yLjMwMDU1ODQ4RS04NjU3ODQyMjYiLCIwIiwiLTUuMjQ2NTMxNjlFLTg2NTc4NDIyMSIsIiIpOworICBtYXRodGVzdCg0OTksZGVmLCItMjg4MTkzMTMzIiwiLTMxMjI2ODczNy4iLCItNjAwNDYxODcwIiwiMjQwNzU2MDQiLCI4Ljk5OTM3MDU3RSsxNiIsIjAuOTIyOTAxMDExIiwiMCIsIi0yODgxOTMxMzMiLCIiKTsKKyAgbWF0aHRlc3QoNTAwLGRlZiwiLTM3MzQ4NDc1OUUtMTEzNTg5OTY0IiwiODQ0MTAxOTU4RS04NTI1MzgyNDAiLCItMy43MzQ4NDc1OUUtMTEzNTg5OTU2IiwiLTMuNzM0ODQ3NTlFLTExMzU4OTk1NiIsIi0zLjE1MjU5MjE2RS05NjYxMjgxODciLCItNC40MjQ2NDAzNkUrNzM4OTQ4Mjc1IiwiIiwiIiwiMy43ODYwMjE0N0UtOTA4NzE5NjQ0Iik7CisgIAorICBzdW1tYXJ5KCJBcml0aG1ldGljIik7CisgIHJldHVybjt9CisKKyAvKiBtYXRodGVzdCAtLSBnZW5lcmFsIGFyaXRobWV0aWMgdGVzdCByb3V0aW5lCisgICAgQXJnMSAgaXMgdGVzdCBudW1iZXIKKyAgICBBcmcyICBpcyBNYXRoQ29udGV4dAorICAgIEFyZzMgIGlzIGxlZnQgaGFuZCBzaWRlIChMSFMpCisgICAgQXJnNCAgaXMgcmlnaHQgaGFuZCBzaWRlIChSSFMpCisgICAgQXJnNSAgaXMgdGhlIGV4cGVjdGVkIHJlc3VsdCBmb3IgYWRkCisgICAgQXJnNiAgaXMgdGhlIGV4cGVjdGVkIHJlc3VsdCBmb3Igc3VidHJhY3QKKyAgICBBcmc3ICBpcyB0aGUgZXhwZWN0ZWQgcmVzdWx0IGZvciBtdWx0aXBseQorICAgIEFyZzggIGlzIHRoZSBleHBlY3RlZCByZXN1bHQgZm9yIGRpdmlkZQorICAgIEFyZzkgIGlzIHRoZSBleHBlY3RlZCByZXN1bHQgZm9yIGludGVnZXJEaXZpZGUKKyAgICBBcmcxMCBpcyB0aGUgZXhwZWN0ZWQgcmVzdWx0IGZvciByZW1haW5kZXIKKyAgICBBcmcxMSBpcyB0aGUgZXhwZWN0ZWQgcmVzdWx0IGZvciBwb3dlcgorIAorICBGb3IgcG93ZXIgUkhTLCAwIGlzIGFkZGVkIHRvIHRoZSBudW1iZXIsIGFueSBleHBvbmVudCBpcyByZW1vdmVkIGFuZAorICB0aGUgbnVtYmVyIGlzIHRoZW4gcm91bmRlZCB0byBhbiBpbnRlZ2VyLCB1c2luZyBmb3JtYXQocmhzKzAsLDApCisgCisgIElmIGFuIGVycm9yIHNob3VsZCByZXN1bHQgZm9yIGFuIG9wZXJhdGlvbiwgdGhlICdleHBlY3RlZCByZXN1bHQnIGlzCisgIGFuIGVtcHR5IHN0cmluZy4KKyAgKi8KKyAKKyBwcml2YXRlIHZvaWQgbWF0aHRlc3QoaW50IHRlc3QsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dCBtYyxqYXZhLmxhbmcuU3RyaW5nIHNsaHMsamF2YS5sYW5nLlN0cmluZyBzcmhzLGphdmEubGFuZy5TdHJpbmcgYWRkLGphdmEubGFuZy5TdHJpbmcgc3ViLGphdmEubGFuZy5TdHJpbmcgbXVsLGphdmEubGFuZy5TdHJpbmcgZGl2LGphdmEubGFuZy5TdHJpbmcgaWR2LGphdmEubGFuZy5TdHJpbmcgcmVtLGphdmEubGFuZy5TdHJpbmcgcG93KXsKKyAgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIGxoczsKKyAgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIHJoczsKKyAgamF2YS5sYW5nLlN0cmluZyByZXM9bnVsbDsKKyAgamF2YS5sYW5nLlN0cmluZyBzbj1udWxsOworICBpbnQgZT0wOworICAKKyAgCisgIAorICBsaHM9bmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChzbGhzKTsKKyAgcmhzPW5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoc3Jocyk7CisgIAorICB0cnl7CisgICByZXM9bGhzLmFkZChyaHMsbWMpLnRvU3RyaW5nKCk7CisgIH0KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQxMzcpeworICAgcmVzPSIiOworICB9CisgIG1hdGh0ZXN0Y2hlY2sodGVzdCxsaHMscmhzLCJhZGQiLHJlcyxhZGQpOworICAKKyAgdHJ5eworICAgcmVzPWxocy5zdWJ0cmFjdChyaHMsbWMpLnRvU3RyaW5nKCk7CisgIH0KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQxMzgpeworICAgcmVzPSIiOworICB9CisgIG1hdGh0ZXN0Y2hlY2sodGVzdCxsaHMscmhzLCJzdWIiLHJlcyxzdWIpOworICAKKyAgdHJ5eworICAgcmVzPWxocy5tdWx0aXBseShyaHMsbWMpLnRvU3RyaW5nKCk7CisgIH0KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQxMzkpeworICAgcmVzPSIiOworICB9CisgIG1hdGh0ZXN0Y2hlY2sodGVzdCxsaHMscmhzLCJtdWwiLHJlcyxtdWwpOworICAKKyAgdHJ5eworICAgcmVzPWxocy5kaXZpZGUocmhzLG1jKS50b1N0cmluZygpOworICB9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkMTQwKXsKKyAgIHJlcz0iIjsKKyAgfQorICBtYXRodGVzdGNoZWNrKHRlc3QsbGhzLHJocywiZGl2IixyZXMsZGl2KTsKKyAgCisgIHRyeXsKKyAgIHJlcz1saHMuZGl2aWRlSW50ZWdlcihyaHMsbWMpLnRvU3RyaW5nKCk7CisgIH0KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQxNDEpeworICAgcmVzPSIiOworICB9CisgIG1hdGh0ZXN0Y2hlY2sodGVzdCxsaHMscmhzLCJpZHYiLHJlcyxpZHYpOworICAKKyAgdHJ5eworICAgcmVzPWxocy5yZW1haW5kZXIocmhzLG1jKS50b1N0cmluZygpOworICB9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkMTQyKXsKKyAgIHJlcz0iIjsKKyAgfQorICBtYXRodGVzdGNoZWNrKHRlc3QsbGhzLHJocywicmVtIixyZXMscmVtKTsKKyAgCisgIHRyeXsKKyAgIC8vIHByZXBhcmUgYW4gaW50ZWdlciBmcm9tIHRoZSByaHMKKyAgIC8vIGluIFJleHg6CisgICAvLyAgIG49cmhzKzAKKyAgIC8vICAgZT1wb3MoJ0UnLCBuKQorICAgLy8gICBpZiBlPjAgdGhlbiBuPWxlZnQobixlLTEpCisgICAvLyAgIG49Zm9ybWF0KG4sLDApCisgICAKKyAgIHNuPXJocy5wbHVzKG1jKS50b1N0cmluZygpOworICAgZT1zbi5pbmRleE9mKCJFIiwwKTsKKyAgIGlmIChlPjApIAorICAgIHNuPXNuLnN1YnN0cmluZygwLGUpOworICAgc249KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoc24pKS5mb3JtYXQoLTEsMCk7CisgICAKKyAgIHJlcz1saHMucG93KG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoc24pLG1jKS50b1N0cmluZygpOworICB9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkMTQzKXsKKyAgIHJlcz0iIjsKKyAgfQorICBtYXRodGVzdGNoZWNrKHRlc3QsbGhzLHJocywicG93IixyZXMscG93KTsKKyAgcmV0dXJuOworICB9CisKKyAvKiBtYXRodGVzdGNoZWNrIC0tIGNoZWNrIGZvciBnZW5lcmFsIG1hdGh0ZXN0IGVycm9yCisgICAgQXJnMSAgaXMgdGVzdCBudW1iZXIKKyAgICBBcmcyICBpcyBsZWZ0IGhhbmQgc2lkZSAoTEhTKQorICAgIEFyZzMgIGlzIHJpZ2h0IGhhbmQgc2lkZSAoUkhTKQorICAgIEFyZzQgIGlzIHRoZSBvcGVyYXRpb24KKyAgICBBcmc1ICBpcyB0aGUgYWN0dWFsIHJlc3VsdAorICAgIEFyZzYgIGlzIHRoZSBleHBlY3RlZCByZXN1bHQKKyAgICBTaG93IGVycm9yIG1lc3NhZ2UgaWYgYSBwcm9ibGVtLCBvdGhlcndpc2UgcmV0dXJuIHF1aWV0bHkKKyAgICAqLworIAorIHByaXZhdGUgdm9pZCBtYXRodGVzdGNoZWNrKGludCB0ZXN0LGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCBsaHMsY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIHJocyxqYXZhLmxhbmcuU3RyaW5nIG9wLGphdmEubGFuZy5TdHJpbmcgZ290LGphdmEubGFuZy5TdHJpbmcgd2FudCl7CisgIGJvb2xlYW4gZmxhZzsKKyAgamF2YS5sYW5nLlN0cmluZyB0ZXN0bnVtOworICAKKyAgZmxhZz13YW50LmVxdWFscygoamF2YS5sYW5nLk9iamVjdClnb3QpOworICAKKyAgaWYgKCghZmxhZykpIAorICAgc2F5KCI+Iit0ZXN0KyI+IisiICIrbGhzLnRvU3RyaW5nKCkrIiAiK29wKyIgIityaHMudG9TdHJpbmcoKSsiICIrIj0iKyIgIit3YW50KyIgIisiW2dvdCIrIiAiK2dvdCsiXSIpOworICAKKyAgdGVzdG51bT0iZ2VuIityaWdodCgobmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCh0ZXN0KzEwMDApKS50b1N0cmluZygpLDMpOworICAKKyAgKG5ldyBUZXN0KHRlc3RudW0pKS5vaz1mbGFnOworICByZXR1cm47CisgIH0KKworIAorIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIC8qIFN1cHBvcnQgcm91dGluZXMgYW5kIG1pbm9yIGNsYXNzZXMgZm9sbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAqLworIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIAorIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgLyogTWV0aG9kIGNhbGxlZCB0byBzdW1tYXJpc2UgcGVuZGluZyB0ZXN0cyAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIC8qIEFyZzEgaXMgc2VjdGlvbiBuYW1lICovCisgCisgcHJpdmF0ZSB2b2lkIHN1bW1hcnkoamF2YS5sYW5nLlN0cmluZyBzZWN0aW9uKXsKKyAgaW50IGJhZDsKKyAgaW50IGNvdW50OworICBpbnQgaT0wOworICBUZXN0IGl0ZW09bnVsbDsKKyAgYmFkPTA7CisgIGNvdW50PVRlc3RzLnNpemUoKTsKKyAge2ludCAkMTQ0PWNvdW50O2k9MDtpOmZvcig7JDE0ND4wOyQxNDQtLSxpKyspeworICAgaXRlbT0oVGVzdCkoVGVzdHMuZWxlbWVudEF0KGkpKTsKKyAgIGlmICgoIWl0ZW0ub2spKSAKKyAgICB7CisgICAgIGJhZCsrOworICAgICBlcnJsbigiRmFpbGVkOiIrIiAiK2l0ZW0ubmFtZSk7CisgICAgfQorICAgfQorICB9LyppKi8KKyAgdG90YWxjb3VudD10b3RhbGNvdW50K2NvdW50OworICBUZXN0cz1uZXcgamF2YS51dGlsLlZlY3RvcigxMDApOyAvLyByZWluaXRpYWxpemUKKyAgaWYgKGJhZD09MCkgCisgICBzYXkoIk9LIisiICIrbGVmdChzZWN0aW9uLDE0KSsiICIrcmlnaHQoIlsiK2NvdW50KyIgIisidGVzdHNdIiwxMikpOworICBlbHNlIAorICAgdGhyb3cgbmV3IERpYWdFeGNlcHRpb24oc2VjdGlvbisiICIrIltmYWlsZWQiKyIgIitiYWQrIiAiKyJvZiIrIiAiK2NvdW50KyIgIisidGVzdHNdIixiYWQpOworICByZXR1cm47fQorCisgCisgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAvKiByaWdodCAtIFV0aWxpdHkgdG8gZG8gYSAncmlnaHQnIG9uIGEgSmF2YSBTdHJpbmcgICAgICAgICAgICAgICAgICAqLworIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgLyogQXJnMSBpcyBzdHJpbmcgdG8gcmlnaHQtanVzdGlmeSAqLworIC8qIEFyZzIgaXMgZGVzaXJlZCBsZW5ndGggKi8KKyAKKyBwcml2YXRlIHN0YXRpYyBqYXZhLmxhbmcuU3RyaW5nIHJpZ2h0KGphdmEubGFuZy5TdHJpbmcgcyxpbnQgbGVuKXsKKyAgaW50IHNsZW47CisgIHNsZW49cy5sZW5ndGgoKTsKKyAgaWYgKHNsZW49PWxlbikgCisgICByZXR1cm4gczsgLy8gbGVuZ3RoIGp1c3QgcmlnaHQKKyAgaWYgKHNsZW4+bGVuKSAKKyAgIHJldHVybiBzLnN1YnN0cmluZyhzbGVuLWxlbik7IC8vIHRydW5jYXRlIG9uIGxlZnQKKyAgLy8gdG9vIHNob3J0CisgIHJldHVybiAobmV3IGphdmEubGFuZy5TdHJpbmcobmV3IGNoYXJbbGVuLXNsZW5dKSkucmVwbGFjZSgnXDAwMCcsJyAnKS5jb25jYXQocyk7CisgIH0KKworIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgLyogbGVmdCAtIFV0aWxpdHkgdG8gZG8gYSAnbGVmdCcgb24gYSBKYXZhIFN0cmluZyAgICAgICAgICAgICAgICAgICAgKi8KKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIC8qIEFyZzEgaXMgc3RyaW5nIHRvIGxlZnQtanVzdGlmeSAqLworIC8qIEFyZzIgaXMgZGVzaXJlZCBsZW5ndGggKi8KKyAKKyBwcml2YXRlIHN0YXRpYyBqYXZhLmxhbmcuU3RyaW5nIGxlZnQoamF2YS5sYW5nLlN0cmluZyBzLGludCBsZW4peworICBpbnQgc2xlbjsKKyAgc2xlbj1zLmxlbmd0aCgpOworICBpZiAoc2xlbj09bGVuKSAKKyAgIHJldHVybiBzOyAvLyBsZW5ndGgganVzdCByaWdodAorICBpZiAoc2xlbj5sZW4pIAorICAgcmV0dXJuIHMuc3Vic3RyaW5nKDAsbGVuKTsgLy8gdHJ1bmNhdGUgb24gcmlnaHQKKyAgLy8gdG9vIHNob3J0CisgIHJldHVybiBzLmNvbmNhdCgobmV3IGphdmEubGFuZy5TdHJpbmcobmV3IGNoYXJbbGVuLXNsZW5dKSkucmVwbGFjZSgnXDAwMCcsJyAnKSk7CisgIH0KKworIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgLyogc2F5IC0gVXRpbGl0eSB0byBkbyBhIGRpc3BsYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIC8qIEFyZzEgaXMgc3RyaW5nIHRvIGRpc3BsYXksIG9taXR0ZWQgaWYgbm9uZSAqLworIC8qICAgICAgICAgW251bGwgb3Igb21pdHRlZCBnaXZlcyBibGFuayBsaW5lXSAqLworIC8vIHRoaXMgdmVyc2lvbiBkb2Vzbid0IGhlZWQgY29udGludWF0aW9uIGZpbmFsIGNoYXJhY3RlcgorIAorIHByaXZhdGUgdm9pZCBzYXkoKXsKKyAgc2F5KChqYXZhLmxhbmcuU3RyaW5nKW51bGwpO3JldHVybjsKKyAgfQorIHByaXZhdGUgdm9pZCBzYXkoamF2YS5sYW5nLlN0cmluZyBzKXsKKyAgaWYgKHM9PW51bGwpIAorICAgcz0iICAiOworICBsb2dsbihzKTsKKyAgcmV0dXJuO30KKworIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgLyogU2NhZmZvbGRpbmcgZm9yIHN0YW5kLWFsb25lIHJ1biAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIC8qKiBFbnRyeSBwb2ludCBmb3Igc3RhbmQtYWxvbmUgcnVuLiAgSXQgY29uc3RydWN0cyBhCisgICogIDxjb2RlPkRpYWdCaWdEZWNpbWFsPC9jb2RlPiBvYmplY3QgYW5kIHRoZW4gaW52b2tlcyBpdHMKKyAgKiAge0BsaW5rICNkaWFncnVuKGJvb2xlYW4pfSBtZXRob2QgdG8gcnVuIHRoZSB0ZXN0CisgICogIHN1aXRlLgorICAqCisgICogQHBhcmFtIGFyZ3MgVGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudCBzdHJpbmcgYXJyYXkuCisgICogICBpZiB0aGUgZmlyc3Qgd29yZCBpcyAnPGNvZGU+Y29udGludWU8L2NvZGU+JyB0aGVuIHRyeSBhbmQgcnVuCisgICogICBhbGwgdGVzdHMsIG90aGVyd2lzZSBzdG9wIGFmdGVyIHRoZSBmaXJzdCBmYWlsaW5nIHRlc3QgZ3JvdXAuCisgICovCisgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbnsKKyAgICBuZXcgRGlhZ0JpZ0RlY2ltYWwoKS5ydW4oYXJncyk7CisgfQorIHB1YmxpYyB2b2lkIFRlc3RCaWdEZWNpbWFsKCl7CisJICBib29sZWFuICRjb250aW51ZTsKKwkgIGludCBmYWlsczsKKwkgICRjb250aW51ZT1mYWxzZTsKKwkgIGZhaWxzPWRpYWdydW4oJGNvbnRpbnVlKTsgLy8gYW5kIHJ1biB0aGUgdGVzdHMKKwkgIGlmKGZhaWxzIT0wKSB7CisgICAgICAgICBlcnJsbigiRGlhZ25vc3RpYyBUZXN0cyBmb3IgbWF0aCBmYWlsZWQuIE51bWJlciBvZiBlcnJvcnM6ICIgK2ZhaWxzKTsKKwkgIH0KKyAgfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qIFRlc3QgLS0gcmVwcmVzZW50cyBhIHRlc3QgYW5kIGl0cyBzdGF0dXMgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDE5OTgsIDIwMDAuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgICAgICAgKi8KKy8qIEF1dGhvcjogTWlrZSBDb3dsaXNoYXcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiAxOTk4LjA3LjE1IEluaXRpYWwgdmVyc2lvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIDIwMDAuMDMuMjcgQ2hhbmdlIHRvIGphdmFkb2MgY29tbWVudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisvKioKKyAqIFRoZSA8Y29kZT5UZXN0PC9jb2RlPiBjbGFzcyBpcyB1c2VkIHRvIHJlY29yZCBhIHNwZWNpZmljIHRlc3QuCisgKiBXaGVuIGNvbnN0cnVjdGVkLCBpdCBub3RlcyB0aGUgbmFtZSBvZiB0aGUgdGVzdCBhbmQgYWRkcyB0aGUgdGVzdAorICogdG8gdGhlIGxpc3Qgb2YgdGVzdHMgaGVsZCBieSB0aGUgcGFyZW50LgorICoKKyAqIEl0cyA8Y29kZT5vazwvZmxhZz4gaXMgYXNzaWduZWQgZGlyZWN0bHkgdG8gcmVjb3JkIHdoZXRoZXIgdGhlCisgKiB0ZXN0IHN1Y2NlZWRlZCAoMSkgb3IgZmFpbGVkICgwKS4KKyAqCisgKiBAc2VlICAgICBjb20uaWJtLmljdS5tYXRoLkRpYWdCaWdEZWNpbWFsCisgKiBAdmVyc2lvbiAxLjAwIDIwMDAuMDMuMjcKKyAqIEBhdXRob3IgIE1pa2UgQ293bGlzaGF3CisgKi8KKyAKKyBwdWJsaWMgY2xhc3MgVGVzdHsKKyAgcHJpdmF0ZSBmaW5hbCB0cmFuc2llbnQgamF2YS5sYW5nLlN0cmluZyAkMD0iRGlhZ0JpZ0RlY2ltYWwubnJ4IjsKKyAgLyogcHJvcGVydGllcyBzaGFyZWQgdHJhbnNpZW50ICovCisgLyoqIFRoZSBuYW1lIG9mIHRoZSB0ZXN0LiAqLworICB0cmFuc2llbnQgamF2YS5sYW5nLlN0cmluZyBuYW1lOworIC8qKiBTdWNjZXNzIGZsYWc7IHdpbGwgYmUgc2V0IHRvIDEgKHRydWUpIGlmIHRoZSB0ZXN0IHN1Y2NlZWRlZCwgb3IgMAorICAqIChmYWxzZSkgaWYgdGhlIHRlc3QgZmFpbGVkLgorICAqLworICB0cmFuc2llbnQgYm9vbGVhbiBvazsKKworIAorIC8qKgorICAqIENvbnN0cnVjdHMgYSBuZXcgPGNvZGU+VGVzdDwvY29kZT4gd2l0aCBhIHNwZWNpZmllZCBuYW1lLgorICAqCisgICogQHBhcmFtIHRlc3RuYW1lIFRoZSA8Y29kZT5TdHJpbmc8L2NvZGU+IG5hbWluZyB0aGUgdGVzdC4KKyAgKi8KKyAgCisgIHB1YmxpYyBUZXN0KGphdmEubGFuZy5TdHJpbmcgdGVzdG5hbWUpe3N1cGVyKCk7CisgICBuYW1lPXRlc3RuYW1lOyAvLyBzYXZlIHRoZSBuYW1lCisgICBEaWFnQmlnRGVjaW1hbC50aGlzLlRlc3RzLmFkZEVsZW1lbnQoKGphdmEubGFuZy5PYmplY3QpdGhpcyk7IC8vIGFuZCBhZGQgdG8gcGFyZW50J3MgbGlzdAorICAgcmV0dXJuO30KKyAgfQorCisgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgLyogRGlhZ0V4Y2VwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgLyogQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiAxOTk2LCAyMDAwLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gICAgICAgICovCisgLyogQXV0aG9yOiBNaWtlIENvd2xpc2hhdyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgLyogMTk5Ni4wNS4yNyBJbml0aWFsIHZlcnNpb24gaW4gTmV0UmV4eCAoYXMgRGlhZ1gpICAgICAgICAgICAgICAgICAgICovCisgLyogMTk5OC4wNi4yNSBDb3BpZWQgZnJvbSBOZXRSZXh4IHRlc3Qgc3VpdGUgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgLyogMTk5OS4wNy4wMyBBZGQgZmFpbCBjb3VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgLyogMjAwMC4wMy4yNyBDaGFuZ2UgdG8gamF2YWRvYyBjb21tZW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgCisgLyoqCisgICogVGhlIDxjb2RlPkRpYWdFeGNlcHRpb248L2NvZGU+IGNsYXNzIGlzIHVzZWQgdG8gc2lnbmFsIHRoZSBmYWlsdXJlCisgICogb2YgYSB0ZXN0IGdyb3VwLiAgSXQgcmVjb3JkcyB0aGUgbnVtYmVyIG9mIGZhaWx1cmVzIGluIHRoZSBncm91cC4KKyAgKgorICAqIEBzZWUgICAgIGNvbS5pYm0uaWN1Lm1hdGguRGlhZ0JpZ0RlY2ltYWwKKyAgKiBAdmVyc2lvbiAxLjAwIDIwMDAuMDMuMjcKKyAgKiBAYXV0aG9yICBNaWtlIENvd2xpc2hhdworICAqLworIAorIHB1YmxpYyBzdGF0aWMgY2xhc3MgRGlhZ0V4Y2VwdGlvbiBleHRlbmRzIGphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9ueworICBwcml2YXRlIGZpbmFsIHRyYW5zaWVudCBqYXZhLmxhbmcuU3RyaW5nICQwPSJEaWFnQmlnRGVjaW1hbC5ucngiOworIAorICAvKiBwcm9wZXJ0aWVzIHNoYXJlZCB0cmFuc2llbnQgKi8KKyAvKiogdGhlIGNvdW50IG9mIGZhaWxlZCB0ZXN0cyBpbiB0aGUgZ3JvdXAgd2hpY2ggc2lnbmFsbGVkIHRoaXMKKyAgICogZXhjZXB0aW9uLgorICAgKi8KKyAgdHJhbnNpZW50IGludCBmYWlsY291bnQ9MDsKKyAvLyBudW1iZXIgb2YgdGVzdHMgd2hpY2ggZmFpbGVkCisgCisgLyoqCisgICogQ29uc3RydWN0cyBhIG5ldyA8Y29kZT5EaWFnRXhjZXB0aW9uPC9jb2RlPiB3aXRoIGEgbWVzc2FnZSBhbmQKKyAgKiBmYWlsdXJlIGNvdW50LiAgVGhpcyBpcyB0aHJvd24gd2hlbiBhIGdyb3VwIG9mIHRlc3RzIGZhaWxzLgorICAqCisgICogQHBhcmFtIG1lc3NhZ2UgVGhlIDxjb2RlPlN0cmluZzwvY29kZT4gbWVzc2FnZSBkZXNjcmliaW5nIHRoZSBncm91cC4KKyAgKiBAcGFyYW0gZmFpbHMgICBUaGUgPGNvZGU+aW50PC9jb2RlPiBudW1iZXIgb2YgZmFpbGVkIHRlc3RzIGluIHRoZSAgZ3JvdXAuCisgICovCisgIAorICBwdWJsaWMgRGlhZ0V4Y2VwdGlvbihqYXZhLmxhbmcuU3RyaW5nIG1lc3NhZ2UsaW50IGZhaWxzKXsKKyAgIHN1cGVyKG1lc3NhZ2UpOworICAgZmFpbGNvdW50PWZhaWxzOworICAgcmV0dXJuO30KKyB9fQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NhbGVuZGFyL0FzdHJvVGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NhbGVuZGFyL0FzdHJvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjU0ODllYTUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY2FsZW5kYXIvQXN0cm9UZXN0LmphdmEKQEAgLTAsMCArMSwxNTUgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9jYWxlbmRhci9Bc3Ryb1Rlc3QuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8xMC8yNCAxOTozMTo0NiAkIAorICogJFJldmlzaW9uOiAxLjggJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0LmNhbGVuZGFyOworCisvLyBBc3Ryb1Rlc3QKKworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CisKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYudGVzdC4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuKjsKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLkNhbGVuZGFyQXN0cm9ub21lci4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuRGF0ZUZvcm1hdDsKKworLy8gVE9ETzogdHJ5IGZpbmRpbmcgbmV4dCBuZXcgbW9vbiBhZnRlciAgMDcvMjgvMTk4NCAxNjowMCBHTVQKKworcHVibGljIGNsYXNzIEFzdHJvVGVzdCBleHRlbmRzIFRlc3RGbXdrIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgbmV3IEFzdHJvVGVzdCgpLnJ1bihhcmdzKTsKKyAgICB9CisKKyAgICBzdGF0aWMgZmluYWwgZG91YmxlIFBJID0gTWF0aC5QSTsKKyAgICAKKyAgICBzdGF0aWMgR3JlZ29yaWFuQ2FsZW5kYXIgZ2MgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIobmV3IFNpbXBsZVRpbWVab25lKDAsICJVVEMiKSk7CisgICAgc3RhdGljIENhbGVuZGFyQXN0cm9ub21lciBhc3RybyA9IG5ldyBDYWxlbmRhckFzdHJvbm9tZXIoKTsKKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0U29sYXJMb25naXR1ZGUoKSB7CisgICAgICAgIGZpbmFsIGRvdWJsZSB0ZXN0c1tdW10gPSB7CisgICAgICAgICAgICB7IDE5ODAsIDcsIDI3LCAwMCwgMDAsIDEyNC4xMTQzNDcgfSwKKyAgICAgICAgICAgIHsgMTk4OCwgNywgMjcsIDAwLCAwMCwgMTI0LjE4NzczMiB9LAorICAgICAgICB9OworICAgICAgICBsb2dsbigiIik7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGVzdHMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGdjLmNsZWFyKCk7CisgICAgICAgICAgICBnYy5zZXQoKGludCl0ZXN0c1tpXVswXSwgKGludCl0ZXN0c1tpXVsxXS0xLCAoaW50KXRlc3RzW2ldWzJdLCAoaW50KXRlc3RzW2ldWzNdLCAoaW50KSB0ZXN0c1tpXVs0XSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGFzdHJvLnNldERhdGUoZ2MuZ2V0VGltZSgpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZG91YmxlIGxvbmdpdHVkZSA9IGFzdHJvLmdldFN1bkxvbmdpdHVkZSgpOworICAgICAgICAgICAgbG9uZ2l0dWRlID0gMDsKKyAgICAgICAgICAgIEVxdWF0b3JpYWwgcmVzdWx0ID0gYXN0cm8uZ2V0U3VuUG9zaXRpb24oKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG51bGw7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdEx1bmFyUG9zaXRpb24oKSB7CisgICAgICAgIGZpbmFsIGRvdWJsZSB0ZXN0c1tdW10gPSB7CisgICAgICAgICAgICB7IDE5NzksIDIsIDI2LCAxNiwgMDAsICAwLCAwIH0sCisgICAgICAgIH07CisgICAgICAgIGxvZ2xuKCIiKTsKKyAgICAgICAgCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGVzdHMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGdjLmNsZWFyKCk7CisgICAgICAgICAgICBnYy5zZXQoKGludCl0ZXN0c1tpXVswXSwgKGludCl0ZXN0c1tpXVsxXS0xLCAoaW50KXRlc3RzW2ldWzJdLCAoaW50KXRlc3RzW2ldWzNdLCAoaW50KSB0ZXN0c1tpXVs0XSk7CisgICAgICAgICAgICBhc3Ryby5zZXREYXRlKGdjLmdldFRpbWUoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEVxdWF0b3JpYWwgcmVzdWx0ID0gYXN0cm8uZ2V0TW9vblBvc2l0aW9uKCk7CisgICAgICAgICAgICByZXN1bHQgPSBudWxsOworICAgICAgICB9CisKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdENvb3JkaW5hdGVzKCkgeworICAgICAgICBFcXVhdG9yaWFsIHJlc3VsdCA9IGFzdHJvLmVjbGlwdGljVG9FcXVhdG9yaWFsKDEzOS42ODYxMTEgKiBQSS8gMTgwLjAsIDQuODc1Mjc4KiBQSSAvIDE4MC4wKTsKKyAgICAgICAgbG9nbG4oInJlc3VsdCBpcyAiICsgcmVzdWx0ICsgIjsgICIgKyByZXN1bHQudG9IbXNTdHJpbmcoKSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RDb3ZlcmFnZSgpIHsKKwlHcmVnb3JpYW5DYWxlbmRhciBjYWwgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoMTk1OCwgQ2FsZW5kYXIuQVVHVVNULCAxNSk7CisJRGF0ZSB0aGVuID0gY2FsLmdldFRpbWUoKTsKKwlDYWxlbmRhckFzdHJvbm9tZXIgbXlhc3RybyA9IG5ldyBDYWxlbmRhckFzdHJvbm9tZXIodGhlbik7CisKKwkvL0xhdGl0dWRlOiAgMzQgZGVncmVlcyAwNScgTm9ydGggIAorCS8vTG9uZ2l0dWRlOiAgMTE4IGRlZ3JlZXMgMjInIFdlc3QgIAorCWRvdWJsZSBsYUxhdCA9IDM0ICsgNWQvNjAsIGxhTG9uZyA9IDM2MCAtICgxMTggKyAyMmQvNjApOworCUNhbGVuZGFyQXN0cm9ub21lciBteWFzdHJvMiA9IG5ldyBDYWxlbmRhckFzdHJvbm9tZXIobGFMb25nLCBsYUxhdCk7CisKKwlkb3VibGUgZWNsTGF0ID0gbGFMYXQgKiBNYXRoLlBJIC8gMzYwOworCWRvdWJsZSBlY2xMb25nID0gbGFMb25nICogTWF0aC5QSSAvIDM2MDsKKwlFY2xpcHRpYyBlY2wgPSBuZXcgRWNsaXB0aWMoZWNsTGF0LCBlY2xMb25nKTsKKwlsb2dsbigiZWNsaXB0aWM6ICIgKyBlY2wpOworCisJQ2FsZW5kYXJBc3Ryb25vbWVyIG15YXN0cm8zID0gbmV3IENhbGVuZGFyQXN0cm9ub21lcigpOworCW15YXN0cm8zLnNldEp1bGlhbkRheSgoNDcxMyArIDIwMDApICogMzY1LjI1KTsKKworCUNhbGVuZGFyQXN0cm9ub21lcltdIGFzdHJvbm9tZXJzID0geworCSAgICBteWFzdHJvLCBteWFzdHJvMiwgbXlhc3RybzMsIG15YXN0cm8yIC8vIGNoZWNrIGNhY2hlCisJfTsKKworCWZvciAoaW50IGkgPSAwOyBpIDwgYXN0cm9ub21lcnMubGVuZ3RoOyArK2kpIHsKKwkgICAgQ2FsZW5kYXJBc3Ryb25vbWVyIGFzdHJvID0gYXN0cm9ub21lcnNbaV07CisKKwkgICAgbG9nbG4oImFzdHJvOiAiICsgYXN0cm8pOworCSAgICBsb2dsbigiICAgdGltZTogIiArIGFzdHJvLmdldFRpbWUoKSk7CisJICAgIGxvZ2xuKCIgICBkYXRlOiAiICsgYXN0cm8uZ2V0RGF0ZSgpKTsKKwkgICAgbG9nbG4oIiAgIGNlbnQ6ICIgKyBhc3Ryby5nZXRKdWxpYW5DZW50dXJ5KCkpOworCSAgICBsb2dsbigiICAgZ3cgc2lkZXJlYWw6ICIgKyBhc3Ryby5nZXRHcmVlbndpY2hTaWRlcmVhbCgpKTsKKwkgICAgbG9nbG4oIiAgIGxvYyBzaWRlcmVhbDogIiArIGFzdHJvLmdldExvY2FsU2lkZXJlYWwoKSk7CisJICAgIGxvZ2xuKCIgICBlcXUgZWNsOiAiICsgYXN0cm8uZWNsaXB0aWNUb0VxdWF0b3JpYWwoZWNsKSk7CisJICAgIGxvZ2xuKCIgICBlcXUgbG9uZzogIiArIGFzdHJvLmVjbGlwdGljVG9FcXVhdG9yaWFsKGVjbExvbmcpKTsKKwkgICAgbG9nbG4oIiAgIGhvcml6OiAiICsgYXN0cm8uZWNsaXB0aWNUb0hvcml6b24oZWNsTG9uZykpOworCSAgICBsb2dsbigiICAgc3VucmlzZTogIiArIG5ldyBEYXRlKGFzdHJvLmdldFN1blJpc2VTZXQodHJ1ZSkpKTsKKwkgICAgbG9nbG4oIiAgIHN1bnNldDogIiArIG5ldyBEYXRlKGFzdHJvLmdldFN1blJpc2VTZXQoZmFsc2UpKSk7CisJICAgIGxvZ2xuKCIgICBtb29uIHBoYXNlOiAiICsgYXN0cm8uZ2V0TW9vblBoYXNlKCkpOworCSAgICBsb2dsbigiICAgbW9vbnJpc2U6ICIgKyBuZXcgRGF0ZShhc3Ryby5nZXRNb29uUmlzZVNldCh0cnVlKSkpOworCSAgICBsb2dsbigiICAgbW9vbnNldDogIiArIG5ldyBEYXRlKGFzdHJvLmdldE1vb25SaXNlU2V0KGZhbHNlKSkpOworCSAgICBsb2dsbigiICAgcHJldiBzdW1tZXIgc29sc3RpY2U6ICIgKyBuZXcgRGF0ZShhc3Ryby5nZXRTdW5UaW1lKGFzdHJvLlNVTU1FUl9TT0xTVElDRSwgZmFsc2UpKSk7CisJICAgIGxvZ2xuKCIgICBuZXh0IHN1bW1lciBzb2xzdGljZTogIiArIG5ldyBEYXRlKGFzdHJvLmdldFN1blRpbWUoYXN0cm8uU1VNTUVSX1NPTFNUSUNFLCB0cnVlKSkpOworCSAgICBsb2dsbigiICAgcHJldiBmdWxsIG1vb246ICIgKyBuZXcgRGF0ZShhc3Ryby5nZXRNb29uVGltZShhc3Ryby5GVUxMX01PT04sIGZhbHNlKSkpOworCSAgICBsb2dsbigiICAgbmV4dCBmdWxsIG1vb246ICIgKyBuZXcgRGF0ZShhc3Ryby5nZXRNb29uVGltZShhc3Ryby5GVUxMX01PT04sIHRydWUpKSk7CisJfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RTdW5yaXNlVGltZXMoKSB7CisgICAgICAgIC8vICAgICAgICBsb2dsbigiU3VucmlzZS9TdW5zZXQgdGltZXMgZm9yIFNhbiBKb3NlLCBDYWxpZm9ybmlhLCBVU0EiKTsKKyAgICAgICAgLy8gICAgICAgIENhbGVuZGFyQXN0cm9ub21lciBhc3RybyA9IG5ldyBDYWxlbmRhckFzdHJvbm9tZXIoLTEyMS41NSwgMzcuMjApOworICAgICAgICAvLyAgICAgICAgVGltZVpvbmUgdHogPSBUaW1lWm9uZS5nZXRUaW1lWm9uZSgiQW1lcmljYS9Mb3NfQW5nZWxlcyIpOworCisgICAgICAgIGxvZ2xuKCJTdW5yaXNlL1N1bnNldCB0aW1lcyBmb3IgVG9yb250bywgQ2FuYWRhIik7CisgICAgICAgIENhbGVuZGFyQXN0cm9ub21lciBhc3RybyA9IG5ldyBDYWxlbmRhckFzdHJvbm9tZXIoLTc5LjM4LCA0My42NSk7CisgICAgICAgIFRpbWVab25lIHR6ID0gVGltZVpvbmUuZ2V0VGltZVpvbmUoIkFtZXJpY2EvRGV0cm9pdCIpOworCisgICAgICAgIEdyZWdvcmlhbkNhbGVuZGFyIGNhbCA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcih0eiwgTG9jYWxlLlVTKTsKKyAgICAgICAgY2FsLnNldChjYWwuWUVBUiwgMjAwMSk7CisgICAgICAgIGNhbC5zZXQoY2FsLk1PTlRILCBjYWwuQVBSSUwpOworICAgICAgICBjYWwuc2V0KGNhbC5EQVlfT0ZfTU9OVEgsIDEpOworCisgICAgICAgIERhdGVGb3JtYXQgZGYgPSBEYXRlRm9ybWF0LmdldFRpbWVJbnN0YW5jZShjYWwsIERhdGVGb3JtYXQuTUVESVVNLCBMb2NhbGUuVVMpOworICAgICAgICBEYXRlRm9ybWF0IGRheSA9IERhdGVGb3JtYXQuZ2V0RGF0ZUluc3RhbmNlKGNhbCwgRGF0ZUZvcm1hdC5NRURJVU0sIExvY2FsZS5VUyk7CisJCQorCQkKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgMzA7IGkrKykgeworICAgICAgICAgICAgYXN0cm8uc2V0RGF0ZShjYWwuZ2V0VGltZSgpKTsKKwkJCQorICAgICAgICAgICAgRGF0ZSBzdW5yaXNlID0gbmV3IERhdGUoYXN0cm8uZ2V0U3VuUmlzZVNldCh0cnVlKSk7CisgICAgICAgICAgICBEYXRlIHN1bnNldCA9IG5ldyBEYXRlKGFzdHJvLmdldFN1blJpc2VTZXQoZmFsc2UpKTsKKworICAgICAgICAgICAgbG9nbG4oIkRhdGU6ICIgKyBkYXkuZm9ybWF0KGNhbC5nZXRUaW1lKCkpICsKKyAgICAgICAgICAgICAgICAgICIsIFN1bnJpc2U6ICIgKyBkZi5mb3JtYXQoc3VucmlzZSkgKworICAgICAgICAgICAgICAgICAgIiwgU3Vuc2V0OiAiICsgZGYuZm9ybWF0KHN1bnNldCkpOworCQkJCisgICAgICAgICAgICBjYWwuYWRkKENhbGVuZGFyLkRBVEUsIDEpOworICAgICAgICB9CQkKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY2FsZW5kYXIvQ2FsZW5kYXJSZWdyZXNzaW9uLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY2FsZW5kYXIvQ2FsZW5kYXJSZWdyZXNzaW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNWM3ZDM5ZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9jYWxlbmRhci9DYWxlbmRhclJlZ3Jlc3Npb24uamF2YQpAQCAtMCwwICsxLDE4ODcgQEAKKy8qKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMS0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY2FsZW5kYXIvQ2FsZW5kYXJSZWdyZXNzaW9uLmphdmEsdiAkCisgKiAkRGF0ZTogMjAwMi8xMS8yMCAxOTo0ODoxMCAkCisgKiAkUmV2aXNpb246IDEuMTQgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3QuY2FsZW5kYXI7CitpbXBvcnQgY29tLmlibS5pY3UudXRpbC4qOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworaW1wb3J0IGphdmEudXRpbC5TZXQ7CitpbXBvcnQgY29tLmlibS5pY3UubGFuZy4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuKjsKKworLyoqCisgKiBAdGVzdCAxLjMyIDk5LzExLzE0CisgKiBAYnVnIDQwMzE1MDIgNDAzNTMwMSA0MDQwOTk2IDQwNTE3NjUgNDA1OTY1NCA0MDYxNDc2IDQwNzA1MDIgNDA3MTE5NyA0MDcxMzg1CisgKiA0MDczOTI5IDQwODMxNjcgNDA4NjcyNCA0MDkyMzYyIDQwOTU0MDcgNDA5NjIzMSA0MDk2NTM5IDQxMDAzMTEgNDEwMzI3MQorICogNDEwNjEzNiA0MTA4NzY0IDQxMTQ1NzggNDExODM4NCA0MTI1ODgxIDQxMjU4OTIgNDEzNjM5OSA0MTQxNjY1IDQxNDI5MzMKKyAqIDQxNDUxNTggNDE0NTk4MyA0MTQ3MjY5IDQxNDk2NzcgNDE2MjU4NyA0MTY1MzQzIDQxNjYxMDkgNDE2NzA2MCA0MTczNTE2CisgKiA0MTc0MzYxIDQxNzc0ODQgNDE5NzY5OSA0MjA5MDcxIDQyODg3OTIKKyAqLworcHVibGljIGNsYXNzIENhbGVuZGFyUmVncmVzc2lvbiBleHRlbmRzIGNvbS5pYm0uaWN1LmRldi50ZXN0LlRlc3RGbXdrIHsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBuZXcgQ2FsZW5kYXJSZWdyZXNzaW9uKCkucnVuKGFyZ3MpOworICAgIH0KKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmdbXSBGSUVMRF9OQU1FID0geworICAgICAgICAiRVJBIiwgIllFQVIiLCAiTU9OVEgiLCAiV0VFS19PRl9ZRUFSIiwgIldFRUtfT0ZfTU9OVEgiLAorICAgICAgICAiREFZX09GX01PTlRIIiwgIkRBWV9PRl9ZRUFSIiwgIkRBWV9PRl9XRUVLIiwKKyAgICAgICAgIkRBWV9PRl9XRUVLX0lOX01PTlRIIiwgIkFNX1BNIiwgIkhPVVIiLCAiSE9VUl9PRl9EQVkiLAorICAgICAgICAiTUlOVVRFIiwgIlNFQ09ORCIsICJNSUxMSVNFQ09ORCIsICJaT05FX09GRlNFVCIsCisgICAgICAgICJEU1RfT0ZGU0VUIiwgIllFQVJfV09ZIiwgIkRPV19MT0NBTCIsICJFWFRFTkRFRF9ZRUFSIiwKKyAgICAgICAgIkpVTElBTl9EQVkiLCAiTUlMTElTRUNPTkRTX0lOX0RBWSIsCisgICAgfTsKKworICAgIC8qCisgICAgICBTeW5vcHNpczogamF2YS5zcWwuVGltZXN0YW1wIGNvbnN0cnVjdG9yIHdvcmtzIHdyb25nIG9uIFdpbmRvd3MgOTUKKworICAgICAgPT09PSBIZXJlIGlzIHRoZSB0ZXN0ID09PT0gCisgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nIGFyZ3NbXSkgeyAKKyAgICAgICAgamF2YS5zcWwuVGltZXN0YW1wIHQ9IG5ldyBqYXZhLnNxbC5UaW1lc3RhbXAoMCwxNSw1LDUsOCwxMywxMjM0NTY3MDApOyAKKyAgICAgICAgbG9nbG4oImV4cGVjdGVkPTE5MDEtMDQtMDUgMDU6MDg6MTMuMTIzNDU2NyIpOyAKKyAgICAgICAgbG9nbG4oIiByZXN1bHQ9Iit0KTsgCisgICAgICB9IAorICAgICAgCisgICAgICA9PT09IEhlcmUgaXMgdGhlIG91dHB1dCBvZiB0aGUgdGVzdCBvbiBTb2xhcmlzIG9yIE5UID09PT0gCisgICAgICBleHBlY3RlZD0xOTAxLTA0LTA1IDA1OjA4OjEzLjEyMzQ1NjcgCisgICAgICByZXN1bHQ9MTkwMS0wNC0wNSAwNTowODoxMy4xMjM0NTY3IAorICAgICAgCisgICAgICA9PT09IEhlcmUgaXMgdGhlIG91dHB1dCBvZiB0aGUgdGVzdCBvbiBXaW5kb3dzOTUgPT09PSAKKyAgICAgIGV4cGVjdGVkPTE5MDEtMDQtMDUgMDU6MDg6MTMuMTIzNDU2NyAKKyAgICAgIHJlc3VsdD0xOTAxLTA0LTA1IDA2OjA4OjEzLjEyMzQ1NjcgCisgICAgICAqLworCisgICAgcHVibGljIHZvaWQgVGVzdDQwMzE1MDIoKSB7CisgICAgICAgIC8vIFRoaXMgYnVnIGFjdHVhbGx5IG9jY3VycyBvbiBXaW5kb3dzIE5UIGFzIHdlbGwsIGFuZCBkb2Vzbid0CisgICAgICAgIC8vIHJlcXVpcmUgdGhlIGhvc3Qgem9uZSB0byBiZSBzZXQ7IGl0IGNhbiBiZSBzZXQgaW4gSmF2YS4KKyAgICAgICAgU3RyaW5nW10gaWRzID0gVGltZVpvbmUuZ2V0QXZhaWxhYmxlSURzKCk7CisgICAgICAgIGJvb2xlYW4gYmFkID0gZmFsc2U7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxpZHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIFRpbWVab25lIHpvbmUgPSBUaW1lWm9uZS5nZXRUaW1lWm9uZShpZHNbaV0pOworICAgICAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIgY2FsID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKHpvbmUpOworICAgICAgICAgICAgY2FsLmNsZWFyKCk7CisgICAgICAgICAgICBjYWwuc2V0KDE5MDAsIDE1LCA1LCA1LCA4LCAxMyk7CisgICAgICAgICAgICBpZiAoY2FsLmdldChDYWxlbmRhci5IT1VSKSAhPSA1KSB7CisgICAgICAgICAgICAgICAgbG9nbG4oIkZhaWw6ICIgKyB6b25lLmdldElEKCkgKyAiICIgKworICAgICAgICAgICAgICAgICAgICAgIHpvbmUudXNlRGF5bGlnaHRUaW1lKCkgKyAiICIgKworICAgICAgICAgICAgICAgICAgICAgIGNhbC5nZXQoQ2FsZW5kYXIuRFNUX09GRlNFVCkgLyAoNjAqNjAqMTAwMCkgKyAiICIgKworICAgICAgICAgICAgICAgICAgICAgIHpvbmUuZ2V0UmF3T2Zmc2V0KCkgLyAoNjAqNjAqMTAwMCkgKworICAgICAgICAgICAgICAgICAgICAgICI6IEhPVVIgPSAiICsgY2FsLmdldChDYWxlbmRhci5IT1VSKSk7CisgICAgICAgICAgICAgICAgYmFkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZmFsc2UpIHsgLy8gQ2hhbmdlIHRvIHRydWUgdG8gZGVidWcKKyAgICAgICAgICAgICAgICBsb2dsbigiT0s6ICIgKyB6b25lLmdldElEKCkgKyAiICIgKworICAgICAgICAgICAgICAgICAgICAgIHpvbmUudXNlRGF5bGlnaHRUaW1lKCkgKyAiICIgKworICAgICAgICAgICAgICAgICAgICAgIGNhbC5nZXQoQ2FsZW5kYXIuRFNUX09GRlNFVCkgLyAoNjAqNjAqMTAwMCkgKyAiICIgKworICAgICAgICAgICAgICAgICAgICAgIHpvbmUuZ2V0UmF3T2Zmc2V0KCkgLyAoNjAqNjAqMTAwMCkgKworICAgICAgICAgICAgICAgICAgICAgICI6IEhPVVIgPSAiICsgY2FsLmdldChDYWxlbmRhci5IT1VSKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKGJhZCkgZXJybG4oIlRpbWVab25lIHByb2JsZW1zIHdpdGggR0MiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0NDAzNTMwMSgpIHsKKyAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIgYyA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcig5OCwgOCwgNyk7CisgICAgICAgIEdyZWdvcmlhbkNhbGVuZGFyIGQgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoOTgsIDgsIDcpOworICAgICAgICBpZiAoYy5hZnRlcihkKSB8fAorICAgICAgICAgICAgYy5hZnRlcihjKSB8fAorICAgICAgICAgICAgYy5iZWZvcmUoZCkgfHwKKyAgICAgICAgICAgIGMuYmVmb3JlKGMpIHx8CisgICAgICAgICAgICAhYy5lcXVhbHMoYykgfHwKKyAgICAgICAgICAgICFjLmVxdWFscyhkKSkKKyAgICAgICAgICAgIGVycmxuKCJGYWlsIik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdDQwNDA5OTYoKSB7CisgICAgICAgIFN0cmluZ1tdIGlkcyA9IFRpbWVab25lLmdldEF2YWlsYWJsZUlEcygtOCAqIDYwICogNjAgKiAxMDAwKTsKKyAgICAgICAgU2ltcGxlVGltZVpvbmUgcGR0ID0gbmV3IFNpbXBsZVRpbWVab25lKC04ICogNjAgKiA2MCAqIDEwMDAsIGlkc1swXSk7CisgICAgICAgIHBkdC5zZXRTdGFydFJ1bGUoQ2FsZW5kYXIuQVBSSUwsIDEsIENhbGVuZGFyLlNVTkRBWSwgMiAqIDYwICogNjAgKiAxMDAwKTsKKyAgICAgICAgcGR0LnNldEVuZFJ1bGUoQ2FsZW5kYXIuT0NUT0JFUiwgLTEsIENhbGVuZGFyLlNVTkRBWSwgMiAqIDYwICogNjAgKiAxMDAwKTsKKyAgICAgICAgQ2FsZW5kYXIgY2FsZW5kYXIgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIocGR0KTsKKworICAgICAgICBjYWxlbmRhci5zZXQoQ2FsZW5kYXIuTU9OVEgsMyk7CisgICAgICAgIGNhbGVuZGFyLnNldChDYWxlbmRhci5EQVlfT0ZfTU9OVEgsMTgpOworICAgICAgICBjYWxlbmRhci5zZXQoQ2FsZW5kYXIuU0VDT05ELCAzMCk7CisKKyAgICAgICAgbG9nbG4oIk1PTlRIOiAiICsgY2FsZW5kYXIuZ2V0KENhbGVuZGFyLk1PTlRIKSk7CisgICAgICAgIGxvZ2xuKCJEQVlfT0ZfTU9OVEg6ICIgKyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGVuZGFyLmdldChDYWxlbmRhci5EQVlfT0ZfTU9OVEgpKTsKKyAgICAgICAgbG9nbG4oIk1JTlVURTogIiArIGNhbGVuZGFyLmdldChDYWxlbmRhci5NSU5VVEUpKTsKKyAgICAgICAgbG9nbG4oIlNFQ09ORDogIiArIGNhbGVuZGFyLmdldChDYWxlbmRhci5TRUNPTkQpKTsKKworICAgICAgICBjYWxlbmRhci5hZGQoQ2FsZW5kYXIuU0VDT05ELDYpOworICAgICAgICAvL1RoaXMgd2lsbCBwcmludCBvdXQgdG9kYXlzIGRhdGUgZm9yIE1PTlRIIGFuZCBEQVlfT0ZfTU9OVEgKKyAgICAgICAgLy9pbnN0ZWFkIG9mIHRoZSBkYXRlIGl0IHdhcyBzZXQgdG8uCisgICAgICAgIC8vVGhpcyBoYXBwZW5zIHdoZW4gYWRkaW5nIE1JTExJU0VDT05EIG9yIE1JTlVURSBhbHNvCisgICAgICAgIGxvZ2xuKCJNT05USDogIiArIGNhbGVuZGFyLmdldChDYWxlbmRhci5NT05USCkpOworICAgICAgICBsb2dsbigiREFZX09GX01PTlRIOiAiICsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxlbmRhci5nZXQoQ2FsZW5kYXIuREFZX09GX01PTlRIKSk7CisgICAgICAgIGxvZ2xuKCJNSU5VVEU6ICIgKyBjYWxlbmRhci5nZXQoQ2FsZW5kYXIuTUlOVVRFKSk7CisgICAgICAgIGxvZ2xuKCJTRUNPTkQ6ICIgKyBjYWxlbmRhci5nZXQoQ2FsZW5kYXIuU0VDT05EKSk7CisgICAgICAgIGlmIChjYWxlbmRhci5nZXQoQ2FsZW5kYXIuTU9OVEgpICE9IDMgfHwKKyAgICAgICAgICAgIGNhbGVuZGFyLmdldChDYWxlbmRhci5EQVlfT0ZfTU9OVEgpICE9IDE4IHx8CisgICAgICAgICAgICBjYWxlbmRhci5nZXQoQ2FsZW5kYXIuU0VDT05EKSAhPSAzNikKKyAgICAgICAgICAgIGVycmxuKCJGYWlsOiBDYWxlbmRhci5hZGQgbWlzYmVoYXZlcyIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MDUxNzY1KCkgeworICAgICAgICBDYWxlbmRhciBjYWwgPSBDYWxlbmRhci5nZXRJbnN0YW5jZSgpOworICAgICAgICBjYWwuc2V0TGVuaWVudChmYWxzZSk7CisgICAgICAgIGNhbC5zZXQoQ2FsZW5kYXIuREFZX09GX1dFRUssIDApOworICAgICAgICB0cnkgeworICAgICAgICAgICAgY2FsLmdldFRpbWUoKTsKKyAgICAgICAgICAgIGVycmxuKCJGYWlsOiBEQVlfT0ZfV0VFSyAwIHNob3VsZCBiZSBkaXNhbGxvd2VkIik7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyogVXNlciBlcnJvciAtIG5vIGJ1ZyBoZXJlCisgICAgcHVibGljIHZvaWQgVGVzdDQwNTk1MjQoKSB7CisgICAgICAgIC8vIENyZWF0ZSBjYWxlbmRhciBmb3IgQXByaWwgMTAsIDE5OTcKKyAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIgY2FsZW5kYXIgID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKCk7CisgICAgICAgIC8vIHByaW50IG91dCBhIGJ1bmNoIG9mIGludGVyZXN0aW5nIHRoaW5ncworICAgICAgICBsb2dsbigiRVJBOiAiICsgY2FsZW5kYXIuZ2V0KGNhbGVuZGFyLkVSQSkpOworICAgICAgICBsb2dsbigiWUVBUjogIiArIGNhbGVuZGFyLmdldChjYWxlbmRhci5ZRUFSKSk7CisgICAgICAgIGxvZ2xuKCJNT05USDogIiArIGNhbGVuZGFyLmdldChjYWxlbmRhci5NT05USCkpOworICAgICAgICBsb2dsbigiV0VFS19PRl9ZRUFSOiAiICsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxlbmRhci5nZXQoY2FsZW5kYXIuV0VFS19PRl9ZRUFSKSk7CisgICAgICAgIGxvZ2xuKCJXRUVLX09GX01PTlRIOiAiICsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxlbmRhci5nZXQoY2FsZW5kYXIuV0VFS19PRl9NT05USCkpOworICAgICAgICBsb2dsbigiREFURTogIiArIGNhbGVuZGFyLmdldChjYWxlbmRhci5EQVRFKSk7CisgICAgICAgIGxvZ2xuKCJEQVlfT0ZfTU9OVEg6ICIgKyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGVuZGFyLmdldChjYWxlbmRhci5EQVlfT0ZfTU9OVEgpKTsKKyAgICAgICAgbG9nbG4oIkRBWV9PRl9ZRUFSOiAiICsgY2FsZW5kYXIuZ2V0KGNhbGVuZGFyLkRBWV9PRl9ZRUFSKSk7CisgICAgICAgIGxvZ2xuKCJEQVlfT0ZfV0VFSzogIiArIGNhbGVuZGFyLmdldChjYWxlbmRhci5EQVlfT0ZfV0VFSykpOworICAgICAgICBsb2dsbigiREFZX09GX1dFRUtfSU5fTU9OVEg6ICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsZW5kYXIuZ2V0KGNhbGVuZGFyLkRBWV9PRl9XRUVLX0lOX01PTlRIKSk7CisgICAgICAgIGxvZ2xuKCJBTV9QTTogIiArIGNhbGVuZGFyLmdldChjYWxlbmRhci5BTV9QTSkpOworICAgICAgICBsb2dsbigiSE9VUjogIiArIGNhbGVuZGFyLmdldChjYWxlbmRhci5IT1VSKSk7CisgICAgICAgIGxvZ2xuKCJIT1VSX09GX0RBWTogIiArIGNhbGVuZGFyLmdldChjYWxlbmRhci5IT1VSX09GX0RBWSkpOworICAgICAgICBsb2dsbigiTUlOVVRFOiAiICsgY2FsZW5kYXIuZ2V0KGNhbGVuZGFyLk1JTlVURSkpOworICAgICAgICBsb2dsbigiU0VDT05EOiAiICsgY2FsZW5kYXIuZ2V0KGNhbGVuZGFyLlNFQ09ORCkpOworICAgICAgICBsb2dsbigiTUlMTElTRUNPTkQ6ICIgKyBjYWxlbmRhci5nZXQoY2FsZW5kYXIuTUlMTElTRUNPTkQpKTsKKyAgICAgICAgbG9nbG4oIlpPTkVfT0ZGU0VUOiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICArIChjYWxlbmRhci5nZXQoY2FsZW5kYXIuWk9ORV9PRkZTRVQpLyg2MCo2MCoxMDAwKSkpOworICAgICAgICBsb2dsbigiRFNUX09GRlNFVDogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAoY2FsZW5kYXIuZ2V0KGNhbGVuZGFyLkRTVF9PRkZTRVQpLyg2MCo2MCoxMDAwKSkpOworICAgICAgICBjYWxlbmRhciAgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoMTk5NywzLDEwKTsgCisgICAgICAgIGNhbGVuZGFyLmdldFRpbWUoKTsgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgbG9nbG4oIkFwcmlsIDEwLCAxOTk3Iik7CisgICAgICAgIGxvZ2xuKCJFUkE6ICIgKyBjYWxlbmRhci5nZXQoY2FsZW5kYXIuRVJBKSk7CisgICAgICAgIGxvZ2xuKCJZRUFSOiAiICsgY2FsZW5kYXIuZ2V0KGNhbGVuZGFyLllFQVIpKTsKKyAgICAgICAgbG9nbG4oIk1PTlRIOiAiICsgY2FsZW5kYXIuZ2V0KGNhbGVuZGFyLk1PTlRIKSk7CisgICAgICAgIGxvZ2xuKCJXRUVLX09GX1lFQVI6ICIgKyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGVuZGFyLmdldChjYWxlbmRhci5XRUVLX09GX1lFQVIpKTsKKyAgICAgICAgbG9nbG4oIldFRUtfT0ZfTU9OVEg6ICIgKyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGVuZGFyLmdldChjYWxlbmRhci5XRUVLX09GX01PTlRIKSk7CisgICAgICAgIGxvZ2xuKCJEQVRFOiAiICsgY2FsZW5kYXIuZ2V0KGNhbGVuZGFyLkRBVEUpKTsKKyAgICAgICAgbG9nbG4oIkRBWV9PRl9NT05USDogIiArIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsZW5kYXIuZ2V0KGNhbGVuZGFyLkRBWV9PRl9NT05USCkpOworICAgICAgICBsb2dsbigiREFZX09GX1lFQVI6ICIgKyBjYWxlbmRhci5nZXQoY2FsZW5kYXIuREFZX09GX1lFQVIpKTsKKyAgICAgICAgbG9nbG4oIkRBWV9PRl9XRUVLOiAiICsgY2FsZW5kYXIuZ2V0KGNhbGVuZGFyLkRBWV9PRl9XRUVLKSk7CisgICAgICAgIGxvZ2xuKCJEQVlfT0ZfV0VFS19JTl9NT05USDogIiArIGNhbGVuZGFyLmdldChjYWxlbmRhci5EQVlfT0ZfV0VFS19JTl9NT05USCkpOworICAgICAgICBsb2dsbigiQU1fUE06ICIgKyBjYWxlbmRhci5nZXQoY2FsZW5kYXIuQU1fUE0pKTsKKyAgICAgICAgbG9nbG4oIkhPVVI6ICIgKyBjYWxlbmRhci5nZXQoY2FsZW5kYXIuSE9VUikpOworICAgICAgICBsb2dsbigiSE9VUl9PRl9EQVk6ICIgKyBjYWxlbmRhci5nZXQoY2FsZW5kYXIuSE9VUl9PRl9EQVkpKTsKKyAgICAgICAgbG9nbG4oIk1JTlVURTogIiArIGNhbGVuZGFyLmdldChjYWxlbmRhci5NSU5VVEUpKTsKKyAgICAgICAgbG9nbG4oIlNFQ09ORDogIiArIGNhbGVuZGFyLmdldChjYWxlbmRhci5TRUNPTkQpKTsKKyAgICAgICAgbG9nbG4oIk1JTExJU0VDT05EOiAiICsgY2FsZW5kYXIuZ2V0KGNhbGVuZGFyLk1JTExJU0VDT05EKSk7CisgICAgICAgIGxvZ2xuKCJaT05FX09GRlNFVDogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAoY2FsZW5kYXIuZ2V0KGNhbGVuZGFyLlpPTkVfT0ZGU0VUKS8oNjAqNjAqMTAwMCkpKTsgLy8gaW4gaG91cnMKKyAgICAgICAgbG9nbG4oIkRTVF9PRkZTRVQ6ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICsgKGNhbGVuZGFyLmdldChjYWxlbmRhci5EU1RfT0ZGU0VUKS8oNjAqNjAqMTAwMCkpKTsgLy8gaW4gaG91cnMKKyAgICB9CisgICAgKi8KKworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MDU5NjU0KCkgeworCS8vIHdvcmsgYXJvdW5kIGJ1ZyBmb3IgamRrMS40IG9uIHNvbGFyaXMgMi42LCB3aGljaCB1c2VzIGZ1bmt5IHRpbWV6b25lIG5hbWVzCisJLy8gamRrMS40LjEgd2lsbCBkcm9wIHN1cHBvcnQgZm9yIDIuNiBzbyB3ZSBzaG91bGQgYmUgb2sgd2hlbiBpdCBjb21lcyBvdXQKKwlqYXZhLnV0aWwuVGltZVpvbmUgamF2YXpvbmUgPSBqYXZhLnV0aWwuVGltZVpvbmUuZ2V0VGltZVpvbmUoIkdNVCIpOworCVRpbWVab25lIGljdXpvbmUgPSBUaW1lWm9uZS5nZXRUaW1lWm9uZSgiR01UIik7CisKKyAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIgZ2MgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoaWN1em9uZSk7CisgICAgICAgIAorICAgICAgICBnYy5zZXQoMTk5NywgMywgMSwgMTUsIDE2LCAxNyk7IC8vIEFwcmlsIDEsIDE5OTcKKworICAgICAgICBnYy5zZXQoQ2FsZW5kYXIuSE9VUiwgMCk7CisgICAgICAgIGdjLnNldChDYWxlbmRhci5BTV9QTSwgQ2FsZW5kYXIuQU0pOworICAgICAgICBnYy5zZXQoQ2FsZW5kYXIuTUlOVVRFLCAwKTsKKyAgICAgICAgZ2Muc2V0KENhbGVuZGFyLlNFQ09ORCwgMCk7CisgICAgICAgIGdjLnNldChDYWxlbmRhci5NSUxMSVNFQ09ORCwgMCk7CisKKyAgICAgICAgRGF0ZSBjZCA9IGdjLmdldFRpbWUoKTsKKyAgICAgICAgamF2YS51dGlsLkNhbGVuZGFyIGNhbCA9IGphdmEudXRpbC5DYWxlbmRhci5nZXRJbnN0YW5jZShqYXZhem9uZSk7CisgICAgICAgIGNhbC5jbGVhcigpOworICAgICAgICBjYWwuc2V0KDE5OTcsIDMsIDEsIDAsIDAsIDApOworICAgICAgICBEYXRlIGV4cCA9IGNhbC5nZXRUaW1lKCk7CisgICAgICAgIGlmICghY2QuZXF1YWxzKGV4cCkpCisgICAgICAgICAgICBlcnJsbigiRmFpbDogQ2FsZW5kYXIuc2V0IGJyb2tlbi4gR290ICIgKyBjZCArICIgV2FudCAiICsgZXhwKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0NDA2MTQ3NigpIHsKKyAgICAgICAgU2ltcGxlRGF0ZUZvcm1hdCBmbXQgPSBuZXcgU2ltcGxlRGF0ZUZvcm1hdCgiZGRNTU15eSIsIExvY2FsZS5VSyk7CisgICAgICAgIENhbGVuZGFyIGNhbCA9IEdyZWdvcmlhbkNhbGVuZGFyLmdldEluc3RhbmNlKFRpbWVab25lLmdldFRpbWVab25lKCJHTVQiKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2FsZS5VSyk7CisgICAgICAgIGZtdC5zZXRDYWxlbmRhcihjYWwpOworICAgICAgICB0cnkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBEYXRlIGRhdGUgPSBmbXQucGFyc2UoIjI5TUFZOTciKTsKKyAgICAgICAgICAgICAgICBjYWwuc2V0VGltZShkYXRlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCIiKTsKKyAgICAgICAgfQorICAgICAgICBjYWwuc2V0KENhbGVuZGFyLkhPVVJfT0ZfREFZLCAxMyk7CisgICAgICAgIGxvZ2xuKCJIb3VyOiAiK2NhbC5nZXQoQ2FsZW5kYXIuSE9VUl9PRl9EQVkpKTsKKyAgICAgICAgY2FsLmFkZChDYWxlbmRhci5IT1VSX09GX0RBWSwgNik7CisgICAgICAgIGxvZ2xuKCJIb3VyOiAiK2NhbC5nZXQoQ2FsZW5kYXIuSE9VUl9PRl9EQVkpKTsKKyAgICAgICAgaWYgKGNhbC5nZXQoQ2FsZW5kYXIuSE9VUl9PRl9EQVkpICE9IDE5KQorICAgICAgICAgICAgZXJybG4oIkZhaWw6IFdhbnQgMTkgR290ICIgKyBjYWwuZ2V0KENhbGVuZGFyLkhPVVJfT0ZfREFZKSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdDQwNzA1MDIoKSB7CisgICAgICAgIGphdmEudXRpbC5DYWxlbmRhciB0ZW1wY2FsID0gamF2YS51dGlsLkNhbGVuZGFyLmdldEluc3RhbmNlKCk7CisgICAgICAgIHRlbXBjYWwuY2xlYXIoKTsKKyAgICAgICAgdGVtcGNhbC5zZXQoMTk5OCwgMCwgMzApOworICAgICAgICBEYXRlIGQgPSBnZXRBc3NvY2lhdGVkRGF0ZSh0ZW1wY2FsLmdldFRpbWUoKSk7CisgICAgICAgIENhbGVuZGFyIGNhbCA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcigpOworICAgICAgICBjYWwuc2V0VGltZShkKTsKKyAgICAgICAgaWYgKGNhbC5nZXQoQ2FsZW5kYXIuREFZX09GX1dFRUspID09IENhbGVuZGFyLlNBVFVSREFZIHx8CisgICAgICAgICAgICBjYWwuZ2V0KENhbGVuZGFyLkRBWV9PRl9XRUVLKSA9PSBDYWxlbmRhci5TVU5EQVkpCisgICAgICAgICAgICBlcnJsbigiRmFpbDogV2FudCB3ZWVrZGF5IEdvdCAiICsgZCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0IHRoZSBhc3NvY2lhdGVkIGRhdGUgc3RhcnRpbmcgZnJvbSBhIHNwZWNpZmllZCBkYXRlCisgICAgICogTk9URTogdGhlIHVubmVjZXNzYXJ5ICJnZXRUaW1lKCkncyIgYmVsb3cgYXJlIGEgd29yay1hcm91bmQgZm9yIGEKKyAgICAgKiBidWcgaW4gamRrIDEuMS4zIChhbmQgcHJvYmFibHkgZWFybGllciB2ZXJzaW9ucyBhbHNvKQorICAgICAqIDxwPgorICAgICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIHN0YXJ0IGZyb20KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIERhdGUgZ2V0QXNzb2NpYXRlZERhdGUoRGF0ZSBkKSB7CisgICAgICAgIEdyZWdvcmlhbkNhbGVuZGFyIGNhbCA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcigpOworICAgICAgICBjYWwuc2V0VGltZShkKTsKKyAgICAgICAgLy9jYWwuYWRkKGZpZWxkLCBhbW91bnQpOyAvLzwtLSBQUk9CTEVNIFNFRU4gV0lUSCBmaWVsZCA9IERBVEUsTU9OVEggCisgICAgICAgIC8vIGNhbC5nZXRUaW1lKCk7ICAvLyA8LS0tIFJFTU9WRSBUSElTIFRPIFNFRSBCVUcKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIGludCB3ZCA9IGNhbC5nZXQoQ2FsZW5kYXIuREFZX09GX1dFRUspOworICAgICAgICAgICAgaWYgKHdkID09IENhbGVuZGFyLlNBVFVSREFZIHx8IHdkID09IENhbGVuZGFyLlNVTkRBWSkgeworICAgICAgICAgICAgICAgIGNhbC5hZGQoQ2FsZW5kYXIuREFURSwgMSk7CisgICAgICAgICAgICAgICAgLy8gY2FsLmdldFRpbWUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gY2FsLmdldFRpbWUoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0NDA3MTE5NygpIHsKKyAgICAgICAgZG93VGVzdChmYWxzZSk7CisgICAgICAgIGRvd1Rlc3QodHJ1ZSk7CisgICAgfQorCisgICAgdm9pZCBkb3dUZXN0KGJvb2xlYW4gbGVuaWVudCkgeworICAgICAgICBHcmVnb3JpYW5DYWxlbmRhciBjYWwgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoKTsKKyAgICAgICAgY2FsLnNldCgxOTk3LCBDYWxlbmRhci5BVUdVU1QsIDEyKTsgLy8gV2VkbmVzZGF5CisgICAgICAgIC8vIGNhbC5nZXRUaW1lKCk7IC8vIEZvcmNlIHVwZGF0ZQorICAgICAgICBjYWwuc2V0TGVuaWVudChsZW5pZW50KTsKKyAgICAgICAgY2FsLnNldCgxOTk2LCBDYWxlbmRhci5ERUNFTUJFUiwgMSk7IC8vIFNldCB0aGUgZGF0ZSB0byBiZSBEZWNlbWJlciAxLCAxOTk2CisgICAgICAgIGludCBkb3cgPSBjYWwuZ2V0KENhbGVuZGFyLkRBWV9PRl9XRUVLKTsKKyAgICAgICAgaW50IG1pbiA9IGNhbC5nZXRNaW5pbXVtKENhbGVuZGFyLkRBWV9PRl9XRUVLKTsKKyAgICAgICAgaW50IG1heCA9IGNhbC5nZXRNYXhpbXVtKENhbGVuZGFyLkRBWV9PRl9XRUVLKTsKKyAgICAgICAgbG9nbG4oY2FsLmdldFRpbWUoKS50b1N0cmluZygpKTsKKyAgICAgICAgaWYgKG1pbiAhPSBDYWxlbmRhci5TVU5EQVkgfHwgbWF4ICE9IENhbGVuZGFyLlNBVFVSREFZKQorICAgICAgICAgICAgZXJybG4oIkZBSUw6IE1pbi9tYXggYmFkIik7CisgICAgICAgIGlmIChkb3cgPCBtaW4gfHwgZG93ID4gbWF4KSAKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBEYXkgb2Ygd2VlayAiICsgZG93ICsgIiBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgaWYgKGRvdyAhPSBDYWxlbmRhci5TVU5EQVkpIAorICAgICAgICAgICAgZXJybG4oIkZBSUw6IERheSBvZiB3ZWVrIHNob3VsZCBiZSBTVU5EQVkgR290ICIgKyBkb3cpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MDcxMzg1KCkgeworCS8vIHdvcmsgYXJvdW5kIGJ1ZyBmb3IgamRrMS40IG9uIHNvbGFyaXMgMi42LCB3aGljaCB1c2VzIGZ1bmt5IHRpbWV6b25lIG5hbWVzCisJLy8gamRrMS40LjEgd2lsbCBkcm9wIHN1cHBvcnQgZm9yIDIuNiBzbyB3ZSBzaG91bGQgYmUgb2sgd2hlbiBpdCBjb21lcyBvdXQKKwlqYXZhLnV0aWwuVGltZVpvbmUgamF2YXpvbmUgPSBqYXZhLnV0aWwuVGltZVpvbmUuZ2V0VGltZVpvbmUoIkdNVCIpOworCVRpbWVab25lIGljdXpvbmUgPSBUaW1lWm9uZS5nZXRUaW1lWm9uZSgiR01UIik7CisKKyAgICAgICAgQ2FsZW5kYXIgY2FsID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoaWN1em9uZSk7CisgICAgICAgIGphdmEudXRpbC5DYWxlbmRhciB0ZW1wY2FsID0gamF2YS51dGlsLkNhbGVuZGFyLmdldEluc3RhbmNlKGphdmF6b25lKTsKKyAgICAgICAgdGVtcGNhbC5jbGVhcigpOworICAgICAgICB0ZW1wY2FsLnNldCgxOTk4LCBDYWxlbmRhci5KVU5FLCAyNCk7CisgICAgICAgIGNhbC5zZXRUaW1lKHRlbXBjYWwuZ2V0VGltZSgpKTsKKyAgICAgICAgY2FsLnNldChDYWxlbmRhci5NT05USCwgQ2FsZW5kYXIuTk9WRU1CRVIpOyAvLyBjaGFuZ2UgYSBmaWVsZAorICAgICAgICBsb2dsbihjYWwuZ2V0VGltZSgpLnRvU3RyaW5nKCkpOworICAgICAgICB0ZW1wY2FsLnNldCgxOTk4LCBDYWxlbmRhci5OT1ZFTUJFUiwgMjQpOworICAgICAgICBpZiAoIWNhbC5nZXRUaW1lKCkuZXF1YWxzKHRlbXBjYWwuZ2V0VGltZSgpKSkKKyAgICAgICAgICAgIGVycmxuKCJGYWlsIik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdDQwNzM5MjkoKSB7CisgICAgICAgIEdyZWdvcmlhbkNhbGVuZGFyIGZvbzEgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoMTk5NywgOCwgMjcpOworICAgICAgICBmb28xLmFkZChDYWxlbmRhci5EQVlfT0ZfTU9OVEgsICsxKTsKKyAgICAgICAgaW50IHRlc3R5ZWFyID0gZm9vMS5nZXQoQ2FsZW5kYXIuWUVBUik7CisgICAgICAgIGludCB0ZXN0bW9udGggPSBmb28xLmdldChDYWxlbmRhci5NT05USCk7CisgICAgICAgIGludCB0ZXN0ZGF5ID0gZm9vMS5nZXQoQ2FsZW5kYXIuREFZX09GX01PTlRIKTsKKyAgICAgICAgaWYgKHRlc3R5ZWFyICE9IDE5OTcgfHwKKyAgICAgICAgICAgIHRlc3Rtb250aCAhPSA4IHx8CisgICAgICAgICAgICB0ZXN0ZGF5ICE9IDI4KQorICAgICAgICAgICAgZXJybG4oIkZhaWw6IENhbGVuZGFyIG5vdCBpbml0aWFsaXplZCIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MDgzMTY3KCkgeworICAgICAgICBUaW1lWm9uZSBzYXZlWm9uZSA9IFRpbWVab25lLmdldERlZmF1bHQoKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFRpbWVab25lLnNldERlZmF1bHQoVGltZVpvbmUuZ2V0VGltZVpvbmUoIlVUQyIpKTsKKyAgICAgICAgICAgIERhdGUgZmlyc3REYXRlID0gbmV3IERhdGUoKTsKKyAgICAgICAgICAgIENhbGVuZGFyIGNhbCA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcigpOworICAgICAgICAgICAgY2FsLnNldFRpbWUoZmlyc3REYXRlKTsKKyAgICAgICAgICAgIGxvbmcgZmlyc3RNaWxsaXNJbkRheSA9IGNhbC5nZXQoQ2FsZW5kYXIuSE9VUl9PRl9EQVkpICogMzYwMDAwMEwgKworICAgICAgICAgICAgICAgIGNhbC5nZXQoQ2FsZW5kYXIuTUlOVVRFKSAqIDYwMDAwTCArCisgICAgICAgICAgICAgICAgY2FsLmdldChDYWxlbmRhci5TRUNPTkQpICogMTAwMEwgKworICAgICAgICAgICAgICAgIGNhbC5nZXQoQ2FsZW5kYXIuTUlMTElTRUNPTkQpOworICAgICAgICAgICAgCisgICAgICAgICAgICBsb2dsbigiQ3VycmVudCB0aW1lOiAiICsgZmlyc3REYXRlLnRvU3RyaW5nKCkpOworCisgICAgICAgICAgICBmb3IgKGludCB2YWxpZGl0eT0wOyB2YWxpZGl0eTwzMDsgdmFsaWRpdHkrKykgeworICAgICAgICAgICAgICAgIERhdGUgbGFzdERhdGUgPSBuZXcgRGF0ZShmaXJzdERhdGUuZ2V0VGltZSgpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpdmFsaWRpdHkqMTAwMCoyNCo2MCo2MCk7CisgICAgICAgICAgICAgICAgY2FsLnNldFRpbWUobGFzdERhdGUpOworICAgICAgICAgICAgICAgIGxvbmcgbWlsbGlzSW5EYXkgPSBjYWwuZ2V0KENhbGVuZGFyLkhPVVJfT0ZfREFZKSAqIDM2MDAwMDBMICsKKyAgICAgICAgICAgICAgICAgICAgY2FsLmdldChDYWxlbmRhci5NSU5VVEUpICogNjAwMDBMICsKKyAgICAgICAgICAgICAgICAgICAgY2FsLmdldChDYWxlbmRhci5TRUNPTkQpICogMTAwMEwgKworICAgICAgICAgICAgICAgICAgICBjYWwuZ2V0KENhbGVuZGFyLk1JTExJU0VDT05EKTsKKyAgICAgICAgICAgICAgICBpZiAoZmlyc3RNaWxsaXNJbkRheSAhPSBtaWxsaXNJbkRheSkgCisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJEYXkgaGFzIHNoaWZ0ZWQgIiArIGxhc3REYXRlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBmaW5hbGx5IHsKKyAgICAgICAgICAgIFRpbWVab25lLnNldERlZmF1bHQoc2F2ZVpvbmUpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdDQwODY3MjQoKSB7CisgICAgICAgIFNpbXBsZURhdGVGb3JtYXQgZGF0ZTsKKyAgICAgICAgVGltZVpvbmUgc2F2ZVpvbmUgPSBUaW1lWm9uZS5nZXREZWZhdWx0KCk7CisgICAgICAgIExvY2FsZSBzYXZlTG9jYWxlID0gTG9jYWxlLmdldERlZmF1bHQoKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIExvY2FsZS5zZXREZWZhdWx0KExvY2FsZS5VSyk7IAorICAgICAgICAgICAgVGltZVpvbmUuc2V0RGVmYXVsdChUaW1lWm9uZS5nZXRUaW1lWm9uZSgiR01UIikpOworICAgICAgICAgICAgZGF0ZT1uZXcgU2ltcGxlRGF0ZUZvcm1hdCgiZGQgTU1NIHl5eSAoenp6eikgJ2lzIGluIHdlZWsnIHd3Iik7IAorICAgICAgICAgICAgQ2FsZW5kYXIgY2FsPUNhbGVuZGFyLmdldEluc3RhbmNlKCk7IAorICAgICAgICAgICAgY2FsLnNldCgxOTk3LENhbGVuZGFyLlNFUFRFTUJFUiwzMCk7IAorICAgICAgICAgICAgRGF0ZSBub3c9Y2FsLmdldFRpbWUoKTsgCisgICAgICAgICAgICBsb2dsbihkYXRlLmZvcm1hdChub3cpKTsgCisgICAgICAgICAgICBjYWwuc2V0KDE5OTcsQ2FsZW5kYXIuSkFOVUFSWSwxKTsgCisgICAgICAgICAgICBub3c9Y2FsLmdldFRpbWUoKTsgCisgICAgICAgICAgICBsb2dsbihkYXRlLmZvcm1hdChub3cpKTsgCisgICAgICAgICAgICBjYWwuc2V0KDE5OTcsQ2FsZW5kYXIuSkFOVUFSWSw4KTsgCisgICAgICAgICAgICBub3c9Y2FsLmdldFRpbWUoKTsgCisgICAgICAgICAgICBsb2dsbihkYXRlLmZvcm1hdChub3cpKTsgCisgICAgICAgICAgICBjYWwuc2V0KDE5OTYsQ2FsZW5kYXIuREVDRU1CRVIsMzEpOyAKKyAgICAgICAgICAgIG5vdz1jYWwuZ2V0VGltZSgpOyAKKyAgICAgICAgICAgIGxvZ2xuKGRhdGUuZm9ybWF0KG5vdykpOyAKKyAgICAgICAgfQorICAgICAgICBmaW5hbGx5IHsKKyAgICAgICAgICAgIExvY2FsZS5zZXREZWZhdWx0KHNhdmVMb2NhbGUpOworICAgICAgICAgICAgVGltZVpvbmUuc2V0RGVmYXVsdChzYXZlWm9uZSk7CisgICAgICAgIH0KKyAgICAgICAgbG9nbG4oIioqKiBUSEUgUkVTVUxUUyBPRiBUSElTIFRFU1QgTVVTVCBCRSBWRVJJRklFRCBNQU5VQUxMWSAqKioiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0NDA5MjM2MigpIHsKKyAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIgY2FsMSA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcigxOTk3LCAxMCwgMTEsIDEwLCAyMCwgNDApOyAKKyAgICAgICAgLypjYWwxLnNldCggQ2FsZW5kYXIuWUVBUiwgMTk5NyApOyAKKyAgICAgICAgY2FsMS5zZXQoIENhbGVuZGFyLk1PTlRILCAxMCApOyAKKyAgICAgICAgY2FsMS5zZXQoIENhbGVuZGFyLkRBVEUsIDExICk7IAorICAgICAgICBjYWwxLnNldCggQ2FsZW5kYXIuSE9VUiwgMTAgKTsgCisgICAgICAgIGNhbDEuc2V0KCBDYWxlbmRhci5NSU5VVEUsIDIwICk7IAorICAgICAgICBjYWwxLnNldCggQ2FsZW5kYXIuU0VDT05ELCA0MCApOyAqLworCisgICAgICAgIGxvZ2xuKCAiIENhbDEgPSAiICsgY2FsMS5nZXRUaW1lKCkuZ2V0VGltZSgpICk7IAorICAgICAgICBsb2dsbiggIiBDYWwxIHRpbWUgaW4gbXMgPSAiICsgY2FsMS5nZXQoQ2FsZW5kYXIuTUlMTElTRUNPTkQpICk7IAorICAgICAgICBmb3IoIGludCBrID0gMDsgayA8IDEwMCA7IGsrKyApIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIiIpOyAKKyAgICAgICAgfQorCisgICAgICAgIEdyZWdvcmlhbkNhbGVuZGFyIGNhbDIgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoMTk5NywgMTAsIDExLCAxMCwgMjAsIDQwKTsgCisgICAgICAgIC8qY2FsMi5zZXQoIENhbGVuZGFyLllFQVIsIDE5OTcgKTsgCisgICAgICAgIGNhbDIuc2V0KCBDYWxlbmRhci5NT05USCwgMTAgKTsgCisgICAgICAgIGNhbDIuc2V0KCBDYWxlbmRhci5EQVRFLCAxMSApOyAKKyAgICAgICAgY2FsMi5zZXQoIENhbGVuZGFyLkhPVVIsIDEwICk7IAorICAgICAgICBjYWwyLnNldCggQ2FsZW5kYXIuTUlOVVRFLCAyMCApOyAKKyAgICAgICAgY2FsMi5zZXQoIENhbGVuZGFyLlNFQ09ORCwgNDAgKTsgKi8KKworICAgICAgICBsb2dsbiggIiBDYWwyID0gIiArIGNhbDIuZ2V0VGltZSgpLmdldFRpbWUoKSApOyAKKyAgICAgICAgbG9nbG4oICIgQ2FsMiB0aW1lIGluIG1zID0gIiArIGNhbDIuZ2V0KENhbGVuZGFyLk1JTExJU0VDT05EKSApOyAKKyAgICAgICAgaWYoICFjYWwxLmVxdWFscyggY2FsMiApICkgCisgICAgICAgICAgICBlcnJsbigiRmFpbDogTWlsbGlzZWNvbmRzIHJhbmRvbWl6ZWQiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0NDA5NTQwNygpIHsKKyAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIgYSA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcigxOTk3LENhbGVuZGFyLk5PVkVNQkVSLCAxMyk7CisgICAgICAgIGludCBkb3cgPSBhLmdldChDYWxlbmRhci5EQVlfT0ZfV0VFSyk7CisgICAgICAgIGlmIChkb3cgIT0gQ2FsZW5kYXIuVEhVUlNEQVkpCisgICAgICAgICAgICBlcnJsbigiRmFpbDogV2FudCBUSFVSU0RBWSBHb3QgIiArIGRvdyk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdDQwOTYyMzEoKSB7CisgICAgICAgIFRpbWVab25lIEdNVCA9IFRpbWVab25lLmdldFRpbWVab25lKCJHTVQiKTsKKyAgICAgICAgVGltZVpvbmUgUFNUID0gVGltZVpvbmUuZ2V0VGltZVpvbmUoIlBTVCIpOworICAgICAgICBpbnQgc2VjID0gMCwgbWluID0gMCwgaHIgPSAwLCBkYXkgPSAxLCBtb250aCA9IDEwLCB5ZWFyID0gMTk5NzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgQ2FsZW5kYXIgY2FsMSA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcihQU1QpOworICAgICAgICBjYWwxLnNldFRpbWUobmV3IERhdGUoODgwNjk4NjM5MDAwTCkpOworICAgICAgICBpbnQgcDsKKyAgICAgICAgbG9nbG4oIlBTVCAxIGlzOiAiICsgKHA9Y2FsMS5nZXQoY2FsMS5IT1VSX09GX0RBWSkpKTsKKyAgICAgICAgY2FsMS5zZXRUaW1lWm9uZShHTVQpOworICAgICAgICAvLyBJc3N1ZSAxOiBDaGFuZ2luZyB0aGUgdGltZXpvbmUgZG9lc24ndCBjaGFuZ2UgdGhlCisgICAgICAgIC8vICAgICAgICAgIHJlcHJlc2VudGVkIHRpbWUuCisgICAgICAgIGludCBoMSxoMjsKKyAgICAgICAgbG9nbG4oIkdNVCAxIGlzOiAiICsgKGgxPWNhbDEuZ2V0KGNhbDEuSE9VUl9PRl9EQVkpKSk7CisgICAgICAgIGNhbDEuc2V0VGltZShuZXcgRGF0ZSg4ODA2OTg2MzkwMDBMKSk7CisgICAgICAgIGxvZ2xuKCJHTVQgMiBpczogIiArIChoMj1jYWwxLmdldChjYWwxLkhPVVJfT0ZfREFZKSkpOworICAgICAgICAvLyBOb3RlOiBUaGlzIHRlc3QgaGFkIGEgYnVnIGluIGl0LiAgSXQgd2FudGVkIGgxIT1oMiwgd2hlbgorICAgICAgICAvLyB3aGF0IHdhcyBtZWFudCB3YXMgaDEhPXAuICBGaXhlZCB0aGlzIGNvbmN1cnJlbnQgd2l0aCBmaXgKKyAgICAgICAgLy8gdG8gNDE3NzQ4NC4KKyAgICAgICAgaWYgKHAgPT0gaDEgfHwgaDEgIT0gaDIpCisgICAgICAgICAgICBlcnJsbigiRmFpbDogSG91ciBzYW1lIGluIGRpZmZlcmVudCB6b25lcyIpOworCisgICAgICAgIENhbGVuZGFyIGNhbDIgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoR01UKTsKKyAgICAgICAgQ2FsZW5kYXIgY2FsMyA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcihQU1QpOworICAgICAgICBjYWwyLnNldChDYWxlbmRhci5NSUxMSVNFQ09ORCwgMCk7CisgICAgICAgIGNhbDMuc2V0KENhbGVuZGFyLk1JTExJU0VDT05ELCAwKTsKKworICAgICAgICBjYWwyLnNldChjYWwxLmdldChjYWwxLllFQVIpLAorICAgICAgICAgICAgICAgICBjYWwxLmdldChjYWwxLk1PTlRIKSwKKyAgICAgICAgICAgICAgICAgY2FsMS5nZXQoY2FsMS5EQVlfT0ZfTU9OVEgpLAorICAgICAgICAgICAgICAgICBjYWwxLmdldChjYWwxLkhPVVJfT0ZfREFZKSwKKyAgICAgICAgICAgICAgICAgY2FsMS5nZXQoY2FsMS5NSU5VVEUpLAorICAgICAgICAgICAgICAgICBjYWwxLmdldChjYWwxLlNFQ09ORCkpOworCisgICAgICAgIGxvbmcgdDEsdDIsdDMsdDQ7CisgICAgICAgIGxvZ2xuKCJSR01UIDEgaXM6ICIgKyAodDE9Y2FsMi5nZXRUaW1lKCkuZ2V0VGltZSgpKSk7CisgICAgICAgIGNhbDMuc2V0KHllYXIsIG1vbnRoLCBkYXksIGhyLCBtaW4sIHNlYyk7CisgICAgICAgIGxvZ2xuKCJSUFNUIDEgaXM6ICIgKyAodDI9Y2FsMy5nZXRUaW1lKCkuZ2V0VGltZSgpKSk7CisgICAgICAgIGNhbDMuc2V0VGltZVpvbmUoR01UKTsKKyAgICAgICAgbG9nbG4oIlJHTVQgMiBpczogIiArICh0Mz1jYWwzLmdldFRpbWUoKS5nZXRUaW1lKCkpKTsKKyAgICAgICAgY2FsMy5zZXQoY2FsMS5nZXQoY2FsMS5ZRUFSKSwKKyAgICAgICAgICAgICAgICAgY2FsMS5nZXQoY2FsMS5NT05USCksCisgICAgICAgICAgICAgICAgIGNhbDEuZ2V0KGNhbDEuREFZX09GX01PTlRIKSwKKyAgICAgICAgICAgICAgICAgY2FsMS5nZXQoY2FsMS5IT1VSX09GX0RBWSksCisgICAgICAgICAgICAgICAgIGNhbDEuZ2V0KGNhbDEuTUlOVVRFKSwKKyAgICAgICAgICAgICAgICAgY2FsMS5nZXQoY2FsMS5TRUNPTkQpKTsKKyAgICAgICAgLy8gSXNzdWUgMjogQ2FsZW5kYXIgY29udGludWVzIHRvIHVzZSB0aGUgdGltZXpvbmUgaW4gaXRzCisgICAgICAgIC8vICAgICAgICAgIGNvbnN0cnVjdG9yIGZvciBzZXQoKSBjb252ZXJzaW9ucywgcmVnYXJkbGVzcworICAgICAgICAvLyAgICAgICAgICBvZiBjYWxscyB0byBzZXRUaW1lWm9uZSgpCisgICAgICAgIGxvZ2xuKCJSR01UIDMgaXM6ICIgKyAodDQ9Y2FsMy5nZXRUaW1lKCkuZ2V0VGltZSgpKSk7CisgICAgICAgIGlmICh0MSA9PSB0MiB8fAorICAgICAgICAgICAgdDEgIT0gdDQgfHwKKyAgICAgICAgICAgIHQyICE9IHQzKQorICAgICAgICAgICAgZXJybG4oIkZhaWw6IENhbGVuZGFyIHpvbmUgYmVoYXZpb3IgZmF1bHR5Iik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdDQwOTY1MzkoKSB7CisgICAgICAgIGludFtdIHkgPSB7MzEsMjgsMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzF9OworCisgICAgICAgIGZvciAoaW50IHg9MDt4PDEyO3grKykgeworICAgICAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIgZ2MgPSBuZXcgCisgICAgICAgICAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIoMTk5Nyx4LHlbeF0pOworICAgICAgICAgICAgaW50IG0xLG0yOworICAgICAgICAgICAgbG9nKChtMT1nYy5nZXQoQ2FsZW5kYXIuTU9OVEgpKzEpKyIvIisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2MuZ2V0KENhbGVuZGFyLkRBVEUpKyIvIitnYy5nZXQoQ2FsZW5kYXIuWUVBUikrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgKyAxbW8gPSAiKTsKKworICAgICAgICAgICAgZ2MuYWRkKENhbGVuZGFyLk1PTlRILCAxKTsKKyAgICAgICAgICAgIGxvZ2xuKChtMj1nYy5nZXQoQ2FsZW5kYXIuTU9OVEgpKzEpKyIvIisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYy5nZXQoQ2FsZW5kYXIuREFURSkrIi8iK2djLmdldChDYWxlbmRhci5ZRUFSKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICBpbnQgbSA9IChtMSAlIDEyKSArIDE7CisgICAgICAgICAgICBpZiAobTIgIT0gbSkKKyAgICAgICAgICAgICAgICBlcnJsbigiRmFpbDogV2FudCAiICsgbSArICIgR290ICIgKyBtMik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdDQxMDAzMTEoKSB7CisgICAgICAgIEdyZWdvcmlhbkNhbGVuZGFyIGNhbCA9IChHcmVnb3JpYW5DYWxlbmRhcilDYWxlbmRhci5nZXRJbnN0YW5jZSgpOworICAgICAgICBjYWwuc2V0KENhbGVuZGFyLllFQVIsIDE5OTcpOworICAgICAgICBjYWwuc2V0KENhbGVuZGFyLkRBWV9PRl9ZRUFSLCAxKTsKKyAgICAgICAgRGF0ZSBkID0gY2FsLmdldFRpbWUoKTsgICAgICAgICAgICAgLy8gU2hvdWxkIGJlIEphbiAxCisgICAgICAgIGxvZ2xuKGQudG9TdHJpbmcoKSk7CisgICAgICAgIGlmIChjYWwuZ2V0KENhbGVuZGFyLkRBWV9PRl9ZRUFSKSAhPSAxKQorICAgICAgICAgICAgZXJybG4oIkZhaWw6IERBWV9PRl9ZRUFSIG5vdCBzZXQiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0NDEwMzI3MSgpIHsKKyAgICAgICAgU2ltcGxlRGF0ZUZvcm1hdCBzZGYgPSBuZXcgU2ltcGxlRGF0ZUZvcm1hdCgpOyAKKyAgICAgICAgaW50IG51bVllYXJzPTQwLCBzdGFydFllYXI9MTk5NywgbnVtRGF5cz0xNTsgCisgICAgICAgIFN0cmluZyBvdXRwdXQsIHRlc3REZXNjOyAKKyAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIgdGVzdENhbCA9IChHcmVnb3JpYW5DYWxlbmRhcilDYWxlbmRhci5nZXRJbnN0YW5jZSgpOyAKKyAgICAgICAgdGVzdENhbC5jbGVhcigpOworICAgICAgICBzZGYuc2V0Q2FsZW5kYXIodGVzdENhbCk7IAorICAgICAgICBzZGYuYXBwbHlQYXR0ZXJuKCJkIE1NTSB5eXl5Iik7IAorICAgICAgICBib29sZWFuIGZhaWwgPSBmYWxzZTsKKyAgICAgICAgZm9yIChpbnQgZmlyc3REYXk9MTsgZmlyc3REYXk8PTI7IGZpcnN0RGF5KyspIHsgCisgICAgICAgICAgICBmb3IgKGludCBtaW5EYXlzPTE7IG1pbkRheXM8PTc7IG1pbkRheXMrKykgeyAKKyAgICAgICAgICAgICAgICB0ZXN0Q2FsLnNldE1pbmltYWxEYXlzSW5GaXJzdFdlZWsobWluRGF5cyk7IAorICAgICAgICAgICAgICAgIHRlc3RDYWwuc2V0Rmlyc3REYXlPZldlZWsoZmlyc3REYXkpOyAKKyAgICAgICAgICAgICAgICB0ZXN0RGVzYyA9ICgiVGVzdCIgKyBTdHJpbmcudmFsdWVPZihmaXJzdERheSkgKyBTdHJpbmcudmFsdWVPZihtaW5EYXlzKSk7IAorICAgICAgICAgICAgICAgIGxvZ2xuKHRlc3REZXNjICsgIiA9PiAxc3QgZGF5IG9mIHdlZWs9IiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZy52YWx1ZU9mKGZpcnN0RGF5KSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIsIG1pbmltdW0gZGF5cyBpbiBmaXJzdCB3ZWVrPSIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcudmFsdWVPZihtaW5EYXlzKSk7IAorICAgICAgICAgICAgICAgIGZvciAoaW50IGo9c3RhcnRZZWFyOyBqPD1zdGFydFllYXIrbnVtWWVhcnM7IGorKykgeyAKKyAgICAgICAgICAgICAgICAgICAgdGVzdENhbC5zZXQoaiwxMSwyNSk7IAorICAgICAgICAgICAgICAgICAgICBmb3IoaW50IGk9MDsgaTxudW1EYXlzOyBpKyspIHsgCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0Q2FsLmFkZChDYWxlbmRhci5EQVRFLDEpOyAKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBjYWxXT1k7IAorICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFjdFdPWSA9IHRlc3RDYWwuZ2V0KENhbGVuZGFyLldFRUtfT0ZfWUVBUik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWN0V09ZIDwgMSB8fCBhY3RXT1kgPiA1MykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGUgZCA9IHRlc3RDYWwuZ2V0VGltZSgpOyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxXT1kgPSBTdHJpbmcudmFsdWVPZihhY3RXT1kpOyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSB0ZXN0RGVzYyArICIgLSAiICsgc2RmLmZvcm1hdChkKSArICJcdCI7IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IG91dHB1dCArICJcdCIgKyBjYWxXT1k7IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2xuKG91dHB1dCk7IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWwgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9IAorICAgICAgICAgICAgICAgIH0gCisgICAgICAgICAgICB9IAorICAgICAgICB9IAorCisgICAgICAgIGludFtdIERBVEEgPSB7CisgICAgICAgICAgICAzLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwKKyAgICAgICAgICAgICAgICAxLCAgMSwgIDEsICAxLCAgMSwgIDEsICAxLAorICAgICAgICAgICAgICAgIDIsICAyLCAgMiwgIDIsICAyLCAgMiwgIDIsCisgICAgICAgICAgICA0LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwKKyAgICAgICAgICAgICAgIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLAorICAgICAgICAgICAgICAgIDEsICAxLCAgMSwgIDEsICAxLCAgMSwgIDEsCisgICAgICAgIH07CisgICAgICAgIHRlc3RDYWwuc2V0Rmlyc3REYXlPZldlZWsoQ2FsZW5kYXIuU1VOREFZKTsKKyAgICAgICAgZm9yIChpbnQgaj0wOyBqPERBVEEubGVuZ3RoOyBqKz0yMikgeworICAgICAgICAgICAgbG9nbG4oIk1pbmltYWwgZGF5cyBpbiBmaXJzdCB3ZWVrID0gIiArIERBVEFbal0gKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgIFdlZWsgc3RhcnRzIG9uIFN1bmRheSIpOworICAgICAgICAgICAgdGVzdENhbC5zZXRNaW5pbWFsRGF5c0luRmlyc3RXZWVrKERBVEFbal0pOworICAgICAgICAgICAgdGVzdENhbC5zZXQoMTk5NywgQ2FsZW5kYXIuREVDRU1CRVIsIDIxKTsKKyAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTwyMTsgKytpKSB7CisgICAgICAgICAgICAgICAgaW50IHdveSA9IHRlc3RDYWwuZ2V0KENhbGVuZGFyLldFRUtfT0ZfWUVBUik7CisgICAgICAgICAgICAgICAgbG9nKHRlc3RDYWwuZ2V0VGltZSgpICsgIiAiICsgd295KTsKKyAgICAgICAgICAgICAgICBpZiAod295ICE9IERBVEFbaiArIDEgKyBpXSkgeworICAgICAgICAgICAgICAgICAgICBsb2coIiBFUlJPUiIpOworICAgICAgICAgICAgICAgICAgICBmYWlsID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLy9sb2dsbigpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIE5vdyBjb21wdXRlIHRoZSB0aW1lIGZyb20gdGhlIGZpZWxkcywgYW5kIG1ha2Ugc3VyZSB3ZQorICAgICAgICAgICAgICAgIC8vIGdldCB0aGUgc2FtZSBhbnN3ZXIgYmFjay4gIFRoaXMgaXMgYSByb3VuZC10cmlwIHRlc3QuCisgICAgICAgICAgICAgICAgRGF0ZSBzYXZlID0gdGVzdENhbC5nZXRUaW1lKCk7CisgICAgICAgICAgICAgICAgdGVzdENhbC5jbGVhcigpOworICAgICAgICAgICAgICAgIHRlc3RDYWwuc2V0KENhbGVuZGFyLllFQVIsIERBVEFbaisxK2ldIDwgMjUgPyAxOTk4IDogMTk5Nyk7CisgICAgICAgICAgICAgICAgdGVzdENhbC5zZXQoQ2FsZW5kYXIuV0VFS19PRl9ZRUFSLCBEQVRBW2orMStpXSk7CisgICAgICAgICAgICAgICAgdGVzdENhbC5zZXQoQ2FsZW5kYXIuREFZX09GX1dFRUssIChpJTcpICsgQ2FsZW5kYXIuU1VOREFZKTsKKyAgICAgICAgICAgICAgICBpZiAoIXRlc3RDYWwuZ2V0VGltZSgpLmVxdWFscyhzYXZlKSkgeworICAgICAgICAgICAgICAgICAgICBsb2dsbigiICBQYXJzZSBmYWlsZWQ6ICIgKyB0ZXN0Q2FsLmdldFRpbWUoKSk7CisgICAgICAgICAgICAgICAgICAgIGZhaWw9IHRydWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdGVzdENhbC5zZXRUaW1lKHNhdmUpOworICAgICAgICAgICAgICAgIHRlc3RDYWwuYWRkKENhbGVuZGFyLkRBWV9PRl9NT05USCwgMSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBEYXRlIGRbXSA9IG5ldyBEYXRlWzhdOworICAgICAgICBqYXZhLnV0aWwuQ2FsZW5kYXIgdGVtcGNhbCA9IGphdmEudXRpbC5DYWxlbmRhci5nZXRJbnN0YW5jZSgpOworICAgICAgICB0ZW1wY2FsLmNsZWFyKCk7CisgICAgICAgIHRlbXBjYWwuc2V0KDE5OTcsIENhbGVuZGFyLkRFQ0VNQkVSLCAyOCk7CisgICAgICAgIGRbMF0gPSB0ZW1wY2FsLmdldFRpbWUoKTsKKyAgICAgICAgdGVtcGNhbC5zZXQoMTk5OCwgQ2FsZW5kYXIuSkFOVUFSWSwgMTApOworICAgICAgICBkWzFdID0gdGVtcGNhbC5nZXRUaW1lKCk7CisgICAgICAgIHRlbXBjYWwuc2V0KDE5OTgsIENhbGVuZGFyLkRFQ0VNQkVSLCAzMSk7CisgICAgICAgIGRbMl0gPSB0ZW1wY2FsLmdldFRpbWUoKTsKKyAgICAgICAgdGVtcGNhbC5zZXQoMTk5OSwgQ2FsZW5kYXIuSkFOVUFSWSwgMSk7CisgICAgICAgIGRbM10gPSB0ZW1wY2FsLmdldFRpbWUoKTsKKyAgICAgICAgLy8gVGVzdCBmaWVsZCBkaXNhbWJpZ3VhdGlvbiB3aXRoIGEgZmV3IHNwZWNpYWwgaGFyZC1jb2RlZCBjYXNlcy4KKyAgICAgICAgLy8gVGhpcyBzaG91bGRuJ3QgZmFpbCBpZiB0aGUgYWJvdmUgY2FzZXMgYXJlbid0IGZhaWxpbmcuCisgICAgICAgIE9iamVjdFtdIERJU0FNID0geworICAgICAgICAgICAgbmV3IEludGVnZXIoMTk5OCksIG5ldyBJbnRlZ2VyKDEpLCBuZXcgSW50ZWdlcihDYWxlbmRhci5TVU5EQVkpLAorICAgICAgICAgICAgICAgIGRbMF0sCisgICAgICAgICAgICBuZXcgSW50ZWdlcigxOTk4KSwgbmV3IEludGVnZXIoMiksIG5ldyBJbnRlZ2VyKENhbGVuZGFyLlNBVFVSREFZKSwKKyAgICAgICAgICAgICAgICBkWzFdLAorICAgICAgICAgICAgbmV3IEludGVnZXIoMTk5OCksIG5ldyBJbnRlZ2VyKDUzKSwgbmV3IEludGVnZXIoQ2FsZW5kYXIuVEhVUlNEQVkpLAorICAgICAgICAgICAgICAgIGRbMl0sCisgICAgICAgICAgICBuZXcgSW50ZWdlcigxOTk4KSwgbmV3IEludGVnZXIoNTMpLCBuZXcgSW50ZWdlcihDYWxlbmRhci5GUklEQVkpLAorICAgICAgICAgICAgICAgIGRbM10sCisgICAgICAgIH07CisgICAgICAgIHRlc3RDYWwuc2V0TWluaW1hbERheXNJbkZpcnN0V2VlaygzKTsKKyAgICAgICAgdGVzdENhbC5zZXRGaXJzdERheU9mV2VlayhDYWxlbmRhci5TVU5EQVkpOworICAgICAgICBmb3IgKGludCBpPTA7IGk8RElTQU0ubGVuZ3RoOyBpKz00KSB7CisgICAgICAgICAgICBpbnQgeSA9ICgoSW50ZWdlcilESVNBTVtpXSkuaW50VmFsdWUoKTsKKyAgICAgICAgICAgIGludCB3b3kgPSAoKEludGVnZXIpRElTQU1baSsxXSkuaW50VmFsdWUoKTsKKyAgICAgICAgICAgIGludCBkb3cgPSAoKEludGVnZXIpRElTQU1baSsyXSkuaW50VmFsdWUoKTsKKyAgICAgICAgICAgIERhdGUgZXhwID0gKERhdGUpRElTQU1baSszXTsKKyAgICAgICAgICAgIHRlc3RDYWwuY2xlYXIoKTsKKyAgICAgICAgICAgIHRlc3RDYWwuc2V0KENhbGVuZGFyLllFQVIsIHkpOworICAgICAgICAgICAgdGVzdENhbC5zZXQoQ2FsZW5kYXIuV0VFS19PRl9ZRUFSLCB3b3kpOworICAgICAgICAgICAgdGVzdENhbC5zZXQoQ2FsZW5kYXIuREFZX09GX1dFRUssIGRvdyk7CisgICAgICAgICAgICBsb2coeSArICItVyIgKyB3b3kgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLURPVyIgKyBkb3cgKyAiIGV4cGVjdDoiICsgZXhwICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBnb3Q6IiArIHRlc3RDYWwuZ2V0VGltZSgpKTsKKyAgICAgICAgICAgIGlmICghdGVzdENhbC5nZXRUaW1lKCkuZXF1YWxzKGV4cCkpIHsKKyAgICAgICAgICAgICAgICBsb2coIiAgRkFJTCIpOworICAgICAgICAgICAgICAgIGZhaWwgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy9sb2dsbigpOworICAgICAgICB9CisKKyAgICAgICAgLy8gTm93IHRyeSBhZGRpbmcgYW5kIHJvbGxpbmcKKyAgICAgICAgT2JqZWN0IEFERCA9IG5ldyBPYmplY3QoKTsKKyAgICAgICAgT2JqZWN0IFJPTEwgPSBuZXcgT2JqZWN0KCk7CisgICAgICAgIHRlbXBjYWwuc2V0KDE5OTgsIENhbGVuZGFyLkRFQ0VNQkVSLCAyNSk7CisgICAgICAgIGRbMF0gPSB0ZW1wY2FsLmdldFRpbWUoKTsKKyAgICAgICAgdGVtcGNhbC5zZXQoMTk5OSwgQ2FsZW5kYXIuSkFOVUFSWSwgMSk7CisgICAgICAgIGRbMV0gPSB0ZW1wY2FsLmdldFRpbWUoKTsKKyAgICAgICAgdGVtcGNhbC5zZXQoMTk5NywgQ2FsZW5kYXIuREVDRU1CRVIsIDI4KTsKKyAgICAgICAgZFsyXSA9IHRlbXBjYWwuZ2V0VGltZSgpOworICAgICAgICB0ZW1wY2FsLnNldCgxOTk4LCBDYWxlbmRhci5KQU5VQVJZLCA0KTsKKyAgICAgICAgZFszXSA9IHRlbXBjYWwuZ2V0VGltZSgpOworICAgICAgICB0ZW1wY2FsLnNldCgxOTk4LCBDYWxlbmRhci5ERUNFTUJFUiwgMjcpOworICAgICAgICBkWzRdID0gdGVtcGNhbC5nZXRUaW1lKCk7CisgICAgICAgIHRlbXBjYWwuc2V0KDE5OTcsIENhbGVuZGFyLkRFQ0VNQkVSLCAyOCk7CisgICAgICAgIGRbNV0gPSB0ZW1wY2FsLmdldFRpbWUoKTsKKyAgICAgICAgdGVtcGNhbC5zZXQoMTk5OSwgQ2FsZW5kYXIuSkFOVUFSWSwgMik7CisgICAgICAgIGRbNl0gPSB0ZW1wY2FsLmdldFRpbWUoKTsKKyAgICAgICAgdGVtcGNhbC5zZXQoMTk5OCwgQ2FsZW5kYXIuSkFOVUFSWSwgMyk7CisgICAgICAgIGRbN10gPSB0ZW1wY2FsLmdldFRpbWUoKTsKKyAgICAgICAgCisgICAgICAgIE9iamVjdFtdIEFERFJPTEwgPSB7CisgICAgICAgICAgICBBREQsIG5ldyBJbnRlZ2VyKDEpLCBkWzBdLCBkWzFdLAorICAgICAgICAgICAgQURELCBuZXcgSW50ZWdlcigxKSwgZFsyXSwgZFszXSwKKyAgICAgICAgICAgIFJPTEwsIG5ldyBJbnRlZ2VyKDEpLCBkWzRdLCBkWzVdLAorICAgICAgICAgICAgUk9MTCwgbmV3IEludGVnZXIoMSksIGRbNl0sIGRbN10sCisgICAgICAgIH07CisgICAgICAgIHRlc3RDYWwuc2V0TWluaW1hbERheXNJbkZpcnN0V2VlaygzKTsKKyAgICAgICAgdGVzdENhbC5zZXRGaXJzdERheU9mV2VlayhDYWxlbmRhci5TVU5EQVkpOworICAgICAgICBmb3IgKGludCBpPTA7IGk8QUREUk9MTC5sZW5ndGg7IGkrPTQpIHsKKyAgICAgICAgICAgIGludCBhbW91bnQgPSAoKEludGVnZXIpQUREUk9MTFtpKzFdKS5pbnRWYWx1ZSgpOworICAgICAgICAgICAgRGF0ZSBiZWZvcmUgPSAoRGF0ZSlBRERST0xMW2krMl07CisgICAgICAgICAgICBEYXRlIGFmdGVyID0gKERhdGUpQUREUk9MTFtpKzNdOworCisgICAgICAgICAgICB0ZXN0Q2FsLnNldFRpbWUoYmVmb3JlKTsKKyAgICAgICAgICAgIGlmIChBRERST0xMW2ldID09IEFERCkgdGVzdENhbC5hZGQoQ2FsZW5kYXIuV0VFS19PRl9ZRUFSLCBhbW91bnQpOworICAgICAgICAgICAgZWxzZSB0ZXN0Q2FsLnJvbGwoQ2FsZW5kYXIuV0VFS19PRl9ZRUFSLCBhbW91bnQpOworICAgICAgICAgICAgbG9nKChBRERST0xMW2ldPT1BREQ/ImFkZChXT1ksIjoicm9sbChXT1ksIikgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbW91bnQgKyAiKSAiICsgYmVmb3JlICsgIiA9PiAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdENhbC5nZXRUaW1lKCkpOworICAgICAgICAgICAgaWYgKCFhZnRlci5lcXVhbHModGVzdENhbC5nZXRUaW1lKCkpKSB7CisgICAgICAgICAgICAgICAgbG9nbG4oIiAgZXhwOiIgKyBhZnRlciArICIgIEZBSUwiKTsKKyAgICAgICAgICAgICAgICBmYWlsID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgbG9nbG4oIiBvayIpOworCisgICAgICAgICAgICB0ZXN0Q2FsLnNldFRpbWUoYWZ0ZXIpOworICAgICAgICAgICAgaWYgKEFERFJPTExbaV0gPT0gQUREKSB0ZXN0Q2FsLmFkZChDYWxlbmRhci5XRUVLX09GX1lFQVIsIC1hbW91bnQpOworICAgICAgICAgICAgZWxzZSB0ZXN0Q2FsLnJvbGwoQ2FsZW5kYXIuV0VFS19PRl9ZRUFSLCAtYW1vdW50KTsKKyAgICAgICAgICAgIGxvZygoQUREUk9MTFtpXT09QUREPyJhZGQoV09ZLCI6InJvbGwoV09ZLCIpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKC1hbW91bnQpICsgIikgIiArIGFmdGVyICsgIiA9PiAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdENhbC5nZXRUaW1lKCkpOworICAgICAgICAgICAgaWYgKCFiZWZvcmUuZXF1YWxzKHRlc3RDYWwuZ2V0VGltZSgpKSkgeworICAgICAgICAgICAgICAgIGxvZ2xuKCIgIGV4cDoiICsgYmVmb3JlICsgIiAgRkFJTCIpOworICAgICAgICAgICAgICAgIGZhaWwgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBsb2dsbigiIG9rIik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZmFpbCkgZXJybG4oIkZhaWw6IFdlZWsgb2YgeWVhciBtaXNiZWhhdmluZyIpOworICAgIH0gCisKKyAgICBwdWJsaWMgdm9pZCBUZXN0NDEwNjEzNigpIHsKKyAgICAgICAgTG9jYWxlIHNhdmVMb2NhbGUgPSBMb2NhbGUuZ2V0RGVmYXVsdCgpOworICAgICAgICBTdHJpbmdbXSBuYW1lcyA9IHsgIkNhbGVuZGFyIiwgIkRhdGVGb3JtYXQiLCAiTnVtYmVyRm9ybWF0IiB9OworICAgICAgICB0cnkgeworICAgICAgICAgICAgTG9jYWxlW10gbG9jYWxlcyA9IHsgTG9jYWxlLkNISU5FU0UsIExvY2FsZS5DSElOQSB9OworICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPGxvY2FsZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICBMb2NhbGUuc2V0RGVmYXVsdChsb2NhbGVzW2ldKTsKKyAgICAgICAgICAgICAgICBpbnRbXSBuID0geworICAgICAgICAgICAgICAgICAgICBDYWxlbmRhci5nZXRBdmFpbGFibGVMb2NhbGVzKCkubGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICBEYXRlRm9ybWF0LmdldEF2YWlsYWJsZUxvY2FsZXMoKS5sZW5ndGgsCisgICAgICAgICAgICAgICAgICAgIE51bWJlckZvcm1hdC5nZXRBdmFpbGFibGVMb2NhbGVzKCkubGVuZ3RoCisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBqPTA7IGo8bi5sZW5ndGg7ICsraikgeworICAgICAgICAgICAgICAgICAgICBpZiAobltqXSA9PSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgZXJybG4oIkZhaWw6ICIgKyBuYW1lc1tqXSArICIgaGFzIG5vIGxvY2FsZXMgZm9yICIgKyBsb2NhbGVzW2ldKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZmluYWxseSB7CisgICAgICAgICAgICBMb2NhbGUuc2V0RGVmYXVsdChzYXZlTG9jYWxlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTA4NzY0KCkgeworICAgICAgICBqYXZhLnV0aWwuQ2FsZW5kYXIgdGVtcGNhbCA9IGphdmEudXRpbC5DYWxlbmRhci5nZXRJbnN0YW5jZSgpOworICAgICAgICB0ZW1wY2FsLmNsZWFyKCk7CisgICAgICAgIHRlbXBjYWwuc2V0KDE5OTcsIENhbGVuZGFyLk1BUkNILCAxNSwgMTIsIDAwLCAwMCk7CisgICAgICAgIERhdGUgZDAwID0gdGVtcGNhbC5nZXRUaW1lKCk7CisgICAgICAgIHRlbXBjYWwuc2V0KDE5OTcsIENhbGVuZGFyLk1BUkNILCAxNSwgMTIsIDAwLCA1Nik7CisgICAgICAgIERhdGUgZDAxID0gdGVtcGNhbC5nZXRUaW1lKCk7CisgICAgICAgIHRlbXBjYWwuc2V0KDE5OTcsIENhbGVuZGFyLk1BUkNILCAxNSwgMTIsIDM0LCAwMCk7CisgICAgICAgIERhdGUgZDEwID0gdGVtcGNhbC5nZXRUaW1lKCk7CisgICAgICAgIHRlbXBjYWwuc2V0KDE5OTcsIENhbGVuZGFyLk1BUkNILCAxNSwgMTIsIDM0LCA1Nik7CisgICAgICAgIERhdGUgZDExID0gdGVtcGNhbC5nZXRUaW1lKCk7CisgICAgICAgIHRlbXBjYWwuc2V0KDE5OTcsIENhbGVuZGFyLkpBTlVBUlksIDE1LCAxMiwgMzQsIDU2KTsKKyAgICAgICAgRGF0ZSBkTSAgPSB0ZW1wY2FsLmdldFRpbWUoKTsKKyAgICAgICAgdGVtcGNhbC5jbGVhcigpOworICAgICAgICB0ZW1wY2FsLnNldCgxOTcwLCBDYWxlbmRhci5KQU5VQVJZLCAxKTsKKyAgICAgICAgRGF0ZSBlcG9jaCA9IHRlbXBjYWwuZ2V0VGltZSgpOworCisgICAgICAgIENhbGVuZGFyIGNhbCA9IENhbGVuZGFyLmdldEluc3RhbmNlKCk7IAorICAgICAgICBjYWwuc2V0VGltZShkMTEpOworCisgICAgICAgIGNhbC5jbGVhciggQ2FsZW5kYXIuTUlOVVRFICk7IAorICAgICAgICBsb2dsbihjYWwuZ2V0VGltZSgpLnRvU3RyaW5nKCkpOyAKKyAgICAgICAgaWYgKCFjYWwuZ2V0VGltZSgpLmVxdWFscyhkMDEpKSB7CisgICAgICAgICAgICBlcnJsbigiRmFpbDogIiArIGQxMSArICIgY2xlYXIoTUlOVVRFKSA9PiBleHBlY3QgIiArCisgICAgICAgICAgICAgICAgICBkMDEgKyAiLCBnb3QgIiArIGNhbC5nZXRUaW1lKCkpOworICAgICAgICB9CisKKyAgICAgICAgY2FsLnNldCggQ2FsZW5kYXIuU0VDT05ELCAwICk7IAorICAgICAgICBsb2dsbihjYWwuZ2V0VGltZSgpLnRvU3RyaW5nKCkpOyAKKyAgICAgICAgaWYgKCFjYWwuZ2V0VGltZSgpLmVxdWFscyhkMDApKQorICAgICAgICAgICAgZXJybG4oIkZhaWw6IHNldChTRUNPTkQsIDApIGJyb2tlbiIpOworCisgICAgICAgIGNhbC5zZXRUaW1lKGQxMSk7CisgICAgICAgIGNhbC5zZXQoIENhbGVuZGFyLlNFQ09ORCwgMCApOyAKKyAgICAgICAgbG9nbG4oY2FsLmdldFRpbWUoKS50b1N0cmluZygpKTsgCisgICAgICAgIGlmICghY2FsLmdldFRpbWUoKS5lcXVhbHMoZDEwKSkKKyAgICAgICAgICAgIGVycmxuKCJGYWlsOiBzZXQoU0VDT05ELCAwKSBicm9rZW4gIzIiKTsKKworICAgICAgICBjYWwuY2xlYXIoIENhbGVuZGFyLk1JTlVURSApOyAKKyAgICAgICAgbG9nbG4oY2FsLmdldFRpbWUoKS50b1N0cmluZygpKTsgCisgICAgICAgIGlmICghY2FsLmdldFRpbWUoKS5lcXVhbHMoZDAwKSkKKyAgICAgICAgICAgIGVycmxuKCJGYWlsOiBjbGVhcihNSU5VVEUpIGJyb2tlbiAjMiIpOworCisgICAgICAgIGNhbC5jbGVhcigpOworICAgICAgICBsb2dsbihjYWwuZ2V0VGltZSgpLnRvU3RyaW5nKCkpOworICAgICAgICBpZiAoIWNhbC5nZXRUaW1lKCkuZXF1YWxzKGVwb2NoKSkKKyAgICAgICAgICAgIGVycmxuKCJGYWlsOiBhZnRlciBjbGVhcigpIGV4cGVjdCAiICsgZXBvY2ggKyAiLCBnb3QgIiArIGNhbC5nZXRUaW1lKCkpOworCisgICAgICAgIGNhbC5zZXRUaW1lKGQxMSk7CisgICAgICAgIGNhbC5jbGVhciggQ2FsZW5kYXIuTU9OVEggKTsgCisgICAgICAgIGxvZ2xuKGNhbC5nZXRUaW1lKCkudG9TdHJpbmcoKSk7IAorICAgICAgICBpZiAoIWNhbC5nZXRUaW1lKCkuZXF1YWxzKGRNKSkgeworICAgICAgICAgICAgZXJybG4oIkZhaWw6ICIgKyBkMTEgKyAiIGNsZWFyKE1PTlRIKSA9PiBleHBlY3QgIiArCisgICAgICAgICAgICAgICAgICBkTSArICIsIGdvdCAiICsgY2FsLmdldFRpbWUoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0NDExNDU3OCgpIHsKKyAgICAgICAgaW50IE9ORV9IT1VSID0gNjAqNjAqMTAwMDsKKyAgICAgICAgQ2FsZW5kYXIgY2FsID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTsKKyAgICAgICAgY2FsLnNldFRpbWVab25lKFRpbWVab25lLmdldFRpbWVab25lKCJQU1QiKSk7CisgICAgICAgIAorICAgICAgICBqYXZhLnV0aWwuQ2FsZW5kYXIgdGVtcGNhbCA9IGphdmEudXRpbC5DYWxlbmRhci5nZXRJbnN0YW5jZSgpOworICAgICAgICB0ZW1wY2FsLmNsZWFyKCk7CisgICAgICAgIHRlbXBjYWwuc2V0KDE5OTgsIENhbGVuZGFyLkFQUklMLCA1LCAxLCAwKTsKKyAgICAgICAgbG9uZyBvbnNldCA9IHRlbXBjYWwuZ2V0VGltZSgpLmdldFRpbWUoKSArIE9ORV9IT1VSOworICAgICAgICB0ZW1wY2FsLnNldCgxOTk4LCBDYWxlbmRhci5PQ1RPQkVSLCAyNSwgMCwgMCk7CisgICAgICAgIGxvbmcgY2Vhc2UgPSB0ZW1wY2FsLmdldFRpbWUoKS5nZXRUaW1lKCkgKyAyKk9ORV9IT1VSOworCisgICAgICAgIGJvb2xlYW4gZmFpbCA9IGZhbHNlOworICAgICAgICAKKyAgICAgICAgZmluYWwgaW50IEFERCA9IDE7CisgICAgICAgIGZpbmFsIGludCBST0xMID0gMjsKKworICAgICAgICBsb25nW10gREFUQSA9IHsKKyAgICAgICAgICAgIC8vIFN0YXJ0ICAgICAgICAgICAgQWN0aW9uICAgQW10ICAgIEV4cGVjdGVkX2NoYW5nZQorICAgICAgICAgICAgb25zZXQgLSBPTkVfSE9VUiwgICBBREQsICAgICAgMSwgICAgIE9ORV9IT1VSLAorICAgICAgICAgICAgb25zZXQsICAgICAgICAgICAgICBBREQsICAgICAtMSwgICAgLU9ORV9IT1VSLAorICAgICAgICAgICAgb25zZXQgLSBPTkVfSE9VUiwgICBST0xMLCAgICAgMSwgICAgIE9ORV9IT1VSLAorICAgICAgICAgICAgb25zZXQsICAgICAgICAgICAgICBST0xMLCAgICAtMSwgICAgLU9ORV9IT1VSLAorICAgICAgICAgICAgY2Vhc2UgLSBPTkVfSE9VUiwgICBBREQsICAgICAgMSwgICAgIE9ORV9IT1VSLAorICAgICAgICAgICAgY2Vhc2UsICAgICAgICAgICAgICBBREQsICAgICAtMSwgICAgLU9ORV9IT1VSLAorICAgICAgICAgICAgY2Vhc2UgLSBPTkVfSE9VUiwgICBST0xMLCAgICAgMSwgICAgIE9ORV9IT1VSLAorICAgICAgICAgICAgY2Vhc2UsICAgICAgICAgICAgICBST0xMLCAgICAtMSwgICAgLU9ORV9IT1VSLAorICAgICAgICB9OworCisgICAgICAgIGZvciAoaW50IGk9MDsgaTxEQVRBLmxlbmd0aDsgaSs9NCkgeworICAgICAgICAgICAgRGF0ZSBkYXRlID0gbmV3IERhdGUoREFUQVtpXSk7CisgICAgICAgICAgICBpbnQgYW10ID0gKGludCkgREFUQVtpKzJdOworICAgICAgICAgICAgbG9uZyBleHBlY3RlZENoYW5nZSA9IERBVEFbaSszXTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgbG9nKGRhdGUudG9TdHJpbmcoKSk7CisgICAgICAgICAgICBjYWwuc2V0VGltZShkYXRlKTsKKworICAgICAgICAgICAgc3dpdGNoICgoaW50KSBEQVRBW2krMV0pIHsKKyAgICAgICAgICAgIGNhc2UgQUREOgorICAgICAgICAgICAgICAgIGxvZygiIGFkZCAoSE9VUiwiICsgKGFtdDwwPyIiOiIrIikrYW10ICsgIik9ICIpOworICAgICAgICAgICAgICAgIGNhbC5hZGQoQ2FsZW5kYXIuSE9VUiwgYW10KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgUk9MTDoKKyAgICAgICAgICAgICAgICBsb2coIiByb2xsKEhPVVIsIiArIChhbXQ8MD8iIjoiKyIpK2FtdCArICIpPSAiKTsKKyAgICAgICAgICAgICAgICBjYWwucm9sbChDYWxlbmRhci5IT1VSLCBhbXQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsb2coY2FsLmdldFRpbWUoKS50b1N0cmluZygpKTsKKworICAgICAgICAgICAgbG9uZyBjaGFuZ2UgPSBjYWwuZ2V0VGltZSgpLmdldFRpbWUoKSAtIGRhdGUuZ2V0VGltZSgpOworICAgICAgICAgICAgaWYgKGNoYW5nZSAhPSBleHBlY3RlZENoYW5nZSkgeworICAgICAgICAgICAgICAgIGZhaWwgPSB0cnVlOworICAgICAgICAgICAgICAgIGxvZ2xuKCIgRkFJTCIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBsb2dsbigiIE9LIik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZmFpbCkgZXJybG4oIkZhaWw6IHJvbGwvYWRkIG1pc2JlaGF2ZXMgYXJvdW5kIERTVCBvbnNldC9jZWFzZSIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIE1ha2Ugc3VyZSBtYXhpbXVtIGZvciBIT1VSIGZpZWxkIGlzIDExLCBub3QgMTIuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQxMTgzODQoKSB7CisgICAgICAgIENhbGVuZGFyIGNhbCA9IENhbGVuZGFyLmdldEluc3RhbmNlKCk7CisgICAgICAgIGlmIChjYWwuZ2V0TWF4aW11bShDYWxlbmRhci5IT1VSKSAhPSAxMSB8fAorICAgICAgICAgICAgY2FsLmdldExlYXN0TWF4aW11bShDYWxlbmRhci5IT1VSKSAhPSAxMSB8fAorICAgICAgICAgICAgY2FsLmdldEFjdHVhbE1heGltdW0oQ2FsZW5kYXIuSE9VUikgIT0gMTEpCisgICAgICAgICAgICBlcnJsbigiRmFpbDogbWF4aW11bSBvZiBIT1VSIGZpZWxkIHNob3VsZCBiZSAxMSIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENoZWNrIGlzTGVhcFllYXIgZm9yIEJDIHllYXJzLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTI1ODgxKCkgeworICAgICAgICBHcmVnb3JpYW5DYWxlbmRhciBjYWwgPSAoR3JlZ29yaWFuQ2FsZW5kYXIpIENhbGVuZGFyLmdldEluc3RhbmNlKCk7CisgICAgICAgIERhdGVGb3JtYXQgZm10ID0gbmV3IFNpbXBsZURhdGVGb3JtYXQoIk1NTU0gZCwgeXl5eSBHIik7CisgICAgICAgIGNhbC5jbGVhcigpOworICAgICAgICBmb3IgKGludCB5PS0yMDsgeTw9MTA7ICsreSkgeworICAgICAgICAgICAgY2FsLnNldChDYWxlbmRhci5FUkEsIHkgPCAxID8gR3JlZ29yaWFuQ2FsZW5kYXIuQkMgOiBHcmVnb3JpYW5DYWxlbmRhci5BRCk7CisgICAgICAgICAgICBjYWwuc2V0KENhbGVuZGFyLllFQVIsIHkgPCAxID8gMSAtIHkgOiB5KTsKKyAgICAgICAgICAgIGxvZ2xuKHkgKyAiID0gIiArIGZtdC5mb3JtYXQoY2FsLmdldFRpbWUoKSkgKyAiICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbC5pc0xlYXBZZWFyKHkpKTsKKyAgICAgICAgICAgIGlmIChjYWwuaXNMZWFwWWVhcih5KSAhPSAoKHkrNDApJTQgPT0gMCkpCisgICAgICAgICAgICAgICAgZXJybG4oIkxlYXAgeWVhcnMgYnJva2VuIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBJIGFtIGRpc2FibGluZyB0aGlzIHRlc3QgLS0gaXQgaXMgY3VycmVudGx5IGZhaWxpbmcgYmVjYXVzZSBvZiBhIGJ1ZworICAgIC8vIGluIFN1bidzIGxhdGVzdCBjaGFuZ2UgdG8gU1RaLmdldE9mZnNldCgpLiAgSSBoYXZlIGZpbGVkIGEgU3VuIGJ1ZworICAgIC8vIGFnYWluc3QgdGhpcyBwcm9ibGVtLgorCisgICAgLy8gUmUtZW5hYmxlZCBhZnRlciAncG9ydGluZycgVFogYW5kIFNUWiBmcm9tIGphdmEudXRpbCB0byBjb20uaWJtLmljdS51dGlsLgorICAgIC8qKgorICAgICAqIFByb3ZlIHRoYXQgR3JlZ29yaWFuQ2FsZW5kYXIgaXMgcHJvbGVwdGljIChpdCB1c2VkIHRvIGN1dCBvZmYKKyAgICAgKiBhdCA0NSBCQywgYW5kIG5vdCBoYXZlIGxlYXAgeWVhcnMgYmVmb3JlIHRoZW4pLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTI1ODkyKCkgeworICAgICAgICBHcmVnb3JpYW5DYWxlbmRhciBjYWwgPSAoR3JlZ29yaWFuQ2FsZW5kYXIpIENhbGVuZGFyLmdldEluc3RhbmNlKCk7CisgICAgICAgIERhdGVGb3JtYXQgZm10ID0gbmV3IFNpbXBsZURhdGVGb3JtYXQoIk1NTU0gZCwgeXl5eSBHIik7CisgICAgICAgIGZtdCA9IG51bGw7CisgICAgICAgIGNhbC5jbGVhcigpOworICAgICAgICBjYWwuc2V0KENhbGVuZGFyLkVSQSwgR3JlZ29yaWFuQ2FsZW5kYXIuQkMpOworICAgICAgICBjYWwuc2V0KENhbGVuZGFyLllFQVIsIDgxKTsgLy8gODEgQkMgaXMgYSBsZWFwIHllYXIgKHByb2xlcHRpY2FsbHkpCisgICAgICAgIGNhbC5zZXQoQ2FsZW5kYXIuTU9OVEgsIENhbGVuZGFyLkZFQlJVQVJZKTsKKyAgICAgICAgY2FsLnNldChDYWxlbmRhci5EQVRFLCAyOCk7CisgICAgICAgIGNhbC5hZGQoQ2FsZW5kYXIuREFURSwgMSk7CisgICAgICAgIGlmIChjYWwuZ2V0KENhbGVuZGFyLkRBVEUpICE9IDI5IHx8CisgICAgICAgICAgICAhY2FsLmlzTGVhcFllYXIoLTgwKSkgLy8gLTgwID09IDgxIEJDCisgICAgICAgICAgICBlcnJsbigiQ2FsZW5kYXIgbm90IHByb2xlcHRpYyIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENhbGVuZGFyIGFuZCBHcmVnb3JpYW5DYWxlbmRhciBoYXNoQ29kZSgpIG1ldGhvZHMgbmVlZCBpbXByb3ZlbWVudC4KKyAgICAgKiBDYWxlbmRhciBuZWVkcyBhIGdvb2QgaW1wbGVtZW50YXRpb24gdGhhdCBzdWJjbGFzc2VzIGNhbiBvdmVycmlkZSwKKyAgICAgKiBhbmQgR3JlZ29yaWFuQ2FsZW5kYXIgc2hvdWxkIHVzZSB0aGF0IGltcGxlbWVudGF0aW9uLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTM2Mzk5KCkgeworICAgICAgICAvKiBOb3RlOiBUaGlzIHRlc3QgaXMgYWN0dWFsbHkgbW9yZSBzdHJpY3QgdGhhbiBpdCBoYXMgdG8gYmUuCisgICAgICAgICAqIFRlY2huaWNhbGx5LCB0aGVyZSBpcyBubyByZXF1aXJlbWVudCB0aGF0IHVuZXF1YWwgb2JqZWN0cyBoYXZlCisgICAgICAgICAqIHVuZXF1YWwgaGFzaGVzLiAgV2Ugb25seSByZXF1aXJlIGVxdWFsIG9iamVjdHMgdG8gaGF2ZSBlcXVhbCBoYXNoZXMuCisgICAgICAgICAqIEl0IGlzIGRlc2lyYWJsZSBmb3IgdW5lcXVhbCBvYmplY3RzIHRvIGhhdmUgZGlzdHJpYnV0ZWQgaGFzaGVzLCBidXQKKyAgICAgICAgICogdGhlcmUgaXMgbm8gaGFyZCByZXF1aXJlbWVudCBoZXJlLgorICAgICAgICAgKgorICAgICAgICAgKiBJbiB0aGlzIHRlc3Qgd2UgbWFrZSBhc3N1bXB0aW9ucyBhYm91dCBjZXJ0YWluIGF0dHJpYnV0ZXMgb2YgY2FsZW5kYXIKKyAgICAgICAgICogb2JqZWN0cyBnZXR0aW5nIHJlcHJlc2VudGVkIGluIHRoZSBoYXNoLCB3aGljaCBuZWVkIG5vdCBhbHdheXMgYmUgdGhlCisgICAgICAgICAqIGNhc2UgKGFsdGhvdWdoIGl0IGRvZXMgd29yayBjdXJyZW50bHkgd2l0aCB0aGUgZ2l2ZW4gdGVzdCkuICovCisgICAgICAgIENhbGVuZGFyIGEgPSBDYWxlbmRhci5nZXRJbnN0YW5jZSgpOworICAgICAgICBDYWxlbmRhciBiID0gKENhbGVuZGFyKWEuY2xvbmUoKTsKKyAgICAgICAgaWYgKGEuaGFzaENvZGUoKSAhPSBiLmhhc2hDb2RlKCkpIHsKKyAgICAgICAgICAgIGVycmxuKCJDYWxlbmRhciBoYXNoIGNvZGUgdW5lcXVhbCBmb3IgY2xvbmVkIG9iamVjdHMiKTsKKyAgICAgICAgfQorCisgICAgICAgIGIuc2V0TWluaW1hbERheXNJbkZpcnN0V2Vlayg3IC0gYS5nZXRNaW5pbWFsRGF5c0luRmlyc3RXZWVrKCkpOworICAgICAgICBpZiAoYS5oYXNoQ29kZSgpID09IGIuaGFzaENvZGUoKSkgeworICAgICAgICAgICAgZXJybG4oIkNhbGVuZGFyIGhhc2ggY29kZSBpZ25vcmVzIG1pbmltYWwgZGF5cyBpbiBmaXJzdCB3ZWVrIik7CisgICAgICAgIH0KKyAgICAgICAgYi5zZXRNaW5pbWFsRGF5c0luRmlyc3RXZWVrKGEuZ2V0TWluaW1hbERheXNJbkZpcnN0V2VlaygpKTsKKworICAgICAgICBiLnNldEZpcnN0RGF5T2ZXZWVrKChhLmdldEZpcnN0RGF5T2ZXZWVrKCkgJSA3KSArIDEpOyAvLyBOZXh0IGRheQorICAgICAgICBpZiAoYS5oYXNoQ29kZSgpID09IGIuaGFzaENvZGUoKSkgeworICAgICAgICAgICAgZXJybG4oIkNhbGVuZGFyIGhhc2ggY29kZSBpZ25vcmVzIGZpcnN0IGRheSBvZiB3ZWVrIik7CisgICAgICAgIH0KKyAgICAgICAgYi5zZXRGaXJzdERheU9mV2VlayhhLmdldEZpcnN0RGF5T2ZXZWVrKCkpOworCisgICAgICAgIGIuc2V0TGVuaWVudCghYS5pc0xlbmllbnQoKSk7CisgICAgICAgIGlmIChhLmhhc2hDb2RlKCkgPT0gYi5oYXNoQ29kZSgpKSB7CisgICAgICAgICAgICBlcnJsbigiQ2FsZW5kYXIgaGFzaCBjb2RlIGlnbm9yZXMgbGVuaWVudCBzZXR0aW5nIik7CisgICAgICAgIH0KKyAgICAgICAgYi5zZXRMZW5pZW50KGEuaXNMZW5pZW50KCkpOworICAgICAgICAKKyAgICAgICAgLy8gQXNzdW1lIGdldFRpbWVab25lKCkgcmV0dXJucyBhIHJlZmVyZW5jZSwgbm90IGEgY2xvbmUKKyAgICAgICAgLy8gb2YgYSByZWZlcmVuY2UgLS0gdGhpcyBpcyB0cnVlIGFzIG9mIHRoaXMgd3JpdGluZworICAgICAgICBiLmdldFRpbWVab25lKCkuc2V0UmF3T2Zmc2V0KGEuZ2V0VGltZVpvbmUoKS5nZXRSYXdPZmZzZXQoKSArIDYwKjYwKjEwMDApOworICAgICAgICBpZiAoYS5oYXNoQ29kZSgpID09IGIuaGFzaENvZGUoKSkgeworICAgICAgICAgICAgZXJybG4oIkNhbGVuZGFyIGhhc2ggY29kZSBpZ25vcmVzIHpvbmUiKTsKKyAgICAgICAgfQorICAgICAgICBiLmdldFRpbWVab25lKCkuc2V0UmF3T2Zmc2V0KGEuZ2V0VGltZVpvbmUoKS5nZXRSYXdPZmZzZXQoKSk7CisKKyAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIgYyA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcigpOworICAgICAgICBHcmVnb3JpYW5DYWxlbmRhciBkID0gKEdyZWdvcmlhbkNhbGVuZGFyKWMuY2xvbmUoKTsKKyAgICAgICAgaWYgKGMuaGFzaENvZGUoKSAhPSBkLmhhc2hDb2RlKCkpIHsKKyAgICAgICAgICAgIGVycmxuKCJHcmVnb3JpYW5DYWxlbmRhciBoYXNoIGNvZGUgdW5lcXVhbCBmb3IgY2xvbmVzIG9iamVjdHMiKTsKKyAgICAgICAgfQorICAgICAgICBEYXRlIGN1dG92ZXIgPSBjLmdldEdyZWdvcmlhbkNoYW5nZSgpOworICAgICAgICBkLnNldEdyZWdvcmlhbkNoYW5nZShuZXcgRGF0ZShjdXRvdmVyLmdldFRpbWUoKSArIDI0KjYwKjYwKjEwMDApKTsKKyAgICAgICAgaWYgKGMuaGFzaENvZGUoKSA9PSBkLmhhc2hDb2RlKCkpIHsKKyAgICAgICAgICAgIGVycmxuKCJHcmVnb3JpYW5DYWxlbmRhciBoYXNoIGNvZGUgaWdub3JlcyBjdXRvdmVyIik7CisgICAgICAgIH0gICAgICAgIAorICAgIH0KKworICAgIC8qKgorICAgICAqIEdyZWdvcmlhbkNhbGVuZGFyLmVxdWFscygpIGlnbm9yZXMgY3V0b3ZlciBkYXRlCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQxNDE2NjUoKSB7CisgICAgICAgIEdyZWdvcmlhbkNhbGVuZGFyIGNhbCA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcigpOworICAgICAgICBHcmVnb3JpYW5DYWxlbmRhciBjYWwyID0gKEdyZWdvcmlhbkNhbGVuZGFyKWNhbC5jbG9uZSgpOworICAgICAgICBEYXRlIGN1dCA9IGNhbC5nZXRHcmVnb3JpYW5DaGFuZ2UoKTsKKyAgICAgICAgRGF0ZSBjdXQyID0gbmV3IERhdGUoY3V0LmdldFRpbWUoKSArIDEwMCoyNCo2MCo2MCoxMDAwTCk7IC8vIDEwMCBkYXlzIGxhdGVyCisgICAgICAgIGlmICghY2FsLmVxdWFscyhjYWwyKSkgeworICAgICAgICAgICAgZXJybG4oIkNsb25lZCBHcmVnb3JpYW5DYWxlbmRhcnMgbm90IGVxdWFsIik7CisgICAgICAgIH0KKyAgICAgICAgY2FsMi5zZXRHcmVnb3JpYW5DaGFuZ2UoY3V0Mik7CisgICAgICAgIGlmIChjYWwuZXF1YWxzKGNhbDIpKSB7CisgICAgICAgICAgICBlcnJsbigiR3JlZ29yaWFuQ2FsZW5kYXIuZXF1YWxzKCkgaWdub3JlcyBjdXRvdmVyIik7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQnVnIHN0YXRlcyB0aGF0IEFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiBpcyB0aHJvd24gYnkgR3JlZ29yaWFuQ2FsZW5kYXIucm9sbCgpCisgICAgICogd2hlbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gc2hvdWxkIGJlLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTQyOTMzKCkgeworICAgICAgICBHcmVnb3JpYW5DYWxlbmRhciBjYWxlbmRhciA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcigpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgY2FsZW5kYXIucm9sbCgtMSwgdHJ1ZSk7CisgICAgICAgICAgICBlcnJsbigiVGVzdCBmYWlsZWQsIG5vIGV4Y2VwdGlvbiB0cm93biIpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgLy8gT0s6IERvIG5vdGhpbmcKKyAgICAgICAgICAgIC8vIGxvZ2xuKCJUZXN0IHBhc3NlZCIpOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludCgiIik7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiVGVzdCBmYWlsZWQuIFVuZXhwZWN0ZWQgZXhjZXB0aW9uIGlzIHRocm93bjogIiArIGUpOworICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgfSAKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHcmVnb3JpYW5DYWxlbmRhciBoYW5kbGluZyBvZiBEYXRlcyBMb25nLk1JTl9WQUxVRSBhbmQgTG9uZy5NQVhfVkFMVUUgaXMKKyAgICAgKiBjb25mdXNpbmc7IHVubGVzcyB0aGUgdGltZSB6b25lIGhhcyBhIHJhdyBvZmZzZXQgb2YgemVybywgb25lIG9yIHRoZQorICAgICAqIG90aGVyIG9mIHRoZXNlIHdpbGwgd3JhcC4gIFdlJ3ZlIG1vZGlmaWVkIHRoZSB0ZXN0IGdpdmVuIGluIHRoZSBidWcKKyAgICAgKiByZXBvcnQgdG8gdGhlcmVmb3JlIG9ubHkgY2hlY2sgdGhlIGJlaGF2aW9yIG9mIGEgY2FsZW5kYXIgd2l0aCBhIHplcm8gcmF3CisgICAgICogb2Zmc2V0IHpvbmUuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQxNDUxNTgoKSB7CisgICAgICAgIEdyZWdvcmlhbkNhbGVuZGFyIGNhbGVuZGFyID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKCk7CisKKyAgICAgICAgY2FsZW5kYXIuc2V0VGltZVpvbmUoVGltZVpvbmUuZ2V0VGltZVpvbmUoIkdNVCIpKTsKKworICAgICAgICBjYWxlbmRhci5zZXRUaW1lKG5ldyBEYXRlKExvbmcuTUlOX1ZBTFVFKSk7CisgICAgICAgIGludCB5ZWFyMSA9IGNhbGVuZGFyLmdldChDYWxlbmRhci5ZRUFSKTsKKyAgICAgICAgaW50IGVyYTEgPSBjYWxlbmRhci5nZXQoQ2FsZW5kYXIuRVJBKTsKKyAgICAgICAgCisgICAgICAgIGNhbGVuZGFyLnNldFRpbWUobmV3IERhdGUoTG9uZy5NQVhfVkFMVUUpKTsKKyAgICAgICAgaW50IHllYXIyID0gY2FsZW5kYXIuZ2V0KENhbGVuZGFyLllFQVIpOworICAgICAgICBpbnQgZXJhMiA9IGNhbGVuZGFyLmdldChDYWxlbmRhci5FUkEpOworICAgICAgICAKKyAgICAgICAgaWYgKHllYXIxID09IHllYXIyICYmIGVyYTEgPT0gZXJhMikgeworICAgICAgICAgICAgZXJybG4oIkZhaWw6IExvbmcuTUlOX1ZBTFVFIG9yIExvbmcuTUFYX1ZBTFVFIHdyYXBwaW5nIGFyb3VuZCIpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogTWF4aW11bSB2YWx1ZSBmb3IgWUVBUiBmaWVsZCB3cm9uZy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDE0NTk4MygpIHsKKyAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIgY2FsZW5kYXIgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoKTsKKyAgICAgICAgY2FsZW5kYXIuc2V0VGltZVpvbmUoVGltZVpvbmUuZ2V0VGltZVpvbmUoIkdNVCIpKTsKKyAgICAgICAgRGF0ZVtdIERBVEVTID0geyBuZXcgRGF0ZShMb25nLk1BWF9WQUxVRSksIG5ldyBEYXRlKExvbmcuTUlOX1ZBTFVFKSB9OworICAgICAgICBmb3IgKGludCBpPTA7IGk8REFURVMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGNhbGVuZGFyLnNldFRpbWUoREFURVNbaV0pOworICAgICAgICAgICAgaW50IHllYXIgPSBjYWxlbmRhci5nZXQoQ2FsZW5kYXIuWUVBUik7CisgICAgICAgICAgICBpbnQgbWF4WWVhciA9IGNhbGVuZGFyLmdldE1heGltdW0oQ2FsZW5kYXIuWUVBUik7CisgICAgICAgICAgICBpZiAoeWVhciA+IG1heFllYXIpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRmFpbGVkIGZvciAiK0RBVEVTW2ldLmdldFRpbWUoKSsiIG1zOiB5ZWFyPSIgKworICAgICAgICAgICAgICAgICAgICAgIHllYXIgKyAiLCBtYXhZZWFyPSIgKyBtYXhZZWFyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFRoaXMgaXMgYSBidWcgaW4gdGhlIHZhbGlkYXRpb24gY29kZSBvZiBHcmVnb3JpYW5DYWxlbmRhci4gIEFzIHJlcG9ydGVkLAorICAgICAqIHRoZSBidWcgc2VlbXMgd29yc2UgdGhhbiBpdCByZWFsbHkgaXMsIGR1ZSB0byBhIGJ1ZyBpbiB0aGUgd2F5IHRoZSBidWcKKyAgICAgKiByZXBvcnQgdGVzdCB3YXMgd3JpdHRlbi4gIEluIHJlYWxpdHkgdGhlIGJ1ZyBpcyByZXN0cmljdGVkIHRvIHRoZSBEQVlfT0ZfWUVBUgorICAgICAqIGZpZWxkLiAtIGxpdSA2LzI5Lzk4CisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQxNDcyNjkoKSB7CisgICAgICAgIEdyZWdvcmlhbkNhbGVuZGFyIGNhbGVuZGFyID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKCk7CisgICAgICAgIGNhbGVuZGFyLnNldExlbmllbnQoZmFsc2UpOworICAgICAgICBqYXZhLnV0aWwuQ2FsZW5kYXIgdGVtcGNhbCA9IGphdmEudXRpbC5DYWxlbmRhci5nZXRJbnN0YW5jZSgpOworICAgICAgICB0ZW1wY2FsLmNsZWFyKCk7CisgICAgICAgIHRlbXBjYWwuc2V0KDE5OTYsIENhbGVuZGFyLkpBTlVBUlksIDMpOyAvLyBBcmJpdHJhcnkgZGF0ZQorICAgICAgICBEYXRlIGRhdGUgPSB0ZW1wY2FsLmdldFRpbWUoKTsgCisgICAgICAgIGZvciAoaW50IGZpZWxkID0gMDsgZmllbGQgPCBjYWxlbmRhci5nZXRGaWVsZENvdW50KCk7IGZpZWxkKyspIHsKKyAgICAgICAgICAgIGNhbGVuZGFyLnNldFRpbWUoZGF0ZSk7CisgICAgICAgICAgICAvLyBOb3RlOiBJbiB0aGUgYnVnIHJlcG9ydCwgZ2V0QWN0dWFsTWF4aW11bSgpIHdhcyBjYWxsZWQgaW5zdGVhZAorICAgICAgICAgICAgLy8gb2YgZ2V0TWF4aW11bSgpIC0tIHRoaXMgd2FzIGFuIGVycm9yLiAgVGhlIHZhbGlkYXRpb24gY29kZSBkb2Vzbid0CisgICAgICAgICAgICAvLyB1c2UgZ2V0QWN0dWFsTWF4aW11bSgpLCBzaW5jZSB0aGF0J3MgdG9vIGNvc3RseS4KKyAgICAgICAgICAgIGludCBtYXggPSBjYWxlbmRhci5nZXRNYXhpbXVtKGZpZWxkKTsKKyAgICAgICAgICAgIGludCB2YWx1ZSA9IG1heCsxOworICAgICAgICAgICAgY2FsZW5kYXIuc2V0KGZpZWxkLCB2YWx1ZSk7IAorICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBjYWxlbmRhci5nZXRUaW1lKCk7IC8vIEZvcmNlIHRpbWUgY29tcHV0YXRpb24KKyAgICAgICAgICAgICAgICAvLyBXZSBleHBlY3QgYW4gZXhjZXB0aW9uIHRvIGJlIHRocm93bi4gSWYgd2UgZmFsbCB0aHJvdWdoCisgICAgICAgICAgICAgICAgLy8gdG8gdGhlIG5leHQgbGluZSwgdGhlbiB3ZSBoYXZlIGEgYnVnLgorICAgICAgICAgICAgICAgIGVycmxuKCJUZXN0IGZhaWxlZCB3aXRoIGZpZWxkICIgKyBGSUVMRF9OQU1FW2ZpZWxkXSArCisgICAgICAgICAgICAgICAgICAgICAgIiwgZGF0ZSBiZWZvcmU6ICIgKyBkYXRlICsKKyAgICAgICAgICAgICAgICAgICAgICAiLCBkYXRlIGFmdGVyOiAiICsgY2FsZW5kYXIuZ2V0VGltZSgpICsKKyAgICAgICAgICAgICAgICAgICAgICAiLCB2YWx1ZTogIiArIHZhbHVlICsgIiAobWF4ID0gIiArIG1heCArIikiKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludCgiIik7CisgICAgICAgICAgICB9IAorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVwb3J0ZWQgYnVnIGlzIHRoYXQgYSBHcmVnb3JpYW5DYWxlbmRhciB3aXRoIGEgY3V0b3ZlciBvZiBEYXRlKExvbmcuTUFYX1ZBTFVFKQorICAgICAqIGRvZXNuJ3QgYmVoYXZlIGFzIGEgcHVyZSBKdWxpYW4gY2FsZW5kYXIuCisgICAgICogQ0FOTk9UIFJFUFJPRFVDRSBUSElTIEJVRworICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTQ5Njc3KCkgeworICAgICAgICBUaW1lWm9uZVtdIHpvbmVzID0geyBUaW1lWm9uZS5nZXRUaW1lWm9uZSgiR01UIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVab25lLmdldFRpbWVab25lKCJQU1QiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGltZVpvbmUuZ2V0VGltZVpvbmUoIkVBVCIpIH07CisgICAgICAgIGZvciAoaW50IGk9MDsgaTx6b25lcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIgY2FsZW5kYXIgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoem9uZXNbaV0pOworCisgICAgICAgICAgICAvLyBNYWtlIHN1cmUgZXh0cmVtZSB2YWx1ZXMgZG9uJ3Qgd3JhcCBhcm91bmQKKyAgICAgICAgICAgIGNhbGVuZGFyLnNldFRpbWUobmV3IERhdGUoTG9uZy5NSU5fVkFMVUUpKTsKKyAgICAgICAgICAgIGlmIChjYWxlbmRhci5nZXQoQ2FsZW5kYXIuRVJBKSAhPSBHcmVnb3JpYW5DYWxlbmRhci5CQykgeworICAgICAgICAgICAgICAgIGVycmxuKCJGYWlsOiBMb25nLk1JTl9WQUxVRSBtcyBoYXMgYW4gQUQgeWVhciIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FsZW5kYXIuc2V0VGltZShuZXcgRGF0ZShMb25nLk1BWF9WQUxVRSkpOworICAgICAgICAgICAgaWYgKGNhbGVuZGFyLmdldChDYWxlbmRhci5FUkEpICE9IEdyZWdvcmlhbkNhbGVuZGFyLkFEKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZhaWw6IExvbmcuTUFYX1ZBTFVFIG1zIGhhcyBhIEJDIHllYXIiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FsZW5kYXIuc2V0R3JlZ29yaWFuQ2hhbmdlKG5ldyBEYXRlKExvbmcuTUFYX1ZBTFVFKSk7CisgICAgICAgICAgICAvLyB0byBvYnRhaW4gYSBwdXJlIEp1bGlhbiBjYWxlbmRhcgorICAgICAgICAgICAgCisgICAgICAgICAgICBib29sZWFuIGlzMTAwTGVhcCA9IGNhbGVuZGFyLmlzTGVhcFllYXIoMTAwKTsKKyAgICAgICAgICAgIGlmICghaXMxMDBMZWFwKSB7CisgICAgICAgICAgICAgICAgZXJybG4oInRlc3QgZmFpbGVkIHdpdGggem9uZSAiICsgem9uZXNbaV0uZ2V0SUQoKSk7CisgICAgICAgICAgICAgICAgZXJybG4oIiBjdXRvdmVyIGRhdGUgaXMgQ2FsZW5kYXIuTUFYX0RBVEUiKTsKKyAgICAgICAgICAgICAgICBlcnJsbigiIGlzTGVhcFllYXIoMTAwKSByZXR1cm5zOiAiICsgaXMxMDBMZWFwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIENhbGVuZGFyIGFuZCBEYXRlIEhPVVIgYnJva2VuLiAgSWYgSE9VUiBpcyBvdXQtb2YtcmFuZ2UsIENhbGVuZGFyCisgICAgICogYW5kIERhdGUgY2xhc3NlcyB3aWxsIG1pc2JlaGF2ZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDE2MjU4NygpIHsKKyAgICAgICAgVGltZVpvbmUgdHogPSBUaW1lWm9uZS5nZXRUaW1lWm9uZSgiUFNUIik7CisgICAgICAgIFRpbWVab25lLnNldERlZmF1bHQodHopOworICAgICAgICBHcmVnb3JpYW5DYWxlbmRhciBjYWwgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIodHopOworICAgICAgICBEYXRlIGQ7CisgICAgICAgIAorICAgICAgICBmb3IgKGludCBpPTA7IGk8NTsgKytpKSB7CisgICAgICAgICAgICBpZiAoaT4wKSBsb2dsbigiLS0tIik7CisKKyAgICAgICAgICAgIGNhbC5jbGVhcigpOworICAgICAgICAgICAgY2FsLnNldCgxOTk4LCBDYWxlbmRhci5BUFJJTCwgNSwgaSwgMCk7CisgICAgICAgICAgICBkID0gY2FsLmdldFRpbWUoKTsKKyAgICAgICAgICAgIFN0cmluZyBzMCA9IGQudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIGxvZ2xuKCIwICIgKyBpICsgIjogIiArIHMwKTsKKworICAgICAgICAgICAgY2FsLmNsZWFyKCk7CisgICAgICAgICAgICBjYWwuc2V0KDE5OTgsIENhbGVuZGFyLkFQUklMLCA0LCBpKzI0LCAwKTsKKyAgICAgICAgICAgIGQgPSBjYWwuZ2V0VGltZSgpOworICAgICAgICAgICAgU3RyaW5nIHNQbHVzID0gZC50b1N0cmluZygpOworICAgICAgICAgICAgbG9nbG4oIisgIiArIGkgKyAiOiAiICsgc1BsdXMpOworCisgICAgICAgICAgICBjYWwuY2xlYXIoKTsKKyAgICAgICAgICAgIGNhbC5zZXQoMTk5OCwgQ2FsZW5kYXIuQVBSSUwsIDYsIGktMjQsIDApOworICAgICAgICAgICAgZCA9IGNhbC5nZXRUaW1lKCk7CisgICAgICAgICAgICBTdHJpbmcgc01pbnVzID0gZC50b1N0cmluZygpOworICAgICAgICAgICAgbG9nbG4oIi0gIiArIGkgKyAiOiAiICsgc01pbnVzKTsKKworICAgICAgICAgICAgaWYgKCFzMC5lcXVhbHMoc1BsdXMpIHx8ICFzMC5lcXVhbHMoc01pbnVzKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGYWlsOiBBbGwgdGhyZWUgbGluZXMgbXVzdCBtYXRjaCIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQWRkaW5nIDEyIG1vbnRocyBiZWhhdmVzIGRpZmZlcmVudGx5IGZyb20gYWRkaW5nIDEgeWVhcgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTY1MzQzKCkgeworICAgICAgICBHcmVnb3JpYW5DYWxlbmRhciBjYWxlbmRhciA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcigxOTk2LCBDYWxlbmRhci5GRUJSVUFSWSwgMjkpOworICAgICAgICBEYXRlIHN0YXJ0ID0gY2FsZW5kYXIuZ2V0VGltZSgpOworICAgICAgICBsb2dsbigiaW5pdCBkYXRlOiAiICsgc3RhcnQpOworICAgICAgICBjYWxlbmRhci5hZGQoQ2FsZW5kYXIuTU9OVEgsIDEyKTsgCisgICAgICAgIERhdGUgZGF0ZTEgPSBjYWxlbmRhci5nZXRUaW1lKCk7CisgICAgICAgIGxvZ2xuKCJhZnRlciBhZGRpbmcgMTIgbW9udGhzOiAiICsgZGF0ZTEpOworICAgICAgICBjYWxlbmRhci5zZXRUaW1lKHN0YXJ0KTsKKyAgICAgICAgY2FsZW5kYXIuYWRkKENhbGVuZGFyLllFQVIsIDEpOworICAgICAgICBEYXRlIGRhdGUyID0gY2FsZW5kYXIuZ2V0VGltZSgpOworICAgICAgICBsb2dsbigiYWZ0ZXIgYWRkaW5nIG9uZSB5ZWFyIDogIiArIGRhdGUyKTsKKyAgICAgICAgaWYgKGRhdGUxLmVxdWFscyhkYXRlMikpIHsKKyAgICAgICAgICAgIGxvZ2xuKCJUZXN0IHBhc3NlZCIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZXJybG4oIlRlc3QgZmFpbGVkIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHcmVnb3JpYW5DYWxlbmRhci5nZXRBY3R1YWxNYXhpbXVtKCkgZG9lcyBub3QgYWNjb3VudCBmb3IgZmlyc3QgZGF5IG9mIHdlZWsuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQxNjYxMDkoKSB7CisgICAgICAgIC8qIFRlc3QgbW9udGg6CisgICAgICAgICAqCisgICAgICAgICAqICAgICAgTWFyY2ggMTk5OAorICAgICAgICAgKiBTdSBNbyBUdSBXZSBUaCBGciBTYQorICAgICAgICAgKiAgMSAgMiAgMyAgNCAgNSAgNiAgNworICAgICAgICAgKiAgOCAgOSAxMCAxMSAxMiAxMyAxNAorICAgICAgICAgKiAxNSAxNiAxNyAxOCAxOSAyMCAyMQorICAgICAgICAgKiAyMiAyMyAyNCAyNSAyNiAyNyAyOAorICAgICAgICAgKiAyOSAzMCAzMQorICAgICAgICAgKi8KKyAgICAgICAgYm9vbGVhbiBwYXNzZWQgPSB0cnVlOworICAgICAgICBpbnQgZmllbGQgPSBDYWxlbmRhci5XRUVLX09GX01PTlRIOworCisgICAgICAgIEdyZWdvcmlhbkNhbGVuZGFyIGNhbGVuZGFyID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKExvY2FsZS5VUyk7CisgICAgICAgIGNhbGVuZGFyLnNldCgxOTk4LCBDYWxlbmRhci5NQVJDSCwgMSk7CisgICAgICAgIGNhbGVuZGFyLnNldE1pbmltYWxEYXlzSW5GaXJzdFdlZWsoMSk7CisgICAgICAgIGxvZ2xuKCJEYXRlOiAgIiArIGNhbGVuZGFyLmdldFRpbWUoKSk7CisKKyAgICAgICAgaW50IGZpcnN0SW5Nb250aCA9IGNhbGVuZGFyLmdldChDYWxlbmRhci5EQVlfT0ZfTU9OVEgpOworCisgICAgICAgIGZvciAoaW50IGZpcnN0SW5XZWVrID0gQ2FsZW5kYXIuU1VOREFZOyBmaXJzdEluV2VlayA8PSBDYWxlbmRhci5TQVRVUkRBWTsgZmlyc3RJbldlZWsrKykgeworICAgICAgICAgICAgY2FsZW5kYXIuc2V0Rmlyc3REYXlPZldlZWsoZmlyc3RJbldlZWspOworICAgICAgICAgICAgaW50IHJldHVybmVkID0gY2FsZW5kYXIuZ2V0QWN0dWFsTWF4aW11bShmaWVsZCk7CisgICAgICAgICAgICBpbnQgZXhwZWN0ZWQgPSAoMzEgKyAoKGZpcnN0SW5Nb250aCAtIGZpcnN0SW5XZWVrICsgNyklIDcpICsgNikgLyA3OworCisgICAgICAgICAgICBsb2dsbigiRmlyc3QgZGF5IG9mIHdlZWsgPSAiICsgZmlyc3RJbldlZWsgKworICAgICAgICAgICAgICAgICAgIiAgZ2V0QWN0dWFsTWF4aW11bShXRUVLX09GX01PTlRIKSA9ICIgKyByZXR1cm5lZCArCisgICAgICAgICAgICAgICAgICAiICBleHBlY3RlZCA9ICIgKyBleHBlY3RlZCArCisgICAgICAgICAgICAgICAgICAoKHJldHVybmVkID09IGV4cGVjdGVkKSA/ICIgIG9rIiA6ICIgIEZBSUwiKSk7CisKKyAgICAgICAgICAgIGlmIChyZXR1cm5lZCAhPSBleHBlY3RlZCkgeworICAgICAgICAgICAgICAgIHBhc3NlZCA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICghcGFzc2VkKSB7CisgICAgICAgICAgICBlcnJsbigiVGVzdCBmYWlsZWQiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIENhbGVuZGFyLmdldEFjdHVhbE1heGltdW0oWUVBUikgd29ya3Mgd3JvbmcuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQxNjcwNjAoKSB7CisgICAgICAgIGludCBmaWVsZCA9IENhbGVuZGFyLllFQVI7CisgICAgICAgIERhdGVGb3JtYXQgZm9ybWF0ID0gbmV3IFNpbXBsZURhdGVGb3JtYXQoIkVFRSBNTU0gZGQgSEg6bW06c3Mgenp6IHl5eXkgRyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYWxlLlVTKTsKKworICAgICAgICBHcmVnb3JpYW5DYWxlbmRhciBjYWxlbmRhcnNbXSA9IHsKKyAgICAgICAgICAgIG5ldyBHcmVnb3JpYW5DYWxlbmRhcigxMDAsIENhbGVuZGFyLk5PVkVNQkVSLCAxKSwKKyAgICAgICAgICAgIG5ldyBHcmVnb3JpYW5DYWxlbmRhcigtOTkgLyoxMDBCQyovLCBDYWxlbmRhci5KQU5VQVJZLCAxKSwKKyAgICAgICAgICAgIG5ldyBHcmVnb3JpYW5DYWxlbmRhcigxOTk2LCBDYWxlbmRhci5GRUJSVUFSWSwgMjkpLAorICAgICAgICB9OworCisgICAgICAgIFN0cmluZ1tdIGlkID0geyAiSHlicmlkIiwgIkdyZWdvcmlhbiIsICJKdWxpYW4iIH07CisKKyAgICAgICAgZm9yIChpbnQgaz0wOyBrPDM7ICsraykgeworICAgICAgICAgICAgbG9nbG4oIi0tLSAiICsgaWRba10gKyAiIC0tLSIpOworCisgICAgICAgICAgICBmb3IgKGludCBqPTA7IGo8Y2FsZW5kYXJzLmxlbmd0aDsgKytqKSB7CisgICAgICAgICAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIgY2FsZW5kYXIgPSBjYWxlbmRhcnNbal07CisgICAgICAgICAgICAgICAgaWYgKGsgPT0gMSkgeworICAgICAgICAgICAgICAgICAgICBjYWxlbmRhci5zZXRHcmVnb3JpYW5DaGFuZ2UobmV3IERhdGUoTG9uZy5NSU5fVkFMVUUpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGsgPT0gMikgeworICAgICAgICAgICAgICAgICAgICBjYWxlbmRhci5zZXRHcmVnb3JpYW5DaGFuZ2UobmV3IERhdGUoTG9uZy5NQVhfVkFMVUUpKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBmb3JtYXQuc2V0Q2FsZW5kYXIoKENhbGVuZGFyKWNhbGVuZGFyLmNsb25lKCkpOworCisgICAgICAgICAgICAgICAgRGF0ZSBkYXRlQmVmb3JlID0gY2FsZW5kYXIuZ2V0VGltZSgpOworCisgICAgICAgICAgICAgICAgaW50IG1heFllYXIgPSBjYWxlbmRhci5nZXRBY3R1YWxNYXhpbXVtKGZpZWxkKTsKKyAgICAgICAgICAgICAgICBsb2dsbigibWF4WWVhcjogIiArIG1heFllYXIgKyAiIGZvciAiICsgZm9ybWF0LmZvcm1hdChjYWxlbmRhci5nZXRUaW1lKCkpKTsKKyAgICAgICAgICAgICAgICBsb2dsbigiZGF0ZSBiZWZvcmU6ICIgKyBmb3JtYXQuZm9ybWF0KGRhdGVCZWZvcmUpKTsKKworICAgICAgICAgICAgICAgIGludCB5ZWFyc1tdID0gezIwMDAsIG1heFllYXItMSwgbWF4WWVhciwgbWF4WWVhcisxfTsKKworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgeWVhcnMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiB2YWxpZCA9IHllYXJzW2ldIDw9IG1heFllYXI7CisgICAgICAgICAgICAgICAgICAgIGNhbGVuZGFyLnNldChmaWVsZCwgeWVhcnNbaV0pOworICAgICAgICAgICAgICAgICAgICBEYXRlIGRhdGVBZnRlciA9IGNhbGVuZGFyLmdldFRpbWUoKTsKKyAgICAgICAgICAgICAgICAgICAgaW50IG5ld1llYXIgPSBjYWxlbmRhci5nZXQoZmllbGQpOworICAgICAgICAgICAgICAgICAgICBjYWxlbmRhci5zZXRUaW1lKGRhdGVCZWZvcmUpOyAvLyByZXN0b3JlIGNhbGVuZGFyIGZvciBuZXh0IHVzZQorCisgICAgICAgICAgICAgICAgICAgIGxvZ2xuKCIgWWVhciAiICsgeWVhcnNbaV0gKyAodmFsaWQ/ICIgb2sgIiA6ICIgYmFkIikgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiID0+ICIgKyBmb3JtYXQuZm9ybWF0KGRhdGVBZnRlcikpOworICAgICAgICAgICAgICAgICAgICBpZiAodmFsaWQgJiYgbmV3WWVhciAhPSB5ZWFyc1tpXSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZXJybG4oIiAgRkFJTDogIiArIG5ld1llYXIgKyAiIHNob3VsZCBiZSB2YWxpZDsgZGF0ZSwgbW9udGggYW5kIHRpbWUgc2hvdWxkbid0IGNoYW5nZSIpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF2YWxpZCAmJiBuZXdZZWFyID09IHllYXJzW2ldKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBubyBsb25nZXIgcmVxdWlyZSBzdHJpY3QgeWVhciBtYXhpbWEuICBUaGF0IGlzLCB0aGUgY2FsZW5kYXIKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsZ29yaXRobSBtYXkgd29yayBmb3IgdmFsdWVzID4gdGhlIHN0YXRlZCBtYXhpbXVtLgorICAgICAgICAgICAgICAgICAgICAgICAgLy9lcnJsbigiICBGQUlMOiAiICsgbmV3WWVhciArICIgc2hvdWxkIGJlIGludmFsaWQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2xuKCIgIE5vdGU6ICIgKyBuZXdZZWFyICsgIiA+IG1heGltdW0sIGJ1dCBzdGlsbCB2YWxpZCIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQ2FsZW5kYXIucm9sbCBicm9rZW4KKyAgICAgKiBUaGlzIGJ1ZyByZWxpZXMgb24gdGhlIFRpbWVab25lIGJ1ZyA0MTczNjA0IHRvIGFsc28gYmUgZml4ZWQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQxNzM1MTYoKSB7CisgICAgICAgIGludCBmaWVsZHNMaXN0W11bXSA9IHsKKyAgICAgICAgICAgIHsgMTk5NywgQ2FsZW5kYXIuRkVCUlVBUlksICAxLCAxMCwgNDUsIDE1LCA5MDAgfSwKKyAgICAgICAgICAgIHsgMTk5OSwgQ2FsZW5kYXIuREVDRU1CRVIsIDIyLCAyMywgNTksIDU5LCA5OTkgfQorICAgICAgICB9OworICAgICAgICBpbnQgbGltaXQgPSA0MDsKKyAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIgY2FsID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKCk7CisKKyAgICAgICAgY2FsLnNldFRpbWUobmV3IERhdGUoMCkpOworICAgICAgICBjYWwucm9sbChDYWxlbmRhci5IT1VSLCAgMHg3RjAwMDAwMCk7CisgICAgICAgIGNhbC5yb2xsKENhbGVuZGFyLkhPVVIsIC0weDdGMDAwMDAwKTsKKyAgICAgICAgaWYgKGNhbC5nZXRUaW1lKCkuZ2V0VGltZSgpICE9IDApIHsKKyAgICAgICAgICAgIGVycmxuKCJIb3VyIHJvbGxpbmcgYnJva2VuIik7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGludCBvcD0wOyBvcDwyOyArK29wKSB7CisgICAgICAgICAgICBsb2dsbigiVGVzdGluZyBHcmVnb3JpYW5DYWxlbmRhciAiICsKKyAgICAgICAgICAgICAgICAgIChvcD09MCA/ICJhZGQiIDogInJvbGwiKSk7CisgICAgICAgICAgICBmb3IgKGludCBmaWVsZD0wOyBmaWVsZCA8IGNhbC5nZXRGaWVsZENvdW50KCk7ICsrZmllbGQpIHsKKyAgICAgICAgICAgICAgICBpZiAoZmllbGQgIT0gQ2FsZW5kYXIuWk9ORV9PRkZTRVQgJiYKKyAgICAgICAgICAgICAgICAgICAgZmllbGQgIT0gQ2FsZW5kYXIuRFNUX09GRlNFVCkgeworICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBqPTA7IGo8ZmllbGRzTGlzdC5sZW5ndGg7ICsraikgeworICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZpZWxkc1tdID0gZmllbGRzTGlzdFtqXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbC5jbGVhcigpOworICAgICAgICAgICAgICAgICAgICAgICAgY2FsLnNldChmaWVsZHNbMF0sIGZpZWxkc1sxXSwgZmllbGRzWzJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZHNbM10sIGZpZWxkc1s0XSwgZmllbGRzWzVdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbC5zZXQoQ2FsZW5kYXIuTUlMTElTRUNPTkQsIGZpZWxkc1s2XSk7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDIqbGltaXQ7IGkrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcCA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbC5hZGQoZmllbGQsIGkgPCBsaW1pdCA/IDEgOiAtMSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsLnJvbGwoZmllbGQsIGkgPCBsaW1pdCA/IDEgOiAtMSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbC5nZXQoQ2FsZW5kYXIuWUVBUikgIT0gZmllbGRzWzBdIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsLmdldChDYWxlbmRhci5NT05USCkgIT0gZmllbGRzWzFdIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsLmdldChDYWxlbmRhci5EQVRFKSAhPSBmaWVsZHNbMl0gfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWwuZ2V0KENhbGVuZGFyLkhPVVJfT0ZfREFZKSAhPSBmaWVsZHNbM10gfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWwuZ2V0KENhbGVuZGFyLk1JTlVURSkgIT0gZmllbGRzWzRdIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsLmdldChDYWxlbmRhci5TRUNPTkQpICE9IGZpZWxkc1s1XSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbC5nZXQoQ2FsZW5kYXIuTUlMTElTRUNPTkQpICE9IGZpZWxkc1s2XSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycmxuKCJGaWVsZCAiICsgZmllbGQgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgKCIgKyBGSUVMRF9OQU1FW2ZpZWxkXSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIikgRkFJTCwgZXhwZWN0ZWQgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRzWzBdICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLyIgKyAoZmllbGRzWzFdICsgMSkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvIiArIGZpZWxkc1syXSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAiICsgZmllbGRzWzNdICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOiIgKyBmaWVsZHNbNF0gKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI6IiArIGZpZWxkc1s1XSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi4iICsgZmllbGRzWzZdICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCBnb3QgIiArIGNhbC5nZXQoQ2FsZW5kYXIuWUVBUikgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvIiArIChjYWwuZ2V0KENhbGVuZGFyLk1PTlRIKSArIDEpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLyIgKyBjYWwuZ2V0KENhbGVuZGFyLkRBVEUpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICIgKyBjYWwuZ2V0KENhbGVuZGFyLkhPVVJfT0ZfREFZKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjoiICsgY2FsLmdldChDYWxlbmRhci5NSU5VVEUpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOiIgKyBjYWwuZ2V0KENhbGVuZGFyLlNFQ09ORCkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIuIiArIGNhbC5nZXQoQ2FsZW5kYXIuTUlMTElTRUNPTkQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWwuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWwuc2V0KGZpZWxkc1swXSwgZmllbGRzWzFdLCBmaWVsZHNbMl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZHNbM10sIGZpZWxkc1s0XSwgZmllbGRzWzVdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWwuc2V0KENhbGVuZGFyLk1JTExJU0VDT05ELCBmaWVsZHNbNl0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2xuKCJTdGFydCBkYXRlOiAiICsgY2FsLmdldChDYWxlbmRhci5ZRUFSKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8iICsgKGNhbC5nZXQoQ2FsZW5kYXIuTU9OVEgpICsgMSkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvIiArIGNhbC5nZXQoQ2FsZW5kYXIuREFURSkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgIiArIGNhbC5nZXQoQ2FsZW5kYXIuSE9VUl9PRl9EQVkpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOiIgKyBjYWwuZ2V0KENhbGVuZGFyLk1JTlVURSkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI6IiArIGNhbC5nZXQoQ2FsZW5kYXIuU0VDT05EKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi4iICsgY2FsLmdldChDYWxlbmRhci5NSUxMSVNFQ09ORCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgcHJldiA9IGNhbC5nZXRUaW1lKCkuZ2V0VGltZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMipsaW1pdDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcCA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWwuYWRkKGZpZWxkLCBpIDwgbGltaXQgPyAxIDogLTEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsLnJvbGwoZmllbGQsIGkgPCBsaW1pdCA/IDEgOiAtMSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyB0ID0gY2FsLmdldFRpbWUoKS5nZXRUaW1lKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZGVsdGEgPSB0IC0gcHJldjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldiA9IHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2xuKChvcCA9PSAwID8gImFkZCgiIDogInJvbGwoIikgKyBGSUVMRF9OQU1FW2ZpZWxkXSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpIDwgbGltaXQgPyAiLCArMSkgPT4gIiA6ICIsIC0xKSA9PiAiKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbC5nZXQoQ2FsZW5kYXIuWUVBUikgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLyIgKyAoY2FsLmdldChDYWxlbmRhci5NT05USCkgKyAxKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvIiArIGNhbC5nZXQoQ2FsZW5kYXIuREFURSkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICIgKyBjYWwuZ2V0KENhbGVuZGFyLkhPVVJfT0ZfREFZKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI6IiArIGNhbC5nZXQoQ2FsZW5kYXIuTUlOVVRFKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI6IiArIGNhbC5nZXQoQ2FsZW5kYXIuU0VDT05EKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIuIiArIGNhbC5nZXQoQ2FsZW5kYXIuTUlMTElTRUNPTkQpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBkZWx0YT0iICsgZGVsdGEgKyAiIG1zIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdDQxNzQzNjEoKSB7CisgICAgICAgIEdyZWdvcmlhbkNhbGVuZGFyIGNhbGVuZGFyID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKDE5OTYsIDEsIDI5KTsKKworICAgICAgICBjYWxlbmRhci5hZGQoQ2FsZW5kYXIuTU9OVEgsIDEwKTsgCisgICAgICAgIERhdGUgZGF0ZTEgPSBjYWxlbmRhci5nZXRUaW1lKCk7CisgICAgICAgIGRhdGUxID0gbnVsbDsKKyAgICAgICAgaW50IGQxID0gY2FsZW5kYXIuZ2V0KENhbGVuZGFyLkRBWV9PRl9NT05USCk7CisKKyAgICAgICAgY2FsZW5kYXIgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoMTk5NiwgMSwgMjkpOworICAgICAgICBjYWxlbmRhci5hZGQoQ2FsZW5kYXIuTU9OVEgsIDExKTsgCisgICAgICAgIERhdGUgZGF0ZTIgPSBjYWxlbmRhci5nZXRUaW1lKCk7CisgICAgICAgIGRhdGUyID0gbnVsbDsKKyAgICAgICAgaW50IGQyID0gY2FsZW5kYXIuZ2V0KENhbGVuZGFyLkRBWV9PRl9NT05USCk7CisKKyAgICAgICAgaWYgKGQxICE9IGQyKSB7CisgICAgICAgICAgICBlcnJsbigiYWRkaW5nIG1vbnRocyB0byBGZWIgMjkgYnJva2VuIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDYWxlbmRhciBkb2VzIG5vdCB1cGRhdGUgZmllbGQgdmFsdWVzIHdoZW4gc2V0VGltZVpvbmUgaXMgY2FsbGVkLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTc3NDg0KCkgeworICAgICAgICBUaW1lWm9uZSBQU1QgPSBUaW1lWm9uZS5nZXRUaW1lWm9uZSgiUFNUIik7CisgICAgICAgIFRpbWVab25lIEVTVCA9IFRpbWVab25lLmdldFRpbWVab25lKCJFU1QiKTsKKworICAgICAgICBDYWxlbmRhciBjYWwgPSBDYWxlbmRhci5nZXRJbnN0YW5jZShQU1QsIExvY2FsZS5VUyk7CisgICAgICAgIGNhbC5jbGVhcigpOworICAgICAgICBjYWwuc2V0KDE5OTksIDMsIDIxLCAxNSwgNSwgMCk7IC8vIEFyYml0cmFyeQorICAgICAgICBpbnQgaDEgPSBjYWwuZ2V0KENhbGVuZGFyLkhPVVJfT0ZfREFZKTsKKyAgICAgICAgY2FsLnNldFRpbWVab25lKEVTVCk7CisgICAgICAgIGludCBoMiA9IGNhbC5nZXQoQ2FsZW5kYXIuSE9VUl9PRl9EQVkpOworICAgICAgICBpZiAoaDEgPT0gaDIpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBGaWVsZHMgbm90IHVwZGF0ZWQgYWZ0ZXIgc2V0VGltZVpvbmUiKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGdldFRpbWUoKSBtdXN0IE5PVCBjaGFuZ2Ugd2hlbiB0aW1lIHpvbmUgaXMgY2hhbmdlZC4KKyAgICAgICAgLy8gZ2V0VGltZSgpIHJldHVybnMgem9uZS1pbmRlcGVuZGVudCB0aW1lIGluIG1zLgorICAgICAgICBjYWwuY2xlYXIoKTsKKyAgICAgICAgY2FsLnNldFRpbWVab25lKFBTVCk7CisgICAgICAgIGNhbC5zZXQoQ2FsZW5kYXIuSE9VUl9PRl9EQVksIDEwKTsKKyAgICAgICAgRGF0ZSBwc3QxMCA9IGNhbC5nZXRUaW1lKCk7CisgICAgICAgIGNhbC5zZXRUaW1lWm9uZShFU1QpOworICAgICAgICBEYXRlIGVzdDEwID0gY2FsLmdldFRpbWUoKTsKKyAgICAgICAgaWYgKCFwc3QxMC5lcXVhbHMoZXN0MTApKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogc2V0VGltZVpvbmUgY2hhbmdlZCB0aW1lIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBXZWVrIG9mIHllYXIgaXMgd3JvbmcgYXQgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIHllYXIuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQxOTc2OTkoKSB7CisgICAgICAgIEdyZWdvcmlhbkNhbGVuZGFyIGNhbCA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcigpOworICAgICAgICBjYWwuc2V0Rmlyc3REYXlPZldlZWsoQ2FsZW5kYXIuTU9OREFZKTsKKyAgICAgICAgY2FsLnNldE1pbmltYWxEYXlzSW5GaXJzdFdlZWsoNCk7CisgICAgICAgIERhdGVGb3JtYXQgZm10ID0gbmV3IFNpbXBsZURhdGVGb3JtYXQoIkUgZGQgTU1NIHl5eXkgICdET1k9J0QgJ1dPWT0ndyIpOworICAgICAgICBmbXQuc2V0Q2FsZW5kYXIoY2FsKTsKKworICAgICAgICBpbnRbXSBEQVRBID0geworICAgICAgICAgICAgMjAwMCwgIENhbGVuZGFyLkpBTlVBUlksICAgMSwgICA1MiwKKyAgICAgICAgICAgIDIwMDEsICBDYWxlbmRhci5ERUNFTUJFUiwgIDMxLCAgMSwKKyAgICAgICAgfTsKKworICAgICAgICBmb3IgKGludCBpPTA7IGk8REFUQS5sZW5ndGg7ICkgeworICAgICAgICAgICAgY2FsLnNldChEQVRBW2krK10sIERBVEFbaSsrXSwgREFUQVtpKytdKTsKKyAgICAgICAgICAgIGludCBleHBXT1kgPSBEQVRBW2krK107CisgICAgICAgICAgICBpbnQgYWN0V09ZID0gY2FsLmdldChDYWxlbmRhci5XRUVLX09GX1lFQVIpOworICAgICAgICAgICAgaWYgKGV4cFdPWSA9PSBhY3RXT1kpIHsKKyAgICAgICAgICAgICAgICBsb2dsbigiT2s6ICIgKyBmbXQuZm9ybWF0KGNhbC5nZXRUaW1lKCkpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6ICIgKyBmbXQuZm9ybWF0KGNhbC5nZXRUaW1lKCkpCisgICAgICAgICAgICAgICAgICAgICAgKyAiLCBleHBlY3RlZCBXT1k9IiArIGV4cFdPWSk7CisgICAgICAgICAgICAgICAgY2FsLmFkZChDYWxlbmRhci5EQVRFLCAtOCk7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaj0wOyBqPDE0OyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsLmFkZChDYWxlbmRhci5EQVRFLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgbG9nbG4oZm10LmZvcm1hdChjYWwuZ2V0VGltZSgpKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQ2FsZW5kYXIgREFZX09GX1dFRUtfSU5fTU9OVEggZmllbGRzLT50aW1lIGJyb2tlbi4gIFRoZSBwcm9ibGVtCisgICAgICogaXMgaW4gdGhlIGZpZWxkIGRpc2FtYmlndWF0aW9uIGNvZGUgaW4gR3JlZ29yaWFuQ2FsZW5kYXIuICBUaGlzCisgICAgICogY29kZSBpcyBzdXBwb3NlZCB0byBjaG9vc2UgdGhlIG1vc3QgcmVjZW50IHNldCBvZiBmaWVsZHMKKyAgICAgKiBhbW9uZyB0aGUgZm9sbG93aW5nOgorICAgICAqCisgICAgICogICBNT05USCArIERBWV9PRl9NT05USAorICAgICAqICAgTU9OVEggKyBXRUVLX09GX01PTlRIICsgREFZX09GX1dFRUsKKyAgICAgKiAgIE1PTlRIICsgREFZX09GX1dFRUtfSU5fTU9OVEggKyBEQVlfT0ZfV0VFSworICAgICAqICAgREFZX09GX1lFQVIKKyAgICAgKiAgIFdFRUtfT0ZfWUVBUiArIERBWV9PRl9XRUVLCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQyMDkwNzEoKSB7CisgICAgICAgIENhbGVuZGFyIGNhbCA9IENhbGVuZGFyLmdldEluc3RhbmNlKExvY2FsZS5VUyk7CisKKyAgICAgICAgLy8gR2VuZXJhbCBmaWVsZCBzZXR0aW5nIHRlc3QKKyAgICAgICAgaW50IFkgPSAxOTk1OworICAgICAgICAKKyAgICAgICAgRGF0ZSBkW10gPSBuZXcgRGF0ZVsxM107CisgICAgICAgIGphdmEudXRpbC5DYWxlbmRhciB0ZW1wY2FsID0gamF2YS51dGlsLkNhbGVuZGFyLmdldEluc3RhbmNlKCk7CisgICAgICAgIHRlbXBjYWwuY2xlYXIoKTsKKyAgICAgICAgdGVtcGNhbC5zZXQoWSwgQ2FsZW5kYXIuSkFOVUFSWSwgMSk7CisgICAgICAgIGRbMF0gPSB0ZW1wY2FsLmdldFRpbWUoKTsKKyAgICAgICAgdGVtcGNhbC5zZXQoWSwgQ2FsZW5kYXIuTUFSQ0gsIDEpOworICAgICAgICBkWzFdID0gdGVtcGNhbC5nZXRUaW1lKCk7CisgICAgICAgIHRlbXBjYWwuc2V0KFksIENhbGVuZGFyLkpBTlVBUlksIDQpOworICAgICAgICBkWzJdID0gdGVtcGNhbC5nZXRUaW1lKCk7CisgICAgICAgIHRlbXBjYWwuc2V0KFksIENhbGVuZGFyLkpBTlVBUlksIDE4KTsKKyAgICAgICAgZFszXSA9IHRlbXBjYWwuZ2V0VGltZSgpOworICAgICAgICB0ZW1wY2FsLnNldChZLCBDYWxlbmRhci5KQU5VQVJZLCAxOCk7CisgICAgICAgIGRbNF0gPSB0ZW1wY2FsLmdldFRpbWUoKTsKKyAgICAgICAgdGVtcGNhbC5zZXQoWS0xLCBDYWxlbmRhci5ERUNFTUJFUiwgMjIpOworICAgICAgICBkWzVdID0gdGVtcGNhbC5nZXRUaW1lKCk7CisgICAgICAgIHRlbXBjYWwuc2V0KFksIENhbGVuZGFyLkpBTlVBUlksIDI2KTsKKyAgICAgICAgZFs2XSA9IHRlbXBjYWwuZ2V0VGltZSgpOworICAgICAgICB0ZW1wY2FsLnNldChZLCBDYWxlbmRhci5KQU5VQVJZLCAyNik7CisgICAgICAgIGRbN10gPSB0ZW1wY2FsLmdldFRpbWUoKTsKKyAgICAgICAgdGVtcGNhbC5zZXQoWSwgQ2FsZW5kYXIuTUFSQ0gsIDEpOworICAgICAgICBkWzhdID0gdGVtcGNhbC5nZXRUaW1lKCk7CisgICAgICAgIHRlbXBjYWwuc2V0KFksIENhbGVuZGFyLk9DVE9CRVIsIDYpOworICAgICAgICBkWzldID0gdGVtcGNhbC5nZXRUaW1lKCk7CisgICAgICAgIHRlbXBjYWwuc2V0KFksIENhbGVuZGFyLk9DVE9CRVIsIDEzKTsKKyAgICAgICAgZFsxMF0gPSB0ZW1wY2FsLmdldFRpbWUoKTsKKyAgICAgICAgdGVtcGNhbC5zZXQoWSwgQ2FsZW5kYXIuQVVHVVNULCAxMCk7CisgICAgICAgIGRbMTFdID0gdGVtcGNhbC5nZXRUaW1lKCk7CisgICAgICAgIHRlbXBjYWwuc2V0KFksIENhbGVuZGFyLkRFQ0VNQkVSLCA3KTsKKyAgICAgICAgZFsxMl0gPSB0ZW1wY2FsLmdldFRpbWUoKTsKKworICAgICAgICBPYmplY3RbXSBGSUVMRF9EQVRBID0geworICAgICAgICAgICAgLy8gQWRkIG5ldyB0ZXN0IGNhc2VzIGFzIG5lZWRlZC4KKworICAgICAgICAgICAgLy8gMAorICAgICAgICAgICAgbmV3IGludFtdIHt9LCBkWzBdLAorICAgICAgICAgICAgLy8gMQorICAgICAgICAgICAgbmV3IGludFtdIHsgQ2FsZW5kYXIuTU9OVEgsIENhbGVuZGFyLk1BUkNIIH0sIGRbMV0sCisgICAgICAgICAgICAvLyAyCisgICAgICAgICAgICBuZXcgaW50W10geyBDYWxlbmRhci5EQVlfT0ZfV0VFSywgQ2FsZW5kYXIuV0VETkVTREFZIH0sIGRbMl0sCisgICAgICAgICAgICAvLyAzCisgICAgICAgICAgICBuZXcgaW50W10geyBDYWxlbmRhci5EQVlfT0ZfV0VFSywgQ2FsZW5kYXIuVEhVUlNEQVksCisgICAgICAgICAgICAgICAgICAgICAgICBDYWxlbmRhci5EQVlfT0ZfTU9OVEgsIDE4LCB9LCBkWzNdLAorICAgICAgICAgICAgLy8gNAorICAgICAgICAgICAgbmV3IGludFtdIHsgQ2FsZW5kYXIuREFZX09GX01PTlRILCAxOCwKKyAgICAgICAgICAgICAgICAgICAgICAgIENhbGVuZGFyLkRBWV9PRl9XRUVLLCBDYWxlbmRhci5USFVSU0RBWSwgfSwgZFs0XSwKKyAgICAgICAgICAgIC8vIDUgIChXT00gLTEgaXMgaW4gcHJldmlvdXMgbW9udGgpCisgICAgICAgICAgICBuZXcgaW50W10geyBDYWxlbmRhci5EQVlfT0ZfTU9OVEgsIDE4LAorICAgICAgICAgICAgICAgICAgICAgICAgQ2FsZW5kYXIuV0VFS19PRl9NT05USCwgLTEsCisgICAgICAgICAgICAgICAgICAgICAgICBDYWxlbmRhci5EQVlfT0ZfV0VFSywgQ2FsZW5kYXIuVEhVUlNEQVksIH0sIGRbNV0sCisgICAgICAgICAgICAvLyA2CisgICAgICAgICAgICBuZXcgaW50W10geyBDYWxlbmRhci5EQVlfT0ZfTU9OVEgsIDE4LAorICAgICAgICAgICAgICAgICAgICAgICAgQ2FsZW5kYXIuV0VFS19PRl9NT05USCwgNCwKKyAgICAgICAgICAgICAgICAgICAgICAgIENhbGVuZGFyLkRBWV9PRl9XRUVLLCBDYWxlbmRhci5USFVSU0RBWSwgfSwgZFs2XSwKKyAgICAgICAgICAgIC8vIDcgIChESU0gLTEgaXMgaW4gc2FtZSBtb250aCkKKyAgICAgICAgICAgIG5ldyBpbnRbXSB7IENhbGVuZGFyLkRBWV9PRl9NT05USCwgMTgsCisgICAgICAgICAgICAgICAgICAgICAgICBDYWxlbmRhci5EQVlfT0ZfV0VFS19JTl9NT05USCwgLTEsCisgICAgICAgICAgICAgICAgICAgICAgICBDYWxlbmRhci5EQVlfT0ZfV0VFSywgQ2FsZW5kYXIuVEhVUlNEQVksIH0sIGRbN10sCisgICAgICAgICAgICAvLyA4CisgICAgICAgICAgICBuZXcgaW50W10geyBDYWxlbmRhci5XRUVLX09GX1lFQVIsIDksCisgICAgICAgICAgICAgICAgICAgICAgICBDYWxlbmRhci5EQVlfT0ZfV0VFSywgQ2FsZW5kYXIuV0VETkVTREFZLCB9LCBkWzhdLAorICAgICAgICAgICAgLy8gOQorICAgICAgICAgICAgbmV3IGludFtdIHsgQ2FsZW5kYXIuTU9OVEgsIENhbGVuZGFyLk9DVE9CRVIsCisgICAgICAgICAgICAgICAgICAgICAgICBDYWxlbmRhci5EQVlfT0ZfV0VFS19JTl9NT05USCwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgIENhbGVuZGFyLkRBWV9PRl9XRUVLLCBDYWxlbmRhci5GUklEQVksIH0sIGRbOV0sCisgICAgICAgICAgICAvLyAxMAorICAgICAgICAgICAgbmV3IGludFtdIHsgQ2FsZW5kYXIuTU9OVEgsIENhbGVuZGFyLk9DVE9CRVIsCisgICAgICAgICAgICAgICAgICAgICAgICBDYWxlbmRhci5XRUVLX09GX01PTlRILCAyLAorICAgICAgICAgICAgICAgICAgICAgICAgQ2FsZW5kYXIuREFZX09GX1dFRUssIENhbGVuZGFyLkZSSURBWSwgfSwgZFsxMF0sCisgICAgICAgICAgICAvLyAxMQorICAgICAgICAgICAgbmV3IGludFtdIHsgQ2FsZW5kYXIuTU9OVEgsIENhbGVuZGFyLk9DVE9CRVIsCisgICAgICAgICAgICAgICAgICAgICAgICBDYWxlbmRhci5EQVlfT0ZfTU9OVEgsIDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgQ2FsZW5kYXIuREFZX09GX1lFQVIsIDIyMiwgfSwgZFsxMV0sCisgICAgICAgICAgICAvLyAxMgorICAgICAgICAgICAgbmV3IGludFtdIHsgQ2FsZW5kYXIuREFZX09GX1dFRUssIENhbGVuZGFyLlRIVVJTREFZLAorICAgICAgICAgICAgICAgICAgICAgICAgQ2FsZW5kYXIuTU9OVEgsIENhbGVuZGFyLkRFQ0VNQkVSLCB9LCBkWzEyXSwKKyAgICAgICAgfTsKKworICAgICAgICBmb3IgKGludCBpPTA7IGk8RklFTERfREFUQS5sZW5ndGg7IGkrPTIpIHsKKyAgICAgICAgICAgIGludFtdIGZpZWxkcyA9IChpbnRbXSkgRklFTERfREFUQVtpXTsKKyAgICAgICAgICAgIERhdGUgZXhwID0gKERhdGUpIEZJRUxEX0RBVEFbaSsxXTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgY2FsLmNsZWFyKCk7CisgICAgICAgICAgICBjYWwuc2V0KENhbGVuZGFyLllFQVIsIFkpOworICAgICAgICAgICAgZm9yIChpbnQgaj0wOyBqPGZpZWxkcy5sZW5ndGg7IGorPTIpIHsKKyAgICAgICAgICAgICAgICBjYWwuc2V0KGZpZWxkc1tqXSwgZmllbGRzW2orMV0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBEYXRlIGFjdCA9IGNhbC5nZXRUaW1lKCk7CisgICAgICAgICAgICBpZiAoIWFjdC5lcXVhbHMoZXhwKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBUZXN0ICIgKyAoaS8yKSArICIgZ290ICIgKyBhY3QgKworICAgICAgICAgICAgICAgICAgICAgICIsIHdhbnQgIiArIGV4cCArCisgICAgICAgICAgICAgICAgICAgICAgIiAoc2VlIHRlc3QvamF2YS91dGlsL0NhbGVuZGFyL0NhbGVuZGFyUmVncmVzc2lvbi5qYXZhIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB0ZW1wY2FsLnNldCgxOTk3LCBDYWxlbmRhci5KQU5VQVJZLCA1KTsKKyAgICAgICAgZFswXSA9IHRlbXBjYWwuZ2V0VGltZSgpOworICAgICAgICB0ZW1wY2FsLnNldCgxOTk3LCBDYWxlbmRhci5KQU5VQVJZLCAyNik7CisgICAgICAgIGRbMV0gPSB0ZW1wY2FsLmdldFRpbWUoKTsKKyAgICAgICAgdGVtcGNhbC5zZXQoMTk5NywgQ2FsZW5kYXIuRkVCUlVBUlksIDIzKTsKKyAgICAgICAgZFsyXSA9IHRlbXBjYWwuZ2V0VGltZSgpOworICAgICAgICB0ZW1wY2FsLnNldCgxOTk3LCBDYWxlbmRhci5KQU5VQVJZLCAyNik7CisgICAgICAgIGRbM10gPSB0ZW1wY2FsLmdldFRpbWUoKTsKKyAgICAgICAgdGVtcGNhbC5zZXQoMTk5NywgQ2FsZW5kYXIuSkFOVUFSWSwgNSk7CisgICAgICAgIGRbNF0gPSB0ZW1wY2FsLmdldFRpbWUoKTsKKyAgICAgICAgdGVtcGNhbC5zZXQoMTk5NiwgQ2FsZW5kYXIuREVDRU1CRVIsIDgpOworICAgICAgICBkWzVdID0gdGVtcGNhbC5nZXRUaW1lKCk7CisgICAgICAgIC8vIFRlc3Qgc3BlY2lmaWMgZmFpbHVyZSByZXBvcnRlZCBpbiBidWcKKyAgICAgICAgT2JqZWN0W10gREFUQSA9IHsgCisgICAgICAgICAgICBuZXcgSW50ZWdlcigxKSwgZFswXSwgbmV3IEludGVnZXIoNCksIGRbMV0sCisgICAgICAgICAgICBuZXcgSW50ZWdlcig4KSwgZFsyXSwgbmV3IEludGVnZXIoLTEpLCBkWzNdLAorICAgICAgICAgICAgbmV3IEludGVnZXIoLTQpLCBkWzRdLCBuZXcgSW50ZWdlcigtOCksIGRbNV0sCisgICAgICAgIH07CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxEQVRBLmxlbmd0aDsgaSs9MikgeworICAgICAgICAgICAgY2FsLmNsZWFyKCk7CisgICAgICAgICAgICBjYWwuc2V0KENhbGVuZGFyLkRBWV9PRl9XRUVLX0lOX01PTlRILAorICAgICAgICAgICAgICAgICAgICAoKE51bWJlcikgREFUQVtpXSkuaW50VmFsdWUoKSk7CisgICAgICAgICAgICBjYWwuc2V0KENhbGVuZGFyLkRBWV9PRl9XRUVLLCBDYWxlbmRhci5TVU5EQVkpOworICAgICAgICAgICAgY2FsLnNldChDYWxlbmRhci5NT05USCwgQ2FsZW5kYXIuSkFOVUFSWSk7CisgICAgICAgICAgICBjYWwuc2V0KENhbGVuZGFyLllFQVIsIDE5OTcpOworICAgICAgICAgICAgRGF0ZSBhY3R1YWwgPSBjYWwuZ2V0VGltZSgpOworICAgICAgICAgICAgaWYgKCFhY3R1YWwuZXF1YWxzKERBVEFbaSsxXSkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogU3VuZGF5ICIgKyBEQVRBW2ldICsKKyAgICAgICAgICAgICAgICAgICAgICAiIG9mIEphbiAxOTk3IC0+ICIgKyBhY3R1YWwgKworICAgICAgICAgICAgICAgICAgICAgICIsIHdhbnQgIiArIERBVEFbaSsxXSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBXRUVLX09GX1lFQVIgY29tcHV0ZWQgaW5jb3JyZWN0bHkuICBBIGZhaWx1cmUgb2YgdGhpcyB0ZXN0IGNhbiBpbmRpY2F0ZQorICAgICAqIGEgcHJvYmxlbSBpbiBzZXZlcmFsIGRpZmZlcmVudCBwbGFjZXMgaW4gdGhlIAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0Mjg4NzkyKCkgdGhyb3dzIEV4Y2VwdGlvbiAKKyAgICB7CisJVGltZVpvbmUgc2F2ZWRUWiA9IFRpbWVab25lLmdldERlZmF1bHQoKTsKKwlUaW1lWm9uZS5zZXREZWZhdWx0KFRpbWVab25lLmdldFRpbWVab25lKCJHTVQiKSk7CisJR3JlZ29yaWFuQ2FsZW5kYXIgY2FsID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKCk7CisgICAgICAgIAorCWZvciAoaW50IGkgPSAxOTAwOyBpIDwgMjEwMDsgaSsrKSB7CisJICAgIGZvciAoaW50IGoxID0gMTsgajEgPD0gNzsgajErKykgeworCQkvLyBMb29wIGZvciBNaW5pbWFsRGF5c0luRmlyc3RXZWVrOiAxLi43CisJCWZvciAoaW50IGogPSBDYWxlbmRhci5TVU5EQVk7IGogPD0gQ2FsZW5kYXIuU0FUVVJEQVk7IGorKykgeworCQkgICAgLy8gTG9vcCBmb3IgRmlyc3REYXlPZldlZWs6IFNVTkRBWS4uU0FUVVJEQVkKKwkJICAgIGNhbC5jbGVhcigpOworCQkgICAgY2FsLnNldE1pbmltYWxEYXlzSW5GaXJzdFdlZWsoajEpOworCQkgICAgY2FsLnNldEZpcnN0RGF5T2ZXZWVrKGopOworICAgICAgICAgICAgICAgICAgICAvLyBTZXQgdGhlIGNhbGVuZGFyIHRvIHRoZSBmaXJzdCBkYXkgb2YgdGhlIGxhc3Qgd2VlaworICAgICAgICAgICAgICAgICAgICAvLyBvZiB0aGUgeWVhci4gIFRoaXMgbWF5IG92ZXJsYXAgc29tZSBvZiB0aGUgc3RhcnQgb2YKKyAgICAgICAgICAgICAgICAgICAgLy8gdGhlIG5leHQgeWVhcjsgdGhhdCBpcywgdGhlIGxhc3Qgd2VlayBvZiAxOTk5IG1heQorICAgICAgICAgICAgICAgICAgICAvLyBpbmNsdWRlIHNvbWUgb2YgSmFudWFyeSAyMDAwLiAgVXNlIHRoZSBhZGQoKSBtZXRob2QKKyAgICAgICAgICAgICAgICAgICAgLy8gdG8gYWR2YW5jZSB0aHJvdWdoIHRoZSB3ZWVrLiAgRm9yIGVhY2ggZGF5LCBjYWxsCisgICAgICAgICAgICAgICAgICAgIC8vIGdldChXRUVLX09GX1lFQVIpLiAgVGhlIHJlc3VsdCBzaG91bGQgYmUgdGhlIHNhbWUKKyAgICAgICAgICAgICAgICAgICAgLy8gZm9yIHRoZSB3aG9sZSB3ZWVrLiAgTm90ZSB0aGF0IGEgYnVnIGluCisgICAgICAgICAgICAgICAgICAgIC8vIGdldEFjdHVhbE1heGltdW0oKSB3aWxsIGJyZWFrIHRoaXMgdGVzdC4KKwkJICAgIGNhbC5zZXQoQ2FsZW5kYXIuWUVBUiwgaSk7CisJCSAgICBpbnQgbWF4V2VlayA9IGNhbC5nZXRBY3R1YWxNYXhpbXVtKENhbGVuZGFyLldFRUtfT0ZfWUVBUik7CisJCSAgICBjYWwuc2V0KENhbGVuZGFyLldFRUtfT0ZfWUVBUiwgbWF4V2Vlayk7CisJCSAgICBjYWwuc2V0KENhbGVuZGFyLkRBWV9PRl9XRUVLLCBqKTsKKwkJICAgIGZvciAoaW50IGsgPSAxOyBrIDwgNzsgaysrKSB7CisJCQljYWwuYWRkKENhbGVuZGFyLkRBVEUsIDEpOworCQkJaW50IFdPWSA9IGNhbC5nZXQoQ2FsZW5kYXIuV0VFS19PRl9ZRUFSKTsKKwkJCWlmIChXT1kgIT0gbWF4V2VlaykgeworCQkJICAgIGVycmxuKGNhbC5nZXRUaW1lKCkgKyAiLGdvdD0iICsgV09ZCisJCQkJICArICIsZXhwZWN0ZWQ9IiArIG1heFdlZWsgCisJCQkJICArICIsbWluPSIgKyBqMSArICIsZmlyc3Q9IiArIGopOworCQkJfQorCQkgICAgfQorICAgICAgICAgICAgICAgICAgICAvLyBOb3cgYWR2YW5jZSB0aGUgY2FsZW5kYXIgb25lIG1vcmUgZGF5LiAgVGhpcyBzaG91bGQKKyAgICAgICAgICAgICAgICAgICAgLy8gcHV0IGl0IGF0IHRoZSBmaXJzdCBkYXkgb2Ygd2VlayAxIG9mIHRoZSBuZXh0IHllYXIuCisJCSAgICBjYWwuYWRkKENhbGVuZGFyLkRBVEUsIDEpOworCQkgICAgaW50IFdPWSA9IGNhbC5nZXQoQ2FsZW5kYXIuV0VFS19PRl9ZRUFSKTsKKwkJICAgIGlmIChXT1kgIT0gMSkgeworCQkJZXJybG4oY2FsLmdldFRpbWUoKSArICIsZ290PSIgKyBXT1kgCisJCQkgICAgICArICIsZXhwZWN0ZWQ9MSxtaW49IiArIGoxICsgIixmaXJzdCIgKyBqKTsKKwkJICAgIH0KKwkJfQorCSAgICB9CisJfQorCVRpbWVab25lLnNldERlZmF1bHQoc2F2ZWRUWik7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdCBmaWVsZERpZmZlcmVuY2UoKS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0SjQzOCgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBpbnQgREFUQVtdID0geworICAgICAgICAgICAgMjAwMCwgQ2FsZW5kYXIuSkFOVUFSWSwgMjAsICAgMjAxMCwgQ2FsZW5kYXIuSlVORSwgMTUsCisgICAgICAgICAgICAyMDEwLCBDYWxlbmRhci5KVU5FLCAxNSwgICAgICAyMDAwLCBDYWxlbmRhci5KQU5VQVJZLCAyMCwKKyAgICAgICAgICAgIDE5NjQsIENhbGVuZGFyLlNFUFRFTUJFUiwgNywgIDE5OTksIENhbGVuZGFyLkpVTkUsIDQsCisgICAgICAgICAgICAxOTk5LCBDYWxlbmRhci5KVU5FLCA0LCAgICAgICAxOTY0LCBDYWxlbmRhci5TRVBURU1CRVIsIDcsCisgICAgICAgIH07CisgICAgICAgIENhbGVuZGFyIGNhbCA9IENhbGVuZGFyLmdldEluc3RhbmNlKExvY2FsZS5VUyk7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxEQVRBLmxlbmd0aDsgaSs9NikgeworICAgICAgICAgICAgaW50IHkxID0gREFUQVtpXTsKKyAgICAgICAgICAgIGludCBtMSA9IERBVEFbaSsxXTsKKyAgICAgICAgICAgIGludCBkMSA9IERBVEFbaSsyXTsKKyAgICAgICAgICAgIGludCB5MiA9IERBVEFbaSszXTsKKyAgICAgICAgICAgIGludCBtMiA9IERBVEFbaSs0XTsKKyAgICAgICAgICAgIGludCBkMiA9IERBVEFbaSs1XTsKKworICAgICAgICAgICAgY2FsLmNsZWFyKCk7CisgICAgICAgICAgICBjYWwuc2V0KHkxLCBtMSwgZDEpOworICAgICAgICAgICAgRGF0ZSBkYXRlMSA9IGNhbC5nZXRUaW1lKCk7CisgICAgICAgICAgICBjYWwuc2V0KHkyLCBtMiwgZDIpOworICAgICAgICAgICAgRGF0ZSBkYXRlMiA9IGNhbC5nZXRUaW1lKCk7CisKKyAgICAgICAgICAgIGNhbC5zZXRUaW1lKGRhdGUxKTsKKyAgICAgICAgICAgIGludCBkeSA9IGNhbC5maWVsZERpZmZlcmVuY2UoZGF0ZTIsIENhbGVuZGFyLllFQVIpOworICAgICAgICAgICAgaW50IGRtID0gY2FsLmZpZWxkRGlmZmVyZW5jZShkYXRlMiwgQ2FsZW5kYXIuTU9OVEgpOworICAgICAgICAgICAgaW50IGRkID0gY2FsLmZpZWxkRGlmZmVyZW5jZShkYXRlMiwgQ2FsZW5kYXIuREFURSk7CisKKyAgICAgICAgICAgIGxvZ2xuKCIiICsgZGF0ZTIgKyAiIC0gIiArIGRhdGUxICsgIiA9ICIgKworICAgICAgICAgICAgICAgICAgZHkgKyAieSAiICsgZG0gKyAibSAiICsgZGQgKyAiZCIpOworCisgICAgICAgICAgICBjYWwuc2V0VGltZShkYXRlMSk7CisgICAgICAgICAgICBjYWwuYWRkKENhbGVuZGFyLllFQVIsIGR5KTsKKyAgICAgICAgICAgIGNhbC5hZGQoQ2FsZW5kYXIuTU9OVEgsIGRtKTsKKyAgICAgICAgICAgIGNhbC5hZGQoQ2FsZW5kYXIuREFURSwgZGQpOworICAgICAgICAgICAgRGF0ZSBkYXRlMjIgPSBjYWwuZ2V0VGltZSgpOworICAgICAgICAgICAgaWYgKCFkYXRlMi5lcXVhbHMoZGF0ZTIyKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiAiICsgZGF0ZTEgKyAiICsgIiArCisgICAgICAgICAgICAgICAgICAgICAgZHkgKyAieSAiICsgZG0gKyAibSAiICsgZGQgKyAiZCA9ICIgKworICAgICAgICAgICAgICAgICAgICAgIGRhdGUyMiArICIsIGV4cCAiICsgZGF0ZTIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBsb2dsbigiT2s6ICIgKyBkYXRlMSArICIgKyAiICsKKyAgICAgICAgICAgICAgICAgICAgICBkeSArICJ5ICIgKyBkbSArICJtICIgKyBkZCArICJkID0gIiArCisgICAgICAgICAgICAgICAgICAgICAgZGF0ZTIyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCBiZWhhdmlvciBvZiBEU1RfT0ZGU0VUIGZpZWxkLiAgSUNVNEogSml0dGVyYnVnIDkuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEo5KCkgeworICAgICAgICBpbnQgSE9VUlMgPSA2MCo2MCoxMDAwOworICAgICAgICBDYWxlbmRhciBjYWwgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoVGltZVpvbmUuZ2V0VGltZVpvbmUoIlBTVCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYWxlLlVTKTsKKworICAgICAgICBmaW5hbCBpbnQgRU5EX0ZJRUxEUyA9IDB4MTIzNDsKKworICAgICAgICBpbnRbXSBEQVRBID0geworICAgICAgICAgICAgLy8gV2l0aCBubyBleHBsaWNpdCBaT05FL0RTVCBleHBlY3QgMTI6MDAgYW0KKyAgICAgICAgICAgIENhbGVuZGFyLk1PTlRILCBDYWxlbmRhci5KVU5FLAorICAgICAgICAgICAgRU5EX0ZJRUxEUywKKyAgICAgICAgICAgIDAsIDAsIC8vIGV4cGVjdGVkIGhvdXIsIG1pbgorCisgICAgICAgICAgICAvLyBOb3JtYWwgWk9ORS9EU1QgZm9yIEp1bmUgMSBQYWNpZmljIGlzIDg6MDAvMTowMAorICAgICAgICAgICAgQ2FsZW5kYXIuTU9OVEgsIENhbGVuZGFyLkpVTkUsCisgICAgICAgICAgICBDYWxlbmRhci5aT05FX09GRlNFVCwgLTgqSE9VUlMsCisgICAgICAgICAgICBDYWxlbmRhci5EU1RfT0ZGU0VULCBIT1VSUywKKyAgICAgICAgICAgIEVORF9GSUVMRFMsCisgICAgICAgICAgICAwLCAwLCAvLyBleHBlY3RlZCBob3VyLCBtaW4KKworICAgICAgICAgICAgLy8gV2l0aCBaT05FL0RTVCBvZiA4OjAwLzA6MzAgZXhwZWN0IHRpbWUgb2YgMTI6MzAgYW0KKyAgICAgICAgICAgIENhbGVuZGFyLk1PTlRILCBDYWxlbmRhci5KVU5FLAorICAgICAgICAgICAgQ2FsZW5kYXIuWk9ORV9PRkZTRVQsIC04KkhPVVJTLAorICAgICAgICAgICAgQ2FsZW5kYXIuRFNUX09GRlNFVCwgSE9VUlMvMiwKKyAgICAgICAgICAgIEVORF9GSUVMRFMsCisgICAgICAgICAgICAwLCAzMCwgLy8gZXhwZWN0ZWQgaG91ciwgbWluCisKKyAgICAgICAgICAgIC8vIFdpdGggWk9ORS9EU1Qgb2YgODowMC9VTlNFVCBleHBlY3QgdGltZSBvZiAxOjAwIGFtCisgICAgICAgICAgICBDYWxlbmRhci5NT05USCwgQ2FsZW5kYXIuSlVORSwKKyAgICAgICAgICAgIENhbGVuZGFyLlpPTkVfT0ZGU0VULCAtOCpIT1VSUywKKyAgICAgICAgICAgIEVORF9GSUVMRFMsCisgICAgICAgICAgICAxLCAwLCAvLyBleHBlY3RlZCBob3VyLCBtaW4KKworICAgICAgICAgICAgLy8gV2l0aCBaT05FL0RTVCBvZiBVTlNFVC8wOjMwIGV4cGVjdCA0OjMwIHBtIChkYXkgYmVmb3JlKQorICAgICAgICAgICAgQ2FsZW5kYXIuTU9OVEgsIENhbGVuZGFyLkpVTkUsCisgICAgICAgICAgICBDYWxlbmRhci5EU1RfT0ZGU0VULCBIT1VSUy8yLAorICAgICAgICAgICAgRU5EX0ZJRUxEUywKKyAgICAgICAgICAgIDE2LCAzMCwgLy8gZXhwZWN0ZWQgaG91ciwgbWluCisgICAgICAgIH07CisKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPERBVEEubGVuZ3RoOyApIHsKKyAgICAgICAgICAgIGludCBzdGFydCA9IGk7CisgICAgICAgICAgICBjYWwuY2xlYXIoKTsKKworICAgICAgICAgICAgLy8gU2V0IGZpZWxkcworICAgICAgICAgICAgd2hpbGUgKERBVEFbaV0gIT0gRU5EX0ZJRUxEUykgeworICAgICAgICAgICAgICAgIGNhbC5zZXQoREFUQVtpKytdLCBEQVRBW2krK10pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKytpOyAvLyBza2lwIG92ZXIgRU5EX0ZJRUxEUworCisgICAgICAgICAgICAvLyBHZXQgaG91ci9taW51dGUKKyAgICAgICAgICAgIGludCBoID0gY2FsLmdldChDYWxlbmRhci5IT1VSX09GX0RBWSk7CisgICAgICAgICAgICBpbnQgbSA9IGNhbC5nZXQoQ2FsZW5kYXIuTUlOVVRFKTsKKworICAgICAgICAgICAgLy8gQ2hlY2sKKyAgICAgICAgICAgIGlmIChoICE9IERBVEFbaV0gfHwgbSAhPSBEQVRBW2krMV0pIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRmFpbDogZXhwZWN0ZWQgIiArIERBVEFbaV0gKyAiOiIgKyBEQVRBW2krMV0gKworICAgICAgICAgICAgICAgICAgICAgICIsIGdvdCAiICsgaCArICI6IiArIG0gKyAiIGFmdGVyOiIpOworICAgICAgICAgICAgICAgIHdoaWxlIChEQVRBW3N0YXJ0XSAhPSBFTkRfRklFTERTKSB7CisgICAgICAgICAgICAgICAgICAgIGxvZ2xuKCJzZXQoIiArIEZJRUxEX05BTUVbREFUQVtzdGFydCsrXV0gKworICAgICAgICAgICAgICAgICAgICAgICAgICAiLCAiICsgREFUQVtzdGFydCsrXSArICIpOyIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaSArPSAyOyAvLyBza2lwIG92ZXIgZXhwZWN0ZWQgaG91ciwgbWluCisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEYXRlRm9ybWF0IGNsYXNzIG1pc3Rha2VzIGRhdGUgc3R5bGUgYW5kIHRpbWUgc3R5bGUgYXMgZm9sbG93czoKKyAgICAgKiAtIERhdGVGb3JtYXQuZ2V0RGF0ZVRpbWVJbnN0YW5jZSB0YWtlcyBkYXRlIHN0eWxlIGFzIHRpbWUKKyAgICAgKiBzdHlsZSwgYW5kIHRpbWUgc3R5bGUgYXMgZGF0ZSBzdHlsZQorICAgICAqIC0gSWYgYSBDYWxlbmRhciBpcyBwYXNzZWQgdG8KKyAgICAgKiBEYXRlRm9ybWF0LmdldERhdGVJbnN0YW5jZSwgaXQgcmV0dXJucyB0aW1lIGluc3RhbmNlCisgICAgICogLSBJZiBhIENhbGVuZGFyCisgICAgICogaXMgcGFzc2VkIHRvIERhdGVGb3JtYXQuZ2V0VGltZUluc3RhbmNlLCBpdCByZXR1cm5zIGRhdGUgaW5zdGFuY2UKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0RGF0ZUZvcm1hdEZhY3RvcnlKMjYoKSB7CisgICAgICAgIFRpbWVab25lIHpvbmUgPSBUaW1lWm9uZS5nZXREZWZhdWx0KCk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBMb2NhbGUgbG9jID0gTG9jYWxlLlVTOworICAgICAgICAgICAgVGltZVpvbmUuc2V0RGVmYXVsdChUaW1lWm9uZS5nZXRUaW1lWm9uZSgiQW1lcmljYS9Mb3NfQW5nZWxlcyIpKTsKKyAgICAgICAgICAgIGphdmEudXRpbC5DYWxlbmRhciB0ZW1wY2FsID0gamF2YS51dGlsLkNhbGVuZGFyLmdldEluc3RhbmNlKCk7CisgICAgICAgICAgICB0ZW1wY2FsLnNldCgyMDAxICsgMTkwMCwgQ2FsZW5kYXIuQVBSSUwsIDUsIDE3LCA0MywgNTMpOworICAgICAgICAgICAgRGF0ZSBkYXRlID0gdGVtcGNhbC5nZXRUaW1lKCk7CisgICAgICAgICAgICBDYWxlbmRhciBjYWwgPSBDYWxlbmRhci5nZXRJbnN0YW5jZShsb2MpOworICAgICAgICAgICAgT2JqZWN0W10gREFUQSA9IHsKKyAgICAgICAgICAgICAgICBEYXRlRm9ybWF0LmdldERhdGVJbnN0YW5jZShEYXRlRm9ybWF0LlNIT1JULCBsb2MpLAorICAgICAgICAgICAgICAgICJEYXRlRm9ybWF0LmdldERhdGVJbnN0YW5jZShEYXRlRm9ybWF0LlNIT1JULCBsb2MpIiwKKyAgICAgICAgICAgICAgICAiNC81LzAxIiwKKworICAgICAgICAgICAgICAgIERhdGVGb3JtYXQuZ2V0VGltZUluc3RhbmNlKERhdGVGb3JtYXQuU0hPUlQsIGxvYyksCisgICAgICAgICAgICAgICAgIkRhdGVGb3JtYXQuZ2V0VGltZUluc3RhbmNlKERhdGVGb3JtYXQuU0hPUlQsIGxvYykiLAorICAgICAgICAgICAgICAgICI1OjQzIFBNIiwKKworICAgICAgICAgICAgICAgIERhdGVGb3JtYXQuZ2V0RGF0ZVRpbWVJbnN0YW5jZShEYXRlRm9ybWF0LkZVTEwsIERhdGVGb3JtYXQuU0hPUlQsIGxvYyksCisgICAgICAgICAgICAgICAgIkRhdGVGb3JtYXQuZ2V0RGF0ZVRpbWVJbnN0YW5jZShEYXRlRm9ybWF0LkZVTEwsIERhdGVGb3JtYXQuU0hPUlQsIGxvYykiLAorICAgICAgICAgICAgICAgICJGcmlkYXksIEFwcmlsIDUsIDM5MDEgNTo0MyBQTSIsCisKKyAgICAgICAgICAgICAgICBEYXRlRm9ybWF0LmdldERhdGVJbnN0YW5jZShjYWwsIERhdGVGb3JtYXQuU0hPUlQsIGxvYyksCisgICAgICAgICAgICAgICAgIkRhdGVGb3JtYXQuZ2V0RGF0ZUluc3RhbmNlKGNhbCwgRGF0ZUZvcm1hdC5TSE9SVCwgbG9jKSIsCisgICAgICAgICAgICAgICAgIjQvNS8wMSIsCisKKyAgICAgICAgICAgICAgICBEYXRlRm9ybWF0LmdldFRpbWVJbnN0YW5jZShjYWwsIERhdGVGb3JtYXQuU0hPUlQsIGxvYyksCisgICAgICAgICAgICAgICAgIkRhdGVGb3JtYXQuZ2V0VGltZUluc3RhbmNlKGNhbCwgRGF0ZUZvcm1hdC5TSE9SVCwgbG9jKSIsCisgICAgICAgICAgICAgICAgIjU6NDMgUE0iLAorCisgICAgICAgICAgICAgICAgRGF0ZUZvcm1hdC5nZXREYXRlVGltZUluc3RhbmNlKGNhbCwgRGF0ZUZvcm1hdC5GVUxMLCBEYXRlRm9ybWF0LlNIT1JULCBsb2MpLAorICAgICAgICAgICAgICAgICJEYXRlRm9ybWF0LmdldERhdGVUaW1lSW5zdGFuY2UoY2FsLCBEYXRlRm9ybWF0LkZVTEwsIERhdGVGb3JtYXQuU0hPUlQsIGxvYykiLAorICAgICAgICAgICAgICAgICJGcmlkYXksIEFwcmlsIDUsIDM5MDEgNTo0MyBQTSIsCisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBjYWwuZ2V0RGF0ZVRpbWVGb3JtYXQoRGF0ZUZvcm1hdC5TSE9SVCwgRGF0ZUZvcm1hdC5GVUxMLCBsb2MpLAorICAgICAgICAgICAgICAgICJjYWwuZ2V0RGF0ZVRpbWVGb3JtYXQoRGF0ZUZvcm1hdC5TSE9SVCwgRGF0ZUZvcm1hdC5GVUxMLCBsb2MpIiwKKyAgICAgICAgICAgICAgICAiNC81LzAxIDU6NDM6NTMgUE0gUFNUIiwKKworICAgICAgICAgICAgICAgIGNhbC5nZXREYXRlVGltZUZvcm1hdChEYXRlRm9ybWF0LkZVTEwsIERhdGVGb3JtYXQuU0hPUlQsIGxvYyksCisgICAgICAgICAgICAgICAgImNhbC5nZXREYXRlVGltZUZvcm1hdChEYXRlRm9ybWF0LkZVTEwsIERhdGVGb3JtYXQuU0hPUlQsIGxvYykiLAorICAgICAgICAgICAgICAgICJGcmlkYXksIEFwcmlsIDUsIDM5MDEgNTo0MyBQTSIsCisgICAgICAgICAgICB9OworICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPERBVEEubGVuZ3RoOyBpKz0zKSB7CisgICAgICAgICAgICAgICAgRGF0ZUZvcm1hdCBkZiA9IChEYXRlRm9ybWF0KSBEQVRBW2ldOworICAgICAgICAgICAgICAgIFN0cmluZyBkZXNjID0gKFN0cmluZykgREFUQVtpKzFdOworICAgICAgICAgICAgICAgIFN0cmluZyBleHAgPSAoU3RyaW5nKSBEQVRBW2krMl07CisgICAgICAgICAgICAgICAgU3RyaW5nIGdvdCA9IGRmLmZvcm1hdChkYXRlKTsKKyAgICAgICAgICAgICAgICBpZiAoZ290LmVxdWFscyhleHApKSB7CisgICAgICAgICAgICAgICAgICAgIGxvZ2xuKCJPazogIiArIGRlc2MgKyAiID0+ICIgKyBnb3QpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiAiICsgZGVzYyArICIgPT4gIiArIGdvdCArICIsIGV4cGVjdGVkICIgKyBleHApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIFRpbWVab25lLnNldERlZmF1bHQoem9uZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0UmVnaXN0cmF0aW9uKCkgeworICAgICAgICAvKgorICAgICAgICBTZXQgbmFtZXMgPSBDYWxlbmRhci5nZXRDYWxlbmRhckZhY3RvcnlOYW1lcygpOworCisgICAgICAgIFRpbWVab25lIHR6ID0gVGltZVpvbmUuZ2V0RGVmYXVsdCgpOworICAgICAgICBMb2NhbGUgbG9jID0gTG9jYWxlLmdldERlZmF1bHQoKTsKKyAgICAgICAgSXRlcmF0b3IgaXRlciA9IG5hbWVzLml0ZXJhdG9yKCk7CisgICAgICAgIHdoaWxlIChpdGVyLmhhc05leHQoKSkgeworICAgICAgICAgICAgU3RyaW5nIG5hbWUgPSAoU3RyaW5nKWl0ZXIubmV4dCgpOworICAgICAgICAgICAgbG9nbG4oIlRlc3RpbmcgZmFjdG9yeTogIiArIG5hbWUpOworCisgICAgICAgICAgICBDYWxlbmRhciBjYWwgPSBDYWxlbmRhci5nZXRJbnN0YW5jZSh0eiwgbG9jLCBuYW1lKTsKKyAgICAgICAgICAgIGxvZ2xuKCJDYWxlbmRhciBjbGFzczogIiArIGNhbC5nZXRDbGFzcygpKTsKKworICAgICAgICAgICAgRGF0ZUZvcm1hdCBmbXQgPSBjYWwuZ2V0RGF0ZVRpbWVGb3JtYXQoRGF0ZUZvcm1hdC5MT05HLCBEYXRlRm9ybWF0LkxPTkcsIGxvYyk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGxvZ2xuKCJEYXRlOiAiICsgZm10LmZvcm1hdChjYWwuZ2V0VGltZSgpKSk7CisgICAgICAgIH0KKworICAgICAgICAvLyByZWdpc3RlciBuZXcgZGVmYXVsdCBmb3Igb3VyIGxvY2FsZQorICAgICAgICBsb2dsbigiXG5UZXN0aW5nIHJlZ2lzdHJhdGlvbiIpOworICAgICAgICBsb2MgPSBuZXcgTG9jYWxlKCJlbiIsICJVUyIpOworICAgICAgICBPYmplY3Qga2V5ID0gQ2FsZW5kYXIucmVnaXN0ZXIoSmFwYW5lc2VDYWxlbmRhci5mYWN0b3J5KCksIGxvYywgdHJ1ZSk7CisKKyAgICAgICAgbG9jID0gbmV3IExvY2FsZSgiZW4iLCAiVVMiLCAiVEVTVCIpOworICAgICAgICBDYWxlbmRhciBjYWwgPSBDYWxlbmRhci5nZXRJbnN0YW5jZShsb2MpOworICAgICAgICBsb2dsbigiQ2FsZW5kYXIgY2xhc3M6ICIgKyBjYWwuZ2V0Q2xhc3MoKSk7CisgICAgICAgIERhdGVGb3JtYXQgZm10ID0gY2FsLmdldERhdGVUaW1lRm9ybWF0KERhdGVGb3JtYXQuTE9ORywgRGF0ZUZvcm1hdC5MT05HLCBsb2MpOworICAgICAgICBsb2dsbigiRGF0ZTogIiArIGZtdC5mb3JtYXQoY2FsLmdldFRpbWUoKSkpOworCisgICAgICAgIC8vIGZvcmNlIHRvIHVzZSBvdGhlciBkZWZhdWx0IGFueXdheQorICAgICAgICBsb2dsbigiXG5PdmVycmlkZSByZWdpc3RyYXRpb24iKTsKKyAgICAgICAgY2FsID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UodHosIGxvYywgIkdyZWdvcmlhbiIpOworICAgICAgICBmbXQgPSBjYWwuZ2V0RGF0ZVRpbWVGb3JtYXQoRGF0ZUZvcm1hdC5MT05HLCBEYXRlRm9ybWF0LkxPTkcsIGxvYyk7CisgICAgICAgIGxvZ2xuKCJEYXRlOiAiICsgZm10LmZvcm1hdChjYWwuZ2V0VGltZSgpKSk7CisKKyAgICAgICAgLy8gdW5yZWdpc3RlciBkZWZhdWx0CisgICAgICAgIGxvZ2xuKCJcblVucmVnaXN0cmF0aW9uIik7CisgICAgICAgIGxvZ2xuKCJVbnJlZ2lzdGVyIHJldHVybmVkOiAiICsgQ2FsZW5kYXIudW5yZWdpc3RlcihrZXkpKTsKKyAgICAgICAgY2FsID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UodHosIGxvYywgIkdyZWdvcmlhbiIpOworICAgICAgICBmbXQgPSBjYWwuZ2V0RGF0ZVRpbWVGb3JtYXQoRGF0ZUZvcm1hdC5MT05HLCBEYXRlRm9ybWF0LkxPTkcsIGxvYyk7CisgICAgICAgIGxvZ2xuKCJEYXRlOiAiICsgZm10LmZvcm1hdChjYWwuZ2V0VGltZSgpKSk7CisgICAgICAgICovCisgICAgfQorfQorCisvL2VvZgpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NhbGVuZGFyL0NhbGVuZGFyVGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NhbGVuZGFyL0NhbGVuZGFyVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjY5ODE2ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY2FsZW5kYXIvQ2FsZW5kYXJUZXN0LmphdmEKQEAgLTAsMCArMSwzNjAgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9jYWxlbmRhci9DYWxlbmRhclRlc3QuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNTowNSAkIAorICogJFJldmlzaW9uOiAxLjEyICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0LmNhbGVuZGFyOworCitpbXBvcnQgY29tLmlibS5pY3UuZGV2LnRlc3QuKjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0LkRhdGVGb3JtYXQ7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC5TaW1wbGVEYXRlRm9ybWF0OworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CitpbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKK2ltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247CitpbXBvcnQgY29tLmlibS5pY3UudXRpbC4qOworCisvKioKKyAqIEEgYmFzZSBjbGFzcyBmb3IgY2xhc3NlcyB0aGF0IHRlc3QgaW5kaXZpZHVhbCBDYWxlbmRhciBzdWJjbGFzc2VzLgorICogRGVmaW5lcyB2YXJpb3VzIHVzZWZ1bCB1dGlsaXR5IG1ldGhvZHMgYW5kIGNvbnN0YW50cworICovCitwdWJsaWMgY2xhc3MgQ2FsZW5kYXJUZXN0IGV4dGVuZHMgVGVzdEZtd2sgeworICAgIAorICAgIC8vIENvbnN0YW50cyBmb3IgdXNlIGJ5IHN1YmNsYXNzZXMsIHNvbGVseSB0byBzYXZlIHR5cGluZworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IFNVTiA9IENhbGVuZGFyLlNVTkRBWTsKKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBNT04gPSBDYWxlbmRhci5NT05EQVk7CisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgVFVFID0gQ2FsZW5kYXIuVFVFU0RBWTsKKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBXRUQgPSBDYWxlbmRhci5XRURORVNEQVk7CisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgVEhVID0gQ2FsZW5kYXIuVEhVUlNEQVk7CisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgRlJJID0gQ2FsZW5kYXIuRlJJREFZOworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IFNBVCA9IENhbGVuZGFyLlNBVFVSREFZOworCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgRVJBICAgICA9IENhbGVuZGFyLkVSQTsKKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBZRUFSICAgID0gQ2FsZW5kYXIuWUVBUjsKKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBNT05USCAgID0gQ2FsZW5kYXIuTU9OVEg7CisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgREFURSAgICA9IENhbGVuZGFyLkRBVEU7CisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgSE9VUiAgICA9IENhbGVuZGFyLkhPVVI7CisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgTUlOVVRFICA9IENhbGVuZGFyLk1JTlVURTsKKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBTRUNPTkQgID0gQ2FsZW5kYXIuU0VDT05EOworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IERPWSAgICAgPSBDYWxlbmRhci5EQVlfT0ZfWUVBUjsKKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBXT1kgICAgID0gQ2FsZW5kYXIuV0VFS19PRl9ZRUFSOworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IFdPTSAgICAgPSBDYWxlbmRhci5XRUVLX09GX01PTlRIOworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IERPVyAgICAgPSBDYWxlbmRhci5EQVlfT0ZfV0VFSzsKKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBET1dNICAgID0gQ2FsZW5kYXIuREFZX09GX1dFRUtfSU5fTU9OVEg7CisgICAgCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBTaW1wbGVUaW1lWm9uZSBVVEMgPSBuZXcgU2ltcGxlVGltZVpvbmUoMCwgIkdNVCIpOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nW10gRklFTERfTkFNRSA9IHsKKyAgICAgICAgIkVSQSIsICJZRUFSIiwgIk1PTlRIIiwgIldFRUtfT0ZfWUVBUiIsICJXRUVLX09GX01PTlRIIiwKKyAgICAgICAgIkRBWV9PRl9NT05USCIsICJEQVlfT0ZfWUVBUiIsICJEQVlfT0ZfV0VFSyIsCisgICAgICAgICJEQVlfT0ZfV0VFS19JTl9NT05USCIsICJBTV9QTSIsICJIT1VSIiwgIkhPVVJfT0ZfREFZIiwKKyAgICAgICAgIk1JTlVURSIsICJTRUNPTkQiLCAiTUlMTElTRUNPTkQiLCAiWk9ORV9PRkZTRVQiLAorICAgICAgICAiRFNUX09GRlNFVCIsICJZRUFSX1dPWSIsICJET1dfTE9DQUwiLCAiRVhURU5ERURfWUVBUiIsCisgICAgICAgICJKVUxJQU5fREFZIiwgIk1JTExJU0VDT05EU19JTl9EQVkiLAorICAgICAgICAiSVNfTEVBUF9NT05USCIgLy8gKENoaW5lc2VDYWxlbmRhciBvbmx5KQorICAgIH07CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBmaWVsZE5hbWUoaW50IGYpIHsKKyAgICAgICAgcmV0dXJuIChmPj0wICYmIGY8RklFTERfTkFNRS5sZW5ndGgpID8KKyAgICAgICAgICAgIEZJRUxEX05BTUVbZl0gOiAoIjxGaWVsZCAiICsgZiArICI+Iik7CisgICAgfQorCisgICAgLyoqCisgICAgICogSXRlcmF0ZXMgdGhyb3VnaCBhIGxpc3Qgb2YgY2FsZW5kYXIgPGNvZGU+VGVzdENhc2U8L2NvZGU+IG9iamVjdHMgYW5kCisgICAgICogbWFrZXMgc3VyZSB0aGF0IHRoZSB0aW1lLXRvLWZpZWxkcyBhbmQgZmllbGRzLXRvLXRpbWUgY2FsY3VsYXRpb25zIHdvcmsKKyAgICAgKiBjb3JyZW5jdGx5IGZvciB0aGUgdmFsdWVzIGluIGVhY2ggdGVzdCBjYXNlLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGRvVGVzdENhc2VzKFRlc3RDYXNlW10gY2FzZXMsIENhbGVuZGFyIGNhbCkKKyAgICB7CisgICAgICAgIGNhbC5zZXRUaW1lWm9uZShVVEMpOworICAgICAgICAKKyAgICAgICAgLy8gR2V0IGEgZm9ybWF0IHRvIHVzZSBmb3IgcHJpbnRpbmcgZGF0ZXMgaW4gdGhlIGNhbGVuZGFyIHN5c3RlbSB3ZSdyZSB0ZXN0aW5nCisgICAgICAgIERhdGVGb3JtYXQgZm9ybWF0ID0gRGF0ZUZvcm1hdC5nZXREYXRlVGltZUluc3RhbmNlKGNhbCwgRGF0ZUZvcm1hdC5TSE9SVCwgLTEsIExvY2FsZS5nZXREZWZhdWx0KCkpOworCisgICAgICAgIGZpbmFsIFN0cmluZyBwYXR0ZXJuID0gKGNhbCBpbnN0YW5jZW9mIENoaW5lc2VDYWxlbmRhcikgPworICAgICAgICAgICAgIkUgTU1sL2RkL3kgRyBISDptbTpzcy5TIHoiIDoKKyAgICAgICAgICAgICJFLCBNTS9kZC95eXl5IEcgSEg6bW06c3MuUyB6IjsKKyAgICAKKyAgICAgICAgKChTaW1wbGVEYXRlRm9ybWF0KWZvcm1hdCkuYXBwbHlQYXR0ZXJuKHBhdHRlcm4pOworCisgICAgICAgIC8vIFRoaXMgZm9ybWF0IGlzIHVzZWQgZm9yIHByaW50aW5nIEdyZWdvcmlhbiBkYXRlcy4KKyAgICAgICAgRGF0ZUZvcm1hdCBncmVnRm9ybWF0ID0gbmV3IFNpbXBsZURhdGVGb3JtYXQocGF0dGVybik7CisgICAgICAgIGdyZWdGb3JtYXQuc2V0VGltZVpvbmUoVVRDKTsKKworICAgICAgICBHcmVnb3JpYW5DYWxlbmRhciBwdXJlR3JlZyA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcihVVEMpOworICAgICAgICBwdXJlR3JlZy5zZXRHcmVnb3JpYW5DaGFuZ2UobmV3IERhdGUoTG9uZy5NSU5fVkFMVUUpKTsKKyAgICAgICAgRGF0ZUZvcm1hdCBwdXJlR3JlZ0ZtdCA9IG5ldyBTaW1wbGVEYXRlRm9ybWF0KCJFIE0vZC95eXl5IEciKTsKKyAgICAgICAgcHVyZUdyZWdGbXQuc2V0Q2FsZW5kYXIocHVyZUdyZWcpOworICAgICAgICAKKyAgICAgICAgLy8gTm93IGl0ZXJhdGUgdGhyb3VnaCB0aGUgdGVzdCBjYXNlcyBhbmQgc2VlIHdoYXQgaGFwcGVucworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNhc2VzLmxlbmd0aDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBUZXN0Q2FzZSB0ZXN0ID0gY2FzZXNbaV07CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBGaXJzdCB3ZSB3YW50IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBtaWxsaXMgLT4gZmllbGRzIGNhbGN1bGF0aW9uIHdvcmtzCisgICAgICAgICAgICAvLyB0ZXN0LmFwcGx5VGltZSB3aWxsIGNhbGwgc2V0VGltZSgpIG9uIHRoZSBjYWxlbmRhciBvYmplY3QsIGFuZAorICAgICAgICAgICAgLy8gdGVzdC5maWVsZHNFcXVhbCB3aWxsIHJldHJpZXZlIGFsbCBvZiB0aGUgZmllbGQgdmFsdWVzIGFuZCBtYWtlIHN1cmUKKyAgICAgICAgICAgIC8vIHRoYXQgdGhleSdyZSB0aGUgc2FtZSBhcyB0aGUgb25lcyBpbiB0aGUgdGVzdGNhc2UKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICB0ZXN0LmFwcGx5VGltZShjYWwpOworICAgICAgICAgICAgaWYgKCF0ZXN0LmZpZWxkc0VxdWFsKGNhbCwgdGhpcykpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRmFpbDogKG1pbGxpcz0+ZmllbGRzKSAiICsKKyAgICAgICAgICAgICAgICAgICAgICBncmVnRm9ybWF0LmZvcm1hdCh0ZXN0LmdldFRpbWUoKSkgKyAiID0+ICIgKworICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdC5mb3JtYXQoY2FsLmdldFRpbWUoKSkgKworICAgICAgICAgICAgICAgICAgICAgICIsIGV4cGVjdGVkICIgKyB0ZXN0KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIElmIHRoYXQgd2FzIE9LLCBjaGVjayB0aGUgZmllbGRzIC0+IG1pbGxpcyBjYWxjdWxhdGlvbgorICAgICAgICAgICAgLy8gdGVzdC5hcHBseUZpZWxkcyB3aWxsIHNldCBhbGwgb2YgdGhlIGNhbGVuZGFyJ3MgZmllbGRzIHRvIAorICAgICAgICAgICAgLy8gbWF0Y2ggdGhvc2UgaW4gdGhlIHRlc3QgY2FzZS4KKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICBjYWwuY2xlYXIoKTsKKyAgICAgICAgICAgIHRlc3QuYXBwbHlGaWVsZHMoY2FsKTsKKyAgICAgICAgICAgIGlmICghdGVzdC5lcXVhbHMoY2FsKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGYWlsOiAoZmllbGRzPT5taWxsaXMpICIgKyB0ZXN0ICsgIiA9PiAiICsKKyAgICAgICAgICAgICAgICAgICAgICBwdXJlR3JlZ0ZtdC5mb3JtYXQoY2FsLmdldFRpbWUoKSkgKworICAgICAgICAgICAgICAgICAgICAgICIsIGV4cGVjdGVkICIgKyBwdXJlR3JlZ0ZtdC5mb3JtYXQodGVzdC5nZXRUaW1lKCkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBzdGF0aWMgcHVibGljIGZpbmFsIGJvb2xlYW4gUk9MTCA9IHRydWU7CisgICAgc3RhdGljIHB1YmxpYyBmaW5hbCBib29sZWFuIEFERCA9IGZhbHNlOworICAgIAorICAgIC8qKgorICAgICAqIFByb2Nlc3MgdGVzdCBjYXNlcyBmb3IgPGNvZGU+YWRkPC9jb2RlPiBhbmQgPGNvZGU+cm9sbDwvY29kZT4gbWV0aG9kcy4KKyAgICAgKiBFYWNoIHRlc3QgY2FzZSBpcyBhbiBhcnJheSBvZiBpbnRlZ2VycywgYXMgZm9sbG93czoKKyAgICAgKiA8dWw+CisgICAgICogIDxsaT4wOiBpbnB1dCB5ZWFyCisgICAgICogIDxsaT4xOiAgICAgICBtb250aCAgKHplcm8tYmFzZWQpCisgICAgICogIDxsaT4yOiAgICAgICBkYXkKKyAgICAgKiAgPGxpPjM6IGZpZWxkIHRvIHJvbGwgb3IgYWRkIHRvCisgICAgICogIDxsaT40OiBhbW91bnQgdG8gcm9sbCBvciBhZGQKKyAgICAgKiAgPGxpPjU6IHJlc3VsdCB5ZWFyCisgICAgICogIDxsaT42OiAgICAgICAgbW9udGggKHplcm8tYmFzZWQpCisgICAgICogIDxsaT43OiAgICAgICAgZGF5CisgICAgICogPC91bD4KKyAgICAgKiBGb3IgZXhhbXBsZToKKyAgICAgKiA8cHJlPgorICAgICAqICAgLy8gICAgICAgaW5wdXQgICAgICAgICAgICAgICAgYWRkIGJ5ICAgICAgICAgIG91dHB1dAorICAgICAqICAgLy8gIHllYXIgIG1vbnRoICAgICBkYXkgICAgIGZpZWxkIGFtb3VudCAgICB5ZWFyICBtb250aCAgICAgZGF5CisgICAgICogICB7ICAgNTc1OSwgSEVTSFZBTiwgICAyLCAgICAgTU9OVEgsICAgMSwgICAgIDU3NTksIEtJU0xFViwgICAgMiB9LAorICAgICAqIDwvcHJlPgorICAgICAqCisgICAgICogQHBhcmFtIHJvbGwgIDxjb2RlPnRydWU8L2NvZGU+IG9yIDxjb2RlPlJPTEw8L2NvZGU+IHRvIHRlc3QgdGhlIDxjb2RlPnJvbGw8L2NvZGU+IG1ldGhvZDsKKyAgICAgKiAgICAgICAgICAgICAgPGNvZGU+ZmFsc2U8L2NvZGU+IG9yIDxjb2RlPkFERDwvY29kZT4gdG8gdGVzdCB0aGUgPGNvZGU+YWRkPC9jb2RlIG1ldGhvZAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGRvUm9sbEFkZChib29sZWFuIHJvbGwsIENhbGVuZGFyIGNhbCwgaW50W11bXSB0ZXN0cykKKyAgICB7CisgICAgICAgIFN0cmluZyBuYW1lID0gcm9sbCA/ICJyb2xsaW5nIiA6ICJhZGRpbmciOworICAgICAgICAKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0ZXN0cy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgaW50W10gdGVzdCA9IHRlc3RzW2ldOworCisgICAgICAgICAgICBjYWwuY2xlYXIoKTsKKyAgICAgICAgICAgIGlmIChjYWwgaW5zdGFuY2VvZiBDaGluZXNlQ2FsZW5kYXIpIHsKKyAgICAgICAgICAgICAgICBjYWwuc2V0KENhbGVuZGFyLkVYVEVOREVEX1lFQVIsIHRlc3RbMF0pOworICAgICAgICAgICAgICAgIGNhbC5zZXQoQ2FsZW5kYXIuTU9OVEgsIHRlc3RbMV0pOworICAgICAgICAgICAgICAgIGNhbC5zZXQoQ2FsZW5kYXIuREFZX09GX01PTlRILCB0ZXN0WzJdKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY2FsLnNldCh0ZXN0WzBdLCB0ZXN0WzFdLCB0ZXN0WzJdKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChyb2xsKSB7CisgICAgICAgICAgICAgICAgY2FsLnJvbGwodGVzdFszXSwgdGVzdFs0XSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGNhbC5hZGQodGVzdFszXSwgdGVzdFs0XSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbnQgeSA9IGNhbC5nZXQoY2FsIGluc3RhbmNlb2YgQ2hpbmVzZUNhbGVuZGFyID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxlbmRhci5FWFRFTkRFRF9ZRUFSIDogWUVBUik7CisgICAgICAgICAgICBpZiAoeSAhPSB0ZXN0WzVdIHx8IGNhbC5nZXQoTU9OVEgpICE9IHRlc3RbNl0KKyAgICAgICAgICAgICAgICAgICAgfHwgY2FsLmdldChEQVRFKSAhPSB0ZXN0WzddKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVycmxuKCJGYWlsOiAiICsgbmFtZSArICIgIisgeW1kVG9TdHJpbmcodGVzdFswXSwgdGVzdFsxXSwgdGVzdFsyXSkKKyAgICAgICAgICAgICAgICAgICAgKyAiICIgKyBGSUVMRF9OQU1FW3Rlc3RbM11dICsgIiBieSAiICsgdGVzdFs0XQorICAgICAgICAgICAgICAgICAgICArICI6IGV4cGVjdGVkICIgKyB5bWRUb1N0cmluZyh0ZXN0WzVdLCB0ZXN0WzZdLCB0ZXN0WzddKQorICAgICAgICAgICAgICAgICAgICArICIsIGdvdCAiICsgeW1kVG9TdHJpbmcoY2FsKSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGlzVmVyYm9zZSgpKSB7CisgICAgICAgICAgICAgICAgbG9nbG4oIk9LOiAiICsgbmFtZSArICIgIisgeW1kVG9TdHJpbmcodGVzdFswXSwgdGVzdFsxXSwgdGVzdFsyXSkKKyAgICAgICAgICAgICAgICAgICAgKyAiICIgKyBGSUVMRF9OQU1FW3Rlc3RbM11dICsgIiBieSAiICsgdGVzdFs0XQorICAgICAgICAgICAgICAgICAgICArICI6IGdvdCAiICsgeW1kVG9TdHJpbmcoY2FsKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXN0IHRoZSBmdW5jdGlvbnMgZ2V0WHh4TWluaW11bSgpIGFuZCBnZXRYeHhNYXhpbXVtKCkgYnkgbWFyY2hpbmcgYQorICAgICAqIHRlc3QgY2FsZW5kYXIgJ2NhbCcgdGhyb3VnaCAnbnVtYmVyT2ZEYXlzJyBzZXF1ZW50aWFsIGRheXMgc3RhcnRpbmcKKyAgICAgKiB3aXRoICdzdGFydERhdGUnLiAgRm9yIGVhY2ggZGF0ZSwgcmVhZCBhIGZpZWxkIHZhbHVlIGFsb25nIHdpdGggaXRzCisgICAgICogcmVwb3J0ZWQgYWN0dWFsIG1pbmltdW0gYW5kIGFjdHVhbCBtYXhpbXVtLiAgVGhlc2UgdmFsdWVzIGFyZQorICAgICAqIGNoZWNrZWQgYWdhaW5zdCBvbmUgYW5vdGhlciBhcyB3ZWxsIGFzIGFnYWluc3QgZ2V0TWluaW11bSgpLAorICAgICAqIGdldEdyZWF0ZXN0TWluaW11bSgpLCBnZXRMZWFzdE1heGltdW0oKSwgYW5kIGdldE1heGltdW0oKS4gIFdlCisgICAgICogZXhwZWN0IHRvIHNlZToKKyAgICAgKgorICAgICAqIDEuIG1pbmltdW0gPD0gYWN0dWFsTWluaW11bSA8PSBncmVhdGVzdE1pbmltdW0gPD0KKyAgICAgKiAgICBsZWFzdE1heGltdW0gPD0gYWN0dWFsTWF4aW11bSA8PSBtYXhpbXVtCisgICAgICoKKyAgICAgKiAyLiBhY3R1YWxNaW5pbXVtIDw9IHZhbHVlIDw9IGFjdHVhbE1heGltdW0KKyAgICAgKgorICAgICAqIE5vdGU6IEluIGFkZGl0aW9uIHRvIG91dHJpZ2h0IGZhaWx1cmVzLCB0aGlzIHRlc3QgcmVwb3J0cyBzb21lCisgICAgICogcmVzdWx0cyBhcyB3YXJuaW5ncy4gIFRoZXNlIGFyZSBub3QgZ2VuZXJhbGx5IG9mIGNvbmNlcm4sIGJ1dCB0aGV5CisgICAgICogc2hvdWxkIGJlIGV2YWx1YXRlZCBieSBhIGh1bWFuLiAgVG8gc2VlIHRoZXNlLCBydW4gdGhpcyB0ZXN0IGluCisgICAgICogdmVyYm9zZSBtb2RlLgorICAgICAqIEBwYXJhbSBjYWwgdGhlIGNhbGVuZGFyIHRvIGJlIHRlc3RlZAorICAgICAqIEBwYXJhbSBmaWVsZHNUb1Rlc3QgYW4gYXJyYXkgb2YgZmllbGQgdmFsdWVzIHRvIGJlIHRlc3RlZCwgZS5nLiwgbmV3CisgICAgICogaW50W10geyBDYWxlbmRhci5NT05USCwgQ2FsZW5kYXIuREFZX09GX01PTlRIIH0uICBJdCBvbmx5IG1ha2VzCisgICAgICogc2Vuc2UgdG8gdGVzdCB0aGUgZGF5IGZpZWxkczsgdGhlIHRpbWUgZmllbGRzIGFyZSBub3QgdGVzdGVkIGJ5IHRoaXMKKyAgICAgKiBtZXRob2QuICBJZiBudWxsLCB0aGVuIHRlc3QgYWxsIHN0YW5kYXJkIGZpZWxkcy4KKyAgICAgKiBAcGFyYW0gc3RhcnREYXRlIHRoZSBmaXJzdCBkYXRlIHRvIHRlc3QKKyAgICAgKiBAcGFyYW0gdGVzdER1cmF0aW9uIGlmIHBvc2l0aXZlLCB0aGUgbnVtYmVyIG9mIGRheXMgdG8gYmUgdGVzdGVkLgorICAgICAqIElmIG5lZ2F0aXZlLCB0aGUgbnVtYmVyIG9mIHNlY29uZHMgdG8gcnVuIHRoZSB0ZXN0LgorICAgICAqLworICAgIHByb3RlY3RlZCB2b2lkIGRvTGltaXRzVGVzdChDYWxlbmRhciBjYWwsIGludFtdIGZpZWxkc1RvVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZSBzdGFydERhdGUsIGludCB0ZXN0RHVyYXRpb24pIHsKKyAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIgZ3JlZyA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcigpOworICAgICAgICBncmVnLnNldFRpbWUoc3RhcnREYXRlKTsKKyAgICAgICAgbG9nbG4oIlN0YXJ0OiAiICsgc3RhcnREYXRlKTsKKworICAgICAgICBpZiAoZmllbGRzVG9UZXN0ID09IG51bGwpIHsKKyAgICAgICAgICAgIGZpZWxkc1RvVGVzdCA9IG5ldyBpbnRbXSB7CisgICAgICAgICAgICAgICAgQ2FsZW5kYXIuRVJBLCBDYWxlbmRhci5ZRUFSLCBDYWxlbmRhci5NT05USCwKKyAgICAgICAgICAgICAgICBDYWxlbmRhci5XRUVLX09GX1lFQVIsIENhbGVuZGFyLldFRUtfT0ZfTU9OVEgsCisgICAgICAgICAgICAgICAgQ2FsZW5kYXIuREFZX09GX01PTlRILCBDYWxlbmRhci5EQVlfT0ZfWUVBUiwKKyAgICAgICAgICAgICAgICBDYWxlbmRhci5EQVlfT0ZfV0VFS19JTl9NT05USCwgQ2FsZW5kYXIuWUVBUl9XT1ksCisgICAgICAgICAgICAgICAgQ2FsZW5kYXIuRVhURU5ERURfWUVBUgorICAgICAgICAgICAgfTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEtlZXAgYSByZWNvcmQgb2YgbWluaW1hIGFuZCBtYXhpbWEgdGhhdCB3ZSBhY3R1YWxseSBzZWUuCisgICAgICAgIC8vIFRoZXNlIGFyZSBrZXB0IGluIGFuIGFycmF5IG9mIGFycmF5cyBvZiBoYXNoZXMuCisgICAgICAgIEhhc2h0YWJsZVtdW10gbGltaXRzID0gbmV3IEhhc2h0YWJsZVtmaWVsZHNUb1Rlc3QubGVuZ3RoXVsyXTsKKyAgICAgICAgT2JqZWN0IG51YiA9IG5ldyBPYmplY3QoKTsgLy8gTWVhbmluZ2xlc3MgcGxhY2Vob2xkZXIKKworICAgICAgICAvLyBUaGlzIHRlc3QgY2FuIHJ1biBmb3IgYSBsb25nIHRpbWU7IHNob3cgcHJvZ3Jlc3MuCisgICAgICAgIGxvbmcgbWlsbGlzID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgIGxvbmcgbWFyayA9IG1pbGxpcyArIDUwMDA7IC8vIDUgc2VjCisgICAgICAgIG1pbGxpcyAtPSB0ZXN0RHVyYXRpb24gKiAxMDAwOyAvLyBzdG9wIHRpbWUgaWYgdGVzdER1cmF0aW9uPDAKKworICAgICAgICBmb3IgKGludCBpPTA7CisgICAgICAgICAgICAgdGVzdER1cmF0aW9uPjAgPyBpPHRlc3REdXJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk8bWlsbGlzOworICAgICAgICAgICAgICsraSkgeworICAgICAgICAgICAgaWYgKFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpID49IG1hcmspIHsKKyAgICAgICAgICAgICAgICBsb2dsbigiKCIgKyBpICsgIiBkYXlzKSIpOworICAgICAgICAgICAgICAgIG1hcmsgKz0gNTAwMDsgLy8gNSBzZWMKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhbC5zZXRUaW1lSW5NaWxsaXMoZ3JlZy5nZXRUaW1lSW5NaWxsaXMoKSk7CisgICAgICAgICAgICBmb3IgKGludCBqPTA7IGo8ZmllbGRzVG9UZXN0Lmxlbmd0aDsgKytqKSB7CisgICAgICAgICAgICAgICAgaW50IGYgPSBmaWVsZHNUb1Rlc3Rbal07CisgICAgICAgICAgICAgICAgaW50IHYgPSBjYWwuZ2V0KGYpOworICAgICAgICAgICAgICAgIGludCBtaW5BY3R1YWwgPSBjYWwuZ2V0QWN0dWFsTWluaW11bShmKTsKKyAgICAgICAgICAgICAgICBpbnQgbWF4QWN0dWFsID0gY2FsLmdldEFjdHVhbE1heGltdW0oZik7CisgICAgICAgICAgICAgICAgaW50IG1pbkxvdyA9IGNhbC5nZXRNaW5pbXVtKGYpOworICAgICAgICAgICAgICAgIGludCBtaW5IaWdoID0gY2FsLmdldEdyZWF0ZXN0TWluaW11bShmKTsKKyAgICAgICAgICAgICAgICBpbnQgbWF4TG93ID0gY2FsLmdldExlYXN0TWF4aW11bShmKTsKKyAgICAgICAgICAgICAgICBpbnQgbWF4SGlnaCA9IGNhbC5nZXRNYXhpbXVtKGYpOworCisgICAgICAgICAgICAgICAgLy8gRmV0Y2ggdGhlIGhhc2ggZm9yIHRoaXMgZmllbGQgYW5kIGtlZXAgdHJhY2sgb2YgdGhlCisgICAgICAgICAgICAgICAgLy8gbWluaW1hIGFuZCBtYXhpbWEuCisgICAgICAgICAgICAgICAgSGFzaHRhYmxlW10gaCA9IGxpbWl0c1tqXTsKKyAgICAgICAgICAgICAgICBpZiAoaFswXSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIGhbMF0gPSBuZXcgSGFzaHRhYmxlKCk7CisgICAgICAgICAgICAgICAgICAgIGhbMV0gPSBuZXcgSGFzaHRhYmxlKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGhbMF0ucHV0KG5ldyBJbnRlZ2VyKG1pbkFjdHVhbCksIG51Yik7CisgICAgICAgICAgICAgICAgaFsxXS5wdXQobmV3IEludGVnZXIobWF4QWN0dWFsKSwgbnViKTsKKworICAgICAgICAgICAgICAgIGlmIChtaW5BY3R1YWwgPCBtaW5Mb3cgfHwgbWluQWN0dWFsID4gbWluSGlnaCkgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigiRmFpbDogIiArIHltZFRvU3RyaW5nKGNhbCkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiIFJhbmdlIGZvciBtaW4gb2YgIiArIEZJRUxEX05BTUVbZl0gKworICAgICAgICAgICAgICAgICAgICAgICAgICAiPSIgKyBtaW5Mb3cgKyAiLi4iICsgbWluSGlnaCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICIsIGFjdHVhbF9taW49IiArIG1pbkFjdHVhbCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChtYXhBY3R1YWwgPCBtYXhMb3cgfHwgbWF4QWN0dWFsID4gbWF4SGlnaCkgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigiRmFpbDogIiArIHltZFRvU3RyaW5nKGNhbCkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiIFJhbmdlIGZvciBtYXggb2YgIiArIEZJRUxEX05BTUVbZl0gKworICAgICAgICAgICAgICAgICAgICAgICAgICAiPSIgKyBtYXhMb3cgKyAiLi4iICsgbWF4SGlnaCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICIsIGFjdHVhbF9tYXg9IiArIG1heEFjdHVhbCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICh2IDwgbWluQWN0dWFsIHx8IHYgPiBtYXhBY3R1YWwpIHsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIkZhaWw6ICIgKyB5bWRUb1N0cmluZyhjYWwpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiAiICsgRklFTERfTkFNRVtmXSArICI9IiArIHYgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiLCBhY3R1YWwgcmFuZ2U9IiArIG1pbkFjdHVhbCArICIuLiIgKyBtYXhBY3R1YWwgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiLCBhbGxvd2VkPSgiICsgbWluTG93ICsgIi4uIiArIG1pbkhpZ2ggKyAiKS4uKCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhMb3cgKyAiLi4iICsgbWF4SGlnaCArICIpIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZ3JlZy5hZGQoQ2FsZW5kYXIuREFZX09GX1lFQVIsIDEpOworICAgICAgICB9CisKKyAgICAgICAgLy8gQ2hlY2sgYWN0dWFsIG1heGltYSBhbmQgbWluaW1hIHNlZW4gYWdhaW5zdCByYW5nZXMgcmV0dXJuZWQKKyAgICAgICAgLy8gYnkgQVBJLgorICAgICAgICBTdHJpbmdCdWZmZXIgYnVmID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBmb3IgKGludCBqPTA7IGo8ZmllbGRzVG9UZXN0Lmxlbmd0aDsgKytqKSB7CisgICAgICAgICAgICBpbnQgZiA9IGZpZWxkc1RvVGVzdFtqXTsKKyAgICAgICAgICAgIGJ1Zi5zZXRMZW5ndGgoMCk7CisgICAgICAgICAgICBidWYuYXBwZW5kKEZJRUxEX05BTUVbZl0pOworICAgICAgICAgICAgSGFzaHRhYmxlW10gaCA9IGxpbWl0c1tqXTsKKyAgICAgICAgICAgIGJvb2xlYW4gZnVsbFJhbmdlU2VlbiA9IHRydWU7CisgICAgICAgICAgICBmb3IgKGludCBrPTA7IGs8MjsgKytrKSB7CisgICAgICAgICAgICAgICAgaW50IHJhbmdlTG93ID0gKGs9PTApID8KKyAgICAgICAgICAgICAgICAgICAgY2FsLmdldE1pbmltdW0oZikgOiBjYWwuZ2V0TGVhc3RNYXhpbXVtKGYpOworICAgICAgICAgICAgICAgIGludCByYW5nZUhpZ2ggPSAoaz09MCkgPworICAgICAgICAgICAgICAgICAgICBjYWwuZ2V0R3JlYXRlc3RNaW5pbXVtKGYpIDogY2FsLmdldE1heGltdW0oZik7CisgICAgICAgICAgICAgICAgLy8gSWYgZWl0aGVyIHRoZSB0b3Agb2YgdGhlIHJhbmdlIG9yIHRoZSBib3R0b20gd2FzIG5ldmVyCisgICAgICAgICAgICAgICAgLy8gc2VlbiwgdGhlbiB0aGVyZSBtYXkgYmUgYSBwcm9ibGVtLgorICAgICAgICAgICAgICAgIGlmIChoW2tdLmdldChuZXcgSW50ZWdlcihyYW5nZUxvdykpID09IG51bGwgfHwKKyAgICAgICAgICAgICAgICAgICAgaFtrXS5nZXQobmV3IEludGVnZXIocmFuZ2VIaWdoKSkgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBmdWxsUmFuZ2VTZWVuID0gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoaz09MCA/ICIgbWluaW1hIHNlZW49KCIgOiAiOyBtYXhpbWEgc2Vlbj0oIik7CisgICAgICAgICAgICAgICAgZm9yIChFbnVtZXJhdGlvbiBlPWhba10ua2V5cygpOyBlLmhhc01vcmVFbGVtZW50cygpOyApIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IHYgPSAoKEludGVnZXIpIGUubmV4dEVsZW1lbnQoKSkuaW50VmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgiICIgKyB2KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgiKSByYW5nZT0iICsgcmFuZ2VMb3cgKyAiLi4iICsgcmFuZ2VIaWdoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChmdWxsUmFuZ2VTZWVuKSB7CisgICAgICAgICAgICAgICAgbG9nbG4oIk9LOiAiICsgYnVmLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIG1heSBvciBtYXkgbm90IGJlIGFuIGVycm9yIC0tIGlmIHRoZSByYW5nZSBvZiBkYXRlcworICAgICAgICAgICAgICAgIC8vIHdlIHNjYW4gb3ZlciBkb2Vzbid0IGhhcHBlbiB0byBjb250YWluIGEgbWluaW11bSBvcgorICAgICAgICAgICAgICAgIC8vIG1heGltdW0sIGl0IGRvZXNuJ3QgbWVhbiBzb21lIG90aGVyIHJhbmdlIHdvbid0LgorICAgICAgICAgICAgICAgIGxvZ2xuKCJXYXJuaW5nOiAiICsgYnVmLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgbG9nbG4oIkVuZDogIiArIGdyZWcuZ2V0VGltZSgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb252ZXJ0IHllYXIsbW9udGgsZGF5IHZhbHVlcyB0byB0aGUgZm9ybSAieWVhci9tb250aC9kYXkiLgorICAgICAqIE9uIGlucHV0IHRoZSBtb250aCB2YWx1ZSBpcyB6ZXJvLWJhc2VkLCBidXQgaW4gdGhlIHJlc3VsdCBzdHJpbmcgaXQgaXMgb25lLWJhc2VkLgorICAgICAqLworICAgIHN0YXRpYyBwdWJsaWMgU3RyaW5nIHltZFRvU3RyaW5nKGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXkpIHsKKyAgICAgICAgcmV0dXJuICIiICsgeWVhciArICIvIiArIChtb250aCsxKSArICIvIiArIGRheTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb252ZXJ0IHllYXIsbW9udGgsZGF5IHZhbHVlcyB0byB0aGUgZm9ybSAieWVhci9tb250aC9kYXkiLgorICAgICAqLworICAgIHN0YXRpYyBwdWJsaWMgU3RyaW5nIHltZFRvU3RyaW5nKENhbGVuZGFyIGNhbCkgeworICAgICAgICBpZiAoY2FsIGluc3RhbmNlb2YgQ2hpbmVzZUNhbGVuZGFyKSB7CisgICAgICAgICAgICByZXR1cm4gIiIgKyBjYWwuZ2V0KENhbGVuZGFyLkVYVEVOREVEX1lFQVIpICsgIi8iICsKKyAgICAgICAgICAgICAgICAoY2FsLmdldChDYWxlbmRhci5NT05USCkrMSkgKworICAgICAgICAgICAgICAgIChjYWwuZ2V0KENoaW5lc2VDYWxlbmRhci5JU19MRUFQX01PTlRIKT09MT8iKGxlYXApIjoiIikgKyAiLyIgKworICAgICAgICAgICAgICAgIGNhbC5nZXQoQ2FsZW5kYXIuREFURSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHltZFRvU3RyaW5nKGNhbC5nZXQoQ2FsZW5kYXIuRVhURU5ERURfWUVBUiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWwuZ2V0KE1PTlRIKSwgY2FsLmdldChEQVRFKSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NhbGVuZGFyL0NoaW5lc2VUZXN0LmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY2FsZW5kYXIvQ2hpbmVzZVRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xYjc0MTE2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NhbGVuZGFyL0NoaW5lc2VUZXN0LmphdmEKQEAgLTAsMCArMSw1MjYgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9jYWxlbmRhci9DaGluZXNlVGVzdC5qYXZhLHYgJAorICogJERhdGU6IDIwMDIvMDIvMTYgMDM6MDU6MDUgJAorICogJFJldmlzaW9uOiAxLjkgJAorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0LmNhbGVuZGFyOworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuKjsKK2ltcG9ydCBjb20uaWJtLmljdS5sYW5nLio7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC4qOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CisKKy8qKgorICogVGVzdCBvZiBDaGluZXNlQ2FsZW5kYXIuCisgKgorICogTGVhcCBtb250aHMgaW4gdGhpcyBjZW50dXJ5OgorICogV2VkIE1heSAyMyAyMDAxID0gNDYzOC0wNCotMDEsIFllYXIgMTgsIEN5Y2xlIDc4CisgKiBTdW4gTWFyIDIxIDIwMDQgPSA0NjQxLTAyKi0wMSwgWWVhciAyMSwgQ3ljbGUgNzgKKyAqIFRodSBBdWcgMjQgMjAwNiA9IDQ2NDMtMDcqLTAxLCBZZWFyIDIzLCBDeWNsZSA3OAorICogVHVlIEp1biAyMyAyMDA5ID0gNDY0Ni0wNSotMDEsIFllYXIgMjYsIEN5Y2xlIDc4CisgKiBNb24gTWF5IDIxIDIwMTIgPSA0NjQ5LTA0Ki0wMSwgWWVhciAyOSwgQ3ljbGUgNzgKKyAqIEZyaSBPY3QgMjQgMjAxNCA9IDQ2NTEtMDkqLTAxLCBZZWFyIDMxLCBDeWNsZSA3OAorICogU3VuIEp1bCAyMyAyMDE3ID0gNDY1NC0wNiotMDEsIFllYXIgMzQsIEN5Y2xlIDc4CisgKiBTYXQgTWF5IDIzIDIwMjAgPSA0NjU3LTA0Ki0wMSwgWWVhciAzNywgQ3ljbGUgNzgKKyAqIFdlZCBNYXIgMjIgMjAyMyA9IDQ2NjAtMDIqLTAxLCBZZWFyIDQwLCBDeWNsZSA3OAorICogRnJpIEp1bCAyNSAyMDI1ID0gNDY2Mi0wNiotMDEsIFllYXIgNDIsIEN5Y2xlIDc4CisgKiBGcmkgSnVuIDIzIDIwMjggPSA0NjY1LTA1Ki0wMSwgWWVhciA0NSwgQ3ljbGUgNzgKKyAqIFR1ZSBBcHIgMjIgMjAzMSA9IDQ2NjgtMDMqLTAxLCBZZWFyIDQ4LCBDeWNsZSA3OAorICogVGh1IERlYyAyMiAyMDMzID0gNDY3MC0xMSotMDEsIFllYXIgNTAsIEN5Y2xlIDc4CisgKiBXZWQgSnVsIDIzIDIwMzYgPSA0NjczLTA2Ki0wMSwgWWVhciA1MywgQ3ljbGUgNzgKKyAqIFdlZCBKdW4gMjIgMjAzOSA9IDQ2NzYtMDUqLTAxLCBZZWFyIDU2LCBDeWNsZSA3OAorICogU2F0IE1hciAyMiAyMDQyID0gNDY3OS0wMiotMDEsIFllYXIgNTksIEN5Y2xlIDc4CisgKiBUdWUgQXVnIDIzIDIwNDQgPSA0NjgxLTA3Ki0wMSwgWWVhciAwMSwgQ3ljbGUgNzkKKyAqIFN1biBKdW4gMjMgMjA0NyA9IDQ2ODQtMDUqLTAxLCBZZWFyIDA0LCBDeWNsZSA3OQorICogVGh1IEFwciAyMSAyMDUwID0gNDY4Ny0wMyotMDEsIFllYXIgMDcsIEN5Y2xlIDc5CisgKiBNb24gU2VwIDIzIDIwNTIgPSA0Njg5LTA4Ki0wMSwgWWVhciAwOSwgQ3ljbGUgNzkKKyAqIFNhdCBKdWwgMjQgMjA1NSA9IDQ2OTItMDYqLTAxLCBZZWFyIDEyLCBDeWNsZSA3OQorICogV2VkIE1heSAyMiAyMDU4ID0gNDY5NS0wNCotMDEsIFllYXIgMTUsIEN5Y2xlIDc5CisgKiBXZWQgQXByIDIwIDIwNjEgPSA0Njk4LTAzKi0wMSwgWWVhciAxOCwgQ3ljbGUgNzkKKyAqIEZyaSBBdWcgMjQgMjA2MyA9IDQ3MDAtMDcqLTAxLCBZZWFyIDIwLCBDeWNsZSA3OQorICogV2VkIEp1biAyMyAyMDY2ID0gNDcwMy0wNSotMDEsIFllYXIgMjMsIEN5Y2xlIDc5CisgKiBUdWUgTWF5IDIxIDIwNjkgPSA0NzA2LTA0Ki0wMSwgWWVhciAyNiwgQ3ljbGUgNzkKKyAqIFRodSBTZXAgMjQgMjA3MSA9IDQ3MDgtMDgqLTAxLCBZZWFyIDI4LCBDeWNsZSA3OQorICogVHVlIEp1bCAyNCAyMDc0ID0gNDcxMS0wNiotMDEsIFllYXIgMzEsIEN5Y2xlIDc5CisgKiBTYXQgTWF5IDIyIDIwNzcgPSA0NzE0LTA0Ki0wMSwgWWVhciAzNCwgQ3ljbGUgNzkKKyAqIFNhdCBBcHIgMjAgMjA4MCA9IDQ3MTctMDMqLTAxLCBZZWFyIDM3LCBDeWNsZSA3OQorICogTW9uIEF1ZyAyNCAyMDgyID0gNDcxOS0wNyotMDEsIFllYXIgMzksIEN5Y2xlIDc5CisgKiBGcmkgSnVuIDIyIDIwODUgPSA0NzIyLTA1Ki0wMSwgWWVhciA0MiwgQ3ljbGUgNzkKKyAqIEZyaSBNYXkgMjEgMjA4OCA9IDQ3MjUtMDQqLTAxLCBZZWFyIDQ1LCBDeWNsZSA3OQorICogU3VuIFNlcCAyNCAyMDkwID0gNDcyNy0wOCotMDEsIFllYXIgNDcsIEN5Y2xlIDc5CisgKiBUaHUgSnVsIDIzIDIwOTMgPSA0NzMwLTA2Ki0wMSwgWWVhciA1MCwgQ3ljbGUgNzkKKyAqIFR1ZSBNYXkgMjIgMjA5NiA9IDQ3MzMtMDQqLTAxLCBZZWFyIDUzLCBDeWNsZSA3OQorICogU3VuIE1hciAyMiAyMDk5ID0gNDczNi0wMiotMDEsIFllYXIgNTYsIEN5Y2xlIDc5CisgKi8KK3B1YmxpYyBjbGFzcyBDaGluZXNlVGVzdCBleHRlbmRzIENhbGVuZGFyVGVzdCB7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgYXJnc1tdKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgbmV3IENoaW5lc2VUZXN0KCkucnVuKGFyZ3MpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3QgYmFzaWMgbWFwcGluZyB0byBhbmQgZnJvbSBHcmVnb3JpYW4uCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdE1hcHBpbmcoKSB7CisKKyAgICAgICAgZmluYWwgaW50W10gREFUQSA9IHsKKyAgICAgICAgICAgIC8vIChOb3RlOiBtb250aHMgYXJlIDEtYmFzZWQpCisgICAgICAgICAgICAvLyBHcmVnb3JpYW4gICAgQ2hpbmVzZQorICAgICAgICAgICAgMTk2NCwgIDksICA0LCAgIDQ2MDEsICA3LDAsIDI4LAorICAgICAgICAgICAgMTk2NCwgIDksICA1LCAgIDQ2MDEsICA3LDAsIDI5LAorICAgICAgICAgICAgMTk2NCwgIDksICA2LCAgIDQ2MDEsICA4LDAsICAxLAorICAgICAgICAgICAgMTk2NCwgIDksICA3LCAgIDQ2MDEsICA4LDAsICAyLAorICAgICAgICAgICAgMTk2MSwgMTIsIDI1LCAgIDQ1OTgsIDExLDAsIDE4LAorICAgICAgICAgICAgMTk5OSwgIDYsICA0LCAgIDQ2MzYsICA0LDAsIDIxLAorICAgICAgICAgICAgCisgICAgICAgICAgICAxOTkwLCAgNSwgMjMsICAgNDYyNywgIDQsMCwgMjksCisgICAgICAgICAgICAxOTkwLCAgNSwgMjQsICAgNDYyNywgIDUsMCwgIDEsCisgICAgICAgICAgICAxOTkwLCAgNiwgMjIsICAgNDYyNywgIDUsMCwgMzAsCisgICAgICAgICAgICAxOTkwLCAgNiwgMjMsICAgNDYyNywgIDUsMSwgIDEsCisgICAgICAgICAgICAxOTkwLCAgNywgMjAsICAgNDYyNywgIDUsMSwgMjgsCisgICAgICAgICAgICAxOTkwLCAgNywgMjEsICAgNDYyNywgIDUsMSwgMjksCisgICAgICAgICAgICAxOTkwLCAgNywgMjIsICAgNDYyNywgIDYsMCwgIDEsCisgICAgICAgIH07CisKKyAgICAgICAgQ2hpbmVzZUNhbGVuZGFyIGNhbCA9IG5ldyBDaGluZXNlQ2FsZW5kYXIoKTsKKyAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKworICAgICAgICBsb2dsbigiR3JlZ29yaWFuIC0+IENoaW5lc2UiKTsKKyAgICAgICAgamF2YS51dGlsLkNhbGVuZGFyIHRlbXBjYWwgPSBqYXZhLnV0aWwuQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTsKKyAgICAgICAgdGVtcGNhbC5jbGVhcigpOworICAgICAgICBmb3IgKGludCBpPTA7IGk8REFUQS5sZW5ndGg7ICkgeworICAgICAgICAgICAgdGVtcGNhbC5zZXQoREFUQVtpKytdLCBEQVRBW2krK10tMSwgREFUQVtpKytdKTsKKyAgICAgICAgICAgIERhdGUgZGF0ZSA9IHRlbXBjYWwuZ2V0VGltZSgpOworICAgICAgICAgICAgY2FsLnNldFRpbWUoZGF0ZSk7CisgICAgICAgICAgICBpbnQgeSA9IGNhbC5nZXQoQ2FsZW5kYXIuRVhURU5ERURfWUVBUik7CisgICAgICAgICAgICBpbnQgbSA9IGNhbC5nZXQoQ2FsZW5kYXIuTU9OVEgpKzE7IC8vIDAtYmFzZWQgLT4gMS1iYXNlZAorICAgICAgICAgICAgaW50IEwgPSBjYWwuZ2V0KENoaW5lc2VDYWxlbmRhci5JU19MRUFQX01PTlRIKTsKKyAgICAgICAgICAgIGludCBkID0gY2FsLmdldChDYWxlbmRhci5EQVlfT0ZfTU9OVEgpOworICAgICAgICAgICAgaW50IHlFID0gREFUQVtpKytdOyAvLyBFeHBlY3RlZCB5LCBtLCBpc0xlYXBNb250aCwgZAorICAgICAgICAgICAgaW50IG1FID0gREFUQVtpKytdOyAvLyAxLWJhc2VkCisgICAgICAgICAgICBpbnQgTEUgPSBEQVRBW2krK107CisgICAgICAgICAgICBpbnQgZEUgPSBEQVRBW2krK107CisgICAgICAgICAgICBidWYuc2V0TGVuZ3RoKDApOworICAgICAgICAgICAgYnVmLmFwcGVuZChkYXRlICsgIiAtPiAiKTsKKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQoeSArICIvIiArIG0gKyAoTD09MT8iKGxlYXApIjoiIikgKyAiLyIgKyBkKTsKKyAgICAgICAgICAgIGlmICh5ID09IHlFICYmIG0gPT0gbUUgJiYgTCA9PSBMRSAmJiBkID09IGRFKSB7CisgICAgICAgICAgICAgICAgbG9nbG4oIk9LOiAiICsgYnVmLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRmFpbDogIiArIGJ1Zi50b1N0cmluZygpICsgIiwgZXhwZWN0ZWQgIiArCisgICAgICAgICAgICAgICAgICAgICAgeUUgKyAiLyIgKyBtRSArIChMRT09MT8iKGxlYXApIjoiIikgKyAiLyIgKyBkRSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBsb2dsbigiQ2hpbmVzZSAtPiBHcmVnb3JpYW4iKTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPERBVEEubGVuZ3RoOyApIHsKKyAgICAgICAgICAgIHRlbXBjYWwuc2V0KERBVEFbaSsrXSwgREFUQVtpKytdLTEsIERBVEFbaSsrXSk7CisgICAgICAgICAgICBEYXRlIGRleHAgPSB0ZW1wY2FsLmdldFRpbWUoKTsKKyAgICAgICAgICAgIGludCBjeWVhciA9IERBVEFbaSsrXTsKKyAgICAgICAgICAgIGludCBjbW9udGggPSBEQVRBW2krK107CisgICAgICAgICAgICBpbnQgY2lzbGVhcG1vbnRoID0gREFUQVtpKytdOworICAgICAgICAgICAgaW50IGNkYXlvZm1vbnRoID0gREFUQVtpKytdOworICAgICAgICAgICAgY2FsLmNsZWFyKCk7CisgICAgICAgICAgICBjYWwuc2V0KENhbGVuZGFyLkVYVEVOREVEX1lFQVIsIGN5ZWFyKTsKKyAgICAgICAgICAgIGNhbC5zZXQoQ2FsZW5kYXIuTU9OVEgsIGNtb250aC0xKTsKKyAgICAgICAgICAgIGNhbC5zZXQoQ2hpbmVzZUNhbGVuZGFyLklTX0xFQVBfTU9OVEgsIGNpc2xlYXBtb250aCk7CisgICAgICAgICAgICBjYWwuc2V0KENhbGVuZGFyLkRBWV9PRl9NT05USCwgY2RheW9mbW9udGgpOworICAgICAgICAgICAgRGF0ZSBkYXRlID0gY2FsLmdldFRpbWUoKTsKKyAgICAgICAgICAgIGJ1Zi5zZXRMZW5ndGgoMCk7CisgICAgICAgICAgICBidWYuYXBwZW5kKGN5ZWFyICsgIi8iICsgY21vbnRoICsKKyAgICAgICAgICAgICAgICAgICAgICAgKGNpc2xlYXBtb250aD09MT8iKGxlYXApIjoiIikgKyAiLyIgKyBjZGF5b2Ztb250aCk7CisgICAgICAgICAgICBidWYuYXBwZW5kKCIgLT4gIiArIGRhdGUpOworICAgICAgICAgICAgaWYgKGRhdGUuZXF1YWxzKGRleHApKSB7CisgICAgICAgICAgICAgICAgbG9nbG4oIk9LOiAiICsgYnVmLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRmFpbDogIiArIGJ1Zi50b1N0cmluZygpICsgIiwgZXhwZWN0ZWQgIiArIGRleHApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogTWFrZSBzdXJlIG5vIEdyZWdvcmlhbiBkYXRlcyBtYXAgdG8gQ2hpbmVzZSAxLWJhc2VkIGRheSBvZgorICAgICAqIG1vbnRoIHplcm8uICBUaGlzIHdhcyBhIHByb2JsZW0gd2l0aCBzb21lIG9mIHRoZSBhc3Ryb25vbWljYWwKKyAgICAgKiBuZXcgbW9vbiBkZXRlcm1pbmF0aW9ucy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0WmVyb0RPTSgpIHsKKyAgICAgICAgQ2hpbmVzZUNhbGVuZGFyIGNhbCA9IG5ldyBDaGluZXNlQ2FsZW5kYXIoKTsKKyAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIgZ3JlZyA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcigxOTg5LCBDYWxlbmRhci5TRVBURU1CRVIsIDEpOworICAgICAgICBsb2dsbigiU3RhcnQ6ICIgKyBncmVnLmdldFRpbWUoKSk7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTwxMDAwOyArK2kpIHsKKyAgICAgICAgICAgIGNhbC5zZXRUaW1lSW5NaWxsaXMoZ3JlZy5nZXRUaW1lSW5NaWxsaXMoKSk7CisgICAgICAgICAgICBpZiAoY2FsLmdldChDYWxlbmRhci5EQVlfT0ZfTU9OVEgpID09IDApIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRmFpbDogIiArIGdyZWcuZ2V0VGltZSgpICsgIiAtPiAiICsKKyAgICAgICAgICAgICAgICAgICAgICBjYWwuZ2V0KENhbGVuZGFyLkVYVEVOREVEX1lFQVIpICsgIi8iICsKKyAgICAgICAgICAgICAgICAgICAgICBjYWwuZ2V0KENhbGVuZGFyLk1PTlRIKSArCisgICAgICAgICAgICAgICAgICAgICAgKGNhbC5nZXQoQ2hpbmVzZUNhbGVuZGFyLklTX0xFQVBfTU9OVEgpPT0xPyIobGVhcCkiOiIiKSArCisgICAgICAgICAgICAgICAgICAgICAgIi8iICsgY2FsLmdldChDYWxlbmRhci5EQVlfT0ZfTU9OVEgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGdyZWcuYWRkKENhbGVuZGFyLkRBWV9PRl9ZRUFSLCAxKTsKKyAgICAgICAgfQorICAgICAgICBsb2dsbigiRW5kOiAiICsgZ3JlZy5nZXRUaW1lKCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3QgbWluaW11bSBhbmQgbWF4aW11bSBmdW5jdGlvbnMuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdExpbWl0cygpIHsKKyAgICAgICAgLy8gVGhlIG51bWJlciBvZiBkYXlzIGFuZCB0aGUgc3RhcnQgZGF0ZSBjYW4gYmUgYWRqdXN0ZWQKKyAgICAgICAgLy8gYXJiaXRyYXJpbHkgdG8gZWl0aGVyIHNwZWVkIHVwIHRoZSB0ZXN0IG9yIG1ha2UgaXQgbW9yZQorICAgICAgICAvLyB0aG9yb3VnaCwgYnV0IHRyeSB0byB0ZXN0IGF0IGxlYXN0IGEgZnVsbCB5ZWFyLCBwcmVmZXJhYmx5IGEKKyAgICAgICAgLy8gZnVsbCBub24tbGVhcCBhbmQgYSBmdWxsIGxlYXAgeWVhci4KKworICAgICAgICAvLyBGaW5hbCBwYXJhbWV0ZXIgaXMgZWl0aGVyIG51bWJlciBvZiBkYXlzLCBpZiA+IDAsIG9yIHRlc3QKKyAgICAgICAgLy8gZHVyYXRpb24gaW4gc2Vjb25kcywgaWYgPCAwLgorICAgICAgICBqYXZhLnV0aWwuQ2FsZW5kYXIgdGVtcGNhbCA9IGphdmEudXRpbC5DYWxlbmRhci5nZXRJbnN0YW5jZSgpOworICAgICAgICB0ZW1wY2FsLmNsZWFyKCk7CisgICAgICAgIHRlbXBjYWwuc2V0KDE5ODksIENhbGVuZGFyLk5PVkVNQkVSLCAxKTsKKyAgICAgICAgZG9MaW1pdHNUZXN0KG5ldyBDaGluZXNlQ2FsZW5kYXIoKSwgbnVsbCwgdGVtcGNhbC5nZXRUaW1lKCksIC0xMCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUnVuIHRocm91Z2ggc2V2ZXJhbCBzdGFuZGFyZCB0ZXN0cyBmcm9tIERlcnNob3dpdHogJiBSZWluZ29sZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0SnVsaWFuRGF5TWFwcGluZygpIHsKKworICAgICAgICBmaW5hbCBUZXN0Q2FzZVtdIHRlc3RzID0geworICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIEZyb20gRGVyc2hvd2l0eiAmIFJlaW5nb2xkLCAiQ2FsZW5kcmljYWwgQ2FsY3VsYXRpb25zIi4KKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBUaGUgbW9udGhzIGluIHRoaXMgdGFibGUgYXJlIDEtYmFzZWQgcmF0aGVyIHRoYW4gMC1iYXNlZC4KKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyAqIEZhaWxpbmcgZmllbGRzLT5taWxsaXMKKyAgICAgICAgICAgIC8vICoqIE1pbGxpcy0+ZmllbGRzIGdpdmVzIDAtYmFzZWQgbW9udGggLTEKKyAgICAgICAgICAgIC8vIFRoZXNlIGZhaWx1cmVzIHdlcmUgZml4ZWQgYnkgY2hhbmdpbmcgdGhlIHN0YXJ0IHNlYXJjaCBkYXRlCisgICAgICAgICAgICAvLyBmb3IgdGhlIHdpbnRlciBzb2xzdGljZSBmcm9tIERlYyAxNSB0byBEZWMgMS4KKyAgICAgICAgICAgIC8vIAorICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICBKdWxpYW4gRGF5ICAgRXJhICBZZWFyIE1vbnRoICBMZWFwICAgRE9NIFdrRGF5CisgICAgICAgICAgICBuZXcgQ2hpbmVzZVRlc3RDYXNlKDE1MDcyMzEuNSwgICAzNSwgICAxMSwgICAgNiwgZmFsc2UsICAgMTIsICBTVU4pLAorICAgICAgICAgICAgbmV3IENoaW5lc2VUZXN0Q2FzZSgxNjYwMDM3LjUsICAgNDIsICAgIDksICAgMTAsIGZhbHNlLCAgIDI3LCAgV0VEKSwKKyAgICAgICAgICAgIG5ldyBDaGluZXNlVGVzdENhc2UoMTc0Njg5My41LCAgIDQ2LCAgICA3LCAgICA4LCBmYWxzZSwgICAgNCwgIFdFRCksCisgICAgICAgICAgICBuZXcgQ2hpbmVzZVRlc3RDYXNlKDE3NzA2NDEuNSwgICA0NywgICAxMiwgICAgOCwgZmFsc2UsICAgIDksICBTVU4pLAorICAgICAgICAgICAgbmV3IENoaW5lc2VUZXN0Q2FzZSgxODkyNzMxLjUsICAgNTIsICAgNDYsICAgMTEsIGZhbHNlLCAgIDIwLCAgV0VEKSwKKyAgICAgICAgICAgIG5ldyBDaGluZXNlVGVzdENhc2UoMTkzMTU3OS41LCAgIDU0LCAgIDMzLCAgICA0LCBmYWxzZSwgICAgNSwgIE1PTiksCisgICAgICAgICAgICBuZXcgQ2hpbmVzZVRlc3RDYXNlKDE5NzQ4NTEuNSwgICA1NiwgICAzMSwgICAxMCwgZmFsc2UsICAgMTUsICBTQVQpLAorICAgICAgICAgICAgbmV3IENoaW5lc2VUZXN0Q2FzZSgyMDkxMTY0LjUsICAgNjEsICAgNTAsICAgIDMsIGZhbHNlLCAgICA3LCAgU1VOKSwKKyAgICAgICAgICAgIG5ldyBDaGluZXNlVGVzdENhc2UoMjEyMTUwOS41LCAgIDYzLCAgIDEzLCAgICA0LCBmYWxzZSwgICAyNCwgIFNVTiksCisgICAgICAgICAgICBuZXcgQ2hpbmVzZVRlc3RDYXNlKDIxNTU3NzkuNSwgICA2NCwgICA0NywgICAgMiwgZmFsc2UsICAgIDksICBGUkkpLAorICAgICAgICAgICAgbmV3IENoaW5lc2VUZXN0Q2FzZSgyMTc0MDI5LjUsICAgNjUsICAgMzcsICAgIDIsIGZhbHNlLCAgICA5LCAgU0FUKSwKKyAgICAgICAgICAgIG5ldyBDaGluZXNlVGVzdENhc2UoMjE5MTU4NC41LCAgIDY2LCAgIDI1LCAgICAyLCBmYWxzZSwgICAyMywgIEZSSSksCisgICAgICAgICAgICBuZXcgQ2hpbmVzZVRlc3RDYXNlKDIxOTUyNjEuNSwgICA2NiwgICAzNSwgICAgMywgZmFsc2UsICAgIDksICBTVU4pLCAvLyoKKyAgICAgICAgICAgIG5ldyBDaGluZXNlVGVzdENhc2UoMjIyOTI3NC41LCAgIDY4LCAgICA4LCAgICA1LCBmYWxzZSwgICAgMiwgIFNVTiksIC8vKgorICAgICAgICAgICAgbmV3IENoaW5lc2VUZXN0Q2FzZSgyMjQ1NTgwLjUsICAgNjgsICAgNTMsICAgIDEsIGZhbHNlLCAgICA4LCAgV0VEKSwgLy8qKgorICAgICAgICAgICAgbmV3IENoaW5lc2VUZXN0Q2FzZSgyMjY2MTAwLjUsICAgNjksICAgNDksICAgIDMsIGZhbHNlLCAgICA0LCAgU0FUKSwgCisgICAgICAgICAgICBuZXcgQ2hpbmVzZVRlc3RDYXNlKDIyODg1NDIuNSwgICA3MCwgICA1MCwgICAgOCwgZmFsc2UsICAgIDIsICBTQVQpLCAvLyoKKyAgICAgICAgICAgIG5ldyBDaGluZXNlVGVzdENhc2UoMjI5MDkwMS41LCAgIDcwLCAgIDU3LCAgICAxLCBmYWxzZSwgICAyOSwgIFNBVCksIC8vKgorICAgICAgICAgICAgbmV3IENoaW5lc2VUZXN0Q2FzZSgyMzIzMTQwLjUsICAgNzIsICAgMjUsICAgIDQsICB0cnVlLCAgIDIwLCAgV0VEKSwgLy8qCisgICAgICAgICAgICBuZXcgQ2hpbmVzZVRlc3RDYXNlKDIzMzQ4NDguNSwgICA3MiwgICA1NywgICAgNiwgZmFsc2UsICAgIDUsICBTVU4pLAorICAgICAgICAgICAgbmV3IENoaW5lc2VUZXN0Q2FzZSgyMzQ4MDIwLjUsICAgNzMsICAgMzMsICAgIDYsIGZhbHNlLCAgICA2LCAgRlJJKSwKKyAgICAgICAgICAgIG5ldyBDaGluZXNlVGVzdENhc2UoMjM2Njk3OC41LCAgIDc0LCAgIDI1LCAgICA1LCBmYWxzZSwgICAgNSwgIFNVTiksCisgICAgICAgICAgICBuZXcgQ2hpbmVzZVRlc3RDYXNlKDIzODU2NDguNSwgICA3NSwgICAxNiwgICAgNiwgZmFsc2UsICAgMTIsICBNT04pLAorICAgICAgICAgICAgbmV3IENoaW5lc2VUZXN0Q2FzZSgyMzkyODI1LjUsICAgNzUsICAgMzYsICAgIDIsIGZhbHNlLCAgIDEzLCAgV0VEKSwKKyAgICAgICAgICAgIG5ldyBDaGluZXNlVGVzdENhc2UoMjQxNjIyMy41LCAgIDc2LCAgIDQwLCAgICAzLCBmYWxzZSwgICAyMiwgIFNVTiksCisgICAgICAgICAgICBuZXcgQ2hpbmVzZVRlc3RDYXNlKDI0MjU4NDguNSwgICA3NywgICAgNiwgICAgNywgZmFsc2UsICAgMjEsICBTVU4pLAorICAgICAgICAgICAgbmV3IENoaW5lc2VUZXN0Q2FzZSgyNDMwMjY2LjUsICAgNzcsICAgMTgsICAgIDgsIGZhbHNlLCAgICA5LCAgTU9OKSwKKyAgICAgICAgICAgIG5ldyBDaGluZXNlVGVzdENhc2UoMjQzMDgzMy41LCAgIDc3LCAgIDIwLCAgICAzLCBmYWxzZSwgICAxNSwgIE1PTiksCisgICAgICAgICAgICBuZXcgQ2hpbmVzZVRlc3RDYXNlKDI0MzEwMDQuNSwgICA3NywgICAyMCwgICAgOSwgZmFsc2UsICAgIDksICBUSFUpLAorICAgICAgICAgICAgbmV3IENoaW5lc2VUZXN0Q2FzZSgyNDQ4Njk4LjUsICAgNzgsICAgIDksICAgIDIsIGZhbHNlLCAgIDE0LCAgVFVFKSwKKyAgICAgICAgICAgIG5ldyBDaGluZXNlVGVzdENhc2UoMjQ1MDEzOC41LCAgIDc4LCAgIDEzLCAgICAxLCBmYWxzZSwgICAgNywgIFNVTiksCisgICAgICAgICAgICBuZXcgQ2hpbmVzZVRlc3RDYXNlKDI0NjU3MzcuNSwgICA3OCwgICA1NSwgICAxMCwgZmFsc2UsICAgMTQsICBXRUQpLAorICAgICAgICAgICAgbmV3IENoaW5lc2VUZXN0Q2FzZSgyNDg2MDc2LjUsICAgNzksICAgNTEsICAgIDYsIGZhbHNlLCAgICA3LCAgU1VOKSwKKworICAgICAgICAgICAgLy8gQWRkaXRpb25hbCB0ZXN0cyBub3QgZnJvbSBEJlIKKyAgICAgICAgICAgIG5ldyBDaGluZXNlVGVzdENhc2UoMjQ2NzQ5Ni41LCAgIDc4LCAgIDYwLCAgICA4LCBmYWxzZSwgICAgMiwgIEZSSSksIC8vIHllYXIgNjAKKyAgICAgICAgfTsKKworICAgICAgICBDaGluZXNlQ2FsZW5kYXIgY2FsID0gbmV3IENoaW5lc2VDYWxlbmRhcigpOworICAgICAgICBjYWwuc2V0TGVuaWVudCh0cnVlKTsKKyAgICAgICAgZG9UZXN0Q2FzZXModGVzdHMsIGNhbCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdCBmb3JtYXR0aW5nLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RGb3JtYXQoKSB7CisgICAgICAgIENoaW5lc2VDYWxlbmRhciBjYWwgPSBuZXcgQ2hpbmVzZUNhbGVuZGFyKCk7CisgICAgICAgIERhdGVGb3JtYXQgZm10ID0gRGF0ZUZvcm1hdC5nZXREYXRlVGltZUluc3RhbmNlKGNhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGVGb3JtYXQuREVGQVVMVCwgRGF0ZUZvcm1hdC5ERUZBVUxUKTsKKworICAgICAgICBqYXZhLnV0aWwuQ2FsZW5kYXIgdGVtcGNhbCA9IGphdmEudXRpbC5DYWxlbmRhci5nZXRJbnN0YW5jZSgpOworICAgICAgICB0ZW1wY2FsLmNsZWFyKCk7CisgICAgICAgIAorICAgICAgICBEYXRlW10gREFUQSA9IG5ldyBEYXRlWzJdOworICAgICAgICB0ZW1wY2FsLnNldCgyMDAxLCBDYWxlbmRhci5NQVksIDIyKTsKKyAgICAgICAgREFUQVswXSA9IHRlbXBjYWwuZ2V0VGltZSgpOworICAgICAgICB0ZW1wY2FsLnNldCgyMDAxLCBDYWxlbmRhci5NQVksIDIzKTsKKyAgICAgICAgREFUQVsxXSA9IHRlbXBjYWwuZ2V0VGltZSgpOworICAgICAgICAvLyBXZWQgTWF5IDIzIDIwMDEgPSBNb250aCA0KGxlYXApLCBEYXkgMSwgWWVhciAxOCwgQ3ljbGUgNzgKKyAgICAgICAgCisgICAgICAgIGZvciAoaW50IGk9MDsgaTxEQVRBLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBTdHJpbmcgcyA9IGZtdC5mb3JtYXQoREFUQVtpXSk7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIERhdGUgZSA9IGZtdC5wYXJzZShzKTsKKyAgICAgICAgICAgICAgICBpZiAoZS5lcXVhbHMoREFUQVtpXSkpIHsKKyAgICAgICAgICAgICAgICAgICAgbG9nbG4oIk9rOiAiICsgREFUQVtpXSArICIgLT4gIiArIHMgKyAiIC0+ICIgKyBlKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogIiArIERBVEFbaV0gKyAiIC0+ICIgKyBzICsgIiAtPiAiICsgZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBjYXRjaCAoamF2YS50ZXh0LlBhcnNlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRmFpbDogIiArIHMgKyAiIC0+IHBhcnNlIGZhaWx1cmUgYXQgIiArIGUuZ2V0RXJyb3JPZmZzZXQoKSk7CisgICAgICAgICAgICAgICAgZXJybG4oZS50b1N0cmluZygpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIE1ha2Ugc3VyZSBJU19MRUFQX01PTlRIIHBhcnRpY2lwYXRlcyBpbiBmaWVsZCByZXNvbHV0aW9uLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RSZXNvbHV0aW9uKCkgeworICAgICAgICBDaGluZXNlQ2FsZW5kYXIgY2FsID0gbmV3IENoaW5lc2VDYWxlbmRhcigpOworICAgICAgICBEYXRlRm9ybWF0IGZtdCA9IERhdGVGb3JtYXQuZ2V0RGF0ZUluc3RhbmNlKGNhbCwgRGF0ZUZvcm1hdC5ERUZBVUxUKTsKKworICAgICAgICAvLyBNYXkgMjIgMjAwMSA9IHk0NjM4IG00IGQzMCBkb3kxMTkKKyAgICAgICAgLy8gTWF5IDIzIDIwMDEgPSB5NDYzOCBtNCogZDEgZG95MTIwCisKKyAgICAgICAgZmluYWwgaW50IFRIRV9ZRUFSID0gNDYzODsKKyAgICAgICAgZmluYWwgaW50IEVORCA9IC0xOworCisgICAgICAgIGludFtdIERBVEEgPSB7CisgICAgICAgICAgICAvLyBGb3JtYXQ6CisgICAgICAgICAgICAvLyAoZmllbGQsIHZhbHVlKSssIEVORCwgZXhwLm1vbnRoLCBleHAuaXNMZWFwTW9udGgsIGV4cC5ET00KKyAgICAgICAgICAgIC8vIE5vdGU6IGV4cC5tb250aCBpcyBPTkUtQkFTRUQKKworICAgICAgICAgICAgLy8gSWYgd2Ugc2V0IERBWV9PRl9ZRUFSIG9ubHksIHRoYXQgc2hvdWxkIGJlIHVzZWQKKyAgICAgICAgICAgIENhbGVuZGFyLkRBWV9PRl9ZRUFSLCAxLAorICAgICAgICAgICAgRU5ELAorICAgICAgICAgICAgMSwwLDEsIC8vIEV4cGVjdCAxLTEKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gSWYgd2Ugc2V0IE1PTlRIIG9ubHksIHRoYXQgc2hvdWxkIGJlIHVzZWQKKyAgICAgICAgICAgIENoaW5lc2VDYWxlbmRhci5JU19MRUFQX01PTlRILCAxLAorICAgICAgICAgICAgQ2FsZW5kYXIuREFZX09GX01PTlRILCAxLAorICAgICAgICAgICAgQ2FsZW5kYXIuTU9OVEgsIDMsCisgICAgICAgICAgICBFTkQsCisgICAgICAgICAgICA0LDEsMSwgLy8gRXhwZWN0IDQqLTEKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gSWYgd2Ugc2V0IHRoZSBET1kgbGFzdCwgdGhhdCBzaG91bGQgdGFrZSBwcmVjZWRlbmNlCisgICAgICAgICAgICBDYWxlbmRhci5NT05USCwgMSwgLy8gU2hvdWxkIGlnbm9yZQorICAgICAgICAgICAgQ2hpbmVzZUNhbGVuZGFyLklTX0xFQVBfTU9OVEgsIDEsIC8vIFNob3VsZCBpZ25vcmUKKyAgICAgICAgICAgIENhbGVuZGFyLkRBWV9PRl9NT05USCwgMSwgLy8gU2hvdWxkIGlnbm9yZQorICAgICAgICAgICAgQ2FsZW5kYXIuREFZX09GX1lFQVIsIDEyMSwKKyAgICAgICAgICAgIEVORCwKKyAgICAgICAgICAgIDQsMSwyLCAvLyBFeHBlY3QgNCotMgorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBJJ3ZlIGRpc2FibGVkIHRoaXMgdGVzdCBiZWNhdXNlIGl0IGRvZXNuJ3Qgd29yayB0aGlzIHdheSwKKyAgICAgICAgICAgIC8vIG5vdCBldmVuIHdpdGggYSBHcmVnb3JpYW5DYWxlbmRhciEgIE1PTlRIIGFsb25lIGlzbid0IGVub3VnaAorICAgICAgICAgICAgLy8gdG8gc3VwZXJzZWRlIERBWV9PRl9ZRUFSLiAgU29tZSBvdGhlciBtb250aC1yZWxhdGVkIGZpZWxkIGlzCisgICAgICAgICAgICAvLyBhbHNvIHJlcXVpcmVkLiAtIExpdSAxMS8yOC8wMAorICAgICAgICAgICAgLy8hIC8vIElmIHdlIHNldCBNT05USCBsYXN0LCB0aGF0IHNob3VsZCB0YWtlIHByZWNlZGVuY2UKKyAgICAgICAgICAgIC8vISBDaGluZXNlQ2FsZW5kYXIuSVNfTEVBUF9NT05USCwgMSwKKyAgICAgICAgICAgIC8vISBDYWxlbmRhci5EQVlfT0ZfTU9OVEgsIDEsCisgICAgICAgICAgICAvLyEgQ2FsZW5kYXIuREFZX09GX1lFQVIsIDUsIC8vIFNob3VsZCBpZ25vcmUKKyAgICAgICAgICAgIC8vISBDYWxlbmRhci5NT05USCwgMywKKyAgICAgICAgICAgIC8vISBFTkQsCisgICAgICAgICAgICAvLyEgNCwxLDEsIC8vIEV4cGVjdCA0Ki0xCisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIElmIHdlIHNldCBJU19MRUFQX01PTlRIIGxhc3QsIHRoYXQgc2hvdWxkIHRha2UgcHJlY2VkZW5jZQorICAgICAgICAgICAgQ2FsZW5kYXIuTU9OVEgsIDMsCisgICAgICAgICAgICBDYWxlbmRhci5EQVlfT0ZfTU9OVEgsIDEsCisgICAgICAgICAgICBDYWxlbmRhci5EQVlfT0ZfWUVBUiwgNSwgLy8gU2hvdWxkIGlnbm9yZQorICAgICAgICAgICAgQ2hpbmVzZUNhbGVuZGFyLklTX0xFQVBfTU9OVEgsIDEsCisgICAgICAgICAgICBFTkQsCisgICAgICAgICAgICA0LDEsMSwgLy8gRXhwZWN0IDQqLTEKKyAgICAgICAgfTsKKworICAgICAgICBTdHJpbmdCdWZmZXIgYnVmID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBmb3IgKGludCBpPTA7IGk8REFUQS5sZW5ndGg7ICkgeworICAgICAgICAgICAgY2FsLmNsZWFyKCk7CisgICAgICAgICAgICBjYWwuc2V0KENhbGVuZGFyLkVYVEVOREVEX1lFQVIsIFRIRV9ZRUFSKTsKKyAgICAgICAgICAgIGJ1Zi5zZXRMZW5ndGgoMCk7CisgICAgICAgICAgICBidWYuYXBwZW5kKCJFWFRFTkRFRF9ZRUFSPSIgKyBUSEVfWUVBUik7CisgICAgICAgICAgICB3aGlsZSAoREFUQVtpXSAhPSBFTkQpIHsKKyAgICAgICAgICAgICAgICBjYWwuc2V0KERBVEFbaSsrXSwgREFUQVtpKytdKTsKKyAgICAgICAgICAgICAgICBidWYuYXBwZW5kKCIgIiArIGZpZWxkTmFtZShEQVRBW2ktMl0pICsgIj0iICsgREFUQVtpLTFdKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICsraTsgLy8gU2tpcCBvdmVyIEVORCBtYXJrCisgICAgICAgICAgICBpbnQgZXhwTW9udGggPSBEQVRBW2krK10tMTsKKyAgICAgICAgICAgIGludCBleHBJc0xlYXBNb250aCA9IERBVEFbaSsrXTsKKyAgICAgICAgICAgIGludCBleHBET00gPSBEQVRBW2krK107CisgICAgICAgICAgICBpbnQgbW9udGggPSBjYWwuZ2V0KENhbGVuZGFyLk1PTlRIKTsKKyAgICAgICAgICAgIGludCBpc0xlYXBNb250aCA9IGNhbC5nZXQoQ2hpbmVzZUNhbGVuZGFyLklTX0xFQVBfTU9OVEgpOworICAgICAgICAgICAgaW50IGRvbSA9IGNhbC5nZXQoQ2FsZW5kYXIuREFZX09GX01PTlRIKTsKKyAgICAgICAgICAgIGlmIChleHBNb250aCA9PSBtb250aCAmJiBleHBJc0xlYXBNb250aCA9PSBpc0xlYXBNb250aCAmJgorICAgICAgICAgICAgICAgIGRvbSA9PSBleHBET00pIHsKKyAgICAgICAgICAgICAgICBsb2dsbigiT0s6ICIgKyBidWYgKyAiID0+ICIgKyBmbXQuZm9ybWF0KGNhbC5nZXRUaW1lKCkpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHMgPSBmbXQuZm9ybWF0KGNhbC5nZXRUaW1lKCkpOworICAgICAgICAgICAgICAgIGNhbC5jbGVhcigpOworICAgICAgICAgICAgICAgIGNhbC5zZXQoQ2FsZW5kYXIuRVhURU5ERURfWUVBUiwgVEhFX1lFQVIpOworICAgICAgICAgICAgICAgIGNhbC5zZXQoQ2FsZW5kYXIuTU9OVEgsIGV4cE1vbnRoKTsKKyAgICAgICAgICAgICAgICBjYWwuc2V0KENoaW5lc2VDYWxlbmRhci5JU19MRUFQX01PTlRILCBleHBJc0xlYXBNb250aCk7CisgICAgICAgICAgICAgICAgY2FsLnNldChDYWxlbmRhci5EQVlfT0ZfTU9OVEgsIGV4cERPTSk7CisgICAgICAgICAgICAgICAgZXJybG4oIkZhaWw6ICIgKyBidWYgKyAiID0+ICIgKyBzICsKKyAgICAgICAgICAgICAgICAgICAgICAiPSIgKyAobW9udGgrMSkgKyAiLCIgKyBpc0xlYXBNb250aCArICIsIiArIGRvbSArCisgICAgICAgICAgICAgICAgICAgICAgIiwgZXhwZWN0ZWQgIiArIGZtdC5mb3JtYXQoY2FsLmdldFRpbWUoKSkgKworICAgICAgICAgICAgICAgICAgICAgICI9IiArIChleHBNb250aCsxKSArICIsIiArIGV4cElzTGVhcE1vbnRoICsgIiwiICsgZXhwRE9NKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3QgdGhlIGJlaGF2aW9yIG9mIGZpZWxkcyB0aGF0IGFyZSBvdXQgb2YgcmFuZ2UuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdE91dE9mUmFuZ2UoKSB7CisgICAgICAgIGludFtdIERBVEEgPSBuZXcgaW50W10geworICAgICAgICAgICAgLy8gSW5wdXQgICAgICAgT3V0cHV0CisgICAgICAgICAgICA0NjM4LCAxMywgIDEsICAgNDYzOSwgIDEsICAxLAorICAgICAgICAgICAgNDYzOCwgMTgsICAxLCAgIDQ2MzksICA2LCAgMSwKKyAgICAgICAgICAgIDQ2MzksICAwLCAgMSwgICA0NjM4LCAxMiwgIDEsCisgICAgICAgICAgICA0NjM5LCAtNiwgIDEsICAgNDYzOCwgIDYsICAxLAorICAgICAgICAgICAgNDYzOCwgIDEsIDMyLCAgIDQ2MzgsICAyLCAgMiwgLy8gMS00NjM4IGhhcyAzMCBkYXlzCisgICAgICAgICAgICA0NjM4LCAgMiwgLTEsICAgNDYzOCwgIDEsIDI5LAorICAgICAgICB9OworICAgICAgICBDaGluZXNlQ2FsZW5kYXIgY2FsID0gbmV3IENoaW5lc2VDYWxlbmRhcigpOworICAgICAgICBmb3IgKGludCBpPTA7IGk8REFUQS5sZW5ndGg7ICkgeworICAgICAgICAgICAgaW50IHkxID0gREFUQVtpKytdOworICAgICAgICAgICAgaW50IG0xID0gREFUQVtpKytdLTE7CisgICAgICAgICAgICBpbnQgZDEgPSBEQVRBW2krK107CisgICAgICAgICAgICBpbnQgeTIgPSBEQVRBW2krK107CisgICAgICAgICAgICBpbnQgbTIgPSBEQVRBW2krK10tMTsKKyAgICAgICAgICAgIGludCBkMiA9IERBVEFbaSsrXTsKKyAgICAgICAgICAgIGNhbC5jbGVhcigpOworICAgICAgICAgICAgY2FsLnNldChDYWxlbmRhci5FWFRFTkRFRF9ZRUFSLCB5MSk7CisgICAgICAgICAgICBjYWwuc2V0KE1PTlRILCBtMSk7CisgICAgICAgICAgICBjYWwuc2V0KERBVEUsIGQxKTsKKyAgICAgICAgICAgIGludCB5ID0gY2FsLmdldChDYWxlbmRhci5FWFRFTkRFRF9ZRUFSKTsKKyAgICAgICAgICAgIGludCBtID0gY2FsLmdldChNT05USCk7CisgICAgICAgICAgICBpbnQgZCA9IGNhbC5nZXQoREFURSk7CisgICAgICAgICAgICBpZiAoeSE9eTIgfHwgbSE9bTIgfHwgZCE9ZDIpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRmFpbDogIiArIHkxICsgIi8iICsgKG0xKzEpICsgIi8iICsgZDEgKyAiIHJlc29sdmVzIHRvICIgKworICAgICAgICAgICAgICAgICAgICAgIHkgKyAiLyIgKyAobSsxKSArICIvIiArIGQgKyAiLCBleHBlY3RlZCAiICsKKyAgICAgICAgICAgICAgICAgICAgICB5MiArICIvIiArIChtMisxKSArICIvIiArIGQyKTsKKyAgICAgICAgICAgIH0gZWxzZSAgaWYgKGlzVmVyYm9zZSgpKSB7CisgICAgICAgICAgICAgICAgbG9nbG4oIk9LOiAiICsgeTEgKyAiLyIgKyAobTErMSkgKyAiLyIgKyBkMSArICIgcmVzb2x2ZXMgdG8gIiArCisgICAgICAgICAgICAgICAgICAgICAgeSArICIvIiArIChtKzEpICsgIi8iICsgZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXN0IHRoZSBiZWhhdmlvciBvZiBDaGluZXNlQ2FsZW5kYXIuYWRkKCkuICBUaGUgb25seSByZWFsCisgICAgICogbmFzdGluZXNzIHdpdGggcm9sbCBpcyB0aGUgTU9OVEggZmllbGQgYXJvdW5kIGxlYXAgbW9udGhzLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RBZGQoKSB7CisgICAgICAgIGludFtdW10gdGVzdHMgPSBuZXcgaW50W11bXSB7CisgICAgICAgICAgICAvLyBNT05USFMgQVJFIDEtQkFTRUQgSEVSRQorICAgICAgICAgICAgLy8gaW5wdXQgICAgICAgICAgICAgICBhZGQgICAgICAgICAgIG91dHB1dAorICAgICAgICAgICAgLy8geWVhciAgbW9uICAgIGRheSAgICBmaWVsZCBhbW91bnQgIHllYXIgIG1vbiAgICBkYXkKKyAgICAgICAgICAgIHsgIDQ2NDIsICAgMywwLCAgMTUsICAgTU9OVEgsICAgMywgICA0NjQyLCAgIDYsMCwgIDE1IH0sIC8vIG5vcm1hbAorICAgICAgICAgICAgeyAgNDYzOSwgIDEyLDAsICAxNSwgICBNT05USCwgICAxLCAgIDQ2NDAsICAgMSwwLCAgMTUgfSwgLy8gYWNyb3NzIHllYXIKKyAgICAgICAgICAgIHsgIDQ2NDAsICAgMSwwLCAgMTUsICAgTU9OVEgsICAtMSwgICA0NjM5LCAgMTIsMCwgIDE1IH0sIC8vIGFjcm9zcyB5ZWFyCisgICAgICAgICAgICB7ICA0NjM4LCAgIDMsMCwgIDE1LCAgIE1PTlRILCAgIDMsICAgNDYzOCwgICA1LDAsICAxNSB9LCAvLyA0PWxlYXAKKyAgICAgICAgICAgIHsgIDQ2MzgsICAgMywwLCAgMTUsICAgTU9OVEgsICAgMiwgICA0NjM4LCAgIDQsMSwgIDE1IH0sIC8vIDQ9bGVhcAorICAgICAgICAgICAgeyAgNDYzOCwgICA0LDAsICAxNSwgICBNT05USCwgICAxLCAgIDQ2MzgsICAgNCwxLCAgMTUgfSwgLy8gND1sZWFwCisgICAgICAgICAgICB7ICA0NjM4LCAgIDQsMSwgIDE1LCAgIE1PTlRILCAgIDEsICAgNDYzOCwgICA1LDAsICAxNSB9LCAvLyA0PWxlYXAKKyAgICAgICAgICAgIHsgIDQ2MzgsICAgNCwwLCAgMzAsICAgTU9OVEgsICAgMSwgICA0NjM4LCAgIDQsMSwgIDI5IH0sIC8vIGRvbSBzaG91bGQgcGluCisgICAgICAgICAgICB7ICA0NjM4LCAgIDQsMCwgIDMwLCAgIE1PTlRILCAgIDIsICAgNDYzOCwgICA1LDAsICAzMCB9LCAvLyBubyBkb20gcGluCisgICAgICAgICAgICB7ICA0NjM4LCAgIDQsMCwgIDMwLCAgIE1PTlRILCAgIDMsICAgNDYzOCwgICA2LDAsICAyOSB9LCAvLyBkb20gc2hvdWxkIHBpbgorICAgICAgICB9OworICAgICAgIAorICAgICAgICBDaGluZXNlQ2FsZW5kYXIgY2FsID0gbmV3IENoaW5lc2VDYWxlbmRhcigpOworICAgICAgICBkb1JvbGxBZGQoQURELCBjYWwsIHRlc3RzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXN0IHRoZSBiZWhhdmlvciBvZiBDaGluZXNlQ2FsZW5kYXIucm9sbCgpLiAgVGhlIG9ubHkgcmVhbAorICAgICAqIG5hc3RpbmVzcyB3aXRoIHJvbGwgaXMgdGhlIE1PTlRIIGZpZWxkIGFyb3VuZCBsZWFwIG1vbnRocy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0Um9sbCgpIHsKKyAgICAgICAgaW50W11bXSB0ZXN0cyA9IG5ldyBpbnRbXVtdIHsKKyAgICAgICAgICAgIC8vIE1PTlRIUyBBUkUgMS1CQVNFRCBIRVJFCisgICAgICAgICAgICAvLyBpbnB1dCAgICAgICAgICAgICAgIGFkZCAgICAgICAgICAgb3V0cHV0CisgICAgICAgICAgICAvLyB5ZWFyICBtb24gICAgZGF5ICAgIGZpZWxkIGFtb3VudCAgeWVhciAgbW9uICAgIGRheQorICAgICAgICAgICAgeyAgNDY0MiwgICAzLDAsICAxNSwgICBNT05USCwgICAzLCAgIDQ2NDIsICAgNiwwLCAgMTUgfSwgLy8gbm9ybWFsCisgICAgICAgICAgICB7ICA0NjQyLCAgIDMsMCwgIDE1LCAgIE1PTlRILCAgMTEsICAgNDY0MiwgICAyLDAsICAxNSB9LCAvLyBub3JtYWwKKyAgICAgICAgICAgIHsgIDQ2MzksICAxMiwwLCAgMTUsICAgTU9OVEgsICAgMSwgICA0NjM5LCAgIDEsMCwgIDE1IH0sIC8vIGFjcm9zcyB5ZWFyCisgICAgICAgICAgICB7ICA0NjQwLCAgIDEsMCwgIDE1LCAgIE1PTlRILCAgLTEsICAgNDY0MCwgIDEyLDAsICAxNSB9LCAvLyBhY3Jvc3MgeWVhcgorICAgICAgICAgICAgeyAgNDYzOCwgICAzLDAsICAxNSwgICBNT05USCwgICAzLCAgIDQ2MzgsICAgNSwwLCAgMTUgfSwgLy8gND1sZWFwCisgICAgICAgICAgICB7ICA0NjM4LCAgIDMsMCwgIDE1LCAgIE1PTlRILCAgMTYsICAgNDYzOCwgICA1LDAsICAxNSB9LCAvLyA0PWxlYXAKKyAgICAgICAgICAgIHsgIDQ2MzgsICAgMywwLCAgMTUsICAgTU9OVEgsICAgMiwgICA0NjM4LCAgIDQsMSwgIDE1IH0sIC8vIDQ9bGVhcAorICAgICAgICAgICAgeyAgNDYzOCwgICAzLDAsICAxNSwgICBNT05USCwgIDI4LCAgIDQ2MzgsICAgNCwxLCAgMTUgfSwgLy8gND1sZWFwCisgICAgICAgICAgICB7ICA0NjM4LCAgIDQsMCwgIDE1LCAgIE1PTlRILCAgIDEsICAgNDYzOCwgICA0LDEsICAxNSB9LCAvLyA0PWxlYXAKKyAgICAgICAgICAgIHsgIDQ2MzgsICAgNCwwLCAgMTUsICAgTU9OVEgsIC0xMiwgICA0NjM4LCAgIDQsMSwgIDE1IH0sIC8vIDQ9bGVhcAorICAgICAgICAgICAgeyAgNDYzOCwgICA0LDEsICAxNSwgICBNT05USCwgICAxLCAgIDQ2MzgsICAgNSwwLCAgMTUgfSwgLy8gND1sZWFwCisgICAgICAgICAgICB7ICA0NjM4LCAgIDQsMSwgIDE1LCAgIE1PTlRILCAtMjUsICAgNDYzOCwgICA1LDAsICAxNSB9LCAvLyA0PWxlYXAKKyAgICAgICAgICAgIHsgIDQ2MzgsICAgNCwwLCAgMzAsICAgTU9OVEgsICAgMSwgICA0NjM4LCAgIDQsMSwgIDI5IH0sIC8vIGRvbSBzaG91bGQgcGluCisgICAgICAgICAgICB7ICA0NjM4LCAgIDQsMCwgIDMwLCAgIE1PTlRILCAgMTQsICAgNDYzOCwgICA0LDEsICAyOSB9LCAvLyBkb20gc2hvdWxkIHBpbgorICAgICAgICAgICAgeyAgNDYzOCwgICA0LDAsICAzMCwgICBNT05USCwgIDE1LCAgIDQ2MzgsICAgNSwwLCAgMzAgfSwgLy8gbm8gZG9tIHBpbgorICAgICAgICAgICAgeyAgNDYzOCwgICA0LDAsICAzMCwgICBNT05USCwgLTEwLCAgIDQ2MzgsICAgNiwwLCAgMjkgfSwgLy8gZG9tIHNob3VsZCBwaW4KKyAgICAgICAgfTsKKyAgICAgICAKKyAgICAgICAgQ2hpbmVzZUNhbGVuZGFyIGNhbCA9IG5ldyBDaGluZXNlQ2FsZW5kYXIoKTsKKyAgICAgICAgZG9Sb2xsQWRkKFJPTEwsIGNhbCwgdGVzdHMpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGRvUm9sbEFkZChib29sZWFuIHJvbGwsIENoaW5lc2VDYWxlbmRhciBjYWwsIGludFtdW10gdGVzdHMpIHsKKyAgICAgICAgU3RyaW5nIG5hbWUgPSByb2xsID8gInJvbGxpbmciIDogImFkZGluZyI7CisgICAgICAgIAorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRlc3RzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBpbnRbXSB0ZXN0ID0gdGVzdHNbaV07CisKKyAgICAgICAgICAgIGNhbC5jbGVhcigpOworICAgICAgICAgICAgICAgIGNhbC5zZXQoQ2FsZW5kYXIuRVhURU5ERURfWUVBUiwgdGVzdFswXSk7CisgICAgICAgICAgICAgICAgY2FsLnNldChDYWxlbmRhci5NT05USCwgdGVzdFsxXS0xKTsKKyAgICAgICAgICAgICAgICBjYWwuc2V0KENoaW5lc2VDYWxlbmRhci5JU19MRUFQX01PTlRILCB0ZXN0WzJdKTsKKyAgICAgICAgICAgICAgICBjYWwuc2V0KENhbGVuZGFyLkRBWV9PRl9NT05USCwgdGVzdFszXSk7CisgICAgICAgICAgICBpZiAocm9sbCkgeworICAgICAgICAgICAgICAgIGNhbC5yb2xsKHRlc3RbNF0sIHRlc3RbNV0pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBjYWwuYWRkKHRlc3RbNF0sIHRlc3RbNV0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNhbC5nZXQoQ2FsZW5kYXIuRVhURU5ERURfWUVBUikgIT0gdGVzdFs2XSB8fAorICAgICAgICAgICAgICAgIGNhbC5nZXQoTU9OVEgpICE9ICh0ZXN0WzddLTEpIHx8CisgICAgICAgICAgICAgICAgY2FsLmdldChDaGluZXNlQ2FsZW5kYXIuSVNfTEVBUF9NT05USCkgIT0gdGVzdFs4XSB8fAorICAgICAgICAgICAgICAgIGNhbC5nZXQoREFURSkgIT0gdGVzdFs5XSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGYWlsOiAiICsgbmFtZSArICIgIiArCisgICAgICAgICAgICAgICAgICAgICAgeW1kVG9TdHJpbmcodGVzdFswXSwgdGVzdFsxXS0xLCB0ZXN0WzJdLCB0ZXN0WzNdKQorICAgICAgICAgICAgICAgICAgICAgICsgIiAiICsgZmllbGROYW1lKHRlc3RbNF0pICsgIiBieSAiICsgdGVzdFs1XQorICAgICAgICAgICAgICAgICAgICAgICsgIjogZXhwZWN0ZWQgIiArCisgICAgICAgICAgICAgICAgICAgICAgeW1kVG9TdHJpbmcodGVzdFs2XSwgdGVzdFs3XS0xLCB0ZXN0WzhdLCB0ZXN0WzldKQorICAgICAgICAgICAgICAgICAgICAgICsgIiwgZ290ICIgKyB5bWRUb1N0cmluZyhjYWwpKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNWZXJib3NlKCkpIHsKKyAgICAgICAgICAgICAgICBsb2dsbigiT0s6ICIgKyBuYW1lICsgIiAiICsKKyAgICAgICAgICAgICAgICAgICAgICB5bWRUb1N0cmluZyh0ZXN0WzBdLCB0ZXN0WzFdLTEsIHRlc3RbMl0sIHRlc3RbM10pCisgICAgICAgICAgICAgICAgICAgICsgIiAiICsgZmllbGROYW1lKHRlc3RbNF0pICsgIiBieSAiICsgdGVzdFs1XQorICAgICAgICAgICAgICAgICAgICArICI6IGdvdCAiICsgeW1kVG9TdHJpbmcoY2FsKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb252ZXJ0IHllYXIsbW9udGgsZGF5IHZhbHVlcyB0byB0aGUgZm9ybSAieWVhci9tb250aC9kYXkiLgorICAgICAqIE9uIGlucHV0IHRoZSBtb250aCB2YWx1ZSBpcyB6ZXJvLWJhc2VkLCBidXQgaW4gdGhlIHJlc3VsdCBzdHJpbmcgaXQgaXMgb25lLWJhc2VkLgorICAgICAqLworICAgIHN0YXRpYyBwdWJsaWMgU3RyaW5nIHltZFRvU3RyaW5nKGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBpc0xlYXBNb250aCwgaW50IGRheSkgeworICAgICAgICByZXR1cm4gIiIgKyB5ZWFyICsgIi8iICsgKG1vbnRoKzEpICsKKyAgICAgICAgICAgICgoaXNMZWFwTW9udGghPTApPyIobGVhcCkiOiIiKSArCisgICAgICAgICAgICAiLyIgKyBkYXk7CisgICAgfQorCisvLyAgICBwdWJsaWMgdm9pZCBUZXN0RmluZExlYXBNb250aHMoKSB7CisvLyAgICAgICAgQ2hpbmVzZUNhbGVuZGFyIGNhbCA9IG5ldyBDaGluZXNlQ2FsZW5kYXIoKTsKKy8vICAgICAgICBjYWwuc2V0VGltZShuZXcgRGF0ZSgyMDAwLTE5MDAsIENhbGVuZGFyLkpBTlVBUlksIDEpKTsKKy8vICAgICAgICBsb25nIGVuZCA9IG5ldyBEYXRlKDIxMDAtMTkwMCwgQ2FsZW5kYXIuSkFOVUFSWSwgMSkuZ2V0VGltZSgpOworLy8gICAgICAgIENoaW5lc2VEYXRlRm9ybWF0IGZtdCA9IChDaGluZXNlRGF0ZUZvcm1hdCkgRGF0ZUZvcm1hdC5nZXRJbnN0YW5jZShjYWwpOworLy8gICAgICAgIGZtdC5hcHBseVBhdHRlcm4oInUtTU1sLWRkLCAnWWVhcicgeSwgJ0N5Y2xlJyBHIik7CisvLyAgICAgICAgd2hpbGUgKGNhbC5nZXRUaW1lSW5NaWxsaXMoKSA8IGVuZCkgeworLy8gICAgICAgICAgICBpZiAoY2FsLmdldChDaGluZXNlQ2FsZW5kYXIuSVNfTEVBUF9NT05USCkgIT0gMCkgeworLy8gICAgICAgICAgICAgICAgY2FsLnNldChDYWxlbmRhci5EQVlfT0ZfTU9OVEgsIDEpOworLy8gICAgICAgICAgICAgICAgbG9nbG4oY2FsLmdldFRpbWUoKSArICIgPSAiICsgZm10LmZvcm1hdChjYWwuZ2V0VGltZSgpKSk7CisvLyAgICAgICAgICAgICAgICBjYWwuc2V0KENhbGVuZGFyLkRBWV9PRl9NT05USCwgMjkpOworLy8gICAgICAgICAgICB9CisvLyAgICAgICAgICAgIGNhbC5hZGQoQ2FsZW5kYXIuREFZX09GX1lFQVIsIDI1KTsKKy8vICAgICAgICB9CisvLyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY2FsZW5kYXIvQ2hpbmVzZVRlc3RDYXNlLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY2FsZW5kYXIvQ2hpbmVzZVRlc3RDYXNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMDVkNWI3OAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9jYWxlbmRhci9DaGluZXNlVGVzdENhc2UuamF2YQpAQCAtMCwwICsxLDU5IEBACisvKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NhbGVuZGFyL0NoaW5lc2VUZXN0Q2FzZS5qYXZhLHYgJAorICogJERhdGU6IDIwMDIvMDgvMTMgMjE6NTM6MzggJAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3QuY2FsZW5kYXI7CitpbXBvcnQgY29tLmlibS5pY3UudXRpbC4qOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworCitwdWJsaWMgY2xhc3MgQ2hpbmVzZVRlc3RDYXNlIGV4dGVuZHMgVGVzdENhc2UgeworCisgICAgLyoqCisgICAgICogSW5pdGlhbGl6ZSBhbiBvYmplY3QgdXNpbmcgYSBKdWxpYW4gZGF5IG51bWJlciBhbmQKKyAgICAgKiB0aGUgY29ycmVzcG9uZGluZyBmaWVsZHMgZm9yIHRoZSBjYWxlbmRhciBiZWluZyB0ZXN0ZWQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gZXJhIHRoZSBFUkEgZmllbGQgb2YgdGVzdGVkIGNhbGVuZGFyIG9uIHRoZSBnaXZlbiBKdWxpYW4KKyAgICAgKiBkYXkKKyAgICAgKiBAcGFyYW0geWVhciB0aGUgWUVBUiBmaWVsZCBvZiB0ZXN0ZWQgY2FsZW5kYXIgb24gdGhlIGdpdmVuCisgICAgICogSnVsaWFuIGRheQorICAgICAqIEBwYXJhbSBtb250aCB0aGUgTU9OVEggKDEtYmFzZWQpIGZpZWxkIG9mIHRlc3RlZCBjYWxlbmRhciBvbgorICAgICAqIHRoZSBnaXZlbiBKdWxpYW4gZGF5CisgICAgICogQHBhcmFtIGlzTGVhcE1vbnRoIGlmIHRydWUsIHRyZWF0IG1vbnRoIGFzIGEgbGVhcCBtb250aAorICAgICAqIEBwYXJhbSBkYXlPZk1vbnRoIHRoZSBEQVlfT0ZfTU9OVEggZmllbGQgb2YgdGVzdGVkIGNhbGVuZGFyIG9uIHRoZQorICAgICAqIGdpdmVuIEp1bGlhbiBkYXkKKyAgICAgKiBAcGFyYW0gZGF5T2ZXZWVrIHRoZSBEQVlfT0ZfV0VFSyBmaWVsZCBvZiB0ZXN0ZWQgY2FsZW5kYXIgb24gZ2l2ZW4KKyAgICAgKiBKdWxpYW4gZGF5CisgICAgICovCisgICAgcHVibGljIENoaW5lc2VUZXN0Q2FzZShkb3VibGUganVsaWFuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGVyYSwgaW50IHllYXIsIGludCBtb250aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gaXNMZWFwTW9udGgsIGludCBkYXlPZk1vbnRoLCBpbnQgZGF5T2ZXZWVrKSB7CisKKyAgICAgICAgc2V0VGltZShuZXcgRGF0ZShKVUxJQU5fRVBPQ0ggKyAobG9uZykoT05FX0RBWSAqIGp1bGlhbikpKTsKKyAgICAgICAgCisgICAgICAgIHNldChDYWxlbmRhci5FUkEsIGVyYSk7CisgICAgICAgIHNldChDYWxlbmRhci5ZRUFSLCB5ZWFyKTsKKyAgICAgICAgc2V0KENhbGVuZGFyLk1PTlRILCBtb250aCAtIDEpOworICAgICAgICBzZXQoQ2hpbmVzZUNhbGVuZGFyLklTX0xFQVBfTU9OVEgsIGlzTGVhcE1vbnRoPzE6MCk7CisgICAgICAgIHNldChDYWxlbmRhci5EQVlfT0ZfTU9OVEgsIGRheU9mTW9udGgpOworICAgICAgICBzZXQoQ2FsZW5kYXIuREFZX09GX1dFRUssIGRheU9mV2Vlayk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgdGVzdCBjYXNlJ3MgdGltZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICByZXR1cm4gZG93VG9TdHJpbmcoZ2V0KENhbGVuZGFyLkRBWV9PRl9XRUVLKSkgKworICAgICAgICAgICAgZ2V0KENhbGVuZGFyLllFQVIpICsgIm9mIiArIGdldChDYWxlbmRhci5FUkEpICsKKyAgICAgICAgICAgICIvIiArIChnZXQoQ2FsZW5kYXIuTU9OVEgpKzEpICsKKyAgICAgICAgICAgIChnZXQoQ2hpbmVzZUNhbGVuZGFyLklTX0xFQVBfTU9OVEgpPT0xPyIobGVhcCkiOiIiKSArICIvIiArCisgICAgICAgICAgICBnZXQoQ2FsZW5kYXIuREFZX09GX01PTlRIKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY2FsZW5kYXIvQ29tcGF0aWJpbGl0eVRlc3QuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9jYWxlbmRhci9Db21wYXRpYmlsaXR5VGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmFkYjVhMWQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY2FsZW5kYXIvQ29tcGF0aWJpbGl0eVRlc3QuamF2YQpAQCAtMCwwICsxLDEwNTMgQEAKKy8qKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMS0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY2FsZW5kYXIvQ29tcGF0aWJpbGl0eVRlc3QuamF2YSx2ICQKKyAqICREYXRlOiAyMDAyLzA4LzEzIDIxOjUzOjM4ICQKKyAqICRSZXZpc2lvbjogMS44ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0LmNhbGVuZGFyOworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuKjsKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworaW1wb3J0IGphdmEudGV4dC4qOworaW1wb3J0IGphdmEuaW8uKjsKKworcHVibGljIGNsYXNzIENvbXBhdGliaWxpdHlUZXN0IGV4dGVuZHMgY29tLmlibS5pY3UuZGV2LnRlc3QuVGVzdEZtd2sgeworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIGFyZ3ZbXSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIG5ldyBDb21wYXRpYmlsaXR5VGVzdCgpLnJ1bihhcmd2KTsKKyAgICB9CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nW10gRklFTERfTkFNRSA9IHsKKyAgICAgICAgIkVSQSIsICJZRUFSIiwgIk1PTlRIIiwgIldFRUtfT0ZfWUVBUiIsICJXRUVLX09GX01PTlRIIiwKKyAgICAgICAgIkRBWV9PRl9NT05USCIsICJEQVlfT0ZfWUVBUiIsICJEQVlfT0ZfV0VFSyIsCisgICAgICAgICJEQVlfT0ZfV0VFS19JTl9NT05USCIsICJBTV9QTSIsICJIT1VSIiwgIkhPVVJfT0ZfREFZIiwKKyAgICAgICAgIk1JTlVURSIsICJTRUNPTkQiLCAiTUlMTElTRUNPTkQiLCAiWk9ORV9PRkZTRVQiLAorICAgICAgICAiRFNUX09GRlNFVCIsICJZRUFSX1dPWSIsICJET1dfTE9DQUwiLCAiRVhURU5ERURfWUVBUiIsCisgICAgICAgICJKVUxJQU5fREFZIiwgIk1JTExJU0VDT05EU19JTl9EQVkiLAorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBUZXN0IHRoZSBiZWhhdmlvciBvZiB0aGUgR3JlZ29yaWFuQ2FsZW5kYXIgYXJvdW5kIHRoZSBjaGFuZ2VvdmVyLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RHcmVnb3JpYW5DaGFuZ2VvdmVyKCkgeworICAgICAgICBqYXZhLnV0aWwuQ2FsZW5kYXIgdGVtcGNhbCA9IGphdmEudXRpbC5DYWxlbmRhci5nZXRJbnN0YW5jZSgpOworICAgICAgICB0ZW1wY2FsLmNsZWFyKCk7CisgICAgICAgIHRlbXBjYWwuc2V0KDE1ODIsIENhbGVuZGFyLk9DVE9CRVIsIDE1KTsKKyAgICAgICAgRGF0ZSBjbyA9IHRlbXBjYWwuZ2V0VGltZSgpOworICAgICAgICBmaW5hbCBpbnQgT05FX0RBWSA9IDI0KjYwKjYwKjEwMDA7CisgICAgICAgIEdyZWdvcmlhbkNhbGVuZGFyIGNhbCA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcigpOworICAgICAgICAvKgorICAgICAgICAgIENoYW5nZW92ZXIgLTcgZGF5czogMTU4Mi85LzI4IGRvdz02CisgICAgICAgICAgQ2hhbmdlb3ZlciAtNiBkYXlzOiAxNTgyLzkvMjkgZG93PTcKKyAgICAgICAgICBDaGFuZ2VvdmVyIC01IGRheXM6IDE1ODIvOS8zMCBkb3c9MQorICAgICAgICAgIENoYW5nZW92ZXIgLTQgZGF5czogMTU4Mi8xMC8xIGRvdz0yCisgICAgICAgICAgQ2hhbmdlb3ZlciAtMyBkYXlzOiAxNTgyLzEwLzIgZG93PTMKKyAgICAgICAgICBDaGFuZ2VvdmVyIC0yIGRheXM6IDE1ODIvMTAvMyBkb3c9NAorICAgICAgICAgIENoYW5nZW92ZXIgLTEgZGF5czogMTU4Mi8xMC80IGRvdz01CisgICAgICAgICAgQ2hhbmdlb3ZlciArMCBkYXlzOiAxNTgyLzEwLzE1IGRvdz02CisgICAgICAgICAgQ2hhbmdlb3ZlciArMSBkYXlzOiAxNTgyLzEwLzE2IGRvdz03CisgICAgICAgICAgQ2hhbmdlb3ZlciArMiBkYXlzOiAxNTgyLzEwLzE3IGRvdz0xCisgICAgICAgICAgQ2hhbmdlb3ZlciArMyBkYXlzOiAxNTgyLzEwLzE4IGRvdz0yCisgICAgICAgICAgQ2hhbmdlb3ZlciArNCBkYXlzOiAxNTgyLzEwLzE5IGRvdz0zCisgICAgICAgICAgQ2hhbmdlb3ZlciArNSBkYXlzOiAxNTgyLzEwLzIwIGRvdz00CisgICAgICAgICAgQ2hhbmdlb3ZlciArNiBkYXlzOiAxNTgyLzEwLzIxIGRvdz01CisgICAgICAgICAgQ2hhbmdlb3ZlciArNyBkYXlzOiAxNTgyLzEwLzIyIGRvdz02CisgICAgICAgICAgKi8KKyAgICAgICAgaW50IE1PTltdID0geyAgOSwgIDksICA5LDEwLDEwLDEwLDEwLCAxMCwgMTAsIDEwLCAxMCwgMTAsIDEwLCAxMCwgMTAgfTsKKyAgICAgICAgaW50IERPTVtdID0geyAyOCwgMjksIDMwLCAxLCAyLCAzLCA0LCAxNSwgMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjIgfTsKKyAgICAgICAgaW50IERPV1tdID0geyAgNiwgIDcsICAxLCAyLCAzLCA0LCA1LCAgNiwgIDcsICAxLCAgMiwgIDMsICA0LCAgNSwgIDYgfTsKKyAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXiA8LUNoYW5nZW92ZXIgRnJpIE9jdCAxNSAxNTgyCisgICAgICAgIGludCBqPTA7CisgICAgICAgIGZvciAoaW50IGk9LTc7IGk8PTc7ICsraSwgKytqKSB7CisgICAgICAgICAgICBEYXRlIGQgPSBuZXcgRGF0ZShjby5nZXRUaW1lKCkgKyBpKk9ORV9EQVkpOworICAgICAgICAgICAgY2FsLnNldFRpbWUoZCk7CisgICAgICAgICAgICBpbnQgeSA9IGNhbC5nZXQoQ2FsZW5kYXIuWUVBUiksIG1vbiA9IGNhbC5nZXQoQ2FsZW5kYXIuTU9OVEgpKzEtQ2FsZW5kYXIuSkFOVUFSWSwKKyAgICAgICAgICAgICAgICBkb20gPSBjYWwuZ2V0KENhbGVuZGFyLkRBVEUpLCBkb3cgPSBjYWwuZ2V0KENhbGVuZGFyLkRBWV9PRl9XRUVLKTsKKyAgICAgICAgICAgIGxvZ2xuKCJDaGFuZ2VvdmVyICIgKyAoaT49MD8iKyI6IiIpICsKKyAgICAgICAgICAgICAgICAgIGkgKyAiIGRheXM6ICIgKyB5ICsgIi8iICsgbW9uICsgIi8iICsgZG9tICsgIiBkb3c9IiArIGRvdyk7CisgICAgICAgICAgICBpZiAoeSAhPSAxNTgyIHx8IG1vbiAhPSBNT05bal0gfHwgZG9tICE9IERPTVtqXSB8fCBkb3cgIT0gRE9XW2pdKQorICAgICAgICAgICAgICAgIGVycmxuKCIgRmFpbDogQWJvdmUgbGluZSBpcyB3cm9uZyIpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdCB0aGUgbWFwcGluZyBiZXR3ZWVuIG1pbGxpcyBhbmQgZmllbGRzLiAgRm9yIHRoZSBwdXJwb3NlcworICAgICAqIG9mIHRoaXMgdGVzdCwgd2UgZG9uJ3QgY2FyZSBhYm91dCB0aW1lem9uZXMgYW5kIHdlZWsgZGF0YQorICAgICAqIChmaXJzdCBkYXkgb2Ygd2VlaywgbWluaW1hbCBkYXlzIGluIGZpcnN0IHdlZWspLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RNYXBwaW5nKCkgeworICAgICAgICBpZiAoZmFsc2UpIHsKKyAgICAgICAgICAgIERhdGUgUFVSRV9HUkVHT1JJQU4gPSBuZXcgRGF0ZShMb25nLk1JTl9WQUxVRSk7CisgICAgICAgICAgICBEYXRlIFBVUkVfSlVMSUFOID0gbmV3IERhdGUoTG9uZy5NQVhfVkFMVUUpOworICAgICAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIgY2FsID0KKyAgICAgICAgICAgICAgICBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoVGltZVpvbmUuZ2V0VGltZVpvbmUoIlVUQyIpKTsKKyAgICAgICAgICAgIGZpbmFsIGludCBFUE9DSF9KVUxJQU4gPSAyNDQwNTg4OworICAgICAgICAgICAgZmluYWwgbG9uZyBPTkVfREFZID0gMjQqNjAqNjAqMTAwMEw7CisgICAgICAgICAgICBjb20uaWJtLmljdS50ZXh0LlNpbXBsZURhdGVGb3JtYXQgZm10ID0KKyAgICAgICAgICAgICAgICBuZXcgY29tLmlibS5pY3UudGV4dC5TaW1wbGVEYXRlRm9ybWF0KCJFRUUgTU1NIGRkIHl5eXkgRyIpOworICAgICAgICAgICAgICAgIC8qSEg6bW06c3MuU1NTIHoqLworCisgICAgICAgICAgICBmb3IgKGludCB0eXBlPTA7IHR5cGU8MjsgKyt0eXBlKSB7CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHR5cGU9PTAgPyAiR3JlZ29yaWFuIiA6ICJKdWxpYW4iKTsKKyAgICAgICAgICAgICAgICBjYWwuc2V0R3JlZ29yaWFuQ2hhbmdlKHR5cGU9PTAgPyBQVVJFX0dSRUdPUklBTiA6IFBVUkVfSlVMSUFOKTsKKyAgICAgICAgICAgICAgICBmbXQuc2V0Q2FsZW5kYXIoY2FsKTsKKyAgICAgICAgICAgICAgICBpbnRbXSBKID0geworICAgICAgICAgICAgICAgICAgICAweDdGRkZGRkZGLAorICAgICAgICAgICAgICAgICAgICAweDdGRkZGRkYwLAorICAgICAgICAgICAgICAgICAgICAweDdGMDAwMDAwLAorICAgICAgICAgICAgICAgICAgICAweDc4MDAwMDAwLAorICAgICAgICAgICAgICAgICAgICAweDcwMDAwMDAwLAorICAgICAgICAgICAgICAgICAgICAweDYwMDAwMDAwLAorICAgICAgICAgICAgICAgICAgICAweDUwMDAwMDAwLAorICAgICAgICAgICAgICAgICAgICAweDQwMDAwMDAwLAorICAgICAgICAgICAgICAgICAgICAweDMwMDAwMDAwLAorICAgICAgICAgICAgICAgICAgICAweDIwMDAwMDAwLAorICAgICAgICAgICAgICAgICAgICAweDEwMDAwMDAwLAorICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPEoubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nW10gbGltID0gbmV3IFN0cmluZ1syXTsKKyAgICAgICAgICAgICAgICAgICAgbG9uZ1tdIG1zID0gbmV3IGxvbmdbMl07CisgICAgICAgICAgICAgICAgICAgIGludCBqZCA9IEpbaV07CisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IHNpZ249MDsgc2lnbjwyOyArK3NpZ24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBqdWxpYW4gPSBqZDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzaWduPT0wKSBqdWxpYW4gPSAtanVsaWFuOworICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBtaWxsaXMgPSAoKGxvbmcpanVsaWFuIC0gRVBPQ0hfSlVMSUFOKSAqIE9ORV9EQVk7CisgICAgICAgICAgICAgICAgICAgICAgICBtc1tzaWduXSA9IG1pbGxpczsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbC5zZXRUaW1lKG5ldyBEYXRlKG1pbGxpcykpOworICAgICAgICAgICAgICAgICAgICAgICAgbGltW3NpZ25dID0gZm10LmZvcm1hdChjYWwuZ2V0VGltZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkpEICsvLSIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9uZy50b1N0cmluZyhqZCwgMTYpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI6ICIgKyBtc1swXSArICIuLiIgKyBtc1sxXSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOiAiICsgbGltWzBdICsgIi4uIiArIGxpbVsxXSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgVGltZVpvbmUgc2F2ZVpvbmUgPSBUaW1lWm9uZS5nZXREZWZhdWx0KCk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBUaW1lWm9uZS5zZXREZWZhdWx0KFRpbWVab25lLmdldFRpbWVab25lKCJVVEMiKSk7CisgICAgICAgICAgICAvL05FV0NBTAorICAgICAgICAgICAgRGF0ZSBQVVJFX0dSRUdPUklBTiA9IG5ldyBEYXRlKExvbmcuTUlOX1ZBTFVFKTsKKyAgICAgICAgICAgIERhdGUgUFVSRV9KVUxJQU4gPSBuZXcgRGF0ZShMb25nLk1BWF9WQUxVRSk7CisgICAgICAgICAgICBHcmVnb3JpYW5DYWxlbmRhciBjYWwgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoKTsKKyAgICAgICAgICAgIGZpbmFsIGludCBFUE9DSF9KVUxJQU4gPSAyNDQwNTg4OworICAgICAgICAgICAgZmluYWwgbG9uZyBPTkVfREFZID0gMjQqNjAqNjAqMTAwMEw7CisgICAgICAgICAgICBpbnRbXSBEQVRBID0geworICAgICAgICAgICAgICAgIC8vIEp1bGlhbiMgICBZZWFyICBNb250aCAgICAgICAgICAgICAgIERPTSAgIEpVTElBTjpZZWFyLCBNb250aCwgICAgICAgRE9NCisgICAgICAgICAgICAgICAgMjQ0MDU4OCwgICAgIDE5NzAsIENhbGVuZGFyLkpBTlVBUlksICAgMSwgICAgMTk2OSwgQ2FsZW5kYXIuREVDRU1CRVIsICAxOSwgCisgICAgICAgICAgICAgICAgMjQxNTA4MCwgICAgIDE5MDAsIENhbGVuZGFyLk1BUkNILCAgICAgMSwgICAgMTkwMCwgQ2FsZW5kYXIuRkVCUlVBUlksICAxNywKKyAgICAgICAgICAgICAgICAyNDUxNjA0LCAgICAgMjAwMCwgQ2FsZW5kYXIuRkVCUlVBUlksICAyOSwgICAyMDAwLCBDYWxlbmRhci5GRUJSVUFSWSwgIDE2LAorICAgICAgICAgICAgICAgIDI0NTIyNjksICAgICAyMDAxLCBDYWxlbmRhci5ERUNFTUJFUiwgIDI1LCAgIDIwMDEsIENhbGVuZGFyLkRFQ0VNQkVSLCAgMTIsCisgICAgICAgICAgICAgICAgMjQxNjUyNiwgICAgIDE5MDQsIENhbGVuZGFyLkZFQlJVQVJZLCAgMTUsICAgMTkwNCwgQ2FsZW5kYXIuRkVCUlVBUlksICAyLAorICAgICAgICAgICAgICAgIDI0MTY2NTYsICAgICAxOTA0LCBDYWxlbmRhci5KVU5FLCAgICAgIDI0LCAgIDE5MDQsIENhbGVuZGFyLkpVTkUsICAgICAgMTEsCisgICAgICAgICAgICAgICAgMTcyMTQyNiwgICAgICAgIDEsIENhbGVuZGFyLkpBTlVBUlksICAgMSwgICAgICAgMSwgQ2FsZW5kYXIuSkFOVUFSWSwgICAzLAorICAgICAgICAgICAgICAgIDIwMDAwMDAsICAgICAgNzYzLCBDYWxlbmRhci5TRVBURU1CRVIsIDE4LCAgICA3NjMsIENhbGVuZGFyLlNFUFRFTUJFUiwgMTQsCisgICAgICAgICAgICAgICAgNDAwMDAwMCwgICAgIDYyMzksIENhbGVuZGFyLkpVTFksICAgICAgMTIsICAgNjIzOSwgQ2FsZW5kYXIuTUFZLCAgICAgICAyOCwKKyAgICAgICAgICAgICAgICA4MDAwMDAwLCAgICAxNzE5MSwgQ2FsZW5kYXIuRkVCUlVBUlksICAyNiwgIDE3MTkwLCBDYWxlbmRhci5PQ1RPQkVSLCAgIDIyLAorICAgICAgICAgICAgICAgIDEwMDAwMDAwLCAgIDIyNjY2LCBDYWxlbmRhci5ERUNFTUJFUiwgIDIwLCAgMjI2NjYsIENhbGVuZGFyLkpVTFksICAgICAgNSwKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8REFUQS5sZW5ndGg7IGkrPTcpIHsKKyAgICAgICAgICAgICAgICBpbnQganVsaWFuID0gREFUQVtpXTsKKyAgICAgICAgICAgICAgICBpbnQgeWVhciA9IERBVEFbaSsxXTsKKyAgICAgICAgICAgICAgICBpbnQgbW9udGggPSBEQVRBW2krMl07CisgICAgICAgICAgICAgICAgaW50IGRvbSA9IERBVEFbaSszXTsKKyAgICAgICAgICAgICAgICBpbnQgeWVhcjIsIG1vbnRoMiwgZG9tMjsKKyAgICAgICAgICAgICAgICBsb25nIG1pbGxpcyA9IChqdWxpYW4gLSBFUE9DSF9KVUxJQU4pICogT05FX0RBWTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgczsKKworICAgICAgICAgICAgICAgIC8vIFRlc3QgR3JlZ29yaWFuIGNvbXB1dGF0aW9uCisgICAgICAgICAgICAgICAgY2FsLnNldEdyZWdvcmlhbkNoYW5nZShQVVJFX0dSRUdPUklBTik7CisgICAgICAgICAgICAgICAgY2FsLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY2FsLnNldCh5ZWFyLCBtb250aCwgZG9tKTsKKyAgICAgICAgICAgICAgICBsb25nIGNhbE1pbGxpcyA9IGNhbC5nZXRUaW1lKCkuZ2V0VGltZSgpOworICAgICAgICAgICAgICAgIGxvbmcgZGVsdGEgPSBjYWxNaWxsaXMgLSBtaWxsaXM7CisgICAgICAgICAgICAgICAgY2FsLnNldFRpbWUobmV3IERhdGUobWlsbGlzKSk7CisgICAgICAgICAgICAgICAgeWVhcjIgPSBjYWwuZ2V0KENhbGVuZGFyLllFQVIpOworICAgICAgICAgICAgICAgIG1vbnRoMiA9IGNhbC5nZXQoQ2FsZW5kYXIuTU9OVEgpOworICAgICAgICAgICAgICAgIGRvbTIgPSBjYWwuZ2V0KENhbGVuZGFyLkRBWV9PRl9NT05USCk7CisgICAgICAgICAgICAgICAgcyA9ICJHICIgKyB5ZWFyICsgIi0iICsgKG1vbnRoKzEtQ2FsZW5kYXIuSkFOVUFSWSkgKyAiLSIgKyBkb20gKworICAgICAgICAgICAgICAgICAgICAiID0+ICIgKyBjYWxNaWxsaXMgKworICAgICAgICAgICAgICAgICAgICAiICgiICsgKChmbG9hdClkZWx0YS9PTkVfREFZKSArICIgZGF5IGRlbHRhKSA9PiAiICsKKyAgICAgICAgICAgICAgICAgICAgeWVhcjIgKyAiLSIgKyAobW9udGgyKzEtQ2FsZW5kYXIuSkFOVUFSWSkgKyAiLSIgKyBkb20yOworICAgICAgICAgICAgICAgIGlmIChkZWx0YSAhPSAwIHx8IHllYXIgIT0geWVhcjIgfHwgbW9udGggIT0gbW9udGgyIHx8CisgICAgICAgICAgICAgICAgICAgIGRvbSAhPSBkb20yKSBlcnJsbihzICsgIiBGQUlMIik7CisgICAgICAgICAgICAgICAgZWxzZSBsb2dsbihzKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBUZXN0IEp1bGlhbiBjb21wdXRhdGlvbgorICAgICAgICAgICAgICAgIHllYXIgPSBEQVRBW2krNF07CisgICAgICAgICAgICAgICAgbW9udGggPSBEQVRBW2krNV07CisgICAgICAgICAgICAgICAgZG9tID0gREFUQVtpKzZdOworICAgICAgICAgICAgICAgIGNhbC5zZXRHcmVnb3JpYW5DaGFuZ2UoUFVSRV9KVUxJQU4pOworICAgICAgICAgICAgICAgIGNhbC5jbGVhcigpOworICAgICAgICAgICAgICAgIGNhbC5zZXQoeWVhciwgbW9udGgsIGRvbSk7CisgICAgICAgICAgICAgICAgY2FsTWlsbGlzID0gY2FsLmdldFRpbWUoKS5nZXRUaW1lKCk7CisgICAgICAgICAgICAgICAgZGVsdGEgPSBjYWxNaWxsaXMgLSBtaWxsaXM7CisgICAgICAgICAgICAgICAgY2FsLnNldFRpbWUobmV3IERhdGUobWlsbGlzKSk7CisgICAgICAgICAgICAgICAgeWVhcjIgPSBjYWwuZ2V0KENhbGVuZGFyLllFQVIpOworICAgICAgICAgICAgICAgIG1vbnRoMiA9IGNhbC5nZXQoQ2FsZW5kYXIuTU9OVEgpOworICAgICAgICAgICAgICAgIGRvbTIgPSBjYWwuZ2V0KENhbGVuZGFyLkRBWV9PRl9NT05USCk7CisgICAgICAgICAgICAgICAgcyA9ICJKICIgKyB5ZWFyICsgIi0iICsgKG1vbnRoKzEtQ2FsZW5kYXIuSkFOVUFSWSkgKyAiLSIgKyBkb20gKworICAgICAgICAgICAgICAgICAgICAiID0+ICIgKyBjYWxNaWxsaXMgKworICAgICAgICAgICAgICAgICAgICAiICgiICsgKChmbG9hdClkZWx0YS9PTkVfREFZKSArICIgZGF5IGRlbHRhKSA9PiAiICsKKyAgICAgICAgICAgICAgICAgICAgeWVhcjIgKyAiLSIgKyAobW9udGgyKzEtQ2FsZW5kYXIuSkFOVUFSWSkgKyAiLSIgKyBkb20yOworICAgICAgICAgICAgICAgIGlmIChkZWx0YSAhPSAwIHx8IHllYXIgIT0geWVhcjIgfHwgbW9udGggIT0gbW9udGgyIHx8CisgICAgICAgICAgICAgICAgICAgIGRvbSAhPSBkb20yKSBlcnJsbihzICsgIiBGQUlMIik7CisgICAgICAgICAgICAgICAgZWxzZSBsb2dsbihzKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgamF2YS51dGlsLkNhbGVuZGFyIHRlbXBjYWwgPSBqYXZhLnV0aWwuQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTsKKyAgICAgICAgICAgIHRlbXBjYWwuY2xlYXIoKTsKKyAgICAgICAgICAgIHRlbXBjYWwuc2V0KDE1ODIsIENhbGVuZGFyLk9DVE9CRVIsIDE1KTsKKyAgICAgICAgICAgIGNhbC5zZXRHcmVnb3JpYW5DaGFuZ2UodGVtcGNhbC5nZXRUaW1lKCkpOworICAgICAgICAgICAgYXV4TWFwcGluZyhjYWwsIDE1ODIsIENhbGVuZGFyLk9DVE9CRVIsIDQpOworICAgICAgICAgICAgYXV4TWFwcGluZyhjYWwsIDE1ODIsIENhbGVuZGFyLk9DVE9CRVIsIDE1KTsKKyAgICAgICAgICAgIGF1eE1hcHBpbmcoY2FsLCAxNTgyLCBDYWxlbmRhci5PQ1RPQkVSLCAxNik7CisgICAgICAgICAgICBmb3IgKGludCB5PTgwMDsgeTwzMDAwOyB5Kz0xKyhpbnQpMTAwKk1hdGgucmFuZG9tKCkpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBtPUNhbGVuZGFyLkpBTlVBUlk7IG08PUNhbGVuZGFyLkRFQ0VNQkVSOyArK20pIHsKKyAgICAgICAgICAgICAgICAgICAgYXV4TWFwcGluZyhjYWwsIHksIG0sIDE1KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZmluYWxseSB7CisgICAgICAgICAgICBUaW1lWm9uZS5zZXREZWZhdWx0KHNhdmVab25lKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBwcml2YXRlIHZvaWQgYXV4TWFwcGluZyhDYWxlbmRhciBjYWwsIGludCB5LCBpbnQgbSwgaW50IGQpIHsKKyAgICAgICAgY2FsLmNsZWFyKCk7CisgICAgICAgIGNhbC5zZXQoeSwgbSwgZCk7CisgICAgICAgIGxvbmcgbWlsbGlzID0gY2FsLmdldFRpbWUoKS5nZXRUaW1lKCk7CisgICAgICAgIGNhbC5zZXRUaW1lKG5ldyBEYXRlKG1pbGxpcykpOworICAgICAgICBpbnQgeWVhcjIgPSBjYWwuZ2V0KENhbGVuZGFyLllFQVIpOworICAgICAgICBpbnQgbW9udGgyID0gY2FsLmdldChDYWxlbmRhci5NT05USCk7CisgICAgICAgIGludCBkb20yID0gY2FsLmdldChDYWxlbmRhci5EQVlfT0ZfTU9OVEgpOworICAgICAgICBpZiAoeSAhPSB5ZWFyMiB8fCBtICE9IG1vbnRoMiB8fCBkb20yICE9IGQpCisgICAgICAgICAgICBlcnJsbigiUm91bmQtdHJpcCBmYWlsdXJlOiAiICsgeSArICItIiArIChtKzEpICsgIi0iK2QrIiA9Pm1zPT4gIiArCisgICAgICAgICAgICAgICAgICB5ZWFyMiArICItIiArIChtb250aDIrMSkgKyAiLSIgKyBkb20yKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0R2VuZXJpY0FQSSgpIHsKKyAgICAgICAgLy8gbm90IHVzZWQgU3RyaW5nIHN0cjsKKworICAgICAgICBqYXZhLnV0aWwuQ2FsZW5kYXIgdGVtcGNhbCA9IGphdmEudXRpbC5DYWxlbmRhci5nZXRJbnN0YW5jZSgpOworICAgICAgICB0ZW1wY2FsLmNsZWFyKCk7CisgICAgICAgIHRlbXBjYWwuc2V0KDE5OTAsIENhbGVuZGFyLkFQUklMLCAxNSk7CisgICAgICAgIERhdGUgd2hlbiA9IHRlbXBjYWwuZ2V0VGltZSgpOworCisgICAgICAgIFN0cmluZyB0emlkID0gIlRlc3Rab25lIjsKKyAgICAgICAgaW50IHR6b2Zmc2V0ID0gMTIzNDAwOworCisgICAgICAgIFNpbXBsZVRpbWVab25lIHpvbmUgPSBuZXcgU2ltcGxlVGltZVpvbmUodHpvZmZzZXQsIHR6aWQpOworICAgICAgICBDYWxlbmRhciBjYWwgPSAoQ2FsZW5kYXIpQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKFNpbXBsZVRpbWVab25lKXpvbmUuY2xvbmUoKSk7CisKKyAgICAgICAgaWYgKCF6b25lLmVxdWFscyhjYWwuZ2V0VGltZVpvbmUoKSkpIGVycmxuKCJGQUlMOiBDYWxlbmRhci5nZXRUaW1lWm9uZSBmYWlsZWQiKTsKKworICAgICAgICBDYWxlbmRhciBjYWwyID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoY2FsLmdldFRpbWVab25lKCkpOworCisgICAgICAgIGNhbC5zZXRUaW1lKHdoZW4pOworICAgICAgICBjYWwyLnNldFRpbWUod2hlbik7CisKKyAgICAgICAgaWYgKCEoY2FsLmVxdWFscyhjYWwyKSkpIGVycmxuKCJGQUlMOiBDYWxlbmRhci5vcGVyYXRvcj09IGZhaWxlZCIpOworICAgICAgICAvLyBpZiAoKCpjYWwgIT0gKmNhbDIpKSAgZXJybG4oIkZBSUw6IENhbGVuZGFyLm9wZXJhdG9yIT0gZmFpbGVkIik7CisgICAgICAgIGlmICghY2FsLmVxdWFscyhjYWwyKSB8fAorICAgICAgICAgICAgY2FsLmJlZm9yZShjYWwyKSB8fAorICAgICAgICAgICAgY2FsLmFmdGVyKGNhbDIpKSBlcnJsbigiRkFJTDogZXF1YWxzL2JlZm9yZS9hZnRlciBmYWlsZWQiKTsKKworICAgICAgICBjYWwyLnNldFRpbWUobmV3IERhdGUod2hlbi5nZXRUaW1lKCkgKyAxMDAwKSk7CisgICAgICAgIGlmIChjYWwuZXF1YWxzKGNhbDIpIHx8CisgICAgICAgICAgICBjYWwyLmJlZm9yZShjYWwpIHx8CisgICAgICAgICAgICBjYWwuYWZ0ZXIoY2FsMikpIGVycmxuKCJGQUlMOiBlcXVhbHMvYmVmb3JlL2FmdGVyIGZhaWxlZCIpOworCisgICAgICAgIGNhbC5yb2xsKENhbGVuZGFyLlNFQ09ORCwgdHJ1ZSk7CisgICAgICAgIGlmICghY2FsLmVxdWFscyhjYWwyKSB8fAorICAgICAgICAgICAgY2FsLmJlZm9yZShjYWwyKSB8fAorICAgICAgICAgICAgY2FsLmFmdGVyKGNhbDIpKSBlcnJsbigiRkFJTDogZXF1YWxzL2JlZm9yZS9hZnRlciBmYWlsZWQiKTsKKworICAgICAgICAvLyBSb2xsIGJhY2sgdG8gSmFudWFyeQorICAgICAgICBjYWwucm9sbChDYWxlbmRhci5NT05USCwgKGludCkoMSArIENhbGVuZGFyLkRFQ0VNQkVSIC0gY2FsLmdldChDYWxlbmRhci5NT05USCkpKTsKKyAgICAgICAgaWYgKGNhbC5lcXVhbHMoY2FsMikgfHwKKyAgICAgICAgICAgIGNhbDIuYmVmb3JlKGNhbCkgfHwKKyAgICAgICAgICAgIGNhbC5hZnRlcihjYWwyKSkgZXJybG4oIkZBSUw6IGVxdWFscy9iZWZvcmUvYWZ0ZXIgZmFpbGVkIik7CisKKyAgICAgICAgLy8gQysrIG9ubHkKKyAgICAgICAgLyogVGltZVpvbmUgeiA9IGNhbC5vcnBoYW5UaW1lWm9uZSgpOworICAgICAgICAgICBpZiAoei5nZXRJRChzdHIpICE9IHR6aWQgfHwKKyAgICAgICAgICAgei5nZXRSYXdPZmZzZXQoKSAhPSB0em9mZnNldCkKKyAgICAgICAgICAgZXJybG4oIkZBSUw6IG9ycGhhblRpbWVab25lIGZhaWxlZCIpOworICAgICAgICAgICAqLworCisgICAgICAgIGZvciAoaW50IGk9MDsgaTwyOyArK2kpIHsKKyAgICAgICAgICAgIGJvb2xlYW4gbGVuaWVudCA9ICggaSA+IDAgKTsKKyAgICAgICAgICAgIGNhbC5zZXRMZW5pZW50KGxlbmllbnQpOworICAgICAgICAgICAgaWYgKGxlbmllbnQgIT0gY2FsLmlzTGVuaWVudCgpKSBlcnJsbigiRkFJTDogc2V0TGVuaWVudC9pc0xlbmllbnQgZmFpbGVkIik7CisgICAgICAgICAgICAvLyBMYXRlcjogQ2hlY2sgZm9yIGxlbmllbnQgYmVoYXZpb3IKKyAgICAgICAgfQorCisgICAgICAgIGludCBpOworICAgICAgICBmb3IgKGk9Q2FsZW5kYXIuU1VOREFZOyBpPD1DYWxlbmRhci5TQVRVUkRBWTsgKytpKSB7CisgICAgICAgICAgICBjYWwuc2V0Rmlyc3REYXlPZldlZWsoaSk7CisgICAgICAgICAgICBpZiAoY2FsLmdldEZpcnN0RGF5T2ZXZWVrKCkgIT0gaSkgZXJybG4oIkZBSUw6IHNldC9nZXRGaXJzdERheU9mV2VlayBmYWlsZWQiKTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoaT0wOyBpPD03OyArK2kpIHsKKyAgICAgICAgICAgIGNhbC5zZXRNaW5pbWFsRGF5c0luRmlyc3RXZWVrKGkpOworICAgICAgICAgICAgaWYgKGNhbC5nZXRNaW5pbWFsRGF5c0luRmlyc3RXZWVrKCkgIT0gaSkgZXJybG4oIkZBSUw6IHNldC9nZXRGaXJzdERheU9mV2VlayBmYWlsZWQiKTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoaT0wOyBpPGNhbC5nZXRGaWVsZENvdW50KCk7ICsraSkgeworICAgICAgICAgICAgaWYgKGNhbC5nZXRNaW5pbXVtKGkpICE9IGNhbC5nZXRHcmVhdGVzdE1pbmltdW0oaSkpCisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6IGdldE1pbmltdW0gZG9lc24ndCBtYXRjaCBnZXRHcmVhdGVzdE1pbmltdW0gZm9yIGZpZWxkICIgKyBpKTsKKyAgICAgICAgICAgIGlmIChjYWwuZ2V0TGVhc3RNYXhpbXVtKGkpID4gY2FsLmdldE1heGltdW0oaSkpCisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6IGdldExlYXN0TWF4aW11bSBsYXJnZXIgdGhhbiBnZXRNYXhpbXVtIGZvciBmaWVsZCAiICsgaSk7CisgICAgICAgICAgICBpZiAoY2FsLmdldE1pbmltdW0oaSkgPj0gY2FsLmdldE1heGltdW0oaSkpCisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6IGdldE1pbmltdW0gbm90IGxlc3MgdGhhbiBnZXRNYXhpbXVtIGZvciBmaWVsZCAiICsgaSk7CisgICAgICAgIH0KKworICAgICAgICBjYWwuc2V0VGltZVpvbmUoVGltZVpvbmUuZ2V0RGVmYXVsdCgpKTsKKyAgICAgICAgY2FsLmNsZWFyKCk7CisgICAgICAgIGNhbC5zZXQoMTk4NCwgNSwgMjQpOworICAgICAgICB0ZW1wY2FsLmNsZWFyKCk7CisgICAgICAgIHRlbXBjYWwuc2V0KDE5ODQsIDUsIDI0KTsKKyAgICAgICAgaWYgKGNhbC5nZXRUaW1lKCkuZ2V0VGltZSgpICE9IHRlbXBjYWwuZ2V0VGltZSgpLmdldFRpbWUoKSkgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IENhbGVuZGFyLnNldCgzIGFyZ3MpIGZhaWxlZCIpOworICAgICAgICAgICAgbG9nbG4oIiBHb3Q6ICIgKyBjYWwuZ2V0VGltZSgpICsgIiAgRXhwZWN0ZWQ6ICIgKyB0ZW1wY2FsLmdldFRpbWUoKSk7CisgICAgICAgIH0KKworICAgICAgICBjYWwuY2xlYXIoKTsKKyAgICAgICAgY2FsLnNldCgxOTg1LCAzLCAyLCAxMSwgNDkpOworICAgICAgICB0ZW1wY2FsLmNsZWFyKCk7CisgICAgICAgIHRlbXBjYWwuc2V0KDE5ODUsIDMsIDIsIDExLCA0OSk7CisgICAgICAgIGlmIChjYWwuZ2V0VGltZSgpLmdldFRpbWUoKSAhPSB0ZW1wY2FsLmdldFRpbWUoKS5nZXRUaW1lKCkpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBDYWxlbmRhci5zZXQoNSBhcmdzKSBmYWlsZWQiKTsKKyAgICAgICAgICAgIGxvZ2xuKCIgR290OiAiICsgY2FsLmdldFRpbWUoKSArICIgIEV4cGVjdGVkOiAiICsgdGVtcGNhbC5nZXRUaW1lKCkpOworICAgICAgICB9CisKKyAgICAgICAgY2FsLmNsZWFyKCk7CisgICAgICAgIGNhbC5zZXQoMTk5NSwgOSwgMTIsIDEsIDM5LCA1NSk7CisgICAgICAgIHRlbXBjYWwuY2xlYXIoKTsKKyAgICAgICAgdGVtcGNhbC5zZXQoMTk5NSwgOSwgMTIsIDEsIDM5LCA1NSk7CisgICAgICAgIGlmIChjYWwuZ2V0VGltZSgpLmdldFRpbWUoKSAhPSB0ZW1wY2FsLmdldFRpbWUoKS5nZXRUaW1lKCkpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBDYWxlbmRhci5zZXQoNiBhcmdzKSBmYWlsZWQiKTsKKyAgICAgICAgICAgIGxvZ2xuKCIgR290OiAiICsgY2FsLmdldFRpbWUoKSArICIgIEV4cGVjdGVkOiAiICsgdGVtcGNhbC5nZXRUaW1lKCkpOworICAgICAgICB9CisKKyAgICAgICAgY2FsLmdldFRpbWUoKTsKKyAgICAgICAgLy8gVGhpcyB0ZXN0IGlzIHN0cmFuZ2UgLS0gd2h5IGRvIHdlIGV4cGVjdCBjZXJ0YWluIGZpZWxkcyB0byBiZSBzZXQsIGFuZAorICAgICAgICAvLyBvdGhlcnMgbm90IHRvIGJlPyAgUmV2aXNpdCB0aGUgYXBwcm9wcmlhdGVuZXNzIG9mIHRoaXMuICAtIEFsYW4gTkVXQ0FMCisgICAgICAgIGZvciAoaT0wOyBpPGNhbC5nZXRGaWVsZENvdW50KCk7ICsraSkgeworICAgICAgICAgICAgc3dpdGNoKGkpIHsKKyAgICAgICAgICAgIGNhc2UgQ2FsZW5kYXIuWUVBUjogY2FzZSBDYWxlbmRhci5NT05USDogY2FzZSBDYWxlbmRhci5EQVRFOgorICAgICAgICAgICAgY2FzZSBDYWxlbmRhci5IT1VSX09GX0RBWTogY2FzZSBDYWxlbmRhci5NSU5VVEU6IGNhc2UgQ2FsZW5kYXIuU0VDT05EOgorICAgICAgICAgICAgY2FzZSBDYWxlbmRhci5FWFRFTkRFRF9ZRUFSOgorICAgICAgICAgICAgICAgIGlmICghY2FsLmlzU2V0KGkpKSBlcnJsbigiRkFJTDogIiArIEZJRUxEX05BTUVbaV0gKyAiIGlzIG5vdCBzZXQiKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgaWYgKGNhbC5pc1NldChpKSkgZXJybG4oIkZBSUw6ICIgKyBGSUVMRF9OQU1FW2ldICsgIiBpcyBzZXQiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhbC5jbGVhcihpKTsKKyAgICAgICAgICAgIGlmIChjYWwuaXNTZXQoaSkpIGVycmxuKCJGQUlMOiBDYWxlbmRhci5jbGVhci9pc1NldCBmYWlsZWQiKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGRlbGV0ZSBjYWw7CisgICAgICAgIC8vIGRlbGV0ZSBjYWwyOworCisgICAgICAgIExvY2FsZVtdIGxvYyA9IENhbGVuZGFyLmdldEF2YWlsYWJsZUxvY2FsZXMoKTsKKyAgICAgICAgbG9uZyBjb3VudCA9IGxvYy5sZW5ndGg7CisgICAgICAgIGlmIChjb3VudCA8IDEgfHwgbG9jID09IG51bGwpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBnZXRBdmFpbGFibGVMb2NhbGVzIGZhaWxlZCIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZm9yIChpPTA7IGk8Y291bnQ7ICsraSkgeworICAgICAgICAgICAgICAgIGNhbCA9IENhbGVuZGFyLmdldEluc3RhbmNlKGxvY1tpXSk7CisgICAgICAgICAgICAgICAgLy8gZGVsZXRlIGNhbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGNhbCA9IENhbGVuZGFyLmdldEluc3RhbmNlKFRpbWVab25lLmdldERlZmF1bHQoKSwgTG9jYWxlLkVOR0xJU0gpOworICAgICAgICAvLyBkZWxldGUgY2FsOworCisgICAgICAgIGNhbCA9IENhbGVuZGFyLmdldEluc3RhbmNlKHpvbmUsIExvY2FsZS5FTkdMSVNIKTsKKyAgICAgICAgLy8gZGVsZXRlIGNhbDsKKworICAgICAgICBHcmVnb3JpYW5DYWxlbmRhciBnYyA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcih6b25lKTsKKyAgICAgICAgLy8gZGVsZXRlIGdjOworCisgICAgICAgIGdjID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKExvY2FsZS5FTkdMSVNIKTsKKyAgICAgICAgLy8gZGVsZXRlIGdjOworCisgICAgICAgIGdjID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKExvY2FsZS5FTkdMSVNIKTsKKyAgICAgICAgLy8gZGVsZXRlIGdjOworCisgICAgICAgIGdjID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKHpvbmUsIExvY2FsZS5FTkdMSVNIKTsKKyAgICAgICAgLy8gZGVsZXRlIGdjOworCisgICAgICAgIGdjID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKHpvbmUpOworICAgICAgICAvLyBkZWxldGUgZ2M7CisKKyAgICAgICAgZ2MgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoMTk5OCwgMTAsIDE0LCAyMSwgNDMpOworICAgICAgICB0ZW1wY2FsLmNsZWFyKCk7CisgICAgICAgIHRlbXBjYWwuc2V0KDE5OTgsIDEwLCAxNCwgMjEsIDQzKTsKKyAgICAgICAgaWYgKGdjLmdldFRpbWUoKS5nZXRUaW1lKCkgIT0gdGVtcGNhbC5nZXRUaW1lKCkuZ2V0VGltZSgpKQorICAgICAgICAgICAgZXJybG4oIkZBSUw6IG5ldyBHcmVnb3JpYW5DYWxlbmRhcih5bWRobSkgZmFpbGVkIik7CisgICAgICAgIC8vIGRlbGV0ZSBnYzsKKworICAgICAgICBnYyA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcigxOTk4LCAxMCwgMTQsIDIxLCA0MywgNTUpOworICAgICAgICB0ZW1wY2FsLmNsZWFyKCk7CisgICAgICAgIHRlbXBjYWwuc2V0KDE5OTgsIDEwLCAxNCwgMjEsIDQzLCA1NSk7CisgICAgICAgIGlmIChnYy5nZXRUaW1lKCkuZ2V0VGltZSgpICE9IHRlbXBjYWwuZ2V0VGltZSgpLmdldFRpbWUoKSkKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoeW1kaG1zKSBmYWlsZWQiKTsKKworICAgICAgICAvLyBDKysgb25seToKKyAgICAgICAgLy8gR3JlZ29yaWFuQ2FsZW5kYXIgZ2MyID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKExvY2FsZS5FTkdMSVNIKTsKKyAgICAgICAgLy8gZ2MyID0gZ2M7CisgICAgICAgIC8vIGlmIChnYzIgIT0gZ2MgfHwgIShnYzIgPT0gZ2MpKSBlcnJsbigiRkFJTDogR3JlZ29yaWFuQ2FsZW5kYXIgYXNzaWdubWVudC9vcGVyYXRvcj09L29wZXJhdG9yIT0gZmFpbGVkIik7CisgICAgICAgIC8vIGRlbGV0ZSBnYzsKKyAgICAgICAgLy8gZGVsZXRlIHo7CisgICAgfQorCisgICAgLy8gVmVyaWZ5IFJvZ2VyIFdlYnN0ZXIncyBidWcKKyAgICBwdWJsaWMgdm9pZCBUZXN0Um9nKCkgeworICAgICAgICBHcmVnb3JpYW5DYWxlbmRhciBnYyA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcigpOworCisgICAgICAgIGludCB5ZWFyID0gMTk5NywgbW9udGggPSBDYWxlbmRhci5BUFJJTCwgZGF0ZSA9IDE7CisgICAgICAgIGdjLnNldCh5ZWFyLCBtb250aCwgZGF0ZSk7IC8vIEFwcmlsIDEsIDE5OTcKKworICAgICAgICBnYy5zZXQoQ2FsZW5kYXIuSE9VUl9PRl9EQVksIDIzKTsKKyAgICAgICAgZ2Muc2V0KENhbGVuZGFyLk1JTlVURSwgMCk7CisgICAgICAgIGdjLnNldChDYWxlbmRhci5TRUNPTkQsIDApOworICAgICAgICBnYy5zZXQoQ2FsZW5kYXIuTUlMTElTRUNPTkQsIDApOworCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgOTsgaSsrLCBnYy5hZGQoQ2FsZW5kYXIuREFURSwgMSkpIHsKKyAgICAgICAgICAgIGlmIChnYy5nZXQoQ2FsZW5kYXIuWUVBUikgIT0geWVhciB8fAorICAgICAgICAgICAgICAgIGdjLmdldChDYWxlbmRhci5NT05USCkgIT0gbW9udGggfHwKKyAgICAgICAgICAgICAgICBnYy5nZXQoQ2FsZW5kYXIuREFURSkgIT0gKGRhdGUgKyBpKSkKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogRGF0ZSAiICsgZ2MuZ2V0VGltZSgpICsgIiB3cm9uZyIpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gVmVyaWZ5IERBWV9PRl9XRUVLCisgICAgcHVibGljIHZvaWQgVGVzdERPVzk0MygpIHsKKyAgICAgICAgZG93VGVzdChmYWxzZSk7CisgICAgICAgIGRvd1Rlc3QodHJ1ZSk7CisgICAgfQorCisgICAgdm9pZCBkb3dUZXN0KGJvb2xlYW4gbGVuaWVudCkgeworICAgICAgICBHcmVnb3JpYW5DYWxlbmRhciBjYWwgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoKTsKKyAgICAgICAgY2FsLnNldCgxOTk3LCBDYWxlbmRhci5BVUdVU1QsIDEyKTsgLy8gV2VkbmVzZGF5CisgICAgICAgIGNhbC5nZXRUaW1lKCk7IC8vIEZvcmNlIHVwZGF0ZQorICAgICAgICBjYWwuc2V0TGVuaWVudChsZW5pZW50KTsKKyAgICAgICAgY2FsLnNldCgxOTk2LCBDYWxlbmRhci5ERUNFTUJFUiwgMSk7IC8vIFNldCB0aGUgZGF0ZSB0byBiZSBEZWNlbWJlciAxLCAxOTk2CisgICAgICAgIGludCBkb3cgPSBjYWwuZ2V0KENhbGVuZGFyLkRBWV9PRl9XRUVLKTsKKyAgICAgICAgaW50IG1pbiA9IGNhbC5nZXRNaW5pbXVtKENhbGVuZGFyLkRBWV9PRl9XRUVLKTsKKyAgICAgICAgaW50IG1heCA9IGNhbC5nZXRNYXhpbXVtKENhbGVuZGFyLkRBWV9PRl9XRUVLKTsKKyAgICAgICAgaWYgKGRvdyA8IG1pbiB8fCBkb3cgPiBtYXgpIGVycmxuKCJGQUlMOiBEYXkgb2Ygd2VlayAiICsgZG93ICsgIiBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgaWYgKGRvdyAhPSBDYWxlbmRhci5TVU5EQVkpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMMjogRGF5IG9mIHdlZWsgc2hvdWxkIGJlIFNVTkRBWTsgaXMgIiArIGRvdyArICI6ICIgKyBjYWwuZ2V0VGltZSgpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAobWluICE9IENhbGVuZGFyLlNVTkRBWSB8fCBtYXggIT0gQ2FsZW5kYXIuU0FUVVJEQVkpIGVycmxuKCJGQUlMOiBNaW4vbWF4IGJhZCIpOworICAgIH0KKworICAgIC8vIFZlcmlmeSB0aGF0IHRoZSBjbG9uZSBtZXRob2QgcHJvZHVjZXMgZGlzdGluY3Qgb2JqZWN0cyB3aXRoIG5vCisgICAgLy8gdW5pbnRlbnRpb25hbGx5IHNoYXJlZCBmaWVsZHMuCisgICAgcHVibGljIHZvaWQgVGVzdENsb25lc1VuaXF1ZTkwOCgpIHsKKyAgICAgICAgQ2FsZW5kYXIgYyA9IENhbGVuZGFyLmdldEluc3RhbmNlKCk7CisgICAgICAgIENhbGVuZGFyIGQgPSAoQ2FsZW5kYXIpYy5jbG9uZSgpOworICAgICAgICBjLnNldChDYWxlbmRhci5NSUxMSVNFQ09ORCwgMTIzKTsKKyAgICAgICAgZC5zZXQoQ2FsZW5kYXIuTUlMTElTRUNPTkQsIDQ1Nik7CisgICAgICAgIGlmIChjLmdldChDYWxlbmRhci5NSUxMSVNFQ09ORCkgIT0gMTIzIHx8CisgICAgICAgICAgICBkLmdldChDYWxlbmRhci5NSUxMSVNFQ09ORCkgIT0gNDU2KSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogQ2xvbmVzIHNoYXJlIGZpZWxkcyIpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gVmVyaWZ5IGVmZmVjdCBvZiBHcmVnb3JpYW4gY3V0b2ZmIHZhbHVlCisgICAgcHVibGljIHZvaWQgVGVzdEdyZWdvcmlhbkNoYW5nZTc2OCgpIHsKKyAgICAgICAgYm9vbGVhbiBiOworICAgICAgICBHcmVnb3JpYW5DYWxlbmRhciBjID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKCk7CisgICAgICAgIGxvZ2xuKCJXaXRoIGN1dG9mZiAiICsgYy5nZXRHcmVnb3JpYW5DaGFuZ2UoKSk7CisgICAgICAgIGxvZ2xuKCIgaXNMZWFwWWVhcigxODAwKSA9ICIgKyAoYj1jLmlzTGVhcFllYXIoMTgwMCkpKTsKKyAgICAgICAgbG9nbG4oIiAoc2hvdWxkIGJlIEZBTFNFKSIpOworICAgICAgICBpZiAoYiAhPSBmYWxzZSkgZXJybG4oIkZBSUwiKTsKKyAgICAgICAgamF2YS51dGlsLkNhbGVuZGFyIHRlbXBjYWwgPSBqYXZhLnV0aWwuQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTsKKyAgICAgICAgdGVtcGNhbC5jbGVhcigpOworICAgICAgICB0ZW1wY2FsLnNldCgxOTAwLCAwLCAxKTsKKyAgICAgICAgYy5zZXRHcmVnb3JpYW5DaGFuZ2UodGVtcGNhbC5nZXRUaW1lKCkpOyAvLyBKYW4gMSAxOTAwCisgICAgICAgIGxvZ2xuKCJXaXRoIGN1dG9mZiAiICsgYy5nZXRHcmVnb3JpYW5DaGFuZ2UoKSk7CisgICAgICAgIGxvZ2xuKCIgaXNMZWFwWWVhcigxODAwKSA9ICIgKyAoYj1jLmlzTGVhcFllYXIoMTgwMCkpKTsKKyAgICAgICAgbG9nbG4oIiAoc2hvdWxkIGJlIFRSVUUpIik7CisgICAgICAgIGlmIChiICE9IHRydWUpIGVycmxuKCJGQUlMIik7CisgICAgfQorCisgICAgLy8gVGVzdCB0aGUgY29ycmVjdCBiZWhhdmlvciBvZiB0aGUgZGlzYW1iaWd1YXRpb24gYWxnb3JpdGhtLgorICAgIHB1YmxpYyB2b2lkIFRlc3REaXNhbWJpZ3VhdGlvbjc2NSgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBDYWxlbmRhciBjID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTsKKyAgICAgICAgYy5zZXRMZW5pZW50KGZhbHNlKTsKKworICAgICAgICBjLmNsZWFyKCk7CisgICAgICAgIGMuc2V0KENhbGVuZGFyLllFQVIsIDE5OTcpOworICAgICAgICBjLnNldChDYWxlbmRhci5NT05USCwgQ2FsZW5kYXIuSlVORSk7CisgICAgICAgIGMuc2V0KENhbGVuZGFyLkRBVEUsIDMpOworCisgICAgICAgIHZlcmlmeTc2NSgiMTk5NyB0aGlyZCBkYXkgb2YgSnVuZSA9ICIsIGMsIDE5OTcsIENhbGVuZGFyLkpVTkUsIDMpOworCisgICAgICAgIGMuY2xlYXIoKTsKKyAgICAgICAgYy5zZXQoQ2FsZW5kYXIuWUVBUiwgMTk5Nyk7CisgICAgICAgIGMuc2V0KENhbGVuZGFyLkRBWV9PRl9XRUVLLCBDYWxlbmRhci5UVUVTREFZKTsKKyAgICAgICAgYy5zZXQoQ2FsZW5kYXIuTU9OVEgsIENhbGVuZGFyLkpVTkUpOworICAgICAgICBjLnNldChDYWxlbmRhci5EQVlfT0ZfV0VFS19JTl9NT05USCwgMSk7CisgICAgICAgIHZlcmlmeTc2NSgiMTk5NyBmaXJzdCBUdWVzZGF5IGluIEp1bmUgPSAiLCBjLCAxOTk3LCBDYWxlbmRhci5KVU5FLCAzKTsKKworICAgICAgICBjLmNsZWFyKCk7CisgICAgICAgIGMuc2V0KENhbGVuZGFyLllFQVIsIDE5OTcpOworICAgICAgICBjLnNldChDYWxlbmRhci5EQVlfT0ZfV0VFSywgQ2FsZW5kYXIuVFVFU0RBWSk7CisgICAgICAgIGMuc2V0KENhbGVuZGFyLk1PTlRILCBDYWxlbmRhci5KVU5FKTsKKyAgICAgICAgYy5zZXQoQ2FsZW5kYXIuREFZX09GX1dFRUtfSU5fTU9OVEgsIC0xKTsKKyAgICAgICAgdmVyaWZ5NzY1KCIxOTk3IGxhc3QgVHVlc2RheSBpbiBKdW5lID0gIiwgYywgMTk5NywgQ2FsZW5kYXIuSlVORSwgMjQpOworCisgICAgICAgIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGMuY2xlYXIoKTsKKyAgICAgICAgICAgIGMuc2V0KENhbGVuZGFyLllFQVIsIDE5OTcpOworICAgICAgICAgICAgYy5zZXQoQ2FsZW5kYXIuREFZX09GX1dFRUssIENhbGVuZGFyLlRVRVNEQVkpOworICAgICAgICAgICAgYy5zZXQoQ2FsZW5kYXIuTU9OVEgsIENhbGVuZGFyLkpVTkUpOworICAgICAgICAgICAgYy5zZXQoQ2FsZW5kYXIuREFZX09GX1dFRUtfSU5fTU9OVEgsIDApOworICAgICAgICAgICAgYy5nZXRUaW1lKCk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgZSA9IGV4OworICAgICAgICB9CisgICAgICAgIHZlcmlmeTc2NSgiMTk5NyB6ZXJvLXRoIFR1ZXNkYXkgaW4gSnVuZSA9ICIsIGUsIGMpOworCisgICAgICAgIGMuY2xlYXIoKTsKKyAgICAgICAgYy5zZXQoQ2FsZW5kYXIuWUVBUiwgMTk5Nyk7CisgICAgICAgIGMuc2V0KENhbGVuZGFyLkRBWV9PRl9XRUVLLCBDYWxlbmRhci5UVUVTREFZKTsKKyAgICAgICAgYy5zZXQoQ2FsZW5kYXIuTU9OVEgsIENhbGVuZGFyLkpVTkUpOworICAgICAgICBjLnNldChDYWxlbmRhci5XRUVLX09GX01PTlRILCAxKTsKKyAgICAgICAgdmVyaWZ5NzY1KCIxOTk3IFR1ZXNkYXkgaW4gd2VlayAxIG9mIEp1bmUgPSAiLCBjLCAxOTk3LCBDYWxlbmRhci5KVU5FLCAzKTsKKworICAgICAgICBjLmNsZWFyKCk7CisgICAgICAgIGMuc2V0KENhbGVuZGFyLllFQVIsIDE5OTcpOworICAgICAgICBjLnNldChDYWxlbmRhci5EQVlfT0ZfV0VFSywgQ2FsZW5kYXIuVFVFU0RBWSk7CisgICAgICAgIGMuc2V0KENhbGVuZGFyLk1PTlRILCBDYWxlbmRhci5KVU5FKTsKKyAgICAgICAgYy5zZXQoQ2FsZW5kYXIuV0VFS19PRl9NT05USCwgNSk7CisgICAgICAgIHZlcmlmeTc2NSgiMTk5NyBUdWVzZGF5IGluIHdlZWsgNSBvZiBKdW5lID0gIiwgYywgMTk5NywgQ2FsZW5kYXIuSlVMWSwgMSk7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGMuY2xlYXIoKTsKKyAgICAgICAgICAgIGMuc2V0KENhbGVuZGFyLllFQVIsIDE5OTcpOworICAgICAgICAgICAgYy5zZXQoQ2FsZW5kYXIuREFZX09GX1dFRUssIENhbGVuZGFyLlRVRVNEQVkpOworICAgICAgICAgICAgYy5zZXQoQ2FsZW5kYXIuTU9OVEgsIENhbGVuZGFyLkpVTkUpOworICAgICAgICAgICAgYy5zZXQoQ2FsZW5kYXIuV0VFS19PRl9NT05USCwgMCk7CisgICAgICAgICAgICB2ZXJpZnk3NjUoIjE5OTcgVHVlc2RheSBpbiB3ZWVrIDAgb2YgSnVuZSA9ICIsIGMsIDE5OTcsIENhbGVuZGFyLk1BWSwgMjcpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBFeGNlcHRpb24gc2VlbjoiKTsKKyAgICAgICAgICAgIC8vIGV4LnByaW50U3RhY2tUcmFjZShsb2cpOworICAgICAgICB9CisKKyAgICAgICAgYy5jbGVhcigpOworICAgICAgICBjLnNldChDYWxlbmRhci5ZRUFSLCAxOTk3KTsKKyAgICAgICAgYy5zZXQoQ2FsZW5kYXIuREFZX09GX1dFRUssIENhbGVuZGFyLlRVRVNEQVkpOworICAgICAgICBjLnNldChDYWxlbmRhci5XRUVLX09GX1lFQVIsIDEpOworICAgICAgICB2ZXJpZnk3NjUoIjE5OTcgVHVlc2RheSBpbiB3ZWVrIDEgb2YgeWVhciA9ICIsIGMsIDE5OTYsIENhbGVuZGFyLkRFQ0VNQkVSLCAzMSk7CisKKyAgICAgICAgYy5jbGVhcigpOworICAgICAgICBjLnNldChDYWxlbmRhci5ZRUFSLCAxOTk3KTsKKyAgICAgICAgYy5zZXQoQ2FsZW5kYXIuREFZX09GX1dFRUssIENhbGVuZGFyLlRVRVNEQVkpOworICAgICAgICBjLnNldChDYWxlbmRhci5XRUVLX09GX1lFQVIsIDEwKTsKKyAgICAgICAgdmVyaWZ5NzY1KCIxOTk3IFR1ZXNkYXkgaW4gd2VlayAxMCBvZiB5ZWFyID0gIiwgYywgMTk5NywgQ2FsZW5kYXIuTUFSQ0gsIDQpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjLmNsZWFyKCk7CisgICAgICAgICAgICBjLnNldChDYWxlbmRhci5ZRUFSLCAxOTk3KTsKKyAgICAgICAgICAgIGMuc2V0KENhbGVuZGFyLkRBWV9PRl9XRUVLLCBDYWxlbmRhci5UVUVTREFZKTsKKyAgICAgICAgICAgIGMuc2V0KENhbGVuZGFyLldFRUtfT0ZfWUVBUiwgMCk7CisgICAgICAgICAgICB2ZXJpZnk3NjUoIjE5OTcgVHVlc2RheSBpbiB3ZWVrIDAgb2YgeWVhciA9ICIsIGMsIDE5OTYsIENhbGVuZGFyLkRFQ0VNQkVSLCAyNCk7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCJGYWlsOiBXRUVLX09GX1lFQVIgMCBzaG91bGQgYmUgaWxsZWdhbCIpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIiIpOworICAgICAgICB9CisgICAgfQorICAgIHZvaWQgdmVyaWZ5NzY1KFN0cmluZyBtc2csIENhbGVuZGFyIGMsIGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXkpIHsKKyAgICAgICAgaW50IGN5ID0gYy5nZXQoQ2FsZW5kYXIuWUVBUik7IC8vIE5FV0NBTAorICAgICAgICBpbnQgY20gPSBjLmdldChDYWxlbmRhci5NT05USCk7CisgICAgICAgIGludCBjZCA9IGMuZ2V0KENhbGVuZGFyLkRBVEUpOworICAgICAgICBpZiAoY3kgPT0geWVhciAmJgorICAgICAgICAgICAgY20gPT0gbW9udGggJiYKKyAgICAgICAgICAgIGNkID09IGRheSkgeworICAgICAgICAgICAgbG9nbG4oIlBBU1M6ICIgKyBtc2cgKyBjLmdldFRpbWUoKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogIiArIG1zZyArIGN5ICsgIi8iICsgKGNtKzEpICsgIi8iICsgY2QgKworICAgICAgICAgICAgICAgICAgIj0iICsgYy5nZXRUaW1lKCkgKworICAgICAgICAgICAgICAgICAgIjsgZXhwZWN0ZWQgIiArCisgICAgICAgICAgICAgICAgICB5ZWFyICsgIi8iICsgKG1vbnRoKzEpICsgIi8iICsgZGF5KTsKKyAgICAgICAgfQorICAgIH0KKyAgICAvLyBDYWxsZWQgd2hlbiBlIGV4cGVjdGVkIHRvIGJlIG5vbi1udWxsCisgICAgdm9pZCB2ZXJpZnk3NjUoU3RyaW5nIG1zZywgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUsIENhbGVuZGFyIGMpIHsKKyAgICAgICAgaWYgKGUgPT0gbnVsbCkgZXJybG4oIkZBSUw6IE5vIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBmb3IgIiArIG1zZyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0VGltZSgpKTsKKyAgICAgICAgZWxzZSBsb2dsbigiUEFTUzogIiArIG1zZyArICJJbGxlZ2FsQXJndW1lbnQgYXMgZXhwZWN0ZWQiKTsKKyAgICB9CisKKyAgICAvLyBUZXN0IHRoZSBiZWhhdmlvciBvZiBHTVQgdnMuIGxvY2FsIHRpbWUKKyAgICBwdWJsaWMgdm9pZCBUZXN0R01UdnNMb2NhbDQwNjQ2NTQoKSB7CisgICAgICAgIC8vIFNhbXBsZSBvdXRwdXQgMToKKyAgICAgICAgLy8gJSAvdXNyL2xvY2FsL2phdmEvamRrMS4xLjMvc29sYXJpcy9iaW4vamF2YSB0ZXN0IDE5OTcgMSAxIDEyIDAgMAorICAgICAgICAvLyBkYXRlID0gV2VkIEphbiAwMSAwNDowMDowMCBQU1QgMTk5NworICAgICAgICAvLyBvZmZzZXQgZm9yIFdlZCBKYW4gMDEgMDQ6MDA6MDAgUFNUIDE5OTc9IC04aHIKKyAgICAgICAgYXV4NDA2NDY1NCgxOTk3LCAxLCAxLCAxMiwgMCwgMCk7CisKKyAgICAgICAgLy8gU2FtcGxlIG91dHB1dCAyOgorICAgICAgICAvLyAlIC91c3IvbG9jYWwvamF2YS9qZGsxLjEuMy9zb2xhcmlzL2Jpbi9qYXZhIHRlc3QgMTk5NyA0IDE2IDE4IDMwIDAKKyAgICAgICAgLy8gZGF0ZSA9IFdlZCBBcHIgMTYgMTA6MzA6MDAgUERUIDE5OTcKKyAgICAgICAgLy8gb2Zmc2V0IGZvciBXZWQgQXByIDE2IDEwOjMwOjAwIFBEVCAxOTk3PSAtN2hyCisKKyAgICAgICAgLy8gTm90ZSB0aGF0IGluIHNhbXBsZSBvdXRwdXQgMiBhY2NvcmRpbmcgdG8gdGhlIG9mZnNldCwgdGhlIGdtdCB0aW1lCisgICAgICAgIC8vIG9mIHRoZSByZXN1bHQgd291bGQgYmUgMTk5NyA0IDE2IDE3IDMwIDAgd2hpY2ggaXMgZGlmZmVyZW50IGZyb20gdGhlCisgICAgICAgIC8vIGlucHV0IG9mIDE5OTcgNCAxNiAxOCAzMCAwLgorICAgICAgICBhdXg0MDY0NjU0KDE5OTcsIDQsIDE2LCAxOCwgMzAsIDApOworICAgIH0KKyAgICB2b2lkIGF1eDQwNjQ2NTQoaW50IHlyLCBpbnQgbW8sIGludCBkdCwgaW50IGhyLCBpbnQgbW4sIGludCBzYykgeworICAgICAgICBEYXRlIGRhdGU7CisgICAgICAgIENhbGVuZGFyIGdtdGNhbCA9IENhbGVuZGFyLmdldEluc3RhbmNlKCk7CisgICAgICAgIGdtdGNhbC5zZXRUaW1lWm9uZShUaW1lWm9uZS5nZXRUaW1lWm9uZSgiQWZyaWNhL0Nhc2FibGFuY2EiKSk7CisgICAgICAgIGdtdGNhbC5zZXQoeXIsIG1vLTEsIGR0LCBociwgbW4sIHNjKTsKKyAgICAgICAgZ210Y2FsLnNldChDYWxlbmRhci5NSUxMSVNFQ09ORCwgMCk7CisKKyAgICAgICAgZGF0ZSA9IGdtdGNhbC5nZXRUaW1lKCk7CisgICAgICAgIGxvZ2xuKCJkYXRlID0gIitkYXRlKTsKKworICAgICAgICBDYWxlbmRhciBjYWwgPSBDYWxlbmRhci5nZXRJbnN0YW5jZSgpOworCWNhbC5zZXRUaW1lWm9uZShUaW1lWm9uZS5nZXRUaW1lWm9uZSgiQW1lcmljYS9Mb3NfQW5nZWxzIikpOworICAgICAgICBjYWwuc2V0VGltZShkYXRlKTsKKworICAgICAgICBpbnQgb2Zmc2V0ID0gY2FsLmdldFRpbWVab25lKCkuZ2V0T2Zmc2V0KGNhbC5nZXQoQ2FsZW5kYXIuRVJBKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWwuZ2V0KENhbGVuZGFyLllFQVIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbC5nZXQoQ2FsZW5kYXIuTU9OVEgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbC5nZXQoQ2FsZW5kYXIuREFURSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsLmdldChDYWxlbmRhci5EQVlfT0ZfV0VFSyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsLmdldChDYWxlbmRhci5NSUxMSVNFQ09ORCkpOworCisgICAgICAgIGxvZ2xuKCJvZmZzZXQgZm9yICIrZGF0ZSsiPSAiKyhvZmZzZXQvMTAwMC82MC82MC4wKSArICJociIpOworCisgICAgICAgIGludCB1dGMgPSAoKGNhbC5nZXQoQ2FsZW5kYXIuSE9VUl9PRl9EQVkpICogNjAgKworICAgICAgICAgICAgICAgICAgICBjYWwuZ2V0KENhbGVuZGFyLk1JTlVURSkpICogNjAgKworICAgICAgICAgICAgICAgICAgIGNhbC5nZXQoQ2FsZW5kYXIuU0VDT05EKSkgKiAxMDAwICsKKyAgICAgICAgICAgIGNhbC5nZXQoQ2FsZW5kYXIuTUlMTElTRUNPTkQpIC0gb2Zmc2V0OworCisgICAgICAgIGludCBleHBlY3RlZCA9ICgoaHIgKiA2MCArIG1uKSAqIDYwICsgc2MpICogMTAwMDsKKworICAgICAgICBpZiAodXRjICE9IGV4cGVjdGVkKQorICAgICAgICAgICAgZXJybG4oIkZBSUw6IERpc2NyZXBhbmN5IG9mICIgKworICAgICAgICAgICAgICAgICAgKHV0YyAtIGV4cGVjdGVkKSArICIgbWlsbGlzID0gIiArCisgICAgICAgICAgICAgICAgICAoKHV0Yy1leHBlY3RlZCkvMTAwMC82MC82MC4wKSArICIgaHIiKTsKKyAgICB9CisKKyAgICAvLyBWZXJpZnkgdGhhdCBhZGQgYW5kIHNldCB3b3JrIHJlZ2FyZGxlc3Mgb2YgdGhlIG9yZGVyIGluIHdoaWNoCisgICAgLy8gdGhleSBhcmUgY2FsbGVkLgorICAgIHB1YmxpYyB2b2lkIFRlc3RBZGRTZXRPcmRlcjYyMSgpIHsKKyAgICAgICAgamF2YS51dGlsLkNhbGVuZGFyIHRlbXBjYWwgPSBqYXZhLnV0aWwuQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTsKKyAgICAgICAgdGVtcGNhbC5jbGVhcigpOworICAgICAgICB0ZW1wY2FsLnNldCgxOTk3LCA0LCAxNCwgMTMsIDIzLCA0NSk7CisgICAgICAgIERhdGUgZCA9IHRlbXBjYWwuZ2V0VGltZSgpOworCisgICAgICAgIENhbGVuZGFyIGNhbCA9IENhbGVuZGFyLmdldEluc3RhbmNlICgpOworICAgICAgICBjYWwuc2V0VGltZSAoZCk7CisgICAgICAgIGNhbC5hZGQgKENhbGVuZGFyLkRBVEUsIC01KTsKKyAgICAgICAgY2FsLnNldCAoQ2FsZW5kYXIuSE9VUl9PRl9EQVksIDApOworICAgICAgICBjYWwuc2V0IChDYWxlbmRhci5NSU5VVEUsIDApOworICAgICAgICBjYWwuc2V0IChDYWxlbmRhci5TRUNPTkQsIDApOworICAgICAgICAvLyBtYSBmZWIgMDMgMDA6MDA6MDAgR01UKzAwOjAwIDE5OTcKKyAgICAgICAgU3RyaW5nIHMgPSBjYWwuZ2V0VGltZSAoKS50b1N0cmluZyAoKTsKKworICAgICAgICBjYWwgPSBDYWxlbmRhci5nZXRJbnN0YW5jZSAoKTsKKyAgICAgICAgY2FsLnNldFRpbWUgKGQpOworICAgICAgICBjYWwuc2V0IChDYWxlbmRhci5IT1VSX09GX0RBWSwgMCk7CisgICAgICAgIGNhbC5zZXQgKENhbGVuZGFyLk1JTlVURSwgMCk7CisgICAgICAgIGNhbC5zZXQgKENhbGVuZGFyLlNFQ09ORCwgMCk7CisgICAgICAgIGNhbC5hZGQgKENhbGVuZGFyLkRBVEUsIC01KTsKKyAgICAgICAgLy8gbWEgZmViIDAzIDEzOjExOjA2IEdNVCswMDowMCAxOTk3CisgICAgICAgIFN0cmluZyBzMiA9IGNhbC5nZXRUaW1lICgpLnRvU3RyaW5nICgpOworCisgICAgICAgIGlmIChzLmVxdWFscyhzMikpCisgICAgICAgICAgICBsb2dsbigiUGFzczogIiArIHMgKyAiID09ICIgKyBzMik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiAiICsgcyArICIgIT0gIiArIHMyKTsKKyAgICB9CisKKyAgICAvLyBWZXJpZnkgdGhhdCBhZGQgd29ya3MuCisgICAgcHVibGljIHZvaWQgVGVzdEFkZDUyMCgpIHsKKyAgICAgICAgaW50IHkgPSAxOTk3LCBtID0gQ2FsZW5kYXIuRkVCUlVBUlksIGQgPSAxOworICAgICAgICBHcmVnb3JpYW5DYWxlbmRhciB0ZW1wID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKCB5LCBtLCBkICk7CisgICAgICAgIGNoZWNrNTIwKHRlbXAsIHksIG0sIGQpOworCisgICAgICAgIHRlbXAuYWRkKCB0ZW1wLllFQVIsIDEgKTsKKyAgICAgICAgeSsrOworICAgICAgICBjaGVjazUyMCh0ZW1wLCB5LCBtLCBkKTsKKworICAgICAgICB0ZW1wLmFkZCggdGVtcC5NT05USCwgMSApOworICAgICAgICBtKys7CisgICAgICAgIGNoZWNrNTIwKHRlbXAsIHksIG0sIGQpOworCisgICAgICAgIHRlbXAuYWRkKCB0ZW1wLkRBVEUsIDEgKTsKKyAgICAgICAgZCsrOworICAgICAgICBjaGVjazUyMCh0ZW1wLCB5LCBtLCBkKTsKKworICAgICAgICB0ZW1wLmFkZCggdGVtcC5EQVRFLCAyICk7CisgICAgICAgIGQgKz0gMjsKKyAgICAgICAgY2hlY2s1MjAodGVtcCwgeSwgbSwgZCk7CisKKyAgICAgICAgdGVtcC5hZGQoIHRlbXAuREFURSwgMjggKTsKKyAgICAgICAgZCA9IDE7ICsrbTsKKyAgICAgICAgY2hlY2s1MjAodGVtcCwgeSwgbSwgZCk7CisgICAgfQorICAgIHZvaWQgY2hlY2s1MjAoQ2FsZW5kYXIgYywgaW50IHksIGludCBtLCBpbnQgZCkgeworICAgICAgICBpZiAoYy5nZXQoQ2FsZW5kYXIuWUVBUikgIT0geSB8fAorICAgICAgICAgICAgYy5nZXQoQ2FsZW5kYXIuTU9OVEgpICE9IG0gfHwKKyAgICAgICAgICAgIGMuZ2V0KENhbGVuZGFyLkRBVEUpICE9IGQpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMVVJFOiBFeHBlY3RlZCBZRUFSL01PTlRIL0RBVEUgb2YgIiArCisgICAgICAgICAgICAgICAgICB5ICsgIi8iICsgKG0rMSkgKyAiLyIgKyBkICsKKyAgICAgICAgICAgICAgICAgICI7IGdvdCAiICsKKyAgICAgICAgICAgICAgICAgIGMuZ2V0KENhbGVuZGFyLllFQVIpICsgIi8iICsKKyAgICAgICAgICAgICAgICAgIChjLmdldChDYWxlbmRhci5NT05USCkrMSkgKyAiLyIgKworICAgICAgICAgICAgICAgICAgYy5nZXQoQ2FsZW5kYXIuREFURSkpOworICAgICAgICB9CisgICAgICAgIGVsc2UgbG9nbG4oIkNvbmZpcm1lZDogIiArCisgICAgICAgICAgICAgICAgICAgeSArICIvIiArIChtKzEpICsgIi8iICsgZCk7CisgICAgfQorCisgICAgLy8gVmVyaWZ5IHRoYXQgc2V0dGluZyBmaWVsZHMgd29ya3MuICBUaGlzIHRlc3QgZmFpbHMgd2hlbiBhbiBleGNlcHRpb24gaXMgdGhyb3duLgorICAgIHB1YmxpYyB2b2lkIFRlc3RGaWVsZFNldDQ3ODEoKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBHcmVnb3JpYW5DYWxlbmRhciBnID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKCk7CisgICAgICAgICAgICBHcmVnb3JpYW5DYWxlbmRhciBnMiA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcigpOworICAgICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCBVVEMgdmFsdWUgaXMgc2V0LCB2YXJpb3VzIGZpZWxkcyBhcmUgbm90LgorICAgICAgICAgICAgLy8gTm93IHNldCB0byBub29uLgorICAgICAgICAgICAgZzIuc2V0KENhbGVuZGFyLkhPVVIsIDEyKTsKKyAgICAgICAgICAgIGcyLnNldChDYWxlbmRhci5NSU5VVEUsIDApOworICAgICAgICAgICAgZzIuc2V0KENhbGVuZGFyLlNFQ09ORCwgMCk7CisgICAgICAgICAgICAvLyBBdCB0aGlzIHBvaW50IHRoZSBvYmplY3QgdGhpbmtzIFVUQyBpcyBOT1Qgc2V0LCBidXQgZmllbGRzIGFyZSBzZXQuCisgICAgICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGxpbmUgd2lsbCByZXN1bHQgaW4gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGJlY2F1c2UKKyAgICAgICAgICAgIC8vIGl0IHRoaW5rcyB0aGUgWUVBUiBpcyBzZXQgYW5kIGl0IGlzIE5PVC4KKyAgICAgICAgICAgIGlmIChnMi5lcXVhbHMoZykpCisgICAgICAgICAgICAgICAgbG9nbG4oIlNhbWUiKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBsb2dsbigiRGlmZmVyZW50Iik7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiVW5leHBlY3RlZCBleGNlcHRpb24gc2VlbjogIiArIGUpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gVGVzdCBzZXJpYWxpemF0aW9uIG9mIGEgQ2FsZW5kYXIgb2JqZWN0CisgICAgcHVibGljIHZvaWQgVGVzdFNlcmlhbGl6ZTMzNygpIHsKKyAgICAgICAgQ2FsZW5kYXIgY2FsID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTsKKworICAgICAgICBib29sZWFuIG9rID0gZmFsc2U7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIEZpbGVPdXRwdXRTdHJlYW0gZiA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKEZJTEVOQU1FKTsKKyAgICAgICAgICAgIE9iamVjdE91dHB1dCBzID0gbmV3IE9iamVjdE91dHB1dFN0cmVhbShmKTsKKyAgICAgICAgICAgIHMud3JpdGVPYmplY3QoUFJFRklYKTsKKyAgICAgICAgICAgIHMud3JpdGVPYmplY3QoY2FsKTsKKyAgICAgICAgICAgIHMud3JpdGVPYmplY3QoUE9TVEZJWCk7CisgICAgICAgICAgICBmLmNsb3NlKCk7CisKKyAgICAgICAgICAgIEZpbGVJbnB1dFN0cmVhbSBpbiA9IG5ldyBGaWxlSW5wdXRTdHJlYW0oRklMRU5BTUUpOworICAgICAgICAgICAgT2JqZWN0SW5wdXRTdHJlYW0gdCA9IG5ldyBPYmplY3RJbnB1dFN0cmVhbShpbik7CisgICAgICAgICAgICBTdHJpbmcgcHJlID0gKFN0cmluZyl0LnJlYWRPYmplY3QoKTsKKyAgICAgICAgICAgIENhbGVuZGFyIGMgPSAoQ2FsZW5kYXIpdC5yZWFkT2JqZWN0KCk7CisgICAgICAgICAgICBTdHJpbmcgcG9zdCA9IChTdHJpbmcpdC5yZWFkT2JqZWN0KCk7CisgICAgICAgICAgICBpbi5jbG9zZSgpOworCisgICAgICAgICAgICBvayA9IHByZS5lcXVhbHMoUFJFRklYKSAmJgorICAgICAgICAgICAgICAgIHBvc3QuZXF1YWxzKFBPU1RGSVgpICYmCisgICAgICAgICAgICAgICAgY2FsLmVxdWFscyhjKTsKKworICAgICAgICAgICAgRmlsZSBmbCA9IG5ldyBGaWxlKEZJTEVOQU1FKTsKKyAgICAgICAgICAgIGZsLmRlbGV0ZSgpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogRXhjZXB0aW9uIHJlY2VpdmVkOiIpOworICAgICAgICAgICAgLy8gZS5wcmludFN0YWNrVHJhY2UobG9nKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogRXhjZXB0aW9uIHJlY2VpdmVkOiIpOworICAgICAgICAgICAgLy8gZS5wcmludFN0YWNrVHJhY2UobG9nKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghb2spIGVycmxuKCJTZXJpYWxpemF0aW9uIG9mIENhbGVuZGFyIG9iamVjdCBmYWlsZWQuIik7CisgICAgfQorICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgUFJFRklYID0gImFiYyI7CisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBQT1NURklYID0gImRlZiI7CisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBGSUxFTkFNRSA9ICJ0bXAzMzcuYmluIjsKKworICAgIC8vIFRyeSB0byB6ZXJvIG91dCB0aGUgc2Vjb25kcyBmaWVsZAorICAgIHB1YmxpYyB2b2lkIFRlc3RTZWNvbmRzWmVybzEyMSgpIHsKKyAgICAgICAgQ2FsZW5kYXIgICAgICAgIGNhbCA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcigpOworICAgICAgICAvLyBJbml0aWFsaXplIHdpdGggY3VycmVudCBkYXRlL3RpbWUKKyAgICAgICAgY2FsLnNldFRpbWUobmV3IERhdGUoKSk7CisgICAgICAgIC8vIFJvdW5kIGRvd24gdG8gbWludXRlCisgICAgICAgIGNhbC5zZXQoQ2FsZW5kYXIuU0VDT05ELCAwKTsKKyAgICAgICAgRGF0ZSAgICBkID0gY2FsLmdldFRpbWUoKTsKKyAgICAgICAgU3RyaW5nIHMgPSBkLnRvU3RyaW5nKCk7CisgICAgICAgIGlmIChzLmluZGV4T2YoIjowMCAiKSA8IDApIGVycmxuKCJFeHBlY3RlZCB0byBzZWUgOjAwIGluICIgKyBzKTsKKyAgICB9CisKKyAgICAvLyBUcnkgdmFyaW91cyBzZXF1ZW5jZXMgb2YgYWRkLCBzZXQsIGFuZCBnZXQgbWV0aG9kIGNhbGxzLgorICAgIHB1YmxpYyB2b2lkIFRlc3RBZGRTZXRHZXQwNjEwKCkgeworICAgICAgICAvLworICAgICAgICAvLyBFcnJvciBjYXNlIDE6CisgICAgICAgIC8vIC0gVXBvbiBpbml0aWFsaXphdGlvbiBjYWxlbmRhciBmaWVsZHMsIG1pbGxpcyA9IFN5c3RlbS5jdXJyZW50VGltZQorICAgICAgICAvLyAtIEFmdGVyIHNldCBpcyBjYWxsZWQgZmllbGRzIGFyZSBpbml0aWFsaXplZCwgdGltZSBpcyBub3QKKyAgICAgICAgLy8gLSBBZGRpdGlvbiB1c2VzIG1pbGxpcyB3aGljaCBhcmUgc3RpbGwgKm5vdyoKKyAgICAgICAgLy8KKyAgICAgICAgeworICAgICAgICAgICAgQ2FsZW5kYXIgY2FsZW5kYXIgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoICkgOworICAgICAgICAgICAgY2FsZW5kYXIuc2V0KCAxOTkzLCBDYWxlbmRhci5KQU5VQVJZLCA0ICkgOworICAgICAgICAgICAgbG9nbG4oICIxQSkgIiArIHZhbHVlKCBjYWxlbmRhciApICkgOworICAgICAgICAgICAgY2FsZW5kYXIuYWRkKCBDYWxlbmRhci5EQVRFLCAxICkgOworICAgICAgICAgICAgU3RyaW5nIHYgPSB2YWx1ZShjYWxlbmRhcik7CisgICAgICAgICAgICBsb2dsbiggIjFCKSAiICsgdiApOworICAgICAgICAgICAgbG9nbG4oICItLSkgMTk5My8wLzUiICkgOworICAgICAgICAgICAgaWYgKCF2LmVxdWFscyhFWFBFQ1RFRF8wNjEwKSkgZXJybG4oIkV4cGVjdGVkICIgKyBFWFBFQ1RFRF8wNjEwICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI7IHNhdyAiICsgdik7CisgICAgICAgIH0KKworICAgICAgICAvLworICAgICAgICAvLyBFcnJvciBjYXNlIDI6CisgICAgICAgIC8vIC0gVXBvbiBpbml0aWFsaXphdGlvbiBjYWxlbmRhciBmaWVsZHMgc2V0LCBtaWxsaXMgPSAwCisgICAgICAgIC8vIC0gQWRkaXRpb24gdXNlcyBtaWxsaXMgd2hpY2ggYXJlIHN0aWxsIDE5NzAsIDAsIDEKKyAgICAgICAgLy8KKworICAgICAgICB7CisgICAgICAgICAgICBDYWxlbmRhciBjYWxlbmRhciA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhciggMTk5MywgQ2FsZW5kYXIuSkFOVUFSWSwgNCApIDsKKyAgICAgICAgICAgIGxvZ2xuKCAiMkEpICIgKyB2YWx1ZSggY2FsZW5kYXIgKSApIDsKKyAgICAgICAgICAgIGNhbGVuZGFyLmFkZCggQ2FsZW5kYXIuREFURSwgMSApIDsKKyAgICAgICAgICAgIFN0cmluZyB2ID0gdmFsdWUoY2FsZW5kYXIpOworICAgICAgICAgICAgbG9nbG4oICIyQikgIiArIHYgKTsKKyAgICAgICAgICAgIGxvZ2xuKCAiLS0pIDE5OTMvMC81IiApIDsKKyAgICAgICAgICAgIGlmICghdi5lcXVhbHMoRVhQRUNURURfMDYxMCkpIGVycmxuKCJFeHBlY3RlZCAiICsgRVhQRUNURURfMDYxMCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOyBzYXcgIiArIHYpOworICAgICAgICB9CisKKyAgICAgICAgLy8KKyAgICAgICAgLy8gRXJyb3IgY2FzZSAzOgorICAgICAgICAvLyAtIFVwb24gaW5pdGlhbGl6YXRpb24gY2FsZW5kYXIgZmllbGRzLCBtaWxsaXMgPSAwCisgICAgICAgIC8vIC0gZ2V0VGltZSggKSBpcyBjYWxsZWQgd2hpY2ggZm9yY2VzIHRoZSBtaWxsaXMgdG8gYmUgc2V0CisgICAgICAgIC8vIC0gQWRkaXRpb24gdXNlcyBtaWxsaXMgd2hpY2ggYXJlIGNvcnJlY3QKKyAgICAgICAgLy8KKworICAgICAgICB7CisgICAgICAgICAgICBDYWxlbmRhciBjYWxlbmRhciA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhciggMTk5MywgQ2FsZW5kYXIuSkFOVUFSWSwgNCApIDsKKyAgICAgICAgICAgIGxvZ2xuKCAiM0EpICIgKyB2YWx1ZSggY2FsZW5kYXIgKSApIDsKKyAgICAgICAgICAgIGNhbGVuZGFyLmdldFRpbWUoICkgOworICAgICAgICAgICAgY2FsZW5kYXIuYWRkKCBDYWxlbmRhci5EQVRFLCAxICkgOworICAgICAgICAgICAgU3RyaW5nIHYgPSB2YWx1ZShjYWxlbmRhcik7CisgICAgICAgICAgICBsb2dsbiggIjNCKSAiICsgdiApIDsKKyAgICAgICAgICAgIGxvZ2xuKCAiLS0pIDE5OTMvMC81IiApIDsKKyAgICAgICAgICAgIGlmICghdi5lcXVhbHMoRVhQRUNURURfMDYxMCkpIGVycmxuKCJFeHBlY3RlZCAiICsgRVhQRUNURURfMDYxMCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOyBzYXcgIiArIHYpOworICAgICAgICB9CisgICAgfQorICAgIHN0YXRpYyBTdHJpbmcgdmFsdWUoIENhbGVuZGFyIGNhbGVuZGFyICkgeworICAgICAgICByZXR1cm4oIGNhbGVuZGFyLmdldCggQ2FsZW5kYXIuWUVBUiApICArICIvIiArCisgICAgICAgICAgICAgICAgY2FsZW5kYXIuZ2V0KCBDYWxlbmRhci5NT05USCApICsgIi8iICsKKyAgICAgICAgICAgICAgICBjYWxlbmRhci5nZXQoIENhbGVuZGFyLkRBVEUgKSApIDsKKyAgICB9CisgICAgc3RhdGljIFN0cmluZyBFWFBFQ1RFRF8wNjEwID0gIjE5OTMvMC81IjsKKworICAgIC8vIFRlc3QgdGhhdCBjZXJ0YWluIGZpZWxkcyBvbiBhIGNlcnRhaW4gZGF0ZSBhcmUgYXMgZXhwZWN0ZWQuCisgICAgcHVibGljIHZvaWQgVGVzdEZpZWxkczA2MCgpIHsKKyAgICAgICAgaW50IHllYXIgPSAxOTk3OworICAgICAgICBpbnQgbW9udGggPSBqYXZhLnV0aWwuQ2FsZW5kYXIuT0NUT0JFUjsgIC8vb2N0b2JlcgorICAgICAgICBpbnQgZERhdGUgPSAyMjsgICAvL0RBWU9GV0VFSyBzaG91bGQgcmV0dXJuIDMgZm9yIFdlZG5lc2RheQorICAgICAgICBHcmVnb3JpYW5DYWxlbmRhciBjYWxlbmRhciA9IG51bGw7CisKKyAgICAgICAgY2FsZW5kYXIgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoIHllYXIsIG1vbnRoLCBkRGF0ZSk7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxFWFBFQ1RFRF9GSUVMRFMubGVuZ3RoOyApIHsKKyAgICAgICAgICAgIGludCBmaWVsZCA9IEVYUEVDVEVEX0ZJRUxEU1tpKytdOworICAgICAgICAgICAgaW50IGV4cGVjdGVkID0gRVhQRUNURURfRklFTERTW2krK107CisgICAgICAgICAgICBpZiAoY2FsZW5kYXIuZ2V0KGZpZWxkKSAhPSBleHBlY3RlZCkgeworICAgICAgICAgICAgICAgIGVycmxuKCJFeHBlY3RlZCBmaWVsZCAiICsgZmllbGQgKyAiIHRvIGhhdmUgdmFsdWUgIiArIGV4cGVjdGVkICsKKyAgICAgICAgICAgICAgICAgICAgICAiOyByZWNlaXZlZCAiICsgY2FsZW5kYXIuZ2V0KGZpZWxkKSArICIgaW5zdGVhZCIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHN0YXRpYyBpbnQgRVhQRUNURURfRklFTERTW10gPSB7CisgICAgICAgIENhbGVuZGFyLllFQVIsIDE5OTcsCisgICAgICAgIENhbGVuZGFyLk1PTlRILCBDYWxlbmRhci5PQ1RPQkVSLAorICAgICAgICBDYWxlbmRhci5EQVlfT0ZfTU9OVEgsIDIyLAorICAgICAgICBDYWxlbmRhci5EQVlfT0ZfV0VFSywgQ2FsZW5kYXIuV0VETkVTREFZLAorICAgICAgICBDYWxlbmRhci5EQVlfT0ZfV0VFS19JTl9NT05USCwgNCwKKyAgICAgICAgQ2FsZW5kYXIuREFZX09GX1lFQVIsIDI5NQorICAgIH07CisKKyAgICAvLyBWZXJpZnkgdGhhdCB0aGUgZmllbGRzIGFyZSBhcyBleHBlY3RlZCAobW9zdGx5IHplcm8pIGF0IHRoZSBlcG9jaCBzdGFydC4KKyAgICAvLyBOb3RlIHRoYXQgd2UgYWRqdXN0IGZvciB0aGUgZGVmYXVsdCB0aW1lem9uZSB0byBnZXQgbW9zdCB0aGluZ3MgdG8gemVyby4KKyAgICBwdWJsaWMgdm9pZCBUZXN0RXBvY2hTdGFydEZpZWxkcygpIHsKKyAgICAgICAgVGltZVpvbmUgeiA9IFRpbWVab25lLmdldERlZmF1bHQoKTsKKyAgICAgICAgQ2FsZW5kYXIgYyA9IENhbGVuZGFyLmdldEluc3RhbmNlKCk7CisgICAgICAgIERhdGUgZCA9IG5ldyBEYXRlKC16LmdldFJhd09mZnNldCgpKTsKKyAgICAgICAgaWYgKHouaW5EYXlsaWdodFRpbWUoZCkpIHsKKyAgICAgICAgICAgIGxvZ2xuKCJXYXJuaW5nOiBTa2lwcGluZyB0ZXN0IGJlY2F1c2UgIiArIGQgKworICAgICAgICAgICAgICAgICAgIiBpcyBpbiBEU1QuIik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjLnNldFRpbWUoZCk7CisgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8Q2FsZW5kYXIuWk9ORV9PRkZTRVQ7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChjLmdldChpKSAhPSBFUE9DSF9GSUVMRFNbaV0pCisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJFeHBlY3RlZCBmaWVsZCAiICsgaSArICIgdG8gaGF2ZSB2YWx1ZSAiICsgRVBPQ0hfRklFTERTW2ldICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIjsgc2F3ICIgKyBjLmdldChpKSArICIgaW5zdGVhZCIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGMuZ2V0KENhbGVuZGFyLlpPTkVfT0ZGU0VUKSAhPSB6LmdldFJhd09mZnNldCgpKQorICAgICAgICAgICAgICAgIGVycmxuKCJFeHBlY3RlZCBmaWVsZCBaT05FX09GRlNFVCB0byBoYXZlIHZhbHVlICIgKyB6LmdldFJhd09mZnNldCgpICsKKyAgICAgICAgICAgICAgICAgICAgICAiOyBzYXcgIiArIGMuZ2V0KENhbGVuZGFyLlpPTkVfT0ZGU0VUKSArICIgaW5zdGVhZCIpOworICAgICAgICAgICAgaWYgKGMuZ2V0KENhbGVuZGFyLkRTVF9PRkZTRVQpICE9IDApCisgICAgICAgICAgICAgICAgZXJybG4oIkV4cGVjdGVkIGZpZWxkIERTVF9PRkZTRVQgdG8gaGF2ZSB2YWx1ZSAwIiArCisgICAgICAgICAgICAgICAgICAgICAgIjsgc2F3ICIgKyBjLmdldChDYWxlbmRhci5EU1RfT0ZGU0VUKSArICIgaW5zdGVhZCIpOworICAgICAgICB9CisgICAgfQorICAgIC8vIFRoZXNlIGFyZSB0aGUgZmllbGRzIGF0IHRoZSBlcG9jaCBzdGFydAorICAgIHN0YXRpYyBpbnQgRVBPQ0hfRklFTERTW10gPSB7IDEsIDE5NzAsIDAsIDEsIDEsIDEsIDEsIDUsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIC0yODgwMDAwMCwgMCB9OworCisgICAgLy8gVmVyaWZ5IHRoYXQgYXMgeW91IGFkZCBkYXlzIHRvIHRoZSBjYWxlbmRhciAoZS5nLiwgMjQgZGF5IHBlcmlvZHMpLAorICAgIC8vIHRoZSBkYXkgb2YgdGhlIHdlZWsgc2hpZnRzIGluIHRoZSBleHBlY3RlZCBwYXR0ZXJuLgorICAgIHB1YmxpYyB2b2lkIFRlc3RET1dQcm9ncmVzc2lvbigpIHsKKyAgICAgICAgQ2FsZW5kYXIgY2FsID0KKyAgICAgICAgICAgIG5ldyBHcmVnb3JpYW5DYWxlbmRhcigxOTcyLCBDYWxlbmRhci5PQ1RPQkVSLCAyNik7CisgICAgICAgIG1hcmNoQnlEZWx0YShjYWwsIDI0KTsgLy8gTGFzdCBwYXJhbWV0ZXIgbXVzdCBiZSAhPSAwIG1vZHVsbyA3CisgICAgfQorCisgICAgLy8gU3VwcGx5IGEgZGVsdGEgd2hpY2ggaXMgbm90IGEgbXVsdGlwbGUgb2YgNy4KKyAgICB2b2lkIG1hcmNoQnlEZWx0YShDYWxlbmRhciBjYWwsIGludCBkZWx0YSkgeworICAgICAgICBDYWxlbmRhciBjdXIgPSAoQ2FsZW5kYXIpY2FsLmNsb25lKCk7CisgICAgICAgIGludCBpbml0aWFsRE9XID0gY3VyLmdldChDYWxlbmRhci5EQVlfT0ZfV0VFSyk7CisgICAgICAgIGludCBET1csIG5ld0RPVyA9IGluaXRpYWxET1c7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIERPVyA9IG5ld0RPVzsKKyAgICAgICAgICAgIGxvZ2xuKCJET1cgPSAiICsgRE9XICsgIiAgIiArIGN1ci5nZXRUaW1lKCkpOworCisgICAgICAgICAgICBjdXIuYWRkKENhbGVuZGFyLkRBWV9PRl9XRUVLLCBkZWx0YSk7CisgICAgICAgICAgICBuZXdET1cgPSBjdXIuZ2V0KENhbGVuZGFyLkRBWV9PRl9XRUVLKTsKKyAgICAgICAgICAgIGludCBleHBlY3RlZERPVyA9IDEgKyAoRE9XICsgZGVsdGEgLSAxKSAlIDc7CisgICAgICAgICAgICBpZiAobmV3RE9XICE9IGV4cGVjdGVkRE9XKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkRheSBvZiB3ZWVrIHNob3VsZCBiZSAiICsgZXhwZWN0ZWRET1cgKworICAgICAgICAgICAgICAgICAgICAgICIgaW5zdGVhZCBvZiAiICsgbmV3RE9XICsgIiBvbiAiICsgY3VyLmdldFRpbWUoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHdoaWxlIChuZXdET1cgIT0gaW5pdGlhbERPVyk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdEFjdHVhbE1pbk1heCgpIHsKKyAgICAgICAgQ2FsZW5kYXIgY2FsID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKDE5NjcsIENhbGVuZGFyLk1BUkNILCAxMCk7CisgICAgICAgIGNhbC5zZXRGaXJzdERheU9mV2VlayhDYWxlbmRhci5TVU5EQVkpOworICAgICAgICBjYWwuc2V0TWluaW1hbERheXNJbkZpcnN0V2VlaygzKTsKKworICAgICAgICBpZiAoY2FsLmdldEFjdHVhbE1pbmltdW0oQ2FsZW5kYXIuREFZX09GX01PTlRIKSAhPSAxKQorICAgICAgICAgICAgZXJybG4oIkFjdHVhbCBtaW5pbXVtIGRhdGUgZm9yIDMvMTAvMTk2NyBzaG91bGQgaGF2ZSBiZWVuIDE7IGdvdCAiICsKKyAgICAgICAgICAgICAgICAgIGNhbC5nZXRBY3R1YWxNaW5pbXVtKENhbGVuZGFyLkRBWV9PRl9NT05USCkpOworICAgICAgICBpZiAoY2FsLmdldEFjdHVhbE1heGltdW0oQ2FsZW5kYXIuREFZX09GX01PTlRIKSAhPSAzMSkKKyAgICAgICAgICAgIGVycmxuKCJBY3R1YWwgbWF4aW11bSBkYXRlIGZvciAzLzEwLzE5Njcgc2hvdWxkIGhhdmUgYmVlbiAzMTsgZ290ICIgKworICAgICAgICAgICAgICAgICAgY2FsLmdldEFjdHVhbE1heGltdW0oQ2FsZW5kYXIuREFZX09GX01PTlRIKSk7CisKKyAgICAgICAgY2FsLnNldChDYWxlbmRhci5NT05USCwgQ2FsZW5kYXIuRkVCUlVBUlkpOworICAgICAgICBpZiAoY2FsLmdldEFjdHVhbE1heGltdW0oQ2FsZW5kYXIuREFZX09GX01PTlRIKSAhPSAyOCkKKyAgICAgICAgICAgIGVycmxuKCJBY3R1YWwgbWF4aW11bSBkYXRlIGZvciAyLzEwLzE5Njcgc2hvdWxkIGhhdmUgYmVlbiAyODsgZ290ICIgKworICAgICAgICAgICAgICAgICAgY2FsLmdldEFjdHVhbE1heGltdW0oQ2FsZW5kYXIuREFZX09GX01PTlRIKSk7CisgICAgICAgIGlmIChjYWwuZ2V0QWN0dWFsTWF4aW11bShDYWxlbmRhci5EQVlfT0ZfWUVBUikgIT0gMzY1KQorICAgICAgICAgICAgZXJybG4oIk51bWJlciBvZiBkYXlzIGluIDE5Njcgc2hvdWxkIGhhdmUgYmVlbiAzNjU7IGdvdCAiICsKKyAgICAgICAgICAgICAgICAgIGNhbC5nZXRBY3R1YWxNYXhpbXVtKENhbGVuZGFyLkRBWV9PRl9ZRUFSKSk7CisKKyAgICAgICAgY2FsLnNldChDYWxlbmRhci5ZRUFSLCAxOTY4KTsKKyAgICAgICAgaWYgKGNhbC5nZXRBY3R1YWxNYXhpbXVtKENhbGVuZGFyLkRBWV9PRl9NT05USCkgIT0gMjkpCisgICAgICAgICAgICBlcnJsbigiQWN0dWFsIG1heGltdW0gZGF0ZSBmb3IgMi8xMC8xOTY4IHNob3VsZCBoYXZlIGJlZW4gMjk7IGdvdCAiICsKKyAgICAgICAgICAgICAgICAgIGNhbC5nZXRBY3R1YWxNYXhpbXVtKENhbGVuZGFyLkRBWV9PRl9NT05USCkpOworICAgICAgICBpZiAoY2FsLmdldEFjdHVhbE1heGltdW0oQ2FsZW5kYXIuREFZX09GX1lFQVIpICE9IDM2NikKKyAgICAgICAgICAgIGVycmxuKCJOdW1iZXIgb2YgZGF5cyBpbiAxOTY4IHNob3VsZCBoYXZlIGJlZW4gMzY2OyBnb3QgIiArCisgICAgICAgICAgICAgICAgICBjYWwuZ2V0QWN0dWFsTWF4aW11bShDYWxlbmRhci5EQVlfT0ZfWUVBUikpOworICAgICAgICAvLyBVc2luZyB3ZWVrIHNldHRpbmdzIG9mIFNVTkRBWS8zIChzZWUgYWJvdmUpCisgICAgICAgIGlmIChjYWwuZ2V0QWN0dWFsTWF4aW11bShDYWxlbmRhci5XRUVLX09GX1lFQVIpICE9IDUyKQorICAgICAgICAgICAgZXJybG4oIk51bWJlciBvZiB3ZWVrcyBpbiAxOTY4IHNob3VsZCBoYXZlIGJlZW4gNTI7IGdvdCAiICsKKyAgICAgICAgICAgICAgICAgIGNhbC5nZXRBY3R1YWxNYXhpbXVtKENhbGVuZGFyLldFRUtfT0ZfWUVBUikpOworCisgICAgICAgIGNhbC5zZXQoQ2FsZW5kYXIuWUVBUiwgMTk3Nik7CisgICAgICAgIGNhbC5zZXQoQ2FsZW5kYXIuREFZX09GX1dFRUssIGNhbC5nZXRGaXJzdERheU9mV2VlaygpKTsgLy8gQWRkZWQgLSBMaXUgMTEvNi8wMAorICAgICAgICAvLyBVc2luZyB3ZWVrIHNldHRpbmdzIG9mIFNVTkRBWS8zIChzZWUgYWJvdmUpCisgICAgICAgIGlmIChjYWwuZ2V0QWN0dWFsTWF4aW11bShDYWxlbmRhci5XRUVLX09GX1lFQVIpICE9IDUzKQorICAgICAgICAgICAgZXJybG4oIk51bWJlciBvZiB3ZWVrcyBpbiAxOTc2IHNob3VsZCBoYXZlIGJlZW4gNTM7IGdvdCAiICsKKyAgICAgICAgICAgICAgICAgIGNhbC5nZXRBY3R1YWxNYXhpbXVtKENhbGVuZGFyLldFRUtfT0ZfWUVBUikpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RSb2xsKCkgeworICAgICAgICBDYWxlbmRhciBjYWwgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoMTk5NywgQ2FsZW5kYXIuSkFOVUFSWSwgMzEpOworCisgICAgICAgIGludFtdIGRheVZhbHVlcyA9IHsgMzEsIDI4LCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEgfTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBkYXlWYWx1ZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIENhbGVuZGFyIGNhbDIgPSAoQ2FsZW5kYXIpY2FsLmNsb25lKCk7CisgICAgICAgICAgICBjYWwyLnJvbGwoQ2FsZW5kYXIuTU9OVEgsIGkpOworICAgICAgICAgICAgaWYgKGNhbDIuZ2V0KENhbGVuZGFyLkRBWV9PRl9NT05USCkgIT0gZGF5VmFsdWVzW2ldKQorICAgICAgICAgICAgICAgIGVycmxuKCJSb2xsaW5nIHRoZSBtb250aCBpbiAxLzMxLzE5OTcgdXAgYnkgIiArIGkgKyAiIHNob3VsZCBoYXZlIHlpZWxkZWQgIgorICAgICAgICAgICAgICAgICAgICAgICsgKChpICsgMSkgJSAxMikgKyAiLyIgKyBkYXlWYWx1ZXNbaV0gKyAiLzE5OTcsIGJ1dCBhY3R1YWxseSB5aWVsZGVkICIKKyAgICAgICAgICAgICAgICAgICAgICArICgoaSArIDEpICUgMTIpICsgIi8iICsgY2FsMi5nZXQoQ2FsZW5kYXIuREFZX09GX01PTlRIKSArICIvMTk5Ny4iKTsKKyAgICAgICAgfQorCisgICAgICAgIGNhbC5zZXQoMTk5NiwgQ2FsZW5kYXIuRkVCUlVBUlksIDI5KTsKKworICAgICAgICAvL2ludFtdIG1vbnRoVmFsdWVzID0geyAxLCAyLCAyLCAyLCAxLCAyLCAyLCAyLCAxLCAyIH07CisgICAgICAgIC8vaW50W10gZGF5VmFsdWVzMiA9IHsgMjksIDEsIDEsIDEsIDI5LCAxLCAxLCAxLCAyOSwgMSB9OworCisgICAgICAgIC8vIEkndmUgcmV2aXNlZCB0aGUgZXhwZWN0ZWQgdmFsdWVzIHRvIG1ha2UgbW9yZSBzZW5zZSAtLSByb2xsaW5nCisgICAgICAgIC8vIHRoZSB5ZWFyIHNob3VsZCBwaW4gdGhlIERBWV9PRl9NT05USC4gLSBMaXUgMTEvNi8wMAorICAgICAgICBpbnRbXSBtb250aFZhbHVlcyA9IHsgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSB9OworICAgICAgICBpbnRbXSBkYXlWYWx1ZXMyID0geyAyOSwgMjgsIDI4LCAyOCwgMjksIDI4LCAyOCwgMjgsIDI5LCAyOCB9OworCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZGF5VmFsdWVzMi5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgQ2FsZW5kYXIgY2FsMiA9IChDYWxlbmRhciljYWwuY2xvbmUoKTsKKyAgICAgICAgICAgIGNhbDIucm9sbChDYWxlbmRhci5ZRUFSLCBpKTsKKyAgICAgICAgICAgIGlmIChjYWwyLmdldChDYWxlbmRhci5EQVlfT0ZfTU9OVEgpICE9IGRheVZhbHVlczJbaV0gfHwgY2FsMi5nZXQoQ2FsZW5kYXIuTU9OVEgpCisgICAgICAgICAgICAgICAgIT0gbW9udGhWYWx1ZXNbaV0pCisgICAgICAgICAgICAgICAgZXJybG4oIlJvbGwgMi8yOS8xOTk2IGJ5ICIgKyBpICsgIiB5ZWFyOiBleHBlY3RlZCAiCisgICAgICAgICAgICAgICAgICAgICAgKyAobW9udGhWYWx1ZXNbaV0gKyAxKSArICIvIiArIGRheVZhbHVlczJbaV0gKyAiLyIKKyAgICAgICAgICAgICAgICAgICAgICArICgxOTk2ICsgaSkgKyAiLCBnb3QgIgorICAgICAgICAgICAgICAgICAgICAgICsgKGNhbDIuZ2V0KENhbGVuZGFyLk1PTlRIKSArIDEpICsgIi8iICsKKyAgICAgICAgICAgICAgICAgICAgICBjYWwyLmdldChDYWxlbmRhci5EQVlfT0ZfTU9OVEgpICsgIi8iICsgY2FsMi5nZXQoQ2FsZW5kYXIuWUVBUikpOworICAgICAgICB9CisKKyAgICAgICAgLy8gVGVzdCByb2xsaW5nIGhvdXIgb2YgZGF5CisgICAgICAgIGNhbC5zZXQoQ2FsZW5kYXIuSE9VUl9PRl9EQVksIDApOworICAgICAgICBjYWwucm9sbChDYWxlbmRhci5IT1VSX09GX0RBWSwgLTIpOworICAgICAgICBpbnQgZiA9IGNhbC5nZXQoQ2FsZW5kYXIuSE9VUl9PRl9EQVkpOworICAgICAgICBpZiAoZiAhPSAyMikgZXJybG4oIlJvbGxpbmcgSE9VUl9PRl9EQVk9MCBkZWx0YT0tMiBnYXZlICIgKyBmICsgIiBXYW50ZWQgMjIiKTsKKyAgICAgICAgY2FsLnJvbGwoQ2FsZW5kYXIuSE9VUl9PRl9EQVksIDUpOworICAgICAgICBmID0gY2FsLmdldChDYWxlbmRhci5IT1VSX09GX0RBWSk7CisgICAgICAgIGlmIChmICE9IDMpIGVycmxuKCJSb2xsaW5nIEhPVVJfT0ZfREFZPTIyIGRlbHRhPTUgZ2F2ZSAiICsgZiArICIgV2FudGVkIDMiKTsKKyAgICAgICAgY2FsLnJvbGwoQ2FsZW5kYXIuSE9VUl9PRl9EQVksIDIxKTsKKyAgICAgICAgZiA9IGNhbC5nZXQoQ2FsZW5kYXIuSE9VUl9PRl9EQVkpOworICAgICAgICBpZiAoZiAhPSAwKSBlcnJsbigiUm9sbGluZyBIT1VSX09GX0RBWT0zIGRlbHRhPTIxIGdhdmUgIiArIGYgKyAiIFdhbnRlZCAwIik7CisKKyAgICAgICAgLy8gVGVzdCByb2xsaW5nIGhvdXIKKyAgICAgICAgY2FsLnNldChDYWxlbmRhci5IT1VSX09GX0RBWSwgMCk7CisgICAgICAgIGNhbC5yb2xsKENhbGVuZGFyLkhPVVIsIC0yKTsKKyAgICAgICAgZiA9IGNhbC5nZXQoQ2FsZW5kYXIuSE9VUik7CisgICAgICAgIGlmIChmICE9IDEwKSBlcnJsbigiUm9sbGluZyBIT1VSPTAgZGVsdGE9LTIgZ2F2ZSAiICsgZiArICIgV2FudGVkIDEwIik7CisgICAgICAgIGNhbC5yb2xsKENhbGVuZGFyLkhPVVIsIDUpOworICAgICAgICBmID0gY2FsLmdldChDYWxlbmRhci5IT1VSKTsKKyAgICAgICAgaWYgKGYgIT0gMykgZXJybG4oIlJvbGxpbmcgSE9VUj0xMCBkZWx0YT01IGdhdmUgIiArIGYgKyAiIFdhbnRlZCAzIik7CisgICAgICAgIGNhbC5yb2xsKENhbGVuZGFyLkhPVVIsIDkpOworICAgICAgICBmID0gY2FsLmdldChDYWxlbmRhci5IT1VSKTsKKyAgICAgICAgaWYgKGYgIT0gMCkgZXJybG4oIlJvbGxpbmcgSE9VUj0zIGRlbHRhPTkgZ2F2ZSAiICsgZiArICIgV2FudGVkIDAiKTsKKyAgICB9Cit9CisKKy8vZW9mCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY2FsZW5kYXIvSGVicmV3VGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NhbGVuZGFyL0hlYnJld1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5jMjAyNTJhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NhbGVuZGFyL0hlYnJld1Rlc3QuamF2YQpAQCAtMCwwICsxLDM2NSBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NhbGVuZGFyL0hlYnJld1Rlc3QuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wOC8wNyAwMzoxMDoxOCAkIAorICogJFJldmlzaW9uOiAxLjUgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3QuY2FsZW5kYXI7CisKKy8vaW1wb3J0IGNvbS5pYm0uaWN1LmRldi50ZXN0Lio7CisvL2ltcG9ydCBjb20uaWJtLmljdS51dGlsLio7CisKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworCitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5Mb2NhbGVVdGlsaXR5OworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuRGF0ZUZvcm1hdDsKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLkNhbGVuZGFyOworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuSGVicmV3Q2FsZW5kYXI7CitpbXBvcnQgY29tLmlibS5pY3UudXRpbC5UaW1lWm9uZTsKKworLyoqCisgKiBUZXN0cyBmb3IgdGhlIDxjb2RlPkhlYnJld0NhbGVuZGFyPC9jb2RlPiBjbGFzcy4KKyAqLworcHVibGljIGNsYXNzIEhlYnJld1Rlc3QgZXh0ZW5kcyBDYWxlbmRhclRlc3QgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZyBhcmdzW10pIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBuZXcgSGVicmV3VGVzdCgpLnJ1bihhcmdzKTsKKyAgICB9CisKKyAgICAvLyBDb25zdGFudHMgdG8gc2F2ZSB0eXBpbmcuCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVElTSFJJICA9IEhlYnJld0NhbGVuZGFyLlRJU0hSSTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBIRVNIVkFOID0gSGVicmV3Q2FsZW5kYXIuSEVTSFZBTjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBLSVNMRVYgID0gSGVicmV3Q2FsZW5kYXIuS0lTTEVWOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFRFVkVUICAgPSBIZWJyZXdDYWxlbmRhci5URVZFVDsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTSEVWQVQgID0gSGVicmV3Q2FsZW5kYXIuU0hFVkFUOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFEQVJfMSAgPSBIZWJyZXdDYWxlbmRhci5BREFSXzE7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQURBUiAgICA9IEhlYnJld0NhbGVuZGFyLkFEQVI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTklTQU4gICA9IEhlYnJld0NhbGVuZGFyLk5JU0FOOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IElZQVIgICAgPSBIZWJyZXdDYWxlbmRhci5JWUFSOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNJVkFOICAgPSBIZWJyZXdDYWxlbmRhci5TSVZBTjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBUQU1VWiAgID0gSGVicmV3Q2FsZW5kYXIuVEFNVVo7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQVYgICAgICA9IEhlYnJld0NhbGVuZGFyLkFWOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEVMVUwgICAgPSBIZWJyZXdDYWxlbmRhci5FTFVMOworCisgICAgLyoqCisgICAgICogVGVzdCB0aGUgYmVoYXZpb3Igb2YgSGVicmV3Q2FsZW5kYXIucm9sbAorICAgICAqIFRoZSBvbmx5IHJlYWwgbmFzdGluZXNzIHdpdGggcm9sbCBpcyB0aGUgTU9OVEggZmllbGQsIHNpbmNlIGEgeWVhciBjYW4KKyAgICAgKiBoYXZlIGEgdmFyaWFibGUgbnVtYmVyIG9mIG1vbnRocy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0Um9sbCgpIHsKKyAgICAgICAgaW50W11bXSB0ZXN0cyA9IG5ldyBpbnRbXVtdIHsKKyAgICAgICAgICAgIC8vICAgICAgIGlucHV0ICAgICAgICAgICAgICAgIHJvbGwgYnkgICAgICAgICAgb3V0cHV0CisgICAgICAgICAgICAvLyAgeWVhciAgbW9udGggICAgIGRheSAgICAgZmllbGQgYW1vdW50ICAgIHllYXIgIG1vbnRoICAgICBkYXkKKyAgICAKKyAgICAgICAgICAgIHsgICA1NzU5LCBIRVNIVkFOLCAgIDIsICAgICBNT05USCwgICAxLCAgICAgNTc1OSwgS0lTTEVWLCAgICAyIH0sICAgLy8gbm9uLWxlYXAgeWVhcnMKKyAgICAgICAgICAgIHsgICA1NzU5LCBTSEVWQVQsICAgIDIsICAgICBNT05USCwgICAxLCAgICAgNTc1OSwgQURBUiwgICAgICAyIH0sCisgICAgICAgICAgICB7ICAgNTc1OSwgU0hFVkFULCAgICAyLCAgICAgTU9OVEgsICAgMiwgICAgIDU3NTksIE5JU0FOLCAgICAgMiB9LAorICAgICAgICAgICAgeyAgIDU3NTksIFNIRVZBVCwgICAgMiwgICAgIE1PTlRILCAgMTIsICAgICA1NzU5LCBTSEVWQVQsICAgIDIgfSwKKyAgICAgICAgICAgIHsgICA1NzU5LCBBViwgICAgICAgIDEsICAgICBNT05USCwgIDEyLCAgICAgNTc1OSwgQVYsICAgICAgICAxIH0sIC8vIEFsYW4KKworICAgICAgICAgICAgeyAgIDU3NTcsIEhFU0hWQU4sICAgMiwgICAgIE1PTlRILCAgIDEsICAgICA1NzU3LCBLSVNMRVYsICAgIDIgfSwgICAvLyBsZWFwIHllYXJzCisgICAgICAgICAgICB7ICAgNTc1NywgU0hFVkFULCAgICAyLCAgICAgTU9OVEgsICAgMSwgICAgIDU3NTcsIEFEQVJfMSwgICAgMiB9LAorICAgICAgICAgICAgeyAgIDU3NTcsIFNIRVZBVCwgICAgMiwgICAgIE1PTlRILCAgIDIsICAgICA1NzU3LCBBREFSLCAgICAgIDIgfSwKKyAgICAgICAgICAgIHsgICA1NzU3LCBTSEVWQVQsICAgIDIsICAgICBNT05USCwgICAzLCAgICAgNTc1NywgTklTQU4sICAgICAyIH0sCisgICAgICAgICAgICB7ICAgNTc1NywgU0hFVkFULCAgICAyLCAgICAgTU9OVEgsICAxMiwgICAgIDU3NTcsIFRFVkVULCAgICAgMiB9LAorICAgICAgICAgICAgeyAgIDU3NTcsIFNIRVZBVCwgICAgMiwgICAgIE1PTlRILCAgMTMsICAgICA1NzU3LCBTSEVWQVQsICAgIDIgfSwKKyAgICAgICAgICAgIHsgICA1NzU3LCBBViwgICAgICAgIDEsICAgICBNT05USCwgIDEyLCAgICAgNTc1NywgVEFNVVosICAgICAxIH0sIC8vIEFsYW4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgeyAgIDU3NTcsIEtJU0xFViwgICAgMSwgICAgIERBVEUsICAgMzAsICAgICA1NzU3LCBLSVNMRVYsICAgIDIgfSwgICAvLyAyOS1kYXkgbW9udGgKKyAgICAgICAgICAgIHsgICA1NzU4LCBLSVNMRVYsICAgIDEsICAgICBEQVRFLCAgIDMxLCAgICAgNTc1OCwgS0lTTEVWLCAgICAyIH0sICAgLy8gMzAtZGF5IG1vbnRoCisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFRyeSBzb21lIG90aGVyIGZpZWxkcyB0b28KKyAgICAgICAgICAgIHsgICA1NzU3LCBUSVNIUkksICAgIDEsICAgICBZRUFSLCAgICAxLCAgICAgNTc1OCwgVElTSFJJLCAgICAxIH0sCisgICAKKworICAgICAgICAgICAgLy8gVHJ5IHNvbWUgcm9sbHMgdGhhdCByZXF1aXJlIG90aGVyIGZpZWxkcyB0byBiZSBhZGp1c3RlZAorICAgICAgICAgICAgeyAgIDU3NTcsIFRJU0hSSSwgICAzMCwgICAgIE1PTlRILCAgIDEsICAgICA1NzU3LCBIRVNIVkFOLCAgMjkgfSwKKyAgICAgICAgICAgIHsgICA1NzU4LCBLSVNMRVYsICAgMzAsICAgICBZRUFSLCAgIC0xLCAgICAgNTc1NywgS0lTTEVWLCAgIDI5IH0sCisgICAgICAgIH07CisgICAgICAgCisgICAgICAgIEhlYnJld0NhbGVuZGFyIGNhbCA9IG5ldyBIZWJyZXdDYWxlbmRhcihVVEMsIExvY2FsZS5nZXREZWZhdWx0KCkpOworCisgICAgICAgIGRvUm9sbEFkZChST0xMLCBjYWwsIHRlc3RzKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogVGVzdCB0aGUgYmVoYXZpb3Igb2YgSGVicmV3Q2FsZW5kYXIucm9sbAorICAgICAqIFRoZSBvbmx5IHJlYWwgbmFzdGluZXNzIHdpdGggcm9sbCBpcyB0aGUgTU9OVEggZmllbGQsIHNpbmNlIGEgeWVhciBjYW4KKyAgICAgKiBoYXZlIGEgdmFyaWFibGUgbnVtYmVyIG9mIG1vbnRocy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0QWRkKCkgeworICAgICAgICBpbnRbXVtdIHRlc3RzID0gbmV3IGludFtdW10geworICAgICAgICAgICAgLy8gICAgICAgaW5wdXQgICAgICAgICAgICAgICAgYWRkIGJ5ICAgICAgICAgIG91dHB1dAorICAgICAgICAgICAgLy8gIHllYXIgIG1vbnRoICAgICBkYXkgICAgIGZpZWxkIGFtb3VudCAgICB5ZWFyICBtb250aCAgICAgZGF5CisgICAgICAgICAgICB7ICAgNTc1OSwgSEVTSFZBTiwgICAyLCAgICAgTU9OVEgsICAgMSwgICAgIDU3NTksIEtJU0xFViwgICAgMiB9LCAgIC8vIG5vbi1sZWFwIHllYXJzCisgICAgICAgICAgICB7ICAgNTc1OSwgU0hFVkFULCAgICAyLCAgICAgTU9OVEgsICAgMSwgICAgIDU3NTksIEFEQVIsICAgICAgMiB9LAorICAgICAgICAgICAgeyAgIDU3NTksIFNIRVZBVCwgICAgMiwgICAgIE1PTlRILCAgIDIsICAgICA1NzU5LCBOSVNBTiwgICAgIDIgfSwKKyAgICAgICAgICAgIHsgICA1NzU5LCBTSEVWQVQsICAgIDIsICAgICBNT05USCwgIDEyLCAgICAgNTc2MCwgU0hFVkFULCAgICAyIH0sCisKKyAgICAgICAgICAgIHsgICA1NzU3LCBIRVNIVkFOLCAgIDIsICAgICBNT05USCwgICAxLCAgICAgNTc1NywgS0lTTEVWLCAgICAyIH0sICAgLy8gbGVhcCB5ZWFycworICAgICAgICAgICAgeyAgIDU3NTcsIFNIRVZBVCwgICAgMiwgICAgIE1PTlRILCAgIDEsICAgICA1NzU3LCBBREFSXzEsICAgIDIgfSwKKyAgICAgICAgICAgIHsgICA1NzU3LCBTSEVWQVQsICAgIDIsICAgICBNT05USCwgICAyLCAgICAgNTc1NywgQURBUiwgICAgICAyIH0sCisgICAgICAgICAgICB7ICAgNTc1NywgU0hFVkFULCAgICAyLCAgICAgTU9OVEgsICAgMywgICAgIDU3NTcsIE5JU0FOLCAgICAgMiB9LAorICAgICAgICAgICAgeyAgIDU3NTcsIFNIRVZBVCwgICAgMiwgICAgIE1PTlRILCAgMTIsICAgICA1NzU4LCBURVZFVCwgICAgIDIgfSwKKyAgICAgICAgICAgIHsgICA1NzU3LCBTSEVWQVQsICAgIDIsICAgICBNT05USCwgIDEzLCAgICAgNTc1OCwgU0hFVkFULCAgICAyIH0sCisgICAgICAgICAgICAKKyAgICAgICAgICAgIHsgICA1NzU3LCBLSVNMRVYsICAgIDEsICAgICBEQVRFLCAgIDMwLCAgICAgNTc1NywgVEVWRVQsICAgICAyIH0sICAgLy8gMjktZGF5IG1vbnRoCisgICAgICAgICAgICB7ICAgNTc1OCwgS0lTTEVWLCAgICAxLCAgICAgREFURSwgICAzMSwgICAgIDU3NTgsIFRFVkVULCAgICAgMiB9LCAgIC8vIDMwLWRheSBtb250aAorICAgICAgICB9OworICAgICAgIAorICAgICAgICBIZWJyZXdDYWxlbmRhciBjYWwgPSBuZXcgSGVicmV3Q2FsZW5kYXIoVVRDLCBMb2NhbGUuZ2V0RGVmYXVsdCgpKTsKKworICAgICAgICBkb1JvbGxBZGQoQURELCBjYWwsIHRlc3RzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBIGh1Z2UgbGlzdCBvZiB0ZXN0IGNhc2VzIHRvIG1ha2Ugc3VyZSB0aGF0IGNvbXB1dGVUaW1lIGFuZCBjb21wdXRlRmllbGRzCisgICAgICogd29yayBwcm9wZXJseSBmb3IgYSB3aWRlIHJhbmdlIG9mIGRhdGEuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdENhc2VzKCkgeworICAgICAgICBkb1Rlc3RDYXNlcyh0ZXN0Q2FzZXMsIG5ldyBIZWJyZXdDYWxlbmRhcigpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgZmluYWwgVGVzdENhc2VbXSB0ZXN0Q2FzZXMgPSB7CisgICAgICAgIC8vCisgICAgICAgIC8vIE1vc3Qgb2YgdGhlc2UgdGVzdCBjYXNlcyB3ZXJlIHRha2VuIGZyb20gdGhlIGJhY2sgb2YKKyAgICAgICAgLy8gIkNhbGVuZHJpY2FsIENhbGN1bGF0aW9ucyIsIHdpdGggc29tZSBleHRyYXMgYWRkZWQgdG8gaGVscAorICAgICAgICAvLyBkZWJ1ZyBhIGZldyBvZiB0aGUgcHJvYmxlbXMgdGhhdCBjcm9wcGVkIHVwIGluIGRldmVsb3BtZW50LgorICAgICAgICAvLworICAgICAgICAvLyBUaGUgbW9udGhzIGluIHRoaXMgdGFibGUgYXJlIDEtYmFzZWQgcmF0aGVyIHRoYW4gMC1iYXNlZCwKKyAgICAgICAgLy8gYmVjYXVzZSBpdCdzIGVhc2llciB0byBlZGl0IHRoYXQgd2F5LgorICAgICAgICAvLworICAgICAgICAvLyAgICAgICAgIEp1bGlhbiBEYXkgIEVyYSAgWWVhciAgTW9udGggRGF5ICBXa0RheSBIb3VyIE1pbiBTZWMKKyAgICAgICAgbmV3IFRlc3RDYXNlKDE1MDcyMzEuNSwgIDAsICAzMTc0LCAgIDEyLCAgMTAsICBTVU4sICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDE2NjAwMzcuNSwgIDAsICAzNTkzLCAgICAzLCAgMjUsICBXRUQsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDE3NDY4OTMuNSwgIDAsICAzODMxLCAgICAxLCAgIDMsICBXRUQsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDE3NzA2NDEuNSwgIDAsICAzODk2LCAgICAxLCAgIDksICBTVU4sICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDE4OTI3MzEuNSwgIDAsICA0MjMwLCAgICA0LCAgMTgsICBXRUQsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDE5MzE1NzkuNSwgIDAsICA0MzM2LCAgIDEwLCAgIDQsICBNT04sICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDE5NzQ4NTEuNSwgIDAsICA0NDU1LCAgICAyLCAgMTMsICBTQVQsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIwOTExNjQuNSwgIDAsICA0NzczLCAgICA5LCAgIDYsICBTVU4sICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIxMjE1MDkuNSwgIDAsICA0ODU2LCAgICA5LCAgMjMsICBTVU4sICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIxNTU3NzkuNSwgIDAsICA0OTUwLCAgICA4LCAgIDcsICBGUkksICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIxNzQwMjkuNSwgIDAsICA1MDAwLCAgICA3LCAgIDgsICBTQVQsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIxOTE1ODQuNSwgIDAsICA1MDQ4LCAgICA4LCAgMjEsICBGUkksICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIxOTUyNjEuNSwgIDAsICA1MDU4LCAgICA5LCAgIDcsICBTVU4sICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIyMjkyNzQuNSwgIDAsICA1MTUxLCAgIDExLCAgIDEsICBTVU4sICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIyNDU1ODAuNSwgIDAsICA1MTk2LCAgICA1LCAgIDcsICBXRUQsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIyNjYxMDAuNSwgIDAsICA1MjUyLCAgICA4LCAgIDMsICBTQVQsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIyODg1NDIuNSwgIDAsICA1MzE0LCAgICAxLCAgIDEsICBTQVQsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIyOTA5MDEuNSwgIDAsICA1MzIwLCAgICA2LCAgMjcsICBTQVQsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIzMjMxNDAuNSwgIDAsICA1NDA4LCAgIDEwLCAgMjAsICBXRUQsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIzMzQ1NTEuNSwgIDAsICA1NDQwLCAgICAxLCAgIDEsICBUSFUsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIzMzQ1ODEuNSwgIDAsICA1NDQwLCAgICAyLCAgIDEsICBTQVQsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIzMzQ2MTAuNSwgIDAsICA1NDQwLCAgICAzLCAgIDEsICBTVU4sICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIzMzQ2MzkuNSwgIDAsICA1NDQwLCAgICA0LCAgIDEsICBNT04sICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIzMzQ2NjguNSwgIDAsICA1NDQwLCAgICA1LCAgIDEsICBUVUUsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIzMzQ2OTguNSwgIDAsICA1NDQwLCAgICA2LCAgIDEsICBUSFUsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIzMzQ3MjguNSwgIDAsICA1NDQwLCAgICA3LCAgIDEsICBTQVQsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIzMzQ3NTcuNSwgIDAsICA1NDQwLCAgICA4LCAgIDEsICBTVU4sICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIzMzQ3ODcuNSwgIDAsICA1NDQwLCAgICA5LCAgIDEsICBUVUUsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIzMzQ4MTYuNSwgIDAsICA1NDQwLCAgIDEwLCAgIDEsICBXRUQsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIzMzQ4NDYuNSwgIDAsICA1NDQwLCAgIDExLCAgIDEsICBGUkksICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIzMzQ4NDguNSwgIDAsICA1NDQwLCAgIDExLCAgIDMsICBTVU4sICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIzMzQ5MzQuNSwgIDAsICA1NDQxLCAgICAxLCAgIDEsICBUVUUsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIzNDgwMjAuNSwgIDAsICA1NDc2LCAgIDEyLCAgIDUsICBGUkksICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIzNjY5NzguNSwgIDAsICA1NTI4LCAgIDExLCAgIDQsICBTVU4sICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIzODU2NDguNSwgIDAsICA1NTc5LCAgIDEyLCAgMTEsICBNT04sICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIzOTI4MjUuNSwgIDAsICA1NTk5LCAgICA4LCAgMTIsICBXRUQsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDI0MTYyMjMuNSwgIDAsICA1NjYzLCAgICA4LCAgMjIsICBTVU4sICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDI0MjU4NDguNSwgIDAsICA1Njg5LCAgIDEyLCAgMTksICBTVU4sICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDI0MzAyNjYuNSwgIDAsICA1NzAyLCAgICAxLCAgIDgsICBNT04sICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDI0MzA4MzMuNSwgIDAsICA1NzAzLCAgICA4LCAgMTQsICBNT04sICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDI0MzEwMDQuNSwgIDAsICA1NzA0LCAgICAxLCAgIDgsICBUSFUsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDI0NDg2OTguNSwgIDAsICA1NzUyLCAgICA3LCAgMTIsICBUVUUsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDI0NTAxMzguNSwgIDAsICA1NzU2LCAgICA3LCAgIDUsICBTVU4sICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDI0NjU3MzcuNSwgIDAsICA1Nzk5LCAgICAyLCAgMTIsICBXRUQsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDI0ODYwNzYuNSwgIDAsICA1ODU0LCAgIDEyLCAgIDUsICBTVU4sICAgMCwgIDAsICAwKSwKKworICAgICAgICAvLyBBZGRpdGlvbmFsIHRlc3QgY2FzZXMgZm9yIGJ1Z3MgZm91bmQgZHVyaW5nIGRldmVsb3BtZW50CisgICAgICAgIC8vICAgICAgICAgICBHLllZL01NL0REICBFcmEgIFllYXIgIE1vbnRoIERheSAgV2tEYXkgSG91ciBNaW4gU2VjCisgICAgICAgIG5ldyBUZXN0Q2FzZSgxMDEzLCA5LCA4LCAwLCAgNDc3NCwgICAgMSwgICAxLCAgVFVFLCAgIDAsICAwLCAgMCksCisgICAgICAgIG5ldyBUZXN0Q2FzZSgxMjM5LCA5LCAxLCAwLCAgNTAwMCwgICAgMSwgICAxLCAgVEhVLCAgIDAsICAwLCAgMCksCisgICAgICAgIG5ldyBUZXN0Q2FzZSgxMjQwLCA5LDE4LCAwLCAgNTAwMSwgICAgMSwgICAxLCAgVFVFLCAgIDAsICAwLCAgMCksCisKKyAgICAgICAgLy8gVGVzdCBjYXNlcyB0YWtlbiBmcm9tIGEgdGFibGUgb2YgMTQgInllYXIgdHlwZXMiIGluIHRoZSBIZWxwIGZpbGUKKyAgICAgICAgLy8gb2YgdGhlIGFwcGxpY2F0aW9uICJIZWJyZXcgQ2FsZW5kYXIiCisgICAgICAgIG5ldyBUZXN0Q2FzZSgyNDU2MTg3LjUsICAwLCAgNTc3MywgICAgMSwgICAxLCAgTU9OLCAgIDAsICAwLCAgMCksCisgICAgICAgIG5ldyBUZXN0Q2FzZSgyNDU5MTExLjUsICAwLCAgNTc4MSwgICAgMSwgICAxLCAgU0FULCAgIDAsICAwLCAgMCksCisgICAgICAgIG5ldyBUZXN0Q2FzZSgyNDUzNjQ3LjUsICAwLCAgNTc2NiwgICAgMSwgICAxLCAgVFVFLCAgIDAsICAwLCAgMCksCisgICAgICAgIG5ldyBUZXN0Q2FzZSgyNDYyMDM1LjUsICAwLCAgNTc4OSwgICAgMSwgICAxLCAgVEhVLCAgIDAsICAwLCAgMCksCisgICAgICAgIG5ldyBUZXN0Q2FzZSgyNDU4NzU2LjUsICAwLCAgNTc4MCwgICAgMSwgICAxLCAgTU9OLCAgIDAsICAwLCAgMCksCisgICAgICAgIG5ldyBUZXN0Q2FzZSgyNDYwNTg2LjUsICAwLCAgNTc4NSwgICAgMSwgICAxLCAgVEhVLCAgIDAsICAwLCAgMCksCisgICAgICAgIG5ldyBUZXN0Q2FzZSgyNDYzODY0LjUsICAwLCAgNTc5NCwgICAgMSwgICAxLCAgU0FULCAgIDAsICAwLCAgMCksCisgICAgICAgIG5ldyBUZXN0Q2FzZSgyNDYzNDgxLjUsICAwLCAgNTc5MywgICAgMSwgICAxLCAgTU9OLCAgIDAsICAwLCAgMCksCisgICAgICAgIG5ldyBUZXN0Q2FzZSgyNDcwNDIxLjUsICAwLCAgNTgxMiwgICAgMSwgICAxLCAgVEhVLCAgIDAsICAwLCAgMCksCisgICAgICAgIG5ldyBUZXN0Q2FzZSgyNDYwMjAzLjUsICAwLCAgNTc4NCwgICAgMSwgICAxLCAgU0FULCAgIDAsICAwLCAgMCksCisgICAgICAgIG5ldyBUZXN0Q2FzZSgyNDU5NDY0LjUsICAwLCAgNTc4MiwgICAgMSwgICAxLCAgVFVFLCAgIDAsICAwLCAgMCksCisgICAgICAgIG5ldyBUZXN0Q2FzZSgyNDY3MTQyLjUsICAwLCAgNTgwMywgICAgMSwgICAxLCAgTU9OLCAgIDAsICAwLCAgMCksCisgICAgICAgIG5ldyBUZXN0Q2FzZSgyNDU1NDQ4LjUsICAwLCAgNTc3MSwgICAgMSwgICAxLCAgVEhVLCAgIDAsICAwLCAgMCksCisgICAgICAgIG5ldyBUZXN0Q2FzZSgyNDg3MjIzLjUsICAwLCAgNTg1OCwgICAgMSwgICAxLCAgU0FULCAgIDAsICAwLCAgMCksCisgICAgfTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBQcm9ibGVtIHJlcG9ydGVkIGJ5IEFybWFuZCBCZW5kYW5hbiBpbiB3aGljaCBzZXR0aW5nIG9mIHRoZSBNT05USAorICAgICAqIGZpZWxkIGluIGEgSGVicmV3IGNhbGVuZGFyIGNhdXNlcyB0aGUgdGltZSBmaWVsZHMgdG8gZ28gbmVnYXRpdmUuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdFRpbWVGaWVsZHMoKSB7CisgICAgICAgIEhlYnJld0NhbGVuZGFyIGNhbGVuZGFyID0gbmV3IEhlYnJld0NhbGVuZGFyKDU3NjEsIDAsIDExLCAxMiwgMjgsIDE1KTsKKwkJY2FsZW5kYXIuc2V0KENhbGVuZGFyLllFQVIsIDU3MTcpOworCQljYWxlbmRhci5zZXQoQ2FsZW5kYXIuTU9OVEgsIDIpOworCQljYWxlbmRhci5zZXQoQ2FsZW5kYXIuREFZX09GX01PTlRILCAyMyk7CisgICAgICAgIGlmIChjYWxlbmRhci5nZXQoQ2FsZW5kYXIuSE9VUl9PRl9EQVkpICE9IDEyKSB7CisgICAgICAgICAgICBlcnJsbigiRmFpbDogSGVicmV3Q2FsZW5kYXIgSE9VUl9PRl9EQVkgPSAiICsgY2FsZW5kYXIuZ2V0KENhbGVuZGFyLkhPVVJfT0ZfREFZKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXN0IG9mIHRoZSBiZWhhdmlvciBvZiB0aGUgbW9udGggZmllbGQuICBUaGlzIHJlcXVpcmVzIHNwZWNpYWwKKyAgICAgKiBoYW5kbGluZyBpbiB0aGUgSGVicmV3IGNhbGVuZGFyIGJlY2F1c2Ugb2YgdGhlIHBhdHRlcm4gb2YgbGVhcAorICAgICAqIHllYXJzLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RNb250aE1vdmVtZW50KCkgeworICAgICAgICBIZWJyZXdDYWxlbmRhciBjYWwgPSBuZXcgSGVicmV3Q2FsZW5kYXIoKTsKKyAgICAgICAgLy8gTGVhcCB5ZWFycyBhcmU6CisgICAgICAgIC8vIDMgNiA4IDExIDE0IDE3IDE5IChhbmQgc28gb24gLSAxOS15ZWFyIGN5Y2xlKQorICAgICAgICAvLyBXZSBjYW4ndCB0ZXN0IGNvbXBsZXRlKCkgb24gc29tZSBsaW5lcyBiZWxvdyBiZWNhdXNlIG9mIEFEQVJfMSAtLSBpZgorICAgICAgICAvLyB0aGUgY2FsZW5kYXIgaXMgc2V0IHRvIEFEQVJfMSBvbiBhIG5vbi1sZWFwIHllYXIsIHRoZSByZXN1bHQgaXMgdW5kZWZpbmVkLgorICAgICAgICBpbnRbXSBEQVRBID0geworICAgICAgICAgICAgLy8gYyAgICAgLSB0ZXN0IGNvbXBsZXRlKCkgb3Igbm90CisgICAgICAgICAgICAvLyBtL3kgICAtIGJlZm9yZSBhbmQgYWZ0ZXIgbW9udGgveWVhcgorICAgICAgICAgICAgLy8gZGVsdGEgLSBhbW91bnQgdG8gYWRkIHRvIG1vbnRoIGZpZWxkCisgICAgICAgICAgICAvL2MgbTEgIHkxIGRlbHRhICBtMiAgeTIKKyAgICAgICAgICAgIDEsICAxMCwgIDIsICArMjQsICA5LCAgNCwgLy8gKHllYXIgMiwgbW9udGggMTApICsgMjQgbW9udGhzIC0+ICh5IDQsIG0gOSkKKyAgICAgICAgICAgIDEsICAxMCwgIDIsICArNjAsICA4LCAgNywgLy8gKHkgMiwgbSAxMCkgKyA2MCBtb250aHMgLT4gKHkgNywgbSA4KQorICAgICAgICAgICAgMSwgICAxLCAgMiwgICsxMiwgIDEsICAzLCAvLyAoeSAyLCBtIDEpICsgMTIgbW9udGhzIC0+ICh5IDMsIG0gMSkKKyAgICAgICAgICAgIDEsICAgMywgMTgsICAtMjQsICA0LCAxNiwgLy8gKHkgMTgsIG0gMykgLSAyNCBtb250aHMgLT4gKHkgMTYsIG0gNCkKKyAgICAgICAgICAgIDEsICAgMSwgIDYsICAtMjQsICAxLCAgNCwKKyAgICAgICAgICAgIDEsICAgNCwgIDMsICAgKzIsICA2LCAgMywgLy8gTGVhcCB5ZWFyIC0gbm8gc2tpcCA0LDUsNiw3LDgKKyAgICAgICAgICAgIDEsICAgOCwgIDMsICAgLTIsICA2LCAgMywgLy8gTGVhcCB5ZWFyIC0gbm8gc2tpcAorICAgICAgICAgICAgMCwgICA0LCAgMiwgICArMiwgIDcsICAyLCAvLyBTa2lwIG92ZXIgbGVhcCBtb250aCA0LDUsKDYpLDcsOAorICAgICAgICAgICAgMCwgICA4LCAgMiwgICAtMiwgIDUsICAyLCAvLyBTa2lwIG92ZXIgbGVhcCBtb250aCBnb2luZyBiYWNrd2FyZAorICAgICAgICB9OworICAgICAgICBmb3IgKGludCBpPTA7IGk8REFUQS5sZW5ndGg7ICkgeworICAgICAgICAgICAgYm9vbGVhbiB0ZXN0Q29tcGxldGUgPSBEQVRBW2krK10gIT0gMDsKKyAgICAgICAgICAgIGludCBtID0gREFUQVtpKytdLCB5ID0gREFUQVtpKytdOworICAgICAgICAgICAgaW50IG1vbnRoRGVsdGEgPSBEQVRBW2krK107CisgICAgICAgICAgICBpbnQgbTIgPSBEQVRBW2krK10sIHkyID0gREFUQVtpKytdOworICAgICAgICAgICAgaW50IG1hY3QsIHlhY3Q7CisKKyAgICAgICAgICAgIGNhbC5jbGVhcigpOworICAgICAgICAgICAgY2FsLnNldChDYWxlbmRhci5ZRUFSLCB5KTsKKyAgICAgICAgICAgIGNhbC5zZXQoQ2FsZW5kYXIuTU9OVEgsIG0tMSk7CisgICAgICAgICAgICBjYWwuYWRkKENhbGVuZGFyLk1PTlRILCBtb250aERlbHRhKTsKKyAgICAgICAgICAgIHlhY3QgPSBjYWwuZ2V0KENhbGVuZGFyLllFQVIpOyBtYWN0ID0gY2FsLmdldChDYWxlbmRhci5NT05USCkgKyAxOworICAgICAgICAgICAgaWYgKHkyICE9IHlhY3QgfHwgbTIgIT0gbWFjdCkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGYWlsOiAiICsgbSArICIvIiArIHkgKworICAgICAgICAgICAgICAgICAgICAgICIgLT4gYWRkKE1PTlRILCAiICsgbW9udGhEZWx0YSArICIpIC0+ICIgKworICAgICAgICAgICAgICAgICAgICAgIG1hY3QgKyAiLyIgKyB5YWN0ICsgIiwgZXhwZWN0ZWQgIiArCisgICAgICAgICAgICAgICAgICAgICAgbTIgKyAiLyIgKyB5Mik7CisgICAgICAgICAgICAgICAgY2FsLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY2FsLnNldChDYWxlbmRhci5ZRUFSLCB5KTsKKyAgICAgICAgICAgICAgICBjYWwuc2V0KENhbGVuZGFyLk1PTlRILCBtLTEpOworICAgICAgICAgICAgICAgIGxvZ2xuKCJTdGFydDogIiArIG0gKyAiLyIgKyB5KTsKKyAgICAgICAgICAgICAgICBpbnQgZGVsdGEgPSBtb250aERlbHRhID4gMCA/IDEgOiAtMTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBjPTA7IGMhPW1vbnRoRGVsdGE7IGMrPWRlbHRhKSB7CisgICAgICAgICAgICAgICAgICAgIGNhbC5hZGQoQ2FsZW5kYXIuTU9OVEgsIGRlbHRhKTsKKyAgICAgICAgICAgICAgICAgICAgbG9nbG4oIisgIiArIGRlbHRhICsgIiBNT05USCAtPiAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhbC5nZXQoQ2FsZW5kYXIuTU9OVEgpICsgMSkgKyAiLyIgKyBjYWwuZ2V0KENhbGVuZGFyLllFQVIpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICh0ZXN0Q29tcGxldGUpIHsKKyAgICAgICAgICAgICAgICBjYWwuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjYWwuc2V0KENhbGVuZGFyLllFQVIsIHkpOworICAgICAgICAgICAgICAgIGNhbC5zZXQoQ2FsZW5kYXIuTU9OVEgsIG0gKyBtb250aERlbHRhIC0gMSk7CisgICAgICAgICAgICAgICAgeWFjdCA9IGNhbC5nZXQoQ2FsZW5kYXIuWUVBUik7IG1hY3QgPSBjYWwuZ2V0KENhbGVuZGFyLk1PTlRIKSArIDE7CisgICAgICAgICAgICAgICAgaWYgKHkyICE9IHlhY3QgfHwgbTIgIT0gbWFjdCkgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigiRmFpbDogIiArIChtK21vbnRoRGVsdGEpICsgIi8iICsgeSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICIgLT4gY29tcGxldGUoKSAtPiAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjdCArICIvIiArIHlhY3QgKyAiLCBleHBlY3RlZCAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbTIgKyAiLyIgKyB5Mik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdCBoYW5kbGluZyBvZiBBREFSXzEuCisgICAgICovCisgICAgLyoKKyAgICBwdWJsaWMgdm9pZCBUZXN0QWRhcjEoKSB7CisgICAgICAgIEhlYnJld0NhbGVuZGFyIGNhbCA9IG5ldyBIZWJyZXdDYWxlbmRhcigpOworICAgICAgICBjYWwuY2xlYXIoKTsKKyAgICAgICAgY2FsLnNldChDYWxlbmRhci5ZRUFSLCAxOTAzKTsgLy8gbGVhcAorICAgICAgICBjYWwuc2V0KENhbGVuZGFyLk1PTlRILCBIZWJyZXdDYWxlbmRhci5BREFSXzEpOworICAgICAgICBsb2dsbigiMTkwMyhsZWFwKS9BREFSXzEgPT4gIiArCisgICAgICAgICAgICAgIGNhbC5nZXQoQ2FsZW5kYXIuWUVBUikgKyAiLyIgKyAoY2FsLmdldChDYWxlbmRhci5NT05USCkrMSkpOworCisgICAgICAgIGNhbC5jbGVhcigpOworICAgICAgICBjYWwuc2V0KENhbGVuZGFyLllFQVIsIDE5MDQpOyAvLyBub24tbGVhcAorICAgICAgICBjYWwuc2V0KENhbGVuZGFyLk1PTlRILCBIZWJyZXdDYWxlbmRhci5BREFSXzEpOworICAgICAgICBsb2dsbigiMTkwNChub24tbGVhcCkvQURBUl8xID0+ICIgKworICAgICAgICAgICAgICBjYWwuZ2V0KENhbGVuZGFyLllFQVIpICsgIi8iICsgKGNhbC5nZXQoQ2FsZW5kYXIuTU9OVEgpKzEpKTsKKyAgICB9CisgICAgKi8KKworICAgIC8qKgorICAgICAqIFdpdGggbm8gZmllbGRzIHNldCwgdGhlIGNhbGVuZGFyIHNob3VsZCB1c2UgZGVmYXVsdCB2YWx1ZXMuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdERlZmF1bHRGaWVsZFZhbHVlcygpIHsKKyAgICAgICAgSGVicmV3Q2FsZW5kYXIgY2FsID0gbmV3IEhlYnJld0NhbGVuZGFyKCk7CisgICAgICAgIGNhbC5jbGVhcigpOworICAgICAgICBsb2dsbigiY2FsLmNsZWFyKCkgLT4gIiArIGNhbC5nZXRUaW1lKCkpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0Q292ZXJhZ2UoKSB7CisJeworCSAgICAvLyBuZXcgSGVicmV3Q2FsZW5kYXIoVGltZVpvbmUpCisJICAgIEhlYnJld0NhbGVuZGFyIGNhbCA9IG5ldyBIZWJyZXdDYWxlbmRhcihUaW1lWm9uZS5nZXREZWZhdWx0KCkpOworCX0KKworCXsKKwkgICAgLy8gbmV3IEhlYnJld0NhbGVuZGFyKExvY2FsZSkKKwkgICAgSGVicmV3Q2FsZW5kYXIgY2FsID0gbmV3IEhlYnJld0NhbGVuZGFyKExvY2FsZS5nZXREZWZhdWx0KCkpOworCX0KKworCXsKKwkgICAgLy8gbmV3IEhlYnJld0NhbGVuZGFyKERhdGUpCisJICAgIEhlYnJld0NhbGVuZGFyIGNhbCA9IG5ldyBIZWJyZXdDYWxlbmRhcihuZXcgRGF0ZSgpKTsKKwl9CisKKwl7CisJICAgIC8vIGRhdGEKKwkgICAgSGVicmV3Q2FsZW5kYXIgY2FsID0gbmV3IEhlYnJld0NhbGVuZGFyKDI4MDAsIEhlYnJld0NhbGVuZGFyLlNIRVZBVCwgMSk7CisJICAgIERhdGUgdGltZSA9IGNhbC5nZXRUaW1lKCk7CisKKwkgICAgU3RyaW5nW10gY2FsZW5kYXJMb2NhbGVzID0geworCQkiaXdfSUwiCisJICAgIH07CisKKwkgICAgU3RyaW5nW10gZm9ybWF0TG9jYWxlcyA9IHsKKwkJImVuIiwgImZpIiwgImZyIiwgImh1IiwgIml3IiwgIm5sIgorCSAgICB9OworCSAgICBmb3IgKGludCBpID0gMDsgaSA8IGNhbGVuZGFyTG9jYWxlcy5sZW5ndGg7ICsraSkgeworCQlTdHJpbmcgY2FsTG9jTmFtZSA9IGNhbGVuZGFyTG9jYWxlc1tpXTsKKwkJTG9jYWxlIGNhbExvY2FsZSA9IExvY2FsZVV0aWxpdHkuZ2V0TG9jYWxlRnJvbU5hbWUoY2FsTG9jTmFtZSk7CisJCWNhbCA9IG5ldyBIZWJyZXdDYWxlbmRhcihjYWxMb2NhbGUpOworCisJCWZvciAoaW50IGogPSAwOyBqIDwgZm9ybWF0TG9jYWxlcy5sZW5ndGg7ICsraikgeworCQkgICAgU3RyaW5nIGxvY05hbWUgPSBmb3JtYXRMb2NhbGVzW2pdOworCQkgICAgTG9jYWxlIGZvcm1hdExvY2FsZSA9IExvY2FsZVV0aWxpdHkuZ2V0TG9jYWxlRnJvbU5hbWUobG9jTmFtZSk7CisJCSAgICBEYXRlRm9ybWF0IGZvcm1hdCA9IERhdGVGb3JtYXQuZ2V0RGF0ZVRpbWVJbnN0YW5jZShjYWwsIERhdGVGb3JtYXQuRlVMTCwgRGF0ZUZvcm1hdC5GVUxMLCBmb3JtYXRMb2NhbGUpOworCQkgICAgbG9nbG4oY2FsTG9jTmFtZSArICIvIiArIGxvY05hbWUgKyAiIC0tPiAiICsgZm9ybWF0LmZvcm1hdCh0aW1lKSk7CisJCX0KKwkgICAgfQorCX0KKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NhbGVuZGFyL0hvbGlkYXlUZXN0LmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY2FsZW5kYXIvSG9saWRheVRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMWRiYWI2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NhbGVuZGFyL0hvbGlkYXlUZXN0LmphdmEKQEAgLTAsMCArMSwxNDAgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9jYWxlbmRhci9Ib2xpZGF5VGVzdC5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzEyLzE4IDIxOjIwOjUyICQgCisgKiAkUmV2aXNpb246IDEuMyAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3QuY2FsZW5kYXI7CisKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworCitpbXBvcnQgY29tLmlibS5pY3UuZGV2LnRlc3QuVGVzdEZtd2s7CisKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLkxvY2FsZVV0aWxpdHk7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC5EYXRlRm9ybWF0OworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuQ2FsZW5kYXI7CitpbXBvcnQgY29tLmlibS5pY3UudXRpbC5FYXN0ZXJIb2xpZGF5OworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuR3JlZ29yaWFuQ2FsZW5kYXI7CitpbXBvcnQgY29tLmlibS5pY3UudXRpbC5Ib2xpZGF5OworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuUmFuZ2VEYXRlUnVsZTsKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLlNpbXBsZURhdGVSdWxlOworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuU2ltcGxlSG9saWRheTsKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLlRpbWVab25lOworCisvKioKKyAqIFRlc3RzIGZvciB0aGUgPGNvZGU+SG9saWRheTwvY29kZT4gY2xhc3MuCisgKi8KK3B1YmxpYyBjbGFzcyBIb2xpZGF5VGVzdCBleHRlbmRzIFRlc3RGbXdrIHsKKwlwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgYXJnc1tdKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkJbmV3IEhvbGlkYXlUZXN0KCkucnVuKGFyZ3MpOworCX0KKworCXN0YXRpYyBmaW5hbCBDYWxlbmRhciBjYWwgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoMSwgMCwgMSk7CisJc3RhdGljIGZpbmFsIERhdGUgbG9uZ1RpbWVBZ28gPSBjYWwuZ2V0VGltZSgpOworCXN0YXRpYyBmaW5hbCBEYXRlIG5vdyA9IG5ldyBEYXRlKCk7CisJc3RhdGljIGZpbmFsIGxvbmcgYXdoaWxlID0gMzYwMEwgKiAyNCAqIDI4OyAvLyAyOCBkYXlzCisKKwlwdWJsaWMgdm9pZCBUZXN0QVBJKCkgeworCQl7CisJCQkvLyBnZXRIb2xpZGF5cworCQkJSG9saWRheVtdIGhvbGlkYXlzID0gSG9saWRheS5nZXRIb2xpZGF5cygpOworCQkJZXhlcmNpc2VIb2xpZGF5cyhob2xpZGF5cywgTG9jYWxlLmdldERlZmF1bHQoKSk7CisJCX0KKworCQl7CisJCQkvLyBnZXRIb2xpZGF5cyhMb2NhbGUpCisJCQlTdHJpbmdbXSBsb2NhbGVOYW1lcyA9CisJCQkJeworCQkJCQkiZW5fVVMiLAorCQkJCQkiZGEiLAorCQkJCQkiZGFfREsiLAorCQkJCQkiZGUiLAorCQkJCQkiZGVfQVQiLAorCQkJCQkiZGVfREUiLAorCQkJCQkiZWwiLAorCQkJCQkiZWxfR1IiLAorCQkJCQkiZW4iLAorCQkJCQkiZW5fQ0EiLAorCQkJCQkiZW5fR0IiLAorCQkJCQkiZXMiLAorCQkJCQkiZXNfTVgiLAorCQkJCQkiZnIiLAorCQkJCQkiZnJfQ0EiLAorCQkJCQkiZnJfRlIiLAorCQkJCQkiaXQiLAorCQkJCQkiaXRfSVQiLAorCQkJCQkiaXciLAorCQkJCQkiaXdfSUwiLAorCQkJCQkiamEiLAorCQkJCQkiamFfSlAiLAorCQkJCQl9OworCisJCQlmb3IgKGludCBpID0gMDsgaSA8IGxvY2FsZU5hbWVzLmxlbmd0aDsgKytpKSB7CisJCQkJTG9jYWxlIGxvY2FsZSA9IExvY2FsZVV0aWxpdHkuZ2V0TG9jYWxlRnJvbU5hbWUobG9jYWxlTmFtZXNbaV0pOworCQkJCUhvbGlkYXlbXSBob2xpZGF5cyA9IEhvbGlkYXkuZ2V0SG9saWRheXMobG9jYWxlKTsKKwkJCQlleGVyY2lzZUhvbGlkYXlzKGhvbGlkYXlzLCBsb2NhbGUpOworCQkJfQorCQl9CisJfQorCisJdm9pZCBleGVyY2lzZUhvbGlkYXlzKEhvbGlkYXlbXSBob2xpZGF5cywgTG9jYWxlIGxvY2FsZSkgeworCQlmb3IgKGludCBpID0gMDsgaSA8IGhvbGlkYXlzLmxlbmd0aDsgKytpKSB7CisJCQlleGVyY2lzZUhvbGlkYXkoaG9saWRheXNbaV0sIGxvY2FsZSk7CisJCX0KKwl9CisKKwl2b2lkIGV4ZXJjaXNlSG9saWRheShIb2xpZGF5IGgsIExvY2FsZSBsb2NhbGUpIHsKKwkJbG9nbG4oImhvbGlkYXk6ICIgKyBoLmdldERpc3BsYXlOYW1lKCkpOworCQlsb2dsbigiaG9saWRheSBpbiAiICsgbG9jYWxlICsgIjogIiArIGguZ2V0RGlzcGxheU5hbWUobG9jYWxlKSk7CisKKwkJRGF0ZSBmaXJzdCA9IGguZmlyc3RBZnRlcihsb25nVGltZUFnbyk7CisJCWxvZ2xuKCJmaXJzdEFmdGVyOiAiICsgbG9uZ1RpbWVBZ28gKyAiIGlzICIgKyBmaXJzdCk7CisJCWlmIChmaXJzdCA9PSBudWxsKSB7CisJCQlmaXJzdCA9IGxvbmdUaW1lQWdvOworCQl9CisJCWZpcnN0LnNldFRpbWUoZmlyc3QuZ2V0VGltZSgpICsgYXdoaWxlKTsKKworCQlEYXRlIHNlY29uZCA9IGguZmlyc3RCZXR3ZWVuKGZpcnN0LCBub3cpOworCQlsb2dsbigiZmlyc3RCZXR3ZWVuOiAiICsgZmlyc3QgKyAiIGFuZCAiICsgbm93ICsgIiBpcyAiICsgc2Vjb25kKTsKKwkJaWYgKHNlY29uZCA9PSBudWxsKSB7CisJCQlzZWNvbmQgPSBub3c7CisJCX0KKworCQlsb2dsbigiaXMgb24gIiArIGZpcnN0ICsgIjogIiArIGguaXNPbihmaXJzdCkpOworCQlsb2dsbigiaXMgb24gIiArIG5vdyArICI6ICIgKyBoLmlzT24obm93KSk7CisJCWxvZ2xuKAorCQkJImlzIGJldHdlZW4gIgorCQkJCSsgZmlyc3QKKwkJCQkrICIgYW5kICIKKwkJCQkrIG5vdworCQkJCSsgIjogIgorCQkJCSsgaC5pc0JldHdlZW4oZmlyc3QsIG5vdykpOworCQlsb2dsbigKKwkJCSJpcyBiZXR3ZWVuICIKKwkJCQkrIGZpcnN0CisJCQkJKyAiIGFuZCAiCisJCQkJKyBzZWNvbmQKKwkJCQkrICI6ICIKKwkJCQkrIGguaXNCZXR3ZWVuKGZpcnN0LCBzZWNvbmQpKTsKKworCQlsb2dsbigicnVsZTogIiArIGguZ2V0UnVsZSgpLnRvU3RyaW5nKCkpOworCisJCWguc2V0UnVsZShoLmdldFJ1bGUoKSk7CisJfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RDb3ZlcmFnZSgpeworICAgICAgICBIb2xpZGF5W10gaCA9IHsgbmV3IEVhc3RlckhvbGlkYXkoIlJhbSdzIEVhc3RlciIpLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoMiwgMjksIDAsICJMZWFwIHllYXIiLCAxOTAwLCAyMTAwKX07CisgICAgICAgIGV4ZXJjaXNlSG9saWRheXMoaCwgTG9jYWxlLmdldERlZmF1bHQoKSk7CisKKyAgICAgICAgUmFuZ2VEYXRlUnVsZSByZHIgPSBuZXcgUmFuZ2VEYXRlUnVsZSgpOworICAgICAgICByZHIuYWRkKG5ldyBTaW1wbGVEYXRlUnVsZSg3LCAxNSkpOworICAgIH0KKyB9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY2FsZW5kYXIvSUJNQ2FsZW5kYXJUZXN0LmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY2FsZW5kYXIvSUJNQ2FsZW5kYXJUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMTllMTNlZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9jYWxlbmRhci9JQk1DYWxlbmRhclRlc3QuamF2YQpAQCAtMCwwICsxLDM1NSBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NhbGVuZGFyL0lCTUNhbGVuZGFyVGVzdC5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzEyLzE4IDAwOjQ0OjM5ICQgCisgKiAkUmV2aXNpb246IDEuMTIgJAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudGVzdC5jYWxlbmRhcjsKKworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CisKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLkxvY2FsZVV0aWxpdHk7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC5EYXRlRm9ybWF0OworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuU2ltcGxlRGF0ZUZvcm1hdDsKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLio7CisKKy8qKgorICogQHRlc3QKKyAqIEBzdW1tYXJ5IFRlc3RzIG9mIG5ldyBmdW5jdGlvbmFsaXR5IGluIElCTUNhbGVuZGFyCisgKi8KK3B1YmxpYyBjbGFzcyBJQk1DYWxlbmRhclRlc3QgZXh0ZW5kcyBDYWxlbmRhclRlc3QgeworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIG5ldyBJQk1DYWxlbmRhclRlc3QoKS5ydW4oYXJncyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdCB3ZWVrZW5kIHN1cHBvcnQgaW4gSUJNQ2FsZW5kYXIuCisgICAgICoKKyAgICAgKiBOT1RFOiBUaGlzIHRlc3Qgd2lsbCBoYXZlIHRvIGJlIHVwZGF0ZWQgd2hlbiB0aGUgaXNXZWVrZW5kKCkgZXRjLgorICAgICAqICAgICAgIEFQSSBpcyBmaW5hbGl6ZWQgbGF0ZXIuCisgICAgICoKKyAgICAgKiAgICAgICBJbiBwYXJ0aWN1bGFyLCB0aGUgdGVzdCB3aWxsIGhhdmUgdG8gYmUgcmV3cml0dGVuIHRvIGluc3RhbnRpYXRlCisgICAgICogICAgICAgYSBDYWxlbmRhciBpbiB0aGUgZ2l2ZW4gbG9jYWxlICh1c2luZyBnZXRJbnN0YW5jZSgpKSBhbmQgY2FsbAorICAgICAqICAgICAgIHRoYXQgQ2FsZW5kYXIncyBpc1dlZWtlbmQoKSBldGMuIG1ldGhvZHMuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdFdlZWtlbmQoKSB7CisgICAgICAgIFNpbXBsZURhdGVGb3JtYXQgZm10ID0gbmV3IFNpbXBsZURhdGVGb3JtYXQoIkVFRSBNTU0gZGQgeXl5eSBHIEhIOm1tOnNzLlNTUyIpOworICAgICAgICAKKyAgICAgICAgLy8gTk9URQorICAgICAgICAvLyBUaGlzIHRlc3QgdGVzdHMgZm9yIHNwZWNpZmljIGxvY2FsZSBkYXRhLiAgVGhpcyBpcyBwcm9iYWJseSBva2F5CisgICAgICAgIC8vIGFzIGZhciBhcyBVUyBkYXRhIGlzIGNvbmNlcm5lZCwgYnV0IGlmIHRoZSBBcmFiaWMvQmFocmFpbiBkYXRhCisgICAgICAgIC8vIGNoYW5nZXMsIHRoaXMgdGVzdCB3aWxsIGhhdmUgdG8gYmUgdXBkYXRlZC4KKworICAgICAgICAvLyBUZXN0IHNwZWNpZmljIGRheXMKKyAgICAgICAgT2JqZWN0W10gREFUQTEgPSB7CisgICAgICAgICAgICBMb2NhbGUuVVMsIG5ldyBpbnRbXSB7IC8vIFNhdHVyZGF5OlN1bmRheQorICAgICAgICAgICAgICAgIDIwMDAsIENhbGVuZGFyLk1BUkNILCAxNywgMjMsICAwLCAwLCAvLyBGcmkgMjM6MDAKKyAgICAgICAgICAgICAgICAyMDAwLCBDYWxlbmRhci5NQVJDSCwgMTgsICAwLCAtMSwgMCwgLy8gRnJpIDIzOjU5OjU5Ljk5OQorICAgICAgICAgICAgICAgIDIwMDAsIENhbGVuZGFyLk1BUkNILCAxOCwgIDAsICAwLCAxLCAvLyBTYXQgMDA6MDAKKyAgICAgICAgICAgICAgICAyMDAwLCBDYWxlbmRhci5NQVJDSCwgMTgsIDE1LCAgMCwgMSwgLy8gU2F0IDE1OjAwCisgICAgICAgICAgICAgICAgMjAwMCwgQ2FsZW5kYXIuTUFSQ0gsIDE5LCAyMywgIDAsIDEsIC8vIFN1biAyMzowMAorICAgICAgICAgICAgICAgIDIwMDAsIENhbGVuZGFyLk1BUkNILCAyMCwgIDAsIC0xLCAxLCAvLyBTdW4gMjM6NTk6NTkuOTk5CisgICAgICAgICAgICAgICAgMjAwMCwgQ2FsZW5kYXIuTUFSQ0gsIDIwLCAgMCwgIDAsIDAsIC8vIE1vbiAwMDowMAorICAgICAgICAgICAgICAgIDIwMDAsIENhbGVuZGFyLk1BUkNILCAyMCwgIDgsICAwLCAwLCAvLyBNb24gMDg6MDAKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBuZXcgTG9jYWxlKCJhciIsICJCSCIpLCBuZXcgaW50W10geyAvLyBUaHVyc2RheTpGcmlkYXkKKyAgICAgICAgICAgICAgICAyMDAwLCBDYWxlbmRhci5NQVJDSCwgMTUsIDIzLCAgMCwgMCwgLy8gV2VkIDIzOjAwCisgICAgICAgICAgICAgICAgMjAwMCwgQ2FsZW5kYXIuTUFSQ0gsIDE2LCAgMCwgLTEsIDAsIC8vIFdlZCAyMzo1OTo1OS45OTkKKyAgICAgICAgICAgICAgICAyMDAwLCBDYWxlbmRhci5NQVJDSCwgMTYsICAwLCAgMCwgMSwgLy8gVGh1IDAwOjAwCisgICAgICAgICAgICAgICAgMjAwMCwgQ2FsZW5kYXIuTUFSQ0gsIDE2LCAxNSwgIDAsIDEsIC8vIFRodSAxNTowMAorICAgICAgICAgICAgICAgIDIwMDAsIENhbGVuZGFyLk1BUkNILCAxNywgMjMsICAwLCAxLCAvLyBGcmkgMjM6MDAKKyAgICAgICAgICAgICAgICAyMDAwLCBDYWxlbmRhci5NQVJDSCwgMTgsICAwLCAtMSwgMSwgLy8gRnJpIDIzOjU5OjU5Ljk5OQorICAgICAgICAgICAgICAgIDIwMDAsIENhbGVuZGFyLk1BUkNILCAxOCwgIDAsICAwLCAwLCAvLyBTYXQgMDA6MDAKKyAgICAgICAgICAgICAgICAyMDAwLCBDYWxlbmRhci5NQVJDSCwgMTgsICA4LCAgMCwgMCwgLy8gU2F0IDA4OjAwCisgICAgICAgICAgICB9LAorICAgICAgICB9OworCisgICAgICAgIC8vIFRlc3QgZGF5cyBvZiB0aGUgd2VlaworICAgICAgICBPYmplY3RbXSBEQVRBMiA9IHsKKyAgICAgICAgICAgIExvY2FsZS5VUywgbmV3IGludFtdIHsKKyAgICAgICAgICAgICAgICBDYWxlbmRhci5NT05EQVksICAgQ2FsZW5kYXIuV0VFS0RBWSwKKyAgICAgICAgICAgICAgICBDYWxlbmRhci5GUklEQVksICAgQ2FsZW5kYXIuV0VFS0RBWSwKKyAgICAgICAgICAgICAgICBDYWxlbmRhci5TQVRVUkRBWSwgQ2FsZW5kYXIuV0VFS0VORCwKKyAgICAgICAgICAgICAgICBDYWxlbmRhci5TVU5EQVksICAgQ2FsZW5kYXIuV0VFS0VORCwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBuZXcgTG9jYWxlKCJhciIsICJCSCIpLCBuZXcgaW50W10geyAvLyBUaHVyc2RheTpGcmlkYXkKKyAgICAgICAgICAgICAgICBDYWxlbmRhci5XRURORVNEQVksQ2FsZW5kYXIuV0VFS0RBWSwKKyAgICAgICAgICAgICAgICBDYWxlbmRhci5TQVRVUkRBWSwgQ2FsZW5kYXIuV0VFS0RBWSwKKyAgICAgICAgICAgICAgICBDYWxlbmRhci5USFVSU0RBWSwgQ2FsZW5kYXIuV0VFS0VORCwKKyAgICAgICAgICAgICAgICBDYWxlbmRhci5GUklEQVksICAgQ2FsZW5kYXIuV0VFS0VORCwKKyAgICAgICAgICAgIH0sCisgICAgICAgIH07CisKKyAgICAgICAgLy8gV2Ugb25seSB0ZXN0IHRoZSBnZXREYXlPZldlZWtUeXBlKCkgYW5kIGlzV2Vla2VuZCgpIEFQSXMuCisgICAgICAgIC8vIFRoZSBnZXRXZWVrZW5kVHJhbnNpdGlvbigpIEFQSSBpcyB0ZXN0ZWQgaW5kaXJlY3RseSB2aWEgdGhlCisgICAgICAgIC8vIGlzV2Vla2VuZCgpIEFQSSwgd2hpY2ggY2FsbHMgaXQuCisKKyAgICAgICAgZm9yIChpbnQgaTE9MDsgaTE8REFUQTEubGVuZ3RoOyBpMSs9MikgeworICAgICAgICAgICAgTG9jYWxlIGxvYyA9IChMb2NhbGUpREFUQTFbaTFdOworICAgICAgICAgICAgaW50W10gZGF0YSA9IChpbnRbXSkgREFUQTFbaTErMV07CisgICAgICAgICAgICBDYWxlbmRhciBjYWwgPSBDYWxlbmRhci5nZXRJbnN0YW5jZShsb2MpOworICAgICAgICAgICAgbG9nbG4oIkxvY2FsZTogIiArIGxvYyk7CisgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8ZGF0YS5sZW5ndGg7IGkrPTYpIHsKKyAgICAgICAgICAgICAgICBjYWwuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjYWwuc2V0KGRhdGFbaV0sIGRhdGFbaSsxXSwgZGF0YVtpKzJdLCBkYXRhW2krM10sIDAsIDApOworICAgICAgICAgICAgICAgIGlmIChkYXRhW2krNF0gIT0gMCkgeworICAgICAgICAgICAgICAgICAgICBjYWwuc2V0VGltZShuZXcgRGF0ZShjYWwuZ2V0VGltZSgpLmdldFRpbWUoKSArIGRhdGFbaSs0XSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBib29sZWFuIGlzV2Vla2VuZCA9IGNhbC5pc1dlZWtlbmQoKTsKKyAgICAgICAgICAgICAgICBib29sZWFuIG9rID0gaXNXZWVrZW5kID09IChkYXRhW2krNV0gIT0gMCk7CisgICAgICAgICAgICAgICAgaWYgKG9rKSB7CisgICAgICAgICAgICAgICAgICAgIGxvZ2xuKCJPazogICAiICsgZm10LmZvcm1hdChjYWwuZ2V0VGltZSgpKSArICIgaXNXZWVrZW5kPSIgKyBpc1dlZWtlbmQpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiAiICsgZm10LmZvcm1hdChjYWwuZ2V0VGltZSgpKSArICIgaXNXZWVrZW5kPSIgKyBpc1dlZWtlbmQgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiLCBleHBlY3RlZD0iICsgKCFpc1dlZWtlbmQpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGludCBpMj0wOyBpMjxEQVRBMi5sZW5ndGg7IGkyKz0yKSB7CisgICAgICAgICAgICBMb2NhbGUgbG9jID0gKExvY2FsZSlEQVRBMltpMl07CisgICAgICAgICAgICBpbnRbXSBkYXRhID0gKGludFtdKSBEQVRBMltpMisxXTsKKyAgICAgICAgICAgIGxvZ2xuKCJMb2NhbGU6ICIgKyBsb2MpOworICAgICAgICAgICAgQ2FsZW5kYXIgY2FsID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UobG9jKTsKKyAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxkYXRhLmxlbmd0aDsgaSs9MikgeworICAgICAgICAgICAgICAgIGludCB0eXBlID0gY2FsLmdldERheU9mV2Vla1R5cGUoZGF0YVtpXSk7CisgICAgICAgICAgICAgICAgaW50IGV4cCAgPSBkYXRhW2krMV07CisgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gZXhwKSB7CisgICAgICAgICAgICAgICAgICAgIGxvZ2xuKCJPazogICBET1cgIiArIGRhdGFbaV0gKyAiIHR5cGU9IiArIHR5cGUpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBET1cgIiArIGRhdGFbaV0gKyAiIHR5cGU9IiArIHR5cGUgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiLCBleHBlY3RlZD0iICsgZXhwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSdW4gYSB0ZXN0IG9mIGEgcXVhc2ktR3JlZ29yaWFuIGNhbGVuZGFyLiAgVGhpcyBpcyBhIGNhbGVuZGFyCisgICAgICogdGhhdCBiZWhhdmVzIGxpa2UgYSBHcmVnb3JpYW4gYnV0IGhhcyBkaWZmZXJlbnQgeWVhci9lcmEgbWFwcGluZ3MuCisgICAgICogVGhlIGludFtdIGRhdGEgYXJyYXkgc2hvdWxkIGhhdmUgdGhlIGZvcm1hdDoKKyAgICAgKiAKKyAgICAgKiB7IGVyYSwgeWVhciwgZ3JlZ29yaWFuWWVhciwgbW9udGgsIGRheU9mTW9udGgsIC4uLiB9CisgICAgICovCisgICAgdm9pZCBxdWFzaUdyZWdvcmlhblRlc3QoQ2FsZW5kYXIgY2FsLCBpbnRbXSBkYXRhKSB7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxkYXRhLmxlbmd0aDsgKSB7CisgICAgICAgICAgICBpbnQgZXJhID0gZGF0YVtpKytdOworICAgICAgICAgICAgaW50IHllYXIgPSBkYXRhW2krK107CisgICAgICAgICAgICBpbnQgZ3JlZ29yaWFuWWVhciA9IGRhdGFbaSsrXTsKKyAgICAgICAgICAgIGludCBtb250aCA9IGRhdGFbaSsrXTsKKyAgICAgICAgICAgIGludCBkYXlPZk1vbnRoID0gZGF0YVtpKytdOworCisgICAgICAgICAgICBqYXZhLnV0aWwuQ2FsZW5kYXIgdGVtcGNhbCA9IGphdmEudXRpbC5DYWxlbmRhci5nZXRJbnN0YW5jZSgpOworICAgICAgICAgICAgdGVtcGNhbC5jbGVhcigpOworICAgICAgICAgICAgdGVtcGNhbC5zZXQoZ3JlZ29yaWFuWWVhciwgbW9udGgsIGRheU9mTW9udGgpOworICAgICAgICAgICAgRGF0ZSBEID0gdGVtcGNhbC5nZXRUaW1lKCk7CisKKyAgICAgICAgICAgIGNhbC5jbGVhcigpOworICAgICAgICAgICAgY2FsLnNldChDYWxlbmRhci5FUkEsIGVyYSk7CisgICAgICAgICAgICBjYWwuc2V0KHllYXIsIG1vbnRoLCBkYXlPZk1vbnRoKTsKKyAgICAgICAgICAgIERhdGUgZCA9IGNhbC5nZXRUaW1lKCk7CisgICAgICAgICAgICBpZiAoZC5lcXVhbHMoRCkpIHsKKyAgICAgICAgICAgICAgICBsb2dsbigiT0s6ICIgKyBlcmEgKyAiOiIgKyB5ZWFyICsgIi8iICsgKG1vbnRoKzEpICsgIi8iICsgZGF5T2ZNb250aCArCisgICAgICAgICAgICAgICAgICAgICAgIiA9PiAiICsgZCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGVycmxuKCJGYWlsOiAiICsgZXJhICsgIjoiICsgeWVhciArICIvIiArIChtb250aCsxKSArICIvIiArIGRheU9mTW9udGggKworICAgICAgICAgICAgICAgICAgICAgICIgPT4gIiArIGQgKyAiLCBleHBlY3RlZCAiICsgRCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhbC5jbGVhcigpOworICAgICAgICAgICAgY2FsLnNldFRpbWUoRCk7CisgICAgICAgICAgICBpbnQgZSA9IGNhbC5nZXQoQ2FsZW5kYXIuRVJBKTsKKyAgICAgICAgICAgIGludCB5ID0gY2FsLmdldChDYWxlbmRhci5ZRUFSKTsKKyAgICAgICAgICAgIGlmICh5ID09IHllYXIgJiYgZSA9PSBlcmEpIHsKKyAgICAgICAgICAgICAgICBsb2dsbigiT0s6ICIgKyBEICsgIiA9PiAiICsgY2FsLmdldChDYWxlbmRhci5FUkEpICsgIjoiICsKKyAgICAgICAgICAgICAgICAgICAgICBjYWwuZ2V0KENhbGVuZGFyLllFQVIpICsgIi8iICsKKyAgICAgICAgICAgICAgICAgICAgICAoY2FsLmdldChDYWxlbmRhci5NT05USCkrMSkgKyAiLyIgKyBjYWwuZ2V0KENhbGVuZGFyLkRBVEUpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbG9nbG4oIkZhaWw6ICIgKyBEICsgIiA9PiAiICsgY2FsLmdldChDYWxlbmRhci5FUkEpICsgIjoiICsKKyAgICAgICAgICAgICAgICAgICAgICBjYWwuZ2V0KENhbGVuZGFyLllFQVIpICsgIi8iICsKKyAgICAgICAgICAgICAgICAgICAgICAoY2FsLmdldChDYWxlbmRhci5NT05USCkrMSkgKyAiLyIgKyBjYWwuZ2V0KENhbGVuZGFyLkRBVEUpICsKKyAgICAgICAgICAgICAgICAgICAgICAiLCBleHBlY3RlZCAiICsgZXJhICsgIjoiICsgeWVhciArICIvIiArIChtb250aCsxKSArICIvIiArCisgICAgICAgICAgICAgICAgICAgICAgZGF5T2ZNb250aCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBWZXJpZnkgdGhhdCBCdWRkaGlzdENhbGVuZGFyIHNoaWZ0cyB5ZWFycyB0byBCdWRkaGlzdCBFcmEgYnV0IG90aGVyd2lzZQorICAgICAqIGJlaGF2ZXMgbGlrZSBHcmVnb3JpYW5DYWxlbmRhci4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0QnVkZGhpc3QoKSB7CisgICAgICAgIHF1YXNpR3JlZ29yaWFuVGVzdChuZXcgQnVkZGhpc3RDYWxlbmRhcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IGludFtdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCRSAyNTQyID09IDE5OTkgQ0UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAyNTQyLCAxOTk5LCBDYWxlbmRhci5KVU5FLCA0CisgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0QnVkZGhpc3RDb3ZlcmFnZSgpIHsKKwl7CisJICAgIC8vIG5ldyBCdWRkaGlzdENhbGVuZGFyKFRpbWVab25lKQorCSAgICBCdWRkaGlzdENhbGVuZGFyIGNhbCA9IG5ldyBCdWRkaGlzdENhbGVuZGFyKFRpbWVab25lLmdldERlZmF1bHQoKSk7CisJfQorCQorCXsKKwkgICAgLy8gbmV3IEJ1ZGRoaXN0Q2FsZW5kYXIoTG9jYWxlKQorCSAgICBCdWRkaGlzdENhbGVuZGFyIGNhbCA9IG5ldyBCdWRkaGlzdENhbGVuZGFyKExvY2FsZS5nZXREZWZhdWx0KCkpOworCX0KKworCXsKKwkgICAgLy8gbmV3IEJ1ZGRoaXN0Q2FsZW5kYXIoVGltZVpvbmUsIExvY2FsZSkKKwkgICAgQnVkZGhpc3RDYWxlbmRhciBjYWwgPSBuZXcgQnVkZGhpc3RDYWxlbmRhcihUaW1lWm9uZS5nZXREZWZhdWx0KCksIExvY2FsZS5nZXREZWZhdWx0KCkpOworCX0KKworCXsKKwkgICAgLy8gbmV3IEJ1ZGRoaXN0Q2FsZW5kYXIoRGF0ZSkKKwkgICAgQnVkZGhpc3RDYWxlbmRhciBjYWwgPSBuZXcgQnVkZGhpc3RDYWxlbmRhcihuZXcgRGF0ZSgpKTsKKwl9CisKKwl7CisJICAgIC8vIG5ldyBCdWRkaGlzdENhbGVuZGFyKGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXRlKQorCSAgICBCdWRkaGlzdENhbGVuZGFyIGNhbCA9IG5ldyBCdWRkaGlzdENhbGVuZGFyKDI1NDMsIENhbGVuZGFyLk1BWSwgMjIpOworCX0KKworCXsKKwkgICAgLy8gbmV3IEJ1ZGRoaXN0Q2FsZW5kYXIoaW50IHllYXIsIGludCBtb250aCwgaW50IGRhdGUsIGludCBob3VyLCBpbnQgbWludXRlLCBpbnQgc2Vjb25kKQorCSAgICBCdWRkaGlzdENhbGVuZGFyIGNhbCA9IG5ldyBCdWRkaGlzdENhbGVuZGFyKDI1NDMsIENhbGVuZGFyLk1BWSwgMjIsIDEsIDEsIDEpOworCX0KKworCXsKKwkgICAgLy8gZGF0YQorCSAgICBCdWRkaGlzdENhbGVuZGFyIGNhbCA9IG5ldyBCdWRkaGlzdENhbGVuZGFyKDI1NDMsIENhbGVuZGFyLk1BWSwgMjIpOworCSAgICBEYXRlIHRpbWUgPSBjYWwuZ2V0VGltZSgpOworCisJICAgIFN0cmluZ1tdIGNhbGVuZGFyTG9jYWxlcyA9IHsKKwkJInRoX1RIIgorCSAgICB9OworCisJICAgIFN0cmluZ1tdIGZvcm1hdExvY2FsZXMgPSB7CisJCSJlbiIsICJhciIsICJodSIsICJ0aCIKKwkgICAgfTsKKworCSAgICBmb3IgKGludCBpID0gMDsgaSA8IGNhbGVuZGFyTG9jYWxlcy5sZW5ndGg7ICsraSkgeworCQlTdHJpbmcgY2FsTG9jTmFtZSA9IGNhbGVuZGFyTG9jYWxlc1tpXTsKKwkJTG9jYWxlIGNhbExvY2FsZSA9IExvY2FsZVV0aWxpdHkuZ2V0TG9jYWxlRnJvbU5hbWUoY2FsTG9jTmFtZSk7CisJCWNhbCA9IG5ldyBCdWRkaGlzdENhbGVuZGFyKGNhbExvY2FsZSk7CisKKwkJZm9yIChpbnQgaiA9IDA7IGogPCBmb3JtYXRMb2NhbGVzLmxlbmd0aDsgKytqKSB7CisJCSAgICBTdHJpbmcgbG9jTmFtZSA9IGZvcm1hdExvY2FsZXNbal07CisJCSAgICBMb2NhbGUgZm9ybWF0TG9jYWxlID0gTG9jYWxlVXRpbGl0eS5nZXRMb2NhbGVGcm9tTmFtZShsb2NOYW1lKTsKKwkJICAgIERhdGVGb3JtYXQgZm9ybWF0ID0gRGF0ZUZvcm1hdC5nZXREYXRlVGltZUluc3RhbmNlKGNhbCwgRGF0ZUZvcm1hdC5GVUxMLCBEYXRlRm9ybWF0LkZVTEwsIGZvcm1hdExvY2FsZSk7CisJCSAgICBsb2dsbihjYWxMb2NOYW1lICsgIi8iICsgbG9jTmFtZSArICIgLS0+ICIgKyBmb3JtYXQuZm9ybWF0KHRpbWUpKTsKKwkJfQorCSAgICB9CisJfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFZlcmlmeSB0aGF0IEphcGFuZXNlQ2FsZW5kYXIgc2hpZnRzIHllYXJzIHRvIEJ1ZGRoaXN0IEVyYSBidXQgb3RoZXJ3aXNlCisgICAgICogYmVoYXZlcyBsaWtlIEdyZWdvcmlhbkNhbGVuZGFyLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RKYXBhbmVzZSgpIHsKKyAgICAgICAgaW50W10gZGF0YSA9IHsKKyAgICAgICAgICAgIEphcGFuZXNlQ2FsZW5kYXIuTUVJSkksIDEsIDE4NjgsIENhbGVuZGFyLlNFUFRFTUJFUiwgOCwKKyAgICAgICAgICAgIEphcGFuZXNlQ2FsZW5kYXIuTUVJSkksIDEsIDE4NjgsIENhbGVuZGFyLlNFUFRFTUJFUiwgOSwKKyAgICAgICAgICAgIEphcGFuZXNlQ2FsZW5kYXIuTUVJSkksIDIsIDE4NjksIENhbGVuZGFyLkpVTkUsIDQsCisgICAgICAgICAgICBKYXBhbmVzZUNhbGVuZGFyLk1FSUpJLCA0NSwgMTkxMiwgQ2FsZW5kYXIuSlVMWSwgMjksCisgICAgICAgICAgICBKYXBhbmVzZUNhbGVuZGFyLlRBSVNITywgMSwgMTkxMiwgQ2FsZW5kYXIuSlVMWSwgMzAsCisgICAgICAgICAgICBKYXBhbmVzZUNhbGVuZGFyLlRBSVNITywgMSwgMTkxMiwgQ2FsZW5kYXIuQVVHVVNULCAxLAorICAgICAgICB9OworICAgICAgICBxdWFzaUdyZWdvcmlhblRlc3QobmV3IEphcGFuZXNlQ2FsZW5kYXIoKSwgZGF0YSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdCBsaW1pdHMgb2YgdGhlIEdyZWdvcmlhbiBjYWxlbmRhci4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0R3JlZ29yaWFuTGltaXRzKCkgeworICAgICAgICAvLyBGaW5hbCBwYXJhbWV0ZXIgaXMgZWl0aGVyIG51bWJlciBvZiBkYXlzLCBpZiA+IDAsIG9yIHRlc3QKKyAgICAgICAgLy8gZHVyYXRpb24gaW4gc2Vjb25kcywgaWYgPCAwLgorICAgICAgICBDYWxlbmRhciBjYWwgPSBDYWxlbmRhci5nZXRJbnN0YW5jZSgpOworICAgICAgICBjYWwuc2V0KDIwMDQsIENhbGVuZGFyLkpBTlVBUlksIDEpOworICAgICAgICBkb0xpbWl0c1Rlc3QobmV3IEdyZWdvcmlhbkNhbGVuZGFyKCksIG51bGwsIGNhbC5nZXRUaW1lKCksIC0xMCk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFRlc3QgYmVoYXZpb3Igb2YgZmllbGREaWZmZXJlbmNlIGFyb3VuZCBsZWFwIHllYXJzLiAgQWxzbyB0ZXN0IGEgbGFyZ2UKKyAgICAgKiBmaWVsZCBkaWZmZXJlbmNlIHRvIGNoZWNrIGJpbmFyeSBzZWFyY2guCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdExlYXBGaWVsZERpZmZlcmVuY2UoKSB7CisgICAgICAgIENhbGVuZGFyIGNhbCA9IENhbGVuZGFyLmdldEluc3RhbmNlKCk7CisgICAgICAgIGNhbC5zZXQoMjAwNCwgQ2FsZW5kYXIuRkVCUlVBUlksIDI5KTsKKyAgICAgICAgRGF0ZSBkYXRlMjAwNCA9IGNhbC5nZXRUaW1lKCk7CisgICAgICAgIGNhbC5zZXQoMjAwMCwgQ2FsZW5kYXIuRkVCUlVBUlksIDI5KTsKKyAgICAgICAgRGF0ZSBkYXRlMjAwMCA9IGNhbC5nZXRUaW1lKCk7CisgICAgICAgIGludCB5ID0gY2FsLmZpZWxkRGlmZmVyZW5jZShkYXRlMjAwNCwgQ2FsZW5kYXIuWUVBUik7CisgICAgICAgIGludCBkID0gY2FsLmZpZWxkRGlmZmVyZW5jZShkYXRlMjAwNCwgQ2FsZW5kYXIuREFZX09GX1lFQVIpOworICAgICAgICBpZiAoZCA9PSAwKSB7CisgICAgICAgICAgICBsb2dsbigiT2s6IDIwMDQvRmViLzI5IC0gMjAwMC9GZWIvMjkgPSAiICsgeSArICIgeWVhcnMsICIgKyBkICsgIiBkYXlzIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogMjAwNC9GZWIvMjkgLSAyMDAwL0ZlYi8yOSA9ICIgKyB5ICsgIiB5ZWFycywgIiArIGQgKyAiIGRheXMiKTsKKyAgICAgICAgfQorICAgICAgICBjYWwuc2V0VGltZShkYXRlMjAwNCk7CisgICAgICAgIHkgPSBjYWwuZmllbGREaWZmZXJlbmNlKGRhdGUyMDAwLCBDYWxlbmRhci5ZRUFSKTsKKyAgICAgICAgZCA9IGNhbC5maWVsZERpZmZlcmVuY2UoZGF0ZTIwMDAsIENhbGVuZGFyLkRBWV9PRl9ZRUFSKTsKKyAgICAgICAgaWYgKGQgPT0gMCkgeworICAgICAgICAgICAgbG9nbG4oIk9rOiAyMDAwL0ZlYi8yOSAtIDIwMDQvRmViLzI5ID0gIiArIHkgKyAiIHllYXJzLCAiICsgZCArICIgZGF5cyIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IDIwMDAvRmViLzI5IC0gMjAwNC9GZWIvMjkgPSAiICsgeSArICIgeWVhcnMsICIgKyBkICsgIiBkYXlzIik7CisgICAgICAgIH0KKyAgICAgICAgLy8gVGVzdCBsYXJnZSBkaWZmZXJlbmNlCisgICAgICAgIGNhbC5zZXQoMjAwMSwgQ2FsZW5kYXIuQVBSSUwsIDUpOyAvLyAyNDUyMDA1CisgICAgICAgIERhdGUgYXlsID0gY2FsLmdldFRpbWUoKTsKKyAgICAgICAgY2FsLnNldCgxOTY0LCBDYWxlbmRhci5TRVBURU1CRVIsIDcpOyAvLyAyNDM4NjQ2CisgICAgICAgIERhdGUgYXNsID0gY2FsLmdldFRpbWUoKTsKKyAgICAgICAgZCA9IGNhbC5maWVsZERpZmZlcmVuY2UoYXlsLCBDYWxlbmRhci5EQVlfT0ZfTU9OVEgpOworICAgICAgICBjYWwuc2V0VGltZShheWwpOworICAgICAgICBpbnQgZDIgPSBjYWwuZmllbGREaWZmZXJlbmNlKGFzbCwgQ2FsZW5kYXIuREFZX09GX01PTlRIKTsKKyAgICAgICAgaWYgKGQgPT0gLWQyICYmIGQgPT0gMTMzNTkpIHsKKyAgICAgICAgICAgIGxvZ2xuKCJPazogbGFyZ2UgZmllbGQgZGlmZmVyZW5jZSBzeW1tZXRyaWNhbCAiICsgZCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2dsbigiRkFJTDogbGFyZ2UgZmllbGQgZGlmZmVyZW5jZSBpbmNvcnJlY3QgIiArIGQgKyAiLCAiICsgZDIgKworICAgICAgICAgICAgICAgICAgIiwgZXhwZWN0ICsvLSAxMzM1OSIpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdCBtc19NWSAiTWFsYXkgKE1hbGF5c2lhKSIgbG9jYWxlLiAgQnVnIDE1NDMuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdE1hbGF5c2lhbkluc3RhbmNlKCkgeworICAgICAgICBMb2NhbGUgbG9jID0gbmV3IExvY2FsZSgibXMiLCAiTVkiKTsgIC8vIE1hbGF5IChNYWxheXNpYSkKKyAgICAgICAgQ2FsZW5kYXIgY2FsID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UobG9jKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBNaXNjZWxsYW5lb3VzIHRlc3RzIHRvIGluY3JlYXNlIGNvdmVyYWdlLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RDb3ZlcmFnZSgpIHsKKyAgICAgICAgLy8gQnVkZGhpc3RDYWxlbmRhcgorICAgICAgICBCdWRkaGlzdENhbGVuZGFyIGJjYWwgPSBuZXcgQnVkZGhpc3RDYWxlbmRhcigpOworICAgICAgICBpbnQgaSA9IGJjYWwuZ2V0TWluaW11bShDYWxlbmRhci5FUkEpOworICAgICAgICBiY2FsLmFkZChDYWxlbmRhci5ZRUFSLCAxKTsKKyAgICAgICAgYmNhbC5hZGQoQ2FsZW5kYXIuTU9OVEgsIDEpOworICAgICAgICBEYXRlIGQgPSBiY2FsLmdldFRpbWUoKTsKKworICAgICAgICAvLyBDYWxlbmRhckFzdHJvbm9tZXIKKyAgICAgICAgLy8gKFRoaXMgY2xhc3Mgc2hvdWxkIHByb2JhYmx5IGJlIG1hZGUgcGFja2FnZS1wcml2YXRlLikKKyAgICAgICAgQ2FsZW5kYXJBc3Ryb25vbWVyIGFzdHJvID0gbmV3IENhbGVuZGFyQXN0cm9ub21lcigpOworICAgICAgICBTdHJpbmcgcyA9IGFzdHJvLmxvY2FsKDApOworCisgICAgICAgIC8vIENoaW5lc2VDYWxlbmRhcgorICAgICAgICBDaGluZXNlQ2FsZW5kYXIgY2NhbCA9IG5ldyBDaGluZXNlQ2FsZW5kYXIoVGltZVpvbmUuZ2V0RGVmYXVsdCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYWxlLmdldERlZmF1bHQoKSk7CisgICAgICAgIGNjYWwuYWRkKENhbGVuZGFyLk1PTlRILCAxKTsKKyAgICAgICAgY2NhbC5hZGQoQ2FsZW5kYXIuWUVBUiwgMSk7CisgICAgICAgIGNjYWwucm9sbChDYWxlbmRhci5NT05USCwgMSk7CisgICAgICAgIGNjYWwucm9sbChDYWxlbmRhci5ZRUFSLCAxKTsKKyAgICAgICAgZCA9IGNjYWwuZ2V0VGltZSgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9jYWxlbmRhci9Jc2xhbWljVGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NhbGVuZGFyL0lzbGFtaWNUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZjdmZDMxYwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9jYWxlbmRhci9Jc2xhbWljVGVzdC5qYXZhCkBAIC0wLDAgKzEsMjI4IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY2FsZW5kYXIvSXNsYW1pY1Rlc3QuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wOC8wNyAwMzoxMDoxOCAkIAorICogJFJldmlzaW9uOiAxLjUgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0LmNhbGVuZGFyOworCitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKKworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuTG9jYWxlVXRpbGl0eTsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0LkRhdGVGb3JtYXQ7CitpbXBvcnQgY29tLmlibS5pY3UudXRpbC5DYWxlbmRhcjsKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLklzbGFtaWNDYWxlbmRhcjsKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLlRpbWVab25lOworCisvKioKKyAqIFRlc3RzIGZvciB0aGUgPGNvZGU+SXNsYW1pY0NhbGVuZGFyPC9jb2RlPiBjbGFzcy4KKyAqLworcHVibGljIGNsYXNzIElzbGFtaWNUZXN0IGV4dGVuZHMgQ2FsZW5kYXJUZXN0IHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgYXJnc1tdKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgbmV3IElzbGFtaWNUZXN0KCkucnVuKGFyZ3MpOworICAgIH0KKworICAgIC8qKiBDb25zdGFudHMgdG8gc2F2ZSB0eXBpbmcuICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTVVIQVJSQU0gPSBJc2xhbWljQ2FsZW5kYXIuTVVIQVJSQU07CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0FGQVIgPSAgSXNsYW1pY0NhbGVuZGFyLlNBRkFSOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFJBQklfMSA9ICBJc2xhbWljQ2FsZW5kYXIuUkFCSV8xOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFJBQklfMiA9ICBJc2xhbWljQ2FsZW5kYXIuUkFCSV8yOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEpVTUFEQV8xID0gIElzbGFtaWNDYWxlbmRhci5KVU1BREFfMTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBKVU1BREFfMiA9ICBJc2xhbWljQ2FsZW5kYXIuSlVNQURBXzI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUkFKQUIgPSAgSXNsYW1pY0NhbGVuZGFyLlJBSkFCOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNIQUJBTiA9ICBJc2xhbWljQ2FsZW5kYXIuU0hBQkFOOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFJBTUFEQU4gPSAgSXNsYW1pY0NhbGVuZGFyLlJBTUFEQU47CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0hBV1dBTCA9ICBJc2xhbWljQ2FsZW5kYXIuU0hBV1dBTDsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBRSURBSCA9ICBJc2xhbWljQ2FsZW5kYXIuREhVX0FMX1FJREFIOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEhJSkpBSCA9ICBJc2xhbWljQ2FsZW5kYXIuREhVX0FMX0hJSkpBSDsKKworICAgIHB1YmxpYyB2b2lkIFRlc3RSb2xsKCkgeworICAgICAgICBpbnRbXVtdIHRlc3RzID0gbmV3IGludFtdW10geworICAgICAgICAgICAgLy8gICAgICAgaW5wdXQgICAgICAgICAgICAgICAgcm9sbCBieSAgICAgICAgICBvdXRwdXQKKyAgICAgICAgICAgIC8vICB5ZWFyICBtb250aCAgICAgZGF5ICAgICBmaWVsZCBhbW91bnQgICAgeWVhciAgbW9udGggICAgIGRheQorICAgIAorICAgICAgICAgICAgeyAgIDAwMDEsIFFJREFILCAgICAgMiwgICAgIE1PTlRILCAgIDEsICAgICAwMDAxLCBISUpKQUgsICAgIDIgfSwgICAvLyBub24tbGVhcCB5ZWFycworICAgICAgICAgICAgeyAgIDAwMDEsIFFJREFILCAgICAgMiwgICAgIE1PTlRILCAgIDIsICAgICAwMDAxLCBNVUhBUlJBTSwgIDIgfSwKKyAgICAgICAgICAgIHsgICAwMDAxLCBRSURBSCwgICAgIDIsICAgICBNT05USCwgIC0xLCAgICAgMDAwMSwgU0hBV1dBTCwgICAyIH0sCisgICAgICAgICAgICB7ICAgMDAwMSwgTVVIQVJSQU0sICAyLCAgICAgTU9OVEgsICAxMiwgICAgIDAwMDEsIE1VSEFSUkFNLCAgMiB9LAorICAgICAgICAgICAgeyAgIDAwMDEsIE1VSEFSUkFNLCAgMiwgICAgIE1PTlRILCAgMTMsICAgICAwMDAxLCBTQUZBUiwgICAgIDIgfSwKKworICAgICAgICAgICAgeyAgIDAwMDEsIEhJSkpBSCwgICAgMSwgICAgIERBVEUsICAgMzAsICAgICAwMDAxLCBISUpKQUgsICAgIDIgfSwgICAvLyAyOS1kYXkgbW9udGgKKyAgICAgICAgICAgIHsgICAwMDAyLCBISUpKQUgsICAgIDEsICAgICBEQVRFLCAgIDMxLCAgICAgMDAwMiwgSElKSkFILCAgICAyIH0sICAgLy8gMzAtZGF5IG1vbnRoCisKKyAgICAgICAgICAgIC8vIFRyeSBzb21lIHJvbGxzIHRoYXQgcmVxdWlyZSBvdGhlciBmaWVsZHMgdG8gYmUgYWRqdXN0ZWQKKyAgICAgICAgICAgIHsgICAwMDAxLCBNVUhBUlJBTSwgMzAsICAgICBNT05USCwgICAxLCAgICAgMDAwMSwgU0FGQVIsICAgIDI5IH0sCisgICAgICAgICAgICB7ICAgMDAwMiwgSElKSkFILCAgIDMwLCAgICAgWUVBUiwgICAtMSwgICAgIDAwMDEsIEhJSkpBSCwgICAyOSB9LAorICAgICAgICB9OworICAgICAgIAorICAgICAgICBJc2xhbWljQ2FsZW5kYXIgY2FsID0gbmV3Q2l2aWwoKTsKKworICAgICAgICBkb1JvbGxBZGQoUk9MTCwgY2FsLCB0ZXN0cyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQSBodWdlIGxpc3Qgb2YgdGVzdCBjYXNlcyB0byBtYWtlIHN1cmUgdGhhdCBjb21wdXRlVGltZSBhbmQgY29tcHV0ZUZpZWxkcworICAgICAqIHdvcmsgcHJvcGVybHkgZm9yIGEgd2lkZSByYW5nZSBvZiBkYXRhIGluIHRoZSBjaXZpbCBjYWxlbmRhci4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0Q2l2aWxDYXNlcygpCisgICAgeworICAgICAgICBmaW5hbCBUZXN0Q2FzZVtdIHRlc3RzID0geworICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIE1vc3Qgb2YgdGhlc2UgdGVzdCBjYXNlcyB3ZXJlIHRha2VuIGZyb20gdGhlIGJhY2sgb2YKKyAgICAgICAgICAgIC8vICJDYWxlbmRyaWNhbCBDYWxjdWxhdGlvbnMiLCB3aXRoIHNvbWUgZXh0cmFzIGFkZGVkIHRvIGhlbHAKKyAgICAgICAgICAgIC8vIGRlYnVnIGEgZmV3IG9mIHRoZSBwcm9ibGVtcyB0aGF0IGNyb3BwZWQgdXAgaW4gZGV2ZWxvcG1lbnQuCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gVGhlIG1vbnRocyBpbiB0aGlzIHRhYmxlIGFyZSAxLWJhc2VkIHJhdGhlciB0aGFuIDAtYmFzZWQsCisgICAgICAgICAgICAvLyBiZWNhdXNlIGl0J3MgZWFzaWVyIHRvIGVkaXQgdGhhdCB3YXkuCisgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgSXNsYW1pYworICAgICAgICAgICAgLy8gICAgICAgICAgSnVsaWFuIERheSAgRXJhICBZZWFyICBNb250aCBEYXkgIFdrRGF5IEhvdXIgTWluIFNlYworICAgICAgICAgICAgbmV3IFRlc3RDYXNlKDE1MDcyMzEuNSwgIDAsIC0xMjQ1LCAgIDEyLCAgIDksICBTVU4sICAgMCwgIDAsICAwKSwKKyAgICAgICAgICAgIG5ldyBUZXN0Q2FzZSgxNjYwMDM3LjUsICAwLCAgLTgxMywgICAgMiwgIDIzLCAgV0VELCAgIDAsICAwLCAgMCksCisgICAgICAgICAgICBuZXcgVGVzdENhc2UoMTc0Njg5My41LCAgMCwgIC01NjgsICAgIDQsICAgMSwgIFdFRCwgICAwLCAgMCwgIDApLAorICAgICAgICAgICAgbmV3IFRlc3RDYXNlKDE3NzA2NDEuNSwgIDAsICAtNTAxLCAgICA0LCAgIDYsICBTVU4sICAgMCwgIDAsICAwKSwKKyAgICAgICAgICAgIG5ldyBUZXN0Q2FzZSgxODkyNzMxLjUsICAwLCAgLTE1NywgICAxMCwgIDE3LCAgV0VELCAgIDAsICAwLCAgMCksCisgICAgICAgICAgICBuZXcgVGVzdENhc2UoMTkzMTU3OS41LCAgMCwgICAtNDcsICAgIDYsICAgMywgIE1PTiwgICAwLCAgMCwgIDApLAorICAgICAgICAgICAgbmV3IFRlc3RDYXNlKDE5NzQ4NTEuNSwgIDAsICAgIDc1LCAgICA3LCAgMTMsICBTQVQsICAgMCwgIDAsICAwKSwKKyAgICAgICAgICAgIG5ldyBUZXN0Q2FzZSgyMDkxMTY0LjUsICAwLCAgIDQwMywgICAxMCwgICA1LCAgU1VOLCAgIDAsICAwLCAgMCksCisgICAgICAgICAgICBuZXcgVGVzdENhc2UoMjEyMTUwOS41LCAgMCwgICA0ODksICAgIDUsICAyMiwgIFNVTiwgICAwLCAgMCwgIDApLAorICAgICAgICAgICAgbmV3IFRlc3RDYXNlKDIxNTU3NzkuNSwgIDAsICAgNTg2LCAgICAyLCAgIDcsICBGUkksICAgMCwgIDAsICAwKSwKKyAgICAgICAgICAgIG5ldyBUZXN0Q2FzZSgyMTc0MDI5LjUsICAwLCAgIDYzNywgICAgOCwgICA3LCAgU0FULCAgIDAsICAwLCAgMCksCisgICAgICAgICAgICBuZXcgVGVzdENhc2UoMjE5MTU4NC41LCAgMCwgICA2ODcsICAgIDIsICAyMCwgIEZSSSwgICAwLCAgMCwgIDApLAorICAgICAgICAgICAgbmV3IFRlc3RDYXNlKDIxOTUyNjEuNSwgIDAsICAgNjk3LCAgICA3LCAgIDcsICBTVU4sICAgMCwgIDAsICAwKSwKKyAgICAgICAgICAgIG5ldyBUZXN0Q2FzZSgyMjI5Mjc0LjUsICAwLCAgIDc5MywgICAgNywgICAxLCAgU1VOLCAgIDAsICAwLCAgMCksCisgICAgICAgICAgICBuZXcgVGVzdENhc2UoMjI0NTU4MC41LCAgMCwgICA4MzksICAgIDcsICAgNiwgIFdFRCwgICAwLCAgMCwgIDApLAorICAgICAgICAgICAgbmV3IFRlc3RDYXNlKDIyNjYxMDAuNSwgIDAsICAgODk3LCAgICA2LCAgIDEsICBTQVQsICAgMCwgIDAsICAwKSwKKyAgICAgICAgICAgIG5ldyBUZXN0Q2FzZSgyMjg4NTQyLjUsICAwLCAgIDk2MCwgICAgOSwgIDMwLCAgU0FULCAgIDAsICAwLCAgMCksCisgICAgICAgICAgICBuZXcgVGVzdENhc2UoMjI5MDkwMS41LCAgMCwgICA5NjcsICAgIDUsICAyNywgIFNBVCwgICAwLCAgMCwgIDApLAorICAgICAgICAgICAgbmV3IFRlc3RDYXNlKDIzMjMxNDAuNSwgIDAsICAxMDU4LCAgICA1LCAgMTgsICBXRUQsICAgMCwgIDAsICAwKSwKKyAgICAgICAgICAgIG5ldyBUZXN0Q2FzZSgyMzM0ODQ4LjUsICAwLCAgMTA5MSwgICAgNiwgICAyLCAgU1VOLCAgIDAsICAwLCAgMCksCisgICAgICAgICAgICBuZXcgVGVzdENhc2UoMjM0ODAyMC41LCAgMCwgIDExMjgsICAgIDgsICAgNCwgIEZSSSwgICAwLCAgMCwgIDApLAorICAgICAgICAgICAgbmV3IFRlc3RDYXNlKDIzNjY5NzguNSwgIDAsICAxMTgyLCAgICAyLCAgIDMsICBTVU4sICAgMCwgIDAsICAwKSwKKyAgICAgICAgICAgIG5ldyBUZXN0Q2FzZSgyMzg1NjQ4LjUsICAwLCAgMTIzNCwgICAxMCwgIDEwLCAgTU9OLCAgIDAsICAwLCAgMCksCisgICAgICAgICAgICBuZXcgVGVzdENhc2UoMjM5MjgyNS41LCAgMCwgIDEyNTUsICAgIDEsICAxMSwgIFdFRCwgICAwLCAgMCwgIDApLAorICAgICAgICAgICAgbmV3IFRlc3RDYXNlKDI0MTYyMjMuNSwgIDAsICAxMzIxLCAgICAxLCAgMjEsICBTVU4sICAgMCwgIDAsICAwKSwKKyAgICAgICAgICAgIG5ldyBUZXN0Q2FzZSgyNDI1ODQ4LjUsICAwLCAgMTM0OCwgICAgMywgIDE5LCAgU1VOLCAgIDAsICAwLCAgMCksCisgICAgICAgICAgICBuZXcgVGVzdENhc2UoMjQzMDI2Ni41LCAgMCwgIDEzNjAsICAgIDksICAgOCwgIE1PTiwgICAwLCAgMCwgIDApLAorICAgICAgICAgICAgbmV3IFRlc3RDYXNlKDI0MzA4MzMuNSwgIDAsICAxMzYyLCAgICA0LCAgMTMsICBNT04sICAgMCwgIDAsICAwKSwKKyAgICAgICAgICAgIG5ldyBUZXN0Q2FzZSgyNDMxMDA0LjUsICAwLCAgMTM2MiwgICAxMCwgICA3LCAgVEhVLCAgIDAsICAwLCAgMCksCisgICAgICAgICAgICBuZXcgVGVzdENhc2UoMjQ0ODY5OC41LCAgMCwgIDE0MTIsICAgIDksICAxMywgIFRVRSwgICAwLCAgMCwgIDApLAorICAgICAgICAgICAgbmV3IFRlc3RDYXNlKDI0NTAxMzguNSwgIDAsICAxNDE2LCAgIDEwLCAgIDUsICBTVU4sICAgMCwgIDAsICAwKSwKKyAgICAgICAgICAgIG5ldyBUZXN0Q2FzZSgyNDY1NzM3LjUsICAwLCAgMTQ2MCwgICAxMCwgIDEyLCAgV0VELCAgIDAsICAwLCAgMCksCisgICAgICAgICAgICBuZXcgVGVzdENhc2UoMjQ4NjA3Ni41LCAgMCwgIDE1MTgsICAgIDMsICAgNSwgIFNVTiwgICAwLCAgMCwgIDApLAorICAgICAgICB9OworICAgICAgICAKKyAgICAgICAgSXNsYW1pY0NhbGVuZGFyIGNpdmlsQ2FsZW5kYXIgPSBuZXdDaXZpbCgpOworICAgICAgICBjaXZpbENhbGVuZGFyLnNldExlbmllbnQodHJ1ZSk7CisgICAgICAgIGRvVGVzdENhc2VzKHRlc3RzLCBjaXZpbENhbGVuZGFyKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0QmFzaWMoKSB7CisgICAgICAgIElzbGFtaWNDYWxlbmRhciBjYWwgPSBuZXdDaXZpbCgpOworICAgICAgICBjYWwuY2xlYXIoKTsKKyAgICAgICAgY2FsLnNldCgxMDAwLCAwLCAzMCk7CisgICAgICAgIGxvZ2xuKCIxMDAwLzAvMzAgLT4gIiArCisgICAgICAgICAgICAgIGNhbC5nZXQoWUVBUikgKyAiLyIgKworICAgICAgICAgICAgICBjYWwuZ2V0KE1PTlRIKSArICIvIiArIAorICAgICAgICAgICAgICBjYWwuZ2V0KERBVEUpKTsKKyAgICAgICAgY2FsLmNsZWFyKCk7CisgICAgICAgIGNhbC5zZXQoMSwgMCwgMzApOworICAgICAgICBsb2dsbigiMS8wLzMwIC0+ICIgKworICAgICAgICAgICAgICBjYWwuZ2V0KFlFQVIpICsgIi8iICsKKyAgICAgICAgICAgICAgY2FsLmdldChNT05USCkgKyAiLyIgKyAKKyAgICAgICAgICAgICAgY2FsLmdldChEQVRFKSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdENvdmVyYWdlKCkgeworCXsKKwkgICAgLy8gbmV3IElzbGFtaWNDYWxlbmRhcihUaW1lWm9uZSkKKwkgICAgSXNsYW1pY0NhbGVuZGFyIGNhbCA9IG5ldyBJc2xhbWljQ2FsZW5kYXIoVGltZVpvbmUuZ2V0RGVmYXVsdCgpKTsKKwl9CisJCisJeworCSAgICAvLyBuZXcgSXNsYW1pY0NhbGVuZGFyKExvY2FsZSkKKwkgICAgSXNsYW1pY0NhbGVuZGFyIGNhbCA9IG5ldyBJc2xhbWljQ2FsZW5kYXIoTG9jYWxlLmdldERlZmF1bHQoKSk7CisJfQorCisJeworCSAgICAvLyBuZXcgSXNsYW1pY0NhbGVuZGFyKERhdGUpCisJICAgIElzbGFtaWNDYWxlbmRhciBjYWwgPSBuZXcgSXNsYW1pY0NhbGVuZGFyKG5ldyBEYXRlKCkpOworCX0KKworCXsKKwkgICAgLy8gbmV3IElzbGFtaWNDYWxlbmRhcihpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF0ZSkKKwkgICAgSXNsYW1pY0NhbGVuZGFyIGNhbCA9IG5ldyBJc2xhbWljQ2FsZW5kYXIoODAwLCBJc2xhbWljQ2FsZW5kYXIuUkFNQURBTiwgMSk7CisJfQorCisJeworCSAgICAvLyBuZXcgSXNsYW1pY0NhbGVuZGFyKGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXRlLCBpbnQgaG91ciwgaW50IG1pbnV0ZSwgaW50IHNlY29uZCkKKwkgICAgSXNsYW1pY0NhbGVuZGFyIGNhbCA9IG5ldyBJc2xhbWljQ2FsZW5kYXIoODAwLCBJc2xhbWljQ2FsZW5kYXIuUkFNQURBTiwgMSwgMSwgMSwgMSk7CisJfQorCisJeworCSAgICAvLyBzZXRDaXZpbC9pc0NpdmlsCisJICAgIC8vIG9wZXJhdGlvbnMgb24gbm9uLWNpdmlsIGNhbGVuZGFyCisJICAgIElzbGFtaWNDYWxlbmRhciBjYWwgPSBuZXcgSXNsYW1pY0NhbGVuZGFyKDgwMCwgSXNsYW1pY0NhbGVuZGFyLlJBTUFEQU4sIDEsIDEsIDEsIDEpOworCSAgICBjYWwuc2V0Q2l2aWwoZmFsc2UpOworCSAgICBpZiAoY2FsLmlzQ2l2aWwoKSkgeworCQllcnJsbigiaXNsYW1pYyBjYWxlbmRhciBpcyBjaXZpbCIpOworCSAgICB9CisKKwkgICAgRGF0ZSBub3cgPSBuZXcgRGF0ZSgpOworCSAgICBjYWwuc2V0VGltZShub3cpOworCisJICAgIERhdGUgdGhlbiA9IGNhbC5nZXRUaW1lKCk7CisJICAgIGlmICghbm93LmVxdWFscyh0aGVuKSkgeworCQllcnJsbigiZ2V0L3NldCB0aW1lIGZhaWxlZCB3aXRoIG5vbi1jaXZpbCBpc2xhbWljIGNhbGVuZGFyIik7CisJICAgIH0KKworCSAgICBsb2dsbih0aGVuLnRvU3RyaW5nKCkpOworCisJICAgIGNhbC5hZGQoY2FsLk1PTlRILCAxKTsKKwkgICAgY2FsLmFkZChjYWwuREFZX09GX01PTlRILCAxKTsKKwkgICAgY2FsLmFkZChjYWwuWUVBUiwgMSk7CisKKwkgICAgbG9nbG4oY2FsLmdldFRpbWUoKS50b1N0cmluZygpKTsKKwl9CisJCisJeworCSAgICAvLyBkYXRhCisJICAgIElzbGFtaWNDYWxlbmRhciBjYWwgPSBuZXcgSXNsYW1pY0NhbGVuZGFyKDgwMCwgSXNsYW1pY0NhbGVuZGFyLlJBTUFEQU4sIDEpOworCSAgICBEYXRlIHRpbWUgPSBjYWwuZ2V0VGltZSgpOworCisJICAgIFN0cmluZ1tdIGNhbGVuZGFyTG9jYWxlcyA9IHsKKwkJImFyX0FFIiwgImFyX0JIIiwgImFyX0RaIiwgImFyX0VHIiwgImFyX0pPIiwgImFyX0tXIiwgImFyX09NIiwgCisJCSJhcl9RQSIsICJhcl9TQSIsICJhcl9TWSIsICJhcl9ZRSIsICJtc19NWSIKKwkgICAgfTsKKworCSAgICBTdHJpbmdbXSBmb3JtYXRMb2NhbGVzID0geworCQkiZW4iLCAiYXIiLCAiZmkiLCAiZnIiLCAiaHUiLCAiaXciLCAibmwiCisJICAgIH07CisJICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2FsZW5kYXJMb2NhbGVzLmxlbmd0aDsgKytpKSB7CisJCVN0cmluZyBjYWxMb2NOYW1lID0gY2FsZW5kYXJMb2NhbGVzW2ldOworCQlMb2NhbGUgY2FsTG9jYWxlID0gTG9jYWxlVXRpbGl0eS5nZXRMb2NhbGVGcm9tTmFtZShjYWxMb2NOYW1lKTsKKwkJY2FsID0gbmV3IElzbGFtaWNDYWxlbmRhcihjYWxMb2NhbGUpOworCisJCWZvciAoaW50IGogPSAwOyBqIDwgZm9ybWF0TG9jYWxlcy5sZW5ndGg7ICsraikgeworCQkgICAgU3RyaW5nIGxvY05hbWUgPSBmb3JtYXRMb2NhbGVzW2pdOworCQkgICAgTG9jYWxlIGZvcm1hdExvY2FsZSA9IExvY2FsZVV0aWxpdHkuZ2V0TG9jYWxlRnJvbU5hbWUobG9jTmFtZSk7CisJCSAgICBEYXRlRm9ybWF0IGZvcm1hdCA9IERhdGVGb3JtYXQuZ2V0RGF0ZVRpbWVJbnN0YW5jZShjYWwsIERhdGVGb3JtYXQuRlVMTCwgRGF0ZUZvcm1hdC5GVUxMLCBmb3JtYXRMb2NhbGUpOworCQkgICAgbG9nbG4oY2FsTG9jTmFtZSArICIvIiArIGxvY05hbWUgKyAiIC0tPiAiICsgZm9ybWF0LmZvcm1hdCh0aW1lKSk7CisJCX0KKwkgICAgfQorCX0KKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBJc2xhbWljQ2FsZW5kYXIgbmV3Q2l2aWwoKSB7CisgICAgICAgIElzbGFtaWNDYWxlbmRhciBjaXZpbENhbGVuZGFyID0gbmV3IElzbGFtaWNDYWxlbmRhcigpOworICAgICAgICBjaXZpbENhbGVuZGFyLnNldENpdmlsKHRydWUpOworICAgICAgICByZXR1cm4gY2l2aWxDYWxlbmRhcjsKKyAgICB9CisgICAgCit9OwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NhbGVuZGFyL0phcGFuZXNlVGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NhbGVuZGFyL0phcGFuZXNlVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkMjk0NTkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY2FsZW5kYXIvSmFwYW5lc2VUZXN0LmphdmEKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAgICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9jYWxlbmRhci9KYXBhbmVzZVRlc3QuamF2YSx2ICQKKyAqICREYXRlOiAyMDAyLzA4LzA4IDIzOjA2OjA5ICQKKyAqICRSZXZpc2lvbjogMS4xICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudGVzdC5jYWxlbmRhcjsKKworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CisKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLkxvY2FsZVV0aWxpdHk7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC5EYXRlRm9ybWF0OworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuQ2FsZW5kYXI7CitpbXBvcnQgY29tLmlibS5pY3UudXRpbC5KYXBhbmVzZUNhbGVuZGFyOworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuVGltZVpvbmU7CisKKy8qKgorICogVGVzdHMgZm9yIHRoZSA8Y29kZT5Jc2xhbWljQ2FsZW5kYXI8L2NvZGU+IGNsYXNzLgorICovCitwdWJsaWMgY2xhc3MgSmFwYW5lc2VUZXN0IGV4dGVuZHMgQ2FsZW5kYXJUZXN0IHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgYXJnc1tdKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgbmV3IEphcGFuZXNlVGVzdCgpLnJ1bihhcmdzKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0Q292ZXJhZ2UoKSB7CisJeworCSAgICAvLyBuZXcgSmFwYW5lc2VDYWxlbmRhcihUaW1lWm9uZSkKKwkgICAgSmFwYW5lc2VDYWxlbmRhciBjYWwgPSBuZXcgSmFwYW5lc2VDYWxlbmRhcihUaW1lWm9uZS5nZXREZWZhdWx0KCkpOworCX0KKwkKKwl7CisJICAgIC8vIG5ldyBKYXBhbmVzZUNhbGVuZGFyKExvY2FsZSkKKwkgICAgSmFwYW5lc2VDYWxlbmRhciBjYWwgPSBuZXcgSmFwYW5lc2VDYWxlbmRhcihMb2NhbGUuZ2V0RGVmYXVsdCgpKTsKKwl9CisKKwl7CisJICAgIC8vIG5ldyBKYXBhbmVzZUNhbGVuZGFyKFRpbWVab25lLCBMb2NhbGUpCisJICAgIEphcGFuZXNlQ2FsZW5kYXIgY2FsID0gbmV3IEphcGFuZXNlQ2FsZW5kYXIoVGltZVpvbmUuZ2V0RGVmYXVsdCgpLCBMb2NhbGUuZ2V0RGVmYXVsdCgpKTsKKwl9CisKKwl7CisJICAgIC8vIG5ldyBKYXBhbmVzZUNhbGVuZGFyKERhdGUpCisJICAgIEphcGFuZXNlQ2FsZW5kYXIgY2FsID0gbmV3IEphcGFuZXNlQ2FsZW5kYXIobmV3IERhdGUoKSk7CisJfQorCisJeworCSAgICAvLyBuZXcgSmFwYW5lc2VDYWxlbmRhcihpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF0ZSkKKwkgICAgSmFwYW5lc2VDYWxlbmRhciBjYWwgPSBuZXcgSmFwYW5lc2VDYWxlbmRhcigxODY4LCBDYWxlbmRhci5KQU5VQVJZLCAxKTsKKwl9CisKKwl7CisJICAgIC8vIG5ldyBKYXBhbmVzZUNhbGVuZGFyKGludCBlcmEsIGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXRlKQorCSAgICBKYXBhbmVzZUNhbGVuZGFyIGNhbCA9IG5ldyBKYXBhbmVzZUNhbGVuZGFyKEphcGFuZXNlQ2FsZW5kYXIuTUVJSkksIDQzLCBDYWxlbmRhci5KQU5VQVJZLCAxKTsKKwl9CisKKwl7CisJICAgIC8vIG5ldyBKYXBhbmVzZUNhbGVuZGFyKGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXRlLCBpbnQgaG91ciwgaW50IG1pbnV0ZSwgaW50IHNlY29uZCkKKwkgICAgSmFwYW5lc2VDYWxlbmRhciBjYWwgPSBuZXcgSmFwYW5lc2VDYWxlbmRhcigxODY4LCBDYWxlbmRhci5KQU5VQVJZLCAxLCAxLCAxLCAxKTsKKwl9CisKKwl7CisJICAgIC8vIGxpbWl0cworCSAgICBKYXBhbmVzZUNhbGVuZGFyIGNhbCA9IG5ldyBKYXBhbmVzZUNhbGVuZGFyKCk7CisJICAgIERhdGVGb3JtYXQgZm10ID0gY2FsLmdldERhdGVUaW1lRm9ybWF0KERhdGVGb3JtYXQuRlVMTCwgRGF0ZUZvcm1hdC5GVUxMLCBMb2NhbGUuRU5HTElTSCk7CisKKwkgICAgY2FsLnNldChjYWwuRVJBLCBjYWwuTUVJSkkpOworCSAgICBsb2dsbigiZGF0ZTogIiArIGNhbC5nZXRUaW1lKCkpOworCSAgICBsb2dsbigibWluIGVyYTogIiArIGNhbC5nZXRNaW5pbXVtKGNhbC5FUkEpKTsKKwkgICAgbG9nbG4oIm1pbiB5ZWFyOiAiICsgY2FsLmdldE1pbmltdW0oY2FsLllFQVIpKTsKKwkgICAgY2FsLnNldChjYWwuWUVBUiwgY2FsLmdldEFjdHVhbE1heGltdW0oY2FsLllFQVIpKTsKKwkgICAgbG9nbG4oImRhdGU6ICIgKyBmbXQuZm9ybWF0KGNhbC5nZXRUaW1lKCkpKTsKKwkgICAgY2FsLmFkZChjYWwuWUVBUiwgMSk7CisJICAgIGxvZ2xuKCJkYXRlOiAiICsgZm10LmZvcm1hdChjYWwuZ2V0VGltZSgpKSk7CisJfQorCQorCXsKKwkgICAgLy8gZGF0YQorCSAgICBKYXBhbmVzZUNhbGVuZGFyIGNhbCA9IG5ldyBKYXBhbmVzZUNhbGVuZGFyKDE4NjgsIENhbGVuZGFyLkpBTlVBUlksIDEpOworCSAgICBEYXRlIHRpbWUgPSBjYWwuZ2V0VGltZSgpOworCisJICAgIFN0cmluZ1tdIGNhbGVuZGFyTG9jYWxlcyA9IHsKKwkJImVuIiwgImphX0pQIgorCSAgICB9OworCisJICAgIFN0cmluZ1tdIGZvcm1hdExvY2FsZXMgPSB7CisJCSJlbiIsICJqYSIKKwkgICAgfTsKKwkgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjYWxlbmRhckxvY2FsZXMubGVuZ3RoOyArK2kpIHsKKwkJU3RyaW5nIGNhbExvY05hbWUgPSBjYWxlbmRhckxvY2FsZXNbaV07CisJCUxvY2FsZSBjYWxMb2NhbGUgPSBMb2NhbGVVdGlsaXR5LmdldExvY2FsZUZyb21OYW1lKGNhbExvY05hbWUpOworCQljYWwgPSBuZXcgSmFwYW5lc2VDYWxlbmRhcihjYWxMb2NhbGUpOworCisJCWZvciAoaW50IGogPSAwOyBqIDwgZm9ybWF0TG9jYWxlcy5sZW5ndGg7ICsraikgeworCQkgICAgU3RyaW5nIGxvY05hbWUgPSBmb3JtYXRMb2NhbGVzW2pdOworCQkgICAgTG9jYWxlIGZvcm1hdExvY2FsZSA9IExvY2FsZVV0aWxpdHkuZ2V0TG9jYWxlRnJvbU5hbWUobG9jTmFtZSk7CisJCSAgICBEYXRlRm9ybWF0IGZvcm1hdCA9IERhdGVGb3JtYXQuZ2V0RGF0ZVRpbWVJbnN0YW5jZShjYWwsIERhdGVGb3JtYXQuRlVMTCwgRGF0ZUZvcm1hdC5GVUxMLCBmb3JtYXRMb2NhbGUpOworCQkgICAgbG9nbG4oY2FsTG9jTmFtZSArICIvIiArIGxvY05hbWUgKyAiIC0tPiAiICsgZm9ybWF0LmZvcm1hdCh0aW1lKSk7CisJCX0KKwkgICAgfQorCX0KKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9jYWxlbmRhci9UZXN0Q2FzZS5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NhbGVuZGFyL1Rlc3RDYXNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZmJmNWM2YwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9jYWxlbmRhci9UZXN0Q2FzZS5qYXZhCkBAIC0wLDAgKzEsMjQ1IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY2FsZW5kYXIvVGVzdENhc2UuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNTowNyAkIAorICogJFJldmlzaW9uOiAxLjcgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0LmNhbGVuZGFyOworCitpbXBvcnQgY29tLmlibS5pY3UuZGV2LnRlc3QuKjsKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLkNhbGVuZGFyOworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuR3JlZ29yaWFuQ2FsZW5kYXI7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgY29tLmlibS5pY3UudXRpbC5TaW1wbGVUaW1lWm9uZTsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworCisvKioKKyAqIEEgcHNldWRvIDxjb2RlPkNhbGVuZGFyPC9jb2RlPiB0aGF0IGlzIHVzZWZ1bCBmb3IgdGVzdGluZworICogbmV3IGNhbGVuZGFycy4gIEEgPGNvZGU+VGVzdENhc2U8L2NvZGU+IG9iamVjdCBpcyB1c2VkIHRvIGhvbGQgdGhlCisgKiBmaWVsZCBhbmQgbWlsbGlzZWNvbmQgdmFsdWVzIHRoYXQgdGhlIGNhbGVuZGFyIHNob3VsZCBoYXZlIGF0IG9uZQorICogcGFydGljdWxhciBpbnN0YW50IGluIHRpbWUuICBUaGUgYXBwbHlGaWVsZHMgYW5kIGFwcGx5VGltZQorICogbWV0aG9kcyBhcmUgdXNlZCB0byBhcHBseSB0aGVzZSBzZXR0aW5ncyB0byB0aGUgY2FsZW5kYXIgb2JqZWN0IGJlaW5nCisgKiB0ZXN0ZWQsIGFuZCB0aGUgZXF1YWxzIGFuZCBmaWVsZHNFcXVhbCBtZXRob2RzIGFyZSB1c2VkIHRvIGVuc3VyZQorICogdGhhdCB0aGUgY2FsZW5kYXIgaGFzIGVuZGVkIHVwIGluIHRoZSByaWdodCBzdGF0ZS4KKyAqLworcHVibGljIGNsYXNzIFRlc3RDYXNlIHsKKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gUHNldWRvLUNhbGVuZGFyIGZpZWxkcyBhbmQgbWV0aG9kcworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBwcm90ZWN0ZWQgaW50W10gZmllbGRzID0gbmV3IGludFszMl07CisgICAgcHJvdGVjdGVkIGJvb2xlYW5bXSBpc1NldCA9IG5ldyBib29sZWFuWzMyXTsKKyAgICBwcm90ZWN0ZWQgbG9uZyB0aW1lOworCisgICAgcHJvdGVjdGVkIHZvaWQgc2V0KGludCBmaWVsZCwgaW50IHZhbHVlKSB7CisgICAgICAgIGZpZWxkc1tmaWVsZF0gPSB2YWx1ZTsKKyAgICAgICAgaXNTZXRbZmllbGRdID0gdHJ1ZTsKKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgaW50IGdldChpbnQgZmllbGQpIHsKKyAgICAgICAgcmV0dXJuIGZpZWxkc1tmaWVsZF07CisgICAgfQorCisgICAgcHJvdGVjdGVkIGJvb2xlYW4gaXNTZXQoaW50IGZpZWxkKSB7CisgICAgICAgIHJldHVybiBpc1NldFtmaWVsZF07CisgICAgfQorCisgICAgcHJvdGVjdGVkIHZvaWQgc2V0VGltZShEYXRlIGQpIHsKKyAgICAgICAgdGltZSA9IGQuZ2V0VGltZSgpOworICAgIH0KKworICAgIHB1YmxpYyBEYXRlIGdldFRpbWUoKSB7CisgICAgICAgIHJldHVybiBuZXcgRGF0ZSh0aW1lKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSBTdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyB0ZXN0IGNhc2UncyB0aW1lLgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgIHJldHVybiBkb3dUb1N0cmluZyhnZXQoQ2FsZW5kYXIuREFZX09GX1dFRUspKSArCisgICAgICAgICAgICBnZXQoQ2FsZW5kYXIuWUVBUikgKyAiLyIgKyAoZ2V0KENhbGVuZGFyLk1PTlRIKSsxKSArICIvIiArCisgICAgICAgICAgICBnZXQoQ2FsZW5kYXIuREFURSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nW10gRE9XX05BTUVTID0geworICAgICAgICAiU3VuIiwgIk1vbiIsICJUdWUiLCAiV2VkIiwgIlRodSIsICJGcmkiLCAiU2F0IgorICAgIH07CisKKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBkb3dUb1N0cmluZyhpbnQgZG93KSB7CisgICAgICAgIC0tZG93OworICAgICAgICByZXR1cm4gKGRvdyA8IDAgfHwgZG93ID4gNikgPworICAgICAgICAgICAgKCI8RE9XICIgKyBkb3cgKyAiPiIpIDogRE9XX05BTUVTW2Rvd107CisgICAgfQorCisgICAgLyoqCisgICAgICogSW5pdGlhbGl6ZSBhIFRlc3RDYXNlIG9iamVjdCB1c2luZyBhIGp1bGlhbiBkYXkgbnVtYmVyIGFuZAorICAgICAqIHRoZSBjb3JyZXNwb25kaW5nIGZpZWxkcyBmb3IgdGhlIGNhbGVuZGFyIGJlaW5nIHRlc3RlZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBlcmEgICAgICAgVGhlIEVSQSBmaWVsZCBvZiB0ZXN0ZWQgY2FsZW5kYXIgb24gdGhlIGdpdmVuIGp1bGlhbiBkYXkKKyAgICAgKiBAcGFyYW0geWVhciAgICAgIFRoZSBZRUFSIGZpZWxkIG9mIHRlc3RlZCBjYWxlbmRhciBvbiB0aGUgZ2l2ZW4ganVsaWFuIGRheQorICAgICAqIEBwYXJhbSBtb250aCAgICAgVGhlIE1PTlRIICgxLWJhc2VkKSBmaWVsZCBvZiB0ZXN0ZWQgY2FsZW5kYXIgb24gdGhlIGdpdmVuIGp1bGlhbiBkYXkKKyAgICAgKiBAcGFyYW0gZGF5ICAgICAgIFRoZSBEQVlfT0ZfTU9OVEggZmllbGQgb2YgdGVzdGVkIGNhbGVuZGFyIG9uIHRoZSBnaXZlbiBqdWxpYW4gZGF5CisgICAgICogQHBhcmFtIGRheU9mV2VlayBUaGUgREFZX09GX1dFRUsgZmllbGQgb2YgdGVzdGVkIGNhbGVuZGFyIG9uIHRoZSBnaXZlbiBqdWxpYW4gZGF5CisgICAgICogQHBhcmFtIGhvdXIgICAgICBUaGUgSE9VUiBmaWVsZCBvZiB0ZXN0ZWQgY2FsZW5kYXIgb24gdGhlIGdpdmVuIGp1bGlhbiBkYXkKKyAgICAgKiBAcGFyYW0gbWluICAgICAgIFRoZSBNSU5VVEUgZmllbGQgb2YgdGVzdGVkIGNhbGVuZGFyIG9uIHRoZSBnaXZlbiBqdWxpYW4gZGF5CisgICAgICogQHBhcmFtIHNlYyAgICAgICBUaGUgU0VDT05EIGZpZWxkIG9mIHRlc3RlZCBjYWxlbmRhciBvbiB0aGUgZ2l2ZW4ganVsaWFuIGRheQorICAgICAqLworICAgIHB1YmxpYyBUZXN0Q2FzZShkb3VibGUganVsaWFuLAorICAgICAgICAgICAgICAgICAgICBpbnQgZXJhLCBpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF5LAorICAgICAgICAgICAgICAgICAgICBpbnQgZGF5T2ZXZWVrLAorICAgICAgICAgICAgICAgICAgICBpbnQgaG91ciwgaW50IG1pbiwgaW50IHNlYykKKyAgICB7CisgICAgICAgIHNldFRpbWUobmV3IERhdGUoSlVMSUFOX0VQT0NIICsgKGxvbmcpKE9ORV9EQVkgKiBqdWxpYW4pKSk7CisgICAgICAgIAorICAgICAgICBzZXQoQ2FsZW5kYXIuRVJBLCBlcmEpOworICAgICAgICBzZXQoQ2FsZW5kYXIuWUVBUiwgeWVhcik7CisgICAgICAgIHNldChDYWxlbmRhci5NT05USCwgbW9udGggLSAxKTsKKyAgICAgICAgc2V0KENhbGVuZGFyLkRBVEUsIGRheSk7CisgICAgICAgIHNldChDYWxlbmRhci5EQVlfT0ZfV0VFSywgZGF5T2ZXZWVrKTsKKyAgICAgICAgc2V0KENhbGVuZGFyLkhPVVIsIGhvdXIpOworICAgICAgICBzZXQoQ2FsZW5kYXIuTUlOVVRFLCBtaW4pOworICAgICAgICBzZXQoQ2FsZW5kYXIuU0VDT05ELCBzZWMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEluaXRpYWxpemUgYSBUZXN0Q2FzZSBvYmplY3QgdXNpbmcgYSBHcmVnb3JpYW4geWVhci9tb250aC9kYXkgYW5kCisgICAgICogdGhlIGNvcnJlc3BvbmRpbmcgZmllbGRzIGZvciB0aGUgY2FsZW5kYXIgYmVpbmcgdGVzdGVkLgorICAgICAqCisgICAgICogQHBhcmFtIGdyZWdZZWFyICBUaGUgR3JlZ29yaWFuIHllYXIgb2YgdGhlIGRhdGUgdG8gYmUgdGVzdGVkCisgICAgICogQHBhcmFtIGdyZWdNb250aCBUaGUgR3JlZ29yaWFuIG1vbnRoIG9mIHRoZSBkYXRlIHRvIGJlIHRlc3RlZAorICAgICAqIEBwYXJhbSBncmVnRGF5ICAgVGhlIEdyZWdvcmlhbiBkYXkgb2YgdGhlIG1vbnRoIG9mIHRoZSBkYXRlIHRvIGJlIHRlc3RlZAorICAgICAqCisgICAgICogQHBhcmFtIGVyYSAgICAgICBUaGUgRVJBIGZpZWxkIG9mIHRlc3RlZCBjYWxlbmRhciBvbiB0aGUgZ2l2ZW4gZ3JlZ29yaWFuIGRhdGUKKyAgICAgKiBAcGFyYW0geWVhciAgICAgIFRoZSBZRUFSIGZpZWxkIG9mIHRlc3RlZCBjYWxlbmRhciBvbiB0aGUgZ2l2ZW4gZ3JlZ29yaWFuIGRhdGUKKyAgICAgKiBAcGFyYW0gbW9udGggICAgIFRoZSBNT05USCAoMC1iYXNlZCkgZmllbGQgb2YgdGVzdGVkIGNhbGVuZGFyIG9uIHRoZSBnaXZlbiBncmVnb3JpYW4gZGF0ZQorICAgICAqIEBwYXJhbSBkYXkgICAgICAgVGhlIERBWV9PRl9NT05USCBmaWVsZCBvZiB0ZXN0ZWQgY2FsZW5kYXIgb24gdGhlIGdpdmVuIGdyZWdvcmlhbiBkYXRlCisgICAgICogQHBhcmFtIGRheU9mV2VlayBUaGUgREFZX09GX1dFRUsgZmllbGQgb2YgdGVzdGVkIGNhbGVuZGFyIG9uIHRoZSBnaXZlbiBncmVnb3JpYW4gZGF0ZQorICAgICAqIEBwYXJhbSBob3VyICAgICAgVGhlIEhPVVIgZmllbGQgb2YgdGVzdGVkIGNhbGVuZGFyIG9uIHRoZSBnaXZlbiBncmVnb3JpYW4gZGF0ZQorICAgICAqIEBwYXJhbSBtaW4gICAgICAgVGhlIE1JTlVURSBmaWVsZCBvZiB0ZXN0ZWQgY2FsZW5kYXIgb24gdGhlIGdpdmVuIGdyZWdvcmlhbiBkYXRlCisgICAgICogQHBhcmFtIHNlYyAgICAgICBUaGUgU0VDT05EIGZpZWxkIG9mIHRlc3RlZCBjYWxlbmRhciBvbiB0aGUgZ2l2ZW4gZ3JlZ29yaWFuIGRhdGUKKyAgICAgKi8KKyAgICBwdWJsaWMgVGVzdENhc2UoaW50IGdyZWdZZWFyLCBpbnQgZ3JlZ01vbnRoLCBpbnQgZ3JlZ0RheSwKKyAgICAgICAgICAgICAgICAgICAgaW50IGVyYSwgaW50IHllYXIsIGludCBtb250aCwgaW50IGRheSwKKyAgICAgICAgICAgICAgICAgICAgaW50IGRheU9mV2VlaywKKyAgICAgICAgICAgICAgICAgICAgaW50IGhvdXIsIGludCBtaW4sIGludCBzZWMpCisgICAgeworICAgICAgICBHcmVnb3JpYW5DYWxlbmRhciBncmVnID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKFVUQywgTG9jYWxlLmdldERlZmF1bHQoKSk7CisgICAgICAgIGdyZWcuY2xlYXIoKTsKKyAgICAgICAgZ3JlZy5zZXQoZ3JlZ1llYXIsIGdyZWdNb250aC0xLCBncmVnRGF5KTsKKyAgICAgICAgc2V0VGltZShncmVnLmdldFRpbWUoKSk7CisgICAgICAgIAorICAgICAgICBzZXQoQ2FsZW5kYXIuRVJBLCBlcmEpOworICAgICAgICBzZXQoQ2FsZW5kYXIuWUVBUiwgeWVhcik7CisgICAgICAgIHNldChDYWxlbmRhci5NT05USCwgbW9udGggLSAxKTsKKyAgICAgICAgc2V0KENhbGVuZGFyLkRBVEUsIGRheSk7CisgICAgICAgIHNldChDYWxlbmRhci5EQVlfT0ZfV0VFSywgZGF5T2ZXZWVrKTsKKyAgICAgICAgc2V0KENhbGVuZGFyLkhPVVIsIGhvdXIpOworICAgICAgICBzZXQoQ2FsZW5kYXIuTUlOVVRFLCBtaW4pOworICAgICAgICBzZXQoQ2FsZW5kYXIuU0VDT05ELCBzZWMpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBGb3Igc3ViY2xhc3Nlcy4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgVGVzdENhc2UoKSB7fQorCisgICAgLyoqCisgICAgICogQXBwbHkgdGhpcyB0ZXN0IGNhc2UncyBmaWVsZCB2YWx1ZXMgdG8gYW5vdGhlciBjYWxlbmRhcgorICAgICAqIGJ5IGNhbGxpbmcgaXRzIHNldCBtZXRob2QgZm9yIGVhY2ggZmllbGQuICBUaGlzIGlzIHVzZWZ1bCBpbiBjb21iaW5hdGlvbgorICAgICAqIHdpdGggdGhlIGVxdWFsIG1ldGhvZC4KKyAgICAgKgorICAgICAqIEBzZWUgI2VxdWFsCisgICAgICovCisgICAgcHVibGljIHZvaWQgYXBwbHlGaWVsZHMoQ2FsZW5kYXIgYykgeworICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBjLmdldEZpZWxkQ291bnQoKTsgaSsrKSB7CisgICAgICAgICAgICBpZiAoaXNTZXQoaSkpIHsKKyAgICAgICAgICAgICAgICBjLnNldChpLCBnZXQoaSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEFwcGx5IHRoaXMgdGVzdCBjYXNlJ3MgdGltZSBpbiBtaWxsaXNlY29uZHMgdG8gYW5vdGhlciBjYWxlbmRhcgorICAgICAqIGJ5IGNhbGxpbmcgaXRzIHNldFRpbWUgbWV0aG9kLiAgVGhpcyBpcyB1c2VmdWwgaW4gY29tYmluYXRpb24KKyAgICAgKiB3aXRoIGZpZWxkc0VxdWFsCisgICAgICoKKyAgICAgKiBAc2VlICNmaWVsZHNFcXVhbAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGFwcGx5VGltZShDYWxlbmRhciBjKSB7CisgICAgICAgIGMuc2V0VGltZShuZXcgRGF0ZSh0aW1lKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGZpZWxkcyBvZiB0aGlzIGNhbGVuZGFyCisgICAgICogYXJlIHRoZSBzYW1lIGFzIHRoYXQgb2YgdGhlIG90aGVyIGNhbGVuZGFyLiAgVGhpcyBtZXRob2QgaXMgdXNlZnVsCisgICAgICogZm9yIGRldGVybWluaW5nIHdoZXRoZXIgdGhlIG90aGVyIGNhbGVuZGFyJ3MgY29tcHV0ZUZpZWxkcyBtZXRob2QKKyAgICAgKiB3b3JrcyBwcm9wZXJseS4gIEZvciBleGFtcGxlOgorICAgICAqIDxwcmU+CisgICAgICogICAgQ2FsZW5kYXIgdGVzdENhbGVuZGFyID0gLi4uCisgICAgICogICAgVGVzdENhc2UgY2FzZSA9IC4uLgorICAgICAqICAgIGNhc2UuYXBwbHlUaW1lKHRlc3RDYWxlbmRhcik7CisgICAgICogICAgaWYgKCFjYXNlLmZpZWxkc0VxdWFsKHRlc3RDYWxlbmRhcikpIHsKKyAgICAgKiAgICAgICAgLy8gRXJyb3IhCisgICAgICogICAgfQorICAgICAqIDwvcHJlPgorICAgICAqIAorICAgICAqIEBzZWUgI2FwcGx5VGltZQorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGZpZWxkc0VxdWFsKENhbGVuZGFyIGMsIFRlc3RMb2cgbG9nKSB7CisgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IGMuZ2V0RmllbGRDb3VudCgpOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChpc1NldChpKSAmJiBnZXQoaSkgIT0gYy5nZXQoaSkpIHsKKyAgICAgICAgICAgICAgICBsb2cuZXJybG4oIkZhaWw6ICIgKyBDYWxlbmRhclRlc3QuZmllbGROYW1lKGkpICsgIiA9ICIgKyBjLmdldChpKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICIsIGV4cGVjdGVkICIgKyBnZXQoaSkpOworICAgICAgICAgICAgICAgIGZvciAoaW50IGo9MDsgajxjLmdldEZpZWxkQ291bnQoKTsgKytqKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChpc1NldChqKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldChqKSA9PSBjLmdldChqKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZy5lcnJsbigiIE9LOiAiICsgQ2FsZW5kYXJUZXN0LmZpZWxkTmFtZShqKSArICIgPSAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXQoaikpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2cuZXJybG4oIiBGYWlsOiAiICsgQ2FsZW5kYXJUZXN0LmZpZWxkTmFtZShqKSArICIgPSAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXQoaikgKyAiLCBleHBlY3RlZCAiICsgZ2V0KGopKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBEZXRlcm1pbmUgd2hldGhlciB0aW1lIGluIG1pbGxpc2Vjb25kcyBvZiB0aGlzIGNhbGVuZGFyCisgICAgICogaXMgdGhlIHNhbWUgYXMgdGhhdCBvZiB0aGUgb3RoZXIgY2FsZW5kYXIuICBUaGlzIG1ldGhvZCBpcyB1c2VmdWwKKyAgICAgKiBmb3IgZGV0ZXJtaW5pbmcgd2hldGhlciB0aGUgb3RoZXIgY2FsZW5kYXIncyBjb21wdXRlVGltZSBtZXRob2QKKyAgICAgKiB3b3JrcyBwcm9wZXJseS4gIEZvciBleGFtcGxlOgorICAgICAqIDxwcmU+CisgICAgICogICAgQ2FsZW5kYXIgdGVzdENhbGVuZGFyID0gLi4uCisgICAgICogICAgVGVzdENhc2UgY2FzZSA9IC4uLgorICAgICAqICAgIGNhc2UuYXBwbHlGaWVsZHModGVzdENhbGVuZGFyKTsKKyAgICAgKiAgICBpZiAoIWNhc2UuZXF1YWxzKHRlc3RDYWxlbmRhcikpIHsKKyAgICAgKiAgICAgICAgLy8gRXJyb3IhCisgICAgICogICAgfQorICAgICAqIDwvcHJlPgorICAgICAqIAorICAgICAqIEBzZWUgI2FwcGx5RmllbGRzCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCBvYmopIHsKKyAgICAgICAgcmV0dXJuIHRpbWUgPT0gKChDYWxlbmRhcilvYmopLmdldFRpbWUoKS5nZXRUaW1lKCk7CisgICAgfQorICAgIAorICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50ICBPTkVfU0VDT05EID0gMTAwMDsKKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCAgT05FX01JTlVURSA9IDYwKk9ORV9TRUNPTkQ7CisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgIE9ORV9IT1VSICAgPSA2MCpPTkVfTUlOVVRFOworICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgbG9uZyBPTkVfREFZICAgID0gMjQqT05FX0hPVVI7CisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBsb25nIEpVTElBTl9FUE9DSCA9IC0yMTA4NjY3NjAwMDAwMDBMOyAgIC8vIDEvMS80NzEzIEJDIDEyOjAwCisKKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIFNpbXBsZVRpbWVab25lIFVUQyA9IG5ldyBTaW1wbGVUaW1lWm9uZSgwLCAiR01UIik7Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY2FsZW5kYXIvcGFja2FnZS5odG1sIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NhbGVuZGFyL3BhY2thZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42ZWQwNjJlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NhbGVuZGFyL3BhY2thZ2UuaHRtbApAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPCEtLSAgQ29weXJpZ2h0IChDKSAyMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZAorICBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NhbGVuZGFyL3BhY2thZ2UuaHRtbCx2ICQKKyAgJFJldmlzaW9uOiAxLjEgJAorICAkRGF0ZTogMjAwMC8wMy8xNSAyMTozNTo0OSAkCistLT4KKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IndoaXRlIj4KK1Rlc3RzIGZvciB0aGUgY2FsZW5kYXIgY2xhc3Nlcy4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY29sbGF0b3IvQ29sbGF0aW9uQVBJVGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NvbGxhdG9yL0NvbGxhdGlvbkFQSVRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNGFhMmVhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NvbGxhdG9yL0NvbGxhdGlvbkFQSVRlc3QuamF2YQpAQCAtMCwwICsxLDc5NyBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICAgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAkU291cmNlOiAKKyAqICREYXRlOiAKKyAqICRSZXZpc2lvbjogCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworLyoqIAorICogUG9ydCBGcm9tOiAgIElDVTRDIHYyLjEgOiBjb2xsYXRlL0NvbGxhdGlvbkFQSVRlc3QKKyAqIFNvdXJjZSBGaWxlOiAkSUNVNENSb290L3NvdXJjZS90ZXN0L2ludGx0ZXN0L2FwaWNvbGwuY3BwCisgKiovCisgCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0LmNvbGxhdG9yOworCitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKK2ltcG9ydCBqYXZhLnRleHQuQ2hhcmFjdGVySXRlcmF0b3I7CitpbXBvcnQgamF2YS50ZXh0LlN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yOworaW1wb3J0IGNvbS5pYm0uaWN1LmRldi50ZXN0Lio7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC4qOworCitwdWJsaWMgY2xhc3MgQ29sbGF0aW9uQVBJVGVzdCBleHRlbmRzIFRlc3RGbXdrIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgbmV3IENvbGxhdGlvbkFQSVRlc3QoKS5ydW4oYXJncyk7CisgICAgICAgIC8vbmV3IENvbGxhdGlvbkFQSVRlc3QoKS5UZXN0R2V0VGFpbG9yZWRTZXQoKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogVGhpcyB0ZXN0cyB0aGUgY29sbGF0aW9uIGtleSByZWxhdGVkIEFQSXMuCisgICAgICogLSBjb25zdHJ1Y3Rvci9kZXN0cnVjdG9yCisgICAgICogLSBDb2xsYXRvci5nZXRDb2xsYXRpb25LZXkKKyAgICAgKiAtID09IGFuZCAhPSBvcGVyYXRvcnMKKyAgICAgKiAtIGNvbXBhcmlzb24gYmV0d2VlbiBjb2xsYXRpb24ga2V5cworICAgICAqIC0gY3JlYXRpbmcgY29sbGF0aW9uIGtleSB3aXRoIGEgYnl0ZSBhcnJheSBhbmQgdmljZSB2ZXJzYQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RDb2xsYXRpb25LZXkoKSB7CisgICAgICAgIGxvZ2xuKCJ0ZXN0aW5nIENvbGxhdGlvbktleSBiZWdpbnMuLi4iKTsKKyAgICAgICAgQ29sbGF0b3IgY29sID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNvbCA9IENvbGxhdG9yLmdldEluc3RhbmNlKCk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICBjb2wuc2V0U3RyZW5ndGgoQ29sbGF0b3IuVEVSVElBUlkpOworICAgIAorICAgICAgICBDb2xsYXRpb25LZXkgc29ydGsxLCBzb3J0azI7CisgICAgICAgIFN0cmluZyB0ZXN0MSA9ICJBYmNkYSI7CisgICAgICAgIFN0cmluZyB0ZXN0MiA9ICJhYmNkYSI7CisgICAgCisgICAgICAgIGxvZ2xuKCJUZXN0aW5nIHdlaXJkIGFyZ3VtZW50cyIpOworICAgICAgICBzb3J0azEgPSBjb2wuZ2V0Q29sbGF0aW9uS2V5KCIiKTsKKyAgICAgICAgLy8ga2V5IGdldHMgcmVzZXQgaGVyZQorICAgICAgICBieXRlW10gYnl0ZXMgPSBzb3J0azEudG9CeXRlQXJyYXkoKTsKKyAgICAgICAgZG9Bc3NlcnQoYnl0ZXMubGVuZ3RoID09IDMgJiYgYnl0ZXNbMF0gPT0gMSAmJiBieXRlc1sxXSA9PSAxICYmIGJ5dGVzWzJdID09IDAsIAorICAgICAgICAgICAgICAgICAiRW1wdHkgc3RyaW5nIHNob3VsZCByZXR1cm4gYW4gZW1wdHkgY29sbGF0aW9uIGtleSIpOworICAgICAgICAvLyBib2d1cyBrZXkgcmV0dXJuZWQgaGVyZQorICAgICAgICBzb3J0azEgPSBjb2wuZ2V0Q29sbGF0aW9uS2V5KG51bGwpOworICAgICAgICBkb0Fzc2VydChzb3J0azEgPT0gbnVsbCwgIkVycm9yIGNvZGUgc2hvdWxkIHJldHVybiBib2d1cyBjb2xsYXRpb24ga2V5Iik7CisKKyAgICAgICAgbG9nbG4oIlVzZSB0ZXJ0aWFyeSBjb21wYXJpc29uIGxldmVsIHRlc3RpbmcgLi4uLiIpOworICAgICAgICBzb3J0azEgPSBjb2wuZ2V0Q29sbGF0aW9uS2V5KHRlc3QxKTsKKyAgICAgICAgc29ydGsyID0gY29sLmdldENvbGxhdGlvbktleSh0ZXN0Mik7CisgICAgICAgIE9iamVjdCBzb3J0azMgPSBzb3J0azI7CisgICAgICAgIGRvQXNzZXJ0KChzb3J0azEuY29tcGFyZVRvKHNvcnRrMikpID4gMCAKKyAgICAgICAgICAgICAgICAgJiYgKHNvcnRrMS5jb21wYXJlVG8oc29ydGszKSkgPiAwLCAiUmVzdWx0IHNob3VsZCBiZSBcIkFiY2RhXCIgPj4+IFwiYWJjZGFcIiIpOworICAgIAorICAgICAgICBDb2xsYXRpb25LZXkgc29ydGtOZXc7CisgICAgICAgIHNvcnRrTmV3ID0gc29ydGsxOworICAgICAgICBkb0Fzc2VydCghKHNvcnRrMS5lcXVhbHMoc29ydGsyKSkgJiYgIShzb3J0azEuZXF1YWxzKHNvcnRrMykpLCAKKyAgICAgICAgICAgICAgICAgIlRoZSBzb3J0IGtleXMgc2hvdWxkIGJlIGRpZmZlcmVudCIpOworICAgICAgICBkb0Fzc2VydCgoc29ydGsxLmhhc2hDb2RlKCkgIT0gc29ydGsyLmhhc2hDb2RlKCkpLCAic29ydCBrZXkgaGFzaENvZGUoKSBmYWlsZWQiKTsKKyAgICAgICAgZG9Bc3NlcnQoKHNvcnRrMS5lcXVhbHMoc29ydGtOZXcpKSwgIlRoZSBzb3J0IGtleXMgYXNzaWdubWVudCBmYWlsZWQiKTsKKyAgICAgICAgZG9Bc3NlcnQoKHNvcnRrMS5oYXNoQ29kZSgpID09IHNvcnRrTmV3Lmhhc2hDb2RlKCkpLCAic29ydCBrZXkgaGFzaENvZGUoKSBmYWlsZWQiKTsKKworICAgICAgICBjb2wuc2V0U3RyZW5ndGgoQ29sbGF0b3IuU0VDT05EQVJZKTsKKyAgICAgICAgZG9Bc3NlcnQoY29sLmdldENvbGxhdGlvbktleSh0ZXN0MSkuY29tcGFyZVRvKGNvbC5nZXRDb2xsYXRpb25LZXkodGVzdDIpKSA9PSAwLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJlc3VsdCBzaG91bGQgYmUgXCJBYmNkYVwiID09IFwiYWJjZGFcIiIpOworICAgICAgICAvLyBjaGVjayBpbnZhbGlhZCBjb21wYXJpc29ucworICAgICAgICBPYmplY3QgZmFrZSA9ICJmYWtlIjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHNvcnRrMS5jb21wYXJlVG8oZmFrZSk7CisgICAgICAgICAgICBlcnJsbigiTm9uLUNvbGxhdGlvbktleSBjb21wYXJpc29uIik7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNvcnRrMS5lcXVhbHMoZmFrZSkpIHsKKyAgICAgICAgICAgIGVycmxuKCJOb24tQ29sbGF0aW9uS2V5IGNvbXBhcmlzb24iKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB2b2lkIGRvQXNzZXJ0KGJvb2xlYW4gY29uZGl0aW9ucywgU3RyaW5nIG1lc3NhZ2UpIHsKKyAgICAgICAgaWYgKCFjb25kaXRpb25zKSB7CisgICAgICAgICAgICBlcnJsbigiRXJyb3I6ICIgKyBtZXNzYWdlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBUaGlzIHRlc3RzIHRoZSBjb21wYXJpc29uIGNvbnZlbmllbmNlIG1ldGhvZHMgb2YgYSBjb2xsYXRvciBvYmplY3QuCisgICAgICogLSBncmVhdGVyIHRoYW4KKyAgICAgKiAtIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0bworICAgICAqIC0gZXF1YWwgdG8KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0Q29tcGFyZSgpIHsKKyAgICAgICAgbG9nbG4oIlRoZSBjb21wYXJlIHRlc3RzIGJlZ2luIDogIik7CisgICAgICAgIENvbGxhdG9yIGNvbCA9IG51bGw7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjb2wgPSBDb2xsYXRvci5nZXRJbnN0YW5jZShMb2NhbGUuRU5HTElTSCk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiRGVmYXVsdCBjb2xsYXRpb24gY3JlYXRpb24gZmFpbGVkLiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBTdHJpbmcgdGVzdDEgPSAiQWJjZGEiOworICAgICAgICBTdHJpbmcgdGVzdDIgPSAiYWJjZGEiOworICAgICAgICBsb2dsbigiVXNlIHRlcnRpYXJ5IGNvbXBhcmlzb24gbGV2ZWwgdGVzdGluZyAuLi4uIik7CisgICAgICAgIAorICAgICAgICBPYmplY3Qgb2JqMSA9IHRlc3QxOworICAgICAgICBPYmplY3Qgb2JqMiA9IHRlc3QyOworICAgICAgICBkb0Fzc2VydCgoY29sLmNvbXBhcmUob2JqMSwgb2JqMikgPiAwKSwgIlJlc3VsdCBzaG91bGQgYmUgXCJBYmNkYVwiICE9IFwiYWJjZGFcIiIpOworICAgICAgICBkb0Fzc2VydCgoIWNvbC5lcXVhbHModGVzdDEsIHRlc3QyKSApLCAiUmVzdWx0IHNob3VsZCBiZSBcIkFiY2RhXCIgIT0gXCJhYmNkYVwiIik7CisgICAgICAgIGRvQXNzZXJ0KChjb2wuY29tcGFyZSh0ZXN0MSwgdGVzdDIpID4gMCApLCAiUmVzdWx0IHNob3VsZCBiZSBcIkFiY2RhXCIgPj4+IFwiYWJjZGFcIiIpOworICAgIAorICAgICAgICBjb2wuc2V0U3RyZW5ndGgoQ29sbGF0b3IuU0VDT05EQVJZKTsKKyAgICAgICAgbG9nbG4oIlVzZSBzZWNvbmRhcnkgY29tcGFyaXNvbiBsZXZlbCB0ZXN0aW5nIC4uLi4iKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIGRvQXNzZXJ0KChjb2wuY29tcGFyZShvYmoxLCBvYmoyKSA9PSAwKSwgIlJlc3VsdCBzaG91bGQgYmUgXCJBYmNkYVwiID09IFwiYWJjZGFcIiIpOworICAgICAgICBkb0Fzc2VydCgoY29sLmVxdWFscyh0ZXN0MSwgdGVzdDIpICksICJSZXN1bHQgc2hvdWxkIGJlIFwiQWJjZGFcIiA9PSBcImFiY2RhXCIiKTsKKyAgICAgICAgZG9Bc3NlcnQoKGNvbC5jb21wYXJlKHRlc3QxLCB0ZXN0MikgPT0gMCksICJSZXN1bHQgc2hvdWxkIGJlIFwiQWJjZGFcIiA9PSBcImFiY2RhXCIiKTsKKyAgICAKKyAgICAgICAgY29sLnNldFN0cmVuZ3RoKENvbGxhdG9yLlBSSU1BUlkpOworICAgICAgICBsb2dsbigiVXNlIHByaW1hcnkgY29tcGFyaXNvbiBsZXZlbCB0ZXN0aW5nIC4uLi4iKTsKKyAgICAgICAgCisgICAgICAgIGRvQXNzZXJ0KChjb2wuY29tcGFyZShvYmoxLCBvYmoyKSA9PSAwICksICJSZXN1bHQgc2hvdWxkIGJlIFwiQWJjZGFcIiA9PSBcImFiY2RhXCIiKTsKKyAgICAgICAgZG9Bc3NlcnQoKGNvbC5lcXVhbHModGVzdDEsIHRlc3QyKSApLCAiUmVzdWx0IHNob3VsZCBiZSBcIkFiY2RhXCIgPT0gXCJhYmNkYVwiIik7CisgICAgICAgIGRvQXNzZXJ0KChjb2wuY29tcGFyZSh0ZXN0MSwgdGVzdDIpID09IDAgKSwgIlJlc3VsdCBzaG91bGQgYmUgXCJBYmNkYVwiID09IFwiYWJjZGFcIiIpOworICAgICAgICBsb2dsbigiVGhlIGNvbXBhcmUgdGVzdHMgZW5kLiIpOworICAgICAgICAKKyAgICAgICAgSW50ZWdlciBkaWUgPSBuZXcgSW50ZWdlcigxKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNvbC5jb21wYXJlKGRpZSwgdGVzdDEpOworICAgICAgICAgICAgZXJybG4oIk5vbi1TdHJpbmdzIHNob3VsZCBmYWlsIGNvbC5jb21wYXJlKE9iamVjdCwgT2JqZWN0KSIpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICogVGVzdHMgZGVjb21wb3NpdGlvbiBzZXR0aW5nCisgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0RGVjb21wb3NpdGlvbigpIHsKKyAgICAgICAgQ29sbGF0b3IgZW5fVVMgPSBudWxsLCBlbF9HUiA9IG51bGwsIHZpX1ZOID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGVuX1VTID0gQ29sbGF0b3IuZ2V0SW5zdGFuY2UobmV3IExvY2FsZSgiZW4iLCAiVVMiKSk7CisgICAgICAgICAgICBlbF9HUiA9IENvbGxhdG9yLmdldEluc3RhbmNlKG5ldyBMb2NhbGUoImVsIiwgIkdSIikpOworICAgICAgICAgICAgdmlfVk4gPSBDb2xsYXRvci5nZXRJbnN0YW5jZShuZXcgTG9jYWxlKCJ2aSIsICJWTiIpKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogY29sbGF0aW9uIGNyZWF0aW9uIGZhaWxlZC5cbiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyB0aGVyZSBpcyBubyByZWFzb24gdG8gaGF2ZSBjYW5vbmljYWwgZGVjb21wb3NpdGlvbiBpbiBlbl9VUyBPUiBkZWZhdWx0IGxvY2FsZSAqLworICAgICAgICBpZiAodmlfVk4uZ2V0RGVjb21wb3NpdGlvbigpICE9IENvbGxhdG9yLkNBTk9OSUNBTF9ERUNPTVBPU0lUSU9OKQorICAgICAgICB7CisgICAgICAgICAgICBlcnJsbigiRVJST1I6IHZpX1ZOIGNvbGxhdGlvbiBkaWQgbm90IGhhdmUgY2Fubm9uaWNhbCBkZWNvbXBvc2l0aW9uIGZvciBub3JtYWxpemF0aW9uIVxuIik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZWxfR1IuZ2V0RGVjb21wb3NpdGlvbigpICE9IENvbGxhdG9yLkNBTk9OSUNBTF9ERUNPTVBPU0lUSU9OKQorICAgICAgICB7CisgICAgICAgICAgICBlcnJsbigiRVJST1I6IGVsX0dSIGNvbGxhdGlvbiBkaWQgbm90IGhhdmUgY2Fubm9uaWNhbCBkZWNvbXBvc2l0aW9uIGZvciBub3JtYWxpemF0aW9uIVxuIik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZW5fVVMuZ2V0RGVjb21wb3NpdGlvbigpICE9IENvbGxhdG9yLk5PX0RFQ09NUE9TSVRJT04pCisgICAgICAgIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogZW5fVVMgY29sbGF0aW9uIGhhZCBjYW5ub25pY2FsIGRlY29tcG9zaXRpb24gZm9yIG5vcm1hbGl6YXRpb24hXG4iKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBUaGlzIHRlc3RzIHRoZSBkdXBsaWNhdGlvbiBvZiBhIGNvbGxhdG9yIG9iamVjdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0RHVwbGljYXRlKCkgeworICAgICAgICAvL0Nsb25lIGRvZXMgbm90IGJlIGltcGxlbWVudGVkIAorICAgICAgICBDb2xsYXRvciBjb2wxID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNvbDEgPSBDb2xsYXRvci5nZXRJbnN0YW5jZShMb2NhbGUuRU5HTElTSCk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiRmFpbHVyZSBjcmVhdGluZyBlbmdsaXNoIGNvbGxhdG9yIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIENvbGxhdG9yIGNvbDIgPSAoQ29sbGF0b3IpY29sMS5jbG9uZSgpOworICAgICAgICAvLyBkb0Fzc2VydChjb2wxLmVxdWFscyhjb2wyKSwgIkNsb25lZCBvYmplY3QgaXMgbm90IGVxdWFsIHRvIHRoZSBvcmdpbmFsIik7CisgICAgICAgIFN0cmluZyBydWxlc2V0ID0gIjwgYSwgQSA8IGIsIEIgPCBjLCBDIDwgZCwgRCwgZSwgRSI7CisgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yIGNvbDMgPSBudWxsOworICAgICAgICB0cnkgeworICAgICAgICAgICAgY29sMyA9IG5ldyBSdWxlQmFzZWRDb2xsYXRvcihydWxlc2V0KTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJGYWlsdXJlIGNyZWF0aW5nIFJ1bGVCYXNlZENvbGxhdG9yIHdpdGggcnVsZToiICsgcnVsZXNldCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZG9Bc3NlcnQoIWNvbDEuZXF1YWxzKGNvbDMpLCAiQ2xvbmVkIG9iamVjdCBpcyBlcXVhbCB0byBzb21lIGR1bW15Iik7CisgICAgICAgIGNvbDMgPSAoUnVsZUJhc2VkQ29sbGF0b3IpY29sMTsKKyAgICAgICAgZG9Bc3NlcnQoY29sMS5lcXVhbHMoY29sMyksICJDb3BpZWQgb2JqZWN0IGlzIG5vdCBlcXVhbCB0byB0aGUgb3JnaW5hbCIpOworICAgICAgICAKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogVGhpcyB0ZXN0cyB0aGUgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yIHJlbGF0ZWQgQVBJcy4KKyAgICAgKiAtIGNyZWF0aW9uIG9mIGEgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yIG9iamVjdAorICAgICAqIC0gPT0gYW5kICE9IG9wZXJhdG9ycworICAgICAqIC0gaXRlcmF0aW5nIGZvcndhcmQKKyAgICAgKiAtIHJlc2V0aW5nIHRoZSBpdGVyYXRvciBpbmRleAorICAgICAqIC0gcmVxdWVzdGluZyB0aGUgb3JkZXIgcHJvcGVydGllcyhwcmltYXJ5LCBzZWNvbmRhcnkgb3IgdGVydGlhcnkpCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEVsZW1JdGVyKCkgeworICAgICAgICAvLyBsb2dsbigidGVzdGluZyBzb3J0a2V5IGJlZ2lucy4uLiIpOworICAgICAgICBDb2xsYXRvciBjb2wgPSBudWxsOworICAgICAgICB0cnkgeworICAgICAgICAgICAgY29sID0gQ29sbGF0b3IuZ2V0SW5zdGFuY2UoTG9jYWxlLkVOR0xJU0gpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkRlZmF1bHQgY29sbGF0aW9uIGNyZWF0aW9uIGZhaWxlZC4iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAKKyAgICAgICAgU3RyaW5nIHRlc3RTdHJpbmcxID0gIlhGSUxFIFdoYXQgc3Vic2V0IG9mIGFsbCBwb3NzaWJsZSB0ZXN0IGNhc2VzIGhhcyB0aGUgaGlnaGVzdCBwcm9iYWJpbGl0eSBvZiBkZXRlY3RpbmcgdGhlIG1vc3QgZXJyb3JzPyI7CisgICAgICAgIFN0cmluZyB0ZXN0U3RyaW5nMiA9ICJYZl9pbGUgV2hhdCBzdWJzZXQgb2YgYWxsIHBvc3NpYmxlIHRlc3QgY2FzZXMgaGFzIHRoZSBsb3dlc3QgcHJvYmFiaWxpdHkgb2YgZGV0ZWN0aW5nIHRoZSBsZWFzdCBlcnJvcnM/IjsKKyAgICAgICAgLy8gbG9nbG4oIkNvbnN0cnVjdG9ycyBhbmQgY29tcGFyaXNvbiB0ZXN0aW5nLi4uLiIpOworICAgICAgICBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IgaXRlcmF0b3IxID0gKChSdWxlQmFzZWRDb2xsYXRvciljb2wpLmdldENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvcih0ZXN0U3RyaW5nMSk7CisgICAgICAgIAorICAgICAgICBDaGFyYWN0ZXJJdGVyYXRvciBjaGFyaXRlcj1uZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IodGVzdFN0cmluZzEpOworICAgICAgICAvLyBjb3B5IGN0b3IKKyAgICAgICAgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yIGl0ZXJhdG9yMiA9ICgoUnVsZUJhc2VkQ29sbGF0b3IpY29sKS5nZXRDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IoY2hhcml0ZXIpOworICAgICAgICBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IgaXRlcmF0b3IzID0gKChSdWxlQmFzZWRDb2xsYXRvciljb2wpLmdldENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvcih0ZXN0U3RyaW5nMik7CisgICAgCisgICAgICAgIGludCBvZmZzZXQgPSAwOworICAgICAgICBvZmZzZXQgPSBpdGVyYXRvcjEuZ2V0T2Zmc2V0KCk7CisgICAgICAgIGlmIChvZmZzZXQgIT0gMCkgeworICAgICAgICAgICAgZXJybG4oIkVycm9yIGluIGdldE9mZnNldCBmb3IgY29sbGF0aW9uIGVsZW1lbnQgaXRlcmF0b3JcbiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGl0ZXJhdG9yMS5zZXRPZmZzZXQoNik7CisgICAgICAgIGl0ZXJhdG9yMS5zZXRPZmZzZXQoMCk7CisgICAgICAgIGludCBvcmRlcjEsIG9yZGVyMiwgb3JkZXIzOworICAgICAgICAKKyAgICAgICAgb3JkZXIxID0gaXRlcmF0b3IxLm5leHQoKTsKKyAgICAgICAgZG9Bc3NlcnQoIShpdGVyYXRvcjEuZXF1YWxzKGl0ZXJhdG9yMikpLCAiVGhlIGZpcnN0IGl0ZXJhdG9yIGFkdmFuY2UgZmFpbGVkIik7CisgICAgICAgIG9yZGVyMiA9IGl0ZXJhdG9yMi5uZXh0KCk7CisgICAgICAgIAorICAgICAgICBkb0Fzc2VydCgoaXRlcmF0b3IxLmVxdWFscyhpdGVyYXRvcjIpKSwgIlRoZSBzZWNvbmQgaXRlcmF0b3IgYWR2YW5jZSBmYWlsZWQiKTsgCisgICAgICAgIGRvQXNzZXJ0KChvcmRlcjEgPT0gb3JkZXIyKSwgIlRoZSBvcmRlciByZXN1bHQgc2hvdWxkIGJlIHRoZSBzYW1lIik7CisgICAgICAgIG9yZGVyMyA9IGl0ZXJhdG9yMy5uZXh0KCk7CisgICAgICAgIAorICAgICAgICBkb0Fzc2VydCgoQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLnByaW1hcnlPcmRlcihvcmRlcjEpID09IAorICAgICAgICAgICAgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLnByaW1hcnlPcmRlcihvcmRlcjMpKSwgIlRoZSBwcmltYXJ5IG9yZGVycyBzaG91bGQgYmUgdGhlIHNhbWUiKTsKKyAgICAgICAgZG9Bc3NlcnQoKENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5zZWNvbmRhcnlPcmRlcihvcmRlcjEpID09IAorICAgICAgICAgICAgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLnNlY29uZGFyeU9yZGVyKG9yZGVyMykpLCAiVGhlIHNlY29uZGFyeSBvcmRlcnMgc2hvdWxkIGJlIHRoZSBzYW1lIik7CisgICAgICAgIGRvQXNzZXJ0KChDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IudGVydGlhcnlPcmRlcihvcmRlcjEpID09IAorICAgICAgICAgICAgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLnRlcnRpYXJ5T3JkZXIob3JkZXIzKSksICJUaGUgdGVydGlhcnkgb3JkZXJzIHNob3VsZCBiZSB0aGUgc2FtZSIpOworICAgIAorICAgICAgICBvcmRlcjEgPSBpdGVyYXRvcjEubmV4dCgpOyAKKyAgICAgICAgb3JkZXIzID0gaXRlcmF0b3IzLm5leHQoKTsKKyAgICAgICAgCisgICAgICAgIGRvQXNzZXJ0KChDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IucHJpbWFyeU9yZGVyKG9yZGVyMSkgPT0gCisgICAgICAgICAgICBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IucHJpbWFyeU9yZGVyKG9yZGVyMykpLCAiVGhlIHByaW1hcnkgb3JkZXJzIHNob3VsZCBiZSBpZGVudGljYWwiKTsKKyAgICAgICAgZG9Bc3NlcnQoKENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci50ZXJ0aWFyeU9yZGVyKG9yZGVyMSkgIT0gCisgICAgICAgICAgICBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IudGVydGlhcnlPcmRlcihvcmRlcjMpKSwgIlRoZSB0ZXJ0aWFyeSBvcmRlcnMgc2hvdWxkIGJlIGRpZmZlcmVudCIpOworICAgIAorICAgICAgICBvcmRlcjEgPSBpdGVyYXRvcjEubmV4dCgpOyAKKyAgICAgICAgb3JkZXIzID0gaXRlcmF0b3IzLm5leHQoKTsKKyAgICAgICAgLy8gaW52YWxpZCB0ZXN0IHdyb25nIGluIFVDQQorICAgICAgICAvLyBkb0Fzc2VydCgoQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLnNlY29uZGFyeU9yZGVyKG9yZGVyMSkgIT0gCisgICAgICAgIC8vICAgIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5zZWNvbmRhcnlPcmRlcihvcmRlcjMpKSwgIlRoZSBzZWNvbmRhcnkgb3JkZXJzIHNob3VsZCBub3QgYmUgdGhlIHNhbWUiKTsKKyAgICAgICAgICAgIAorICAgICAgICBkb0Fzc2VydCgob3JkZXIxICE9IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5OVUxMT1JERVIpLCAiVW5leHBlY3RlZCBlbmQgb2YgaXRlcmF0b3IgcmVhY2hlZCIpOworICAgIAorICAgICAgICBpdGVyYXRvcjEucmVzZXQoKTsgCisgICAgICAgIGl0ZXJhdG9yMi5yZXNldCgpOyAKKyAgICAgICAgaXRlcmF0b3IzLnJlc2V0KCk7CisgICAgICAgIG9yZGVyMSA9IGl0ZXJhdG9yMS5uZXh0KCk7CisgICAgICAgIAorICAgICAgICBkb0Fzc2VydCghKGl0ZXJhdG9yMS5lcXVhbHMoaXRlcmF0b3IyKSksICJUaGUgZmlyc3QgaXRlcmF0b3IgYWR2YW5jZSBmYWlsZWQiKTsKKyAgICAgICAgCisgICAgICAgIG9yZGVyMiA9IGl0ZXJhdG9yMi5uZXh0KCk7CisgICAgICAgIAorICAgICAgICBkb0Fzc2VydCgoaXRlcmF0b3IxLmVxdWFscyhpdGVyYXRvcjIpKSwgIlRoZSBzZWNvbmQgaXRlcmF0b3IgYWR2YW5jZSBmYWlsZWQiKTsKKyAgICAgICAgZG9Bc3NlcnQoKG9yZGVyMSA9PSBvcmRlcjIpLCAiVGhlIG9yZGVyIHJlc3VsdCBzaG91bGQgYmUgdGhlIHNhbWUiKTsKKyAgICAKKyAgICAgICAgb3JkZXIzID0gaXRlcmF0b3IzLm5leHQoKTsKKyAgICAgICAgCisgICAgICAgIGRvQXNzZXJ0KChDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IucHJpbWFyeU9yZGVyKG9yZGVyMSkgPT0gCisgICAgICAgICAgICBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IucHJpbWFyeU9yZGVyKG9yZGVyMykpLCAiVGhlIHByaW1hcnkgb3JkZXJzIHNob3VsZCBiZSB0aGUgc2FtZSIpOworICAgICAgICBkb0Fzc2VydCgoQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLnNlY29uZGFyeU9yZGVyKG9yZGVyMSkgPT0gCisgICAgICAgICAgICBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3Iuc2Vjb25kYXJ5T3JkZXIob3JkZXIzKSksICJUaGUgc2Vjb25kYXJ5IG9yZGVycyBzaG91bGQgYmUgdGhlIHNhbWUiKTsKKyAgICAgICAgZG9Bc3NlcnQoKENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci50ZXJ0aWFyeU9yZGVyKG9yZGVyMSkgPT0gCisgICAgICAgICAgICBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IudGVydGlhcnlPcmRlcihvcmRlcjMpKSwgIlRoZSB0ZXJ0aWFyeSBvcmRlcnMgc2hvdWxkIGJlIHRoZSBzYW1lIik7CisgICAgCisgICAgICAgIG9yZGVyMSA9IGl0ZXJhdG9yMS5uZXh0KCk7IAorICAgICAgICBvcmRlcjIgPSBpdGVyYXRvcjIubmV4dCgpOyAKKyAgICAgICAgb3JkZXIzID0gaXRlcmF0b3IzLm5leHQoKTsKKyAgICAgICAgCisgICAgICAgIGRvQXNzZXJ0KChDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IucHJpbWFyeU9yZGVyKG9yZGVyMSkgPT0gCisgICAgICAgICAgICBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IucHJpbWFyeU9yZGVyKG9yZGVyMykpLCAiVGhlIHByaW1hcnkgb3JkZXJzIHNob3VsZCBiZSBpZGVudGljYWwiKTsKKyAgICAgICAgZG9Bc3NlcnQoKENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci50ZXJ0aWFyeU9yZGVyKG9yZGVyMSkgIT0gCisgICAgICAgICAgICBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IudGVydGlhcnlPcmRlcihvcmRlcjMpKSwgIlRoZSB0ZXJ0aWFyeSBvcmRlcnMgc2hvdWxkIGJlIGRpZmZlcmVudCIpOworICAgIAorICAgICAgICBvcmRlcjEgPSBpdGVyYXRvcjEubmV4dCgpOyAKKyAgICAgICAgb3JkZXIzID0gaXRlcmF0b3IzLm5leHQoKTsKKyAgICAgICAgCisgICAgICAgIC8vIG9ic29sZXRlIGludmFsaWQgdGVzdCwgcmVtb3ZlZAorICAgICAgICAvLyBkb0Fzc2VydCgoQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLnNlY29uZGFyeU9yZGVyKG9yZGVyMSkgIT0gCisgICAgICAgIC8vICAgIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5zZWNvbmRhcnlPcmRlcihvcmRlcjMpKSwgIlRoZSBzZWNvbmRhcnkgb3JkZXJzIHNob3VsZCBub3QgYmUgdGhlIHNhbWUiKTsKKyAgICAgICAgZG9Bc3NlcnQoKG9yZGVyMSAhPSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuTlVMTE9SREVSKSwgIlVuZXhwZWN0ZWQgZW5kIG9mIGl0ZXJhdG9yIHJlYWNoZWQiKTsKKyAgICAgICAgZG9Bc3NlcnQoIShpdGVyYXRvcjIuZXF1YWxzKGl0ZXJhdG9yMykpLCAiVGhlIGl0ZXJhdG9ycyBzaG91bGQgYmUgZGlmZmVyZW50Iik7CisgICAgICAgIGxvZ2xuKCJ0ZXN0aW5nIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvciBlbmRzLi4uIik7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFRoaXMgdGVzdHMgdGhlIGhhc2hDb2RlIG1ldGhvZCBvZiBhIGNvbGxhdG9yIG9iamVjdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0SGFzaENvZGUoKSB7CisgICAgICAgIGxvZ2xuKCJoYXNoQ29kZSB0ZXN0cyBiZWdpbi4iKTsKKyAgICAgICAgQ29sbGF0b3IgY29sMSA9IG51bGw7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjb2wxID0gQ29sbGF0b3IuZ2V0SW5zdGFuY2UoTG9jYWxlLkVOR0xJU0gpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkRlZmF1bHQgY29sbGF0aW9uIGNyZWF0aW9uIGZhaWxlZC4iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIAorICAgICAgICBDb2xsYXRvciBjb2wyID0gbnVsbDsKKyAgICAgICAgTG9jYWxlIGRrID0gbmV3IExvY2FsZSgiZGEiLCAiREsiLCAiIik7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjb2wyID0gQ29sbGF0b3IuZ2V0SW5zdGFuY2UoZGspOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkRhbmlzaCBjb2xsYXRpb24gY3JlYXRpb24gZmFpbGVkLiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgCisgICAgICAgIENvbGxhdG9yIGNvbDMgPSBudWxsOworICAgICAgICB0cnkgeworICAgICAgICAgICAgY29sMyA9IENvbGxhdG9yLmdldEluc3RhbmNlKExvY2FsZS5FTkdMSVNIKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCIybmQgZGVmYXVsdCBjb2xsYXRpb24gY3JlYXRpb24gZmFpbGVkLiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgCisgICAgICAgIGxvZ2xuKCJDb2xsYXRvci5oYXNoQ29kZSgpIHRlc3RpbmcgLi4uIik7CisgICAgICAgIAorICAgICAgICBkb0Fzc2VydChjb2wxLmhhc2hDb2RlKCkgIT0gY29sMi5oYXNoQ29kZSgpLCAiSGFzaCB0ZXN0MSByZXN1bHQgaW5jb3JyZWN0IiApOyAgICAgICAgICAgICAgICAgCisgICAgICAgIGRvQXNzZXJ0KCEoY29sMS5oYXNoQ29kZSgpID09IGNvbDIuaGFzaENvZGUoKSksICJIYXNoIHRlc3QyIHJlc3VsdCBpbmNvcnJlY3QiICk7ICAgICAgICAgICAgICAKKyAgICAgICAgZG9Bc3NlcnQoY29sMS5oYXNoQ29kZSgpID09IGNvbDMuaGFzaENvZGUoKSwgIkhhc2ggcmVzdWx0IG5vdCBlcXVhbCIgKTsgICAgICAgICAgICAgICAKKyAgICAKKyAgICAgICAgbG9nbG4oImhhc2hDb2RlIHRlc3RzIGVuZC4iKTsKKyAgICAgICAgCisgICAgICAgIFN0cmluZyB0ZXN0MSA9ICJBYmNkYSI7CisgICAgICAgIFN0cmluZyB0ZXN0MiA9ICJhYmNkYSI7CisgICAgICAgIAorICAgICAgICBDb2xsYXRpb25LZXkgc29ydGsxLCBzb3J0azIsIHNvcnRrMzsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIHNvcnRrMSA9IGNvbDMuZ2V0Q29sbGF0aW9uS2V5KHRlc3QxKTsKKyAgICAgICAgc29ydGsyID0gY29sMy5nZXRDb2xsYXRpb25LZXkodGVzdDIpOyAKKyAgICAgICAgc29ydGszID0gY29sMy5nZXRDb2xsYXRpb25LZXkodGVzdDIpOyAKKyAgICAgICAgCisgICAgICAgIGRvQXNzZXJ0KHNvcnRrMS5oYXNoQ29kZSgpICE9IHNvcnRrMi5oYXNoQ29kZSgpLCAiSGFzaCB0ZXN0MSByZXN1bHQgaW5jb3JyZWN0Iik7ICAgICAgICAgICAgICAgCisgICAgICAgIGRvQXNzZXJ0KHNvcnRrMi5oYXNoQ29kZSgpID09IHNvcnRrMy5oYXNoQ29kZSgpLCAiSGFzaCByZXN1bHQgbm90IGVxdWFsIiApOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBUaGlzIHRlc3RzIHRoZSBwcm9wZXJ0aWVzIG9mIGEgY29sbGF0b3Igb2JqZWN0LgorICAgICAqIC0gY29uc3RydWN0b3IKKyAgICAgKiAtIGZhY3RvcnkgbWV0aG9kIGdldEluc3RhbmNlCisgICAgICogLSBjb21wYXJlIGFuZCBnZXRDb2xsYXRpb25LZXkKKyAgICAgKiAtIGdldC9zZXQgZGVjb21wb3NpdGlvbiBtb2RlIGFuZCBjb21wYXJpc29uIGxldmVsCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdFByb3BlcnR5KCkgeworICAgICAgICBDb2xsYXRvciBjb2wgPSBudWxsOworICAgICAgICAvKiAKKyAgICAgICAgICBBbGwgdGhlIGNvbGxhdGlvbnMgaGF2ZSB0aGUgc2FtZSB2ZXJzaW9uIGluIGFuIElDVQorICAgICAgICAgIHZlcnNpb24uCisgICAgICAgICAgSUNVIDIuMCBjdXJyVmVyc2lvbkFycmF5ID0gezB4MTgsIDB4QzAsIDB4MDIsIDB4MDJ9OworICAgICAgICAgIElDVSAyLjEgY3VyclZlcnNpb25BcnJheSA9IHsweDE5LCAweDAwLCAweDAzLCAweDAzfTsKKyAgICAgICAgKi8gICAgCisgICAgICAgIGxvZ2xuKCJUaGUgcHJvcGVydHkgdGVzdHMgYmVnaW4gOiAiKTsKKyAgICAgICAgbG9nbG4oIlRlc3QgY3RvcnMgOiAiKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNvbCA9IENvbGxhdG9yLmdldEluc3RhbmNlKExvY2FsZS5FTkdMSVNIKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJEZWZhdWx0IENvbGxhdG9yIGNyZWF0aW9uIGZhaWxlZC4iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIAorICAgICAgICBkb0Fzc2VydCgoY29sLmNvbXBhcmUoImFiIiwgImFiYyIpIDwgMCksICJhYiA8IGFiYyBjb21wYXJpc29uIGZhaWxlZCIpOworICAgICAgICBkb0Fzc2VydCgoY29sLmNvbXBhcmUoImFiIiwgIkFCIikgPCAwKSwgImFiIDwgQUIgY29tcGFyaXNvbiBmYWlsZWQiKTsKKyAgICAgICAgZG9Bc3NlcnQoKGNvbC5jb21wYXJlKCJibGFja2JpcmQiLCAiYmxhY2stYmlyZCIpID4gMCksICJibGFjay1iaXJkID4gYmxhY2tiaXJkIGNvbXBhcmlzb24gZmFpbGVkIik7CisgICAgICAgIGRvQXNzZXJ0KChjb2wuY29tcGFyZSgiYmxhY2sgYmlyZCIsICJibGFjay1iaXJkIikgPCAwKSwgImJsYWNrIGJpcmQgPiBibGFjay1iaXJkIGNvbXBhcmlzb24gZmFpbGVkIik7CisgICAgICAgIGRvQXNzZXJ0KChjb2wuY29tcGFyZSgiSGVsbG8iLCAiaGVsbG8iKSA+IDApLCAiSGVsbG8gPiBoZWxsbyBjb21wYXJpc29uIGZhaWxlZCIpOworICAgIAorICAgICAgICBsb2dsbigiVGVzdCBjdG9ycyBlbmRzLiIpOworICAgICAgICAKKyAgICAgICAgbG9nbG4oInRlc3RpbmcgQ29sbGF0b3IuZ2V0U3RyZW5ndGgoKSBtZXRob2QgLi4uIik7CisgICAgICAgIGRvQXNzZXJ0KChjb2wuZ2V0U3RyZW5ndGgoKSA9PSBDb2xsYXRvci5URVJUSUFSWSksICJjb2xsYXRpb24gb2JqZWN0IGhhcyB0aGUgd3Jvbmcgc3RyZW5ndGgiKTsKKyAgICAgICAgZG9Bc3NlcnQoKGNvbC5nZXRTdHJlbmd0aCgpICE9IENvbGxhdG9yLlBSSU1BUlkpLCAiY29sbGF0aW9uIG9iamVjdCdzIHN0cmVuZ3RoIGlzIHByaW1hcnkgZGlmZmVyZW5jZSIpOworICAgICAgICAgICAgCisgICAgICAgIGxvZ2xuKCJ0ZXN0aW5nIENvbGxhdG9yLnNldFN0cmVuZ3RoKCkgbWV0aG9kIC4uLiIpOworICAgICAgICBjb2wuc2V0U3RyZW5ndGgoQ29sbGF0b3IuU0VDT05EQVJZKTsKKyAgICAgICAgZG9Bc3NlcnQoKGNvbC5nZXRTdHJlbmd0aCgpICE9IENvbGxhdG9yLlRFUlRJQVJZKSwgImNvbGxhdGlvbiBvYmplY3QncyBzdHJlbmd0aCBpcyBzZWNvbmRhcnkgZGlmZmVyZW5jZSIpOworICAgICAgICBkb0Fzc2VydCgoY29sLmdldFN0cmVuZ3RoKCkgIT0gQ29sbGF0b3IuUFJJTUFSWSksICJjb2xsYXRpb24gb2JqZWN0J3Mgc3RyZW5ndGggaXMgcHJpbWFyeSBkaWZmZXJlbmNlIik7CisgICAgICAgIGRvQXNzZXJ0KChjb2wuZ2V0U3RyZW5ndGgoKSA9PSBDb2xsYXRvci5TRUNPTkRBUlkpLCAiY29sbGF0aW9uIG9iamVjdCBoYXMgdGhlIHdyb25nIHN0cmVuZ3RoIik7CisgICAgCisgICAgICAgIGxvZ2xuKCJ0ZXN0aW5nIENvbGxhdG9yLnNldERlY29tcG9zaXRpb24oKSBtZXRob2QgLi4uIik7CisgICAgICAgIGNvbC5zZXREZWNvbXBvc2l0aW9uKENvbGxhdG9yLk5PX0RFQ09NUE9TSVRJT04pOworICAgICAgICBkb0Fzc2VydCgoY29sLmdldERlY29tcG9zaXRpb24oKSAhPSBDb2xsYXRvci5DQU5PTklDQUxfREVDT01QT1NJVElPTiksICJEZWNvbXBvc2l0aW9uIG1vZGUgIT0gQ29sbGF0b3IuQ0FOT05JQ0FMX0RFQ09NUE9TSVRJT04iKTsKKyAgICAgICAgZG9Bc3NlcnQoKGNvbC5nZXREZWNvbXBvc2l0aW9uKCkgPT0gQ29sbGF0b3IuTk9fREVDT01QT1NJVElPTiksICJEZWNvbXBvc2l0aW9uIG1vZGUgPSBDb2xsYXRvci5OT19ERUNPTVBPU0lUSU9OIik7CisgICAgICAgIAorICAgICAgICAKKyAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IgcmNvbCA9IChSdWxlQmFzZWRDb2xsYXRvcilDb2xsYXRvci5nZXRJbnN0YW5jZShuZXcgTG9jYWxlKCJkYSIsICJESyIpKTsKKyAgICAgICAgZG9Bc3NlcnQocmNvbC5nZXRSdWxlcygpLmxlbmd0aCgpICE9IDAsICJkYV9ESyBydWxlcyBkb2VzIG5vdCBoYXZlIGxlbmd0aCAwIik7CisgICAgICAgIAorICAgICAgICB0cnkgeworICAgICAgICAgICAgY29sID0gQ29sbGF0b3IuZ2V0SW5zdGFuY2UoTG9jYWxlLkZSRU5DSCk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiQ3JlYXRpbmcgRnJlbmNoIGNvbGxhdGlvbiBmYWlsZWQuIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgY29sLnNldFN0cmVuZ3RoKENvbGxhdG9yLlBSSU1BUlkpOworICAgICAgICBsb2dsbigidGVzdGluZyBDb2xsYXRvci5nZXRTdHJlbmd0aCgpIG1ldGhvZCBhZ2FpbiAuLi4iKTsKKyAgICAgICAgZG9Bc3NlcnQoKGNvbC5nZXRTdHJlbmd0aCgpICE9IENvbGxhdG9yLlRFUlRJQVJZKSwgImNvbGxhdGlvbiBvYmplY3QgaGFzIHRoZSB3cm9uZyBzdHJlbmd0aCIpOworICAgICAgICBkb0Fzc2VydCgoY29sLmdldFN0cmVuZ3RoKCkgPT0gQ29sbGF0b3IuUFJJTUFSWSksICJjb2xsYXRpb24gb2JqZWN0J3Mgc3RyZW5ndGggaXMgbm90IHByaW1hcnkgZGlmZmVyZW5jZSIpOworICAgICAgICAgICAgCisgICAgICAgIGxvZ2xuKCJ0ZXN0aW5nIEZyZW5jaCBDb2xsYXRvci5zZXRTdHJlbmd0aCgpIG1ldGhvZCAuLi4iKTsKKyAgICAgICAgY29sLnNldFN0cmVuZ3RoKENvbGxhdG9yLlRFUlRJQVJZKTsKKyAgICAgICAgZG9Bc3NlcnQoKGNvbC5nZXRTdHJlbmd0aCgpID09IENvbGxhdG9yLlRFUlRJQVJZKSwgImNvbGxhdGlvbiBvYmplY3QncyBzdHJlbmd0aCBpcyBub3QgdGVydGlhcnkgZGlmZmVyZW5jZSIpOworICAgICAgICBkb0Fzc2VydCgoY29sLmdldFN0cmVuZ3RoKCkgIT0gQ29sbGF0b3IuUFJJTUFSWSksICJjb2xsYXRpb24gb2JqZWN0J3Mgc3RyZW5ndGggaXMgcHJpbWFyeSBkaWZmZXJlbmNlIik7CisgICAgICAgIGRvQXNzZXJ0KChjb2wuZ2V0U3RyZW5ndGgoKSAhPSBDb2xsYXRvci5TRUNPTkRBUlkpLCAiY29sbGF0aW9uIG9iamVjdCdzIHN0cmVuZ3RoIGlzIHNlY29uZGFyeSBkaWZmZXJlbmNlIik7CisgICAgCisgICAgICAgIGxvZ2xuKCJDcmVhdGUganVuayBjb2xsYXRpb246ICIpOworICAgICAgICBMb2NhbGUgYWJjZCA9IG5ldyBMb2NhbGUoImFiIiwgIkNEIiwgIiIpOworICAgICAgICAKKyAgICAgICAgQ29sbGF0b3IganVuayA9IG51bGw7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBqdW5rID0gQ29sbGF0b3IuZ2V0SW5zdGFuY2UoYWJjZCk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiSnVuayBjb2xsYXRpb24gY3JlYXRpb24gZmFpbGVkLCBzaG91bGQgYXQgbGVhc3QgcmV0dXJuIGRlZmF1bHQuIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNvbCA9IENvbGxhdG9yLmdldEluc3RhbmNlKCk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiQ3JlYXRpbmcgZGVmYXVsdCBjb2xsYXRvciBmYWlsZWQuIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgU3RyaW5nIGNvbHJ1bGVzID0gKChSdWxlQmFzZWRDb2xsYXRvciljb2wpLmdldFJ1bGVzKCk7CisgICAgICAgIFN0cmluZyBqdW5rcnVsZXMgPSAoKFJ1bGVCYXNlZENvbGxhdG9yKWp1bmspLmdldFJ1bGVzKCk7CisgICAgICAgIGRvQXNzZXJ0KGNvbHJ1bGVzID09IGp1bmtydWxlcyB8fCBjb2xydWxlcy5lcXVhbHMoanVua3J1bGVzKSwgCisgICAgICAgICAgICAgICAgICAgIlRoZSBkZWZhdWx0IGNvbGxhdGlvbiBzaG91bGQgYmUgcmV0dXJuZWQuIik7CisgICAgICAgIENvbGxhdG9yIGZyQ29sID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZyQ29sID0gQ29sbGF0b3IuZ2V0SW5zdGFuY2UoTG9jYWxlLkZSQU5DRSk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiQ3JlYXRpbmcgRnJlbmNoIGNvbGxhdG9yIGZhaWxlZC4iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIAorICAgICAgICBkb0Fzc2VydCghKGZyQ29sLmVxdWFscyhqdW5rKSksICJUaGUganVuayBpcyB0aGUgc2FtZSBhcyB0aGUgRnJlbmNoIGNvbGxhdG9yLiIpOworICAgICAgICBsb2dsbigiQ29sbGF0b3IgcHJvcGVydHkgdGVzdCBlbmRlZC4iKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgKiBUaGlzIHRlc3RzIHRoZSBSdWxlQmFzZWRDb2xsYXRvcgorICAgICogLSBjb25zdHJ1Y3Rvci9kZXN0cnVjdG9yCisgICAgKiAtIGdldFJ1bGVzCisgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0UnVsZUJhc2VkQ29sbCgpIHsKKyAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IgY29sMSA9IG51bGwsIGNvbDIgPSBudWxsLCBjb2wzID0gbnVsbCwgY29sNCA9IG51bGw7CisgICAgCisgICAgICAgIFN0cmluZyBydWxlc2V0MSA9ICImOSA8IGEsIEEgPCBiLCBCIDwgYywgQzsgY2gsIGNILCBDaCwgQ0ggPCBkLCBELCBlLCBFIjsgCisgICAgICAgIFN0cmluZyBydWxlc2V0MiA9ICImOSA8IGEsIEEgPCBiLCBCIDwgYywgQyA8IGQsIEQsIGUsIEUiOworICAgICAgICBTdHJpbmcgcnVsZXNldDMgPSAiJiI7CisgICAgICAgIAorICAgICAgICB0cnkgeworICAgICAgICAgICAgY29sMSA9IG5ldyBSdWxlQmFzZWRDb2xsYXRvcihydWxlc2V0MSk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiUnVsZUJhc2VkIENvbGxhdG9yIGNyZWF0aW9uIGZhaWxlZC5cbiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjb2wyID0gbmV3IFJ1bGVCYXNlZENvbGxhdG9yKHJ1bGVzZXQyKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJSdWxlQmFzZWQgQ29sbGF0b3IgY3JlYXRpb24gZmFpbGVkLlxuIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIC8vIGVtcHR5IHJ1bGVzIGZhaWwKKyAgICAgICAgICAgIGNvbDMgPSBuZXcgUnVsZUJhc2VkQ29sbGF0b3IocnVsZXNldDMpOworICAgICAgICAgICAgZXJybG4oIkZhaWx1cmU6IEVtcHR5IHJ1bGVzIGZvciB0aGUgY29sbGF0b3Igc2hvdWxkIGZhaWwiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgTG9jYWxlIGxvY2FsZSA9IG5ldyBMb2NhbGUoImFhIiwgIkFBIik7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjb2wzID0gKFJ1bGVCYXNlZENvbGxhdG9yKUNvbGxhdG9yLmdldEluc3RhbmNlKGxvY2FsZSk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiRmFsbGJhY2sgQ29sbGF0b3IgY3JlYXRpb24gZmFpbGVkLjogJXNcbiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjb2wzID0gKFJ1bGVCYXNlZENvbGxhdG9yKUNvbGxhdG9yLmdldEluc3RhbmNlKCk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiRGVmYXVsdCBDb2xsYXRvciBjcmVhdGlvbiBmYWlsZWQuOiAlc1xuIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgU3RyaW5nIHJ1bGUxID0gY29sMS5nZXRSdWxlcygpOyAKKyAgICAgICAgU3RyaW5nIHJ1bGUyID0gY29sMi5nZXRSdWxlcygpOworICAgICAgICBTdHJpbmcgcnVsZTMgPSBjb2wzLmdldFJ1bGVzKCk7CisgICAgCisgICAgICAgIGRvQXNzZXJ0KCFydWxlMS5lcXVhbHMocnVsZTIpLCAiRGVmYXVsdCBjb2xsYXRvciBnZXRSdWxlcyBmYWlsZWQiKTsKKyAgICAgICAgZG9Bc3NlcnQoIXJ1bGUyLmVxdWFscyhydWxlMyksICJEZWZhdWx0IGNvbGxhdG9yIGdldFJ1bGVzIGZhaWxlZCIpOworICAgICAgICBkb0Fzc2VydCghcnVsZTEuZXF1YWxzKHJ1bGUzKSwgIkRlZmF1bHQgY29sbGF0b3IgZ2V0UnVsZXMgZmFpbGVkIik7CisgICAgICAgIAorICAgICAgICB0cnkgeworICAgICAgICAgICAgY29sNCA9IG5ldyBSdWxlQmFzZWRDb2xsYXRvcihydWxlMik7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiUnVsZUJhc2VkIENvbGxhdG9yIGNyZWF0aW9uIGZhaWxlZC5cbiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgCisgICAgICAgIFN0cmluZyBydWxlNCA9IGNvbDQuZ2V0UnVsZXMoKTsKKyAgICAgICAgZG9Bc3NlcnQocnVsZTIuZXF1YWxzKHJ1bGU0KSwgIkRlZmF1bHQgY29sbGF0b3IgZ2V0UnVsZXMgZmFpbGVkIik7CisgICAgICAgIC8vIHRlc3RzIHRoYXQgbW9kaWZpZXIgISBpcyBhbHdheXMgaWdub3JlZAorICAgICAgICBTdHJpbmcgZXhjbGFtYXRpb25ydWxlcyA9ICIhJmE8YiI7CisgICAgICAgIC8vIGphdmEgZG9lcyBub3QgYWxsb3cgISB0byBiZSB0aGUgc3RhcnQgb2YgdGhlIHJ1bGUKKyAgICAgICAgU3RyaW5nIHRoYWlzdHIgPSAiXHUwZTQwXHUwZTAxXHUwZTJkIjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yIGNvbDUgPSBuZXcgUnVsZUJhc2VkQ29sbGF0b3IoZXhjbGFtYXRpb25ydWxlcyk7CisgICAgICAgICAgICBSdWxlQmFzZWRDb2xsYXRvciBlbmNvbCA9IChSdWxlQmFzZWRDb2xsYXRvcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsYXRvci5nZXRJbnN0YW5jZShMb2NhbGUuRU5HTElTSCk7CisgICAgICAgICAgICBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IgY29sNWl0ZXIgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gY29sNS5nZXRDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IodGhhaXN0cik7CisgICAgICAgICAgICBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IgZW5jb2xpdGVyIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGVuY29sLmdldENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGFpc3RyKTsKKyAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgLy8gdGVzdGluZyB3aXRoIGVuIHNpbmNlIHRoYWkgaGFzIGl0cyBvd24gdGFpbG9yaW5nCisgICAgICAgICAgICAgICAgaW50IGNlID0gY29sNWl0ZXIubmV4dCgpOworICAgICAgICAgICAgICAgIGludCBjZTIgPSBlbmNvbGl0ZXIubmV4dCgpOworICAgICAgICAgICAgICAgIGlmIChjZTIgIT0gY2UpIHsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIiEgbW9kaWZpZXIgdGVzdCBmYWlsZWQiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGNlID09IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5OVUxMT1JERVIpIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIlJ1bGVCYXNlZCBDb2xsYXRvciBjcmVhdGlvbiBmYWlsZWQgZm9yICEgbW9kaWZpZXIuXG4iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAqIFRoaXMgdGVzdHMgdGhlIFJ1bGVCYXNlZENvbGxhdG9yCisgICAgKiAtIGdldFJ1bGVzCisgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0UnVsZXMoKSB7CisgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yIGNvbGw7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjb2xsID0gKFJ1bGVCYXNlZENvbGxhdG9yKUNvbGxhdG9yLmdldEluc3RhbmNlKExvY2FsZS5FTkdMSVNIKTsgCisgICAgICAgICAgICAvLyBsb2dsbigiUEFTUzogUnVsZUJhc2VkIENvbGxhdG9yIGNyZWF0aW9uIHBhc3NlZFxuIik7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiRW5nbGlzaCBDb2xsYXRvciBjcmVhdGlvbiBmYWlsZWQuXG4iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIAorICAgICAgICBTdHJpbmcgcnVsZXMgPSBjb2xsLmdldFJ1bGVzKCk7CisgICAgICAgIGlmIChydWxlcyAhPSBudWxsICYmIHJ1bGVzLmxlbmd0aCgpICE9IDApIHsKKyAgICAgICAgICAgIGVycmxuKCJFbmdsaXNoIHRhaWxvcmVkIHJ1bGVzIGZhaWxlZCIpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RTYWZlQ2xvbmUoKSB7CisgICAgICAgIFN0cmluZyB0ZXN0MSA9ICJhYkNkYSI7CisgICAgICAgIFN0cmluZyB0ZXN0MiA9ICJhYmNkYSI7CisgICAgICAgIAorICAgICAgICAvLyBvbmUgZGVmYXVsdCBjb2xsYXRvciAmIHR3byBjb21wbGV4IG9uZXMgCisgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yIHNvbWVDb2xsYXRvcnNbXSA9IHsKKyAgICAgICAgICAgIChSdWxlQmFzZWRDb2xsYXRvcilDb2xsYXRvci5nZXRJbnN0YW5jZShMb2NhbGUuRU5HTElTSCksCisgICAgICAgICAgICAoUnVsZUJhc2VkQ29sbGF0b3IpQ29sbGF0b3IuZ2V0SW5zdGFuY2UoTG9jYWxlLktPUkVBKSwKKyAgICAgICAgICAgIChSdWxlQmFzZWRDb2xsYXRvcilDb2xsYXRvci5nZXRJbnN0YW5jZShMb2NhbGUuSkFQQU4pCisgICAgICAgIH07CisgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yIHNvbWVDbG9uZWRDb2xsYXRvcnNbXSA9IG5ldyBSdWxlQmFzZWRDb2xsYXRvclszXTsKKyAgICAgICAgCisgICAgICAgIC8vIGNoYW5nZSBvcmlnICYgY2xvbmUgJiBtYWtlIHN1cmUgdGhleSBhcmUgaW5kZXBlbmRlbnQgCisgICAgCisgICAgICAgIGZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCBzb21lQ29sbGF0b3JzLmxlbmd0aDsgaW5kZXggKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgc29tZUNsb25lZENvbGxhdG9yc1tpbmRleF0gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoUnVsZUJhc2VkQ29sbGF0b3Ipc29tZUNvbGxhdG9yc1tpbmRleF0uY2xvbmUoKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKENsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRXJyb3IgY2xvbmluZyBjb2xsYXRvciIpOworICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgc29tZUNsb25lZENvbGxhdG9yc1tpbmRleF0uc2V0U3RyZW5ndGgoQ29sbGF0b3IuVEVSVElBUlkpOworICAgICAgICAgICAgc29tZUNvbGxhdG9yc1tpbmRleF0uc2V0U3RyZW5ndGgoQ29sbGF0b3IuUFJJTUFSWSk7CisgICAgICAgICAgICBzb21lQ2xvbmVkQ29sbGF0b3JzW2luZGV4XS5zZXRDYXNlTGV2ZWwoZmFsc2UpOworICAgICAgICAgICAgc29tZUNvbGxhdG9yc1tpbmRleF0uc2V0Q2FzZUxldmVsKGZhbHNlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZG9Bc3NlcnQoc29tZUNsb25lZENvbGxhdG9yc1tpbmRleF0uY29tcGFyZSh0ZXN0MSwgdGVzdDIpID4gMCwgCisgICAgICAgICAgICAgICAgICAgICAiUmVzdWx0IHNob3VsZCBiZSBcImFiQ2RhXCIgPj4+IFwiYWJjZGFcIiAiKTsKKyAgICAgICAgICAgIGRvQXNzZXJ0KHNvbWVDb2xsYXRvcnNbaW5kZXhdLmNvbXBhcmUodGVzdDEsIHRlc3QyKSA9PSAwLCAKKyAgICAgICAgICAgICAgICAgICAgICJSZXN1bHQgc2hvdWxkIGJlIFwiYWJDZGFcIiA9PSBcImFiY2RhXCIgIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0R2V0VGFpbG9yZWRTZXQoKSAKKyAgICB7CisgICAgICAgIGxvZ2xuKCJ0ZXN0aW5nIGdldFRhaWxvcmVkU2V0Li4uIik7CisgICAgICAgIFN0cmluZyBydWxlc1tdID0geworICAgICAgICAgICAgIiZhIDwgXHUyMTJiIiwgICAgICAgICAgICAgCisgICAgICAgICAgICAiJiBTIDwgXHUwMTYxIDw8PCBcdTAxNjAiLAorICAgICAgICB9OworICAgICAgICBTdHJpbmcgZGF0YVtdW10gPSB7CisgICAgICAgICAgICB7ICJcdTIxMmIiLCAiQVx1MDMwYSIsICJcdTAwYzUiIH0sICAgICAgICAKKyAgICAgICAgICAgIHsgIlx1MDE2MSIsICJzXHUwMzBDIiwgIlx1MDE2MCIsICJTXHUwMzBDIiB9ICAgICAgICAgICAgCisgICAgICAgIH07CisgICAgCisgICAgICAgIGludCBpID0gMCwgaiA9IDA7CisgICAgICAgIAorICAgICAgICBSdWxlQmFzZWRDb2xsYXRvciBjb2xsOworICAgICAgICBVbmljb2RlU2V0IHNldDsKKyAgICAgICAgCisgICAgICAgIGZvcihpID0gMDsgaSA8IHJ1bGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGxvZ2xuKCJJbnN0YW50aWF0aW5nIGEgY29sbGF0b3IgZnJvbSAiK3J1bGVzW2ldKTsKKyAgICAgICAgICAgICAgICBjb2xsID0gbmV3IFJ1bGVCYXNlZENvbGxhdG9yKHJ1bGVzW2ldKTsKKyAgICAgICAgICAgICAgICBzZXQgPSBjb2xsLmdldFRhaWxvcmVkU2V0KCk7CisgICAgICAgICAgICAgICAgbG9nbG4oIkdvdCBzZXQ6ICIrc2V0LnRvUGF0dGVybih0cnVlKSk7CisgICAgICAgICAgICAgICAgaWYoc2V0LnNpemUoKSAhPSBkYXRhW2ldLmxlbmd0aCkgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigiVGFpbG9yZWQgc2V0IHNpemUgZGlmZmVyZW50ICgiK3NldC5zaXplKCkrIikgdGhhbiBleHBlY3RlZCAoIitkYXRhW2ldLmxlbmd0aCsiKSIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmb3IoaiA9IDA7IGogPCBkYXRhW2ldLmxlbmd0aDsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgIGxvZ2xuKCJDaGVja2luZyB0byBzZWUgd2hldGhlciAiK2RhdGFbaV1bal0rIiBpcyBpbiBzZXQiKTsKKyAgICAgICAgICAgICAgICAgICAgaWYoIXNldC5jb250YWlucyhkYXRhW2ldW2pdKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZXJybG4oIlRhaWxvcmVkIHNldCBkb2Vzbid0IGNvbnRhaW4gIitkYXRhW2ldW2pdKyIuLi4gSXQgc2hvdWxkIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJDb3VsZG4ndCBvcGVuIGNvbGxhdG9yIHdpdGggcnVsZXMgIisgcnVsZXNbaV0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqIAorICAgICAqIFNpbXBsZSB0ZXN0IHRvIHNlZSBpZiBDb2xsYXRvciBpcyBzdWJjbGFzc2FibGUKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0U3ViQ2xhc3MoKSAKKyAgICB7CisgICAgICAgIGNsYXNzIFRlc3RDb2xsYXRvciBleHRlbmRzIENvbGxhdG9yCisgICAgICAgIHsKKyAgICAgICAgICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3QgdGhhdCkgeworICAgICAgICAgICAgICAgIHJldHVybiB0aGlzID09IHRoYXQ7CisgICAgICAgICAgICB9CisgICAgCisgICAgICAgICAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgeworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBwdWJsaWMgaW50IGNvbXBhcmUoU3RyaW5nIHNvdXJjZSwgU3RyaW5nIHRhcmdldCkgeworICAgICAgICAgICAgICAgIHJldHVybiBzb3VyY2UuY29tcGFyZVRvKHRhcmdldCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHB1YmxpYyBDb2xsYXRpb25LZXkgZ2V0Q29sbGF0aW9uS2V5KFN0cmluZyBzb3VyY2UpCisgICAgICAgICAgICB7ICAgYnl0ZSB0ZW1wMVtdID0gc291cmNlLmdldEJ5dGVzKCk7CisgICAgICAgICAgICAgICAgYnl0ZSB0ZW1wMltdID0gbmV3IGJ5dGVbdGVtcDEubGVuZ3RoICsgMV07CisgICAgICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weSh0ZW1wMSwgMCwgdGVtcDIsIDAsIHRlbXAxLmxlbmd0aCk7CisgICAgICAgICAgICAgICAgdGVtcDJbdGVtcDEubGVuZ3RoXSA9IDA7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDb2xsYXRpb25LZXkoc291cmNlLCB0ZW1wMik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAKKyAgICAgICAgQ29sbGF0b3IgY29sMSA9IG5ldyBUZXN0Q29sbGF0b3IoKTsKKyAgICAgICAgQ29sbGF0b3IgY29sMiA9IG5ldyBUZXN0Q29sbGF0b3IoKTsKKyAgICAgICAgaWYgKGNvbDEuZXF1YWxzKGNvbDIpKSB7CisgICAgICAgICAgICBlcnJsbigiMiBkaWZmZXJlbnQgaW5zdGFuY2Ugb2YgVGVzdENvbGxhdG9yIHNob3VsZCBmYWlsIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbDEuaGFzaENvZGUoKSAhPSBjb2wyLmhhc2hDb2RlKCkpIHsKKyAgICAgICAgICAgIGVycmxuKCJFdmVyeSBUZXN0Q29sbGF0b3IgaGFzIHRoZSBzYW1lIGhhc2hjb2RlIik7CisgICAgICAgIH0KKyAgICAgICAgU3RyaW5nIGFiYyA9ICJhYmMiOworICAgICAgICBTdHJpbmcgYmNkID0gImJjZCI7CisgICAgICAgIGlmIChjb2wxLmNvbXBhcmUoYWJjLCBiY2QpICE9IGFiYy5jb21wYXJlVG8oYmNkKSkgeworICAgICAgICAgICAgZXJybG4oIlRlc3RDb2xsYXRvciBjb21wYXJlIHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgZGVmYXVsdCAiICsKKyAgICAgICAgICAgICAgICAgICJzdHJpbmcgY29tcGFyaXNvbiIpOworICAgICAgICB9CisgICAgICAgIENvbGxhdGlvbktleSBrZXkgPSBjb2wxLmdldENvbGxhdGlvbktleShhYmMpOworICAgICAgICBieXRlIHRlbXAxW10gPSBhYmMuZ2V0Qnl0ZXMoKTsKKyAgICAgICAgYnl0ZSB0ZW1wMltdID0gbmV3IGJ5dGVbdGVtcDEubGVuZ3RoICsgMV07CisgICAgICAgIFN5c3RlbS5hcnJheWNvcHkodGVtcDEsIDAsIHRlbXAyLCAwLCB0ZW1wMS5sZW5ndGgpOworICAgICAgICB0ZW1wMlt0ZW1wMS5sZW5ndGhdID0gMDsKKyAgICAgICAgaWYgKCFqYXZhLnV0aWwuQXJyYXlzLmVxdWFscyhrZXkudG9CeXRlQXJyYXkoKSwgdGVtcDIpIAorICAgICAgICAgICAgfHwgIWtleS5nZXRTb3VyY2VTdHJpbmcoKS5lcXVhbHMoYWJjKSkgeworICAgICAgICAgICAgZXJybG4oIlRlc3RDb2xsYXRvciBjb2xsYXRpb25rZXkgQVBJIGlzIHJldHVybmluZyB3cm9uZyB2YWx1ZXMiKTsKKyAgICAgICAgfQorICAgICAgICBVbmljb2RlU2V0IHNldCA9IGNvbDEuZ2V0VGFpbG9yZWRTZXQoKTsKKyAgICAgICAgaWYgKCFzZXQuZXF1YWxzKG5ldyBVbmljb2RlU2V0KDAsIDB4MTBGRkZGKSkpIHsKKyAgICAgICAgICAgIGVycmxuKCJFcnJvciBnZXR0aW5nIGRlZmF1bHQgdGFpbG9yZWQgc2V0Iik7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgIC8qKiAKKyAgICAgKiBTaW1wbGUgdGVzdCB0aGUgY29sbGF0b3Igc2V0dGVyIGFuZCBnZXR0ZXJzCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdFNldEdldCgpIAorICAgIHsKKyAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IgY29sbGF0b3IgPSAoUnVsZUJhc2VkQ29sbGF0b3IpQ29sbGF0b3IuZ2V0SW5zdGFuY2UoKTsKKyAgICAgICAgaW50IGRlY29tcCA9IGNvbGxhdG9yLmdldERlY29tcG9zaXRpb24oKTsKKyAgICAgICAgaW50IHN0cmVuZ3RoID0gY29sbGF0b3IuZ2V0U3RyZW5ndGgoKTsKKyAgICAgICAgYm9vbGVhbiBhbHQgPSBjb2xsYXRvci5pc0FsdGVybmF0ZUhhbmRsaW5nU2hpZnRlZCgpOworICAgICAgICBib29sZWFuIGNhc2VsZXZlbCA9IGNvbGxhdG9yLmlzQ2FzZUxldmVsKCk7CisgICAgICAgIGJvb2xlYW4gZnJlbmNoID0gY29sbGF0b3IuaXNGcmVuY2hDb2xsYXRpb24oKTsKKyAgICAgICAgYm9vbGVhbiBocXVhcnQgPSBjb2xsYXRvci5pc0hpcmFnYW5hUXVhdGVybmFyeSgpOworICAgICAgICBib29sZWFuIGxvd2VyY2FzZSA9IGNvbGxhdG9yLmlzTG93ZXJDYXNlRmlyc3QoKTsKKyAgICAgICAgYm9vbGVhbiB1cHBlcmNhc2UgPSBjb2xsYXRvci5pc1VwcGVyQ2FzZUZpcnN0KCk7CisgICAgICAgIAorICAgICAgICBjb2xsYXRvci5zZXREZWNvbXBvc2l0aW9uKENvbGxhdG9yLkNBTk9OSUNBTF9ERUNPTVBPU0lUSU9OKTsKKyAgICAgICAgaWYgKGNvbGxhdG9yLmdldERlY29tcG9zaXRpb24oKSAhPSBDb2xsYXRvci5DQU5PTklDQUxfREVDT01QT1NJVElPTikgeworICAgICAgICAgICAgZXJybG4oIlNldHRpbmcgZGVjb21wb3NpdGlvbiBmYWlsZWQiKTsKKyAgICAgICAgfQorICAgICAgICBjb2xsYXRvci5zZXRTdHJlbmd0aChDb2xsYXRvci5RVUFURVJOQVJZKTsKKyAgICAgICAgaWYgKGNvbGxhdG9yLmdldFN0cmVuZ3RoKCkgIT0gQ29sbGF0b3IuUVVBVEVSTkFSWSkgeworICAgICAgICAgICAgZXJybG4oIlNldHRpbmcgc3RyZW5ndGggZmFpbGVkIik7CisgICAgICAgIH0KKyAgICAgICAgY29sbGF0b3Iuc2V0QWx0ZXJuYXRlSGFuZGxpbmdTaGlmdGVkKCFhbHQpOworICAgICAgICBpZiAoY29sbGF0b3IuaXNBbHRlcm5hdGVIYW5kbGluZ1NoaWZ0ZWQoKSA9PSBhbHQpIHsKKyAgICAgICAgICAgIGVycmxuKCJTZXR0aW5nIGFsdGVybmF0ZSBoYW5kbGluZyBmYWlsZWQiKTsKKyAgICAgICAgfQorICAgICAgICBjb2xsYXRvci5zZXRDYXNlTGV2ZWwoIWNhc2VsZXZlbCk7CisgICAgICAgIGlmIChjb2xsYXRvci5pc0Nhc2VMZXZlbCgpID09IGNhc2VsZXZlbCkgeworICAgICAgICAgICAgZXJybG4oIlNldHRpbmcgY2FzZSBsZXZlbCBmYWlsZWQiKTsKKyAgICAgICAgfQorICAgICAgICBjb2xsYXRvci5zZXRGcmVuY2hDb2xsYXRpb24oIWZyZW5jaCk7CisgICAgICAgIGlmIChjb2xsYXRvci5pc0ZyZW5jaENvbGxhdGlvbigpID09IGZyZW5jaCkgeworICAgICAgICAgICAgZXJybG4oIlNldHRpbmcgZnJlbmNoIGNvbGxhdGlvbiBmYWlsZWQiKTsKKyAgICAgICAgfQorICAgICAgICBjb2xsYXRvci5zZXRIaXJhZ2FuYVF1YXRlcm5hcnkoIWhxdWFydCk7CisgICAgICAgIGlmIChjb2xsYXRvci5pc0hpcmFnYW5hUXVhdGVybmFyeSgpID09IGhxdWFydCkgeworICAgICAgICAgICAgZXJybG4oIlNldHRpbmcgaGlyYWdhbmEgcXVhcnRlbmFyeSBmYWlsZWQiKTsKKyAgICAgICAgfQorICAgICAgICBjb2xsYXRvci5zZXRMb3dlckNhc2VGaXJzdCghbG93ZXJjYXNlKTsKKyAgICAgICAgaWYgKGNvbGxhdG9yLmlzTG93ZXJDYXNlRmlyc3QoKSA9PSBsb3dlcmNhc2UpIHsKKyAgICAgICAgICAgIGVycmxuKCJTZXR0aW5nIGxvd2VyIGNhc2UgZmlyc3QgZmFpbGVkIik7CisgICAgICAgIH0KKyAgICAgICAgY29sbGF0b3Iuc2V0VXBwZXJDYXNlRmlyc3QoIXVwcGVyY2FzZSk7CisgICAgICAgIGlmIChjb2xsYXRvci5pc1VwcGVyQ2FzZUZpcnN0KCkgPT0gdXBwZXJjYXNlKSB7CisgICAgICAgICAgICBlcnJsbigiU2V0dGluZyB1cHBlciBjYXNlIGZpcnN0IGZhaWxlZCIpOworICAgICAgICB9ICAgCisgICAgICAgIGNvbGxhdG9yLnNldERlY29tcG9zaXRpb25EZWZhdWx0KCk7CisgICAgICAgIGlmIChjb2xsYXRvci5nZXREZWNvbXBvc2l0aW9uKCkgIT0gZGVjb21wKSB7CisgICAgICAgICAgICBlcnJsbigiU2V0dGluZyBkZWNvbXBvc2l0aW9uIGRlZmF1bHQgZmFpbGVkIik7CisgICAgICAgIH0KKyAgICAgICAgY29sbGF0b3Iuc2V0U3RyZW5ndGhEZWZhdWx0KCk7CisgICAgICAgIGlmIChjb2xsYXRvci5nZXRTdHJlbmd0aCgpICE9IHN0cmVuZ3RoKSB7CisgICAgICAgICAgICBlcnJsbigiU2V0dGluZyBzdHJlbmd0aCBkZWZhdWx0IGZhaWxlZCIpOworICAgICAgICB9CisgICAgICAgIGNvbGxhdG9yLnNldEFsdGVybmF0ZUhhbmRsaW5nRGVmYXVsdCgpOworICAgICAgICBpZiAoY29sbGF0b3IuaXNBbHRlcm5hdGVIYW5kbGluZ1NoaWZ0ZWQoKSAhPSBhbHQpIHsKKyAgICAgICAgICAgIGVycmxuKCJTZXR0aW5nIGFsdGVybmF0ZSBoYW5kbGluZyBkZWZhdWx0IGZhaWxlZCIpOworICAgICAgICB9CisgICAgICAgIGNvbGxhdG9yLnNldENhc2VMZXZlbERlZmF1bHQoKTsKKyAgICAgICAgaWYgKGNvbGxhdG9yLmlzQ2FzZUxldmVsKCkgIT0gY2FzZWxldmVsKSB7CisgICAgICAgICAgICBlcnJsbigiU2V0dGluZyBjYXNlIGxldmVsIGRlZmF1bHQgZmFpbGVkIik7CisgICAgICAgIH0KKyAgICAgICAgY29sbGF0b3Iuc2V0RnJlbmNoQ29sbGF0aW9uRGVmYXVsdCgpOworICAgICAgICBpZiAoY29sbGF0b3IuaXNGcmVuY2hDb2xsYXRpb24oKSAhPSBmcmVuY2gpIHsKKyAgICAgICAgICAgIGVycmxuKCJTZXR0aW5nIGZyZW5jaCBoYW5kbGluZyBkZWZhdWx0IGZhaWxlZCIpOworICAgICAgICB9CisgICAgICAgIGNvbGxhdG9yLnNldEhpcmFnYW5hUXVhdGVybmFyeURlZmF1bHQoKTsKKyAgICAgICAgaWYgKGNvbGxhdG9yLmlzSGlyYWdhbmFRdWF0ZXJuYXJ5KCkgIT0gaHF1YXJ0KSB7CisgICAgICAgICAgICBlcnJsbigiU2V0dGluZyBIaXJhZ2FuYSBRdWFydGVuYXJ5IGRlZmF1bHQgZmFpbGVkIik7CisgICAgICAgIH0KKyAgICAgICAgY29sbGF0b3Iuc2V0Q2FzZUZpcnN0RGVmYXVsdCgpOworICAgICAgICBpZiAoY29sbGF0b3IuaXNMb3dlckNhc2VGaXJzdCgpICE9IGxvd2VyY2FzZSAKKyAgICAgICAgICAgIHx8IGNvbGxhdG9yLmlzVXBwZXJDYXNlRmlyc3QoKSAhPSB1cHBlcmNhc2UpIHsKKyAgICAgICAgICAgIGVycmxuKCJTZXR0aW5nIGNhc2UgZmlyc3QgaGFuZGxpbmcgZGVmYXVsdCBmYWlsZWQiKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9jb2xsYXRvci9Db2xsYXRpb25DdXJyZW5jeVRlc3QuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9jb2xsYXRvci9Db2xsYXRpb25DdXJyZW5jeVRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzY3ZWU3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NvbGxhdG9yL0NvbGxhdGlvbkN1cnJlbmN5VGVzdC5qYXZhCkBAIC0wLDAgKzEsMTkyIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgICAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICRTb3VyY2U6IAorICogJERhdGU6IAorICogJFJldmlzaW9uOiAKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCisvKiogCisgKiBQb3J0IEZyb206ICAgSUNVNEMgdjIuMSA6IENvbGxhdGUvQ29sbGF0aW9uQ3VycmVuY3lUZXN0CisgKiBTb3VyY2UgRmlsZTogJElDVTRDUm9vdC9zb3VyY2UvdGVzdC9pbnRsdGVzdC9jdXJyY29sbC5jcHAKKyAqKi8KKyAKK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3QuY29sbGF0b3I7CisgCitpbXBvcnQgY29tLmlibS5pY3UuZGV2LnRlc3QuKjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0Lio7CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKKyAKK3B1YmxpYyBjbGFzcyBDb2xsYXRpb25DdXJyZW5jeVRlc3QgZXh0ZW5kcyBUZXN0Rm13ayB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIG5ldyBDb2xsYXRpb25DdXJyZW5jeVRlc3QoKS5ydW4oYXJncyk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RDdXJyZW5jeSgpIHsKKyAgICAgICAgLy8gQWxsIHRoZSBjdXJyZW5jeSBzeW1ib2xzLCBpbiBjb2xsYXRpb24gb3JkZXIKKyAgICAgICAgY2hhcltdW10gY3VycmVuY3kgPSB7CisgICAgICAgICAgICB7IDB4MDBBNCB9LCAvKjAwQTQ7IEw7IFsxNCAzNiwgMDMsIDAzXSAgICAjIFswODJCLjAwMjAuMDAwMl0gIyBDVVJSRU5DWSBTSUdOKi8KKyAgICAgICAgICAgIHsgMHgwMEEyIH0sIC8qMDBBMjsgTDsgWzE0IDM4LCAwMywgMDNdICAgICMgWzA4MkMuMDAyMC4wMDAyXSAjIENFTlQgU0lHTiovCisgICAgICAgICAgICB7IDB4RkZFMCB9LCAvKkZGRTA7IEw7IFsxNCAzOCwgMDMsIDA1XSAgICAjIFswODJDLjAwMjAuMDAwM10gIyBGVUxMV0lEVEggQ0VOVCBTSUdOKi8KKyAgICAgICAgICAgIHsgMHgwMDI0IH0sIC8qMDAyNDsgTDsgWzE0IDNBLCAwMywgMDNdICAgICMgWzA4MkQuMDAyMC4wMDAyXSAjIERPTExBUiBTSUdOKi8KKyAgICAgICAgICAgIHsgMHhGRjA0IH0sIC8qRkYwNDsgTDsgWzE0IDNBLCAwMywgMDVdICAgICMgWzA4MkQuMDAyMC4wMDAzXSAjIEZVTExXSURUSCBET0xMQVIgU0lHTiovCisgICAgICAgICAgICB7IDB4RkU2OSB9LCAvKkZFNjk7IEw7IFsxNCAzQSwgMDMsIDFEXSAgICAjIFswODJELjAwMjAuMDAwRl0gIyBTTUFMTCBET0xMQVIgU0lHTiovCisgICAgICAgICAgICB7IDB4MDBBMyB9LCAvKjAwQTM7IEw7IFsxNCAzQywgMDMsIDAzXSAgICAjIFswODJFLjAwMjAuMDAwMl0gIyBQT1VORCBTSUdOKi8KKyAgICAgICAgICAgIHsgMHhGRkUxIH0sIC8qRkZFMTsgTDsgWzE0IDNDLCAwMywgMDVdICAgICMgWzA4MkUuMDAyMC4wMDAzXSAjIEZVTExXSURUSCBQT1VORCBTSUdOKi8KKyAgICAgICAgICAgIHsgMHgwMEE1IH0sIC8qMDBBNTsgTDsgWzE0IDNFLCAwMywgMDNdICAgICMgWzA4MkYuMDAyMC4wMDAyXSAjIFlFTiBTSUdOKi8KKyAgICAgICAgICAgIHsgMHhGRkU1IH0sIC8qRkZFNTsgTDsgWzE0IDNFLCAwMywgMDVdICAgICMgWzA4MkYuMDAyMC4wMDAzXSAjIEZVTExXSURUSCBZRU4gU0lHTiovCisgICAgICAgICAgICB7IDB4MDlGMiB9LCAvKjA5RjI7IEw7IFsxNCA0MCwgMDMsIDAzXSAgICAjIFswODMwLjAwMjAuMDAwMl0gIyBCRU5HQUxJIFJVUEVFIE1BUksqLworICAgICAgICAgICAgeyAweDA5RjMgfSwgLyowOUYzOyBMOyBbMTQgNDIsIDAzLCAwM10gICAgIyBbMDgzMS4wMDIwLjAwMDJdICMgQkVOR0FMSSBSVVBFRSBTSUdOKi8KKyAgICAgICAgICAgIHsgMHgwRTNGIH0sIC8qMEUzRjsgTDsgWzE0IDQ0LCAwMywgMDNdICAgICMgWzA4MzIuMDAyMC4wMDAyXSAjIFRIQUkgQ1VSUkVOQ1kgU1lNQk9MIEJBSFQqLworICAgICAgICAgICAgeyAweDE3REIgfSwgLyoxN0RCOyBMOyBbMTQgNDYsIDAzLCAwM10gICAgIyBbMDgzMy4wMDIwLjAwMDJdICMgS0hNRVIgQ1VSUkVOQ1kgU1lNQk9MIFJJRUwqLworICAgICAgICAgICAgeyAweDIwQTAgfSwgLyoyMEEwOyBMOyBbMTQgNDgsIDAzLCAwM10gICAgIyBbMDgzNC4wMDIwLjAwMDJdICMgRVVSTy1DVVJSRU5DWSBTSUdOKi8KKyAgICAgICAgICAgIHsgMHgyMEExIH0sIC8qMjBBMTsgTDsgWzE0IDRBLCAwMywgMDNdICAgICMgWzA4MzUuMDAyMC4wMDAyXSAjIENPTE9OIFNJR04qLworICAgICAgICAgICAgeyAweDIwQTIgfSwgLyoyMEEyOyBMOyBbMTQgNEMsIDAzLCAwM10gICAgIyBbMDgzNi4wMDIwLjAwMDJdICMgQ1JVWkVJUk8gU0lHTiovCisgICAgICAgICAgICB7IDB4MjBBMyB9LCAvKjIwQTM7IEw7IFsxNCA0RSwgMDMsIDAzXSAgICAjIFswODM3LjAwMjAuMDAwMl0gIyBGUkVOQ0ggRlJBTkMgU0lHTiovCisgICAgICAgICAgICB7IDB4MjBBNCB9LCAvKjIwQTQ7IEw7IFsxNCA1MCwgMDMsIDAzXSAgICAjIFswODM4LjAwMjAuMDAwMl0gIyBMSVJBIFNJR04qLworICAgICAgICAgICAgeyAweDIwQTUgfSwgLyoyMEE1OyBMOyBbMTQgNTIsIDAzLCAwM10gICAgIyBbMDgzOS4wMDIwLjAwMDJdICMgTUlMTCBTSUdOKi8KKyAgICAgICAgICAgIHsgMHgyMEE2IH0sIC8qMjBBNjsgTDsgWzE0IDU0LCAwMywgMDNdICAgICMgWzA4M0EuMDAyMC4wMDAyXSAjIE5BSVJBIFNJR04qLworICAgICAgICAgICAgeyAweDIwQTcgfSwgLyoyMEE3OyBMOyBbMTQgNTYsIDAzLCAwM10gICAgIyBbMDgzQi4wMDIwLjAwMDJdICMgUEVTRVRBIFNJR04qLworICAgICAgICAgICAgeyAweDIwQTkgfSwgLyoyMEE5OyBMOyBbMTQgNTgsIDAzLCAwM10gICAgIyBbMDgzQy4wMDIwLjAwMDJdICMgV09OIFNJR04qLworICAgICAgICAgICAgeyAweEZGRTYgfSwgLypGRkU2OyBMOyBbMTQgNTgsIDAzLCAwNV0gICAgIyBbMDgzQy4wMDIwLjAwMDNdICMgRlVMTFdJRFRIIFdPTiBTSUdOKi8KKyAgICAgICAgICAgIHsgMHgyMEFBIH0sIC8qMjBBQTsgTDsgWzE0IDVBLCAwMywgMDNdICAgICMgWzA4M0QuMDAyMC4wMDAyXSAjIE5FVyBTSEVRRUwgU0lHTiovCisgICAgICAgICAgICB7IDB4MjBBQiB9LCAvKjIwQUI7IEw7IFsxNCA1QywgMDMsIDAzXSAgICAjIFswODNFLjAwMjAuMDAwMl0gIyBET05HIFNJR04qLworICAgICAgICAgICAgeyAweDIwQUMgfSwgLyoyMEFDOyBMOyBbMTQgNUUsIDAzLCAwM10gICAgIyBbMDgzRi4wMDIwLjAwMDJdICMgRVVSTyBTSUdOKi8KKyAgICAgICAgICAgIHsgMHgyMEFEIH0sIC8qMjBBRDsgTDsgWzE0IDYwLCAwMywgMDNdICAgICMgWzA4NDAuMDAyMC4wMDAyXSAjIEtJUCBTSUdOKi8KKyAgICAgICAgICAgIHsgMHgyMEFFIH0sIC8qMjBBRTsgTDsgWzE0IDYyLCAwMywgMDNdICAgICMgWzA4NDEuMDAyMC4wMDAyXSAjIFRVR1JJSyBTSUdOKi8KKyAgICAgICAgICAgIHsgMHgyMEFGIH0gLyoyMEFGOyBMOyBbMTQgNjQsIDAzLCAwM10gICAgIyBbMDg0Mi4wMDIwLjAwMDJdICMgRFJBQ0hNQSBTSUdOKi8KKyAgICAgICAgfTsKKyAgICAKKyAgICAgICAgaW50IGksIGo7CisgICAgICAgIGludCBleHBlY3RlZFJlc3VsdCA9IDA7CisgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yIGMgPSAoUnVsZUJhc2VkQ29sbGF0b3IpQ29sbGF0b3IuZ2V0SW5zdGFuY2UoTG9jYWxlLkVOR0xJU0gpOworICAgICAgICAKKyAgICAgICAgLy8gQ29tcGFyZSBlYWNoIGN1cnJlbmN5IHN5bWJvbCBhZ2FpbnN0IGFsbCB0aGUKKyAgICAgICAgLy8gY3VycmVuY3kgc3ltYm9scywgaW5jbHVkaW5nIGl0c2VsZgorICAgICAgICBTdHJpbmcgc291cmNlOworICAgICAgICBTdHJpbmcgdGFyZ2V0OworICAgICAgICAKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGN1cnJlbmN5Lmxlbmd0aDsgaSArPSAxKSB7CisgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgY3VycmVuY3kubGVuZ3RoOyBqICs9IDEpIHsKKyAgICAgICAgICAgICAgICBzb3VyY2UgPSBuZXcgU3RyaW5nKGN1cnJlbmN5W2ldKTsKKyAgICAgICAgICAgICAgICB0YXJnZXQgPSBuZXcgU3RyaW5nKGN1cnJlbmN5W2pdKTsKKworICAgICAgICAgICAgICAgIGlmIChpIDwgaikgeworICAgICAgICAgICAgICAgICAgICBleHBlY3RlZFJlc3VsdCA9IC0xOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIGkgPT0gaikgeworICAgICAgICAgICAgICAgICAgICBleHBlY3RlZFJlc3VsdCA9IDA7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRSZXN1bHQgPSAxOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGludCBjb21wYXJlUmVzdWx0ID0gYy5jb21wYXJlKHNvdXJjZSwgdGFyZ2V0KTsKKyAgICAgICAgICAgICAgICBDb2xsYXRpb25LZXkgc291cmNlS2V5ID0gbnVsbDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHNvdXJjZUtleSA9IGMuZ2V0Q29sbGF0aW9uS2V5KHNvdXJjZSk7CisKKyAgICAgICAgICAgICAgICBpZiAoc291cmNlS2V5ID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIkNvdWxkbid0IGdldCBjb2xsYXRpb25LZXkgZm9yIHNvdXJjZSIpOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBDb2xsYXRpb25LZXkgdGFyZ2V0S2V5ID0gbnVsbDsKKyAgICAgICAgICAgICAgICB0YXJnZXRLZXkgPSBjLmdldENvbGxhdGlvbktleSh0YXJnZXQpOworICAgICAgICAgICAgICAgIGlmICh0YXJnZXRLZXkgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigiQ291bGRuJ3QgZ2V0IGNvbGxhdGlvbktleSBmb3Igc291cmNlIik7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGludCBrZXlSZXN1bHQgPSBzb3VyY2VLZXkuY29tcGFyZVRvKHRhcmdldEtleSk7CisKKyAgICAgICAgICAgICAgICByZXBvcnRDUmVzdWx0KCBzb3VyY2UsIHRhcmdldCwgc291cmNlS2V5LCB0YXJnZXRLZXksIGNvbXBhcmVSZXN1bHQsIGtleVJlc3VsdCwgY29tcGFyZVJlc3VsdCwgZXhwZWN0ZWRSZXN1bHQgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHZvaWQgcmVwb3J0Q1Jlc3VsdCggU3RyaW5nIHNvdXJjZSwgU3RyaW5nIHRhcmdldCwgQ29sbGF0aW9uS2V5IHNvdXJjZUtleSwgQ29sbGF0aW9uS2V5IHRhcmdldEtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvbXBhcmVSZXN1bHQsIGludCBrZXlSZXN1bHQsIGludCBpbmNSZXN1bHQsIGludCBleHBlY3RlZFJlc3VsdCApIHsKKyAgICAgICAgaWYgKGV4cGVjdGVkUmVzdWx0IDwgLTEgfHwgZXhwZWN0ZWRSZXN1bHQgPiAxKSB7CisgICAgICAgICAgICBlcnJsbigiKioqKiogaW52YWxpZCBjYWxsIHRvIHJlcG9ydENSZXN1bHQgKioqKiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYm9vbGVhbiBvazEgPSAoY29tcGFyZVJlc3VsdCA9PSBleHBlY3RlZFJlc3VsdCk7CisgICAgICAgIGJvb2xlYW4gb2syID0gKGtleVJlc3VsdCA9PSBleHBlY3RlZFJlc3VsdCk7CisgICAgICAgIGJvb2xlYW4gb2szID0gKGluY1Jlc3VsdCA9PSBleHBlY3RlZFJlc3VsdCk7CisKKyAgICAgICAgaWYgKG9rMSAmJiBvazIgJiYgb2szICYmICFpc1ZlcmJvc2UoKSkgeworICAgICAgICAgICAgcmV0dXJuOyAgICAKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFN0cmluZyBtc2cxID0gb2sxPyAiT2s6IGNvbXBhcmUoXCIiIDogIkZBSUw6IGNvbXBhcmUoXCIiOworICAgICAgICAgICAgU3RyaW5nIG1zZzIgPSAiXCIsIFwiIjsKKyAgICAgICAgICAgIFN0cmluZyBtc2czID0gIlwiKSByZXR1cm5lZCAiOworICAgICAgICAgICAgU3RyaW5nIG1zZzQgPSAiOyBleHBlY3RlZCAiOworICAgICAgICAgICAgCisgICAgICAgICAgICBTdHJpbmcgc0V4cGVjdCA9IG5ldyBTdHJpbmcoIiIpOworICAgICAgICAgICAgU3RyaW5nIHNSZXN1bHQgPSBuZXcgU3RyaW5nKCIiKTsKKyAgICAgICAgICAgIHNSZXN1bHQgPSBhcHBlbmRDb21wYXJlUmVzdWx0KGNvbXBhcmVSZXN1bHQsIHNSZXN1bHQpOworICAgICAgICAgICAgc0V4cGVjdCA9IGFwcGVuZENvbXBhcmVSZXN1bHQoZXhwZWN0ZWRSZXN1bHQsIHNFeHBlY3QpOworICAgICAgICAgICAgaWYgKG9rMSkgeworICAgICAgICAgICAgICAgIGxvZ2xuKG1zZzEgKyBzb3VyY2UgKyBtc2cyICsgdGFyZ2V0ICsgbXNnMyArIHNSZXN1bHQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBlcnJsbihtc2cxICsgc291cmNlICsgbXNnMiArIHRhcmdldCArIG1zZzMgKyBzUmVzdWx0ICsgbXNnNCArIHNFeHBlY3QpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBtc2cxID0gb2syID8gIk9rOiBrZXkoXCIiIDogIkZBSUw6IGtleShcIiI7CisgICAgICAgICAgICBtc2cyID0gIlwiKS5jb21wYXJlVG8oa2V5KFwiIjsKKyAgICAgICAgICAgIG1zZzMgPSAiXCIpKSByZXR1cm5lZCAiOworICAgICAgICAgICAgc1Jlc3VsdCA9IGFwcGVuZENvbXBhcmVSZXN1bHQoa2V5UmVzdWx0LCBzUmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChvazIpIHsKKyAgICAgICAgICAgICAgICBsb2dsbihtc2cxICsgc291cmNlICsgbXNnMiArIHRhcmdldCArIG1zZzMgKyBzUmVzdWx0KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZXJybG4obXNnMSArIHNvdXJjZSArIG1zZzIgKyB0YXJnZXQgKyBtc2czICsgc1Jlc3VsdCArIG1zZzQgKyBzRXhwZWN0KTsKKyAgICAgICAgICAgICAgICBtc2cxID0gIiAgIjsKKyAgICAgICAgICAgICAgICBtc2cyID0gIiB2cy4gIjsKKyAgICAgICAgICAgICAgICBlcnJsbihtc2cxICsgcHJldHRpZnkoc291cmNlS2V5KSArIG1zZzIgKyBwcmV0dGlmeSh0YXJnZXRLZXkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgbXNnMSA9IG9rMyA/ICJPazogaW5jQ29tcGFyZShcIiIgOiAiRkFJTDogaW5jQ29tcGFyZShcIiI7CisgICAgICAgICAgICBtc2cyID0gIlwiLCBcIiI7CisgICAgICAgICAgICBtc2czID0gIlwiKSByZXR1cm5lZCAiOworCisgICAgICAgICAgICBzUmVzdWx0ID0gYXBwZW5kQ29tcGFyZVJlc3VsdChpbmNSZXN1bHQsIHNSZXN1bHQpOworCisgICAgICAgICAgICBpZiAob2szKSB7CisgICAgICAgICAgICAgICAgbG9nbG4obXNnMSArIHNvdXJjZSArIG1zZzIgKyB0YXJnZXQgKyBtc2czICsgc1Jlc3VsdCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGVycmxuKG1zZzEgKyBzb3VyY2UgKyBtc2cyICsgdGFyZ2V0ICsgbXNnMyArIHNSZXN1bHQgKyBtc2c0ICsgc0V4cGVjdCk7CisgICAgICAgICAgICB9ICAgICAgICAgICAgICAgIAorICAgICAgICB9CisgICAgfQorICAgIAorICAgIHByaXZhdGUgU3RyaW5nIGFwcGVuZENvbXBhcmVSZXN1bHQoaW50IHJlc3VsdCwgU3RyaW5nIHRhcmdldCl7CisgICAgICAgIGlmIChyZXN1bHQgPT0gLTEpIHsKKyAgICAgICAgICAgIHRhcmdldCArPSAiTEVTUyI7CisgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IDApIHsKKyAgICAgICAgICAgIHRhcmdldCArPSAiRVFVQUwiOworICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSAxKSB7CisgICAgICAgICAgICB0YXJnZXQgKz0gIkdSRUFURVIiOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgU3RyaW5nIGh1aCA9ICI/IjsKKyAgICAgICAgICAgIHRhcmdldCArPSBodWggKyByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRhcmdldDsKKyAgICB9CisgICAgCisgICAgU3RyaW5nIHByZXR0aWZ5KENvbGxhdGlvbktleSBzb3VyY2VLZXkpIHsKKyAgICAgICAgaW50IGk7CisgICAgICAgIGJ5dGVbXSBieXRlcz0gc291cmNlS2V5LnRvQnl0ZUFycmF5KCk7CisgICAgICAgIFN0cmluZyB0YXJnZXQgPSAiWyI7CisgICAgCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgdGFyZ2V0ICs9IEludGVnZXIudG9IZXhTdHJpbmcoYnl0ZXNbaV0pOworICAgICAgICAgICAgdGFyZ2V0ICs9ICIgIjsKKyAgICAgICAgfQorICAgICAgICB0YXJnZXQgKz0gIl0iOworICAgICAgICByZXR1cm4gdGFyZ2V0OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY29sbGF0b3IvQ29sbGF0aW9uRGFuaXNoVGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NvbGxhdG9yL0NvbGxhdGlvbkRhbmlzaFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDlmNDY3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NvbGxhdG9yL0NvbGxhdGlvbkRhbmlzaFRlc3QuamF2YQpAQCAtMCwwICsxLDMxNCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICAgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAkU291cmNlOiAKKyAqICREYXRlOiAKKyAqICRSZXZpc2lvbjogCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworLyoqIAorICogUG9ydCBGcm9tOiAgIElDVTRDIHYyLjEgOiBDb2xsYXRlL0NvbGxhdGlvbkRhbmlzaFRlc3QKKyAqIFNvdXJjZSBGaWxlOiAkSUNVNENSb290L3NvdXJjZS90ZXN0L2ludGx0ZXN0L2RhY29sbC5jcHAKKyAqKi8KKworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudGVzdC5jb2xsYXRvcjsKKyAKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYudGVzdC4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuKjsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworIAorcHVibGljIGNsYXNzIENvbGxhdGlvbkRhbmlzaFRlc3QgZXh0ZW5kcyBUZXN0Rm13a3sKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgbmV3IENvbGxhdGlvbkRhbmlzaFRlc3QoKS5ydW4oYXJncyk7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgc3RhdGljIGNoYXJbXVtdIHRlc3RTb3VyY2VDYXNlcyA9IHsKKyAgICAgICAgezB4MDA0QyAvKiAnTCcgKi8sIDB4MDA3NSAvKiAndScgKi8sIDB4MDA2MyAvKiAnYycgKi99LAorICAgICAgICB7MHgwMDZDIC8qICdsJyAqLywgMHgwMDc1IC8qICd1JyAqLywgMHgwMDYzIC8qICdjJyAqLywgMHgwMDZCIC8qICdrJyAqL30sCisgICAgICAgIHsweDAwNEMgLyogJ0wnICovLCAweDAwRkMsIDB4MDA2MiAvKiAnYicgKi8sIDB4MDA2NSAvKiAnZScgKi8sIDB4MDA2MyAvKiAnYycgKi8sIDB4MDA2QiAvKiAnaycgKi99LAorICAgICAgICB7MHgwMDRDIC8qICdMJyAqLywgMHgwMEU0LCAweDAwNzYgLyogJ3YnICovLCAweDAwNjkgLyogJ2knICovfSwKKyAgICAgICAgezB4MDA0QyAvKiAnTCcgKi8sIDB4MDBGNiwgMHgwMDc3IC8qICd3JyAqLywgMHgwMDc3IC8qICd3JyAqL30sCisgICAgICAgIHsweDAwNEMgLyogJ0wnICovLCAweDAwNzYgLyogJ3YnICovLCAweDAwNjkgLyogJ2knICovfSwKKyAgICAgICAgezB4MDA0QyAvKiAnTCcgKi8sIDB4MDBFNCwgMHgwMDc2IC8qICd2JyAqLywgMHgwMDY5IC8qICdpJyAqL30sCisgICAgICAgIHsweDAwNEMgLyogJ0wnICovLCAweDAwRkMsIDB4MDA2MiAvKiAnYicgKi8sIDB4MDA2NSAvKiAnZScgKi8sIDB4MDA2MyAvKiAnYycgKi8sIDB4MDA2QiAvKiAnaycgKi99CisgICAgfTsKKworICAgIHByaXZhdGUgc3RhdGljIGNoYXJbXVtdIHRlc3RUYXJnZXRDYXNlcyA9IHsKKyAgICAgICAgezB4MDA2QyAvKiAnbCcgKi8sIDB4MDA3NSAvKiAndScgKi8sIDB4MDA2MyAvKiAnYycgKi8sIDB4MDA2QiAvKiAnaycgKi99LAorICAgICAgICB7MHgwMDRDIC8qICdMJyAqLywgMHgwMEZDLCAweDAwNjIgLyogJ2InICovLCAweDAwNjUgLyogJ2UnICovLCAweDAwNjMgLyogJ2MnICovLCAweDAwNkIgLyogJ2snICovfSwKKyAgICAgICAgezB4MDA2QyAvKiAnbCcgKi8sIDB4MDA3OSAvKiAneScgKi8sIDB4MDA2MiAvKiAnYicgKi8sIDB4MDA2NSAvKiAnZScgKi8sIDB4MDA2MyAvKiAnYycgKi8sIDB4MDA2QiAvKiAnaycgKi99LAorICAgICAgICB7MHgwMDRDIC8qICdMJyAqLywgMHgwMEY2LCAweDAwNzcgLyogJ3cnICovLCAweDAwNjUgLyogJ2UnICovfSwKKyAgICAgICAgezB4MDA2RCAvKiAnbScgKi8sIDB4MDA2MSAvKiAnYScgKi8sIDB4MDA3MyAvKiAncycgKi8sIDB4MDA3NCAvKiAndCcgKi99LAorICAgICAgICB7MHgwMDRDIC8qICdMJyAqLywgMHgwMDc3IC8qICd3JyAqLywgMHgwMDY5IC8qICdpJyAqL30sCisgICAgICAgIHsweDAwNEMgLyogJ0wnICovLCAweDAwRjYsIDB4MDA3NyAvKiAndycgKi8sIDB4MDA2OSAvKiAnaScgKi99LAorICAgICAgICB7MHgwMDRDIC8qICdMJyAqLywgMHgwMDc5IC8qICd5JyAqLywgMHgwMDYyIC8qICdiJyAqLywgMHgwMDY1IC8qICdlJyAqLywgMHgwMDYzIC8qICdjJyAqLywgMHgwMDZCIC8qICdrJyAqL30KKyAgICB9OworCisgICAgcHJpdmF0ZSBzdGF0aWMgaW50W10gcmVzdWx0cyA9IHsKKyAgICAgICAgLTEsCisgICAgICAgIC0xLAorICAgICAgICAxLAorICAgICAgICAtMSwKKyAgICAgICAgLTEsCisgICAgICAgIC8qIHRlc3QgcHJpbWFyeSA+IDUqLworICAgICAgICAwLAorICAgICAgICAtMSwKKyAgICAgICAgMAorICAgIH07CisKKyAgICBwcml2YXRlIHN0YXRpYyBjaGFyW11bXSB0ZXN0QnVncyA9IHsKKyAgICAgICAgezB4MDA0MSAvKiAnQScgKi8sIDB4MDAyRiAvKiAnLycgKi8sIDB4MDA1MyAvKiAnUycgKi99LAorICAgICAgICB7MHgwMDQxIC8qICdBJyAqLywgMHgwMDRFIC8qICdOJyAqLywgMHgwMDQ0IC8qICdEJyAqLywgMHgwMDUyIC8qICdSJyAqLywgMHgwMDQ1IC8qICdFJyAqL30sCisgICAgICAgIHsweDAwNDEgLyogJ0EnICovLCAweDAwNEUgLyogJ04nICovLCAweDAwNDQgLyogJ0QnICovLCAweDAwNTIgLyogJ1InICovLCAweDAwQzl9LAorICAgICAgICB7MHgwMDQxIC8qICdBJyAqLywgMHgwMDRFIC8qICdOJyAqLywgMHgwMDQ0IC8qICdEJyAqLywgMHgwMDUyIC8qICdSJyAqLywgMHgwMDQ1IC8qICdFJyAqLywgMHgwMDQxIC8qICdBJyAqLywgMHgwMDUzIC8qICdTJyAqL30sCisgICAgICAgIHsweDAwNDEgLyogJ0EnICovLCAweDAwNTMgLyogJ1MnICovfSwKKyAgICAgICAgezB4MDA0MyAvKiAnQycgKi8sIDB4MDA0MSAvKiAnQScgKi99LAorICAgICAgICB7MHgwMEM3LCAweDAwNDEgLyogJ0EnICovfSwKKyAgICAgICAgezB4MDA0MyAvKiAnQycgKi8sIDB4MDA0MiAvKiAnQicgKi99LAorICAgICAgICB7MHgwMEM3LCAweDAwNDMgLyogJ0MnICovLDB4MDAwMCAvKiAnXDAnICovfSwKKyAgICAgICAgezB4MDA0NCAvKiAnRCcgKi8sIDB4MDAyRSAvKiAnLicgKi8sIDB4MDA1MyAvKiAnUycgKi8sIDB4MDAyRSAvKiAnLicgKi8sIDB4MDA0MiAvKiAnQicgKi8sIDB4MDAyRSAvKiAnLicgKi99LAorICAgICAgICB7MHgwMDQ0IC8qICdEJyAqLywgMHgwMDQxIC8qICdBJyAqL30sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIHsweDAwNDQgLyogJ0QnICovLCAweDAwNDIgLyogJ0InICovfSwKKyAgICAgICAgezB4MDA0NCAvKiAnRCcgKi8sIDB4MDA1MyAvKiAnUycgKi8sIDB4MDA0MiAvKiAnQicgKi99LAorICAgICAgICB7MHgwMDQ0IC8qICdEJyAqLywgMHgwMDUzIC8qICdTJyAqLywgMHgwMDQzIC8qICdDJyAqL30sCisgICAgICAgIHsweDAwRDAsIC8qMHgwMTEwLCovIDB4MDA0MSAvKiAnQScgKi99LAorICAgICAgICB7MHgwMEQwLCAvKjB4MDExMCwqLyAweDAwNDMgLyogJ0MnICovfSwKKyAgICAgICAgezB4MDA0NSAvKiAnRScgKi8sIDB4MDA0QiAvKiAnSycgKi8sIDB4MDA1MyAvKiAnUycgKi8sIDB4MDA1NCAvKiAnVCcgKi8sIDB4MDA1MiAvKiAnUicgKi8sIDB4MDA0MSAvKiAnQScgKi8sIDB4MDA1RiAvKiAnXycgKi8sIDB4MDA0MSAvKiAnQScgKi8sIDB4MDA1MiAvKiAnUicgKi8sIDB4MDA0MiAvKiAnQicgKi8sIDB4MDA0NSAvKiAnRScgKi8sIDB4MDA0QSAvKiAnSicgKi8sIDB4MDA0NCAvKiAnRCcgKi8sIDB4MDA0NSAvKiAnRScgKi99LAorICAgICAgICB7MHgwMDQ1IC8qICdFJyAqLywgMHgwMDRCIC8qICdLJyAqLywgMHgwMDUzIC8qICdTJyAqLywgMHgwMDU0IC8qICdUJyAqLywgMHgwMDUyIC8qICdSJyAqLywgMHgwMDQxIC8qICdBJyAqLywgMHgwMDQyIC8qICdCJyAqLywgMHgwMDU1IC8qICdVJyAqLywgMHgwMDQ0IC8qICdEJyAqLywgMH0sCisgICAgICAgIHsweDAwNDggLyogJ0gnICovLCAweDAwRDgsIDB4MDA1MyAvKiAnUycgKi8sIDB4MDA1NCAvKiAnVCcgKi99LCAgCisgICAgICAgIHsweDAwNDggLyogJ0gnICovLCAweDAwNDEgLyogJ0EnICovLCAweDAwNDEgLyogJ0EnICovLCAweDAwNDcgLyogJ0cnICovfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICB7MHgwMDQ4IC8qICdIJyAqLywgMHgwMEM1LCAweDAwNEUgLyogJ04nICovLCAweDAwNDQgLyogJ0QnICovLCAweDAwNDIgLyogJ0InICovLCAweDAwNEYgLyogJ08nICovLCAweDAwNDcgLyogJ0cnICovfSwKKyAgICAgICAgezB4MDA0OCAvKiAnSCcgKi8sIDB4MDA0MSAvKiAnQScgKi8sIDB4MDA0MSAvKiAnQScgKi8sIDB4MDA0RSAvKiAnTicgKi8sIDB4MDA0NCAvKiAnRCcgKi8sIDB4MDA1NiAvKiAnVicgKi8sIDB4MDBDNiwgMHgwMDUyIC8qICdSJyAqLywgMHgwMDRCIC8qICdLJyAqLywgMHgwMDUzIC8qICdTJyAqLywgMHgwMDQyIC8qICdCJyAqLywgMHgwMDQxIC8qICdBJyAqLywgMHgwMDRFIC8qICdOJyAqLywgMHgwMDRCIC8qICdLJyAqLywgMHgwMDQ1IC8qICdFJyAqLywgMHgwMDRFIC8qICdOJyAqL30sCisgICAgICAgIHsweDAwNkIgLyogJ2snICovLCAweDAwNjEgLyogJ2EnICovLCAweDAwNzIgLyogJ3InICovLCAweDAwNkMgLyogJ2wnICovfSwKKyAgICAgICAgezB4MDA0QiAvKiAnSycgKi8sIDB4MDA2MSAvKiAnYScgKi8sIDB4MDA3MiAvKiAncicgKi8sIDB4MDA2QyAvKiAnbCcgKi99LAorICAgICAgICB7MHgwMDRFIC8qICdOJyAqLywgMHgwMDQ5IC8qICdJJyAqLywgMHgwMDQ1IC8qICdFJyAqLywgMHgwMDRDIC8qICdMJyAqLywgMHgwMDUzIC8qICdTJyAqLywgMHgwMDIwIC8qICcgJyAqLywgMHgwMDRBIC8qICdKJyAqLywgMHgwMEQ4LCAweDAwNTIgLyogJ1InICovLCAweDAwNDcgLyogJ0cnICovLCAweDAwNDUgLyogJ0UnICovLCAweDAwNEUgLyogJ04nICovfSwKKyAgICAgICAgezB4MDA0RSAvKiAnTicgKi8sIDB4MDA0OSAvKiAnSScgKi8sIDB4MDA0NSAvKiAnRScgKi8sIDB4MDA0QyAvKiAnTCcgKi8sIDB4MDA1MyAvKiAnUycgKi8sIDB4MDAyRCAvKiAnLScgKi8sIDB4MDA0QSAvKiAnSicgKi8sIDB4MDBEOCwgMHgwMDUyIC8qICdSJyAqLywgMHgwMDQ3IC8qICdHJyAqLywgMHgwMDQ1IC8qICdFJyAqLywgMHgwMDRFIC8qICdOJyAqL30sCisgICAgICAgIHsweDAwNEUgLyogJ04nICovLCAweDAwNDkgLyogJ0knICovLCAweDAwNDUgLyogJ0UnICovLCAweDAwNEMgLyogJ0wnICovLCAweDAwNTMgLyogJ1MnICovLCAweDAwNDUgLyogJ0UnICovLCAweDAwNEUgLyogJ04nICovfSwKKyAgICAgICAgezB4MDA1MiAvKiAnUicgKi8sIDB4MDBDOSwgMHgwMDQ1IC8qICdFJyAqLywgMHgwMDJDIC8qICcsJyAqLywgMHgwMDIwIC8qICcgJyAqLywgMHgwMDQxIC8qICdBJyAqL30sCisgICAgICAgIHsweDAwNTIgLyogJ1InICovLCAweDAwNDUgLyogJ0UnICovLCAweDAwNDUgLyogJ0UnICovLCAweDAwMkMgLyogJywnICovLCAweDAwMjAgLyogJyAnICovLCAweDAwNDIgLyogJ0InICovfSwKKyAgICAgICAgezB4MDA1MiAvKiAnUicgKi8sIDB4MDBDOSwgMHgwMDQ1IC8qICdFJyAqLywgMHgwMDJDIC8qICcsJyAqLywgMHgwMDIwIC8qICcgJyAqLywgMHgwMDRDIC8qICdMJyAqL30sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICB7MHgwMDUyIC8qICdSJyAqLywgMHgwMDQ1IC8qICdFJyAqLywgMHgwMDQ1IC8qICdFJyAqLywgMHgwMDJDIC8qICcsJyAqLywgMHgwMDIwIC8qICcgJyAqLywgMHgwMDU2IC8qICdWJyAqL30sCisgICAgICAgIHsweDAwNTMgLyogJ1MnICovLCAweDAwNDMgLyogJ0MnICovLCAweDAwNDggLyogJ0gnICovLCAweDAwNTkgLyogJ1knICovLCAweDAwNTQgLyogJ1QnICovLCAweDAwNTQgLyogJ1QnICovLCAweDAwMkMgLyogJywnICovLCAweDAwMjAgLyogJyAnICovLCAweDAwNDIgLyogJ0InICovfSwKKyAgICAgICAgezB4MDA1MyAvKiAnUycgKi8sIDB4MDA0MyAvKiAnQycgKi8sIDB4MDA0OCAvKiAnSCcgKi8sIDB4MDA1OSAvKiAnWScgKi8sIDB4MDA1NCAvKiAnVCcgKi8sIDB4MDA1NCAvKiAnVCcgKi8sIDB4MDAyQyAvKiAnLCcgKi8sIDB4MDAyMCAvKiAnICcgKi8sIDB4MDA0OCAvKiAnSCcgKi99LAorICAgICAgICB7MHgwMDUzIC8qICdTJyAqLywgMHgwMDQzIC8qICdDJyAqLywgMHgwMDQ4IC8qICdIJyAqLywgMHgwMERDLCAweDAwNTQgLyogJ1QnICovLCAweDAwNTQgLyogJ1QnICovLCAweDAwMkMgLyogJywnICovLCAweDAwMjAgLyogJyAnICovLCAweDAwNDggLyogJ0gnICovfSwKKyAgICAgICAgezB4MDA1MyAvKiAnUycgKi8sIDB4MDA0MyAvKiAnQycgKi8sIDB4MDA0OCAvKiAnSCcgKi8sIDB4MDA1OSAvKiAnWScgKi8sIDB4MDA1NCAvKiAnVCcgKi8sIDB4MDA1NCAvKiAnVCcgKi8sIDB4MDAyQyAvKiAnLCcgKi8sIDB4MDAyMCAvKiAnICcgKi8sIDB4MDA0QyAvKiAnTCcgKi99LAorICAgICAgICB7MHgwMDUzIC8qICdTJyAqLywgMHgwMDQzIC8qICdDJyAqLywgMHgwMDQ4IC8qICdIJyAqLywgMHgwMERDLCAweDAwNTQgLyogJ1QnICovLCAweDAwNTQgLyogJ1QnICovLCAweDAwMkMgLyogJywnICovLCAweDAwMjAgLyogJyAnICovLCAweDAwNEQgLyogJ00nICovfSwKKyAgICAgICAgezB4MDA1MyAvKiAnUycgKi8sIDB4MDA1MyAvKiAnUycgKi99LAorICAgICAgICB7MHgwMERGfSwKKyAgICAgICAgezB4MDA1MyAvKiAnUycgKi8sIDB4MDA1MyAvKiAnUycgKi8sIDB4MDA0MSAvKiAnQScgKi99LAorICAgICAgICB7MHgwMDUzIC8qICdTJyAqLywgMHgwMDU0IC8qICdUJyAqLywgMHgwMDRGIC8qICdPJyAqLywgMHgwMDUyIC8qICdSJyAqLywgMHgwMDQ1IC8qICdFJyAqLywgMHgwMDIwIC8qICcgJyAqLywgMHgwMDU2IC8qICdWJyAqLywgMHgwMDQ5IC8qICdJJyAqLywgMHgwMDRDIC8qICdMJyAqLywgMHgwMDQ0IC8qICdEJyAqLywgMHgwMDREIC8qICdNJyAqLywgMHgwMDRGIC8qICdPJyAqLywgMHgwMDUzIC8qICdTJyAqLywgMHgwMDQ1IC8qICdFJyAqL30sICAgICAgICAgICAgICAgCisgICAgICAgIHsweDAwNTMgLyogJ1MnICovLCAweDAwNTQgLyogJ1QnICovLCAweDAwNEYgLyogJ08nICovLCAweDAwNTIgLyogJ1InICovLCAweDAwNDUgLyogJ0UnICovLCAweDAwNEIgLyogJ0snICovLCAweDAwQzYsIDB4MDA1MiAvKiAnUicgKi8sIDB9LAorICAgICAgICB7MHgwMDUzIC8qICdTJyAqLywgMHgwMDU0IC8qICdUJyAqLywgMHgwMDRGIC8qICdPJyAqLywgMHgwMDUyIC8qICdSJyAqLywgMHgwMDREIC8qICdNJyAqLywgMHgwMDIwIC8qICcgJyAqLywgMHgwMDUwIC8qICdQJyAqLywgMHgwMDQ1IC8qICdFJyAqLywgMHgwMDU0IC8qICdUJyAqLywgMHgwMDQ1IC8qICdFJyAqLywgMHgwMDUyIC8qICdSJyAqLywgMHgwMDUzIC8qICdTJyAqLywgMHgwMDQ1IC8qICdFJyAqLywgMHgwMDRFIC8qICdOJyAqL30sCisgICAgICAgIHsweDAwNTMgLyogJ1MnICovLCAweDAwNTQgLyogJ1QnICovLCAweDAwNEYgLyogJ08nICovLCAweDAwNTIgLyogJ1InICovLCAweDAwNEQgLyogJ00nICovLCAweDAwNEMgLyogJ0wnICovLCAweDAwNTkgLyogJ1knICovfSwKKyAgICAgICAgezB4MDA1NCAvKiAnVCcgKi8sIDB4MDA0OCAvKiAnSCcgKi8sIDB4MDA0RiAvKiAnTycgKi8sIDB4MDA1MiAvKiAnUicgKi8sIDB4MDA1NiAvKiAnVicgKi8sIDB4MDA0MSAvKiAnQScgKi8sIDB4MDA0QyAvKiAnTCcgKi8sIDB4MDA0NCAvKiAnRCcgKi99LAorICAgICAgICB7MHgwMDU0IC8qICdUJyAqLywgMHgwMDQ4IC8qICdIJyAqLywgMHgwMDRGIC8qICdPJyAqLywgMHgwMDUyIC8qICdSJyAqLywgMHgwMDU2IC8qICdWJyAqLywgMHgwMDQxIC8qICdBJyAqLywgMHgwMDUyIC8qICdSJyAqLywgMHgwMDQ0IC8qICdEJyAqLywgMHgwMDU1IC8qICdVJyAqLywgMHgwMDUyIC8qICdSJyAqL30sCisgICAgICAgIHsweDAwNTQgLyogJ1QnICovLCAweDAwNDggLyogJ0gnICovLCAweDAwNTkgLyogJ1knICovLCAweDAwNDcgLyogJ0cnICovLCAweDAwNDUgLyogJ0UnICovLCAweDAwNTMgLyogJ1MnICovLCAweDAwNDUgLyogJ0UnICovLCAweDAwNEUgLyogJ04nICovfSwKKyAgICAgICAgezB4MDBGRSwgMHgwMDRGIC8qICdPJyAqLywgMHgwMDUyIC8qICdSJyAqLywgMHgwMDU2IC8qICdWJyAqLywgMHgwMDQxIC8qICdBJyAqLywgMHgwMDUyIC8qICdSJyAqLywgMHgwMEQwLCAvKjB4MDExMCwqLyAweDAwNTUgLyogJ1UnICovLCAweDAwNTIgLyogJ1InICovfSwKKyAgICAgICAgezB4MDA1NiAvKiAnVicgKi8sIDB4MDA0NSAvKiAnRScgKi8sIDB4MDA1MyAvKiAnUycgKi8sIDB4MDA1NCAvKiAnVCcgKi8sIDB4MDA0NSAvKiAnRScgKi8sIDB4MDA1MiAvKiAnUicgKi8sIDB4MDA0NyAvKiAnRycgKi8sIDB4MDBDNSwgMHgwMDUyIC8qICdSJyAqLywgMHgwMDQ0IC8qICdEJyAqLywgMHgwMDJDIC8qICcsJyAqLywgMHgwMDIwIC8qICcgJyAqLywgMHgwMDQxIC8qICdBJyAqL30sCisgICAgICAgIHsweDAwNTYgLyogJ1YnICovLCAweDAwNDUgLyogJ0UnICovLCAweDAwNTMgLyogJ1MnICovLCAweDAwNTQgLyogJ1QnICovLCAweDAwNDUgLyogJ0UnICovLCAweDAwNTIgLyogJ1InICovLCAweDAwNDcgLyogJ0cnICovLCAweDAwNDEgLyogJ0EnICovLCAweDAwNDEgLyogJ0EnICovLCAweDAwNTIgLyogJ1InICovLCAweDAwNDQgLyogJ0QnICovLCAweDAwMkMgLyogJywnICovLCAweDAwMjAgLyogJyAnICovLCAweDAwNDEgLyogJ0EnICovfSwKKyAgICAgICAgezB4MDA1NiAvKiAnVicgKi8sIDB4MDA0NSAvKiAnRScgKi8sIDB4MDA1MyAvKiAnUycgKi8sIDB4MDA1NCAvKiAnVCcgKi8sIDB4MDA0NSAvKiAnRScgKi8sIDB4MDA1MiAvKiAnUicgKi8sIDB4MDA0NyAvKiAnRycgKi8sIDB4MDBDNSwgMHgwMDUyIC8qICdSJyAqLywgMHgwMDQ0IC8qICdEJyAqLywgMHgwMDJDIC8qICcsJyAqLywgMHgwMDIwIC8qICcgJyAqLywgMHgwMDQyIC8qICdCJyAqL30sICAgICAgICAgICAgICAgICAKKyAgICAgICAgezB4MDBDNiwgMHgwMDQyIC8qICdCJyAqLywgMHgwMDRDIC8qICdMJyAqLywgMHgwMDQ1IC8qICdFJyAqL30sCisgICAgICAgIHsweDAwQzQsIDB4MDA0MiAvKiAnQicgKi8sIDB4MDA0QyAvKiAnTCcgKi8sIDB4MDA0NSAvKiAnRScgKi99LAorICAgICAgICB7MHgwMEQ4LCAweDAwNDIgLyogJ0InICovLCAweDAwNDUgLyogJ0UnICovLCAweDAwNTIgLyogJ1InICovLCAweDAwNDcgLyogJ0cnICovfSwKKyAgICAgICAgezB4MDBENiwgMHgwMDQyIC8qICdCJyAqLywgMHgwMDQ1IC8qICdFJyAqLywgMHgwMDUyIC8qICdSJyAqLywgMHgwMDQ3IC8qICdHJyAqL30KKyAgICB9OworCisgICAgcHJpdmF0ZSBzdGF0aWMgY2hhcltdW10gdGVzdE5UTGlzdCA9IHsKKyAgICAgICAgezB4MDA2MSAvKiAnYScgKi8sIDB4MDA2RSAvKiAnbicgKi8sIDB4MDA2NCAvKiAnZCcgKi8sIDB4MDA2NSAvKiAnZScgKi8sIDB4MDA3MiAvKiAncicgKi8sIDB4MDA2NSAvKiAnZScgKi99LAorICAgICAgICB7MHgwMDYzIC8qICdjJyAqLywgMHgwMDY4IC8qICdoJyAqLywgMHgwMDYxIC8qICdhJyAqLywgMHgwMDcxIC8qICdxJyAqLywgMHgwMDc1IC8qICd1JyAqLywgMHgwMDY1IC8qICdlJyAqL30sCisgICAgICAgIHsweDAwNjMgLyogJ2MnICovLCAweDAwNjggLyogJ2gnICovLCAweDAwNjUgLyogJ2UnICovLCAweDAwNkQgLyogJ20nICovLCAweDAwNjkgLyogJ2knICovLCAweDAwNkUgLyogJ24nICovfSwKKyAgICAgICAgezB4MDA2MyAvKiAnYycgKi8sIDB4MDA2RiAvKiAnbycgKi8sIDB4MDA3NCAvKiAndCcgKi8sIDB4MDA2NSAvKiAnZScgKi99LAorICAgICAgICB7MHgwMDYzIC8qICdjJyAqLywgMHgwMDZGIC8qICdvJyAqLywgMHgwMDc0IC8qICd0JyAqLywgMHgwMGU5fSwKKyAgICAgICAgezB4MDA2MyAvKiAnYycgKi8sIDB4MDBmNCwgMHgwMDc0IC8qICd0JyAqLywgMHgwMDY1IC8qICdlJyAqL30sCisgICAgICAgIHsweDAwNjMgLyogJ2MnICovLCAweDAwZjQsIDB4MDA3NCAvKiAndCcgKi8sIDB4MDBlOX0sCisgICAgICAgIHsweDAxMGQsIDB4MDA3NSAvKiAndScgKi8sIDB4MDEwZCwgMHgwMTEzLCAweDAwNzQgLyogJ3QnICovfSwKKyAgICAgICAgezB4MDA0MyAvKiAnQycgKi8sIDB4MDA3QSAvKiAneicgKi8sIDB4MDA2NSAvKiAnZScgKi8sIDB4MDA2MyAvKiAnYycgKi8sIDB4MDA2OCAvKiAnaCcgKi99LAorICAgICAgICB7MHgwMDY4IC8qICdoJyAqLywgMHgwMDY5IC8qICdpJyAqLywgMHgwMTYxLCAweDAwNjEgLyogJ2EnICovfSwKKyAgICAgICAgezB4MDA2OSAvKiAnaScgKi8sIDB4MDA3MiAvKiAncicgKi8sIDB4MDA2NCAvKiAnZCcgKi8sIDB4MDA2OSAvKiAnaScgKi8sIDB4MDA3MyAvKiAncycgKi8sIDB4MDA2MyAvKiAnYycgKi8sIDB4MDA2OCAvKiAnaCcgKi99LAorICAgICAgICB7MHgwMDZDIC8qICdsJyAqLywgMHgwMDY5IC8qICdpJyAqLywgMHgwMDY1IC8qICdlJyAqL30sCisgICAgICAgIHsweDAwNkMgLyogJ2wnICovLCAweDAwNjkgLyogJ2knICovLCAweDAwNzIgLyogJ3InICovLCAweDAwNjUgLyogJ2UnICovfSwKKyAgICAgICAgezB4MDA2QyAvKiAnbCcgKi8sIDB4MDA2QyAvKiAnbCcgKi8sIDB4MDA2MSAvKiAnYScgKi8sIDB4MDA2RCAvKiAnbScgKi8sIDB4MDA2MSAvKiAnYScgKi99LAorICAgICAgICB7MHgwMDZDIC8qICdsJyAqLywgMHgwMGY1LCAweDAwNzUgLyogJ3UnICovLCAweDAwNjcgLyogJ2cnICovfSwKKyAgICAgICAgezB4MDA2QyAvKiAnbCcgKi8sIDB4MDBmMiwgMHgwMDdBIC8qICd6JyAqLywgMHgwMDYxIC8qICdhJyAqL30sCisgICAgICAgIHsweDAwNkMgLyogJ2wnICovLCAweDAwNzUgLyogJ3UnICovLCAweDAxMGR9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIHsweDAwNkMgLyogJ2wnICovLCAweDAwNzUgLyogJ3UnICovLCAweDAwNjMgLyogJ2MnICovLCAweDAwNkIgLyogJ2snICovfSwKKyAgICAgICAgezB4MDA0QyAvKiAnTCcgKi8sIDB4MDBmYywgMHgwMDYyIC8qICdiJyAqLywgMHgwMDY1IC8qICdlJyAqLywgMHgwMDYzIC8qICdjJyAqLywgMHgwMDZCIC8qICdrJyAqL30sCisgICAgICAgIHsweDAwNkMgLyogJ2wnICovLCAweDAwNzkgLyogJ3knICovLCAweDAwNjUgLyogJ2UnICovfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIHsweDAwNkMgLyogJ2wnICovLCAweDAwZTQsIDB4MDA3NiAvKiAndicgKi8sIDB4MDA2OSAvKiAnaScgKi99LAorICAgICAgICB7MHgwMDRDIC8qICdMJyAqLywgMHgwMGY2LCAweDAwNzcgLyogJ3cnICovLCAweDAwNjUgLyogJ2UnICovLCAweDAwNkUgLyogJ24nICovfSwKKyAgICAgICAgezB4MDA2RCAvKiAnbScgKi8sIDB4MDBlMCwgMHgwMTYxLCAweDAwNzQgLyogJ3QnICovLCAweDAwNjEgLyogJ2EnICovfSwKKyAgICAgICAgezB4MDA2RCAvKiAnbScgKi8sIDB4MDBlZSwgMHgwMDcyIC8qICdyJyAqL30sCisgICAgICAgIHsweDAwNkQgLyogJ20nICovLCAweDAwNzkgLyogJ3knICovLCAweDAwNkUgLyogJ24nICovLCAweDAwNjQgLyogJ2QnICovLCAweDAwNjkgLyogJ2knICovLCAweDAwNjcgLyogJ2cnICovfSwKKyAgICAgICAgezB4MDA0RCAvKiAnTScgKi8sIDB4MDBlNCwgMHgwMDZFIC8qICduJyAqLywgMHgwMDZFIC8qICduJyAqLywgMHgwMDY1IC8qICdlJyAqLywgMHgwMDcyIC8qICdyJyAqL30sCisgICAgICAgIHsweDAwNkQgLyogJ20nICovLCAweDAwZjYsIDB4MDA2MyAvKiAnYycgKi8sIDB4MDA2OCAvKiAnaCcgKi8sIDB4MDA3NCAvKiAndCcgKi8sIDB4MDA2NSAvKiAnZScgKi8sIDB4MDA2RSAvKiAnbicgKi99LAorICAgICAgICB7MHgwMDcwIC8qICdwJyAqLywgMHgwMDY5IC8qICdpJyAqLywgMHgwMGYxLCAweDAwNjEgLyogJ2EnICovfSwKKyAgICAgICAgezB4MDA3MCAvKiAncCcgKi8sIDB4MDA2OSAvKiAnaScgKi8sIDB4MDA2RSAvKiAnbicgKi8sIDB4MDA3NCAvKiAndCcgKi99LAorICAgICAgICB7MHgwMDcwIC8qICdwJyAqLywgMHgwMDc5IC8qICd5JyAqLywgMHgwMDZDIC8qICdsJyAqLywgMHgwMDZGIC8qICdvJyAqLywgMHgwMDZFIC8qICduJyAqL30sCisgICAgICAgIHsweDAxNjEsIDB4MDBlMCwgMHgwMDcyIC8qICdyJyAqLywgMHgwMDYxIC8qICdhJyAqLywgMHgwMDZFIC8qICduJyAqL30sCisgICAgICAgIHsweDAwNzMgLyogJ3MnICovLCAweDAwNjEgLyogJ2EnICovLCAweDAwNzYgLyogJ3YnICovLCAweDAwNkYgLyogJ28nICovLCAweDAwNjkgLyogJ2knICovLCAweDAwNzIgLyogJ3InICovfSwKKyAgICAgICAgezB4MDE2MCwgMHgwMDY1IC8qICdlJyAqLywgMHgwMDcyIC8qICdyJyAqLywgMHgwMDYyIC8qICdiJyAqLywgMHgwMTZiLCAweDAwNzIgLyogJ3InICovLCAweDAwNjEgLyogJ2EnICovfSwKKyAgICAgICAgezB4MDA1MyAvKiAnUycgKi8sIDB4MDA2OSAvKiAnaScgKi8sIDB4MDA2NSAvKiAnZScgKi8sIDB4MDA3NCAvKiAndCcgKi8sIDB4MDA2QyAvKiAnbCcgKi8sIDB4MDA2MSAvKiAnYScgKi99LAorICAgICAgICB7MHgwMTViLCAweDAwNkMgLyogJ2wnICovLCAweDAwNzUgLyogJ3UnICovLCAweDAwNjIgLyogJ2InICovfSwKKyAgICAgICAgezB4MDA3MyAvKiAncycgKi8sIDB4MDA3NSAvKiAndScgKi8sIDB4MDA2MiAvKiAnYicgKi8sIDB4MDA3NCAvKiAndCcgKi8sIDB4MDA2QyAvKiAnbCcgKi8sIDB4MDA2NSAvKiAnZScgKi99LAorICAgICAgICB7MHgwMDczIC8qICdzJyAqLywgMHgwMDc5IC8qICd5JyAqLywgMHgwMDZEIC8qICdtJyAqLywgMHgwMDYyIC8qICdiJyAqLywgMHgwMDZGIC8qICdvJyAqLywgMHgwMDZDIC8qICdsJyAqL30sCisgICAgICAgIHsweDAwNzMgLyogJ3MnICovLCAweDAwZTQsIDB4MDA2RCAvKiAnbScgKi8sIDB4MDA3NCAvKiAndCcgKi8sIDB4MDA2QyAvKiAnbCcgKi8sIDB4MDA2OSAvKiAnaScgKi8sIDB4MDA2MyAvKiAnYycgKi8sIDB4MDA2OCAvKiAnaCcgKi99LAorICAgICAgICB7MHgwMDc3IC8qICd3JyAqLywgMHgwMDYxIC8qICdhJyAqLywgMHgwMDY2IC8qICdmJyAqLywgMHgwMDY2IC8qICdmJyAqLywgMHgwMDZDIC8qICdsJyAqLywgMHgwMDY1IC8qICdlJyAqL30sCisgICAgICAgIHsweDAwNzYgLyogJ3YnICovLCAweDAwNjUgLyogJ2UnICovLCAweDAwNzIgLyogJ3InICovLCAweDAwNkIgLyogJ2snICovLCAweDAwNjUgLyogJ2UnICovLCAweDAwNjggLyogJ2gnICovLCAweDAwNzIgLyogJ3InICovLCAweDAwNzQgLyogJ3QnICovfSwKKyAgICAgICAgezB4MDA3NyAvKiAndycgKi8sIDB4MDA2RiAvKiAnbycgKi8sIDB4MDA2RiAvKiAnbycgKi8sIDB4MDA2NCAvKiAnZCcgKi99LAorICAgICAgICB7MHgwMDc2IC8qICd2JyAqLywgMHgwMDZGIC8qICdvJyAqLywgMHgwMDc4IC8qICd4JyAqL30sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIHsweDAwNzYgLyogJ3YnICovLCAweDAwZTQsIDB4MDA2NyAvKiAnZycgKi8sIDB4MDA2MSAvKiAnYScgKi99LAorICAgICAgICB7MHgwMDc5IC8qICd5JyAqLywgMHgwMDY1IC8qICdlJyAqLywgMHgwMDZFIC8qICduJyAqL30sCisgICAgICAgIHsweDAwNzkgLyogJ3knICovLCAweDAwNzUgLyogJ3UnICovLCAweDAwNjEgLyogJ2EnICovLCAweDAwNkUgLyogJ24nICovfSwKKyAgICAgICAgezB4MDA3OSAvKiAneScgKi8sIDB4MDA3NSAvKiAndScgKi8sIDB4MDA2MyAvKiAnYycgKi8sIDB4MDA2MyAvKiAnYycgKi8sIDB4MDA2MSAvKiAnYScgKi99LAorICAgICAgICB7MHgwMTdlLCAweDAwNjEgLyogJ2EnICovLCAweDAwNkMgLyogJ2wnICovfSwKKyAgICAgICAgezB4MDE3ZSwgMHgwMDY1IC8qICdlJyAqLywgMHgwMDZFIC8qICduJyAqLywgMHgwMDYxIC8qICdhJyAqL30sCisgICAgICAgIHsweDAxN2QsIDB4MDA2NSAvKiAnZScgKi8sIDB4MDA2RSAvKiAnbicgKi8sIDB4MDExMywgMHgwMDc2IC8qICd2JyAqLywgMHgwMDYxIC8qICdhJyAqL30sCisgICAgICAgIHsweDAwN0EgLyogJ3onICovLCAweDAwNkYgLyogJ28nICovLCAweDAwNkYgLyogJ28nICovLCAwfSwKKyAgICAgICAgezB4MDA1QSAvKiAnWicgKi8sIDB4MDA3NiAvKiAndicgKi8sIDB4MDA2OSAvKiAnaScgKi8sIDB4MDA2NSAvKiAnZScgKi8sIDB4MDA2NCAvKiAnZCcgKi8sIDB4MDA3MiAvKiAncicgKi8sIDB4MDA2OSAvKiAnaScgKi8sIDB4MDA2QSAvKiAnaicgKi8sIDB4MDA2MSAvKiAnYScgKi99LAorICAgICAgICB7MHgwMDVBIC8qICdaJyAqLywgMHgwMGZjLCAweDAwNzIgLyogJ3InICovLCAweDAwNjkgLyogJ2knICovLCAweDAwNjMgLyogJ2MnICovLCAweDAwNjggLyogJ2gnICovfSwKKyAgICAgICAgezB4MDA3QSAvKiAneicgKi8sIDB4MDA3OSAvKiAneScgKi8sIDB4MDA3MyAvKiAncycgKi8sIDB4MDA2QiAvKiAnaycgKi8sIDB9LCAgICAgICAgICAgICAKKyAgICAgICAgezB4MDBlNCwgMHgwMDZFIC8qICduJyAqLywgMHgwMDY0IC8qICdkJyAqLywgMHgwMDY1IC8qICdlJyAqLywgMHgwMDcyIC8qICdyJyAqLywgMHgwMDY1IC8qICdlJyAqL30gICAgICAgICAgICAgICAgICAKKyAgICB9OworICAgIAorICAgIHByaXZhdGUgQ29sbGF0b3IgbXlDb2xsYXRpb24gPSBudWxsOworICAgIAorICAgIHB1YmxpYyBDb2xsYXRpb25EYW5pc2hUZXN0KCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgbXlDb2xsYXRpb24gPSBDb2xsYXRvci5nZXRJbnN0YW5jZShuZXcgTG9jYWxlKCJkYSIsICJESyIpKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogaW4gY3JlYXRpb24gb2YgY29sbGF0b3Igb2YgREFOSVNIIGxvY2FsZSIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RUZXJ0aWFyeSgpIHsKKyAgICAgICAgaW50IGkgPSAwOworICAgICAgICBteUNvbGxhdGlvbi5zZXRTdHJlbmd0aChDb2xsYXRvci5URVJUSUFSWSk7CisgICAgICAgIAorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNSA7IGkrKykgeworICAgICAgICAgICAgZG9UZXN0KHRlc3RTb3VyY2VDYXNlc1tpXSwgdGVzdFRhcmdldENhc2VzW2ldLCByZXN1bHRzW2ldKTsKKyAgICAgICAgfQorICAgICAgICBpbnQgaiA9IDA7CisgICAgICAgIGxvZ2xuKCJUZXN0IGludGVybmV0IGRhdGEgbGlzdCA6ICIpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNTM7IGkrKykgeworICAgICAgICAgICAgZm9yIChqID0gaSsxOyBqIDwgNTQ7IGorKykgeworICAgICAgICAgICAgICAgIGRvVGVzdCh0ZXN0QnVnc1tpXSwgdGVzdEJ1Z3Nbal0sIC0xKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBsb2dsbigiVGVzdCBOVCBkYXRhIGxpc3QgOiAiKTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IDUyOyBpKyspIHsKKyAgICAgICAgICAgIGZvciAoaiA9IGkrMTsgaiA8IDUzOyBqKyspIHsKKyAgICAgICAgICAgIAlkb1Rlc3QodGVzdE5UTGlzdFtpXSwgdGVzdE5UTGlzdFtqXSwgLTEpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdFByaW1hcnkoKSB7CisgICAgICAgIGludCBpOworICAgICAgICBteUNvbGxhdGlvbi5zZXRTdHJlbmd0aChDb2xsYXRvci5QUklNQVJZKTsKKyAgICAgICAgZm9yIChpID0gNTsgaSA8IDg7IGkrKykgeworICAgICAgICAgICAgZG9UZXN0KHRlc3RTb3VyY2VDYXNlc1tpXSwgdGVzdFRhcmdldENhc2VzW2ldLCByZXN1bHRzW2ldKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIAorICAgIAorICAgIC8vIG1haW4gdGVzdCByb3V0aW5lLCBUZXN0cyBydWxlcyBzcGVjaWZpYyB0byBkYW5pc2ggY29sbGF0aW9uCisgICAgcHJpdmF0ZSB2b2lkIGRvVGVzdChjaGFyW10gc291cmNlLCBjaGFyW10gdGFyZ2V0LCBpbnQgcmVzdWx0KSB7CisgICAgICAgIFN0cmluZyBzID0gbmV3IFN0cmluZyhzb3VyY2UpOworICAgICAgICBTdHJpbmcgdCA9IG5ldyBTdHJpbmcodGFyZ2V0KTsKKyAgICAgICAgaW50IGNvbXBhcmVSZXN1bHQgPSBteUNvbGxhdGlvbi5jb21wYXJlKHMsIHQpOworICAgICAgICBDb2xsYXRpb25LZXkgc29ydEtleTEsIHNvcnRLZXkyOworICAgICAgICBzb3J0S2V5MSA9IG15Q29sbGF0aW9uLmdldENvbGxhdGlvbktleShzKTsKKyAgICAgICAgc29ydEtleTIgPSBteUNvbGxhdGlvbi5nZXRDb2xsYXRpb25LZXkodCk7CisgICAgICAgIGludCBrZXlSZXN1bHQgPSBzb3J0S2V5MS5jb21wYXJlVG8oc29ydEtleTIpOworICAgICAgICByZXBvcnRDUmVzdWx0KHMsIHQsIHNvcnRLZXkxLCBzb3J0S2V5MiwgY29tcGFyZVJlc3VsdCwga2V5UmVzdWx0LCBjb21wYXJlUmVzdWx0LCByZXN1bHQpOyAgIAorICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHZvaWQgcmVwb3J0Q1Jlc3VsdCggU3RyaW5nIHNvdXJjZSwgU3RyaW5nIHRhcmdldCwgQ29sbGF0aW9uS2V5IHNvdXJjZUtleSwgQ29sbGF0aW9uS2V5IHRhcmdldEtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvbXBhcmVSZXN1bHQsIGludCBrZXlSZXN1bHQsIGludCBpbmNSZXN1bHQsIGludCBleHBlY3RlZFJlc3VsdCApeworICAgICAgICBpZiAoZXhwZWN0ZWRSZXN1bHQgPCAtMSB8fCBleHBlY3RlZFJlc3VsdCA+IDEpIHsKKyAgICAgICAgICAgIGVycmxuKCIqKioqKiBpbnZhbGlkIGNhbGwgdG8gcmVwb3J0Q1Jlc3VsdCAqKioqIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBib29sZWFuIG9rMSA9IChjb21wYXJlUmVzdWx0ID09IGV4cGVjdGVkUmVzdWx0KTsKKyAgICAgICAgYm9vbGVhbiBvazIgPSAoa2V5UmVzdWx0ID09IGV4cGVjdGVkUmVzdWx0KTsKKyAgICAgICAgYm9vbGVhbiBvazMgPSAoaW5jUmVzdWx0ID09IGV4cGVjdGVkUmVzdWx0KTsKKworICAgICAgICBpZiAob2sxICYmIG9rMiAmJiBvazMgJiYgIWlzVmVyYm9zZSgpKSB7CisgICAgICAgICAgICByZXR1cm47ICAgIAorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgU3RyaW5nIG1zZzEgPSBvazE/ICJPazogY29tcGFyZShcIiIgOiAiRkFJTDogY29tcGFyZShcIiI7CisgICAgICAgICAgICBTdHJpbmcgbXNnMiA9ICJcIiwgXCIiOworICAgICAgICAgICAgU3RyaW5nIG1zZzMgPSAiXCIpIHJldHVybmVkICI7CisgICAgICAgICAgICBTdHJpbmcgbXNnNCA9ICI7IGV4cGVjdGVkICI7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFN0cmluZyBzRXhwZWN0ID0gbmV3IFN0cmluZygiIik7CisgICAgICAgICAgICBTdHJpbmcgc1Jlc3VsdCA9IG5ldyBTdHJpbmcoIiIpOworICAgICAgICAgICAgc1Jlc3VsdCA9IGFwcGVuZENvbXBhcmVSZXN1bHQoY29tcGFyZVJlc3VsdCwgc1Jlc3VsdCk7CisgICAgICAgICAgICBzRXhwZWN0ID0gYXBwZW5kQ29tcGFyZVJlc3VsdChleHBlY3RlZFJlc3VsdCwgc0V4cGVjdCk7CisgICAgICAgICAgICBpZiAob2sxKSB7CisgICAgICAgICAgICAgICAgbG9nbG4obXNnMSArIHNvdXJjZSArIG1zZzIgKyB0YXJnZXQgKyBtc2czICsgc1Jlc3VsdCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGVycmxuKG1zZzEgKyBzb3VyY2UgKyBtc2cyICsgdGFyZ2V0ICsgbXNnMyArIHNSZXN1bHQgKyBtc2c0ICsgc0V4cGVjdCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1zZzEgPSBvazIgPyAiT2s6IGtleShcIiIgOiAiRkFJTDoga2V5KFwiIjsKKyAgICAgICAgICAgIG1zZzIgPSAiXCIpLmNvbXBhcmVUbyhrZXkoXCIiOworICAgICAgICAgICAgbXNnMyA9ICJcIikpIHJldHVybmVkICI7CisgICAgICAgICAgICBzUmVzdWx0ID0gYXBwZW5kQ29tcGFyZVJlc3VsdChrZXlSZXN1bHQsIHNSZXN1bHQpOworICAgICAgICAgICAgaWYgKG9rMikgeworICAgICAgICAgICAgICAgIGxvZ2xuKG1zZzEgKyBzb3VyY2UgKyBtc2cyICsgdGFyZ2V0ICsgbXNnMyArIHNSZXN1bHQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBlcnJsbihtc2cxICsgc291cmNlICsgbXNnMiArIHRhcmdldCArIG1zZzMgKyBzUmVzdWx0ICsgbXNnNCArIHNFeHBlY3QpOworICAgICAgICAgICAgICAgIG1zZzEgPSAiICAiOworICAgICAgICAgICAgICAgIG1zZzIgPSAiIHZzLiAiOworICAgICAgICAgICAgICAgIGVycmxuKG1zZzEgKyBwcmV0dGlmeShzb3VyY2VLZXkpICsgbXNnMiArIHByZXR0aWZ5KHRhcmdldEtleSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBtc2cxID0gb2szID8gIk9rOiBpbmNDb21wYXJlKFwiIiA6ICJGQUlMOiBpbmNDb21wYXJlKFwiIjsKKyAgICAgICAgICAgIG1zZzIgPSAiXCIsIFwiIjsKKyAgICAgICAgICAgIG1zZzMgPSAiXCIpIHJldHVybmVkICI7CisKKyAgICAgICAgICAgIHNSZXN1bHQgPSBhcHBlbmRDb21wYXJlUmVzdWx0KGluY1Jlc3VsdCwgc1Jlc3VsdCk7CisKKyAgICAgICAgICAgIGlmIChvazMpIHsKKyAgICAgICAgICAgICAgICBsb2dsbihtc2cxICsgc291cmNlICsgbXNnMiArIHRhcmdldCArIG1zZzMgKyBzUmVzdWx0KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZXJybG4obXNnMSArIHNvdXJjZSArIG1zZzIgKyB0YXJnZXQgKyBtc2czICsgc1Jlc3VsdCArIG1zZzQgKyBzRXhwZWN0KTsKKyAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgCisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBTdHJpbmcgYXBwZW5kQ29tcGFyZVJlc3VsdChpbnQgcmVzdWx0LCBTdHJpbmcgdGFyZ2V0KXsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSAtMSkgeworICAgICAgICAgICAgdGFyZ2V0ICs9ICJMRVNTIjsKKyAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gMCkgeworICAgICAgICAgICAgdGFyZ2V0ICs9ICJFUVVBTCI7CisgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IDEpIHsKKyAgICAgICAgICAgIHRhcmdldCArPSAiR1JFQVRFUiI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBTdHJpbmcgaHVoID0gIj8iOworICAgICAgICAgICAgdGFyZ2V0ICs9IGh1aCArIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdGFyZ2V0OworICAgIH0KKyAgICAKKyAgICBTdHJpbmcgcHJldHRpZnkoQ29sbGF0aW9uS2V5IHNvdXJjZUtleSkgeworICAgICAgICBpbnQgaTsKKyAgICAgICAgYnl0ZVtdIGJ5dGVzPSBzb3VyY2VLZXkudG9CeXRlQXJyYXkoKTsKKyAgICAgICAgU3RyaW5nIHRhcmdldCA9ICJbIjsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICB0YXJnZXQgKz0gSW50ZWdlci50b0hleFN0cmluZyhieXRlc1tpXSk7CisgICAgICAgICAgICB0YXJnZXQgKz0gIiAiOworICAgICAgICB9CisgICAgICAgIHRhcmdldCArPSAiXSI7CisgICAgICAgIHJldHVybiB0YXJnZXQ7CisgICAgfQorfQorICAgIApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9jb2xsYXRvci9Db2xsYXRpb25EdW1teVRlc3QuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9jb2xsYXRvci9Db2xsYXRpb25EdW1teVRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTg0OGJjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NvbGxhdG9yL0NvbGxhdGlvbkR1bW15VGVzdC5qYXZhCkBAIC0wLDAgKzEsNTIwIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgICAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICRTb3VyY2U6IAorICogJERhdGU6IAorICogJFJldmlzaW9uOiAKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCisvKiogCisgKiBQb3J0IEZyb206ICAgSUNVNEMgdjIuMSA6IENvbGxhdGUvQ29sbGF0aW9uRHVtbXlUZXN0CisgKiBTb3VyY2UgRmlsZTogJElDVTRDUm9vdC9zb3VyY2UvdGVzdC9pbnRsdGVzdC9hbGxjb2xsLmNwcAorICogICAgICAgICAgICAgICRJQ1U0Q1Jvb3Qvc291cmNlL3Rlc3QvY2ludGx0c3QvY2FsbGNvbGwuYworICoqLworIAorcGFja2FnZSBjb20uaWJtLmljdS5kZXYudGVzdC5jb2xsYXRvcjsKKyAKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYudGVzdC4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuKjsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworIAorcHVibGljIGNsYXNzIENvbGxhdGlvbkR1bW15VGVzdCBleHRlbmRzIFRlc3RGbXdrIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgbmV3IENvbGxhdGlvbkR1bW15VGVzdCgpLnJ1bihhcmdzKTsKKyAgICAgICAgLy8gbmV3IENvbGxhdGlvbkR1bW15VGVzdCgpLlRlc3RWYXJpYWJsZVRvcCgpOworICAgIH0KKyAgICAKKyAgICAvL3Rlc3RTb3VyY2VDYXNlc1tdW10gYW5kIHRlc3RUYXJnZXRDYXNlc1tdW10sIHRlc3RDYXNlc1tdW10gYXJlIHBvcnRlZCBmcm9tIHRoZSBmaWxlIGNhbGxjb2xsLmMgaW4gaWN1NGMKKyAgICBwcml2YXRlIHN0YXRpYyBjaGFyW11bXSB0ZXN0U291cmNlQ2FzZXMgPSB7CisgICAgICAgIHsweDYxLCAweDYyLCAweDI3LCAweDYzfSwKKyAgICAgICAgezB4NjMsIDB4NmYsIDB4MmQsIDB4NmYsIDB4NzB9LAorICAgICAgICB7MHg2MSwgMHg2Mn0sCisgICAgICAgIHsweDYxLCAweDZkLCAweDcwLCAweDY1LCAweDcyLCAweDczLCAweDYxLCAweDY0fSwKKyAgICAgICAgezB4NjEsIDB4NmMsIDB4NmN9LAorICAgICAgICB7MHg2NiwgMHg2ZiwgMHg3NSwgMHg3Mn0sCisgICAgICAgIHsweDY2LCAweDY5LCAweDc2LCAweDY1fSwKKyAgICAgICAgezB4MzF9LAorICAgICAgICB7MHgzMX0sCisgICAgICAgIHsweDMxfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAxMCAKKyAgICAgICAgezB4MzJ9LAorICAgICAgICB7MHgzMn0sCisgICAgICAgIHsweDQ4LCAweDY1LCAweDZjLCAweDZjLCAweDZmfSwKKyAgICAgICAgezB4NjEsIDB4M2MsIDB4NjJ9LAorICAgICAgICB7MHg2MSwgMHgzYywgMHg2Mn0sCisgICAgICAgIHsweDYxLCAweDYzLCAweDYzfSwKKyAgICAgICAgezB4NjEsIDB4NjMsIDB4NDgsIDB4NjN9LCAgLy8gIHNpbXBsZSB0ZXN0IAorICAgICAgICB7MHg3MCwgMHgwMEVBLCAweDYzLCAweDY4LCAweDY1fSwKKyAgICAgICAgezB4NjEsIDB4NjIsIDB4NjN9LAorICAgICAgICB7MHg2MSwgMHg2MiwgMHg2M30sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAyMCAKKyAgICAgICAgezB4NjEsIDB4NjIsIDB4NjN9LAorICAgICAgICB7MHg2MSwgMHg2MiwgMHg2M30sCisgICAgICAgIHsweDYxLCAweDYyLCAweDYzfSwKKyAgICAgICAgezB4NjEsIDB4MDBFNiwgMHg2M30sCisgICAgICAgIHsweDYxLCAweDYzLCAweDQ4LCAweDYzfSwgIC8vICBwcmltYXJ5IHRlc3QgCisgICAgICAgIHsweDYyLCAweDZjLCAweDYxLCAweDYzLCAweDZifSwKKyAgICAgICAgezB4NjYsIDB4NmYsIDB4NzUsIDB4NzJ9LAorICAgICAgICB7MHg2NiwgMHg2OSwgMHg3NiwgMHg2NX0sCisgICAgICAgIHsweDMxfSwKKyAgICAgICAgezB4NjEsIDB4NjIsIDB4NjN9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgMzAgCisgICAgICAgIHsweDYxLCAweDYyLCAweDYzfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIHsweDYxLCAweDYyLCAweDYzLCAweDQ4fSwKKyAgICAgICAgezB4NjEsIDB4NjIsIDB4NjN9LAorICAgICAgICB7MHg2MSwgMHg2MywgMHg0OCwgMHg2M30sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIDM0IAorICAgICAgICB7MHg2MSwgMHg2MywgMHg2NSwgMHgzMH0sCisgICAgICAgIHsweDMxLCAweDMwfSwKKyAgICAgICAgezB4NzAsIDB4MDBFQSwweDMwfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDM3ICAgICAKKyAgICB9OworCisgICAgcHJpdmF0ZSBzdGF0aWMgY2hhcltdW10gdGVzdFRhcmdldENhc2VzID0geworICAgICAgICB7MHg2MSwgMHg2MiwgMHg2MywgMHgyN30sCisgICAgICAgIHsweDQzLCAweDRmLCAweDRmLCAweDUwfSwKKyAgICAgICAgezB4NjEsIDB4NjIsIDB4NjN9LAorICAgICAgICB7MHgyNn0sCisgICAgICAgIHsweDI2fSwKKyAgICAgICAgezB4MzR9LAorICAgICAgICB7MHgzNX0sCisgICAgICAgIHsweDZmLCAweDZlLCAweDY1fSwKKyAgICAgICAgezB4NmUsIDB4NmUsIDB4NjV9LAorICAgICAgICB7MHg3MCwgMHg2ZSwgMHg2NX0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAxMCAKKyAgICAgICAgezB4NzQsIDB4NzcsIDB4NmZ9LAorICAgICAgICB7MHg3NSwgMHg3NywgMHg2Zn0sCisgICAgICAgIHsweDY4LCAweDY1LCAweDZjLCAweDZjLCAweDRmfSwKKyAgICAgICAgezB4NjEsIDB4M2MsIDB4M2QsIDB4NjJ9LAorICAgICAgICB7MHg2MSwgMHg2MiwgMHg2M30sCisgICAgICAgIHsweDYxLCAweDQzLCAweDQ4LCAweDYzfSwKKyAgICAgICAgezB4NjEsIDB4NDMsIDB4NDgsIDB4NjN9LCAgLy8gIHNpbXBsZSB0ZXN0IAorICAgICAgICB7MHg3MCwgMHgwMEU5LCAweDYzLCAweDY4LCAweDAwRTl9LAorICAgICAgICB7MHg2MSwgMHg2MiwgMHg2M30sCisgICAgICAgIHsweDYxLCAweDQyLCAweDQzfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIDIwIAorICAgICAgICB7MHg2MSwgMHg2MiwgMHg2MywgMHg2OH0sCisgICAgICAgIHsweDYxLCAweDYyLCAweDY0fSwKKyAgICAgICAgezB4MDBFNCwgMHg2MiwgMHg2M30sCisgICAgICAgIHsweDYxLCAweDAwQzYsIDB4NjN9LAorICAgICAgICB7MHg2MSwgMHg0MywgMHg0OCwgMHg2M30sICAvLyAgcHJpbWFyeSB0ZXN0IAorICAgICAgICB7MHg2MiwgMHg2YywgMHg2MSwgMHg2MywgMHg2YiwgMHgyZCwgMHg2MiwgMHg2OSwgMHg3MiwgMHg2NH0sCisgICAgICAgIHsweDM0fSwKKyAgICAgICAgezB4MzV9LAorICAgICAgICB7MHg2ZiwgMHg2ZSwgMHg2NX0sCisgICAgICAgIHsweDYxLCAweDYyLCAweDYzfSwKKyAgICAgICAgezB4NjEsIDB4NDIsIDB4NjN9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgMzAgCisgICAgICAgIHsweDYxLCAweDYyLCAweDYzLCAweDY4fSwKKyAgICAgICAgezB4NjEsIDB4NjIsIDB4NjR9LAorICAgICAgICB7MHg2MSwgMHg0MywgMHg0OCwgMHg2M30sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgMzQgCisgICAgICAgIHsweDYxLCAweDYzLCAweDY1LCAweDMwfSwKKyAgICAgICAgezB4MzEsIDB4MzB9LAorICAgICAgICB7MHg3MCwgMHgwMEVCLDB4MzB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMzcgCisgICAgfTsKKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBjaGFyW11bXSB0ZXN0Q2FzZXMgPSB7CisgICAgICAgIHsweDYxfSwKKyAgICAgICAgezB4NDF9LAorICAgICAgICB7MHgwMGU0fSwKKyAgICAgICAgezB4MDBjNH0sCisgICAgICAgIHsweDYxLCAweDY1fSwKKyAgICAgICAgezB4NjEsIDB4NDV9LAorICAgICAgICB7MHg0MSwgMHg2NX0sCisgICAgICAgIHsweDQxLCAweDQ1fSwKKyAgICAgICAgezB4MDBlNn0sCisgICAgICAgIHsweDAwYzZ9LAorICAgICAgICB7MHg2Mn0sCisgICAgICAgIHsweDYzfSwKKyAgICAgICAgezB4N2F9CisgICAgfTsKKyAgICAKKyAgICBpbnRbXSByZXN1bHRzID0geworICAgICAgICAtMSwKKyAgICAgICAgLTEsIC8vQ29sbGF0b3I6OkdSRUFURVIsCisgICAgICAgIC0xLAorICAgICAgICAtMSwKKyAgICAgICAgLTEsCisgICAgICAgIC0xLAorICAgICAgICAtMSwKKyAgICAgICAgMSwKKyAgICAgICAgMSwKKyAgICAgICAgLTEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAxMCAKKyAgICAgICAgMSwKKyAgICAgICAgLTEsCisgICAgICAgIDEsCisgICAgICAgIDEsCisgICAgICAgIC0xLAorICAgICAgICAtMSwKKyAgICAgICAgLTEsCisgICAgLy8gIHRlc3QgcHJpbWFyeSA+IDE3IAorICAgICAgICAwLAorICAgICAgICAwLAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAyMCAKKyAgICAgICAgLTEsCisgICAgICAgIC0xLAorICAgICAgICAwLAorICAgICAgICAwLAorICAgICAgICAwLAorICAgICAgICAtMSwKKyAgICAvLyAgdGVzdCBzZWNvbmRhcnkgPiAyNiAKKyAgICAgICAgMCwKKyAgICAgICAgMCwKKyAgICAgICAgMCwKKyAgICAgICAgMCwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgMzAgCisgICAgICAgIDAsCisgICAgICAgIC0xLAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgMzQgCisgICAgICAgIDAsCisgICAgICAgIDAsCisgICAgICAgIC0xIAorICAgIH07CisgICAgCisgICAgZmluYWwgaW50IE1BWF9UT0tFTl9MRU4gPSAxNjsKKyAgICAKKyAgICBwdWJsaWMgUnVsZUJhc2VkQ29sbGF0b3IgbXlDb2xsYXRpb247CisgICAgCisgICAgcHVibGljIENvbGxhdGlvbkR1bW15VGVzdCgpIHsKKyAgICAgICAgU3RyaW5nIHJ1bGVzZXQgPSAiJiBDIDwgY2gsIGNILCBDaCwgQ0ggJiBGaXZlLCA1ICYgRm91ciwgNCAmIG9uZSwgMSAmIEFtcGVyc2FuZDsgJyYnICYgVHdvLCAyICI7CisgICAgICAgIC8vIFN0cmluZyBydWxlc2V0ID0gIiYgRm91ciwgNCI7CisgICAgICAgIG15Q29sbGF0aW9uID0gbnVsbDsKKyAgICAgICAgdHJ5eworICAgICAgICAgICAgbXlDb2xsYXRpb24gPSBuZXcgUnVsZUJhc2VkQ29sbGF0b3IocnVsZXNldCk7CisgICAgICAgIH0gY2F0Y2goRXhjZXB0aW9uIGUpeworICAgICAgICAgICAgZXJybG4oIkZhaWwgdG8gY3JlYXRlIFJ1bGVCYXNlZENvbGxhdG9yIHdpdGggcnVsZXM6IiArIHJ1bGVzZXQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8vIHBlcmZvcm0gdGVzdCB3aXRoIHN0cmVuZ3RoIHRlcnRpYXJ5CisgICAgcHVibGljIHZvaWQgVGVzdFRlcnRpYXJ5KCkgeworICAgICAgICBpbnQgaSA9IDA7CisgICAgICAgIG15Q29sbGF0aW9uLnNldFN0cmVuZ3RoKENvbGxhdG9yLlRFUlRJQVJZKTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IDE3IDsgaSsrKSB7CisgICAgICAgICAgICBkb1Rlc3QobXlDb2xsYXRpb24sIHRlc3RTb3VyY2VDYXNlc1tpXSwgdGVzdFRhcmdldENhc2VzW2ldLCByZXN1bHRzW2ldKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIHBlcmZvcm0gdGVzdCB3aXRoIHN0cmVuZ3RoIFBSSU1BUlkKKyAgICBwdWJsaWMgdm9pZCBUZXN0UHJpbWFyeSgpIHsKKyAgICAgICAvLyBwcm9ibGVtIGluIHN0cmNvbGxpbmMgZm9yIHVuZmluc2hlZCBjb250cmFjdGlvbnMgCisgICAgICAgbXlDb2xsYXRpb24uc2V0U3RyZW5ndGgoQ29sbGF0b3IuUFJJTUFSWSk7CisgICAgICAgIGZvciAoaW50IGkgPSAxNzsgaSA8IDI2IDsgaSsrKSB7CisgICAgICAgICAgICBkb1Rlc3QobXlDb2xsYXRpb24sIHRlc3RTb3VyY2VDYXNlc1tpXSwgdGVzdFRhcmdldENhc2VzW2ldLCByZXN1bHRzW2ldKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vcGVyZm9ybSB0ZXN0IHdpdGggc3RyZW5ndGggU0VDT05EQVJZCisgICAgcHVibGljIHZvaWQgVGVzdFNlY29uZGFyeSgpIHsKKyAgICAgICAgaW50IGk7CisgICAgICAgIG15Q29sbGF0aW9uLnNldFN0cmVuZ3RoKENvbGxhdG9yLlNFQ09OREFSWSk7CisgICAgICAgIGZvciAoaSA9IDI2OyBpIDwgMzQ7IGkrKykgeworICAgICAgICAgICAgZG9UZXN0KG15Q29sbGF0aW9uLCB0ZXN0U291cmNlQ2FzZXNbaV0sIHRlc3RUYXJnZXRDYXNlc1tpXSwgcmVzdWx0c1tpXSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBwZXJmb3JtIGV4dHJhIHRlc3RzCisgICAgcHVibGljIHZvaWQgVGVzdEV4dHJhKCkgeworICAgICAgICBpbnQgaSwgajsKKyAgICAgICAgbXlDb2xsYXRpb24uc2V0U3RyZW5ndGgoQ29sbGF0b3IuVEVSVElBUlkpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdGVzdENhc2VzLmxlbmd0aCAtIDE7IGkrKykgeworICAgICAgICAgICAgZm9yIChqID0gaSArIDE7IGogPCB0ZXN0Q2FzZXMubGVuZ3RoOyBqICs9IDEpIHsKKyAgICAgICAgICAgICAgICBkb1Rlc3QobXlDb2xsYXRpb24sIHRlc3RDYXNlc1tpXSwgdGVzdENhc2VzW2pdLCAtMSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0SWRlbnRpY2FsKCkgeworICAgICAgICBpbnQgaTsKKyAgICAgICAgbXlDb2xsYXRpb24uc2V0U3RyZW5ndGgoQ29sbGF0b3IuSURFTlRJQ0FMKTsKKyAgICAgICAgZm9yIChpPSAzNDsgaTwzNzsgaSsrKSB7CisgICAgICAgICAgICBkb1Rlc3QobXlDb2xsYXRpb24sIHRlc3RTb3VyY2VDYXNlc1tpXSwgdGVzdFRhcmdldENhc2VzW2ldLCByZXN1bHRzW2ldKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RKQjU4MSgpIHsKKyAgICAgICAgU3RyaW5nIHNvdXJjZSA9ICJUSElTSVNBVEVTVC4iOworICAgICAgICBTdHJpbmcgdGFyZ2V0ID0gIlRoaXNpc2F0ZXN0LiI7CisgICAgICAgIENvbGxhdG9yIGNvbGwgPSBudWxsOworICAgICAgICB0cnkgeworICAgICAgICAgICAgY29sbCA9IENvbGxhdG9yLmdldEluc3RhbmNlKExvY2FsZS5FTkdMSVNIKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogRmFpbGVkIHRvIGNyZWF0ZSB0aGUgY29sbGF0b3IgZm9yIDogZW5fVVNcbiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaW50IHJlc3VsdCA9IGNvbGwuY29tcGFyZShzb3VyY2UsIHRhcmdldCk7CisgICAgICAgIC8vIHJlc3VsdCBpcyAxLCBzZWNvbmRhcnkgZGlmZmVyZW5jZXMgb25seSBmb3IgaWdub3JhYmxlIHNwYWNlIGNoYXJhY3RlcnMKKyAgICAgICAgaWYgKHJlc3VsdCAhPSAxKSB7CisgICAgICAgICAgICBlcnJsbigiQ29tcGFyaW5nIHR3byBzdHJpbmdzIHdpdGggb25seSBzZWNvbmRhcnkgZGlmZmVyZW5jZXMgaW4gQyBmYWlsZWQuXG4iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gVG8gY29tcGFyZSB0aGVtIHdpdGgganVzdCBwcmltYXJ5IGRpZmZlcmVuY2VzIAorICAgICAgICBjb2xsLnNldFN0cmVuZ3RoKENvbGxhdG9yLlBSSU1BUlkpOworICAgICAgICByZXN1bHQgPSBjb2xsLmNvbXBhcmUoc291cmNlLCB0YXJnZXQpOworICAgICAgICAvLyByZXN1bHQgaXMgMCAKKyAgICAgICAgaWYgKHJlc3VsdCAhPSAwKSB7CisgICAgICAgICAgICBlcnJsbigiQ29tcGFyaW5nIHR3byBzdHJpbmdzIHdpdGggbm8gZGlmZmVyZW5jZXMgaW4gQyBmYWlsZWQuXG4iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSAKKyAgICAgICAgICAKKyAgICAgICAgLy8gTm93LCBkbyB0aGUgc2FtZSBjb21wYXJpc29uIHdpdGgga2V5cyAKKyAgICAgICAgQ29sbGF0aW9uS2V5IHNvdXJjZUtleU91dCwgdGFyZ2V0S2V5T3V0OworICAgICAgICBzb3VyY2VLZXlPdXQgPSBjb2xsLmdldENvbGxhdGlvbktleShzb3VyY2UpOworICAgICAgICB0YXJnZXRLZXlPdXQgPSBjb2xsLmdldENvbGxhdGlvbktleSh0YXJnZXQpOworICAgICAgICByZXN1bHQgPSBzb3VyY2VLZXlPdXQuY29tcGFyZVRvKHRhcmdldEtleU91dCk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gMCkgeworICAgICAgICAgICAgZXJybG4oIkNvbXBhcmluZyB0d28gc3RyaW5ncyB3aXRoIHNvcnQga2V5cyBpbiBDIGZhaWxlZC5cbiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8vVGVzdFN1cnJvZ2F0ZXMoKSBpcyBwb3J0ZWQgZnJvbSBjaW50bHRzdC9jYWxsY29sbC5jCisgICAgCisgICAgLyoqCisgICAgKiBUZXN0cyBzdXJyb2dhdGUgc3VwcG9ydC4KKyAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RTdXJyb2dhdGVzKCkgCisgICAgeworICAgIAlTdHJpbmcgcnVsZXMgPSAiJno8J1x1ZDgwMFx1ZGMwMCc8J1x1ZDgwMFx1ZGMwYVx1MDMwOCc8QSI7CisgICAgICAgIFN0cmluZyBzb3VyY2VbXSA9IHsieiIsCisgICAgICAgIAkgICAgICAgICAgICAgICAiXHVEODAwXHVEQzAwIiwKKyAgICAgICAgCSAgICAgICAgICAgICAgICJcdWQ4MDBcdWRjMGFcdTAzMDgiLAorICAgICAgICAJICAgICAgICAgICAgICAgIlx1ZDgwMFx1ZGMwMiIgICAgCisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICBTdHJpbmcgdGFyZ2V0W10gPSB7Ilx1RDgwMFx1REMwMCIsCisgICAgICAgIAkgICAgICAgICAgICAgICAiXHVkODAwXHVkYzBhXHUwMzA4IiwKKyAgICAgICAgCSAgICAgICAgICAgICAgICJBIiwKKyAgICAgICAgCSAgICAgICAgICAgICAgICJcdWQ4MDBcdWRjMDMiICAgIAorICAgICAgICB9OworICAgIAorICAgICAgICAvLyB0aGlzIHRlc3QgaXMgdG8gdmVyaWZ5IHRoZSBzdXBwbGVtZW50YXJ5IHNvcnQga2V5IG9yZGVyIGluIHRoZSBlbmdsaXNoIAorICAgICAgICAvLyBjb2xsYXRvcgorICAgICAgICBDb2xsYXRvciBlbkNvbGxhdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGVuQ29sbGF0aW9uID0gQ29sbGF0b3IuZ2V0SW5zdGFuY2UoTG9jYWxlLkVOR0xJU0gpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBGYWlsZWQgdG8gY3JlYXRlIHRoZSBjb2xsYXRvciBmb3IgRU5HTElTSCIpOworICAgICAgICAgICAgcmV0dXJuOyAgICAgICAKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbXlDb2xsYXRpb24uc2V0U3RyZW5ndGgoQ29sbGF0b3IuVEVSVElBUlkpOworICAgICAgICBpbnQgY291bnQgPSAwOworICAgICAgICAvLyBsb2dsbigic3RhcnQgb2YgZW5nbGlzaCBjb2xsYXRpb24gc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXJzIHRlc3RcbiIpOworICAgICAgICB3aGlsZSAoY291bnQgPCAyKSB7CisgICAgICAgICAgICBkb1Rlc3QoZW5Db2xsYXRpb24sIHNvdXJjZVtjb3VudF0sIHRhcmdldFtjb3VudF0sIC0xKTsKKyAgICAgICAgICAgIGNvdW50ICsrOworICAgICAgICB9CisgICAgICAgIGRvVGVzdChlbkNvbGxhdGlvbiwgc291cmNlW2NvdW50XSwgdGFyZ2V0W2NvdW50XSwgMSk7CisgICAgICAgICAgICAKKyAgICAgICAgLy8gbG9nbG4oInN0YXJ0IG9mIHRhaWxvcmVkIGNvbGxhdGlvbiBzdXBwbGVtZW50YXJ5IGNoYXJhY3RlcnMgdGVzdFxuIik7CisgICAgICAgIGNvdW50ID0gMDsKKyAgICAgICAgQ29sbGF0b3IgbmV3Q29sbGF0aW9uOworICAgICAgICB0cnkgeworICAgICAgICAgICAgbmV3Q29sbGF0aW9uID0gbmV3IFJ1bGVCYXNlZENvbGxhdG9yKHJ1bGVzKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogRmFpbGVkIHRvIGNyZWF0ZSB0aGUgY29sbGF0b3IgZm9yIHJ1bGVzIik7CisgICAgICAgICAgICByZXR1cm47ICAgICAgIAorICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyB0ZXN0cyBnZXR0aW5nIGNvbGxhdGlvbiBlbGVtZW50cyBmb3Igc3Vycm9nYXRlcyBmb3IgdGFpbG9yZWQgcnVsZXMgCisgICAgICAgIHdoaWxlIChjb3VudCA8IDQpIHsKKyAgICAgICAgICAgIGRvVGVzdChuZXdDb2xsYXRpb24sIHNvdXJjZVtjb3VudF0sIHRhcmdldFtjb3VudF0sIC0xKTsKKyAgICAgICAgICAgIGNvdW50ICsrOworICAgICAgICB9CisgICAgCisgICAgICAgIC8vIHRlc3RzIHRoYXQgXHVEODAxXHVEQzAxIHN0aWxsIGhhcyB0aGUgc2FtZSB2YWx1ZSwgbm90IGNoYW5nZWQgCisgICAgICAgIENvbGxhdGlvbktleSBlbktleSA9IGVuQ29sbGF0aW9uLmdldENvbGxhdGlvbktleShzb3VyY2VbM10pOworICAgICAgICBDb2xsYXRpb25LZXkgbmV3S2V5ID0gbmV3Q29sbGF0aW9uLmdldENvbGxhdGlvbktleShzb3VyY2VbM10pOworICAgICAgICBpbnQga2V5UmVzdWx0ID0gZW5LZXkuY29tcGFyZVRvKG5ld0tleSk7CisgICAgICAgIGlmKGtleVJlc3VsdCAhPSAwKSB7CisgICAgICAgICAgICBlcnJsbigiRmFpbGVkIDogbm9uLXRhaWxvcmVkIHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVycyBzaG91bGQgaGF2ZSB0aGUgc2FtZSB2YWx1ZVxuIik7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLy9UZXN0VmFyaWFibGVUb3AoKSBpcyBwb3J0ZWQgZnJvbSBjaW50bHRzdC9jYWxsY29sbC5jCisgICAgLyoqCisgICAgKiBUZXN0cyB0aGUgW3ZhcmlhYmxlIHRvcF0gdGFnIGluIHJ1bGUgc3ludGF4LiBTaW5jZSB0aGUgZGVmYXVsdCBbYWx0ZXJuYXRlXQorICAgICogdGFnIGhhcyB0aGUgdmFsdWUgc2hpZnRlZCwgYW55IGNvZGVwb2ludHMgYmVmb3JlIFt2YXJpYWJsZSB0b3BdIHNob3VsZCBnaXZlCisgICAgKiBhIHByaW1hcnkgY2Ugb2YgMC4KKyAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RWYXJpYWJsZVRvcCgpIHsKKyAgICAgICAgU3RyaW5nIHJ1bGUgPSAiJnogPSBbdmFyaWFibGUgdG9wXSI7CisgICAgICAgIENvbGxhdG9yICBteUNvbGw7CisgICAgICAgIENvbGxhdG9yICBlbkNvbGw7CisgICAgICAgIGNoYXJbXSBzb3VyY2UgPSBuZXcgY2hhclsxXTsKKyAgICAgICAgY2hhciBjaDsKKyAgICAgICAgaW50IGV4cGVjdGVkW10gPSB7MH07CisgICAgCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBlbkNvbGwgPSBDb2xsYXRvci5nZXRJbnN0YW5jZShMb2NhbGUuRU5HTElTSCk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiRVJST1I6IEZhaWxlZCB0byBjcmVhdGUgdGhlIGNvbGxhdG9yIGZvciBFTkdMSVNIIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHRyeXsKKyAgICAgICAgICAgIG15Q29sbCA9IG5ldyBSdWxlQmFzZWRDb2xsYXRvcihydWxlKTsKKyAgICAgICAgfSBjYXRjaChFeGNlcHRpb24gZSl7CisgICAgICAgICAgICBlcnJsbigiRmFpbCB0byBjcmVhdGUgUnVsZUJhc2VkQ29sbGF0b3Igd2l0aCBydWxlczoiICsgcnVsZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0gIAorICAgICAgICBlbkNvbGwuc2V0U3RyZW5ndGgoQ29sbGF0b3IuUFJJTUFSWSk7CisgICAgICAgIG15Q29sbC5zZXRTdHJlbmd0aChDb2xsYXRvci5QUklNQVJZKTsKKyAgICAgICAgCisgICAgICAgICgoUnVsZUJhc2VkQ29sbGF0b3IpZW5Db2xsKS5zZXRBbHRlcm5hdGVIYW5kbGluZ1NoaWZ0ZWQodHJ1ZSk7CisgICAgICAgICgoUnVsZUJhc2VkQ29sbGF0b3IpbXlDb2xsKS5zZXRBbHRlcm5hdGVIYW5kbGluZ1NoaWZ0ZWQodHJ1ZSk7CisgICAgICAgIAorICAgICAgICBpZigoKFJ1bGVCYXNlZENvbGxhdG9yKWVuQ29sbCkuaXNBbHRlcm5hdGVIYW5kbGluZ1NoaWZ0ZWQoKSAhPSB0cnVlKSB7CisgICAgICAgICAgICBlcnJsbigiRVJST1I6IEFMVEVSTkFURV9IQU5ETElORyB2YWx1ZSBjYW4gbm90IGJlIHNldCB0byBTSElGVEVEXG4iKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gc3BhY2UgaXMgc3VwcG9zZWQgdG8gYmUgYSB2YXJpYWJsZSAKKyAgICAgICAgQ29sbGF0aW9uS2V5IGtleSA9IGVuQ29sbC5nZXRDb2xsYXRpb25LZXkoIiAiKTsgICAKKyAgICAgICAgYnl0ZVtdIHJlc3VsdCA9IGtleS50b0J5dGVBcnJheSgpOyAKKyAgICAgICAgCisgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCByZXN1bHQubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGlmKHJlc3VsdFtpXSE9IGV4cGVjdGVkW2ldKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBTSElGVEVEIGFsdGVybmF0ZSBkb2VzIG5vdCByZXR1cm4gMCBmb3IgcHJpbWFyeSBvZiBzcGFjZVxuIik7ICAKKyAgICAgICAgICAgICAgICBicmVhazsgIAorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBjaCA9ICdhJzsKKyAgICAgICAgd2hpbGUgKGNoIDwgJ3onKSB7CisgICAgICAgICAgICBzb3VyY2VbMF0gPSBjaDsKKyAgICAgICAgICAgIGtleSA9IG15Q29sbC5nZXRDb2xsYXRpb25LZXkobmV3IFN0cmluZyhzb3VyY2UpKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGtleS50b0J5dGVBcnJheSgpOworICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYocmVzdWx0W2ldIT0gZXhwZWN0ZWRbaV0pIHsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBTSElGVEVEIGFsdGVybmF0ZSBkb2VzIG5vdCByZXR1cm4gMCBmb3IgcHJpbWFyeSBvZiBzcGFjZVxuIik7ICAKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7ICAKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjaCArKzsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0SkIxNDAxKCkgeworICAgICAgICBDb2xsYXRvciAgICAgbXlDb2xsYXRvciA9IG51bGw7CisgICAgICAgIGNoYXJbXSBORkRfVW5zYWZlU3RhcnRDaGFycyA9IHsKKyAgICAgICAgICAgIDB4MGY3MywgICAgICAgICAgLy8gVGliZXRhbiBWb3dlbCBTaWduIElJIAorICAgICAgICAgICAgMHgwZjc1LCAgICAgICAgICAvLyBUaWJldGFuIFZvd2VsIFNpZ24gVVUgCisgICAgICAgICAgICAweDBmODEsICAgICAgICAgIC8vIFRpYmV0YW4gVm93ZWwgU2lnbiBSZXZlcnNlZCBJSSAKKyAgICAgICAgICAgIDAKKyAgICAgICAgfTsKKyAgICAgICAgaW50IGk7CisgICAgCisgICAgICAgIHRyeXsKKyAgICAgICAgICAgIG15Q29sbGF0b3IgPSBDb2xsYXRvci5nZXRJbnN0YW5jZShMb2NhbGUuRU5HTElTSCk7CisgICAgICAgIH0gY2F0Y2goRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogRmFpbGVkIHRvIGNyZWF0ZSB0aGUgY29sbGF0b3IgZm9yIEVOR0xJU0giKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBteUNvbGxhdG9yLnNldERlY29tcG9zaXRpb24oQ29sbGF0b3IuQ0FOT05JQ0FMX0RFQ09NUE9TSVRJT04pOworICAgICAgICBmb3IgKGk9MDsgOyBpKyspIHsKKyAgICAgICAgICAgIC8vIEdldCB0aGUgbmV4dCBmdW5ueSBjaGFyYWN0ZXIgdG8gYmUgdGVzdGVkLCBhbmQgc2V0IHVwIHRoZQorICAgICAgICAgICAgLy8gdGhyZWUgdGVzdCBzdHJpbmdzIFgsIFksIFosIGNvbnNpc3Rpbmcgb2YgYW4gQS1ncmF2ZSArIHRlc3QgY2hhciwKKyAgICAgICAgICAgIC8vIGluIG9yaWdpbmFsIGZvcm0sIE5GRCwgYW5kIHRoZW4gTkZDIGZvcm0uCisgICAgICAgICAgICBjaGFyIGMgPSBORkRfVW5zYWZlU3RhcnRDaGFyc1tpXTsKKyAgICAgICAgICAgIGlmIChjPT0wKSB7YnJlYWs7fQorICAgICAgICAgICAgCisgICAgICAgICAgICBTdHJpbmcgeCA9ICJcdTAwQzAiICsgYzsgICAgICAgLy8gXHUwMEMwIGlzIEEgR3JhdmUKKyAgICAgICAgICAgIFN0cmluZyB5OworICAgICAgICAgICAgU3RyaW5nIHo7CisgICAgCisgICAgICAgICAgICB0cnl7CisgICAgICAgICAgICAgICAgeSA9IE5vcm1hbGl6ZXIuZGVjb21wb3NlKHgsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICB6ID0gTm9ybWFsaXplci5kZWNvbXBvc2UoeSwgdHJ1ZSk7CisgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJFUlJPUjogRmFpbGVkIHRvIG5vcm1hbGl6ZSB0ZXN0IG9mIGNoYXJhY3RlciIgKyBjKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgCisgICAgICAgICAgICAvLyBDb2xsYXRpb24gdGVzdC4gIEFsbCB0aHJlZSBzdHJpbmdzIHNob3VsZCBiZSBlcXVhbC4KKyAgICAgICAgICAgIC8vIGRvVGVzdCBkb2VzIGJvdGggc3RyY29sbCBhbmQgc29ydCBrZXlzLCB3aXRoIHBhcmFtcyBpbiBib3RoIG9yZGVycy4KKyAgICAgICAgICAgIGRvVGVzdChteUNvbGxhdG9yLCB4LCB5LCAwKTsKKyAgICAgICAgICAgIGRvVGVzdChteUNvbGxhdG9yLCB4LCB6LCAwKTsKKyAgICAgICAgICAgIGRvVGVzdChteUNvbGxhdG9yLCB5LCB6LCAwKTsgCisgICAgCisgICAgICAgICAgICAvLyBSdW4gY29sbGF0aW9uIGVsZW1lbnQgaXRlcmF0b3JzIG92ZXIgdGhlIHRocmVlIHN0cmluZ3MuICBSZXN1bHRzIHNob3VsZCBiZSBzYW1lIGZvciBlYWNoLgorICAgICAgICAgICAgIAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvciBjZWlYLCBjZWlZLCBjZWlaOworICAgICAgICAgICAgICAgIGludCBjZVgsIGNlWSwgY2VaOworICAgICAgICAgICAgICAgIGludCBqOworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIGNlaVggPSAoKFJ1bGVCYXNlZENvbGxhdG9yKW15Q29sbGF0b3IpLmdldENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvcih4KTsKKyAgICAgICAgICAgICAgICAgICAgY2VpWSA9ICgoUnVsZUJhc2VkQ29sbGF0b3IpbXlDb2xsYXRvcikuZ2V0Q29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yKHkpOworICAgICAgICAgICAgICAgICAgICBjZWlaID0gKChSdWxlQmFzZWRDb2xsYXRvcilteUNvbGxhdG9yKS5nZXRDb2xsYXRpb25FbGVtZW50SXRlcmF0b3Ioeik7CisgICAgICAgICAgICAgICAgfSBjYXRjaChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigiRVJST1I6IGdldENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvciBmYWlsZWQiKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgICAgICBmb3IgKGo9MDs7IGorKykgeworICAgICAgICAgICAgICAgICAgICB0cnl7CisgICAgICAgICAgICAgICAgICAgICAgICBjZVggPSBjZWlYLm5leHQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNlWSA9IGNlaVkubmV4dCgpOworICAgICAgICAgICAgICAgICAgICAgICAgY2VaID0gY2VpWi5uZXh0KCk7CisgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbigiRVJST1I6IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5uZXh0IGZhaWxlZCBmb3IgaXRlcmF0aW9uICIgKyBqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNlWCAhPSBjZVkgfHwgY2VZICE9IGNlWikgeworICAgICAgICAgICAgICAgICAgICAgICAgZXJybG4oIkVSUk9SOiB1Y29sX25leHQgZmFpbGVkIGZvciBpdGVyYXRpb24gIiArIGopOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGNlWCA9PSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuTlVMTE9SREVSKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvLyBtYWluIHRlc3QgbWV0aG9kIGNhbGxlZCB3aXRoIGRpZmZlcmVudCBzdHJlbmd0aHMsCisgICAgLy8gdGVzdHMgY29tcGFyaXNvbiBvZiBjdXN0dW0gY29sbGF0aW9uIHdpdGggZGlmZmVyZW50IHN0cmVuZ3RocworICAgIAorICAgIHByaXZhdGUgdm9pZCBkb1Rlc3QoQ29sbGF0b3IgY29sbGF0aW9uLCBjaGFyW10gc291cmNlLCBjaGFyW10gdGFyZ2V0LCBpbnQgcmVzdWx0KSB7CisgICAgICAgIFN0cmluZyBzID0gbmV3IFN0cmluZyhzb3VyY2UpOworICAgICAgICBTdHJpbmcgdCA9IG5ldyBTdHJpbmcodGFyZ2V0KTsKKyAgICAgICAgZG9UZXN0VmFyaWFudChjb2xsYXRpb24sIHMsIHQsIHJlc3VsdCk7CisgICAgICAgIGlmKHJlc3VsdCA9PSAtMSkgeworICAgICAgICAgICAgZG9UZXN0VmFyaWFudChjb2xsYXRpb24sIHQsIHMsIDEpOworICAgICAgICB9IGVsc2UgaWYocmVzdWx0ID09IDEpIHsKKyAgICAgICAgICAgIGRvVGVzdFZhcmlhbnQoY29sbGF0aW9uLCB0LCBzLCAtMSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkb1Rlc3RWYXJpYW50KGNvbGxhdGlvbiwgdCwgcywgMCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLy8gbWFpbiB0ZXN0IG1ldGhvZCBjYWxsZWQgd2l0aCBkaWZmZXJlbnQgc3RyZW5ndGhzLAorICAgIC8vIHRlc3RzIGNvbXBhcmlzb24gb2YgY3VzdHVtIGNvbGxhdGlvbiB3aXRoIGRpZmZlcmVudCBzdHJlbmd0aHMKKyAgICAKKyAgICBwcml2YXRlIHZvaWQgZG9UZXN0KENvbGxhdG9yIGNvbGxhdGlvbixTdHJpbmcgcywgU3RyaW5nIHQsIGludCByZXN1bHQpIHsKKyAgICAgICAgZG9UZXN0VmFyaWFudChjb2xsYXRpb24sIHMsIHQsIHJlc3VsdCk7CisgICAgICAgIGlmKHJlc3VsdCA9PSAtMSkgeworICAgICAgICAgICAgZG9UZXN0VmFyaWFudChjb2xsYXRpb24sIHQsIHMsIDEpOworICAgICAgICB9IGVsc2UgaWYocmVzdWx0ID09IDEpIHsKKyAgICAgICAgICAgIGRvVGVzdFZhcmlhbnQoY29sbGF0aW9uLCB0LCBzLCAtMSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkb1Rlc3RWYXJpYW50KGNvbGxhdGlvbiwgdCwgcywgMCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSB2b2lkIGRvVGVzdFZhcmlhbnQoQ29sbGF0b3IgY29sbGF0aW9uLCBTdHJpbmcgc291cmNlLCBTdHJpbmcgdGFyZ2V0LCBpbnQgcmVzdWx0KSB7CisgICAgICAgIGludCBjb21wYXJlUmVzdWx0ID0gY29sbGF0aW9uLmNvbXBhcmUoc291cmNlLCB0YXJnZXQpOworICAgICAgICBDb2xsYXRpb25LZXkgc3Jja2V5ICwgdGd0a2V5OworICAgICAgICBzcmNrZXkgPSBjb2xsYXRpb24uZ2V0Q29sbGF0aW9uS2V5KHNvdXJjZSk7CisgICAgICAgIHRndGtleSA9IGNvbGxhdGlvbi5nZXRDb2xsYXRpb25LZXkodGFyZ2V0KTsKKyAgICAgICAgaW50IGtleVJlc3VsdCA9IHNyY2tleS5jb21wYXJlVG8odGd0a2V5KTsKKyAgICAgICAgaWYgKGNvbXBhcmVSZXN1bHQgIT0gcmVzdWx0KSB7CisgICAgICAgICAgICBlcnJsbigiU3RyaW5nIGNvbXBhcmlzb24gZmFpbGVkIGluIHZhcmlhbnQgdGVzdFxuIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGtleVJlc3VsdCAhPSByZXN1bHQpIHsKKyAgICAgICAgICAgIGVycmxuKCJDb2xsYXRpb24ga2V5IGNvbXBhcmlzb24gZmFpbGVkIGluIHZhcmlhbnQgdGVzdFxuIik7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NvbGxhdG9yL0NvbGxhdGlvbkVuZ2xpc2hUZXN0LmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY29sbGF0b3IvQ29sbGF0aW9uRW5nbGlzaFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMThiNTRiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NvbGxhdG9yL0NvbGxhdGlvbkVuZ2xpc2hUZXN0LmphdmEKQEAgLTAsMCArMSw0MzEgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAgICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogJFNvdXJjZTogCisgKiAkRGF0ZTogCisgKiAkUmV2aXNpb246IAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKKy8qKiAKKyAqIFBvcnQgRnJvbTogICBJQ1U0QyB2Mi4xIDogQ29sbGF0ZS9Db2xsYXRpb25FbmdsaXNoVGVzdAorICogU291cmNlIEZpbGU6ICRJQ1U0Q1Jvb3Qvc291cmNlL3Rlc3QvaW50bHRlc3QvZW5jb2xsLmNwcAorICoqLworIAorcGFja2FnZSBjb20uaWJtLmljdS5kZXYudGVzdC5jb2xsYXRvcjsKKyAKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYudGVzdC4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuKjsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworIAorcHVibGljIGNsYXNzIENvbGxhdGlvbkVuZ2xpc2hUZXN0IGV4dGVuZHMgVGVzdEZtd2t7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbnsKKyAgICAgICAgbmV3IENvbGxhdGlvbkVuZ2xpc2hUZXN0KCkucnVuKGFyZ3MpOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBjaGFyW11bXSB0ZXN0U291cmNlQ2FzZXMgPSB7CisgICAgICAgIHsweDAwNjEgLyogJ2EnICovLCAweDAwNjIgLyogJ2InICovfSwKKyAgICAgICAgezB4MDA2MiAvKiAnYicgKi8sIDB4MDA2QyAvKiAnbCcgKi8sIDB4MDA2MSAvKiAnYScgKi8sIDB4MDA2MyAvKiAnYycgKi8sIDB4MDA2QiAvKiAnaycgKi8sIDB4MDAyRCAvKiAnLScgKi8sIDB4MDA2MiAvKiAnYicgKi8sIDB4MDA2OSAvKiAnaScgKi8sIDB4MDA3MiAvKiAncicgKi8sIDB4MDA2NCAvKiAnZCcgKi99LAorICAgICAgICB7MHgwMDYyIC8qICdiJyAqLywgMHgwMDZDIC8qICdsJyAqLywgMHgwMDYxIC8qICdhJyAqLywgMHgwMDYzIC8qICdjJyAqLywgMHgwMDZCIC8qICdrJyAqLywgMHgwMDIwIC8qICcgJyAqLywgMHgwMDYyIC8qICdiJyAqLywgMHgwMDY5IC8qICdpJyAqLywgMHgwMDcyIC8qICdyJyAqLywgMHgwMDY0IC8qICdkJyAqL30sCisgICAgICAgIHsweDAwNjIgLyogJ2InICovLCAweDAwNkMgLyogJ2wnICovLCAweDAwNjEgLyogJ2EnICovLCAweDAwNjMgLyogJ2MnICovLCAweDAwNkIgLyogJ2snICovLCAweDAwMkQgLyogJy0nICovLCAweDAwNjIgLyogJ2InICovLCAweDAwNjkgLyogJ2knICovLCAweDAwNzIgLyogJ3InICovLCAweDAwNjQgLyogJ2QnICovfSwKKyAgICAgICAgezB4MDA0OCAvKiAnSCcgKi8sIDB4MDA2NSAvKiAnZScgKi8sIDB4MDA2QyAvKiAnbCcgKi8sIDB4MDA2QyAvKiAnbCcgKi8sIDB4MDA2RiAvKiAnbycgKi99LAorICAgICAgICB7MHgwMDQxIC8qICdBJyAqLywgMHgwMDQyIC8qICdCJyAqLywgMHgwMDQzIC8qICdDJyAqL30sIAorICAgICAgICB7MHgwMDYxIC8qICdhJyAqLywgMHgwMDYyIC8qICdiJyAqLywgMHgwMDYzIC8qICdjJyAqL30sCisgICAgICAgIHsweDAwNjIgLyogJ2InICovLCAweDAwNkMgLyogJ2wnICovLCAweDAwNjEgLyogJ2EnICovLCAweDAwNjMgLyogJ2MnICovLCAweDAwNkIgLyogJ2snICovLCAweDAwNjIgLyogJ2InICovLCAweDAwNjkgLyogJ2knICovLCAweDAwNzIgLyogJ3InICovLCAweDAwNjQgLyogJ2QnICovfSwKKyAgICAgICAgezB4MDA2MiAvKiAnYicgKi8sIDB4MDA2QyAvKiAnbCcgKi8sIDB4MDA2MSAvKiAnYScgKi8sIDB4MDA2MyAvKiAnYycgKi8sIDB4MDA2QiAvKiAnaycgKi8sIDB4MDAyRCAvKiAnLScgKi8sIDB4MDA2MiAvKiAnYicgKi8sIDB4MDA2OSAvKiAnaScgKi8sIDB4MDA3MiAvKiAncicgKi8sIDB4MDA2NCAvKiAnZCcgKi99LAorICAgICAgICB7MHgwMDYyIC8qICdiJyAqLywgMHgwMDZDIC8qICdsJyAqLywgMHgwMDYxIC8qICdhJyAqLywgMHgwMDYzIC8qICdjJyAqLywgMHgwMDZCIC8qICdrJyAqLywgMHgwMDJEIC8qICctJyAqLywgMHgwMDYyIC8qICdiJyAqLywgMHgwMDY5IC8qICdpJyAqLywgMHgwMDcyIC8qICdyJyAqLywgMHgwMDY0IC8qICdkJyAqL30sCisgICAgICAgIHsweDAwNzAgLyogJ3AnICovLCAweDAwRUEsIDB4MDA2MyAvKiAnYycgKi8sIDB4MDA2OCAvKiAnaCcgKi8sIDB4MDA2NSAvKiAnZScgKi99LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIHsweDAwNzAgLyogJ3AnICovLCAweDAwRTksIDB4MDA2MyAvKiAnYycgKi8sIDB4MDA2OCAvKiAnaCcgKi8sIDB4MDBFOX0sCisgICAgICAgIHsweDAwQzQsIDB4MDA0MiAvKiAnQicgKi8sIDB4MDMwOCwgMHgwMDQzIC8qICdDJyAqLywgMHgwMzA4fSwKKyAgICAgICAgezB4MDA2MSAvKiAnYScgKi8sIDB4MDMwOCwgMHgwMDYyIC8qICdiJyAqLywgMHgwMDYzIC8qICdjJyAqL30sCisgICAgICAgIHsweDAwNzAgLyogJ3AnICovLCAweDAwRTksIDB4MDA2MyAvKiAnYycgKi8sIDB4MDA2OCAvKiAnaCcgKi8sIDB4MDA2NSAvKiAnZScgKi8sIDB4MDA3MiAvKiAncicgKi99LAorICAgICAgICB7MHgwMDcyIC8qICdyJyAqLywgMHgwMDZGIC8qICdvJyAqLywgMHgwMDZDIC8qICdsJyAqLywgMHgwMDY1IC8qICdlJyAqLywgMHgwMDczIC8qICdzJyAqL30sCisgICAgICAgIHsweDAwNjEgLyogJ2EnICovLCAweDAwNjIgLyogJ2InICovLCAweDAwNjMgLyogJ2MnICovfSwKKyAgICAgICAgezB4MDA0MSAvKiAnQScgKi99LAorICAgICAgICB7MHgwMDQxIC8qICdBJyAqL30sCisgICAgICAgIHsweDAwNjEgLyogJ2EnICovLCAweDAwNjIgLyogJ2InICovfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIHsweDAwNzQgLyogJ3QnICovLCAweDAwNjMgLyogJ2MnICovLCAweDAwNkYgLyogJ28nICovLCAweDAwNkQgLyogJ20nICovLCAweDAwNzAgLyogJ3AnICovLCAweDAwNjEgLyogJ2EnICovLCAweDAwNzIgLyogJ3InICovLCAweDAwNjUgLyogJ2UnICovLCAweDAwNzAgLyogJ3AnICovLCAweDAwNkMgLyogJ2wnICovLCAweDAwNjEgLyogJ2EnICovLCAweDAwNjkgLyogJ2knICovLCAweDAwNkUgLyogJ24nICovfSwKKyAgICAgICAgezB4MDA2MSAvKiAnYScgKi8sIDB4MDA2MiAvKiAnYicgKi99LCAKKyAgICAgICAgezB4MDA2MSAvKiAnYScgKi8sIDB4MDAyMyAvKiAnIycgKi8sIDB4MDA2MiAvKiAnYicgKi99LAorICAgICAgICB7MHgwMDYxIC8qICdhJyAqLywgMHgwMDIzIC8qICcjJyAqLywgMHgwMDYyIC8qICdiJyAqL30sCisgICAgICAgIHsweDAwNjEgLyogJ2EnICovLCAweDAwNjIgLyogJ2InICovLCAweDAwNjMgLyogJ2MnICovfSwKKyAgICAgICAgezB4MDA0MSAvKiAnQScgKi8sIDB4MDA2MiAvKiAnYicgKi8sIDB4MDA2MyAvKiAnYycgKi8sIDB4MDA2NCAvKiAnZCcgKi8sIDB4MDA2MSAvKiAnYScgKi99LAorICAgICAgICB7MHgwMDYxIC8qICdhJyAqLywgMHgwMDYyIC8qICdiJyAqLywgMHgwMDYzIC8qICdjJyAqLywgMHgwMDY0IC8qICdkJyAqLywgMHgwMDYxIC8qICdhJyAqL30sCisgICAgICAgIHsweDAwNjEgLyogJ2EnICovLCAweDAwNjIgLyogJ2InICovLCAweDAwNjMgLyogJ2MnICovLCAweDAwNjQgLyogJ2QnICovLCAweDAwNjEgLyogJ2EnICovfSwKKyAgICAgICAgezB4MDBFNiwgMHgwMDYyIC8qICdiJyAqLywgMHgwMDYzIC8qICdjJyAqLywgMHgwMDY0IC8qICdkJyAqLywgMHgwMDYxIC8qICdhJyAqL30sCisgICAgICAgIHsweDAwRTQsIDB4MDA2MiAvKiAnYicgKi8sIDB4MDA2MyAvKiAnYycgKi8sIDB4MDA2NCAvKiAnZCcgKi8sIDB4MDA2MSAvKiAnYScgKi99LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIHsweDAwNjEgLyogJ2EnICovLCAweDAwNjIgLyogJ2InICovLCAweDAwNjMgLyogJ2MnICovfSwKKyAgICAgICAgezB4MDA2MSAvKiAnYScgKi8sIDB4MDA2MiAvKiAnYicgKi8sIDB4MDA2MyAvKiAnYycgKi99LAorICAgICAgICB7MHgwMDYxIC8qICdhJyAqLywgMHgwMDYyIC8qICdiJyAqLywgMHgwMDYzIC8qICdjJyAqL30sCisgICAgICAgIHsweDAwNjEgLyogJ2EnICovLCAweDAwNjIgLyogJ2InICovLCAweDAwNjMgLyogJ2MnICovfSwKKyAgICAgICAgezB4MDA2MSAvKiAnYScgKi8sIDB4MDA2MiAvKiAnYicgKi8sIDB4MDA2MyAvKiAnYycgKi99LAorICAgICAgICB7MHgwMDYxIC8qICdhJyAqLywgMHgwMDYzIC8qICdjJyAqLywgMHgwMDQ4IC8qICdIJyAqLywgMHgwMDYzIC8qICdjJyAqL30sCisgICAgICAgIHsweDAwNjEgLyogJ2EnICovLCAweDAzMDgsIDB4MDA2MiAvKiAnYicgKi8sIDB4MDA2MyAvKiAnYycgKi99LAorICAgICAgICB7MHgwMDc0IC8qICd0JyAqLywgMHgwMDY4IC8qICdoJyAqLywgMHgwMDY5IC8qICdpJyAqLywgMHgwMzAyLCAweDAwNzMgLyogJ3MnICovfSwKKyAgICAgICAgezB4MDA3MCAvKiAncCcgKi8sIDB4MDBFQSwgMHgwMDYzIC8qICdjJyAqLywgMHgwMDY4IC8qICdoJyAqLywgMHgwMDY1IC8qICdlJyAqL30sCisgICAgICAgIHsweDAwNjEgLyogJ2EnICovLCAweDAwNjIgLyogJ2InICovLCAweDAwNjMgLyogJ2MnICovfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgezB4MDA2MSAvKiAnYScgKi8sIDB4MDA2MiAvKiAnYicgKi8sIDB4MDA2MyAvKiAnYycgKi99LAorICAgICAgICB7MHgwMDYxIC8qICdhJyAqLywgMHgwMDYyIC8qICdiJyAqLywgMHgwMDYzIC8qICdjJyAqL30sCisgICAgICAgIHsweDAwNjEgLyogJ2EnICovLCAweDAwRTYsIDB4MDA2MyAvKiAnYycgKi99LAorICAgICAgICB7MHgwMDYxIC8qICdhJyAqLywgMHgwMDYyIC8qICdiJyAqLywgMHgwMDYzIC8qICdjJyAqL30sCisgICAgICAgIHsweDAwNjEgLyogJ2EnICovLCAweDAwNjIgLyogJ2InICovLCAweDAwNjMgLyogJ2MnICovfSwKKyAgICAgICAgezB4MDA2MSAvKiAnYScgKi8sIDB4MDBFNiwgMHgwMDYzIC8qICdjJyAqL30sCisgICAgICAgIHsweDAwNjEgLyogJ2EnICovLCAweDAwNjIgLyogJ2InICovLCAweDAwNjMgLyogJ2MnICovfSwKKyAgICAgICAgezB4MDA2MSAvKiAnYScgKi8sIDB4MDA2MiAvKiAnYicgKi8sIDB4MDA2MyAvKiAnYycgKi99LCAgICAgICAgICAgICAgIAorICAgICAgICB7MHgwMDcwIC8qICdwJyAqLywgMHgwMEU5LCAweDAwNjMgLyogJ2MnICovLCAweDAwNjggLyogJ2gnICovLCAweDAwRTl9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0OQorICAgIH07CisgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgY2hhcltdW10gdGVzdFRhcmdldENhc2VzID0geworICAgICAgICB7MHgwMDYxIC8qICdhJyAqLywgMHgwMDYyIC8qICdiJyAqLywgMHgwMDYzIC8qICdjJyAqL30sCisgICAgICAgIHsweDAwNjIgLyogJ2InICovLCAweDAwNkMgLyogJ2wnICovLCAweDAwNjEgLyogJ2EnICovLCAweDAwNjMgLyogJ2MnICovLCAweDAwNkIgLyogJ2snICovLCAweDAwNjIgLyogJ2InICovLCAweDAwNjkgLyogJ2knICovLCAweDAwNzIgLyogJ3InICovLCAweDAwNjQgLyogJ2QnICovfSwKKyAgICAgICAgezB4MDA2MiAvKiAnYicgKi8sIDB4MDA2QyAvKiAnbCcgKi8sIDB4MDA2MSAvKiAnYScgKi8sIDB4MDA2MyAvKiAnYycgKi8sIDB4MDA2QiAvKiAnaycgKi8sIDB4MDAyRCAvKiAnLScgKi8sIDB4MDA2MiAvKiAnYicgKi8sIDB4MDA2OSAvKiAnaScgKi8sIDB4MDA3MiAvKiAncicgKi8sIDB4MDA2NCAvKiAnZCcgKi99LAorICAgICAgICB7MHgwMDYyIC8qICdiJyAqLywgMHgwMDZDIC8qICdsJyAqLywgMHgwMDYxIC8qICdhJyAqLywgMHgwMDYzIC8qICdjJyAqLywgMHgwMDZCIC8qICdrJyAqL30sCisgICAgICAgIHsweDAwNjggLyogJ2gnICovLCAweDAwNjUgLyogJ2UnICovLCAweDAwNkMgLyogJ2wnICovLCAweDAwNkMgLyogJ2wnICovLCAweDAwNkYgLyogJ28nICovfSwKKyAgICAgICAgezB4MDA0MSAvKiAnQScgKi8sIDB4MDA0MiAvKiAnQicgKi8sIDB4MDA0MyAvKiAnQycgKi99LAorICAgICAgICB7MHgwMDQxIC8qICdBJyAqLywgMHgwMDQyIC8qICdCJyAqLywgMHgwMDQzIC8qICdDJyAqL30sCisgICAgICAgIHsweDAwNjIgLyogJ2InICovLCAweDAwNkMgLyogJ2wnICovLCAweDAwNjEgLyogJ2EnICovLCAweDAwNjMgLyogJ2MnICovLCAweDAwNkIgLyogJ2snICovLCAweDAwNjIgLyogJ2InICovLCAweDAwNjkgLyogJ2knICovLCAweDAwNzIgLyogJ3InICovLCAweDAwNjQgLyogJ2QnICovLCAweDAwNzMgLyogJ3MnICovfSwKKyAgICAgICAgezB4MDA2MiAvKiAnYicgKi8sIDB4MDA2QyAvKiAnbCcgKi8sIDB4MDA2MSAvKiAnYScgKi8sIDB4MDA2MyAvKiAnYycgKi8sIDB4MDA2QiAvKiAnaycgKi8sIDB4MDA2MiAvKiAnYicgKi8sIDB4MDA2OSAvKiAnaScgKi8sIDB4MDA3MiAvKiAncicgKi8sIDB4MDA2NCAvKiAnZCcgKi8sIDB4MDA3MyAvKiAncycgKi99LAorICAgICAgICB7MHgwMDYyIC8qICdiJyAqLywgMHgwMDZDIC8qICdsJyAqLywgMHgwMDYxIC8qICdhJyAqLywgMHgwMDYzIC8qICdjJyAqLywgMHgwMDZCIC8qICdrJyAqLywgMHgwMDYyIC8qICdiJyAqLywgMHgwMDY5IC8qICdpJyAqLywgMHgwMDcyIC8qICdyJyAqLywgMHgwMDY0IC8qICdkJyAqL30sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgezB4MDA3MCAvKiAncCcgKi8sIDB4MDBFOSwgMHgwMDYzIC8qICdjJyAqLywgMHgwMDY4IC8qICdoJyAqLywgMHgwMEU5fSwKKyAgICAgICAgezB4MDA3MCAvKiAncCcgKi8sIDB4MDBFOSwgMHgwMDYzIC8qICdjJyAqLywgMHgwMDY4IC8qICdoJyAqLywgMHgwMDY1IC8qICdlJyAqLywgMHgwMDcyIC8qICdyJyAqL30sCisgICAgICAgIHsweDAwQzQsIDB4MDA0MiAvKiAnQicgKi8sIDB4MDMwOCwgMHgwMDQzIC8qICdDJyAqLywgMHgwMzA4fSwKKyAgICAgICAgezB4MDA0MSAvKiAnQScgKi8sIDB4MDMwOCwgMHgwMDYyIC8qICdiJyAqLywgMHgwMDYzIC8qICdjJyAqL30sCisgICAgICAgIHsweDAwNzAgLyogJ3AnICovLCAweDAwRTksIDB4MDA2MyAvKiAnYycgKi8sIDB4MDA2OCAvKiAnaCcgKi8sIDB4MDA2NSAvKiAnZScgKi99LAorICAgICAgICB7MHgwMDcyIC8qICdyJyAqLywgMHgwMDZGIC8qICdvJyAqLywgMHgwMzAyLCAweDAwNkMgLyogJ2wnICovLCAweDAwNjUgLyogJ2UnICovfSwKKyAgICAgICAgezB4MDA0MSAvKiAnQScgKi8sIDB4MDBFMSwgMHgwMDYzIC8qICdjJyAqLywgMHgwMDY0IC8qICdkJyAqL30sCisgICAgICAgIHsweDAwNDEgLyogJ0EnICovLCAweDAwRTEsIDB4MDA2MyAvKiAnYycgKi8sIDB4MDA2NCAvKiAnZCcgKi99LAorICAgICAgICB7MHgwMDYxIC8qICdhJyAqLywgMHgwMDYyIC8qICdiJyAqLywgMHgwMDYzIC8qICdjJyAqL30sCisgICAgICAgIHsweDAwNjEgLyogJ2EnICovLCAweDAwNjIgLyogJ2InICovLCAweDAwNjMgLyogJ2MnICovfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIHsweDAwNTQgLyogJ1QnICovLCAweDAwNDMgLyogJ0MnICovLCAweDAwNkYgLyogJ28nICovLCAweDAwNkQgLyogJ20nICovLCAweDAwNzAgLyogJ3AnICovLCAweDAwNjEgLyogJ2EnICovLCAweDAwNzIgLyogJ3InICovLCAweDAwNjUgLyogJ2UnICovLCAweDAwNTAgLyogJ1AnICovLCAweDAwNkMgLyogJ2wnICovLCAweDAwNjEgLyogJ2EnICovLCAweDAwNjkgLyogJ2knICovLCAweDAwNkUgLyogJ24nICovfSwKKyAgICAgICAgezB4MDA2MSAvKiAnYScgKi8sIDB4MDA0MiAvKiAnQicgKi8sIDB4MDA2MyAvKiAnYycgKi99LAorICAgICAgICB7MHgwMDYxIC8qICdhJyAqLywgMHgwMDIzIC8qICcjJyAqLywgMHgwMDQyIC8qICdCJyAqL30sCisgICAgICAgIHsweDAwNjEgLyogJ2EnICovLCAweDAwMjYgLyogJyYnICovLCAweDAwNjIgLyogJ2InICovfSwKKyAgICAgICAgezB4MDA2MSAvKiAnYScgKi8sIDB4MDAyMyAvKiAnIycgKi8sIDB4MDA2MyAvKiAnYycgKi99LAorICAgICAgICB7MHgwMDYxIC8qICdhJyAqLywgMHgwMDYyIC8qICdiJyAqLywgMHgwMDYzIC8qICdjJyAqLywgMHgwMDY0IC8qICdkJyAqLywgMHgwMDYxIC8qICdhJyAqL30sCisgICAgICAgIHsweDAwQzQsIDB4MDA2MiAvKiAnYicgKi8sIDB4MDA2MyAvKiAnYycgKi8sIDB4MDA2NCAvKiAnZCcgKi8sIDB4MDA2MSAvKiAnYScgKi99LAorICAgICAgICB7MHgwMEU0LCAweDAwNjIgLyogJ2InICovLCAweDAwNjMgLyogJ2MnICovLCAweDAwNjQgLyogJ2QnICovLCAweDAwNjEgLyogJ2EnICovfSwKKyAgICAgICAgezB4MDBDNCwgMHgwMDYyIC8qICdiJyAqLywgMHgwMDYzIC8qICdjJyAqLywgMHgwMDY0IC8qICdkJyAqLywgMHgwMDYxIC8qICdhJyAqL30sCisgICAgICAgIHsweDAwQzQsIDB4MDA2MiAvKiAnYicgKi8sIDB4MDA2MyAvKiAnYycgKi8sIDB4MDA2NCAvKiAnZCcgKi8sIDB4MDA2MSAvKiAnYScgKi99LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICB7MHgwMDYxIC8qICdhJyAqLywgMHgwMDYyIC8qICdiJyAqLywgMHgwMDIzIC8qICcjJyAqLywgMHgwMDYzIC8qICdjJyAqL30sCisgICAgICAgIHsweDAwNjEgLyogJ2EnICovLCAweDAwNjIgLyogJ2InICovLCAweDAwNjMgLyogJ2MnICovfSwKKyAgICAgICAgezB4MDA2MSAvKiAnYScgKi8sIDB4MDA2MiAvKiAnYicgKi8sIDB4MDAzRCAvKiAnPScgKi8sIDB4MDA2MyAvKiAnYycgKi99LAorICAgICAgICB7MHgwMDYxIC8qICdhJyAqLywgMHgwMDYyIC8qICdiJyAqLywgMHgwMDY0IC8qICdkJyAqL30sCisgICAgICAgIHsweDAwRTQsIDB4MDA2MiAvKiAnYicgKi8sIDB4MDA2MyAvKiAnYycgKi99LAorICAgICAgICB7MHgwMDYxIC8qICdhJyAqLywgMHgwMDQzIC8qICdDJyAqLywgMHgwMDQ4IC8qICdIJyAqLywgMHgwMDYzIC8qICdjJyAqL30sCisgICAgICAgIHsweDAwRTQsIDB4MDA2MiAvKiAnYicgKi8sIDB4MDA2MyAvKiAnYycgKi99LAorICAgICAgICB7MHgwMDc0IC8qICd0JyAqLywgMHgwMDY4IC8qICdoJyAqLywgMHgwMEVFLCAweDAwNzMgLyogJ3MnICovfSwKKyAgICAgICAgezB4MDA3MCAvKiAncCcgKi8sIDB4MDBFOSwgMHgwMDYzIC8qICdjJyAqLywgMHgwMDY4IC8qICdoJyAqLywgMHgwMEU5fSwKKyAgICAgICAgezB4MDA2MSAvKiAnYScgKi8sIDB4MDA0MiAvKiAnQicgKi8sIDB4MDA0MyAvKiAnQycgKi99LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgezB4MDA2MSAvKiAnYScgKi8sIDB4MDA2MiAvKiAnYicgKi8sIDB4MDA2NCAvKiAnZCcgKi99LAorICAgICAgICB7MHgwMEU0LCAweDAwNjIgLyogJ2InICovLCAweDAwNjMgLyogJ2MnICovfSwKKyAgICAgICAgezB4MDA2MSAvKiAnYScgKi8sIDB4MDBDNiwgMHgwMDYzIC8qICdjJyAqL30sCisgICAgICAgIHsweDAwNjEgLyogJ2EnICovLCAweDAwNDIgLyogJ0InICovLCAweDAwNjQgLyogJ2QnICovfSwKKyAgICAgICAgezB4MDBFNCwgMHgwMDYyIC8qICdiJyAqLywgMHgwMDYzIC8qICdjJyAqL30sCisgICAgICAgIHsweDAwNjEgLyogJ2EnICovLCAweDAwQzYsIDB4MDA2MyAvKiAnYycgKi99LAorICAgICAgICB7MHgwMDYxIC8qICdhJyAqLywgMHgwMDQyIC8qICdCJyAqLywgMHgwMDY0IC8qICdkJyAqL30sCisgICAgICAgIHsweDAwRTQsIDB4MDA2MiAvKiAnYicgKi8sIDB4MDA2MyAvKiAnYycgKi99LCAgICAgICAgICAKKyAgICAgICAgezB4MDA3MCAvKiAncCcgKi8sIDB4MDBFQSwgMHgwMDYzIC8qICdjJyAqLywgMHgwMDY4IC8qICdoJyAqLywgMHgwMDY1IC8qICdlJyAqL30KKyAgICB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0OQorCisgICAgcHJpdmF0ZSBzdGF0aWMgaW50W10gcmVzdWx0cyA9IHsKKyAgICAvLy0xOkxFU1M7IDA6RVFVQUw7IDE6R1JFQVRFUgorICAgICAgICAtMSwgCisgICAgICAgIC0xLCAvKkNvbGxhdG9yOjpHUkVBVEVSLCovCisgICAgICAgIC0xLAorICAgICAgICAxLAorICAgICAgICAxLAorICAgICAgICAwLAorICAgICAgICAtMSwKKyAgICAgICAgLTEsCisgICAgICAgIC0xLAorICAgICAgICAtMSwgLypDb2xsYXRvcjo6R1JFQVRFUiwqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAxMCAqLworICAgICAgICAxLAorICAgICAgICAtMSwKKyAgICAgICAgMCwKKyAgICAgICAgLTEsCisgICAgICAgIDEsCisgICAgICAgIDEsCisgICAgICAgIDEsCisgICAgICAgIC0xLAorICAgICAgICAtMSwKKyAgICAgICAgLTEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDIwICovCisgICAgICAgIC0xLAorICAgICAgICAtMSwKKyAgICAgICAgLTEsCisgICAgICAgIDEsCisgICAgICAgIDEsCisgICAgICAgIDEsCisgICAgICAgIC8qIFRlc3QgVGVydGlhcnkgID4gMjYgKi8KKyAgICAgICAgLTEsCisgICAgICAgIC0xLAorICAgICAgICAxLAorICAgICAgICAtMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogMzAgKi8KKyAgICAgICAgMSwKKyAgICAgICAgMCwKKyAgICAgICAgMSwKKyAgICAgICAgLTEsCisgICAgICAgIC0xLAorICAgICAgICAtMSwKKyAgICAgICAgLyogdGVzdCBpZGVudGljYWwgPiAzNiAqLworICAgICAgICAwLAorICAgICAgICAwLAorICAgICAgICAvKiB0ZXN0IHByaW1hcnkgPiAzOCAqLworICAgICAgICAwLAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDQwICovCisgICAgICAgIC0xLAorICAgICAgICAwLAorICAgICAgICAwLAorICAgICAgICAvKiB0ZXN0IHNlY29uZGFyeSA+IDQzICovCisgICAgICAgIC0xLAorICAgICAgICAtMSwKKyAgICAgICAgMCwKKyAgICAgICAgLTEsCisgICAgICAgIC0xLCAKKyAgICAgICAgLTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA0OQorICAgIH07CisKKyAgICBwcml2YXRlIHN0YXRpYyBjaGFyIFtdW10gdGVzdEJ1Z3MgPSB7CisgICAgICAgIHsweDYxfSwKKyAgICAgICAgezB4NDF9LAorICAgICAgICB7MHg2NX0sCisgICAgICAgIHsweDQ1fSwKKyAgICAgICAgezB4MDBlOX0sCisgICAgICAgIHsweDAwZTh9LAorICAgICAgICB7MHgwMGVhfSwKKyAgICAgICAgezB4MDBlYn0sCisgICAgICAgIHsweDY1LCAweDYxfSwKKyAgICAgICAgezB4Nzh9CisgICAgfTsKKworICAgIC8vIDB4MDMwMCBpcyBncmF2ZSwgMHgwMzAxIGlzIGFjdXRlCisgICAgLy8gdGhlIG9yZGVyIG9mIGVsZW1lbnRzIGluIHRoaXMgYXJyYXkgbXVzdCBiZSBkaWZmZXJlbnQgdGhhbiB0aGUgb3JkZXIgaW4gQ29sbGF0aW9uRnJlbmNoVGVzdAorICAgIHByaXZhdGUgc3RhdGljIGNoYXJbXVtdIHRlc3RBY3V0ZSA9IHsKKyAgICAgICAgezB4NjUsIDB4NjV9LAorICAgICAgICB7MHg2NSwgMHg2NSwgMHgwMzAxfSwKKyAgICAgICAgezB4NjUsIDB4NjUsIDB4MDMwMSwgMHgwMzAwfSwKKyAgICAgICAgezB4NjUsIDB4NjUsIDB4MDMwMH0sCisgICAgICAgIHsweDY1LCAweDY1LCAweDAzMDAsIDB4MDMwMX0sCisgICAgICAgIHsweDY1LCAweDAzMDEsIDB4NjV9LAorICAgICAgICB7MHg2NSwgMHgwMzAxLCAweDY1LCAweDAzMDF9LAorICAgICAgICB7MHg2NSwgMHgwMzAxLCAweDY1LCAweDAzMDEsIDB4MDMwMH0sCisgICAgICAgIHsweDY1LCAweDAzMDEsIDB4NjUsIDB4MDMwMH0sCisgICAgICAgIHsweDY1LCAweDAzMDEsIDB4NjUsIDB4MDMwMCwgMHgwMzAxfSwKKyAgICAgICAgezB4NjUsIDB4MDMwMSwgMHgwMzAwLCAweDY1fSwKKyAgICAgICAgezB4NjUsIDB4MDMwMSwgMHgwMzAwLCAweDY1LCAweDAzMDF9LAorICAgICAgICB7MHg2NSwgMHgwMzAxLCAweDAzMDAsIDB4NjUsIDB4MDMwMSwgMHgwMzAwfSwKKyAgICAgICAgezB4NjUsIDB4MDMwMSwgMHgwMzAwLCAweDY1LCAweDAzMDB9LAorICAgICAgICB7MHg2NSwgMHgwMzAxLCAweDAzMDAsIDB4NjUsIDB4MDMwMCwgMHgwMzAxfSwKKyAgICAgICAgezB4NjUsIDB4MDMwMCwgMHg2NX0sCisgICAgICAgIHsweDY1LCAweDAzMDAsIDB4NjUsIDB4MDMwMX0sCisgICAgICAgIHsweDY1LCAweDAzMDAsIDB4NjUsIDB4MDMwMSwgMHgwMzAwfSwKKyAgICAgICAgezB4NjUsIDB4MDMwMCwgMHg2NSwgMHgwMzAwfSwKKyAgICAgICAgezB4NjUsIDB4MDMwMCwgMHg2NSwgMHgwMzAwLCAweDAzMDF9LAorICAgICAgICB7MHg2NSwgMHgwMzAwLCAweDAzMDEsIDB4NjV9LAorICAgICAgICB7MHg2NSwgMHgwMzAwLCAweDAzMDEsIDB4NjUsIDB4MDMwMX0sCisgICAgICAgIHsweDY1LCAweDAzMDAsIDB4MDMwMSwgMHg2NSwgMHgwMzAxLCAweDAzMDB9LAorICAgICAgICB7MHg2NSwgMHgwMzAwLCAweDAzMDEsIDB4NjUsIDB4MDMwMH0sCisgICAgICAgIHsweDY1LCAweDAzMDAsIDB4MDMwMSwgMHg2NSwgMHgwMzAwLCAweDAzMDF9CisgICAgfTsKKworICAgIHByaXZhdGUgc3RhdGljIGNoYXJbXVtdIHRlc3RNb3JlID0geworICAgICAgICB7MHgwMDYxIC8qICdhJyAqLywgMHgwMDY1IC8qICdlJyAqL30sCisgICAgICAgIHsweDAwNjEgLyogJ2EnICovLCAweDAwNjYgLyogJ2YnICovfSwKKyAgICAgICAgeyAweDAwRTZ9LAorICAgICAgICB7IDB4MDBDNn0sCisgICAgICAgIHsweDAwNkYgLyogJ28nICovLCAweDAwNjUgLyogJ2UnICovfSwKKyAgICAgICAgeyAweDAxNTN9LAorICAgICAgICB7IDB4MDE1Mn0sCisgICAgICAgIHsweDAwNkYgLyogJ28nICovLCAweDAwNjYgLyogJ2YnICovfSwKKyAgICB9OworICAgIAorICAgIHByaXZhdGUgQ29sbGF0b3IgbXlDb2xsYXRpb24gPSBudWxsOworICAgIAorICAgIHB1YmxpYyBDb2xsYXRpb25FbmdsaXNoVGVzdCgpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG15Q29sbGF0aW9uID0gQ29sbGF0b3IuZ2V0SW5zdGFuY2UoTG9jYWxlLkVOR0xJU0gpOworICAgICAgICB9IGNhdGNoKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiRVJST1I6IGluIGNyZWF0aW9uIG9mIGNvbGxhdG9yIG9mIEVOR0xJU0ggbG9jYWxlIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0gCisgICAgfQorICAgIAorICAgIAorICAgIC8vcGVyZm9ybXMgdGVzdCB3aXRoIHN0cmVuZ3RoIFBSSU1BUlkKKyAgICBwdWJsaWMgdm9pZCBUZXN0UHJpbWFyeSgpIHsKKyAgICAgICAgaW50IGk7CisgICAgICAgIG15Q29sbGF0aW9uLnNldFN0cmVuZ3RoKENvbGxhdG9yLlBSSU1BUlkpOworICAgICAgICBmb3IgKGkgPSAzODsgaSA8IDQzIDsgaSsrKSB7CisgICAgICAgICAgICBkb1Rlc3QodGVzdFNvdXJjZUNhc2VzWzM5XSwgdGVzdFRhcmdldENhc2VzWzM5XSwgcmVzdWx0c1szOV0pOworICAgICAgICB9ICAKKyAgICB9CisgICAgCisgICAgLy9wZXJmb3JtIHRlc3Qgd2l0aCBzdHJlbmd0aCBTRUNPTkRBUlkKKyAgICBwdWJsaWMgdm9pZCBUZXN0U2Vjb25kYXJ5KCkgeworICAgICAgICBpbnQgaTsKKyAgICAgICAgbXlDb2xsYXRpb24uc2V0U3RyZW5ndGgoQ29sbGF0b3IuU0VDT05EQVJZKTsKKyAgICAgICAgZm9yIChpID0gNDM7IGkgPCA0OSA7IGkrKykgeworICAgICAgICAgICAgZG9UZXN0KHRlc3RTb3VyY2VDYXNlc1tpXSwgdGVzdFRhcmdldENhc2VzW2ldLCByZXN1bHRzW2ldKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vdGVzdCBhY3V0ZSBhbmQgZ3JhdmUgb3JkZXJpbmcgKGNvbXBhcmUgdG8gZnJlbmNoIGNvbGxhdGlvbikKKyAgICAgICAgaW50IGo7CisgICAgICAgIGludCBleHBlY3RlZDsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHRlc3RBY3V0ZS5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IHRlc3RBY3V0ZS5sZW5ndGg7IGorKykgeworICAgICAgICAgICAgICAgIGxvZ2xuKCJpID0gIiArIGkgKyAiOyBqID0gIiArIGopOworICAgICAgICAgICAgICAgIGlmIChpIDwgIGopCisgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gLTE7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoaSA9PSBqKQorICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCA9IDA7CisgICAgICAgICAgICAgICAgZWxzZSAvLyAoaSA+ICBqKQorICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCA9IDE7CisgICAgICAgICAgICAgICAgZG9UZXN0KHRlc3RBY3V0ZVtpXSwgdGVzdEFjdXRlW2pdLCBleHBlY3RlZCApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8vcGVyZm9ybSB0ZXN0IHdpdGggc3RyZW5ndGggVEVSVElBUlkKKyAgICBwdWJsaWMgdm9pZCBUZXN0VGVydGlhcnkoKSB7CisgICAgICAgIGludCBpID0gMDsKKyAgICAgICAgbXlDb2xsYXRpb24uc2V0U3RyZW5ndGgoQ29sbGF0b3IuVEVSVElBUlkpOworICAgICAgICAvL2ZvciAoaSA9IDA7IGkgPCAzOCA7IGkrKykgIC8vYXR0ZW50aW9uOiB0aGVyZSBpcyBzb21ldGhpbmcgd3Jvbmcgd2l0aCAzNiwgMzcuCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCAzOCA7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgZG9UZXN0KHRlc3RTb3VyY2VDYXNlc1tpXSwgdGVzdFRhcmdldENhc2VzW2ldLCByZXN1bHRzW2ldKTsKKyAgICAgICAgfSAKKworICAgICAgICBpbnQgaiA9IDA7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCAxMDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKGogPSBpKzE7IGogPCAxMDsgaisrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRvVGVzdCh0ZXN0QnVnc1tpXSwgdGVzdEJ1Z3Nbal0sIC0xKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vdGVzdCBtb3JlIGludGVyZXN0aW5nIGNhc2VzCisgICAgICAgIGludCBleHBlY3RlZDsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHRlc3RNb3JlLmxlbmd0aDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgdGVzdE1vcmUubGVuZ3RoOyBqKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGkgPCAgaikKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSAtMTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChpID09IGopCisgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gMDsKKyAgICAgICAgICAgICAgICBlbHNlIC8vIChpID4gIGopCisgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gMTsKKyAgICAgICAgICAgICAgICBkb1Rlc3QodGVzdE1vcmVbaV0sIHRlc3RNb3JlW2pdLCBleHBlY3RlZCApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgLy8gbWFpbiB0ZXN0IHJvdXRpbmUsIHRlc3RzIHJ1bGVzIGRlZmluZWQgYnkgdGhlICJlbiIgbG9jYWxlCisgICAgcHJpdmF0ZSB2b2lkIGRvVGVzdChjaGFyW10gc291cmNlLCBjaGFyW10gdGFyZ2V0LCBpbnQgcmVzdWx0KXsKKyAgICAgICAgCisgICAgICAgIFN0cmluZyBzID0gbmV3IFN0cmluZyhzb3VyY2UpOworICAgICAgICBTdHJpbmcgdCA9IG5ldyBTdHJpbmcodGFyZ2V0KTsKKyAgICAgICAgaW50IGNvbXBhcmVSZXN1bHQgPSBteUNvbGxhdGlvbi5jb21wYXJlKHMsIHQpOworICAgICAgICBDb2xsYXRpb25LZXkgc29ydEtleTEsIHNvcnRLZXkyOworICAgICAgICBzb3J0S2V5MSA9IG15Q29sbGF0aW9uLmdldENvbGxhdGlvbktleShzKTsKKyAgICAgICAgc29ydEtleTIgPSBteUNvbGxhdGlvbi5nZXRDb2xsYXRpb25LZXkodCk7CisgICAgICAgIGludCBrZXlSZXN1bHQgPSBzb3J0S2V5MS5jb21wYXJlVG8oc29ydEtleTIpOworICAgICAgICByZXBvcnRDUmVzdWx0KHMsIHQsIHNvcnRLZXkxLCBzb3J0S2V5MiwgY29tcGFyZVJlc3VsdCwga2V5UmVzdWx0LCBjb21wYXJlUmVzdWx0LCByZXN1bHQpOworICAgICAgICAKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSB2b2lkIHJlcG9ydENSZXN1bHQoIFN0cmluZyBzb3VyY2UsIFN0cmluZyB0YXJnZXQsIENvbGxhdGlvbktleSBzb3VyY2VLZXksIENvbGxhdGlvbktleSB0YXJnZXRLZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb21wYXJlUmVzdWx0LCBpbnQga2V5UmVzdWx0LCBpbnQgaW5jUmVzdWx0LCBpbnQgZXhwZWN0ZWRSZXN1bHQgKXsKKyAgICAgICAgaWYgKGV4cGVjdGVkUmVzdWx0IDwgLTEgfHwgZXhwZWN0ZWRSZXN1bHQgPiAxKQorICAgICAgICB7CisgICAgICAgICAgICBlcnJsbigiKioqKiogaW52YWxpZCBjYWxsIHRvIHJlcG9ydENSZXN1bHQgKioqKiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYm9vbGVhbiBvazEgPSAoY29tcGFyZVJlc3VsdCA9PSBleHBlY3RlZFJlc3VsdCk7CisgICAgICAgIGJvb2xlYW4gb2syID0gKGtleVJlc3VsdCA9PSBleHBlY3RlZFJlc3VsdCk7CisgICAgICAgIGJvb2xlYW4gb2szID0gKGluY1Jlc3VsdCA9PSBleHBlY3RlZFJlc3VsdCk7CisKKyAgICAgICAgaWYgKG9rMSAmJiBvazIgJiYgb2szICYmICFpc1ZlcmJvc2UoKSl7CisgICAgICAgICAgICByZXR1cm47ICAgIAorICAgICAgICB9ZWxzZXsKKyAgICAgICAgICAgIFN0cmluZyBtc2cxID0gb2sxPyAiT2s6IGNvbXBhcmUoXCIiIDogIkZBSUw6IGNvbXBhcmUoXCIiOworICAgICAgICAgICAgU3RyaW5nIG1zZzIgPSAiXCIsIFwiIjsKKyAgICAgICAgICAgIFN0cmluZyBtc2czID0gIlwiKSByZXR1cm5lZCAiOworICAgICAgICAgICAgU3RyaW5nIG1zZzQgPSAiOyBleHBlY3RlZCAiOworICAgICAgICAgICAgCisgICAgICAgICAgICBTdHJpbmcgc0V4cGVjdCA9IG5ldyBTdHJpbmcoIiIpOworICAgICAgICAgICAgU3RyaW5nIHNSZXN1bHQgPSBuZXcgU3RyaW5nKCIiKTsKKyAgICAgICAgICAgIHNSZXN1bHQgPSBhcHBlbmRDb21wYXJlUmVzdWx0KGNvbXBhcmVSZXN1bHQsIHNSZXN1bHQpOworICAgICAgICAgICAgc0V4cGVjdCA9IGFwcGVuZENvbXBhcmVSZXN1bHQoZXhwZWN0ZWRSZXN1bHQsIHNFeHBlY3QpOworICAgICAgICAgICAgaWYgKG9rMSkgeworICAgICAgICAgICAgICAgIGxvZ2xuKG1zZzEgKyBzb3VyY2UgKyBtc2cyICsgdGFyZ2V0ICsgbXNnMyArIHNSZXN1bHQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBlcnJsbihtc2cxICsgc291cmNlICsgbXNnMiArIHRhcmdldCArIG1zZzMgKyBzUmVzdWx0ICsgbXNnNCArIHNFeHBlY3QpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBtc2cxID0gb2syID8gIk9rOiBrZXkoXCIiIDogIkZBSUw6IGtleShcIiI7CisgICAgICAgICAgICBtc2cyID0gIlwiKS5jb21wYXJlVG8oa2V5KFwiIjsKKyAgICAgICAgICAgIG1zZzMgPSAiXCIpKSByZXR1cm5lZCAiOworICAgICAgICAgICAgc1Jlc3VsdCA9IGFwcGVuZENvbXBhcmVSZXN1bHQoa2V5UmVzdWx0LCBzUmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChvazIpIHsKKyAgICAgICAgICAgICAgICBsb2dsbihtc2cxICsgc291cmNlICsgbXNnMiArIHRhcmdldCArIG1zZzMgKyBzUmVzdWx0KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZXJybG4obXNnMSArIHNvdXJjZSArIG1zZzIgKyB0YXJnZXQgKyBtc2czICsgc1Jlc3VsdCArIG1zZzQgKyBzRXhwZWN0KTsKKyAgICAgICAgICAgICAgICBtc2cxID0gIiAgIjsKKyAgICAgICAgICAgICAgICBtc2cyID0gIiB2cy4gIjsKKyAgICAgICAgICAgICAgICBlcnJsbihtc2cxICsgcHJldHRpZnkoc291cmNlS2V5KSArIG1zZzIgKyBwcmV0dGlmeSh0YXJnZXRLZXkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgbXNnMSA9IG9rMyA/ICJPazogaW5jQ29tcGFyZShcIiIgOiAiRkFJTDogaW5jQ29tcGFyZShcIiI7CisgICAgICAgICAgICBtc2cyID0gIlwiLCBcIiI7CisgICAgICAgICAgICBtc2czID0gIlwiKSByZXR1cm5lZCAiOworCisgICAgICAgICAgICBzUmVzdWx0ID0gYXBwZW5kQ29tcGFyZVJlc3VsdChpbmNSZXN1bHQsIHNSZXN1bHQpOworCisgICAgICAgICAgICBpZiAob2szKSB7CisgICAgICAgICAgICAgICAgbG9nbG4obXNnMSArIHNvdXJjZSArIG1zZzIgKyB0YXJnZXQgKyBtc2czICsgc1Jlc3VsdCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGVycmxuKG1zZzEgKyBzb3VyY2UgKyBtc2cyICsgdGFyZ2V0ICsgbXNnMyArIHNSZXN1bHQgKyBtc2c0ICsgc0V4cGVjdCk7CisgICAgICAgICAgICB9ICAgICAgICAgICAgICAgIAorICAgICAgICB9CisgICAgfQorICAgIAorICAgIHByaXZhdGUgU3RyaW5nIGFwcGVuZENvbXBhcmVSZXN1bHQoaW50IHJlc3VsdCwgU3RyaW5nIHRhcmdldCl7CisgICAgICAgIGlmIChyZXN1bHQgPT0gLTEpICAgLy9MRVNTCisgICAgICAgIHsKKyAgICAgICAgICAgIHRhcmdldCArPSAiTEVTUyI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAocmVzdWx0ID09IDApICAgLy9FUVVBTAorICAgICAgICB7CisgICAgICAgICAgICB0YXJnZXQgKz0gIkVRVUFMIjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChyZXN1bHQgPT0gMSkgICAvL0dSRUFURVIKKyAgICAgICAgeworICAgICAgICAgICAgdGFyZ2V0ICs9ICJHUkVBVEVSIjsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIFN0cmluZyBodWggPSAiPyI7CisKKyAgICAgICAgICAgIHRhcmdldCArPSBodWggKyByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRhcmdldDsKKyAgICB9CisgICAgCisgICAgU3RyaW5nIHByZXR0aWZ5KENvbGxhdGlvbktleSBzb3VyY2VLZXkpIHsKKyAgICAgICAgaW50IGk7CisgICAgICAgIGJ5dGVbXSBieXRlcz0gc291cmNlS2V5LnRvQnl0ZUFycmF5KCk7CisgICAgICAgIFN0cmluZyB0YXJnZXQgPSAiWyI7CisgICAgCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgdGFyZ2V0ICs9IEludGVnZXIudG9IZXhTdHJpbmcoYnl0ZXNbaV0pOworICAgICAgICAgICAgdGFyZ2V0ICs9ICIgIjsKKyAgICAgICAgfQorICAgICAgICB0YXJnZXQgKz0gIl0iOworICAgICAgICByZXR1cm4gdGFyZ2V0OworICAgIH0KKyB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NvbGxhdG9yL0NvbGxhdGlvbkZpbm5pc2hUZXN0LmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY29sbGF0b3IvQ29sbGF0aW9uRmlubmlzaFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYmZjZWRmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NvbGxhdG9yL0NvbGxhdGlvbkZpbm5pc2hUZXN0LmphdmEKQEAgLTAsMCArMSwxNzggQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAgICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogJFNvdXJjZTogCisgKiAkRGF0ZTogCisgKiAkUmV2aXNpb246IAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKKy8qKiAKKyAqIFBvcnQgRnJvbTogICBJQ1U0QyB2Mi4xIDogQ29sbGF0ZS9Db2xsYXRpb25GaW5uaXNoVGVzdAorICogU291cmNlIEZpbGU6ICRJQ1U0Q1Jvb3Qvc291cmNlL3Rlc3QvaW50bHRlc3QvZmljb2xsLmNwcAorICoqLworIAorcGFja2FnZSBjb20uaWJtLmljdS5kZXYudGVzdC5jb2xsYXRvcjsKKyAKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYudGVzdC4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuKjsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworIAorcHVibGljIGNsYXNzIENvbGxhdGlvbkZpbm5pc2hUZXN0IGV4dGVuZHMgVGVzdEZtd2sgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBuZXcgQ29sbGF0aW9uRmlubmlzaFRlc3QoKS5ydW4oYXJncyk7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgc3RhdGljIGNoYXJbXVtdIHRlc3RTb3VyY2VDYXNlcyA9IHsKKyAgICAgICAgezB4NzcsIDB4NjEsIDB4NzR9LAorICAgICAgICB7MHg3NiwgMHg2MSwgMHg3NH0sCisgICAgICAgIHsweDYxLCAweDAwRkMsIDB4NjIsIDB4NjUsIDB4NjMsIDB4NmJ9LAorICAgICAgICB7MHg0YywgMHgwMEU1LCAweDc2LCAweDY5fSwKKyAgICAgICAgezB4NzcsIDB4NjEsIDB4NzR9CisgICAgfTsKKworICAgIHByaXZhdGUgc3RhdGljIGNoYXJbXVtdIHRlc3RUYXJnZXRDYXNlcyA9IHsKKyAgICAgICAgezB4NzYsIDB4NjEsIDB4NzR9LAorICAgICAgICB7MHg3NywgMHg2MSwgMHg3OX0sCisgICAgICAgIHsweDYxLCAweDc4LCAweDYyLCAweDY1LCAweDYzLCAweDZifSwKKyAgICAgICAgezB4NGMsIDB4MDBFNCwgMHg3NywgMHg2NX0sCisgICAgICAgIHsweDc2LCAweDYxLCAweDc0fQorICAgIH07CisKKyAgICBwcml2YXRlIHN0YXRpYyBpbnRbXSByZXN1bHRzID0geworICAgICAgICAxLAorICAgICAgICAtMSwKKyAgICAgICAgMSwKKyAgICAgICAgLTEsCisgICAgICAgIC8vIHRlc3QgcHJpbWFyeSA+IDQKKyAgICAgICAgMCwKKyAgICB9OworCisgICAgcHJpdmF0ZSBDb2xsYXRvciBteUNvbGxhdGlvbiA9IG51bGw7CisgICAgCisgICAgcHVibGljIENvbGxhdGlvbkZpbm5pc2hUZXN0KCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgbXlDb2xsYXRpb24gPSBDb2xsYXRvci5nZXRJbnN0YW5jZShuZXcgTG9jYWxlKCJmaSIsICJGSSIpKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogaW4gY3JlYXRpb24gb2YgY29sbGF0b3Igb2YgRklOTklTSCBsb2NhbGUiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvLyBwZXJmb3JtIHRlc3RzIHdpdGggc3RyZW5ndGggUFJJTUFSWQorICAgIHB1YmxpYyB2b2lkIFRlc3RQcmltYXJ5KCkgeworICAgICAgICBpbnQgaSA9IDA7CisgICAgICAgIG15Q29sbGF0aW9uLnNldFN0cmVuZ3RoKENvbGxhdG9yLlBSSU1BUlkpOworICAgICAgICBmb3IoaSA9IDQ7IGkgPCA1OyBpKyspIHsKKyAgICAgICAgICAgIGRvVGVzdCh0ZXN0U291cmNlQ2FzZXNbaV0sIHRlc3RUYXJnZXRDYXNlc1tpXSwgcmVzdWx0c1tpXSk7ICAgIAorICAgICAgICB9ICAgICAgICAgCisgICAgfQorICAgIAorICAgIC8vIHBlcmZvcm0gdGVzdCB3aXRoIHN0cmVuZ3RoIFRFUlRJQVJZCisgICAgcHVibGljIHZvaWQgVGVzdFRlcnRpYXJ5KCkgeworICAgICAgICBpbnQgaSA9IDA7CisgICAgICAgIG15Q29sbGF0aW9uLnNldFN0cmVuZ3RoKENvbGxhdG9yLlRFUlRJQVJZKTsKKyAgICAgICAgZm9yKGkgPSAwOyBpIDwgNDsgaSsrICkgeworICAgICAgICAgICAgZG9UZXN0KHRlc3RTb3VyY2VDYXNlc1tpXSwgdGVzdFRhcmdldENhc2VzW2ldLCByZXN1bHRzW2ldKTsKKyAgICAgICAgfSAgICAKKyAgICB9CisgICAgCisgICAgLy8gbWFpbiB0ZXN0IHJvdXRpbmUsIHRlc3RzIHJ1bGVzIHNwZWNpZmljIHRvIHRoZSBmaW5pc2ggbG9jYWxlCisgICAgcHJpdmF0ZSB2b2lkIGRvVGVzdChjaGFyW10gc291cmNlLCBjaGFyW10gdGFyZ2V0LCBpbnQgcmVzdWx0KSB7CisgICAgICAgIFN0cmluZyBzID0gbmV3IFN0cmluZyhzb3VyY2UpOworICAgICAgICBTdHJpbmcgdCA9IG5ldyBTdHJpbmcodGFyZ2V0KTsKKyAgICAgICAgaW50IGNvbXBhcmVSZXN1bHQgPSBteUNvbGxhdGlvbi5jb21wYXJlKHMsIHQpOworICAgICAgICBDb2xsYXRpb25LZXkgc29ydEtleTEsIHNvcnRLZXkyOworICAgICAgICBzb3J0S2V5MSA9IG15Q29sbGF0aW9uLmdldENvbGxhdGlvbktleShzKTsKKyAgICAgICAgc29ydEtleTIgPSBteUNvbGxhdGlvbi5nZXRDb2xsYXRpb25LZXkodCk7CisgICAgICAgIGludCBrZXlSZXN1bHQgPSBzb3J0S2V5MS5jb21wYXJlVG8oc29ydEtleTIpOworICAgICAgICByZXBvcnRDUmVzdWx0KHMsIHQsIHNvcnRLZXkxLCBzb3J0S2V5MiwgY29tcGFyZVJlc3VsdCwga2V5UmVzdWx0LCBjb21wYXJlUmVzdWx0LCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHZvaWQgcmVwb3J0Q1Jlc3VsdCggU3RyaW5nIHNvdXJjZSwgU3RyaW5nIHRhcmdldCwgQ29sbGF0aW9uS2V5IHNvdXJjZUtleSwgQ29sbGF0aW9uS2V5IHRhcmdldEtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvbXBhcmVSZXN1bHQsIGludCBrZXlSZXN1bHQsIGludCBpbmNSZXN1bHQsIGludCBleHBlY3RlZFJlc3VsdCApIHsKKyAgICAgICAgaWYgKGV4cGVjdGVkUmVzdWx0IDwgLTEgfHwgZXhwZWN0ZWRSZXN1bHQgPiAxKSB7CisgICAgICAgICAgICBlcnJsbigiKioqKiogaW52YWxpZCBjYWxsIHRvIHJlcG9ydENSZXN1bHQgKioqKiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYm9vbGVhbiBvazEgPSAoY29tcGFyZVJlc3VsdCA9PSBleHBlY3RlZFJlc3VsdCk7CisgICAgICAgIGJvb2xlYW4gb2syID0gKGtleVJlc3VsdCA9PSBleHBlY3RlZFJlc3VsdCk7CisgICAgICAgIGJvb2xlYW4gb2szID0gKGluY1Jlc3VsdCA9PSBleHBlY3RlZFJlc3VsdCk7CisKKyAgICAgICAgaWYgKG9rMSAmJiBvazIgJiYgb2szICYmICFpc1ZlcmJvc2UoKSkgeworICAgICAgICAgICAgcmV0dXJuOyAgICAKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFN0cmluZyBtc2cxID0gb2sxPyAiT2s6IGNvbXBhcmUoXCIiIDogIkZBSUw6IGNvbXBhcmUoXCIiOworICAgICAgICAgICAgU3RyaW5nIG1zZzIgPSAiXCIsIFwiIjsKKyAgICAgICAgICAgIFN0cmluZyBtc2czID0gIlwiKSByZXR1cm5lZCAiOworICAgICAgICAgICAgU3RyaW5nIG1zZzQgPSAiOyBleHBlY3RlZCAiOworICAgICAgICAgICAgCisgICAgICAgICAgICBTdHJpbmcgc0V4cGVjdCA9IG5ldyBTdHJpbmcoIiIpOworICAgICAgICAgICAgU3RyaW5nIHNSZXN1bHQgPSBuZXcgU3RyaW5nKCIiKTsKKyAgICAgICAgICAgIHNSZXN1bHQgPSBhcHBlbmRDb21wYXJlUmVzdWx0KGNvbXBhcmVSZXN1bHQsIHNSZXN1bHQpOworICAgICAgICAgICAgc0V4cGVjdCA9IGFwcGVuZENvbXBhcmVSZXN1bHQoZXhwZWN0ZWRSZXN1bHQsIHNFeHBlY3QpOworICAgICAgICAgICAgaWYgKG9rMSkgeworICAgICAgICAgICAgICAgIGxvZ2xuKG1zZzEgKyBzb3VyY2UgKyBtc2cyICsgdGFyZ2V0ICsgbXNnMyArIHNSZXN1bHQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBlcnJsbihtc2cxICsgc291cmNlICsgbXNnMiArIHRhcmdldCArIG1zZzMgKyBzUmVzdWx0ICsgbXNnNCArIHNFeHBlY3QpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBtc2cxID0gb2syID8gIk9rOiBrZXkoXCIiIDogIkZBSUw6IGtleShcIiI7CisgICAgICAgICAgICBtc2cyID0gIlwiKS5jb21wYXJlVG8oa2V5KFwiIjsKKyAgICAgICAgICAgIG1zZzMgPSAiXCIpKSByZXR1cm5lZCAiOworICAgICAgICAgICAgc1Jlc3VsdCA9IGFwcGVuZENvbXBhcmVSZXN1bHQoa2V5UmVzdWx0LCBzUmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChvazIpIHsKKyAgICAgICAgICAgICAgICBsb2dsbihtc2cxICsgc291cmNlICsgbXNnMiArIHRhcmdldCArIG1zZzMgKyBzUmVzdWx0KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZXJybG4obXNnMSArIHNvdXJjZSArIG1zZzIgKyB0YXJnZXQgKyBtc2czICsgc1Jlc3VsdCArIG1zZzQgKyBzRXhwZWN0KTsKKyAgICAgICAgICAgICAgICBtc2cxID0gIiAgIjsKKyAgICAgICAgICAgICAgICBtc2cyID0gIiB2cy4gIjsKKyAgICAgICAgICAgICAgICBlcnJsbihtc2cxICsgcHJldHRpZnkoc291cmNlS2V5KSArIG1zZzIgKyBwcmV0dGlmeSh0YXJnZXRLZXkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgbXNnMSA9IG9rMyA/ICJPazogaW5jQ29tcGFyZShcIiIgOiAiRkFJTDogaW5jQ29tcGFyZShcIiI7CisgICAgICAgICAgICBtc2cyID0gIlwiLCBcIiI7CisgICAgICAgICAgICBtc2czID0gIlwiKSByZXR1cm5lZCAiOworCisgICAgICAgICAgICBzUmVzdWx0ID0gYXBwZW5kQ29tcGFyZVJlc3VsdChpbmNSZXN1bHQsIHNSZXN1bHQpOworCisgICAgICAgICAgICBpZiAob2szKSB7CisgICAgICAgICAgICAgICAgbG9nbG4obXNnMSArIHNvdXJjZSArIG1zZzIgKyB0YXJnZXQgKyBtc2czICsgc1Jlc3VsdCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGVycmxuKG1zZzEgKyBzb3VyY2UgKyBtc2cyICsgdGFyZ2V0ICsgbXNnMyArIHNSZXN1bHQgKyBtc2c0ICsgc0V4cGVjdCk7CisgICAgICAgICAgICB9ICAgICAgICAgICAgICAgCisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBTdHJpbmcgYXBwZW5kQ29tcGFyZVJlc3VsdChpbnQgcmVzdWx0LCBTdHJpbmcgdGFyZ2V0KSB7CisgICAgICAgIGlmIChyZXN1bHQgPT0gLTEpIHsKKyAgICAgICAgICAgIHRhcmdldCArPSAiTEVTUyI7CisgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IDApIHsKKyAgICAgICAgICAgIHRhcmdldCArPSAiRVFVQUwiOworICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSAxKSB7CisgICAgICAgICAgICB0YXJnZXQgKz0gIkdSRUFURVIiOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgU3RyaW5nIGh1aCA9ICI/IjsKKyAgICAgICAgICAgIHRhcmdldCArPSBodWggKyByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRhcmdldDsKKyAgICB9CisgICAgCisgICAgU3RyaW5nIHByZXR0aWZ5KENvbGxhdGlvbktleSBzb3VyY2VLZXkpIHsKKyAgICAgICAgaW50IGk7CisgICAgICAgIGJ5dGVbXSBieXRlcz0gc291cmNlS2V5LnRvQnl0ZUFycmF5KCk7CisgICAgICAgIFN0cmluZyB0YXJnZXQgPSAiWyI7CisgICAgCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgdGFyZ2V0ICs9IEludGVnZXIudG9IZXhTdHJpbmcoYnl0ZXNbaV0pOworICAgICAgICAgICAgdGFyZ2V0ICs9ICIgIjsKKyAgICAgICAgfQorICAgICAgICB0YXJnZXQgKz0gIl0iOworICAgICAgICByZXR1cm4gdGFyZ2V0OworICAgIH0KK30KKyAgICAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY29sbGF0b3IvQ29sbGF0aW9uRnJlbmNoVGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NvbGxhdG9yL0NvbGxhdGlvbkZyZW5jaFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjY1Mzc1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NvbGxhdG9yL0NvbGxhdGlvbkZyZW5jaFRlc3QuamF2YQpAQCAtMCwwICsxLDI4NiBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICAgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAkU291cmNlOiAKKyAqICREYXRlOiAKKyAqICRSZXZpc2lvbjogCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworLyoqIAorICogUG9ydCBGcm9tOiAgIElDVTRDIHYyLjEgOiBDb2xsYXRlL0NvbGxhdGlvbkZyZW5jaFRlc3QKKyAqIFNvdXJjZSBGaWxlOiAkSUNVNENSb290L3NvdXJjZS90ZXN0L2ludGx0ZXN0L2ZyY29sbC5jcHAKKyAqKi8KKyAKK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3QuY29sbGF0b3I7CisgCitpbXBvcnQgY29tLmlibS5pY3UuZGV2LnRlc3QuKjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0Lio7CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKKyAKK3B1YmxpYyBjbGFzcyBDb2xsYXRpb25GcmVuY2hUZXN0IGV4dGVuZHMgVGVzdEZtd2t7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIG5ldyBDb2xsYXRpb25GcmVuY2hUZXN0KCkucnVuKGFyZ3MpOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBjaGFyW11bXSB0ZXN0U291cmNlQ2FzZXMgPSB7CisgICAgICAgIHsweDAwNjEvKidhJyovLCAweDAwNjIvKidiJyovLCAweDAwNjMvKidjJyovfSwKKyAgICAgICAgezB4MDA0My8qJ0MnKi8sIDB4MDA0Zi8qJ08nKi8sIDB4MDA1NC8qJ1QnKi8sIDB4MDA0NS8qJ0UnKi99LAorICAgICAgICB7MHgwMDYzLyonYycqLywgMHgwMDZmLyonbycqLywgMHgwMDJkLyonLScqLywgMHgwMDZmLyonbycqLywgMHgwMDcwLyoncCcqL30sCisgICAgICAgIHsweDAwNzAvKidwJyovLCAweDAwRUEsIDB4MDA2My8qJ2MnKi8sIDB4MDA2OC8qJ2gnKi8sIDB4MDA2NS8qJ2UnKi99LAorICAgICAgICB7MHgwMDcwLyoncCcqLywgMHgwMEVBLCAweDAwNjMvKidjJyovLCAweDAwNjgvKidoJyovLCAweDAwNjUvKidlJyovLCAweDAwNzIvKidyJyovfSwKKyAgICAgICAgezB4MDA3MC8qJ3AnKi8sIDB4MDBFOSwgMHgwMDYzLyonYycqLywgMHgwMDY4LyonaCcqLywgMHgwMDY1LyonZScqLywgMHgwMDcyLyoncicqL30sCisgICAgICAgIHsweDAwNzAvKidwJyovLCAweDAwRTksIDB4MDA2My8qJ2MnKi8sIDB4MDA2OC8qJ2gnKi8sIDB4MDA2NS8qJ2UnKi8sIDB4MDA3Mi8qJ3InKi99LAorICAgICAgICB7MHgwMDQ4LyonSCcqLywgMHgwMDY1LyonZScqLywgMHgwMDZjLyonbCcqLywgMHgwMDZjLyonbCcqLywgMHgwMDZmLyonbycqL30sCisgICAgICAgIHsweDAxZjF9LAorICAgICAgICB7MHhmYjAwfSwKKyAgICAgICAgezB4MDFmYX0sCisgICAgICAgIHsweDAxMDF9CisgICAgfTsKKworICAgIHByaXZhdGUgc3RhdGljIGNoYXJbXVtdIHRlc3RUYXJnZXRDYXNlcyA9IHsKKyAgICAgICAgezB4MDA0MS8qJ0EnKi8sIDB4MDA0Mi8qJ0InKi8sIDB4MDA0My8qJ0MnKi99LAorICAgICAgICB7MHgwMDYzLyonYycqLywgMHgwMGY0LCAweDAwNzQvKid0JyovLCAweDAwNjUvKidlJyovfSwKKyAgICAgICAgezB4MDA0My8qJ0MnKi8sIDB4MDA0Zi8qJ08nKi8sIDB4MDA0Zi8qJ08nKi8sIDB4MDA1MC8qJ1AnKi99LAorICAgICAgICB7MHgwMDcwLyoncCcqLywgMHgwMEU5LCAweDAwNjMvKidjJyovLCAweDAwNjgvKidoJyovLCAweDAwRTl9LAorICAgICAgICB7MHgwMDcwLyoncCcqLywgIDB4MDBFOSwgMHgwMDYzLyonYycqLywgMHgwMDY4LyonaCcqLywgMHgwMEU5fSwKKyAgICAgICAgezB4MDA3MC8qJ3AnKi8sIDB4MDBFQSwgMHgwMDYzLyonYycqLywgMHgwMDY4LyonaCcqLywgMHgwMDY1LyonZScqL30sCisgICAgICAgIHsweDAwNzAvKidwJyovLCAweDAwRUEsIDB4MDA2My8qJ2MnKi8sIDB4MDA2OC8qJ2gnKi8sIDB4MDA2NS8qJ2UnKi8sIDB4MDA3Mi8qJ3InKi99LAorICAgICAgICB7MHgwMDY4LyonaCcqLywgMHgwMDY1LyonZScqLywgMHgwMDZjLyonbCcqLywgMHgwMDZjLyonbCcqLywgMHgwMDRmLyonTycqL30sCisgICAgICAgIHsweDAxZWV9LAorICAgICAgICB7MHgyNWNhfSwKKyAgICAgICAgezB4MDBlMH0sCisgICAgICAgIHsweDAxZGZ9CisgICAgfTsKKworICAgIHByaXZhdGUgc3RhdGljIGludFtdIHJlc3VsdHMgPSB7CisgICAgICAgIC0xLAorICAgICAgICAtMSwKKyAgICAgICAgLTEsIC8qQ29sbGF0b3I6OkdSRUFURVIsKi8KKyAgICAgICAgLTEsCisgICAgICAgIDEsCisgICAgICAgIDEsCisgICAgICAgIC0xLAorICAgICAgICAxLAorICAgICAgIC0xLCAvKkNvbGxhdG9yOjpHUkVBVEVSLCovCisgICAgICAgIDEsCisgICAgICAgIC0xLAorICAgICAgICAtMQorICAgIH07CisKKyAgICAvLyAweDAzMDAgaXMgZ3JhdmUsIDB4MDMwMSBpcyBhY3V0ZQorICAgIC8vIHRoZSBvcmRlciBvZiBlbGVtZW50cyBpbiB0aGlzIGFycmF5IG11c3QgYmUgZGlmZmVyZW50IHRoYW4gdGhlIG9yZGVyIGluIENvbGxhdGlvbkVuZ2xpc2hUZXN0CisgICAgcHJpdmF0ZSBzdGF0aWMgY2hhcltdW10gdGVzdEFjdXRlID0geworICAgIC8qMDAqLyAgICB7MHgwMDY1LyonZScqLywgMHgwMDY1LyonZScqL30sCisgICAgLyowMSovICAgIHsweDAwNjUvKidlJyovLCAweDAzMDEsIDB4MDA2NS8qJ2UnKi99LAorICAgIC8qMDIqLyAgICB7MHgwMDY1LyonZScqLywgMHgwMzAwLCAweDAzMDEsIDB4MDA2NS8qJ2UnKi99LAorICAgIC8qMDMqLyAgICB7MHgwMDY1LyonZScqLywgMHgwMzAwLCAweDAwNjUvKidlJyovfSwKKyAgICAvKjA0Ki8gICAgezB4MDA2NS8qJ2UnKi8sIDB4MDMwMSwgMHgwMzAwLCAweDAwNjUvKidlJyovfSwKKyAgICAvKjA1Ki8gICAgezB4MDA2NS8qJ2UnKi8sIDB4MDA2NS8qJ2UnKi8sIDB4MDMwMX0sIAorICAgIC8qMDYqLyAgICB7MHgwMDY1LyonZScqLywgMHgwMzAxLCAweDAwNjUvKidlJyovLCAweDAzMDF9LAorICAgIC8qMDcqLyAgICB7MHgwMDY1LyonZScqLywgMHgwMzAwLCAweDAzMDEsIDB4MDA2NS8qJ2UnKi8sIDB4MDMwMX0sCisgICAgLyowOCovICAgIHsweDAwNjUvKidlJyovLCAweDAzMDAsIDB4MDA2NS8qJ2UnKi8sIDB4MDMwMX0sCisgICAgLyowOSovICAgIHsweDAwNjUvKidlJyovLCAweDAzMDEsIDB4MDMwMCwgMHgwMDY1LyonZScqLywgMHgwMzAxfSwKKyAgICAvKjBhKi8gICAgezB4MDA2NS8qJ2UnKi8sIDB4MDA2NS8qJ2UnKi8sIDB4MDMwMCwgMHgwMzAxfSwKKyAgICAvKjBiKi8gICAgezB4MDA2NS8qJ2UnKi8sIDB4MDMwMSwgMHgwMDY1LyonZScqLywgMHgwMzAwLCAweDAzMDF9LAorICAgIC8qMGMqLyAgICB7MHgwMDY1LyonZScqLywgMHgwMzAwLCAweDAzMDEsIDB4MDA2NS8qJ2UnKi8sIDB4MDMwMCwgMHgwMzAxfSwKKyAgICAvKjBkKi8gICAgezB4MDA2NS8qJ2UnKi8sIDB4MDMwMCwgMHgwMDY1LyonZScqLywgMHgwMzAwLCAweDAzMDF9LAorICAgIC8qMGUqLyAgICB7MHgwMDY1LyonZScqLywgMHgwMzAxLCAweDAzMDAsIDB4MDA2NS8qJ2UnKi8sIDB4MDMwMCwgMHgwMzAxfSwKKyAgICAvKjBmKi8gICAgezB4MDA2NS8qJ2UnKi8sIDB4MDA2NS8qJ2UnKi8sIDB4MDMwMH0sCisgICAgLyoxMCovICAgIHsweDAwNjUvKidlJyovLCAweDAzMDEsIDB4MDA2NS8qJ2UnKi8sIDB4MDMwMH0sCisgICAgLyoxMSovICAgIHsweDAwNjUvKidlJyovLCAweDAzMDAsIDB4MDMwMSwgMHgwMDY1LyonZScqLywgMHgwMzAwfSwKKyAgICAvKjEyKi8gICAgezB4MDA2NS8qJ2UnKi8sIDB4MDMwMCwgMHgwMDY1LyonZScqLywgMHgwMzAwfSwKKyAgICAvKjEzKi8gICAgezB4MDA2NS8qJ2UnKi8sIDB4MDMwMSwgMHgwMzAwLCAweDAwNjUvKidlJyovLCAweDAzMDB9LAorICAgIC8qMTQqLyAgICB7MHgwMDY1LyonZScqLywgMHgwMDY1LyonZScqLywgMHgwMzAxLCAweDAzMDB9LAorICAgIC8qMTUqLyAgICB7MHgwMDY1LyonZScqLywgMHgwMzAxLCAweDAwNjUvKidlJyovLCAweDAzMDEsIDB4MDMwMH0sCisgICAgLyoxNiovICAgIHsweDAwNjUvKidlJyovLCAweDAzMDAsIDB4MDMwMSwgMHgwMDY1LyonZScqLywgMHgwMzAxLCAweDAzMDB9LAorICAgIC8qMTcqLyAgICB7MHgwMDY1LyonZScqLywgMHgwMzAwLCAweDAwNjUvKidlJyovLCAweDAzMDEsIDB4MDMwMH0sCisgICAgLyoxOCovICAgIHsweDAwNjUvKidlJyovLCAweDAzMDEsIDB4MDMwMCwgMHgwMDY1LyonZScqLywgMHgwMzAxLCAweDAzMDB9CisgICAgfTsKKworICAgIHByaXZhdGUgc3RhdGljIGNoYXJbXVtdIHRlc3RCdWdzID0geworICAgICAgICB7MHgwMDYxLyonYScqL30sCisgICAgICAgIHsweDAwNDEvKidBJyovfSwKKyAgICAgICAgezB4MDA2NS8qJ2UnKi99LAorICAgICAgICB7MHgwMDQ1LyonRScqL30sCisgICAgICAgIHsweDAwZTl9LAorICAgICAgICB7MHgwMGU4fSwKKyAgICAgICAgezB4MDBlYX0sCisgICAgICAgIHsweDAwZWJ9LAorICAgICAgICB7MHgwMDY1LyonZScqLywgMHgwMDYxLyonYScqL30sCisgICAgICAgIHsweDAwNzgvKid4JyovfQorICAgIH07CisgICAgCisgICAgCisgICAgcHJpdmF0ZSBDb2xsYXRvciBteUNvbGxhdGlvbiA9IG51bGw7CisgICAgCisgICAgcHVibGljIENvbGxhdGlvbkZyZW5jaFRlc3QoKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBteUNvbGxhdGlvbiA9IENvbGxhdG9yLmdldEluc3RhbmNlKExvY2FsZS5GUkVOQ0gpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBpbiBjcmVhdGlvbiBvZiBjb2xsYXRvciBvZiBGUkVOQ0ggbG9jYWxlIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgIAorICAgICAKKyAgICAvLyBwZXJmb3JtIHRlc3RzIHdpdGggc3RyZW5ndGggVEVSVElBUlkKKyAgICBwdWJsaWMgdm9pZCBUZXN0VGVydGlhcnkoKSB7CisgICAgICAgIGludCBpID0gMDsKKyAgICAgICAgbXlDb2xsYXRpb24uc2V0U3RyZW5ndGgoQ29sbGF0b3IuVEVSVElBUlkpOworICAgICAgICAKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IDEyIDsgaSsrKSB7CisgICAgICAgICAgICBkb1Rlc3QodGVzdFNvdXJjZUNhc2VzW2ldLCB0ZXN0VGFyZ2V0Q2FzZXNbaV0sIHJlc3VsdHNbaV0pOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8vIHBlcmZvcm0gdGVzdHMgd2l0aCBzdHJlbmd0aCBTRUNPTkRBUlkKKyAgICBwdWJsaWMgdm9pZCBUZXN0U2Vjb25kYXJ5KCkgeworICAgICAgICAvL3Rlc3QgYWN1dGUgYW5kIGdyYXZlIG9yZGVyaW5nCisgICAgICAgIGludCBpID0gMDsKKyAgICAgICAgaW50IGo7CisgICAgICAgIGludCBleHBlY3RlZDsKKworICAgICAgICBteUNvbGxhdGlvbi5zZXRTdHJlbmd0aChDb2xsYXRvci5TRUNPTkRBUlkpOworICAgICAgICAKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHRlc3RBY3V0ZS5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IHRlc3RBY3V0ZS5sZW5ndGg7IGorKykgeworICAgICAgICAgICAgICAgIGlmIChpIDwgIGopIHsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSAtMTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGkgPT0gaikgeworICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCA9IDA7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkb1Rlc3QodGVzdEFjdXRlW2ldLCB0ZXN0QWN1dGVbal0sIGV4cGVjdGVkICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBwZXJmb3JtIGV4dHJhIHRlc3RzCisgICAgcHVibGljIHZvaWQgVGVzdEV4dHJhKCkgeworICAgICAgICBpbnQgaSwgajsKKyAgICAgICAgbXlDb2xsYXRpb24uc2V0U3RyZW5ndGgoQ29sbGF0b3IuVEVSVElBUlkpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgOSA7IGkrKykgeworICAgICAgICAgICAgZm9yIChqID0gaSArIDE7IGogPCAxMDsgaiArPSAxKSB7CisgICAgICAgICAgICAgICAgZG9UZXN0KHRlc3RCdWdzW2ldLCB0ZXN0QnVnc1tqXSwgLTEpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RDb250aW51YXRpb25SZW9yZGVyaW5nKCkKKyAgICB7CisgICAgICAgIFN0cmluZyBydWxlID0gIiYweDJmMDAgPDwgMHgyZjAxIjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yIGNvbGxhdG9yID0gbmV3IFJ1bGVCYXNlZENvbGxhdG9yKHJ1bGUpOworICAgICAgICAgICAgY29sbGF0b3Iuc2V0RnJlbmNoQ29sbGF0aW9uKHRydWUpOworICAgICAgICAgICAgQ29sbGF0aW9uS2V5IGtleTEgCisgICAgICAgICAgICAgICAgICAgICAgICA9IGNvbGxhdG9yLmdldENvbGxhdGlvbktleSgiYVx1MDMyNVx1MmYwMFx1MmYwMWJcdTAzMjUiKTsKKyAgICAgICAgICAgIENvbGxhdGlvbktleSBrZXkyCisgICAgICAgICAgICAgICAgICAgICAgICA9IGNvbGxhdG9yLmdldENvbGxhdGlvbktleSgiYVx1MDMyNVx1MmYwMVx1MmYwMWJcdTAzMjUiKTsKKyAgICAgICAgICAgIGlmIChrZXkxLmNvbXBhcmVUbyhrZXkyKSA+PSAwKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkVycm9yIGNvbXBhcmluZyBjb250aW51YXRpb24gc3RyaW5ncyIpOworICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oZS50b1N0cmluZygpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAgCisgICAgLy8gbWFpbiB0ZXN0IHJvdXRpbmUsIHRlc3QgcnVsZXMgc3BlY2lmaWMgdG8gdGhlIGZyZW5jaCBsb2NhbGUKKyAgICBwcml2YXRlIHZvaWQgZG9UZXN0KGNoYXJbXSBzb3VyY2UsIGNoYXJbXSB0YXJnZXQsIGludCByZXN1bHQpIHsKKyAgICAgICAgU3RyaW5nIHMgPSBuZXcgU3RyaW5nKHNvdXJjZSk7CisgICAgICAgIFN0cmluZyB0ID0gbmV3IFN0cmluZyh0YXJnZXQpOworICAgICAgICBpbnQgY29tcGFyZVJlc3VsdCA9IG15Q29sbGF0aW9uLmNvbXBhcmUocywgdCk7CisgICAgICAgIENvbGxhdGlvbktleSBzb3J0S2V5MSwgc29ydEtleTI7CisgICAgICAgIHNvcnRLZXkxID0gbXlDb2xsYXRpb24uZ2V0Q29sbGF0aW9uS2V5KHMpOworICAgICAgICBzb3J0S2V5MiA9IG15Q29sbGF0aW9uLmdldENvbGxhdGlvbktleSh0KTsKKyAgICAgICAgaW50IGtleVJlc3VsdCA9IHNvcnRLZXkxLmNvbXBhcmVUbyhzb3J0S2V5Mik7CisgICAgICAgIHJlcG9ydENSZXN1bHQocywgdCwgc29ydEtleTEsIHNvcnRLZXkyLCBjb21wYXJlUmVzdWx0LCBrZXlSZXN1bHQsIGNvbXBhcmVSZXN1bHQsIHJlc3VsdCk7ICAKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSB2b2lkIHJlcG9ydENSZXN1bHQoIFN0cmluZyBzb3VyY2UsIFN0cmluZyB0YXJnZXQsIENvbGxhdGlvbktleSBzb3VyY2VLZXksIENvbGxhdGlvbktleSB0YXJnZXRLZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb21wYXJlUmVzdWx0LCBpbnQga2V5UmVzdWx0LCBpbnQgaW5jUmVzdWx0LCBpbnQgZXhwZWN0ZWRSZXN1bHQgKSB7CisgICAgICAgIGlmIChleHBlY3RlZFJlc3VsdCA8IC0xIHx8IGV4cGVjdGVkUmVzdWx0ID4gMSkgeworICAgICAgICAgICAgZXJybG4oIioqKioqIGludmFsaWQgY2FsbCB0byByZXBvcnRDUmVzdWx0ICoqKioiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2xlYW4gb2sxID0gKGNvbXBhcmVSZXN1bHQgPT0gZXhwZWN0ZWRSZXN1bHQpOworICAgICAgICBib29sZWFuIG9rMiA9IChrZXlSZXN1bHQgPT0gZXhwZWN0ZWRSZXN1bHQpOworICAgICAgICBib29sZWFuIG9rMyA9IChpbmNSZXN1bHQgPT0gZXhwZWN0ZWRSZXN1bHQpOworCisgICAgICAgIGlmIChvazEgJiYgb2syICYmIG9rMyAmJiAhaXNWZXJib3NlKCkpIHsKKyAgICAgICAgICAgIHJldHVybjsgICAgCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBTdHJpbmcgbXNnMSA9IG9rMT8gIk9rOiBjb21wYXJlKFwiIiA6ICJGQUlMOiBjb21wYXJlKFwiIjsKKyAgICAgICAgICAgIFN0cmluZyBtc2cyID0gIlwiLCBcIiI7CisgICAgICAgICAgICBTdHJpbmcgbXNnMyA9ICJcIikgcmV0dXJuZWQgIjsKKyAgICAgICAgICAgIFN0cmluZyBtc2c0ID0gIjsgZXhwZWN0ZWQgIjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgU3RyaW5nIHNFeHBlY3QgPSBuZXcgU3RyaW5nKCIiKTsKKyAgICAgICAgICAgIFN0cmluZyBzUmVzdWx0ID0gbmV3IFN0cmluZygiIik7CisgICAgICAgICAgICBzUmVzdWx0ID0gYXBwZW5kQ29tcGFyZVJlc3VsdChjb21wYXJlUmVzdWx0LCBzUmVzdWx0KTsKKyAgICAgICAgICAgIHNFeHBlY3QgPSBhcHBlbmRDb21wYXJlUmVzdWx0KGV4cGVjdGVkUmVzdWx0LCBzRXhwZWN0KTsKKyAgICAgICAgICAgIGlmIChvazEpIHsKKyAgICAgICAgICAgICAgICBsb2dsbihtc2cxICsgc291cmNlICsgbXNnMiArIHRhcmdldCArIG1zZzMgKyBzUmVzdWx0KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZXJybG4obXNnMSArIHNvdXJjZSArIG1zZzIgKyB0YXJnZXQgKyBtc2czICsgc1Jlc3VsdCArIG1zZzQgKyBzRXhwZWN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgbXNnMSA9IG9rMiA/ICJPazoga2V5KFwiIiA6ICJGQUlMOiBrZXkoXCIiOworICAgICAgICAgICAgbXNnMiA9ICJcIikuY29tcGFyZVRvKGtleShcIiI7CisgICAgICAgICAgICBtc2czID0gIlwiKSkgcmV0dXJuZWQgIjsKKyAgICAgICAgICAgIHNSZXN1bHQgPSBhcHBlbmRDb21wYXJlUmVzdWx0KGtleVJlc3VsdCwgc1Jlc3VsdCk7CisgICAgICAgICAgICBpZiAob2syKSB7CisgICAgICAgICAgICAgICAgbG9nbG4obXNnMSArIHNvdXJjZSArIG1zZzIgKyB0YXJnZXQgKyBtc2czICsgc1Jlc3VsdCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGVycmxuKG1zZzEgKyBzb3VyY2UgKyBtc2cyICsgdGFyZ2V0ICsgbXNnMyArIHNSZXN1bHQgKyBtc2c0ICsgc0V4cGVjdCk7CisgICAgICAgICAgICAgICAgbXNnMSA9ICIgICI7CisgICAgICAgICAgICAgICAgbXNnMiA9ICIgdnMuICI7CisgICAgICAgICAgICAgICAgZXJybG4obXNnMSArIHByZXR0aWZ5KHNvdXJjZUtleSkgKyBtc2cyICsgcHJldHRpZnkodGFyZ2V0S2V5KSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1zZzEgPSBvazMgPyAiT2s6IGluY0NvbXBhcmUoXCIiIDogIkZBSUw6IGluY0NvbXBhcmUoXCIiOworICAgICAgICAgICAgbXNnMiA9ICJcIiwgXCIiOworICAgICAgICAgICAgbXNnMyA9ICJcIikgcmV0dXJuZWQgIjsKKworICAgICAgICAgICAgc1Jlc3VsdCA9IGFwcGVuZENvbXBhcmVSZXN1bHQoaW5jUmVzdWx0LCBzUmVzdWx0KTsKKworICAgICAgICAgICAgaWYgKG9rMykgeworICAgICAgICAgICAgICAgIGxvZ2xuKG1zZzEgKyBzb3VyY2UgKyBtc2cyICsgdGFyZ2V0ICsgbXNnMyArIHNSZXN1bHQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBlcnJsbihtc2cxICsgc291cmNlICsgbXNnMiArIHRhcmdldCArIG1zZzMgKyBzUmVzdWx0ICsgbXNnNCArIHNFeHBlY3QpOworICAgICAgICAgICAgfSAgICAgICAgICAgICAgIAorICAgICAgICB9CisgICAgfQorICAgIAorICAgIHByaXZhdGUgU3RyaW5nIGFwcGVuZENvbXBhcmVSZXN1bHQoaW50IHJlc3VsdCwgU3RyaW5nIHRhcmdldCkgeworICAgICAgICBpZiAocmVzdWx0ID09IC0xKSB7CisgICAgICAgICAgICB0YXJnZXQgKz0gIkxFU1MiOworICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSAwKSB7CisgICAgICAgICAgICB0YXJnZXQgKz0gIkVRVUFMIjsKKyAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gMSkgeworICAgICAgICAgICAgdGFyZ2V0ICs9ICJHUkVBVEVSIjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFN0cmluZyBodWggPSAiPyI7CisgICAgICAgICAgICB0YXJnZXQgKz0gaHVoICsgcmVzdWx0OworICAgICAgICB9CisgICAgICAgIHJldHVybiB0YXJnZXQ7CisgICAgfQorICAgIAorICAgIFN0cmluZyBwcmV0dGlmeShDb2xsYXRpb25LZXkgc291cmNlS2V5KSB7CisgICAgICAgIGludCBpOworICAgICAgICBieXRlW10gYnl0ZXM9IHNvdXJjZUtleS50b0J5dGVBcnJheSgpOworICAgICAgICBTdHJpbmcgdGFyZ2V0ID0gIlsiOworICAgIAorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYnl0ZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIHRhcmdldCArPSBJbnRlZ2VyLnRvSGV4U3RyaW5nKGJ5dGVzW2ldKTsKKyAgICAgICAgICAgIHRhcmdldCArPSAiICI7CisgICAgICAgIH0KKyAgICAgICAgdGFyZ2V0ICs9ICJdIjsKKyAgICAgICAgcmV0dXJuIHRhcmdldDsKKyAgICB9Cit9IApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9jb2xsYXRvci9Db2xsYXRpb25HZXJtYW5UZXN0LmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY29sbGF0b3IvQ29sbGF0aW9uR2VybWFuVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxMjJiMjkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY29sbGF0b3IvQ29sbGF0aW9uR2VybWFuVGVzdC5qYXZhCkBAIC0wLDAgKzEsMjI2IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgICAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICRTb3VyY2U6IAorICogJERhdGU6IAorICogJFJldmlzaW9uOiAKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCisvKiogCisgKiBQb3J0IEZyb206ICAgSUNVNEMgdjIuMSA6IENvbGxhdGUvQ29sbGF0aW9uR2VybWFuVGVzdAorICogU291cmNlIEZpbGU6ICRJQ1U0Q1Jvb3Qvc291cmNlL3Rlc3QvaW50bHRlc3QvZGVjb2xsLmNwcAorICoqLworIAorIHBhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3QuY29sbGF0b3I7CisgCisgaW1wb3J0IGNvbS5pYm0uaWN1LmRldi50ZXN0Lio7CisgaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuKjsKKyBpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKKyAKKyBwdWJsaWMgY2xhc3MgQ29sbGF0aW9uR2VybWFuVGVzdCBleHRlbmRzIFRlc3RGbXdreworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb257CisgICAgICAgIG5ldyBDb2xsYXRpb25HZXJtYW5UZXN0KCkucnVuKGFyZ3MpOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBjaGFyW11bXSB0ZXN0U291cmNlQ2FzZXMgPSB7CisgICAgICAgIHsweDQ3LCAweDcyLCAweDAwRjYsIDB4MDBERiwgMHg2NX0sCisgICAgICAgIHsweDYxLCAweDYyLCAweDYzfSwKKyAgICAgICAgezB4NTQsIDB4MDBGNiwgMHg2ZSwgMHg2NX0sCisgICAgICAgIHsweDU0LCAweDAwRjYsIDB4NmUsIDB4NjV9LAorICAgICAgICB7MHg1NCwgMHgwMEY2LCAweDZlLCAweDY1fSwKKyAgICAgICAgezB4NjEsIDB4MDMwOCwgMHg2MiwgMHg2M30sCisgICAgICAgIHsweDAwRTQsIDB4NjIsIDB4NjN9LAorICAgICAgICB7MHgwMEU0LCAweDYyLCAweDYzfSwKKyAgICAgICAgezB4NTMsIDB4NzQsIDB4NzIsIDB4NjEsIDB4MDBERiwgMHg2NX0sCisgICAgICAgIHsweDY1LCAweDY2LCAweDY3fSwKKyAgICAgICAgezB4MDBFNCwgMHg2MiwgMHg2M30sCisgICAgICAgIHsweDUzLCAweDc0LCAweDcyLCAweDYxLCAweDAwREYsIDB4NjV9CisgICAgfTsKKworICAgIHByaXZhdGUgc3RhdGljIGNoYXJbXVtdIHRlc3RUYXJnZXRDYXNlcyA9IHsKKyAgICAgICAgezB4NDcsIDB4NzIsIDB4NmYsIDB4NzMsIDB4NzMsIDB4NjksIDB4NzMsIDB4NzR9LAorICAgICAgICB7MHg2MSwgMHgwMzA4LCAweDYyLCAweDYzfSwKKyAgICAgICAgezB4NTQsIDB4NmYsIDB4NmV9LAorICAgICAgICB7MHg1NCwgMHg2ZiwgMHg2NH0sCisgICAgICAgIHsweDU0LCAweDZmLCAweDY2LCAweDc1fSwKKyAgICAgICAgezB4NDEsIDB4MDMwOCwgMHg2MiwgMHg2M30sCisgICAgICAgIHsweDYxLCAweDAzMDgsIDB4NjIsIDB4NjN9LAorICAgICAgICB7MHg2MSwgMHg2NSwgMHg2MiwgMHg2M30sCisgICAgICAgIHsweDUzLCAweDc0LCAweDcyLCAweDYxLCAweDczLCAweDczLCAweDY1fSwKKyAgICAgICAgezB4NjUsIDB4NjYsIDB4Njd9LAorICAgICAgICB7MHg2MSwgMHg2NSwgMHg2MiwgMHg2M30sCisgICAgICAgIHsweDUzLCAweDc0LCAweDcyLCAweDYxLCAweDczLCAweDczLCAweDY1fQorICAgIH07CisKKyAgICBwcml2YXRlIHN0YXRpYyBpbnQgcmVzdWx0c1tdW10gPQorICAgIHsKKyAgICAgICAgLy8gIFByaW1hcnkgIFRlcnRpYXJ5CisgICAgICAgIHsgLTEsICAgICAgICAtMSB9LAorICAgICAgICB7IDAsICAgICAgICAgLTEgfSwKKyAgICAgICAgeyAxLCAgICAgICAgICAxIH0sCisgICAgICAgIHsgMSwgICAgICAgICAgMSB9LAorICAgICAgICB7IDEsICAgICAgICAgIDEgfSwKKyAgICAgICAgeyAwLCAgICAgICAgIC0xIH0sCisgICAgICAgIHsgMCwgICAgICAgICAgMCB9LAorICAgICAgICB7IC0xLCAgICAgICAgLTEgfSwKKyAgICAgICAgeyAwLCAgICAgICAgICAxIH0sCisgICAgICAgIHsgMCwgICAgICAgICAgMCB9LAorICAgICAgICB7IC0xLCAgICAgICAgLTEgfSwKKyAgICAgICAgeyAwLCAgICAgICAgICAxIH0KKyAgICB9OworICAgIAorICAgIHByaXZhdGUgQ29sbGF0b3IgbXlDb2xsYXRpb24gPSBudWxsOworICAgIAorICAgIHB1YmxpYyBDb2xsYXRpb25HZXJtYW5UZXN0KCkgeworICAgICAgICBteUNvbGxhdGlvbiA9IENvbGxhdG9yLmdldEluc3RhbmNlKExvY2FsZS5HRVJNQU4pOworICAgICAgICBpZihteUNvbGxhdGlvbiA9PSBudWxsKSB7CisgICAgICAgICAgICBlcnJsbigiRVJST1I6IGluIGNyZWF0aW9uIG9mIGNvbGxhdG9yIG9mIEdFUk1BTiBsb2NhbGUiKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvLyBwZXJmb3JtIHRlc3Qgd2l0aCBzdHJlbmd0aCBURVJUSUFSWQorICAgIHB1YmxpYyB2b2lkIFRlc3RUZXJ0aWFyeSgpeworICAgICAgICBpZihteUNvbGxhdGlvbiA9PSBudWxsICkgeworICAgICAgICAgICAgZXJybG4oImRlY29sbDogY2Fubm90IHN0YXJ0IHRlc3QsIGNvbGxhdG9yIGlzIG51bGxcbiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaW50IGkgPSAwOworICAgICAgICBteUNvbGxhdGlvbi5zZXRTdHJlbmd0aChDb2xsYXRvci5URVJUSUFSWSk7CisgICAgICAgIG15Q29sbGF0aW9uLnNldERlY29tcG9zaXRpb24oQ29sbGF0b3IuQ0FOT05JQ0FMX0RFQ09NUE9TSVRJT04pOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTIgOyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGRvVGVzdCh0ZXN0U291cmNlQ2FzZXNbaV0sIHRlc3RUYXJnZXRDYXNlc1tpXSwgcmVzdWx0c1tpXVsxXSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLy8gcGVyZm9ybSB0ZXN0IHdpdGggc3RyZW5ndGggU0VDT05EQVJZCisgICAgLy9UaGlzIG1ldGhvZCBpbiBpY3U0YyBoYXMgbm8gaW1wbGVtZW50YXRpb24uCisgICAgcHVibGljIHZvaWQgVGVzdFNlY29uZGFyeSgpeworICAgIH0KKyAgICAKKyAgICAgLy8gcGVyZm9ybSB0ZXN0IHdpdGggc3RyZW5ndGggUFJJTUFSWQorICAgIHB1YmxpYyB2b2lkIFRlc3RQcmltYXJ5KCl7CisgICAgICAgIGlmKG15Q29sbGF0aW9uID09IG51bGwgKSB7CisgICAgICAgICAgICBlcnJsbigiZGVjb2xsOiBjYW5ub3Qgc3RhcnQgdGVzdCwgY29sbGF0b3IgaXMgbnVsbFxuIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaW50IGk7CisgICAgICAgIG15Q29sbGF0aW9uLnNldFN0cmVuZ3RoKENvbGxhdG9yLlBSSU1BUlkpOworICAgICAgICBteUNvbGxhdGlvbi5zZXREZWNvbXBvc2l0aW9uKENvbGxhdG9yLkNBTk9OSUNBTF9ERUNPTVBPU0lUSU9OKTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IDEyIDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBkb1Rlc3QodGVzdFNvdXJjZUNhc2VzW2ldLCB0ZXN0VGFyZ2V0Q2FzZXNbaV0sIHJlc3VsdHNbaV1bMF0pOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIAorICAgIC8vbWFpbiB0ZXN0IHJvdXRpbmUsIHRlc3RzIHJ1bGVzIHNwZWNpZmljIHRvIGdlcm1hIGxvY2FsZQorICAgIHByaXZhdGUgdm9pZCBkb1Rlc3QoY2hhcltdIHNvdXJjZSwgY2hhcltdIHRhcmdldCwgaW50IHJlc3VsdCl7CisgICAgICAgIFN0cmluZyBzID0gbmV3IFN0cmluZyhzb3VyY2UpOworICAgICAgICBTdHJpbmcgdCA9IG5ldyBTdHJpbmcodGFyZ2V0KTsKKyAgICAgICAgaW50IGNvbXBhcmVSZXN1bHQgPSBteUNvbGxhdGlvbi5jb21wYXJlKHMsIHQpOworICAgICAgICBDb2xsYXRpb25LZXkgc29ydEtleTEsIHNvcnRLZXkyOworICAgICAgICBzb3J0S2V5MSA9IG15Q29sbGF0aW9uLmdldENvbGxhdGlvbktleShzKTsKKyAgICAgICAgc29ydEtleTIgPSBteUNvbGxhdGlvbi5nZXRDb2xsYXRpb25LZXkodCk7CisgICAgICAgIGludCBrZXlSZXN1bHQgPSBzb3J0S2V5MS5jb21wYXJlVG8oc29ydEtleTIpOworICAgICAgICByZXBvcnRDUmVzdWx0KHMsIHQsIHNvcnRLZXkxLCBzb3J0S2V5MiwgY29tcGFyZVJlc3VsdCwga2V5UmVzdWx0LCBjb21wYXJlUmVzdWx0LCByZXN1bHQpOworICAgICAgICAKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSB2b2lkIHJlcG9ydENSZXN1bHQoIFN0cmluZyBzb3VyY2UsIFN0cmluZyB0YXJnZXQsIENvbGxhdGlvbktleSBzb3VyY2VLZXksIENvbGxhdGlvbktleSB0YXJnZXRLZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb21wYXJlUmVzdWx0LCBpbnQga2V5UmVzdWx0LCBpbnQgaW5jUmVzdWx0LCBpbnQgZXhwZWN0ZWRSZXN1bHQgKXsKKyAgICAgICAgaWYgKGV4cGVjdGVkUmVzdWx0IDwgLTEgfHwgZXhwZWN0ZWRSZXN1bHQgPiAxKQorICAgICAgICB7CisgICAgICAgICAgICBlcnJsbigiKioqKiogaW52YWxpZCBjYWxsIHRvIHJlcG9ydENSZXN1bHQgKioqKiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYm9vbGVhbiBvazEgPSAoY29tcGFyZVJlc3VsdCA9PSBleHBlY3RlZFJlc3VsdCk7CisgICAgICAgIGJvb2xlYW4gb2syID0gKGtleVJlc3VsdCA9PSBleHBlY3RlZFJlc3VsdCk7CisgICAgICAgIGJvb2xlYW4gb2szID0gKGluY1Jlc3VsdCA9PSBleHBlY3RlZFJlc3VsdCk7CisKKyAgICAgICAgaWYgKG9rMSAmJiBvazIgJiYgb2szICYmICFpc1ZlcmJvc2UoKSl7CisgICAgICAgICAgICByZXR1cm47ICAgIAorICAgICAgICB9ZWxzZXsKKyAgICAgICAgICAgIFN0cmluZyBtc2cxID0gb2sxPyAiT2s6IGNvbXBhcmUoXCIiIDogIkZBSUw6IGNvbXBhcmUoXCIiOworICAgICAgICAgICAgU3RyaW5nIG1zZzIgPSAiXCIsIFwiIjsKKyAgICAgICAgICAgIFN0cmluZyBtc2czID0gIlwiKSByZXR1cm5lZCAiOworICAgICAgICAgICAgU3RyaW5nIG1zZzQgPSAiOyBleHBlY3RlZCAiOworICAgICAgICAgICAgCisgICAgICAgICAgICBTdHJpbmcgc0V4cGVjdCA9IG5ldyBTdHJpbmcoIiIpOworICAgICAgICAgICAgU3RyaW5nIHNSZXN1bHQgPSBuZXcgU3RyaW5nKCIiKTsKKyAgICAgICAgICAgIHNSZXN1bHQgPSBhcHBlbmRDb21wYXJlUmVzdWx0KGNvbXBhcmVSZXN1bHQsIHNSZXN1bHQpOworICAgICAgICAgICAgc0V4cGVjdCA9IGFwcGVuZENvbXBhcmVSZXN1bHQoZXhwZWN0ZWRSZXN1bHQsIHNFeHBlY3QpOworICAgICAgICAgICAgaWYgKG9rMSkgeworICAgICAgICAgICAgICAgIGxvZ2xuKG1zZzEgKyBzb3VyY2UgKyBtc2cyICsgdGFyZ2V0ICsgbXNnMyArIHNSZXN1bHQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBlcnJsbihtc2cxICsgc291cmNlICsgbXNnMiArIHRhcmdldCArIG1zZzMgKyBzUmVzdWx0ICsgbXNnNCArIHNFeHBlY3QpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBtc2cxID0gb2syID8gIk9rOiBrZXkoXCIiIDogIkZBSUw6IGtleShcIiI7CisgICAgICAgICAgICBtc2cyID0gIlwiKS5jb21wYXJlVG8oa2V5KFwiIjsKKyAgICAgICAgICAgIG1zZzMgPSAiXCIpKSByZXR1cm5lZCAiOworICAgICAgICAgICAgc1Jlc3VsdCA9IGFwcGVuZENvbXBhcmVSZXN1bHQoa2V5UmVzdWx0LCBzUmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChvazIpIHsKKyAgICAgICAgICAgICAgICBsb2dsbihtc2cxICsgc291cmNlICsgbXNnMiArIHRhcmdldCArIG1zZzMgKyBzUmVzdWx0KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZXJybG4obXNnMSArIHNvdXJjZSArIG1zZzIgKyB0YXJnZXQgKyBtc2czICsgc1Jlc3VsdCArIG1zZzQgKyBzRXhwZWN0KTsKKyAgICAgICAgICAgICAgICBtc2cxID0gIiAgIjsKKyAgICAgICAgICAgICAgICBtc2cyID0gIiB2cy4gIjsKKyAgICAgICAgICAgICAgICBlcnJsbihtc2cxICsgcHJldHRpZnkoc291cmNlS2V5KSArIG1zZzIgKyBwcmV0dGlmeSh0YXJnZXRLZXkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgbXNnMSA9IG9rMyA/ICJPazogaW5jQ29tcGFyZShcIiIgOiAiRkFJTDogaW5jQ29tcGFyZShcIiI7CisgICAgICAgICAgICBtc2cyID0gIlwiLCBcIiI7CisgICAgICAgICAgICBtc2czID0gIlwiKSByZXR1cm5lZCAiOworCisgICAgICAgICAgICBzUmVzdWx0ID0gYXBwZW5kQ29tcGFyZVJlc3VsdChpbmNSZXN1bHQsIHNSZXN1bHQpOworCisgICAgICAgICAgICBpZiAob2szKSB7CisgICAgICAgICAgICAgICAgbG9nbG4obXNnMSArIHNvdXJjZSArIG1zZzIgKyB0YXJnZXQgKyBtc2czICsgc1Jlc3VsdCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGVycmxuKG1zZzEgKyBzb3VyY2UgKyBtc2cyICsgdGFyZ2V0ICsgbXNnMyArIHNSZXN1bHQgKyBtc2c0ICsgc0V4cGVjdCk7CisgICAgICAgICAgICB9ICAgICAgICAgICAgICAgIAorICAgICAgICB9CisgICAgfQorICAgIAorICAgIHByaXZhdGUgU3RyaW5nIGFwcGVuZENvbXBhcmVSZXN1bHQoaW50IHJlc3VsdCwgU3RyaW5nIHRhcmdldCl7CisgICAgICAgIGlmIChyZXN1bHQgPT0gLTEpICAgLy9MRVNTCisgICAgICAgIHsKKyAgICAgICAgICAgIHRhcmdldCArPSAiTEVTUyI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAocmVzdWx0ID09IDApICAgLy9FUVVBTAorICAgICAgICB7CisgICAgICAgICAgICB0YXJnZXQgKz0gIkVRVUFMIjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChyZXN1bHQgPT0gMSkgICAvL0dSRUFURVIKKyAgICAgICAgeworICAgICAgICAgICAgdGFyZ2V0ICs9ICJHUkVBVEVSIjsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIFN0cmluZyBodWggPSAiPyI7CisKKyAgICAgICAgICAgIHRhcmdldCArPSBodWggKyByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRhcmdldDsKKyAgICB9CisgICAgCisgICAgU3RyaW5nIHByZXR0aWZ5KENvbGxhdGlvbktleSBzb3VyY2VLZXkpIHsKKyAgICAgICAgaW50IGk7CisgICAgICAgIGJ5dGVbXSBieXRlcz0gc291cmNlS2V5LnRvQnl0ZUFycmF5KCk7CisgICAgICAgIFN0cmluZyB0YXJnZXQgPSAiWyI7CisgICAgCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgdGFyZ2V0ICs9IEludGVnZXIudG9IZXhTdHJpbmcoYnl0ZXNbaV0pOworICAgICAgICAgICAgdGFyZ2V0ICs9ICIgIjsKKyAgICAgICAgfQorICAgICAgICB0YXJnZXQgKz0gIl0iOworICAgICAgICByZXR1cm4gdGFyZ2V0OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY29sbGF0b3IvQ29sbGF0aW9uSXRlcmF0b3JUZXN0LmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY29sbGF0b3IvQ29sbGF0aW9uSXRlcmF0b3JUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjI2MTYxYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9jb2xsYXRvci9Db2xsYXRpb25JdGVyYXRvclRlc3QuamF2YQpAQCAtMCwwICsxLDYyMCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICAgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAkU291cmNlOiAKKyAqICREYXRlOiAKKyAqICRSZXZpc2lvbjogCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworLyoqIAorICogUG9ydCBGcm9tOiAgIElDVTRDIHYyLjEgOiBjb2xsYXRlL0NvbGxhdGlvbkl0ZXJhdG9yVGVzdAorICogU291cmNlIEZpbGU6ICRJQ1U0Q1Jvb3Qvc291cmNlL3Rlc3QvaW50bHRlc3QvaXRlcmNvbGwuY3BwCisgKiovCisKK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3QuY29sbGF0b3I7CisKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CitpbXBvcnQgamF2YS50ZXh0LkNoYXJhY3Rlckl0ZXJhdG9yOworaW1wb3J0IGphdmEudGV4dC5TdHJpbmdDaGFyYWN0ZXJJdGVyYXRvcjsKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYudGVzdC4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuKjsKK2ltcG9ydCBjb20uaWJtLmljdS5sYW5nLlVDaGFyYWN0ZXI7CisKK3B1YmxpYyBjbGFzcyBDb2xsYXRpb25JdGVyYXRvclRlc3QgZXh0ZW5kcyBUZXN0Rm13ayB7CisgICAgCisgICAgU3RyaW5nIHRlc3QxID0gIldoYXQgc3Vic2V0IG9mIGFsbCBwb3NzaWJsZSB0ZXN0IGNhc2VzPyI7CisgICAgU3RyaW5nIHRlc3QyID0gImhhcyB0aGUgaGlnaGVzdCBwcm9iYWJpbGl0eSBvZiBkZXRlY3RpbmciOworICAgCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIG5ldyBDb2xsYXRpb25JdGVyYXRvclRlc3QoKS5ydW4oYXJncyk7CisgICAgICAgIC8vIG5ldyBDb2xsYXRpb25JdGVyYXRvclRlc3QoKS5UZXN0Tm9ybWFsaXplZFVuaWNvZGVDaGFyKCk7CisgICAgfQorICAgIAorICAgIC8qCisgICAgICogQGJ1ZyA0MTU3Mjk5CisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdENsZWFyQnVmZmVycygvKiBjaGFyKiBwYXIgKi8pIHsKKyAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IgYyA9IG51bGw7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjID0gbmV3IFJ1bGVCYXNlZENvbGxhdG9yKCImYSA8IGIgPCBjICYgYWIgPSBkIik7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiQ291bGRuJ3QgY3JlYXRlIGEgUnVsZUJhc2VkQ29sbGF0b3IuIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgU3RyaW5nIHNvdXJjZSA9ICJhYmNkIjsKKyAgICAgICAgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yIGkgPSBjLmdldENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvcihzb3VyY2UpOworICAgICAgICBpbnQgZTAgPSAwOworICAgICAgICB0cnkgeworICAgICAgICAgICAgZTAgPSBpLm5leHQoKTsgICAgLy8gc2F2ZSB0aGUgZmlyc3QgY29sbGF0aW9uIGVsZW1lbnQKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJjYWxsIHRvIGkubmV4dCgpIGZhaWxlZC4iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBpLnNldE9mZnNldCgzKTsgICAgICAgIC8vIGdvIHRvIHRoZSBleHBhbmRpbmcgY2hhcmFjdGVyCisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiY2FsbCB0byBpLnNldE9mZnNldCgzKSBmYWlsZWQuIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBpLm5leHQoKTsgICAgICAgICAgICAgICAgLy8gYnV0IG9ubHkgdXNlIHVwIGhhbGYgb2YgaXQKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJjYWxsIHRvIGkubmV4dCgpIGZhaWxlZC4iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBpLnNldE9mZnNldCgwKTsgICAgICAgIC8vIGdvIGJhY2sgdG8gdGhlIGJlZ2lubmluZworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oImNhbGwgdG8gaS5zZXRPZmZzZXQoMCkgZmFpbGVkLiAiKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaW50IGUgPSAwOworICAgICAgICB0cnkgeworICAgICAgICAgICAgZSA9IGkubmV4dCgpOyAgICAvLyBhbmQgZ2V0IHRoaXMgb25lIGFnYWluCisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlZSkgeworICAgICAgICAgICAgZXJybG4oImNhbGwgdG8gaS5uZXh0KCkgZmFpbGVkLiAiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGUgIT0gZTApIHsKKyAgICAgICAgICAgIGVycmxuKCJnb3QgMHgiICsgSW50ZWdlci50b0hleFN0cmluZyhlKSArICIsIGV4cGVjdGVkIDB4IiArIEludGVnZXIudG9IZXhTdHJpbmcoZTApKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKiogQGJ1ZyA0MTA4NzYyCisgICAgICogVGVzdCBmb3IgZ2V0TWF4RXhwYW5zaW9uKCkKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0TWF4RXhwYW5zaW9uKC8qIGNoYXIqIHBhciAqLykgeworICAgICAgICAvLyBhZGRlZCBqYW1vIGNoYXJhY3RlcnMKKyAgICAgICAgU3RyaW5nIHJ1bGUgPSAiJmEgPCBhYiA8IGMvYWJhIDwgZCA8IHogPCBjaCA8IFx1MTEwMC9hYmEgIiAKKyAgICAgICAgICAgICAgICAgICAgICArICI8IFx1MTE3NS9hYmEgPCBcdTExQTgvYWJhIjsKKyAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IgY29sbCA9IG51bGw7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjb2xsID0gbmV3IFJ1bGVCYXNlZENvbGxhdG9yKHJ1bGUpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkZhaWwgdG8gY3JlYXRlIFJ1bGVCYXNlZENvbGxhdG9yIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgY2hhciBjaCA9IDA7CisgICAgICAgIFN0cmluZyBzdHIgPSBTdHJpbmcudmFsdWVPZihjaCk7CisgICAgCisgICAgICAgIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvciBpdGVyICAgPSBjb2xsLmdldENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvcihzdHIpOworICAgIAorICAgICAgICB3aGlsZSAoY2ggPCAweEZGRkYpIHsKKyAgICAgICAgICAgIGludCBjb3VudCA9IDE7CisgICAgICAgICAgICBjaCArKzsKKyAgICAgICAgICAgIHN0ciA9IFN0cmluZy52YWx1ZU9mKGNoKTsKKyAgICAgICAgICAgIGl0ZXIuc2V0VGV4dChzdHIpOworICAgICAgICAgICAgaW50IG9yZGVyID0gaXRlci5wcmV2aW91cygpOworICAgIAorICAgICAgICAgICAgLy8gdGhhaSBtYW5hZ2VtZW50IAorICAgICAgICAgICAgaWYgKG9yZGVyID09IDApIHsKKyAgICAgICAgICAgICAgICBvcmRlciA9IGl0ZXIucHJldmlvdXMoKTsKKyAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgIHdoaWxlIChpdGVyLnByZXZpb3VzKCkgIT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUikgeworICAgICAgICAgICAgICAgIGNvdW50ICsrOyAKKyAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgIGlmIChpdGVyLmdldE1heEV4cGFuc2lvbihvcmRlcikgPCBjb3VudCkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGYWlsdXJlIGF0IGNvZGVwb2ludCAiICsgY2ggKyAiLCBtYXhpbXVtIGV4cGFuc2lvbiBjb3VudCA8ICIgKyBjb3VudCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogVGVzdCBmb3IgZ2V0T2Zmc2V0KCkgYW5kIHNldE9mZnNldCgpCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdE9mZnNldCgvKiBjaGFyKiBwYXIgKi8pIHsKKyAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IgZW5fdXM7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBlbl91cyA9IChSdWxlQmFzZWRDb2xsYXRvcilDb2xsYXRvci5nZXRJbnN0YW5jZShMb2NhbGUuVVMpOyAgICAKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogaW4gY3JlYXRpb24gb2YgY29sbGF0b3Igb2YgRU5HTElTSCBsb2NhbGUiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvciBpdGVyID0gZW5fdXMuZ2V0Q29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yKHRlc3QxKTsKKyAgICAKKyAgICAgICAgLy8gUnVuIGFsbCB0aGUgd2F5IHRocm91Z2ggdGhlIGl0ZXJhdG9yLCB0aGVuIGdldCB0aGUgb2Zmc2V0CisgICAgICAgIGludFtdIG9yZGVycyA9IGdldE9yZGVycyhpdGVyKTsKKyAgICAgICAgbG9nbG4oIm9yZGVycy5sZW5ndGggPSAiICsgb3JkZXJzLmxlbmd0aCk7CisgICAgICAgIAorICAgICAgICBpbnQgb2Zmc2V0ID0gaXRlci5nZXRPZmZzZXQoKTsKKyAgICAKKyAgICAgICAgaWYgKG9mZnNldCAhPSB0ZXN0MS5sZW5ndGgoKSkgeworICAgICAgICAgICAgU3RyaW5nIG1zZzEgPSAib2Zmc2V0IGF0IGVuZCAhPSBsZW5ndGg6ICI7CisgICAgICAgICAgICBTdHJpbmcgbXNnMiA9ICIgdnMgIjsKKyAgICAgICAgICAgIGVycmxuKG1zZzEgKyBvZmZzZXQgKyBtc2cyICsgdGVzdDEubGVuZ3RoKCkpOworICAgICAgICB9CisgICAgCisgICAgICAgIC8vIE5vdyBzZXQgdGhlIG9mZnNldCBiYWNrIHRvIHRoZSBiZWdpbm5pbmcgYW5kIHNlZSBpZiBpdCB3b3JrcworICAgICAgICBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IgcHJpc3RpbmUgPSBlbl91cy5nZXRDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IodGVzdDEpOworICAgICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGl0ZXIuc2V0T2Zmc2V0KDApOworICAgICAgICB9IGNhdGNoKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigic2V0T2Zmc2V0IGZhaWxlZC4iKTsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnRFcXVhbChpdGVyLCBwcmlzdGluZSk7CisgICAgCisgICAgICAgIC8vIHNldHRpbmcgb2Zmc2V0IGluIHRoZSBtaWRkbGUgb2YgYSBjb250cmFjdGlvbgorICAgICAgICBTdHJpbmcgY29udHJhY3Rpb24gPSAiY2hhbmdlIjsKKyAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IgdGFpbG9yZWQgPSBudWxsOworICAgICAgICB0cnkgeworICAgICAgICAgICAgdGFpbG9yZWQgPSBuZXcgUnVsZUJhc2VkQ29sbGF0b3IoIiYgYSA8IGNoIik7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiRXJyb3I6IGluIGNyZWF0aW9uIG9mIFNwYW5pc2ggY29sbGF0b3IiKTsKKyAgICAgICAgfQorICAgICAgICBpdGVyID0gdGFpbG9yZWQuZ2V0Q29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yKGNvbnRyYWN0aW9uKTsKKyAgICAgICAgaW50IG9yZGVyW10gPSBnZXRPcmRlcnMoaXRlcik7CisgICAgICAgIGl0ZXIuc2V0T2Zmc2V0KDEpOyAvLyBzZXRzIG9mZnNldCBpbiB0aGUgbWlkZGxlIG9mIGNoCisgICAgICAgIGludCBvcmRlcjJbXSA9IGdldE9yZGVycyhpdGVyKTsKKyAgICAgICAgaWYgKCFBcnJheXMuZXF1YWxzKG9yZGVyLCBvcmRlcjIpKSB7CisgICAgICAgICAgICBlcnJsbigiRXJyb3I6IHNldHRpbmcgb2Zmc2V0IGluIHRoZSBtaWRkbGUgb2YgYSBjb250cmFjdGlvbiBzaG91bGQgYmUgdGhlIHNhbWUgYXMgc2V0dGluZyBpdCB0byB0aGUgc3RhcnQgb2YgdGhlIGNvbnRyYWN0aW9uIik7CisgICAgICAgIH0KKyAgICAgICAgY29udHJhY3Rpb24gPSAicGVhY2hlIjsKKyAgICAgICAgaXRlciA9IHRhaWxvcmVkLmdldENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvcihjb250cmFjdGlvbik7CisgICAgICAgIGl0ZXIuc2V0T2Zmc2V0KDMpOworICAgICAgICBvcmRlciA9IGdldE9yZGVycyhpdGVyKTsKKyAgICAgICAgaXRlci5zZXRPZmZzZXQoNCk7IC8vIHNldHMgb2Zmc2V0IGluIHRoZSBtaWRkbGUgb2YgY2gKKyAgICAgICAgb3JkZXIyID0gZ2V0T3JkZXJzKGl0ZXIpOworICAgICAgICBpZiAoIUFycmF5cy5lcXVhbHMob3JkZXIsIG9yZGVyMikpIHsKKyAgICAgICAgICAgIGVycmxuKCJFcnJvcjogc2V0dGluZyBvZmZzZXQgaW4gdGhlIG1pZGRsZSBvZiBhIGNvbnRyYWN0aW9uIHNob3VsZCBiZSB0aGUgc2FtZSBhcyBzZXR0aW5nIGl0IHRvIHRoZSBzdGFydCBvZiB0aGUgY29udHJhY3Rpb24iKTsKKyAgICAgICAgfQorICAgICAgICAvLyBzZXR0aW5nIG9mZnNldCBpbiB0aGUgbWlkZGxlIG9mIGEgc3Vycm9nYXRlIHBhaXIKKyAgICAgICAgU3RyaW5nIHN1cnJvZ2F0ZSA9ICJcdWQ4MDBcdWRjMDBzdHIiOworICAgICAgICBpdGVyID0gdGFpbG9yZWQuZ2V0Q29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yKHN1cnJvZ2F0ZSk7CisgICAgICAgIG9yZGVyID0gZ2V0T3JkZXJzKGl0ZXIpOworICAgICAgICBpdGVyLnNldE9mZnNldCgxKTsgLy8gc2V0cyBvZmZzZXQgaW4gdGhlIG1pZGRsZSBvZiBzdXJyb2dhdGUKKyAgICAgICAgb3JkZXIyID0gZ2V0T3JkZXJzKGl0ZXIpOworICAgICAgICBpZiAoIUFycmF5cy5lcXVhbHMob3JkZXIsIG9yZGVyMikpIHsKKyAgICAgICAgICAgIGVycmxuKCJFcnJvcjogc2V0dGluZyBvZmZzZXQgaW4gdGhlIG1pZGRsZSBvZiBhIHN1cnJvZ2F0ZSBwYWlyIHNob3VsZCBiZSB0aGUgc2FtZSBhcyBzZXR0aW5nIGl0IHRvIHRoZSBzdGFydCBvZiB0aGUgc3Vycm9nYXRlIHBhaXIiKTsKKyAgICAgICAgfQorICAgICAgICBzdXJyb2dhdGUgPSAic2ltcGxlXHVkODAwXHVkYzAwc3RyIjsKKyAgICAgICAgaXRlciA9IHRhaWxvcmVkLmdldENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvcihzdXJyb2dhdGUpOworICAgICAgICBpdGVyLnNldE9mZnNldCg2KTsKKyAgICAgICAgb3JkZXIgPSBnZXRPcmRlcnMoaXRlcik7CisgICAgICAgIGl0ZXIuc2V0T2Zmc2V0KDcpOyAvLyBzZXRzIG9mZnNldCBpbiB0aGUgbWlkZGxlIG9mIHN1cnJvZ2F0ZQorICAgICAgICBvcmRlcjIgPSBnZXRPcmRlcnMoaXRlcik7CisgICAgICAgIGlmICghQXJyYXlzLmVxdWFscyhvcmRlciwgb3JkZXIyKSkgeworICAgICAgICAgICAgZXJybG4oIkVycm9yOiBzZXR0aW5nIG9mZnNldCBpbiB0aGUgbWlkZGxlIG9mIGEgc3Vycm9nYXRlIHBhaXIgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIHNldHRpbmcgaXQgdG8gdGhlIHN0YXJ0IG9mIHRoZSBzdXJyb2dhdGUgcGFpciIpOworICAgICAgICB9CisgICAgICAgIC8vIFRPRE86IHRyeSBpdGVyYXRpbmcgaGFsZndheSB0aHJvdWdoIGEgbWVzc3kgc3RyaW5nLgorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYW4gaW50ZWdlciBhcnJheSBjb250YWluaW5nIGFsbCBvZiB0aGUgY29sbGF0aW9uIG9yZGVycworICAgICAqIHJldHVybmVkIGJ5IGNhbGxzIHRvIG5leHQgb24gdGhlIHNwZWNpZmllZCBpdGVyYXRvcgorICAgICAqLworICAgIGludFtdIGdldE9yZGVycyhDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IgaXRlcikgeworICAgICAgICBpbnQgbWF4U2l6ZSA9IDEwMDsKKyAgICAgICAgaW50IHNpemUgPSAwOworICAgICAgICBpbnRbXSBvcmRlcnMgPSBuZXcgaW50W21heFNpemVdOworICAgIAorICAgICAgICBpbnQgb3JkZXI7CisgICAgICAgIHdoaWxlICgob3JkZXIgPSBpdGVyLm5leHQoKSkgIT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUikgeworICAgICAgICAgICAgaWYgKHNpemUgPT0gbWF4U2l6ZSkgeworICAgICAgICAgICAgICAgIG1heFNpemUgKj0gMjsKKyAgICAgICAgICAgICAgICBpbnRbXSB0ZW1wID0gbmV3IGludFttYXhTaXplXTsKKyAgICAgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KG9yZGVycywgMCwgdGVtcCwgIDAsIHNpemUpOworICAgICAgICAgICAgICAgIG9yZGVycyA9IHRlbXA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBvcmRlcnNbc2l6ZSsrXSA9IG9yZGVyOworICAgICAgICB9CisgICAgCisgICAgICAgIGlmIChtYXhTaXplID4gc2l6ZSkgeworICAgICAgICAgICAgaW50W10gdGVtcCA9IG5ldyBpbnRbc2l6ZV07CisgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KG9yZGVycywgMCwgdGVtcCwgIDAsIHNpemUpOworICAgICAgICAgICAgb3JkZXJzID0gdGVtcDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gb3JkZXJzOworICAgIH0KKworICAgIHZvaWQgYXNzZXJ0RXF1YWwoQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yIGkxLCBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IgaTIpIHsKKyAgICAgICAgaW50IGMxLCBjMiwgY291bnQgPSAwOworICAgICAgICBkbyB7CisgICAgICAgICAgICBjMSA9IGkxLm5leHQoKTsKKyAgICAgICAgICAgIGMyID0gaTIubmV4dCgpOworICAgICAgICAgICAgaWYgKGMxICE9IGMyKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIiAgICAiICsgY291bnQgKyAiOiBzdHJlbmd0aCgweCIgKyAKKyAgICAgICAgICAgICAgICAgICAgSW50ZWdlci50b0hleFN0cmluZyhjMSkgKyAiKSAhPSBzdHJlbmd0aCgweCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKGMyKSArICIpIik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb3VudCArPSAxOworICAgICAgICB9IHdoaWxlIChjMSAhPSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuTlVMTE9SREVSKTsKKyAgICAgICAgYmFja0FuZEZvcnRoKGkxKTsKKyAgICAgICAgYmFja0FuZEZvcnRoKGkyKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogVGVzdCBmb3IgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLnByZXZpb3VzKCkKKyAgICAgKgorICAgICAqIEBidWcgNDEwODc1OCAtIE1ha2Ugc3VyZSBpdCB3b3JrcyB3aXRoIGNvbnRyYWN0aW5nIGNoYXJhY3RlcnMKKyAgICAgKiAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0UHJldmlvdXMoLyogY2hhciogcGFyICovKSB7CisgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yIGVuX3VzID0gKFJ1bGVCYXNlZENvbGxhdG9yKUNvbGxhdG9yLmdldEluc3RhbmNlKExvY2FsZS5VUyk7CisgICAgICAgIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvciBpdGVyID0gZW5fdXMuZ2V0Q29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yKHRlc3QxKTsKKyAgICAKKyAgICAgICAgLy8gQSBiYXNpYyB0ZXN0IHRvIHNlZSBpZiBpdCdzIHdvcmtpbmcgYXQgYWxsCisgICAgICAgIGJhY2tBbmRGb3J0aChpdGVyKTsKKyAgICAKKyAgICAgICAgLy8gVGVzdCB3aXRoIGEgY29udHJhY3RpbmcgY2hhcmFjdGVyIHNlcXVlbmNlCisgICAgICAgIFN0cmluZyBzb3VyY2U7CisgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yIGMxID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGMxID0gbmV3IFJ1bGVCYXNlZENvbGxhdG9yKCImYSxBIDwgYixCIDwgYyxDLCBkLEQgPCB6LFogPCBjaCxjSCxDaCxDSCIpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkNvdWxkbid0IGNyZWF0ZSBhIFJ1bGVCYXNlZENvbGxhdG9yIHdpdGggYSBjb250cmFjdGluZyBzZXF1ZW5jZS4iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIAorICAgICAgICBzb3VyY2UgPSAiYWJjaGRjYmEiOworICAgICAgICBpdGVyID0gYzEuZ2V0Q29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yKHNvdXJjZSk7CisgICAgICAgIGJhY2tBbmRGb3J0aChpdGVyKTsKKyAgICAKKyAgICAgICAgLy8gVGVzdCB3aXRoIGFuIGV4cGFuZGluZyBjaGFyYWN0ZXIgc2VxdWVuY2UKKyAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IgYzIgPSBudWxsOworICAgICAgICB0cnkgeworICAgICAgICAgICAgYzIgPSBuZXcgUnVsZUJhc2VkQ29sbGF0b3IoIiZhIDwgYiA8IGMvYWJkIDwgZCIpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSApIHsKKyAgICAgICAgICAgIGVycmxuKCJDb3VsZG4ndCBjcmVhdGUgYSBSdWxlQmFzZWRDb2xsYXRvciB3aXRoIGFuIGV4cGFuZGluZyBzZXF1ZW5jZS4iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIAorICAgICAgICBzb3VyY2UgPSAiYWJjZCI7CisgICAgICAgIGl0ZXIgPSBjMi5nZXRDb2xsYXRpb25FbGVtZW50SXRlcmF0b3Ioc291cmNlKTsKKyAgICAgICAgYmFja0FuZEZvcnRoKGl0ZXIpOworICAgIAorICAgICAgICAvLyBOb3cgdHJ5IGJvdGgKKyAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IgYzMgPSBudWxsOworICAgICAgICB0cnkgeworICAgICAgICAgICAgYzMgPSBuZXcgUnVsZUJhc2VkQ29sbGF0b3IoIiZhIDwgYiA8IGMvYWJhIDwgZCA8IHogPCBjaCIpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkNvdWxkbid0IGNyZWF0ZSBhIFJ1bGVCYXNlZENvbGxhdG9yIHdpdGggYm90aCBhbiBleHBhbmRpbmcgYW5kIGEgY29udHJhY3Rpbmcgc2VxdWVuY2UuIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHNvdXJjZSA9ICJhYmNkYmNoZGMiOworICAgICAgICBpdGVyID0gYzMuZ2V0Q29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yKHNvdXJjZSk7CisgICAgICAgIGJhY2tBbmRGb3J0aChpdGVyKTsKKyAgICAKKyAgICAgICAgc291cmNlPSAiXHUwZTQxXHUwZTAyXHUwZTQxXHUwZTAyXHUwZTI3YWJjIjsKKyAgICAgICAgQ29sbGF0b3IgYzQgPSBudWxsOworICAgICAgICB0cnkgeworICAgICAgICAgICAgYzQgPSBDb2xsYXRvci5nZXRJbnN0YW5jZShuZXcgTG9jYWxlKCJ0aCIsICJUSCIsICIiKSk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiQ291bGRuJ3QgY3JlYXRlIGEgY29sbGF0b3IiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaXRlciA9ICgoUnVsZUJhc2VkQ29sbGF0b3IpYzQpLmdldENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvcihzb3VyY2UpOworICAgICAgICBiYWNrQW5kRm9ydGgoaXRlcik7CisgICAgICAgCisgICAgICAgIHNvdXJjZT0gIlx1MDA2MVx1MzBDRlx1MzA5OVx1MzBGQyI7CisgICAgICAgIENvbGxhdG9yIGM1ID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGM1ID0gQ29sbGF0b3IuZ2V0SW5zdGFuY2UobmV3IExvY2FsZSgiamEiLCAiSlAiLCAiIikpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkNvdWxkbid0IGNyZWF0ZSBKYXBhbmVzZSBjb2xsYXRvclxuIik7CisgICAgICAgIH0KKyAgICAgICAgaXRlciA9ICgoUnVsZUJhc2VkQ29sbGF0b3IpYzUpLmdldENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvcihzb3VyY2UpOworICAgICAgICAKKyAgICAgICAgYmFja0FuZEZvcnRoKGl0ZXIpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGJhY2tBbmRGb3J0aChDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IgaXRlcikgeworICAgICAgICAvLyBSdW4gdGhyb3VnaCB0aGUgaXRlcmF0b3IgZm9yd2FyZHMgYW5kIHN0aWNrIGl0IGludG8gYW4gYXJyYXkKKyAgICAgICAgaXRlci5yZXNldCgpOworICAgICAgICBpbnRbXSBvcmRlcnMgPSBnZXRPcmRlcnMoaXRlcik7CisgICAgCisgICAgICAgIC8vIE5vdyBnbyB0aHJvdWdoIGl0IGJhY2t3YXJkcyBhbmQgbWFrZSBzdXJlIHdlIGdldCB0aGUgc2FtZSB2YWx1ZXMKKyAgICAgICAgaW50IGluZGV4ID0gb3JkZXJzLmxlbmd0aDsKKyAgICAgICAgaW50IG87CisgICAgCisgICAgICAgIC8vIHJlc2V0IHRoZSBpdGVyYXRvcgorICAgICAgICBpdGVyLnJlc2V0KCk7CisgICAgCisgICAgICAgIHdoaWxlICgobyA9IGl0ZXIucHJldmlvdXMoKSkgIT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUikgeworICAgICAgICAgICAgaWYgKG8gIT0gb3JkZXJzWy0taW5kZXhdKSB7CisgICAgICAgICAgICAgICAgaWYgKG8gPT0gMCkgeworICAgICAgICAgICAgICAgICAgICBpbmRleCArKzsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaW5kZXggPiAwICYmIG9yZGVyc1tpbmRleF0gPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggLS07CisgICAgICAgICAgICAgICAgICAgIH0gCisgICAgICAgICAgICAgICAgICAgIGlmIChvICE9IG9yZGVyc1tpbmRleF0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycmxuKCJNaXNtYXRjaCBhdCBpbmRleCAiICsgaW5kZXggKyAiOiAweCIgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG9yZGVyc1tpbmRleF0pICsgIiB2cyAweCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG8pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgCisgICAgICAgIHdoaWxlIChpbmRleCAhPSAwICYmIG9yZGVyc1tpbmRleCAtIDFdID09IDApIHsKKyAgICAgICAgICBpbmRleCAtLTsKKyAgICAgICAgfQorICAgIAorICAgICAgICBpZiAoaW5kZXggIT0gMCkgeworICAgICAgICAgICAgU3RyaW5nIG1zZyA9ICJEaWRuJ3QgZ2V0IGJhY2sgdG8gYmVnaW5uaW5nIC0gaW5kZXggaXMgIjsKKyAgICAgICAgICAgIGVycmxuKG1zZyArIGluZGV4KTsKKyAgICAKKyAgICAgICAgICAgIGl0ZXIucmVzZXQoKTsKKyAgICAgICAgICAgIGVycigibmV4dDogIik7CisgICAgICAgICAgICB3aGlsZSAoKG8gPSBpdGVyLm5leHQoKSkgIT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUikgeworICAgICAgICAgICAgICAgIFN0cmluZyBoZXhTdHJpbmcgPSAiMHgiICsgSW50ZWdlci50b0hleFN0cmluZyhvKSArICIgIjsKKyAgICAgICAgICAgICAgICBlcnIoaGV4U3RyaW5nKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVycmxuKCIiKTsKKyAgICAgICAgICAgIGVycigicHJldjogIik7CisgICAgICAgICAgICB3aGlsZSAoKG8gPSBpdGVyLnByZXZpb3VzKCkpICE9IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5OVUxMT1JERVIpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgaGV4U3RyaW5nID0gIjB4IiArIEludGVnZXIudG9IZXhTdHJpbmcobykgKyAiICI7CisgICAgICAgICAgICAgICAgIGVycihoZXhTdHJpbmcpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZXJybG4oIiIpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFRlc3QgZm9yIHNldFRleHQoKQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RTZXRUZXh0KC8qIGNoYXIqIHBhciAqLykgeworICAgICAgICBSdWxlQmFzZWRDb2xsYXRvciBlbl91cyA9IChSdWxlQmFzZWRDb2xsYXRvcilDb2xsYXRvci5nZXRJbnN0YW5jZShMb2NhbGUuVVMpOworICAgICAgICBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IgaXRlcjEgPSBlbl91cy5nZXRDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IodGVzdDEpOworICAgICAgICBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IgaXRlcjIgPSBlbl91cy5nZXRDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IodGVzdDIpOworICAgIAorICAgICAgICAvLyBSdW4gdGhyb3VnaCB0aGUgc2Vjb25kIGl0ZXJhdG9yIGp1c3QgdG8gZXhlcmNpc2UgaXQKKyAgICAgICAgaW50IGMgPSBpdGVyMi5uZXh0KCk7CisgICAgICAgIGludCBpID0gMDsKKyAgICAKKyAgICAgICAgd2hpbGUgKCArK2kgPCAxMCAmJiBjICE9IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5OVUxMT1JERVIpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgYyA9IGl0ZXIyLm5leHQoKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIml0ZXIyLm5leHQoKSByZXR1cm5lZCBhbiBlcnJvci4iKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIAorICAgICAgICAvLyBOb3cgc2V0IGl0IHRvIHBvaW50IHRvIHRoZSBzYW1lIHN0cmluZyBhcyB0aGUgZmlyc3QgaXRlcmF0b3IKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGl0ZXIyLnNldFRleHQodGVzdDEpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oImNhbGwgdG8gaXRlcjItPnNldFRleHQodGVzdDEpIGZhaWxlZC4iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnRFcXVhbChpdGVyMSwgaXRlcjIpOworICAgICAgICAKKyAgICAgICAgaXRlcjEucmVzZXQoKTsKKyAgICAgICAgLy9ub3cgdXNlIHRoZSBvdmVybG9hZGVkIHNldFRleHQoQ2hyYWN0ZXJJdGVyYXRvciYsIFVFcnJvckNvZGUpIGZ1bmN0aW9uIHRvIHNldCB0aGUgdGV4dAorICAgICAgICBDaGFyYWN0ZXJJdGVyYXRvciBjaGFyaXRlciA9IG5ldyBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvcih0ZXN0MSk7CisgICAgICAgIHRyeSB7CisgICAgICAgIGl0ZXIyLnNldFRleHQoY2hhcml0ZXIpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSApIHsKKyAgICAgICAgICAgIGVycmxuKCJjYWxsIHRvIGl0ZXIyLT5zZXRUZXh0KGNoYXJpdGVyKHRlc3QxKSkgZmFpbGVkLiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGFzc2VydEVxdWFsKGl0ZXIxLCBpdGVyMik7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdCBmb3IgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yIHByZXZpb3VzIGFuZCBuZXh0IGZvciB0aGUgd2hvbGUgc2V0IG9mCisgICAgICogdW5pY29kZSBjaGFyYWN0ZXJzLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RVbmljb2RlQ2hhcigpIHsKKyAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IgZW5fdXMgPSAoUnVsZUJhc2VkQ29sbGF0b3IpQ29sbGF0b3IuZ2V0SW5zdGFuY2UoTG9jYWxlLlVTKTsKKyAgICAgICAgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yIGl0ZXI7CisgICAgICAgIGNoYXIgY29kZXBvaW50OworICAgICAgICBTdHJpbmdCdWZmZXIgc291cmNlID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBmb3IgKGNvZGVwb2ludCA9IDB4ZTQwOyBjb2RlcG9pbnQgPCAweGU0MjsgY29kZXBvaW50ICsrKSB7CisgICAgICAgICAgICBpZiAoVUNoYXJhY3Rlci5pc0RlZmluZWQoY29kZXBvaW50KSkgeworICAgICAgICAgICAgICAgIHNvdXJjZS5hcHBlbmQoY29kZXBvaW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpdGVyID0gZW5fdXMuZ2V0Q29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yKHNvdXJjZS50b1N0cmluZygpKTsKKyAgICAgICAgLy8gQSBiYXNpYyB0ZXN0IHRvIHNlZSBpZiBpdCdzIHdvcmtpbmcgYXQgYWxsIAorICAgICAgICBiYWNrQW5kRm9ydGgoaXRlcik7CisgICAgICAgIGZvciAoY29kZXBvaW50ID0gMTsgY29kZXBvaW50IDwgMHhGRkZFOykgeworICAgICAgICAgICAgc291cmNlLmRlbGV0ZSgwLCBzb3VyY2UubGVuZ3RoKCkpOworICAgICAgICAgICAgd2hpbGUgKGNvZGVwb2ludCAlIDB4RkYgIT0gMCkgeworICAgICAgICAgICAgICAgIGlmIChVQ2hhcmFjdGVyLmlzRGVmaW5lZChjb2RlcG9pbnQpKSB7CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5hcHBlbmQoY29kZXBvaW50KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY29kZXBvaW50ICsrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoVUNoYXJhY3Rlci5pc0RlZmluZWQoY29kZXBvaW50KSkgeworICAgICAgICAgICAgICAgIHNvdXJjZS5hcHBlbmQoY29kZXBvaW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGNvZGVwb2ludCAhPSAweEZGRkYpIHsKKyAgICAgICAgICAgICAgICBjb2RlcG9pbnQgKys7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpdGVyID0gZW5fdXMuZ2V0Q29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yKHNvdXJjZS50b1N0cmluZygpKTsKKyAgICAgICAgICAgIC8vIEEgYmFzaWMgdGVzdCB0byBzZWUgaWYgaXQncyB3b3JraW5nIGF0IGFsbCAKKyAgICAgICAgICAgIGJhY2tBbmRGb3J0aChpdGVyKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBUZXN0IGZvciBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IgcHJldmlvdXMgYW5kIG5leHQgZm9yIHRoZSB3aG9sZSBzZXQgb2YKKyAgICAgKiB1bmljb2RlIGNoYXJhY3RlcnMgd2l0aCBub3JtYWxpemF0aW9uIG9uLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3ROb3JtYWxpemVkVW5pY29kZUNoYXIoKQorICAgIHsKKyAgICAgICAgLy8gdGhhaSBzaG91bGQgaGF2ZSBub3JtYWxpemF0aW9uIG9uCisgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yIHRoX3RoID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHRoX3RoID0gKFJ1bGVCYXNlZENvbGxhdG9yKUNvbGxhdG9yLmdldEluc3RhbmNlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBMb2NhbGUoInRoIiwgIlRIIikpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkVycm9yIGNyZWF0aW5nIFRoYWkgY29sbGF0b3IiKTsKKyAgICAgICAgfQorICAgICAgICBTdHJpbmdCdWZmZXIgc291cmNlID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBmb3IgKGNoYXIgY29kZXBvaW50ID0gMHhmNzE7IGNvZGVwb2ludCA8IDB4Zjc2OyBjb2RlcG9pbnQgKyspIHsKKyAgICAgICAgICAgIGlmIChVQ2hhcmFjdGVyLmlzRGVmaW5lZChjb2RlcG9pbnQpKSB7CisgICAgICAgICAgICAgICAgc291cmNlLmFwcGVuZChjb2RlcG9pbnQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvciB0ZW1wIAorICAgICAgICAgICAgICAgICAgICAgICAgPSB0aF90aC5nZXRDb2xsYXRpb25FbGVtZW50SXRlcmF0b3Ioc291cmNlLnRvU3RyaW5nKCkpOworICAgICAgICAvLyBBIGJhc2ljIHRlc3QgdG8gc2VlIGlmIGl0J3Mgd29ya2luZyBhdCBhbGwgCisgICAgICAgIGJhY2tBbmRGb3J0aCh0ZW1wKTsKKyAgICAgICAgZm9yIChjaGFyIGNvZGVwb2ludCA9IDB4MTsgY29kZXBvaW50IDwgMHhmZmZlOykgeworICAgICAgICAgICAgc291cmNlLmRlbGV0ZSgwLCBzb3VyY2UubGVuZ3RoKCkpOworICAgICAgICAgICAgd2hpbGUgKGNvZGVwb2ludCAlIDB4RkYgIT0gMCkgeworICAgICAgICAgICAgICAgIGlmIChVQ2hhcmFjdGVyLmlzRGVmaW5lZChjb2RlcG9pbnQpKSB7CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5hcHBlbmQoY29kZXBvaW50KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY29kZXBvaW50ICsrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoVUNoYXJhY3Rlci5pc0RlZmluZWQoY29kZXBvaW50KSkgeworICAgICAgICAgICAgICAgIHNvdXJjZS5hcHBlbmQoY29kZXBvaW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGNvZGVwb2ludCAhPSAweEZGRkYpIHsKKyAgICAgICAgICAgICAgICBjb2RlcG9pbnQgKys7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IgaXRlciAKKyAgICAgICAgICAgICAgICAgICAgICAgID0gdGhfdGguZ2V0Q29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yKHNvdXJjZS50b1N0cmluZygpKTsKKyAgICAgICAgICAgIC8vIEEgYmFzaWMgdGVzdCB0byBzZWUgaWYgaXQncyB3b3JraW5nIGF0IGFsbCAKKyAgICAgICAgICAgIGJhY2tBbmRGb3J0aChpdGVyKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAqIFRlc3RpbmcgdGhlIGRpc2NvbnRpZ3VvdXMgY29udHJhY3Rpb25zCisgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0RGlzY29udGlndW91cygpIAorICAgIHsKKyAgICAgICAgU3RyaW5nIHJ1bGVzdHIgPSImeiA8IEFCIDwgWFx1MDMwMCA8IEFCQyA8IFhcdTAzMDBcdTAzMTUiOworICAgICAgICBTdHJpbmcgc3JjW10gPSB7IkFEQiIsICJBREJDIiwgIkFcdTAzMTVCIiwgIkFcdTAzMTVCQyIsCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBiYXNlIGNoYXJhY3RlciBibG9ja2VkCisgICAgICAgICAgICAgICAgICAgICAgICAiWERcdTAzMDAiLCAiWERcdTAzMDBcdTAzMTUiLAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm9uIGJsb2NraW5nIGNvbWJpbmluZyBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICJYXHUwMzE5XHUwMzAwIiwgIlhcdTAzMTlcdTAzMDBcdTAzMTUiLAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmxvY2tpbmcgY29tYmluaW5nIGNoYXJhY3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgIlhcdTAzMTRcdTAzMDAiLCAiWFx1MDMxNFx1MDMwMFx1MDMxNSIsCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250cmFjdGlvbiBwcmVmaXgKKyAgICAgICAgICAgICAgICAgICAgICAgICJBQkRDIiwgIkFCXHUwMzE1QyIsIlhcdTAzMDBEXHUwMzE1IiwgCisgICAgICAgICAgICAgICAgICAgICAgICAiWFx1MDMwMFx1MDMxOVx1MDMxNSIsICJYXHUwMzAwXHUwMzFBXHUwMzE1IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuZHMgbm90IHdpdGggYSBjb250cmFjdGlvbiBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICJYXHUwMzE5XHUwMzAwRCIsICJYXHUwMzE5XHUwMzAwXHUwMzE1RCIsIAorICAgICAgICAgICAgICAgICAgICAgICAgIlhcdTAzMDBEXHUwMzE1RCIsICJYXHUwMzAwXHUwMzE5XHUwMzE1RCIsIAorICAgICAgICAgICAgICAgICAgICAgICAgIlhcdTAzMDBcdTAzMUFcdTAzMTVEIgorICAgICAgICB9OworICAgICAgICBTdHJpbmcgdGd0W10gPSB7Ly8gbm9uIGJsb2NraW5nIGNvbWJpbmluZyBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICJBIEQgQiIsICJBIEQgQkMiLCAiQSBcdTAzMTUgQiIsICJBIFx1MDMxNSBCQyIsCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBiYXNlIGNoYXJhY3RlciBibG9ja2VkCisgICAgICAgICAgICAgICAgICAgICAgICAiWCBEIFx1MDMwMCIsICJYIEQgXHUwMzAwXHUwMzE1IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vbiBibG9ja2luZyBjb21iaW5pbmcgY2hhcmFjdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAiWFx1MDMwMCBcdTAzMTkiLCAiWFx1MDMwMFx1MDMxNSBcdTAzMTkiLAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmxvY2tpbmcgY29tYmluaW5nIGNoYXJhY3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgIlggXHUwMzE0IFx1MDMwMCIsICJYIFx1MDMxNCBcdTAzMDBcdTAzMTUiLAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udHJhY3Rpb24gcHJlZml4CisgICAgICAgICAgICAgICAgICAgICAgICAiQUIgREMiLCAiQUIgXHUwMzE1IEMiLCJYXHUwMzAwIEQgXHUwMzE1IiwgCisgICAgICAgICAgICAgICAgICAgICAgICAiWFx1MDMwMFx1MDMxNSBcdTAzMTkiLCAiWFx1MDMwMCBcdTAzMUEgXHUwMzE1IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuZHMgbm90IHdpdGggYSBjb250cmFjdGlvbiBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICJYXHUwMzAwIFx1MDMxOUQiLCAiWFx1MDMwMFx1MDMxNSBcdTAzMTlEIiwgCisgICAgICAgICAgICAgICAgICAgICAgICAiWFx1MDMwMCBEXHUwMzE1RCIsICJYXHUwMzAwXHUwMzE1IFx1MDMxOUQiLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICJYXHUwMzAwIFx1MDMxQVx1MDMxNUQiCisgICAgICAgIH07CisgICAgICAgIGludCBjb3VudCA9IDA7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBSdWxlQmFzZWRDb2xsYXRvciBjb2xsID0gbmV3IFJ1bGVCYXNlZENvbGxhdG9yKHJ1bGVzdHIpOworICAgICAgICAgICAgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yIGl0ZXIgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBjb2xsLmdldENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvcigiIik7CisgICAgICAgICAgICBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IgcmVzdWx0aXRlciAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGNvbGwuZ2V0Q29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yKCIiKTsgICAgCisgICAgICAgICAgICB3aGlsZSAoY291bnQgPCBzcmMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgaXRlci5zZXRUZXh0KHNyY1tjb3VudF0pOworICAgICAgICAgICAgICAgIGludCBzID0gMDsKKyAgICAgICAgICAgICAgICB3aGlsZSAocyA8IHRndFtjb3VudF0ubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IGUgPSB0Z3RbY291bnRdLmluZGV4T2YoJyAnLCBzKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGUgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlID0gdGd0W2NvdW50XS5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBTdHJpbmcgcmVzdWx0c3RyID0gdGd0W2NvdW50XS5zdWJzdHJpbmcocywgZSk7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdGl0ZXIuc2V0VGV4dChyZXN1bHRzdHIpOworICAgICAgICAgICAgICAgICAgICBpbnQgY2UgPSByZXN1bHRpdGVyLm5leHQoKTsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGNlICE9IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5OVUxMT1JERVIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjZSAhPSBpdGVyLm5leHQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycmxuKCJEaXNjb250aWd1b3MgY29udHJhY3Rpb24gdGVzdCBtaXNtYXRjaCBhdCIgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBjb3VudCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgY2UgPSByZXN1bHRpdGVyLm5leHQoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBzID0gZSArIDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGl0ZXIucmVzZXQoKTsKKyAgICAgICAgICAgICAgICBiYWNrQW5kRm9ydGgoaXRlcik7CisgICAgICAgICAgICAgICAgY291bnQgKys7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiRXJyb3IgcnVubmluZyBkaXNjb250aWd1b3VzIHRlc3RzICIgKyBlLnRvU3RyaW5nKCkpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgKiBUZXN0IHRoZSBpbmNyZW1lbnRhbCBub3JtYWxpemF0aW9uCisgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0Tm9ybWFsaXphdGlvbigpCisgICAgeworICAgICAgICBTdHJpbmcgcnVsZXMgPSAiJmEgPCBcdTAzMDBcdTAzMTUgPCBBXHUwMzAwXHUwMzE1IDwgXHUwMzE2XHUwMzE1QiA8IFx1MDMxNlx1MDMwMFx1MDMxNSI7CisgICAgICAgIFN0cmluZyB0ZXN0ZGF0YVtdID0geyJcdTFFRDkiLCAib1x1MDMyM1x1MDMwMiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MDMwMFx1MDMxNSIsICJcdTAzMTVcdTAzMDAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBXHUwMzAwXHUwMzE1QiIsICJBXHUwMzE1XHUwMzAwQiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFcdTAzMTZcdTAzMTVCIiwgIkFcdTAzMTVcdTAzMTZCIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUwMzE2XHUwMzAwXHUwMzE1IiwgIlx1MDMxNVx1MDMwMFx1MDMxNiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFcdTAzMTZcdTAzMDBcdTAzMTVCIiwgIkFcdTAzMTVcdTAzMDBcdTAzMTZCIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUwMzE2XHUwMzE1XHUwMzAwIiwgIkFcdTAzMTZcdTAzMTVcdTAzMDBCIn07CisgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yIGNvbGwgPSBudWxsOworICAgICAgICB0cnkgeworICAgICAgICAgICAgY29sbCA9IG5ldyBSdWxlQmFzZWRDb2xsYXRvcihydWxlcyk7CisgICAgICAgICAgICBjb2xsLnNldERlY29tcG9zaXRpb24oQ29sbGF0b3IuQ0FOT05JQ0FMX0RFQ09NUE9TSVRJT04pOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBpbiBjcmVhdGlvbiBvZiBjb2xsYXRvciB1c2luZyBydWxlcyAiICsgcnVsZXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IgaXRlciA9IGNvbGwuZ2V0Q29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yKCJ0ZXN0aW5nIik7CisgICAgICAgIGZvciAoaW50IGNvdW50ID0gMDsgY291bnQgPCB0ZXN0ZGF0YS5sZW5ndGg7IGNvdW50ICsrKSB7CisgICAgICAgICAgICBpdGVyLnNldFRleHQodGVzdGRhdGFbY291bnRdKTsKKyAgICAgICAgICAgIGJhY2tBbmRGb3J0aChpdGVyKTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY29sbGF0b3IvQ29sbGF0aW9uS2FuYVRlc3QuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9jb2xsYXRvci9Db2xsYXRpb25LYW5hVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4ZmQxYjYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY29sbGF0b3IvQ29sbGF0aW9uS2FuYVRlc3QuamF2YQpAQCAtMCwwICsxLDI2NCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICAgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAkU291cmNlOiAKKyAqICREYXRlOiAKKyAqICRSZXZpc2lvbjogCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworLyoqIAorICogUG9ydCBGcm9tOiAgIElDVTRDIHYyLjEgOiBDb2xsYXRlL0NvbGxhdGlvbkthbmFUZXN0CisgKiBTb3VyY2UgRmlsZTogJElDVTRDUm9vdC9zb3VyY2UvdGVzdC9pbnRsdGVzdC9qYWNvbGwuY3BwCisgKiovCisgCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0LmNvbGxhdG9yOworIAoraW1wb3J0IGNvbS5pYm0uaWN1LmRldi50ZXN0Lio7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC4qOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CisgCitwdWJsaWMgY2xhc3MgQ29sbGF0aW9uS2FuYVRlc3QgZXh0ZW5kcyBUZXN0Rm13a3sKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9ueworICAgICAgICBuZXcgQ29sbGF0aW9uS2FuYVRlc3QoKS5ydW4oYXJncyk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgY2hhcltdW10gdGVzdFNvdXJjZUNhc2VzID0geworICAgICAgICB7MHhmZjlFfSwKKyAgICAgICAgezB4MzA0Mn0sCisgICAgICAgIHsweDMwQTJ9LAorICAgICAgICB7MHgzMDQyLCAweDMwNDJ9LAorICAgICAgICB7MHgzMEEyLCAweDMwRkN9LAorICAgICAgICB7MHgzMEEyLCAweDMwRkMsIDB4MzBDOH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIDYgKi8KKyAgICB9OworCisgICAgcHJpdmF0ZSBzdGF0aWMgY2hhcltdW10gdGVzdFRhcmdldENhc2VzID0geworICAgICAgICB7MHhGRjlGfSwKKyAgICAgICAgezB4MzBBMn0sCisgICAgICAgIHsweDMwNDIsIDB4MzA0Mn0sCisgICAgICAgIHsweDMwQTIsIDB4MzBGQ30sCisgICAgICAgIHsweDMwQTIsIDB4MzBGQywgMHgzMEM4fSwKKyAgICAgICAgezB4MzA0MiwgMHgzMDQyLCAweDMwNjh9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIDYgKi8KKyAgICB9OworCisgICAgcHJpdmF0ZSBzdGF0aWMgaW50W10gcmVzdWx0cyA9IHsKKyAgICAgICAgLTEsCisgICAgICAgIDAsICAgLy9Db2xsYXRvcjo6TEVTUywgLyogS2F0YWthbmFzIGFuZCBIaXJhZ2FuYXMgYXJlIGVxdWFsIG9uIHRlcnRpYXJ5IGxldmVsKElDVSAyLjApKi8KKyAgICAgICAgLTEsCisgICAgICAgIDEsIC8vIENvbGxhdG9yOjpMRVNTLCAvKiBQcm9sb25nZWQgc291bmQgbWFyayBzb3J0cyBCRUZPUkUgZXF1aXZhbGVudCB2b3dlbCAoSUNVIDIuMCkqLworICAgICAgICAtMSwKKyAgICAgICAgLTEsICAgIC8vQ29sbGF0b3I6OkdSRUFURVIgLyogUHJvbG9uZ2VkIHNvdW5kIG1hcmsgc29ydHMgQkVGT1JFIGVxdWl2YWxlbnQgdm93ZWwgKElDVSAyLjApKi8vKiAgNiAqLworICAgIH07CisKKyAgICBwcml2YXRlIHN0YXRpYyBjaGFyW11bXSB0ZXN0QmFzZUNhc2VzID0geworICAgICAgICB7MHgzMEFCfSwKKyAgICAgICAgezB4MzBBQiwgMHgzMEFEfSwKKyAgICAgICAgezB4MzBBRH0sCisgICAgICAgIHsweDMwQUQsIDB4MzBBRH0KKyAgICB9OworCisgICAgcHJpdmF0ZSBzdGF0aWMgY2hhcltdW10gdGVzdFBsYWluRGFrdXRlbkhhbmRha3V0ZW5DYXNlcyA9IHsKKyAgICAgICAgezB4MzBDRiwgMHgzMEFCfSwKKyAgICAgICAgezB4MzBEMCwgMHgzMEFCfSwKKyAgICAgICAgezB4MzBDRiwgMHgzMEFEfSwKKyAgICAgICAgezB4MzBEMCwgMHgzMEFEfQorICAgIH07CisKKyAgICBwcml2YXRlIHN0YXRpYyBjaGFyW11bXSB0ZXN0U21hbGxMYXJnZUNhc2VzID0geworICAgICAgICB7MHgzMEMzLCAweDMwQ0Z9LAorICAgICAgICB7MHgzMEM0LCAweDMwQ0Z9LAorICAgICAgICB7MHgzMEMzLCAweDMwRDB9LAorICAgICAgICB7MHgzMEM0LCAweDMwRDB9CisgICAgfTsKKworICAgIHByaXZhdGUgc3RhdGljIGNoYXJbXVtdIHRlc3RLYXRha2FuYUhpcmFnYW5hQ2FzZXMgPSB7CisgICAgICAgIHsweDMwNDIsIDB4MzBDM30sCisgICAgICAgIHsweDMwQTIsIDB4MzBDM30sCisgICAgICAgIHsweDMwNDIsIDB4MzBDNH0sCisgICAgICAgIHsweDMwQTIsIDB4MzBDNH0KKyAgICB9OworCisgICAgcHJpdmF0ZSBzdGF0aWMgY2hhcltdW10gdGVzdENob29vbktpZ29vQ2FzZXMgPSB7CisgICAgICAgIC8qMCovIHsweDMwQUIsIDB4MzBGQywgMHgzMDQyfSwKKyAgICAgICAgLyoxKi8gezB4MzBBQiwgMHgzMEZDLCAweDMwQTJ9LAorICAgICAgICAvKjIqLyB7MHgzMEFCLCAweDMwQTQsIDB4MzA0Mn0sCisgICAgICAgIC8qMyovIHsweDMwQUIsIDB4MzBBNCwgMHgzMEEyfSwKKyAgICAgICAgLyo2Ki8gezB4MzBBRCwgMHgzMEZDLCAweDMwNDJ9LCAvKiBQcm9sb25nZWQgc291bmQgbWFyayBzb3J0cyBCRUZPUkUgZXF1aXZhbGVudCB2b3dlbCAoSUNVIDIuMCkqLworICAgICAgICAvKjcqLyB7MHgzMEFELCAweDMwRkMsIDB4MzBBMn0sIC8qIFByb2xvbmdlZCBzb3VuZCBtYXJrIHNvcnRzIEJFRk9SRSBlcXVpdmFsZW50IHZvd2VsIChJQ1UgMi4wKSovCisgICAgICAgIC8qNCovIHsweDMwQUQsIDB4MzBBNCwgMHgzMDQyfSwKKyAgICAgICAgLyo1Ki8gezB4MzBBRCwgMHgzMEE0LCAweDMwQTJ9CisgICAgfTsKKyAgICAgICAgCisgICAgcHJpdmF0ZSBDb2xsYXRvciBteUNvbGxhdGlvbiA9IG51bGw7CisgICAgCisgICAgcHVibGljIENvbGxhdGlvbkthbmFUZXN0KCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgbXlDb2xsYXRpb24gPSBDb2xsYXRvci5nZXRJbnN0YW5jZShMb2NhbGUuSkFQQU5FU0UpOyAgICAKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogaW4gY3JlYXRpb24gb2YgY29sbGF0b3Igb2YgSkFQQU5FU0UgbG9jYWxlIik7CisgICAgICAgICAgICByZXR1cm47ICAgCisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLy8gcGVyZm9ybXMgdGVzdCB3aXRoIHN0cmVuZ3RoIFRFUklBUlkKKyAgICBwdWJsaWMgdm9pZCBUZXN0VGVydGlhcnkoKSB7CisgICAgICAgIGludCBpID0gMDsKKyAgICAgICAgbXlDb2xsYXRpb24uc2V0U3RyZW5ndGgoQ29sbGF0b3IuVEVSVElBUlkpOworICAgICAgICAKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IDY7IGkrKykgeworICAgICAgICAgICAgZG9UZXN0KHRlc3RTb3VyY2VDYXNlc1tpXSwgdGVzdFRhcmdldENhc2VzW2ldLCByZXN1bHRzW2ldKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIFRlc3RpbmcgYmFzZSBsZXR0ZXJzICovCisgICAgcHVibGljIHZvaWQgVGVzdEJhc2UoKSB7CisgICAgICAgIGludCBpOworICAgICAgICBteUNvbGxhdGlvbi5zZXRTdHJlbmd0aChDb2xsYXRvci5QUklNQVJZKTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IDMgOyBpKyspIHsKKyAgICAgICAgICAgIGRvVGVzdCh0ZXN0QmFzZUNhc2VzW2ldLCB0ZXN0QmFzZUNhc2VzW2kgKyAxXSwgLTEpOworICAgICAgICB9CisgICAgfQorCisgICAgLyogVGVzdGluZyBwbGFpbiwgRGFrdS10ZW4sIEhhbmRha3UtdGVuIGxldHRlcnMgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0UGxhaW5EYWt1dGVuSGFuZGFrdXRlbigpIHsKKyAgICAgICAgaW50IGk7CisgICAgICAgIG15Q29sbGF0aW9uLnNldFN0cmVuZ3RoKENvbGxhdG9yLlNFQ09OREFSWSk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCAzIDsgaSsrKSB7CisgICAgICAgICAgICBkb1Rlc3QodGVzdFBsYWluRGFrdXRlbkhhbmRha3V0ZW5DYXNlc1tpXSwgdGVzdFBsYWluRGFrdXRlbkhhbmRha3V0ZW5DYXNlc1tpICsgMV0sIC0xKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIAorICAgICogVGVzdCBTbWFsbCwgTGFyZ2UgbGV0dGVycworICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdFNtYWxsTGFyZ2UoKSB7CisgICAgICAgIGludCBpOworICAgICAgICBteUNvbGxhdGlvbi5zZXRTdHJlbmd0aChDb2xsYXRvci5URVJUSUFSWSk7CisKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IDMgOyBpKyspIHsKKyAgICAgICAgICAgIGRvVGVzdCh0ZXN0U21hbGxMYXJnZUNhc2VzW2ldLCB0ZXN0U21hbGxMYXJnZUNhc2VzW2kgKyAxXSwgLTEpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoKKyAgICAqIFRlc3QgS2F0YWthbmEsIEhpcmFnYW5hIGxldHRlcnMKKyAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RLYXRha2FuYUhpcmFnYW5hKCkgeworICAgICAgICBpbnQgaTsKKyAgICAgICAgbXlDb2xsYXRpb24uc2V0U3RyZW5ndGgoQ29sbGF0b3IuUVVBVEVSTkFSWSk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCAzIDsgaSsrKSB7CisgICAgICAgICAgICBkb1Rlc3QodGVzdEthdGFrYW5hSGlyYWdhbmFDYXNlc1tpXSwgdGVzdEthdGFrYW5hSGlyYWdhbmFDYXNlc1tpICsgMV0sIC0xKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qCisgICAgKiBUZXN0IENob28tb24ga2lnb28KKyAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RDaG9vb25LaWdvbygpIHsKKyAgICAgICAgaW50IGk7CisgICAgICAgIG15Q29sbGF0aW9uLnNldFN0cmVuZ3RoKENvbGxhdG9yLlFVQVRFUk5BUlkpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNyA7IGkrKykgeworICAgICAgICAgICAgZG9UZXN0KHRlc3RDaG9vb25LaWdvb0Nhc2VzW2ldLCB0ZXN0Q2hvb29uS2lnb29DYXNlc1tpICsgMV0sIC0xKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIG1haW4gdGVzdCByb3V0aW5lLCB0ZXN0cyBydWxlcyBzcGVjaWZpYyB0byAiS2FuYSIgbG9jYWxlCisgICAgcHJpdmF0ZSB2b2lkIGRvVGVzdChjaGFyW10gc291cmNlLCBjaGFyW10gdGFyZ2V0LCBpbnQgcmVzdWx0KXsKKyAgICAgICAgCisgICAgICAgIFN0cmluZyBzID0gbmV3IFN0cmluZyhzb3VyY2UpOworICAgICAgICBTdHJpbmcgdCA9IG5ldyBTdHJpbmcodGFyZ2V0KTsKKyAgICAgICAgaW50IGNvbXBhcmVSZXN1bHQgPSBteUNvbGxhdGlvbi5jb21wYXJlKHMsIHQpOworICAgICAgICBDb2xsYXRpb25LZXkgc29ydEtleTEsIHNvcnRLZXkyOworICAgICAgICBzb3J0S2V5MSA9IG15Q29sbGF0aW9uLmdldENvbGxhdGlvbktleShzKTsKKyAgICAgICAgc29ydEtleTIgPSBteUNvbGxhdGlvbi5nZXRDb2xsYXRpb25LZXkodCk7CisgICAgICAgIGludCBrZXlSZXN1bHQgPSBzb3J0S2V5MS5jb21wYXJlVG8oc29ydEtleTIpOworICAgICAgICByZXBvcnRDUmVzdWx0KHMsIHQsIHNvcnRLZXkxLCBzb3J0S2V5MiwgY29tcGFyZVJlc3VsdCwga2V5UmVzdWx0LCBjb21wYXJlUmVzdWx0LCByZXN1bHQpOworICAgICAgICAKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSB2b2lkIHJlcG9ydENSZXN1bHQoIFN0cmluZyBzb3VyY2UsIFN0cmluZyB0YXJnZXQsIENvbGxhdGlvbktleSBzb3VyY2VLZXksIENvbGxhdGlvbktleSB0YXJnZXRLZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb21wYXJlUmVzdWx0LCBpbnQga2V5UmVzdWx0LCBpbnQgaW5jUmVzdWx0LCBpbnQgZXhwZWN0ZWRSZXN1bHQgKXsKKyAgICAgICAgaWYgKGV4cGVjdGVkUmVzdWx0IDwgLTEgfHwgZXhwZWN0ZWRSZXN1bHQgPiAxKSB7CisgICAgICAgICAgICBlcnJsbigiKioqKiogaW52YWxpZCBjYWxsIHRvIHJlcG9ydENSZXN1bHQgKioqKiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYm9vbGVhbiBvazEgPSAoY29tcGFyZVJlc3VsdCA9PSBleHBlY3RlZFJlc3VsdCk7CisgICAgICAgIGJvb2xlYW4gb2syID0gKGtleVJlc3VsdCA9PSBleHBlY3RlZFJlc3VsdCk7CisgICAgICAgIGJvb2xlYW4gb2szID0gKGluY1Jlc3VsdCA9PSBleHBlY3RlZFJlc3VsdCk7CisKKyAgICAgICAgaWYgKG9rMSAmJiBvazIgJiYgb2szICYmICFpc1ZlcmJvc2UoKSl7CisgICAgICAgICAgICByZXR1cm47ICAgIAorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgU3RyaW5nIG1zZzEgPSBvazE/ICJPazogY29tcGFyZShcIiIgOiAiRkFJTDogY29tcGFyZShcIiI7CisgICAgICAgICAgICBTdHJpbmcgbXNnMiA9ICJcIiwgXCIiOworICAgICAgICAgICAgU3RyaW5nIG1zZzMgPSAiXCIpIHJldHVybmVkICI7CisgICAgICAgICAgICBTdHJpbmcgbXNnNCA9ICI7IGV4cGVjdGVkICI7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFN0cmluZyBzRXhwZWN0ID0gbmV3IFN0cmluZygiIik7CisgICAgICAgICAgICBTdHJpbmcgc1Jlc3VsdCA9IG5ldyBTdHJpbmcoIiIpOworICAgICAgICAgICAgc1Jlc3VsdCA9IGFwcGVuZENvbXBhcmVSZXN1bHQoY29tcGFyZVJlc3VsdCwgc1Jlc3VsdCk7CisgICAgICAgICAgICBzRXhwZWN0ID0gYXBwZW5kQ29tcGFyZVJlc3VsdChleHBlY3RlZFJlc3VsdCwgc0V4cGVjdCk7CisgICAgICAgICAgICBpZiAob2sxKSB7CisgICAgICAgICAgICAgICAgbG9nbG4obXNnMSArIHNvdXJjZSArIG1zZzIgKyB0YXJnZXQgKyBtc2czICsgc1Jlc3VsdCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGVycmxuKG1zZzEgKyBzb3VyY2UgKyBtc2cyICsgdGFyZ2V0ICsgbXNnMyArIHNSZXN1bHQgKyBtc2c0ICsgc0V4cGVjdCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1zZzEgPSBvazIgPyAiT2s6IGtleShcIiIgOiAiRkFJTDoga2V5KFwiIjsKKyAgICAgICAgICAgIG1zZzIgPSAiXCIpLmNvbXBhcmVUbyhrZXkoXCIiOworICAgICAgICAgICAgbXNnMyA9ICJcIikpIHJldHVybmVkICI7CisgICAgICAgICAgICBzUmVzdWx0ID0gYXBwZW5kQ29tcGFyZVJlc3VsdChrZXlSZXN1bHQsIHNSZXN1bHQpOworICAgICAgICAgICAgaWYgKG9rMikgeworICAgICAgICAgICAgICAgIGxvZ2xuKG1zZzEgKyBzb3VyY2UgKyBtc2cyICsgdGFyZ2V0ICsgbXNnMyArIHNSZXN1bHQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBlcnJsbihtc2cxICsgc291cmNlICsgbXNnMiArIHRhcmdldCArIG1zZzMgKyBzUmVzdWx0ICsgbXNnNCArIHNFeHBlY3QpOworICAgICAgICAgICAgICAgIG1zZzEgPSAiICAiOworICAgICAgICAgICAgICAgIG1zZzIgPSAiIHZzLiAiOworICAgICAgICAgICAgICAgIGVycmxuKG1zZzEgKyBwcmV0dGlmeShzb3VyY2VLZXkpICsgbXNnMiArIHByZXR0aWZ5KHRhcmdldEtleSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBtc2cxID0gb2szID8gIk9rOiBpbmNDb21wYXJlKFwiIiA6ICJGQUlMOiBpbmNDb21wYXJlKFwiIjsKKyAgICAgICAgICAgIG1zZzIgPSAiXCIsIFwiIjsKKyAgICAgICAgICAgIG1zZzMgPSAiXCIpIHJldHVybmVkICI7CisKKyAgICAgICAgICAgIHNSZXN1bHQgPSBhcHBlbmRDb21wYXJlUmVzdWx0KGluY1Jlc3VsdCwgc1Jlc3VsdCk7CisKKyAgICAgICAgICAgIGlmIChvazMpIHsKKyAgICAgICAgICAgICAgICBsb2dsbihtc2cxICsgc291cmNlICsgbXNnMiArIHRhcmdldCArIG1zZzMgKyBzUmVzdWx0KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZXJybG4obXNnMSArIHNvdXJjZSArIG1zZzIgKyB0YXJnZXQgKyBtc2czICsgc1Jlc3VsdCArIG1zZzQgKyBzRXhwZWN0KTsKKyAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgCisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBTdHJpbmcgYXBwZW5kQ29tcGFyZVJlc3VsdChpbnQgcmVzdWx0LCBTdHJpbmcgdGFyZ2V0KXsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSAtMSkgeworICAgICAgICAgICAgdGFyZ2V0ICs9ICJMRVNTIjsKKyAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gMCkgeworICAgICAgICAgICAgdGFyZ2V0ICs9ICJFUVVBTCI7CisgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IDEpIHsKKyAgICAgICAgICAgIHRhcmdldCArPSAiR1JFQVRFUiI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBTdHJpbmcgaHVoID0gIj8iOworICAgICAgICAgICAgdGFyZ2V0ICs9IGh1aCArIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdGFyZ2V0OworICAgIH0KKyAgICAKKyAgICBTdHJpbmcgcHJldHRpZnkoQ29sbGF0aW9uS2V5IHNvdXJjZUtleSkgeworICAgICAgICBpbnQgaTsKKyAgICAgICAgYnl0ZVtdIGJ5dGVzPSBzb3VyY2VLZXkudG9CeXRlQXJyYXkoKTsKKyAgICAgICAgU3RyaW5nIHRhcmdldCA9ICJbIjsKKyAgICAKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICB0YXJnZXQgKz0gSW50ZWdlci50b0hleFN0cmluZyhieXRlc1tpXSk7CisgICAgICAgICAgICB0YXJnZXQgKz0gIiAiOworICAgICAgICB9CisgICAgICAgIHRhcmdldCArPSAiXSI7CisgICAgICAgIHJldHVybiB0YXJnZXQ7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9jb2xsYXRvci9Db2xsYXRpb25NaXNjVGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NvbGxhdG9yL0NvbGxhdGlvbk1pc2NUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDgxYTdiZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9jb2xsYXRvci9Db2xsYXRpb25NaXNjVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTY2NiBAQAorIC8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAgICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogJFNvdXJjZTogCisgKiAkRGF0ZTogCisgKiAkUmV2aXNpb246IAorICoKKyAqKip4KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCisvKiogCisgKiBQb3J0IEZyb206ICAgSUNVNEMgdjIuMSA6IGNpbnRsdGVzdAorICogU291cmNlIEZpbGU6ICRJQ1U0Q1Jvb3Qvc291cmNlL3Rlc3QvY2ludGx0ZXN0L2Ntc2Njb2xsLmMKKyAqKi8KKyAKK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3QuY29sbGF0b3I7CisKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYudGVzdC4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuKjsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLlV0aWxpdHk7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5JQ1VMb2NhbGVEYXRhOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CisKK3B1YmxpYyBjbGFzcyBDb2xsYXRpb25NaXNjVGVzdCBleHRlbmRzIFRlc3RGbXdreworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIG5ldyBDb2xsYXRpb25NaXNjVGVzdCgpLnJ1bihhcmdzKTsKKyAgICAgICAgLy8gbmV3IENvbGxhdGlvbk1pc2NUZXN0KCkuVGVzdExvY2FsZVJ1bGVCYXNlZENvbGxhdG9ycygpOyAKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdFJ1bGVPcHRpb25zKCkgeworICAgICAgIC8vIHZhbHVlcyBoZXJlIGFyZSBoYXJkY29kZWQgYW5kIGFyZSBjb3JyZWN0IGZvciB0aGUgY3VycmVudCBVQ0Egd2hlbiAKKyAgICAgICAvLyB0aGUgVUNBIGNoYW5nZXMsIG9uZSBtaWdodCBiZSBmb3JjZWQgdG8gY2hhbmdlIHRoZXNlIHZhbHVlcy4gCisgICAgICAgLy8gKFxcdTAyZDAsIFxcVTAwMDEwRkZGQyBldGMuLi4pIAorICAgICAgICBTdHJpbmdbXSBydWxlcyA9IHsKKyAgICAgICAgICAgIC8vIGNhbm5vdCB0ZXN0IHRoaXMgYW55bW9yZSwgYXMgW2xhc3QgcHJpbWFyeSBpZ25vcmFibGVdIGRvZXNuJ3QgCisgICAgICAgICAgICAvLyBoYXZlIGEgIGNvZGUgcG9pbnQgYXNzb2NpYXRlZCB0byBpdCBhbnltb3JlICAKKyAgICAgICAgICAgIC8vICImW2JlZm9yZSAzXVtsYXN0IHByaW1hcnkgaWdub3JhYmxlXTw8PGsiLAorICAgICAgICAgICAgLy8gLSBhbGwgYmVmb3JlcyBoZXJlIGFtb3VudCB0byB6ZXJvICAgICAgIAorICAgICAgICAgICAgIiZbYmVmb3JlIDFdW2ZpcnN0IHRlcnRpYXJ5IGlnbm9yYWJsZV08PDxhIiwKKyAgICAgICAgICAgICImW2JlZm9yZSAxXVtsYXN0IHRlcnRpYXJ5IGlnbm9yYWJsZV08PDxhIiwgIAorICAgICAgICAgICAgIiZbYmVmb3JlIDFdW2ZpcnN0IHNlY29uZGFyeSBpZ25vcmFibGVdPDw8YSIsCisgICAgICAgICAgICAiJltiZWZvcmUgMV1bbGFzdCBzZWNvbmRhcnkgaWdub3JhYmxlXTw8PGEiLCAKKyAgICAgICAgICAgIC8vICdub3JtYWwnIGJlZm9yZXMgIAorICAgICAgICAgICAgIiZbYmVmb3JlIDFdW2ZpcnN0IHByaW1hcnkgaWdub3JhYmxlXTw8PGM8PDxiICZbZmlyc3QgcHJpbWFyeSBpZ25vcmFibGVdPGEiLAorICAgICAgICAgICAgLy8gd2UgZG9uJ3QgaGF2ZSBhIGNvZGUgcG9pbnQgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgbGFzdCBwcmltYXJ5IAorICAgICAgICAgICAgLy8gaWdub3JhYmxlIAorICAgICAgICAgICAgIiZbYmVmb3JlIDJdW2xhc3QgcHJpbWFyeSBpZ25vcmFibGVdPDw8Yzw8PGIgJltsYXN0IHByaW1hcnkgaWdub3JhYmxlXTxhIiwKKyAgICAgICAgICAgICImW2JlZm9yZSAxXVtmaXJzdCB2YXJpYWJsZV08PDxjPDw8YiAmW2ZpcnN0IHZhcmlhYmxlXTxhIiwKKyAgICAgICAgICAgICImW2xhc3QgdmFyaWFibGVdPGEgJltiZWZvcmUgMV1bbGFzdCB2YXJpYWJsZV08PDxjPDw8YiAiLAorICAgICAgICAgICAgIiZbZmlyc3QgcmVndWxhcl08YSAmW2JlZm9yZSAxXVtmaXJzdCByZWd1bGFyXTxiIiwgCisgICAgICAgICAgICAiJltiZWZvcmUgMV1bbGFzdCByZWd1bGFyXTxiICZbbGFzdCByZWd1bGFyXTxhIiwKKyAgICAgICAgICAgICImW2JlZm9yZSAxXVtmaXJzdCBpbXBsaWNpdF08YiAmW2ZpcnN0IGltcGxpY2l0XTxhIiwKKyAgICAgICAgICAgICImW2JlZm9yZSAxXVtsYXN0IGltcGxpY2l0XTxiICZbbGFzdCBpbXBsaWNpdF08YSIsIAorICAgICAgICAgICAgIiZbbGFzdCB2YXJpYWJsZV08eiZbbGFzdCBwcmltYXJ5IGlnbm9yYWJsZV08eCZbbGFzdCBzZWNvbmRhcnkgaWdub3JhYmxlXTw8eSZbbGFzdCB0ZXJ0aWFyeSBpZ25vcmFibGVdPDw8dyZbdG9wXTx1IiwKKyAgICAgICAgICB9OworICAgICAgICBTdHJpbmdbXVtdIGRhdGEgPSB7CisgICAgICAgICAgICAgICAgLy8geyJrIiwgIlx1MjBlMyJ9LAorICAgICAgICAgICAgICAgIHsiXFx1MDAwMCIsICJhIn0sIC8vIHlvdSBjYW5ub3QgZ28gYmVmb3JlIGZpcnN0IHRlcnRpYXJ5IGlnbm9yYWJsZSAKKyAgICAgICAgICAgICAgICB7IlxcdTAwMDAiLCAiYSJ9LCAvLyB5b3UgY2Fubm90IGdvIGJlZm9yZSBsYXN0IHRlcnRpYXJ5IGlnbm9yYWJsZSAKKyAgICAgICAgICAgICAgICB7IlxcdTAwMDAiLCAiYSJ9LCAvLyB5b3UgY2Fubm90IGdvIGJlZm9yZSBmaXJzdCBzZWNvbmRhcnkgaWdub3JhYmxlCisgICAgICAgICAgICAgICAgeyJcXHUwMDAwIiwgImEifSwgLy8geW91IGNhbm5vdCBnbyBiZWZvcmUgZmlyc3Qgc2Vjb25kYXJ5IGlnbm9yYWJsZQorICAgICAgICAgICAgICAgIHsiYyIsICJiIiwgIlxcdTAzMzIiLCAiYSJ9LAorICAgICAgICAgICAgICAgIHsiXFx1MDMzMiIsICJcXHUyMGUzIiwgImMiLCAiYiIsICJhIn0sCisgICAgICAgICAgICAgICAgeyJjIiwgImIiLCAiXFx1MDAwOSIsICJhIiwgIlxcdTAwMGEifSwKKyAgICAgICAgICAgICAgICB7ImMiLCAiYiIsICJcXHVEODAwXFx1REYyMyIsICJhIiwgIlxcdTAyZDAifSwKKyAgICAgICAgICAgICAgICB7ImIiLCAiXFx1MDJkMCIsICJhIiwgIlxcdTAyZDEifSwKKyAgICAgICAgICAgICAgICB7ImIiLCAiXFx1ZDgwMVxcdWRjMjUiLCAiYSIsICJcXHU0ZTAwIn0sCisgICAgICAgICAgICAgICAgeyJiIiwgIlxcdTRlMDAiLCAiYSIsICJcXHU0ZTAxIn0sCisgICAgICAgICAgICAgICAgeyJiIiwgIlxcVTAwMTBGRkZDIiwgImEifSwKKyAgICAgICAgICAgICAgICB7Ilx1ZmZmYiIsICAidyIsICJ5IiwgIlx1MjBlMyIsICJ4IiwgIlx1MTM3YyIsICJ6IiwgInUifSwKKyAgICAgICAgfTsKKyAgICAgICAgCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpPCBydWxlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgZ2VuZXJpY1J1bGVzU3RhcnRlcihydWxlc1tpXSwgZGF0YVtpXSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgdm9pZCBnZW5lcmljUnVsZXNTdGFydGVyKFN0cmluZyBydWxlcywgU3RyaW5nW10gcykgeworICAgICAgICBnZW5lcmljUnVsZXNUZXN0V2l0aFJlc3VsdChydWxlcywgcywgLTEpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGdlbmVyaWNSdWxlc1Rlc3RXaXRoUmVzdWx0KFN0cmluZyBydWxlcywgU3RyaW5nW10gcywgaW50IHJlc3VsdCkgeworICAgICAgICAKKyAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IgY29sbCA9IG51bGw7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjb2xsID0gbmV3IFJ1bGVCYXNlZENvbGxhdG9yKHJ1bGVzKTsKKyAgICAgICAgICAgIC8vIGxvZ2xuKCJSdWxlcyBzdGFydGVyIGZvciAiICsgcnVsZXMpOworICAgICAgICAgICAgZ2VuZXJpY09yZGVyaW5nVGVzdFdpdGhSZXN1bHQoY29sbCwgcywgcmVzdWx0KTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJVbmFibGUgdG8gb3BlbiBjb2xsYXRvciB3aXRoIHJ1bGVzICIgKyBydWxlcyk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgdm9pZCBnZW5lcmljT3JkZXJpbmdUZXN0V2l0aFJlc3VsdChDb2xsYXRvciBjb2xsLCBTdHJpbmdbXSBzLCBpbnQgcmVzdWx0KSB7CisgICAgICAgIFN0cmluZyB0MSA9ICIiOworICAgICAgICBTdHJpbmcgdDIgPSAiIjsKKyAgICAgICAgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yIGl0ZXIgPSBudWxsOworICAgICAgICAKKyAgICAgICAgaW50IGkgPSAwLCBqID0gMDsKKyAgICAgICAgLy8gbG9nbG4oInRlc3Rpbmcgc2VxdWVuY2U6Iik7CisgICAgICAgIGZvcihpID0gMDsgaSA8IHMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIC8vIGxvZ2xuKHNbaV0pOworICAgICAgICB9CisgICAgICAgIHRyeSB7CisgICAgICAgIGl0ZXIgPSAoKFJ1bGVCYXNlZENvbGxhdG9yKSBjb2xsKS5nZXRDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IodDEpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkNyZWF0aW9uIG9mIGl0ZXJhdG9yIGZhaWxlZCIpOworICAgICAgICB9CisgICAgICAgIGZvcihpID0gMDsgaSA8IHMubGVuZ3RoIC0gMTsgaSsrKSB7CisgICAgICAgICAgICBmb3IoaiA9IGkrMTsgaiA8IHMubGVuZ3RoOyBqKyspIHsKKyAgICAgICAgICAgICAgICB0MSA9IFV0aWxpdHkudW5lc2NhcGUoc1tpXSk7CisgICAgICAgICAgICAgICAgdDIgPSBVdGlsaXR5LnVuZXNjYXBlKHNbal0pOworICAgICAgICAgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbihpICsgIiAiICsgaik7CisgICAgICAgICAgICAgICAgZG9UZXN0KGNvbGwsIHQxLCB0MiwgcmVzdWx0KTsKKyAgICAgICAgICAgICAgICAvKiBzeW53ZWUgOiBhZGRlZCBjb2xsYXRpb24gZWxlbWVudCBpdGVyYXRvciB0ZXN0ICovCisgICAgICAgICAgICAgICAgaXRlci5zZXRUZXh0KHQxKTsKKyAgICAgICAgICAgICAgICBiYWNrQW5kRm9ydGgoaXRlcik7CisgICAgICAgICAgICAgICAgaXRlci5zZXRUZXh0KHQyKTsKKyAgICAgICAgICAgICAgICBiYWNrQW5kRm9ydGgoaXRlcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGRvVGVzdChDb2xsYXRvciBteUNvbGxhdGlvbiwgU3RyaW5nIHNvdXJjZSwgU3RyaW5nIHRhcmdldCwgaW50IHJlc3VsdCkgeworICAgICAgICBkb1Rlc3RWYXJpYW50KG15Q29sbGF0aW9uLCBzb3VyY2UsIHRhcmdldCwgcmVzdWx0KTsKKyAgICAgICAgaWYocmVzdWx0IDwgMCkgeworICAgICAgICAgICAgZG9UZXN0VmFyaWFudChteUNvbGxhdGlvbiwgdGFyZ2V0LCBzb3VyY2UsIDEpOworICAgICAgICB9IGVsc2UgaWYocmVzdWx0ID4gMCkgeworICAgICAgICAgICAgZG9UZXN0VmFyaWFudChteUNvbGxhdGlvbiwgdGFyZ2V0LCBzb3VyY2UsIC0xKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRvVGVzdFZhcmlhbnQobXlDb2xsYXRpb24sIHRhcmdldCwgc291cmNlLCAwKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB2b2lkIGRvVGVzdFZhcmlhbnQoQ29sbGF0b3IgbXlDb2xsYXRpb24sIFN0cmluZyBzb3VyY2UsIFN0cmluZyB0YXJnZXQsIGludCByZXN1bHQpIHsKKyAgICAgICAgaW50IGluY1Jlc3VsdCA9IHJlc3VsdDsKKyAgICAgICAgaW50IGNvbXBhcmVSZXN1bHQgID0gbXlDb2xsYXRpb24uY29tcGFyZShzb3VyY2UsIHRhcmdldCk7CisgICAgICAgIENvbGxhdGlvbktleSBzb3J0S2V5MSA9IG15Q29sbGF0aW9uLmdldENvbGxhdGlvbktleShzb3VyY2UpOworICAgICAgICBDb2xsYXRpb25LZXkgc29ydEtleTIgPSBteUNvbGxhdGlvbi5nZXRDb2xsYXRpb25LZXkodGFyZ2V0KTsKKyAgICAgICAgCisgICAgICAgIGludCB0ZW1wPSBzb3J0S2V5MS5jb21wYXJlVG8oc29ydEtleTIpOworICAgICAgICBpbnQga2V5UmVzdWx0OworICAgICAgICBpZih0ZW1wIDwgMCkgeworICAgICAgICAgICAga2V5UmVzdWx0PS0xOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYodGVtcCA+IDApIHsKKyAgICAgICAgICAgIGtleVJlc3VsdD0gMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGtleVJlc3VsdCA9IDA7CisgICAgICAgIH0KKyAgICAgICAgcmVwb3J0Q1Jlc3VsdCggc291cmNlLCB0YXJnZXQsIHNvcnRLZXkxLCBzb3J0S2V5MiwgY29tcGFyZVJlc3VsdCwga2V5UmVzdWx0LCBpbmNSZXN1bHQsIHJlc3VsdCApOworICAgIH0KKyAgICAKKyAgICB2b2lkIHJlcG9ydENSZXN1bHQoU3RyaW5nIHNvdXJjZSwgU3RyaW5nIHRhcmdldCwgQ29sbGF0aW9uS2V5IHNvdXJjZUtleSwgQ29sbGF0aW9uS2V5IHRhcmdldEtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb21wYXJlUmVzdWx0LCBpbnQga2V5UmVzdWx0LCBpbnQgaW5jUmVzdWx0LCBpbnQgZXhwZWN0ZWRSZXN1bHQgKSB7CisgICAgICAgIGlmIChleHBlY3RlZFJlc3VsdCA8IC0xIHx8IGV4cGVjdGVkUmVzdWx0ID4gMSkgeworICAgICAgICAgICAgZXJybG4oIioqKioqIGludmFsaWQgY2FsbCB0byByZXBvcnRDUmVzdWx0ICoqKioiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBib29sZWFuIG9rMSA9IChjb21wYXJlUmVzdWx0ID09IGV4cGVjdGVkUmVzdWx0KTsKKyAgICAgICAgYm9vbGVhbiBvazIgPSAoa2V5UmVzdWx0ID09IGV4cGVjdGVkUmVzdWx0KTsKKyAgICAgICAgYm9vbGVhbiBvazMgPSAoaW5jUmVzdWx0ID09IGV4cGVjdGVkUmVzdWx0KTsKKyAgICAgICAgaWYgKG9rMSAmJiBvazIgJiYgb2szIC8qIHN5bndlZSB0byB1bmRvICYmICFpc1ZlcmJvc2UoKSovKSB7CisgICAgICAgICAgICByZXR1cm47ICAgIAorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgU3RyaW5nIG1zZzEgPSBvazE/ICJPazogY29tcGFyZShcIiIgOiAiRkFJTDogY29tcGFyZShcIiI7CisgICAgICAgICAgICBTdHJpbmcgbXNnMiA9ICJcIiwgXCIiOworICAgICAgICAgICAgU3RyaW5nIG1zZzMgPSAiXCIpIHJldHVybmVkICI7CisgICAgICAgICAgICBTdHJpbmcgbXNnNCA9ICI7IGV4cGVjdGVkICI7CisgICAgICAgICAgICBTdHJpbmcgc0V4cGVjdCA9IG5ldyBTdHJpbmcoIiIpOworICAgICAgICAgICAgU3RyaW5nIHNSZXN1bHQgPSBuZXcgU3RyaW5nKCIiKTsKKyAgICAgICAgICAgIHNSZXN1bHQgPSBhcHBlbmRDb21wYXJlUmVzdWx0KGNvbXBhcmVSZXN1bHQsIHNSZXN1bHQpOworICAgICAgICAgICAgc0V4cGVjdCA9IGFwcGVuZENvbXBhcmVSZXN1bHQoZXhwZWN0ZWRSZXN1bHQsIHNFeHBlY3QpOworICAgICAgICAgICAgaWYgKG9rMSkgeworICAgICAgICAgICAgICAgIC8vIGxvZ2xuKG1zZzEgKyBzb3VyY2UgKyBtc2cyICsgdGFyZ2V0ICsgbXNnMyArIHNSZXN1bHQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBlcnJsbihtc2cxICsgc291cmNlICsgbXNnMiArIHRhcmdldCArIG1zZzMgKyBzUmVzdWx0ICsgbXNnNCArIHNFeHBlY3QpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbXNnMSA9IG9rMiA/ICJPazoga2V5KFwiIiA6ICJGQUlMOiBrZXkoXCIiOworICAgICAgICAgICAgbXNnMiA9ICJcIikuY29tcGFyZVRvKGtleShcIiI7CisgICAgICAgICAgICBtc2czID0gIlwiKSkgcmV0dXJuZWQgIjsKKyAgICAgICAgICAgIHNSZXN1bHQgPSBhcHBlbmRDb21wYXJlUmVzdWx0KGtleVJlc3VsdCwgc1Jlc3VsdCk7CisgICAgICAgICAgICBpZiAob2syKSB7CisgICAgICAgICAgICAgICAgLy8gbG9nbG4obXNnMSArIHNvdXJjZSArIG1zZzIgKyB0YXJnZXQgKyBtc2czICsgc1Jlc3VsdCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGVycmxuKG1zZzEgKyBzb3VyY2UgKyBtc2cyICsgdGFyZ2V0ICsgbXNnMyArIHNSZXN1bHQgKyBtc2c0ICsgc0V4cGVjdCk7CisgICAgICAgICAgICAgICAgbXNnMSA9ICIgICI7CisgICAgICAgICAgICAgICAgbXNnMiA9ICIgdnMuICI7CisgICAgICAgICAgICAgICAgZXJybG4obXNnMSArIHByZXR0aWZ5KHNvdXJjZUtleSkgKyBtc2cyICsgcHJldHRpZnkodGFyZ2V0S2V5KSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtc2cxID0gb2szID8gIk9rOiBpbmNDb21wYXJlKFwiIiA6ICJGQUlMOiBpbmNDb21wYXJlKFwiIjsKKyAgICAgICAgICAgIG1zZzIgPSAiXCIsIFwiIjsKKyAgICAgICAgICAgIG1zZzMgPSAiXCIpIHJldHVybmVkICI7CisgICAgICAgICAgICBzUmVzdWx0ID0gYXBwZW5kQ29tcGFyZVJlc3VsdChpbmNSZXN1bHQsIHNSZXN1bHQpOworICAgICAgICAgICAgaWYgKG9rMykgeworICAgICAgICAgICAgICAgIC8vIGxvZ2xuKG1zZzEgKyBzb3VyY2UgKyBtc2cyICsgdGFyZ2V0ICsgbXNnMyArIHNSZXN1bHQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBlcnJsbihtc2cxICsgc291cmNlICsgbXNnMiArIHRhcmdldCArIG1zZzMgKyBzUmVzdWx0ICsgbXNnNCArIHNFeHBlY3QpOworICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBTdHJpbmcgYXBwZW5kQ29tcGFyZVJlc3VsdChpbnQgcmVzdWx0LCBTdHJpbmcgdGFyZ2V0KSB7CisgICAgICAgIGlmIChyZXN1bHQgPT0gLTEpIHsgIC8vTEVTUworICAgICAgICAgICAgdGFyZ2V0ICs9ICJMRVNTIjsKKyAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gMCkgeyAgLy9FUVVBTAorICAgICAgICAgICAgdGFyZ2V0ICs9ICJFUVVBTCI7CisgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IDEpIHsgIC8vR1JFQVRFUgorICAgICAgICAgICAgdGFyZ2V0ICs9ICJHUkVBVEVSIjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFN0cmluZyBodWggPSAiPyI7CisgICAgICAgICAgICB0YXJnZXQgKz0gaHVoICsgcmVzdWx0OworICAgICAgICB9CisgICAgICAgIHJldHVybiB0YXJnZXQ7CisgICAgfQorICAgIAorICAgIFN0cmluZyBwcmV0dGlmeShDb2xsYXRpb25LZXkgc291cmNlS2V5KSB7CisgICAgICAgIGludCBpOworICAgICAgICBieXRlW10gYnl0ZXM9IHNvdXJjZUtleS50b0J5dGVBcnJheSgpOworICAgICAgICBTdHJpbmcgdGFyZ2V0ID0gIlsiOworICAgIAorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYnl0ZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIHRhcmdldCArPSBJbnRlZ2VyLnRvSGV4U3RyaW5nKGJ5dGVzW2ldKTsKKyAgICAgICAgICAgIHRhcmdldCArPSAiICI7CisgICAgICAgIH0KKyAgICAgICAgdGFyZ2V0ICs9ICJdIjsKKyAgICAgICAgcmV0dXJuIHRhcmdldDsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJuIGFuIGludGVnZXIgYXJyYXkgY29udGFpbmluZyBhbGwgb2YgdGhlIGNvbGxhdGlvbiBvcmRlcnMKKyAgICAgKiByZXR1cm5lZCBieSBjYWxscyB0byBuZXh0IG9uIHRoZSBzcGVjaWZpZWQgaXRlcmF0b3IKKyAgICAgKi8KKyAgICBpbnRbXSBnZXRPcmRlcnMoQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yIGl0ZXIpIHsKKyAgICAgICAgaW50IG1heFNpemUgPSAxMDA7CisgICAgICAgIGludCBzaXplID0gMDsKKyAgICAgICAgaW50W10gb3JkZXJzID0gbmV3IGludFttYXhTaXplXTsKKyAgICAKKyAgICAgICAgaW50IG9yZGVyOworICAgICAgICB3aGlsZSAoKG9yZGVyID0gaXRlci5uZXh0KCkpICE9IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5OVUxMT1JERVIpIHsKKyAgICAgICAgICAgIGlmIChzaXplID09IG1heFNpemUpIHsKKyAgICAgICAgICAgICAgICBtYXhTaXplICo9IDI7CisgICAgICAgICAgICAgICAgaW50W10gdGVtcCA9IG5ldyBpbnRbbWF4U2l6ZV07CisgICAgICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShvcmRlcnMsIDAsIHRlbXAsICAwLCBzaXplKTsKKyAgICAgICAgICAgICAgICBvcmRlcnMgPSB0ZW1wOworICAgICAgICAgICAgfQorICAgICAgICAgICAgb3JkZXJzW3NpemUrK10gPSBvcmRlcjsKKyAgICAgICAgfQorICAgIAorICAgICAgICBpZiAobWF4U2l6ZSA+IHNpemUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGludFtdIHRlbXAgPSBuZXcgaW50W3NpemVdOworICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShvcmRlcnMsIDAsIHRlbXAsICAwLCBzaXplKTsKKyAgICAgICAgICAgIG9yZGVycyA9IHRlbXA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG9yZGVyczsKKyAgICB9CisgICAgCisgICAgdm9pZCBiYWNrQW5kRm9ydGgoQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yIGl0ZXIpIHsKKyAgICAgICAgLy8gUnVuIHRocm91Z2ggdGhlIGl0ZXJhdG9yIGZvcndhcmRzIGFuZCBzdGljayBpdCBpbnRvIGFuIGFycmF5CisgICAgICAgIGludFtdIG9yZGVycyA9IGdldE9yZGVycyhpdGVyKTsKKyAgICAKKyAgICAgICAgLy8gTm93IGdvIHRocm91Z2ggaXQgYmFja3dhcmRzIGFuZCBtYWtlIHN1cmUgd2UgZ2V0IHRoZSBzYW1lIHZhbHVlcworICAgICAgICBpbnQgaW5kZXggPSBvcmRlcnMubGVuZ3RoOworICAgICAgICBpbnQgbzsKKyAgICAKKyAgICAgICAgLy8gcmVzZXQgdGhlIGl0ZXJhdG9yCisgICAgICAgIGl0ZXIucmVzZXQoKTsKKyAgICAKKyAgICAgICAgd2hpbGUgKChvID0gaXRlci5wcmV2aW91cygpKSAhPSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuTlVMTE9SREVSKSB7CisgICAgICAgICAgICBpZiAobyAhPSBvcmRlcnNbLS1pbmRleF0pIHsKKyAgICAgICAgICAgICAgICBpZiAobyA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGluZGV4ICsrOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlIChpbmRleCA+IDAgJiYgb3JkZXJzWy0taW5kZXhdID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgfSBpZiAobyAhPSBvcmRlcnNbaW5kZXhdKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbigiTWlzbWF0Y2ggYXQgaW5kZXggIiArIGluZGV4ICsgIjogMHgiIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgSW50ZWdlci50b0hleFN0cmluZyhvcmRlcnNbaW5kZXhdKSArICIgdnMgMHgiICsgSW50ZWdlci50b0hleFN0cmluZyhvKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIAorICAgICAgICB3aGlsZSAoaW5kZXggIT0gMCAmJiBvcmRlcnNbaW5kZXggLSAxXSA9PSAwKSB7CisgICAgICAgICAgaW5kZXggLS07CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgaWYgKGluZGV4ICE9IDApIHsKKyAgICAgICAgICAgIFN0cmluZyBtc2cgPSAiRGlkbid0IGdldCBiYWNrIHRvIGJlZ2lubmluZyAtIGluZGV4IGlzICI7CisgICAgICAgICAgICBlcnJsbihtc2cgKyBpbmRleCk7CisgICAgCisgICAgICAgICAgICBpdGVyLnJlc2V0KCk7CisgICAgICAgICAgICBlcnIoIm5leHQ6ICIpOworICAgICAgICAgICAgd2hpbGUgKChvID0gaXRlci5uZXh0KCkpICE9IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5OVUxMT1JERVIpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgaGV4U3RyaW5nID0gIjB4IiArIEludGVnZXIudG9IZXhTdHJpbmcobykgKyAiICI7CisgICAgICAgICAgICAgICAgZXJyKGhleFN0cmluZyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlcnJsbigiIik7CisgICAgICAgICAgICBlcnIoInByZXY6ICIpOworICAgICAgICAgICAgd2hpbGUgKChvID0gaXRlci5wcmV2aW91cygpKSAhPSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuTlVMTE9SREVSKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIGhleFN0cmluZyA9ICIweCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG8pICsgIiAiOworICAgICAgICAgICAgICAgICBlcnIoaGV4U3RyaW5nKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVycmxuKCIiKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0QmVmb3JlUHJlZml4RmFpbHVyZSgpIHsKKyAgICAgICAgU3RyaW5nW10gcnVsZXMgPSB7CisgICAgICAgICAgICAiJmcgPDw8IGEmW2JlZm9yZSAzXVx1ZmY0MSA8PDwgeCIsCisgICAgICAgICAgICAiJlx1MzBBNz1cdTMwQTc9XHUzMDQ3PVx1ZmY2YSZcdTMwQTg9XHUzMEE4PVx1MzA0OD1cdWZmNzQmW2JlZm9yZSAzXVx1MzBhNzw8PFx1MzBhOSIsCisgICAgICAgICAgICAiJltiZWZvcmUgM11cdTMwYTc8PDxcdTMwYTkmXHUzMEE3PVx1MzBBNz1cdTMwNDc9XHVmZjZhJlx1MzBBOD1cdTMwQTg9XHUzMDQ4PVx1ZmY3NCIsCisgICAgICAgIH07CisgICAgICAgIFN0cmluZ1tdW10gZGF0YSA9IHsKKyAgICAgICAgICAgIHsieCIsICJcdWZmNDEifSwKKyAgICAgICAgICAgIHsiXHUzMGE5IiwgIlx1MzBhNyJ9LAorICAgICAgICAgICAgeyJcdTMwYTkiLCAiXHUzMGE3In0sCisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICBmb3IoaW50IGkgPSAwOyBpPCBydWxlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgZ2VuZXJpY1J1bGVzU3RhcnRlcihydWxlc1tpXSwgZGF0YVtpXSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdENvbnRyYWN0aW9uQ2xvc3VyZSgpIHsKKyAgICAgICAgU3RyaW5nW10gcnVsZXMgPSB7CisgICAgICAgICAgICAiJmI9XHUwMGU0XHUwMGU0IiwKKyAgICAgICAgICAgICImYj1cdTAwQzUiLAorICAgICAgICB9OworICAgICAgICBTdHJpbmdbXVtdIGRhdGEgPSB7CisgICAgICAgICAgICB7ICJiIiwgIlx1MDBlNFx1MDBlNCIsICJhXHUwMzA4YVx1MDMwOCIsICJcdTAwZTRhXHUwMzA4IiwgImFcdTAzMDhcdTAwZTQiIH0sCisgICAgICAgICAgICB7ICJiIiwgIlx1MDBDNSIsICJBXHUwMzBBIiwgIlx1MjEyQiIgfSwKKyAgICAgICAgfTsKKyAgICAgICAgCisgICAgICAgIGZvcihpbnQgaSA9IDA7IGk8IHJ1bGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBnZW5lcmljUnVsZXNUZXN0V2l0aFJlc3VsdChydWxlc1tpXSwgZGF0YVtpXSwgMCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdFByZWZpeENvbXBvc2UoKSB7CisgICAgICAgIFN0cmluZyBydWxlMSA9ICImXHUzMGE3PDw8XHUzMGFifFx1MzBmYz1cdTMwYWN8XHUzMGZjIjsKKyAgICAgICAgCisgICAgICAgIFN0cmluZyBzdHJpbmcgPSBydWxlMTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yIGNvbGwgPSBuZXcgUnVsZUJhc2VkQ29sbGF0b3Ioc3RyaW5nKTsKKyAgICAgICAgICAgIGxvZ2xuKCJydWxlOiIgKyBjb2xsLmdldFJ1bGVzKCkpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkVycm9yIG9wZW4gUnVsZUJhc2VkQ29sbGF0b3IgcnVsZSA9ICIgKyBzdHJpbmcpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RTdHJDb2xsSWRlbnRpY2FsUHJlZml4KCkgeworICAgICAgICBTdHJpbmcgcnVsZSA9ICImXHVkOWIwXHVkYzcwPVx1ZDliMFx1ZGM3MSI7CisgICAgICAgIFN0cmluZyB0ZXN0W10gPSB7CisgICAgICAgICAgICAiYWJcdWQ5YjBcdWRjNzAiLAorICAgICAgICAgICAgImFiXHVkOWIwXHVkYzcxIgorICAgICAgICB9OworICAgICAgICBnZW5lcmljUnVsZXNUZXN0V2l0aFJlc3VsdChydWxlLCB0ZXN0LCAwKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdFByZWZpeCgpIHsKKyAgICAgICAgU3RyaW5nW10gcnVsZXMgPSB7CisgICAgICAgICAgICAiJnogPDw8IHp8YSIsIAorICAgICAgICAgICAgIltzdHJlbmd0aCBJXSZhPVx1ZDkwMFx1ZGMyNSZ6PDw8XHVkOTAwXHVkYzI1fGEiLCAKKyAgICAgICAgfTsKKyAgICAgICAgU3RyaW5nW11bXSBkYXRhID0geworICAgICAgICAgICAgeyJ6eiIsICJ6YSJ9LAorICAgICAgICAgICAgeyJhYSIsICJheiIsICJcdWQ5MDBcdWRjMjV6IiwgIlx1ZDkwMFx1ZGMyNWEiLCAienoifSwKKyAgICAgICAgfTsKKyAgICAgICAgCisgICAgICAgIGZvcihpbnQgaSA9IDA7IGk8cnVsZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGdlbmVyaWNSdWxlc1N0YXJ0ZXIocnVsZXNbaV0sIGRhdGFbaV0pOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3ROZXdKYXBhbmVzZSgpIHsKKyAgICAgICAgCisgICAgICAgIFN0cmluZyB0ZXN0MVtdID0geworICAgICAgICAgICAgIlx1MzBiN1x1MzBlM1x1MzBmY1x1MzBlYyIsCisgICAgICAgICAgICAiXHUzMGI3XHUzMGUzXHUzMGE0IiwKKyAgICAgICAgICAgICJcdTMwYjdcdTMwZTRcdTMwYTMiLAorICAgICAgICAgICAgIlx1MzBiN1x1MzBlM1x1MzBlYyIsCisgICAgICAgICAgICAiXHUzMDYxXHUzMDg3XHUzMDUzIiwKKyAgICAgICAgICAgICJcdTMwNjFcdTMwODhcdTMwNTMiLAorICAgICAgICAgICAgIlx1MzBjMVx1MzBlN1x1MzBiM1x1MzBlY1x1MzBmY1x1MzBjOCIsCisgICAgICAgICAgICAiXHUzMDY2XHUzMGZjXHUzMDVmIiwKKyAgICAgICAgICAgICJcdTMwYzZcdTMwZmNcdTMwYmYiLCAKKyAgICAgICAgICAgICJcdTMwYzZcdTMwYTdcdTMwYmYiLAorICAgICAgICAgICAgIlx1MzA2Nlx1MzA0OFx1MzA1ZiIsCisgICAgICAgICAgICAiXHUzMDY3XHUzMGZjXHUzMDVmIiwgCisgICAgICAgICAgICAiXHUzMGM3XHUzMGZjXHUzMGJmIiwKKyAgICAgICAgICAgICJcdTMwYzdcdTMwYTdcdTMwYmYiLAorICAgICAgICAgICAgIlx1MzA2N1x1MzA0OFx1MzA1ZiIsCisgICAgICAgICAgICAiXHUzMDY2XHUzMGZjXHUzMDVmXHUzMGZjIiwKKyAgICAgICAgICAgICJcdTMwYzZcdTMwZmNcdTMwYmZcdTMwYTEiLAorICAgICAgICAgICAgIlx1MzBjNlx1MzBhN1x1MzBiZlx1MzBmYyIsCisgICAgICAgICAgICAiXHUzMDY2XHUzMDQ3XHUzMDVmXHUzMDQxIiwKKyAgICAgICAgICAgICJcdTMwNjZcdTMwNDhcdTMwNWZcdTMwZmMiLAorICAgICAgICAgICAgIlx1MzA2N1x1MzBmY1x1MzA1Zlx1MzBmYyIsCisgICAgICAgICAgICAiXHUzMGM3XHUzMGZjXHUzMGJmXHUzMGExIiwKKyAgICAgICAgICAgICJcdTMwNjdcdTMwYTdcdTMwNWZcdTMwYTEiLAorICAgICAgICAgICAgIlx1MzBjN1x1MzA0N1x1MzBiZlx1MzA0MSIsCisgICAgICAgICAgICAiXHUzMGM3XHUzMGE4XHUzMGJmXHUzMGEyIiwKKyAgICAgICAgICAgICJcdTMwNzJcdTMwODYiLAorICAgICAgICAgICAgIlx1MzA3M1x1MzA4NVx1MzA0MiIsCisgICAgICAgICAgICAiXHUzMDc0XHUzMDg1XHUzMDQyIiwKKyAgICAgICAgICAgICJcdTMwNzNcdTMwODVcdTMwNDJcdTMwZmMiLAorICAgICAgICAgICAgIlx1MzBkM1x1MzBlNVx1MzBhMlx1MzBmYyIsCisgICAgICAgICAgICAiXHUzMDc0XHUzMDg1XHUzMDQyXHUzMGZjIiwKKyAgICAgICAgICAgICJcdTMwZDRcdTMwZTVcdTMwYTJcdTMwZmMiLAorICAgICAgICAgICAgIlx1MzBkMlx1MzBlNVx1MzBhNiIsCisgICAgICAgICAgICAiXHUzMGQyXHUzMGU2XHUzMGE2IiwKKyAgICAgICAgICAgICJcdTMwZDRcdTMwZTVcdTMwYTZcdTMwYTIiLAorICAgICAgICAgICAgIlx1MzA3M1x1MzA4NVx1MzBmY1x1MzA0Mlx1MzBmYyIsIAorICAgICAgICAgICAgIlx1MzBkM1x1MzBlNVx1MzBmY1x1MzBhMlx1MzBmYyIsCisgICAgICAgICAgICAiXHUzMGQzXHUzMGU1XHUzMGE2XHUzMGEyXHUzMGZjIiwKKyAgICAgICAgICAgICJcdTMwNzJcdTMwODVcdTMwOTMiLAorICAgICAgICAgICAgIlx1MzA3NFx1MzA4NVx1MzA5MyIsCisgICAgICAgICAgICAiXHUzMDc1XHUzMGZjXHUzMDhhIiwKKyAgICAgICAgICAgICJcdTMwZDVcdTMwZmNcdTMwZWEiLAorICAgICAgICAgICAgIlx1MzA3NVx1MzA0NVx1MzA4YSIsCisgICAgICAgICAgICAiXHUzMDc1XHUzMGE1XHUzMDhhIiwKKyAgICAgICAgICAgICJcdTMwNzVcdTMwYTVcdTMwZWEiLAorICAgICAgICAgICAgIlx1MzBkNVx1MzBhNlx1MzBlYSIsCisgICAgICAgICAgICAiXHUzMDc2XHUzMGZjXHUzMDhhIiwKKyAgICAgICAgICAgICJcdTMwZDZcdTMwZmNcdTMwZWEiLAorICAgICAgICAgICAgIlx1MzA3Nlx1MzA0NVx1MzA4YSIsCisgICAgICAgICAgICAiXHUzMGQ2XHUzMGE1XHUzMDhhIiwKKyAgICAgICAgICAgICJcdTMwNzdcdTMwNDZcdTMwOGEiLAorICAgICAgICAgICAgIlx1MzBkN1x1MzBhNlx1MzBlYSIsCisgICAgICAgICAgICAiXHUzMDc1XHUzMGZjXHUzMDhhXHUzMGZjIiwKKyAgICAgICAgICAgICJcdTMwZDVcdTMwYTVcdTMwZWFcdTMwZmMiLAorICAgICAgICAgICAgIlx1MzA3NVx1MzBhNVx1MzA4YVx1MzBhMyIsCisgICAgICAgICAgICAiXHUzMGQ1XHUzMDQ1XHUzMDhhXHUzMDQzIiwKKyAgICAgICAgICAgICJcdTMwZDVcdTMwYTZcdTMwZWFcdTMwZmMiLAorICAgICAgICAgICAgIlx1MzA3NVx1MzA0Nlx1MzA4YVx1MzA0MyIsCisgICAgICAgICAgICAiXHUzMGQ2XHUzMGE2XHUzMGVhXHUzMGE0IiwKKyAgICAgICAgICAgICJcdTMwNzdcdTMwZmNcdTMwOGFcdTMwZmMiLAorICAgICAgICAgICAgIlx1MzA3N1x1MzBhNVx1MzA4YVx1MzBhNCIsCisgICAgICAgICAgICAiXHUzMDc3XHUzMDQ2XHUzMDhhXHUzMGZjIiwKKyAgICAgICAgICAgICJcdTMwZDdcdTMwYTZcdTMwZWFcdTMwYTQiLAorICAgICAgICAgICAgIlx1MzBkNVx1MzBmZCIsCisgICAgICAgICAgICAiXHUzMDc1XHUzMDllIiwKKyAgICAgICAgICAgICJcdTMwNzZcdTMwOWQiLAorICAgICAgICAgICAgIlx1MzA3Nlx1MzA3NSIsCisgICAgICAgICAgICAiXHUzMDc2XHUzMGQ1IiwKKyAgICAgICAgICAgICJcdTMwZDZcdTMwNzUiLAorICAgICAgICAgICAgIlx1MzBkNlx1MzBkNSIsCisgICAgICAgICAgICAiXHUzMDc2XHUzMDllIiwKKyAgICAgICAgICAgICJcdTMwNzZcdTMwNzciLAorICAgICAgICAgICAgIlx1MzBkNlx1MzA3NyIsCisgICAgICAgICAgICAiXHUzMDc3XHUzMDlkIiwKKyAgICAgICAgICAgICJcdTMwZDdcdTMwZmQiLAorICAgICAgICAgICAgIlx1MzA3N1x1MzA3NSIsCisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICBTdHJpbmcgdGVzdDJbXSA9IHsKKyAgICAgICAgICAgICJcdTMwNmZcdTMwOWQiLCAvLyBIXHUzMDlkIAorICAgICAgICAgICAgIlx1MzBjZlx1MzBmZCIsIC8vIEtcdTMwZmQgCisgICAgICAgICAgICAiXHUzMDZmXHUzMDZmIiwgLy8gSEggCisgICAgICAgICAgICAiXHUzMDZmXHUzMGNmIiwgLy8gSEsgCisgICAgICAgICAgICAiXHUzMGNmXHUzMGNmIiwgLy8gS0sgCisgICAgICAgICAgICAiXHUzMDZmXHUzMDllIiwgLy8gSFx1MzA5ZSAKKyAgICAgICAgICAgICJcdTMwY2ZcdTMwZmUiLCAvLyBLXHUzMGZlIAorICAgICAgICAgICAgIlx1MzA2Zlx1MzA3MCIsIC8vIEhIXHUzMDliIAorICAgICAgICAgICAgIlx1MzBjZlx1MzBkMCIsIC8vIEtLXHUzMDliIAorICAgICAgICAgICAgIlx1MzA2Zlx1MzA3MSIsIC8vIEhIXHUzMDljIAorICAgICAgICAgICAgIlx1MzBjZlx1MzA3MSIsIC8vIEtIXHUzMDljIAorICAgICAgICAgICAgIlx1MzBjZlx1MzBkMSIsIC8vIEtLXHUzMDljIAorICAgICAgICAgICAgIlx1MzA3MFx1MzA5ZCIsIC8vIEhcdTMwOWJcdTMwOWQgCisgICAgICAgICAgICAiXHUzMGQwXHUzMGZkIiwgLy8gS1x1MzA5Ylx1MzBmZCAKKyAgICAgICAgICAgICJcdTMwNzBcdTMwNmYiLCAvLyBIXHUzMDliSCAKKyAgICAgICAgICAgICJcdTMwZDBcdTMwY2YiLCAvLyBLXHUzMDliSyAKKyAgICAgICAgICAgICJcdTMwNzBcdTMwOWUiLCAvLyBIXHUzMDliXHUzMDllIAorICAgICAgICAgICAgIlx1MzBkMFx1MzBmZSIsIC8vIEtcdTMwOWJcdTMwZmUgCisgICAgICAgICAgICAiXHUzMDcwXHUzMDcwIiwgLy8gSFx1MzA5YkhcdTMwOWIgCisgICAgICAgICAgICAiXHUzMGQwXHUzMDcwIiwgLy8gS1x1MzA5YkhcdTMwOWIgCisgICAgICAgICAgICAiXHUzMGQwXHUzMGQwIiwgLy8gS1x1MzA5YktcdTMwOWIgCisgICAgICAgICAgICAiXHUzMDcwXHUzMDcxIiwgLy8gSFx1MzA5YkhcdTMwOWMgCisgICAgICAgICAgICAiXHUzMGQwXHUzMGQxIiwgLy8gS1x1MzA5YktcdTMwOWMgCisgICAgICAgICAgICAiXHUzMDcxXHUzMDlkIiwgLy8gSFx1MzA5Y1x1MzA5ZCAKKyAgICAgICAgICAgICJcdTMwZDFcdTMwZmQiLCAvLyBLXHUzMDljXHUzMGZkIAorICAgICAgICAgICAgIlx1MzA3MVx1MzA2ZiIsIC8vIEhcdTMwOWNIIAorICAgICAgICAgICAgIlx1MzBkMVx1MzBjZiIsIC8vIEtcdTMwOWNLIAorICAgICAgICAgICAgIlx1MzA3MVx1MzA3MCIsIC8vIEhcdTMwOWNIXHUzMDliIAorICAgICAgICAgICAgIlx1MzA3MVx1MzBkMCIsIC8vIEhcdTMwOWNLXHUzMDliIAorICAgICAgICAgICAgIlx1MzBkMVx1MzBkMCIsIC8vIEtcdTMwOWNLXHUzMDliCisgICAgICAgICAgICAiXHUzMDcxXHUzMDcxIiwgLy8gSFx1MzA5Y0hcdTMwOWMKKyAgICAgICAgICAgICJcdTMwZDFcdTMwZDEiLCAvLyBLXHUzMDljS1x1MzA5YworICAgICAgICB9OworICAgICAgICAKKyAgICAgICAgU3RyaW5nW10gYXR0ID0geyAic3RyZW5ndGgiLCB9OworICAgICAgICBPYmplY3RbXSB2YWwgPSB7IG5ldyBJbnRlZ2VyKENvbGxhdG9yLlFVQVRFUk5BUlkpLCB9OworICAgICAgICAKKyAgICAgICAgU3RyaW5nW10gYXR0U2hpZnRlZCA9IHsgInN0cmVuZ3RoIiwgIkFsdGVybmF0ZUhhbmRsaW5nIn07CisgICAgICAgIE9iamVjdCB2YWxTaGlmdGVkW10gPSB7IG5ldyBJbnRlZ2VyKENvbGxhdG9yLlFVQVRFUk5BUlkpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEJvb2xlYW4odHJ1ZSkgfTsKKyAgICAgICAKKyAgICAgICAgZ2VuZXJpY0xvY2FsZVN0YXJ0ZXJXaXRoT3B0aW9ucyhMb2NhbGUuSkFQQU5FU0UsIHRlc3QxLCBhdHQsIHZhbCk7CisgICAgICAgIGdlbmVyaWNMb2NhbGVTdGFydGVyV2l0aE9wdGlvbnMoTG9jYWxlLkpBUEFORVNFLCB0ZXN0MiwgYXR0LCB2YWwpOworICAgICAgICAKKyAgICAgICAgZ2VuZXJpY0xvY2FsZVN0YXJ0ZXJXaXRoT3B0aW9ucyhMb2NhbGUuSkFQQU5FU0UsIHRlc3QxLCBhdHRTaGlmdGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbFNoaWZ0ZWQpOworICAgICAgICBnZW5lcmljTG9jYWxlU3RhcnRlcldpdGhPcHRpb25zKExvY2FsZS5KQVBBTkVTRSwgdGVzdDIsIGF0dFNoaWZ0ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsU2hpZnRlZCk7CisgICAgfQorICAgIAorICAgIHZvaWQgZ2VuZXJpY0xvY2FsZVN0YXJ0ZXIoTG9jYWxlIGxvY2FsZSwgU3RyaW5nIHNbXSkgeworICAgICAgICBDb2xsYXRvciBjb2xsID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNvbGwgPSBDb2xsYXRvci5nZXRJbnN0YW5jZShsb2NhbGUpOworICAgICAgICAgICAgCisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiVW5hYmxlIHRvIG9wZW4gY29sbGF0b3IgZm9yIGxvY2FsZSAiICsgbG9jYWxlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAvLyBsb2dsbigiTG9jYWxlIHN0YXJ0ZXIgZm9yICIgKyBsb2NhbGUpOworICAgICAgICBnZW5lcmljT3JkZXJpbmdUZXN0KGNvbGwsIHMpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGdlbmVyaWNMb2NhbGVTdGFydGVyV2l0aE9wdGlvbnMoTG9jYWxlIGxvY2FsZSwgU3RyaW5nW10gcywgU3RyaW5nW10gYXR0cnMsIE9iamVjdFtdIHZhbHVlcykgeworICAgICAgICBSdWxlQmFzZWRDb2xsYXRvciBjb2xsID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNvbGwgPSAoUnVsZUJhc2VkQ29sbGF0b3IpQ29sbGF0b3IuZ2V0SW5zdGFuY2UobG9jYWxlKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJVbmFibGUgdG8gb3BlbiBjb2xsYXRvciBmb3IgbG9jYWxlICIgKyBsb2NhbGUpOworICAgICAgICB9CisgICAgICAgIC8vIGxvZ2xuKCJMb2NhbGUgc3RhcnRlciBmb3IgIiArbG9jYWxlKTsKKyAgICAgICAgCisgICAgICAgIC8vIGxvZ2xuKCJTZXR0aW5nIGF0dHJpYnV0ZXMiKTsKKyAgICAgICAgCisgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBhdHRycy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgaWYgKGF0dHJzW2ldLmVxdWFscygic3RyZW5ndGgiKSkgeworICAgICAgICAgICAgICAgIGNvbGwuc2V0U3RyZW5ndGgoKChJbnRlZ2VyKXZhbHVlc1tpXSkuaW50VmFsdWUoKSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGF0dHJzW2ldLmVxdWFscygiZGVjb21wIikpIHsKKyAgICAgICAgICAgICAgICBjb2xsLnNldERlY29tcG9zaXRpb24oKChJbnRlZ2VyKXZhbHVlc1tpXSkuaW50VmFsdWUoKSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGF0dHJzW2ldLmVxdWFscygiQWx0ZXJuYXRlSGFuZGxpbmciKSkgeworICAgICAgICAgICAgICAgIGNvbGwuc2V0QWx0ZXJuYXRlSGFuZGxpbmdTaGlmdGVkKCgoQm9vbGVhbil2YWx1ZXNbaV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkuYm9vbGVhblZhbHVlKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBnZW5lcmljT3JkZXJpbmdUZXN0KGNvbGwsIHMpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGdlbmVyaWNPcmRlcmluZ1Rlc3QoQ29sbGF0b3IgY29sbCwgU3RyaW5nW10gcykgeworICAgICAgICBnZW5lcmljT3JkZXJpbmdUZXN0V2l0aFJlc3VsdChjb2xsLCBzLCAtMSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3ROb25DaGFycygpIHsKKyAgICAgICAgU3RyaW5nIHRlc3RbXSA9IHsKKyAgICAgICAgICAgICJcdTAwMDAiLAorICAgICAgICAgICAgIlx1RkZGRSIsICJcdUZGRkYiLAorICAgICAgICAgICAgIlxcVTAwMDFGRkZFIiwgIlxcVTAwMDFGRkZGIiwKKyAgICAgICAgICAgICJcXFUwMDAyRkZGRSIsICJcXFUwMDAyRkZGRiIsCisgICAgICAgICAgICAiXFxVMDAwM0ZGRkUiLCAiXFxVMDAwM0ZGRkYiLAorICAgICAgICAgICAgIlxcVTAwMDRGRkZFIiwgIlxcVTAwMDRGRkZGIiwKKyAgICAgICAgICAgICJcXFUwMDA1RkZGRSIsICJcXFUwMDA1RkZGRiIsCisgICAgICAgICAgICAiXFxVMDAwNkZGRkUiLCAiXFxVMDAwNkZGRkYiLAorICAgICAgICAgICAgIlxcVTAwMDdGRkZFIiwgIlxcVTAwMDdGRkZGIiwKKyAgICAgICAgICAgICJcXFUwMDA4RkZGRSIsICJcXFUwMDA4RkZGRiIsCisgICAgICAgICAgICAiXFxVMDAwOUZGRkUiLCAiXFxVMDAwOUZGRkYiLAorICAgICAgICAgICAgIlxcVTAwMEFGRkZFIiwgIlxcVTAwMEFGRkZGIiwKKyAgICAgICAgICAgICJcXFUwMDBCRkZGRSIsICJcXFUwMDBCRkZGRiIsCisgICAgICAgICAgICAiXFxVMDAwQ0ZGRkUiLCAiXFxVMDAwQ0ZGRkYiLAorICAgICAgICAgICAgIlxcVTAwMERGRkZFIiwgIlxcVTAwMERGRkZGIiwKKyAgICAgICAgICAgICJcXFUwMDBFRkZGRSIsICJcXFUwMDBFRkZGRiIsCisgICAgICAgICAgICAiXFxVMDAwRkZGRkUiLCAiXFxVMDAwRkZGRkYiLAorICAgICAgICAgICAgIlxcVTAwMTBGRkZFIiwgIlxcVTAwMTBGRkZGIgorICAgICAgICB9OworICAgICAgICBDb2xsYXRvciBjb2xsID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNvbGwgPSBDb2xsYXRvci5nZXRJbnN0YW5jZShuZXcgTG9jYWxlKCJlbiIsICJVUyIpKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJVbmFibGUgdG8gb3BlbiBjb2xsYXRvciIpOworICAgICAgICB9CisgICAgICAgIC8vIGxvZ2xuKCJUZXN0IG5vbiBjaGFyYWN0ZXJzIik7CisgICAgICAgIAorICAgICAgICBnZW5lcmljT3JkZXJpbmdUZXN0V2l0aFJlc3VsdChjb2xsLCB0ZXN0LCAwKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdEV4dHJlbWVDb21wcmVzc2lvbigpIHsKKyAgICAgICAgU3RyaW5nW10gdGVzdCA9IG5ldyBTdHJpbmdbNF07CisgICAgICAgIAorICAgICAgICBmb3IoaW50IGkgPSAwOyBpPDQ7IGkrKykgeworICAgICAgICAgICAgU3RyaW5nQnVmZmVyIHRlbXAgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IDIwNDc7IGorKykgeworICAgICAgICAgICAgICAgIHRlbXAuYXBwZW5kKCdhJyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0ZW1wLmFwcGVuZCgoY2hhcikoJ2EnICsgaSkpOworICAgICAgICAgICAgdGVzdFtpXSA9IHRlbXAudG9TdHJpbmcoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZ2VuZXJpY0xvY2FsZVN0YXJ0ZXIobmV3IExvY2FsZSgiZW4iLCAiVVMiKSwgdGVzdCk7CisgICAgfQorCisgICAgLyoqCisgICAgKiBUZXN0cyBzdXJyb2dhdGUgc3VwcG9ydC4KKyAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RTdXJyb2dhdGVzKCkgeworICAgICAgICBTdHJpbmcgdGVzdFtdID0geyJ6IiwiXHVkOTAwXHVkYzI1IiwgIlx1ZDgwNVx1ZGM1MCIsICJcdWQ4MDBcdWRjMDB5IiwgIAorICAgICAgICAgICAgICAgICAgICAgICAgICJcdWQ4MDBcdWRjMDByIiwgIlx1ZDgwMFx1ZGMwMGYiLCAiXHVkODAwXHVkYzAwIiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgIlx1ZDgwMFx1ZGMwMGMiLCAiXHVkODAwXHVkYzAwYiIsICJcdWQ4MDBcdWRjMDBmYSIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICJcdWQ4MDBcdWRjMDBmYiIsICJcdWQ4MDBcdWRjMDBhIiwgImMiLCAiYiJ9OworCisgICAgICAgIFN0cmluZyBydWxlID0gIiZ6IDwgXHVkOTAwXHVkYzI1IDwgXHVkODA1XHVkYzUwIDwgXHVkODAwXHVkYzAweSAiCisgICAgICAgICAgICAgICAgICAgICAgKyAiPCBcdWQ4MDBcdWRjMDByIDwgXHVkODAwXHVkYzAwZiA8PCBcdWQ4MDBcdWRjMDAgIgorICAgICAgICAgICAgICAgICAgICAgICsgIjwgXHVkODAwXHVkYzAwZmEgPDwgXHVkODAwXHVkYzAwZmIgPCBcdWQ4MDBcdWRjMDBhICIgCisgICAgICAgICAgICAgICAgICAgICAgKyAiPCBjIDwgYiI7CisgICAgICAgIGdlbmVyaWNSdWxlc1N0YXJ0ZXIocnVsZSwgdGVzdCk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RCb2NzdUNvdmVyYWdlKCkgeworICAgICAgICBTdHJpbmcgdGVzdCA9ICJcdTAwNDFcdTA0NDFcdTQ0NDFcXFUwMDA0NDQ0MVx1NDQ0MVx1MDQ0MVx1MDA0MSI7CisgICAgICAgIENvbGxhdG9yIGNvbGwgPSBDb2xsYXRvci5nZXRJbnN0YW5jZSgpOworICAgICAgICBjb2xsLnNldFN0cmVuZ3RoKENvbGxhdG9yLklERU5USUNBTCk7CisgICAgICAgIENvbGxhdGlvbktleSBrZXkgPSBjb2xsLmdldENvbGxhdGlvbktleSh0ZXN0KTsKKyAgICAgICAgbG9nbG4oInNvdXJjZToiICsga2V5LmdldFNvdXJjZVN0cmluZygpKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdEN5cmlsbGljVGFpbG9yaW5nKCkgeworICAgICAgICBTdHJpbmcgdGVzdFtdID0geworICAgICAgICAgICAgIlx1MDQxMGIiLAorICAgICAgICAgICAgIlx1MDQxMFx1MDMwNmEiLAorICAgICAgICAgICAgIlx1MDRkMEEiCisgICAgICAgIH07CisgICAgICAgIGdlbmVyaWNMb2NhbGVTdGFydGVyKG5ldyBMb2NhbGUoImVuIiwgIiIpLCB0ZXN0KTsKKyAgICAgICAgZ2VuZXJpY1J1bGVzU3RhcnRlcigiJlx1MDQxMCA9IFx1MDQxMCIsIHRlc3QpOworICAgICAgICBnZW5lcmljUnVsZXNTdGFydGVyKCImWiA8IFx1MDQxMCIsIHRlc3QpOworICAgICAgICBnZW5lcmljUnVsZXNTdGFydGVyKCImXHUwNDEwID0gXHUwNDEwIDwgXHUwNGQwIiwgdGVzdCk7CisgICAgICAgIGdlbmVyaWNSdWxlc1N0YXJ0ZXIoIiZaIDwgXHUwNDEwIDwgXHUwNGQwIiwgdGVzdCk7CisgICAgICAgIGdlbmVyaWNSdWxlc1N0YXJ0ZXIoIiZcdTA0MTAgPSBcdTA0MTAgPCBcdTA0MTBcdTAzMDEiLCB0ZXN0KTsKKyAgICAgICAgZ2VuZXJpY1J1bGVzU3RhcnRlcigiJlogPCBcdTA0MTAgPCBcdTA0MTBcdTAzMDEiLCB0ZXN0KTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0U3VwcHJlc3NDb250cmFjdGlvbnMoKSB7CisgICAgICAgICAgICBTdHJpbmcgdGVzdE5vQ29udDJbXSA9IHsKKyAgICAgICAgICAgICJcdTA0MTBcdTAzMDJhIiwKKyAgICAgICAgICAgICJcdTA0MTBcdTAzMDZiIiwKKyAgICAgICAgICAgICJcdTA0MTBjIiAgICAgICAgICAgIAorICAgICAgICB9OworICAgICAgICBTdHJpbmcgdGVzdE5vQ29udFtdID0geworICAgICAgICAgICAgImFcdTA0MTAiLCAgICAgICAgICAgIAorICAgICAgICAgICAgIkFcdTA0MTBcdTAzMDYiLAorICAgICAgICAgICAgIlx1RkYyMVx1MDQxMFx1MDMwMiIKKyAgICAgICAgfTsKKyAgICAgICAgICAgIAorICAgICAgICBnZW5lcmljUnVsZXNTdGFydGVyKCJbc3VwcHJlc3NDb250cmFjdGlvbnMgW1x1MDQwMC1cdTA0N2ZdXSIsIHRlc3ROb0NvbnQpOworICAgICAgICBnZW5lcmljUnVsZXNTdGFydGVyKCJbc3VwcHJlc3NDb250cmFjdGlvbnMgW1x1MDQwMC1cdTA0N2ZdXSIsIHRlc3ROb0NvbnQyKTsKKyAgICB9CisgICAgICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RDYXNlKCkgeworICAgICAgICBTdHJpbmcgZ1J1bGVzID0gIlx1MDAyNlx1MDAzMFx1MDAzQ1x1MDAzMVx1MDAyQ1x1MjQ2MFx1MDAzQ1x1MDA2MVx1MDAyQ1x1MDA0MSI7CisgICAgICAgIFN0cmluZ1tdIHRlc3RDYXNlID0geworICAgICAgICAgICAgIjFhIiwgIjFBIiwgIlx1MjQ2MGEiLCAiXHUyNDYwQSIKKyAgICAgICAgfTsKKyAgICAgICAgaW50W11bXSBjYXNlVGVzdFJlc3VsdHMgPSB7CisgICAgICAgICAgICAgICAgeyAtMSwgLTEsIC0xLCAwLCAtMSwgLTEsIDAsIDAsIC0xIH0sCisgICAgICAgICAgICAgICAgeyAxLCAtMSwgLTEsIDAsIC0xLCAtMSwgMCwgMCwgMSB9LAorICAgICAgICAgICAgICAgIHsgLTEsIC0xLCAtMSwgMCwgMSwgLTEsIDAsIDAsIC0xIH0sCisgICAgICAgICAgICAgICAgeyAxLCAtMSwgMSwgMCwgLTEsIC0xLCAwLCAwLCAxIH0KKyAgICAKKyAgICAgICAgfTsKKyAgICAgICAgYm9vbGVhbltdW10gY2FzZVRlc3RBdHRyaWJ1dGVzID0geworICAgICAgICAgICAgeyBmYWxzZSwgZmFsc2V9LAorICAgICAgICAgICAgeyB0cnVlLCBmYWxzZX0sCisgICAgICAgICAgICB7IGZhbHNlLCB0cnVlfSwKKyAgICAgICAgICAgIHsgdHJ1ZSwgdHJ1ZX0KKyAgICAgICAgfTsKKyAgICAgICAgCisgICAgICAgIGludCBpLGosazsKKyAgICAgICAgQ29sbGF0b3IgIG15Q29sbGF0aW9uOworICAgICAgICB0cnkgeworICAgICAgICAgICAgbXlDb2xsYXRpb24gPSBDb2xsYXRvci5nZXRJbnN0YW5jZShuZXcgTG9jYWxlKCJlbiIsICJVUyIpKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogaW4gY3JlYXRpb24gb2YgcnVsZSBiYXNlZCBjb2xsYXRvciAiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAvLyBsb2dsbigiVGVzdGluZyBkaWZmZXJlbnQgY2FzZSBzZXR0aW5ncyIpOworICAgICAgICBteUNvbGxhdGlvbi5zZXRTdHJlbmd0aChDb2xsYXRvci5URVJUSUFSWSk7CisgICAgCisgICAgICAgIGZvcihrID0gMDsgazw0OyBrKyspIHsKKyAgICAgICAgICAgIGlmIChjYXNlVGVzdEF0dHJpYnV0ZXNba11bMF0gPT0gdHJ1ZSkgeworICAgICAgICAgICAgICAgIC8vIHVwcGVyIGNhc2UgZmlyc3QKKyAgICAgICAgICAgICAgICAoKFJ1bGVCYXNlZENvbGxhdG9yKW15Q29sbGF0aW9uKS5zZXRVcHBlckNhc2VGaXJzdCh0cnVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIC8vIHVwcGVyIGNhc2UgZmlyc3QKKyAgICAgICAgICAgICAgICAoKFJ1bGVCYXNlZENvbGxhdG9yKW15Q29sbGF0aW9uKS5zZXRMb3dlckNhc2VGaXJzdCh0cnVlKTsgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAoKFJ1bGVCYXNlZENvbGxhdG9yKW15Q29sbGF0aW9uKS5zZXRDYXNlTGV2ZWwoY2FzZVRlc3RBdHRyaWJ1dGVzW2tdWzFdKTsKKyAgICAgICAgICAKKyAgICAgICAgICAvLyBsb2dsbigiQ2FzZSBmaXJzdCA9ICIgKyBjYXNlVGVzdEF0dHJpYnV0ZXNba11bMF0gKyAiLCBDYXNlIGxldmVsID0gIiArIGNhc2VUZXN0QXR0cmlidXRlc1trXVsxXSk7CisgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDMgOyBpKyspIHsKKyAgICAgICAgICAgIGZvcihqID0gaSsxOyBqPDQ7IGorKykgeworICAgICAgICAgICAgICBkb1Rlc3QobXlDb2xsYXRpb24sIHRlc3RDYXNlW2ldLCB0ZXN0Q2FzZVtqXSwgY2FzZVRlc3RSZXN1bHRzW2tdWzMqaStqLTFdKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG15Q29sbGF0aW9uID0gbmV3IFJ1bGVCYXNlZENvbGxhdG9yKGdSdWxlcyk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiRVJST1I6IGluIGNyZWF0aW9uIG9mIHJ1bGUgYmFzZWQgY29sbGF0b3IiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAvLyBsb2dsbigiVGVzdGluZyBkaWZmZXJlbnQgY2FzZSBzZXR0aW5ncyB3aXRoIGN1c3RvbSBydWxlcyIpOworICAgICAgICBteUNvbGxhdGlvbi5zZXRTdHJlbmd0aChDb2xsYXRvci5URVJUSUFSWSk7CisgICAgCisgICAgICAgIGZvcihrID0gMDsgazw0OyBrKyspIHsKKyAgICAgICAgCWlmIChjYXNlVGVzdEF0dHJpYnV0ZXNba11bMF0gPT0gdHJ1ZSkgeworICAgICAgICAgICAgICAgICgoUnVsZUJhc2VkQ29sbGF0b3IpbXlDb2xsYXRpb24pLnNldFVwcGVyQ2FzZUZpcnN0KHRydWUpOworICAgICAgICAJfQorICAgICAgICAJZWxzZSB7CisgICAgICAgIAkJKChSdWxlQmFzZWRDb2xsYXRvcilteUNvbGxhdGlvbikuc2V0VXBwZXJDYXNlRmlyc3QoZmFsc2UpOworICAgICAgICAJfQorICAgICAgICAgICgoUnVsZUJhc2VkQ29sbGF0b3IpbXlDb2xsYXRpb24pLnNldENhc2VMZXZlbChjYXNlVGVzdEF0dHJpYnV0ZXNba11bMV0pOworICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAzIDsgaSsrKSB7CisgICAgICAgICAgICBmb3IoaiA9IGkrMTsgajw0OyBqKyspIHsKKyAgICAgICAgICAgICAgZG9UZXN0KG15Q29sbGF0aW9uLCB0ZXN0Q2FzZVtpXSwgdGVzdENhc2Vbal0sIGNhc2VUZXN0UmVzdWx0c1trXVszKmkrai0xXSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgeworICAgICAgICAgICAgU3RyaW5nW10gbG93ZXJGaXJzdCA9IHsKKyAgICAgICAgICAgICAgICAiaCIsCisgICAgICAgICAgICAgICAgIkgiLAorICAgICAgICAgICAgICAgICJjaCIsCisgICAgICAgICAgICAgICAgIkNoIiwKKyAgICAgICAgICAgICAgICAiQ0giLAorICAgICAgICAgICAgICAgICJjaGEiLAorICAgICAgICAgICAgICAgICJjaEEiLAorICAgICAgICAgICAgICAgICJDaGEiLAorICAgICAgICAgICAgICAgICJDaEEiLAorICAgICAgICAgICAgICAgICJDSGEiLAorICAgICAgICAgICAgICAgICJDSEEiLAorICAgICAgICAgICAgICAgICJpIiwKKyAgICAgICAgICAgICAgICAiSSIKKyAgICAgICAgICAgIH07CisgICAgCisgICAgICAgICAgICBTdHJpbmdbXSB1cHBlckZpcnN0ID0geworICAgICAgICAgICAgICAgICJIIiwKKyAgICAgICAgICAgICAgICAiaCIsCisgICAgICAgICAgICAgICAgIkNIIiwKKyAgICAgICAgICAgICAgICAiQ2giLAorICAgICAgICAgICAgICAgICJjaCIsCisgICAgICAgICAgICAgICAgIkNIQSIsCisgICAgICAgICAgICAgICAgIkNIYSIsCisgICAgICAgICAgICAgICAgIkNoQSIsCisgICAgICAgICAgICAgICAgIkNoYSIsCisgICAgICAgICAgICAgICAgImNoQSIsCisgICAgICAgICAgICAgICAgImNoYSIsCisgICAgICAgICAgICAgICAgIkkiLAorICAgICAgICAgICAgICAgICJpIgorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIC8vIGxvZ2xuKCJtaXhlZCBjYXNlIHRlc3QiKTsKKyAgICAgICAgICAgIC8vIGxvZ2xuKCJsb3dlciBmaXJzdCwgY2FzZSBsZXZlbCBvZmYiKTsKKyAgICAgICAgICAgIC8qIHN5biB3ZWUgZ2VuZXJpY1J1bGVzU3RhcnRlcigiW2Nhc2VmaXJzdCBsb3dlcl0mSDxjaDw8PENoPDw8Q0giLCBsb3dlckZpcnN0KTsgKi8KKyAgICAgICAgICAgIC8vIGxvZ2xuKCJ1cHBlciBmaXJzdCwgY2FzZSBsZXZlbCBvZmYiKTsKKyAgICAgICAgICAgIC8qIHN5biB3ZWUgZ2VuZXJpY1J1bGVzU3RhcnRlcigiW2Nhc2VmaXJzdCB1cHBlcl0mSDxjaDw8PENoPDw8Q0giLCB1cHBlckZpcnN0KTsgKi8KKyAgICAgICAgICAgIC8vIGxvZ2xuKCJsb3dlciBmaXJzdCwgY2FzZSBsZXZlbCBvbiIpOworICAgICAgICAgICAgZ2VuZXJpY1J1bGVzU3RhcnRlcigiW2Nhc2VmaXJzdCBsb3dlcl1bY2FzZWxldmVsIG9uXSZIPGNoPDw8Q2g8PDxDSCIsIGxvd2VyRmlyc3QpOworICAgICAgICAgICAgLy8gbG9nbG4oInVwcGVyIGZpcnN0LCBjYXNlIGxldmVsIG9uIik7CisgICAgICAgICAgICBnZW5lcmljUnVsZXNTdGFydGVyKCJbY2FzZWZpcnN0IHVwcGVyXVtjYXNlbGV2ZWwgb25dJkg8Y2g8PDxDaDw8PENIIiwgdXBwZXJGaXJzdCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0SW5jb21wbGV0ZUNudCgpIHsKKyAgICAgICAgU3RyaW5nW10gY250MSA9IHsKKyAgICAgICAgICAgICJBQSIsCisgICAgICAgICAgICAiQUMiLAorICAgICAgICAgICAgIkFaIiwKKyAgICAgICAgICAgICJBUSIsCisgICAgICAgICAgICAiQUIiLAorICAgICAgICAgICAgIkFCWiIsCisgICAgICAgICAgICAiQUJRIiwKKyAgICAgICAgICAgICJaIiwKKyAgICAgICAgICAgICJBQkMiLAorICAgICAgICAgICAgIlEiLAorICAgICAgICAgICAgIkIiCisgICAgICAgIH07CisgICAgICAgICAgICAKKyAgICAgICAgU3RyaW5nW10gY250MiA9IHsKKyAgICAgICAgICAgICJEQSIsCisgICAgICAgICAgICAiREFEIiwKKyAgICAgICAgICAgICJEQVoiLAorICAgICAgICAgICAgIk1BUiIsCisgICAgICAgICAgICAiWiIsCisgICAgICAgICAgICAiREFWSVMiLAorICAgICAgICAgICAgIk1BUksiLAorICAgICAgICAgICAgIkRBViIsCisgICAgICAgICAgICAiREFWSSIKKyAgICAgICAgfTsKKyAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IgY29sbCA9ICBudWxsOworICAgICAgICBTdHJpbmcgdGVtcCA9ICIgJiBaIDwgQUJDIDwgUSA8IEIiOworICAgICAgICB0cnkgeworICAgICAgICAgICAgY29sbCA9IG5ldyBSdWxlQmFzZWRDb2xsYXRvcih0ZW1wKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJmYWlsIHRvIGNyZWF0ZSBSdWxlQmFzZWRDb2xsYXRvciIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpbnQgc2l6ZSA9IGNudDEubGVuZ3RoOworICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgc2l6ZS0xOyBpKyspIHsKKyAgICAgICAgICAgIGZvcihpbnQgaiA9IGkrMTsgaiA8IHNpemU7IGorKykgeworICAgICAgICAgICAgICAgIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvciBpdGVyOworICAgICAgICAgICAgICAgIFN0cmluZyB0MSA9IGNudDFbaV07CisgICAgICAgICAgICAgICAgU3RyaW5nIHQyID0gY250MVtqXTsKKyAgICAgICAgICAgICAgICBkb1Rlc3QoY29sbCwgdDEsIHQyLCAtMSk7CisgICAgICAgICAgICAgICAgLy8gc3lud2VlIDogYWRkZWQgY29sbGF0aW9uIGVsZW1lbnQgaXRlcmF0b3IgdGVzdCAKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBpdGVyID0gY29sbC5nZXRDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IodDIpOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJDcmVhdGlvbiBvZiBpdGVyYXRvciBmYWlsZWQiKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJhY2tBbmRGb3J0aChpdGVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdGVtcCA9ICIgJiBaIDwgREFWSVMgPCBNQVJLIDxEQVYiOworICAgICAgICB0cnkgeworICAgICAgICAgICAgY29sbCA9IG5ldyBSdWxlQmFzZWRDb2xsYXRvcih0ZW1wKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJmYWlsIHRvIGNyZWF0ZSBSdWxlQmFzZWRDb2xsYXRvciIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzaXplID0gY250Mi5sZW5ndGg7CisgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBzaXplLTE7IGkrKykgeworICAgICAgICAgICAgZm9yKGludCBqID0gaSsxOyBqIDwgc2l6ZTsgaisrKSB7CisgICAgICAgICAgICAgICAgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yIGl0ZXI7CisgICAgICAgICAgICAgICAgU3RyaW5nIHQxID0gY250MltpXTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgdDIgPSBjbnQyW2pdOworICAgICAgICAgICAgICAgIGRvVGVzdChjb2xsLCB0MSwgdDIsIC0xKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBzeW53ZWUgOiBhZGRlZCBjb2xsYXRpb24gZWxlbWVudCBpdGVyYXRvciB0ZXN0CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgaXRlciA9IGNvbGwuZ2V0Q29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yKHQyKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigiQ3JlYXRpb24gb2YgaXRlcmF0b3IgZmFpbGVkIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBiYWNrQW5kRm9ydGgoaXRlcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RCbGFja0JpcmQoKSB7CisgICAgICAgIFN0cmluZ1tdIHNoaWZ0ZWQgPSB7CisgICAgICAgICAgICAiYmxhY2sgYmlyZCIsCisgICAgICAgICAgICAiYmxhY2stYmlyZCIsCisgICAgICAgICAgICAiYmxhY2tiaXJkIiwKKyAgICAgICAgICAgICJibGFjayBCaXJkIiwKKyAgICAgICAgICAgICJibGFjay1CaXJkIiwKKyAgICAgICAgICAgICJibGFja0JpcmQiLAorICAgICAgICAgICAgImJsYWNrIGJpcmRzIiwKKyAgICAgICAgICAgICJibGFjay1iaXJkcyIsCisgICAgICAgICAgICAiYmxhY2tiaXJkcyIKKyAgICAgICAgfTsKKyAgICAgICAgaW50W10gc2hpZnRlZFRlcnQgPSB7CisgICAgICAgICAgICAwLAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICAtMSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgLTEsCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgMAorICAgICAgICB9OworICAgICAgICBTdHJpbmdbXSBub25pZ25vcmFibGUgPSB7CisgICAgICAgICAgICAiYmxhY2sgYmlyZCIsCisgICAgICAgICAgICAiYmxhY2sgQmlyZCIsCisgICAgICAgICAgICAiYmxhY2sgYmlyZHMiLAorICAgICAgICAgICAgImJsYWNrLWJpcmQiLAorICAgICAgICAgICAgImJsYWNrLUJpcmQiLAorICAgICAgICAgICAgImJsYWNrLWJpcmRzIiwKKyAgICAgICAgICAgICJibGFja2JpcmQiLAorICAgICAgICAgICAgImJsYWNrQmlyZCIsCisgICAgICAgICAgICAiYmxhY2tiaXJkcyIKKyAgICAgICAgfTsKKyAgICAgICAgaW50IGkgPSAwLCBqID0gMDsKKyAgICAgICAgaW50IHNpemUgPSAwOworICAgICAgICBDb2xsYXRvciBjb2xsID0gQ29sbGF0b3IuZ2V0SW5zdGFuY2UobmV3IExvY2FsZSgiZW4iLCAiVVMiKSk7CisgICAgICAgIC8vdWNvbF9zZXRBdHRyaWJ1dGUoY29sbCwgVUNPTF9OT1JNQUxJWkFUSU9OX01PREUsIFVDT0xfT0ZGLCAmc3RhdHVzKTsKKyAgICAgICAgLy91Y29sX3NldEF0dHJpYnV0ZShjb2xsLCBVQ09MX0FMVEVSTkFURV9IQU5ETElORywgVUNPTF9OT05fSUdOT1JBQkxFLCAmc3RhdHVzKTsKKyAgICAgICAgKChSdWxlQmFzZWRDb2xsYXRvciljb2xsKS5zZXRBbHRlcm5hdGVIYW5kbGluZ1NoaWZ0ZWQoZmFsc2UpOworICAgICAgICBzaXplID0gbm9uaWdub3JhYmxlLmxlbmd0aDsKKyAgICAgICAgZm9yKGkgPSAwOyBpIDwgc2l6ZS0xOyBpKyspIHsKKyAgICAgICAgICAgIGZvcihqID0gaSsxOyBqIDwgc2l6ZTsgaisrKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHQxID0gbm9uaWdub3JhYmxlW2ldOworICAgICAgICAgICAgICAgIFN0cmluZyB0MiA9IG5vbmlnbm9yYWJsZVtqXTsKKyAgICAgICAgICAgICAgICBkb1Rlc3QoY29sbCwgdDEsIHQyLCAtMSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgKChSdWxlQmFzZWRDb2xsYXRvciljb2xsKS5zZXRBbHRlcm5hdGVIYW5kbGluZ1NoaWZ0ZWQodHJ1ZSk7CisgICAgICAgIGNvbGwuc2V0U3RyZW5ndGgoQ29sbGF0b3IuUVVBVEVSTkFSWSk7CisgICAgICAgIHNpemUgPSBzaGlmdGVkLmxlbmd0aDsKKyAgICAgICAgZm9yKGkgPSAwOyBpIDwgc2l6ZS0xOyBpKyspIHsKKyAgICAgICAgICAgIGZvcihqID0gaSsxOyBqIDwgc2l6ZTsgaisrKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHQxID0gc2hpZnRlZFtpXTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgdDIgPSBzaGlmdGVkW2pdOworICAgICAgICAgICAgICAgIGRvVGVzdChjb2xsLCB0MSwgdDIsIC0xKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjb2xsLnNldFN0cmVuZ3RoKENvbGxhdG9yLlRFUlRJQVJZKTsKKyAgICAgICAgc2l6ZSA9IHNoaWZ0ZWQubGVuZ3RoOworICAgICAgICBmb3IoaSA9IDE7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgICAgIFN0cmluZyB0MSA9IHNoaWZ0ZWRbaS0xXTsKKyAgICAgICAgICAgIFN0cmluZyB0MiA9IHNoaWZ0ZWRbaV07CisgICAgICAgICAgICBkb1Rlc3QoY29sbCwgdDEsIHQyLCBzaGlmdGVkVGVydFtpXSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdEZ1bmt5QSgpIHsKKyAgICAgICAgU3RyaW5nW10gdGVzdFNvdXJjZUNhc2VzID0geworICAgICAgICAgICAgIlx1MDA0MVx1MDMwMFx1MDMwMSIsCisgICAgICAgICAgICAiXHUwMDQxXHUwMzAwXHUwMzE2IiwKKyAgICAgICAgICAgICJcdTAwNDFcdTAzMDAiLAorICAgICAgICAgICAgIlx1MDBDMFx1MDMwMSIsCisgICAgICAgICAgICAvLyB0aGlzIHdvdWxkIHdvcmsgd2l0aCBmb3JjZWQgbm9ybWFsaXphdGlvbiAKKyAgICAgICAgICAgICJcdTAwQzBcdTAzMTYiLAorICAgICAgICB9OworICAgICAgICAKKyAgICAgICAgU3RyaW5nW10gdGVzdFRhcmdldENhc2VzID0geworICAgICAgICAgICAgIlx1MDA0MVx1MDMwMVx1MDMwMCIsCisgICAgICAgICAgICAiXHUwMDQxXHUwMzE2XHUwMzAwIiwKKyAgICAgICAgICAgICJcdTAwQzAiLAorICAgICAgICAgICAgIlx1MDA0MVx1MDMwMVx1MDMwMCIsCisgICAgICAgICAgICAvLyB0aGlzIHdvdWxkIHdvcmsgd2l0aCBmb3JjZWQgbm9ybWFsaXphdGlvbiAKKyAgICAgICAgICAgICJcdTAwNDFcdTAzMTZcdTAzMDAiLAorICAgICAgICB9OworICAgICAgICAKKyAgICAgICAgaW50W10gcmVzdWx0cyA9IHsKKyAgICAgICAgICAgIDEsCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIDEsCisgICAgICAgICAgICAwCisgICAgICAgIH07CisKKyAgICAgICAgQ29sbGF0b3IgIG15Q29sbGF0aW9uOworICAgICAgICB0cnkgeworICAgICAgICAgICAgbXlDb2xsYXRpb24gPSBDb2xsYXRvci5nZXRJbnN0YW5jZShuZXcgTG9jYWxlKCJlbiIsICJVUyIpKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogaW4gY3JlYXRpb24gb2YgcnVsZSBiYXNlZCBjb2xsYXRvciIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIC8vIGxvZ2xuKCJUZXN0aW5nIHNvbWUgQSBsZXR0ZXJzLCBmb3Igc29tZSByZWFzb24iKTsKKyAgICAgICAgbXlDb2xsYXRpb24uc2V0RGVjb21wb3NpdGlvbihDb2xsYXRvci5DQU5PTklDQUxfREVDT01QT1NJVElPTik7CisgICAgICAgIG15Q29sbGF0aW9uLnNldFN0cmVuZ3RoKENvbGxhdG9yLlRFUlRJQVJZKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0IDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBkb1Rlc3QobXlDb2xsYXRpb24sIHRlc3RTb3VyY2VDYXNlc1tpXSwgdGVzdFRhcmdldENhc2VzW2ldLCByZXN1bHRzW2ldKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0Q2hNb3ZlKCkgeworICAgICAgICBTdHJpbmdbXSBjaFRlc3QgPSB7CisgICAgICAgICAgICAiYyIsCisgICAgICAgICAgICAiQyIsCisgICAgICAgICAgICAiY2EiLCAiY2IiLCAiY3giLCAiY3kiLCAiQ1oiLAorICAgICAgICAgICAgImNcdTAzMEMiLCAiQ1x1MDMwQyIsCisgICAgICAgICAgICAiaCIsCisgICAgICAgICAgICAiSCIsCisgICAgICAgICAgICAiaGEiLCAiSGEiLCAiaGFybHkiLCAiaGIiLCAiSEIiLCAiaHgiLCAiSFgiLCAiaHkiLCAiSFkiLAorICAgICAgICAgICAgImNoIiwgImNIIiwgIkNoIiwgIkNIIiwKKyAgICAgICAgICAgICJjaGEiLCAiY2hhcmx5IiwgImNoZSIsICJjaGgiLCAiY2hjaCIsICJjaHIiLAorICAgICAgICAgICAgImkiLCAiSSIsICJpYXJseSIsCisgICAgICAgICAgICAiciIsICJSIiwKKyAgICAgICAgICAgICJyXHUwMzBDIiwgIlJcdTAzMEMiLAorICAgICAgICAgICAgInMiLAorICAgICAgICAgICAgIlMiLAorICAgICAgICAgICAgInNcdTAzMEMiLCAiU1x1MDMwQyIsCisgICAgICAgICAgICAieiIsICJaIiwKKyAgICAgICAgICAgICJ6XHUwMzBDIiwgIlpcdTAzMEMiCisgICAgICAgIH07CisgICAgICAgIENvbGxhdG9yIGNvbGwgPSBudWxsOworICAgICAgICB0cnkgeworICAgICAgICAgICAgY29sbCA9IENvbGxhdG9yLmdldEluc3RhbmNlKG5ldyBMb2NhbGUoImNzIiwgIiIpKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJDYW5ub3QgY3JlYXRlIENvbGxhdG9yIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaW50IHNpemUgPSBjaFRlc3QubGVuZ3RoOworICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgc2l6ZS0xOyBpKyspIHsKKyAgICAgICAgICAgIGZvcihpbnQgaiA9IGkrMTsgaiA8IHNpemU7IGorKykgeworICAgICAgICAgICAgICAgIFN0cmluZyB0MSA9IGNoVGVzdFtpXTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgdDIgPSBjaFRlc3Rbal07CisgICAgICAgICAgICAgICAgZG9UZXN0KGNvbGwsIHQxLCB0MiwgLTEpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RJbXBsaWNpdFRhaWxvcmluZygpIHsKKyAgICAgICAgU3RyaW5nW10gaW1wVGVzdCA9IHsKKyAgICAgICAgICAgICJcdTRlMDAiLAorICAgICAgICAgICAgImEiLAorICAgICAgICAgICAgIkEiLAorICAgICAgICAgICAgImIiLAorICAgICAgICAgICAgIkIiLAorICAgICAgICAgICAgIlx1NGUwMSIKKyAgICAgICAgfTsKKyAgICAgICAgU3RyaW5nIHJ1bGUgPSAiJlx1NGUwMCA8IGEgPDw8IEEgPCBiIDw8PCBCIjsKKyAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IgY29sbCA9IG51bGw7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjb2xsID0gbmV3IFJ1bGVCYXNlZENvbGxhdG9yKHJ1bGUpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkNhbid0IGNyZWF0ZSBjb2xsYXRvciIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpbnQgc2l6ZSA9IGltcFRlc3QubGVuZ3RoOworICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgc2l6ZS0xOyBpKyspIHsKKyAgICAgICAgICAgIGZvcihpbnQgaiA9IGkrMTsgaiA8IHNpemU7IGorKykgeworICAgICAgICAgICAgICAgIFN0cmluZyB0MSA9IGltcFRlc3RbaV07CisgICAgICAgICAgICAgICAgU3RyaW5nIHQyID0gaW1wVGVzdFtqXTsKKyAgICAgICAgICAgICAgICBkb1Rlc3QoY29sbCwgdDEsIHQyLCAtMSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0RkNEUHJvYmxlbSgpIHsKKyAgICAgICAgU3RyaW5nIHMxID0gIlx1MDQzMFx1MDMwNlx1MDMyNSI7CisgICAgICAgIFN0cmluZyBzMiA9ICJcdTA0RDFcdTAzMjUiOworICAgICAgICBDb2xsYXRvciBjb2xsID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNvbGwgPSBDb2xsYXRvci5nZXRJbnN0YW5jZSgpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkNhbid0IGNyZWF0ZSBjb2xsYXRvciIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBjb2xsLnNldERlY29tcG9zaXRpb24oQ29sbGF0b3IuTk9fREVDT01QT1NJVElPTik7CisgICAgICAgIGRvVGVzdChjb2xsLCBzMSwgczIsIDApOworICAgICAgICBjb2xsLnNldERlY29tcG9zaXRpb24oQ29sbGF0b3IuQ0FOT05JQ0FMX0RFQ09NUE9TSVRJT04pOworICAgICAgICBkb1Rlc3QoY29sbCwgczEsIHMyLCAwKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdEVtcHR5UnVsZSgpIHsKKyAgICAgICAgU3RyaW5nIHJ1bGV6ID0gIiI7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBSdWxlQmFzZWRDb2xsYXRvciBjb2xsID0gbmV3IFJ1bGVCYXNlZENvbGxhdG9yKHJ1bGV6KTsKKyAgICAgICAgICAgIGxvZ2xuKCJydWxlOiIgKyBjb2xsLmdldFJ1bGVzKCkpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0Sjc4NCgpIHsKKyAgICAgICAgU3RyaW5nW10gZGF0YSA9IHsKKyAgICAgICAgICAgICJBIiwgIlx1MDEwMSIsICJcdTAwZTEiLCAiXHUwMWNlIiwgIlx1MDBlMCIsCisgICAgICAgICAgICAiRSIsICJcdTAxMTMiLCAiXHUwMGU5IiwgIlx1MDExYiIsICJcdTAwZTgiLAorICAgICAgICAgICAgIkkiLCAiXHUwMTJiIiwgIlx1MDBlZCIsICJcdTAxZDAiLCAiXHUwMGVjIiwKKyAgICAgICAgICAgICJPIiwgIlx1MDE0ZCIsICJcdTAwZjMiLCAiXHUwMWQyIiwgIlx1MDBmMiIsCisgICAgICAgICAgICAiVSIsICJcdTAxNmIiLCAiXHUwMGZhIiwgIlx1MDFkNCIsICJcdTAwZjkiLAorICAgICAgICAgICAgIlx1MDBmYyIsICJcdTAxZDYiLCAiXHUwMWQ4IiwgIlx1MDFkYSIsICJcdTAxZGMiCisgICAgICAgIH07CisgICAgICAgIGdlbmVyaWNMb2NhbGVTdGFydGVyKG5ldyBMb2NhbGUoInpoIiwgIiIpLCBkYXRhKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0SjgxNSgpIHsKKyAgICAgICAgU3RyaW5nIGRhdGFbXSA9IHsKKyAgICAgICAgICAgICJhYSIsCisgICAgICAgICAgICAiQWEiLAorICAgICAgICAgICAgImFiIiwKKyAgICAgICAgICAgICJBYiIsCisgICAgICAgICAgICAiYWQiLAorICAgICAgICAgICAgIkFkIiwKKyAgICAgICAgICAgICJhZSIsCisgICAgICAgICAgICAiQWUiLAorICAgICAgICAgICAgIlx1MDBlNiIsCisgICAgICAgICAgICAiXHUwMGM2IiwKKyAgICAgICAgICAgICJhZiIsCisgICAgICAgICAgICAiQWYiLAorICAgICAgICAgICAgImIiLAorICAgICAgICAgICAgIkIiCisgICAgICAgIH07CisgICAgICAgIGdlbmVyaWNMb2NhbGVTdGFydGVyKG5ldyBMb2NhbGUoImZyIiwgIiIpLCBkYXRhKTsKKyAgICAgICAgZ2VuZXJpY1J1bGVzU3RhcnRlcigiW2JhY2t3YXJkcyAyXSZBPDxcdTAwZTYvZTw8PFx1MDBjNi9FIiwgZGF0YSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RKODMxKCkgeworICAgICAgICBTdHJpbmdbXSBkYXRhID0geworICAgICAgICAgICAgIkkiLAorICAgICAgICAgICAgImkiLAorICAgICAgICAgICAgIlkiLAorICAgICAgICAgICAgInkiCisgICAgICAgIH07CisgICAgICAgIGdlbmVyaWNMb2NhbGVTdGFydGVyKG5ldyBMb2NhbGUoImx2IiwgIiIpLCBkYXRhKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdEJlZm9yZSgpIHsKKyAgICAgICAgU3RyaW5nIGRhdGFbXSA9IHsKKyAgICAgICAgICAgICJcdTAxMDEiLCAiXHUwMGUxIiwgIlx1MDFjZSIsICJcdTAwZTAiLCAiQSIsCisgICAgICAgICAgICAiXHUwMTEzIiwgIlx1MDBlOSIsICJcdTAxMWIiLCAiXHUwMGU4IiwgIkUiLAorICAgICAgICAgICAgIlx1MDEyYiIsICJcdTAwZWQiLCAiXHUwMWQwIiwgIlx1MDBlYyIsICJJIiwKKyAgICAgICAgICAgICJcdTAxNGQiLCAiXHUwMGYzIiwgIlx1MDFkMiIsICJcdTAwZjIiLCAiTyIsCisgICAgICAgICAgICAiXHUwMTZiIiwgIlx1MDBmYSIsICJcdTAxZDQiLCAiXHUwMGY5IiwgIlUiLAorICAgICAgICAgICAgIlx1MDFkNiIsICJcdTAxZDgiLCAiXHUwMWRhIiwgIlx1MDFkYyIsICJcdTAwZmMiCisgICAgICAgIH07CisgICAgICAgIGdlbmVyaWNSdWxlc1N0YXJ0ZXIoCisgICAgICAgICImW2JlZm9yZSAxXWE8XHUwMTAxPFx1MDBlMTxcdTAxY2U8XHUwMGUwIgorICAgICAgICArICImW2JlZm9yZSAxXWU8XHUwMTEzPFx1MDBlOTxcdTAxMWI8XHUwMGU4IgorICAgICAgICArICImW2JlZm9yZSAxXWk8XHUwMTJiPFx1MDBlZDxcdTAxZDA8XHUwMGVjIgorICAgICAgICArICImW2JlZm9yZSAxXW88XHUwMTRkPFx1MDBmMzxcdTAxZDI8XHUwMGYyIgorICAgICAgICArICImW2JlZm9yZSAxXXU8XHUwMTZiPFx1MDBmYTxcdTAxZDQ8XHUwMGY5IgorICAgICAgICArICImdTxcdTAxZDY8XHUwMWQ4PFx1MDFkYTxcdTAxZGM8XHUwMGZjIiwgZGF0YSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdFJlZHVuZGFudFJ1bGVzKCkgeworICAgICAgICBTdHJpbmdbXSBydWxlcyA9IHsKKyAgICAgICAgICAgICImIGEgPDw8IGIgPDw8IGMgPDwgZCA8PDwgZSYgW2JlZm9yZSAxXSBlIDw8PCB4IiwKKyAgICAgICAgICAgICImIGEgPCBiIDw8PCBjIDw8IGQgPDw8IGUmIFtiZWZvcmUgMV0gZSA8PDwgeCIsCisgICAgICAgICAgICAiJiBhIDwgYiA8IGMgPCBkJiBbYmVmb3JlIDFdIGMgPCBtIiwKKyAgICAgICAgICAgICImIGEgPCBiIDw8PCBjIDw8IGQgPDw8IGUmIFtiZWZvcmUgM10gZSA8PDwgeCIsCisgICAgICAgICAgICAiJiBhIDwgYiA8PDwgYyA8PCBkIDw8PCBlJiBbYmVmb3JlIDJdIGUgPDw8IHgiLAorICAgICAgICAgICAgIiYgYSA8IGIgPDw8IGMgPDwgZCA8PDwgZSA8PDwgZiA8IGcmIFtiZWZvcmUgMV0gZyA8IHgiLAorICAgICAgICAgICAgIiYgYSA8PDwgYiA8PCBjIDwgZCYgYSA8IG0iLAorICAgICAgICAgICAgIiZhPGI8PGJcdTAzMDEgJno8YiIsCisgICAgICAgICAgICAiJno8bTw8PHE8PDxtIiwKKyAgICAgICAgICAgICImejw8PG08cTw8PG0iLAorICAgICAgICAgICAgIiYgYSA8IGIgPCBjIDwgZCYgciA8IGMiLAorICAgICAgICAgICAgIiYgYSA8IGIgPCBjIDwgZCYgciA8IGMiLAorICAgICAgICAgICAgIiYgYSA8IGIgPCBjIDwgZCYgYyA8IG0iLAorICAgICAgICAgICAgIiYgYSA8IGIgPCBjIDwgZCYgYSA8IG0iCisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICBTdHJpbmdbXSBleHBlY3RlZFJ1bGVzID0geworICAgICAgICAgICAgIiZcdTIwODk8PDx4IiwKKyAgICAgICAgICAgICImIGEgPDw8IHggPCBiIDw8PCBjIDw8IGQgPDw8IGUiLAorICAgICAgICAgICAgIiYgYSA8IGIgPCBtIDwgYyA8IGQiLAorICAgICAgICAgICAgIiYgYSA8IGIgPDw8IGMgPDwgZCA8PDwgeCA8PDwgZSIsCisgICAgICAgICAgICAiJiBhIDwgYiA8PDwgYyA8PDwgeCA8PCBkIDw8PCBlIiwKKyAgICAgICAgICAgICImIGEgPCBiIDw8PCBjIDw8IGQgPDw8IGUgPDw8IGYgPCB4IDwgZyIsCisgICAgICAgICAgICAiJiBhIDw8PCBiIDw8IGMgPCBtIDwgZCIsCisgICAgICAgICAgICAiJmE8Ylx1MDMwMSAmejxiIiwKKyAgICAgICAgICAgICImejxxPDw8bSIsCisgICAgICAgICAgICAiJno8cTw8PG0iLAorICAgICAgICAgICAgIiYgYSA8IGIgPCBkJiByIDwgYyIsCisgICAgICAgICAgICAiJiBhIDwgYiA8IGQmIHIgPCBjIiwKKyAgICAgICAgICAgICImIGEgPCBiIDwgYyA8IG0gPCBkIiwKKyAgICAgICAgICAgICImIGEgPCBtIDwgYiA8IGMgPCBkIgorICAgICAgICB9OworICAgICAgICAKKyAgICAgICAgU3RyaW5nW11bXSB0ZXN0ZGF0YSA9IHsKKyAgICAgICAgICAgIHsiXHUyMDg5IiwgIngifSwKKyAgICAgICAgICAgIHsiYSIsICJ4IiwgImIiLCAiYyIsICJkIiwgImUifSwKKyAgICAgICAgICAgIHsiYSIsICJiIiwgIm0iLCAiYyIsICJkIn0sCisgICAgICAgICAgICB7ImEiLCAiYiIsICJjIiwgImQiLCAieCIsICJlIn0sCisgICAgICAgICAgICB7ImEiLCAiYiIsICJjIiwgIngiLCAiZCIsICJlIn0sCisgICAgICAgICAgICB7ImEiLCAiYiIsICJjIiwgImQiLCAiZSIsICJmIiwgIngiLCAiZyJ9LAorICAgICAgICAgICAgeyJhIiwgImIiLCAiYyIsICJtIiwgImQifSwKKyAgICAgICAgICAgIHsiYSIsICJiXHUwMzAxIiwgInoiLCAiYiJ9LAorICAgICAgICAgICAgeyJ6IiwgInEiLCAibSJ9LAorICAgICAgICAgICAgeyJ6IiwgInEiLCAibSJ9LAorICAgICAgICAgICAgeyJhIiwgImIiLCAiZCJ9LAorICAgICAgICAgICAgeyJyIiwgImMifSwKKyAgICAgICAgICAgIHsiYSIsICJiIiwgImMiLCAibSIsICJkIn0sCisgICAgICAgICAgICB7ImEiLCAibSIsICJiIiwgImMiLCAiZCJ9CisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICBTdHJpbmcgcmx6ID0gIiI7CisgICAgICAgIGZvcihpbnQgaSA9IDA7IGk8cnVsZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGxvZ2xuKCJ0ZXN0aW5nIHJ1bGUgIiArIHJ1bGVzW2ldICsgIiwgZXhwZWN0ZWQgdG8gYmUiICsgZXhwZWN0ZWRSdWxlc1tpXSk7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHJseiA9IHJ1bGVzW2ldOworICAgICAgICAgICAgICAgIENvbGxhdG9yIGNyZWR1bmRhbnQgPSBuZXcgUnVsZUJhc2VkQ29sbGF0b3Iocmx6KTsKKyAgICAgICAgICAgICAgICBybHogPSBleHBlY3RlZFJ1bGVzW2ldOworICAgICAgICAgICAgICAgIENvbGxhdG9yIGNyZXN1bHRpbmcgPSBuZXcgUnVsZUJhc2VkQ29sbGF0b3Iocmx6KTsKKyAgICAgICAgICAgICAgICBsb2dsbigiIGNyZWR1bmRhbnQgUnVsZToiICsgKChSdWxlQmFzZWRDb2xsYXRvciljcmVkdW5kYW50KS5nZXRSdWxlcygpKTsKKyAgICAgICAgICAgICAgICBsb2dsbigiIGNyZXN1bHRpbmcgUnVsZToiICsgKChSdWxlQmFzZWRDb2xsYXRvciljcmVzdWx0aW5nKS5nZXRSdWxlcygpKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkNhbm5vdCBjcmVhdGUgUnVsZUJhc2VkQ29sbGF0b3IiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vdGVzdEFnYWluc3RVQ0EoY3Jlc3VsdGluZywgY3JlZHVuZGFudCwgImV4cGVjdGVkIiwgVFJVRSwgJnN0YXR1cyk7CisgICAgICAgICAgICAvLyBsb2dsbigidGVzdGluZyB1c2luZyBkYXRhXG4iKTsKKyAgICAgICAgICAgIGdlbmVyaWNSdWxlc1N0YXJ0ZXIocnVsZXNbaV0sIHRlc3RkYXRhW2ldKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0RXhwYW5zaW9uU3ludGF4KCkgeworICAgICAgICBTdHJpbmdbXSBydWxlcyA9IHsKKyAgICAgICAgICAgICImQUUgPDw8IGEgPDwgYiA8PDwgYyAmZCA8PDwgZiIsCisgICAgICAgICAgICAiJkFFIDw8PCBhIDw8PCBiIDw8IGMgPDwgZCA8IGUgPCBmIDw8PCBnIiwKKyAgICAgICAgICAgICImQUUgPDw8IEIgPDw8IEMgLyBEIDw8PCBGIgorICAgICAgICB9OworICAgICAgICAKKyAgICAgICAgU3RyaW5nW10gZXhwZWN0ZWRSdWxlcyA9IHsKKyAgICAgICAgICAgICImQSA8PDwgYSAvIEUgPDwgYiAvIEUgPDw8IGMgL0UgICZkIDw8PCBmIiwKKyAgICAgICAgICAgICImQSA8PDwgYSAvIEUgPDw8IGIgLyBFIDw8IGMgLyBFIDw8IGQgLyBFIDwgZSA8IGYgPDw8IGciLAorICAgICAgICAgICAgIiZBIDw8PCBCIC8gRSA8PDwgQyAvIEVEIDw8PCBGIC8gRSIKKyAgICAgICAgfTsKKyAgICAgICAgCisgICAgICAgIFN0cmluZ1tdW10gdGVzdGRhdGEgPSB7CisgICAgICAgICAgICB7IkFFIiwgImEiLCAiYiIsICJjIn0sCisgICAgICAgICAgICB7IkFFIiwgImEiLCAiYiIsICJjIiwgImQiLCAiZSIsICJmIiwgImcifSwKKyAgICAgICAgICAgIHsiQUUiLCAiQiIsICJDIn0gLy8gLyBFRCA8PDwgRiAvIEUifSwKKyAgICAgICAgfTsKKyAgICAgICAgCisgICAgICAgIGZvcihpbnQgaSA9IDA7IGk8cnVsZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIC8vIGxvZ2xuKCJ0ZXN0aW5nIHJ1bGUgIiArIHJ1bGVzW2ldICsgIiwgZXhwZWN0ZWQgdG8gYmUgIiArIGV4cGVjdGVkUnVsZXNbaV0pOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgcmx6ID0gcnVsZXNbaV07CisgICAgICAgICAgICAgICAgQ29sbGF0b3IgY3JlZHVuZGFudCA9IG5ldyBSdWxlQmFzZWRDb2xsYXRvcihybHopOworICAgICAgICAgICAgICAgIHJseiA9IGV4cGVjdGVkUnVsZXNbaV07CisgICAgICAgICAgICAgICAgQ29sbGF0b3IgY3Jlc3VsdGluZyA9IG5ldyBSdWxlQmFzZWRDb2xsYXRvcihybHopOworICAgICAgICAgICAgICAgIGxvZ2xuKCIgY3JlZHVuZGFudCBSdWxlOiIgKyAoKFJ1bGVCYXNlZENvbGxhdG9yKWNyZWR1bmRhbnQpLmdldFJ1bGVzKCkpOworICAgICAgICAgICAgICAgIGxvZ2xuKCIgY3Jlc3VsdGluZyBSdWxlOiIgKyAoKFJ1bGVCYXNlZENvbGxhdG9yKWNyZXN1bHRpbmcpLmdldFJ1bGVzKCkpOworICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIHRlc3RBZ2FpbnN0VUNBIHN0aWxsIGRvZXNuJ3QgaGFuZGxlIGV4cGFuc2lvbnMgY29ycmVjdGx5LCBzbyB0aGlzIGlzIG5vdCBydW4gCisgICAgICAgICAgICAvLyBhcyBhIGhhcmQgZXJyb3IgdGVzdCwgYnV0IG9ubHkgaW4gaW5mb3JtYXRpb24gbW9kZSAKKyAgICAgICAgICAgIC8vdGVzdEFnYWluc3RVQ0EoY3Jlc3VsdGluZywgY3JlZHVuZGFudCwgImV4cGVjdGVkIiwgRkFMU0UsICZzdGF0dXMpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBsb2dsbigidGVzdGluZyB1c2luZyBkYXRhIik7CisgICAgICAgICAgICBnZW5lcmljUnVsZXNTdGFydGVyKHJ1bGVzW2ldLCB0ZXN0ZGF0YVtpXSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0SGFuZ3VsVGFpbG9yaW5nKCkgeworICAgICAgICBTdHJpbmdbXSBrb3JlYW5EYXRhID0geworICAgICAgICAgICAgIlx1YWMwMCIsICJcdTRmM2QiLCAiXHU0ZjczIiwgIlx1NTA0NyIsICJcdTUwZjkiLCAiXHU1MmEwIiwgIlx1NTNlZiIsICJcdTU0NzUiLAorICAgICAgICAgICAgIlx1NTRlNSIsICJcdTU2MDkiLCAiXHU1YWMxIiwgIlx1NWJiNiIsICJcdTY2ODciLCAiXHU2N2I2IiwgIlx1NjdiNyIsICJcdTY3ZWYiLAorICAgICAgICAgICAgIlx1NmI0YyIsICJcdTczYzIiLCAiXHU3NWMyIiwgIlx1N2EzYyIsICJcdTgyZGIiLCAiXHU4MzA0IiwgIlx1ODg1NyIsICJcdTg4ODgiLAorICAgICAgICAgICAgIlx1OGEzNiIsICJcdThjYzgiLCAiXHU4ZGNmIiwgIlx1OGVmYiIsICJcdThmZTYiLCAiXHU5OWQ1IiwKKyAgICAgICAgICAgICJcdTRFRUUiLCAiXHU1MEEyIiwgIlx1NTQ5NiIsICJcdTU0RkYiLCAiXHU1Nzc3IiwgIlx1NUI4QSIsICJcdTY1OUQiLCAiXHU2OThFIiwKKyAgICAgICAgICAgICJcdTZBOUYiLCAiXHU3M0M4IiwgIlx1N0IzMyIsICJcdTgwMUUiLCAiXHU4MjM4IiwgIlx1ODQ2RCIsICJcdThCMEMiCisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICBTdHJpbmcgcnVsZXMgPQorICAgICAgICAgICAgIiZcdWFjMDAgPDw8IFx1NGYzZCA8PDwgXHU0ZjczIDw8PCBcdTUwNDcgPDw8IFx1NTBmOSA8PDwgXHU1MmEwIDw8PCBcdTUzZWYgPDw8IFx1NTQ3NSAiCisgICAgICAgICAgICArICI8PDwgXHU1NGU1IDw8PCBcdTU2MDkgPDw8IFx1NWFjMSA8PDwgXHU1YmI2IDw8PCBcdTY2ODcgPDw8IFx1NjdiNiA8PDwgXHU2N2I3IDw8PCBcdTY3ZWYgIgorICAgICAgICAgICAgKyAiPDw8IFx1NmI0YyA8PDwgXHU3M2MyIDw8PCBcdTc1YzIgPDw8IFx1N2EzYyA8PDwgXHU4MmRiIDw8PCBcdTgzMDQgPDw8IFx1ODg1NyA8PDwgXHU4ODg4ICIKKyAgICAgICAgICAgICsgIjw8PCBcdThhMzYgPDw8IFx1OGNjOCA8PDwgXHU4ZGNmIDw8PCBcdThlZmIgPDw8IFx1OGZlNiA8PDwgXHU5OWQ1ICIKKyAgICAgICAgICAgICsgIjw8PCBcdTRFRUUgPDw8IFx1NTBBMiA8PDwgXHU1NDk2IDw8PCBcdTU0RkYgPDw8IFx1NTc3NyA8PDwgXHU1QjhBIDw8PCBcdTY1OUQgPDw8IFx1Njk4RSAiCisgICAgICAgICAgICArICI8PDwgXHU2QTlGIDw8PCBcdTczQzggPDw8IFx1N0IzMyA8PDwgXHU4MDFFIDw8PCBcdTgyMzggPDw8IFx1ODQ2RCA8PDwgXHU4QjBDIjsKKyAgICAgICAgCisgICAgICAgIFN0cmluZyBybHogPSBydWxlczsKKyAgICAgICAgCisgICAgICAgIENvbGxhdG9yIGNvbGwgPSBudWxsOworICAgICAgICB0cnkgeworICAgICAgICAgICAgY29sbCA9IG5ldyBSdWxlQmFzZWRDb2xsYXRvcihybHopOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIlVuYWJsZSB0byBvcGVuIGNvbGxhdG9yIHdpdGggcnVsZXMiICsgcnVsZXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIC8vIGxvZ2xuKCJVc2luZyBzdGFydCBvZiBrb3JlYW4gcnVsZXNcbiIpOworICAgICAgICBnZW5lcmljT3JkZXJpbmdUZXN0KGNvbGwsIGtvcmVhbkRhdGEpOworICAgICAgICAvLyBsb2dsbigiU2V0dGluZyBqYW1vU3BlY2lhbCB0byBUUlVFIGFuZCB0ZXN0aW5nIG9uY2UgbW9yZVxuIik7CisgICAgICAgIAorICAgICAgICAvLyBjYW4ndCBzZXQgamFtbyBpbiBpY3U0aiAKKyAgICAgICAgLy8gKChVQ0FUYWJsZUhlYWRlciAqKWNvbGwtPmltYWdlKS0+amFtb1NwZWNpYWwgPSBUUlVFOyAvLyBkb24ndCB0cnkgdGhpcyBhdCBob21lCisgICAgICAgIC8vIGdlbmVyaWNPcmRlcmluZ1Rlc3QoY29sbCwga29yZWFuRGF0YSk7CisgICAgICAgIAorICAgICAgICAvLyBubyBzdWNoIGxvY2FsZSBpbiBpY3U0agorICAgICAgICAvLyBsb2dsbigiVXNpbmcga29fX0xPVFVTIGxvY2FsZVxuIik7CisgICAgICAgIC8vIGdlbmVyaWNMb2NhbGVTdGFydGVyKG5ldyBMb2NhbGUoImtvX19MT1RVUyIsICIiKSwga29yZWFuRGF0YSk7CisgICAgfQorCisgICAgLyogCisgICAgICogcnVsZXMgcmV0dXJuZWQgYnkgVUNBIGlzICIiIGFuZCB3aWxsIGJlIHJlamVjdGVkIGJ5IHRoZSAKKyAgICAgKiBSdWxlQmFzZWRDb2xsYXRvciBjb25zdHJ1Y3RvcgorICAgICBwdWJsaWMgdm9pZCBUZXN0VUNBUnVsZXMoKSB7CisgICAgICAgIENvbGxhdG9yIGNvbGwgPSAgbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNvbGwgPSBDb2xsYXRvci5nZXRJbnN0YW5jZSgpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIlVuYWJsZSB0byBjcmVhdGUgYSBjb2xsYXRvciIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGxvZ2xuKCJUZXN0VUNBUnVsZXNcbiIpOworICAgICAgICBTdHJpbmcgcnVsZXMgPSAoKFJ1bGVCYXNlZENvbGxhdG9yKWNvbGwpLmdldFJ1bGVzKCk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBDb2xsYXRvciBVQ0Fmcm9tUnVsZXMgPSBuZXcgUnVsZUJhc2VkQ29sbGF0b3IocnVsZXMpOworICAgICAgICAgICAgbG9nbG4oInJ1bGU6IiArICgoUnVsZUJhc2VkQ29sbGF0b3IpVUNBZnJvbVJ1bGVzKSk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiVW5hYmxlIHRvIGNyZWF0ZSBhIGNvbGxhdG9yIGZyb20gVUNBUnVsZXMhXG4iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICAqLworICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RJbmNyZW1lbnRhbE5vcm1hbGl6ZSgpIHsKKyAgICAgICAgQ29sbGF0b3IgICAgICAgIGNvbGwgPSBudWxsOzsKKyAgICAgICAgLy8gbG9nbG4oIlRlc3QgMSAuLi4uIik7CisgICAgICAgIHsKKyAgICAgICAgICAgIC8qIFRlc3QgMS4gIFJ1biB2ZXJ5IGxvbmcgdW5ub3JtYWxpemVkIHN0cmluZ3MsIHRvIGZvcmNlIG92ZXJmbG93IG9mKi8KKyAgICAgICAgICAgIC8qICAgICAgICAgIG1vc3QgYnVmZmVycyBhbG9uZyB0aGUgd2F5LiovCisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgY29sbCA9IENvbGxhdG9yLmdldEluc3RhbmNlKG5ldyBMb2NhbGUoImVuIiwgIlVTIikpOworICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiQ2Fubm90IGdldCBkZWZhdWx0IGluc3RhbmNlISIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNoYXIgYmFzZUEgICAgID0weDQxOworICAgICAgICAgICAgY2hhciBjY01peFtdICAgPSB7MHgzMTYsIDB4MzIxLCAweDMwMH07CisgICAgICAgICAgICBpbnQgICAgICAgICAgc0xlbjsKKyAgICAgICAgICAgIGludCAgICAgICAgICBpOworICAgICAgICAgICAgU3RyaW5nQnVmZmVyIHN0ckEgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgICAgICBTdHJpbmdCdWZmZXIgc3RyQiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgY29sbC5zZXREZWNvbXBvc2l0aW9uKENvbGxhdG9yLkNBTk9OSUNBTF9ERUNPTVBPU0lUSU9OKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yIChzTGVuID0gMTAwMDsgc0xlbjwxMDAxOyBzTGVuKyspIHsKKyAgICAgICAgICAgICAgICBzdHJBLmRlbGV0ZSgwLCBzdHJBLmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICBzdHJBLmFwcGVuZChiYXNlQSk7CisgICAgICAgICAgICAgICAgc3RyQi5kZWxldGUoMCwgc3RyQi5sZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgc3RyQi5hcHBlbmQoYmFzZUEpOworICAgICAgICAgICAgICAgIGZvciAoaT0xOyBpPCBzTGVuOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgc3RyQS5hcHBlbmQoY2NNaXhbaSAlIDNdKTsKKyAgICAgICAgICAgICAgICAgICAgc3RyQi5pbnNlcnQoMSwgY2NNaXhbaSAlIDNdKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY29sbC5zZXRTdHJlbmd0aChDb2xsYXRvci5URVJUSUFSWSk7ICAgLy8gRG8gdGVzdCB3aXRoIGRlZmF1bHQgc3RyZW5ndGgsIHdoaWNoIHJ1bnMKKyAgICAgICAgICAgICAgICBkb1Rlc3QoY29sbCwgc3RyQS50b1N0cmluZygpLCBzdHJCLnRvU3RyaW5nKCksIDApOyAgICAvLyAgIG9wdGltaXplZCBmdW5jdGlvbnMgaW4gdGhlIGltcGwKKyAgICAgICAgICAgICAgICBjb2xsLnNldFN0cmVuZ3RoKENvbGxhdG9yLklERU5USUNBTCk7ICAgLy8gRG8gYWdhaW4gd2l0aCB0aGUgc2xvdywgZ2VuZXJhbCBpbXBsLgorICAgICAgICAgICAgICAgIGRvVGVzdChjb2xsLCBzdHJBLnRvU3RyaW5nKCksIHN0ckIudG9TdHJpbmcoKSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLyogIFRlc3QgMjogIE5vbi1ub3JtYWwgc2VxdWVuY2UgaW4gYSBzdHJpbmcgdGhhdCBleHRlbmRzIHRvIHRoZSBsYXN0IGNoYXJhY3RlciovCisgICAgICAgIC8qICAgICAgICAgb2YgdGhlIHN0cmluZy4gIENoZWNrcyBhIGNvdXBsZSBvZiBlZGdlIGNhc2VzLiovCisgICAgICAgIC8vIGxvZ2xuKCJUZXN0IDIgLi4uLiIpOyAgICAKKyAgICAgICAgeworICAgICAgICAgICAgU3RyaW5nIHN0ckEgPSAiQUFcdTAzMDBcdTAzMTYiOworICAgICAgICAgICAgU3RyaW5nIHN0ckIgPSAiQVx1MDBjMFx1MDMxNiI7CisgICAgICAgICAgICBjb2xsLnNldFN0cmVuZ3RoKENvbGxhdG9yLlRFUlRJQVJZKTsKKyAgICAgICAgICAgIGRvVGVzdChjb2xsLCBzdHJBLCBzdHJCLCAwKTsKKyAgICAgICAgfQorICAgICAgICAvKiAgVGVzdCAzOiAgTm9uLW5vcm1hbCBzZXF1ZW5jZSBpcyB0ZXJtaW5hdGVkIGJ5IGEgc3Vycm9nYXRlIHBhaXIuKi8KKyAgICAgICAgLy8gbG9nbG4oIlRlc3QgMyAuLi4uIik7CisgICAgICAgIHsKKyAgICAgICAgICAgIFN0cmluZyBzdHJBID0gIkFBXHUwMzAwXHUwMzE2XHVEODAwXHVEQzAxIjsKKyAgICAgICAgICAgIFN0cmluZyBzdHJCID0gIkFcdTAwYzBcdTAzMTZcdUQ4MDBcdURDMDAiOworICAgICAgICAgICAgY29sbC5zZXRTdHJlbmd0aChDb2xsYXRvci5URVJUSUFSWSk7CisgICAgICAgICAgICBkb1Rlc3QoY29sbCwgc3RyQSwgc3RyQiwgMSk7CisgICAgICAgIH0KKyAgICAgICAgLyogIFRlc3QgNDogIEltYmVkZGVkIG51bGxzIGRvIG5vdCB0ZXJtaW5hdGUgYSBzdHJpbmcgd2hlbiBsZW5ndGggaXMgc3BlY2lmaWVkLiovCisgICAgICAgIC8vIGxvZ2xuKCJUZXN0IDQgLi4uLiIpOworICAgICAgICAvKgorICAgICAgICAgKiBub3QgYSB2YWxpZCB0ZXN0IHNpbmNlIHN0cmluZyBhcmUgbnVsbC10ZXJtaW5hdGVkIGluIGphdmF7CisgICAgICAgICAgICBjaGFyIHN0ckFbXSA9IHsweDQxLCAweDAwLCAweDQyfTsKKyAgICAgICAgICAgIGNoYXIgc3RyQltdID0gezB4NDEsIDB4MDAsIDB4MDB9OworICAgICAgICAgICAgCisgICAgICAgICAgICBpbnQgcmVzdWx0ID0gY29sbC5jb21wYXJlKG5ldyBTdHJpbmcoc3RyQSksIG5ldyBTdHJpbmcoc3RyQikpOworICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSAxKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkVSUk9SIDEgaW4gdGVzdCA0XG4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgcmVzdWx0ID0gY29sbC5jb21wYXJlKG5ldyBTdHJpbmcoc3RyQSwgMCwgMSksIG5ldyBTdHJpbmcoc3RyQiwgMCwgMSkpOworICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSAwKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkVSUk9SIDEgaW4gdGVzdCA0XG4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgQ29sbGF0aW9uS2V5IHNvcnRLZXlBID0gY29sbC5nZXRDb2xsYXRpb25LZXkobmV3IFN0cmluZyhzdHJBKSk7CisgICAgICAgICAgICBDb2xsYXRpb25LZXkgc29ydEtleUIgPSBjb2xsLmdldENvbGxhdGlvbktleShuZXcgU3RyaW5nKHN0ckIpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaW50IHIgPSBzb3J0S2V5QS5jb21wYXJlVG8oc29ydEtleUIpOworICAgICAgICAgICAgaWYgKHIgPD0gMCkgeworICAgICAgICAgICAgICAgIGVycmxuKCJFcnJvciA0IGluIHRlc3QgNFxuIik7CisgICAgICAgICAgICB9CisgICAgCisgICAgICAgICAgICBjb2xsLnNldFN0cmVuZ3RoKENvbGxhdG9yLklERU5USUNBTCk7CisgICAgICAgICAgICBzb3J0S2V5QSA9IGNvbGwuZ2V0Q29sbGF0aW9uS2V5KG5ldyBTdHJpbmcoc3RyQSkpOworICAgICAgICAgICAgc29ydEtleUIgPSBjb2xsLmdldENvbGxhdGlvbktleShuZXcgU3RyaW5nKHN0ckIpKTsKKyAgICAKKyAgICAgICAgICAgIHIgPSBzb3J0S2V5QS5jb21wYXJlVG8oc29ydEtleUIpOworICAgICAgICAgICAgaWYgKHIgPD0gMCkgeworICAgICAgICAgICAgICAgIGVycmxuKCJFcnJvciA3IGluIHRlc3QgNFxuIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGNvbGwuc2V0U3RyZW5ndGgoQ29sbGF0b3IuVEVSVElBUlkpOworICAgICAgICB9CisgICAgICAgICovCisgICAgICAgIC8qICBUZXN0IDU6ICBOdWxsIGNoYXJhY3RlcnMgaW4gbm9uLW5vcm1hbCBzb3VyY2Ugc3RyaW5ncy4qLworICAgICAgICAvLyBsb2dsbigiVGVzdCA1IC4uLi4iKTsKKyAgICAgICAgLyoKKyAgICAgICAgICogbm90IGEgdmFsaWQgdGVzdCBzaW5jZSBzdHJpbmcgYXJlIG51bGwtdGVybWluYXRlZCBpbiBqYXZheworICAgICAgICB7CisgICAgICAgICAgICBjaGFyIHN0ckFbXSA9IHsweDQxLCAweDQxLCAweDMwMCwgMHgzMTYsIDB4MDAsIDB4NDIsfTsKKyAgICAgICAgICAgIGNoYXIgc3RyQltdID0gezB4NDEsIDB4NDEsIDB4MzAwLCAweDMxNiwgMHgwMCwgMHgwMCx9OworICAgICAgICAgICAKKyAgICAKKyAgICAgICAgICAgIGludCByZXN1bHQgPSBjb2xsLmNvbXBhcmUobmV3IFN0cmluZyhzdHJBLCAwLCA2KSwgbmV3IFN0cmluZyhzdHJCLCAwLCA2KSk7CisgICAgICAgICAgICBpZiAocmVzdWx0IDwgMCkgeworICAgICAgICAgICAgICAgIGVycmxuKCJFUlJPUiAxIGluIHRlc3QgNVxuIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXN1bHQgPSBjb2xsLmNvbXBhcmUobmV3IFN0cmluZyhzdHJBLCAwLCA0KSwgbmV3IFN0cmluZyhzdHJCLCAwLCA0KSk7CisgICAgICAgICAgICBpZiAocmVzdWx0ICE9IDApIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRVJST1IgMiBpbiB0ZXN0IDVcbiIpOworICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgQ29sbGF0aW9uS2V5IHNvcnRLZXlBID0gY29sbC5nZXRDb2xsYXRpb25LZXkobmV3IFN0cmluZyhzdHJBKSk7CisgICAgICAgICAgICBDb2xsYXRpb25LZXkgc29ydEtleUIgPSBjb2xsLmdldENvbGxhdGlvbktleShuZXcgU3RyaW5nKHN0ckIpKTsKKyAgICAgICAgICAgIGludCByID0gc29ydEtleUEuY29tcGFyZVRvKHNvcnRLZXlCKTsKKyAgICAgICAgICAgIGlmIChyIDw9IDApIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRXJyb3IgNCBpbiB0ZXN0IDVcbiIpOworICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgY29sbC5zZXRTdHJlbmd0aChDb2xsYXRvci5JREVOVElDQUwpOworICAgICAgICAgICAgCisgICAgICAgICAgICBzb3J0S2V5QSA9IGNvbGwuZ2V0Q29sbGF0aW9uS2V5KG5ldyBTdHJpbmcoc3RyQSkpOworICAgICAgICAgICAgc29ydEtleUIgPSBjb2xsLmdldENvbGxhdGlvbktleShuZXcgU3RyaW5nKHN0ckIpKTsKKyAgICAgICAgICAgIHIgPSBzb3J0S2V5QS5jb21wYXJlVG8oc29ydEtleUIpOworICAgICAgICAgICAgaWYgKHIgPD0gMCkgeworICAgICAgICAgICAgICAgIGVycmxuKCJFcnJvciA3IGluIHRlc3QgNVxuIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGNvbGwuc2V0U3RyZW5ndGgoQ29sbGF0b3IuVEVSVElBUlkpOworICAgICAgICB9CisgICAgICAgICovCisgICAgICAgIC8qICBUZXN0IDY6ICBOdWxsIGNoYXJhY3RlciBhcyBiYXNlIG9mIGEgbm9uLW5vcm1hbCBjb21iaW5pbmcgc2VxdWVuY2UuKi8KKyAgICAgICAgLy8gbG9nbG4oIlRlc3QgNiAuLi4uIik7CisgICAgICAgIC8qCisgICAgICAgICAqIG5vdCBhIHZhbGlkIHRlc3Qgc2luY2Ugc3RyaW5nIGFyZSBudWxsLXRlcm1pbmF0ZWQgaW4gamF2YXsKKyAgICAgICAgeworICAgICAgICAgICAgY2hhciBzdHJBW10gPSB7MHg0MSwgMHgwLCAweDMwMCwgMHgzMTYsIDB4NDEsIDB4MzAyLH07CisgICAgICAgICAgICBjaGFyIHN0ckJbXSA9IHsweDQxLCAweDAsIDB4MzAyLCAweDMxNiwgMHg0MSwgMHgzMDAsfTsKKyAgICAKKyAgICAgICAgICAgIGludCByZXN1bHQgPSBjb2xsLmNvbXBhcmUobmV3IFN0cmluZyhzdHJBLCAwLCA1KSwgbmV3IFN0cmluZyhzdHJCLCAwLCA1KSk7CisgICAgICAgICAgICBpZiAocmVzdWx0ICE9IC0xKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkVycm9yIDEgaW4gdGVzdCA2XG4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJlc3VsdCA9IGNvbGwuY29tcGFyZShuZXcgU3RyaW5nKHN0ckEsIDAsIDEpLCBuZXcgU3RyaW5nKHN0ckIsIDAsIDEpKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gMCkgeworICAgICAgICAgICAgICAgIGVycmxuKCJFcnJvciAyIGluIHRlc3QgNlxuIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgKi8KKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdENvbnRyYWN0aW9uKCkgeworICAgICAgICBTdHJpbmdbXSB0ZXN0cnVsZXMgPSB7CisgICAgICAgICAgICAiJkEgPSBBQiAvIEIiLAorICAgICAgICAgICAgIiZBID0gQVxcdTAzMDYvXFx1MDMwNiIsCisgICAgICAgICAgICAiJmMgPSBjaCAvIGgiLAorICAgICAgICB9OworICAgICAgICBTdHJpbmdbXSB0ZXN0ZGF0YSA9IHsKKyAgICAgICAgICAgICJBQiIsICJBQiIsICJBXHUwMzA2IiwgImNoIgorICAgICAgICB9OworICAgICAgICBTdHJpbmdbXSB0ZXN0ZGF0YTIgPSB7CisgICAgICAgICAgICAiXHUwMDYzXHUwMDY3IiwKKyAgICAgICAgICAgICJcdTAwNjNcdTAwNjgiLAorICAgICAgICAgICAgIlx1MDA2M1x1MDA2QyIsCisgICAgICAgIH07CisgICAgICAgIFN0cmluZ1tdIHRlc3RydWxlczMgPSB7CisgICAgICAgICAgICAiJnogPCB4eXogJnh5encgPDwgQiIsCisgICAgICAgICAgICAiJnogPCB4eXogJnh5eiA8PCBCIC8gdyIsCisgICAgICAgICAgICAiJnogPCBjaCAmYWNobSA8PCBCIiwKKyAgICAgICAgICAgICImeiA8IGNoICZhIDw8IEIgLyBjaG0iLAorICAgICAgICAgICAgIiZcdWQ4MDBcdWRjMDB3IDw8IEIiLAorICAgICAgICAgICAgIiZcdWQ4MDBcdWRjMDAgPDwgQiAvIHciLAorICAgICAgICAgICAgIiZhXHVkODAwXHVkYzAwbSA8PCBCIiwKKyAgICAgICAgICAgICImYSA8PCBCIC8gXHVkODAwXHVkYzAwbSIsCisgICAgICAgIH07CisgICAgCisgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yICBjb2xsID0gbnVsbDsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0ZXN0cnVsZXMubGVuZ3RoOyBpICsrKSB7CisgICAgICAgICAgICBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IgaXRlcjEgPSBudWxsOworICAgICAgICAgICAgaW50IGogPSAwOworICAgICAgICAgICAgLy8gbG9nbG4oIlJ1bGUgIiArIHRlc3RydWxlc1tpXSArICIgZm9yIHRlc3RpbmdcbiIpOworICAgICAgICAgICAgU3RyaW5nIHJ1bGUgPSB0ZXN0cnVsZXNbaV07CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGNvbGwgPSBuZXcgUnVsZUJhc2VkQ29sbGF0b3IocnVsZSk7CisgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJDb2xsYXRvciBjcmVhdGlvbiBmYWlsZWQgIiArIHRlc3RydWxlc1tpXSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBpdGVyMSA9IGNvbGwuZ2V0Q29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yKHRlc3RkYXRhW2ldKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkNvbGxhdGlvbiBpdGVyYXRvciBjcmVhdGlvbiBmYWlsZWRcbiIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHdoaWxlIChqIDwgMikgeworICAgICAgICAgICAgICAgIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvciBpdGVyMjsKKyAgICAgICAgICAgICAgICBpbnQgY2U7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgaXRlcjIgPSBjb2xsLmdldENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvcihTdHJpbmcudmFsdWVPZih0ZXN0ZGF0YVtpXS5jaGFyQXQoaikpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB9Y2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJDb2xsYXRpb24gaXRlcmF0b3IgY3JlYXRpb24gZmFpbGVkXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjZSA9IGl0ZXIyLm5leHQoKTsKKyAgICAgICAgICAgICAgICB3aGlsZSAoY2UgIT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUikgeworICAgICAgICAgICAgICAgICAgICBpZiAoaXRlcjEubmV4dCgpICE9IGNlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbigiQ29sbGF0aW9uIGVsZW1lbnRzIGluIGNvbnRyYWN0aW9uIHNwbGl0IGRvZXMgbm90IG1hdGNoXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBjZSA9IGl0ZXIyLm5leHQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaiArKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpdGVyMS5uZXh0KCkgIT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUikgeworICAgICAgICAgICAgICAgIGVycmxuKCJDb2xsYXRpb24gZWxlbWVudHMgbm90IGV4aGF1c3RlZFxuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIFN0cmluZyBydWxlID0gIiYgYSA8IGIgPCBjIDwgY2ggPCBkICYgYyA9IGNoIC8gaCI7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjb2xsID0gbmV3IFJ1bGVCYXNlZENvbGxhdG9yKHJ1bGUpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oImNhbm5vdCBjcmVhdGUgcnVsZWJhc2VkIGNvbGxhdG9yIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChjb2xsLmNvbXBhcmUodGVzdGRhdGEyWzBdLCB0ZXN0ZGF0YTJbMV0pICE9IC0xKSB7CisgICAgICAgICAgICBlcnJsbigiRXhwZWN0ZWQgIiArIHRlc3RkYXRhMlswXSArICIgPCAiICsgdGVzdGRhdGEyWzFdKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoY29sbC5jb21wYXJlKHRlc3RkYXRhMlsxXSwgdGVzdGRhdGEyWzJdKSAhPSAtMSkgeworICAgICAgICAgICAgZXJybG4oIkV4cGVjdGVkICIgKyB0ZXN0ZGF0YTJbMV0gKyAiIDwgIiArIHRlc3RkYXRhMlsyXSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0ZXN0cnVsZXMzLmxlbmd0aDsgaSArPSAyKSB7CisgICAgICAgICAgICBSdWxlQmFzZWRDb2xsYXRvciAgICAgICAgICBjb2xsMSwgY29sbDI7CisgICAgICAgICAgICBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IgaXRlcjEsIGl0ZXIyOworICAgICAgICAgICAgY2hhciAgICAgICAgICAgICAgIGNoID0gMHgwMDQyOworICAgICAgICAgICAgaW50ICAgICAgICAgICAgY2U7CisgICAgICAgICAgICBydWxlID0gdGVzdHJ1bGVzM1tpXTsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgY29sbDEgPSBuZXcgUnVsZUJhc2VkQ29sbGF0b3IocnVsZSk7CisgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGYWlsOiBjYW5ub3QgY3JlYXRlIHJ1bGViYXNlZCBjb2xsYXRvciwgcnVsZToiICsgcnVsZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcnVsZSA9IHRlc3RydWxlczNbaSArIDFdOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBjb2xsMiA9IG5ldyBSdWxlQmFzZWRDb2xsYXRvcihydWxlKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkNvbGxhdG9yIGNyZWF0aW9uIGZhaWxlZCAiICsgdGVzdHJ1bGVzW2ldKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGl0ZXIxID0gY29sbDEuZ2V0Q29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yKFN0cmluZy52YWx1ZU9mKGNoKSk7CisgICAgICAgICAgICAgICAgaXRlcjIgPSBjb2xsMi5nZXRDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IoU3RyaW5nLnZhbHVlT2YoY2gpKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkNvbGxhdGlvbiBpdGVyYXRvciBjcmVhdGlvbiBmYWlsZWRcbiIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNlID0gaXRlcjEubmV4dCgpOworICAgICAgICAgICAgCisgICAgICAgICAgICB3aGlsZSAoY2UgIT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUikgeworICAgICAgICAgICAgICAgIGlmIChjZSAhPSBpdGVyMi5uZXh0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIkNFcyBkb2VzIG5vdCBtYXRjaFxuIik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2UgPSBpdGVyMS5uZXh0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaXRlcjIubmV4dCgpICE9IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5OVUxMT1JERVIpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiQ0VzIG5vdCBleGhhdXN0ZWRcbiIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0RXhwYW5zaW9uKCkgeworICAgICAgICBTdHJpbmdbXSB0ZXN0cnVsZXMgPSB7CisgICAgICAgICAgICAiJkogPDwgSyAvIEIgJiBLIDw8IE0iLAorICAgICAgICAgICAgIiZKIDw8IEsgLyBCIDw8IE0iCisgICAgICAgIH07CisgICAgICAgIFN0cmluZ1tdIHRlc3RkYXRhID0geworICAgICAgICAgICAgIkpBIiwgIk1BIiwgIktBIiwgIktDIiwgIkpDIiwgIk1DIiwKKyAgICAgICAgfTsKKyAgICAgICAgCisgICAgICAgIENvbGxhdG9yICBjb2xsOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRlc3RydWxlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgLy8gbG9nbG4oIlJ1bGUgIiArIHRlc3RydWxlc1tpXSArICIgZm9yIHRlc3RpbmdcbiIpOworICAgICAgICAgICAgU3RyaW5nIHJ1bGUgPSB0ZXN0cnVsZXNbaV07CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGNvbGwgPSBuZXcgUnVsZUJhc2VkQ29sbGF0b3IocnVsZSk7CisgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJDb2xsYXRvciBjcmVhdGlvbiBmYWlsZWQgIiArIHRlc3RydWxlc1tpXSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IDU7IGogKyspIHsKKyAgICAgICAgICAgICAgICBkb1Rlc3QoY29sbCwgdGVzdGRhdGFbal0sIHRlc3RkYXRhW2ogKyAxXSwgLTEpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RDb250cmFjdGlvbkVuZENvbXBhcmUoKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHJ1bGVzID0gIiZiPWNoIjsKKyAgICAgICAgU3RyaW5nIHNyYyA9ICJiZWMiOworICAgICAgICBTdHJpbmcgdGd0ID0gImJlY2giOworICAgICAgICBDb2xsYXRvciBjb2xsID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNvbGwgPSBuZXcgUnVsZUJhc2VkQ29sbGF0b3IocnVsZXMpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkNvbGxhdG9yIGNyZWF0aW9uIGZhaWxlZCAiICsgcnVsZXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGRvVGVzdChjb2xsLCBzcmMsIHRndCwgMSk7CisgICAgfQorICAgIAorICAgICBwdWJsaWMgdm9pZCBUZXN0TG9jYWxlUnVsZUJhc2VkQ29sbGF0b3JzKCkgeworICAgICAgICBpZiAoZ2V0SW5jbHVzaW9uKCkgPCA1KSB7CisgICAgICAgICAgICAvLyBub3Qgc2VyaW91cyBlbm91Z2ggdG8gcnVuIHRoaXMKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBMb2NhbGUgbG9jYWxlW10gPSBDb2xsYXRvci5nZXRBdmFpbGFibGVMb2NhbGVzKCk7CisgICAgICAgIFN0cmluZyBwcmV2cnVsZSA9IG51bGw7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbG9jYWxlLmxlbmd0aDsgaSArKykgeworICAgICAgICAgICAgTG9jYWxlIGwgPSBsb2NhbGVbaV07CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yIGNvbDEgPSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUnVsZUJhc2VkQ29sbGF0b3IpQ29sbGF0b3IuZ2V0SW5zdGFuY2UobCk7CisgICAgICAgICAgICAgICAgU3RyaW5nIHJ1bGUgPSBjb2wxLmdldFJ1bGVzKCk7CisgICAgICAgICAgICAgICAgaWYgKHJ1bGUgIT0gbnVsbCAmJiBydWxlLmxlbmd0aCgpID4gMCAKKyAgICAgICAgICAgICAgICAgICAgJiYgIXJ1bGUuZXF1YWxzKHByZXZydWxlKSkgeworICAgICAgICAgICAgICAgICAgICBSdWxlQmFzZWRDb2xsYXRvciBjb2wyID0gbmV3IFJ1bGVCYXNlZENvbGxhdG9yKHJ1bGUpOworICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbDEuZXF1YWxzKGNvbDIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbigiRXJyb3IgY3JlYXRpbmcgUnVsZUJhc2VkQ29sbGF0b3IgZnJvbSAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsb2NhbGUgcnVsZXMgZm9yICIgKyBsLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHByZXZydWxlID0gcnVsZTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkVycm9yIHJldHJpZXZpbmcgcmVzb3VyY2UgYnVuZGxlIGZvciB0ZXN0aW5nIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdE9wdGltaXplKCkgeworICAgICAgLyogdGhpcyBpcyBub3QgcmVhbGx5IGEgdGVzdCAtIGp1c3QgdHJ5aW5nIG91dCAKKyAgICAgICAqIHdoZXRoZXIgY29weWluZyBvZiBVQ0EgY29udGVudHMgd2lsbCBmYWlsIAorICAgICAgICogQ2Fubm90IHJlYWxseSB0ZXN0LCBzaW5jZSB0aGUgZnVuY3Rpb25hbGl0eSAKKyAgICAgICAqIHJlbWFpbnMgdGhlIHNhbWUuCisgICAgICAgKi8KKyAgICAgICBTdHJpbmcgcnVsZXNbXSA9IHsKKyAgICAgICAgIltvcHRpbWl6ZSBbXFx1QUMwMC1cXHVEN0ZGXV0iCisgICAgICAgfTsKKyAgICAgICBTdHJpbmcgZGF0YVtdW10gPSB7CisgICAgICAgICB7ICJhIiwgImIifQorICAgICAgIH07CisgICAgICAgaW50IGkgPSAwOworICAgIAorICAgICAgZm9yKGkgPSAwOyBpPHJ1bGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGdlbmVyaWNSdWxlc1N0YXJ0ZXIocnVsZXNbaV0sIGRhdGFbaV0pOworICAgICAgfQorICAgIH0gICAgCisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdElkZW50aWNhbENvbXBhcmUoKSAKKyAgICB7ICAgIAorICAgICAgICB0cnkgeworICAgICAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IgY29sbCAKKyAgICAgICAgICAgICAgICAgICAgPSBuZXcgUnVsZUJhc2VkQ29sbGF0b3IoIiYgXHVEODAwXHVEQzAwID0gXHVEODAwXHVEQzAxIik7CisgICAgICAgICAgICBTdHJpbmcgc3RyQSA9ICJBQVx1MDMwMFx1MDMxNlx1RDgwMFx1REMwMSI7CisgICAgICAgICAgICBTdHJpbmcgc3RyQiA9ICJBXHUwMGMwXHUwMzE2XHVEODAwXHVEQzAwIjsKKyAgICAgICAgICAgIGNvbGwuc2V0U3RyZW5ndGgoQ29sbGF0b3IuSURFTlRJQ0FMKTsKKyAgICAgICAgICAgIGRvVGVzdChjb2xsLCBzdHJBLCBzdHJCLCAxKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKGUuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY29sbGF0b3IvQ29sbGF0aW9uTW9ua2V5VGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NvbGxhdG9yL0NvbGxhdGlvbk1vbmtleVRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOWExOTBhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NvbGxhdG9yL0NvbGxhdGlvbk1vbmtleVRlc3QuamF2YQpAQCAtMCwwICsxLDMyMiBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICAgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAkU291cmNlOiAKKyAqICREYXRlOiAKKyAqICRSZXZpc2lvbjogCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworLyoqIAorICogUG9ydCBGcm9tOiAgIElDVTRDIHYyLjEgOiBjb2xsYXRlL0NvbGxhdGlvbk1vbmtleVRlc3QKKyAqIFNvdXJjZSBGaWxlOiAkSUNVNENSb290L3NvdXJjZS90ZXN0L2ludGx0ZXN0L21ua3l0c3QuY3BwCisgKiovCisKK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3QuY29sbGF0b3I7CisKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYudGVzdC4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuKjsKK2ltcG9ydCBqYXZhLnV0aWwuUmFuZG9tOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CisKKy8qKgorICogQ29sbGF0aW9uTW9ua2V5VGVzdCBpcyBhIHRoaXJkIGxldmVsIHRlc3QgY2xhc3MuICBUaGlzIHRlc3RzIHRoZSByYW5kb20gCisgKiBzdWJzdHJpbmdzIG9mIHRoZSBkZWZhdWx0IHRlc3Qgc3RyaW5ncyB0byB2ZXJpZnkgaWYgdGhlIGNvbXBhcmUgYW5kIAorICogc29ydCBrZXkgYWxnb3JpdGhtIHdvcmtzIGNvcnJlY3RseS4gIEZvciBleGFtcGxlLCBhbnkgc3RyaW5nIGlzIGFsd2F5cworICogbGVzcyB0aGFuIHRoZSBzdHJpbmcgaXRzZWxmIGFwcGVuZGVkIHdpdGggYW55IGNoYXJhY3Rlci4KKyAqLworCitwdWJsaWMgY2xhc3MgQ29sbGF0aW9uTW9ua2V5VGVzdCBleHRlbmRzIFRlc3RGbXdrIHsKKyAgICAKKyAgICBwcml2YXRlIFN0cmluZyBzb3VyY2UgPSAiLWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IyZeJEAiOworICAgIAorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBuZXcgQ29sbGF0aW9uTW9ua2V5VGVzdCgpLnJ1bihhcmdzKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdENvbGxhdGlvbktleSgpIHsKKyAgICAgICAgaWYoc291cmNlLmxlbmd0aCgpID09IDApIHsKKyAgICAgICAgICAgIGVycmxuKCJDb2xsYXRpb25Nb25rZXlUZXN0LlRlc3RDb2xsYXRpb25LZXkoKTogc291cmNlIGlzIGVtcHR5IC0gSUNVX0RBVEEgbm90IHNldCBvciBkYXRhIG1pc3Npbmc/Iik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgQ29sbGF0b3IgbXlDb2xsYXRvcjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICBteUNvbGxhdG9yID0gQ29sbGF0b3IuZ2V0SW5zdGFuY2UobmV3IExvY2FsZSgiZW4iLCAiVVMiKSk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiRVJST1I6IGluIGNyZWF0aW9uIG9mIGNvbGxhdG9yIG9mIEVOR0xJU0ggbG9jYWxlIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFJhbmRvbSByYW5kID0gbmV3IFJhbmRvbSgpOworICAgICAgICBpbnQgcyA9IHJhbmQubmV4dEludCgweDdmZmYpICUgc291cmNlLmxlbmd0aCgpOworICAgICAgICBpbnQgdCA9IHJhbmQubmV4dEludCgweDdmZmYpICUgc291cmNlLmxlbmd0aCgpOworICAgICAgICBpbnQgc2xlbiA9IE1hdGguYWJzKHJhbmQubmV4dEludCgweDdmZmYpICUgc291cmNlLmxlbmd0aCgpIC0gc291cmNlLmxlbmd0aCgpKSAlIHNvdXJjZS5sZW5ndGgoKTsKKyAgICAgICAgaW50IHRsZW4gPSBNYXRoLmFicyhyYW5kLm5leHRJbnQoMHg3ZmZmKSAlIHNvdXJjZS5sZW5ndGgoKSAtIHNvdXJjZS5sZW5ndGgoKSkgJSBzb3VyY2UubGVuZ3RoKCk7CisgICAgICAgIFN0cmluZyBzdWJzID0gc291cmNlLnN1YnN0cmluZyhNYXRoLm1pbihzLCBzbGVuKSwgTWF0aC5taW4ocyArIHNsZW4sIHNvdXJjZS5sZW5ndGgoKSkpOworICAgICAgICBTdHJpbmcgc3VidCA9IHNvdXJjZS5zdWJzdHJpbmcoTWF0aC5taW4odCwgdGxlbiksIE1hdGgubWluKHQgKyB0bGVuLCBzb3VyY2UubGVuZ3RoKCkpKTsKKyAgICAKKyAgICAgICAgQ29sbGF0aW9uS2V5IGNvbGxhdGlvbktleTEsIGNvbGxhdGlvbktleTI7CisgICAgCisgICAgICAgIG15Q29sbGF0b3Iuc2V0U3RyZW5ndGgoQ29sbGF0b3IuVEVSVElBUlkpOworICAgICAgICBjb2xsYXRpb25LZXkxID0gbXlDb2xsYXRvci5nZXRDb2xsYXRpb25LZXkoc3Vicyk7CisgICAgICAgIGNvbGxhdGlvbktleTIgPSBteUNvbGxhdG9yLmdldENvbGxhdGlvbktleShzdWJ0KTsKKyAgICAgICAgaW50IHJlc3VsdCA9IGNvbGxhdGlvbktleTEuY29tcGFyZVRvKGNvbGxhdGlvbktleTIpOyAgLy8gVGVydGlhcnkKKyAgICAgICAgaW50IHJldlJlc3VsdCA9IGNvbGxhdGlvbktleTIuY29tcGFyZVRvKGNvbGxhdGlvbktleTEpOyAgLy8gVGVydGlhcnkKKyAgICAgICAgcmVwb3J0KCBzdWJzLCBzdWJ0LCByZXN1bHQsIHJldlJlc3VsdCk7CisgICAgCisgICAgICAgIG15Q29sbGF0b3Iuc2V0U3RyZW5ndGgoQ29sbGF0b3IuU0VDT05EQVJZKTsKKyAgICAgICAgY29sbGF0aW9uS2V5MSA9IG15Q29sbGF0b3IuZ2V0Q29sbGF0aW9uS2V5KHN1YnMpOworICAgICAgICBjb2xsYXRpb25LZXkyID0gbXlDb2xsYXRvci5nZXRDb2xsYXRpb25LZXkoc3VidCk7CisgICAgICAgIHJlc3VsdCA9IGNvbGxhdGlvbktleTEuY29tcGFyZVRvKGNvbGxhdGlvbktleTIpOyAgLy8gU2Vjb25kYXJ5CisgICAgICAgIHJldlJlc3VsdCA9IGNvbGxhdGlvbktleTIuY29tcGFyZVRvKGNvbGxhdGlvbktleTEpOyAgIC8vIFNlY29uZGFyeQorICAgICAgICByZXBvcnQoIHN1YnMsIHN1YnQsIHJlc3VsdCwgcmV2UmVzdWx0KTsKKyAgICAKKyAgICAgICAgbXlDb2xsYXRvci5zZXRTdHJlbmd0aChDb2xsYXRvci5QUklNQVJZKTsKKyAgICAgICAgY29sbGF0aW9uS2V5MSA9IG15Q29sbGF0b3IuZ2V0Q29sbGF0aW9uS2V5KHN1YnMpOworICAgICAgICBjb2xsYXRpb25LZXkyID0gbXlDb2xsYXRvci5nZXRDb2xsYXRpb25LZXkoc3VidCk7CisgICAgICAgIHJlc3VsdCA9IGNvbGxhdGlvbktleTEuY29tcGFyZVRvKGNvbGxhdGlvbktleTIpOyAgLy8gUHJpbWFyeQorICAgICAgICByZXZSZXN1bHQgPSBjb2xsYXRpb25LZXkyLmNvbXBhcmVUbyhjb2xsYXRpb25LZXkxKTsgICAvLyBQcmltYXJ5CisgICAgICAgIHJlcG9ydChzdWJzLCBzdWJ0LCByZXN1bHQsIHJldlJlc3VsdCk7CisgICAgCisgICAgICAgIFN0cmluZyBtc2cgPSAiIjsKKyAgICAgICAgU3RyaW5nIGFkZE9uZSA9IHN1YnMgKyBTdHJpbmcudmFsdWVPZigweEUwMDApOworICAgIAorICAgICAgICBjb2xsYXRpb25LZXkxID0gbXlDb2xsYXRvci5nZXRDb2xsYXRpb25LZXkoc3Vicyk7CisgICAgICAgIGNvbGxhdGlvbktleTIgPSBteUNvbGxhdG9yLmdldENvbGxhdGlvbktleShhZGRPbmUpOworICAgICAgICByZXN1bHQgPSBjb2xsYXRpb25LZXkxLmNvbXBhcmVUbyhjb2xsYXRpb25LZXkyKTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSAtMSkgeworICAgICAgICAgICAgbXNnICs9ICJDb2xsYXRpb25LZXkoIjsKKyAgICAgICAgICAgIG1zZyArPSBzdWJzOworICAgICAgICAgICAgbXNnICs9ICIpIC5MVC4gQ29sbGF0aW9uS2V5KCI7CisgICAgICAgICAgICBtc2cgKz0gYWRkT25lOworICAgICAgICAgICAgbXNnICs9ICIpIEZhaWxlZC4iOworICAgICAgICAgICAgZXJybG4obXNnKTsKKyAgICAgICAgfQorICAgIAorICAgICAgICBtc2cgPSAiIjsKKyAgICAgICAgcmVzdWx0ID0gY29sbGF0aW9uS2V5Mi5jb21wYXJlVG8oY29sbGF0aW9uS2V5MSk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gMSkgeworICAgICAgICAgICAgbXNnICs9ICJDb2xsYXRpb25LZXkoIjsKKyAgICAgICAgICAgIG1zZyArPSBhZGRPbmU7CisgICAgICAgICAgICBtc2cgKz0gIikgLkdULiBDb2xsYXRpb25LZXkoIjsKKyAgICAgICAgICAgIG1zZyArPSBzdWJzOworICAgICAgICAgICAgbXNnICs9ICIpIEZhaWxlZC4iOworICAgICAgICAgICAgZXJybG4obXNnKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvLyBwZXJmb3JtIG1vbmtleSB0ZXN0cyB1c2luZyBDb2xsYXRvci5jb21wYXJlCisgICAgcHVibGljIHZvaWQgVGVzdENvbXBhcmUoKSB7CisgICAgICAgIGlmKHNvdXJjZS5sZW5ndGgoKSA9PSAwKSB7CisgICAgICAgICAgICBlcnJsbigiQ29sbGF0aW9uTW9ua2V5VGVzdC5UZXN0Q29tcGFyZSgpOiBzb3VyY2UgaXMgZW1wdHkgLSBJQ1VfREFUQSBub3Qgc2V0IG9yIGRhdGEgbWlzc2luZz8iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQ29sbGF0b3IgbXlDb2xsYXRvcjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICBteUNvbGxhdG9yID0gQ29sbGF0b3IuZ2V0SW5zdGFuY2UobmV3IExvY2FsZSgiZW4iLCAiVVMiKSk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiRVJST1I6IGluIGNyZWF0aW9uIG9mIGNvbGxhdG9yIG9mIEVOR0xJU0ggbG9jYWxlIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8qIFNlZWQgdGhlIHJhbmRvbS1udW1iZXIgZ2VuZXJhdG9yIHdpdGggY3VycmVudCB0aW1lIHNvIHRoYXQKKyAgICAgICAgICogdGhlIG51bWJlcnMgd2lsbCBiZSBkaWZmZXJlbnQgZXZlcnkgdGltZSB3ZSBydW4uCisgICAgICAgICAqLworICAgICAgICAKKyAgICAgICAgUmFuZG9tIHJhbmQgPSBuZXcgUmFuZG9tKCk7CisgICAgICAgIGludCBzID0gcmFuZC5uZXh0SW50KDB4N2ZmZikgJSBzb3VyY2UubGVuZ3RoKCk7CisgICAgICAgIGludCB0ID0gcmFuZC5uZXh0SW50KDB4N2ZmZikgJSBzb3VyY2UubGVuZ3RoKCk7CisgICAgICAgIGludCBzbGVuID0gTWF0aC5hYnMocmFuZC5uZXh0SW50KDB4N2ZmZikgJSBzb3VyY2UubGVuZ3RoKCkgLSBzb3VyY2UubGVuZ3RoKCkpICUgc291cmNlLmxlbmd0aCgpOworICAgICAgICBpbnQgdGxlbiA9IE1hdGguYWJzKHJhbmQubmV4dEludCgweDdmZmYpICUgc291cmNlLmxlbmd0aCgpIC0gc291cmNlLmxlbmd0aCgpKSAlIHNvdXJjZS5sZW5ndGgoKTsKKyAgICAgICAgU3RyaW5nIHN1YnMgPSBzb3VyY2Uuc3Vic3RyaW5nKE1hdGgubWluKHMsIHNsZW4pLCBNYXRoLm1pbihzICsgc2xlbiwgc291cmNlLmxlbmd0aCgpKSk7CisgICAgICAgIFN0cmluZyBzdWJ0ID0gc291cmNlLnN1YnN0cmluZyhNYXRoLm1pbih0LCB0bGVuKSwgTWF0aC5taW4odCArIHRsZW4sIHNvdXJjZS5sZW5ndGgoKSkpOworICAgIAorICAgICAgICBteUNvbGxhdG9yLnNldFN0cmVuZ3RoKENvbGxhdG9yLlRFUlRJQVJZKTsKKyAgICAgICAgaW50IHJlc3VsdCA9IG15Q29sbGF0b3IuY29tcGFyZShzdWJzLCBzdWJ0KTsgIC8vIFRlcnRpYXJ5CisgICAgICAgIGludCByZXZSZXN1bHQgPSBteUNvbGxhdG9yLmNvbXBhcmUoc3VidCwgc3Vicyk7ICAvLyBUZXJ0aWFyeQorICAgICAgICByZXBvcnQoc3Vicywgc3VidCwgcmVzdWx0LCByZXZSZXN1bHQpOworICAgIAorICAgICAgICBteUNvbGxhdG9yLnNldFN0cmVuZ3RoKENvbGxhdG9yLlNFQ09OREFSWSk7CisgICAgICAgIHJlc3VsdCA9IG15Q29sbGF0b3IuY29tcGFyZShzdWJzLCBzdWJ0KTsgIC8vIFNlY29uZGFyeQorICAgICAgICByZXZSZXN1bHQgPSBteUNvbGxhdG9yLmNvbXBhcmUoc3VidCwgc3Vicyk7ICAvLyBTZWNvbmRhcnkKKyAgICAgICAgcmVwb3J0KHN1YnMsIHN1YnQsIHJlc3VsdCwgcmV2UmVzdWx0KTsKKyAgICAKKyAgICAgICAgbXlDb2xsYXRvci5zZXRTdHJlbmd0aChDb2xsYXRvci5QUklNQVJZKTsKKyAgICAgICAgcmVzdWx0ID0gbXlDb2xsYXRvci5jb21wYXJlKHN1YnMsIHN1YnQpOyAgLy8gUHJpbWFyeQorICAgICAgICByZXZSZXN1bHQgPSBteUNvbGxhdG9yLmNvbXBhcmUoc3VidCwgc3Vicyk7ICAvLyBQcmltYXJ5CisgICAgICAgIHJlcG9ydChzdWJzLCBzdWJ0LCByZXN1bHQsIHJldlJlc3VsdCk7CisgICAgCisgICAgICAgIFN0cmluZyBtc2cgPSAiIjsKKyAgICAgICAgU3RyaW5nIGFkZE9uZSA9IHN1YnMgKyBTdHJpbmcudmFsdWVPZigweEUwMDApOworICAgIAorICAgICAgICByZXN1bHQgPSBteUNvbGxhdG9yLmNvbXBhcmUoc3VicywgYWRkT25lKTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSAtMSkgeworICAgICAgICAgICAgbXNnICs9ICJUZXN0IDogIjsKKyAgICAgICAgICAgIG1zZyArPSBzdWJzOworICAgICAgICAgICAgbXNnICs9ICIgLkxULiAiOworICAgICAgICAgICAgbXNnICs9IGFkZE9uZTsKKyAgICAgICAgICAgIG1zZyArPSAiIEZhaWxlZC4iOworICAgICAgICAgICAgZXJybG4obXNnKTsKKyAgICAgICAgfQorICAgIAorICAgICAgICBtc2cgPSAiIjsKKyAgICAgICAgcmVzdWx0ID0gbXlDb2xsYXRvci5jb21wYXJlKGFkZE9uZSwgc3Vicyk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gMSkgeworICAgICAgICAgICAgbXNnICs9ICJUZXN0IDogIjsKKyAgICAgICAgICAgIG1zZyArPSBhZGRPbmU7CisgICAgICAgICAgICBtc2cgKz0gIiAuR1QuICI7CisgICAgICAgICAgICBtc2cgKz0gc3ViczsKKyAgICAgICAgICAgIG1zZyArPSAiIEZhaWxlZC4iOworICAgICAgICAgICAgZXJybG4obXNnKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB2b2lkIHJlcG9ydChTdHJpbmcgcywgU3RyaW5nIHQsIGludCByZXN1bHQsIGludCByZXZSZXN1bHQpIHsKKyAgICAgICAgaWYgKHJldlJlc3VsdCAhPSAtcmVzdWx0KSB7CisgICAgICAgICAgICBTdHJpbmcgbXNnID0gIiI7CisgICAgICAgICAgICBtc2cgKz0gczsgCisgICAgICAgICAgICBtc2cgKz0gIiBhbmQgIjsKKyAgICAgICAgICAgIG1zZyArPSB0OworICAgICAgICAgICAgbXNnICs9ICIgcm91bmQgdHJpcCBjb21wYXJpc29uIGZhaWxlZCI7CisgICAgICAgICAgICBtc2cgKz0gIiAocmVzdWx0ICIgKyByZXN1bHQgKyAiLCByZXZlcnNlIFJlc3VsdCAiICsgcmV2UmVzdWx0ICsgIikiOyAKKyAgICAgICAgICAgIGVycmxuKG1zZyk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdFJ1bGVzKCkgeworICAgICAgICBTdHJpbmcgdGVzdFNvdXJjZUNhc2VzW10gPSB7CisgICAgICAgICAgICAiXHUwMDYxXHUwMDYyXHUwMDdhIiwgCisgICAgICAgICAgICAiXHUwMDYxXHUwMDYyXHUwMDdhIiwgCisgICAgICAgIH07CisgICAgCisgICAgICAgIFN0cmluZyB0ZXN0VGFyZ2V0Q2FzZXNbXSA9IHsKKyAgICAgICAgICAgICJcdTAwNjFcdTAwNjJcdTAwZTQiLAorICAgICAgICAgICAgIlx1MDA2MVx1MDA2Mlx1MDA2MVx1MDMwOCIsCisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICBpbnQgaT0wOworICAgICAgICBsb2dsbigiRGVtbyBUZXN0IDEgOiBDcmVhdGUgYSBuZXcgdGFibGUgY29sbGF0aW9uIHdpdGggcnVsZXMgXCImIHogPCAweDAwZTRcIiIpOworICAgICAgICBDb2xsYXRvciBjb2wgPSBDb2xsYXRvci5nZXRJbnN0YW5jZShuZXcgTG9jYWxlKCJlbiIsICJVUyIpKTsKKyAgICAgICAgU3RyaW5nIGJhc2VSdWxlcyA9ICgoUnVsZUJhc2VkQ29sbGF0b3IpY29sKS5nZXRSdWxlcygpOworICAgICAgICBTdHJpbmcgbmV3UnVsZXMgPSAiICYgeiA8ICI7CisgICAgICAgIG5ld1J1bGVzID0gYmFzZVJ1bGVzICsgbmV3UnVsZXMgKyBTdHJpbmcudmFsdWVPZigweDAwZTQpOworICAgICAgICBSdWxlQmFzZWRDb2xsYXRvciBteUNvbGxhdGlvbiA9IG51bGw7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBteUNvbGxhdGlvbiA9IG5ldyBSdWxlQmFzZWRDb2xsYXRvcihuZXdSdWxlcyk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbiggIkRlbW8gVGVzdCAxIFRhYmxlIENvbGxhdGlvbiBvYmplY3QgY3JlYXRpb24gZmFpbGVkLiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmb3IoaT0wOyBpPDI7IGkrKyl7CisgICAgICAgICAgICBkb1Rlc3QobXlDb2xsYXRpb24sIHRlc3RTb3VyY2VDYXNlc1tpXSwgdGVzdFRhcmdldENhc2VzW2ldLCAtMSk7CisgICAgICAgIH0KKyAgICAgICAgbG9nbG4oIkRlbW8gVGVzdCAyIDogQ3JlYXRlIGEgbmV3IHRhYmxlIGNvbGxhdGlvbiB3aXRoIHJ1bGVzIFwiJiB6IDwgYSAweDAzMDhcIiIpOworICAgICAgICBuZXdSdWxlcyA9ICIiOworICAgICAgICBuZXdSdWxlcyA9IGJhc2VSdWxlcyArICIgJiB6IDwgYSIgKyBTdHJpbmcudmFsdWVPZigweDAzMDgpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgbXlDb2xsYXRpb24gPSBuZXcgUnVsZUJhc2VkQ29sbGF0b3IobmV3UnVsZXMpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oICJEZW1vIFRlc3QgMSBUYWJsZSBDb2xsYXRpb24gb2JqZWN0IGNyZWF0aW9uIGZhaWxlZC4iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBmb3IoaT0wOyBpPDI7IGkrKyl7CisgICAgICAgICAgICBkb1Rlc3QobXlDb2xsYXRpb24sIHRlc3RTb3VyY2VDYXNlc1tpXSwgdGVzdFRhcmdldENhc2VzW2ldLCAtMSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgdm9pZCBkb1Rlc3QoUnVsZUJhc2VkQ29sbGF0b3IgbXlDb2xsYXRpb24sIFN0cmluZyBteXNvdXJjZSwgU3RyaW5nIHRhcmdldCwgaW50IHJlc3VsdCkgeworICAgICAgICBpbnQgY29tcGFyZVJlc3VsdCA9IG15Q29sbGF0aW9uLmNvbXBhcmUoc291cmNlLCB0YXJnZXQpOworICAgICAgICBDb2xsYXRpb25LZXkgc29ydEtleTEsIHNvcnRLZXkyOworICAgICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHNvcnRLZXkxID0gbXlDb2xsYXRpb24uZ2V0Q29sbGF0aW9uS2V5KHNvdXJjZSk7CisgICAgICAgICAgICBzb3J0S2V5MiA9IG15Q29sbGF0aW9uLmdldENvbGxhdGlvbktleSh0YXJnZXQpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIlNvcnRLZXkgZ2VuZXJhdGlvbiBGYWlsZWQuXG4iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpbnQga2V5UmVzdWx0ID0gc29ydEtleTEuY29tcGFyZVRvKHNvcnRLZXkyKTsKKyAgICAgICAgcmVwb3J0Q1Jlc3VsdCggbXlzb3VyY2UsIHRhcmdldCwgc29ydEtleTEsIHNvcnRLZXkyLCBjb21wYXJlUmVzdWx0LCBrZXlSZXN1bHQsIGNvbXBhcmVSZXN1bHQsIHJlc3VsdCApOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCByZXBvcnRDUmVzdWx0KFN0cmluZyBzb3VyY2UsIFN0cmluZyB0YXJnZXQsIENvbGxhdGlvbktleSBzb3VyY2VLZXksIENvbGxhdGlvbktleSB0YXJnZXRLZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY29tcGFyZVJlc3VsdCwgaW50IGtleVJlc3VsdCwgaW50IGluY1Jlc3VsdCwgaW50IGV4cGVjdGVkUmVzdWx0ICkgeworICAgICAgICBpZiAoZXhwZWN0ZWRSZXN1bHQgPCAtMSB8fCBleHBlY3RlZFJlc3VsdCA+IDEpIHsKKyAgICAgICAgICAgIGVycmxuKCIqKioqKiBpbnZhbGlkIGNhbGwgdG8gcmVwb3J0Q1Jlc3VsdCAqKioqIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYm9vbGVhbiBvazEgPSAoY29tcGFyZVJlc3VsdCA9PSBleHBlY3RlZFJlc3VsdCk7CisgICAgICAgIGJvb2xlYW4gb2syID0gKGtleVJlc3VsdCA9PSBleHBlY3RlZFJlc3VsdCk7CisgICAgICAgIGJvb2xlYW4gb2szID0gKGluY1Jlc3VsdCA9PSBleHBlY3RlZFJlc3VsdCk7CisgICAgICAgIGlmIChvazEgJiYgb2syICYmIG9rMyAmJiAhaXNWZXJib3NlKCkpIHsKKyAgICAgICAgICAgIHJldHVybjsgICAgCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBTdHJpbmcgbXNnMSA9IG9rMT8gIk9rOiBjb21wYXJlKFwiIiA6ICJGQUlMOiBjb21wYXJlKFwiIjsKKyAgICAgICAgICAgIFN0cmluZyBtc2cyID0gIlwiLCBcIiI7CisgICAgICAgICAgICBTdHJpbmcgbXNnMyA9ICJcIikgcmV0dXJuZWQgIjsKKyAgICAgICAgICAgIFN0cmluZyBtc2c0ID0gIjsgZXhwZWN0ZWQgIjsKKyAgICAgICAgICAgIFN0cmluZyBzRXhwZWN0ID0gbmV3IFN0cmluZygiIik7CisgICAgICAgICAgICBTdHJpbmcgc1Jlc3VsdCA9IG5ldyBTdHJpbmcoIiIpOworICAgICAgICAgICAgc1Jlc3VsdCA9IGFwcGVuZENvbXBhcmVSZXN1bHQoY29tcGFyZVJlc3VsdCwgc1Jlc3VsdCk7CisgICAgICAgICAgICBzRXhwZWN0ID0gYXBwZW5kQ29tcGFyZVJlc3VsdChleHBlY3RlZFJlc3VsdCwgc0V4cGVjdCk7CisgICAgICAgICAgICBpZiAob2sxKSB7CisgICAgICAgICAgICAgICAgbG9nbG4obXNnMSArIHNvdXJjZSArIG1zZzIgKyB0YXJnZXQgKyBtc2czICsgc1Jlc3VsdCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGVycmxuKG1zZzEgKyBzb3VyY2UgKyBtc2cyICsgdGFyZ2V0ICsgbXNnMyArIHNSZXN1bHQgKyBtc2c0ICsgc0V4cGVjdCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtc2cxID0gb2syID8gIk9rOiBrZXkoXCIiIDogIkZBSUw6IGtleShcIiI7CisgICAgICAgICAgICBtc2cyID0gIlwiKS5jb21wYXJlVG8oa2V5KFwiIjsKKyAgICAgICAgICAgIG1zZzMgPSAiXCIpKSByZXR1cm5lZCAiOworICAgICAgICAgICAgc1Jlc3VsdCA9IGFwcGVuZENvbXBhcmVSZXN1bHQoa2V5UmVzdWx0LCBzUmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChvazIpIHsKKyAgICAgICAgICAgICAgICBsb2dsbihtc2cxICsgc291cmNlICsgbXNnMiArIHRhcmdldCArIG1zZzMgKyBzUmVzdWx0KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZXJybG4obXNnMSArIHNvdXJjZSArIG1zZzIgKyB0YXJnZXQgKyBtc2czICsgc1Jlc3VsdCArIG1zZzQgKyBzRXhwZWN0KTsKKyAgICAgICAgICAgICAgICBtc2cxID0gIiAgIjsKKyAgICAgICAgICAgICAgICBtc2cyID0gIiB2cy4gIjsKKyAgICAgICAgICAgICAgICBlcnJsbihtc2cxICsgcHJldHRpZnkoc291cmNlS2V5KSArIG1zZzIgKyBwcmV0dGlmeSh0YXJnZXRLZXkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1zZzEgPSBvazMgPyAiT2s6IGluY0NvbXBhcmUoXCIiIDogIkZBSUw6IGluY0NvbXBhcmUoXCIiOworICAgICAgICAgICAgbXNnMiA9ICJcIiwgXCIiOworICAgICAgICAgICAgbXNnMyA9ICJcIikgcmV0dXJuZWQgIjsKKyAgICAgICAgICAgIHNSZXN1bHQgPSBhcHBlbmRDb21wYXJlUmVzdWx0KGluY1Jlc3VsdCwgc1Jlc3VsdCk7CisgICAgICAgICAgICBpZiAob2szKSB7CisgICAgICAgICAgICAgICAgbG9nbG4obXNnMSArIHNvdXJjZSArIG1zZzIgKyB0YXJnZXQgKyBtc2czICsgc1Jlc3VsdCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGVycmxuKG1zZzEgKyBzb3VyY2UgKyBtc2cyICsgdGFyZ2V0ICsgbXNnMyArIHNSZXN1bHQgKyBtc2c0ICsgc0V4cGVjdCk7CisgICAgICAgICAgICB9ICAgICAgICAgICAgICAgIAorICAgICAgICB9CisgICAgfQorICAgIAorICAgIFN0cmluZyBhcHBlbmRDb21wYXJlUmVzdWx0KGludCByZXN1bHQsIFN0cmluZyB0YXJnZXQpIHsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSAtMSkgeyAgLy9MRVNTCisgICAgICAgICAgICB0YXJnZXQgKz0gIkxFU1MiOworICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSAwKSB7ICAvL0VRVUFMCisgICAgICAgICAgICB0YXJnZXQgKz0gIkVRVUFMIjsKKyAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gMSkgeyAgLy9HUkVBVEVSCisgICAgICAgICAgICB0YXJnZXQgKz0gIkdSRUFURVIiOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgU3RyaW5nIGh1aCA9ICI/IjsKKyAgICAgICAgICAgIHRhcmdldCArPSBodWggKyByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRhcmdldDsKKyAgICB9CisgICAgCisgICAgU3RyaW5nIHByZXR0aWZ5KENvbGxhdGlvbktleSBzb3VyY2VLZXkpIHsKKyAgICAgICAgaW50IGk7CisgICAgICAgIGJ5dGVbXSBieXRlcz0gc291cmNlS2V5LnRvQnl0ZUFycmF5KCk7CisgICAgICAgIFN0cmluZyB0YXJnZXQgPSAiWyI7CisgICAgCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgdGFyZ2V0ICs9IEludGVnZXIudG9IZXhTdHJpbmcoYnl0ZXNbaV0pOworICAgICAgICAgICAgdGFyZ2V0ICs9ICIgIjsKKyAgICAgICAgfQorICAgICAgICB0YXJnZXQgKz0gIl0iOworICAgICAgICByZXR1cm4gdGFyZ2V0OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY29sbGF0b3IvQ29sbGF0aW9uUmVncmVzc2lvblRlc3QuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9jb2xsYXRvci9Db2xsYXRpb25SZWdyZXNzaW9uVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5MjJjMmQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY29sbGF0b3IvQ29sbGF0aW9uUmVncmVzc2lvblRlc3QuamF2YQpAQCAtMCwwICsxLDg5NiBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICAgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAkU291cmNlOiAKKyAqICREYXRlOiAKKyAqICRSZXZpc2lvbjogCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworLyoqIAorICogUG9ydCBGcm9tOiAgIElDVTRDIHYyLjEgOiBjb2xsYXRlL0NvbGxhdGlvblJlZ3Jlc3Npb25UZXN0CisgKiBTb3VyY2UgRmlsZTogJElDVTRDUm9vdC9zb3VyY2UvdGVzdC9pbnRsdGVzdC9yZWdjb2xsLmNwcAorICoqLworIAorcGFja2FnZSBjb20uaWJtLmljdS5kZXYudGVzdC5jb2xsYXRvcjsKKworaW1wb3J0IGNvbS5pYm0uaWN1LmRldi50ZXN0Lio7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC4qOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CisKK3B1YmxpYyBjbGFzcyBDb2xsYXRpb25SZWdyZXNzaW9uVGVzdCBleHRlbmRzIFRlc3RGbXdrIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9ueworICAgICAgICBuZXcgQ29sbGF0aW9uUmVncmVzc2lvblRlc3QoKS5ydW4oYXJncyk7CisgICAgfQorICAgIAorICAgIC8vIEBidWcgNDA0ODQ0NgorICAgIC8vCisgICAgLy8gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLnJlc2V0KCkgZG9lc24ndCB3b3JrCisgICAgLy8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDA0ODQ0NigpIHsKKyAgICAgICAgZmluYWwgU3RyaW5nIHRlc3QxID0gIlhGSUxFIFdoYXQgc3Vic2V0IG9mIGFsbCBwb3NzaWJsZSB0ZXN0IGNhc2VzIGhhcyB0aGUgaGlnaGVzdCBwcm9iYWJpbGl0eSBvZiBkZXRlY3RpbmcgdGhlIG1vc3QgZXJyb3JzPyI7CisgICAgICAgIC8vZmluYWwgU3RyaW5nIHRlc3QyID0gIlhmX2lsZSBXaGF0IHN1YnNldCBvZiBhbGwgcG9zc2libGUgdGVzdCBjYXNlcyBoYXMgdGhlIGxvd2VzdCBwcm9iYWJpbGl0eSBvZiBkZXRlY3RpbmcgdGhlIGxlYXN0IGVycm9ycz8iOworICAgICAgICBSdWxlQmFzZWRDb2xsYXRvciBlbl91cyA9IChSdWxlQmFzZWRDb2xsYXRvcikgQ29sbGF0b3IuZ2V0SW5zdGFuY2UoTG9jYWxlLlVTKTsKKyAgICAgICAgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yIGkxID0gZW5fdXMuZ2V0Q29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yKHRlc3QxKTsKKyAgICAgICAgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yIGkyID0gZW5fdXMuZ2V0Q29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yKHRlc3QxKTsKKyAgICAgICAgCisgICAgICAgIGlmIChpMSA9PSBudWxsIHx8IGkyID09IG51bGwpIHsKKyAgICAgICAgICAgIGVycmxuKCJDb3VsZCBub3QgY3JlYXRlIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvcidzIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgd2hpbGUgKGkxLm5leHQoKSAhPSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuTlVMTE9SREVSKSB7CisgICAgICAgICAgICAvLworICAgICAgICB9CisgICAgCisgICAgICAgIGkxLnJlc2V0KCk7CisgICAgICAgIGFzc2VydEVxdWFsKGkxLCBpMik7CisgICAgfQorICAgIAorICAgIHZvaWQgYXNzZXJ0RXF1YWwoQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yIGkxLCBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IgaTIpIHsKKyAgICAgICAgaW50IGMxLCBjMiwgY291bnQgPSAwOworICAgIAorICAgICAgICBkbyB7CisgICAgICAgICAgICBjMSA9IGkxLm5leHQoKTsKKyAgICAgICAgICAgIGMyID0gaTIubmV4dCgpOworICAgIAorICAgICAgICAgICAgaWYgKGMxICE9IGMyKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIG1zZyA9ICIiOworICAgICAgICAgICAgICAgIFN0cmluZyBtc2cxID0gIiAgICAiOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG1zZyArPSBtc2cxICsgY291bnQ7CisgICAgICAgICAgICAgICAgbXNnICs9ICI6IHN0cmVuZ3RoKDB4IiArIEludGVnZXIudG9IZXhTdHJpbmcoYzEpOworICAgICAgICAgICAgICAgIG1zZyArPSAiKSAhPSBzdHJlbmd0aCgweCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKGMyKTsKKyAgICAgICAgICAgICAgICBtc2cgKz0gIikiOworICAgICAgICAgICAgICAgIGVycmxuKG1zZyk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb3VudCArPSAxOworICAgICAgICB9IHdoaWxlIChjMSAhPSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuTlVMTE9SREVSKTsKKyAgICB9CisgICAgCisgICAgLy8gQGJ1ZyA0MDUxODY2CisgICAgLy8KKyAgICAvLyBDb2xsYXRvciAtPiBydWxlcyAtPiBDb2xsYXRvciByb3VuZC10cmlwIGJyb2tlbiBmb3IgZXhwYW5kaW5nIGNoYXJhY3RlcnMKKyAgICAvLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MDUxODY2KCkgeworICAgICAgIFN0cmluZyBydWxlcyA9ICI8IG8gJiBvZSAsb1x1MzA4MCYgb2UgLFx1MTUzMCAsTyYgT0UgLE9cdTMwODAmIE9FICxcdTE1MjA8IHAgLFAiOworCisgICAgICAgIC8vIEJ1aWxkIGEgY29sbGF0b3IgY29udGFpbmluZyBleHBhbmRpbmcgY2hhcmFjdGVycworICAgICAgICBSdWxlQmFzZWRDb2xsYXRvciBjMSA9IG51bGw7CisgICAgICAgIAorICAgICAgICB0cnkgeworICAgICAgICAgICAgYzEgPSBuZXcgUnVsZUJhc2VkQ29sbGF0b3IocnVsZXMpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkZhaWwgdG8gY3JlYXRlIFJ1bGVCYXNlZENvbGxhdG9yIHdpdGggcnVsZXM6IiArIHJ1bGVzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIAorICAgICAgICAvLyBCdWlsZCBhbm90aGVyIHVzaW5nIHRoZSBydWxlcyBmcm9tICB0aGUgZmlyc3QKKyAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IgYzIgPSBudWxsOworICAgICAgICB0cnkgeworICAgICAgICAgICAgYzIgPSBuZXcgUnVsZUJhc2VkQ29sbGF0b3IoYzEuZ2V0UnVsZXMoKSk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiRmFpbCB0byBjcmVhdGUgUnVsZUJhc2VkQ29sbGF0b3Igd2l0aCBydWxlczoiICsgcnVsZXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgCisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGV5J3JlIHRoZSBzYW1lCisgICAgICAgIGlmICghKGMxLmdldFJ1bGVzKCkuZXF1YWxzKGMyLmdldFJ1bGVzKCkpKSkKKyAgICAgICAgeworICAgICAgICAgICAgZXJybG4oIlJ1bGVzIGFyZSBub3QgZXF1YWwiKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvLyBAYnVnIDQwNTM2MzYKKyAgICAvLworICAgIC8vIENvbGxhdG9yIHRoaW5rcyAiYmxhY2stYmlyZCIgPT0gImJsYWNrIgorICAgIC8vCisgICAgcHVibGljIHZvaWQgVGVzdDQwNTM2MzYoKSB7CisgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yIGVuX3VzID0gKFJ1bGVCYXNlZENvbGxhdG9yKSBDb2xsYXRvci5nZXRJbnN0YW5jZShMb2NhbGUuVVMpOworICAgICAgICBpZiAoZW5fdXMuZXF1YWxzKCJibGFja19iaXJkIiwgImJsYWNrIikpIHsKKyAgICAgICAgICAgIGVycmxuKCJibGFjay1iaXJkID09IGJsYWNrIik7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLy8gQGJ1ZyA0MDU0MjM4CisgICAgLy8KKyAgICAvLyBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3Igd2lsbCBub3Qgd29yayBjb3JyZWN0bHkgaWYgdGhlIGFzc29jaWF0ZWQKKyAgICAvLyBDb2xsYXRvciBvYmplY3QncyBtb2RlIGlzIGNoYW5nZWQKKyAgICAvLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MDU0MjM4KC8qIGNoYXIqIHBhciAqLykgeworICAgICAgICBmaW5hbCBjaGFyW10gY2hhcnMzID0gezB4NjEsIDB4MDBGQywgMHg2MiwgMHg2NSwgMHg2MywgMHg2YiwgMHgyMCwgMHg0NywgMHg3MiwgMHgwMEY2LCAweDAwREYsIDB4NjUsIDB4MjAsIDB4NGMsIDB4MDBGQywgMHg2MiwgMHg2MywgMHg2YiwgMH07CisgICAgICAgIGZpbmFsIFN0cmluZyB0ZXN0MyA9IG5ldyBTdHJpbmcoY2hhcnMzKTsKKyAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IgYyA9IChSdWxlQmFzZWRDb2xsYXRvcikgQ29sbGF0b3IuZ2V0SW5zdGFuY2UoTG9jYWxlLlVTKTsKKyAgICAKKyAgICAgICAgLy8gTk9URTogVGhlIEphdmEgY29kZSB1c2VzIGVuX3VzIHRvIGNyZWF0ZSB0aGUgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9ycworICAgICAgICAvLyBidXQgSSdtIHByZXR0eSBzdXJlIHRoYXQncyB3cm9uZywgc28gSSd2ZSBjaGFuZ2VkIHRoaXMgdG8gdXNlIGMuCisgICAgICAgIGMuc2V0RGVjb21wb3NpdGlvbihDb2xsYXRvci5OT19ERUNPTVBPU0lUSU9OKTsKKyAgICAgICAgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yIGkxID0gYy5nZXRDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IodGVzdDMpOworICAgICAgICBsb2dsbigiT2Zmc2V0OiIgKyBpMS5nZXRPZmZzZXQoKSk7CisgICAgfQorICAgIAorICAgIC8vIEBidWcgNDA1NDczNAorICAgIC8vCisgICAgLy8gQ29sbGF0b3I6OklERU5USUNBTCBkb2N1bWVudGVkIGJ1dCBub3QgaW1wbGVtZW50ZWQKKyAgICAvLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MDU0NzM0KC8qIGNoYXIqIHBhciAqLykgeworICAgICAgICAKKyAgICAgICAgICAgIC8vSGVyZSdzIHRoZSBvcmlnaW5hbCBKYXZhOgorICAgIAorICAgICAgICAgICAgU3RyaW5nW10gZGVjb21wID0geworICAgICAgICAgICAgICAgICJcdTAwMDEiLCAgICI8IiwgICAgIlx1MDAwMiIsCisgICAgICAgICAgICAgICAgIlx1MDAwMSIsICAgIj0iLCAgICAiXHUwMDAxIiwKKyAgICAgICAgICAgICAgICAiQVx1MDAwMSIsICAiPiIsICAgICJ+XHUwMDAyIiwgICAgICAvLyBFbnN1cmUgQSBhbmQgfiBhcmUgbm90IGNvbXBhcmVkIGJpdHdpc2UKKyAgICAgICAgICAgICAgICAiXHUwMEMwIiwgICAiPSIsICAgICJBXHUwMzAwIiwgICAgICAvLyBEZWNvbXAgc2hvdWxkIG1ha2UgdGhlc2UgZXF1YWwKKyAgICAgICAgICAgIH07CisgICAgCisgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yIGMgPSAoUnVsZUJhc2VkQ29sbGF0b3IpIENvbGxhdG9yLmdldEluc3RhbmNlKExvY2FsZS5VUyk7CisgICAgICAgIGMuc2V0U3RyZW5ndGgoQ29sbGF0b3IuSURFTlRJQ0FMKTsKKyAgICAgICAgYy5zZXREZWNvbXBvc2l0aW9uKENvbGxhdG9yLkNBTk9OSUNBTF9ERUNPTVBPU0lUSU9OKTsKKyAgICAgICAgY29tcGFyZUFycmF5KGMsIGRlY29tcCk7CisgICAgfQorICAgIAorICAgIHZvaWQgY29tcGFyZUFycmF5KENvbGxhdG9yIGMsIFN0cmluZ1tdIHRlc3RzKSB7CisgICAgICAgIAorICAgICAgICBpbnQgZXhwZWN0ZWRSZXN1bHQgPSAwOworICAgIAorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRlc3RzLmxlbmd0aDsgaSArPSAzKSB7CisgICAgICAgICAgICBTdHJpbmcgc291cmNlID0gdGVzdHNbaV07CisgICAgICAgICAgICBTdHJpbmcgY29tcGFyaXNvbiA9IHRlc3RzW2kgKyAxXTsKKyAgICAgICAgICAgIFN0cmluZyB0YXJnZXQgPSB0ZXN0c1tpICsgMl07CisgICAgCisgICAgICAgICAgICBpZiAoY29tcGFyaXNvbi5lcXVhbHMoIjwiKSkgeworICAgICAgICAgICAgICAgIGV4cGVjdGVkUmVzdWx0ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbXBhcmlzb24uZXF1YWxzKCI+IikpIHsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFJlc3VsdCA9IDE7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbXBhcmlzb24uZXF1YWxzKCI9IikpIHsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFJlc3VsdCA9IDA7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGVycmxuKCJCb2d1cyBjb21wYXJpc29uIHN0cmluZyBcIiIgKyBjb21wYXJpc29uICsgIlwiIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGludCBjb21wYXJlUmVzdWx0ID0gMDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgbG9nbG4oImkgPSAiICsgaSk7CisgICAgICAgICAgICBsb2dsbihzb3VyY2UpOworICAgICAgICAgICAgbG9nbG4odGFyZ2V0KTsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgY29tcGFyZVJlc3VsdCA9IGMuY29tcGFyZShzb3VyY2UsIHRhcmdldCk7CisgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIGVycmxuKGUudG9TdHJpbmcoKSk7CisgICAgICAgICAgICB9CisgICAgCisgICAgICAgICAgICBDb2xsYXRpb25LZXkgc291cmNlS2V5ID0gbnVsbCwgdGFyZ2V0S2V5ID0gbnVsbDsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgc291cmNlS2V5ID0gYy5nZXRDb2xsYXRpb25LZXkoc291cmNlKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkNvdWxkbid0IGdldCBjb2xsYXRpb25LZXkgZm9yIHNvdXJjZSIpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICB0YXJnZXRLZXkgPSBjLmdldENvbGxhdGlvbktleSh0YXJnZXQpOworICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiQ291bGRuJ3QgZ2V0IGNvbGxhdGlvbktleSBmb3IgdGFyZ2V0Iik7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgCisgICAgICAgICAgICBpbnQga2V5UmVzdWx0ID0gc291cmNlS2V5LmNvbXBhcmVUbyh0YXJnZXRLZXkpOworICAgICAgICAgICAgcmVwb3J0Q1Jlc3VsdCggc291cmNlLCB0YXJnZXQsIHNvdXJjZUtleSwgdGFyZ2V0S2V5LCBjb21wYXJlUmVzdWx0LCBrZXlSZXN1bHQsIGNvbXBhcmVSZXN1bHQsIGV4cGVjdGVkUmVzdWx0ICk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgdm9pZCByZXBvcnRDUmVzdWx0KCBTdHJpbmcgc291cmNlLCBTdHJpbmcgdGFyZ2V0LCBDb2xsYXRpb25LZXkgc291cmNlS2V5LCBDb2xsYXRpb25LZXkgdGFyZ2V0S2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY29tcGFyZVJlc3VsdCwgaW50IGtleVJlc3VsdCwgaW50IGluY1Jlc3VsdCwgaW50IGV4cGVjdGVkUmVzdWx0ICl7CisgICAgICAgIGlmIChleHBlY3RlZFJlc3VsdCA8IC0xIHx8IGV4cGVjdGVkUmVzdWx0ID4gMSkKKyAgICAgICAgeworICAgICAgICAgICAgZXJybG4oIioqKioqIGludmFsaWQgY2FsbCB0byByZXBvcnRDUmVzdWx0ICoqKioiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2xlYW4gb2sxID0gKGNvbXBhcmVSZXN1bHQgPT0gZXhwZWN0ZWRSZXN1bHQpOworICAgICAgICBib29sZWFuIG9rMiA9IChrZXlSZXN1bHQgPT0gZXhwZWN0ZWRSZXN1bHQpOworICAgICAgICBib29sZWFuIG9rMyA9IChpbmNSZXN1bHQgPT0gZXhwZWN0ZWRSZXN1bHQpOworCisgICAgICAgIGlmIChvazEgJiYgb2syICYmIG9rMyAmJiAhaXNWZXJib3NlKCkpeworICAgICAgICAgICAgcmV0dXJuOyAgICAKKyAgICAgICAgfWVsc2V7CisgICAgICAgICAgICBTdHJpbmcgbXNnMSA9IG9rMT8gIk9rOiBjb21wYXJlKFwiIiA6ICJGQUlMOiBjb21wYXJlKFwiIjsKKyAgICAgICAgICAgIFN0cmluZyBtc2cyID0gIlwiLCBcIiI7CisgICAgICAgICAgICBTdHJpbmcgbXNnMyA9ICJcIikgcmV0dXJuZWQgIjsKKyAgICAgICAgICAgIFN0cmluZyBtc2c0ID0gIjsgZXhwZWN0ZWQgIjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgU3RyaW5nIHNFeHBlY3QgPSBuZXcgU3RyaW5nKCIiKTsKKyAgICAgICAgICAgIFN0cmluZyBzUmVzdWx0ID0gbmV3IFN0cmluZygiIik7CisgICAgICAgICAgICBzUmVzdWx0ID0gYXBwZW5kQ29tcGFyZVJlc3VsdChjb21wYXJlUmVzdWx0LCBzUmVzdWx0KTsKKyAgICAgICAgICAgIHNFeHBlY3QgPSBhcHBlbmRDb21wYXJlUmVzdWx0KGV4cGVjdGVkUmVzdWx0LCBzRXhwZWN0KTsKKyAgICAgICAgICAgIGlmIChvazEpIHsKKyAgICAgICAgICAgICAgICBsb2dsbihtc2cxICsgc291cmNlICsgbXNnMiArIHRhcmdldCArIG1zZzMgKyBzUmVzdWx0KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZXJybG4obXNnMSArIHNvdXJjZSArIG1zZzIgKyB0YXJnZXQgKyBtc2czICsgc1Jlc3VsdCArIG1zZzQgKyBzRXhwZWN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgbXNnMSA9IG9rMiA/ICJPazoga2V5KFwiIiA6ICJGQUlMOiBrZXkoXCIiOworICAgICAgICAgICAgbXNnMiA9ICJcIikuY29tcGFyZVRvKGtleShcIiI7CisgICAgICAgICAgICBtc2czID0gIlwiKSkgcmV0dXJuZWQgIjsKKyAgICAgICAgICAgIHNSZXN1bHQgPSBhcHBlbmRDb21wYXJlUmVzdWx0KGtleVJlc3VsdCwgc1Jlc3VsdCk7CisgICAgICAgICAgICBpZiAob2syKSB7CisgICAgICAgICAgICAgICAgbG9nbG4obXNnMSArIHNvdXJjZSArIG1zZzIgKyB0YXJnZXQgKyBtc2czICsgc1Jlc3VsdCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGVycmxuKG1zZzEgKyBzb3VyY2UgKyBtc2cyICsgdGFyZ2V0ICsgbXNnMyArIHNSZXN1bHQgKyBtc2c0ICsgc0V4cGVjdCk7CisgICAgICAgICAgICAgICAgbXNnMSA9ICIgICI7CisgICAgICAgICAgICAgICAgbXNnMiA9ICIgdnMuICI7CisgICAgICAgICAgICAgICAgZXJybG4obXNnMSArIHByZXR0aWZ5KHNvdXJjZUtleSkgKyBtc2cyICsgcHJldHRpZnkodGFyZ2V0S2V5KSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1zZzEgPSBvazMgPyAiT2s6IGluY0NvbXBhcmUoXCIiIDogIkZBSUw6IGluY0NvbXBhcmUoXCIiOworICAgICAgICAgICAgbXNnMiA9ICJcIiwgXCIiOworICAgICAgICAgICAgbXNnMyA9ICJcIikgcmV0dXJuZWQgIjsKKworICAgICAgICAgICAgc1Jlc3VsdCA9IGFwcGVuZENvbXBhcmVSZXN1bHQoaW5jUmVzdWx0LCBzUmVzdWx0KTsKKworICAgICAgICAgICAgaWYgKG9rMykgeworICAgICAgICAgICAgICAgIGxvZ2xuKG1zZzEgKyBzb3VyY2UgKyBtc2cyICsgdGFyZ2V0ICsgbXNnMyArIHNSZXN1bHQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBlcnJsbihtc2cxICsgc291cmNlICsgbXNnMiArIHRhcmdldCArIG1zZzMgKyBzUmVzdWx0ICsgbXNnNCArIHNFeHBlY3QpOworICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBTdHJpbmcgYXBwZW5kQ29tcGFyZVJlc3VsdChpbnQgcmVzdWx0LCBTdHJpbmcgdGFyZ2V0KSB7CisgICAgICAgIGlmIChyZXN1bHQgPT0gLTEpIHsgIC8vTEVTUworICAgICAgICAgICAgdGFyZ2V0ICs9ICJMRVNTIjsKKyAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gMCkgeyAgLy9FUVVBTAorICAgICAgICAgICAgdGFyZ2V0ICs9ICJFUVVBTCI7CisgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IDEpIHsgIC8vR1JFQVRFUgorICAgICAgICAgICAgdGFyZ2V0ICs9ICJHUkVBVEVSIjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFN0cmluZyBodWggPSAiPyI7CisgICAgICAgICAgICB0YXJnZXQgKz0gaHVoICsgcmVzdWx0OworICAgICAgICB9CisgICAgICAgIHJldHVybiB0YXJnZXQ7CisgICAgfQorICAgIAorICAgIFN0cmluZyBwcmV0dGlmeShDb2xsYXRpb25LZXkgc291cmNlS2V5KSB7CisgICAgICAgIGludCBpOworICAgICAgICBieXRlW10gYnl0ZXM9IHNvdXJjZUtleS50b0J5dGVBcnJheSgpOworICAgICAgICBTdHJpbmcgdGFyZ2V0ID0gIlsiOworICAgIAorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYnl0ZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIHRhcmdldCArPSBJbnRlZ2VyLnRvSGV4U3RyaW5nKGJ5dGVzW2ldKTsKKyAgICAgICAgICAgIHRhcmdldCArPSAiICI7CisgICAgICAgIH0KKyAgICAgICAgdGFyZ2V0ICs9ICJdIjsKKyAgICAgICAgcmV0dXJuIHRhcmdldDsKKyAgICB9CisgICAgCisgICAgLy8gQGJ1ZyA0MDU0NzM2CisgICAgLy8KKyAgICAvLyBGdWxsIERlY29tcG9zaXRpb24gbW9kZSBub3QgaW1wbGVtZW50ZWQKKyAgICAvLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MDU0NzM2KC8qIGNoYXIqIHBhciAqLykgeworICAgICAgICBSdWxlQmFzZWRDb2xsYXRvciBjID0gKFJ1bGVCYXNlZENvbGxhdG9yKSBDb2xsYXRvci5nZXRJbnN0YW5jZShMb2NhbGUuVVMpOworICAgIAorICAgICAgICBjLnNldFN0cmVuZ3RoKENvbGxhdG9yLlNFQ09OREFSWSk7CisgICAgICAgIGMuc2V0RGVjb21wb3NpdGlvbihDb2xsYXRvci5OT19ERUNPTVBPU0lUSU9OKTsKKyAgICAKKyAgICAgICAgZmluYWwgU3RyaW5nW10gdGVzdHMgPSB7ICJcdUZCNEYiLCAiXHUwMDNkIiwgIlx1MDVEMFx1MDVEQyIgfTsgIC8vIEFsZWYtTGFtZWQgdnMuIEFsZWYsIExhbWVkCisgICAgICAgIGNvbXBhcmVBcnJheShjLCB0ZXN0cyk7CisgICAgfQorICAgIAorICAgIC8vIEBidWcgNDA1ODYxMworICAgIC8vCisgICAgLy8gQ29sbGF0b3I6OmNyZWF0ZUluc3RhbmNlKCkgY2F1c2VzIGFuIEFycmF5SW5kZXhPdXRvZkJvdW5kc0V4Y2VwdGlvbiBmb3IgS29yZWFuICAKKyAgICAvLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MDU4NjEzKC8qIGNoYXIqIHBhciAqLykgeworICAgICAgICAvLyBDcmVhdGluZyBhIGRlZmF1bHQgY29sbGF0b3IgZG9lc24ndCB3b3JrIHdoZW4gS29yZWFuIGlzIHRoZSBkZWZhdWx0CisgICAgICAgIC8vIGxvY2FsZQorICAgICAgICAKKyAgICAgICAgTG9jYWxlIG9sZERlZmF1bHQgPSBMb2NhbGUuZ2V0RGVmYXVsdCgpOworICAgICAgICBMb2NhbGUuc2V0RGVmYXVsdChuZXcgTG9jYWxlKCJrbyIsICIiKSk7CisgICAgCisgICAgICAgIENvbGxhdG9yIGMgPSBudWxsOworICAgICAgICAKKyAgICAgICAgYyA9IENvbGxhdG9yLmdldEluc3RhbmNlKG5ldyBMb2NhbGUoImVuIiwgIlVTIikpOworICAgIAorICAgICAgICBpZiAoYyA9PSBudWxsKSB7CisgICAgICAgICAgICBlcnJsbigiQ291bGQgbm90IGNyZWF0ZSBhIEtvcmVhbiBjb2xsYXRvciIpOworICAgICAgICAgICAgTG9jYWxlLnNldERlZmF1bHQob2xkRGVmYXVsdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIFNpbmNlIHRoZSBmaXggdG8gdGhpcyBidWcgd2FzIHRvIHR1cm4gb2ZmIGRlY29tcG9zaXRpb24gZm9yIEtvcmVhbiBjb2xsYXRvcnMsCisgICAgICAgIC8vIGVuc3VyZSB0aGF0J3Mgd2hhdCB3ZSBnb3QKKyAgICAgICAgaWYgKGMuZ2V0RGVjb21wb3NpdGlvbigpICE9IENvbGxhdG9yLk5PX0RFQ09NUE9TSVRJT04pIHsKKyAgICAgICAgICBlcnJsbigiRGVjb21wb3NpdGlvbiBpcyBub3Qgc2V0IHRvIE5PX0RFQ09NUE9TSVRJT04gZm9yIEtvcmVhbiBjb2xsYXRvciIpOworICAgICAgICB9CisgICAgCisgICAgICAgIExvY2FsZS5zZXREZWZhdWx0KG9sZERlZmF1bHQpOworICAgIH0KKyAgICAKKyAgICAvLyBAYnVnIDQwNTk4MjAKKyAgICAvLworICAgIC8vIFJ1bGVCYXNlZENvbGxhdG9yLmdldFJ1bGVzIGRvZXMgbm90IHJldHVybiB0aGUgZXhhY3QgcGF0dGVybiBhcyBpbnB1dAorICAgIC8vIGZvciBleHBhbmRpbmcgY2hhcmFjdGVyIHNlcXVlbmNlcworICAgIC8vCisgICAgcHVibGljIHZvaWQgVGVzdDQwNTk4MjAoLyogY2hhciogcGFyICovKSB7CisgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yIGMgPSBudWxsOworICAgICAgICBTdHJpbmcgcnVsZXMgPSAiPCBhIDwgYiAsIGMvYSA8IGQgPCB6IjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGMgPSBuZXcgUnVsZUJhc2VkQ29sbGF0b3IocnVsZXMpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkZhaWx1cmUgYnVpbGRpbmcgYSBjb2xsYXRvci4iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIAorICAgICAgICBpZiAoIGMuZ2V0UnVsZXMoKS5pbmRleE9mKCJjL2EiKSA9PSAtMSkKKyAgICAgICAgeworICAgICAgICAgICAgZXJybG4oInJldHVybmVkIHJ1bGVzIGRvIG5vdCBjb250YWluICdjL2EnIik7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLy8gQGJ1ZyA0MDYwMTU0CisgICAgLy8KKyAgICAvLyBNZXJnZUNvbGxhdGlvbjo6Zml4RW50cnkgYnJva2VuIGZvciAiJiBIIDwgXHUwMTMxLCBcdTAxMzAsIGksIEkiCisgICAgLy8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDA2MDE1NCgvKiBjaGFyKiBwYXIgKi8pIHsKKyAgICAgICAgU3RyaW5nIHJ1bGVzID0iPCBnLCBHIDwgaCwgSCA8IGksIEkgPCBqLCBKICYgSCA8IFx1MDEzMSwgXHUwMTMwLCBpLCBJIjsKKyAgICAKKyAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IgYyA9IG51bGw7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjID0gbmV3IFJ1bGVCYXNlZENvbGxhdG9yKHJ1bGVzKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKGUpOworICAgICAgICAgICAgZXJybG4oImZhaWx1cmUgYnVpbGRpbmcgY29sbGF0b3IuIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgYy5zZXREZWNvbXBvc2l0aW9uKENvbGxhdG9yLk5PX0RFQ09NUE9TSVRJT04pOworICAgIAorICAgICAgICBTdHJpbmdbXSB0ZXJ0aWFyeSA9IHsKKyAgICAgICAgICAgICJBIiwgICAgICAgICI8IiwgICAgIkIiLAorICAgICAgICAgICAgIkgiLCAgICAgICAgIjwiLCAgICAiXHUwMTMxIiwKKyAgICAgICAgICAgICJIIiwgICAgICAgICI8IiwgICAgIkkiLAorICAgICAgICAgICAgIlx1MDEzMSIsICAgIjwiLCAgICAiXHUwMTMwIiwKKyAgICAgICAgICAgICJcdTAxMzAiLCAgICI8IiwgICAgImkiLAorICAgICAgICAgICAgIlx1MDEzMCIsICAgIj4iLCAgICAiSCIsCisgICAgICAgIH07CisgICAgCisgICAgICAgIGMuc2V0U3RyZW5ndGgoQ29sbGF0b3IuVEVSVElBUlkpOworICAgICAgICBjb21wYXJlQXJyYXkoYywgdGVydGlhcnkpOworICAgIAorICAgICAgICBTdHJpbmdbXSBzZWNvbmRhcnkgPSB7CisgICAgICAgICAgICAiSCIsICAgICAgICAiPCIsICAgICJJIiwKKyAgICAgICAgICAgICJcdTAxMzEiLCAgICI9IiwgICAgIlx1MDEzMCIsCisgICAgICAgIH07CisgICAgCisgICAgICAgIGMuc2V0U3RyZW5ndGgoQ29sbGF0b3IuUFJJTUFSWSk7CisgICAgICAgIGNvbXBhcmVBcnJheShjLCBzZWNvbmRhcnkpOworICAgIH07CisgICAgCisgICAgLy8gQGJ1ZyA0MDYyNDE4CisgICAgLy8KKyAgICAvLyBTZWNvbmRhcnkvVGVydGlhcnkgY29tcGFyaXNvbiBpbmNvcnJlY3QgaW4gRnJlbmNoIFNlY29uZGFyeQorICAgIC8vCisgICAgcHVibGljIHZvaWQgVGVzdDQwNjI0MTgoLyogY2hhciogcGFyICovKSB7CisgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yIGMgPSBudWxsOworICAgICAgICB0cnkgeworICAgICAgICAgICAgYyA9IChSdWxlQmFzZWRDb2xsYXRvcikgQ29sbGF0b3IuZ2V0SW5zdGFuY2UoTG9jYWxlLkZSQU5DRSk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiRmFpbGVkIHRvIGNyZWF0ZSBjb2xsYXRvciBmb3IgTG9jYWxlOjpGUkFOQ0UoKSIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGMuc2V0U3RyZW5ndGgoQ29sbGF0b3IuU0VDT05EQVJZKTsKKyAgICAKKyAgICAgICAgU3RyaW5nW10gdGVzdHMgPSB7CisgICAgICAgICAgICAgICAgInBcdTAwZWFjaGUiLCAgICAiPCIsICAgICJwXHUwMGU5Y2hcdTAwZTkiLCAgICAvLyBDb21wYXJpbmcgYWNjZW50cyBmcm9tIGVuZCwgcFx1MDBlOWNoXHUwMGU5IGlzIGdyZWF0ZXIKKyAgICAgICAgfTsKKyAgICAKKyAgICAgICAgY29tcGFyZUFycmF5KGMsIHRlc3RzKTsKKyAgICB9CisgICAgCisgICAgLy8gQGJ1ZyA0MDY1NTQwCisgICAgLy8KKyAgICAvLyBDb2xsYXRvcjo6Y29tcGFyZSgpIG1ldGhvZCBicm9rZW4gaWYgZWl0aGVyIHN0cmluZyBjb250YWlucyBzcGFjZXMKKyAgICAvLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MDY1NTQwKC8qIGNoYXIqIHBhciAqLykgeworICAgICAgICBSdWxlQmFzZWRDb2xsYXRvciBlbl91cyA9IChSdWxlQmFzZWRDb2xsYXRvcikgQ29sbGF0b3IuZ2V0SW5zdGFuY2UoTG9jYWxlLlVTKTsKKyAgICAgICAgaWYgKGVuX3VzLmNvbXBhcmUoImFiY2QgZSIsICJhYmNkIGYiKSA9PSAwKSB7CisgICAgICAgICAgICBlcnJsbigiJ2FiY2QgZScgPT0gJ2FiY2QgZiciKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvLyBAYnVnIDQwNjYxODkKKyAgICAvLworICAgIC8vIFVuaWNvZGUgY2hhcmFjdGVycyBuZWVkIHRvIGJlIHJlY3Vyc2l2ZWx5IGRlY29tcG9zZWQgdG8gZ2V0IHRoZQorICAgIC8vIGNvcnJlY3QgcmVzdWx0LiBGb3IgZXhhbXBsZSwKKyAgICAvLyB1MUVCMSAtPiBcdTAxMDMgKyBcdTAzMDAgLT4gYSArIFx1MDMwNiArIFx1MDMwMC4KKyAgICAvLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MDY2MTg5KC8qIGNoYXIqIHBhciAqLykgeworICAgICAgICBmaW5hbCAgU3RyaW5nIHRlc3QxID0gIlx1MUVCMSI7CisgICAgICAgIGZpbmFsICBTdHJpbmcgdGVzdDIgPSAiXHUwMDYxXHUwMzA2XHUwMzAwIjsKKyAgICAKKyAgICAgICAgLy8gTk9URTogVGhlIGphdmEgY29kZSB1c2VkIGVuX3VzIHRvIGNyZWF0ZSB0aGUKKyAgICAgICAgLy8gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yJ3MuIEknbSBwcmV0dHkgc3VyZSB0aGF0CisgICAgICAgIC8vIHdhcyB3cm9uZywgc28gSSd2ZSBjaGFuZ2UgdGhlIGNvZGUgdG8gdXNlIGMxIGFuZCBjMgorICAgICAgICBSdWxlQmFzZWRDb2xsYXRvciBjMSA9IChSdWxlQmFzZWRDb2xsYXRvcikgQ29sbGF0b3IuZ2V0SW5zdGFuY2UoTG9jYWxlLlVTKTsKKyAgICAgICAgYzEuc2V0RGVjb21wb3NpdGlvbihDb2xsYXRvci5DQU5PTklDQUxfREVDT01QT1NJVElPTik7CisgICAgICAgIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvciBpMSA9IGMxLmdldENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvcih0ZXN0MSk7CisgICAgCisgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yIGMyID0gKFJ1bGVCYXNlZENvbGxhdG9yKSBDb2xsYXRvci5nZXRJbnN0YW5jZShMb2NhbGUuVVMpOworICAgICAgICBjMi5zZXREZWNvbXBvc2l0aW9uKENvbGxhdG9yLk5PX0RFQ09NUE9TSVRJT04pOworICAgICAgICBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IgaTIgPSBjMi5nZXRDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IodGVzdDIpOworICAgIAorICAgICAgICBhc3NlcnRFcXVhbChpMSwgaTIpOworICAgIH0KKyAgICAKKyAgICAvLyBAYnVnIDQwNjY2OTYKKyAgICAvLworICAgIC8vIEZyZW5jaCBzZWNvbmRhcnkgY29sbGF0aW9uIGNoZWNraW5nIGF0IHRoZSBlbmQgb2YgY29tcGFyZSBpdGVyYXRpb24gZmFpbHMKKyAgICAvLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MDY2Njk2KC8qIGNoYXIqIHBhciAqLykgeworICAgICAgICBSdWxlQmFzZWRDb2xsYXRvciBjID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGMgPSAoUnVsZUJhc2VkQ29sbGF0b3IpQ29sbGF0b3IuZ2V0SW5zdGFuY2UoTG9jYWxlLkZSQU5DRSk7CisgICAgICAgIH0gY2F0Y2goRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJGYWlsdXJlIGNyZWF0aW5nIGNvbGxhdG9yIGZvciBMb2NhbGU6OmdldEZyYW5jZSgpIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYy5zZXRTdHJlbmd0aChDb2xsYXRvci5TRUNPTkRBUlkpOworICAgIAorICAgICAgICBTdHJpbmdbXSB0ZXN0cyA9IHsKKyAgICAgICAgICAgICJcdTAwZTAiLCAgICI+IiwgICAgICJcdTAxZmEiLCAgICAgICAvLyBhLWdyYXZlIDwgIEEtcmluZy1hY3V0ZQorICAgICAgICB9OyAgICAKKyAgICAgICAgY29tcGFyZUFycmF5KGMsIHRlc3RzKTsKKyAgICB9CisgICAgCisgICAgLy8gQGJ1ZyA0MDc2Njc2CisgICAgLy8KKyAgICAvLyBCYWQgY2Fub25pY2FsaXphdGlvbiBvZiBzYW1lLWNsYXNzIGNvbWJpbmluZyBjaGFyYWN0ZXJzCisgICAgLy8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDA3NjY3NigvKiBjaGFyKiBwYXIgKi8pIHsKKyAgICAgICAgLy8gVGhlc2UgY29tYmluaW5nIGNoYXJhY3RlcnMgYXJlIGFsbCBpbiB0aGUgc2FtZSBjbGFzcywgc28gdGhleSBzaG91bGQgbm90CisgICAgICAgIC8vIGJlIHJlb3JkZXJlZCwgYW5kIHRoZXkgc2hvdWxkIGNvbXBhcmUgYXMgdW5lcXVhbC4KKyAgICAgICAgZmluYWwgU3RyaW5nIHMxID0gIlx1MDA0MVx1MDMwMVx1MDMwMlx1MDMwMCI7CisgICAgICAgIGZpbmFsIFN0cmluZyBzMiA9ICJcdTAwNDFcdTAzMDJcdTAzMDBcdTAzMDEiOworICAgIAorICAgICAgICBSdWxlQmFzZWRDb2xsYXRvciBjID0gKFJ1bGVCYXNlZENvbGxhdG9yKSBDb2xsYXRvci5nZXRJbnN0YW5jZShMb2NhbGUuVVMpOworICAgICAgICBjLnNldFN0cmVuZ3RoKENvbGxhdG9yLlRFUlRJQVJZKTsKKyAgICAKKyAgICAgICAgaWYgKGMuY29tcGFyZShzMSxzMikgPT0gMCkgeworICAgICAgICAgICAgZXJybG4oIlNhbWUtY2xhc3MgY29tYmluaW5nIGNoYXJzIHdlcmUgcmVvcmRlcmVkIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBAYnVnIDQwNzg1ODgKKyAgICAvLworICAgIC8vIFJ1bGVCYXNlZENvbGxhdG9yIGJyZWFrcyBvbiAiPCBhIDwgYmIiIHJ1bGUKKyAgICAvLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MDc4NTg4KC8qIGNoYXIgKnBhciAqLykgeworICAgICAgICBSdWxlQmFzZWRDb2xsYXRvciByYmMgPSBudWxsOworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmJjID0gbmV3IFJ1bGVCYXNlZENvbGxhdG9yKCI8IGEgPCBiYiIpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkZhaWxlZCB0byBjcmVhdGUgUnVsZUJhc2VkQ29sbGF0b3IuIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgaW50IHJlc3VsdCA9IHJiYy5jb21wYXJlKCJhIiwiYmIiKTsKKyAgICAKKyAgICAgICAgaWYgKHJlc3VsdCA+PSAwKSB7CisgICAgICAgICAgICBlcnJsbigiQ29tcGFyZShhLGJiKSByZXR1cm5lZCAiICsgcmVzdWx0ICsgIjsgZXhwZWN0ZWQgLTEiKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvLyBAYnVnIDQwNzkyMzEKKyAgICAvLworICAgIC8vIFJ1bGVCYXNlZENvbGxhdG9yOjpvcGVyYXRvcj09KE5VTEwpIHRocm93cyBOdWxsUG9pbnRlckV4Y2VwdGlvbgorICAgIC8vCisgICAgcHVibGljIHZvaWQgVGVzdDQwNzkyMzEoLyogY2hhciogcGFyICovKSB7ICAgIAorICAgICAgICBSdWxlQmFzZWRDb2xsYXRvciBlbl91cyA9IChSdWxlQmFzZWRDb2xsYXRvcikgQ29sbGF0b3IuZ2V0SW5zdGFuY2UoTG9jYWxlLlVTKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGlmIChlbl91cy5lcXVhbHMobnVsbCkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiZW5fdXMuZXF1YWxzKG51bGwpIHJldHVybmVkIHRydWUiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJlbl91cy5lcXVhbHMobnVsbCkgdGhyZXcgIiArIGUudG9TdHJpbmcoKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLy8gQGJ1ZyA0MDgxODY2CisgICAgLy8KKyAgICAvLyBDb21iaW5pbmcgY2hhcmFjdGVycyBpbiBkaWZmZXJlbnQgY2xhc3NlcyBub3QgcmVvcmRlcmVkIHByb3Blcmx5LgorICAgIC8vCisgICAgcHVibGljIHZvaWQgVGVzdDQwODE4NjYoLyogY2hhciogcGFyICovKSB7CisgICAgICAgIC8vIFRoZXNlIGNvbWJpbmluZyBjaGFyYWN0ZXJzIGFyZSBhbGwgaW4gZGlmZmVyZW50IGNsYXNzZXMsCisgICAgICAgIC8vIHNvIHRoZXkgc2hvdWxkIGJlIHJlb3JkZXJlZCBhbmQgdGhlIHN0cmluZ3Mgc2hvdWxkIGNvbXBhcmUgYXMgZXF1YWwuCisgICAgICAgIFN0cmluZyBzMSA9ICJcdTAwNDFcdTAzMDBcdTAzMTZcdTAzMjdcdTAzMTUiOworICAgICAgICBTdHJpbmcgczIgPSAiXHUwMDQxXHUwMzI3XHUwMzE2XHUwMzE1XHUwMzAwIjsKKyAgICAKKyAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IgYyA9IChSdWxlQmFzZWRDb2xsYXRvcikgQ29sbGF0b3IuZ2V0SW5zdGFuY2UoTG9jYWxlLlVTKTsKKyAgICAgICAgYy5zZXRTdHJlbmd0aChDb2xsYXRvci5URVJUSUFSWSk7CisgICAgICAgIAorICAgICAgICAvLyBOb3cgdGhhdCB0aGUgZGVmYXVsdCBjb2xsYXRvcnMgYXJlIHNldCB0byBOT19ERUNPTVBPU0lUSU9OCisgICAgICAgIC8vIChhcyBhIHJlc3VsdCBvZiBmaXhpbmcgYnVnIDQxMTQwNzcpLCB3ZSBtdXN0IHNldCBpdCBleHBsaWNpdGx5CisgICAgICAgIC8vIHdoZW4gd2UncmUgdGVzdGluZyByZW9yZGVyaW5nIGJlaGF2aW9yLiAgLS0gbHdlcm5lciwgNS81Lzk4CisgICAgICAgIGMuc2V0RGVjb21wb3NpdGlvbihDb2xsYXRvci5DQU5PTklDQUxfREVDT01QT1NJVElPTik7CisgICAgICAgIGlmIChjLmNvbXBhcmUoczEsczIpICE9IDApIHsKKyAgICAgICAgICAgIGVycmxuKCJDb21iaW5pbmcgY2hhcnMgd2VyZSBub3QgcmVvcmRlcmVkIik7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLy8gQGJ1ZyA0MDg3MjQxCisgICAgLy8KKyAgICAvLyBzdHJpbmcgY29tcGFyaXNvbiBlcnJvcnMgaW4gU2NhbmRpbmF2aWFuIGNvbGxhdG9ycworICAgIC8vCisgICAgcHVibGljIHZvaWQgVGVzdDQwODcyNDEoLyogY2hhciogcGFyICovKSB7CisgICAgICAgIExvY2FsZSBkYV9ESyA9IG5ldyBMb2NhbGUoImRhIiwgIkRLIik7CisgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yIGMgPSBudWxsOworICAgICAgICB0cnkgeworICAgICAgICAgICAgYyA9IChSdWxlQmFzZWRDb2xsYXRvcikgQ29sbGF0b3IuZ2V0SW5zdGFuY2UoZGFfREspOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkZhaWxlZCB0byBjcmVhdGUgY29sbGF0b3IgZm9yIGRhX0RLIGxvY2FsZSIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGMuc2V0U3RyZW5ndGgoQ29sbGF0b3IuU0VDT05EQVJZKTsKKyAgICAgICAgU3RyaW5nIHRlc3RzW10gPSB7CisgICAgICAgICAgICAiXHUwMDdhIiwgICAgICAgIlx1MDAzYyIsICJcdTAwRTYiLCAgICAgICAgICAgIC8vIHogICAgICAgIDwgYWUKKyAgICAgICAgICAgICJcdTAwNjFcdTAzMDgiLCAiXHUwMDNjIiwgIlx1MDA2MVx1MDMwQSIsICAgICAgLy8gYS11bmxhdXQgPCBhLXJpbmcKKyAgICAgICAgICAgICJcdTAwNTkiLCAgICAgICAiXHUwMDNjIiwgIlx1MDA3NVx1MDMwOCIsICAgICAgLy8gWSAgICAgICAgPCB1LXVtbGF1dAorICAgICAgICB9OworICAgICAgICBjb21wYXJlQXJyYXkoYywgdGVzdHMpOworICAgIH0KKyAgICAKKyAgICAvLyBAYnVnIDQwODcyNDMKKyAgICAvLworICAgIC8vIENvbGxhdGlvbktleSB0YWtlcyBpZ25vcmFibGUgc3RyaW5ncyBpbnRvIGFjY291bnQgd2hlbiBpdCBzaG91bGRuJ3QKKyAgICAvLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MDg3MjQzKC8qIGNoYXIqIHBhciAqLykgeworICAgICAgICBSdWxlQmFzZWRDb2xsYXRvciBjID0gKFJ1bGVCYXNlZENvbGxhdG9yKSBDb2xsYXRvci5nZXRJbnN0YW5jZShMb2NhbGUuVVMpOworICAgICAgICBjLnNldFN0cmVuZ3RoKENvbGxhdG9yLlRFUlRJQVJZKTsKKyAgICAgICAgU3RyaW5nIHRlc3RzW10gPSB7CisgICAgICAgICAgICAiXHUwMDMxXHUwMDMyXHUwMDMzIiwgIlx1MDAzZCIsICJcdTAwMzFcdTAwMzJcdTAwMzNcdTAwMDEiICAgIC8vIDEgMiAzICA9ICAxIDIgMyBjdHJsLUEKKyAgICAgICAgfTsKKyAgICAgICAgY29tcGFyZUFycmF5KGMsIHRlc3RzKTsKKyAgICB9CisgICAgCisgICAgLy8gQGJ1ZyA0MDkyMjYwCisgICAgLy8KKyAgICAvLyBNdS9taWNybyBjb25mbGljdAorICAgIC8vIE1pY3JvIHN5bWJvbCBhbmQgZ3JlZWsgbG93ZXJjYXNlIGxldHRlciBNdSBzaG91bGQgc29ydCBpZGVudGljYWxseQorICAgIC8vCisgICAgcHVibGljIHZvaWQgVGVzdDQwOTIyNjAoLyogY2hhciogcGFyICovKSB7CisgICAgICAgIExvY2FsZSBlbCA9IG5ldyBMb2NhbGUoImVsIiwgIiIpOworICAgICAgICBDb2xsYXRvciBjID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGMgPSBDb2xsYXRvci5nZXRJbnN0YW5jZShlbCk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiRmFpbGVkIHRvIGNyZWF0ZSBjb2xsYXRvciBmb3IgZWwgbG9jYWxlLiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIC8vIFRoZXNlIG5vdyBoYXZlIHRlcnRpYXJ5IGRpZmZlcmVuY2VzIGluIFVDQQorICAgICAgICBjLnNldFN0cmVuZ3RoKENvbGxhdG9yLlNFQ09OREFSWSk7CisgICAgICAgIFN0cmluZyB0ZXN0c1tdID0geworICAgICAgICAgICAgIlx1MDBCNSIsICJcdTAwM2QiLCAiXHUwM0JDIiwKKyAgICAgICAgfTsKKyAgICAgICAgY29tcGFyZUFycmF5KGMsIHRlc3RzKTsKKyAgICB9CisgICAgCisgICAgLy8gQGJ1ZyA0MDk1MzE2CisgICAgLy8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDA5NTMxNigvKiBjaGFyKiBwYXIgKi8pIHsKKyAgICAgICAgTG9jYWxlIGVsX0dSID0gbmV3IExvY2FsZSgiZWwiLCAiR1IiKTsKKyAgICAgICAgQ29sbGF0b3IgYyA9IG51bGw7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjID0gQ29sbGF0b3IuZ2V0SW5zdGFuY2UoZWxfR1IpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkZhaWxlZCB0byBjcmVhdGUgY29sbGF0b3IgZm9yIGVsX0dSIGxvY2FsZSIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIC8vIFRoZXNlIG5vdyBoYXZlIHRlcnRpYXJ5IGRpZmZlcmVuY2VzIGluIFVDQQorICAgICAgICAvL2MtPnNldFN0cmVuZ3RoKENvbGxhdG9yOjpURVJUSUFSWSk7CisgICAgICAgIC8vYy0+c2V0QXR0cmlidXRlKFVDT0xfU1RSRU5HVEgsIFVDT0xfU0VDT05EQVJZLCBzdGF0dXMpOworICAgICAgICBjLnNldFN0cmVuZ3RoKENvbGxhdG9yLlNFQ09OREFSWSk7CisgICAgICAgIFN0cmluZyB0ZXN0c1tdID0geworICAgICAgICAgICAgIlx1MDNENCIsICJcdTAwM2QiLCAiXHUwM0FCIiwKKyAgICAgICAgfTsKKyAgICAgICAgY29tcGFyZUFycmF5KGMsIHRlc3RzKTsKKyAgICB9CisgICAgCisgICAgLy8gQGJ1ZyA0MTAxOTQwCisgICAgLy8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDEwMTk0MCgvKiBjaGFyKiBwYXIgKi8pIHsKKyAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IgYyA9IG51bGw7CisgICAgICAgIFN0cmluZyBydWxlcyA9ICI8IGEgPCBiIjsKKyAgICAgICAgU3RyaW5nIG5vdGhpbmcgPSAiIjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGMgPSBuZXcgUnVsZUJhc2VkQ29sbGF0b3IocnVsZXMpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkZhaWxlZCB0byBjcmVhdGUgUnVsZUJhc2VkQ29sbGF0b3IiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IgaSA9IGMuZ2V0Q29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yKG5vdGhpbmcpOworICAgICAgICBpLnJlc2V0KCk7CisgICAgICAgIGlmIChpLm5leHQoKSAhPSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuTlVMTE9SREVSKSB7CisgICAgICAgICAgICBlcnJsbigibmV4dCBkaWQgbm90IHJldHVybiBOVUxMT1JERVIiKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvLyBAYnVnIDQxMDM0MzYKKyAgICAvLworICAgIC8vIENvbGxhdG9yOjpjb21wYXJlIG5vdCBoYW5kbGluZyBzcGFjZXMgcHJvcGVybHkKKyAgICAvLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTAzNDM2KC8qIGNoYXIqIHBhciAqLykgeworICAgICAgICBSdWxlQmFzZWRDb2xsYXRvciBjID0gKFJ1bGVCYXNlZENvbGxhdG9yKSBDb2xsYXRvci5nZXRJbnN0YW5jZShMb2NhbGUuVVMpOworICAgICAgICBjLnNldFN0cmVuZ3RoKENvbGxhdG9yLlRFUlRJQVJZKTsKKyAgICAgICAgU3RyaW5nW10gdGVzdHMgPSB7CisgICAgICAgICAgICAiXHUwMDY2XHUwMDY5XHUwMDZjXHUwMDY1IiwgIlx1MDAzYyIsICJcdTAwNjZcdTAwNjlcdTAwNmNcdTAwNjVcdTAwMjBcdTAwNjFcdTAwNjNcdTAwNjNcdTAwNjVcdTAwNzNcdTAwNzMiLAorICAgICAgICAgICAgIlx1MDA2Nlx1MDA2OVx1MDA2Y1x1MDA2NSIsICJcdTAwM2MiLCAiXHUwMDY2XHUwMDY5XHUwMDZjXHUwMDY1XHUwMDYxXHUwMDYzXHUwMDYzXHUwMDY1XHUwMDczXHUwMDczIiwKKyAgICAgICAgfTsKKyAgICAgICAgY29tcGFyZUFycmF5KGMsIHRlc3RzKTsKKyAgICB9CisgICAgCisgICAgLy8gQGJ1ZyA0MTE0MDc2CisgICAgLy8KKyAgICAvLyBDb2xsYXRpb24gbm90IFVuaWNvZGUgY29uZm9ybWFudCB3aXRoIEhhbmd1bCBzeWxsYWJsZXMKKyAgICAvLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTE0MDc2KC8qIGNoYXIqIHBhciAqLykgeworICAgICAgICBSdWxlQmFzZWRDb2xsYXRvciBjID0gKFJ1bGVCYXNlZENvbGxhdG9yKSBDb2xsYXRvci5nZXRJbnN0YW5jZShMb2NhbGUuVVMpOworICAgICAgICBjLnNldFN0cmVuZ3RoKENvbGxhdG9yLlRFUlRJQVJZKTsKKyAgICAKKyAgICAgICAgLy8KKyAgICAgICAgLy8gV2l0aCBDYW5vbmljYWwgZGVjb21wb3NpdGlvbiwgSGFuZ3VsIHN5bGxhYmxlcyBzaG91bGQgZ2V0IGRlY29tcG9zZWQKKyAgICAgICAgLy8gaW50byBKYW1vLCBidXQgSmFtbyBjaGFyYWN0ZXJzIHNob3VsZCBub3QgYmUgZGVjb21wb3NlZCBpbnRvCisgICAgICAgIC8vIGNvbmpvaW5pbmcgSmFtbworICAgICAgICAvLworICAgICAgICBTdHJpbmcgdGVzdDFbXSA9IHsKKyAgICAgICAgICAgICJcdWQ0ZGIiLCAiXHUwMDNkIiwgIlx1MTExMVx1MTE3MVx1MTFiNiIKKyAgICAgICAgfTsKKyAgICAKKyAgICAgICAgYy5zZXREZWNvbXBvc2l0aW9uKENvbGxhdG9yLkNBTk9OSUNBTF9ERUNPTVBPU0lUSU9OKTsKKyAgICAgICAgY29tcGFyZUFycmF5KGMsIHRlc3QxKTsKKyAgICAKKyAgICAgICAgLy8gRnJvbSBVVFIgIzE1OgorICAgICAgICAvLyAqSW4gZWFybGllciB2ZXJzaW9ucyBvZiBVbmljb2RlLCBqYW1vIGNoYXJhY3RlcnMgbGlrZSBrc2YKKyAgICAgICAgLy8gIGhhZCBjb21wYXRpYmlsaXR5IG1hcHBpbmdzIHRvIGtmICsgc2YuIFRoZXNlIG1hcHBpbmdzIHdlcmUgCisgICAgICAgIC8vICByZW1vdmVkIGluIFVuaWNvZGUgMi4xLjkgdG8gZW5zdXJlIHRoYXQgSGFuZ3VsIHN5bGxhYmxlcyBhcmUgbWFpbnRhaW5lZC4pCisgICAgICAgIC8vIFRoYXQgaXMsIHRoZSBmb2xsb3dpbmcgdGVzdCBpcyBvYnNvbGV0ZSBhcyBvZiAyLjEuOQorICAgIAorICAgIC8vb2Jzb2xldGUtICAgIC8vIFdpdGggRnVsbCBkZWNvbXBvc2l0aW9uLCBpdCBzaG91bGQgZ28gYWxsIHRoZSB3YXkgZG93biB0bworICAgIC8vb2Jzb2xldGUtICAgIC8vIGNvbmpvaW5pbmcgSmFtbyBjaGFyYWN0ZXJzLgorICAgIC8vb2Jzb2xldGUtICAgIC8vCisgICAgLy9vYnNvbGV0ZS0gICAgc3RhdGljIGNvbnN0IFVDaGFyIHRlc3QyW11bQ29sbGF0aW9uUmVncmVzc2lvblRlc3Q6Ok1BWF9UT0tFTl9MRU5dID0KKyAgICAvL29ic29sZXRlLSAgICB7CisgICAgLy9vYnNvbGV0ZS0gICAgICAgIHsweGQ0ZGIsIDB9LCB7MHgzZCwgMH0sIHsweDExMTEsIDB4MTE2ZSwgMHgxMTc1LCAweDExYWYsIDB4MTFjMiwgMH0KKyAgICAvL29ic29sZXRlLSAgICB9OworICAgIC8vb2Jzb2xldGUtCisgICAgLy9vYnNvbGV0ZS0gICAgYy0+c2V0RGVjb21wb3NpdGlvbihOb3JtYWxpemVyOjpERUNPTVBfQ09NUEFUKTsKKyAgICAvL29ic29sZXRlLSAgICBjb21wYXJlQXJyYXkoKmMsIHRlc3QyLCBBUlJBWV9MRU5HVEgodGVzdDIpKTsKKyAgICB9CisKKyAgICAvLyBAYnVnIDQxMTQwNzcKKyAgICAvLworICAgIC8vIENvbGxhdGlvbiB3aXRoIGRlY29tcG9zaXRpb24gb2ZmIGRvZXNuJ3Qgd29yayBmb3IgRXVyb3BlIAorICAgIC8vCisgICAgcHVibGljIHZvaWQgVGVzdDQxMTQwNzcoLyogY2hhciogcGFyICovKSB7CisgICAgICAgIC8vIEVuc3VyZSB0aGF0IHdlIGdldCB0aGUgc2FtZSByZXN1bHRzIHdpdGggZGVjb21wb3NpdGlvbiBvZmYKKyAgICAgICAgLy8gYXMgd2UgZG8gd2l0aCBpdCBvbi4uLi4KKyAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IgYyA9IChSdWxlQmFzZWRDb2xsYXRvcikgQ29sbGF0b3IuZ2V0SW5zdGFuY2UoTG9jYWxlLlVTKTsKKyAgICAgICAgYy5zZXRTdHJlbmd0aChDb2xsYXRvci5URVJUSUFSWSk7CisgICAgICAgIFN0cmluZyB0ZXN0MVtdID0geworICAgICAgICAgICAgIlx1MDBDMCIsICAgICAgICAgICAgICAgICAgICAgICAgICJcdTAwM2QiLCAiXHUwMDQxXHUwMzAwIiwgICAgICAgICAgICAvLyBTaG91bGQgYmUgZXF1aXZhbGVudAorICAgICAgICAgICAgIlx1MDA3MFx1MDBlYVx1MDA2M1x1MDA2OFx1MDA2NSIsICJcdTAwM2UiLCAiXHUwMDcwXHUwMGU5XHUwMDYzXHUwMDY4XHUwMGU5IiwKKyAgICAgICAgICAgICJcdTAyMDQiLCAgICAgICAgICAgICAgICAgICAgICAgICAiXHUwMDNkIiwgIlx1MDA0NVx1MDMwRiIsCisgICAgICAgICAgICAiXHUwMWZhIiwgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MDAzZCIsICJcdTAwNDFcdTAzMGFcdTAzMDEiLCAgICAvLyBhLXJpbmctYWN1dGUgLT4gYS1yaW5nLCBhY3V0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgLT4gYSwgcmluZywgYWN1dGUKKyAgICAgICAgICAgICJcdTAwNDFcdTAzMDBcdTAzMTYiLCAgICAgICAgICAgICAiXHUwMDNjIiwgIlx1MDA0MVx1MDMxNlx1MDMwMCIgICAgICAgIC8vIE5vIHJlb3JkZXJpbmcgLS0+IHVuZXF1YWwKKyAgICAgICAgfTsKKyAgICAKKyAgICAgICAgYy5zZXREZWNvbXBvc2l0aW9uKENvbGxhdG9yLk5PX0RFQ09NUE9TSVRJT04pOworICAgICAgICBjb21wYXJlQXJyYXkoYywgdGVzdDEpOworICAgIAorICAgICAgICBTdHJpbmcgdGVzdDJbXSA9IHsKKyAgICAgICAgICAgICJcdTAwNDFcdTAzMDBcdTAzMTYiLCAiXHUwMDNkIiwgIlx1MDA0MVx1MDMxNlx1MDMwMCIgICAgICAvLyBSZW9yZGVyaW5nIC0tPiBlcXVhbAorICAgICAgICB9OworICAgIAorICAgICAgICBjLnNldERlY29tcG9zaXRpb24oQ29sbGF0b3IuQ0FOT05JQ0FMX0RFQ09NUE9TSVRJT04pOworICAgICAgICBjb21wYXJlQXJyYXkoYywgdGVzdDIpOworICAgIH0KKyAgICAKKyAgICAvLyBAYnVnIDQxMjQ2MzIKKyAgICAvLworICAgIC8vIENvbGxhdG9yOjpnZXRDb2xsYXRpb25LZXkgd2FzIGhhbmdpbmcgb24gY2VydGFpbiBjaGFyYWN0ZXIgc2VxdWVuY2VzCisgICAgLy8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDEyNDYzMigvKiBjaGFyKiBwYXIgKi8pIHsKKyAgICAgICAgQ29sbGF0b3IgY29sbCA9IG51bGw7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjb2xsID0gQ29sbGF0b3IuZ2V0SW5zdGFuY2UoTG9jYWxlLkpBUEFOKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJGYWlsZWQgdG8gY3JlYXRlIGNvbGxhdG9yIGZvciBMb2NhbGU6OkpBUEFOIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgU3RyaW5nIHRlc3QgPSAiXHUwMDQxXHUwMzA4XHUwMDYyXHUwMDYzIjsKKyAgICAgICAgQ29sbGF0aW9uS2V5IGtleTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGtleSA9IGNvbGwuZ2V0Q29sbGF0aW9uS2V5KHRlc3QpOworICAgICAgICAgICAgbG9nbG4oa2V5LmdldFNvdXJjZVN0cmluZygpKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJDb2xsYXRpb25LZXkgY3JlYXRpb24gZmFpbGVkLiIpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8vIEBidWcgNDEzMjczNgorICAgIC8vCisgICAgLy8gc29ydCBvcmRlciBvZiBmcmVuY2ggd29yZHMgd2l0aCBtdWx0aXBsZSBhY2NlbnRzIGhhcyBlcnJvcnMKKyAgICAvLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTMyNzM2KC8qIGNoYXIqIHBhciAqLykgeworICAgICAgICBDb2xsYXRvciBjID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGMgPSBDb2xsYXRvci5nZXRJbnN0YW5jZShMb2NhbGUuRlJBTkNFKTsKKyAgICAgICAgICAgIGMuc2V0U3RyZW5ndGgoQ29sbGF0b3IuVEVSVElBUlkpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkZhaWxlZCB0byBjcmVhdGUgYSBjb2xsYXRvciBmb3IgTG9jYWxlOjpnZXRGcmFuY2UoKSIpOworICAgICAgICB9CisgICAgCisgICAgICAgIFN0cmluZyB0ZXN0MVtdID0geworICAgICAgICAgICAgIlx1MDA2NVx1MDMwMFx1MDA2NVx1MDMwMSIsICJcdTAwM2MiLCAiXHUwMDY1XHUwMzAxXHUwMDY1XHUwMzAwIiwKKyAgICAgICAgICAgICJcdTAwNjVcdTAzMDBcdTAzMDEiLCAgICAgICAiXHUwMDNjIiwgIlx1MDA2NVx1MDMwMVx1MDMwMCIsCisgICAgICAgIH07CisgICAgICAgIGNvbXBhcmVBcnJheShjLCB0ZXN0MSk7CisgICAgfQorICAgIAorICAgIC8vIEBidWcgNDEzMzUwOQorICAgIC8vCisgICAgLy8gVGhlIHNvcnRpbmcgdXNpbmcgamF2YS50ZXh0LkNvbGxhdGlvbktleSBpcyBub3QgaW4gdGhlIGV4YWN0IG9yZGVyCisgICAgLy8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDEzMzUwOSgvKiBjaGFyKiBwYXIgKi8pIHsKKyAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IgZW5fdXMgPSAoUnVsZUJhc2VkQ29sbGF0b3IpIENvbGxhdG9yLmdldEluc3RhbmNlKExvY2FsZS5VUyk7CisgICAgICAgIFN0cmluZyB0ZXN0MVtdID0geworICAgICAgICAgICAgIlx1MDA0NVx1MDA3OFx1MDA2M1x1MDA2NVx1MDA3MFx1MDA3NFx1MDA2OVx1MDA2Zlx1MDA2ZSIsICJcdTAwM2MiLCAiXHUwMDQ1XHUwMDc4XHUwMDYzXHUwMDY1XHUwMDcwXHUwMDc0XHUwMDY5XHUwMDZmXHUwMDZlXHUwMDQ5XHUwMDZlXHUwMDQ5XHUwMDZlXHUwMDY5XHUwMDc0XHUwMDY5XHUwMDYxXHUwMDZjXHUwMDY5XHUwMDdhXHUwMDY1XHUwMDcyXHUwMDQ1XHUwMDcyXHUwMDcyXHUwMDZmXHUwMDcyIiwKKyAgICAgICAgICAgICJcdTAwNDdcdTAwNzJcdTAwNjFcdTAwNzBcdTAwNjhcdTAwNjlcdTAwNjNcdTAwNzMiLCAgICAgICAiXHUwMDNjIiwgIlx1MDA0N1x1MDA3Mlx1MDA2MVx1MDA3MFx1MDA2OFx1MDA2OVx1MDA2M1x1MDA3M1x1MDA0NVx1MDA2ZVx1MDA3Nlx1MDA2OVx1MDA3Mlx1MDA2Zlx1MDA2ZVx1MDA2ZFx1MDA2NVx1MDA2ZVx1MDA3NCIsCisgICAgICAgICAgICAiXHUwMDUzXHUwMDc0XHUwMDcyXHUwMDY5XHUwMDZlXHUwMDY3IiwgICAgICAgICAgICAgICAgICAgIlx1MDAzYyIsICJcdTAwNTNcdTAwNzRcdTAwNzJcdTAwNjlcdTAwNmVcdTAwNjdcdTAwNDJcdTAwNzVcdTAwNjZcdTAwNjZcdTAwNjVcdTAwNzIiLAorICAgICAgICB9OworICAgIAorICAgICAgICBjb21wYXJlQXJyYXkoZW5fdXMsIHRlc3QxKTsKKyAgICB9CisgICAgCisgICAgLy8gQGJ1ZyA0MTM5NTcyCisgICAgLy8KKyAgICAvLyBnZXRDb2xsYXRpb25LZXkgdGhyb3dzIGV4Y2VwdGlvbiBmb3Igc3BhbmlzaCB0ZXh0IAorICAgIC8vIENhbm5vdCByZXByb2R1Y2UgdGhpcyBidWcgb24gMS4yLCBob3dldmVyIGl0IERPRVMgZmFpbCBvbiAxLjEuNgorICAgIC8vCisgICAgcHVibGljIHZvaWQgVGVzdDQxMzk1NzIoLyogY2hhciogcGFyICovKSB7CisgICAgICAgIC8vCisgICAgICAgIC8vIENvZGUgcGFzdGVkIHN0cmFpZ2h0IGZyb20gdGhlIGJ1ZyByZXBvcnQKKyAgICAgICAgLy8gKGFuZCB0aGVuIHRyYW5zbGF0ZWQgdG8gQysrIDstKQorICAgICAgICAvLworICAgICAgICAvLyBjcmVhdGUgc3BhbmlzaCBsb2NhbGUgYW5kIGNvbGxhdG9yCisgICAgICAgIExvY2FsZSBsID0gbmV3IExvY2FsZSgiZXMiLCAiZXMiKTsKKyAgICAgICAgQ29sbGF0b3IgY29sID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNvbCA9IENvbGxhdG9yLmdldEluc3RhbmNlKGwpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkZhaWxlZCB0byBjcmVhdGUgYSBjb2xsYXRvciBmb3IgZXNfZXMgbG9jYWxlLiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIENvbGxhdGlvbktleSBrZXkgPSBudWxsOworICAgICAgICAvLyB0aGlzIHNwYW5pc2ggcGhyYXNlIGtpbGxzIGl0IQorICAgICAgICB0cnkgeworICAgICAgICAgICAga2V5ID0gY29sLmdldENvbGxhdGlvbktleSgiTm9tYnJlIERlIE9iamV0byIpOworICAgICAgICAgICAgbG9nbG4oInNvdXJjZToiICsga2V5LmdldFNvdXJjZVN0cmluZygpKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJFcnJvciBjcmVhdGluZyBDb2xsYXRpb25LZXkgZm9yIFwiTm9tYnJlIERlIE9qYmV0b1wiIik7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLy8gQGJ1ZyA0MTQxNjQwCisgICAgLy8KKyAgICAvLyBTdXBwb3J0IGZvciBTd2VkaXNoIGdvbmUgaW4gMS4xLjYgKENhbid0IGNyZWF0ZSBTd2VkaXNoIGNvbGxhdG9yKSAKKyAgICAvLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTQxNjQwKC8qIGNoYXIqIHBhciAqLykgeworICAgICAgICAvLworICAgICAgICAvLyBSYXRoZXIgdGhhbiBqdXN0IGNyZWF0aW5nIGEgU3dlZGlzaCBjb2xsYXRvciwgd2UgbWlnaHQgYXMgd2VsbAorICAgICAgICAvLyB0cnkgdG8gaW5zdGFudGlhdGUgb25lIGZvciBldmVyeSBsb2NhbGUgYXZhaWxhYmxlIG9uIHRoZSBzeXN0ZW0KKyAgICAgICAgLy8gaW4gb3JkZXIgdG8gcHJldmVudCB0aGlzIHNvcnQgb2YgYnVnIGZyb20gY3JvcHBpbmcgdXAgaW4gdGhlIGZ1dHVyZQorICAgICAgICAvLworICAgICAgICBMb2NhbGUgbG9jYWxlc1tdID0gQ29sbGF0b3IuZ2V0QXZhaWxhYmxlTG9jYWxlcygpOworICAgICAgICAKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsb2NhbGVzLmxlbmd0aDsgaSArPSAxKQorICAgICAgICB7CisgICAgICAgICAgICBDb2xsYXRvciBjID0gbnVsbDsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgYyA9IENvbGxhdG9yLmdldEluc3RhbmNlKGxvY2FsZXNbaV0pOworICAgICAgICAgICAgICAgIGxvZ2xuKCJzb3VyY2U6ICIgKyBjLmdldFN0cmVuZ3RoKCkpOworICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgbXNnID0gIiI7CisgICAgICAgICAgICAgICAgbXNnICs9ICJDb3VsZCBub3QgY3JlYXRlIGNvbGxhdG9yIGZvciBsb2NhbGUgIjsKKyAgICAgICAgICAgICAgICBtc2cgKz0gbG9jYWxlc1tpXS5nZXREaXNwbGF5TmFtZSgpOworICAgICAgICAgICAgICAgIGVycmxuKG1zZyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyogUnVsZUJhc2VkQ29sbGF0b3Igbm90IHN1YmNsYXNzYWJsZQorICAgICAqIEBidWcgNDE0NjE2MAorICAgIC8vCisgICAgLy8gUnVsZUJhc2VkQ29sbGF0b3IgZG9lc24ndCB1c2UgY3JlYXRlQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yIGludGVybmFsbHkKKyAgICAvLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTQ2MTYwKCkgeworICAgICAgICAvLworICAgICAgICAvLyBVc2UgYSBjdXN0b20gY29sbGF0b3IgY2xhc3Mgd2hvc2UgY3JlYXRlQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yCisgICAgICAgIC8vIG1ldGhvZHMgaW5jcmVtZW50IGEgY291bnQuLi4uCisgICAgICAgIC8vICAgICAKKyAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IgZW5fdXMgPSAoUnVsZUJhc2VkQ29sbGF0b3IpIENvbGxhdG9yLmdldEluc3RhbmNlKExvY2FsZS5VUyk7CisgICAgICAgIE15NDE0NjE2MENvbGxhdG9yLmNvdW50ID0gMDsKKyAgICAgICAgTXk0MTQ2MTYwQ29sbGF0b3IgbWMgPSBudWxsOworICAgICAgICB0cnkgeworICAgICAgICAgICAgbWMgPSBuZXcgTXk0MTQ2MTYwQ29sbGF0b3IoZW5fdXMpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkZhaWxlZCB0byBjcmVhdGUgYSBNeTQxNDYxNjBDb2xsYXRvci4iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIAorICAgICAgICBDb2xsYXRpb25LZXkga2V5ID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGtleSA9IG1jLmdldENvbGxhdGlvbktleSgiMSIpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkZhaWx1cmUgdG8gZ2V0IGEgQ29sbGF0aW9uS2V5IGZyb20gYSBNeTQxNDYxNjBDb2xsYXRvci4iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIAorICAgICAgICBpZiAoTXk0MTQ2MTYwQ29sbGF0b3IuY291bnQgPCAxKSB7CisgICAgICAgICAgICBlcnJsbigiTXk0MTQ2MTYwQ29sbGF0b3IuZ2V0Q29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yIG5vdCBjYWxsZWQgZm9yIGdldENvbGxhdGlvbktleSIpOworICAgICAgICB9CisgICAgCisgICAgICAgIE15NDE0NjE2MENvbGxhdG9yLmNvdW50ID0gMDsKKyAgICAgICAgbWMuY29tcGFyZSgiMSIsICIyIik7CisgICAgCisgICAgICAgIGlmIChNeTQxNDYxNjBDb2xsYXRvci5jb3VudCA8IDEpIHsKKyAgICAgICAgICAgIGVycmxuKCJNeTQxNDYxNjBDb2xsYXRvci5nZXRDb2xsYXRpb25FbGVtZW50SXRlcmF0b3Igbm90IGNhbGxlZCBmb3IgY29tcGFyZSIpOworICAgICAgICB9CisgICAgfSovCit9CisKKy8qIFJ1bGVCYXNlZENvbGxhdG9yIG5vdCBzdWJjbGFzc2FibGUKKyAqIGNsYXNzIE15NDE0NjE2MENvbGxhdG9yIGV4dGVuZHMgUnVsZUJhc2VkQ29sbGF0b3IgeworICAgIHN0YXRpYyBpbnQgY291bnQgPSAwOworCisgICAgcHVibGljIE15NDE0NjE2MENvbGxhdG9yKFJ1bGVCYXNlZENvbGxhdG9yIHJiYykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHN1cGVyKHJiYy5nZXRSdWxlcygpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yIGdldENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvcihTdHJpbmcgdGV4dCkgeworICAgICAgICBjb3VudCArPSAxOworICAgICAgICByZXR1cm4gc3VwZXIuZ2V0Q29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yKHRleHQpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yIGdldENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvcihqYXZhLnRleHQuQ2hhcmFjdGVySXRlcmF0b3IgdGV4dCkgeworICAgICAgICBjb3VudCArPSAxOworICAgICAgICByZXR1cm4gc3VwZXIuZ2V0Q29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yKHRleHQpOworICAgIH0KK30KKyovClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NvbGxhdG9yL0NvbGxhdGlvblNwYW5pc2hUZXN0LmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY29sbGF0b3IvQ29sbGF0aW9uU3BhbmlzaFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTkyNGQwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NvbGxhdG9yL0NvbGxhdGlvblNwYW5pc2hUZXN0LmphdmEKQEAgLTAsMCArMSwxODkgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAgICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogJFNvdXJjZTogCisgKiAkRGF0ZTogCisgKiAkUmV2aXNpb246IAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKKy8qKiAKKyAqIFBvcnQgRnJvbTogICBJQ1U0QyB2Mi4xIDogQ29sbGF0ZS9Db2xsYXRpb25TcGFuaXNoVGVzdAorICogU291cmNlIEZpbGU6ICRJQ1U0Q1Jvb3Qvc291cmNlL3Rlc3QvaW50bHRlc3QvZXNjb2xsLmNwcAorICoqLworIAorIHBhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3QuY29sbGF0b3I7CisgCisgaW1wb3J0IGNvbS5pYm0uaWN1LmRldi50ZXN0Lio7CisgaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuKjsKKyBpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKKyAKKyBwdWJsaWMgY2xhc3MgQ29sbGF0aW9uU3BhbmlzaFRlc3QgZXh0ZW5kcyBUZXN0Rm13ayB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIG5ldyBDb2xsYXRpb25TcGFuaXNoVGVzdCgpLnJ1bihhcmdzKTsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgY2hhcltdW10gdGVzdFNvdXJjZUNhc2VzID0geworICAgICAgICB7MHg2MSwgMHg2YywgMHg2OSwgMHg2MSwgMHg3M30sCisgICAgICAgIHsweDQ1LCAweDZjLCAweDZjLCAweDY5LCAweDZmLCAweDc0fSwKKyAgICAgICAgezB4NDgsIDB4NjUsIDB4NmMsIDB4NmMsIDB4NmZ9LAorICAgICAgICB7MHg2MSwgMHg2MywgMHg0OCwgMHg2M30sCisgICAgICAgIHsweDYxLCAweDYzLCAweDYzfSwKKyAgICAgICAgezB4NjEsIDB4NmMsIDB4NjksIDB4NjEsIDB4NzN9LAorICAgICAgICB7MHg2MSwgMHg2MywgMHg0OCwgMHg2M30sCisgICAgICAgIHsweDYxLCAweDYzLCAweDYzfSwKKyAgICAgICAgezB4NDgsIDB4NjUsIDB4NmMsIDB4NmMsIDB4NmZ9LAorICAgIH07CisKKyAgICBwcml2YXRlIHN0YXRpYyBjaGFyW11bXSB0ZXN0VGFyZ2V0Q2FzZXMgPSB7CisgICAgICAgIHsweDYxLCAweDZjLCAweDZjLCAweDY5LCAweDYxLCAweDczfSwKKyAgICAgICAgezB4NDUsIDB4NmQsIDB4NjksIDB4NmYsIDB4NzR9LAorICAgICAgICB7MHg2OCwgMHg2NSwgMHg2YywgMHg2YywgMHg0Zn0sCisgICAgICAgIHsweDYxLCAweDQzLCAweDQ4LCAweDYzfSwKKyAgICAgICAgezB4NjEsIDB4NDMsIDB4NDgsIDB4NjN9LAorICAgICAgICB7MHg2MSwgMHg2YywgMHg2YywgMHg2OSwgMHg2MSwgMHg3M30sCisgICAgICAgIHsweDYxLCAweDQzLCAweDQ4LCAweDYzfSwKKyAgICAgICAgezB4NjEsIDB4NDMsIDB4NDgsIDB4NjN9LAorICAgICAgICB7MHg2OCwgMHg2NSwgMHg2YywgMHg2YywgMHg0Zn0sCisgICAgfTsKKworICAgIHByaXZhdGUgc3RhdGljIGludFtdIHJlc3VsdHMgPSB7CisgICAgICAgIC0xLAorICAgICAgICAtMSwKKyAgICAgICAgMSwKKyAgICAgICAgLTEsCisgICAgICAgIC0xLAorICAgICAgICAvLyB0ZXN0IHByaW1hcnkgPiA1CisgICAgICAgIC0xLAorICAgICAgICAwLAorICAgICAgICAtMSwKKyAgICAgICAgMAorICAgIH07CisgICAgCisgICAgLy9zdGF0aWMgcHVibGljIENvbGxhdG9yIG15Q29sbGF0aW9uID0gQ29sbGF0b3IuZ2V0SW5zdGFuY2UobmV3IExvY2FsZSgiZXMiLCAiRVMiKSk7CisgICAgCisgICAgcHJpdmF0ZSBDb2xsYXRvciBteUNvbGxhdGlvbiA9IG51bGw7CisgICAgCisgICAgcHVibGljIENvbGxhdGlvblNwYW5pc2hUZXN0KCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgbXlDb2xsYXRpb24gPSBDb2xsYXRvci5nZXRJbnN0YW5jZShuZXcgTG9jYWxlKCJlcyIsICJFUyIpKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogaW4gY3JlYXRpb24gb2YgY29sbGF0b3Igb2YgU1BBTklTSCBsb2NhbGUiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0VGVydGlhcnkoKXsKKyAgICAgICAgaW50IGkgPSAwOworICAgICAgICBteUNvbGxhdGlvbi5zZXRTdHJlbmd0aChDb2xsYXRvci5URVJUSUFSWSk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCA1IDsgaSsrKSB7CisgICAgICAgICAgICBkb1Rlc3QodGVzdFNvdXJjZUNhc2VzW2ldLCB0ZXN0VGFyZ2V0Q2FzZXNbaV0sIHJlc3VsdHNbaV0pOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RQcmltYXJ5KCl7CisgICAgICAgIGludCBpOworICAgICAgICBteUNvbGxhdGlvbi5zZXRTdHJlbmd0aChDb2xsYXRvci5QUklNQVJZKTsKKyAgICAgICAgZm9yIChpID0gNTsgaSA8IDk7IGkrKykgeworICAgICAgICAgICAgZG9UZXN0KHRlc3RTb3VyY2VDYXNlc1tpXSwgdGVzdFRhcmdldENhc2VzW2ldLCByZXN1bHRzW2ldKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvLyBhbWluIHRlc3Qgcm91dGluZSwgdGVzdHMgcnVsZXMgc3BlY2lmaWMgdG8gdGhlIHNwYW5pc2ggbG9jYWxlCisgICAgcHJpdmF0ZSB2b2lkIGRvVGVzdChjaGFyW10gc291cmNlLCBjaGFyW10gdGFyZ2V0LCBpbnQgcmVzdWx0KSB7CisgICAgICAgIFN0cmluZyBzID0gbmV3IFN0cmluZyhzb3VyY2UpOworICAgICAgICBTdHJpbmcgdCA9IG5ldyBTdHJpbmcodGFyZ2V0KTsKKyAgICAgICAgaW50IGNvbXBhcmVSZXN1bHQgPSBteUNvbGxhdGlvbi5jb21wYXJlKHMsIHQpOworICAgICAgICBDb2xsYXRpb25LZXkgc29ydEtleTEsIHNvcnRLZXkyOworICAgICAgICBzb3J0S2V5MSA9IG15Q29sbGF0aW9uLmdldENvbGxhdGlvbktleShzKTsKKyAgICAgICAgc29ydEtleTIgPSBteUNvbGxhdGlvbi5nZXRDb2xsYXRpb25LZXkodCk7CisgICAgICAgIGludCBrZXlSZXN1bHQgPSBzb3J0S2V5MS5jb21wYXJlVG8oc29ydEtleTIpOworICAgICAgICByZXBvcnRDUmVzdWx0KHMsIHQsIHNvcnRLZXkxLCBzb3J0S2V5MiwgY29tcGFyZVJlc3VsdCwga2V5UmVzdWx0LCBjb21wYXJlUmVzdWx0LCByZXN1bHQpOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHZvaWQgcmVwb3J0Q1Jlc3VsdCggU3RyaW5nIHNvdXJjZSwgU3RyaW5nIHRhcmdldCwgQ29sbGF0aW9uS2V5IHNvdXJjZUtleSwgQ29sbGF0aW9uS2V5IHRhcmdldEtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvbXBhcmVSZXN1bHQsIGludCBrZXlSZXN1bHQsIGludCBpbmNSZXN1bHQsIGludCBleHBlY3RlZFJlc3VsdCApIHsKKyAgICAgICAgaWYgKGV4cGVjdGVkUmVzdWx0IDwgLTEgfHwgZXhwZWN0ZWRSZXN1bHQgPiAxKSB7CisgICAgICAgICAgICBlcnJsbigiKioqKiogaW52YWxpZCBjYWxsIHRvIHJlcG9ydENSZXN1bHQgKioqKiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYm9vbGVhbiBvazEgPSAoY29tcGFyZVJlc3VsdCA9PSBleHBlY3RlZFJlc3VsdCk7CisgICAgICAgIGJvb2xlYW4gb2syID0gKGtleVJlc3VsdCA9PSBleHBlY3RlZFJlc3VsdCk7CisgICAgICAgIGJvb2xlYW4gb2szID0gKGluY1Jlc3VsdCA9PSBleHBlY3RlZFJlc3VsdCk7CisKKyAgICAgICAgaWYgKG9rMSAmJiBvazIgJiYgb2szICYmICFpc1ZlcmJvc2UoKSkgeworICAgICAgICAgICAgcmV0dXJuOyAgICAKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFN0cmluZyBtc2cxID0gb2sxPyAiT2s6IGNvbXBhcmUoXCIiIDogIkZBSUw6IGNvbXBhcmUoXCIiOworICAgICAgICAgICAgU3RyaW5nIG1zZzIgPSAiXCIsIFwiIjsKKyAgICAgICAgICAgIFN0cmluZyBtc2czID0gIlwiKSByZXR1cm5lZCAiOworICAgICAgICAgICAgU3RyaW5nIG1zZzQgPSAiOyBleHBlY3RlZCAiOworICAgICAgICAgICAgCisgICAgICAgICAgICBTdHJpbmcgc0V4cGVjdCA9IG5ldyBTdHJpbmcoIiIpOworICAgICAgICAgICAgU3RyaW5nIHNSZXN1bHQgPSBuZXcgU3RyaW5nKCIiKTsKKyAgICAgICAgICAgIHNSZXN1bHQgPSBhcHBlbmRDb21wYXJlUmVzdWx0KGNvbXBhcmVSZXN1bHQsIHNSZXN1bHQpOworICAgICAgICAgICAgc0V4cGVjdCA9IGFwcGVuZENvbXBhcmVSZXN1bHQoZXhwZWN0ZWRSZXN1bHQsIHNFeHBlY3QpOworICAgICAgICAgICAgaWYgKG9rMSkgeworICAgICAgICAgICAgICAgIGxvZ2xuKG1zZzEgKyBzb3VyY2UgKyBtc2cyICsgdGFyZ2V0ICsgbXNnMyArIHNSZXN1bHQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBlcnJsbihtc2cxICsgc291cmNlICsgbXNnMiArIHRhcmdldCArIG1zZzMgKyBzUmVzdWx0ICsgbXNnNCArIHNFeHBlY3QpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBtc2cxID0gb2syID8gIk9rOiBrZXkoXCIiIDogIkZBSUw6IGtleShcIiI7CisgICAgICAgICAgICBtc2cyID0gIlwiKS5jb21wYXJlVG8oa2V5KFwiIjsKKyAgICAgICAgICAgIG1zZzMgPSAiXCIpKSByZXR1cm5lZCAiOworICAgICAgICAgICAgc1Jlc3VsdCA9IGFwcGVuZENvbXBhcmVSZXN1bHQoa2V5UmVzdWx0LCBzUmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChvazIpIHsKKyAgICAgICAgICAgICAgICBsb2dsbihtc2cxICsgc291cmNlICsgbXNnMiArIHRhcmdldCArIG1zZzMgKyBzUmVzdWx0KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZXJybG4obXNnMSArIHNvdXJjZSArIG1zZzIgKyB0YXJnZXQgKyBtc2czICsgc1Jlc3VsdCArIG1zZzQgKyBzRXhwZWN0KTsKKyAgICAgICAgICAgICAgICBtc2cxID0gIiAgIjsKKyAgICAgICAgICAgICAgICBtc2cyID0gIiB2cy4gIjsKKyAgICAgICAgICAgICAgICBlcnJsbihtc2cxICsgcHJldHRpZnkoc291cmNlS2V5KSArIG1zZzIgKyBwcmV0dGlmeSh0YXJnZXRLZXkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgbXNnMSA9IG9rMyA/ICJPazogaW5jQ29tcGFyZShcIiIgOiAiRkFJTDogaW5jQ29tcGFyZShcIiI7CisgICAgICAgICAgICBtc2cyID0gIlwiLCBcIiI7CisgICAgICAgICAgICBtc2czID0gIlwiKSByZXR1cm5lZCAiOworCisgICAgICAgICAgICBzUmVzdWx0ID0gYXBwZW5kQ29tcGFyZVJlc3VsdChpbmNSZXN1bHQsIHNSZXN1bHQpOworCisgICAgICAgICAgICBpZiAob2szKSB7CisgICAgICAgICAgICAgICAgbG9nbG4obXNnMSArIHNvdXJjZSArIG1zZzIgKyB0YXJnZXQgKyBtc2czICsgc1Jlc3VsdCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGVycmxuKG1zZzEgKyBzb3VyY2UgKyBtc2cyICsgdGFyZ2V0ICsgbXNnMyArIHNSZXN1bHQgKyBtc2c0ICsgc0V4cGVjdCk7CisgICAgICAgICAgICB9ICAgICAgICAgICAgICAgIAorICAgICAgICB9CisgICAgfQorICAgIAorICAgIHByaXZhdGUgU3RyaW5nIGFwcGVuZENvbXBhcmVSZXN1bHQoaW50IHJlc3VsdCwgU3RyaW5nIHRhcmdldCl7CisgICAgICAgIGlmIChyZXN1bHQgPT0gLTEpIHsKKyAgICAgICAgICAgIHRhcmdldCArPSAiTEVTUyI7CisgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IDApIHsKKyAgICAgICAgICAgIHRhcmdldCArPSAiRVFVQUwiOworICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSAxKSB7CisgICAgICAgICAgICB0YXJnZXQgKz0gIkdSRUFURVIiOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgU3RyaW5nIGh1aCA9ICI/IjsKKyAgICAgICAgICAgIHRhcmdldCArPSBodWggKyByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRhcmdldDsKKyAgICB9CisgICAgCisgICAgU3RyaW5nIHByZXR0aWZ5KENvbGxhdGlvbktleSBzb3VyY2VLZXkpIHsKKyAgICAgICAgaW50IGk7CisgICAgICAgIGJ5dGVbXSBieXRlcz0gc291cmNlS2V5LnRvQnl0ZUFycmF5KCk7CisgICAgICAgIFN0cmluZyB0YXJnZXQgPSAiWyI7CisgICAgCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgdGFyZ2V0ICs9IEludGVnZXIudG9IZXhTdHJpbmcoYnl0ZXNbaV0pOworICAgICAgICAgICAgdGFyZ2V0ICs9ICIgIjsKKyAgICAgICAgfQorICAgICAgICB0YXJnZXQgKz0gIl0iOworICAgICAgICByZXR1cm4gdGFyZ2V0OworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9jb2xsYXRvci9Db2xsYXRpb25UZXN0LmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY29sbGF0b3IvQ29sbGF0aW9uVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzNTU2MWEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY29sbGF0b3IvQ29sbGF0aW9uVGVzdC5qYXZhCkBAIC0wLDAgKzEsMzIwIEBACisvKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NvbGxhdG9yL0NvbGxhdGlvblRlc3QuamF2YSx2ICQKKyAqICREYXRlOiAyMDAyLzEwLzA4IDIxOjUyOjIzICQKKyAqICRSZXZpc2lvbjogMS43ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0LmNvbGxhdG9yOworCitpbXBvcnQgY29tLmlibS5pY3UuZGV2LnRlc3QuTW9kdWxlVGVzdDsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0LlJ1bGVCYXNlZENvbGxhdG9yOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuQ29sbGF0b3I7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC5Db2xsYXRpb25LZXk7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC5VVEYxNjsKK2ltcG9ydCBjb20uaWJtLmljdS5sYW5nLlVDaGFyYWN0ZXI7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5VdGlsaXR5OworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuTG9jYWxlVXRpbGl0eTsKKworaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKKworcHVibGljIGNsYXNzIENvbGxhdGlvblRlc3QgZXh0ZW5kcyBNb2R1bGVUZXN0IAoreworICAgIC8vIHB1YmxpYyBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiAKKyAgICB7CisgICAgICAgIG5ldyBDb2xsYXRpb25UZXN0KCkucnVuKGFyZ3MpOworICAgICAgICAvKiBDb2xsYXRpb25UZXN0IHRlc3QgPSBuZXcgQ29sbGF0aW9uVGVzdCgpOworICAgICAgICBpZiAodGVzdC52YWxpZGF0ZSgpKSB7CisgICAgICAgICAgICB0ZXN0LlRlc3RDSWdub3JhYmxlQ29udHJhY3Rpb24oKTsKKyAgICAgICAgfSovCisgICAgfQorCisgICAgcHVibGljIENvbGxhdGlvblRlc3QoKSB7CisgICAgICAgIHN1cGVyKCJwcm9jZXNzTW9kdWxlcyIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHByb2Nlc3NNb2R1bGVzKCkgeworICAgICAgICB3aGlsZSAobmV4dFNldHRpbmdzKCkpIHsKKyAgICAgICAgICAgIHByb2Nlc3NUZXN0KCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLy8gcHJpdmF0ZSBkYXRhIG1lbWJlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICBwcml2YXRlIFN0cmluZyBtX3NlcXVlbmNlXzsKKyAgICBwcml2YXRlIGludCBtX3NlcXVlbmNlSW5kZXhfOworICAgIHByaXZhdGUgU3RyaW5nIG1fc291cmNlXzsKKyAgICBwcml2YXRlIFN0cmluZ0J1ZmZlciBtX3RhcmdldF8gPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgcHJpdmF0ZSBpbnQgbV9uZXh0UmVsYXRpb25fOworICAgIHByaXZhdGUgaW50IG1fcmVsYXRpb25fOworICAgIAorICAgIC8vIHByaXZhdGUgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgcHJpdmF0ZSB2b2lkIHByb2Nlc3NUZXN0KCkgeworICAgICAgICBSdWxlQmFzZWRDb2xsYXRvciBjb2wgPSBudWxsOworICAgICAgICAvLyBvayBpIGhhdmUgdG8gYmUgY2FyZWZ1bCBoZXJlIHNpbmNlIGl0IHNlZW1zIGxpa2Ugd2UgY2FuIGhhdmUKKyAgICAgICAgLy8gbXVsdGlwbGUgbG9jYWxlcyBmb3IgZWFjaCB0ZXN0IAorICAgICAgICBTdHJpbmcgbG9jYWxlID0gc2V0dGluZ3MuZ2V0U3RyaW5nKCJUZXN0TG9jYWxlIik7CisgICAgICAgIGlmIChsb2NhbGUgIT0gbnVsbCkgeworICAgICAgICAgICAgLy8gdGhpcyBpcyBhIGNhc2Ugd2hlcmUgd2UgaGF2ZSBsb2NhbGUgCisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIExvY2FsZSBsID0gTG9jYWxlVXRpbGl0eS5nZXRMb2NhbGVGcm9tTmFtZShsb2NhbGUpOworICAgICAgICAgICAgICAgIGNvbCA9IChSdWxlQmFzZWRDb2xsYXRvcilDb2xsYXRvci5nZXRJbnN0YW5jZShsKTsgICAgICAgICAgCisgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJFcnJvciBjcmVhdGluZyBjb2xsYXRvciBmb3IgbG9jYWxlICIgKyBsb2NhbGUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbG9nbG4oIlRlc3RpbmcgY29sbGF0b3IgZm9yIGxvY2FsZSAlc1xuIiArIGxvY2FsZSk7CisgICAgICAgICAgICBwcm9jZXNzQ29sbGF0b3JUZXN0cyhjb2wpOworICAgICAgICB9CisgICAgICAgIFN0cmluZyBydWxlcyA9IHNldHRpbmdzLmdldFN0cmluZygiUnVsZXMiKTsKKyAgICAgICAgLy8gb2sgaSBoYXZlIHRvIGJlIGNhcmVmdWwgaGVyZSBzaW5jZSBpdCBzZWVtcyBsaWtlIHdlIGNhbiBoYXZlCisgICAgICAgIC8vIG11bHRpcGxlIHJ1bGVzIGZvciBlYWNoIHRlc3QgCisgICAgICAgIGlmIChydWxlcyAhPSBudWxsKSB7CisgICAgICAgICAgICAvLyBoZXJlIHdlIGRlYWwgd2l0aCBydWxlcworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBjb2wgPSBuZXcgUnVsZUJhc2VkQ29sbGF0b3IocnVsZXMpOworICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRXJyb3IgY3JlYXRpbmcgY29sbGF0b3IgZm9yIHJ1bGVzICIgKyBydWxlcyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwcm9jZXNzQ29sbGF0b3JUZXN0cyhjb2wpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHByaXZhdGUgdm9pZCBwcm9jZXNzQ29sbGF0b3JUZXN0cyhSdWxlQmFzZWRDb2xsYXRvciBjb2wpIAorICAgIHsKKyAgICAgICAgCisgICAgICAgIC8vIG9rIGkgaGF2ZSB0byBiZSBjYXJlZnVsIGhlcmUgc2luY2UgaXQgc2VlbXMgbGlrZSB3ZSBjYW4gaGF2ZQorICAgICAgICAvLyBtdWx0aXBsZSBydWxlcyBmb3IgZWFjaCB0ZXN0IAorICAgICAgICBTdHJpbmcgYXJndW1lbnRzID0gc2V0dGluZ3MuZ2V0U3RyaW5nKCJBcmd1bWVudHMiKTsKKyAgICAgICAgaWYgKGFyZ3VtZW50cyAhPSBudWxsKSB7CisgICAgICAgICAgICBwcm9jZXNzQXJndW1lbnRzKGNvbCwgYXJndW1lbnRzKTsKKyAgICAgICAgfQorICAgICAgICBwcm9jZXNzUmVhZHlDb2xsYXRvcihjb2wpOyAgICAgIAorICAgIH0KKyAgICAKKyAgICAvKiogCisgICAgICogUmVhZHMgdGhlIG9wdGlvbnMgc3RyaW5nIGFuZCBzZXRzIGFwcHJvcHJpYXRlIGF0dHJpYnV0ZXMgaW4gY29sbGF0b3IgCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIHByb2Nlc3NBcmd1bWVudHMoUnVsZUJhc2VkQ29sbGF0b3IgY29sLCBTdHJpbmcgYXJndW1lbnQpIHsKKyAgICAgICAgaW50IGkgPSAwOworICAgICAgICB3aGlsZSAoaSA8IGFyZ3VtZW50Lmxlbmd0aCgpKSB7IAorICAgICAgICAgICAgaWYgKCFVQ2hhcmFjdGVyLmlzV2hpdGVzcGFjZShhcmd1bWVudC5jaGFyQXQoaSkpKSB7IAorICAgICAgICAgICAgICAgIC8vIGVhdCB3aGl0ZXNwYWNlCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpICsrOworICAgICAgICB9CisgICAgICAgIHdoaWxlIChpIDwgYXJndW1lbnQubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIC8vIHNraXAgb3BlbmluZyAnWycKKyAgICAgICAgICAgIGlmIChhcmd1bWVudC5jaGFyQXQoaSkgPT0gJ1snKSB7CisgICAgICAgICAgICAgICAgaSArKzsKKyAgICAgICAgICAgIH0gCisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRXJyb3IgaW4gY29sbGF0aW9uIGFyZ3VtZW50cywgbWlzc2luZyBbIik7IC8vIG5vIG9wZW5pbmcgJ1snCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpbnQgdmFsdWUgPSBhcmd1bWVudC5pbmRleE9mKCcgJywgaSk7CisgICAgICAgICAgICBTdHJpbmcgb3B0aW9uID0gYXJndW1lbnQuc3Vic3RyaW5nKGksIHZhbHVlKTsKKyAgICAgICAgICAgIGkgPSBhcmd1bWVudC5pbmRleE9mKCddJywgdmFsdWUpOworICAgICAgICAgICAgU3RyaW5nIG9wdGlvbnZhbHVlID0gYXJndW1lbnQuc3Vic3RyaW5nKHZhbHVlICsgMSwgaSk7CisgICAgICAgICAgICBpICsrOworICAgICAgICAgICAgLy8gc29tZSBvcHRpb25zIGFyZSBub3QgYWRkZWQgYmVjYXVzZSB0aGV5IGhhdmUgbm8gcHVibGljIGFwaXMgeWV0CisgICAgICAgICAgICAvLyBUT0RPIGFkZCB0aGUgcmVzdCBvZiB0aGUgb3B0aW9ucworICAgICAgICAgICAgaWYgKG9wdGlvbi5lcXVhbHNJZ25vcmVDYXNlKCJhbHRlcm5hdGUiKSkgeworICAgICAgICAgICAgICAgIGlmIChvcHRpb252YWx1ZS5lcXVhbHNJZ25vcmVDYXNlKCJub24taWdub3JhYmxlIikpIHsKKyAgICAgICAgICAgICAgICAgICAgY29sLnNldEFsdGVybmF0ZUhhbmRsaW5nU2hpZnRlZChmYWxzZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBjb2wuc2V0QWx0ZXJuYXRlSGFuZGxpbmdTaGlmdGVkKHRydWUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKG9wdGlvbi5lcXVhbHMoInN0cmVuZ3RoIikpIHsKKyAgICAgICAgICAgICAgICBpZiAob3B0aW9udmFsdWUuZXF1YWxzSWdub3JlQ2FzZSgiMSIpKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbC5zZXRTdHJlbmd0aChDb2xsYXRvci5QUklNQVJZKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAob3B0aW9udmFsdWUuZXF1YWxzSWdub3JlQ2FzZSgiMiIpKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbC5zZXRTdHJlbmd0aChDb2xsYXRvci5TRUNPTkRBUlkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChvcHRpb252YWx1ZS5lcXVhbHNJZ25vcmVDYXNlKCIzIikpIHsKKyAgICAgICAgICAgICAgICAgICAgY29sLnNldFN0cmVuZ3RoKENvbGxhdG9yLlRFUlRJQVJZKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAob3B0aW9udmFsdWUuZXF1YWxzSWdub3JlQ2FzZSgiNCIpKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbC5zZXRTdHJlbmd0aChDb2xsYXRvci5RVUFURVJOQVJZKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgcHJvY2Vzc1JlYWR5Q29sbGF0b3IoUnVsZUJhc2VkQ29sbGF0b3IgY29sKSB7CisgICAgICAgd2hpbGUgKG5leHRDYXNlKCkpIHsKKyAgICAgICAgICAgIC8vIHRoaXMgaXMgdmVyeSBzYWQsIGl0IGlzIGFsaXR0bGUgYXdrd2FyZCB0byB3cml0ZSB0aGUgYyByYiAKKyAgICAgICAgICAgIC8vIHRvIGhhdmUgYW4gb2JqZWN0IGFycmF5IG9mIGFuIG9iamVjdCBhcnJheSBvZiBhIDEgZWxlbWVudCAKKyAgICAgICAgICAgIC8vIHN0cmluZyBhcnJheS4gc28gbm93IHdlIGhhdmUgYW4gb2JqZWN0IGFycmF5IG9mIGEgMSBlbGVtZW50IAorICAgICAgICAgICAgLy8gb2JqZWN0IGFycmF5IG9mIHN0cmluZyBhcnJheXMuCisgICAgICAgICAgICBTdHJpbmcgc2VxdWVuY2VbXSA9IHRlc3RjYXNlLmdldFN0cmluZ0FycmF5KCJzZXF1ZW5jZSIpOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzZXF1ZW5jZS5sZW5ndGg7IGkgKyspIHsKKyAgICAgICAgICAgICAgICBwcm9jZXNzU2VxdWVuY2UoY29sLCBzZXF1ZW5jZVtpXSk7CisgICAgICAgICAgICB9CisgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHZvaWQgcHJvY2Vzc1NlcXVlbmNlKFJ1bGVCYXNlZENvbGxhdG9yIGNvbCwgU3RyaW5nIHNlcXVlbmNlKSB7CisgICAgICAgIC8vIFRPRE86IGhhdmUgYSBzbWFydGVyIHRlc3RlciB0aGF0IHJlbWVtYmVycyB0aGUgc2VxdWVuY2UgYW5kIGVuc3VyZXMgCisgICAgICAgIC8vIHRoYXQgdGhlIGNvbXBsZXRlIHNlcXVlbmNlIGlzIGluIG9yZGVyLiBUaGF0IGlzIHdoeSBJIGhhdmUgbWFkZSBhIAorICAgICAgICAvLyBjb25zdHJhaW50IGluIHRoZSBzZXF1ZW5jZSBmb3JtYXQuICAgICAKKyAgICAgICAgbV9zZXF1ZW5jZV8gPSBzZXF1ZW5jZTsKKyAgICAgICAgbV9zZXF1ZW5jZUluZGV4XyA9IDA7CisgICAgICAgIG1fbmV4dFJlbGF0aW9uXyA9IC0xOworICAgICAgICBtX3RhcmdldF8uZGVsZXRlKDAsIG1fdGFyZ2V0Xy5sZW5ndGgoKSk7CisgICAgICAgIFZlY3RvciB2ZWN0b3IgPSBuZXcgVmVjdG9yKCk7CisgICAgICAgIGludCBsYXN0c21hbGxlcnRoYW5pbmRleCA9IDA7CisgICAgICAgIHdoaWxlIChnZXROZXh0SW5TZXF1ZW5jZSgpKSB7ICAgIAorICAgICAgICAgICAgU3RyaW5nIHRhcmdldCA9IG1fdGFyZ2V0Xy50b1N0cmluZygpOworICAgICAgICAgICAgZG9UZXN0KGNvbCwgbV9zb3VyY2VfLCB0YXJnZXQsIG1fcmVsYXRpb25fKTsKKyAgICAgICAgICAgIGludCB2c2l6ZSA9IHZlY3Rvci5zaXplKCk7CisgICAgICAgICAgICBmb3IgKGludCBpID0gdnNpemUgLSAxOyBpID49IDA7IGkgLS0pIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgc291cmNlID0gKFN0cmluZyl2ZWN0b3IuZWxlbWVudEF0KGkpOyAKKyAgICAgICAgICAgICAgICBpZiAoaSA+IGxhc3RzbWFsbGVydGhhbmluZGV4KSB7ICAKKyAgICAgICAgICAgICAgICAgICAgZG9UZXN0KGNvbCwgc291cmNlLCB0YXJnZXQsIG1fcmVsYXRpb25fKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGRvVGVzdChjb2wsIHNvdXJjZSwgdGFyZ2V0LCAtMSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgdmVjdG9yLmFkZEVsZW1lbnQodGFyZ2V0KTsKKyAgICAgICAgICAgIGlmIChtX3JlbGF0aW9uXyA8IDApIHsKKyAgICAgICAgICAgICAgICBsYXN0c21hbGxlcnRoYW5pbmRleCA9IHZzaXplIC0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKiogCisgICAgICogUGFyc2VzIHRoZSBzZXF1ZW5jZSB0byBiZSB0ZXN0ZWQgCisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIGdldE5leHRJblNlcXVlbmNlKCkgeworICAgICAgICBpZiAobV9zZXF1ZW5jZUluZGV4XyA+PSBtX3NlcXVlbmNlXy5sZW5ndGgoKSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29sZWFuIHF1b3RlZCA9IGZhbHNlOworICAgICAgICBib29sZWFuIHF1b3RlZHNpbmdsZSA9IGZhbHNlOworICAgICAgICBib29sZWFuIGRvbmUgPSBmYWxzZTsKKyAgICAgICAgaW50IGkgPSBtX3NlcXVlbmNlSW5kZXhfOworICAgICAgICBpbnQgb2Zmc2V0ID0gMDsKKyAgICAgICAgbV9zb3VyY2VfID0gbV90YXJnZXRfLnRvU3RyaW5nKCk7CisgICAgICAgIG1fcmVsYXRpb25fID0gbV9uZXh0UmVsYXRpb25fOworICAgICAgICBtX3RhcmdldF8uZGVsZXRlKDAsIG1fdGFyZ2V0Xy5sZW5ndGgoKSk7CisgICAgICAgIHdoaWxlIChpIDwgbV9zZXF1ZW5jZV8ubGVuZ3RoKCkgJiYgIWRvbmUpIHsKKyAgICAgICAgICAgIGludCBjaCA9IFVURjE2LmNoYXJBdChtX3NlcXVlbmNlXywgaSk7CisgICAgICAgICAgICBpZiAoVUNoYXJhY3Rlci5pc1N1cHBsZW1lbnRhcnkoY2gpKSB7CisgICAgICAgICAgICAgICAgaSArPSAyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaSArKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghcXVvdGVkKSB7CisgICAgICAgICAgICAgICAgaWYgKFVDaGFyYWN0ZXIuaXNXaGl0ZXNwYWNlKGNoKSkgeworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc3dpdGNoIChjaCkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIDB4MDAzQyA6IC8vIDwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fbmV4dFJlbGF0aW9uXyA9IC0xOworICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAweDAwM0QgOiAvLyA9IAorICAgICAgICAgICAgICAgICAgICAgICAgbV9uZXh0UmVsYXRpb25fID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMHgwMDNFIDogLy8gPgorICAgICAgICAgICAgICAgICAgICAgICAgbV9uZXh0UmVsYXRpb25fID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMHgwMDI3IDogLy8gJyB2ZXJ5IGJhc2ljIHF1b3RpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHF1b3RlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBxdW90ZWRzaW5nbGUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDB4MDA1YyA6IC8vIFwgc2luZ2xlIHF1b3RlCisgICAgICAgICAgICAgICAgICAgICAgICBxdW90ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgcXVvdGVkc2luZ2xlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgVVRGMTYuaW5zZXJ0KG1fdGFyZ2V0Xywgb2Zmc2V0LCBjaCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVUNoYXJhY3Rlci5pc1N1cHBsZW1lbnRhcnkoY2gpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDI7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKys7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IAorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgIGlmIChjaCA9PSAweDAwMjcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcXVvdGVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgfSAKKyAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgVVRGMTYuaW5zZXJ0KG1fdGFyZ2V0Xywgb2Zmc2V0LCBjaCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChVQ2hhcmFjdGVyLmlzU3VwcGxlbWVudGFyeShjaCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSAyOworICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICsrOworICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgIGlmIChxdW90ZWRzaW5nbGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcXVvdGVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgaWYgKHF1b3RlZCA9PSB0cnVlKSB7CisgICAgICAgICAgICAgIGVycmxuKCJRdW90ZSBpbiBzZXF1ZW5jZSBub3QgY2xvc2VkISIpOworICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgCisgICAgICAgICAgbV9zZXF1ZW5jZUluZGV4XyA9IGk7CisgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgdm9pZCBkb1Rlc3RWYXJpYW50KFJ1bGVCYXNlZENvbGxhdG9yIG15Q29sbGF0aW9uLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgc291cmNlLCBTdHJpbmcgdGFyZ2V0LCBpbnQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgaW50IGNvbXBhcmVSZXN1bHQgID0gbXlDb2xsYXRpb24uY29tcGFyZShzb3VyY2UsIHRhcmdldCk7CisgICAgICAgIGlmIChjb21wYXJlUmVzdWx0ICE9IHJlc3VsdCkgeworICAgICAgICAgICAgZXJybG4oIkNvbXBhcmluZyBcIiIgKyBVdGlsaXR5LmhleChzb3VyY2UpICsgIlwiIHdpdGggXCIiIAorICAgICAgICAgICAgICAgICAgKyBVdGlsaXR5LmhleCh0YXJnZXQpICsgIlwiIGV4cGVjdGVkICIgKyByZXN1bHQgCisgICAgICAgICAgICAgICAgICArICIgYnV0IGdvdCAiICsgY29tcGFyZVJlc3VsdCk7CisgICAgICAgIH0KKyAgICAgICAgQ29sbGF0aW9uS2V5IHNzayA9IG15Q29sbGF0aW9uLmdldENvbGxhdGlvbktleShzb3VyY2UpOworICAgICAgICBDb2xsYXRpb25LZXkgdHNrID0gbXlDb2xsYXRpb24uZ2V0Q29sbGF0aW9uS2V5KHRhcmdldCk7CisgICAgICAgIGNvbXBhcmVSZXN1bHQgPSBzc2suY29tcGFyZVRvKHRzayk7CisgICAgICAgIGlmIChjb21wYXJlUmVzdWx0ICE9IHJlc3VsdCkgeworICAgICAgICAgICAgZXJybG4oIkNvbXBhcmluZyBzb3J0a2V5cyBvZiBcIiIgKyBVdGlsaXR5LmhleChzb3VyY2UpICsgIlwiIHdpdGggXCIiIAorICAgICAgICAgICAgICAgICAgKyBVdGlsaXR5LmhleCh0YXJnZXQpICsgIlwiIGV4cGVjdGVkICIgKyByZXN1bHQgCisgICAgICAgICAgICAgICAgICArICIgYnV0IGdvdCAiICsgY29tcGFyZVJlc3VsdCk7CisgICAgICAgIH0gCisgICAgfQorICAgIAorICAgIHByaXZhdGUgdm9pZCBkb1Rlc3QoUnVsZUJhc2VkQ29sbGF0b3IgbXlDb2xsYXRpb24sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBzb3VyY2UsIFN0cmluZyB0YXJnZXQsIGludCByZXN1bHQpCisgICAgeworICAgICAgICBkb1Rlc3RWYXJpYW50KG15Q29sbGF0aW9uLCBzb3VyY2UsIHRhcmdldCwgcmVzdWx0KTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSAwKSB7CisgICAgICAgICAgICBkb1Rlc3RWYXJpYW50KG15Q29sbGF0aW9uLCB0YXJnZXQsIHNvdXJjZSwgcmVzdWx0KTsgICAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChyZXN1bHQgPCAwKSB7CisgICAgICAgICAgICBkb1Rlc3RWYXJpYW50KG15Q29sbGF0aW9uLCB0YXJnZXQsIHNvdXJjZSwgMSk7IAorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZG9UZXN0VmFyaWFudChteUNvbGxhdGlvbiwgdGFyZ2V0LCBzb3VyY2UsIC0xKTsgCisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY29sbGF0b3IvQ29sbGF0aW9uVGVzdERhdGEuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9jb2xsYXRvci9Db2xsYXRpb25UZXN0RGF0YS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxZjc4ODYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY29sbGF0b3IvQ29sbGF0aW9uVGVzdERhdGEuamF2YQpAQCAtMCwwICsxLDQ3OSBAQAorLyoqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9jb2xsYXRvci9BdHRpYy9Db2xsYXRpb25UZXN0RGF0YS5qYXZhLHYgJAorICogJERhdGU6IDIwMDIvMDkvMDQgMDE6Mzc6MjYgJAorICogJFJldmlzaW9uOiAxLjUgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3QuY29sbGF0b3I7CisKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLklDVUxpc3RSZXNvdXJjZUJ1bmRsZTsKKworcHVibGljIGNsYXNzIENvbGxhdGlvblRlc3REYXRhIGV4dGVuZHMgSUNVTGlzdFJlc291cmNlQnVuZGxlIHsKKworICAgIHB1YmxpYyBDb2xsYXRpb25UZXN0RGF0YSgpIHsKKyAgICAgICAgICBzdXBlci5jb250ZW50cyA9IGRhdGE7CisgICAgfQorICAgIHN0YXRpYyBmaW5hbCBPYmplY3RbXVtdIGRhdGEgPSBuZXcgT2JqZWN0W11bXSB7IAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgIkluZm8iLAorICAgICAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W11bXXsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGVzY3JpcHRpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGlzIGlzIGxvY2FsZSBiYXNlZCBjb2xsYXRpb24gdGVzdCBmb3IgRGFuaXNoIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhlYWRlcnMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBTdHJpbmdbXSB7IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VxdWVuY2UiLAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxvbmdEZXNjcmlwdGlvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBmb2xsb3dpbmcgZW50cmllcyBhcmUgc2VwYXJhdGUgdGVzdHMgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbnRhaW5pbmcgdGVzdCBkYXRhIGZvciB2YXJpb3VzIGxvY2FsZXMuIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVhY2ggZW50cnkgaGFzIHRoZSBmb2xsb3dpbmcgZmllbGRzOiBUZXN0IiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxvY2FsZSAtIHRoZSBsb2NhbGUgdGhhdCB3ZSBzaG91bGQgaW5zdGFuIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRpYXRlIGNvbGxhdG9yIHdpdGguQXJndW1lbnRTdHJlbmd0aCAtIHN0IiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlbmd0aCBvZiBjb2xsYXRvclRlc3REYXRhIC0gc2V0IG9mIHRlc3QgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhc2VzLCB3aGljaCBhcmUgc2VxdWVuY2VzIG9mIHN0cmluZ3MgdGhhIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInQgd2lsbCBiZSBwYXJzZWRTZXF1ZW5jZXMgbXVzdCBub3QgY2hhbmdlIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiB0aGUgc2lnbiBvZiByZWxhdGlvbiwgaS5lLiB3ZSBjYW4gb25seSBoIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImF2ZSA8IGFuZCA9IG9yPiBhbmQgPSBpbiBzaW5nbGUgc2VxdWVuY2UuIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBDYW5ub3QgbWl4IDwgYW5kID4gaW4gdGhlIHNhbWUgc2VxdWVuY2UuIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBXaGl0ZXNwYWNlIGlzaXMgaWdub3JlZCB1bmxlc3MgcXVvdGVkLiIsCisgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiVGVzdERhdGEiLAorICAgICAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W11bXXsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGVzdENJZ25vcmFibGVDb250cmFjdGlvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdW117CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDYXNlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W117CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgU3RyaW5nW10geyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuaml2YT1uXHVEODM0XHVERDY1amkiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YT1uXHVEODM0XHVERDc5aml2YT0iICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuXHUwMDAwXHUwMDAwXHUwMDAwamkiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YT1uXHUwMDAwaml2YT1uXHVEODAwIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaml2YT1uXHVGRkZFaml2YSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGp1YmF2PWxcdTAwMDBqdWJhdj1sIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVEODM0XHVERDc5anViYXY9bFx1MDAwMCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MDAwMFx1MDAwMGp1YmF2PWxcdUQ4MDAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJqdWJhdj1sXHVGRkZFanViYXY9IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJManViYXY9TFx1MDAwMGp1YmF2PUwiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdUQ4MzRcdURENzlqdWJhdj1MXHUwMDAwIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUwMDAwXHUwMDAwanViYXY9TFx1RDgwMCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImp1YmF2PUxcdUZGRkVqdWJhdiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW5mbyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W11bXXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEZXNjcmlwdGlvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDaGVja3Mgd2hldGhlciBjb21wbGV0ZWx5IiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgaWdub3JhYmxlIGNvZGUgcG9pbnRzIGFyIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlIHNraXBwZWQgaW4gY29udHJhY3Rpb25zIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNldHRpbmdzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W11bXXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRlc3RMb2NhbGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNoIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXVtdeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUnVsZXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiYgTCA8IGxqLCBMaiA8PDwgTEomICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk4gPCBuaiwgTmogPDw8IE5KICIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGVzdENJZ25vcmFibGVQcmVmaXgiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXVtdeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2FzZXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFN0cmluZ1tdIHsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUzMEExXHUzMEZDPSBcdTMwQTFcdURCNDAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdURDMzBcdTMwRkM9IFx1MzBBMVx1RDgwMCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MzBGQz0gXHUzMEExXHVGRkZFXHUzMEZDIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPSBcdTMwQTFcdUQ4MzRcdURENzlcdTMwRkMiIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI9IFx1MzBBMVx1MDAwMFx1MDAwMFx1MDAwMCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MzBGQz0gXHUzMEExXHUwMDAwXHUzMEZDIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPSBcdTMwQTFcdTMwRkM9IFx1MzBBMSIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MDAwMFx1MDU5QVx1MzBGQz0gXHUzMEExIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUzMEZDIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW5mbyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W11bXXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEZXNjcmlwdGlvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDaGVja3Mgd2hldGhlciBjb21wbGV0ZWx5IiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgaWdub3JhYmxlIGNvZGUgcG9pbnRzIGFyIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlIHNraXBwZWQgaW4gcHJlZml4IHByb2NlIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzc2luZy4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2V0dGluZ3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXVtdeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGVzdExvY2FsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiamEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRlc3ROU2hpZnRlZElnbm9yYWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdW117CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDYXNlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W117CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgU3RyaW5nW10geyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhJyAnYjxBJyAnYjxhJyAnXHUwMzAxIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYjxBJyAnXHUwMzAxYjxhJyAnXHUwMzAwIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYjxBJyAnXHUwMzAwYjxhX2I8QV9iIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGFfXHUwMzAxYjxBX1x1MDMwMWI8IiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYV9cdTAzMDBiPEFfXHUwMzAwYjxhIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUwMzAxYjxBXHUwMzAxYjxhXHUwMzAwIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYjxBXHUwMzAwYjwiLAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW5mbyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W11bXXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEZXNjcmlwdGlvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOZXcgVUNBIHN0YXRlcyB0aGF0IHByaW1hIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyeSBpZ25vcmFibGVzIHNob3VsZCBiZSBjIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvbXBsZXRlbHkgaWdub3JhYmxlIHdoZW4gIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb2xsb3dpbmcgYSBzaGlmdGVkIGNvZGUgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwb2ludC4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2V0dGluZ3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXVtdeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQXJndW1lbnRzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJbYWx0ZXJuYXRlIG5vbi1pZ25vcmEiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJibGVdW3N0cmVuZ3RoIDNdIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRlc3RMb2NhbGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJvb3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRlc3RTYWZlU3Vycm9nYXRlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdW117CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDYXNlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W117CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgU3RyaW5nW10geyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhPHhcdUQ4MDBcdURDMDBiIiwKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkluZm8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdW117CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGVzY3JpcHRpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSXQgdHVybmVkIG91dCB0aGF0IHN1cnJvZyIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXRlcyB3ZXJlIG5vdCBza2lwcGVkIHBybyIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGVybHkgd2hlbiBpdGVyYXRpbmcgYmFjayIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2FyZHMgaWYgdGhleSB3ZXJlIGluIHRoZSIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIG1pZGRsZSBvZiBhIGNvbnRyYWN0aW9uLiIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIFRoaXMgdGVzdCBhc3N1cmVzIHRoYXQgdCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGlzIGlzIGZpeGVkLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTZXR0aW5ncyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W117CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdW117CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSdWxlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJmEgPCB4XHVEODAwXHVEQzAwYiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgdGVzdCBkb2VzIG5vdCBwYXNzIGluIEphdmEgeWV0CisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRlc3RTaGlmdGVkSWdub3JhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W11bXXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhc2VzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W117CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBTdHJpbmdbXSB7IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImEnICdiPSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgImEnICdcdTAzMDBiPSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgImEnICdcdTAzMDFiPCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgImFfYj0iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICJhX1x1MDMwMGI9IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiYV9cdTAzMDFiPCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIkEnICdiPSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIkEnICdcdTAzMDBiPSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIkEnICdcdTAzMDFiPCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIkFfYj0iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICJBX1x1MDMwMGI9IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiQV9cdTAzMDFiPCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgImFcdTAzMDFiPCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIkFcdTAzMDFiPCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgImFcdTAzMDBiPCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIkFcdTAzMDBiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbmZvIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXVtdeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRlc2NyaXB0aW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5ldyBVQ0Egc3RhdGVzIHRoYXQgcHJpbWEiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJ5IGlnbm9yYWJsZXMgc2hvdWxkIGJlIGMiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9tcGxldGVseSBpZ25vcmFibGUgd2hlbiAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvbGxvd2luZyBhIHNoaWZ0ZWQgY29kZSAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBvaW50LiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTZXR0aW5ncyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W117CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdW117CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBcmd1bWVudHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlthbHRlcm5hdGUgc2hpZnRlZF1bcyIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRyZW5ndGggNF0iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGVzdExvY2FsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicm9vdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiZGFfVGVzdFByaW1hcnkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUZXN0UHJpbWFyeSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdW117CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDYXNlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W117CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgU3RyaW5nW10geyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMdmk9THdpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMXHUwMEU0dmk8TFx1MDBGNndpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMXHUwMEZDYmVjaz1MeWJlY2siLAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW5mbyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W11bXXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEZXNjcmlwdGlvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGlzIHRlc3QgZ29lcyB0aHJvdWdoIHByIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbWFyeSBzdHJlbmd0aCBjYXNlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTZXR0aW5ncyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W117CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdW117CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBcmd1bWVudHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIltzdHJlbmd0aCAxXSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUZXN0TG9jYWxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkYSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiZGFfVGVzdFRlcnRpYXJ5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGVzdFRlcnRpYXJ5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W11bXXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhc2VzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W117CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBTdHJpbmdbXSB7IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkx1YzxsdWNrIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsdWNrPExcdTAwRkNiZWNrIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMXHUwMEZDYmVjaz5seWJlY2siLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxcdTAwRTR2aTxMXHUwMEY2d2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxcdTAwRjZ3dzxtYXN0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBL1M8QU5EUkU8QU5EUlx1MDBDOTwiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBTkRSRUFTPEFTPENBPFx1MDBDN0EiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8Q0I8XHUwMEM3QzxELlMuQi48REEiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8REI8RFNCPERTQzxcdTAwRDBBPFx1MDBEMCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkM8RUtTVFJBX0FSQkVKREU8RUtTVCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJBQlVEMDxIXHUwMEQ4U1Q8SEFBRyIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxIXHUwMEM1TkRCT0c8SEFBTkRWXHUwMEM2IiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUktTQkFOS0VOPGthcmw8S2FybDwnIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTklFTFMgSlx1MDBEOFJHRU4nPE5JIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRUxTLUpcdTAwRDhSR0VOPE5JRUxTIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRU48J1JcdTAwQzlFLCBBJzwnUkVFIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCBCJzwnUlx1MDBDOUUsIEwnPCdSIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRUUsIFYnPCdTQ0hZVFQsIEInPCdTIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ0hZVFQsIEgnPCdTQ0hcdTAwRENUIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVCwgSCc8J1NDSFlUVCwgTCc8J1NDIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSFx1MDBEQ1RULCBNJzxTUzxcdTAwREYiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8U1NBPCdTVE9SRSBWSUxETU9TRSciICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8U1RPUkVLXHUwMEM2UjA8J1NUT1IiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNIFBFVEVSU0VOJzxTVE9STUxZPFQiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIT1JWQUxEPFRIT1JWQVJEVVI8VEgiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZR0VTRU48XHUwMEZFT1JWQVJcdTAwRDAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVUjwnVkVTVEVSR1x1MDBDNVJELCAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBJzwnVkVTVEVSR0FBUkQsIEEnPCciICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJWRVNURVJHXHUwMEM1UkQsIEInPFx1MDBDNiIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJMRTxcdTAwQzRCTEU8XHUwMEQ4QiIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVSRzxcdTAwRDZCRVJHIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbmRlcmU8Y2hhcXVlPGNoZW1pbjwiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb3RlPGNvdFx1MDBFOTxjXHUwMEY0IiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGU8Y1x1MDBGNHRcdTAwRTk8XHUwMTBEIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidVx1MDEwRFx1MDExM3Q8Q3plY2g8IiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGlcdTAxNjFhPGlyZGlzY2g8bGllIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGxpcmU8bGxhbWE8bFx1MDBGNXVnIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGxcdTAwRjJ6YTxsdVx1MDEwRDxsIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidWNrPExcdTAwRkNiZWNrPGx5ZTxsIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUwMEU0dmk8TFx1MDBGNndlbjxtIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUwMEUwXHUwMTYxdGE8bVx1MDBFRSIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInI8bXluZGlnPE1cdTAwRTRubmVyPCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1cdTAwRjZjaHRlbjxwaVx1MDBGMSIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImE8cGludDxweWxvbjxcdTAxNjFcdTAwRTAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyYW48c2F2b2lyPFx1MDE2MGVyYlx1MDE2QiIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJhPFNpZXRsYTxcdTAxNUJsdWI8cyIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVidGxlPHN5bWJvbDxzXHUwMEU0bSIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRsaWNoPHdhZmZsZTx2ZXJrZWhydCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjx3b29kPHZveDx2XHUwMEU0Z2E8eSIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuPHl1YW48eXVjY2E8XHUwMTdFYSIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImw8XHUwMTdFZW5hPFx1MDE3RGVuXHUwMTEzIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmE8em9vMDxadmllZHJpamE8Wlx1MDBGQyIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJpY2g8enlzazA8XHUwMEU0bmRlciIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImUiLAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW5mbyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W11bXXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEZXNjcmlwdGlvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGlzIHRlc3QgZ29lcyB0aHJvdWdoIHRlIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJydGlhcnkgc3RyZW5ndGggY2FzZXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2V0dGluZ3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXVtdeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQXJndW1lbnRzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJbc3RyZW5ndGggM10iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGVzdExvY2FsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgfSwKKyAgICB9OworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NvbGxhdG9yL0NvbGxhdGlvblRoYWlUZXN0LmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY29sbGF0b3IvQ29sbGF0aW9uVGhhaVRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZmQ4Yjg2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NvbGxhdG9yL0NvbGxhdGlvblRoYWlUZXN0LmphdmEKQEAgLTAsMCArMSwyOTUgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAgICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogJFNvdXJjZTogCisgKiAkRGF0ZTogCisgKiAkUmV2aXNpb246IAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKKy8qKiAKKyAqIFBvcnQgRnJvbTogICBJQ1U0QyB2Mi4xIDogY29sbGF0ZS9Db2xsYXRpb25SZWdyZXNzaW9uVGVzdAorICogU291cmNlIEZpbGU6ICRJQ1U0Q1Jvb3Qvc291cmNlL3Rlc3QvaW50bHRlc3QvcmVnY29sbC5jcHAKKyAqKi8KKyAKK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3QuY29sbGF0b3I7CisKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYudGVzdC4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuKjsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworaW1wb3J0IGphdmEuaW8uKjsKKworcHVibGljIGNsYXNzIENvbGxhdGlvblRoYWlUZXN0IGV4dGVuZHMgVGVzdEZtd2sgeworICAgIAorICAgIGZpbmFsIGludCBNQVhfRkFJTFVSRVNfVE9fU0hPVyA9IDg7CisgICAgCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIG5ldyBDb2xsYXRpb25UaGFpVGVzdCgpLnJ1bihhcmdzKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogT2RkIGNvcm5lciBjb25kaXRpb25zIHRha2VuIGZyb20gIkhvdyB0byBTb3J0IFRoYWkgV2l0aG91dCBSZXdyaXRpbmcgU29ydCIsCisgICAgICogYnkgRG91ZyBDb29wZXIsIGh0dHA6Ly9zZWFzcmMudGgubmV0L3BhcGVyL3RoYWlzb3J0LnppcAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RDb3JuZXJDYXNlcygpIHsKKyAgICAgICAgU3RyaW5nIFRFU1RTW10gPSB7CisgICAgICAgICAgICAvLyBTaG9ydGVyIHdvcmRzIHByZWNlZGUgbG9uZ2VyCisgICAgICAgICAgICAiXHUwZTAxIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjwiLCAgICAiXHUwZTAxXHUwZTAxIiwKKyAgICAKKyAgICAgICAgICAgIC8vIFRvbmUgbWFya3MgYXJlIGNvbnNpZGVyZWQgYWZ0ZXIgbGV0dGVycyAoaS5lLiBhcmUgcHJpbWFyeSBpZ25vcmFibGUpCisgICAgICAgICAgICAiXHUwZTAxXHUwZTMyIiwgICAgICAgICAgICAgICAgICAgICAgICAiPCIsICAgICJcdTBlMDFcdTBlNDlcdTBlMzIiLAorICAgIAorICAgICAgICAgICAgLy8gZGl0dG8gZm9yIG90aGVyIG92ZXItbWFya3MKKyAgICAgICAgICAgICJcdTBlMDFcdTBlMzIiLCAgICAgICAgICAgICAgICAgICAgICAgICI8IiwgICAgIlx1MGUwMVx1MGUzMlx1MGU0YyIsCisgICAgCisgICAgICAgICAgICAvLyBjb21tb25seSB1c2VkIG1hcmstaW4tY29udGV4dCBvcmRlci4KKyAgICAgICAgICAgIC8vIEluIGVmZmVjdCwgbWFya3MgYXJlIHNvcnRlZCBhZnRlciBlYWNoIHN5bGxhYmxlLgorICAgICAgICAgICAgIlx1MGUwMVx1MGUzMlx1MGUwMVx1MGU0OVx1MGUzMiIsICAgIjwiLCAgICAiXHUwZTAxXHUwZTQ4XHUwZTMyXHUwZTAxXHUwZTQ5XHUwZTMyIiwKKyAgICAKKyAgICAgICAgICAgIC8vIEh5cGhlbnMgYW5kIG90aGVyIHB1bmN0dWF0aW9uIGZvbGxvdyB3aGl0ZXNwYWNlIGJ1dCBjb21lIGJlZm9yZSBsZXR0ZXJzCisgICAgICAgICAgICAiXHUwZTAxXHUwZTMyIiwgICAgICAgICAgICAgICAgICAgICAgICAiPCIsICAgICJcdTBlMDFcdTBlMzItIiwKKyAgICAgICAgICAgICJcdTBlMDFcdTBlMzItIiwgICAgICAgICAgICAgICAgICAgICAgICI8IiwgICAgIlx1MGUwMVx1MGUzMlx1MGUwMVx1MGUzMiIsCisgICAgCisgICAgICAgICAgICAvLyBEb3VibGVyIGZvbGxvd3MgYW4gaW5kZW50aWNhbCB3b3JkIHdpdGhvdXQgdGhlIGRvdWJsZXIKKyAgICAgICAgICAgICJcdTBlMDFcdTBlMzIiLCAgICAgICAgICAgICAgICAgICAgICAgICI8IiwgICAgIlx1MGUwMVx1MGUzMlx1MGU0NiIsCisgICAgICAgICAgICAiXHUwZTAxXHUwZTMyXHUwZTQ2IiwgICAgICAgICAgICAgICAgICI8IiwgICAgIlx1MGUwMVx1MGUzMlx1MGUwMVx1MGUzMiIsCisgICAgCisgICAgICAgICAgICAvLyBcdTBlNDUgYWZ0ZXIgZWl0aGVyIFx1MGUyNCBvciBcdTBlMjYgaXMgdHJlYXRlZCBhcyBhIHNpbmdsZQorICAgICAgICAgICAgLy8gY29tYmluaW5nIGNoYXJhY3Rlciwgc2ltaWxhciB0byAiYyA8IGNoIiBpbiB0cmFkaXRpb25hbCBzcGFuaXNoLgorICAgICAgICAgICAgLy8gVE9ETzogYmVlZiB1cCB0aGlzIGNhc2UKKyAgICAgICAgICAgICJcdTBlMjRcdTBlMjlcdTBlMzUiLCAgICAgICAgICAgICAgICAgIjwiLCAgICAiXHUwZTI0XHUwZTQ1XHUwZTI5XHUwZTM1IiwKKyAgICAgICAgICAgICJcdTBlMjZcdTBlMjlcdTBlMzUiLCAgICAgICAgICAgICAgICAgIjwiLCAgICAiXHUwZTI2XHUwZTQ1XHUwZTI5XHUwZTM1IiwKKyAgICAKKyAgICAgICAgICAgIC8vIFZvd2VscyByZW9yZGVyLCBzaG91bGQgY29tcGFyZSBcdTBlMmQgYW5kIFx1MGUzNAorICAgICAgICAgICAgIlx1MGU0MFx1MGUwMVx1MGUyZCIsICAgICAgICAgICAgICAgICAiPCIsICAgICJcdTBlNDBcdTBlMDFcdTBlMzQiLAorICAgIAorICAgICAgICAgICAgLy8gVG9uZXMgYXJlIGNvbXBhcmVkIGFmdGVyIHRoZSByZXN0IG9mIHRoZSB3b3JkIChlLmcuIHByaW1hcnkgaWdub3JhYmxlKQorICAgICAgICAgICAgIlx1MGUwMVx1MGUzMlx1MGUwMVx1MGU0OFx1MGUzMiIsICAgIjwiLCAgICAiXHUwZTAxXHUwZTQ5XHUwZTMyXHUwZTAxXHUwZTMyIiwKKyAgICAKKyAgICAgICAgICAgIC8vIFBlcmlvZHMgYXJlIGlnbm9yZWQgZW50aXJlbHkKKyAgICAgICAgICAgICJcdTBlMDEuXHUwZTAxLiIsICAgICAgICAgICAgICAgICAgICAgICI8IiwgICAgIlx1MGUwMVx1MGUzMiIsCisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICBDb2xsYXRvciBjb2xsID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNvbGwgPSBDb2xsYXRvci5nZXRJbnN0YW5jZShuZXcgTG9jYWxlKCJ0aCIsICJUSCIsICIiKSk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiRXJyb3I6IGNvdWxkIG5vdCBjb25zdHJ1Y3QgVGhhaSBjb2xsYXRvciIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNvbXBhcmVBcnJheShjb2xsLCBURVNUUyk7IAorICAgIH0KKyAgICAKKyAgICB2b2lkIGNvbXBhcmVBcnJheShDb2xsYXRvciBjLCBTdHJpbmdbXSB0ZXN0cykgeworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRlc3RzLmxlbmd0aDsgaSArPSAzKSB7CisgICAgICAgICAgICBpbnQgZXhwZWN0ID0gMDsKKyAgICAgICAgICAgIGlmICh0ZXN0c1tpKzFdLmVxdWFscygiPCIpKSB7CisgICAgICAgICAgICAgICAgZXhwZWN0ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHRlc3RzW2krMV0uZXF1YWxzKCI+IikpIHsKKyAgICAgICAgICAgICAgICBleHBlY3QgPSAxOworICAgICAgICAgICAgfSBlbHNlIGlmICh0ZXN0c1tpKzFdLmVxdWFscygiPSIpKSB7CisgICAgICAgICAgICAgICAgZXhwZWN0ID0gMDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gZXhwZWN0ID0gSW50ZWdlci5kZWNvZGUodGVzdHNbaSsxXSkuaW50VmFsdWUoKTsKKyAgICAgICAgICAgICAgICBlcnJsbigiRXJyb3I6IHVua25vd24gb3BlcmF0b3IgIiArIHRlc3RzW2krMV0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFN0cmluZyBzMSA9IHRlc3RzW2ldOworICAgICAgICAgICAgU3RyaW5nIHMyID0gdGVzdHNbaSsyXTsKKyAgICAgICAgICAgIGludCByZXN1bHQgPSBjLmNvbXBhcmUoczEsIHMyKTsKKyAgICAgICAgICAgIGlmIChzaWduKHJlc3VsdCkgIT0gc2lnbihleHBlY3QpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIiIgKyBpLzMgKyAiOiBjb21wYXJlKCIgKyBzMQorICAgICAgICAgICAgICAgICAgICAgICsgIiAsICIgKyBzMiAgKyAiKSBnb3QgIiArIHJlc3VsdCArICI7IGV4cGVjdGVkICIgKyBleHBlY3QpOworICAgIAorICAgICAgICAgICAgICAgIENvbGxhdGlvbktleSBrMSwgazI7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgazEgPSBjLmdldENvbGxhdGlvbktleShzMSk7CisgICAgICAgICAgICAgICAgICAgIGsyID0gYy5nZXRDb2xsYXRpb25LZXkoczIpOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJGYWlsOiBnZXRDb2xsYXRpb25LZXkgcmV0dXJuZWQgIik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZXJybG4oIiAga2V5MTogIiArIHByZXR0aWZ5KGsxKSk7CisgICAgICAgICAgICAgICAgZXJybG4oIiAga2V5MjogIiArIHByZXR0aWZ5KGsyKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIENvbGxhdG9yLmNvbXBhcmUgd29ya2VkIE9LOyBub3cgdHJ5IHRoZSBjb2xsYXRpb24ga2V5cworICAgICAgICAgICAgICAgIENvbGxhdGlvbktleSBrMSwgazI7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgazEgPSBjLmdldENvbGxhdGlvbktleShzMSk7CisgICAgICAgICAgICAgICAgICAgIGsyID0gYy5nZXRDb2xsYXRpb25LZXkoczIpOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKGUpOworICAgICAgICAgICAgICAgICAgICBlcnJsbigiRmFpbDogZ2V0Q29sbGF0aW9uS2V5IHJldHVybmVkICIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGsxLmNvbXBhcmVUbyhrMik7CisgICAgICAgICAgICAgICAgaWYgKHNpZ24ocmVzdWx0KSAhPSBzaWduKGV4cGVjdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIiIgKyBpLzMgKyAiOiBrZXkoIiArIHMxCisgICAgICAgICAgICAgICAgICAgICAgICAgICsgIikuY29tcGFyZVRvKGtleSgiICsgczIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiKSkgZ290ICIgKyByZXN1bHQgKyAiOyBleHBlY3RlZCAiICsgZXhwZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGVycmxuKCIgICIgKyBwcmV0dGlmeShrMSkgKyAiIHZzLiAiICsgcHJldHRpZnkoazIpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgaW50IHNpZ24oaW50IGkgKSB7CisgICAgICAgIGlmIChpIDwgMCkgcmV0dXJuIC0xOworICAgICAgICBpZiAoaSA+IDApIHJldHVybiAxOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmVhZCB0aGUgZXh0ZXJuYWwgZGljdGlvbmFyeSBmaWxlLCB3aGljaCBpcyBhbHJlYWR5IGluIHByb3BlcgorICAgICAqIHNvcnRlZCBvcmRlciwgYW5kIGNvbmZpcm0gdGhhdCB0aGUgY29sbGF0b3IgY29tcGFyZXMgZWFjaCBsaW5lIGFzCisgICAgICogcHJlY2VkaW5nIHRoZSBmb2xsb3dpbmcgbGluZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0RGljdGlvbmFyeSgpIHsKKyAgICAgICAgQ29sbGF0b3IgY29sbCA9IG51bGw7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjb2xsID0gQ29sbGF0b3IuZ2V0SW5zdGFuY2UobmV3IExvY2FsZSgidGgiLCAiVEgiLCAiIikpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkVycm9yOiBjb3VsZCBub3QgY29uc3RydWN0IFRoYWkgY29sbGF0b3IiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAKKyAgICAgICAgLy8gUmVhZCBpbiBhIGRpY3Rpb25hcnkgb2YgVGhhaSB3b3JkcworICAgICAgICAgICAgICAgRGF0YUlucHV0U3RyZWFtIGluID0gbnVsbDsKKyAgICAgICAgU3RyaW5nIGZpbGVOYW1lID0gInRoMTgwNTcudHh0IjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGluID0gbmV3IERhdGFJbnB1dFN0cmVhbShuZXcgRmlsZUlucHV0U3RyZWFtKFRlc3RVdGlsLmdldERhdGFGaWxlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVOYW1lKSkpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBpbi5jbG9zZSgpOworICAgICAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gaW9lKSB7fQorICAgICAgICAgICAgZXJybG4oIkVycm9yOiBjb3VsZCBub3Qgb3BlbiB0ZXN0IGZpbGU6ICIgKyBmaWxlTmFtZSk7CisgICAgICAgICAgICByZXR1cm47ICAgICAgICAKKyAgICAgICAgfQorICAgIAorICAgICAgICAvLworICAgICAgICAvLyBMb29wIHRocm91Z2ggZWFjaCB3b3JkIGluIHRoZSBkaWN0aW9uYXJ5IGFuZCBjb21wYXJlIGl0IHRvIHRoZSBwcmV2aW91cworICAgICAgICAvLyB3b3JkLiAgVGhleSBzaG91bGQgYmUgaW4gc29ydGVkIG9yZGVyLgorICAgICAgICAvLworICAgICAgICBTdHJpbmcgbGFzdFdvcmQgPSAiIjsKKyAgICAgICAgaW50IGxpbmUgPSAwOworICAgICAgICBpbnQgZmFpbGVkID0gMDsKKyAgICAgICAgaW50IHdvcmRDb3VudCA9IDA7CisgICAgICAgIFN0cmluZyB3b3JkID0gcmVhZExpbmUoaW4pOworICAgICAgICB3aGlsZSAod29yZCAhPSBudWxsKSB7CisgICAgICAgICAgICBsaW5lKys7CisgICAgCisgICAgICAgICAgICAvLyBTa2lwIGNvbW1lbnRzIGFuZCBibGFuayBsaW5lcworICAgICAgICAgICAgaWYgKHdvcmQubGVuZ3RoKCkgPT0gMCB8fCB3b3JkLmNoYXJBdCgwKSA9PSAweDIzKSB7CisgICAgICAgICAgICAgICAgd29yZCA9IHJlYWRMaW5lKGluKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgIC8vIFNob3cgdGhlIGZpcnN0IDggd29yZHMgYmVpbmcgY29tcGFyZWQsIHNvIHdlIGNhbiBzZWUgd2hhdCdzIGhhcHBlbmluZworICAgICAgICAgICAgKyt3b3JkQ291bnQ7CisgICAgICAgICAgICBpZiAod29yZENvdW50IDw9IDgpIHsKKyAgICAgICAgICAgICAgICBsb2dsbigiV29yZCAiICsgd29yZENvdW50ICsgIjogIiArIHdvcmQpOworICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgaWYgKGxhc3RXb3JkLmxlbmd0aCgpID4gMCkgeworICAgICAgICAgICAgICAgIGludCByZXN1bHQgPSAwOworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNvbGwuY29tcGFyZShsYXN0V29yZCwgd29yZCk7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgbG9nbG4oImxpbmUiICsgbGluZSArICI6IiArIHdvcmQpOworICAgICAgICAgICAgICAgICAgICBsb2dsbigibGFzdFdvcmQgPSAiICsgbGFzdFdvcmQpOworICAgICAgICAgICAgICAgICAgICBsb2dsbihlLmdldE1lc3NhZ2UoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgZmFpbGVkKys7CisgICAgICAgICAgICAgICAgICAgIGlmIChNQVhfRkFJTFVSRVNfVE9fU0hPVyA8IDAgfHwgZmFpbGVkIDw9IE1BWF9GQUlMVVJFU19UT19TSE9XKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbXNnID0gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGxpbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiBjb21wYXJlKCIgKyBsYXN0V29yZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiLCAiICsgd29yZCArICIpIHJldHVybmVkICIgKyByZXN1bHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiwgZXhwZWN0ZWQgLTFcbiI7CisgICAgICAgICAgICAgICAgICAgICAgICBDb2xsYXRpb25LZXkgazEsIGsyOworICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBrMSA9IGNvbGwuZ2V0Q29sbGF0aW9uS2V5KGxhc3RXb3JkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBrMiA9IGNvbGwuZ2V0Q29sbGF0aW9uS2V5KHdvcmQpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbigiRmFpbDogZ2V0Q29sbGF0aW9uS2V5IHJldHVybmVkICIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZyArPSAia2V5MTogIiArIHByZXR0aWZ5KGsxKSArICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgImtleTI6ICIgKyBwcmV0dGlmeShrMik7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbihtc2cpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgbGFzdFdvcmQgPSB3b3JkOworICAgICAgICAgICAgd29yZCA9IHJlYWRMaW5lKGluKTsKKyAgICAgICAgfQorICAgIAorICAgICAgICBpZiAoZmFpbGVkICE9IDApIHsKKyAgICAgICAgICAgIGlmIChmYWlsZWQgPiBNQVhfRkFJTFVSRVNfVE9fU0hPVykgeworICAgICAgICAgICAgICAgIGVycmxuKCJUb28gbWFueSBmYWlsdXJlczsgb25seSB0aGUgZmlyc3QgIiArCisgICAgICAgICAgICAgICAgICAgICAgTUFYX0ZBSUxVUkVTX1RPX1NIT1cgKyAiIGZhaWx1cmVzIHdlcmUgc2hvd24iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVycmxuKCJTdW1tYXJ5OiAiICsgZmFpbGVkICsgIiBvZiAiICsgKGxpbmUgLSAxKSArCisgICAgICAgICAgICAgICAgICAiIGNvbXBhcmlzb25zIGZhaWxlZCIpOworICAgICAgICB9CisgICAgCisgICAgICAgIGxvZ2xuKCJXb3JkcyBjaGVja2VkOiAiICsgd29yZENvdW50KTsKKyAgICB9CisgICAgCisgICAgU3RyaW5nIHJlYWRMaW5lKERhdGFJbnB1dFN0cmVhbSBpbikgeworICAgICAgICBieXRlW10gYnl0ZXMgPSBuZXcgYnl0ZVsxMjhdOworICAgICAgICBpbnQgaSA9IDA7CisgICAgICAgIGJ5dGUgYyA9IDA7CisgICAgICAgIHdoaWxlIChpIDwgMTI4KSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGMgPSBpbi5yZWFkQnl0ZSgpOworICAgICAgICAgICAgfSBjYXRjaCAoRU9GRXhjZXB0aW9uIGVlKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkNhbm5vdCByZWFkIGxpbmUgZnJvbSB0aGUgZmlsZSIpOworICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGMgPT0gMHhEIHx8IGMgPT0gMHhBKSB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgYyA9IGluLnJlYWRCeXRlKCk7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoRU9GRXhjZXB0aW9uIGVlKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIkNhbm5vdCByZWFkIGxpbmUgZnJvbSB0aGUgZmlsZSIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBieXRlc1tpKytdID0gYzsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgU3RyaW5nIGxpbmUgPSBudWxsOworICAgICAgICB0cnkgeworICAgICAgICAgICAgbGluZSA9IG5ldyBTdHJpbmcoYnl0ZXMsIDAsIGksICJVVEYtOCIpOworICAgICAgICB9IGNhdGNoIChVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihlKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbGluZTsKKyAgICB9CisgICAgCisgICAgU3RyaW5nIHByZXR0aWZ5KENvbGxhdGlvbktleSBzb3VyY2VLZXkpIHsKKyAgICAgICAgaW50IGk7CisgICAgICAgIGJ5dGVbXSBieXRlcz0gc291cmNlS2V5LnRvQnl0ZUFycmF5KCk7CisgICAgICAgIFN0cmluZyB0YXJnZXQgPSAiWyI7CisgICAgCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgdGFyZ2V0ICs9IEludGVnZXIudG9IZXhTdHJpbmcoYnl0ZXNbaV0pOworICAgICAgICAgICAgdGFyZ2V0ICs9ICIgIjsKKyAgICAgICAgfQorICAgICAgICB0YXJnZXQgKz0gIl0iOworICAgICAgICByZXR1cm4gdGFyZ2V0OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY29sbGF0b3IvQ29sbGF0aW9uVHVya2lzaFRlc3QuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9jb2xsYXRvci9Db2xsYXRpb25UdXJraXNoVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlZWE3NmYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY29sbGF0b3IvQ29sbGF0aW9uVHVya2lzaFRlc3QuamF2YQpAQCAtMCwwICsxLDE5NSBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICAgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAkU291cmNlOiAKKyAqICREYXRlOiAKKyAqICRSZXZpc2lvbjogCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworLyoqIAorICogUG9ydCBGcm9tOiAgIElDVTRDIHYyLjEgOiBDb2xsYXRlL0NvbGxhdGlvblR1cmtpc2hUZXN0CisgKiBTb3VyY2UgRmlsZTogJElDVTRDUm9vdC9zb3VyY2UvdGVzdC9pbnRsdGVzdC90cmNvbGwuY3BwCisgKiovCisgCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0LmNvbGxhdG9yOworIAoraW1wb3J0IGNvbS5pYm0uaWN1LmRldi50ZXN0Lio7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC4qOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CisgCitwdWJsaWMgY2xhc3MgQ29sbGF0aW9uVHVya2lzaFRlc3QgZXh0ZW5kcyBUZXN0Rm13a3sKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9ueworICAgICAgICBuZXcgQ29sbGF0aW9uVHVya2lzaFRlc3QoKS5ydW4oYXJncyk7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgc3RhdGljIGNoYXJbXVtdIHRlc3RTb3VyY2VDYXNlcyA9IHsKKyAgICAgICAgezB4NzMsIDB4MDMyN30sCisgICAgICAgIHsweDc2LCAweDAwRTQsIDB4NzR9LAorICAgICAgICB7MHg2ZiwgMHg2YywgMHg2NH0sCisgICAgICAgIHsweDAwRkMsIDB4NmYsIDB4NjksIDB4NjR9LAorICAgICAgICB7MHg2OCwgMHgwMTFFLCAweDYxLCAweDZjLCAweDc0fSwKKyAgICAgICAgezB4NzMsIDB4NzQsIDB4NzIsIDB4NjUsIDB4NzMsIDB4MDE1RX0sCisgICAgICAgIHsweDc2LCAweDZmLCAweDAxMzEsIDB4NjR9LAorICAgICAgICB7MHg2OSwgMHg2NCwgMHg2NSwgMHg2MX0sCisgICAgICAgIHsweDAwRkMsIDB4NmYsIDB4NjksIDB4NjR9LAorICAgICAgICB7MHg3NiwgMHg2ZiwgMHgwMTMxLCAweDY0fSwKKyAgICAgICAgezB4NjksIDB4NjQsIDB4NjUsIDB4NjF9CisgICAgfTsKKworICAgIHByaXZhdGUgc3RhdGljIGNoYXJbXVtdIHRlc3RUYXJnZXRDYXNlcyA9IHsKKyAgICAgICAgezB4NzUsIDB4MDMwOH0sCisgICAgICAgIHsweDc2LCAweDYyLCAweDc0fSwKKyAgICAgICAgezB4MDBENiwgMHg2MSwgMHg3OX0sCisgICAgICAgIHsweDc2LCAweDZmLCAweDY5LCAweDY0fSwKKyAgICAgICAgezB4NjgsIDB4NjEsIDB4NmMsIDB4NzR9LAorICAgICAgICB7MHgwMTVFLCAweDc0LCAweDcyLCAweDY1LCAweDAxNUUsIDB4NzN9LAorICAgICAgICB7MHg3NiwgMHg2ZiwgMHg2OSwgMHg2NH0sCisgICAgICAgIHsweDQ5LCAweDY0LCAweDY1LCAweDYxfSwKKyAgICAgICAgezB4NzYsIDB4NmYsIDB4NjksIDB4NjR9LAorICAgICAgICB7MHg3NiwgMHg2ZiwgMHg2OSwgMHg2NH0sCisgICAgICAgIHsweDQ5LCAweDY0LCAweDY1LCAweDYxfQorICAgIH07CisKKyAgICBwcml2YXRlIHN0YXRpYyBpbnRbXSByZXN1bHRzID0geworICAgICAgICAtMSwKKyAgICAgICAgLTEsCisgICAgICAgIC0xLAorICAgICAgICAtMSwKKyAgICAgICAgMSwKKyAgICAgICAgLTEsCisgICAgICAgIC0xLAorICAgICAgICAxLAorICAgIC8vIHRlc3QgcHJpYW1yeSA+IDgKKyAgICAgICAgLTEsCisgICAgICAgIC0xLAorICAgICAgICAxCisgICAgfTsKKyAgICAKKyAgICBwcml2YXRlIENvbGxhdG9yIG15Q29sbGF0aW9uID0gbnVsbDsKKyAgICAKKyAgICBwdWJsaWMgQ29sbGF0aW9uVHVya2lzaFRlc3QoKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBteUNvbGxhdGlvbiA9IENvbGxhdG9yLmdldEluc3RhbmNlKG5ldyBMb2NhbGUoInRyIiwgIiIpKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogaW4gY3JlYXRpb24gb2YgY29sbGF0b3Igb2YgVFVSS0lTSCBsb2NhbGUiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0VGVydGlhcnkoKSB7CisgICAgICAgIGludCBpID0gMDsKKyAgICAgICAgbXlDb2xsYXRpb24uc2V0U3RyZW5ndGgoQ29sbGF0b3IuVEVSVElBUlkpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgOCA7IGkrKykgeworICAgICAgICAgICAgZG9UZXN0KHRlc3RTb3VyY2VDYXNlc1tpXSwgdGVzdFRhcmdldENhc2VzW2ldLCByZXN1bHRzW2ldKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0UHJpbWFyeSgpIHsKKyAgICAgICAgaW50IGk7CisgICAgICAgIG15Q29sbGF0aW9uLnNldFN0cmVuZ3RoKENvbGxhdG9yLlBSSU1BUlkpOworICAgICAgICBmb3IgKGkgPSA4OyBpIDwgMTE7IGkrKykgeworICAgICAgICAgICAgZG9UZXN0KHRlc3RTb3VyY2VDYXNlc1tpXSwgdGVzdFRhcmdldENhc2VzW2ldLCByZXN1bHRzW2ldKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAKKyAgICAvLyBtYWluIHRlc3Qgcm91dGluZSwgdGVzdHMgcnVsZXMgc3BlY2lmaWMgdG8gdHVya2lzaCBsb2NhbGUKKyAgICBwcml2YXRlIHZvaWQgZG9UZXN0KGNoYXJbXSBzb3VyY2UsIGNoYXJbXSB0YXJnZXQsIGludCByZXN1bHQpIHsKKyAgICAgICAgU3RyaW5nIHMgPSBuZXcgU3RyaW5nKHNvdXJjZSk7CisgICAgICAgIFN0cmluZyB0ID0gbmV3IFN0cmluZyh0YXJnZXQpOworICAgICAgICBpbnQgY29tcGFyZVJlc3VsdCA9IG15Q29sbGF0aW9uLmNvbXBhcmUocywgdCk7CisgICAgICAgIENvbGxhdGlvbktleSBzb3J0S2V5MSwgc29ydEtleTI7CisgICAgICAgIHNvcnRLZXkxID0gbXlDb2xsYXRpb24uZ2V0Q29sbGF0aW9uS2V5KHMpOworICAgICAgICBzb3J0S2V5MiA9IG15Q29sbGF0aW9uLmdldENvbGxhdGlvbktleSh0KTsKKyAgICAgICAgaW50IGtleVJlc3VsdCA9IHNvcnRLZXkxLmNvbXBhcmVUbyhzb3J0S2V5Mik7CisgICAgICAgIHJlcG9ydENSZXN1bHQocywgdCwgc29ydEtleTEsIHNvcnRLZXkyLCBjb21wYXJlUmVzdWx0LCBrZXlSZXN1bHQsIGNvbXBhcmVSZXN1bHQsIHJlc3VsdCk7CisgICAgICAgIAorICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHZvaWQgcmVwb3J0Q1Jlc3VsdCggU3RyaW5nIHNvdXJjZSwgU3RyaW5nIHRhcmdldCwgQ29sbGF0aW9uS2V5IHNvdXJjZUtleSwgQ29sbGF0aW9uS2V5IHRhcmdldEtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvbXBhcmVSZXN1bHQsIGludCBrZXlSZXN1bHQsIGludCBpbmNSZXN1bHQsIGludCBleHBlY3RlZFJlc3VsdCApIHsKKyAgICAgICAgaWYgKGV4cGVjdGVkUmVzdWx0IDwgLTEgfHwgZXhwZWN0ZWRSZXN1bHQgPiAxKSB7CisgICAgICAgICAgICBlcnJsbigiKioqKiogaW52YWxpZCBjYWxsIHRvIHJlcG9ydENSZXN1bHQgKioqKiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYm9vbGVhbiBvazEgPSAoY29tcGFyZVJlc3VsdCA9PSBleHBlY3RlZFJlc3VsdCk7CisgICAgICAgIGJvb2xlYW4gb2syID0gKGtleVJlc3VsdCA9PSBleHBlY3RlZFJlc3VsdCk7CisgICAgICAgIGJvb2xlYW4gb2szID0gKGluY1Jlc3VsdCA9PSBleHBlY3RlZFJlc3VsdCk7CisKKyAgICAgICAgaWYgKG9rMSAmJiBvazIgJiYgb2szICYmICFpc1ZlcmJvc2UoKSkgeworICAgICAgICAgICAgcmV0dXJuOyAgICAKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFN0cmluZyBtc2cxID0gb2sxPyAiT2s6IGNvbXBhcmUoXCIiIDogIkZBSUw6IGNvbXBhcmUoXCIiOworICAgICAgICAgICAgU3RyaW5nIG1zZzIgPSAiXCIsIFwiIjsKKyAgICAgICAgICAgIFN0cmluZyBtc2czID0gIlwiKSByZXR1cm5lZCAiOworICAgICAgICAgICAgU3RyaW5nIG1zZzQgPSAiOyBleHBlY3RlZCAiOworICAgICAgICAgICAgCisgICAgICAgICAgICBTdHJpbmcgc0V4cGVjdCA9IG5ldyBTdHJpbmcoIiIpOworICAgICAgICAgICAgU3RyaW5nIHNSZXN1bHQgPSBuZXcgU3RyaW5nKCIiKTsKKyAgICAgICAgICAgIHNSZXN1bHQgPSBhcHBlbmRDb21wYXJlUmVzdWx0KGNvbXBhcmVSZXN1bHQsIHNSZXN1bHQpOworICAgICAgICAgICAgc0V4cGVjdCA9IGFwcGVuZENvbXBhcmVSZXN1bHQoZXhwZWN0ZWRSZXN1bHQsIHNFeHBlY3QpOworICAgICAgICAgICAgaWYgKG9rMSkgeworICAgICAgICAgICAgICAgIGxvZ2xuKG1zZzEgKyBzb3VyY2UgKyBtc2cyICsgdGFyZ2V0ICsgbXNnMyArIHNSZXN1bHQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBlcnJsbihtc2cxICsgc291cmNlICsgbXNnMiArIHRhcmdldCArIG1zZzMgKyBzUmVzdWx0ICsgbXNnNCArIHNFeHBlY3QpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBtc2cxID0gb2syID8gIk9rOiBrZXkoXCIiIDogIkZBSUw6IGtleShcIiI7CisgICAgICAgICAgICBtc2cyID0gIlwiKS5jb21wYXJlVG8oa2V5KFwiIjsKKyAgICAgICAgICAgIG1zZzMgPSAiXCIpKSByZXR1cm5lZCAiOworICAgICAgICAgICAgc1Jlc3VsdCA9IGFwcGVuZENvbXBhcmVSZXN1bHQoa2V5UmVzdWx0LCBzUmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChvazIpIHsKKyAgICAgICAgICAgICAgICBsb2dsbihtc2cxICsgc291cmNlICsgbXNnMiArIHRhcmdldCArIG1zZzMgKyBzUmVzdWx0KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZXJybG4obXNnMSArIHNvdXJjZSArIG1zZzIgKyB0YXJnZXQgKyBtc2czICsgc1Jlc3VsdCArIG1zZzQgKyBzRXhwZWN0KTsKKyAgICAgICAgICAgICAgICBtc2cxID0gIiAgIjsKKyAgICAgICAgICAgICAgICBtc2cyID0gIiB2cy4gIjsKKyAgICAgICAgICAgICAgICBlcnJsbihtc2cxICsgcHJldHRpZnkoc291cmNlS2V5KSArIG1zZzIgKyBwcmV0dGlmeSh0YXJnZXRLZXkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgbXNnMSA9IG9rMyA/ICJPazogaW5jQ29tcGFyZShcIiIgOiAiRkFJTDogaW5jQ29tcGFyZShcIiI7CisgICAgICAgICAgICBtc2cyID0gIlwiLCBcIiI7CisgICAgICAgICAgICBtc2czID0gIlwiKSByZXR1cm5lZCAiOworCisgICAgICAgICAgICBzUmVzdWx0ID0gYXBwZW5kQ29tcGFyZVJlc3VsdChpbmNSZXN1bHQsIHNSZXN1bHQpOworCisgICAgICAgICAgICBpZiAob2szKSB7CisgICAgICAgICAgICAgICAgbG9nbG4obXNnMSArIHNvdXJjZSArIG1zZzIgKyB0YXJnZXQgKyBtc2czICsgc1Jlc3VsdCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGVycmxuKG1zZzEgKyBzb3VyY2UgKyBtc2cyICsgdGFyZ2V0ICsgbXNnMyArIHNSZXN1bHQgKyBtc2c0ICsgc0V4cGVjdCk7CisgICAgICAgICAgICB9ICAgICAgICAgICAgICAgIAorICAgICAgICB9CisgICAgfQorICAgIAorICAgIHByaXZhdGUgU3RyaW5nIGFwcGVuZENvbXBhcmVSZXN1bHQoaW50IHJlc3VsdCwgU3RyaW5nIHRhcmdldCkgeworICAgICAgICBpZiAocmVzdWx0ID09IC0xKSB7CisgICAgICAgICAgICB0YXJnZXQgKz0gIkxFU1MiOworICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSAwKSB7CisgICAgICAgICAgICB0YXJnZXQgKz0gIkVRVUFMIjsKKyAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gMSkgeworICAgICAgICAgICAgdGFyZ2V0ICs9ICJHUkVBVEVSIjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFN0cmluZyBodWggPSAiPyI7CisgICAgICAgICAgICB0YXJnZXQgKz0gaHVoICsgcmVzdWx0OworICAgICAgICB9CisgICAgICAgIHJldHVybiB0YXJnZXQ7CisgICAgfQorICAgIAorICAgIFN0cmluZyBwcmV0dGlmeShDb2xsYXRpb25LZXkgc291cmNlS2V5KSB7CisgICAgICAgIGludCBpOworICAgICAgICBieXRlW10gYnl0ZXM9IHNvdXJjZUtleS50b0J5dGVBcnJheSgpOworICAgICAgICBTdHJpbmcgdGFyZ2V0ID0gIlsiOworICAgIAorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYnl0ZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIHRhcmdldCArPSBJbnRlZ2VyLnRvSGV4U3RyaW5nKGJ5dGVzW2ldKTsKKyAgICAgICAgICAgIHRhcmdldCArPSAiICI7CisgICAgICAgIH0KKyAgICAgICAgdGFyZ2V0ICs9ICJdIjsKKyAgICAgICAgcmV0dXJuIHRhcmdldDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NvbGxhdG9yL0c3Q29sbGF0aW9uVGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NvbGxhdG9yL0c3Q29sbGF0aW9uVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwNTJiMGMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY29sbGF0b3IvRzdDb2xsYXRpb25UZXN0LmphdmEKQEAgLTAsMCArMSwyOTIgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAgICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogJFNvdXJjZTogCisgKiAkRGF0ZTogCisgKiAkUmV2aXNpb246IAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKKy8qKiAKKyAqIFBvcnQgRnJvbTogICBJQ1U0QyB2Mi4xIDogQ29sbGF0ZS9HN0NvbGxhdGlvblRlc3QKKyAqIFNvdXJjZSBGaWxlOiAkSUNVNENSb290L3NvdXJjZS90ZXN0L2ludGx0ZXN0L2c3Y29sbC5jcHAKKyAqKi8KKyAKK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3QuY29sbGF0b3I7CisgCitpbXBvcnQgY29tLmlibS5pY3UuZGV2LnRlc3QuKjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0Lio7CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKKyAKK3B1YmxpYyBjbGFzcyBHN0NvbGxhdGlvblRlc3QgZXh0ZW5kcyBUZXN0Rm13a3sKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9ueworICAgICAgICBuZXcgRzdDb2xsYXRpb25UZXN0KCkucnVuKGFyZ3MpOworICAgICAgICAvLyBuZXcgRzdDb2xsYXRpb25UZXN0KCkuVGVzdERlbW8zKCk7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgc3RhdGljIFN0cmluZ1tdIHRlc3RDYXNlcyA9IHsKKyAgICAgICAgImJsYWNrYmlyZHMiLCAiUGF0IiwgInBcdTAwRTljaFx1MDBFOSIsICJwXHUwMEVBY2hlIiwgInBcdTAwRTljaGVyIiwgICAgICAgICAgICAKKyAgICAgICAgInBcdTAwRUFjaGVyIiwgIlRvZCIsICJUXHUwMEY2bmUiLCAiVG9mdSIsICJibGFja2JpcmQiLCAiVG9uIiwgCisgICAgICAgICJQQVQiLCAiYmxhY2stYmlyZCIsICJibGFjay1iaXJkcyIsICJwYXQiLCAvLyAxNAorICAgICAgICAvLyBBZGRpdGlvbmFsIHRlc3RzCisgICAgICAgICJjemFyIiwgImNodXJvIiwgImNhdCIsICJkYXJuIiwgIj8iLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogMTkgKi8KKyAgICAgICAgInF1aWNrIiwgIiMiLCAiJiIsICJhLXJkdmFyayIsICJhYXJkdmFyayIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAyMyAqLworICAgICAgICAiYWJib3QiLCAiY28tcCIsICJjb3AiLCAiY29vcCIsICJ6ZWJyYSIKKyAgICB9OworCisgICAgcHJpdmF0ZSBzdGF0aWMgaW50W11bXSByZXN1bHRzID0geworICAgICAgICB7IDEyLCAxMywgOSwgMCwgMTQsIDEsIDExLCAyLCAzLCA0LCA1LCA2LCA4LCAxMCwgNywgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSB9LCAvKiBlbl9VUyAqLworICAgICAgICB7IDEyLCAxMywgOSwgMCwgMTQsIDEsIDExLCAyLCAzLCA0LCA1LCA2LCA4LCAxMCwgNywgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSB9LCAvKiBlbl9HQiAqLworICAgICAgICB7IDEyLCAxMywgOSwgMCwgMTQsIDEsIDExLCAyLCAzLCA0LCA1LCA2LCA4LCAxMCwgNywgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSB9LCAvKiBlbl9DQSAqLworICAgICAgICB7IDEyLCAxMywgOSwgMCwgMTQsIDEsIDExLCAzLCAyLCA0LCA1LCA2LCA4LCAxMCwgNywgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSB9LCAvKiBmcl9GUiAqLworICAgICAgICB7IDEyLCAxMywgOSwgMCwgMTQsIDEsIDExLCAzLCAyLCA0LCA1LCA2LCA4LCAxMCwgNywgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSB9LCAvKiBmcl9DQSAqLworICAgICAgICB7IDEyLCAxMywgOSwgMCwgMTQsIDEsIDExLCAyLCAzLCA0LCA1LCA2LCA4LCAxMCwgNywgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSB9LCAvKiBkZV9ERSAqLworICAgICAgICB7IDEyLCAxMywgOSwgMCwgMTQsIDEsIDExLCAyLCAzLCA0LCA1LCA2LCA4LCAxMCwgNywgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSB9LCAvKiBpdF9JVCAqLworICAgICAgICB7IDEyLCAxMywgOSwgMCwgMTQsIDEsIDExLCAyLCAzLCA0LCA1LCA2LCA4LCAxMCwgNywgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSB9LCAvKiBqYV9KUCAqLworICAgICAgICAvKiBuZXcgdGFibGUgY29sbGF0aW9uIHdpdGggcnVsZXMgIiYgWiA8IHAsIFAiICBsb29wIHRvIEZJWEVEVEVTVFNFVCAqLworICAgICAgICB7IDEyLCAxMywgOSwgMCwgNiwgOCwgMTAsIDcsIDE0LCAxLCAxMSwgMiwgMywgNCwgNSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSB9LCAKKyAgICAgICAgLyogbmV3IHRhYmxlIGNvbGxhdGlvbiB3aXRoIHJ1bGVzICImIEMgPCBjaCAsIGNILCBDaCwgQ0ggIiBsb29wIHRvIFRPVEFMVEVTVFNFVCAqLworICAgICAgICB7IDE5LCAyMiwgMjEsIDIzLCAyNCwgMjUsIDEyLCAxMywgOSwgMCwgMTcsIDI2LCAyOCwgMjcsIDE1LCAxNiwgMTgsIDE0LCAxLCAxMSwgMiwgMywgNCwgNSwgMjAsIDYsIDgsIDEwLCA3LCAyOSB9LAorICAgICAgICAvKiBuZXcgdGFibGUgY29sbGF0aW9uIHdpdGggcnVsZXMgIiYgUXVlc3Rpb24tbWFyayA7ID8gJiBIYXNoLW1hcmsgOyAjICYgQW1wZXJzYW5kIDsgJyYnICAiIGxvb3AgdG8gVE9UQUxURVNUU0VUICovCisgICAgICAgIHsgMjMsIDI0LCAyNSwgMjIsIDEyLCAxMywgOSwgMCwgMTcsIDE2LCAyNiwgMjgsIDI3LCAxNSwgMTgsIDIxLCAxNCwgMSwgMTEsIDIsIDMsIDQsIDUsIDE5LCAyMCwgNiwgOCwgMTAsIDcsIDI5IH0sCisgICAgICAgIC8qIGFuYWxvZ291cyB0byBKYXBhbmVzZSBydWxlcyAiICYgYWEgOyBhLSAmIGVlIDsgZS0gJiBpaSA7IGktICYgb28gOyBvLSAmIHV1IDsgdS0gIiAqLyAgLyogbG9vcCB0byBUT1RBTFRFU1RTRVQgKi8KKyAgICAgICAgeyAxOSwgMjIsIDIxLCAyNCwgMjMsIDI1LCAxMiwgMTMsIDksIDAsIDE3LCAxNiwgMjgsIDI2LCAyNywgMTUsIDE4LCAxNCwgMSwgMTEsIDIsIDMsIDQsIDUsIDIwLCA2LCA4LCAxMCwgNywgMjkgfQorICAgIH07CisgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1BWF9UT0tFTl9MRU4gPSAxNjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgVEVTVExPQ0FMRVMgPSAxMjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRklYRURURVNUU0VUID0gMTU7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFRPVEFMVEVTVFNFVCA9IDMwOworICAgIAorICAgIC8vIHBlcmZvcm0gdGVzdCB3aXRoIGFkZGVkIHJ1bGVzICIgJiBaIDwgcCwgUCIKKyAgICBwdWJsaWMgdm9pZCBUZXN0RGVtbzEoKSB7CisgICAgICAgIGxvZ2xuKCJEZW1vIFRlc3QgMSA6IENyZWF0ZSBhIG5ldyB0YWJsZSBjb2xsYXRpb24gd2l0aCBydWxlcyBcIiYgWiA8IHAsIFBcIiIpOworICAgICAgICAKKyAgICAgICAgQ29sbGF0b3IgY29sOworICAgICAgICB0cnkgeworICAgICAgICAgICAgY29sID0gQ29sbGF0b3IuZ2V0SW5zdGFuY2UoTG9jYWxlLkVOR0xJU0gpOyAgICAKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogaW4gY3JlYXRpb24gb2YgY29sbGF0b3Igb2YgRU5HTElTSCBsb2NhbGUiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgU3RyaW5nIGJhc2VSdWxlcyA9ICgoUnVsZUJhc2VkQ29sbGF0b3IpY29sKS5nZXRSdWxlcygpOworICAgICAgICBTdHJpbmcgbmV3UnVsZXMgPSAiICYgWiA8IHAsIFAiOworICAgICAgICBuZXdSdWxlcyA9IGJhc2VSdWxlcyArIG5ld1J1bGVzOyAKKyAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IgbXlDb2xsYXRpb24gPSBudWxsOyAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG15Q29sbGF0aW9uID0gbmV3IFJ1bGVCYXNlZENvbGxhdG9yKG5ld1J1bGVzKTsKKyAgICAgICAgfSBjYXRjaChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkZhaWwgdG8gY3JlYXRlIFJ1bGVCYXNlZENvbGxhdG9yIHdpdGggcnVsZXM6IiArIG5ld1J1bGVzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKG15Q29sbGF0aW9uID09IG51bGwpIHsKKyAgICAgICAgICAgIGVycmxuKCJEZW1vIFRlc3QgMiBUYWJsZSBDb2xsYXRpb24gb2JqZWN0IGNyZWF0aW9uIGZhaWxlZC4iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaW50IGosIG47CisgICAgICAgIGZvciAoaiA9IDA7IGogPCBGSVhFRFRFU1RTRVQ7IGorKykgeworICAgICAgICAgICAgZm9yIChuID0gaisxOyBuIDwgRklYRURURVNUU0VUOyBuKyspIHsKKyAgICAgICAgICAgICAgICBkb1Rlc3QobXlDb2xsYXRpb24sIHRlc3RDYXNlc1tyZXN1bHRzWzhdW2pdXSwgdGVzdENhc2VzW3Jlc3VsdHNbOF1bbl1dLCAtMSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisKKyAgICAvLyBwZXJvcm0gdGVzdCB3aXRoIGFkZGVkIHJ1bGVzICImIEMgPCBjaCAsIGNILCBDaCwgQ0giCisgICAgcHVibGljIHZvaWQgVGVzdERlbW8yKCkgeworICAgICAgICBsb2dsbigiRGVtbyBUZXN0IDIgOiBDcmVhdGUgYSBuZXcgdGFibGUgY29sbGF0aW9uIHdpdGggcnVsZXMgXCImIEMgPCBjaCAsIGNILCBDaCwgQ0hcIiIpOworICAgICAgICBDb2xsYXRvciBjb2w7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjb2wgPSBDb2xsYXRvci5nZXRJbnN0YW5jZShMb2NhbGUuRU5HTElTSCk7ICAgIAorICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBpbiBjcmVhdGlvbiBvZiBjb2xsYXRvciBvZiBFTkdMSVNIIGxvY2FsZSIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgU3RyaW5nIGJhc2VSdWxlcyA9ICgoUnVsZUJhc2VkQ29sbGF0b3IpY29sKS5nZXRSdWxlcygpOworICAgICAgICBTdHJpbmcgbmV3UnVsZXMgPSAiJiBDIDwgY2ggLCBjSCwgQ2gsIENIIjsKKyAgICAgICAgbmV3UnVsZXMgPSBiYXNlUnVsZXMgKyBuZXdSdWxlczsgCisgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yIG15Q29sbGF0aW9uID0gbnVsbDsgCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBteUNvbGxhdGlvbiA9IG5ldyBSdWxlQmFzZWRDb2xsYXRvcihuZXdSdWxlcyk7CisgICAgICAgIH1jYXRjaChFeGNlcHRpb24gZSl7CisgICAgICAgICAgICBlcnJsbigiRmFpbCB0byBjcmVhdGUgUnVsZUJhc2VkQ29sbGF0b3Igd2l0aCBydWxlczoiICsgbmV3UnVsZXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9ICAKKworICAgICAgICBpbnQgaiwgbjsKKyAgICAgICAgZm9yIChqID0gMDsgaiA8IFRPVEFMVEVTVFNFVDsgaisrKSB7CisgICAgICAgICAgICBmb3IgKG4gPSBqKzE7IG4gPCBUT1RBTFRFU1RTRVQ7IG4rKykgeworICAgICAgICAgICAgICAgIGRvVGVzdChteUNvbGxhdGlvbiwgdGVzdENhc2VzW3Jlc3VsdHNbOV1bal1dLCB0ZXN0Q2FzZXNbcmVzdWx0c1s5XVtuXV0sIC0xKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKworICAgIC8vIHBlcmZvcm0gdGVzdCB3aXRoIGFkZGVkIHJ1bGVzIAorICAgIC8vICImIFF1ZXN0aW9uJy0nbWFyayA7ICc/JyAmIEhhc2gnLSdtYXJrIDsgJyMnICYgQW1wZXJzYW5kIDsgJyYnIgorICAgIHB1YmxpYyB2b2lkIFRlc3REZW1vMygpIHsKKyAgICAgICAgLy8gbG9nbG4oIkRlbW8gVGVzdCAzIDogQ3JlYXRlIGEgbmV3IHRhYmxlIGNvbGxhdGlvbiB3aXRoIHJ1bGVzIFwiJiBRdWVzdGlvbictJ21hcmsgOyAnPycgJiBIYXNoJy0nbWFyayA7ICcjJyAmIEFtcGVyc2FuZCA7ICcmJ1wiIik7CisgICAgICAgIENvbGxhdG9yIGNvbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNvbCA9IENvbGxhdG9yLmdldEluc3RhbmNlKExvY2FsZS5FTkdMSVNIKTsgICAgCisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiRVJST1I6IGluIGNyZWF0aW9uIG9mIGNvbGxhdG9yIG9mIEVOR0xJU0ggbG9jYWxlIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFN0cmluZyBiYXNlUnVsZXMgPSAoKFJ1bGVCYXNlZENvbGxhdG9yKWNvbCkuZ2V0UnVsZXMoKTsKKyAgICAgICAgU3RyaW5nIG5ld1J1bGVzID0gIiYgUXVlc3Rpb24nLSdtYXJrIDsgJz8nICYgSGFzaCctJ21hcmsgOyAnIycgJiBBbXBlcnNhbmQgOyAnJiciOworICAgICAgICBuZXdSdWxlcyA9IGJhc2VSdWxlcyArIG5ld1J1bGVzOworICAgICAgICBSdWxlQmFzZWRDb2xsYXRvciBteUNvbGxhdGlvbiA9IG51bGw7IAorICAgICAgICB0cnkgeworICAgICAgICAgICAgbXlDb2xsYXRpb24gPSBuZXcgUnVsZUJhc2VkQ29sbGF0b3IobmV3UnVsZXMpOworICAgICAgICB9Y2F0Y2goRXhjZXB0aW9uIGUpeworICAgICAgICAgICAgZXJybG4oIkZhaWwgdG8gY3JlYXRlIFJ1bGVCYXNlZENvbGxhdG9yIHdpdGggcnVsZXM6IiArIG5ld1J1bGVzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSAgCisKKyAgICAgICAgaW50IGosIG47CisgICAgICAgIGZvciAoaiA9IDA7IGogPCBUT1RBTFRFU1RTRVQ7IGorKykgeworICAgICAgICAgICAgZm9yIChuID0gaisxOyBuIDwgVE9UQUxURVNUU0VUOyBuKyspIHsKKyAgICAgICAgICAgICAgICBkb1Rlc3QobXlDb2xsYXRpb24sIHRlc3RDYXNlc1tyZXN1bHRzWzEwXVtqXV0sIHRlc3RDYXNlc1tyZXN1bHRzWzEwXVtuXV0sIC0xKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKworICAgIC8vIHBlcmZvcm0gdGVzdCB3aXRoIGFkZGVkIHJ1bGVzIAorICAgIC8vICIgJiBhYSA7IGEnLScgJiBlZSA7IGUnLScgJiBpaSA7IGknLScgJiBvbyA7IG8nLScgJiB1dSA7IHUnLScgIgorICAgIHB1YmxpYyB2b2lkIFRlc3REZW1vNCgpIHsKKyAgICAgICAgbG9nbG4oIkRlbW8gVGVzdCA0IDogQ3JlYXRlIGEgbmV3IHRhYmxlIGNvbGxhdGlvbiB3aXRoIHJ1bGVzIFwiICYgYWEgOyBhJy0nICYgZWUgOyBlJy0nICYgaWkgOyBpJy0nICYgb28gOyBvJy0nICYgdXUgOyB1Jy0nIFwiIik7CisgICAgICAgIENvbGxhdG9yIGNvbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNvbCA9IENvbGxhdG9yLmdldEluc3RhbmNlKExvY2FsZS5FTkdMSVNIKTsgICAgCisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiRVJST1I6IGluIGNyZWF0aW9uIG9mIGNvbGxhdG9yIG9mIEVOR0xJU0ggbG9jYWxlIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgU3RyaW5nIGJhc2VSdWxlcyA9ICgoUnVsZUJhc2VkQ29sbGF0b3IpY29sKS5nZXRSdWxlcygpOworICAgICAgICBTdHJpbmcgbmV3UnVsZXMgPSAiICYgYWEgOyBhJy0nICYgZWUgOyBlJy0nICYgaWkgOyBpJy0nICYgb28gOyBvJy0nICYgdXUgOyB1Jy0nICI7CisgICAgICAgIG5ld1J1bGVzID0gYmFzZVJ1bGVzICsgbmV3UnVsZXM7CisgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yIG15Q29sbGF0aW9uID0gbnVsbDsgCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBteUNvbGxhdGlvbiA9IG5ldyBSdWxlQmFzZWRDb2xsYXRvcihuZXdSdWxlcyk7CisgICAgICAgIH1jYXRjaChFeGNlcHRpb24gZSl7CisgICAgICAgICAgICBlcnJsbigiRmFpbCB0byBjcmVhdGUgUnVsZUJhc2VkQ29sbGF0b3Igd2l0aCBydWxlczoiICsgbmV3UnVsZXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9ICAKKworICAgICAgICBpbnQgaiwgbjsKKyAgICAgICAgZm9yIChqID0gMDsgaiA8IFRPVEFMVEVTVFNFVDsgaisrKSB7CisgICAgICAgICAgICBmb3IgKG4gPSBqKzE7IG4gPCBUT1RBTFRFU1RTRVQ7IG4rKykgeworICAgICAgICAgICAgICAgIGRvVGVzdChteUNvbGxhdGlvbiwgdGVzdENhc2VzW3Jlc3VsdHNbMTFdW2pdXSwgdGVzdENhc2VzW3Jlc3VsdHNbMTFdW25dXSwgLTEpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIAorICAgIAorICAgIAorICAgIC8vIG1haW4gdGVzdCByb3V0aW5lLCB0ZXN0cyBjb21wYXJpc29ucyBmb3IgYSBzZXQgb2Ygc3RyaW5ncyBhZ2FpbnN0IHNldHMgb2YgZXhwZWN0ZWQgcmVzdWx0cworICAgIHByaXZhdGUgdm9pZCBkb1Rlc3QoQ29sbGF0b3IgbXlDb2xsYXRpb24sIFN0cmluZyBzb3VyY2UsIFN0cmluZyB0YXJnZXQsIAorICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlc3VsdCl7CisgICAgICAgIAorICAgICAgICBpbnQgY29tcGFyZVJlc3VsdCA9IG15Q29sbGF0aW9uLmNvbXBhcmUoc291cmNlLCB0YXJnZXQpOworICAgICAgICBDb2xsYXRpb25LZXkgc29ydEtleTEsIHNvcnRLZXkyOworICAgICAgICBzb3J0S2V5MSA9IG15Q29sbGF0aW9uLmdldENvbGxhdGlvbktleShzb3VyY2UpOworICAgICAgICBzb3J0S2V5MiA9IG15Q29sbGF0aW9uLmdldENvbGxhdGlvbktleSh0YXJnZXQpOworICAgICAgICBpbnQga2V5UmVzdWx0ID0gc29ydEtleTEuY29tcGFyZVRvKHNvcnRLZXkyKTsKKyAgICAgICAgcmVwb3J0Q1Jlc3VsdChzb3VyY2UsIHRhcmdldCwgc29ydEtleTEsIHNvcnRLZXkyLCBjb21wYXJlUmVzdWx0LCAKKyAgICAgICAgICAgICAgICAgICAgICBrZXlSZXN1bHQsIGNvbXBhcmVSZXN1bHQsIHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgdm9pZCByZXBvcnRDUmVzdWx0KCBTdHJpbmcgc291cmNlLCBTdHJpbmcgdGFyZ2V0LCBDb2xsYXRpb25LZXkgc291cmNlS2V5LCBDb2xsYXRpb25LZXkgdGFyZ2V0S2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY29tcGFyZVJlc3VsdCwgaW50IGtleVJlc3VsdCwgaW50IGluY1Jlc3VsdCwgaW50IGV4cGVjdGVkUmVzdWx0ICl7CisgICAgICAgIGlmIChleHBlY3RlZFJlc3VsdCA8IC0xIHx8IGV4cGVjdGVkUmVzdWx0ID4gMSkgeworICAgICAgICAgICAgZXJybG4oIioqKioqIGludmFsaWQgY2FsbCB0byByZXBvcnRDUmVzdWx0ICoqKioiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2xlYW4gb2sxID0gKGNvbXBhcmVSZXN1bHQgPT0gZXhwZWN0ZWRSZXN1bHQpOworICAgICAgICBib29sZWFuIG9rMiA9IChrZXlSZXN1bHQgPT0gZXhwZWN0ZWRSZXN1bHQpOworICAgICAgICBib29sZWFuIG9rMyA9IChpbmNSZXN1bHQgPT0gZXhwZWN0ZWRSZXN1bHQpOworCisgICAgICAgIGlmIChvazEgJiYgb2syICYmIG9rMyAmJiAhaXNWZXJib3NlKCkpeworICAgICAgICAgICAgcmV0dXJuOyAgICAKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFN0cmluZyBtc2cxID0gb2sxPyAiT2s6IGNvbXBhcmUoXCIiIDogIkZBSUw6IGNvbXBhcmUoXCIiOworICAgICAgICAgICAgU3RyaW5nIG1zZzIgPSAiXCIsIFwiIjsKKyAgICAgICAgICAgIFN0cmluZyBtc2czID0gIlwiKSByZXR1cm5lZCAiOworICAgICAgICAgICAgU3RyaW5nIG1zZzQgPSAiOyBleHBlY3RlZCAiOworICAgICAgICAgICAgCisgICAgICAgICAgICBTdHJpbmcgc0V4cGVjdCA9IG5ldyBTdHJpbmcoIiIpOworICAgICAgICAgICAgU3RyaW5nIHNSZXN1bHQgPSBuZXcgU3RyaW5nKCIiKTsKKyAgICAgICAgICAgIHNSZXN1bHQgPSBhcHBlbmRDb21wYXJlUmVzdWx0KGNvbXBhcmVSZXN1bHQsIHNSZXN1bHQpOworICAgICAgICAgICAgc0V4cGVjdCA9IGFwcGVuZENvbXBhcmVSZXN1bHQoZXhwZWN0ZWRSZXN1bHQsIHNFeHBlY3QpOworICAgICAgICAgICAgaWYgKG9rMSkgeworICAgICAgICAgICAgICAgIGxvZ2xuKG1zZzEgKyBzb3VyY2UgKyBtc2cyICsgdGFyZ2V0ICsgbXNnMyArIHNSZXN1bHQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBlcnJsbihtc2cxICsgc291cmNlICsgbXNnMiArIHRhcmdldCArIG1zZzMgKyBzUmVzdWx0ICsgbXNnNCArIHNFeHBlY3QpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBtc2cxID0gb2syID8gIk9rOiBrZXkoXCIiIDogIkZBSUw6IGtleShcIiI7CisgICAgICAgICAgICBtc2cyID0gIlwiKS5jb21wYXJlVG8oa2V5KFwiIjsKKyAgICAgICAgICAgIG1zZzMgPSAiXCIpKSByZXR1cm5lZCAiOworICAgICAgICAgICAgc1Jlc3VsdCA9IGFwcGVuZENvbXBhcmVSZXN1bHQoa2V5UmVzdWx0LCBzUmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChvazIpIHsKKyAgICAgICAgICAgICAgICBsb2dsbihtc2cxICsgc291cmNlICsgbXNnMiArIHRhcmdldCArIG1zZzMgKyBzUmVzdWx0KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZXJybG4obXNnMSArIHNvdXJjZSArIG1zZzIgKyB0YXJnZXQgKyBtc2czICsgc1Jlc3VsdCArIG1zZzQgKyBzRXhwZWN0KTsKKyAgICAgICAgICAgICAgICBtc2cxID0gIiAgIjsKKyAgICAgICAgICAgICAgICBtc2cyID0gIiB2cy4gIjsKKyAgICAgICAgICAgICAgICBlcnJsbihtc2cxICsgcHJldHRpZnkoc291cmNlS2V5KSArIG1zZzIgKyBwcmV0dGlmeSh0YXJnZXRLZXkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgbXNnMSA9IG9rMyA/ICJPazogaW5jQ29tcGFyZShcIiIgOiAiRkFJTDogaW5jQ29tcGFyZShcIiI7CisgICAgICAgICAgICBtc2cyID0gIlwiLCBcIiI7CisgICAgICAgICAgICBtc2czID0gIlwiKSByZXR1cm5lZCAiOworCisgICAgICAgICAgICBzUmVzdWx0ID0gYXBwZW5kQ29tcGFyZVJlc3VsdChpbmNSZXN1bHQsIHNSZXN1bHQpOworCisgICAgICAgICAgICBpZiAob2szKSB7CisgICAgICAgICAgICAgICAgbG9nbG4obXNnMSArIHNvdXJjZSArIG1zZzIgKyB0YXJnZXQgKyBtc2czICsgc1Jlc3VsdCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGVycmxuKG1zZzEgKyBzb3VyY2UgKyBtc2cyICsgdGFyZ2V0ICsgbXNnMyArIHNSZXN1bHQgKyBtc2c0ICsgc0V4cGVjdCk7CisgICAgICAgICAgICB9ICAgICAgICAgICAgICAgIAorICAgICAgICB9CisgICAgfQorICAgIAorICAgIHByaXZhdGUgU3RyaW5nIGFwcGVuZENvbXBhcmVSZXN1bHQoaW50IHJlc3VsdCwgU3RyaW5nIHRhcmdldCl7CisgICAgICAgIGlmIChyZXN1bHQgPT0gLTEpIHsKKyAgICAgICAgICAgIHRhcmdldCArPSAiTEVTUyI7CisgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IDApIHsKKyAgICAgICAgICAgIHRhcmdldCArPSAiRVFVQUwiOworICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSAxKSB7CisgICAgICAgICAgICB0YXJnZXQgKz0gIkdSRUFURVIiOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgU3RyaW5nIGh1aCA9ICI/IjsKKyAgICAgICAgICAgIHRhcmdldCArPSBodWggKyByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRhcmdldDsKKyAgICB9CisgICAgCisgICBTdHJpbmcgcHJldHRpZnkoQ29sbGF0aW9uS2V5IHNvdXJjZUtleSkgeworICAgICAgICBpbnQgaTsKKyAgICAgICAgYnl0ZVtdIGJ5dGVzPSBzb3VyY2VLZXkudG9CeXRlQXJyYXkoKTsKKyAgICAgICAgU3RyaW5nIHRhcmdldCA9ICJbIjsKKyAgICAKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICB0YXJnZXQgKz0gSW50ZWdlci50b0hleFN0cmluZyhieXRlc1tpXSk7CisgICAgICAgICAgICB0YXJnZXQgKz0gIiAiOworICAgICAgICB9CisgICAgICAgIHRhcmdldCArPSAiXSI7CisgICAgICAgIHJldHVybiB0YXJnZXQ7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9jb2xsYXRvci9Mb3R1c0NvbGxhdGlvbktvcmVhblRlc3QuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9jb2xsYXRvci9Mb3R1c0NvbGxhdGlvbktvcmVhblRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41M2U5YmIxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NvbGxhdG9yL0xvdHVzQ29sbGF0aW9uS29yZWFuVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTU2IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgICAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICRTb3VyY2U6IAorICogJERhdGU6IAorICogJFJldmlzaW9uOiAKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCisvKiogCisgKiBQb3J0IEZyb206ICAgSUNVNEMgdjIuMSA6IENvbGxhdGUvTG90dXNDb2xsYXRpb25Lb3JlYW5UZXN0CisgKiBTb3VyY2UgRmlsZTogJElDVTRDUm9vdC9zb3VyY2UvdGVzdC9pbnRsdGVzdC9sY3Vrb2NvbC5jcHAKKyAqKi8KKyAKK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3QuY29sbGF0b3I7CisgCitpbXBvcnQgY29tLmlibS5pY3UuZGV2LnRlc3QuKjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0Lio7CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKKyAKK3B1YmxpYyBjbGFzcyBMb3R1c0NvbGxhdGlvbktvcmVhblRlc3QgZXh0ZW5kcyBUZXN0Rm13a3sKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9ueworICAgICAgICBuZXcgTG90dXNDb2xsYXRpb25Lb3JlYW5UZXN0KCkucnVuKGFyZ3MpOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBjaGFyW11bXSB0ZXN0U291cmNlQ2FzZXMgPSB7CisgICAgICAgIHsweGFjMDB9CisgICAgfTsKKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBjaGFyW11bXSB0ZXN0VGFyZ2V0Q2FzZXMgPSB7CisgICAgICAgIHsweGFjMDF9CisgICAgfTsKKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBpbnRbXSByZXN1bHRzID0geworICAgICAgICAtMQorICAgIH07CisgICAgCisgICAgcHJpdmF0ZSBDb2xsYXRvciBteUNvbGxhdGlvbjsKKyAgICAKKyAgICBwdWJsaWMgTG90dXNDb2xsYXRpb25Lb3JlYW5UZXN0KCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgbXlDb2xsYXRpb24gPSBDb2xsYXRvci5nZXRJbnN0YW5jZShMb2NhbGUuS09SRUFOKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogaW4gY3JlYXRpb24gb2YgY29sbGF0b3Igb2YgS09SRUFOIGxvY2FsZSIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG15Q29sbGF0aW9uLnNldERlY29tcG9zaXRpb24oQ29sbGF0b3IuQ0FOT05JQ0FMX0RFQ09NUE9TSVRJT04pOworICAgIH0KKyAgICAKKyAgICAvLyBwZXJmb3JtcyB0ZXN0IHdpdGggc3RyZW5ndGggVEVSSUFSWQorICAgIHB1YmxpYyB2b2lkIFRlc3RUZXJ0aWFyeSgpIHsKKyAgICAgICAgaW50IGkgPSAwOworICAgICAgICBteUNvbGxhdGlvbi5zZXRTdHJlbmd0aChDb2xsYXRvci5URVJUSUFSWSk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCAxOyBpKyspIHsKKyAgICAgICAgICAgIGRvVGVzdCh0ZXN0U291cmNlQ2FzZXNbaV0sIHRlc3RUYXJnZXRDYXNlc1tpXSwgcmVzdWx0c1tpXSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAKKyAgICAvLyBtYWluIHRlc3Qgcm91dGluZSwgdGVzdHMgcnVsZXMgc3BlY2lmaWMgdG8gIktvcmVhbiIgbG9jYWxlCisgICAgcHJpdmF0ZSB2b2lkIGRvVGVzdCggY2hhcltdIHNvdXJjZSwgY2hhcltdIHRhcmdldCwgaW50IHJlc3VsdCkgeworICAgICAgICBTdHJpbmcgcyA9IG5ldyBTdHJpbmcoc291cmNlKTsKKyAgICAgICAgU3RyaW5nIHQgPSBuZXcgU3RyaW5nKHRhcmdldCk7CisgICAgICAgIGludCBjb21wYXJlUmVzdWx0ID0gbXlDb2xsYXRpb24uY29tcGFyZShzLCB0KTsKKyAgICAgICAgQ29sbGF0aW9uS2V5IHNvcnRLZXkxLCBzb3J0S2V5MjsKKyAgICAgICAgc29ydEtleTEgPSBteUNvbGxhdGlvbi5nZXRDb2xsYXRpb25LZXkocyk7CisgICAgICAgIHNvcnRLZXkyID0gbXlDb2xsYXRpb24uZ2V0Q29sbGF0aW9uS2V5KHQpOworICAgICAgICBpbnQga2V5UmVzdWx0ID0gc29ydEtleTEuY29tcGFyZVRvKHNvcnRLZXkyKTsKKyAgICAgICAgcmVwb3J0Q1Jlc3VsdCggcywgdCwgc29ydEtleTEsIHNvcnRLZXkyLCBjb21wYXJlUmVzdWx0LCBrZXlSZXN1bHQsIGNvbXBhcmVSZXN1bHQsIHJlc3VsdCApOyAKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgcmVwb3J0Q1Jlc3VsdCggU3RyaW5nIHNvdXJjZSwgU3RyaW5nIHRhcmdldCwgQ29sbGF0aW9uS2V5IHNvdXJjZUtleSwgQ29sbGF0aW9uS2V5IHRhcmdldEtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvbXBhcmVSZXN1bHQsIGludCBrZXlSZXN1bHQsIGludCBpbmNSZXN1bHQsIGludCBleHBlY3RlZFJlc3VsdCApeworICAgICAgICBpZiAoZXhwZWN0ZWRSZXN1bHQgPCAtMSB8fCBleHBlY3RlZFJlc3VsdCA+IDEpIHsKKyAgICAgICAgICAgIGVycmxuKCIqKioqKiBpbnZhbGlkIGNhbGwgdG8gcmVwb3J0Q1Jlc3VsdCAqKioqIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBib29sZWFuIG9rMSA9IChjb21wYXJlUmVzdWx0ID09IGV4cGVjdGVkUmVzdWx0KTsKKyAgICAgICAgYm9vbGVhbiBvazIgPSAoa2V5UmVzdWx0ID09IGV4cGVjdGVkUmVzdWx0KTsKKyAgICAgICAgYm9vbGVhbiBvazMgPSAoaW5jUmVzdWx0ID09IGV4cGVjdGVkUmVzdWx0KTsKKworICAgICAgICBpZiAob2sxICYmIG9rMiAmJiBvazMgJiYgIWlzVmVyYm9zZSgpKSB7CisgICAgICAgICAgICByZXR1cm47ICAgIAorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgU3RyaW5nIG1zZzEgPSBvazE/ICJPazogY29tcGFyZShcIiIgOiAiRkFJTDogY29tcGFyZShcIiI7CisgICAgICAgICAgICBTdHJpbmcgbXNnMiA9ICJcIiwgXCIiOworICAgICAgICAgICAgU3RyaW5nIG1zZzMgPSAiXCIpIHJldHVybmVkICI7CisgICAgICAgICAgICBTdHJpbmcgbXNnNCA9ICI7IGV4cGVjdGVkICI7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFN0cmluZyBzRXhwZWN0ID0gbmV3IFN0cmluZygiIik7CisgICAgICAgICAgICBTdHJpbmcgc1Jlc3VsdCA9IG5ldyBTdHJpbmcoIiIpOworICAgICAgICAgICAgc1Jlc3VsdCA9IGFwcGVuZENvbXBhcmVSZXN1bHQoY29tcGFyZVJlc3VsdCwgc1Jlc3VsdCk7CisgICAgICAgICAgICBzRXhwZWN0ID0gYXBwZW5kQ29tcGFyZVJlc3VsdChleHBlY3RlZFJlc3VsdCwgc0V4cGVjdCk7CisgICAgICAgICAgICBpZiAob2sxKSB7CisgICAgICAgICAgICAgICAgbG9nbG4obXNnMSArIHNvdXJjZSArIG1zZzIgKyB0YXJnZXQgKyBtc2czICsgc1Jlc3VsdCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGVycmxuKG1zZzEgKyBzb3VyY2UgKyBtc2cyICsgdGFyZ2V0ICsgbXNnMyArIHNSZXN1bHQgKyBtc2c0ICsgc0V4cGVjdCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1zZzEgPSBvazIgPyAiT2s6IGtleShcIiIgOiAiRkFJTDoga2V5KFwiIjsKKyAgICAgICAgICAgIG1zZzIgPSAiXCIpLmNvbXBhcmVUbyhrZXkoXCIiOworICAgICAgICAgICAgbXNnMyA9ICJcIikpIHJldHVybmVkICI7CisgICAgICAgICAgICBzUmVzdWx0ID0gYXBwZW5kQ29tcGFyZVJlc3VsdChrZXlSZXN1bHQsIHNSZXN1bHQpOworICAgICAgICAgICAgaWYgKG9rMikgeworICAgICAgICAgICAgICAgIGxvZ2xuKG1zZzEgKyBzb3VyY2UgKyBtc2cyICsgdGFyZ2V0ICsgbXNnMyArIHNSZXN1bHQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBlcnJsbihtc2cxICsgc291cmNlICsgbXNnMiArIHRhcmdldCArIG1zZzMgKyBzUmVzdWx0ICsgbXNnNCArIHNFeHBlY3QpOworICAgICAgICAgICAgICAgIG1zZzEgPSAiICAiOworICAgICAgICAgICAgICAgIG1zZzIgPSAiIHZzLiAiOworICAgICAgICAgICAgICAgIGVycmxuKG1zZzEgKyBwcmV0dGlmeShzb3VyY2VLZXkpICsgbXNnMiArIHByZXR0aWZ5KHRhcmdldEtleSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBtc2cxID0gb2szID8gIk9rOiBpbmNDb21wYXJlKFwiIiA6ICJGQUlMOiBpbmNDb21wYXJlKFwiIjsKKyAgICAgICAgICAgIG1zZzIgPSAiXCIsIFwiIjsKKyAgICAgICAgICAgIG1zZzMgPSAiXCIpIHJldHVybmVkICI7CisKKyAgICAgICAgICAgIHNSZXN1bHQgPSBhcHBlbmRDb21wYXJlUmVzdWx0KGluY1Jlc3VsdCwgc1Jlc3VsdCk7CisKKyAgICAgICAgICAgIGlmIChvazMpIHsKKyAgICAgICAgICAgICAgICBsb2dsbihtc2cxICsgc291cmNlICsgbXNnMiArIHRhcmdldCArIG1zZzMgKyBzUmVzdWx0KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZXJybG4obXNnMSArIHNvdXJjZSArIG1zZzIgKyB0YXJnZXQgKyBtc2czICsgc1Jlc3VsdCArIG1zZzQgKyBzRXhwZWN0KTsKKyAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgCisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBTdHJpbmcgYXBwZW5kQ29tcGFyZVJlc3VsdChpbnQgcmVzdWx0LCBTdHJpbmcgdGFyZ2V0KXsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSAtMSkgeworICAgICAgICAgICAgdGFyZ2V0ICs9ICJMRVNTIjsKKyAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gMCkgeworICAgICAgICAgICAgdGFyZ2V0ICs9ICJFUVVBTCI7CisgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IDEpIHsKKyAgICAgICAgICAgIHRhcmdldCArPSAiR1JFQVRFUiI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBTdHJpbmcgaHVoID0gIj8iOworICAgICAgICAgICAgdGFyZ2V0ICs9IGh1aCArIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdGFyZ2V0OworICAgIH0KKyAgICAKKyAgICBTdHJpbmcgcHJldHRpZnkoQ29sbGF0aW9uS2V5IHNvdXJjZUtleSkgeworICAgICAgICBpbnQgaTsKKyAgICAgICAgYnl0ZVtdIGJ5dGVzPSBzb3VyY2VLZXkudG9CeXRlQXJyYXkoKTsKKyAgICAgICAgU3RyaW5nIHRhcmdldCA9ICJbIjsKKyAgICAKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICB0YXJnZXQgKz0gSW50ZWdlci50b0hleFN0cmluZyhieXRlc1tpXSk7CisgICAgICAgICAgICB0YXJnZXQgKz0gIiAiOworICAgICAgICB9CisgICAgICAgIHRhcmdldCArPSAiXSI7CisgICAgICAgIHJldHVybiB0YXJnZXQ7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9jb21wcmVzc2lvbi9EZWNvbXByZXNzaW9uVGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NvbXByZXNzaW9uL0RlY29tcHJlc3Npb25UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNjVkMTRiMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9jb21wcmVzc2lvbi9EZWNvbXByZXNzaW9uVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTMwIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY29tcHJlc3Npb24vRGVjb21wcmVzc2lvblRlc3QuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNTowNyAkIAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0LmNvbXByZXNzaW9uOworCitpbXBvcnQgY29tLmlibS5pY3UudGV4dC5Vbmljb2RlQ29tcHJlc3NvcjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0LlVuaWNvZGVEZWNvbXByZXNzb3I7CitpbXBvcnQgY29tLmlibS5pY3UuZGV2LnRlc3QuVGVzdEZtd2s7CisKK3B1YmxpYyBjbGFzcyBEZWNvbXByZXNzaW9uVGVzdCBleHRlbmRzIFRlc3RGbXdrIHsKKwlwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkJbmV3IERlY29tcHJlc3Npb25UZXN0KCkucnVuKGFyZ3MpOworCX0KKworICAgIC8qKiBQcmludCBvdXQgYSBzZWdtZW50IG9mIGEgY2hhcmFjdGVyIGFycmF5LCBpZiBpbiB2ZXJib3NlIG1vZGUgKi8KKyAgICBwcml2YXRlIHZvaWQgbG9nKGNoYXIgW10gY2hhcnMsIGludCBzdGFydCwgaW50IGNvdW50KSB7CisgICAgICAgIGxvZygifCIpOworICAgICAgICBmb3IoaW50IGkgPSBzdGFydDsgaSA8IHN0YXJ0ICsgY291bnQ7ICsraSkgeworICAgICAgICAgICAgbG9nKFN0cmluZy52YWx1ZU9mKGNoYXJzW2ldKSk7CisgICAgICAgIH0KKyAgICAgICAgbG9nKCJ8Iik7CisgICAgfQorCisgICAgLyoqIFByaW50IG91dCBhIHNlZ21lbnQgb2YgYSBjaGFyYWN0ZXIgYXJyYXksIGZvbGxvd2VkIGJ5IGEgbmV3bGluZSAqLworICAgIHByaXZhdGUgdm9pZCBsb2dsbihjaGFyIFtdIGNoYXJzLCBpbnQgc3RhcnQsIGludCBjb3VudCkKKyAgICB7CisgICAgICAgIGxvZyhjaGFycywgc3RhcnQsIGNvdW50KTsKKyAgICAgICAgbG9nbG4oIiIpOworICAgIH0KKworICAgIC8qKiBEZWNvbXByZXNzIHRoZSB0d28gc2VnbWVudHMgKi8KKyAgICBwcml2YXRlIFN0cmluZyBkZWNvbXByZXNzVGVzdChieXRlIFtdIHNlZ21lbnQxLCBieXRlIFtdIHNlZ21lbnQyKSB7CisgICAgICAgIFN0cmluZ0J1ZmZlciBzID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBVbmljb2RlRGVjb21wcmVzc29yIG15RGVjb21wcmVzc29yID0gbmV3IFVuaWNvZGVEZWNvbXByZXNzb3IoKTsKKworICAgICAgICBpbnQgW10gYnl0ZXNSZWFkID0gbmV3IGludFsxXTsKKyAgICAgICAgY2hhciBbXSBjaGFyQnVmZmVyID0gbmV3IGNoYXIgWzIqKHNlZ21lbnQxLmxlbmd0aCArIHNlZ21lbnQyLmxlbmd0aCldOworICAgICAgICBpbnQgY291bnQxID0gMCwgY291bnQyID0gMDsKKworICAgICAgICBjb3VudDEgPSBteURlY29tcHJlc3Nvci5kZWNvbXByZXNzKHNlZ21lbnQxLCAwLCBzZWdtZW50MS5sZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXNSZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJCdWZmZXIsIDAsIGNoYXJCdWZmZXIubGVuZ3RoKTsKKyAgICAgICAgCisgICAgICAgIGxvZ2xuKCJTZWdtZW50IDEgKCIgKyBzZWdtZW50MS5sZW5ndGggKyAiIGJ5dGVzKSAiICsKKyAgICAgICAgICAgICAgICAiZGVjb21wcmVzc2VkIGludG8gIiArIGNvdW50MSAgKyAiIGNoYXJzIik7CisgICAgICAgIGxvZ2xuKCJCeXRlcyBjb25zdW1lZDogIiArIGJ5dGVzUmVhZFswXSk7CisKKyAgICAgICAgbG9nbG4oIkdvdCBjaGFyczogIik7CisgICAgICAgIGxvZ2xuKGNoYXJCdWZmZXIsIDAsIGNvdW50MSk7CisgICAgICAgIHMuYXBwZW5kKGNoYXJCdWZmZXIsIDAsIGNvdW50MSk7CisKKyAgICAgICAgY291bnQyID0gbXlEZWNvbXByZXNzb3IuZGVjb21wcmVzcyhzZWdtZW50MiwgMCwgc2VnbWVudDIubGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzUmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyQnVmZmVyLCBjb3VudDEsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJCdWZmZXIubGVuZ3RoKTsKKyAgICAgICAgCisgICAgICAgIGxvZ2xuKCJTZWdtZW50IDIgKCIgKyBzZWdtZW50Mi5sZW5ndGggKyAiIGJ5dGVzKSAiICsKKyAgICAgICAgICAgICAgICAiZGVjb21wcmVzc2VkIGludG8gIiArIGNvdW50MiAgKyAiIGNoYXJzIik7CisgICAgICAgIGxvZ2xuKCJCeXRlcyBjb25zdW1lZDogIiArIGJ5dGVzUmVhZFswXSk7CisKKyAgICAgICAgbG9nbG4oIkdvdCBjaGFyczogIik7CisgICAgICAgIGxvZ2xuKGNoYXJCdWZmZXIsIGNvdW50MSwgY291bnQyKTsKKyAgICAgICAgCisgICAgICAgIHMuYXBwZW5kKGNoYXJCdWZmZXIsIGNvdW50MSwgY291bnQyKTsKKworICAgICAgICBsb2dsbigiUmVzdWx0OiAiKTsKKyAgICAgICAgbG9nbG4oY2hhckJ1ZmZlciwgMCwgY291bnQxICsgY291bnQyKTsKKyAgICAgICAgbG9nbG4oIj09PT09PT09PT09PT09PT09PT09Iik7CisKKyAgICAgICAgcmV0dXJuIHMudG9TdHJpbmcoKTsKKyAgICB9CisKKworICAgIHB1YmxpYyB2b2lkIHRlc3REZWNvbXByZXNzaW9uKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIFN0cmluZyByZXN1bHQ7CisKKyAgICAgICAgLy8gY29tcHJlc3NlZCBzZWdtZW50IGJyZWFraW5nIG9uIGEgZGVmaW5lIHdpbmRvdyBzZXF1ZW5jZQorICAgICAgICAvKiAgICAgICAgICAgICAgICAgICBCICAgICBvICAgICBvICAgICB0ICAgICBoICAgICBTRDEgICovCisgICAgICAgIGJ5dGUgW10gc2VnbWVudDEgPSB7IDB4NDIsIDB4NmYsIDB4NmYsIDB4NzQsIDB4NjgsIDB4MTkgfTsKKworICAgICAgICAvLyBjb250aW51YXRpb24KKyAgICAgICAgLyogICAgICAgICAgICAgICAgICAgSURYICAgLCAgICAgICAgICAgUyAgICAgLiAgICAgICAgICAqLworICAgICAgICBieXRlIFtdIHNlZ21lbnQyID0geyAweDAxLCAweDJjLCAweDIwLCAweDUzLCAweDJlIH07CisgICAgICAgIAorICAgICAgICByZXN1bHQgPSBkZWNvbXByZXNzVGVzdChzZWdtZW50MSwgc2VnbWVudDIpOworICAgICAgICBpZighIHJlc3VsdC5lcXVhbHMoIkJvb3RoLCBTLiIpKSB7CisgICAgICAgIAllcnJsbigiRGVjb21wcmVzc2lvbiB0ZXN0IGZhaWxlZCIpOworICAgICAgICAJcmV0dXJuOworCQl9CisKKyAgICAgICAgLy8gY29tcHJlc3NlZCBzZWdtZW50IGJyZWFraW5nIG9uIGEgcXVvdGUgdW5pY29kZSBzZXF1ZW5jZQorICAgICAgICAvKiAgICAgICAgICAgICAgICAgICBCICAgICBvICAgICBvICAgICB0ICAgICBTUVUgICAgICAgICovCisgICAgICAgIGJ5dGUgW10gc2VnbWVudDMgPSB7IDB4NDIsIDB4NmYsIDB4NmYsIDB4NzQsIDB4MGUsIDB4MDAgfTsKKworICAgICAgICAvLyBjb250aW51YXRpb24KKyAgICAgICAgLyogICAgICAgICAgICAgICAgICAgaCAgICAgLCAgICAgICAgICAgUyAgICAgLiAgICAgICAgICAqLworICAgICAgICBieXRlIFtdIHNlZ21lbnQ0ID0geyAweDY4LCAweDJjLCAweDIwLCAweDUzLCAweDJlIH07CisKKyAgICAgICAgcmVzdWx0ID0gZGVjb21wcmVzc1Rlc3Qoc2VnbWVudDMsIHNlZ21lbnQ0KTsKKyAgICAgICAgaWYoISByZXN1bHQuZXF1YWxzKCJCb290aCwgUy4iKSkgeworICAgICAgICAJZXJybG4oIkRlY29tcHJlc3Npb24gdGVzdCBmYWlsZWQiKTsKKyAgICAgICAgCXJldHVybjsKKwkJfQorCisKKyAgICAgICAgLy8gY29tcHJlc3NlZCBzZWdtZW50IGJyZWFraW5nIG9uIGEgcXVvdGUgdW5pY29kZSBzZXF1ZW5jZQorICAgICAgICAvKiAgICAgICAgICAgICAgICAgICBTQ1UgICBVUVUgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgYnl0ZSBbXSBzZWdtZW50NSA9IHsgMHgwZiwgKGJ5dGUpMHhmMCwgMHgwMCB9OworCisgICAgICAgIC8vIGNvbnRpbnVhdGlvbgorICAgICAgICAvKiAgICAgICAgICAgICAgICAgICBCICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgYnl0ZSBbXSBzZWdtZW50NiA9IHsgMHg0MiB9OworCisgICAgICAgIHJlc3VsdCA9IGRlY29tcHJlc3NUZXN0KHNlZ21lbnQ1LCBzZWdtZW50Nik7CisgICAgICAgIGlmKCEgcmVzdWx0LmVxdWFscygiQiIpKSB7CisgICAgICAgIAllcnJsbigiRGVjb21wcmVzc2lvbiB0ZXN0IGZhaWxlZCIpOworICAgICAgICAJcmV0dXJuOworCQl9CisgICAgfQorCit9OwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NvbXByZXNzaW9uL0V4aGF1c3RpdmVUZXN0LmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvY29tcHJlc3Npb24vRXhoYXVzdGl2ZVRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43MjlhODAwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NvbXByZXNzaW9uL0V4aGF1c3RpdmVUZXN0LmphdmEKQEAgLTAsMCArMSw1MjkgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9jb21wcmVzc2lvbi9FeGhhdXN0aXZlVGVzdC5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzAyLzE2IDAzOjA1OjA3ICQgCisgKiAkUmV2aXNpb246IDEuNSAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3QuY29tcHJlc3Npb247CisKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0LlVuaWNvZGVDb21wcmVzc29yOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuVW5pY29kZURlY29tcHJlc3NvcjsKK2ltcG9ydCBqYXZhLnV0aWwuUmFuZG9tOworaW1wb3J0IGNvbS5pYm0uaWN1LmRldi50ZXN0LlRlc3RGbXdrOworCitwdWJsaWMgY2xhc3MgRXhoYXVzdGl2ZVRlc3QgZXh0ZW5kcyBUZXN0Rm13ayB7CisJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIGFyZ3NbXSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCW5ldyBFeGhhdXN0aXZlVGVzdCgpLnJ1bihhcmdzKTsKKwl9CisKKyAgICAvKiogVGVzdCBzaW1wbGUgY29tcHJlc3MvZGVjb21wcmVzcyBBUEksIHJldHVybmluZyAjIG9mIGVycm9ycyAqLworCXB1YmxpYyB2b2lkIHRlc3RTaW1wbGUoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IGZUZXN0Q2FzZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIHNpbXBsZVRlc3QoZlRlc3RDYXNlc1tpXSk7CisgICAgICAgIH0KKwl9CisgICAgcHJpdmF0ZSB2b2lkIHNpbXBsZVRlc3QoU3RyaW5nIHMpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBieXRlIFtdIGNvbXByZXNzZWQgPSBVbmljb2RlQ29tcHJlc3Nvci5jb21wcmVzcyhzKTsKKyAgICAgICAgU3RyaW5nIHJlcyA9IFVuaWNvZGVEZWNvbXByZXNzb3IuZGVjb21wcmVzcyhjb21wcmVzc2VkKTsKKyAgICAgICAgaWYgKGxvZ0RpZmZzKHMudG9DaGFyQXJyYXkoKSwgcy5sZW5ndGgoKSwgCisgICAgICAgICAgICAgICAgcmVzLnRvQ2hhckFycmF5KCksIHJlcy5sZW5ndGgoKSkgPT0gZmFsc2UpIHsKKyAgICAgICAgICAgIGxvZ2xuKHMubGVuZ3RoKCkgKyAiIGNoYXJzID09PT4gIiAKKyAgICAgICAgICAgICAgICAgICAgKyBjb21wcmVzc2VkLmxlbmd0aCArICIgYnl0ZXMgPT09PiAiIAorICAgICAgICAgICAgICAgICAgICArIHJlcy5sZW5ndGgoKSArICIgY2hhcnMiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvZ2xuKCJDb21wcmVzc2VkOiIpOworICAgICAgICAgICAgcHJpbnRCeXRlcyhjb21wcmVzc2VkLCBjb21wcmVzc2VkLmxlbmd0aCk7CisgICAgICAgICAgICBlcnJsbigidGVzdFNpbXBsZSBkaWQgbm90IGNvbXByZXNzIGNvcnJlY3RseSIpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqIFRlc3QgaXRlcmF0aXZlIGNvbXByZXNzL2RlY29tcHJlc3MgQVBJLCByZXR1cm5pbmcgIyBvZiBlcnJvcnMgKi8KKyAgICBwdWJsaWMgdm9pZCB0ZXN0SXRlcmF0aXZlKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBmVGVzdENhc2VzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBteVRlc3QoZlRlc3RDYXNlc1tpXS50b0NoYXJBcnJheSgpLCBmVGVzdENhc2VzW2ldLmxlbmd0aCgpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBwcml2YXRlIHZvaWQgbXlUZXN0KGNoYXJbXSBjaGFycywgaW50IGxlbikgeworICAgICAgICBVbmljb2RlQ29tcHJlc3NvciBteUNvbXByZXNzb3IgPSBuZXcgVW5pY29kZUNvbXByZXNzb3IoKTsKKyAgICAgICAgVW5pY29kZURlY29tcHJlc3NvciBteURlY29tcHJlc3NvciA9IG5ldyBVbmljb2RlRGVjb21wcmVzc29yKCk7CisgICAgICAgIAorICAgICAgICAvLyB2YXJpYWJsZXMgZm9yIG15IGNvbXByZXNzb3IKKyAgICAgICAgaW50IG15Qnl0ZUNvdW50ID0gMDsKKyAgICAgICAgaW50IG15Q2hhckNvdW50ID0gMDsKKyAgICAgICAgaW50IG15Q29tcHJlc3NlZFNpemUgPSBNYXRoLm1heCg1MTIsIDMqbGVuKTsKKyAgICAgICAgYnl0ZVtdIG15Q29tcHJlc3NlZCA9IG5ldyBieXRlW215Q29tcHJlc3NlZFNpemVdOworICAgICAgICBpbnQgbXlEZWNvbXByZXNzZWRTaXplID0gTWF0aC5tYXgoMiwgMiAqIGxlbik7CisgICAgICAgIGNoYXJbXSBteURlY29tcHJlc3NlZCA9IG5ldyBjaGFyW215RGVjb21wcmVzc2VkU2l6ZV07CisgICAgICAgIGludFtdIHVuaWNoYXJzUmVhZCA9IG5ldyBpbnRbMV07CisgICAgICAgIGludFtdIGJ5dGVzUmVhZCA9IG5ldyBpbnRbMV07CisgICAgICAgIAorICAgICAgICBteUJ5dGVDb3VudCA9IG15Q29tcHJlc3Nvci5jb21wcmVzcyhjaGFycywgMCwgbGVuLCB1bmljaGFyc1JlYWQsCisgICAgICAgICAgICAgICAgbXlDb21wcmVzc2VkLCAwLCBteUNvbXByZXNzZWRTaXplKTsKKworICAgICAgICBteUNoYXJDb3VudCA9IG15RGVjb21wcmVzc29yLmRlY29tcHJlc3MobXlDb21wcmVzc2VkLCAwLCBteUJ5dGVDb3VudCwKKyAgICAgICAgICAgICAgICBieXRlc1JlYWQsIG15RGVjb21wcmVzc2VkLCAwLCBteURlY29tcHJlc3NlZFNpemUpOworCisgICAgICAgIGlmIChsb2dEaWZmcyhjaGFycywgbGVuLCBteURlY29tcHJlc3NlZCwgbXlDaGFyQ291bnQpID09IGZhbHNlKSB7CisgICAgICAgICAgICBsb2dsbihsZW4gKyAiIGNoYXJzID09PT4gIiAKKyAgICAgICAgICAgICAgICAgICAgKyBteUJ5dGVDb3VudCArICIgYnl0ZXMgPT09PiAiIAorICAgICAgICAgICAgICAgICAgICArIG15Q2hhckNvdW50ICsgIiBjaGFycyIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbG9nbG4oIkNvbXByZXNzZWQ6Iik7CisgICAgICAgICAgICBwcmludEJ5dGVzKG15Q29tcHJlc3NlZCwgbXlCeXRlQ291bnQpOworICAgICAgICAgICAgZXJybG4oIkl0ZXJhdGl2ZSB0ZXN0IGZhaWxlZCIpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqIFRlc3QgaXRlcmF0aXZlIGNvbXByZXNzL2RlY29tcHJlc3MgQVBJICovCisgICAgcHVibGljIHZvaWQgdGVzdE11bHRpcGFzcygpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgZlRlc3RDYXNlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgbXlNdWx0aXBhc3NUZXN0KGZUZXN0Q2FzZXNbaV0udG9DaGFyQXJyYXkoKSwgZlRlc3RDYXNlc1tpXS5sZW5ndGgoKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcHJpdmF0ZSB2b2lkIG15TXVsdGlwYXNzVGVzdChjaGFyIFtdIGNoYXJzLCBpbnQgbGVuKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgVW5pY29kZUNvbXByZXNzb3IgbXlDb21wcmVzc29yID0gbmV3IFVuaWNvZGVDb21wcmVzc29yKCk7CisgICAgICAgIFVuaWNvZGVEZWNvbXByZXNzb3IgbXlEZWNvbXByZXNzb3IgPSBuZXcgVW5pY29kZURlY29tcHJlc3NvcigpOworICAgICAgICAKKyAgICAgICAgLy8gdmFyaWFibGVzIGZvciBteSBjb21wcmVzc29yCisgICAgICAgIAorICAgICAgICAvLyBmb3IgbG9vcGluZworICAgICAgICBpbnQgYnl0ZUJ1ZmZlclNpemUgPSA0Oy8vTWF0aC5tYXgoNCwgbGVuIC8gNCk7CisgICAgICAgIGJ5dGVbXSBieXRlQnVmZmVyID0gbmV3IGJ5dGUgW2J5dGVCdWZmZXJTaXplXTsKKyAgICAgICAgLy8gcmVhbCB0YXJnZXQKKyAgICAgICAgaW50IGNvbXByZXNzZWRTaXplID0gTWF0aC5tYXgoNTEyLCAzICogbGVuKTsKKyAgICAgICAgYnl0ZVtdIGNvbXByZXNzZWQgPSBuZXcgYnl0ZVtjb21wcmVzc2VkU2l6ZV07CisKKyAgICAgICAgLy8gZm9yIGxvb3BpbmcKKyAgICAgICAgaW50IHVuaWNoYXJCdWZmZXJTaXplID0gMjsvL2J5dGVCdWZmZXJTaXplOworICAgICAgICBjaGFyW10gdW5pY2hhckJ1ZmZlciA9IG5ldyBjaGFyW3VuaWNoYXJCdWZmZXJTaXplXTsKKyAgICAgICAgLy8gcmVhbCB0YXJnZXQKKyAgICAgICAgaW50IGRlY29tcHJlc3NlZFNpemUgPSBNYXRoLm1heCgyLCAyICogbGVuKTsKKyAgICAgICAgY2hhcltdIGRlY29tcHJlc3NlZCA9IG5ldyBjaGFyW2RlY29tcHJlc3NlZFNpemVdOworCisgICAgICAgIGludCBieXRlc1dyaXR0ZW4gPSAwOworICAgICAgICBpbnQgdW5pY2hhcnNXcml0dGVuID0gMDsKKworICAgICAgICBpbnRbXSB1bmljaGFyc1JlYWQgPSBuZXcgaW50WzFdOworICAgICAgICBpbnRbXSBieXRlc1JlYWQgPSBuZXcgaW50WzFdOworICAgICAgICAKKyAgICAgICAgaW50IHRvdGFsQ2hhcnNDb21wcmVzc2VkID0gMDsKKyAgICAgICAgaW50IHRvdGFsQnl0ZXNXcml0dGVuID0gMDsKKworICAgICAgICBpbnQgdG90YWxCeXRlc0RlY29tcHJlc3NlZCAgPSAwOworICAgICAgICBpbnQgdG90YWxDaGFyc1dyaXR0ZW4gPSAwOworCisgICAgICAgIC8vIG5vdCB1c2VkIGJvb2xlYW4gZXJyID0gZmFsc2U7CisKKworICAgICAgICAvLyBwZXJmb3JtIHRoZSBjb21wcmVzc2lvbiBpbiBhIGxvb3AKKyAgICAgICAgZG8geworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBkbyB0aGUgY29tcHJlc3Npb24KKyAgICAgICAgICAgIGJ5dGVzV3JpdHRlbiA9IG15Q29tcHJlc3Nvci5jb21wcmVzcyhjaGFycywgdG90YWxDaGFyc0NvbXByZXNzZWQsIAorICAgICAgICAgICAgICAgICAgIGxlbiwgdW5pY2hhcnNSZWFkLCBieXRlQnVmZmVyLCAwLCBieXRlQnVmZmVyU2l6ZSk7CisKKyAgICAgICAgICAgIC8vIGNvcHkgdGhlIGN1cnJlbnQgc2V0IG9mIGJ5dGVzIGludG8gdGhlIHRhcmdldCBidWZmZXIKKyAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoYnl0ZUJ1ZmZlciwgMCwgY29tcHJlc3NlZCwgCisgICAgICAgICAgICAgICAgICAgdG90YWxCeXRlc1dyaXR0ZW4sIGJ5dGVzV3JpdHRlbik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIHVwZGF0ZSB0aGUgbm8uIG9mIGNoYXJhY3RlcnMgY29tcHJlc3NlZAorICAgICAgICAgICAgdG90YWxDaGFyc0NvbXByZXNzZWQgKz0gdW5pY2hhcnNSZWFkWzBdOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyB1cGRhdGUgdGhlIG5vLiBvZiBieXRlcyB3cml0dGVuCisgICAgICAgICAgICB0b3RhbEJ5dGVzV3JpdHRlbiArPSBieXRlc1dyaXR0ZW47CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8qU3lzdGVtLm91dC5sb2dsbigiQ29tcHJlc3Npb24gcGFzcyBjb21wbGV0ZS4gIENvbXByZXNzZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgdW5pY2hhcnNSZWFkWzBdICsgIiBjaGFycyBpbnRvICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGJ5dGVzV3JpdHRlbiArICIgYnl0ZXMuIik7Ki8KKyAgICAgICAgfSB3aGlsZSh0b3RhbENoYXJzQ29tcHJlc3NlZCA8IGxlbik7CisKKyAgICAgICAgaWYgKHRvdGFsQ2hhcnNDb21wcmVzc2VkICE9IGxlbikgeworICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBOdW1iZXIgb2YgY2hhcmFjdGVycyBjb21wcmVzc2VkKCIKKyAgICAgICAgICAgICAgICAgICAgKyB0b3RhbENoYXJzQ29tcHJlc3NlZCArICIpICE9IGxlbigiICsgbGVuICsgIikiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvZ2xuKCJNUDogIiArIGxlbiArICIgY2hhcnMgPT09PiAiICsgdG90YWxCeXRlc1dyaXR0ZW4gKyAiIGJ5dGVzLiIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBwZXJmb3JtIHRoZSBkZWNvbXByZXNzaW9uIGluIGEgbG9vcAorICAgICAgICBkbyB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIGRvIHRoZSBkZWNvbXByZXNzaW9uCisgICAgICAgICAgICB1bmljaGFyc1dyaXR0ZW4gPSBteURlY29tcHJlc3Nvci5kZWNvbXByZXNzKGNvbXByZXNzZWQsIAorICAgICAgICAgICAgICAgICAgICB0b3RhbEJ5dGVzRGVjb21wcmVzc2VkLCB0b3RhbEJ5dGVzV3JpdHRlbiwgCisgICAgICAgICAgICAgICAgICAgIGJ5dGVzUmVhZCwgdW5pY2hhckJ1ZmZlciwgMCwgdW5pY2hhckJ1ZmZlclNpemUpOworCisgICAgICAgICAgICAvLyBjb3B5IHRoZSBjdXJyZW50IHNldCBvZiBjaGFycyBpbnRvIHRoZSB0YXJnZXQgYnVmZmVyCisgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KHVuaWNoYXJCdWZmZXIsIDAsIGRlY29tcHJlc3NlZCwgCisgICAgICAgICAgICAgICAgICAgIHRvdGFsQ2hhcnNXcml0dGVuLCB1bmljaGFyc1dyaXR0ZW4pOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyB1cGRhdGUgdGhlIG5vLiBvZiBieXRlcyBkZWNvbXByZXNzZWQKKyAgICAgICAgICAgIHRvdGFsQnl0ZXNEZWNvbXByZXNzZWQgKz0gYnl0ZXNSZWFkWzBdOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyB1cGRhdGUgdGhlIG5vLiBvZiBjaGFycyB3cml0dGVuCisgICAgICAgICAgICB0b3RhbENoYXJzV3JpdHRlbiArPSB1bmljaGFyc1dyaXR0ZW47CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8qU3lzdGVtLm91dC5sb2dsbigiRGVjb21wcmVzc2lvbiBwYXNzIGNvbXBsZXRlLiAgRGVjb21wcmVzc2VkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGJ5dGVzUmVhZFswXSArICIgYnl0ZXMgaW50byAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyB1bmljaGFyc1dyaXR0ZW4gKyAiIGNoYXJzLiIpOyovCisgICAgICAgIH0gd2hpbGUgKHRvdGFsQnl0ZXNEZWNvbXByZXNzZWQgPCB0b3RhbEJ5dGVzV3JpdHRlbik7CisKKyAgICAgICAgaWYgKHRvdGFsQnl0ZXNEZWNvbXByZXNzZWQgIT0gdG90YWxCeXRlc1dyaXR0ZW4pIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogTnVtYmVyIG9mIGJ5dGVzIGRlY29tcHJlc3NlZCgiIAorICAgICAgICAgICAgICAgICAgICArIHRvdGFsQnl0ZXNEZWNvbXByZXNzZWQgCisgICAgICAgICAgICAgICAgICAgICsgIikgIT0gdG90YWxCeXRlc1dyaXR0ZW4oIiAKKyAgICAgICAgICAgICAgICAgICAgKyB0b3RhbEJ5dGVzV3JpdHRlbiArICIpIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2dsbigiTVA6ICIgKyB0b3RhbEJ5dGVzV3JpdHRlbgorICAgICAgICAgICAgICAgICAgICArICIgYnl0ZXMgPT09PiAiICsgdG90YWxDaGFyc1dyaXR0ZW4gKyAiIGNoYXJzLiIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAobG9nRGlmZnMoY2hhcnMsIGxlbiwgZGVjb21wcmVzc2VkLCB0b3RhbENoYXJzV3JpdHRlbikpIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogYnVmZmVyIGNvbnRlbnRzIGluY29ycmVjdCIpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqIFByaW50IGRpZmZlcmVuY2VzIGJldHdlZW4gdHdvIGNoYXJhY3RlciBidWZmZXJzICovCisgICAgcHJpdmF0ZSBib29sZWFuIGxvZ0RpZmZzKGNoYXJbXSBzMSwgaW50IHMxbGVuLCBjaGFyW10gczIsIGludCBzMmxlbikgeworICAgICAgICBib29sZWFuIHJlc3VsdCAgPSBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIGlmKHMxbGVuICE9IHMybGVuKSB7CisgICAgICAgICAgICBsb2dsbigiPT09PT09PT09PT09PT09PT09PT0iKTsKKyAgICAgICAgICAgIGxvZ2xuKCJMZW5ndGggZG9lc24ndCBtYXRjaDogZXhwZWN0ZWQgIiArIHMxbGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiLCBnb3QgIiArIHMybGVuKTsKKyAgICAgICAgICAgIGxvZ2xuKCJFeHBlY3RlZDoiKTsKKyAgICAgICAgICAgIHByaW50Q2hhcnMoczEsIHMxbGVuKTsKKyAgICAgICAgICAgIGxvZ2xuKCJHb3Q6Iik7CisgICAgICAgICAgICBwcmludENoYXJzKHMyLCBzMmxlbik7CisgICAgICAgICAgICByZXN1bHQgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpbnQgbGVuID0gTWF0aC5taW4oczFsZW4sIHMybGVuKTsKKyAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IGxlbjsgKytpKSB7CisgICAgICAgICAgICBpZihzMVtpXSAhPSBzMltpXSkgeworICAgICAgICAgICAgICAgIGlmKHJlc3VsdCA9PSBmYWxzZSkgeworICAgICAgICAgICAgICAgICAgICBsb2dsbigiPT09PT09PT09PT09PT09PT09PT0iKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbG9nbG4oIkZpcnN0IGRpZmZlcmVuY2UgYXQgY2hhciAiICsgaSk7CisgICAgICAgICAgICAgICAgbG9nbG4oIkV4cC4gY2hhcjogIiArIEludGVnZXIudG9IZXhTdHJpbmcoczFbaV0pKTsKKyAgICAgICAgICAgICAgICBsb2dsbigiR290IGNoYXIgOiAiICsgSW50ZWdlci50b0hleFN0cmluZyhzMltpXSkpOworICAgICAgICAgICAgICAgIGxvZ2xuKCJFeHBlY3RlZDoiKTsKKyAgICAgICAgICAgICAgICBwcmludENoYXJzKHMxLCBzMWxlbik7CisgICAgICAgICAgICAgICAgbG9nbG4oIkdvdDoiKTsKKyAgICAgICAgICAgICAgICBwcmludENoYXJzKHMyLCBzMmxlbik7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIAorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8vIGdlbmVyYXRlIGEgc3RyaW5nIG9mIGNoYXJhY3RlcnMsIHdpdGggc2ltdWxhdGVkIHJ1bnMgb2YgY2hhcmFjdGVycworICAgIHByaXZhdGUgc3RhdGljIGNoYXJbXSByYW5kb21DaGFycyhpbnQgbGVuLCBSYW5kb20gcmFuZG9tKSB7CisgICAgICAgIGNoYXJbXSByZXN1bHQgPSBuZXcgY2hhciBbbGVuXTsKKyAgICAgICAgaW50IHJ1bkxlbiA9IDA7CisgICAgICAgIGludCB1c2VkID0gMDsKKyAgICAgICAgCisgICAgICAgIHdoaWxlKHVzZWQgPCBsZW4pIHsKKyAgICAgICAgICAgIHJ1bkxlbiA9IChpbnQpICgzMCAqIHJhbmRvbS5uZXh0RG91YmxlKCkpOworICAgICAgICAgICAgaWYodXNlZCArIHJ1bkxlbiA+PSBsZW4pIHsKKyAgICAgICAgICAgICAgICBydW5MZW4gPSBsZW4gLSB1c2VkOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmFuZG9tUnVuKHJlc3VsdCwgdXNlZCwgcnVuTGVuLCByYW5kb20pOworICAgICAgICAgICAgdXNlZCArPSBydW5MZW47CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvLyBnZW5lcmF0ZSBhIHJ1biBvZiBjaGFyYWN0ZXJzIGluIGEgIndpbmRvdyIKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIHJhbmRvbVJ1bihjaGFyW10gdGFyZ2V0LCBpbnQgcG9zLCBpbnQgbGVuLCBSYW5kb20gcmFuZG9tKSB7CisgICAgICAgIGludCBvZmZzZXQgPSAoaW50KSAoMHhGRkZGICogcmFuZG9tLm5leHREb3VibGUoKSk7CisKKyAgICAgICAgLy8gZG9uJ3Qgb3ZlcmZsb3cgMTYgYml0cworICAgICAgICBpZihvZmZzZXQgPiAweEZGODApIHsKKyAgICAgICAgICAgIG9mZnNldCA9IDB4RkY4MDsKKyAgICAgICAgfQorCisgICAgICAgIGZvcihpbnQgaSA9IHBvczsgaSA8IHBvcyArIGxlbjsgaSsrKSB7CisgICAgICAgICAgICB0YXJnZXRbaV0gPSAoY2hhcikob2Zmc2V0ICsgKDB4N0YgKiByYW5kb20ubmV4dERvdWJsZSgpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgW10gZlRlc3RDYXNlcyA9IHsKKyAgICAgICAgIkhlbGxvIFx1OTI5MiBcdTkxOTIgV29ybGQhIiwKKyAgICAgICAgIkhlbGxcdTA0MjlvIFx1OTI5MiBcdTkxOTIgV1x1MDA4NHJsZCEiLAorICAgICAgICAiSGVsbFx1MDQyOW8gXHU5MjkyIFx1OTI5MldcdTAwODRybGQhIiwKKworICAgICAgICAiXHUwNjQ4XHUwNmM4IiwgLy8gY2F0Y2ggbWlzc2luZyByZXNldAorICAgICAgICAiXHUwNjQ4XHUwNmM4IiwKKworICAgICAgICAiXHU0NDQ0XHVFMDAxIiwgLy8gbG93ZXN0IHF1b3RhYmxlCisgICAgICAgICJcdTQ0NDRcdWYyRkYiLCAvLyBoaWdoZXN0IHF1b3RhYmxlCisgICAgICAgICJcdTQ0NDRcdWYxODhcdTQ0NDQiLAorICAgICAgICAiXHU0NDQ0XHVmMTg4XHVmMjg4IiwKKyAgICAgICAgIlx1NDQ0NFx1ZjE4OGFiY1wwNDI5XHVmMjg4IiwKKyAgICAgICAgIlx1OTI5Mlx1MjIyMiIsCisgICAgICAgICJIZWxsXHUwNDI5XHUwNDIzMG8gXHU5MjkyIFx1OTI5MldcdTAwODRcdTAxOTJybGQhIiwKKyAgICAgICAgIkhlbGxcdTA0MjlvIFx1OTI5MiBcdTkyOTJXXHUwMDg0cmxkISIsCisgICAgICAgICJIZWxsbyBXb3JsZCExMjM0NTYiLAorICAgICAgICAiSGVsbG8gV1x1MDA4MVx1MDExZlx1MDA4MiEiLCAvLyBMYXRpbiAxIHJ1bgorCisgICAgICAgICJhYmNcdTAzMDFcdTAzMDIiLCAgLy8gdXNlcyBTUW4gZm9yIHUzMDEgdTMwMgorICAgICAgICAiYWJjXHU0NDExZCIsICAgICAgLy8gdXNlcyBTUVUKKyAgICAgICAgImFiY1x1NDQxMVx1NDQxMmQiLC8vIHVzZXMgU0NVCisgICAgICAgICJhYmNcdTA0MDFcdTA0MDJcdTA0N2ZcdTAwYTVcdTA0MDUiLCAvLyB1c2VzIFNRbiBmb3IgdWE1CisgICAgICAgICJcdTkxOTFcdTkxOTFcdTMwNDFcdTkxOTFcdTMwNDFcdTMwNDFcdTMwMDAiLCAvLyBTSklTIGxpa2UgZGF0YQorICAgICAgICAiXHU5MjkyXHUyMjIyIiwKKyAgICAgICAgIlx1OTE5MVx1OTE5MVx1MzA0MVx1OTE5MVx1MzA0MVx1MzA0MVx1MzAwMCIsCisgICAgICAgICJcdTk5OTlcdTMwNTFcdTMwMGNcdTk5OTlcdTk5OTlcdTMwNjBcdTk5OTlcdTMwNjVcdTMwNjVcdTMwNjVcdTMwMGMiLAorICAgICAgICAiXHUzMDAwXHUyNjZhXHUzMGVhXHUzMGYzXHUzMGI0XHU1M2VmXHU2MTFiXHUzMDQ0XHUzMDg0XHU1M2VmXHU2MTFiXHUzMDQ0XHUzMDg0XHUzMGVhXHUzMGYzXHUzMGI0XHUzMDAyIiwKKworICAgICAgICAiIiwgLy8gZW1wdHkgaW5wdXQKKyAgICAgICAgIlx1MDAwMCIsIC8vIHNtYWxsZXN0IEJNUCBjaGFyYWN0ZXIKKyAgICAgICAgIlx1RkZGRiIsIC8vIGxhcmdlc3QgQk1QIGNoYXJhY3RlcgorCisgICAgICAgICJcdWQ4MDBcdWRjMDAiLCAvLyBzbWFsbGVzdCBzdXJyb2dhdGUKKyAgICAgICAgIlx1ZDhmZlx1ZGNmZiIsIC8vIGxhcmdlc3Qgc3Vycm9nYXRlIHBhaXIKKyAgICAgICAgCisgICAgICAgIC8vIHJlZ3Jlc3Npb24gdGVzdHMKKyAgICAgICAgIlx1NjQ0MVx1YjQxM1x1YTczM1x1ZjhmZVx1ZWVkYlx1NTg3Zlx1MTk1Zlx1NDg5OVx1ZjIzZFx1NDlmZFx1MGFhY1x1NTc5Mlx1ZmMyMlx1ZmMzY1x1ZmM0Nlx1MDBhYSIsCisgICAgICAgICJcdTMwZjlcdTgzMjFcdTA1ZTVcdTE4MWNcdWQ3MmJcdTIwMTlcdTk5YzlcdTJmMmZcdWMxMGNcdTgyZTFcdTJjNGRcdTFlYmNcdTYwMTNcdTY2ZGNcdWJiZGVcdTk0YTVcdTQ3MjZcdTc0YWZcdTMwODNcdTU1YjlcdTAwMGMiLAorICAgICAgICAiXHUwMDQxXHUwMGRmXHUwNDAxXHUwMTVmIiwKKyAgICAgICAgIlx1OTA2Nlx1MjEyM2FiYyIsCisgICAgICAgICJcdWQyNjZcdTQzZDdcXFx1ZTM4Nlx1YzljMFx1NGE2Ylx1OTIyMlx1OTAxZlx1NzQxMFx1YTYzZlx1NTM5Ylx1OTU5Nlx1NDgyZVx1OWQ0N1x1Y2ZlNFx1N2I3MVx1YzI4MFx1ZjI2YVx1OTgyZlx1ODYyYVx1NGVkZFx1ZjUxM1x1ZmRhNlx1ODY5ZFx1MmVlMFx1YTIxNlx1M2ZmNlx1M2M3MFx1ODljMFx1OTU3Nlx1ZDVlY1x1YmZkYVx1NmNjYVx1NWJiM1x1YmNlYVx1NTU0Y1x1OTE0ZVx1ZmE0YVx1ZWRlM1x1Mjk5MFx1ZDJmNVx1MjcyOVx1NTE0MVx1MGYyNlx1Y2NkOFx1NTQxM1x1ZDE5Nlx1YmJlMlx1NTFiOVx1OWI0OFx1MGRjOFx1MjE5NVx1MjFhMlx1MjFlOVx1MDBlNFx1OWQ5Mlx1MGJjMFx1MDZjNSIsCisgICAgICAgICJcdWY5NWJcdTI0NThcdTI0NjhcdTBlMjBcdWY1MWJcdWUzNmVcdWJmYzFcdTAwODBcdTAyZGRcdWYxYjVcdTBjZjNcdTYwNTlcdTc0ODkiCisKKyAgICB9OworCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIENvbXByZXNzaW9uIG1vZGVzCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBTSU5HTEVCWVRFTU9ERSAgICAgICAgICAgICAgICAgPSAwOworICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBVTklDT0RFTU9ERSAgICAgICAgICAgICAgICAgICAgICAgID0gMTsKKyAgICAKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gU2luZ2xlLWJ5dGUgbW9kZSB0YWdzCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBTREVGSU5FWCAgICAgICAgICAgICAgICAgICA9IDB4MEI7CisgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgaW50IFNSRVNFUlZFRCAgICAgICAgICAgICAgICAgID0gMHgwQzsgICAgICAgICAgICAgLy8gdGhpcyBpcyBhIHJlc2VydmVkIHZhbHVlCisgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgaW50IFNRVU9URVUgICAgICAgICAgICAgICAgICAgID0gMHgwRTsKKyAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgU1NXSVRDSFUgICAgICAgICAgICAgICAgICAgPSAweDBGOworCisgICAgICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBTUVVPVEUwICAgICAgICAgICAgICAgICAgICAgICAgPSAweDAxOworICAgICAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgU1FVT1RFMSAgICAgICAgICAgICAgICAgICAgICAgID0gMHgwMjsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgaW50IFNRVU9URTIgICAgICAgICAgICAgICAgICAgICAgICA9IDB4MDM7CisgICAgICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBTUVVPVEUzICAgICAgICAgICAgICAgICAgICAgICAgPSAweDA0OworICAgICAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgU1FVT1RFNCAgICAgICAgICAgICAgICAgICAgICAgID0gMHgwNTsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgaW50IFNRVU9URTUgICAgICAgICAgICAgICAgICAgICAgICA9IDB4MDY7CisgICAgICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBTUVVPVEU2ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHgwNzsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgaW50IFNRVU9URTcgICAgICAgICAgICAgICAgICAgICAgICA9IDB4MDg7CisKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgaW50IFNTV0lUQ0gwICAgICAgICAgICAgICAgICAgICAgICA9IDB4MTA7CisgICAgICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBTU1dJVENIMSAgICAgICAgICAgICAgICAgICAgICAgPSAweDExOworICAgICAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgU1NXSVRDSDIgICAgICAgICAgICAgICAgICAgICAgID0gMHgxMjsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgaW50IFNTV0lUQ0gzICAgICAgICAgICAgICAgICAgICAgICA9IDB4MTM7CisgICAgICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBTU1dJVENINCAgICAgICAgICAgICAgICAgICAgICAgPSAweDE0OworICAgICAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgU1NXSVRDSDUgICAgICAgICAgICAgICAgICAgICAgID0gMHgxNTsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgaW50IFNTV0lUQ0g2ICAgICAgICAgICAgICAgICAgICAgICA9IDB4MTY7CisgICAgICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBTU1dJVENINyAgICAgICAgICAgICAgICAgICAgICAgPSAweDE3OworCisgICAgICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBTREVGSU5FMCAgICAgICAgICAgICAgICAgICAgICAgPSAweDE4OworICAgICAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgU0RFRklORTEgICAgICAgICAgICAgICAgICAgICAgID0gMHgxOTsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgaW50IFNERUZJTkUyICAgICAgICAgICAgICAgICAgICAgICA9IDB4MUE7CisgICAgICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBTREVGSU5FMyAgICAgICAgICAgICAgICAgICAgICAgPSAweDFCOworICAgICAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgU0RFRklORTQgICAgICAgICAgICAgICAgICAgICAgID0gMHgxQzsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgaW50IFNERUZJTkU1ICAgICAgICAgICAgICAgICAgICAgICA9IDB4MUQ7CisgICAgICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBTREVGSU5FNiAgICAgICAgICAgICAgICAgICAgICAgPSAweDFFOworICAgICAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgU0RFRklORTcgICAgICAgICAgICAgICAgICAgICAgID0gMHgxRjsKKworICAgICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgICAgIC8vIFVuaWNvZGUgbW9kZSB0YWdzCisgICAgICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgaW50IFVTV0lUQ0gwICAgICAgICAgICAgICAgICAgICAgICA9IDB4RTA7CisgICAgICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBVU1dJVENIMSAgICAgICAgICAgICAgICAgICAgICAgPSAweEUxOworICAgICAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgVVNXSVRDSDIgICAgICAgICAgICAgICAgICAgICAgID0gMHhFMjsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgaW50IFVTV0lUQ0gzICAgICAgICAgICAgICAgICAgICAgICA9IDB4RTM7CisgICAgICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBVU1dJVENINCAgICAgICAgICAgICAgICAgICAgICAgPSAweEU0OworICAgICAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgVVNXSVRDSDUgICAgICAgICAgICAgICAgICAgICAgID0gMHhFNTsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgaW50IFVTV0lUQ0g2ICAgICAgICAgICAgICAgICAgICAgICA9IDB4RTY7CisgICAgICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBVU1dJVENINyAgICAgICAgICAgICAgICAgICAgICAgPSAweEU3OworCisgICAgICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBVREVGSU5FMCAgICAgICAgICAgICAgICAgICAgICAgPSAweEU4OworICAgICAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgVURFRklORTEgICAgICAgICAgICAgICAgICAgICAgID0gMHhFOTsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgaW50IFVERUZJTkUyICAgICAgICAgICAgICAgICAgICAgICA9IDB4RUE7CisgICAgICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBVREVGSU5FMyAgICAgICAgICAgICAgICAgICAgICAgPSAweEVCOworICAgICAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgVURFRklORTQgICAgICAgICAgICAgICAgICAgICAgID0gMHhFQzsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgaW50IFVERUZJTkU1ICAgICAgICAgICAgICAgICAgICAgICA9IDB4RUQ7CisgICAgICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBVREVGSU5FNiAgICAgICAgICAgICAgICAgICAgICAgPSAweEVFOworICAgICAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgVURFRklORTcgICAgICAgICAgICAgICAgICAgICAgID0gMHhFRjsKKworICAgICAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgVVFVT1RFVSAgICAgICAgICAgICAgICAgICAgICAgID0gMHhGMDsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgaW50IFVERUZJTkVYICAgICAgICAgICAgICAgICAgICAgICA9IDB4RjE7CisgICAgICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBVUkVTRVJWRUQgICAgICAgICAgICAgICAgICAgICAgPSAweEYyOyAgICAgICAgIC8vIHRoaXMgaXMgYSByZXNlcnZlZCB2YWx1ZQorCisgICAgLyogUHJpbnQgb3V0IGFuIGFycmF5IG9mIGNoYXJhY3RlcnMsIHdpdGggbm9uLXByaW50YWJsZXMgKGZvciBtZSkgCisgICAgICAgZGlzcGxheWVkIGFzIGhleCB2YWx1ZXMgKi8KKyAgICBwcml2YXRlIHZvaWQgcHJpbnRDaGFycyhjaGFyW10gY2hhcnMsIGludCBsZW4pIHsKKyAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgICAgICBpbnQgYyA9IChpbnQpY2hhcnNbaV07CisgICAgICAgICAgICBpZihjIDwgMHgwMDIwIHx8IGMgPj0gMHg3ZikgeworICAgICAgICAgICAgICAgIGxvZygiWzB4Iik7CisgICAgICAgICAgICAgICAgbG9nKEludGVnZXIudG9IZXhTdHJpbmcoYykpOworICAgICAgICAgICAgICAgIGxvZygiXSIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBsb2coU3RyaW5nLnZhbHVlT2YoKGNoYXIpYykpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGxvZ2xuKCIiKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgcHJpbnRCeXRlcyhieXRlW10gYnl0ZUJ1ZmZlciwgaW50IGxlbikgeworICAgICAgICBpbnQgY3VyQnl0ZUluZGV4ID0gMDsKKyAgICAgICAgaW50IGJ5dGVCdWZmZXJMaW1pdCA9IGxlbjsKKyAgICAgICAgaW50IG1vZGUgPSBTSU5HTEVCWVRFTU9ERTsKKyAgICAgICAgaW50IGFCeXRlID0gMHgwMDsKKyAgICAgICAgCisgICAgICAgIGlmKGxlbiA+IGJ5dGVCdWZmZXIubGVuZ3RoKSB7CisgICAgICAgICAgICBsb2dsbigiV2FybmluZzogcHJpbnRCeXRlcyBjYWxsZWQgd2l0aCBsZW5ndGggdG9vIGxhcmdlLiBUcnVuY2F0aW5nIik7CisgICAgICAgICAgICBieXRlQnVmZmVyTGltaXQgPSBieXRlQnVmZmVyLmxlbmd0aDs7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHdoaWxlKGN1ckJ5dGVJbmRleCA8IGJ5dGVCdWZmZXJMaW1pdCkgeworICAgICAgICAgICAgc3dpdGNoKG1vZGUpIHsgIAorICAgICAgICAgICAgY2FzZSBTSU5HTEVCWVRFTU9ERToKKyAgICAgICAgICAgICAgICB3aGlsZShjdXJCeXRlSW5kZXggPCBieXRlQnVmZmVyTGltaXQgCisgICAgICAgICAgICAgICAgICAgICAgJiYgbW9kZSA9PSBTSU5HTEVCWVRFTU9ERSkgIHsKKyAgICAgICAgICAgICAgICAgICAgYUJ5dGUgPSAoKGludClieXRlQnVmZmVyW2N1ckJ5dGVJbmRleCsrXSkgJiAweEZGOworICAgICAgICAgICAgICAgICAgICBzd2l0Y2goYUJ5dGUpIHsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhJbnRlZ2VyLnRvSGV4U3RyaW5nKCgoaW50KSBhQnl0ZSkgJiAweEZGKSArICIgIik7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHF1b3RlIHVuaWNvZGUKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBTUVVPVEVVOgorICAgICAgICAgICAgICAgICAgICAgICAgbG9nKCJTUVVPVEVVICIpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1ckJ5dGVJbmRleCA8IGJ5dGVCdWZmZXJMaW1pdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhJbnRlZ2VyLnRvSGV4U3RyaW5nKCgoaW50KSBieXRlQnVmZmVyW2N1ckJ5dGVJbmRleCsrXSkgJiAweEZGKSArICIgIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VyQnl0ZUluZGV4IDwgYnl0ZUJ1ZmZlckxpbWl0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKEludGVnZXIudG9IZXhTdHJpbmcoKChpbnQpIGJ5dGVCdWZmZXJbY3VyQnl0ZUluZGV4KytdKSAmIDB4RkYpICsgIiAiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBzd2l0Y2ggdG8gVW5pY29kZSBtb2RlCisgICAgICAgICAgICAgICAgICAgIGNhc2UgU1NXSVRDSFU6CisgICAgICAgICAgICAgICAgICAgICAgICBsb2coIlNTV0lUQ0hVICIpOworICAgICAgICAgICAgICAgICAgICAgICAgbW9kZSA9IFVOSUNPREVNT0RFOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBhbGwgcXVvdGUgdGFncworICAgICAgICAgICAgICAgICAgICBjYXNlIFNRVU9URTA6IGNhc2UgU1FVT1RFMTogY2FzZSBTUVVPVEUyOiBjYXNlIFNRVU9URTM6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgU1FVT1RFNDogY2FzZSBTUVVPVEU1OiBjYXNlIFNRVU9URTY6IGNhc2UgU1FVT1RFNzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZygiU1FVT1RFIiArIChhQnl0ZSAtIFNRVU9URTApICsgIiAiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKGN1ckJ5dGVJbmRleCA8IGJ5dGVCdWZmZXJMaW1pdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhJbnRlZ2VyLnRvSGV4U3RyaW5nKCgoaW50KSBieXRlQnVmZmVyW2N1ckJ5dGVJbmRleCsrXSkgJiAweEZGKSArICIgIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFuZGxlIGFsbCBzd2l0Y2ggdGFncworICAgICAgICAgICAgICAgICAgICBjYXNlIFNTV0lUQ0gwOiBjYXNlIFNTV0lUQ0gxOiBjYXNlIFNTV0lUQ0gyOiBjYXNlIFNTV0lUQ0gzOgorICAgICAgICAgICAgICAgICAgICBjYXNlIFNTV0lUQ0g0OiBjYXNlIFNTV0lUQ0g1OiBjYXNlIFNTV0lUQ0g2OiBjYXNlIFNTV0lUQ0g3OgorICAgICAgICAgICAgICAgICAgICAgICAgbG9nKCJTU1dJVENIIiArIChhQnl0ZSAtIFNTV0lUQ0gwKSArICIgIik7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBhbGwgZGVmaW5lIHRhZ3MKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBTREVGSU5FMDogY2FzZSBTREVGSU5FMTogY2FzZSBTREVGSU5FMjogY2FzZSBTREVGSU5FMzoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBTREVGSU5FNDogY2FzZSBTREVGSU5FNTogY2FzZSBTREVGSU5FNjogY2FzZSBTREVGSU5FNzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZygiU0RFRklORSIgKyAoYUJ5dGUgLSBTREVGSU5FMCkgKyAiICIpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1ckJ5dGVJbmRleCA8IGJ5dGVCdWZmZXJMaW1pdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhJbnRlZ2VyLnRvSGV4U3RyaW5nKCgoaW50KSBieXRlQnVmZmVyW2N1ckJ5dGVJbmRleCsrXSkgJiAweEZGKSArICIgIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFuZGxlIGRlZmluZSBleHRlbmRlZCB0YWcKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBTREVGSU5FWDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZygiU0RFRklORVggIik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VyQnl0ZUluZGV4IDwgYnl0ZUJ1ZmZlckxpbWl0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKEludGVnZXIudG9IZXhTdHJpbmcoKChpbnQpIGJ5dGVCdWZmZXJbY3VyQnl0ZUluZGV4KytdKSAmIDB4RkYpICsgIiAiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJCeXRlSW5kZXggPCBieXRlQnVmZmVyTGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coSW50ZWdlci50b0hleFN0cmluZygoKGludCkgYnl0ZUJ1ZmZlcltjdXJCeXRlSW5kZXgrK10pICYgMHhGRikgKyAiICIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgfSAvLyBlbmQgc3dpdGNoCisgICAgICAgICAgICAgICAgfSAvLyBlbmQgd2hpbGUKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgVU5JQ09ERU1PREU6CisgICAgICAgICAgICAgICAgd2hpbGUoY3VyQnl0ZUluZGV4IDwgYnl0ZUJ1ZmZlckxpbWl0ICYmIG1vZGUgPT0gVU5JQ09ERU1PREUpIHsKKyAgICAgICAgICAgICAgICAgICAgYUJ5dGUgPSAoKGludClieXRlQnVmZmVyW2N1ckJ5dGVJbmRleCsrXSkgJiAweEZGOworICAgICAgICAgICAgICAgICAgICBzd2l0Y2goYUJ5dGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBhbGwgZGVmaW5lIHRhZ3MKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBVREVGSU5FMDogY2FzZSBVREVGSU5FMTogY2FzZSBVREVGSU5FMjogY2FzZSBVREVGSU5FMzoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBVREVGSU5FNDogY2FzZSBVREVGSU5FNTogY2FzZSBVREVGSU5FNjogY2FzZSBVREVGSU5FNzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZygiVURFRklORSIgKyAoYUJ5dGUgLSBVREVGSU5FMCkgKyAiICIpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1ckJ5dGVJbmRleCA8IGJ5dGVCdWZmZXJMaW1pdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhJbnRlZ2VyLnRvSGV4U3RyaW5nKCgoaW50KSBieXRlQnVmZmVyW2N1ckJ5dGVJbmRleCsrXSkgJiAweEZGKSArICIgIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBtb2RlID0gU0lOR0xFQllURU1PREU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFuZGxlIGRlZmluZSBleHRlbmRlZCB0YWcKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBVREVGSU5FWDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZygiVURFRklORVggIik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VyQnl0ZUluZGV4IDwgYnl0ZUJ1ZmZlckxpbWl0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKEludGVnZXIudG9IZXhTdHJpbmcoKChpbnQpIGJ5dGVCdWZmZXJbY3VyQnl0ZUluZGV4KytdKSAmIDB4RkYpICsgIiAiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJCeXRlSW5kZXggPCBieXRlQnVmZmVyTGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coSW50ZWdlci50b0hleFN0cmluZygoKGludCkgYnl0ZUJ1ZmZlcltjdXJCeXRlSW5kZXgrK10pICYgMHhGRikgKyAiICIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBhbGwgc3dpdGNoIHRhZ3MKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBVU1dJVENIMDogY2FzZSBVU1dJVENIMTogY2FzZSBVU1dJVENIMjogY2FzZSBVU1dJVENIMzoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBVU1dJVENINDogY2FzZSBVU1dJVENINTogY2FzZSBVU1dJVENINjogY2FzZSBVU1dJVENINzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZygiVVNXSVRDSCIgKyAoYUJ5dGUgLSBVU1dJVENIMCkgKyAiICIpOworICAgICAgICAgICAgICAgICAgICAgICAgbW9kZSA9IFNJTkdMRUJZVEVNT0RFOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHF1b3RlIHVuaWNvZGUKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBVUVVPVEVVOgorICAgICAgICAgICAgICAgICAgICAgICAgbG9nKCJVUVVPVEVVICIpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1ckJ5dGVJbmRleCA8IGJ5dGVCdWZmZXJMaW1pdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhJbnRlZ2VyLnRvSGV4U3RyaW5nKCgoaW50KSBieXRlQnVmZmVyW2N1ckJ5dGVJbmRleCsrXSkgJiAweEZGKSArICIgIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VyQnl0ZUluZGV4IDwgYnl0ZUJ1ZmZlckxpbWl0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKEludGVnZXIudG9IZXhTdHJpbmcoKChpbnQpIGJ5dGVCdWZmZXJbY3VyQnl0ZUluZGV4KytdKSAmIDB4RkYpICsgIiAiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICBsb2coSW50ZWdlci50b0hleFN0cmluZygoKGludCkgYUJ5dGUpICYgMHhGRikgKyAiICIpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1ckJ5dGVJbmRleCA8IGJ5dGVCdWZmZXJMaW1pdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhJbnRlZ2VyLnRvSGV4U3RyaW5nKCgoaW50KSBieXRlQnVmZmVyW2N1ckJ5dGVJbmRleCsrXSkgJiAweEZGKSArICIgIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICB9IC8vIGVuZCBzd2l0Y2gKKyAgICAgICAgICAgICAgICB9IC8vIGVuZCB3aGlsZQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfSAvLyBlbmQgc3dpdGNoKCBtb2RlICkKKyAgICAgICAgfSAvLyBlbmQgd2hpbGUKKyAgICAgICAgCisgICAgICAgIGxvZ2xuKCIiKTsKKyAgICB9ICAgIAorfQorCisKKworCisKKwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2NvbXByZXNzaW9uL3BhY2thZ2UuaHRtbCBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9jb21wcmVzc2lvbi9wYWNrYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMzE4YjNjYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9jb21wcmVzc2lvbi9wYWNrYWdlLmh0bWwKQEAgLTAsMCArMSwxNSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzwhLS0gIENvcHlyaWdodCAoQykgMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQKKyAgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorCisgICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9jb21wcmVzc2lvbi9wYWNrYWdlLmh0bWwsdiAkCisgICRSZXZpc2lvbjogMS4xICQKKyAgJERhdGU6IDIwMDAvMDMvMTUgMjE6MzU6NDkgJAorLS0+Cis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSI+CitUZXN0cyBmb3IgdGhlIGNvbXByZXNzaW9uIGNsYXNzZXMuCis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2Zvcm1hdC9CaWdOdW1iZXJGb3JtYXRUZXN0LmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvZm9ybWF0L0JpZ051bWJlckZvcm1hdFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xODczOWNmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2Zvcm1hdC9CaWdOdW1iZXJGb3JtYXRUZXN0LmphdmEKQEAgLTAsMCArMSw0MjcgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9mb3JtYXQvQmlnTnVtYmVyRm9ybWF0VGVzdC5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzAyLzI1IDIyOjQzOjU5ICQgCisgKiAkUmV2aXNpb246IDEuMTQgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0LmZvcm1hdDsKKworaW1wb3J0IGNvbS5pYm0uaWN1LmRldi50ZXN0Lio7CitpbXBvcnQgY29tLmlibS5pY3UubGFuZy4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuKjsKK2ltcG9ydCBqYXZhLnRleHQuUGFyc2VFeGNlcHRpb247CitpbXBvcnQgamF2YS51dGlsLio7CitpbXBvcnQgamF2YS5tYXRoLkJpZ0ludGVnZXI7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5VdGlsaXR5OworCisvKioKKyAqIEB0ZXN0CisgKiBHZW5lcmFsIHRlc3Qgb2YgQmlnIE51bWJlckZvcm1hdAorICovCitwdWJsaWMgY2xhc3MgQmlnTnVtYmVyRm9ybWF0VGVzdCBleHRlbmRzIFRlc3RGbXdrIHsKKworICAgIHN0YXRpYyBmaW5hbCBpbnQgSUxMRUdBTCA9IC0xOworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIG5ldyBCaWdOdW1iZXJGb3JtYXRUZXN0KCkucnVuKGFyZ3MpOworICAgIH0KKyAgICAJCisgICAgcHVibGljIHZvaWQgVGVzdEV4cG9uZW50KCkgeworICAgICAgICBEZWNpbWFsRm9ybWF0U3ltYm9scyBVUyA9IG5ldyBEZWNpbWFsRm9ybWF0U3ltYm9scyhMb2NhbGUuVVMpOworICAgICAgICBEZWNpbWFsRm9ybWF0IGZtdDEgPSBuZXcgRGVjaW1hbEZvcm1hdCgiMC4jIyNFMCIsIFVTKTsKKyAgICAgICAgRGVjaW1hbEZvcm1hdCBmbXQyID0gbmV3IERlY2ltYWxGb3JtYXQoIjAuIyMjRSswIiwgVVMpOworICAgICAgICBOdW1iZXIgbiA9IG5ldyBMb25nKDEyMzQpOworICAgICAgICBleHBlY3QoZm10MSwgbiwgIjEuMjM0RTMiKTsKKyAgICAgICAgZXhwZWN0KGZtdDIsIG4sICIxLjIzNEUrMyIpOworICAgICAgICBleHBlY3QoZm10MSwgIjEuMjM0RTMiLCBuKTsKKyAgICAgICAgZXhwZWN0KGZtdDEsICIxLjIzNEUrMyIsIG4pOyAvLyBFaXRoZXIgZm9ybWF0IHNob3VsZCBwYXJzZSAiRSszIgorICAgICAgICBleHBlY3QoZm10MiwgIjEuMjM0RSszIiwgbik7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdCB0aGUgZnVuY3Rpb25pbmcgb2YgdGhlIHNlY29uZGFyeSBncm91cGluZyB2YWx1ZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0U2Vjb25kYXJ5R3JvdXBpbmcoKSB7CisgICAgICAgIERlY2ltYWxGb3JtYXRTeW1ib2xzIFVTID0gbmV3IERlY2ltYWxGb3JtYXRTeW1ib2xzKExvY2FsZS5VUyk7CisgICAgICAgIERlY2ltYWxGb3JtYXQgZiA9IG5ldyBEZWNpbWFsRm9ybWF0KCIjLCMjLCMjIyIsIFVTKTsKKyAgICAgICAgZXhwZWN0KGYsIG5ldyBMb25nKDEyMzQ1Njc4OSksICIxMiwzNCw1Niw3ODkiKTsKKyAgICAgICAgZXhwZWN0UGF0KGYsICIjLCMjLCMjIyIpOworICAgICAgICBmLmFwcGx5UGF0dGVybigiIywjIyMiKTsKKyAgICAgICAgZi5zZXRTZWNvbmRhcnlHcm91cGluZ1NpemUoNCk7CisgICAgICAgIGV4cGVjdChmLCBuZXcgTG9uZygxMjM0NTY3ODkpLCAiMTIsMzQ1Niw3ODkiKTsKKyAgICAgICAgZXhwZWN0UGF0KGYsICIjLCMjIyMsIyMjIik7CisKKyAgICAgICAgLy8gT24gU3VuIEpESyAxLjItMS4zLCB0aGUgaGlfSU4gbG9jYWxlIHVzZXMgJzAnIGZvciBhIHplcm8gZGlnaXQsCisgICAgICAgIC8vIGJ1dCBvbiBJQk0gSkRLIDEuMi0xLjMsIHRoZSBsb2NhbGUgdXNlcyBVKzA5NjYuCisgICAgICAgIGYgPSAoRGVjaW1hbEZvcm1hdCkgTnVtYmVyRm9ybWF0LmdldEluc3RhbmNlKG5ldyBMb2NhbGUoImhpIiwgIklOIikpOworICAgICAgICBTdHJpbmcgc3RyID0gdHJhbnNtdXRlKCIxLDg3LDY1LDQzLDIxMCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi5nZXREZWNpbWFsRm9ybWF0U3ltYm9scygpLmdldFplcm9EaWdpdCgpKTsKKyAgICAgICAgZXhwZWN0KGYsIG5ldyBMb25nKDE4NzY1NDMyMTApLCBzdHIpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBleHBlY3RQYWQoRGVjaW1hbEZvcm1hdCBmbXQsIFN0cmluZyBwYXQsIGludCBwb3MpIHsKKyAgICAgICAgZXhwZWN0UGFkKGZtdCwgcGF0LCBwb3MsIDAsIChjaGFyKTApOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBleHBlY3RQYWQoRGVjaW1hbEZvcm1hdCBmbXQsIFN0cmluZyBwYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcG9zLCBpbnQgd2lkdGgsIGNoYXIgcGFkKSB7CisgICAgICAgIGludCBhcG9zID0gMCwgYXdpZHRoID0gMDsKKyAgICAgICAgY2hhciBhcGFkID0gMDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZtdC5hcHBseVBhdHRlcm4ocGF0KTsKKyAgICAgICAgICAgIGFwb3MgPSBmbXQuZ2V0UGFkUG9zaXRpb24oKTsKKyAgICAgICAgICAgIGF3aWR0aCA9IGZtdC5nZXRGb3JtYXRXaWR0aCgpOworICAgICAgICAgICAgYXBhZCA9IGZtdC5nZXRQYWRDaGFyYWN0ZXIoKTsKKyAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGFwb3MgPSAtMTsKKyAgICAgICAgICAgIGF3aWR0aCA9IHdpZHRoOworICAgICAgICAgICAgYXBhZCA9IHBhZDsKKyAgICAgICAgfQorICAgICAgICBpZiAoYXBvcyA9PSBwb3MgJiYgYXdpZHRoID09IHdpZHRoICYmIGFwYWQgPT0gcGFkKSB7CisgICAgICAgICAgICBsb2dsbigiT2sgICBcIiIgKyBwYXQgKyAiXCIgcG9zPSIgKyBhcG9zICsKKyAgICAgICAgICAgICAgICAgICgocG9zID09IC0xKSA/ICIiIDogIiB3aWR0aD0iICsgYXdpZHRoICsgIiBwYWQ9IiArIGFwYWQpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvZ2xuKCJGQUlMIFwiIiArIHBhdCArICJcIiBwb3M9IiArIGFwb3MgKworICAgICAgICAgICAgICAgICAgIiB3aWR0aD0iICsgYXdpZHRoICsgIiBwYWQ9IiArIGFwYWQgKworICAgICAgICAgICAgICAgICAgIiwgZXhwZWN0ZWQgIiArIHBvcyArICIgIiArIHdpZHRoICsgIiAiICsgcGFkKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RQYXR0ZXJucygpIHsKKyAgICAgICAgRGVjaW1hbEZvcm1hdFN5bWJvbHMgVVMgPSBuZXcgRGVjaW1hbEZvcm1hdFN5bWJvbHMoTG9jYWxlLlVTKTsKKyAgICAgICAgRGVjaW1hbEZvcm1hdCBmbXQgPSBuZXcgRGVjaW1hbEZvcm1hdCgiIyIsIFVTKTsKKworICAgICAgICBleHBlY3RQYWQoZm10LCAiKl4jIiwgRGVjaW1hbEZvcm1hdC5QQURfQkVGT1JFX1BSRUZJWCwgMSwgJ14nKTsKKyAgICAgICAgZXhwZWN0UGFkKGZtdCwgIiQqXiMiLCBEZWNpbWFsRm9ybWF0LlBBRF9BRlRFUl9QUkVGSVgsIDIsICdeJyk7CisgICAgICAgIGV4cGVjdFBhZChmbXQsICIjKl4iLCBEZWNpbWFsRm9ybWF0LlBBRF9CRUZPUkVfU1VGRklYLCAxLCAnXicpOworICAgICAgICBleHBlY3RQYWQoZm10LCAiIyQqXiIsIERlY2ltYWxGb3JtYXQuUEFEX0FGVEVSX1NVRkZJWCwgMiwgJ14nKTsKKyAgICAgICAgZXhwZWN0UGFkKGZtdCwgIiQqXiQjIiwgSUxMRUdBTCk7CisgICAgICAgIGV4cGVjdFBhZChmbXQsICIjJCpeJCIsIElMTEVHQUwpOworICAgICAgICBleHBlY3RQYWQoZm10LCAiJ3ByZScjLCMjMCp4J3Bvc3QnIiwgRGVjaW1hbEZvcm1hdC5QQURfQkVGT1JFX1NVRkZJWCwKKyAgICAgICAgICAgICAgICAgIDEyLCAneCcpOworICAgICAgICBleHBlY3RQYWQoZm10LCAiJycjMCp4IiwgRGVjaW1hbEZvcm1hdC5QQURfQkVGT1JFX1NVRkZJWCwKKyAgICAgICAgICAgICAgICAgIDMsICd4Jyk7CisgICAgICAgIGV4cGVjdFBhZChmbXQsICInSScnbGwnKmEjIyMuIyMiLCBEZWNpbWFsRm9ybWF0LlBBRF9BRlRFUl9QUkVGSVgsCisgICAgICAgICAgICAgICAgICAxMCwgJ2EnKTsKKworICAgICAgICBmbXQuYXBwbHlQYXR0ZXJuKCJBQSMsIyMwLjAwWloiKTsKKyAgICAgICAgZm10LnNldFBhZENoYXJhY3RlcignXicpOworCisgICAgICAgIGZtdC5zZXRGb3JtYXRXaWR0aCgxMCk7CisKKyAgICAgICAgZm10LnNldFBhZFBvc2l0aW9uKERlY2ltYWxGb3JtYXQuUEFEX0JFRk9SRV9QUkVGSVgpOworICAgICAgICBleHBlY3RQYXQoZm10LCAiKl5BQSMsIyMwLjAwWloiKTsKKworICAgICAgICBmbXQuc2V0UGFkUG9zaXRpb24oRGVjaW1hbEZvcm1hdC5QQURfQkVGT1JFX1NVRkZJWCk7CisgICAgICAgIGV4cGVjdFBhdChmbXQsICJBQSMsIyMwLjAwKl5aWiIpOworCisgICAgICAgIGZtdC5zZXRQYWRQb3NpdGlvbihEZWNpbWFsRm9ybWF0LlBBRF9BRlRFUl9TVUZGSVgpOworICAgICAgICBleHBlY3RQYXQoZm10LCAiQUEjLCMjMC4wMFpaKl4iKTsKKworICAgICAgICAvLyAgICAgICAgICAgIDEyICAzNDU2Nzg5MDEyCisgICAgICAgIFN0cmluZyBleHAgPSAiQUEqXiMsIyMwLjAwWloiOworICAgICAgICBmbXQuc2V0Rm9ybWF0V2lkdGgoMTIpOworICAgICAgICBmbXQuc2V0UGFkUG9zaXRpb24oRGVjaW1hbEZvcm1hdC5QQURfQUZURVJfUFJFRklYKTsKKyAgICAgICAgZXhwZWN0UGF0KGZtdCwgZXhwKTsKKworICAgICAgICBmbXQuc2V0Rm9ybWF0V2lkdGgoMTMpOworICAgICAgICAvLyAgICAgICAgICAgICAgMTIgIDM0NTY3ODkwMTIzCisgICAgICAgIGV4cGVjdFBhdChmbXQsICJBQSpeIyMsIyMwLjAwWloiKTsKKworICAgICAgICBmbXQuc2V0Rm9ybWF0V2lkdGgoMTQpOworICAgICAgICAvLyAgICAgICAgICAgICAgMTIgIDM0NTY3ODkwMTIzNAorICAgICAgICBleHBlY3RQYXQoZm10LCAiQUEqXiMjIywjIzAuMDBaWiIpOworCisgICAgICAgIGZtdC5zZXRGb3JtYXRXaWR0aCgxNSk7CisgICAgICAgIC8vICAgICAgICAgICAgICAxMiAgMzQ1Njc4OTAxMjM0NQorICAgICAgICBleHBlY3RQYXQoZm10LCAiQUEqXiMjIyMsIyMwLjAwWloiKTsgLy8gVGhpcyBpcyB0aGUgaW50ZXJlc3RpbmcgY2FzZQorCisgICAgICAgIGZtdC5zZXRGb3JtYXRXaWR0aCgxNik7CisgICAgICAgIC8vICAgICAgICAgICAgICAxMiAgMzQ1Njc4OTAxMjM0NTYKKyAgICAgICAgZXhwZWN0UGF0KGZtdCwgIkFBKl4jLCMjIywjIzAuMDBaWiIpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBleHBlY3RQYXQoRGVjaW1hbEZvcm1hdCBmbXQsIFN0cmluZyBleHApIHsKKyAgICAgICAgU3RyaW5nIHBhdCA9IGZtdC50b1BhdHRlcm4oKTsKKyAgICAgICAgaWYgKHBhdC5lcXVhbHMoZXhwKSkgeworICAgICAgICAgICAgbG9nbG4oIk9rICAgXCIiICsgcGF0ICsgJyInKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMIFwiIiArIHBhdCArICJcIiwgZXhwZWN0ZWQgXCIiICsgZXhwICsgJyInKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3QgdGhlIGhhbmRsaW5nIG9mIHRoZSBBbHBoYVdvcmtzIEJpZ0RlY2ltYWwKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0QWxwaGFCaWdEZWNpbWFsKCkgeworICAgICAgICBEZWNpbWFsRm9ybWF0U3ltYm9scyBVUyA9IG5ldyBEZWNpbWFsRm9ybWF0U3ltYm9scyhMb2NhbGUuVVMpOworICAgICAgICAvKkZvciBJQ1UgY29tcGF0aWJpbGl0eSBbUmljaGFyZC9HQ0xdKi8KKyAgICAgICAgZXhwZWN0KE51bWJlckZvcm1hdC5nZXRTY2llbnRpZmljSW5zdGFuY2UoTG9jYWxlLlVTKSwKKyAgICAgICAgICAgICAgIG5ldyBOdW1iZXJbXSB7IG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1LjY3ODkwMSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICIxLjIzNDU2Nzg5MDFFNCIpOworICAgICAgICBleHBlY3QobmV3IERlY2ltYWxGb3JtYXQoIiMjMC4jIyMjRTAiLCBVUyksCisgICAgICAgICAgICAgICBuZXcgTnVtYmVyW10geyBuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMjM0NS40OTk5IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMjM0NC41MDAxIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICIxMi4zNDVFMyIpOworICAgICAgICBleHBlY3QobmV3IERlY2ltYWxGb3JtYXQoIiMjMC4jIyMjRTAiLCBVUyksCisgICAgICAgICAgICAgICBuZXcgTnVtYmVyW10geyBuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMjM0NS41MDAwIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCIxMjM0Ni41MDAwIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICIxMi4zNDZFMyIpOworICAgIH0KKworICAgIC8qKgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RTY2llbnRpZmljKCkgeworICAgICAgICBEZWNpbWFsRm9ybWF0U3ltYm9scyBVUyA9IG5ldyBEZWNpbWFsRm9ybWF0U3ltYm9scyhMb2NhbGUuVVMpOworICAgICAgICAvKkZvciBJQ1UgY29tcGF0aWJpbGl0eSBbUmljaGFyZC9HQ0xdKi8KKyAgICAgICAgZXhwZWN0KE51bWJlckZvcm1hdC5nZXRTY2llbnRpZmljSW5zdGFuY2UoTG9jYWxlLlVTKSwKKyAgICAgICAgICAgICAgIG5ldyBOdW1iZXJbXSB7IG5ldyBEb3VibGUoMTIzNDUuNjc4OTAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBqYXZhLm1hdGguQmlnRGVjaW1hbCgiMTIzNDUuNjc4OTAxIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICIxLjIzNDU2Nzg5MDFFNCIpOworICAgICAgICBleHBlY3QobmV3IERlY2ltYWxGb3JtYXQoIiMjMC4jIyNFMCIsIFVTKSwKKyAgICAgICAgICAgICAgIG5ldyBEb3VibGUoMTIzNDUpLAorICAgICAgICAgICAgICAgIjEyLjM0RTMiKTsKKyAgICAgICAgZXhwZWN0KG5ldyBEZWNpbWFsRm9ybWF0KCIjIzAuIyMjRTAiLCBVUyksCisgICAgICAgICAgICAgICBuZXcgRG91YmxlKDEyMzQ1LjAwMDAxKSwKKyAgICAgICAgICAgICAgICIxMi4zNUUzIik7CisgICAgICAgIGV4cGVjdChuZXcgRGVjaW1hbEZvcm1hdCgiIyMwLiMjIyNFMCIsIFVTKSwKKyAgICAgICAgICAgICAgIG5ldyBOdW1iZXJbXSB7IG5ldyBJbnRlZ2VyKDEyMzQ1KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBMb25nKDEyMzQ1KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBqYXZhLm1hdGguQmlnRGVjaW1hbCgiMTIzNDUuNDk5OSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IGphdmEubWF0aC5CaWdEZWNpbWFsKCIxMjM0NC41MDAxIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICIxMi4zNDVFMyIpOworICAgICAgICBleHBlY3QobmV3IERlY2ltYWxGb3JtYXQoIiMjMC4jIyMjRTAiLCBVUyksCisgICAgICAgICAgICAgICBuZXcgTnVtYmVyW10geyBuZXcgamF2YS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1LjUwMDAiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBqYXZhLm1hdGguQmlnRGVjaW1hbCgiMTIzNDYuNTAwMCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAiMTIuMzQ2RTMiKTsKKyAgICAgICAgLypGb3IgSUNVIGNvbXBhdGliaWxpdHkgW1JpY2hhcmQvR0NMXSovCisgICAgICAgIGV4cGVjdChOdW1iZXJGb3JtYXQuZ2V0U2NpZW50aWZpY0luc3RhbmNlKExvY2FsZS5GUkFOQ0UpLAorICAgICAgICAgICAgICAgbmV3IERvdWJsZSgxMjM0NS42Nzg5MDEpLAorICAgICAgICAgICAgICAgIjEsMjM0NTY3ODkwMUU0Iik7CisgICAgICAgIGV4cGVjdChuZXcgRGVjaW1hbEZvcm1hdCgiIyMwLiMjIyNFMCIsIFVTKSwKKyAgICAgICAgICAgICAgIG5ldyBEb3VibGUoNzg5LjEyMzQ1ZS05KSwKKyAgICAgICAgICAgICAgICI3ODkuMTJFLTkiKTsKKyAgICAgICAgZXhwZWN0KG5ldyBEZWNpbWFsRm9ybWF0KCIjIzAuIyMjI0UwIiwgVVMpLAorICAgICAgICAgICAgICAgbmV3IERvdWJsZSg3ODAuZS05KSwKKyAgICAgICAgICAgICAgICI3ODBFLTkiKTsKKyAgICAgICAgZXhwZWN0KG5ldyBEZWNpbWFsRm9ybWF0KCIuIyMjRTAiLCBVUyksCisgICAgICAgICAgICAgICBuZXcgRG91YmxlKDQ1Njc4KSwKKyAgICAgICAgICAgICAgICIuNDU3RTUiKTsKKyAgICAgICAgZXhwZWN0KG5ldyBEZWNpbWFsRm9ybWF0KCIuIyMjRTAiLCBVUyksCisgICAgICAgICAgICAgICBuZXcgTG9uZygwKSwKKyAgICAgICAgICAgICAgICIuMEUwIik7CisgICAgICAgIGV4cGVjdChuZXcgRGVjaW1hbEZvcm1hdFtdIHsgbmV3IERlY2ltYWxGb3JtYXQoIiNFMCIsIFVTKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGVjaW1hbEZvcm1hdCgiIyNFMCIsIFVTKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGVjaW1hbEZvcm1hdCgiIyMjI0UwIiwgVVMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZWNpbWFsRm9ybWF0KCIwRTAiLCBVUyksICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZWNpbWFsRm9ybWF0KCIwMEUwIiwgVVMpLCAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZWNpbWFsRm9ybWF0KCIwMDBFMCIsIFVTKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICBuZXcgTG9uZyg0NTY3ODAwMCksCisgICAgICAgICAgICAgICBuZXcgU3RyaW5nW10geyAiNC41Njc4RTciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjQ1LjY3OEU2IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI0NTY3LjhFNCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiNUU3IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI0NkU2IiwgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjQ1N0U1IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICApOworICAgICAgICBleHBlY3QobmV3IERlY2ltYWxGb3JtYXQoIiMjI0UwIiwgVVMpLAorICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsgbmV3IERvdWJsZSgwLjAwMDAxMjMpLCAiMTIuM0UtNiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgRG91YmxlKDAuMDAwMTIzKSwgIjEyM0UtNiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgamF2YS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAxMjMiKSwgIjEuMjNFLTMiLCAvLyBDYWZlIFZNIG1lc3NlcyB1cCBEb3VibGUoMC4wMDEyMykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEb3VibGUoMC4wMTIzKSwgIjEyLjNFLTMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERvdWJsZSgwLjEyMyksICIxMjNFLTMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERvdWJsZSgxLjIzKSwgIjEuMjNFMCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgRG91YmxlKDEyLjMpLCAiMTIuM0UwIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEb3VibGUoMTIzKSwgIjEyM0UwIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEb3VibGUoMTIzMCksICIxLjIzRTMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgZXhwZWN0KG5ldyBEZWNpbWFsRm9ybWF0KCIwLiNFKzAwIiwgVVMpLAorICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsgbmV3IERvdWJsZSgwLjAwMDEyKSwgIjEuMkUtMDQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IExvbmcoMTIwMDApLCAgICAgIjEuMkUrMDQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0UGFkKCkgeworICAgICAgICBEZWNpbWFsRm9ybWF0U3ltYm9scyBVUyA9IG5ldyBEZWNpbWFsRm9ybWF0U3ltYm9scyhMb2NhbGUuVVMpOworICAgICAgICBleHBlY3QobmV3IERlY2ltYWxGb3JtYXQoIipeIyMuIyMiLCBVUyksCisgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyBuZXcgTG9uZygwKSwgICAgICAiXl5eXjAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERvdWJsZSgtMS4zKSwgIl4tMS4zIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICApOworICAgICAgICBleHBlY3QobmV3IERlY2ltYWxGb3JtYXQoIiMjMC4wIyMjI0UwKl8gZy1tL3NeMiIsIFVTKSwKKyAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IG5ldyBMb25nKDApLCAgICAgICAiMC4wRTBfX19fX18gZy1tL3NeMiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgRG91YmxlKDEuMC8zKSwgIjMzMy4zMzNFLTNfIGctbS9zXjIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICk7CisgICAgICAgIGV4cGVjdChuZXcgRGVjaW1hbEZvcm1hdCgiIyMwLjAjIyMjKl8gZy1tL3NeMiIsIFVTKSwKKyAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IG5ldyBMb25nKDApLCAgICAgICAiMC4wX19fX19fIGctbS9zXjIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERvdWJsZSgxLjAvMyksICIwLjMzMzMzX18gZy1tL3NeMiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgKTsKKyAgICAgICAgZXhwZWN0KG5ldyBEZWNpbWFsRm9ybWF0KCIqeCMsIyMjLCMjIywjIzAuMDA7KngoIywjIyMsIyMjLCMjMC4wMCkiLCBVUyksCisgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geworICAgICAgICAgICAgICAgICAgIG5ldyBMb25nKC0xMDApLCAgICAgICAgInh4eHh4eHh4KDEwMC4wMCkiLAorICAgICAgICAgICAgICAgICAgIG5ldyBMb25nKC0xMDAwKSwgICAgICAgInh4eHh4eCgxLDAwMC4wMCkiLAorICAgICAgICAgICAgICAgICAgIG5ldyBMb25nKC0xMDAwMDAwKSwgICAgInh4KDEsMDAwLDAwMC4wMCkiLAorICAgICAgICAgICAgICAgICAgIG5ldyBMb25nKC0xMDAwMDAwMDAwKSwgIigxLDAwMCwwMDAsMDAwLjAwKSIsCisgICAgICAgICAgICAgICB9KTsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSB2b2lkIGV4cGVjdChOdW1iZXJGb3JtYXQgZm10LCBPYmplY3RbXSBkYXRhKSB7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxkYXRhLmxlbmd0aDsgaSs9MikgeworICAgICAgICAgICAgZXhwZWN0KGZtdCwgKE51bWJlcikgZGF0YVtpXSwgKFN0cmluZykgZGF0YVtpKzFdKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHZvaWQgZXhwZWN0KE9iamVjdCBmbXRvLCBPYmplY3QgbnVtbywgT2JqZWN0IGV4cG8pIHsKKyAgICAgICAgTnVtYmVyRm9ybWF0IGZtdCA9IG51bGwsIGZtdHNbXSA9IG51bGw7CisgICAgICAgIE51bWJlciBudW0gPSBudWxsLCBudW1zW10gPSBudWxsOworICAgICAgICBTdHJpbmcgZXhwID0gbnVsbCwgZXhwc1tdID0gbnVsbDsKKyAgICAgICAgaWYgKGZtdG8gaW5zdGFuY2VvZiBOdW1iZXJGb3JtYXRbXSkgeworICAgICAgICAgICAgZm10cyA9IChOdW1iZXJGb3JtYXRbXSkgZm10bzsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZtdCA9IChOdW1iZXJGb3JtYXQpIGZtdG87CisgICAgICAgIH0KKyAgICAgICAgaWYgKG51bW8gaW5zdGFuY2VvZiBOdW1iZXJbXSkgeworICAgICAgICAgICAgbnVtcyA9IChOdW1iZXJbXSkgbnVtbzsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG51bSA9IChOdW1iZXIpIG51bW87CisgICAgICAgIH0KKyAgICAgICAgaWYgKGV4cG8gaW5zdGFuY2VvZiBTdHJpbmdbXSkgeworICAgICAgICAgICAgZXhwcyA9IChTdHJpbmdbXSkgZXhwbzsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGV4cCA9IChTdHJpbmcpIGV4cG87CisgICAgICAgIH0KKyAgICAgICAgaW50IG4gPSAxOworICAgICAgICBpZiAoZm10cyAhPSBudWxsKSB7CisgICAgICAgICAgICBuID0gTWF0aC5tYXgobiwgZm10cy5sZW5ndGgpOworICAgICAgICB9CisgICAgICAgIGlmIChudW1zICE9IG51bGwpIHsKKyAgICAgICAgICAgIG4gPSBNYXRoLm1heChuLCBudW1zLmxlbmd0aCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGV4cHMgIT0gbnVsbCkgeworICAgICAgICAgICAgbiA9IE1hdGgubWF4KG4sIGV4cHMubGVuZ3RoKTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGludCBpPTA7IGk8bjsgKytpKSB7CisgICAgICAgICAgICBleHBlY3QoZm10cyA9PSBudWxsID8gZm10IDogZm10c1tpXSwKKyAgICAgICAgICAgICAgICAgICBudW1zID09IG51bGwgPyBudW0gOiBudW1zW2ldLAorICAgICAgICAgICAgICAgICAgIGV4cHMgPT0gbnVsbCA/IGV4cCA6IGV4cHNbaV0pOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIHNob3dOdW1iZXIoTnVtYmVyIG4pIHsKKyAgICAgICAgU3RyaW5nIGNscyA9IG4uZ2V0Q2xhc3MoKS5nZXROYW1lKCk7CisgICAgICAgIGlmICghKG4gaW5zdGFuY2VvZiBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwKKyAgICAgICAgICAgICAgfHwgbiBpbnN0YW5jZW9mIGphdmEubWF0aC5CaWdEZWNpbWFsKSkgeworICAgICAgICAgICAgaW50IGkgPSBjbHMubGFzdEluZGV4T2YoJy4nKTsKKyAgICAgICAgICAgIGNscyA9IGNscy5zdWJzdHJpbmcoaSsxKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbi50b1N0cmluZygpICsgIiAoIiArIGNscyArICcpJzsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgZXhwZWN0KE51bWJlckZvcm1hdCBmbXQsIE51bWJlciBuLCBTdHJpbmcgZXhwKSB7CisgICAgICAgIFN0cmluZyBzYXcgPSBmbXQuZm9ybWF0KG4pOworICAgICAgICBTdHJpbmcgcGF0ID0gKChEZWNpbWFsRm9ybWF0KSBmbXQpLnRvUGF0dGVybigpOworICAgICAgICBpZiAoc2F3LmVxdWFscyhleHApKSB7CisgICAgICAgICAgICBsb2dsbigiT2sgICAiICsgc2hvd051bWJlcihuKSArICIgeCAiICsKKyAgICAgICAgICAgICAgICAgIHBhdCArICIgPSAiICsKKyAgICAgICAgICAgICAgICAgIFV0aWxpdHkuZXNjYXBlKHNhdykpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZXJybG4oIkZBSUwgIiArIHNob3dOdW1iZXIobikgKyAiIHggIiArCisgICAgICAgICAgICAgICAgICBwYXQgKyAiID0gXCIiICsKKyAgICAgICAgICAgICAgICAgIFV0aWxpdHkuZXNjYXBlKHNhdykgKyAiLCBleHBlY3RlZCAiICsgVXRpbGl0eS5lc2NhcGUoZXhwKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgZXhwZWN0KE51bWJlckZvcm1hdCBmbXQsIFN0cmluZyBzdHIsIE51bWJlciBleHApIHsKKyAgICAgICAgTnVtYmVyIHNhdyA9IG51bGw7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBzYXcgPSBmbXQucGFyc2Uoc3RyKTsKKyAgICAgICAgfSBjYXRjaCAoUGFyc2VFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgc2F3ID0gbnVsbDsKKyAgICAgICAgfQorICAgICAgICBTdHJpbmcgcGF0ID0gKChEZWNpbWFsRm9ybWF0KSBmbXQpLnRvUGF0dGVybigpOworICAgICAgICBpZiAoc2F3LmVxdWFscyhleHApKSB7CisgICAgICAgICAgICBsb2dsbigiT2sgICBcIiIgKyBzdHIgKyAiXCIgeCAiICsKKyAgICAgICAgICAgICAgICAgIHBhdCArICIgPSAiICsKKyAgICAgICAgICAgICAgICAgIHNob3dOdW1iZXIoc2F3KSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTCBcIiIgKyBzdHIgKyAiXCIgeCAiICsKKyAgICAgICAgICAgICAgICAgIHBhdCArICIgPSAiICsKKyAgICAgICAgICAgICAgICAgIHNob3dOdW1iZXIoc2F3KSArICIsIGV4cGVjdGVkICIgKyBzaG93TnVtYmVyKGV4cCkpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogR2l2ZW4gYSBzdHJpbmcgY29tcG9zZWQgb2YgWzAtOV0gYW5kIG90aGVyIGNoYXJzLCBjb252ZXJ0IHRoZQorICAgICAqIFswLTldIGNoYXJzIHRvIGJlIG9mZnNldHMgMC4uOSBmcm9tICd6ZXJvJy4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgdHJhbnNtdXRlKFN0cmluZyBzdHIsIGNoYXIgemVybykgeworICAgICAgICBTdHJpbmdCdWZmZXIgYnVmID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBmb3IgKGludCBpPTA7IGk8c3RyLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgIGNoYXIgYyA9IHN0ci5jaGFyQXQoaSk7CisgICAgICAgICAgICBpZiAoYyA+PSAnMCcgJiYgYyA8PSAnOScpIHsKKyAgICAgICAgICAgICAgICBjID0gKGNoYXIpIChjIC0gJzAnICsgemVybyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBidWYuYXBwZW5kKGMpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBidWYudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0NDE2MTEwMCgpIHsKKyAgICAgICAgTnVtYmVyRm9ybWF0IGYgPSBOdW1iZXJGb3JtYXQuZ2V0SW5zdGFuY2UoKTsKKyAgICAgICAgZi5zZXRNaW5pbXVtRnJhY3Rpb25EaWdpdHMoMSk7CisgICAgICAgIGYuc2V0TWF4aW11bUZyYWN0aW9uRGlnaXRzKDEpOworICAgICAgICBkb3VibGUgYSA9IC0wLjA5OworICAgICAgICBTdHJpbmcgcyA9IGYuZm9ybWF0KGEpOworICAgICAgICBsb2dsbihhICsgIiB4ICIgKworICAgICAgICAgICAgICAoKERlY2ltYWxGb3JtYXQpIGYpLnRvUGF0dGVybigpICsgIiA9ICIgKworICAgICAgICAgICAgICBzKTsKKyAgICAgICAgaWYgKCFzLmVxdWFscygiLTAuMSIpKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTCIpOworICAgICAgICB9CisgICAgfSAgICAgICAgCisKKyAgICBwdWJsaWMgdm9pZCBUZXN0QmlnRGVjaW1hbEoyOCgpIHsKKyAgICAgICAgU3RyaW5nW10gREFUQSA9IHsKKyAgICAgICAgICAgICIxIiwgIjFFMCIsCisgICAgICAgICAgICAiLTEiLCAiLTFFMCIsCisgICAgICAgICAgICAiMCIsICIwRTAiLAorICAgICAgICAgICAgIjEyZTM0IiwgIjEuMkUzNSIsCisgICAgICAgICAgICAiLTEyLjNlLTQ1IiwgIi0xLjIzRS00NCIsCisgICAgICAgICAgICAiMC43M2UtNyIsICI3LjNFLTgiLAorICAgICAgICB9OworICAgICAgICBOdW1iZXJGb3JtYXQgZm10ID0gTnVtYmVyRm9ybWF0LmdldFNjaWVudGlmaWNJbnN0YW5jZShMb2NhbGUuVVMpOworICAgICAgICBsb2dsbigiUGF0dGVybjogIiArICgoRGVjaW1hbEZvcm1hdClmbXQpLnRvUGF0dGVybigpKTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPERBVEEubGVuZ3RoOyBpKz0yKSB7CisgICAgICAgICAgICBTdHJpbmcgaW5wdXQgPSBEQVRBW2ldOworICAgICAgICAgICAgU3RyaW5nIGV4cCA9IERBVEFbaSsxXTsKKyAgICAgICAgICAgIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCBiZCA9IG5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoaW5wdXQpOworICAgICAgICAgICAgU3RyaW5nIG91dHB1dCA9IGZtdC5mb3JtYXQoYmQpOworICAgICAgICAgICAgaWYgKG91dHB1dC5lcXVhbHMoZXhwKSkgeworICAgICAgICAgICAgICAgIGxvZ2xuKCJpbnB1dD0iICsgaW5wdXQgKyAiIG51bT0iICsgYmQgKyAiIG91dHB1dD0iICsgb3V0cHV0KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6IGlucHV0PSIgKyBpbnB1dCArICIgbnVtPSIgKyBiZCArICIgb3V0cHV0PSIgKyBvdXRwdXQgKworICAgICAgICAgICAgICAgICAgICAgICIgZXhwZWN0ZWQ9IiArIGV4cCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvZm9ybWF0L0RhdGVGb3JtYXRNaXNjVGVzdHMuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9mb3JtYXQvRGF0ZUZvcm1hdE1pc2NUZXN0cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmM3ODc4NTMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvZm9ybWF0L0RhdGVGb3JtYXRNaXNjVGVzdHMuamF2YQpAQCAtMCwwICsxLDE2NyBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICAgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvZm9ybWF0L0RhdGVGb3JtYXRNaXNjVGVzdHMuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNTowOCAkIAorICogJFJldmlzaW9uOiAxLjUgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKKy8qKiAKKyAqIFBvcnQgRnJvbTogICBJQ1U0QyB2MS44LjEgOiBmb3JtYXQgOiBEYXRlRm9ybWF0TWlzY1Rlc3RzCisgKiBTb3VyY2UgRmlsZTogJElDVTRDUm9vdC9zb3VyY2UvdGVzdC9pbnRsdGVzdC9taXNjZHRmbS5jcHAKKyAqKi8KKworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudGVzdC5mb3JtYXQ7CisKK2ltcG9ydCBjb20uaWJtLmljdS5sYW5nLio7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuKjsKK2ltcG9ydCBqYXZhLnRleHQuRmllbGRQb3NpdGlvbjsKK2ltcG9ydCBqYXZhLnRleHQuUGFyc2VFeGNlcHRpb247CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKKworLyoqIAorICogUGVyZm9ybXMgbWlzY2VsbGFuZW91cyB0ZXN0cyBmb3IgRGF0ZUZvcm1hdCwgU2ltcGxlRGF0ZUZvcm1hdCwgRGF0ZUZvcm1hdFN5bWJvbHMKKyAqKi8KK3B1YmxpYyBjbGFzcyBEYXRlRm9ybWF0TWlzY1Rlc3RzIGV4dGVuZHMgY29tLmlibS5pY3UuZGV2LnRlc3QuVGVzdEZtd2sgeworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbnsKKyAgICAgICAgbmV3IERhdGVGb3JtYXRNaXNjVGVzdHMoKS5ydW4oYXJncyk7CisgICAgfQorICAgIAorICAgIC8qCisgICAgICogQGJ1ZyA0MDk3NDUwCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQwOTc0NTAoKSB7CisgICAgICAgIC8vCisgICAgICAgIC8vIERhdGUgcGFyc2UgcmVxdWlyaW5nIDQgZGlnaXQgeWVhci4KKyAgICAgICAgLy8KKyAgICAgICAgU3RyaW5nIGRzdHJpbmdbXSA9IHsKKyAgICAgICAgICAgICI5NyIsICIxOTk3IiwgIjk3IiwgIjE5OTciLCAiMDEiLCAiMjAwMSIsICIwMSIsICIyMDAxIiwKKyAgICAgICAgICAgICAiMSIsICIxIiwgIjExIiwgIjExIiwgIjExMSIsICIxMTEifTsgCisgICAgCisgICAgICAgIFN0cmluZyBkZm9ybWF0W10gPSAKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAieXkiLCAieXkiLCAieXl5eSIsICJ5eXl5IiwgInl5IiwgInl5IiwgInl5eXkiLCAieXl5eSIsIAorICAgICAgICAgICAgICAgICJ5eSIsICJ5eXl5IiwgInl5IiwgInl5eXkiLCAieXkiLCAieXl5eSJ9OyAgICAgICAgIAorICAgIAorICAgICAgICBTaW1wbGVEYXRlRm9ybWF0IGZvcm1hdHRlcjsKKyAgICAgICAgU2ltcGxlRGF0ZUZvcm1hdCByZXN1bHRGb3JtYXR0ZXIgPSBuZXcgU2ltcGxlRGF0ZUZvcm1hdCgieXl5eSIpOworICAgICAgICBsb2dsbigiRm9ybWF0XHRTb3VyY2VcdFJlc3VsdCIpOworICAgICAgICBsb2dsbigiLS0tLS0tLVx0LS0tLS0tLVx0LS0tLS0tLSIpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGRzdHJpbmcubGVuZ3RoIDsgaSsrKSB7CisgICAgICAgICAgICBsb2coZGZvcm1hdFtpXSArICJcdCIgKyBkc3RyaW5nW2ldICsgIlx0Iik7CisgICAgICAgICAgICBmb3JtYXR0ZXIgPSBuZXcgU2ltcGxlRGF0ZUZvcm1hdChkZm9ybWF0W2ldKTsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgU3RyaW5nQnVmZmVyIHN0ciA9IG5ldyBTdHJpbmdCdWZmZXIoIiIpOworICAgICAgICAgICAgICAgIEZpZWxkUG9zaXRpb24gcG9zID0gbmV3IEZpZWxkUG9zaXRpb24oMCk7CisgICAgICAgICAgICAgICAgbG9nbG4ocmVzdWx0Rm9ybWF0dGVyLmZvcm1hdChmb3JtYXR0ZXIucGFyc2UoZHN0cmluZ1tpXSksIHN0ciwgcG9zKS50b1N0cmluZygpKTsgCisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXRjaCAoUGFyc2VFeGNlcHRpb24gZXhjZXB0aW9uKSB7CisgICAgICAgICAgICAgICAgZXJybG4oImV4Y2VwdGlvbiAtLT4gIiArIGV4Y2VwdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsb2dsbigiIik7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyogQEJ1ZyA0MDk5OTc1CisgICAgICogU2ltcGxlRGF0ZUZvcm1hdCBjb25zdHJ1Y3RvciBTaW1wbGVEYXRlRm9ybWF0KFN0cmluZywgRGF0ZUZvcm1hdFN5bWJvbHMpCisgICAgICogc2hvdWxkIGNsb25lIHRoZSBEYXRlRm9ybWF0U3ltYm9scyBwYXJhbWV0ZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDA5OTk3NW5ldygpIHsKKyAgICAgICAgRGF0ZSBkID0gbmV3IERhdGUoKTsKKyAgICAgICAgLy90ZXN0IFNpbXBsZURhdGVGb3JtYXQgQ29uc3RydWN0b3IKKyAgICAgICAgeworICAgICAgICAgICAgRGF0ZUZvcm1hdFN5bWJvbHMgc3ltYm9scyA9IG5ldyBEYXRlRm9ybWF0U3ltYm9scyhMb2NhbGUuVVMpOworICAgICAgICAgICAgU2ltcGxlRGF0ZUZvcm1hdCBkZiA9IG5ldyBTaW1wbGVEYXRlRm9ybWF0KCJFIGhoOm1tIiwgc3ltYm9scyk7CisgICAgICAgICAgICBTaW1wbGVEYXRlRm9ybWF0IGRmQ2xvbmUgPSAoU2ltcGxlRGF0ZUZvcm1hdCkgZGYuY2xvbmUoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgbG9nbG4oZGYudG9Mb2NhbGl6ZWRQYXR0ZXJuKCkpOworICAgICAgICAgICAgU3RyaW5nIHMwID0gZGYuZm9ybWF0KGQpOworICAgICAgICAgICAgU3RyaW5nIHNfZGZDbG9uZSA9IGRmQ2xvbmUuZm9ybWF0KGQpOworICAgICAgICAgICAgCisgICAgICAgICAgICBzeW1ib2xzLnNldExvY2FsUGF0dGVybkNoYXJzKCJhYmNkZWZnaGlqa2xtb25wcXIiKTsgLy8gY2hhbmdlIHZhbHVlIG9mIGZpZWxkCisgICAgICAgICAgICBsb2dsbihkZi50b0xvY2FsaXplZFBhdHRlcm4oKSk7CisgICAgICAgICAgICBTdHJpbmcgczEgPSBkZi5mb3JtYXQoZCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICghczEuZXF1YWxzKHMwKSB8fCAhczEuZXF1YWxzKHNfZGZDbG9uZSkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiQ29uc3RydWN0b3I6IHRoZSBmb3JtYXRzIGFyZSBub3QgZXF1YWwiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghZGYuZXF1YWxzKGRmQ2xvbmUpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIlRoZSBDbG9uZSBPYmplY3QgZG9lcyBub3QgZXF1YWwgd2l0aCB0aGUgb3JpZ25hbCBzb3VyY2UiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAvL3Rlc3QgU2ltcGxlRGF0ZUZvcm1hdC5zZXREYXRlRm9ybWF0U3ltYm9scygpCisgICAgICAgIHsKKyAgICAgICAgICAgIERhdGVGb3JtYXRTeW1ib2xzIHN5bWJvbHMgPSBuZXcgRGF0ZUZvcm1hdFN5bWJvbHMoTG9jYWxlLlVTKTsKKyAgICAgICAgICAgIFNpbXBsZURhdGVGb3JtYXQgZGYgPSBuZXcgU2ltcGxlRGF0ZUZvcm1hdCgiRSBoaDptbSIpOworICAgICAgICAgICAgZGYuc2V0RGF0ZUZvcm1hdFN5bWJvbHMoc3ltYm9scyk7CisgICAgICAgICAgICBTaW1wbGVEYXRlRm9ybWF0IGRmQ2xvbmUgPSAoU2ltcGxlRGF0ZUZvcm1hdCkgZGYuY2xvbmUoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgbG9nbG4oZGYudG9Mb2NhbGl6ZWRQYXR0ZXJuKCkpOworICAgICAgICAgICAgU3RyaW5nIHMwID0gZGYuZm9ybWF0KGQpOworICAgICAgICAgICAgU3RyaW5nIHNfZGZDbG9uZSA9IGRmQ2xvbmUuZm9ybWF0KGQpOworICAgICAgICAgICAgCisgICAgICAgICAgICBzeW1ib2xzLnNldExvY2FsUGF0dGVybkNoYXJzKCJhYmNkZWZnaGlqa2xtb25wcXIiKTsgLy8gY2hhbmdlIHZhbHVlIG9mIGZpZWxkCisgICAgICAgICAgICBsb2dsbihkZi50b0xvY2FsaXplZFBhdHRlcm4oKSk7CisgICAgICAgICAgICBTdHJpbmcgczEgPSBkZi5mb3JtYXQoZCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICghczEuZXF1YWxzKHMwKSB8fCAhczEuZXF1YWxzKHNfZGZDbG9uZSkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigic2V0RGF0ZUZvcm1hdFN5bWJvbHM6IHRoZSBmb3JtYXRzIGFyZSBub3QgZXF1YWwiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghZGYuZXF1YWxzKGRmQ2xvbmUpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIlRoZSBDbG9uZSBPYmplY3QgZG9lcyBub3QgZXF1YWwgd2l0aCB0aGUgb3JpZ25hbCBzb3VyY2UiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKgorICAgICAqIEBidWcgNDExNzMzNQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTE3MzM1KCkgeworICAgICAgICAvL2NoYXIgYmNDW10gPSB7MHg3RDAwLCAweDUxNDMsIDB4NTI0RH07CisgICAgICAgIFN0cmluZyBiYyA9ICJcdTdEMDBcdTUxNDNcdTUyNEQiOworICAgICAgICBTdHJpbmcgYWQgPSAiXHU4OTdmXHU2NmE2IjsKKyAgICAgICAgLy9jaGFyIGFkQ1tdID0gezB4ODk3RiwgMHg2NkE2fTsKKyAgICAgICAgU3RyaW5nIGpzdExvbmcgPSAiXHU2NWU1XHU2NzJjXHU2YTE5XHU2ZTk2XHU2NjQyIjsKKyAgICAgICAgLy9jaGFyIGpzdExvbmdDW10gPSB7MHg2NWU1LCAweDY3MmMsIDB4NmExOSwgMHg2ZTk2LCAweDY2NDJ9OyAvL1RoZSB2YXJpYWJsZSBpcyBuZXZlciB1c2VkCisgICAgICAgIFN0cmluZyBqc3RTaG9ydCA9ICJKU1QiOworICAgIAorICAgICAgICBEYXRlRm9ybWF0U3ltYm9scyBzeW1ib2xzID0gbmV3IERhdGVGb3JtYXRTeW1ib2xzKExvY2FsZS5KQVBBTik7CisgICAgICAgIGZpbmFsIFN0cmluZ1tdIGVyYXMgPSBzeW1ib2xzLmdldEVyYXMoKTsKKyAgICAgICAgLy9pbnQgZXJhQ291bnQgPSBlcmFzLmxlbmd0aDsgLy9UaGUgdmFyaWFibGUgaXMgbmV2ZXIgdXNlZAorICAgICAgICBsb2dsbigiQkMgPSAiICsgZXJhc1swXSk7CisgICAgICAgIGlmICghZXJhc1swXS5lcXVhbHMoYmMpKSB7CisgICAgICAgICAgICBlcnJsbigiKioqIFNob3VsZCBoYXZlIGJlZW4gIiArIGJjKTsKKyAgICAgICAgfQorICAgIAorICAgICAgICBsb2dsbigiQUQgPSAiICsgZXJhc1sxXSk7CisgICAgICAgIGlmICghZXJhc1sxXS5lcXVhbHMoYWQpKSB7CisgICAgICAgICAgICBlcnJsbigiKioqIFNob3VsZCBoYXZlIGJlZW4gIiArIGFkKTsKKyAgICAgICAgfQorICAgIAorICAgICAgICBmaW5hbCBTdHJpbmcgem9uZXNbXVtdID0gc3ltYm9scy5nZXRab25lU3RyaW5ncygpOworICAgICAgICAvL2ludCByb3dDb3VudCA9IHpvbmVzLmxlbmd0aCwgY29sQ291bnQgPSB6b25lc1swXS5sZW5ndGg7IC8vVGhlIHZhcmlhYmxlIGlzIG5ldmVyIHVzZWQKKyAgICAgICAgbG9nbG4oIkxvbmcgem9uZSBuYW1lID0gIiArIHpvbmVzWzBdWzFdKTsKKyAgICAgICAgaWYgKCF6b25lc1swXVsxXS5lcXVhbHMoanN0TG9uZykpIHsKKyAgICAgICAgICAgIGVycmxuKCIqKiogU2hvdWxkIGhhdmUgYmVlbiAiICsganN0TG9uZyk7CisgICAgICAgIH0KKyAgICAgICAgbG9nbG4oIlNob3J0IHpvbmUgbmFtZSA9ICIgKyB6b25lc1swXVsyXSk7CisgICAgICAgIGlmICghem9uZXNbMF1bMl0uZXF1YWxzKGpzdFNob3J0KSkgeworICAgICAgICAgICAgZXJybG4oIioqKiBTaG91bGQgaGF2ZSBiZWVuICIgKyBqc3RTaG9ydCk7CisgICAgICAgIH0KKyAgICAgICAgbG9nbG4oIkxvbmcgem9uZSBuYW1lID0gIiArIHpvbmVzWzBdWzNdKTsKKyAgICAgICAgaWYgKHpvbmVzWzBdWzNdICE9IGpzdExvbmcpIHsKKyAgICAgICAgICAgIGVycmxuKCIqKiogU2hvdWxkIGhhdmUgYmVlbiAiICsganN0TG9uZyk7CisgICAgICAgIH0KKyAgICAgICAgbG9nbG4oIlNIT1JUIHpvbmUgbmFtZSA9ICIgKyB6b25lc1swXVs0XSk7CisgICAgICAgIGlmICh6b25lc1swXVs0XSAhPSBqc3RTaG9ydCkgeworICAgICAgICAgICAgZXJybG4oIioqKiBTaG91bGQgaGF2ZSBiZWVuICIgKyBqc3RTaG9ydCk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvZm9ybWF0L0RhdGVGb3JtYXRSZWdyZXNzaW9uVGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2Zvcm1hdC9EYXRlRm9ybWF0UmVncmVzc2lvblRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4yY2Y4MDM2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2Zvcm1hdC9EYXRlRm9ybWF0UmVncmVzc2lvblRlc3QuamF2YQpAQCAtMCwwICsxLDg4NSBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICAgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvZm9ybWF0L0RhdGVGb3JtYXRSZWdyZXNzaW9uVGVzdC5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzAzLzEwIDE5OjQwOjEzICQgCisgKiAkUmV2aXNpb246IDEuNSAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworLyoqIAorICogUG9ydCBGcm9tOiAgIElDVTRDIHYxLjguMSA6IGZvcm1hdCA6IERhdGVGb3JtYXRSZWdyZXNzaW9uVGVzdAorICogU291cmNlIEZpbGU6ICRJQ1U0Q1Jvb3Qvc291cmNlL3Rlc3QvaW50bHRlc3QvZHRmbXJndHMuY3BwCisgKiovCisKK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3QuZm9ybWF0OworCitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5JQ1VMb2NhbGVEYXRhOworaW1wb3J0IGNvbS5pYm0uaWN1LmxhbmcuKjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0Lio7CitpbXBvcnQgY29tLmlibS5pY3UudXRpbC4qOworCitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGphdmEudGV4dC5GaWVsZFBvc2l0aW9uOworaW1wb3J0IGphdmEudGV4dC5Gb3JtYXQ7CitpbXBvcnQgamF2YS50ZXh0LlBhcnNlRXhjZXB0aW9uOworaW1wb3J0IGphdmEudGV4dC5QYXJzZVBvc2l0aW9uOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CitpbXBvcnQgamF2YS51dGlsLlJlc291cmNlQnVuZGxlOworCisvKiogCisgKiBQZXJmb3JtcyByZWdyZXNzaW9uIHRlc3QgZm9yIERhdGVGb3JtYXQKKyAqKi8KK3B1YmxpYyBjbGFzcyBEYXRlRm9ybWF0UmVncmVzc2lvblRlc3QgZXh0ZW5kcyBjb20uaWJtLmljdS5kZXYudGVzdC5UZXN0Rm13ayB7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9ueworICAgICAgICBuZXcgRGF0ZUZvcm1hdFJlZ3Jlc3Npb25UZXN0KCkucnVuKGFyZ3MpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBAYnVnIDQwMjkxOTUKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDAyOTE5NSgpIHsKKyAgICAgICAgQ2FsZW5kYXIgY2FsID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTsKKyAgICAgICAgRGF0ZSB0b2RheSA9IGNhbC5nZXRUaW1lKCk7CisgICAgICAgIGxvZ2xuKCJ0b2RheTogIiArIHRvZGF5KTsKKyAgICAgICAgU2ltcGxlRGF0ZUZvcm1hdCBzZGYgPSAoU2ltcGxlRGF0ZUZvcm1hdCkgRGF0ZUZvcm1hdC5nZXREYXRlSW5zdGFuY2UoKTsKKyAgICAgICAgU3RyaW5nIHBhdCA9IHNkZi50b1BhdHRlcm4oKTsKKyAgICAgICAgbG9nbG4oInBhdHRlcm46ICIgKyBwYXQpOworICAgICAgICBTdHJpbmdCdWZmZXIgZm10ZCA9IG5ldyBTdHJpbmdCdWZmZXIoIiIpOworICAgICAgICBGaWVsZFBvc2l0aW9uIHBvcyA9IG5ldyBGaWVsZFBvc2l0aW9uKDApOworICAgICAgICBmbXRkID0gc2RmLmZvcm1hdCh0b2RheSwgZm10ZCwgcG9zKTsKKyAgICAgICAgbG9nbG4oInRvZGF5OiAiICsgZm10ZCk7CisgICAgCisgICAgICAgIHNkZi5hcHBseVBhdHRlcm4oIkcgeXl5eSBEREQiKTsKKyAgICAgICAgU3RyaW5nQnVmZmVyIHRvZGF5UyA9IG5ldyBTdHJpbmdCdWZmZXIoIiIpOworICAgICAgICB0b2RheVMgPSBzZGYuZm9ybWF0KHRvZGF5LCB0b2RheVMsIHBvcyk7CisgICAgICAgIGxvZ2xuKCJ0b2RheTogIiArIHRvZGF5Uyk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB0b2RheSA9IHNkZi5wYXJzZSh0b2RheVMudG9TdHJpbmcoKSk7CisgICAgICAgICAgICBsb2dsbigidG9kYXkgZGF0ZTogIiArIHRvZGF5KTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJFcnJvciByZXBhcnNpbmcgZGF0ZTogIiArIGUuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgfQorICAgIAorICAgICAgICB0cnkgeworICAgICAgICAgICAgU3RyaW5nQnVmZmVyIHJ0ID0gbmV3IFN0cmluZ0J1ZmZlcigiIik7CisgICAgICAgICAgICBydCA9IHNkZi5mb3JtYXQoc2RmLnBhcnNlKHRvZGF5Uy50b1N0cmluZygpKSwgcnQsIHBvcyk7CisgICAgICAgICAgICBsb2dsbigicm91bmQgdHJpcDogIiArIHJ0KTsKKyAgICAgICAgICAgIGlmICghcnQudG9TdHJpbmcoKS5lcXVhbHModG9kYXlTLnRvU3RyaW5nKCkpKQorICAgICAgICAgICAgICAgIGVycmxuKCJGYWlsOiBXYW50ICIgKyB0b2RheVMgKyAiIEdvdCAiICsgcnQpOworICAgICAgICB9IGNhdGNoIChQYXJzZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiRmFpbDogIiArIGUpOworICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBAYnVnIDQwNTI0MDgKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDA1MjQwOCgpIHsKKyAgICAKKyAgICAgICAgRGF0ZUZvcm1hdCBmbXQgPSBEYXRlRm9ybWF0LmdldERhdGVUaW1lSW5zdGFuY2UoRGF0ZUZvcm1hdC5TSE9SVCwgRGF0ZUZvcm1hdC5TSE9SVCwgTG9jYWxlLlVTKTsgCisgICAgICAgIENhbGVuZGFyIGNhbCA9IENhbGVuZGFyLmdldEluc3RhbmNlKCk7CisgICAgICAgIGNhbC5jbGVhcigpOworICAgICAgICBjYWwuc2V0KDk3ICsgMTkwMCwgQ2FsZW5kYXIuTUFZLCAzLCA4LCA1NSk7CisgICAgICAgIERhdGUgZHQgPSBjYWwuZ2V0VGltZSgpOworICAgICAgICBTdHJpbmcgc3RyID0gZm10LmZvcm1hdChkdCk7CisgICAgICAgIGxvZ2xuKHN0cik7CisgICAgICAgIAorICAgICAgICBpZiAoIXN0ci5lcXVhbHMoIjUvMy85NyA4OjU1IEFNIikpCisgICAgICAgICAgICBlcnJsbigiRmFpbDogVGVzdCBicm9rZW47IFdhbnQgNS8zLzk3IDg6NTUgQU0gR290ICIgKyBzdHIpOworICAgIAorICAgICAgICBTdHJpbmcgZXhwZWN0ZWRbXSA9IHsKKyAgICAgICAgICAgICIiLCAvLyJFUkFfRklFTEQiLAorICAgICAgICAgICAgIjk3IiwgLy8iWUVBUl9GSUVMRCIsCisgICAgICAgICAgICAiNSIsIC8vIk1PTlRIX0ZJRUxEIiwKKyAgICAgICAgICAgICIzIiwgLy8iREFURV9GSUVMRCIsCisgICAgICAgICAgICAiIiwgLy8iSE9VUl9PRl9EQVkxX0ZJRUxEIiwKKyAgICAgICAgICAgICIiLCAvLyJIT1VSX09GX0RBWTBfRklFTEQiLAorICAgICAgICAgICAgIjU1IiwgLy8iTUlOVVRFX0ZJRUxEIiwKKyAgICAgICAgICAgICIiLCAvLyJTRUNPTkRfRklFTEQiLAorICAgICAgICAgICAgIiIsIC8vIk1JTExJU0VDT05EX0ZJRUxEIiwKKyAgICAgICAgICAgICIiLCAvLyJEQVlfT0ZfV0VFS19GSUVMRCIsCisgICAgICAgICAgICAiIiwgLy8iREFZX09GX1lFQVJfRklFTEQiLAorICAgICAgICAgICAgIiIsIC8vIkRBWV9PRl9XRUVLX0lOX01PTlRIX0ZJRUxEIiwKKyAgICAgICAgICAgICIiLCAvLyJXRUVLX09GX1lFQVJfRklFTEQiLAorICAgICAgICAgICAgIiIsIC8vIldFRUtfT0ZfTU9OVEhfRklFTEQiLAorICAgICAgICAgICAgIkFNIiwgLy8iQU1fUE1fRklFTEQiLAorICAgICAgICAgICAgIjgiLCAvLyJIT1VSMV9GSUVMRCIsCisgICAgICAgICAgICAiIiwgLy8iSE9VUjBfRklFTEQiLAorICAgICAgICAgICAgIiIgLy8iVElNRVpPTkVfRklFTEQiCisgICAgICAgICAgICB9OyAgICAgICAgCisgICAgICAgIFN0cmluZyBmaWVsZE5hbWVzW10gPSB7CisgICAgICAgICAgICAgICAgIkVSQV9GSUVMRCIsIAorICAgICAgICAgICAgICAgICJZRUFSX0ZJRUxEIiwgCisgICAgICAgICAgICAgICAgIk1PTlRIX0ZJRUxEIiwgCisgICAgICAgICAgICAgICAgIkRBVEVfRklFTEQiLCAKKyAgICAgICAgICAgICAgICAiSE9VUl9PRl9EQVkxX0ZJRUxEIiwgCisgICAgICAgICAgICAgICAgIkhPVVJfT0ZfREFZMF9GSUVMRCIsIAorICAgICAgICAgICAgICAgICJNSU5VVEVfRklFTEQiLCAKKyAgICAgICAgICAgICAgICAiU0VDT05EX0ZJRUxEIiwgCisgICAgICAgICAgICAgICAgIk1JTExJU0VDT05EX0ZJRUxEIiwgCisgICAgICAgICAgICAgICAgIkRBWV9PRl9XRUVLX0ZJRUxEIiwgCisgICAgICAgICAgICAgICAgIkRBWV9PRl9ZRUFSX0ZJRUxEIiwgCisgICAgICAgICAgICAgICAgIkRBWV9PRl9XRUVLX0lOX01PTlRIX0ZJRUxEIiwgCisgICAgICAgICAgICAgICAgIldFRUtfT0ZfWUVBUl9GSUVMRCIsIAorICAgICAgICAgICAgICAgICJXRUVLX09GX01PTlRIX0ZJRUxEIiwgCisgICAgICAgICAgICAgICAgIkFNX1BNX0ZJRUxEIiwgCisgICAgICAgICAgICAgICAgIkhPVVIxX0ZJRUxEIiwgCisgICAgICAgICAgICAgICAgIkhPVVIwX0ZJRUxEIiwgCisgICAgICAgICAgICAgICAgIlRJTUVaT05FX0ZJRUxEIn07IAorICAgIAorICAgICAgICBib29sZWFuIHBhc3MgPSB0cnVlOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8PSAxNzsgKytpKSB7CisgICAgICAgICAgICBGaWVsZFBvc2l0aW9uIHBvcyA9IG5ldyBGaWVsZFBvc2l0aW9uKGkpOworICAgICAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZiA9IG5ldyBTdHJpbmdCdWZmZXIoIiIpOworICAgICAgICAgICAgZm10LmZvcm1hdChkdCwgYnVmLCBwb3MpOworICAgICAgICAgICAgLy9jaGFyW10gZHN0ID0gbmV3IGNoYXJbcG9zLmdldEVuZEluZGV4KCkgLSBwb3MuZ2V0QmVnaW5JbmRleCgpXTsKKyAgICAgICAgICAgIFN0cmluZyBkc3QgPSBidWYuc3Vic3RyaW5nKHBvcy5nZXRCZWdpbkluZGV4KCksIHBvcy5nZXRFbmRJbmRleCgpKTsKKyAgICAgICAgICAgIHN0ciA9IGRzdDsKKyAgICAgICAgICAgIGxvZyhpICsgIjogIiArIGZpZWxkTmFtZXNbaV0gKyAiLCBcIiIgKyBzdHIgKyAiXCIsICIKKyAgICAgICAgICAgICAgICAgICAgKyBwb3MuZ2V0QmVnaW5JbmRleCgpICsgIiwgIiArIHBvcy5nZXRFbmRJbmRleCgpKTsgCisgICAgICAgICAgICBTdHJpbmcgZXhwID0gZXhwZWN0ZWRbaV07CisgICAgICAgICAgICBpZiAoKGV4cC5sZW5ndGgoKSA9PSAwICYmIHN0ci5sZW5ndGgoKSA9PSAwKSB8fCBzdHIuZXF1YWxzKGV4cCkpCisgICAgICAgICAgICAgICAgbG9nbG4oIiBvayIpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbG9nbG4oIiBleHBlY3RlZCAiICsgZXhwKTsKKyAgICAgICAgICAgICAgICBwYXNzID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFwYXNzKQorICAgICAgICAgICAgZXJybG4oIkZhaWw6IEZpZWxkUG9zaXRpb24gbm90IHNldCByaWdodCBieSBEYXRlRm9ybWF0Iik7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEBidWcgNDA1NjU5MQorICAgICAqIFZlcmlmeSB0aGUgZnVuY3Rpb24gb2YgdGhlIFtzfGddZXQyRGlnaXRZZWFyU3RhcnQoKSBBUEkuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQwNTY1OTEoKSB7CisgICAgCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBTaW1wbGVEYXRlRm9ybWF0IGZtdCA9IG5ldyBTaW1wbGVEYXRlRm9ybWF0KCJ5eU1NZGQiLCBMb2NhbGUuVVMpOworICAgICAgICAgICAgQ2FsZW5kYXIgY2FsID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTsKKyAgICAgICAgICAgIGNhbC5jbGVhcigpOworICAgICAgICAgICAgY2FsLnNldCgxODA5LCBDYWxlbmRhci5ERUNFTUJFUiwgMjUpOworICAgICAgICAgICAgRGF0ZSBzdGFydCA9IGNhbC5nZXRUaW1lKCk7CisgICAgICAgICAgICBmbXQuc2V0MkRpZ2l0WWVhclN0YXJ0KHN0YXJ0KTsKKyAgICAgICAgICAgIGlmICgoZm10LmdldDJEaWdpdFllYXJTdGFydCgpICE9IHN0YXJ0KSkKKyAgICAgICAgICAgICAgICBlcnJsbigiZ2V0MkRpZ2l0WWVhclN0YXJ0IGJyb2tlbiIpOworICAgICAgICAgICAgY2FsLmNsZWFyKCk7CisgICAgICAgICAgICBjYWwuc2V0KDE4MDksIENhbGVuZGFyLkRFQ0VNQkVSLCAyNSk7CisgICAgICAgICAgICBEYXRlIGQxID0gY2FsLmdldFRpbWUoKTsKKyAgICAgICAgICAgIGNhbC5jbGVhcigpOworICAgICAgICAgICAgY2FsLnNldCgxOTA5LCBDYWxlbmRhci5ERUNFTUJFUiwgMjQpOworICAgICAgICAgICAgRGF0ZSBkMiA9IGNhbC5nZXRUaW1lKCk7CisgICAgICAgICAgICBjYWwuY2xlYXIoKTsKKyAgICAgICAgICAgIGNhbC5zZXQoMTgwOSwgQ2FsZW5kYXIuREVDRU1CRVIsIDI2KTsKKyAgICAgICAgICAgIERhdGUgZDMgPSBjYWwuZ2V0VGltZSgpOworICAgICAgICAgICAgY2FsLmNsZWFyKCk7CisgICAgICAgICAgICBjYWwuc2V0KDE4NjEsIENhbGVuZGFyLkRFQ0VNQkVSLCAyNSk7CisgICAgICAgICAgICBEYXRlIGQ0ID0gY2FsLmdldFRpbWUoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgRGF0ZSBkYXRlc1tdID0ge2QxLCBkMiwgZDMsIGQ0fTsKKyAgICAKKyAgICAgICAgICAgIFN0cmluZyBzdHJpbmdzW10gPSB7IjA5MTIyNSIsICIwOTEyMjQiLCAiMDkxMjI2IiwgIjYxMTIyNSJ9OyAgICAgICAgICAgIAorICAgIAorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgcyA9IHN0cmluZ3NbaV07CisgICAgICAgICAgICAgICAgRGF0ZSBleHAgPSBkYXRlc1tpXTsKKyAgICAgICAgICAgICAgICBEYXRlIGdvdCA9IGZtdC5wYXJzZShzKTsKKyAgICAgICAgICAgICAgICBsb2dsbihzICsgIiAuICIgKyBnb3QgKyAiOyBleHAgIiArIGV4cCk7CisgICAgICAgICAgICAgICAgaWYgKGdvdC5nZXRUaW1lKCkgIT0gZXhwLmdldFRpbWUoKSkKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oInNldDJEaWdpdFllYXJTdGFydCBicm9rZW4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBjYXRjaCAoUGFyc2VFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkZhaWw6ICIgKyBlKTsKKyAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQGJ1ZyA0MDU5OTE3CisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQwNTk5MTcoKSB7ICAgICAgICAKKyAgICAgICAgU2ltcGxlRGF0ZUZvcm1hdCBmbXQ7CisgICAgICAgIFN0cmluZyBteURhdGU7CisgICAgICAgIGZtdCA9IG5ldyBTaW1wbGVEYXRlRm9ybWF0KCJ5eXl5L01NL2RkIik7CisgICAgICAgIG15RGF0ZSA9ICIxOTk3LzAxLzAxIjsKKyAgICAgICAgYXV4OTE3KCBmbXQsIG15RGF0ZSApOyAgICAgICAgCisgICAgICAgIGZtdCA9IG5ldyBTaW1wbGVEYXRlRm9ybWF0KCJ5eXl5TU1kZCIpOworICAgICAgICBteURhdGUgPSAiMTk5NzAxMDEiOworICAgICAgICBhdXg5MTcoIGZtdCwgbXlEYXRlICk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIGF1eDkxNyhTaW1wbGVEYXRlRm9ybWF0IGZtdCwgU3RyaW5nIHN0cikgeworICAgIAorICAgICAgICBTdHJpbmcgcGF0ID0gZm10LnRvUGF0dGVybigpOworICAgICAgICBsb2dsbigiPT09PT09PT09PT09PT09PT09Iik7CisgICAgICAgIGxvZ2xuKCJ0ZXN0SXQ6IHBhdHRlcm49IiArIHBhdCArICIgc3RyaW5nPSIgKyBzdHIpOworICAgICAgICBQYXJzZVBvc2l0aW9uIHBvcyA9IG5ldyBQYXJzZVBvc2l0aW9uKDApOworICAgICAgICBPYmplY3QgbyA9IGZtdC5wYXJzZU9iamVjdChzdHIsIHBvcyk7CisgICAgICAgIC8vbG9nbG4oIFVuaWNvZGVTdHJpbmcoIlBhcnNlZCBvYmplY3Q6ICIpICsgbyApOworICAgIAorICAgICAgICBTdHJpbmdCdWZmZXIgZm9ybWF0dGVkID0gbmV3IFN0cmluZ0J1ZmZlcigiIik7CisgICAgICAgIEZpZWxkUG9zaXRpb24gcG9zcyA9IG5ldyBGaWVsZFBvc2l0aW9uKDApOworICAgICAgICBmb3JtYXR0ZWQgPSBmbXQuZm9ybWF0KG8sIGZvcm1hdHRlZCwgcG9zcyk7CisgICAgCisgICAgICAgIGxvZ2xuKCJGb3JtYXR0ZWQgc3RyaW5nOiAiICsgZm9ybWF0dGVkKTsKKyAgICAgICAgaWYgKCFmb3JtYXR0ZWQudG9TdHJpbmcoKS5lcXVhbHMoc3RyKSkKKyAgICAgICAgICAgIGVycmxuKCJGYWlsOiBXYW50ICIgKyBzdHIgKyAiIEdvdCAiICsgZm9ybWF0dGVkKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQGJ1ZyA0MDYwMjEyCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQwNjAyMTIoKSB7CisgICAgICAgIFN0cmluZyBkYXRlU3RyaW5nID0gIjE5OTUtMDQwLjA1OjAxOjI5IjsKKyAgICAgICAgbG9nbG4oImRhdGVTdHJpbmc9ICIgKyBkYXRlU3RyaW5nKTsKKyAgICAgICAgbG9nbG4oIlVzaW5nIHl5eXktRERELmhoOm1tOnNzIik7CisgICAgICAgIFNpbXBsZURhdGVGb3JtYXQgZm9ybWF0dGVyID0gbmV3IFNpbXBsZURhdGVGb3JtYXQoInl5eXktRERELmhoOm1tOnNzIik7CisgICAgICAgIFBhcnNlUG9zaXRpb24gcG9zID0gbmV3IFBhcnNlUG9zaXRpb24oMCk7CisgICAgICAgIERhdGUgbXlEYXRlID0gZm9ybWF0dGVyLnBhcnNlKGRhdGVTdHJpbmcsIHBvcyk7CisgICAgICAgIERhdGVGb3JtYXQgZm10ID0gRGF0ZUZvcm1hdC5nZXREYXRlVGltZUluc3RhbmNlKERhdGVGb3JtYXQuRlVMTCwgRGF0ZUZvcm1hdC5MT05HKTsgCisgICAgICAgIFN0cmluZyBteVN0cmluZyA9IGZtdC5mb3JtYXQobXlEYXRlKTsKKyAgICAgICAgbG9nbG4obXlTdHJpbmcpOworICAgICAgICBDYWxlbmRhciBjYWwgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoKTsKKyAgICAgICAgY2FsLnNldFRpbWUobXlEYXRlKTsKKyAgICAgICAgaWYgKChjYWwuZ2V0KENhbGVuZGFyLkRBWV9PRl9ZRUFSKSAhPSA0MCkpCisgICAgICAgICAgICBlcnJsbigiRmFpbDogR290ICIgKyBjYWwuZ2V0KENhbGVuZGFyLkRBWV9PRl9ZRUFSKSArICIgV2FudCA0MCIpOworICAgIAorICAgICAgICBsb2dsbigiVXNpbmcgeXl5eS1kZGQuaGg6bW06c3MiKTsKKyAgICAgICAgZm9ybWF0dGVyID0gbmV3IFNpbXBsZURhdGVGb3JtYXQoInl5eXktZGRkLmhoOm1tOnNzIik7CisgICAgICAgIHBvcy5zZXRJbmRleCgwKTsKKyAgICAgICAgbXlEYXRlID0gZm9ybWF0dGVyLnBhcnNlKGRhdGVTdHJpbmcsIHBvcyk7CisgICAgICAgIG15U3RyaW5nID0gZm10LmZvcm1hdChteURhdGUpOworICAgICAgICBsb2dsbihteVN0cmluZyk7CisgICAgICAgIGNhbC5zZXRUaW1lKG15RGF0ZSk7CisgICAgICAgIGlmICgoY2FsLmdldChDYWxlbmRhci5EQVlfT0ZfWUVBUikgIT0gNDApKQorICAgICAgICAgICAgZXJybG4oIkZhaWw6IEdvdCAiICsgY2FsLmdldChDYWxlbmRhci5EQVlfT0ZfWUVBUikgKyAiIFdhbnQgNDAiKTsKKyAgICB9CisgICAgLyoqCisgICAgICogQGJ1ZyA0MDYxMjg3CisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQwNjEyODcoKSB7CisgICAgCisgICAgICAgIFNpbXBsZURhdGVGb3JtYXQgZGYgPSBuZXcgU2ltcGxlRGF0ZUZvcm1hdCgiZGQvTU0veXl5eSIpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgbG9nbG4oZGYucGFyc2UoIjM1LzAxLzE5NzEiKS50b1N0cmluZygpKTsKKyAgICAgICAgfSBjYXRjaCAoUGFyc2VFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkZhaWw6ICIgKyBlKTsKKyAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CisgICAgICAgIH0KKyAgICAgICAgZGYuc2V0TGVuaWVudChmYWxzZSk7CisgICAgICAgIGJvb2xlYW4gb2sgPSBmYWxzZTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGxvZ2xuKGRmLnBhcnNlKCIzNS8wMS8xOTcxIikudG9TdHJpbmcoKSk7CisgICAgICAgIH0gY2F0Y2ggKFBhcnNlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIG9rID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIW9rKQorICAgICAgICAgICAgZXJybG4oIkZhaWw6IExlbmllbnQgbm90IHdvcmtpbmciKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQGJ1ZyA0MDY1MjQwCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQwNjUyNDAoKSB7CisgICAgICAgIERhdGUgY3VyRGF0ZTsKKyAgICAgICAgRGF0ZUZvcm1hdCBzaG9ydGRhdGUsIGZ1bGxkYXRlOworICAgICAgICBTdHJpbmcgc3RyU2hvcnREYXRlLCBzdHJGdWxsRGF0ZTsKKyAgICAgICAgTG9jYWxlIHNhdmVMb2NhbGUgPSBMb2NhbGUuZ2V0RGVmYXVsdCgpOworICAgICAgICBUaW1lWm9uZSBzYXZlWm9uZSA9IFRpbWVab25lLmdldERlZmF1bHQoKTsKKyAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIExvY2FsZSBjdXJMb2NhbGUgPSBuZXcgTG9jYWxlKCJkZSIsICJERSIpOworICAgICAgICAgICAgTG9jYWxlLnNldERlZmF1bHQoY3VyTG9jYWxlKTsKKyAgICAgICAgICAgIC8vIHtzZmJ9IGFkb3B0RGVmYXVsdCBpbnN0ZWFkIG9mIHNldERlZmF1bHQKKyAgICAgICAgICAgIC8vVGltZVpvbmUuc2V0RGVmYXVsdChUaW1lWm9uZS5jcmVhdGVUaW1lWm9uZSgiRVNUIikpOworICAgICAgICAgICAgVGltZVpvbmUuc2V0RGVmYXVsdChUaW1lWm9uZS5nZXRUaW1lWm9uZSgiRVNUIikpOworICAgICAgICAgICAgQ2FsZW5kYXIgY2FsID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTsKKyAgICAgICAgICAgIGNhbC5jbGVhcigpOworICAgICAgICAgICAgY2FsLnNldCg5OCArIDE5MDAsIDAsIDEpOworICAgICAgICAgICAgY3VyRGF0ZSA9IGNhbC5nZXRUaW1lKCk7CisgICAgICAgICAgICBzaG9ydGRhdGUgPSBEYXRlRm9ybWF0LmdldERhdGVJbnN0YW5jZShEYXRlRm9ybWF0LlNIT1JUKTsKKyAgICAgICAgICAgIGZ1bGxkYXRlID0gRGF0ZUZvcm1hdC5nZXREYXRlVGltZUluc3RhbmNlKERhdGVGb3JtYXQuTE9ORywgRGF0ZUZvcm1hdC5MT05HKTsKKyAgICAgICAgICAgIHN0clNob3J0RGF0ZSA9ICJUaGUgY3VycmVudCBkYXRlIChzaG9ydCBmb3JtKSBpcyAiOworICAgICAgICAgICAgU3RyaW5nIHRlbXA7CisgICAgICAgICAgICB0ZW1wID0gc2hvcnRkYXRlLmZvcm1hdChjdXJEYXRlKTsKKyAgICAgICAgICAgIHN0clNob3J0RGF0ZSArPSB0ZW1wOworICAgICAgICAgICAgc3RyRnVsbERhdGUgPSAiVGhlIGN1cnJlbnQgZGF0ZSAobG9uZyBmb3JtKSBpcyAiOworICAgICAgICAgICAgU3RyaW5nIHRlbXAyID0gZnVsbGRhdGUuZm9ybWF0KGN1ckRhdGUpOworICAgICAgICAgICAgc3RyRnVsbERhdGUgKz0gdGVtcDI7CisgICAgCisgICAgICAgICAgICBsb2dsbihzdHJTaG9ydERhdGUpOworICAgICAgICAgICAgbG9nbG4oc3RyRnVsbERhdGUpOworICAgIAorICAgICAgICAgICAgLy8ge3NmYn0gV2hhdCB0byBkbyB3aXRoIHJlc291cmNlIGJ1bmRsZSBzdHVmZj8/Pz8/CisgICAgCisgICAgICAgICAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhlIHJlc291cmNlIGlzIHByZXNlbnQ7IGlmIG5vdCwgd2UgY2FuJ3QgdGVzdAorICAgICAgICAgICAgLy9SZXNvdXJjZUJ1bmRsZSBidW5kbGUgPSAvL1RoZSB2YXJpYWJsZSBpcyBuZXZlciB1c2VkCisgICAgICAgICAgICAvLyAgICBJQ1VMb2NhbGVEYXRhLmdldEJ1bmRsZSgiRGF0ZUZvcm1hdFpvbmVEYXRhIiwgY3VyTG9jYWxlKTsgCisgICAgCisgICAgICAgICAgICAvLyB7c2ZifSBBUEkgY2hhbmdlIHRvIFJlc291cmNlQnVuZGxlIC0tIGFkZCBnZXRMb2NhbGUoKQorICAgICAgICAgICAgLyppZiAoYnVuZGxlLmdldExvY2FsZSgpLmdldExhbmd1YWdlKCkuZXF1YWxzKCJkZSIpKSB7CisgICAgICAgICAgICAgICAgLy8gVVBEQVRFIFRISVMgQVMgWk9ORSBOQU1FIFJFU09VUkNFIEZPUiA8RVNUPiBpbiBkZV9ERSBpcyB1cGRhdGVkCisgICAgICAgICAgICAgICAgaWYgKCFzdHJGdWxsRGF0ZS5lbmRzV2l0aCgiR01ULTA1OjAwIikpCisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJGYWlsOiBXYW50IEdNVC0wNTowMCIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBsb2dsbigiKioqIFRFU1QgQ09VTEQgTk9UIEJFIENPTVBMRVRFRCBCRUNBVVNFIERhdGVGb3JtYXRab25lRGF0YSAqKioiKTsKKyAgICAgICAgICAgICAgICBsb2dsbigiKioqIEZPUiBMT0NBTEUgZGUgT1IgZGVfREUgSVMgTUlTU0lORyAqKioiKTsKKyAgICAgICAgICAgIH0qLworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgbG9nbG4oZS5nZXRNZXNzYWdlKCkpOworICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgTG9jYWxlLnNldERlZmF1bHQoc2F2ZUxvY2FsZSk7CisgICAgICAgICAgICBUaW1lWm9uZS5zZXREZWZhdWx0KHNhdmVab25lKTsKKyAgICAgICAgfQorICAgIAorICAgIH0KKyAgICAKKyAgICAvKgorICAgICAgRGF0ZUZvcm1hdC5lcXVhbHMgaXMgdG9vIG5hcnJvd2x5IGRlZmluZWQuICBBcyBhIHJlc3VsdCwgTWVzc2FnZUZvcm1hdAorICAgICAgZG9lcyBub3Qgd29yayBjb3JyZWN0bHkuICBEYXRlRm9ybWF0LmVxdWFscyBuZWVkcyB0byBiZSB3cml0dGVuIHNvCisgICAgICB0aGF0IHRoZSBDYWxlbmRhciBzdWItb2JqZWN0IGlzIG5vdCBjb21wYXJlZCB1c2luZyBDYWxlbmRhci5lcXVhbHMsCisgICAgICBidXQgcmF0aGVyIGNvbXBhcmVkIGZvciBlcXVpdmFsZW5jeS4gIFRoaXMgbWF5IG5lY2Vzc2l0YXRlIGFkZGluZyBhCisgICAgICAocGFja2FnZSBwcml2YXRlKSBtZXRob2QgdG8gQ2FsZW5kYXIgdG8gdGVzdCBmb3IgZXF1aXZhbGVuY3kuCisgICAgICAKKyAgICAgIEN1cnJlbnRseSB0aGlzIGJ1ZyBicmVha3MgTWVzc2FnZUZvcm1hdC50b1BhdHRlcm4KKyAgICAgICovCisgICAgLyoqCisgICAgICogQGJ1ZyA0MDcxNDQxCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQwNzE0NDEoKSB7CisgICAgICAgIERhdGVGb3JtYXQgZm10QSA9IERhdGVGb3JtYXQuZ2V0SW5zdGFuY2UoKTsKKyAgICAgICAgRGF0ZUZvcm1hdCBmbXRCID0gRGF0ZUZvcm1hdC5nZXRJbnN0YW5jZSgpOworICAgIAorICAgICAgICAvLyB7c2ZifSBJcyBpdCBPSyB0byBjYXN0IGF3YXkgY29uc3QgaGVyZT8KKyAgICAgICAgQ2FsZW5kYXIgY2FsQSA9IGZtdEEuZ2V0Q2FsZW5kYXIoKTsKKyAgICAgICAgQ2FsZW5kYXIgY2FsQiA9IGZtdEIuZ2V0Q2FsZW5kYXIoKTsKKyAgICAgICAgY2FsQS5jbGVhcigpOworICAgICAgICBjYWxBLnNldCgxOTAwLCAwICwwKTsKKyAgICAgICAgY2FsQi5jbGVhcigpOworICAgICAgICBjYWxCLnNldCgxOTAwLCAwLCAwKTsKKyAgICAgICAgaWYgKCFjYWxBLmVxdWFscyhjYWxCKSkKKyAgICAgICAgICAgIGVycmxuKCJGYWlsOiBDYW4ndCBjb21wbGV0ZSB0ZXN0OyBDYWxlbmRhciBpbnN0YW5jZXMgdW5lcXVhbCIpOworICAgICAgICBpZiAoIWZtdEEuZXF1YWxzKGZtdEIpKQorICAgICAgICAgICAgZXJybG4oIkZhaWw6IERhdGVGb3JtYXQgdW5lcXVhbCB3aGVuIENhbGVuZGFycyBlcXVhbCIpOworICAgICAgICBjYWxCLmNsZWFyKCk7CisgICAgICAgIGNhbEIuc2V0KDE5NjEsIENhbGVuZGFyLkRFQ0VNQkVSLCAyNSk7CisgICAgICAgIGlmIChjYWxBLmVxdWFscyhjYWxCKSkKKyAgICAgICAgICAgIGVycmxuKCJGYWlsOiBDYW4ndCBjb21wbGV0ZSB0ZXN0OyBDYWxlbmRhciBpbnN0YW5jZXMgZXF1YWwiKTsKKyAgICAgICAgaWYgKCFmbXRBLmVxdWFscyhmbXRCKSkKKyAgICAgICAgICAgIGVycmxuKCJGYWlsOiBEYXRlRm9ybWF0IHVuZXF1YWwgd2hlbiBDYWxlbmRhcnMgZXF1aXZhbGVudCIpOworICAgICAgICBsb2dsbigiRGF0ZUZvcm1hdC5lcXVhbHMgb2siKTsKKyAgICB9CisgICAgICAgIAorICAgIC8qIFRoZSBqYXZhLnRleHQuRGF0ZUZvcm1hdC5wYXJzZShTdHJpbmcpIG1ldGhvZCBleHBlY3RzIGZvciB0aGUKKyAgICAgIFVTIGxvY2FsZSBhIHN0cmluZyBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIG1tL2RkL3l5IGFuZCBwYXJzZXMgaXQKKyAgICAgIGNvcnJlY3RseS4KKyAgICAKKyAgICAgIFdoZW4gZ2l2ZW4gYSBzdHJpbmcgbW0vZGQveXl5eSBpdCBvbmx5IHBhcnNlcyB1cCB0byB0aGUgZmlyc3QKKyAgICAgIHR3byB5J3MsIHR5cGljYWxseSByZXN1bHRpbmcgaW4gYSBkYXRlIGluIHRoZSB5ZWFyIDE5MTkuCisgICAgICAKKyAgICAgIFBsZWFzZSBleHRlbmQgdGhlIHBhcnNpbmcgbWV0aG9kKHMpIHRvIGhhbmRsZSBzdHJpbmdzIHdpdGgKKyAgICAgIGZvdXItZGlnaXQgeWVhciB2YWx1ZXMgKHByb2JhYmx5IGFsc28gYXBwbGljYWJsZSB0byB2YXJpb3VzCisgICAgICBvdGhlciBsb2NhbGVzLiAgKi8KKyAgICAvKioKKyAgICAgKiBAYnVnIDQwNzMwMDMKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDA3MzAwMygpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIERhdGVGb3JtYXQgZm10ID0gRGF0ZUZvcm1hdC5nZXREYXRlSW5zdGFuY2UoRGF0ZUZvcm1hdC5TSE9SVCwgTG9jYWxlLlVTKTsKKyAgICAgICAgICAgIFN0cmluZyB0ZXN0c1tdID0geyIxMi8yNS82MSIsICIxMi8yNS8xOTYxIiwgIjQvMy8yMDEwIiwgIjQvMy8xMCJ9OworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpICs9IDIpIHsKKyAgICAgICAgICAgICAgICBEYXRlIGQgPSBmbXQucGFyc2UodGVzdHNbaV0pOworICAgICAgICAgICAgICAgIERhdGUgZGQgPSBmbXQucGFyc2UodGVzdHNbaSArIDFdKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgczsKKyAgICAgICAgICAgICAgICBzID0gZm10LmZvcm1hdChkKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgc3M7CisgICAgICAgICAgICAgICAgc3MgPSBmbXQuZm9ybWF0KGRkKTsKKyAgICAgICAgICAgICAgICBpZiAoZC5nZXRUaW1lKCkgIT0gZGQuZ2V0VGltZSgpKQorICAgICAgICAgICAgICAgICAgICBlcnJsbigiRmFpbDogIiArIGQgKyAiICE9ICIgKyBkZCk7CisgICAgICAgICAgICAgICAgaWYgKCFzLmVxdWFscyhzcykpCisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJGYWlsOiAiICsgcyArICIgIT0gIiArIHNzKTsKKyAgICAgICAgICAgICAgICBsb2dsbigiT2s6ICIgKyBzICsgIiAiICsgZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gY2F0Y2ggKFBhcnNlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJGYWlsOiAiICsgZSk7CisgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworICAgICAgICB9ICAgIAorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBAYnVnIDQwODkxMDYKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDA4OTEwNigpIHsKKyAgICAgICAgVGltZVpvbmUgZGVmID0gVGltZVpvbmUuZ2V0RGVmYXVsdCgpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgVGltZVpvbmUgeiA9IG5ldyBTaW1wbGVUaW1lWm9uZSgoaW50KSAoMS4yNSAqIDM2MDAwMDApLCAiRkFLRVpPTkUiKTsKKyAgICAgICAgICAgIFRpbWVab25lLnNldERlZmF1bHQoeik7CisgICAgICAgICAgICBTaW1wbGVEYXRlRm9ybWF0IGYgPSBuZXcgU2ltcGxlRGF0ZUZvcm1hdCgpOworICAgICAgICAgICAgaWYgKCFmLmdldFRpbWVab25lKCkuZXF1YWxzKHopKQorICAgICAgICAgICAgICAgIGVycmxuKCJGYWlsOiBTaW1wbGVUaW1lWm9uZSBzaG91bGQgdXNlIFRpbWVab25lLmdldERlZmF1bHQoKSIpOworICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgVGltZVpvbmUuc2V0RGVmYXVsdChkZWYpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEBidWcgNDEwMDMwMgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTAwMzAyKCkgeworICAgICAgICAKKyAgICAgICAgTG9jYWxlIGxvY2FsZXNbXSA9IHsKKyAgICAgICAgICAgIExvY2FsZS5DQU5BREEsIExvY2FsZS5DQU5BREFfRlJFTkNILCBMb2NhbGUuQ0hJTkEsIAorICAgICAgICAgICAgTG9jYWxlLkNISU5FU0UsIExvY2FsZS5FTkdMSVNILCBMb2NhbGUuRlJBTkNFLCBMb2NhbGUuRlJFTkNILCAKKyAgICAgICAgICAgIExvY2FsZS5HRVJNQU4sIExvY2FsZS5HRVJNQU5ZLCBMb2NhbGUuSVRBTElBTiwgTG9jYWxlLklUQUxZLCAKKyAgICAgICAgICAgIExvY2FsZS5KQVBBTiwgTG9jYWxlLkpBUEFORVNFLCBMb2NhbGUuS09SRUEsIExvY2FsZS5LT1JFQU4sIAorICAgICAgICAgICAgTG9jYWxlLlBSQywgTG9jYWxlLlNJTVBMSUZJRURfQ0hJTkVTRSwgTG9jYWxlLlRBSVdBTiwgCisgICAgICAgICAgICBMb2NhbGUuVFJBRElUSU9OQUxfQ0hJTkVTRSwgTG9jYWxlLlVLLCBMb2NhbGUuVVN9OyAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGJvb2xlYW4gcGFzcyA9IHRydWU7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDIxOyBpKyspIHsKKyAgICAgICAgICAgICAgICBGb3JtYXQgZm9ybWF0ID0gRGF0ZUZvcm1hdC5nZXREYXRlVGltZUluc3RhbmNlKERhdGVGb3JtYXQuRlVMTCwgRGF0ZUZvcm1hdC5GVUxMLCBsb2NhbGVzW2ldKTsgCisgICAgICAgICAgICAgICAgYnl0ZVtdIGJ5dGVzOworICAgICAgICAgICAgICAgIEJ5dGVBcnJheU91dHB1dFN0cmVhbSBiYW9zID0gbmV3IEJ5dGVBcnJheU91dHB1dFN0cmVhbSgpOworICAgICAgICAgICAgICAgIE9iamVjdE91dHB1dFN0cmVhbSBvb3MgPSBuZXcgT2JqZWN0T3V0cHV0U3RyZWFtKGJhb3MpOworICAgICAgICAgICAgICAgIG9vcy53cml0ZU9iamVjdChmb3JtYXQpOworICAgICAgICAgICAgICAgIG9vcy5mbHVzaCgpOworICAgICAgICAgICAgICAgIGJhb3MuY2xvc2UoKTsKKyAgICAgICAgICAgICAgICBieXRlcyA9IGJhb3MudG9CeXRlQXJyYXkoKTsKKyAgICAgICAgICAgICAgICBPYmplY3RJbnB1dFN0cmVhbSBvaXMgPSBuZXcgT2JqZWN0SW5wdXRTdHJlYW0obmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKGJ5dGVzKSk7CisgICAgICAgICAgICAgICAgT2JqZWN0IG8gPSBvaXMucmVhZE9iamVjdCgpOworICAgICAgICAgICAgICAgIGlmICghZm9ybWF0LmVxdWFscyhvKSkgeworICAgICAgICAgICAgICAgICAgICBwYXNzID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGxvZ2xuKCJEYXRlRm9ybWF0IGluc3RhbmNlIGZvciBsb2NhbGUgIiArIGxvY2FsZXNbaV0gKyAiIGlzIGluY29ycmVjdGx5IHNlcmlhbGl6ZWQvZGVzZXJpYWxpemVkLiIpOyAKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBsb2dsbigiRGF0ZUZvcm1hdCBpbnN0YW5jZSBmb3IgbG9jYWxlICIgKyBsb2NhbGVzW2ldICsgIiBpcyBPS0FZLiIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghcGFzcykKKyAgICAgICAgICAgICAgICBlcnJsbigiRmFpbDogRGF0ZUZvcm1hdCBzZXJpYWxpemF0aW9uL2VxdWFsaXR5IGJ1ZyIpOworICAgICAgICB9IGNhdGNoIChPcHRpb25hbERhdGFFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkZhaWw6ICIgKyBlKTsKKyAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkZhaWw6ICIgKyBlKTsKKyAgICAgICAgfSBjYXRjaCAoQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiRmFpbDogIiArIGUpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkZhaWw6ICIgKyBlKTsKKyAgICAgICAgfQorICAgIAorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBAYnVnIDQxMDE0ODMKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDEwMTQ4MygpIHsKKyAgICAgICAgU2ltcGxlRGF0ZUZvcm1hdCBzZGYgPSBuZXcgU2ltcGxlRGF0ZUZvcm1hdCgieiIsIExvY2FsZS5VUyk7CisgICAgICAgIEZpZWxkUG9zaXRpb24gZnAgPSBuZXcgRmllbGRQb3NpdGlvbihEYXRlRm9ybWF0LlRJTUVaT05FX0ZJRUxEKTsKKyAgICAgICAgRGF0ZSBkID0gbmV3IERhdGUoOTIzNDU2Nzg5MEwpOworICAgICAgICBTdHJpbmdCdWZmZXIgYnVmID0gbmV3IFN0cmluZ0J1ZmZlcigiIik7CisgICAgICAgIHNkZi5mb3JtYXQoZCwgYnVmLCBmcCk7CisgICAgICAgIGxvZ2xuKHNkZi5mb3JtYXQoZCwgYnVmLCBmcCkudG9TdHJpbmcoKSk7CisgICAgICAgIGxvZ2xuKCJiZWdpbkluZGV4ID0gIiArIGZwLmdldEJlZ2luSW5kZXgoKSk7CisgICAgICAgIGxvZ2xuKCJlbmRJbmRleCA9ICIgKyBmcC5nZXRFbmRJbmRleCgpKTsKKyAgICAgICAgaWYgKGZwLmdldEJlZ2luSW5kZXgoKSA9PSBmcC5nZXRFbmRJbmRleCgpKQorICAgICAgICAgICAgZXJybG4oIkZhaWw6IEVtcHR5IGZpZWxkIik7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEBidWcgNDEwMzM0MAorICAgICAqIEBidWcgNDEzODIwMworICAgICAqIFRoaXMgYnVnIHJlYWxseSBvbmx5IHdvcmtzIGluIExvY2FsZS5VUywgc2luY2UgdGhhdCdzIHdoYXQgdGhlIGxvY2FsZQorICAgICAqIHVzZWQgZm9yIERhdGUudG9TdHJpbmcoKSBpcy4gIEJ1ZyA0MTM4MjAzIHJlcG9ydHMgdGhhdCBpdCBmYWlscyBvbiBLb3JlYW4KKyAgICAgKiBOVDsgaXQgd291bGQgYWN0dWFsbHkgaGF2ZSBmYWlsZWQgb24gYW55IG5vbi1VUyBsb2NhbGUuICBOb3cgaXQgc2hvdWxkCisgICAgICogd29yayBvbiBhbGwgbG9jYWxlcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDEwMzM0MCgpIHsKKyAgICAKKyAgICAgICAgLy8gY2hvb3NlIGEgZGF0ZSB0aGF0IGlzIHRoZSBGSVJTVCBvZiBzb21lIG1vbnRoIAorICAgICAgICAvLyBhbmQgc29tZSBhcmJpdHJhcnkgdGltZQorICAgICAgICBDYWxlbmRhciBjYWwgPSBDYWxlbmRhci5nZXRJbnN0YW5jZSgpOworICAgICAgICBjYWwuY2xlYXIoKTsKKyAgICAgICAgY2FsLnNldCgxOTk3LCAzLCAxLCAxLCAxLCAxKTsKKyAgICAgICAgRGF0ZSBkID0gY2FsLmdldFRpbWUoKTsgCisgICAgICAgIFNpbXBsZURhdGVGb3JtYXQgZGYgPSBuZXcgU2ltcGxlRGF0ZUZvcm1hdCgiTU1NTSIsIExvY2FsZS5VUyk7CisgICAgICAgIFN0cmluZyBzID0gZC50b1N0cmluZygpOworICAgICAgICBTdHJpbmdCdWZmZXIgczIgPSBuZXcgU3RyaW5nQnVmZmVyKCIiKTsKKyAgICAgICAgRmllbGRQb3NpdGlvbiBwb3MgPSBuZXcgRmllbGRQb3NpdGlvbigwKTsKKyAgICAgICAgczIgPSBkZi5mb3JtYXQoZCwgczIsIHBvcyk7CisgICAgICAgIGxvZ2xuKCJEYXRlPSIgKyBzKTsgCisgICAgICAgIGxvZ2xuKCJERj0iICsgczIpOworICAgICAgICBTdHJpbmcgc3Vic3RyID0gczIuc3Vic3RyaW5nKDAsMik7CisgICAgICAgIGlmIChzLmluZGV4T2Yoc3Vic3RyKSA9PSAtMSkKKyAgICAgICAgICBlcnJsbigiTW9udGhzIHNob3VsZCBtYXRjaCIpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBAYnVnIDQxMDMzNDEKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDEwMzM0MSgpIHsKKyAgICAgICAgVGltZVpvbmUgc2F2ZVpvbmUgPSBUaW1lWm9uZS5nZXREZWZhdWx0KCk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAvLyB7c2ZifSBjaGFuZ2VkIGZyb20gYWRvcHREZWZhdWx0IHRvIHNldERlZmF1bHQKKyAgICAgICAgICAgIFRpbWVab25lLnNldERlZmF1bHQoVGltZVpvbmUuZ2V0VGltZVpvbmUoIkNTVCIpKTsKKyAgICAgICAgICAgIFNpbXBsZURhdGVGb3JtYXQgc2ltcGxlID0gbmV3IFNpbXBsZURhdGVGb3JtYXQoIk1NL2RkL3l5eXkgSEg6bW0iKTsKKyAgICAgICAgICAgIFRpbWVab25lIHRlbXAgPSBUaW1lWm9uZS5nZXREZWZhdWx0KCk7CisgICAgICAgICAgICBpZiAoIXNpbXBsZS5nZXRUaW1lWm9uZSgpLmVxdWFscyh0ZW1wKSkKKyAgICAgICAgICAgICAgICBlcnJsbigiRmFpbDogU2ltcGxlRGF0ZUZvcm1hdCBub3QgdXNpbmcgZGVmYXVsdCB6b25lIik7CisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICBUaW1lWm9uZS5zZXREZWZhdWx0KHNhdmVab25lKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBAYnVnIDQxMDQxMzYKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDEwNDEzNigpIHsKKyAgICAgICAgU2ltcGxlRGF0ZUZvcm1hdCBzZGYgPSBuZXcgU2ltcGxlRGF0ZUZvcm1hdCgpOworICAgICAgICBTdHJpbmcgcGF0dGVybiA9ICIndGltZScgaGg6bW0iOworICAgICAgICBzZGYuYXBwbHlQYXR0ZXJuKHBhdHRlcm4pOworICAgICAgICBsb2dsbigicGF0dGVybjogXCIiICsgcGF0dGVybiArICJcIiIpOworICAgICAgICBTdHJpbmcgc3RyaW5nc1tdID0geyJ0aW1lIDEwOjMwIiwgInRpbWUgMTA6eCIsICJ0aW1lIDEweCJ9OworICAgICAgICBQYXJzZVBvc2l0aW9uIHBwb3NbXSA9IHtuZXcgUGFyc2VQb3NpdGlvbigxMCksIG5ldyBQYXJzZVBvc2l0aW9uKDApLCBuZXcgUGFyc2VQb3NpdGlvbigwKX07CisgICAgICAgIENhbGVuZGFyIGNhbCA9IENhbGVuZGFyLmdldEluc3RhbmNlKCk7CisgICAgICAgIGNhbC5jbGVhcigpOworICAgICAgICBjYWwuc2V0KDE5NzAsIENhbGVuZGFyLkpBTlVBUlksIDEsIDEwLCAzMCk7CisgICAgICAgIERhdGUgZGF0ZXNbXSA9IHtjYWwuZ2V0VGltZSgpLCBuZXcgRGF0ZSgtMSksIG5ldyBEYXRlKC0xKX07CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgaSsrKSB7CisgICAgICAgICAgICBTdHJpbmcgdGV4dCA9IHN0cmluZ3NbaV07CisgICAgICAgICAgICBQYXJzZVBvc2l0aW9uIGZpbmlzaCA9IHBwb3NbaV07CisgICAgICAgICAgICBEYXRlIGV4cCA9IGRhdGVzW2ldOworICAgICAgICAgICAgUGFyc2VQb3NpdGlvbiBwb3MgPSBuZXcgUGFyc2VQb3NpdGlvbigwKTsKKyAgICAgICAgICAgIERhdGUgZCA9IHNkZi5wYXJzZSh0ZXh0LCBwb3MpOworICAgICAgICAgICAgbG9nbG4oIiB0ZXh0OiBcIiIgKyB0ZXh0ICsgIlwiIik7CisgICAgICAgICAgICBsb2dsbigiIGluZGV4OiAlZCIgKyBwb3MuZ2V0SW5kZXgoKSk7CisgICAgICAgICAgICBsb2dsbigiIHJlc3VsdDogIiArIGQpOworICAgICAgICAgICAgaWYgKHBvcy5nZXRJbmRleCgpICE9IGZpbmlzaC5nZXRJbmRleCgpKQorICAgICAgICAgICAgICAgIGVycmxuKCJGYWlsOiBFeHBlY3RlZCBwb3MgIiArIGZpbmlzaC5nZXRJbmRleCgpKTsKKyAgICAgICAgICAgIGlmICghKChkID09IG51bGwgJiYgZXhwLmVxdWFscyhuZXcgRGF0ZSgtMSkpKSB8fCAoZC5lcXVhbHMoZXhwKSkpKQorICAgICAgICAgICAgICAgIGVycmxuKCAiRmFpbDogRXhwZWN0ZWQgcmVzdWx0ICIgKyBleHApOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEBidWcgNDEwNDUyMgorICAgICAqIENBTk5PVCBSRVBST0RVQ0UKKyAgICAgKiBBY2NvcmRpbmcgdG8gdGhlIGJ1ZyByZXBvcnQsIHRoaXMgdGVzdCBzaG91bGQgdGhyb3cgYQorICAgICAqIFN0cmluZ0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gZHVyaW5nIHRoZSBzZWNvbmQgcGFyc2UuICBIb3dldmVyLAorICAgICAqIHRoaXMgaXMgbm90IHNlZW4uCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQxMDQ1MjIoKSB7CisgICAgICAgIFNpbXBsZURhdGVGb3JtYXQgc2RmID0gbmV3IFNpbXBsZURhdGVGb3JtYXQoKTsKKyAgICAgICAgU3RyaW5nIHBhdHRlcm4gPSAiJ3RpbWUnIGhoOm1tIjsKKyAgICAgICAgc2RmLmFwcGx5UGF0dGVybihwYXR0ZXJuKTsKKyAgICAgICAgbG9nbG4oInBhdHRlcm46IFwiIiArIHBhdHRlcm4gKyAiXCIiKTsKKyAgICAgICAgLy8gd29ya3MgY29ycmVjdGx5CisgICAgICAgIFBhcnNlUG9zaXRpb24gcHAgPSBuZXcgUGFyc2VQb3NpdGlvbigwKTsKKyAgICAgICAgU3RyaW5nIHRleHQgPSAidGltZSAiOworICAgICAgICBEYXRlIGR0ID0gc2RmLnBhcnNlKHRleHQsIHBwKTsKKyAgICAgICAgbG9nbG4oIiB0ZXh0OiBcIiIgKyB0ZXh0ICsgIlwiIiArICIgZGF0ZTogIiArIGR0KTsKKyAgICAgICAgLy8gd29ya3Mgd3JvbmcKKyAgICAgICAgcHAuc2V0SW5kZXgoMCk7CisgICAgICAgIHRleHQgPSAidGltZSI7CisgICAgICAgIGR0ID0gc2RmLnBhcnNlKHRleHQsIHBwKTsKKyAgICAgICAgbG9nbG4oIiB0ZXh0OiBcIiIgKyB0ZXh0ICsgIlwiIiArICIgZGF0ZTogIiArIGR0KTsgICAgCisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEBidWcgNDEwNjgwNworICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTA2ODA3KCkgeworICAgICAgICBEYXRlIGR0OworICAgICAgICBEYXRlRm9ybWF0IGRmID0gRGF0ZUZvcm1hdC5nZXREYXRlVGltZUluc3RhbmNlKCk7CisgICAgCisgICAgICAgIFNpbXBsZURhdGVGb3JtYXQgc2Rmc1tdID0geworICAgICAgICAgICAgICAgIG5ldyBTaW1wbGVEYXRlRm9ybWF0KCJ5eXl5TU1kZEhIbW1zcyIpLCAKKyAgICAgICAgICAgICAgICBuZXcgU2ltcGxlRGF0ZUZvcm1hdCgieXl5eU1NZGRISG1tc3MnWiciKSwgCisgICAgICAgICAgICAgICAgbmV3IFNpbXBsZURhdGVGb3JtYXQoInl5eXlNTWRkSEhtbXNzJyciKSwgCisgICAgICAgICAgICAgICAgbmV3IFNpbXBsZURhdGVGb3JtYXQoInl5eXlNTWRkSEhtbXNzJ2EnJ2EnIiksIAorICAgICAgICAgICAgICAgIG5ldyBTaW1wbGVEYXRlRm9ybWF0KCJ5eXl5TU1kZEhIbW1zcyAlIil9OyAKKyAgICAgICAgU3RyaW5nIHN0cmluZ3NbXSA9IHsKKyAgICAgICAgICAgICAgICAiMTk5ODAyMTExNDAwMDAiLCAKKyAgICAgICAgICAgICAgICAiMTk5ODAyMTExNDAwMDAiLCAKKyAgICAgICAgICAgICAgICAiMTk5ODAyMTExNDAwMDAiLCAKKyAgICAgICAgICAgICAgICAiMTk5ODAyMTExNDAwMDBhIiwgCisgICAgICAgICAgICAgICAgIjE5OTgwMjExMTQwMDAwICJ9OyAKKyAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIgZ2MgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoKTsKKyAgICAgICAgVGltZVpvbmUgdGltZVpvbmUgPSBUaW1lWm9uZS5nZXREZWZhdWx0KCk7CisgICAgICAgIFRpbWVab25lIGdtdCA9IChUaW1lWm9uZSkgdGltZVpvbmUuY2xvbmUoKTsKKyAgICAgICAgZ210LnNldFJhd09mZnNldCgwKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBpKyspIHsKKyAgICAgICAgICAgIFNpbXBsZURhdGVGb3JtYXQgZm9ybWF0ID0gc2Rmc1tpXTsKKyAgICAgICAgICAgIFN0cmluZyBkYXRlU3RyaW5nID0gc3RyaW5nc1tpXTsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgZm9ybWF0LnNldFRpbWVab25lKGdtdCk7CisgICAgICAgICAgICAgICAgZHQgPSBmb3JtYXQucGFyc2UoZGF0ZVN0cmluZyk7CisgICAgICAgICAgICAgICAgLy8ge3NmYn0gc29tZSBvZiB0aGVzZSBwYXJzZXMgd2lsbCBmYWlsIHB1cnBvc2VseQorICAgIAorICAgICAgICAgICAgICAgIFN0cmluZ0J1ZmZlciBmbXRkID0gbmV3IFN0cmluZ0J1ZmZlcigiIik7CisgICAgICAgICAgICAgICAgRmllbGRQb3NpdGlvbiBwb3MgPSBuZXcgRmllbGRQb3NpdGlvbigwKTsKKyAgICAgICAgICAgICAgICBmbXRkID0gZGYuZm9ybWF0KGR0LCBmbXRkLCBwb3MpOworICAgICAgICAgICAgICAgIGxvZ2xuKGZtdGQudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgLy9sb2dsbihkZi5mb3JtYXQoZHQpKTsgCisgICAgICAgICAgICAgICAgZ2Muc2V0VGltZShkdCk7CisgICAgICAgICAgICAgICAgbG9nbG4oIiIgKyBnYy5nZXQoQ2FsZW5kYXIuWk9ORV9PRkZTRVQpKTsKKyAgICAgICAgICAgICAgICBTdHJpbmdCdWZmZXIgcyA9IG5ldyBTdHJpbmdCdWZmZXIoIiIpOworICAgICAgICAgICAgICAgIHMgPSBmb3JtYXQuZm9ybWF0KGR0LCBzLCBwb3MpOworICAgICAgICAgICAgICAgIGxvZ2xuKHMudG9TdHJpbmcoKSk7CisgICAgICAgICAgICB9IGNhdGNoIChQYXJzZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgbG9nbG4oIk5vIHdheSBKb3NlIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoKKyAgICAgIFN5bm9wc2lzOiBDaGluZXNlIHRpbWUgem9uZSBDVFQgaXMgbm90IHJlY29nb25pemVkIGNvcnJlY3RseS4KKyAgICAgIERlc2NyaXB0aW9uOiBQbGF0Zm9ybSBDaGluZXNlIFdpbmRvd3MgOTUgLSAqKiBUaW1lIHpvbmUgc2V0IHRvIENTVCAqKiAKKyAgICAgICovCisgICAgLyoqCisgICAgICogQGJ1ZyA0MTA4NDA3CisgICAgICovCisgICAgCisgICAgLy8ge3NmYn0gd2hhdCB0byBkbyB3aXRoIHRoaXMgb25lID8/IAorICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTA4NDA3KCkgeworICAgICAgICAvKgorICAgICAgICBsb25nIGwgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsgCisgICAgICAgIGxvZ2xuKCJ1c2VyLnRpbWV6b25lID0gIiArIFN5c3RlbS5nZXRQcm9wZXJ0eSgidXNlci50aW1lem9uZSIsICI/IikpOworICAgICAgICBsb2dsbigiVGltZSBab25lIDoiICsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRlRm9ybWF0LmdldERhdGVJbnN0YW5jZSgpLmdldFRpbWVab25lKCkuZ2V0SUQoKSk7IAorICAgICAgICBsb2dsbigiRGVmYXVsdCBmb3JtYXQgOiIgKyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGVGb3JtYXQuZ2V0RGF0ZUluc3RhbmNlKCkuZm9ybWF0KG5ldyBEYXRlKGwpKSk7IAorICAgICAgICBsb2dsbigiRnVsbCBmb3JtYXQgOiIgKyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGVGb3JtYXQuZ2V0RGF0ZUluc3RhbmNlKERhdGVGb3JtYXQuRlVMTCkuZm9ybWF0KG5ldyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGUobCkpKTsgCisgICAgICAgIGxvZ2xuKCIqKiogU2V0IGhvc3QgVFogdG8gQ1NUICoqKiIpOworICAgICAgICBsb2dsbigiKioqIFRIRSBSRVNVTFRTIE9GIFRISVMgVEVTVCBNVVNUIEJFIFZFUklGSUVEIE1BTlVBTExZICoqKiIpOworICAgICAgICAqLworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBAYnVnIDQxMzQyMDMKKyAgICAgKiBTaW1wbGVEYXRlRm9ybWF0IHdvbid0IHBhcnNlICJHTVQiCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQxMzQyMDMoKSB7CisgICAgICAgIFN0cmluZyBkYXRlRm9ybWF0ID0gIk1NL2RkL3l5IEhIOm1tOnNzIHp6eiI7CisgICAgICAgIFNpbXBsZURhdGVGb3JtYXQgZm10ID0gbmV3IFNpbXBsZURhdGVGb3JtYXQoZGF0ZUZvcm1hdCk7CisgICAgCisgICAgICAgIFBhcnNlUG9zaXRpb24gcDAgPSBuZXcgUGFyc2VQb3NpdGlvbigwKTsKKyAgICAgICAgRGF0ZSBkID0gZm10LnBhcnNlKCIwMS8yMi85MiAwNDo1MjowMCBHTVQiLCBwMCk7CisgICAgICAgIGxvZ2xuKGQudG9TdHJpbmcoKSk7CisgICAgICAgIGlmKHAwLmVxdWFscyhuZXcgUGFyc2VQb3NpdGlvbigwKSkpCisgICAgICAgICAgICBlcnJsbigiRmFpbDogZmFpbGVkIHRvIHBhcnNlICdHTVQnIik7CisgICAgICAgIC8vIEluIHRoZSBmYWlsdXJlIGNhc2UgYW4gZXhjZXB0aW9uIGlzIHRocm93biBieSBwYXJzZSgpOworICAgICAgICAvLyBpZiBubyBleGNlcHRpb24gaXMgdGhyb3duLCB0aGUgdGVzdCBwYXNzZXMuCisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEBidWcgNDE1MTYzMQorICAgICAqIFNpbXBsZURhdGVGb3JtYXQgaW5jb3JyZWN0IGhhbmRsaW5nIG9mIDIgc2luZ2xlIHF1b3RlcyBpbiBmb3JtYXQoKQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTUxNjMxKCkgeworICAgICAgICBTdHJpbmcgcGF0dGVybiA9IAorICAgICAgICAgICAgIidUT19EQVRFKCcnJ2RkJy0nTU0nLSd5eXl5IEhIOm1tOnNzJycnICwgJydERC1NTS1ZWVlZIEhIOk1JOlNTJycpJyI7IAorICAgICAgICBsb2dsbigicGF0dGVybj0iICsgcGF0dGVybik7CisgICAgICAgIFNpbXBsZURhdGVGb3JtYXQgZm9ybWF0ID0gbmV3IFNpbXBsZURhdGVGb3JtYXQocGF0dGVybiwgTG9jYWxlLlVTKTsKKyAgICAgICAgU3RyaW5nQnVmZmVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWZmZXIoIiIpOworICAgICAgICBGaWVsZFBvc2l0aW9uIHBvcyA9IG5ldyBGaWVsZFBvc2l0aW9uKDApOworICAgICAgICBDYWxlbmRhciBjYWwgPSBDYWxlbmRhci5nZXRJbnN0YW5jZSgpOworICAgICAgICBjYWwuY2xlYXIoKTsKKyAgICAgICAgY2FsLnNldCgxOTk4LCBDYWxlbmRhci5KVU5FLCAzMCwgMTMsIDMwLCAwKTsKKyAgICAgICAgRGF0ZSBkID0gY2FsLmdldFRpbWUoKTsKKyAgICAgICAgcmVzdWx0ID0gZm9ybWF0LmZvcm1hdChkLCByZXN1bHQsIHBvcyk7IAorICAgICAgICBpZiAoIXJlc3VsdC50b1N0cmluZygpLmVxdWFscygiVE9fREFURSgnMzAtMDYtMTk5OCAxMzozMDowMCcgLCAnREQtTU0tWVlZWSBISDpNSTpTUycpIikpIHsKKyAgICAgICAgICAgIGVycmxuKCJGYWlsOiByZXN1bHQ9IiArIHJlc3VsdCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2dsbigiUGFzczogcmVzdWx0PSIgKyByZXN1bHQpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEBidWcgNDE1MTcwNgorICAgICAqICd6JyBhdCBlbmQgb2YgZGF0ZSBmb3JtYXQgdGhyb3dzIGluZGV4IGV4Y2VwdGlvbiBpbiBTaW1wbGVEYXRlRm9ybWF0CisgICAgICogQ0FOTk9UIFJFUFJPRFVDRSBUSElTIEJVRyBPTiAxLjJGQ1MKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDE1MTcwNigpIHsKKyAgICAgICAgU3RyaW5nIGRhdGVTdHJpbmcgPSAiVGh1cnNkYXksIDMxLURlYy05OCAyMzowMDowMCBHTVQiOworICAgICAgICBTaW1wbGVEYXRlRm9ybWF0IGZtdCA9IG5ldyBTaW1wbGVEYXRlRm9ybWF0KCJFRUVFLCBkZC1NTU0teXkgSEg6bW06c3MgeiIsIExvY2FsZS5VUyk7CisgICAgICAgIENhbGVuZGFyIGNhbCA9IENhbGVuZGFyLmdldEluc3RhbmNlKFRpbWVab25lLmdldFRpbWVab25lKCJVVEMiKSwgTG9jYWxlLlVTKTsKKyAgICAgICAgY2FsLmNsZWFyKCk7CisgICAgICAgIGNhbC5zZXQoMTk5OCwgQ2FsZW5kYXIuREVDRU1CRVIsIDMxLCAyMywgMCwgMCk7CisgICAgICAgIERhdGUgZCA9IG5ldyBEYXRlKCk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBkID0gZm10LnBhcnNlKGRhdGVTdHJpbmcpOworICAgICAgICAgICAgLy8ge3NmYn0gd2hhdCBhYm91dCBuZXh0IHR3byBsaW5lcz8KKyAgICAgICAgICAgIGlmIChkLmdldFRpbWUoKSAhPSBjYWwuZ2V0VGltZSgpLmdldFRpbWUoKSkKKyAgICAgICAgICAgICAgICBlcnJsbigiSW5jb3JyZWN0IHZhbHVlOiAiICsgZCk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiRmFpbDogIiArIGUpOworICAgICAgICB9CisgICAgICAgIFN0cmluZ0J1ZmZlciB0ZW1wID0gbmV3IFN0cmluZ0J1ZmZlcigiIik7CisgICAgICAgIEZpZWxkUG9zaXRpb24gcG9zID0gbmV3IEZpZWxkUG9zaXRpb24oMCk7CisgICAgICAgIGxvZ2xuKGRhdGVTdHJpbmcgKyAiIC4gIiArIGZtdC5mb3JtYXQoZCwgdGVtcCwgcG9zKSk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEBidWcgNDE2MjA3MQorICAgICAqIENhbm5vdCByZXByb2R1Y2UgdGhpcyBidWcgdW5kZXIgMS4yIEZDUyAtLSBpdCBtYXkgYmUgYSBjb252b2x1dGVkIGR1cGxpY2F0ZQorICAgICAqIG9mIHNvbWUgb3RoZXIgYnVnIHRoYXQgaGFzIGJlZW4gZml4ZWQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQxNjIwNzEoKSB7CisgICAgICAgIFN0cmluZyBkYXRlU3RyaW5nID0gIlRodSwgMzAtSnVsLTE5OTkgMTE6NTE6MTQgR01UIjsKKyAgICAgICAgU3RyaW5nIGZvcm1hdCA9ICJFRUUnLCAnZGQtTU1NLXl5eXkgSEg6bW06c3MgeiI7IC8vIFJGQyA4MjIvMTEyMworICAgICAgICBTaW1wbGVEYXRlRm9ybWF0IGRmID0gbmV3IFNpbXBsZURhdGVGb3JtYXQoZm9ybWF0LCBMb2NhbGUuVVMpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgRGF0ZSB4ID0gZGYucGFyc2UoZGF0ZVN0cmluZyk7CisgICAgICAgICAgICBTdHJpbmdCdWZmZXIgdGVtcCA9IG5ldyBTdHJpbmdCdWZmZXIoIiIpOworICAgICAgICAgICAgRmllbGRQb3NpdGlvbiBwb3MgPSBuZXcgRmllbGRQb3NpdGlvbigwKTsKKyAgICAgICAgICAgIGxvZ2xuKGRhdGVTdHJpbmcgKyAiIC0+ICIgKyBkZi5mb3JtYXQoeCwgdGVtcCwgcG9zKSk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiUGFyc2UgZm9ybWF0IFwiIiArIGZvcm1hdCArICJcIiBmYWlsZWQuIik7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogRGF0ZUZvcm1hdCBzaG91bGRuJ3QgcGFyc2UgeWVhciAiLTEiIGFzIGEgdHdvLWRpZ2l0IHllYXIgKGUuZy4sICItMSIgLiAxOTk5KS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDE4MjA2NigpIHsKKyAgICAgICAgU2ltcGxlRGF0ZUZvcm1hdCBmbXQgPSBuZXcgU2ltcGxlRGF0ZUZvcm1hdCgiTU0vZGQveXkiLCBMb2NhbGUuVVMpOworICAgICAgICBTaW1wbGVEYXRlRm9ybWF0IGRpc3BGbXQgPSBuZXcgU2ltcGxlRGF0ZUZvcm1hdCgiTU1NIGRkIHl5eXkgSEg6bW06c3MgR0ciLCBMb2NhbGUuVVMpOworICAgICAgICAvKiBXZSBleHBlY3QgMi1kaWdpdCB5ZWFyIGZvcm1hdHMgdG8gcHV0IDItZGlnaXQgeWVhcnMgaW4gdGhlIHJpZ2h0CisgICAgICAgICAqIHdpbmRvdy4gIE91dCBvZiByYW5nZSB5ZWFycywgdGhhdCBpcywgYW55dGhpbmcgbGVzcyB0aGFuICIwMCIgb3IKKyAgICAgICAgICogZ3JlYXRlciB0aGFuICI5OSIsIGFyZSB0cmVhdGVkIGFzIGxpdGVyYWwgeWVhcnMuICBTbyAiMS8yLzM0NTYiCisgICAgICAgICAqIGJlY29tZXMgMzQ1NiBBRC4gIExpa2V3aXNlLCAiMS8yLy0zIiBiZWNvbWVzIC0zIEFEID09IDIgQkMuCisgICAgICAgICAqLworICAgICAgICBmaW5hbCBTdHJpbmcgU1RSSU5HU1tdID0gCisgICAgICAgICAgICB7IjAyLzI5LzAwIiwgIjAxLzIzLzAxIiwgIjA0LzA1Ly0xIiwgIjAxLzIzLy05IiwgIjExLzEyLzEzMTQiLCAiMTAvMzEvMSIsICIwOS8xMi8rMSIsICIwOS8xMi8wMDEiLH07IAorICAgICAgICBpbnQgU1RSSU5HU19DT1VOVCA9IFNUUklOR1MubGVuZ3RoOworICAgICAgICAgICAgICAgIAorICAgICAgICBDYWxlbmRhciBjYWwgPSBDYWxlbmRhci5nZXRJbnN0YW5jZSgpOworICAgICAgICBEYXRlIEZBSUxfREFURSA9IGNhbC5nZXRUaW1lKCk7CisgICAgICAgIGNhbC5jbGVhcigpOworICAgICAgICBjYWwuc2V0KDIwMDAsIENhbGVuZGFyLkZFQlJVQVJZLCAyOSk7CisgICAgICAgIERhdGUgZDAgPSBjYWwuZ2V0VGltZSgpOworICAgICAgICBjYWwuY2xlYXIoKTsKKyAgICAgICAgY2FsLnNldCgyMDAxLCBDYWxlbmRhci5KQU5VQVJZLCAyMyk7CisgICAgICAgIERhdGUgZDEgPSBjYWwuZ2V0VGltZSgpOworICAgICAgICBjYWwuY2xlYXIoKTsKKyAgICAgICAgY2FsLnNldCgtMSwgQ2FsZW5kYXIuQVBSSUwsIDUpOworICAgICAgICBEYXRlIGQyID0gY2FsLmdldFRpbWUoKTsKKyAgICAgICAgY2FsLmNsZWFyKCk7CisgICAgICAgIGNhbC5zZXQoLTksIENhbGVuZGFyLkpBTlVBUlksIDIzKTsKKyAgICAgICAgRGF0ZSBkMyA9IGNhbC5nZXRUaW1lKCk7CisgICAgICAgIGNhbC5jbGVhcigpOworICAgICAgICBjYWwuc2V0KDEzMTQsIENhbGVuZGFyLk5PVkVNQkVSLCAxMik7CisgICAgICAgIERhdGUgZDQgPSBjYWwuZ2V0VGltZSgpOworICAgICAgICBjYWwuY2xlYXIoKTsKKyAgICAgICAgY2FsLnNldCgxLCBDYWxlbmRhci5PQ1RPQkVSLCAzMSk7CisgICAgICAgIERhdGUgZDUgPSBjYWwuZ2V0VGltZSgpOworICAgICAgICBjYWwuY2xlYXIoKTsgICAgICAgIAorICAgICAgICBjYWwuc2V0KDEsIENhbGVuZGFyLlNFUFRFTUJFUiwgMTIpOworICAgICAgICBEYXRlIGQ3ID0gY2FsLmdldFRpbWUoKTsKKyAgICAgICAgRGF0ZSBEQVRFU1tdID0ge2QwLCBkMSwgZDIsIGQzLCBkNCwgZDUsIEZBSUxfREFURSwgZDd9OworICAgIAorICAgICAgICBTdHJpbmcgb3V0ID0gIiI7CisgICAgICAgIGJvb2xlYW4gcGFzcyA9IHRydWU7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgU1RSSU5HU19DT1VOVDsgKytpKSB7CisgICAgICAgICAgICBTdHJpbmcgc3RyID0gU1RSSU5HU1tpXTsKKyAgICAgICAgICAgIERhdGUgZXhwZWN0ZWQgPSBEQVRFU1tpXTsgICAgICAgICAgICAKKyAgICAgICAgICAgIERhdGUgYWN0dWFsID0gbnVsbDsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgYWN0dWFsID0gZm10LnBhcnNlKHN0cik7CisgICAgICAgICAgICB9IGNhdGNoIChQYXJzZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsID0gRkFJTF9EQVRFOworICAgICAgICAgICAgfQorICAgICAgICAgICAgU3RyaW5nIGFjdFN0ciA9ICIiOworICAgICAgICAgICAgaWYgKChhY3R1YWwuZ2V0VGltZSgpKSA9PSBGQUlMX0RBVEUuZ2V0VGltZSgpKSB7CisgICAgICAgICAgICAgICAgYWN0U3RyICs9ICJudWxsIjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gWXVjazogU2VlIGoyNQorICAgICAgICAgICAgICAgIGFjdFN0ciA9ICgoRGF0ZUZvcm1hdCkgZGlzcEZtdCkuZm9ybWF0KGFjdHVhbCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoZXhwZWN0ZWQuZ2V0VGltZSgpID09IChhY3R1YWwuZ2V0VGltZSgpKSkgeworICAgICAgICAgICAgICAgIG91dCArPSBzdHIgKyAiID0+ICIgKyBhY3RTdHIgKyAiXG4iOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgZXhwU3RyID0gIiI7CisgICAgICAgICAgICAgICAgaWYgKGV4cGVjdGVkLmdldFRpbWUoKSA9PSBGQUlMX0RBVEUuZ2V0VGltZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGV4cFN0ciArPSAibnVsbCI7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gWXVjazogU2VlIGoyNQorICAgICAgICAgICAgICAgICAgICBleHBTdHIgPSAoKERhdGVGb3JtYXQpIGRpc3BGbXQpLmZvcm1hdChleHBlY3RlZCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG91dCArPSAiRkFJTDogIiArIHN0ciArICIgPT4gIiArIGFjdFN0ciArICIsIGV4cGVjdGVkICIgKyBleHBTdHIgKyAiXG4iOworICAgICAgICAgICAgICAgIHBhc3MgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAocGFzcykgeworICAgICAgICAgICAgbG9nKG91dCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlcnIob3V0KTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBqMzIge0pESyBCdWcgNDIxMDIwOSA0MjA5MjcyfQorICAgICAqIERhdGVGb3JtYXQgY2Fubm90IHBhcnNlIEZlYiAyOSAyMDAwIHdoZW4gc2V0TGVuaWVudChmYWxzZSkKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDIxMDIwOSgpIHsKKyAgICAKKyAgICAgICAgU3RyaW5nIHBhdHRlcm4gPSAiTU1NIGQsIHl5eXkiOworICAgICAgICBTaW1wbGVEYXRlRm9ybWF0IHNmbXQgPSBuZXcgU2ltcGxlRGF0ZUZvcm1hdChwYXR0ZXJuLCBMb2NhbGUuVVMpOworICAgICAgICBTaW1wbGVEYXRlRm9ybWF0IHNkaXNwID0gbmV3IFNpbXBsZURhdGVGb3JtYXQoIk1NTSBkZCB5eXl5IEdHIiwgTG9jYWxlLlVTKTsKKyAgICAgICAgRGF0ZUZvcm1hdCBmbXQgPSAoRGF0ZUZvcm1hdCkgc2ZtdDsgLy8gWXVjazogU2VlIGoyNQorICAgICAgICBEYXRlRm9ybWF0IGRpc3AgPSAoRGF0ZUZvcm1hdCkgc2Rpc3A7IC8vIFl1Y2s6IFNlZSBqMjUKKyAgICAKKyAgICAgICAgQ2FsZW5kYXIgY2FseCA9IChDYWxlbmRhcikgZm10LmdldENhbGVuZGFyKCk7IC8vIGNhc3QgYXdheSBjb25zdCEKKyAgICAgICAgY2FseC5zZXRMZW5pZW50KGZhbHNlKTsKKyAgICAgICAgQ2FsZW5kYXIgY2FsZW5kYXIgPSBDYWxlbmRhci5nZXRJbnN0YW5jZSgpOworICAgICAgICBjYWxlbmRhci5jbGVhcigpOworICAgICAgICBjYWxlbmRhci5zZXQoMjAwMCwgQ2FsZW5kYXIuRkVCUlVBUlksIDI5KTsKKyAgICAgICAgRGF0ZSBkID0gY2FsZW5kYXIuZ2V0VGltZSgpOworICAgICAgICBTdHJpbmcgcyA9IGZtdC5mb3JtYXQoZCk7CisgICAgICAgIGxvZ2xuKGRpc3AuZm9ybWF0KGQpICsgIiBmPiAiICsgcGF0dGVybiArICIgPT4gXCIiICsgcyArICJcIiIpOworICAgICAgICBQYXJzZVBvc2l0aW9uIHBvcyA9IG5ldyBQYXJzZVBvc2l0aW9uKDApOworICAgICAgICBkID0gZm10LnBhcnNlKHMsIHBvcyk7CisgICAgICAgIGxvZ2xuKCJcIiIgKyBzICsgIlwiIHA+ICIgKyBwYXR0ZXJuICsgIiA9PiAiICsgZGlzcC5mb3JtYXQoZCkpOworICAgICAgICBsb2dsbigiUGFyc2UgcG9zID0gIiArIHBvcy5nZXRJbmRleCgpICsgIiwgZXJyb3IgcG9zID0gIiArIHBvcy5nZXRFcnJvckluZGV4KCkpOworICAgICAgICBpZiAocG9zLmdldEVycm9ySW5kZXgoKSAhPSAtMSkgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IEVycm9yIGluZGV4IHNob3VsZCBiZSAtMSIpOworICAgICAgICB9CisgICAgCisgICAgICAgIC8vIFRoZSB1bmRlcmx5aW5nIGJ1ZyBpcyBpbiBHcmVnb3JpYW5DYWxlbmRhci4gIElmIHRoZSBmb2xsb3dpbmcgbGluZXMKKyAgICAgICAgLy8gc3VjY2VlZCwgdGhlIGJ1ZyBpcyBmaXhlZC4gIElmIHRoZSBidWcgaXNuJ3QgZml4ZWQsIHRoZXkgd2lsbCB0aHJvdworICAgICAgICAvLyBhbiBleGNlcHRpb24uCisgICAgICAgIEdyZWdvcmlhbkNhbGVuZGFyIGNhbCA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcigpOworICAgICAgICBjYWwuY2xlYXIoKTsKKyAgICAgICAgY2FsLnNldExlbmllbnQoZmFsc2UpOworICAgICAgICBjYWwuc2V0KDIwMDAsIENhbGVuZGFyLkZFQlJVQVJZLCAyOSk7IC8vIFRoaXMgc2hvdWxkIHdvcmshCisgICAgICAgIGxvZ2xuKCJBdHRlbXB0IHRvIHNldCBDYWxlbmRhciB0byBGZWIgMjkgMjAwMDogIiArIGRpc3AuZm9ybWF0KGNhbC5nZXRUaW1lKCkpKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdDcxNCgpIHsKKyAgICAgICAgLy9UaW1lWm9uZSBPZmZzZXQKKyAgICAgICAgVGltZVpvbmUgZGVmYXVsdFRaID0gVGltZVpvbmUuZ2V0RGVmYXVsdCgpOworICAgICAgICBUaW1lWm9uZSBQU1QgPSBUaW1lWm9uZS5nZXRUaW1lWm9uZSgiUFNUIik7CisgICAgICAgIGludCBkZWZhdWx0T2Zmc2V0ID0gZGVmYXVsdFRaLmdldFJhd09mZnNldCgpOworICAgICAgICBpbnQgUFNUT2Zmc2V0ID0gUFNULmdldFJhd09mZnNldCgpOworICAgICAgICBEYXRlIGQgPSBuZXcgRGF0ZSg5NzgxMDM1NDMwMDBsIC0gKGRlZmF1bHRPZmZzZXQgLSBQU1RPZmZzZXQpKTsKKyAgICAgICAgZCA9IG5ldyBEYXRlKGQuZ2V0VGltZSgpIC0gKGRlZmF1bHRUWi5pbkRheWxpZ2h0VGltZShkKSA/IDM2MDAwMDAgOiAwKSk7CisgICAgICAgIERhdGVGb3JtYXQgZm10ID0gRGF0ZUZvcm1hdC5nZXREYXRlVGltZUluc3RhbmNlKC0xLCBEYXRlRm9ybWF0Lk1FRElVTSwgTG9jYWxlLlVTKTsKKyAgICAgICAgU3RyaW5nIHRlc3RzID0gIjc6MjU6NDMgQU0iOworICAgICAgICBTdHJpbmcgcyA9IGZtdC5mb3JtYXQoZCk7CisgICAgICAgIGlmICghcy5lcXVhbHModGVzdHMpKSB7CisgICAgICAgICAgICBlcnJsbigiRmFpbDogIiArIHMgKyAiICE9ICIgKyB0ZXN0cyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2dsbigiT0s6ICIgKyBzICsgIiA9PSAiICsgdGVzdHMpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2Zvcm1hdC9EYXRlRm9ybWF0UmVncmVzc2lvblRlc3RKLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvZm9ybWF0L0RhdGVGb3JtYXRSZWdyZXNzaW9uVGVzdEouamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xZTY1YmYyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2Zvcm1hdC9EYXRlRm9ybWF0UmVncmVzc2lvblRlc3RKLmphdmEKQEAgLTAsMCArMSwyODYgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAgICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2Zvcm1hdC9EYXRlRm9ybWF0UmVncmVzc2lvblRlc3RKLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDIvMTYgMDM6MDU6MDggJCAKKyAqICRSZXZpc2lvbjogMS40ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCisvKgorICogTmV3IGFkZGVkLCAyMDAxLTEwLTE3IFtKaW5nL0dDTF0KKyAqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0LmZvcm1hdDsKKworaW1wb3J0IGNvbS5pYm0uaWN1LmxhbmcuKjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0Lio7CitpbXBvcnQgY29tLmlibS5pY3UudXRpbC4qOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudGV4dC5QYXJzZUV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnRleHQuUGFyc2VQb3NpdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworaW1wb3J0IGphdmEudGV4dC5GaWVsZFBvc2l0aW9uOworCitwdWJsaWMgY2xhc3MgRGF0ZUZvcm1hdFJlZ3Jlc3Npb25UZXN0SiBleHRlbmRzIGNvbS5pYm0uaWN1LmRldi50ZXN0LlRlc3RGbXdrIHsKKyAgICAKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIFRJTUVfU1RSSU5HID0gIjIwMDAvMTEvMTcgMDg6MDE6MDAiOworICAgIHN0YXRpYyBmaW5hbCBsb25nIFVUQ19MT05HID0gOTc0NDc2ODYwMDAwTDsKKyAgICBzdGF0aWMgU2ltcGxlRGF0ZUZvcm1hdCBzZGZfID0gbmV3IFNpbXBsZURhdGVGb3JtYXQoInl5eXkvTU0vZGQgSEg6bW06c3MiKTsKKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgbmV3IERhdGVGb3JtYXRSZWdyZXNzaW9uVGVzdEooKS5ydW4oYXJncyk7CisgICAgfQorICAgIAorICAgIC8vUmV0dXJuIHZhbHVlIG9mIGdldEFtUG1TdHJpbmdzCisgICAgcHVibGljIHZvaWQgVGVzdDQxMDM5MjYoKSB7CisgICAgICAgIFN0cmluZyBhY3RfQW1wbXNbXTsKKyAgICAgICAgU3RyaW5nIGV4cF9BbXBtc1tdPXsiQU0iLCJQTSJ9OworICAgICAgICBMb2NhbGUuc2V0RGVmYXVsdChMb2NhbGUuVVMpOworICAgICAgICAKKyAgICAgICAgRGF0ZUZvcm1hdFN5bWJvbHMgZGZzID0gbmV3IERhdGVGb3JtYXRTeW1ib2xzKCk7CisgICAgICAgIGFjdF9BbXBtcyA9IGRmcy5nZXRBbVBtU3RyaW5ncygpOworICAgICAgICBpZihhY3RfQW1wbXMubGVuZ3RoICE9IGV4cF9BbXBtcy5sZW5ndGgpIHsKKyAgICAgICAgICAgIGVycmxuKCJUaGUgcmVzdWx0IGlzIG5vdCBleHBlY3RlZCEiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZvcihpbnQgaSA9MDsgaTxhY3RfQW1wbXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZighYWN0X0FtcG1zW2ldLmVxdWFscyhleHBfQW1wbXNbaV0pKQorICAgICAgICAgICAgICAgICAgICBlcnJsbigiVGhlIHJlc3VsdCBpcyBub3QgZXhwZWN0ZWQhIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLy9NaXNzaW5nIGRpZ2l0IGluIG1pbGxpc2Vjb25lIGZvcm1hdCBpbiBTaW1wbGVEYXRlRm9ybWF0IAorICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTQ4MTY4KCkgeworICAgICAgICAgICAgRGF0ZSBkID0gbmV3IERhdGUoMTAwMjcwNTIxMjkwNmwpOyAKKyAgICAgICAgICAgIFN0cmluZ1tdIElTT1BhdHRlcm4gPSB7CisgICAgICAgICAgICAgICAgIicneXl5eS1NTS1kZC1oaC5tbS5zcy5TJyciLCAiJyd5eXl5LU1NLWRkLWhoLm1tLnNzLlNTJyciLCAKKyAgICAgICAgICAgICAgICAiJyd5eXl5LU1NLWRkLWhoLm1tLnNzLlNTUycnIiwgIicneXl5eS1NTS1kZC1oaC5tbS5zcy5TU1NTJyciLCAKKyAgICAgICAgICAgICAgICAiJyd5eXl5LU1NLWRkLWhoLm1tLnNzLlNTU1NTJyciLCAiJyd5eXl5LU1NLWRkLWhoLm1tLnNzLlNTU1NTUycnIiwgCisgICAgICAgICAgICAgICAgIicneXl5eS1NTS1kZC1oaC5tbS5zcy5TU1NTU1NTJyciLCAiJyd5eXl5LU1NLWRkLWhoLm1tLnNzLlNTUzAwMCcnIn07CisgICAgICAgICAgICBTaW1wbGVEYXRlRm9ybWF0IGFTaW1wbGVERiA9IChTaW1wbGVEYXRlRm9ybWF0KURhdGVGb3JtYXQuZ2V0RGF0ZVRpbWVJbnN0YW5jZSgpOworICAgIAorICAgICAgICAgICAgZm9yKGludCBpID0gMDsgaTxJU09QYXR0ZXJuLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgYVNpbXBsZURGLmFwcGx5UGF0dGVybiggSVNPUGF0dGVybltpXSApOworICAgICAgICAgICAgICAgIGxvZ2xuKCAiUGF0dGVybiA9ICIgKyBhU2ltcGxlREYudG9QYXR0ZXJuKCkpOworICAgICAgICAgICAgICAgIGxvZ2xuKCAiRm9ybWF0ID0gIiArIGFTaW1wbGVERi5mb3JtYXQoZCkpOworICAgICAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvL0RhdGVGb3JtYXQgZ2V0RGF0ZVRpbWVJbnN0YW5jZShpbnQsIGludCksIGludmFsaWQgc3R5bGVzIG5vIGV4Y2VwdGlvbgorICAgIHB1YmxpYyB2b2lkIFRlc3Q0MjEzMDg2KCkgeworICAgICAgICBEYXRlIHNvbWVEYXRlID0gbmV3IERhdGUoKTsKKyAgICAgICAgU3RyaW5nIGQ7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBEYXRlRm9ybWF0IGRmMiA9IERhdGVGb3JtYXQuZ2V0RGF0ZVRpbWVJbnN0YW5jZSgyLCAtMik7CisgICAgICAgICAgICBkID0gZGYyLmZvcm1hdChzb21lRGF0ZSk7CisgICAgICAgICAgICBlcnJsbigid2Ugc2hvdWxkIGNhdGNoIGFuIGV4Y2VwdGlvbiBoZXJlIik7CisgICAgICAgIH0gY2F0Y2goRXhjZXB0aW9uIGUpeworICAgICAgICAgICAgbG9nbG4oImRhdGVTdHlsZSA9IDIiICsgIlx0IHRpbWVTdHlsZSA9IC0yIik7CisgICAgICAgICAgICBsb2dsbigiRXhjZXB0aW9uIGNhdWdodCEiKTsKKyAgICAgICAgfSAgICAgICAgICAgIAorICAgICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIERhdGVGb3JtYXQgZGYzID0gRGF0ZUZvcm1hdC5nZXREYXRlVGltZUluc3RhbmNlKDQsIDIpOworICAgICAgICAgICAgZCA9IGRmMy5mb3JtYXQoc29tZURhdGUpOworICAgICAgICAgICAgZXJybG4oIndlIHNob3VsZCBjYXRjaCBhbiBleGNlcHRpb24gaGVyZSIpOworICAgICAgICB9IGNhdGNoKEV4Y2VwdGlvbiBlKXsKKyAgICAgICAgICAgIGxvZ2xuKCJkYXRlU3R5bGUgPSA0IiArICJcdCB0aW1lU3R5bGUgPSAyIik7CisgICAgICAgICAgICBsb2dsbigiRXhjZXB0aW9uIGNhdWdodCEiKTsKKyAgICAgICAgICAgIGxvZ2xuKCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiIpOworICAgICAgICB9CisgICAgCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBEYXRlRm9ybWF0IGRmNCA9IERhdGVGb3JtYXQuZ2V0RGF0ZVRpbWVJbnN0YW5jZSgtMTIsIC0xMik7CisgICAgICAgICAgICBkID0gZGY0LmZvcm1hdChzb21lRGF0ZSk7CisgICAgICAgICAgICBlcnJsbigid2Ugc2hvdWxkIGNhdGNoIGFuIGV4Y2VwdGlvbiBoZXJlIik7CisgICAgICAgIH0gY2F0Y2goRXhjZXB0aW9uIGUpeworICAgICAgICAgICAgbG9nbG4oImRhdGVTdHlsZSA9IC0xMiIgKyAiXHQgdGltZVN0eWxlID0gLTEyIik7CisgICAgICAgICAgICBsb2dsbigiRXhjZXB0aW9uIGNhdWdodCEiKTsKKyAgICAgICAgICAgIGxvZ2xuKCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiIpOworICAgICAgICB9CisgICAgCisgICAgICAgIHRyeXsKKyAgICAgICAgICAgIERhdGVGb3JtYXQgZGY1ID0gRGF0ZUZvcm1hdC5nZXREYXRlVGltZUluc3RhbmNlKDIsIDEyMyk7CisgICAgICAgICAgICBkID0gZGY1LmZvcm1hdChzb21lRGF0ZSk7ICAgIAorICAgICAgICAgICAgZXJybG4oIndlIHNob3VsZCBjYXRjaCBhbiBleGNlcHRpb24gaGVyZSIpOworICAgICAgICB9IGNhdGNoKEV4Y2VwdGlvbiBlKXsKKyAgICAgICAgICAgIGxvZ2xuKCJkYXRlU3R5bGUgPSAyIiArICJcdCB0aW1lU3R5bGUgPSAxMjMiKTsKKyAgICAgICAgICAgIGxvZ2xuKCJFeGNlcHRpb24gY2F1Z2h0ISIpOworICAgICAgICAgICAgbG9nbG4oIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIik7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLy9EYXRlRm9ybWF0LmZvcm1hdCB3b3JrcyB3cm9uZ2x5PworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MjUwMzU5KCkgeworICAgICAgICBMb2NhbGUuc2V0RGVmYXVsdChMb2NhbGUuVVMpOworICAgICAgICBDYWxlbmRhciBjYWwgPSBDYWxlbmRhci5nZXRJbnN0YW5jZSgpOworICAgICAgICBjYWwuY2xlYXIoKTsKKyAgICAgICAgY2FsLnNldCgxMDEgKyAxOTAwLCA5LCA5LCAxNywgNTMpOworICAgICAgICBEYXRlIGQgPSBjYWwuZ2V0VGltZSgpOworICAgICAgICBEYXRlRm9ybWF0IHRmID0gRGF0ZUZvcm1hdC5nZXRUaW1lSW5zdGFuY2UoRGF0ZUZvcm1hdC5TSE9SVCk7CisgICAgICAgIFN0cmluZyBhY3RfcmVzdWx0ID0gdGYuZm9ybWF0KGQpOworICAgICAgICBTdHJpbmcgZXhwX3Jlc3VsdCA9ICI1OjUzIFBNIjsKKyAgICAgICAgCisgICAgICAgIGlmKCFhY3RfcmVzdWx0LmVxdWFscyhleHBfcmVzdWx0KSl7CisgICAgICAgICAgICBlcnJsbigiVGhlIHJlc3VsdCBpcyBub3QgZXhwZWN0ZWQiKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvL3BhdHRlcm4gInMuUywgcGFyc2UgJzFtcyciCisgICAgcHVibGljIHZvaWQgVGVzdDQyNTM0OTAoKSB7CisgICAgICAgIERhdGUgZCA9IG5ldyBEYXRlKDEwMDI3MDUyMTIyMzFsKTsKKyAgICAKKyAgICAgICAgU3RyaW5nW10gSVNPUGF0dGVybiA9IHsKKyAgICAgICAgICAgICAgICAiJyd5eXl5LU1NLWRkLWhoLm1tLnNzLlMnJyIsIAorICAgICAgICAgICAgICAgICInJ3l5eXktTU0tZGQtaGgubW0uc3MuU1MnJyIsIAorICAgICAgICAgICAgICAgICInJ3l5eXktTU0tZGQtaGgubW0uc3MuU1NTJyciLCAKKyAgICAgICAgICAgICAgICAiJyd5eXl5LU1NLWRkLWhoLm1tLnNzLlNTU1MnJyIsIAorICAgICAgICAgICAgICAgICInJ3l5eXktTU0tZGQtaGgubW0uc3MuU1NTU1MnJyIsIAorICAgICAgICAgICAgICAgICInJ3l5eXktTU0tZGQtaGgubW0uc3MuU1NTU1NTJyciLCAKKyAgICAgICAgICAgICAgICAiJyd5eXl5LU1NLWRkLWhoLm1tLnNzLlNTU1NTU1MnJyJ9OyAKKyAgICAKKyAgICAgICAgU2ltcGxlRGF0ZUZvcm1hdCBhU2ltcGxlREYgPSAoU2ltcGxlRGF0ZUZvcm1hdCkgRGF0ZUZvcm1hdC5nZXREYXRlVGltZUluc3RhbmNlKCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgSVNPUGF0dGVybi5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgYVNpbXBsZURGLmFwcGx5UGF0dGVybihJU09QYXR0ZXJuW2ldKTsKKyAgICAgICAgICAgIGxvZ2xuKCJQYXR0ZXJuID0gIiArIGFTaW1wbGVERi50b1BhdHRlcm4oKSk7CisgICAgICAgICAgICBsb2dsbigiRm9ybWF0ID0gIiArIGFTaW1wbGVERi5mb3JtYXQoZCkpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8vYWJvdXQgcmVncmVzc2lvbiB0ZXN0CisgICAgcHVibGljIHZvaWQgVGVzdDQyNjY0MzIoKSB7CisgICAgICAgIExvY2FsZS5zZXREZWZhdWx0KExvY2FsZS5KQVBBTik7CisgICAgICAgIExvY2FsZSBsb2MgPSBMb2NhbGUuZ2V0RGVmYXVsdCgpOworICAgICAgICBTdHJpbmcgZGF0ZUZvcm1hdCA9ICJNTS9kZC95eSBISDptbTpzcyB6enoiOworICAgICAgICBTaW1wbGVEYXRlRm9ybWF0IGZtdCA9IG5ldyBTaW1wbGVEYXRlRm9ybWF0KGRhdGVGb3JtYXQpOworICAgIAorICAgICAgICBQYXJzZVBvc2l0aW9uIHAwID0gbmV3IFBhcnNlUG9zaXRpb24oMCk7CisgICAgICAgIGxvZ2xuKCJVbmRlciAgIiArIGxvYyArIiAgbG9jYWxlIik7CisgICAgICAgIERhdGUgZCA9IGZtdC5wYXJzZSgiMDEvMjIvOTIgMDQ6NTI6MDAgR01UIiwgcDApOworICAgICAgICBsb2dsbihkLnRvU3RyaW5nKCkpOworICAgIH0KKyAgICAKKyAgICAvL1NpbXBsZURhdGVGb3JtYXQgaW5jb25zaXN0ZW50IGZvciBudW1iZXIgb2YgZGlnaXRzIGZvciB5ZWFycworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MzU4NzMwKCkgeworICAgICAgICBTaW1wbGVEYXRlRm9ybWF0IHNkZiA9IG5ldyBTaW1wbGVEYXRlRm9ybWF0KCk7CisgICAgICAgIENhbGVuZGFyIGNhbCA9IENhbGVuZGFyLmdldEluc3RhbmNlKCk7CisgICAgICAgIGNhbC5jbGVhcigpOworICAgICAgICBjYWwuc2V0KDIwMDEsMTEsMTApOworICAgICAgICBEYXRlIHRvZGF5ID0gY2FsLmdldFRpbWUoKTsKKyAgICAKKyAgICAgICAgc2RmLmFwcGx5UGF0dGVybigiTU0gZCB5Iik7CisgICAgICAgIGxvZ2xuKHNkZi5mb3JtYXQodG9kYXkpKTsKKyAgICAgICAgc2RmLmFwcGx5UGF0dGVybigiTU0gZCB5eSIpOworICAgICAgICBsb2dsbihzZGYuZm9ybWF0KHRvZGF5KSk7CisgICAgCisgICAgICAgIHNkZi5hcHBseVBhdHRlcm4oIk1NIGQgeXl5Iik7CisgICAgICAgIGxvZ2xuKHNkZi5mb3JtYXQodG9kYXkpKTsKKyAgICAKKyAgICAgICAgc2RmLmFwcGx5UGF0dGVybigiTU0gZCB5eXl5Iik7CisgICAgICAgIGxvZ2xuKHNkZi5mb3JtYXQodG9kYXkpKTsKKyAgICAKKyAgICAgICAgc2RmLmFwcGx5UGF0dGVybigiTU0gZCB5eXl5eSIpOworICAgICAgICBsb2dsbihzZGYuZm9ybWF0KHRvZGF5KSk7CisgICAgfQorICAgIAorICAgIC8vUGFyc2UgaW52YWxpZCBzdHJpbmcKKyAgICBwdWJsaWMgdm9pZCBUZXN0NDM3NTM5OSgpIHsKKyAgICAgICAgZmluYWwgU3RyaW5nIHBhdHRlcm4gPSBuZXcgU3RyaW5nKCJ5eXl5Lk1NLmRkIEcgJ2F0JyBoaDptbTpzcyB6Iik7CisgICAgICAgIFNpbXBsZURhdGVGb3JtYXQgc2RmID0gbmV3IFNpbXBsZURhdGVGb3JtYXQocGF0dGVybiwgTG9jYWxlLkpBUEFOKTsKKyAgICAgICAgdHJ5eworICAgICAgICAgICAgRGF0ZSBjdXJyZW50VGltZSA9IHNkZi5wYXJzZSgidmdnZiAyMCAgMDEuMCA5LjI5IGFwLiBKLi1DLiBhdCAwNToyNjozMyBHTVQrMDg6MDAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgUGFyc2VQb3NpdGlvbigwKSk7CisgICAgICAgICAgICBpZihjdXJyZW50VGltZSA9PW51bGwpCisgICAgICAgICAgICAgICAgbG9nbG4oInBhcnNlIHJpZ2h0Iik7CisgICAgICAgIH0gY2F0Y2goRXhjZXB0aW9uIGUpeworICAgICAgICAgICAgZXJybG4oIkVycm9yIik7CisgICAgICAgIH0KKyAgICB9CisgICAgLyoKKyAgICBwdWJsaWMgdm9pZCBUZXN0NDQwNzA0MigpIHsKKyAgICAgICAgRGF0ZVBhcnNlVGhyZWFkIGQxID0gbmV3IERhdGVQYXJzZVRocmVhZCgpOworICAgICAgICBEYXRlRm9ybWF0VGhyZWFkIGQyID0gbmV3IERhdGVGb3JtYXRUaHJlYWQoKTsKKyAgICAgICAgZDEuc3RhcnQoKTsKKyAgICAgICAgZDIuc3RhcnQoKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGxvZ2xuKCJ0ZXN0Iik7CisgICAgICAgICAgICBUaHJlYWQuc2xlZXAoMTAwMCk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7fQorICAgIH0qLworICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3Q0NDY4NjYzKCkgeworICAgICAgICBEYXRlIGQgPW5ldyBEYXRlKC05MzcxNjY3MTExNTc2N2wpOworICAgICAgICBTdHJpbmcgb3JpZ2luX2QgPSBkLnRvU3RyaW5nKCk7CisgICAgICAgIFN0cmluZyBzdHI7CisgICAgICAgIGZpbmFsIFN0cmluZyBwYXR0ZXJuID0gbmV3IFN0cmluZygiRUVFRSwgTU1NTSBkLCB5eXl5Iik7CisgICAgICAgIFNpbXBsZURhdGVGb3JtYXQgc2RmID0gbmV3IFNpbXBsZURhdGVGb3JtYXQocGF0dGVybik7CisKKyAgICAgICAgaWYgKHNkZi5nZXRUaW1lWm9uZSgpLnVzZURheWxpZ2h0VGltZSgpKSB7CisgICAgICAgICAgICBsb2dsbigib3JpZ2luYWwgZGF0ZTogIiArIG9yaWdpbl9kLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgc3RyID0gc2RmLmZvcm1hdChkKTsKKyAgICAgICAgICAgIGxvZ2xuKCIgYWZ0ZXIgZm9ybWF0LS0tLS0+IiArIHN0cik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGQgPSBzZGYucGFyc2Uoc3RyLCBuZXcgUGFyc2VQb3NpdGlvbigwKSk7CisgICAgICAgICAgICBsb2dsbigiIGFmdGVyIHBhcnNlLS0tLS0+IiArIGQudG9TdHJpbmcoKSk7CisgICAgCisgICAgICAgICAgICBzdHIgPSBzZGYuZm9ybWF0KGQpOworICAgICAgICAgICAgbG9nbG4oIiBhZnRlciBmb3JtYXQtLS0tLT4iICsgc3RyKTsKKyAgICAKKyAgICAgICAgICAgIGQgPSBzZGYucGFyc2Uoc3RyLCBuZXcgUGFyc2VQb3NpdGlvbigwKSk7CisgICAgICAgICAgICBsb2dsbigiIGFmdGVyIHBhcnNlLS0tLS0+IiArIGQudG9TdHJpbmcoKSk7CisgICAgCisgICAgICAgICAgICBzdHIgPSBzZGYuZm9ybWF0KGQpOworICAgICAgICAgICAgbG9nbG4oIiBhZnRlciBmb3JtYXQtLS0tLT4iICsgc3RyKTsgICAgICAgIAorICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8vQ2xhc3MgdXNlZCBieSBUZXN0NDQwNzA0MgorICAgIGNsYXNzIERhdGVQYXJzZVRocmVhZCBleHRlbmRzIFRocmVhZCB7CisgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgIFNpbXBsZURhdGVGb3JtYXQgc2RmID0gKFNpbXBsZURhdGVGb3JtYXQpIHNkZl8uY2xvbmUoKTsKKyAgICAgICAgICAgIFRpbWVab25lIGRlZmF1bHRUWiA9IFRpbWVab25lLmdldERlZmF1bHQoKTsKKyAgICAgICAgICAgIFRpbWVab25lIFBTVCA9IFRpbWVab25lLmdldFRpbWVab25lKCJQU1QiKTsKKyAgICAgICAgICAgIGludCBkZWZhdWx0T2Zmc2V0ID0gZGVmYXVsdFRaLmdldFJhd09mZnNldCgpOworICAgICAgICAgICAgaW50IFBTVE9mZnNldCA9IFBTVC5nZXRSYXdPZmZzZXQoKTsKKyAgICAgICAgICAgIGludCBvZmZzZXQgPSBkZWZhdWx0T2Zmc2V0IC0gUFNUT2Zmc2V0OworICAgICAgICAgICAgbG9uZyBtcyA9IFVUQ19MT05HIC0gb2Zmc2V0OworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBpbnQgaSA9IDA7CisgICAgICAgICAgICAgICAgd2hpbGUgKGkgPCAxMDAwMCkgeworICAgICAgICAgICAgICAgICAgICBEYXRlIGRhdGUgPSBzZGYucGFyc2UoVElNRV9TVFJJTkcpOworICAgICAgICAgICAgICAgICAgICBsb25nIHQgPSBkYXRlLmdldFRpbWUoKTsKKyAgICAgICAgICAgICAgICAgICAgaSsrOworICAgICAgICAgICAgICAgICAgICBpZiAodCAhPSBtcykgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnNlRXhjZXB0aW9uKCJQYXJzZSBFcnJvcjogIiArIGkgKyAiICgiICsgc2RmLmZvcm1hdChkYXRlKSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIpICIgKyB0ICsgIiAhPSAiICsgbXMsIDApOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigicGFyc2UgZXJyb3I6ICIgKyBlLmdldE1lc3NhZ2UoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLy9DbGFzcyB1c2VkIGJ5IFRlc3Q0NDA3MDQyCisgICAgY2xhc3MgRGF0ZUZvcm1hdFRocmVhZCBleHRlbmRzIFRocmVhZCB7CisgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsgICAgICAgICAgICAKKyAgICAgICAgICAgIFNpbXBsZURhdGVGb3JtYXQgc2RmID0gKFNpbXBsZURhdGVGb3JtYXQpIHNkZl8uY2xvbmUoKTsKKyAgICAgICAgICAgIFRpbWVab25lIHR6ID0gVGltZVpvbmUuZ2V0VGltZVpvbmUoIlBTVCIpOworICAgICAgICAgICAgc2RmLnNldFRpbWVab25lKHR6KTsKKyAgICAgICAgICAgIGludCBpID0gMDsKKyAgICAgICAgICAgIHdoaWxlIChpIDwgMTAwMDApIHsKKyAgICAgICAgICAgICAgICBpKys7CisgICAgICAgICAgICAgICAgU3RyaW5nIHMgPSBzZGYuZm9ybWF0KG5ldyBEYXRlKFVUQ19MT05HKSk7CisgICAgICAgICAgICAgICAgaWYgKCFzLmVxdWFscyhUSU1FX1NUUklORykpIHsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIkZvcm1hdCBFcnJvcjogIiArIGkgKyAiICIgKyBzICsgIiAhPSAiIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBUSU1FX1NUUklORyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9mb3JtYXQvRGF0ZUZvcm1hdFJvdW5kVHJpcFRlc3QuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9mb3JtYXQvRGF0ZUZvcm1hdFJvdW5kVHJpcFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5iZmRlNDI5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2Zvcm1hdC9EYXRlRm9ybWF0Um91bmRUcmlwVGVzdC5qYXZhCkBAIC0wLDAgKzEsMjczIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgICAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9mb3JtYXQvRGF0ZUZvcm1hdFJvdW5kVHJpcFRlc3QuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNTowOCAkIAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKKy8qKiAKKyAqIFBvcnQgRnJvbTogICBJQ1U0QyB2MS44LjEgOiBmb3JtYXQgOiBEYXRlRm9ybWF0Um91bmRUcmlwVGVzdAorICogU291cmNlIEZpbGU6ICRJQ1U0Q1Jvb3Qvc291cmNlL3Rlc3QvaW50bHRlc3QvZHRmbXRydHRzLmNwcAorICoqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0LmZvcm1hdDsKKworaW1wb3J0IGNvbS5pYm0uaWN1LmxhbmcuKjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0Lio7CitpbXBvcnQgY29tLmlibS5pY3UudXRpbC4qOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgamF2YS51dGlsLlJhbmRvbTsKK2ltcG9ydCBqYXZhLnRleHQuRmllbGRQb3NpdGlvbjsKK2ltcG9ydCBqYXZhLnRleHQuUGFyc2VFeGNlcHRpb247CisKKy8qKiAKKyAqIFBlcmZvcm1zIHJvdW5kLXRyaXAgdGVzdHMgZm9yIERhdGVGb3JtYXQKKyAqKi8KK3B1YmxpYyBjbGFzcyBEYXRlRm9ybWF0Um91bmRUcmlwVGVzdCBleHRlbmRzIGNvbS5pYm0uaWN1LmRldi50ZXN0LlRlc3RGbXdrIHsKKyAgICBwdWJsaWMgYm9vbGVhbiBJTkZJTklURSA9IGZhbHNlOworICAgIHB1YmxpYyBib29sZWFuIHF1aWNrID0gdHJ1ZTsKKyAgICBwcml2YXRlIFNpbXBsZURhdGVGb3JtYXQgZGF0ZUZvcm1hdDsKKyAgICBwcml2YXRlIENhbGVuZGFyIGdldEZpZWxkQ2FsOworICAgIHByaXZhdGUgaW50IFNQQVJTRU5FU1MgPSAxODsKKyAgICBwcml2YXRlIGludCBUUklBTFMgPSA0OworICAgIHByaXZhdGUgaW50IERFUFRIID0gNTsKKyAgICBwcml2YXRlIFJhbmRvbSByYW4gPSBuZXcgUmFuZG9tKCk7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgbmV3IERhdGVGb3JtYXRSb3VuZFRyaXBUZXN0KCkucnVuKGFyZ3MpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0RGF0ZUZvcm1hdFJvdW5kVHJpcCgpIHsKKyAgICAgICAgZGF0ZUZvcm1hdCA9IG5ldyBTaW1wbGVEYXRlRm9ybWF0KCJFRUUgTU1NIGRkIEhIOm1tOnNzLlNTUyB6enogeXl5eSBHIik7CisgICAgICAgIGdldEZpZWxkQ2FsID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTsKKyAgICAKKyAgICAgICAgZmluYWwgTG9jYWxlW10gYXZhaWwgPSBEYXRlRm9ybWF0LmdldEF2YWlsYWJsZUxvY2FsZXMoKTsKKyAgICAgICAgaW50IGxvY0NvdW50ID0gYXZhaWwubGVuZ3RoOworICAgICAgICBsb2dsbigiRGF0ZUZvcm1hdCBhdmFpbGFibGUgbG9jYWxlczogIiArIGxvY0NvdW50KTsKKyAgICAgICAgaWYgKHF1aWNrKSB7CisgICAgICAgICAgICBpZiAobG9jQ291bnQgPiA1KQorICAgICAgICAgICAgICAgIGxvY0NvdW50ID0gNTsKKyAgICAgICAgICAgIGxvZ2xuKCJRdWljayBtb2RlOiBvbmx5IHRlc3RpbmcgZmlyc3QgNSBMb2NhbGVzIik7CisgICAgICAgIH0KKyAgICAgICAgVGltZVpvbmUgdHogPSBUaW1lWm9uZS5nZXREZWZhdWx0KCk7CisgICAgICAgIGxvZ2xuKCJEZWZhdWx0IFRpbWVab25lOiAgICAgICAgICAgICAiICsgdHouZ2V0SUQoKSk7CisgICAgCisgICAgICAgIGlmIChJTkZJTklURSkgeworICAgICAgICAgICAgLy8gU3BlY2lhbCBpbmZpbml0ZSBsb29wIHRlc3QgbW9kZSBmb3IgZmluZGluZyBoYXJkIHRvIHJlcHJvZHVjZSBlcnJvcnMKKyAgICAgICAgICAgIExvY2FsZSBsb2MgPSBMb2NhbGUuZ2V0RGVmYXVsdCgpOworICAgICAgICAgICAgbG9nbG4oIkVOVEVSSU5HIElORklOSVRFIFRFU1QgTE9PUCBGT1IgTG9jYWxlOiAiICsgbG9jLmdldERpc3BsYXlOYW1lKCkpOworICAgICAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgICAgIF90ZXN0KGxvYyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7ICAgICAgICAKKyAgICAgICAgICAgIF90ZXN0KExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsb2NDb3VudDsgKytpKSB7CisgICAgICAgICAgICAgICAgX3Rlc3QoYXZhaWxbaV0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIHB1YmxpYyBTdHJpbmcgc3R5bGVOYW1lKGludCBzKSB7CisgICAgICAgIHN3aXRjaCAocykgeworICAgICAgICAgICAgY2FzZSBEYXRlRm9ybWF0LlNIT1JUIDoKKyAgICAgICAgICAgICAgICByZXR1cm4gIlNIT1JUIjsKKyAgICAgICAgICAgIGNhc2UgRGF0ZUZvcm1hdC5NRURJVU0gOgorICAgICAgICAgICAgICAgIHJldHVybiAiTUVESVVNIjsKKyAgICAgICAgICAgIGNhc2UgRGF0ZUZvcm1hdC5MT05HIDoKKyAgICAgICAgICAgICAgICByZXR1cm4gIkxPTkciOworICAgICAgICAgICAgY2FzZSBEYXRlRm9ybWF0LkZVTEwgOgorICAgICAgICAgICAgICAgIHJldHVybiAiRlVMTCI7CisgICAgICAgICAgICBkZWZhdWx0IDoKKyAgICAgICAgICAgICAgICByZXR1cm4gIlVua25vd24iOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIF90ZXN0KExvY2FsZSBsb2MpIHsKKyAgICAgICAgaWYgKCFJTkZJTklURSkgeworICAgICAgICAgICAgbG9nbG4oIkxvY2FsZTogIiArIGxvYy5nZXREaXNwbGF5TmFtZSgpKTsKKyAgICAgICAgfQorICAgICAgICAvLyBUb3RhbCBwb3NzaWJpbGl0aWVzID0gMjQKKyAgICAgICAgLy8gIDQgZGF0ZQorICAgICAgICAvLyAgNCB0aW1lCisgICAgICAgIC8vICAxNiBkYXRlLXRpbWUKKyAgICAgICAgYm9vbGVhbltdIFRFU1RfVEFCTEUgPSBuZXcgYm9vbGVhblsyNF07CisgICAgICAgIGludCBpID0gMDsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IDI0OyArK2kpCisgICAgICAgICAgICBURVNUX1RBQkxFW2ldID0gdHJ1ZTsKKyAgICAKKyAgICAgICAgLy8gSWYgd2UgaGF2ZSBzb21lIHNwYXJzZW5lc3MsIGltcGxlbWVudCBpdCBoZXJlLiAgU3BhcnNlbmVzcyBkZWNyZWFzZXMKKyAgICAgICAgLy8gdGVzdCB0aW1lIGJ5IGVsaW1pbmF0aW5nIHNvbWUgdGVzdHMsIHVwIHRvIDIzLgorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgU1BBUlNFTkVTUzsgaSsrKSB7CisgICAgICAgICAgICBpbnQgcmFuZG9tID0gKGludCkgKHJhbi5uZXh0RG91YmxlKCkgKiAyNCk7CisgICAgICAgICAgICBpZiAocmFuZG9tID49IDAgJiYgcmFuZG9tIDwgMjQgJiYgVEVTVF9UQUJMRVtpXSkgeworICAgICAgICAgICAgICAgIFRFU1RfVEFCTEVbcmFuZG9tXSA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9ICAgIAorICAgICAgICAKKyAgICAgICAgaW50IGl0YWJsZSA9IDA7CisgICAgICAgIGludCBzdHlsZSA9IDA7CisgICAgICAgIGZvciAoc3R5bGUgPSBEYXRlRm9ybWF0LkZVTEw7IHN0eWxlIDw9IERhdGVGb3JtYXQuU0hPUlQ7ICsrc3R5bGUpIHsKKyAgICAgICAgICAgIGlmIChURVNUX1RBQkxFW2l0YWJsZSsrXSkgeworICAgICAgICAgICAgICAgIGxvZ2xuKCJUZXN0aW5nIHN0eWxlICIgKyBzdHlsZU5hbWUoc3R5bGUpKTsgCisgICAgICAgICAgICAgICAgRGF0ZUZvcm1hdCBkZiA9IERhdGVGb3JtYXQuZ2V0RGF0ZUluc3RhbmNlKHN0eWxlLCBsb2MpOyAKKyAgICAgICAgICAgICAgICBfdGVzdChkZiwgZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgCisgICAgICAgIGZvciAoc3R5bGUgPSBEYXRlRm9ybWF0LkZVTEw7IHN0eWxlIDw9IERhdGVGb3JtYXQuU0hPUlQ7ICsrc3R5bGUpIHsKKyAgICAgICAgICAgIGlmIChURVNUX1RBQkxFW2l0YWJsZSsrXSkgeworICAgICAgICAgICAgICAgIGxvZ2xuKCJUZXN0aW5nIHN0eWxlICIgKyBzdHlsZU5hbWUoc3R5bGUpKTsKKyAgICAgICAgICAgICAgICBEYXRlRm9ybWF0ICBkZiA9IERhdGVGb3JtYXQuZ2V0VGltZUluc3RhbmNlKHN0eWxlLCBsb2MpOyAKKyAgICAgICAgICAgICAgICBfdGVzdChkZiwgdHJ1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgZm9yIChpbnQgZHN0eWxlID0gRGF0ZUZvcm1hdC5GVUxMOyBkc3R5bGUgPD0gRGF0ZUZvcm1hdC5TSE9SVDsgKytkc3R5bGUpIHsKKyAgICAgICAgICAgIGZvciAoaW50IHRzdHlsZSA9IERhdGVGb3JtYXQuRlVMTDsgdHN0eWxlIDw9IERhdGVGb3JtYXQuU0hPUlQ7ICsrdHN0eWxlKSB7CisgICAgICAgICAgICAgICAgaWYgKFRFU1RfVEFCTEVbaXRhYmxlKytdKSB7CisgICAgICAgICAgICAgICAgICAgIGxvZ2xuKCJUZXN0aW5nIGRzdHlsZSAiICsgc3R5bGVOYW1lKGRzdHlsZSkgKyAiLCB0c3R5bGUgIiArIHN0eWxlTmFtZSh0c3R5bGUpKTsgCisgICAgICAgICAgICAgICAgICAgIERhdGVGb3JtYXQgZGYgPSBEYXRlRm9ybWF0LmdldERhdGVUaW1lSW5zdGFuY2UoZHN0eWxlLCB0c3R5bGUsIGxvYyk7IAorICAgICAgICAgICAgICAgICAgICBfdGVzdChkZiwgZmFsc2UpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBfdGVzdChEYXRlRm9ybWF0IGZtdCwgYm9vbGVhbiB0aW1lT25seSkgeworICAgIAorICAgICAgICBpZiAoIShmbXQgaW5zdGFuY2VvZiBTaW1wbGVEYXRlRm9ybWF0KSkgeworICAgICAgICAgICAgZXJybG4oIkRhdGVGb3JtYXQgd2Fzbid0IGEgU2ltcGxlRGF0ZUZvcm1hdCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgCisgICAgICAgIFN0cmluZyBwYXQgPSAoKFNpbXBsZURhdGVGb3JtYXQpIGZtdCkudG9QYXR0ZXJuKCk7CisgICAgICAgIGxvZ2xuKHBhdCk7CisgICAgCisgICAgICAgIC8vIE5PVEUgVE8gTUFJTlRBSU5FUgorICAgICAgICAvLyBUaGlzIGluZGV4T2YgY2hlY2sgaW50byB0aGUgcGF0dGVybiBuZWVkcyB0byBiZSByZWZpbmVkIHRvIGlnbm9yZQorICAgICAgICAvLyBxdW90ZWQgY2hhcmFjdGVycy4gIEN1cnJlbnRseSwgdGhpcyBpc24ndCBhIHByb2JsZW0gd2l0aCB0aGUgbG9jYWxlCisgICAgICAgIC8vIHBhdHRlcm5zIHdlIGhhdmUsIGJ1dCBpdCBtYXkgYmUgYSBwcm9ibGVtIGxhdGVyLgorICAgIAorICAgICAgICBib29sZWFuIGhhc0VyYSA9IChwYXQuaW5kZXhPZigiRyIpICE9IC0xKTsKKyAgICAgICAgYm9vbGVhbiBoYXNab25lID0gKHBhdC5pbmRleE9mKCJ6IikgIT0gLTEpOworICAgIAorICAgICAgICAvLyBCZWNhdXNlIHBhdHRlcm5zIGNvbnRhaW4gaW5jb21wbGV0ZSBkYXRhIHJlcHJlc2VudGluZyB0aGUgRGF0ZSwKKyAgICAgICAgLy8gd2UgbXVzdCBiZSBjYXJlZnVsIG9mIGhvdyB3ZSBkbyB0aGUgcm91bmR0cmlwLiAgV2Ugc3RhcnQgd2l0aAorICAgICAgICAvLyBhIHJhbmRvbWx5IGdlbmVyYXRlZCBEYXRlIGJlY2F1c2UgdGhleSdyZSBlYXNpZXIgdG8gZ2VuZXJhdGUuCisgICAgICAgIC8vIEZyb20gdGhpcyB3ZSBnZXQgYSBzdHJpbmcuICBUaGUgc3RyaW5nIGlzIG91ciByZWFsIHN0YXJ0aW5nIHBvaW50LAorICAgICAgICAvLyBiZWNhdXNlIHRoaXMgc3RyaW5nIHNob3VsZCBwYXJzZSB0aGUgc2FtZSB3YXkgYWxsIHRoZSB0aW1lLiAgTm90ZQorICAgICAgICAvLyB0aGF0IGl0IHdpbGwgbm90IG5lY2Vzc2FyaWx5IHBhcnNlIGJhY2sgdG8gdGhlIG9yaWdpbmFsIGRhdGUgYmVjYXVzZQorICAgICAgICAvLyBvZiBpbmNvbXBsZXRlbmVzcyBpbiBwYXR0ZXJucy4gIEZvciBleGFtcGxlLCBhIHRpbWUtb25seSBwYXR0ZXJuIHdvbid0CisgICAgICAgIC8vIHBhcnNlIGJhY2sgdG8gdGhlIHNhbWUgZGF0ZS4KKyAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgVFJJQUxTOyArK2kpIHsKKyAgICAgICAgICAgICAgICBEYXRlW10gZCA9IG5ldyBEYXRlW0RFUFRIXTsKKyAgICAgICAgICAgICAgICBTdHJpbmdbXSBzID0gbmV3IFN0cmluZ1tERVBUSF07CisgICAgCisgICAgICAgICAgICAgICAgZFswXSA9IGdlbmVyYXRlRGF0ZSgpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIFdlIGdvIHRocm91Z2ggdGhpcyBsb29wIHVudGlsIHdlIGFjaGlldmUgYSBtYXRjaCBvciB1bnRpbAorICAgICAgICAgICAgICAgIC8vIHRoZSBtYXhpbXVtIGxvb3AgY291bnQgaXMgcmVhY2hlZC4gIFdlIHJlY29yZCB0aGUgcG9pbnRzIGF0CisgICAgICAgICAgICAgICAgLy8gd2hpY2ggdGhlIGRhdGUgYW5kIHRoZSBzdHJpbmcgc3RhcnRzIHRvIG1hdGNoLiAgT25jZSBtYXRjaGluZworICAgICAgICAgICAgICAgIC8vIHN0YXJ0cywgaXQgc2hvdWxkIGNvbnRpbnVlLgorICAgICAgICAgICAgICAgIGludCBsb29wOworICAgICAgICAgICAgICAgIGludCBkbWF0Y2ggPSAwOyAvLyBkW2RtYXRjaF0uZ2V0VGltZSgpID09IGRbZG1hdGNoLTFdLmdldFRpbWUoKQorICAgICAgICAgICAgICAgIGludCBzbWF0Y2ggPSAwOyAvLyBzW3NtYXRjaF0uZXF1YWxzKHNbc21hdGNoLTFdKQorICAgICAgICAgICAgICAgIGZvciAobG9vcCA9IDA7IGxvb3AgPCBERVBUSDsgKytsb29wKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChsb29wID4gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZFtsb29wXSA9IGZtdC5wYXJzZShzW2xvb3AgLSAxXSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgICAgICAgICAgc1tsb29wXSA9IGZtdC5mb3JtYXQoZFtsb29wXSk7CisgICAgCisgICAgICAgICAgICAgICAgICAgIGlmIChsb29wID4gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNtYXRjaCA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBtYXRjaCA9IHNbbG9vcF0uZXF1YWxzKHNbbG9vcCAtIDFdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc21hdGNoID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc21hdGNoID0gbG9vcDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXRjaCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBTdHJpbmcgbWlzbWF0Y2ggYWZ0ZXIgbWF0Y2giKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkbWF0Y2ggPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHtzZmJ9IHdhdGNoIG91dCBoZXJlLCB0aGlzIG1pZ2h0IG5vdCB3b3JrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBtYXRjaCA9IGRbbG9vcF0uZ2V0VGltZSgpID09IGRbbG9vcCAtIDFdLmdldFRpbWUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZG1hdGNoID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG1hdGNoID0gbG9vcDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXRjaCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBEYXRlIG1pc21hdGNoIGFmdGVyIG1hdGNoIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc21hdGNoICE9IDAgJiYgZG1hdGNoICE9IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCBsb29wID09IERFUFRIIGlmIHdlJ3ZlIGZhaWxlZCwgb3RoZXJ3aXNlIGxvb3AgaXMgdGhlCisgICAgICAgICAgICAgICAgLy8gbWF4KHNtYXRjaCwgZG1hdGNoKSwgdGhhdCBpcywgdGhlIGluZGV4IGF0IHdoaWNoIHdlIGhhdmUgc3RyaW5nIGFuZAorICAgICAgICAgICAgICAgIC8vIGRhdGUgbWF0Y2hpbmcuCisgICAgCisgICAgICAgICAgICAgICAgLy8gRGF0ZSB1c3VhbGx5IG1hdGNoZXMgaW4gMi4gIEV4Y2VwdGlvbnMgaGFuZGxlZCBiZWxvdy4KKyAgICAgICAgICAgICAgICBpbnQgbWF4RG1hdGNoID0gMjsKKyAgICAgICAgICAgICAgICBpbnQgbWF4U21hdGNoID0gMTsKKyAgICAgICAgICAgICAgICBpZiAoZG1hdGNoID4gbWF4RG1hdGNoIHx8IHNtYXRjaCA+IG1heFNtYXRjaCkgeworICAgICAgICAgICAgICAgICAgICAvL0lmIHRoZSBEYXRlIGlzIEJDCisgICAgICAgICAgICAgICAgICAgIGlmICghdGltZU9ubHkgJiYgIWhhc0VyYSAmJiBnZXRGaWVsZChkWzBdLCBDYWxlbmRhci5FUkEpID09IEdyZWdvcmlhbkNhbGVuZGFyLkJDKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtYXhEbWF0Y2ggPSAzOworICAgICAgICAgICAgICAgICAgICAgICAgbWF4U21hdGNoID0gMjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoaGFzWm9uZSAmJiAoZm10LmdldFRpbWVab25lKCkuaW5EYXlsaWdodFRpbWUoZFswXSkgfHwgZm10LmdldFRpbWVab25lKCkuaW5EYXlsaWdodFRpbWUoZFsxXSkgKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbWF4U21hdGNoID0gMjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aW1lT25seSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heERtYXRjaCA9IDM7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChkbWF0Y2ggPiBtYXhEbWF0Y2ggfHwgc21hdGNoID4gbWF4U21hdGNoKSB7CisgICAgICAgICAgICAgICAgICAgIFNpbXBsZURhdGVGb3JtYXQgc2RmID0gbmV3IFNpbXBsZURhdGVGb3JtYXQoIkVFRUUsIE1NTU0gZCwgeXl5eSBISDptbTpzcywgeiBHIiwgTG9jYWxlLlVTKTsgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBsb2dsbigiRGF0ZSA9ICIgKyBzZGYuZm9ybWF0KGRbMF0pICsgIjsgbXMgPSAiICsgZFswXS5nZXRUaW1lKCkpOworICAgICAgICAgICAgICAgICAgICBsb2dsbigiRG1hdGNoOiAiICsgZG1hdGNoICsgIiBtYXhEOiAiICsgbWF4RG1hdGNoICsgIiBTbWF0Y2g6IiArIHNtYXRjaCArICIgbWF4UzoiICsgbWF4U21hdGNoKTsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIlBhdHRlcm46ICIgKyBwYXQgKyAiIGZhaWxlZCB0byBtYXRjaCIgKyAiOyBtcyA9ICIgKyBkWzBdLmdldFRpbWUoKSk7CisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDw9IGxvb3AgJiYgaiA8IERFUFRIOyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ0J1ZmZlciB0ZW1wID0gbmV3IFN0cmluZ0J1ZmZlcigiIik7CisgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFBvc2l0aW9uIHBvcyA9IG5ldyBGaWVsZFBvc2l0aW9uKDApOworICAgICAgICAgICAgICAgICAgICAgICAgbG9nbG4oKGogPiAwID8gIiBQPiAiIDogIiAgICAiKSArIGRhdGVGb3JtYXQuZm9ybWF0KGRbal0sIHRlbXAsIHBvcykgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiIEY+ICIgKyBzW2pdICsgKGogPiAwICYmIGRbal0uZ2V0VGltZSgpID09IGRbaiAtIDFdLmdldFRpbWUoKSA/ICIgZD09IiA6ICIiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgKGogPiAwICYmIHNbal0uZXF1YWxzKHNbaiAtIDFdKSA/ICIgcz09IiA6ICIiKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gY2F0Y2ggKFBhcnNlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJFeGNlcHRpb246ICIgKyBlLmdldE1lc3NhZ2UoKSk7CisgICAgICAgICAgICBsb2dsbihlLnRvU3RyaW5nKCkpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHB1YmxpYyBpbnQgZ2V0RmllbGQoRGF0ZSBkLCBpbnQgZikgeworICAgICAgICBnZXRGaWVsZENhbC5zZXRUaW1lKGQpOworICAgICAgICBpbnQgcmV0ID0gZ2V0RmllbGRDYWwuZ2V0KGYpOyAgICAKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisgICAgCisgICAgcHVibGljIERhdGUgZ2VuZXJhdGVEYXRlKCkgeworICAgICAgICBkb3VibGUgYSA9IHJhbi5uZXh0RG91YmxlKCk7CisgICAgICAgIC8vIE5vdyAnYScgcmFuZ2VzIGZyb20gMC4uMTsgc2NhbGUgaXQgdG8gcmFuZ2UgZnJvbSAwIHRvIDgwMDAgeWVhcnMKKyAgICAgICAgYSAqPSA4MDAwOworICAgICAgICAvLyBSYW5nZSBmcm9tICg0MDAwLTE5NzApIEJDIHRvICg4MDAwLTE5NzApIEFECisgICAgICAgIGEgLT0gNDAwMDsKKyAgICAgICAgLy8gTm93IHNjYWxlIHVwIHRvIG1zCisgICAgICAgIGEgKj0gMzY1LjI1ICogMjQgKiA2MCAqIDYwICogMTAwMDsKKyAgICAgICAgcmV0dXJuIG5ldyBEYXRlKChsb25nKWEpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvZm9ybWF0L0RhdGVGb3JtYXRUZXN0LmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvZm9ybWF0L0RhdGVGb3JtYXRUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNWJjYjcyYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9mb3JtYXQvRGF0ZUZvcm1hdFRlc3QuamF2YQpAQCAtMCwwICsxLDkwOSBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICAgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvZm9ybWF0L0RhdGVGb3JtYXRUZXN0LmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMTIvMTggMjE6MjA6NTIgJCAKKyAqICRSZXZpc2lvbjogMS4xMCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworLyoqIAorICogUG9ydCBGcm9tOiAgIElDVTRDIHYxLjguMSA6IGZvcm1hdCA6IERhdGVGb3JtYXRUZXN0CisgKiBTb3VyY2UgRmlsZTogJElDVTRDUm9vdC9zb3VyY2UvdGVzdC9pbnRsdGVzdC9kdGZtdHRzdC5jcHAKKyAqKi8KKworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudGVzdC5mb3JtYXQ7CisKK2ltcG9ydCBjb20uaWJtLmljdS5sYW5nLio7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuKjsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLio7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgamF2YS51dGlsLlJlc291cmNlQnVuZGxlOworaW1wb3J0IGphdmEudGV4dC5QYXJzZUV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnRleHQuUGFyc2VQb3NpdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworaW1wb3J0IGphdmEudGV4dC5GaWVsZFBvc2l0aW9uOworCitwdWJsaWMgY2xhc3MgRGF0ZUZvcm1hdFRlc3QgZXh0ZW5kcyBjb20uaWJtLmljdS5kZXYudGVzdC5UZXN0Rm13ayB7CisgICAgCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIG5ldyBEYXRlRm9ybWF0VGVzdCgpLnJ1bihhcmdzKTsKKyAgICB9CisgICAgCisgICAgLy8gVGVzdCB3cml0dGVuIGJ5IFdhbGx5IFdlZGVsIGFuZCBlbWFpbGVkIHRvIG1lLgorICAgIHB1YmxpYyB2b2lkIFRlc3RXYWxseVdlZGVsKCkgeworICAgICAgICAvKgorICAgICAgICAgKiBJbnN0YW50aWF0ZSBhIFRpbWVab25lIHNvIHdlIGNhbiBnZXQgdGhlIGlkcy4KKyAgICAgICAgICovCisgICAgICAgIC8vVGltZVpvbmUgdHogPSBuZXcgU2ltcGxlVGltZVpvbmUoNywgIiIpOyAvL1RoZSB2YXJpYWJsZSBpcyBuZXZlciB1c2VkCisgICAgICAgIC8qCisgICAgICAgICAqIENvbXB1dGF0aW9uYWwgdmFyaWFibGVzLgorICAgICAgICAgKi8KKyAgICAgICAgaW50IG9mZnNldCwgaG91cnMsIG1pbnV0ZXM7CisgICAgICAgIC8qCisgICAgICAgICAqIEluc3RhbnRpYXRlIGEgU2ltcGxlRGF0ZUZvcm1hdCBzZXQgdXAgdG8gcHJvZHVjZSBhIGZ1bGwgdGltZQorICAgICAgICAgem9uZSBuYW1lLgorICAgICAgICAgKi8KKyAgICAgICAgU2ltcGxlRGF0ZUZvcm1hdCBzZGYgPSBuZXcgU2ltcGxlRGF0ZUZvcm1hdCgienp6eiIpOworICAgICAgICAvKgorICAgICAgICAgKiBBIFN0cmluZyBhcnJheSBmb3IgdGhlIHRpbWUgem9uZSBpZHMuCisgICAgICAgICAqLworICAgIAorICAgICAgICBmaW5hbCBTdHJpbmdbXSBpZHMgPSBUaW1lWm9uZS5nZXRBdmFpbGFibGVJRHMoKTsKKyAgICAgICAgaW50IGlkc19sZW5ndGggPSBpZHMubGVuZ3RoOyAvL3doZW4gZml4ZWQgdGhlIGJ1ZyBzaG91bGQgY29tbWVudCBpdCBvdXQKKyAgICAKKyAgICAgICAgLyoKKyAgICAgICAgICogSG93IG1hbnkgaWRzIGRvIHdlIGhhdmU/CisgICAgICAgICAqLworICAgICAgICBsb2dsbigiVGltZSBab25lIElEcyBzaXplOiIgKyBpZHNfbGVuZ3RoKTsKKyAgICAgICAgLyoKKyAgICAgICAgICogQ29sdW1uIGhlYWRpbmdzIChzb3J0IG9mKQorICAgICAgICAgKi8KKyAgICAgICAgbG9nbG4oIk9yZGluYWwgSUQgb2Zmc2V0KGg6bSkgbmFtZSIpOworICAgICAgICAvKgorICAgICAgICAgKiBMb29wIHRocm91Z2ggdGhlIHR6cy4KKyAgICAgICAgICovCisgICAgICAgIERhdGUgdG9kYXkgPSBuZXcgRGF0ZSgpOworICAgICAgICBDYWxlbmRhciBjYWwgPSBDYWxlbmRhci5nZXRJbnN0YW5jZSgpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGlkc19sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgbG9nbG4oaSArICIgIiArIGlkc1tpXSk7CisgICAgICAgICAgICBUaW1lWm9uZSB0dHogPSBUaW1lWm9uZS5nZXRUaW1lWm9uZShpZHNbaV0pOworICAgICAgICAgICAgLy8gb2Zmc2V0ID0gdHR6LmdldFJhd09mZnNldCgpOworICAgICAgICAgICAgY2FsLnNldFRpbWVab25lKHR0eik7CisgICAgICAgICAgICBjYWwuc2V0VGltZSh0b2RheSk7CisgICAgICAgICAgICBvZmZzZXQgPSBjYWwuZ2V0KENhbGVuZGFyLlpPTkVfT0ZGU0VUKSArIGNhbC5nZXQoQ2FsZW5kYXIuRFNUX09GRlNFVCk7CisgICAgICAgICAgICAvLyBsb2dsbihpICsgIiAiICsgaWRzW2ldICsgIiBvZmZzZXQgIiArIG9mZnNldCk7CisgICAgICAgICAgICBTdHJpbmcgc2lnbiA9ICIrIjsKKyAgICAgICAgICAgIGlmIChvZmZzZXQgPCAwKSB7CisgICAgICAgICAgICAgICAgc2lnbiA9ICItIjsKKyAgICAgICAgICAgICAgICBvZmZzZXQgPSAtb2Zmc2V0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaG91cnMgPSBvZmZzZXQgLyAzNjAwMDAwOworICAgICAgICAgICAgbWludXRlcyA9IChvZmZzZXQgJSAzNjAwMDAwKSAvIDYwMDAwOworICAgICAgICAgICAgU3RyaW5nIGRzdE9mZnNldCA9IHNpZ24gKyAoaG91cnMgPCAxMCA/ICIwIiA6ICIiKSArIGhvdXJzCisgICAgICAgICAgICAgICAgICAgICsgIjoiICsgKG1pbnV0ZXMgPCAxMCA/ICIwIiA6ICIiKSArIG1pbnV0ZXM7IAorICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIEluc3RhbnRpYXRlIGEgZGF0ZSBzbyB3ZSBjYW4gZGlzcGxheSB0aGUgdGltZSB6b25lIG5hbWUuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHNkZi5zZXRUaW1lWm9uZSh0dHopOworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIEZvcm1hdCB0aGUgb3V0cHV0LgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBTdHJpbmdCdWZmZXIgZm10T2Zmc2V0ID0gbmV3IFN0cmluZ0J1ZmZlcigiIik7CisgICAgICAgICAgICBGaWVsZFBvc2l0aW9uIHBvcyA9IG5ldyBGaWVsZFBvc2l0aW9uKDApOworICAgICAgICAgICAgCisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGZtdE9mZnNldCA9IHNkZi5mb3JtYXQodG9kYXksIGZtdE9mZnNldCwgcG9zKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgbG9nbG4oIkV4Y2VwdGlvbjoiICsgZSk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBVbmljb2RlU3RyaW5nIGZtdE9mZnNldCA9IHR6Uy50b1N0cmluZygpOworICAgICAgICAgICAgU3RyaW5nIGZtdERzdE9mZnNldCA9IG51bGw7CisgICAgICAgICAgICBpZiAoZm10T2Zmc2V0LnRvU3RyaW5nKCkuc3RhcnRzV2l0aCgiR01UIikpIHsKKyAgICAgICAgICAgICAgICAvL2ZtdERzdE9mZnNldCA9IGZtdE9mZnNldC5zdWJzdHJpbmcoMyk7CisgICAgICAgICAgICAgICAgZm10RHN0T2Zmc2V0ID0gZm10T2Zmc2V0LnN1YnN0cmluZygzLCBmbXRPZmZzZXQubGVuZ3RoKCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIFNob3cgb3VyIHJlc3VsdC4KKyAgICAgICAgICAgICAqLworICAgIAorICAgICAgICAgICAgYm9vbGVhbiBvayA9IGZtdERzdE9mZnNldCA9PSBudWxsIHx8IGZtdERzdE9mZnNldC5lcXVhbHMoZHN0T2Zmc2V0KTsKKyAgICAgICAgICAgIC8vZml4IHRoZSBqZGsgcmVzb3VyY2VzIGRpZmZlcmVuY2VzIGJldHdlZW4gamRrIDEuMi8xLjMuMCBhbmQgamRrIDEuMy4xCisgICAgICAgICAgICBTdHJpbmcgamF2YVZlcnNpb24gPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImphdmEudmVyc2lvbiIpOworICAgICAgICAgICAgb2sgPSBvayB8fCAoKGphdmFWZXJzaW9uLnN0YXJ0c1dpdGgoIjEuMiIpIHx8IGphdmFWZXJzaW9uLnN0YXJ0c1dpdGgoIjEuMy4wIikpICYmIChmbXREc3RPZmZzZXQgIT0gbnVsbCkgJiYgZm10RHN0T2Zmc2V0LmVxdWFscygiIikpOworICAgICAgICAgICAgaWYgKG9rKSB7CisgICAgICAgICAgICAgICAgbG9nbG4oaSArICIgIiArIGlkc1tpXSArICIgIiArIGRzdE9mZnNldCArICIgIgorICAgICAgICAgICAgICAgICAgICAgICsgZm10T2Zmc2V0ICsgKGZtdERzdE9mZnNldCAhPSBudWxsID8gIiBvayIgOiAiID8iKSk7IAorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBlcnJsbihpICsgIiAiICsgaWRzW2ldICsgIiAiICsgZHN0T2Zmc2V0ICsgIiAiICsgZm10T2Zmc2V0ICsgIiAqKiogRkFJTCAqKioiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdEVxdWFscygpIHsKKyAgICAgICAgRGF0ZUZvcm1hdCBmbXRBID0gRGF0ZUZvcm1hdC5nZXREYXRlVGltZUluc3RhbmNlKERhdGVGb3JtYXQuTUVESVVNLCBEYXRlRm9ybWF0LkZVTEwpOyAKKyAgICAgICAgRGF0ZUZvcm1hdCBmbXRCID0gRGF0ZUZvcm1hdC5nZXREYXRlVGltZUluc3RhbmNlKERhdGVGb3JtYXQuTUVESVVNLCBEYXRlRm9ybWF0LkZVTEwpOyAKKyAgICAgICAgaWYgKCFmbXRBLmVxdWFscyhmbXRCKSkKKyAgICAgICAgICAgIGVycmxuKCJGQUlMIik7ICAgIAorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBUZXN0IHRoZSBwYXJzaW5nIG9mIDItZGlnaXQgeWVhcnMuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdFR3b0RpZ2l0WWVhckRTVFBhcnNlKCkgeworICAgIAorICAgICAgICBTaW1wbGVEYXRlRm9ybWF0IGZ1bGxGbXQgPSBuZXcgU2ltcGxlRGF0ZUZvcm1hdCgiRUVFIE1NTSBkZCBISDptbTpzcy5TU1Mgenp6IHl5eXkgRyIpOyAKKyAgICAgICAgU2ltcGxlRGF0ZUZvcm1hdCBmbXQgPSBuZXcgU2ltcGxlRGF0ZUZvcm1hdCgiZGQtTU1NLXl5IGg6bW06c3MgJ28nJ2Nsb2NrJyBhIHoiLCBMb2NhbGUuRU5HTElTSCk7IAorICAgICAgICBTdHJpbmcgcyA9ICIwMy1BcHItMDQgMjoyMDo0NyBvJ2Nsb2NrIEFNIFBTVCI7CisgICAgCisgICAgICAgIC8qCisgICAgICAgICAqIFNpbXBsZURhdGVGb3JtYXQocGF0dGVybiwgbG9jYWxlKSBDb25zdHJ1Y3QgYSBTaW1wbGVEYXRlRGF0ZUZvcm1hdCB1c2luZworICAgICAgICAgKiB0aGUgZ2l2ZW5pbmcgcGF0dGVybiwgdGhlIGxvY2FsZSBhbmQgdXNpbmcgdGhlIFRpbWVab25lLmdldERlZmF1bHQoKTsKKyAgICAgICAgICogU28gaXQgbmVlZCB0byBhZGQgdGhlIHRpbWV6b25lIG9mZnNldCBvbiBob3VyIGZpZWxkLiAKKyAgICAgICAgICogcHMuIHRoZSBNZXRob2QgQ2FsZW5kYXIuZ2V0VGltZSgpIHVzZWQgYnkgU2ltcGxlRGF0ZUZvcm1hdC5wYXJzZSgpIGFsd2F5cyAKKyAgICAgICAgICogcmV0dXJuIERhdGUgdmF1bGUgd2l0aCBUaW1lWm9uZS5nZXREZWZhdWx0KCkgW1JpY2hhcmQvR0NMXQorICAgICAgICAgKi8KKyAgICAgICAgCisgICAgICAgIFRpbWVab25lIGRlZmF1bHRUWiA9IFRpbWVab25lLmdldERlZmF1bHQoKTsKKyAgICAgICAgVGltZVpvbmUgUFNUID0gVGltZVpvbmUuZ2V0VGltZVpvbmUoIlBTVCIpOworICAgICAgICBpbnQgZGVmYXVsdE9mZnNldCA9IGRlZmF1bHRUWi5nZXRSYXdPZmZzZXQoKTsKKyAgICAgICAgaW50IFBTVE9mZnNldCA9IFBTVC5nZXRSYXdPZmZzZXQoKTsKKyAgICAgICAgaW50IGhvdXIgPSAyICsgKGRlZmF1bHRPZmZzZXQgLSBQU1RPZmZzZXQpIC8gKDYwKjYwKjEwMDApOworICAgICAgICBob3VyID0gKGhvdXIgPCAwKSA/IGhvdXIgKyAyNCA6IGhvdXI7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBEYXRlIGQgPSBmbXQucGFyc2Uocyk7CisgICAgICAgICAgICBDYWxlbmRhciBjYWwgPSBDYWxlbmRhci5nZXRJbnN0YW5jZSgpOworICAgICAgICAgICAgY2FsLnNldFRpbWUoZCk7CisgICAgICAgICAgICAvL0RTVE9mZnNldAorICAgICAgICAgICAgaG91ciArPSBkZWZhdWx0VFouaW5EYXlsaWdodFRpbWUoZCkgPyAxIDogMDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgbG9nbG4ocyArICIgUD4gIiArICgoRGF0ZUZvcm1hdCkgZnVsbEZtdCkuZm9ybWF0KGQpKTsKKyAgICAgICAgICAgIGludCBociA9IGNhbC5nZXQoQ2FsZW5kYXIuSE9VUl9PRl9EQVkpOworICAgICAgICAgICAgaWYgKGhyICE9IGhvdXIpCisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6IFNob3VsZCBwYXJzZSB0byBob3VyICIgKyBob3VyKTsKKyAgICAgICAgfSBjYXRjaCAoUGFyc2VFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIlBhcnNlIEVycm9yOiIgKyBlLmdldE1lc3NhZ2UoKSk7CisgICAgICAgIH0KKyAgICAKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogVmVyaWZ5IHRoYXQgcmV0dXJuZWQgZmllbGQgcG9zaXRpb24gaW5kaWNlcyBhcmUgY29ycmVjdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0RmllbGRQb3NpdGlvbigpIHsKKyAgICAgICAgRGF0ZUZvcm1hdFtdIGRhdGVGb3JtYXRzID0gbmV3IERhdGVGb3JtYXRbNF07CisgICAgICAgIGludCBkYXRlRm9ybWF0c19sZW5ndGggPSBkYXRlRm9ybWF0cy5sZW5ndGg7CisgICAgICAgIFN0cmluZyBmaWVsZE5hbWVzW10gPSB7CisgICAgICAgICAgICAgICAgIkVSQSIsICJZRUFSIiwgIk1PTlRIIiwgIldFRUtfT0ZfWUVBUiIsICJXRUVLX09GX01PTlRIIiwgIkRBWV9PRl9NT05USCIsICAgIkRBWV9PRl9ZRUFSIiwKKyAgICAgICAgICAgICAgICAiREFZX09GX1dFRUsiLCAgICJEQVlfT0ZfV0VFS19JTl9NT05USCIsICJBTV9QTSIsICJIT1VSIiwiSE9VUl9PRl9EQVkiLCJNSU5VVEUiLAorICAgICAgICAgICAgICAgICJTRUNPTkQiLCAiTUlMTElTRUNPTkQiLCAiWk9ORV9PRkZTRVQiIH07CisgICAgICAgIC8qIHtzZmJ9IFRoaXMgdGVzdCB3YXMgY29kZWQgaW5jb3JyZWN0bHkuCisgICAgICAgIC8gRmllbGRQb3NpdGlvbiB1c2VzIHRoZSBmaWVsZHMgaW4gdGhlIGNsYXNzIHlvdSBhcmUgZm9ybWF0dGluZyB3aXRoCisgICAgICAgIC8gU28sIGZvciBleGFtcGxlLCB0byBnZXQgdGhlIERBVEUgZmllbGQgZnJvbSBhIERhdGVGb3JtYXQgdXNlCisgICAgICAgIC8gRGF0ZUZvcm1hdC5EQVRFX0ZJRUxELCBfX25vdF9fIENhbGVuZGFyLkRBVEUKKyAgICAgICAgLyBUaGUgb3JkZXJpbmcgb2YgdGhlIGV4cGVjdGVkIHZhbHVlcyB1c2VkIHByZXZpb3VzbHkgd2FzIHdyb25nLgorICAgICAgICAvIGluc3RlYWQgb2YgcmUtb3JkZXJpbmcgdGhpcyBtZXNzIG9mIHN0cmluZ3MsIGp1c3QgdHJhbnNmb3JtIHRoZSBpbmRleCB2YWx1ZXMgKi8KKyAgICAKKyAgICAgICAgLyogZmllbGQgdmFsdWVzLCBpbiBDYWxlbmRhciBvcmRlciAqLworICAgICAgICBmaW5hbCBTdHJpbmdbXSBleHBlY3RlZCA9CisgICAgICAgICAgICB7ICIiLCAiMTk5NyIsICJBdWd1c3QiLCAiIiwgIiIsICIxMyIsICIiLCAiV2VkbmVzZGF5IiwgIiIsICJQTSIsICIyIiwgIiIsICIzNCIsICIxMiIsICIiLCAiUERUIiwKKyAgICAgICAgICAgIC8qIEZvbGxvd2luZyB0d28gYWRkZWQgYnkgd2VpdiBmb3IgdHdvIG5ldyBmaWVsZHMgKi8iIiwgIjE5OTciLCAiIyIsIAorICAgICAgICAgICAgLyogIyBpcyBhIG1hcmtlciBmb3IgImFvXHhmYnQiID09ICJhb3VedCIgKi8KKyAgICAgICAgICAgICIiLCAiIiwgIjEzIiwgIiIsICJtZXJjcmVkaSIsICIiLCAiIiwgIiIsICIxNCIsICIzNCIsICIiLCAiIiwgIlBEVCIsCisgICAgICAgICAgICAvKiBGb2xsb3dpbmcgdHdvIGFkZGVkIGJ5IHdlaXYgZm9yIHR3byBuZXcgZmllbGRzICovCisgICAgICAgICAgICAiQUQiLCAiMTk5NyIsICI4IiwgIjMzIiwgIjMiLCAiMTMiLCAiMjI1IiwgIldlZCIsICIyIiwgIlBNIiwgIjIiLCAiMTQiLCAiMzQiLCAiMTIiLCAiNTEzIiwgIlBEVCIsCisgICAgICAgICAgICAvKiBGb2xsb3dpbmcgdHdvIGFkZGVkIGJ5IHdlaXYgZm9yIHR3byBuZXcgZmllbGRzICovCisgICAgICAgICAgICAiQUQiLCAgIjE5OTciLCAgIkF1Z3VzdCIsICAiMDAzMyIsICIwMDAzIiwgIjAwMTMiLCAiMDIyNSIsICJXZWRuZXNkYXkiLCAiMDAwMiIsCisgICAgICAgICAgICAgIlBNIiwgIjAwMDIiLCAgIjAwMTQiLCAiMDAzNCIsICIwMDEyIiwgICAiMDUxMyIsICJQYWNpZmljIERheWxpZ2h0IFRpbWUiLAorICAgICAgICAgICAgLyogRm9sbG93aW5nIHR3byBhZGRlZCBieSB3ZWl2IGZvciB0d28gbmV3IGZpZWxkcyAqLyAiMTk5NyIsICIwMDA0IiwgIiIgfTsKKyAgICAKKyAgICAgICAgRGF0ZSBzb21lRGF0ZSA9IG5ldyBEYXRlKChsb25nKSA4NzE1MDgwNTI1MTMuMCk7CisgICAgICAgIGludCBqLCBleHA7CisgICAgCisgICAgICAgIGRhdGVGb3JtYXRzWzBdID0gRGF0ZUZvcm1hdC5nZXREYXRlVGltZUluc3RhbmNlKERhdGVGb3JtYXQuRlVMTCwgRGF0ZUZvcm1hdC5GVUxMLCBMb2NhbGUuVVMpOworICAgICAgICBkYXRlRm9ybWF0c1sxXSA9IERhdGVGb3JtYXQuZ2V0RGF0ZVRpbWVJbnN0YW5jZShEYXRlRm9ybWF0LkZVTEwsIERhdGVGb3JtYXQuRlVMTCwgTG9jYWxlLkZSQU5DRSk7CisgICAgICAgIGRhdGVGb3JtYXRzWzJdID0gbmV3IFNpbXBsZURhdGVGb3JtYXQoIkcsIHksIE0sIGQsIGssIEgsIG0sIHMsIFMsIEUsIEQsIEYsIHcsIFcsIGEsIGgsIEssIHosIHksIEUiLCBMb2NhbGUuVVMpOworICAgICAgICBkYXRlRm9ybWF0c1szXSA9IG5ldyBTaW1wbGVEYXRlRm9ybWF0KCJHR0dHLCB5eXl5LCBNTU1NLCBkZGRkLCBra2trLCBISEhILCBtbW1tLCBzc3NzLCBTU1NTLCBFRUVFLCBERERELCBGRkZGLCB3d3d3LCBXV1dXLCBhYWFhLCBoaGhoLCBLS0tLLCB6enp6LCB5eXl5LCBFRUVFIiwgTG9jYWxlLlVTKTsKKyAgICAgICAgLy9maXggdGhlIGpkayByZXNvdXJjZXMgZGlmZmVyZW5jZXMgYmV0d2VlbiBqZGsgMS4yIGFuZCBqZGsgMS4zCisgICAgICAgIFN0cmluZyBqYXZhVmVyc2lvbiA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiamF2YS52ZXJzaW9uIik7CisgICAgICAgIAorICAgICAgICBmb3IgKGogPSAwLCBleHAgPSAwOyBqIDwgZGF0ZUZvcm1hdHNfbGVuZ3RoOyArK2opIHsKKyAgICAgICAgICAgIFN0cmluZyBzdHI7CisgICAgICAgICAgICBEYXRlRm9ybWF0IGRmID0gZGF0ZUZvcm1hdHNbal07CisgICAgICAgICAgICBUaW1lWm9uZSB0eiA9IFRpbWVab25lLmdldFRpbWVab25lKCJQU1QiKTsKKyAgICAgICAgICAgICgoU2ltcGxlVGltZVpvbmUpdHopLnNldERTVFNhdmluZ3MoMzYwMDAwMCk7CisgICAgICAgICAgICBkZi5zZXRUaW1lWm9uZSh0eik7CisgICAgICAgICAgICBsb2dsbigiIFBhdHRlcm4gPSAiICsgKChTaW1wbGVEYXRlRm9ybWF0KSBkZikudG9QYXR0ZXJuKCkpOworICAgICAgICAgICAgc3RyID0gIiI7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGxvZ2xuKCIgIFJlc3VsdCA9ICIgKyBkZi5mb3JtYXQoc29tZURhdGUpKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmaWVsZE5hbWVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIGZpZWxkID0gZ2V0RmllbGRUZXh0KGRmLCBpLCBzb21lRGF0ZSk7CisgICAgICAgICAgICAgICAgU3RyaW5nIGV4cFN0ciA9ICIiOworICAgICAgICAgICAgICAgIGlmICghZXhwZWN0ZWRbZXhwXS5zdWJzdHJpbmcoMCkuZXF1YWxzKCIjIikpIHsKKyAgICAgICAgICAgICAgICAgICAgZXhwU3RyID0gZXhwZWN0ZWRbZXhwXTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvLyB3ZSBjYW5ub3QgaGF2ZSBsYXRpbi0xIGNoYXJhY3RlcnMgaW4gc291cmNlIGNvZGUsIHRoZXJlZm9yZSB3ZSBmaXggdXAgdGhlIHN0cmluZyBmb3IgImFvdV50IiAKKyAgICAgICAgICAgICAgICAgICAgZXhwU3RyID0gZXhwU3RyICsgIlx1MDA2MSIgKyAiXHUwMDZmIiArICJcdTAwZmIiICsgIlx1MDA3NCI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICgvKmphdmFWZXJzaW9uLnN0YXJ0c1dpdGgoIjEuMiIpICYmKi8gKGV4cD09MzEpKSB7CisgICAgICAgICAgICAgICAgICAgIGV4cFN0ciA9ICJHTVQtMDc6MDAiOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoIWZpZWxkLmVxdWFscyhleHBTdHIpKQorICAgICAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogZmllbGQgIyIgKyBpICsgIiAiICsgZmllbGROYW1lc1tpXSArICIgPSBcIiIgKyBmaWVsZCArICJcIiwgZXhwZWN0ZWQgXCIiICsgZXhwU3RyICsgIlwiIik7CisgICAgICAgICAgICAgICAgKytleHA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLy8gaW50ZXJuYWwgdXRpbGl0eSBmdW5jdGlvbgorICAgIHB1YmxpYyBTdHJpbmcgZ2V0RmllbGRUZXh0KERhdGVGb3JtYXQgZGYsIGludCBmaWVsZCwgRGF0ZSBkYXRlKSB7CisgICAgICAgIGZpbmFsIGludFtdIGZnQ2FsZW5kYXJUb0RhdGVGb3JtYXRGaWVsZCA9eworICAgICAgICAgICAgRGF0ZUZvcm1hdC5FUkFfRklFTEQsIAorICAgICAgICAgICAgRGF0ZUZvcm1hdC5ZRUFSX0ZJRUxELCAKKyAgICAgICAgICAgIERhdGVGb3JtYXQuTU9OVEhfRklFTEQsCisgICAgICAgICAgICBEYXRlRm9ybWF0LldFRUtfT0ZfWUVBUl9GSUVMRCwgCisgICAgICAgICAgICBEYXRlRm9ybWF0LldFRUtfT0ZfTU9OVEhfRklFTEQsCisgICAgICAgICAgICBEYXRlRm9ybWF0LkRBVEVfRklFTEQsIAorICAgICAgICAgICAgRGF0ZUZvcm1hdC5EQVlfT0ZfWUVBUl9GSUVMRCwgCisgICAgICAgICAgICBEYXRlRm9ybWF0LkRBWV9PRl9XRUVLX0ZJRUxELCAgICAgCisgICAgICAgICAgICBEYXRlRm9ybWF0LkRBWV9PRl9XRUVLX0lOX01PTlRIX0ZJRUxELCAKKyAgICAgICAgICAgIERhdGVGb3JtYXQuQU1fUE1fRklFTEQsCisgICAgICAgICAgICBEYXRlRm9ybWF0LkhPVVIxX0ZJRUxELCAKKyAgICAgICAgICAgIERhdGVGb3JtYXQuSE9VUl9PRl9EQVkwX0ZJRUxELCAKKyAgICAgICAgICAgIERhdGVGb3JtYXQuTUlOVVRFX0ZJRUxELCAKKyAgICAgICAgICAgIERhdGVGb3JtYXQuU0VDT05EX0ZJRUxELCAKKyAgICAgICAgICAgIERhdGVGb3JtYXQuTUlMTElTRUNPTkRfRklFTEQsCisgICAgICAgICAgICBEYXRlRm9ybWF0LlRJTUVaT05FX0ZJRUxECisgICAgICAgICAgICB9OworICAgICAgICBTdHJpbmdCdWZmZXIgZm9ybWF0UmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcigiIik7CisgICAgICAgIC8vIHtzZmJ9IGFkZGVkIHRvIGNvbnZlcnQgQ2FsZW5kYXIgRmllbGRzIHRvIERhdGVGb3JtYXQgZmllbGRzCisgICAgICAgIEZpZWxkUG9zaXRpb24gcG9zID0gbmV3IEZpZWxkUG9zaXRpb24oZmdDYWxlbmRhclRvRGF0ZUZvcm1hdEZpZWxkW2ZpZWxkXSk7CisgICAgICAgIGZvcm1hdFJlc3VsdCA9IGRmLmZvcm1hdChkYXRlLCBmb3JtYXRSZXN1bHQsIHBvcyk7ICAgIAorICAgICAgICByZXR1cm4gZm9ybWF0UmVzdWx0LnN1YnN0cmluZyhwb3MuZ2V0QmVnaW5JbmRleCgpLCBwb3MuZ2V0RW5kSW5kZXgoKSk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFZlcmlmeSB0aGF0IHN0cmluZ3Mgd2hpY2ggY29udGFpbiBpbmNvbXBsZXRlIHNwZWNpZmljYXRpb25zIGFyZSBwYXJzZWQKKyAgICAgKiBjb3JyZWN0bHkuICBJbiBzb21lIGluc3RhbmNlcywgdGhpcyBtZWFucyBub3QgYmVpbmcgcGFyc2VkIGF0IGFsbCwgYW5kCisgICAgICogcmV0dXJuaW5nIGFuIGFwcHJvcHJpYXRlIGVycm9yLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RQYXJ0aWFsUGFyc2U5OTQoKSB7CisgICAgCisgICAgICAgIFNpbXBsZURhdGVGb3JtYXQgZiA9IG5ldyBTaW1wbGVEYXRlRm9ybWF0KCk7CisgICAgICAgIENhbGVuZGFyIGNhbCA9IENhbGVuZGFyLmdldEluc3RhbmNlKCk7CisgICAgICAgIGNhbC5jbGVhcigpOworICAgICAgICBjYWwuc2V0KDE5OTcsIDEgLSAxLCAxNywgMTAsIDExLCA0Mik7CisgICAgICAgIERhdGUgZGF0ZSA9IG51bGw7CisgICAgICAgIHRyeVBhdDk5NChmLCAieXkvTU0vZGQgSEg6bW06c3MiLCAiOTcvMDEvMTcgMTA6MTE6NDIiLCBjYWwuZ2V0VGltZSgpKTsKKyAgICAgICAgdHJ5UGF0OTk0KGYsICJ5eS9NTS9kZCBISDptbTpzcyIsICI5Ny8wMS8xNyAxMDoiLCBkYXRlKTsKKyAgICAgICAgdHJ5UGF0OTk0KGYsICJ5eS9NTS9kZCBISDptbTpzcyIsICI5Ny8wMS8xNyAxMCIsIGRhdGUpOworICAgICAgICB0cnlQYXQ5OTQoZiwgInl5L01NL2RkIEhIOm1tOnNzIiwgIjk3LzAxLzE3ICIsIGRhdGUpOworICAgICAgICB0cnlQYXQ5OTQoZiwgInl5L01NL2RkIEhIOm1tOnNzIiwgIjk3LzAxLzE3IiwgZGF0ZSk7CisgICAgfQorICAgIAorICAgIC8vIGludGVybmFsIHRlc3Qgc3Vicm91dGluZSwgdXNlZCBieSBUZXN0UGFydGlhbFBhcnNlOTk0CisgICAgcHVibGljIHZvaWQgdHJ5UGF0OTk0KFNpbXBsZURhdGVGb3JtYXQgZm9ybWF0LCBTdHJpbmcgcGF0LCBTdHJpbmcgc3RyLCBEYXRlIGV4cGVjdGVkKSB7CisgICAgICAgIERhdGUgTnVsbCA9IG51bGw7CisgICAgICAgIGxvZ2xuKCJQYXR0ZXJuIFwiIiArIHBhdCArICJcIiAgIFN0cmluZyBcIiIgKyBzdHIgKyAiXCIiKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZvcm1hdC5hcHBseVBhdHRlcm4ocGF0KTsKKyAgICAgICAgICAgIERhdGUgZGF0ZSA9IGZvcm1hdC5wYXJzZShzdHIpOyAgICAKKyAgICAgICAgICAgIFN0cmluZyBmID0gKChEYXRlRm9ybWF0KSBmb3JtYXQpLmZvcm1hdChkYXRlKTsKKyAgICAgICAgICAgIGxvZ2xuKCIgcGFyc2UoIiArIHN0ciArICIpIC0+ICIgKyBkYXRlKTsKKyAgICAgICAgICAgIGxvZ2xuKCIgZm9ybWF0IC0+ICIgKyBmKTsKKyAgICAgICAgICAgIGlmIChleHBlY3RlZC5lcXVhbHMoTnVsbCkgfHwgIWRhdGUuZXF1YWxzKGV4cGVjdGVkKSkKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogRXhwZWN0ZWQgbnVsbCIpOyAvLyIgKyBleHBlY3RlZCk7CisgICAgICAgICAgICBpZiAoIWYuZXF1YWxzKHN0cikpCisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6IEV4cGVjdGVkICIgKyBzdHIpOworICAgICAgICB9IGNhdGNoIChQYXJzZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBsb2dsbigiUGFyc2VFeGNlcHRpb246ICIgKyBlLmdldE1lc3NhZ2UoKSk7CisgICAgICAgICAgICBpZiAoIShleHBlY3RlZCA9PU51bGwpKQorICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBFeHBlY3RlZCAiICsgZXhwZWN0ZWQpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIioqKiBFeGNlcHRpb246Iik7CisgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFZlcmlmeSB0aGUgYmVoYXZpb3Igb2YgcGF0dGVybnMgaW4gd2hpY2ggZGlnaXRzIGZvciBkaWZmZXJlbnQgZmllbGRzIHJ1biB0b2dldGhlcgorICAgICAqIHdpdGhvdXQgaW50ZXJ2ZW5pbmcgc2VwYXJhdG9ycy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0UnVuVG9nZXRoZXJQYXR0ZXJuOTg1KCkgeworICAgICAgICBTdHJpbmcgZm9ybWF0ID0gInl5eXlNTWRkSEhtbXNzU1NTIjsKKyAgICAgICAgU3RyaW5nIG5vdywgdGhlbjsKKyAgICAgICAgLy9VQm9vbCBmbGFnOworICAgICAgICBTaW1wbGVEYXRlRm9ybWF0IGZvcm1hdHRlciA9IG5ldyBTaW1wbGVEYXRlRm9ybWF0KGZvcm1hdCk7CisgICAgICAgIERhdGUgZGF0ZTEgPSBuZXcgRGF0ZSgpOworICAgICAgICBub3cgPSAoKERhdGVGb3JtYXQpIGZvcm1hdHRlcikuZm9ybWF0KGRhdGUxKTsKKyAgICAgICAgbG9nbG4obm93KTsKKyAgICAgICAgUGFyc2VQb3NpdGlvbiBwb3MgPSBuZXcgUGFyc2VQb3NpdGlvbigwKTsKKyAgICAgICAgRGF0ZSBkYXRlMiA9IGZvcm1hdHRlci5wYXJzZShub3csIHBvcyk7CisgICAgICAgIGlmIChkYXRlMiA9PSBudWxsKQorICAgICAgICAgICAgdGhlbiA9ICJQYXJzZSBzdG9wcGVkIGF0ICIgKyBwb3MuZ2V0SW5kZXgoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhlbiA9ICgoRGF0ZUZvcm1hdCkgZm9ybWF0dGVyKS5mb3JtYXQoZGF0ZTIpOworICAgICAgICBsb2dsbih0aGVuKTsKKyAgICAgICAgaWYgKCFkYXRlMi5lcXVhbHMoZGF0ZTEpKQorICAgICAgICAgICAgZXJybG4oIkZBSUwiKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBWZXJpZnkgdGhlIGJlaGF2aW9yIG9mIHBhdHRlcm5zIGluIHdoaWNoIGRpZ2l0cyBmb3IgZGlmZmVyZW50IGZpZWxkcyBydW4gdG9nZXRoZXIKKyAgICAgKiB3aXRob3V0IGludGVydmVuaW5nIHNlcGFyYXRvcnMuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdFJ1blRvZ2V0aGVyUGF0dGVybjkxNygpIHsKKyAgICAgICAgU2ltcGxlRGF0ZUZvcm1hdCBmbXQ7CisgICAgICAgIFN0cmluZyBteURhdGU7CisgICAgICAgIGZtdCA9IG5ldyBTaW1wbGVEYXRlRm9ybWF0KCJ5eXl5L01NL2RkIik7CisgICAgICAgIG15RGF0ZSA9ICIxOTk3LzAyLzAzIjsKKyAgICAgICAgQ2FsZW5kYXIgY2FsID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTsKKyAgICAgICAgY2FsLmNsZWFyKCk7CisgICAgICAgIGNhbC5zZXQoMTk5NywgMiAtIDEsIDMpOworICAgICAgICBfdGVzdEl0OTE3KGZtdCwgbXlEYXRlLCBjYWwuZ2V0VGltZSgpKTsKKyAgICAgICAgZm10ID0gbmV3IFNpbXBsZURhdGVGb3JtYXQoInl5eXlNTWRkIik7CisgICAgICAgIG15RGF0ZSA9ICIxOTk3MDMwNCI7CisgICAgICAgIGNhbC5jbGVhcigpOworICAgICAgICBjYWwuc2V0KDE5OTcsIDMgLSAxLCA0KTsKKyAgICAgICAgX3Rlc3RJdDkxNyhmbXQsIG15RGF0ZSwgY2FsLmdldFRpbWUoKSk7CisgICAgCisgICAgfQorICAgIAorICAgIC8vIGludGVybmFsIHRlc3Qgc3Vicm91dGluZSwgdXNlZCBieSBUZXN0UnVuVG9nZXRoZXJQYXR0ZXJuOTE3CisgICAgcHVibGljIHZvaWQgX3Rlc3RJdDkxNyhTaW1wbGVEYXRlRm9ybWF0IGZtdCwgU3RyaW5nIHN0ciwgRGF0ZSBleHBlY3RlZCkgeworICAgICAgICBsb2dsbigicGF0dGVybj0iICsgZm10LnRvUGF0dGVybigpICsgIiAgIHN0cmluZz0iICsgc3RyKTsKKyAgICAgICAgRGF0ZSBvID0gbmV3IERhdGUoKTsKKyAgICAgICAgbyA9IChEYXRlKSAoKERhdGVGb3JtYXQpIGZtdCkucGFyc2VPYmplY3Qoc3RyLCBuZXcgUGFyc2VQb3NpdGlvbigwKSk7CisgICAgICAgIGxvZ2xuKCJQYXJzZWQgb2JqZWN0OiAiICsgbyk7CisgICAgICAgIGlmICghby5lcXVhbHMoZXhwZWN0ZWQpKQorICAgICAgICAgICAgZXJybG4oIkZBSUw6IEV4cGVjdGVkICIgKyBleHBlY3RlZCk7CisgICAgICAgIFN0cmluZyBmb3JtYXR0ZWQgPSAoKERhdGVGb3JtYXQpIGZtdCkuZm9ybWF0KG8pOworICAgICAgICBsb2dsbiggIkZvcm1hdHRlZCBzdHJpbmc6ICIgKyBmb3JtYXR0ZWQpOworICAgICAgICBpZiAoIWZvcm1hdHRlZC5lcXVhbHMoc3RyKSkKKyAgICAgICAgICAgIGVycmxuKCAiRkFJTDogRXhwZWN0ZWQgIiArIHN0cik7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFZlcmlmeSB0aGUgaGFuZGxpbmcgb2YgQ3plY2ggSnVuZSBhbmQgSnVseSwgd2hpY2ggaGF2ZSB0aGUgdW5pcXVlIGF0dHJpYnV0ZSB0aGF0CisgICAgICogb25lIGlzIGEgcHJvcGVyIHByZWZpeCBzdWJzdHJpbmcgb2YgdGhlIG90aGVyLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RDemVjaE1vbnRoczQ1OSgpIHsKKyAgICAgICAgRGF0ZUZvcm1hdCBmbXQgPSBEYXRlRm9ybWF0LmdldERhdGVJbnN0YW5jZShEYXRlRm9ybWF0LkZVTEwsIG5ldyBMb2NhbGUoImNzIiwgIiIsICIiKSk7IAorICAgICAgICBsb2dsbigiUGF0dGVybiAiICsgKChTaW1wbGVEYXRlRm9ybWF0KSBmbXQpLnRvUGF0dGVybigpKTsKKyAgICAgICAgQ2FsZW5kYXIgY2FsID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTsKKyAgICAgICAgY2FsLmNsZWFyKCk7CisgICAgICAgIGNhbC5zZXQoMTk5NywgQ2FsZW5kYXIuSlVORSwgMTUpOworICAgICAgICBEYXRlIGp1bmUgPSBjYWwuZ2V0VGltZSgpOworICAgICAgICBjYWwuY2xlYXIoKTsKKyAgICAgICAgY2FsLnNldCgxOTk3LCBDYWxlbmRhci5KVUxZLCAxNSk7CisgICAgICAgIERhdGUganVseSA9IGNhbC5nZXRUaW1lKCk7CisgICAgICAgIFN0cmluZyBqdW5lU3RyID0gZm10LmZvcm1hdChqdW5lKTsKKyAgICAgICAgU3RyaW5nIGp1bHlTdHIgPSBmbXQuZm9ybWF0KGp1bHkpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgbG9nbG4oImZvcm1hdChKdW5lIDE1IDE5OTcpID0gIiArIGp1bmVTdHIpOworICAgICAgICAgICAgRGF0ZSBkID0gZm10LnBhcnNlKGp1bmVTdHIpOworICAgICAgICAgICAgU3RyaW5nIHMgPSBmbXQuZm9ybWF0KGQpOworICAgICAgICAgICAgaW50IG1vbnRoLCB5ciwgZGF5LCBociwgbWluLCBzZWM7CisgICAgICAgICAgICBjYWwuc2V0VGltZShkKTsKKyAgICAgICAgICAgIHlyID0gY2FsLmdldChDYWxlbmRhci5ZRUFSKSAtIDE5MDA7CisgICAgICAgICAgICBtb250aCA9IGNhbC5nZXQoQ2FsZW5kYXIuTU9OVEgpOworICAgICAgICAgICAgZGF5ID0gY2FsLmdldChDYWxlbmRhci5EQVlfT0ZfV0VFSyk7CisgICAgICAgICAgICBociA9IGNhbC5nZXQoQ2FsZW5kYXIuSE9VUl9PRl9EQVkpOworICAgICAgICAgICAgbWluID0gY2FsLmdldChDYWxlbmRhci5NSU5VVEUpOworICAgICAgICAgICAgc2VjID0gY2FsLmdldChDYWxlbmRhci5TRUNPTkQpOworICAgICAgICAgICAgbG9nbG4oIiAgLiBwYXJzZSAuICIgKyBzICsgIiAobW9udGggPSAiICsgbW9udGggKyAiKSIpOworICAgICAgICAgICAgaWYgKG1vbnRoICE9IENhbGVuZGFyLkpVTkUpCisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6IE1vbnRoIHNob3VsZCBiZSBKdW5lIik7CisgICAgICAgICAgICBsb2dsbigiZm9ybWF0KEp1bHkgMTUgMTk5NykgPSAiICsganVseVN0cik7CisgICAgICAgICAgICBkID0gZm10LnBhcnNlKGp1bHlTdHIpOworICAgICAgICAgICAgcyA9IGZtdC5mb3JtYXQoZCk7CisgICAgICAgICAgICBjYWwuc2V0VGltZShkKTsKKyAgICAgICAgICAgIHlyID0gY2FsLmdldChDYWxlbmRhci5ZRUFSKSAtIDE5MDA7CisgICAgICAgICAgICBtb250aCA9IGNhbC5nZXQoQ2FsZW5kYXIuTU9OVEgpOworICAgICAgICAgICAgZGF5ID0gY2FsLmdldChDYWxlbmRhci5EQVlfT0ZfV0VFSyk7CisgICAgICAgICAgICBociA9IGNhbC5nZXQoQ2FsZW5kYXIuSE9VUl9PRl9EQVkpOworICAgICAgICAgICAgbWluID0gY2FsLmdldChDYWxlbmRhci5NSU5VVEUpOworICAgICAgICAgICAgc2VjID0gY2FsLmdldChDYWxlbmRhci5TRUNPTkQpOworICAgICAgICAgICAgbG9nbG4oIiAgLiBwYXJzZSAuICIgKyBzICsgIiAobW9udGggPSAiICsgbW9udGggKyAiKSIpOworICAgICAgICAgICAgaWYgKG1vbnRoICE9IENhbGVuZGFyLkpVTFkpCisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6IE1vbnRoIHNob3VsZCBiZSBKdWx5Iik7CisgICAgICAgIH0gY2F0Y2ggKFBhcnNlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKGUuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBUZXN0IHRoZSBoYW5kbGluZyBvZiAnRCcgaW4gcGF0dGVybnMuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdExldHRlckRQYXR0ZXJuMjEyKCkgeworICAgICAgICBTdHJpbmcgZGF0ZVN0cmluZyA9ICIxOTk1LTA0MC4wNTowMToyOSI7CisgICAgICAgIFN0cmluZyBiaWdEID0gInl5eXktRERELmhoOm1tOnNzIjsKKyAgICAgICAgU3RyaW5nIGxpdHRsZUQgPSAieXl5eS1kZGQuaGg6bW06c3MiOworICAgICAgICBDYWxlbmRhciBjYWwgPSBDYWxlbmRhci5nZXRJbnN0YW5jZSgpOworICAgICAgICBjYWwuY2xlYXIoKTsKKyAgICAgICAgY2FsLnNldCgxOTk1LCAwLCAxLCA1LCAxLCAyOSk7CisgICAgICAgIERhdGUgZXhwTGl0dGxlRCA9IGNhbC5nZXRUaW1lKCk7CisgICAgICAgIERhdGUgZXhwQmlnRCA9IG5ldyBEYXRlKChsb25nKSAoZXhwTGl0dGxlRC5nZXRUaW1lKCkgKyAzOSAqIDI0ICogMzYwMDAwMC4wKSk7CisgICAgICAgIGV4cExpdHRsZUQgPSBleHBCaWdEOyAvLyBFeHBlY3QgdGhlIHNhbWUsIHdpdGggZGVmYXVsdCBsZW5pZW50IHBhcnNpbmcKKyAgICAgICAgbG9nbG4oImRhdGVTdHJpbmc9ICIgKyBkYXRlU3RyaW5nKTsKKyAgICAgICAgU2ltcGxlRGF0ZUZvcm1hdCBmb3JtYXR0ZXIgPSBuZXcgU2ltcGxlRGF0ZUZvcm1hdChiaWdEKTsKKyAgICAgICAgUGFyc2VQb3NpdGlvbiBwb3MgPSBuZXcgUGFyc2VQb3NpdGlvbigwKTsKKyAgICAgICAgRGF0ZSBteURhdGUgPSBmb3JtYXR0ZXIucGFyc2UoZGF0ZVN0cmluZywgcG9zKTsKKyAgICAgICAgbG9nbG4oIlVzaW5nICIgKyBiaWdEICsgIiAuICIgKyBteURhdGUpOworICAgICAgICBpZiAoIW15RGF0ZS5lcXVhbHMoZXhwQmlnRCkpCisgICAgICAgICAgICBlcnJsbigiRkFJTDogRXhwZWN0ZWQgIiArIGV4cEJpZ0QpOworICAgICAgICBmb3JtYXR0ZXIgPSBuZXcgU2ltcGxlRGF0ZUZvcm1hdChsaXR0bGVEKTsKKyAgICAgICAgcG9zID0gbmV3IFBhcnNlUG9zaXRpb24oMCk7CisgICAgICAgIG15RGF0ZSA9IGZvcm1hdHRlci5wYXJzZShkYXRlU3RyaW5nLCBwb3MpOworICAgICAgICBsb2dsbigiVXNpbmcgIiArIGxpdHRsZUQgKyAiIC4gIiArIG15RGF0ZSk7CisgICAgICAgIGlmICghbXlEYXRlLmVxdWFscyhleHBMaXR0bGVEKSkKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBFeHBlY3RlZCAiICsgZXhwTGl0dGxlRCk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFRlc3QgdGhlIGRheSBvZiB5ZWFyIHBhdHRlcm4uCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdERheU9mWWVhclBhdHRlcm4xOTUoKSB7CisgICAgICAgIENhbGVuZGFyIGNhbCA9IENhbGVuZGFyLmdldEluc3RhbmNlKCk7CisgICAgICAgIERhdGUgdG9kYXkgPSBjYWwuZ2V0VGltZSgpOworICAgICAgICBpbnQgeWVhcixtb250aCxkYXk7IAorICAgICAgICB5ZWFyID0gY2FsLmdldChDYWxlbmRhci5ZRUFSKTsKKyAgICAgICAgbW9udGggPSBjYWwuZ2V0KENhbGVuZGFyLk1PTlRIKTsKKyAgICAgICAgZGF5ID0gY2FsLmdldChDYWxlbmRhci5EQVlfT0ZfTU9OVEgpOworICAgICAgICBjYWwuY2xlYXIoKTsKKyAgICAgICAgY2FsLnNldCh5ZWFyLCBtb250aCwgZGF5KTsKKyAgICAgICAgRGF0ZSBleHBlY3RlZCA9IGNhbC5nZXRUaW1lKCk7CisgICAgICAgIGxvZ2xuKCJUZXN0IERhdGU6ICIgKyB0b2RheSk7CisgICAgICAgIFNpbXBsZURhdGVGb3JtYXQgc2RmID0gKFNpbXBsZURhdGVGb3JtYXQpRGF0ZUZvcm1hdC5nZXREYXRlSW5zdGFuY2UoKTsKKyAgICAgICAgdHJ5UGF0dGVybihzZGYsIHRvZGF5LCBudWxsLCBleHBlY3RlZCk7CisgICAgICAgIHRyeVBhdHRlcm4oc2RmLCB0b2RheSwgIkcgeXl5eSBEREQiLCBleHBlY3RlZCk7CisgICAgfQorICAgIAorICAgIC8vIGludGVybCB0ZXN0IHN1YnJvdXRpbmUsIHVzZWQgYnkgVGVzdERheU9mWWVhclBhdHRlcm4xOTUKKyAgICBwdWJsaWMgdm9pZCB0cnlQYXR0ZXJuKFNpbXBsZURhdGVGb3JtYXQgc2RmLCBEYXRlIGQsIFN0cmluZyBwYXR0ZXJuLCBEYXRlIGV4cGVjdGVkKSB7CisgICAgICAgIGlmIChwYXR0ZXJuICE9IG51bGwpCisgICAgICAgICAgICBzZGYuYXBwbHlQYXR0ZXJuKHBhdHRlcm4pOworICAgICAgICBsb2dsbigicGF0dGVybjogIiArIHNkZi50b1BhdHRlcm4oKSk7CisgICAgICAgIFN0cmluZyBmb3JtYXRSZXN1bHQgPSAoKERhdGVGb3JtYXQpIHNkZikuZm9ybWF0KGQpOworICAgICAgICBsb2dsbigiIGZvcm1hdCAtPiAiICsgZm9ybWF0UmVzdWx0KTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIERhdGUgZDIgPSBzZGYucGFyc2UoZm9ybWF0UmVzdWx0KTsKKyAgICAgICAgICAgIGxvZ2xuKCIgcGFyc2UoIiArIGZvcm1hdFJlc3VsdCArICIpIC0+ICIgKyBkMik7CisgICAgICAgICAgICBpZiAoIWQyLmVxdWFscyhleHBlY3RlZCkpCisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6IEV4cGVjdGVkICIgKyBleHBlY3RlZCk7CisgICAgICAgICAgICBTdHJpbmcgZm9ybWF0MiA9ICgoRGF0ZUZvcm1hdCkgc2RmKS5mb3JtYXQoZDIpOworICAgICAgICAgICAgbG9nbG4oIiBmb3JtYXQgLT4gIiArIGZvcm1hdDIpOworICAgICAgICAgICAgaWYgKCFmb3JtYXRSZXN1bHQuZXF1YWxzKGZvcm1hdDIpKQorICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBSb3VuZCB0cmlwIGRyaWZ0Iik7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbihlLmdldE1lc3NhZ2UoKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogVGVzdCB0aGUgaGFuZGxpbmcgb2Ygc2luZ2xlIHF1b3RlcyBpbiBwYXR0ZXJucy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0UXVvdGVQYXR0ZXJuMTYxKCkgeworICAgICAgICBTaW1wbGVEYXRlRm9ybWF0IGZvcm1hdHRlciA9IG5ldyBTaW1wbGVEYXRlRm9ybWF0KCJNTS9kZC95eXl5ICdhdCcgaGg6bW06c3MgYSB6enoiLCBMb2NhbGUuVVMpOyAKKyAgICAgICAgQ2FsZW5kYXIgY2FsID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTsKKyAgICAgICAgY2FsLmNsZWFyKCk7CisgICAgICAgIGNhbC5zZXQoMTk5NywgQ2FsZW5kYXIuQVVHVVNULCAxMywgMTAsIDQyLCAyOCk7CisgICAgICAgIERhdGUgY3VycmVudFRpbWVfMSA9IGNhbC5nZXRUaW1lKCk7CisgICAgICAgIFN0cmluZyBkYXRlU3RyaW5nID0gKChEYXRlRm9ybWF0KSBmb3JtYXR0ZXIpLmZvcm1hdChjdXJyZW50VGltZV8xKTsKKyAgICAgICAgU3RyaW5nIGV4cCA9ICIwOC8xMy8xOTk3IGF0IDEwOjQyOjI4IEFNICI7CisgICAgICAgIGxvZ2xuKCJmb3JtYXQoIiArIGN1cnJlbnRUaW1lXzEgKyAiKSA9ICIgKyBkYXRlU3RyaW5nKTsKKyAgICAgICAgaWYgKCFkYXRlU3RyaW5nLnN1YnN0cmluZygwLCBleHAubGVuZ3RoKCkpLmVxdWFscyhleHApKQorICAgICAgICAgICAgZXJybG4oIkZBSUw6IEV4cGVjdGVkICIgKyBleHApOworICAgIAorICAgIH0KKyAgICAgICAgCisgICAgLyoqCisgICAgICogVmVyaWZ5IHRoZSBjb3JyZWN0IGJlaGF2aW9yIHdoZW4gaGFuZGxpbmcgaW52YWxpZCBpbnB1dCBzdHJpbmdzLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RCYWRJbnB1dDEzNSgpIHsKKyAgICAgICAgaW50IGxvb2tzW10gPSB7RGF0ZUZvcm1hdC5TSE9SVCwgRGF0ZUZvcm1hdC5NRURJVU0sIERhdGVGb3JtYXQuTE9ORywgRGF0ZUZvcm1hdC5GVUxMfTsgCisgICAgICAgIGludCBsb29rc19sZW5ndGggPSBsb29rcy5sZW5ndGg7CisgICAgICAgIGZpbmFsIFN0cmluZ1tdIHN0cmluZ3MgPSB7Ik1hciAxNSIsICJNYXIgMTUgMTk5NyIsICJhc2RmIiwgIjMvMS85NyAxOjIzOiIsICIzLzEvMDAgMToyMzo0NSBBTSJ9OyAKKyAgICAgICAgaW50IHN0cmluZ3NfbGVuZ3RoID0gc3RyaW5ncy5sZW5ndGg7CisgICAgICAgIERhdGVGb3JtYXQgZnVsbCA9IERhdGVGb3JtYXQuZ2V0RGF0ZVRpbWVJbnN0YW5jZShEYXRlRm9ybWF0LkxPTkcsIERhdGVGb3JtYXQuTE9ORywgTG9jYWxlLlVTKTsgCisgICAgICAgIFN0cmluZyBleHBlY3RlZCA9ICJNYXJjaCAxLCAyMDAwIDE6MjM6NDUgQU0gIjsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzdHJpbmdzX2xlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBmaW5hbCBTdHJpbmcgdGV4dCA9IHN0cmluZ3NbaV07CisgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGxvb2tzX2xlbmd0aDsgKytqKSB7CisgICAgICAgICAgICAgICAgaW50IGRhdGVMb29rID0gbG9va3Nbal07CisgICAgICAgICAgICAgICAgZm9yIChpbnQgayA9IDA7IGsgPCBsb29rc19sZW5ndGg7ICsraykgeworICAgICAgICAgICAgICAgICAgICBpbnQgdGltZUxvb2sgPSBsb29rc1trXTsKKyAgICAgICAgICAgICAgICAgICAgRGF0ZUZvcm1hdCBkZiA9IERhdGVGb3JtYXQuZ2V0RGF0ZVRpbWVJbnN0YW5jZShkYXRlTG9vaywgdGltZUxvb2ssIExvY2FsZS5VUyk7IAorICAgICAgICAgICAgICAgICAgICBTdHJpbmcgcHJlZml4ID0gdGV4dCArICIsICIgKyBkYXRlTG9vayArICIvIiArIHRpbWVMb29rICsgIjogIjsgCisgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICBEYXRlIHdoZW4gPSBkZi5wYXJzZSh0ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aGVuID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbihwcmVmaXggKyAiU0hPVUxEIE5PVCBIQVBQRU46IHBhcnNlIHJldHVybmVkIG51bGwuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9ICAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aGVuICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZm9ybWF0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IGZ1bGwuZm9ybWF0KHdoZW4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2xuKHByZWZpeCArICJPSzogIiArIGZvcm1hdCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmb3JtYXQuc3Vic3RyaW5nKDAsIGV4cGVjdGVkLmxlbmd0aCgpKS5lcXVhbHMoZXhwZWN0ZWQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogRXhwZWN0ZWQgIiArIGV4cGVjdGVkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSBjYXRjaChqYXZhLnRleHQuUGFyc2VFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbG9nbG4oZS5nZXRNZXNzYWdlKCkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFZlcmlmeSB0aGUgY29ycmVjdCBiZWhhdmlvciB3aGVuIHBhcnNpbmcgYW4gYXJyYXkgb2YgaW5wdXRzIGFnYWluc3QgYW4KKyAgICAgKiBhcnJheSBvZiBwYXR0ZXJucywgd2l0aCBrbm93biByZXN1bHRzLiAgVGhlIHJlc3VsdHMgYXJlIGVuY29kZWQgYWZ0ZXIKKyAgICAgKiB0aGUgaW5wdXQgc3RyaW5ncyBpbiBlYWNoIHJvdy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0QmFkSW5wdXQxMzVhKCkgeworICAgIAorICAgICAgICBTaW1wbGVEYXRlRm9ybWF0IGRhdGVQYXJzZSA9IG5ldyBTaW1wbGVEYXRlRm9ybWF0KCIiLCBMb2NhbGUuVVMpOworICAgICAgICBmaW5hbCBTdHJpbmcgc3M7CisgICAgICAgIERhdGUgZGF0ZTsKKyAgICAgICAgU3RyaW5nW10gcGFyc2VGb3JtYXRzID17Ik1NTU0gZCwgeXl5eSIsICJNTU1NIGQgeXl5eSIsICJNL2QveXkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZCBNTU1NLCB5eXl5IiwgImQgTU1NTSB5eXl5IiwgICJkIE1NTU0iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTU1NTSBkIiwgInl5eXkiLCAiaDptbSBhIE1NTU0gZCwgeXl5eSIgfTsKKyAgICAgICAgU3RyaW5nW10gaW5wdXRTdHJpbmdzID0geworICAgICAgICAgICAgImJvZ3VzIHN0cmluZyIsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsCisgICAgICAgICAgICAgICAgIkFwcmlsIDEsIDE5OTciLCAiQXByaWwgMSwgMTk5NyIsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsICJBcHJpbCAxIiwgbnVsbCwgbnVsbCwKKyAgICAgICAgICAgICAgICAiSmFuIDEsIDE5NzAiLCAiSmFudWFyeSAxLCAxOTcwIiwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgIkphbnVhcnkgMSIsIG51bGwsIG51bGwsCisgICAgICAgICAgICAgICAgIkphbiAxIDIwMzciLCBudWxsLCAiSmFudWFyeSAxIDIwMzciLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCAiSmFudWFyeSAxIiwgbnVsbCwgbnVsbCwKKyAgICAgICAgICAgICAgICAiMS8xLzcwIiwgbnVsbCwgbnVsbCwgIjEvMS83MCIsIG51bGwsIG51bGwsIG51bGwsIG51bGwsICIwMDAxIiwgbnVsbCwKKyAgICAgICAgICAgICAgICAiNSBNYXkgMTk5NyIsIG51bGwsIG51bGwsIG51bGwsIG51bGwsICI1IE1heSAxOTk3IiwgIjUgTWF5IiwgbnVsbCwgIjAwMDUiLCBudWxsLAorICAgICAgICAgICAgICAgICIxNiBNYXkiLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCAiMTYgTWF5IiwgbnVsbCwgIjAwMTYiLCBudWxsLAorICAgICAgICAgICAgICAgICJBcHJpbCAzMCIsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsICJBcHJpbCAzMCIsIG51bGwsIG51bGwsCisgICAgICAgICAgICAgICAgIjE5OTgiLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCAiMTk5OCIsIG51bGwsCisgICAgICAgICAgICAgICAgIjEiLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCAiMDAwMSIsIG51bGwsCisgICAgICAgICAgICAgICAgIjM6MDAgcG0gSmFuIDEsIDE5OTciLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCAiMDAwMyIsICIzOjAwIFBNIEphbnVhcnkgMSwgMTk5NyIsCisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgZmluYWwgaW50IFBGX0xFTkdUSCA9IHBhcnNlRm9ybWF0cy5sZW5ndGg7CisgICAgICAgIGZpbmFsIGludCBJTlBVVF9MRU5HVEggPSBpbnB1dFN0cmluZ3MubGVuZ3RoOworICAgIAorICAgICAgICBkYXRlUGFyc2UuYXBwbHlQYXR0ZXJuKCJkIE1NTU0sIHl5eXkiKTsKKyAgICAgICAgZGF0ZVBhcnNlLnNldFRpbWVab25lKFRpbWVab25lLmdldERlZmF1bHQoKSk7CisgICAgICAgIHNzID0gIm5vdCBwYXJzZWFibGUiOworICAgICAgICAvLyAgICBTdHJpbmcgdGhlUGF0OworICAgICAgICBsb2dsbigiVHJ5aW5nIHRvIHBhcnNlIFwiIiArIHNzICsgIlwiIHdpdGggIiArIGRhdGVQYXJzZS50b1BhdHRlcm4oKSk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBkYXRlID0gZGF0ZVBhcnNlLnBhcnNlKHNzKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICBsb2dsbigiRkFJTDoiICsgZXgpOworICAgICAgICB9CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgSU5QVVRfTEVOR1RIOyBpICs9IChQRl9MRU5HVEggKyAxKSkgeworICAgICAgICAgICAgUGFyc2VQb3NpdGlvbiBwYXJzZVBvc2l0aW9uID0gbmV3IFBhcnNlUG9zaXRpb24oMCk7CisgICAgICAgICAgICBTdHJpbmcgcyA9IGlucHV0U3RyaW5nc1tpXTsKKyAgICAgICAgICAgIGZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCBQRl9MRU5HVEg7ICsraW5kZXgpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgZXhwZWN0ZWQgPSBpbnB1dFN0cmluZ3NbaSArIDEgKyBpbmRleF07CisgICAgICAgICAgICAgICAgZGF0ZVBhcnNlLmFwcGx5UGF0dGVybihwYXJzZUZvcm1hdHNbaW5kZXhdKTsKKyAgICAgICAgICAgICAgICBkYXRlUGFyc2Uuc2V0VGltZVpvbmUoVGltZVpvbmUuZ2V0RGVmYXVsdCgpKTsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBwYXJzZVBvc2l0aW9uLnNldEluZGV4KDApOworICAgICAgICAgICAgICAgICAgICBkYXRlID0gZGF0ZVBhcnNlLnBhcnNlKHMsIHBhcnNlUG9zaXRpb24pOworICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VQb3NpdGlvbi5nZXRJbmRleCgpICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBzMSwgczI7CisgICAgICAgICAgICAgICAgICAgICAgICBzMSA9IHMuc3Vic3RyaW5nKDAsIHBhcnNlUG9zaXRpb24uZ2V0SW5kZXgoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzMiA9IHMuc3Vic3RyaW5nKHBhcnNlUG9zaXRpb24uZ2V0SW5kZXgoKSwgcy5sZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0ZSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBudWxsIHJlc3VsdCBmbXQ9XCIiICsgcGFyc2VGb3JtYXRzW2luZGV4XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiXCIgcG9zPSIgKyBwYXJzZVBvc2l0aW9uLmdldEluZGV4KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiAiICsgczEgKyAifCIgKyBzMik7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyByZXN1bHQgPSAoKERhdGVGb3JtYXQpIGRhdGVQYXJzZSkuZm9ybWF0KGRhdGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2xuKCJQYXJzZWQgXCIiICsgcyArICJcIiB1c2luZyBcIiIgKyBkYXRlUGFyc2UudG9QYXR0ZXJuKCkgKyAiXCIgdG86ICIgKyByZXN1bHQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleHBlY3RlZCA9PSBudWxsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogRXhwZWN0ZWQgcGFyc2UgZmFpbHVyZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXF1YWxzKGV4cGVjdGVkKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBFeHBlY3RlZCAiICsgZXhwZWN0ZWQpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleHBlY3RlZCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6IEV4cGVjdGVkICIgKyBleHBlY3RlZCArICIgZnJvbSBcIiIgKyBzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICJcIiB3aXRoIFwiIiArIGRhdGVQYXJzZS50b1BhdHRlcm4oKSsgIlwiIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICAgICAgICAgIGxvZ2xuKCJGQUlMOiIgKyBleCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgCisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFRlc3QgdGhlIHBhcnNpbmcgb2YgdHdvLWRpZ2l0IHllYXJzLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RUd29EaWdpdFllYXIoKSB7CisgICAgICAgIERhdGVGb3JtYXQgZm10ID0gRGF0ZUZvcm1hdC5nZXREYXRlSW5zdGFuY2UoRGF0ZUZvcm1hdC5TSE9SVCwgTG9jYWxlLlVTKTsKKyAgICAgICAgQ2FsZW5kYXIgY2FsID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTsKKyAgICAgICAgY2FsLmNsZWFyKCk7CisgICAgICAgIGNhbC5zZXQoMTE3ICsgMTkwMCwgQ2FsZW5kYXIuSlVORSwgNSk7CisgICAgICAgIHBhcnNlMkRpZ2l0WWVhcihmbXQsICI2LzUvMTciLCBjYWwuZ2V0VGltZSgpKTsKKyAgICAgICAgY2FsLmNsZWFyKCk7CisgICAgICAgIGNhbC5zZXQoMzQgKyAxOTAwLCBDYWxlbmRhci5KVU5FLCA0KTsKKyAgICAgICAgcGFyc2UyRGlnaXRZZWFyKGZtdCwgIjYvNC8zNCIsIGNhbC5nZXRUaW1lKCkpOworICAgIH0KKyAgICAKKyAgICAvLyBpbnRlcm5hbCB0ZXN0IHN1YnJvdXRpbmUsIHVzZWQgYnkgVGVzdFR3b0RpZ2l0WWVhcgorICAgIHB1YmxpYyB2b2lkIHBhcnNlMkRpZ2l0WWVhcihEYXRlRm9ybWF0IGZtdCwgU3RyaW5nIHN0ciwgRGF0ZSBleHBlY3RlZCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgRGF0ZSBkID0gZm10LnBhcnNlKHN0cik7CisgICAgICAgICAgICBsb2dsbigiUGFyc2luZyBcIiIrIHN0cisgIlwiIHdpdGggIisgKChTaW1wbGVEYXRlRm9ybWF0KSBmbXQpLnRvUGF0dGVybigpCisgICAgICAgICAgICAgICAgICAgICsgIiAgPT4gIisgZCk7IAorICAgICAgICAgICAgaWYgKCFkLmVxdWFscyhleHBlY3RlZCkpCisgICAgICAgICAgICAgICAgZXJybG4oICJGQUlMOiBFeHBlY3RlZCAiICsgZXhwZWN0ZWQpOworICAgICAgICB9IGNhdGNoIChQYXJzZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbihlLmdldE1lc3NhZ2UoKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogVGVzdCB0aGUgZm9ybWF0dGluZyBvZiB0aW1lIHpvbmVzLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3REYXRlRm9ybWF0Wm9uZTA2MSgpIHsKKyAgICAgICAgRGF0ZSBkYXRlOworICAgICAgICBEYXRlRm9ybWF0IGZvcm1hdHRlcjsKKyAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKDg1OTI0ODAwMDAwMGwpOworICAgICAgICBsb2dsbigiRGF0ZSAxOTk3LzMvMjUgMDA6MDAgR01UOiAiICsgZGF0ZSk7CisgICAgICAgIGZvcm1hdHRlciA9IG5ldyBTaW1wbGVEYXRlRm9ybWF0KCJkZC1NTU0teXl5eXkgSEg6bW0iLCBMb2NhbGUuVUspOworICAgICAgICBmb3JtYXR0ZXIuc2V0VGltZVpvbmUoVGltZVpvbmUuZ2V0VGltZVpvbmUoIkdNVCIpKTsKKyAgICAgICAgU3RyaW5nIHRlbXAgPSBmb3JtYXR0ZXIuZm9ybWF0KGRhdGUpOworICAgICAgICBsb2dsbigiRm9ybWF0dGVkIGluIEdNVCB0bzogIiArIHRlbXApOworICAgICAgICB0cnkgeworICAgICAgICAgICAgRGF0ZSB0ZW1wRGF0ZSA9IGZvcm1hdHRlci5wYXJzZSh0ZW1wKTsKKyAgICAgICAgICAgIGxvZ2xuKCJQYXJzZWQgdG86ICIgKyB0ZW1wRGF0ZSk7CisgICAgICAgICAgICBpZiAoIXRlbXBEYXRlLmVxdWFscyhkYXRlKSkKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogRXhwZWN0ZWQgIiArIGRhdGUpOworICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgdCkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHQpOworICAgICAgICB9CisgICAgCisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFRlc3QgdGhlIGZvcm1hdHRpbmcgb2YgdGltZSB6b25lcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0RGF0ZUZvcm1hdFpvbmUxNDYoKSB7CisgICAgICAgIFRpbWVab25lIHNhdmVEZWZhdWx0ID0gVGltZVpvbmUuZ2V0RGVmYXVsdCgpOworICAgIAorICAgICAgICAvL3RyeSB7CisgICAgICAgIFRpbWVab25lIHRoZWRlZmF1bHQgPSBUaW1lWm9uZS5nZXRUaW1lWm9uZSgiR01UIik7CisgICAgICAgIFRpbWVab25lLnNldERlZmF1bHQodGhlZGVmYXVsdCk7CisgICAgICAgIC8vIGphdmEudXRpbC5Mb2NhbGUuc2V0RGVmYXVsdChuZXcgamF2YS51dGlsLkxvY2FsZSgiYXIiLCAiIiwgIiIpKTsKKyAgICAKKyAgICAgICAgLy8gY2hlY2sgdG8gYmUgc3VyZS4uLiBpdHMgR01UIGFsbCByaWdodAorICAgICAgICBUaW1lWm9uZSB0ZXN0ZGVmYXVsdCA9IFRpbWVab25lLmdldERlZmF1bHQoKTsKKyAgICAgICAgU3RyaW5nIHRlc3R0aW1lem9uZSA9IHRlc3RkZWZhdWx0LmdldElEKCk7CisgICAgICAgIGlmICh0ZXN0dGltZXpvbmUuZXF1YWxzKCJHTVQiKSkKKyAgICAgICAgICAgIGxvZ2xuKCJUZXN0IHRpbWV6b25lID0gIiArIHRlc3R0aW1lem9uZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVycmxuKCJUZXN0IHRpbWV6b25lIHNob3VsZCBiZSBHTVQsIG5vdCAiICsgdGVzdHRpbWV6b25lKTsKKyAgICAKKyAgICAgICAgLy8gbm93IHRyeSB0byB1c2UgdGhlIGRlZmF1bHQgR01UIHRpbWUgem9uZQorICAgICAgICBHcmVnb3JpYW5DYWxlbmRhciBncmVlbndpY2hjYWxlbmRhciA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcigxOTk3LCAzLCA0LCAyMywgMCk7CisgICAgICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKipncmVlbndpY2hjYWxlbmRhci5zZXRUaW1lWm9uZShUaW1lWm9uZS5nZXREZWZhdWx0KCkpOworICAgICAgICAvL2dyZWVud2ljaGNhbGVuZGFyLnNldCgxOTk3LCAzLCA0LCAyMywgMCk7CisgICAgICAgIC8vIHRyeSBhbnl0aGluZyB0byBzZXQgaG91ciB0byAyMzowMCAhISEKKyAgICAgICAgZ3JlZW53aWNoY2FsZW5kYXIuc2V0KENhbGVuZGFyLkhPVVJfT0ZfREFZLCAyMyk7CisgICAgICAgIC8vIGdldCB0aW1lCisgICAgICAgIERhdGUgZ3JlZW53aWNoZGF0ZSA9IGdyZWVud2ljaGNhbGVuZGFyLmdldFRpbWUoKTsKKyAgICAgICAgLy8gZm9ybWF0IGV2ZXJ5IHdheQorICAgICAgICBTdHJpbmcgREFUQVtdID0geworICAgICAgICAgICAgICAgICJzaW1wbGUgZm9ybWF0OiAgIiwgIjA0LzA0Lzk3IDIzOjAwIEdNVCIsIAorICAgICAgICAgICAgICAgICJNTS9kZC95eSBISDptbSB6IiwgImZ1bGwgZm9ybWF0OiAgICAiLCAKKyAgICAgICAgICAgICAgICAiRnJpZGF5LCBBcHJpbCA0LCAxOTk3IDExOjAwOjAwIG8nY2xvY2sgUE0gR01UIiwgCisgICAgICAgICAgICAgICAgIkVFRUUsIE1NTU0gZCwgeXl5eSBoOm1tOnNzICdvJydjbG9jaycgYSB6IiwgCisgICAgICAgICAgICAgICAgImxvbmcgZm9ybWF0OiAgICAiLCAiQXByaWwgNCwgMTk5NyAxMTowMDowMCBQTSBHTVQiLCAKKyAgICAgICAgICAgICAgICAiTU1NTSBkLCB5eXl5IGg6bW06c3MgYSB6IiwgImRlZmF1bHQgZm9ybWF0OiAiLCAKKyAgICAgICAgICAgICAgICAiMDQtQXByLTk3IDExOjAwOjAwIFBNIiwgImRkLU1NTS15eSBoOm1tOnNzIGEiLCAKKyAgICAgICAgICAgICAgICAic2hvcnQgZm9ybWF0OiAgICIsICI0LzQvOTcgMTE6MDAgUE0iLCAKKyAgICAgICAgICAgICAgICAiTS9kL3l5IGg6bW0gYSJ9OyAKKyAgICAgICAgaW50IERBVEFfbGVuZ3RoID0gREFUQS5sZW5ndGg7CisgICAgCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgREFUQV9sZW5ndGg7IGkgKz0gMykgeworICAgICAgICAgICAgRGF0ZUZvcm1hdCBmbXQgPSBuZXcgU2ltcGxlRGF0ZUZvcm1hdChEQVRBW2kgKyAyXSwgTG9jYWxlLkVOR0xJU0gpOworICAgICAgICAgICAgZm10LnNldENhbGVuZGFyKGdyZWVud2ljaGNhbGVuZGFyKTsKKyAgICAgICAgICAgIFN0cmluZyByZXN1bHQgPSBmbXQuZm9ybWF0KGdyZWVud2ljaGRhdGUpOworICAgICAgICAgICAgbG9nbG4oREFUQVtpXSArIHJlc3VsdCk7CisgICAgICAgICAgICBpZiAoIXJlc3VsdC5lcXVhbHMoREFUQVtpICsgMV0pKQorICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBFeHBlY3RlZCAiICsgREFUQVtpICsgMV0gKyAiLCBnb3QgIiArIHJlc3VsdCk7CisgICAgICAgIH0KKyAgICAgICAgLy99CisgICAgICAgIC8vZmluYWxseSB7CisgICAgICAgIFRpbWVab25lLnNldERlZmF1bHQoc2F2ZURlZmF1bHQpOworICAgICAgICAvL30KKyAgICAKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogVGVzdCB0aGUgZm9ybWF0dGluZyBvZiBkYXRlcyBpbiBkaWZmZXJlbnQgbG9jYWxlcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0TG9jYWxlRGF0ZUZvcm1hdCgpIHsKKyAgICAKKyAgICAgICAgRGF0ZSB0ZXN0RGF0ZSA9IG5ldyBEYXRlKDg3NDMwNjgwMDAwMGwpOyAvL01vbiBTZXAgMTUgMDA6MDA6MDAgUERUIDE5OTcKKyAgICAgICAgRGF0ZUZvcm1hdCBkZkZyZW5jaCA9IERhdGVGb3JtYXQuZ2V0RGF0ZVRpbWVJbnN0YW5jZShEYXRlRm9ybWF0LkZVTEwsIERhdGVGb3JtYXQuRlVMTCwgTG9jYWxlLkZSRU5DSCk7CisgICAgICAgIERhdGVGb3JtYXQgZGZVUyA9IERhdGVGb3JtYXQuZ2V0RGF0ZVRpbWVJbnN0YW5jZShEYXRlRm9ybWF0LkZVTEwsIERhdGVGb3JtYXQuRlVMTCwgTG9jYWxlLlVTKTsKKyAgICAgICAgLy9TZXQgVGltZVpvbmUgPSBQRFQKKyAgICAgICAgVGltZVpvbmUgdHogPSBUaW1lWm9uZS5nZXRUaW1lWm9uZSgiUFNUIik7CisgICAgICAgICgoU2ltcGxlVGltZVpvbmUpdHopLnNldERTVFNhdmluZ3MoMzYwMDAwMCk7CisgICAgICAgIGRmRnJlbmNoLnNldFRpbWVab25lKHR6KTsKKyAgICAgICAgZGZVUy5zZXRUaW1lWm9uZSh0eik7CisgICAgICAgIFN0cmluZyBleHBlY3RlZEZSRU5DSF9KREsxMiA9ICJsdW5kaSAxNSBzZXB0ZW1icmUgMTk5NyAwMCBoIDAwIEdNVC0wNzowMCI7CisgICAgICAgIFN0cmluZyBleHBlY3RlZEZSRU5DSCA9ICJsdW5kaSAxNSBzZXB0ZW1icmUgMTk5NyAwMCBoIDAwIFBEVCI7CisgICAgICAgIFN0cmluZyBleHBlY3RlZFVTID0gIk1vbmRheSwgU2VwdGVtYmVyIDE1LCAxOTk3IDEyOjAwOjAwIEFNIFBEVCI7CisgICAgICAgIGxvZ2xuKCJEYXRlIHNldCB0byA6ICIgKyB0ZXN0RGF0ZSk7CisgICAgICAgIFN0cmluZyBvdXQgPSBkZkZyZW5jaC5mb3JtYXQodGVzdERhdGUpOworICAgICAgICBsb2dsbigiRGF0ZSBGb3JtYXRlZCB3aXRoIEZyZW5jaCBMb2NhbGUgIiArIG91dCk7CisgICAgICAgIC8vZml4IHRoZSBqZGsgcmVzb3VyY2VzIGRpZmZlcmVuY2VzIGJldHdlZW4gamRrIDEuMiBhbmQgamRrIDEuMworCQkvKiBvdXIgb3duIGRhdGEgb25seSBoYXMgR01ULXh4eHggaW5mb3JtYXRpb24gaGVyZQorICAgICAgICBTdHJpbmcgamF2YVZlcnNpb24gPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImphdmEudmVyc2lvbiIpOworICAgICAgICBpZiAoamF2YVZlcnNpb24uc3RhcnRzV2l0aCgiMS4yIikpIHsKKyAgICAgICAgICAgIGlmICghb3V0LmVxdWFscyhleHBlY3RlZEZSRU5DSF9KREsxMikpCisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6IEV4cGVjdGVkICIgKyBleHBlY3RlZEZSRU5DSF9KREsxMik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoIW91dC5lcXVhbHMoZXhwZWN0ZWRGUkVOQ0gpKQorICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRGUkVOQ0gpOworICAgICAgICB9CisJCSovCisJCWlmICghb3V0LmVxdWFscyhleHBlY3RlZEZSRU5DSF9KREsxMikpCisJCQllcnJsbigiRkFJTDogRXhwZWN0ZWQgIiArIGV4cGVjdGVkRlJFTkNIX0pESzEyKTsKKyAgICAgICAgb3V0ID0gZGZVUy5mb3JtYXQodGVzdERhdGUpOworICAgICAgICBsb2dsbigiRGF0ZSBGb3JtYXRlZCB3aXRoIFVTIExvY2FsZSAiICsgb3V0KTsKKyAgICAgICAgaWYgKCFvdXQuZXF1YWxzKGV4cGVjdGVkVVMpKQorICAgICAgICAgICAgZXJybG4oIkZBSUw6IEV4cGVjdGVkICIgKyBleHBlY3RlZFVTKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXN0IERhdGVGb3JtYXQoQ2FsZW5kYXIpIEFQSQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3REYXRlRm9ybWF0Q2FsZW5kYXIoKSB7CisgICAgICAgIERhdGVGb3JtYXQgZGF0ZT1udWxsLCB0aW1lPW51bGwsIGZ1bGw9bnVsbDsKKyAgICAgICAgQ2FsZW5kYXIgY2FsPW51bGw7CisgICAgICAgIFBhcnNlUG9zaXRpb24gcG9zID0gbmV3IFBhcnNlUG9zaXRpb24oMCk7CisgICAgICAgIFN0cmluZyBzdHI7CisgICAgICAgIERhdGUgd2hlbjsKKworICAgICAgICAvKiBDcmVhdGUgYSBmb3JtYXR0ZXIgZm9yIGRhdGUgZmllbGRzLiAqLworICAgICAgICBkYXRlID0gRGF0ZUZvcm1hdC5nZXREYXRlSW5zdGFuY2UoRGF0ZUZvcm1hdC5TSE9SVCwgTG9jYWxlLlVTKTsKKyAgICAgICAgaWYgKGRhdGUgPT0gbnVsbCkgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IGdldERhdGVJbnN0YW5jZSBmYWlsZWQiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8qIENyZWF0ZSBhIGZvcm1hdHRlciBmb3IgdGltZSBmaWVsZHMuICovCisgICAgICAgIHRpbWUgPSBEYXRlRm9ybWF0LmdldFRpbWVJbnN0YW5jZShEYXRlRm9ybWF0LlNIT1JULCBMb2NhbGUuVVMpOworICAgICAgICBpZiAodGltZSA9PSBudWxsKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogZ2V0VGltZUluc3RhbmNlIGZhaWxlZCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLyogQ3JlYXRlIGEgZnVsbCBmb3JtYXQgZm9yIG91dHB1dCAqLworICAgICAgICBmdWxsID0gRGF0ZUZvcm1hdC5nZXREYXRlVGltZUluc3RhbmNlKERhdGVGb3JtYXQuRlVMTCwgRGF0ZUZvcm1hdC5GVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2FsZS5VUyk7CisgICAgICAgIGlmIChmdWxsID09IG51bGwpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBnZXRJbnN0YW5jZSBmYWlsZWQiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8qIENyZWF0ZSBhIGNhbGVuZGFyICovCisgICAgICAgIGNhbCA9IENhbGVuZGFyLmdldEluc3RhbmNlKExvY2FsZS5VUyk7CisgICAgICAgIGlmIChjYWwgPT0gbnVsbCkgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IENhbGVuZGFyLmdldEluc3RhbmNlIGZhaWxlZCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLyogUGFyc2UgdGhlIGRhdGUgKi8KKyAgICAgICAgY2FsLmNsZWFyKCk7CisgICAgICAgIHN0ciA9ICI0LzUvMjAwMSI7CisgICAgICAgIHBvcy5zZXRJbmRleCgwKTsKKyAgICAgICAgZGF0ZS5wYXJzZShzdHIsIGNhbCwgcG9zKTsKKyAgICAgICAgaWYgKHBvcy5nZXRJbmRleCgpICE9IHN0ci5sZW5ndGgoKSkgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IERhdGVGb3JtYXQucGFyc2UoNC81LzIwMDEpIGZhaWxlZCBhdCAiICsKKyAgICAgICAgICAgICAgICAgIHBvcy5nZXRJbmRleCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8qIFBhcnNlIHRoZSB0aW1lICovCisgICAgICAgIHN0ciA9ICI1OjQ1IFBNIjsKKyAgICAgICAgcG9zLnNldEluZGV4KDApOworICAgICAgICB0aW1lLnBhcnNlKHN0ciwgY2FsLCBwb3MpOworICAgICAgICBpZiAocG9zLmdldEluZGV4KCkgIT0gc3RyLmxlbmd0aCgpKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogRGF0ZUZvcm1hdC5wYXJzZSgxNzo0NSkgZmFpbGVkIGF0ICIgKworICAgICAgICAgICAgICAgICAgcG9zLmdldEluZGV4KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgCisgICAgICAgIC8qIENoZWNrIHJlc3VsdCAqLworICAgICAgICB3aGVuID0gY2FsLmdldFRpbWUoKTsKKyAgICAgICAgc3RyID0gZnVsbC5mb3JtYXQod2hlbik7CisgICAgICAgIC8vIFRodXJzZGF5LCBBcHJpbCA1LCAyMDAxIDU6NDU6MDAgUE0gUERUIDk4NjUxNzkwMDAwMAorICAgICAgICBpZiAod2hlbi5nZXRUaW1lKCkgPT0gOTg2NTE3OTAwMDAwLjApIHsKKyAgICAgICAgICAgIGxvZ2xuKCJPazogUGFyc2VkIHJlc3VsdDogIiArIHN0cik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogUGFyc2VkIHJlc3VsdDogIiArIHN0ciArICIsIGV4cCA0LzUvMjAwMSA1OjQ1IFBNIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXN0IERhdGVGb3JtYXQncyBwYXJzaW5nIG9mIHNwYWNlIGNoYXJhY3RlcnMuICBTZWUgaml0dGVyYnVnIDE5MTYuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdFNwYWNlUGFyc2luZygpIHsKKworICAgICAgICBTdHJpbmcgUEFSU0VfRkFJTFVSRSA9ICJwYXJzZSBmYWlsdXJlIjsKKyAgICAgICAgU3RyaW5nIERBVEFbXSA9IHsKKyAgICAgICAgICAgIC8vIHBhdHRlcm4sIGlucHV0LCBleHBleHRlZCBvdXRwdXQgKGluIHF1b3RlcykKKyAgICAgICAgICAgICJNTU1NIGQgeXkiLCAiIDA0IDA1IDA2IiwgUEFSU0VfRkFJTFVSRSwgLy8gTU1NTSB3YW50cyBBcHIvQXByaWwKKyAgICAgICAgICAgICJNTU1NIGQgeXkiLCAiMDQgMDUgMDYiLCBQQVJTRV9GQUlMVVJFLAorICAgICAgICAgICAgIk1NIGQgeXkiLCAiIDA0IDA1IDA2IiwgIlwiMjAwNiAwNCAwNVwiIiwKKyAgICAgICAgICAgICJNTSBkIHl5IiwgIjA0IDA1IDA2IiwgIlwiMjAwNiAwNCAwNVwiIiwKKyAgICAgICAgICAgICJNTU1NIGQgeXkiLCAiIEFwciAwNSAwNiIsICJcIjIwMDYgMDQgMDVcIiIsCisgICAgICAgICAgICAiTU1NTSBkIHl5IiwgIkFwciAwNSAwNiIsICJcIjIwMDYgMDQgMDVcIiIsCisgICAgICAgIH07CisKKyAgICAgICAgTG9jYWxlIGVuID0gbmV3IExvY2FsZSgiZW4iLCAiIiwgIiIpOworICAgICAgICBTaW1wbGVEYXRlRm9ybWF0IHNkZk9iaiA9IG5ldyBTaW1wbGVEYXRlRm9ybWF0KCIiLCBlbik7CisKKyAgICAgICAgaW50IGk7CisgICAgICAgIGZvciAoaT0wOyBpPERBVEEubGVuZ3RoOyBpKz0zKSB7CisgICAgICAgICAgICBzZGZPYmouYXBwbHlQYXR0ZXJuKERBVEFbaV0pOworICAgICAgICAgICAgUGFyc2VQb3NpdGlvbiBwcCA9IG5ldyBQYXJzZVBvc2l0aW9uKDApOworICAgICAgICAgICAgRGF0ZSB1ZERhdGUgPSBzZGZPYmoucGFyc2UoREFUQVtpKzFdLCBwcCk7CisgICAgICAgICAgICBTdHJpbmcgb3V0cHV0OworICAgICAgICAgICAgaWYgKHBwLmdldEVycm9ySW5kZXgoKSA9PSAtMSkgeworICAgICAgICAgICAgICAgIFNpbXBsZURhdGVGb3JtYXQgZm9ybWF0dGVyID0gbmV3IFNpbXBsZURhdGVGb3JtYXQoInl5eXkgTU0gZGQiLCBlbik7CisgICAgICAgICAgICAgICAgb3V0cHV0ID0gIlwiIiArIGZvcm1hdHRlci5mb3JtYXQodWREYXRlKSArICJcIiI7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG91dHB1dCA9IFBBUlNFX0ZBSUxVUkU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBTdHJpbmcgZXhwID0gREFUQVtpKzJdOworICAgICAgICAgICAgaWYgKG91dHB1dC5lcXVhbHMoZXhwKSkgeworICAgICAgICAgICAgICAgIGxvZ2xuKCJPazogUGFyc2Ugb2YgXCIiICsgREFUQVtpKzFdICsgIlwiIHdpdGggXCIiICsKKyAgICAgICAgICAgICAgICAgICAgICBEQVRBW2ldICsgIlwiID0+ICIgKyBvdXRwdXQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogUGFyc2Ugb2YgXCIiICsgREFUQVtpKzFdICsgIlwiIHdpdGggXCIiICsKKyAgICAgICAgICAgICAgICAgICAgICBEQVRBW2ldICsgIlwiID0+ICIgKworICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCArICIsIGV4cGVjdGVkICIgKyBleHApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdENvdmVyYWdlKCkgeworICAgICAgICBEYXRlIG5vdyA9IG5ldyBEYXRlKCk7CisgICAgICAgIENhbGVuZGFyIGNhbCA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcigpOworICAgICAgICBEYXRlRm9ybWF0IGYgPSBEYXRlRm9ybWF0LmdldFRpbWVJbnN0YW5jZSgpOworICAgICAgICBsb2dsbigidGltZTogIiArIGYuZm9ybWF0KG5vdykpOworCisgICAgICAgIGludCBoYXNoID0gZi5oYXNoQ29kZSgpOyAvLyBzaWdoLCBldmVyeW9uZSBvdmVycmlkZXMgdGhpcworCisgICAgICAgIGYgPSBEYXRlRm9ybWF0LmdldEluc3RhbmNlKGNhbCk7CisgICAgICAgIGxvZ2xuKCJ0aW1lIGFnYWluOiAiICsgZi5mb3JtYXQobm93KSk7CisKKyAgICAgICAgZiA9IERhdGVGb3JtYXQuZ2V0VGltZUluc3RhbmNlKGNhbCwgZi5GVUxMKTsKKyAgICAgICAgbG9nbG4oInRpbWUgeWV0IGFnYWluOiAiICsgZi5mb3JtYXQobm93KSk7CisKKyAgICAgICAgUmVzb3VyY2VCdW5kbGUgcmIgPSBJQ1VMb2NhbGVEYXRhLmdldExvY2FsZUVsZW1lbnRzKCJkZV9ERSIpOworICAgICAgICBEYXRlRm9ybWF0U3ltYm9scyBzeW0gPSBuZXcgRGF0ZUZvcm1hdFN5bWJvbHMocmIsIExvY2FsZS5HRVJNQU5ZKTsKKyAgICAgICAgRGF0ZUZvcm1hdFN5bWJvbHMgc3ltMiA9IChEYXRlRm9ybWF0U3ltYm9scylzeW0uY2xvbmUoKTsKKyAgICAgICAgaWYgKHN5bS5oYXNoQ29kZSgpICE9IHN5bTIuaGFzaENvZGUoKSkgeworICAgICAgICAgICAgZXJybG4oImZhaWwsIGRhdGUgZm9ybWF0IHN5bWJvbHMgaGFzaGNvZGUgbm90IGVxdWFsIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFzeW0uZXF1YWxzKHN5bTIpKSB7CisgICAgICAgICAgICBlcnJsbigiZmFpbCwgZGF0ZSBmb3JtYXQgc3ltYm9scyBub3QgZXF1YWwiKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9mb3JtYXQvSW50bFRlc3REYXRlRm9ybWF0LmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvZm9ybWF0L0ludGxUZXN0RGF0ZUZvcm1hdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjljNjAwMDUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvZm9ybWF0L0ludGxUZXN0RGF0ZUZvcm1hdC5qYXZhCkBAIC0wLDAgKzEsMjY2IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvZm9ybWF0L0ludGxUZXN0RGF0ZUZvcm1hdC5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzA4LzAxIDIwOjI3OjIxICQgCisgKiAkUmV2aXNpb246IDEuNSAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworLyoqIAorICogUG9ydCBGcm9tOiAgIEpESyAxLjRiMSA6IGphdmEudGV4dC5Gb3JtYXQuSW50bFRlc3REYXRlRm9ybWF0CisgKiBTb3VyY2UgRmlsZTogamF2YS90ZXh0L2Zvcm1hdC9JbnRsVGVzdERhdGVGb3JtYXQuamF2YQorICoqLworCisvKgorICAgIEB0ZXN0IDEuNCA5OC8wMy8wNgorICAgIEBzdW1tYXJ5IHRlc3QgSW50ZXJuYXRpb25hbCBEYXRlIEZvcm1hdAorKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogICBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworKiAgIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0LmZvcm1hdDsKKworaW1wb3J0IGNvbS5pYm0uaWN1LmxhbmcuKjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0Lio7CitpbXBvcnQgY29tLmlibS5pY3UudXRpbC4qOworaW1wb3J0IGphdmEudGV4dC5GaWVsZFBvc2l0aW9uOworaW1wb3J0IGphdmEudGV4dC5QYXJzZUV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworaW1wb3J0IGphdmEudXRpbC5SYW5kb207CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CisKK3B1YmxpYyBjbGFzcyBJbnRsVGVzdERhdGVGb3JtYXQgZXh0ZW5kcyBjb20uaWJtLmljdS5kZXYudGVzdC5UZXN0Rm13ayB7CisgICAgLy8gVmFsdWVzIGluIG1pbGxpc2Vjb25kcyAoPT0gRGF0ZSkKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIE9ORVNFQ09ORCA9IDEwMDA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBPTkVNSU5VVEUgPSA2MCAqIE9ORVNFQ09ORDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIE9ORUhPVVIgPSA2MCAqIE9ORU1JTlVURTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIE9ORURBWSA9IDI0ICogT05FSE9VUjsKKyAgICAvL3ByaXZhdGUgc3RhdGljIGZpbmFsIGRvdWJsZSBPTkVZRUFSID0gMzY1LjI1ICogT05FREFZOyAvLyBBcHByb3hpbWF0ZSAvL1RoZSB2YXJpYWJsZSBpcyBuZXZlciB1c2VkCisKKyAgICAvLyBFTW9kZXMKKyAgICAvL3ByaXZhdGUgc3RhdGljIGZpbmFsIGJ5dGUgR0VORVJJQyA9IDA7CisgICAgLy9wcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIFRJTUUgPSBHRU5FUklDICsgMTsgLy9UaGUgdmFyaWFibGUgaXMgbmV2ZXIgdXNlZAorICAgIC8vcHJpdmF0ZSBzdGF0aWMgZmluYWwgYnl0ZSBEQVRFID0gVElNRSArIDE7IC8vVGhlIHZhcmlhYmxlIGlzIG5ldmVyIHVzZWQKKyAgICAvL3ByaXZhdGUgc3RhdGljIGZpbmFsIGJ5dGUgREFURV9USU1FID0gREFURSArIDE7IC8vVGhlIHZhcmlhYmxlIGlzIG5ldmVyIHVzZWQKKworICAgIHByaXZhdGUgRGF0ZUZvcm1hdCBmRm9ybWF0ID0gRGF0ZUZvcm1hdC5nZXRJbnN0YW5jZSgpOworICAgIHByaXZhdGUgU3RyaW5nIGZUZXN0TmFtZSA9IG5ldyBTdHJpbmcoImdldEluc3RhbmNlIik7CisgICAgcHJpdmF0ZSBpbnQgZkxpbWl0ID0gMzsgLy8gSG93IG1hbnkgaXRlcmF0aW9ucyBpdCBzaG91bGQgdGFrZSB0byByZWFjaCBjb252ZXJnZW5jZQorICAgIAorICAgIHB1YmxpYyBJbnRsVGVzdERhdGVGb3JtYXQoKSB7CisgICAgICAgIC8vQ29uc3RydWN0dXJlCisgICAgfQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBuZXcgSW50bFRlc3REYXRlRm9ybWF0KCkucnVuKGFyZ3MpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RMb2NhbGUoKSB7CisgICAgICAgIGxvY2FsZVRlc3QoTG9jYWxlLmdldERlZmF1bHQoKSwgIkRlZmF1bHQgTG9jYWxlIik7CisgICAgfQorCisgICAgLy8gVGhpcyB0ZXN0IGRvZXMgcm91bmQtdHJpcCB0ZXN0aW5nIChmb3JtYXQgLT4gcGFyc2UgLT4gZm9ybWF0IC0+IHBhcnNlIC0+IGV0Yy4pIG9mIERhdGVGb3JtYXQuCisgICAgcHVibGljIHZvaWQgbG9jYWxlVGVzdChmaW5hbCBMb2NhbGUgbG9jYWxlLCBmaW5hbCBTdHJpbmcgbG9jYWxlTmFtZSkgeworICAgICAgICBpbnQgdGltZVN0eWxlLCBkYXRlU3R5bGU7CisKKyAgICAgICAgLy8gRm9yIHBhdHRlcm5zIGluY2x1ZGluZyBvbmx5IHRpbWUgaW5mb3JtYXRpb24gYW5kIGEgdGltZXpvbmUsIGl0IG1heSB0YWtlCisgICAgICAgIC8vIHVwIHRvIHRocmVlIGl0ZXJhdGlvbnMsIHNpbmNlIHRoZSB0aW1lem9uZSBtYXkgc2hpZnQgYXMgdGhlIHllYXIgbnVtYmVyCisgICAgICAgIC8vIGlzIGRldGVybWluZWQuICBGb3Igb3RoZXIgcGF0dGVybnMsIDIgaXRlcmF0aW9ucyBzaG91bGQgc3VmZmljZS4KKyAgICAgICAgZkxpbWl0ID0gMzsKKworICAgICAgICBmb3IodGltZVN0eWxlID0gMDsgdGltZVN0eWxlIDwgNDsgdGltZVN0eWxlKyspIHsKKyAgICAgICAgICAgIGZUZXN0TmFtZSA9IG5ldyBTdHJpbmcoIlRpbWUgdGVzdCAiICsgdGltZVN0eWxlICsgIiAoIiArIGxvY2FsZU5hbWUgKyAiKSIpOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBmRm9ybWF0ID0gRGF0ZUZvcm1hdC5nZXRUaW1lSW5zdGFuY2UodGltZVN0eWxlLCBsb2NhbGUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2F0Y2goU3RyaW5nSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6IGxvY2FsZVRlc3QgdGltZSBnZXRUaW1lSW5zdGFuY2UgZXhjZXB0aW9uIik7CisgICAgICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFRlc3RGb3JtYXQoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZMaW1pdCA9IDI7CisKKyAgICAgICAgZm9yKGRhdGVTdHlsZSA9IDA7IGRhdGVTdHlsZSA8IDQ7IGRhdGVTdHlsZSsrKSB7CisgICAgICAgICAgICBmVGVzdE5hbWUgPSBuZXcgU3RyaW5nKCJEYXRlIHRlc3QgIiArIGRhdGVTdHlsZSArICIgKCIgKyBsb2NhbGVOYW1lICsgIikiKTsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgZkZvcm1hdCA9IERhdGVGb3JtYXQuZ2V0RGF0ZUluc3RhbmNlKGRhdGVTdHlsZSwgbG9jYWxlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhdGNoKFN0cmluZ0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBsb2NhbGVUZXN0IGRhdGUgZ2V0VGltZUluc3RhbmNlIGV4Y2VwdGlvbiIpOworICAgICAgICAgICAgICAgIHRocm93IGU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBUZXN0Rm9ybWF0KCk7CisgICAgICAgIH0KKworICAgICAgICBmb3IoZGF0ZVN0eWxlID0gMDsgZGF0ZVN0eWxlIDwgNDsgZGF0ZVN0eWxlKyspIHsKKyAgICAgICAgICAgIGZvcih0aW1lU3R5bGUgPSAwOyB0aW1lU3R5bGUgPCA0OyB0aW1lU3R5bGUrKykgeworICAgICAgICAgICAgICAgIGZUZXN0TmFtZSA9IG5ldyBTdHJpbmcoIkRhdGVUaW1lIHRlc3QgIiArIGRhdGVTdHlsZSArICIvIiArIHRpbWVTdHlsZSArICIgKCIgKyBsb2NhbGVOYW1lICsgIikiKTsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBmRm9ybWF0ID0gRGF0ZUZvcm1hdC5nZXREYXRlVGltZUluc3RhbmNlKGRhdGVTdHlsZSwgdGltZVN0eWxlLCBsb2NhbGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXRjaChTdHJpbmdJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6IGxvY2FsZVRlc3QgZGF0ZS90aW1lIGdldERhdGVUaW1lSW5zdGFuY2UgZXhjZXB0aW9uIik7CisgICAgICAgICAgICAgICAgICAgIHRocm93IGU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFRlc3RGb3JtYXQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RGb3JtYXQoKSB7CisgICAgICAgIGlmIChmRm9ybWF0ID09IG51bGwpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBEYXRlRm9ybWF0IGNyZWF0aW9uIGZhaWxlZCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIC8vICAgICAgICBsb2dsbigiVGVzdEZvcm1hdDogIiArIGZUZXN0TmFtZSk7CisgICAgICAgIERhdGUgbm93ID0gbmV3IERhdGUoKTsKKyAgICAgICAgdHJ5RGF0ZShuZXcgRGF0ZSgwKSk7CisgICAgICAgIHRyeURhdGUobmV3IERhdGUoKGxvbmcpIDEyNzgxNjE4MDE3NzguMCkpOworICAgICAgICB0cnlEYXRlKG5vdyk7CisgICAgICAgIC8vIFNoaWZ0IDYgbW9udGhzIGludG8gdGhlIGZ1dHVyZSwgQVQgVEhFIFNBTUUgVElNRSBPRiBEQVkuCisgICAgICAgIC8vIFRoaXMgd2lsbCB0ZXN0IHRoZSBEU1QgaGFuZGxpbmcuCisgICAgICAgIHRyeURhdGUobmV3IERhdGUobm93LmdldFRpbWUoKSArIDYqMzAqT05FREFZKSk7CisKKyAgICAgICAgRGF0ZSBsaW1pdCA9IG5ldyBEYXRlKG5vdy5nZXRUaW1lKCkgKiAxMCk7IC8vIEFyYml0cmFyeSBsaW1pdAorICAgICAgICBmb3IgKGludCBpPTA7IGk8MjsgKytpKQorICAgICAgICAgICAgLy8gICAgICAgICAgICB0cnlEYXRlKG5ldyBEYXRlKGZsb29yKHJhbmREb3VibGUoKSAqIGxpbWl0KSkpOworICAgICAgICAgICAgdHJ5RGF0ZShuZXcgRGF0ZSgobG9uZykgKHJhbmREb3VibGUoKSAqIGxpbWl0LmdldFRpbWUoKSkpKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgZGVzY3JpYmVUZXN0KCkgeworICAgICAgICBpZiAoZkZvcm1hdCA9PSBudWxsKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogbm8gRGF0ZUZvcm1hdCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gQXNzdW1lIGl0J3MgYSBTaW1wbGVEYXRlRm9ybWF0IGFuZCBnZXQgc29tZSBpbmZvCisgICAgICAgIFNpbXBsZURhdGVGb3JtYXQgcyA9IChTaW1wbGVEYXRlRm9ybWF0KSBmRm9ybWF0OworICAgICAgICBsb2dsbihmVGVzdE5hbWUgKyAiIFBhdHRlcm4gIiArIHMudG9QYXR0ZXJuKCkpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCB0cnlEYXRlKERhdGUgdGhlRGF0ZSkgeworICAgICAgICBmaW5hbCBpbnQgREVQVEggPSAxMDsKKyAgICAgICAgRGF0ZVtdIGRhdGUgPSBuZXcgRGF0ZVtERVBUSF07CisgICAgICAgIFN0cmluZ0J1ZmZlcltdIHN0cmluZyA9IG5ldyBTdHJpbmdCdWZmZXJbREVQVEhdOworCisgICAgICAgIGludCBkYXRlTWF0Y2ggPSAwOworICAgICAgICBpbnQgc3RyaW5nTWF0Y2ggPSAwOworICAgICAgICBib29sZWFuIGR1bXAgPSBmYWxzZTsKKyAgICAgICAgaW50IGk7CisgICAgICAgIGZvciAoaT0wOyBpPERFUFRIOyArK2kpIHN0cmluZ1tpXSA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgZm9yIChpPTA7IGk8REVQVEg7ICsraSkgeworICAgICAgICAgICAgaWYgKGkgPT0gMCkgZGF0ZVtpXSA9IHRoZURhdGU7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBkYXRlW2ldID0gZkZvcm1hdC5wYXJzZShzdHJpbmdbaS0xXS50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2F0Y2ggKFBhcnNlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmVUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCIqKioqKioqKioqIEZBSUw6IFBhcnNlIG9mICIgKyBzdHJpbmdbaS0xXSArICIgZmFpbGVkLiIpOworICAgICAgICAgICAgICAgICAgICBkdW1wID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgRmllbGRQb3NpdGlvbiBwb3NpdGlvbiA9IG5ldyBGaWVsZFBvc2l0aW9uKDApOworICAgICAgICAgICAgZkZvcm1hdC5mb3JtYXQoZGF0ZVtpXSwgc3RyaW5nW2ldLCBwb3NpdGlvbik7CisgICAgICAgICAgICBpZiAoaSA+IDApIHsKKyAgICAgICAgICAgICAgICBpZiAoZGF0ZU1hdGNoID09IDAgJiYgZGF0ZVtpXSA9PSBkYXRlW2ktMV0pIGRhdGVNYXRjaCA9IGk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0ZU1hdGNoID4gMCAmJiBkYXRlW2ldICE9IGRhdGVbaS0xXSkgeworICAgICAgICAgICAgICAgICAgICBkZXNjcmliZVRlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIioqKioqKioqKiogRkFJTDogRGF0ZSBtaXNtYXRjaCBhZnRlciBtYXRjaC4iKTsKKyAgICAgICAgICAgICAgICAgICAgZHVtcCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoc3RyaW5nTWF0Y2ggPT0gMCAmJiBzdHJpbmdbaV0gPT0gc3RyaW5nW2ktMV0pIHN0cmluZ01hdGNoID0gaTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChzdHJpbmdNYXRjaCA+IDAgJiYgc3RyaW5nW2ldICE9IHN0cmluZ1tpLTFdKSB7CisgICAgICAgICAgICAgICAgICAgIGRlc2NyaWJlVGVzdCgpOworICAgICAgICAgICAgICAgICAgICBlcnJsbigiKioqKioqKioqKiBGQUlMOiBTdHJpbmcgbWlzbWF0Y2ggYWZ0ZXIgbWF0Y2guIik7CisgICAgICAgICAgICAgICAgICAgIGR1bXAgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZGF0ZU1hdGNoID4gMCAmJiBzdHJpbmdNYXRjaCA+IDApIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmIChpID09IERFUFRIKSAtLWk7CisKKyAgICAgICAgaWYgKHN0cmluZ01hdGNoID4gZkxpbWl0IHx8IGRhdGVNYXRjaCA+IGZMaW1pdCkgeworICAgICAgICAgICAgZGVzY3JpYmVUZXN0KCk7CisgICAgICAgICAgICBlcnJsbigiKioqKioqKioqKiBGQUlMOiBObyBzdHJpbmcgYW5kL29yIGRhdGUgbWF0Y2ggd2l0aGluICIgKyBmTGltaXQgKyAiIGl0ZXJhdGlvbnMuIik7CisgICAgICAgICAgICBkdW1wID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChkdW1wKSB7CisgICAgICAgICAgICBmb3IgKGludCBrPTA7IGs8PWk7ICsraykgeworICAgICAgICAgICAgICAgIGxvZ2xuKCIiICsgayArICI6ICIgKyBkYXRlW2tdICsgIiBGPiAiICsgc3RyaW5nW2tdICsgIiBQPiAiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFJldHVybiBhIHJhbmRvbSBkb3VibGUgZnJvbSAwLjAxIHRvIDEsIGluY2x1c2l2ZQorICAgIHByaXZhdGUgZG91YmxlIHJhbmREb3VibGUoKSB7CisgICAgICAgIC8vIEFzc3VtZSA4LWJpdCAob3IgbGFyZ2VyKSByYW5kIHZhbHVlcy4gIEFsc28gYXNzdW1lCisgICAgICAgIC8vIHRoYXQgdGhlIHN5c3RlbSByYW5kKCkgZnVuY3Rpb24gaXMgdmVyeSBwb29yLCB3aGljaCBpdCBhbHdheXMgaXMuCisgICAgICAgIC8vICAgICAgICBkb3VibGUgZDsKKyAgICAgICAgLy8gICAgICAgIGludCBpOworICAgICAgICAvLyAgICAgICAgZG8geworICAgICAgICAvLyAgICAgICAgICAgIGZvciAoaT0wOyBpIDwgc2l6ZW9mKGRvdWJsZSk7ICsraSkKKyAgICAgICAgLy8gICAgICAgICAgICB7CisgICAgICAgIC8vICAgICAgICAgICAgICAgIGNoYXIgcG9rZSA9IChjaGFyKikmZDsKKyAgICAgICAgLy8gICAgICAgICAgICAgICAgcG9rZVtpXSA9IChyYW5kKCkgJiAweEZGKTsKKyAgICAgICAgLy8gICAgICAgICAgICB9CisgICAgICAgIC8vICAgICAgICB9IHdoaWxlIChUUGxhdGZvcm1VdGlsaXRpZXMuaXNOYU4oZCkgfHwgVFBsYXRmb3JtVXRpbGl0aWVzLmlzSW5maW5pdGUoZCkpOworCisgICAgICAgIC8vICAgICAgICBpZiAoZCA8IDAuMCkgZCA9IC1kOworICAgICAgICAvLyAgICAgICAgaWYgKGQgPiAwLjApCisgICAgICAgIC8vICAgICAgICB7CisgICAgICAgIC8vICAgICAgICAgICAgZG91YmxlIGUgPSBmbG9vcihsb2cxMChkKSk7CisgICAgICAgIC8vICAgICAgICAgICAgaWYgKGUgPCAtMi4wKSBkICo9IHBvdygxMC4wLCAtZS0yKTsKKyAgICAgICAgLy8gICAgICAgICAgICBlbHNlIGlmIChlID4gLTEuMCkgZCAvPSBwb3coMTAuMCwgZSsxKTsKKyAgICAgICAgLy8gICAgICAgIH0KKyAgICAgICAgLy8gICAgICAgIHJldHVybiBkOworICAgICAgICBSYW5kb20gcmFuZCA9IG5ldyBSYW5kb20oKTsKKyAgICAgICAgcmV0dXJuIHJhbmQubmV4dERvdWJsZSgpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RBdmFpbGFibGVMb2NhbGVzKCkgeworICAgICAgICBmaW5hbCBMb2NhbGVbXSBsb2NhbGVzID0gRGF0ZUZvcm1hdC5nZXRBdmFpbGFibGVMb2NhbGVzKCk7CisgICAgICAgIGxvbmcgY291bnQgPSBsb2NhbGVzLmxlbmd0aDsKKyAgICAgICAgbG9nbG4oIiIgKyBjb3VudCArICIgYXZhaWxhYmxlIGxvY2FsZXMiKTsKKyAgICAgICAgaWYgKGxvY2FsZXMgIT0gbnVsbCAgJiYgIGNvdW50ICE9IDApIHsKKyAgICAgICAgICAgIFN0cmluZ0J1ZmZlciBhbGwgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8Y291bnQ7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChpIT0wKSBhbGwuYXBwZW5kKCIsICIpOworICAgICAgICAgICAgICAgIGFsbC5hcHBlbmQobG9jYWxlc1tpXS5nZXREaXNwbGF5TmFtZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxvZ2xuKGFsbC50b1N0cmluZygpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGVycmxuKCIqKioqKioqKioqIEZBSUw6IFplcm8gYXZhaWxhYmxlIGxvY2FsZXMgb3IgbnVsbCBhcnJheSBwb2ludGVyIik7CisgICAgfQorCisgICAgLyogVGhpcyB0ZXN0IGlzIHRvbyBzbG93OyB3ZSBkaXNhYmxlIGl0IGZvciBub3cKKyAgICBwdWJsaWMgdm9pZCBUZXN0TW9uc3RlcigpIHsKKyAgICAgICAgZmluYWwgTG9jYWxlW10gbG9jYWxlcyA9IERhdGVGb3JtYXQuZ2V0QXZhaWxhYmxlTG9jYWxlcygpOworICAgICAgICBsb25nIGNvdW50ID0gbG9jYWxlcy5sZW5ndGg7CisgICAgICAgIGlmIChsb2NhbGVzICE9IG51bGwgICYmICBjb3VudCAhPSAwKSB7CisgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8Y291bnQ7ICsraSkgeworICAgICAgICAgICAgICAgIFN0cmluZyBuYW1lID0gbG9jYWxlc1tpXS5nZXREaXNwbGF5TmFtZSgpOworICAgICAgICAgICAgICAgIGxvZ2xuKCJUZXN0aW5nICIgKyBuYW1lICsgIi4uLiIpOworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIGxvY2FsZVRlc3QobG9jYWxlc1tpXSwgbmFtZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhdGNoKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBUZXN0TW9uc3RlciBsb2NhbGVUZXN0IGV4Y2VwdGlvbiIgKyBlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgKi8KK30KKworLy9lb2YKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9mb3JtYXQvSW50bFRlc3REYXRlRm9ybWF0QVBJLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvZm9ybWF0L0ludGxUZXN0RGF0ZUZvcm1hdEFQSS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmQ4MmFiZGEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvZm9ybWF0L0ludGxUZXN0RGF0ZUZvcm1hdEFQSS5qYXZhCkBAIC0wLDAgKzEsMjA4IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9mb3JtYXQvSW50bFRlc3REYXRlRm9ybWF0QVBJLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDgvMDEgMjA6Mjc6MjEgJCAKKyAqICRSZXZpc2lvbjogMS42ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKi8KKworLyoqIAorICogUG9ydCBGcm9tOiAgIEpESyAxLjRiMSA6IGphdmEudGV4dC5Gb3JtYXQuSW50bFRlc3REYXRlRm9ybWF0QVBJCisgKiBTb3VyY2UgRmlsZTogamF2YS90ZXh0L2Zvcm1hdC9JbnRsVGVzdERhdGVGb3JtYXRBUEkuamF2YQorICoqLworCisvKgorICAgIEB0ZXN0IDEuNCA5OC8wMy8wNgorICAgIEBzdW1tYXJ5IHRlc3QgSW50ZXJuYXRpb25hbCBEYXRlIEZvcm1hdCBBUEkKKyovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqICAgQ29weXJpZ2h0IChDKSAxOTk2LTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyogICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudGVzdC5mb3JtYXQ7CisKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLio7CitpbXBvcnQgY29tLmlibS5pY3UubGFuZy4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuKjsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudGV4dC5QYXJzZVBvc2l0aW9uOworaW1wb3J0IGphdmEudGV4dC5GaWVsZFBvc2l0aW9uOworaW1wb3J0IGphdmEudGV4dC5QYXJzZUV4Y2VwdGlvbjsKKworcHVibGljIGNsYXNzIEludGxUZXN0RGF0ZUZvcm1hdEFQSSBleHRlbmRzIGNvbS5pYm0uaWN1LmRldi50ZXN0LlRlc3RGbXdrCit7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIG5ldyBJbnRsVGVzdERhdGVGb3JtYXRBUEkoKS5ydW4oYXJncyk7CisgICAgfQorCisgICAgLy8gVGVzdCB0aGF0IHRoZSBlcXVhbHMgbWV0aG9kIHdvcmtzIGNvcnJlY3RseS4KKyAgICBwdWJsaWMgdm9pZCBUZXN0RXF1YWxzKCkKKyAgICB7CisgICAgICAgIC8vIENyZWF0ZSB0d28gb2JqZWN0cyBhdCBkaWZmZXJlbnQgc3lzdGVtIHRpbWVzCisgICAgICAgIERhdGVGb3JtYXQgYSA9IERhdGVGb3JtYXQuZ2V0SW5zdGFuY2UoKTsKKyAgICAgICAgRGF0ZSBzdGFydCA9IENhbGVuZGFyLmdldEluc3RhbmNlKCkuZ2V0VGltZSgpOworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgLy8gY2hhbmdlZCB0byByZW1vdmUgY29tcGlsZXIgd2FybmluZ3MuCisgICAgICAgICAgICBpZiAoIXN0YXJ0LmVxdWFscyhDYWxlbmRhci5nZXRJbnN0YW5jZSgpLmdldFRpbWUoKSkpIHsKKyAgICAgICAgICAgICAgICBicmVhazsgLy8gV2FpdCBmb3IgdGltZSB0byBjaGFuZ2UKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBEYXRlRm9ybWF0IGIgPSBEYXRlRm9ybWF0LmdldEluc3RhbmNlKCk7CisKKyAgICAgICAgaWYgKCEoYS5lcXVhbHMoYikpKQorICAgICAgICAgICAgZXJybG4oIkZBSUw6IERhdGVGb3JtYXQgb2JqZWN0cyBjcmVhdGVkIGF0IGRpZmZlcmVudCB0aW1lcyBhcmUgdW5lcXVhbC4iKTsKKworICAgICAgICAvLyBXaHkgaGFzIHRoaXMgdGVzdCBiZWVuIGRpc2FibGVkPz8/IC0gYWxpdQorLy8gICAgICAgIGlmIChiIGluc3RhbmNlb2YgU2ltcGxlRGF0ZUZvcm1hdCkKKy8vICAgICAgICB7CisvLyAgICAgICAgICAgIC8vZG91YmxlIE9ORV9ZRUFSID0gMzY1KjI0KjYwKjYwKjEwMDAuMDsgLy9UaGUgdmFyaWFibGUgaXMgbmV2ZXIgdXNlZAorLy8gICAgICAgICAgICB0cnkgeworLy8gICAgICAgICAgICAgICAgKChTaW1wbGVEYXRlRm9ybWF0KWIpLnNldFR3b0RpZ2l0U3RhcnREYXRlKHN0YXJ0LmdldFRpbWUoKSArIDUwKk9ORV9ZRUFSKTsKKy8vICAgICAgICAgICAgICAgIGlmIChhLmVxdWFscyhiKSkKKy8vICAgICAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogRGF0ZUZvcm1hdCBvYmplY3RzIHdpdGggZGlmZmVyZW50IHR3byBkaWdpdCBzdGFydCBkYXRlcyBhcmUgZXF1YWwuIik7CisvLyAgICAgICAgICAgIH0KKy8vICAgICAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisvLyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogc2V0VHdvRGlnaXRTdGFydERhdGUgZmFpbGVkLiIpOworLy8gICAgICAgICAgICB9CisvLyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFRoaXMgdGVzdCBjaGVja3MgdmFyaW91cyBnZW5lcmljIEFQSSBtZXRob2RzIGluIERhdGVGb3JtYXQgdG8gYWNoaWV2ZSAxMDAlIEFQSSBjb3ZlcmFnZS4KKyAgICBwdWJsaWMgdm9pZCBUZXN0QVBJKCkKKyAgICB7CisgICAgICAgIGxvZ2xuKCJEYXRlRm9ybWF0IEFQSSB0ZXN0LS0tIik7IGxvZ2xuKCIiKTsKKyAgICAgICAgTG9jYWxlLnNldERlZmF1bHQoTG9jYWxlLkVOR0xJU0gpOworCisKKyAgICAgICAgLy8gPT09PT09PSBUZXN0IGNvbnN0cnVjdG9ycworCisgICAgICAgIGxvZ2xuKCJUZXN0aW5nIERhdGVGb3JtYXQgY29uc3RydWN0b3JzIik7CisKKyAgICAgICAgRGF0ZUZvcm1hdCBkZWYgPSBEYXRlRm9ybWF0LmdldEluc3RhbmNlKCk7CisgICAgICAgIERhdGVGb3JtYXQgZnIgPSBEYXRlRm9ybWF0LmdldFRpbWVJbnN0YW5jZShEYXRlRm9ybWF0LkZVTEwsIExvY2FsZS5GUkVOQ0gpOworICAgICAgICBEYXRlRm9ybWF0IGl0ID0gRGF0ZUZvcm1hdC5nZXREYXRlSW5zdGFuY2UoRGF0ZUZvcm1hdC5NRURJVU0sIExvY2FsZS5JVEFMSUFOKTsKKyAgICAgICAgRGF0ZUZvcm1hdCBkZSA9IERhdGVGb3JtYXQuZ2V0RGF0ZVRpbWVJbnN0YW5jZShEYXRlRm9ybWF0LkxPTkcsIERhdGVGb3JtYXQuTE9ORywgTG9jYWxlLkdFUk1BTik7CisKKyAgICAgICAgLy8gPT09PT09PSBUZXN0IGVxdWFsaXR5CisKKyAgICAgICAgbG9nbG4oIlRlc3RpbmcgZXF1YWxpdHkgb3BlcmF0b3IiKTsKKworICAgICAgICBpZiggZnIuZXF1YWxzKGl0KSApIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogZXF1YWxzIGZhaWxlZCIpOworICAgICAgICB9CisKKyAgICAgICAgLy8gPT09PT09PSBUZXN0IHZhcmlvdXMgZm9ybWF0KCkgbWV0aG9kcworCisgICAgICAgIGxvZ2xuKCJUZXN0aW5nIHZhcmlvdXMgZm9ybWF0KCkgbWV0aG9kcyIpOworCisgICAgICAgIERhdGUgZCA9IG5ldyBEYXRlKChsb25nKTgzNzAzOTkyODA0Ni4wKTsKKworICAgICAgICBTdHJpbmdCdWZmZXIgcmVzMSA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgU3RyaW5nQnVmZmVyIHJlczIgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIFN0cmluZyByZXMzID0gbmV3IFN0cmluZygpOworICAgICAgICBGaWVsZFBvc2l0aW9uIHBvczEgPSBuZXcgRmllbGRQb3NpdGlvbigwKTsKKyAgICAgICAgRmllbGRQb3NpdGlvbiBwb3MyID0gbmV3IEZpZWxkUG9zaXRpb24oMCk7CisKKyAgICAgICAgcmVzMSA9IGZyLmZvcm1hdChkLCByZXMxLCBwb3MxKTsKKyAgICAgICAgbG9nbG4oIiIgKyBkLmdldFRpbWUoKSArICIgZm9ybWF0dGVkIHRvICIgKyByZXMxKTsKKworICAgICAgICByZXMyID0gaXQuZm9ybWF0KGQsIHJlczIsIHBvczIpOworICAgICAgICBsb2dsbigiIiArIGQuZ2V0VGltZSgpICsgIiBmb3JtYXR0ZWQgdG8gIiArIHJlczIpOworCisgICAgICAgIHJlczMgPSBkZS5mb3JtYXQoZCk7CisgICAgICAgIGxvZ2xuKCIiICsgZC5nZXRUaW1lKCkgKyAiIGZvcm1hdHRlZCB0byAiICsgcmVzMyk7CisKKyAgICAgICAgLy8gPT09PT09PSBUZXN0IHBhcnNlKCkKKworICAgICAgICBsb2dsbigiVGVzdGluZyBwYXJzZSgpIik7CisKKyAgICAgICAgU3RyaW5nIHRleHQgPSBuZXcgU3RyaW5nKCIwMi8wMy83NiAyOjUwIEFNLCBDU1QiKTsKKyAgICAgICAgT2JqZWN0IHJlc3VsdDEgPSBuZXcgRGF0ZSgpOworICAgICAgICBEYXRlIHJlc3VsdDIgPSBuZXcgRGF0ZSgpOworICAgICAgICBEYXRlIHJlc3VsdDMgPSBuZXcgRGF0ZSgpOworICAgICAgICBQYXJzZVBvc2l0aW9uIHBvcyA9IG5ldyBQYXJzZVBvc2l0aW9uKDApOworICAgICAgICBQYXJzZVBvc2l0aW9uIHBvczAxID0gbmV3IFBhcnNlUG9zaXRpb24oMCk7CisKKyAgICAgICAgcmVzdWx0MSA9IGRlZi5wYXJzZU9iamVjdCh0ZXh0LCBwb3MpOworICAgICAgICBpZiAocmVzdWx0MSA9PSBudWxsKSB7CisgICAgICAgICAgICBlcnJsbigiRVJST1I6IHBhcnNlT2JqZWN0KCkgZmFpbGVkIGZvciAiICsgdGV4dCk7CisgICAgICAgIH0KKyAgICAgICAgbG9nbG4odGV4dCArICIgcGFyc2VkIGludG8gIiArICgoRGF0ZSlyZXN1bHQxKS5nZXRUaW1lKCkpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXN1bHQyID0gZGVmLnBhcnNlKHRleHQpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChQYXJzZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiRVJST1I6IHBhcnNlKCkgZmFpbGVkIik7CisgICAgICAgIH0KKyAgICAgICAgbG9nbG4odGV4dCArICIgcGFyc2VkIGludG8gIiArIHJlc3VsdDIuZ2V0VGltZSgpKTsKKworICAgICAgICByZXN1bHQzID0gZGVmLnBhcnNlKHRleHQsIHBvczAxKTsKKyAgICAgICAgaWYgKHJlc3VsdDMgPT0gbnVsbCkgeworICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBwYXJzZSgpIGZhaWxlZCBmb3IgIiArIHRleHQpOworICAgICAgICB9CisgICAgICAgIGxvZ2xuKHRleHQgKyAiIHBhcnNlZCBpbnRvICIgKyByZXN1bHQzLmdldFRpbWUoKSk7CisKKworICAgICAgICAvLyA9PT09PT09IFRlc3QgZ2V0dGVycyBhbmQgc2V0dGVycworCisgICAgICAgIGxvZ2xuKCJUZXN0aW5nIGdldHRlcnMgYW5kIHNldHRlcnMiKTsKKworICAgICAgICBmaW5hbCBMb2NhbGVbXSBsb2NhbGVzID0gRGF0ZUZvcm1hdC5nZXRBdmFpbGFibGVMb2NhbGVzKCk7CisgICAgICAgIGxvbmcgY291bnQgPSBsb2NhbGVzLmxlbmd0aDsKKyAgICAgICAgbG9nbG4oIkdvdCAiICsgY291bnQgKyAiIGxvY2FsZXMiICk7CisgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgICAgICBTdHJpbmcgbmFtZTsKKyAgICAgICAgICAgIG5hbWUgPSBsb2NhbGVzW2ldLmdldERpc3BsYXlOYW1lKCk7CisgICAgICAgICAgICBsb2dsbihuYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGZyLnNldExlbmllbnQoaXQuaXNMZW5pZW50KCkpOworICAgICAgICBpZihmci5pc0xlbmllbnQoKSAhPSBpdC5pc0xlbmllbnQoKSkgeworICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBzZXRMZW5pZW50KCkgZmFpbGVkIik7CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCBDYWxlbmRhciBjYWwgPSBkZWYuZ2V0Q2FsZW5kYXIoKTsKKyAgICAgICAgQ2FsZW5kYXIgbmV3Q2FsID0gKENhbGVuZGFyKSBjYWwuY2xvbmUoKTsKKyAgICAgICAgZGUuc2V0Q2FsZW5kYXIobmV3Q2FsKTsKKyAgICAgICAgaXQuc2V0Q2FsZW5kYXIobmV3Q2FsKTsKKyAgICAgICAgaWYoICEgZGUuZ2V0Q2FsZW5kYXIoKS5lcXVhbHMoaXQuZ2V0Q2FsZW5kYXIoKSkpIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogc2V0IENhbGVuZGFyKCkgZmFpbGVkIik7CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCBOdW1iZXJGb3JtYXQgbmYgPSBkZWYuZ2V0TnVtYmVyRm9ybWF0KCk7CisgICAgICAgIE51bWJlckZvcm1hdCBuZXdOZiA9IChOdW1iZXJGb3JtYXQpIG5mLmNsb25lKCk7CisgICAgICAgIGRlLnNldE51bWJlckZvcm1hdChuZXdOZik7CisgICAgICAgIGl0LnNldE51bWJlckZvcm1hdChuZXdOZik7CisgICAgICAgIGlmKCAhIGRlLmdldE51bWJlckZvcm1hdCgpLmVxdWFscyhpdC5nZXROdW1iZXJGb3JtYXQoKSkpIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogc2V0IE51bWJlckZvcm1hdCgpIGZhaWxlZCIpOworICAgICAgICB9CisKKyAgICAgICAgZmluYWwgVGltZVpvbmUgdHogPSBkZWYuZ2V0VGltZVpvbmUoKTsKKyAgICAgICAgVGltZVpvbmUgbmV3VHogPSAoVGltZVpvbmUpIHR6LmNsb25lKCk7CisgICAgICAgIGRlLnNldFRpbWVab25lKG5ld1R6KTsKKyAgICAgICAgaXQuc2V0VGltZVpvbmUobmV3VHopOworICAgICAgICBpZiggISBkZS5nZXRUaW1lWm9uZSgpLmVxdWFscyhpdC5nZXRUaW1lWm9uZSgpKSkgeworICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBzZXQgVGltZVpvbmUoKSBmYWlsZWQiKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vID09PT09PT0gVGVzdCBnZXRTdGF0aWNDbGFzc0lEKCkKKworLy8gICAgICAgIGxvZ2xuKCJUZXN0aW5nIGluc3RhbmNlb2YoKSIpOworCisvLyAgICAgICAgdHJ5IHsKKy8vICAgICAgICAgICAgRGF0ZUZvcm1hdCB0ZXN0ID0gbmV3IFNpbXBsZURhdGVGb3JtYXQoKTsKKworLy8gICAgICAgICAgICBpZiAoISAodGVzdCBpbnN0YW5jZW9mIFNpbXBsZURhdGVGb3JtYXQpKSB7CisvLyAgICAgICAgICAgICAgICBlcnJsbigiRVJST1I6IGluc3RhbmNlb2YgZmFpbGVkIik7CisvLyAgICAgICAgICAgIH0KKy8vICAgICAgICB9CisvLyAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisvLyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogQ291bGRuJ3QgY3JlYXRlIGEgRGF0ZUZvcm1hdCIpOworLy8gICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvZm9ybWF0L0ludGxUZXN0RGF0ZUZvcm1hdEFQSUMuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9mb3JtYXQvSW50bFRlc3REYXRlRm9ybWF0QVBJQy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjk3YWU5NDEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvZm9ybWF0L0ludGxUZXN0RGF0ZUZvcm1hdEFQSUMuamF2YQpAQCAtMCwwICsxLDE2MCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICAgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvZm9ybWF0L0ludGxUZXN0RGF0ZUZvcm1hdEFQSUMuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNToxMCAkIAorICogJFJldmlzaW9uOiAxLjIgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKKy8qKiAKKyAqIFBvcnQgRnJvbTogICBJQ1U0QyB2MS44LjEgOiBmb3JtYXQgOiBJbnRsVGVzdERhdGVGb3JtYXRBUEkKKyAqIFNvdXJjZSBGaWxlOiAkSUNVNENSb290L3NvdXJjZS90ZXN0L2ludGx0ZXN0L2R0Zm1hcHRzLmNwcAorICoqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0LmZvcm1hdDsKKworaW1wb3J0IGNvbS5pYm0uaWN1LmxhbmcuKjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0Lio7CitpbXBvcnQgY29tLmlibS5pY3UudXRpbC4qOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudGV4dC5GaWVsZFBvc2l0aW9uOworaW1wb3J0IGphdmEudGV4dC5QYXJzZVBvc2l0aW9uOworCisvKgorICogVGhpcyBpcyBhbiBBUEkgdGVzdCwgbm90IGEgdW5pdCB0ZXN0LiAgSXQgZG9lc24ndCB0ZXN0IHZlcnkgbWFueSBjYXNlcywgYW5kIGRvZXNuJ3QKKyAqIHRyeSB0byB0ZXN0IHRoZSBmdWxsIGZ1bmN0aW9uYWxpdHkuICBJdCBqdXN0IGNhbGxzIGVhY2ggZnVuY3Rpb24gaW4gdGhlIGNsYXNzIGFuZAorICogdmVyaWZpZXMgdGhhdCBpdCB3b3JrcyBvbiBhIGJhc2ljIGxldmVsLgorICovCitwdWJsaWMgY2xhc3MgSW50bFRlc3REYXRlRm9ybWF0QVBJQyBleHRlbmRzIGNvbS5pYm0uaWN1LmRldi50ZXN0LlRlc3RGbXdrIHsKKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSAgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIG5ldyBJbnRsVGVzdERhdGVGb3JtYXRBUElDKCkucnVuKGFyZ3MpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBUZXN0IGhpZGluZyBvZiBwYXJzZSgpIGFuZCBmb3JtYXQoKSBBUElzIGluIHRoZSBGb3JtYXQgaGllcmFyY2h5LgorICAgICAqIFdlIHRlc3QgdGhlIGVudGlyZSBoaWVyYXJjaHksIGV2ZW4gdGhvdWdoIHRoaXMgdGVzdCBpcyBsb2NhdGVkIGluCisgICAgICogdGhlIERhdGVGb3JtYXQgQVBJIHRlc3QuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdE5hbWVIaWRpbmcoKSB7CisgICAgCisgICAgICAgIC8vIE4uQi46IFRoaXMgdGVzdCBwYXNzZXMgaWYgaXQgQ09NUElMRVMsIHNpbmNlIGl0J3MgYSB0ZXN0IG9mCisgICAgICAgIC8vIGNvbXBpbGUtdGltZSBuYW1lIGhpZGluZy4KKyAgICAKKyAgICAgICAgRGF0ZSBkYXRlT2JqID0gbmV3IERhdGUoMCk7CisgICAgICAgIE51bWJlciBudW1PYmogPSBuZXcgRG91YmxlKDMuMTQxNTkyNjUzNTg5NzkzMjM4NDYyNjQzMzgzMjc5NSk7CisgICAgICAgIFN0cmluZ0J1ZmZlciBzdHJCdWZmZXIgPSBuZXcgU3RyaW5nQnVmZmVyKCIiKTsKKyAgICAgICAgU3RyaW5nIHN0cjsKKyAgICAgICAgRmllbGRQb3NpdGlvbiBmcG9zID0gbmV3IEZpZWxkUG9zaXRpb24oMCk7CisgICAgICAgIFBhcnNlUG9zaXRpb24gcHBvcyA9IG5ldyBQYXJzZVBvc2l0aW9uKDApOworICAgIAorICAgICAgICAvLyBEYXRlRm9ybWF0IGNhbGxpbmcgRm9ybWF0IEFQSQorICAgICAgICB7CisgICAgICAgICAgICBsb2dsbigiRGF0ZUZvcm1hdCIpOworICAgICAgICAgICAgRGF0ZUZvcm1hdCBkYXRlRm10ID0gRGF0ZUZvcm1hdC5nZXRJbnN0YW5jZSgpOworICAgICAgICAgICAgaWYgKGRhdGVGbXQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHN0ciA9IGRhdGVGbXQuZm9ybWF0KGRhdGVPYmopOworICAgICAgICAgICAgICAgIHN0ckJ1ZmZlciA9IGRhdGVGbXQuZm9ybWF0KGRhdGVPYmosIHN0ckJ1ZmZlciwgZnBvcyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBDYW4ndCBjcmVhdGUgRGF0ZUZvcm1hdCIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgCisgICAgICAgIC8vIFNpbXBsZURhdGVGb3JtYXQgY2FsbGluZyBGb3JtYXQgJiBEYXRlRm9ybWF0IEFQSQorICAgICAgICB7CisgICAgICAgICAgICBsb2dsbigiU2ltcGxlRGF0ZUZvcm1hdCIpOworICAgICAgICAgICAgU2ltcGxlRGF0ZUZvcm1hdCBzZGYgPSBuZXcgU2ltcGxlRGF0ZUZvcm1hdCgpOworICAgICAgICAgICAgLy8gRm9ybWF0IEFQSQorICAgICAgICAgICAgc3RyID0gc2RmLmZvcm1hdChkYXRlT2JqKTsKKyAgICAgICAgICAgIHN0ckJ1ZmZlciA9IHNkZi5mb3JtYXQoZGF0ZU9iaiwgc3RyQnVmZmVyLCBmcG9zKTsKKyAgICAgICAgICAgIC8vIERhdGVGb3JtYXQgQVBJCisgICAgICAgICAgICBzdHJCdWZmZXIgPSBzZGYuZm9ybWF0KG5ldyBEYXRlKDApLCBzdHJCdWZmZXIsIGZwb3MpOworICAgICAgICAgICAgc3RyID0gc2RmLmZvcm1hdChuZXcgRGF0ZSgwKSk7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHNkZi5wYXJzZShzdHIpOworICAgICAgICAgICAgICAgIHNkZi5wYXJzZShzdHIsIHBwb3MpOworICAgICAgICAgICAgfSBjYXRjaCAoamF2YS50ZXh0LlBhcnNlRXhjZXB0aW9uIHBlKSB7CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHBlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIAorICAgICAgICAvLyBOdW1iZXJGb3JtYXQgY2FsbGluZyBGb3JtYXQgQVBJCisgICAgICAgIHsKKyAgICAgICAgICAgIGxvZ2xuKCJOdW1iZXJGb3JtYXQiKTsKKyAgICAgICAgICAgIE51bWJlckZvcm1hdCBmbXQgPSBOdW1iZXJGb3JtYXQuZ2V0SW5zdGFuY2UoKTsKKyAgICAgICAgICAgIGlmIChmbXQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHN0ciA9IGZtdC5mb3JtYXQobnVtT2JqKTsKKyAgICAgICAgICAgICAgICBzdHJCdWZmZXIgPSBmbXQuZm9ybWF0KG51bU9iaiwgc3RyQnVmZmVyLCBmcG9zKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6IENhbid0IGNyZWF0ZSBOdW1iZXJGb3JtYXQiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIAorICAgICAgICAvLyBEZWNpbWFsRm9ybWF0IGNhbGxpbmcgRm9ybWF0ICYgTnVtYmVyRm9ybWF0IEFQSQorICAgICAgICB7CisgICAgICAgICAgICBsb2dsbigiRGVjaW1hbEZvcm1hdCIpOworICAgICAgICAgICAgRGVjaW1hbEZvcm1hdCBmbXQgPSBuZXcgRGVjaW1hbEZvcm1hdCgpOworICAgICAgICAgICAgLy8gRm9ybWF0IEFQSQorICAgICAgICAgICAgc3RyID0gZm10LmZvcm1hdChudW1PYmopOworICAgICAgICAgICAgc3RyQnVmZmVyID0gZm10LmZvcm1hdChudW1PYmosIHN0ckJ1ZmZlciwgZnBvcyk7CisgICAgICAgICAgICAvLyBOdW1iZXJGb3JtYXQgQVBJCisgICAgICAgICAgICBzdHIgPSBmbXQuZm9ybWF0KDIuNzE4MjgpOworICAgICAgICAgICAgc3RyID0gZm10LmZvcm1hdCgxMjM0NTY3KTsKKyAgICAgICAgICAgIHN0ckJ1ZmZlciA9IGZtdC5mb3JtYXQoMS40MTQyMSwgc3RyQnVmZmVyLCBmcG9zKTsKKyAgICAgICAgICAgIHN0ckJ1ZmZlciA9IGZtdC5mb3JtYXQoOTg3NjU0Mywgc3RyQnVmZmVyLCBmcG9zKTsKKyAgICAgICAgICAgIE51bWJlciBvYmogPSBmbXQucGFyc2Uoc3RyLCBwcG9zKTsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgb2JqID0gZm10LnBhcnNlKHN0cik7CisgICAgICAgICAgICB9IGNhdGNoIChqYXZhLnRleHQuUGFyc2VFeGNlcHRpb24gcGUpIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocGUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvL0lDVTRKIGhhdmUgbm90IHRoZSBjbGFzc2VzIENob2ljZUZvcm1hdCBhbmQgTWVzc2FnZUZvcm1hdAorICAgICAgICAvKgorICAgICAgICAvLyBDaG9pY2VGb3JtYXQgY2FsbGluZyBGb3JtYXQgJiBOdW1iZXJGb3JtYXQgQVBJCisgICAgICAgIHsKKyAgICAgICAgICAgIGxvZ2xuKCJDaG9pY2VGb3JtYXQiKTsKKyAgICAgICAgICAgIENob2ljZUZvcm1hdCBmbXQgPSBuZXcgQ2hvaWNlRm9ybWF0KCIwI2Zvb3wxI2Zvb3N8MiNmb29zIik7CisgICAgICAgICAgICAvLyBGb3JtYXQgQVBJCisgICAgICAgICAgICBzdHIgPSBmbXQuZm9ybWF0KG51bU9iaik7CisgICAgICAgICAgICBzdHJCdWZmZXIgPSBmbXQuZm9ybWF0KG51bU9iaiwgc3RyQnVmZmVyLCBmcG9zKTsKKyAgICAgICAgICAgIC8vIE51bWJlckZvcm1hdCBBUEkKKyAgICAgICAgICAgIHN0ciA9IGZtdC5mb3JtYXQoMi43MTgyOCk7CisgICAgICAgICAgICBzdHIgPSBmbXQuZm9ybWF0KDEyMzQ1NjcpOworICAgICAgICAgICAgc3RyQnVmZmVyID0gZm10LmZvcm1hdCgxLjQxNDIxLCBzdHJCdWZmZXIsIGZwb3MpOworICAgICAgICAgICAgc3RyQnVmZmVyID0gZm10LmZvcm1hdCg5ODc2NTQzLCBzdHJCdWZmZXIsIGZwb3MpOworICAgICAgICAgICAgTnVtYmVyIG9iaiA9IGZtdC5wYXJzZShzdHIsIHBwb3MpOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBvYmogPSBmbXQucGFyc2Uoc3RyKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKGphdmEudGV4dC5QYXJzZUV4Y2VwdGlvbiBwZSkgeworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihwZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgCisgICAgICAgIC8vIE1lc3NhZ2VGb3JtYXQgY2FsbGluZyBGb3JtYXQgQVBJCisgICAgICAgIHsKKyAgICAgICAgICAgIGxvZ2xuKCJNZXNzYWdlRm9ybWF0Iik7CisgICAgICAgICAgICBNZXNzYWdlRm9ybWF0IGZtdCA9IG5ldyBNZXNzYWdlRm9ybWF0KCIiKTsKKyAgICAgICAgICAgIC8vIEZvcm1hdCBBUEkKKyAgICAgICAgICAgIC8vIFdlIHVzZSBkYXRlT2JqLCB3aGljaCBNZXNzYWdlRm9ybWF0IHNob3VsZCByZWplY3QuCisgICAgICAgICAgICAvLyBXZSdyZSB0ZXN0aW5nIG5hbWUgaGlkaW5nLCBub3QgdGhlIGZvcm1hdCBtZXRob2QuCisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHN0ciA9IGZtdC5mb3JtYXQoZGF0ZU9iaik7CisgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIC8vZS5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgc3RyQnVmZmVyID0gZm10LmZvcm1hdChkYXRlT2JqLCBzdHJCdWZmZXIsIGZwb3MpOworICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAvL2UucHJpbnRTdGFja1RyYWNlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgKi8KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2Zvcm1hdC9JbnRsVGVzdERhdGVGb3JtYXRTeW1ib2xzLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvZm9ybWF0L0ludGxUZXN0RGF0ZUZvcm1hdFN5bWJvbHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wYTEzODljCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2Zvcm1hdC9JbnRsVGVzdERhdGVGb3JtYXRTeW1ib2xzLmphdmEKQEAgLTAsMCArMSwxOTUgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2Zvcm1hdC9JbnRsVGVzdERhdGVGb3JtYXRTeW1ib2xzLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDgvMDEgMjA6Mjc6MjEgJCAKKyAqICRSZXZpc2lvbjogMS40ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKi8KKworLyoqIAorICogUG9ydCBGcm9tOiAgIEpESyAxLjRiMSA6IGphdmEudGV4dC5Gb3JtYXQuSW50bFRlc3REYXRlRm9ybWF0U3ltYm9scworICogU291cmNlIEZpbGU6IGphdmEvdGV4dC9mb3JtYXQvSW50bFRlc3REYXRlRm9ybWF0U3ltYm9scy5qYXZhCisgKiovCisgCisvKgorICAgIEB0ZXN0IDEuNCA5OC8wMy8wNgorICAgIEBzdW1tYXJ5IHRlc3QgSW50ZXJuYXRpb25hbCBEYXRlIEZvcm1hdCBTeW1ib2xzCisqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAgIENvcHlyaWdodCAoQykgMTk5Ni0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqICAgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudGVzdC5mb3JtYXQ7CisKK2ltcG9ydCBjb20uaWJtLmljdS5sYW5nLio7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuKjsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworCitwdWJsaWMgY2xhc3MgSW50bFRlc3REYXRlRm9ybWF0U3ltYm9scyBleHRlbmRzIGNvbS5pYm0uaWN1LmRldi50ZXN0LlRlc3RGbXdrCit7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIG5ldyBJbnRsVGVzdERhdGVGb3JtYXRTeW1ib2xzKCkucnVuKGFyZ3MpOworICAgIH0KKworICAgIC8vIFRlc3QgZ2V0TW9udGhzCisgICAgcHVibGljIHZvaWQgVGVzdEdldE1vbnRocygpCisgICAgeworICAgICAgICBmaW5hbCBTdHJpbmdbXSBtb250aDsKKyAgICAgICAgRGF0ZUZvcm1hdFN5bWJvbHMgc3ltYm9sOworCisgICAgICAgIHN5bWJvbD1uZXcgRGF0ZUZvcm1hdFN5bWJvbHMoTG9jYWxlLmdldERlZmF1bHQoKSk7CisKKyAgICAgICAgbW9udGg9c3ltYm9sLmdldE1vbnRocygpOworICAgICAgICBpbnQgY250ID0gbW9udGgubGVuZ3RoOworCisgICAgICAgIGxvZ2xuKCJzaXplID0gIiArIGNudCk7CisKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPGNudDsgKytpKQorICAgICAgICB7CisgICAgICAgICAgICBsb2dsbihtb250aFtpXSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBUZXN0IHRoZSBBUEkgb2YgRGF0ZUZvcm1hdFN5bWJvbHM7IHByaW1hcmlseSBhIHNpbXBsZSBnZXQvc2V0IHNldC4KKyAgICBwdWJsaWMgdm9pZCBUZXN0U3ltYm9scygpCisgICAgeworICAgICAgICBEYXRlRm9ybWF0U3ltYm9scyBmciA9IG5ldyBEYXRlRm9ybWF0U3ltYm9scyhMb2NhbGUuRlJFTkNIKTsKKworICAgICAgICBEYXRlRm9ybWF0U3ltYm9scyBlbiA9IG5ldyBEYXRlRm9ybWF0U3ltYm9scyhMb2NhbGUuRU5HTElTSCk7CisKKyAgICAgICAgaWYoZW4uZXF1YWxzKGZyKSkgeworICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBFbmdsaXNoIERhdGVGb3JtYXRTeW1ib2xzIGVxdWFsIHRvIEZyZW5jaCIpOworICAgICAgICB9CisKKyAgICAgICAgLy8ganVzdCBkbyBzb21lIFZFUlkgYmFzaWMgdGVzdHMgdG8gbWFrZSBzdXJlIHRoYXQgZ2V0L3NldCB3b3JrCisKKyAgICAgICAgbG9uZyBjb3VudDsKKyAgICAgICAgZmluYWwgU3RyaW5nW10gZXJhcyA9IGVuLmdldEVyYXMoKTsKKyAgICAgICAgZnIuc2V0RXJhcyhlcmFzKTsKKyAgICAgICAgZmluYWwgU3RyaW5nW10gZXJhczEgPSBmci5nZXRFcmFzKCk7CisgICAgICAgIGNvdW50ID0gZXJhcy5sZW5ndGg7CisgICAgICAgIGlmKCBjb3VudCAhPSBlcmFzMS5sZW5ndGgpIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogc2V0RXJhcygpIGZhaWxlZCAoZGlmZmVyZW50IHNpemUgYXJyYXkpIik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAgICAgICAgICAgICAgIGlmKCEgZXJhc1tpXS5lcXVhbHMoZXJhczFbaV0pKSB7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJFUlJPUjogc2V0RXJhcygpIGZhaWxlZCAoZGlmZmVyZW50IHN0cmluZyB2YWx1ZXMpIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKworICAgICAgICBmaW5hbCBTdHJpbmdbXSBtb250aHMgPSBlbi5nZXRNb250aHMoKTsKKyAgICAgICAgZnIuc2V0TW9udGhzKG1vbnRocyk7CisgICAgICAgIGZpbmFsIFN0cmluZ1tdIG1vbnRoczEgPSBmci5nZXRNb250aHMoKTsKKyAgICAgICAgY291bnQgPSBtb250aHMubGVuZ3RoOworICAgICAgICBpZiggY291bnQgIT0gbW9udGhzMS5sZW5ndGgpIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogc2V0TW9udGhzKCkgZmFpbGVkIChkaWZmZXJlbnQgc2l6ZSBhcnJheSkiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYoISBtb250aHNbaV0uZXF1YWxzKG1vbnRoczFbaV0pKSB7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJFUlJPUjogc2V0TW9udGhzKCkgZmFpbGVkIChkaWZmZXJlbnQgc3RyaW5nIHZhbHVlcykiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCBTdHJpbmdbXSBzaG9ydE1vbnRocyA9IGVuLmdldFNob3J0TW9udGhzKCk7CisgICAgICAgIGZyLnNldFNob3J0TW9udGhzKHNob3J0TW9udGhzKTsKKyAgICAgICAgZmluYWwgU3RyaW5nW10gc2hvcnRNb250aHMxID0gZnIuZ2V0U2hvcnRNb250aHMoKTsKKyAgICAgICAgY291bnQgPSBzaG9ydE1vbnRocy5sZW5ndGg7CisgICAgICAgIGlmKCBjb3VudCAhPSBzaG9ydE1vbnRoczEubGVuZ3RoKSB7CisgICAgICAgICAgICBlcnJsbigiRVJST1I6IHNldFNob3J0TW9udGhzKCkgZmFpbGVkIChkaWZmZXJlbnQgc2l6ZSBhcnJheSkiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYoISBzaG9ydE1vbnRoc1tpXS5lcXVhbHMoc2hvcnRNb250aHMxW2ldKSkgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigiRVJST1I6IHNldFNob3J0TW9udGhzKCkgZmFpbGVkIChkaWZmZXJlbnQgc3RyaW5nIHZhbHVlcykiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCBTdHJpbmdbXSB3ZWVrZGF5cyA9IGVuLmdldFdlZWtkYXlzKCk7CisgICAgICAgIGZyLnNldFdlZWtkYXlzKHdlZWtkYXlzKTsKKyAgICAgICAgZmluYWwgU3RyaW5nW10gd2Vla2RheXMxID0gZnIuZ2V0V2Vla2RheXMoKTsKKyAgICAgICAgY291bnQgPSB3ZWVrZGF5cy5sZW5ndGg7CisgICAgICAgIGlmKCBjb3VudCAhPSB3ZWVrZGF5czEubGVuZ3RoKSB7CisgICAgICAgICAgICBlcnJsbigiRVJST1I6IHNldFdlZWtkYXlzKCkgZmFpbGVkIChkaWZmZXJlbnQgc2l6ZSBhcnJheSkiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYoISB3ZWVrZGF5c1tpXS5lcXVhbHMod2Vla2RheXMxW2ldKSkgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigiRVJST1I6IHNldFdlZWtkYXlzKCkgZmFpbGVkIChkaWZmZXJlbnQgc3RyaW5nIHZhbHVlcykiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCBTdHJpbmdbXSBzaG9ydFdlZWtkYXlzID0gZW4uZ2V0U2hvcnRXZWVrZGF5cygpOworICAgICAgICBmci5zZXRTaG9ydFdlZWtkYXlzKHNob3J0V2Vla2RheXMpOworICAgICAgICBmaW5hbCBTdHJpbmdbXSBzaG9ydFdlZWtkYXlzMSA9IGZyLmdldFNob3J0V2Vla2RheXMoKTsKKyAgICAgICAgY291bnQgPSBzaG9ydFdlZWtkYXlzLmxlbmd0aDsKKyAgICAgICAgaWYoIGNvdW50ICE9IHNob3J0V2Vla2RheXMxLmxlbmd0aCkgeworICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBzZXRTaG9ydFdlZWtkYXlzKCkgZmFpbGVkIChkaWZmZXJlbnQgc2l6ZSBhcnJheSkiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYoISBzaG9ydFdlZWtkYXlzW2ldLmVxdWFscyhzaG9ydFdlZWtkYXlzMVtpXSkpIHsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBzZXRTaG9ydFdlZWtkYXlzKCkgZmFpbGVkIChkaWZmZXJlbnQgc3RyaW5nIHZhbHVlcykiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCBTdHJpbmdbXSBhbXBtcyA9IGVuLmdldEFtUG1TdHJpbmdzKCk7CisgICAgICAgIGZyLnNldEFtUG1TdHJpbmdzKGFtcG1zKTsKKyAgICAgICAgZmluYWwgU3RyaW5nW10gYW1wbXMxID0gZnIuZ2V0QW1QbVN0cmluZ3MoKTsKKyAgICAgICAgY291bnQgPSBhbXBtcy5sZW5ndGg7CisgICAgICAgIGlmKCBjb3VudCAhPSBhbXBtczEubGVuZ3RoKSB7CisgICAgICAgICAgICBlcnJsbigiRVJST1I6IHNldEFtUG1TdHJpbmdzKCkgZmFpbGVkIChkaWZmZXJlbnQgc2l6ZSBhcnJheSkiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYoISBhbXBtc1tpXS5lcXVhbHMoYW1wbXMxW2ldKSkgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigiRVJST1I6IHNldEFtUG1TdHJpbmdzKCkgZmFpbGVkIChkaWZmZXJlbnQgc3RyaW5nIHZhbHVlcykiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBsb25nIHJvd0NvdW50ID0gMCwgY29sdW1uQ291bnQgPSAwOworICAgICAgICBmaW5hbCBTdHJpbmdbXVtdIHN0cmluZ3MgPSBlbi5nZXRab25lU3RyaW5ncygpOworICAgICAgICBmci5zZXRab25lU3RyaW5ncyhzdHJpbmdzKTsKKyAgICAgICAgZmluYWwgU3RyaW5nW11bXSBzdHJpbmdzMSA9IGZyLmdldFpvbmVTdHJpbmdzKCk7CisgICAgICAgIHJvd0NvdW50ID0gc3RyaW5ncy5sZW5ndGg7CisgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCByb3dDb3VudDsgaSsrKSB7CisgICAgICAgICAgICBjb2x1bW5Db3VudCA9IHN0cmluZ3NbaV0ubGVuZ3RoOworICAgICAgICAgICAgZm9yKGludCBqID0gMDsgaiA8IGNvbHVtbkNvdW50OyBqKyspIHsKKyAgICAgICAgICAgICAgICBpZiggc3RyaW5nc1tpXVtqXSAhPSBzdHJpbmdzMVtpXVtqXSApIHsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBzZXRab25lU3RyaW5ncygpIGZhaWxlZCIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisvLyAgICAgICAgZmluYWwgU3RyaW5nIHBhdHRlcm4gPSBEYXRlRm9ybWF0U3ltYm9scy5nZXRQYXR0ZXJuQ2hhcnMoKTsKKworICAgICAgICBTdHJpbmcgbG9jYWxQYXR0ZXJuOyAvLyBwYXQxLCBwYXQyOyAvL1RoZSB2YXJpYWJsZSBpcyBuZXZlciB1c2VkCisgICAgICAgIGxvY2FsUGF0dGVybiA9IGVuLmdldExvY2FsUGF0dGVybkNoYXJzKCk7CisgICAgICAgIGZyLnNldExvY2FsUGF0dGVybkNoYXJzKGxvY2FsUGF0dGVybik7CisgICAgICAgIGlmKCEgZW4uZ2V0TG9jYWxQYXR0ZXJuQ2hhcnMoKS5lcXVhbHMoZnIuZ2V0TG9jYWxQYXR0ZXJuQ2hhcnMoKSkpIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogc2V0TG9jYWxQYXR0ZXJuQ2hhcnMoKSBmYWlsZWQiKTsKKyAgICAgICAgfQorCisKKyAgICAgICAgLy9EYXRlRm9ybWF0U3ltYm9scyBmb28gPSBuZXcgRGF0ZUZvcm1hdFN5bWJvbHMoKTsgLy9UaGUgdmFyaWFibGUgaXMgbmV2ZXIgdXNlZAorCisgICAgICAgIGVuID0gKERhdGVGb3JtYXRTeW1ib2xzKSBmci5jbG9uZSgpOworCisgICAgICAgIGlmKCEgZW4uZXF1YWxzKGZyKSkgeworICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBDbG9uZSBmYWlsZWQiKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9mb3JtYXQvSW50bFRlc3REZWNpbWFsRm9ybWF0QVBJLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvZm9ybWF0L0ludGxUZXN0RGVjaW1hbEZvcm1hdEFQSS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmFmYTI3MzAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvZm9ybWF0L0ludGxUZXN0RGVjaW1hbEZvcm1hdEFQSS5qYXZhCkBAIC0wLDAgKzEsMjMyIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9mb3JtYXQvSW50bFRlc3REZWNpbWFsRm9ybWF0QVBJLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDgvMDEgMjA6Mjc6MjEgJCAKKyAqICRSZXZpc2lvbjogMS4zICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKi8KKworLyoqIAorICogUG9ydCBGcm9tOiAgIEpESyAxLjRiMSA6IGphdmEudGV4dC5Gb3JtYXQuSW50bFRlc3REZWNpbWFsRm9ybWF0QVBJCisgKiBTb3VyY2UgRmlsZTogamF2YS90ZXh0L2Zvcm1hdC9JbnRsVGVzdERlY2ltYWxGb3JtYXRBUEkuamF2YQorICoqLworIAorLyoKKyAgICBAdGVzdCAxLjQgOTgvMDMvMDYKKyAgICBAc3VtbWFyeSB0ZXN0IEludGVybmF0aW9uYWwgRGVjaW1hbCBGb3JtYXQgQVBJCisqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAgIENvcHlyaWdodCAoQykgMTk5Ni0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqICAgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3QuZm9ybWF0OworCitpbXBvcnQgY29tLmlibS5pY3UubGFuZy4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuKjsKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLio7CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKK2ltcG9ydCBqYXZhLnRleHQuUGFyc2VQb3NpdGlvbjsKK2ltcG9ydCBqYXZhLnRleHQuRm9ybWF0OworaW1wb3J0IGphdmEudGV4dC5GaWVsZFBvc2l0aW9uOworCitwdWJsaWMgY2xhc3MgSW50bFRlc3REZWNpbWFsRm9ybWF0QVBJIGV4dGVuZHMgY29tLmlibS5pY3UuZGV2LnRlc3QuVGVzdEZtd2sKK3sKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSAgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIG5ldyBJbnRsVGVzdERlY2ltYWxGb3JtYXRBUEkoKS5ydW4oYXJncyk7CisgICAgfQorCisgICAgLy8gVGhpcyB0ZXN0IGNoZWNrcyB2YXJpb3VzIGdlbmVyaWMgQVBJIG1ldGhvZHMgaW4gRGVjaW1hbEZvcm1hdCB0byBhY2hpZXZlIDEwMCUgQVBJIGNvdmVyYWdlLgorICAgIHB1YmxpYyB2b2lkIFRlc3RBUEkoKQorICAgIHsKKyAgICAgICAgbG9nbG4oIkRlY2ltYWxGb3JtYXQgQVBJIHRlc3QtLS0iKTsgbG9nbG4oIiIpOworICAgICAgICBMb2NhbGUuc2V0RGVmYXVsdChMb2NhbGUuRU5HTElTSCk7CisKKyAgICAgICAgLy8gPT09PT09PSBUZXN0IGNvbnN0cnVjdG9ycworCisgICAgICAgIGxvZ2xuKCJUZXN0aW5nIERlY2ltYWxGb3JtYXQgY29uc3RydWN0b3JzIik7CisKKyAgICAgICAgRGVjaW1hbEZvcm1hdCBkZWYgPSBuZXcgRGVjaW1hbEZvcm1hdCgpOworCisgICAgICAgIGZpbmFsIFN0cmluZyBwYXR0ZXJuID0gbmV3IFN0cmluZygiIywjIzAuIyBGRiIpOworICAgICAgICBEZWNpbWFsRm9ybWF0IHBhdCA9IG51bGw7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBwYXQgPSBuZXcgRGVjaW1hbEZvcm1hdChwYXR0ZXJuKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogQ291bGQgbm90IGNyZWF0ZSBEZWNpbWFsRm9ybWF0IChwYXR0ZXJuKSIpOworICAgICAgICB9CisKKyAgICAgICAgRGVjaW1hbEZvcm1hdFN5bWJvbHMgc3ltYm9scyA9IG5ldyBEZWNpbWFsRm9ybWF0U3ltYm9scyhMb2NhbGUuRlJFTkNIKTsKKworICAgICAgICBEZWNpbWFsRm9ybWF0IGN1c3QxID0gbmV3IERlY2ltYWxGb3JtYXQocGF0dGVybiwgc3ltYm9scyk7CisKKyAgICAgICAgLy8gPT09PT09PSBUZXN0IGNsb25lKCksIGFzc2lnbm1lbnQsIGFuZCBlcXVhbGl0eQorCisgICAgICAgIGxvZ2xuKCJUZXN0aW5nIGNsb25lKCkgYW5kIGVxdWFsaXR5IG9wZXJhdG9ycyIpOworCisgICAgICAgIEZvcm1hdCBjbG9uZSA9IChGb3JtYXQpIGRlZi5jbG9uZSgpOworICAgICAgICBpZiggISBkZWYuZXF1YWxzKGNsb25lKSkgeworICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBDbG9uZSgpIGZhaWxlZCIpOworICAgICAgICB9CisKKyAgICAgICAgLy8gPT09PT09PSBUZXN0IHZhcmlvdXMgZm9ybWF0KCkgbWV0aG9kcworCisgICAgICAgIGxvZ2xuKCJUZXN0aW5nIHZhcmlvdXMgZm9ybWF0KCkgbWV0aG9kcyIpOworCisvLyAgICAgICAgZmluYWwgZG91YmxlIGQgPSAtMTA0NTYuMDAzNzsgLy8gdGhpcyBhcHBlYXJzIGFzIC0xMDQ1Ni4wMDM3MDAwMDAwMDEgb24gTlQKKy8vICAgICAgICBmaW5hbCBkb3VibGUgZCA9IC0xLjA0NTYwMDM3ZS00OyAvLyB0aGlzIGFwcGVhcnMgYXMgLTEuMDQ1NjAwMzcwMDAwMDAwMkUtNCBvbiBOVAorICAgICAgICBmaW5hbCBkb3VibGUgZCA9IC0xMDQ1Ni4wMDM3MDAwMDAwMDAwMDsgLy8gdGhpcyB3b3JrcyEKKyAgICAgICAgZmluYWwgbG9uZyBsID0gMTAwMDAwMDAwOworICAgICAgICBsb2dsbigiIiArIGQgKyAiIGlzIHRoZSBkb3VibGUgdmFsdWUiKTsKKworICAgICAgICBTdHJpbmdCdWZmZXIgcmVzMSA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgU3RyaW5nQnVmZmVyIHJlczIgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIFN0cmluZ0J1ZmZlciByZXMzID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBTdHJpbmdCdWZmZXIgcmVzNCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgRmllbGRQb3NpdGlvbiBwb3MxID0gbmV3IEZpZWxkUG9zaXRpb24oMCk7CisgICAgICAgIEZpZWxkUG9zaXRpb24gcG9zMiA9IG5ldyBGaWVsZFBvc2l0aW9uKDApOworICAgICAgICBGaWVsZFBvc2l0aW9uIHBvczMgPSBuZXcgRmllbGRQb3NpdGlvbigwKTsKKyAgICAgICAgRmllbGRQb3NpdGlvbiBwb3M0ID0gbmV3IEZpZWxkUG9zaXRpb24oMCk7CisKKyAgICAgICAgcmVzMSA9IGRlZi5mb3JtYXQoZCwgcmVzMSwgcG9zMSk7CisgICAgICAgIGxvZ2xuKCIiICsgZCArICIgZm9ybWF0dGVkIHRvICIgKyByZXMxKTsKKworICAgICAgICByZXMyID0gcGF0LmZvcm1hdChsLCByZXMyLCBwb3MyKTsKKyAgICAgICAgbG9nbG4oIiIgKyBsICsgIiBmb3JtYXR0ZWQgdG8gIiArIHJlczIpOworCisgICAgICAgIHJlczMgPSBjdXN0MS5mb3JtYXQoZCwgcmVzMywgcG9zMyk7CisgICAgICAgIGxvZ2xuKCIiICsgZCArICIgZm9ybWF0dGVkIHRvICIgKyByZXMzKTsKKworICAgICAgICByZXM0ID0gY3VzdDEuZm9ybWF0KGwsIHJlczQsIHBvczQpOworICAgICAgICBsb2dsbigiIiArIGwgKyAiIGZvcm1hdHRlZCB0byAiICsgcmVzNCk7CisKKyAgICAgICAgLy8gPT09PT09PSBUZXN0IHBhcnNlKCkKKworICAgICAgICBsb2dsbigiVGVzdGluZyBwYXJzZSgpIik7CisKKyAgICAgICAgU3RyaW5nIHRleHQgPSBuZXcgU3RyaW5nKCItMTAsNDU2LjAwMzciKTsKKyAgICAgICAgUGFyc2VQb3NpdGlvbiBwb3MgPSBuZXcgUGFyc2VQb3NpdGlvbigwKTsKKyAgICAgICAgU3RyaW5nIHBhdHQgPSBuZXcgU3RyaW5nKCIjLCMjMC4jIik7CisgICAgICAgIHBhdC5hcHBseVBhdHRlcm4ocGF0dCk7CisgICAgICAgIGRvdWJsZSBkMiA9IHBhdC5wYXJzZSh0ZXh0LCBwb3MpLmRvdWJsZVZhbHVlKCk7CisgICAgICAgIGlmKGQyICE9IGQpIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogUm91bmR0cmlwIGZhaWxlZCAodmlhIHBhcnNlKCIgKyBkMiArICIgIT0gIiArIGQgKyAiKSkgZm9yICIgKyB0ZXh0KTsKKyAgICAgICAgfQorICAgICAgICBsb2dsbih0ZXh0ICsgIiBwYXJzZWQgaW50byAiICsgKGxvbmcpIGQyKTsKKworICAgICAgICAvLyA9PT09PT09IFRlc3QgZ2V0dGVycyBhbmQgc2V0dGVycworCisgICAgICAgIGxvZ2xuKCJUZXN0aW5nIGdldHRlcnMgYW5kIHNldHRlcnMiKTsKKworICAgICAgICBmaW5hbCBEZWNpbWFsRm9ybWF0U3ltYm9scyBzeW1zID0gcGF0LmdldERlY2ltYWxGb3JtYXRTeW1ib2xzKCk7CisgICAgICAgIGRlZi5zZXREZWNpbWFsRm9ybWF0U3ltYm9scyhzeW1zKTsKKyAgICAgICAgaWYoICEgcGF0LmdldERlY2ltYWxGb3JtYXRTeW1ib2xzKCkuZXF1YWxzKGRlZi5nZXREZWNpbWFsRm9ybWF0U3ltYm9scygpKSkgeworICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBzZXQgRGVjaW1hbEZvcm1hdFN5bWJvbHMoKSBmYWlsZWQiKTsKKyAgICAgICAgfQorCisgICAgICAgIFN0cmluZyBwb3NQcmVmaXg7CisgICAgICAgIHBhdC5zZXRQb3NpdGl2ZVByZWZpeCgiKyIpOworICAgICAgICBwb3NQcmVmaXggPSBwYXQuZ2V0UG9zaXRpdmVQcmVmaXgoKTsKKyAgICAgICAgbG9nbG4oIlBvc2l0aXZlIHByZWZpeCAoc2hvdWxkIGJlICspOiAiICsgcG9zUHJlZml4KTsKKyAgICAgICAgaWYocG9zUHJlZml4ICE9ICIrIikgeworICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBzZXRQb3NpdGl2ZVByZWZpeCgpIGZhaWxlZCIpOworICAgICAgICB9CisKKyAgICAgICAgU3RyaW5nIG5lZ1ByZWZpeDsKKyAgICAgICAgcGF0LnNldE5lZ2F0aXZlUHJlZml4KCItIik7CisgICAgICAgIG5lZ1ByZWZpeCA9IHBhdC5nZXROZWdhdGl2ZVByZWZpeCgpOworICAgICAgICBsb2dsbigiTmVnYXRpdmUgcHJlZml4IChzaG91bGQgYmUgLSk6ICIgKyBuZWdQcmVmaXgpOworICAgICAgICBpZihuZWdQcmVmaXggIT0gIi0iKSB7CisgICAgICAgICAgICBlcnJsbigiRVJST1I6IHNldE5lZ2F0aXZlUHJlZml4KCkgZmFpbGVkIik7CisgICAgICAgIH0KKworICAgICAgICBTdHJpbmcgcG9zU3VmZml4OworICAgICAgICBwYXQuc2V0UG9zaXRpdmVTdWZmaXgoIl8iKTsKKyAgICAgICAgcG9zU3VmZml4ID0gcGF0LmdldFBvc2l0aXZlU3VmZml4KCk7CisgICAgICAgIGxvZ2xuKCJQb3NpdGl2ZSBzdWZmaXggKHNob3VsZCBiZSBfKTogIiArIHBvc1N1ZmZpeCk7CisgICAgICAgIGlmKHBvc1N1ZmZpeCAhPSAiXyIpIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogc2V0UG9zaXRpdmVTdWZmaXgoKSBmYWlsZWQiKTsKKyAgICAgICAgfQorCisgICAgICAgIFN0cmluZyBuZWdTdWZmaXg7CisgICAgICAgIHBhdC5zZXROZWdhdGl2ZVN1ZmZpeCgifiIpOworICAgICAgICBuZWdTdWZmaXggPSBwYXQuZ2V0TmVnYXRpdmVTdWZmaXgoKTsKKyAgICAgICAgbG9nbG4oIk5lZ2F0aXZlIHN1ZmZpeCAoc2hvdWxkIGJlIH4pOiAiICsgbmVnU3VmZml4KTsKKyAgICAgICAgaWYobmVnU3VmZml4ICE9ICJ+IikgeworICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBzZXROZWdhdGl2ZVN1ZmZpeCgpIGZhaWxlZCIpOworICAgICAgICB9CisKKyAgICAgICAgbG9uZyBtdWx0aXBsaWVyID0gMDsKKyAgICAgICAgcGF0LnNldE11bHRpcGxpZXIoOCk7CisgICAgICAgIG11bHRpcGxpZXIgPSBwYXQuZ2V0TXVsdGlwbGllcigpOworICAgICAgICBsb2dsbigiTXVsdGlwbGllciAoc2hvdWxkIGJlIDgpOiAiICsgbXVsdGlwbGllcik7CisgICAgICAgIGlmKG11bHRpcGxpZXIgIT0gOCkgeworICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBzZXRNdWx0aXBsaWVyKCkgZmFpbGVkIik7CisgICAgICAgIH0KKworICAgICAgICBpbnQgZ3JvdXBpbmdTaXplID0gMDsKKyAgICAgICAgcGF0LnNldEdyb3VwaW5nU2l6ZSgyKTsKKyAgICAgICAgZ3JvdXBpbmdTaXplID0gcGF0LmdldEdyb3VwaW5nU2l6ZSgpOworICAgICAgICBsb2dsbigiR3JvdXBpbmcgc2l6ZSAoc2hvdWxkIGJlIDIpOiAiICsgKGxvbmcpIGdyb3VwaW5nU2l6ZSk7CisgICAgICAgIGlmKGdyb3VwaW5nU2l6ZSAhPSAyKSB7CisgICAgICAgICAgICBlcnJsbigiRVJST1I6IHNldEdyb3VwaW5nU2l6ZSgpIGZhaWxlZCIpOworICAgICAgICB9CisKKyAgICAgICAgcGF0LnNldERlY2ltYWxTZXBhcmF0b3JBbHdheXNTaG93bih0cnVlKTsKKyAgICAgICAgYm9vbGVhbiB0ZiA9IHBhdC5pc0RlY2ltYWxTZXBhcmF0b3JBbHdheXNTaG93bigpOworICAgICAgICBsb2dsbigiRGVjaW1hbFNlcGFyYXRvcklzQWx3YXlzU2hvd24gKHNob3VsZCBiZSB0cnVlKSBpcyAiICsgICh0ZiA/ICJ0cnVlIiA6ICJmYWxzZSIpKTsKKyAgICAgICAgaWYodGYgIT0gdHJ1ZSkgeworICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBzZXREZWNpbWFsU2VwYXJhdG9yQWx3YXlzU2hvd24oKSBmYWlsZWQiKTsKKyAgICAgICAgfQorCisgICAgICAgIFN0cmluZyBmdW5reVBhdDsKKyAgICAgICAgZnVua3lQYXQgPSBwYXQudG9QYXR0ZXJuKCk7CisgICAgICAgIGxvZ2xuKCJQYXR0ZXJuIGlzICIgKyBmdW5reVBhdCk7CisKKyAgICAgICAgU3RyaW5nIGxvY1BhdDsKKyAgICAgICAgbG9jUGF0ID0gcGF0LnRvTG9jYWxpemVkUGF0dGVybigpOworICAgICAgICBsb2dsbigiTG9jYWxpemVkIHBhdHRlcm4gaXMgIiArIGxvY1BhdCk7CisKKyAgICAgICAgLy8gPT09PT09PSBUZXN0IGFwcGx5UGF0dGVybigpCisKKyAgICAgICAgbG9nbG4oIlRlc3RpbmcgYXBwbHlQYXR0ZXJuKCkiKTsKKworICAgICAgICBTdHJpbmcgcDEgPSBuZXcgU3RyaW5nKCIjLCMjMC4wIzsoIywjIzAuMCMpIik7CisgICAgICAgIGxvZ2xuKCJBcHBseWluZyBwYXR0ZXJuICIgKyBwMSk7CisgICAgICAgIHBhdC5hcHBseVBhdHRlcm4ocDEpOworICAgICAgICBTdHJpbmcgczI7CisgICAgICAgIHMyID0gcGF0LnRvUGF0dGVybigpOworICAgICAgICBsb2dsbigiRXh0cmFjdGVkIHBhdHRlcm4gaXMgIiArIHMyKTsKKyAgICAgICAgaWYoICEgczIuZXF1YWxzKHAxKSApIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogdG9QYXR0ZXJuKCkgcmVzdWx0IGRpZCBub3QgbWF0Y2ggcGF0dGVybiBhcHBsaWVkIik7CisgICAgICAgIH0KKworICAgICAgICBTdHJpbmcgcDIgPSBuZXcgU3RyaW5nKCIjLCMjMC4wIyBGRjsoIywjIzAuMCMgRkYpIik7CisgICAgICAgIGxvZ2xuKCJBcHBseWluZyBwYXR0ZXJuICIgKyBwMik7CisgICAgICAgIHBhdC5hcHBseUxvY2FsaXplZFBhdHRlcm4ocDIpOworICAgICAgICBTdHJpbmcgczM7CisgICAgICAgIHMzID0gcGF0LnRvTG9jYWxpemVkUGF0dGVybigpOworICAgICAgICBsb2dsbigiRXh0cmFjdGVkIHBhdHRlcm4gaXMgIiArIHMzKTsKKyAgICAgICAgaWYoICEgczMuZXF1YWxzKHAyKSApIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogdG9Mb2NhbGl6ZWRQYXR0ZXJuKCkgcmVzdWx0IGRpZCBub3QgbWF0Y2ggcGF0dGVybiBhcHBsaWVkIik7CisgICAgICAgIH0KKworICAgICAgICAvLyA9PT09PT09IFRlc3QgZ2V0U3RhdGljQ2xhc3NJRCgpCisKKy8vICAgICAgICBsb2dsbigiVGVzdGluZyBpbnN0YW5jZW9mKCkiKTsKKworLy8gICAgICAgIHRyeSB7CisgLy8gICAgICAgICAgIE51bWJlckZvcm1hdCB0ZXN0ID0gbmV3IERlY2ltYWxGb3JtYXQoKTsKKworLy8gICAgICAgICAgICBpZiAoISAodGVzdCBpbnN0YW5jZW9mIERlY2ltYWxGb3JtYXQpKSB7CisvLyAgICAgICAgICAgICAgICBlcnJsbigiRVJST1I6IGluc3RhbmNlb2YgZmFpbGVkIik7CisvLyAgICAgICAgICAgIH0KKy8vICAgICAgICB9CisvLyAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisvLyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogQ291bGRuJ3QgY3JlYXRlIGEgRGVjaW1hbEZvcm1hdCIpOworLy8gICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvZm9ybWF0L0ludGxUZXN0RGVjaW1hbEZvcm1hdEFQSUMuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9mb3JtYXQvSW50bFRlc3REZWNpbWFsRm9ybWF0QVBJQy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmIyM2FmN2IKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvZm9ybWF0L0ludGxUZXN0RGVjaW1hbEZvcm1hdEFQSUMuamF2YQpAQCAtMCwwICsxLDI4OCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICAgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvZm9ybWF0L0ludGxUZXN0RGVjaW1hbEZvcm1hdEFQSUMuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNToxMCAkIAorICogJFJldmlzaW9uOiAxLjIgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKKy8qKiAKKyAqIFBvcnQgRnJvbTogICBJQ1U0QyB2MS44LjEgOiBmb3JtYXQgOiBJbnRsVGVzdERlY2ltYWxGb3JtYXRBUEkKKyAqIFNvdXJjZSBGaWxlOiAkSUNVNENSb290L3NvdXJjZS90ZXN0L2ludGx0ZXN0L2RjZm1hcHRzLmNwcAorICoqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0LmZvcm1hdDsKKworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuKjsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworaW1wb3J0IGphdmEudGV4dC5QYXJzZVBvc2l0aW9uOworaW1wb3J0IGphdmEudGV4dC5Gb3JtYXQ7CitpbXBvcnQgY29tLmlibS5pY3UubGFuZy4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuKjsKK2ltcG9ydCBqYXZhLnRleHQuRmllbGRQb3NpdGlvbjsKKworLy8gVGhpcyBpcyBhbiBBUEkgdGVzdCwgbm90IGEgdW5pdCB0ZXN0LiAgSXQgZG9lc24ndCB0ZXN0IHZlcnkgbWFueSBjYXNlcywgYW5kIGRvZXNuJ3QKKy8vIHRyeSB0byB0ZXN0IHRoZSBmdWxsIGZ1bmN0aW9uYWxpdHkuICBJdCBqdXN0IGNhbGxzIGVhY2ggZnVuY3Rpb24gaW4gdGhlIGNsYXNzIGFuZAorLy8gdmVyaWZpZXMgdGhhdCBpdCB3b3JrcyBvbiBhIGJhc2ljIGxldmVsLgorcHVibGljIGNsYXNzIEludGxUZXN0RGVjaW1hbEZvcm1hdEFQSUMgZXh0ZW5kcyBjb20uaWJtLmljdS5kZXYudGVzdC5UZXN0Rm13ayB7CisgICAgCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBuZXcgSW50bFRlc3REZWNpbWFsRm9ybWF0QVBJQygpLnJ1bihhcmdzKTsKKyAgICB9CisKKyAgICAvLyBUaGlzIHRlc3QgY2hlY2tzIHZhcmlvdXMgZ2VuZXJpYyBBUEkgbWV0aG9kcyBpbiBEZWNpbWFsRm9ybWF0IHRvIGFjaGlldmUgMTAwJSBBUEkgY292ZXJhZ2UuCisgICAgcHVibGljIHZvaWQgVGVzdEFQSSgpIHsKKyAgICAgICAgCisgICAgICAgIGxvZ2xuKCJEZWNpbWFsRm9ybWF0IEFQSSB0ZXN0LS0tIik7CisgICAgICAgIGxvZ2xuKCIiKTsKKyAgICAgICAgTG9jYWxlLnNldERlZmF1bHQoTG9jYWxlLkVOR0xJU0gpOworICAgIAorICAgICAgICAvLyA9PT09PT09IFRlc3QgY29uc3RydWN0b3JzCisgICAgCisgICAgICAgIGxvZ2xuKCJUZXN0aW5nIERlY2ltYWxGb3JtYXQgY29uc3RydWN0b3JzIik7CisgICAgCisgICAgICAgIERlY2ltYWxGb3JtYXQgZGVmID0gbmV3IERlY2ltYWxGb3JtYXQoKTsKKyAgICAKKyAgICAgICAgZmluYWwgU3RyaW5nIHBhdHRlcm4gPSBuZXcgU3RyaW5nKCIjLCMjMC4jIEZGIik7CisgICAgICAgIERlY2ltYWxGb3JtYXQgcGF0ID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHBhdCA9IG5ldyBEZWNpbWFsRm9ybWF0KHBhdHRlcm4pOworICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBDb3VsZCBub3QgY3JlYXRlIERlY2ltYWxGb3JtYXQgKHBhdHRlcm4pIik7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgRGVjaW1hbEZvcm1hdFN5bWJvbHMgc3ltYm9scyA9IG5ldyBEZWNpbWFsRm9ybWF0U3ltYm9scyhMb2NhbGUuRlJFTkNIKTsKKyAgICAKKyAgICAgICAgRGVjaW1hbEZvcm1hdCBjdXN0MSA9IG5ldyBEZWNpbWFsRm9ybWF0KHBhdHRlcm4sIHN5bWJvbHMpOworICAgIAorICAgICAgICAvLyA9PT09PT09IFRlc3QgY2xvbmUoKSwgYXNzaWdubWVudCwgYW5kIGVxdWFsaXR5CisgICAgCisgICAgICAgIGxvZ2xuKCJUZXN0aW5nIGNsb25lKCkgYW5kIGVxdWFsaXR5IG9wZXJhdG9ycyIpOworICAgIAorICAgICAgICBGb3JtYXQgY2xvbmUgPSAoRm9ybWF0KSBkZWYuY2xvbmUoKTsKKyAgICAgICAgaWYgKCFkZWYuZXF1YWxzKGNsb25lKSkgeworICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBDbG9uZSgpIGZhaWxlZCIpOworICAgICAgICB9CisgICAgCisgICAgICAgIC8vID09PT09PT0gVGVzdCB2YXJpb3VzIGZvcm1hdCgpIG1ldGhvZHMKKyAgICAKKyAgICAgICAgbG9nbG4oIlRlc3RpbmcgdmFyaW91cyBmb3JtYXQoKSBtZXRob2RzIik7CisgICAgCisgICAgICAgIC8vICAgICAgICBmaW5hbCBkb3VibGUgZCA9IC0xMDQ1Ni4wMDM3OyAvLyB0aGlzIGFwcGVhcnMgYXMgLTEwNDU2LjAwMzcwMDAwMDAwMSBvbiBOVAorICAgICAgICAvLyAgICAgICAgZmluYWwgZG91YmxlIGQgPSAtMS4wNDU2MDAzN2UtNDsgLy8gdGhpcyBhcHBlYXJzIGFzIC0xLjA0NTYwMDM3MDAwMDAwMDJFLTQgb24gTlQKKyAgICAgICAgZmluYWwgZG91YmxlIGQgPSAtMTA0NTYuMDAzNzAwMDAwMDAwMDA7IC8vIHRoaXMgd29ya3MhCisgICAgICAgIGZpbmFsIGxvbmcgbCA9IDEwMDAwMDAwMDsKKyAgICAgICAgbG9nbG4oIiIgKyBEb3VibGUudG9TdHJpbmcoZCkgKyAiIGlzIHRoZSBkb3VibGUgdmFsdWUiKTsKKyAgICAKKyAgICAgICAgU3RyaW5nQnVmZmVyIHJlczEgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIFN0cmluZ0J1ZmZlciByZXMyID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBTdHJpbmdCdWZmZXIgcmVzMyA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgU3RyaW5nQnVmZmVyIHJlczQgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIEZpZWxkUG9zaXRpb24gcG9zMSA9IG5ldyBGaWVsZFBvc2l0aW9uKDApOworICAgICAgICBGaWVsZFBvc2l0aW9uIHBvczIgPSBuZXcgRmllbGRQb3NpdGlvbigwKTsKKyAgICAgICAgRmllbGRQb3NpdGlvbiBwb3MzID0gbmV3IEZpZWxkUG9zaXRpb24oMCk7CisgICAgICAgIEZpZWxkUG9zaXRpb24gcG9zNCA9IG5ldyBGaWVsZFBvc2l0aW9uKDApOworICAgIAorICAgICAgICByZXMxID0gZGVmLmZvcm1hdChkLCByZXMxLCBwb3MxKTsKKyAgICAgICAgbG9nbG4oIiIgKyBEb3VibGUudG9TdHJpbmcoZCkgKyAiIGZvcm1hdHRlZCB0byAiICsgcmVzMSk7CisgICAgCisgICAgICAgIHJlczIgPSBwYXQuZm9ybWF0KGwsIHJlczIsIHBvczIpOworICAgICAgICBsb2dsbigiIiArIGwgKyAiIGZvcm1hdHRlZCB0byAiICsgcmVzMik7CisgICAgCisgICAgICAgIHJlczMgPSBjdXN0MS5mb3JtYXQoZCwgcmVzMywgcG9zMyk7CisgICAgICAgIGxvZ2xuKCIiICsgRG91YmxlLnRvU3RyaW5nKGQpICsgIiBmb3JtYXR0ZWQgdG8gIiArIHJlczMpOworICAgIAorICAgICAgICByZXM0ID0gY3VzdDEuZm9ybWF0KGwsIHJlczQsIHBvczQpOworICAgICAgICBsb2dsbigiIiArIGwgKyAiIGZvcm1hdHRlZCB0byAiICsgcmVzNCk7CisgICAgCisgICAgICAgIC8vID09PT09PT0gVGVzdCBwYXJzZSgpCisgICAgCisgICAgICAgIGxvZ2xuKCJUZXN0aW5nIHBhcnNlKCkiKTsKKyAgICAKKyAgICAgICAgU3RyaW5nIHRleHQgPSBuZXcgU3RyaW5nKCItMTAsNDU2LjAwMzciKTsKKyAgICAgICAgUGFyc2VQb3NpdGlvbiBwb3MgPSBuZXcgUGFyc2VQb3NpdGlvbigwKTsKKyAgICAgICAgU3RyaW5nIHBhdHQgPSBuZXcgU3RyaW5nKCIjLCMjMC4jIik7CisgICAgICAgIHBhdC5hcHBseVBhdHRlcm4ocGF0dCk7CisgICAgICAgIGRvdWJsZSBkMiA9IHBhdC5wYXJzZSh0ZXh0LCBwb3MpLmRvdWJsZVZhbHVlKCk7CisgICAgICAgIGlmIChkMiAhPSBkKSB7CisgICAgICAgICAgICBlcnJsbigKKyAgICAgICAgICAgICAgICAiRVJST1I6IFJvdW5kdHJpcCBmYWlsZWQgKHZpYSBwYXJzZSgiICsgRG91YmxlLnRvU3RyaW5nKGQyKSArICIgIT0gIiArIERvdWJsZS50b1N0cmluZyhkKSArICIpKSBmb3IgIiArIHRleHQpOyAKKyAgICAgICAgfQorICAgICAgICBsb2dsbih0ZXh0ICsgIiBwYXJzZWQgaW50byAiICsgKGxvbmcpIGQyKTsKKyAgICAKKyAgICAgICAgLy8gPT09PT09PSBUZXN0IGdldHRlcnMgYW5kIHNldHRlcnMKKyAgICAKKyAgICAgICAgbG9nbG4oIlRlc3RpbmcgZ2V0dGVycyBhbmQgc2V0dGVycyIpOworICAgIAorICAgICAgICBmaW5hbCBEZWNpbWFsRm9ybWF0U3ltYm9scyBzeW1zID0gcGF0LmdldERlY2ltYWxGb3JtYXRTeW1ib2xzKCk7CisgICAgICAgIGRlZi5zZXREZWNpbWFsRm9ybWF0U3ltYm9scyhzeW1zKTsKKyAgICAgICAgaWYgKCFwYXQuZ2V0RGVjaW1hbEZvcm1hdFN5bWJvbHMoKS5lcXVhbHMoZGVmLmdldERlY2ltYWxGb3JtYXRTeW1ib2xzKCkpKSB7CisgICAgICAgICAgICBlcnJsbigiRVJST1I6IHNldCBEZWNpbWFsRm9ybWF0U3ltYm9scygpIGZhaWxlZCIpOworICAgICAgICB9CisgICAgCisgICAgICAgIFN0cmluZyBwb3NQcmVmaXg7CisgICAgICAgIHBhdC5zZXRQb3NpdGl2ZVByZWZpeCgiKyIpOworICAgICAgICBwb3NQcmVmaXggPSBwYXQuZ2V0UG9zaXRpdmVQcmVmaXgoKTsKKyAgICAgICAgbG9nbG4oIlBvc2l0aXZlIHByZWZpeCAoc2hvdWxkIGJlICspOiAiICsgcG9zUHJlZml4KTsKKyAgICAgICAgaWYgKHBvc1ByZWZpeCAhPSAiKyIpIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogc2V0UG9zaXRpdmVQcmVmaXgoKSBmYWlsZWQiKTsKKyAgICAgICAgfQorICAgIAorICAgICAgICBTdHJpbmcgbmVnUHJlZml4OworICAgICAgICBwYXQuc2V0TmVnYXRpdmVQcmVmaXgoIi0iKTsKKyAgICAgICAgbmVnUHJlZml4ID0gcGF0LmdldE5lZ2F0aXZlUHJlZml4KCk7CisgICAgICAgIGxvZ2xuKCJOZWdhdGl2ZSBwcmVmaXggKHNob3VsZCBiZSAtKTogIiArIG5lZ1ByZWZpeCk7CisgICAgICAgIGlmIChuZWdQcmVmaXggIT0gIi0iKSB7CisgICAgICAgICAgICBlcnJsbigiRVJST1I6IHNldE5lZ2F0aXZlUHJlZml4KCkgZmFpbGVkIik7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgU3RyaW5nIHBvc1N1ZmZpeDsKKyAgICAgICAgcGF0LnNldFBvc2l0aXZlU3VmZml4KCJfIik7CisgICAgICAgIHBvc1N1ZmZpeCA9IHBhdC5nZXRQb3NpdGl2ZVN1ZmZpeCgpOworICAgICAgICBsb2dsbigiUG9zaXRpdmUgc3VmZml4IChzaG91bGQgYmUgXyk6ICIgKyBwb3NTdWZmaXgpOworICAgICAgICBpZiAocG9zU3VmZml4ICE9ICJfIikgeworICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBzZXRQb3NpdGl2ZVN1ZmZpeCgpIGZhaWxlZCIpOworICAgICAgICB9CisgICAgCisgICAgICAgIFN0cmluZyBuZWdTdWZmaXg7CisgICAgICAgIHBhdC5zZXROZWdhdGl2ZVN1ZmZpeCgifiIpOworICAgICAgICBuZWdTdWZmaXggPSBwYXQuZ2V0TmVnYXRpdmVTdWZmaXgoKTsKKyAgICAgICAgbG9nbG4oIk5lZ2F0aXZlIHN1ZmZpeCAoc2hvdWxkIGJlIH4pOiAiICsgbmVnU3VmZml4KTsKKyAgICAgICAgaWYgKG5lZ1N1ZmZpeCAhPSAifiIpIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogc2V0TmVnYXRpdmVTdWZmaXgoKSBmYWlsZWQiKTsKKyAgICAgICAgfQorICAgIAorICAgICAgICBsb25nIG11bHRpcGxpZXIgPSAwOworICAgICAgICBwYXQuc2V0TXVsdGlwbGllcig4KTsKKyAgICAgICAgbXVsdGlwbGllciA9IHBhdC5nZXRNdWx0aXBsaWVyKCk7CisgICAgICAgIGxvZ2xuKCJNdWx0aXBsaWVyIChzaG91bGQgYmUgOCk6ICIgKyBtdWx0aXBsaWVyKTsKKyAgICAgICAgaWYgKG11bHRpcGxpZXIgIT0gOCkgeworICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBzZXRNdWx0aXBsaWVyKCkgZmFpbGVkIik7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgaW50IGdyb3VwaW5nU2l6ZSA9IDA7CisgICAgICAgIHBhdC5zZXRHcm91cGluZ1NpemUoMik7CisgICAgICAgIGdyb3VwaW5nU2l6ZSA9IHBhdC5nZXRHcm91cGluZ1NpemUoKTsKKyAgICAgICAgbG9nbG4oIkdyb3VwaW5nIHNpemUgKHNob3VsZCBiZSAyKTogIiArIChsb25nKSBncm91cGluZ1NpemUpOworICAgICAgICBpZiAoZ3JvdXBpbmdTaXplICE9IDIpIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogc2V0R3JvdXBpbmdTaXplKCkgZmFpbGVkIik7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgcGF0LnNldERlY2ltYWxTZXBhcmF0b3JBbHdheXNTaG93bih0cnVlKTsKKyAgICAgICAgYm9vbGVhbiB0ZiA9IHBhdC5pc0RlY2ltYWxTZXBhcmF0b3JBbHdheXNTaG93bigpOworICAgICAgICBsb2dsbigKKyAgICAgICAgICAgICJEZWNpbWFsU2VwYXJhdG9ySXNBbHdheXNTaG93biAoc2hvdWxkIGJlIHRydWUpIGlzICIgKyAodGYgPyAidHJ1ZSIgOiAiZmFsc2UiKSk7IAorICAgICAgICBpZiAodGYgIT0gdHJ1ZSkgeworICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBzZXREZWNpbWFsU2VwYXJhdG9yQWx3YXlzU2hvd24oKSBmYWlsZWQiKTsKKyAgICAgICAgfQorICAgIAorICAgICAgICBTdHJpbmcgZnVua3lQYXQ7CisgICAgICAgIGZ1bmt5UGF0ID0gcGF0LnRvUGF0dGVybigpOworICAgICAgICBsb2dsbigiUGF0dGVybiBpcyAiICsgZnVua3lQYXQpOworICAgIAorICAgICAgICBTdHJpbmcgbG9jUGF0OworICAgICAgICBsb2NQYXQgPSBwYXQudG9Mb2NhbGl6ZWRQYXR0ZXJuKCk7CisgICAgICAgIGxvZ2xuKCJMb2NhbGl6ZWQgcGF0dGVybiBpcyAiICsgbG9jUGF0KTsKKyAgICAKKyAgICAgICAgLy8gPT09PT09PSBUZXN0IGFwcGx5UGF0dGVybigpCisgICAgCisgICAgICAgIGxvZ2xuKCJUZXN0aW5nIGFwcGx5UGF0dGVybigpIik7CisgICAgCisgICAgICAgIFN0cmluZyBwMSA9IG5ldyBTdHJpbmcoIiMsIyMwLjAjOygjLCMjMC4wIykiKTsKKyAgICAgICAgbG9nbG4oIkFwcGx5aW5nIHBhdHRlcm4gIiArIHAxKTsKKyAgICAgICAgcGF0LmFwcGx5UGF0dGVybihwMSk7CisgICAgICAgIFN0cmluZyBzMjsKKyAgICAgICAgczIgPSBwYXQudG9QYXR0ZXJuKCk7CisgICAgICAgIGxvZ2xuKCJFeHRyYWN0ZWQgcGF0dGVybiBpcyAiICsgczIpOworICAgICAgICBpZiAoIXMyLmVxdWFscyhwMSkpIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogdG9QYXR0ZXJuKCkgcmVzdWx0IGRpZCBub3QgbWF0Y2ggcGF0dGVybiBhcHBsaWVkIik7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgU3RyaW5nIHAyID0gbmV3IFN0cmluZygiIywjIzAuMCMgRkY7KCMsIyMwLjAjIEZGKSIpOworICAgICAgICBsb2dsbigiQXBwbHlpbmcgcGF0dGVybiAiICsgcDIpOworICAgICAgICBwYXQuYXBwbHlMb2NhbGl6ZWRQYXR0ZXJuKHAyKTsKKyAgICAgICAgU3RyaW5nIHMzOworICAgICAgICBzMyA9IHBhdC50b0xvY2FsaXplZFBhdHRlcm4oKTsKKyAgICAgICAgbG9nbG4oIkV4dHJhY3RlZCBwYXR0ZXJuIGlzICIgKyBzMyk7CisgICAgICAgIGlmICghczMuZXF1YWxzKHAyKSkgeworICAgICAgICAgICAgZXJybG4oIkVSUk9SOiB0b0xvY2FsaXplZFBhdHRlcm4oKSByZXN1bHQgZGlkIG5vdCBtYXRjaCBwYXR0ZXJuIGFwcGxpZWQiKTsKKyAgICAgICAgfQorICAgIAorICAgICAgICAvLyA9PT09PT09IFRlc3QgZ2V0U3RhdGljQ2xhc3NJRCgpCisgICAgCisgICAgICAgIC8vICAgICAgICBsb2dsbigiVGVzdGluZyBpbnN0YW5jZW9mKCkiKTsKKyAgICAKKyAgICAgICAgLy8gICAgICAgIHRyeSB7CisgICAgICAgIC8vICAgICAgICAgICBOdW1iZXJGb3JtYXQgdGVzdCA9IG5ldyBEZWNpbWFsRm9ybWF0KCk7CisgICAgCisgICAgICAgIC8vICAgICAgICAgICAgaWYgKCEgKHRlc3QgaW5zdGFuY2VvZiBEZWNpbWFsRm9ybWF0KSkgeworICAgICAgICAvLyAgICAgICAgICAgICAgICBlcnJsbigiRVJST1I6IGluc3RhbmNlb2YgZmFpbGVkIik7CisgICAgICAgIC8vICAgICAgICAgICAgfQorICAgICAgICAvLyAgICAgICAgfQorICAgICAgICAvLyAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgIC8vICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBDb3VsZG4ndCBjcmVhdGUgYSBEZWNpbWFsRm9ybWF0Iik7CisgICAgICAgIC8vICAgICAgICB9CisgICAgICAgCisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdFJvdW5kaW5nKCkgeworICAgICAgICBkb3VibGUgUm91bmRpbmdudW1iZXIgPSAyLjU1OworICAgICAgICBkb3VibGUgUm91bmRpbmdudW1iZXIxID0gLTIuNTU7CisgICAgICAgIC8vKzIuNTUgcmVzdWx0cyAgIC0yLjU1IHJlc3VsdHMKKyAgICAgICAgZG91YmxlIHJlc3VsdFtdID0geworICAgICAgICAgICAgMywgLTMsICAgCisgICAgICAgICAgICAyLCAtMiwgCisgICAgICAgICAgICAzLCAtMiwgCisgICAgICAgICAgICAyLCAtMywgCisgICAgICAgICAgICAzLCAtMywgCisgICAgICAgICAgICAzLCAtMywgCisgICAgICAgICAgICAzLCAtMyAKKyAgICAgICAgfTsKKyAgICAgICAgRGVjaW1hbEZvcm1hdCBwYXQgPSBuZXcgRGVjaW1hbEZvcm1hdCgpOworICAgICAgICBTdHJpbmcgcyA9ICIiOworICAgICAgICBzID0gcGF0LnRvUGF0dGVybigpOworICAgICAgICBsb2dsbigicGF0dGVybiA9ICIgKyBzKTsKKyAgICAgICAgaW50IG1vZGU7CisgICAgICAgIGludCBpID0gMDsKKyAgICAgICAgU3RyaW5nIG1lc3NhZ2U7CisgICAgICAgIFN0cmluZyByZXN1bHRTdHI7CisgICAgICAgIGZvciAobW9kZSA9IDA7IG1vZGUgPCA3OyBtb2RlKyspIHsKKyAgICAgICAgICAgIHBhdC5zZXRSb3VuZGluZ01vZGUobW9kZSk7CisgICAgICAgICAgICBpZiAocGF0LmdldFJvdW5kaW5nTW9kZSgpICE9IG1vZGUpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigKKyAgICAgICAgICAgICAgICAgICAgICJTZXRSb3VuZGluZ01vZGUgb3IgR2V0Um91bmRpbmdNb2RlIGZhaWxlZCBmb3IgbW9kZT0iICsgbW9kZSk7IAorICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgLy9mb3IgKzIuNTUgd2l0aCBSb3VuZGluZ0luY3JlbWVudD0xLjAKKyAgICAgICAgICAgIHBhdC5zZXRSb3VuZGluZ0luY3JlbWVudCgxLjApOworICAgICAgICAgICAgcmVzdWx0U3RyID0gcGF0LmZvcm1hdChSb3VuZGluZ251bWJlcik7CisgICAgICAgICAgICBtZXNzYWdlID0gInJvdW5kKCIgKyAoZG91YmxlKSBSb3VuZGluZ251bWJlcgorICAgICAgICAgICAgICAgICAgICArICIsIiArIG1vZGUgKyAiLEZBTFNFKSB3aXRoIFJvdW5kaW5nSW5jcmVtZW50PTEuMD09PiI7IAorICAgICAgICAgICAgdmVyaWZ5KG1lc3NhZ2UsIHJlc3VsdFN0ciwgcmVzdWx0W2krK10pOworICAgICAgICAgICAgbWVzc2FnZSA9ICIiOworICAgICAgICAgICAgcmVzdWx0U3RyID0gIiI7CisgICAgCisgICAgICAgICAgICAvL2ZvciAtMi41NSB3aXRoIFJvdW5kaW5nSW5jcmVtZW50PTEuMAorICAgICAgICAgICAgcmVzdWx0U3RyID0gcGF0LmZvcm1hdChSb3VuZGluZ251bWJlcjEpOworICAgICAgICAgICAgbWVzc2FnZSA9ICJyb3VuZCgiICsgKGRvdWJsZSkgUm91bmRpbmdudW1iZXIxCisgICAgICAgICAgICAgICAgICAgICsgIiwiICsgbW9kZSArICIsRkFMU0UpIHdpdGggUm91bmRpbmdJbmNyZW1lbnQ9MS4wPT0+IjsgCisgICAgICAgICAgICB2ZXJpZnkobWVzc2FnZSwgcmVzdWx0U3RyLCByZXN1bHRbaSsrXSk7CisgICAgICAgICAgICBtZXNzYWdlID0gIiI7CisgICAgICAgICAgICByZXN1bHRTdHIgPSAiIjsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKkhlbHBlciBmdW5jdGlvbnMgKi8KKyAgICBwdWJsaWMgdm9pZCB2ZXJpZnkoU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBnb3QsIGRvdWJsZSBleHBlY3RlZCkgeworICAgICAgICBsb2dsbihtZXNzYWdlICsgZ290ICsgIiBFeHBlY3RlZCA6ICIgKyAobG9uZylleHBlY3RlZCk7CisgICAgICAgIFN0cmluZyBleHBlY3RlZFN0ciA9ICIiOworICAgICAgICBleHBlY3RlZFN0cj1leHBlY3RlZFN0ciArIChsb25nKWV4cGVjdGVkOworICAgICAgICBpZighZ290LmVxdWFscyhleHBlY3RlZFN0cikgKSB7CisgICAgICAgICAgICBlcnJsbigiRVJST1I6IFJvdW5kKCkgZmFpbGVkOiAgIiArIG1lc3NhZ2UgKyBnb3QgKyAiICBFeHBlY3RlZCA6ICIgKyBleHBlY3RlZFN0cik7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2Zvcm1hdC9JbnRsVGVzdERlY2ltYWxGb3JtYXRTeW1ib2xzLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvZm9ybWF0L0ludGxUZXN0RGVjaW1hbEZvcm1hdFN5bWJvbHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lN2JmMmVkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2Zvcm1hdC9JbnRsVGVzdERlY2ltYWxGb3JtYXRTeW1ib2xzLmphdmEKQEAgLTAsMCArMSwxMjkgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2Zvcm1hdC9JbnRsVGVzdERlY2ltYWxGb3JtYXRTeW1ib2xzLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDgvMDEgMjA6Mjc6MjEgJCAKKyAqICRSZXZpc2lvbjogMS40ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKi8KKworLyoqIAorICogUG9ydCBGcm9tOiAgIEpESyAxLjRiMSA6IGphdmEudGV4dC5Gb3JtYXQuSW50bFRlc3REZWNpbWFsRm9ybWF0U3ltYm9scworICogU291cmNlIEZpbGU6IGphdmEvdGV4dC9mb3JtYXQvSW50bFRlc3REZWNpbWFsRm9ybWF0U3ltYm9scy5qYXZhCisgKiovCisgCisvKgorICAgIEB0ZXN0IDEuNCA5OC8wMy8wNgorICAgIEBzdW1tYXJ5IHRlc3QgSW50ZXJuYXRpb25hbCBEZWNpbWFsIEZvcm1hdCBTeW1ib2xzCisqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAgIENvcHlyaWdodCAoQykgMTk5Ni0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqICAgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudGVzdC5mb3JtYXQ7CisKK2ltcG9ydCBjb20uaWJtLmljdS5sYW5nLio7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuKjsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworaW1wb3J0IGphdmEudGV4dC5GaWVsZFBvc2l0aW9uOworCitwdWJsaWMgY2xhc3MgSW50bFRlc3REZWNpbWFsRm9ybWF0U3ltYm9scyBleHRlbmRzIGNvbS5pYm0uaWN1LmRldi50ZXN0LlRlc3RGbXdrCit7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIG5ldyBJbnRsVGVzdERlY2ltYWxGb3JtYXRTeW1ib2xzKCkucnVuKGFyZ3MpOworICAgIH0KKworICAgIC8vIFRlc3QgdGhlIEFQSSBvZiBEZWNpbWFsRm9ybWF0U3ltYm9sczsgcHJpbWFyaWx5IGEgc2ltcGxlIGdldC9zZXQgc2V0LgorICAgIHB1YmxpYyB2b2lkIFRlc3RTeW1ib2xzKCkKKyAgICB7CisgICAgICAgIERlY2ltYWxGb3JtYXRTeW1ib2xzIGZyID0gbmV3IERlY2ltYWxGb3JtYXRTeW1ib2xzKExvY2FsZS5GUkVOQ0gpOworCisgICAgICAgIERlY2ltYWxGb3JtYXRTeW1ib2xzIGVuID0gbmV3IERlY2ltYWxGb3JtYXRTeW1ib2xzKExvY2FsZS5FTkdMSVNIKTsKKworICAgICAgICBpZihlbi5lcXVhbHMoZnIpKSB7CisgICAgICAgICAgICBlcnJsbigiRVJST1I6IEVuZ2xpc2ggRGVjaW1hbEZvcm1hdFN5bWJvbHMgZXF1YWwgdG8gRnJlbmNoIik7CisgICAgICAgIH0KKworICAgICAgICAvLyBqdXN0IGRvIHNvbWUgVkVSWSBiYXNpYyB0ZXN0cyB0byBtYWtlIHN1cmUgdGhhdCBnZXQvc2V0IHdvcmsKKworICAgICAgICBjaGFyIHplcm8gPSBlbi5nZXRaZXJvRGlnaXQoKTsKKyAgICAgICAgZnIuc2V0WmVyb0RpZ2l0KHplcm8pOworICAgICAgICBpZihmci5nZXRaZXJvRGlnaXQoKSAhPSBlbi5nZXRaZXJvRGlnaXQoKSkgeworICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBnZXQvc2V0IFplcm9EaWdpdCBmYWlsZWQiKTsKKyAgICAgICAgfQorCisgICAgICAgIGNoYXIgZ3JvdXAgPSBlbi5nZXRHcm91cGluZ1NlcGFyYXRvcigpOworICAgICAgICBmci5zZXRHcm91cGluZ1NlcGFyYXRvcihncm91cCk7CisgICAgICAgIGlmKGZyLmdldEdyb3VwaW5nU2VwYXJhdG9yKCkgIT0gZW4uZ2V0R3JvdXBpbmdTZXBhcmF0b3IoKSkgeworICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBnZXQvc2V0IEdyb3VwaW5nU2VwYXJhdG9yIGZhaWxlZCIpOworICAgICAgICB9CisKKyAgICAgICAgY2hhciBkZWNpbWFsID0gZW4uZ2V0RGVjaW1hbFNlcGFyYXRvcigpOworICAgICAgICBmci5zZXREZWNpbWFsU2VwYXJhdG9yKGRlY2ltYWwpOworICAgICAgICBpZihmci5nZXREZWNpbWFsU2VwYXJhdG9yKCkgIT0gZW4uZ2V0RGVjaW1hbFNlcGFyYXRvcigpKSB7CisgICAgICAgICAgICBlcnJsbigiRVJST1I6IGdldC9zZXQgRGVjaW1hbFNlcGFyYXRvciBmYWlsZWQiKTsKKyAgICAgICAgfQorCisgICAgICAgIGNoYXIgcGVyTWlsbCA9IGVuLmdldFBlck1pbGwoKTsKKyAgICAgICAgZnIuc2V0UGVyTWlsbChwZXJNaWxsKTsKKyAgICAgICAgaWYoZnIuZ2V0UGVyTWlsbCgpICE9IGVuLmdldFBlck1pbGwoKSkgeworICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBnZXQvc2V0IFBlck1pbGwgZmFpbGVkIik7CisgICAgICAgIH0KKworICAgICAgICBjaGFyIHBlcmNlbnQgPSBlbi5nZXRQZXJjZW50KCk7CisgICAgICAgIGZyLnNldFBlcmNlbnQocGVyY2VudCk7CisgICAgICAgIGlmKGZyLmdldFBlcmNlbnQoKSAhPSBlbi5nZXRQZXJjZW50KCkpIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogZ2V0L3NldCBQZXJjZW50IGZhaWxlZCIpOworICAgICAgICB9CisKKyAgICAgICAgY2hhciBkaWdpdCA9IGVuLmdldERpZ2l0KCk7CisgICAgICAgIGZyLnNldERpZ2l0KGRpZ2l0KTsKKyAgICAgICAgaWYoZnIuZ2V0UGVyY2VudCgpICE9IGVuLmdldFBlcmNlbnQoKSkgeworICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBnZXQvc2V0IFBlcmNlbnQgZmFpbGVkIik7CisgICAgICAgIH0KKworICAgICAgICBjaGFyIHBhdHRlcm5TZXBhcmF0b3IgPSBlbi5nZXRQYXR0ZXJuU2VwYXJhdG9yKCk7CisgICAgICAgIGZyLnNldFBhdHRlcm5TZXBhcmF0b3IocGF0dGVyblNlcGFyYXRvcik7CisgICAgICAgIGlmKGZyLmdldFBhdHRlcm5TZXBhcmF0b3IoKSAhPSBlbi5nZXRQYXR0ZXJuU2VwYXJhdG9yKCkpIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogZ2V0L3NldCBQYXR0ZXJuU2VwYXJhdG9yIGZhaWxlZCIpOworICAgICAgICB9CisKKyAgICAgICAgU3RyaW5nIGluZmluaXR5ID0gZW4uZ2V0SW5maW5pdHkoKTsKKyAgICAgICAgZnIuc2V0SW5maW5pdHkoaW5maW5pdHkpOworICAgICAgICBTdHJpbmcgaW5maW5pdHkyID0gZnIuZ2V0SW5maW5pdHkoKTsKKyAgICAgICAgaWYoISBpbmZpbml0eS5lcXVhbHMoaW5maW5pdHkyKSkgeworICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBnZXQvc2V0IEluZmluaXR5IGZhaWxlZCIpOworICAgICAgICB9CisKKyAgICAgICAgU3RyaW5nIG5hbiA9IGVuLmdldE5hTigpOworICAgICAgICBmci5zZXROYU4obmFuKTsKKyAgICAgICAgU3RyaW5nIG5hbjIgPSBmci5nZXROYU4oKTsKKyAgICAgICAgaWYoISBuYW4uZXF1YWxzKG5hbjIpKSB7CisgICAgICAgICAgICBlcnJsbigiRVJST1I6IGdldC9zZXQgTmFOIGZhaWxlZCIpOworICAgICAgICB9CisKKyAgICAgICAgY2hhciBtaW51c1NpZ24gPSBlbi5nZXRNaW51c1NpZ24oKTsKKyAgICAgICAgZnIuc2V0TWludXNTaWduKG1pbnVzU2lnbik7CisgICAgICAgIGlmKGZyLmdldE1pbnVzU2lnbigpICE9IGVuLmdldE1pbnVzU2lnbigpKSB7CisgICAgICAgICAgICBlcnJsbigiRVJST1I6IGdldC9zZXQgTWludXNTaWduIGZhaWxlZCIpOworICAgICAgICB9CisKKy8vICAgICAgICBjaGFyIGV4cG9uZW50aWFsID0gZW4uZ2V0RXhwb25lbnRpYWxTeW1ib2woKTsKKy8vICAgICAgICBmci5zZXRFeHBvbmVudGlhbFN5bWJvbChleHBvbmVudGlhbCk7CisvLyAgICAgICAgaWYoZnIuZ2V0RXhwb25lbnRpYWxTeW1ib2woKSAhPSBlbi5nZXRFeHBvbmVudGlhbFN5bWJvbCgpKSB7CisvLyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogZ2V0L3NldCBFeHBvbmVudGlhbCBmYWlsZWQiKTsKKy8vICAgICAgICB9CisKKyAgICAgICAgLy9EZWNpbWFsRm9ybWF0U3ltYm9scyBmb28gPSBuZXcgRGVjaW1hbEZvcm1hdFN5bWJvbHMoKTsgLy9UaGUgdmFyaWFibGUgaXMgbmV2ZXIgdXNlZAorCisgICAgICAgIGVuID0gKERlY2ltYWxGb3JtYXRTeW1ib2xzKSBmci5jbG9uZSgpOworCisgICAgICAgIGlmKCEgZW4uZXF1YWxzKGZyKSkgeworICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBDbG9uZSBmYWlsZWQiKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9mb3JtYXQvSW50bFRlc3REZWNpbWFsRm9ybWF0U3ltYm9sc0MuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9mb3JtYXQvSW50bFRlc3REZWNpbWFsRm9ybWF0U3ltYm9sc0MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5jMzdmN2EyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2Zvcm1hdC9JbnRsVGVzdERlY2ltYWxGb3JtYXRTeW1ib2xzQy5qYXZhCkBAIC0wLDAgKzEsMTQ4IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgICAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9mb3JtYXQvSW50bFRlc3REZWNpbWFsRm9ybWF0U3ltYm9sc0MuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNToxMSAkIAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKKy8qKiAKKyAqIFBvcnQgRnJvbTogICBJQ1U0QyB2MS44LjEgOiBmb3JtYXQgOiBJbnRsVGVzdERlY2ltYWxGb3JtYXRTeW1ib2xzCisgKiBTb3VyY2UgRmlsZTogJElDVTRDUm9vdC9zb3VyY2UvdGVzdC9pbnRsdGVzdC90c2RjZm1zeS5jcHAKKyAqKi8KKworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudGVzdC5mb3JtYXQ7CisKK2ltcG9ydCBqYXZhLnRleHQuRmllbGRQb3NpdGlvbjsKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLio7CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKK2ltcG9ydCBjb20uaWJtLmljdS5sYW5nLio7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC4qOworCisvKioKKyAqIFRlc3RzIGZvciBEZWNpbWFsRm9ybWF0U3ltYm9scworICoqLworcHVibGljIGNsYXNzIEludGxUZXN0RGVjaW1hbEZvcm1hdFN5bWJvbHNDIGV4dGVuZHMgY29tLmlibS5pY3UuZGV2LnRlc3QuVGVzdEZtd2sgeworICAgIAorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBuZXcgSW50bFRlc3REZWNpbWFsRm9ybWF0U3ltYm9sc0MoKS5ydW4oYXJncyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdCB0aGUgQVBJIG9mIERlY2ltYWxGb3JtYXRTeW1ib2xzOyBwcmltYXJpbHkgYSBzaW1wbGUgZ2V0L3NldCBzZXQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdFN5bWJvbHMoKSB7ICAgIAorICAgICAgICBEZWNpbWFsRm9ybWF0U3ltYm9scyBmciA9IG5ldyBEZWNpbWFsRm9ybWF0U3ltYm9scyhMb2NhbGUuRlJFTkNIKTsgICAgCisgICAgICAgIERlY2ltYWxGb3JtYXRTeW1ib2xzIGVuID0gbmV3IERlY2ltYWxGb3JtYXRTeW1ib2xzKExvY2FsZS5FTkdMSVNIKTsKKyAgICAKKyAgICAgICAgaWYgKGVuLmVxdWFscyhmcikpIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogRW5nbGlzaCBEZWNpbWFsRm9ybWF0U3ltYm9scyBlcXVhbCB0byBGcmVuY2giKTsKKyAgICAgICAgfQorICAgIAorICAgICAgICAvLyBqdXN0IGRvIHNvbWUgVkVSWSBiYXNpYyB0ZXN0cyB0byBtYWtlIHN1cmUgdGhhdCBnZXQvc2V0IHdvcmsKKyAgICAKKyAgICAgICAgY2hhciB6ZXJvID0gZW4uZ2V0WmVyb0RpZ2l0KCk7CisgICAgICAgIGZyLnNldFplcm9EaWdpdCh6ZXJvKTsKKyAgICAgICAgaWYgKGZyLmdldFplcm9EaWdpdCgpICE9IGVuLmdldFplcm9EaWdpdCgpKSB7CisgICAgICAgICAgICBlcnJsbigiRVJST1I6IGdldC9zZXQgWmVyb0RpZ2l0IGZhaWxlZCIpOworICAgICAgICB9CisgICAgCisgICAgICAgIGNoYXIgZ3JvdXAgPSBlbi5nZXRHcm91cGluZ1NlcGFyYXRvcigpOworICAgICAgICBmci5zZXRHcm91cGluZ1NlcGFyYXRvcihncm91cCk7CisgICAgICAgIGlmIChmci5nZXRHcm91cGluZ1NlcGFyYXRvcigpICE9IGVuLmdldEdyb3VwaW5nU2VwYXJhdG9yKCkpIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogZ2V0L3NldCBHcm91cGluZ1NlcGFyYXRvciBmYWlsZWQiKTsKKyAgICAgICAgfQorICAgIAorICAgICAgICBjaGFyIGRlY2ltYWwgPSBlbi5nZXREZWNpbWFsU2VwYXJhdG9yKCk7CisgICAgICAgIGZyLnNldERlY2ltYWxTZXBhcmF0b3IoZGVjaW1hbCk7CisgICAgICAgIGlmIChmci5nZXREZWNpbWFsU2VwYXJhdG9yKCkgIT0gZW4uZ2V0RGVjaW1hbFNlcGFyYXRvcigpKSB7CisgICAgICAgICAgICBlcnJsbigiRVJST1I6IGdldC9zZXQgRGVjaW1hbFNlcGFyYXRvciBmYWlsZWQiKTsKKyAgICAgICAgfQorICAgIAorICAgICAgICBjaGFyIHBlck1pbGwgPSBlbi5nZXRQZXJNaWxsKCk7CisgICAgICAgIGZyLnNldFBlck1pbGwocGVyTWlsbCk7CisgICAgICAgIGlmIChmci5nZXRQZXJNaWxsKCkgIT0gZW4uZ2V0UGVyTWlsbCgpKSB7CisgICAgICAgICAgICBlcnJsbigiRVJST1I6IGdldC9zZXQgUGVyTWlsbCBmYWlsZWQiKTsKKyAgICAgICAgfQorICAgIAorICAgICAgICBjaGFyIHBlcmNlbnQgPSBlbi5nZXRQZXJjZW50KCk7CisgICAgICAgIGZyLnNldFBlcmNlbnQocGVyY2VudCk7CisgICAgICAgIGlmIChmci5nZXRQZXJjZW50KCkgIT0gZW4uZ2V0UGVyY2VudCgpKSB7CisgICAgICAgICAgICBlcnJsbigiRVJST1I6IGdldC9zZXQgUGVyY2VudCBmYWlsZWQiKTsKKyAgICAgICAgfQorICAgIAorICAgICAgICBjaGFyIGRpZ2l0ID0gZW4uZ2V0RGlnaXQoKTsKKyAgICAgICAgZnIuc2V0RGlnaXQoZGlnaXQpOworICAgICAgICBpZiAoZnIuZ2V0UGVyY2VudCgpICE9IGVuLmdldFBlcmNlbnQoKSkgeworICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBnZXQvc2V0IFBlcmNlbnQgZmFpbGVkIik7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgY2hhciBwYXR0ZXJuU2VwYXJhdG9yID0gZW4uZ2V0UGF0dGVyblNlcGFyYXRvcigpOworICAgICAgICBmci5zZXRQYXR0ZXJuU2VwYXJhdG9yKHBhdHRlcm5TZXBhcmF0b3IpOworICAgICAgICBpZiAoZnIuZ2V0UGF0dGVyblNlcGFyYXRvcigpICE9IGVuLmdldFBhdHRlcm5TZXBhcmF0b3IoKSkgeworICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBnZXQvc2V0IFBhdHRlcm5TZXBhcmF0b3IgZmFpbGVkIik7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgU3RyaW5nIGluZmluaXR5ID0gZW4uZ2V0SW5maW5pdHkoKTsKKyAgICAgICAgZnIuc2V0SW5maW5pdHkoaW5maW5pdHkpOworICAgICAgICBTdHJpbmcgaW5maW5pdHkyID0gZnIuZ2V0SW5maW5pdHkoKTsKKyAgICAgICAgaWYgKCFpbmZpbml0eS5lcXVhbHMoaW5maW5pdHkyKSkgeworICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBnZXQvc2V0IEluZmluaXR5IGZhaWxlZCIpOworICAgICAgICB9CisgICAgCisgICAgICAgIFN0cmluZyBuYW4gPSBlbi5nZXROYU4oKTsKKyAgICAgICAgZnIuc2V0TmFOKG5hbik7CisgICAgICAgIFN0cmluZyBuYW4yID0gZnIuZ2V0TmFOKCk7CisgICAgICAgIGlmICghbmFuLmVxdWFscyhuYW4yKSkgeworICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBnZXQvc2V0IE5hTiBmYWlsZWQiKTsKKyAgICAgICAgfQorICAgIAorICAgICAgICBjaGFyIG1pbnVzU2lnbiA9IGVuLmdldE1pbnVzU2lnbigpOworICAgICAgICBmci5zZXRNaW51c1NpZ24obWludXNTaWduKTsKKyAgICAgICAgaWYgKGZyLmdldE1pbnVzU2lnbigpICE9IGVuLmdldE1pbnVzU2lnbigpKSB7CisgICAgICAgICAgICBlcnJsbigiRVJST1I6IGdldC9zZXQgTWludXNTaWduIGZhaWxlZCIpOworICAgICAgICB9CisgICAgCisgICAgICAgIC8vICAgICAgICBjaGFyIGV4cG9uZW50aWFsID0gZW4uZ2V0RXhwb25lbnRpYWxTeW1ib2woKTsKKyAgICAgICAgLy8gICAgICAgIGZyLnNldEV4cG9uZW50aWFsU3ltYm9sKGV4cG9uZW50aWFsKTsKKyAgICAgICAgLy8gICAgICAgIGlmKGZyLmdldEV4cG9uZW50aWFsU3ltYm9sKCkgIT0gZW4uZ2V0RXhwb25lbnRpYWxTeW1ib2woKSkgeworICAgICAgICAvLyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogZ2V0L3NldCBFeHBvbmVudGlhbCBmYWlsZWQiKTsKKyAgICAgICAgLy8gICAgICAgIH0KKyAgICAKKyAgICAgICAgLy9EZWNpbWFsRm9ybWF0U3ltYm9scyBmb28gPSBuZXcgRGVjaW1hbEZvcm1hdFN5bWJvbHMoKTsgLy9UaGUgdmFyaWFibGUgaXMgbmV2ZXIgdXNlZAorICAgIAorICAgICAgICBlbiA9IChEZWNpbWFsRm9ybWF0U3ltYm9scykgZnIuY2xvbmUoKTsKKyAgICAKKyAgICAgICAgaWYgKCFlbi5lcXVhbHMoZnIpKSB7CisgICAgICAgICAgICBlcnJsbigiRVJST1I6IENsb25lIGZhaWxlZCIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBEZWNpbWFsRm9ybWF0U3ltYm9scyBzeW0gPSBuZXcgRGVjaW1hbEZvcm1hdFN5bWJvbHMoTG9jYWxlLlVTKTsKKyAgICAKKyAgICAgICAgdmVyaWZ5KDM0LjUsICIwMC4wMCIsIHN5bSwgIjM0LjUwIik7CisgICAgICAgIHN5bS5zZXREZWNpbWFsU2VwYXJhdG9yKCdTJyk7CisgICAgICAgIHZlcmlmeSgzNC41LCAiMDAuMDAiLCBzeW0sICIzNFM1MCIpOworICAgICAgICBzeW0uc2V0UGVyY2VudCgnUCcpOworICAgICAgICB2ZXJpZnkoMzQuNSwgIjAwICUiLCBzeW0sICIzNDUwIFAiKTsKKyAgICAgICAgc3ltLnNldEN1cnJlbmN5U3ltYm9sKCJEIik7CisgICAgICAgIHZlcmlmeSgzNC41LCAiXHUwMGE0IyMuIyMiLCBzeW0sICJEMzQuNSIpOworICAgICAgICBzeW0uc2V0R3JvdXBpbmdTZXBhcmF0b3IoJ3wnKTsKKyAgICAgICAgdmVyaWZ5KDM0NTYuNSwgIjAsMDAwLiMjIiwgc3ltLCAiM3w0NTZTNSIpOworICAgIH0KKyAgICAKKyAgICAvKiogaGVscGVyIGZ1bmN0aW9ucyoqLworICAgIHB1YmxpYyB2b2lkIHZlcmlmeShkb3VibGUgdmFsdWUsIFN0cmluZyBwYXR0ZXJuLCBEZWNpbWFsRm9ybWF0U3ltYm9scyBzeW0sIFN0cmluZyBleHBlY3RlZCkgeworICAgICAgICBEZWNpbWFsRm9ybWF0IGRmID0gbmV3IERlY2ltYWxGb3JtYXQocGF0dGVybiwgc3ltKTsKKyAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZmZlciA9IG5ldyBTdHJpbmdCdWZmZXIoIiIpOworICAgICAgICBGaWVsZFBvc2l0aW9uIHBvcyA9IG5ldyBGaWVsZFBvc2l0aW9uKC0xKTsKKyAgICAgICAgYnVmZmVyID0gZGYuZm9ybWF0KHZhbHVlLCBidWZmZXIsIHBvcyk7CisgICAgICAgIGlmKCFidWZmZXIudG9TdHJpbmcoKS5lcXVhbHMoZXhwZWN0ZWQpKXsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogZm9ybWF0IGZhaWxlZCBhZnRlciBzZXRTeW1ib2xzKClcbiBFeHBlY3RlZCIgKyAKKyAgICAgICAgICAgICAgICBleHBlY3RlZCArICIsIEdvdCAiICsgYnVmZmVyKTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvZm9ybWF0L0ludGxUZXN0TnVtYmVyRm9ybWF0LmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvZm9ybWF0L0ludGxUZXN0TnVtYmVyRm9ybWF0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMzU2MjM4OAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9mb3JtYXQvSW50bFRlc3ROdW1iZXJGb3JtYXQuamF2YQpAQCAtMCwwICsxLDI5MiBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICAgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvZm9ybWF0L0ludGxUZXN0TnVtYmVyRm9ybWF0LmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDIvMTYgMDM6MDU6MTEgJCAKKyAqICRSZXZpc2lvbjogMS4zICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCisvKiogCisgKiBQb3J0IEZyb206ICAgSUNVNEMgdjEuOC4xIDogZm9ybWF0IDogSW50bFRlc3ROdW1iZXJGb3JtYXQKKyAqIFNvdXJjZSBGaWxlOiAkSUNVNENSb290L3NvdXJjZS90ZXN0L2ludGx0ZXN0L3Rzbm1mbXQuY3BwCisgKiovCisKK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3QuZm9ybWF0OworCitpbXBvcnQgY29tLmlibS5pY3UubGFuZy4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuKjsKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLio7CisKKy8qKgorICogVGhpcyB0ZXN0IGRvZXMgcm91bmQtdHJpcCB0ZXN0aW5nIChmb3JtYXQgLT4gcGFyc2UgLT4gZm9ybWF0IC0+IHBhcnNlIC0+IGV0Yy4pIG9mCisgKiBOdW1iZXJGb3JtYXQuCisgKi8KK3B1YmxpYyBjbGFzcyBJbnRsVGVzdE51bWJlckZvcm1hdCBleHRlbmRzIGNvbS5pYm0uaWN1LmRldi50ZXN0LlRlc3RGbXdrIHsKKyAgICAKKyAgICBwdWJsaWMgTnVtYmVyRm9ybWF0IGZOdW1iZXJGb3JtYXQgPSBOdW1iZXJGb3JtYXQuZ2V0SW5zdGFuY2UoKTsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBuZXcgSW50bFRlc3ROdW1iZXJGb3JtYXQoKS5ydW4oYXJncyk7CisgICAgfQorICAgIAorICAgIC8qCisgICAgICogSW50ZXJuYWwgdXNlCisgICAgICoqLworICAgIHB1YmxpYyB2b2lkIF90ZXN0TG9jYWxlKGphdmEudXRpbC5Mb2NhbGUgbG9jYWxlLCBTdHJpbmcgbG9jYWxlTmFtZSkgeworICAgICAgICBTdHJpbmcgbmFtZTsKKyAgICAvLyAgICBsb2NhbGUgPSBqYXZhLnV0aWwuTG9jYWxlLmdldERlZmF1bHQoKTsKKyAgICAvLyAgICBsb2NhbGVOYW1lID0gbG9jYWxlLmdldERpc3BsYXlOYW1lKCk7CisgICAgICAgICAgICAKKyAgICAgICAgbmFtZSA9ICJOdW1iZXIgdGVzdCI7CisgICAgICAgIGxvZ2xuKG5hbWUgKyAiICggIiArIGxvY2FsZU5hbWUgKyAiICkgIik7CisgICAgICAgIGZOdW1iZXJGb3JtYXQgPSBOdW1iZXJGb3JtYXQuZ2V0SW5zdGFuY2UobG9jYWxlKTsKKyAgICAgICAgVGVzdEZvcm1hdCgpOworICAgIAorICAgICAgICBuYW1lID0gIkN1cnJlbmN5IHRlc3QiOworICAgICAgICBsb2dsbihuYW1lICsgIiAoIiArIGxvY2FsZU5hbWUgKyAiKSIpOworICAgICAgICBmTnVtYmVyRm9ybWF0ID0gTnVtYmVyRm9ybWF0LmdldEN1cnJlbmN5SW5zdGFuY2UobG9jYWxlKTsKKyAgICAgICAgVGVzdEZvcm1hdCgvKiBwYXIgKi8pOworICAgIAorICAgICAgICBuYW1lID0gIlBlcmNlbnQgdGVzdCI7CisgICAgICAgIGxvZ2xuKG5hbWUgKyAiICgiICsgbG9jYWxlTmFtZSArICIpIik7CisgICAgICAgIGZOdW1iZXJGb3JtYXQgPSBOdW1iZXJGb3JtYXQuZ2V0UGVyY2VudEluc3RhbmNlKGxvY2FsZSk7CisgICAgICAgIFRlc3RGb3JtYXQoLyogcGFyICovKTsKKyAgICAgICAgCisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqICBjYWxsIFRlc3RGb3JtYXQgZm9yIGN1cnJlbmN5LCBwZXJjZW50IGFuZCBwbGFpbiBudW1iZXIgaW5zdGFuY2VzCisgICAgICoqLworICAgIHB1YmxpYyB2b2lkIFRlc3RMb2NhbGUoKSB7CisgICAgICAgIFN0cmluZyBuYW1lOworICAgICAgICBTdHJpbmcgbG9jYWxlTmFtZTsgICAgCisgICAgICAgIGphdmEudXRpbC5Mb2NhbGUgbG9jYWxlID0gamF2YS51dGlsLkxvY2FsZS5nZXREZWZhdWx0KCk7CisgICAgICAgIGxvY2FsZU5hbWUgPSBsb2NhbGUuZ2V0RGlzcGxheU5hbWUoKTsKKyAgICAgICAgICAgIAorICAgICAgICBuYW1lID0gIk51bWJlciB0ZXN0IjsKKyAgICAgICAgbG9nbG4obmFtZSArICIgKCAiICsgbG9jYWxlTmFtZSArICIgKSAiKTsKKyAgICAgICAgZk51bWJlckZvcm1hdCA9IE51bWJlckZvcm1hdC5nZXRJbnN0YW5jZSgpOworICAgICAgICBUZXN0Rm9ybWF0KCk7CisgICAgCisgICAgICAgIG5hbWUgPSAiQ3VycmVuY3kgdGVzdCI7CisgICAgICAgIGxvZ2xuKG5hbWUgKyAiICgiICsgbG9jYWxlTmFtZSArICIpIik7CisgICAgICAgIGZOdW1iZXJGb3JtYXQgPSBOdW1iZXJGb3JtYXQuZ2V0Q3VycmVuY3lJbnN0YW5jZSgpOworICAgICAgICBUZXN0Rm9ybWF0KC8qIHBhciAqLyk7CisgICAgCisgICAgICAgIG5hbWUgPSAiUGVyY2VudCB0ZXN0IjsKKyAgICAgICAgbG9nbG4obmFtZSArICIgKCIgKyBsb2NhbGVOYW1lICsgIikiKTsKKyAgICAgICAgZk51bWJlckZvcm1hdCA9IE51bWJlckZvcm1hdC5nZXRQZXJjZW50SW5zdGFuY2UoKTsKKyAgICAgICAgVGVzdEZvcm1hdCgvKiBwYXIgKi8pOworICAgICAgICAKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogIGNhbGwgdHJ5SXQgd2l0aCBtYW55IHZhcmlhdGlvbnMsIGNhbGxlZCBieSB0ZXN0TG9jYWxlCisgICAgICoqLworICAgIHB1YmxpYyB2b2lkIFRlc3RGb3JtYXQoKSB7CisgICAgICAgIAorICAgICAgICBpZiAoZk51bWJlckZvcm1hdCA9PSBudWxsKXsKKyAgICAgICAgICAgIGVycmxuKCIqKioqIEZBSUw6IE51bGwgZm9ybWF0IHJldHVybmVkIGJ5IGNyZWF0ZVh4eEluc3RhbmNlLiIpOworICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBEZWNpbWFsRm9ybWF0IHMgPSAoRGVjaW1hbEZvcm1hdClmTnVtYmVyRm9ybWF0OworICAgICAgICBsb2dsbigicGF0dGVybiA6IiArIHMudG9QYXR0ZXJuKCkpOworICAgIAorICAgICAgICB0cnlJdCgtMi4wMjE0NzMwNDg0MDEzMmUtNjgpOworICAgICAgICB0cnlJdCgzLjg4MDU3ODU5NTg4ODE3ZS02OCk7IAorICAgICAgICB0cnlJdCgtMi42NDY1MTExMDQ4NTk0NWUrNjUpOworICAgICAgICB0cnlJdCg5LjI5NTI2ODE5NDg4MzM4ZSs2NCk7CisgICAgCisgICAgICAgIHRyeUl0KC0yLjAyMTQ3MzA0ODQwMTMyZS0xMDApOworICAgICAgICB0cnlJdCgzLjg4MDU3ODU5NTg4ODE3ZS0wOTYpOyAKKyAgICAgICAgdHJ5SXQoLTIuNjQ2NTExMTA0ODU5NDVlKzMwNik7CisgICAgICAgIHRyeUl0KDkuMjk1MjY4MTk0ODgzMzhlKzI1MCk7IAorICAgIAorICAgICAgICB0cnlJdCgtOS4xODIyODA1NDQ5NjQwMmUrNjQpOworICAgICAgICB0cnlJdCgtOS42OTQxMzAzNDQ1NDE5MWUrNjQpOworICAgIAorICAgICAgICB0cnlJdCgtOS4xODIyODA1NDQ5NjQwMmUrMjU1KTsKKyAgICAgICAgdHJ5SXQoLTkuNjk0MTMwMzQ0NTQxOTFlKzI3Myk7CisgICAgCisgICAgCisgICAgICAgIHRyeUl0KDEuMjM0ZS0yMDApOworICAgICAgICB0cnlJdCgtMi4zZS0xNjgpOworICAgIAorICAgICAgICB0cnlJdChEb3VibGUuTmFOKTsKKyAgICAgICAgdHJ5SXQoRG91YmxlLlBPU0lUSVZFX0lORklOSVRZKTsKKyAgICAgICAgdHJ5SXQoRG91YmxlLk5FR0FUSVZFX0lORklOSVRZKTsKKyAgICAKKyAgICAgICAgdHJ5SXQoMjUxODg3NTMxKTsKKyAgICAgICAgdHJ5SXQoNWUtMjAgLyA5KTsKKyAgICAgICAgdHJ5SXQoNWUyMCAvIDkpOworICAgICAgICB0cnlJdCgxLjIzNGUtNTApOworICAgICAgICB0cnlJdCg5Ljk5OTk5OTk5OTk5OTk2KTsKKyAgICAgICAgdHJ5SXQoOS45OTk5OTk5OTk5OTk5OTYpOworICAgIAorICAgICAgICB0cnlJdChJbnRlZ2VyLk1JTl9WQUxVRSk7CisgICAgICAgIHRyeUl0KEludGVnZXIuTUFYX1ZBTFVFKTsKKyAgICAgICAgdHJ5SXQoKGRvdWJsZSlJbnRlZ2VyLk1JTl9WQUxVRSk7CisgICAgICAgIHRyeUl0KChkb3VibGUpSW50ZWdlci5NQVhfVkFMVUUpOworICAgICAgICB0cnlJdCgoZG91YmxlKUludGVnZXIuTUlOX1ZBTFVFIC0gMS4wKTsKKyAgICAgICAgdHJ5SXQoKGRvdWJsZSlJbnRlZ2VyLk1BWF9WQUxVRSArIDEuMCk7CisgICAgCisgICAgICAgIHRyeUl0KDUuMCAvIDkuMCAqIDFlLTIwKTsKKyAgICAgICAgdHJ5SXQoNC4wIC8gOS4wICogMWUtMjApOworICAgICAgICB0cnlJdCg1LjAgLyA5LjAgKiAxZSsyMCk7CisgICAgICAgIHRyeUl0KDQuMCAvIDkuMCAqIDFlKzIwKTsKKyAgICAKKyAgICAgICAgdHJ5SXQoMjE0NzQ4MzY0Ny4pOworICAgICAgICB0cnlJdCgwKTsKKyAgICAgICAgdHJ5SXQoMC4wKTsKKyAgICAgICAgdHJ5SXQoMSk7CisgICAgICAgIHRyeUl0KDEwKTsKKyAgICAgICAgdHJ5SXQoMTAwKTsKKyAgICAgICAgdHJ5SXQoLTEpOworICAgICAgICB0cnlJdCgtMTApOworICAgICAgICB0cnlJdCgtMTAwKTsKKyAgICAgICAgdHJ5SXQoLTE5MTM4NjAzNTIpOworICAgIAorICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IDEwOyBqKyspIHsKKyAgICAgICAgICAgIGRvdWJsZSBkID0gTWF0aC5yYW5kb20oKSoyZTEwIC0gMWUxMDsKKyAgICAgICAgICAgIHRyeUl0KGQpOworICAgICAgICAgICAgCisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogIHBlcmZvcm0gdGVzdHMgdXNpbmcgYU51bWJlciBhbmQgZk51bWJlckZvcm1hdCwgY2FsbGVkIGluIG1hbnkgdmFyaWF0aW9ucworICAgICAqKi8KKyAgICBwdWJsaWMgdm9pZCB0cnlJdChkb3VibGUgYU51bWJlcikgeyAgICAKKyAgICAgICAgZmluYWwgaW50IERFUFRIID0gMTA7CisgICAgICAgIGRvdWJsZVtdIG51bWJlciA9IG5ldyBkb3VibGVbREVQVEhdOworICAgICAgICBTdHJpbmdbXSBzdHJpbmcgPSBuZXcgU3RyaW5nW0RFUFRIXTsKKyAgICAgICAgaW50IG51bWJlck1hdGNoID0gMDsKKyAgICAgICAgaW50IHN0cmluZ01hdGNoID0gMDsKKyAgICAgICAgYm9vbGVhbiBkdW1wID0gZmFsc2U7CisgICAgICAgIGludCBpOworICAgIAorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgREVQVEg7IGkrKykgeworICAgICAgICAgICAgaWYgKGkgPT0gMCkgeworICAgICAgICAgICAgICAgIG51bWJlcltpXSA9IGFOdW1iZXI7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIG51bWJlcltpIC0gMV0gPSBmTnVtYmVyRm9ybWF0LnBhcnNlKHN0cmluZ1tpIC0gMV0pLmRvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICAgICAgfSBjYXRjaChqYXZhLnRleHQuUGFyc2VFeGNlcHRpb24gcGUpIHsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIioqKiogRkFJTDogUGFyc2Ugb2YgIiArIHN0cmluZ1tpLTFdICsgIiBmYWlsZWQuIik7CisgICAgICAgICAgICAgICAgICAgIGR1bXAgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgCisgICAgICAgICAgICBzdHJpbmdbaV0gPSBmTnVtYmVyRm9ybWF0LmZvcm1hdChudW1iZXJbaV0pOworICAgICAgICAgICAgaWYgKGkgPiAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChudW1iZXJNYXRjaCA9PSAwICYmIG51bWJlcltpXSA9PSBudW1iZXJbaS0xXSkKKyAgICAgICAgICAgICAgICAgICAgbnVtYmVyTWF0Y2ggPSBpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKG51bWJlck1hdGNoID4gMCAmJiBudW1iZXJbaV0gIT0gbnVtYmVyW2ktMV0pCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigiKioqKiBGQUlMOiBOdW1lcmljIG1pc21hdGNoIGFmdGVyIG1hdGNoLiIpOworICAgICAgICAgICAgICAgICAgICBkdW1wID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChzdHJpbmdNYXRjaCA9PSAwICYmIHN0cmluZ1tpXSA9PSBzdHJpbmdbaS0xXSkKKyAgICAgICAgICAgICAgICAgICAgc3RyaW5nTWF0Y2ggPSBpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN0cmluZ01hdGNoID4gMCAmJiBzdHJpbmdbaV0gIT0gc3RyaW5nW2ktMV0pCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigiKioqKiBGQUlMOiBTdHJpbmcgbWlzbWF0Y2ggYWZ0ZXIgbWF0Y2guIik7CisgICAgICAgICAgICAgICAgICAgIGR1bXAgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobnVtYmVyTWF0Y2ggPiAwICYmIHN0cmluZ01hdGNoID4gMCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAKKyAgICAgICAgICAgIGlmIChpID09IERFUFRIKQorICAgICAgICAgICAgLS1pOworICAgIAorICAgICAgICBpZiAoc3RyaW5nTWF0Y2ggPiAyIHx8IG51bWJlck1hdGNoID4gMikKKyAgICAgICAgeworICAgICAgICAgICAgZXJybG4oIioqKiogRkFJTDogTm8gc3RyaW5nIGFuZC9vciBudW1iZXIgbWF0Y2ggd2l0aGluIDIgaXRlcmF0aW9ucy4iKTsKKyAgICAgICAgICAgIGR1bXAgPSB0cnVlOworICAgICAgICB9CisgICAgCisgICAgICAgIGlmIChkdW1wKQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKGludCBrPTA7IGs8PWk7ICsraykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBsb2dsbihrICsgIjogIiArIG51bWJlcltrXSArICIgRj4gIiArCisgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nW2tdICsgIiBQPiAiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqICBwZXJmb3JtIHRlc3RzIHVzaW5nIGFOdW1iZXIgYW5kIGZOdW1iZXJGb3JtYXQsIGNhbGxlZCBpbiBtYW55IHZhcmlhdGlvbnMKKyAgICAgKiovCisgICAgcHVibGljIHZvaWQgdHJ5SXQoaW50IGFOdW1iZXIpIHsKKyAgICAgICAgbG9uZyBudW1iZXI7OworICAgICAgICAKKyAgICAgICAgU3RyaW5nIHN0cmluZ051bSA9IGZOdW1iZXJGb3JtYXQuZm9ybWF0KGFOdW1iZXIpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgbnVtYmVyID0gZk51bWJlckZvcm1hdC5wYXJzZShzdHJpbmdOdW0pLmxvbmdWYWx1ZSgpOworICAgICAgICB9IGNhdGNoIChqYXZhLnRleHQuUGFyc2VFeGNlcHRpb24gcGUpIHsKKyAgICAgICAgICAgIGVycmxuKCIqKioqIEZBSUw6IFBhcnNlIG9mICIgKyBzdHJpbmdOdW0gKyAiIGZhaWxlZC4iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIAorICAgICAgICBpZiAobnVtYmVyICE9IGFOdW1iZXIpIHsKKyAgICAgICAgICAgIGVycmxuKCIqKioqIEZBSUw6IFBhcnNlIG9mICIgKyBzdHJpbmdOdW0gKyAiIGZhaWxlZC4gR290OiIgKyBudW1iZXIKKyAgICAgICAgICAgICAgICArICIgRXhwZWN0ZWQ6IiArIGFOdW1iZXIpOworICAgICAgICB9CisgICAgICAgIAorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiAgdGVzdCBOdW1iZXJGb3JtYXQ6OmdldEF2YWlsYWJsZUxvY2FsZXMKKyAgICAgKiovCisgICAgcHVibGljIHZvaWQgVGVzdEF2YWlsYWJsZUxvY2FsZXMoKSB7CisgICAgICAgIGZpbmFsIGphdmEudXRpbC5Mb2NhbGVbXSBsb2NhbGVzID0gTnVtYmVyRm9ybWF0LmdldEF2YWlsYWJsZUxvY2FsZXMoKTsKKyAgICAgICAgaW50IGNvdW50ID0gbG9jYWxlcy5sZW5ndGg7CisgICAgICAgIGxvZ2xuKGNvdW50ICsgIiBhdmFpbGFibGUgbG9jYWxlcyIpOworICAgICAgICBpZiAoY291bnQgIT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgU3RyaW5nIGFsbCA9ICIiOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGk8IGNvdW50OyArK2kpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGkhPTApCisgICAgICAgICAgICAgICAgICAgIGFsbCArPSAiLCAiOworICAgICAgICAgICAgICAgIGFsbCArPSBsb2NhbGVzW2ldLmdldERpc3BsYXlOYW1lKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsb2dsbihhbGwpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVycmxuKCIqKioqIEZBSUw6IFplcm8gYXZhaWxhYmxlIGxvY2FsZXMgb3IgbnVsbCBhcnJheSBwb2ludGVyIik7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqICBjYWxsIHRlc3RMb2NhbGUgZm9yIGFsbCBsb2NhbGVzCisgICAgICoqLyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0TW9uc3RlcigpIHsKKyAgICAgICAgZmluYWwgU3RyaW5nIFNFUCA9ICI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiI7CisgICAgICAgIGludCBjb3VudDsKKyAgICAgICAgZmluYWwgamF2YS51dGlsLkxvY2FsZVtdIGxvY2FsZXMgPSBOdW1iZXJGb3JtYXQuZ2V0QXZhaWxhYmxlTG9jYWxlcygpOworICAgICAgICBjb3VudCA9IGxvY2FsZXMubGVuZ3RoOworICAgICAgICBpZiAoY291bnQgIT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgY291bnQgPSAzOyAvLyAganVzdCB0ZXN0IDMgbG9jYWxlcyAKKyAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxjb3VudDsgKytpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFN0cmluZyBuYW1lID0gbG9jYWxlc1tpXS5nZXREaXNwbGF5TmFtZSgpOworICAgICAgICAgICAgICAgIGxvZ2xuKFNFUCk7CisgICAgICAgICAgICAgICAgX3Rlc3RMb2NhbGUoLyogcGFyLCAqL2xvY2FsZXNbaV0sIG5hbWUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgCisgICAgICAgIGxvZ2xuKFNFUCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9mb3JtYXQvSW50bFRlc3ROdW1iZXJGb3JtYXRBUEkuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9mb3JtYXQvSW50bFRlc3ROdW1iZXJGb3JtYXRBUEkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44ZWM0Mzk5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2Zvcm1hdC9JbnRsVGVzdE51bWJlckZvcm1hdEFQSS5qYXZhCkBAIC0wLDAgKzEsMjExIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9mb3JtYXQvSW50bFRlc3ROdW1iZXJGb3JtYXRBUEkuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wOC8wMSAyMDoyNzoyMSAkIAorICogJFJldmlzaW9uOiAxLjQgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqLworCisvKiogCisgKiBQb3J0IEZyb206ICAgSkRLIDEuNGIxIDogamF2YS50ZXh0LkZvcm1hdC5JbnRsVGVzdE51bWJlckZvcm1hdEFQSQorICogU291cmNlIEZpbGU6IGphdmEvdGV4dC9mb3JtYXQvSW50bFRlc3ROdW1iZXJGb3JtYXRBUEkuamF2YQorICoqLworCisvKgorICAgIEB0ZXN0IDEuNCA5OC8wMy8wNgorICAgIEBzdW1tYXJ5IHRlc3QgSW50ZXJuYXRpb25hbCBOdW1iZXIgRm9ybWF0IEFQSQorKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogICBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworKiAgIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0LmZvcm1hdDsKKworaW1wb3J0IGNvbS5pYm0uaWN1LmxhbmcuKjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0Lio7CitpbXBvcnQgY29tLmlibS5pY3UudXRpbC4qOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CitpbXBvcnQgamF2YS50ZXh0LkZpZWxkUG9zaXRpb247CitpbXBvcnQgamF2YS50ZXh0LlBhcnNlUG9zaXRpb247CitpbXBvcnQgamF2YS50ZXh0LlBhcnNlRXhjZXB0aW9uOworCitwdWJsaWMgY2xhc3MgSW50bFRlc3ROdW1iZXJGb3JtYXRBUEkgZXh0ZW5kcyBjb20uaWJtLmljdS5kZXYudGVzdC5UZXN0Rm13aworeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBuZXcgSW50bFRlc3ROdW1iZXJGb3JtYXRBUEkoKS5ydW4oYXJncyk7CisgICAgfQorCisgICAgLy8gVGhpcyB0ZXN0IGNoZWNrcyB2YXJpb3VzIGdlbmVyaWMgQVBJIG1ldGhvZHMgaW4gRGVjaW1hbEZvcm1hdCB0byBhY2hpZXZlIDEwMCUgQVBJIGNvdmVyYWdlLgorICAgIHB1YmxpYyB2b2lkIFRlc3RBUEkoKQorICAgIHsKKyAgICAgICAgbG9nbG4oIk51bWJlckZvcm1hdCBBUEkgdGVzdC0tLSIpOyBsb2dsbigiIik7CisgICAgICAgIExvY2FsZS5zZXREZWZhdWx0KExvY2FsZS5FTkdMSVNIKTsKKworICAgICAgICAvLyA9PT09PT09IFRlc3QgY29uc3RydWN0b3JzCisKKyAgICAgICAgbG9nbG4oIlRlc3RpbmcgTnVtYmVyRm9ybWF0IGNvbnN0cnVjdG9ycyIpOworCisgICAgICAgIE51bWJlckZvcm1hdCBkZWYgPSBOdW1iZXJGb3JtYXQuZ2V0SW5zdGFuY2UoKTsKKworICAgICAgICBOdW1iZXJGb3JtYXQgZnIgPSBOdW1iZXJGb3JtYXQuZ2V0SW5zdGFuY2UoTG9jYWxlLkZSRU5DSCk7CisKKyAgICAgICAgTnVtYmVyRm9ybWF0IGN1ciA9IE51bWJlckZvcm1hdC5nZXRDdXJyZW5jeUluc3RhbmNlKCk7CisKKyAgICAgICAgTnVtYmVyRm9ybWF0IGN1cl9mciA9IE51bWJlckZvcm1hdC5nZXRDdXJyZW5jeUluc3RhbmNlKExvY2FsZS5GUkVOQ0gpOworCisgICAgICAgIE51bWJlckZvcm1hdCBwZXIgPSBOdW1iZXJGb3JtYXQuZ2V0UGVyY2VudEluc3RhbmNlKCk7CisKKyAgICAgICAgTnVtYmVyRm9ybWF0IHBlcl9mciA9IE51bWJlckZvcm1hdC5nZXRQZXJjZW50SW5zdGFuY2UoTG9jYWxlLkZSRU5DSCk7CisgICAgICAgIAorICAgICAgICBOdW1iZXJGb3JtYXQgaW50ZWdlciA9IE51bWJlckZvcm1hdC5nZXRJbnRlZ2VySW5zdGFuY2UoKTsKKyAgICAgICAgCisgICAgICAgIE51bWJlckZvcm1hdCBpbnRfZnIgPSBOdW1iZXJGb3JtYXQuZ2V0SW50ZWdlckluc3RhbmNlKExvY2FsZS5GUkVOQ0gpOworICAgICAgICAKKyAgICAgICAgLy9GaXggIlRoZSB2YXJpYWJsZSBpcyBuZXZlciB1c2VkIiBjb21waWxhdGlvbiB3YXJuaW5ncworICAgICAgICBsb2dsbigiQ3VycmVuY3kgOiAiICsgY3VyLmZvcm1hdCgxMjM0LjUpKTsKKyAgICAgICAgbG9nbG4oIlBlcmNlbnQgOiAiICsgcGVyLmZvcm1hdCgxMjM0LjUpKTsKKyAgICAgICAgbG9nbG4oIkludGVnZXIgOiAiICsgaW50ZWdlci5mb3JtYXQoMTIzNC41KSk7CisgICAgICAgIGxvZ2xuKCJJbnRfZnIgOiAiICsgaW50X2ZyLmZvcm1hdCgxMjM0LjUpKTsKKyAgICAgICAgCisgICAgICAgIC8vID09PT09PT0gVGVzdCBlcXVhbGl0eQorCisgICAgICAgIGxvZ2xuKCJUZXN0aW5nIGVxdWFsaXR5IG9wZXJhdG9yIik7CisKKyAgICAgICAgaWYoIHBlcl9mci5lcXVhbHMoY3VyX2ZyKSApIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogPT0gZmFpbGVkIik7CisgICAgICAgIH0KKworICAgICAgICAvLyA9PT09PT09IFRlc3QgdmFyaW91cyBmb3JtYXQoKSBtZXRob2RzCisKKyAgICAgICAgbG9nbG4oIlRlc3RpbmcgdmFyaW91cyBmb3JtYXQoKSBtZXRob2RzIik7CisKKy8vICAgICAgICBmaW5hbCBkb3VibGUgZCA9IC0xMDQ1Ni4wMDM3OyAvLyB0aGlzIGFwcGVhcnMgYXMgLTEwNDU2LjAwMzcwMDAwMDAwMSBvbiBOVAorLy8gICAgICAgIGZpbmFsIGRvdWJsZSBkID0gLTEuMDQ1NjAwMzdlLTQ7IC8vIHRoaXMgYXBwZWFycyBhcyAtMS4wNDU2MDAzNzAwMDAwMDAyRS00IG9uIE5UCisgICAgICAgIGZpbmFsIGRvdWJsZSBkID0gLTEwNDU2LjAwMzcwMDAwMDAwMDAwOyAvLyB0aGlzIHdvcmtzIQorICAgICAgICBmaW5hbCBsb25nIGwgPSAxMDAwMDAwMDA7CisKKyAgICAgICAgU3RyaW5nIHJlczEgPSBuZXcgU3RyaW5nKCk7CisgICAgICAgIFN0cmluZyByZXMyID0gbmV3IFN0cmluZygpOworICAgICAgICBTdHJpbmdCdWZmZXIgcmVzMyA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgU3RyaW5nQnVmZmVyIHJlczQgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIFN0cmluZ0J1ZmZlciByZXM1ID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBTdHJpbmdCdWZmZXIgcmVzNiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgRmllbGRQb3NpdGlvbiBwb3MxID0gbmV3IEZpZWxkUG9zaXRpb24oMCk7CisgICAgICAgIEZpZWxkUG9zaXRpb24gcG9zMiA9IG5ldyBGaWVsZFBvc2l0aW9uKDApOworICAgICAgICBGaWVsZFBvc2l0aW9uIHBvczMgPSBuZXcgRmllbGRQb3NpdGlvbigwKTsKKyAgICAgICAgRmllbGRQb3NpdGlvbiBwb3M0ID0gbmV3IEZpZWxkUG9zaXRpb24oMCk7CisKKyAgICAgICAgcmVzMSA9IGN1cl9mci5mb3JtYXQoZCk7CisgICAgICAgIGxvZ2xuKCAiIiArIGQgKyAiIGZvcm1hdHRlZCB0byAiICsgcmVzMSk7CisKKyAgICAgICAgcmVzMiA9IGN1cl9mci5mb3JtYXQobCk7CisgICAgICAgIGxvZ2xuKCIiICsgbCArICIgZm9ybWF0dGVkIHRvICIgKyByZXMyKTsKKworICAgICAgICByZXMzID0gY3VyX2ZyLmZvcm1hdChkLCByZXMzLCBwb3MxKTsKKyAgICAgICAgbG9nbG4oICIiICsgZCArICIgZm9ybWF0dGVkIHRvICIgKyByZXMzKTsKKworICAgICAgICByZXM0ID0gY3VyX2ZyLmZvcm1hdChsLCByZXM0LCBwb3MyKTsKKyAgICAgICAgbG9nbG4oIiIgKyBsICsgIiBmb3JtYXR0ZWQgdG8gIiArIHJlczQpOworCisgICAgICAgIHJlczUgPSBjdXJfZnIuZm9ybWF0KGQsIHJlczUsIHBvczMpOworICAgICAgICBsb2dsbigiIiArIGQgKyAiIGZvcm1hdHRlZCB0byAiICsgcmVzNSk7CisKKyAgICAgICAgcmVzNiA9IGN1cl9mci5mb3JtYXQobCwgcmVzNiwgcG9zNCk7CisgICAgICAgIGxvZ2xuKCIiICsgbCArICIgZm9ybWF0dGVkIHRvICIgKyByZXM2KTsKKworCisgICAgICAgIC8vID09PT09PT0gVGVzdCBwYXJzZSgpCisKKyAgICAgICAgbG9nbG4oIlRlc3RpbmcgcGFyc2UoKSIpOworCisvLyAgICAgICAgU3RyaW5nIHRleHQgPSBuZXcgU3RyaW5nKCItMTAsNDU2LjAwMzciKTsKKyAgICAgICAgU3RyaW5nIHRleHQgPSBuZXcgU3RyaW5nKCItMTA0NTYsMDAzNyIpOworICAgICAgICBQYXJzZVBvc2l0aW9uIHBvcyA9IG5ldyBQYXJzZVBvc2l0aW9uKDApOworICAgICAgICBQYXJzZVBvc2l0aW9uIHBvczAxID0gbmV3IFBhcnNlUG9zaXRpb24oMCk7CisgICAgICAgIGRvdWJsZSBkMSA9ICgoTnVtYmVyKWZyLnBhcnNlT2JqZWN0KHRleHQsIHBvcykpLmRvdWJsZVZhbHVlKCk7CisgICAgICAgIGlmKGQxICE9IGQpIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogUm91bmR0cmlwIGZhaWxlZCAodmlhIHBhcnNlKCkpIGZvciAiICsgdGV4dCk7CisgICAgICAgIH0KKyAgICAgICAgbG9nbG4odGV4dCArICIgcGFyc2VkIGludG8gIiArIGQxKTsKKworICAgICAgICBkb3VibGUgZDIgPSBmci5wYXJzZSh0ZXh0LCBwb3MwMSkuZG91YmxlVmFsdWUoKTsKKyAgICAgICAgaWYoZDIgIT0gZCkgeworICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBSb3VuZHRyaXAgZmFpbGVkICh2aWEgcGFyc2UoKSkgZm9yICIgKyB0ZXh0KTsKKyAgICAgICAgfQorICAgICAgICBsb2dsbih0ZXh0ICsgIiBwYXJzZWQgaW50byAiICsgZDIpOworCisgICAgICAgIGRvdWJsZSBkMyA9IDA7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBkMyA9IGZyLnBhcnNlKHRleHQpLmRvdWJsZVZhbHVlKCk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKFBhcnNlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogcGFyc2UoKSBmYWlsZWQiKTsKKyAgICAgICAgfQorICAgICAgICBpZihkMyAhPSBkKSB7CisgICAgICAgICAgICBlcnJsbigiRVJST1I6IFJvdW5kdHJpcCBmYWlsZWQgKHZpYSBwYXJzZSgpKSBmb3IgIiArIHRleHQpOworICAgICAgICB9CisgICAgICAgIGxvZ2xuKHRleHQgKyAiIHBhcnNlZCBpbnRvICIgKyBkMyk7CisKKworICAgICAgICAvLyA9PT09PT09IFRlc3QgZ2V0dGVycyBhbmQgc2V0dGVycworCisgICAgICAgIGxvZ2xuKCJUZXN0aW5nIGdldHRlcnMgYW5kIHNldHRlcnMiKTsKKworICAgICAgICBmaW5hbCBMb2NhbGVbXSBsb2NhbGVzID0gTnVtYmVyRm9ybWF0LmdldEF2YWlsYWJsZUxvY2FsZXMoKTsKKyAgICAgICAgbG9uZyBjb3VudCA9IGxvY2FsZXMubGVuZ3RoOworICAgICAgICBsb2dsbigiR290ICIgKyBjb3VudCArICIgbG9jYWxlcyIgKTsKKyAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKyAgICAgICAgICAgIFN0cmluZyBuYW1lOworICAgICAgICAgICAgbmFtZSA9IGxvY2FsZXNbaV0uZ2V0RGlzcGxheU5hbWUoKTsKKyAgICAgICAgICAgIGxvZ2xuKG5hbWUpOworICAgICAgICB9CisKKyAgICAgICAgZnIuc2V0UGFyc2VJbnRlZ2VyT25seSggZGVmLmlzUGFyc2VJbnRlZ2VyT25seSgpICk7CisgICAgICAgIGlmKGZyLmlzUGFyc2VJbnRlZ2VyT25seSgpICE9IGRlZi5pc1BhcnNlSW50ZWdlck9ubHkoKSApIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRVJST1I6IHNldFBhcnNlSW50ZWdlck9ubHkoKSBmYWlsZWQiKTsKKyAgICAgICAgfQorCisgICAgICAgIGZyLnNldEdyb3VwaW5nVXNlZCggZGVmLmlzR3JvdXBpbmdVc2VkKCkgKTsKKyAgICAgICAgaWYoZnIuaXNHcm91cGluZ1VzZWQoKSAhPSBkZWYuaXNHcm91cGluZ1VzZWQoKSApIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRVJST1I6IHNldEdyb3VwaW5nVXNlZCgpIGZhaWxlZCIpOworICAgICAgICB9CisKKyAgICAgICAgZnIuc2V0TWF4aW11bUludGVnZXJEaWdpdHMoIGRlZi5nZXRNYXhpbXVtSW50ZWdlckRpZ2l0cygpICk7CisgICAgICAgIGlmKGZyLmdldE1heGltdW1JbnRlZ2VyRGlnaXRzKCkgIT0gZGVmLmdldE1heGltdW1JbnRlZ2VyRGlnaXRzKCkgKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBzZXRNYXhpbXVtSW50ZWdlckRpZ2l0cygpIGZhaWxlZCIpOworICAgICAgICB9CisKKyAgICAgICAgZnIuc2V0TWluaW11bUludGVnZXJEaWdpdHMoIGRlZi5nZXRNaW5pbXVtSW50ZWdlckRpZ2l0cygpICk7CisgICAgICAgIGlmKGZyLmdldE1pbmltdW1JbnRlZ2VyRGlnaXRzKCkgIT0gZGVmLmdldE1pbmltdW1JbnRlZ2VyRGlnaXRzKCkgKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBzZXRNaW5pbXVtSW50ZWdlckRpZ2l0cygpIGZhaWxlZCIpOworICAgICAgICB9CisKKyAgICAgICAgZnIuc2V0TWF4aW11bUZyYWN0aW9uRGlnaXRzKCBkZWYuZ2V0TWF4aW11bUZyYWN0aW9uRGlnaXRzKCkgKTsKKyAgICAgICAgaWYoZnIuZ2V0TWF4aW11bUZyYWN0aW9uRGlnaXRzKCkgIT0gZGVmLmdldE1heGltdW1GcmFjdGlvbkRpZ2l0cygpICkgeworICAgICAgICAgICAgICAgIGVycmxuKCJFUlJPUjogc2V0TWF4aW11bUZyYWN0aW9uRGlnaXRzKCkgZmFpbGVkIik7CisgICAgICAgIH0KKworICAgICAgICBmci5zZXRNaW5pbXVtRnJhY3Rpb25EaWdpdHMoIGRlZi5nZXRNaW5pbXVtRnJhY3Rpb25EaWdpdHMoKSApOworICAgICAgICBpZihmci5nZXRNaW5pbXVtRnJhY3Rpb25EaWdpdHMoKSAhPSBkZWYuZ2V0TWluaW11bUZyYWN0aW9uRGlnaXRzKCkgKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBzZXRNaW5pbXVtRnJhY3Rpb25EaWdpdHMoKSBmYWlsZWQiKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vID09PT09PT0gVGVzdCBnZXRTdGF0aWNDbGFzc0lEKCkKKworLy8gICAgICAgIGxvZ2xuKCJUZXN0aW5nIGluc3RhbmNlb2YoKSIpOworCisvLyAgICAgICAgdHJ5IHsKKy8vICAgICAgICAgICAgTnVtYmVyRm9ybWF0IHRlc3QgPSBuZXcgRGVjaW1hbEZvcm1hdCgpOworCisvLyAgICAgICAgICAgIGlmICghICh0ZXN0IGluc3RhbmNlb2YgRGVjaW1hbEZvcm1hdCkpIHsKKy8vICAgICAgICAgICAgICAgIGVycmxuKCJFUlJPUjogaW5zdGFuY2VvZiBmYWlsZWQiKTsKKy8vICAgICAgICAgICAgfQorLy8gICAgICAgIH0KKy8vICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKy8vICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBDb3VsZG4ndCBjcmVhdGUgYSBEZWNpbWFsRm9ybWF0Iik7CisvLyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9mb3JtYXQvSW50bFRlc3RTaW1wbGVEYXRlRm9ybWF0QVBJLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvZm9ybWF0L0ludGxUZXN0U2ltcGxlRGF0ZUZvcm1hdEFQSS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjM5YzJkMTEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvZm9ybWF0L0ludGxUZXN0U2ltcGxlRGF0ZUZvcm1hdEFQSS5qYXZhCkBAIC0wLDAgKzEsMTgwIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9mb3JtYXQvSW50bFRlc3RTaW1wbGVEYXRlRm9ybWF0QVBJLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDIvMTYgMDM6MDU6MTEgJCAKKyAqICRSZXZpc2lvbjogMS4zICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKi8KKworLyoqIAorICogUG9ydCBGcm9tOiAgIEpESyAxLjRiMSA6IGphdmEudGV4dC5Gb3JtYXQuSW50bFRlc3RTaW1wbGVEYXRlRm9ybWF0QVBJCisgKiBTb3VyY2UgRmlsZTogamF2YS90ZXh0L2Zvcm1hdC9JbnRsVGVzdFNpbXBsZURhdGVGb3JtYXRBUEkuamF2YQorICoqLworIAorLyoKKyAgICBAdGVzdCAxLjQgOTgvMDMvMDYKKyAgICBAc3VtbWFyeSB0ZXN0IEludGVybmF0aW9uYWwgU2ltcGxlIERhdGUgRm9ybWF0IEFQSQorKi8KKy8qCisoQykgQ29weXJpZ2h0IFRhbGlnZW50LCBJbmMuIDE5OTYsIDE5OTcgLSBBbGwgUmlnaHRzIFJlc2VydmVkCisoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk2LCAxOTk3LCAyMDAxIC0gQWxsIFJpZ2h0cyBSZXNlcnZlZAorCisgIFRoZSBvcmlnaW5hbCB2ZXJzaW9uIG9mIHRoaXMgc291cmNlIGNvZGUgYW5kIGRvY3VtZW50YXRpb24gaXMgY29weXJpZ2h0ZWQgYW5kCitvd25lZCBieSBUYWxpZ2VudCwgSW5jLiwgYSB3aG9sbHktb3duZWQgc3Vic2lkaWFyeSBvZiBJQk0uIFRoZXNlIG1hdGVyaWFscyBhcmUKK3Byb3ZpZGVkIHVuZGVyIHRlcm1zIG9mIGEgTGljZW5zZSBBZ3JlZW1lbnQgYmV0d2VlbiBUYWxpZ2VudCBhbmQgU3VuLiBUaGlzCit0ZWNobm9sb2d5IGlzIHByb3RlY3RlZCBieSBtdWx0aXBsZSBVUyBhbmQgSW50ZXJuYXRpb25hbCBwYXRlbnRzLiBUaGlzIG5vdGljZSBhbmQKK2F0dHJpYnV0aW9uIHRvIFRhbGlnZW50IG1heSBub3QgYmUgcmVtb3ZlZC4KKyAgVGFsaWdlbnQgaXMgYSByZWdpc3RlcmVkIHRyYWRlbWFyayBvZiBUYWxpZ2VudCwgSW5jLgorKi8KKworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudGVzdC5mb3JtYXQ7CisKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLio7CitpbXBvcnQgY29tLmlibS5pY3UubGFuZy4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuKjsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudGV4dC5QYXJzZVBvc2l0aW9uOworaW1wb3J0IGphdmEudGV4dC5Gb3JtYXQ7CitpbXBvcnQgamF2YS50ZXh0LkZpZWxkUG9zaXRpb247CitpbXBvcnQgamF2YS50ZXh0LlBhcnNlRXhjZXB0aW9uOworCitwdWJsaWMgY2xhc3MgSW50bFRlc3RTaW1wbGVEYXRlRm9ybWF0QVBJIGV4dGVuZHMgY29tLmlibS5pY3UuZGV2LnRlc3QuVGVzdEZtd2sKK3sKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgbmV3IEludGxUZXN0U2ltcGxlRGF0ZUZvcm1hdEFQSSgpLnJ1bihhcmdzKTsKKyAgICB9CisKKyAgICAvLyBUaGlzIHRlc3QgY2hlY2tzIHZhcmlvdXMgZ2VuZXJpYyBBUEkgbWV0aG9kcyBpbiBEZWNpbWFsRm9ybWF0IHRvIGFjaGlldmUgMTAwJSBBUEkgY292ZXJhZ2UuCisgICAgcHVibGljIHZvaWQgVGVzdEFQSSgpCisgICAgeworICAgICAgICBsb2dsbigiU2ltcGxlRGF0ZUZvcm1hdCBBUEkgdGVzdC0tLSIpOyBsb2dsbigiIik7CisKKyAgICAgICAgTG9jYWxlLnNldERlZmF1bHQoTG9jYWxlLkVOR0xJU0gpOworCisgICAgICAgIC8vID09PT09PT0gVGVzdCBjb25zdHJ1Y3RvcnMKKworICAgICAgICBsb2dsbigiVGVzdGluZyBTaW1wbGVEYXRlRm9ybWF0IGNvbnN0cnVjdG9ycyIpOworCisgICAgICAgIFNpbXBsZURhdGVGb3JtYXQgZGVmID0gbmV3IFNpbXBsZURhdGVGb3JtYXQoKTsKKworICAgICAgICBmaW5hbCBTdHJpbmcgcGF0dGVybiA9IG5ldyBTdHJpbmcoInl5eXkuTU0uZGQgRyAnYXQnIGhoOm1tOnNzIHoiKTsKKyAgICAgICAgU2ltcGxlRGF0ZUZvcm1hdCBwYXQgPSBuZXcgU2ltcGxlRGF0ZUZvcm1hdChwYXR0ZXJuKTsKKworICAgICAgICBTaW1wbGVEYXRlRm9ybWF0IHBhdF9mciA9IG5ldyBTaW1wbGVEYXRlRm9ybWF0KHBhdHRlcm4sIExvY2FsZS5GUkVOQ0gpOworCisgICAgICAgIERhdGVGb3JtYXRTeW1ib2xzIHN5bWJvbHMgPSBuZXcgRGF0ZUZvcm1hdFN5bWJvbHMoTG9jYWxlLkZSRU5DSCk7CisKKyAgICAgICAgU2ltcGxlRGF0ZUZvcm1hdCBjdXN0MSA9IG5ldyBTaW1wbGVEYXRlRm9ybWF0KHBhdHRlcm4sIHN5bWJvbHMpOworCisgICAgICAgIC8vID09PT09PT0gVGVzdCBjbG9uZSgpIGFuZCBlcXVhbGl0eQorCisgICAgICAgIGxvZ2xuKCJUZXN0aW5nIGNsb25lKCksIGFzc2lnbm1lbnQgYW5kIGVxdWFsaXR5IG9wZXJhdG9ycyIpOworCisgICAgICAgIEZvcm1hdCBjbG9uZSA9IChGb3JtYXQpIGRlZi5jbG9uZSgpOworICAgICAgICBpZiggISBjbG9uZS5lcXVhbHMoZGVmKSApIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogRm9ybWF0IGNsb25lIG9yIGVxdWFscyBmYWlsZWQiKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vID09PT09PT0gVGVzdCB2YXJpb3VzIGZvcm1hdCgpIG1ldGhvZHMKKworICAgICAgICBsb2dsbigiVGVzdGluZyB2YXJpb3VzIGZvcm1hdCgpIG1ldGhvZHMiKTsKKworICAgICAgICBEYXRlIGQgPSBuZXcgRGF0ZSgobG9uZyk4MzcwMzk5MjgwNDYuMCk7CisKKyAgICAgICAgU3RyaW5nQnVmZmVyIHJlczEgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIFN0cmluZ0J1ZmZlciByZXMyID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBGaWVsZFBvc2l0aW9uIHBvczEgPSBuZXcgRmllbGRQb3NpdGlvbigwKTsKKyAgICAgICAgRmllbGRQb3NpdGlvbiBwb3MyID0gbmV3IEZpZWxkUG9zaXRpb24oMCk7CisKKyAgICAgICAgcmVzMSA9IGRlZi5mb3JtYXQoZCwgcmVzMSwgcG9zMSk7CisgICAgICAgIGxvZ2xuKCAiIiArIGQuZ2V0VGltZSgpICsgIiBmb3JtYXR0ZWQgdG8gIiArIHJlczEpOworCisgICAgICAgIHJlczIgPSBjdXN0MS5mb3JtYXQoZCwgcmVzMiwgcG9zMik7CisgICAgICAgIGxvZ2xuKCIiICsgZC5nZXRUaW1lKCkgKyAiIGZvcm1hdHRlZCB0byAiICsgcmVzMik7CisKKyAgICAgICAgLy8gPT09PT09PSBUZXN0IHBhcnNlKCkKKworICAgICAgICBsb2dsbigiVGVzdGluZyBwYXJzZSgpIik7CisKKyAgICAgICAgU3RyaW5nIHRleHQgPSBuZXcgU3RyaW5nKCIwMi8wMy83NiAyOjUwIEFNLCBDU1QiKTsKKyAgICAgICAgRGF0ZSByZXN1bHQxID0gbmV3IERhdGUoKTsKKyAgICAgICAgRGF0ZSByZXN1bHQyID0gbmV3IERhdGUoKTsKKyAgICAgICAgUGFyc2VQb3NpdGlvbiBwb3M9IG5ldyBQYXJzZVBvc2l0aW9uKDApOworICAgICAgICByZXN1bHQxID0gZGVmLnBhcnNlKHRleHQsIHBvcyk7CisgICAgICAgIGxvZ2xuKHRleHQgKyAiIHBhcnNlZCBpbnRvICIgKyByZXN1bHQxKTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmVzdWx0MiA9IGRlZi5wYXJzZSh0ZXh0KTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoUGFyc2VFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBwYXJzZSgpIGZhaWxlZCIpOworICAgICAgICB9CisgICAgICAgIGxvZ2xuKHRleHQgKyAiIHBhcnNlZCBpbnRvICIgKyByZXN1bHQyKTsKKworICAgICAgICAvLyA9PT09PT09IFRlc3QgZ2V0dGVycyBhbmQgc2V0dGVycworCisgICAgICAgIGxvZ2xuKCJUZXN0aW5nIGdldHRlcnMgYW5kIHNldHRlcnMiKTsKKworICAgICAgICBmaW5hbCBEYXRlRm9ybWF0U3ltYm9scyBzeW1zID0gcGF0LmdldERhdGVGb3JtYXRTeW1ib2xzKCk7CisgICAgICAgIGRlZi5zZXREYXRlRm9ybWF0U3ltYm9scyhzeW1zKTsKKyAgICAgICAgcGF0X2ZyLnNldERhdGVGb3JtYXRTeW1ib2xzKHN5bXMpOworICAgICAgICBpZiggISBwYXQuZ2V0RGF0ZUZvcm1hdFN5bWJvbHMoKS5lcXVhbHMoZGVmLmdldERhdGVGb3JtYXRTeW1ib2xzKCkpICkgeworICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBzZXQgRGF0ZUZvcm1hdFN5bWJvbHMoKSBmYWlsZWQiKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgIERhdGVGb3JtYXRTeW1ib2xzIGhhcyBub3QgdGhlIG1ldGhvZCBnZXRUd29EaWdpdFN0YXJ0RGF0ZSgpOworICAgICAgICAvL0RhdGUgc3RhcnREYXRlID0gbnVsbDsgLy9UaGUgdmFyaWFibGUgaXMgbmV2ZXIgdXNlZAorICAgICAgICB0cnkgeworLy8gICAgICAgICAgICBzdGFydERhdGUgPSBwYXQuZ2V0VHdvRGlnaXRTdGFydERhdGUoKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogZ2V0VHdvRGlnaXRTdGFydERhdGUoKSBmYWlsZWQiKTsKKyAgICAgICAgfQorCisgICAgICAgIHRyeSB7CisvLyAgICAgICAgICAgIHBhdF9mci5zZXRUd29EaWdpdFN0YXJ0RGF0ZShzdGFydERhdGUpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBzZXRUd29EaWdpdFN0YXJ0RGF0ZSgpIGZhaWxlZCIpOworICAgICAgICB9Ki8KKworICAgICAgICAvLyA9PT09PT09IFRlc3QgYXBwbHlQYXR0ZXJuKCkKKworICAgICAgICBsb2dsbigiVGVzdGluZyBhcHBseVBhdHRlcm4oKSIpOworCisgICAgICAgIFN0cmluZyBwMSA9IG5ldyBTdHJpbmcoInl5eXkuTU0uZGQgRyAnYXQnIGhoOm1tOnNzIHoiKTsKKyAgICAgICAgbG9nbG4oIkFwcGx5aW5nIHBhdHRlcm4gIiArIHAxKTsKKyAgICAgICAgcGF0LmFwcGx5UGF0dGVybihwMSk7CisKKyAgICAgICAgU3RyaW5nIHMyID0gcGF0LnRvUGF0dGVybigpOworICAgICAgICBsb2dsbigiRXh0cmFjdGVkIHBhdHRlcm4gaXMgIiArIHMyKTsKKyAgICAgICAgaWYoICEgczIuZXF1YWxzKHAxKSApIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogdG9QYXR0ZXJuKCkgcmVzdWx0IGRpZCBub3QgbWF0Y2ggcGF0dGVybiBhcHBsaWVkIik7CisgICAgICAgIH0KKworICAgICAgICBsb2dsbigiQXBwbHlpbmcgcGF0dGVybiAiICsgcDEpOworICAgICAgICBwYXQuYXBwbHlMb2NhbGl6ZWRQYXR0ZXJuKHAxKTsKKyAgICAgICAgU3RyaW5nIHMzID0gcGF0LnRvTG9jYWxpemVkUGF0dGVybigpOworICAgICAgICBsb2dsbigiRXh0cmFjdGVkIHBhdHRlcm4gaXMgIiArIHMzKTsKKyAgICAgICAgaWYoICEgczMuZXF1YWxzKHAxKSApIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogdG9Mb2NhbGl6ZWRQYXR0ZXJuKCkgcmVzdWx0IGRpZCBub3QgbWF0Y2ggcGF0dGVybiBhcHBsaWVkIik7CisgICAgICAgIH0KKworICAgICAgICAvLyA9PT09PT09IFRlc3QgZ2V0U3RhdGljQ2xhc3NJRCgpCisKKy8vICAgICAgICBsb2dsbigiVGVzdGluZyBpbnN0YW5jZW9mIik7CisKKy8vICAgICAgICB0cnkgeworLy8gICAgICAgICAgICBEYXRlRm9ybWF0IHRlc3QgPSBuZXcgU2ltcGxlRGF0ZUZvcm1hdCgpOworCisvLyAgICAgICAgICAgIGlmICghICh0ZXN0IGluc3RhbmNlb2YgU2ltcGxlRGF0ZUZvcm1hdCkpIHsKKy8vICAgICAgICAgICAgICAgIGVycmxuKCJFUlJPUjogaW5zdGFuY2VvZiBmYWlsZWQiKTsKKy8vICAgICAgICAgICAgfQorLy8gICAgICAgIH0KKy8vICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKy8vICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBDb3VsZG4ndCBjcmVhdGUgYSBTaW1wbGVEYXRlRm9ybWF0Iik7CisvLyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9mb3JtYXQvTnVtYmVyRm9ybWF0UmVncmVzc2lvblRlc3QuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9mb3JtYXQvTnVtYmVyRm9ybWF0UmVncmVzc2lvblRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5kNGIyZDdlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2Zvcm1hdC9OdW1iZXJGb3JtYXRSZWdyZXNzaW9uVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTg4IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgICAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9mb3JtYXQvTnVtYmVyRm9ybWF0UmVncmVzc2lvblRlc3QuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNToxMSAkIAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKKy8qKiAKKyAqIFBvcnQgRnJvbTogICBJQ1U0QyB2MS44LjEgOiBmb3JtYXQgOiBOdW1iZXJGb3JtYXRSZWdyZXNzaW9uVGVzdAorICogU291cmNlIEZpbGU6ICRJQ1U0Q1Jvb3Qvc291cmNlL3Rlc3QvaW50bHRlc3QvbnVtcmd0cy5jcHAKKyAqKi8KKworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudGVzdC5mb3JtYXQ7CisKK2ltcG9ydCBjb20uaWJtLmljdS5sYW5nLio7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuKjsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudGV4dC5QYXJzZUV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmlvLio7CisKKy8qKiAKKyAqIFBlcmZvcm1zIHJlZ3Jlc3Npb24gdGVzdCBmb3IgTWVzc2FnZUZvcm1hdAorICoqLworcHVibGljIGNsYXNzIE51bWJlckZvcm1hdFJlZ3Jlc3Npb25UZXN0IGV4dGVuZHMgY29tLmlibS5pY3UuZGV2LnRlc3QuVGVzdEZtd2sgeworICAgIAorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb257CisgICAgICAgIG5ldyBOdW1iZXJGb3JtYXRSZWdyZXNzaW9uVGVzdCgpLnJ1bihhcmdzKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogYWxwaGFXb3JrcyB1cGdyYWRlCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQxNjExMDAoKSB7CisgICAgICAgIE51bWJlckZvcm1hdCBuZiA9IE51bWJlckZvcm1hdC5nZXRJbnN0YW5jZShMb2NhbGUuVVMpOworICAgICAgICBuZi5zZXRNaW5pbXVtRnJhY3Rpb25EaWdpdHMoMSk7CisgICAgICAgIG5mLnNldE1heGltdW1GcmFjdGlvbkRpZ2l0cygxKTsKKyAgICAgICAgZG91YmxlIGEgPSAtMC4wOTsKKyAgICAgICAgU3RyaW5nIHMgPSBuZi5mb3JtYXQoYSk7CisgICAgICAgIGxvZ2xuKGEgKyAiIHggIiArCisgICAgICAgICAgICAgICgoRGVjaW1hbEZvcm1hdCkgbmYpLnRvUGF0dGVybigpICsgIiA9ICIgKyBzKTsKKyAgICAgICAgaWYgKCFzLmVxdWFscygiLTAuMSIpKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTCIpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIERhdGVGb3JtYXQgc2hvdWxkIGNhbGwgc2V0SW50ZWdlclBhcnNlT25seShUUlVFKSBvbiBhZG9wdGVkCisgICAgICogTnVtYmVyRm9ybWF0IG9iamVjdHMuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEo2OTEoKSB7CisgICAgICAgIAorICAgICAgICBMb2NhbGUgbG9jID0gbmV3IExvY2FsZSgiZnIiLCAiQ0giKTsKKyAgICAKKyAgICAgICAgLy8gc2V0IHVwIHRoZSBpbnB1dCBkYXRlIHN0cmluZyAmIGV4cGVjdGVkIG91dHB1dAorICAgICAgICBTdHJpbmcgdWR0ID0gIjExLjEwLjIwMDAiOworICAgICAgICBTdHJpbmcgZXhwID0gIjExLjEwLjAwIjsKKyAgICAKKyAgICAgICAgLy8gY3JlYXRlIGEgQ2FsZW5kYXIgZm9yIHRoaXMgbG9jYWxlCisgICAgICAgIENhbGVuZGFyIGNhbCA9IENhbGVuZGFyLmdldEluc3RhbmNlKGxvYyk7CisgICAgCisgICAgICAgIC8vIGNyZWF0ZSBhIE51bWJlckZvcm1hdCBmb3IgdGhpcyBsb2NhbGUKKyAgICAgICAgTnVtYmVyRm9ybWF0IG5mID0gTnVtYmVyRm9ybWF0LmdldEluc3RhbmNlKGxvYyk7CisgICAgCisgICAgICAgIC8vICoqKiBIZXJlJ3MgdGhlIGtleTogV2UgZG9uJ3Qgd2FudCB0byBoYXZlIHRvIGRvIFRISVM6CisgICAgICAgIC8vbmYuc2V0UGFyc2VJbnRlZ2VyT25seSh0cnVlKTsKKyAgICAKKyAgICAgICAgLy8gY3JlYXRlIHRoZSBEYXRlRm9ybWF0CisgICAgICAgIERhdGVGb3JtYXQgZGYgPSBEYXRlRm9ybWF0LmdldERhdGVJbnN0YW5jZShEYXRlRm9ybWF0LlNIT1JULCBsb2MpOworICAgIAorICAgICAgICBkZi5zZXRDYWxlbmRhcihjYWwpOworICAgICAgICBkZi5zZXROdW1iZXJGb3JtYXQobmYpOworICAgIAorICAgICAgICAvLyBzZXQgcGFyc2luZyB0byBsZW5pZW50ICYgcGFyc2UKKyAgICAgICAgRGF0ZSB1bG9jZGF0ID0gbmV3IERhdGUoKTsKKyAgICAgICAgZGYuc2V0TGVuaWVudCh0cnVlKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHVsb2NkYXQgPSBkZi5wYXJzZSh1ZHQpOworICAgICAgICB9IGNhdGNoIChqYXZhLnRleHQuUGFyc2VFeGNlcHRpb24gcGUpIHsKKyAgICAgICAgICAgIGVycmxuKHBlLmdldE1lc3NhZ2UoKSk7CisgICAgICAgIH0KKyAgICAgICAgLy8gZm9ybWF0IGJhY2sgdG8gYSBzdHJpbmcKKyAgICAgICAgU3RyaW5nIG91dFN0cmluZyA9IGRmLmZvcm1hdCh1bG9jZGF0KTsKKyAgICAKKyAgICAgICAgaWYgKCFvdXRTdHJpbmcuZXF1YWxzKGV4cCkpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiAiICsgdWR0ICsgIiA9PiAiICsgb3V0U3RyaW5nKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBUZXN0IGdldEludGVnZXJJbnN0YW5jZSgpOworICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0NDA4MDY2KCkgeworICAgICAgICAKKyAgICAgICAgTnVtYmVyRm9ybWF0IG5mMSA9IE51bWJlckZvcm1hdC5nZXRJbnRlZ2VySW5zdGFuY2UoKTsKKyAgICAgICAgTnVtYmVyRm9ybWF0IG5mMiA9IE51bWJlckZvcm1hdC5nZXRJbnRlZ2VySW5zdGFuY2UoTG9jYWxlLkNISU5BKTsKKyAgICAKKyAgICAgICAgLy90ZXN0IGlzUGFyc2VJbnRlZ2VyT25seQorICAgICAgICBpZiAoIW5mMS5pc1BhcnNlSW50ZWdlck9ubHkoKSB8fCAhbmYyLmlzUGFyc2VJbnRlZ2VyT25seSgpKSB7CisgICAgICAgICAgICBlcnJsbigiRmFpbGVkIDogSW50ZWdlciBOdW1iZXIgRm9ybWF0IEluc3RhbmNlIHNob3VsZCBzZXQgc2V0UGFyc2VJbnRlZ2VyT25seSh0cnVlKSIpOworICAgICAgICB9CisgICAgCisgICAgICAgIC8vVGVzdCBmb3JtYXQKKyAgICAgICAgeworICAgICAgICAgICAgZG91YmxlW10gZGF0YSA9IHsKKyAgICAgICAgICAgICAgICAtMy43NSwgLTIuNSwgLTEuNSwgCisgICAgICAgICAgICAgICAgLTEuMjUsIDAsICAgIDEuMCwgCisgICAgICAgICAgICAgICAgMS4yNSwgIDEuNSwgIDIuNSwgCisgICAgICAgICAgICAgICAgMy43NSwgIDEwLjAsIDI1NS41CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIFN0cmluZ1tdIGV4cGVjdGVkID0geworICAgICAgICAgICAgICAgICItNCIsICItMiIsICItMiIsCisgICAgICAgICAgICAgICAgIi0xIiwgIjAiLCAgIjEiLAorICAgICAgICAgICAgICAgICIxIiwgICIyIiwgICIyIiwKKyAgICAgICAgICAgICAgICAiNCIsICAiMTAiLCAiMjU2IgorICAgICAgICAgICAgICAgIH07CisgICAgCisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgcmVzdWx0ID0gbmYxLmZvcm1hdChkYXRhW2ldKTsKKyAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5lcXVhbHMoZXhwZWN0ZWRbaV0pKSB7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJGYWlsZWQgPT4gU291cmNlOiAiICsgRG91YmxlLnRvU3RyaW5nKGRhdGFbaV0pIAorICAgICAgICAgICAgICAgICAgICAgICAgKyAiO0Zvcm1hdHRlZCA6ICIgKyByZXN1bHQKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIjtidXQgZXhwZWN0dGVkOiAiICsgZXhwZWN0ZWRbaV0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAvL1Rlc3QgcGFyc2UsIFBhcnNpbmcgc2hvdWxkIHN0b3AgYXQgIi4iCisgICAgICAgIHsKKyAgICAgICAgICAgIFN0cmluZyBkYXRhW10gPSB7CisgICAgICAgICAgICAgICAgIi0zLjc1IiwgIi0yLjUiLCAiLTEuNSIsIAorICAgICAgICAgICAgICAgICItMS4yNSIsICIwIiwgICAgIjEuMCIsIAorICAgICAgICAgICAgICAgICIxLjI1IiwgICIxLjUiLCAgIjIuNSIsIAorICAgICAgICAgICAgICAgICIzLjc1IiwgICIxMC4wIiwgIjI1NS41IgorICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICBsb25nW10gZXhwZWN0ZWQgPSB7CisgICAgICAgICAgICAgICAgLTMsIC0yLCAtMSwKKyAgICAgICAgICAgICAgICAtMSwgMCwgIDEsCisgICAgICAgICAgICAgICAgMSwgIDEsICAyLAorICAgICAgICAgICAgICAgIDMsICAxMCwgMjU1CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgTnVtYmVyIG4gPSBudWxsOworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIG4gPSBuZjEucGFyc2UoZGF0YVtpXSk7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoUGFyc2VFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigiRmFpbGVkOiAiICsgZS5nZXRNZXNzYWdlKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoIShuIGluc3RhbmNlb2YgTG9uZykgfHwgKG4gaW5zdGFuY2VvZiBJbnRlZ2VyKSkgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigiRmFpbGVkOiBJbnRlZ2VyIE51bWJlciBGb3JtYXQgc2hvdWxkIHBhcnNlIHN0cmluZyB0byBMb25nL0ludGVnZXIiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG4ubG9uZ1ZhbHVlKCkgIT0gZXhwZWN0ZWRbaV0pIHsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIkZhaWxlZD0+IFNvdXJjZTogIiArIGRhdGFbaV0gCisgICAgICAgICAgICAgICAgICAgICAgICArICI7cmVzdWx0IDogIiArIG4udG9TdHJpbmcoKQorICAgICAgICAgICAgICAgICAgICAgICAgKyAiO2V4cGVjdGVkIDoiICsgTG9uZy50b1N0cmluZyhleHBlY3RlZFtpXSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvL1Rlc3QgTmV3IHNlcmlhbGl6ZWQgRGVjaW1hbEZvcm1hdCgyLjApIHJlYWQgb2xkIHNlcmlhbGl6ZWQgZm9ybXMgb2YgRGVjaW1hbEZvcm1hdCgxLjMuMS4xKQorICAgIHB1YmxpYyB2b2lkIFRlc3RTZXJpYWxpemF0aW9uKCkgdGhyb3dzIElPRXhjZXB0aW9uLCBDbGFzc05vdEZvdW5kRXhjZXB0aW9ueworICAgICAgICBieXRlW11bXSBjb250ZW50cyA9IE51bWJlckZvcm1hdFNlcmlhbFRlc3REYXRhLmdldENvbnRlbnQoKTsKKyAgICAgICAgZG91YmxlIGRhdGEgPSAxMjM0LjU2OworICAgICAgICBTdHJpbmdbXSBleHBlY3RlZCA9IHsKKyAgICAgICAgICAgICIxLDIzNC41NiIsICIkMSwyMzQuNTYiLCAiMTIzLDQ1NiUiLCAiMS4yMzQ1NkUzIn07CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgKytpKSB7CisgICAgICAgICAgICBPYmplY3RJbnB1dFN0cmVhbSBvaXMgPSBuZXcgT2JqZWN0SW5wdXRTdHJlYW0obmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKGNvbnRlbnRzW2ldKSk7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIE51bWJlckZvcm1hdCBmb3JtYXQgPSAoTnVtYmVyRm9ybWF0KSBvaXMucmVhZE9iamVjdCgpOworICAgICAgICAgICAgICAgIFN0cmluZyByZXN1bHQgPSBmb3JtYXQuZm9ybWF0KGRhdGEpOworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuZXF1YWxzKGV4cGVjdGVkW2ldKSkgeworICAgICAgICAgICAgICAgICAgICBsb2dsbigiT0s6IERlc2VyaWFsaXplZCBib2d1cyBOdW1iZXJGb3JtYXQobmV3IHZlcnNpb24gcmVhZCBvbGQgdmVyc2lvbikiKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogdGhlIHRlc3QgZGF0YSBmb3JtYXRzIGFyZSBub3QgZXVxYWwiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiAiICsgZS5nZXRNZXNzYWdlKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9mb3JtYXQvTnVtYmVyRm9ybWF0Um91bmRUcmlwVGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2Zvcm1hdC9OdW1iZXJGb3JtYXRSb3VuZFRyaXBUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uODlhNDgwYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9mb3JtYXQvTnVtYmVyRm9ybWF0Um91bmRUcmlwVGVzdC5qYXZhCkBAIC0wLDAgKzEsMjM2IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgICAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9mb3JtYXQvTnVtYmVyRm9ybWF0Um91bmRUcmlwVGVzdC5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzAyLzE2IDAzOjA1OjEyICQgCisgKiAkUmV2aXNpb246IDEuMiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworLyoqIAorICogUG9ydGluZyBGcm9tOiBJQ1U0QyB2MS44LjEgOiBmb3JtYXQgOiBOdW1iZXJGb3JtYXRSb3VuZFRyaXBUZXN0CisgKiBTb3VyY2UgRmlsZTogJElDVTRDUm9vdC9zb3VyY2UvdGVzdC9pbnRsdGVzdC9ubWZtdHJ0LmNwcAorICoqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0LmZvcm1hdDsKKworaW1wb3J0IGNvbS5pYm0uaWN1LmxhbmcuKjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0Lio7CitpbXBvcnQgY29tLmlibS5pY3UudXRpbC4qOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CisKKy8qKiAKKyAqIFBlcmZvcm1zIHJvdW5kLXRyaXAgdGVzdHMgZm9yIE51bWJlckZvcm1hdAorICoqLworcHVibGljIGNsYXNzIE51bWJlckZvcm1hdFJvdW5kVHJpcFRlc3QgZXh0ZW5kcyBjb20uaWJtLmljdS5kZXYudGVzdC5UZXN0Rm13ayB7CisgICAgCisgICAgcHVibGljIGRvdWJsZSBNQVhfRVJST1IgPSAxZS0xNDsKKyAgICBwdWJsaWMgZG91YmxlIG1heF9udW1lcmljX2Vycm9yID0gMC4wOworICAgIHB1YmxpYyBkb3VibGUgbWluX251bWVyaWNfZXJyb3IgPSAxLjA7CisgICAgcHVibGljIGJvb2xlYW4gdmVyYm9zZSA9IGZhbHNlOworICAgIHB1YmxpYyBib29sZWFuIFNUUklOR19DT01QQVJFID0gZmFsc2U7CisgICAgcHVibGljIGJvb2xlYW4gRVhBQ1RfTlVNRVJJQ19DT01QQVJFID0gZmFsc2U7CisgICAgcHVibGljIGJvb2xlYW4gREVCVUcgPSBmYWxzZTsKKyAgICBwdWJsaWMgYm9vbGVhbiBxdWljayA9IHRydWU7CisgICAgCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIG5ldyBOdW1iZXJGb3JtYXRSb3VuZFRyaXBUZXN0KCkucnVuKGFyZ3MpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0TnVtYmVyRm9ybWF0Um91bmRUcmlwKCkgeworICAgIAorICAgICAgICBOdW1iZXJGb3JtYXQgZm10ID0gbnVsbDsKKyAgICAKKyAgICAgICAgbG9nbG4oIkRlZmF1bHQgTG9jYWxlIik7CisgICAgICAgIAorICAgICAgICBsb2dsbigiRGVmYXVsdCBOdW1iZXIgZm9ybWF0Iik7CisgICAgICAgIGZtdCA9IE51bWJlckZvcm1hdC5nZXRJbnN0YW5jZSgpOworICAgICAgICBfdGVzdChmbXQpOworICAgIAorICAgICAgICBsb2dsbigiQ3VycmVuY3kgRm9ybWF0Iik7CisgICAgICAgIGZtdCA9IE51bWJlckZvcm1hdC5nZXRDdXJyZW5jeUluc3RhbmNlKCk7CisgICAgICAgIF90ZXN0KGZtdCk7CisgICAgCisgICAgICAgIGxvZ2xuKCJQZXJjZW50IEZvcm1hdCIpOworICAgICAgICBmbXQgPSBOdW1iZXJGb3JtYXQuZ2V0UGVyY2VudEluc3RhbmNlKCk7CisgICAgICAgIF90ZXN0KGZtdCk7CisgICAgCisgICAgCisgICAgICAgIGludCBsb2NDb3VudCA9IDA7CisgICAgICAgIGZpbmFsIExvY2FsZVtdIGxvYyA9IE51bWJlckZvcm1hdC5nZXRBdmFpbGFibGVMb2NhbGVzKCk7CisgICAgICAgIGlmKHF1aWNrKSB7CisgICAgICAgICAgICBpZihsb2NDb3VudCA+IDUpCisgICAgICAgICAgICAgICAgbG9jQ291bnQgPSA1OworICAgICAgICAgICAgbG9nbG4oIlF1aWNrIG1vZGU6IG9ubHkgX3Rlc3RpbmcgZmlyc3QgNSBMb2NhbGVzIik7CisgICAgICAgIH0KKyAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IGxvY0NvdW50OyArK2kpIHsKKyAgICAgICAgICAgIGxvZ2xuKGxvY1tpXS5nZXREaXNwbGF5TmFtZSgpKTsKKyAgICAKKyAgICAgICAgICAgIGZtdCA9IE51bWJlckZvcm1hdC5nZXRJbnN0YW5jZShsb2NbaV0pOworICAgICAgICAgICAgX3Rlc3QoZm10KTsKKyAgICAgICAgCisgICAgICAgICAgICBmbXQgPSBOdW1iZXJGb3JtYXQuZ2V0Q3VycmVuY3lJbnN0YW5jZShsb2NbaV0pOworICAgICAgICAgICAgX3Rlc3QoZm10KTsKKyAgICAgICAgCisgICAgICAgICAgICBmbXQgPSBOdW1iZXJGb3JtYXQuZ2V0UGVyY2VudEluc3RhbmNlKGxvY1tpXSk7CisgICAgICAgICAgICBfdGVzdChmbXQpOworICAgICAgICB9CisgICAgCisgICAgICAgIGxvZ2xuKCJOdW1lcmljIGVycm9yICIgKyBtaW5fbnVtZXJpY19lcnJvciArICIgdG8gIiArIG1heF9udW1lcmljX2Vycm9yKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgcmFuZG9tIHZhbHVlIGZyb20gLXJhbmdlLi4rcmFuZ2UuCisgICAgICovCisgICAgcHVibGljIGRvdWJsZSByYW5kb21Eb3VibGUoZG91YmxlIHJhbmdlKSB7CisgICAgICAgIHJldHVybiBNYXRoLnJhbmRvbSgpICogcmFuZ2U7CisgICAgfSAKKyAgICAKKyAgICBwdWJsaWMgdm9pZCBfdGVzdChOdW1iZXJGb3JtYXQgZm10KSB7CisgICAgCisgICAgICAgIF90ZXN0KGZtdCwgRG91YmxlLk5hTik7CisgICAgICAgIF90ZXN0KGZtdCwgRG91YmxlLlBPU0lUSVZFX0lORklOSVRZKTsKKyAgICAgICAgX3Rlc3QoZm10LCBEb3VibGUuTkVHQVRJVkVfSU5GSU5JVFkpOworICAgIAorICAgICAgICBfdGVzdChmbXQsIDUwMCk7CisgICAgICAgIF90ZXN0KGZtdCwgMCk7CisgICAgICAgIF90ZXN0KGZtdCwgLTApOworICAgICAgICBfdGVzdChmbXQsIDAuMCk7CisgICAgICAgIGRvdWJsZSBuZWdaZXJvID0gMC4wOworICAgICAgICBuZWdaZXJvIC89IC0xLjA7CisgICAgICAgIF90ZXN0KGZtdCwgbmVnWmVybyk7CisgICAgICAgIF90ZXN0KGZtdCwgOTIyMzM3MjAzNjg1NDc3NTgwOC4wZCk7CisgICAgICAgIF90ZXN0KGZtdCwgLTkyMjMzNzIwMzY4NTQ3NzU4MDkuMGQpOworICAgICAgICAvL190ZXN0KGZtdCwgNi45MzYwNjU4NzYxMDA0OTNFNzRkKTsKKyAgICAgICAgCisgICAgLy8gICAgX3Rlc3QoZm10LCA2LjIxMjEyMjg0NTI4MTkwOUU0OGQpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDEwOyArK2kpIHsKKyAgICAKKyAgICAgICAgICAgIF90ZXN0KGZtdCwgcmFuZG9tRG91YmxlKDEpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgX3Rlc3QoZm10LCByYW5kb21Eb3VibGUoMTAwMDApKTsKKyAgICAKKyAgICAgICAgICAgIF90ZXN0KGZtdCwgTWF0aC5mbG9vcigocmFuZG9tRG91YmxlKDEwMDAwKSkpKTsKKyAgICAKKyAgICAgICAgICAgIF90ZXN0KGZtdCwgcmFuZG9tRG91YmxlKDFlNTApKTsKKyAgICAKKyAgICAgICAgICAgIF90ZXN0KGZtdCwgcmFuZG9tRG91YmxlKDFlLTUwKSk7CisgICAgCisgICAgICAgICAgICBfdGVzdChmbXQsIHJhbmRvbURvdWJsZSgxZTEwMCkpOworICAgIAorICAgICAgICAgICAgX3Rlc3QoZm10LCByYW5kb21Eb3VibGUoMWU3NSkpOworICAgIAorICAgICAgICAgICAgX3Rlc3QoZm10LCByYW5kb21Eb3VibGUoMWUzMDgpIC8gKChEZWNpbWFsRm9ybWF0KSBmbXQpLmdldE11bHRpcGxpZXIoKSk7CisgICAgCisgICAgICAgICAgICBfdGVzdChmbXQsIHJhbmRvbURvdWJsZSgxZTc1KSAvICgoRGVjaW1hbEZvcm1hdCkgZm10KS5nZXRNdWx0aXBsaWVyKCkpOworICAgIAorICAgICAgICAgICAgX3Rlc3QoZm10LCByYW5kb21Eb3VibGUoMWU2NSkgLyAoKERlY2ltYWxGb3JtYXQpIGZtdCkuZ2V0TXVsdGlwbGllcigpKTsKKyAgICAKKyAgICAgICAgICAgIF90ZXN0KGZtdCwgcmFuZG9tRG91YmxlKDFlLTI5MikpOworICAgIAorICAgICAgICAgICAgX3Rlc3QoZm10LCByYW5kb21Eb3VibGUoMWUtNzgpKTsKKyAgICAKKyAgICAgICAgICAgIF90ZXN0KGZtdCwgcmFuZG9tRG91YmxlKDFlLTMyMykpOworICAgIAorICAgICAgICAgICAgX3Rlc3QoZm10LCByYW5kb21Eb3VibGUoMWUtMTAwKSk7CisgICAgCisgICAgICAgICAgICBfdGVzdChmbXQsIHJhbmRvbURvdWJsZSgxZS03OCkpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIF90ZXN0KE51bWJlckZvcm1hdCBmbXQsIGRvdWJsZSB2YWx1ZSkgeworICAgICAgICBfdGVzdChmbXQsIG5ldyBEb3VibGUodmFsdWUpKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgX3Rlc3QoTnVtYmVyRm9ybWF0IGZtdCwgbG9uZyB2YWx1ZSkgeworICAgICAgICBfdGVzdChmbXQsIG5ldyBMb25nKHZhbHVlKSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIF90ZXN0KE51bWJlckZvcm1hdCBmbXQsIE51bWJlciB2YWx1ZSkgeworICAgICAgICBsb2dsbigidGVzdCBkYXRhID0gIiArIHZhbHVlKTsKKyAgICAgICAgZm10LnNldE1heGltdW1GcmFjdGlvbkRpZ2l0cyg5OTkpOworICAgICAgICBTdHJpbmcgcywgczI7CisgICAgICAgIGlmICh2YWx1ZS5nZXRDbGFzcygpLmdldE5hbWUoKS5lcXVhbHNJZ25vcmVDYXNlKCJqYXZhLmxhbmcuRG91YmxlIikpCisgICAgICAgICAgICBzID0gZm10LmZvcm1hdCh2YWx1ZS5kb3VibGVWYWx1ZSgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcyA9IGZtdC5mb3JtYXQodmFsdWUubG9uZ1ZhbHVlKCkpOworICAgIAorICAgICAgICBOdW1iZXIgbiA9IG5ldyBEb3VibGUoMCk7CisgICAgICAgIGJvb2xlYW4gc2hvdyA9IHZlcmJvc2U7CisgICAgICAgIGlmIChERUJVRykKKyAgICAgICAgICAgIGxvZ2xuKAorICAgICAgICAgICAgLyp2YWx1ZS5nZXRTdHJpbmcodGVtcCkgKyovICIgRj4gIiArIHMpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgbiA9IGZtdC5wYXJzZShzKTsKKyAgICAgICAgfSBjYXRjaCAoamF2YS50ZXh0LlBhcnNlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihlKTsKKyAgICAgICAgfQorICAgIAorICAgICAgICBpZiAoREVCVUcpCisgICAgICAgICAgICBsb2dsbihzICsgIiBQPiAiIC8qKyBuLmdldFN0cmluZyh0ZW1wKSovKTsKKyAgICAKKyAgICAgICAgaWYgKHZhbHVlLmdldENsYXNzKCkuZ2V0TmFtZSgpLmVxdWFsc0lnbm9yZUNhc2UoImphdmEubGFuZy5Eb3VibGUiKSkKKyAgICAgICAgICAgIHMyID0gZm10LmZvcm1hdChuLmRvdWJsZVZhbHVlKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzMiA9IGZtdC5mb3JtYXQobi5sb25nVmFsdWUoKSk7CisgICAgCisgICAgICAgIGlmIChERUJVRykKKyAgICAgICAgICAgIGxvZ2xuKC8qbi5nZXRTdHJpbmcodGVtcCkgKyovICIgRj4gIiArIHMyKTsKKyAgICAKKyAgICAgICAgaWYgKFNUUklOR19DT01QQVJFKSB7CisgICAgICAgICAgICBpZiAoIXMuZXF1YWxzKHMyKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCIqKiogU1RSSU5HIEVSUk9SIFwiIiArIHMgKyAiXCIgIT0gXCIiICsgczIgKyAiXCIiKTsKKyAgICAgICAgICAgICAgICBzaG93ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIAorICAgICAgICBpZiAoRVhBQ1RfTlVNRVJJQ19DT01QQVJFKSB7CisgICAgICAgICAgICBpZiAodmFsdWUgIT0gbikgeworICAgICAgICAgICAgICAgIGVycmxuKCIqKiogTlVNRVJJQyBFUlJPUiIpOworICAgICAgICAgICAgICAgIHNob3cgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gQ29tcHV0ZSBwcm9wb3J0aW9uYWwgZXJyb3IKKyAgICAgICAgICAgIGRvdWJsZSBlcnJvciA9IHByb3BvcnRpb25hbEVycm9yKHZhbHVlLCBuKTsKKyAgICAKKyAgICAgICAgICAgIGlmIChlcnJvciA+IE1BWF9FUlJPUikgeworICAgICAgICAgICAgICAgIGVycmxuKCIqKiogTlVNRVJJQyBFUlJPUiAiICsgZXJyb3IpOworICAgICAgICAgICAgICAgIHNob3cgPSB0cnVlOworICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgaWYgKGVycm9yID4gbWF4X251bWVyaWNfZXJyb3IpCisgICAgICAgICAgICAgICAgbWF4X251bWVyaWNfZXJyb3IgPSBlcnJvcjsKKyAgICAgICAgICAgIGlmIChlcnJvciA8IG1pbl9udW1lcmljX2Vycm9yKQorICAgICAgICAgICAgICAgIG1pbl9udW1lcmljX2Vycm9yID0gZXJyb3I7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgaWYgKHNob3cpCisgICAgICAgICAgICBsb2dsbigKKyAgICAgICAgICAgIC8qdmFsdWUuZ2V0U3RyaW5nKHRlbXApICsqLyB2YWx1ZS5nZXRDbGFzcygpLmdldE5hbWUoKSArICIgRj4gIiArIHMgKyAiIFA+ICIgKworICAgICAgICAgICAgLypuLmdldFN0cmluZyh0ZW1wKSArKi8gbi5nZXRDbGFzcygpLmdldE5hbWUoKSArICIgRj4gIiArIHMyKTsKKyAgICAKKyAgICB9CisgICAgICAgIAorICAgIHB1YmxpYyBkb3VibGUgcHJvcG9ydGlvbmFsRXJyb3IoTnVtYmVyIGEsIE51bWJlciBiKSB7CisgICAgICAgIGRvdWJsZSBhYSxiYjsKKyAgICAgICAgCisgICAgICAgIGlmKGEuZ2V0Q2xhc3MoKS5nZXROYW1lKCkuZXF1YWxzSWdub3JlQ2FzZSgiamF2YS5sYW5nLkRvdWJsZSIpKQorICAgICAgICAgICAgYWEgPSBhLmRvdWJsZVZhbHVlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFhID0gYS5sb25nVmFsdWUoKTsKKyAgICAKKyAgICAgICAgaWYoYS5nZXRDbGFzcygpLmdldE5hbWUoKS5lcXVhbHNJZ25vcmVDYXNlKCJqYXZhLmxhbmcuRG91YmxlIikpCisgICAgICAgICAgICBiYiA9IGIuZG91YmxlVmFsdWUoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYmIgPSBiLmxvbmdWYWx1ZSgpOworICAgIAorICAgICAgICBkb3VibGUgZXJyb3IgPSBhYSAtIGJiOworICAgICAgICBpZihhYSAhPSAwICYmIGJiICE9IDApIAorICAgICAgICAgICAgZXJyb3IgLz0gYWE7CisgICAgICAgICAgIAorICAgICAgICByZXR1cm4gTWF0aC5hYnMoZXJyb3IpOworICAgIH0gICAKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvZm9ybWF0L051bWJlckZvcm1hdFNlcmlhbFRlc3REYXRhLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvZm9ybWF0L051bWJlckZvcm1hdFNlcmlhbFRlc3REYXRhLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOTAzN2MyYwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9mb3JtYXQvTnVtYmVyRm9ybWF0U2VyaWFsVGVzdERhdGEuamF2YQpAQCAtMCwwICsxLDMxMSBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICAgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvZm9ybWF0L051bWJlckZvcm1hdFNlcmlhbFRlc3REYXRhLmphdmEsdiAkCisgKiAkRGF0ZTogMjAwMi8wMi8xOSAxNzo1OTowMyAkCisgKiAkUmV2aXNpb246IDEuNCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudGVzdC5mb3JtYXQ7CisKK3B1YmxpYyBjbGFzcyBOdW1iZXJGb3JtYXRTZXJpYWxUZXN0RGF0YSB7CisgICAgLy9nZXQgQ29udGVudAorICAgIHB1YmxpYyBzdGF0aWMgYnl0ZVtdW10gZ2V0Q29udGVudCgpIHsKKwkgICAgICAgIHJldHVybiBjb250ZW50OworICAgIH0KKworICAgIC8vTnVtYmVyRm9ybWF0LmdldEluc3RhbmNlKExvY2FsZS5VUykKKyAgICBzdGF0aWMgYnl0ZVtdIGdlbmVyYWxJbnN0YW5jZSA9IG5ldyBieXRlW117IAorICAgICAgICAtODQsIC0xOSwgMCwgNSwgMTE1LCAxMTQsIDAsIDMwLCA5OSwgMTExLCAxMDksIDQ2LCAxMDUsIDk4LCAxMDksIDQ2LCAxMDUsIDk5LCAxMTcsIDQ2LCAKKyAgICAgICAgMTE2LCAxMDEsIDEyMCwgMTE2LCA0NiwgNjgsIDEwMSwgOTksIDEwNSwgMTA5LCA5NywgMTA4LCA3MCwgMTExLCAxMTQsIDEwOSwgOTcsIDExNiwgMTEsIC0xLCAKKyAgICAgICAgMywgOTgsIC00MCwgMTE0LCA0OCwgNTgsIDIsIDAsIDIyLCA5MCwgMCwgMjcsIDEwMCwgMTAxLCA5OSwgMTA1LCAxMDksIDk3LCAxMDgsIDgzLCAKKyAgICAgICAgMTAxLCAxMTIsIDk3LCAxMTQsIDk3LCAxMTYsIDExMSwgMTE0LCA2NSwgMTA4LCAxMTksIDk3LCAxMjEsIDExNSwgODMsIDEwNCwgMTExLCAxMTksIDExMCwgOTAsIAorICAgICAgICAwLCAyMywgMTAxLCAxMjAsIDExMiwgMTExLCAxMTAsIDEwMSwgMTEwLCAxMTYsIDgzLCAxMDUsIDEwMywgMTEwLCA2NSwgMTA4LCAxMTksIDk3LCAxMjEsIDExNSwgCisgICAgICAgIDgzLCAxMDQsIDExMSwgMTE5LCAxMTAsIDczLCAwLCAxMSwgMTAyLCAxMTEsIDExNCwgMTA5LCA5NywgMTE2LCA4NywgMTA1LCAxMDAsIDExNiwgMTA0LCA2NiwgCisgICAgICAgIDAsIDEyLCAxMDMsIDExNCwgMTExLCAxMTcsIDExMiwgMTA1LCAxMTAsIDEwMywgODMsIDEwNSwgMTIyLCAxMDEsIDY2LCAwLCAxMywgMTAzLCAxMTQsIDExMSwgCisgICAgICAgIDExNywgMTEyLCAxMDUsIDExMCwgMTAzLCA4MywgMTA1LCAxMjIsIDEwMSwgNTAsIDY2LCAwLCAxNywgMTA5LCAxMDUsIDExMCwgNjksIDEyMCwgMTEyLCAxMTEsIAorICAgICAgICAxMTAsIDEwMSwgMTEwLCAxMTYsIDY4LCAxMDUsIDEwMywgMTA1LCAxMTYsIDExNSwgNzMsIDAsIDEwLCAxMDksIDExNywgMTA4LCAxMTYsIDEwNSwgMTEyLCAxMDgsIAorICAgICAgICAxMDUsIDEwMSwgMTE0LCA2NywgMCwgMywgMTEyLCA5NywgMTAwLCA3MywgMCwgMTEsIDExMiwgOTcsIDEwMCwgODAsIDExMSwgMTE1LCAxMDUsIDExNiwgCisgICAgICAgIDEwNSwgMTExLCAxMTAsIDczLCAwLCAxMiwgMTE0LCAxMTEsIDExNywgMTEwLCAxMDAsIDEwNSwgMTEwLCAxMDMsIDc3LCAxMTEsIDEwMCwgMTAxLCA3MywgMCwgCisgICAgICAgIDIxLCAxMTUsIDEwMSwgMTE0LCAxMDUsIDk3LCAxMDgsIDg2LCAxMDEsIDExNCwgMTE1LCAxMDUsIDExMSwgMTEwLCA3OSwgMTEwLCA4MywgMTE2LCAxMTQsIDEwMSwgCisgICAgICAgIDk3LCAxMDksIDkwLCAwLCAyMiwgMTE3LCAxMTUsIDEwMSwgNjksIDEyMCwgMTEyLCAxMTEsIDExMCwgMTAxLCAxMTAsIDExNiwgMTA1LCA5NywgMTA4LCA3OCwgCisgICAgICAgIDExMSwgMTE2LCA5NywgMTE2LCAxMDUsIDExMSwgMTEwLCA3NiwgMCwgMTYsIDExMCwgMTAxLCAxMDMsIDgwLCAxMTQsIDEwMSwgMTAyLCAxMDUsIDEyMCwgODAsIAorICAgICAgICA5NywgMTE2LCAxMTYsIDEwMSwgMTE0LCAxMTAsIDExNiwgMCwgMTgsIDc2LCAxMDYsIDk3LCAxMTgsIDk3LCA0NywgMTA4LCA5NywgMTEwLCAxMDMsIDQ3LCAKKyAgICAgICAgODMsIDExNiwgMTE0LCAxMDUsIDExMCwgMTAzLCA1OSwgNzYsIDAsIDE2LCAxMTAsIDEwMSwgMTAzLCA4MywgMTE3LCAxMDIsIDEwMiwgMTA1LCAxMjAsIDgwLCAKKyAgICAgICAgOTcsIDExNiwgMTE2LCAxMDEsIDExNCwgMTEwLCAxMTMsIDAsIDEyNiwgMCwgMSwgNzYsIDAsIDE0LCAxMTAsIDEwMSwgMTAzLCA5NywgMTE2LCAxMDUsIAorICAgICAgICAxMTgsIDEwMSwgODAsIDExNCwgMTAxLCAxMDIsIDEwNSwgMTIwLCAxMTMsIDAsIDEyNiwgMCwgMSwgNzYsIDAsIDE0LCAxMTAsIDEwMSwgMTAzLCA5NywgCisgICAgICAgIDExNiwgMTA1LCAxMTgsIDEwMSwgODMsIDExNywgMTAyLCAxMDIsIDEwNSwgMTIwLCAxMTMsIDAsIDEyNiwgMCwgMSwgNzYsIDAsIDE2LCAxMTIsIDExMSwgCisgICAgICAgIDExNSwgODAsIDExNCwgMTAxLCAxMDIsIDEwNSwgMTIwLCA4MCwgOTcsIDExNiwgMTE2LCAxMDEsIDExNCwgMTEwLCAxMTMsIDAsIDEyNiwgMCwgMSwgNzYsIAorICAgICAgICAwLCAxNiwgMTEyLCAxMTEsIDExNSwgODMsIDExNywgMTAyLCAxMDIsIDEwNSwgMTIwLCA4MCwgOTcsIDExNiwgMTE2LCAxMDEsIDExNCwgMTEwLCAxMTMsIDAsIAorICAgICAgICAxMjYsIDAsIDEsIDc2LCAwLCAxNCwgMTEyLCAxMTEsIDExNSwgMTA1LCAxMTYsIDEwNSwgMTE4LCAxMDEsIDgwLCAxMTQsIDEwMSwgMTAyLCAxMDUsIDEyMCwgCisgICAgICAgIDExMywgMCwgMTI2LCAwLCAxLCA3NiwgMCwgMTQsIDExMiwgMTExLCAxMTUsIDEwNSwgMTE2LCAxMDUsIDExOCwgMTAxLCA4MywgMTE3LCAxMDIsIDEwMiwgCisgICAgICAgIDEwNSwgMTIwLCAxMTMsIDAsIDEyNiwgMCwgMSwgNzYsIDAsIDE3LCAxMTQsIDExMSwgMTE3LCAxMTAsIDEwMCwgMTA1LCAxMTAsIDEwMywgNzMsIDExMCwgCisgICAgICAgIDk5LCAxMTQsIDEwMSwgMTA5LCAxMDEsIDExMCwgMTE2LCAxMTYsIDAsIDIyLCA3NiwgMTA2LCA5NywgMTE4LCA5NywgNDcsIDEwOSwgOTcsIDExNiwgMTA0LCAKKyAgICAgICAgNDcsIDY2LCAxMDUsIDEwMywgNjgsIDEwMSwgOTksIDEwNSwgMTA5LCA5NywgMTA4LCA1OSwgNzYsIDAsIDcsIDExNSwgMTIxLCAxMDksIDk4LCAxMTEsIAorICAgICAgICAxMDgsIDExNSwgMTE2LCAwLCAzOSwgNzYsIDk5LCAxMTEsIDEwOSwgNDcsIDEwNSwgOTgsIDEwOSwgNDcsIDEwNSwgOTksIDExNywgNDcsIDExNiwgMTAxLCAKKyAgICAgICAgMTIwLCAxMTYsIDQ3LCA2OCwgMTAxLCA5OSwgMTA1LCAxMDksIDk3LCAxMDgsIDcwLCAxMTEsIDExNCwgMTA5LCA5NywgMTE2LCA4MywgMTIxLCAxMDksIDk4LCAKKyAgICAgICAgMTExLCAxMDgsIDExNSwgNTksIDEyMCwgMTE0LCAwLCAyOSwgOTksIDExMSwgMTA5LCA0NiwgMTA1LCA5OCwgMTA5LCA0NiwgMTA1LCA5OSwgMTE3LCA0NiwgCisgICAgICAgIDExNiwgMTAxLCAxMjAsIDExNiwgNDYsIDc4LCAxMTcsIDEwOSwgOTgsIDEwMSwgMTE0LCA3MCwgMTExLCAxMTQsIDEwOSwgOTcsIDExNiwgLTMzLCAtMTAsIC03NywgCisgICAgICAgIC02NSwgMTksIDEyNSwgNywgLTI0LCAzLCAwLCAxMSwgOTAsIDAsIDEyLCAxMDMsIDExNCwgMTExLCAxMTcsIDExMiwgMTA1LCAxMTAsIDEwMywgODUsIAorICAgICAgICAxMTUsIDEwMSwgMTAwLCA2NiwgMCwgMTcsIDEwOSwgOTcsIDEyMCwgNzAsIDExNCwgOTcsIDk5LCAxMTYsIDEwNSwgMTExLCAxMTAsIDY4LCAxMDUsIDEwMywgCisgICAgICAgIDEwNSwgMTE2LCAxMTUsIDY2LCAwLCAxNiwgMTA5LCA5NywgMTIwLCA3MywgMTEwLCAxMTYsIDEwMSwgMTAzLCAxMDEsIDExNCwgNjgsIDEwNSwgMTAzLCAxMDUsIAorICAgICAgICAxMTYsIDExNSwgNzMsIDAsIDIxLCAxMDksIDk3LCAxMjAsIDEwNSwgMTA5LCAxMTcsIDEwOSwgNzAsIDExNCwgOTcsIDk5LCAxMTYsIDEwNSwgMTExLCAxMTAsIAorICAgICAgICA2OCwgMTA1LCAxMDMsIDEwNSwgMTE2LCAxMTUsIDczLCAwLCAyMCwgMTA5LCA5NywgMTIwLCAxMDUsIDEwOSwgMTE3LCAxMDksIDczLCAxMTAsIDExNiwgMTAxLCAKKyAgICAgICAgMTAzLCAxMDEsIDExNCwgNjgsIDEwNSwgMTAzLCAxMDUsIDExNiwgMTE1LCA2NiwgMCwgMTcsIDEwOSwgMTA1LCAxMTAsIDcwLCAxMTQsIDk3LCA5OSwgMTE2LCAKKyAgICAgICAgMTA1LCAxMTEsIDExMCwgNjgsIDEwNSwgMTAzLCAxMDUsIDExNiwgMTE1LCA2NiwgMCwgMTYsIDEwOSwgMTA1LCAxMTAsIDczLCAxMTAsIDExNiwgMTAxLCAxMDMsIAorICAgICAgICAxMDEsIDExNCwgNjgsIDEwNSwgMTAzLCAxMDUsIDExNiwgMTE1LCA3MywgMCwgMjEsIDEwOSwgMTA1LCAxMTAsIDEwNSwgMTA5LCAxMTcsIDEwOSwgNzAsIDExNCwgCisgICAgICAgIDk3LCA5OSwgMTE2LCAxMDUsIDExMSwgMTEwLCA2OCwgMTA1LCAxMDMsIDEwNSwgMTE2LCAxMTUsIDczLCAwLCAyMCwgMTA5LCAxMDUsIDExMCwgMTA1LCAxMDksIAorICAgICAgICAxMTcsIDEwOSwgNzMsIDExMCwgMTE2LCAxMDEsIDEwMywgMTAxLCAxMTQsIDY4LCAxMDUsIDEwMywgMTA1LCAxMTYsIDExNSwgOTAsIDAsIDE2LCAxMTIsIDk3LCAKKyAgICAgICAgMTE0LCAxMTUsIDEwMSwgNzMsIDExMCwgMTE2LCAxMDEsIDEwMywgMTAxLCAxMTQsIDc5LCAxMTAsIDEwOCwgMTIxLCA3MywgMCwgMjEsIDExNSwgMTAxLCAxMTQsIAorICAgICAgICAxMDUsIDk3LCAxMDgsIDg2LCAxMDEsIDExNCwgMTE1LCAxMDUsIDExMSwgMTEwLCA3OSwgMTEwLCA4MywgMTE2LCAxMTQsIDEwMSwgOTcsIDEwOSwgMTIwLCAxMTQsIAorICAgICAgICAwLCAxNiwgMTA2LCA5NywgMTE4LCA5NywgNDYsIDExNiwgMTAxLCAxMjAsIDExNiwgNDYsIDcwLCAxMTEsIDExNCwgMTA5LCA5NywgMTE2LCAtNSwgLTQwLCAKKyAgICAgICAgLTY4LCAxOCwgLTIzLCAxNSwgMjQsIDY3LCAyLCAwLCAwLCAxMjAsIDExMiwgMSwgMywgMTI3LCAwLCAwLCAwLCAzLCAwLCAwLCAKKyAgICAgICAgMSwgNTMsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDEsIDEyMCwgMCwgMCwgCisgICAgICAgIDAsIDAsIDAsIDAsIDMsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAgICAgNiwgMCwgMCwgMCwgMiwgMCwgMTE2LCAwLCAxLCA0NSwgMTE2LCAwLCAwLCAxMTYsIDAsIDEsIDQ1LCAxMTYsIDAsIDAsIAorICAgICAgICAxMTYsIDAsIDAsIDExNiwgMCwgMCwgMTE2LCAwLCAwLCAxMTYsIDAsIDAsIDExMiwgMTE1LCAxMTQsIDAsIDM3LCA5OSwgMTExLCAxMDksIAorICAgICAgICA0NiwgMTA1LCA5OCwgMTA5LCA0NiwgMTA1LCA5OSwgMTE3LCA0NiwgMTE2LCAxMDEsIDEyMCwgMTE2LCA0NiwgNjgsIDEwMSwgOTksIDEwNSwgMTA5LCA5NywgCisgICAgICAgIDEwOCwgNzAsIDExMSwgMTE0LCAxMDksIDk3LCAxMTYsIDgzLCAxMjEsIDEwOSwgOTgsIDExMSwgMTA4LCAxMTUsIDgwLCAyOSwgMjMsIC0xMDMsIDgsIDEwNCwgCisgICAgICAgIC0xMDksIC0xMDAsIDIsIDAsIDE4LCA2NywgMCwgMTYsIDEwMCwgMTAxLCA5OSwgMTA1LCAxMDksIDk3LCAxMDgsIDgzLCAxMDEsIDExMiwgOTcsIDExNCwgCisgICAgICAgIDk3LCAxMTYsIDExMSwgMTE0LCA2NywgMCwgNSwgMTAwLCAxMDUsIDEwMywgMTA1LCAxMTYsIDY3LCAwLCAxMSwgMTAxLCAxMjAsIDExMiwgMTExLCAxMTAsIAorICAgICAgICAxMDEsIDExMCwgMTE2LCAxMDUsIDk3LCAxMDgsIDY3LCAwLCAxNywgMTAzLCAxMTQsIDExMSwgMTE3LCAxMTIsIDEwNSwgMTEwLCAxMDMsIDgzLCAxMDEsIDExMiwgCisgICAgICAgIDk3LCAxMTQsIDk3LCAxMTYsIDExMSwgMTE0LCA2NywgMCwgOSwgMTA5LCAxMDUsIDExMCwgMTE3LCAxMTUsIDgzLCAxMDUsIDEwMywgMTEwLCA2NywgMCwgCisgICAgICAgIDE3LCAxMDksIDExMSwgMTEwLCAxMDEsIDExNiwgOTcsIDExNCwgMTIxLCA4MywgMTAxLCAxMTIsIDk3LCAxMTQsIDk3LCAxMTYsIDExMSwgMTE0LCA2NywgMCwgCisgICAgICAgIDksIDExMiwgOTcsIDEwMCwgNjksIDExNSwgOTksIDk3LCAxMTIsIDEwMSwgNjcsIDAsIDE2LCAxMTIsIDk3LCAxMTYsIDExNiwgMTAxLCAxMTQsIDExMCwgCisgICAgICAgIDgzLCAxMDEsIDExMiwgOTcsIDExNCwgOTcsIDExNiwgMTExLCAxMTQsIDY3LCAwLCA3LCAxMTIsIDEwMSwgMTE0LCA3NywgMTA1LCAxMDgsIDEwOCwgNjcsIAorICAgICAgICAwLCA3LCAxMTIsIDEwMSwgMTE0LCA5OSwgMTAxLCAxMTAsIDExNiwgNjcsIDAsIDgsIDExMiwgMTA4LCAxMTcsIDExNSwgODMsIDEwNSwgMTAzLCAxMTAsIAorICAgICAgICA3MywgMCwgMjEsIDExNSwgMTAxLCAxMTQsIDEwNSwgOTcsIDEwOCwgODYsIDEwMSwgMTE0LCAxMTUsIDEwNSwgMTExLCAxMTAsIDc5LCAxMTAsIDgzLCAxMTYsIAorICAgICAgICAxMTQsIDEwMSwgOTcsIDEwOSwgNjcsIDAsIDksIDEyMiwgMTAxLCAxMTQsIDExMSwgNjgsIDEwNSwgMTAzLCAxMDUsIDExNiwgNzYsIDAsIDMsIDc4LCAKKyAgICAgICAgOTcsIDc4LCAxMTMsIDAsIDEyNiwgMCwgMSwgNzYsIDAsIDE0LCA5OSwgMTE3LCAxMTQsIDExNCwgMTAxLCAxMTAsIDk5LCAxMjEsIDgzLCAxMjEsIAorICAgICAgICAxMDksIDk4LCAxMTEsIDEwOCwgMTEzLCAwLCAxMjYsIDAsIDEsIDc2LCAwLCAxNywgMTAxLCAxMjAsIDExMiwgMTExLCAxMTAsIDEwMSwgMTEwLCAxMTYsIAorICAgICAgICA4MywgMTAxLCAxMTIsIDk3LCAxMTQsIDk3LCAxMTYsIDExMSwgMTE0LCAxMTMsIDAsIDEyNiwgMCwgMSwgNzYsIDAsIDgsIDEwNSwgMTEwLCAxMDIsIAorICAgICAgICAxMDUsIDExMCwgMTA1LCAxMTYsIDEyMSwgMTEzLCAwLCAxMjYsIDAsIDEsIDc2LCAwLCAxOCwgMTA1LCAxMTAsIDExNiwgMTA4LCA2NywgMTE3LCAxMTQsIAorICAgICAgICAxMTQsIDEwMSwgMTEwLCA5OSwgMTIxLCA4MywgMTIxLCAxMDksIDk4LCAxMTEsIDEwOCwgMTEzLCAwLCAxMjYsIDAsIDEsIDEyMCwgMTEyLCAwLCA0NiwgCisgICAgICAgIDAsIDM1LCAwLCAwLCAwLCA0NCwgMCwgNDUsIDAsIDQ2LCAwLCA0MiwgMCwgNTksIDMyLCA0OCwgMCwgMzcsIDAsIDQzLCAKKyAgICAgICAgMCwgMCwgMCwgMiwgMCwgNDgsIDExNiwgMCwgMywgLTE3LCAtNjUsIC02NywgMTE2LCAwLCAxLCAzNiwgMTE2LCAwLCAxLCA2OSwgCisgICAgICAgIDExNiwgMCwgMywgLTMwLCAtMTIwLCAtOTgsIDExNiwgMCwgMywgODUsIDgzLCA2OCwgCisgICAgfTsKKworICAgIC8vTnVtYmVyRm9ybWF0LmdldEN1cnJlbmN5SW5zdGFuY2UoTG9jYWxlLlVTKQorICAgIHN0YXRpYyBieXRlW10gY3VycmVuY3lJbnN0YW5jZSA9IG5ldyBieXRlW117IAorICAgICAgICAtODQsIC0xOSwgMCwgNSwgMTE1LCAxMTQsIDAsIDMwLCA5OSwgMTExLCAxMDksIDQ2LCAxMDUsIDk4LCAxMDksIDQ2LCAxMDUsIDk5LCAxMTcsIDQ2LCAKKyAgICAgICAgMTE2LCAxMDEsIDEyMCwgMTE2LCA0NiwgNjgsIDEwMSwgOTksIDEwNSwgMTA5LCA5NywgMTA4LCA3MCwgMTExLCAxMTQsIDEwOSwgOTcsIDExNiwgMTEsIC0xLCAKKyAgICAgICAgMywgOTgsIC00MCwgMTE0LCA0OCwgNTgsIDIsIDAsIDIyLCA5MCwgMCwgMjcsIDEwMCwgMTAxLCA5OSwgMTA1LCAxMDksIDk3LCAxMDgsIDgzLCAKKyAgICAgICAgMTAxLCAxMTIsIDk3LCAxMTQsIDk3LCAxMTYsIDExMSwgMTE0LCA2NSwgMTA4LCAxMTksIDk3LCAxMjEsIDExNSwgODMsIDEwNCwgMTExLCAxMTksIDExMCwgOTAsIAorICAgICAgICAwLCAyMywgMTAxLCAxMjAsIDExMiwgMTExLCAxMTAsIDEwMSwgMTEwLCAxMTYsIDgzLCAxMDUsIDEwMywgMTEwLCA2NSwgMTA4LCAxMTksIDk3LCAxMjEsIDExNSwgCisgICAgICAgIDgzLCAxMDQsIDExMSwgMTE5LCAxMTAsIDczLCAwLCAxMSwgMTAyLCAxMTEsIDExNCwgMTA5LCA5NywgMTE2LCA4NywgMTA1LCAxMDAsIDExNiwgMTA0LCA2NiwgCisgICAgICAgIDAsIDEyLCAxMDMsIDExNCwgMTExLCAxMTcsIDExMiwgMTA1LCAxMTAsIDEwMywgODMsIDEwNSwgMTIyLCAxMDEsIDY2LCAwLCAxMywgMTAzLCAxMTQsIDExMSwgCisgICAgICAgIDExNywgMTEyLCAxMDUsIDExMCwgMTAzLCA4MywgMTA1LCAxMjIsIDEwMSwgNTAsIDY2LCAwLCAxNywgMTA5LCAxMDUsIDExMCwgNjksIDEyMCwgMTEyLCAxMTEsIAorICAgICAgICAxMTAsIDEwMSwgMTEwLCAxMTYsIDY4LCAxMDUsIDEwMywgMTA1LCAxMTYsIDExNSwgNzMsIDAsIDEwLCAxMDksIDExNywgMTA4LCAxMTYsIDEwNSwgMTEyLCAxMDgsIAorICAgICAgICAxMDUsIDEwMSwgMTE0LCA2NywgMCwgMywgMTEyLCA5NywgMTAwLCA3MywgMCwgMTEsIDExMiwgOTcsIDEwMCwgODAsIDExMSwgMTE1LCAxMDUsIDExNiwgCisgICAgICAgIDEwNSwgMTExLCAxMTAsIDczLCAwLCAxMiwgMTE0LCAxMTEsIDExNywgMTEwLCAxMDAsIDEwNSwgMTEwLCAxMDMsIDc3LCAxMTEsIDEwMCwgMTAxLCA3MywgMCwgCisgICAgICAgIDIxLCAxMTUsIDEwMSwgMTE0LCAxMDUsIDk3LCAxMDgsIDg2LCAxMDEsIDExNCwgMTE1LCAxMDUsIDExMSwgMTEwLCA3OSwgMTEwLCA4MywgMTE2LCAxMTQsIDEwMSwgCisgICAgICAgIDk3LCAxMDksIDkwLCAwLCAyMiwgMTE3LCAxMTUsIDEwMSwgNjksIDEyMCwgMTEyLCAxMTEsIDExMCwgMTAxLCAxMTAsIDExNiwgMTA1LCA5NywgMTA4LCA3OCwgCisgICAgICAgIDExMSwgMTE2LCA5NywgMTE2LCAxMDUsIDExMSwgMTEwLCA3NiwgMCwgMTYsIDExMCwgMTAxLCAxMDMsIDgwLCAxMTQsIDEwMSwgMTAyLCAxMDUsIDEyMCwgODAsIAorICAgICAgICA5NywgMTE2LCAxMTYsIDEwMSwgMTE0LCAxMTAsIDExNiwgMCwgMTgsIDc2LCAxMDYsIDk3LCAxMTgsIDk3LCA0NywgMTA4LCA5NywgMTEwLCAxMDMsIDQ3LCAKKyAgICAgICAgODMsIDExNiwgMTE0LCAxMDUsIDExMCwgMTAzLCA1OSwgNzYsIDAsIDE2LCAxMTAsIDEwMSwgMTAzLCA4MywgMTE3LCAxMDIsIDEwMiwgMTA1LCAxMjAsIDgwLCAKKyAgICAgICAgOTcsIDExNiwgMTE2LCAxMDEsIDExNCwgMTEwLCAxMTMsIDAsIDEyNiwgMCwgMSwgNzYsIDAsIDE0LCAxMTAsIDEwMSwgMTAzLCA5NywgMTE2LCAxMDUsIAorICAgICAgICAxMTgsIDEwMSwgODAsIDExNCwgMTAxLCAxMDIsIDEwNSwgMTIwLCAxMTMsIDAsIDEyNiwgMCwgMSwgNzYsIDAsIDE0LCAxMTAsIDEwMSwgMTAzLCA5NywgCisgICAgICAgIDExNiwgMTA1LCAxMTgsIDEwMSwgODMsIDExNywgMTAyLCAxMDIsIDEwNSwgMTIwLCAxMTMsIDAsIDEyNiwgMCwgMSwgNzYsIDAsIDE2LCAxMTIsIDExMSwgCisgICAgICAgIDExNSwgODAsIDExNCwgMTAxLCAxMDIsIDEwNSwgMTIwLCA4MCwgOTcsIDExNiwgMTE2LCAxMDEsIDExNCwgMTEwLCAxMTMsIDAsIDEyNiwgMCwgMSwgNzYsIAorICAgICAgICAwLCAxNiwgMTEyLCAxMTEsIDExNSwgODMsIDExNywgMTAyLCAxMDIsIDEwNSwgMTIwLCA4MCwgOTcsIDExNiwgMTE2LCAxMDEsIDExNCwgMTEwLCAxMTMsIDAsIAorICAgICAgICAxMjYsIDAsIDEsIDc2LCAwLCAxNCwgMTEyLCAxMTEsIDExNSwgMTA1LCAxMTYsIDEwNSwgMTE4LCAxMDEsIDgwLCAxMTQsIDEwMSwgMTAyLCAxMDUsIDEyMCwgCisgICAgICAgIDExMywgMCwgMTI2LCAwLCAxLCA3NiwgMCwgMTQsIDExMiwgMTExLCAxMTUsIDEwNSwgMTE2LCAxMDUsIDExOCwgMTAxLCA4MywgMTE3LCAxMDIsIDEwMiwgCisgICAgICAgIDEwNSwgMTIwLCAxMTMsIDAsIDEyNiwgMCwgMSwgNzYsIDAsIDE3LCAxMTQsIDExMSwgMTE3LCAxMTAsIDEwMCwgMTA1LCAxMTAsIDEwMywgNzMsIDExMCwgCisgICAgICAgIDk5LCAxMTQsIDEwMSwgMTA5LCAxMDEsIDExMCwgMTE2LCAxMTYsIDAsIDIyLCA3NiwgMTA2LCA5NywgMTE4LCA5NywgNDcsIDEwOSwgOTcsIDExNiwgMTA0LCAKKyAgICAgICAgNDcsIDY2LCAxMDUsIDEwMywgNjgsIDEwMSwgOTksIDEwNSwgMTA5LCA5NywgMTA4LCA1OSwgNzYsIDAsIDcsIDExNSwgMTIxLCAxMDksIDk4LCAxMTEsIAorICAgICAgICAxMDgsIDExNSwgMTE2LCAwLCAzOSwgNzYsIDk5LCAxMTEsIDEwOSwgNDcsIDEwNSwgOTgsIDEwOSwgNDcsIDEwNSwgOTksIDExNywgNDcsIDExNiwgMTAxLCAKKyAgICAgICAgMTIwLCAxMTYsIDQ3LCA2OCwgMTAxLCA5OSwgMTA1LCAxMDksIDk3LCAxMDgsIDcwLCAxMTEsIDExNCwgMTA5LCA5NywgMTE2LCA4MywgMTIxLCAxMDksIDk4LCAKKyAgICAgICAgMTExLCAxMDgsIDExNSwgNTksIDEyMCwgMTE0LCAwLCAyOSwgOTksIDExMSwgMTA5LCA0NiwgMTA1LCA5OCwgMTA5LCA0NiwgMTA1LCA5OSwgMTE3LCA0NiwgCisgICAgICAgIDExNiwgMTAxLCAxMjAsIDExNiwgNDYsIDc4LCAxMTcsIDEwOSwgOTgsIDEwMSwgMTE0LCA3MCwgMTExLCAxMTQsIDEwOSwgOTcsIDExNiwgLTMzLCAtMTAsIC03NywgCisgICAgICAgIC02NSwgMTksIDEyNSwgNywgLTI0LCAzLCAwLCAxMSwgOTAsIDAsIDEyLCAxMDMsIDExNCwgMTExLCAxMTcsIDExMiwgMTA1LCAxMTAsIDEwMywgODUsIAorICAgICAgICAxMTUsIDEwMSwgMTAwLCA2NiwgMCwgMTcsIDEwOSwgOTcsIDEyMCwgNzAsIDExNCwgOTcsIDk5LCAxMTYsIDEwNSwgMTExLCAxMTAsIDY4LCAxMDUsIDEwMywgCisgICAgICAgIDEwNSwgMTE2LCAxMTUsIDY2LCAwLCAxNiwgMTA5LCA5NywgMTIwLCA3MywgMTEwLCAxMTYsIDEwMSwgMTAzLCAxMDEsIDExNCwgNjgsIDEwNSwgMTAzLCAxMDUsIAorICAgICAgICAxMTYsIDExNSwgNzMsIDAsIDIxLCAxMDksIDk3LCAxMjAsIDEwNSwgMTA5LCAxMTcsIDEwOSwgNzAsIDExNCwgOTcsIDk5LCAxMTYsIDEwNSwgMTExLCAxMTAsIAorICAgICAgICA2OCwgMTA1LCAxMDMsIDEwNSwgMTE2LCAxMTUsIDczLCAwLCAyMCwgMTA5LCA5NywgMTIwLCAxMDUsIDEwOSwgMTE3LCAxMDksIDczLCAxMTAsIDExNiwgMTAxLCAKKyAgICAgICAgMTAzLCAxMDEsIDExNCwgNjgsIDEwNSwgMTAzLCAxMDUsIDExNiwgMTE1LCA2NiwgMCwgMTcsIDEwOSwgMTA1LCAxMTAsIDcwLCAxMTQsIDk3LCA5OSwgMTE2LCAKKyAgICAgICAgMTA1LCAxMTEsIDExMCwgNjgsIDEwNSwgMTAzLCAxMDUsIDExNiwgMTE1LCA2NiwgMCwgMTYsIDEwOSwgMTA1LCAxMTAsIDczLCAxMTAsIDExNiwgMTAxLCAxMDMsIAorICAgICAgICAxMDEsIDExNCwgNjgsIDEwNSwgMTAzLCAxMDUsIDExNiwgMTE1LCA3MywgMCwgMjEsIDEwOSwgMTA1LCAxMTAsIDEwNSwgMTA5LCAxMTcsIDEwOSwgNzAsIDExNCwgCisgICAgICAgIDk3LCA5OSwgMTE2LCAxMDUsIDExMSwgMTEwLCA2OCwgMTA1LCAxMDMsIDEwNSwgMTE2LCAxMTUsIDczLCAwLCAyMCwgMTA5LCAxMDUsIDExMCwgMTA1LCAxMDksIAorICAgICAgICAxMTcsIDEwOSwgNzMsIDExMCwgMTE2LCAxMDEsIDEwMywgMTAxLCAxMTQsIDY4LCAxMDUsIDEwMywgMTA1LCAxMTYsIDExNSwgOTAsIDAsIDE2LCAxMTIsIDk3LCAKKyAgICAgICAgMTE0LCAxMTUsIDEwMSwgNzMsIDExMCwgMTE2LCAxMDEsIDEwMywgMTAxLCAxMTQsIDc5LCAxMTAsIDEwOCwgMTIxLCA3MywgMCwgMjEsIDExNSwgMTAxLCAxMTQsIAorICAgICAgICAxMDUsIDk3LCAxMDgsIDg2LCAxMDEsIDExNCwgMTE1LCAxMDUsIDExMSwgMTEwLCA3OSwgMTEwLCA4MywgMTE2LCAxMTQsIDEwMSwgOTcsIDEwOSwgMTIwLCAxMTQsIAorICAgICAgICAwLCAxNiwgMTA2LCA5NywgMTE4LCA5NywgNDYsIDExNiwgMTAxLCAxMjAsIDExNiwgNDYsIDcwLCAxMTEsIDExNCwgMTA5LCA5NywgMTE2LCAtNSwgLTQwLCAKKyAgICAgICAgLTY4LCAxOCwgLTIzLCAxNSwgMjQsIDY3LCAyLCAwLCAwLCAxMjAsIDExMiwgMSwgMiwgMTI3LCAwLCAwLCAwLCAyLCAwLCAwLCAKKyAgICAgICAgMSwgNTMsIDIsIDEsIDAsIDAsIDAsIDIsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDEsIDEyMCwgMCwgMCwgCisgICAgICAgIDAsIDAsIDAsIDAsIDMsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAgICAgNiwgMCwgMCwgMCwgMiwgMCwgMTE2LCAwLCAzLCA0MCwgLTYyLCAtOTIsIDExNiwgMCwgMSwgNDEsIDExNiwgMCwgMiwgNDAsIAorICAgICAgICAzNiwgMTE2LCAwLCAxLCA0MSwgMTE2LCAwLCAyLCAtNjIsIC05MiwgMTE2LCAwLCAwLCAxMTYsIDAsIDEsIDM2LCAxMTYsIDAsIDAsIAorICAgICAgICAxMTIsIDExNSwgMTE0LCAwLCAzNywgOTksIDExMSwgMTA5LCA0NiwgMTA1LCA5OCwgMTA5LCA0NiwgMTA1LCA5OSwgMTE3LCA0NiwgMTE2LCAxMDEsIDEyMCwgCisgICAgICAgIDExNiwgNDYsIDY4LCAxMDEsIDk5LCAxMDUsIDEwOSwgOTcsIDEwOCwgNzAsIDExMSwgMTE0LCAxMDksIDk3LCAxMTYsIDgzLCAxMjEsIDEwOSwgOTgsIDExMSwgCisgICAgICAgIDEwOCwgMTE1LCA4MCwgMjksIDIzLCAtMTAzLCA4LCAxMDQsIC0xMDksIC0xMDAsIDIsIDAsIDE4LCA2NywgMCwgMTYsIDEwMCwgMTAxLCA5OSwgMTA1LCAKKyAgICAgICAgMTA5LCA5NywgMTA4LCA4MywgMTAxLCAxMTIsIDk3LCAxMTQsIDk3LCAxMTYsIDExMSwgMTE0LCA2NywgMCwgNSwgMTAwLCAxMDUsIDEwMywgMTA1LCAxMTYsIAorICAgICAgICA2NywgMCwgMTEsIDEwMSwgMTIwLCAxMTIsIDExMSwgMTEwLCAxMDEsIDExMCwgMTE2LCAxMDUsIDk3LCAxMDgsIDY3LCAwLCAxNywgMTAzLCAxMTQsIDExMSwgCisgICAgICAgIDExNywgMTEyLCAxMDUsIDExMCwgMTAzLCA4MywgMTAxLCAxMTIsIDk3LCAxMTQsIDk3LCAxMTYsIDExMSwgMTE0LCA2NywgMCwgOSwgMTA5LCAxMDUsIDExMCwgCisgICAgICAgIDExNywgMTE1LCA4MywgMTA1LCAxMDMsIDExMCwgNjcsIDAsIDE3LCAxMDksIDExMSwgMTEwLCAxMDEsIDExNiwgOTcsIDExNCwgMTIxLCA4MywgMTAxLCAxMTIsIAorICAgICAgICA5NywgMTE0LCA5NywgMTE2LCAxMTEsIDExNCwgNjcsIDAsIDksIDExMiwgOTcsIDEwMCwgNjksIDExNSwgOTksIDk3LCAxMTIsIDEwMSwgNjcsIDAsIAorICAgICAgICAxNiwgMTEyLCA5NywgMTE2LCAxMTYsIDEwMSwgMTE0LCAxMTAsIDgzLCAxMDEsIDExMiwgOTcsIDExNCwgOTcsIDExNiwgMTExLCAxMTQsIDY3LCAwLCA3LCAKKyAgICAgICAgMTEyLCAxMDEsIDExNCwgNzcsIDEwNSwgMTA4LCAxMDgsIDY3LCAwLCA3LCAxMTIsIDEwMSwgMTE0LCA5OSwgMTAxLCAxMTAsIDExNiwgNjcsIDAsIDgsIAorICAgICAgICAxMTIsIDEwOCwgMTE3LCAxMTUsIDgzLCAxMDUsIDEwMywgMTEwLCA3MywgMCwgMjEsIDExNSwgMTAxLCAxMTQsIDEwNSwgOTcsIDEwOCwgODYsIDEwMSwgMTE0LCAKKyAgICAgICAgMTE1LCAxMDUsIDExMSwgMTEwLCA3OSwgMTEwLCA4MywgMTE2LCAxMTQsIDEwMSwgOTcsIDEwOSwgNjcsIDAsIDksIDEyMiwgMTAxLCAxMTQsIDExMSwgNjgsIAorICAgICAgICAxMDUsIDEwMywgMTA1LCAxMTYsIDc2LCAwLCAzLCA3OCwgOTcsIDc4LCAxMTMsIDAsIDEyNiwgMCwgMSwgNzYsIDAsIDE0LCA5OSwgMTE3LCAKKyAgICAgICAgMTE0LCAxMTQsIDEwMSwgMTEwLCA5OSwgMTIxLCA4MywgMTIxLCAxMDksIDk4LCAxMTEsIDEwOCwgMTEzLCAwLCAxMjYsIDAsIDEsIDc2LCAwLCAxNywgCisgICAgICAgIDEwMSwgMTIwLCAxMTIsIDExMSwgMTEwLCAxMDEsIDExMCwgMTE2LCA4MywgMTAxLCAxMTIsIDk3LCAxMTQsIDk3LCAxMTYsIDExMSwgMTE0LCAxMTMsIDAsIDEyNiwgCisgICAgICAgIDAsIDEsIDc2LCAwLCA4LCAxMDUsIDExMCwgMTAyLCAxMDUsIDExMCwgMTA1LCAxMTYsIDEyMSwgMTEzLCAwLCAxMjYsIDAsIDEsIDc2LCAwLCAKKyAgICAgICAgMTgsIDEwNSwgMTEwLCAxMTYsIDEwOCwgNjcsIDExNywgMTE0LCAxMTQsIDEwMSwgMTEwLCA5OSwgMTIxLCA4MywgMTIxLCAxMDksIDk4LCAxMTEsIDEwOCwgMTEzLCAKKyAgICAgICAgMCwgMTI2LCAwLCAxLCAxMjAsIDExMiwgMCwgNDYsIDAsIDM1LCAwLCAwLCAwLCA0NCwgMCwgNDUsIDAsIDQ2LCAwLCA0MiwgCisgICAgICAgIDAsIDU5LCAzMiwgNDgsIDAsIDM3LCAwLCA0MywgMCwgMCwgMCwgMiwgMCwgNDgsIDExNiwgMCwgMywgLTE3LCAtNjUsIC02NywgCisgICAgICAgIDExNiwgMCwgMSwgMzYsIDExNiwgMCwgMSwgNjksIDExNiwgMCwgMywgLTMwLCAtMTIwLCAtOTgsIDExNiwgMCwgMywgODUsIDgzLCA2OCwgCisgICAgICAgIAorICAgIH07CisKKyAgICAvL051bWJlckZvcm1hdC5nZXRQZXJjZW50SW5zdGFuY2UoTG9jYWxlLlVTKQorICAgIHN0YXRpYyBieXRlW10gcGVyY2VudEluc3RhbmNlID0gbmV3IGJ5dGVbXXsgCisgICAgICAgIC04NCwgLTE5LCAwLCA1LCAxMTUsIDExNCwgMCwgMzAsIDk5LCAxMTEsIDEwOSwgNDYsIDEwNSwgOTgsIDEwOSwgNDYsIDEwNSwgOTksIDExNywgNDYsIAorICAgICAgICAxMTYsIDEwMSwgMTIwLCAxMTYsIDQ2LCA2OCwgMTAxLCA5OSwgMTA1LCAxMDksIDk3LCAxMDgsIDcwLCAxMTEsIDExNCwgMTA5LCA5NywgMTE2LCAxMSwgLTEsIAorICAgICAgICAzLCA5OCwgLTQwLCAxMTQsIDQ4LCA1OCwgMiwgMCwgMjIsIDkwLCAwLCAyNywgMTAwLCAxMDEsIDk5LCAxMDUsIDEwOSwgOTcsIDEwOCwgODMsIAorICAgICAgICAxMDEsIDExMiwgOTcsIDExNCwgOTcsIDExNiwgMTExLCAxMTQsIDY1LCAxMDgsIDExOSwgOTcsIDEyMSwgMTE1LCA4MywgMTA0LCAxMTEsIDExOSwgMTEwLCA5MCwgCisgICAgICAgIDAsIDIzLCAxMDEsIDEyMCwgMTEyLCAxMTEsIDExMCwgMTAxLCAxMTAsIDExNiwgODMsIDEwNSwgMTAzLCAxMTAsIDY1LCAxMDgsIDExOSwgOTcsIDEyMSwgMTE1LCAKKyAgICAgICAgODMsIDEwNCwgMTExLCAxMTksIDExMCwgNzMsIDAsIDExLCAxMDIsIDExMSwgMTE0LCAxMDksIDk3LCAxMTYsIDg3LCAxMDUsIDEwMCwgMTE2LCAxMDQsIDY2LCAKKyAgICAgICAgMCwgMTIsIDEwMywgMTE0LCAxMTEsIDExNywgMTEyLCAxMDUsIDExMCwgMTAzLCA4MywgMTA1LCAxMjIsIDEwMSwgNjYsIDAsIDEzLCAxMDMsIDExNCwgMTExLCAKKyAgICAgICAgMTE3LCAxMTIsIDEwNSwgMTEwLCAxMDMsIDgzLCAxMDUsIDEyMiwgMTAxLCA1MCwgNjYsIDAsIDE3LCAxMDksIDEwNSwgMTEwLCA2OSwgMTIwLCAxMTIsIDExMSwgCisgICAgICAgIDExMCwgMTAxLCAxMTAsIDExNiwgNjgsIDEwNSwgMTAzLCAxMDUsIDExNiwgMTE1LCA3MywgMCwgMTAsIDEwOSwgMTE3LCAxMDgsIDExNiwgMTA1LCAxMTIsIDEwOCwgCisgICAgICAgIDEwNSwgMTAxLCAxMTQsIDY3LCAwLCAzLCAxMTIsIDk3LCAxMDAsIDczLCAwLCAxMSwgMTEyLCA5NywgMTAwLCA4MCwgMTExLCAxMTUsIDEwNSwgMTE2LCAKKyAgICAgICAgMTA1LCAxMTEsIDExMCwgNzMsIDAsIDEyLCAxMTQsIDExMSwgMTE3LCAxMTAsIDEwMCwgMTA1LCAxMTAsIDEwMywgNzcsIDExMSwgMTAwLCAxMDEsIDczLCAwLCAKKyAgICAgICAgMjEsIDExNSwgMTAxLCAxMTQsIDEwNSwgOTcsIDEwOCwgODYsIDEwMSwgMTE0LCAxMTUsIDEwNSwgMTExLCAxMTAsIDc5LCAxMTAsIDgzLCAxMTYsIDExNCwgMTAxLCAKKyAgICAgICAgOTcsIDEwOSwgOTAsIDAsIDIyLCAxMTcsIDExNSwgMTAxLCA2OSwgMTIwLCAxMTIsIDExMSwgMTEwLCAxMDEsIDExMCwgMTE2LCAxMDUsIDk3LCAxMDgsIDc4LCAKKyAgICAgICAgMTExLCAxMTYsIDk3LCAxMTYsIDEwNSwgMTExLCAxMTAsIDc2LCAwLCAxNiwgMTEwLCAxMDEsIDEwMywgODAsIDExNCwgMTAxLCAxMDIsIDEwNSwgMTIwLCA4MCwgCisgICAgICAgIDk3LCAxMTYsIDExNiwgMTAxLCAxMTQsIDExMCwgMTE2LCAwLCAxOCwgNzYsIDEwNiwgOTcsIDExOCwgOTcsIDQ3LCAxMDgsIDk3LCAxMTAsIDEwMywgNDcsIAorICAgICAgICA4MywgMTE2LCAxMTQsIDEwNSwgMTEwLCAxMDMsIDU5LCA3NiwgMCwgMTYsIDExMCwgMTAxLCAxMDMsIDgzLCAxMTcsIDEwMiwgMTAyLCAxMDUsIDEyMCwgODAsIAorICAgICAgICA5NywgMTE2LCAxMTYsIDEwMSwgMTE0LCAxMTAsIDExMywgMCwgMTI2LCAwLCAxLCA3NiwgMCwgMTQsIDExMCwgMTAxLCAxMDMsIDk3LCAxMTYsIDEwNSwgCisgICAgICAgIDExOCwgMTAxLCA4MCwgMTE0LCAxMDEsIDEwMiwgMTA1LCAxMjAsIDExMywgMCwgMTI2LCAwLCAxLCA3NiwgMCwgMTQsIDExMCwgMTAxLCAxMDMsIDk3LCAKKyAgICAgICAgMTE2LCAxMDUsIDExOCwgMTAxLCA4MywgMTE3LCAxMDIsIDEwMiwgMTA1LCAxMjAsIDExMywgMCwgMTI2LCAwLCAxLCA3NiwgMCwgMTYsIDExMiwgMTExLCAKKyAgICAgICAgMTE1LCA4MCwgMTE0LCAxMDEsIDEwMiwgMTA1LCAxMjAsIDgwLCA5NywgMTE2LCAxMTYsIDEwMSwgMTE0LCAxMTAsIDExMywgMCwgMTI2LCAwLCAxLCA3NiwgCisgICAgICAgIDAsIDE2LCAxMTIsIDExMSwgMTE1LCA4MywgMTE3LCAxMDIsIDEwMiwgMTA1LCAxMjAsIDgwLCA5NywgMTE2LCAxMTYsIDEwMSwgMTE0LCAxMTAsIDExMywgMCwgCisgICAgICAgIDEyNiwgMCwgMSwgNzYsIDAsIDE0LCAxMTIsIDExMSwgMTE1LCAxMDUsIDExNiwgMTA1LCAxMTgsIDEwMSwgODAsIDExNCwgMTAxLCAxMDIsIDEwNSwgMTIwLCAKKyAgICAgICAgMTEzLCAwLCAxMjYsIDAsIDEsIDc2LCAwLCAxNCwgMTEyLCAxMTEsIDExNSwgMTA1LCAxMTYsIDEwNSwgMTE4LCAxMDEsIDgzLCAxMTcsIDEwMiwgMTAyLCAKKyAgICAgICAgMTA1LCAxMjAsIDExMywgMCwgMTI2LCAwLCAxLCA3NiwgMCwgMTcsIDExNCwgMTExLCAxMTcsIDExMCwgMTAwLCAxMDUsIDExMCwgMTAzLCA3MywgMTEwLCAKKyAgICAgICAgOTksIDExNCwgMTAxLCAxMDksIDEwMSwgMTEwLCAxMTYsIDExNiwgMCwgMjIsIDc2LCAxMDYsIDk3LCAxMTgsIDk3LCA0NywgMTA5LCA5NywgMTE2LCAxMDQsIAorICAgICAgICA0NywgNjYsIDEwNSwgMTAzLCA2OCwgMTAxLCA5OSwgMTA1LCAxMDksIDk3LCAxMDgsIDU5LCA3NiwgMCwgNywgMTE1LCAxMjEsIDEwOSwgOTgsIDExMSwgCisgICAgICAgIDEwOCwgMTE1LCAxMTYsIDAsIDM5LCA3NiwgOTksIDExMSwgMTA5LCA0NywgMTA1LCA5OCwgMTA5LCA0NywgMTA1LCA5OSwgMTE3LCA0NywgMTE2LCAxMDEsIAorICAgICAgICAxMjAsIDExNiwgNDcsIDY4LCAxMDEsIDk5LCAxMDUsIDEwOSwgOTcsIDEwOCwgNzAsIDExMSwgMTE0LCAxMDksIDk3LCAxMTYsIDgzLCAxMjEsIDEwOSwgOTgsIAorICAgICAgICAxMTEsIDEwOCwgMTE1LCA1OSwgMTIwLCAxMTQsIDAsIDI5LCA5OSwgMTExLCAxMDksIDQ2LCAxMDUsIDk4LCAxMDksIDQ2LCAxMDUsIDk5LCAxMTcsIDQ2LCAKKyAgICAgICAgMTE2LCAxMDEsIDEyMCwgMTE2LCA0NiwgNzgsIDExNywgMTA5LCA5OCwgMTAxLCAxMTQsIDcwLCAxMTEsIDExNCwgMTA5LCA5NywgMTE2LCAtMzMsIC0xMCwgLTc3LCAKKyAgICAgICAgLTY1LCAxOSwgMTI1LCA3LCAtMjQsIDMsIDAsIDExLCA5MCwgMCwgMTIsIDEwMywgMTE0LCAxMTEsIDExNywgMTEyLCAxMDUsIDExMCwgMTAzLCA4NSwgCisgICAgICAgIDExNSwgMTAxLCAxMDAsIDY2LCAwLCAxNywgMTA5LCA5NywgMTIwLCA3MCwgMTE0LCA5NywgOTksIDExNiwgMTA1LCAxMTEsIDExMCwgNjgsIDEwNSwgMTAzLCAKKyAgICAgICAgMTA1LCAxMTYsIDExNSwgNjYsIDAsIDE2LCAxMDksIDk3LCAxMjAsIDczLCAxMTAsIDExNiwgMTAxLCAxMDMsIDEwMSwgMTE0LCA2OCwgMTA1LCAxMDMsIDEwNSwgCisgICAgICAgIDExNiwgMTE1LCA3MywgMCwgMjEsIDEwOSwgOTcsIDEyMCwgMTA1LCAxMDksIDExNywgMTA5LCA3MCwgMTE0LCA5NywgOTksIDExNiwgMTA1LCAxMTEsIDExMCwgCisgICAgICAgIDY4LCAxMDUsIDEwMywgMTA1LCAxMTYsIDExNSwgNzMsIDAsIDIwLCAxMDksIDk3LCAxMjAsIDEwNSwgMTA5LCAxMTcsIDEwOSwgNzMsIDExMCwgMTE2LCAxMDEsIAorICAgICAgICAxMDMsIDEwMSwgMTE0LCA2OCwgMTA1LCAxMDMsIDEwNSwgMTE2LCAxMTUsIDY2LCAwLCAxNywgMTA5LCAxMDUsIDExMCwgNzAsIDExNCwgOTcsIDk5LCAxMTYsIAorICAgICAgICAxMDUsIDExMSwgMTEwLCA2OCwgMTA1LCAxMDMsIDEwNSwgMTE2LCAxMTUsIDY2LCAwLCAxNiwgMTA5LCAxMDUsIDExMCwgNzMsIDExMCwgMTE2LCAxMDEsIDEwMywgCisgICAgICAgIDEwMSwgMTE0LCA2OCwgMTA1LCAxMDMsIDEwNSwgMTE2LCAxMTUsIDczLCAwLCAyMSwgMTA5LCAxMDUsIDExMCwgMTA1LCAxMDksIDExNywgMTA5LCA3MCwgMTE0LCAKKyAgICAgICAgOTcsIDk5LCAxMTYsIDEwNSwgMTExLCAxMTAsIDY4LCAxMDUsIDEwMywgMTA1LCAxMTYsIDExNSwgNzMsIDAsIDIwLCAxMDksIDEwNSwgMTEwLCAxMDUsIDEwOSwgCisgICAgICAgIDExNywgMTA5LCA3MywgMTEwLCAxMTYsIDEwMSwgMTAzLCAxMDEsIDExNCwgNjgsIDEwNSwgMTAzLCAxMDUsIDExNiwgMTE1LCA5MCwgMCwgMTYsIDExMiwgOTcsIAorICAgICAgICAxMTQsIDExNSwgMTAxLCA3MywgMTEwLCAxMTYsIDEwMSwgMTAzLCAxMDEsIDExNCwgNzksIDExMCwgMTA4LCAxMjEsIDczLCAwLCAyMSwgMTE1LCAxMDEsIDExNCwgCisgICAgICAgIDEwNSwgOTcsIDEwOCwgODYsIDEwMSwgMTE0LCAxMTUsIDEwNSwgMTExLCAxMTAsIDc5LCAxMTAsIDgzLCAxMTYsIDExNCwgMTAxLCA5NywgMTA5LCAxMjAsIDExNCwgCisgICAgICAgIDAsIDE2LCAxMDYsIDk3LCAxMTgsIDk3LCA0NiwgMTE2LCAxMDEsIDEyMCwgMTE2LCA0NiwgNzAsIDExMSwgMTE0LCAxMDksIDk3LCAxMTYsIC01LCAtNDAsIAorICAgICAgICAtNjgsIDE4LCAtMjMsIDE1LCAyNCwgNjcsIDIsIDAsIDAsIDEyMCwgMTEyLCAxLCAwLCAxMjcsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgICAgICAxLCA1MywgMCwgMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMTIwLCAwLCAwLCAKKyAgICAgICAgMCwgMCwgMCwgMCwgMywgMCwgMCwgMCwgMCwgMCwgMTAwLCAwLCAzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgICAgIDYsIDAsIDAsIDAsIDIsIDAsIDExNiwgMCwgMSwgNDUsIDExNiwgMCwgMSwgMzcsIDExNiwgMCwgMSwgNDUsIDExNiwgMCwgCisgICAgICAgIDEsIDM3LCAxMTYsIDAsIDAsIDExMywgMCwgMTI2LCAwLCA4LCAxMTYsIDAsIDAsIDExNiwgMCwgMSwgMzcsIDExMiwgMTE1LCAxMTQsIAorICAgICAgICAwLCAzNywgOTksIDExMSwgMTA5LCA0NiwgMTA1LCA5OCwgMTA5LCA0NiwgMTA1LCA5OSwgMTE3LCA0NiwgMTE2LCAxMDEsIDEyMCwgMTE2LCA0NiwgNjgsIAorICAgICAgICAxMDEsIDk5LCAxMDUsIDEwOSwgOTcsIDEwOCwgNzAsIDExMSwgMTE0LCAxMDksIDk3LCAxMTYsIDgzLCAxMjEsIDEwOSwgOTgsIDExMSwgMTA4LCAxMTUsIDgwLCAKKyAgICAgICAgMjksIDIzLCAtMTAzLCA4LCAxMDQsIC0xMDksIC0xMDAsIDIsIDAsIDE4LCA2NywgMCwgMTYsIDEwMCwgMTAxLCA5OSwgMTA1LCAxMDksIDk3LCAxMDgsIAorICAgICAgICA4MywgMTAxLCAxMTIsIDk3LCAxMTQsIDk3LCAxMTYsIDExMSwgMTE0LCA2NywgMCwgNSwgMTAwLCAxMDUsIDEwMywgMTA1LCAxMTYsIDY3LCAwLCAxMSwgCisgICAgICAgIDEwMSwgMTIwLCAxMTIsIDExMSwgMTEwLCAxMDEsIDExMCwgMTE2LCAxMDUsIDk3LCAxMDgsIDY3LCAwLCAxNywgMTAzLCAxMTQsIDExMSwgMTE3LCAxMTIsIDEwNSwgCisgICAgICAgIDExMCwgMTAzLCA4MywgMTAxLCAxMTIsIDk3LCAxMTQsIDk3LCAxMTYsIDExMSwgMTE0LCA2NywgMCwgOSwgMTA5LCAxMDUsIDExMCwgMTE3LCAxMTUsIDgzLCAKKyAgICAgICAgMTA1LCAxMDMsIDExMCwgNjcsIDAsIDE3LCAxMDksIDExMSwgMTEwLCAxMDEsIDExNiwgOTcsIDExNCwgMTIxLCA4MywgMTAxLCAxMTIsIDk3LCAxMTQsIDk3LCAKKyAgICAgICAgMTE2LCAxMTEsIDExNCwgNjcsIDAsIDksIDExMiwgOTcsIDEwMCwgNjksIDExNSwgOTksIDk3LCAxMTIsIDEwMSwgNjcsIDAsIDE2LCAxMTIsIDk3LCAKKyAgICAgICAgMTE2LCAxMTYsIDEwMSwgMTE0LCAxMTAsIDgzLCAxMDEsIDExMiwgOTcsIDExNCwgOTcsIDExNiwgMTExLCAxMTQsIDY3LCAwLCA3LCAxMTIsIDEwMSwgMTE0LCAKKyAgICAgICAgNzcsIDEwNSwgMTA4LCAxMDgsIDY3LCAwLCA3LCAxMTIsIDEwMSwgMTE0LCA5OSwgMTAxLCAxMTAsIDExNiwgNjcsIDAsIDgsIDExMiwgMTA4LCAxMTcsIAorICAgICAgICAxMTUsIDgzLCAxMDUsIDEwMywgMTEwLCA3MywgMCwgMjEsIDExNSwgMTAxLCAxMTQsIDEwNSwgOTcsIDEwOCwgODYsIDEwMSwgMTE0LCAxMTUsIDEwNSwgMTExLCAKKyAgICAgICAgMTEwLCA3OSwgMTEwLCA4MywgMTE2LCAxMTQsIDEwMSwgOTcsIDEwOSwgNjcsIDAsIDksIDEyMiwgMTAxLCAxMTQsIDExMSwgNjgsIDEwNSwgMTAzLCAxMDUsIAorICAgICAgICAxMTYsIDc2LCAwLCAzLCA3OCwgOTcsIDc4LCAxMTMsIDAsIDEyNiwgMCwgMSwgNzYsIDAsIDE0LCA5OSwgMTE3LCAxMTQsIDExNCwgMTAxLCAKKyAgICAgICAgMTEwLCA5OSwgMTIxLCA4MywgMTIxLCAxMDksIDk4LCAxMTEsIDEwOCwgMTEzLCAwLCAxMjYsIDAsIDEsIDc2LCAwLCAxNywgMTAxLCAxMjAsIDExMiwgCisgICAgICAgIDExMSwgMTEwLCAxMDEsIDExMCwgMTE2LCA4MywgMTAxLCAxMTIsIDk3LCAxMTQsIDk3LCAxMTYsIDExMSwgMTE0LCAxMTMsIDAsIDEyNiwgMCwgMSwgNzYsIAorICAgICAgICAwLCA4LCAxMDUsIDExMCwgMTAyLCAxMDUsIDExMCwgMTA1LCAxMTYsIDEyMSwgMTEzLCAwLCAxMjYsIDAsIDEsIDc2LCAwLCAxOCwgMTA1LCAxMTAsIAorICAgICAgICAxMTYsIDEwOCwgNjcsIDExNywgMTE0LCAxMTQsIDEwMSwgMTEwLCA5OSwgMTIxLCA4MywgMTIxLCAxMDksIDk4LCAxMTEsIDEwOCwgMTEzLCAwLCAxMjYsIDAsIAorICAgICAgICAxLCAxMjAsIDExMiwgMCwgNDYsIDAsIDM1LCAwLCAwLCAwLCA0NCwgMCwgNDUsIDAsIDQ2LCAwLCA0MiwgMCwgNTksIDMyLCAKKyAgICAgICAgNDgsIDAsIDM3LCAwLCA0MywgMCwgMCwgMCwgMiwgMCwgNDgsIDExNiwgMCwgMywgLTE3LCAtNjUsIC02NywgMTE2LCAwLCAxLCAKKyAgICAgICAgMzYsIDExNiwgMCwgMSwgNjksIDExNiwgMCwgMywgLTMwLCAtMTIwLCAtOTgsIDExNiwgMCwgMywgODUsIDgzLCA2OCwgCisgICAgfTsKKworICAgIC8vTnVtYmVyRm9ybWF0LmdldFNjaWVudGlmaWNJbnN0YW5jZShMb2NhbGUuVVMpCisgICAgc3RhdGljIGJ5dGVbXSBzY2llbnRpZmljSW5zdGFuY2UgPSBuZXcgYnl0ZVtdeyAKKyAgICAgICAgLTg0LCAtMTksIDAsIDUsIDExNSwgMTE0LCAwLCAzMCwgOTksIDExMSwgMTA5LCA0NiwgMTA1LCA5OCwgMTA5LCA0NiwgMTA1LCA5OSwgMTE3LCA0NiwgCisgICAgICAgIDExNiwgMTAxLCAxMjAsIDExNiwgNDYsIDY4LCAxMDEsIDk5LCAxMDUsIDEwOSwgOTcsIDEwOCwgNzAsIDExMSwgMTE0LCAxMDksIDk3LCAxMTYsIDExLCAtMSwgCisgICAgICAgIDMsIDk4LCAtNDAsIDExNCwgNDgsIDU4LCAyLCAwLCAyMiwgOTAsIDAsIDI3LCAxMDAsIDEwMSwgOTksIDEwNSwgMTA5LCA5NywgMTA4LCA4MywgCisgICAgICAgIDEwMSwgMTEyLCA5NywgMTE0LCA5NywgMTE2LCAxMTEsIDExNCwgNjUsIDEwOCwgMTE5LCA5NywgMTIxLCAxMTUsIDgzLCAxMDQsIDExMSwgMTE5LCAxMTAsIDkwLCAKKyAgICAgICAgMCwgMjMsIDEwMSwgMTIwLCAxMTIsIDExMSwgMTEwLCAxMDEsIDExMCwgMTE2LCA4MywgMTA1LCAxMDMsIDExMCwgNjUsIDEwOCwgMTE5LCA5NywgMTIxLCAxMTUsIAorICAgICAgICA4MywgMTA0LCAxMTEsIDExOSwgMTEwLCA3MywgMCwgMTEsIDEwMiwgMTExLCAxMTQsIDEwOSwgOTcsIDExNiwgODcsIDEwNSwgMTAwLCAxMTYsIDEwNCwgNjYsIAorICAgICAgICAwLCAxMiwgMTAzLCAxMTQsIDExMSwgMTE3LCAxMTIsIDEwNSwgMTEwLCAxMDMsIDgzLCAxMDUsIDEyMiwgMTAxLCA2NiwgMCwgMTMsIDEwMywgMTE0LCAxMTEsIAorICAgICAgICAxMTcsIDExMiwgMTA1LCAxMTAsIDEwMywgODMsIDEwNSwgMTIyLCAxMDEsIDUwLCA2NiwgMCwgMTcsIDEwOSwgMTA1LCAxMTAsIDY5LCAxMjAsIDExMiwgMTExLCAKKyAgICAgICAgMTEwLCAxMDEsIDExMCwgMTE2LCA2OCwgMTA1LCAxMDMsIDEwNSwgMTE2LCAxMTUsIDczLCAwLCAxMCwgMTA5LCAxMTcsIDEwOCwgMTE2LCAxMDUsIDExMiwgMTA4LCAKKyAgICAgICAgMTA1LCAxMDEsIDExNCwgNjcsIDAsIDMsIDExMiwgOTcsIDEwMCwgNzMsIDAsIDExLCAxMTIsIDk3LCAxMDAsIDgwLCAxMTEsIDExNSwgMTA1LCAxMTYsIAorICAgICAgICAxMDUsIDExMSwgMTEwLCA3MywgMCwgMTIsIDExNCwgMTExLCAxMTcsIDExMCwgMTAwLCAxMDUsIDExMCwgMTAzLCA3NywgMTExLCAxMDAsIDEwMSwgNzMsIDAsIAorICAgICAgICAyMSwgMTE1LCAxMDEsIDExNCwgMTA1LCA5NywgMTA4LCA4NiwgMTAxLCAxMTQsIDExNSwgMTA1LCAxMTEsIDExMCwgNzksIDExMCwgODMsIDExNiwgMTE0LCAxMDEsIAorICAgICAgICA5NywgMTA5LCA5MCwgMCwgMjIsIDExNywgMTE1LCAxMDEsIDY5LCAxMjAsIDExMiwgMTExLCAxMTAsIDEwMSwgMTEwLCAxMTYsIDEwNSwgOTcsIDEwOCwgNzgsIAorICAgICAgICAxMTEsIDExNiwgOTcsIDExNiwgMTA1LCAxMTEsIDExMCwgNzYsIDAsIDE2LCAxMTAsIDEwMSwgMTAzLCA4MCwgMTE0LCAxMDEsIDEwMiwgMTA1LCAxMjAsIDgwLCAKKyAgICAgICAgOTcsIDExNiwgMTE2LCAxMDEsIDExNCwgMTEwLCAxMTYsIDAsIDE4LCA3NiwgMTA2LCA5NywgMTE4LCA5NywgNDcsIDEwOCwgOTcsIDExMCwgMTAzLCA0NywgCisgICAgICAgIDgzLCAxMTYsIDExNCwgMTA1LCAxMTAsIDEwMywgNTksIDc2LCAwLCAxNiwgMTEwLCAxMDEsIDEwMywgODMsIDExNywgMTAyLCAxMDIsIDEwNSwgMTIwLCA4MCwgCisgICAgICAgIDk3LCAxMTYsIDExNiwgMTAxLCAxMTQsIDExMCwgMTEzLCAwLCAxMjYsIDAsIDEsIDc2LCAwLCAxNCwgMTEwLCAxMDEsIDEwMywgOTcsIDExNiwgMTA1LCAKKyAgICAgICAgMTE4LCAxMDEsIDgwLCAxMTQsIDEwMSwgMTAyLCAxMDUsIDEyMCwgMTEzLCAwLCAxMjYsIDAsIDEsIDc2LCAwLCAxNCwgMTEwLCAxMDEsIDEwMywgOTcsIAorICAgICAgICAxMTYsIDEwNSwgMTE4LCAxMDEsIDgzLCAxMTcsIDEwMiwgMTAyLCAxMDUsIDEyMCwgMTEzLCAwLCAxMjYsIDAsIDEsIDc2LCAwLCAxNiwgMTEyLCAxMTEsIAorICAgICAgICAxMTUsIDgwLCAxMTQsIDEwMSwgMTAyLCAxMDUsIDEyMCwgODAsIDk3LCAxMTYsIDExNiwgMTAxLCAxMTQsIDExMCwgMTEzLCAwLCAxMjYsIDAsIDEsIDc2LCAKKyAgICAgICAgMCwgMTYsIDExMiwgMTExLCAxMTUsIDgzLCAxMTcsIDEwMiwgMTAyLCAxMDUsIDEyMCwgODAsIDk3LCAxMTYsIDExNiwgMTAxLCAxMTQsIDExMCwgMTEzLCAwLCAKKyAgICAgICAgMTI2LCAwLCAxLCA3NiwgMCwgMTQsIDExMiwgMTExLCAxMTUsIDEwNSwgMTE2LCAxMDUsIDExOCwgMTAxLCA4MCwgMTE0LCAxMDEsIDEwMiwgMTA1LCAxMjAsIAorICAgICAgICAxMTMsIDAsIDEyNiwgMCwgMSwgNzYsIDAsIDE0LCAxMTIsIDExMSwgMTE1LCAxMDUsIDExNiwgMTA1LCAxMTgsIDEwMSwgODMsIDExNywgMTAyLCAxMDIsIAorICAgICAgICAxMDUsIDEyMCwgMTEzLCAwLCAxMjYsIDAsIDEsIDc2LCAwLCAxNywgMTE0LCAxMTEsIDExNywgMTEwLCAxMDAsIDEwNSwgMTEwLCAxMDMsIDczLCAxMTAsIAorICAgICAgICA5OSwgMTE0LCAxMDEsIDEwOSwgMTAxLCAxMTAsIDExNiwgMTE2LCAwLCAyMiwgNzYsIDEwNiwgOTcsIDExOCwgOTcsIDQ3LCAxMDksIDk3LCAxMTYsIDEwNCwgCisgICAgICAgIDQ3LCA2NiwgMTA1LCAxMDMsIDY4LCAxMDEsIDk5LCAxMDUsIDEwOSwgOTcsIDEwOCwgNTksIDc2LCAwLCA3LCAxMTUsIDEyMSwgMTA5LCA5OCwgMTExLCAKKyAgICAgICAgMTA4LCAxMTUsIDExNiwgMCwgMzksIDc2LCA5OSwgMTExLCAxMDksIDQ3LCAxMDUsIDk4LCAxMDksIDQ3LCAxMDUsIDk5LCAxMTcsIDQ3LCAxMTYsIDEwMSwgCisgICAgICAgIDEyMCwgMTE2LCA0NywgNjgsIDEwMSwgOTksIDEwNSwgMTA5LCA5NywgMTA4LCA3MCwgMTExLCAxMTQsIDEwOSwgOTcsIDExNiwgODMsIDEyMSwgMTA5LCA5OCwgCisgICAgICAgIDExMSwgMTA4LCAxMTUsIDU5LCAxMjAsIDExNCwgMCwgMjksIDk5LCAxMTEsIDEwOSwgNDYsIDEwNSwgOTgsIDEwOSwgNDYsIDEwNSwgOTksIDExNywgNDYsIAorICAgICAgICAxMTYsIDEwMSwgMTIwLCAxMTYsIDQ2LCA3OCwgMTE3LCAxMDksIDk4LCAxMDEsIDExNCwgNzAsIDExMSwgMTE0LCAxMDksIDk3LCAxMTYsIC0zMywgLTEwLCAtNzcsIAorICAgICAgICAtNjUsIDE5LCAxMjUsIDcsIC0yNCwgMywgMCwgMTEsIDkwLCAwLCAxMiwgMTAzLCAxMTQsIDExMSwgMTE3LCAxMTIsIDEwNSwgMTEwLCAxMDMsIDg1LCAKKyAgICAgICAgMTE1LCAxMDEsIDEwMCwgNjYsIDAsIDE3LCAxMDksIDk3LCAxMjAsIDcwLCAxMTQsIDk3LCA5OSwgMTE2LCAxMDUsIDExMSwgMTEwLCA2OCwgMTA1LCAxMDMsIAorICAgICAgICAxMDUsIDExNiwgMTE1LCA2NiwgMCwgMTYsIDEwOSwgOTcsIDEyMCwgNzMsIDExMCwgMTE2LCAxMDEsIDEwMywgMTAxLCAxMTQsIDY4LCAxMDUsIDEwMywgMTA1LCAKKyAgICAgICAgMTE2LCAxMTUsIDczLCAwLCAyMSwgMTA5LCA5NywgMTIwLCAxMDUsIDEwOSwgMTE3LCAxMDksIDcwLCAxMTQsIDk3LCA5OSwgMTE2LCAxMDUsIDExMSwgMTEwLCAKKyAgICAgICAgNjgsIDEwNSwgMTAzLCAxMDUsIDExNiwgMTE1LCA3MywgMCwgMjAsIDEwOSwgOTcsIDEyMCwgMTA1LCAxMDksIDExNywgMTA5LCA3MywgMTEwLCAxMTYsIDEwMSwgCisgICAgICAgIDEwMywgMTAxLCAxMTQsIDY4LCAxMDUsIDEwMywgMTA1LCAxMTYsIDExNSwgNjYsIDAsIDE3LCAxMDksIDEwNSwgMTEwLCA3MCwgMTE0LCA5NywgOTksIDExNiwgCisgICAgICAgIDEwNSwgMTExLCAxMTAsIDY4LCAxMDUsIDEwMywgMTA1LCAxMTYsIDExNSwgNjYsIDAsIDE2LCAxMDksIDEwNSwgMTEwLCA3MywgMTEwLCAxMTYsIDEwMSwgMTAzLCAKKyAgICAgICAgMTAxLCAxMTQsIDY4LCAxMDUsIDEwMywgMTA1LCAxMTYsIDExNSwgNzMsIDAsIDIxLCAxMDksIDEwNSwgMTEwLCAxMDUsIDEwOSwgMTE3LCAxMDksIDcwLCAxMTQsIAorICAgICAgICA5NywgOTksIDExNiwgMTA1LCAxMTEsIDExMCwgNjgsIDEwNSwgMTAzLCAxMDUsIDExNiwgMTE1LCA3MywgMCwgMjAsIDEwOSwgMTA1LCAxMTAsIDEwNSwgMTA5LCAKKyAgICAgICAgMTE3LCAxMDksIDczLCAxMTAsIDExNiwgMTAxLCAxMDMsIDEwMSwgMTE0LCA2OCwgMTA1LCAxMDMsIDEwNSwgMTE2LCAxMTUsIDkwLCAwLCAxNiwgMTEyLCA5NywgCisgICAgICAgIDExNCwgMTE1LCAxMDEsIDczLCAxMTAsIDExNiwgMTAxLCAxMDMsIDEwMSwgMTE0LCA3OSwgMTEwLCAxMDgsIDEyMSwgNzMsIDAsIDIxLCAxMTUsIDEwMSwgMTE0LCAKKyAgICAgICAgMTA1LCA5NywgMTA4LCA4NiwgMTAxLCAxMTQsIDExNSwgMTA1LCAxMTEsIDExMCwgNzksIDExMCwgODMsIDExNiwgMTE0LCAxMDEsIDk3LCAxMDksIDEyMCwgMTE0LCAKKyAgICAgICAgMCwgMTYsIDEwNiwgOTcsIDExOCwgOTcsIDQ2LCAxMTYsIDEwMSwgMTIwLCAxMTYsIDQ2LCA3MCwgMTExLCAxMTQsIDEwOSwgOTcsIDExNiwgLTUsIC00MCwgCisgICAgICAgIC02OCwgMTgsIC0yMywgMTUsIDI0LCA2NywgMiwgMCwgMCwgMTIwLCAxMTIsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgICAgICAwLCAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAxMjAsIDAsIDAsIAorICAgICAgICAwLCAwLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxLCAwLCAzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgICAgIDYsIDAsIDAsIDAsIDIsIDEsIDExNiwgMCwgMSwgNDUsIDExNiwgMCwgMCwgMTE2LCAwLCAxLCA0NSwgMTE2LCAwLCAwLCAKKyAgICAgICAgMTE2LCAwLCAwLCAxMTMsIDAsIDEyNiwgMCwgOCwgMTE2LCAwLCAwLCAxMTYsIDAsIDAsIDExMiwgMTE1LCAxMTQsIDAsIDM3LCA5OSwgCisgICAgICAgIDExMSwgMTA5LCA0NiwgMTA1LCA5OCwgMTA5LCA0NiwgMTA1LCA5OSwgMTE3LCA0NiwgMTE2LCAxMDEsIDEyMCwgMTE2LCA0NiwgNjgsIDEwMSwgOTksIDEwNSwgCisgICAgICAgIDEwOSwgOTcsIDEwOCwgNzAsIDExMSwgMTE0LCAxMDksIDk3LCAxMTYsIDgzLCAxMjEsIDEwOSwgOTgsIDExMSwgMTA4LCAxMTUsIDgwLCAyOSwgMjMsIC0xMDMsIAorICAgICAgICA4LCAxMDQsIC0xMDksIC0xMDAsIDIsIDAsIDE4LCA2NywgMCwgMTYsIDEwMCwgMTAxLCA5OSwgMTA1LCAxMDksIDk3LCAxMDgsIDgzLCAxMDEsIDExMiwgCisgICAgICAgIDk3LCAxMTQsIDk3LCAxMTYsIDExMSwgMTE0LCA2NywgMCwgNSwgMTAwLCAxMDUsIDEwMywgMTA1LCAxMTYsIDY3LCAwLCAxMSwgMTAxLCAxMjAsIDExMiwgCisgICAgICAgIDExMSwgMTEwLCAxMDEsIDExMCwgMTE2LCAxMDUsIDk3LCAxMDgsIDY3LCAwLCAxNywgMTAzLCAxMTQsIDExMSwgMTE3LCAxMTIsIDEwNSwgMTEwLCAxMDMsIDgzLCAKKyAgICAgICAgMTAxLCAxMTIsIDk3LCAxMTQsIDk3LCAxMTYsIDExMSwgMTE0LCA2NywgMCwgOSwgMTA5LCAxMDUsIDExMCwgMTE3LCAxMTUsIDgzLCAxMDUsIDEwMywgMTEwLCAKKyAgICAgICAgNjcsIDAsIDE3LCAxMDksIDExMSwgMTEwLCAxMDEsIDExNiwgOTcsIDExNCwgMTIxLCA4MywgMTAxLCAxMTIsIDk3LCAxMTQsIDk3LCAxMTYsIDExMSwgMTE0LCAKKyAgICAgICAgNjcsIDAsIDksIDExMiwgOTcsIDEwMCwgNjksIDExNSwgOTksIDk3LCAxMTIsIDEwMSwgNjcsIDAsIDE2LCAxMTIsIDk3LCAxMTYsIDExNiwgMTAxLCAKKyAgICAgICAgMTE0LCAxMTAsIDgzLCAxMDEsIDExMiwgOTcsIDExNCwgOTcsIDExNiwgMTExLCAxMTQsIDY3LCAwLCA3LCAxMTIsIDEwMSwgMTE0LCA3NywgMTA1LCAxMDgsIAorICAgICAgICAxMDgsIDY3LCAwLCA3LCAxMTIsIDEwMSwgMTE0LCA5OSwgMTAxLCAxMTAsIDExNiwgNjcsIDAsIDgsIDExMiwgMTA4LCAxMTcsIDExNSwgODMsIDEwNSwgCisgICAgICAgIDEwMywgMTEwLCA3MywgMCwgMjEsIDExNSwgMTAxLCAxMTQsIDEwNSwgOTcsIDEwOCwgODYsIDEwMSwgMTE0LCAxMTUsIDEwNSwgMTExLCAxMTAsIDc5LCAxMTAsIAorICAgICAgICA4MywgMTE2LCAxMTQsIDEwMSwgOTcsIDEwOSwgNjcsIDAsIDksIDEyMiwgMTAxLCAxMTQsIDExMSwgNjgsIDEwNSwgMTAzLCAxMDUsIDExNiwgNzYsIDAsIAorICAgICAgICAzLCA3OCwgOTcsIDc4LCAxMTMsIDAsIDEyNiwgMCwgMSwgNzYsIDAsIDE0LCA5OSwgMTE3LCAxMTQsIDExNCwgMTAxLCAxMTAsIDk5LCAxMjEsIAorICAgICAgICA4MywgMTIxLCAxMDksIDk4LCAxMTEsIDEwOCwgMTEzLCAwLCAxMjYsIDAsIDEsIDc2LCAwLCAxNywgMTAxLCAxMjAsIDExMiwgMTExLCAxMTAsIDEwMSwgCisgICAgICAgIDExMCwgMTE2LCA4MywgMTAxLCAxMTIsIDk3LCAxMTQsIDk3LCAxMTYsIDExMSwgMTE0LCAxMTMsIDAsIDEyNiwgMCwgMSwgNzYsIDAsIDgsIDEwNSwgCisgICAgICAgIDExMCwgMTAyLCAxMDUsIDExMCwgMTA1LCAxMTYsIDEyMSwgMTEzLCAwLCAxMjYsIDAsIDEsIDc2LCAwLCAxOCwgMTA1LCAxMTAsIDExNiwgMTA4LCA2NywgCisgICAgICAgIDExNywgMTE0LCAxMTQsIDEwMSwgMTEwLCA5OSwgMTIxLCA4MywgMTIxLCAxMDksIDk4LCAxMTEsIDEwOCwgMTEzLCAwLCAxMjYsIDAsIDEsIDEyMCwgMTEyLCAKKyAgICAgICAgMCwgNDYsIDAsIDM1LCAwLCAwLCAwLCA0NCwgMCwgNDUsIDAsIDQ2LCAwLCA0MiwgMCwgNTksIDMyLCA0OCwgMCwgMzcsIAorICAgICAgICAwLCA0MywgMCwgMCwgMCwgMiwgMCwgNDgsIDExNiwgMCwgMywgLTE3LCAtNjUsIC02NywgMTE2LCAwLCAxLCAzNiwgMTE2LCAwLCAKKyAgICAgICAgMSwgNjksIDExNiwgMCwgMywgLTMwLCAtMTIwLCAtOTgsIDExNiwgMCwgMywgODUsIDgzLCA2OCwgCisgICAgfTsKKworICAgIGZpbmFsIHN0YXRpYyBieXRlW11bXSBjb250ZW50ID0ge2dlbmVyYWxJbnN0YW5jZSwgY3VycmVuY3lJbnN0YW5jZSwgcGVyY2VudEluc3RhbmNlLCBzY2llbnRpZmljSW5zdGFuY2V9OworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2Zvcm1hdC9OdW1iZXJGb3JtYXRUZXN0LmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvZm9ybWF0L051bWJlckZvcm1hdFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4yYjkyOTMyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2Zvcm1hdC9OdW1iZXJGb3JtYXRUZXN0LmphdmEKQEAgLTAsMCArMSw4MzEgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAgICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2Zvcm1hdC9OdW1iZXJGb3JtYXRUZXN0LmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMTEvMjAgMTk6NDg6MDkgJCAKKyAqICRSZXZpc2lvbjogMS45ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCisvKiogCisgKiBQb3J0IEZyb206ICAgSUNVNEMgdjEuOC4xIDogZm9ybWF0IDogTnVtYmVyRm9ybWF0VGVzdAorICogU291cmNlIEZpbGU6ICRJQ1U0Q1Jvb3Qvc291cmNlL3Rlc3QvaW50bHRlc3QvbnVtZm10c3QuY3BwCisgKiovCisKK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3QuZm9ybWF0OworCitpbXBvcnQgY29tLmlibS5pY3UubGFuZy4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuKjsKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLio7CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKK2ltcG9ydCBqYXZhLnRleHQuUGFyc2VQb3NpdGlvbjsKK2ltcG9ydCBqYXZhLnRleHQuUGFyc2VFeGNlcHRpb247CitpbXBvcnQgamF2YS50ZXh0LkZpZWxkUG9zaXRpb247CisKK3B1YmxpYyBjbGFzcyBOdW1iZXJGb3JtYXRUZXN0IGV4dGVuZHMgY29tLmlibS5pY3UuZGV2LnRlc3QuVGVzdEZtd2sgeworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgRVVSTyA9ICdcdTIwYWMnOworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIG5ldyBOdW1iZXJGb3JtYXRUZXN0KCkucnVuKGFyZ3MpOworICAgIH0KKyAgICAKKyAgICAvLyBUZXN0IHZhcmlvdXMgcGF0dGVybnMKKyAgICBwdWJsaWMgdm9pZCBUZXN0UGF0dGVybnMoKSB7CisgICAgCisgICAgICAgIERlY2ltYWxGb3JtYXRTeW1ib2xzIHN5bSA9IG5ldyBEZWNpbWFsRm9ybWF0U3ltYm9scyhMb2NhbGUuVVMpOworICAgICAgICBmaW5hbCBTdHJpbmcgcGF0W10gICAgPSB7ICIjLiMiLCAiIy4iLCAiLiMiLCAiIyIgfTsKKyAgICAgICAgaW50IHBhdF9sZW5ndGggPSBwYXQubGVuZ3RoOworICAgICAgICBmaW5hbCBTdHJpbmcgbmV3cGF0W10gPSB7ICIjMC4jIiwgIiMwLiIsICIjLjAiLCAiIyIgfTsKKyAgICAgICAgZmluYWwgU3RyaW5nIG51bVtdICAgID0geyAiMCIsICAgIjAuIiwgIi4wIiwgIjAiIH07CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxwYXRfbGVuZ3RoOyArK2kpCisgICAgICAgIHsKKyAgICAgICAgICAgIERlY2ltYWxGb3JtYXQgZm10ID0gbmV3IERlY2ltYWxGb3JtYXQocGF0W2ldLCBzeW0pOworICAgICAgICAgICAgU3RyaW5nIG5ld3AgPSBmbXQudG9QYXR0ZXJuKCk7CisgICAgICAgICAgICBpZiAoIW5ld3AuZXF1YWxzKG5ld3BhdFtpXSkpCisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6IFBhdHRlcm4gIiArIHBhdFtpXSArICIgc2hvdWxkIHRyYW5zbXV0ZSB0byAiICsgbmV3cGF0W2ldICsKKyAgICAgICAgICAgICAgICAgICAgICAiOyAiICsgbmV3cCArICIgc2VlbiBpbnN0ZWFkIik7CisgICAgCisgICAgICAgICAgICBTdHJpbmcgcyA9ICgoTnVtYmVyRm9ybWF0KWZtdCkuZm9ybWF0KDApOworICAgICAgICAgICAgaWYgKCFzLmVxdWFscyhudW1baV0pKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBQYXR0ZXJuICIgKyBwYXRbaV0gKyAiIHNob3VsZCBmb3JtYXQgemVybyBhcyAiICsgbnVtW2ldICsKKyAgICAgICAgICAgICAgICAgICAgICAiOyAiICsgcyArICIgc2VlbiBpbnN0ZWFkIik7CisgICAgICAgICAgICAgICAgbG9nbG4oIk1pbiBpbnRlZ2VyIGRpZ2l0cyA9ICIgKyBmbXQuZ2V0TWluaW11bUludGVnZXJEaWdpdHMoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLy8gVGVzdCBleHBvbmVudGlhbCBwYXR0ZXJuCisgICAgcHVibGljIHZvaWQgVGVzdEV4cG9uZW50aWFsKCkgeworICAgIAorICAgICAgICBEZWNpbWFsRm9ybWF0U3ltYm9scyBzeW0gPSBuZXcgRGVjaW1hbEZvcm1hdFN5bWJvbHMoTG9jYWxlLlVTKTsKKyAgICAgICAgZmluYWwgU3RyaW5nIHBhdFtdID0geyAiMC4jIyMjRTAiLCAiMDAuMDAwRTAwIiwgIiMjMC4jIyMjIyNFMDAwIiwgIjAuIyMjRTA7WzAuIyMjRTBdIiB9OworICAgICAgICBpbnQgcGF0X2xlbmd0aCA9IHBhdC5sZW5ndGg7CisgICAgCisgICAgICAgIGRvdWJsZSB2YWxbXSA9IHsgMC4wMTIzNCwgMTIzNDU2Nzg5LCAxLjIzZTMwMCwgLTMuMTQxNTkyNjUzZS0yNzEgfTsKKyAgICAgICAgaW50IHZhbF9sZW5ndGggPSB2YWwubGVuZ3RoOworICAgICAgICBmaW5hbCBTdHJpbmcgdmFsRm9ybWF0W10gPSB7CisgICAgICAgICAgICAvLyAwLiMjIyNFMAorICAgICAgICAgICAgIjEuMjM0RS0yIiwgIjEuMjM0NkU4IiwgIjEuMjNFMzAwIiwgIi0zLjE0MTZFLTI3MSIsCisgICAgICAgICAgICAvLyAwMC4wMDBFMDAKKyAgICAgICAgICAgICIxMi4zNDBFLTAzIiwgIjEyLjM0NkUwNyIsICIxMi4zMDBFMjk5IiwgIi0zMS40MTZFLTI3MiIsCisgICAgICAgICAgICAvLyAjIzAuIyMjIyMjRTAwMAorICAgICAgICAgICAgIjEyLjM0RS0wMDMiLCAiMTIzLjQ1NjhFMDA2IiwgIjEuMjNFMzAwIiwgIi0zMTQuMTU5M0UtMjczIiwKKyAgICAgICAgICAgIC8vIDAuIyMjRTA7WzAuIyMjRTBdCisgICAgICAgICAgICAiMS4yMzRFLTIiLCAiMS4yMzVFOCIsICIxLjIzRTMwMCIsICJbMy4xNDJFLTI3MV0iIH07CisgICAgICAgIC8qZG91YmxlIHZhbFBhcnNlW10gPQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIDAuMDEyMzQsIDEyMzQ2MDAwMCwgMS4yM0UzMDAsIC0zLjE0MTZFLTI3MSwKKyAgICAgICAgICAgICAgICAwLjAxMjM0LCAxMjM0NjAwMDAsIDEuMjNFMzAwLCAtMy4xNDE2RS0yNzEsCisgICAgICAgICAgICAgICAgMC4wMTIzNCwgMTIzNDU2ODAwLCAxLjIzRTMwMCwgLTMuMTQxNTkzRS0yNzEsCisgICAgICAgICAgICAgICAgMC4wMTIzNCwgMTIzNTAwMDAwLCAxLjIzRTMwMCwgLTMuMTQyRS0yNzEsCisgICAgICAgICAgICB9OyovIC8vVGhlIHZhcmlhYmxlIGlzIG5ldmVyIHVzZWQKKyAgICAKKyAgICAgICAgaW50IGx2YWxbXSA9IHsgMCwgLTEsIDEsIDEyMzQ1Njc4OSB9OworICAgICAgICBpbnQgbHZhbF9sZW5ndGggPSBsdmFsLmxlbmd0aDsKKyAgICAgICAgZmluYWwgU3RyaW5nIGx2YWxGb3JtYXRbXSA9IHsKKyAgICAgICAgICAgIC8vIDAuIyMjI0UwCisgICAgICAgICAgICAiMEUwIiwgIi0xRTAiLCAiMUUwIiwgIjEuMjM0NkU4IiwKKyAgICAgICAgICAgIC8vIDAwLjAwMEUwMAorICAgICAgICAgICAgIjAwLjAwMEUwMCIsICItMTAuMDAwRS0wMSIsICIxMC4wMDBFLTAxIiwgIjEyLjM0NkUwNyIsCisgICAgICAgICAgICAvLyAjIzAuIyMjIyMjRTAwMAorICAgICAgICAgICAgIjBFMDAwIiwgIi0xRTAwMCIsICIxRTAwMCIsICIxMjMuNDU2OEUwMDYiLAorICAgICAgICAgICAgLy8gMC4jIyNFMDtbMC4jIyNFMF0KKyAgICAgICAgICAgICIwRTAiLCAiWzFFMF0iLCAiMUUwIiwgIjEuMjM1RTgiIH07CisgICAgICAgIGludCBsdmFsUGFyc2VbXSA9IAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIDAsIC0xLCAxLCAxMjM0NjAwMDAsIAorICAgICAgICAgICAgICAgIDAsIC0xLCAxLCAxMjM0NjAwMDAsIAorICAgICAgICAgICAgICAgIDAsIC0xLCAxLCAxMjM0NTY4MDAsIAorICAgICAgICAgICAgICAgIDAsIC0xLCAxLCAxMjM1MDAwMDAsIAorICAgICAgICAgICAgfTsKKyAgICAgICAgaW50IGl2YWwgPSAwLCBpbHZhbCA9IDA7CisgICAgICAgIGZvciAoaW50IHAgPSAwOyBwIDwgcGF0X2xlbmd0aDsgKytwKSB7CisgICAgICAgICAgICBEZWNpbWFsRm9ybWF0IGZtdCA9IG5ldyBEZWNpbWFsRm9ybWF0KHBhdFtwXSwgc3ltKTsKKyAgICAgICAgICAgIGxvZ2xuKCJQYXR0ZXJuIFwiIiArIHBhdFtwXSArICJcIiAtdG9QYXR0ZXJuLT4gXCIiICsgZm10LnRvUGF0dGVybigpICsgIlwiIik7CisgICAgICAgICAgICBpbnQgdjsKKyAgICAgICAgICAgIGZvciAodiA9IDA7IHYgPCB2YWxfbGVuZ3RoOyArK3YpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgczsKKyAgICAgICAgICAgICAgICBzID0gKChOdW1iZXJGb3JtYXQpIGZtdCkuZm9ybWF0KHZhbFt2XSk7CisgICAgICAgICAgICAgICAgbG9nbG4oIiAiICsgdmFsW3ZdICsgIiAtZm9ybWF0LT4gIiArIHMpOworICAgICAgICAgICAgICAgIGlmICghcy5lcXVhbHModmFsRm9ybWF0W3YgKyBpdmFsXSkpCisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBFeHBlY3RlZCAiICsgdmFsRm9ybWF0W3YgKyBpdmFsXSk7CisgICAgCisgICAgICAgICAgICAgICAgUGFyc2VQb3NpdGlvbiBwb3MgPSBuZXcgUGFyc2VQb3NpdGlvbigwKTsKKyAgICAgICAgICAgICAgICBkb3VibGUgYSA9IGZtdC5wYXJzZShzLCBwb3MpLmRvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICAgICAgaWYgKHBvcy5nZXRJbmRleCgpID09IHMubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbG9nbG4oIiAgLXBhcnNlLT4gIiArIERvdWJsZS50b1N0cmluZyhhKSk7CisgICAgICAgICAgICAgICAgICAgIC8vIFVzZSBlcHNpbG9uIGNvbXBhcmlzb24gYXMgbmVjZXNzYXJ5CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBQYXJ0aWFsIHBhcnNlICgiICsgcG9zLmdldEluZGV4KCkgKyAiIGNoYXJzKSAtPiAiICsgYSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKHYgPSAwOyB2IDwgbHZhbF9sZW5ndGg7ICsrdikgeworICAgICAgICAgICAgICAgIFN0cmluZyBzOworICAgICAgICAgICAgICAgIHMgPSAoKE51bWJlckZvcm1hdCkgZm10KS5mb3JtYXQobHZhbFt2XSk7CisgICAgICAgICAgICAgICAgbG9nbG4oIiAiICsgbHZhbFt2XSArICJMIC1mb3JtYXQtPiAiICsgcyk7CisgICAgICAgICAgICAgICAgaWYgKCFzLmVxdWFscyhsdmFsRm9ybWF0W3YgKyBpbHZhbF0pKQorICAgICAgICAgICAgICAgICAgICBlcnJsbigiRVJST1I6IEV4cGVjdGVkICIgKyBsdmFsRm9ybWF0W3YgKyBpbHZhbF0gKyAiIEdvdDogIiArIHMpOworICAgIAorICAgICAgICAgICAgICAgIFBhcnNlUG9zaXRpb24gcG9zID0gbmV3IFBhcnNlUG9zaXRpb24oMCk7CisgICAgICAgICAgICAgICAgbG9uZyBhID0gMDsKKyAgICAgICAgICAgICAgICBOdW1iZXIgQSA9IGZtdC5wYXJzZShzLCBwb3MpOworICAgICAgICAgICAgICAgIGlmIChBICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgYSA9IEEubG9uZ1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChwb3MuZ2V0SW5kZXgoKSA9PSBzLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2dsbigiICAtcGFyc2UtPiAiICsgYSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSAhPSBsdmFsUGFyc2VbdiArIGlsdmFsXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogRXhwZWN0ZWQgIiArIGx2YWxQYXJzZVt2ICsgaWx2YWxdKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogUGFydGlhbCBwYXJzZSAoIiArIHBvcy5nZXRJbmRleCgpICsgIiBjaGFycykgLT4gIiArIExvbmcudG9TdHJpbmcoYSkpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJGYWlsIHRvIHBhcnNlIHRoZSBzdHJpbmc6ICIgKyBzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpdmFsICs9IHZhbF9sZW5ndGg7CisgICAgICAgICAgICBpbHZhbCArPSBsdmFsX2xlbmd0aDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFRlc3QgdGhlIGhhbmRsaW5nIG9mIHF1b3RlcworICAgIHB1YmxpYyB2b2lkIFRlc3RRdW90ZXMoKSB7CisgICAgCisgICAgICAgIFN0cmluZ0J1ZmZlciBwYXQ7CisgICAgICAgIERlY2ltYWxGb3JtYXRTeW1ib2xzIHN5bSA9IG5ldyBEZWNpbWFsRm9ybWF0U3ltYm9scyhMb2NhbGUuVVMpOworICAgICAgICBwYXQgPSBuZXcgU3RyaW5nQnVmZmVyKCJhJ2ZvJydvJ2IjIik7CisgICAgICAgIERlY2ltYWxGb3JtYXQgZm10ID0gbmV3IERlY2ltYWxGb3JtYXQocGF0LnRvU3RyaW5nKCksIHN5bSk7CisgICAgICAgIFN0cmluZyBzID0gKChOdW1iZXJGb3JtYXQpZm10KS5mb3JtYXQoMTIzKTsKKyAgICAgICAgbG9nbG4oIlBhdHRlcm4gXCIiICsgcGF0ICsgIlwiIik7CisgICAgICAgIGxvZ2xuKCIgRm9ybWF0IDEyMyAuICIgKyBzKTsKKyAgICAgICAgaWYgKCFzLmVxdWFscygiYWZvJ29iMTIzIikpIAorICAgICAgICAgICAgZXJybG4oIkZBSUw6IEV4cGVjdGVkIGFmbydvYjEyMyIpOworICAgICAgICAKKyAgICAgICAgcyA9IiI7CisgICAgICAgIHBhdCA9IG5ldyBTdHJpbmdCdWZmZXIoImEnJ2IjIik7CisgICAgICAgIGZtdCA9IG5ldyBEZWNpbWFsRm9ybWF0KHBhdC50b1N0cmluZygpLCBzeW0pOworICAgICAgICBzID0gKChOdW1iZXJGb3JtYXQpZm10KS5mb3JtYXQoMTIzKTsKKyAgICAgICAgbG9nbG4oIlBhdHRlcm4gXCIiICsgcGF0ICsgIlwiIik7CisgICAgICAgIGxvZ2xuKCIgRm9ybWF0IDEyMyAuICIgKyBzKTsKKyAgICAgICAgaWYgKCFzLmVxdWFscygiYSdiMTIzIikpIAorICAgICAgICAgICAgZXJybG4oIkZBSUw6IEV4cGVjdGVkIGEnYjEyMyIpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBUZXN0IHRoZSBoYW5kbGluZyBvZiB0aGUgY3VycmVuY3kgc3ltYm9sIGluIHBhdHRlcm5zLgorICAgICAqKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0Q3VycmVuY3lTaWduKCkgeworICAgICAgICBEZWNpbWFsRm9ybWF0U3ltYm9scyBzeW0gPSBuZXcgRGVjaW1hbEZvcm1hdFN5bWJvbHMoTG9jYWxlLlVTKTsKKyAgICAgICAgU3RyaW5nQnVmZmVyIHBhdCA9IG5ldyBTdHJpbmdCdWZmZXIoIiIpOworICAgICAgICBjaGFyIGN1cnJlbmN5ID0gMHgwMEE0OworICAgICAgICAvLyAiXHhBNCMsIyMwLjAwOy1ceEE0IywjIzAuMDAiCisgICAgICAgIHBhdC5hcHBlbmQoY3VycmVuY3kpLmFwcGVuZCgiIywjIzAuMDA7LSIpLmFwcGVuZChjdXJyZW5jeSkuYXBwZW5kKCIjLCMjMC4wMCIpOworICAgICAgICBEZWNpbWFsRm9ybWF0IGZtdCA9IG5ldyBEZWNpbWFsRm9ybWF0KHBhdC50b1N0cmluZygpLCBzeW0pOworICAgICAgICBTdHJpbmcgcyA9ICgoTnVtYmVyRm9ybWF0KSBmbXQpLmZvcm1hdCgxMjM0LjU2KTsKKyAgICAgICAgcGF0ID0gbmV3IFN0cmluZ0J1ZmZlcigiIik7CisgICAgICAgIGxvZ2xuKCJQYXR0ZXJuIFwiIiArIGZtdC50b1BhdHRlcm4oKSArICJcIiIpOworICAgICAgICBsb2dsbigiIEZvcm1hdCAiICsgMTIzNC41NiArICIgLiAiICsgcyk7CisgICAgICAgIGlmICghcy5lcXVhbHMoIiQxLDIzNC41NiIpKQorICAgICAgICAgICAgZXJybG4oIkZBSUw6IEV4cGVjdGVkICQxLDIzNC41NiIpOworICAgICAgICBzID0gIiI7CisgICAgICAgIHMgPSAoKE51bWJlckZvcm1hdCkgZm10KS5mb3JtYXQoLTEyMzQuNTYpOworICAgICAgICBsb2dsbigiIEZvcm1hdCAiICsgRG91YmxlLnRvU3RyaW5nKC0xMjM0LjU2KSArICIgLiAiICsgcyk7CisgICAgICAgIGlmICghcy5lcXVhbHMoIi0kMSwyMzQuNTYiKSkKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBFeHBlY3RlZCAtJDEsMjM0LjU2Iik7CisgICAgCisgICAgICAgIHBhdCA9IG5ldyBTdHJpbmdCdWZmZXIoIiIpOworICAgICAgICAvLyAiXHhBNFx4QTQgIywjIzAuMDA7XHhBNFx4QTQgLSMsIyMwLjAwIgorICAgICAgICBwYXQuYXBwZW5kKGN1cnJlbmN5KS5hcHBlbmQoY3VycmVuY3kpLmFwcGVuZCgiICMsIyMwLjAwOyIpLmFwcGVuZChjdXJyZW5jeSkuYXBwZW5kKGN1cnJlbmN5KS5hcHBlbmQoIiAtIywjIzAuMDAiKTsgCisgICAgICAgIGZtdCA9IG5ldyBEZWNpbWFsRm9ybWF0KHBhdC50b1N0cmluZygpLCBzeW0pOworICAgICAgICBzID0gIiI7CisgICAgICAgIHMgPSAoKE51bWJlckZvcm1hdCkgZm10KS5mb3JtYXQoMTIzNC41Nik7CisgICAgICAgIGxvZ2xuKCJQYXR0ZXJuIFwiIiArIGZtdC50b1BhdHRlcm4oKSArICJcIiIpOworICAgICAgICBsb2dsbigiIEZvcm1hdCAiICsgRG91YmxlLnRvU3RyaW5nKDEyMzQuNTYpICsgIiAuICIgKyBzKTsKKyAgICAKKyAgICAgICAgaWYgKCFzLmVxdWFscygiVVNEIDEsMjM0LjU2IikpCisgICAgICAgICAgICBlcnJsbigiRkFJTDogRXhwZWN0ZWQgVVNEIDEsMjM0LjU2Iik7CisgICAgICAgIHMgPSAiIjsKKyAgICAgICAgcyA9ICgoTnVtYmVyRm9ybWF0KSBmbXQpLmZvcm1hdCgtMTIzNC41Nik7CisgICAgICAgIGxvZ2xuKCIgRm9ybWF0ICIgKyBEb3VibGUudG9TdHJpbmcoLTEyMzQuNTYpICsgIiAuICIgKyBzKTsKKyAgICAgICAgaWYgKCFzLmVxdWFscygiVVNEIC0xLDIzNC41NiIpKQorICAgICAgICAgICAgZXJybG4oIkZBSUw6IEV4cGVjdGVkIFVTRCAtMSwyMzQuNTYiKTsKKyAgICAKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogVGVzdCBsb2NhbGl6ZWQgY3VycmVuY3kgcGF0dGVybnMuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEN1cnJlbmN5KCkgeworICAgICAgICBOdW1iZXJGb3JtYXQgY3VycmVuY3lGbXQgPSAKKyAgICAgICAgICAgIE51bWJlckZvcm1hdC5nZXRDdXJyZW5jeUluc3RhbmNlKExvY2FsZS5DQU5BREFfRlJFTkNIKTsKKyAgICAKKyAgICAgICAgU3RyaW5nIHM7CisgICAgICAgIHMgPSBjdXJyZW5jeUZtdC5mb3JtYXQoMS41MCk7CisgICAgICAgIGxvZ2xuKCJVbiBwYXV2cmUgaWNpIGEuLi4uLi4uLi4uLiIgKyBzKTsKKyAgICAgICAgICAgIAorICAgICAgICBpZiAoIXMuZXF1YWxzKCIxLDUwICQiKSkKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBFeHBlY3RlZCAxLDUwICQsIGdvdCAiICsgcyk7CisgICAgICAgIHMgPSAiIjsKKyAgICAgICAgY3VycmVuY3lGbXQgPSBOdW1iZXJGb3JtYXQuZ2V0Q3VycmVuY3lJbnN0YW5jZShMb2NhbGUuR0VSTUFOWSk7CisgICAgICAgIHMgPSBjdXJyZW5jeUZtdC5mb3JtYXQoMS41MCk7CisgICAgICAgIGxvZ2xuKCJVbiBwYXV2cmUgZW4gQWxsZW1hZ25lIGEuLiIgKyBzKTsKKyAgICAgICAgaWYgKCFzLmVxdWFscygiMSw1MCAiICsgRVVSTykpCisgICAgICAgICAgICBlcnJsbigiRkFJTDogRXhwZWN0ZWQgMSw1MCBETSwgZ290ICIgKyBzKTsKKyAgICAgICAgcyA9ICIiOworICAgICAgICBjdXJyZW5jeUZtdCA9IE51bWJlckZvcm1hdC5nZXRDdXJyZW5jeUluc3RhbmNlKExvY2FsZS5GUkFOQ0UpOworICAgICAgICBzID0gY3VycmVuY3lGbXQuZm9ybWF0KDEuNTApOworICAgICAgICBsb2dsbigiVW4gcGF1dnJlIGVuIEZyYW5jZSBhLi4uLi4iICsgcyk7CisgICAgICAgIGlmICghcy5lcXVhbHMoIjEsNTAgIiArIEVVUk8pKQorICAgICAgICAgICAgZXJybG4oIkZBSUw6IEV4cGVjdGVkIDEsNTAgRiwgZ290ICIgKyBzKTsKKyAgICAKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXN0IHRoZSBDdXJyZW5jeSByZWdpc3RyYXRpb24tcmVsYXRlZCBBUEkuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEN1cnJlbmN5UmVnaXN0cmF0aW9uKCkgeworICAgICAgICAvKiBkbGYKKyAgICAgICAgLy8gYXZhaWxhYmxlIGxvY2FsZXMKKyAgICAgICAgTG9jYWxlW10gbG9jYWxlcyA9IEN1cnJlbmN5LmdldEF2YWlsYWJsZUxvY2FsZXMoKTsKKyAgICAgICAgbG9nbG4oImF2YWlsYWJsZSBsb2NhbGVzIik7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbG9jYWxlcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgbG9nbG4oIlsiICsgaSArICJdICIgKyBsb2NhbGVzW2ldLnRvU3RyaW5nKCkpOworICAgICAgICB9CisKKyAgICAgICAgLy8gaWRlbnRpY2FsIGluc3RhbmNlCisgICAgICAgIEN1cnJlbmN5IGZyMCA9IEN1cnJlbmN5LmdldEluc3RhbmNlKExvY2FsZS5GUkFOQ0UpOworICAgICAgICBDdXJyZW5jeSBmcjEgPSBDdXJyZW5jeS5nZXRJbnN0YW5jZShMb2NhbGUuRlJBTkNFKTsKKyAgICAgICAgaWYgKGZyMCAhPSBmcjEpIHsKKyAgICAgICAgICAgIGVycmxuKCJub24taWRlbnRpY2FsIGN1cnJlbmNpZXMgZm9yIGxvY2FsZSIpOworICAgICAgICB9CisKKyAgICAgICAgQ3VycmVuY3kgdXMwID0gQ3VycmVuY3kuZ2V0SW5zdGFuY2UoTG9jYWxlLlVTKTsKKworICAgICAgICAvLyByZXBsYWNlIFVTIHdpdGggRlIKKyAgICAgICAgT2JqZWN0IGtleSA9IEN1cnJlbmN5LnJlZ2lzdGVyKGZyMCwgTG9jYWxlLlVTKTsKKworICAgICAgICBsb2dsbigiRlJFTkNIIGN1cnJlbmN5OiAiICsgZnIwKTsKKyAgICAgICAgbG9nbG4oIlVTIGN1cnJlbmN5OiAiICsgdXMwKTsKKworICAgICAgICAvLyBxdWVyeSBVUyBhbmQgZ2V0IEZSIGJhY2sKKyAgICAgICAgQ3VycmVuY3kgdXMxID0gQ3VycmVuY3kuZ2V0SW5zdGFuY2UoTG9jYWxlLlVTKTsKKyAgICAgICAgbG9nbG4oImdvdCBjdXJyZW5jeTogIiArIHVzMSk7CisgICAgICAgIGlmICh1czEgIT0gZnIwKSB7CisgICAgICAgICAgICBlcnJsbigicmVnaXN0cnkgZmFpbGVkIik7CisgICAgICAgIH0KKyAgICAgICAgbG9nbG4oIm5ldyBVUyBjdXJyZW5jeTogIiArIHVzMSk7CisKKyAgICAgICAgLy8gdW5yZWdpc3RlciBhbmQgZ2V0IFVTIGJhY2sKKyAgICAgICAgaWYgKCFDdXJyZW5jeS51bnJlZ2lzdGVyKGtleSkpIHsKKyAgICAgICAgICAgIGVycmxuKCJmYWlsZWQgdG8gdW5yZWdpc3RlciBrZXk6ICIgKyBrZXkpOworICAgICAgICB9CisgICAgICAgIEN1cnJlbmN5IHVzMiA9IEN1cnJlbmN5LmdldEluc3RhbmNlKExvY2FsZS5VUyk7CisgICAgICAgIGlmICghdXMyLmVxdWFscyh1czApKSB7CisgICAgICAgICAgICBlcnJsbigiYWZ0ZXIgdW5yZWdpc3RlciBVUyBkaWRuJ3QgZ2V0IG9yaWdpbmFsIGN1cnJlbmN5IGJhY2s6ICIgKyB1czIgKyAiICE9ICIgKyB1czApOworICAgICAgICB9CisgICAgICAgICovCisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdCB0aGUgQ3VycmVuY3kgb2JqZWN0IGhhbmRsaW5nLCBuZXcgYXMgb2YgSUNVIDIuMi4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0Q3VycmVuY3lPYmplY3QoKSB7CisgICAgICAgIE51bWJlckZvcm1hdCBmbXQgPSAKKyAgICAgICAgICAgIE51bWJlckZvcm1hdC5nZXRDdXJyZW5jeUluc3RhbmNlKExvY2FsZS5VUyk7CisgICAgICAgIAorICAgICAgICBleHBlY3RDdXJyZW5jeShmbXQsIG51bGwsIDEyMzQuNTYsICIkMSwyMzQuNTYiKTsKKworICAgICAgICBleHBlY3RDdXJyZW5jeShmbXQsIEN1cnJlbmN5LmdldEluc3RhbmNlKExvY2FsZS5GUkFOQ0UpLAorICAgICAgICAgICAgICAgICAgICAgICAxMjM0LjU2LCAiXHUyMEFDMSwyMzQuNTYiKTsgLy8gRXVybworCisgICAgICAgIGV4cGVjdEN1cnJlbmN5KGZtdCwgQ3VycmVuY3kuZ2V0SW5zdGFuY2UoTG9jYWxlLkpBUEFOKSwKKyAgICAgICAgICAgICAgICAgICAgICAgMTIzNC41NiwgIlx1RkZFNTEsMjM1Iik7IC8vIFllbgorCisgICAgICAgIGV4cGVjdEN1cnJlbmN5KGZtdCwgQ3VycmVuY3kuZ2V0SW5zdGFuY2UobmV3IExvY2FsZSgiZnIiLCAiQ0giLCAiIikpLAorICAgICAgICAgICAgICAgICAgICAgICAxMjM0LjU2LCAiQ0hGMSwyMzQuNTAiKTsgLy8gMC4yNSByb3VuZGluZworCisgICAgICAgIGV4cGVjdEN1cnJlbmN5KGZtdCwgQ3VycmVuY3kuZ2V0SW5zdGFuY2UoTG9jYWxlLlVTKSwKKyAgICAgICAgICAgICAgICAgICAgICAgMTIzNC41NiwgIiQxLDIzNC41NiIpOworCisgICAgICAgIGZtdCA9IE51bWJlckZvcm1hdC5nZXRDdXJyZW5jeUluc3RhbmNlKExvY2FsZS5GUkFOQ0UpOworICAgICAgICAKKyAgICAgICAgZXhwZWN0Q3VycmVuY3koZm10LCBudWxsLCAxMjM0LjU2LCAiMSAyMzQsNTYgXHUyMEFDIik7CisKKyAgICAgICAgZXhwZWN0Q3VycmVuY3koZm10LCBDdXJyZW5jeS5nZXRJbnN0YW5jZShMb2NhbGUuSkFQQU4pLAorICAgICAgICAgICAgICAgICAgICAgICAxMjM0LjU2LCAiMSAyMzUgXHVGRkU1Iik7IC8vIFllbgorCisgICAgICAgIGV4cGVjdEN1cnJlbmN5KGZtdCwgQ3VycmVuY3kuZ2V0SW5zdGFuY2UobmV3IExvY2FsZSgiZnIiLCAiQ0giLCAiIikpLAorICAgICAgICAgICAgICAgICAgICAgICAxMjM0LjU2LCAiMSAyMzQsNTAgQ0hGIik7IC8vIDAuMjUgcm91bmRpbmcKKworICAgICAgICBleHBlY3RDdXJyZW5jeShmbXQsIEN1cnJlbmN5LmdldEluc3RhbmNlKExvY2FsZS5VUyksCisgICAgICAgICAgICAgICAgICAgICAgIDEyMzQuNTYsICIxIDIzNCw1NiBVU0QiKTsKKworICAgICAgICBleHBlY3RDdXJyZW5jeShmbXQsIEN1cnJlbmN5LmdldEluc3RhbmNlKExvY2FsZS5GUkFOQ0UpLAorICAgICAgICAgICAgICAgICAgICAgICAxMjM0LjU2LCAiMSAyMzQsNTYgXHUyMEFDIik7IC8vIEV1cm8KKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSB2b2lkIGV4cGVjdEN1cnJlbmN5KE51bWJlckZvcm1hdCBuZiwgQ3VycmVuY3kgY3VyciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIHZhbHVlLCBTdHJpbmcgc3RyaW5nKSB7CisgICAgICAgIERlY2ltYWxGb3JtYXQgZm10ID0gKERlY2ltYWxGb3JtYXQpIG5mOworICAgICAgICBpZiAoY3VyciAhPSBudWxsKSB7CisgICAgICAgICAgICBmbXQuc2V0Q3VycmVuY3koY3Vycik7CisgICAgICAgIH0KKyAgICAgICAgU3RyaW5nIHMgPSBmbXQuZm9ybWF0KHZhbHVlKS5yZXBsYWNlKCdcdTAwQTAnLCAnICcpOworCisgICAgICAgIGlmIChzLmVxdWFscyhzdHJpbmcpKSB7CisgICAgICAgICAgICBsb2dsbigiT2s6ICIgKyB2YWx1ZSArICIgeCAiICsgY3VyciArICIgPT4gIiArIHMpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6ICIgKyB2YWx1ZSArICIgeCAiICsgY3VyciArICIgPT4gIiArIHMgKworICAgICAgICAgICAgICAgICAgIiwgZXhwZWN0ZWQgIiArIHN0cmluZyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0Q3VycmVuY3lQYXR0ZXJucygpIHsKKyAgICAgICAgaW50IGk7CisgICAgICAgIExvY2FsZVtdIGxvY3MgPSBOdW1iZXJGb3JtYXQuZ2V0QXZhaWxhYmxlTG9jYWxlcygpOworICAgICAgICBmb3IgKGk9MDsgaTxsb2NzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBOdW1iZXJGb3JtYXQgbmYgPSBOdW1iZXJGb3JtYXQuZ2V0Q3VycmVuY3lJbnN0YW5jZShsb2NzW2ldKTsKKyAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSBjdXJyZW5jeSBmb3JtYXRzIGRvIG5vdCBoYXZlIGEgdmFyaWFibGUgbnVtYmVyCisgICAgICAgICAgICAvLyBvZiBmcmFjdGlvbiBkaWdpdHMKKyAgICAgICAgICAgIGludCBtaW4gPSBuZi5nZXRNaW5pbXVtRnJhY3Rpb25EaWdpdHMoKTsKKyAgICAgICAgICAgIGludCBtYXggPSBuZi5nZXRNYXhpbXVtRnJhY3Rpb25EaWdpdHMoKTsKKyAgICAgICAgICAgIGlmIChtaW4gIT0gbWF4KSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIGEgPSBuZi5mb3JtYXQoMS4wKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgYiA9IG5mLmZvcm1hdCgxLjEyNSk7CisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6ICIgKyBsb2NzW2ldICsKKyAgICAgICAgICAgICAgICAgICAgICAiIG1pbiBmcmFjdGlvbiBkaWdpdHMgIT0gbWF4IGZyYWN0aW9uIGRpZ2l0czsgIisKKyAgICAgICAgICAgICAgICAgICAgICAieCAxLjAgPT4gIiArIGEgKworICAgICAgICAgICAgICAgICAgICAgICI7IHggMS4xMjUgPT4gIiArIGIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gTWFrZSBzdXJlIEVVUk8gY3VycmVuY3kgZm9ybWF0cyBoYXZlIGV4YWN0bHkgMiBmcmFjdGlvbiBkaWdpdHMKKyAgICAgICAgICAgIGlmIChuZiBpbnN0YW5jZW9mIERlY2ltYWxGb3JtYXQpIHsKKyAgICAgICAgICAgICAgICBEZWNpbWFsRm9ybWF0IGRmID0gKERlY2ltYWxGb3JtYXQpIG5mOworICAgICAgICAgICAgICAgIGlmICgiRVVSIi5lcXVhbHMoZGYuZ2V0Q3VycmVuY3koKS5nZXRDdXJyZW5jeUNvZGUoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1pbiAhPSAyIHx8IG1heCAhPSAyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgYSA9IG5mLmZvcm1hdCgxLjApOworICAgICAgICAgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6ICIgKyBsb2NzW2ldICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgaXMgYSBFVVJPIGZvcm1hdCBidXQgaXQgZG9lcyBub3QgaGF2ZSAyIGZyYWN0aW9uIGRpZ2l0czsgIisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4IDEuMCA9PiAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogRG8gcnVkaW1lbnRhcnkgdGVzdGluZyBvZiBwYXJzaW5nLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RQYXJzZSgpIHsKKyAgICAgICAgU3RyaW5nIGFyZyA9ICIwLjAiOworICAgICAgICBEZWNpbWFsRm9ybWF0IGZvcm1hdCA9IG5ldyBEZWNpbWFsRm9ybWF0KCIwMCIpOworICAgICAgICBkb3VibGUgYU51bWJlciA9IDBsOworICAgICAgICB0cnkgeworICAgICAgICAgICAgYU51bWJlciA9IGZvcm1hdC5wYXJzZShhcmcpLmRvdWJsZVZhbHVlKCk7CisgICAgICAgIH0gY2F0Y2ggKGphdmEudGV4dC5QYXJzZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZSk7CisgICAgICAgIH0KKyAgICAgICAgbG9nbG4oInBhcnNlKCIgKyBhcmcgKyAiKSA9ICIgKyBhTnVtYmVyKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogVGVzdCBwcm9wZXIgcm91bmRpbmcgYnkgdGhlIGZvcm1hdCBtZXRob2QuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdFJvdW5kaW5nNDg3KCkgeworICAgIAorICAgICAgICBOdW1iZXJGb3JtYXQgbmYgPSBOdW1iZXJGb3JtYXQuZ2V0SW5zdGFuY2UoKTsKKyAgICAgICAgcm91bmRpbmdUZXN0KG5mLCAwLjAwMTU5OTk5LCA0LCAiMC4wMDE2Iik7CisgICAgICAgIHJvdW5kaW5nVGVzdChuZiwgMC4wMDk5NSwgNCwgIjAuMDEiKTsKKyAgICAKKyAgICAgICAgcm91bmRpbmdUZXN0KG5mLCAxMi4zOTk1LCAzLCAiMTIuNCIpOworICAgIAorICAgICAgICByb3VuZGluZ1Rlc3QobmYsIDEyLjQ5OTksIDAsICIxMiIpOworICAgICAgICByb3VuZGluZ1Rlc3QobmYsIC0gMTkuNSwgMCwgIi0yMCIpOworICAgIAorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBUZXN0IHRoZSBmdW5jdGlvbmluZyBvZiB0aGUgc2Vjb25kYXJ5IGdyb3VwaW5nIHZhbHVlLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RTZWNvbmRhcnlHcm91cGluZygpIHsKKyAgICAKKyAgICAgICAgRGVjaW1hbEZvcm1hdFN5bWJvbHMgVVMgPSBuZXcgRGVjaW1hbEZvcm1hdFN5bWJvbHMoTG9jYWxlLlVTKTsKKyAgICAgICAgRGVjaW1hbEZvcm1hdCBmID0gbmV3IERlY2ltYWxGb3JtYXQoIiMsIyMsIyMjIiwgVVMpOworICAgIAorICAgICAgICBleHBlY3QoZiwgMTIzNDU2Nzg5TCwgIjEyLDM0LDU2LDc4OSIpOworICAgICAgICBleHBlY3RQYXQoZiwgIiMsIyMsIyMjIik7CisgICAgICAgIGYuYXBwbHlQYXR0ZXJuKCIjLCMjIyIpOworICAgIAorICAgICAgICBmLnNldFNlY29uZGFyeUdyb3VwaW5nU2l6ZSg0KTsKKyAgICAgICAgZXhwZWN0KGYsIDEyMzQ1Njc4OUwsICIxMiwzNDU2LDc4OSIpOworICAgICAgICBleHBlY3RQYXQoZiwgIiMsIyMjIywjIyMiKTsKKyAgICAgICAgTnVtYmVyRm9ybWF0IGcgPSBOdW1iZXJGb3JtYXQuZ2V0SW5zdGFuY2UobmV3IExvY2FsZSgiaGkiLCAiSU4iKSk7CisgICAgCisgICAgICAgIFN0cmluZyBvdXQgPSAiIjsKKyAgICAgICAgbG9uZyBsID0gMTg3NjU0MzIxMEw7CisgICAgICAgIG91dCA9IGcuZm9ybWF0KGwpOworICAgIAorICAgICAgICAvLyBleHBlY3QgIjEsODcsNjUsNDMsMjEwIiwgYnV0IHdpdGggSGluZGkgZGlnaXRzCisgICAgICAgIC8vICAgICAgICAgMDEyMzQ1Njc4OTAxMjMKKyAgICAgICAgYm9vbGVhbiBvayA9IHRydWU7CisgICAgICAgIGlmIChvdXQubGVuZ3RoKCkgIT0gMTQpIHsKKyAgICAgICAgICAgIG9rID0gZmFsc2U7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG91dC5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgYm9vbGVhbiBleHBlY3RHcm91cCA9IGZhbHNlOworICAgICAgICAgICAgICAgIHN3aXRjaCAoaSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIDEgOgorICAgICAgICAgICAgICAgICAgICBjYXNlIDQgOgorICAgICAgICAgICAgICAgICAgICBjYXNlIDcgOgorICAgICAgICAgICAgICAgICAgICBjYXNlIDEwIDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdEdyb3VwID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvLyBMYXRlciAtLSBmaXggdGhpcyB0byBnZXQgdGhlIGFjdHVhbCBncm91cGluZworICAgICAgICAgICAgICAgIC8vIGNoYXJhY3RlciBmcm9tIHRoZSByZXNvdXJjZSBidW5kbGUuCisgICAgICAgICAgICAgICAgYm9vbGVhbiBpc0dyb3VwID0gKG91dC5jaGFyQXQoaSkgPT0gMHgwMDJDKTsKKyAgICAgICAgICAgICAgICBpZiAoaXNHcm91cCAhPSBleHBlY3RHcm91cCkgeworICAgICAgICAgICAgICAgICAgICBvayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFvaykgeworICAgICAgICAgICAgZXJybG4oIkZBSUwgIEV4cGVjdGVkICIrIGwgKyAiIHggaGlfSU4gLiBcIjEsODcsNjUsNDMsMjEwXCIgKHdpdGggSGluZGkgZGlnaXRzKSwgZ290IFwiIgorICAgICAgICAgICAgICAgICAgICArIG91dCArICJcIiIpOyAKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvZ2xuKCJPayAgICAiICsgbCArICIgeCBoaV9JTiAuIFwiIiArIG91dCArICJcIiIpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIHJvdW5kaW5nVGVzdChOdW1iZXJGb3JtYXQgbmYsIGRvdWJsZSB4LCBpbnQgbWF4RnJhY3Rpb25EaWdpdHMsIGZpbmFsIFN0cmluZyBleHBlY3RlZCkgeworICAgICAgICBuZi5zZXRNYXhpbXVtRnJhY3Rpb25EaWdpdHMobWF4RnJhY3Rpb25EaWdpdHMpOworICAgICAgICBTdHJpbmcgb3V0ID0gbmYuZm9ybWF0KHgpOworICAgICAgICBsb2dsbih4ICsgIiBmb3JtYXRzIHdpdGggIiArIG1heEZyYWN0aW9uRGlnaXRzICsgIiBmcmFjdGlvbmFsIGRpZ2l0cyB0byAiICsgb3V0KTsgCisgICAgICAgIGlmICghb3V0LmVxdWFscyhleHBlY3RlZCkpCisgICAgICAgICAgICBlcnJsbigiRkFJTDogRXhwZWN0ZWQgIiArIGV4cGVjdGVkKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogVXBncmFkZSB0byBhbHBoYVdvcmtzCisgICAgICovCisgICAgcHVibGljIHZvaWQgZXhwZWN0KE51bWJlckZvcm1hdCBmbXQsIFN0cmluZyBzdHIsIGludCBuKSB7CisgICAgICAgIExvbmcgbnVtID0gbmV3IExvbmcoMCk7CisgICAgICAgIHRyeSB7CisgICAgICAgIG51bSA9IChMb25nKWZtdC5wYXJzZShzdHIpOworICAgICAgICB9IGNhdGNoIChqYXZhLnRleHQuUGFyc2VFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgbG9nbG4oZS5nZXRNZXNzYWdlKCkpOworICAgICAgICB9CisgICAgICAgIFN0cmluZyBwYXQgPSAoKERlY2ltYWxGb3JtYXQpZm10KS50b1BhdHRlcm4oKTsKKyAgICAgICAgaWYgKG51bS5sb25nVmFsdWUoKSA9PSBuKSB7CisgICAgICAgICAgICBsb2dsbigiT2sgICBcIiIgKyBzdHIgKyAiXCIgeCAiICsKKyAgICAgICAgICAgICAgICAgIHBhdCArICIgPSAiICsKKyAgICAgICAgICAgICAgICAgIG51bS50b1N0cmluZygpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMIFwiIiArIHN0ciArICJcIiB4ICIgKworICAgICAgICAgICAgICAgICAgcGF0ICsgIiA9ICIgKworICAgICAgICAgICAgICAgICAgbnVtLnRvU3RyaW5nKCkgKyAiLCBleHBlY3RlZCAiICsgbiArICJMIik7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogVXBncmFkZSB0byBhbHBoYVdvcmtzCisgICAgICovICAgICAgICAKKyAgICBwdWJsaWMgdm9pZCBleHBlY3QoTnVtYmVyRm9ybWF0IGZtdCwgZmluYWwgZG91YmxlIG4sIGZpbmFsIFN0cmluZyBleHApIHsKKyAgICAgICAgU3RyaW5nQnVmZmVyIHNhdyA9IG5ldyBTdHJpbmdCdWZmZXIoIiIpOworICAgICAgICBGaWVsZFBvc2l0aW9uIHBvcyA9IG5ldyBGaWVsZFBvc2l0aW9uKDApOyAKKyAgICAgICAgc2F3ID0gZm10LmZvcm1hdChuLCBzYXcsIHBvcyk7CisgICAgICAgIFN0cmluZyBwYXQgPSAoKERlY2ltYWxGb3JtYXQpZm10KS50b1BhdHRlcm4oKTsKKyAgICAgICAgaWYgKHNhdy50b1N0cmluZygpLmVxdWFscyhleHApKSB7CisgICAgICAgICAgICBsb2dsbigiT2sgICAiICsgRG91YmxlLnRvU3RyaW5nKG4pICsgIiB4ICIgKworICAgICAgICAgICAgICAgICAgcGF0ICsgIiA9IFwiIiArCisgICAgICAgICAgICAgICAgICBzYXcgKyAiXCIiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMICIgKyBEb3VibGUudG9TdHJpbmcobikgKyAiIHggIiArCisgICAgICAgICAgICAgICAgICBwYXQgKyAiID0gXCIiICsKKyAgICAgICAgICAgICAgICAgIHNhdyArICJcIiwgZXhwZWN0ZWQgXCIiICsgZXhwICsgIlwiIik7CisgICAgICAgIH0gICAgCisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFVwZ3JhZGUgdG8gYWxwaGFXb3JrcworICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RFeHBvbmVudCgpIHsKKyAgICAgICAgRGVjaW1hbEZvcm1hdFN5bWJvbHMgVVMgPSBuZXcgRGVjaW1hbEZvcm1hdFN5bWJvbHMoTG9jYWxlLlVTKTsKKyAgICAgICAgRGVjaW1hbEZvcm1hdCBmbXQxID0gbmV3IERlY2ltYWxGb3JtYXQoIjAuIyMjRTAiLCBVUyk7CisgICAgICAgIERlY2ltYWxGb3JtYXQgZm10MiA9IG5ldyBEZWNpbWFsRm9ybWF0KCIwLiMjI0UrMCIsIFVTKTsKKyAgICAgICAgaW50IG4gPSAxMjM0OworICAgICAgICBleHBlY3QoZm10MSwgbiwgIjEuMjM0RTMiKTsKKyAgICAgICAgZXhwZWN0KGZtdDIsIG4sICIxLjIzNEUrMyIpOworICAgICAgICBleHBlY3QoZm10MSwgIjEuMjM0RTMiLCBuKTsKKyAgICAgICAgZXhwZWN0KGZtdDEsICIxLjIzNEUrMyIsIG4pOyAvLyBFaXRoZXIgZm9ybWF0IHNob3VsZCBwYXJzZSAiRSszIgorICAgICAgICBleHBlY3QoZm10MiwgIjEuMjM0RSszIiwgbik7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFVwZ3JhZGUgdG8gYWxwaGFXb3JrcworICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RTY2llbnRpZmljKCkgeworICAgIAorICAgICAgICBEZWNpbWFsRm9ybWF0U3ltYm9scyBVUyA9IG5ldyBEZWNpbWFsRm9ybWF0U3ltYm9scyhMb2NhbGUuVVMpOworICAgIAorICAgICAgICAvLyBUZXN0IHBhdHRlcm4gcm91bmQtdHJpcAorICAgICAgICBmaW5hbCBTdHJpbmcgUEFUW10gPSB7ICIjRTAiLCAiMC4jIyMjRTAiLCAiMDAuMDAwRTAwIiwgIiMjMC4jIyMjRTAwMCIsICIwLiMjI0UwO1swLiMjI0UwXSIgfTsKKyAgICAgICAgaW50IFBBVF9sZW5ndGggPSBQQVQubGVuZ3RoOworICAgICAgICBpbnQgRElHSVRTW10gPSB7CisgICAgICAgICAgICAvLyBtaW4gaW50LCBtYXggaW50LCBtaW4gZnJhYywgbWF4IGZyYWMKKyAgICAgICAgICAgIDAsIDEsIDAsIDAsIC8vICIjRTAiCisgICAgICAgICAgICAxLCAxLCAwLCA0LCAvLyAiMC4jIyMjRTAiCisgICAgICAgICAgICAyLCAyLCAzLCAzLCAvLyAiMDAuMDAwRTAwIgorICAgICAgICAgICAgMSwgMywgMCwgNCwgLy8gIiMjMC4jIyMjRTAwMCIKKyAgICAgICAgICAgIDEsIDEsIDAsIDMsIC8vICIwLiMjI0UwO1swLiMjI0UwXSIKKyAgICAgICAgfTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBQQVRfbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIFN0cmluZyBwYXQgPSBQQVRbaV07CisgICAgICAgICAgICBEZWNpbWFsRm9ybWF0IGRmID0gbmV3IERlY2ltYWxGb3JtYXQocGF0LCBVUyk7CisgICAgICAgICAgICBTdHJpbmcgcGF0MiA9IGRmLnRvUGF0dGVybigpOworICAgICAgICAgICAgaWYgKHBhdC5lcXVhbHMocGF0MikpIHsKKyAgICAgICAgICAgICAgICBsb2dsbigiT2sgICBQYXR0ZXJuIHJ0IFwiIiArIHBhdCArICJcIiAuIFwiIiArIHBhdDIgKyAiXCIiKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUwgUGF0dGVybiBydCBcIiIgKyBwYXQgKyAiXCIgLiBcIiIgKyBwYXQyICsgIlwiIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBNYWtlIHN1cmUgZGlnaXQgY291bnRzIG1hdGNoIHdoYXQgd2UgZXhwZWN0CisgICAgICAgICAgICBpZiAoZGYuZ2V0TWluaW11bUludGVnZXJEaWdpdHMoKSAhPSBESUdJVFNbNCAqIGldCisgICAgICAgICAgICAgICAgfHwgZGYuZ2V0TWF4aW11bUludGVnZXJEaWdpdHMoKSAhPSBESUdJVFNbNCAqIGkgKyAxXQorICAgICAgICAgICAgICAgIHx8IGRmLmdldE1pbmltdW1GcmFjdGlvbkRpZ2l0cygpICE9IERJR0lUU1s0ICogaSArIDJdCisgICAgICAgICAgICAgICAgfHwgZGYuZ2V0TWF4aW11bUZyYWN0aW9uRGlnaXRzKCkgIT0gRElHSVRTWzQgKiBpICsgM10pIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTCBcIiIrIHBhdCsgIlwiIG1pbi9tYXggaW50OyBtaW4vbWF4IGZyYWMgPSAiCisgICAgICAgICAgICAgICAgICAgICAgICArIGRmLmdldE1pbmltdW1JbnRlZ2VyRGlnaXRzKCkgKyAiLyIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgZGYuZ2V0TWF4aW11bUludGVnZXJEaWdpdHMoKSArICI7IgorICAgICAgICAgICAgICAgICAgICAgICAgKyBkZi5nZXRNaW5pbXVtRnJhY3Rpb25EaWdpdHMoKSArICIvIgorICAgICAgICAgICAgICAgICAgICAgICAgKyBkZi5nZXRNYXhpbXVtRnJhY3Rpb25EaWdpdHMoKSArICIsIGV4cGVjdCAiCisgICAgICAgICAgICAgICAgICAgICAgICArIERJR0lUU1s0ICogaV0gKyAiLyIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgRElHSVRTWzQgKiBpICsgMV0gKyAiOyIgCisgICAgICAgICAgICAgICAgICAgICAgICArIERJR0lUU1s0ICogaSArIDJdICsgIi8iCisgICAgICAgICAgICAgICAgICAgICAgICArIERJR0lUU1s0ICogaSArIDNdKTsgCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgZXhwZWN0KG5ldyBEZWNpbWFsRm9ybWF0KCIjRTAiLCBVUyksIDEyMzQ1LjAsICIxLjIzNDVFNCIpOworICAgICAgICBleHBlY3QobmV3IERlY2ltYWxGb3JtYXQoIjBFMCIsIFVTKSwgMTIzNDUuMCwgIjFFNCIpOworICAgIAorICAgICAgICAvLyBwYXR0ZXJuIG9mIE51bWJlckZvcm1hdC5nZXRTY2llbnRpZmljSW5zdGFuY2UoTG9jYWxlLlVTKSA9ICIwLiMjIyMjI0UwIiBub3QgIiNFMCIKKyAgICAgICAgLy8gc28gcmVzdWx0ID0gMS4yMzQ1NjhFNCBub3QgMS4yMzQ1Njc4OTAxRTQKKyAgICAgICAgLy93aGVuIHRoZSBwYXR0ZXJuIHByb2JsZW0gaXMgZmluYWxpemVkLCBkZWxldGUgY29tbWVudCBtYXJrJy8vJyAKKyAgICAgICAgLy9vZiB0aGUgZm9sbG93aW5nIGNvZGUKKyAgICAgICAgZXhwZWN0KE51bWJlckZvcm1hdC5nZXRTY2llbnRpZmljSW5zdGFuY2UoTG9jYWxlLlVTKSwgMTIzNDUuNjc4OTAxLCAiMS4yMzQ1Njc4OTAxRTQiKTsKKyAgICAKKyAgICAgICAgZXhwZWN0KG5ldyBEZWNpbWFsRm9ybWF0KCIjIzAuIyMjRTAiLCBVUyksIDEyMzQ1LjAsICIxMi4zNEUzIik7CisgICAgICAgIGV4cGVjdChuZXcgRGVjaW1hbEZvcm1hdCgiIyMwLiMjI0UwIiwgVVMpLCAxMjM0NS4wMDAwMSwgIjEyLjM1RTMiKTsKKyAgICAgICAgZXhwZWN0KG5ldyBEZWNpbWFsRm9ybWF0KCIjIzAuIyMjI0UwIiwgVVMpLCAxMjM0NSwgIjEyLjM0NUUzIik7CisgICAgCisgICAgICAgIC8vIHBhdHRlcm4gb2YgTnVtYmVyRm9ybWF0LmdldFNjaWVudGlmaWNJbnN0YW5jZShMb2NhbGUuVVMpID0gIjAuIyMjIyMjRTAiIG5vdCAiI0UwIgorICAgICAgICAvLyBzbyByZXN1bHQgPSAxLjIzNDU2OEU0IG5vdCAxLjIzNDU2Nzg5MDFFNAorICAgICAgICBleHBlY3QoTnVtYmVyRm9ybWF0LmdldFNjaWVudGlmaWNJbnN0YW5jZShMb2NhbGUuRlJBTkNFKSwgMTIzNDUuNjc4OTAxLCAiMSwyMzQ1Njc4OTAxRTQiKTsKKyAgICAKKyAgICAgICAgZXhwZWN0KG5ldyBEZWNpbWFsRm9ybWF0KCIjIzAuIyMjI0UwIiwgVVMpLCA3ODkuMTIzNDVlLTksICI3ODkuMTJFLTkiKTsKKyAgICAgICAgZXhwZWN0KG5ldyBEZWNpbWFsRm9ybWF0KCIjIzAuIyMjI0UwIiwgVVMpLCA3ODAuZS05LCAiNzgwRS05Iik7CisgICAgICAgIGV4cGVjdChuZXcgRGVjaW1hbEZvcm1hdCgiLiMjI0UwIiwgVVMpLCA0NTY3OC4wLCAiLjQ1N0U1Iik7CisgICAgICAgIGV4cGVjdChuZXcgRGVjaW1hbEZvcm1hdCgiLiMjI0UwIiwgVVMpLCAwLCAiLjBFMCIpOworICAgICAgICAvKgorICAgICAgICBleHBlY3QobmV3IERlY2ltYWxGb3JtYXRbXSB7IG5ldyBEZWNpbWFsRm9ybWF0KCIjRTAiLCBVUyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERlY2ltYWxGb3JtYXQoIiMjRTAiLCBVUyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERlY2ltYWxGb3JtYXQoIiMjIyNFMCIsIFVTKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGVjaW1hbEZvcm1hdCgiMEUwIiwgVVMpLCAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGVjaW1hbEZvcm1hdCgiMDBFMCIsIFVTKSwgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGVjaW1hbEZvcm1hdCgiMDAwRTAiLCBVUyksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgbmV3IExvbmcoNDU2NzgwMDApLAorICAgICAgICAgICAgICAgbmV3IFN0cmluZ1tdIHsgIjQuNTY3OEU3IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI0NS42NzhFNiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiNDU2Ny44RTQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjVFNyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiNDZFNiIsICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI0NTdFNSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgKTsKKyAgICAgICAgIQorICAgICAgICAhIFVucm9sbCB0aGlzIHRlc3QgaW50byBpbmRpdmlkdWFsIHRlc3RzIGJlbG93Li4uCisgICAgICAgICEKKyAgICAgICAgKi8KKyAgICAgICAgZXhwZWN0KG5ldyBEZWNpbWFsRm9ybWF0KCIjRTAiLCBVUyksIDQ1Njc4MDAwLCAiNC41Njc4RTciKTsKKyAgICAgICAgZXhwZWN0KG5ldyBEZWNpbWFsRm9ybWF0KCIjI0UwIiwgVVMpLCA0NTY3ODAwMCwgIjQ1LjY3OEU2Iik7CisgICAgICAgIGV4cGVjdChuZXcgRGVjaW1hbEZvcm1hdCgiIyMjI0UwIiwgVVMpLCA0NTY3ODAwMCwgIjQ1NjcuOEU0Iik7CisgICAgICAgIGV4cGVjdChuZXcgRGVjaW1hbEZvcm1hdCgiMEUwIiwgVVMpLCA0NTY3ODAwMCwgIjVFNyIpOworICAgICAgICBleHBlY3QobmV3IERlY2ltYWxGb3JtYXQoIjAwRTAiLCBVUyksIDQ1Njc4MDAwLCAiNDZFNiIpOworICAgICAgICBleHBlY3QobmV3IERlY2ltYWxGb3JtYXQoIjAwMEUwIiwgVVMpLCA0NTY3ODAwMCwgIjQ1N0U1Iik7CisgICAgICAgIC8qCisgICAgICAgIGV4cGVjdChuZXcgRGVjaW1hbEZvcm1hdCgiIyMjRTAiLCBVUywgc3RhdHVzKSwKKyAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IG5ldyBEb3VibGUoMC4wMDAwMTIzKSwgIjEyLjNFLTYiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERvdWJsZSgwLjAwMDEyMyksICIxMjNFLTYiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERvdWJsZSgwLjAwMTIzKSwgIjEuMjNFLTMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERvdWJsZSgwLjAxMjMpLCAiMTIuM0UtMyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgRG91YmxlKDAuMTIzKSwgIjEyM0UtMyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgRG91YmxlKDEuMjMpLCAiMS4yM0UwIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEb3VibGUoMTIuMyksICIxMi4zRTAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERvdWJsZSgxMjMpLCAiMTIzRTAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERvdWJsZSgxMjMwKSwgIjEuMjNFMyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAhCisgICAgICAgICEgVW5yb2xsIHRoaXMgdGVzdCBpbnRvIGluZGl2aWR1YWwgdGVzdHMgYmVsb3cuLi4KKyAgICAgICAgIQorICAgICAgICAqLworICAgICAgICBleHBlY3QobmV3IERlY2ltYWxGb3JtYXQoIiMjI0UwIiwgVVMpLCAwLjAwMDAxMjMsICIxMi4zRS02Iik7CisgICAgICAgIGV4cGVjdChuZXcgRGVjaW1hbEZvcm1hdCgiIyMjRTAiLCBVUyksIDAuMDAwMTIzLCAiMTIzRS02Iik7CisgICAgICAgIGV4cGVjdChuZXcgRGVjaW1hbEZvcm1hdCgiIyMjRTAiLCBVUyksIDAuMDAxMjMsICIxLjIzRS0zIik7CisgICAgICAgIGV4cGVjdChuZXcgRGVjaW1hbEZvcm1hdCgiIyMjRTAiLCBVUyksIDAuMDEyMywgIjEyLjNFLTMiKTsKKyAgICAgICAgZXhwZWN0KG5ldyBEZWNpbWFsRm9ybWF0KCIjIyNFMCIsIFVTKSwgMC4xMjMsICIxMjNFLTMiKTsKKyAgICAgICAgZXhwZWN0KG5ldyBEZWNpbWFsRm9ybWF0KCIjIyNFMCIsIFVTKSwgMS4yMywgIjEuMjNFMCIpOworICAgICAgICBleHBlY3QobmV3IERlY2ltYWxGb3JtYXQoIiMjI0UwIiwgVVMpLCAxMi4zLCAiMTIuM0UwIik7CisgICAgICAgIGV4cGVjdChuZXcgRGVjaW1hbEZvcm1hdCgiIyMjRTAiLCBVUyksIDEyMy4wLCAiMTIzRTAiKTsKKyAgICAgICAgZXhwZWN0KG5ldyBEZWNpbWFsRm9ybWF0KCIjIyNFMCIsIFVTKSwgMTIzMC4wLCAiMS4yM0UzIik7CisgICAgICAgIC8qCisgICAgICAgIGV4cGVjdChuZXcgRGVjaW1hbEZvcm1hdCgiMC4jRSswMCIsIFVTLCBzdGF0dXMpLAorICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsgbmV3IERvdWJsZSgwLjAwMDEyKSwgIjEuMkUtMDQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IExvbmcoMTIwMDApLCAgICAgIjEuMkUrMDQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgIQorICAgICAgICAhIFVucm9sbCB0aGlzIHRlc3QgaW50byBpbmRpdmlkdWFsIHRlc3RzIGJlbG93Li4uCisgICAgICAgICEKKyAgICAgICAgKi8KKyAgICAgICAgZXhwZWN0KG5ldyBEZWNpbWFsRm9ybWF0KCIwLiNFKzAwIiwgVVMpLCAwLjAwMDEyLCAiMS4yRS0wNCIpOworICAgICAgICBleHBlY3QobmV3IERlY2ltYWxGb3JtYXQoIjAuI0UrMDAiLCBVUyksIDEyMDAwLCAiMS4yRSswNCIpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBVcGdyYWRlIHRvIGFscGhhV29ya3MKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0UGFkKCkgeworICAgIAorICAgICAgICBEZWNpbWFsRm9ybWF0U3ltYm9scyBVUyA9IG5ldyBEZWNpbWFsRm9ybWF0U3ltYm9scyhMb2NhbGUuVVMpOworICAgICAgICBleHBlY3QobmV3IERlY2ltYWxGb3JtYXQoIipeIyMuIyMiLCBVUyksIDAsICJeXl5eMCIpOworICAgICAgICBleHBlY3QobmV3IERlY2ltYWxGb3JtYXQoIipeIyMuIyMiLCBVUyksIC0xLjMsICJeLTEuMyIpOworICAgICAgICBleHBlY3QoCisgICAgICAgICAgICBuZXcgRGVjaW1hbEZvcm1hdCgiIyMwLjAjIyMjRTAqXyBnLW0vc14yIiwgVVMpLCAKKyAgICAgICAgICAgIDAsIAorICAgICAgICAgICAgIjAuMEUwX19fX19fIGctbS9zXjIiKTsgCisgICAgICAgIGV4cGVjdCgKKyAgICAgICAgICAgIG5ldyBEZWNpbWFsRm9ybWF0KCIjIzAuMCMjIyNFMCpfIGctbS9zXjIiLCBVUyksIAorICAgICAgICAgICAgMS4wIC8gMywgCisgICAgICAgICAgICAiMzMzLjMzM0UtM18gZy1tL3NeMiIpOyAKKyAgICAgICAgZXhwZWN0KG5ldyBEZWNpbWFsRm9ybWF0KCIjIzAuMCMjIyMqXyBnLW0vc14yIiwgVVMpLCAwLCAiMC4wX19fX19fIGctbS9zXjIiKTsKKyAgICAgICAgZXhwZWN0KAorICAgICAgICAgICAgbmV3IERlY2ltYWxGb3JtYXQoIiMjMC4wIyMjIypfIGctbS9zXjIiLCBVUyksIAorICAgICAgICAgICAgMS4wIC8gMywgCisgICAgICAgICAgICAiMC4zMzMzM19fIGctbS9zXjIiKTsgCisgICAgCisgICAgICAgIC8vIFRlc3QgcGFkZGluZyBiZWZvcmUgYSBzaWduCisgICAgICAgIGZpbmFsIFN0cmluZyBmb3JtYXRTdHIgPSAiKngjLCMjIywjIyMsIyMwLjAjOyp4KCMjIywjIyMsIyMwLjAjKSI7CisgICAgICAgIGV4cGVjdChuZXcgRGVjaW1hbEZvcm1hdChmb3JtYXRTdHIsIFVTKSwgLTEwLCAieHh4eHh4eHh4eCgxMC4wKSIpOworICAgICAgICBleHBlY3QobmV3IERlY2ltYWxGb3JtYXQoZm9ybWF0U3RyLCBVUyksIC0xMDAwLCAieHh4eHh4eCgxLDAwMC4wKSIpOworICAgICAgICBleHBlY3QobmV3IERlY2ltYWxGb3JtYXQoZm9ybWF0U3RyLCBVUyksIC0xMDAwMDAwLCAieHh4KDEsMDAwLDAwMC4wKSIpOworICAgICAgICBleHBlY3QobmV3IERlY2ltYWxGb3JtYXQoZm9ybWF0U3RyLCBVUyksIC0xMDAuMzcsICJ4eHh4eHh4eCgxMDAuMzcpIik7CisgICAgICAgIGV4cGVjdChuZXcgRGVjaW1hbEZvcm1hdChmb3JtYXRTdHIsIFVTKSwgLTEwNDU2LjM3LCAieHh4eHgoMTAsNDU2LjM3KSIpOworICAgICAgICBleHBlY3QobmV3IERlY2ltYWxGb3JtYXQoZm9ybWF0U3RyLCBVUyksIC0xMTIwNDU2LjM3LCAieHgoMSwxMjAsNDU2LjM3KSIpOworICAgICAgICBleHBlY3QobmV3IERlY2ltYWxGb3JtYXQoZm9ybWF0U3RyLCBVUyksIC0xMTIwNDU2MDAuMzcsICIoMTEyLDA0NSw2MDAuMzcpIik7CisgICAgICAgIGV4cGVjdChuZXcgRGVjaW1hbEZvcm1hdChmb3JtYXRTdHIsIFVTKSwgLTEyNTIwNDU2MDAuMzcsICIoMSwyNTIsMDQ1LDYwMC4zNykiKTsKKyAgICAKKyAgICAgICAgZXhwZWN0KG5ldyBEZWNpbWFsRm9ybWF0KGZvcm1hdFN0ciwgVVMpLCAxMCwgInh4eHh4eHh4eHh4eDEwLjAiKTsKKyAgICAgICAgZXhwZWN0KG5ldyBEZWNpbWFsRm9ybWF0KGZvcm1hdFN0ciwgVVMpLCAxMDAwLCAieHh4eHh4eHh4MSwwMDAuMCIpOworICAgICAgICBleHBlY3QobmV3IERlY2ltYWxGb3JtYXQoZm9ybWF0U3RyLCBVUyksIDEwMDAwMDAsICJ4eHh4eDEsMDAwLDAwMC4wIik7CisgICAgICAgIGV4cGVjdChuZXcgRGVjaW1hbEZvcm1hdChmb3JtYXRTdHIsIFVTKSwgMTAwLjM3LCAieHh4eHh4eHh4eDEwMC4zNyIpOworICAgICAgICBleHBlY3QobmV3IERlY2ltYWxGb3JtYXQoZm9ybWF0U3RyLCBVUyksIDEwNDU2LjM3LCAieHh4eHh4eDEwLDQ1Ni4zNyIpOworICAgICAgICBleHBlY3QobmV3IERlY2ltYWxGb3JtYXQoZm9ybWF0U3RyLCBVUyksIDExMjA0NTYuMzcsICJ4eHh4MSwxMjAsNDU2LjM3Iik7CisgICAgICAgIGV4cGVjdChuZXcgRGVjaW1hbEZvcm1hdChmb3JtYXRTdHIsIFVTKSwgMTEyMDQ1NjAwLjM3LCAieHgxMTIsMDQ1LDYwMC4zNyIpOworICAgICAgICBleHBlY3QobmV3IERlY2ltYWxGb3JtYXQoZm9ybWF0U3RyLCBVUyksIDEwMjUyMDQ1NjAwLjM3LCAiMTAsMjUyLDA0NSw2MDAuMzciKTsKKyAgICAKKyAgICAgICAgLy8gVGVzdCBwYWRkaW5nIGJldHdlZW4gYSBzaWduIGFuZCBhIG51bWJlcgorICAgICAgICBmaW5hbCBTdHJpbmcgZm9ybWF0U3RyMiA9ICIjLCMjIywjIyMsIyMwLjAjKng7KCMjIywjIyMsIyMwLjAjKngpIjsKKyAgICAgICAgZXhwZWN0KG5ldyBEZWNpbWFsRm9ybWF0KGZvcm1hdFN0cjIsIFVTKSwgLTEwLCAiKDEwLjB4eHh4eHh4eHh4KSIpOworICAgICAgICBleHBlY3QobmV3IERlY2ltYWxGb3JtYXQoZm9ybWF0U3RyMiwgVVMpLCAtMTAwMCwgIigxLDAwMC4weHh4eHh4eCkiKTsKKyAgICAgICAgZXhwZWN0KG5ldyBEZWNpbWFsRm9ybWF0KGZvcm1hdFN0cjIsIFVTKSwgLTEwMDAwMDAsICIoMSwwMDAsMDAwLjB4eHgpIik7CisgICAgICAgIGV4cGVjdChuZXcgRGVjaW1hbEZvcm1hdChmb3JtYXRTdHIyLCBVUyksIC0xMDAuMzcsICIoMTAwLjM3eHh4eHh4eHgpIik7CisgICAgICAgIGV4cGVjdChuZXcgRGVjaW1hbEZvcm1hdChmb3JtYXRTdHIyLCBVUyksIC0xMDQ1Ni4zNywgIigxMCw0NTYuMzd4eHh4eCkiKTsKKyAgICAgICAgZXhwZWN0KG5ldyBEZWNpbWFsRm9ybWF0KGZvcm1hdFN0cjIsIFVTKSwgLTExMjA0NTYuMzcsICIoMSwxMjAsNDU2LjM3eHgpIik7CisgICAgICAgIGV4cGVjdChuZXcgRGVjaW1hbEZvcm1hdChmb3JtYXRTdHIyLCBVUyksIC0xMTIwNDU2MDAuMzcsICIoMTEyLDA0NSw2MDAuMzcpIik7CisgICAgICAgIGV4cGVjdChuZXcgRGVjaW1hbEZvcm1hdChmb3JtYXRTdHIyLCBVUyksIC0xMjUyMDQ1NjAwLjM3LCAiKDEsMjUyLDA0NSw2MDAuMzcpIik7IAorICAgIAorICAgICAgICBleHBlY3QobmV3IERlY2ltYWxGb3JtYXQoZm9ybWF0U3RyMiwgVVMpLCAxMCwgIjEwLjB4eHh4eHh4eHh4eHgiKTsKKyAgICAgICAgZXhwZWN0KG5ldyBEZWNpbWFsRm9ybWF0KGZvcm1hdFN0cjIsIFVTKSwgMTAwMCwgIjEsMDAwLjB4eHh4eHh4eHgiKTsKKyAgICAgICAgZXhwZWN0KG5ldyBEZWNpbWFsRm9ybWF0KGZvcm1hdFN0cjIsIFVTKSwgMTAwMDAwMCwgIjEsMDAwLDAwMC4weHh4eHgiKTsKKyAgICAgICAgZXhwZWN0KG5ldyBEZWNpbWFsRm9ybWF0KGZvcm1hdFN0cjIsIFVTKSwgMTAwLjM3LCAiMTAwLjM3eHh4eHh4eHh4eCIpOworICAgICAgICBleHBlY3QobmV3IERlY2ltYWxGb3JtYXQoZm9ybWF0U3RyMiwgVVMpLCAxMDQ1Ni4zNywgIjEwLDQ1Ni4zN3h4eHh4eHgiKTsKKyAgICAgICAgZXhwZWN0KG5ldyBEZWNpbWFsRm9ybWF0KGZvcm1hdFN0cjIsIFVTKSwgMTEyMDQ1Ni4zNywgIjEsMTIwLDQ1Ni4zN3h4eHgiKTsKKyAgICAgICAgZXhwZWN0KG5ldyBEZWNpbWFsRm9ybWF0KGZvcm1hdFN0cjIsIFVTKSwgMTEyMDQ1NjAwLjM3LCAiMTEyLDA0NSw2MDAuMzd4eCIpOworICAgICAgICBleHBlY3QobmV3IERlY2ltYWxGb3JtYXQoZm9ybWF0U3RyMiwgVVMpLCAxMDI1MjA0NTYwMC4zNywgIjEwLDI1MiwwNDUsNjAwLjM3Iik7CisgICAgCisgICAgICAgIC8vdGVzdGluZyB0aGUgc2V0UGFkQ2hhcmFjdGVyKFVuaWNvZGVTdHJpbmcpIGFuZCBnZXRQYWRDaGFyYWN0ZXJTdHJpbmcoKQorICAgICAgICBEZWNpbWFsRm9ybWF0IGZtdCA9IG5ldyBEZWNpbWFsRm9ybWF0KCIjIiwgVVMpOworICAgICAgICBjaGFyIHBhZFN0cmluZyA9ICdQJzsKKyAgICAgICAgZm10LnNldFBhZENoYXJhY3RlcihwYWRTdHJpbmcpOworICAgICAgICBleHBlY3RQYWQoZm10LCAiKlAjIy4jIyIsIERlY2ltYWxGb3JtYXQuUEFEX0JFRk9SRV9QUkVGSVgsIDUsIHBhZFN0cmluZyk7CisgICAgICAgIGZtdC5zZXRQYWRDaGFyYWN0ZXIoJ14nKTsKKyAgICAgICAgZXhwZWN0UGFkKGZtdCwgIipeIyIsIERlY2ltYWxGb3JtYXQuUEFEX0JFRk9SRV9QUkVGSVgsIDEsICdeJyk7CisgICAgICAgIC8vY29tbWVudGVkIHVudGlsbCBpbXBsZW1lbnRhdGlvbiBpcyBjb21wbGV0ZQorICAgICAgICAvKiAgZm10LnNldFBhZENoYXJhY3RlcigoVW5pY29kZVN0cmluZykiXl5eIik7CisgICAgICAgICAgZXhwZWN0UGFkKGZtdCwgIipeXl4jIiwgRGVjaW1hbEZvcm1hdC5rUGFkQmVmb3JlUHJlZml4LCAzLCAoVW5pY29kZVN0cmluZykiXl5eIik7CisgICAgICAgICAgcGFkU3RyaW5nLnJlbW92ZSgpOworICAgICAgICAgIHBhZFN0cmluZy5hcHBlbmQoKFVDaGFyKTB4MDA2MSk7CisgICAgICAgICAgcGFkU3RyaW5nLmFwcGVuZCgoVUNoYXIpMHgwMzAyKTsKKyAgICAgICAgICBmbXQuc2V0UGFkQ2hhcmFjdGVyKHBhZFN0cmluZyk7CisgICAgICAgICAgVUNoYXIgcGF0dGVybkNoYXJzW109ezB4MDAyYSwgMHgwMDYxLCAweDAzMDIsIDB4MDA2MSwgMHgwMzAyLCAweDAwMjMsIDB4MDAwMH07CisgICAgICAgICAgVW5pY29kZVN0cmluZyBwYXR0ZXJuKHBhdHRlcm5DaGFycyk7CisgICAgICAgICAgZXhwZWN0UGFkKGZtdCwgcGF0dGVybiAsIERlY2ltYWxGb3JtYXQua1BhZEJlZm9yZVByZWZpeCwgNCwgcGFkU3RyaW5nKTsKKyAgICAgICAgICAqLworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBVcGdyYWRlIHRvIGFscGhhV29ya3MKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0UGF0dGVybnMyKCkgeworICAgICAgICBEZWNpbWFsRm9ybWF0U3ltYm9scyBVUyA9IG5ldyBEZWNpbWFsRm9ybWF0U3ltYm9scyhMb2NhbGUuVVMpOworICAgICAgICBEZWNpbWFsRm9ybWF0IGZtdCA9IG5ldyBEZWNpbWFsRm9ybWF0KCIjIiwgVVMpOworICAgIAorICAgICAgICBjaGFyIGhhdCA9IDB4MDA1RTsgLypeKi8KKyAgICAKKyAgICAgICAgZXhwZWN0UGFkKGZtdCwgIipeIyIsIERlY2ltYWxGb3JtYXQuUEFEX0JFRk9SRV9QUkVGSVgsIDEsIGhhdCk7CisgICAgICAgIGV4cGVjdFBhZChmbXQsICIkKl4jIiwgRGVjaW1hbEZvcm1hdC5QQURfQUZURVJfUFJFRklYLCAyLCBoYXQpOworICAgICAgICBleHBlY3RQYWQoZm10LCAiIypeIiwgRGVjaW1hbEZvcm1hdC5QQURfQkVGT1JFX1NVRkZJWCwgMSwgaGF0KTsKKyAgICAgICAgZXhwZWN0UGFkKGZtdCwgIiMkKl4iLCBEZWNpbWFsRm9ybWF0LlBBRF9BRlRFUl9TVUZGSVgsIDIsIGhhdCk7CisgICAgICAgIGV4cGVjdFBhZChmbXQsICIkKl4kIyIsIC0xKTsKKyAgICAgICAgZXhwZWN0UGFkKGZtdCwgIiMkKl4kIiwgLTEpOworICAgICAgICBleHBlY3RQYWQoZm10LCAiJ3ByZScjLCMjMCp4J3Bvc3QnIiwgRGVjaW1hbEZvcm1hdC5QQURfQkVGT1JFX1NVRkZJWCwgMTIsIChjaGFyKSAweDAwNzggLyp4Ki8pOyAKKyAgICAgICAgZXhwZWN0UGFkKGZtdCwgIicnIzAqeCIsIERlY2ltYWxGb3JtYXQuUEFEX0JFRk9SRV9TVUZGSVgsIDMsIChjaGFyKSAweDAwNzggLyp4Ki8pOyAKKyAgICAgICAgZXhwZWN0UGFkKGZtdCwgIidJJydsbCcqYSMjIy4jIyIsIERlY2ltYWxGb3JtYXQuUEFEX0FGVEVSX1BSRUZJWCwgMTAsIChjaGFyKSAweDAwNjEgLyphKi8pOyAKKyAgICAKKyAgICAgICAgZm10LmFwcGx5UGF0dGVybigiQUEjLCMjMC4wMFpaIik7CisgICAgICAgIGZtdC5zZXRQYWRDaGFyYWN0ZXIoaGF0KTsKKyAgICAKKyAgICAgICAgZm10LnNldEZvcm1hdFdpZHRoKDEwKTsKKyAgICAKKyAgICAgICAgZm10LnNldFBhZFBvc2l0aW9uKERlY2ltYWxGb3JtYXQuUEFEX0JFRk9SRV9QUkVGSVgpOworICAgICAgICBleHBlY3RQYXQoZm10LCAiKl5BQSMsIyMwLjAwWloiKTsKKyAgICAKKyAgICAgICAgZm10LnNldFBhZFBvc2l0aW9uKERlY2ltYWxGb3JtYXQuUEFEX0JFRk9SRV9TVUZGSVgpOworICAgICAgICBleHBlY3RQYXQoZm10LCAiQUEjLCMjMC4wMCpeWloiKTsKKyAgICAKKyAgICAgICAgZm10LnNldFBhZFBvc2l0aW9uKERlY2ltYWxGb3JtYXQuUEFEX0FGVEVSX1NVRkZJWCk7CisgICAgICAgIGV4cGVjdFBhdChmbXQsICJBQSMsIyMwLjAwWloqXiIpOworICAgIAorICAgICAgICAvLyAgICAgICAgICAgIDEyICAzNDU2Nzg5MDEyCisgICAgICAgIFN0cmluZyBleHAgPSAiQUEqXiMsIyMwLjAwWloiOworICAgICAgICBmbXQuc2V0Rm9ybWF0V2lkdGgoMTIpOworICAgICAgICBmbXQuc2V0UGFkUG9zaXRpb24oRGVjaW1hbEZvcm1hdC5QQURfQUZURVJfUFJFRklYKTsKKyAgICAgICAgZXhwZWN0UGF0KGZtdCwgZXhwKTsKKyAgICAKKyAgICAgICAgZm10LnNldEZvcm1hdFdpZHRoKDEzKTsKKyAgICAgICAgLy8gICAgICAgICAgICAgIDEyICAzNDU2Nzg5MDEyMworICAgICAgICBleHBlY3RQYXQoZm10LCAiQUEqXiMjLCMjMC4wMFpaIik7CisgICAgCisgICAgICAgIGZtdC5zZXRGb3JtYXRXaWR0aCgxNCk7CisgICAgICAgIC8vICAgICAgICAgICAgICAxMiAgMzQ1Njc4OTAxMjM0CisgICAgICAgIGV4cGVjdFBhdChmbXQsICJBQSpeIyMjLCMjMC4wMFpaIik7CisgICAgCisgICAgICAgIGZtdC5zZXRGb3JtYXRXaWR0aCgxNSk7CisgICAgICAgIC8vICAgICAgICAgICAgICAxMiAgMzQ1Njc4OTAxMjM0NQorICAgICAgICBleHBlY3RQYXQoZm10LCAiQUEqXiMjIyMsIyMwLjAwWloiKTsgLy8gVGhpcyBpcyB0aGUgaW50ZXJlc3RpbmcgY2FzZQorICAgIAorICAgICAgICBmbXQuc2V0Rm9ybWF0V2lkdGgoMTYpOworICAgICAgICAvLyAgICAgICAgICAgICAgMTIgIDM0NTY3ODkwMTIzNDU2CisgICAgICAgIGV4cGVjdFBhdChmbXQsICJBQSpeIywjIyMsIyMwLjAwWloiKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgZXhwZWN0UGFkKERlY2ltYWxGb3JtYXQgZm10LCBTdHJpbmcgcGF0LCBpbnQgcG9zKSB7CisgICAgICAgIGV4cGVjdFBhZChmbXQsIHBhdCwgcG9zLCAwLCAoY2hhcikwKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgZXhwZWN0UGFkKERlY2ltYWxGb3JtYXQgZm10LCBmaW5hbCBTdHJpbmcgcGF0LCBpbnQgcG9zLCBpbnQgd2lkdGgsIGZpbmFsIGNoYXIgcGFkKSB7CisgICAgICAgIGludCBhcG9zID0gMCwgYXdpZHRoID0gMDsKKyAgICAgICAgY2hhciBhcGFkU3RyOworICAgICAgICB0cnkgeworICAgICAgICAgICAgZm10LmFwcGx5UGF0dGVybihwYXQpOworICAgICAgICAgICAgYXBvcyA9IGZtdC5nZXRQYWRQb3NpdGlvbigpOworICAgICAgICAgICAgYXdpZHRoID0gZm10LmdldEZvcm1hdFdpZHRoKCk7CisgICAgICAgICAgICBhcGFkU3RyID0gZm10LmdldFBhZENoYXJhY3RlcigpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgYXBvcyA9IC0xOworICAgICAgICAgICAgYXdpZHRoID0gd2lkdGg7CisgICAgICAgICAgICBhcGFkU3RyID0gcGFkOworICAgICAgICB9CisgICAgCisgICAgICAgIGlmIChhcG9zID09IHBvcyAmJiBhd2lkdGggPT0gd2lkdGggJiYgYXBhZFN0ciA9PSBwYWQpIHsKKyAgICAgICAgICAgIGxvZ2xuKCJPayAgIFwiIiArIHBhdCArICJcIiBwb3M9IgorICAgICAgICAgICAgICAgICAgICArIGFwb3MgKyAoKHBvcyA9PSAtMSkgPyAiIiA6ICIgd2lkdGg9IiArIGF3aWR0aCArICIgcGFkPSIgKyBhcGFkU3RyKSk7IAorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZXJybG4oIkZBSUwgXCIiICsgcGF0ICsgIlwiIHBvcz0iICsgYXBvcyArICIgd2lkdGg9IgorICAgICAgICAgICAgICAgICAgICArIGF3aWR0aCArICIgcGFkPSIgKyBhcGFkU3RyICsgIiwgZXhwZWN0ZWQgIgorICAgICAgICAgICAgICAgICAgICArIHBvcyArICIgIiArIHdpZHRoICsgIiAiICsgcGFkKTsgCisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBleHBlY3RQYXQoRGVjaW1hbEZvcm1hdCBmbXQsIGZpbmFsIFN0cmluZyBleHApIHsKKyAgICAgICAgU3RyaW5nIHBhdCA9IGZtdC50b1BhdHRlcm4oKTsKKyAgICAgICAgaWYgKHBhdC5lcXVhbHMoZXhwKSkgeworICAgICAgICAgICAgbG9nbG4oIk9rICAgXCIiICsgcGF0ICsgIlwiIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTCBcIiIgKyBwYXQgKyAiXCIsIGV4cGVjdGVkIFwiIiArIGV4cCArICJcIiIpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2Zvcm1hdC9OdW1iZXJSZWdyZXNzaW9uLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvZm9ybWF0L051bWJlclJlZ3Jlc3Npb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5iNzExYTYxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2Zvcm1hdC9OdW1iZXJSZWdyZXNzaW9uLmphdmEKQEAgLTAsMCArMSwxODAyIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9mb3JtYXQvTnVtYmVyUmVncmVzc2lvbi5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzA5LzE0IDIxOjM2OjI4ICQgCisgKiAkUmV2aXNpb246IDEuMTIgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqLworCisvKiogCisgKiBQb3J0IEZyb206ICAgSkRLIDEuNGIxIDogamF2YS50ZXh0LkZvcm1hdC5OdW1iZXJSZWdyZXNzaW9uCisgKiBTb3VyY2UgRmlsZTogamF2YS90ZXh0L2Zvcm1hdC9OdW1iZXJSZWdyZXNzaW9uLmphdmEKKyAqKi8KKyAKKy8qKgorICogQHRlc3QgMS40OSAwMS8wNS8yMQorICogQGJ1ZyA0MDUyMjIzIDQwNTk4NzAgNDA2MTMwMiA0MDYyNDg2IDQwNjY2NDYgNDA2ODY5MyA0MDcwNzk4IDQwNzEwMDUgNDA3MTAxNAorICogNDA3MTQ5MiA0MDcxODU5IDQwNzQ0NTQgNDA3NDYyMCA0MDc1NzEzIDQwODMwMTggNDA4NjU3NSA0MDg3MjQ0IDQwODcyNDUKKyAqIDQwODcyNTEgNDA4NzUzNSA0MDg4MTYxIDQwODg1MDMgNDA5MDQ4OSA0MDkwNTA0IDQwOTI0ODAgNDA5MjU2MSA0MDk1NzEzCisgKiA0MDk4NzQxIDQwOTk0MDQgNDEwMTQ4MSA0MTA2NjU4IDQxMDY2NjIgNDEwNjY2NCA0MTA4NzM4IDQxMTA5MzYgNDEyMjg0MAorICogNDEyNTg4NSA0MTM0MDM0IDQxMzQzMDAgNDE0MDAwOSA0MTQxNzUwIDQxNDU0NTcgNDE0NzI5NSA0MTQ3NzA2IDQxNjIxOTgKKyAqIDQxNjI4NTIgNDE2NzQ5NCA0MTcwNzk4IDQxNzYxMTQgNDE3OTgxOCA0MTg1NzYxIDQyMTIwNzIgNDIxMjA3MyA0MjE2NzQyCisgKiA0MjE3NjYxIDQyNDMwMTEgNDI0MzEwOCA0MzMwMzc3IDQyMzM4NDAKKyAqIEBzdW1tYXJ5IFJlZ3Jlc3Npb24gdGVzdHMgZm9yIE51bWJlckZvcm1hdCBhbmQgYXNzb2NpYXRlZCBjbGFzc2VzCisgKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAgIENvcHlyaWdodCAoQykgMTk5Ni0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqICAgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3QuZm9ybWF0OworCitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5JQ1VMb2NhbGVEYXRhOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuKjsKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLio7CisKK2ltcG9ydCBqYXZhLmlvLio7CitpbXBvcnQgamF2YS5tYXRoLkJpZ0RlY2ltYWw7CitpbXBvcnQgamF2YS5tYXRoLkJpZ0ludGVnZXI7CitpbXBvcnQgamF2YS50ZXh0LkZpZWxkUG9zaXRpb247CitpbXBvcnQgamF2YS50ZXh0LlBhcnNlRXhjZXB0aW9uOworaW1wb3J0IGphdmEudGV4dC5QYXJzZVBvc2l0aW9uOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CitpbXBvcnQgamF2YS51dGlsLlJlc291cmNlQnVuZGxlOworCitwdWJsaWMgY2xhc3MgTnVtYmVyUmVncmVzc2lvbiBleHRlbmRzIGNvbS5pYm0uaWN1LmRldi50ZXN0LlRlc3RGbXdrIHsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBuZXcgTnVtYmVyUmVncmVzc2lvbigpLnJ1bihhcmdzKTsKKyAgICB9CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBjaGFyIEVVUk8gPSAnXHUyMGFjJzsKKworICAgIC8qKgorICAgICAqIE51bWJlckZvcm1hdC5lcXVhbHMgY29tcGFyaW5nIHdpdGggbnVsbCBzaG91bGQgYWx3YXlzIHJldHVybiBmYWxzZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDA3NTcxMygpeworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBNeU51bWJlckZvcm1hdFRlc3QgdG1wID0gbmV3IE15TnVtYmVyRm9ybWF0VGVzdCgpOworICAgICAgICAgICAgaWYgKCF0bXAuZXF1YWxzKG51bGwpKQorICAgICAgICAgICAgICAgIGxvZ2xuKCJOdW1iZXJGb3JtYXQuZXF1YWxzIHBhc3NlZCIpOworICAgICAgICB9IGNhdGNoIChOdWxsUG9pbnRlckV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiKG5ldyBNeU51bWJlckZvcm1hdFRlc3QoKSkuZXF1YWxzKG51bGwpIHRocm93cyB1bmV4cGVjdGVkIGV4Y2VwdGlvbiIpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogTnVtYmVyRm9ybWF0LmVxdWFscyBjb21wYXJpbmcgdHdvIG9iaiBlcXVhbCBldmVuIHRoZSBzZXRHcm91cGluZ1VzZWQKKyAgICAgKiBmbGFnIGlzIGRpZmZlcmVudC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDA3NDYyMCgpIHsKKworICAgICAgICBNeU51bWJlckZvcm1hdFRlc3QgbmYxID0gbmV3IE15TnVtYmVyRm9ybWF0VGVzdCgpOworICAgICAgICBNeU51bWJlckZvcm1hdFRlc3QgbmYyID0gbmV3IE15TnVtYmVyRm9ybWF0VGVzdCgpOworCisgICAgICAgIG5mMS5zZXRHcm91cGluZ1VzZWQoZmFsc2UpOworICAgICAgICBuZjIuc2V0R3JvdXBpbmdVc2VkKHRydWUpOworCisgICAgICAgIGlmIChuZjEuZXF1YWxzKG5mMikpIGVycmxuKCJUZXN0IGZvciBidWcgNDA3NDYyMCBmYWlsZWQiKTsKKyAgICAgICAgZWxzZSBsb2dsbigiVGVzdCBmb3IgYnVnIDQwNzQ2MjAgcGFzc2VkLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisKKyAgICAvKioKKyAgICAgKiBEZWNpbWFsRm9ybWF0LmZvcm1hdCgpIGluY29ycmVjdGx5IHVzZXMgbWF4RnJhY3Rpb25EaWdpdHMgc2V0dGluZy4KKyAgICAgKi8KKworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MDg4MTYxICgpeworICAgICAgICBEZWNpbWFsRm9ybWF0IGRmID0gbmV3IERlY2ltYWxGb3JtYXQoKTsKKyAgICAgICAgZG91YmxlIGQgPSAxMDA7CisgICAgICAgIGRmLnNldE1pbmltdW1GcmFjdGlvbkRpZ2l0cygwKTsKKyAgICAgICAgZGYuc2V0TWF4aW11bUZyYWN0aW9uRGlnaXRzKDE2KTsKKyAgICAgICAgU3RyaW5nQnVmZmVyIHNCdWYxID0gbmV3IFN0cmluZ0J1ZmZlcigiIik7CisgICAgICAgIEZpZWxkUG9zaXRpb24gZnAxID0gbmV3IEZpZWxkUG9zaXRpb24oMCk7CisgICAgICAgIGxvZ2xuKCJkID0gIiArIGQpOworICAgICAgICBsb2dsbigibWF4RnJhY3Rpb25EaWdpdHMgPSAiICsgZGYuZ2V0TWF4aW11bUZyYWN0aW9uRGlnaXRzKCkpOworICAgICAgICBsb2dsbigiIGZvcm1hdChkKSA9ICciICsgZGYuZm9ybWF0KGQsIHNCdWYxLCBmcDEpICsgIiciKTsKKyAgICAgICAgZGYuc2V0TWF4aW11bUZyYWN0aW9uRGlnaXRzKDE3KTsKKyAgICAgICAgU3RyaW5nQnVmZmVyIHNCdWYyID0gbmV3IFN0cmluZ0J1ZmZlcigiIik7CisgICAgICAgIEZpZWxkUG9zaXRpb24gZnAyID0gbmV3IEZpZWxkUG9zaXRpb24oMCk7CisgICAgICAgIGxvZ2xuKCJtYXhGcmFjdGlvbkRpZ2l0cyA9ICIgKyBkZi5nZXRNYXhpbXVtRnJhY3Rpb25EaWdpdHMoKSk7CisgICAgICAgIGRmLmZvcm1hdChkLCBzQnVmMiwgZnAyKTsKKyAgICAgICAgaWYgKCFzQnVmMi50b1N0cmluZygpLmVxdWFscygiMTAwIikpCisgICAgICAgICAgICBlcnJsbigiIGZvcm1hdChkKSA9ICciICsgc0J1ZjIgKyAiJyIpOworICAgIH0KKyAgICAvKioKKyAgICAgKiBEZWNpbWFsRm9ybWF0U3ltYm9scyBzaG91bGQgYmUgY2xvbmVkIGluIHRoZSBjdG9yIERlY2ltYWxGb3JtYXQuCisgICAgICogRGVjaW1hbEZvcm1hdChTdHJpbmcsIERlY2ltYWxGb3JtYXRTeW1ib2xzKS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDA4NzI0NSAoKXsKKyAgICAgICAgRGVjaW1hbEZvcm1hdFN5bWJvbHMgc3ltYm9scyA9IG5ldyBEZWNpbWFsRm9ybWF0U3ltYm9scygpOworICAgICAgICBEZWNpbWFsRm9ybWF0IGRmID0gbmV3IERlY2ltYWxGb3JtYXQoIiMsIyMwLjAiLCBzeW1ib2xzKTsKKyAgICAgICAgbG9uZyBuID0gMTIzOworICAgICAgICBTdHJpbmdCdWZmZXIgYnVmMSA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZjIgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIGxvZ2xuKCJmb3JtYXQoIiArIG4gKyAiKSA9ICIgKworICAgICAgICBkZi5mb3JtYXQobiwgYnVmMSwgbmV3IEZpZWxkUG9zaXRpb24oMCkpKTsKKyAgICAgICAgc3ltYm9scy5zZXREZWNpbWFsU2VwYXJhdG9yKCdwJyk7IC8vIGNoYW5nZSB2YWx1ZSBvZiBmaWVsZAorICAgICAgICBsb2dsbigiZm9ybWF0KCIgKyBuICsgIikgPSAiICsKKyAgICAgICAgZGYuZm9ybWF0KG4sIGJ1ZjIsIG5ldyBGaWVsZFBvc2l0aW9uKDApKSk7CisgICAgICAgIGlmICghYnVmMS50b1N0cmluZygpLmVxdWFscyhidWYyLnRvU3RyaW5nKCkpKQorICAgICAgICAgICAgZXJybG4oIlRlc3QgZm9yIGJ1ZyA0MDg3MjQ1IGZhaWxlZCIpOworICAgIH0KKyAgICAvKioKKyAgICAgKiBEZWNpbWFsRm9ybWF0LmZvcm1hdCgpIGluY29ycmVjdGx5IGZvcm1hdHMgMC4wCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQwODc1MzUgKCkKKyAgICB7CisgICAgICAgIERlY2ltYWxGb3JtYXQgZGYgPSBuZXcgRGVjaW1hbEZvcm1hdCgpOworICAgICAgICBkZi5zZXRNaW5pbXVtSW50ZWdlckRpZ2l0cygwKTsKKworICAgICAgICBkb3VibGUgbiA9IDA7CisgICAgICAgIFN0cmluZyBidWZmZXIgPSBuZXcgU3RyaW5nKCk7CisgICAgICAgIGJ1ZmZlciA9IGRmLmZvcm1hdChuKTsKKyAgICAgICAgaWYgKGJ1ZmZlci5sZW5ndGgoKSA9PSAwKQorICAgICAgICAgICAgZXJybG4obiArICI6ICciICsgYnVmZmVyICsgIiciKTsKKyAgICAgICAgbiA9IDAuMTsKKyAgICAgICAgYnVmZmVyID0gZGYuZm9ybWF0KG4pOworICAgICAgICBpZiAoYnVmZmVyLmxlbmd0aCgpID09IDApCisgICAgICAgICAgICBlcnJsbihuICsgIjogJyIgKyBidWZmZXIgKyAiJyIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIERlY2ltYWxGb3JtYXQuZm9ybWF0IGZhaWxzIHdoZW4gZ3JvdXBpbmdTaXplIGlzIHNldCB0byAwLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MDg4NTAzICgpeworICAgICAgICBEZWNpbWFsRm9ybWF0IGRmID0gbmV3IERlY2ltYWxGb3JtYXQoKTsKKyAgICAgICAgZGYuc2V0R3JvdXBpbmdTaXplKDApOworICAgICAgICBTdHJpbmdCdWZmZXIgc0J1ZiA9IG5ldyBTdHJpbmdCdWZmZXIoIiIpOworICAgICAgICBGaWVsZFBvc2l0aW9uIGZwID0gbmV3IEZpZWxkUG9zaXRpb24oMCk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBsb2dsbihkZi5mb3JtYXQoMTIzLCBzQnVmLCBmcCkudG9TdHJpbmcoKSk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBmb28pIHsKKyAgICAgICAgICAgIGVycmxuKCJUZXN0IGZvciBidWcgNDA4ODUwMyBmYWlsZWQuIik7CisgICAgICAgIH0KKworICAgIH0KKyAgICAvKioKKyAgICAgKiBOdW1iZXJGb3JtYXQuZ2V0Q3VycmVuY3lJbnN0YW5jZSBpcyB3cm9uZy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDA2NjY0NiAoKSB7CisgICAgICAgIC8vZmxvYXQgcmV0dXJuZmxvYXQgPSAwLjBmOyAvL1RoZSB2YXJpYWJsZSBpcyBuZXZlciB1c2VkCisgICAgICAgIGFzc2lnbkZsb2F0VmFsdWUoMi4wNGYpOworICAgICAgICBhc3NpZ25GbG9hdFZhbHVlKDIuMDNmKTsKKyAgICAgICAgYXNzaWduRmxvYXRWYWx1ZSgyLjAyZik7CisgICAgICAgIGFzc2lnbkZsb2F0VmFsdWUoMC4wZik7CisgICAgfQorCisgICAgcHVibGljIGZsb2F0IGFzc2lnbkZsb2F0VmFsdWUoZmxvYXQgcmV0dXJuZmxvYXQpCisgICAgeworICAgICAgICBsb2dsbigiIFZBTFVFICIgKyByZXR1cm5mbG9hdCk7CisgICAgICAgIE51bWJlckZvcm1hdCBuZmNvbW1vbiA9ICBOdW1iZXJGb3JtYXQuZ2V0Q3VycmVuY3lJbnN0YW5jZShMb2NhbGUuVVMpOworICAgICAgICBuZmNvbW1vbi5zZXRHcm91cGluZ1VzZWQoZmFsc2UpOworCisgICAgICAgIFN0cmluZyBzdHJpbmdWYWx1ZSA9IG5mY29tbW9uLmZvcm1hdChyZXR1cm5mbG9hdCkuc3Vic3RyaW5nKDEpOworICAgICAgICBpZiAoRmxvYXQudmFsdWVPZihzdHJpbmdWYWx1ZSkuZmxvYXRWYWx1ZSgpICE9IHJldHVybmZsb2F0KQorICAgICAgICAgICAgZXJybG4oIiBESVNQTEFZVkFMVUUgIiArIHN0cmluZ1ZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHJldHVybmZsb2F0OworICAgIH0gLy8gRW5kIE9mIGFzc2lnbkZsb2F0VmFsdWUoKQorCisgICAgLyoqCisgICAgICogRGVjaW1hbEZvcm1hdCB0aHJvd3MgZXhjZXB0aW9uIHdoZW4gcGFyc2luZyAiMCIKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDA1OTg3MCgpIHsKKyAgICAgICAgRGVjaW1hbEZvcm1hdCBmb3JtYXQgPSBuZXcgRGVjaW1hbEZvcm1hdCgiMDAiKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGxvZ2xuKGZvcm1hdC5wYXJzZSgiMCIpLnRvU3RyaW5nKCkpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeyBlcnJsbigiVGVzdCBmb3IgYnVnIDQwNTk4NzAgZmFpbGVkIDogIiArIGUpOyB9CisgICAgfQorICAgIC8qKgorICAgICAqIERlY2ltYWxGb3JtYXRTeW1ib2wuZXF1YWxzIHNob3VsZCBhbHdheXMgcmV0dXJuIGZhbHNlIHdoZW4KKyAgICAgKiBjb21wYXJpbmcgd2l0aCBudWxsLgorICAgICAqLworCisgICAgcHVibGljIHZvaWQgVGVzdDQwODMwMTggKCl7CisgICAgICAgIERlY2ltYWxGb3JtYXRTeW1ib2xzIGRmcyA9IG5ldyBEZWNpbWFsRm9ybWF0U3ltYm9scygpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgaWYgKCFkZnMuZXF1YWxzKG51bGwpKQorICAgICAgICAgICAgICAgIGxvZ2xuKCJUZXN0IFBhc3NlZCEiKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGZvbykgeworICAgICAgICAgICAgZXJybG4oIlRlc3QgZm9yIGJ1ZyA0MDgzMDE4IGZhaWxlZCA9PiBNZXNzYWdlIDogIiArIGZvby5nZXRNZXNzYWdlKCkpOworICAgICAgICB9CisgICAgfQorICAgIC8qKgorICAgICAqIERlY2ltYWxGb3JtYXQgZG9lcyBub3Qgcm91bmQgdXAgY29ycmVjdGx5LgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MDcxNDkyICgpeworICAgICAgICBkb3VibGUgeCA9IDAuMDAxNTk5OTk7CisgICAgICAgIE51bWJlckZvcm1hdCBuZiA9IE51bWJlckZvcm1hdC5nZXRJbnN0YW5jZSgpOworICAgICAgICBuZi5zZXRNYXhpbXVtRnJhY3Rpb25EaWdpdHMoNCk7CisgICAgICAgIFN0cmluZyBvdXQgPSBuZi5mb3JtYXQoeCk7CisgICAgICAgIGxvZ2xuKCIwLjAwMTU5OTk5IGZvcm1hdHMgd2l0aCA0IGZyYWN0aW9uYWwgZGlnaXRzIHRvICIgKyBvdXQpOworICAgICAgICBTdHJpbmcgZXhwZWN0ZWQgPSAiMC4wMDE2IjsKKyAgICAgICAgaWYgKCFvdXQuZXF1YWxzKGV4cGVjdGVkKSkKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBFeHBlY3RlZCAiICsgZXhwZWN0ZWQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEEgc3BhY2UgYXMgYSBncm91cCBzZXBhcmF0b3IgZm9yIGxvY2FsaXplZCBwYXR0ZXJuIGNhdXNlcworICAgICAqIHdyb25nIGZvcm1hdC4gIFdvcmtBcm91bmQgOiB1c2Ugbm9uLWJyZWFraW5nIHNwYWNlLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MDg2NTc1KCkgeworCisgICAgICAgIE51bWJlckZvcm1hdCBuZiA9IE51bWJlckZvcm1hdC5nZXRJbnN0YW5jZShMb2NhbGUuRlJBTkNFKTsKKyAgICAgICAgbG9nbG4oIm5mIHRvUGF0dGVybjE6ICIgKyAoKERlY2ltYWxGb3JtYXQpbmYpLnRvUGF0dGVybigpKTsKKyAgICAgICAgbG9nbG4oIm5mIHRvTG9jUGF0dGVybjE6ICIgKyAoKERlY2ltYWxGb3JtYXQpbmYpLnRvTG9jYWxpemVkUGF0dGVybigpKTsKKworICAgICAgICAvLyBObyBncm91cCBzZXBhcmF0b3IKKyAgICAgICAgbG9nbG4oIi4uLmFwcGx5TG9jYWxpemVkUGF0dGVybiAjIyMsMDA7KCMjIywwMCkgIik7CisgICAgICAgICgoRGVjaW1hbEZvcm1hdCluZikuYXBwbHlMb2NhbGl6ZWRQYXR0ZXJuKCIjIyMsMDA7KCMjIywwMCkiKTsKKyAgICAgICAgbG9nbG4oIm5mIHRvUGF0dGVybjI6ICIgKyAoKERlY2ltYWxGb3JtYXQpbmYpLnRvUGF0dGVybigpKTsKKyAgICAgICAgbG9nbG4oIm5mIHRvTG9jUGF0dGVybjI6ICIgKyAoKERlY2ltYWxGb3JtYXQpbmYpLnRvTG9jYWxpemVkUGF0dGVybigpKTsKKworICAgICAgICBsb2dsbigibmY6ICIgKyBuZi5mb3JtYXQoMTIzNCkpOyAvLyAxMjM0LDAwCisgICAgICAgIGxvZ2xuKCJuZjogIiArIG5mLmZvcm1hdCgtMTIzNCkpOyAvLyAoMTIzNCwwMCkKKworICAgICAgICAvLyBTcGFjZSBhcyBncm91cCBzZXBhcmF0b3IKKworICAgICAgICBsb2dsbigiLi4uYXBwbHlMb2NhbGl6ZWRQYXR0ZXJuICMgIyMjLDAwOygjICMjIywwMCkgIik7CisgICAgICAgICgoRGVjaW1hbEZvcm1hdCluZikuYXBwbHlMb2NhbGl6ZWRQYXR0ZXJuKCIjXHUwMGEwIyMjLDAwOygjXHUwMGEwIyMjLDAwKSIpOworICAgICAgICBsb2dsbigibmYgdG9QYXR0ZXJuMjogIiArICgoRGVjaW1hbEZvcm1hdCluZikudG9QYXR0ZXJuKCkpOworICAgICAgICBsb2dsbigibmYgdG9Mb2NQYXR0ZXJuMjogIiArICgoRGVjaW1hbEZvcm1hdCluZikudG9Mb2NhbGl6ZWRQYXR0ZXJuKCkpOworICAgICAgICBTdHJpbmcgYnVmZmVyID0gbmYuZm9ybWF0KDEyMzQpOworICAgICAgICBpZiAoIWJ1ZmZlci5lcXVhbHMoIjFcdTAwYTAyMzQsMDAiKSkKKyAgICAgICAgICAgIGVycmxuKCJuZiA6ICIgKyBidWZmZXIpOyAvLyBFeHBlY3QgMSAyMzQsMDAKKyAgICAgICAgYnVmZmVyID0gbmYuZm9ybWF0KC0xMjM0KTsKKyAgICAgICAgaWYgKCFidWZmZXIuZXF1YWxzKCIoMVx1MDBhMDIzNCwwMCkiKSkKKyAgICAgICAgICAgIGVycmxuKCJuZiA6ICIgKyBidWZmZXIpOyAvLyBFeHBlY3QgKDEgMjM0LDAwKQorCisgICAgICAgIC8vIEVycm9uZW91c2x5IHByaW50czoKKyAgICAgICAgLy8gMTIzNCwwMCAsCisgICAgICAgIC8vICgxMjM0LDAwICwpCisKKyAgICB9CisgICAgLyoqCisgICAgICogRGVjaW1hbEZvcm1hdC5wYXJzZSByZXR1cm5zIHdyb25nIHZhbHVlCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQwNjg2OTMoKQorICAgIHsKKyAgICAgICAgbG9nbG4oIi0tLS0tIFRlc3QgQXBwbGljYXRpb24gLS0tLS0iKTsKKyAgICAgICAgUGFyc2VQb3NpdGlvbiBwb3M7CisgICAgICAgIERlY2ltYWxGb3JtYXQgZGYgPSBuZXcgRGVjaW1hbEZvcm1hdCgpOworICAgICAgICBOdW1iZXIgZCA9IGRmLnBhcnNlKCIxMjMuNTU0NTYiLCBwb3M9bmV3IFBhcnNlUG9zaXRpb24oMCkpOworICAgICAgICBpZiAoIWQudG9TdHJpbmcoKS5lcXVhbHMoIjEyMy41NTQ1NiIpKSB7CisgICAgICAgICAgICBlcnJsbigiUmVzdWx0IC0+ICIgKyBkLmRvdWJsZVZhbHVlKCkpOworICAgICAgICB9CisgICAgfQorCisgICAgLyogYnVncyA0MDY5NzU0LCA0MDY3ODc4CisgICAgICogbnVsbCBwb2ludGVyIHRocm93biB3aGVuIGFjY2Vzc2luZyBhIGRlc2VyaWFsaXplZCBEZWNpbWFsRm9ybWF0CisgICAgICogb2JqZWN0LgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MDY5NzU0KCkgdGhyb3dzIEV4Y2VwdGlvbgorICAgIHsKKyAgICAgICAgLy90cnkgeworICAgICAgICAgICAgQnl0ZUFycmF5T3V0cHV0U3RyZWFtIGJhb3MgPSBuZXcgQnl0ZUFycmF5T3V0cHV0U3RyZWFtKCk7CisgICAgICAgICAgICBPYmplY3RPdXRwdXRTdHJlYW0gb29zID0gbmV3IE9iamVjdE91dHB1dFN0cmVhbShiYW9zKTsKKyAgICAgICAgICAgIG15Zm9ybWF0IGl0ID0gbmV3IG15Zm9ybWF0KCk7CisgICAgICAgICAgICBsb2dsbihpdC5Ob3coKSk7CisgICAgICAgICAgICBvb3Mud3JpdGVPYmplY3QoaXQpOworICAgICAgICAgICAgb29zLmZsdXNoKCk7CisgICAgICAgICAgICBiYW9zLmNsb3NlKCk7CisgICAgICAgICAgICBsb2dsbigiU2F2ZSBPSyEiKTsKKyAgICAgICAgICAgIGJ5dGUgW10gYnl0ZXMgPSBiYW9zLnRvQnl0ZUFycmF5KCk7CisgICAgICAgICAgICBPYmplY3RJbnB1dFN0cmVhbSBvaXMgPSBuZXcgT2JqZWN0SW5wdXRTdHJlYW0obmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKGJ5dGVzKSk7CisgICAgICAgICAgICBteWZvcm1hdCBvID0gKG15Zm9ybWF0KW9pcy5yZWFkT2JqZWN0KCk7CisgICAgICAgICAgICBvaXMuY2xvc2UoKTsKKyAgICAgICAgICAgIGl0Lk5vdygpOworICAgICAgICAgICAgbG9nbG4oIkxvYWQgT0shIik7CisgICAgICAgICAgICBpZiAoIW8uX2RhdGVGb3JtYXQuZXF1YWxzKGl0Ll9kYXRlRm9ybWF0KSkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oIlRoZSBzYXZlZCBhbmQgbG9hZGVkIG9iamVjdCBhcmUgbm90IGVxdWFscyEiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxvZ2xuKCJDb21wYXJlIE9LISIpOworICAgICAgICAvL30gY2F0Y2ggKEV4Y2VwdGlvbiBmb28pIHsKKyAgICAgICAgICAgIC8vZXJybG4oIlRlc3QgZm9yIGJ1ZyA0MDY5NzU0IG9yIDQwNTc4NzggZmFpbGVkID0+IEV4Y2VwdGlvbjogIiArIGZvby5nZXRNZXNzYWdlKCkpOworICAgICAgICAvL30KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEZWNpbWFsRm9ybWF0LmFwcGx5UGF0dGVybihTdHJpbmcpIGFsbG93cyBpbGxlZ2FsIHBhdHRlcm5zCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQwODcyNTEgKCl7CisgICAgICAgIERlY2ltYWxGb3JtYXQgZGYgPSBuZXcgRGVjaW1hbEZvcm1hdCgpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgZGYuYXBwbHlQYXR0ZXJuKCIjLiMuIyIpOworICAgICAgICAgICAgbG9nbG4oInRvUGF0dGVybigpIHJldHVybnMgXCIiICsgZGYudG9QYXR0ZXJuKCkgKyAiXCIiKTsKKyAgICAgICAgICAgIGVycmxuKCJhcHBseVBhdHRlcm4oXCIjLiMuI1wiKSBkb2Vzbid0IHRocm93IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIpOworICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgbG9nbG4oIkNhdWdodCBJbGxlZ2FsIEFyZ3VtZW50IEVycm9yICEiKTsKKyAgICAgICAgfQorICAgICAgICAvLyBTZWNvbmQgdGVzdDsgYWRkZWQgNS8xMS85OCB3aGVuIHJlcG9ydGVkIHRvIGZhaWwgb24gMS4yYjMKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGRmLmFwcGx5UGF0dGVybigiIzAuMCMwIzAiKTsKKyAgICAgICAgICAgIGxvZ2xuKCJ0b1BhdHRlcm4oKSByZXR1cm5zIFwiIiArIGRmLnRvUGF0dGVybigpICsgIlwiIik7CisgICAgICAgICAgICBlcnJsbigiYXBwbHlQYXR0ZXJuKFwiIzAuMCMwIzBcIikgZG9lc24ndCB0aHJvdyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iKTsKKyAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGxvZ2xuKCJPayAtIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBmb3IgIzAuMCMwIzAiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIERlY2ltYWxGb3JtYXQuZm9ybWF0KCkgbG9zZXMgcHJlY2lzaW9uCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQwOTA0ODkgKCl7CisgICAgICAgIERlY2ltYWxGb3JtYXQgZGYgPSBuZXcgRGVjaW1hbEZvcm1hdCgpOworICAgICAgICBkZi5zZXRNaW5pbXVtRnJhY3Rpb25EaWdpdHMoMTApOworICAgICAgICBkZi5zZXRHcm91cGluZ1VzZWQoZmFsc2UpOworICAgICAgICBkb3VibGUgZCA9IDEuMDAwMDAwMDAwMDAwMDAxRTc7CisgICAgICAgIEJpZ0RlY2ltYWwgYmQgPSBuZXcgQmlnRGVjaW1hbChkKTsKKyAgICAgICAgU3RyaW5nQnVmZmVyIHNiID0gbmV3IFN0cmluZ0J1ZmZlcigiIik7CisgICAgICAgIEZpZWxkUG9zaXRpb24gZnAgPSBuZXcgRmllbGRQb3NpdGlvbigwKTsKKyAgICAgICAgbG9nbG4oImQgPSAiICsgZCk7CisgICAgICAgIGxvZ2xuKCJCaWdEZWNpbWFsLnRvU3RyaW5nKCk6ICAiICsgYmQudG9TdHJpbmcoKSk7CisgICAgICAgIGRmLmZvcm1hdChkLCBzYiwgZnApOworICAgICAgICBpZiAoIXNiLnRvU3RyaW5nKCkuZXF1YWxzKCIxMDAwMDAwMC4wMDAwMDAwMTAwIikpIHsKKyAgICAgICAgICAgIGVycmxuKCJEZWNpbWFsRm9ybWF0LmZvcm1hdCgpOiAiICsgc2IudG9TdHJpbmcoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEZWNpbWFsRm9ybWF0LmZvcm1hdCgpIGxvc2VzIHByZWNpc2lvbgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MDkwNTA0ICgpCisgICAgeworICAgICAgICBkb3VibGUgZCA9IDE7CisgICAgICAgIGxvZ2xuKCJkID0gIiArIGQpOworICAgICAgICBEZWNpbWFsRm9ybWF0IGRmID0gbmV3IERlY2ltYWxGb3JtYXQoKTsKKyAgICAgICAgU3RyaW5nQnVmZmVyIHNiOworICAgICAgICBGaWVsZFBvc2l0aW9uIGZwOworICAgICAgICB0cnkgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDE3OyBpIDw9IDIwOyBpKyspIHsKKyAgICAgICAgICAgICAgICBkZi5zZXRNYXhpbXVtRnJhY3Rpb25EaWdpdHMoaSk7CisgICAgICAgICAgICAgICAgc2IgPSBuZXcgU3RyaW5nQnVmZmVyKCIiKTsKKyAgICAgICAgICAgICAgICBmcCA9IG5ldyBGaWVsZFBvc2l0aW9uKDApOworICAgICAgICAgICAgICAgIGxvZ2xuKCIgIGdldE1heGltdW1GcmFjdGlvbkRpZ2l0cygpID0gIiArIGkpOworICAgICAgICAgICAgICAgIGxvZ2xuKCIgIGZvcm1hdGVkOiAiICsgZGYuZm9ybWF0KGQsIHNiLCBmcCkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZm9vKSB7CisgICAgICAgICAgICBlcnJsbigiQnVnIDQwOTA1MDQgcmVncmVzc2lvbiB0ZXN0IGZhaWxlZC4gTWVzc2FnZSA6ICIgKyBmb28uZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAvKioKKyAgICAgKiBEZWNpbWFsRm9ybWF0LnBhcnNlKFN0cmluZyBzdHIsIFBhcnNlUG9zaXRpb24gcHApIGxvc2VzIHByZWNpc2lvbgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MDk1NzEzICgpCisgICAgeworICAgICAgICBEZWNpbWFsRm9ybWF0IGRmID0gbmV3IERlY2ltYWxGb3JtYXQoKTsKKyAgICAgICAgU3RyaW5nIHN0ciA9ICIwLjEyMzQiOworICAgICAgICBEb3VibGUgZDEgPSBuZXcgRG91YmxlKHN0cik7CisgICAgICAgIE51bWJlciBkMiA9IGRmLnBhcnNlKHN0ciwgbmV3IFBhcnNlUG9zaXRpb24oMCkpOworICAgICAgICBsb2dsbihkMS50b1N0cmluZygpKTsKKyAgICAgICAgaWYgKGQyLmRvdWJsZVZhbHVlKCkgIT0gZDEuZG91YmxlVmFsdWUoKSkKKyAgICAgICAgICAgIGVycmxuKCJCdWcgNDA5NTcxMyB0ZXN0IGZhaWxlZCwgbmV3IGRvdWJsZSB2YWx1ZSA6ICIgKyBkMi5kb3VibGVWYWx1ZSgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEZWNpbWFsRm9ybWF0LnBhcnNlKCkgZmFpbHMgd2hlbiBtdWx0aXBsaWVyIGlzIG5vdCBzZXQgdG8gMQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MDkyNTYxICgpCisgICAgeworICAgICAgICBMb2NhbGUgc2F2ZWRMb2NhbGUgPSBMb2NhbGUuZ2V0RGVmYXVsdCgpOworICAgICAgICBMb2NhbGUuc2V0RGVmYXVsdChMb2NhbGUuVVMpOworICAgICAgICBEZWNpbWFsRm9ybWF0IGRmID0gbmV3IERlY2ltYWxGb3JtYXQoKTsKKyAgICAgICAgU3RyaW5nIHN0ciA9IExvbmcudG9TdHJpbmcoTG9uZy5NSU5fVkFMVUUpOworICAgICAgICBsb2dsbigiTG9uZy5NSU5fVkFMVUUgOiAiICsgZGYucGFyc2Uoc3RyLCBuZXcgUGFyc2VQb3NpdGlvbigwKSkudG9TdHJpbmcoKSk7CisgICAgICAgIGRmLnNldE11bHRpcGxpZXIoMTAwKTsKKyAgICAgICAgTnVtYmVyIG51bSA9IGRmLnBhcnNlKHN0ciwgbmV3IFBhcnNlUG9zaXRpb24oMCkpOworICAgICAgICBpZiAobnVtLmRvdWJsZVZhbHVlKCkgIT0gLTkuMjIzMzcyMDM2ODU0Nzc2RTE2KSB7CisgICAgICAgICAgICBlcnJsbigiQnVnIDQwOTI1NjEgdGVzdCBmYWlsZWQgd2hlbiBtdWx0aXBsaWVyIGlzIHNldCB0byBub3QgMS4iKTsKKyAgICAgICAgfQorICAgICAgICBMb2NhbGUuc2V0RGVmYXVsdChzYXZlZExvY2FsZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogRGVjaW1hbEZvcm1hdDogTmVnYXRpdmUgZm9ybWF0IGlnbm9yZWQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQwOTI0ODAgKCkKKyAgICB7CisgICAgICAgIERlY2ltYWxGb3JtYXQgZGZGb28gPSBuZXcgRGVjaW1hbEZvcm1hdCgiMDAwIik7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGRmRm9vLmFwcGx5UGF0dGVybigiMDAwMDstMDAwIik7CisgICAgICAgICAgICBpZiAoIWRmRm9vLnRvUGF0dGVybigpLmVxdWFscygiIzAwMDAiKSkKKyAgICAgICAgICAgICAgICBlcnJsbigiZGZGb28udG9QYXR0ZXJuIDogIiArIGRmRm9vLnRvUGF0dGVybigpKTsKKyAgICAgICAgICAgIGxvZ2xuKGRmRm9vLmZvcm1hdCg0MikpOworICAgICAgICAgICAgbG9nbG4oZGZGb28uZm9ybWF0KC00MikpOworICAgICAgICAgICAgZGZGb28uYXBwbHlQYXR0ZXJuKCIwMDA7LTAwMCIpOworICAgICAgICAgICAgaWYgKCFkZkZvby50b1BhdHRlcm4oKS5lcXVhbHMoIiMwMDAiKSkKKyAgICAgICAgICAgICAgICBlcnJsbigiZGZGb28udG9QYXR0ZXJuIDogIiArIGRmRm9vLnRvUGF0dGVybigpKTsKKyAgICAgICAgICAgIGxvZ2xuKGRmRm9vLmZvcm1hdCg0MikpOworICAgICAgICAgICAgbG9nbG4oZGZGb28uZm9ybWF0KC00MikpOworCisgICAgICAgICAgICBkZkZvby5hcHBseVBhdHRlcm4oIjAwMDstMDAwMCIpOworICAgICAgICAgICAgaWYgKCFkZkZvby50b1BhdHRlcm4oKS5lcXVhbHMoIiMwMDAiKSkKKyAgICAgICAgICAgICAgICBlcnJsbigiZGZGb28udG9QYXR0ZXJuIDogIiArIGRmRm9vLnRvUGF0dGVybigpKTsKKyAgICAgICAgICAgIGxvZ2xuKGRmRm9vLmZvcm1hdCg0MikpOworICAgICAgICAgICAgbG9nbG4oZGZGb28uZm9ybWF0KC00MikpOworCisgICAgICAgICAgICBkZkZvby5hcHBseVBhdHRlcm4oIjAwMDA7LTAwMCIpOworICAgICAgICAgICAgaWYgKCFkZkZvby50b1BhdHRlcm4oKS5lcXVhbHMoIiMwMDAwIikpCisgICAgICAgICAgICAgICAgZXJybG4oImRmRm9vLnRvUGF0dGVybiA6ICIgKyBkZkZvby50b1BhdHRlcm4oKSk7CisgICAgICAgICAgICBsb2dsbihkZkZvby5mb3JtYXQoNDIpKTsKKyAgICAgICAgICAgIGxvZ2xuKGRmRm9vLmZvcm1hdCgtNDIpKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGZvbykgeworICAgICAgICAgICAgZXJybG4oIk1lc3NhZ2UgIiArIGZvby5nZXRNZXNzYWdlKCkpOworICAgICAgICB9CisgICAgfQorICAgIC8qKgorICAgICAqIE51bWJlckZvcm1hdC5nZXRDdXJyZW5jeUluc3RhbmNlKCkgcHJvZHVjZXMgZm9ybWF0IHRoYXQgdXNlcworICAgICAqIGRlY2ltYWwgc2VwYXJhdG9yIGluc3RlYWQgb2YgbW9uZXRhcnkgZGVjaW1hbCBzZXBhcmF0b3IuCisgICAgICoKKyAgICAgKiBSZXdyb3RlIHRoaXMgdGVzdCBub3QgdG8gZGVwZW5kIG9uIHRoZSBhY3R1YWwgcGF0dGVybi4gIFBhdHRlcm4gc2hvdWxkCisgICAgICogbmV2ZXIgY29udGFpbiB0aGUgbW9uZXRhcnkgc2VwYXJhdG9yISAgRGVjaW1hbCBzZXBhcmF0b3IgaW4gcGF0dGVybiBpcworICAgICAqIGludGVycHJldGVkIGFzIG1vbmV0YXJ5IHNlcGFyYXRvciBpZiBjdXJyZW5jeSBzeW1ib2wgaXMgc2VlbiEKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDA4NzI0NCAoKSB7CisgICAgICAgIExvY2FsZSBkZSA9IG5ldyBMb2NhbGUoInB0IiwgIlBUIik7CisgICAgICAgIERlY2ltYWxGb3JtYXQgZGYgPSAoRGVjaW1hbEZvcm1hdCkgTnVtYmVyRm9ybWF0LmdldEN1cnJlbmN5SW5zdGFuY2UoZGUpOworICAgICAgICBEZWNpbWFsRm9ybWF0U3ltYm9scyBzeW0gPSBkZi5nZXREZWNpbWFsRm9ybWF0U3ltYm9scygpOworICAgICAgICBzeW0uc2V0TW9uZXRhcnlEZWNpbWFsU2VwYXJhdG9yKCckJyk7CisJZGYuc2V0RGVjaW1hbEZvcm1hdFN5bWJvbHMoc3ltKTsKKyAgICAgICAgY2hhciBkZWNTZXAgPSBzeW0uZ2V0RGVjaW1hbFNlcGFyYXRvcigpOworICAgICAgICBjaGFyIG1vblNlcCA9IHN5bS5nZXRNb25ldGFyeURlY2ltYWxTZXBhcmF0b3IoKTsKKyAgICAgICAgLy9jaGFyIHplcm8gPSBzeW0uZ2V0WmVyb0RpZ2l0KCk7IC8vVGhlIHZhcmlhYmxlIGlzIG5ldmVyIHVzZWQKKyAgICAgICAgaWYgKGRlY1NlcCA9PSBtb25TZXApIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUiBpbiB0ZXN0OiB3YW50IGRlY2ltYWwgc2VwICE9IG1vbmV0YXJ5IHNlcCIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZGYuc2V0TWluaW11bUludGVnZXJEaWdpdHMoMSk7CisgICAgICAgICAgICBkZi5zZXRNaW5pbXVtRnJhY3Rpb25EaWdpdHMoMik7CisgICAgICAgICAgICBTdHJpbmcgc3RyID0gZGYuZm9ybWF0KDEuMjMpOworICAgICAgICAgICAgU3RyaW5nIG1vblN0ciA9ICIxIiArIG1vblNlcCArICIyMyI7CisgICAgICAgICAgICBTdHJpbmcgZGVjU3RyID0gIjEiICsgZGVjU2VwICsgIjIzIjsKKyAgICAgICAgICAgIGlmIChzdHIuaW5kZXhPZihtb25TdHIpID49IDAgJiYgc3RyLmluZGV4T2YoZGVjU3RyKSA8IDApIHsKKyAgICAgICAgICAgICAgICBsb2dsbigiT0s6IDEuMjMgLT4gXCIiICsgc3RyICsgIlwiIGNvbnRhaW5zIFwiIiArCisgICAgICAgICAgICAgICAgICAgICAgbW9uU3RyICsgIlwiIGFuZCBub3QgXCIiICsgZGVjU3RyICsgJyInKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6IDEuMjMgLT4gXCIiICsgc3RyICsgIlwiLCBzaG91bGQgY29udGFpbiBcIiIgKworICAgICAgICAgICAgICAgICAgICAgIG1vblN0ciArCisgICAgICAgICAgICAgICAgICAgICAgIlwiIGFuZCBub3QgXCIiICsgZGVjU3RyICsgJyInKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAvKioKKyAgICAgKiBOdW1iZXIgZm9ybWF0IGRhdGEgcm91bmRpbmcgZXJyb3JzIGZvciBsb2NhbGUgRlIKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDA3MDc5OCAoKSB7CisgICAgICAgIE51bWJlckZvcm1hdCBmb3JtYXR0ZXI7CisgICAgICAgIFN0cmluZyB0ZW1wU3RyaW5nOworICAgICAgICAvKiBVc2VyIGVycm9yIDoKKyAgICAgICAgU3RyaW5nIGV4cGVjdGVkRGVmYXVsdCA9ICItNVx1MDBhMDc4OSw5ODciOworICAgICAgICBTdHJpbmcgZXhwZWN0ZWRDdXJyZW5jeSA9ICI1XHUwMGEwNzg5LDk4IEYiOworICAgICAgICBTdHJpbmcgZXhwZWN0ZWRQZXJjZW50ID0gIi01NzhcdTAwYTA5OTglIjsKKyAgICAgICAgKi8KKyAgICAgICAgU3RyaW5nIGV4cGVjdGVkRGVmYXVsdCA9ICItNVx1MDBhMDc4OSw5ODgiOworICAgICAgICBTdHJpbmcgZXhwZWN0ZWRDdXJyZW5jeSA9ICI1XHUwMGEwNzg5LDk5ICIgKyBFVVJPOyAvLyBldXJvCisgICAgICAgIFN0cmluZyBleHBlY3RlZFBlcmNlbnQgPSAiLTU3OFx1MDBhMDk5OSUiOworCisgICAgICAgIGZvcm1hdHRlciA9IE51bWJlckZvcm1hdC5nZXROdW1iZXJJbnN0YW5jZShMb2NhbGUuRlJBTkNFKTsKKyAgICAgICAgdGVtcFN0cmluZyA9IGZvcm1hdHRlci5mb3JtYXQgKC01Nzg5Ljk4NzYpOworCisgICAgICAgIGlmICh0ZW1wU3RyaW5nLmVxdWFscyhleHBlY3RlZERlZmF1bHQpKSB7CisgICAgICAgICAgICBsb2dsbiAoIkJ1ZyA0MDcwNzk4IGRlZmF1bHQgdGVzdCBwYXNzZWQuIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlcnJsbigiRmFpbGVkOiIgKworICAgICAgICAgICAgIiBFeHBlY3RlZCAiICsgZXhwZWN0ZWREZWZhdWx0ICsKKyAgICAgICAgICAgICIgUmVjZWl2ZWQgIiArIHRlbXBTdHJpbmcgKTsKKyAgICAgICAgfQorCisKKyAgICAgICAgZm9ybWF0dGVyID0gTnVtYmVyRm9ybWF0LmdldEN1cnJlbmN5SW5zdGFuY2UoTG9jYWxlLkZSQU5DRSk7CisgICAgICAgIHRlbXBTdHJpbmcgPSBmb3JtYXR0ZXIuZm9ybWF0KCA1Nzg5Ljk4NzYgKTsKKworICAgICAgICBpZiAodGVtcFN0cmluZy5lcXVhbHMoZXhwZWN0ZWRDdXJyZW5jeSkgKSB7CisgICAgICAgICAgICBsb2dsbiAoIkJ1ZyA0MDcwNzk4IGN1cnJlbmN5IHRlc3QgYXNzZWQuIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlcnJsbigiRmFpbGVkOiIgKworICAgICAgICAgICAgIiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRDdXJyZW5jeSArCisgICAgICAgICAgICAiIFJlY2VpdmVkICIgKyB0ZW1wU3RyaW5nICk7CisgICAgICAgIH0KKworCisgICAgICAgIGZvcm1hdHRlciA9IE51bWJlckZvcm1hdC5nZXRQZXJjZW50SW5zdGFuY2UoTG9jYWxlLkZSQU5DRSk7CisgICAgICAgIHRlbXBTdHJpbmcgPSBmb3JtYXR0ZXIuZm9ybWF0ICgtNTc4OS45ODc2KTsKKworICAgICAgICBpZiAodGVtcFN0cmluZy5lcXVhbHMoZXhwZWN0ZWRQZXJjZW50KSApIHsKKyAgICAgICAgICAgIGxvZ2xuICgiQnVnIDQwNzA3OTggcGVyY2VudGFnZSB0ZXN0IHBhc3NlZC4iKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVycmxuKCJGYWlsZWQ6IiArCisgICAgICAgICAgICAiIEV4cGVjdGVkICIgKyBleHBlY3RlZFBlcmNlbnQgKworICAgICAgICAgICAgIiBSZWNlaXZlZCAiICsgdGVtcFN0cmluZyApOworICAgICAgICB9CisgICAgfQorICAgIC8qKgorICAgICAqIERhdGEgcm91bmRpbmcgZXJyb3JzIGZvciBGcmVuY2ggKENhbmFkYSkgbG9jYWxlCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQwNzEwMDUgKCkgeworCisgICAgICAgIE51bWJlckZvcm1hdCBmb3JtYXR0ZXI7CisgICAgICAgIFN0cmluZyB0ZW1wU3RyaW5nOworICAgIC8qIHVzZXIgZXJyb3IgOgorICAgICAgICBTdHJpbmcgZXhwZWN0ZWREZWZhdWx0ID0gIi01IDc4OSw5ODciOworICAgICAgICBTdHJpbmcgZXhwZWN0ZWRDdXJyZW5jeSA9ICI1IDc4OSw5OCAkIjsKKyAgICAgICAgU3RyaW5nIGV4cGVjdGVkUGVyY2VudCA9ICItNTc4IDk5OCUiOworICAgICovCisgICAgICAgIFN0cmluZyBleHBlY3RlZERlZmF1bHQgPSAiLTVcdTAwYTA3ODksOTg4IjsKKyAgICAgICAgU3RyaW5nIGV4cGVjdGVkQ3VycmVuY3kgPSAiNVx1MDBhMDc4OSw5OSAkIjsKKyAgICAgICAgU3RyaW5nIGV4cGVjdGVkUGVyY2VudCA9ICItNTc4XHUwMGEwOTk5JSI7CisKKyAgICAgICAgZm9ybWF0dGVyID0gTnVtYmVyRm9ybWF0LmdldE51bWJlckluc3RhbmNlKExvY2FsZS5DQU5BREFfRlJFTkNIKTsKKyAgICAgICAgdGVtcFN0cmluZyA9IGZvcm1hdHRlci5mb3JtYXQgKC01Nzg5Ljk4NzYpOworICAgICAgICBpZiAodGVtcFN0cmluZy5lcXVhbHMoZXhwZWN0ZWREZWZhdWx0KSkgeworICAgICAgICAgICAgbG9nbG4gKCJCdWcgNDA3MTAwNSBkZWZhdWx0IHRlc3QgcGFzc2VkLiIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZXJybG4oIkZhaWxlZDoiICsKKyAgICAgICAgICAgICIgRXhwZWN0ZWQgIiArIGV4cGVjdGVkRGVmYXVsdCArCisgICAgICAgICAgICAiIFJlY2VpdmVkICIgKyB0ZW1wU3RyaW5nICk7CisgICAgICAgIH0KKworICAgICAgICBmb3JtYXR0ZXIgPSBOdW1iZXJGb3JtYXQuZ2V0Q3VycmVuY3lJbnN0YW5jZShMb2NhbGUuQ0FOQURBX0ZSRU5DSCk7CisgICAgICAgIHRlbXBTdHJpbmcgPSBmb3JtYXR0ZXIuZm9ybWF0KCA1Nzg5Ljk4NzYgKSA7CisKKyAgICAgICAgaWYgKHRlbXBTdHJpbmcuZXF1YWxzKGV4cGVjdGVkQ3VycmVuY3kpICkgeworICAgICAgICAgICAgbG9nbG4gKCJCdWcgNDA3MTAwNSBjdXJyZW5jeSB0ZXN0IHBhc3NlZC4iKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVycmxuKCJGYWlsZWQ6IiArCisgICAgICAgICAgICAiIEV4cGVjdGVkICIgKyBleHBlY3RlZEN1cnJlbmN5ICsKKyAgICAgICAgICAgICIgUmVjZWl2ZWQgIiArIHRlbXBTdHJpbmcgKTsKKyAgICAgICAgfQorICAgICAgICBmb3JtYXR0ZXIgPSBOdW1iZXJGb3JtYXQuZ2V0UGVyY2VudEluc3RhbmNlKExvY2FsZS5DQU5BREFfRlJFTkNIKTsKKyAgICAgICAgdGVtcFN0cmluZyA9IGZvcm1hdHRlci5mb3JtYXQgKC01Nzg5Ljk4NzYpOworCisgICAgICAgIGlmICh0ZW1wU3RyaW5nLmVxdWFscyhleHBlY3RlZFBlcmNlbnQpICkgeworICAgICAgICAgICAgbG9nbG4gKCJCdWcgNDA3MTAwNSBwZXJjZW50YWdlIHRlc3QgcGFzc2VkLiIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZXJybG4oIkZhaWxlZDoiICsKKyAgICAgICAgICAgICIgRXhwZWN0ZWQgIiArIGV4cGVjdGVkUGVyY2VudCArCisgICAgICAgICAgICAiIFJlY2VpdmVkICIgKyB0ZW1wU3RyaW5nICk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEYXRhIHJvdW5kaW5nIGVycm9ycyBmb3IgR2VybWFuIChHZXJtYW55KSBsb2NhbGUKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDA3MTAxNCAoKSB7CisgICAgICAgIE51bWJlckZvcm1hdCBmb3JtYXR0ZXI7CisgICAgICAgIFN0cmluZyB0ZW1wU3RyaW5nOworICAgICAgICAvKiB1c2VyIGVycm9yIDoKKyAgICAgICAgU3RyaW5nIGV4cGVjdGVkRGVmYXVsdCA9ICItNS43ODksOTg3IjsKKyAgICAgICAgU3RyaW5nIGV4cGVjdGVkQ3VycmVuY3kgPSAiNS43ODksOTggRE0iOworICAgICAgICBTdHJpbmcgZXhwZWN0ZWRQZXJjZW50ID0gIi01NzguOTk4JSI7CisgICAgICAgICovCisgICAgICAgIFN0cmluZyBleHBlY3RlZERlZmF1bHQgPSAiLTUuNzg5LDk4OCI7CisgICAgICAgIFN0cmluZyBleHBlY3RlZEN1cnJlbmN5ID0gIjUuNzg5LDk5ICIgKyBFVVJPOworICAgICAgICBTdHJpbmcgZXhwZWN0ZWRQZXJjZW50ID0gIi01NzguOTk5JSI7CisKKyAgICAgICAgZm9ybWF0dGVyID0gTnVtYmVyRm9ybWF0LmdldE51bWJlckluc3RhbmNlKExvY2FsZS5HRVJNQU5ZKTsKKyAgICAgICAgdGVtcFN0cmluZyA9IGZvcm1hdHRlci5mb3JtYXQgKC01Nzg5Ljk4NzYpOworCisgICAgICAgIGlmICh0ZW1wU3RyaW5nLmVxdWFscyhleHBlY3RlZERlZmF1bHQpKSB7CisgICAgICAgICAgICBsb2dsbiAoIkJ1ZyA0MDcxMDE0IGRlZmF1bHQgdGVzdCBwYXNzZWQuIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlcnJsbigiRmFpbGVkOiIgKworICAgICAgICAgICAgIiBFeHBlY3RlZCAiICsgZXhwZWN0ZWREZWZhdWx0ICsKKyAgICAgICAgICAgICIgUmVjZWl2ZWQgIiArIHRlbXBTdHJpbmcgKTsKKyAgICAgICAgfQorCisgICAgICAgIGZvcm1hdHRlciA9IE51bWJlckZvcm1hdC5nZXRDdXJyZW5jeUluc3RhbmNlKExvY2FsZS5HRVJNQU5ZKTsKKyAgICAgICAgdGVtcFN0cmluZyA9IGZvcm1hdHRlci5mb3JtYXQoIDU3ODkuOTg3NiApIDsKKworICAgICAgICBpZiAodGVtcFN0cmluZy5lcXVhbHMoZXhwZWN0ZWRDdXJyZW5jeSkgKSB7CisgICAgICAgICAgICBsb2dsbiAoIkJ1ZyA0MDcxMDE0IGN1cnJlbmN5IHRlc3QgcGFzc2VkLiIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZXJybG4oIkZhaWxlZDoiICsKKyAgICAgICAgICAgICIgRXhwZWN0ZWQgIiArIGV4cGVjdGVkQ3VycmVuY3kgKworICAgICAgICAgICAgIiBSZWNlaXZlZCAiICsgdGVtcFN0cmluZyApOworICAgICAgICB9CisKKyAgICAgICAgZm9ybWF0dGVyID0gTnVtYmVyRm9ybWF0LmdldFBlcmNlbnRJbnN0YW5jZShMb2NhbGUuR0VSTUFOWSk7CisgICAgICAgIHRlbXBTdHJpbmcgPSBmb3JtYXR0ZXIuZm9ybWF0ICgtNTc4OS45ODc2KTsKKworICAgICAgICBpZiAodGVtcFN0cmluZy5lcXVhbHMoZXhwZWN0ZWRQZXJjZW50KSApIHsKKyAgICAgICAgICAgIGxvZ2xuICgiQnVnIDQwNzEwMTQgcGVyY2VudGFnZSB0ZXN0IHBhc3NlZC4iKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVycmxuKCJGYWlsZWQ6IiArCisgICAgICAgICAgICAiIEV4cGVjdGVkICIgKyBleHBlY3RlZFBlcmNlbnQgKworICAgICAgICAgICAgIiBSZWNlaXZlZCAiICsgdGVtcFN0cmluZyApOworICAgICAgICB9CisKKyAgICB9CisgICAgLyoqCisgICAgICogRGF0YSByb3VuZGluZyBlcnJvcnMgZm9yIEl0YWxpYW4gbG9jYWxlIG51bWJlciBmb3JtYXRzCisJICogTm90ZS0gd2l0aCB0aGUgRXVybywgdGhlcmUgaXMgbm8gbmVlZCBmb3IgY3VycmVuY3kgcm91bmRpbmcgYW55bW9yZQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MDcxODU5ICgpIHsKKyAgICAgICAgTnVtYmVyRm9ybWF0IGZvcm1hdHRlcjsKKyAgICAgICAgU3RyaW5nIHRlbXBTdHJpbmc7CisgICAgICAgIC8qIHVzZXIgZXJyb3IgOgorICAgICAgICBTdHJpbmcgZXhwZWN0ZWREZWZhdWx0ID0gIi01Ljc4OSw5ODciOworICAgICAgICBTdHJpbmcgZXhwZWN0ZWRDdXJyZW5jeSA9ICItTC4gNS43ODksOTgiOworICAgICAgICBTdHJpbmcgZXhwZWN0ZWRQZXJjZW50ID0gIi01NzguOTk4JSI7CisgICAgICAgICovCisgICAgICAgIFN0cmluZyBleHBlY3RlZERlZmF1bHQgPSAiLTUuNzg5LDk4OCI7CisgICAgICAgIFN0cmluZyBleHBlY3RlZEN1cnJlbmN5ID0gIi0iICsgRVVSTyArICIgNS43ODksOTkiOworICAgICAgICBTdHJpbmcgZXhwZWN0ZWRQZXJjZW50ID0gIi01NzguOTk5JSI7CisKKyAgICAgICAgZm9ybWF0dGVyID0gTnVtYmVyRm9ybWF0LmdldE51bWJlckluc3RhbmNlKExvY2FsZS5JVEFMWSk7CisgICAgICAgIHRlbXBTdHJpbmcgPSBmb3JtYXR0ZXIuZm9ybWF0ICgtNTc4OS45ODc2KTsKKworICAgICAgICBpZiAodGVtcFN0cmluZy5lcXVhbHMoZXhwZWN0ZWREZWZhdWx0KSkgeworICAgICAgICAgICAgbG9nbG4gKCJCdWcgNDA3MTg1OSBkZWZhdWx0IHRlc3QgcGFzc2VkLiIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZXJybG4oImEpIEZhaWxlZDoiICsKKyAgICAgICAgICAgICIgRXhwZWN0ZWQgIiArIGV4cGVjdGVkRGVmYXVsdCArCisgICAgICAgICAgICAiIFJlY2VpdmVkICIgKyB0ZW1wU3RyaW5nICk7CisgICAgICAgIH0KKworICAgICAgICBmb3JtYXR0ZXIgPSBOdW1iZXJGb3JtYXQuZ2V0Q3VycmVuY3lJbnN0YW5jZShMb2NhbGUuSVRBTFkpOworICAgICAgICB0ZW1wU3RyaW5nID0gZm9ybWF0dGVyLmZvcm1hdCggLTU3ODkuOTg3NiApIDsKKworICAgICAgICBpZiAodGVtcFN0cmluZy5lcXVhbHMoZXhwZWN0ZWRDdXJyZW5jeSkgKSB7CisgICAgICAgICAgICBsb2dsbiAoIkJ1ZyA0MDcxODU5IGN1cnJlbmN5IHRlc3QgcGFzc2VkLiIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZXJybG4oImIpIEZhaWxlZDoiICsKKyAgICAgICAgICAgICIgRXhwZWN0ZWQgIiArIGV4cGVjdGVkQ3VycmVuY3kgKworICAgICAgICAgICAgIiBSZWNlaXZlZCAiICsgdGVtcFN0cmluZyApOworICAgICAgICB9CisKKyAgICAgICAgZm9ybWF0dGVyID0gTnVtYmVyRm9ybWF0LmdldFBlcmNlbnRJbnN0YW5jZShMb2NhbGUuSVRBTFkpOworICAgICAgICB0ZW1wU3RyaW5nID0gZm9ybWF0dGVyLmZvcm1hdCAoLTU3ODkuOTg3Nik7CisKKyAgICAgICAgaWYgKHRlbXBTdHJpbmcuZXF1YWxzKGV4cGVjdGVkUGVyY2VudCkgKSB7CisgICAgICAgICAgICBsb2dsbiAoIkJ1ZyA0MDcxODU5IHBlcmNlbnRhZ2UgdGVzdCBwYXNzZWQuIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlcnJsbigiYykgRmFpbGVkOiIgKworICAgICAgICAgICAgIiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQZXJjZW50ICsKKyAgICAgICAgICAgICIgUmVjZWl2ZWQgIiArIHRlbXBTdHJpbmcgKTsKKyAgICAgICAgfQorCisgICAgfQorICAgIC8qIGJ1ZyA0MDcxODU5CisgICAgICogVGVzdCByb3VuZGluZyBmb3IgbmVhcmVzdCBldmVuLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MDkzNjEwKCkKKyAgICB7CisgICAgICAgIERlY2ltYWxGb3JtYXQgZGYgPSBuZXcgRGVjaW1hbEZvcm1hdCgiIzAuIyIpOworICAgICAgICByb3VuZGluZ1Rlc3QoZGYsIDEyLjM1LCAiMTIuNCIpOworICAgICAgICByb3VuZGluZ1Rlc3QoZGYsIDEyLjQ1LCAiMTIuNCIpOworICAgICAgICByb3VuZGluZ1Rlc3QoZGYsIDEyLjQ1MiwiMTIuNSIpOworICAgICAgICByb3VuZGluZ1Rlc3QoZGYsIDEyLjU1LCAiMTIuNiIpOworICAgICAgICByb3VuZGluZ1Rlc3QoZGYsIDEyLjY1LCAiMTIuNiIpOworICAgICAgICByb3VuZGluZ1Rlc3QoZGYsIDEyLjY1MiwiMTIuNyIpOworICAgICAgICByb3VuZGluZ1Rlc3QoZGYsIDEyLjc1LCAiMTIuOCIpOworICAgICAgICByb3VuZGluZ1Rlc3QoZGYsIDEyLjc1MiwiMTIuOCIpOworICAgICAgICByb3VuZGluZ1Rlc3QoZGYsIDEyLjg1LCAiMTIuOCIpOworICAgICAgICByb3VuZGluZ1Rlc3QoZGYsIDEyLjg1MiwiMTIuOSIpOworICAgICAgICByb3VuZGluZ1Rlc3QoZGYsIDEyLjk1LCAiMTMiKTsKKyAgICAgICAgcm91bmRpbmdUZXN0KGRmLCAxMi45NTIsIjEzIik7CisKKyAgICB9CisgICAgdm9pZCByb3VuZGluZ1Rlc3QoRGVjaW1hbEZvcm1hdCBkZiwgZG91YmxlIHgsIFN0cmluZyBleHBlY3RlZCkKKyAgICB7CisgICAgICAgIFN0cmluZyBvdXQgPSBkZi5mb3JtYXQoeCk7CisgICAgICAgIGxvZ2xuKCIiICsgeCArICIgZm9ybWF0cyB3aXRoIDEgZnJhY3Rpb25hbCBkaWdpdHMgdG8gIiArIG91dCk7CisgICAgICAgIGlmICghb3V0LmVxdWFscyhleHBlY3RlZCkpIGVycmxuKCJGQUlMOiBFeHBlY3RlZCAiICsgZXhwZWN0ZWQpOworICAgIH0KKyAgICAvKioKKyAgICAgKiBUZXN0cyB0aGUgc2V0TWF4aW11bUZyYWN0aW9uRGlnaXRzIGxpbWl0LgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MDk4NzQxKCkKKyAgICB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBOdW1iZXJGb3JtYXQgZm10ID0gTnVtYmVyRm9ybWF0LmdldFBlcmNlbnRJbnN0YW5jZSgpOworICAgICAgICAgICAgZm10LnNldE1heGltdW1GcmFjdGlvbkRpZ2l0cygyMCk7CisgICAgICAgICAgICBsb2dsbihmbXQuZm9ybWF0KC4wMDEpKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGZvbykgeworICAgICAgICAgICAgZXJybG4oIkJ1ZyA0MDk4NDcxIGZhaWxlZCB3aXRoIGV4Y2VwdGlvbiB0aHJvd24gOiAiICsgZm9vLmdldE1lc3NhZ2UoKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgLyoqCisgICAgICogVGVzdHMgaWxsZWdhbCBwYXR0ZXJuIGV4Y2VwdGlvbi4KKyAgICAgKiBGaXggY29tbWVudCA6IEhTaGloIEEzMSBQYXJ0MSB3aWxsIG5vdCBiZSBmaXhlZCBhbmQgamF2YWRvYyBuZWVkcyB0byBiZSB1cGRhdGVkLgorICAgICAqIFBhcnQyIGhhcyBiZWVuIGZpeGVkLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MDc0NDU0KCkKKyAgICB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBEZWNpbWFsRm9ybWF0IGZtdCA9IG5ldyBEZWNpbWFsRm9ybWF0KCIjLCMwMC4wMDstIy4jIik7CisgICAgICAgICAgICBsb2dsbigiZm9ybWF0IDM0NTYuNzg6ICIgKyBmbXQuZm9ybWF0KDM0NTYuNzgpKTsgLy9maXggIlRoZSB2YXJpYWJsZSAnZm10JyBpcyBuZXZlciB1c2VkIgorICAgICAgICAgICAgbG9nbG4oIkluY29uc2lzdGVudCBuZWdhdGl2ZSBwYXR0ZXJuIGlzIGZpbmUuIik7CisgICAgICAgICAgICBEZWNpbWFsRm9ybWF0IG5ld0ZtdCA9IG5ldyBEZWNpbWFsRm9ybWF0KCIjLCMwMC4wMCBwJydpZWNlczstIywjMDAuMDAgcCcnaWVjZXMiKTsKKyAgICAgICAgICAgIFN0cmluZyB0ZW1wU3RyaW5nID0gbmV3Rm10LmZvcm1hdCgzNDU2Ljc4KTsKKyAgICAgICAgICAgIGlmICghdGVtcFN0cmluZy5lcXVhbHMoIjMsNDU2Ljc4IHAnaWVjZXMiKSkKKyAgICAgICAgICAgICAgICBlcnJsbigiRmFpbGVkISAgMzQ1Ni43OCBwJ2llY2VzIGV4cGVjdGVkLCBidXQgZ290IDogIiArIHRlbXBTdHJpbmcpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZm9vKSB7CisgICAgICAgICAgICBlcnJsbigiQW4gZXhjZXB0aW9uIHdhcyB0aHJvd24gZm9yIGFueSBpbmNvbnNpc3RlbnQgbmVnYXRpdmUgcGF0dGVybi4iKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAvKioKKyAgICAgKiBUZXN0cyBhbGwgZGlmZmVyZW50IGNvbW1lbnRzLgorICAgICAqIFJlc3BvbnNlIHRvIHNvbWUgY29tbWVudHMgOgorICAgICAqIFsxXSBEZWNpbWFsRm9ybWF0LnBhcnNlIEFQSSBkb2N1bWVudGF0aW9uIGlzIG1vcmUgdGhhbiBqdXN0IG9uZSBsaW5lLgorICAgICAqIFRoaXMgaXMgbm90IGEgcmVwcm9kdWNhYmxlIGRvYyBlcnJvciBpbiAxMTYgc291cmNlIGNvZGUuCisgICAgICogWzJdIFNlZSB1cGRhdGVkIGphdmFkb2MuCisgICAgICogWzNdIEZpeGVkLgorICAgICAqIFs0XSBOdW1iZXJGb3JtYXQucGFyc2UoU3RyaW5nLCBQYXJzZVBvc2l0aW9uKSA6IElmIHBhcnNpbmcgZmFpbHMsCisgICAgICogYSBudWxsIG9iamVjdCB3aWxsIGJlIHJldHVybmVkLiAgVGhlIHVuY2hhbmdlZCBwYXJzZSBwb3NpdGlvbiBhbHNvCisgICAgICogcmVmbGVjdHMgYW4gZXJyb3IuCisgICAgICogTnVtYmVyRm9ybWF0LnBhcnNlKFN0cmluZykgOiBJZiBwYXJzaW5nIGZhaWxzLCBhbiBQYXJzZUV4Y2VwdGlvbgorICAgICAqIHdpbGwgYmUgdGhyb3duLgorICAgICAqIFNlZSB1cGRhdGVkIGphdmFkb2MgZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgKiBbNV0gU2VlIHVwZGF0ZWQgamF2YWRvYy4KKyAgICAgKiBbNl0gU2VlIHVwZGF0ZWQgamF2YWRvYy4KKyAgICAgKiBbN10gVGhpcyBpcyBhIGNvcnJlY3QgYmVoYXZpb3IgaWYgdGhlIERhdGVGb3JtYXQgb2JqZWN0IGlzIGxpbmllbnQuCisgICAgICogT3RoZXJ3aXNlLCBhbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gd2lsbCBiZSB0aHJvd24gd2hlbiBmb3JtYXR0aW5nCisgICAgICogIkphbnVhcnkgMzUiLiAgU2VlIEdyZWdvcmlhbkNhbGVuZGFyIGNsYXNzIGphdmFkb2MgZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDA5OTQwNCgpCisgICAgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgRGVjaW1hbEZvcm1hdCBmbXQgPSBuZXcgRGVjaW1hbEZvcm1hdCgiMDAwLjAjMCIpOworICAgICAgICAgICAgbG9nbG4oImZvcm1hdCAzNDU2Ljc4OiAiICsgZm10LmZvcm1hdCgzNDU2Ljc4KSk7IC8vZml4ICJUaGUgdmFyaWFibGUgJ2ZtdCcgaXMgbmV2ZXIgdXNlZCIKKyAgICAgICAgICAgIGVycmxuKCJCdWcgNDA5OTQwNCBmYWlsZWQgYXBwbHlpbmcgaWxsZWdhbCBwYXR0ZXJuIFwiMDAwLjAjMFwiIik7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBmb28pIHsKKyAgICAgICAgICAgIGxvZ2xuKCJCdWcgNDA5OTQwNCBwYXR0ZXJuIFwiMDAwLjAjMFwiIHBhc3NlZCIpOworICAgICAgICB9CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBEZWNpbWFsRm9ybWF0IGZtdCA9IG5ldyBEZWNpbWFsRm9ybWF0KCIwIzAuMDAwIik7CisgICAgICAgICAgICBsb2dsbigiZm9ybWF0IDM0NTYuNzg6ICIgKyBmbXQuZm9ybWF0KDM0NTYuNzgpKTsgLy9maXggIlRoZSB2YXJpYWJsZSAnZm10JyBpcyBuZXZlciB1c2VkIgorICAgICAgICAgICAgZXJybG4oIkJ1ZyA0MDk5NDA0IGZhaWxlZCBhcHBseWluZyBpbGxlZ2FsIHBhdHRlcm4gXCIwIzAuMDAwXCIiKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGZvbykgeworICAgICAgICAgICAgbG9nbG4oIkJ1ZyA0MDk5NDA0IHBhdHRlcm4gXCIwIzAuMDAwXCIgcGFzc2VkIik7CisgICAgICAgIH0KKyAgICB9CisgICAgLyoqCisgICAgICogRGVjaW1hbEZvcm1hdC5hcHBseVBhdHRlcm4gZG9lc24ndCBzZXQgbWluaW11bSBpbnRlZ2VyIGRpZ2l0cworICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTAxNDgxKCkKKyAgICB7CisgICAgICAgIERlY2ltYWxGb3JtYXQgc2RmID0gbmV3IERlY2ltYWxGb3JtYXQoIiMsIyMwIik7CisgICAgICAgIGlmIChzZGYuZ2V0TWluaW11bUludGVnZXJEaWdpdHMoKSAhPSAxKQorICAgICAgICAgICAgZXJybG4oIk1pbmltdW0gaW50ZWdlciBkaWdpdHMgOiAiICsgc2RmLmdldE1pbmltdW1JbnRlZ2VyRGlnaXRzKCkpOworICAgIH0KKyAgICAvKioKKyAgICAgKiBUZXN0cyBQYXJzZVBvc2l0aW9uLnNldEVycm9yUG9zaXRpb24oKSBhbmQgUGFyc2VQb3NpdGlvbi5nZXRFcnJvclBvc2l0aW9uKCkuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQwNTIyMjMoKQorICAgIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIERlY2ltYWxGb3JtYXQgZm10ID0gbmV3IERlY2ltYWxGb3JtYXQoIiMsIzAwLjAwIik7CisgICAgICAgICAgICBOdW1iZXIgbnVtID0gZm10LnBhcnNlKCJhYmMzIik7CisgICAgICAgICAgICBlcnJsbigiQnVnIDQwNTIyMjMgZmFpbGVkIDogY2FuJ3QgcGFyc2Ugc3RyaW5nIFwiYVwiLiAgR290ICIgKyBudW0pOworICAgICAgICB9IGNhdGNoIChQYXJzZUV4Y2VwdGlvbiBmb28pIHsKKyAgICAgICAgICAgIGxvZ2xuKCJDYXVnaHQgZXhwZWN0ZWQgUGFyc2VFeGNlcHRpb24gOiAiICsgZm9vLmdldE1lc3NhZ2UoKSArICIgYXQgaW5kZXggOiAiICsgZm9vLmdldEVycm9yT2Zmc2V0KCkpOworICAgICAgICB9CisgICAgfQorICAgIC8qKgorICAgICAqIEFQSSB0ZXN0cyBmb3IgQVBJIGFkZGl0aW9uIHJlcXVlc3QgQTkuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQwNjEzMDIoKQorICAgIHsKKyAgICAgICAgRGVjaW1hbEZvcm1hdFN5bWJvbHMgZm10ID0gbmV3IERlY2ltYWxGb3JtYXRTeW1ib2xzKCk7CisgICAgICAgIFN0cmluZyBjdXJyZW5jeSA9IGZtdC5nZXRDdXJyZW5jeVN5bWJvbCgpOworICAgICAgICBTdHJpbmcgaW50bEN1cnJlbmN5ID0gZm10LmdldEludGVybmF0aW9uYWxDdXJyZW5jeVN5bWJvbCgpOworICAgICAgICBjaGFyIG1vbkRlY1NlcGFyYXRvciA9IGZtdC5nZXRNb25ldGFyeURlY2ltYWxTZXBhcmF0b3IoKTsKKyAgICAgICAgaWYgKGN1cnJlbmN5LmVxdWFscygiIikgfHwKKyAgICAgICAgICAgIGludGxDdXJyZW5jeS5lcXVhbHMoIiIpIHx8CisgICAgICAgICAgICBtb25EZWNTZXBhcmF0b3IgPT0gMCkgeworICAgICAgICAgICAgZXJybG4oImdldEN1cnJlbmN5U3ltYm9scyBmYWlsZWQsIGdvdCBlbXB0eSBzdHJpbmcuIik7CisgICAgICAgIH0KKyAgICAgICAgbG9nbG4oIkJlZm9yZSBzZXQgPT0+IEN1cnJlbmN5IDogIiArIGN1cnJlbmN5ICsgIiBJbnRsIEN1cnJlbmN5IDogIiArIGludGxDdXJyZW5jeSArICIgTW9uZXRhcnkgRGVjaW1hbCBTZXBhcmF0b3IgOiAiICsgbW9uRGVjU2VwYXJhdG9yKTsKKyAgICAgICAgZm10LnNldEN1cnJlbmN5U3ltYm9sKCJYWVoiKTsKKyAgICAgICAgZm10LnNldEludGVybmF0aW9uYWxDdXJyZW5jeVN5bWJvbCgiQUJDIik7CisgICAgICAgIGZtdC5zZXRNb25ldGFyeURlY2ltYWxTZXBhcmF0b3IoJyonKTsKKyAgICAgICAgY3VycmVuY3kgPSBmbXQuZ2V0Q3VycmVuY3lTeW1ib2woKTsKKyAgICAgICAgaW50bEN1cnJlbmN5ID0gZm10LmdldEludGVybmF0aW9uYWxDdXJyZW5jeVN5bWJvbCgpOworICAgICAgICBtb25EZWNTZXBhcmF0b3IgPSBmbXQuZ2V0TW9uZXRhcnlEZWNpbWFsU2VwYXJhdG9yKCk7CisgICAgICAgIGlmICghY3VycmVuY3kuZXF1YWxzKCJYWVoiKSB8fAorICAgICAgICAgICAgIWludGxDdXJyZW5jeS5lcXVhbHMoIkFCQyIpIHx8CisgICAgICAgICAgICBtb25EZWNTZXBhcmF0b3IgIT0gJyonKSB7CisgICAgICAgICAgICBlcnJsbigic2V0Q3VycmVuY3lTeW1ib2xzIGZhaWxlZC4iKTsKKyAgICAgICAgfQorICAgICAgICBsb2dsbigiQWZ0ZXIgc2V0ID09PiBDdXJyZW5jeSA6ICIgKyBjdXJyZW5jeSArICIgSW50bCBDdXJyZW5jeSA6ICIgKyBpbnRsQ3VycmVuY3kgKyAiIE1vbmV0YXJ5IERlY2ltYWwgU2VwYXJhdG9yIDogIiArIG1vbkRlY1NlcGFyYXRvcik7CisgICAgfQorICAgIC8qKgorICAgICAqIEFQSSB0ZXN0cyBmb3IgQVBJIGFkZGl0aW9uIHJlcXVlc3QgQTIzLiBGaWVsZFBvc2l0aW9uLmdldEJlZ2luSW5kZXggYW5kCisgICAgICogRmllbGRQb3NpdGlvbi5nZXRFbmRJbmRleC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDA2MjQ4NigpCisgICAgeworICAgICAgICBEZWNpbWFsRm9ybWF0IGZtdCA9IG5ldyBEZWNpbWFsRm9ybWF0KCIjLCMjMC4wMCIpOworICAgICAgICBTdHJpbmdCdWZmZXIgZm9ybWF0dGVkID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBGaWVsZFBvc2l0aW9uIGZpZWxkID0gbmV3IEZpZWxkUG9zaXRpb24oMCk7CisgICAgICAgIERvdWJsZSBudW0gPSBuZXcgRG91YmxlKDEyMzQuNSk7CisgICAgICAgIGZtdC5mb3JtYXQobnVtLCBmb3JtYXR0ZWQsIGZpZWxkKTsKKyAgICAgICAgaWYgKGZpZWxkLmdldEJlZ2luSW5kZXgoKSAhPSAwICYmIGZpZWxkLmdldEVuZEluZGV4KCkgIT0gNSkKKyAgICAgICAgICAgIGVycmxuKCJGb3JtYXQgMTIzNC41IGZhaWxlZC4gQmVnaW4gaW5kZXg6ICIgKyBmaWVsZC5nZXRCZWdpbkluZGV4KCkgKyAiIEVuZCBpbmRleDogIiArIGZpZWxkLmdldEVuZEluZGV4KCkpOworICAgICAgICBmaWVsZC5zZXRCZWdpbkluZGV4KDcpOworICAgICAgICBmaWVsZC5zZXRFbmRJbmRleCg0KTsKKyAgICAgICAgaWYgKGZpZWxkLmdldEJlZ2luSW5kZXgoKSAhPSA3ICYmIGZpZWxkLmdldEVuZEluZGV4KCkgIT0gNCkKKyAgICAgICAgICAgIGVycmxuKCJTZXQgYmVnaW4vZW5kIGZpZWxkIGluZGV4ZXMgZmFpbGVkLiBCZWdpbiBpbmRleDogIiArIGZpZWxkLmdldEJlZ2luSW5kZXgoKSArICIgRW5kIGluZGV4OiAiICsgZmllbGQuZ2V0RW5kSW5kZXgoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogRGVjaW1hbEZvcm1hdC5wYXJzZSBpbmNvcnJlY3RseSB3b3JrcyB3aXRoIGEgZ3JvdXAgc2VwYXJhdG9yLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTA4NzM4KCkKKyAgICB7CisKKyAgICAgICAgRGVjaW1hbEZvcm1hdCBkZiA9IG5ldyBEZWNpbWFsRm9ybWF0KCIjLCMjMC4jIyMiLCBuZXcKKyAgICAgICAgRGVjaW1hbEZvcm1hdFN5bWJvbHMoamF2YS51dGlsLkxvY2FsZS5VUykpOworICAgICAgICBTdHJpbmcgdGV4dCA9ICIxLjIyMiwxMTEiOworICAgICAgICBOdW1iZXIgbnVtID0gZGYucGFyc2UodGV4dCxuZXcgUGFyc2VQb3NpdGlvbigwKSk7CisgICAgICAgIGlmICghbnVtLnRvU3RyaW5nKCkuZXF1YWxzKCIxLjIyMiIpKQorICAgICAgICAgICAgZXJybG4oIlwiIiArIHRleHQgKyAiXCIgIGlzIHBhcnNlZCBhcyAiICsgbnVtKTsKKyAgICAgICAgdGV4dCA9ICIxLjIyMngxMTEiOworICAgICAgICBudW0gPSBkZi5wYXJzZSh0ZXh0LG5ldyBQYXJzZVBvc2l0aW9uKDApKTsKKyAgICAgICAgaWYgKCFudW0udG9TdHJpbmcoKS5lcXVhbHMoIjEuMjIyIikpCisgICAgICAgICAgICBlcnJsbigiXCIiICsgdGV4dCArICJcIiAgaXMgcGFyc2VkIGFzICIgKyBudW0pOworICAgIH0KKworICAgIC8qKgorICAgICAqIERlY2ltYWxGb3JtYXQuZm9ybWF0KCkgaW5jb3JyZWN0bHkgZm9ybWF0cyBuZWdhdGl2ZSBkb3VibGVzLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTA2NjU4KCkKKyAgICB7CisgICAgICAgIExvY2FsZSBzYXZlZExvY2FsZSA9IExvY2FsZS5nZXREZWZhdWx0KCk7CisgICAgICAgIExvY2FsZS5zZXREZWZhdWx0KExvY2FsZS5VUyk7CisgICAgICAgIERlY2ltYWxGb3JtYXQgZGYgPSBuZXcgRGVjaW1hbEZvcm1hdCgpOyAvLyBDb3JyZWN0ZWQ7IHNlZSA0MTQ3NzA2CisgICAgICAgIGRvdWJsZSBkMSA9IC0wLjA7CisgICAgICAgIGRvdWJsZSBkMiA9IC0wLjAwMDE7CisgICAgICAgIFN0cmluZ0J1ZmZlciBidWZmZXIgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIGxvZ2xuKCJwYXR0ZXJuOiBcIiIgKyBkZi50b1BhdHRlcm4oKSArICJcIiIpOworICAgICAgICBkZi5mb3JtYXQoZDEsIGJ1ZmZlciwgbmV3IEZpZWxkUG9zaXRpb24oMCkpOworICAgICAgICBpZiAoIWJ1ZmZlci50b1N0cmluZygpLmVxdWFscygiLTAiKSkgeyAvLyBDb3JyZWN0ZWQ7IHNlZSA0MTQ3NzA2CisgICAgICAgICAgICBlcnJsbihkMSArICIgICAgICBpcyBmb3JtYXR0ZWQgYXMgIiArIGJ1ZmZlcik7CisgICAgICAgIH0KKyAgICAgICAgYnVmZmVyLnNldExlbmd0aCgwKTsKKyAgICAgICAgZGYuZm9ybWF0KGQyLCBidWZmZXIsIG5ldyBGaWVsZFBvc2l0aW9uKDApKTsKKyAgICAgICAgaWYgKCFidWZmZXIudG9TdHJpbmcoKS5lcXVhbHMoIi0wIikpIHsgLy8gQ29ycmVjdGVkOyBzZWUgNDE0NzcwNgorICAgICAgICAgICAgZXJybG4oZDIgKyAiICAgICAgaXMgZm9ybWF0dGVkIGFzICIgKyBidWZmZXIpOworICAgICAgICB9CisgICAgICAgIExvY2FsZS5zZXREZWZhdWx0KHNhdmVkTG9jYWxlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEZWNpbWFsRm9ybWF0LnBhcnNlIHJldHVybnMgMCBpZiBzdHJpbmcgcGFyYW1ldGVyIGlzIGluY29ycmVjdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDEwNjY2MigpCisgICAgeworICAgICAgICBEZWNpbWFsRm9ybWF0IGRmID0gbmV3IERlY2ltYWxGb3JtYXQoKTsKKyAgICAgICAgU3RyaW5nIHRleHQgPSAieCI7CisgICAgICAgIFBhcnNlUG9zaXRpb24gcG9zMSA9IG5ldyBQYXJzZVBvc2l0aW9uKDApLCBwb3MyID0gbmV3IFBhcnNlUG9zaXRpb24oMCk7CisKKyAgICAgICAgbG9nbG4oInBhdHRlcm46IFwiIiArIGRmLnRvUGF0dGVybigpICsgIlwiIik7CisgICAgICAgIE51bWJlciBudW0gPSBkZi5wYXJzZSh0ZXh0LCBwb3MxKTsKKyAgICAgICAgaWYgKG51bSAhPSBudWxsKSB7CisgICAgICAgICAgICBlcnJsbigiVGVzdCBGYWlsZWQ6IFwiIiArIHRleHQgKyAiXCIgaXMgcGFyc2VkIGFzICIgKyBudW0pOworICAgICAgICB9CisgICAgICAgIGRmID0gbnVsbDsKKyAgICAgICAgZGYgPSBuZXcgRGVjaW1hbEZvcm1hdCgiJCMjIy4wMCIpOworICAgICAgICBudW0gPSBkZi5wYXJzZSgiJCIsIHBvczIpOworICAgICAgICBpZiAobnVtICE9IG51bGwpeworICAgICAgICAgICAgZXJybG4oIlRlc3QgRmFpbGVkOiBcIiRcIiBpcyBwYXJzZWQgYXMgIiArIG51bSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBOdW1iZXJGb3JtYXQucGFyc2UgZG9lc24ndCByZXR1cm4gbnVsbAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTE0NjM5KCkKKyAgICB7CisgICAgICAgIE51bWJlckZvcm1hdCBmb3JtYXQgPSBOdW1iZXJGb3JtYXQuZ2V0SW5zdGFuY2UoKTsKKyAgICAgICAgU3RyaW5nIHRleHQgPSAidGltZSAxMDp4IjsKKyAgICAgICAgUGFyc2VQb3NpdGlvbiBwb3MgPSBuZXcgUGFyc2VQb3NpdGlvbig4KTsKKyAgICAgICAgTnVtYmVyIHJlc3VsdCA9IGZvcm1hdC5wYXJzZSh0ZXh0LCBwb3MpOworICAgICAgICBpZiAocmVzdWx0ICE9IG51bGwpIGVycmxuKCJTaG91bGQgcmV0dXJuIG51bGwgYnV0IGdvdCA6ICIgKyByZXN1bHQpOyAvLyBTaG91bGQgYmUgbnVsbDsgaXQgaXNuJ3QKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEZWNpbWFsRm9ybWF0LmZvcm1hdChsb25nIG4pIGZhaWxzIGlmIG4gKiBtdWx0aXBsaWVyID4gTUFYX0xPTkcuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQxMDY2NjQoKQorICAgIHsKKyAgICAgICAgRGVjaW1hbEZvcm1hdCBkZiA9IG5ldyBEZWNpbWFsRm9ybWF0KCk7CisgICAgICAgIGxvbmcgbiA9IDEyMzQ1Njc4OTAxMjM0NTZMOworICAgICAgICBpbnQgbSA9IDEyMzQ1Njc4OworICAgICAgICBCaWdJbnRlZ2VyIGJpZ04gPSBCaWdJbnRlZ2VyLnZhbHVlT2Yobik7CisgICAgICAgIGJpZ04gPSBiaWdOLm11bHRpcGx5KEJpZ0ludGVnZXIudmFsdWVPZihtKSk7CisgICAgICAgIGRmLnNldE11bHRpcGxpZXIobSk7CisgICAgICAgIGRmLnNldEdyb3VwaW5nVXNlZChmYWxzZSk7CisgICAgICAgIGxvZ2xuKCJmb3JtYXRlZDogIiArCisgICAgICAgICAgICBkZi5mb3JtYXQobiwgbmV3IFN0cmluZ0J1ZmZlcigpLCBuZXcgRmllbGRQb3NpdGlvbigwKSkpOworICAgICAgICBsb2dsbigiZXhwZWN0ZWQ6ICIgKyBiaWdOLnRvU3RyaW5nKCkpOworICAgIH0KKyAgICAvKioKKyAgICAgKiBEZWNpbWFsRm9ybWF0LmZvcm1hdCBpbmNvcnJlY3RseSBmb3JtYXRzIC0wLjAuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQxMDY2NjcoKQorICAgIHsKKyAgICAgICAgTG9jYWxlIHNhdmVkTG9jYWxlID0gTG9jYWxlLmdldERlZmF1bHQoKTsKKyAgICAgICAgTG9jYWxlLnNldERlZmF1bHQoTG9jYWxlLlVTKTsKKyAgICAgICAgRGVjaW1hbEZvcm1hdCBkZiA9IG5ldyBEZWNpbWFsRm9ybWF0KCk7CisgICAgICAgIGRmLnNldFBvc2l0aXZlUHJlZml4KCIrIik7CisgICAgICAgIGRvdWJsZSBkID0gLTAuMDsKKyAgICAgICAgbG9nbG4oInBhdHRlcm46IFwiIiArIGRmLnRvUGF0dGVybigpICsgIlwiIik7CisgICAgICAgIFN0cmluZ0J1ZmZlciBidWZmZXIgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIGRmLmZvcm1hdChkLCBidWZmZXIsIG5ldyBGaWVsZFBvc2l0aW9uKDApKTsKKyAgICAgICAgaWYgKCFidWZmZXIudG9TdHJpbmcoKS5lcXVhbHMoIi0wIikpIHsgLy8gQ29ycmVjdGVkOyBzZWUgNDE0NzcwNgorICAgICAgICAgICAgZXJybG4oZCArICIgIGlzIGZvcm1hdHRlZCBhcyAiICsgYnVmZmVyKTsKKyAgICAgICAgfQorICAgICAgICBMb2NhbGUuc2V0RGVmYXVsdChzYXZlZExvY2FsZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogRGVjaW1hbEZvcm1hdC5zZXRNYXhpbXVtSW50ZWdlckRpZ2l0cygpIHdvcmtzIGluY29ycmVjdGx5LgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTEwOTM2KCkKKyAgICB7CisgICAgICAgIE51bWJlckZvcm1hdCBuZiA9IE51bWJlckZvcm1hdC5nZXRJbnN0YW5jZSgpOworICAgICAgICBuZi5zZXRNYXhpbXVtSW50ZWdlckRpZ2l0cygxMjgpOworICAgICAgICBsb2dsbigic2V0TWF4aW11bUludGVnZXJEaWdpdHMoMTI4KSIpOworICAgICAgICBpZiAobmYuZ2V0TWF4aW11bUludGVnZXJEaWdpdHMoKSAhPSAxMjgpCisgICAgICAgICAgICBlcnJsbigiZ2V0TWF4aW11bUludGVnZXJEaWdpdHMoKSByZXR1cm5zICIgKworICAgICAgICAgICAgICAgIG5mLmdldE1heGltdW1JbnRlZ2VyRGlnaXRzKCkpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBMb2NhbGUgZGF0YSBzaG91bGQgdXNlIGdlbmVyaWMgY3VycmVuY3kgc3ltYm9sCisgICAgICoKKyAgICAgKiAxKSBNYWtlIHN1cmUgdGhhdCBhbGwgY3VycmVuY3kgZm9ybWF0cyB1c2UgdGhlIGdlbmVyaWMgY3VycmVuY3kgc3ltYm9sLgorICAgICAqIDIpIE1ha2Ugc3VyZSB3ZSBnZXQgdGhlIHNhbWUgcmVzdWx0cyB1c2luZyB0aGUgZ2VuZXJpYyBzeW1ib2wgb3IgYQorICAgICAqICAgIGhhcmQtY29kZWQgb25lLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTIyODQwKCkKKyAgICB7CisgICAgICAgIExvY2FsZVtdIGxvY2FsZXMgPSBOdW1iZXJGb3JtYXQuZ2V0QXZhaWxhYmxlTG9jYWxlcygpOworICAgICAgICAKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsb2NhbGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBSZXNvdXJjZUJ1bmRsZSByYiA9IElDVUxvY2FsZURhdGEuZ2V0UmVzb3VyY2VCdW5kbGUoIkxvY2FsZUVsZW1lbnRzIiwgbG9jYWxlc1tpXSk7CisKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBHZXQgdGhlIGN1cnJlbmN5IHBhdHRlcm4gZm9yIHRoaXMgbG9jYWxlLiAgV2UgaGF2ZSB0byBmaXNoIGl0CisgICAgICAgICAgICAvLyBvdXQgb2YgdGhlIFJlc291cmNlQnVuZGxlIGRpcmVjdGx5LCBzaW5jZSBEZWNpbWFsRm9ybWF0LnRvUGF0dGVybgorICAgICAgICAgICAgLy8gd2lsbCByZXR1cm4gdGhlIGxvY2FsaXplZCBzeW1ib2wsIG5vdCBcMDBhNAorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIFN0cmluZ1tdIG51bVBhdHRlcm5zID0gKFN0cmluZ1tdKXJiLmdldE9iamVjdCgiTnVtYmVyUGF0dGVybnMiKTsKKyAgICAgICAgICAgIFN0cmluZyBwYXR0ZXJuID0gbnVtUGF0dGVybnNbMV07CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChwYXR0ZXJuLmluZGV4T2YoIlx1MDBBNCIpID09IC0xICkgeworICAgICAgICAgICAgICAgIGVycmxuKCJDdXJyZW5jeSBmb3JtYXQgZm9yICIgKyBsb2NhbGVzW2ldICsKKyAgICAgICAgICAgICAgICAgICAgICAgICIgZG9lcyBub3QgY29udGFpbiBnZW5lcmljIGN1cnJlbmN5IHN5bWJvbDoiICsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm4gKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gQ3JlYXRlIGEgRGVjaW1hbEZvcm1hdCB1c2luZyB0aGUgcGF0dGVybiB3ZSBnb3QgYW5kIGZvcm1hdCBhIG51bWJlcgorICAgICAgICAgICAgRGVjaW1hbEZvcm1hdFN5bWJvbHMgc3ltYm9scyA9IG5ldyBEZWNpbWFsRm9ybWF0U3ltYm9scyhsb2NhbGVzW2ldKTsKKyAgICAgICAgICAgIERlY2ltYWxGb3JtYXQgZm10MSA9IG5ldyBEZWNpbWFsRm9ybWF0KHBhdHRlcm4sIHN5bWJvbHMpOworICAgICAgICAgICAgCisgICAgICAgICAgICBTdHJpbmcgcmVzdWx0MSA9IGZtdDEuZm9ybWF0KDEuMTExKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIE5vdyBzdWJzdGl0dXRlIGluIHRoZSBsb2NhbGUncyBjdXJyZW5jeSBzeW1ib2wgYW5kIGNyZWF0ZSBhbm90aGVyCisgICAgICAgICAgICAvLyBwYXR0ZXJuLiAgUmVwbGFjZSB0aGUgZGVjaW1hbCBzZXBhcmF0b3Igd2l0aCB0aGUgbW9uZXRhcnkgc2VwYXJhdG9yLgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vY2hhciBkZWNTZXAgPSBzeW1ib2xzLmdldERlY2ltYWxTZXBhcmF0b3IoKTsgLy9UaGUgdmFyaWFibGUgaXMgbmV2ZXIgdXNlZAorICAgICAgICAgICAgY2hhciBtb25TZXAgPSBzeW1ib2xzLmdldE1vbmV0YXJ5RGVjaW1hbFNlcGFyYXRvcigpOworICAgICAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZiA9IG5ldyBTdHJpbmdCdWZmZXIocGF0dGVybik7CisgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGJ1Zi5sZW5ndGgoKTsgaisrKSB7CisgICAgICAgICAgICAgICAgaWYgKGJ1Zi5jaGFyQXQoaikgPT0gJ1x1MDBhNCcpIHsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGN1ciA9ICInIiArIHN5bWJvbHMuZ2V0Q3VycmVuY3lTeW1ib2woKSArICInIjsKKyAgICAgICAgICAgICAgICAgICAgYnVmLnJlcGxhY2UoaiwgaisxLCBjdXIpOyAKKyAgICAgICAgICAgICAgICAgICAgaiArPSBjdXIubGVuZ3RoKCkgLSAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN5bWJvbHMuc2V0RGVjaW1hbFNlcGFyYXRvcihtb25TZXApOworICAgICAgICAgICAgRGVjaW1hbEZvcm1hdCBmbXQyID0gbmV3IERlY2ltYWxGb3JtYXQoYnVmLnRvU3RyaW5nKCksIHN5bWJvbHMpOworICAgICAgICAgICAgCisgICAgICAgICAgICBTdHJpbmcgcmVzdWx0MiA9IGZtdDIuZm9ybWF0KDEuMTExKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCFyZXN1bHQxLmVxdWFscyhyZXN1bHQyKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJSZXN1bHRzIGZvciAiICsgbG9jYWxlc1tpXSArICIgZGlmZmVyOiAiICsKKyAgICAgICAgICAgICAgICAgICAgICByZXN1bHQxICsgIiB2cyAiICsgcmVzdWx0Mik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgIAorICAgIC8qKgorICAgICAqIERlY2ltYWxGb3JtYXQuZm9ybWF0KCkgZGVsaXZlcnMgd3Jvbmcgc3RyaW5nLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTI1ODg1KCkKKyAgICB7CisgICAgICAgIGRvdWJsZSByYXRlID0gMTIuMzQ7CisgICAgICAgIERlY2ltYWxGb3JtYXQgZm9ybWF0RGVjID0gbmV3IERlY2ltYWxGb3JtYXQgKCIwMDAuMDAiKTsKKyAgICAgICAgbG9nbG4oInRvUGF0dGVybjogIiArIGZvcm1hdERlYy50b1BhdHRlcm4oKSk7CisgICAgICAgIFN0cmluZyByYXRlU3RyaW5nPSBmb3JtYXREZWMuZm9ybWF0KHJhdGUpOworICAgICAgICBpZiAoIXJhdGVTdHJpbmcuZXF1YWxzKCIwMTIuMzQiKSkKKyAgICAgICAgICAgIGVycmxuKCJyZXN1bHQgOiAiICsgcmF0ZVN0cmluZyArICIgZXhwZWN0ZWQgOiAwMTIuMzQiKTsKKyAgICAgICAgcmF0ZSA9IDAuMTIzNDsKKyAgICAgICAgZm9ybWF0RGVjID0gbnVsbDsKKyAgICAgICAgZm9ybWF0RGVjID0gbmV3IERlY2ltYWxGb3JtYXQgKCIrMDAwLjAwJTstMDAwLjAwJSIpOworICAgICAgICBsb2dsbigidG9QYXR0ZXJuOiAiICsgZm9ybWF0RGVjLnRvUGF0dGVybigpKTsKKyAgICAgICAgcmF0ZVN0cmluZz0gZm9ybWF0RGVjLmZvcm1hdChyYXRlKTsKKyAgICAgICAgaWYgKCFyYXRlU3RyaW5nLmVxdWFscygiKzAxMi4zNCUiKSkKKyAgICAgICAgICAgIGVycmxuKCJyZXN1bHQgOiAiICsgcmF0ZVN0cmluZyArICIgZXhwZWN0ZWQgOiArMDEyLjM0JSIpOworICAgIH0KKworICAgIC8qKgorICAgICAqKgorICAgICAqIERlY2ltYWxGb3JtYXQgcHJvZHVjZXMgZXh0cmEgemVyb3Mgd2hlbiBmb3JtYXR0aW5nIG51bWJlcnMuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQxMzQwMzQoKSB7CisgICAgICAgIERlY2ltYWxGb3JtYXQgbmYgPSBuZXcgRGVjaW1hbEZvcm1hdCgiIyMsIyMjLCMjIy4wMCIpOworICAgICAgICAKKyAgICAgICAgU3RyaW5nIGYgPSBuZi5mb3JtYXQoOS4wMik7CisgICAgICAgIGlmIChmLmVxdWFscygiOS4wMiIpKSBsb2dsbihmICsgIiBvayIpOyBlbHNlIGVycmxuKCI5LjAyIC0+ICIgKyBmICsgIjsgd2FudCA5LjAyIik7CisKKyAgICAgICAgZiA9IG5mLmZvcm1hdCgwKTsKKyAgICAgICAgaWYgKGYuZXF1YWxzKCIuMDAiKSkgbG9nbG4oZiArICIgb2siKTsgZWxzZSBlcnJsbigiMCAtPiAiICsgZiArICI7IHdhbnQgLjAwIik7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ0FOTk9UIFJFUFJPRFVDRSAtIFRoaXMgYnVnIGNvdWxkIG5vdCBiZSByZXByb2R1Y2VkLiAgSXQgbWF5IGJlCisgICAgICogYSBkdXBsaWNhdGUgb2YgNDEzNDAzNC4KKyAgICAgKgorICAgICAqIEpESyAxLjEuNiBCdWcsIGRpZCBOT1Qgb2NjdXIgaW4gMS4xLjUKKyAgICAgKiBQb3NzaWJseSByZWxhdGVkIHRvIGJ1ZyA0MTI1ODg1LgorICAgICAqIAorICAgICAqIFRoaXMgY2xhc3MgZGVtb25zdHJhdGVzIGEgcmVncmVzc2lvbiBpbiB2ZXJzaW9uIDEuMS42CisgICAgICogb2YgRGVjaW1hbEZvcm1hdCBjbGFzcy4KKyAgICAgKiAKKyAgICAgKiAxLjEuNiBSZXN1bHRzCisgICAgICogVmFsdWUgMS4yIEZvcm1hdCAjLjAwIFJlc3VsdCAnMDEuMjAnICEhIXdyb25nCisgICAgICogVmFsdWUgMS4yIEZvcm1hdCAwLjAwIFJlc3VsdCAnMDAxLjIwJyAhISF3cm9uZworICAgICAqIFZhbHVlIDEuMiBGb3JtYXQgMDAuMDAgUmVzdWx0ICcwMDAxLjIwJyAhISF3cm9uZworICAgICAqIFZhbHVlIDEuMiBGb3JtYXQgIzAuMCMgUmVzdWx0ICcxLjInCisgICAgICogVmFsdWUgMS4yIEZvcm1hdCAjMC4wMCBSZXN1bHQgJzAwMS4yMCcgISEhd3JvbmcKKyAgICAgKiAKKyAgICAgKiAxLjEuNSBSZXN1bHRzCisgICAgICogVmFsdWUgMS4yIEZvcm1hdCAjLjAwIFJlc3VsdCAnMS4yMCcKKyAgICAgKiBWYWx1ZSAxLjIgRm9ybWF0IDAuMDAgUmVzdWx0ICcxLjIwJworICAgICAqIFZhbHVlIDEuMiBGb3JtYXQgMDAuMDAgUmVzdWx0ICcwMS4yMCcKKyAgICAgKiBWYWx1ZSAxLjIgRm9ybWF0ICMwLjAjIFJlc3VsdCAnMS4yJworICAgICAqIFZhbHVlIDEuMiBGb3JtYXQgIzAuMDAgUmVzdWx0ICcxLjIwJworICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTM0MzAwKCkgeworICAgICAgICBTdHJpbmdbXSBEQVRBID0geworICAgICAgICAgLy8gUGF0dGVybiAgICAgIEV4cGVjdGVkIHN0cmluZworICAgICAgICAgICAgIiMuMDAiLCAgICAgICIxLjIwIiwKKyAgICAgICAgICAgICIwLjAwIiwgICAgICAiMS4yMCIsCisgICAgICAgICAgICAiMDAuMDAiLCAgICAgIjAxLjIwIiwKKyAgICAgICAgICAgICIjMC4wIyIsICAgICAiMS4yIiwKKyAgICAgICAgICAgICIjMC4wMCIsICAgICAiMS4yMCIsCisgICAgICAgIH07CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxEQVRBLmxlbmd0aDsgaSs9MikgeworICAgICAgICAgICAgU3RyaW5nIHJlc3VsdCA9IG5ldyBEZWNpbWFsRm9ybWF0KERBVEFbaV0pLmZvcm1hdCgxLjIpOworICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXF1YWxzKERBVEFbaSsxXSkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRmFpbDogMS4yIHggIiArIERBVEFbaV0gKyAiID0gIiArIHJlc3VsdCArCisgICAgICAgICAgICAgICAgICAgICAgIjsgd2FudCAiICsgREFUQVtpKzFdKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGxvZ2xuKCJPazogMS4yIHggIiArIERBVEFbaV0gKyAiID0gIiArIHJlc3VsdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBFbXB0eSBwYXR0ZXJuIHByb2R1Y2VzIGRvdWJsZSBuZWdhdGl2ZSBwcmVmaXguCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQxNDAwMDkoKSB7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTwyOyArK2kpIHsKKyAgICAgICAgICAgIERlY2ltYWxGb3JtYXQgZiA9IG51bGw7CisgICAgICAgICAgICBzd2l0Y2ggKGkpIHsKKyAgICAgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgICAgICBmID0gbmV3IERlY2ltYWxGb3JtYXQoIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERlY2ltYWxGb3JtYXRTeW1ib2xzKExvY2FsZS5FTkdMSVNIKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgZiA9IG5ldyBEZWNpbWFsRm9ybWF0KCIjLiMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZWNpbWFsRm9ybWF0U3ltYm9scyhMb2NhbGUuRU5HTElTSCkpOworICAgICAgICAgICAgICAgIGYuYXBwbHlQYXR0ZXJuKCIiKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFN0cmluZyBzID0gZi5mb3JtYXQoMTIzLjQ1Nik7CisgICAgICAgICAgICBpZiAoIXMuZXF1YWxzKCIxMjMuNDU2IikpCisgICAgICAgICAgICAgICAgZXJybG4oIkZhaWw6IEZvcm1hdCBlbXB0eSBwYXR0ZXJuIHggMTIzLjQ1NiA9PiAiICsgcyk7CisgICAgICAgICAgICBzID0gZi5mb3JtYXQoLTEyMy40NTYpOworICAgICAgICAgICAgaWYgKCFzLmVxdWFscygiLTEyMy40NTYiKSkKKyAgICAgICAgICAgICAgICBlcnJsbigiRmFpbDogRm9ybWF0IGVtcHR5IHBhdHRlcm4geCAtMTIzLjQ1NiA9PiAiICsgcyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBCaWdEZWNpbWFsIG51bWJlcnMgZ2V0IHRoZWlyIGZyYWN0aW9ucyB0cnVuY2F0ZWQgYnkgTnVtYmVyRm9ybWF0LgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTQxNzUwKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgU3RyaW5nIHN0ciA9ICIxMjM0NS42NyI7CisgICAgICAgICAgICBCaWdEZWNpbWFsIGJkID0gbmV3IEJpZ0RlY2ltYWwoc3RyKTsKKyAgICAgICAgICAgIFN0cmluZyBzZCA9IE51bWJlckZvcm1hdC5nZXRJbnN0YW5jZShMb2NhbGUuVVMpLmZvcm1hdChiZCk7CisgICAgICAgICAgICBpZiAoIXNkLmVuZHNXaXRoKCI2NyIpKSBlcnJsbigiRmFpbDogIiArIHN0ciArICIgeCBmb3JtYXQgLT4gIiArIHNkKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKGUudG9TdHJpbmcoKSk7CisgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIERlY2ltYWxGb3JtYXQgdG9QYXR0ZXJuKCkgZG9lc24ndCBxdW90ZSBzcGVjaWFsIGNoYXJhY3RlcnMgb3IgaGFuZGxlCisgICAgICogc2luZ2xlIHF1b3Rlcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDE0NTQ1NygpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIERlY2ltYWxGb3JtYXQgbmYgPSAoRGVjaW1hbEZvcm1hdClOdW1iZXJGb3JtYXQuZ2V0SW5zdGFuY2UoKTsKKyAgICAgICAgICAgIERlY2ltYWxGb3JtYXRTeW1ib2xzIHN5bSA9IG5mLmdldERlY2ltYWxGb3JtYXRTeW1ib2xzKCk7CisgICAgICAgICAgICBzeW0uc2V0RGVjaW1hbFNlcGFyYXRvcignXCcnKTsKKyAgICAgICAgICAgIG5mLnNldERlY2ltYWxGb3JtYXRTeW1ib2xzKHN5bSk7CisgICAgICAgICAgICBkb3VibGUgcGkgPSAzLjE0MTU5OworCisgICAgICAgICAgICBTdHJpbmdbXSBQQVRTID0geyAiIy4wMCAnbnVtJydiZXInIiwgIicnIy4wMCcnIiB9OworCisgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8UEFUUy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIG5mLmFwcGx5UGF0dGVybihQQVRTW2ldKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgb3V0ID0gbmYuZm9ybWF0KHBpKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgcGF0ID0gbmYudG9QYXR0ZXJuKCk7CisgICAgICAgICAgICAgICAgZG91YmxlIHZhbCA9IG5mLnBhcnNlKG91dCkuZG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG5mLmFwcGx5UGF0dGVybihwYXQpOworICAgICAgICAgICAgICAgIFN0cmluZyBvdXQyID0gbmYuZm9ybWF0KHBpKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgcGF0MiA9IG5mLnRvUGF0dGVybigpOworICAgICAgICAgICAgICAgIGRvdWJsZSB2YWwyID0gbmYucGFyc2Uob3V0MikuZG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmICghcGF0LmVxdWFscyhwYXQyKSkKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIkZhaWwgd2l0aCBcIiIgKyBQQVRTW2ldICsgIlwiOiBQYXR0ZXJucyBzaG91bGQgY29uY3VyLCBcIiIgKworICAgICAgICAgICAgICAgICAgICAgICAgICBwYXQgKyAiXCIgdnMuIFwiIiArIHBhdDIgKyAiXCIiKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGxvZ2xuKCJPayBcIiIgKyBQQVRTW2ldICsgIlwiIHRvUGF0dGVybigpIC0+IFwiIiArIHBhdCArICciJyk7CisKKyAgICAgICAgICAgICAgICBpZiAodmFsID09IHZhbDIgJiYgb3V0LmVxdWFscyhvdXQyKSkgeworICAgICAgICAgICAgICAgICAgICBsb2dsbigiT2sgIiArIHBpICsgIiB4IFwiIiArIFBBVFNbaV0gKyAiXCIgLT4gXCIiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ICsgIlwiIC0+ICIgKyB2YWwgKyAiIC0+IFwiIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgIG91dDIgKyAiXCIgLT4gIiArIHZhbDIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIkZhaWwgIiArIHBpICsgIiB4IFwiIiArIFBBVFNbaV0gKyAiXCIgLT4gXCIiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ICsgIlwiIC0+ICIgKyB2YWwgKyAiIC0+IFwiIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgIG91dDIgKyAiXCIgLT4gIiArIHZhbDIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoUGFyc2VFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkZhaWw6ICIgKyBlKTsKKyAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEZWNpbWFsRm9ybWF0LmFwcGx5UGF0dGVybigpIHNldHMgbWluaW11bSBpbnRlZ2VyIGRpZ2l0cyBpbmNvcnJlY3RseS4KKyAgICAgKiBDQU5OT1QgUkVQUk9EVUNFCisgICAgICogVGhpcyBidWcgaXMgYSBkdXBsaWNhdGUgb2YgNDEzOTM0NCwgd2hpY2ggaXMgYSBkdXBsaWNhdGUgb2YgNDEzNDMwMAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTQ3Mjk1KCkgeworICAgICAgICBEZWNpbWFsRm9ybWF0IHNkZiA9IG5ldyBEZWNpbWFsRm9ybWF0KCk7CisgICAgICAgIFN0cmluZyBwYXR0ZXJuID0gIiMsIyMjIjsKKyAgICAgICAgbG9nbG4oIkFwcGx5aW5nIHBhdHRlcm4gXCIiICsgcGF0dGVybiArICJcIiIpOworICAgICAgICBzZGYuYXBwbHlQYXR0ZXJuKHBhdHRlcm4pOworICAgICAgICBpbnQgbWluSW50RGlnID0gc2RmLmdldE1pbmltdW1JbnRlZ2VyRGlnaXRzKCk7CisgICAgICAgIGlmIChtaW5JbnREaWcgIT0gMCkgeworICAgICAgICAgICAgZXJybG4oIlRlc3QgZmFpbGVkIik7CisgICAgICAgICAgICBlcnJsbigiIE1pbmltdW0gaW50ZWdlciBkaWdpdHMgOiAiICsgbWluSW50RGlnKTsKKyAgICAgICAgICAgIGVycmxuKCIgbmV3IHBhdHRlcm46ICIgKyBzZGYudG9QYXR0ZXJuKCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbG9nbG4oIlRlc3QgcGFzc2VkIik7CisgICAgICAgICAgICBsb2dsbigiIE1pbmltdW0gaW50ZWdlciBkaWdpdHMgOiAiICsgbWluSW50RGlnKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIERlY2ltYWxGb3JtYXQgZm9ybWF0cyAtMC4wIGFzICswLjAKKyAgICAgKiBTZWUgYWxzbyBvbGRlciByZWxhdGVkIGJ1ZyA0MTA2NjU4LCA0MTA2NjY3CisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQxNDc3MDYoKSB7CisgICAgICAgIERlY2ltYWxGb3JtYXQgZGYgPSBuZXcgRGVjaW1hbEZvcm1hdCgiIywjIzAuMCMjIik7CisgICAgICAgIGRmLnNldERlY2ltYWxGb3JtYXRTeW1ib2xzKG5ldyBEZWNpbWFsRm9ybWF0U3ltYm9scyhMb2NhbGUuRU5HTElTSCkpOworICAgICAgICBkb3VibGUgZDEgPSAtMC4wOworICAgICAgICBkb3VibGUgZDIgPSAtMC4wMDAxOworICAgICAgICBTdHJpbmdCdWZmZXIgZjEgPSBkZi5mb3JtYXQoZDEsIG5ldyBTdHJpbmdCdWZmZXIoKSwgbmV3IEZpZWxkUG9zaXRpb24oMCkpOworICAgICAgICBTdHJpbmdCdWZmZXIgZjIgPSBkZi5mb3JtYXQoZDIsIG5ldyBTdHJpbmdCdWZmZXIoKSwgbmV3IEZpZWxkUG9zaXRpb24oMCkpOworICAgICAgICBpZiAoIWYxLnRvU3RyaW5nKCkuZXF1YWxzKCItMC4wIikpIHsKKyAgICAgICAgICAgIGVycmxuKGQxICsgIiB4IFwiIiArIGRmLnRvUGF0dGVybigpICsgIlwiIGlzIGZvcm1hdHRlZCBhcyBcIiIgKyBmMSArICciJyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFmMi50b1N0cmluZygpLmVxdWFscygiLTAuMCIpKSB7CisgICAgICAgICAgICBlcnJsbihkMiArICIgeCBcIiIgKyBkZi50b1BhdHRlcm4oKSArICJcIiBpcyBmb3JtYXR0ZWQgYXMgXCIiICsgZjIgKyAnIicpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogTnVtYmVyRm9ybWF0IGNhbm5vdCBmb3JtYXQgRG91YmxlLk1BWF9WQUxVRQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTYyMTk4KCkgeworICAgICAgICBkb3VibGUgZGJsID0gRG91YmxlLk1BWF9WQUxVRTsKKyAgICAgICAgTnVtYmVyRm9ybWF0IGYgPSBOdW1iZXJGb3JtYXQuZ2V0SW5zdGFuY2UoKTsKKyAgICAgICAgZi5zZXRNYXhpbXVtRnJhY3Rpb25EaWdpdHMoSW50ZWdlci5NQVhfVkFMVUUpOworICAgICAgICBmLnNldE1heGltdW1JbnRlZ2VyRGlnaXRzKEludGVnZXIuTUFYX1ZBTFVFKTsKKyAgICAgICAgU3RyaW5nIHMgPSBmLmZvcm1hdChkYmwpOworICAgICAgICBsb2dsbigiVGhlIG51bWJlciAiICsgZGJsICsgIiBmb3JtYXR0ZWQgdG8gIiArIHMpOworICAgICAgICBOdW1iZXIgbiA9IG51bGw7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBuID0gZi5wYXJzZShzKTsKKyAgICAgICAgfSBjYXRjaCAoamF2YS50ZXh0LlBhcnNlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJDYXVnaHQgYSBQYXJzZUV4Y2VwdGlvbjoiKTsKKyAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CisgICAgICAgIH0KKyAgICAgICAgbG9nbG4oIlRoZSBzdHJpbmcgIiArIHMgKyAiIHBhcnNlZCBhcyAiICsgbik7CisgICAgICAgIGlmIChuLmRvdWJsZVZhbHVlKCkgIT0gZGJsKSB7CisgICAgICAgICAgICBlcnJsbigiUm91bmQgdHJpcCBmYWlsdXJlIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBOdW1iZXJGb3JtYXQgZG9lcyBub3QgcGFyc2UgbmVnYXRpdmUgemVyby4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDE2Mjg1MigpIHRocm93cyBQYXJzZUV4Y2VwdGlvbiB7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTwyOyArK2kpIHsKKyAgICAgICAgICAgIE51bWJlckZvcm1hdCBmID0gKGkgPT0gMCkgPyBOdW1iZXJGb3JtYXQuZ2V0SW5zdGFuY2UoKQorICAgICAgICAgICAgICAgIDogTnVtYmVyRm9ybWF0LmdldFBlcmNlbnRJbnN0YW5jZSgpOworICAgICAgICAgICAgZG91YmxlIGQgPSAtMC4wOworICAgICAgICAgICAgU3RyaW5nIHMgPSBmLmZvcm1hdChkKTsKKyAgICAgICAgICAgIGRvdWJsZSBlID0gZi5wYXJzZShzKS5kb3VibGVWYWx1ZSgpOworICAgICAgICAgICAgbG9nbG4oIiIgKworICAgICAgICAgICAgICAgICAgZCArICIgLT4gIiArCisgICAgICAgICAgICAgICAgICAnIicgKyBzICsgJyInICsgIiAtPiAiICsKKyAgICAgICAgICAgICAgZSk7CisgICAgICAgICAgICBpZiAoZSAhPSAwLjAgfHwgMS4wL2UgPiAwLjApIHsKKyAgICAgICAgICAgICAgICBsb2dsbigiRmFpbGVkIHRvIHBhcnNlIG5lZ2F0aXZlIHplcm8iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIE51bWJlckZvcm1hdCB0cnVuY2F0ZXMgZGF0YQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTY3NDk0KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIE51bWJlckZvcm1hdCBmbXQgPSBOdW1iZXJGb3JtYXQuZ2V0SW5zdGFuY2UoTG9jYWxlLlVTKTsKKyAgICAgICAgCisgICAgICAgIGRvdWJsZSBhID0gRG91YmxlLk1BWF9WQUxVRTsKKyAgICAgICAgU3RyaW5nIHMgPSBmbXQuZm9ybWF0KGEpOworICAgICAgICBkb3VibGUgYiA9IGZtdC5wYXJzZShzKS5kb3VibGVWYWx1ZSgpOworICAgICAgICBib29sZWFuIG1hdGNoID0gYSA9PSBiOworICAgICAgICBpZiAobWF0Y2gpIHsKKyAgICAgICAgICAgIGxvZ2xuKCIiICsgYSArICIgLT4gXCIiICsgcyArICJcIiAtPiAiICsgYiArICIgb2siKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVycmxuKCIiICsgYSArICIgLT4gXCIiICsgcyArICJcIiAtPiAiICsgYiArICIgRkFJTCIpOworICAgICAgICB9CisKKyAgICAgICAgLy8gV2UgZG9uJ3QgdGVzdCBEb3VibGUuTUlOX1ZBTFVFIGJlY2F1c2UgdGhlIGxvY2FsZSBkYXRhIGZvciB0aGUgVVMKKyAgICAgICAgLy8gY3VycmVudGx5IGRvZXNuJ3Qgc3BlY2lmeSBlbm91Z2ggZGlnaXRzIHRvIGRpc3BsYXkgRG91YmxlLk1JTl9WQUxVRS4KKyAgICAgICAgLy8gVGhpcyBpcyBjb3JyZWN0IGZvciBub3c7IGhvd2V2ZXIsIHdlIGxlYXZlIHRoaXMgaGVyZSBhcyBhIHJlbWluZGVyCisgICAgICAgIC8vIGluIGNhc2Ugd2Ugd2FudCB0byBhZGRyZXNzIHRoaXMgbGF0ZXIuCisgICAgICAgIGlmIChmYWxzZSkgeworICAgICAgICAgICAgYSA9IERvdWJsZS5NSU5fVkFMVUU7CisgICAgICAgICAgICBzID0gZm10LmZvcm1hdChhKTsKKyAgICAgICAgICAgIGIgPSBmbXQucGFyc2UocykuZG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgIG1hdGNoID0gYSA9PSBiOworICAgICAgICAgICAgaWYgKG1hdGNoKSB7CisgICAgICAgICAgICAgICAgbG9nbG4oIiIgKyBhICsgIiAtPiBcIiIgKyBzICsgIlwiIC0+ICIgKyBiICsgIiBvayIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiIiArIGEgKyAiIC0+IFwiIiArIHMgKyAiXCIgLT4gIiArIGIgKyAiIEZBSUwiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIERlY2ltYWxGb3JtYXQucGFyc2UoKSBmYWlscyB3aGVuIFBhcnNlSW50ZWdlck9ubHkgc2V0IHRvIHRydWUKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDE3MDc5OCgpIHsKKyAgICAgICAgTG9jYWxlIHNhdmVkTG9jYWxlID0gTG9jYWxlLmdldERlZmF1bHQoKTsKKyAgICAgICAgTG9jYWxlLnNldERlZmF1bHQoTG9jYWxlLlVTKTsKKyAgICAgICAgRGVjaW1hbEZvcm1hdCBkZiA9IG5ldyBEZWNpbWFsRm9ybWF0KCk7CisgICAgICAgIGRmLnNldFBhcnNlSW50ZWdlck9ubHkodHJ1ZSk7CisgICAgICAgIE51bWJlciBuID0gZGYucGFyc2UoIi0wLjAiLCBuZXcgUGFyc2VQb3NpdGlvbigwKSk7CisgICAgICAgIGlmICghKG4gaW5zdGFuY2VvZiBEb3VibGUpCisgICAgICAgICAgICB8fCBuLmludFZhbHVlKCkgIT0gMCkgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IHBhcnNlKFwiLTAuMFwiKSByZXR1cm5zICIgKworICAgICAgICAgICAgICAgICAgbiArICIgKCIgKyBuLmdldENsYXNzKCkuZ2V0TmFtZSgpICsgJyknKTsKKyAgICAgICAgfQorICAgICAgICBMb2NhbGUuc2V0RGVmYXVsdChzYXZlZExvY2FsZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogdG9QYXR0ZXJuIG9ubHkgcHV0cyB0aGUgZmlyc3QgZ3JvdXBpbmcgc2VwYXJhdG9yIGluLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTc2MTE0KCkgeworICAgICAgICBTdHJpbmdbXSBEQVRBID0geworICAgICAgICAgICAgIjAwIiwgIiMwMCIsCisgICAgICAgICAgICAiMDAwIiwgIiMwMDAiLCAvLyBObyBncm91cGluZworICAgICAgICAgICAgIiMwMDAiLCAiIzAwMCIsIC8vIE5vIGdyb3VwaW5nCisgICAgICAgICAgICAiIywjIzAiLCAiIywjIzAiLAorICAgICAgICAgICAgIiMsMDAwIiwgIiMsMDAwIiwKKyAgICAgICAgICAgICIwLDAwMCIsICIjMCwwMDAiLAorICAgICAgICAgICAgIjAwLDAwMCIsICIjMDAsMDAwIiwKKyAgICAgICAgICAgICIwMDAsMDAwIiwgIiMsMDAwLDAwMCIsCisgICAgICAgICAgICAiMCwwMDAsMDAwLDAwMCwwMDAuMDAwMCIsICIjMCwwMDAsMDAwLDAwMCwwMDAuMDAwMCIsIC8vIFJlcG9ydGVkCisgICAgICAgIH07CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxEQVRBLmxlbmd0aDsgaSs9MikgeworICAgICAgICAgICAgRGVjaW1hbEZvcm1hdCBkZiA9IG5ldyBEZWNpbWFsRm9ybWF0KERBVEFbaV0pOworICAgICAgICAgICAgU3RyaW5nIHMgPSBkZi50b1BhdHRlcm4oKTsKKyAgICAgICAgICAgIGlmICghcy5lcXVhbHMoREFUQVtpKzFdKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiAiICsgREFUQVtpXSArICIgLT4gIiArIHMgKyAiLCB3YW50ICIgKyBEQVRBW2krMV0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogRGVjaW1hbEZvcm1hdCBpcyBpbmNvcnJlY3RseSByb3VuZGluZyBudW1iZXJzIGxpa2UgMS4yNTAxIHRvIDEuMgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTc5ODE4KCkgeworICAgICAgICBTdHJpbmcgREFUQVtdID0geworICAgICAgICAgICAgLy8gSW5wdXQgIFBhdHRlcm4gIEV4cGVjdGVkIG91dHB1dAorICAgICAgICAgICAgIjEuMjUxMSIsICIjLiMiLCAgICIxLjMiLAorICAgICAgICAgICAgIjEuMjUwMSIsICIjLiMiLCAgICIxLjMiLAorICAgICAgICAgICAgIjAuOTk5OSIsICIjIiwgICAgICIxIiwKKyAgICAgICAgfTsKKyAgICAgICAgRGVjaW1hbEZvcm1hdCBmbXQgPSBuZXcgRGVjaW1hbEZvcm1hdCgiIyIsCisgICAgICAgICAgICAgICAgbmV3IERlY2ltYWxGb3JtYXRTeW1ib2xzKExvY2FsZS5VUykpOworICAgICAgICBmb3IgKGludCBpPTA7IGk8REFUQS5sZW5ndGg7IGkrPTMpIHsKKyAgICAgICAgICAgIGRvdWJsZSBpbiA9IERvdWJsZS52YWx1ZU9mKERBVEFbaV0pLmRvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICBTdHJpbmcgcGF0ID0gREFUQVtpKzFdOworICAgICAgICAgICAgU3RyaW5nIGV4cCA9IERBVEFbaSsyXTsKKyAgICAgICAgICAgIGZtdC5hcHBseVBhdHRlcm4ocGF0KTsKKyAgICAgICAgICAgIFN0cmluZyBvdXQgPSBmbXQuZm9ybWF0KGluKTsKKyAgICAgICAgICAgIGlmIChvdXQuZXF1YWxzKGV4cCkpIHsKKyAgICAgICAgICAgICAgICBsb2dsbigiT2s6ICIgKyBpbiArICIgeCAiICsgcGF0ICsgIiA9ICIgKyBvdXQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogIiArIGluICsgIiB4ICAiICsgcGF0ICsgIiA9ICIgKyBvdXQgKworICAgICAgICAgICAgICAgICAgICAgICIsIGV4cGVjdGVkICIgKyBleHApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdDQxODU3NjEoKSB0aHJvd3MgSU9FeGNlcHRpb24sIENsYXNzTm90Rm91bmRFeGNlcHRpb24geworICAgICAgICBCeXRlQXJyYXlPdXRwdXRTdHJlYW0gYmFvcyA9IG5ldyBCeXRlQXJyYXlPdXRwdXRTdHJlYW0oKTsKKyAgICAgICAgT2JqZWN0T3V0cHV0U3RyZWFtIG9vcyA9IG5ldyBPYmplY3RPdXRwdXRTdHJlYW0oYmFvcyk7CisgICAgICAgIAorICAgICAgICBOdW1iZXJGb3JtYXQgbmYgPSBOdW1iZXJGb3JtYXQuZ2V0SW5zdGFuY2UoTG9jYWxlLlVTKTsKKworCS8vIFNldCBzcGVjaWFsIHZhbHVlcyB3ZSBhcmUgZ29pbmcgdG8gc2VhcmNoIGZvciBpbiB0aGUgb3V0cHV0IGJ5dGUgc3RyZWFtCisJLy8gVGhlc2UgYXJlIGFsbCBsZWdhbCB2YWx1ZXMuCisgICAgICAgIG5mLnNldE1pbmltdW1JbnRlZ2VyRGlnaXRzKDB4MTExKTsgLy8gS2VlcCB1bmRlciAzMDkKKyAgICAgICAgbmYuc2V0TWF4aW11bUludGVnZXJEaWdpdHMoMHgxMTIpOyAvLyBLZWVwIHVuZGVyIDMwOQorICAgICAgICBuZi5zZXRNaW5pbXVtRnJhY3Rpb25EaWdpdHMoMHgxMTMpOyAvLyBLZWVwIHVuZGVyIDM0MAorICAgICAgICBuZi5zZXRNYXhpbXVtRnJhY3Rpb25EaWdpdHMoMHgxMTQpOyAvLyBLZWVwIHVuZGVyIDM0MAorICAgICAgICAKKyAgICAgICAgb29zLndyaXRlT2JqZWN0KG5mKTsKKyAgICAgICAgb29zLmZsdXNoKCk7CisgICAgICAgIGJhb3MuY2xvc2UoKTsKKyAgICAgICAgCisgICAgICAgIGJ5dGVbXSBieXRlcyA9IGJhb3MudG9CeXRlQXJyYXkoKTsKKworCS8vIFNjYW4gZm9yIGxvY2F0aW9ucyBvZiBtaW4vbWF4IGludC9mcmFjdCB2YWx1ZXMgaW4gdGhlIGJ5dGUgYXJyYXkuCisJLy8gQXQgdGhlIG1vbWVudCAoSUNVNEogMi4xKSwgdGhlcmUgaXMgb25seSBvbmUgaW5zdGFuY2Ugb2YgZWFjaCB0YXJnZXQgcGFpcgorICAgICAgICAvLyBpbiB0aGUgYnl0ZSBzdHJlYW0sIHNvIGFzc3VtZSBmaXJzdCBtYXRjaCBpcyBpdC4gIE5vdGUgdGhpcyBpcyBub3QgZW50aXJlbHkKKwkvLyBmYWlsc2FmZSwgYW5kIG5lZWRzIHRvIGJlIGNoZWNrZWQgaWYgd2UgY2hhbmdlIHRoZSBwYWNrYWdlIG9yIHN0cnVjdHVyZSBvZgorCS8vIHRoaXMgY2xhc3MuCisJLy8gQ3VycmVudCBwb3NpdGlvbnMgYXJlIDg5MCwgODgwLCA4ODYsIDg3NgorCWludFtdIG9mZnNldHMgPSBuZXcgaW50WzRdOworCWZvciAoaW50IGkgPSAwOyBpIDwgYnl0ZXMubGVuZ3RoIC0gMTsgKytpKSB7CisJICAgIGlmIChieXRlc1tpXSA9PSAweDAxKSB7IC8vIGhpZ2ggYnl0ZQorCQlmb3IgKGludCBqID0gMDsgaiA8IG9mZnNldHMubGVuZ3RoOyArK2opIHsKKwkJICAgIGlmICgob2Zmc2V0c1tqXSA9PSAwKSAmJiAoYnl0ZXNbaSsxXSA9PSAoMHgxMSArIGopKSkgeyAvLyBsb3cgYnl0ZQorCQkJb2Zmc2V0c1tqXSA9IGk7CisJCQlicmVhazsKKwkJICAgIH0KKwkJfQorCSAgICB9CisJfQorCisgICAgICAgIHsKKyAgICAgICAgICAgIE9iamVjdElucHV0U3RyZWFtIG9pcyA9IG5ldyBPYmplY3RJbnB1dFN0cmVhbShuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oYnl0ZXMpKTsKKyAgICAgICAgICAgIE9iamVjdCBvID0gb2lzLnJlYWRPYmplY3QoKTsKKyAgICAgICAgICAgIG9pcy5jbG9zZSgpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIW5mLmVxdWFscyhvKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGYWlsOiBEYXRlRm9ybWF0IHNlcmlhbGl6YXRpb24vZXF1YWxpdHkgYnVnIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGxvZ2xuKCJEYXRlRm9ybWF0IHNlcmlhbGl6YXRpb24vZXF1YWxpdHkgaXMgT0tBWS4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisJLy8gQ2hhbmdlIHRoZSB2YWx1ZXMgaW4gdGhlIGJ5dGUgc3RyZWFtIHNvIHRoYXQgbWluID4gbWF4LgorCS8vIE51bWJlcmZvcm1hdCBzaG91bGQgY2F0Y2ggdGhpcyBhbmQgdGhyb3cgYW4gZXhjZXB0aW9uLgorCWZvciAoaW50IGkgPSAwOyBpIDwgb2Zmc2V0cy5sZW5ndGg7ICsraSkgeworCSAgICBieXRlc1tvZmZzZXRzW2ldXSA9IChieXRlKSg0IC0gaSk7CisJfQorCisgICAgICAgIHsKKyAgICAgICAgICAgIE9iamVjdElucHV0U3RyZWFtIG9pcyA9IG5ldyBPYmplY3RJbnB1dFN0cmVhbShuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oYnl0ZXMpKTsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgTnVtYmVyRm9ybWF0IGZvcm1hdCA9IChOdW1iZXJGb3JtYXQpIG9pcy5yZWFkT2JqZWN0KCk7CisgICAgICAgICAgICAgICAgbG9nbG4oImZvcm1hdDogIiArIGZvcm1hdC5mb3JtYXQoMTIzNC41NikpOyAvL2ZpeCAiVGhlIHZhcmlhYmxlIGlzIG5ldmVyIHVzZWQiCisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6IERlc2VyaWFsaXplZCBib2d1cyBOdW1iZXJGb3JtYXQgd2l0aCBtaW5YRGlnaXRzID4gbWF4WERpZ2l0cyIpOworICAgICAgICAgICAgfSBjYXRjaCAoSW52YWxpZE9iamVjdEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgbG9nbG4oIk9rOiAiICsgZS5nZXRNZXNzYWdlKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKwkvLyBTZXQgdmFsdWVzIHNvIHRoZXkgYXJlIHRvbyBoaWdoLCBidXQgbWluIDw9IG1heAorCS8vIEZvcm1hdCBzaG91bGQgcGFzcyB0aGUgbWluPD0gbWF4IHRlc3QsIGFuZCBEZWNpbWFsRm9ybWF0IHNob3VsZCByZXNldCB0byBjdXJyZW50IG1heGltdW0KKwkvLyAoZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB2ZXJzaW9ucyBzdHJlYW1lZCBvdXQgYmVmb3JlIHRoZSBtYXhpbXVtcyB3ZXJlIGltcG9zZWQpLgorCWZvciAoaW50IGkgPSAwOyBpIDwgb2Zmc2V0cy5sZW5ndGg7ICsraSkgeworCSAgICBieXRlc1tvZmZzZXRzW2ldXSA9IDQ7CisJfQorCisgICAgICAgIHsKKyAgICAgICAgICAgIE9iamVjdElucHV0U3RyZWFtIG9pcyA9IG5ldyBPYmplY3RJbnB1dFN0cmVhbShuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oYnl0ZXMpKTsKKyAgICAgICAgICAgIE51bWJlckZvcm1hdCBmb3JtYXQgPSAoTnVtYmVyRm9ybWF0KSBvaXMucmVhZE9iamVjdCgpOworICAgICAgICAgICAgLy9Gb3IgY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIHZlcnNpb24KKyAgICAgICAgICAgIGlmICgoZm9ybWF0LmdldE1heGltdW1JbnRlZ2VyRGlnaXRzKCkgIT0gMzA5KSAKKyAgICAgICAgICAgICAgICB8fCBmb3JtYXQuZ2V0TWF4aW11bUZyYWN0aW9uRGlnaXRzKCkgIT0gMzQwKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6IERlc2VyaWFsaXplZCBib2d1cyBOdW1iZXJGb3JtYXQgd2l0aCB2YWx1ZXMgb3V0IG9mIHJhbmdlLCIgKworCQkJCQkgICIgaW50TWluOiAiICsgZm9ybWF0LmdldE1pbmltdW1JbnRlZ2VyRGlnaXRzKCkgKworCQkJCQkgICIgaW50TWF4OiAiICsgZm9ybWF0LmdldE1heGltdW1JbnRlZ2VyRGlnaXRzKCkgKworCQkJCQkgICIgZnJhY01pbjogIiArIGZvcm1hdC5nZXRNaW5pbXVtRnJhY3Rpb25EaWdpdHMoKSArCisJCQkJCSAgIiBmcmFjTWF4OiAiICsgZm9ybWF0LmdldE1heGltdW1GcmFjdGlvbkRpZ2l0cygpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbG9nbG4oIk9rOiBEaWdpdCBjb3VudCBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworCisgICAgLyoqCisgICAgICogU29tZSBEZWNpbWFsRm9ybWF0U3ltYm9scyBjaGFuZ2VzIGFyZSBub3QgcGlja2VkIHVwIGJ5IERlY2ltYWxGb3JtYXQuCisgICAgICogVGhpcyBpbmNsdWRlcyB0aGUgbWludXMgc2lnbiwgY3VycmVuY3kgc3ltYm9sLCBpbnRlcm5hdGlvbmFsIGN1cnJlbmN5CisgICAgICogc3ltYm9sLCBwZXJjZW50LCBhbmQgcGVybWlsbGUuICBUaGlzIGlzIGZpbGVkIGFzIGJ1Z3MgNDIxMjA3MiBhbmQKKyAgICAgKiA0MjEyMDczLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MjEyMDcyKCkgdGhyb3dzIElPRXhjZXB0aW9uLCBDbGFzc05vdEZvdW5kRXhjZXB0aW9uIHsKKyAgICAgICAgRGVjaW1hbEZvcm1hdFN5bWJvbHMgc3ltID0gbmV3IERlY2ltYWxGb3JtYXRTeW1ib2xzKExvY2FsZS5VUyk7CisgICAgICAgIERlY2ltYWxGb3JtYXQgZm10ID0gbmV3IERlY2ltYWxGb3JtYXQoIiMiLCBzeW0pOworCisgICAgICAgIHN5bS5zZXRNaW51c1NpZ24oJ14nKTsKKyAgICAgICAgZm10LnNldERlY2ltYWxGb3JtYXRTeW1ib2xzKHN5bSk7CisgICAgICAgIGlmICghZm10LmZvcm1hdCgtMSkuZXF1YWxzKCJeMSIpKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogLTEgeCAobWludXM9XikgLT4gIiArIGZtdC5mb3JtYXQoLTEpICsKKyAgICAgICAgICAgICAgICAgICIsIGV4cCBeMSIpOworICAgICAgICB9CisgICAgICAgIGlmICghZm10LmdldE5lZ2F0aXZlUHJlZml4KCkuZXF1YWxzKCJeIikpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiAobWludXM9XikuZ2V0TmVnYXRpdmVQcmVmaXggLT4gIiArCisgICAgICAgICAgICAgICAgICBmbXQuZ2V0TmVnYXRpdmVQcmVmaXgoKSArICIsIGV4cCBeIik7CisgICAgICAgIH0KKyAgICAgICAgc3ltLnNldE1pbnVzU2lnbignLScpOworCisgICAgICAgIGZtdC5hcHBseVBhdHRlcm4oIiMlIik7CisgICAgICAgIHN5bS5zZXRQZXJjZW50KCdeJyk7CisgICAgICAgIGZtdC5zZXREZWNpbWFsRm9ybWF0U3ltYm9scyhzeW0pOworICAgICAgICBpZiAoIWZtdC5mb3JtYXQoMC4yNSkuZXF1YWxzKCIyNV4iKSkgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IDAuMjUgeCAocGVyY2VudD1eKSAtPiAiICsgZm10LmZvcm1hdCgwLjI1KSArCisgICAgICAgICAgICAgICAgICAiLCBleHAgMjVeIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFmbXQuZ2V0UG9zaXRpdmVTdWZmaXgoKS5lcXVhbHMoIl4iKSkgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IChwZXJjZW50PV4pLmdldFBvc2l0aXZlU3VmZml4IC0+ICIgKworICAgICAgICAgICAgICAgICAgZm10LmdldFBvc2l0aXZlU3VmZml4KCkgKyAiLCBleHAgXiIpOworICAgICAgICB9CisgICAgICAgIHN5bS5zZXRQZXJjZW50KCclJyk7CisgICAgICAgIAorICAgICAgICBmbXQuYXBwbHlQYXR0ZXJuKCIjXHUyMDMwIik7CisgICAgICAgIHN5bS5zZXRQZXJNaWxsKCdeJyk7CisgICAgICAgIGZtdC5zZXREZWNpbWFsRm9ybWF0U3ltYm9scyhzeW0pOworICAgICAgICBpZiAoIWZtdC5mb3JtYXQoMC4yNSkuZXF1YWxzKCIyNTBeIikpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiAwLjI1IHggKHBlcm1pbGw9XikgLT4gIiArIGZtdC5mb3JtYXQoMC4yNSkgKworICAgICAgICAgICAgICAgICAgIiwgZXhwIDI1MF4iKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWZtdC5nZXRQb3NpdGl2ZVN1ZmZpeCgpLmVxdWFscygiXiIpKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogKHBlcm1pbGw9XikuZ2V0UG9zaXRpdmVTdWZmaXggLT4gIiArCisgICAgICAgICAgICAgICAgICBmbXQuZ2V0UG9zaXRpdmVTdWZmaXgoKSArICIsIGV4cCBeIik7CisgICAgICAgIH0KKyAgICAgICAgc3ltLnNldFBlck1pbGwoJ1x1MjAzMCcpOworCisgICAgICAgIGZtdC5hcHBseVBhdHRlcm4oIlx1MDBBNCMuMDAiKTsKKyAgICAgICAgc3ltLnNldEN1cnJlbmN5U3ltYm9sKCJ1c2QiKTsKKyAgICAgICAgZm10LnNldERlY2ltYWxGb3JtYXRTeW1ib2xzKHN5bSk7CisgICAgICAgIGlmICghZm10LmZvcm1hdCgxMi41KS5lcXVhbHMoInVzZDEyLjUwIikpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiAxMi41IHggKGN1cnJlbmN5PXVzZCkgLT4gIiArIGZtdC5mb3JtYXQoMTIuNSkgKworICAgICAgICAgICAgICAgICAgIiwgZXhwIHVzZDEyLjUwIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFmbXQuZ2V0UG9zaXRpdmVQcmVmaXgoKS5lcXVhbHMoInVzZCIpKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogKGN1cnJlbmN5PXVzZCkuZ2V0UG9zaXRpdmVQcmVmaXggLT4gIiArCisgICAgICAgICAgICAgICAgICBmbXQuZ2V0UG9zaXRpdmVQcmVmaXgoKSArICIsIGV4cCB1c2QiKTsKKyAgICAgICAgfQorICAgICAgICBzeW0uc2V0Q3VycmVuY3lTeW1ib2woIiQiKTsKKworICAgICAgICBmbXQuYXBwbHlQYXR0ZXJuKCJcdTAwQTRcdTAwQTQjLjAwIik7CisgICAgICAgIHN5bS5zZXRJbnRlcm5hdGlvbmFsQ3VycmVuY3lTeW1ib2woIkRPTCIpOworICAgICAgICBmbXQuc2V0RGVjaW1hbEZvcm1hdFN5bWJvbHMoc3ltKTsKKyAgICAgICAgaWYgKCFmbXQuZm9ybWF0KDEyLjUpLmVxdWFscygiRE9MMTIuNTAiKSkgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IDEyLjUgeCAoaW50bGN1cnJlbmN5PURPTCkgLT4gIiArIGZtdC5mb3JtYXQoMTIuNSkgKworICAgICAgICAgICAgICAgICAgIiwgZXhwIERPTDEyLjUwIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFmbXQuZ2V0UG9zaXRpdmVQcmVmaXgoKS5lcXVhbHMoIkRPTCIpKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogKGludGxjdXJyZW5jeT1ET0wpLmdldFBvc2l0aXZlUHJlZml4IC0+ICIgKworICAgICAgICAgICAgICAgICAgZm10LmdldFBvc2l0aXZlUHJlZml4KCkgKyAiLCBleHAgRE9MIik7CisgICAgICAgIH0KKyAgICAgICAgc3ltLnNldEludGVybmF0aW9uYWxDdXJyZW5jeVN5bWJvbCgiVVNEIik7CisKKyAgICAgICAgaWYgKFZlcnNpb25JbmZvLklDVV9WRVJTSU9OID09IFZlcnNpb25JbmZvLmdldEluc3RhbmNlKDIsMikpIHsKKyAgICAgICAgICAgIC8vIGJ1ZyBpbiAyLjIgdGhhdCBmYWlscyB0aGlzIHRlc3QKKyAgICAgICAgICAgIC8vIHRvIGJlIGZpeGVkIGluIHRoZSBsYXRlciB2ZXJzaW9ucworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJcbiAgICAgICAgVGVzdCBza2lwcGVkIGZvciByZWxlYXNlIDIuMiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBTaW5jZSB0aGUgcGF0dGVybiBsb2dpYyBoYXMgY2hhbmdlZCwgbWFrZSBzdXJlIHRoYXQgcGF0dGVybnMgcm91bmQKKyAgICAgICAgLy8gdHJpcCBwcm9wZXJseS4gIFRlc3Qgc3RyZWFtIGluL291dCBpbnRlZ3JpdHkgdG9vLgorICAgICAgICBMb2NhbGVbXSBhdmFpbCA9IE51bWJlckZvcm1hdC5nZXRBdmFpbGFibGVMb2NhbGVzKCk7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxhdmFpbC5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgZm9yIChpbnQgaj0wOyBqPDM7ICsraikgeworICAgICAgICAgICAgICAgIE51bWJlckZvcm1hdCBuZjsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGopIHsKKyAgICAgICAgICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICAgICAgICAgIG5mID0gTnVtYmVyRm9ybWF0LmdldEluc3RhbmNlKGF2YWlsW2ldKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgICAgICAgICBuZiA9IE51bWJlckZvcm1hdC5nZXRDdXJyZW5jeUluc3RhbmNlKGF2YWlsW2ldKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgbmYgPSBOdW1iZXJGb3JtYXQuZ2V0UGVyY2VudEluc3RhbmNlKGF2YWlsW2ldKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIERlY2ltYWxGb3JtYXQgZGYgPSAoRGVjaW1hbEZvcm1hdCkgbmY7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gVGVzdCB0b1BhdHRlcm4vYXBwbHlQYXR0ZXJuIHJvdW5kIHRyaXAKKyAgICAgICAgICAgICAgICBTdHJpbmcgcGF0ID0gZGYudG9QYXR0ZXJuKCk7CisgICAgICAgICAgICAgICAgRGVjaW1hbEZvcm1hdFN5bWJvbHMgc3ltYiA9IG5ldyBEZWNpbWFsRm9ybWF0U3ltYm9scyhhdmFpbFtpXSk7CisgICAgICAgICAgICAgICAgRGVjaW1hbEZvcm1hdCBmMiA9IG5ldyBEZWNpbWFsRm9ybWF0KHBhdCwgc3ltYik7CisgICAgICAgICAgICAgICAgaWYgKCFkZi5lcXVhbHMoZjIpKSB7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiAiICsgYXZhaWxbaV0gKyAiICMiICsgaiArICIgLT4gXCIiICsgcGF0ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlwiIC0+IFwiIiArIGYyLnRvUGF0dGVybigpICsgJyInKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBUZXN0IHRvTG9jYWxpemVkUGF0dGVybi9hcHBseUxvY2FsaXplZFBhdHRlcm4gcm91bmQgdHJpcAorICAgICAgICAgICAgICAgIHBhdCA9IGRmLnRvTG9jYWxpemVkUGF0dGVybigpOworICAgICAgICAgICAgICAgIGYyLmFwcGx5TG9jYWxpemVkUGF0dGVybihwYXQpOworICAgICAgICAgICAgICAgIGlmICghZGYuZXF1YWxzKGYyKSkgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogIiArIGF2YWlsW2ldICsgIiAjIiArIGogKyAiIC0+IGxvY2FsaXplZCBcIiIgKyBwYXQgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXCIgLT4gXCIiICsgZjIudG9Mb2NhbGl6ZWRQYXR0ZXJuKCkgKyAnIicpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFRlc3Qgd3JpdGVPYmplY3QvcmVhZE9iamVjdCByb3VuZCB0cmlwCisgICAgICAgICAgICAgICAgQnl0ZUFycmF5T3V0cHV0U3RyZWFtIGJhb3MgPSBuZXcgQnl0ZUFycmF5T3V0cHV0U3RyZWFtKCk7CisgICAgICAgICAgICAgICAgT2JqZWN0T3V0cHV0U3RyZWFtIG9vcyA9IG5ldyBPYmplY3RPdXRwdXRTdHJlYW0oYmFvcyk7CisgICAgICAgICAgICAgICAgb29zLndyaXRlT2JqZWN0KGRmKTsKKyAgICAgICAgICAgICAgICBvb3MuZmx1c2goKTsKKyAgICAgICAgICAgICAgICBiYW9zLmNsb3NlKCk7CisgICAgICAgICAgICAgICAgYnl0ZVtdIGJ5dGVzID0gYmFvcy50b0J5dGVBcnJheSgpOworICAgICAgICAgICAgICAgIE9iamVjdElucHV0U3RyZWFtIG9pcyA9CisgICAgICAgICAgICAgICAgICAgIG5ldyBPYmplY3RJbnB1dFN0cmVhbShuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oYnl0ZXMpKTsKKyAgICAgICAgICAgICAgICBmMiA9IChEZWNpbWFsRm9ybWF0KSBvaXMucmVhZE9iamVjdCgpOworICAgICAgICAgICAgICAgIGlmICghZGYuZXF1YWxzKGYyKSkgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogU3RyZWFtIGluL291dCAiICsgYXZhaWxbaV0gKyAiIC0+IFwiIiArIHBhdCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcIiAtPiAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGYyICE9IG51bGwgPyAoIlwiIitmMi50b1BhdHRlcm4oKSsnIicpIDogIm51bGwiKSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBAc2luY2UgSUNVIDIuNAorICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCBhbGwgc3BlY2lhbCBjaGFyYWN0ZXJzLCB3aGVuIHF1b3RlZCBpbiBhIHN1ZmZpeCBvcgorICAgICAgICAvLyBwcmVmaXgsIGxvc2UgdGhlaXIgc3BlY2lhbCBtZWFuaW5nLgorICAgICAgICBjaGFyW10gU1BFQ0lBTFMgPSB7ICcwJywgJywnLCAnLicsICdcdTIwMzAnLCAnJScsICcjJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnOycsICdFJywgJyonLCAnKycsICctJyB9OworICAgICAgICBzeW0gPSBuZXcgRGVjaW1hbEZvcm1hdFN5bWJvbHMoTG9jYWxlLlVTKTsKKyAgICAgICAgZm9yIChpbnQgaj0wOyBqPFNQRUNJQUxTLmxlbmd0aDsgKytqKSB7CisgICAgICAgICAgICBjaGFyIHNwZWNpYWwgPSBTUEVDSUFMU1tqXTsKKyAgICAgICAgICAgIFN0cmluZyBwYXQgPSAiJyIgKyBzcGVjaWFsICsgIicjMCciICsgc3BlY2lhbCArICInIjsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgZm10ID0gbmV3IERlY2ltYWxGb3JtYXQocGF0LCBzeW0pOworICAgICAgICAgICAgICAgIFN0cmluZyBwYXQyID0gZm10LnRvUGF0dGVybigpOworICAgICAgICAgICAgICAgIGlmICghcGF0LmVxdWFscyhwYXQyKSkgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogUGF0dGVybiBcIiIgKyBwYXQgKyAiXCIgPT4gdG9QYXR0ZXJuKCkgPT4gXCIiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0MiArICJcIiIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBTdHJpbmcgcyA9IGZtdC5mb3JtYXQoMTIzKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgZXhwID0gIiIgKyBzcGVjaWFsICsgIjEyMyIgKyBzcGVjaWFsOworICAgICAgICAgICAgICAgIGlmICghcy5lcXVhbHMoZXhwKSkgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogMTIzIHggXCIiICsgcGF0ICsgIlwiID0+IFwiIiArIHMgKyAiXCIsIGV4cCBcIiIgKworICAgICAgICAgICAgICAgICAgICAgICAgICBleHAgKyAiXCIiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBQYXR0ZXJuIFwiIiArIHBhdCArICJcIiA9PiAiICsgZS5nZXRNZXNzYWdlKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogRGVjaW1hbEZvcm1hdC5wYXJzZSgpIGZhaWxzIGZvciBtdWxpcGxpZXJzIDJebi4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDIxNjc0MigpIHRocm93cyBQYXJzZUV4Y2VwdGlvbiB7CisgICAgICAgIERlY2ltYWxGb3JtYXQgZm10ID0gKERlY2ltYWxGb3JtYXQpIE51bWJlckZvcm1hdC5nZXRJbnN0YW5jZShMb2NhbGUuVVMpOworICAgICAgICBsb25nW10gREFUQSA9IHsgTG9uZy5NSU5fVkFMVUUsIExvbmcuTUFYX1ZBTFVFLCAtMTAwMDAwMDAwTCwgMTAwMDAwMDAwTH07CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxEQVRBLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBTdHJpbmcgc3RyID0gTG9uZy50b1N0cmluZyhEQVRBW2ldKTsKKyAgICAgICAgICAgIGZvciAoaW50IG0gPSAxOyBtIDw9IDEwMDsgbSsrKSB7CisgICAgICAgICAgICAgICAgZm10LnNldE11bHRpcGxpZXIobSk7CisgICAgICAgICAgICAgICAgbG9uZyBuID0gKChOdW1iZXIpIGZtdC5wYXJzZShzdHIpKS5sb25nVmFsdWUoKTsKKyAgICAgICAgICAgICAgICBpZiAobiA+IDAgIT0gREFUQVtpXSA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIlwiIiArIHN0ciArICJcIiBwYXJzZSh4ICIgKyBmbXQuZ2V0TXVsdGlwbGllcigpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIikgPT4gIiArIG4pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIERlY2ltYWxGb3JtYXQgZm9ybWF0cyAxLjAwMSB0byAiMS4wMCIgaW5zdGVhZCBvZiAiMSIgd2l0aCAyIGZyYWN0aW9uCisgICAgICogZGlnaXRzLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MjE3NjYxKCkgeworICAgICAgICBPYmplY3RbXSBEQVRBID0geworICAgICAgICAgICAgbmV3IERvdWJsZSgwLjAwMSksICIwIiwKKyAgICAgICAgICAgIG5ldyBEb3VibGUoMS4wMDEpLCAiMSIsCisgICAgICAgICAgICBuZXcgRG91YmxlKDAuMDA2KSwgIjAuMDEiLAorICAgICAgICAgICAgbmV3IERvdWJsZSgxLjAwNiksICIxLjAxIiwKKyAgICAgICAgfTsKKyAgICAgICAgTnVtYmVyRm9ybWF0IGZtdCA9IE51bWJlckZvcm1hdC5nZXRJbnN0YW5jZShMb2NhbGUuVVMpOworICAgICAgICBmbXQuc2V0TWF4aW11bUZyYWN0aW9uRGlnaXRzKDIpOyAKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPERBVEEubGVuZ3RoOyBpKz0yKSB7CisgICAgICAgICAgICBTdHJpbmcgcyA9IGZtdC5mb3JtYXQoKChEb3VibGUpIERBVEFbaV0pLmRvdWJsZVZhbHVlKCkpOworICAgICAgICAgICAgaWYgKCFzLmVxdWFscyhEQVRBW2krMV0pKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6IEdvdCAiICsgcyArICIsIGV4cCAiICsgREFUQVtpKzFdKTsgCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogNDI0MzAxMTogRm9ybWF0dGluZyAuNSByb3VuZHMgdG8gIjEiIGluc3RlYWQgb2YgIjAiCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQyNDMwMTEoKSB7CisgICAgICAgIGRvdWJsZSBEQVRBW10gPSB7MC41LCAxLjUsIDIuNSwgMy41LCA0LjV9OworICAgICAgICBTdHJpbmcgRVhQRUNURURbXSA9IHsiMC4iLCAiMi4iLCAiMi4iLCAiNC4iLCAiNC4ifTsKKyAgICAgICAgCisgICAgICAgIERlY2ltYWxGb3JtYXQgZm9ybWF0ID0gbmV3IERlY2ltYWxGb3JtYXQoIjAuIik7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgREFUQS5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgU3RyaW5nIHJlc3VsdCA9IGZvcm1hdC5mb3JtYXQoREFUQVtpXSk7CisgICAgICAgICAgICBpZiAocmVzdWx0LmVxdWFscyhFWFBFQ1RFRFtpXSkpIHsKKyAgICAgICAgICAgICAgICBsb2dsbigiT0s6IGdvdCAiICsgcmVzdWx0KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6IGdvdCAiICsgcmVzdWx0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiA0MjQzMTA4OiBmb3JtYXQoMC4wKSBnaXZlcyAiMC4xIiBpZiBwcmVjZWRlZCBieSBwYXJzZSgiOTkuOTkiKQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MjQzMTA4KCkgeworICAgICAgICBEZWNpbWFsRm9ybWF0IGYgPSBuZXcgRGVjaW1hbEZvcm1hdCgiIy4jIik7CisgICAgICAgIFN0cmluZyByZXN1bHQgPSBmLmZvcm1hdCgwLjApOworICAgICAgICBpZiAocmVzdWx0LmVxdWFscygiMCIpKSB7CisgICAgICAgICAgICBsb2dsbigiT0s6IGdvdCAiICsgcmVzdWx0KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBnb3QgIiArIHJlc3VsdCk7CisgICAgICAgIH0KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGRvdWJsZSBkUmVzdWx0ID0gZi5wYXJzZSgiOTkuOTkiKS5kb3VibGVWYWx1ZSgpOworICAgICAgICAgICAgaWYgKGRSZXN1bHQgPT0gOTkuOTkpIHsKKyAgICAgICAgICAgICAgICBsb2dsbigiT0s6IGdvdCAiICsgZFJlc3VsdCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBnb3QgIiArIGRSZXN1bHQpOworICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNoIChQYXJzZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiQ2F1Z2h0IGEgUGFyc2VFeGNlcHRpb246Iik7CisgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworICAgICAgICB9ICAgICAgICAgICAgCisgICAgICAgIHJlc3VsdCA9IGYuZm9ybWF0KDAuMCk7CisgICAgICAgIGlmIChyZXN1bHQuZXF1YWxzKCIwIikpIHsKKyAgICAgICAgICAgIGxvZ2xuKCJPSzogZ290ICIgKyByZXN1bHQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IGdvdCAiICsgcmVzdWx0KTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiA0MzMwMzc3OiBEZWNpbWFsRm9ybWF0IGVuZ2luZWVyaW5nIG5vdGF0aW9uIGdpdmVzIGluY29ycmVjdCByZXN1bHRzCisgICAgICovCisgICAgcHVibGljIHZvaWQgdGVzdDQzMzAzNzcoKSB7CisgICAgICAgIC8qCisgICAgICAgIGRvdWJsZVtdIGlucHV0ID0gezUwMDAuMCwgNTAwLjAsIDUwLjAsIDUuMCwgMC41LCAwLjA1LCAwLjAwNSwgMC4wMDA1LAorICAgICAgICAgICAgICAgNTA1MC4wLCA1MDUuMCwgNTAuNSwgNS4wNSwgMC41MDUsIDAuMDUwNSwgMC4wMDUwNSwgMC4wMDA1MDV9OworICAgICAgICBTdHJpbmdbXSBwYXR0ZXJuID0geyIwMDAuI0UwIiwgIiMjMC4jRTAiLCAiIzAwLiNFMCJ9OworICAgICAgICBTdHJpbmdbXVtdIGV4cGVjdGVkID0geworICAgICAgICAgICAgLy8gaXQncyBxdWVzdGlvbmFibGUgd2hldGhlciAiIzAwLiNFMCIgc2hvdWxkIHJlc3VsdCBpbiBwb3N0LWRlY2ltYWwKKyAgICAgICAgICAgIC8vIHplcm9lcywgaS5lLiwgd2hldGhlciAiNS4wRTMiLCAiNS4wRTAiLCAiNS4wRS0zIiBhcmUgcmVhbGx5IGdvb2QKKyAgICAgICAgICAgIHsiNTAwRTEiLCAiNUUzIiwgIjUuMEUzIn0sCisgICAgICAgICAgICB7IjUwMEUwIiwgIjUwMEUwIiwgIjUwMEUwIn0sCisgICAgICAgICAgICB7IjUwMEUtMSIsICI1MEUwIiwgIjUwRTAifSwKKyAgICAgICAgICAgIHsiNTAwRS0yIiwgIjVFMCIsICI1LjBFMCJ9LAorICAgICAgICAgICAgeyI1MDBFLTMiLCAiNTAwRS0zIiwgIjUwMEUtMyJ9LAorICAgICAgICAgICAgeyI1MDBFLTQiLCAiNTBFLTMiLCAiNTBFLTMifSwKKyAgICAgICAgICAgIHsiNTAwRS01IiwgIjVFLTMiLCAiNS4wRS0zIn0sCisgICAgICAgICAgICB7IjUwMEUtNiIsICI1MDBFLTYiLCAiNTAwRS02In0sCisgICAgICAgICAgICB7IjUwNUUxIiwgIjUuMDVFMyIsICI1LjA1RTMifSwKKyAgICAgICAgICAgIHsiNTA1RTAiLCAiNTA1RTAiLCAiNTA1RTAifSwKKyAgICAgICAgICAgIHsiNTA1RS0xIiwgIjUwLjVFMCIsICI1MC41RTAifSwKKyAgICAgICAgICAgIHsiNTA1RS0yIiwgIjUuMDVFMCIsICI1LjA1RTAifSwKKyAgICAgICAgICAgIHsiNTA1RS0zIiwgIjUwNUUtMyIsICI1MDVFLTMifSwKKyAgICAgICAgICAgIHsiNTA1RS00IiwgIjUwLjVFLTMiLCAiNTAuNUUtMyJ9LAorICAgICAgICAgICAgeyI1MDVFLTUiLCAiNS4wNUUtMyIsICI1LjA1RS0zIn0sCisgICAgICAgICAgICB7IjUwNUUtNiIsICI1MDVFLTYiLCAiNTA1RS02In0KKyAgICAgICAgfTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBwYXR0ZXJuLmxlbmd0aDsgaisrKSB7CisgICAgICAgICAgICAgICAgRGVjaW1hbEZvcm1hdCBmb3JtYXQgPSBuZXcgRGVjaW1hbEZvcm1hdChwYXR0ZXJuW2pdKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgcmVzdWx0ID0gZm9ybWF0LmZvcm1hdChpbnB1dFtpXSk7CisgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXF1YWxzKGV4cGVjdGVkW2ldW2pdKSkgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogaW5wdXQ6ICIgKyBpbnB1dFtpXSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiwgcGF0dGVybjogIiArIHBhdHRlcm5bal0gKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICIsIGV4cGVjdGVkOiAiICsgZXhwZWN0ZWRbaV1bal0gKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICIsIGdvdDogIiArIHJlc3VsdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgICovCisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIDQyMzM4NDA6IE51bWJlckZvcm1hdCBkb2VzIG5vdCByb3VuZCBjb3JyZWN0bHkKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCB0ZXN0NDIzMzg0MCgpIHsKKyAgICAgICAgZmxvYXQgZiA9IDAuMDA5OWY7CisKKyAgICAgICAgTnVtYmVyRm9ybWF0IG5mID0gbmV3IERlY2ltYWxGb3JtYXQoIjAuIyMiLCBuZXcgRGVjaW1hbEZvcm1hdFN5bWJvbHMoTG9jYWxlLlVTKSk7CisJbmYuc2V0TWluaW11bUZyYWN0aW9uRGlnaXRzKDIpOworCQorCVN0cmluZyByZXN1bHQgPSBuZi5mb3JtYXQoZik7CisJCisJaWYgKCFyZXN1bHQuZXF1YWxzKCIwLjAxIikpIHsKKwkgICAgZXJybG4oIkZBSUw6IGlucHV0OiAiICsgZiArICIsIGV4cGVjdGVkOiAwLjAxLCBnb3Q6ICIgKyByZXN1bHQpOworCX0KKyAgICB9Cit9CisKK2NsYXNzIG15Zm9ybWF0IGltcGxlbWVudHMgU2VyaWFsaXphYmxlCit7CisgICAgRGF0ZUZvcm1hdCBfZGF0ZUZvcm1hdCA9IERhdGVGb3JtYXQuZ2V0RGF0ZUluc3RhbmNlKCk7CisKKyAgICBwdWJsaWMgU3RyaW5nIE5vdygpCisgICAgeworICAgICAgICBHcmVnb3JpYW5DYWxlbmRhciBjYWxlbmRhciA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcigpOworICAgICAgICBEYXRlIHQgPSBjYWxlbmRhci5nZXRUaW1lKCk7CisgICAgICAgIFN0cmluZyBub3dTdHIgPSBfZGF0ZUZvcm1hdC5mb3JtYXQodCk7CisgICAgICAgIHJldHVybiBub3dTdHI7CisgICAgfQorfQorCitjbGFzcyBNeU51bWJlckZvcm1hdFRlc3QgZXh0ZW5kcyBOdW1iZXJGb3JtYXQgeworICAgIHB1YmxpYyBTdHJpbmdCdWZmZXIgZm9ybWF0KGRvdWJsZSBudW1iZXIsIFN0cmluZ0J1ZmZlciB0b0FwcGVuZFRvLCBGaWVsZFBvc2l0aW9uIHBvcykgeworICAgICAgICByZXR1cm4gbmV3IFN0cmluZ0J1ZmZlcigiIik7CisgICAgfQorICAgIHB1YmxpYyBTdHJpbmdCdWZmZXIgZm9ybWF0KGxvbmcgbnVtYmVyLFN0cmluZ0J1ZmZlciB0b0FwcGVuZFRvLCBGaWVsZFBvc2l0aW9uIHBvcykgeworICAgICAgICByZXR1cm4gbmV3IFN0cmluZ0J1ZmZlcigiIik7CisgICAgfQorICAgIHB1YmxpYyBOdW1iZXIgcGFyc2UoU3RyaW5nIHRleHQsIFBhcnNlUG9zaXRpb24gcGFyc2VQb3NpdGlvbikgeworICAgICAgICByZXR1cm4gbmV3IEludGVnZXIoMCk7CisgICAgfQorICAgIHB1YmxpYyBTdHJpbmdCdWZmZXIgZm9ybWF0KEJpZ0RlY2ltYWwgbnVtYmVyLCBTdHJpbmdCdWZmZXIgdG9BcHBlbmRUbywgRmllbGRQb3NpdGlvbiBwb3MpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBTdHJpbmdCdWZmZXIoIiIpOworICAgIH0KKyAgICBwdWJsaWMgU3RyaW5nQnVmZmVyIGZvcm1hdChCaWdJbnRlZ2VyIG51bWJlciwgU3RyaW5nQnVmZmVyIHRvQXBwZW5kVG8sIEZpZWxkUG9zaXRpb24gcG9zKSB7CisgICAgICAgIHJldHVybiBuZXcgU3RyaW5nQnVmZmVyKCIiKTsKKyAgICB9CisgICAgcHVibGljIFN0cmluZ0J1ZmZlciBmb3JtYXQoY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIG51bWJlciwgU3RyaW5nQnVmZmVyIHRvQXBwZW5kVG8sIEZpZWxkUG9zaXRpb24gcG9zKSB7CisgICAgICAgIHJldHVybiBuZXcgU3RyaW5nQnVmZmVyKCIiKTsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9mb3JtYXQvUmJuZlJvdW5kVHJpcFRlc3QuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9mb3JtYXQvUmJuZlJvdW5kVHJpcFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42ZGU3NGM0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2Zvcm1hdC9SYm5mUm91bmRUcmlwVGVzdC5qYXZhCkBAIC0wLDAgKzEsMjIwIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvZm9ybWF0L1JibmZSb3VuZFRyaXBUZXN0LmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDIvMjIgMDM6NDM6MzIgJCAKKyAqICRSZXZpc2lvbjogMS40ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudGVzdC5mb3JtYXQ7CisKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0LlJ1bGVCYXNlZE51bWJlckZvcm1hdDsKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYudGVzdC5UZXN0Rm13azsKKworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CitpbXBvcnQgamF2YS50ZXh0Lk51bWJlckZvcm1hdDsKKworcHVibGljIGNsYXNzIFJibmZSb3VuZFRyaXBUZXN0IGV4dGVuZHMgVGVzdEZtd2sgeworICAgIC8qKgorICAgICAqIFB1dHMgYSBjb3B5cmlnaHQgaW4gdGhlIC5jbGFzcyBmaWxlCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodE5vdGljZQorICAgICAgICA9ICJDb3B5cmlnaHQgXHUwMGE5MTk5Ny0xOTk4IElCTSBDb3JwLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4iOworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBSYm5mUm91bmRUcmlwVGVzdCB0ZXN0ID0gbmV3IFJibmZSb3VuZFRyaXBUZXN0KCk7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHRlc3QucnVuKGFyZ3MpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChUaHJvd2FibGUgZSkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJFbnRpcmUgdGVzdCBmYWlsZWQgYmVjYXVzZSBvZiBleGNlcHRpb246ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGUudG9TdHJpbmcoKSk7CisgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUGVyZm9ybSBhbiBleGhhdXN0aXZlIHJvdW5kLXRyaXAgdGVzdCBvbiB0aGUgRW5nbGlzaCBzcGVsbG91dCBydWxlcworICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RFbmdsaXNoU3BlbGxvdXRSVCgpIHsKKyAgICAgICAgUnVsZUJhc2VkTnVtYmVyRm9ybWF0IGZvcm1hdHRlcgorICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgUnVsZUJhc2VkTnVtYmVyRm9ybWF0KExvY2FsZS5VUywKKyAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZE51bWJlckZvcm1hdC5TUEVMTE9VVCk7CisKKyAgICAgICAgZG9UZXN0KGZvcm1hdHRlciwgLTEyMzQ1Njc4LCAxMjM0NTY3OCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUGVyZm9ybSBhbiBleGhhdXN0aXZlIHJvdW5kLXRyaXAgdGVzdCBvbiB0aGUgZHVyYXRpb24tZm9ybWF0dGluZyBydWxlcworICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3REdXJhdGlvbnNSVCgpIHsKKyAgICAgICAgUnVsZUJhc2VkTnVtYmVyRm9ybWF0IGZvcm1hdHRlcgorICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgUnVsZUJhc2VkTnVtYmVyRm9ybWF0KExvY2FsZS5VUywKKyAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZE51bWJlckZvcm1hdC5EVVJBVElPTik7CisKKyAgICAgICAgZG9UZXN0KGZvcm1hdHRlciwgMCwgMTIzNDU2NzgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFBlcmZvcm0gYW4gZXhoYXVzdGl2ZSByb3VuZC10cmlwIHRlc3Qgb24gdGhlIFNwYW5pc2ggc3BlbGxvdXQgcnVsZXMKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0U3BhbmlzaFNwZWxsb3V0UlQoKSB7CisgICAgICAgIFJ1bGVCYXNlZE51bWJlckZvcm1hdCBmb3JtYXR0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFJ1bGVCYXNlZE51bWJlckZvcm1hdChuZXcgTG9jYWxlKCJlcyIsICJlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAiIiksIFJ1bGVCYXNlZE51bWJlckZvcm1hdC5TUEVMTE9VVCk7CisKKyAgICAgICAgZG9UZXN0KGZvcm1hdHRlciwgLTEyMzQ1Njc4LCAxMjM0NTY3OCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUGVyZm9ybSBhbiBleGhhdXN0aXZlIHJvdW5kLXRyaXAgdGVzdCBvbiB0aGUgRnJlbmNoIHNwZWxsb3V0IHJ1bGVzCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEZyZW5jaFNwZWxsb3V0UlQoKSB7CisgICAgICAgIFJ1bGVCYXNlZE51bWJlckZvcm1hdCBmb3JtYXR0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFJ1bGVCYXNlZE51bWJlckZvcm1hdChMb2NhbGUuRlJBTkNFLAorICAgICAgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkTnVtYmVyRm9ybWF0LlNQRUxMT1VUKTsKKworICAgICAgICBkb1Rlc3QoZm9ybWF0dGVyLCAtMTIzNDU2NzgsIDEyMzQ1Njc4KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQZXJmb3JtIGFuIGV4aGF1c3RpdmUgcm91bmQtdHJpcCB0ZXN0IG9uIHRoZSBTd2lzcyBGcmVuY2ggc3BlbGxvdXQgcnVsZXMKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0U3dpc3NGcmVuY2hTcGVsbG91dFJUKCkgeworICAgICAgICBSdWxlQmFzZWROdW1iZXJGb3JtYXQgZm9ybWF0dGVyCisgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBSdWxlQmFzZWROdW1iZXJGb3JtYXQobmV3IExvY2FsZSgiZnIiLCAiQ0giLAorICAgICAgICAgICAgICAgICAgICAgICAgIiIpLCBSdWxlQmFzZWROdW1iZXJGb3JtYXQuU1BFTExPVVQpOworCisgICAgICAgIGRvVGVzdChmb3JtYXR0ZXIsIC0xMjM0NTY3OCwgMTIzNDU2NzgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFBlcmZvcm0gYW4gZXhoYXVzdGl2ZSByb3VuZC10cmlwIHRlc3Qgb24gdGhlIEl0YWxpYW4gc3BlbGxvdXQgcnVsZXMKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0SXRhbGlhblNwZWxsb3V0UlQoKSB7CisgICAgICAgIFJ1bGVCYXNlZE51bWJlckZvcm1hdCBmb3JtYXR0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFJ1bGVCYXNlZE51bWJlckZvcm1hdChMb2NhbGUuSVRBTElBTiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZE51bWJlckZvcm1hdC5TUEVMTE9VVCk7CisKKyAgICAgICAgZG9UZXN0KGZvcm1hdHRlciwgLTk5OTk5OSwgOTk5OTk5KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQZXJmb3JtIGFuIGV4aGF1c3RpdmUgcm91bmQtdHJpcCB0ZXN0IG9uIHRoZSBHZXJtYW4gc3BlbGxvdXQgcnVsZXMKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0R2VybWFuU3BlbGxvdXRSVCgpIHsKKyAgICAgICAgUnVsZUJhc2VkTnVtYmVyRm9ybWF0IGZvcm1hdHRlcgorICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgUnVsZUJhc2VkTnVtYmVyRm9ybWF0KExvY2FsZS5HRVJNQU5ZLAorICAgICAgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkTnVtYmVyRm9ybWF0LlNQRUxMT1VUKTsKKworICAgICAgICBkb1Rlc3QoZm9ybWF0dGVyLCAwLCAxMjM0NTY3OCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUGVyZm9ybSBhbiBleGhhdXN0aXZlIHJvdW5kLXRyaXAgdGVzdCBvbiB0aGUgU3dlZGlzaCBzcGVsbG91dCBydWxlcworICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RTd2VkaXNoU3BlbGxvdXRSVCgpIHsKKyAgICAgICAgUnVsZUJhc2VkTnVtYmVyRm9ybWF0IGZvcm1hdHRlcgorICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgUnVsZUJhc2VkTnVtYmVyRm9ybWF0KG5ldyBMb2NhbGUoInN2IiwgIlNFIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICIiKSwgUnVsZUJhc2VkTnVtYmVyRm9ybWF0LlNQRUxMT1VUKTsKKworICAgICAgICBkb1Rlc3QoZm9ybWF0dGVyLCAwLCAxMjM0NTY3OCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUGVyZm9ybSBhbiBleGhhdXN0aXZlIHJvdW5kLXRyaXAgdGVzdCBvbiB0aGUgRHV0Y2ggc3BlbGxvdXQgcnVsZXMKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0RHV0Y2hTcGVsbG91dFJUKCkgeworICAgICAgICBSdWxlQmFzZWROdW1iZXJGb3JtYXQgZm9ybWF0dGVyCisgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBSdWxlQmFzZWROdW1iZXJGb3JtYXQobmV3IExvY2FsZSgibmwiLCAiTkwiLAorICAgICAgICAgICAgICAgICAgICAgICAgIiIpLCBSdWxlQmFzZWROdW1iZXJGb3JtYXQuU1BFTExPVVQpOworCisgICAgICAgIGRvVGVzdChmb3JtYXR0ZXIsIC0xMjM0NTY3OCwgMTIzNDU2NzgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFBlcmZvcm0gYW4gZXhoYXVzdGl2ZSByb3VuZC10cmlwIHRlc3Qgb24gdGhlIEphcGFuZXNlIHNwZWxsb3V0IHJ1bGVzCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEphcGFuZXNlU3BlbGxvdXRSVCgpIHsKKyAgICAgICAgUnVsZUJhc2VkTnVtYmVyRm9ybWF0IGZvcm1hdHRlcgorICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgUnVsZUJhc2VkTnVtYmVyRm9ybWF0KExvY2FsZS5KQVBBTiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZE51bWJlckZvcm1hdC5TUEVMTE9VVCk7CisKKyAgICAgICAgZG9UZXN0KGZvcm1hdHRlciwgMCwgMTIzNDU2NzgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFBlcmZvcm0gYW4gZXhoYXVzdGl2ZSByb3VuZC10cmlwIHRlc3Qgb24gdGhlIFJ1c3NpYW4gc3BlbGxvdXQgcnVsZXMKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0UnVzc2lhblNwZWxsb3V0UlQoKSB7CisgICAgICAgIFJ1bGVCYXNlZE51bWJlckZvcm1hdCBmb3JtYXR0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFJ1bGVCYXNlZE51bWJlckZvcm1hdChuZXcgTG9jYWxlKCJydSIsICJSVSIsCisgICAgICAgICAgICAgICAgICAgICAgICAiIiksIFJ1bGVCYXNlZE51bWJlckZvcm1hdC5TUEVMTE9VVCk7CisKKyAgICAgICAgZG9UZXN0KGZvcm1hdHRlciwgMCwgMTIzNDU2NzgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFBlcmZvcm0gYW4gZXhoYXVzdGl2ZSByb3VuZC10cmlwIHRlc3Qgb24gdGhlIEdyZWVrIHNwZWxsb3V0IHJ1bGVzCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEdyZWVrU3BlbGxvdXRSVCgpIHsKKyAgICAgICAgUnVsZUJhc2VkTnVtYmVyRm9ybWF0IGZvcm1hdHRlcgorICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgUnVsZUJhc2VkTnVtYmVyRm9ybWF0KG5ldyBMb2NhbGUoImVsIiwgIkdSIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICIiKSwgUnVsZUJhc2VkTnVtYmVyRm9ybWF0LlNQRUxMT1VUKTsKKworICAgICAgICBkb1Rlc3QoZm9ybWF0dGVyLCAwLCAxMjM0NTY3OCk7CisgICAgfQorCisgICAgdm9pZCBkb1Rlc3QoUnVsZUJhc2VkTnVtYmVyRm9ybWF0IGZvcm1hdHRlciwgIGxvbmcgbG93TGltaXQsCisgICAgICAgICAgICAgICAgICAgIGxvbmcgaGlnaExpbWl0KSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBsb25nIGNvdW50ID0gMDsKKyAgICAgICAgICAgIGxvbmcgaW5jcmVtZW50ID0gMTsKKyAgICAgICAgICAgIGZvciAobG9uZyBpID0gbG93TGltaXQ7IGkgPD0gaGlnaExpbWl0OyBpICs9IGluY3JlbWVudCkgeworICAgICAgICAgICAgICAgIGlmIChjb3VudCAlIDEwMDAgPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgbG9nbG4oTG9uZy50b1N0cmluZyhpKSk7CisKKyAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMoaSkgPCA1MDAwKQorICAgICAgICAgICAgICAgICAgICBpbmNyZW1lbnQgPSAxOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKE1hdGguYWJzKGkpIDwgNTAwMDAwKQorICAgICAgICAgICAgICAgICAgICBpbmNyZW1lbnQgPSAyNzM3OworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgaW5jcmVtZW50ID0gMjY3NDM3OworCisgICAgICAgICAgICAgICAgU3RyaW5nIHRleHQgPSBmb3JtYXR0ZXIuZm9ybWF0KGkpOworICAgICAgICAgICAgICAgIGxvbmcgcnQgPSBmb3JtYXR0ZXIucGFyc2UodGV4dCkubG9uZ1ZhbHVlKCk7CisKKyAgICAgICAgICAgICAgICBpZiAocnQgIT0gaSkgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigiUm91bmQtdHJpcCBmYWlsZWQ6ICIgKyBpICsgIiAtPiAiICsgdGV4dCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIC0+ICIgKyBydCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgKytjb3VudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGxvd0xpbWl0IDwgMCkgeworICAgICAgICAgICAgICAgIGRvdWJsZSBkID0gMS4yMzQ7CisgICAgICAgICAgICAgICAgd2hpbGUgKGQgPCAxMDAwKSB7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyB0ZXh0ID0gZm9ybWF0dGVyLmZvcm1hdChkKTsKKyAgICAgICAgICAgICAgICAgICAgZG91YmxlIHJ0ID0gZm9ybWF0dGVyLnBhcnNlKHRleHQpLmRvdWJsZVZhbHVlKCk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJ0ICE9IGQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycmxuKCJSb3VuZC10cmlwIGZhaWxlZDogIiArIGQgKyAiIC0+ICIgKyB0ZXh0ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIC0+ICIgKyBydCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZCAqPSAxMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKFRocm93YWJsZSBlKSB7CisgICAgICAgICAgICBlcnJsbigiVGVzdCBmYWlsZWQgd2l0aCBleGNlcHRpb246ICIgKyBlLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2Zvcm1hdC9SYm5mVGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2Zvcm1hdC9SYm5mVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjllOWI1M2QKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvZm9ybWF0L1JibmZUZXN0LmphdmEKQEAgLTAsMCArMSw3OTAgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9mb3JtYXQvUmJuZlRlc3QuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8xMi8xOCAyMToyMDo1MiAkIAorICogJFJldmlzaW9uOiAxLjE1ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudGVzdC5mb3JtYXQ7CisKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0LlJ1bGVCYXNlZE51bWJlckZvcm1hdDsKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYudGVzdC5UZXN0Rm13azsKKworaW1wb3J0IGphdmEubWF0aC5CaWdJbnRlZ2VyOworaW1wb3J0IGphdmEubWF0aC5CaWdEZWNpbWFsOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CitpbXBvcnQgamF2YS50ZXh0Lk51bWJlckZvcm1hdDsKKworcHVibGljIGNsYXNzIFJibmZUZXN0IGV4dGVuZHMgVGVzdEZtd2sgeworICAgIC8qKgorICAgICAqIFB1dHMgYSBjb3B5cmlnaHQgaW4gdGhlIC5jbGFzcyBmaWxlCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodE5vdGljZQorICAgICAgICA9ICJDb3B5cmlnaHQgXHUwMGE5MTk5Ny0xOTk5IElCTSBDb3JwLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4iOworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICBSYm5mVGVzdCB0ZXN0ID0gbmV3IFJibmZUZXN0KCk7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHRlc3QucnVuKGFyZ3MpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChUaHJvd2FibGUgZSkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJFbnRpcmUgdGVzdCBmYWlsZWQgYmVjYXVzZSBvZiBleGNlcHRpb246ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGUudG9TdHJpbmcoKSk7CisgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworICAgICAgICB9CisgICAgfQorCisgICAgc3RhdGljIFN0cmluZyBmcmFjUnVsZXMgPSAKKyAgICAgICAgIiVtYWluOlxuIiArCisgICAgICAgIC8vIHRoaXMgcnVsZSBmb3JtYXRzIHRoZSBudW1iZXIgaWYgaXQncyAxIG9yIG1vcmUuICBJdCBmb3JtYXRzCisgICAgICAgIC8vIHRoZSBpbnRlZ3JhbCBwYXJ0IHVzaW5nIGEgRGVjaW1hbEZvcm1hdCAoIiMsIyMwIiBwdXRzCisgICAgICAgIC8vIHRob3VzYW5kcyBzZXBhcmF0b3JzIGluIHRoZSByaWdodCBwbGFjZXMpIGFuZCB0aGUgZnJhY3Rpb25hbAorICAgICAgICAvLyBwYXJ0IHVzaW5nICUlZnJhYy4gIElmIHRoZXJlIGlzIG5vIGZyYWN0aW9uYWwgcGFydCwgaXQKKyAgICAgICAgLy8ganVzdCBzaG93cyB0aGUgaW50ZWdyYWwgcGFydC4KKyAgICAgICAgIiAgICB4LjA6IDwjLCMjMDxbID4lJWZyYWM+XTtcbiIgKworICAgICAgICAvLyB0aGlzIHJ1bGUgZm9ybWF0cyB0aGUgbnVtYmVyIGlmIGl0J3MgYmV0d2VlbiAwIGFuZCAxLiAgSXQKKyAgICAgICAgLy8gc2hvd3Mgb25seSB0aGUgZnJhY3Rpb25hbCBwYXJ0ICgwLjUgc2hvd3MgdXAgYXMgIjEvMiwiIG5vdAorICAgICAgICAvLyAiMCAxLzIiKQorICAgICAgICAiICAgIDAueDogPiUlZnJhYz47XG4iICsKKyAgICAgICAgLy8gdGhlIGZyYWN0aW9uIHJ1bGUgc2V0LiAgVGhpcyB3b3JrcyB0aGUgc2FtZSB3YXkgYXMgdGhlIG9uZSBpbiB0aGUKKyAgICAgICAgLy8gcHJlY2VkaW5nIGV4YW1wbGU6IFdlIG11bHRpcGx5IHRoZSBmcmFjdGlvbmFsIHBhcnQgb2YgdGhlIG51bWJlcgorICAgICAgICAvLyBiZWluZyBmb3JtYXR0ZWQgYnkgZWFjaCBydWxlJ3MgYmFzZSB2YWx1ZSBhbmQgdXNlIHRoZSBydWxlIHRoYXQKKyAgICAgICAgLy8gcHJvZHVjZXMgdGhlIHJlc3VsdCBjbG9zZXN0IHRvIDAgKG9yIHRoZSBmaXJzdCBydWxlIHRoYXQgcHJvZHVjZXMgMCkuCisgICAgICAgIC8vIFNpbmNlIHdlIG9ubHkgcHJvdmlkZSBydWxlcyBmb3IgdGhlIG51bWJlcnMgZnJvbSAyIHRvIDEwLCB3ZSBrbm93CisgICAgICAgIC8vIHdlJ2xsIGdldCBhIGZyYWN0aW9uIHdpdGggYSBkZW5vbWluYXRvciBiZXR3ZWVuIDIgYW5kIDEwLgorICAgICAgICAvLyAiPDA8IiBjYXVzZXMgdGhlIG51bWVyYXRvciBvZiB0aGUgZnJhY3Rpb24gdG8gYmUgZm9ybWF0dGVkCisgICAgICAgIC8vIHVzaW5nIG51bWVyYWxzCisgICAgICAgICIlJWZyYWM6XG4iICsKKyAgICAgICAgIiAgICAyOiAxLzI7XG4iICsKKyAgICAgICAgIiAgICAzOiA8MDwvMztcbiIgKworICAgICAgICAiICAgIDQ6IDwwPC80O1xuIiArCisgICAgICAgICIgICAgNTogPDA8LzU7XG4iICsKKyAgICAgICAgIiAgICA2OiA8MDwvNjtcbiIgKworICAgICAgICAiICAgIDc6IDwwPC83O1xuIiArCisgICAgICAgICIgICAgODogPDA8Lzg7XG4iICsKKyAgICAgICAgIiAgICA5OiA8MDwvOTtcbiIgKworICAgICAgICAiICAgMTA6IDwwPC8xMDtcbiI7CisKKyAgICBzdGF0aWMgeworICAgICAgICAvLyBtb25kbyBoYWNrCisJY2hhcltdIGZyYWNSdWxlc0FyciA9IGZyYWNSdWxlcy50b0NoYXJBcnJheSgpOworICAgICAgICBpbnQgbGVuID0gZnJhY1J1bGVzQXJyLmxlbmd0aDsKKyAgICAgICAgaW50IGNoYW5nZSA9IDI7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyArK2kpIHsKKyAgICAgICAgICAgIGNoYXIgY2ggPSBmcmFjUnVsZXNBcnJbaV07CisgICAgICAgICAgICBpZiAoY2ggPT0gJ1xuJykgeworICAgICAgICAgICAgICAgIGNoYW5nZSA9IDI7IC8vIGNoYW5nZSBvaworICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PSAnOicpIHsKKyAgICAgICAgICAgICAgICBjaGFuZ2UgPSAxOyAvLyBjaGFuZ2UsIGJ1dCBvbmNlIHdlIGhpdCBhIG5vbi1zcGFjZSBjaGFyLCBkb24ndCBjaGFuZ2UKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoY2ggPT0gJyAnKSB7CisgICAgICAgICAgICAgICAgaWYgKGNoYW5nZSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGZyYWNSdWxlc0FycltpXSA9IChjaGFyKTB4MjAwZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChjaGFuZ2UgPT0gMSkgeworICAgICAgICAgICAgICAgICAgICBjaGFuZ2UgPSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCWZyYWNSdWxlcyA9IG5ldyBTdHJpbmcoZnJhY1J1bGVzQXJyKTsKKyAgICB9CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIGR1cmF0aW9uSW5TZWNvbmRzUnVsZXMgPQorICAgICAgICAvLyBtYWluIHJ1bGUgc2V0IGZvciBmb3JtYXR0aW5nIHdpdGggd29yZHMKKyAgICAgICAgIiV3aXRoLXdvcmRzOlxuIgorICAgICAgICAvLyB0YWtlIGNhcmUgb2Ygc2luZ3VsYXIgYW5kIHBsdXJhbCBmb3JtcyBvZiAic2Vjb25kIgorICAgICAgICArICIgICAgMCBzZWNvbmRzOyAxIHNlY29uZDsgPTA9IHNlY29uZHM7XG4iCisgICAgICAgIC8vIHVzZSAlJW1pbiB0byBmb3JtYXQgdmFsdWVzIGdyZWF0ZXIgdGhhbiA2MCBzZWNvbmRzCisgICAgICAgICsgIiAgICA2MC82MDogPCUlbWluPFssID4+XTtcbiIKKyAgICAgICAgLy8gdXNlICUlaHIgdG8gZm9ybWF0IHZhbHVlcyBncmVhdGVyIHRoYW4gMyw2MDAgc2Vjb25kcworICAgICAgICAvLyAodGhlICI+Pj4iIGJlbG93IGNhdXNlcyB1cyB0byBzZWUgdGhlIG51bWJlciBvZiBtaW51dGVzCisgICAgICAgIC8vIHdoZW4gd2hlbiB0aGVyZSBhcmUgemVybyBtaW51dGVzKQorICAgICAgICArICIgICAgMzYwMC82MDogPCUlaHI8WywgPj4+XTtcbiIKKyAgICAgICAgLy8gdGhpcyBydWxlIHNldCB0YWtlcyBjYXJlIG9mIHRoZSBzaW5ndWxhciBhbmQgcGx1cmFsIGZvcm1zCisgICAgICAgIC8vIG9mICJtaW51dGUiCisgICAgICAgICsgIiUlbWluOlxuIgorICAgICAgICArICIgICAgMCBtaW51dGVzOyAxIG1pbnV0ZTsgPTA9IG1pbnV0ZXM7XG4iCisgICAgICAgIC8vIHRoaXMgcnVsZSBzZXQgdGFrZXMgY2FyZSBvZiB0aGUgc2luZ3VsYXIgYW5kIHBsdXJhbCBmb3JtcworICAgICAgICAvLyBvZiAiaG91ciIKKyAgICAgICAgKyAiJSVocjpcbiIKKyAgICAgICAgKyAiICAgIDAgaG91cnM7IDEgaG91cjsgPTA9IGhvdXJzO1xuIgorCisgICAgICAgIC8vIG1haW4gcnVsZSBzZXQgZm9yIGZvcm1hdHRpbmcgaW4gbnVtZXJhbHMKKyAgICAgICAgKyAiJWluLW51bWVyYWxzOlxuIgorICAgICAgICAvLyB2YWx1ZXMgYmVsb3cgNjAgc2Vjb25kcyBhcmUgc2hvd24gd2l0aCAic2VjLiIKKyAgICAgICAgKyAiICAgID0wPSBzZWMuO1xuIgorICAgICAgICAvLyBoaWdoZXIgdmFsdWVzIGFyZSBzaG93biB3aXRoIGNvbG9uczogJSVtaW4tc2VjIGlzIHVzZWQgZm9yCisgICAgICAgIC8vIHZhbHVlcyBiZWxvdyAzLDYwMCBzZWNvbmRzLi4uCisgICAgICAgICsgIiAgICA2MDogPSUlbWluLXNlYz07XG4iCisgICAgICAgIC8vIC4uLmFuZCAlJWhyLW1pbi1zZWMgaXMgdXNlZCBmb3IgdmFsdWVzIG9mIDMsNjAwIHNlY29uZHMKKyAgICAgICAgLy8gYW5kIGFib3ZlCisgICAgICAgICsgIiAgICAzNjAwOiA9JSVoci1taW4tc2VjPTtcbiIKKyAgICAgICAgLy8gdGhpcyBydWxlIGNhdXNlcyB2YWx1ZXMgb2YgbGVzcyB0aGFuIDEwIG1pbnV0ZXMgdG8gc2hvdyB3aXRob3V0CisgICAgICAgIC8vIGEgbGVhZGluZyB6ZXJvCisgICAgICAgICsgIiUlbWluLXNlYzpcbiIKKyAgICAgICAgKyAiICAgIDA6IDo9MDA9O1xuIgorICAgICAgICArICIgICAgNjAvNjA6IDwwPD4+O1xuIgorICAgICAgICAvLyB0aGlzIHJ1bGUgc2V0IGlzIHVzZWQgZm9yIHZhbHVlcyBvZiAzLDYwMCBvciBtb3JlLiAgTWludXRlcyBhcmUgYWx3YXlzCisgICAgICAgIC8vIHNob3duLCBhbmQgYWx3YXlzIHNob3duIHdpdGggdHdvIGRpZ2l0cworICAgICAgICArICIlJWhyLW1pbi1zZWM6XG4iCisgICAgICAgICsgIiAgICAwOiA6PTAwPTtcbiIKKyAgICAgICAgKyAiICAgIDYwLzYwOiA8MDA8Pj47XG4iCisgICAgICAgICsgIiAgICAzNjAwLzYwOiA8IywjIzA8Oj4+PjtcbiIKKyAgICAgICAgLy8gdGhlIGxlbmllbnQtcGFyc2UgcnVsZXMgYWxsb3cgc2V2ZXJhbCBkaWZmZXJlbnQgY2hhcmFjdGVycyB0byBiZSB1c2VkCisgICAgICAgIC8vIGFzIGRlbGltaXRlcnMgYmV0d2VlbiBob3VycywgbWludXRlcywgYW5kIHNlY29uZHMKKyAgICAgICAgKyAiJSVsZW5pZW50LXBhcnNlOlxuIgorICAgICAgICArICIgICAgJiA6ID0gLiA9ICcgJyA9IC07XG4iOworCisgICAgcHVibGljIHZvaWQgVGVzdENvdmVyYWdlKCkgeworICAgICAgICAvLyBleHRyYSBjYWxscyB0byBib29zdCBjb3ZlcmFnZSBudW1iZXJzCisgICAgICAgIFJ1bGVCYXNlZE51bWJlckZvcm1hdCBmbXQwID0gbmV3IFJ1bGVCYXNlZE51bWJlckZvcm1hdChSdWxlQmFzZWROdW1iZXJGb3JtYXQuU1BFTExPVVQpOworICAgICAgICBSdWxlQmFzZWROdW1iZXJGb3JtYXQgZm10MSA9IChSdWxlQmFzZWROdW1iZXJGb3JtYXQpZm10MC5jbG9uZSgpOworICAgICAgICBSdWxlQmFzZWROdW1iZXJGb3JtYXQgZm10MiA9IG5ldyBSdWxlQmFzZWROdW1iZXJGb3JtYXQoUnVsZUJhc2VkTnVtYmVyRm9ybWF0LlNQRUxMT1VUKTsKKyAgICAgICAgaWYgKCFmbXQwLmVxdWFscyhmbXQwKSkgeworICAgICAgICAgICAgZXJybG4oInNlbGYgZXF1YWxpdHkgZmFpbHMiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWZtdDAuZXF1YWxzKGZtdDEpKSB7CisgICAgICAgICAgICBlcnJsbigiY2xvbmUgZXF1YWxpdHkgZmFpbHMiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWZtdDAuZXF1YWxzKGZtdDIpKSB7CisgICAgICAgICAgICBlcnJsbigiZHVwbGljYXRlIGVxdWFsaXR5IGZhaWxzIik7CisgICAgICAgIH0KKyAgICAgICAgU3RyaW5nIHN0ciA9IGZtdDAudG9TdHJpbmcoKTsKKyAgICAgICAgbG9nbG4oc3RyKTsKKworICAgICAgICBSdWxlQmFzZWROdW1iZXJGb3JtYXQgZm10MyA9ICBuZXcgUnVsZUJhc2VkTnVtYmVyRm9ybWF0KGR1cmF0aW9uSW5TZWNvbmRzUnVsZXMpOworCisgICAgICAgIGlmIChmbXQwLmVxdWFscyhmbXQzKSkgeworICAgICAgICAgICAgZXJybG4oIm5vbmVxdWFsIGZhaWxzIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFmbXQzLmVxdWFscyhmbXQzKSkgeworICAgICAgICAgICAgZXJybG4oInNlbGYgZXF1YWwgMiBmYWlscyIpOworICAgICAgICB9CisgICAgICAgIHN0ciA9IGZtdDMudG9TdHJpbmcoKTsKKyAgICAgICAgbG9nbG4oc3RyKTsKKworICAgICAgICBTdHJpbmdbXSBuYW1lcyA9IGZtdDMuZ2V0UnVsZVNldE5hbWVzKCk7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZtdDMuc2V0RGVmYXVsdFJ1bGVTZXQobnVsbCk7CisgICAgICAgICAgICBmbXQzLnNldERlZmF1bHRSdWxlU2V0KCIlJWZvbyIpOworICAgICAgICAgICAgZXJybG4oInNkcmYgJSVmb28gZGlkbid0IGZhaWwiKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgfQorCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmbXQzLnNldERlZmF1bHRSdWxlU2V0KCIlYm9ndXMiKTsKKyAgICAgICAgICAgIGVycmxuKCJzZHJmICVib2d1cyBkaWRuJ3QgZmFpbCIpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICB9CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHN0ciA9IGZtdDMuZm9ybWF0KDIuMywgbmFtZXNbMF0pOworICAgICAgICAgICAgbG9nbG4oc3RyKTsKKyAgICAgICAgICAgIHN0ciA9IGZtdDMuZm9ybWF0KDIuMywgIiUlZm9vIik7CisgICAgICAgICAgICBlcnJsbigiZm9ybWF0IGRvdWJsZSAlJWZvbyBkaWRuJ3QgZmFpbCIpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICB9CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHN0ciA9IGZtdDMuZm9ybWF0KDEyM0wsIG5hbWVzWzBdKTsKKyAgICAgICAgICAgIGxvZ2xuKHN0cik7CisgICAgICAgICAgICBzdHIgPSBmbXQzLmZvcm1hdCgxMjNMLCAiJSVmb28iKTsKKyAgICAgICAgICAgIGVycmxuKCJmb3JtYXQgZG91YmxlICUlZm9vIGRpZG4ndCBmYWlsIik7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgIH0KKworICAgICAgICBSdWxlQmFzZWROdW1iZXJGb3JtYXQgZm10NCA9IG5ldyBSdWxlQmFzZWROdW1iZXJGb3JtYXQoZnJhY1J1bGVzLCBMb2NhbGUuRU5HTElTSCk7CisgICAgICAgIFJ1bGVCYXNlZE51bWJlckZvcm1hdCBmbXQ1ID0gbmV3IFJ1bGVCYXNlZE51bWJlckZvcm1hdChmcmFjUnVsZXMsIExvY2FsZS5FTkdMSVNIKTsKKyAgICAgICAgc3RyID0gZm10NC50b1N0cmluZygpOworICAgICAgICBsb2dsbihzdHIpOworICAgICAgICBpZiAoIWZtdDQuZXF1YWxzKGZtdDUpKSB7CisgICAgICAgICAgICBlcnJsbigiZHVwbGljYXRlIDIgZXF1YWxpdHkgZmFpbGVkIik7CisgICAgICAgIH0KKyAgICAgICAgc3RyID0gZm10NC5mb3JtYXQoMTIzTCk7CisgICAgICAgIGxvZ2xuKHN0cik7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBOdW1iZXIgbnVtID0gZm10NC5wYXJzZShzdHIpOworICAgICAgICAgICAgbG9nbG4obnVtLnRvU3RyaW5nKCkpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oInBhcnNlIGNhdWdodCBleGNlcHRpb24iKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0ciA9IGZtdDQuZm9ybWF0KC4wMDAxMjMpOworICAgICAgICBsb2dsbihzdHIpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgTnVtYmVyIG51bSA9IGZtdDQucGFyc2Uoc3RyKTsKKyAgICAgICAgICAgIGxvZ2xuKG51bS50b1N0cmluZygpKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJwYXJzZSBjYXVnaHQgZXhjZXB0aW9uIik7CisgICAgICAgIH0KKworICAgICAgICBzdHIgPSBmbXQ0LmZvcm1hdCg0NTYuMDAwMTIzKTsKKyAgICAgICAgbG9nbG4oc3RyKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIE51bWJlciBudW0gPSBmbXQ0LnBhcnNlKHN0cik7CisgICAgICAgICAgICBsb2dsbihudW0udG9TdHJpbmcoKSk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigicGFyc2UgY2F1Z2h0IGV4Y2VwdGlvbiIpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdFVuZGVmaW5lZFNwZWxsb3V0KCkgeworICAgICAgICBMb2NhbGUgZ3JlZWsgPSBuZXcgTG9jYWxlKCJlbCIsICIiLCAiIik7CisgICAgICAgIFJ1bGVCYXNlZE51bWJlckZvcm1hdFtdIGZvcm1hdHRlcnMgPSB7CisgICAgICAgICAgICBuZXcgUnVsZUJhc2VkTnVtYmVyRm9ybWF0KGdyZWVrLCBSdWxlQmFzZWROdW1iZXJGb3JtYXQuU1BFTExPVVQpLAorICAgICAgICAgICAgbmV3IFJ1bGVCYXNlZE51bWJlckZvcm1hdChncmVlaywgUnVsZUJhc2VkTnVtYmVyRm9ybWF0Lk9SRElOQUwpLAorICAgICAgICAgICAgbmV3IFJ1bGVCYXNlZE51bWJlckZvcm1hdChncmVlaywgUnVsZUJhc2VkTnVtYmVyRm9ybWF0LkRVUkFUSU9OKSwKKyAgICAgICAgfTsKKworICAgICAgICBTdHJpbmdbXSBkYXRhID0geworICAgICAgICAgICAgIjAiLAorICAgICAgICAgICAgIjEiLAorICAgICAgICAgICAgIjE1IiwKKyAgICAgICAgICAgICIyMCIsCisgICAgICAgICAgICAiMjMiLAorICAgICAgICAgICAgIjczIiwKKyAgICAgICAgICAgICI4OCIsCisgICAgICAgICAgICAiMTAwIiwKKyAgICAgICAgICAgICIxMDYiLAorICAgICAgICAgICAgIjEyNyIsCisgICAgICAgICAgICAiMjAwIiwKKyAgICAgICAgICAgICI1NzkiLAorICAgICAgICAgICAgIjEsMDAwIiwKKyAgICAgICAgICAgICIyLDAwMCIsCisgICAgICAgICAgICAiMywwMDQiLAorICAgICAgICAgICAgIjQsNTY3IiwKKyAgICAgICAgICAgICIxNSw5NDMiLAorICAgICAgICAgICAgIjEwNSwwMDAiLAorICAgICAgICAgICAgIjIsMzQ1LDY3OCIsCisgICAgICAgICAgICAiLTM2IiwKKyAgICAgICAgICAgICItMzYuOTEyMTUiLAorICAgICAgICAgICAgIjIzNC41Njc4OSIKKyAgICAgICAgfTsKKworICAgICAgICBOdW1iZXJGb3JtYXQgZGVjRm9ybWF0ID0gTnVtYmVyRm9ybWF0LmdldEluc3RhbmNlKExvY2FsZS5VUyk7CisgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgZm9ybWF0dGVycy5sZW5ndGg7ICsraikgeworICAgICAgICAgICAgY29tLmlibS5pY3UudGV4dC5OdW1iZXJGb3JtYXQgZm9ybWF0dGVyID0gZm9ybWF0dGVyc1tqXTsKKyAgICAgICAgICAgIGxvZ2xuKCJmb3JtYXR0ZXJbIiArIGogKyAiXSIpOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHJlc3VsdCA9IGZvcm1hdHRlci5mb3JtYXQoZGVjRm9ybWF0LnBhcnNlKGRhdGFbaV0pKTsKKyAgICAgICAgICAgICAgICAgICAgbG9nbG4oIlsiICsgaSArICJdICIgKyBkYXRhW2ldICsgIiA9PT4gIiArIHJlc3VsdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigiZm9ybWF0dGVyWyIgKyBqICsgIl0sIGRhdGFbIiArIGkgKyAiXSAiICsgZGF0YVtpXSArICIgdGhyZXcgZXhjZXB0aW9uICIgKyBlLmdldE1lc3NhZ2UoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUGVyZm9ybSBhIHNpbXBsZSBzcG90IGNoZWNrIG9uIHRoZSBFbmdsaXNoIHNwZWxsb3V0IHJ1bGVzCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEVuZ2xpc2hTcGVsbG91dCgpIHsKKyAgICAgICAgUnVsZUJhc2VkTnVtYmVyRm9ybWF0IGZvcm1hdHRlcgorICAgICAgICAgICAgPSBuZXcgUnVsZUJhc2VkTnVtYmVyRm9ybWF0KExvY2FsZS5VUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdWxlQmFzZWROdW1iZXJGb3JtYXQuU1BFTExPVVQpOworICAgICAgICBTdHJpbmdbXVtdIHRlc3REYXRhID0geworICAgICAgICAgICAgeyAiMSIsICJvbmUiIH0sCisgICAgICAgICAgICB7ICIxNSIsICJmaWZ0ZWVuIiB9LAorICAgICAgICAgICAgeyAiMjAiLCAidHdlbnR5IiB9LAorICAgICAgICAgICAgeyAiMjMiLCAidHdlbnR5LXRocmVlIiB9LAorICAgICAgICAgICAgeyAiNzMiLCAic2V2ZW50eS10aHJlZSIgfSwKKyAgICAgICAgICAgIHsgIjg4IiwgImVpZ2h0eS1laWdodCIgfSwKKyAgICAgICAgICAgIHsgIjEwMCIsICJvbmUgaHVuZHJlZCIgfSwKKyAgICAgICAgICAgIHsgIjEwNiIsICJvbmUgaHVuZHJlZCBhbmQgc2l4IiB9LAorICAgICAgICAgICAgeyAiMTI3IiwgIm9uZSBodW5kcmVkIGFuZCB0d2VudHktc2V2ZW4iIH0sCisgICAgICAgICAgICB7ICIyMDAiLCAidHdvIGh1bmRyZWQiIH0sCisgICAgICAgICAgICB7ICI1NzkiLCAiZml2ZSBodW5kcmVkIGFuZCBzZXZlbnR5LW5pbmUiIH0sCisgICAgICAgICAgICB7ICIxLDAwMCIsICJvbmUgdGhvdXNhbmQiIH0sCisgICAgICAgICAgICB7ICIyLDAwMCIsICJ0d28gdGhvdXNhbmQiIH0sCisgICAgICAgICAgICB7ICIzLDAwNCIsICJ0aHJlZSB0aG91c2FuZCBhbmQgZm91ciIgfSwKKyAgICAgICAgICAgIHsgIjQsNTY3IiwgImZvdXIgdGhvdXNhbmQgZml2ZSBodW5kcmVkIGFuZCBzaXh0eS1zZXZlbiIgfSwKKyAgICAgICAgICAgIHsgIjE1LDk0MyIsICJmaWZ0ZWVuIHRob3VzYW5kIG5pbmUgaHVuZHJlZCBhbmQgZm9ydHktdGhyZWUiIH0sCisgICAgICAgICAgICB7ICIyLDM0NSw2NzgiLCAidHdvIG1pbGxpb24sIHRocmVlIGh1bmRyZWQgYW5kIGZvcnR5LWZpdmUgIgorICAgICAgICAgICAgICArICJ0aG91c2FuZCwgc2l4IGh1bmRyZWQgYW5kIHNldmVudHktZWlnaHQiIH0sCisgICAgICAgICAgICB7ICItMzYiLCAibWludXMgdGhpcnR5LXNpeCIgfSwKKyAgICAgICAgICAgIHsgIjIzNC41NjciLCAidHdvIGh1bmRyZWQgYW5kIHRoaXJ0eS1mb3VyIHBvaW50IGZpdmUgc2l4IHNldmVuIiB9CisgICAgICAgIH07CisKKyAgICAgICAgZG9UZXN0KGZvcm1hdHRlciwgdGVzdERhdGEsIHRydWUpOworCisgICAgICAgIGZvcm1hdHRlci5zZXRMZW5pZW50UGFyc2VNb2RlKHRydWUpOworICAgICAgICBTdHJpbmdbXVtdIGxwVGVzdERhdGEgPSB7CisgICAgICAgICAgICB7ICJGT3VyaHVuZHJlZCAgICAgdGhpUlRZIHNpeCIsICI0MzYiIH0sCisgICAgICAgICAgICAvLyB0ZXN0IHNwYWNlcyBiZWZvcmUgZmlmdHktNyBjYXVzaW5nIGxlbmllbnQgcGFyc2UgbWF0Y2ggb2YgImZpZnR5LSIgdG8gIiBmaWZ0eSIKKyAgICAgICAgICAgIC8vIGxlYXZpbmcgIi03IiBmb3IgcmVtYWluaW5nIHBhcnNlLCByZXN1bHRpbmcgaW4gMjY0MyBhcyB0aGUgcGFyc2UgcmVzdWx0LgorICAgICAgICAgICAgeyAiZmlmdHktNyIsICI1NyIgfSwKKyAgICAgICAgICAgIHsgIiBmaWZ0eS03IiwgIjU3IiB9LAorICAgICAgICAgICAgeyAiICBmaWZ0eS03IiwgIjU3IiB9LAorICAgICAgICAgICAgeyAiMiB0aG91c2FuZCBzaXggSFVORFJFRCAgIGZpZnR5LTciLCAiMiw2NTciIH0sCisgICAgICAgICAgICB7ICJmaWZ0ZWVuIGh1bmRyZWQgYW5kIHplcm8iLCAiMSw1MDAiIH0KKyAgICAgICAgfTsKKyAgICAgICAgZG9MZW5pZW50UGFyc2VUZXN0KGZvcm1hdHRlciwgbHBUZXN0RGF0YSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUGVyZm9ybSBhIHNpbXBsZSBzcG90IGNoZWNrIG9uIHRoZSBFbmdsaXNoIG9yZGluYWwtYWJicmV2aWF0aW9uIHJ1bGVzCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdE9yZGluYWxBYmJyZXZpYXRpb25zKCkgeworICAgICAgICBSdWxlQmFzZWROdW1iZXJGb3JtYXQgZm9ybWF0dGVyCisgICAgICAgICAgICA9IG5ldyBSdWxlQmFzZWROdW1iZXJGb3JtYXQoTG9jYWxlLlVTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZE51bWJlckZvcm1hdC5PUkRJTkFMKTsKKyAgICAgICAgU3RyaW5nW11bXSB0ZXN0RGF0YSA9IHsKKyAgICAgICAgICAgIHsgIjEiLCAiMXN0IiB9LAorICAgICAgICAgICAgeyAiMiIsICIybmQiIH0sCisgICAgICAgICAgICB7ICIzIiwgIjNyZCIgfSwKKyAgICAgICAgICAgIHsgIjQiLCAiNHRoIiB9LAorICAgICAgICAgICAgeyAiNyIsICI3dGgiIH0sCisgICAgICAgICAgICB7ICIxMCIsICIxMHRoIiB9LAorICAgICAgICAgICAgeyAiMTEiLCAiMTF0aCIgfSwKKyAgICAgICAgICAgIHsgIjEzIiwgIjEzdGgiIH0sCisgICAgICAgICAgICB7ICIyMCIsICIyMHRoIiB9LAorICAgICAgICAgICAgeyAiMjEiLCAiMjFzdCIgfSwKKyAgICAgICAgICAgIHsgIjIyIiwgIjIybmQiIH0sCisgICAgICAgICAgICB7ICIyMyIsICIyM3JkIiB9LAorICAgICAgICAgICAgeyAiMjQiLCAiMjR0aCIgfSwKKyAgICAgICAgICAgIHsgIjMzIiwgIjMzcmQiIH0sCisgICAgICAgICAgICB7ICIxMDIiLCAiMTAybmQiIH0sCisgICAgICAgICAgICB7ICIzMTIiLCAiMzEydGgiIH0sCisgICAgICAgICAgICB7ICIxMiwzNDUiLCAiMTIsMzQ1dGgiIH0KKyAgICAgICAgfTsKKworICAgICAgICBkb1Rlc3QoZm9ybWF0dGVyLCB0ZXN0RGF0YSwgZmFsc2UpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFBlcmZvcm0gYSBzaW1wbGUgc3BvdCBjaGVjayBvbiB0aGUgZHVyYXRpb24tZm9ybWF0dGluZyBydWxlcworICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3REdXJhdGlvbnMoKSB7CisgICAgICAgIFJ1bGVCYXNlZE51bWJlckZvcm1hdCBmb3JtYXR0ZXIKKyAgICAgICAgICAgID0gbmV3IFJ1bGVCYXNlZE51bWJlckZvcm1hdChMb2NhbGUuVVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkTnVtYmVyRm9ybWF0LkRVUkFUSU9OKTsKKyAgICAgICAgU3RyaW5nW11bXSB0ZXN0RGF0YSA9IHsKKyAgICAgICAgICAgIHsgIjMsNjAwIiwgIjE6MDA6MDAiIH0sICAgICAgICAgICAgIC8vbW92ZSBtZSBhbmQgSSBmYWlsCisgICAgICAgICAgICB7ICIwIiwgIjAgc2VjLiIgfSwKKyAgICAgICAgICAgIHsgIjEiLCAiMSBzZWMuIiB9LAorICAgICAgICAgICAgeyAiMjQiLCAiMjQgc2VjLiIgfSwKKyAgICAgICAgICAgIHsgIjYwIiwgIjE6MDAiIH0sCisgICAgICAgICAgICB7ICI3MyIsICIxOjEzIiB9LAorICAgICAgICAgICAgeyAiMTQ1IiwgIjI6MjUiIH0sCisgICAgICAgICAgICB7ICI2NjYiLCAiMTE6MDYiIH0sCisgICAgICAgICAgICAvLyAgICAgICAgICAgIHsgIjMsNjAwIiwgIjE6MDA6MDAiIH0sCisgICAgICAgICAgICB7ICIzLDc0MCIsICIxOjAyOjIwIiB9LAorICAgICAgICAgICAgeyAiMTAsMjkzIiwgIjI6NTE6MzMiIH0KKyAgICAgICAgfTsKKworICAgICAgICBkb1Rlc3QoZm9ybWF0dGVyLCB0ZXN0RGF0YSwgdHJ1ZSk7CisKKyAgICAgICAgZm9ybWF0dGVyLnNldExlbmllbnRQYXJzZU1vZGUodHJ1ZSk7CisgICAgICAgIFN0cmluZ1tdW10gbHBUZXN0RGF0YSA9IHsKKyAgICAgICAgICAgIHsgIjItNTEtMzMiLCAiMTAsMjkzIiB9CisgICAgICAgIH07CisgICAgICAgIGRvTGVuaWVudFBhcnNlVGVzdChmb3JtYXR0ZXIsIGxwVGVzdERhdGEpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFBlcmZvcm0gYSBzaW1wbGUgc3BvdCBjaGVjayBvbiB0aGUgU3BhbmlzaCBzcGVsbG91dCBydWxlcworICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RTcGFuaXNoU3BlbGxvdXQoKSB7CisgICAgICAgIFJ1bGVCYXNlZE51bWJlckZvcm1hdCBmb3JtYXR0ZXIKKyAgICAgICAgICAgID0gbmV3IFJ1bGVCYXNlZE51bWJlckZvcm1hdChuZXcgTG9jYWxlKCJlcyIsICJlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiksIFJ1bGVCYXNlZE51bWJlckZvcm1hdC5TUEVMTE9VVCk7CisgICAgICAgIFN0cmluZ1tdW10gdGVzdERhdGEgPSB7CisgICAgICAgICAgICB7ICIxIiwgInVubyIgfSwKKyAgICAgICAgICAgIHsgIjYiLCAic2VpcyIgfSwKKyAgICAgICAgICAgIHsgIjE2IiwgImRpZWNpc1x1MDBlOWlzIiB9LAorICAgICAgICAgICAgeyAiMjAiLCAidmVpbnRlIiB9LAorICAgICAgICAgICAgeyAiMjQiLCAidmVpbnRpY3VhdHJvIiB9LAorICAgICAgICAgICAgeyAiMjYiLCAidmVpbnRpc1x1MDBlOWlzIiB9LAorICAgICAgICAgICAgeyAiNzMiLCAic2V0ZW50YSB5IHRyZXMiIH0sCisgICAgICAgICAgICB7ICI4OCIsICJvY2hlbnRhIHkgb2NobyIgfSwKKyAgICAgICAgICAgIHsgIjEwMCIsICJjaWVuIiB9LAorICAgICAgICAgICAgeyAiMTA2IiwgImNpZW50byBzZWlzIiB9LAorICAgICAgICAgICAgeyAiMTI3IiwgImNpZW50byB2ZWludGlzaWV0ZSIgfSwKKyAgICAgICAgICAgIHsgIjIwMCIsICJkb3NjaWVudG9zIiB9LAorICAgICAgICAgICAgeyAiNTc5IiwgInF1aW5pZW50b3Mgc2V0ZW50YSB5IG51ZXZlIiB9LAorICAgICAgICAgICAgeyAiMSwwMDAiLCAibWlsIiB9LAorICAgICAgICAgICAgeyAiMiwwMDAiLCAiZG9zIG1pbCIgfSwKKyAgICAgICAgICAgIHsgIjMsMDA0IiwgInRyZXMgbWlsIGN1YXRybyIgfSwKKyAgICAgICAgICAgIHsgIjQsNTY3IiwgImN1YXRybyBtaWwgcXVpbmllbnRvcyBzZXNlbnRhIHkgc2lldGUiIH0sCisgICAgICAgICAgICB7ICIxNSw5NDMiLCAicXVpbmNlIG1pbCBub3ZlY2llbnRvcyBjdWFyZW50YSB5IHRyZXMiIH0sCisgICAgICAgICAgICB7ICIyLDM0NSw2NzgiLCAiZG9zIG1pbGxcdTAwZjNuIHRyZXNjaWVudG9zIGN1YXJlbnRhIHkgY2luY28gbWlsICIKKyAgICAgICAgICAgICAgKyAic2Vpc2NpZW50b3Mgc2V0ZW50YSB5IG9jaG8ifSwKKyAgICAgICAgICAgIHsgIi0zNiIsICJtZW5vcyB0cmVpbnRhIHkgc2VpcyIgfSwKKyAgICAgICAgICAgIHsgIjIzNC41NjciLCAiZG9zY2llbnRvcyB0cmVpbnRhIHkgY3VhdHJvIHB1bnRvIGNpbmNvIHNlaXMgc2lldGUiIH0KKyAgICAgICAgfTsKKworICAgICAgICBkb1Rlc3QoZm9ybWF0dGVyLCB0ZXN0RGF0YSwgdHJ1ZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUGVyZm9ybSBhIHNpbXBsZSBzcG90IGNoZWNrIG9uIHRoZSBGcmVuY2ggc3BlbGxvdXQgcnVsZXMKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0RnJlbmNoU3BlbGxvdXQoKSB7CisgICAgICAgIFJ1bGVCYXNlZE51bWJlckZvcm1hdCBmb3JtYXR0ZXIKKyAgICAgICAgICAgID0gbmV3IFJ1bGVCYXNlZE51bWJlckZvcm1hdChMb2NhbGUuRlJBTkNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZE51bWJlckZvcm1hdC5TUEVMTE9VVCk7CisgICAgICAgIFN0cmluZ1tdW10gdGVzdERhdGEgPSB7CisgICAgICAgICAgICB7ICIxIiwgInVuIiB9LAorICAgICAgICAgICAgeyAiMTUiLCAicXVpbnplIiB9LAorICAgICAgICAgICAgeyAiMjAiLCAidmluZ3QiIH0sCisgICAgICAgICAgICB7ICIyMSIsICJ2aW5ndC1ldC11biIgfSwKKyAgICAgICAgICAgIHsgIjIzIiwgInZpbmd0LXRyb2lzIiB9LAorICAgICAgICAgICAgeyAiNjIiLCAic29peGFudGUtZGV1eCIgfSwKKyAgICAgICAgICAgIHsgIjcwIiwgInNvaXhhbnRlLWRpeCIgfSwKKyAgICAgICAgICAgIHsgIjcxIiwgInNvaXhhbnRlIGV0IG9uemUiIH0sCisgICAgICAgICAgICB7ICI3MyIsICJzb2l4YW50ZS10cmVpemUiIH0sCisgICAgICAgICAgICB7ICI4MCIsICJxdWF0cmUtdmluZ3RzIiB9LAorICAgICAgICAgICAgeyAiODgiLCAicXVhdHJlLXZpbmd0LWh1aXQiIH0sCisgICAgICAgICAgICB7ICIxMDAiLCAiY2VudCIgfSwKKyAgICAgICAgICAgIHsgIjEwNiIsICJjZW50IHNpeCIgfSwKKyAgICAgICAgICAgIHsgIjEyNyIsICJjZW50IHZpbmd0LXNlcHQiIH0sCisgICAgICAgICAgICB7ICIyMDAiLCAiZGV1eCBjZW50cyIgfSwKKyAgICAgICAgICAgIHsgIjU3OSIsICJjaW5xIGNlbnRzIHNvaXhhbnRlLWRpeC1uZXVmIiB9LAorICAgICAgICAgICAgeyAiMSwwMDAiLCAibWlsbGUiIH0sCisgICAgICAgICAgICB7ICIxLDEyMyIsICJvbnplIGNlbnRzIHZpbmd0LXRyb2lzIiB9LAorICAgICAgICAgICAgeyAiMSw1OTQiLCAibWlsbGUgY2lucSBjZW50cyBxdWF0cmUtdmluZ3QtcXVhdG9yemUiIH0sCisgICAgICAgICAgICB7ICIyLDAwMCIsICJkZXV4IG1pbGxlIiB9LAorICAgICAgICAgICAgeyAiMywwMDQiLCAidHJvaXMgbWlsbGUgcXVhdHJlIiB9LAorICAgICAgICAgICAgeyAiNCw1NjciLCAicXVhdHJlIG1pbGxlIGNpbnEgY2VudHMgc29peGFudGUtc2VwdCIgfSwKKyAgICAgICAgICAgIHsgIjE1LDk0MyIsICJxdWluemUgbWlsbGUgbmV1ZiBjZW50cyBxdWFyYW50ZS10cm9pcyIgfSwKKyAgICAgICAgICAgIHsgIjIsMzQ1LDY3OCIsICJkZXV4IG1pbGxpb24gdHJvaXMgY2VudHMgcXVhcmFudGUtY2lucSBtaWxsZSAiCisgICAgICAgICAgICAgICsgInNpeCBjZW50cyBzb2l4YW50ZS1kaXgtaHVpdCIgfSwKKyAgICAgICAgICAgIHsgIi0zNiIsICJtb2lucyB0cmVudGUtc2l4IiB9LAorICAgICAgICAgICAgeyAiMjM0LjU2NyIsICJkZXV4IGNlbnRzIHRyZW50ZS1xdWF0cmUgdmlyZ3VsZSBjaW5xIHNpeCBzZXB0IiB9CisgICAgICAgIH07CisKKyAgICAgICAgZG9UZXN0KGZvcm1hdHRlciwgdGVzdERhdGEsIHRydWUpOworCisgICAgICAgIGZvcm1hdHRlci5zZXRMZW5pZW50UGFyc2VNb2RlKHRydWUpOworICAgICAgICBTdHJpbmdbXVtdIGxwVGVzdERhdGEgPSB7CisgICAgICAgICAgICB7ICJ0cmVudGUtdW4iLCAiMzEiIH0sCisgICAgICAgICAgICB7ICJ1biBjZW50cyBxdWF0cmUgdmluZ3QgZGl4IGh1aXQiLCAiMTk4IiB9CisgICAgICAgIH07CisgICAgICAgIGRvTGVuaWVudFBhcnNlVGVzdChmb3JtYXR0ZXIsIGxwVGVzdERhdGEpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFBlcmZvcm0gYSBzaW1wbGUgc3BvdCBjaGVjayBvbiB0aGUgU3dpc3MgRnJlbmNoIHNwZWxsb3V0IHJ1bGVzCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdFN3aXNzRnJlbmNoU3BlbGxvdXQoKSB7CisgICAgICAgIFJ1bGVCYXNlZE51bWJlckZvcm1hdCBmb3JtYXR0ZXIKKyAgICAgICAgICAgID0gbmV3IFJ1bGVCYXNlZE51bWJlckZvcm1hdChuZXcgTG9jYWxlKCJmciIsICJDSCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiksIFJ1bGVCYXNlZE51bWJlckZvcm1hdC5TUEVMTE9VVCk7CisgICAgICAgIFN0cmluZ1tdW10gdGVzdERhdGEgPSB7CisgICAgICAgICAgICB7ICIxIiwgInVuIiB9LAorICAgICAgICAgICAgeyAiMTUiLCAicXVpbnplIiB9LAorICAgICAgICAgICAgeyAiMjAiLCAidmluZ3QiIH0sCisgICAgICAgICAgICB7ICIyMSIsICJ2aW5ndC1ldC11biIgfSwKKyAgICAgICAgICAgIHsgIjIzIiwgInZpbmd0LXRyb2lzIiB9LAorICAgICAgICAgICAgeyAiNjIiLCAic29peGFudGUtZGV1eCIgfSwKKyAgICAgICAgICAgIHsgIjcwIiwgInNlcHRhbnRlIiB9LAorICAgICAgICAgICAgeyAiNzEiLCAic2VwdGFudGUtZXQtdW4iIH0sCisgICAgICAgICAgICB7ICI3MyIsICJzZXB0YW50ZS10cm9pcyIgfSwKKyAgICAgICAgICAgIHsgIjgwIiwgIm9jdGFudGUiIH0sCisgICAgICAgICAgICB7ICI4OCIsICJvY3RhbnRlLWh1aXQiIH0sCisgICAgICAgICAgICB7ICIxMDAiLCAiY2VudCIgfSwKKyAgICAgICAgICAgIHsgIjEwNiIsICJjZW50IHNpeCIgfSwKKyAgICAgICAgICAgIHsgIjEyNyIsICJjZW50IHZpbmd0LXNlcHQiIH0sCisgICAgICAgICAgICB7ICIyMDAiLCAiZGV1eCBjZW50cyIgfSwKKyAgICAgICAgICAgIHsgIjU3OSIsICJjaW5xIGNlbnRzIHNlcHRhbnRlLW5ldWYiIH0sCisgICAgICAgICAgICB7ICIxLDAwMCIsICJtaWxsZSIgfSwKKyAgICAgICAgICAgIHsgIjEsMTIzIiwgIm9uemUgY2VudHMgdmluZ3QtdHJvaXMiIH0sCisgICAgICAgICAgICB7ICIxLDU5NCIsICJtaWxsZSBjaW5xIGNlbnRzIG5vbmFudGUtcXVhdHJlIiB9LAorICAgICAgICAgICAgeyAiMiwwMDAiLCAiZGV1eCBtaWxsZSIgfSwKKyAgICAgICAgICAgIHsgIjMsMDA0IiwgInRyb2lzIG1pbGxlIHF1YXRyZSIgfSwKKyAgICAgICAgICAgIHsgIjQsNTY3IiwgInF1YXRyZSBtaWxsZSBjaW5xIGNlbnRzIHNvaXhhbnRlLXNlcHQiIH0sCisgICAgICAgICAgICB7ICIxNSw5NDMiLCAicXVpbnplIG1pbGxlIG5ldWYgY2VudHMgcXVhcmFudGUtdHJvaXMiIH0sCisgICAgICAgICAgICB7ICIyLDM0NSw2NzgiLCAiZGV1eCBtaWxsaW9uIHRyb2lzIGNlbnRzIHF1YXJhbnRlLWNpbnEgbWlsbGUgIgorICAgICAgICAgICAgICArICJzaXggY2VudHMgc2VwdGFudGUtaHVpdCIgfSwKKyAgICAgICAgICAgIHsgIi0zNiIsICJtb2lucyB0cmVudGUtc2l4IiB9LAorICAgICAgICAgICAgeyAiMjM0LjU2NyIsICJkZXV4IGNlbnRzIHRyZW50ZS1xdWF0cmUgdmlyZ3VsZSBjaW5xIHNpeCBzZXB0IiB9CisgICAgICAgIH07CisKKyAgICAgICAgZG9UZXN0KGZvcm1hdHRlciwgdGVzdERhdGEsIHRydWUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFBlcmZvcm0gYSBzaW1wbGUgc3BvdCBjaGVjayBvbiB0aGUgSXRhbGlhbiBzcGVsbG91dCBydWxlcworICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RJdGFsaWFuU3BlbGxvdXQoKSB7CisgICAgICAgIFJ1bGVCYXNlZE51bWJlckZvcm1hdCBmb3JtYXR0ZXIKKyAgICAgICAgICAgID0gbmV3IFJ1bGVCYXNlZE51bWJlckZvcm1hdChMb2NhbGUuSVRBTElBTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdWxlQmFzZWROdW1iZXJGb3JtYXQuU1BFTExPVVQpOworICAgICAgICBTdHJpbmdbXVtdIHRlc3REYXRhID0geworICAgICAgICAgICAgeyAiMSIsICJ1bm8iIH0sCisgICAgICAgICAgICB7ICIxNSIsICJxdWluZGljaSIgfSwKKyAgICAgICAgICAgIHsgIjIwIiwgInZlbnRpIiB9LAorICAgICAgICAgICAgeyAiMjMiLCAidmVudGl0cmUiIH0sCisgICAgICAgICAgICB7ICI3MyIsICJzZXR0YW50YXRyZSIgfSwKKyAgICAgICAgICAgIHsgIjg4IiwgIm90dGFudG90dG8iIH0sCisgICAgICAgICAgICB7ICIxMDAiLCAiY2VudG8iIH0sCisgICAgICAgICAgICB7ICIxMDYiLCAiY2VudG9zZWkiIH0sCisgICAgICAgICAgICB7ICIxMDgiLCAiY2VudG90dG8iIH0sCisgICAgICAgICAgICB7ICIxMjciLCAiY2VudG92ZW50aXNldHRlIiB9LAorICAgICAgICAgICAgeyAiMTgxIiwgImNlbnRvdHRhbnR1bm8iIH0sCisgICAgICAgICAgICB7ICIyMDAiLCAiZHVlY2VudG8iIH0sCisgICAgICAgICAgICB7ICI1NzkiLCAiY2lucXVlY2VudG9zZXR0YW50YW5vdmUiIH0sCisgICAgICAgICAgICB7ICIxLDAwMCIsICJtaWxsZSIgfSwKKyAgICAgICAgICAgIHsgIjIsMDAwIiwgImR1ZW1pbGEiIH0sCisgICAgICAgICAgICB7ICIzLDAwNCIsICJ0cmVtaWxhcXVhdHRybyIgfSwKKyAgICAgICAgICAgIHsgIjQsNTY3IiwgInF1YXR0cm9taWxhY2lucXVlY2VudG9zZXNzYW50YXNldHRlIiB9LAorICAgICAgICAgICAgeyAiMTUsOTQzIiwgInF1aW5kaWNpbWlsYW5vdmVjZW50b3F1YXJhbnRhdHJlIiB9LAorICAgICAgICAgICAgeyAiLTM2IiwgIm1lbm8gdHJlbnRpc2VpIiB9LAorICAgICAgICAgICAgeyAiMjM0LjU2NyIsICJkdWVjZW50b3RyZW50aXF1YXR0cm8gdmlyZ29sYSBjaW5xdWUgc2VpIHNldHRlIiB9CisgICAgICAgIH07CisKKyAgICAgICAgZG9UZXN0KGZvcm1hdHRlciwgdGVzdERhdGEsIHRydWUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFBlcmZvcm0gYSBzaW1wbGUgc3BvdCBjaGVjayBvbiB0aGUgR2VybWFuIHNwZWxsb3V0IHJ1bGVzCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEdlcm1hblNwZWxsb3V0KCkgeworICAgICAgICBSdWxlQmFzZWROdW1iZXJGb3JtYXQgZm9ybWF0dGVyCisgICAgICAgICAgICA9IG5ldyBSdWxlQmFzZWROdW1iZXJGb3JtYXQoTG9jYWxlLkdFUk1BTlksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkTnVtYmVyRm9ybWF0LlNQRUxMT1VUKTsKKyAgICAgICAgU3RyaW5nW11bXSB0ZXN0RGF0YSA9IHsKKyAgICAgICAgICAgIHsgIjEiLCAiZWlucyIgfSwKKyAgICAgICAgICAgIHsgIjE1IiwgImZcdTAwZmNuZnplaG4iIH0sCisgICAgICAgICAgICB7ICIyMCIsICJ6d2FuemlnIiB9LAorICAgICAgICAgICAgeyAiMjMiLCAiZHJlaXVuZHp3YW56aWciIH0sCisgICAgICAgICAgICB7ICI3MyIsICJkcmVpdW5kc2llYnppZyIgfSwKKyAgICAgICAgICAgIHsgIjg4IiwgImFjaHR1bmRhY2h0emlnIiB9LAorICAgICAgICAgICAgeyAiMTAwIiwgImh1bmRlcnQiIH0sCisgICAgICAgICAgICB7ICIxMDYiLCAiaHVuZGVydHNlY2hzIiB9LAorICAgICAgICAgICAgeyAiMTI3IiwgImh1bmRlcnRzaWViZW51bmR6d2FuemlnIiB9LAorICAgICAgICAgICAgeyAiMjAwIiwgInp3ZWlodW5kZXJ0IiB9LAorICAgICAgICAgICAgeyAiNTc5IiwgImZcdTAwZmNuZmh1bmRlcnRuZXVudW5kc2llYnppZyIgfSwKKyAgICAgICAgICAgIHsgIjEsMDAwIiwgInRhdXNlbmQiIH0sCisgICAgICAgICAgICB7ICIyLDAwMCIsICJ6d2VpdGF1c2VuZCIgfSwKKyAgICAgICAgICAgIHsgIjMsMDA0IiwgImRyZWl0YXVzZW5kdmllciIgfSwKKyAgICAgICAgICAgIHsgIjQsNTY3IiwgInZpZXJ0YXVzZW5kZlx1MDBmY25maHVuZGVydHNpZWJlbnVuZHNlY2h6aWciIH0sCisgICAgICAgICAgICB7ICIxNSw5NDMiLCAiZlx1MDBmY25memVobnRhdXNlbmRuZXVuaHVuZGVydGRyZWl1bmR2aWVyemlnIiB9LAorICAgICAgICAgICAgeyAiMiwzNDUsNjc4IiwgInp3ZWkgTWlsbGlvbmVuIGRyZWlodW5kZXJ0Zlx1MDBmY25mdW5kdmllcnppZ3RhdXNlbmQiCisgICAgICAgICAgICAgICsgInNlY2hzaHVuZGVydGFjaHR1bmRzaWViemlnIiB9CisgICAgICAgIH07CisKKyAgICAgICAgZG9UZXN0KGZvcm1hdHRlciwgdGVzdERhdGEsIHRydWUpOworCisgICAgICAgIGZvcm1hdHRlci5zZXRMZW5pZW50UGFyc2VNb2RlKHRydWUpOworICAgICAgICBTdHJpbmdbXVtdIGxwVGVzdERhdGEgPSB7CisgICAgICAgICAgICB7ICJlaW4gVGF1c2VuZCBzZWNocyBIdW5kZXJ0IGZ1ZW5mdW5kZHJlaXNzaWciLCAiMSw2MzUiIH0KKyAgICAgICAgfTsKKyAgICAgICAgZG9MZW5pZW50UGFyc2VUZXN0KGZvcm1hdHRlciwgbHBUZXN0RGF0YSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUGVyZm9ybSBhIHNpbXBsZSBzcG90IGNoZWNrIG9uIHRoZSBHZXJtYW4gc3BlbGxvdXQgcnVsZXMKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0VGhhaVNwZWxsb3V0KCkgeworICAgICAgICBSdWxlQmFzZWROdW1iZXJGb3JtYXQgZm9ybWF0dGVyCisgICAgICAgICAgICA9IG5ldyBSdWxlQmFzZWROdW1iZXJGb3JtYXQobmV3IExvY2FsZSgidGgiLCAiVEgiLCAiIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkTnVtYmVyRm9ybWF0LlNQRUxMT1VUKTsKKyAgICAgICAgU3RyaW5nW11bXSB0ZXN0RGF0YSA9IHsKKyAgICAgICAgICAgIHsgIjAiLCAiXHUwZTI4XHUwZTM5XHUwZTE5XHUwZTIyXHUwZTRjIiB9LAorICAgICAgICAgICAgeyAiMSIsICJcdTBlMmJcdTBlMTlcdTBlMzZcdTBlNDhcdTBlMDciIH0sCisgICAgICAgICAgICB7ICIxMCIsICJcdTBlMmFcdTBlMzRcdTBlMWEiIH0sCisgICAgICAgICAgICB7ICIxMSIsICJcdTBlMmFcdTBlMzRcdTBlMWFcdTBlNDBcdTBlMmRcdTBlNDdcdTBlMTQiIH0sCisgICAgICAgICAgICB7ICIyMSIsICJcdTBlMjJcdTBlMzVcdTBlNDhcdTBlMmFcdTBlMzRcdTBlMWFcdTBlNDBcdTBlMmRcdTBlNDdcdTBlMTQiIH0sCisgICAgICAgICAgICB7ICIxMDEiLCAiXHUwZTJiXHUwZTE5XHUwZTM2XHUwZTQ4XHUwZTA3XHUwZTIzXHUwZTQ5XHUwZTJkXHUwZTIyXHUwZTJiXHUwZTE5XHUwZTM2XHUwZTQ4XHUwZTA3IiB9LAorICAgICAgICAgICAgeyAiMS4yMzQiLCAiXHUwZTJiXHUwZTE5XHUwZTM2XHUwZTQ4XHUwZTA3XHUwZTA4XHUwZTM4XHUwZTE0XHUwZTJhXHUwZTJkXHUwZTA3XHUwZTJhXHUwZTMyXHUwZTIxXHUwZTJhXHUwZTM1XHUwZTQ4IiB9LAorICAgICAgICAgICAgeyAiMjEuNDUiLCAiXHUwZTIyXHUwZTM1XHUwZTQ4XHUwZTJhXHUwZTM0XHUwZTFhXHUwZTQwXHUwZTJkXHUwZTQ3XHUwZTE0XHUwZTA4XHUwZTM4XHUwZTE0XHUwZTJhXHUwZTM1XHUwZTQ4XHUwZTJiXHUwZTQ5XHUwZTMyIiB9LAorICAgICAgICAgICAgeyAiMjIuNDUiLCAiXHUwZTIyXHUwZTM1XHUwZTQ4XHUwZTJhXHUwZTM0XHUwZTFhXHUwZTJhXHUwZTJkXHUwZTA3XHUwZTA4XHUwZTM4XHUwZTE0XHUwZTJhXHUwZTM1XHUwZTQ4XHUwZTJiXHUwZTQ5XHUwZTMyIiB9LAorICAgICAgICAgICAgeyAiMjMuNDUiLCAiXHUwZTIyXHUwZTM1XHUwZTQ4XHUwZTJhXHUwZTM0XHUwZTFhXHUwZTJhXHUwZTMyXHUwZTIxXHUwZTA4XHUwZTM4XHUwZTE0XHUwZTJhXHUwZTM1XHUwZTQ4XHUwZTJiXHUwZTQ5XHUwZTMyIiB9LAorICAgICAgICAgICAgeyAiMTIzLjQ1IiwgIlx1MGUyYlx1MGUxOVx1MGUzNlx1MGU0OFx1MGUwN1x1MGUyM1x1MGU0OVx1MGUyZFx1MGUyMlx1MGUyMlx1MGUzNVx1MGU0OFx1MGUyYVx1MGUzNFx1MGUxYVx1MGUyYVx1MGUzMlx1MGUyMVx1MGUwOFx1MGUzOFx1MGUxNFx1MGUyYVx1MGUzNVx1MGU0OFx1MGUyYlx1MGU0OVx1MGUzMiIgfSwKKyAgICAgICAgICAgIHsgIjEyLDM0NS42NzgiLCAiXHUwRTJCXHUwRTE5XHUwRTM2XHUwRTQ4XHUwRTA3XHUwRTJCXHUwRTIxXHUwRTM3XHUwRTQ4XHUwRTE5XHUwRTJBXHUwRTJEXHUwRTA3XHUwRTFFXHUwRTMxXHUwRTE5XHUwRTJBXHUwRTMyXHUwRTIxXHUwRTIzXHUwRTQ5XHUwRTJEXHUwRTIyXHUwRTJBXHUwRTM1XHUwRTQ4XHUwRTJBXHUwRTM0XHUwRTFBXHUwRTJCXHUwRTQ5XHUwRTMyXHUwRTA4XHUwRTM4XHUwRTE0XHUwRTJCXHUwRTAxXHUwRTQwXHUwRTA4XHUwRTQ3XHUwRTE0XHUwRTQxXHUwRTFCXHUwRTE0IiB9LAorICAgICAgICB9OworCisgICAgICAgIGRvVGVzdChmb3JtYXR0ZXIsIHRlc3REYXRhLCB0cnVlKTsKKworICAgICAgICAvKgorICAgICAgICAgIGZvcm1hdHRlci5zZXRMZW5pZW50UGFyc2VNb2RlKHRydWUpOworICAgICAgICAgIFN0cmluZ1tdW10gbHBUZXN0RGF0YSA9IHsKKyAgICAgICAgICB7ICJlaW4gVGF1c2VuZCBzZWNocyBIdW5kZXJ0IGZ1ZW5mdW5kZHJlaXNzaWciLCAiMSw2MzUiIH0KKyAgICAgICAgICB9OworICAgICAgICAgIGRvTGVuaWVudFBhcnNlVGVzdChmb3JtYXR0ZXIsIGxwVGVzdERhdGEpOworICAgICAgICAqLworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RGcmFjdGlvbmFsUnVsZVNldCgpIHsKKworCisgICAgICAgIFJ1bGVCYXNlZE51bWJlckZvcm1hdCBmb3JtYXR0ZXIgPQorICAgICAgICAgICAgbmV3IFJ1bGVCYXNlZE51bWJlckZvcm1hdChmcmFjUnVsZXMsIExvY2FsZS5FTkdMSVNIKTsKKworICAgICAgICBTdHJpbmdbXVtdIHRlc3REYXRhID0geworICAgICAgICAgICAgeyAiMCIsICIwIiB9LAorICAgICAgICAgICAgeyAiMSIsICIxIiB9LAorICAgICAgICAgICAgeyAiMTAiLCAiMTAiIH0sCisgICAgICAgICAgICB7ICIuMSIsICIxLzEwIiB9LAorICAgICAgICAgICAgeyAiLjExIiwgIjEvOSIgfSwKKyAgICAgICAgICAgIHsgIi4xMjUiLCAiMS84IiB9LAorICAgICAgICAgICAgeyAiLjE0MjgiLCAiMS83IiB9LAorICAgICAgICAgICAgeyAiLjE2NjciLCAiMS82IiB9LAorICAgICAgICAgICAgeyAiLjIiLCAiMS81IiB9LAorICAgICAgICAgICAgeyAiLjI1IiwgIjEvNCIgfSwKKyAgICAgICAgICAgIHsgIi4zMzMiLCAiMS8zIiB9LAorICAgICAgICAgICAgeyAiLjUiLCAiMS8yIiB9LAorICAgICAgICAgICAgeyAiMS4xIiwgIjEgMS8xMCIgfSwKKyAgICAgICAgICAgIHsgIjIuMTEiLCAiMiAxLzkiIH0sCisgICAgICAgICAgICB7ICIzLjEyNSIsICIzIDEvOCIgfSwKKyAgICAgICAgICAgIHsgIjQuMTQyOCIsICI0IDEvNyIgfSwKKyAgICAgICAgICAgIHsgIjUuMTY2NyIsICI1IDEvNiIgfSwKKyAgICAgICAgICAgIHsgIjYuMiIsICI2IDEvNSIgfSwKKyAgICAgICAgICAgIHsgIjcuMjUiLCAiNyAxLzQiIH0sCisgICAgICAgICAgICB7ICI4LjMzMyIsICI4IDEvMyIgfSwKKyAgICAgICAgICAgIHsgIjkuNSIsICI5IDEvMiIgfSwKKyAgICAgICAgICAgIHsgIi4yMjIyIiwgIjIvOSIgfSwKKyAgICAgICAgICAgIHsgIi40NDQ0IiwgIjQvOSIgfSwKKyAgICAgICAgICAgIHsgIi41NTU1IiwgIjUvOSIgfSwKKyAgICAgICAgICAgIHsgIjEuMjg1NiIsICIxIDIvNyIgfQorICAgICAgICB9OworICAgICAgICBkb1Rlc3QoZm9ybWF0dGVyLCB0ZXN0RGF0YSwgZmFsc2UpOyAvLyBleGFjdCB2YWx1ZXMgYXJlbid0IHBhcnNhYmxlIGZyb20gZnJhY3Rpb25zCisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdFN3ZWRpc2hTcGVsbG91dCgpCisgICAgeworICAgICAgICBMb2NhbGUgbG9jYWxlID0gbmV3IExvY2FsZSgic3YiLCAiIiwgIiIpOworICAgICAgICBSdWxlQmFzZWROdW1iZXJGb3JtYXQgZm9ybWF0dGVyID0gbmV3IFJ1bGVCYXNlZE51bWJlckZvcm1hdChsb2NhbGUsIFJ1bGVCYXNlZE51bWJlckZvcm1hdC5TUEVMTE9VVCk7CisKKyAgICAgICAgU3RyaW5nW11bXSB0ZXN0RGF0YURlZmF1bHQgPSB7CisgICAgICAgICAgICB7ICIxMDEiLCAiZXR0aHVuZHJhXHUwMGFkZW4iIH0sCisgICAgICAgICAgICB7ICIxMjMiLCAiZXR0aHVuZHJhXHUwMGFkdGp1Z290cmUiIH0sCisgICAgICAgICAgICB7ICIxLDAwMSIsICJldHR1c2VuIGVuIiB9LAorICAgICAgICAgICAgeyAiMSwxMDAiLCAiZXR0dXNlbiBldHRodW5kcmEiIH0sCisgICAgICAgICAgICB7ICIxLDEwMSIsICJldHR1c2VuIGV0dGh1bmRyYVx1MDBhZGVuIiB9LAorICAgICAgICAgICAgeyAiMSwyMzQiLCAiZXR0dXNlbiB0dlx1MDBlNWh1bmRyYVx1MDBhZHRyZXR0aW9meXJhIiB9LAorICAgICAgICAgICAgeyAiMTAsMDAxIiwgInRpb1x1MDBhZHR1c2VuIGVuIiB9LAorICAgICAgICAgICAgeyAiMTEsMDAwIiwgImVsdmFcdTAwYWR0dXNlbiIgfSwKKyAgICAgICAgICAgIHsgIjEyLDAwMCIsICJ0b2x2XHUwMGFkdHVzZW4iIH0sCisgICAgICAgICAgICB7ICIyMCwwMDAiLCAidGp1Z29cdTAwYWR0dXNlbiIgfSwKKyAgICAgICAgICAgIHsgIjIxLDAwMCIsICJ0anVnb2VuXHUwMGFkdHVzZW4iIH0sCisgICAgICAgICAgICB7ICIyMSwwMDEiLCAidGp1Z29lblx1MDBhZHR1c2VuIGVuIiB9LAorICAgICAgICAgICAgeyAiMjAwLDAwMCIsICJ0dlx1MDBlNWh1bmRyYVx1MDBhZHR1c2VuIiB9LAorICAgICAgICAgICAgeyAiMjAxLDAwMCIsICJ0dlx1MDBlNWh1bmRyYVx1MDBhZGVuXHUwMGFkdHVzZW4iIH0sCisgICAgICAgICAgICB7ICIyMDAsMjAwIiwgInR2XHUwMGU1aHVuZHJhXHUwMGFkdHVzZW4gdHZcdTAwZTVodW5kcmEiIH0sCisgICAgICAgICAgICB7ICIyLDAwMiwwMDAiLCAidHZcdTAwZTUgbWlsam9uZXIgdHZcdTAwZTVcdTAwYWR0dXNlbiIgfSwKKyAgICAgICAgICAgIHsgIjEyLDM0NSw2NzgiLCAidG9sdiBtaWxqb25lciB0cmVodW5kcmFcdTAwYWRmeXJ0aW9mZW1cdTAwYWR0dXNlbiBzZXhodW5kcmFcdTAwYWRzanV0dGlvXHUwMGU1dHRhIiB9LAorICAgICAgICAgICAgeyAiMTIzLDQ1Ni43ODkiLCAiZXR0aHVuZHJhXHUwMGFkdGp1Z290cmVcdTAwYWR0dXNlbiBmeXJhaHVuZHJhXHUwMGFkZmVtdGlvc2V4IGtvbW1hIHNqdSBcdTAwZTV0dGEgbmlvIiB9LAorICAgICAgICAgICAgeyAiLTEyLDM0NS42NzgiLCAibWludXMgdG9sdlx1MDBhZHR1c2VuIHRyZWh1bmRyYVx1MDBhZGZ5cnRpb2ZlbSBrb21tYSBzZXggc2p1IFx1MDBlNXR0YSIgfQorICAgICAgICB9OworCisgICAgICAgIGxvZ2xuKCJ0ZXN0aW5nIGRlZmF1bHQgcnVsZXMiKTsKKyAgICAgICAgZG9UZXN0KGZvcm1hdHRlciwgdGVzdERhdGFEZWZhdWx0LCB0cnVlKTsKKworICAgICAgICBTdHJpbmdbXVtdIHRlc3REYXRhTmV1dHJ1bSA9IHsKKyAgICAgICAgICAgIHsgIjEwMSIsICJldHRodW5kcmFcdTAwYWRldHQiIH0sCisgICAgICAgICAgICB7ICIxLDAwMSIsICJldHR1c2VuIGV0dCIgfSwKKyAgICAgICAgICAgIHsgIjEsMTAxIiwgImV0dHVzZW4gZXR0aHVuZHJhXHUwMGFkZXR0IiB9LAorICAgICAgICAgICAgeyAiMTAsMDAxIiwgInRpb1x1MDBhZHR1c2VuIGV0dCIgfSwKKyAgICAgICAgICAgIHsgIjIxLDAwMSIsICJ0anVnb2VuXHUwMGFkdHVzZW4gZXR0IiB9CisgICAgICAgIH07CisKKyAgICAgICAgZm9ybWF0dGVyLnNldERlZmF1bHRSdWxlU2V0KCIlbmV1dHJ1bSIpOworICAgICAgICBsb2dsbigidGVzdGluZyBuZXV0cnVtIHJ1bGVzIik7CisgICAgICAgIGRvVGVzdChmb3JtYXR0ZXIsIHRlc3REYXRhTmV1dHJ1bSwgdHJ1ZSk7CisKKyAgICAgICAgU3RyaW5nW11bXSB0ZXN0RGF0YVllYXIgPSB7CisgICAgICAgICAgICB7ICIxMDEiLCAiZXR0aHVuZHJhXHUwMGFkZXR0IiB9LAorICAgICAgICAgICAgeyAiOTAwIiwgIm5pb2h1bmRyYSIgfSwKKyAgICAgICAgICAgIHsgIjEsMDAxIiwgInRpb2h1bmRyYVx1MDBhZGV0dCIgfSwKKyAgICAgICAgICAgIHsgIjEsMTAwIiwgImVsdmFodW5kcmEiIH0sCisgICAgICAgICAgICB7ICIxLDEwMSIsICJlbHZhaHVuZHJhXHUwMGFkZXR0IiB9LAorICAgICAgICAgICAgeyAiMSwyMzQiLCAidG9sdmh1bmRyYVx1MDBhZHRyZXR0aW9meXJhIiB9LAorICAgICAgICAgICAgeyAiMiwwMDEiLCAidGp1Z29odW5kcmFcdTAwYWRldHQiIH0sCisgICAgICAgICAgICB7ICIxMCwwMDEiLCAidGlvXHUwMGFkdHVzZW4gZXR0IiB9CisgICAgICAgIH07CisKKyAgICAgICAgZm9ybWF0dGVyLnNldERlZmF1bHRSdWxlU2V0KCIleWVhciIpOworICAgICAgICBsb2dsbigidGVzdGluZyB5ZWFyIHJ1bGVzIik7CisgICAgICAgIGRvVGVzdChmb3JtYXR0ZXIsIHRlc3REYXRhWWVhciwgdHJ1ZSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdEJpZ051bWJlcnMoKSB7CisgICAgICAgIEJpZ0ludGVnZXIgYmlnSSA9IG5ldyBCaWdJbnRlZ2VyKCIxMjM0NTY3ODkwIiwgMTApOworICAgICAgICBTdHJpbmdCdWZmZXIgYnVmID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBSdWxlQmFzZWROdW1iZXJGb3JtYXQgZm10ID0gbmV3IFJ1bGVCYXNlZE51bWJlckZvcm1hdChSdWxlQmFzZWROdW1iZXJGb3JtYXQuU1BFTExPVVQpOworICAgICAgICBmbXQuZm9ybWF0KGJpZ0ksIGJ1ZiwgbnVsbCk7CisgICAgICAgIGxvZ2xuKCJiaWcgaW50OiAiICsgYnVmLnRvU3RyaW5nKCkpOworCisgICAgICAgIGJ1Zi5zZXRMZW5ndGgoMCk7CisgICAgICAgIEJpZ0RlY2ltYWwgYmlnRCA9IG5ldyBCaWdEZWNpbWFsKGJpZ0kpOworICAgICAgICBmbXQuZm9ybWF0KGJpZ0QsIGJ1ZiwgbnVsbCk7CisgICAgICAgIGxvZ2xuKCJiaWcgZGVjOiAiICsgYnVmLnRvU3RyaW5nKCkpOworICAgIH0KKworICAgIHZvaWQgZG9UZXN0KFJ1bGVCYXNlZE51bWJlckZvcm1hdCBmb3JtYXR0ZXIsIFN0cmluZ1tdW10gdGVzdERhdGEsCisgICAgICAgICAgICAgICAgYm9vbGVhbiB0ZXN0UGFyc2luZykgeworICAgICAgICBOdW1iZXJGb3JtYXQgZGVjRm10ID0gTnVtYmVyRm9ybWF0LmdldEluc3RhbmNlKExvY2FsZS5VUyk7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGVzdERhdGEubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgbnVtYmVyID0gdGVzdERhdGFbaV1bMF07CisgICAgICAgICAgICAgICAgU3RyaW5nIGV4cGVjdGVkV29yZHMgPSB0ZXN0RGF0YVtpXVsxXTsKKyAgICAgICAgICAgICAgICBsb2dsbigidGVzdFsiICsgaSArICJdIG51bWJlcjogIiArIG51bWJlciArICIgdGFyZ2V0OiAiICsgZXhwZWN0ZWRXb3Jkcyk7CisgICAgICAgICAgICAgICAgTnVtYmVyIG51bSA9IGRlY0ZtdC5wYXJzZShudW1iZXIpOworICAgICAgICAgICAgICAgIFN0cmluZyBhY3R1YWxXb3JkcyA9IGZvcm1hdHRlci5mb3JtYXQobnVtKTsKKworICAgICAgICAgICAgICAgIGlmICghYWN0dWFsV29yZHMuZXF1YWxzKGV4cGVjdGVkV29yZHMpKSB7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJTcG90IGNoZWNrIGZhaWxlZDogZm9yICIgKyBudW1iZXIgKyAiLCBleHBlY3RlZFxuICAgICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKyBleHBlY3RlZFdvcmRzICsgIiwgYnV0IGdvdFxuICAgICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWxXb3Jkcyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRlc3RQYXJzaW5nKSB7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBhY3R1YWxOdW1iZXIgPSBkZWNGbXQuZm9ybWF0KGZvcm1hdHRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucGFyc2UoYWN0dWFsV29yZHMpKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoIWFjdHVhbE51bWJlci5lcXVhbHMobnVtYmVyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZXJybG4oIlNwb3QgY2hlY2sgZmFpbGVkOiBmb3IgIiArIGFjdHVhbFdvcmRzICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIsIGV4cGVjdGVkICIgKyBudW1iZXIgKyAiLCBidXQgZ290ICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsTnVtYmVyKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoVGhyb3dhYmxlIGUpIHsKKyAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CisgICAgICAgICAgICBlcnJsbigiVGVzdCBmYWlsZWQgd2l0aCBleGNlcHRpb246ICIgKyBlLnRvU3RyaW5nKCkpOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBkb0xlbmllbnRQYXJzZVRlc3QoUnVsZUJhc2VkTnVtYmVyRm9ybWF0IGZvcm1hdHRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdbXVtdIHRlc3REYXRhKSB7CisgICAgICAgIE51bWJlckZvcm1hdCBkZWNGbXQgPSBOdW1iZXJGb3JtYXQuZ2V0SW5zdGFuY2UoTG9jYWxlLlVTKTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0ZXN0RGF0YS5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIFN0cmluZyB3b3JkcyA9IHRlc3REYXRhW2ldWzBdOworICAgICAgICAgICAgICAgIFN0cmluZyBleHBlY3RlZE51bWJlciA9IHRlc3REYXRhW2ldWzFdOworICAgICAgICAgICAgICAgIFN0cmluZyBhY3R1YWxOdW1iZXIgPSBkZWNGbXQuZm9ybWF0KGZvcm1hdHRlci5wYXJzZSh3b3JkcykpOworCisgICAgICAgICAgICAgICAgaWYgKCFhY3R1YWxOdW1iZXIuZXF1YWxzKGV4cGVjdGVkTnVtYmVyKSkgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigiTGVuaWVudC1wYXJzZSBzcG90IGNoZWNrIGZhaWxlZDogZm9yICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKyB3b3JkcyArICIsIGV4cGVjdGVkICIgKyBleHBlY3RlZE51bWJlcgorICAgICAgICAgICAgICAgICAgICAgICAgICArICIsIGJ1dCBnb3QgIiArIGFjdHVhbE51bWJlcik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhdGNoIChUaHJvd2FibGUgZSkgeworICAgICAgICAgICAgZXJybG4oIlRlc3QgZmFpbGVkIHdpdGggZXhjZXB0aW9uOiAiICsgZS50b1N0cmluZygpKTsKKyAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9mb3JtYXQvV3JpdGVOdW1iZXJGb3JtYXRTZXJpYWxUZXN0RGF0YS5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2Zvcm1hdC9Xcml0ZU51bWJlckZvcm1hdFNlcmlhbFRlc3REYXRhLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNzcwNDU2ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9mb3JtYXQvV3JpdGVOdW1iZXJGb3JtYXRTZXJpYWxUZXN0RGF0YS5qYXZhCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgICAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9mb3JtYXQvV3JpdGVOdW1iZXJGb3JtYXRTZXJpYWxUZXN0RGF0YS5qYXZhLHYgJAorICogJERhdGU6IDIwMDIvMDIvMjIgMDA6Mjg6MTEgJAorICogJFJldmlzaW9uOiAxLjEgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisgCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0LmZvcm1hdDsKKworaW1wb3J0IGNvbS5pYm0uaWN1LmxhbmcuKjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0Lio7CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKK2ltcG9ydCBqYXZhLmlvLio7CisKKy8qKgorICogQHZlcnNpb24gCTEuMAorICogQGF1dGhvciBSYW0gVmlzd2FuYWRoYQorICovCitwdWJsaWMgY2xhc3MgV3JpdGVOdW1iZXJGb3JtYXRTZXJpYWxUZXN0RGF0YSB7CisJc3RhdGljIGZpbmFsIFN0cmluZyBoZWFkZXI9Ii8qXG4iICsKKwkJCQkJCQkgICAiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiIrCisJCQkJCQkJICAgIiAqIENvcHlyaWdodCAoQykgMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgICAgICAqXG4iKworCQkJCQkJCSAgICIgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuIisKKwkJCQkJCQkgICAiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiIrCisJCQkJCQkJICAgIiAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9mb3JtYXQvV3JpdGVOdW1iZXJGb3JtYXRTZXJpYWxUZXN0RGF0YS5qYXZhLHYgJFxuIisgCisJCQkJCQkJICAgIiAqICREYXRlOiAyMDAyLzAyLzIyIDAwOjI4OjExICRcbiIrIAorCQkJCQkJCSAgICIgKiAkUmV2aXNpb246IDEuMSAkXG4iKworCQkJCQkJCSAgICIgKlxuIisKKwkJCQkJCQkgICAiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4iKworCQkJCQkJCSAgICIgKi9cblxuIisKKwkJCQkJCQkgICAicGFja2FnZSBjb20uaWJtLmljdS5kZXYudGVzdC5mb3JtYXQ7XG5cbiIrCisJCQkJCQkJCQorCQkJCQkJCSAgICJwdWJsaWMgY2xhc3MgTnVtYmVyRm9ybWF0U2VyaWFsVGVzdERhdGEge1xuIisKKwkJCQkJCQkgICAiICAgIC8vZ2V0IENvbnRlbnRcbiIrCisJCQkJCQkJICAgIiAgICBwdWJsaWMgc3RhdGljIGJ5dGVbXVtdIGdldENvbnRlbnQoKSB7XG4iKworCQkJCQkJCSAgICIJICAgICAgICByZXR1cm4gY29udGVudDtcbiIrCisJCQkJCQkJICAgIiAgICB9XG4iOworCQkJCQkJCSAgCisJc3RhdGljIGZpbmFsIFN0cmluZyBmb290ZXIgPSJcbiAgICBmaW5hbCBzdGF0aWMgYnl0ZVtdW10gY29udGVudCA9IHtnZW5lcmFsSW5zdGFuY2UsIGN1cnJlbmN5SW5zdGFuY2UsIHBlcmNlbnRJbnN0YW5jZSwgc2NpZW50aWZpY0luc3RhbmNlfTtcbiIrCisJCQkJCQkJCSJ9XG4iOwkJCQkJCSAgIAorCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpeworCQlOdW1iZXJGb3JtYXQgbmYgCT0gTnVtYmVyRm9ybWF0LmdldEluc3RhbmNlKExvY2FsZS5VUyk7CisJCU51bWJlckZvcm1hdCBuZmMJPSBOdW1iZXJGb3JtYXQuZ2V0Q3VycmVuY3lJbnN0YW5jZShMb2NhbGUuVVMpOworCQlOdW1iZXJGb3JtYXQgbmZwIAk9IE51bWJlckZvcm1hdC5nZXRQZXJjZW50SW5zdGFuY2UoTG9jYWxlLlVTKTsKKwkJTnVtYmVyRm9ybWF0IG5mc3AgCT0gTnVtYmVyRm9ybWF0LmdldFNjaWVudGlmaWNJbnN0YW5jZShMb2NhbGUuVVMpOworCQkKKwkJdHJ5eworCQkJRmlsZU91dHB1dFN0cmVhbSBmaWxlID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oIk51bWJlckZvcm1hdFNlcmlhbFRlc3REYXRhLmphdmEiKTsKKwkJCWZpbGUud3JpdGUoaGVhZGVyLmdldEJ5dGVzKCkpOworCQkJd3JpdGUoZmlsZSwoT2JqZWN0KW5mLCJnZW5lcmFsSW5zdGFuY2UiLCAiLy9OdW1iZXJGb3JtYXQuZ2V0SW5zdGFuY2UoTG9jYWxlLlVTKSIpOworCQkJd3JpdGUoZmlsZSwoT2JqZWN0KW5mYywiY3VycmVuY3lJbnN0YW5jZSIsIi8vTnVtYmVyRm9ybWF0LmdldEN1cnJlbmN5SW5zdGFuY2UoTG9jYWxlLlVTKSIpOworCQkJd3JpdGUoZmlsZSwoT2JqZWN0KW5mcCwicGVyY2VudEluc3RhbmNlIiwiLy9OdW1iZXJGb3JtYXQuZ2V0UGVyY2VudEluc3RhbmNlKExvY2FsZS5VUykiKTsKKwkJCXdyaXRlKGZpbGUsKE9iamVjdCluZnNwLCJzY2llbnRpZmljSW5zdGFuY2UiLCIvL051bWJlckZvcm1hdC5nZXRTY2llbnRpZmljSW5zdGFuY2UoTG9jYWxlLlVTKSIpOworCQkJZmlsZS53cml0ZShmb290ZXIuZ2V0Qnl0ZXMoKSk7CQkJCisJCQlmaWxlLmNsb3NlKCk7CisJCX1jYXRjaCggRXhjZXB0aW9uIGUpeworCQkJU3lzdGVtLm91dC5wcmludGxuKGUuZ2V0TWVzc2FnZSgpKTsKKwkJCWUucHJpbnRTdGFja1RyYWNlKCk7CisJCX0KKwl9CisJcHJpdmF0ZSBzdGF0aWMgdm9pZCB3cml0ZShGaWxlT3V0cHV0U3RyZWFtIGZpbGUsT2JqZWN0IG8gLFN0cmluZyBuYW1lLFN0cmluZyBjb21tZW50KXsKKwkJdHJ5eworCQkgICAgQnl0ZUFycmF5T3V0cHV0U3RyZWFtIGJ0cyA9ICBuZXcgQnl0ZUFycmF5T3V0cHV0U3RyZWFtKCk7CisJCQlPYmplY3RPdXRwdXRTdHJlYW0gb3MgPSBuZXcgT2JqZWN0T3V0cHV0U3RyZWFtKGJ0cyk7CQorCQkJb3Mud3JpdGVPYmplY3QoKE9iamVjdClvKTsKKwkJCW9zLmZsdXNoKCk7CisJCQlvcy5jbG9zZSgpOworCQkJYnl0ZVtdIG15QXJyID0gYnRzLnRvQnl0ZUFycmF5KCk7CisJCQlTdHJpbmcgdGVtcCA9IG5ldyBTdHJpbmcobXlBcnIpOworCQkJU3lzdGVtLm91dC5wcmludGxuKCIgICAgIitjb21tZW50KyAiIDoiKTsKKwkJCS8qU3lzdGVtLm91dC5wcmludGxuKCJtaW5pbXVtSW50ZWdlckRpZ2l0cyA6ICIgICsgKHRlbXAuaW5kZXhPZigibWluaW11bUludGVnZXJEaWdpdHMiKSsibWluaW11bUludGVnZXJEaWdpdHMiLmxlbmd0aCgpKSk7CisJCQlTeXN0ZW0ub3V0LnByaW50bG4oIm1heGltdW1JbnRlZ2VyRGlnaXRzIDogIiAgKyAodGVtcC5pbmRleE9mKCJtYXhpbXVtSW50ZWdlckRpZ2l0cyIpKyJtYXhpbXVtSW50ZWdlckRpZ2l0cyIubGVuZ3RoKCkpKTsKKwkJCVN5c3RlbS5vdXQucHJpbnRsbigibWluaW11bUZyYWN0aW9uRGlnaXRzIDogIiArICh0ZW1wLmluZGV4T2YoIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIpKyJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiLmxlbmd0aCgpKSk7CisJCQlTeXN0ZW0ub3V0LnByaW50bG4oIm1heGltdW1GcmFjdGlvbkRpZ2l0cyA6ICIgKyAodGVtcC5pbmRleE9mKCJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiKSsibWF4aW11bUZyYWN0aW9uRGlnaXRzIi5sZW5ndGgoKSkpOworCQkJKi8KKwkJCS8vZmlsZS53cml0ZShteUFycik7CisJCQlmaWxlLndyaXRlKCgiXG4gICAgIitjb21tZW50KS5nZXRCeXRlcygpKTsKKwkJCWZpbGUud3JpdGUobmV3IFN0cmluZygiXG4gICAgc3RhdGljIGJ5dGVbXSAiK25hbWUrIiA9IG5ldyBieXRlW117IFxuIikuZ2V0Qnl0ZXMoIlVURi04IikpOworCQkJZmlsZS53cml0ZSggIiAgICAgICAgIi5nZXRCeXRlcygpKTsKKwkJCWZvcihpbnQgaT0wOyBpPG15QXJyLmxlbmd0aDsgaSsrKXsKKwkJCQlmaWxlLndyaXRlKFN0cmluZy52YWx1ZU9mKChpbnQpbXlBcnJbaV0pLmdldEJ5dGVzKCkpOworCQkJCWZpbGUud3JpdGUoICIsICIuZ2V0Qnl0ZXMoKSk7CisJCQkJaWYoKGkrMSklMjAgPT0gMCl7CisJCQkJCWZpbGUud3JpdGUoIlxuIi5nZXRCeXRlcygpKTsKKwkJCQkJZmlsZS53cml0ZSggIiAgICAgICAgIi5nZXRCeXRlcygpKTsKKwkJCQl9CisJCQl9CisJCQlmaWxlLndyaXRlKG5ldyBTdHJpbmcoIlxuICAgIH07XG4iKS5nZXRCeXRlcygiVVRGLTgiKSk7CisJCX1jYXRjaCggRXhjZXB0aW9uIGUpeworCQkJU3lzdGVtLm91dC5wcmludGxuKGUuZ2V0TWVzc2FnZSgpKTsKKwkJCWUucHJpbnRTdGFja1RyYWNlKCk7CisJCX0KKwkKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvaXRlcmF0b3IvVGVzdFVDaGFyYWN0ZXJJdGVyYXRvci5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2l0ZXJhdG9yL1Rlc3RVQ2hhcmFjdGVySXRlcmF0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMWI2NThlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2l0ZXJhdG9yL1Rlc3RVQ2hhcmFjdGVySXRlcmF0b3IuamF2YQpAQCAtMCwwICsxLDU4NiBAQAorLyoqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9pdGVyYXRvci9UZXN0VUNoYXJhY3Rlckl0ZXJhdG9yLmphdmEsdiAkCisgKiAkRGF0ZTogMjAwMi8xMS8yMiAwMDoyMTowMyAkCisgKiAkUmV2aXNpb246IDEuOCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudGVzdC5pdGVyYXRvcjsKKworaW1wb3J0IGNvbS5pYm0uaWN1LmRldi50ZXN0LlRlc3RGbXdrOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuVUNoYXJhY3Rlckl0ZXJhdG9yOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuVVRGMTY7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC5SZXBsYWNlYWJsZVN0cmluZzsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLlVuaWNvZGVDaGFyYWN0ZXJJdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnRleHQuQ2hhcmFjdGVySXRlcmF0b3I7CitpbXBvcnQgamF2YS50ZXh0LlN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yOworCisvKioKKyAqIEBhdXRob3IgcmFtCisgKgorICogVG8gY2hhbmdlIHRoaXMgZ2VuZXJhdGVkIGNvbW1lbnQgZWRpdCB0aGUgdGVtcGxhdGUgdmFyaWFibGUgInR5cGVjb21tZW50IjoKKyAqIFdpbmRvdz5QcmVmZXJlbmNlcz5KYXZhPlRlbXBsYXRlcy4KKyAqIFRvIGVuYWJsZSBhbmQgZGlzYWJsZSB0aGUgY3JlYXRpb24gb2YgdHlwZSBjb21tZW50cyBnbyB0bworICogV2luZG93PlByZWZlcmVuY2VzPkphdmE+Q29kZSBHZW5lcmF0aW9uLgorICovCitwdWJsaWMgY2xhc3MgVGVzdFVDaGFyYWN0ZXJJdGVyYXRvciBleHRlbmRzIFRlc3RGbXdreworCisgICAgLy8gY29uc3RydWN0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgCisgICAgLyoqCisgICAgICogQ29uc3RydWN0b3IKKyAgICAgKi8KKyAgICBwdWJsaWMgVGVzdFVDaGFyYWN0ZXJJdGVyYXRvcigpCisgICAgeworICAgIH0KKyAgCisgICAgLy8gcHVibGljIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgCisgICAgLyoqCisgICAgKiBUZXN0aW5nIGNsb25pbmcKKyAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RDbG9uZSgpIHRocm93cyBDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbgorICAgIHsKKyAgICAgICAgIFVDaGFyYWN0ZXJJdGVyYXRvciBpdGVyYXRvciA9IFVDaGFyYWN0ZXJJdGVyYXRvci5nZXRJbnN0YW5jZSgidGVzdGluZyIpOworICAgICAgICAgVUNoYXJhY3Rlckl0ZXJhdG9yIGNsb25lZCA9IChVQ2hhcmFjdGVySXRlcmF0b3IpaXRlcmF0b3IuY2xvbmUoKTsKKyAgICAgICAgIGludCBjb21wbGV0ZWQgPSAwOworICAgICAgICAgd2hpbGUgKGNvbXBsZXRlZCAhPSBVQ2hhcmFjdGVySXRlcmF0b3IuRE9ORSkgeworICAgICAgICAgICAgY29tcGxldGVkID0gaXRlcmF0b3IubmV4dCgpOworICAgICAgICAgICAgaWYgKGNvbXBsZXRlZCAhPSBjbG9uZWQubmV4dCgpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkNsb25lZCBvcGVyYXRpb24gZmFpbGVkIik7CisgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgfQorICAgIHB1YmxpYyB2b2lkIGdldFRleHQoVUNoYXJhY3Rlckl0ZXJhdG9yIGl0ZXJhdG9yLCBTdHJpbmcgcmVzdWx0KXsKKyAgICAgICAgLyogdGVzdCBnZXRUZXh0ICovCisgICAgICAgIGNoYXJbXSBidWY9IG5ldyBjaGFyWzFdOworCQlmb3IoOzspeworCQkgICAgdHJ5eworCQkgICAgICAgIGl0ZXJhdG9yLmdldFRleHQoYnVmKTsKKwkJICAgICAgICBicmVhazsKKwkJICAgIH1jYXRjaChJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIGUpeworCQkgICAgICAgIGJ1ZiA9IG5ldyBjaGFyW2l0ZXJhdG9yLmdldExlbmd0aCgpXTsKKwkJICAgIH0KKwkJfQorICAgICAgICBpZihyZXN1bHQuY29tcGFyZVRvKG5ldyBTdHJpbmcoYnVmLDAsaXRlcmF0b3IuZ2V0TGVuZ3RoKCkpKSE9MCl7CisgICAgICAgICAgICBlcnJsbigiZ2V0VGV4dCBmYWlsZWQgZm9yIGl0ZXJhdG9yIik7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogVGVzdGluZyBpdGVyYXRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0SXRlcmF0aW9uKCkKKyAgICB7CisgICAgICAgIFVDaGFyYWN0ZXJJdGVyYXRvciBpdGVyYXRvciAgPSBVQ2hhcmFjdGVySXRlcmF0b3IuZ2V0SW5zdGFuY2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVRFUkFUSU9OX1NUUklOR18pOworICAgICAgICBVQ2hhcmFjdGVySXRlcmF0b3IgaXRlcmF0b3IyID0gVUNoYXJhY3Rlckl0ZXJhdG9yLmdldEluc3RhbmNlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElURVJBVElPTl9TVFJJTkdfKTsKKyAgICAgICAgaXRlcmF0b3Iuc2V0VG9TdGFydCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIGlmIChpdGVyYXRvci5jdXJyZW50KCkgIT0gSVRFUkFUSU9OX1NUUklOR18uY2hhckF0KDApKSB7CisgICAgICAgICAgICBlcnJsbigiSXRlcmF0b3IgZmFpbGVkIHJldHJpZXZpbmcgZmlyc3QgY2hhcmFjdGVyIik7CisgICAgICAgIH0KKyAgICAgICAgaXRlcmF0b3Iuc2V0VG9MaW1pdCgpOyAKKyAgICAgICAgaWYgKGl0ZXJhdG9yLnByZXZpb3VzKCkgIT0gSVRFUkFUSU9OX1NUUklOR18uY2hhckF0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVRFUkFUSU9OX1NUUklOR18ubGVuZ3RoKCkgLSAxKSkgeworICAgICAgICAgICAgZXJybG4oIkl0ZXJhdG9yIGZhaWxlZCByZXRyaWV2aW5nIGxhc3QgY2hhcmFjdGVyIik7CisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBpZiAoaXRlcmF0b3IuZ2V0TGVuZ3RoKCkgIT0gSVRFUkFUSU9OX1NUUklOR18ubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIGVycmxuKCJJdGVyYXRvciBmYWlsZWQgZGV0ZXJtaW5pbmcgYmVnaW4gYW5kIGVuZCBpbmRleCIpOworICAgICAgICB9ICAKKyAgICAgICAgaXRlcmF0b3IyLnNldEluZGV4KDApOworICAgICAgICBpdGVyYXRvci5zZXRJbmRleCgwKTsKKyAgICAgICAgaW50IGNoID0gMDsKKyAgICAgICAgd2hpbGUgKGNoICE9IFVDaGFyYWN0ZXJJdGVyYXRvci5ET05FKSB7CisgICAgICAgICAgICBpbnQgaW5kZXggPSBpdGVyYXRvcjIuZ2V0SW5kZXgoKTsKKyAgICAgICAgICAgIGNoID0gaXRlcmF0b3IyLm5leHRDb2RlUG9pbnQoKTsKKyAgICAgICAgICAgIGlmIChpbmRleCAhPSBJVEVSQVRJT05fU1VQUExFTUVOVEFSWV9JTkRFWCkgeworICAgICAgICAgICAgICAgIGlmIChjaCAhPSAoaW50KWl0ZXJhdG9yLm5leHQoKSAmJiAKKyAgICAgICAgICAgICAgICAgICAgY2ggIT0gVUNoYXJhY3Rlckl0ZXJhdG9yLkRPTkUpIHsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIkVycm9yIG1pc21hdGNoIGluIG5leHQoKSBhbmQgbmV4dENvZGVQb2ludCgpIik7IAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChVVEYxNi5nZXRMZWFkU3Vycm9nYXRlKGNoKSAhPSBpdGVyYXRvci5uZXh0KCkgfHwKKyAgICAgICAgICAgICAgICAgICAgVVRGMTYuZ2V0VHJhaWxTdXJyb2dhdGUoY2gpICE9IGl0ZXJhdG9yLm5leHQoKSkgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigiRXJyb3IgbWlzbWF0Y2ggaW4gbmV4dCBhbmQgbmV4dENvZGVQb2ludCBmb3IgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJzdXBwbGVtZW50YXJ5IGNoYXJhY3RlcnMiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaXRlcmF0b3Iuc2V0SW5kZXgoSVRFUkFUSU9OX1NUUklOR18ubGVuZ3RoKCkpOworICAgICAgICBpdGVyYXRvcjIuc2V0SW5kZXgoSVRFUkFUSU9OX1NUUklOR18ubGVuZ3RoKCkpOworICAgICAgICB3aGlsZSAoY2ggIT0gVUNoYXJhY3Rlckl0ZXJhdG9yLkRPTkUpIHsKKyAgICAgICAgICAgIGludCBpbmRleCA9IGl0ZXJhdG9yMi5nZXRJbmRleCgpOworICAgICAgICAgICAgY2ggPSBpdGVyYXRvcjIucHJldmlvdXNDb2RlUG9pbnQoKTsKKyAgICAgICAgICAgIGlmIChpbmRleCAhPSBJVEVSQVRJT05fU1VQUExFTUVOVEFSWV9JTkRFWCkgeworICAgICAgICAgICAgICAgIGlmIChjaCAhPSAoaW50KWl0ZXJhdG9yLnByZXZpb3VzKCkgJiYgCisgICAgICAgICAgICAgICAgICAgIGNoICE9IFVDaGFyYWN0ZXJJdGVyYXRvci5ET05FKSB7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJFcnJvciBtaXNtYXRjaCBpbiBwcmV2aW91cygpIGFuZCAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInByZXZpb3VzQ29kZVBvaW50KCkiKTsgCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKFVURjE2LmdldExlYWRTdXJyb2dhdGUoY2gpICE9IGl0ZXJhdG9yLnByZXZpb3VzKCkgfHwgCisgICAgICAgICAgICAgICAgICAgIFVURjE2LmdldFRyYWlsU3Vycm9nYXRlKGNoKSAhPSBpdGVyYXRvci5wcmV2aW91cygpKSB7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJFcnJvciBtaXNtYXRjaCBpbiBwcmV2aW91cyBhbmQgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJwcmV2aW91c0NvZGVQb2ludCBmb3Igc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXJzIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZykKKyAgICB7CisgICAgICAgIHRyeQorICAgICAgICB7CisgICAgICAgICAgICBUZXN0VUNoYXJhY3Rlckl0ZXJhdG9yIHRlc3QgPSBuZXcgVGVzdFVDaGFyYWN0ZXJJdGVyYXRvcigpOworICAgICAgICAgICAgdGVzdC5ydW4oYXJnKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLy9UZXN0cyBmb3IgbmV3IEFQSSBmb3IgdXRmLTE2IHN1cHBvcnQgCisJcHVibGljIHZvaWQgVGVzdEl0ZXJhdGlvblVDaGFyMzIoKSB7CisJICAgIFN0cmluZyB0ZXh0PSJcdTAwNjFcdTAwNjJcdWQ4NDFcdWRjMDJcdTIwYWNcdWQ3ZmZcdWQ4NDJcdWRjMDZcdWQ4MDFcdWRjMDBcdTAwNjEiOworCSAgICBpbnQgYzsKKwkgICAgaW50IGk7CisJICAgIHsKKwkgICAgICAgIFVDaGFyYWN0ZXJJdGVyYXRvciBpdGVyID0gVUNoYXJhY3Rlckl0ZXJhdG9yLmdldEluc3RhbmNlKHRleHQpOworCQorCSAgICAgICAgU3RyaW5nIGl0ZXJUZXh0ID0gaXRlci5nZXRUZXh0KCk7CisJICAgICAgICBpZiAoIWl0ZXJUZXh0LmVxdWFscyh0ZXh0KSkKKwkgICAgICAgICAgZXJybG4oIml0ZXIuZ2V0VGV4dCgpIGZhaWxlZCIpOworCSAgICAgICAgCisgICAgICAgICAgICBpdGVyLnNldEluZGV4KDEpOworCSAgICAgICAgaWYgKGl0ZXIuY3VycmVudENvZGVQb2ludCgpICE9IFVURjE2LmNoYXJBdCh0ZXh0LDEpKQorCSAgICAgICAgICAgIGVycmxuKCJJdGVyYXRvciBkaWRuJ3Qgc3RhcnQgb3V0IGluIHRoZSByaWdodCBwbGFjZS4iKTsKKwkKKwkgICAgICAgIGl0ZXIuc2V0VG9TdGFydCgpOworCSAgICAgICAgYz1pdGVyLmN1cnJlbnRDb2RlUG9pbnQoKTsKKyAgICAgICAgICAgIGk9MDsKKwkgICAgICAgIGk9aXRlci5tb3ZlQ29kZVBvaW50SW5kZXgoMSk7CisJICAgICAgICBjPWl0ZXIuY3VycmVudENvZGVQb2ludCgpOworCSAgICAgICAgaWYoYyAhPSBVVEYxNi5jaGFyQXQodGV4dCwxKSB8fCBpIT0xKQorCSAgICAgICAgICAgIGVycmxuKCJtb3ZlQ29kZVBvaW50SW5kZXgoMSkgZGlkbid0IHdvcmsgY29ycmVjdGx5IGV4cGVjdGVkICIrIGhleChjKSArIiBnb3QgIitoZXgoVVRGMTYuY2hhckF0KHRleHQsMSkpICsgIiBpPSAiICsgaSk7CisJCisJICAgICAgICBpPWl0ZXIubW92ZUNvZGVQb2ludEluZGV4KDIpOworCSAgICAgICAgYz1pdGVyLmN1cnJlbnRDb2RlUG9pbnQoKTsKKwkgICAgICAgIGlmKGMgIT0gVVRGMTYuY2hhckF0KHRleHQsNCkgfHwgaSE9NCkKKwkgICAgICAgICAgICBlcnJsbigibW92ZUNvZGVQb2ludEluZGV4KDIpIGRpZG4ndCB3b3JrIGNvcnJlY3RseSBleHBlY3RlZCAiKyBoZXgoYykgKyIgZ290ICIraGV4KFVURjE2LmNoYXJBdCh0ZXh0LDQpKSArICIgaT0gIiArIGkpOworICAgICAgICAgICAgICAgIAorCSAgICAgICAgaT1pdGVyLm1vdmVDb2RlUG9pbnRJbmRleCgtMik7CisJICAgICAgICBjPWl0ZXIuY3VycmVudENvZGVQb2ludCgpOworCSAgICAgICAgaWYoYyAhPSBVVEYxNi5jaGFyQXQodGV4dCwxKSB8fCBpIT0xKQorICAgICAgICAgICAgICAgICBlcnJsbigibW92ZUNvZGVQb2ludEluZGV4KC0yKSBkaWRuJ3Qgd29yayBjb3JyZWN0bHkgZXhwZWN0ZWQgIisgaGV4KGMpICsiIGdvdCAiK2hleChVVEYxNi5jaGFyQXQodGV4dCwxKSkgKyAiIGk9ICIgKyBpKTsKKworCSAgICAgICAgaXRlci5zZXRUb0xpbWl0KCk7CisJICAgICAgICBpPWl0ZXIubW92ZUNvZGVQb2ludEluZGV4KC0yKTsKKwkgICAgICAgIGM9aXRlci5jdXJyZW50Q29kZVBvaW50KCk7CisJICAgICAgICBpZihjICE9IFVURjE2LmNoYXJBdCh0ZXh0LCh0ZXh0Lmxlbmd0aCgpLTMpKSB8fCBpIT0odGV4dC5sZW5ndGgoKS0zKSkKKyAgICAgICAgICAgICAgICBlcnJsbigibW92ZUNvZGVQb2ludEluZGV4KC0yKSBkaWRuJ3Qgd29yayBjb3JyZWN0bHkgZXhwZWN0ZWQgIisgaGV4KGMpICsiIGdvdCAiK2hleChVVEYxNi5jaGFyQXQodGV4dCwodGV4dC5sZW5ndGgoKS0zKSkgKSArICIgaT0gIiArIGkpOworCSAgICAgICAgCisJICAgICAgICBpdGVyLnNldFRvU3RhcnQoKTsKKwkgICAgICAgIGMgPSBpdGVyLmN1cnJlbnRDb2RlUG9pbnQoKTsKKwkgICAgICAgIGkgPSAwOworCQorCSAgICAgICAgLy90ZXN0aW5nIGZpcnN0MzJQb3N0SW5jLCBuZXh0Q29kZVBvaW50UG9zdEluYywgc2V0VG9zdGFydAorCSAgICAgICAgaSA9IDA7CisJICAgICAgICBpdGVyLnNldFRvU3RhcnQoKTsKKwkgICAgICAgIGMgPWl0ZXIubmV4dCgpOworICAgICAgICAgICAgaWYoYyAhPSBVVEYxNi5jaGFyQXQodGV4dCxpKSkKKwkgICAgICAgICAgICBlcnJsbigiZmlyc3QzMlBvc3RJbmMgZmFpbGVkLiAgRXhwZWN0ZWQtPiIraGV4KFVURjE2LmNoYXJBdCh0ZXh0LGkpKSsiIEdvdC0+ICIraGV4KGMpKTsKKwkgICAgICAgIGlmKGl0ZXIuZ2V0SW5kZXgoKSAhPSBVVEYxNi5nZXRDaGFyQ291bnQoYykgKyBpKQorCSAgICAgICAgICAgIGVycmxuKCJnZXRJbmRleCgpIGFmdGVyIGZpcnN0MzJQb3N0SW5jKCkgZmFpbGVkIik7CisJCisJICAgICAgICBpdGVyLnNldFRvU3RhcnQoKTsKKwkgICAgICAgIGk9MDsKKwkgICAgICAgIGlmIChpdGVyLmdldEluZGV4KCkgIT0gMCkKKwkgICAgICAgICAgICBlcnJsbigic2V0VG9TdGFydCBmYWlsZWQiKTsKKwkgICAgICAgCisJICAgICAgICBsb2dsbigiVGVzdGluZyBmb3J3YXJkIGl0ZXJhdGlvbi4uLiIpOworCSAgICAgICAgZG8geworCSAgICAgICAgICAgIGlmIChjICE9IFVDaGFyYWN0ZXJJdGVyYXRvci5ET05FKQorCSAgICAgICAgICAgICAgICBjID0gaXRlci5uZXh0Q29kZVBvaW50KCk7CisJCisJICAgICAgICAgICAgaWYoYyAhPSBVVEYxNi5jaGFyQXQodGV4dCxpKSkKKwkgICAgICAgICAgICAgICAgZXJybG4oIkNoYXJhY3RlciBtaXNtYXRjaCBhdCBwb3NpdGlvbiAiK2krIiwgaXRlcmF0b3IgaGFzICIraGV4KGMpKyIsIHN0cmluZyBoYXMgIitoZXgoVVRGMTYuY2hhckF0KHRleHQsaSkpKTsKKyAgICAKKwkgICAgICAgICAgICBpKz1VVEYxNi5nZXRDaGFyQ291bnQoYyk7CisJICAgICAgICAgICAgaWYoaXRlci5nZXRJbmRleCgpICE9IGkpCisJICAgICAgICAgICAgICAgIGVycmxuKCJnZXRJbmRleCgpIGFmdHIgbmV4dENvZGVQb2ludFBvc3RJbmMoKSBpc24ndCB3b3JraW5nIHJpZ2h0Iik7CisgICAgICAgICAgICAgICAgYyA9IGl0ZXIuY3VycmVudENvZGVQb2ludCgpOyAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiggYyE9VUNoYXJhY3Rlckl0ZXJhdG9yLkRPTkUgJiYgYyAhPSBVVEYxNi5jaGFyQXQodGV4dCxpKSkKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oImN1cnJlbnQoKSBhZnRlciBuZXh0Q29kZVBvaW50UG9zdEluYygpIGlzbid0IHdvcmtpbmcgcmlnaHQiKTsKKworCSAgICAgICAgfSB3aGlsZSAoYyE9VUNoYXJhY3Rlckl0ZXJhdG9yLkRPTkUpOworCSAgICAgICAgYz1pdGVyLm5leHRDb2RlUG9pbnQoKTsKKwkgICAgICAgIGlmKGMhPSBVQ2hhcmFjdGVySXRlcmF0b3IuRE9ORSkKKwkgICAgICAgICAgICBlcnJsbigibmV4dENvZGVQb2ludFBvc3RJbmMoKSBkaWRuJ3QgcmV0dXJuIERPTkUgYXQgdGhlIGJlZ2lubmluZyIpOworCQorCQorCSAgICB9CisJfSAgCisgICAgCisgICAgY2xhc3MgVUNoYXJJdGVyYXRvciB7CisgICAgCisgICAgICAgcHVibGljIFVDaGFySXRlcmF0b3IoaW50W10gc3JjLCBpbnQgbGVuLCBpbnQgaW5kZXgpeworICAgICAgICAgICAgCisgICAgICAgICAgICBzPXNyYzsKKyAgICAgICAgICAgIGxlbmd0aD1sZW47CisgICAgICAgICAgICBpPWluZGV4OworICAgICAgIH0KKyAgICAKKyAgICAgICAgcHVibGljIGludCBjdXJyZW50KCkgeworICAgICAgICAgICAgaWYoaTxsZW5ndGgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gc1tpXTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgCisgICAgICAgIHB1YmxpYyBpbnQgbmV4dCgpIHsKKyAgICAgICAgICAgIGlmKGk8bGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNbaSsrXTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgCisgICAgICAgIHB1YmxpYyBpbnQgcHJldmlvdXMoKSB7CisgICAgICAgICAgICBpZihpPjApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gc1stLWldOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgcHVibGljIGludCBnZXRJbmRleCgpIHsKKyAgICAgICAgICAgIHJldHVybiBpOworICAgICAgICB9CisgICAgCisgICAgICAgIHByaXZhdGUgaW50W10gczsKKyAgICAgICAgcHJpdmF0ZSBpbnQgbGVuZ3RoLCBpOworICAgIH07CisgICAgLy8gc3JjIGFuZCBleHBlY3Qgc3RyaW5ncworICAgIHByaXZhdGUgZmluYWwgY2hhciBzcmNbXT17CisgICAgICAgIFVURjE2LmdldExlYWRTdXJyb2dhdGUoMHgyZjk5OSksIFVURjE2LmdldFRyYWlsU3Vycm9nYXRlKDB4MmY5OTkpLAorICAgICAgICBVVEYxNi5nZXRMZWFkU3Vycm9nYXRlKDB4MWQxNWYpLCBVVEYxNi5nZXRUcmFpbFN1cnJvZ2F0ZSgweDFkMTVmKSwKKyAgICAgICAgMHhjNCwKKyAgICAgICAgMHgxZWQwCisgICAgfTsKKyAgICBwdWJsaWMgdm9pZCBUZXN0UHJldmlvdXNOZXh0KCl7CisgICAgICAgIC8vIGl0ZXJhdG9ycworICAgICAgICBVQ2hhcmFjdGVySXRlcmF0b3IgaXRlcjEgPSBVQ2hhcmFjdGVySXRlcmF0b3IuZ2V0SW5zdGFuY2UobmV3IFJlcGxhY2VhYmxlU3RyaW5nKG5ldyBTdHJpbmcoc3JjKSkpOworICAgICAgICBVQ2hhcmFjdGVySXRlcmF0b3IgaXRlcjIgPSBVQ2hhcmFjdGVySXRlcmF0b3IuZ2V0SW5zdGFuY2Uoc3JjLypjaGFyIGFycmF5Ki8pOworICAgICAgICBVQ2hhcmFjdGVySXRlcmF0b3IgaXRlcjMgPSBVQ2hhcmFjdGVySXRlcmF0b3IuZ2V0SW5zdGFuY2UobmV3IFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yKG5ldyBTdHJpbmcoc3JjKSkpOworICAgICAgICBVQ2hhcmFjdGVySXRlcmF0b3IgaXRlcjQgPSBVQ2hhcmFjdGVySXRlcmF0b3IuZ2V0SW5zdGFuY2UobmV3IFN0cmluZ0J1ZmZlcihuZXcgU3RyaW5nKHNyYykpKTsKKyAgICAgICAgcHJldmlvdXNOZXh0KGl0ZXIxKTsKKyAgICAgICAgcHJldmlvdXNOZXh0KGl0ZXIyKTsKKyAgICAgICAgcHJldmlvdXNOZXh0KGl0ZXIzKTsKKyAgICAgICAgcHJldmlvdXNOZXh0KGl0ZXI0KTsKKyAgICAgICAgZ2V0VGV4dChpdGVyMSxuZXcgU3RyaW5nKHNyYykpOworICAgICAgICBnZXRUZXh0KGl0ZXIyLG5ldyBTdHJpbmcoc3JjKSk7CisgICAgICAgIGdldFRleHQoaXRlcjMsbmV3IFN0cmluZyhzcmMpKTsKKyAgICAgICAgLyogZ2V0Q2hhcmFjdGVySXRlcmF0b3IgKi8KKyAgICAgICAgQ2hhcmFjdGVySXRlcmF0b3IgY2l0ZXIxID0gaXRlcjEuZ2V0Q2hhcmFjdGVySXRlcmF0b3IoKTsKKyAgICAgICAgQ2hhcmFjdGVySXRlcmF0b3IgY2l0ZXIyID0gaXRlcjIuZ2V0Q2hhcmFjdGVySXRlcmF0b3IoKTsKKyAgICAgICAgQ2hhcmFjdGVySXRlcmF0b3IgY2l0ZXIzID0gaXRlcjMuZ2V0Q2hhcmFjdGVySXRlcmF0b3IoKTsKKyAgICAgICAgaWYoY2l0ZXIxLmZpcnN0KCkgIT1pdGVyMS5jdXJyZW50KCkpeworICAgICAgICAgICAgZXJybG4oImdldENoYXJhY3Rlckl0ZXJhdG9yIGZvciBpdGVyMSBmYWlsZWQiKTsKKyAgICAgICAgfQorICAgICAgICBpZihjaXRlcjIuZmlyc3QoKSAhPWl0ZXIyLmN1cnJlbnQoKSl7CisgICAgICAgICAgICBlcnJsbigiZ2V0Q2hhcmFjdGVySXRlcmF0b3IgZm9yIGl0ZXIyIGZhaWxlZCIpOworICAgICAgICB9CisgICAgICAgIGlmKGNpdGVyMy5maXJzdCgpICE9aXRlcjMuY3VycmVudCgpKXsKKyAgICAgICAgICAgIGVycmxuKCJnZXRDaGFyYWN0ZXJJdGVyYXRvciBmb3IgaXRlcjMgZmFpbGVkIik7CisgICAgICAgIH0KKyAgICAgICAgLyogVGVzdCBjbG9uZSgpICAmJiBtb3ZlSW5kZXgoKSovCisgICAgICAgIHRyeXsKKwkgICAgICAgIFVDaGFyYWN0ZXJJdGVyYXRvciBjbG9uZTEgPSAoVUNoYXJhY3Rlckl0ZXJhdG9yKWl0ZXIxLmNsb25lKCk7CisJICAgICAgICBVQ2hhcmFjdGVySXRlcmF0b3IgY2xvbmUyID0gKFVDaGFyYWN0ZXJJdGVyYXRvcilpdGVyMi5jbG9uZSgpOworCSAgICAgICAgVUNoYXJhY3Rlckl0ZXJhdG9yIGNsb25lMyA9IChVQ2hhcmFjdGVySXRlcmF0b3IpaXRlcjMuY2xvbmUoKTsKKwkgICAgICAgIGlmKGNsb25lMS5tb3ZlSW5kZXgoMykhPWl0ZXIxLm1vdmVJbmRleCgzKSl7CisJICAgICAgICAgICAgZXJybG4oIm1vdmVJbmRleCBmb3IgaXRlcjEgZmFpbGVkIik7CisJICAgICAgICB9CisJICAgICAgICBpZihjbG9uZTIubW92ZUluZGV4KDMpIT1pdGVyMi5tb3ZlSW5kZXgoMykpeworCSAgICAgICAgICAgIGVycmxuKCJtb3ZlSW5kZXggZm9yIGl0ZXIyIGZhaWxlZCIpOworCSAgICAgICAgfQorCSAgICAgICAgaWYoY2xvbmUzLm1vdmVJbmRleCgzKSE9aXRlcjMubW92ZUluZGV4KDMpKXsKKwkgICAgICAgICAgICBlcnJsbigibW92ZUluZGV4IGZvciBpdGVyMSBmYWlsZWQiKTsKKwkgICAgICAgIH0KKyAgICAgICAgfWNhdGNoIChFeGNlcHRpb24gZSl7CisgICAgICAgICAgICBlcnJsbigiY291bGQgbm90IGNsb25lIHRoZSBpdGVyYXRvciIpOworICAgICAgICB9CisgICAgfQorICAgIHB1YmxpYyB2b2lkIHByZXZpb3VzTmV4dChVQ2hhcmFjdGVySXRlcmF0b3IgaXRlcikgeworCisgICAgICAgIGludCBleHBlY3RbXT17CisgICAgICAgICAgICAweDJmOTk5LAorICAgICAgICAgICAgMHgxZDE1ZiwKKyAgICAgICAgICAgIDB4YzQsCisgICAgICAgICAgICAweDFlZDAKKyAgICAgICAgfTsKKyAgICAKKyAgICAgICAgLy8gZXhwZWN0ZWQgc3JjIGluZGV4ZXMgY29ycmVzcG9uZGluZyB0byBleHBlY3QgaW5kZXhlcworICAgICAgICBpbnQgZXhwZWN0SW5kZXhbXT17CisgICAgICAgICAgICAwLDAsCisgICAgICAgICAgICAxLDEsCisgICAgICAgICAgICAyLAorICAgICAgICAgICAgMywKKyAgICAgICAgICAgIDQgLy9uZWVkZWQgCisgICAgICAgIH07CisgICAgCisgICAgICAgIC8vIGluaXRpYWwgaW5kZXhlcyBpbnRvIHRoZSBzcmMgYW5kIGV4cGVjdCBzdHJpbmdzCisgICAgICAgIAorICAgICAgICBmaW5hbCBpbnQgU1JDX01JRERMRT00OworICAgICAgICBmaW5hbCBpbnQgRVhQRUNUX01JRERMRT0yOworICAgICAgICAKKyAgICAKKyAgICAgICAgLy8gbW92ZW1lbnQgdmVjdG9yCisgICAgICAgIC8vIC0gZm9yIHByZXZpb3VzKCksIDAgZm9yIGN1cnJlbnQoKSwgKyBmb3IgbmV4dCgpCisgICAgICAgIC8vIG5vdCBjb25zdCBzbyB0aGF0IHdlIGNhbiB0ZXJtaW5hdGUgaXQgYmVsb3cgZm9yIHRoZSBlcnJvciBtZXNzYWdlCisgICAgICAgIFN0cmluZyBtb3Zlcz0iMCswKzAtLTAtMC0rKyswLS0rKysrKysrMC0tLS0tLS0tIjsKKyAgICAKKyAgICAgICAgCisgICAgICAgIFVDaGFySXRlcmF0b3IgaXRlcjMyID0gbmV3IFVDaGFySXRlcmF0b3IoZXhwZWN0LCBleHBlY3QubGVuZ3RoLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhQRUNUX01JRERMRSk7CisgICAgCisgICAgICAgIGludCBjMSwgYzI7CisgICAgICAgIGNoYXIgbTsKKyAgICAKKyAgICAgICAgLy8gaW5pdGlhbGx5IHNldCB0aGUgaW5kZXhlcyBpbnRvIHRoZSBtaWRkbGUgb2YgdGhlIHN0cmluZ3MKKyAgICAgICAgaXRlci5zZXRJbmRleChTUkNfTUlERExFKTsKKyAgICAKKyAgICAgICAgLy8gbW92ZSBhcm91bmQgYW5kIGNvbXBhcmUgdGhlIGl0ZXJhdGlvbiBjb2RlIHBvaW50cyB3aXRoCisgICAgICAgIC8vIHRoZSBleHBlY3RlZCBvbmVzCisgICAgICAgIGludCBtb3Zlc0luZGV4ID0wOworICAgICAgICB3aGlsZShtb3Zlc0luZGV4PG1vdmVzLmxlbmd0aCgpKSB7CisgICAgICAgICAgICBtPW1vdmVzLmNoYXJBdChtb3Zlc0luZGV4KyspOworICAgICAgICAgICAgaWYobT09Jy0nKSB7CisgICAgICAgICAgICAgICAgYzE9aXRlci5wcmV2aW91c0NvZGVQb2ludCgpOworICAgICAgICAgICAgICAgIGMyPWl0ZXIzMi5wcmV2aW91cygpOworICAgICAgICAgICAgfSBlbHNlIGlmKG09PScwJykgeworICAgICAgICAgICAgICAgIGMxPWl0ZXIuY3VycmVudENvZGVQb2ludCgpOworICAgICAgICAgICAgICAgIGMyPWl0ZXIzMi5jdXJyZW50KCk7CisgICAgICAgICAgICB9IGVsc2UgIHsvLyBtPT0nKycgCisgICAgICAgICAgICAgICAgYzE9aXRlci5uZXh0Q29kZVBvaW50KCk7CisgICAgICAgICAgICAgICAgYzI9aXRlcjMyLm5leHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgIC8vIGNvbXBhcmUgcmVzdWx0cworICAgICAgICAgICAgaWYoYzEhPWMyKSB7CisgICAgICAgICAgICAgICAgLy8gY29weSB0aGUgbW92ZXMgdW50aWwgdGhlIGN1cnJlbnQgKG0pIG1vdmUsIGFuZCB0ZXJtaW5hdGUKKyAgICAgICAgICAgICAgICBTdHJpbmcgaGlzdG9yeSA9IG1vdmVzLnN1YnN0cmluZygwLG1vdmVzSW5kZXgpOworICAgICAgICAgICAgICAgIGVycmxuKCJlcnJvcjogbWlzbWF0Y2ggaW4gTm9ybWFsaXplciBpdGVyYXRpb24gYXQgIitoaXN0b3J5KyI6ICIKKyAgICAgICAgICAgICAgICAgICAgICArImdvdCBjMT0gIiArIGhleChjMSkgKyIgIT0gZXhwZWN0ZWQgYzI9ICIrIGhleChjMikpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgLy8gY29tcGFyZSBpbmRleGVzCisgICAgICAgICAgICBpZihleHBlY3RJbmRleFtpdGVyLmdldEluZGV4KCldIT1pdGVyMzIuZ2V0SW5kZXgoKSkgeworICAgICAgICAgICAgICAgIC8vIGNvcHkgdGhlIG1vdmVzIHVudGlsIHRoZSBjdXJyZW50IChtKSBtb3ZlLCBhbmQgdGVybWluYXRlCisgICAgICAgICAgICAgICAgU3RyaW5nIGhpc3RvcnkgPSBtb3Zlcy5zdWJzdHJpbmcoMCxtb3Zlc0luZGV4KTsKKyAgICAgICAgICAgICAgICBlcnJsbigiZXJyb3I6IGluZGV4IG1pc21hdGNoIGluIE5vcm1hbGl6ZXIgaXRlcmF0aW9uIGF0ICIKKyAgICAgICAgICAgICAgICAgICAgICAraGlzdG9yeSsgIiA6ICIrICJOb3JtYWxpemVyIGluZGV4ICIgK2l0ZXIuZ2V0SW5kZXgoKQorICAgICAgICAgICAgICAgICAgICAgICsiIGV4cGVjdGVkICIrIGV4cGVjdEluZGV4W2l0ZXIzMi5nZXRJbmRleCgpXSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcHVibGljIHZvaWQgVGVzdFVuaWNvZGVDaGFyYWNhdGVySXRlcmF0b3IoKXsKKyAgICAgICAgaW50IGV4cGVjdFtdPXsKKyAgICAgICAgICAgIDB4MmY5OTksCisgICAgICAgICAgICAweDFkMTVmLAorICAgICAgICAgICAgMHhjNCwKKyAgICAgICAgICAgIDB4MWVkMAorICAgICAgICB9OworICAgIAorICAgICAgICAvLyBleHBlY3RlZCBzcmMgaW5kZXhlcyBjb3JyZXNwb25kaW5nIHRvIGV4cGVjdCBpbmRleGVzCisgICAgICAgIGludCBleHBlY3RJbmRleFtdPXsKKyAgICAgICAgICAgIDAsMCwKKyAgICAgICAgICAgIDEsMSwKKyAgICAgICAgICAgIDIsCisgICAgICAgICAgICAzLAorICAgICAgICAgICAgNCAvL25lZWRlZCAKKyAgICAgICAgfTsKKyAgICAKKyAgICAgICAgLy8gaW5pdGlhbCBpbmRleGVzIGludG8gdGhlIHNyYyBhbmQgZXhwZWN0IHN0cmluZ3MKKyAgICAgICAgCisgICAgICAgIGZpbmFsIGludCBTUkNfTUlERExFPTQ7CisgICAgICAgIGZpbmFsIGludCBFWFBFQ1RfTUlERExFPTI7CisgICAgICAgIAorICAgIAorICAgICAgICAvLyBtb3ZlbWVudCB2ZWN0b3IKKyAgICAgICAgLy8gLSBmb3IgcHJldmlvdXMoKSwgMCBmb3IgY3VycmVudCgpLCArIGZvciBuZXh0KCkKKyAgICAgICAgLy8gbm90IGNvbnN0IHNvIHRoYXQgd2UgY2FuIHRlcm1pbmF0ZSBpdCBiZWxvdyBmb3IgdGhlIGVycm9yIG1lc3NhZ2UKKyAgICAgICAgU3RyaW5nIG1vdmVzPSIwKzArMC0tMC0wLSsrKzAtLSsrKysrKyswLS0tLS0tLS0iOworICAgIAorICAgICAgICAKKyAgICAgICAgVUNoYXJJdGVyYXRvciBpdGVyMzIgPSBuZXcgVUNoYXJJdGVyYXRvcihleHBlY3QsIGV4cGVjdC5sZW5ndGgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWFBFQ1RfTUlERExFKTsKKyAgICAgICAgCisgICAgICAgIFVuaWNvZGVDaGFyYWN0ZXJJdGVyYXRvciBpdGVyID0gbmV3IFVuaWNvZGVDaGFyYWN0ZXJJdGVyYXRvcihuZXcgU3RyaW5nKHNyYykpOyAKKyAgICAgICAgaW50IGMxLCBjMjsKKyAgICAgICAgY2hhciBtOworICAgICAgCisgICAgICAgIC8vIGluaXRpYWxseSBzZXQgdGhlIGluZGV4ZXMgaW50byB0aGUgbWlkZGxlIG9mIHRoZSBzdHJpbmdzCisgICAgICAgIGl0ZXIuc2V0SW5kZXgoU1JDX01JRERMRSk7CisgICAgCisgICAgICAgIC8vIG1vdmUgYXJvdW5kIGFuZCBjb21wYXJlIHRoZSBpdGVyYXRpb24gY29kZSBwb2ludHMgd2l0aAorICAgICAgICAvLyB0aGUgZXhwZWN0ZWQgb25lcworICAgICAgICBpbnQgbW92ZXNJbmRleCA9MDsKKyAgICAgICAgd2hpbGUobW92ZXNJbmRleDxtb3Zlcy5sZW5ndGgoKSkgeworICAgICAgICAgICAgbT1tb3Zlcy5jaGFyQXQobW92ZXNJbmRleCsrKTsKKyAgICAgICAgICAgIGlmKG09PSctJykgeworICAgICAgICAgICAgICAgIGMxPWl0ZXIucHJldmlvdXNDb2RlUG9pbnQoKTsKKyAgICAgICAgICAgICAgICBjMj1pdGVyMzIucHJldmlvdXMoKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZihtPT0nMCcpIHsKKyAgICAgICAgICAgICAgICBjMT1pdGVyLmN1cnJlbnRDb2RlUG9pbnQoKTsKKyAgICAgICAgICAgICAgICBjMj1pdGVyMzIuY3VycmVudCgpOworICAgICAgICAgICAgfSBlbHNlICB7Ly8gbT09JysnIAorICAgICAgICAgICAgICAgIGMxPWl0ZXIubmV4dENvZGVQb2ludCgpOworICAgICAgICAgICAgICAgIGMyPWl0ZXIzMi5uZXh0KCk7CisgICAgICAgICAgICB9CisgICAgCisgICAgICAgICAgICAvLyBjb21wYXJlIHJlc3VsdHMKKyAgICAgICAgICAgIGlmKGMxIT1jMikgeworICAgICAgICAgICAgICAgIC8vIGNvcHkgdGhlIG1vdmVzIHVudGlsIHRoZSBjdXJyZW50IChtKSBtb3ZlLCBhbmQgdGVybWluYXRlCisgICAgICAgICAgICAgICAgU3RyaW5nIGhpc3RvcnkgPSBtb3Zlcy5zdWJzdHJpbmcoMCxtb3Zlc0luZGV4KTsKKyAgICAgICAgICAgICAgICBlcnJsbigiZXJyb3I6IG1pc21hdGNoIGluIE5vcm1hbGl6ZXIgaXRlcmF0aW9uIGF0ICIraGlzdG9yeSsiOiAiCisgICAgICAgICAgICAgICAgICAgICAgKyJnb3QgYzE9ICIgKyBoZXgoYzEpICsiICE9IGV4cGVjdGVkIGMyPSAiKyBoZXgoYzIpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgIC8vIGNvbXBhcmUgaW5kZXhlcworICAgICAgICAgICAgaWYoZXhwZWN0SW5kZXhbaXRlci5nZXRJbmRleCgpXSE9aXRlcjMyLmdldEluZGV4KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBjb3B5IHRoZSBtb3ZlcyB1bnRpbCB0aGUgY3VycmVudCAobSkgbW92ZSwgYW5kIHRlcm1pbmF0ZQorICAgICAgICAgICAgICAgIFN0cmluZyBoaXN0b3J5ID0gbW92ZXMuc3Vic3RyaW5nKDAsbW92ZXNJbmRleCk7CisgICAgICAgICAgICAgICAgZXJybG4oImVycm9yOiBpbmRleCBtaXNtYXRjaCBpbiBOb3JtYWxpemVyIGl0ZXJhdGlvbiBhdCAiCisgICAgICAgICAgICAgICAgICAgICAgK2hpc3RvcnkrICIgOiAiKyAiTm9ybWFsaXplciBpbmRleCAiICtpdGVyLmdldEluZGV4KCkKKyAgICAgICAgICAgICAgICAgICAgICArIiBleHBlY3RlZCAiKyBleHBlY3RJbmRleFtpdGVyMzIuZ2V0SW5kZXgoKV0pOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHsKKwkgICAgICAgIC8vdGVzdCBwcmV2aW91cyBjb2RlIHBvaW50CisJICAgICAgICBjaGFyW10gc3JjID0gbmV3IGNoYXJbXXsgJ1x1REMwMCcsJ1x1RDgwMCcsJ1x1REMwMScsJ1x1RDgwMicsJ1x1REMwMicsJ1x1REMwMyd9OworCSAgICAgICAgVW5pY29kZUNoYXJhY3Rlckl0ZXJhdG9yIGl0ZXIxID0gbmV3IFVuaWNvZGVDaGFyYWN0ZXJJdGVyYXRvcihuZXcgU3RyaW5nKHNyYykpOworCSAgICAgICAgaXRlcjEuc2V0SW5kZXgoMSk7CisJICAgICAgICBpbnQgY2g7CisJICAgICAgICAvLyB0aGlzIHNob3VsZCBuZXZlciBnbyBpbnRvIGEgaW5maW5pdGUgbG9vcAorCSAgICAgICAgLy8gaWYgaXQgZG9lcyB0aGVuIHdlIGhhdmUgYSBwcm9ibGVtCisJICAgICAgICB3aGlsZSgoY2g9aXRlcjEucHJldmlvdXNDb2RlUG9pbnQoKSkhPWl0ZXIuRE9ORV9DT0RFUE9JTlQpeworCSAgICAgICAgICAgIGlmKGNoIT0weERjMDApeworCSAgICAgICAgICAgICAgICBlcnJsbigiaXRlci5wcmV2aW91c0NvZGVQb2ludCgpIGZhaWxlZCIpOworCSAgICAgICAgICAgIH0KKwkgICAgICAgIH0KKwkgICAgICAgIGl0ZXIxLnNldEluZGV4KDUpOworCSAgICAgICAgd2hpbGUoKGNoPWl0ZXIxLm5leHRDb2RlUG9pbnQoKSkgIT1pdGVyLkRPTkVfQ09ERVBPSU5UKXsKKwkgICAgICAgICAgICBpZihjaCE9IDB4REMwMyl7CisJICAgICAgICAgICAgICAgIGVycmxuKCJpdGVyLm5leHRDb2RlUG9pbnQoKSBmYWlsZWQiKTsKKwkgICAgICAgICAgICB9IAorCSAgICAgICAgfSAgICAgIAorCSAgICB9CisgICAgfQorICAgIHB1YmxpYyB2b2lkIFRlc3RVQ2hhcmFjdGVySXRlcmF0b3JXcmFwcGVyKCl7CisgICAgICAgIFN0cmluZyBzb3VyY2UgPSJhc2RmYXNkZmpvaXV5b2l1eTIzNDEyMzU2Nzk4ODY3NjUiOworICAgICAgICBVQ2hhcmFjdGVySXRlcmF0b3IgaXQgPSBVQ2hhcmFjdGVySXRlcmF0b3IuZ2V0SW5zdGFuY2Uoc291cmNlKTsKKyAgICAgICAgQ2hhcmFjdGVySXRlcmF0b3Igd3JhcF9jaSA9IGl0LmdldENoYXJhY3Rlckl0ZXJhdG9yKCk7CisgICAgICAgIENoYXJhY3Rlckl0ZXJhdG9yIGNpID0gbmV3IFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yKHNvdXJjZSk7CisgICAgICAgIHdyYXBfY2kuc2V0SW5kZXgoMTApOworICAgICAgICBjaS5zZXRJbmRleCgxMCk7CisgICAgICAgIFN0cmluZyBtb3Zlcz0iMCswKzAtLTAtMC0rKyswLS0rKysrKysrMC0tLS0tLS0tKysrKzAwMDAtLS0tMC0iOworICAgICAgICBpbnQgYzEsIGMyOworICAgICAgICBjaGFyIG07CisgICAgICAgIGludCBtb3Zlc0luZGV4ID0wOworICAgICAgICAKKyAgICAgICAgd2hpbGUobW92ZXNJbmRleDxtb3Zlcy5sZW5ndGgoKSkgeworICAgICAgICAgICAgbT1tb3Zlcy5jaGFyQXQobW92ZXNJbmRleCsrKTsKKyAgICAgICAgICAgIGlmKG09PSctJykgeworICAgICAgICAgICAgICAgIGMxPXdyYXBfY2kucHJldmlvdXMoKTsKKyAgICAgICAgICAgICAgICBjMj1jaS5wcmV2aW91cygpOworICAgICAgICAgICAgfSBlbHNlIGlmKG09PScwJykgeworICAgICAgICAgICAgICAgIGMxPXdyYXBfY2kuY3VycmVudCgpOworICAgICAgICAgICAgICAgIGMyPWNpLmN1cnJlbnQoKTsKKyAgICAgICAgICAgIH0gZWxzZSAgey8vIG09PScrJyAKKyAgICAgICAgICAgICAgICBjMT13cmFwX2NpLm5leHQoKTsKKyAgICAgICAgICAgICAgICBjMj1jaS5uZXh0KCk7CisgICAgICAgICAgICB9CisgICAgCisgICAgICAgICAgICAvLyBjb21wYXJlIHJlc3VsdHMKKyAgICAgICAgICAgIGlmKGMxIT1jMikgeworICAgICAgICAgICAgICAgIC8vIGNvcHkgdGhlIG1vdmVzIHVudGlsIHRoZSBjdXJyZW50IChtKSBtb3ZlLCBhbmQgdGVybWluYXRlCisgICAgICAgICAgICAgICAgU3RyaW5nIGhpc3RvcnkgPSBtb3Zlcy5zdWJzdHJpbmcoMCxtb3Zlc0luZGV4KTsKKyAgICAgICAgICAgICAgICBlcnJsbigiZXJyb3I6IG1pc21hdGNoIGluIE5vcm1hbGl6ZXIgaXRlcmF0aW9uIGF0ICIraGlzdG9yeSsiOiAiCisgICAgICAgICAgICAgICAgICAgICAgKyJnb3QgYzE9ICIgKyBoZXgoYzEpICsiICE9IGV4cGVjdGVkIGMyPSAiKyBoZXgoYzIpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgIC8vIGNvbXBhcmUgaW5kZXhlcworICAgICAgICAgICAgaWYod3JhcF9jaS5nZXRJbmRleCgpIT1jaS5nZXRJbmRleCgpKSB7CisgICAgICAgICAgICAgICAgLy8gY29weSB0aGUgbW92ZXMgdW50aWwgdGhlIGN1cnJlbnQgKG0pIG1vdmUsIGFuZCB0ZXJtaW5hdGUKKyAgICAgICAgICAgICAgICBTdHJpbmcgaGlzdG9yeSA9IG1vdmVzLnN1YnN0cmluZygwLG1vdmVzSW5kZXgpOworICAgICAgICAgICAgICAgIGVycmxuKCJlcnJvcjogaW5kZXggbWlzbWF0Y2ggaW4gTm9ybWFsaXplciBpdGVyYXRpb24gYXQgIgorICAgICAgICAgICAgICAgICAgICAgICtoaXN0b3J5KyAiIDogIisgIk5vcm1hbGl6ZXIgaW5kZXggIiArd3JhcF9jaS5nZXRJbmRleCgpCisgICAgICAgICAgICAgICAgICAgICAgKyIgZXhwZWN0ZWQgIisgY2kuZ2V0SW5kZXgoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYoY2kuZmlyc3QoKSE9d3JhcF9jaS5maXJzdCgpKXsKKyAgICAgICAgICAgIGVycmxuKCJDaGFyYWN0ZXJJdGVyYXRvcldyYXBwZXIuZmlyc3QoKSBmYWlsZWQuIGV4cGVjdGVkOiAiICsgY2kuZmlyc3QoKSArICIgZ290OiAiICt3cmFwX2NpLmZpcnN0KCkpOworICAgICAgICB9CisgICAgICAgIGlmKGNpLmxhc3QoKSE9d3JhcF9jaS5sYXN0KCkpeworICAgICAgICAgICAgZXJybG4oIkNoYXJhY3Rlckl0ZXJhdG9yV3JhcHBlci5sYXN0KCkgZmFpbGVkIGV4cGVjdGVkOiAiICsgY2kubGFzdCgpICsgIiBnb3Q6ICIgK3dyYXBfY2kubGFzdCgpKTsKKyAgICAgICAgfQorICAgICAgICBpZihjaS5nZXRCZWdpbkluZGV4KCkhPXdyYXBfY2kuZ2V0QmVnaW5JbmRleCgpKXsKKyAgICAgICAgICAgIGVycmxuKCJDaGFyYWN0ZXJJdGVyYXRvcldyYXBwZXIuZ2V0QmVnaW5JbmRleCgpIGZhaWxlZCBleHBlY3RlZDogIiArIGNpLmdldEJlZ2luSW5kZXgoKSArICIgZ290OiAiICt3cmFwX2NpLmdldEJlZ2luSW5kZXgoKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYoY2kuZ2V0RW5kSW5kZXgoKSE9d3JhcF9jaS5nZXRFbmRJbmRleCgpKXsKKyAgICAgICAgICAgIGVycmxuKCJDaGFyYWN0ZXJJdGVyYXRvcldyYXBwZXIuZ2V0RW5kSW5kZXgoKSBmYWlsZWQgZXhwZWN0ZWQ6ICIgKyBjaS5nZXRFbmRJbmRleCgpICsgIiBnb3Q6ICIgK3dyYXBfY2kuZ2V0RW5kSW5kZXgoKSk7CisgICAgICAgIH0KKyAgICAgICAgdHJ5eworICAgICAgICAgICAgQ2hhcmFjdGVySXRlcmF0b3IgY2xvbmVXQ0kgPSAoQ2hhcmFjdGVySXRlcmF0b3IpIHdyYXBfY2kuY2xvbmUoKTsKKyAgICAgICAgICAgIGlmKHdyYXBfY2kuZ2V0SW5kZXgoKSE9Y2xvbmVXQ0kuZ2V0SW5kZXgoKSl7CisgICAgICAgICAgICAgICAgZXJybG4oIkNoYXJhY3Rlckl0ZXJhdG9yV3JhcHBlci5jbG9uZSgpIGZhaWxlZCBleHBlY3RlZDogIiArd3JhcF9jaS5nZXRJbmRleCgpICsgIiBnb3Q6ICIgKyBjbG9uZVdDSS5nZXRJbmRleCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfWNhdGNoKEV4Y2VwdGlvbiBlKXsKKyAgICAgICAgICAgICBlcnJsbigiQ2hhcmFjdGVySXRlcmF0b3IuY2xvbmUoKSBmYWlsZWQiKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAvLyBwcml2YXRlIGRhdGEgbWVtYmVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgSVRFUkFUSU9OX1NUUklOR18gPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUZXN0aW5nIDEgMiAzIFx1ZDgwMFx1ZGMwMCA0NTYiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBJVEVSQVRJT05fU1VQUExFTUVOVEFSWV9JTkRFWCA9IDE0OworICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RKaXR0ZXJidWcxOTUyKCl7CisgICAgICAgIC8vdGVzdCBwcmV2aW91cyBjb2RlIHBvaW50CisgICAgICAgIGNoYXJbXSBzcmMgPSBuZXcgY2hhcltdeyAnXHVEQzAwJywnXHVEODAwJywnXHVEQzAxJywnXHVEODAyJywnXHVEQzAyJywnXHVEQzAzJ307CisgICAgICAgIFVDaGFyYWN0ZXJJdGVyYXRvciBpdGVyID0gVUNoYXJhY3Rlckl0ZXJhdG9yLmdldEluc3RhbmNlKHNyYyk7CisgICAgICAgIGl0ZXIuc2V0SW5kZXgoMSk7CisgICAgICAgIGludCBjaDsKKyAgICAgICAgLy8gdGhpcyBzaG91bGQgbmV2ZXIgZ28gaW50byBhIGluZmluaXRlIGxvb3AKKyAgICAgICAgLy8gaWYgaXQgZG9lcyB0aGVuIHdlIGhhdmUgYSBwcm9ibGVtCisgICAgICAgIHdoaWxlKChjaD1pdGVyLnByZXZpb3VzQ29kZVBvaW50KCkpIT1pdGVyLkRPTkUpeworCSAgICAgICAgaWYoY2ghPTB4RGMwMCl7CisJICAgICAgICAgICAgZXJybG4oIml0ZXIucHJldmlvdXNDb2RlUG9pbnQoKSBmYWlsZWQiKTsKKwkgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpdGVyLnNldEluZGV4KDUpOworICAgICAgICB3aGlsZSgoY2g9aXRlci5uZXh0Q29kZVBvaW50KCkpICE9aXRlci5ET05FKXsKKwkgICAgICAgIGlmKGNoIT0gMHhEQzAzKXsKKwkgICAgICAgICAgICBlcnJsbigiaXRlci5uZXh0Q29kZVBvaW50KCkgZmFpbGVkIik7CisJICAgICAgICB9IAorICAgICAgICB9ICAgICAgCisgICAgfQorICAgICAgICAKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9sYW5nL1Rlc3RVU2NyaXB0LmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvbGFuZy9UZXN0VVNjcmlwdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjc4ODZlMGEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvbGFuZy9UZXN0VVNjcmlwdC5qYXZhCkBAIC0wLDAgKzEsMzI4IEBACisvKioKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3QubGFuZzsKKworaW1wb3J0IGNvbS5pYm0uaWN1LmxhbmcuVVNjcmlwdDsKK2ltcG9ydCBjb20uaWJtLmljdS5sYW5nLlVTY3JpcHRSdW47CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC5UcmFuc2xpdGVyYXRvcjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0LlVuaWNvZGVTZXQ7CitpbXBvcnQgY29tLmlibS5pY3UuZGV2LnRlc3QuVGVzdEZtd2s7CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKKworcHVibGljIGNsYXNzIFRlc3RVU2NyaXB0IGV4dGVuZHMgVGVzdEZtd2t7CisgIAorICAgIC8qKgorICAgICogQ29uc3RydWN0b3IKKyAgICAqLworICAgIHB1YmxpYyBUZXN0VVNjcmlwdCgpCisgICAgeworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgbmV3IFRlc3RVU2NyaXB0KCkucnVuKGFyZ3MpOworICAgIH0KKyAgICBwdWJsaWMgdm9pZCBUZXN0TG9jYWxlR2V0Q29kZSgpeworICAgICAgICBmaW5hbCBMb2NhbGVbXSB0ZXN0TmFtZXM9eworICAgICAgICAvKiB0ZXN0IGxvY2FsZSAqLworICAgICAgICBuZXcgTG9jYWxlKCJlbiIsIiIpLCBuZXcgTG9jYWxlKCJlbiIsIlVTIiksCisgICAgICAgIG5ldyBMb2NhbGUoInNyIiwiIiksIG5ldyBMb2NhbGUoInRhIiwiIikgLCAKKyAgICAgICAgbmV3IExvY2FsZSgidGUiLCJJTiIpLAorICAgICAgICBuZXcgTG9jYWxlKCJoaSIsIiIpLCAKKyAgICAgICAgbmV3IExvY2FsZSgiaGUiLCIiKSwgbmV3IExvY2FsZSgiYXIiLCIiKSwKKyAgICAgICAgbmV3IExvY2FsZSgiYWJjZGUiLCIiKSwKKyAgICAgICAgbmV3IExvY2FsZSgiYWJjZGUiLCJjZGVmIikKKyAgICAgICAgfTsKKyAgICAgICAgZmluYWwgaW50W10gZXhwZWN0ZWQgPXsKKyAgICAgICAgICAgICAgICAvKiBsb2NhbGVzIHNob3VsZCByZXR1cm4gKi8KKyAgICAgICAgICAgICAgICBVU2NyaXB0LkxBVElOLCBVU2NyaXB0LkxBVElOLCAKKyAgICAgICAgICAgICAgICBVU2NyaXB0LkNZUklMTElDLCBVU2NyaXB0LlRBTUlMLCAKKyAgICAgICAgICAgICAgICBVU2NyaXB0LlRFTFVHVSxVU2NyaXB0LkRFVkFOQUdBUkksIAorICAgICAgICAgICAgICAgIFVTY3JpcHQuSEVCUkVXLCBVU2NyaXB0LkFSQUJJQywKKyAgICAgICAgICAgICAgICBVU2NyaXB0LklOVkFMSURfQ09ERSxVU2NyaXB0LklOVkFMSURfQ09ERQorICAgICAgICB9OworICAgICAgICBpbnQgaSA9MDsKKyAgICAgICAgaW50IG51bUVycm9ycyA9MDsKKworICAgICAgICBmb3IoIDsgaTx0ZXN0TmFtZXMubGVuZ3RoOyBpKyspeworICAgICAgICAgICAgaW50W10gY29kZSA9IFVTY3JpcHQuZ2V0Q29kZSh0ZXN0TmFtZXNbaV0pOworICAgICAgICAgICAgaWYoKGNvZGUhPW51bGwpICYmIChjb2RlWzBdICE9IGV4cGVjdGVkW2ldKSl7CisgICAgICAgICAgICAgICAgbG9nbG4oIkVycm9yIGdldHRpbmcgc2NyaXB0IGNvZGUgR290OiAiICtjb2RlWzBdICsgIiBFeHBlY3RlZDogIiArZXhwZWN0ZWRbaV0gKyIgZm9yIG5hbWUgIit0ZXN0TmFtZXNbaV0pOworICAgICAgICAgICAgICAgIG51bUVycm9ycysrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmKG51bUVycm9ycyA+MCApeworICAgICAgICAgICAgZXJybG4oIk51bWJlciBvZiBFcnJvcnMgaW4gVVNjcmlwdC5nZXRDb2RlKCkgOiAiICsgbnVtRXJyb3JzKTsKKyAgICAgICAgfSAgICAgICAgICAgIAorICAgIH0KKyAgICBwdWJsaWMgdm9pZCBUZXN0TXVsdGlwbGVDb2RlKCl7CisgICAgICAgIGZpbmFsIFN0cmluZ1tdIHRlc3ROYW1lcyA9IHsgImphIiAsImtvX0tSIiwiemgiLCJ6aF9UVyJ9OworICAgICAgICBmaW5hbCBpbnRbXVtdIGV4cGVjdGVkID0geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7VVNjcmlwdC5LQVRBS0FOQSxVU2NyaXB0LkhJUkFHQU5BLFVTY3JpcHQuSEFOfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1VTY3JpcHQuSEFOR1VMLCBVU2NyaXB0LkhBTn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtVU2NyaXB0LkhBTn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtVU2NyaXB0LkhBTixVU2NyaXB0LkJPUE9NT0ZPfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgZm9yKGludCBpPTA7IGk8dGVzdE5hbWVzLmxlbmd0aDtpKyspeworICAgICAgICAgICAgaW50W10gY29kZSA9IFVTY3JpcHQuZ2V0Q29kZSh0ZXN0TmFtZXNbaV0pOworICAgICAgICAgICAgaW50W10gZXhwdCA9IChpbnRbXSkgZXhwZWN0ZWRbaV07CisgICAgICAgICAgICBmb3IoaW50IGogPTA7IGo8IGNvZGUubGVuZ3RoO2orKyl7CisgICAgICAgICAgICAgICAgaWYoY29kZVtqXSE9ZXhwdFtqXSl7CisgICAgICAgICAgICAgICAgICAgIGxvZ2xuKCJFcnJvciBnZXR0aW5nIHNjcmlwdCBjb2RlIEdvdDogIiArY29kZVtqXSArICIgRXhwZWN0ZWQ6ICIgK2V4cHRbal0gKyIgZm9yIG5hbWUgIit0ZXN0TmFtZXNbaV0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBwdWJsaWMgdm9pZCBUZXN0R2V0Q29kZSgpeworCisgICAgICAgIGZpbmFsIFN0cmluZ1tdIHRlc3ROYW1lcz17CisgICAgICAgICAgICAvKiB0ZXN0IGxvY2FsZSAqLyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICJlbiIsICJlbl9VUyIsICJzciIsICJ0YSIsIiAgX19fICAgIC0tLXRhIiAsICJ0ZV9JTiIsICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgImhpIiwgImhlIiwgImFyIiwKKyAgICAgICAgICAgIC8qIHRlc3QgYWJiciAqLworICAgICAgICAgICAgIkhhbmkiLCAiSGFuZyIsIkhlYnIiLCJIaXJhIiwKKyAgICAgICAgICAgICJLbmRhIiwiS2FuYSIsIktobXIiLCJMYW8iLAorICAgICAgICAgICAgIkxhdG4iLC8qIkxhdGYiLCJMYXRnIiwqLyAKKyAgICAgICAgICAgICJNbHltIiwgIk1vbmciLAorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgLyogdGVzdCBuYW1lcyAqLworICAgICAgICAgICAgIkNZUklMTElDIiwiREVTRVJFVCIsIkRFVkFOQUdBUkkiLCJFVEhJT1BJQyIsIkdFT1JHSUFOIiwgCisgICAgICAgICAgICAiR09USElDIiwgICJHUkVFSyIsICAiR1VKQVJBVEkiLCAiQ09NTU9OIiwgIklOSEVSSVRFRCIsIAorICAgICAgICAgICAgLyogdGVzdCBsb3dlciBjYXNlIG5hbWVzICovCisgICAgICAgICAgICAibWFsYXlhbGFtIiwgIm1vbmdvbGlhbiIsICJteWFubWFyIiwgIm9naGFtIiwgIm9sZC1pdGFsaWMiLAorICAgICAgICAgICAgIm9yaXlhIiwgICAgICJydW5pYyIsICAgICAic2luaGFsYSIsICJzeXJpYWMiLCJ0YW1pbCIsICAgICAKKyAgICAgICAgICAgICJ0ZWx1Z3UiLCAgICAidGhhYW5hIiwgICAgInRoYWkiLCAgICAidGliZXRhbiIsIAorICAgICAgICAgICAgLyogdGVzdCB0aGUgYm91bmRzKi8KKyAgICAgICAgICAgICJ1Y2FzIiwgImFyYWJpYyIsIllpIiwiWnl5eSIKKyAgICAgICAgfTsKKyAgICAgICAgZmluYWwgaW50W10gZXhwZWN0ZWQgPXsKKyAgICAgICAgICAgIC8qIGxvY2FsZXMgc2hvdWxkIHJldHVybiAqLworICAgICAgICAgICAgVVNjcmlwdC5MQVRJTiwgVVNjcmlwdC5MQVRJTiwgCisgICAgICAgICAgICBVU2NyaXB0LkNZUklMTElDLCBVU2NyaXB0LlRBTUlMLCBVU2NyaXB0LlRBTUlMLCAKKyAgICAgICAgICAgIFVTY3JpcHQuVEVMVUdVLFVTY3JpcHQuREVWQU5BR0FSSSwgCisgICAgICAgICAgICBVU2NyaXB0LkhFQlJFVywgVVNjcmlwdC5BUkFCSUMsCisgICAgICAgICAgICAvKiBhYmJyIHNob3VsZCByZXR1cm4gKi8KKyAgICAgICAgICAgIFVTY3JpcHQuSEFOLCBVU2NyaXB0LkhBTkdVTCwgVVNjcmlwdC5IRUJSRVcsIFVTY3JpcHQuSElSQUdBTkEsCisgICAgICAgICAgICBVU2NyaXB0LktBTk5BREEsIFVTY3JpcHQuS0FUQUtBTkEsIFVTY3JpcHQuS0hNRVIsIFVTY3JpcHQuTEFPLAorICAgICAgICAgICAgVVNjcmlwdC5MQVRJTiwvKiBVU2NyaXB0LkxBVElOLCBVU2NyaXB0LkxBVElOLCovIAorICAgICAgICAgICAgVVNjcmlwdC5NQUxBWUFMQU0sIFVTY3JpcHQuTU9OR09MSUFOLAorICAgICAgICAgICAgLyogbmFtZXMgc2hvdWxkIHJldHVybiAqLworICAgICAgICAgICAgVVNjcmlwdC5DWVJJTExJQywgVVNjcmlwdC5ERVNFUkVULCBVU2NyaXB0LkRFVkFOQUdBUkksIFVTY3JpcHQuRVRISU9QSUMsIFVTY3JpcHQuR0VPUkdJQU4sCisgICAgICAgICAgICBVU2NyaXB0LkdPVEhJQywgVVNjcmlwdC5HUkVFSywgVVNjcmlwdC5HVUpBUkFUSSwgVVNjcmlwdC5DT01NT04sIFVTY3JpcHQuSU5IRVJJVEVELAorICAgICAgICAgICAgLyogbG93ZXIgY2FzZSBuYW1lcyBzaG91bGQgcmV0dXJuICovICAgIAorICAgICAgICAgICAgVVNjcmlwdC5NQUxBWUFMQU0sIFVTY3JpcHQuTU9OR09MSUFOLCBVU2NyaXB0Lk1ZQU5NQVIsIFVTY3JpcHQuT0dIQU0sIFVTY3JpcHQuT0xEX0lUQUxJQywKKyAgICAgICAgICAgIFVTY3JpcHQuT1JJWUEsIFVTY3JpcHQuUlVOSUMsIFVTY3JpcHQuU0lOSEFMQSwgVVNjcmlwdC5TWVJJQUMsIFVTY3JpcHQuVEFNSUwsCisgICAgICAgICAgICBVU2NyaXB0LlRFTFVHVSwgVVNjcmlwdC5USEFBTkEsIFVTY3JpcHQuVEhBSSwgVVNjcmlwdC5USUJFVEFOLAorICAgICAgICAgICAgLyogYm91bmRzICovCisgICAgICAgICAgICBVU2NyaXB0LlVDQVMsIFVTY3JpcHQuQVJBQklDLCBVU2NyaXB0LllJLCBVU2NyaXB0LkNPTU1PTgkKKyAgICAgICAgfTsKKyAgICAgICAgaW50IGkgPTA7CisgICAgICAgIGludCBudW1FcnJvcnMgPTA7CisKKyAgICAgICAgZm9yKCA7IGk8dGVzdE5hbWVzLmxlbmd0aDsgaSsrKXsKKyAgICAgICAgICAgIGludFtdIGNvZGUgPSBVU2NyaXB0LmdldENvZGUodGVzdE5hbWVzW2ldKTsKKyAgICAgICAgICAgIGlmKChjb2RlIT1udWxsKSAmJiAoY29kZVswXSAhPSBleHBlY3RlZFtpXSkpeworICAgICAgICAgICAgICAgIGxvZ2xuKCJFcnJvciBnZXR0aW5nIHNjcmlwdCBjb2RlIEdvdDogIiArY29kZVswXSArICIgRXhwZWN0ZWQ6ICIgK2V4cGVjdGVkW2ldICsiIGZvciBuYW1lICIrdGVzdE5hbWVzW2ldKTsKKyAgICAgICAgICAgICAgICBudW1FcnJvcnMrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZihudW1FcnJvcnMgPjAgKXsKKyAgICAgICAgICAgIGVycmxuKCJOdW1iZXIgb2YgRXJyb3JzIGluIFVTY3JpcHQuZ2V0Q29kZSgpIDogIiArIG51bUVycm9ycyk7CisgICAgICAgIH0KKyAgICB9CisgICAgcHVibGljIHZvaWQgVGVzdEdldE5hbWUoKXsKKyAgICAgICAgCisgICAgICAgIGZpbmFsIGludFtdIHRlc3RDb2Rlcz17CisgICAgICAgICAgICAvKiBuYW1lcyBzaG91bGQgcmV0dXJuICovCisgICAgICAgICAgICBVU2NyaXB0LkNZUklMTElDLCBVU2NyaXB0LkRFU0VSRVQsIFVTY3JpcHQuREVWQU5BR0FSSSwgVVNjcmlwdC5FVEhJT1BJQywgVVNjcmlwdC5HRU9SR0lBTiwKKyAgICAgICAgICAgIFVTY3JpcHQuR09USElDLCBVU2NyaXB0LkdSRUVLLCBVU2NyaXB0LkdVSkFSQVRJLAorICAgICAgICB9OworCisgICAgICAgIGZpbmFsIFN0cmluZ1tdIGV4cGVjdGVkTmFtZXM9eworICAgICAgICAgICAgICAKKyAgICAgICAgICAgIC8qIHRlc3QgbmFtZXMgKi8KKyAgICAgICAgICAgICJDeXJpbGxpYyIsIkRlc2VyZXQiLCJEZXZhbmFnYXJpIiwiRXRoaW9waWMiLCJHZW9yZ2lhbiIsIAorICAgICAgICAgICAgIkdvdGhpYyIsICAiR3JlZWsiLCAgIkd1amFyYXRpIiwgCisgICAgICAgIH07CisgICAgICAgIGludCBpID0wOworCisgICAgICAgIHdoaWxlKGk8IHRlc3RDb2Rlcy5sZW5ndGgpeworICAgICAgICAgICAgU3RyaW5nIHNjcmlwdE5hbWUgID0gVVNjcmlwdC5nZXROYW1lKHRlc3RDb2Rlc1tpXSk7CisgICAgICAgICAgICBpbnQgbnVtRXJyb3JzPTA7CisgICAgICAgICAgICBpZighZXhwZWN0ZWROYW1lc1tpXS5lcXVhbHMoc2NyaXB0TmFtZSkpeworICAgICAgICAgICAgICAgIGxvZ2xuKCJFcnJvciBnZXR0aW5nIGFiYnJldmlhdGlvbnMgR290OiAiICtzY3JpcHROYW1lICsiIEV4cGVjdGVkOiAiK2V4cGVjdGVkTmFtZXNbaV0pOworICAgICAgICAgICAgICAgIG51bUVycm9ycysrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYobnVtRXJyb3JzID4gMCl7CisgICAgICAgICAgICAgICAgaWYobnVtRXJyb3JzID4wICl7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJFcnJvcnMgVVNjcmlwdC5nZXRTaG9yTmFtZSgpIDogIiArIG51bUVycm9ycyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaSsrOworICAgICAgICB9CisKKyAgICB9CisgICAgcHVibGljIHZvaWQgVGVzdEdldFNob3J0TmFtZSgpeworICAgICAgICBmaW5hbCBpbnRbXSB0ZXN0Q29kZXM9eworICAgICAgICAgICAgLyogYWJiciBzaG91bGQgcmV0dXJuICovCisgICAgICAgICAgICBVU2NyaXB0LkhBTiwgVVNjcmlwdC5IQU5HVUwsIFVTY3JpcHQuSEVCUkVXLCBVU2NyaXB0LkhJUkFHQU5BLAorICAgICAgICAgICAgVVNjcmlwdC5LQU5OQURBLCBVU2NyaXB0LktBVEFLQU5BLCBVU2NyaXB0LktITUVSLCBVU2NyaXB0LkxBTywKKyAgICAgICAgICAgIFVTY3JpcHQuTEFUSU4sIAorICAgICAgICAgICAgVVNjcmlwdC5NQUxBWUFMQU0sIFVTY3JpcHQuTU9OR09MSUFOLAorICAgICAgICB9OworCisgICAgICAgIGZpbmFsIFN0cmluZ1tdIGV4cGVjdGVkQWJicj17CisgICAgICAgICAgICAgIC8qIHRlc3QgYWJiciAqLworICAgICAgICAgICAgIkhhbmkiLCAiSGFuZyIsIkhlYnIiLCJIaXJhIiwKKyAgICAgICAgICAgICJLbmRhIiwiS2FuYSIsIktobXIiLCJMYW9vIiwKKyAgICAgICAgICAgICJMYXRuIiwKKyAgICAgICAgICAgICJNbHltIiwgIk1vbmciLAorICAgICAgICB9OworICAgICAgICBpbnQgaT0wOworICAgICAgICB3aGlsZShpPHRlc3RDb2Rlcy5sZW5ndGgpeworICAgICAgICAgICAgU3RyaW5nICBzaG9ydE5hbWUgPSBVU2NyaXB0LmdldFNob3J0TmFtZSh0ZXN0Q29kZXNbaV0pOworICAgICAgICAgICAgaW50IG51bUVycm9ycz0wOworICAgICAgICAgICAgaWYoIWV4cGVjdGVkQWJicltpXS5lcXVhbHMoc2hvcnROYW1lKSl7CisgICAgICAgICAgICAgICAgbG9nbG4oIkVycm9yIGdldHRpbmcgYWJicmV2aWF0aW9ucyBHb3Q6ICIgK3Nob3J0TmFtZSsgIiBFeHBlY3RlZDogIiArZXhwZWN0ZWRBYmJyW2ldKTsKKyAgICAgICAgICAgICAgICBudW1FcnJvcnMrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmKG51bUVycm9ycyA+IDApeworICAgICAgICAgICAgICAgIGlmKG51bUVycm9ycyA+MCApeworICAgICAgICAgICAgICAgICAgICBlcnJsbigiRXJyb3JzIFVDaGFyLmdldFNjcmlwdEFiYnIoKSA6ICIrbnVtRXJyb3JzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpKys7CisgICAgICAgIH0KKworICAgIH0KKyAgICBwdWJsaWMgdm9pZCBUZXN0R2V0U2NyaXB0KCl7CisgICAgICAgIGludCBjb2RlcG9pbnRzW10gPSB7CisgICAgICAgICAgICAgICAgMHgwMDAwRkY5RCwgCisgICAgICAgICAgICAgICAgMHgwMDAwRkZCRSwgCisgICAgICAgICAgICAgICAgMHgwMDAwRkZDNywgCisgICAgICAgICAgICAgICAgMHgwMDAwRkZDRiwgCisgICAgICAgICAgICAgICAgMHgwMDAwRkZENywgCisgICAgICAgICAgICAgICAgMHgwMDAwRkZEQywgCisgICAgICAgICAgICAgICAgMHgwMDAxMDMwMCwKKyAgICAgICAgICAgICAgICAweDAwMDEwMzMwLAorICAgICAgICAgICAgICAgIDB4MDAwMTAzNEEsCisgICAgICAgICAgICAgICAgMHgwMDAxMDQwMCwKKyAgICAgICAgICAgICAgICAweDAwMDEwNDI4LAorICAgICAgICAgICAgICAgIDB4MDAwMUQxNjcsCisgICAgICAgICAgICAgICAgMHgwMDAxRDE3QiwKKyAgICAgICAgICAgICAgICAweDAwMDFEMTg1LAorICAgICAgICAgICAgICAgIDB4MDAwMUQxQUEsCisgICAgICAgICAgICAgICAgMHgwMDAyMDAwMCwKKyAgICAgICAgICAgICAgICAweDAwMDAwRDAyLAorICAgICAgICAgICAgICAgIDB4MDAwMDBEMDAsCisgICAgICAgICAgICAgICAgMHgwMDAwMDAwMCwKKyAgICAgICAgICAgICAgICAweDAwMDFEMTY5LCAKKyAgICAgICAgICAgICAgICAweDAwMDFEMTgyLCAKKyAgICAgICAgICAgICAgICAweDAwMDFEMThCLCAKKyAgICAgICAgICAgICAgICAweDAwMDFEMUFELCAKKyAgICAgICAgfTsKKworICAgICAgICBpbnQgZXhwZWN0ZWRbXSA9IHsKKyAgICAgICAgICAgICAgICBVU2NyaXB0LktBVEFLQU5BICwKKyAgICAgICAgICAgICAgICBVU2NyaXB0LkhBTkdVTCAsCisgICAgICAgICAgICAgICAgVVNjcmlwdC5IQU5HVUwgLAorICAgICAgICAgICAgICAgIFVTY3JpcHQuSEFOR1VMICwKKyAgICAgICAgICAgICAgICBVU2NyaXB0LkhBTkdVTCAsCisgICAgICAgICAgICAgICAgVVNjcmlwdC5IQU5HVUwgLAorICAgICAgICAgICAgICAgIFVTY3JpcHQuT0xEX0lUQUxJQywgCisgICAgICAgICAgICAgICAgVVNjcmlwdC5HT1RISUMgLAorICAgICAgICAgICAgICAgIFVTY3JpcHQuR09USElDICwKKyAgICAgICAgICAgICAgICBVU2NyaXB0LkRFU0VSRVQgLAorICAgICAgICAgICAgICAgIFVTY3JpcHQuREVTRVJFVCAsCisgICAgICAgICAgICAgICAgVVNjcmlwdC5JTkhFUklURUQsCisgICAgICAgICAgICAgICAgVVNjcmlwdC5JTkhFUklURUQsCisgICAgICAgICAgICAgICAgVVNjcmlwdC5JTkhFUklURUQsCisgICAgICAgICAgICAgICAgVVNjcmlwdC5JTkhFUklURUQsCisgICAgICAgICAgICAgICAgVVNjcmlwdC5IQU4gLAorICAgICAgICAgICAgICAgIFVTY3JpcHQuTUFMQVlBTEFNLAorICAgICAgICAgICAgICAgIFVTY3JpcHQuQ09NTU9OLAorICAgICAgICAgICAgICAgIFVTY3JpcHQuQ09NTU9OLAorICAgICAgICAgICAgICAgIFVTY3JpcHQuSU5IRVJJVEVEICwKKyAgICAgICAgICAgICAgICBVU2NyaXB0LklOSEVSSVRFRCAsCisgICAgICAgICAgICAgICAgVVNjcmlwdC5JTkhFUklURUQgLAorICAgICAgICAgICAgICAgIFVTY3JpcHQuSU5IRVJJVEVEICwKKyAgICAgICAgfTsKKyAgICAgICAgaW50IGkgPTA7CisgICAgICAgIGludCBjb2RlID0gVVNjcmlwdC5JTlZBTElEX0NPREU7CisgICAgICAgIGJvb2xlYW4gcGFzc2VkID0gdHJ1ZTsKKworICAgICAgICB3aGlsZShpPCBjb2RlcG9pbnRzLmxlbmd0aCl7CisgICAgICAgICAgICBjb2RlID0gVVNjcmlwdC5nZXRTY3JpcHQoY29kZXBvaW50c1tpXSk7CisKKyAgICAgICAgICAgIGlmKGNvZGUgIT0gZXhwZWN0ZWRbaV0peworICAgICAgICAgICAgICAgIGxvZ2xuKCJVU2NyaXB0LmdldFNjcmlwdCBmb3IgY29kZXBvaW50IDB4IisgaGV4KGNvZGVwb2ludHNbaV0pKyIgZmFpbGVkIik7CisgICAgICAgICAgICAgICAgcGFzc2VkID0gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgfQorICAgICAgICBpZighcGFzc2VkKXsKKyAgICAgICAgICAgZXJybG4oIlVTY3JpcHQuZ2V0U2NyaXB0IGZhaWxlZC4iKTsKKyAgICAgICAgfSAgICAgIAorICAgIH0KKyAgICBwdWJsaWMgdm9pZCBUZXN0QWxsQ29kZXBvaW50cygpeworICAgIAlpbnQgY29kZTsKKyAgICAgICAgU3RyaW5nIG9sZElkPSIiOworICAgICAgICBTdHJpbmcgb2xkQWJicklkPSIiOworICAgIAlmb3IoIGludCBpID0wOyBpIDw9IDB4MTBmZmZmOyBpKyspeworICAgIAkJY29kZSA9VVNjcmlwdC5JTlZBTElEX0NPREU7CisgICAgCQljb2RlID0gVVNjcmlwdC5nZXRTY3JpcHQoaSk7CisgICAgCQlpZihjb2RlPT1VU2NyaXB0LklOVkFMSURfQ09ERSl7CisgICAgCQkJZXJybG4oIlVTY3JpcHQuZ2V0U2NyaXB0IGZvciBjb2RlcG9pbnQgMHgiKyBoZXgoaSkrIiBmYWlsZWQiKTsKKyAgICAJCX0KKyAgICAgICAgICAgIFN0cmluZyBpZCA9VVNjcmlwdC5nZXROYW1lKGNvZGUpOworICAgICAgICAgICAgU3RyaW5nIGFiYnIgPSBVU2NyaXB0LmdldFNob3J0TmFtZShjb2RlKTsKKyAgICAgICAgICAgIFN0cmluZyBuZXdJZCA9Ils6IitpZCsiOl07TkZEIjsKKyAgICAgICAgICAgIFN0cmluZyBuZXdBYmJySWQgPSJbOiIrYWJicisiOl07TkZEIjsKKyAgICAgICAgICAgIGlmKCFvbGRJZC5lcXVhbHMobmV3SWQpKXsKKyAgICAgICAgICAgICAgICB0cnl7CisgICAgICAgICAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZShuZXdJZCk7CisgICAgICAgICAgICAgICAgICAgIGlmKHQ9PW51bGwpeworICAgICAgICAgICAgICAgICAgICAgICAgIGVycmxuKCJGYWlsZWQgdG8gY3JlYXRlIHRyYW5zbGl0ZXJhdG9yIGZvciAiK2hleChpKSsKKyAgICAgICAgICAgICAgICAgICAgICAgICAiIHNjcmlwdCBjb2RlOiAiICtpZCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9Y2F0Y2goRXhjZXB0aW9uIGUpeworICAgICAgICAgICAgICAgICAgICBlcnJsbigiRmFpbGVkIHRvIGNyZWF0ZSB0cmFuc2xpdGVyYXRvciBmb3IgIitoZXgoaSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArIiBzY3JpcHQgY29kZTogIiAraWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgRXhjZXB0aW9uOiAiK2UuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBvbGRJZCA9IG5ld0lkOworICAgICAgICAgICAgaWYoIW9sZEFiYnJJZC5lcXVhbHMobmV3QWJicklkKSl7CisgICAgICAgICAgICAgICAgdHJ5eworICAgICAgICAgICAgICAgICAgICBUcmFuc2xpdGVyYXRvciB0ID0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UobmV3QWJicklkKTsKKyAgICAgICAgICAgICAgICAgICAgaWYodD09bnVsbCl7CisgICAgICAgICAgICAgICAgICAgICAgICAgZXJybG4oIkZhaWxlZCB0byBjcmVhdGUgdHJhbnNsaXRlcmF0b3IgZm9yICIraGV4KGkpKworICAgICAgICAgICAgICAgICAgICAgICAgICIgc2NyaXB0IGNvZGU6ICIgK2FiYnIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfWNhdGNoKEV4Y2VwdGlvbiBlKXsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIkZhaWxlZCB0byBjcmVhdGUgdHJhbnNsaXRlcmF0b3IgZm9yICIraGV4KGkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyIgc2NyaXB0IGNvZGU6ICIgK2FiYnIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgRXhjZXB0aW9uOiAiK2UuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBvbGRBYmJySWQgPSBuZXdBYmJySWQ7CisgICAgCX0KKyAgICB9CisgICAgcHVibGljIHZvaWQgVGVzdFNjcmlwdE5hbWVzKCl7CisgICAgICAgIGZvcihpbnQgaT0wOyBpPFVTY3JpcHQuQ09ERV9MSU1JVDtpKyspeworICAgICAgICAgICAgU3RyaW5nIG5hbWUgPSBVU2NyaXB0LmdldE5hbWUoaSk7CisgICAgICAgICAgICBpZihuYW1lLmVxdWFscygiIikgKXsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTEVEOiBnZXROYW1lIGZvciBjb2RlIDogIitpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFN0cmluZyBzaG9ydE5hbWU9IFVTY3JpcHQuZ2V0U2hvcnROYW1lKGkpOworICAgICAgICAgICAgaWYoc2hvcnROYW1lLmVxdWFscygiIikpeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMRUQ6IGdldE5hbWUgZm9yIGNvZGUgOiAiK2kpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSAgIAkKKyB9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvbGFuZy9UZXN0VVNjcmlwdFJ1bi5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2xhbmcvVGVzdFVTY3JpcHRSdW4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjhjYTk0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2xhbmcvVGVzdFVTY3JpcHRSdW4uamF2YQpAQCAtMCwwICsxLDM0MSBAQAorLyoqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIENvcHlyaWdodCAoQykgMTk5OS0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0Lmxhbmc7CisKK2ltcG9ydCBjb20uaWJtLmljdS5sYW5nLlVTY3JpcHQ7CitpbXBvcnQgY29tLmlibS5pY3UubGFuZy5VU2NyaXB0UnVuOworaW1wb3J0IGNvbS5pYm0uaWN1LmRldi50ZXN0LlRlc3RGbXdrOworCitwdWJsaWMgY2xhc3MgVGVzdFVTY3JpcHRSdW4gZXh0ZW5kcyBUZXN0Rm13aworeworICAgIHB1YmxpYyBUZXN0VVNjcmlwdFJ1bigpCisgICAgeworICAgICAgICAvLyBub3RoaW5nCisgICAgfQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBuZXcgVGVzdFVTY3JpcHRSdW4oKS5ydW4oYXJncyk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2xhc3MgUnVuVGVzdERhdGEKKyAgICB7CisgICAgICAgIFN0cmluZyBydW5UZXh0OworICAgICAgICBpbnQgICAgcnVuU2NyaXB0OworICAgICAgICAKKyAgICAgICAgcHVibGljIFJ1blRlc3REYXRhKFN0cmluZyB0aGVUZXh0LCBpbnQgdGhlU2NyaXB0Q29kZSkKKyAgICAgICAgeworICAgICAgICAgICAgcnVuVGV4dCAgID0gdGhlVGV4dDsKKyAgICAgICAgICAgIHJ1blNjcmlwdCA9IHRoZVNjcmlwdENvZGU7CisgICAgICAgIH0KKyAgICB9OworICAgIAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFJ1blRlc3REYXRhW10gdGVzdERhdGEgPSB7CisgICAgICAgIG5ldyBSdW5UZXN0RGF0YSgiXHUwMDIwXHUwOTQ2XHUwOTM5XHUwOTNGXHUwOTI4XHUwOTREXHUwOTI2XHUwOTQwXHUwMDIwIiwgVVNjcmlwdC5ERVZBTkFHQVJJKSwKKyAgICAgICAgbmV3IFJ1blRlc3REYXRhKCJcdTA2MjdcdTA2NDRcdTA2MzlcdTA2MzFcdTA2MjhcdTA2NEFcdTA2MjlcdTAwMjAiLCBVU2NyaXB0LkFSQUJJQyksCisgICAgICAgIG5ldyBSdW5UZXN0RGF0YSgiXHUwNDIwXHUwNDQzXHUwNDQxXHUwNDQxXHUwNDNBXHUwNDM4XHUwNDM5XHUwMDIwIiwgVVNjcmlwdC5DWVJJTExJQyksCisgICAgICAgIG5ldyBSdW5UZXN0RGF0YSgiRW5nbGlzaCAoIiwgVVNjcmlwdC5MQVRJTiksCisgICAgICAgIG5ldyBSdW5UZXN0RGF0YSgiXHUwRTQ0XHUwRTE3XHUwRTIyIiwgVVNjcmlwdC5USEFJKSwKKyAgICAgICAgbmV3IFJ1blRlc3REYXRhKCIpICIsIFVTY3JpcHQuTEFUSU4pLAorICAgICAgICBuZXcgUnVuVGVzdERhdGEoIlx1NkYyMlx1NUI3NSIsIFVTY3JpcHQuSEFOKSwKKyAgICAgICAgbmV3IFJ1blRlc3REYXRhKCJcdTMwNjhcdTMwNzJcdTMwODlcdTMwNENcdTMwNkFcdTMwNjgiLCBVU2NyaXB0LkhJUkFHQU5BKSwKKyAgICAgICAgbmV3IFJ1blRlc3REYXRhKCJcdTMwQUJcdTMwQkZcdTMwQUJcdTMwQ0EiLCBVU2NyaXB0LktBVEFLQU5BKSwKKyAgICAgICAgbmV3IFJ1blRlc3REYXRhKCJcdUQ4MDFcdURDMDBcdUQ4MDFcdURDMDFcdUQ4MDFcdURDMDJcdUQ4MDFcdURDMDMiLCBVU2NyaXB0LkRFU0VSRVQpCisgICAgfTsKKyAgICAKKyAgICBwcml2YXRlIHZvaWQgQ2hlY2tTY3JpcHRSdW5zKFVTY3JpcHRSdW4gc2NyaXB0UnVuLCBpbnRbXSBydW5TdGFydHMsIFJ1blRlc3REYXRhW10gdGVzdERhdGEpCisgICAgeworICAgICAgICBpbnQgcnVuLCBydW5TdGFydCwgcnVuTGltaXQ7CisgICAgICAgIGludCBydW5TY3JpcHQ7CisKKyAgICAgICAgLyogaXRlcmF0ZSBvdmVyIGFsbCB0aGUgcnVucyAqLworICAgICAgICBydW4gPSAwOworICAgICAgICB3aGlsZSAoc2NyaXB0UnVuLm5leHQoKSkgeworICAgICAgICAgICAgcnVuU3RhcnQgID0gc2NyaXB0UnVuLmdldFNjcmlwdFN0YXJ0KCk7CisgICAgICAgICAgICBydW5MaW1pdCAgPSBzY3JpcHRSdW4uZ2V0U2NyaXB0TGltaXQoKTsKKyAgICAgICAgICAgIHJ1blNjcmlwdCA9IHNjcmlwdFJ1bi5nZXRTY3JpcHRDb2RlKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChydW5TdGFydCAhPSBydW5TdGFydHNbcnVuXSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJJbmNvcnJlY3Qgc3RhcnQgb2Zmc2V0IGZvciBydW4gIiArIHJ1biArICI6IGV4cGVjdGVkICIgKyBydW5TdGFydHNbcnVuXSArICIsIGdvdCAiICsgcnVuU3RhcnQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAocnVuTGltaXQgIT0gcnVuU3RhcnRzW3J1biArIDFdKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkluY29ycmVjdCBsaW1pdCBvZmZzZXQgZm9yIHJ1biAiICsgcnVuICsgIjogZXhwZWN0ZWQgIiArIHJ1blN0YXJ0c1tydW4gKyAxXSArICIsIGdvdCAiICsgcnVuTGltaXQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAocnVuU2NyaXB0ICE9IHRlc3REYXRhW3J1bl0ucnVuU2NyaXB0KSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkluY29ycmVjdCBzY3JpcHQgZm9yIHJ1biAiICsgcnVuICsgIjogZXhwZWN0ZWQgXCIiICsgVVNjcmlwdC5nZXROYW1lKHRlc3REYXRhW3J1bl0ucnVuU2NyaXB0KSArICJcIiwgZ290IFwiIiArIFVTY3JpcHQuZ2V0TmFtZShydW5TY3JpcHQpICsgIlwiIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJ1biArPSAxOworCisgICAgICAgICAgICAvKiBzdG9wIHdoZW4gd2UndmUgc2VlbiBhbGwgdGhlIHJ1bnMgd2UgZXhwZWN0IHRvIHNlZSAqLworICAgICAgICAgICAgaWYgKHJ1biA+PSB0ZXN0RGF0YS5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8qIENvbXBsYWluIGlmIHdlIGRpZG4ndCBzZWUgdGhlbiBudW1iZXIgb2YgcnVucyB3ZSBleHBlY3RlZCAqLworICAgICAgICBpZiAocnVuICE9IHRlc3REYXRhLmxlbmd0aCkgeworICAgICAgICAgICAgZXJybG4oIkluY29ycmVjdCBudW1iZXIgb2YgcnVuczogZXhwZWN0ZWQgIiArIHRlc3REYXRhLmxlbmd0aCArICIsIGdvdCAiICsgcnVuKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RDb250c3RydWN0aW9uKCkKKyAgICB7CisgICAgICAgIFVTY3JpcHRSdW4gc2NyaXB0UnVuID0gbnVsbDsKKyAgICAgICAgY2hhcltdIG51bGxDaGFycyAgPSBudWxsLCBkdW1teUNoYXJzICA9IHsnZCcsICd1JywgJ20nLCAnbScsICd5J307CisgICAgICAgIFN0cmluZyBudWxsU3RyaW5nID0gbnVsbCwgZHVtbXlTdHJpbmcgPSBuZXcgU3RyaW5nKGR1bW15Q2hhcnMpOworICAgICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHNjcmlwdFJ1biA9IG5ldyBVU2NyaXB0UnVuKG51bGxTdHJpbmcsIDAsIDEwMCk7CisgICAgICAgICAgICBlcnJsbigibmV3IFVTY3JpcHRSdW4obnVsbFN0cmluZywgMCwgMTAwKSBkaWQgbm90IHByb2R1Y2UgYW4gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uISIpOworICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWFlKSB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBzY3JpcHRSdW4gPSBuZXcgVVNjcmlwdFJ1bihudWxsU3RyaW5nLCAxMDAsIDApOworICAgICAgICAgICAgZXJybG4oIm5ldyBVU2NyaXB0UnVuKG51bGxTdHJpbmcsIDEwMCwgMCkgZGlkIG5vdCBwcm9kdWNlIGFuIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiEiKTsKKyAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlhZSkgeworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0cnkgeworICAgICAgICAgICAgc2NyaXB0UnVuID0gbmV3IFVTY3JpcHRSdW4obnVsbFN0cmluZywgMCwgLTEwMCk7CisgICAgICAgICAgICBlcnJsbigibmV3IFVTY3JpcHRSdW4obnVsbFN0cmluZywgMCwgLTEwMCkgZGlkIG5vdCBwcm9kdWNlIGFuIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiEiKTsKKyAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlhZSkgeworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0cnkgeworICAgICAgICAgICAgc2NyaXB0UnVuID0gbmV3IFVTY3JpcHRSdW4obnVsbFN0cmluZywgLTEwMCwgMCk7CisgICAgICAgICAgICBlcnJsbigibmV3IFVTY3JpcHRSdW4obnVsbFN0cmluZywgLTEwMCwgMCkgZGlkIG5vdCBwcm9kdWNlIGFuIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiEiKTsKKyAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlhZSkgeworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0cnkgeworICAgICAgICAgICAgc2NyaXB0UnVuID0gbmV3IFVTY3JpcHRSdW4obnVsbENoYXJzLCAwLCAxMDApOworICAgICAgICAgICAgZXJybG4oIm5ldyBVU2NyaXB0UnVuKG51bGxDaGFycywgMCwgMTAwKSBkaWQgbm90IHByb2R1Y2UgYW4gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uISIpOworICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWFlKSB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBzY3JpcHRSdW4gPSBuZXcgVVNjcmlwdFJ1bihudWxsQ2hhcnMsIDEwMCwgMCk7CisgICAgICAgICAgICBlcnJsbigibmV3IFVTY3JpcHRSdW4obnVsbENoYXJzLCAxMDAsIDApIGRpZCBub3QgcHJvZHVjZSBhbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24hIik7CisgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpYWUpIHsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHNjcmlwdFJ1biA9IG5ldyBVU2NyaXB0UnVuKG51bGxDaGFycywgMCwgLTEwMCk7CisgICAgICAgICAgICBlcnJsbigibmV3IFVTY3JpcHRSdW4obnVsbENoYXJzLCAwLCAtMTAwKSBkaWQgbm90IHByb2R1Y2UgYW4gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uISIpOworICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWFlKSB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBzY3JpcHRSdW4gPSBuZXcgVVNjcmlwdFJ1bihudWxsQ2hhcnMsIC0xMDAsIDApOworICAgICAgICAgICAgZXJybG4oIm5ldyBVU2NyaXB0UnVuKG51bGxDaGFycywgLTEwMCwgMCkgZGlkIG5vdCBwcm9kdWNlIGFuIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiEiKTsKKyAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlhZSkgeworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0cnkgeworICAgICAgICAgICAgc2NyaXB0UnVuID0gbmV3IFVTY3JpcHRSdW4oZHVtbXlTdHJpbmcsIDAsIDYpOworICAgICAgICAgICAgZXJybG4oIm5ldyBVU2NyaXB0UnVuKGR1bW15U3RyaW5nLCAwLCA2KSBkaWQgbm90IHByb2R1Y2UgYW4gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uISIpOworICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWFlKSB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBzY3JpcHRSdW4gPSBuZXcgVVNjcmlwdFJ1bihkdW1teVN0cmluZywgNiwgMCk7CisgICAgICAgICAgICBlcnJsbigibmV3IFVTY3JpcHRSdW4oZHVtbXksIDYsIDApIGRpZCBub3QgcHJvZHVjZSBhbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24hIik7CisgICAgICAgIH1jYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlhZSkgeworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0cnkgeworICAgICAgICAgICAgc2NyaXB0UnVuID0gbmV3IFVTY3JpcHRSdW4oZHVtbXlTdHJpbmcsIDAsIC0xMDApOworICAgICAgICAgICAgZXJybG4oIm5ldyBVU2NyaXB0UnVuKGR1bW15U3RyaW5nLCAwLCAtMTAwKSBkaWQgbm90IHByb2R1Y2UgYW4gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uISIpOworICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWFlKSB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBzY3JpcHRSdW4gPSBuZXcgVVNjcmlwdFJ1bihkdW1teVN0cmluZywgLTEwMCwgMCk7CisgICAgICAgICAgICBlcnJsbigibmV3IFVTY3JpcHRSdW4oZHVtbXksIC0xMDAsIDApIGRpZCBub3QgcHJvZHVjZSBhbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24hIik7CisgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpYWUpIHsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHNjcmlwdFJ1biA9IG5ldyBVU2NyaXB0UnVuKGR1bW15Q2hhcnMsIDAsIDYpOworICAgICAgICAgICAgZXJybG4oIm5ldyBVU2NyaXB0UnVuKGR1bW15Q2hhcnMsIDAsIDYpIGRpZCBub3QgcHJvZHVjZSBhbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24hIik7CisgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpYWUpIHsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHNjcmlwdFJ1biA9IG5ldyBVU2NyaXB0UnVuKGR1bW15Q2hhcnMsIDYsIDApOworICAgICAgICAgICAgZXJybG4oIm5ldyBVU2NyaXB0UnVuKGR1bW15Q2hhcnMsIDYsIDApIGRpZCBub3QgcHJvZHVjZSBhbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24hIik7CisgICAgICAgIH1jYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlhZSkgeworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0cnkgeworICAgICAgICAgICAgc2NyaXB0UnVuID0gbmV3IFVTY3JpcHRSdW4oZHVtbXlDaGFycywgMCwgLTEwMCk7CisgICAgICAgICAgICBlcnJsbigibmV3IFVTY3JpcHRSdW4oZHVtbXlDaGFycywgMCwgLTEwMCkgZGlkIG5vdCBwcm9kdWNlIGFuIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiEiKTsKKyAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlhZSkgeworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0cnkgeworICAgICAgICAgICAgc2NyaXB0UnVuID0gbmV3IFVTY3JpcHRSdW4oZHVtbXlDaGFycywgLTEwMCwgMCk7CisgICAgICAgICAgICBlcnJsbigibmV3IFVTY3JpcHRSdW4oZHVtbXksIC0xMDAsIDApIGRpZCBub3QgcHJvZHVjZSBhbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24hIik7CisgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpYWUpIHsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0UmVzZXQoKQorICAgIHsKKyAgICAgICAgVVNjcmlwdFJ1biBzY3JpcHRSdW4gPSBudWxsOworICAgICAgICBjaGFyW10gZHVtbXkgPSB7J2QnLCAndScsICdtJywgJ20nLCAneSd9OworICAgICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHNjcmlwdFJ1biA9IG5ldyBVU2NyaXB0UnVuKCk7CisgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpYWUpIHsKKyAgICAgICAgICAgIGVycmxuKCJuZXcgVVNjcmlwdFJ1bigpIHByb2R1Y2VkIGFuIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiEiKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHNjcmlwdFJ1bi5yZXNldCgwLCAxMDApOworICAgICAgICAgICAgZXJybG4oInNjcmlwdFJ1bi5yZXNldCgwLCAxMDApIGRpZCBub3QgcHJvZHVjZSBhbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24hIik7CisgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpYWUpIHsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHNjcmlwdFJ1bi5yZXNldCgxMDAsIDApOworICAgICAgICAgICAgZXJybG4oInNjcmlwdFJ1bi5yZXNldCgxMDAsIDApIGRpZCBub3QgcHJvZHVjZSBhbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24hIik7CisgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpYWUpIHsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHNjcmlwdFJ1bi5yZXNldCgwLCAtMTAwKTsKKyAgICAgICAgICAgIGVycmxuKCJzY3JpcHRSdW4ucmVzZXQoMCwgLTEwMCkgZGlkIG5vdCBwcm9kdWNlIGFuIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiEiKTsKKyAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlhZSkgeworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0cnkgeworICAgICAgICAgICAgc2NyaXB0UnVuLnJlc2V0KC0xMDAsIDApOworICAgICAgICAgICAgZXJybG4oInNjcmlwdFJ1bi5yZXNldCgtMTAwLCAwKSBkaWQgbm90IHByb2R1Y2UgYW4gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uISIpOworICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWFlKSB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBzY3JpcHRSdW4ucmVzZXQoZHVtbXksIDAsIDYpOworICAgICAgICAgICAgZXJybG4oInNjcmlwdFJ1bi5yZXNldChkdW1teSwgMCwgNikgZGlkIG5vdCBwcm9kdWNlIGFuIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiEiKTsKKyAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlhZSkgeworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0cnkgeworICAgICAgICAgICAgc2NyaXB0UnVuLnJlc2V0KGR1bW15LCA2LCAwKTsKKyAgICAgICAgICAgIGVycmxuKCJzY3JpcHRSdW4ucmVzZXQoZHVtbXksIDYsIDApIGRpZCBub3QgcHJvZHVjZSBhbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24hIik7CisgICAgICAgIH1jYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlhZSkgeworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0cnkgeworICAgICAgICAgICAgc2NyaXB0UnVuLnJlc2V0KGR1bW15LCAwLCAtMTAwKTsKKyAgICAgICAgICAgIGVycmxuKCJzY3JpcHRSdW4ucmVzZXQoZHVtbXksIDAsIC0xMDApIGRpZCBub3QgcHJvZHVjZSBhbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24hIik7CisgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpYWUpIHsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHNjcmlwdFJ1bi5yZXNldChkdW1teSwgLTEwMCwgMCk7CisgICAgICAgICAgICBlcnJsbigic2NyaXB0UnVuLnJlc2V0KGR1bW15LCAtMTAwLCAwKSBkaWQgbm90IHByb2R1Y2UgYW4gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uISIpOworICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWFlKSB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBzY3JpcHRSdW4ucmVzZXQoZHVtbXksIDAsIGR1bW15Lmxlbmd0aCk7CisgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpYWUpIHsKKyAgICAgICAgICAgIGVycmxuKCJzY3JpcHRSdW4ucmVzZXQoZHVtbXksIDAsIGR1bW15Lmxlbmd0aCkgcHJvZHVjZWQgYW4gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uISIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHNjcmlwdFJ1bi5yZXNldCgwLCA2KTsKKyAgICAgICAgICAgIGVycmxuKCJzY3JpcHRSdW4ucmVzZXQoMCwgNikgZGlkIG5vdCBwcm9kdWNlIGFuIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiEiKTsKKyAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlhZSkgeworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0cnkgeworICAgICAgICAgICAgc2NyaXB0UnVuLnJlc2V0KDYsIDApOworICAgICAgICAgICAgZXJybG4oInNjcmlwdFJ1bi5yZXNldCg2LCAwKSBkaWQgbm90IHByb2R1Y2UgYW4gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uISIpOworICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWFlKSB7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdFJ1bnMoKQorICAgIHsKKyAgICAgICAgaW50IHN0cmluZ0xpbWl0ID0gMDsKKyAgICAgICAgaW50W10gcnVuU3RhcnRzID0gbmV3IGludFt0ZXN0RGF0YS5sZW5ndGggKyAxXTsKKyAgICAgICAgU3RyaW5nIHRlc3RTdHJpbmcgPSAiIjsKKyAgICAgICAgVVNjcmlwdFJ1biBzY3JpcHRSdW4gPSBudWxsOworICAgICAgICAKKyAgICAgICAgLyoKKyAgICAgICAgICogRmlsbCBpbiB0aGUgdGVzdCBzdHJpbmcgYW5kIHRoZSBydW5TdGFydHMgYXJyYXkuCisgICAgICAgICAqLworICAgICAgICBmb3IgKGludCBydW4gPSAwOyBydW4gPCB0ZXN0RGF0YS5sZW5ndGg7IHJ1biArPSAxKSB7CisgICAgICAgICAgICBydW5TdGFydHNbcnVuXSA9IHN0cmluZ0xpbWl0OworICAgICAgICAgICAgc3RyaW5nTGltaXQgKz0gdGVzdERhdGFbcnVuXS5ydW5UZXh0Lmxlbmd0aCgpOworICAgICAgICAgICAgdGVzdFN0cmluZyAgKz0gdGVzdERhdGFbcnVuXS5ydW5UZXh0OworICAgICAgICB9CisKKyAgICAgICAgLyogVGhlIGxpbWl0IG9mIHRoZSBsYXN0IHJ1biAqLyAKKyAgICAgICAgcnVuU3RhcnRzW3Rlc3REYXRhLmxlbmd0aF0gPSBzdHJpbmdMaW1pdDsKKyAgICAgICAgCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBzY3JpcHRSdW4gPSBuZXcgVVNjcmlwdFJ1bih0ZXN0U3RyaW5nKTsKKyAgICAgICAgICAgIENoZWNrU2NyaXB0UnVucyhzY3JpcHRSdW4sIHJ1blN0YXJ0cywgdGVzdERhdGEpOworICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWFlKSB7CisgICAgICAgICAgICBlcnJsbigibmV3IFVTY3JpcHRSdW4odGVzdFN0cmluZykgcHJvZHVjZWQgYW4gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uISIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0cnkgeworICAgICAgICAgICAgc2NyaXB0UnVuLnJlc2V0KCk7CisgICAgICAgICAgICBDaGVja1NjcmlwdFJ1bnMoc2NyaXB0UnVuLCBydW5TdGFydHMsIHRlc3REYXRhKTsKKyAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlhZSkgeworICAgICAgICAgICAgZXJybG4oInNjcmlwdFJ1bi5yZXNldCgpIG9uIGEgdmFsaWQgVVNjcmlwdFJ1biBwcm9kdWNlZCBhbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24hIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBzY3JpcHRSdW4gPSBuZXcgVVNjcmlwdFJ1bih0ZXN0U3RyaW5nLnRvQ2hhckFycmF5KCkpOworICAgICAgICAgICAgQ2hlY2tTY3JpcHRSdW5zKHNjcmlwdFJ1biwgcnVuU3RhcnRzLCB0ZXN0RGF0YSk7CisgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpYWUpIHsKKyAgICAgICAgICAgIGVycmxuKCJuZXcgVVNjcmlwdFJ1bih0ZXN0U3RyaW5nLnRvQ2hhckFycmF5KCkpIHByb2R1Y2VkIGFuIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiEiKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHNjcmlwdFJ1bi5yZXNldCgpOworICAgICAgICAgICAgQ2hlY2tTY3JpcHRSdW5zKHNjcmlwdFJ1biwgcnVuU3RhcnRzLCB0ZXN0RGF0YSk7CisgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpYWUpIHsKKyAgICAgICAgICAgIGVycmxuKCJzY3JpcHRSdW4ucmVzZXQoKSBvbiBhIHZhbGlkIFVTY3JpcHRSdW4gcHJvZHVjZWQgYW4gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uISIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0cnkgeworICAgICAgICAgICAgc2NyaXB0UnVuID0gbmV3IFVTY3JpcHRSdW4oKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHNjcmlwdFJ1bi5uZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigic2NyaXB0UnVuLm5leHQoKSBvbiBhbiBlbXB0eSBVU2NyaXB0UnVuIHJldHVybmVkIHRydWUhIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpYWUpIHsKKyAgICAgICAgICAgIGVycmxuKCJuZXcgVVNjcmlwdFJ1bigpIHByb2R1Y2VkIGFuIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiEiKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHNjcmlwdFJ1bi5yZXNldCh0ZXN0U3RyaW5nLCAwLCB0ZXN0U3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgICAgIENoZWNrU2NyaXB0UnVucyhzY3JpcHRSdW4sIHJ1blN0YXJ0cywgdGVzdERhdGEpOworICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWFlKSB7CisgICAgICAgICAgICBlcnJsbigic2NyaXB0UnVuLnJlc2V0KHRlc3RTdHJpbmcudG9DaGFyQXJyYXkoKSwgMCwgdGVzdFN0cmluZy5sZW5ndGgpIHByb2R1Y2VkIGFuIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiEiKTsKKyAgICAgICAgfQorCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBzY3JpcHRSdW4ucmVzZXQodGVzdFN0cmluZy50b0NoYXJBcnJheSgpLCAwLCB0ZXN0U3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgICAgIENoZWNrU2NyaXB0UnVucyhzY3JpcHRSdW4sIHJ1blN0YXJ0cywgdGVzdERhdGEpOworICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWFlKSB7CisgICAgICAgICAgICBlcnJsbigic2NyaXB0UnVuLnJlc2V0KHRlc3RTdHJpbmcudG9DaGFyQXJyYXkoKSwgMCwgdGVzdFN0cmluZy5sZW5ndGgpIHByb2R1Y2VkIGFuIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiEiKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9sYW5nL1VDaGFyYWN0ZXJDYXNlVGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2xhbmcvVUNoYXJhY3RlckNhc2VUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk3NzJiMQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9sYW5nL1VDaGFyYWN0ZXJDYXNlVGVzdC5qYXZhCkBAIC0wLDAgKzEsNzYzIEBACisvKioKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2xhbmcvVUNoYXJhY3RlckNhc2VUZXN0LmphdmEsdiAkIAorKiAkRGF0ZTogMjAwMi8xMC8wMyAyMzo0MjowMiAkIAorKiAkUmV2aXNpb246IDEuNiAkCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0Lmxhbmc7CisKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYudGVzdC5UZXN0Rm13azsKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYudGVzdC5UZXN0VXRpbDsKK2ltcG9ydCBjb20uaWJtLmljdS5sYW5nLlVDaGFyYWN0ZXI7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC5VVEYxNjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0LkJyZWFrSXRlcmF0b3I7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5VdGlsaXR5OworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CitpbXBvcnQgamF2YS5pby5CdWZmZXJlZFJlYWRlcjsKK2ltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOworCisvKioKKyogPHA+VGVzdGluZyBjaGFyYWN0ZXIgY2FzaW5nPC9wPgorKiA8cD5Nb3N0bHkgZm9sbG93aW5nIHRoZSB0ZXN0IGNhc2VzIGluIHN0cmNhc2UuY3BwIGZvciBJQ1U8L3A+CisqIEBhdXRob3IgU3luIFdlZSBRdWVrCisqIEBzaW5jZSBtYXJjaCAxNCAyMDAyCisqLworcHVibGljIGZpbmFsIGNsYXNzIFVDaGFyYWN0ZXJDYXNlVGVzdCBleHRlbmRzIFRlc3RGbXdrCit7IAorCS8vIGNvbnN0cnVjdG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJICAKKwkvKioKKwkgKiBDb25zdHJ1Y3RvcgorCSAqLworCXB1YmxpYyBVQ2hhcmFjdGVyQ2FzZVRlc3QoKQorCXsKKwl9CisJICAKKwkvLyBwdWJsaWMgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCSAgCisJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJnKSAgCisJeworCSAgICB0cnkKKwkgICAgeworCSAgICAgIAlVQ2hhcmFjdGVyQ2FzZVRlc3QgdGVzdCA9IG5ldyBVQ2hhcmFjdGVyQ2FzZVRlc3QoKTsKKwkgICAgICAJdGVzdC5ydW4oYXJnKTsKKwkgICAgfQorCSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCisJICAgIHsKKwkgICAgICAJZS5wcmludFN0YWNrVHJhY2UoKTsKKwkgICAgfQorCX0KKwkgIAorCS8qKgorCSAqIFRlc3RpbmcgdGhlIHVwcGVyY2FzZSBhbmQgbG93ZXJjYXNlIGZ1bmN0aW9uIG9mIFVDaGFyYWN0ZXIKKwkgKi8KKwlwdWJsaWMgdm9pZCBUZXN0Q2hhcmFjdGVyKCkKKwl7CisJICAgIGZvciAoaW50IGkgPSAwOyBpIDwgQ0hBUkFDVEVSX0xPV0VSXy5sZW5ndGg7IGkgKyspIHsKKwkgICAgICAJaWYgKFVDaGFyYWN0ZXIuaXNMZXR0ZXIoQ0hBUkFDVEVSX0xPV0VSX1tpXSkgJiYgCisJICAgICAgCSAJIVVDaGFyYWN0ZXIuaXNMb3dlckNhc2UoQ0hBUkFDVEVSX0xPV0VSX1tpXSkpIHsKKwkgICAgICAgIAllcnJsbigiRkFJTCBpc0xvd2VyQ2FzZSB0ZXN0IGZvciBcXHUiICsgCisJICAgICAgICAJICAgICAgaGV4KENIQVJBQ1RFUl9MT1dFUl9baV0pKTsKKwkgICAgICAgIAlicmVhazsKKwkgICAgICAJfQorCSAgICAgIAlpZiAoVUNoYXJhY3Rlci5pc0xldHRlcihDSEFSQUNURVJfVVBQRVJfW2ldKSAmJiAKKwkgICAgICAJICAgICEoVUNoYXJhY3Rlci5pc1VwcGVyQ2FzZShDSEFSQUNURVJfVVBQRVJfW2ldKSB8fAorCSAgICAgIAkgICAgICBVQ2hhcmFjdGVyLmlzVGl0bGVDYXNlKENIQVJBQ1RFUl9VUFBFUl9baV0pKSkgeworCSAgICAgICAgCWVycmxuKCJGQUlMIGlzVXBwZXJDYXNlIHRlc3QgZm9yIFxcdSIgKyAKKwkgICAgICAgIAkgICAgICBoZXgoQ0hBUkFDVEVSX1VQUEVSX1tpXSkpOworCSAgICAgICAgCWJyZWFrOworCSAgICAgIAl9CisJICAgICAgCWlmIChDSEFSQUNURVJfTE9XRVJfW2ldICE9IAorCSAgICAgIAkgICAgVUNoYXJhY3Rlci50b0xvd2VyQ2FzZShDSEFSQUNURVJfVVBQRVJfW2ldKSB8fCAKKwkgICAgICAgICAgCShDSEFSQUNURVJfVVBQRVJfW2ldICE9IAorCSAgICAgICAgICAJVUNoYXJhY3Rlci50b1VwcGVyQ2FzZShDSEFSQUNURVJfTE9XRVJfW2ldKSAmJgorCSAgICAgICAgICAgIENIQVJBQ1RFUl9VUFBFUl9baV0gIT0gCisJICAgICAgICAgICAgVUNoYXJhY3Rlci50b1RpdGxlQ2FzZShDSEFSQUNURVJfTE9XRVJfW2ldKSkpIHsKKwkgICAgICAgIAllcnJsbigiRkFJTCBjYXNlIGNvbnZlcnNpb24gdGVzdCBmb3IgXFx1IiArIAorCSAgICAgICAgCSAgICAgIGhleChDSEFSQUNURVJfVVBQRVJfW2ldKSArIAorCSAgICAgICAgCSAgICAgICIgdG8gXFx1IiArIGhleChDSEFSQUNURVJfTE9XRVJfW2ldKSk7CisJICAgICAgICAJYnJlYWs7CisJICAgICAgCX0KKwkgICAgICAJaWYgKENIQVJBQ1RFUl9MT1dFUl9baV0gIT0gCisJICAgICAgCSAgICBVQ2hhcmFjdGVyLnRvTG93ZXJDYXNlKENIQVJBQ1RFUl9MT1dFUl9baV0pKSB7CisJICAgICAgICAJZXJybG4oIkZBSUwgbG93ZXIgY2FzZSBjb252ZXJzaW9uIHRlc3QgZm9yIFxcdSIgKyAKKwkgICAgICAgIAkgICAgICBoZXgoQ0hBUkFDVEVSX0xPV0VSX1tpXSkpOworCSAgICAgICAgCWJyZWFrOworCSAgICAgIAl9CisJICAgICAgCWlmIChDSEFSQUNURVJfVVBQRVJfW2ldICE9IAorCSAgICAgIAkgICAgVUNoYXJhY3Rlci50b1VwcGVyQ2FzZShDSEFSQUNURVJfVVBQRVJfW2ldKSAmJiAKKwkgICAgICAgICAgCUNIQVJBQ1RFUl9VUFBFUl9baV0gIT0gCisJICAgICAgICAgIAlVQ2hhcmFjdGVyLnRvVGl0bGVDYXNlKENIQVJBQ1RFUl9VUFBFUl9baV0pKSB7CisJICAgICAgICAJZXJybG4oIkZBSUwgdXBwZXIgY2FzZSBjb252ZXJzaW9uIHRlc3QgZm9yIFxcdSIgKyAKKwkgICAgICAgIAkgICAgICBoZXgoQ0hBUkFDVEVSX1VQUEVSX1tpXSkpOworCSAgICAgICAgCWJyZWFrOworCSAgICAgIAl9CisJICAgICAgCWxvZ2xuKCJPayAgICBcXHUiICsgaGV4KENIQVJBQ1RFUl9VUFBFUl9baV0pICsgIiBhbmQgXFx1IiArIAorCSAgICAgIAkgICAgICBoZXgoQ0hBUkFDVEVSX0xPV0VSX1tpXSkpOworCSAgICB9CisJfQorCSAgCisJcHVibGljIHZvaWQgVGVzdEZvbGRpbmcoKSAKKwl7CisJICAgIC8vIHRlc3Qgc2ltcGxlIGNhc2UgZm9sZGluZworCSAgICBmb3IgKGludCBpID0gMDsgaSA8IEZPTERJTkdfU0lNUExFXy5sZW5ndGg7IGkgKz0gMykgeworICAgICAgICAgICAgaWYgKFVDaGFyYWN0ZXIuZm9sZENhc2UoRk9MRElOR19TSU1QTEVfW2ldLCB0cnVlKSAhPSAKKwkgICAgICAgICAgICBGT0xESU5HX1NJTVBMRV9baSArIDFdKSB7CisJICAgICAgICAgICAgZXJybG4oIkZBSUw6IGZvbGRDYXNlKFxcdSIgKyBoZXgoRk9MRElOR19TSU1QTEVfW2ldKSArIAorCSAgICAgICAgICAgICAgICAgICIsIHRydWUpIHNob3VsZCBiZSBcXHUiICsgaGV4KEZPTERJTkdfU0lNUExFX1tpICsgMV0pKTsKKwkgICAgICAgIH0KKwkgICAgICAgIGlmIChVQ2hhcmFjdGVyLmZvbGRDYXNlKEZPTERJTkdfU0lNUExFX1tpXSwgZmFsc2UpICE9IAorCSAgICAgICAgICAgIEZPTERJTkdfU0lNUExFX1tpICsgMl0pIHsKKwkgICAgICAgICAgICBlcnJsbigiRkFJTDogZm9sZENhc2UoXFx1IiArIGhleChGT0xESU5HX1NJTVBMRV9baV0pICsgCisJICAgICAgICAgICAgICAgICAgIiwgZmFsc2UpIHNob3VsZCBiZSBcXHUiICsgaGV4KEZPTERJTkdfU0lNUExFX1tpICsgMl0pKTsKKwkgICAgICAgIH0KKwkgICAgfQorCisJCS8vIFRlc3QgZnVsbCBzdHJpbmcgY2FzZSBmb2xkaW5nIHdpdGggZGVmYXVsdCBvcHRpb24gYW5kIHNlcGFyYXRlIAorCQkvLyBidWZmZXJzICAgCisgICAgICAgIGlmICghRk9MRElOR19ERUZBVUxUX1swXS5lcXVhbHMoVUNoYXJhY3Rlci5mb2xkQ2FzZShGT0xESU5HX01JWEVEX1swXSwgCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSkpIHsKKwkgICAgICAgIGVycmxuKCJGQUlMOiBmb2xkQ2FzZSgiICsgaGV4KEZPTERJTkdfTUlYRURfWzBdKSArIAorCSAgICAgICAgICAgICAgIiwgdHJ1ZSkgc2hvdWxkIGJlICIgKyBGT0xESU5HX0RFRkFVTFRfWzBdKTsKKwkgICAgfQorCSAgICAKKwkJaWYgKCFGT0xESU5HX0VYQ0xVREVfU1BFQ0lBTF9JX1swXS5lcXVhbHMoICAgICAgCQkgICAgICAgICAgICAgICAgICAgIAorCQkJCQkJCVVDaGFyYWN0ZXIuZm9sZENhc2UoRk9MRElOR19NSVhFRF9bMF0sIGZhbHNlKSkpIHsKKwkgICAgICAJZXJybG4oIkZBSUw6IGZvbGRDYXNlKCIgKyBoZXgoRk9MRElOR19NSVhFRF9bMF0pICsgCisJICAgICAgCSAgICAgICIsIGZhbHNlKSBzaG91bGQgYmUgIiArIEZPTERJTkdfRVhDTFVERV9TUEVDSUFMX0lfWzBdKTsKKwkgICAgfQorCSAgICAKKwkgICAgaWYgKCFGT0xESU5HX0RFRkFVTFRfWzFdLmVxdWFscyhVQ2hhcmFjdGVyLmZvbGRDYXNlKEZPTERJTkdfTUlYRURfWzFdLCAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpKSkgeworCSAgICAgICBlcnJsbigiRkFJTDogZm9sZENhc2UoIiArIGhleChGT0xESU5HX01JWEVEX1sxXSkgKyAKKwkgICAgICAgICAgICAgIiwgdHJ1ZSkgc2hvdWxkIGJlICIgKyBoZXgoRk9MRElOR19ERUZBVUxUX1sxXSkpOworCSAgICB9CisJCisJCisJICAgIC8vIGFsdGVybmF0ZSBoYW5kbGluZyBmb3IgZG90dGVkIEkvZG90bGVzcyBpIChVKzAxMzAsIFUrMDEzMSkKKwkgICAgaWYgKCFGT0xESU5HX0VYQ0xVREVfU1BFQ0lBTF9JX1sxXS5lcXVhbHMoCisJICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyLmZvbGRDYXNlKEZPTERJTkdfTUlYRURfWzFdLCBmYWxzZSkpKSB7CisJICAgICAgICBlcnJsbigiRkFJTDogZm9sZENhc2UoIiArIGhleChGT0xESU5HX01JWEVEX1sxXSkgKyAKKwkgICAgICAgICAgICAgICIsIGZhbHNlKSBzaG91bGQgYmUgIiArIGhleChGT0xESU5HX0VYQ0xVREVfU1BFQ0lBTF9JX1sxXSkpOworCSAgICB9CisJfQorCQkKKwkvKioKKwkgKiBUZXN0aW5nIHRoZSBzdHJpbmdzIGNhc2UgbWFwcGluZyBtZXRob2RzCisJICovCisJcHVibGljIHZvaWQgVGVzdFVwcGVyKCkgCisJewkKKwkgICAgLy8gdXBwZXJjYXNlIHdpdGggcm9vdCBsb2NhbGUgYW5kIGluIHRoZSBzYW1lIGJ1ZmZlcgorCSAgICBpZiAoIVVQUEVSX1JPT1RfLmVxdWFscyhVQ2hhcmFjdGVyLnRvVXBwZXJDYXNlKFVQUEVSX0JFRk9SRV8pKSkgeworCSAgICAJZXJybG4oIkZhaWwgIiArIFVQUEVSX0JFRk9SRV8gKyAiIGFmdGVyIHVwcGVyY2FzZSBzaG91bGQgYmUgIiArIAorCSAgICAgIAkJICBVUFBFUl9ST09UXyArICIgaW5zdGVhZCBnb3QgIiArIAorCSAgICAgIAkJICBVQ2hhcmFjdGVyLnRvVXBwZXJDYXNlKFVQUEVSX0JFRk9SRV8pKTsKKwkgICAgfQorCSAgICAgIAorCSAgICAvLyB1cHBlcmNhc2Ugd2l0aCB0dXJraXNoIGxvY2FsZSBhbmQgc2VwYXJhdGUgYnVmZmVycworCSAgICBpZiAoIVVQUEVSX1RVUktJU0hfLmVxdWFscyhVQ2hhcmFjdGVyLnRvVXBwZXJDYXNlKFRVUktJU0hfTE9DQUxFXywKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVQUEVSX0JFRk9SRV8pKSkgeworICAgICAgCQllcnJsbigiRmFpbCAiICsgVVBQRVJfQkVGT1JFXyArIAorICAgICAgCQkgICAgICAiIGFmdGVyIHR1cmtpc2gtc2Vuc2l0aXZlIHVwcGVyY2FzZSBzaG91bGQgYmUgIiArIAorICAgICAgCQkgICAgICBVUFBFUl9UVVJLSVNIXyArICIgaW5zdGVhZCBvZiAiICsKKyAgICAgIAkJICAgICAgVUNoYXJhY3Rlci50b1VwcGVyQ2FzZShUVVJLSVNIX0xPQ0FMRV8sIFVQUEVSX0JFRk9SRV8pKTsKKwkgIAl9CisJICAJCQorCSAgCS8vIHVwcGVyY2FzZSBhIHNob3J0IHN0cmluZyB3aXRoIHJvb3QgbG9jYWxlCisJICAgIGlmICghVVBQRVJfTUlOSV9VUFBFUl8uZXF1YWxzKFVDaGFyYWN0ZXIudG9VcHBlckNhc2UoVVBQRVJfTUlOSV8pKSkgeworCSAgICAgICAgZXJybG4oImVycm9yIGluIHRvVXBwZXIocm9vdCBsb2NhbGUpPVwiIiArIFVQUEVSX01JTklfICsgCisJICAgICAgICAgICAgICAiXCIgZXhwZWN0ZWQgXCIiICsgVVBQRVJfTUlOSV9VUFBFUl8gKyAiXCIiKTsKKwkgICAgfQorCSAgICAKKwkgICAgaWYgKCFTSEFSRURfVVBQRVJDQVNFX1RPUEtBUF8uZXF1YWxzKAorICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyLnRvVXBwZXJDYXNlKFNIQVJFRF9MT1dFUkNBU0VfVE9QS0FQXykpKSB7CisJICAgICAgICBlcnJsbigidG9VcHBlciBmYWlsZWQ6IGV4cGVjdGVkIFwiIiArCisJICAgICAgICAgICAgICBTSEFSRURfVVBQRVJDQVNFX1RPUEtBUF8gKyAiXCIsIGdvdCBcIiIgKyAKKyAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXIudG9VcHBlckNhc2UoU0hBUkVEX0xPV0VSQ0FTRV9UT1BLQVBfKSArICJcIi4iKTsKKwkJfQorCQorCSAgICBpZiAoIVNIQVJFRF9VUFBFUkNBU0VfVFVSS0lTSF8uZXF1YWxzKAorICAgICAgICAgICAgICAgICAgVUNoYXJhY3Rlci50b1VwcGVyQ2FzZShUVVJLSVNIX0xPQ0FMRV8sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSEFSRURfTE9XRVJDQVNFX1RPUEtBUF8pKSkgeworCSAgICAgICAgZXJybG4oInRvVXBwZXIgZmFpbGVkOiBleHBlY3RlZCBcIiIgKyAKKwkgICAgICAgICAgICAgIFNIQVJFRF9VUFBFUkNBU0VfVFVSS0lTSF8gKyAiXCIsIGdvdCBcIiIgKyAKKwkgICAgICAgICAgICAgIFVDaGFyYWN0ZXIudG9VcHBlckNhc2UoVFVSS0lTSF9MT0NBTEVfLCAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSEFSRURfTE9XRVJDQVNFX1RPUEtBUF8pICsgIlwiLiIpOworCQl9CisJCisJICAgIGlmICghU0hBUkVEX1VQUEVSQ0FTRV9HRVJNQU5fLmVxdWFscygKKwkgICAgCQlVQ2hhcmFjdGVyLnRvVXBwZXJDYXNlKEdFUk1BTl9MT0NBTEVfLCAKKwkgICAgIAkgICAgICAgICAgICAgICAgICAgICAgICAgICBTSEFSRURfTE9XRVJDQVNFX0dFUk1BTl8pKSkgeworCSAgICAgICAgZXJybG4oInRvVXBwZXIgZmFpbGVkOiBleHBlY3RlZCBcIiIgKyBTSEFSRURfVVBQRVJDQVNFX0dFUk1BTl8gCisJICAgICAgICAgICAgICArICJcIiwgZ290IFwiIiArIFVDaGFyYWN0ZXIudG9VcHBlckNhc2UoR0VSTUFOX0xPQ0FMRV8sIAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNIQVJFRF9MT1dFUkNBU0VfR0VSTUFOXykgKyAiXCIuIik7CisgICAgICAgIH0KKwkgICAgCisJICAgIGlmICghU0hBUkVEX1VQUEVSQ0FTRV9HUkVFS18uZXF1YWxzKAorCSAgICAJCVVDaGFyYWN0ZXIudG9VcHBlckNhc2UoU0hBUkVEX0xPV0VSQ0FTRV9HUkVFS18pKSkgeworCSAgICAgICAgZXJybG4oInRvTG93ZXIgZmFpbGVkOiBleHBlY3RlZCBcIiIgKyBTSEFSRURfVVBQRVJDQVNFX0dSRUVLXyArCisJICAgICAgICAgICAgICAiXCIsIGdvdCBcIiIgKyBVQ2hhcmFjdGVyLnRvVXBwZXJDYXNlKAorICAgICAgIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNIQVJFRF9MT1dFUkNBU0VfR1JFRUtfKSArICJcIi4iKTsKKyAgICAJfQorCX0KKwkgIAorCXB1YmxpYyB2b2lkIFRlc3RMb3dlcigpIAorCXsKKwkJaWYgKCFMT1dFUl9ST09UXy5lcXVhbHMoVUNoYXJhY3Rlci50b0xvd2VyQ2FzZShMT1dFUl9CRUZPUkVfKSkpIHsKKwkgICAJCWVycmxuKCJGYWlsICIgKyBMT1dFUl9CRUZPUkVfICsgIiBhZnRlciBsb3dlcmNhc2Ugc2hvdWxkIGJlICIgKyAKKwkgICAJCSAgICAgIExPV0VSX1JPT1RfICsgIiBpbnN0ZWFkIG9mICIgKyAKKwkgICAJCSAgICAgIFVDaGFyYWN0ZXIudG9Mb3dlckNhc2UoTE9XRVJfQkVGT1JFXykpOworCQl9CisJICAgCisJICAgCS8vIGxvd2VyY2FzZSB3aXRoIHR1cmtpc2ggbG9jYWxlCisJICAgCWlmICghTE9XRVJfVFVSS0lTSF8uZXF1YWxzKFVDaGFyYWN0ZXIudG9Mb3dlckNhc2UoVFVSS0lTSF9MT0NBTEVfLCAKKwkgICAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMT1dFUl9CRUZPUkVfKSkpIHsKKwkgICAJCWVycmxuKCJGYWlsICIgKyBMT1dFUl9CRUZPUkVfICsgCisJICAgICAJCSAgIiBhZnRlciB0dXJraXNoLXNlbnNpdGl2ZSBsb3dlcmNhc2Ugc2hvdWxkIGJlICIgKyAKKwkgICAgIAkJICBMT1dFUl9UVVJLSVNIXyArICIgaW5zdGVhZCBvZiAiICsgCisJICAgICAJCSAgVUNoYXJhY3Rlci50b0xvd2VyQ2FzZShUVVJLSVNIX0xPQ0FMRV8sIExPV0VSX0JFRk9SRV8pKTsKKwkgICAgfQorCSAgICBpZiAoIVNIQVJFRF9MT1dFUkNBU0VfSVNUQU5CVUxfLmVxdWFscygKKyAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXIudG9Mb3dlckNhc2UoU0hBUkVEX1VQUEVSQ0FTRV9JU1RBTkJVTF8pKSkgeworCSAgICAgICAgZXJybG4oIjEuIHRvTG93ZXIgZmFpbGVkOiBleHBlY3RlZCBcIiIgKyAKKwkgICAgICAgICAgICAgIFNIQVJFRF9MT1dFUkNBU0VfSVNUQU5CVUxfICsgIlwiLCBnb3QgXCIiICsgCisgICAgICAgICAgICAgIFVDaGFyYWN0ZXIudG9Mb3dlckNhc2UoU0hBUkVEX1VQUEVSQ0FTRV9JU1RBTkJVTF8pICsgIlwiLiIpOworCSAgICB9CisKKwkJaWYgKCFTSEFSRURfTE9XRVJDQVNFX1RVUktJU0hfLmVxdWFscygKKwkgICAgICAgICAgICBVQ2hhcmFjdGVyLnRvTG93ZXJDYXNlKFRVUktJU0hfTE9DQUxFXywgCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSEFSRURfVVBQRVJDQVNFX0lTVEFOQlVMXykpKSB7CQorCSAgICAJZXJybG4oIjIuIHRvTG93ZXIgZmFpbGVkOiBleHBlY3RlZCBcIiIgKyAKKwkgICAgCSAgICAgIFNIQVJFRF9MT1dFUkNBU0VfVFVSS0lTSF8gKyAiXCIsIGdvdCBcIiIgKyAKKwkgICAgCSAgICAgIFVDaGFyYWN0ZXIudG9Mb3dlckNhc2UoVFVSS0lTSF9MT0NBTEVfLAorCQkgICAgICAgICAgICAgICAgICAgICAgICBTSEFSRURfVVBQRVJDQVNFX0lTVEFOQlVMXykgKyAiXCIuIik7CisJICAgIH0KKwkgICAgaWYgKCFTSEFSRURfTE9XRVJDQVNFX0dSRUVLXy5lcXVhbHMoCisJICAgIAkJVUNoYXJhY3Rlci50b0xvd2VyQ2FzZShHUkVFS19MT0NBTEVfLCAKKwkgICAgCQkgICAgICAgICAgICAgICAgICAgICAgIFNIQVJFRF9VUFBFUkNBU0VfR1JFRUtfKSkpIHsKKwkgICAgICAgIGVycmxuKCJ0b0xvd2VyIGZhaWxlZDogZXhwZWN0ZWQgXCIiICsgU0hBUkVEX0xPV0VSQ0FTRV9HUkVFS18gKworCSAgICAgICAgICAgICAgIlwiLCBnb3QgXCIiICsgVUNoYXJhY3Rlci50b0xvd2VyQ2FzZShHUkVFS19MT0NBTEVfLCAKKyAgICAgICAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSEFSRURfVVBQRVJDQVNFX0dSRUVLXykgKyAiXCIuIik7CisgICAgCX0KKwl9CisJICAJCisJcHVibGljIHZvaWQgVGVzdFRpdGxlKCkgCisJeworCSAgICBmb3IgKGludCBpID0gMDsgaSA8IFRJVExFX0JSRUFLSVRFUkFUT1JTXy5sZW5ndGg7IGkgKyspIHsKKwkgICAgCVN0cmluZyB0ZXN0ID0gVElUTEVfREFUQV9baSA8PCAxXTsKKwkgICAgCVN0cmluZyBleHBlY3RlZCA9IFRJVExFX0RBVEFfWyhpIDw8IDEpICsgMV07CisJICAgIAlpZiAoIWV4cGVjdGVkLmVxdWFscygKKwkgICAgCSAgICBVQ2hhcmFjdGVyLnRvVGl0bGVDYXNlKHRlc3QsCisJICAgIAkgICAgICAgICAgICAgICAgICAgICAgICAgICBUSVRMRV9CUkVBS0lURVJBVE9SU19baV0pKSkgeworCSAgICAgICAgICAgIGVycmxuKCJlcnJvcjogdGl0bGVjYXNpbmcgZm9yICIgKyBoZXgodGVzdCkgKyAiIHNob3VsZCBiZSAiICsgCisJICAgICAgICAgICAgICAgICAgaGV4KGV4cGVjdGVkKSArICIgYnV0IGdvdCAiICsKKwkgICAgICAgICAgICAgICAgICBoZXgoVUNoYXJhY3Rlci50b1RpdGxlQ2FzZSh0ZXN0LCAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSVRMRV9CUkVBS0lURVJBVE9SU19baV0pKSk7CisJICAgICAgICB9CisJICAgIH0KKwl9CisJCisJcHVibGljIHZvaWQgVGVzdFNwZWNpYWwoKQorCXsgICAKKwkgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBTUEVDSUFMX0xPQ0FMRVNfLmxlbmd0aDsgaSArKykgeworCSAgICAJaW50ICAgIGogICAgICA9IGkgKiAzOworCSAgICAJTG9jYWxlIGxvY2FsZSA9IFNQRUNJQUxfTE9DQUxFU19baV07CisJICAgIAlTdHJpbmcgc3RyICAgID0gU1BFQ0lBTF9EQVRBX1tqXTsKKwkgICAgCWlmIChsb2NhbGUgIT0gbnVsbCkgeworCSAJCQlpZiAoIVNQRUNJQUxfREFUQV9baiArIDFdLmVxdWFscygKKwkgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXIudG9Mb3dlckNhc2UobG9jYWxlLCBzdHIpKSkgeworCQkgICAgICAgIAllcnJsbigiZXJyb3IgbG93ZXJjYXNpbmcgc3BlY2lhbCBjaGFyYWN0ZXJzICIgKyAKKwkJICAgICAgICAgICAgICAJaGV4KHN0cikgKyAiIGV4cGVjdGVkICIgKyBoZXgoU1BFQ0lBTF9EQVRBX1tqICsgMV0pIAorCQkgICAgICAgICAgICAgIAkrICIgZm9yIGxvY2FsZSAiICsgbG9jYWxlLnRvU3RyaW5nKCkgKyAiIGJ1dCBnb3QgIiArIAorCQkgICAgICAgICAgICAgIAloZXgoVUNoYXJhY3Rlci50b0xvd2VyQ2FzZShsb2NhbGUsIHN0cikpKTsKKwkgICAgICAgICAgICB9CisJICAgICAgICAgICAgaWYgKCFTUEVDSUFMX0RBVEFfW2ogKyAyXS5lcXVhbHMoCisJICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyLnRvVXBwZXJDYXNlKGxvY2FsZSwgc3RyKSkpIHsKKwkJICAgICAgICAJZXJybG4oImVycm9yIHVwcGVyY2FzaW5nIHNwZWNpYWwgY2hhcmFjdGVycyAiICsgCisJCSAgICAgICAgICAgICAgCWhleChzdHIpICsgIiBleHBlY3RlZCAiICsgU1BFQ0lBTF9EQVRBX1tqICsgMl0gCisJCSAgICAgICAgICAgICAgCSsgIiBmb3IgbG9jYWxlICIgKyBsb2NhbGUudG9TdHJpbmcoKSArICIgYnV0IGdvdCAiICsgCisJCSAgICAgICAgICAgICAgCWhleChVQ2hhcmFjdGVyLnRvVXBwZXJDYXNlKGxvY2FsZSwgc3RyKSkpOworCSAgICAgICAgICAgIH0KKwkJICAgIH0gICAJCisJCSAgICBlbHNlIHsKKwkJICAgIAlpZiAoIVNQRUNJQUxfREFUQV9baiArIDFdLmVxdWFscygKKwkgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXIudG9Mb3dlckNhc2Uoc3RyKSkpIHsKKwkJICAgICAgICAJZXJybG4oImVycm9yIGxvd2VyY2FzaW5nIHNwZWNpYWwgY2hhcmFjdGVycyAiICsgCisJCSAgICAgICAgICAgICAgCWhleChzdHIpICsgIiBleHBlY3RlZCAiICsgU1BFQ0lBTF9EQVRBX1tqICsgMV0gKyAKKwkJICAgICAgICAgICAgICAJIiBidXQgZ290ICIgKyAKKwkJICAgICAgICAgICAgICAJaGV4KFVDaGFyYWN0ZXIudG9Mb3dlckNhc2UobG9jYWxlLCBzdHIpKSk7CisJICAgICAgICAgICAgfQorCSAgICAgICAgICAgIGlmICghU1BFQ0lBTF9EQVRBX1tqICsgMl0uZXF1YWxzKAorCSAgICAgICAgICAgICAgICAgVUNoYXJhY3Rlci50b1VwcGVyQ2FzZShsb2NhbGUsIHN0cikpKSB7CisJCSAgICAgICAgCWVycmxuKCJlcnJvciB1cHBlcmNhc2luZyBzcGVjaWFsIGNoYXJhY3RlcnMgIiArIAorCQkgICAgICAgICAgICAgIAloZXgoc3RyKSArICIgZXhwZWN0ZWQgIiArIFNQRUNJQUxfREFUQV9baiArIDJdICsgCisJCSAgICAgICAgICAgICAgCSIgYnV0IGdvdCAiICsgCisJCSAgICAgICAgICAgICAgCWhleChVQ2hhcmFjdGVyLnRvVXBwZXJDYXNlKGxvY2FsZSwgc3RyKSkpOworCSAgICAgICAgICAgIH0KKwkJICAgIH0KKwkgICAgfQorCSAgICAKKwkgICAgLy8gdHVya2lzaCAmIGF6ZXJiYWlqYW5pIGRvdGxlc3MgaSAmIGRvdHRlZCBJCisJICAgIC8vIHJlbW92ZSBkb3QgYWJvdmUgaWYgdGhlcmUgd2FzIGEgY2FwaXRhbCBJIGJlZm9yZSBhbmQgdGhlcmUgYXJlIG5vIAorCSAgICAvLyBtb3JlIGFjY2VudHMgYWJvdmUKKwkgICAgaWYgKCFTUEVDSUFMX0RPVFRFRF9MT1dFUl9UVVJLSVNIXy5lcXVhbHMoVUNoYXJhY3Rlci50b0xvd2VyQ2FzZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUVVJLSVNIX0xPQ0FMRV8sIFNQRUNJQUxfRE9UVEVEXykpKSB7CisJICAgICAgICBlcnJsbigiZXJyb3IgaW4gZG90cy50b0xvd2VyKHRyKT1cIiIgKyBTUEVDSUFMX0RPVFRFRF8gKyAKKwkgICAgICAgICAgICAgICJcIiBleHBlY3RlZCBcIiIgKyBTUEVDSUFMX0RPVFRFRF9MT1dFUl9UVVJLSVNIXyArIAorCSAgICAgICAgICAgICAgIlwiIGJ1dCBnb3QgIiArIFVDaGFyYWN0ZXIudG9Mb3dlckNhc2UoVFVSS0lTSF9MT0NBTEVfLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1BFQ0lBTF9ET1RURURfKSk7CisJICAgIH0KKwkJaWYgKCFTUEVDSUFMX0RPVFRFRF9MT1dFUl9HRVJNQU5fLmVxdWFscyhVQ2hhcmFjdGVyLnRvTG93ZXJDYXNlKAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VSTUFOX0xPQ0FMRV8sIFNQRUNJQUxfRE9UVEVEXykpKSB7CisJICAgICAgICBlcnJsbigiZXJyb3IgaW4gZG90cy50b0xvd2VyKGRlKT1cIiIgKyBTUEVDSUFMX0RPVFRFRF8gKyAKKwkgICAgICAgICAgICAgICJcIiBleHBlY3RlZCBcIiIgKyBTUEVDSUFMX0RPVFRFRF9MT1dFUl9HRVJNQU5fICsgCisJICAgICAgICAgICAgICAiXCIgYnV0IGdvdCAiICsgVUNoYXJhY3Rlci50b0xvd2VyQ2FzZShHRVJNQU5fTE9DQUxFXywKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNQRUNJQUxfRE9UVEVEXykpOworCSAgICB9CisJCisJCS8vIGxpdGh1YW5pYW4gZG90IGFib3ZlIGluIHVwcGVyY2FzaW5nCisJCWlmICghU1BFQ0lBTF9ET1RfQUJPVkVfVVBQRVJfTElUSFVBTklBTl8uZXF1YWxzKAorCQkgICAgIFVDaGFyYWN0ZXIudG9VcHBlckNhc2UoTElUSFVBTklBTl9MT0NBTEVfLCBTUEVDSUFMX0RPVF9BQk9WRV8pKSkgeworCSAgICAgICAgZXJybG4oImVycm9yIGluIGRvdHMudG9VcHBlcihsdCk9XCIiICsgU1BFQ0lBTF9ET1RfQUJPVkVfICsgCisJICAgICAgICAgICAgICAiXCIgZXhwZWN0ZWQgXCIiICsgU1BFQ0lBTF9ET1RfQUJPVkVfVVBQRVJfTElUSFVBTklBTl8gKyAKKwkgICAgICAgICAgICAgICJcIiBidXQgZ290ICIgKyBVQ2hhcmFjdGVyLnRvVXBwZXJDYXNlKExJVEhVQU5JQU5fTE9DQUxFXywKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNQRUNJQUxfRE9UX0FCT1ZFXykpOworCSAgICB9CisJCWlmICghU1BFQ0lBTF9ET1RfQUJPVkVfVVBQRVJfR0VSTUFOXy5lcXVhbHMoVUNoYXJhY3Rlci50b1VwcGVyQ2FzZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVJNQU5fTE9DQUxFXywgU1BFQ0lBTF9ET1RfQUJPVkVfKSkpIHsKKwkgICAgICAgIGVycmxuKCJlcnJvciBpbiBkb3RzLnRvVXBwZXIoZGUpPVwiIiArIFNQRUNJQUxfRE9UX0FCT1ZFXyArIAorCSAgICAgICAgICAgICAgIlwiIGV4cGVjdGVkIFwiIiArIFNQRUNJQUxfRE9UX0FCT1ZFX1VQUEVSX0dFUk1BTl8gKyAKKwkgICAgICAgICAgICAgICJcIiBidXQgZ290ICIgKyBVQ2hhcmFjdGVyLnRvVXBwZXJDYXNlKEdFUk1BTl9MT0NBTEVfLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1BFQ0lBTF9ET1RfQUJPVkVfKSk7CisJICAgIH0JICAgIAorCSAgICAKKwkJLy8gbGl0aHVhbmlhbiBhZGRzIGRvdCBhYm92ZSB0byBpIGluIGxvd2VyY2FzaW5nIGlmIHRoZXJlIGFyZSBtb3JlIAorCQkvLyBhYm92ZSBhY2NlbnRzCisJCWlmICghU1BFQ0lBTF9ET1RfQUJPVkVfTE9XRVJfTElUSFVBTklBTl8uZXF1YWxzKAorCQkJVUNoYXJhY3Rlci50b0xvd2VyQ2FzZShMSVRIVUFOSUFOX0xPQ0FMRV8sIAorCQkJICAgICAgICAgICAgICAgICAgICAgICBTUEVDSUFMX0RPVF9BQk9WRV9VUFBFUl8pKSkgeworCSAgICAgICAgZXJybG4oImVycm9yIGluIGRvdHMudG9Mb3dlcihsdCk9XCIiICsgU1BFQ0lBTF9ET1RfQUJPVkVfVVBQRVJfICsgCisJICAgICAgICAgICAgICAiXCIgZXhwZWN0ZWQgXCIiICsgU1BFQ0lBTF9ET1RfQUJPVkVfTE9XRVJfTElUSFVBTklBTl8gKyAKKwkgICAgICAgICAgICAgICJcIiBidXQgZ290ICIgKyBVQ2hhcmFjdGVyLnRvTG93ZXJDYXNlKExJVEhVQU5JQU5fTE9DQUxFXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNQRUNJQUxfRE9UX0FCT1ZFX1VQUEVSXykpOworCSAgICB9CisJCWlmICghU1BFQ0lBTF9ET1RfQUJPVkVfTE9XRVJfR0VSTUFOXy5lcXVhbHMoCisJCQlVQ2hhcmFjdGVyLnRvTG93ZXJDYXNlKEdFUk1BTl9MT0NBTEVfLCAKKwkJCSAgICAgICAgICAgICAgICAgICAgICAgU1BFQ0lBTF9ET1RfQUJPVkVfVVBQRVJfKSkpIHsKKwkgICAgICAgIGVycmxuKCJlcnJvciBpbiBkb3RzLnRvTG93ZXIoZGUpPVwiIiArIFNQRUNJQUxfRE9UX0FCT1ZFX1VQUEVSXyArIAorCSAgICAgICAgICAgICAgIlwiIGV4cGVjdGVkIFwiIiArIFNQRUNJQUxfRE9UX0FCT1ZFX0xPV0VSX0dFUk1BTl8gKyAKKwkgICAgICAgICAgICAgICJcIiBidXQgZ290ICIgKyBVQ2hhcmFjdGVyLnRvTG93ZXJDYXNlKEdFUk1BTl9MT0NBTEVfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1BFQ0lBTF9ET1RfQUJPVkVfVVBQRVJfKSk7CisJICAgIH0KKwl9CisJICAKKwkvKioKKwkgKiBUZXN0cyBmb3IgY2FzZSBtYXBwaW5nIGluIHRoZSBmaWxlIFNwZWNpYWxDYXNpbmcudHh0CisJICogVGhpcyBtZXRob2QgcmVhZHMgaW4gU3BlY2lhbENhc2luZy50eHQgZmlsZSBmb3IgdGVzdGluZyBwdXJwb3Nlcy4gCisJICogQSBkZWZhdWx0IHBhdGggaXMgcHJvdmlkZWQgcmVsYXRpdmUgdG8gdGhlIHNyYyBwYXRoLCBob3dldmVyIHRoZSB1c2VyIAorCSAqIGNvdWxkIHNldCBhIHN5c3RlbSBwcm9wZXJ0eSB0byBjaGFuZ2UgdGhlIGRpcmVjdG9yeSBwYXRoLjxicj4KKwkgKiBlLmcuIGphdmEgLURVbmljb2RlRGF0YT0iZGF0YV9kaXJfcGF0aCIgY29tLmlibS5kZXYudGVzdC5sYW5nLlVDaGFyYWN0ZXJUZXN0CisJICovCisJcHVibGljIHZvaWQgVGVzdFNwZWNpYWxDYXNpbmdUeHQoKQorCXsKKwkgICAgdHJ5CisJCXsKKwkJICAJLy8gcmVhZGluZyBpbiB0aGUgU3BlY2lhbENhc2luZyBmaWxlCisJCSAgCUJ1ZmZlcmVkUmVhZGVyIGlucHV0ID0gVGVzdFV0aWwuZ2V0RGF0YVJlYWRlcigKKwkJICAJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5pY29kZS9TcGVjaWFsQ2FzaW5nLnR4dCIpOworICAgICAgICAgICAgd2hpbGUgKHRydWUpCisJICAgICAgCXsKKyAgICAgICAgICAgICAgICBTdHJpbmcgcyA9IGlucHV0LnJlYWRMaW5lKCk7CisJICAgICAgICAJaWYgKHMgPT0gbnVsbCkgeworCSAgICAgICAgICAgIAlicmVhazsKKwkgICAgICAgIAl9CisgICAgICAgICAgICAgICAgaWYgKHMubGVuZ3RoKCkgPT0gMCB8fCBzLmNoYXJBdCgwKSA9PSAnIycpIHsKKwkgICAgICAgICAgICAJY29udGludWU7CisJICAgICAgICAJfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIFN0cmluZyBjaHN0cltdID0gZ2V0VW5pY29kZVN0cmluZ3Mocyk7CisgICAgICAgICAgICAgICAgU3RyaW5nQnVmZmVyIHN0cmJ1ZmZlciAgID0gbmV3IFN0cmluZ0J1ZmZlcihjaHN0clswXSk7CisgICAgICAgICAgICAgICAgU3RyaW5nQnVmZmVyIGxvd2VyYnVmZmVyID0gbmV3IFN0cmluZ0J1ZmZlcihjaHN0clsxXSk7IAorICAgICAgICAgICAgICAgIFN0cmluZ0J1ZmZlciB1cHBlcmJ1ZmZlciA9IG5ldyBTdHJpbmdCdWZmZXIoY2hzdHJbM10pOyAKKyAgICAgICAgICAgICAgICBMb2NhbGUgbG9jYWxlID0gbnVsbDsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gNDsgaSA8IGNoc3RyLmxlbmd0aDsgaSArKykgeworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgY29uZGl0aW9uID0gY2hzdHJbaV07CisgICAgICAgICAgICAgICAgICAgIGlmIChDaGFyYWN0ZXIuaXNMb3dlckNhc2UoY2hzdHJbaV0uY2hhckF0KDApKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lmaWVkIGxvY2FsZQorICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlID0gbmV3IExvY2FsZShjaHN0cltpXSwgIiIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNvbmRpdGlvbi5jb21wYXJlVG9JZ25vcmVDYXNlKCJOb3RfQmVmb3JlX0RvdCIpIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHVybnMgSSBpbnRvIGRvdGxlc3MgaQorICAgICAgICAgICAgICAgICAgICB9ICAgIAorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjb25kaXRpb24uY29tcGFyZVRvSWdub3JlQ2FzZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3JlX0Fib3ZlIikgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmJ1ZmZlci5hcHBlbmQoKGNoYXIpMHgzMDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvd2VyYnVmZmVyLmFwcGVuZCgoY2hhcikweDMwMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBwZXJidWZmZXIuYXBwZW5kKChjaGFyKTB4MzAwKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjb25kaXRpb24uY29tcGFyZVRvSWdub3JlQ2FzZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBZnRlcl9Tb2Z0X0RvdHRlZCIpID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJidWZmZXIuaW5zZXJ0KDAsICdpJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG93ZXJidWZmZXIuaW5zZXJ0KDAsICdpJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGxhbmcgPSAiIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobG9jYWxlICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZyA9IGxvY2FsZS5nZXRMYW5ndWFnZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGFuZy5lcXVhbHMoInRyIikgfHwgbGFuZy5lcXVhbHMoImF6IikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBwZXJidWZmZXIuaW5zZXJ0KDAsICdcdTAxMzAnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwcGVyYnVmZmVyLmluc2VydCgwLCAnSScpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjb25kaXRpb24uY29tcGFyZVRvSWdub3JlQ2FzZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGaW5hbF9TaWdtYSIpID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJidWZmZXIuaW5zZXJ0KDAsICdjJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG93ZXJidWZmZXIuaW5zZXJ0KDAsICdjJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBwZXJidWZmZXIuaW5zZXJ0KDAsICdDJyk7CisgICAgICAgICAgICAgICAgICAgIH0KKwkgICAgICAgIAl9CisgICAgICAgICAgICAgICAgY2hzdHJbMF0gPSBzdHJidWZmZXIudG9TdHJpbmcoKTsKKyAgICAgICAgICAgICAgICBjaHN0clsxXSA9IGxvd2VyYnVmZmVyLnRvU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgY2hzdHJbM10gPSB1cHBlcmJ1ZmZlci50b1N0cmluZygpOworICAgICAgICAgICAgICAgIGlmIChsb2NhbGUgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIVVDaGFyYWN0ZXIudG9Mb3dlckNhc2UoY2hzdHJbMF0pLmVxdWFscyhjaHN0clsxXSkpIHsKKyAgICAJICAgICAgICAgICAgICAgCWVycmxuKHMpOworICAgIAkgICAgICAgICAgICAgICAJZXJybG4oIkZhaWw6IHRvTG93ZXJDYXNlIGZvciBjaGFyYWN0ZXIgIiArIAorICAgIAkgICAgICAgICAgICAgICAgICAgICAgVXRpbGl0eS5lc2NhcGUoY2hzdHJbMF0pICsgIiwgZXhwZWN0ZWQgIgorICAgIAkgICAgICAgICAgICAgICAgICAgICAgKyBVdGlsaXR5LmVzY2FwZShjaHN0clsxXSkgKyAiIGJ1dCByZXN1bHRlZCBpbiAiICsgCisgICAgCSAgICAgICAgICAgICAgICAgICAgICBVdGlsaXR5LmVzY2FwZShVQ2hhcmFjdGVyLnRvTG93ZXJDYXNlKGNoc3RyWzBdKSkpOworICAgIAkgICAgICAgICAgICB9CisgICAgCSAgICAgICAgICAgIGlmICghVUNoYXJhY3Rlci50b1VwcGVyQ2FzZShjaHN0clswXSkuZXF1YWxzKGNoc3RyWzNdKSkgeworICAgIAkgICAgICAgICAgICAgICAgZXJybG4ocyk7CisgICAgCSAgICAgICAgICAgICAgICBlcnJsbigiRmFpbDogdG9VcHBlckNhc2UgZm9yIGNoYXJhY3RlciAiICsgCisgICAgCSAgICAgICAgICAgICAgICAgICAgICBVdGlsaXR5LmVzY2FwZShjaHN0clswXSkgKyAiLCBleHBlY3RlZCAiCisgICAgCSAgICAgICAgICAgICAgICAgICAgICArIFV0aWxpdHkuZXNjYXBlKGNoc3RyWzNdKSArICIgYnV0IHJlc3VsdGVkIGluICIgKyAKKyAgICAJICAgICAgICAgICAgICAgICAgICAgIFV0aWxpdHkuZXNjYXBlKFVDaGFyYWN0ZXIudG9VcHBlckNhc2UoY2hzdHJbMF0pKSk7CisgICAgCSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghVUNoYXJhY3Rlci50b0xvd2VyQ2FzZShsb2NhbGUsIGNoc3RyWzBdKS5lcXVhbHMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hzdHJbMV0pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbihzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycmxuKCJGYWlsOiB0b0xvd2VyQ2FzZSBmb3IgY2hhcmFjdGVyICIgKyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxpdHkuZXNjYXBlKGNoc3RyWzBdKSArICIsIGV4cGVjdGVkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgVXRpbGl0eS5lc2NhcGUoY2hzdHJbMV0pICsgIiBidXQgcmVzdWx0ZWQgaW4gIiArIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXRpbGl0eS5lc2NhcGUoVUNoYXJhY3Rlci50b0xvd2VyQ2FzZShsb2NhbGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaHN0clswXSkpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoIVVDaGFyYWN0ZXIudG9VcHBlckNhc2UobG9jYWxlLCBjaHN0clswXSkuZXF1YWxzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoc3RyWzNdKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZXJybG4ocyk7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbigiRmFpbDogdG9VcHBlckNhc2UgZm9yIGNoYXJhY3RlciAiICsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVdGlsaXR5LmVzY2FwZShjaHN0clswXSkgKyAiLCBleHBlY3RlZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIFV0aWxpdHkuZXNjYXBlKGNoc3RyWzNdKSArICIgYnV0IHJlc3VsdGVkIGluICIgKyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxpdHkuZXNjYXBlKFVDaGFyYWN0ZXIudG9VcHBlckNhc2UobG9jYWxlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hzdHJbMF0pKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisJICAgICAgCX0KKwkgICAgICAJaW5wdXQuY2xvc2UoKTsKKwkgICAgfQorCSAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCisJICAgIHsKKwkgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworCSAgICB9CisJfQorCQorICAgIHB1YmxpYyB2b2lkIFRlc3RVcHBlckxvd2VyKCkKKyAgICB7CisgICAgICAgIGludCB1cHBlcltdID0gezB4MDA0MSwgMHgwMDQyLCAweDAwYjIsIDB4MDFjNCwgMHgwMWM2LCAweDAxYzksIDB4MDFjOCwgCisgICAgICAgICAgICAgICAgICAgICAgICAweDAxYzksIDB4MDAwY307CisgICAgICAgIGludCBsb3dlcltdID0gezB4MDA2MSwgMHgwMDYyLCAweDAwYjIsIDB4MDFjNiwgMHgwMWM2LCAweDAxYzksIDB4MDFjOSwgCisgICAgICAgICAgICAgICAgICAgICAgICAweDAxYzksIDB4MDAwY307CisgICAgICAgIFN0cmluZyB1cHBlclRlc3QgPSAiYWJjZGVmZzEyM2hpai4/OmtsbW5vIjsKKyAgICAgICAgU3RyaW5nIGxvd2VyVGVzdCA9ICJBQkNERUZHMTIzSElKLj86S0xNTk8iOworICAgICAgCisgICAgICAgIC8vIENoZWNrcyBMZXR0ZXJMaWtlIFN5bWJvbHMgd2hpY2ggd2VyZSBwcmV2aW91c2x5IGEgc291cmNlIG9mIAorICAgICAgICAvLyBjb25mdXNpb24gW0JlcnRyYW5kIEEuIEQuIDAyLzA0Lzk4XQorICAgICAgICBmb3IgKGludCBpID0gMHgyMTAwOyBpIDwgMHgyMTM4OyBpICsrKSB7CisgICAgICAgICAgICBpZiAoaSAhPSAweDIxMjYgJiYgaSAhPSAweDIxMmEgJiYgaSAhPSAweDIxMmIpIHsKKyAgICAgICAgICAgICAgICBpZiAoaSAhPSBVQ2hhcmFjdGVyLnRvTG93ZXJDYXNlKGkpKSB7IC8vIGl0c2VsZgorICAgICAgICAgICAgICAgICAgICBlcnJsbigiRmFpbGVkIGNhc2UgY29udmVyc2lvbiB3aXRoIGl0c2VsZjogXFx1IiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArIFV0aWxpdHkuaGV4KGksIDQpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGkgIT0gVUNoYXJhY3Rlci50b1VwcGVyQ2FzZShpKSkgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigiRmFpbGVkIGNhc2UgY29udmVyc2lvbiB3aXRoIGl0c2VsZjogXFx1IiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArIFV0aWxpdHkuaGV4KGksIDQpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB1cHBlci5sZW5ndGg7IGkgKyspIHsKKyAgICAgICAgICAgIGlmIChVQ2hhcmFjdGVyLnRvTG93ZXJDYXNlKHVwcGVyW2ldKSAhPSBsb3dlcltpXSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMRUQgVUNoYXJhY3Rlci50b2xvd2VyKCkgZm9yIFxcdSIgCisgICAgICAgICAgICAgICAgICAgICAgICArIFV0aWxpdHkuaGV4KHVwcGVyW2ldLCA0KQorICAgICAgICAgICAgICAgICAgICAgICAgKyAiIEV4cGVjdGVkIFxcdSIgKyBVdGlsaXR5LmhleChsb3dlcltpXSwgNCkKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIiBHb3QgXFx1IiAKKyAgICAgICAgICAgICAgICAgICAgICAgICsgVXRpbGl0eS5oZXgoVUNoYXJhY3Rlci50b0xvd2VyQ2FzZSh1cHBlcltpXSksIDQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBsb2dsbigidGVzdGluZyB1cHBlciBsb3dlciIpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHVwcGVyVGVzdC5sZW5ndGgoKTsgaSArKykgeworICAgICAgICAgICAgbG9nbG4oInRlc3RpbmcgdG8gdXBwZXIgdG8gbG93ZXIiKTsKKyAgICAgICAgICAgIGlmIChVQ2hhcmFjdGVyLmlzTGV0dGVyKHVwcGVyVGVzdC5jaGFyQXQoaSkpICYmIAorICAgICAgICAgICAgICAgICFVQ2hhcmFjdGVyLmlzTG93ZXJDYXNlKHVwcGVyVGVzdC5jaGFyQXQoaSkpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZhaWxlZCBpc0xvd2VyQ2FzZSB0ZXN0IGF0IFxcdSIgCisgICAgICAgICAgICAgICAgICAgICAgICArIFV0aWxpdHkuaGV4KHVwcGVyVGVzdC5jaGFyQXQoaSksIDQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKFVDaGFyYWN0ZXIuaXNMZXR0ZXIobG93ZXJUZXN0LmNoYXJBdChpKSkgCisgICAgICAgICAgICAgICAgICAgICAmJiAhVUNoYXJhY3Rlci5pc1VwcGVyQ2FzZShsb3dlclRlc3QuY2hhckF0KGkpKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGYWlsZWQgaXNVcHBlckNhc2UgdGVzdCBhdCBcXHUiIAorICAgICAgICAgICAgICAgICAgICAgICsgVXRpbGl0eS5oZXgobG93ZXJUZXN0LmNoYXJBdChpKSwgNCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAodXBwZXJUZXN0LmNoYXJBdChpKSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPSBVQ2hhcmFjdGVyLnRvTG93ZXJDYXNlKGxvd2VyVGVzdC5jaGFyQXQoaSkpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZhaWxlZCBjYXNlIGNvbnZlcnNpb24gZnJvbSBcXHUiIAorICAgICAgICAgICAgICAgICAgICAgICAgKyBVdGlsaXR5LmhleChsb3dlclRlc3QuY2hhckF0KGkpLCA0KSArICIgVG8gXFx1IgorICAgICAgICAgICAgICAgICAgICAgICAgKyBVdGlsaXR5LmhleCh1cHBlclRlc3QuY2hhckF0KGkpLCA0KSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChsb3dlclRlc3QuY2hhckF0KGkpIAorICAgICAgICAgICAgICAgICAgICAhPSBVQ2hhcmFjdGVyLnRvVXBwZXJDYXNlKHVwcGVyVGVzdC5jaGFyQXQoaSkpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZhaWxlZCBjYXNlIGNvbnZlcnNpb24gOiBcXHUiIAorICAgICAgICAgICAgICAgICAgICAgICAgKyBVdGlsaXR5LmhleCh1cHBlclRlc3QuY2hhckF0KGkpLCA0KSArICIgVG8gXFx1IgorICAgICAgICAgICAgICAgICAgICAgICAgKyBVdGlsaXR5LmhleChsb3dlclRlc3QuY2hhckF0KGkpLCA0KSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmICh1cHBlclRlc3QuY2hhckF0KGkpIAorICAgICAgICAgICAgICAgICAgICAhPSBVQ2hhcmFjdGVyLnRvTG93ZXJDYXNlKHVwcGVyVGVzdC5jaGFyQXQoaSkpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZhaWxlZCBjYXNlIGNvbnZlcnNpb24gd2l0aCBpdHNlbGY6IFxcdSIgCisgICAgICAgICAgICAgICAgICAgICAgICArIFV0aWxpdHkuaGV4KHVwcGVyVGVzdC5jaGFyQXQoaSkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGxvd2VyVGVzdC5jaGFyQXQoaSkgCisgICAgICAgICAgICAgICAgICAgICE9IFVDaGFyYWN0ZXIudG9VcHBlckNhc2UobG93ZXJUZXN0LmNoYXJBdChpKSkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRmFpbGVkIGNhc2UgY29udmVyc2lvbiB3aXRoIGl0c2VsZjogXFx1IgorICAgICAgICAgICAgICAgICAgICAgICAgKyBVdGlsaXR5LmhleChsb3dlclRlc3QuY2hhckF0KGkpKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbG9nbG4oImRvbmUgdGVzdGluZyB1cHBlciBMb3dlciIpOworICAgIH0KKyAgICAKKwkvLyBwcml2YXRlIGRhdGEgbWVtYmVycyAtIHRlc3QgZGF0YSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCQorCXByaXZhdGUgc3RhdGljIGZpbmFsIExvY2FsZSBUVVJLSVNIX0xPQ0FMRV8gPSBuZXcgTG9jYWxlKCJ0ciIsICJUUiIpOworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvY2FsZSBHRVJNQU5fTE9DQUxFXyA9IG5ldyBMb2NhbGUoImRlIiwgIkRFIik7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9jYWxlIEdSRUVLX0xPQ0FMRV8gPSBuZXcgTG9jYWxlKCJlbCIsICJHUiIpOworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvY2FsZSBFTkdMSVNIX0xPQ0FMRV8gPSBuZXcgTG9jYWxlKCJlbiIsICJVUyIpOworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvY2FsZSBMSVRIVUFOSUFOX0xPQ0FMRV8gPSBuZXcgTG9jYWxlKCJsdCIsICJMVCIpOworCQorCXByaXZhdGUgc3RhdGljIGZpbmFsIEJyZWFrSXRlcmF0b3IgQlJFQUtJVEVSQVRPUl9DSEFSQUNURVJfID0gCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCcmVha0l0ZXJhdG9yLmdldENoYXJhY3Rlckluc3RhbmNlKCk7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgQnJlYWtJdGVyYXRvciBCUkVBS0lURVJBVE9SX1dPUkRfID0gCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCcmVha0l0ZXJhdG9yLmdldFdvcmRJbnN0YW5jZSgpOworCXByaXZhdGUgc3RhdGljIGZpbmFsIEJyZWFrSXRlcmF0b3IgQlJFQUtJVEVSQVRPUl9USVRMRV8gPSAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJyZWFrSXRlcmF0b3IuZ2V0VGl0bGVJbnN0YW5jZSgpOwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCQorCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDSEFSQUNURVJfVVBQRVJfW10gPSAKKwkgICAgICAgICAgICAgICAgICB7MHg0MSwgMHgwMDQyLCAweDAwNDMsIDB4MDA0NCwgMHgwMDQ1LCAweDAwNDYsIDB4MDA0NywgCisJICAgIAkgICAgICAgICAgIDB4MDBiMSwgMHgwMGIyLCAweGIzLCAweDAwNDgsIDB4MDA0OSwgMHgwMDRhLCAweDAwMmUsIAorCSAgICAJICAgICAgICAgICAweDAwM2YsIDB4MDAzYSwgMHgwMDRiLCAweDAwNGMsIDB4NGQsIDB4MDA0ZSwgMHgwMDRmLCAKKwkgICAgCSAgICAgICAgICAgMHgwMWM0LCAweDAxYzgsIDB4MDAwYywgMHgwMDAwfTsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ0hBUkFDVEVSX0xPV0VSX1tdID0gCisJICAgICAgICAgICAgICAgICAgezB4NjEsIDB4MDA2MiwgMHgwMDYzLCAweDAwNjQsIDB4MDA2NSwgMHgwMDY2LCAweDAwNjcsIAorCSAgICAJICAgICAgICAgICAweDAwYjEsIDB4MDBiMiwgMHhiMywgMHgwMDY4LCAweDAwNjksIDB4MDA2YSwgMHgwMDJlLCAKKwkgICAgCSAgICAgICAgICAgMHgwMDNmLCAweDAwM2EsIDB4MDA2YiwgMHgwMDZjLCAweDZkLCAweDAwNmUsIDB4MDA2ZiwgCisJICAgIAkgICAgICAgICAgIDB4MDFjNiwgMHgwMWM5LCAweDAwMGMsIDB4MDAwMH07CisJICAgIAkgICAgICAgICAgIAorCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBGT0xESU5HX1NJTVBMRV9bXSA9IHsKKwkJLy8gaW5wdXQsIGRlZmF1bHQsIGV4Y2x1ZGUgc3BlY2lhbCBpCisJICAgIDB4NjEsICAgMHg2MSwgIDB4NjEsCisJICAgIDB4NDksICAgMHg2OSwgIDB4MTMxLAorCSAgICAweDEzMCwgIDB4NjksICAweDY5LAorICAgICAgICAweDEzMSwgIDB4MTMxLCAweDEzMSwKKyAgICAgICAgMHhkZiwgICAweGRmLCAgMHhkZiwKKyAgICAgICAgMHhmYjAzLCAweGZiMDMsIDB4ZmIwMywKKyAgICAgICAgMHgxMDQwZSwweDEwNDM2LDB4MTA0MzYsCisgICAgICAgIDB4NWZmZmYsMHg1ZmZmZiwweDVmZmZmCisJfTsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgRk9MRElOR19NSVhFRF9bXSA9IAorCSAgICAgICAgICAgICAgICAgICAgICB7Ilx1MDA2MVx1MDA0Mlx1MDEzMFx1MDA0OVx1MDEzMVx1MDNkMFx1MDBkZlx1ZmIwM1x1ZDkzZlx1ZGZmZiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiQVx1MDBkZlx1MDBiNVx1ZmIwM1x1RDgwMVx1REMwQ1x1MDEzMFx1MDEzMSJ9OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBGT0xESU5HX0RFRkFVTFRfW10gPSAKKwkgICAgIHsiXHUwMDYxXHUwMDYyXHUwMDY5XHUwMzA3XHUwMDY5XHUwMTMxXHUwM2IyXHUwMDczXHUwMDczXHUwMDY2XHUwMDY2XHUwMDY5XHVkOTNmXHVkZmZmIiwKKwkgICAgICAiYXNzXHUwM2JjZmZpXHVEODAxXHVEQzM0aVx1MDMwN1x1MDEzMSJ9OworCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBGT0xESU5HX0VYQ0xVREVfU1BFQ0lBTF9JX1tdID0gCisJICAgICB7Ilx1MDA2MVx1MDA2Mlx1MDA2OVx1MDEzMVx1MDEzMVx1MDNiMlx1MDA3M1x1MDA3M1x1MDA2Nlx1MDA2Nlx1MDA2OVx1ZDkzZlx1ZGZmZiIsCisJICAgICAgImFzc1x1MDNiY2ZmaVx1RDgwMVx1REMzNGlcdTAxMzEifTsKKwkvKiogCisJICogIklFU1VTIENIUklTVE9TIgorCSAqLworCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBTSEFSRURfVVBQRVJDQVNFX0dSRUVLXyA9CisJCSJcdTAzOTlcdTAzOTVcdTAzYTNcdTAzYTVcdTAzYTNcdTAwMjBcdTAzYTdcdTAzYTFcdTAzOTlcdTAzYTNcdTAzYTRcdTAzOWZcdTAzYTMiOworCS8qKgorCSAqICJpZXN1cyBjaHJpc3RvcyIKKwkgKi8KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0hBUkVEX0xPV0VSQ0FTRV9HUkVFS18gPSAKKwkgICAgIlx1MDNiOVx1MDNiNVx1MDNjM1x1MDNjNVx1MDNjMlx1MDAyMFx1MDNjN1x1MDNjMVx1MDNiOVx1MDNjM1x1MDNjNFx1MDNiZlx1MDNjMiI7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFNIQVJFRF9MT1dFUkNBU0VfVFVSS0lTSF8gPSAKKwkgICAgIlx1MDA2OVx1MDA3M1x1MDA3NFx1MDA2MVx1MDA2ZVx1MDA2Mlx1MDA3NVx1MDA2Y1x1MDAyY1x1MDAyMFx1MDA2ZVx1MDA2Zlx1MDA3NFx1MDAyMFx1MDA2M1x1MDA2Zlx1MDA2ZVx1MDA3M1x1MDA3NFx1MDA2MVx1MDA2ZVx1MDA3NFx1MDEzMVx1MDA2ZVx1MDA2Zlx1MDA3MFx1MDA2Y1x1MDA2NVx1MDAyMSI7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFNIQVJFRF9VUFBFUkNBU0VfVFVSS0lTSF8gPSAKKwkgICAgIlx1MDA1NFx1MDA0Zlx1MDA1MFx1MDA0Ylx1MDA0MVx1MDA1MFx1MDA0OVx1MDAyMFx1MDA1MFx1MDA0MVx1MDA0Y1x1MDA0MVx1MDA0M1x1MDA0NVx1MDAyY1x1MDAyMFx1MDEzMFx1MDA1M1x1MDA1NFx1MDA0MVx1MDA0ZVx1MDA0Mlx1MDA1NVx1MDA0YyI7ICAgICAgCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFNIQVJFRF9VUFBFUkNBU0VfSVNUQU5CVUxfID0gCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUwMTMwU1RBTkJVTCwgTk9UIENPTlNUQU5USU5PUExFISI7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFNIQVJFRF9MT1dFUkNBU0VfSVNUQU5CVUxfID0gCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaVx1MDMwN3N0YW5idWwsIG5vdCBjb25zdGFudGlub3BsZSEiOworCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBTSEFSRURfTE9XRVJDQVNFX1RPUEtBUF8gPSAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0b3BrYXBcdTAxMzEgcGFsYWNlLCBpc3RhbmJ1bCI7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFNIQVJFRF9VUFBFUkNBU0VfVE9QS0FQXyA9ICAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUT1BLQVBJIFBBTEFDRSwgSVNUQU5CVUwiOworCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBTSEFSRURfTE9XRVJDQVNFX0dFUk1BTl8gPSAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTXHUwMEZDXHUwMERGbWF5cnN0cmFcdTAwREZlIjsJCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFNIQVJFRF9VUFBFUkNBU0VfR0VSTUFOXyA9IAorICAgIAkJCQkJCQkJCSAgIlNcdTAwRENTU01BWVJTVFJBU1NFIjsKKyAJCisgCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBVUFBFUl9CRUZPUkVfID0gIAorICAgCSAgICAgIlx1MDA2MVx1MDA0Mlx1MDA2OVx1MDNjMlx1MDBkZlx1MDNjM1x1MDAyZlx1ZmIwM1x1ZmIwM1x1ZmIwM1x1ZDkzZlx1ZGZmZiI7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFVQUEVSX1JPT1RfID0gICAgCisJICAgICAiXHUwMDQxXHUwMDQyXHUwMDQ5XHUwM2EzXHUwMDUzXHUwMDUzXHUwM2EzXHUwMDJmXHUwMDQ2XHUwMDQ2XHUwMDQ5XHUwMDQ2XHUwMDQ2XHUwMDQ5XHUwMDQ2XHUwMDQ2XHUwMDQ5XHVkOTNmXHVkZmZmIjsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVVBQRVJfVFVSS0lTSF8gPSAJCisJICAgICAiXHUwMDQxXHUwMDQyXHUwMTMwXHUwM2EzXHUwMDUzXHUwMDUzXHUwM2EzXHUwMDJmXHUwMDQ2XHUwMDQ2XHUwMDQ5XHUwMDQ2XHUwMDQ2XHUwMDQ5XHUwMDQ2XHUwMDQ2XHUwMDQ5XHVkOTNmXHVkZmZmIjsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVVBQRVJfTUlOSV8gPSAiXHUwMGRmXHUwMDYxIjsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVVBQRVJfTUlOSV9VUFBFUl8gPSAiXHUwMDUzXHUwMDUzXHUwMDQxIjsKKwkKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgTE9XRVJfQkVGT1JFXyA9IAorICAgICAgICAgICAgICAgICAgICAgICJcdTAwNjFcdTAwNDJcdTAwNDlcdTAzYTNcdTAwZGZcdTAzYTNcdTAwMmZcdWQ5M2ZcdWRmZmYiOworCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBMT1dFUl9ST09UXyA9ICAgIAorCSAgICAgICAgICAgICAgICAgICJcdTAwNjFcdTAwNjJcdTAwNjlcdTAzYzNcdTAwZGZcdTAzYzJcdTAwMmZcdWQ5M2ZcdWRmZmYiOworCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBMT1dFUl9UVVJLSVNIXyA9IAorCSAgICAgICAgICAgICAgICAgICJcdTAwNjFcdTAwNjJcdTAxMzFcdTAzYzNcdTAwZGZcdTAzYzJcdTAwMmZcdWQ5M2ZcdWRmZmYiOworCisJLyoqCisJICogZWFjaCBpdGVtIGlzIGFuIGFycmF5IHdpdGggaW5wdXQgc3RyaW5nLCByZXN1bHQgc3RyaW5nLCBsb2NhbGUKKwkgKi8KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVElUTEVfREFUQV9bXSA9IHsKKwkJIlx1MDA2MVx1MDA0Mlx1MDAyMFx1MDA2OVx1MDNjMlx1MDAyMFx1MDBkZlx1MDNjM1x1MDAyZlx1ZmIwM1x1ZDkzZlx1ZGZmZiIsCisJCSJcdTAwNDFcdTAwNDJcdTAwMjBcdTAwNDlcdTAzYTNcdTAwMjBcdTAwNTNcdTAwNzNcdTAzYTNcdTAwMmZcdTAwNDZcdTAwNjZcdTAwNjlcdWQ5M2ZcdWRmZmYiLAorCQkKKwkJIlx1MDA2MVx1MDA0Mlx1MDAyMFx1MDA2OVx1MDNjMlx1MDAyMFx1MDBkZlx1MDNjM1x1MDAyZlx1ZmIwM1x1ZDkzZlx1ZGZmZiIsCisJCSJcdTAwNDFcdTAwNjJcdTAwMjBcdTAwNDlcdTAzYzJcdTAwMjBcdTAwNTNcdTAwNzNcdTAzYzNcdTAwMmZcdTAwNDZcdTAwNjZcdTAwNjlcdWQ5M2ZcdWRmZmYiLAorCQkKKwkJIiB0SGUgUVVJY0sgYlJvV24iLCAiIFRoZSBRdWljayBCcm93biIsCisJCQorCQkiXHUwMWM0XHUwMWM1XHUwMWM2XHUwMWM3XHUwMWM4XHUwMWM5XHUwMWNhXHUwMWNiXHUwMWNjIiwgCisJCSJcdTAxYzVcdTAxYzVcdTAxYzVcdTAxYzhcdTAxYzhcdTAxYzhcdTAxY2JcdTAxY2JcdTAxY2IiLCAvLyBVQlJLX0NIQVJBQ1RFUgorCQkKKyAgICAJIlx1MDFjOXViYXYgbGp1YmF2IiwgIlx1MDFjOHViYXYgTGp1YmF2IiwgLy8gTGogdnMuIEwragorICAgIAkKKyAgICAJIidvSCBkT24nVCB0SXRMZUNhU2UgQWZUZVIgbEV0VGVSKyciLCAKKyAgICAJIidPaCBEb24ndCBUaXRsZWNhc2UgQWZ0ZXIgTGV0dGVyKyciCisJfTsKKwkgICAgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgQnJlYWtJdGVyYXRvciBUSVRMRV9CUkVBS0lURVJBVE9SU19bXSA9CisgICAgeworICAgIAlCUkVBS0lURVJBVE9SX0NIQVJBQ1RFUl8sCisgICAgCUJSRUFLSVRFUkFUT1JfV09SRF8sCisgICAgCUJSRUFLSVRFUkFUT1JfVElUTEVfLAorICAgIAlCUkVBS0lURVJBVE9SX0NIQVJBQ1RFUl8sCisgICAgCW51bGwsCisgICAgCW51bGwKKyAgICB9OworICAgIAorICAgIC8qKgorICAgICAqIDxwPmJhc2ljIHN0cmluZywgbG93ZXIgc3RyaW5nLCB1cHBlciBzdHJpbmcsIHRpdGxlIHN0cmluZzwvcD4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgU1BFQ0lBTF9EQVRBX1tdID0geworICAgIAlVVEYxNi52YWx1ZU9mKDB4MTA0M0MpICsgVVRGMTYudmFsdWVPZigweDEwNDE0KSwKKwkJVVRGMTYudmFsdWVPZigweDEwNDNDKSArIFVURjE2LnZhbHVlT2YoMHgxMDQzQyksCisJCVVURjE2LnZhbHVlT2YoMHgxMDQxNCkgKyBVVEYxNi52YWx1ZU9mKDB4MTA0MTQpLAorCQkiYWInY0QgXHVGQjAwaVx1MDEzMUlcdTAxMzAgXHUwMUM3XHUwMUM4XHUwMUM5ICIgKyAKKwkgICAgICAgICAgICAgICAgICAgICBVVEYxNi52YWx1ZU9mKDB4MTA0M0MpICsgVVRGMTYudmFsdWVPZigweDEwNDE0KSwKKwkgICAgImFiJ2NkIFx1RkIwMGlcdTAxMzFpaVx1MDMwNyBcdTAxQzlcdTAxQzlcdTAxQzkgIiArIAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgVVRGMTYudmFsdWVPZigweDEwNDNDKSArIFVURjE2LnZhbHVlT2YoMHgxMDQzQyksCisJICAgICJBQidDRCBGRklJSVx1MDEzMCBcdTAxQzdcdTAxQzdcdTAxQzcgIiArCisJICAgICAgICAgICAgICAgICAgICAgICAgICBVVEYxNi52YWx1ZU9mKDB4MTA0MTQpICsgVVRGMTYudmFsdWVPZigweDEwNDE0KSwKKwkgICAgLy8gc2lnbWFzIGZvbGxvd2VkL3ByZWNlZGVkIGJ5IGNhc2VkIGxldHRlcnMKKwkgICAgImlcdTAzMDdcdTAzYTNcdTAzMDhqIFx1MDMwN1x1MDNhM1x1MDMwOGogaVx1MDBhZFx1MDNhM1x1MDMwOCBcdTAzMDdcdTAzYTNcdTAzMDggIiwKKwkgICAgImlcdTAzMDdcdTAzYzNcdTAzMDhqIFx1MDMwN1x1MDNjM1x1MDMwOGogaVx1MDBhZFx1MDNjMlx1MDMwOCBcdTAzMDdcdTAzYzNcdTAzMDggIiwKKwkgICAgIklcdTAzMDdcdTAzYTNcdTAzMDhKIFx1MDMwN1x1MDNhM1x1MDMwOEogSVx1MDBhZFx1MDNhM1x1MDMwOCBcdTAzMDdcdTAzYTNcdTAzMDggIgorICAgIH07CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9jYWxlIFNQRUNJQUxfTE9DQUxFU19bXSA9IHsKKyAgICAJbnVsbCwKKyAgICAJRU5HTElTSF9MT0NBTEVfLAorICAgIAludWxsLAorICAgIH07CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgU1BFQ0lBTF9ET1RURURfID0gCisgICAgICAgICAgICAiSSBcdTAxMzAgSVx1MDMwNyBJXHUwMzI3XHUwMzA3IElcdTAzMDFcdTAzMDcgSVx1MDMyN1x1MDMwN1x1MDMwMSI7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFNQRUNJQUxfRE9UVEVEX0xPV0VSX1RVUktJU0hfID0KKwkJCSJcdTAxMzEgaSBpXHUwMzA3IGlcdTAzMjdcdTAzMDcgXHUwMTMxXHUwMzAxXHUwMzA3IGlcdTAzMjdcdTAzMDdcdTAzMDEiOworCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBTUEVDSUFMX0RPVFRFRF9MT1dFUl9HRVJNQU5fID0gCisJICAgICAgICAiaSBpXHUwMzA3IGlcdTAzMDcgaVx1MDMyN1x1MDMwNyBpXHUwMzAxXHUwMzA3IGlcdTAzMjdcdTAzMDdcdTAzMDEiOworCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBTUEVDSUFMX0RPVF9BQk9WRV8gPQorCQkJImFcdTAzMDcgXHUwMzA3IGlcdTAzMDcgalx1MDMyN1x1MDMwNyBqXHUwMzAxXHUwMzA3IjsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgU1BFQ0lBTF9ET1RfQUJPVkVfVVBQRVJfTElUSFVBTklBTl8gPSAKKwkgICAgICAgICJBXHUwMzA3IFx1MDMwNyBJIEpcdTAzMjcgSlx1MDMwMVx1MDMwNyI7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFNQRUNJQUxfRE9UX0FCT1ZFX1VQUEVSX0dFUk1BTl8gPSAKKwkgICAgICAgICJBXHUwMzA3IFx1MDMwNyBJXHUwMzA3IEpcdTAzMjdcdTAzMDcgSlx1MDMwMVx1MDMwNyI7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFNQRUNJQUxfRE9UX0FCT1ZFX1VQUEVSXyA9CisJICAgICAgICAiSSBJXHUwMzAxIEogSlx1MDMwMSBcdTAxMmUgXHUwMTJlXHUwMzAxIFx1MDBjY1x1MDBjZFx1MDEyOCI7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFNQRUNJQUxfRE9UX0FCT1ZFX0xPV0VSX0xJVEhVQU5JQU5fID0KKwkgICAgICAgICJpIGlcdTAzMDdcdTAzMDEgaiBqXHUwMzA3XHUwMzAxIFx1MDEyZiBcdTAxMmZcdTAzMDdcdTAzMDEgaVx1MDMwN1x1MDMwMGlcdTAzMDdcdTAzMDFpXHUwMzA3XHUwMzAzIjsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgU1BFQ0lBTF9ET1RfQUJPVkVfTE9XRVJfR0VSTUFOXyA9CisJICAJCSJpIGlcdTAzMDEgaiBqXHUwMzAxIFx1MDEyZiBcdTAxMmZcdTAzMDEgXHUwMGVjXHUwMGVkXHUwMTI5IjsKKwkgICAgICAgICAgICAgICAgICAKKwkvLyBwcml2YXRlIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCQorCS8qKgorICAJICogQ29udmVydGluZyB0aGUgaGV4IG51bWJlcnMgcmVwcmVzZW50ZWQgYmV0d2VlICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuICc7JyB0byBVbmljb2RlIHN0cmluZ3MKKyAgCSAqIEBwYXJhbSBzdHIgc3RyaW5nIHRvIGJyZWFrIHVwIGludG8gVW5pY29kZSBzdHJpbmdzCisgIAkgKiBAcmV0dXJuIGFycmF5IG9mIFVuaWNvZGUgc3RyaW5ncyBlbmRpbmcgd2l0aCBhIG51bGwKKyAgCSAqLworICAJcHJpdmF0ZSBTdHJpbmdbXSBnZXRVbmljb2RlU3RyaW5ncyhTdHJpbmcgc3RyKQorICAJeworICAgIAlWZWN0b3IgdiA9IG5ldyBWZWN0b3IoMTApOworICAgICAgICBpbnQgc3RhcnQgPSAwOworICAgICAgICBmb3IgKGludCBjYXNlY291bnQgPSA0OyBjYXNlY291bnQgPiAwOyBjYXNlY291bnQgLS0pIHsKKyAgICAgICAgICAgIGludCBlbmQgPSBzdHIuaW5kZXhPZigiOyAiLCBzdGFydCk7CisgICAgICAgICAgICBTdHJpbmcgY2FzZXN0ciA9IHN0ci5zdWJzdHJpbmcoc3RhcnQsIGVuZCk7CisgICAgICAgICAgICBTdHJpbmdCdWZmZXIgYnVmZmVyID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICAgICAgaW50IHNwYWNlb2Zmc2V0ID0gMDsKKyAgICAgICAgICAgIHdoaWxlIChzcGFjZW9mZnNldCA8IGNhc2VzdHIubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICBpbnQgbmV4dHNwYWNlID0gY2FzZXN0ci5pbmRleE9mKCcgJywgc3BhY2VvZmZzZXQpOworICAgICAgICAgICAgICAgIGlmIChuZXh0c3BhY2UgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgbmV4dHNwYWNlID0gY2FzZXN0ci5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZCgoY2hhcilJbnRlZ2VyLnBhcnNlSW50KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VzdHIuc3Vic3RyaW5nKHNwYWNlb2Zmc2V0LCBuZXh0c3BhY2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYpKTsKKyAgICAgICAgICAgICAgICBzcGFjZW9mZnNldCA9IG5leHRzcGFjZSArIDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGFydCA9IGVuZCArIDI7CisgICAgICAgICAgICB2LmFkZChidWZmZXIudG9TdHJpbmcoKSk7CisgICAgICAgIH0KKyAgICAgICAgaW50IGNvbW1lbnRzID0gc3RyLmluZGV4T2YoIiAjIiwgc3RhcnQpOworICAgICAgICBpZiAoY29tbWVudHMgIT0gLTEgJiYgY29tbWVudHMgIT0gc3RhcnQpIHsKKyAgICAgICAgICAgIGlmIChzdHIuY2hhckF0KGNvbW1lbnRzIC0gMSkgPT0gJzsnKSB7CisgICAgICAgICAgICAgICAgY29tbWVudHMgLS07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBTdHJpbmcgY29uZGl0aW9ucyA9IHN0ci5zdWJzdHJpbmcoc3RhcnQsIGNvbW1lbnRzKTsKKyAgICAgICAgICAgIGludCBvZmZzZXQgPSAwOworICAgIAkgICAgd2hpbGUgKG9mZnNldCA8IGNvbmRpdGlvbnMubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICBpbnQgc3BhY2VvZmZzZXQgPSBjb25kaXRpb25zLmluZGV4T2YoJyAnLCBvZmZzZXQpOworICAgICAgICAgICAgICAgIGlmIChzcGFjZW9mZnNldCA9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICBzcGFjZW9mZnNldCA9IGNvbmRpdGlvbnMubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHYuYWRkKGNvbmRpdGlvbnMuc3Vic3RyaW5nKG9mZnNldCwgc3BhY2VvZmZzZXQpKTsKKyAgICAgICAgICAgICAgICBvZmZzZXQgPSBzcGFjZW9mZnNldCArIDE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwkgICAgaW50IHNpemUgPSB2LnNpemUoKTsKKwkgICAgU3RyaW5nIHJlc3VsdFtdID0gbmV3IFN0cmluZ1tzaXplXTsKKwkgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpICsrKSB7CisJICAgICAgICByZXN1bHRbaV0gPSAoU3RyaW5nKXYuZWxlbWVudEF0KGkpOworCSAgICB9CisJICAgIHJldHVybiByZXN1bHQ7CisgIAl9Cit9CisKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9sYW5nL1VDaGFyYWN0ZXJDYXRlZ29yeVRlc3QuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9sYW5nL1VDaGFyYWN0ZXJDYXRlZ29yeVRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTk1ZGM4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2xhbmcvVUNoYXJhY3RlckNhdGVnb3J5VGVzdC5qYXZhCkBAIC0wLDAgKzEsOTQgQEAKKy8qKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAkU291cmNlOiAKKyogICAgICAvdXNyL2N2cy9pY3U0ai9pY3U0ai9zcmMvY29tL2libS9pY3UvdGV4dC9VQ2hhcmFjdGVyQ2F0ZWdvcnkuamF2YSAkIAorKiAkRGF0ZTogMjAwMi8wNy8wOCAyMzo1MjoxMyAkIAorKiAkUmV2aXNpb246IDEuMiAkCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudGVzdC5sYW5nOworaW1wb3J0IGNvbS5pYm0uaWN1LmRldi50ZXN0LlRlc3RGbXdrOworaW1wb3J0IGNvbS5pYm0uaWN1LmxhbmcuVUNoYXJhY3RlckNhdGVnb3J5OworCisvKioKKyogVGVzdGluZyBVQ2hhcmFjdGVyQ2F0ZWdvcnkKKyogQGF1dGhvciBTeW4gV2VlIFF1ZWsKKyogQHNpbmNlIEFwcmlsIDAyIDIwMDIKKyovCitwdWJsaWMgY2xhc3MgVUNoYXJhY3RlckNhdGVnb3J5VGVzdCBleHRlbmRzIFRlc3RGbXdrCit7CisJLy8gY29uc3RydWN0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkKKwkvKioKKyAgICAqIFByaXZhdGUgY29uc3RydWN0b3IgdG8gcHJldmVudCBpbml0aWFsaXNhdGlvbgorICAgICovCisgICAgcHVibGljIFVDaGFyYWN0ZXJDYXRlZ29yeVRlc3QoKQorICAgIHsKKyAgICB9CisgICAgCisgIAkvLyBwdWJsaWMgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCSAgCisJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJnKSAgCisJeworCSAgICB0cnkKKwkgICAgeworCSAgICAgIAlVQ2hhcmFjdGVyQ2F0ZWdvcnlUZXN0IHRlc3QgPSBuZXcgVUNoYXJhY3RlckNhdGVnb3J5VGVzdCgpOworCSAgICAgIAl0ZXN0LnJ1bihhcmcpOworCSAgICB9CisJICAgIGNhdGNoIChFeGNlcHRpb24gZSkKKwkgICAgeworCSAgICAgIAllLnByaW50U3RhY2tUcmFjZSgpOworCSAgICB9CisJfQorCQorCS8qKgorCSogR2V0cyB0aGUgbmFtZSBvZiB0aGUgYXJndW1lbnQgY2F0ZWdvcnkKKwkqIEBwYXJhbSBjYXRlZ29yeSB0byByZXRyaWV2ZSBuYW1lCisJKiBAcmV0dXJuIGNhdGVnb3J5IG5hbWUKKwkqLworCXB1YmxpYyB2b2lkIFRlc3RUb1N0cmluZygpCisJeworCSAgCVN0cmluZyBuYW1lW10gPSB7IlVuYXNzaWduZWQiLAorCSAgCQkgICAgICAgICAgICAgIkxldHRlciwgVXBwZXJjYXNlIiwKKwkgIAkJICAgICAgICAgICAgICJMZXR0ZXIsIExvd2VyY2FzZSIsCisJICAJCSAgICAgICAgICAgICAiTGV0dGVyLCBUaXRsZWNhc2UiLAorCSAgCQkgICAgICAgICAgICAgIkxldHRlciwgTW9kaWZpZXIiLAorCSAgCQkgICAgICAgICAgICAgIkxldHRlciwgT3RoZXIiLAorCSAgCQkgICAgICAgICAgICAgIk1hcmssIE5vbi1TcGFjaW5nIiwKKwkgIAkJICAgICAgICAgICAgICJNYXJrLCBFbmNsb3NpbmciLAorCSAgCQkgICAgICAgICAgICAgIk1hcmssIFNwYWNpbmcgQ29tYmluaW5nIiwKKwkgIAkJICAgICAgICAgICAgICJOdW1iZXIsIERlY2ltYWwgRGlnaXQiLAorCSAgCQkgICAgICAgICAgICAgIk51bWJlciwgTGV0dGVyIiwKKwkgIAkJICAgICAgICAgICAgICJOdW1iZXIsIE90aGVyIiwKKwkgIAkJICAgICAgICAgICAgICJTZXBhcmF0b3IsIFNwYWNlIiwKKwkgIAkJICAgICAgICAgICAgICJTZXBhcmF0b3IsIExpbmUiLAorCSAgCQkgICAgICAgICAgICAgIlNlcGFyYXRvciwgUGFyYWdyYXBoIiwKKwkgIAkJICAgICAgICAgICAgICJPdGhlciwgQ29udHJvbCIsCisJICAJCSAgICAgICAgICAgICAiT3RoZXIsIEZvcm1hdCIsCisJICAJCSAgICAgICAgICAgICAiT3RoZXIsIFByaXZhdGUgVXNlIiwKKwkgIAkJICAgICAgICAgICAgICJPdGhlciwgU3Vycm9nYXRlIiwKKwkgIAkJICAgICAgICAgICAgICJQdW5jdHVhdGlvbiwgRGFzaCIsCisJICAJCSAgICAgICAgICAgICAiUHVuY3R1YXRpb24sIE9wZW4iLAorCSAgCQkgICAgICAgICAgICAgIlB1bmN0dWF0aW9uLCBDbG9zZSIsCisJICAJCSAgICAgICAgICAgICAiUHVuY3R1YXRpb24sIENvbm5lY3RvciIsCisJICAJCSAgICAgICAgICAgICAiUHVuY3R1YXRpb24sIE90aGVyIiwKKwkgIAkJICAgICAgICAgICAgICJTeW1ib2wsIE1hdGgiLAorCSAgCQkgICAgICAgICAgICAgIlN5bWJvbCwgQ3VycmVuY3kiLAorCSAgCQkgICAgICAgICAgICAgIlN5bWJvbCwgTW9kaWZpZXIiLAorCSAgCQkgICAgICAgICAgICAgIlN5bWJvbCwgT3RoZXIiLCAKKwkgIAkJICAgICAgICAgICAgICJQdW5jdHVhdGlvbiwgSW5pdGlhbCBxdW90ZSIsCisJICAJCSAgICAgICAgICAgICAiUHVuY3R1YXRpb24sIEZpbmFsIHF1b3RlIn07CisJCWZvciAoaW50IGkgPSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuVU5BU1NJR05FRDsgCisJCSAgICAgICAgIGkgPCBVQ2hhcmFjdGVyQ2F0ZWdvcnkuQ0hBUl9DQVRFR09SWV9DT1VOVDsgaSArKykgeworCQkgICAgIGlmICghVUNoYXJhY3RlckNhdGVnb3J5LnRvU3RyaW5nKGkpLmVxdWFscyhuYW1lW2ldKSkgeworCQkgICAgIAllcnJsbigiRXJyb3IgdG9TdHJpbmcgZm9yIGNhdGVnb3J5ICIgKyBpICsgIiBleHBlY3RlZCAiICsKKwkJICAgICAJICAgICAgbmFtZVtpXSk7CisJCSAgICAgfQorCQl9CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2xhbmcvVUNoYXJhY3RlckNvbXBhcmUuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9sYW5nL1VDaGFyYWN0ZXJDb21wYXJlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZDkxNDYxNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9sYW5nL1VDaGFyYWN0ZXJDb21wYXJlLmphdmEKQEAgLTAsMCArMSwzMTUgQEAKKy8qKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvbGFuZy9VQ2hhcmFjdGVyQ29tcGFyZS5qYXZhLHYgJCAKKyogJERhdGU6IDIwMDIvMDQvMDQgMDA6NTI6MzEgJCAKKyogJFJldmlzaW9uOiAxLjEwICQKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3QubGFuZzsKKworaW1wb3J0IGNvbS5pYm0uaWN1LmxhbmcuVUNoYXJhY3RlcjsKK2ltcG9ydCBjb20uaWJtLmljdS5sYW5nLlVDaGFyYWN0ZXJDYXRlZ29yeTsKK2ltcG9ydCBqYXZhLmlvLkZpbGVXcml0ZXI7CitpbXBvcnQgamF2YS5pby5QcmludFdyaXRlcjsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOworaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKKworLyoqCisqIEEgY2xhc3MgdG8gY29tcGFyZSB0aGUgZGlmZmVyZW5jZSBpbiBtZXRob2RzIGJldHdlZW4gamF2YS5sYW5nLkNoYXJhY3RlciBhbmQKKyogVUNoYXJhY3RlcgorKiBAYXV0aG9yIFN5biBXZWUgUXVlaworKiBAc2luY2Ugb2N0IDA2IDIwMDAKKyogQHNlZSBjb20uaWJtLmljdS50ZXh0LlVDaGFyYWN0ZXIKKyovCisKK3B1YmxpYyBmaW5hbCBjbGFzcyBVQ2hhcmFjdGVyQ29tcGFyZQoreyAKKyAgLy8gcHJpdmF0ZSB2YXJpYWJsZXMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgIAorICBwcml2YXRlIHN0YXRpYyBIYXNodGFibGUgbV9oYXNodGFibGVfID0gbmV3IEhhc2h0YWJsZSgpOworICAKKyAgLy8gcHVibGljIG1ldGhvZHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgIAorICAvKioKKyAgKiBNYWluIHRlc3RpbmcgbWV0aG9kCisgICovCisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZyBhcmdbXSkKKyAgeworICAJU3lzdGVtLm91dC5wcmludGxuKCJTdGFydGluZyBjaGFyYWN0ZXIgY29tcGFyZSIpOworICAgIHRyeQorICAgIHsKKyAgICAgIEZpbGVXcml0ZXIgZjsKKyAgICAgIGlmIChhcmcubGVuZ3RoID09IDApCisgICAgICAgIGYgPSBuZXcgRmlsZVdyaXRlcigiY29tcGFyZS50eHQiKTsKKyAgICAgIGVsc2UKKyAgICAgICAgZiA9IG5ldyBGaWxlV3JpdGVyKGFyZ1swXSk7CisgICAgICBQcmludFdyaXRlciBwID0gbmV3IFByaW50V3JpdGVyKGYpOworICAgICAgcC5wcmludCgiY2hhciAgY2hhcmFjdGVyIG5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIpOworICAgICAgcC5wcmludGxuKCJtZXRob2QgbmFtZSAgICAgICAgICAgICAgIHVjaGFyYWN0ZXIgY2hhcmFjdGVyIik7CisgICAgICBmb3IgKGNoYXIgaSA9IENoYXJhY3Rlci5NSU5fVkFMVUU7IGkgPCBDaGFyYWN0ZXIuTUFYX1ZBTFVFOyBpICsrKQorICAgICAgeworICAgICAgCVN5c3RlbS5vdXQucHJpbnRsbigiY2hhcmFjdGVyIFxcdSIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKGkpKTsKKyAgICAgICAgaWYgKFVDaGFyYWN0ZXIuaXNEZWZpbmVkKGkpICE9IENoYXJhY3Rlci5pc0RlZmluZWQoaSkpCisgICAgICAgICAgdHJhY2tEaWZmZXJlbmNlKHAsIGksICJpc0RlZmluZWQoKSIsICIiICsgVUNoYXJhY3Rlci5pc0RlZmluZWQoaSksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAiIiArIENoYXJhY3Rlci5pc0RlZmluZWQoaSkpOworICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICBpZiAoVUNoYXJhY3Rlci5kaWdpdChpLCAxMCkgIT0gQ2hhcmFjdGVyLmRpZ2l0KGksIDEwKSkKKyAgICAgICAgICAgIHRyYWNrRGlmZmVyZW5jZShwLCBpLCAiZGlnaXQoKSIsICIiICsgVUNoYXJhY3Rlci5kaWdpdChpLCAxMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIgKyBDaGFyYWN0ZXIuZGlnaXQoaSwgMTApKTsKKyAgICAgICAgICBpZiAoVUNoYXJhY3Rlci5nZXROdW1lcmljVmFsdWUoaSkgIT0gQ2hhcmFjdGVyLmdldE51bWVyaWNWYWx1ZShpKSkKKyAgICAgICAgICAgIHRyYWNrRGlmZmVyZW5jZShwLCBpLCAiZ2V0TnVtZXJpY1ZhbHVlKCkiLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiArIFVDaGFyYWN0ZXIuZ2V0TnVtZXJpY1ZhbHVlKGkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiICsgQ2hhcmFjdGVyLmdldE51bWVyaWNWYWx1ZShpKSk7CisgICAgICAgICAgaWYgKCFjb21wYXJlVHlwZShVQ2hhcmFjdGVyLmdldFR5cGUoaSksIENoYXJhY3Rlci5nZXRUeXBlKGkpKSkKKyAgICAgICAgICAgIHRyYWNrRGlmZmVyZW5jZShwLCBpLCAiZ2V0VHlwZSgpIiwgIiIgKyBVQ2hhcmFjdGVyLmdldFR5cGUoaSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIgKyBDaGFyYWN0ZXIuZ2V0VHlwZShpKSk7CisgICAgICAgICAgaWYgKFVDaGFyYWN0ZXIuaXNEaWdpdChpKSAhPSBDaGFyYWN0ZXIuaXNEaWdpdChpKSkKKyAgICAgICAgICAgIHRyYWNrRGlmZmVyZW5jZShwLCBpLCAiaXNEaWdpdCgpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiArIFVDaGFyYWN0ZXIuaXNEaWdpdChpKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIgKyBDaGFyYWN0ZXIuaXNEaWdpdChpKSk7CisgICAgICAgICAgaWYgKFVDaGFyYWN0ZXIuaXNJU09Db250cm9sKGkpICE9IENoYXJhY3Rlci5pc0lTT0NvbnRyb2woaSkpCisgICAgICAgICAgICB0cmFja0RpZmZlcmVuY2UocCwgaSwgImlzSVNPQ29udHJvbCgpIiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIgKyBVQ2hhcmFjdGVyLmlzSVNPQ29udHJvbChpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiArIENoYXJhY3Rlci5pc0lTT0NvbnRyb2woaSkpOworICAgICAgICAgIGlmIChVQ2hhcmFjdGVyLmlzTGV0dGVyKGkpICE9IENoYXJhY3Rlci5pc0xldHRlcihpKSkKKyAgICAgICAgICAgIHRyYWNrRGlmZmVyZW5jZShwLCBpLCAiaXNMZXR0ZXIoKSIsICIiICsgVUNoYXJhY3Rlci5pc0xldHRlcihpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiArIENoYXJhY3Rlci5pc0xldHRlcihpKSk7CisgICAgICAgICAgaWYgKFVDaGFyYWN0ZXIuaXNMZXR0ZXJPckRpZ2l0KGkpICE9IENoYXJhY3Rlci5pc0xldHRlck9yRGlnaXQoaSkpCisgICAgICAgICAgICB0cmFja0RpZmZlcmVuY2UocCwgaSwgImlzTGV0dGVyT3JEaWdpdCgpIiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIgKyBVQ2hhcmFjdGVyLmlzTGV0dGVyT3JEaWdpdChpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiArIENoYXJhY3Rlci5pc0xldHRlck9yRGlnaXQoaSkpOworICAgICAgICAgIGlmIChVQ2hhcmFjdGVyLmlzTG93ZXJDYXNlKGkpICE9IENoYXJhY3Rlci5pc0xvd2VyQ2FzZShpKSkKKyAgICAgICAgICAgIHRyYWNrRGlmZmVyZW5jZShwLCBpLCAiaXNMb3dlckNhc2UoKSIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiICsgVUNoYXJhY3Rlci5pc0xvd2VyQ2FzZShpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiArIENoYXJhY3Rlci5pc0xvd2VyQ2FzZShpKSk7CisgICAgICAgICAgaWYgKFVDaGFyYWN0ZXIuaXNXaGl0ZXNwYWNlKGkpICE9IENoYXJhY3Rlci5pc1doaXRlc3BhY2UoaSkpCisgICAgICAgICAgICB0cmFja0RpZmZlcmVuY2UocCwgaSwgImlzV2hpdGVzcGFjZSgpIiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIgKyBVQ2hhcmFjdGVyLmlzV2hpdGVzcGFjZShpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiArIENoYXJhY3Rlci5pc1doaXRlc3BhY2UoaSkpOworICAgICAgICAgIGlmIChVQ2hhcmFjdGVyLmlzU3BhY2VDaGFyKGkpICE9IENoYXJhY3Rlci5pc1NwYWNlQ2hhcihpKSkKKyAgICAgICAgICAgIHRyYWNrRGlmZmVyZW5jZShwLCBpLCAiaXNTcGFjZUNoYXIoKSIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiICsgVUNoYXJhY3Rlci5pc1NwYWNlQ2hhcihpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiArIENoYXJhY3Rlci5pc1NwYWNlQ2hhcihpKSk7CisgICAgICAgICAgaWYgKFVDaGFyYWN0ZXIuaXNUaXRsZUNhc2UoaSkgIT0gQ2hhcmFjdGVyLmlzVGl0bGVDYXNlKGkpKQorICAgICAgICAgICAgdHJhY2tEaWZmZXJlbmNlKHAsIGksICJpc1RpdGxlQ2hhcigpIiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIgKyBVQ2hhcmFjdGVyLmlzVGl0bGVDYXNlKGkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiICsgQ2hhcmFjdGVyLmlzVGl0bGVDYXNlKGkpKTsKKyAgICAgICAgICBpZiAoVUNoYXJhY3Rlci5pc1VuaWNvZGVJZGVudGlmaWVyUGFydChpKSAhPSAKKyAgICAgICAgICAgICAgQ2hhcmFjdGVyLmlzVW5pY29kZUlkZW50aWZpZXJQYXJ0KGkpKQorICAgICAgICAgICAgdHJhY2tEaWZmZXJlbmNlKHAsIGksICJpc1VuaWNvZGVJZGVudGlmaWVyUGFydCgpIiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIgKyBVQ2hhcmFjdGVyLmlzVW5pY29kZUlkZW50aWZpZXJQYXJ0KGkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiICsgQ2hhcmFjdGVyLmlzVW5pY29kZUlkZW50aWZpZXJQYXJ0KGkpKTsKKyAgICAgICAgICBpZiAoVUNoYXJhY3Rlci5pc1VuaWNvZGVJZGVudGlmaWVyU3RhcnQoaSkgIT0gCisgICAgICAgICAgICAgIENoYXJhY3Rlci5pc1VuaWNvZGVJZGVudGlmaWVyU3RhcnQoaSkpCisgICAgICAgICAgICB0cmFja0RpZmZlcmVuY2UocCwgaSwgImlzVW5pY29kZUlkZW50aWZpZXJTdGFydCgpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiArIFVDaGFyYWN0ZXIuaXNVbmljb2RlSWRlbnRpZmllclN0YXJ0KGkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiICsgQ2hhcmFjdGVyLmlzVW5pY29kZUlkZW50aWZpZXJTdGFydChpKSk7CisgICAgICAgICAgaWYgKFVDaGFyYWN0ZXIuaXNJZGVudGlmaWVySWdub3JhYmxlKGkpICE9IAorICAgICAgICAgICAgICBDaGFyYWN0ZXIuaXNJZGVudGlmaWVySWdub3JhYmxlKGkpKQorICAgICAgICAgICAgdHJhY2tEaWZmZXJlbmNlKHAsIGksICJpc0lkZW50aWZpZXJJZ25vcmFibGUoKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIgKyBVQ2hhcmFjdGVyLmlzSWRlbnRpZmllcklnbm9yYWJsZShpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiArIENoYXJhY3Rlci5pc0lkZW50aWZpZXJJZ25vcmFibGUoaSkpOworICAgICAgICAgIGlmIChVQ2hhcmFjdGVyLmlzVXBwZXJDYXNlKGkpICE9IENoYXJhY3Rlci5pc1VwcGVyQ2FzZShpKSkKKyAgICAgICAgICAgIHRyYWNrRGlmZmVyZW5jZShwLCBpLCAiaXNVcHBlckNhc2UoKSIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiICsgVUNoYXJhY3Rlci5pc1VwcGVyQ2FzZShpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiArIENoYXJhY3Rlci5pc1VwcGVyQ2FzZShpKSk7CisgICAgICAgICAgaWYgKFVDaGFyYWN0ZXIudG9Mb3dlckNhc2UoaSkgIT0gQ2hhcmFjdGVyLnRvTG93ZXJDYXNlKGkpKQorICAgICAgICAgICAgdHJhY2tEaWZmZXJlbmNlKHAsIGksICJ0b0xvd2VyQ2FzZSgpIiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZWdlci50b0hleFN0cmluZyhVQ2hhcmFjdGVyLnRvTG93ZXJDYXNlKGkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlZ2VyLnRvSGV4U3RyaW5nKENoYXJhY3Rlci50b0xvd2VyQ2FzZShpKSkpOworICAgICAgICAgIGlmICghVUNoYXJhY3Rlci50b1N0cmluZyhpKS5lcXVhbHMobmV3IENoYXJhY3RlcihpKS50b1N0cmluZygpKSkKKyAgICAgICAgICAgIHRyYWNrRGlmZmVyZW5jZShwLCBpLCAidG9TdHJpbmcoKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3Rlci50b1N0cmluZyhpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgQ2hhcmFjdGVyKGkpLnRvU3RyaW5nKCkpOworICAgICAgICAgIGlmIChVQ2hhcmFjdGVyLnRvVGl0bGVDYXNlKGkpICE9IENoYXJhY3Rlci50b1RpdGxlQ2FzZShpKSkKKyAgICAgICAgICAgIHRyYWNrRGlmZmVyZW5jZShwLCBpLCAidG9UaXRsZUNhc2UoKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZWdlci50b0hleFN0cmluZyhVQ2hhcmFjdGVyLnRvVGl0bGVDYXNlKGkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlZ2VyLnRvSGV4U3RyaW5nKENoYXJhY3Rlci50b1RpdGxlQ2FzZShpKSkpOworICAgICAgICAgIGlmIChVQ2hhcmFjdGVyLnRvVXBwZXJDYXNlKGkpICE9IENoYXJhY3Rlci50b1VwcGVyQ2FzZShpKSkKKyAgICAgICAgICAgIHRyYWNrRGlmZmVyZW5jZShwLCBpLCAidG9VcHBlckNhc2UoKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZWdlci50b0hleFN0cmluZyhVQ2hhcmFjdGVyLnRvVXBwZXJDYXNlKGkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlZ2VyLnRvSGV4U3RyaW5nKENoYXJhY3Rlci50b1VwcGVyQ2FzZShpKSkpOworICAgICAgICB9CisgICAgICB9CisgICAgICBzdW1tYXJ5KHApOworICAgICAgcC5jbG9zZSgpOworICAgIH0gCisgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQorICAgIHsKKyAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CisgICAgfQorICB9CisgIAorICAvLyBwcml2YXRlIG1ldGhvZHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgIAorICAvKioKKyAgKiBDb21wYXJpbmcgdHlwZXMKKyAgKiBAcGFyYW0gdWNoYXJ0eXBlIFVDaGFyYWN0ZXIgdHlwZQorICAqIEBwYXJhbSBqY2hhcnR5cGUgamF2YS5sYW5nLkNoYXJhY3RlciB0eXBlCisgICovCisgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gY29tcGFyZVR5cGUoaW50IHVjaGFydHlwZSwgaW50IGpjaGFydHlwZSkKKyAgeworICAgIGlmICh1Y2hhcnR5cGUgPT0gVUNoYXJhY3RlckNhdGVnb3J5LlVOQVNTSUdORUQgJiYgCisgICAgICAgIGpjaGFydHlwZSA9PSBDaGFyYWN0ZXIuVU5BU1NJR05FRCkKKyAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh1Y2hhcnR5cGUgPT0gVUNoYXJhY3RlckNhdGVnb3J5LlVQUEVSQ0FTRV9MRVRURVIgJiYgCisgICAgICAgIGpjaGFydHlwZSA9PSBDaGFyYWN0ZXIuVVBQRVJDQVNFX0xFVFRFUikKKyAgICAgIHJldHVybiB0cnVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIGlmICh1Y2hhcnR5cGUgPT0gVUNoYXJhY3RlckNhdGVnb3J5LkxPV0VSQ0FTRV9MRVRURVIgJiYgCisgICAgICAgIGpjaGFydHlwZSA9PSBDaGFyYWN0ZXIuTE9XRVJDQVNFX0xFVFRFUikKKyAgICAgIHJldHVybiB0cnVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIGlmICh1Y2hhcnR5cGUgPT0gVUNoYXJhY3RlckNhdGVnb3J5LlRJVExFQ0FTRV9MRVRURVIgJiYgCisgICAgICAgIGpjaGFydHlwZSA9PSBDaGFyYWN0ZXIuVElUTEVDQVNFX0xFVFRFUikKKyAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh1Y2hhcnR5cGUgPT0gVUNoYXJhY3RlckNhdGVnb3J5Lk1PRElGSUVSX0xFVFRFUiAmJiAKKyAgICAgICAgamNoYXJ0eXBlID09IENoYXJhY3Rlci5NT0RJRklFUl9MRVRURVIpCisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodWNoYXJ0eXBlID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5PVEhFUl9MRVRURVIgJiYgCisgICAgICAgIGpjaGFydHlwZSA9PSBDaGFyYWN0ZXIuT1RIRVJfTEVUVEVSKQorICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHVjaGFydHlwZSA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuTk9OX1NQQUNJTkdfTUFSSyAmJiAKKyAgICAgICAgamNoYXJ0eXBlID09IENoYXJhY3Rlci5OT05fU1BBQ0lOR19NQVJLKQorICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHVjaGFydHlwZSA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuRU5DTE9TSU5HX01BUksgJiYgCisgICAgICAgIGpjaGFydHlwZSA9PSBDaGFyYWN0ZXIuRU5DTE9TSU5HX01BUkspCisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodWNoYXJ0eXBlID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5DT01CSU5JTkdfU1BBQ0lOR19NQVJLICYmIAorICAgICAgICBqY2hhcnR5cGUgPT0gQ2hhcmFjdGVyLkNPTUJJTklOR19TUEFDSU5HX01BUkspCisgICAgICByZXR1cm4gdHJ1ZTsKKwkgIGlmICh1Y2hhcnR5cGUgPT0gVUNoYXJhY3RlckNhdGVnb3J5LkRFQ0lNQUxfRElHSVRfTlVNQkVSICYmIAorICAgICAgICBqY2hhcnR5cGUgPT0gQ2hhcmFjdGVyLkRFQ0lNQUxfRElHSVRfTlVNQkVSKQorICAgICAgcmV0dXJuIHRydWU7CisJICBpZiAodWNoYXJ0eXBlID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5MRVRURVJfTlVNQkVSICYmIAorICAgICAgICBqY2hhcnR5cGUgPT0gQ2hhcmFjdGVyLkxFVFRFUl9OVU1CRVIpCisgICAgICByZXR1cm4gdHJ1ZTsKKwkgIGlmICh1Y2hhcnR5cGUgPT0gVUNoYXJhY3RlckNhdGVnb3J5Lk9USEVSX05VTUJFUiAmJiAKKyAgICAgICAgamNoYXJ0eXBlID09IENoYXJhY3Rlci5PVEhFUl9OVU1CRVIpCisgICAgICByZXR1cm4gdHJ1ZTsKKwkgIGlmICh1Y2hhcnR5cGUgPT0gVUNoYXJhY3RlckNhdGVnb3J5LlNQQUNFX1NFUEFSQVRPUiAmJiAKKyAgICAgICAgamNoYXJ0eXBlID09IENoYXJhY3Rlci5TUEFDRV9TRVBBUkFUT1IpCisgICAgICByZXR1cm4gdHJ1ZTsKKwkgIGlmICh1Y2hhcnR5cGUgPT0gVUNoYXJhY3RlckNhdGVnb3J5LkxJTkVfU0VQQVJBVE9SICYmIAorICAgICAgICBqY2hhcnR5cGUgPT0gQ2hhcmFjdGVyLkxJTkVfU0VQQVJBVE9SKQorICAgICAgcmV0dXJuIHRydWU7CisJICBpZiAodWNoYXJ0eXBlID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5QQVJBR1JBUEhfU0VQQVJBVE9SICYmIAorICAgICAgICBqY2hhcnR5cGUgPT0gQ2hhcmFjdGVyLlBBUkFHUkFQSF9TRVBBUkFUT1IpCisgICAgICByZXR1cm4gdHJ1ZTsKKwkgIGlmICh1Y2hhcnR5cGUgPT0gVUNoYXJhY3RlckNhdGVnb3J5LkNPTlRST0wgJiYgCisgICAgICAgIGpjaGFydHlwZSA9PSBDaGFyYWN0ZXIuQ09OVFJPTCkKKyAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh1Y2hhcnR5cGUgPT0gVUNoYXJhY3RlckNhdGVnb3J5LkZPUk1BVCAmJiAKKyAgICAgICAgamNoYXJ0eXBlID09IENoYXJhY3Rlci5GT1JNQVQpCisgICAgICByZXR1cm4gdHJ1ZTsKKwkgIGlmICh1Y2hhcnR5cGUgPT0gVUNoYXJhY3RlckNhdGVnb3J5LlBSSVZBVEVfVVNFICYmIAorICAgICAgICBqY2hhcnR5cGUgPT0gQ2hhcmFjdGVyLlBSSVZBVEVfVVNFKQorICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHVjaGFydHlwZSA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuU1VSUk9HQVRFICYmIAorICAgICAgICBqY2hhcnR5cGUgPT0gQ2hhcmFjdGVyLlNVUlJPR0FURSkKKyAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh1Y2hhcnR5cGUgPT0gVUNoYXJhY3RlckNhdGVnb3J5LkRBU0hfUFVOQ1RVQVRJT04gJiYgCisgICAgICAgIGpjaGFydHlwZSA9PSBDaGFyYWN0ZXIuREFTSF9QVU5DVFVBVElPTikKKyAgICAgIHJldHVybiB0cnVlOworCSAgaWYgKHVjaGFydHlwZSA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuU1RBUlRfUFVOQ1RVQVRJT04gJiYgCisgICAgICAgIGpjaGFydHlwZSA9PSBDaGFyYWN0ZXIuU1RBUlRfUFVOQ1RVQVRJT04pCisgICAgICByZXR1cm4gdHJ1ZTsKKwkgIGlmICh1Y2hhcnR5cGUgPT0gVUNoYXJhY3RlckNhdGVnb3J5LkVORF9QVU5DVFVBVElPTiAmJiAKKyAgICAgICAgamNoYXJ0eXBlID09IENoYXJhY3Rlci5FTkRfUFVOQ1RVQVRJT04pCisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodWNoYXJ0eXBlID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5DT05ORUNUT1JfUFVOQ1RVQVRJT04gJiYgCisgICAgICAgIGpjaGFydHlwZSA9PSBDaGFyYWN0ZXIuQ09OTkVDVE9SX1BVTkNUVUFUSU9OKQorICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHVjaGFydHlwZSA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuT1RIRVJfUFVOQ1RVQVRJT04gJiYgCisgICAgICAgIGpjaGFydHlwZSA9PSBDaGFyYWN0ZXIuT1RIRVJfUFVOQ1RVQVRJT04pCisgICAgICByZXR1cm4gdHJ1ZTsKKwkgIGlmICh1Y2hhcnR5cGUgPT0gVUNoYXJhY3RlckNhdGVnb3J5Lk1BVEhfU1lNQk9MICYmIAorICAgICAgICBqY2hhcnR5cGUgPT0gQ2hhcmFjdGVyLk1BVEhfU1lNQk9MKQorICAgICAgcmV0dXJuIHRydWU7CisJICBpZiAodWNoYXJ0eXBlID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5DVVJSRU5DWV9TWU1CT0wgJiYgCisgICAgICAgIGpjaGFydHlwZSA9PSBDaGFyYWN0ZXIuQ1VSUkVOQ1lfU1lNQk9MKQorICAgICAgcmV0dXJuIHRydWU7CisJICBpZiAodWNoYXJ0eXBlID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5NT0RJRklFUl9TWU1CT0wgJiYgCisgICAgICAgIGpjaGFydHlwZSA9PSBDaGFyYWN0ZXIuTU9ESUZJRVJfU1lNQk9MKQorICAgICAgcmV0dXJuIHRydWU7CisJICBpZiAodWNoYXJ0eXBlID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5PVEhFUl9TWU1CT0wgJiYgCisgICAgICAgIGpjaGFydHlwZSA9PSBDaGFyYWN0ZXIuT1RIRVJfU1lNQk9MKQorICAgICAgcmV0dXJuIHRydWU7CisJICBpZiAodWNoYXJ0eXBlID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5JTklUSUFMX1BVTkNUVUFUSU9OICYmIAorICAgICAgICBqY2hhcnR5cGUgPT0gQ2hhcmFjdGVyLlNUQVJUX1BVTkNUVUFUSU9OKQorICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHVjaGFydHlwZSA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuRklOQUxfUFVOQ1RVQVRJT04gJiYgCisgICAgICAgIGpjaGFydHlwZSA9PSBDaGFyYWN0ZXIuRU5EX1BVTkNUVUFUSU9OKQorICAgICAgcmV0dXJuIHRydWU7CisJICAvKmlmICh1Y2hhcnR5cGUgPT0gVUNoYXJhY3RlckNhdGVnb3J5LkdFTkVSQUxfT1RIRVJfVFlQRVMgJiYgCisgICAgICAgIGpjaGFydHlwZSA9PSBDaGFyYWN0ZXIuR0VORVJBTF9PVEhFUl9UWVBFUykKKyAgICAgIHJldHVybiB0cnVlOyovCisgICAgcmV0dXJuIGZhbHNlOworCX0KKwkKKwkvKioKKwkqIERpZmZlcmVuY2Ugd3JpdGluZyB0byBmaWxlCisJKiBAcGFyYW0gZiBmaWxlIG91dHB1dHN0cmVhbQorCSogQHBhcmFtIGNoIGNvZGUgcG9pbnQKKwkqIEBwYXJhbSBtZXRob2QgZm9yIHRlc3RpbmcKKwkqIEBwYXJhbSB1Y2hhcnZhbCBVQ2hhcmFjdGVyIHZhbHVlIGFmdGVyIHJ1bm5pbmcgbWV0aG9kCisJKiBAcGFyYW0gY2hhcnZhbCBDaGFyYWN0ZXIgdmFsdWUgYWZ0ZXIgcnVubmluZyBtZXRob2QKKwkqIEBleGNlcHRpb24gdGhyb3duIHdoZW4gZXJyb3Igb2NjdXIgaW4gd3JpdGluZyB0byBmaWxlCisJKi8KKwlwcml2YXRlIHN0YXRpYyB2b2lkIHRyYWNrRGlmZmVyZW5jZShQcmludFdyaXRlciBmLCBpbnQgY2gsIFN0cmluZyBtZXRob2QsCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHVjaGFydmFsLCBTdHJpbmcgY2hhcnZhbCkKKwkgIHRocm93cyBFeGNlcHRpb24KKwl7CisJICBpZiAobV9oYXNodGFibGVfLmNvbnRhaW5zS2V5KG1ldGhvZCkpCisJICB7CisJICAgIEludGVnZXIgdmFsdWUgPSAoSW50ZWdlciltX2hhc2h0YWJsZV8uZ2V0KG1ldGhvZCk7CisJICAgIG1faGFzaHRhYmxlXy5wdXQobWV0aG9kLCBuZXcgSW50ZWdlcih2YWx1ZS5pbnRWYWx1ZSgpICsgMSkpOworCSAgfQorCSAgZWxzZQorCSAgICBtX2hhc2h0YWJsZV8ucHV0KG1ldGhvZCwgbmV3IEludGVnZXIoMSkpOworCSAgCisJICBTdHJpbmcgdGVtcCA9IEludGVnZXIudG9IZXhTdHJpbmcoY2gpOworCSAgU3RyaW5nQnVmZmVyIHMgPSBuZXcgU3RyaW5nQnVmZmVyKHRlbXApOworCSAgZm9yIChpbnQgaSA9IDA7IGkgPCA2IC0gdGVtcC5sZW5ndGgoKTsgaSArKykKKwkgICAgcy5hcHBlbmQoJyAnKTsKKwkgIHRlbXAgPSBVQ2hhcmFjdGVyLmdldEV4dGVuZGVkTmFtZShjaCk7CisJICBpZiAodGVtcCA9PSBudWxsKQorCSAgICB0ZW1wID0gIiAiOworCSAgcy5hcHBlbmQodGVtcCk7CisJICBmb3IgKGludCBpID0gMDsgaSA8IDczIC0gdGVtcC5sZW5ndGgoKTsgaSArKykKKwkgICAgcy5hcHBlbmQoJyAnKTsKKwkgIAorCSAgcy5hcHBlbmQobWV0aG9kKTsKKwkgIGZvciAoaW50IGkgPSAwOyBpIDwgMjcgLSBtZXRob2QubGVuZ3RoKCk7IGkgKyspCisJICAgIHMuYXBwZW5kKCcgJyk7CisJICBzLmFwcGVuZCh1Y2hhcnZhbCk7CisJICBmb3IgKGludCBpID0gMDsgaSA8IDExIC0gdWNoYXJ2YWwubGVuZ3RoKCk7IGkgKyspCisJICAgIHMuYXBwZW5kKCcgJyk7CisJICBzLmFwcGVuZChjaGFydmFsKTsKKwkgIGYucHJpbnRsbihzLnRvU3RyaW5nKCkpOworCX0KKwkKKwkvKioKKwkqIERvZXMgdXAgYSBzdW1tYXJ5IG9mIHRoZSBkaWZmZXJlbmNlcworCSogQHBhcmFtIGYgZmlsZSBvdXRwdXRzdHJlYW0KKwkqLworCXByaXZhdGUgc3RhdGljIHZvaWQgc3VtbWFyeShQcmludFdyaXRlciBmKQorCXsKKwkgIGYucHJpbnRsbigiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKTsKKwkgIGYucHJpbnRsbigiU3VtbWFyeSBvZiBkaWZmZXJlbmNlcyIpOworCSAgZm9yIChFbnVtZXJhdGlvbiBlID0gbV9oYXNodGFibGVfLmtleXMoKSA7IGUuaGFzTW9yZUVsZW1lbnRzKCkgOykgCisJICB7CisJICAgIFN0cmluZ0J1ZmZlciBtZXRob2QgPSBuZXcgU3RyaW5nQnVmZmVyKChTdHJpbmcpZS5uZXh0RWxlbWVudCgpKTsKKwkgICAgaW50IGNvdW50ID0gKChJbnRlZ2VyKW1faGFzaHRhYmxlXy5nZXQobWV0aG9kLnRvU3RyaW5nKCkpKS5pbnRWYWx1ZSgpOworCSAgICBmb3IgKGludCBpID0gMzAgLSBtZXRob2QubGVuZ3RoKCk7IGkgPiAwOyBpIC0tKQorCSAgICAgIG1ldGhvZC5hcHBlbmQoJyAnKTsKKyAgICAgIGYucHJpbnRsbihtZXRob2QgKyAiICAiICsgY291bnQpOworICAgIH0KKwl9Cit9CisKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9sYW5nL1VDaGFyYWN0ZXJEaXJlY3Rpb25UZXN0LmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvbGFuZy9VQ2hhcmFjdGVyRGlyZWN0aW9uVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2NWJmMTAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvbGFuZy9VQ2hhcmFjdGVyRGlyZWN0aW9uVGVzdC5qYXZhCkBAIC0wLDAgKzEsODQgQEAKKy8qKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMS0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvbGFuZy9VQ2hhcmFjdGVyRGlyZWN0aW9uVGVzdC5qYXZhLHYgJAorICogJERhdGU6IDIwMDIvMDgvMTMgMjE6NTg6MzggJAorICogJFJldmlzaW9uOiAxLjIgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3QubGFuZzsKKworaW1wb3J0IGNvbS5pYm0uaWN1LmRldi50ZXN0LlRlc3RGbXdrOworaW1wb3J0IGNvbS5pYm0uaWN1LmxhbmcuVUNoYXJhY3RlckRpcmVjdGlvbjsKKworLyoqCisqIFRlc3RpbmcgVUNoYXJhY3RlckRpcmVjdGlvbgorKiBAYXV0aG9yIFN5biBXZWUgUXVlaworKiBAc2luY2UgSnVseSAyMiAyMDAyCisqLworcHVibGljIGNsYXNzIFVDaGFyYWN0ZXJEaXJlY3Rpb25UZXN0IGV4dGVuZHMgVGVzdEZtd2sKK3sgICAgCisgICAgLy8gY29uc3RydWN0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvKioKKyAgICAqIFByaXZhdGUgY29uc3RydWN0b3IgdG8gcHJldmVudCBpbml0aWFsaXNhdGlvbgorICAgICovCisgICAgcHVibGljIFVDaGFyYWN0ZXJEaXJlY3Rpb25UZXN0KCkKKyAgICB7CisgICAgfQorICAgIAorICAgIC8vIHB1YmxpYyBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmcpICAKKyAgICB7CisgICAgICAgIHRyeQorICAgICAgICB7CisgICAgICAgICAgICBVQ2hhcmFjdGVyRGlyZWN0aW9uVGVzdCB0ZXN0ID0gbmV3IFVDaGFyYWN0ZXJEaXJlY3Rpb25UZXN0KCk7CisgICAgICAgICAgICB0ZXN0LnJ1bihhcmcpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkKKyAgICAgICAgeworICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAqIEdldHMgdGhlIG5hbWUgb2YgdGhlIGFyZ3VtZW50IGNhdGVnb3J5CisgICAgKiBAcGFyYW0gY2F0ZWdvcnkgdG8gcmV0cmlldmUgbmFtZQorICAgICogQHJldHVybiBjYXRlZ29yeSBuYW1lCisgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0VG9TdHJpbmcoKQorICAgIHsKKyAgICAgICAgU3RyaW5nIG5hbWVbXSA9IHsiTGVmdC10by1SaWdodCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIlJpZ2h0LXRvLUxlZnQiLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAiRXVyb3BlYW4gTnVtYmVyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiRXVyb3BlYW4gTnVtYmVyIFNlcGFyYXRvciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIkV1cm9wZWFuIE51bWJlciBUZXJtaW5hdG9yIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiQXJhYmljIE51bWJlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbW1vbiBOdW1iZXIgU2VwYXJhdG9yIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiUGFyYWdyYXBoIFNlcGFyYXRvciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIlNlZ21lbnQgU2VwYXJhdG9yIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiV2hpdGVzcGFjZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIk90aGVyIE5ldXRyYWxzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiTGVmdC10by1SaWdodCBFbWJlZGRpbmciLAorICAgICAgICAgICAgICAgICAgICAgICAgICJMZWZ0LXRvLVJpZ2h0IE92ZXJyaWRlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiUmlnaHQtdG8tTGVmdCBBcmFiaWMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICJSaWdodC10by1MZWZ0IEVtYmVkZGluZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIlJpZ2h0LXRvLUxlZnQgT3ZlcnJpZGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICJQb3AgRGlyZWN0aW9uYWwgRm9ybWF0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiTm9uLVNwYWNpbmcgTWFyayIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIkJvdW5kYXJ5IE5ldXRyYWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICJVbmFzc2lnbmVkIn07CisgICAgICAgIGZvciAoaW50IGkgPSBVQ2hhcmFjdGVyRGlyZWN0aW9uLkxFRlRfVE9fUklHSFQ7IAorICAgICAgICAgICAgICAgICBpIDwgVUNoYXJhY3RlckRpcmVjdGlvbi5DSEFSX0RJUkVDVElPTl9DT1VOVDsgaSArKykgeworICAgICAgICAgICAgIGlmICghVUNoYXJhY3RlckRpcmVjdGlvbi50b1N0cmluZyhpKS5lcXVhbHMobmFtZVtpXSkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRXJyb3IgdG9TdHJpbmcgZm9yIGRpcmVjdGlvbiAiICsgaSArICIgZXhwZWN0ZWQgIiArCisgICAgICAgICAgICAgICAgICAgICAgbmFtZVtpXSk7CisgICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2xhbmcvVUNoYXJhY3Rlckl0ZXJhdG9yVGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2xhbmcvVUNoYXJhY3Rlckl0ZXJhdG9yVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxZjY5ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvbGFuZy9VQ2hhcmFjdGVySXRlcmF0b3JUZXN0LmphdmEKQEAgLTAsMCArMSwxMzYgQEAKKy8qKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvbGFuZy9BdHRpYy9VQ2hhcmFjdGVySXRlcmF0b3JUZXN0LmphdmEsdiAkIAorKiAkRGF0ZTogMjAwMi8wNi8yMCAwMToxNjowMCAkIAorKiAkUmV2aXNpb246IDEuMiAkCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0Lmxhbmc7CisKKworaW1wb3J0IGNvbS5pYm0uaWN1LmRldi50ZXN0LlRlc3RGbXdrOworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuVW5pY29kZUNoYXJhY3Rlckl0ZXJhdG9yOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuVVRGMTY7CisKKy8qKgorKiBUZXN0aW5nIGNsYXNzIGZvciBVQ2hhcmFjdGVySXRlcmF0b3IKKyogQGF1dGhvciBTeW4gV2VlIFF1ZWsKKyogQHNpbmNlIGFwcmlsIDAyIDIwMDIKKyovCitwdWJsaWMgZmluYWwgY2xhc3MgVUNoYXJhY3Rlckl0ZXJhdG9yVGVzdCBleHRlbmRzIFRlc3RGbXdrCit7IAorCS8vIGNvbnN0cnVjdG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIAorCS8qKgorCSAqIENvbnN0cnVjdG9yCisJICovCisgIAlwdWJsaWMgVUNoYXJhY3Rlckl0ZXJhdG9yVGVzdCgpCisgIAl7CisgIAl9CisgIAorICAJLy8gcHVibGljIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgCisgIAkvKioKKyAgCSogVGVzdGluZyBjbG9uaW5nCisgIAkqLworICAJcHVibGljIHZvaWQgVGVzdENsb25lKCkKKyAgCXsKKyAgICAgCSBVbmljb2RlQ2hhcmFjdGVySXRlcmF0b3IgaXRlcmF0b3IgPSBuZXcgVW5pY29kZUNoYXJhY3Rlckl0ZXJhdG9yKCJ0ZXN0aW5nIik7CisgICAgIAkgVW5pY29kZUNoYXJhY3Rlckl0ZXJhdG9yIGNsb25lZCA9IChVbmljb2RlQ2hhcmFjdGVySXRlcmF0b3IpaXRlcmF0b3IuY2xvbmUoKTsKKyAgICAgCSBjaGFyIGNvbXBsZXRlZCA9IDA7CisgICAgIAkgd2hpbGUgKGNvbXBsZXRlZCAhPSBVbmljb2RlQ2hhcmFjdGVySXRlcmF0b3IuRE9ORSkgeworICAgICAJIAljb21wbGV0ZWQgPSBpdGVyYXRvci5uZXh0KCk7CisgICAgIAkgCWlmIChjb21wbGV0ZWQgIT0gY2xvbmVkLm5leHQoKSkgeworICAgICAJIAkJZXJybG4oIkNsb25lZCBvcGVyYXRpb24gZmFpbGVkIik7CisgICAgIAkgCX0KKyAgICAgCSB9CisgIAl9CisgIAkKKyAgCS8qKgorICAJICogVGVzdGluZyBpdGVyYXRpb24KKyAgCSAqLworICAJcHVibGljIHZvaWQgVGVzdEl0ZXJhdGlvbigpCisgIAl7CisgIAkJVW5pY29kZUNoYXJhY3Rlckl0ZXJhdG9yIGl0ZXJhdG9yICA9IG5ldyBVbmljb2RlQ2hhcmFjdGVySXRlcmF0b3IoCisgIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJVEVSQVRJT05fU1RSSU5HXyk7CisgIAkJVW5pY29kZUNoYXJhY3Rlckl0ZXJhdG9yIGl0ZXJhdG9yMiA9IG5ldyBVbmljb2RlQ2hhcmFjdGVySXRlcmF0b3IoCisgIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJVEVSQVRJT05fU1RSSU5HXyk7CisgIAkJaWYgKGl0ZXJhdG9yLmZpcnN0KCkgIT0gSVRFUkFUSU9OX1NUUklOR18uY2hhckF0KDApKSB7CisgIAkJCWVycmxuKCJJdGVyYXRvciBmYWlsZWQgcmV0cmlldmluZyBmaXJzdCBjaGFyYWN0ZXIiKTsKKyAgCQl9CisgIAkJaWYgKGl0ZXJhdG9yLmxhc3QoKSAhPSBJVEVSQVRJT05fU1RSSU5HXy5jaGFyQXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJVEVSQVRJT05fU1RSSU5HXy5sZW5ndGgoKSAtIDEpKSB7CisgIAkJCWVycmxuKCJJdGVyYXRvciBmYWlsZWQgcmV0cmlldmluZyBsYXN0IGNoYXJhY3RlciIpOworICAJCX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAJCWlmIChpdGVyYXRvci5nZXRCZWdpbkluZGV4KCkgIT0gMCB8fCAKKyAgCQkgICAgaXRlcmF0b3IuZ2V0RW5kSW5kZXgoKSAhPSBJVEVSQVRJT05fU1RSSU5HXy5sZW5ndGgoKSkgeworICAJCSAgICBlcnJsbigiSXRlcmF0b3IgZmFpbGVkIGRldGVybWluaW5nIGJlZ2luIGFuZCBlbmQgaW5kZXgiKTsKKyAgCQl9ICAKKyAgCQlpdGVyYXRvcjIuc2V0SW5kZXgoMCk7CisgIAkJaXRlcmF0b3Iuc2V0SW5kZXgoMCk7CisgIAkJaW50IGNoID0gMDsKKyAgCQl3aGlsZSAoY2ggIT0gVW5pY29kZUNoYXJhY3Rlckl0ZXJhdG9yLkRPTkVfQ09ERVBPSU5UKSB7CisgIAkJCWludCBpbmRleCA9IGl0ZXJhdG9yMi5nZXRJbmRleCgpOworICAJCQljaCA9IGl0ZXJhdG9yMi5uZXh0Q29kZVBvaW50KCk7CisgIAkJCWlmIChpbmRleCAhPSBJVEVSQVRJT05fU1VQUExFTUVOVEFSWV9JTkRFWCkgeworICAJCQkJaWYgKGNoICE9IChpbnQpaXRlcmF0b3IubmV4dCgpICYmIAorICAJCQkJICAgIGNoICE9IFVuaWNvZGVDaGFyYWN0ZXJJdGVyYXRvci5ET05FX0NPREVQT0lOVCkgeworICAJCQkJCWVycmxuKCJFcnJvciBtaXNtYXRjaCBpbiBuZXh0KCkgYW5kIG5leHRDb2RlUG9pbnQoKSIpOyAKKyAgCQkJCX0KKyAgCQkJfQorICAJCQllbHNlIHsKKyAgCQkJCWlmIChVVEYxNi5nZXRMZWFkU3Vycm9nYXRlKGNoKSAhPSBpdGVyYXRvci5uZXh0KCkgfHwKKyAgCQkJCSAgICBVVEYxNi5nZXRUcmFpbFN1cnJvZ2F0ZShjaCkgIT0gaXRlcmF0b3IubmV4dCgpKSB7CisgIAkJCQkgICAgZXJybG4oIkVycm9yIG1pc21hdGNoIGluIG5leHQgYW5kIG5leHRDb2RlUG9pbnQgZm9yICIgKworICAJCQkJICAgICAgICAgICJzdXBwbGVtZW50YXJ5IGNoYXJhY3RlcnMiKTsKKyAgCQkJCX0KKyAgCQkJfQorICAJCX0KKyAgCQlpdGVyYXRvci5zZXRJbmRleChJVEVSQVRJT05fU1RSSU5HXy5sZW5ndGgoKSk7CisgIAkJaXRlcmF0b3IyLnNldEluZGV4KElURVJBVElPTl9TVFJJTkdfLmxlbmd0aCgpKTsKKyAgCQl3aGlsZSAoY2ggIT0gVW5pY29kZUNoYXJhY3Rlckl0ZXJhdG9yLkRPTkVfQ09ERVBPSU5UKSB7CisgIAkJCWludCBpbmRleCA9IGl0ZXJhdG9yMi5nZXRJbmRleCgpOworICAJCQljaCA9IGl0ZXJhdG9yMi5wcmV2aW91c0NvZGVQb2ludCgpOworICAJCQlpZiAoaW5kZXggIT0gSVRFUkFUSU9OX1NVUFBMRU1FTlRBUllfSU5ERVgpIHsKKyAgCQkJCWlmIChjaCAhPSAoaW50KWl0ZXJhdG9yLnByZXZpb3VzKCkgJiYgCisgIAkJCQkgICAgY2ggIT0gVW5pY29kZUNoYXJhY3Rlckl0ZXJhdG9yLkRPTkVfQ09ERVBPSU5UKSB7CisgIAkJCQkJZXJybG4oIkVycm9yIG1pc21hdGNoIGluIHByZXZpb3VzKCkgYW5kICIgKworICAJCQkJCSAgICAgICJwcmV2aW91c0NvZGVQb2ludCgpIik7IAorICAJCQkJfQorICAJCQl9CisgIAkJCWVsc2UgeworICAJCQkJaWYgKFVURjE2LmdldExlYWRTdXJyb2dhdGUoY2gpICE9IGl0ZXJhdG9yLnByZXZpb3VzKCkgfHwgCisgIAkJCQkgICAgVVRGMTYuZ2V0VHJhaWxTdXJyb2dhdGUoY2gpICE9IGl0ZXJhdG9yLnByZXZpb3VzKCkpIHsKKyAgCQkJCSAgICBlcnJsbigiRXJyb3IgbWlzbWF0Y2ggaW4gcHJldmlvdXMgYW5kICIgKworICAJCQkJICAgICAgICAgICJwcmV2aW91c0NvZGVQb2ludCBmb3Igc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXJzIik7CisgIAkJCQl9CisgIAkJCX0KKyAgCQl9CisgIAl9CisgICAgCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJnKQorICAgIHsKKyAgICAgICAgdHJ5CisgICAgICAgIHsKKyAgICAgICAgICAgIFVDaGFyYWN0ZXJJdGVyYXRvclRlc3QgdGVzdCA9IG5ldyBVQ2hhcmFjdGVySXRlcmF0b3JUZXN0KCk7CisgICAgICAgICAgICB0ZXN0LnJ1bihhcmcpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkKKyAgICAgICAgeworICAgICAgICAJZS5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvLyBwcml2YXRlIGRhdGEgbWVtYmVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgSVRFUkFUSU9OX1NUUklOR18gPQorCQkJCQkgICAgICAgICAgICAgICAgICAgICJUZXN0aW5nIDEgMiAzIFx1ZDgwMFx1ZGMwMCA0NTYiOworCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBJVEVSQVRJT05fU1VQUExFTUVOVEFSWV9JTkRFWCA9IDE0OyAgICAKK30KKwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2xhbmcvVUNoYXJhY3RlclRlc3QuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9sYW5nL1VDaGFyYWN0ZXJUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYzFkZWQ5ZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9sYW5nL1VDaGFyYWN0ZXJUZXN0LmphdmEKQEAgLTAsMCArMSwxODU4IEBACisvKioKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2xhbmcvVUNoYXJhY3RlclRlc3QuamF2YSx2ICQgCisqICREYXRlOiAyMDAyLzEyLzExIDE5OjQxOjAyICQgCisqICRSZXZpc2lvbjogMS40NiAkCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0Lmxhbmc7CisKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYudGVzdC5UZXN0Rm13azsKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYudGVzdC5UZXN0VXRpbDsKK2ltcG9ydCBjb20uaWJtLmljdS5sYW5nLlVDaGFyYWN0ZXI7CitpbXBvcnQgY29tLmlibS5pY3UubGFuZy5VQ2hhcmFjdGVyQ2F0ZWdvcnk7CitpbXBvcnQgY29tLmlibS5pY3UubGFuZy5VQ2hhcmFjdGVyRGlyZWN0aW9uOworaW1wb3J0IGNvbS5pYm0uaWN1LmxhbmcuVVByb3BlcnR5OworaW1wb3J0IGNvbS5pYm0uaWN1LmxhbmcuVVNjcmlwdDsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0LlVURjE2OworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuVW5pY29kZVNldDsKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLlJhbmdlVmFsdWVJdGVyYXRvcjsKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLlZhbHVlSXRlcmF0b3I7CitpbXBvcnQgY29tLmlibS5pY3UudXRpbC5WZXJzaW9uSW5mbzsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLlVDaGFyYWN0ZXJOYW1lOworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuVXRpbGl0eTsKKworaW1wb3J0IGphdmEuaW8uQnVmZmVyZWRSZWFkZXI7CitpbXBvcnQgamF2YS51dGlsLkFycmF5czsKKy8qKgorKiBUZXN0aW5nIGNsYXNzIGZvciBVQ2hhcmFjdGVyCisqIE1vc3RseSBmb2xsb3dpbmcgdGhlIHRlc3QgY2FzZXMgZm9yIElDVQorKiBAYXV0aG9yIFN5biBXZWUgUXVlaworKiBAc2luY2Ugbm92IDA0IDIwMDAKKyovCitwdWJsaWMgZmluYWwgY2xhc3MgVUNoYXJhY3RlclRlc3QgZXh0ZW5kcyBUZXN0Rm13aworeyAKKyAgCS8vIHByaXZhdGUgdmFyaWFibGVzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAKKyAgCS8qKgorICAJKiBJQ1U0SiBkYXRhIHZlcnNpb24gbnVtYmVyCisgIAkqLworICAJcHJpdmF0ZSBmaW5hbCBWZXJzaW9uSW5mbyBWRVJTSU9OXyA9IFZlcnNpb25JbmZvLmdldEluc3RhbmNlKCIzLjIuMC4wIik7CisgIAorICAJLy8gY29uc3RydWN0b3IgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgIAorICAJLyoqCisgIAkqIENvbnN0cnVjdG9yCisgIAkqLworICAJcHVibGljIFVDaGFyYWN0ZXJUZXN0KCkKKyAgCXsKKyAgCX0KKyAgCisgIAkvLyBwdWJsaWMgbWV0aG9kcyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgCisgCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZykKKyAgCXsKKyAgICAJdHJ5CisgICAgCXsKKyAgICAgIAkJVUNoYXJhY3RlclRlc3QgdGVzdCA9IG5ldyBVQ2hhcmFjdGVyVGVzdCgpOworICAgICAgICAgICAgdGVzdC5ydW4oYXJnKTsKKyAgICAJfQorICAgIAljYXRjaCAoRXhjZXB0aW9uIGUpCisgICAgCXsKKyAgICAgIAllLnByaW50U3RhY2tUcmFjZSgpOworICAgIAl9CisgIAl9CisgIAorICAJLyoqCisgIAkqIFRlc3RpbmcgdGhlIGxldHRlciBhbmQgbnVtYmVyIGRldGVybWluYXRpb24gaW4gVUNoYXJhY3RlcgorICAJKi8KKyAgCXB1YmxpYyB2b2lkIFRlc3RMZXR0ZXJOdW1iZXIoKQorICAJeworICAgIAlmb3IgKGludCBpID0gMHgwMDQxOyBpIDwgMHgwMDVCOyBpICsrKSAKKyAgICAgIAlpZiAoIVVDaGFyYWN0ZXIuaXNMZXR0ZXIoaSkpCisgICAgICAgIAllcnJsbigiRkFJTCBcXHUiICsgaGV4KGkpICsgIiBleHBlY3RlZCB0byBiZSBhIGxldHRlciIpOworICAgICAgICAKKyAgICAJZm9yIChpbnQgaSA9IDB4MDY2MDsgaSA8IDB4MDY2QTsgaSArKykgCisgICAgICAJaWYgKFVDaGFyYWN0ZXIuaXNMZXR0ZXIoaSkpCisgICAgICAgIAllcnJsbigiRkFJTCBcXHUiICsgaGV4KGkpICsgIiBleHBlY3RlZCBub3QgdG8gYmUgYSBsZXR0ZXIiKTsKKyAgICAKKyAgICAJZm9yIChpbnQgaSA9IDB4MDY2MDsgaSA8IDB4MDY2QTsgaSArKykgCisgICAgICAJaWYgKCFVQ2hhcmFjdGVyLmlzRGlnaXQoaSkpCisgICAgICAgIAllcnJsbigiRkFJTCBcXHUiICsgaGV4KGkpICsgIiBleHBlY3RlZCB0byBiZSBhIGRpZ2l0Iik7CisgICAgCisgICAgCWZvciAoaW50IGkgPSAweDAwNDE7IGkgPCAweDAwNUI7IGkgKyspIAorICAgICAgCQlpZiAoIVVDaGFyYWN0ZXIuaXNMZXR0ZXJPckRpZ2l0KGkpKQorICAgICAgICAJCWVycmxuKCJGQUlMIFxcdSIgKyBoZXgoaSkgKyAiIGV4cGVjdGVkIG5vdCB0byBiZSBhIGRpZ2l0Iik7CisgICAgICAgIAorICAgIAlmb3IgKGludCBpID0gMHgwNjYwOyBpIDwgMHgwNjZBOyBpICsrKSAKKyAgICAgIAkJaWYgKCFVQ2hhcmFjdGVyLmlzTGV0dGVyT3JEaWdpdChpKSkKKyAgICAgICAgCQllcnJsbigiRkFJTCBcXHUiICsgaGV4KGkpICsgCisgICAgICAgICAgICAgIAkJImV4cGVjdGVkIHRvIGJlIGVpdGhlciBhIGxldHRlciBvciBhIGRpZ2l0Iik7CisJfQorCisgIAkvKioKKyAgCSogVGVzdHMgZm9yIHNwYWNlIGRldGVybWluYXRpb24gaW4gVUNoYXJhY3RlcgorICAJKi8KKyAgCXB1YmxpYyB2b2lkIFRlc3RTcGFjZXMoKQorICAJeworICAgIAlpbnQgc3BhY2VzW10gPSB7MHgwMDIwLCAweDAwMDBhMCwgMHgwMDIwMDAsIDB4MDAyMDAxLCAweDAwMjAwNX07CisgICAgCWludCBub25zcGFjZXNbXSA9IHsweDYxLCAweDAwNjIsIDB4MDA2MywgMHgwMDY0LCAweDAwNzR9OworICAgIAlpbnQgd2hpdGVzcGFjZXNbXSA9IHsweDIwMDgsIDB4MDAyMDA5LCAweDAwMjAwYSwgMHgwMDAwMWMsIDB4MDAwMDBjfTsKKyAgICAJaW50IG5vbndoaXRlc3BhY2VzW10gPSB7MHg2MSwgMHgwMDYyLCAweDAwM2MsIDB4MDAyOCwgMHgwMDNmfTsKKyAgICAgICAgICAgICAgICAgICAgICAgCisgICAgCWludCBzaXplID0gc3BhY2VzLmxlbmd0aDsKKyAgICAJZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpICsrKQorICAgIAl7CisgICAgICAJCWlmICghVUNoYXJhY3Rlci5pc1NwYWNlQ2hhcihzcGFjZXNbaV0pKQorICAgICAgCQl7CisgICAgICAgIAkJZXJybG4oIkZBSUwgXFx1IiArIGhleChzcGFjZXNbaV0pICsgCisgICAgICAgICAgICAgIAkJIiBleHBlY3RlZCB0byBiZSBhIHNwYWNlIGNoYXJhY3RlciIpOworICAgICAgICAJCWJyZWFrOworICAgICAgCQl9CisgICAgICAKKyAgICAgIAkJaWYgKFVDaGFyYWN0ZXIuaXNTcGFjZUNoYXIobm9uc3BhY2VzW2ldKSkKKyAgICAgIAkJeworICAgICAgICAJCWVycmxuKCJGQUlMIFxcdSIgKyBoZXgobm9uc3BhY2VzW2ldKSArIAorICAgICAgICAgIAkgICAgIiBleHBlY3RlZCBub3QgdG8gYmUgc3BhY2UgY2hhcmFjdGVyIik7CisgICAgICAgIAkJYnJlYWs7CisgICAgICAJCX0KKyAKKyAgICAgCSAJaWYgKCFVQ2hhcmFjdGVyLmlzV2hpdGVzcGFjZSh3aGl0ZXNwYWNlc1tpXSkpCisgICAgICAJCXsKKyAgICAgICAgCQllcnJsbigiRkFJTCBcXHUiICsgaGV4KHdoaXRlc3BhY2VzW2ldKSArIAorICAgICAgICAgICAgICAJCQkiIGV4cGVjdGVkIHRvIGJlIGEgd2hpdGUgc3BhY2UgY2hhcmFjdGVyIik7CisgICAgICAgIAkJYnJlYWs7CisgICAgICAJCX0KKyAgICAgIAkJaWYgKFVDaGFyYWN0ZXIuaXNXaGl0ZXNwYWNlKG5vbndoaXRlc3BhY2VzW2ldKSkKKyAgICAgIAkJeworICAgICAgIAkgCQllcnJsbigiRkFJTCBcXHUiICsgaGV4KG5vbndoaXRlc3BhY2VzW2ldKSArIAorICAgICAgICAgICAgICAJCQkJIiBleHBlY3RlZCBub3QgdG8gYmUgYSBzcGFjZSBjaGFyYWN0ZXIiKTsKKyAgICAgICAgCQlicmVhazsKKyAgICAgIAkJfQorICAgICAgCQlsb2dsbigiT2sgICAgXFx1IiArIGhleChzcGFjZXNbaV0pICsgIiBhbmQgXFx1IiArIAorICAgICAgCQkgICAgICBoZXgobm9uc3BhY2VzW2ldKSArICIgYW5kIFxcdSIgKyBoZXgod2hpdGVzcGFjZXNbaV0pICsgCisgICAgICAJCSAgICAgICIgYW5kIFxcdSIgKyBoZXgobm9ud2hpdGVzcGFjZXNbaV0pKTsKKyAgICAJfQorICAJfQorICAKKyAgCS8qKgorICAJKiBUZXN0cyBmb3IgZGVmaW5lZCBhbmQgdW5kZWZpbmVkIGNoYXJhY3RlcnMKKyAgCSovCisgIAlwdWJsaWMgdm9pZCBUZXN0RGVmaW5lZCgpCisgIAl7CisgICAgCWludCB1bmRlZmluZWRbXSA9IHsweGZmZjEsIDB4ZmZmNywgMHhmYTZifTsKKyAgICAJaW50IGRlZmluZWRbXSA9IHsweDUyM0UsIDB4MDA0Zjg4LCAweDAwZmZmZH07CisgICAgCisgICAgCWludCBzaXplID0gdW5kZWZpbmVkLmxlbmd0aDsKKyAgICAJZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpICsrKSAKKyAgICAJeworICAgICAgCQlpZiAoVUNoYXJhY3Rlci5pc0RlZmluZWQodW5kZWZpbmVkW2ldKSkKKyAgICAgIAkJeworICAgICAgICAJCWVycmxuKCJGQUlMIFxcdSIgKyBoZXgodW5kZWZpbmVkW2ldKSArIAorICAgICAgICAgIAkgICAgCQkJIiBleHBlY3RlZCBub3QgdG8gYmUgZGVmaW5lZCIpOworICAgICAgICAJCWJyZWFrOworICAgICAgCQl9CisgICAgICAJCWlmICghVUNoYXJhY3Rlci5pc0RlZmluZWQoZGVmaW5lZFtpXSkpCisgICAgICAJCXsKKyAgICAgICAgCQllcnJsbigiRkFJTCBcXHUiICsgaGV4KGRlZmluZWRbaV0pICsgIiBleHBlY3RlZCBkZWZpbmVkIik7CisgICAgICAgIAkJYnJlYWs7CisgICAgICAJCX0KKyAgICAJfQorICAJfQorICAKKyAgCS8qKgorICAJKiBUZXN0cyBmb3IgYmFzZSBjaGFyYWN0ZXJzIGFuZCB0aGVpciBjZWxsd2lkdGgKKyAgCSovCisgIAlwdWJsaWMgdm9pZCBUZXN0QmFzZSgpCisgIAl7CisgICAgCWludCBiYXNlW10gPSB7MHgwMDYxLCAweDAwMDAzMSwgMHgwMDAzZDJ9OworICAgIAlpbnQgbm9uYmFzZVtdID0gezB4MDAyQiwgMHgwMDAwMjAsIDB4MDAyMDNCfTsgICAgCisgICAgCWludCBzaXplID0gYmFzZS5sZW5ndGg7CisgICAgCWZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSArKykgCisgICAgCXsKKyAgICAgIAkJaWYgKFVDaGFyYWN0ZXIuaXNCYXNlRm9ybShub25iYXNlW2ldKSkKKyAgICAgIAkJeworICAgICAgIAkJIAllcnJsbigiRkFJTCBcXHUiICsgaGV4KG5vbmJhc2VbaV0pICsgCisgICAgICAgICAgICAgIAkJCQkiIGV4cGVjdGVkIG5vdCB0byBiZSBhIGJhc2UgY2hhcmFjdGVyIik7CisgICAgICAgIAkJYnJlYWs7CisgICAgICAJCX0KKyAgICAgIAkJaWYgKCFVQ2hhcmFjdGVyLmlzQmFzZUZvcm0oYmFzZVtpXSkpCisgICAgICAJCXsKKyAgICAgICAgCQllcnJsbigiRkFJTCBcXHUiICsgaGV4KGJhc2VbaV0pICsgCisgICAgICAgIAkJICAgICAgIiBleHBlY3RlZCB0byBiZSBhIGJhc2UgY2hhcmFjdGVyIik7CisgICAgICAgIAkJYnJlYWs7CisgICAgICAJCX0KKyAgICAJfQorICAJfQorICAgIAorICAJLyoqCisgIAkqIFRlc3RzIGZvciBkaWdpdCBjaGFyYWN0ZXJzIAorICAJKi8KKyAgCXB1YmxpYyB2b2lkIFRlc3REaWdpdHMoKQorICAJeworICAgIAlpbnQgZGlnaXRzW10gPSB7MHgwMDMwLCAweDAwMDY2MiwgMHgwMDBGMjMsIDB4MDAwRUQ1LCAweDAwMjE2MH07CisgICAgCisgICAgCS8vc3BlY2lhbCBjaGFyYWN0ZXJzIG5vdCBpbiB0aGUgcHJvcGVydGllcyB0YWJsZQorICAgICAJaW50IGRpZ2l0czJbXSA9IHsweDMwMDcsIDB4MDA0ZTAwLCAweDAwNGU4YywgMHgwMDRlMDksIDB4MDA1NmQ4LCAKKyAgICAgCQkgICAgICAgICAgICAgMHgwMDRlOTQsIDB4MDA1MTZkLCAweDRlMDMsIDB4MDA1MTZiLCAweDAwNGU1ZH07IAorICAgIAlpbnQgbm9uZGlnaXRzW10gPSB7MHgwMDEwLCAweDAwMDA0MSwgMHgwMDAxMjIsIDB4MDA2OEZFfTsKKyAgICAKKyAgICAJaW50IGRpZ2l0dmFsdWVzW10gPSB7MCwgMiwgMywgNSwgMX07CisgICAgCWludCBkaWdpdHZhbHVlczJbXSA9IHswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5fTsgICAgIAorICAgIAorICAgIAlpbnQgc2l6ZSAgPSBkaWdpdHMubGVuZ3RoOworICAgIAlmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkgKyspIAorICAgICAgCQlpZiAoVUNoYXJhY3Rlci5pc0RpZ2l0KGRpZ2l0c1tpXSkgJiYgCisgICAgICAgICAgCQlVQ2hhcmFjdGVyLmRpZ2l0KGRpZ2l0c1tpXSkgIT0gZGlnaXR2YWx1ZXNbaV0pIAorICAgICAgCQl7CisgICAgICAgCQkgCWVycmxuKCJGQUlMIFxcdSIgKyBoZXgoZGlnaXRzW2ldKSArIAorICAgICAgICAgICAgICAJCQkiIGV4cGVjdGVkIGRpZ2l0IHdpdGggdmFsdWUgIiArIGRpZ2l0dmFsdWVzW2ldKTsKKyAgICAgICAgCQlicmVhazsKKyAgICAgIAkJfQorICAgIAorICAgIAlzaXplID0gbm9uZGlnaXRzLmxlbmd0aDsKKyAgICAJZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpICsrKQorICAgICAgCQlpZiAoVUNoYXJhY3Rlci5pc0RpZ2l0KG5vbmRpZ2l0c1tpXSkpCisgICAgICAJCXsKKyAgICAgICAgCQllcnJsbigiRkFJTCBcXHUiICsgaGV4KG5vbmRpZ2l0c1tpXSkgKyAiIGV4cGVjdGVkIG5vbmRpZ2l0Iik7CisgICAgICAgIAkJYnJlYWs7CisgICAgICAJCX0KKyAgICAgIAorICAgIAlzaXplID0gZGlnaXRzMi5sZW5ndGg7CisgICAgCWZvciAoaW50IGkgPSAwOyBpIDwgMTA7IGkgKyspIAorICAgICAgCQlpZiAoVUNoYXJhY3Rlci5pc0RpZ2l0KGRpZ2l0czJbaV0pICYmCisgICAgICAgICAgCQlVQ2hhcmFjdGVyLmRpZ2l0KGRpZ2l0czJbaV0pICE9IGRpZ2l0dmFsdWVzMltpXSkgCisgICAgICAJCXsKKyAgICAgICAgCQllcnJsbigiRkFJTCBcXHUiICsgaGV4KGRpZ2l0czJbaV0pICsgCisgICAgICAgICAgICAgIAkJIiBleHBlY3RlZCBkaWdpdCB3aXRoIHZhbHVlICIgKyBkaWdpdHZhbHVlczJbaV0pOworICAgICAgICAJCWJyZWFrOworICAgICAgCQl9CisgIAl9CisgIAorICAJLyoqCisgICAJKiAgVGVzdHMgZm9yIG51bWVyaWMgY2hhcmFjdGVycworICAgCSovCisgIAlwdWJsaWMgdm9pZCBUZXN0TnVtZXJpYygpCisgIAl7CisJCWZvciAoaW50IGkgPSAnMCc7IGkgPCAnOSc7IGkgKyspIHsKKwkJCWludCBuMSA9IFVDaGFyYWN0ZXIuZ2V0TnVtZXJpY1ZhbHVlKGkpOworCQkJZG91YmxlIG4yID0gVUNoYXJhY3Rlci5nZXRVbmljb2RlTnVtZXJpY1ZhbHVlKGkpOworCQkJaWYgKG4xICE9IG4yIHx8ICBuMSAhPSAoaSAtICcwJykpIHsKKwkJCQllcnJsbigiTnVtZXJpYyB2YWx1ZSBvZiAiICsgKGNoYXIpaSArICIgZXhwZWN0ZWQgdG8gYmUgIiArCisJCQkJICAgICAgKGkgLSAnMCcpKTsKKwkJCX0KKwkJfQorCQlmb3IgKGludCBpID0gJ0EnOyBpIDwgJ0YnOyBpICsrKSB7CisJCQlpbnQgbjEgPSBVQ2hhcmFjdGVyLmdldE51bWVyaWNWYWx1ZShpKTsKKwkJCWRvdWJsZSBuMiA9IFVDaGFyYWN0ZXIuZ2V0VW5pY29kZU51bWVyaWNWYWx1ZShpKTsKKwkJCWlmIChuMiAhPSBVQ2hhcmFjdGVyLk5PX05VTUVSSUNfVkFMVUUgfHwgIG4xICE9IChpIC0gJ0EnICsgMTApKSB7CisJCQkJZXJybG4oIk51bWVyaWMgdmFsdWUgb2YgIiArIChjaGFyKWkgKyAiIGV4cGVjdGVkIHRvIGJlICIgKworCQkJCSAgICAgIChpIC0gJ0EnICsgMTApKTsKKwkJCX0KKwkJfQorCQlmb3IgKGludCBpID0gMHhGRjIxOyBpIDwgMHhGRjI2OyBpICsrKSB7CisJCQkvLyB0ZXN0aW5nIGZ1bGwgd2lkZXRoIGxhdGluIGNoYXJhY3RlcnMgQS1GCisJCQlpbnQgbjEgPSBVQ2hhcmFjdGVyLmdldE51bWVyaWNWYWx1ZShpKTsKKwkJCWRvdWJsZSBuMiA9IFVDaGFyYWN0ZXIuZ2V0VW5pY29kZU51bWVyaWNWYWx1ZShpKTsKKwkJCWlmIChuMiAhPSBVQ2hhcmFjdGVyLk5PX05VTUVSSUNfVkFMVUUgfHwgIG4xICE9IChpIC0gMHhGRjIxICsgMTApKSB7CisJCQkJZXJybG4oIk51bWVyaWMgdmFsdWUgb2YgIiArIChjaGFyKWkgKyAiIGV4cGVjdGVkIHRvIGJlICIgKworCQkJCSAgICAgIChpIC0gMHhGRjIxICsgMTApKTsKKwkJCX0KKwkJfQorCQkvLyB0ZXN0aW5nIGhhbiBudW1iZXJzCisJCWludCBoYW5bXSA9IHsweDk2ZjYsIDAsIDB4NThmOSwgMSwgMHg4Y2IzLCAyLCAweDUzYzMsIDMsIAorCQkJICAgICAgICAgMHg4MDg2LCA0LCAweDRmMGQsIDUsIDB4OTY3OCwgNiwgMHg2N2QyLCA3LCAKKwkJCSAgICAgICAgIDB4NjM0YywgOCwgMHg3Mzk2LCA5LCAweDUzNDEsIDEwLCAweDYyZmUsIDEwLAorCQkJICAgICAgICAgMHg3NjdlLCAxMDAsIDB4NGY3MCwgMTAwLCAweDUzNDMsIDEwMDAsIDB4NGVkZiwgMTAwMCwKKwkJCSAgICAgICAgIDB4ODI0YywgMTAwMDAsIDB4NTEwNCwgMTAwMDAwMDAwfTsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBoYW4ubGVuZ3RoOyBpICs9IDIpIHsKKwkJCWlmIChVQ2hhcmFjdGVyLmdldEhhbk51bWVyaWNWYWx1ZShoYW5baV0pICE9IGhhbltpICsgMV0pIHsKKwkJCQllcnJsbigiTnVtZXJpYyB2YWx1ZSBvZiBcXHUiICsgCisJCQkJICAgICAgSW50ZWdlci50b0hleFN0cmluZyhoYW5baV0pICsJIiBleHBlY3RlZCB0byBiZSAiICsgCisJCQkJICAgICAgaGFuW2kgKyAxXSk7CisJCQl9CisJCX0KKyAgCX0KKworICAJLyoqCisgIAkqIFRlc3RzIGZvciB2ZXJzaW9uIAorICAJKi8KKyAgCXB1YmxpYyB2b2lkIFRlc3RWZXJzaW9uKCkKKyAgCXsKKyAgICAJaWYgKCFVQ2hhcmFjdGVyLmdldFVuaWNvZGVWZXJzaW9uKCkuZXF1YWxzKFZFUlNJT05fKSkKKyAgICAgIAkJZXJybG4oIkZBSUwgZXhwZWN0ZWQgIiArIFZFUlNJT05fKTsKKyAgCX0KKyAgCisgIAkvKioKKyAgCSogVGVzdHMgZm9yIGNvbnRyb2wgY2hhcmFjdGVycworICAJKi8KKyAgCXB1YmxpYyB2b2lkIFRlc3RJU09Db250cm9sKCkKKyAgCXsKKyAgICAJaW50IGNvbnRyb2xbXSA9IHsweDAwMWIsIDB4MDAwMDk3LCAweDAwMDA4Mn07CisgICAgCWludCBub25jb250cm9sW10gPSB7MHg2MSwgMHgwMDAwMzEsIDB4MDAwMGUyfTsKKyAgICAKKyAgICAJaW50IHNpemUgPSBjb250cm9sLmxlbmd0aDsKKyAgICAJZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpICsrKSAKKyAgICAJeworICAgICAgCQlpZiAoIVVDaGFyYWN0ZXIuaXNJU09Db250cm9sKGNvbnRyb2xbaV0pKQorICAgICAgCQl7CisgICAgICAgIAkJZXJybG4oIkZBSUwgMHgiICsgSW50ZWdlci50b0hleFN0cmluZyhjb250cm9sW2ldKSArIAorICAgICAgICAgCSAgICAgCQkiIGV4cGVjdGVkIHRvIGJlIGEgY29udHJvbCBjaGFyYWN0ZXIiKTsKKyAgICAgICAgCQlicmVhazsKKyAgICAgIAkJfSAgCisgICAgICAJCWlmIChVQ2hhcmFjdGVyLmlzSVNPQ29udHJvbChub25jb250cm9sW2ldKSkKKyAgICAgIAkJeworICAgICAgICAJCWVycmxuKCJGQUlMIDB4IiArIEludGVnZXIudG9IZXhTdHJpbmcobm9uY29udHJvbFtpXSkgKyAKKyAgICAgICAgICAgICAgCQkJIiBleHBlY3RlZCB0byBiZSBub3QgYSBjb250cm9sIGNoYXJhY3RlciIpOworICAgICAgICAJCWJyZWFrOworICAgICAgCQl9CisgICAgICAKKyAgICAgIAkJbG9nbG4oIk9rICAgIDB4IiArIEludGVnZXIudG9IZXhTdHJpbmcoY29udHJvbFtpXSkgKyAiIGFuZCAweCIgKworICAgICAgICAgICAgCQlJbnRlZ2VyLnRvSGV4U3RyaW5nKG5vbmNvbnRyb2xbaV0pKTsKKyAgICAJfQorICAJfQorICAJCisgIAkvKioKKyAgCSAqIFRlc3QgU3VwcGxlbWVudGFyeQorICAJICovCisgIAlwdWJsaWMgdm9pZCBUZXN0U3VwcGxlbWVudGFyeSgpCisgIAl7CisgIAkJZm9yIChpbnQgaSA9IDA7IGkgPCAweDEwMDAwOyBpICsrKSB7CisgIAkJCWlmIChVQ2hhcmFjdGVyLmlzU3VwcGxlbWVudGFyeShpKSkgeworICAJCQkJZXJybG4oIkNvZGVwb2ludCBcXHUiICsgSW50ZWdlci50b0hleFN0cmluZyhpKSArIAorICAJCQkJICAgICAgIiBpcyBub3Qgc3VwcGxlbWVudGFyeSIpOworICAJCQl9CisgIAkJfQorICAJCWZvciAoaW50IGkgPSAweDEwMDAwOyBpIDwgMHgxMEZGRkY7IGkgKyspIHsKKyAgCQkJaWYgKCFVQ2hhcmFjdGVyLmlzU3VwcGxlbWVudGFyeShpKSkgeworICAJCQkJZXJybG4oIkNvZGVwb2ludCBcXHUiICsgSW50ZWdlci50b0hleFN0cmluZyhpKSArIAorICAJCQkJICAgICAgIiBpcyBzdXBwbGVtZW50YXJ5Iik7CisgIAkJCX0KKyAgCQl9CisgIAl9CisgIAkKKyAgCS8qKgorICAJICogVGVzdCBtaXJyb3JpbmcKKyAgCSAqLworICAJcHVibGljIHZvaWQgVGVzdE1pcnJvcigpCisgIAl7CisgIAkJaWYgKCEoVUNoYXJhY3Rlci5pc01pcnJvcmVkKDB4MjgpICYmIFVDaGFyYWN0ZXIuaXNNaXJyb3JlZCgweGJiKSAmJiAKKyAgCQkgICAgICBVQ2hhcmFjdGVyLmlzTWlycm9yZWQoMHgyMDQ1KSAmJiBVQ2hhcmFjdGVyLmlzTWlycm9yZWQoMHgyMzJhKQorICAJCSAgICAgICYmICFVQ2hhcmFjdGVyLmlzTWlycm9yZWQoMHgyNykgJiYgCisgIAkJICAgICAgIVVDaGFyYWN0ZXIuaXNNaXJyb3JlZCgweDYxKSAmJiAhVUNoYXJhY3Rlci5pc01pcnJvcmVkKDB4Mjg0KSAKKyAgCQkgICAgICAmJiAhVUNoYXJhY3Rlci5pc01pcnJvcmVkKDB4MzQwMCkpKSB7CisgICAgICAgIAllcnJsbigiaXNNaXJyb3JlZCgpIGRvZXMgbm90IHdvcmsgY29ycmVjdGx5Iik7CisgICAgCX0KKworICAgIAlpZiAoIShVQ2hhcmFjdGVyLmdldE1pcnJvcigweDNjKSA9PSAweDNlICYmIAorICAgIAkgICAgICBVQ2hhcmFjdGVyLmdldE1pcnJvcigweDVkKSA9PSAweDViICYmIAorICAgICAgICAgICAgICBVQ2hhcmFjdGVyLmdldE1pcnJvcigweDIwOGQpID09IDB4MjA4ZSAmJiAKKyAgICAgICAgICAgICAgVUNoYXJhY3Rlci5nZXRNaXJyb3IoMHgzMDE3KSA9PSAweDMwMTYgJiYKKyAgICAgICAgIAkgIFVDaGFyYWN0ZXIuZ2V0TWlycm9yKDB4MmUpID09IDB4MmUgJiYgCisgICAgICAgICAJICBVQ2hhcmFjdGVyLmdldE1pcnJvcigweDZmMykgPT0gMHg2ZjMgJiYgCisgICAgICAgICAJICBVQ2hhcmFjdGVyLmdldE1pcnJvcigweDMwMWMpID09IDB4MzAxYyAmJiAKKyAgICAgICAgIAkgIFVDaGFyYWN0ZXIuZ2V0TWlycm9yKDB4YTRhYikgPT0gMHhhNGFiKSkgeworICAgICAgICAJZXJybG4oImdldE1pcnJvcigpIGRvZXMgbm90IHdvcmsgY29ycmVjdGx5Iik7CisgICAgCX0KKwl9CisgIAorICAJLyoqCisgIAkqIFRlc3RzIGZvciBwcmludGFibGUgY2hhcmFjdGVycworICAJKi8KKyAgCXB1YmxpYyB2b2lkIFRlc3RQcmludCgpCisgIAl7CisgICAgCWludCBwcmludGFibGVbXSA9IHsweDAwNDIsIDB4MDAwMDVmLCAweDAwMjAxNH07CisgICAgCWludCBub25wcmludGFibGVbXSA9IHsweDIwMGMsIDB4MDAwMDlmLCAweDAwMDAxYn07CisgICAgCisgICAgCWludCBzaXplID0gcHJpbnRhYmxlLmxlbmd0aDsKKyAgICAJZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpICsrKQorICAgIAl7CisgICAgICAJCWlmICghVUNoYXJhY3Rlci5pc1ByaW50YWJsZShwcmludGFibGVbaV0pKQorICAgICAgCQl7CisgICAgICAgCSAJCWVycmxuKCJGQUlMIFxcdSIgKyBoZXgocHJpbnRhYmxlW2ldKSArIAorICAgICAgICAgICAgICAJCSIgZXhwZWN0ZWQgdG8gYmUgYSBwcmludGFibGUgY2hhcmFjdGVyIik7CisgICAgICAgIAkJYnJlYWs7CisgICAgICAJCX0KKyAgICAgIAkJaWYgKFVDaGFyYWN0ZXIuaXNQcmludGFibGUobm9ucHJpbnRhYmxlW2ldKSkKKyAgICAgIAkJeworICAgICAgICAJCWVycmxuKCJGQUlMIFxcdSIgKyBoZXgobm9ucHJpbnRhYmxlW2ldKSArCisgICAgICAgICAgICAgIAkJCSIgZXhwZWN0ZWQgbm90IHRvIGJlIGEgcHJpbnRhYmxlIGNoYXJhY3RlciIpOworICAgICAgICAJCWJyZWFrOworICAgICAgCQl9CisgICAgICAJCWxvZ2xuKCJPayAgICBcXHUiICsgaGV4KHByaW50YWJsZVtpXSkgKyAiIGFuZCBcXHUiICsgCisgICAgICAgICAgICAJCWhleChub25wcmludGFibGVbaV0pKTsKKyAgICAJfQorICAgIAorICAgIAkvLyB0ZXN0IGFsbCBJU08gOCBjb250cm9scworICAgIAlmb3IgKGludCBjaCA9IDA7IGNoIDw9IDB4OWY7ICsrIGNoKSB7CisgICAgICAJCWlmIChjaCA9PSAweDIwKSB7CisgICAgICAJCQkvLyBza2lwIEFTQ0lJIGdyYXBoaWMgY2hhcmFjdGVycyBhbmQgY29udGludWUgd2l0aCBERUwKKyAgICAgICAgCQljaCA9IDB4N2Y7CisgICAgICAJCX0KKyAgICAgIAkJaWYgKFVDaGFyYWN0ZXIuaXNQcmludGFibGUoY2gpKSB7CisgICAgICAgIAkJZXJybG4oIkZhaWwgXFx1IiArIGhleChjaCkgKyAKKyAgICAgICAgICAgICAgCQkiIGlzIGEgSVNPIDggY29udHJvbCBjaGFyYWN0ZXIgaGVuY2Ugbm90IHByaW50YWJsZVxuIik7CisgICAgICAJCX0KKyAgICAJfQorCisgICAgCS8qIHRlc3QgYWxsIExhdGluLTEgZ3JhcGhpYyBjaGFyYWN0ZXJzICovCisgICAgCWZvciAoaW50IGNoID0gMHgyMDsgY2ggPD0gMHhmZjsgKysgY2gpIHsKKyAgICAgIAkJaWYgKGNoID09IDB4N2YpIHsKKyAgICAgICAgCQljaCA9IDB4YTA7CisgICAgICAJCX0KKyAgICAgIAkJaWYgKCFVQ2hhcmFjdGVyLmlzUHJpbnRhYmxlKGNoKSkgeworICAgICAgICAJCWVycmxuKCJGYWlsIFxcdSIgKyBoZXgoY2gpICsgCisgICAgICAgIAkJICAgICAgIiBpcyBhIExhdGluLTEgZ3JhcGhpYyBjaGFyYWN0ZXJcbiIpOworICAgICAgICAJfQorICAgIAl9CisgIAl9CisgIAorICAJLyoqIAorICAJKiBUZXN0aW5nIGZvciBpZGVudGlmaWVyIGNoYXJhY3RlcnMKKyAgCSovCisgIAlwdWJsaWMgdm9pZCBUZXN0SWRlbnRpZmllcigpCisgIAl7CisgICAgCWludCB1bmljb2RlaWRzdGFydFtdID0gezB4MDI1MCwgMHgwMDAwZTIsIDB4MDAwMDYxfTsKKyAgICAJaW50IG5vbnVuaWNvZGVpZHN0YXJ0W10gPSB7MHgyMDAwLCAweDAwMDAwYSwgMHgwMDIwMTl9OworICAgIAlpbnQgdW5pY29kZWlkcGFydFtdID0gezB4MDA1ZiwgMHgwMDAwMzIsIDB4MDAwMDQ1fTsKKyAgICAJaW50IG5vbnVuaWNvZGVpZHBhcnRbXSA9IHsweDIwMzAsIDB4MDAwMGEzLCAweDAwMDAyMH07CisgICAgCWludCBpZGlnbm9yZVtdID0gezB4MDAwNiwgMHgwMDEwLCAweDIwNmJ9OworICAgIAlpbnQgbm9uaWRpZ25vcmVbXSA9IHsweDAwNzUsIDB4MDAwMGEzLCAweDAwMDA2MX07CisgICAgCisgICAgCWludCBzaXplID0gdW5pY29kZWlkc3RhcnQubGVuZ3RoOworICAgIAlmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkgKyspIAorICAgIAl7CisgICAgICAJCWlmICghVUNoYXJhY3Rlci5pc1VuaWNvZGVJZGVudGlmaWVyU3RhcnQodW5pY29kZWlkc3RhcnRbaV0pKQorICAgICAgCQl7CisgICAgICAgIAkJZXJybG4oIkZBSUwgXFx1IiArIGhleCh1bmljb2RlaWRzdGFydFtpXSkgKyAKKyAgICAgICAgICAgICAgCQkiIGV4cGVjdGVkIHRvIGJlIGEgdW5pY29kZSBpZGVudGlmaWVyIHN0YXJ0IGNoYXJhY3RlciIpOworICAgICAgICAJCWJyZWFrOworICAgICAgCQl9CisgICAgICAJCWlmIChVQ2hhcmFjdGVyLmlzVW5pY29kZUlkZW50aWZpZXJTdGFydChub251bmljb2RlaWRzdGFydFtpXSkpCisgICAgICAJCXsKKyAgICAgICAgCQllcnJsbigiRkFJTCBcXHUiICsgaGV4KG5vbnVuaWNvZGVpZHN0YXJ0W2ldKSArIAorICAgICAgICAgICAgICAJCQkiIGV4cGVjdGVkIG5vdCB0byBiZSBhIHVuaWNvZGUgaWRlbnRpZmllciBzdGFydCAiICsgCisgICAgICAgICAgICAgIAkJCSJjaGFyYWN0ZXIiKTsKKyAgICAgICAgCQlicmVhazsKKyAgICAgIAkJfQorICAgICAgCQlpZiAoIVVDaGFyYWN0ZXIuaXNVbmljb2RlSWRlbnRpZmllclBhcnQodW5pY29kZWlkcGFydFtpXSkpCisgICAgICAJCXsKKyAgICAgICAgCQllcnJsbigiRkFJTCBcXHUiICsgaGV4KHVuaWNvZGVpZHBhcnRbaV0pICsgCisgICAgICAgICAgICAgIAkJIiBleHBlY3RlZCB0byBiZSBhIHVuaWNvZGUgaWRlbnRpZmllciBwYXJ0IGNoYXJhY3RlciIpOworICAgICAgICAJCWJyZWFrOworICAgICAgCQl9CisgICAgICAJCWlmIChVQ2hhcmFjdGVyLmlzVW5pY29kZUlkZW50aWZpZXJQYXJ0KG5vbnVuaWNvZGVpZHBhcnRbaV0pKQorICAgICAgCQl7CisgICAgICAgIAkJZXJybG4oIkZBSUwgXFx1IiArIGhleChub251bmljb2RlaWRwYXJ0W2ldKSArIAorICAgICAgICAgICAgICAJCQkiIGV4cGVjdGVkIG5vdCB0byBiZSBhIHVuaWNvZGUgaWRlbnRpZmllciBwYXJ0ICIgKworICAgICAgICAgICAgICAJCQkiY2hhcmFjdGVyIik7CisgICAgICAgIAkJYnJlYWs7CisgICAgICAJCX0KKyAgICAgICAgICAgIGlmICghVUNoYXJhY3Rlci5pc0lkZW50aWZpZXJJZ25vcmFibGUoaWRpZ25vcmVbaV0pKQorICAgICAgCQl7CisgICAgICAgIAkJZXJybG4oIkZBSUwgXFx1IiArIGhleChpZGlnbm9yZVtpXSkgKyAKKyAgICAgICAgICAgICAgCQkJIiBleHBlY3RlZCB0byBiZSBhIGlnbm9yYWJsZSB1bmljb2RlIGNoYXJhY3RlciIpOworICAgICAgICAJCWJyZWFrOworICAgICAgCQl9CisgICAgICAJCWlmIChVQ2hhcmFjdGVyLmlzSWRlbnRpZmllcklnbm9yYWJsZShub25pZGlnbm9yZVtpXSkpCisgICAgICAJCXsKKyAgICAgICAgCQllcnJsbigiRkFJTCBcXHUiICsgaGV4KG5vbmlkaWdub3JlW2ldKSArIAorICAgICAgICAgICAgICAJCSIgZXhwZWN0ZWQgbm90IHRvIGJlIGEgaWdub3JhYmxlIHVuaWNvZGUgY2hhcmFjdGVyIik7CisgICAgICAgIAkJYnJlYWs7CisgICAgICAJCX0KKyAgICAgIAkJbG9nbG4oIk9rICAgIFxcdSIgKyBoZXgodW5pY29kZWlkc3RhcnRbaV0pICsgIiBhbmQgXFx1IiArCisgICAgICAgICAgICAJCWhleChub251bmljb2RlaWRzdGFydFtpXSkgKyAiIGFuZCBcXHUiICsgCisgICAgICAgICAgICAJCWhleCh1bmljb2RlaWRwYXJ0W2ldKSArICIgYW5kIFxcdSIgKyAKKyAgICAgICAgICAgIAkJaGV4KG5vbnVuaWNvZGVpZHBhcnRbaV0pICsgIiBhbmQgXFx1IiArCisgICAgICAgICAgICAJCWhleChpZGlnbm9yZVtpXSkgKyAiIGFuZCBcXHUiICsgaGV4KG5vbmlkaWdub3JlW2ldKSk7CisgICAgCX0KKyAgCX0KKyAgCisgIAkvKioKKyAgCSogVGVzdHMgZm9yIHRoZSBjaGFyYWN0ZXIgdHlwZXMsIGRpcmVjdGlvbi48YnI+CisgIAkqIFRoaXMgbWV0aG9kIHJlYWRzIGluIFVuaWNvZGVEYXRhLnR4dCBmaWxlIGZvciB0ZXN0aW5nIHB1cnBvc2VzLiBBIAorICAJKiBkZWZhdWx0IHBhdGggaXMgcHJvdmlkZWQgcmVsYXRpdmUgdG8gdGhlIHNyYyBwYXRoLCBob3dldmVyIHRoZSB1c2VyIAorICAJKiBjb3VsZCBzZXQgYSBzeXN0ZW0gcHJvcGVydHkgdG8gY2hhbmdlIHRoZSBkaXJlY3RvcnkgcGF0aC48YnI+CisgIAkqIGUuZy4gamF2YSAtRFVuaWNvZGVEYXRhPSJkYXRhX2RpcmVjdG9yeV9wYXRoIiAKKyAgCSogY29tLmlibS5pY3UuZGV2LnRlc3QubGFuZy5VQ2hhcmFjdGVyVGVzdAorICAJKi8KKyAgCXB1YmxpYyB2b2lkIFRlc3RVbmljb2RlRGF0YSgpCisgIAl7CisgICAgCS8vIHRoaXMgaXMgdGhlIDIgY2hhciBjYXRlZ29yeSB0eXBlcyB1c2VkIGluIHRoZSBVbmljb2RlRGF0YSBmaWxlCisgICAgCWZpbmFsIFN0cmluZyBUWVBFID0gCisgICAgICAJCSJMdUxsTHRMbUxvTW5NZU1jTmRObE5vWnNabFpwQ2NDZkNvQ3NQZFBzUGVQY1BvU21TY1NrU29QaVBmIjsKKyAgICAKKyAgICAJLy8gZGlyZWN0b3J5IHR5cGVzIHVzZWQgaW4gdGhlIFVuaWNvZGVEYXRhIGZpbGUKKyAgICAJLy8gcGFkZGVkIGJ5IHNwYWNlcyB0byBtYWtlIGVhY2ggdHlwZSBzaXplIDQKKyAgICAJZmluYWwgU3RyaW5nIERJUiA9IAorICAgICAgCQkiTCAgIFIgICBFTiAgRVMgIEVUICBBTiAgQ1MgIEIgICBTICAgV1MgIE9OICBMUkUgTFJPIEFMICBSTEUgUkxPIFBERiBOU00gQk4gICI7CisgICAgICAKKyAgICAJZmluYWwgaW50IExBU1RVTklDT0RFQ0hBUiA9IDB4RkZGRDsKKyAgICAJaW50IGNoID0gMCwKKyAgICAgICAgCWluZGV4ID0gMCwKKyAgICAgICAgCXR5cGUgPSAwLAorICAgICAgICAJZGlyID0gMDsKKwkKKwkJdHJ5CisJCXsKKwkgIAkJQnVmZmVyZWRSZWFkZXIgaW5wdXQgPSBUZXN0VXRpbC5nZXREYXRhUmVhZGVyKAorCSAgCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5pY29kZS9Vbmljb2RlRGF0YS50eHQiKTsKKwkgICAgCisgICAgICAJCXdoaWxlIChjaCAhPSBMQVNUVU5JQ09ERUNIQVIpCisgICAgICAJCXsKKyAgICAgICAJIAkJU3RyaW5nIHMgPSBpbnB1dC5yZWFkTGluZSgpOworICAgICAgICAJCS8vIGdldGluZyB0aGUgdW5pY29kZSBjaGFyYWN0ZXIsIGl0cyB0eXBlIGFuZCBpdHMgZGlyZWN0aW9uCisgICAgICAgIAkJY2ggPSBJbnRlZ2VyLnBhcnNlSW50KHMuc3Vic3RyaW5nKDAsIDQpLCAxNik7CisgICAgICAgIAkJaW5kZXggPSBzLmluZGV4T2YoJzsnLCA1KTsKKyAgICAgICAgCQlTdHJpbmcgdCA9IHMuc3Vic3RyaW5nKGluZGV4ICsgMSwgaW5kZXggKyAzKTsKKyAgICAgICAgCQlpbmRleCArPSA0OworICAgICAgICAgICAgICAgIGludCBvbGRpbmRleCA9IGluZGV4OworICAgICAgICAgICAgICAgIGluZGV4ID0gcy5pbmRleE9mKCc7JywgaW5kZXgpOworICAgICAgICAJCWludCBjYyA9IEludGVnZXIucGFyc2VJbnQocy5zdWJzdHJpbmcob2xkaW5kZXgsIGluZGV4KSk7CisgICAgICAgICAgICAgICAgb2xkaW5kZXggPSBpbmRleCArIDE7CisgICAgICAgICAgICAgICAgaW5kZXggPSBzLmluZGV4T2YoJzsnLCBvbGRpbmRleCk7CisgICAgICAgIAkJU3RyaW5nIGQgPSBzLnN1YnN0cmluZyhvbGRpbmRleCwgaW5kZXgpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNjsgaSArKykgeworICAgICAgICAgICAgICAgICAgICBpbmRleCA9IHMuaW5kZXhPZignOycsIGluZGV4ICsgMSk7CisgICAgICAgICAgICAgICAgICAgIC8vIHNraXBwaW5nIHRvIHRoZSAxMXRoIGZpZWxkCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8vIGlzbyBjb21tZW50CisgICAgICAgICAgICAgICAgb2xkaW5kZXggPSBpbmRleCArIDE7CisgICAgICAgICAgICAgICAgaW5kZXggPSBzLmluZGV4T2YoJzsnLCBvbGRpbmRleCk7CisgICAgICAgICAgICAgICAgU3RyaW5nIGlzb2NvbW1lbnQgPSBzLnN1YnN0cmluZyhvbGRpbmRleCwgaW5kZXgpOworICAgICAgICAgICAgICAgIC8vIHVwcGVyY2FzZQorICAgICAgICAgICAgICAgIG9sZGluZGV4ID0gaW5kZXggKyAxOworICAgICAgICAgICAgICAgIGluZGV4ID0gcy5pbmRleE9mKCc7Jywgb2xkaW5kZXgpOworICAgICAgICAgICAgICAgIFN0cmluZyB1cHBlciA9IHMuc3Vic3RyaW5nKG9sZGluZGV4LCBpbmRleCk7CisgICAgICAgICAgICAgICAgLy8gbG93ZXJjYXNlCisgICAgICAgICAgICAgICAgb2xkaW5kZXggPSBpbmRleCArIDE7CisgICAgICAgICAgICAgICAgaW5kZXggPSBzLmluZGV4T2YoJzsnLCBvbGRpbmRleCk7CisgICAgICAgICAgICAgICAgU3RyaW5nIGxvd2VyID0gcy5zdWJzdHJpbmcob2xkaW5kZXgsIGluZGV4KTsKKyAgICAgICAgICAgICAgICAvLyB0aXRsZWNhc2UgbGFzdCBlbGVtZW50CisgICAgICAgICAgICAgICAgb2xkaW5kZXggPSBpbmRleCArIDE7CisgICAgICAgICAgICAgICAgU3RyaW5nIHRpdGxlID0gcy5zdWJzdHJpbmcob2xkaW5kZXgpOworICAgICAgICAKKyAgICAgICAgCQkvLyB0ZXN0aW5nIHRoZSBjYXRlZ29yeQorICAgICAgICAJCS8vIHdlIG92ZXJyaWRlIHRoZSBnZW5lcmFsIGNhdGVnb3J5IG9mIHNvbWUgY29udHJvbCAKKyAgICAgICAgCQkvLyBjaGFyYWN0ZXJzCisgICAgICAgIAkJdHlwZSA9IFRZUEUuaW5kZXhPZih0KTsKKyAgICAgICAgCQlpZiAodHlwZSA8IDApCisgICAgICAgICAgICAJCXR5cGUgPSAwOworICAgICAgICAJCWVsc2UgCisgICAgICAgICAgICAJCXR5cGUgPSAodHlwZSA+PiAxKSArIDE7ICAKKyAgICAgICAgCQlpZiAoVUNoYXJhY3Rlci5nZXRUeXBlKGNoKSAhPSB0eXBlKQorICAgICAgICAJCXsKKyAgICAgICAgICAJCQllcnJsbigiRkFJTCBcXHUiICsgaGV4KGNoKSArICIgZXhwZWN0ZWQgdHlwZSAiICsgCisgICAgICAgICAgICAgICAgCQkJdHlwZSk7CisgICAgICAgICAgCQkJYnJlYWs7CisgICAgICAgIAkJfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChVQ2hhcmFjdGVyLmdldEludFByb3BlcnR5VmFsdWUoY2gsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVVByb3BlcnR5LkdFTkVSQUxfQ0FURUdPUllfTUFTSykgIT0gKDEgPDwgdHlwZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oImVycm9yOiBnZXRJbnRQcm9wZXJ0eVZhbHVlKFxcdSIgKyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZWdlci50b0hleFN0cmluZyhjaCkgKyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiwgVVByb3BlcnR5LkdFTkVSQUxfQ0FURUdPUllfTUFTSykgIT0gIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJnZXRNYXNrKGdldFR5cGUoY2gpKSIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIAkJLy8gdGVzdGluZyBjb21iaW5pbmcgY2xhc3MKKyAgICAgICAgCQlpZiAoVUNoYXJhY3Rlci5nZXRDb21iaW5pbmdDbGFzcyhjaCkgIT0gY2MpCisgICAgICAgIAkJeworICAgICAgICAgIAkJCWVycmxuKCJGQUlMIFxcdSIgKyBoZXgoY2gpICsgIiBleHBlY3RlZCBjb21iaW5pbmcgIiArCisgICAgICAgICAgICAgICAgCQkJImNsYXNzICIgKyBjYyk7CisgICAgICAgICAgCQkJYnJlYWs7CisgICAgICAgIAkJfQorICAgICAgICAKKyAgICAgICAgCQkvLyB0ZXN0aW5nIHRoZSBkaXJlY3Rpb24KKyAgICAgICAgCQlpZiAoZC5sZW5ndGgoKSA9PSAxKQorICAgICAgICAgIAkJCWQgPSBkICsgIiAgICI7ICAKKyAgICAgICAgICAKKyAgICAgICAgCQlkaXIgPSBESVIuaW5kZXhPZihkKSA+PiAyOworICAgICAgICAJCWlmIChVQ2hhcmFjdGVyLmdldERpcmVjdGlvbihjaCkgIT0gZGlyKSAKKyAgICAgICAgCQl7CisgICAgICAgICAgCQkJZXJybG4oIkZBSUwgXFx1IiArIGhleChjaCkgKyAKKyAgICAgICAgICAgICAgICAJCSIgZXhwZWN0ZWQgd3JvbmcgZGlyZWN0aW9uICIgKyBkaXIpOworICAgICAgICAgIAkJCWJyZWFrOworICAgICAgICAJCX0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyB0ZXN0aW5nIGlzbyBjb21tZW50CisgICAgICAgICAgICAgICAgU3RyaW5nIGNvbW1lbnQgPSBVQ2hhcmFjdGVyLmdldElTT0NvbW1lbnQoY2gpOworICAgICAgICAgICAgICAgIGlmIChjb21tZW50ID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgY29tbWVudCA9ICIiOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoIWNvbW1lbnQuZXF1YWxzKGlzb2NvbW1lbnQpKSB7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMIFxcdSIgKyBoZXgoY2gpICsgCisgICAgICAgICAgICAgICAgICAgICAgICAiIGV4cGVjdGVkIGlzbyBjb21tZW50ICIgKyBpc29jb21tZW50KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpbnQgdGVtcGNoYXIgPSBjaDsKKyAgICAgICAgICAgICAgICBpZiAodXBwZXIubGVuZ3RoKCkgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIHRlbXBjaGFyID0gSW50ZWdlci5wYXJzZUludCh1cHBlciwgMTYpOworICAgICAgICAgICAgICAgIH0gICAKKyAgICAgICAgICAgICAgICBpZiAoVUNoYXJhY3Rlci50b1VwcGVyQ2FzZShjaCkgIT0gdGVtcGNoYXIpIHsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIkZBSUwgXFx1IiArIFV0aWxpdHkuaGV4KGNoLCA0KSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgZXhwZWN0ZWQgdXBwZXJjYXNlIFxcdSIgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBVdGlsaXR5LmhleCh0ZW1wY2hhciwgNCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdGVtcGNoYXIgPSBjaDsKKyAgICAgICAgICAgICAgICBpZiAobG93ZXIubGVuZ3RoKCkgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIHRlbXBjaGFyID0gSW50ZWdlci5wYXJzZUludChsb3dlciwgMTYpOworICAgICAgICAgICAgICAgIH0gICAKKyAgICAgICAgICAgICAgICBpZiAoVUNoYXJhY3Rlci50b0xvd2VyQ2FzZShjaCkgIT0gdGVtcGNoYXIpIHsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIkZBSUwgXFx1IiArIFV0aWxpdHkuaGV4KGNoLCA0KSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgZXhwZWN0ZWQgbG93ZXJjYXNlIFxcdSIgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBVdGlsaXR5LmhleCh0ZW1wY2hhciwgNCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdGVtcGNoYXIgPSBjaDsKKyAgICAgICAgICAgICAgICBpZiAodGl0bGUubGVuZ3RoKCkgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIHRlbXBjaGFyID0gSW50ZWdlci5wYXJzZUludCh0aXRsZSwgMTYpOworICAgICAgICAgICAgICAgIH0gICAKKyAgICAgICAgICAgICAgICBpZiAoVUNoYXJhY3Rlci50b1RpdGxlQ2FzZShjaCkgIT0gdGVtcGNoYXIpIHsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIkZBSUwgXFx1IiArIFV0aWxpdHkuaGV4KGNoLCA0KSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgZXhwZWN0ZWQgdGl0bGVjYXNlIFxcdSIgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBVdGlsaXR5LmhleCh0ZW1wY2hhciwgNCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAJCX0KKyAgICAgIAkJaW5wdXQuY2xvc2UoKTsKKyAgICAJfQorICAgIAljYXRjaCAoRXhjZXB0aW9uIGUpCisgICAgCXsKKyAgICAgIAkJZS5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAJfQorICAgICAgICAKKyAgICAgICAgaWYgKFVDaGFyYWN0ZXIuVW5pY29kZUJsb2NrLm9mKDB4MDA0MSkgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIT0gVUNoYXJhY3Rlci5Vbmljb2RlQmxvY2suQkFTSUNfTEFUSU4gCisgICAgICAgICAgICB8fCBVQ2hhcmFjdGVyLmdldEludFByb3BlcnR5VmFsdWUoMHg0MSwgVVByb3BlcnR5LkJMT0NLKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIT0gVUNoYXJhY3Rlci5Vbmljb2RlQmxvY2suQkFTSUNfTEFUSU4uZ2V0SUQoKSkgeworICAgICAgICAgICAgZXJybG4oIlVDaGFyYWN0ZXIuVW5pY29kZUJsb2NrLm9mKFxcdTAwNDEpIHByb3BlcnR5IGZhaWxlZCEgIiAKKyAgICAgICAgICAgICAgICAgICAgKyAiRXhwZWN0ZWQgOiAiIAorICAgICAgICAgICAgICAgICAgICArIFVDaGFyYWN0ZXIuVW5pY29kZUJsb2NrLkJBU0lDX0xBVElOLmdldElEKCkgKyAiIGdvdCAiIAorICAgICAgICAgICAgICAgICAgICArIFVDaGFyYWN0ZXIuVW5pY29kZUJsb2NrLm9mKDB4MDA0MSkpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBzYW5pdHkgY2hlY2sgb24gcmVwZWF0ZWQgcHJvcGVydGllcyAKKyAgICAgICAgZm9yIChjaCA9IDB4ZmZmZTsgY2ggPD0gMHgxMGZmZmY7KSB7CisgICAgICAgICAgICB0eXBlID0gVUNoYXJhY3Rlci5nZXRUeXBlKGNoKTsKKyAgICAgICAgICAgIGlmIChVQ2hhcmFjdGVyLmdldEludFByb3BlcnR5VmFsdWUoY2gsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVUHJvcGVydHkuR0VORVJBTF9DQVRFR09SWV9NQVNLKQorICAgICAgICAgICAgICAgICE9ICgxIDw8IHR5cGUpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oImVycm9yOiBVQ2hhcmFjdGVyLmdldEludFByb3BlcnR5VmFsdWUoXFx1IgorICAgICAgICAgICAgICAgICAgICAgICsgSW50ZWdlci50b0hleFN0cmluZyhjaCkgCisgICAgICAgICAgICAgICAgICAgICAgKyAiLCBVUHJvcGVydHkuR0VORVJBTF9DQVRFR09SWV9NQVNLKSAhPSAiIAorICAgICAgICAgICAgICAgICAgICAgICsgImdldE1hc2soZ2V0VHlwZSgpKSIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHR5cGUgIT0gVUNoYXJhY3RlckNhdGVnb3J5LlVOQVNTSUdORUQpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiZXJyb3I6IFVDaGFyYWN0ZXIuZ2V0VHlwZShcXHUiICsgVXRpbGl0eS5oZXgoY2gsIDQpIAorICAgICAgICAgICAgICAgICAgICAgICAgKyAiICE9IFVDaGFyYWN0ZXJDYXRlZ29yeS5VTkFTU0lHTkVEIChyZXR1cm5zICIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgVUNoYXJhY3RlckNhdGVnb3J5LnRvU3RyaW5nKFVDaGFyYWN0ZXIuZ2V0VHlwZShjaCkpIAorICAgICAgICAgICAgICAgICAgICAgICAgKyAiKSIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKChjaCAmIDB4ZmZmZikgPT0gMHhmZmZlKSB7CisgICAgICAgICAgICAgICAgKysgY2g7CisgICAgICAgICAgICB9IAorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgY2ggKz0gMHhmZmZmOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgCisgICAgICAgIC8vIHRlc3QgdGhhdCBQVUEgaXMgbm90ICJ1bmFzc2lnbmVkIgorICAgICAgICBmb3IoY2ggPSAweGUwMDA7IGNoIDw9IDB4MTBmZmZkOykgeworICAgICAgICAgICAgdHlwZSA9IFVDaGFyYWN0ZXIuZ2V0VHlwZShjaCk7CisgICAgICAgICAgICBpZiAoVUNoYXJhY3Rlci5nZXRJbnRQcm9wZXJ0eVZhbHVlKGNoLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVByb3BlcnR5LkdFTkVSQUxfQ0FURUdPUllfTUFTSykKKyAgICAgICAgICAgICAgICAhPSAoMSA8PCB0eXBlKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJlcnJvcjogVUNoYXJhY3Rlci5nZXRJbnRQcm9wZXJ0eVZhbHVlKFxcdSIKKyAgICAgICAgICAgICAgICAgICAgICArIEludGVnZXIudG9IZXhTdHJpbmcoY2gpIAorICAgICAgICAgICAgICAgICAgICAgICsgIiwgVVByb3BlcnR5LkdFTkVSQUxfQ0FURUdPUllfTUFTSykgIT0gIiAKKyAgICAgICAgICAgICAgICAgICAgICArICJnZXRNYXNrKGdldFR5cGUoKSkiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHR5cGUgPT0gVUNoYXJhY3RlckNhdGVnb3J5LlVOQVNTSUdORUQpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiZXJyb3I6IFVDaGFyYWN0ZXIuZ2V0VHlwZShcXHUiIAorICAgICAgICAgICAgICAgICAgICAgICAgKyBVdGlsaXR5LmhleChjaCwgNCkgCisgICAgICAgICAgICAgICAgICAgICAgICArICIpID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5VTkFTU0lHTkVEIik7CisgICAgICAgICAgICB9IAorICAgICAgICAgICAgZWxzZSBpZiAodHlwZSAhPSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuUFJJVkFURV9VU0UpIHsKKyAgICAgICAgICAgICAgICBsb2dsbigiUFVBIG92ZXJyaWRlOiBVQ2hhcmFjdGVyLmdldFR5cGUoXFx1IiAKKyAgICAgICAgICAgICAgICAgICAgICArIFV0aWxpdHkuaGV4KGNoLCA0KSArICIpPSIgKyB0eXBlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjaCA9PSAweGY4ZmYpIHsKKyAgICAgICAgICAgICAgICBjaCA9IDB4ZjAwMDA7CisgICAgICAgICAgICB9IAorICAgICAgICAgICAgZWxzZSBpZiAoY2ggPT0gMHhmZmZmZCkgeworICAgICAgICAgICAgICAgIGNoID0gMHgxMDAwMDA7CisgICAgICAgICAgICB9IAorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgKysgY2g7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgCX0KKyAgCisgIAorICAJLyoqCisgIAkqIFRlc3QgZm9yIHRoZSBjaGFyYWN0ZXIgbmFtZXMKKyAgCSovCisgIAlwdWJsaWMgdm9pZCBUZXN0TmFtZXMoKQorICAJeworICAgICAgICBpbnQgbGVuZ3RoID0gVUNoYXJhY3Rlck5hbWUuZ2V0SW5zdGFuY2UoKS5nZXRNYXhDaGFyTmFtZUxlbmd0aCgpOyAKKyAgICAgICAgaWYgKGxlbmd0aCA8IDgzKSB7IC8vIFVuaWNvZGUgMy4yIG1heCBjaGFyIG5hbWUgbGVuZ3RoIAorICAgICAgICAgICBlcnJsbigiZ2V0TWF4Q2hhck5hbWVMZW5ndGgoKT0iICsgbGVuZ3RoICsgIiBpcyB0b28gc2hvcnQiKTsgCisgICAgICAgIH0KKyAgICAgICAgLy8gIyMjIFRPRE8gc2FtZSB0ZXN0cyBmb3IgbWF4IElTTyBjb21tZW50IGxlbmd0aCBhcyBmb3IgbWF4IG5hbWUgbGVuZ3RoCisKKyAgICAJaW50IGNbXSA9IHsweDAwNjEsIDB4MDAwMjg0LCAweDAwMzQwMSwgMHgwMDdmZWQsIDB4MDBhYzAwLCAweDAwZDdhMywgCisgICAgCQkgICAgICAgMHgwMGQ4MDAsIDB4MDBkYzAwLCAweGZmMDgsIDB4MDBmZmU1LCAweDAwZmZmZiwgCisgICAgCQkgICAgICAgMHgwMDIzNDU2fTsKKyAgICAJU3RyaW5nIG5hbWVbXSA9IHsiTEFUSU4gU01BTEwgTEVUVEVSIEEiLCAKKyAgICAgICAgICAgICAgICAgICAgICJMQVRJTiBTTUFMTCBMRVRURVIgRE9UTEVTUyBKIFdJVEggU1RST0tFIEFORCBIT09LIiwgCisgICAgICAgICAgICAgICAgICAgICAiQ0pLIFVOSUZJRUQgSURFT0dSQVBILTM0MDEiLCAKKyAgICAgICAgICAgICAgICAgICAgICJDSksgVU5JRklFRCBJREVPR1JBUEgtN0ZFRCIsICJIQU5HVUwgU1lMTEFCTEUgR0EiLCAKKyAgICAgICAgICAgICAgICAgICAgICJIQU5HVUwgU1lMTEFCTEUgSElIIiwgIiIsICIiLAorICAgICAgICAgICAgICAgICAgICAgIkZVTExXSURUSCBMRUZUIFBBUkVOVEhFU0lTIiwKKyAgICAgICAgICAgICAgICAgICAgICJGVUxMV0lEVEggWUVOIFNJR04iLCAiIiwgIkNKSyBVTklGSUVEIElERU9HUkFQSC0yMzQ1NiJ9OworICAgIAlTdHJpbmcgb2xkbmFtZVtdID0geyIiLCAiTEFUSU4gU01BTEwgTEVUVEVSIERPVExFU1MgSiBCQVIgSE9PSyIsICIiLCAKKyAgICAJCSAgICAgICAgICAgICIiLAorICAgICAgICAgICAgICAgICAgICAgICAgIiIsICIiLCAiIiwgIiIsICJGVUxMV0lEVEggT1BFTklORyBQQVJFTlRIRVNJUyIsICIiLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICIiLCAiIn07CisgICAgCVN0cmluZyBleHRlbmRlZG5hbWVbXSA9IHsiTEFUSU4gU01BTEwgTEVUVEVSIEEiLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxBVElOIFNNQUxMIExFVFRFUiBET1RMRVNTIEogV0lUSCBTVFJPS0UgQU5EIEhPT0siLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ0pLIFVOSUZJRUQgSURFT0dSQVBILTM0MDEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ0pLIFVOSUZJRUQgSURFT0dSQVBILTdGRUQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSEFOR1VMIFNZTExBQkxFIEdBIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhBTkdVTCBTWUxMQUJMRSBISUgiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGxlYWQgc3Vycm9nYXRlLUQ4MDA+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjx0cmFpbCBzdXJyb2dhdGUtREMwMD4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRlVMTFdJRFRIIExFRlQgUEFSRU5USEVTSVMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRlVMTFdJRFRIIFlFTiBTSUdOIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxub25jaGFyYWN0ZXItRkZGRj4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ0pLIFVOSUZJRUQgSURFT0dSQVBILTIzNDU2In07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIAlpbnQgc2l6ZSA9IGMubGVuZ3RoOworICAgIAlTdHJpbmcgc3RyOworICAgIAlpbnQgdWM7CisgICAgCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSArKykgCisgICAgCXsKKyAgICAgIAkJLy8gbW9kZXJuIFVuaWNvZGUgY2hhcmFjdGVyIG5hbWUKKyAgICAgIAkJc3RyID0gVUNoYXJhY3Rlci5nZXROYW1lKGNbaV0pOworICAgICAgCQlpZiAoKHN0ciA9PSBudWxsICYmIG5hbWVbaV0ubGVuZ3RoKCkgPiAwKSB8fCAKKyAgICAgICAgICAJCShzdHIgIT0gbnVsbCAmJiAhc3RyLmVxdWFscyhuYW1lW2ldKSkpCisgICAgICAJCXsKKyAgICAgICAgCQllcnJsbigiRkFJTCBcXHUiICsgaGV4KGNbaV0pICsgIiBleHBlY3RlZCBuYW1lICIgKworICAgICAgICAgICAgICAJCQluYW1lW2ldKTsKKyAgICAgICAgCQlicmVhazsKKyAgICAgIAkJfQorICAgICAKKyAgICAgIAkJLy8gMS4wIFVuaWNvZGUgY2hhcmFjdGVyIG5hbWUKKyAgICAgIAkJc3RyID0gVUNoYXJhY3Rlci5nZXROYW1lMV8wKGNbaV0pOworICAgICAgCQlpZiAoKHN0ciA9PSBudWxsICYmIG9sZG5hbWVbaV0ubGVuZ3RoKCkgPiAwKSB8fCAKKyAgICAgICAgICAJCShzdHIgIT0gbnVsbCAmJiAhc3RyLmVxdWFscyhvbGRuYW1lW2ldKSkpCisgICAgICAJCXsKKyAgICAgICAgCQllcnJsbigiRkFJTCBcXHUiICsgaGV4KGNbaV0pICsgIiBleHBlY3RlZCAxLjAgbmFtZSAiICsKKyAgICAgICAgICAgICAgCQkJb2xkbmFtZVtpXSk7CisgICAgICAgIAkJYnJlYWs7CisgICAgICAJCX0KKyAgICAgIAorICAgICAgCQkvLyBleHRlbmRlZCBjaGFyYWN0ZXIgbmFtZQorICAgICAgCQlzdHIgPSBVQ2hhcmFjdGVyLmdldEV4dGVuZGVkTmFtZShjW2ldKTsKKyAgICAgIAkJaWYgKHN0ciA9PSBudWxsIHx8ICFzdHIuZXF1YWxzKGV4dGVuZGVkbmFtZVtpXSkpCisgICAgICAJCXsKKyAgICAgICAgCQllcnJsbigiRkFJTCBcXHUiICsgaGV4KGNbaV0pICsgIiBleHBlY3RlZCBleHRlbmRlZCBuYW1lICIgKworICAgICAgICAgICAgICAJCQlleHRlbmRlZG5hbWVbaV0pOworICAgICAgICAJCWJyZWFrOworICAgICAgCQl9CisgICAgICAKKyAgICAgIAkJLy8gcmV0cmlldmluZyB1bmljb2RlIGNoYXJhY3RlciBmcm9tIG1vZGVybiBuYW1lCisgICAgICAJCXVjID0gVUNoYXJhY3Rlci5nZXRDaGFyRnJvbU5hbWUobmFtZVtpXSk7CisgICAgICAJCWlmICh1YyAhPSBjW2ldICYmIG5hbWVbaV0ubGVuZ3RoKCkgIT0gMCkKKyAgICAgIAkJeworICAgICAgICAJCWVycmxuKCJGQUlMICIgKyBuYW1lW2ldICsgIiBleHBlY3RlZCBjaGFyYWN0ZXIgXFx1IiArIAorICAgICAgICAJCSAgICAgIGhleChjW2ldKSk7CisgICAgICAgIAkJYnJlYWs7CisgICAgICAJCX0KKyAgICAgIAorICAgICAgCQkvL3JldHJpZXZpbmcgdW5pY29kZSBjaGFyYWN0ZXIgZnJvbSAxLjAgbmFtZQorICAgICAgCQl1YyA9IFVDaGFyYWN0ZXIuZ2V0Q2hhckZyb21OYW1lMV8wKG9sZG5hbWVbaV0pOworICAgICAgCQlpZiAodWMgIT0gY1tpXSAmJiBvbGRuYW1lW2ldLmxlbmd0aCgpICE9IDApCisgICAgICAJCXsKKyAgICAgICAgCQllcnJsbigiRkFJTCAiICsgb2xkbmFtZVtpXSArICIgZXhwZWN0ZWQgMS4wIGNoYXJhY3RlciBcXHUiICsgCisgICAgICAgIAkJICAgICAgaGV4KGNbaV0pKTsKKyAgICAgICAgCQlicmVhazsKKyAgICAgIAkJfQorICAgICAgCisgICAgICAJCS8vcmV0cmlldmluZyB1bmljb2RlIGNoYXJhY3RlciBmcm9tIDEuMCBuYW1lCisgICAgICAJCXVjID0gVUNoYXJhY3Rlci5nZXRDaGFyRnJvbUV4dGVuZGVkTmFtZShleHRlbmRlZG5hbWVbaV0pOworICAgICAgCQlpZiAodWMgIT0gY1tpXSAmJiBpICE9IDAgJiYgKGkgPT0gMSB8fCBpID09IDYpKQorICAgICAgCQl7CisgICAgICAgIAkJZXJybG4oIkZBSUwgIiArIGV4dGVuZGVkbmFtZVtpXSArIAorICAgICAgICAJCSAgICAgICIgZXhwZWN0ZWQgZXh0ZW5kZWQgY2hhcmFjdGVyIFxcdSIgKyBoZXgoY1tpXSkpOworICAgICAgICAJCWJyZWFrOworICAgICAgCQl9CisgICAgCX0KKyAgICAKKyAgICAJLy8gdGVzdCBnZXROYW1lIHdvcmtzIHdpdGggbWl4ZWQtY2FzZSBuYW1lcyAobmV3IGluIDIuMCkKKyAgICAJaWYgKDB4NjEgIT0gVUNoYXJhY3Rlci5nZXRDaGFyRnJvbU5hbWUoIkxBVGluIHNtQUxsIGxldFRFUiBBIikpIHsgCisgICAgICAgIAllcnJsbigiRkFJTDogJ0xBVGluIHNtQUxsIGxldFRFUiBBJyBzaG91bGQgcmVzdWx0IGluIGNoYXJhY3RlciAiCisgICAgICAgIAkgICAgICArICJVKzAwNjEiKTsgCisgICAgCX0gCisJICAgIAorICAgICAgICBpZiAoZ2V0SW5jbHVzaW9uKCkgPj0gNSkgeworICAgICAgICAgICAgLy8gZXh0cmEgdGVzdGluZyBkaWZmZXJlbnQgZnJvbSBpY3UKKyAgICAgICAgCWZvciAoaW50IGkgPSBVQ2hhcmFjdGVyLk1JTl9WQUxVRTsgaSA8IFVDaGFyYWN0ZXIuTUFYX1ZBTFVFOyBpICsrKQorICAgICAgICAJeworICAgICAgICAgIAkJc3RyID0gVUNoYXJhY3Rlci5nZXROYW1lKGkpOworICAgICAgICAgIAkJaWYgKHN0ciAhPSBudWxsICYmIFVDaGFyYWN0ZXIuZ2V0Q2hhckZyb21OYW1lKHN0cikgIT0gaSkKKyAgICAgICAgICAJCXsJCisgICAgICAgICAgICAJCWVycmxuKCJGQUlMIFxcdSIgKyBoZXgoaSkgKyAiICIgKyBzdHIgICsgCisgICAgICAgICAgICAgICAgICAJCQkJCQkiIHJldHJpZXZhbCBvZiBuYW1lIGFuZCB2aWNlIHZlcnNhIiApOworICAgICAgICAgICAgCQlicmVhazsKKyAgICAgICAgICAJCX0KKyAgICAgICAgCX0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gVGVzdCBnZXRDaGFyTmFtZUNoYXJhY3RlcnMKKyAgICAgICAgaWYgKGdldEluY2x1c2lvbigpID49IDEwKSB7CisgICAgICAgICAgICBib29sZWFuIG1hcFtdID0gbmV3IGJvb2xlYW5bMjU2XTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgVW5pY29kZVNldCBzZXQgPSBuZXcgVW5pY29kZVNldCgxLCAwKTsgLy8gZW1wdHkgc2V0CisgICAgICAgICAgICBVbmljb2RlU2V0IGR1bWIgPSBuZXcgVW5pY29kZVNldCgxLCAwKTsgLy8gZW1wdHkgc2V0CisgICAgCisgICAgICAgICAgICAvLyB1cHJ2X2dldENoYXJOYW1lQ2hhcmFjdGVycygpIHdpbGwgbGlrZWx5IHJldHVybiBtb3JlIGxvd2VyY2FzZQorICAgICAgICAgICAgLy8gbGV0dGVycyB0aGFuIGFjdHVhbCBjaGFyYWN0ZXIgbmFtZXMgY29udGFpbiBiZWNhdXNlCisgICAgICAgICAgICAvLyBpdCBpbmNsdWRlcyBhbGwgdGhlIGNoYXJhY3RlcnMgaW4gbG93ZXJjYXNlZCBuYW1lcyBvZgorICAgICAgICAgICAgLy8gZ2VuZXJhbCBjYXRlZ29yaWVzLCBmb3IgdGhlIGZ1bGwgcG9zc2libGUgc2V0IG9mIGV4dGVuZGVkIG5hbWVzLgorICAgICAgICAgICAgVUNoYXJhY3Rlck5hbWUuZ2V0SW5zdGFuY2UoKS5nZXRDaGFyTmFtZUNoYXJhY3RlcnMoc2V0KTsKKyAgICAKKyAgICAgICAgICAgIC8vIGJ1aWxkIHNldCB0aGUgZHVtYiAoYnV0IHN1cmUtZmlyZSkgd2F5CisgICAgICAgICAgICBBcnJheXMuZmlsbChtYXAsIGZhbHNlKTsKKyAgICAKKyAgICAgICAgICAgIGludCBtYXhMZW5ndGggPSAwOworICAgICAgICAgICAgZm9yIChpbnQgY3AgPSAwOyBjcCA8IDB4MTEwMDAwOyArKyBjcCkgeworICAgICAgICAgICAgICAgIFN0cmluZyBuID0gVUNoYXJhY3Rlci5nZXRFeHRlbmRlZE5hbWUoY3ApOworICAgICAgICAgICAgICAgIGludCBsZW4gPSBuLmxlbmd0aCgpOworICAgICAgICAgICAgICAgIGlmIChsZW4gPiBtYXhMZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgbWF4TGVuZ3RoID0gbGVuOworICAgICAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgKysgaSkgeworICAgICAgICAgICAgICAgICAgICBjaGFyIGNoID0gbi5jaGFyQXQoaSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghbWFwW2NoICYgMHhmZl0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGR1bWIuYWRkKGNoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hcFtjaCAmIDB4ZmZdID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgIGxlbmd0aCA9IFVDaGFyYWN0ZXJOYW1lLmdldEluc3RhbmNlKCkuZ2V0TWF4Q2hhck5hbWVMZW5ndGgoKTsKKyAgICAgICAgICAgIGlmIChsZW5ndGggIT0gbWF4TGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgZXJybG4oImdldE1heENoYXJOYW1lTGVuZ3RoKCk9IiArIGxlbmd0aCAKKyAgICAgICAgICAgICAgICAgICAgICArICIgZGlmZmVycyBmcm9tIHRoZSBtYXhpbXVtIGxlbmd0aCAiICsgbWF4TGVuZ3RoCisgICAgICAgICAgICAgICAgICAgICAgKyAiIG9mIGFsbCBleHRlbmRlZCBuYW1lcyIpOworICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgLy8gY29tcGFyZSB0aGUgc2V0cy4gIFdoZXJlIGlzIG15IHVzZXRfZXF1YWxzPyEhCisgICAgICAgICAgICBib29sZWFuIG9rID0gdHJ1ZTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjU2OyArKyBpKSB7CisgICAgICAgICAgICAgICAgaWYgKHNldC5jb250YWlucyhpKSAhPSBkdW1iLmNvbnRhaW5zKGkpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgweDYxIDw9IGkgJiYgaSA8PSAweDdhIC8vIGEtegorICAgICAgICAgICAgICAgICAgICAgICAgJiYgc2V0LmNvbnRhaW5zKGkpICYmICFkdW1iLmNvbnRhaW5zKGkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZ25vcmUgbG93ZXJjYXNlIGEteiB0aGF0IGFyZSBpbiBzZXQgYnV0IG5vdCBpbiBkdW1iCisgICAgICAgICAgICAgICAgICAgICAgICBvayA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0gCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgb2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgU3RyaW5nIHBhdHRlcm4xID0gc2V0LnRvUGF0dGVybih0cnVlKTsKKyAgICAgICAgICAgIFN0cmluZyBwYXR0ZXJuMiA9IGR1bWIudG9QYXR0ZXJuKHRydWUpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIW9rKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6IGdldENoYXJOYW1lQ2hhcmFjdGVycygpIHJldHVybmVkICIgKyBwYXR0ZXJuMQorICAgICAgICAgICAgICAgICAgICAgICsgIiBleHBlY3RlZCAiICsgcGF0dGVybjIgCisgICAgICAgICAgICAgICAgICAgICAgKyAiICh0b28gbWFueSBsb3dlcmNhc2UgYS16IGFyZSBvaykiKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbG9nbG4oIk9rOiBnZXRDaGFyTmFtZUNoYXJhY3RlcnMoKSByZXR1cm5lZCAiICsgcGF0dGVybjEpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgIAl9CisgIAorICAJLyoqCisgICAJKiBUZXN0aW5nIG5hbWUgaXRlcmF0aW9uCisgICAJKi8KKyAgCXB1YmxpYyB2b2lkIFRlc3ROYW1lSXRlcmF0aW9uKCkKKyAgCXsKKyAgCQlWYWx1ZUl0ZXJhdG9yIGl0ZXJhdG9yID0gVUNoYXJhY3Rlci5nZXRFeHRlbmRlZE5hbWVJdGVyYXRvcigpOworICAJCVZhbHVlSXRlcmF0b3IuRWxlbWVudCBlbGVtZW50ID0gbmV3IFZhbHVlSXRlcmF0b3IuRWxlbWVudCgpOworICAgCSAJVmFsdWVJdGVyYXRvci5FbGVtZW50IG9sZCAgICAgPSBuZXcgVmFsdWVJdGVyYXRvci5FbGVtZW50KCk7CisgICAgCS8vIHRlc3Rpbmcgc3VicmFuZ2UKKyAgICAJaXRlcmF0b3Iuc2V0UmFuZ2UoLTEwLCAtNSk7CisgICAgCWlmIChpdGVyYXRvci5uZXh0KGVsZW1lbnQpKSB7CisgICAgCQllcnJsbigiRmFpbCwgZXhwZWN0ZWQgaXRlcmF0b3IgdG8gcmV0dXJuIGZhbHNlIHdoZW4gcmFuZ2UgaXMgc2V0IG91dHNpZGUgdGhlIG1lYW5pbmdmdWwgcmFuZ2UiKTsKKyAgICAJfQorICAgIAlpdGVyYXRvci5zZXRSYW5nZSgweDExMDAwMCwgMHgxMTExMTEpOworICAgIAlpZiAoaXRlcmF0b3IubmV4dChlbGVtZW50KSkgeworICAgIAkJZXJybG4oIkZhaWwsIGV4cGVjdGVkIGl0ZXJhdG9yIHRvIHJldHVybiBmYWxzZSB3aGVuIHJhbmdlIGlzIHNldCBvdXRzaWRlIHRoZSBtZWFuaW5nZnVsIHJhbmdlIik7CisgICAgCX0KKyAgICAJdHJ5IHsKKyAgICAJCWl0ZXJhdG9yLnNldFJhbmdlKDUwLCAxMCk7CisgICAgCQllcnJsbigiRmFpbCwgZXhwZWN0ZWQgZXhjZXB0aW9uIHdoZW4gZW5jb3VudGVyZWQgaW52YWxpZCByYW5nZSIpOworICAgIAl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgIAl9CisgICAgCQkKKyAgICAJaXRlcmF0b3Iuc2V0UmFuZ2UoLTEwLCAxMCk7CisgICAgCWlmICghaXRlcmF0b3IubmV4dChlbGVtZW50KSB8fCBlbGVtZW50LmludGVnZXIgIT0gMCkgeworICAgIAkJZXJybG4oIkZhaWwsIGV4cGVjdGVkIGl0ZXJhdG9yIHRvIHJldHVybiAwIHdoZW4gcmFuZ2Ugc3RhcnQgbGltaXQgaXMgc2V0IG91dHNpZGUgdGhlIG1lYW5pbmdmdWwgcmFuZ2UiKTsKKyAgICAJfQorICAgIAkKKyAgICAJaXRlcmF0b3Iuc2V0UmFuZ2UoMHgxMEZGRkUsIDB4MjAwMDAwKTsKKyAgICAJaW50IGxhc3QgPSAwOworICAgIAl3aGlsZSAoaXRlcmF0b3IubmV4dChlbGVtZW50KSkgeworICAgIAkJbGFzdCA9IGVsZW1lbnQuaW50ZWdlcjsKKyAgICAJfQorICAgIAlpZiAobGFzdCAhPSAweDEwRkZGRikgeworICAgIAkJZXJybG4oIkZhaWwsIGV4cGVjdGVkIGl0ZXJhdG9yIHRvIHJldHVybiAweDEwRkZGRiB3aGVuIHJhbmdlIGVuZCBsaW1pdCBpcyBzZXQgb3V0c2lkZSB0aGUgbWVhbmluZ2Z1bCByYW5nZSIpOworICAgIAl9CisgICAgCQorICAgIAlpdGVyYXRvciA9IFVDaGFyYWN0ZXIuZ2V0TmFtZUl0ZXJhdG9yKCk7CQorIAkJaXRlcmF0b3Iuc2V0UmFuZ2UoMHhGLCAweDQ1KTsKKyAJCXdoaWxlIChpdGVyYXRvci5uZXh0KGVsZW1lbnQpKSB7CisgICAgCQlpZiAoZWxlbWVudC5pbnRlZ2VyIDw9IG9sZC5pbnRlZ2VyKSB7CisgICAgICAgICAJCWVycmxuKCJGQUlMIG5leHQgcmV0dXJuZWQgYSBsZXNzIGNvZGVwb2ludCBcXHUiICsgCisgICAgICAgICAJICAgICAgCUludGVnZXIudG9IZXhTdHJpbmcoZWxlbWVudC5pbnRlZ2VyKSArICIgdGhhbiBcXHUiICsgCisgICAgICAgICAJICAgICAgCUludGVnZXIudG9IZXhTdHJpbmcob2xkLmludGVnZXIpKTsKKyAgICAgICAgIAkJYnJlYWs7CisgICAgICAgIAl9CisgICAgICAgIAlpZiAoIVVDaGFyYWN0ZXIuZ2V0TmFtZShlbGVtZW50LmludGVnZXIpLmVxdWFscyhlbGVtZW50LnZhbHVlKSkgCisgICAgICAgIAl7CisgICAgICAgICAJCWVycmxuKCJGQUlMIG5leHQgY29kZXBvaW50IFxcdSIgKyAKKyAgICAgICAgIAkgICAgICAJSW50ZWdlci50b0hleFN0cmluZyhlbGVtZW50LmludGVnZXIpICsgCisgICAgICAgICAJICAgICAgCSIgZG9lcyBub3QgaGF2ZSB0aGUgZXhwZWN0ZWQgbmFtZSAiICsgCisgICAgICAgICAJICAgICAgCVVDaGFyYWN0ZXIuZ2V0TmFtZShlbGVtZW50LmludGVnZXIpICsgCisgICAgICAgICAJICAgICAgCSIgaW5zdGVhZCBoYXZlIHRoZSBuYW1lICIgKyAoU3RyaW5nKWVsZW1lbnQudmFsdWUpOworICAgICAgICAgCQlicmVhazsKKyAgICAgICAgCX0KKyAgICAgICAgCW9sZC5pbnRlZ2VyID0gZWxlbWVudC5pbnRlZ2VyOyAKKyAgICAJfQorICAgIAorICAgIAlpdGVyYXRvci5yZXNldCgpOworICAgIAlpdGVyYXRvci5uZXh0KGVsZW1lbnQpOworICAgIAlpZiAoZWxlbWVudC5pbnRlZ2VyICE9IDB4MjApIHsKKyAgICAJCWVycmxuKCJGQUlMIHJlc2V0IGluIGl0ZXJhdG9yIik7CisgICAgCX0KKyAKKyAgICAJaXRlcmF0b3Iuc2V0UmFuZ2UoMCwgMHgxMTAwMDApOworICAgIAlvbGQuaW50ZWdlciA9IDA7IAorICAgIAl3aGlsZSAoaXRlcmF0b3IubmV4dChlbGVtZW50KSkgeworICAgIAkJaWYgKGVsZW1lbnQuaW50ZWdlciAhPSAwICYmIGVsZW1lbnQuaW50ZWdlciA8PSBvbGQuaW50ZWdlcikgeworICAgICAgICAgCQllcnJsbigiRkFJTCBuZXh0IHJldHVybmVkIGEgbGVzcyBjb2RlcG9pbnQgXFx1IiArIAorICAgICAgICAgCSAgICAgIAlJbnRlZ2VyLnRvSGV4U3RyaW5nKGVsZW1lbnQuaW50ZWdlcikgKyAiIHRoYW4gXFx1IiArIAorICAgICAgICAgCSAgICAgIAlJbnRlZ2VyLnRvSGV4U3RyaW5nKG9sZC5pbnRlZ2VyKSk7CisgICAgICAgICAJCWJyZWFrOworICAgICAgICAJfQorICAgICAgICAJaWYgKCFVQ2hhcmFjdGVyLmdldE5hbWUoZWxlbWVudC5pbnRlZ2VyKS5lcXVhbHMoZWxlbWVudC52YWx1ZSkpIAorICAgICAgICAJeworICAgICAgICAgCQllcnJsbigiRkFJTCBuZXh0IGNvZGVwb2ludCBcXHUiICsgCisgICAgICAgICAJICAgICAgCQlJbnRlZ2VyLnRvSGV4U3RyaW5nKGVsZW1lbnQuaW50ZWdlcikgKyAKKyAgICAgICAgIAkgICAgICAJCSIgZG9lcyBub3QgaGF2ZSB0aGUgZXhwZWN0ZWQgbmFtZSAiICsgCisgICAgICAgICAJICAgICAgCQlVQ2hhcmFjdGVyLmdldE5hbWUoZWxlbWVudC5pbnRlZ2VyKSArIAorICAgICAgICAgCSAgICAgIAkJIiBpbnN0ZWFkIGhhdmUgdGhlIG5hbWUgIiArIChTdHJpbmcpZWxlbWVudC52YWx1ZSk7CisgICAgICAgICAJCWJyZWFrOworICAgICAgICAJfQorICAgICAgICAJZm9yIChpbnQgaSA9IG9sZC5pbnRlZ2VyICsgMTsgaSA8IGVsZW1lbnQuaW50ZWdlcjsgaSArKykgeworICAgICAgICAJCWlmIChVQ2hhcmFjdGVyLmdldE5hbWUoaSkgIT0gbnVsbCkgeworICAgICAgICAgCQkJZXJybG4oIkZBSUwgYmV0d2VlbiBjb2RlcG9pbnRzIGFyZSBub3QgbnVsbCBcXHUiICsgCisgICAgICAgICAJICAgICAgCQkJSW50ZWdlci50b0hleFN0cmluZyhvbGQuaW50ZWdlcikgKyAiIGFuZCAiICsgCisgICAgICAgICAJICAgICAgCQkJSW50ZWdlci50b0hleFN0cmluZyhlbGVtZW50LmludGVnZXIpICsgIiBoYXMgIiArIAorICAgICAgICAgCSAgICAgIAkJCUludGVnZXIudG9IZXhTdHJpbmcoaSkgKyAiIHdpdGggYSBuYW1lICIgKyAKKyAgICAgICAgIAkgICAgICAJCQlVQ2hhcmFjdGVyLmdldE5hbWUoaSkpOworICAgICAgICAgCQkJYnJlYWs7CisgICAgICAgIAkJfQorICAgICAgICAJfQorICAgICAgICAJb2xkLmludGVnZXIgPSBlbGVtZW50LmludGVnZXI7IAorICAgIAl9CisgICAgCisgICAgCWl0ZXJhdG9yID0gVUNoYXJhY3Rlci5nZXRFeHRlbmRlZE5hbWVJdGVyYXRvcigpOworICAgIAlvbGQuaW50ZWdlciA9IDA7CisgICAgCXdoaWxlIChpdGVyYXRvci5uZXh0KGVsZW1lbnQpKSB7CisgICAgCQlpZiAoZWxlbWVudC5pbnRlZ2VyICE9IDAgJiYgZWxlbWVudC5pbnRlZ2VyICE9IG9sZC5pbnRlZ2VyKSB7CisgICAgICAgICAJCWVycmxuKCJGQUlMIG5leHQgcmV0dXJuZWQgYSBjb2RlcG9pbnQgXFx1IiArIAorICAgICAgICAgCSAgICAgIAkJSW50ZWdlci50b0hleFN0cmluZyhlbGVtZW50LmludGVnZXIpICsgCisgICAgICAgICAJICAgICAgCQkiIGRpZmZlcmVudCBmcm9tIFxcdSIgKyAKKyAgICAgICAgIAkgICAgICAJCUludGVnZXIudG9IZXhTdHJpbmcob2xkLmludGVnZXIpKTsKKyAgICAgICAgIAkJYnJlYWs7CisgICAgICAgIAl9CisgICAgICAgIAlpZiAoIVVDaGFyYWN0ZXIuZ2V0RXh0ZW5kZWROYW1lKGVsZW1lbnQuaW50ZWdlcikuZXF1YWxzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQudmFsdWUpKSB7CisgICAgICAgICAJCWVycmxuKCJGQUlMIG5leHQgY29kZXBvaW50IFxcdSIgKyAKKyAgICAgICAgIAkgICAgICAJSW50ZWdlci50b0hleFN0cmluZyhlbGVtZW50LmludGVnZXIpICsgCisgICAgICAgICAJICAgICAgCSIgbmFtZSBzaG91bGQgYmUgIgorICAgICAgICAgCSAgICAgIAkrIFVDaGFyYWN0ZXIuZ2V0RXh0ZW5kZWROYW1lKGVsZW1lbnQuaW50ZWdlcikgKyAKKyAgICAgICAgIAkgICAgICAJIiBpbnN0ZWFkIG9mICIgKyAoU3RyaW5nKWVsZW1lbnQudmFsdWUpOworICAgICAgICAgCQlicmVhazsKKyAgICAgICAgCX0KKyAgICAgICAgCW9sZC5pbnRlZ2VyKys7IAorICAgIAl9CisJCWl0ZXJhdG9yID0gVUNoYXJhY3Rlci5nZXROYW1lMV8wSXRlcmF0b3IoKTsKKyAJICAgCW9sZC5pbnRlZ2VyID0gMDsKKyAgICAJd2hpbGUgKGl0ZXJhdG9yLm5leHQoZWxlbWVudCkpIHsKKyAgICAJCWxvZ2xuKEludGVnZXIudG9IZXhTdHJpbmcoZWxlbWVudC5pbnRlZ2VyKSArICIgIiArCisJICAgICAgCQkJCQkJCQkJCQkoU3RyaW5nKWVsZW1lbnQudmFsdWUpOworICAgIAkJaWYgKGVsZW1lbnQuaW50ZWdlciAhPSAwICYmIGVsZW1lbnQuaW50ZWdlciA8PSBvbGQuaW50ZWdlcikgeworICAgICAgICAgCQllcnJsbigiRkFJTCBuZXh0IHJldHVybmVkIGEgbGVzcyBjb2RlcG9pbnQgXFx1IiArIAorICAgICAgICAgCSAgICAgIAlJbnRlZ2VyLnRvSGV4U3RyaW5nKGVsZW1lbnQuaW50ZWdlcikgKyAiIHRoYW4gXFx1IiArIAorICAgICAgICAgCSAgICAgIAlJbnRlZ2VyLnRvSGV4U3RyaW5nKG9sZC5pbnRlZ2VyKSk7CisgICAgICAgICAJCWJyZWFrOworICAgICAgICAJfQorICAgICAgICAJaWYgKCFlbGVtZW50LnZhbHVlLmVxdWFscyhVQ2hhcmFjdGVyLmdldE5hbWUxXzAoCisgICAgICAgIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuaW50ZWdlcikpKSB7CisgICAgICAgICAJCWVycmxuKCJGQUlMIG5leHQgY29kZXBvaW50IFxcdSIgKyAKKyAgICAgICAgIAkgICAgICAJCUludGVnZXIudG9IZXhTdHJpbmcoZWxlbWVudC5pbnRlZ2VyKSArIAorICAgICAgICAgCSAgICAgIAkJIiBuYW1lIGNhbm5vdCBiZSBudWxsIik7CisgICAgICAgICAJCWJyZWFrOworICAgICAgICAJfQorICAgICAgICAJZm9yIChpbnQgaSA9IG9sZC5pbnRlZ2VyICsgMTsgaSA8IGVsZW1lbnQuaW50ZWdlcjsgaSArKykgeworICAgICAgICAJCWlmIChVQ2hhcmFjdGVyLmdldE5hbWUxXzAoaSkgIT0gbnVsbCkgeworICAgICAgICAgCQkJZXJybG4oIkZBSUwgYmV0d2VlbiBjb2RlcG9pbnRzIGFyZSBub3QgbnVsbCBcXHUiICsgCisgICAgICAgICAJICAgICAgCQlJbnRlZ2VyLnRvSGV4U3RyaW5nKG9sZC5pbnRlZ2VyKSArICIgYW5kICIgKyAKKyAgICAgICAgIAkgICAgICAJCUludGVnZXIudG9IZXhTdHJpbmcoZWxlbWVudC5pbnRlZ2VyKSArICIgaGFzICIgKyAKKyAgICAgICAgIAkgICAgICAJCUludGVnZXIudG9IZXhTdHJpbmcoaSkgKyAiIHdpdGggYSBuYW1lICIgKyAKKyAgICAgICAgIAkgICAgICAJCVVDaGFyYWN0ZXIuZ2V0TmFtZTFfMChpKSk7CisgICAgICAgICAJCQlicmVhazsKKyAgICAgICAgCQl9CisgICAgICAgIAl9CisgICAgICAgIAlvbGQuaW50ZWdlciA9IGVsZW1lbnQuaW50ZWdlcjsgCisgICAgCX0KKyAgCX0KKyAgCisgIAkvKioKKyAgCSogVGVzdGluZyB0aGUgZm9yIGlsbGVnYWwgY2hhcmFjdGVycworICAJKi8KKyAgCXB1YmxpYyB2b2lkIFRlc3RJc0xlZ2FsKCkgCisgIAl7CisgICAgCWludCBpbGxlZ2FsW10gPSB7MHhGRkZFLCAweDAwRkZGRiwgMHgwMDVGRkZFLCAweDAwNUZGRkYsIDB4MDAxMEZGRkUsCisgICAgCQkgICAgICAgICAgICAgMHgwMDEwRkZGRiwgMHgxMTAwMDAsIDB4MDBGREQwLCAweDAwRkRERiwgMHgwMEZERTAsCisgICAgCQkgICAgICAgICAgICAgMHgwMEZERUYsIDB4RDgwMCwgMHhEQzAwLCAtMX07CisgICAgCWludCBsZWdhbFtdID0gezB4NjEsIDB4MDBGRkZELCAweDAwMTAwMDAsIDB4MDA1RkZGRCwgMHgwMDYwMDAwLCAKKyAgICAJCSAgICAgICAgICAgMHgwMDEwRkZGRCwgMHhGRENGLCAweDAwRkRGMH07CisgICAgCWZvciAoaW50IGNvdW50ID0gMDsgY291bnQgPCBpbGxlZ2FsLmxlbmd0aDsgY291bnQgKyspIHsKKyAgICAgICAgCWlmIChVQ2hhcmFjdGVyLmlzTGVnYWwoaWxsZWdhbFtjb3VudF0pKSB7CisgICAgICAgICAgICAJZXJybG4oIkZBSUwgXFx1IiArIGhleChpbGxlZ2FsW2NvdW50XSkgKyAKKyAgICAgICAgICAgICAgICAgICAgCSIgaXMgbm90IGEgbGVnYWwgY2hhcmFjdGVyIik7CisgICAgICAgIAl9CisgICAgCX0KKyAgICAKKyAgICAJZm9yIChpbnQgY291bnQgPSAwOyBjb3VudCA8IGxlZ2FsLmxlbmd0aDsgY291bnQgKyspIHsKKyAgICAgICAgCWlmICghVUNoYXJhY3Rlci5pc0xlZ2FsKGxlZ2FsW2NvdW50XSkpIHsKKyAgICAgICAgICAgIAllcnJsbigiRkFJTCBcXHUiICsgaGV4KGxlZ2FsW2NvdW50XSkgKyAKKyAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgaXMgYSBsZWdhbCBjaGFyYWN0ZXIiKTsKKyAgICAgICAgCX0KKyAgICAJfQorICAgIAkKKyAgICAJU3RyaW5nIGlsbGVnYWxTdHIgPSAiVGhpcyBpcyBhbiBpbGxlZ2FsIHN0cmluZyAiOworICAgIAlTdHJpbmcgbGVnYWxTdHIgPSAiVGhpcyBpcyBhIGxlZ2FsIHN0cmluZyAiOworICAgIAkKKyAgICAJZm9yIChpbnQgY291bnQgPSAwOyBjb3VudCA8IGlsbGVnYWwubGVuZ3RoOyBjb3VudCArKykgeworICAgIAkJU3RyaW5nQnVmZmVyIHN0ciA9IG5ldyBTdHJpbmdCdWZmZXIoaWxsZWdhbFN0cik7CisgICAgCQlpZiAoaWxsZWdhbFtjb3VudF0gPCAweDEwMDAwKSB7CisgICAgCQkJc3RyLmFwcGVuZCgoY2hhcilpbGxlZ2FsW2NvdW50XSk7CisgICAgCQl9CisgICAgCQllbHNlIHsKKyAgICAJCQljaGFyIGxlYWQgPSBVVEYxNi5nZXRMZWFkU3Vycm9nYXRlKGlsbGVnYWxbY291bnRdKTsKKyAgICAJCQljaGFyIHRyYWlsID0gVVRGMTYuZ2V0VHJhaWxTdXJyb2dhdGUoaWxsZWdhbFtjb3VudF0pOworICAgIAkJCXN0ci5hcHBlbmQobGVhZCk7CisgICAgCQkJc3RyLmFwcGVuZCh0cmFpbCk7CisgICAgCQl9CisgICAgICAgIAlpZiAoVUNoYXJhY3Rlci5pc0xlZ2FsKHN0ci50b1N0cmluZygpKSkgeworICAgICAgICAgICAgCWVycmxuKCJGQUlMICIgKyBoZXgoc3RyLnRvU3RyaW5nKCkpICsgCisgICAgICAgICAgICAJICAgICAgIiBpcyBub3QgYSBsZWdhbCBzdHJpbmciKTsKKyAgICAgICAgCX0KKyAgICAJfQorICAgIAorICAgIAlmb3IgKGludCBjb3VudCA9IDA7IGNvdW50IDwgbGVnYWwubGVuZ3RoOyBjb3VudCArKykgeworICAgIAkJU3RyaW5nQnVmZmVyIHN0ciA9IG5ldyBTdHJpbmdCdWZmZXIobGVnYWxTdHIpOworICAgIAkJaWYgKGxlZ2FsW2NvdW50XSA8IDB4MTAwMDApIHsKKyAgICAJCQlzdHIuYXBwZW5kKChjaGFyKWxlZ2FsW2NvdW50XSk7CisgICAgCQl9CisgICAgCQllbHNlIHsKKyAgICAJCQljaGFyIGxlYWQgPSBVVEYxNi5nZXRMZWFkU3Vycm9nYXRlKGxlZ2FsW2NvdW50XSk7CisgICAgCQkJY2hhciB0cmFpbCA9IFVURjE2LmdldFRyYWlsU3Vycm9nYXRlKGxlZ2FsW2NvdW50XSk7CisgICAgCQkJc3RyLmFwcGVuZChsZWFkKTsKKyAgICAJCQlzdHIuYXBwZW5kKHRyYWlsKTsKKyAgICAJCX0KKyAgICAgICAgCWlmICghVUNoYXJhY3Rlci5pc0xlZ2FsKHN0ci50b1N0cmluZygpKSkgeworICAgICAgICAgICAgCWVycmxuKCJGQUlMICIgKyBoZXgoc3RyLnRvU3RyaW5nKCkpICsgIiBpcyBhIGxlZ2FsIHN0cmluZyIpOworICAgICAgICAJfQorICAgIAl9CisgIAl9CisgIAorICAJLyoqCisgIAkgKiBUZXN0IGdldENvZGVQb2ludAorICAJICovCisgIAlwdWJsaWMgdm9pZCBUZXN0Q29kZVBvaW50KCkKKyAgCXsKKyAgCQlpbnQgY2ggPSAweDEwMDAwOworICAJCWZvciAoY2hhciBpID0gMHhEODAwOyBpIDwgMHhEQzAwOyBpICsrKSB7CisgIAkJCWZvciAoY2hhciBqID0gMHhEQzAwOyBqIDw9IDB4REZGRjsgaiArKykgeworICAJCQkJaWYgKFVDaGFyYWN0ZXIuZ2V0Q29kZVBvaW50KGksIGopICE9IGNoKSB7CisgIAkJCQkJZXJybG4oIkVycm9yIGdldHRpbmcgY29kZXBvaW50IGZvciBzdXJyb2dhdGUgIiArCisgIAkJCQkJICAgICAgImNoYXJhY3RlcnMgXFx1IgorICAJCQkJCSAgICAgICsgSW50ZWdlci50b0hleFN0cmluZyhpKSArICIgXFx1IiArIAorICAJCQkJCSAgICAgIEludGVnZXIudG9IZXhTdHJpbmcoaikpOwkgICAgICAKKyAgCQkJCX0KKyAgCQkJCWNoICsrOworICAJCQl9CisgIAkJfQorICAJCXRyeSAKKyAgCQl7CisgIAkJCVVDaGFyYWN0ZXIuZ2V0Q29kZVBvaW50KChjaGFyKTB4RDdmZiwgKGNoYXIpMHhEQzAwKTsKKyAgCQkJZXJybG4oIkludmFsaWQgc3Vycm9nYXRlIGNoYXJhY3RlcnMgc2hvdWxkIG5vdCBmb3JtIGEgIiArCisgIAkJCSAgICAgICJzdXBwbGVtZW50YXJ5Iik7CisgIAkJfSBjYXRjaChFeGNlcHRpb24gZSkgeworICAJCX0KKyAgCQlmb3IgKGNoYXIgaSA9IDA7IGkgPCAweEZGRkY7IGkrKykgeworICAJCQlpZiAoaSA9PSAweEZGRkUgfHwgCisgIAkJCSAgICAoaSA+PSAweEQ4MDAgJiYgaSA8PSAweERGRkYpIHx8IAorICAJCQkgICAgKGkgPj0gMHhGREQwICYmIGkgPD0gMHhGREVGKSkgeworICAJCQkgICAgLy8gbm90IGEgY2hhcmFjdGVyCisgIAkJCQl0cnkgeworICAJCQkJCVVDaGFyYWN0ZXIuZ2V0Q29kZVBvaW50KGkpOworICAJCQkJCWVycmxuKCJOb3QgYSBjaGFyYWN0ZXIgaXMgbm90IGEgdmFsaWQgY29kZXBvaW50Iik7CisgIAkJCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAJCQkJfQorICAJCQl9CisgIAkJCWVsc2UgeworICAJCQkJaWYgKFVDaGFyYWN0ZXIuZ2V0Q29kZVBvaW50KGkpICE9IGkpIHsKKyAgCQkJCQllcnJsbigiQSB2YWxpZCBjb2RlcG9pbnQgc2hvdWxkIHJldHVybiBpdHNlbGYiKTsKKyAgCQkJCX0KKyAgCQkJfQorICAJCX0KKyAgCX0KKyAgCQorICAJLyoqCisgIAkqIFRoaXMgbWV0aG9kIGlzIGFsaXR0bGUgZGlmZmVyZW50IGZyb20gdGhlIHR5cGUgdGVzdCBpbiBpY3U0Yy4KKyAgCSogQnV0IGNvbWJpbmVkIHdpdGggdGVzdFVuaWNvZGVEYXRhLCB0aGV5IGJhc2ljYWxseSBkbyB0aGUgc2FtZSB0aGluZy4KKyAgCSovCisgIAlwdWJsaWMgdm9pZCBUZXN0SXRlcmF0aW9uKCkgCisgIAl7CisgICAgICAJaW50IGxpbWl0ICAgICA9IDA7CisgICAgICAJaW50IHByZXZ0eXBlICA9IC0xOworICAgICAgICBpbnQgdGVzdFtdW109e3sweDQxLCBVQ2hhcmFjdGVyQ2F0ZWdvcnkuVVBQRVJDQVNFX0xFVFRFUn0sCisgICAgICAgICAgICAgICAgICAgICAgICB7MHgzMDgsIFVDaGFyYWN0ZXJDYXRlZ29yeS5OT05fU1BBQ0lOR19NQVJLfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsweGZmZmUsIFVDaGFyYWN0ZXJDYXRlZ29yeS5HRU5FUkFMX09USEVSX1RZUEVTfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsweGUwMDQxLCBVQ2hhcmFjdGVyQ2F0ZWdvcnkuRk9STUFUfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsweGVmZmZmLCBVQ2hhcmFjdGVyQ2F0ZWdvcnkuVU5BU1NJR05FRH19OworCisgICAgICAgIC8vIGRlZmF1bHQgQmlkaSBjbGFzc2VzIGZvciB1bmFzc2lnbmVkIGNvZGUgcG9pbnRzIAorICAgICAgICBpbnQgZGVmYXVsdEJpZGlbXVtdPXt7IDB4MDU5MCwgVUNoYXJhY3RlckRpcmVjdGlvbi5MRUZUX1RPX1JJR0hUIH0sCisgICAgICAgICAgICB7IDB4MDYwMCwgVUNoYXJhY3RlckRpcmVjdGlvbi5SSUdIVF9UT19MRUZUIH0sCisgICAgICAgICAgICB7IDB4MDdDMCwgVUNoYXJhY3RlckRpcmVjdGlvbi5SSUdIVF9UT19MRUZUX0FSQUJJQyB9LAorICAgICAgICAgICAgeyAweEZCMUQsIFVDaGFyYWN0ZXJEaXJlY3Rpb24uTEVGVF9UT19SSUdIVCB9LAorICAgICAgICAgICAgeyAweEZCNTAsIFVDaGFyYWN0ZXJEaXJlY3Rpb24uUklHSFRfVE9fTEVGVCB9LAorICAgICAgICAgICAgeyAweEZFMDAsIFVDaGFyYWN0ZXJEaXJlY3Rpb24uUklHSFRfVE9fTEVGVF9BUkFCSUMgfSwKKyAgICAgICAgICAgIHsgMHhGRTcwLCBVQ2hhcmFjdGVyRGlyZWN0aW9uLkxFRlRfVE9fUklHSFQgfSwKKyAgICAgICAgICAgIHsgMHhGRjAwLCBVQ2hhcmFjdGVyRGlyZWN0aW9uLlJJR0hUX1RPX0xFRlRfQVJBQklDIH0sCisgICAgICAgICAgICB7IDB4MTEwMDAwLCBVQ2hhcmFjdGVyRGlyZWN0aW9uLkxFRlRfVE9fUklHSFQgfX07CisgICAgCisgICAgICAJUmFuZ2VWYWx1ZUl0ZXJhdG9yIGl0ZXJhdG9yID0gVUNoYXJhY3Rlci5nZXRUeXBlSXRlcmF0b3IoKTsKKyAgICAgIAlSYW5nZVZhbHVlSXRlcmF0b3IuRWxlbWVudCByZXN1bHQgPSBuZXcgUmFuZ2VWYWx1ZUl0ZXJhdG9yLkVsZW1lbnQoKTsKKyAgICAgIAl3aGlsZSAoaXRlcmF0b3IubmV4dChyZXN1bHQpKSB7CisgICAgICAgICAgCWlmIChyZXN1bHQuc3RhcnQgIT0gbGltaXQpIHsKKyAgICAgICAgICAgICAgCWVycmxuKCJVQ2hhcmFjdGVySXRlcmF0aW9uIGZhaWxlZDogUmFuZ2VzIG5vdCBjb250aW51b3VzICIgKyAKKyAgICAgICAgICAgICAgICAgICAgCSIweCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKHJlc3VsdC5zdGFydCkpOworICAgICAgICAgIAl9CisgICAgICAgICAgCisgICAgICAgICAgCWxpbWl0ID0gcmVzdWx0LmxpbWl0OworICAgICAgICAgIAlpZiAocmVzdWx0LnZhbHVlID09IHByZXZ0eXBlKSB7CisgICAgICAgICAgICAgIAllcnJsbigiVHlwZSBvZiB0aGUgbmV4dCBzZXQgb2YgZW51bWVyYXRpb24gc2hvdWxkIGJlIGRpZmZlcmVudCIpOworICAgICAgICAgIAl9CisgICAgICAgICAgCXByZXZ0eXBlID0gcmVzdWx0LnZhbHVlOworICAgICAgICAgIAorCQkgIAlmb3IgKGludCBpID0gcmVzdWx0LnN0YXJ0OyBpIDwgbGltaXQ7IGkgKyspIHsKKyAgICAgICAgICAgICAgCWludCB0ZW1wdHlwZSA9IFVDaGFyYWN0ZXIuZ2V0VHlwZShpKTsKKyAgICAgICAgICAgICAgCWlmICh0ZW1wdHlwZSAhPSByZXN1bHQudmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgIAllcnJsbigiVUNoYXJhY3Rlckl0ZXJhdGlvbiBmYWlsZWQ6IENvZGVwb2ludCBcXHUiICsgCisgICAgICAgICAgICAgICAgICAgICAgICAJSW50ZWdlci50b0hleFN0cmluZyhpKSArICIgc2hvdWxkIGJlIG9mIHR5cGUgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAJdGVtcHR5cGUgKyAiIG5vdCAiICsgcmVzdWx0LnZhbHVlKTsKKyAgICAgICAgICAgICAgCX0KKyAgICAgICAgICAJfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRlc3QubGVuZ3RoOyArKyBpKSB7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5zdGFydCA8PSB0ZXN0W2ldWzBdICYmIHRlc3RbaV1bMF0gPCByZXN1bHQubGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC52YWx1ZSAhPSB0ZXN0W2ldWzFdKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbigiZXJyb3I6IGdldFR5cGVzKCkgaGFzIHJhbmdlIFsiIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKHJlc3VsdC5zdGFydCkgKyAiLCAiIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKHJlc3VsdC5saW1pdCkgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICJdIHdpdGggdHlwZSAiICsgcmVzdWx0LnZhbHVlIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiIGluc3RlYWQgb2YgWyIgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIEludGVnZXIudG9IZXhTdHJpbmcodGVzdFtpXVswXSkgKyAiLCAiIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKHRlc3RbaV1bMV0pKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICAgICAvLyBMaW5lQnJlYWsudHh0IHNwZWNpZmllczoKKyAgICAgICAgICAgIC8vICAgIyAgLSBBc3NpZ25lZCBjaGFyYWN0ZXJzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgZXhwbGljaXRseSBhcmUgZ2l2ZW4gdGhlIHZhbHVlCisgICAgICAgICAgICAvLyAgICMgICAgIkFMIi4KKyAgICAgICAgICAgIC8vICAgIyAgLSBVbmFzc2lnbmVkIGNoYXJhY3RlcnMgYXJlIGdpdmVuIHRoZSB2YWx1ZSAiWFgiLgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIFBVQSBjaGFyYWN0ZXJzIGFyZSBsaXN0ZWQgZXhwbGljaXRseSB3aXRoICJYWCIuCisgICAgICAgICAgICAvLyBWZXJpZnkgdGhhdCBubyBhc3NpZ25lZCBjaGFyYWN0ZXIgaGFzICJYWCIuCisgICAgICAgICAgICBpZiAocmVzdWx0LnZhbHVlICE9IFVDaGFyYWN0ZXJDYXRlZ29yeS5VTkFTU0lHTkVEIAorICAgICAgICAgICAgICAgICYmIHJlc3VsdC52YWx1ZSAhPSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuUFJJVkFURV9VU0UpIHsKKyAgICAgICAgICAgICAgICBpbnQgYyA9IHJlc3VsdC5zdGFydDsKKyAgICAgICAgICAgICAgICB3aGlsZSAoYyA8IHJlc3VsdC5saW1pdCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PSBVQ2hhcmFjdGVyLmdldEludFByb3BlcnR5VmFsdWUoYywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVUHJvcGVydHkuTElORV9CUkVBSykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2xuKCJlcnJvciBVUHJvcGVydHkuTElORV9CUkVBSyhhc3NpZ25lZCBcXHUiIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBVdGlsaXR5LmhleChjLCA0KSArICIpPVhYIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgKysgYzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIAorICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIFZlcmlmeSBkZWZhdWx0IEJpZGkgY2xhc3Nlcy4KKyAgICAgICAgICAgICAqIFNlZSB0YWJsZSAzLTcgIkJpZGlyZWN0aW9uYWwgQ2hhcmFjdGVyIFR5cGVzIiBpbiBVQVggIzkuCisgICAgICAgICAgICAgKiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL3JlcG9ydHMvdHI5LworICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAocmVzdWx0LnZhbHVlID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5VTkFTU0lHTkVEIAorICAgICAgICAgICAgICAgIHx8IHJlc3VsdC52YWx1ZSA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuUFJJVkFURV9VU0UpIHsKKyAgICAgICAgICAgICAgICBpbnQgYyA9IHJlc3VsdC5zdGFydDsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGRlZmF1bHRCaWRpLmxlbmd0aCAmJiBjIDwgcmVzdWx0LmxpbWl0OyAKKyAgICAgICAgICAgICAgICAgICAgICsrIGkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgPCBkZWZhdWx0QmlkaVtpXVswXSkgeworICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGMgPCByZXN1bHQubGltaXQgJiYgYyA8IGRlZmF1bHRCaWRpW2ldWzBdKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFVDaGFyYWN0ZXIuZ2V0RGlyZWN0aW9uKGMpICE9IGRlZmF1bHRCaWRpW2ldWzFdIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBVQ2hhcmFjdGVyLmdldEludFByb3BlcnR5VmFsdWUoYywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVByb3BlcnR5LkJJRElfQ0xBU1MpIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPSBkZWZhdWx0QmlkaVtpXVsxXSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbigiZXJyb3I6IGdldERpcmVjdGlvbih1bmFzc2lnbmVkL1BVQSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgSW50ZWdlci50b0hleFN0cmluZyhjKSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiKSBzaG91bGQgYmUgIiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBkZWZhdWx0QmlkaVtpXVsxXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrIGM7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAJfQorICAgICAgCisgICAgICAJaXRlcmF0b3IucmVzZXQoKTsKKyAgICAgIAlpZiAoaXRlcmF0b3IubmV4dChyZXN1bHQpID09IGZhbHNlIHx8IHJlc3VsdC5zdGFydCAhPSAwKSB7CisgICAgICAgICAgCVN5c3RlbS5vdXQucHJpbnRsbigicmVzdWx0ICIgKyByZXN1bHQuc3RhcnQpOworICAgICAgICAgIAllcnJsbigiVUNoYXJhY3Rlckl0ZXJhdGlvbiByZXNldCgpIGZhaWxlZCIpOworICAgICAgCX0KKyAgCX0KKyAgCisgIAkvKioKKyAgCSAqIFRlc3RpbmcgZ2V0QWdlCisgICAJICovCisgIAlwdWJsaWMgdm9pZCBUZXN0R2V0QWdlKCkgCisgIAl7CisgIAkJaW50IGFnZXNbXSA9IHsweDQxLCAgICAxLCAxLCAwLCAwLAorCQkJCQkgIDB4ZmZmZiwgIDEsIDEsIDAsIDAsCisgICAgICAgICAgICAgICAgICAgICAgMHgyMGFiLCAgMiwgMCwgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAweDJmZmZlLCAyLCAwLCAwLCAwLAorICAgICAgICAgICAgICAgICAgICAgIDB4MjBhYywgIDIsIDEsIDAsIDAsCisgICAgICAgIAkJCSAgMHhmYjFkLCAgMywgMCwgMCwgMCwKKyAgICAgICAgCQkJICAweDNmNCwgICAzLCAxLCAwLCAwLAorICAgICAgICAJCQkgIDB4MTAzMDAsIDMsIDEsIDAsIDAsCisgICAgICAgIAkJCSAgMHgyMjAsICAgMywgMiwgMCwgMCwKKyAgICAgICAgCQkJICAweGZmNjAsICAzLCAyLCAwLCAwfTsKKyAgCQlmb3IgKGludCBpID0gMDsgaSA8IGFnZXMubGVuZ3RoOyBpICs9IDUpIHsKKyAgCQkJVmVyc2lvbkluZm8gYWdlID0gVUNoYXJhY3Rlci5nZXRBZ2UoYWdlc1tpXSk7CisgICAgICAgIAlpZiAoYWdlICE9IFZlcnNpb25JbmZvLmdldEluc3RhbmNlKGFnZXNbaSArIDFdLCBhZ2VzW2kgKyAyXSwKKyAgICAgICAgCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlc1tpICsgM10sIGFnZXNbaSArIDRdKSkgeworICAgICAgICAgICAgCWVycmxuKCJlcnJvcjogZ2V0QWdlKFxcdSIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKGFnZXNbaV0pICsKKyAgICAgICAgICAgIAkgICAgICAiKSA9PSAiICsgYWdlLnRvU3RyaW5nKCkgKyAiIGluc3RlYWQgb2YgIiArIAorCQkJCQkgIGFnZXNbaSArIDFdICsgIi4iICsgYWdlc1tpICsgMl0gKyAiLiIgKyBhZ2VzW2kgKyAzXSArIAorCQkJCQkgICIuIiArIGFnZXNbaSArIDRdKTsKKyAgICAgICAgCX0KKyAgICAgICAgfQorCX0KKyAgCisgIAkvKioKKyAgCSAqIFRlc3QgYmluYXJ5IG5vbiBjb3JlIHByb3BlcnRpZXMKKyAgCSAqLworICAJcHVibGljIHZvaWQgVGVzdEFkZGl0aW9uYWxQcm9wZXJ0aWVzKCkgCisgIAl7CisgICAgCS8vIHRlc3QgZGF0YSBmb3IgaGFzQmluYXJ5UHJvcGVydHkoKQorICAgIAlpbnQgcHJvcHNbXVtdID0geyAvLyBjb2RlIHBvaW50LCBwcm9wZXJ0eQorCSAgICAgICAgeyAweDA2MjcsIFVQcm9wZXJ0eS5BTFBIQUJFVElDIH0sCisJICAgICAgICB7IDB4MTAzNGEsIFVQcm9wZXJ0eS5BTFBIQUJFVElDIH0sCisJICAgICAgICB7IDB4MjAyOCwgVVByb3BlcnR5LkFMUEhBQkVUSUMgfSwKKwkKKwkgICAgICAgIHsgMHgwMDY2LCBVUHJvcGVydHkuQVNDSUlfSEVYX0RJR0lUIH0sCisJICAgICAgICB7IDB4MDA2NywgVVByb3BlcnR5LkFTQ0lJX0hFWF9ESUdJVCB9LAorCQorCSAgICAgICAgeyAweDIwMmMsIFVQcm9wZXJ0eS5CSURJX0NPTlRST0wgfSwKKwkgICAgICAgIHsgMHgyMDJmLCBVUHJvcGVydHkuQklESV9DT05UUk9MIH0sCisJCisJICAgICAgICB7IDB4MDAzYywgVVByb3BlcnR5LkJJRElfTUlSUk9SRUQgfSwKKwkgICAgICAgIHsgMHgwMDNkLCBVUHJvcGVydHkuQklESV9NSVJST1JFRCB9LAorCQorCSAgICAgICAgeyAweDA1OGEsIFVQcm9wZXJ0eS5EQVNIIH0sCisJICAgICAgICB7IDB4MDA3ZSwgVVByb3BlcnR5LkRBU0ggfSwKKwkKKwkgICAgICAgIHsgMHgwYzRkLCBVUHJvcGVydHkuRElBQ1JJVElDIH0sCisJICAgICAgICB7IDB4MzAwMCwgVVByb3BlcnR5LkRJQUNSSVRJQyB9LAorCQorCSAgICAgICAgeyAweDBlNDYsIFVQcm9wZXJ0eS5FWFRFTkRFUiB9LAorCSAgICAgICAgeyAweDAwMjAsIFVQcm9wZXJ0eS5FWFRFTkRFUiB9LAorCQorCSAgICAgICAgeyAweGZiMWQsIFVQcm9wZXJ0eS5GVUxMX0NPTVBPU0lUSU9OX0VYQ0xVU0lPTiB9LAorCSAgICAgICAgeyAweDFkMTVmLCBVUHJvcGVydHkuRlVMTF9DT01QT1NJVElPTl9FWENMVVNJT04gfSwKKwkgICAgICAgIHsgMHhmYjFlLCBVUHJvcGVydHkuRlVMTF9DT01QT1NJVElPTl9FWENMVVNJT04gfSwKKwkKKwkgICAgICAgIHsgMHgwMDQ0LCBVUHJvcGVydHkuSEVYX0RJR0lUIH0sCisJICAgICAgICB7IDB4ZmY0NiwgVVByb3BlcnR5LkhFWF9ESUdJVCB9LAorCSAgICAgICAgeyAweDAwNDcsIFVQcm9wZXJ0eS5IRVhfRElHSVQgfSwKKwkKKwkgICAgICAgIHsgMHgzMGZiLCBVUHJvcGVydHkuSFlQSEVOIH0sCisJICAgICAgICB7IDB4ZmU1OCwgVVByb3BlcnR5LkhZUEhFTiB9LAorCQorCSAgICAgICAgeyAweDIxNzIsIFVQcm9wZXJ0eS5JRF9DT05USU5VRSB9LAorCSAgICAgICAgeyAweDAzMDcsIFVQcm9wZXJ0eS5JRF9DT05USU5VRSB9LAorCSAgICAgICAgeyAweDAwNWMsIFVQcm9wZXJ0eS5JRF9DT05USU5VRSB9LAorCQorCSAgICAgICAgeyAweDIxNzIsIFVQcm9wZXJ0eS5JRF9TVEFSVCB9LAorCSAgICAgICAgeyAweDAwN2EsIFVQcm9wZXJ0eS5JRF9TVEFSVCB9LAorCSAgICAgICAgeyAweDAwMzksIFVQcm9wZXJ0eS5JRF9TVEFSVCB9LAorCQorCSAgICAgICAgeyAweDRkYjUsIFVQcm9wZXJ0eS5JREVPR1JBUEhJQyB9LAorCSAgICAgICAgeyAweDJmOTk5LCBVUHJvcGVydHkuSURFT0dSQVBISUMgfSwKKwkgICAgICAgIHsgMHgyZjk5LCBVUHJvcGVydHkuSURFT0dSQVBISUMgfSwKKwkKKwkgICAgICAgIHsgMHgyMDBjLCBVUHJvcGVydHkuSk9JTl9DT05UUk9MIH0sCisJICAgICAgICB7IDB4MjAyOSwgVVByb3BlcnR5LkpPSU5fQ09OVFJPTCB9LAorCQorCSAgICAgICAgeyAweDFkN2JjLCBVUHJvcGVydHkuTE9XRVJDQVNFIH0sCisJICAgICAgICB7IDB4MDM0NSwgVVByb3BlcnR5LkxPV0VSQ0FTRSB9LAorCSAgICAgICAgeyAweDAwMzAsIFVQcm9wZXJ0eS5MT1dFUkNBU0UgfSwKKwkKKwkgICAgICAgIHsgMHgxZDdhOSwgVVByb3BlcnR5Lk1BVEggfSwKKwkgICAgICAgIHsgMHgyMTM1LCBVUHJvcGVydHkuTUFUSCB9LAorCSAgICAgICAgeyAweDAwNjIsIFVQcm9wZXJ0eS5NQVRIIH0sCisJCisJICAgICAgICB7IDB4ZmRlMSwgVVByb3BlcnR5Lk5PTkNIQVJBQ1RFUl9DT0RFX1BPSU5UIH0sCisJICAgICAgICB7IDB4MTBmZmZmLCBVUHJvcGVydHkuTk9OQ0hBUkFDVEVSX0NPREVfUE9JTlQgfSwKKwkgICAgICAgIHsgMHgxMGZmZmQsIFVQcm9wZXJ0eS5OT05DSEFSQUNURVJfQ09ERV9QT0lOVCB9LAorCQorCSAgICAgICAgeyAweDAwMjIsIFVQcm9wZXJ0eS5RVU9UQVRJT05fTUFSSyB9LAorCSAgICAgICAgeyAweGZmNjIsIFVQcm9wZXJ0eS5RVU9UQVRJT05fTUFSSyB9LAorCSAgICAgICAgeyAweGQ4NDAsIFVQcm9wZXJ0eS5RVU9UQVRJT05fTUFSSyB9LAorCQorCSAgICAgICAgeyAweDA2MWYsIFVQcm9wZXJ0eS5URVJNSU5BTF9QVU5DVFVBVElPTiB9LAorCSAgICAgICAgeyAweGUwMDNmLCBVUHJvcGVydHkuVEVSTUlOQUxfUFVOQ1RVQVRJT04gfSwKKwkKKwkgICAgICAgIHsgMHgxZDQ0YSwgVVByb3BlcnR5LlVQUEVSQ0FTRSB9LAorCSAgICAgICAgeyAweDIxNjIsIFVQcm9wZXJ0eS5VUFBFUkNBU0UgfSwKKwkgICAgICAgIHsgMHgwMzQ1LCBVUHJvcGVydHkuVVBQRVJDQVNFIH0sCisJCisJICAgICAgICB7IDB4MDAyMCwgVVByb3BlcnR5LldISVRFX1NQQUNFIH0sCisJICAgICAgICB7IDB4MjAyZiwgVVByb3BlcnR5LldISVRFX1NQQUNFIH0sCisJICAgICAgICB7IDB4MzAwMSwgVVByb3BlcnR5LldISVRFX1NQQUNFIH0sCisJCisJICAgICAgICB7IDB4MDcxMSwgVVByb3BlcnR5LlhJRF9DT05USU5VRSB9LAorCSAgICAgICAgeyAweDFkMWFhLCBVUHJvcGVydHkuWElEX0NPTlRJTlVFIH0sCisJICAgICAgICB7IDB4MDA3YywgVVByb3BlcnR5LlhJRF9DT05USU5VRSB9LAorCQorCSAgICAgICAgeyAweDE2ZWUsIFVQcm9wZXJ0eS5YSURfU1RBUlQgfSwKKwkgICAgICAgIHsgMHgyMzQ1NiwgVVByb3BlcnR5LlhJRF9TVEFSVCB9LAorCSAgICAgICAgeyAweDFkMWFhLCBVUHJvcGVydHkuWElEX1NUQVJUIH0sCisJCisJICAgICAgICAvLyBWZXJzaW9uIGJyZWFrOgorCSAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIGFyZSBvbmx5IHN1cHBvcnRlZCBzdGFydGluZyB3aXRoIHRoZQorCSAgICAgICAgLy8gVVByb3BlcnR5LlVuaWNvZGUgdmVyc2lvbiBpbmRpY2F0ZWQgaW4gdGhlIHNlY29uZCBmaWVsZC4KKwkgICAgICAgICAKKwkgICAgICAgIHsgLTEsIDB4MzIsIDAgfSwKKwkKKwkgICAgICAgIHsgMHgxODBjLCBVUHJvcGVydHkuREVGQVVMVF9JR05PUkFCTEVfQ09ERV9QT0lOVCB9LAorCSAgICAgICAgeyAweGZlMDIsIFVQcm9wZXJ0eS5ERUZBVUxUX0lHTk9SQUJMRV9DT0RFX1BPSU5UIH0sCisJICAgICAgICB7IDB4MTgwMSwgVVByb3BlcnR5LkRFRkFVTFRfSUdOT1JBQkxFX0NPREVfUE9JTlQgfSwKKwkKKwkgICAgICAgIHsgMHgwMzQxLCBVUHJvcGVydHkuREVQUkVDQVRFRCB9LAorCSAgICAgICAgeyAweGUwMDQxLCBVUHJvcGVydHkuREVQUkVDQVRFRCB9LAorCQorCSAgICAgICAgeyAweDAwYTAsIFVQcm9wZXJ0eS5HUkFQSEVNRV9CQVNFIH0sCisJICAgICAgICB7IDB4MGE0ZCwgVVByb3BlcnR5LkdSQVBIRU1FX0JBU0UgfSwKKwkgICAgICAgIHsgMHhmZjlmLCBVUHJvcGVydHkuR1JBUEhFTUVfQkFTRSB9LAorCQorCSAgICAgICAgeyAweDAzMDAsIFVQcm9wZXJ0eS5HUkFQSEVNRV9FWFRFTkQgfSwKKwkgICAgICAgIHsgMHhmZjlmLCBVUHJvcGVydHkuR1JBUEhFTUVfRVhURU5EIH0sCisJICAgICAgICB7IDB4MGE0ZCwgVVByb3BlcnR5LkdSQVBIRU1FX0VYVEVORCB9LAorCQorCSAgICAgICAgeyAweDBhNGQsIFVQcm9wZXJ0eS5HUkFQSEVNRV9MSU5LIH0sCisJICAgICAgICB7IDB4ZmY5ZiwgVVByb3BlcnR5LkdSQVBIRU1FX0xJTksgfSwKKwkKKwkgICAgICAgIHsgMHgyZmY3LCBVUHJvcGVydHkuSURTX0JJTkFSWV9PUEVSQVRPUiB9LAorCSAgICAgICAgeyAweDJmZjMsIFVQcm9wZXJ0eS5JRFNfQklOQVJZX09QRVJBVE9SIH0sCisJCisJICAgICAgICB7IDB4MmZmMywgVVByb3BlcnR5LklEU19UUklOQVJZX09QRVJBVE9SIH0sCisJICAgICAgICB7IDB4MmYwMywgVVByb3BlcnR5LklEU19UUklOQVJZX09QRVJBVE9SIH0sCisJCisJICAgICAgICB7IDB4MGVjMSwgVVByb3BlcnR5LkxPR0lDQUxfT1JERVJfRVhDRVBUSU9OIH0sCisJICAgICAgICB7IDB4ZGNiYSwgVVByb3BlcnR5LkxPR0lDQUxfT1JERVJfRVhDRVBUSU9OIH0sCisJCisJICAgICAgICB7IDB4MmU5YiwgVVByb3BlcnR5LlJBRElDQUwgfSwKKwkgICAgICAgIHsgMHg0ZTAwLCBVUHJvcGVydHkuUkFESUNBTCB9LAorCQorCSAgICAgICAgeyAweDAxMmYsIFVQcm9wZXJ0eS5TT0ZUX0RPVFRFRCB9LAorCSAgICAgICAgeyAweDAwNDksIFVQcm9wZXJ0eS5TT0ZUX0RPVFRFRCB9LAorCQorCSAgICAgICAgeyAweGZhMTEsIFVQcm9wZXJ0eS5VTklGSUVEX0lERU9HUkFQSCB9LAorCSAgICAgICAgeyAweGZhMTIsIFVQcm9wZXJ0eS5VTklGSUVEX0lERU9HUkFQSCB9LAorICAgICAgICAgICAgCisgICAgICAgICAgICB7IDB4MDJBRiwgVVByb3BlcnR5LkJMT0NLfSwKKyAgICAgICAgICAgIHsgMHgwQzRFLCBVUHJvcGVydHkuQkxPQ0t9LAorICAgICAgICAgICAgeyAweDE1NUEsIFVQcm9wZXJ0eS5CTE9DS30sCisgICAgICAgICAgICB7IDB4MTcxNywgVVByb3BlcnR5LkJMT0NLfSwKKyAgICAgICAgICAgIHsgMHgxQUZGLCBVUHJvcGVydHkuQkxPQ0t9LAorICAgICAgICAgICAgeyAweDMwNDAsIFVQcm9wZXJ0eS5CTE9DS30sCisgICAgICAgICAgICB7IDB4MUQwRkYsIFVQcm9wZXJ0eS5CTE9DS30sCisgICAgICAgICAgICB7IDB4MTBEMEZGLCBVUHJvcGVydHkuQkxPQ0t9LAorICAgICAgICAgICAgeyAweEVGRkZGLCBVUHJvcGVydHkuQkxPQ0t9LAorICAgIAorICAgICAgICAgICAgLy8gVVByb3BlcnR5LkNBTk9OSUNBTF9DT01CSU5JTkdfQ0xBU1MgdGVzdGVkIGZvciBhc3NpZ25lZCAKKyAgICAgICAgICAgIC8vIGNoYXJhY3RlcnMgaW4gVGVzdFVuaWNvZGVEYXRhKCkKKyAgICAgICAgICAgIHsgMHhkN2Q3LCBVUHJvcGVydHkuQ0FOT05JQ0FMX0NPTUJJTklOR19DTEFTU30sCisgICAgCisgICAgICAgICAgICB7IDB4MDBBMCwgVVByb3BlcnR5LkRFQ09NUE9TSVRJT05fVFlQRX0sCisgICAgICAgICAgICB7IDB4MDBBOCwgVVByb3BlcnR5LkRFQ09NUE9TSVRJT05fVFlQRX0sCisgICAgICAgICAgICB7IDB4MDBiZiwgVVByb3BlcnR5LkRFQ09NUE9TSVRJT05fVFlQRX0sCisgICAgICAgICAgICB7IDB4MDBjMCwgVVByb3BlcnR5LkRFQ09NUE9TSVRJT05fVFlQRX0sCisgICAgICAgICAgICB7IDB4MUU5QiwgVVByb3BlcnR5LkRFQ09NUE9TSVRJT05fVFlQRX0sCisgICAgICAgICAgICB7IDB4QkNERSwgVVByb3BlcnR5LkRFQ09NUE9TSVRJT05fVFlQRX0sCisgICAgICAgICAgICB7IDB4RkI1RCwgVVByb3BlcnR5LkRFQ09NUE9TSVRJT05fVFlQRX0sCisgICAgICAgICAgICB7IDB4MUQ3MzYsIFVQcm9wZXJ0eS5ERUNPTVBPU0lUSU9OX1RZUEV9LAorICAgICAgICAgICAgeyAweGUwMDMzLCBVUHJvcGVydHkuREVDT01QT1NJVElPTl9UWVBFfSwKKyAgICAKKyAgICAgICAgICAgIHsgMHgwMDA5LCBVUHJvcGVydHkuRUFTVF9BU0lBTl9XSURUSH0sCisgICAgICAgICAgICB7IDB4MDAyMCwgVVByb3BlcnR5LkVBU1RfQVNJQU5fV0lEVEh9LAorICAgICAgICAgICAgeyAweDAwQjEsIFVQcm9wZXJ0eS5FQVNUX0FTSUFOX1dJRFRIfSwKKyAgICAgICAgICAgIHsgMHgyMEE5LCBVUHJvcGVydHkuRUFTVF9BU0lBTl9XSURUSH0sCisgICAgICAgICAgICB7IDB4MkZGQiwgVVByb3BlcnR5LkVBU1RfQVNJQU5fV0lEVEh9LAorICAgICAgICAgICAgeyAweDMwMDAsIFVQcm9wZXJ0eS5FQVNUX0FTSUFOX1dJRFRIfSwKKyAgICAgICAgICAgIHsgMHgzNWJiLCBVUHJvcGVydHkuRUFTVF9BU0lBTl9XSURUSH0sCisgICAgICAgICAgICB7IDB4NThiZCwgVVByb3BlcnR5LkVBU1RfQVNJQU5fV0lEVEh9LAorICAgICAgICAgICAgeyAweEQ3QTMsIFVQcm9wZXJ0eS5FQVNUX0FTSUFOX1dJRFRIfSwKKyAgICAgICAgICAgIHsgMHhFRUVFLCBVUHJvcGVydHkuRUFTVF9BU0lBTl9XSURUSH0sCisgICAgICAgICAgICB7IDB4MUQxOTgsIFVQcm9wZXJ0eS5FQVNUX0FTSUFOX1dJRFRIfSwKKyAgICAgICAgICAgIHsgMHgyMDAwMCwgVVByb3BlcnR5LkVBU1RfQVNJQU5fV0lEVEh9LAorICAgICAgICAgICAgeyAweDJGOEM3LCBVUHJvcGVydHkuRUFTVF9BU0lBTl9XSURUSH0sCisgICAgICAgICAgICB7IDB4M2E1YmQsIFVQcm9wZXJ0eS5FQVNUX0FTSUFOX1dJRFRIfSwKKyAgICAgICAgICAgIHsgMHhGRUVFRSwgVVByb3BlcnR5LkVBU1RfQVNJQU5fV0lEVEh9LAorICAgICAgICAgICAgeyAweDEwRUVFRSwgVVByb3BlcnR5LkVBU1RfQVNJQU5fV0lEVEh9LAorICAgIAorICAgICAgICAgICAgLy8gVVByb3BlcnR5LkdFTkVSQUxfQ0FURUdPUlkgdGVzdGVkIGZvciBhc3NpZ25lZCBjaGFyYWN0ZXJzIGluIAorICAgICAgICAgICAgLy8gVGVzdFVuaWNvZGVEYXRhKCkKKyAgICAgICAgICAgIHsgMHhkN2Q3LCBVUHJvcGVydHkuR0VORVJBTF9DQVRFR09SWX0sCisgICAgCisgICAgICAgICAgICB7IDB4MDQ0NCwgVVByb3BlcnR5LkpPSU5JTkdfR1JPVVB9LAorICAgICAgICAgICAgeyAweDA2MzksIFVQcm9wZXJ0eS5KT0lOSU5HX0dST1VQfSwKKyAgICAgICAgICAgIHsgMHgwNzJBLCBVUHJvcGVydHkuSk9JTklOR19HUk9VUH0sCisgICAgICAgICAgICB7IDB4MDY0NywgVVByb3BlcnR5LkpPSU5JTkdfR1JPVVB9LAorICAgICAgICAgICAgeyAweDA2QzEsIFVQcm9wZXJ0eS5KT0lOSU5HX0dST1VQfSwKKyAgICAgICAgICAgIHsgMHgwNkMzLCBVUHJvcGVydHkuSk9JTklOR19HUk9VUH0sCisgICAgCisgICAgICAgICAgICB7IDB4MjAwQywgVVByb3BlcnR5LkpPSU5JTkdfVFlQRX0sCisgICAgICAgICAgICB7IDB4MjAwRCwgVVByb3BlcnR5LkpPSU5JTkdfVFlQRX0sCisgICAgICAgICAgICB7IDB4MDYzOSwgVVByb3BlcnR5LkpPSU5JTkdfVFlQRX0sCisgICAgICAgICAgICB7IDB4MDY0MCwgVVByb3BlcnR5LkpPSU5JTkdfVFlQRX0sCisgICAgICAgICAgICB7IDB4MDZDMywgVVByb3BlcnR5LkpPSU5JTkdfVFlQRX0sCisgICAgICAgICAgICB7IDB4MDMwMCwgVVByb3BlcnR5LkpPSU5JTkdfVFlQRX0sCisgICAgICAgICAgICB7IDB4MDcwRiwgVVByb3BlcnR5LkpPSU5JTkdfVFlQRX0sCisgICAgICAgICAgICB7IDB4ZTAwMzMsIFVQcm9wZXJ0eS5KT0lOSU5HX1RZUEV9LAorICAgIAorICAgICAgICAgICAgLy8gVGVzdFVuaWNvZGVEYXRhKCkgdmVyaWZpZXMgdGhhdCBubyBhc3NpZ25lZCBjaGFyYWN0ZXIgaGFzICJYWCIgCisgICAgICAgICAgICAvLyAodW5rbm93bikKKyAgICAgICAgICAgIHsgMHhlN2U3LCBVUHJvcGVydHkuTElORV9CUkVBS30sCisgICAgICAgICAgICB7IDB4MTBmZmZkLCBVUHJvcGVydHkuTElORV9CUkVBS30sCisgICAgICAgICAgICB7IDB4MDAyOCwgVVByb3BlcnR5LkxJTkVfQlJFQUt9LAorICAgICAgICAgICAgeyAweDIzMkEsIFVQcm9wZXJ0eS5MSU5FX0JSRUFLfSwKKyAgICAgICAgICAgIHsgMHgzNDAxLCBVUHJvcGVydHkuTElORV9CUkVBS30sCisgICAgICAgICAgICB7IDB4NGUwMiwgVVByb3BlcnR5LkxJTkVfQlJFQUt9LAorICAgICAgICAgICAgeyAweGFjMDMsIFVQcm9wZXJ0eS5MSU5FX0JSRUFLfSwKKyAgICAgICAgICAgIHsgMHgyMDAwNCwgVVByb3BlcnR5LkxJTkVfQlJFQUt9LAorICAgICAgICAgICAgeyAweGY5MDUsIFVQcm9wZXJ0eS5MSU5FX0JSRUFLfSwKKyAgICAgICAgICAgIHsgMHhkYjdlLCBVUHJvcGVydHkuTElORV9CUkVBS30sCisgICAgICAgICAgICB7IDB4ZGJmZCwgVVByb3BlcnR5LkxJTkVfQlJFQUt9LAorICAgICAgICAgICAgeyAweGRmZmMsIFVQcm9wZXJ0eS5MSU5FX0JSRUFLfSwKKyAgICAgICAgICAgIHsgMHgyNzYyLCBVUHJvcGVydHkuTElORV9CUkVBS30sCisgICAgICAgICAgICB7IDB4MDAyRiwgVVByb3BlcnR5LkxJTkVfQlJFQUt9LAorICAgICAgICAgICAgeyAweDFENDlDLCBVUHJvcGVydHkuTElORV9CUkVBS30sCisgICAgICAgICAgICB7IDB4MTczMSwgVVByb3BlcnR5LkxJTkVfQlJFQUt9LAorICAgIAorICAgICAgICAgICAgLy8gVUNIQVJfTlVNRVJJQ19UWVBFIHRlc3RlZCBpbiBUZXN0TnVtZXJpY1Byb3BlcnRpZXMoKQorICAgIAorICAgICAgICAgICAgLy8gVUNIQVJfU0NSSVBUIHRlc3RlZCBpbiBUZXN0VVNjcmlwdENvZGVBUEkoKQorICAgIAorICAgICAgICAgICAgLy8gdW5kZWZpbmVkIFVQcm9wZXJ0eSB2YWx1ZXMKKyAgICAgICAgICAgIHsgMHg2MSwgMHg0YTd9LAorICAgICAgICAgICAgeyAweDIzNGJjLCAweDE1ZWR9CisJICAgIH07CisJICAgIAorCSAgICBpbnQgZXhwZWN0ZWRbXSA9IHsgMSwgMSwgMCwgMSwgMCwgCisJICAgIAkgICAgICAgICAgICAgICAxLCAwLCAxLCAwLCAxLCAKKwkgICAgCSAgICAgICAgICAgICAgIDAsIDEsIDAsIDEsIDAsIAorCSAgICAJICAgICAgICAgICAgICAgMSwgMSwgMCwgMSwgMSwgCisJICAgIAkgICAgICAgICAgICAgICAwLCAxLCAwLCAxLCAxLCAKKwkgICAgCSAgICAgICAgICAgICAgIDAsIDEsIDEsIDAsIDEsIAorCSAgICAJICAgICAgICAgICAgICAgMSwgMCwgMSwgMCwgMSwgCisJICAgIAkgICAgICAgICAgICAgICAxLCAwLCAxLCAxLCAwLCAKKwkgICAgCSAgICAgICAgICAgICAgIDEsIDEsIDAsIDEsIDEsIAorCSAgICAJICAgICAgICAgICAgICAgMCwgMSwgMCwgMSwgMSwgCisJICAgIAkgICAgICAgICAgICAgICAwLCAxLCAxLCAwLCAxLCAKKwkgICAgCSAgICAgICAgICAgICAgIDEsIDAsIDEsIDEsIDAsCisJICAgIAkgICAgICAgICAgICAgICAwLCAxLCAxLCAwLCAxLCAKKwkgICAgCSAgICAgICAgICAgICAgIDAsIDEsIDAsIDAsIDEsIAorCSAgICAJICAgICAgICAgICAgICAgMSwgMCwgMSwgMCwgMSwgCisJICAgIAkgICAgICAgICAgICAgICAwLCAxLCAwLCAxLCAwLCAKKwkgICAgCSAgICAgICAgICAgICAgIDEsIDAsIDEsIDAsIDEsIAorCSAgICAJICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXIuVW5pY29kZUJsb2NrLklQQV9FWFRFTlNJT05TX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3Rlci5Vbmljb2RlQmxvY2suVEVMVUdVX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3Rlci5Vbmljb2RlQmxvY2suVU5JRklFRF9DQU5BRElBTl9BQk9SSUdJTkFMX1NZTExBQklDU19JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXIuVW5pY29kZUJsb2NrLlRBR0FMT0dfSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyLlVuaWNvZGVCbG9jay5JTlZBTElEX0NPREVfSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyLlVuaWNvZGVCbG9jay5ISVJBR0FOQV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXIuVW5pY29kZUJsb2NrLkJZWkFOVElORV9NVVNJQ0FMX1NZTUJPTFNfSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyLlVuaWNvZGVCbG9jay5TVVBQTEVNRU5UQVJZX1BSSVZBVEVfVVNFX0FSRUFfQl9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXIuVW5pY29kZUJsb2NrLklOVkFMSURfQ09ERV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVQcm9wZXJ0eS5DQU5PTklDQUxfQ09NQklOSU5HX0NMQVNTIHRlc3RlZCBmb3IgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3NpZ25lZCBjaGFyYWN0ZXJzIGluIFRlc3RVbmljb2RlRGF0YSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3Rlci5EZWNvbXBvc2l0aW9uVHlwZS5OT0JSRUFLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3Rlci5EZWNvbXBvc2l0aW9uVHlwZS5DT01QQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyLkRlY29tcG9zaXRpb25UeXBlLk5PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyLkRlY29tcG9zaXRpb25UeXBlLkNBTk9OSUNBTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXIuRGVjb21wb3NpdGlvblR5cGUuQ0FOT05JQ0FMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3Rlci5EZWNvbXBvc2l0aW9uVHlwZS5DQU5PTklDQUwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyLkRlY29tcG9zaXRpb25UeXBlLk1FRElBTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXIuRGVjb21wb3NpdGlvblR5cGUuRk9OVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXIuRGVjb21wb3NpdGlvblR5cGUuTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3Rlci5FYXN0QXNpYW5XaWR0aC5ORVVUUkFMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3Rlci5FYXN0QXNpYW5XaWR0aC5OQVJST1csCisgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyLkVhc3RBc2lhbldpZHRoLkFNQklHVU9VUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXIuRWFzdEFzaWFuV2lkdGguSEFMRldJRFRILAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3Rlci5FYXN0QXNpYW5XaWR0aC5XSURFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3Rlci5FYXN0QXNpYW5XaWR0aC5GVUxMV0lEVEgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyLkVhc3RBc2lhbldpZHRoLldJREUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyLkVhc3RBc2lhbldpZHRoLldJREUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyLkVhc3RBc2lhbldpZHRoLldJREUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyLkVhc3RBc2lhbldpZHRoLkFNQklHVU9VUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXIuRWFzdEFzaWFuV2lkdGguTkVVVFJBTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXIuRWFzdEFzaWFuV2lkdGguV0lERSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXIuRWFzdEFzaWFuV2lkdGguV0lERSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXIuRWFzdEFzaWFuV2lkdGguTkVVVFJBTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXIuRWFzdEFzaWFuV2lkdGguQU1CSUdVT1VTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3Rlci5FYXN0QXNpYW5XaWR0aC5BTUJJR1VPVVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVQcm9wZXJ0eS5HRU5FUkFMX0NBVEVHT1JZIHRlc3RlZCBmb3IgYXNzaWduZWQgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGFyYWN0ZXJzIGluIFRlc3RVbmljb2RlRGF0YSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3Rlci5Kb2luaW5nR3JvdXAuTk9fSk9JTklOR19HUk9VUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXIuSm9pbmluZ0dyb3VwLkFJTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXIuSm9pbmluZ0dyb3VwLkRBTEFUSF9SSVNILAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3Rlci5Kb2luaW5nR3JvdXAuSEVILAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3Rlci5Kb2luaW5nR3JvdXAuSEVIX0dPQUwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyLkpvaW5pbmdHcm91cC5IQU1aQV9PTl9IRUhfR09BTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXIuSm9pbmluZ1R5cGUuTk9OX0pPSU5JTkcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyLkpvaW5pbmdUeXBlLkpPSU5fQ0FVU0lORywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXIuSm9pbmluZ1R5cGUuRFVBTF9KT0lOSU5HLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3Rlci5Kb2luaW5nVHlwZS5KT0lOX0NBVVNJTkcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyLkpvaW5pbmdUeXBlLlJJR0hUX0pPSU5JTkcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyLkpvaW5pbmdUeXBlLlRSQU5TUEFSRU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3Rlci5Kb2luaW5nVHlwZS5UUkFOU1BBUkVOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXIuSm9pbmluZ1R5cGUuVFJBTlNQQVJFTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRlc3RVbmljb2RlRGF0YSgpIHZlcmlmaWVzIHRoYXQgbm8gYXNzaWduZWQgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGFyYWN0ZXIgaGFzICJYWCIgKHVua25vd24pCisgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyLkxpbmVCcmVhay5VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3Rlci5MaW5lQnJlYWsuVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXIuTGluZUJyZWFrLk9QRU5fUFVOQ1RVQVRJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyLkxpbmVCcmVhay5DTE9TRV9QVU5DVFVBVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXIuTGluZUJyZWFrLklERU9HUkFQSElDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3Rlci5MaW5lQnJlYWsuSURFT0dSQVBISUMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyLkxpbmVCcmVhay5JREVPR1JBUEhJQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXIuTGluZUJyZWFrLklERU9HUkFQSElDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3Rlci5MaW5lQnJlYWsuSURFT0dSQVBISUMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyLkxpbmVCcmVhay5TVVJST0dBVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyLkxpbmVCcmVhay5TVVJST0dBVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyLkxpbmVCcmVhay5TVVJST0dBVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyLkxpbmVCcmVhay5FWENMQU1BVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXIuTGluZUJyZWFrLkJSRUFLX1NZTUJPTFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyLkxpbmVCcmVhay5BTFBIQUJFVElDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3Rlci5MaW5lQnJlYWsuQUxQSEFCRVRJQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVUNIQVJfTlVNRVJJQ19UWVBFIHRlc3RlZCBpbiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRlc3ROdW1lcmljUHJvcGVydGllcygpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVQ0hBUl9TQ1JJUFQgdGVzdGVkIGluIFRlc3RVU2NyaXB0Q29kZUFQSSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAwCisgICAgICAgIH07CisKKwkgICAgaWYgKFVDaGFyYWN0ZXIuZ2V0SW50UHJvcGVydHlNaW5WYWx1ZShVUHJvcGVydHkuREFTSCkgIT0gMCAKKyAgICAgICAgICAgIHx8IFVDaGFyYWN0ZXIuZ2V0SW50UHJvcGVydHlNaW5WYWx1ZShVUHJvcGVydHkuQklESV9DTEFTUykgIT0gMCAKKyAgICAgICAgICAgIHx8IFVDaGFyYWN0ZXIuZ2V0SW50UHJvcGVydHlNaW5WYWx1ZShVUHJvcGVydHkuQkxPQ0spCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIT0gVUNoYXJhY3Rlci5Vbmljb2RlQmxvY2suSU5WQUxJRF9DT0RFX0lEIAorICAgICAgICAgICAgfHwgVUNoYXJhY3Rlci5nZXRJbnRQcm9wZXJ0eU1pblZhbHVlKFVQcm9wZXJ0eS5TQ1JJUFQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIT0gMCAvKiBKQiMyNDEwICovIAorICAgICAgICAgICAgfHwgVUNoYXJhY3Rlci5nZXRJbnRQcm9wZXJ0eU1pblZhbHVlKDB4MjM0NSkgIT0gMCkgeworICAgICAgICAgICAgZXJybG4oImVycm9yOiBVQ2hhcmFjdGVyLmdldEludFByb3BlcnR5TWluVmFsdWUoKSB3cm9uZyIpOworICAgICAgICB9CisgICAgCisgICAgICAgIGlmIChVQ2hhcmFjdGVyLmdldEludFByb3BlcnR5TWF4VmFsdWUoVVByb3BlcnR5LkRBU0gpICE9IDEgCisgICAgICAgICAgICB8fCBVQ2hhcmFjdGVyLmdldEludFByb3BlcnR5TWF4VmFsdWUoVVByb3BlcnR5LklEX0NPTlRJTlVFKSAhPSAxIAorICAgICAgICAgICAgfHwgVUNoYXJhY3Rlci5nZXRJbnRQcm9wZXJ0eU1heFZhbHVlKFVQcm9wZXJ0eS5CSU5BUllfTElNSVQtMSkgIT0gMSAKKyAgICAgICAgICAgIHx8IFVDaGFyYWN0ZXIuZ2V0SW50UHJvcGVydHlNYXhWYWx1ZShVUHJvcGVydHkuQklESV9DTEFTUykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIT0gVUNoYXJhY3RlckRpcmVjdGlvbi5DSEFSX0RJUkVDVElPTl9DT1VOVCAtIDEgCisgICAgICAgICAgICB8fCBVQ2hhcmFjdGVyLmdldEludFByb3BlcnR5TWF4VmFsdWUoVVByb3BlcnR5LkJMT0NLKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE9IFVDaGFyYWN0ZXIuVW5pY29kZUJsb2NrLkNPVU5UIC0gMSAKKyAgICAgICAgICAgIHx8IFVDaGFyYWN0ZXIuZ2V0SW50UHJvcGVydHlNYXhWYWx1ZShVUHJvcGVydHkuTElORV9CUkVBSykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPSBVQ2hhcmFjdGVyLkxpbmVCcmVhay5DT1VOVCAtIDEgCisgICAgICAgICAgICB8fCBVQ2hhcmFjdGVyLmdldEludFByb3BlcnR5TWF4VmFsdWUoVVByb3BlcnR5LlNDUklQVCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPSBVU2NyaXB0LkNPREVfTElNSVQgLSAxIAorICAgICAgICAgICAgfHwgVUNoYXJhY3Rlci5nZXRJbnRQcm9wZXJ0eU1heFZhbHVlKDB4MjM0NSkgIT0gLTEgLypKQiMyNDEwKi8gKSB7CisgICAgICAgICAgICBlcnJsbigiZXJyb3I6IFVDaGFyYWN0ZXIuZ2V0SW50UHJvcGVydHlNYXhWYWx1ZSgpIHdyb25nIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFZlcnNpb25JbmZvIHZlcnNpb24gPSBVQ2hhcmFjdGVyLmdldFVuaWNvZGVWZXJzaW9uKCk7CisgICAgICAgICAgICAKKwkgICAgLy8gdGVzdCBoYXNCaW5hcnlQcm9wZXJ0eSgpIAorCSAgICBmb3IgKGludCBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgKysgaSkgeworICAgICAgICAgICAgaWYgKHByb3BzW2ldWzBdIDwgMCkgeworCQkJCWlmICh2ZXJzaW9uLmNvbXBhcmVUbyhWZXJzaW9uSW5mby5nZXRJbnN0YW5jZShwcm9wc1tpXVsxXSA+PiA0LCAKKwkgICAgCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wc1tpXVsxXSAmIDB4RiwgCisJICAgIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCkpIDwgMCkgeworCSAgICAJICAgIAlicmVhazsKKwkgICAgCSAgICB9CisJICAgIAkgICAgY29udGludWU7CisJICAgICAgICB9CisgICAgICAgICAgICBib29sZWFuIGV4cGVjdCA9IHRydWU7CisgICAgICAgICAgICBpZiAoZXhwZWN0ZWRbaV0gPT0gMCkgeworICAgICAgICAgICAgICAgIGV4cGVjdCA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHByb3BzW2ldWzFdIDwgVVByb3BlcnR5LklOVF9TVEFSVCkgeworICAgICAgICAgICAgICAgIGlmIChVQ2hhcmFjdGVyLmhhc0JpbmFyeVByb3BlcnR5KHByb3BzW2ldWzBdLCBwcm9wc1tpXVsxXSkKKyAgICAJICAgICAgICAgICAgIT0gZXhwZWN0KSB7CisgICAgCSAgICAgICAgICAgIGVycmxuKCJlcnJvcjogVUNoYXJhY3Rlci5oYXNCaW5hcnlQcm9wZXJ0eShcXHUiICsgCisgICAgCSAgICAgICAgICAgICAgICAgIEludGVnZXIudG9IZXhTdHJpbmcocHJvcHNbaV1bMF0pICsgIiwgIiArIAorICAgIAkgICAgICAgICAgICAgICAgICBJbnRlZ2VyLnRvSGV4U3RyaW5nKHByb3BzW2ldWzFdKSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiKSBoYXMgYW4gZXJyb3IgZXhwZWN0ZWQgIiArIGV4cGVjdGVkW2ldKTsKKyAgICAJICAgICAgICB9CisgICAgICAgICAgICB9CisJCisgICAgICAgICAgICBpZiAoVUNoYXJhY3Rlci5nZXRJbnRQcm9wZXJ0eVZhbHVlKHByb3BzW2ldWzBdLCBwcm9wc1tpXVsxXSkKKyAgICAgICAgICAgICAgICAhPSBleHBlY3RlZFtpXSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJlcnJvcjogVUNoYXJhY3Rlci5nZXRJbnRQcm9wZXJ0eVZhbHVlKFxcdSIgKworICAgICAgICAgICAgICAgICAgICAgIFV0aWxpdHkuaGV4KHByb3BzW2ldWzBdLCA0KSArIAorICAgICAgICAgICAgICAgICAgICAgICIsICIgKyBwcm9wc1tpXVsxXSArICIgaXMgd3JvbmcsIHNob3VsZCBiZSAiCisgICAgICAgICAgICAgICAgICAgICAgKyBleHBlY3RlZFtpXSk7CisgICAgICAgICAgICB9CisgICAgICAgIAorCSAgICAgICAgLy8gdGVzdCBzZXBhcmF0ZSBmdW5jdGlvbnMsIHRvbyAKKwkgICAgICAgIHN3aXRjaCAocHJvcHNbaV1bMV0pIHsKKwkgICAgICAgIGNhc2UgVVByb3BlcnR5LkFMUEhBQkVUSUM6CisJICAgICAgICAgICAgaWYgKFVDaGFyYWN0ZXIuaXNVQWxwaGFiZXRpYyhwcm9wc1tpXVswXSkgIT0gZXhwZWN0KSB7CisJICAgICAgICAgICAgICAgIGVycmxuKCJlcnJvcjogVUNoYXJhY3Rlci5pc1VBbHBoYWJldGljKFxcdSIgKyAKKwkgICAgICAgICAgICAgICAgICAgICAgSW50ZWdlci50b0hleFN0cmluZyhwcm9wc1tpXVswXSkgKyAKKwkgICAgICAgICAgICAgICAgICAgICAgIikgaXMgd3JvbmcgZXhwZWN0ZWQgIiArIGV4cGVjdGVkW2ldKTsKKwkgICAgICAgICAgICB9CisJICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICBjYXNlIFVQcm9wZXJ0eS5MT1dFUkNBU0U6CisJICAgICAgICAgICAgaWYgKFVDaGFyYWN0ZXIuaXNVTG93ZXJjYXNlKHByb3BzW2ldWzBdKSAhPSBleHBlY3QpIHsKKwkgICAgICAgICAgICAgICAgZXJybG4oImVycm9yOiBVQ2hhcmFjdGVyLmlzVUxvd2VyY2FzZShcXHUiICsgCisJICAgICAgICAgICAgICAgICAgICAgIEludGVnZXIudG9IZXhTdHJpbmcocHJvcHNbaV1bMF0pICsgCisJICAgICAgICAgICAgICAgICAgICAgICIpIGlzIHdyb25nIGV4cGVjdGVkICIgKyBleHBlY3RlZFtpXSk7CisJICAgICAgICAgICAgfQorCSAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgY2FzZSBVUHJvcGVydHkuVVBQRVJDQVNFOgorCSAgICAgICAgICAgIGlmIChVQ2hhcmFjdGVyLmlzVVVwcGVyY2FzZShwcm9wc1tpXVswXSkgIT0gZXhwZWN0KSB7CisJICAgICAgICAgICAgICAgIGVycmxuKCJlcnJvcjogVUNoYXJhY3Rlci5pc1VVcHBlcmNhc2UoXFx1IiArIAorCSAgICAgICAgICAgICAgICAgICAgICBJbnRlZ2VyLnRvSGV4U3RyaW5nKHByb3BzW2ldWzBdKSArIAorCSAgICAgICAgICAgICAgICAgICAgICAiKSBpcyB3cm9uZyBleHBlY3RlZCAiICsgZXhwZWN0ZWRbaV0pOworCSAgICAgICAgICAgIH0KKwkgICAgICAgICAgICBicmVhazsKKwkgICAgICAgIGNhc2UgVVByb3BlcnR5LldISVRFX1NQQUNFOgorCSAgICAgICAgICAgIGlmIChVQ2hhcmFjdGVyLmlzVVdoaXRlU3BhY2UocHJvcHNbaV1bMF0pICE9IGV4cGVjdCkgeworCSAgICAgICAgICAgICAgICBlcnJsbigiZXJyb3I6IFVDaGFyYWN0ZXIuaXNVV2hpdGVTcGFjZShcXHUiICsgCisJICAgICAgICAgICAgICAgICAgICAgIEludGVnZXIudG9IZXhTdHJpbmcocHJvcHNbaV1bMF0pICsgCisJICAgICAgICAgICAgICAgICAgICAgICIpIGlzIHdyb25nIGV4cGVjdGVkICIgKyBleHBlY3RlZFtpXSk7CisJICAgICAgICAgICAgfQorCSAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgZGVmYXVsdDoKKwkgICAgICAgICAgICBicmVhazsKKwkgICAgICAgIH0KKwkgICAgfQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0TnVtZXJpY1Byb3BlcnRpZXMoKSAKKyAgICB7CisgICAgICAgIC8vIHNlZSBVbmljb2RlRGF0YS50eHQsIERlcml2ZWROdW1lcmljVmFsdWVzLnR4dAorICAgICAgICBpbnQgdGVzdHZhcltdW10gPSB7CisgICAgICAgICAgICB7IDB4MEYzMywgVUNoYXJhY3Rlci5OdW1lcmljVHlwZS5OVU1FUklDIH0sCisgICAgICAgICAgICB7IDB4MEM2NiwgVUNoYXJhY3Rlci5OdW1lcmljVHlwZS5ERUNJTUFMIH0sCisgICAgICAgICAgICB7IDB4MjE1OSwgVUNoYXJhY3Rlci5OdW1lcmljVHlwZS5OVU1FUklDIH0sCisgICAgICAgICAgICB7IDB4MDBCRCwgVUNoYXJhY3Rlci5OdW1lcmljVHlwZS5OVU1FUklDIH0sCisgICAgICAgICAgICB7IDB4MDAzMSwgVUNoYXJhY3Rlci5OdW1lcmljVHlwZS5ERUNJTUFMIH0sCisgICAgICAgICAgICB7IDB4MTAzMjAsIFVDaGFyYWN0ZXIuTnVtZXJpY1R5cGUuTlVNRVJJQyB9LAorICAgICAgICAgICAgeyAweDBGMkIsIFVDaGFyYWN0ZXIuTnVtZXJpY1R5cGUuTlVNRVJJQyB9LAorICAgICAgICAgICAgeyAweDAwQjIsIFVDaGFyYWN0ZXIuTnVtZXJpY1R5cGUuREVDSU1BTCB9LAorICAgICAgICAgICAgeyAweDE4MTMsIFVDaGFyYWN0ZXIuTnVtZXJpY1R5cGUuREVDSU1BTCB9LAorICAgICAgICAgICAgeyAweDIxNzMsIFVDaGFyYWN0ZXIuTnVtZXJpY1R5cGUuTlVNRVJJQyB9LAorICAgICAgICAgICAgeyAweDI3OEUsIFVDaGFyYWN0ZXIuTnVtZXJpY1R5cGUuRElHSVQgfSwKKyAgICAgICAgICAgIHsgMHgxRDdGMiwgVUNoYXJhY3Rlci5OdW1lcmljVHlwZS5ERUNJTUFMIH0sCisgICAgICAgICAgICB7IDB4MjQ3QSwgVUNoYXJhY3Rlci5OdW1lcmljVHlwZS5ESUdJVCB9LAorICAgICAgICAgICAgeyAweDEzNzIsIFVDaGFyYWN0ZXIuTnVtZXJpY1R5cGUuTlVNRVJJQyB9LAorICAgICAgICAgICAgeyAweDIxNkIsIFVDaGFyYWN0ZXIuTnVtZXJpY1R5cGUuTlVNRVJJQyB9LAorICAgICAgICAgICAgeyAweDE2RUUsIFVDaGFyYWN0ZXIuTnVtZXJpY1R5cGUuTlVNRVJJQyB9LAorICAgICAgICAgICAgeyAweDI0OUEsIFVDaGFyYWN0ZXIuTnVtZXJpY1R5cGUuTlVNRVJJQyB9LAorICAgICAgICAgICAgeyAweDMwM0EsIFVDaGFyYWN0ZXIuTnVtZXJpY1R5cGUuTlVNRVJJQyB9LAorICAgICAgICAgICAgeyAweDMyQjIsIFVDaGFyYWN0ZXIuTnVtZXJpY1R5cGUuTlVNRVJJQyB9LAorICAgICAgICAgICAgeyAweDEzNzUsIFVDaGFyYWN0ZXIuTnVtZXJpY1R5cGUuTlVNRVJJQyB9LAorICAgICAgICAgICAgeyAweDEwMzIzLCBVQ2hhcmFjdGVyLk51bWVyaWNUeXBlLk5VTUVSSUMgfSwKKyAgICAgICAgICAgIHsgMHgwQkYxLCBVQ2hhcmFjdGVyLk51bWVyaWNUeXBlLk5VTUVSSUMgfSwKKyAgICAgICAgICAgIHsgMHgyMTdFLCBVQ2hhcmFjdGVyLk51bWVyaWNUeXBlLk5VTUVSSUMgfSwKKyAgICAgICAgICAgIHsgMHgyMTgwLCBVQ2hhcmFjdGVyLk51bWVyaWNUeXBlLk5VTUVSSUMgfSwKKyAgICAgICAgICAgIHsgMHgyMTgxLCBVQ2hhcmFjdGVyLk51bWVyaWNUeXBlLk5VTUVSSUMgfSwKKyAgICAgICAgICAgIHsgMHgxMzdDLCBVQ2hhcmFjdGVyLk51bWVyaWNUeXBlLk5VTUVSSUMgfSwKKyAgICAgICAgICAgIHsgMHg2MSwgVUNoYXJhY3Rlci5OdW1lcmljVHlwZS5OT05FIH0sCisgICAgICAgICAgICB7IDB4MzAwMCwgVUNoYXJhY3Rlci5OdW1lcmljVHlwZS5OT05FIH0sCisgICAgICAgICAgICB7IDB4ZmZmZSwgVUNoYXJhY3Rlci5OdW1lcmljVHlwZS5OT05FIH0sCisgICAgICAgICAgICB7IDB4MTAzMDEsIFVDaGFyYWN0ZXIuTnVtZXJpY1R5cGUuTk9ORSB9LAorICAgICAgICAgICAgeyAweGUwMDMzLCBVQ2hhcmFjdGVyLk51bWVyaWNUeXBlLk5PTkUgfSwKKyAgICAgICAgICAgIHsgMHgxMGZmZmYsIFVDaGFyYWN0ZXIuTnVtZXJpY1R5cGUuTk9ORSB9CisgICAgICAgIH07CisKKyAgICAgICAgZG91YmxlIGV4cGVjdGVkW10gPSB7LTEvKGRvdWJsZSkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLyhkb3VibGUpNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS8oZG91YmxlKTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMvKGRvdWJsZSkyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MDAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDAwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3Rlci5OT19OVU1FUklDX1ZBTFVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyLk5PX05VTUVSSUNfVkFMVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXIuTk9fTlVNRVJJQ19WQUxVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3Rlci5OT19OVU1FUklDX1ZBTFVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyLk5PX05VTUVSSUNfVkFMVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXIuTk9fTlVNRVJJQ19WQUxVRQorICAgICAgICB9OworCisgICAgCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGVzdHZhci5sZW5ndGg7ICsrIGkpIHsKKyAgICAgICAgICAgIGludCBjID0gdGVzdHZhcltpXVswXTsKKyAgICAgICAgICAgIGludCB0eXBlID0gVUNoYXJhY3Rlci5nZXRJbnRQcm9wZXJ0eVZhbHVlKGMsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVByb3BlcnR5Lk5VTUVSSUNfVFlQRSk7CisgICAgICAgICAgICBkb3VibGUgbnYgPSBVQ2hhcmFjdGVyLmdldFVuaWNvZGVOdW1lcmljVmFsdWUoYyk7CisgICAgCisgICAgICAgICAgICBpZiAodHlwZSAhPSB0ZXN0dmFyW2ldWzFdKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIlVQcm9wZXJ0eS5OVU1FUklDX1RZUEUoXFx1IiArIFV0aWxpdHkuaGV4KGMsIDQpIAorICAgICAgICAgICAgICAgICAgICAgICArICIpID0gIiArIHR5cGUgKyAiIHNob3VsZCBiZSAiICsgdGVzdHZhcltpXVsxXSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoMC4wMDAwMDEgPD0gTWF0aC5hYnMobnYgLSBleHBlY3RlZFtpXSkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiVUNoYXJhY3Rlci5nZXROdW1lcmljVmFsdWUoXFx1IiArIFV0aWxpdHkuaGV4KGMsIDQpIAorICAgICAgICAgICAgICAgICAgICAgICAgKyAiKSA9ICIgKyBudiArICIgc2hvdWxkIGJlICIgKyBleHBlY3RlZFtpXSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXN0IHRoZSBwcm9wZXJ0eSB2YWx1ZXMgQVBJLiAgU2VlIEpCIzI0MTAuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdFByb3BlcnR5VmFsdWVzKCkgeworICAgICAgICBpbnQgaSwgcCwgbWluLCBtYXg7CisKKyAgICAgICAgLyogTWluIHNob3VsZCBiZSAwIGZvciBldmVyeXRoaW5nLiAqLworICAgICAgICAvKiBVbnRpbCBKQiMyNDc4IGlzIGZpeGVkLCB0aGUgb25lIGV4Y2VwdGlvbiBpcyBVQ0hBUl9CTE9DSy4gKi8KKyAgICAgICAgZm9yIChwPVVQcm9wZXJ0eS5JTlRfU1RBUlQ7IHA8VVByb3BlcnR5LklOVF9MSU1JVDsgKytwKSB7CisgICAgICAgICAgICBtaW4gPSBVQ2hhcmFjdGVyLmdldEludFByb3BlcnR5TWluVmFsdWUocCk7CisgICAgICAgICAgICBpZiAobWluICE9IDApIHsKKyAgICAgICAgICAgICAgICBpZiAocCA9PSBVUHJvcGVydHkuQkxPQ0spIHsKKyAgICAgICAgICAgICAgICAgICAgLyogVGhpcyBpcyBva2F5Li4uZm9yIG5vdy4gIFNlZSBKQiMyNDg3LgorICAgICAgICAgICAgICAgICAgICAgICBUT0RPIFVwZGF0ZSB0aGlzIGZvciBKQiMyNDg3LiAqLworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBuYW1lOworICAgICAgICAgICAgICAgICAgICBuYW1lID0gVUNoYXJhY3Rlci5nZXRQcm9wZXJ0eU5hbWUocCwgVVByb3BlcnR5Lk5hbWVDaG9pY2UuTE9ORyk7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBVQ2hhcmFjdGVyLmdldEludFByb3BlcnR5TWluVmFsdWUoIiArIG5hbWUgKyAiKSA9ICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICBtaW4gKyAiLCBleHAuIDAiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChVQ2hhcmFjdGVyLmdldEludFByb3BlcnR5TWluVmFsdWUoVVByb3BlcnR5LkdFTkVSQUxfQ0FURUdPUllfTUFTSykKKyAgICAgICAgICAgICE9IDAgCisgICAgICAgICAgICB8fCBVQ2hhcmFjdGVyLmdldEludFByb3BlcnR5TWF4VmFsdWUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVQcm9wZXJ0eS5HRU5FUkFMX0NBVEVHT1JZX01BU0spCisgICAgICAgICAgICAgICAhPSAtMSkgeworICAgICAgICAgICAgZXJybG4oImVycm9yOiBVQ2hhcmFjdGVyLmdldEludFByb3BlcnR5TWluL01heFZhbHVlKCIKKyAgICAgICAgICAgICAgICAgICsgIlVQcm9wZXJ0eS5HRU5FUkFMX0NBVEVHT1JZX01BU0spIGlzIHdyb25nIik7CisgICAgICAgIH0KKworICAgICAgICAvKiBNYXggc2hvdWxkIGJlIC0xIGZvciBpbnZhbGlkIHByb3BlcnRpZXMuICovCisgICAgICAgIG1heCA9IFVDaGFyYWN0ZXIuZ2V0SW50UHJvcGVydHlNYXhWYWx1ZSgtMSk7CisgICAgICAgIGlmIChtYXggIT0gLTEpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBVQ2hhcmFjdGVyLmdldEludFByb3BlcnR5TWF4VmFsdWUoLTEpID0gIiArCisgICAgICAgICAgICAgICAgICBtYXggKyAiLCBleHAuIC0xIik7CisgICAgICAgIH0KKworICAgICAgICAvKiBTY3JpcHQgc2hvdWxkIHJldHVybiAwIGZvciBhbiBpbnZhbGlkIGNvZGUgcG9pbnQuIElmIHRoZSBBUEkKKyAgICAgICAgICAgdGhyb3dzIGFuIGV4Y2VwdGlvbiB0aGVuIHRoYXQncyBmaW5lIHRvby4gKi8KKyAgICAgICAgZm9yIChpPTA7IGk8MjsgKytpKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGludCBzY3JpcHQgPSAwOworICAgICAgICAgICAgICAgIFN0cmluZyBkZXNjID0gbnVsbDsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICAgICAgICAgIHNjcmlwdCA9IFVTY3JpcHQuZ2V0U2NyaXB0KC0xKTsKKyAgICAgICAgICAgICAgICAgICAgZGVzYyA9ICJVU2NyaXB0LmdldFNjcmlwdCgtMSkiOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgICAgIHNjcmlwdCA9IFVDaGFyYWN0ZXIuZ2V0SW50UHJvcGVydHlWYWx1ZSgtMSwgVVByb3BlcnR5LlNDUklQVCk7CisgICAgICAgICAgICAgICAgICAgIGRlc2MgPSAiVUNoYXJhY3Rlci5nZXRJbnRQcm9wZXJ0eVZhbHVlKC0xLCBVUHJvcGVydHkuU0NSSVBUKSI7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoc2NyaXB0ICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6ICIgKyBkZXNjICsgIiA9ICIgKyBzY3JpcHQgKyAiLCBleHAuIDAiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkge30KKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9sYW5nL1VQcm9wZXJ0eUFsaWFzZXNUZXN0LmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvbGFuZy9VUHJvcGVydHlBbGlhc2VzVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmNWE5YTAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvbGFuZy9VUHJvcGVydHlBbGlhc2VzVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTEzIEBACisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmlnaHQgKGMpIDIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyogQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIEF1dGhvcjogQWxhbiBMaXUKKyogQ3JlYXRlZDogTm92ZW1iZXIgNSAyMDAyCisqIFNpbmNlOiBJQ1UgMi40CisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudGVzdC5sYW5nOworCitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGNvbS5pYm0uaWN1LmxhbmcuKjsKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYudGVzdC5UZXN0Rm13azsKKworcHVibGljIGNsYXNzIFVQcm9wZXJ0eUFsaWFzZXNUZXN0IGV4dGVuZHMgVGVzdEZtd2sgeworICAKKyAgICBwdWJsaWMgVVByb3BlcnR5QWxpYXNlc1Rlc3QoKSB7fQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBuZXcgVVByb3BlcnR5QWxpYXNlc1Rlc3QoKS5ydW4oYXJncyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdCB0aGUgcHJvcGVydHkgbmFtZXMgYW5kIHByb3BlcnR5IHZhbHVlIG5hbWVzIEFQSS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0UHJvcGVydHlOYW1lcygpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGludCBwLCB2LCBjaG9pY2UsIHJldjsKKyAgICAgICAgCisgICAgICAgIGZvciAocD0wOyA7ICsrcCkgeworICAgICAgICAgICAgYm9vbGVhbiBzYXdQcm9wID0gZmFsc2U7CisgICAgICAgICAgICBmb3IgKGNob2ljZT0wOyA7ICsrY2hvaWNlKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIG5hbWUgPSBudWxsOworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBVQ2hhcmFjdGVyLmdldFByb3BlcnR5TmFtZShwLCBjaG9pY2UpOworICAgICAgICAgICAgICAgICAgICBpZiAoIXNhd1Byb3ApIGxvZygicHJvcCAiICsgcCArICI6Iik7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBuID0gKG5hbWUgIT0gbnVsbCkgPyAoIlwiIiArIG5hbWUgKyAnIicpIDogIm51bGwiOworICAgICAgICAgICAgICAgICAgICBsb2coIiAiICsgY2hvaWNlICsgIj0iICsgbik7CisgICAgICAgICAgICAgICAgICAgIHNhd1Byb3AgPSB0cnVlOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChjaG9pY2UgPiAwKSBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG5hbWUgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAvKiB0ZXN0IHJldmVyc2UgbWFwcGluZyAqLworICAgICAgICAgICAgICAgICAgICByZXYgPSBVQ2hhcmFjdGVyLmdldFByb3BlcnR5RW51bShuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJldiAhPSBwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbigiUHJvcGVydHkgcm91bmQtdHJpcCBmYWlsdXJlOiAiICsgcCArICIgLT4gIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lICsgIiAtPiAiICsgcmV2KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzYXdQcm9wKSB7CisgICAgICAgICAgICAgICAgLyogbG9va3MgbGlrZSBhIHZhbGlkIHByb3BlcnR5OyBjaGVjayB0aGUgdmFsdWVzICovCisgICAgICAgICAgICAgICAgU3RyaW5nIHBuYW1lID0gVUNoYXJhY3Rlci5nZXRQcm9wZXJ0eU5hbWUocCwgVVByb3BlcnR5Lk5hbWVDaG9pY2UuTE9ORyk7CisgICAgICAgICAgICAgICAgaW50IG1heCA9IDA7CisgICAgICAgICAgICAgICAgaWYgKHAgPT0gVVByb3BlcnR5LkNBTk9OSUNBTF9DT01CSU5JTkdfQ0xBU1MpIHsKKyAgICAgICAgICAgICAgICAgICAgbWF4ID0gMjU1OworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocCA9PSBVUHJvcGVydHkuR0VORVJBTF9DQVRFR09SWV9NQVNLKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIGl0J3MgZmFyIHRvbyBzbG93IHRvIGl0ZXJhdGUgYWxsIHRoZSB3YXkgdXAgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgdGhlIHJlYWwgbWF4LCBVX0dDX1BfTUFTSyAqLworICAgICAgICAgICAgICAgICAgICBtYXggPSAweDEwMDA7IC8vIFVfR0NfTkxfTUFTSzsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHAgPT0gVVByb3BlcnR5LkJMT0NLKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIFVCbG9ja0NvZGVzLCB1bmxpa2Ugb3RoZXIgdmFsdWVzLCBzdGFydCBhdCAxICovCisgICAgICAgICAgICAgICAgICAgIG1heCA9IDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGxvZ2xuKCIiKTsKKyAgICAgICAgICAgICAgICBmb3IgKHY9LTE7IDsgKyt2KSB7CisgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gc2F3VmFsdWUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChjaG9pY2U9MDsgOyArK2Nob2ljZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHZuYW1lID0gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm5hbWUgPSBVQ2hhcmFjdGVyLmdldFByb3BlcnR5VmFsdWVOYW1lKHAsIHYsIGNob2ljZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIG4gPSAodm5hbWUgIT0gbnVsbCkgPyAoIlwiIiArIHZuYW1lICsgJyInKSA6ICJudWxsIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNhd1ZhbHVlKSBsb2coIiAiICsgcG5hbWUgKyAiLCB2YWx1ZSAiICsgdiArICI6Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKCIgIiArIGNob2ljZSArICI9IiArIG4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhd1ZhbHVlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaG9pY2U+MCkgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodm5hbWUgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRlc3QgcmV2ZXJzZSBtYXBwaW5nICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2ID0gVUNoYXJhY3Rlci5nZXRQcm9wZXJ0eVZhbHVlRW51bShwLCB2bmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJldiAhPSB2KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycmxuKCJWYWx1ZSByb3VuZC10cmlwIGZhaWx1cmUgKCIgKyBwbmFtZSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIpOiAiICsgdiArICIgLT4gIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZuYW1lICsgIiAtPiAiICsgcmV2KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHNhd1ZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2dsbigiIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKCFzYXdWYWx1ZSAmJiB2Pj1tYXgpIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghc2F3UHJvcCkgeworICAgICAgICAgICAgICAgIGlmIChwPj1VUHJvcGVydHkuU1RSSU5HX0xJTUlUKSB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocD49VVByb3BlcnR5LkRPVUJMRV9MSU1JVCkgeworICAgICAgICAgICAgICAgICAgICBwID0gVVByb3BlcnR5LlNUUklOR19TVEFSVCAtIDE7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwPj1VUHJvcGVydHkuTUFTS19MSU1JVCkgeworICAgICAgICAgICAgICAgICAgICBwID0gVVByb3BlcnR5LkRPVUJMRV9TVEFSVCAtIDE7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwPj1VUHJvcGVydHkuSU5UX0xJTUlUKSB7CisgICAgICAgICAgICAgICAgICAgIHAgPSBVUHJvcGVydHkuTUFTS19TVEFSVCAtIDE7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwPj1VUHJvcGVydHkuQklOQVJZX0xJTUlUKSB7CisgICAgICAgICAgICAgICAgICAgIHAgPSBVUHJvcGVydHkuSU5UX1NUQVJUIC0gMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvbGFuZy9VVEYxNlRlc3QuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9sYW5nL1VURjE2VGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjc5MjZiNjMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvbGFuZy9VVEYxNlRlc3QuamF2YQpAQCAtMCwwICsxLDE0NjQgQEAKKy8qKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvbGFuZy9VVEYxNlRlc3QuamF2YSx2ICQgCisqICREYXRlOiAyMDAyLzEwLzI4IDIxOjU5OjIzICQgCisqICRSZXZpc2lvbjogMS4yMCAkCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0Lmxhbmc7CisKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYudGVzdC5UZXN0Rm13azsKK2ltcG9ydCBjb20uaWJtLmljdS5sYW5nLlVDaGFyYWN0ZXI7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC5VVEYxNjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0LlJlcGxhY2VhYmxlU3RyaW5nOworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuVXRpbGl0eTsKKworLyoqCisqIFRlc3RpbmcgY2xhc3MgZm9yIFVURjE2CisqIEBhdXRob3IgU3luIFdlZSBRdWVrCisqIEBzaW5jZSBmZWIgMDkgMjAwMQorKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBVVEYxNlRlc3QgZXh0ZW5kcyBUZXN0Rm13aworeyAKKyAgCS8vIGNvbnN0cnVjdG9yID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAKKyAgCS8qKgorICAJKiBDb25zdHJ1Y3RvcgorICAJKi8KKyAgCXB1YmxpYyBVVEYxNlRlc3QoKQorICAJeworICAJfQorICAKKyAgCS8vIHB1YmxpYyBtZXRob2RzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAKKyAgCS8qKgorICAJKiBUZXN0aW5nIFVURjE2IGNsYXNzIG1ldGhvZHMgYXBwZW5kCisgIAkqLworICAJcHVibGljIHZvaWQgVGVzdEFwcGVuZCgpCisgIAl7CisgICAgICAJU3RyaW5nQnVmZmVyIHN0cmJ1ZmYgPSBuZXcgU3RyaW5nQnVmZmVyKCJ0aGlzIGlzIGEgc3RyaW5nICIpOworICAgICAgCWNoYXIgYXJyYXlbXSA9IG5ldyBjaGFyW1VDaGFyYWN0ZXIuTUFYX1ZBTFVFID4+IDJdOworICAgICAgCWludCBzdHJzaXplID0gc3RyYnVmZi5sZW5ndGgoKTsKKyAgICAgIAlpbnQgYXJyYXlzaXplID0gc3Ryc2l6ZTsKKyAgICAgICAgCisgICAgICAJVXRpbGl0eS5nZXRDaGFycyhzdHJidWZmLCAwLCBzdHJzaXplLCBhcnJheSwgMCk7CisgICAgICAJZm9yIChpbnQgaSA9IDE7IGkgPCBVQ2hhcmFjdGVyLk1BWF9WQUxVRTsgaSArPSAxMDApCisgICAgICAJeworICAgICAgCSAgCVVURjE2LmFwcGVuZChzdHJidWZmLCBpKTsKKyAgICAgICAgIAlhcnJheXNpemUgPSBVVEYxNi5hcHBlbmQoYXJyYXksIGFycmF5c2l6ZSwgaSk7CisgICAgICAgICAgCisgICAgICAgICAgCVN0cmluZyBhcnJheXN0ciA9IG5ldyBTdHJpbmcoYXJyYXksIDAsIGFycmF5c2l6ZSk7CisgICAgICAgICAgCWlmICghYXJyYXlzdHIuZXF1YWxzKHN0cmJ1ZmYudG9TdHJpbmcoKSkpIHsKKyAgICAgICAgICAgICAgCWVycmxuKCJGQUlMIENvbXBhcmluZyBjaGFyIGFycmF5IGFwcGVuZCBhbmQgc3RyaW5nIGFwcGVuZCAiICsKKyAgICAgICAgICAgICAgCSAgICAgICJ3aXRoIDB4IiArIEludGVnZXIudG9IZXhTdHJpbmcoaSkpOworICAgICAgICAgIAl9CisgICAgICAgICAgCisgICAgICAgICAgCS8vIHRoaXMgaXMgdG8gY2F0ZXIgZm9yIHRoZSBjb21iaW5hdGlvbiBvZiAweERCWFggMHhEQzUwIHdoaWNoIAorICAgICAgICAgIAkvLyBmb3JtcyBhIHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVyCisgICAgICAgICAgCWlmIChpID09IDB4REM1MSkgeworICAgICAgICAgICAgICAJc3Ryc2l6ZSAtLTsKKyAgICAgICAgICAJfQorICAgICAgICAgICAgCisgICAgICAgICAgCWlmIChVVEYxNi5jb3VudENvZGVQb2ludChzdHJidWZmKSAhPSBzdHJzaXplICsgKGkgLyAxMDApICsgMSkgeworICAgICAgICAgICAgICAJZXJybG4oIkZBSUwgQ291bnRpbmcgY29kZSBwb2ludHMgaW4gc3RyaW5nIGFwcGVuZGVkIHdpdGggIiArIAorICAgICAgICAgICAgICAgICAgICAJIiAweCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKGkpKTsKKyAgICAgICAgICAgICAgCWJyZWFrOworICAgICAgICAgIAl9ICAKKyAgICAgIAl9CisgIAl9CisgIAorICAJLyoqCisgIAkqIFRlc3RpbmcgVVRGMTYgY2xhc3MgbWV0aG9kcyBib3VuZHMKKyAgCSovCisgIAlwdWJsaWMgdm9pZCBUZXN0Qm91bmRzKCkKKyAgCXsKKyAgICAgIAlTdHJpbmdCdWZmZXIgc3RyYnVmZiA9IAorICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgLy8wICAgMTIzNDUgICAgIDYgICAgIDcgICAgIDggICAgIDkKKyAgICAgICAgICAJCW5ldyBTdHJpbmdCdWZmZXIoIlx1ZGMwMDAxMjNcdWQ4MDBcdWRjMDBcdWQ4MDFcdWRjMDFcdWQ4MDIiKTsKKyAgICAgIAlTdHJpbmcgc3RyID0gc3RyYnVmZi50b1N0cmluZygpOworICAgICAgCWNoYXIgYXJyYXlbXSA9IHN0ci50b0NoYXJBcnJheSgpOworICAgICAgCWludCBib3VuZHR5cGVbXSA9IHtVVEYxNi5TSU5HTEVfQ0hBUl9CT1VOREFSWSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgVVRGMTYuU0lOR0xFX0NIQVJfQk9VTkRBUlksCisgICAgICAgICAgICAgICAgICAgICAgICAgVVRGMTYuU0lOR0xFX0NIQVJfQk9VTkRBUlksCisgICAgICAgICAgICAgICAgICAgICAgICAgVVRGMTYuU0lOR0xFX0NIQVJfQk9VTkRBUlksCisgICAgICAgICAgICAgICAgICAgICAgICAgVVRGMTYuU0lOR0xFX0NIQVJfQk9VTkRBUlksCisgICAgICAgICAgICAgICAgICAgICAgICAgVVRGMTYuTEVBRF9TVVJST0dBVEVfQk9VTkRBUlksCisgICAgICAgICAgICAgICAgICAgICAgICAgVVRGMTYuVFJBSUxfU1VSUk9HQVRFX0JPVU5EQVJZLAorICAgICAgICAgICAgICAgICAgICAgICAgIFVURjE2LkxFQURfU1VSUk9HQVRFX0JPVU5EQVJZLAorICAgICAgICAgICAgICAgICAgICAgICAgIFVURjE2LlRSQUlMX1NVUlJPR0FURV9CT1VOREFSWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBVVEYxNi5TSU5HTEVfQ0hBUl9CT1VOREFSWX07CisgICAgICAJaW50IGxlbmd0aCA9IHN0ci5sZW5ndGgoKTsKKyAgICAgIAlmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSArKykgeworICAgICAgICAJaWYgKFVURjE2LmJvdW5kcyhzdHIsIGkpICE9IGJvdW5kdHlwZVtpXSkgeworICAgICAgICAgICAgICAJZXJybG4oIkZBSUwgY2hlY2tpbmcgYm91bmQgdHlwZSBhdCBpbmRleCAiICsgaSk7CisgICAgICAgICAgCX0KKyAgICAgICAgICAJaWYgKFVURjE2LmJvdW5kcyhzdHJidWZmLCBpKSAhPSBib3VuZHR5cGVbaV0pIHsKKyAgICAgICAgICAgICAgCWVycmxuKCJGQUlMIGNoZWNraW5nIGJvdW5kIHR5cGUgYXQgaW5kZXggIiArIGkpOworICAgICAgICAgIAl9CisgICAgICAgICAgCWlmIChVVEYxNi5ib3VuZHMoYXJyYXksIDAsIGxlbmd0aCwgaSkgIT0gYm91bmR0eXBlW2ldKSB7CisgICAgICAgICAgICAgIAllcnJsbigiRkFJTCBjaGVja2luZyBib3VuZCB0eXBlIGF0IGluZGV4ICIgKyBpKTsKKyAgICAgICAgICAJfQorICAgICAgCX0KKyAgICAgIAkvLyBkb2VzIG5vdCBzdHJhZGRsZSBiZXR3ZWVuIHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVyCisgICAgICAJaW50IHN0YXJ0ID0gNDsKKyAgICAgIAlpbnQgbGltaXQgPSA5OworICAgICAgCWludCBzdWJib3VuZHR5cGUxW10gPSB7VVRGMTYuU0lOR0xFX0NIQVJfQk9VTkRBUlksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVURjE2LkxFQURfU1VSUk9HQVRFX0JPVU5EQVJZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVVEYxNi5UUkFJTF9TVVJST0dBVEVfQk9VTkRBUlksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVURjE2LkxFQURfU1VSUk9HQVRFX0JPVU5EQVJZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVVEYxNi5UUkFJTF9TVVJST0dBVEVfQk9VTkRBUll9OworICAgICAgCXRyeSB7CisgICAgICAgICAgCVVURjE2LmJvdW5kcyhhcnJheSwgc3RhcnQsIGxpbWl0LCAtMSk7CisgICAgICAgICAgCWVycmxuKCJGQUlMIE91dCBvZiBib3VuZHMgaW5kZXggaW4gYm91bmRzIHNob3VsZCBmYWlsIik7CisgICAgICAJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAJLy8gZ2V0dGluZyByaWQgb2Ygd2FybmluZ3MKKyAgICAgICAgICAJU3lzdGVtLm91dC5wcmludCgiIik7CisgICAgICAJfQorICAgICAgCisgICAgICAJZm9yIChpbnQgaSA9IDA7IGkgPCBsaW1pdCAtIHN0YXJ0OyBpICsrKSB7CisgICAgICAgICAgCWlmIChVVEYxNi5ib3VuZHMoYXJyYXksIHN0YXJ0LCBsaW1pdCwgaSkgIT0gc3ViYm91bmR0eXBlMVtpXSkgeworICAgICAgICAgICAgICAJZXJybG4oIkZBSUxFRCBTdWJhcnJheSBib3VuZHMgaW4gWyIgKyBzdGFydCArICIsICIgKyBsaW1pdCArIAorICAgICAgICAgICAgICAgICAgICAJIl0gZXhwZWN0ZWQgIiArIHN1YmJvdW5kdHlwZTFbaV0gKyAiIGF0IG9mZnNldCAiICsgaSk7CisgICAgICAgICAgCX0KKyAgICAgIAl9CisgICAgICAKKyAgICAgIAkvLyBzdGFydHMgZnJvbSB0aGUgbWlkIG9mIGEgc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXIKKyAgICAgIAlpbnQgc3ViYm91bmR0eXBlMltdID0ge1VURjE2LlNJTkdMRV9DSEFSX0JPVU5EQVJZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVVEYxNi5MRUFEX1NVUlJPR0FURV9CT1VOREFSWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVRGMTYuVFJBSUxfU1VSUk9HQVRFX0JPVU5EQVJZfTsKKyAgICAgIAorICAgICAgCXN0YXJ0ID0gNjsKKyAgICAgIAlsaW1pdCA9IDk7CisgICAgICAJZm9yIChpbnQgaSA9IDA7IGkgPCBsaW1pdCAtIHN0YXJ0OyBpICsrKSB7CisgICAgICAgICAgCWlmIChVVEYxNi5ib3VuZHMoYXJyYXksIHN0YXJ0LCBsaW1pdCwgaSkgIT0gc3ViYm91bmR0eXBlMltpXSkgeworICAgICAgICAgICAgICAJZXJybG4oIkZBSUxFRCBTdWJhcnJheSBib3VuZHMgaW4gWyIgKyBzdGFydCArICIsICIgKyBsaW1pdCArIAorICAgICAgICAgICAgICAgICAgICAJIl0gZXhwZWN0ZWQgIiArIHN1YmJvdW5kdHlwZTJbaV0gKyAiIGF0IG9mZnNldCAiICsgaSk7CisgICAgICAgICAgCX0KKyAgICAgIAl9CisgICAgICAKKyAgICAgIAkvLyBlbmRzIGluIHRoZSBtaWQgb2YgYSBzdXBwbGVtZW50YXJ5IGNoYXJhY3RlcgorICAgICAgCWludCBzdWJib3VuZHR5cGUzW10gPSB7VVRGMTYuTEVBRF9TVVJST0dBVEVfQk9VTkRBUlksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVURjE2LlRSQUlMX1NVUlJPR0FURV9CT1VOREFSWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVRGMTYuU0lOR0xFX0NIQVJfQk9VTkRBUll9OworICAgICAgCXN0YXJ0ID0gNTsKKyAgICAgIAlsaW1pdCA9IDg7CisgICAgICAJZm9yIChpbnQgaSA9IDA7IGkgPCBsaW1pdCAtIHN0YXJ0OyBpICsrKSB7CisgICAgICAgICAgCWlmIChVVEYxNi5ib3VuZHMoYXJyYXksIHN0YXJ0LCBsaW1pdCwgaSkgIT0gc3ViYm91bmR0eXBlM1tpXSkgeworICAgICAgICAgICAgICAJZXJybG4oIkZBSUxFRCBTdWJhcnJheSBib3VuZHMgaW4gWyIgKyBzdGFydCArICIsICIgKyBsaW1pdCArIAorICAgICAgICAgICAgICAgICAgICAJIl0gZXhwZWN0ZWQgIiArIHN1YmJvdW5kdHlwZTNbaV0gKyAiIGF0IG9mZnNldCAiICsgaSk7CisgICAgICAgICAgCX0KKyAgICAgIAl9CisgIAl9CisgIAorICAJLyoqCisgIAkqIFRlc3RpbmcgVVRGMTYgY2xhc3MgbWV0aG9kcyBjaGFyQXQgYW5kIGNoYXJBdENvZGVQb2ludCAKKyAgCSovCisgIAlwdWJsaWMgdm9pZCBUZXN0Q2hhckF0KCkKKyAgCXsKKyAgICAgIAlTdHJpbmdCdWZmZXIgc3RyYnVmZiA9IAorICAgICAgICAgICAgICAgICAgICAgIG5ldyBTdHJpbmdCdWZmZXIoIjEyMzQ1XHVkODAwXHVkYzAxNjc4OTBcdWQ4MDBcdWRjMDIiKTsKKyAgICAgIAlpZiAoVVRGMTYuY2hhckF0KHN0cmJ1ZmYsIDApICE9ICcxJyB8fCBVVEYxNi5jaGFyQXQoc3RyYnVmZiwgMikgIT0gJzMnIAorICAgICAgCSAgICB8fCBVVEYxNi5jaGFyQXQoc3RyYnVmZiwgNSkgIT0gMHgxMDAwMSB8fCAKKyAgICAgICAgICAJVVRGMTYuY2hhckF0KHN0cmJ1ZmYsIDYpICE9IDB4MTAwMDEgfHwgCisgICAgICAgICAgCVVURjE2LmNoYXJBdChzdHJidWZmLCAxMikgIT0gMHgxMDAwMiB8fCAKKyAgICAgICAgICAJVVRGMTYuY2hhckF0KHN0cmJ1ZmYsIDEzKSAhPSAweDEwMDAyKSB7CisgICAgICAgICAgCWVycmxuKCJGQUlMIEdldHRpbmcgY2hhcmFjdGVyIGZyb20gc3RyaW5nIGJ1ZmZlciBlcnJvciIgKTsKKyAgICAgIAl9CisgICAgICAJU3RyaW5nIHN0ciA9IHN0cmJ1ZmYudG9TdHJpbmcoKTsKKyAgICAgIAlpZiAoVVRGMTYuY2hhckF0KHN0ciwgMCkgIT0gJzEnIHx8IFVURjE2LmNoYXJBdChzdHIsIDIpICE9ICczJyB8fCAKKyAgICAgICAgICAJVVRGMTYuY2hhckF0KHN0ciwgNSkgIT0gMHgxMDAwMSB8fCBVVEYxNi5jaGFyQXQoc3RyLCA2KSAhPSAweDEwMDAxIAorICAgICAgICAgIAl8fCBVVEYxNi5jaGFyQXQoc3RyLCAxMikgIT0gMHgxMDAwMiB8fCAKKyAgICAgICAgICAJVVRGMTYuY2hhckF0KHN0ciwgMTMpICE9IDB4MTAwMDIpIAorICAgICAgCXsKKyAgICAgICAgICAJZXJybG4oIkZBSUwgR2V0dGluZyBjaGFyYWN0ZXIgZnJvbSBzdHJpbmcgZXJyb3IiICk7CisgICAgICAJfQorICAgICAgCWNoYXIgYXJyYXlbXSA9IHN0ci50b0NoYXJBcnJheSgpOworICAgICAgCWludCBzdGFydCA9IDA7CisgICAgICAJaW50IGxpbWl0ID0gc3RyLmxlbmd0aCgpOworICAgICAgCWlmIChVVEYxNi5jaGFyQXQoYXJyYXksIHN0YXJ0LCBsaW1pdCwgMCkgIT0gJzEnIHx8IAorICAgICAgICAgIAlVVEYxNi5jaGFyQXQoYXJyYXksIHN0YXJ0LCBsaW1pdCwgMikgIT0gJzMnIHx8IAorICAgICAgICAgIAlVVEYxNi5jaGFyQXQoYXJyYXksIHN0YXJ0LCBsaW1pdCwgNSkgIT0gMHgxMDAwMSB8fCAKKyAgICAgICAgICAJVVRGMTYuY2hhckF0KGFycmF5LCBzdGFydCwgbGltaXQsIDYpICE9IDB4MTAwMDEgfHwgCisgICAgICAgICAgCVVURjE2LmNoYXJBdChhcnJheSwgc3RhcnQsIGxpbWl0LCAxMikgIT0gMHgxMDAwMiB8fCAKKyAgICAgICAgICAJVVRGMTYuY2hhckF0KGFycmF5LCBzdGFydCwgbGltaXQsIDEzKSAhPSAweDEwMDAyKSB7CisgICAgICAgICAgCWVycmxuKCJGQUlMIEdldHRpbmcgY2hhcmFjdGVyIGZyb20gYXJyYXkgZXJyb3IiICk7CisgICAgICAJfQorICAgICAgCS8vIGNoZWNrIHRoZSBzdWIgYXJyYXkgaGVyZS4KKyAgICAgIAlzdGFydCA9IDY7CisgICAgICAJbGltaXQgPSAxMzsKKyAgICAgIAl0cnkgeworICAgICAgICAgIAlVVEYxNi5jaGFyQXQoYXJyYXksIHN0YXJ0LCBsaW1pdCwgLTEpOworICAgICAgICAgIAllcnJsbigiRkFJTCBvdXQgb2YgYm91bmRzIGVycm9yIGV4cGVjdGVkIik7CisgICAgICAJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAJU3lzdGVtLm91dC5wcmludCgiIik7CisgICAgICAJfQorICAgICAgCXRyeSB7CisgICAgICAgICAgCVVURjE2LmNoYXJBdChhcnJheSwgc3RhcnQsIGxpbWl0LCA4KTsKKyAgICAgICAgICAJZXJybG4oIkZBSUwgb3V0IG9mIGJvdW5kcyBlcnJvciBleHBlY3RlZCIpOworICAgICAgCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgCVN5c3RlbS5vdXQucHJpbnQoIiIpOworICAgICAgCX0KKyAgICAgIAlpZiAoVVRGMTYuY2hhckF0KGFycmF5LCBzdGFydCwgbGltaXQsIDApICE9IDB4ZGMwMSkgeworICAgICAgICAgIAllcnJsbigiRkFJTCBFeHBlY3RlZCByZXN1bHQgaW4gc3ViYXJyYXkgMHhkYzAxIik7CisgICAgICAJfQorICAgICAgCWlmIChVVEYxNi5jaGFyQXQoYXJyYXksIHN0YXJ0LCBsaW1pdCwgNikgIT0gMHhkODAwKSB7CisgICAgICAgICAgCWVycmxuKCJGQUlMIEV4cGVjdGVkIHJlc3VsdCBpbiBzdWJhcnJheSAweGQ4MDAiKTsKKyAgICAgIAl9CisgICAgICAJUmVwbGFjZWFibGVTdHJpbmcgcmVwbGFjZWFibGUgPSBuZXcgUmVwbGFjZWFibGVTdHJpbmcoc3RyKTsgCisgICAgICAJaWYgKFVURjE2LmNoYXJBdChyZXBsYWNlYWJsZSwgMCkgIT0gJzEnIHx8IAorICAgICAgCSAgICBVVEYxNi5jaGFyQXQocmVwbGFjZWFibGUsIDIpICE9ICczJyB8fCAKKyAgICAgICAgICAJVVRGMTYuY2hhckF0KHJlcGxhY2VhYmxlLCA1KSAhPSAweDEwMDAxIHx8IAorICAgICAgICAgIAlVVEYxNi5jaGFyQXQocmVwbGFjZWFibGUsIDYpICE9IDB4MTAwMDEgfHwgCisgICAgICAgICAgCVVURjE2LmNoYXJBdChyZXBsYWNlYWJsZSwgMTIpICE9IDB4MTAwMDIgfHwgCisgICAgICAgICAgCVVURjE2LmNoYXJBdChyZXBsYWNlYWJsZSwgMTMpICE9IDB4MTAwMDIpIHsKKyAgICAgICAgICAJZXJybG4oIkZBSUwgR2V0dGluZyBjaGFyYWN0ZXIgZnJvbSByZXBsYWNlYWJsZSBlcnJvciIgKTsKKyAgICAgIAl9CisgIAl9CisgIAorICAJLyoqCisgIAkqIFRlc3RpbmcgVVRGMTYgY2xhc3MgbWV0aG9kcyBjb3VudENvZGVQb2ludAorICAJKi8KKyAgCXB1YmxpYyB2b2lkIFRlc3RDb3VudENvZGVQb2ludCgpCisgIAl7CisgICAgCVN0cmluZ0J1ZmZlciBzdHJidWZmID0gbmV3IFN0cmluZ0J1ZmZlcigiIik7CisgICAgCWNoYXIgICAgICAgICBhcnJheVtdID0gbnVsbDsKKyAgICAJaWYgKFVURjE2LmNvdW50Q29kZVBvaW50KHN0cmJ1ZmYpICE9IDAgfHwKKyAgICAgICAgCVVURjE2LmNvdW50Q29kZVBvaW50KCIiKSAhPSAwIHx8CisgICAgICAgIAlVVEYxNi5jb3VudENvZGVQb2ludChhcnJheSwwICwwKSAhPSAwKSB7CisgICAgICAgIAllcnJsbigiRkFJTCBDb3VudGluZyBjb2RlIHBvaW50cyBmb3IgZW1wdHkgc3RyaW5ncyIpOworICAgIAl9CisgICAgCisgICAgCXN0cmJ1ZmYgPSBuZXcgU3RyaW5nQnVmZmVyKCJ0aGlzIGlzIGEgc3RyaW5nICIpOworICAgIAlTdHJpbmcgc3RyID0gc3RyYnVmZi50b1N0cmluZygpOworICAgIAlhcnJheSA9IHN0ci50b0NoYXJBcnJheSgpOworICAgIAlpbnQgc2l6ZSA9IHN0ci5sZW5ndGgoKTsKKyAgICAKKyAgICAJaWYgKFVURjE2LmNvdW50Q29kZVBvaW50KGFycmF5LCAwLCAwKSAhPSAwKSB7CisgICAgICAgIAllcnJsbigiRkFJTCBDb3VudGluZyBjb2RlIHBvaW50cyBmb3IgMCBvZmZzZXQgYXJyYXkiKTsKKyAgICAJfQorICAgIAorICAgIAlpZiAoVVRGMTYuY291bnRDb2RlUG9pbnQoc3RyKSAhPSBzaXplIHx8CisgICAgICAgIAlVVEYxNi5jb3VudENvZGVQb2ludChzdHJidWZmKSAhPSBzaXplIHx8CisgICAgICAgIAlVVEYxNi5jb3VudENvZGVQb2ludChhcnJheSwgMCwgc2l6ZSkgIT0gc2l6ZSkgeworICAgICAgICAJZXJybG4oIkZBSUwgQ291bnRpbmcgY29kZSBwb2ludHMiKTsKKyAgICAJfQkgCisgICAgCisgICAgCVVURjE2LmFwcGVuZChzdHJidWZmLCAweDEwMDAwKTsKKyAgICAJc3RyID0gc3RyYnVmZi50b1N0cmluZygpOworICAgIAlhcnJheSA9IHN0ci50b0NoYXJBcnJheSgpOworICAgIAlpZiAoVVRGMTYuY291bnRDb2RlUG9pbnQoc3RyKSAhPSBzaXplICsgMSB8fAorICAgICAgICAJVVRGMTYuY291bnRDb2RlUG9pbnQoc3RyYnVmZikgIT0gc2l6ZSArIDEgfHwKKyAgICAgICAgCVVURjE2LmNvdW50Q29kZVBvaW50KGFycmF5LCAwLCBzaXplICsgMSkgIT0gc2l6ZSArIDEgfHwKKyAgICAgICAgCVVURjE2LmNvdW50Q29kZVBvaW50KGFycmF5LCAwLCBzaXplICsgMikgIT0gc2l6ZSArIDEpIHsKKyAgICAgICAgCWVycmxuKCJGQUlMIENvdW50aW5nIGNvZGUgcG9pbnRzIik7CisgICAgCX0KKyAgICAJVVRGMTYuYXBwZW5kKHN0cmJ1ZmYsIDB4NjEpOworICAgIAlzdHIgPSBzdHJidWZmLnRvU3RyaW5nKCk7CisgICAgCWFycmF5ID0gc3RyLnRvQ2hhckFycmF5KCk7CisgICAgCWlmIChVVEYxNi5jb3VudENvZGVQb2ludChzdHIpICE9IHNpemUgKyAyIHx8CisgICAgICAgIAlVVEYxNi5jb3VudENvZGVQb2ludChzdHJidWZmKSAhPSBzaXplICsgMiB8fAorICAgICAgICAJVVRGMTYuY291bnRDb2RlUG9pbnQoYXJyYXksIDAsIHNpemUgKyAxKSAhPSBzaXplICsgMSB8fAorICAgICAgICAJVVRGMTYuY291bnRDb2RlUG9pbnQoYXJyYXksIDAsIHNpemUgKyAyKSAhPSBzaXplICsgMSB8fAorICAgICAgICAJVVRGMTYuY291bnRDb2RlUG9pbnQoYXJyYXksIDAsIHNpemUgKyAzKSAhPSBzaXplICsgMikgeworICAgICAgICAJZXJybG4oIkZBSUwgQ291bnRpbmcgY29kZSBwb2ludHMiKTsKKyAgICAJfQorICAJfQorICAKKyAgCS8qKgorICAJKiBUZXN0aW5nIFVURjE2IGNsYXNzIG1ldGhvZHMgZGVsZXRlCisgIAkqLworICAJcHVibGljIHZvaWQgVGVzdERlbGV0ZSgpCisgIAl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vMDEyMzQ1Njc4OTAxMjM0NTYKKyAgICAJU3RyaW5nQnVmZmVyIHN0cmJ1ZmYgPSBuZXcgU3RyaW5nQnVmZmVyKCJ0aGVzZSBhcmUgc3RyaW5ncyIpOworICAgIAlpbnQgc2l6ZSA9IHN0cmJ1ZmYubGVuZ3RoKCk7CisgICAgCWNoYXIgYXJyYXlbXSA9IHN0cmJ1ZmYudG9TdHJpbmcoKS50b0NoYXJBcnJheSgpOworICAgIAorICAgIAlVVEYxNi5kZWxldGUoc3RyYnVmZiwgMyk7CisgICAgCVVURjE2LmRlbGV0ZShzdHJidWZmLCAzKTsKKyAgICAJVVRGMTYuZGVsZXRlKHN0cmJ1ZmYsIDMpOworICAgIAlVVEYxNi5kZWxldGUoc3RyYnVmZiwgMyk7CisgICAgCVVURjE2LmRlbGV0ZShzdHJidWZmLCAzKTsKKyAgICAJVVRGMTYuZGVsZXRlKHN0cmJ1ZmYsIDMpOworICAgIAl0cnkgeworICAgICAgICAJVVRGMTYuZGVsZXRlKHN0cmJ1ZmYsIHN0cmJ1ZmYubGVuZ3RoKCkpOworICAgICAgICAJZXJybG4oIkZBSUwgZGVsZXRpbmcgb3V0IG9mIGJvdW5kcyBjaGFyYWN0ZXIgc2hvdWxkIGZhaWwiKTsKKyAgICAJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgCVN5c3RlbS5vdXQucHJpbnQoIiIpOworICAgIAl9CisgICAgCVVURjE2LmRlbGV0ZShzdHJidWZmLCBzdHJidWZmLmxlbmd0aCgpIC0gMSk7CisgICAgCWlmICghc3RyYnVmZi50b1N0cmluZygpLmVxdWFscygidGhlIHN0cmluZyIpKSB7CisgICAgICAgIAllcnJsbigiRkFJTCBleHBlY3RlZCByZXN1bHQgYWZ0ZXIgZGVsZXRpbmcgY2hhcmFjdGVycyBpcyAiICsKKyAgICAgICAgICAgICAgCQkiXCJ0aGUgc3RyaW5nXCIiKTsKKyAgICAJfQorICAgIAorICAgIAlzaXplID0gVVRGMTYuZGVsZXRlKGFycmF5LCBzaXplLCAzKTsKKyAgICAJc2l6ZSA9IFVURjE2LmRlbGV0ZShhcnJheSwgc2l6ZSwgMyk7CisgICAgCXNpemUgPSBVVEYxNi5kZWxldGUoYXJyYXksIHNpemUsIDMpOworICAgIAlzaXplID0gVVRGMTYuZGVsZXRlKGFycmF5LCBzaXplLCAzKTsKKyAgICAJc2l6ZSA9IFVURjE2LmRlbGV0ZShhcnJheSwgc2l6ZSwgMyk7CisgICAgCXNpemUgPSBVVEYxNi5kZWxldGUoYXJyYXksIHNpemUsIDMpOworICAgIAl0cnkgeworICAgICAgICAJVVRGMTYuZGVsZXRlKGFycmF5LCBzaXplLCBzaXplKTsKKyAgICAgICAgCWVycmxuKCJGQUlMIGRlbGV0aW5nIG91dCBvZiBib3VuZHMgY2hhcmFjdGVyIHNob3VsZCBmYWlsIik7CisgICAgCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgIAlTeXN0ZW0ub3V0LnByaW50KCIiKTsKKyAgICAJfQorICAgIAlzaXplID0gVVRGMTYuZGVsZXRlKGFycmF5LCBzaXplLCBzaXplIC0gMSk7CisgICAgCVN0cmluZyBzdHIgPSBuZXcgU3RyaW5nKGFycmF5LCAwLCBzaXplKTsKKyAgICAJaWYgKCFzdHIuZXF1YWxzKCJ0aGUgc3RyaW5nIikpIHsKKyAgICAgICAgCWVycmxuKCJGQUlMIGV4cGVjdGVkIHJlc3VsdCBhZnRlciBkZWxldGluZyBjaGFyYWN0ZXJzIGlzICIgKworICAgICAgICAgICAgICAJCSJcInRoZSBzdHJpbmdcIiIpOworICAgIAl9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJCS8vMDEyMzQ1Njc4ICAgICA5ICAgICAwMSAgICAgMiAgICAgIDMgICAgIDQKKyAgICAJc3RyYnVmZiA9IG5ldyBTdHJpbmdCdWZmZXIoInN0cmluZzogXHVkODAwXHVkYzAwIFx1ZDgwMVx1ZGMwMSBcdWQ4MDFcdWRjMDEiKTsKKyAgICAJc2l6ZSA9IHN0cmJ1ZmYubGVuZ3RoKCk7CisgICAgCWFycmF5ID0gc3RyYnVmZi50b1N0cmluZygpLnRvQ2hhckFycmF5KCk7CisgICAgCisgICAgCVVURjE2LmRlbGV0ZShzdHJidWZmLCA4KTsKKyAgICAJVVRGMTYuZGVsZXRlKHN0cmJ1ZmYsIDgpOworICAgIAlVVEYxNi5kZWxldGUoc3RyYnVmZiwgOSk7CisgICAgCVVURjE2LmRlbGV0ZShzdHJidWZmLCA4KTsKKyAgICAJVVRGMTYuZGVsZXRlKHN0cmJ1ZmYsIDkpOworICAgIAlVVEYxNi5kZWxldGUoc3RyYnVmZiwgNik7CisgICAgCVVURjE2LmRlbGV0ZShzdHJidWZmLCA2KTsKKyAgICAJaWYgKCFzdHJidWZmLnRvU3RyaW5nKCkuZXF1YWxzKCJzdHJpbmciKSkgeworICAgICAgICAJZXJybG4oIkZBSUwgZXhwZWN0ZWQgcmVzdWx0IGFmdGVyIGRlbGV0aW5nIGNoYXJhY3RlcnMgaXMgXCJzdHJpbmdcIiIpOworICAgIAl9CisgICAgCisgICAgCXNpemUgPSBVVEYxNi5kZWxldGUoYXJyYXksIHNpemUsIDgpOworICAgIAlzaXplID0gVVRGMTYuZGVsZXRlKGFycmF5LCBzaXplLCA4KTsKKyAgICAJc2l6ZSA9IFVURjE2LmRlbGV0ZShhcnJheSwgc2l6ZSwgOSk7CisgICAgCXNpemUgPSBVVEYxNi5kZWxldGUoYXJyYXksIHNpemUsIDgpOworICAgIAlzaXplID0gVVRGMTYuZGVsZXRlKGFycmF5LCBzaXplLCA5KTsKKyAgICAJc2l6ZSA9IFVURjE2LmRlbGV0ZShhcnJheSwgc2l6ZSwgNik7CisgICAgCXNpemUgPSBVVEYxNi5kZWxldGUoYXJyYXksIHNpemUsIDYpOworICAgIAlzdHIgPSBuZXcgU3RyaW5nKGFycmF5LCAwLCBzaXplKTsKKyAgICAJaWYgKCFzdHIuZXF1YWxzKCJzdHJpbmciKSkgeworICAgICAgICAJZXJybG4oIkZBSUwgZXhwZWN0ZWQgcmVzdWx0IGFmdGVyIGRlbGV0aW5nIGNoYXJhY3RlcnMgaXMgXCJzdHJpbmdcIiIpOworICAgIAl9CisgIAl9CisgIAorICAJLyoqCisgIAkqIFRlc3RpbmcgZmluZE9mZnNldEZyb21Db2RlUG9pbnQgYW5kIGZpbmRDb2RlUG9pbnRPZmZzZXQKKyAgCSovCisgIAlwdWJsaWMgdm9pZCBUZXN0ZmluZE9mZnNldCgpCisgIAl7CisgICAgCS8vIGppdHRlcmJ1ZyA0NworICAgIAlTdHJpbmcgc3RyID0gImFcdUQ4MDBcdURDMDBiIjsKKyAgICAJU3RyaW5nQnVmZmVyIHN0cmJ1ZmYgPSBuZXcgU3RyaW5nQnVmZmVyKHN0cik7CisgICAgCWNoYXIgYXJyYXlbXSA9IHN0ci50b0NoYXJBcnJheSgpOworICAgIAlpbnQgbGltaXQgPSBzdHIubGVuZ3RoKCk7CisgICAgCWlmIChVVEYxNi5maW5kQ29kZVBvaW50T2Zmc2V0KHN0ciwgMCkgIT0gMCB8fAorICAgICAgICAJVVRGMTYuZmluZE9mZnNldEZyb21Db2RlUG9pbnQoc3RyLCAwKSAhPSAwIHx8CisgICAgICAgIAlVVEYxNi5maW5kQ29kZVBvaW50T2Zmc2V0KHN0cmJ1ZmYsIDApICE9IDAgfHwKKyAgICAgICAgCVVURjE2LmZpbmRPZmZzZXRGcm9tQ29kZVBvaW50KHN0cmJ1ZmYsIDApICE9IDAgfHwKKyAgICAgICAgCVVURjE2LmZpbmRDb2RlUG9pbnRPZmZzZXQoYXJyYXksIDAsIGxpbWl0LCAwKSAhPSAwIHx8CisgICAgICAgIAlVVEYxNi5maW5kT2Zmc2V0RnJvbUNvZGVQb2ludChhcnJheSwgMCwgbGltaXQsIDApICE9IDApIHsKKyAgICAgICAgCWVycmxuKCJGQUlMIEdldHRpbmcgdGhlIGZpcnN0IGNvZGVwb2ludCBvZmZzZXQgdG8gYSBzdHJpbmcgd2l0aCAiICsKKyAgICAgICAgICAgICAgCQkic3VwcGxlbWVudGFyeSBjaGFyYWN0ZXJzIik7CisgICAgCX0KKyAgICAJaWYgKFVURjE2LmZpbmRDb2RlUG9pbnRPZmZzZXQoc3RyLCAxKSAhPSAxIHx8CisgICAgICAgIAlVVEYxNi5maW5kT2Zmc2V0RnJvbUNvZGVQb2ludChzdHIsIDEpICE9IDEgfHwKKyAgICAgICAgCVVURjE2LmZpbmRDb2RlUG9pbnRPZmZzZXQoc3RyYnVmZiwgMSkgIT0gMSB8fAorICAgICAgICAJVVRGMTYuZmluZE9mZnNldEZyb21Db2RlUG9pbnQoc3RyYnVmZiwgMSkgIT0gMSB8fAorICAgICAgICAJVVRGMTYuZmluZENvZGVQb2ludE9mZnNldChhcnJheSwgMCwgbGltaXQsIDEpICE9IDEgfHwKKyAgICAgICAgCVVURjE2LmZpbmRPZmZzZXRGcm9tQ29kZVBvaW50KGFycmF5LCAwLCBsaW1pdCwgMSkgIT0gMSkgeworICAgICAgICAJZXJybG4oIkZBSUwgR2V0dGluZyB0aGUgc2Vjb25kIGNvZGVwb2ludCBvZmZzZXQgdG8gYSBzdHJpbmcgd2l0aCAiICsKKyAgICAgICAgICAgICAgCQkic3VwcGxlbWVudGFyeSBjaGFyYWN0ZXJzIik7CisgICAgCX0KKyAgICAJaWYgKFVURjE2LmZpbmRDb2RlUG9pbnRPZmZzZXQoc3RyLCAyKSAhPSAxIHx8CisgICAgICAgIAlVVEYxNi5maW5kT2Zmc2V0RnJvbUNvZGVQb2ludChzdHIsIDIpICE9IDMgfHwKKyAgICAgICAgCVVURjE2LmZpbmRDb2RlUG9pbnRPZmZzZXQoc3RyYnVmZiwgMikgIT0gMSB8fAorICAgICAgICAJVVRGMTYuZmluZE9mZnNldEZyb21Db2RlUG9pbnQoc3RyYnVmZiwgMikgIT0gMyB8fAorICAgICAgICAJVVRGMTYuZmluZENvZGVQb2ludE9mZnNldChhcnJheSwgMCwgbGltaXQsIDIpICE9IDEgfHwKKyAgICAgICAgCVVURjE2LmZpbmRPZmZzZXRGcm9tQ29kZVBvaW50KGFycmF5LCAwLCBsaW1pdCwgMikgIT0gMykgeworICAgICAgICAJZXJybG4oIkZBSUwgR2V0dGluZyB0aGUgdGhpcmQgY29kZXBvaW50IG9mZnNldCB0byBhIHN0cmluZyB3aXRoICIgKworICAgICAgICAgICAgICAJCSJzdXBwbGVtZW50YXJ5IGNoYXJhY3RlcnMiKTsKKyAgICAJfQorICAgIAlpZiAoVVRGMTYuZmluZENvZGVQb2ludE9mZnNldChzdHIsIDMpICE9IDIgfHwKKyAgICAgICAgCVVURjE2LmZpbmRPZmZzZXRGcm9tQ29kZVBvaW50KHN0ciwgMykgIT0gNCB8fAorICAgICAgICAJVVRGMTYuZmluZENvZGVQb2ludE9mZnNldChzdHJidWZmLCAzKSAhPSAyIHx8CisgICAgICAgIAlVVEYxNi5maW5kT2Zmc2V0RnJvbUNvZGVQb2ludChzdHJidWZmLCAzKSAhPSA0IHx8CisgICAgICAgIAlVVEYxNi5maW5kQ29kZVBvaW50T2Zmc2V0KGFycmF5LCAwLCBsaW1pdCwgMykgIT0gMiB8fAorICAgICAgICAJVVRGMTYuZmluZE9mZnNldEZyb21Db2RlUG9pbnQoYXJyYXksIDAsIGxpbWl0LCAzKSAhPSA0KSB7CisgICAgICAgIAllcnJsbigiRkFJTCBHZXR0aW5nIHRoZSBsYXN0IGNvZGVwb2ludCBvZmZzZXQgdG8gYSBzdHJpbmcgd2l0aCAiICsKKyAgICAgICAgICAgICAgCQkic3VwcGxlbWVudGFyeSBjaGFyYWN0ZXJzIik7CisgICAgCX0KKyAgICAJaWYgKFVURjE2LmZpbmRDb2RlUG9pbnRPZmZzZXQoc3RyLCA0KSAhPSAzIHx8IAorICAgICAgICAJVVRGMTYuZmluZENvZGVQb2ludE9mZnNldChzdHJidWZmLCA0KSAhPSAzIHx8CisgICAgICAgIAlVVEYxNi5maW5kQ29kZVBvaW50T2Zmc2V0KGFycmF5LCAwLCBsaW1pdCwgNCkgIT0gMykgeworICAgICAgICAJZXJybG4oIkZBSUwgR2V0dGluZyB0aGUgbGVuZ3RoIG9mZnNldCB0byBhIHN0cmluZyB3aXRoICIgKworICAgICAgICAgICAgICAJCSJzdXBwbGVtZW50YXJ5IGNoYXJhY3RlcnMiKTsKKyAgICAJfQorICAgIAl0cnkgeworICAgICAgICAJVVRGMTYuZmluZENvZGVQb2ludE9mZnNldChzdHIsIDUpOworICAgICAgICAJZXJybG4oIkZBSUwgR2V0dGluZyB0aGUgYSBub24tZXhpc3RlbmNlIGNvZGVwb2ludCB0byBhIHN0cmluZyAiICsKKyAgICAgICAgCSAgICAgICJ3aXRoIHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVycyIpOworICAgIAl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAJLy8gdGhpcyBpcyBhIHN1Y2Nlc3MKKyAgICAgICAgCWxvZ2xuKCJQYXNzZWQgb3V0IG9mIGJvdW5kcyBjb2RlcG9pbnQgb2Zmc2V0Iik7CisgICAgCX0KKyAgICAJdHJ5IHsKKyAgICAgICAgCVVURjE2LmZpbmRPZmZzZXRGcm9tQ29kZVBvaW50KHN0ciwgNCk7CisgICAgICAgIAllcnJsbigiRkFJTCBHZXR0aW5nIHRoZSBhIG5vbi1leGlzdGVuY2UgY29kZXBvaW50IHRvIGEgc3RyaW5nICIgKworICAgICAgICAJICAgICAgIndpdGggc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXJzIik7CisgICAgCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgIAkvLyB0aGlzIGlzIGEgc3VjY2VzcworICAgICAgICAJbG9nbG4oIlBhc3NlZCBvdXQgb2YgYm91bmRzIGNvZGVwb2ludCBvZmZzZXQiKTsKKyAgICAJfQorICAgIAl0cnkgeworICAgICAgICAJVVRGMTYuZmluZENvZGVQb2ludE9mZnNldChzdHJidWZmLCA1KTsKKyAgICAgICAgCWVycmxuKCJGQUlMIEdldHRpbmcgdGhlIGEgbm9uLWV4aXN0ZW5jZSBjb2RlcG9pbnQgdG8gYSBzdHJpbmcgIiArIAorICAgICAgICAJICAgICAgIndpdGggc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXJzIik7CisgICAgCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgIAkvLyB0aGlzIGlzIGEgc3VjY2VzcworICAgICAgICAJbG9nbG4oIlBhc3NlZCBvdXQgb2YgYm91bmRzIGNvZGVwb2ludCBvZmZzZXQiKTsKKyAgICAJfQorICAgIAl0cnkgeworICAgICAgICAJVVRGMTYuZmluZE9mZnNldEZyb21Db2RlUG9pbnQoc3RyYnVmZiwgNCk7CisgICAgICAgIAllcnJsbigiRkFJTCBHZXR0aW5nIHRoZSBhIG5vbi1leGlzdGVuY2UgY29kZXBvaW50IHRvIGEgc3RyaW5nICIgKworICAgICAgICAJICAgICAgIndpdGggc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXJzIik7CisgICAgCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgIAkvLyB0aGlzIGlzIGEgc3VjY2VzcworICAgICAgICAJbG9nbG4oIlBhc3NlZCBvdXQgb2YgYm91bmRzIGNvZGVwb2ludCBvZmZzZXQiKTsKKyAgICAJfQorICAgIAl0cnkgeworICAgICAgICAJVVRGMTYuZmluZENvZGVQb2ludE9mZnNldChhcnJheSwgMCwgbGltaXQsIDUpOworICAgICAgICAJZXJybG4oIkZBSUwgR2V0dGluZyB0aGUgYSBub24tZXhpc3RlbmNlIGNvZGVwb2ludCB0byBhIHN0cmluZyAiICsgCisgICAgICAgIAkgICAgICAid2l0aCBzdXBwbGVtZW50YXJ5IGNoYXJhY3RlcnMiKTsKKyAgICAJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgCS8vIHRoaXMgaXMgYSBzdWNjZXNzCisgICAgICAgIAlsb2dsbigiUGFzc2VkIG91dCBvZiBib3VuZHMgY29kZXBvaW50IG9mZnNldCIpOworICAgIAl9CisgICAgCXRyeSB7CisgICAgICAgIAlVVEYxNi5maW5kT2Zmc2V0RnJvbUNvZGVQb2ludChhcnJheSwgMCwgbGltaXQsIDQpOworICAgICAgICAJZXJybG4oIkZBSUwgR2V0dGluZyB0aGUgYSBub24tZXhpc3RlbmNlIGNvZGVwb2ludCB0byBhIHN0cmluZyAiICsKKyAgICAgICAgCSAgICAgICJ3aXRoIHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVycyIpOworICAgIAl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAJLy8gdGhpcyBpcyBhIHN1Y2Nlc3MKKyAgICAgICAgCWxvZ2xuKCJQYXNzZWQgb3V0IG9mIGJvdW5kcyBjb2RlcG9pbnQgb2Zmc2V0Iik7CisgICAgCX0KKyAgICAKKyAgICAJaWYgKFVURjE2LmZpbmRDb2RlUG9pbnRPZmZzZXQoYXJyYXksIDEsIDMsIDApICE9IDAgfHwKKyAgICAgICAgCVVURjE2LmZpbmRPZmZzZXRGcm9tQ29kZVBvaW50KGFycmF5LCAxLCAzLCAwKSAhPSAwIHx8CisgICAgICAgIAlVVEYxNi5maW5kQ29kZVBvaW50T2Zmc2V0KGFycmF5LCAxLCAzLCAxKSAhPSAwIHx8CisgICAgICAgIAlVVEYxNi5maW5kQ29kZVBvaW50T2Zmc2V0KGFycmF5LCAxLCAzLCAyKSAhPSAxIHx8CisgICAgICAgIAlVVEYxNi5maW5kT2Zmc2V0RnJvbUNvZGVQb2ludChhcnJheSwgMSwgMywgMSkgIT0gMikgeworICAgICAgICAJZXJybG4oIkZBSUwgR2V0dGluZyB2YWxpZCBjb2RlcG9pbnQgb2Zmc2V0IGluIHN1YiBhcnJheSIpOworICAgIAl9CisgIAl9CisgIAorICAJLyoqCisgIAkqIFRlc3RpbmcgVVRGMTYgY2xhc3MgbWV0aG9kcyBnZXRDaGFyQ291bnQsICpTdXJyb2dhdGUKKyAgCSovCisgIAlwdWJsaWMgdm9pZCBUZXN0R2V0Q2hhckNvdW50U3Vycm9nYXRlKCkKKyAgCXsKKyAgICAJaWYgKFVURjE2LmdldENoYXJDb3VudCgweDYxKSAhPSAxIHx8CisgICAgICAgIAlVVEYxNi5nZXRDaGFyQ291bnQoMHgxMDAwMCkgIT0gMikgeworICAgICAgICAJZXJybG4oIkZBSUwgZ2V0Q2hhckNvdW50IHJlc3VsdCBmYWlsdXJlIik7CisgICAgCX0KKyAgICAJaWYgKFVURjE2LmdldExlYWRTdXJyb2dhdGUoMHg2MSkgIT0gMCB8fAorICAgICAgICAJVVRGMTYuZ2V0VHJhaWxTdXJyb2dhdGUoMHg2MSkgIT0gMHg2MSB8fAorICAgICAgICAJVVRGMTYuaXNMZWFkU3Vycm9nYXRlKChjaGFyKTB4NjEpIHx8CisgICAgICAgIAlVVEYxNi5pc1RyYWlsU3Vycm9nYXRlKChjaGFyKTB4NjEpIHx8CisgICAgICAgIAlVVEYxNi5nZXRMZWFkU3Vycm9nYXRlKDB4MTAwMDApICE9IDB4ZDgwMCB8fAorICAgICAgICAJVVRGMTYuZ2V0VHJhaWxTdXJyb2dhdGUoMHgxMDAwMCkgIT0gMHhkYzAwIHx8CisgICAgICAgIAlVVEYxNi5pc0xlYWRTdXJyb2dhdGUoKGNoYXIpMHhkODAwKSAhPSB0cnVlIHx8CisgICAgICAgIAlVVEYxNi5pc1RyYWlsU3Vycm9nYXRlKChjaGFyKTB4ZDgwMCkgfHwKKyAgICAgICAgCVVURjE2LmlzTGVhZFN1cnJvZ2F0ZSgoY2hhcikweGRjMDApIHx8CisgICAgICAgIAlVVEYxNi5pc1RyYWlsU3Vycm9nYXRlKChjaGFyKTB4ZGMwMCkgIT0gdHJ1ZSkgeworICAgICAgICAJZXJybG4oIkZBSUwgKlN1cnJvZ2F0ZSByZXN1bHQgZmFpbHVyZSIpOworICAgIAl9CisgICAgCisgICAgCWlmIChVVEYxNi5pc1N1cnJvZ2F0ZSgoY2hhcikweDYxKSB8fCAhVVRGMTYuaXNTdXJyb2dhdGUoKGNoYXIpMHhkODAwKSAKKyAgICAJICAgIHx8ICFVVEYxNi5pc1N1cnJvZ2F0ZSgoY2hhcikweGRjMDApKSB7CisgICAgICAgIAllcnJsbigiRkFJTCBpc1N1cnJvZ2F0ZSByZXN1bHQgZmFpbHVyZSIpOworICAgIAl9CisgIAl9CisgIAorICAJLyoqCisgIAkqIFRlc3RpbmcgVVRGMTYgY2xhc3MgbWV0aG9kIGluc2VydAorICAJKi8KKyAgCXB1YmxpYyB2b2lkIFRlc3RJbnNlcnQoKQorICAJeworICAgIAlTdHJpbmdCdWZmZXIgc3RyYnVmZiA9IG5ldyBTdHJpbmdCdWZmZXIoIjAxMjM0NTY3ODkiKTsKKyAgICAJY2hhciBhcnJheVtdID0gbmV3IGNoYXJbMTI4XTsKKyAgICAJVXRpbGl0eS5nZXRDaGFycyhzdHJidWZmLCAwLCBzdHJidWZmLmxlbmd0aCgpLCBhcnJheSwgMCk7CisgICAgCWludCBsZW5ndGggPSAxMDsKKyAgICAJVVRGMTYuaW5zZXJ0KHN0cmJ1ZmYsIDUsICd0Jyk7CisgICAgCVVURjE2Lmluc2VydChzdHJidWZmLCA1LCAncycpOworICAgIAlVVEYxNi5pbnNlcnQoc3RyYnVmZiwgNSwgJ2UnKTsKKyAgICAJVVRGMTYuaW5zZXJ0KHN0cmJ1ZmYsIDUsICd0Jyk7CisgICAgCWlmICghKHN0cmJ1ZmYudG9TdHJpbmcoKS5lcXVhbHMoIjAxMjM0dGVzdDU2Nzg5IikpKSB7CisgICAgICAgIAllcnJsbigiRkFJTCBpbnNlcnRpbmcgXCJ0ZXN0XCIiKTsKKyAgICAJfQorICAgIAlsZW5ndGggPSBVVEYxNi5pbnNlcnQoYXJyYXksIGxlbmd0aCwgNSwgJ3QnKTsKKyAgICAJbGVuZ3RoID0gVVRGMTYuaW5zZXJ0KGFycmF5LCBsZW5ndGgsIDUsICdzJyk7CisgICAgCWxlbmd0aCA9IFVURjE2Lmluc2VydChhcnJheSwgbGVuZ3RoLCA1LCAnZScpOworICAgIAlsZW5ndGggPSBVVEYxNi5pbnNlcnQoYXJyYXksIGxlbmd0aCwgNSwgJ3QnKTsKKyAgICAJU3RyaW5nIHN0ciA9IG5ldyBTdHJpbmcoYXJyYXksIDAsIGxlbmd0aCk7CisgICAgCWlmICghKHN0ci5lcXVhbHMoIjAxMjM0dGVzdDU2Nzg5IikpKSB7CisgICAgICAgIAllcnJsbigiRkFJTCBpbnNlcnRpbmcgXCJ0ZXN0XCIiKTsKKyAgICAJfQorICAgIAlVVEYxNi5pbnNlcnQoc3RyYnVmZiwgMCwgMHgxMDAwMCk7CisgICAgCVVURjE2Lmluc2VydChzdHJidWZmLCAxMSwgMHgxMDAwMCk7CisgICAgCVVURjE2Lmluc2VydChzdHJidWZmLCBzdHJidWZmLmxlbmd0aCgpLCAweDEwMDAwKTsKKyAgICAJaWYgKCEoc3RyYnVmZi50b1N0cmluZygpLmVxdWFscygKKyAgICAgICAgICAgICAgICAgICAgICJcdWQ4MDBcdWRjMDAwMTIzNHRlc3RcdWQ4MDBcdWRjMDA1Njc4OVx1ZDgwMFx1ZGMwMCIpKSkgeworICAgICAgICAJZXJybG4oIkZBSUwgaW5zZXJ0aW5nIHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVycyIpOworICAgIAl9CisgICAgCWxlbmd0aCA9IFVURjE2Lmluc2VydChhcnJheSwgbGVuZ3RoLCAwLCAweDEwMDAwKTsKKyAgICAJbGVuZ3RoID0gVVRGMTYuaW5zZXJ0KGFycmF5LCBsZW5ndGgsIDExLCAweDEwMDAwKTsKKyAgICAJbGVuZ3RoID0gVVRGMTYuaW5zZXJ0KGFycmF5LCBsZW5ndGgsIGxlbmd0aCwgMHgxMDAwMCk7CisgICAgCXN0ciA9IG5ldyBTdHJpbmcoYXJyYXksIDAsIGxlbmd0aCk7CisgICAgCWlmICghKHN0ci5lcXVhbHMoCisgICAgCSAgICAgICAgICAgICAiXHVkODAwXHVkYzAwMDEyMzR0ZXN0XHVkODAwXHVkYzAwNTY3ODlcdWQ4MDBcdWRjMDAiKSkpIHsKKyAgICAgICAgCWVycmxuKCJGQUlMIGluc2VydGluZyBzdXBwbGVtZW50YXJ5IGNoYXJhY3RlcnMiKTsKKyAgICAJfQorICAgIAorICAgIAl0cnkgeworICAgICAgICAJVVRGMTYuaW5zZXJ0KHN0cmJ1ZmYsIC0xLCAwKTsKKyAgICAgICAgCWVycmxuKCJGQUlMIGludmFsaWQgaW5zZXJ0aW9uIG9mZnNldCIpOworICAgIAl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAJU3lzdGVtLm91dC5wcmludCgiIik7CisgICAgCX0KKyAgICAJdHJ5IHsKKyAgICAgICAgCVVURjE2Lmluc2VydChzdHJidWZmLCA2NCwgMCk7CisgICAgICAgIAllcnJsbigiRkFJTCBpbnZhbGlkIGluc2VydGlvbiBvZmZzZXQiKTsKKyAgICAJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgCVN5c3RlbS5vdXQucHJpbnQoIiIpOworICAgIAl9CisgICAgCXRyeSB7CisgICAgICAgIAlVVEYxNi5pbnNlcnQoYXJyYXksIGxlbmd0aCwgLTEsIDApOworICAgICAgICAJZXJybG4oIkZBSUwgaW52YWxpZCBpbnNlcnRpb24gb2Zmc2V0Iik7CisgICAgCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgIAlTeXN0ZW0ub3V0LnByaW50KCIiKTsKKyAgICAJfQorICAgIAl0cnkgeworICAgICAgICAJVVRGMTYuaW5zZXJ0KGFycmF5LCBsZW5ndGgsIDY0LCAwKTsKKyAgICAgICAgCWVycmxuKCJGQUlMIGludmFsaWQgaW5zZXJ0aW9uIG9mZnNldCIpOworICAgIAl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAJU3lzdGVtLm91dC5wcmludCgiIik7CisgICAgCX0KKyAgICAJdHJ5IHsKKyAgICAJCS8vIGV4Y2VlZGVkIGFycmF5IHNpemUKKyAgICAgICAgCVVURjE2Lmluc2VydChhcnJheSwgYXJyYXkubGVuZ3RoLCA2NCwgMCk7CisgICAgICAgIAllcnJsbigiRkFJTCBpbnZhbGlkIGluc2VydGlvbiBvZmZzZXQiKTsKKyAgICAJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgCVN5c3RlbS5vdXQucHJpbnQoIiIpOworICAgIAl9CisgIAl9CisgIAorICAJLyogCisgIAkqIFRlc3RpbmcgbW92ZUNvZGVQb2ludE9mZnNldCBBUElzCisgIAkqLworICAJcHVibGljIHZvaWQgVGVzdE1vdmVDb2RlUG9pbnRPZmZzZXQoKQorICAJeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJLy8wMTIzNDU2Nzg5MCAgICAgMSAgICAgMiAgICAgMyAgICAgNDU2Nzg5MDEyMzQKKyAgICAgIAlTdHJpbmcgc3RyID0gbmV3IFN0cmluZygiMDEyMzQ1Njc4OVx1ZDgwMFx1ZGMwMFx1ZDgwMVx1ZGMwMTAxMjM0NTY3ODkiKTsKKyAgICAgIAlpbnQgbW92ZTFbXSA9IHsxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTIsIDEyLCAxNCwgMTQsIDE1LCAxNiwgCisgICAgICAJICAgICAgICAgICAgICAgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0fTsKKyAgICAgIAlpbnQgbW92ZTJbXSA9IHsyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTIsIDE0LCAxNCwgMTUsIDE1LCAxNiwgMTcsIAorICAgICAgICAJICAgICAgICAgICAgIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0fTsKKyAgICAgIAlpbnQgbW92ZTNbXSA9IHszLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTIsIDE0LCAxNSwgMTUsIDE2LCAxNiwgMTcsIDE4LAorICAgICAgICAgIAkgICAgICAgICAgIDE5LCAyMCwgMjEsIDIyLCAyMywgMjR9OworICAgICAgCWludCBzaXplID0gc3RyLmxlbmd0aCgpOworICAgICAgCWZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSArKykgeworICAgICAgICAgIAlpZiAoVVRGMTYubW92ZUNvZGVQb2ludE9mZnNldChzdHIsIGksIDEpICE9IG1vdmUxW2ldKSB7CisgICAgICAgICAgICAgIAllcnJsbigiRkFJTDogTW92aW5nIG9mZnNldCAiICsgaSArIAorICAgICAgICAgICAgICAgICAgICAJIiBieSAxIGNvZGVwb2ludCBleHBlY3RlZCByZXN1bHQgIiArIG1vdmUxW2ldKTsKKyAgICAgICAgICAJfQorICAgICAgICAgIAl0cnkgeworICAgICAgICAgICAgICAJaWYgKFVURjE2Lm1vdmVDb2RlUG9pbnRPZmZzZXQoc3RyLCBpLCAyKSAhPSBtb3ZlMltpXSkgeworICAgICAgICAgICAgICAgICAgCWVycmxuKCJGQUlMOiBNb3Zpbmcgb2Zmc2V0ICIgKyBpICsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICIgYnkgMiBjb2RlcG9pbnQgZXhwZWN0ZWQgcmVzdWx0ICIgKyBtb3ZlMltpXSk7CisgICAgICAgICAgICAgIAl9CisgICAgICAgICAgCX0gY2F0Y2ggKEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAJaWYgKGkgPD0gMjIpIHsKKyAgICAgICAgICAgICAgICAgIAl0aHJvdyBlOworICAgICAgICAgICAgICAJfQorICAgICAgICAgIAl9CisgICAgICAgICAgCXRyeQorICAgICAgICAgIAl7CisgICAgICAgICAgICAgIAlpZiAoVVRGMTYubW92ZUNvZGVQb2ludE9mZnNldChzdHIsIGksIDMpICE9IG1vdmUzW2ldKSB7CisgICAgICAgICAgICAgICAgICAJZXJybG4oIkZBSUw6IE1vdmluZyBvZmZzZXQgIiArIGkgKyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiBieSAzIGNvZGVwb2ludCBleHBlY3RlZCByZXN1bHQgIiArIG1vdmUzW2ldKTsKKyAgICAgICAgICAgICAgCX0KKyAgICAgICAgICAJfSBjYXRjaCAoSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgIAlpZiAoaSA8PSAyMSkgeworICAgICAgICAgICAgICAgICAgCXRocm93IGU7CisgICAgICAgICAgICAgIAl9CisgICAgICAgICAgCX0KKyAgICAgIAl9CisgICAgIAorICAgICAgCVN0cmluZ0J1ZmZlciBzdHJidWZmID0gbmV3IFN0cmluZ0J1ZmZlcihzdHIpOworICAgICAgCWZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSArKykgeworICAgICAgICAgIAlpZiAoVVRGMTYubW92ZUNvZGVQb2ludE9mZnNldChzdHJidWZmLCBpLCAxKSAhPSBtb3ZlMVtpXSkgeworICAgICAgICAgICAgICAJZXJybG4oIkZBSUw6IE1vdmluZyBvZmZzZXQgIiArIGkgKyAKKyAgICAgICAgICAgICAgICAgICAgCSIgYnkgMSBjb2RlcG9pbnQgZXhwZWN0ZWQgcmVzdWx0ICIgKyBtb3ZlMVtpXSk7CisgICAgICAgICAgCX0KKyAgICAgICAgICAJdHJ5IHsKKyAgICAgICAgICAgICAgCWlmIChVVEYxNi5tb3ZlQ29kZVBvaW50T2Zmc2V0KHN0cmJ1ZmYsIGksIDIpICE9IG1vdmUyW2ldKSB7CisgICAgICAgICAgICAgICAgICAJZXJybG4oIkZBSUw6IE1vdmluZyBvZmZzZXQgIiArIGkgKyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiBieSAyIGNvZGVwb2ludCBleHBlY3RlZCByZXN1bHQgIiArIG1vdmUyW2ldKTsKKyAgICAgICAgICAgICAgCX0KKyAgICAgICAgICAJfSBjYXRjaCAoSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgIAlpZiAoaSA8PSAyMikgeworICAgICAgICAgICAgICAgICAgCXRocm93IGU7CisgICAgICAgICAgICAgIAl9CisgICAgICAgICAgCX0KKyAgICAgICAgICAJdHJ5CisgICAgICAgICAgCXsKKyAgICAgICAgICAgICAgCWlmIChVVEYxNi5tb3ZlQ29kZVBvaW50T2Zmc2V0KHN0cmJ1ZmYsIGksIDMpICE9IG1vdmUzW2ldKSB7CisgICAgICAgICAgICAgICAgICAJZXJybG4oIkZBSUw6IE1vdmluZyBvZmZzZXQgIiArIGkgKyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiBieSAzIGNvZGVwb2ludCBleHBlY3RlZCByZXN1bHQgIiArIG1vdmUzW2ldKTsKKyAgICAgICAgICAgICAgCX0KKyAgICAgICAgICAJfSBjYXRjaCAoSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgIAlpZiAoaSA8PSAyMSkgeworICAgICAgICAgICAgICAgICAgCXRocm93IGU7CisgICAgICAgICAgICAgIAl9CisgICAgICAgICAgCX0gIAorICAgICAgCX0KKyAgICAgIAorICAgICAgCWNoYXIgc3RyYXJyYXlbXSA9IHN0ci50b0NoYXJBcnJheSgpOworICAgICAgCWZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSArKykgeworICAgICAgICAgIAlpZiAoVVRGMTYubW92ZUNvZGVQb2ludE9mZnNldChzdHJhcnJheSwgMCwgc2l6ZSwgaSwgMSkgIT0gbW92ZTFbaV0pIAorICAgICAgICAgIAl7CisgICAgICAgICAgICAgIAllcnJsbigiRkFJTDogTW92aW5nIG9mZnNldCAiICsgaSArIAorICAgICAgICAgICAgICAgICAgICAJIiBieSAxIGNvZGVwb2ludCBleHBlY3RlZCByZXN1bHQgIiArIG1vdmUxW2ldKTsKKyAgICAgICAgICAJfQorICAgICAgICAgIAl0cnkgeworICAgICAgICAgICAgICAJaWYgKFVURjE2Lm1vdmVDb2RlUG9pbnRPZmZzZXQoc3RyYXJyYXksIDAsIHNpemUsIGksIDIpICE9IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmUyW2ldKSB7CisgICAgICAgICAgICAgICAgICAJZXJybG4oIkZBSUw6IE1vdmluZyBvZmZzZXQgIiArIGkgKyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiBieSAyIGNvZGVwb2ludCBleHBlY3RlZCByZXN1bHQgIiArIG1vdmUyW2ldKTsKKyAgICAgICAgICAgICAgCX0KKyAgICAgICAgICAJfSBjYXRjaCAoSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgIAlpZiAoaSA8PSAyMikgeworICAgICAgICAgICAgICAgICAgCXRocm93IGU7CisgICAgICAgICAgICAgIAl9CisgICAgICAgICAgCX0KKyAgICAgICAgICAJdHJ5CisgICAgICAgICAgCXsKKyAgICAgICAgICAgICAgCWlmIChVVEYxNi5tb3ZlQ29kZVBvaW50T2Zmc2V0KHN0cmFycmF5LCAgMCwgc2l6ZSwgaSwgMykgIT0gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZTNbaV0pIHsKKyAgICAgICAgICAgICAgICAgIAllcnJsbigiRkFJTDogTW92aW5nIG9mZnNldCAiICsgaSArIAorICAgICAgICAgICAgICAgICAgICAgICAgICAiIGJ5IDMgY29kZXBvaW50IGV4cGVjdGVkIHJlc3VsdCAiICsgbW92ZTNbaV0pOworICAgICAgICAgICAgICAJfQorICAgICAgICAgIAl9IGNhdGNoIChJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgCWlmIChpIDw9IDIxKSB7CisgICAgICAgICAgICAgICAgICAJdGhyb3cgZTsKKyAgICAgICAgICAgICAgCX0KKyAgICAgICAgICAJfSAgCisgICAgICAJfQorICAgICAgCisgICAgICAJaWYgKFVURjE2Lm1vdmVDb2RlUG9pbnRPZmZzZXQoc3RyYXJyYXksIDksIDEzLCAwLCAyKSAhPSAzKSB7CisgICAgICAgICAgCWVycmxuKCJGQUlMOiBNb3Zpbmcgb2Zmc2V0IDAgYnkgMiBjb2RlcG9pbnQgaW4gc3ViYXJyYXkgWzksIDEzXSAiICsKKyAgICAgICAgICAgICAgICAJImV4cGVjdGVkIHJlc3VsdCAzIik7CisgICAgICAJfQorICAgICAgCWlmIChVVEYxNi5tb3ZlQ29kZVBvaW50T2Zmc2V0KHN0cmFycmF5LCA5LCAxMywgMSwgMikgIT0gNCkgeworICAgICAgICAgIAllcnJsbigiRkFJTDogTW92aW5nIG9mZnNldCAxIGJ5IDIgY29kZXBvaW50IGluIHN1YmFycmF5IFs5LCAxM10gIiArCisgICAgICAgICAgICAgICAgCSJleHBlY3RlZCByZXN1bHQgNCIpOworICAgICAgCX0KKyAgICAgIAlpZiAoVVRGMTYubW92ZUNvZGVQb2ludE9mZnNldChzdHJhcnJheSwgMTEsIDE0LCAwLCAyKSAhPSAzKSB7CisgICAgICAgICAgCWVycmxuKCJGQUlMOiBNb3Zpbmcgb2Zmc2V0IDAgYnkgMiBjb2RlcG9pbnQgaW4gc3ViYXJyYXkgWzExLCAxNF0gIiAKKyAgICAgICAgICAJICAgICAgKyAiZXhwZWN0ZWQgcmVzdWx0IDMiKTsKKyAgICAgIAl9CisgIAl9CisgIAorICAJLyoqCisgIAkqIFRlc3RpbmcgVVRGMTYgY2xhc3MgbWV0aG9kcyBzZXRDaGFyQXQKKyAgCSovCisgIAlwdWJsaWMgdm9pZCBUZXN0U2V0Q2hhckF0KCkKKyAgCXsKKyAgICAJU3RyaW5nQnVmZmVyIHN0cmJ1ZmYgPSBuZXcgU3RyaW5nQnVmZmVyKCIwMTIzNDUiKTsKKyAgICAJY2hhciBhcnJheVtdID0gbmV3IGNoYXJbMTI4XTsKKyAgICAJVXRpbGl0eS5nZXRDaGFycyhzdHJidWZmLCAwLCBzdHJidWZmLmxlbmd0aCgpLCBhcnJheSwgMCk7CisgICAgCWludCBsZW5ndGggPSA2OworICAgIAlmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSArKykgeworICAgICAgICAJVVRGMTYuc2V0Q2hhckF0KHN0cmJ1ZmYsIGksICcwJyk7CisgICAgICAgIAlVVEYxNi5zZXRDaGFyQXQoYXJyYXksIGxlbmd0aCwgaSwgJzAnKTsKKyAgICAJfQorICAgIAlTdHJpbmcgc3RyID0gbmV3IFN0cmluZyhhcnJheSwgMCwgbGVuZ3RoKTsKKyAgICAJaWYgKCEoc3RyYnVmZi50b1N0cmluZygpLmVxdWFscygiMDAwMDAwIikpIHx8CisgICAgICAgIAkhKHN0ci5lcXVhbHMoIjAwMDAwMCIpKSkgeworICAgICAgICAJZXJybG4oIkZBSUw6IHNldENoYXIgdG8gJzAnIGZhaWxlZCIpOworICAgIAl9CisgICAgCVVURjE2LnNldENoYXJBdChzdHJidWZmLCAwLCAweDEwMDAwKTsKKyAgICAJVVRGMTYuc2V0Q2hhckF0KHN0cmJ1ZmYsIDQsIDB4MTAwMDApOworICAgIAlVVEYxNi5zZXRDaGFyQXQoc3RyYnVmZiwgNywgMHgxMDAwMCk7CisgICAgCWlmICghKHN0cmJ1ZmYudG9TdHJpbmcoKS5lcXVhbHMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1ZDgwMFx1ZGMwMDAwXHVkODAwXHVkYzAwMFx1ZDgwMFx1ZGMwMCIpKSkgeworICAgICAgICAJZXJybG4oIkZBSUw6IHNldENoYXIgdG8gMHgxMDAwMCBmYWlsZWQiKTsKKyAgICAJfQorICAgIAlsZW5ndGggPSBVVEYxNi5zZXRDaGFyQXQoYXJyYXksIGxlbmd0aCwgMCwgMHgxMDAwMCk7CisgICAgCWxlbmd0aCA9IFVURjE2LnNldENoYXJBdChhcnJheSwgbGVuZ3RoLCA0LCAweDEwMDAwKTsKKyAgICAJbGVuZ3RoID0gVVRGMTYuc2V0Q2hhckF0KGFycmF5LCBsZW5ndGgsIDcsIDB4MTAwMDApOworICAgIAlzdHIgPSBuZXcgU3RyaW5nKGFycmF5LCAwLCBsZW5ndGgpOworICAgIAlpZiAoIShzdHIuZXF1YWxzKCJcdWQ4MDBcdWRjMDAwMFx1ZDgwMFx1ZGMwMDBcdWQ4MDBcdWRjMDAiKSkpIHsKKyAgICAgICAgCWVycmxuKCJGQUlMOiBzZXRDaGFyIHRvIDB4MTAwMDAgZmFpbGVkIik7CisgICAgCX0KKyAgICAJVVRGMTYuc2V0Q2hhckF0KHN0cmJ1ZmYsIDAsICcwJyk7CisgICAgCVVURjE2LnNldENoYXJBdChzdHJidWZmLCAxLCAnMScpOworICAgIAlVVEYxNi5zZXRDaGFyQXQoc3RyYnVmZiwgMiwgJzInKTsKKyAgICAJVVRGMTYuc2V0Q2hhckF0KHN0cmJ1ZmYsIDQsICczJyk7CisgICAgCVVURjE2LnNldENoYXJBdChzdHJidWZmLCA0LCAnNCcpOworICAgIAlVVEYxNi5zZXRDaGFyQXQoc3RyYnVmZiwgNSwgJzUnKTsKKyAgICAJaWYgKCFzdHJidWZmLnRvU3RyaW5nKCkuZXF1YWxzKCIwMTIzNDUiKSkgeworICAgIAkJZXJybG4oIkZhaWwgY29udmVydGluZyBzdXBwbGVtZW50YXJpZXMgaW4gU3RyaW5nQnVmZmVyIHRvIEJNUCAiICsKKyAgICAJCSAgICAgICJjaGFyYWN0ZXJzIik7CisgICAgCX0KKyAgICAJbGVuZ3RoID0gVVRGMTYuc2V0Q2hhckF0KGFycmF5LCBsZW5ndGgsIDAsICcwJyk7CisgICAgCWxlbmd0aCA9IFVURjE2LnNldENoYXJBdChhcnJheSwgbGVuZ3RoLCAxLCAnMScpOworICAgIAlsZW5ndGggPSBVVEYxNi5zZXRDaGFyQXQoYXJyYXksIGxlbmd0aCwgMiwgJzInKTsKKyAgICAJbGVuZ3RoID0gVVRGMTYuc2V0Q2hhckF0KGFycmF5LCBsZW5ndGgsIDQsICczJyk7CisgICAgCWxlbmd0aCA9IFVURjE2LnNldENoYXJBdChhcnJheSwgbGVuZ3RoLCA0LCAnNCcpOworICAgIAlsZW5ndGggPSBVVEYxNi5zZXRDaGFyQXQoYXJyYXksIGxlbmd0aCwgNSwgJzUnKTsKKyAgICAJc3RyID0gbmV3IFN0cmluZyhhcnJheSwgMCwgbGVuZ3RoKTsKKyAgICAJaWYgKCFzdHIuZXF1YWxzKCIwMTIzNDUiKSkgeworICAgIAkJZXJybG4oIkZhaWwgY29udmVydGluZyBzdXBwbGVtZW50YXJpZXMgaW4gYXJyYXkgdG8gQk1QICIgKworICAgIAkJICAgICAgImNoYXJhY3RlcnMiKTsKKyAgICAJfQorICAgIAl0cnkgeworICAgICAgICAJVVRGMTYuc2V0Q2hhckF0KHN0cmJ1ZmYsIC0xLCAwKTsKKyAgICAgICAgCWVycmxuKCJGQUlMOiBzZXR0aW5nIGNoYXJhY3RlciBhdCBpbnZhbGlkIG9mZnNldCIpOworICAgIAl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAJU3lzdGVtLm91dC5wcmludCgiIik7CisgICAgCX0KKyAgICAJdHJ5IHsKKyAgICAgICAgCVVURjE2LnNldENoYXJBdChhcnJheSwgbGVuZ3RoLCAtMSwgMCk7CisgICAgICAgIAllcnJsbigiRkFJTDogc2V0dGluZyBjaGFyYWN0ZXIgYXQgaW52YWxpZCBvZmZzZXQiKTsKKyAgICAJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgCVN5c3RlbS5vdXQucHJpbnQoIiIpOworICAgIAl9CisgICAgCXRyeSB7CisgICAgICAgIAlVVEYxNi5zZXRDaGFyQXQoc3RyYnVmZiwgbGVuZ3RoLCAwKTsKKyAgICAgICAgCWVycmxuKCJGQUlMOiBzZXR0aW5nIGNoYXJhY3RlciBhdCBpbnZhbGlkIG9mZnNldCIpOworICAgIAl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAJU3lzdGVtLm91dC5wcmludCgiIik7CisgICAgCX0KKyAgICAJdHJ5IHsKKyAgICAgICAgCVVURjE2LnNldENoYXJBdChhcnJheSwgbGVuZ3RoLCBsZW5ndGgsIDApOworICAgICAgICAJZXJybG4oIkZBSUw6IHNldHRpbmcgY2hhcmFjdGVyIGF0IGludmFsaWQgb2Zmc2V0Iik7CisgICAgCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgIAlTeXN0ZW0ub3V0LnByaW50KCIiKTsKKyAgICAJfQorICAJfQorCisgIAkvKioKKyAgCSogVGVzdGluZyBVVEYxNiB2YWx1ZW9mIEFQSXMKKyAgCSovCisgIAlwdWJsaWMgdm9pZCBUZXN0VmFsdWVPZigpCisgIAl7CisgICAgCWlmICghVVRGMTYudmFsdWVPZigweDYxKS5lcXVhbHMoImEiKSB8fCAKKyAgICAgICAgCSFVVEYxNi52YWx1ZU9mKDB4MTAwMDApLmVxdWFscygiXHVkODAwXHVkYzAwIikpIHsKKyAgICAgICAgCWVycmxuKCJGQUlMOiB2YWx1ZW9mKGNoYXIzMikiKTsKKyAgICAJfQorICAgIAlTdHJpbmcgc3RyID0gbmV3IFN0cmluZygiMDEyMzRcdWQ4MDBcdWRjMDA1Njc4OSIpOworICAgIAlTdHJpbmdCdWZmZXIgc3RyYnVmZiA9IG5ldyBTdHJpbmdCdWZmZXIoc3RyKTsKKyAgICAJY2hhciBhcnJheVtdID0gc3RyLnRvQ2hhckFycmF5KCk7CisgICAgCWludCBsZW5ndGggPSBzdHIubGVuZ3RoKCk7CisgICAgCisgICAgCVN0cmluZyBleHBlY3RlZFtdID0geyIwIiwgIjEiLCAiMiIsICIzIiwgIjQiLCAiXHVkODAwXHVkYzAwIiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgCQkiXHVkODAwXHVkYzAwIiwgIjUiLCAiNiIsICI3IiwgIjgiLCAiOSJ9OworICAgIAlmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSArKykgeworICAgICAgICAJaWYgKCFVVEYxNi52YWx1ZU9mKHN0ciwgaSkuZXF1YWxzKGV4cGVjdGVkW2ldKSB8fAorICAgICAgICAgICAgCSFVVEYxNi52YWx1ZU9mKHN0cmJ1ZmYsIGkpLmVxdWFscyhleHBlY3RlZFtpXSkgfHwKKyAgICAgICAgICAgIAkhVVRGMTYudmFsdWVPZihhcnJheSwgMCwgbGVuZ3RoLCBpKS5lcXVhbHMoZXhwZWN0ZWRbaV0pKSB7CisgICAgICAgICAgICAJZXJybG4oIkZBSUw6IHZhbHVlT2YoKSBleHBlY3RlZCAiICsgZXhwZWN0ZWRbaV0pOworICAgICAgICAJfQorICAgIAl9CisgICAgCXRyeSB7CisgICAgICAgIAlVVEYxNi52YWx1ZU9mKHN0ciwgLTEpOworICAgICAgICAJZXJybG4oIkZBSUw6IG91dCBvZiBib3VuZHMgZXJyb3IgZXhwZWN0ZWQiKTsKKyAgICAJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgCVN5c3RlbS5vdXQucHJpbnQoIiIpOworICAgIAl9CisgICAgCXRyeSB7CisgICAgICAgIAlVVEYxNi52YWx1ZU9mKHN0cmJ1ZmYsIC0xKTsKKyAgICAgICAgCWVycmxuKCJGQUlMOiBvdXQgb2YgYm91bmRzIGVycm9yIGV4cGVjdGVkIik7CisgICAgCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgIAlTeXN0ZW0ub3V0LnByaW50KCIiKTsKKyAgICAJfQorICAgIAl0cnkgeworICAgICAgICAJVVRGMTYudmFsdWVPZihhcnJheSwgMCwgbGVuZ3RoLCAtMSk7CisgICAgICAgIAllcnJsbigiRkFJTDogb3V0IG9mIGJvdW5kcyBlcnJvciBleHBlY3RlZCIpOworICAgIAl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAJU3lzdGVtLm91dC5wcmludCgiIik7CisgICAgCX0KKyAgICAJdHJ5IHsKKyAgICAgICAgCVVURjE2LnZhbHVlT2Yoc3RyLCBsZW5ndGgpOworICAgICAgICAJZXJybG4oIkZBSUw6IG91dCBvZiBib3VuZHMgZXJyb3IgZXhwZWN0ZWQiKTsKKyAgICAJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgCVN5c3RlbS5vdXQucHJpbnQoIiIpOworICAgIAl9CisgICAgCXRyeSB7CisgICAgICAgIAlVVEYxNi52YWx1ZU9mKHN0cmJ1ZmYsIGxlbmd0aCk7CisgICAgICAgIAllcnJsbigiRkFJTDogb3V0IG9mIGJvdW5kcyBlcnJvciBleHBlY3RlZCIpOworICAgIAl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAJU3lzdGVtLm91dC5wcmludCgiIik7CisgICAgCX0KKyAgICAJdHJ5IHsKKyAgICAgICAgCVVURjE2LnZhbHVlT2YoYXJyYXksIDAsIGxlbmd0aCwgbGVuZ3RoKTsKKyAgICAgICAgCWVycmxuKCJGQUlMOiBvdXQgb2YgYm91bmRzIGVycm9yIGV4cGVjdGVkIik7CisgICAgCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgIAlTeXN0ZW0ub3V0LnByaW50KCIiKTsKKyAgICAJfQorICAgIAlpZiAoIVVURjE2LnZhbHVlT2YoYXJyYXksIDYsIGxlbmd0aCwgMCkuZXF1YWxzKCJcdWRjMDAiKSB8fAorICAgICAgICAJIVVURjE2LnZhbHVlT2YoYXJyYXksIDAsIDYsIDUpLmVxdWFscygiXHVkODAwIikpIHsKKyAgICAgICAgCWVycmxuKCJGQUlMOiBlcnJvciBnZXR0aW5nIHBhcnRpYWwgc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXIiKTsKKyAgICAJfQorICAgIAl0cnkgeworICAgICAgICAJVVRGMTYudmFsdWVPZihhcnJheSwgMywgNSwgLTEpOworICAgICAgICAJZXJybG4oIkZBSUw6IG91dCBvZiBib3VuZHMgZXJyb3IgZXhwZWN0ZWQiKTsKKyAgICAJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgCVN5c3RlbS5vdXQucHJpbnQoIiIpOworICAgIAl9CisgICAgCXRyeSB7CisgICAgICAgIAlVVEYxNi52YWx1ZU9mKGFycmF5LCAzLCA1LCAzKTsKKyAgICAgICAgCWVycmxuKCJGQUlMOiBvdXQgb2YgYm91bmRzIGVycm9yIGV4cGVjdGVkIik7CisgICAgCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgIAlTeXN0ZW0ub3V0LnByaW50KCIiKTsKKyAgICAJfQorICAJfQorICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0SW5kZXhPZigpCisgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAvLzAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NQorICAgICAgICBTdHJpbmcgdGVzdDEgICAgID0gInRlc3QgdGVzdCB0dGVzdCB0ZXRlc3QgdGVzdGVzdGVzdHN0dCI7CisgICAgICAgIFN0cmluZyB0ZXN0MiAgICAgPSAidGVzdCI7CisgICAgICAgIGludCAgICB0ZXN0Q2hhcjEgPSAweDc0OworICAgICAgICBpbnQgICAgdGVzdENoYXIyID0gMHgyMDQwMjsKKyAgICAgICAgLy8gaW50ICAgIHRlc3RDaGFyMyA9IDB4ZGMwMjsKKyAgICAgICAgLy8gaW50ICAgIHRlc3RDaGFyNCA9IDB4ZDg0MTsKKyAgICAgICAgU3RyaW5nIHRlc3QzICAgICA9ICJcdWQ4NDFcdWRjMDJcdTAwNzFcdWRjMDJcdWQ4NDFcdTAwNzFcdWQ4NDFcdWRjMDJcdTAwNzFcdTAwNzJcdWQ4NDFcdWRjMDJcdTAwNzFcdWQ4NDFcdWRjMDJcdTAwNzFcdWRjMDJcdWQ4NDFcdTAwNzMiOworICAgICAgICBTdHJpbmcgdGVzdDQgICAgID0gVUNoYXJhY3Rlci50b1N0cmluZyh0ZXN0Q2hhcjIpOworCisgICAgICAgIGlmIChVVEYxNi5pbmRleE9mKHRlc3QxLCB0ZXN0MikgIT0gMCB8fAorICAgICAgICAgICAgVVRGMTYuaW5kZXhPZih0ZXN0MSwgdGVzdDIsIDApICE9IDApIHsKKyAgICAgICAgICAgIGVycmxuKCJpbmRleE9mIGZhaWxlZDogZXhwZWN0ZWQgdG8gZmluZCAnIiArIHRlc3QyICsgCisgICAgICAgICAgICAgICAgICAiJyBhdCBwb3NpdGlvbiAwIGluIHRleHQgJyIgKyB0ZXN0MSArICInIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFVURjE2LmluZGV4T2YodGVzdDEsIHRlc3RDaGFyMSkgIT0gMCB8fAorICAgICAgICAgICAgVVRGMTYuaW5kZXhPZih0ZXN0MSwgdGVzdENoYXIxLCAwKSAhPSAwKSB7CisgICAgICAgICAgICBlcnJsbigiaW5kZXhPZiBmYWlsZWQ6IGV4cGVjdGVkIHRvIGZpbmQgMHgiICsgCisgICAgICAgICAgICAgICAgICBJbnRlZ2VyLnRvSGV4U3RyaW5nKHRlc3RDaGFyMSkgKyAKKyAgICAgICAgICAgICAgICAgICIgYXQgcG9zaXRpb24gMCBpbiB0ZXh0ICciICsgdGVzdDEgKyAiJyIpOworICAgICAgICB9CisgICAgICAgIGlmIChVVEYxNi5pbmRleE9mKHRlc3QzLCB0ZXN0Q2hhcjIpICE9IDAgfHwKKyAgICAgICAgICAgIFVURjE2LmluZGV4T2YodGVzdDMsIHRlc3RDaGFyMiwgMCkgIT0gMCkgeworICAgICAgICAgICAgZXJybG4oImluZGV4T2YgZmFpbGVkOiBleHBlY3RlZCB0byBmaW5kIDB4IiArIAorICAgICAgICAgICAgICAgICAgSW50ZWdlci50b0hleFN0cmluZyh0ZXN0Q2hhcjIpICsgCisgICAgICAgICAgICAgICAgICAiIGF0IHBvc2l0aW9uIDAgaW4gdGV4dCAnIiArIFV0aWxpdHkuaGV4KHRlc3QzKSArICInIik7CisgICAgICAgIH0KKyAgICAgICAgU3RyaW5nIHRlc3Q1ID0gIlx1ZDg0MVx1ZDg0MVx1ZGMwMiI7CisgICAgICAgIGlmIChVVEYxNi5pbmRleE9mKHRlc3Q1LCB0ZXN0Q2hhcjIpICE9IDEgfHwKKyAgICAgICAgICAgIFVURjE2LmluZGV4T2YodGVzdDUsIHRlc3RDaGFyMiwgMCkgIT0gMSkgeworICAgICAgICAgICAgZXJybG4oImluZGV4T2YgZmFpbGVkOiBleHBlY3RlZCB0byBmaW5kIDB4IiArIAorICAgICAgICAgICAgICAgICAgSW50ZWdlci50b0hleFN0cmluZyh0ZXN0Q2hhcjIpICsgCisgICAgICAgICAgICAgICAgICAiIGF0IHBvc2l0aW9uIDAgaW4gdGV4dCAnIiArIFV0aWxpdHkuaGV4KHRlc3QzKSArICInIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFVURjE2Lmxhc3RJbmRleE9mKHRlc3QxLCB0ZXN0MikgIT0gMjkgfHwKKyAgICAgICAgICAgIFVURjE2Lmxhc3RJbmRleE9mKHRlc3QxLCB0ZXN0MiwgdGVzdDEubGVuZ3RoKCkpICE9IDI5KSB7CisgICAgICAgICAgICBlcnJsbigibGFzdEluZGV4T2YgZmFpbGVkOiBleHBlY3RlZCB0byBmaW5kICciICsgdGVzdDIgKyAKKyAgICAgICAgICAgICAgICAgICInIGF0IHBvc2l0aW9uIDI5IGluIHRleHQgJyIgKyB0ZXN0MSArICInIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFVURjE2Lmxhc3RJbmRleE9mKHRlc3QxLCB0ZXN0Q2hhcjEpICE9IDM1IHx8CisgICAgICAgICAgICBVVEYxNi5sYXN0SW5kZXhPZih0ZXN0MSwgdGVzdENoYXIxLCB0ZXN0MS5sZW5ndGgoKSkgIT0gMzUpIHsKKyAgICAgICAgICAgIGVycmxuKCJsYXN0SW5kZXhPZiBmYWlsZWQ6IGV4cGVjdGVkIHRvIGZpbmQgMHgiICsgCisgICAgICAgICAgICAgICAgICBJbnRlZ2VyLnRvSGV4U3RyaW5nKHRlc3RDaGFyMSkgKyAKKyAgICAgICAgICAgICAgICAgICIgYXQgcG9zaXRpb24gMzUgaW4gdGV4dCAnIiArIHRlc3QxICsgIiciKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoVVRGMTYubGFzdEluZGV4T2YodGVzdDMsIHRlc3RDaGFyMikgIT0gMTMgfHwKKyAgICAgICAgICAgIFVURjE2Lmxhc3RJbmRleE9mKHRlc3QzLCB0ZXN0Q2hhcjIsIHRlc3QzLmxlbmd0aCgpKSAhPSAxMykgeworICAgICAgICAgICAgZXJybG4oImluZGV4T2YgZmFpbGVkOiBleHBlY3RlZCB0byBmaW5kIDB4IiArIAorICAgICAgICAgICAgICAgICAgSW50ZWdlci50b0hleFN0cmluZyh0ZXN0Q2hhcjIpICsgCisgICAgICAgICAgICAgICAgICAiIGF0IHBvc2l0aW9uIDEzIGluIHRleHQgJyIgKyBVdGlsaXR5LmhleCh0ZXN0MykgKyAiJyIpOworICAgICAgICB9CisgICAgICAgIGludCBvY2N1cnJlbmNlcyA9IDA7CisgICAgICAgIGZvciAoaW50IHN0YXJ0UG9zID0gMDsgc3RhcnRQb3MgIT0gLTEgJiYgc3RhcnRQb3MgPCB0ZXN0MS5sZW5ndGgoKTspCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXJ0UG9zID0gVVRGMTYuaW5kZXhPZih0ZXN0MSwgdGVzdDIsIHN0YXJ0UG9zKTsKKyAgICAgICAgICAgIGlmIChzdGFydFBvcyA+PSAwKSB7CisgICAgICAgICAgICAgICAgKysgb2NjdXJyZW5jZXM7CisgICAgICAgICAgICAgICAgc3RhcnRQb3MgKz0gNDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAob2NjdXJyZW5jZXMgIT0gNikgeworICAgICAgICAgICAgZXJybG4oImluZGV4T2YgZmFpbGVkOiBleHBlY3RlZCB0byBmaW5kIDYgb2NjdXJyZW5jZXMsIGZvdW5kICIgCisgICAgICAgICAgICAgICAgICArIG9jY3VycmVuY2VzKTsKKyAgICAgICAgfQorICAgIAorICAgICAgICBvY2N1cnJlbmNlcyA9IDA7CisgICAgICAgIGZvciAoaW50IHN0YXJ0UG9zID0gMTA7IHN0YXJ0UG9zICE9IC0xICYmIHN0YXJ0UG9zIDwgdGVzdDEubGVuZ3RoKCk7KQorICAgICAgICB7CisgICAgICAgICAgICBzdGFydFBvcyA9IFVURjE2LmluZGV4T2YodGVzdDEsIHRlc3QyLCBzdGFydFBvcyk7CisgICAgICAgICAgICBpZiAoc3RhcnRQb3MgPj0gMCkgeworICAgICAgICAgICAgICAgICsrIG9jY3VycmVuY2VzOworICAgICAgICAgICAgICAgIHN0YXJ0UG9zICs9IDQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKG9jY3VycmVuY2VzICE9IDQpIHsKKyAgICAgICAgICAgIGVycmxuKCJpbmRleE9mIHdpdGggc3RhcnRpbmcgb2Zmc2V0IGZhaWxlZDogZXhwZWN0ZWQgdG8gZmluZCA0IG9jY3VycmVuY2VzLCBmb3VuZCAiIAorICAgICAgICAgICAgICAgICAgKyBvY2N1cnJlbmNlcyk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG9jY3VycmVuY2VzID0gMDsKKyAgICAgICAgZm9yIChpbnQgc3RhcnRQb3MgPSAwOworICAgICAgICAgICAgc3RhcnRQb3MgIT0gLTEgJiYgc3RhcnRQb3MgPCB0ZXN0My5sZW5ndGgoKTspIHsKKyAgICAgICAgICAgIHN0YXJ0UG9zID0gVVRGMTYuaW5kZXhPZih0ZXN0MywgdGVzdDQsIHN0YXJ0UG9zKTsKKyAgICAgICAgICAgIGlmIChzdGFydFBvcyAhPSAtMSkgeworICAgICAgICAgICAgICAgICsrIG9jY3VycmVuY2VzOworICAgICAgICAgICAgICAgIHN0YXJ0UG9zICs9IDI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKG9jY3VycmVuY2VzICE9IDQpIHsKKyAgICAgICAgICAgIGVycmxuKCJpbmRleE9mIGZhaWxlZDogZXhwZWN0ZWQgdG8gZmluZCA0IG9jY3VycmVuY2VzLCBmb3VuZCAiIAorICAgICAgICAgICAgKyBvY2N1cnJlbmNlcyk7CisgICAgICAgIH0KKworICAgICAgICBvY2N1cnJlbmNlcyA9IDA7CisgICAgICAgIGZvciAoaW50IHN0YXJ0UG9zID0gMTA7CisgICAgICAgICAgICAgc3RhcnRQb3MgIT0gLTEgJiYgc3RhcnRQb3MgPCB0ZXN0My5sZW5ndGgoKTspIHsKKyAgICAgICAgICAgIHN0YXJ0UG9zID0gVVRGMTYuaW5kZXhPZih0ZXN0MywgdGVzdDQsIHN0YXJ0UG9zKTsKKyAgICAgICAgICAgIGlmIChzdGFydFBvcyAhPSAtMSkgeworICAgICAgICAgICAgICAgICsrIG9jY3VycmVuY2VzOyAKKyAgICAgICAgICAgICAgICBzdGFydFBvcyArPSAyOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChvY2N1cnJlbmNlcyAhPSAyKSB7CisgICAgICAgICAgICBlcnJsbigiaW5kZXhPZiBmYWlsZWQ6IGV4cGVjdGVkIHRvIGZpbmQgMiBvY2N1cnJlbmNlcywgZm91bmQgIiAKKyAgICAgICAgICAgICAgICAgICsgb2NjdXJyZW5jZXMpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBvY2N1cnJlbmNlcyA9IDA7CisgICAgICAgIGZvciAoaW50IHN0YXJ0UG9zID0gMDsKKyAgICAgICAgICAgIHN0YXJ0UG9zICE9IC0xICYmIHN0YXJ0UG9zIDwgdGVzdDEubGVuZ3RoKCk7KSB7CisgICAgICAgICAgICBzdGFydFBvcyA9IFVURjE2LmluZGV4T2YodGVzdDEsIHRlc3RDaGFyMSwgc3RhcnRQb3MpOworICAgICAgICAgICAgaWYgKHN0YXJ0UG9zICE9IC0xKSB7IAorICAgICAgICAgICAgICAgICsrIG9jY3VycmVuY2VzOyAKKyAgICAgICAgICAgICAgICBzdGFydFBvcyArPSAxOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChvY2N1cnJlbmNlcyAhPSAxNikgeworICAgICAgICAgICAgZXJybG4oImluZGV4T2Ygd2l0aCBjaGFyYWN0ZXIgZmFpbGVkOiBleHBlY3RlZCB0byBmaW5kIDE2IG9jY3VycmVuY2VzLCBmb3VuZCAiIAorICAgICAgICAgICAgICAgICAgKyBvY2N1cnJlbmNlcyk7CisgICAgICAgIH0KKworICAgICAgICBvY2N1cnJlbmNlcyA9IDA7CisgICAgICAgIGZvciAoaW50IHN0YXJ0UG9zID0gMTA7CisgICAgICAgICAgICBzdGFydFBvcyAhPSAtMSAmJiBzdGFydFBvcyA8IHRlc3QxLmxlbmd0aCgpOykgeworICAgICAgICAgICAgc3RhcnRQb3MgPSBVVEYxNi5pbmRleE9mKHRlc3QxLCB0ZXN0Q2hhcjEsIHN0YXJ0UG9zKTsKKyAgICAgICAgICAgIGlmIChzdGFydFBvcyAhPSAtMSkgeyAKKyAgICAgICAgICAgICAgICArKyBvY2N1cnJlbmNlczsgCisgICAgICAgICAgICAgICAgc3RhcnRQb3MgKz0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAob2NjdXJyZW5jZXMgIT0gMTIpIHsKKyAgICAgICAgICAgIGVycmxuKCJpbmRleE9mIHdpdGggY2hhcmFjdGVyICYgc3RhcnQgb2Zmc2V0IGZhaWxlZDogZXhwZWN0ZWQgdG8gZmluZCAxMiBvY2N1cnJlbmNlcywgZm91bmQgIiAKKyAgICAgICAgICAgICsgb2NjdXJyZW5jZXMpOworICAgICAgICB9CisKKyAgICAgICAgb2NjdXJyZW5jZXMgPSAwOworICAgICAgICBmb3IgKGludCBzdGFydFBvcyA9IDA7CisgICAgICAgICAgICBzdGFydFBvcyAhPSAtMSAmJiBzdGFydFBvcyA8IHRlc3QzLmxlbmd0aCgpOykgeworICAgICAgICAgICAgc3RhcnRQb3MgPSBVVEYxNi5pbmRleE9mKHRlc3QzLCB0ZXN0Q2hhcjIsIHN0YXJ0UG9zKTsKKyAgICAgICAgICAgIGlmIChzdGFydFBvcyAhPSAtMSkgeworICAgICAgICAgICAgICAgICsrIG9jY3VycmVuY2VzOyAKKyAgICAgICAgICAgICAgICBzdGFydFBvcyArPSAxOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChvY2N1cnJlbmNlcyAhPSA0KSB7CisgICAgICAgICAgICBlcnJsbigiaW5kZXhPZiBmYWlsZWQ6IGV4cGVjdGVkIHRvIGZpbmQgNCBvY2N1cnJlbmNlcywgZm91bmQgIiAKKyAgICAgICAgICAgICAgICAgICsgb2NjdXJyZW5jZXMpOworICAgICAgICB9CisgICAgIAorICAgICAgICBvY2N1cnJlbmNlcyA9IDA7CisgICAgICAgIGZvciAoaW50IHN0YXJ0UG9zID0gNTsgc3RhcnRQb3MgIT0gLTEgJiYgc3RhcnRQb3MgPCB0ZXN0My5sZW5ndGgoKTspIHsKKyAgICAgICAgICAgIHN0YXJ0UG9zID0gVVRGMTYuaW5kZXhPZih0ZXN0MywgdGVzdENoYXIyLCBzdGFydFBvcyk7CisgICAgICAgICAgICBpZiAoc3RhcnRQb3MgIT0gLTEpIHsKKyAgICAgICAgICAgICAgICArKyBvY2N1cnJlbmNlczsgCisgICAgICAgICAgICAgICAgc3RhcnRQb3MgKz0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAob2NjdXJyZW5jZXMgIT0gMykgeworICAgICAgICAgICAgZXJybG4oImluZGV4T2Ygd2l0aCBjaGFyYWN0ZXIgJiBzdGFydCAmIGVuZCBvZmZzZXRzIGZhaWxlZDogZXhwZWN0ZWQgdG8gZmluZCAyIG9jY3VycmVuY2VzLCBmb3VuZCAiIAorICAgICAgICAgICAgKyBvY2N1cnJlbmNlcyk7CisgICAgICAgIH0KKyAgICAgICAgb2NjdXJyZW5jZXMgPSAwOworICAgICAgICBmb3IgKGludCBzdGFydFBvcyA9IDMyOyBzdGFydFBvcyAhPSAtMTspIHsKKyAgICAgICAgICAgIHN0YXJ0UG9zID0gVVRGMTYubGFzdEluZGV4T2YodGVzdDEsIHRlc3QyLCBzdGFydFBvcyk7CisgICAgICAgICAgICBpZiAoc3RhcnRQb3MgIT0gLTEpIHsKKyAgICAgICAgICAgICAgICArKyBvY2N1cnJlbmNlczsKKyAgICAgICAgICAgICAgICBzdGFydFBvcyAtPSA1OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChvY2N1cnJlbmNlcyAhPSA2KSB7CisgICAgICAgICAgICBlcnJsbigibGFzdEluZGV4T2Ygd2l0aCBzdGFydGluZyBhbmQgZW5kaW5nIG9mZnNldHMgZmFpbGVkOiBleHBlY3RlZCB0byBmaW5kIDQgb2NjdXJyZW5jZXMsIGZvdW5kICIgCisgICAgICAgICAgICAgICAgICArIG9jY3VycmVuY2VzKTsKKyAgICAgICAgfQorICAgICAgICBvY2N1cnJlbmNlcyA9IDA7CisgICAgICAgIGZvciAoaW50IHN0YXJ0UG9zID0gMzI7IHN0YXJ0UG9zICE9IC0xOykgeworICAgICAgICAgICAgc3RhcnRQb3MgPSBVVEYxNi5sYXN0SW5kZXhPZih0ZXN0MSwgdGVzdENoYXIxLCBzdGFydFBvcyk7CisgICAgICAgICAgICBpZiAoc3RhcnRQb3MgIT0gLTEpIHsgCisgICAgICAgICAgICAgICAgKysgb2NjdXJyZW5jZXM7CisgICAgICAgICAgICAgICAgc3RhcnRQb3MgLT0gNTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAob2NjdXJyZW5jZXMgIT0gNykgeworICAgICAgICAgICAgZXJybG4oImxhc3RJbmRleE9mIHdpdGggY2hhcmFjdGVyICYgc3RhcnQgJiBlbmQgb2Zmc2V0cyBmYWlsZWQ6IGV4cGVjdGVkIHRvIGZpbmQgMTEgb2NjdXJyZW5jZXMsIGZvdW5kICIgCisgICAgICAgICAgICArIG9jY3VycmVuY2VzKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vdGVzdGluZyBVQ2hhcjMyCisgICAgICAgIG9jY3VycmVuY2VzID0gMDsKKyAgICAgICAgZm9yIChpbnQgc3RhcnRQb3MgPSB0ZXN0My5sZW5ndGgoKTsgc3RhcnRQb3MgIT0gLTE7KSB7CisgICAgICAgICAgICBzdGFydFBvcyA9IFVURjE2Lmxhc3RJbmRleE9mKHRlc3QzLCB0ZXN0Q2hhcjIsIHN0YXJ0UG9zIC0gNSk7CisgICAgICAgICAgICBpZiAoc3RhcnRQb3MgIT0gLTEpIHsgCisgICAgICAgICAgICAgICAgKysgb2NjdXJyZW5jZXM7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKG9jY3VycmVuY2VzICE9IDMpIHsKKyAgICAgICAgICAgIGVycmxuKCJsYXN0SW5kZXhPZiB3aXRoIGNoYXJhY3RlciAmIHN0YXJ0ICYgZW5kIG9mZnNldHMgZmFpbGVkOiBleHBlY3RlZCB0byBmaW5kIDMgb2NjdXJyZW5jZXMsIGZvdW5kICIgCisgICAgICAgICAgICArIG9jY3VycmVuY2VzKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gdGVzdGluZyBzdXBwbGVtZW50YXJ5CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgSU5ERVhPRl9TVVBQTEVNRU5UQVJZX0NIQVJfLmxlbmd0aDsgaSArKykgeworICAgICAgICAJaW50IGNoID0gSU5ERVhPRl9TVVBQTEVNRU5UQVJZX0NIQVJfW2ldOworICAgICAgICAJZm9yIChpbnQgaiA9IDA7IGogPCBJTkRFWE9GX1NVUFBMRU1FTlRBUllfQ0hBUl9JTkRFWF9baV0ubGVuZ3RoOworICAgICAgICAJICAgICBqICsrKSB7CisgICAgICAgIAkgICAgIGludCBpbmRleCA9IDA7CisgICAgICAgIAkgICAgIGludCBleHBlY3RlZCA9IElOREVYT0ZfU1VQUExFTUVOVEFSWV9DSEFSX0lOREVYX1tpXVtqXTsKKyAgICAgICAgCSAgICAgaWYgIChqID4gMCkgeworICAgICAgICAJICAgICAJaW5kZXggPSBJTkRFWE9GX1NVUFBMRU1FTlRBUllfQ0hBUl9JTkRFWF9baV1baiAtIDFdICsgMTsKKyAgICAgICAgCSAgICAgfQorICAgICAgICAJICAgICBpZiAoVVRGMTYuaW5kZXhPZihJTkRFWE9GX1NVUFBMRU1FTlRBUllfU1RSSU5HXywgY2gsIGluZGV4KSAhPQorICAgICAgICAJICAgICAgICAgZXhwZWN0ZWQgfHwKKyAgICAgICAgCSAgICAgICAgIFVURjE2LmluZGV4T2YoSU5ERVhPRl9TVVBQTEVNRU5UQVJZX1NUUklOR18sIAorICAgICAgICAJICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyLnRvU3RyaW5nKGNoKSwgaW5kZXgpICE9CisgICAgICAgIAkgICAgICAgICBleHBlY3RlZCkgeworICAgICAgICAJICAgICAgICAgZXJybG4oIkZhaWxlZCBmaW5kaW5nIGluZGV4IGZvciBzdXBwbGVtZW50YXJ5IDB4IiArIAorICAgICAgICAJICAgICAgICAgICAgICAgSW50ZWdlci50b0hleFN0cmluZyhjaCkpOworICAgICAgICAJICAgICB9CisgICAgICAgIAkgICAgIGluZGV4ID0gSU5ERVhPRl9TVVBQTEVNRU5UQVJZX1NUUklOR18ubGVuZ3RoKCk7CisgICAgICAgIAkgICAgIGlmIChqIDwgSU5ERVhPRl9TVVBQTEVNRU5UQVJZX0NIQVJfSU5ERVhfW2ldLmxlbmd0aCAtIDEpIHsKKyAgICAgICAgCSAgICAgCWluZGV4ID0gSU5ERVhPRl9TVVBQTEVNRU5UQVJZX0NIQVJfSU5ERVhfW2ldW2ogKyAxXSAtIDE7CisgICAgICAgIAkgICAgIH0KKyAgICAgICAgCSAgICAgaWYgKFVURjE2Lmxhc3RJbmRleE9mKElOREVYT0ZfU1VQUExFTUVOVEFSWV9TVFJJTkdfLCBjaCwgCisgICAgICAgIAkgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCkgIT0gZXhwZWN0ZWQgfHwKKyAgICAgICAgCSAgICAgICAgIFVURjE2Lmxhc3RJbmRleE9mKElOREVYT0ZfU1VQUExFTUVOVEFSWV9TVFJJTkdfLCAKKyAgICAgICAgCSAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXIudG9TdHJpbmcoY2gpLCBpbmRleCkgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPSBleHBlY3RlZCkgCisgICAgICAgIAkgICAgIHsKKyAgICAgICAgCSAgICAgICAgIGVycmxuKCJGYWlsZWQgZmluZGluZyBsYXN0IGluZGV4IGZvciBzdXBwbGVtZW50YXJ5IDB4IiArIAorICAgICAgICAJICAgICAgICAgICAgICAgSW50ZWdlci50b0hleFN0cmluZyhjaCkpOworICAgICAgICAJICAgICB9CisgICAgICAgIAl9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgSU5ERVhPRl9TVVBQTEVNRU5UQVJZX1NUUl9JTkRFWF8ubGVuZ3RoOyBpICsrKSB7CisgICAgICAgIAlpbnQgaW5kZXggPSAwOworICAgICAgICAJaW50IGV4cGVjdGVkID0gSU5ERVhPRl9TVVBQTEVNRU5UQVJZX1NUUl9JTkRFWF9baV07CisgICAgICAgIAlpZiAgKGkgPiAwKSB7CisgICAgICAgIAkgICAgIGluZGV4ID0gSU5ERVhPRl9TVVBQTEVNRU5UQVJZX1NUUl9JTkRFWF9baSAtIDFdICsgMTsKKyAgICAgICAgCX0KKyAgICAgICAgCWlmIChVVEYxNi5pbmRleE9mKElOREVYT0ZfU1VQUExFTUVOVEFSWV9TVFJJTkdfLCAKKyAgICAgICAgCSAgICAgICAgICAgICAgICAgIElOREVYT0ZfU1VQUExFTUVOVEFSWV9TVFJfLCBpbmRleCkgIT0gZXhwZWN0ZWQpIHsKKyAgICAgICAgCSAgICBlcnJsbigiRmFpbGVkIGZpbmRpbmcgaW5kZXggZm9yIHN1cHBsZW1lbnRhcnkgc3RyaW5nICIgKyAKKyAgICAgICAgCSAgICAgICAgICBoZXgoSU5ERVhPRl9TVVBQTEVNRU5UQVJZX1NUUklOR18pKTsKKyAgICAgICAgCX0KKyAgICAgICAgCWluZGV4ID0gSU5ERVhPRl9TVVBQTEVNRU5UQVJZX1NUUklOR18ubGVuZ3RoKCk7CisgICAgICAgIAlpZiAoaSA8IElOREVYT0ZfU1VQUExFTUVOVEFSWV9TVFJfSU5ERVhfLmxlbmd0aCAtIDEpIHsKKyAgICAgICAgCSAgICBpbmRleCA9IElOREVYT0ZfU1VQUExFTUVOVEFSWV9TVFJfSU5ERVhfW2kgKyAxXSAtIDE7CisgICAgICAgIAl9CisgICAgICAgIAlpZiAoVVRGMTYubGFzdEluZGV4T2YoSU5ERVhPRl9TVVBQTEVNRU5UQVJZX1NUUklOR18sIAorICAgICAgICAJICAgICAgICAgICAgICAgICAgSU5ERVhPRl9TVVBQTEVNRU5UQVJZX1NUUl8sIGluZGV4KSAhPSBleHBlY3RlZCkgeworICAgICAgICAJICAgIGVycmxuKCJGYWlsZWQgZmluZGluZyBsYXN0IGluZGV4IGZvciBzdXBwbGVtZW50YXJ5IHN0cmluZyAiICsgCisgICAgICAgIAkgICAgICAgICAgaGV4KElOREVYT0ZfU1VQUExFTUVOVEFSWV9TVFJJTkdfKSk7CisgICAgICAgIAl9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdFJlcGxhY2UoKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHRlc3QxID0gIk9uZSBwb3RhdG8sIHR3byBwb3RhdG8sIHRocmVlIHBvdGF0bywgZm91clxuIjsKKyAgICAgICAgU3RyaW5nIHRlc3QyID0gInBvdGF0byI7CisgICAgICAgIFN0cmluZyB0ZXN0MyA9ICJNSVNTSVNTSVBQSSI7CisKKyAgICAgICAgU3RyaW5nIHJlc3VsdCA9IFVURjE2LnJlcGxhY2UodGVzdDEsIHRlc3QyLCB0ZXN0Myk7CisgICAgICAgIFN0cmluZyBleHBlY3RlZFZhbHVlID0gCisgICAgICAgICAgICAiT25lIE1JU1NJU1NJUFBJLCB0d28gTUlTU0lTU0lQUEksIHRocmVlIE1JU1NJU1NJUFBJLCBmb3VyXG4iOworICAgICAgICBpZiAoIXJlc3VsdC5lcXVhbHMoZXhwZWN0ZWRWYWx1ZSkpIHsKKyAgICAgICAgICAgIGVycmxuKCJmaW5kQW5kUmVwbGFjZSBmYWlsZWQ6IGV4cGVjdGVkIFwiIiArIGV4cGVjdGVkVmFsdWUgKyAKKyAgICAgICAgICAgICAgICAgICJcIiwgZ290IFwiIiArIHRlc3QxICsgIlwiLiIpOworICAgICAgICB9CisgICAgICAgIHJlc3VsdCA9IFVURjE2LnJlcGxhY2UodGVzdDEsIHRlc3QzLCB0ZXN0Mik7CisgICAgICAgIGV4cGVjdGVkVmFsdWUgPSB0ZXN0MTsKKyAgICAgICAgaWYgKCFyZXN1bHQuZXF1YWxzKGV4cGVjdGVkVmFsdWUpKSB7CisgICAgICAgICAgICBlcnJsbigiZmluZEFuZFJlcGxhY2UgZmFpbGVkOiBleHBlY3RlZCBcIiIgKyBleHBlY3RlZFZhbHVlICsgCisgICAgICAgICAgICAgICAgICAiXCIsIGdvdCBcIiIgKyB0ZXN0MSArICJcIi4iKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmVzdWx0ID0gVVRGMTYucmVwbGFjZSh0ZXN0MSwgJywnLCAnZScpOworICAgICAgICBleHBlY3RlZFZhbHVlID0gIk9uZSBwb3RhdG9lIHR3byBwb3RhdG9lIHRocmVlIHBvdGF0b2UgZm91clxuIjsKKyAgICAgICAgaWYgKCFyZXN1bHQuZXF1YWxzKGV4cGVjdGVkVmFsdWUpKSB7CisgICAgICAgICAgICBlcnJsbigiZmluZEFuZFJlcGxhY2UgZmFpbGVkOiBleHBlY3RlZCBcIiIgKyBleHBlY3RlZFZhbHVlICsgCisgICAgICAgICAgICAgICAgICAiXCIsIGdvdCBcIiIgKyB0ZXN0MSArICJcIi4iKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmVzdWx0ID0gVVRGMTYucmVwbGFjZSh0ZXN0MSwgJywnLCAweDEwMDAwKTsKKyAgICAgICAgZXhwZWN0ZWRWYWx1ZSA9ICJPbmUgcG90YXRvXHVkODAwXHVkYzAwIHR3byBwb3RhdG9cdWQ4MDBcdWRjMDAgdGhyZWUgcG90YXRvXHVkODAwXHVkYzAwIGZvdXJcbiI7CisgICAgICAgIGlmICghcmVzdWx0LmVxdWFscyhleHBlY3RlZFZhbHVlKSkgeworICAgICAgICAgICAgZXJybG4oImZpbmRBbmRSZXBsYWNlIGZhaWxlZDogZXhwZWN0ZWQgXCIiICsgZXhwZWN0ZWRWYWx1ZSArIAorICAgICAgICAgICAgICAgICAgIlwiLCBnb3QgXCIiICsgdGVzdDEgKyAiXCIuIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJlc3VsdCA9IFVURjE2LnJlcGxhY2UodGVzdDEsICJwb3RhdG8iLCAiXHVkODAwXHVkYzAwXHVkODAxXHVkYzAxIik7CisgICAgICAgIGV4cGVjdGVkVmFsdWUgPSAiT25lIFx1ZDgwMFx1ZGMwMFx1ZDgwMVx1ZGMwMSwgdHdvIFx1ZDgwMFx1ZGMwMFx1ZDgwMVx1ZGMwMSwgdGhyZWUgXHVkODAwXHVkYzAwXHVkODAxXHVkYzAxLCBmb3VyXG4iOworICAgICAgICBpZiAoIXJlc3VsdC5lcXVhbHMoZXhwZWN0ZWRWYWx1ZSkpIHsKKyAgICAgICAgICAgIGVycmxuKCJmaW5kQW5kUmVwbGFjZSBmYWlsZWQ6IGV4cGVjdGVkIFwiIiArIGV4cGVjdGVkVmFsdWUgKyAKKyAgICAgICAgICAgICAgICAgICJcIiwgZ290IFwiIiArIHRlc3QxICsgIlwiLiIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBTdHJpbmcgdGVzdDQgPSAiXHVkODAwXHVkODAwXHVkYzAwXHVkODAwXHVkYzAwXHVkYzAwXHVkODAwXHVkODAwXHVkYzAwXHVkODAwXHVkYzAwXHVkYzAwIjsKKyAgICAgICAgcmVzdWx0ID0gVVRGMTYucmVwbGFjZSh0ZXN0NCwgMHhkODAwLCAnQScpOworICAgICAgICBleHBlY3RlZFZhbHVlID0gIkFcdWQ4MDBcdWRjMDBcdWQ4MDBcdWRjMDBcdWRjMDBBXHVkODAwXHVkYzAwXHVkODAwXHVkYzAwXHVkYzAwIjsKKyAgICAgICAgaWYgKCFyZXN1bHQuZXF1YWxzKGV4cGVjdGVkVmFsdWUpKSB7CisgICAgICAgICAgICBlcnJsbigiZmluZEFuZFJlcGxhY2UgZmFpbGVkOiBleHBlY3RlZCBcIiIgKyBleHBlY3RlZFZhbHVlICsgCisgICAgICAgICAgICAgICAgICAiXCIsIGdvdCBcIiIgKyB0ZXN0MSArICJcIi4iKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmVzdWx0ID0gVVRGMTYucmVwbGFjZSh0ZXN0NCwgMHhkQzAwLCAnQScpOworICAgICAgICBleHBlY3RlZFZhbHVlID0gIlx1ZDgwMFx1ZDgwMFx1ZGMwMFx1ZDgwMFx1ZGMwMEFcdWQ4MDBcdWQ4MDBcdWRjMDBcdWQ4MDBcdWRjMDBBIjsKKyAgICAgICAgaWYgKCFyZXN1bHQuZXF1YWxzKGV4cGVjdGVkVmFsdWUpKSB7CisgICAgICAgICAgICBlcnJsbigiZmluZEFuZFJlcGxhY2UgZmFpbGVkOiBleHBlY3RlZCBcIiIgKyBleHBlY3RlZFZhbHVlICsgCisgICAgICAgICAgICAgICAgICAiXCIsIGdvdCBcIiIgKyB0ZXN0MSArICJcIi4iKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmVzdWx0ID0gVVRGMTYucmVwbGFjZSh0ZXN0NCwgMHgxMDAwMCwgJ0EnKTsKKyAgICAgICAgZXhwZWN0ZWRWYWx1ZSA9ICJcdWQ4MDBBQVx1ZGMwMFx1ZDgwMEFBXHVkYzAwIjsKKyAgICAgICAgaWYgKCFyZXN1bHQuZXF1YWxzKGV4cGVjdGVkVmFsdWUpKSB7CisgICAgICAgICAgICBlcnJsbigiZmluZEFuZFJlcGxhY2UgZmFpbGVkOiBleHBlY3RlZCBcIiIgKyBleHBlY3RlZFZhbHVlICsgCisgICAgICAgICAgICAgICAgICAiXCIsIGdvdCBcIiIgKyB0ZXN0MSArICJcIi4iKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0UmV2ZXJzZSgpCisgICAgeworICAgICAgICBTdHJpbmdCdWZmZXIgdGVzdCA9IG5ldyBTdHJpbmdCdWZmZXIoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFja3dhcmRzIHdvcmRzIHNheSB0byB1c2VkIEkiKTsKKworICAgICAgICBTdHJpbmdCdWZmZXIgcmVzdWx0ID0gVVRGMTYucmV2ZXJzZSh0ZXN0KTsKKyAgICAgICAgaWYgKCFyZXN1bHQudG9TdHJpbmcoKS5lcXVhbHMoIkkgZGVzdSBvdCB5YXMgc2Ryb3cgc2RyYXdrY2FiIikpIHsKKyAgICAgICAgICAgIGVycmxuKCJyZXZlcnNlKCkgZmFpbGVkOiAgRXhwZWN0ZWQgXCJJIGRlc3Ugb3QgeWFzIHNkcm93IHNkcmF3a2NhYlwiLFxuIGdvdCBcIiIKKyAgICAgICAgICAgICsgcmVzdWx0ICsgIlwiIik7CisgICAgICAgIH0KKyAgICAgICAgU3RyaW5nQnVmZmVyIHRlc3RidWZmZXIgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIFVURjE2LmFwcGVuZCh0ZXN0YnVmZmVyLCAweDJmOTk5KTsKKyAgICAgICAgVVRGMTYuYXBwZW5kKHRlc3RidWZmZXIsIDB4MWQxNWYpOworICAgICAgICBVVEYxNi5hcHBlbmQodGVzdGJ1ZmZlciwgMHgwMGM0KTsKKyAgICAgICAgVVRGMTYuYXBwZW5kKHRlc3RidWZmZXIsIDB4MWVkMCk7CisgICAgICAgIHJlc3VsdCA9IFVURjE2LnJldmVyc2UodGVzdGJ1ZmZlcik7CisgICAgICAgIGlmIChyZXN1bHQuY2hhckF0KDApICE9IDB4MWVkMCB8fCAKKyAgICAgICAgICAgIHJlc3VsdC5jaGFyQXQoMSkgIT0gMHhjNCB8fCAKKyAgICAgICAgICAgIFVURjE2LmNoYXJBdChyZXN1bHQsIDIpICE9IDB4MWQxNWYgfHwgCisgICAgICAgICAgICBVVEYxNi5jaGFyQXQocmVzdWx0LCA0KSE9MHgyZjk5OSkgeworICAgICAgICAgICAgZXJybG4oInJldmVyc2UoKSBmYWlsZWQgd2l0aCBzdXBwbGVtZW50YXJ5IGNoYXJhY3RlcnMiKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBUZXN0aW5nIHRoZSBzZXR0ZXIgYW5kIGdldHRlciBhcGlzIGZvciBTdHJpbmdDb21wYXJhdG9yCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdFN0cmluZ0NvbXBhcmF0b3IoKSAKKyAgICB7CisgICAgICAgIFVURjE2LlN0cmluZ0NvbXBhcmF0b3IgY29tcGFyZSA9IG5ldyBVVEYxNi5TdHJpbmdDb21wYXJhdG9yKCk7CisgICAgICAgIGlmIChjb21wYXJlLmdldENvZGVQb2ludENvbXBhcmUoKSAhPSBmYWxzZSkgeworICAgICAgICAgICAgZXJybG4oIkRlZmF1bHQgc3RyaW5nIGNvbXBhcmF0b3Igc2hvdWxkIGJlIGNvZGUgdW5pdCBjb21wYXJlIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbXBhcmUuZ2V0SWdub3JlQ2FzZSgpICE9IGZhbHNlKSB7CisgICAgICAgICAgICBlcnJsbigiRGVmYXVsdCBzdHJpbmcgY29tcGFyYXRvciBzaG91bGQgYmUgY2FzZSBzZW5zaXRpdmUgY29tcGFyZSIpOworICAgICAgICB9CisgICAgICAgIGlmIChjb21wYXJlLmdldElnbm9yZUNhc2VPcHRpb24oKSAKKyAgICAgICAgICAgICE9IFVURjE2LlN0cmluZ0NvbXBhcmF0b3IuRk9MRF9DQVNFX0RFRkFVTFQpIHsKKyAgICAgICAgICAgIGVycmxuKCJEZWZhdWx0IHN0cmluZyBjb21wYXJhdG9yIHNob3VsZCBoYXZlIGZvbGQgY2FzZSBkZWZhdWx0IGNvbXBhcmUiKTsKKyAgICAgICAgfQorICAgICAgICBjb21wYXJlLnNldENvZGVQb2ludENvbXBhcmUodHJ1ZSk7CisgICAgICAgIGlmIChjb21wYXJlLmdldENvZGVQb2ludENvbXBhcmUoKSAhPSB0cnVlKSB7CisgICAgICAgICAgICBlcnJsbigiRXJyb3Igc2V0dGluZyBjb2RlIHBvaW50IGNvbXBhcmUiKTsKKyAgICAgICAgfSAgICAgICAKKyAgICAgICAgY29tcGFyZS5zZXRDb2RlUG9pbnRDb21wYXJlKGZhbHNlKTsKKyAgICAgICAgaWYgKGNvbXBhcmUuZ2V0Q29kZVBvaW50Q29tcGFyZSgpICE9IGZhbHNlKSB7CisgICAgICAgICAgICBlcnJsbigiRXJyb3Igc2V0dGluZyBjb2RlIHBvaW50IGNvbXBhcmUiKTsKKyAgICAgICAgfSAgIAorICAgICAgICBjb21wYXJlLnNldElnbm9yZUNhc2UodHJ1ZSwgVVRGMTYuU3RyaW5nQ29tcGFyYXRvci5GT0xEX0NBU0VfREVGQVVMVCk7CisgICAgICAgIGlmIChjb21wYXJlLmdldElnbm9yZUNhc2UoKSAhPSB0cnVlCisgICAgICAgICAgICB8fCBjb21wYXJlLmdldElnbm9yZUNhc2VPcHRpb24oKSAKKyAgICAgICAgICAgICAgICAhPSBVVEYxNi5TdHJpbmdDb21wYXJhdG9yLkZPTERfQ0FTRV9ERUZBVUxUKSB7CisgICAgICAgICAgICBlcnJsbigiRXJyb3Igc2V0dGluZyBpZ25vcmUgY2FzZSBhbmQgb3B0aW9ucyIpOworICAgICAgICB9ICAgCisgICAgICAgIGNvbXBhcmUuc2V0SWdub3JlQ2FzZShmYWxzZSwgVVRGMTYuU3RyaW5nQ29tcGFyYXRvci5GT0xEX0NBU0VfRVhDTFVERV9TUEVDSUFMX0kpOworICAgICAgICBpZiAoY29tcGFyZS5nZXRJZ25vcmVDYXNlKCkgIT0gZmFsc2UKKyAgICAgICAgICAgIHx8IGNvbXBhcmUuZ2V0SWdub3JlQ2FzZU9wdGlvbigpIAorICAgICAgICAgICAgICAgICE9IFVURjE2LlN0cmluZ0NvbXBhcmF0b3IuRk9MRF9DQVNFX0VYQ0xVREVfU1BFQ0lBTF9JKSB7CisgICAgICAgICAgICBlcnJsbigiRXJyb3Igc2V0dGluZyBpZ25vcmUgY2FzZSBhbmQgb3B0aW9ucyIpOworICAgICAgICB9CisgICAgICAgIGNvbXBhcmUuc2V0SWdub3JlQ2FzZSh0cnVlLCBVVEYxNi5TdHJpbmdDb21wYXJhdG9yLkZPTERfQ0FTRV9FWENMVURFX1NQRUNJQUxfSSk7CisgICAgICAgIGlmIChjb21wYXJlLmdldElnbm9yZUNhc2UoKSAhPSB0cnVlCisgICAgICAgICAgICB8fCBjb21wYXJlLmdldElnbm9yZUNhc2VPcHRpb24oKSAKKyAgICAgICAgICAgICAgICAhPSBVVEYxNi5TdHJpbmdDb21wYXJhdG9yLkZPTERfQ0FTRV9FWENMVURFX1NQRUNJQUxfSSkgeworICAgICAgICAgICAgZXJybG4oIkVycm9yIHNldHRpbmcgaWdub3JlIGNhc2UgYW5kIG9wdGlvbnMiKTsKKyAgICAgICAgfSAgCisgICAgICAgIGNvbXBhcmUuc2V0SWdub3JlQ2FzZShmYWxzZSwgVVRGMTYuU3RyaW5nQ29tcGFyYXRvci5GT0xEX0NBU0VfREVGQVVMVCk7CisgICAgICAgIGlmIChjb21wYXJlLmdldElnbm9yZUNhc2UoKSAhPSBmYWxzZQorICAgICAgICAgICAgfHwgY29tcGFyZS5nZXRJZ25vcmVDYXNlT3B0aW9uKCkgCisgICAgICAgICAgICAgICAgIT0gVVRGMTYuU3RyaW5nQ29tcGFyYXRvci5GT0xEX0NBU0VfREVGQVVMVCkgeworICAgICAgICAgICAgZXJybG4oIkVycm9yIHNldHRpbmcgaWdub3JlIGNhc2UgYW5kIG9wdGlvbnMiKTsKKyAgICAgICAgfSAgICAKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdENvZGVQb2ludENvbXBhcmUoKQorICAgIHsKKyAgICAgICAgLy8gdGhlc2Ugc3RyaW5ncyBhcmUgaW4gYXNjZW5kaW5nIG9yZGVyCisgICAgICAgIFN0cmluZyBzdHJbXSA9IHsiXHUwMDYxIiwgIlx1MjBhY1x1ZDgwMSIsICJcdTIwYWNcdWQ4MDBcdWRjMDAiLCAgCisgICAgICAgICAgICAgICAgICAgICAgICAiXHVkODAwIiwgIlx1ZDgwMFx1ZmY2MSIsICJcdWRmZmYiLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICJcdWZmNjFcdWRmZmYiLCAiXHVmZjYxXHVkODAwXHVkYzAyIiwgIlx1ZDgwMFx1ZGMwMiIsCisgICAgICAgICAgICAgICAgICAgICAgICAiXHVkODRkXHVkYzU2In07CisgICAgICAgIFVURjE2LlN0cmluZ0NvbXBhcmF0b3IgY3Bjb21wYXJlIAorICAgICAgICAgICAgPSBuZXcgVVRGMTYuU3RyaW5nQ29tcGFyYXRvcih0cnVlLCBmYWxzZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVRGMTYuU3RyaW5nQ29tcGFyYXRvci5GT0xEX0NBU0VfREVGQVVMVCk7CisgICAgICAgIFVURjE2LlN0cmluZ0NvbXBhcmF0b3IgY3Vjb21wYXJlIAorICAgICAgICAgICAgPSBuZXcgVVRGMTYuU3RyaW5nQ29tcGFyYXRvcigpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHN0ci5sZW5ndGggLSAxOyArKyBpKSB7CisgICAgICAgICAgICBpZiAoY3Bjb21wYXJlLmNvbXBhcmUoc3RyW2ldLCBzdHJbaSArIDFdKSA+PSAwKSB7CisgICAgICAgICAgICAgICAgZXJybG4oImVycm9yOiBjb21wYXJlKCkgaW4gY29kZSBwb2ludCBvcmRlciBmYWlscyBmb3Igc3RyaW5nICIKKyAgICAgICAgICAgICAgICAgICAgICArIFV0aWxpdHkuaGV4KHN0cltpXSkgKyAiIGFuZCAiIAorICAgICAgICAgICAgICAgICAgICAgICsgVXRpbGl0eS5oZXgoc3RyW2kgKyAxXSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gdGVzdCBjb2RlIHVuaXQgY29tcGFyZQorICAgICAgICAgICAgaWYgKGN1Y29tcGFyZS5jb21wYXJlKHN0cltpXSwgc3RyW2kgKyAxXSkgCisgICAgICAgICAgICAgICAgIT0gc3RyW2ldLmNvbXBhcmVUbyhzdHJbaSArIDFdKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJlcnJvcjogY29tcGFyZSgpIGluIGNvZGUgdW5pdCBvcmRlciBmYWlscyBmb3Igc3RyaW5nICIKKyAgICAgICAgICAgICAgICAgICAgICArIFV0aWxpdHkuaGV4KHN0cltpXSkgKyAiIGFuZCAiIAorICAgICAgICAgICAgICAgICAgICAgICsgVXRpbGl0eS5oZXgoc3RyW2kgKyAxXSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RDYXNlQ29tcGFyZSgpIAorICAgIHsKKyAgICAgICAgU3RyaW5nIG1peGVkID0gIlx1MDA2MVx1MDA0Mlx1MDEzMVx1MDNhM1x1MDBkZlx1ZmIwM1x1ZDkzZlx1ZGZmZiI7CisgICAgICAgIFN0cmluZyBvdGhlckRlZmF1bHQgPSAiXHUwMDQxXHUwMDYyXHUwMTMxXHUwM2MzXHUwMDczXHUwMDUzXHUwMDQ2XHUwMDY2XHUwMDQ5XHVkOTNmXHVkZmZmIjsKKyAgICAgICAgU3RyaW5nIG90aGVyRXhjbHVkZVNwZWNpYWxJID0gIlx1MDA0MVx1MDA2Mlx1MDEzMVx1MDNjM1x1MDA1M1x1MDA3M1x1MDA2Nlx1MDA0Nlx1MDA2OVx1ZDkzZlx1ZGZmZiI7CisgICAgICAgIFN0cmluZyBkaWZmZXJlbnQgPSAiXHUwMDQxXHUwMDYyXHUwMTMxXHUwM2MzXHUwMDczXHUwMDUzXHUwMDQ2XHUwMDY2XHUwMDQ5XHVkOTNmXHVkZmZkIjsKKyAgICAKKyAgICAgICAgVVRGMTYuU3RyaW5nQ29tcGFyYXRvciBjb21wYXJlID0gbmV3IFVURjE2LlN0cmluZ0NvbXBhcmF0b3IoKTsKKyAgICAgICAgY29tcGFyZS5zZXRJZ25vcmVDYXNlKHRydWUsIFVURjE2LlN0cmluZ0NvbXBhcmF0b3IuRk9MRF9DQVNFX0RFRkFVTFQpOworICAgICAgICAvLyB0ZXN0IHVfc3RyY2FzZWNtcCgpCisgICAgICAgIGludCByZXN1bHQgPSBjb21wYXJlLmNvbXBhcmUobWl4ZWQsIG90aGVyRGVmYXVsdCk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gMCkgeworICAgICAgICAgICAgZXJybG4oImVycm9yOiBkZWZhdWx0IGNvbXBhcmUobWl4ZWQsIG90aGVyKSA9ICIgKyByZXN1bHQKKyAgICAgICAgICAgICAgICAgICsgIiBpbnN0ZWFkIG9mIDAiKTsKKyAgICAgICAgfQorICAgIAorICAgICAgICAvLyB0ZXN0IHVfc3RyY2FzZWNtcCgpIC0gZXhjbHVkZSBzcGVjaWFsIGkgCisgICAgICAgIGNvbXBhcmUuc2V0SWdub3JlQ2FzZSh0cnVlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVVEYxNi5TdHJpbmdDb21wYXJhdG9yLkZPTERfQ0FTRV9FWENMVURFX1NQRUNJQUxfSSk7CisgICAgICAgIHJlc3VsdCA9IGNvbXBhcmUuY29tcGFyZShtaXhlZCwgb3RoZXJFeGNsdWRlU3BlY2lhbEkpOworICAgICAgICBpZiAocmVzdWx0ICE9IDApIHsKKyAgICAgICAgICAgIGVycmxuKCJlcnJvcjogZXhjbHVkZV9pIGNvbXBhcmUobWl4ZWQsIG90aGVyKSA9ICIgKyByZXN1bHQgCisgICAgICAgICAgICAgICAgICArICIgaW5zdGVhZCBvZiAwIik7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgLy8gdGVzdCB1X3N0cmNhc2VjbXAoKQorICAgICAgICBjb21wYXJlLnNldElnbm9yZUNhc2UodHJ1ZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVVEYxNi5TdHJpbmdDb21wYXJhdG9yLkZPTERfQ0FTRV9ERUZBVUxUKTsKKyAgICAgICAgcmVzdWx0ID0gY29tcGFyZS5jb21wYXJlKG1peGVkLCBkaWZmZXJlbnQpOworICAgICAgICBpZiAocmVzdWx0IDw9IDApIHsKKyAgICAgICAgICAgIGVycmxuKCJlcnJvcjogZGVmYXVsdCBjb21wYXJlKG1peGVkLCBkaWZmZXJlbnQpID0gIiArIHJlc3VsdAorICAgICAgICAgICAgICAgICAgKyAiIGluc3RlYWQgb2YgcG9zaXRpdmUiKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gdGVzdCBzdWJzdHJpbmdzIC0gc3RvcCBiZWZvcmUgdGhlIHNoYXJwIHMgKFUrMDBkZikKKyAgICAgICAgY29tcGFyZS5zZXRJZ25vcmVDYXNlKHRydWUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVRGMTYuU3RyaW5nQ29tcGFyYXRvci5GT0xEX0NBU0VfREVGQVVMVCk7CisgICAgICAgIHJlc3VsdCA9IGNvbXBhcmUuY29tcGFyZShtaXhlZC5zdWJzdHJpbmcoMCwgNCksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW50LnN1YnN0cmluZygwLCA0KSk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gMCkgeworICAgICAgICAgICAgZXJybG4oImVycm9yOiBkZWZhdWx0IGNvbXBhcmUobWl4ZWQgc3Vic3RyaW5nLCBkaWZmZXJlbnQgc3Vic3RyaW5nKSA9ICIgCisgICAgICAgICAgICAgICAgICAgICsgcmVzdWx0ICsgIiBpbnN0ZWFkIG9mIDAiKTsKKyAgICAgICAgfQorICAgICAgICAvLyB0ZXN0IHN1YnN0cmluZ3MgLSBzdG9wIGluIHRoZSBtaWRkbGUgb2YgdGhlIHNoYXJwIHMgKFUrMDBkZikgCisgICAgICAgIGNvbXBhcmUuc2V0SWdub3JlQ2FzZSh0cnVlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVURjE2LlN0cmluZ0NvbXBhcmF0b3IuRk9MRF9DQVNFX0RFRkFVTFQpOworICAgICAgICByZXN1bHQgPSBjb21wYXJlLmNvbXBhcmUobWl4ZWQuc3Vic3RyaW5nKDAsIDUpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZlcmVudC5zdWJzdHJpbmcoMCwgNSkpOworICAgICAgICBpZiAocmVzdWx0IDw9IDApIHsKKyAgICAgICAgICAgIGVycmxuKCJlcnJvcjogZGVmYXVsdCBjb21wYXJlKG1peGVkIHN1YnN0cmluZywgZGlmZmVyZW50IHN1YnN0cmluZykgPSAiIAorICAgICAgICAgICAgICAgICAgICArIHJlc3VsdCArICIgaW5zdGVhZCBvZiBwb3NpdGl2ZSIpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdEhhc01vcmVDb2RlUG9pbnRzVGhhbigpCisgICAgeworICAgICAgICBTdHJpbmcgc3RyID0gIlx1MDA2MVx1MDA2Mlx1ZDgwMFx1ZGMwMFx1ZDgwMVx1ZGMwMVx1MDA2M1x1ZDgwMlx1MDA2NCIKKyAgICAgICAgICAgICAgICAgICAgICsgIlx1ZGMwM1x1MDA2NVx1MDA2Nlx1ZDgwNFx1ZGMwNFx1ZDgwNVx1ZGMwNVx1MDA2NyI7CisgICAgICAgIGludCBsZW5ndGggPSBzdHIubGVuZ3RoKCk7CisgICAgICAgIHdoaWxlIChsZW5ndGggPj0gMCkgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gbGVuZ3RoOyArKyBpKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHMgPSBzdHIuc3Vic3RyaW5nKDAsIGkpOworICAgICAgICAgICAgICAgIGZvciAoaW50IG51bWJlciA9IC0xOyBudW1iZXIgPD0gKChsZW5ndGggLSBpKSArIDIpOyArKyBudW1iZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBmbGFnID0gVVRGMTYuaGFzTW9yZUNvZGVQb2ludHNUaGFuKHMsIG51bWJlcik7CisgICAgICAgICAgICAgICAgICAgIGlmIChmbGFnICE9IChVVEYxNi5jb3VudENvZGVQb2ludChzKSA+IG51bWJlcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycmxuKCJoYXNNb3JlQ29kZVBvaW50c1RoYW4oIiArIFV0aWxpdHkuaGV4KHMpIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiLCAiICsgbnVtYmVyICsgIikgPSAiICsgZmxhZyArICIgaXMgd3JvbmciKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC0tIGxlbmd0aDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gdGVzdGluZyBmb3IgbnVsbCBiYWQgaW5wdXQgCisgICAgICAgIGZvcihsZW5ndGggPSAtMTsgbGVuZ3RoIDw9IDE7ICsrIGxlbmd0aCkgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gbGVuZ3RoOyArKyBpKSB7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgbnVtYmVyID0gLTI7IG51bWJlciA8PSAyOyArKyBudW1iZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBmbGFnID0gVVRGMTYuaGFzTW9yZUNvZGVQb2ludHNUaGFuKChTdHJpbmcpbnVsbCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXIpOworICAgICAgICAgICAgICAgICAgICBpZiAoZmxhZyAhPSAoVVRGMTYuY291bnRDb2RlUG9pbnQoKFN0cmluZyludWxsKSA+IG51bWJlcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycmxuKCJoYXNNb3JlQ29kZVBvaW50c1RoYW4obnVsbCwgIiArIG51bWJlciArICIpID0gIiAKKyAgICAgICAgICAgICAgICAgICAgICAgICsgZmxhZyArICIgaXMgd3JvbmciKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbGVuZ3RoID0gc3RyLmxlbmd0aCgpOworICAgICAgICB3aGlsZSAobGVuZ3RoID49IDApIHsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IGxlbmd0aDsgKysgaSkgeworICAgICAgICAgICAgICAgIFN0cmluZ0J1ZmZlciBzID0gbmV3IFN0cmluZ0J1ZmZlcihzdHIuc3Vic3RyaW5nKDAsIGkpKTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBudW1iZXIgPSAtMTsgbnVtYmVyIDw9ICgobGVuZ3RoIC0gaSkgKyAyKTsgKysgbnVtYmVyKSB7CisgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gZmxhZyA9IFVURjE2Lmhhc01vcmVDb2RlUG9pbnRzVGhhbihzLCBudW1iZXIpOworICAgICAgICAgICAgICAgICAgICBpZiAoZmxhZyAhPSAoVVRGMTYuY291bnRDb2RlUG9pbnQocykgPiBudW1iZXIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbigiaGFzTW9yZUNvZGVQb2ludHNUaGFuKCIgKyBVdGlsaXR5LmhleChzKSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiwgIiArIG51bWJlciArICIpID0gIiArIGZsYWcgKyAiIGlzIHdyb25nIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAtLSBsZW5ndGg7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIHRlc3RpbmcgZm9yIG51bGwgYmFkIGlucHV0IAorICAgICAgICBmb3IgKGxlbmd0aCA9IC0xOyBsZW5ndGggPD0gMTsgKysgbGVuZ3RoKSB7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8PSBsZW5ndGg7ICsrIGkpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBudW1iZXIgPSAtMjsgbnVtYmVyIDw9IDI7ICsrIG51bWJlcikgeworICAgICAgICAgICAgICAgICAgICBib29sZWFuIGZsYWcgPSBVVEYxNi5oYXNNb3JlQ29kZVBvaW50c1RoYW4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJpbmdCdWZmZXIpbnVsbCwgbnVtYmVyKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZsYWcgCisgICAgICAgICAgICAgICAgICAgICAgICAhPSAoVVRGMTYuY291bnRDb2RlUG9pbnQoKFN0cmluZ0J1ZmZlciludWxsKSA+IG51bWJlcikpIAorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbigiaGFzTW9yZUNvZGVQb2ludHNUaGFuKG51bGwsICIgKyBudW1iZXIgKyAiKSA9ICIgCisgICAgICAgICAgICAgICAgICAgICAgICArIGZsYWcgKyAiIGlzIHdyb25nIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGNoYXIgc3RyYXJyYXlbXSA9IHN0ci50b0NoYXJBcnJheSgpOworICAgICAgICB3aGlsZSAobGVuZ3RoID49IDApIHsKKyAgICAgICAgICAgIGZvciAoaW50IGxpbWl0ID0gMDsgbGltaXQgPD0gbGVuZ3RoOyArKyBsaW1pdCkgeworICAgICAgICAgICAgICAgIGZvciAoaW50IHN0YXJ0ID0gMDsgc3RhcnQgPD0gbGltaXQ7ICsrIHN0YXJ0KSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IG51bWJlciA9IC0xOyBudW1iZXIgPD0gKChsaW1pdCAtIHN0YXJ0KSArIDIpOyAKKyAgICAgICAgICAgICAgICAgICAgICAgICArKyBudW1iZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gZmxhZyA9IFVURjE2Lmhhc01vcmVDb2RlUG9pbnRzVGhhbihzdHJhcnJheSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgbGltaXQsIG51bWJlcik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmxhZyAhPSAoVVRGMTYuY291bnRDb2RlUG9pbnQoc3RyYXJyYXksIHN0YXJ0LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdCkgPiBudW1iZXIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJybG4oImhhc01vcmVDb2RlUG9pbnRzVGhhbigiIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgVXRpbGl0eS5oZXgoc3RyLnN1YnN0cmluZyhzdGFydCwgbGltaXQpKSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIsICIgKyBzdGFydCArICIsICIgKyBsaW1pdCArICIsICIgKyBudW1iZXIgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiKSA9ICIgKyBmbGFnICsgIiBpcyB3cm9uZyIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgLS0gbGVuZ3RoOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyB0ZXN0aW5nIGZvciBudWxsIGJhZCBpbnB1dCAKKyAgICAgICAgZm9yIChsZW5ndGggPSAtMTsgbGVuZ3RoIDw9IDE7ICsrIGxlbmd0aCkgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gbGVuZ3RoOyArKyBpKSB7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgbnVtYmVyID0gLTI7IG51bWJlciA8PSAyOyArKyBudW1iZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBmbGFnID0gVVRGMTYuaGFzTW9yZUNvZGVQb2ludHNUaGFuKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5nQnVmZmVyKW51bGwsIG51bWJlcik7CisgICAgICAgICAgICAgICAgICAgIGlmIChmbGFnIAorICAgICAgICAgICAgICAgICAgICAgICAgIT0gKFVURjE2LmNvdW50Q29kZVBvaW50KChTdHJpbmdCdWZmZXIpbnVsbCkgPiBudW1iZXIpKSAKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgZXJybG4oImhhc01vcmVDb2RlUG9pbnRzVGhhbihudWxsLCAiICsgbnVtYmVyICsgIikgPSAiIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBmbGFnICsgIiBpcyB3cm9uZyIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBiYWQgaW5wdXQKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFVURjE2Lmhhc01vcmVDb2RlUG9pbnRzVGhhbihzdHJhcnJheSwgLTIsIC0xLCA1KTsKKyAgICAgICAgICAgIGVycmxuKCJoYXNNb3JlQ29kZVBvaW50c1RoYW4oY2hhcmFycmF5KSB3aXRoIG5lZ2F0aXZlIGluZGV4ZXMgaGFzIHRvIHRocm93IGFuIGV4Y2VwdGlvbiIpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICB9CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBVVEYxNi5oYXNNb3JlQ29kZVBvaW50c1RoYW4oc3RyYXJyYXksIDUsIDIsIDUpOworICAgICAgICAgICAgZXJybG4oImhhc01vcmVDb2RlUG9pbnRzVGhhbihjaGFyYXJyYXkpIHdpdGggbGltaXQgbGVzcyB0aGFuIHN0YXJ0IGluZGV4IGhhcyB0byB0aHJvdyBhbiBleGNlcHRpb24iKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgfQorICAgICAgICB0cnkgeworICAgICAgICAgICAgaWYgKFVURjE2Lmhhc01vcmVDb2RlUG9pbnRzVGhhbihzdHJhcnJheSwgLTIsIDIsIDUpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oImhhc01vcmVDb2RlUG9pbnRzVGhhbihjaGFyYXJyYXkpIHdpdGggbmVnYXRpdmUgc3RhcnQgaW5kZXhlcyBjYW4ndCByZXR1cm4gdHJ1ZSIpOworICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICB9ICAgCisgICAgfQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZykKKyAgICB7CisgICAgCXRyeQorICAgICAgICB7CisgICAgICAgICAgICBVVEYxNlRlc3QgdGVzdCA9IG5ldyBVVEYxNlRlc3QoKTsKKyAgICAgICAgICAgIHRlc3QucnVuKGFyZyk7CisgICAgICAgICAgICAvLyB0ZXN0LlRlc3RDYXNlQ29tcGFyZSgpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkKKyAgICAgICAgeworICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8vIHByaXZhdGUgZGF0YSBtZW1iZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBTdHJpbmcgSU5ERVhPRl9TVVBQTEVNRU5UQVJZX1NUUklOR18gPQorICAgICAgICAiXHVkODQxXHVkYzAyXHUwMDcxXHVkYzAyXHVkODQxXHUwMDcxXHVkODQxXHVkYzAyXHUwMDcxXHUwMDcyIiArCisgICAgICAgICJcdWQ4NDFcdWRjMDJcdTAwNzFcdWQ4NDFcdWRjMDJcdTAwNzFcdWRjMDJcdWQ4NDFcdTAwNzMiOworICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBJTkRFWE9GX1NVUFBMRU1FTlRBUllfQ0hBUl9bXSA9IAorICAgICAgICAgICAgICAgICAgICAgICAgICAJCQl7MHg3MSwgMHhkODQxLCAweGRjMDIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgCQkgICAgIFVDaGFyYWN0ZXIuZ2V0Q29kZVBvaW50KChjaGFyKTB4ZDg0MSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIpMHhkYzAyKX07CisgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgaW50IElOREVYT0ZfU1VQUExFTUVOVEFSWV9DSEFSX0lOREVYX1tdW10gPSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ezIsIDUsIDgsIDEyLCAxNX0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHs0LCAxN30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHszLCAxNn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHswLCA2LCAxMCwgMTN9ICAgICAgICAgICAgICAJCisJCQkJCQkJCQkgICAgICAgICAgICAgICAgfTsKKwlwcml2YXRlIGZpbmFsIHN0YXRpYyBTdHJpbmcgSU5ERVhPRl9TVVBQTEVNRU5UQVJZX1NUUl8gPSAiXHVkYzAyXHVkODQxIjsKKyAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgSU5ERVhPRl9TVVBQTEVNRU5UQVJZX1NUUl9JTkRFWF9bXSA9IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHszLCAxNn07CQkJCQkJCQkgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgLy8gcHJpdmF0ZSBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorfQorCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3Qvbm9ybWFsaXplci9CYXNpY1Rlc3QuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9ub3JtYWxpemVyL0Jhc2ljVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmUxOWMxZjQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3Qvbm9ybWFsaXplci9CYXNpY1Rlc3QuamF2YQpAQCAtMCwwICsxLDI1OTIgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9ub3JtYWxpemVyL0Jhc2ljVGVzdC5qYXZhLHYgJAorICogJERhdGU6IDIwMDIvMTIvMTEgMjM6Mjk6MDkgJAorICogJFJldmlzaW9uOiAxLjIzICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0Lm5vcm1hbGl6ZXI7CitpbXBvcnQgamF2YS50ZXh0LlN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yOworaW1wb3J0IGNvbS5pYm0uaWN1LmRldi50ZXN0Lio7CitpbXBvcnQgY29tLmlibS5pY3UubGFuZy4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuKjsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLio7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5VdGlsaXR5OworaW1wb3J0IGphdmEudXRpbC5SYW5kb207CisKK3B1YmxpYyBjbGFzcyBCYXNpY1Rlc3QgZXh0ZW5kcyBUZXN0Rm13ayB7CisJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIG5ldyBCYXNpY1Rlc3QoKS5ydW4oYXJncyk7CisgICAgfQorCisgICAgU3RyaW5nW11bXSBjYW5vblRlc3RzID0geworICAgICAgICAvLyBJbnB1dCAgICAgICAgICAgICAgICBEZWNvbXBvc2VkICAgICAgICAgICAgICBDb21wb3NlZAorICAgICAgICB7ICJjYXQiLCAgICAgICAgICAgICAgICAiY2F0IiwgICAgICAgICAgICAgICAgICAiY2F0IiAgICAgICAgICAgICAgIH0sCisgICAgICAgIHsgIlx1MDBlMGFyZHZhcmsiLCAgICAgICJhXHUwMzAwYXJkdmFyayIsICAgICAgICJcdTAwZTBhcmR2YXJrIiwgICAgfSwKKworICAgICAgICB7ICJcdTFlMGEiLCAgICAgICAgICAgICAiRFx1MDMwNyIsICAgICAgICAgICAgICAiXHUxZTBhIiAgICAgICAgICAgIH0sIC8vIEQtZG90X2Fib3ZlCisgICAgICAgIHsgIkRcdTAzMDciLCAgICAgICAgICAgICJEXHUwMzA3IiwgICAgICAgICAgICAgICJcdTFlMGEiICAgICAgICAgICAgfSwgLy8gRCBkb3RfYWJvdmUKKworICAgICAgICB7ICJcdTFlMGNcdTAzMDciLCAgICAgICAiRFx1MDMyM1x1MDMwNyIsICAgICAgICAiXHUxZTBjXHUwMzA3IiAgICAgIH0sIC8vIEQtZG90X2JlbG93IGRvdF9hYm92ZQorICAgICAgICB7ICJcdTFlMGFcdTAzMjMiLCAgICAgICAiRFx1MDMyM1x1MDMwNyIsICAgICAgICAiXHUxZTBjXHUwMzA3IiAgICAgIH0sIC8vIEQtZG90X2Fib3ZlIGRvdF9iZWxvdworICAgICAgICB7ICJEXHUwMzA3XHUwMzIzIiwgICAgICAiRFx1MDMyM1x1MDMwNyIsICAgICAgICAiXHUxZTBjXHUwMzA3IiAgICAgIH0sIC8vIEQgZG90X2JlbG93IGRvdF9hYm92ZQorCisgICAgICAgIHsgIlx1MWUxMFx1MDMwN1x1MDMyMyIsICJEXHUwMzI3XHUwMzIzXHUwMzA3IiwgICJcdTFlMTBcdTAzMjNcdTAzMDcifSwgLy8gRCBkb3RfYmVsb3cgY2VkaWxsYSBkb3RfYWJvdmUKKyAgICAgICAgeyAiRFx1MDMwN1x1MDMyOFx1MDMyMyIsIkRcdTAzMjhcdTAzMjNcdTAzMDciLCAgIlx1MWUwY1x1MDMyOFx1MDMwNyJ9LCAvLyBEIGRvdF9hYm92ZSBvZ29uZWsgZG90X2JlbG93CisKKyAgICAgICAgeyAiXHUxRTE0IiwgICAgICAgICAgICAgIkVcdTAzMDRcdTAzMDAiLCAgICAgICAgIlx1MUUxNCIgICAgICAgICAgICB9LCAvLyBFLW1hY3Jvbi1ncmF2ZQorICAgICAgICB7ICJcdTAxMTJcdTAzMDAiLCAgICAgICAiRVx1MDMwNFx1MDMwMCIsICAgICAgICAiXHUxRTE0IiAgICAgICAgICAgIH0sIC8vIEUtbWFjcm9uICsgZ3JhdmUKKyAgICAgICAgeyAiXHUwMGM4XHUwMzA0IiwgICAgICAgIkVcdTAzMDBcdTAzMDQiLCAgICAgICAgIlx1MDBjOFx1MDMwNCIgICAgICB9LCAvLyBFLWdyYXZlICsgbWFjcm9uCisKKyAgICAgICAgeyAiXHUyMTJiIiwgICAgICAgICAgICAgIkFcdTAzMGEiLCAgICAgICAgICAgICAgIlx1MDBjNSIgICAgICAgICAgICB9LCAvLyBhbmdzdHJvbV9zaWduCisgICAgICAgIHsgIlx1MDBjNSIsICAgICAgICAgICAgICJBXHUwMzBhIiwgICAgICAgICAgICAgICJcdTAwYzUiICAgICAgICAgICAgfSwgLy8gQS1yaW5nCisKKyAgICAgICAgeyAiXHUwMGM0ZmZpbiIsICAgICAgICAgIkFcdTAzMDhmZmluIiwgICAgICAgICAgIlx1MDBjNGZmaW4iICAgICAgICB9LAorICAgICAgICB7ICJcdTAwYzRcdUZCMDNuIiwgICAgICAiQVx1MDMwOFx1RkIwM24iLCAgICAgICAiXHUwMGM0XHVGQjAzbiIgICAgIH0sCisKKyAgICAgICAgeyAiXHUwMGZkZmZpbiIsICAgICAgICAgInlcdTAzMDFmZmluIiwgICAgICAgICAgIlx1MDBmZGZmaW4iICAgICAgICB9LCAvL3VwZGF0ZWQgd2l0aCAzLjAKKyAgICAgICAgeyAiXHUwMGZkXHVGQjAzbiIsICAgICAgInlcdTAzMDFcdUZCMDNuIiwgICAgICAgIlx1MDBmZFx1RkIwM24iICAgICB9LCAvL3VwZGF0ZWQgd2l0aCAzLjAKKworICAgICAgICB7ICJIZW5yeSBJViIsICAgICAgICAgICAiSGVucnkgSVYiLCAgICAgICAgICAgICAiSGVucnkgSVYiICAgICAgICAgIH0sCisgICAgICAgIHsgIkhlbnJ5IFx1MjE2MyIsICAgICAgICJIZW5yeSBcdTIxNjMiLCAgICAgICAgICJIZW5yeSBcdTIxNjMiICAgICAgfSwKKworICAgICAgICB7ICJcdTMwQUMiLCAgICAgICAgICAgICAiXHUzMEFCXHUzMDk5IiwgICAgICAgICAiXHUzMEFDIiAgICAgICAgICAgIH0sIC8vIGdhIChLYXRha2FuYSkKKyAgICAgICAgeyAiXHUzMEFCXHUzMDk5IiwgICAgICAgIlx1MzBBQlx1MzA5OSIsICAgICAgICAgIlx1MzBBQyIgICAgICAgICAgICB9LCAvLyBrYSArIHRlbgorICAgICAgICB7ICJcdUZGNzZcdUZGOUUiLCAgICAgICAiXHVGRjc2XHVGRjlFIiwgICAgICAgICAiXHVGRjc2XHVGRjlFIiAgICAgIH0sIC8vIGh3X2thICsgaHdfdGVuCisgICAgICAgIHsgIlx1MzBBQlx1RkY5RSIsICAgICAgICJcdTMwQUJcdUZGOUUiLCAgICAgICAgICJcdTMwQUJcdUZGOUUiICAgICAgfSwgLy8ga2EgKyBod190ZW4KKyAgICAgICAgeyAiXHVGRjc2XHUzMDk5IiwgICAgICAgIlx1RkY3Nlx1MzA5OSIsICAgICAgICAgIlx1RkY3Nlx1MzA5OSIgICAgICB9LCAvLyBod19rYSArIHRlbgorCisgICAgICAgIHsgIkFcdTAzMDBcdTAzMTYiLCAiQVx1MDMxNlx1MDMwMCIsICJcdTAwQzBcdTAzMTYiIH0sCisgICAgICAgIHsiXFxVMDAwMWQxNWVcXFUwMDAxZDE1N1xcVTAwMDFkMTY1XFxVMDAwMWQxNWUiLCJcXFUwMDAxRDE1N1xcVTAwMDFEMTY1XFxVMDAwMUQxNTdcXFUwMDAxRDE2NVxcVTAwMDFEMTU3XFxVMDAwMUQxNjUiLCAiXFxVMDAwMUQxNTdcXFUwMDAxRDE2NVxcVTAwMDFEMTU3XFxVMDAwMUQxNjVcXFUwMDAxRDE1N1xcVTAwMDFEMTY1In0sCisgICAgfTsKKworICAgIFN0cmluZ1tdW10gY29tcGF0VGVzdHMgPSB7CisgICAgICAgICAgICAvLyBJbnB1dCAgICAgICAgICAgICAgICBEZWNvbXBvc2VkICAgICAgICAgICAgICBDb21wb3NlZAorICAgICAgICB7ICJjYXQiLCAgICAgICAgICAgICAgICAgImNhdCIsICAgICAgICAgICAgICAgICAgICAgImNhdCIgICAgICAgICAgIH0sCisgICAgICAgIHsgIlx1RkI0ZiIsICAgICAgICAgICAgICJcdTA1RDBcdTA1REMiLCAgICAgICAgICJcdTA1RDBcdTA1REMiLCAgICAgfSwgLy8gQWxlZi1MYW1lZCB2cy4gQWxlZiwgTGFtZWQKKworICAgICAgICB7ICJcdTAwQzRmZmluIiwgICAgICAgICAiQVx1MDMwOGZmaW4iLCAgICAgICAgICAiXHUwMEM0ZmZpbiIgICAgICAgIH0sCisgICAgICAgIHsgIlx1MDBDNFx1RkIwM24iLCAgICAgICJBXHUwMzA4ZmZpbiIsICAgICAgICAgICJcdTAwQzRmZmluIiAgICAgICAgfSwgLy8gZmZpIGxpZ2F0dXJlIC0+IGYgKyBmICsgaQorCisgICAgICAgIHsgIlx1MDBmZGZmaW4iLCAgICAgICAgICJ5XHUwMzAxZmZpbiIsICAgICAgICAgICJcdTAwZmRmZmluIiAgICAgICAgfSwgICAgICAgIC8vdXBkYXRlZCBmb3IgMy4wCisgICAgICAgIHsgIlx1MDBmZFx1RkIwM24iLCAgICAgICJ5XHUwMzAxZmZpbiIsICAgICAgICAgICJcdTAwZmRmZmluIiAgICAgICAgfSwgLy8gZmZpIGxpZ2F0dXJlIC0+IGYgKyBmICsgaQorCisgICAgICAgIHsgIkhlbnJ5IElWIiwgICAgICAgICAgICJIZW5yeSBJViIsICAgICAgICAgICAgICJIZW5yeSBJViIgICAgICAgICAgfSwKKyAgICAgICAgeyAiSGVucnkgXHUyMTYzIiwgICAgICAgIkhlbnJ5IElWIiwgICAgICAgICAgICAgIkhlbnJ5IElWIiAgICAgICAgICB9LAorCisgICAgICAgIHsgIlx1MzBBQyIsICAgICAgICAgICAgICJcdTMwQUJcdTMwOTkiLCAgICAgICAgICJcdTMwQUMiICAgICAgICAgICAgfSwgLy8gZ2EgKEthdGFrYW5hKQorICAgICAgICB7ICJcdTMwQUJcdTMwOTkiLCAgICAgICAiXHUzMEFCXHUzMDk5IiwgICAgICAgICAiXHUzMEFDIiAgICAgICAgICAgIH0sIC8vIGthICsgdGVuCisKKyAgICAgICAgeyAiXHVGRjc2XHUzMDk5IiwgICAgICAgIlx1MzBBQlx1MzA5OSIsICAgICAgICAgIlx1MzBBQyIgICAgICAgICAgICB9LCAvLyBod19rYSArIHRlbgorCisgICAgICAgIC8qIFRoZXNlIHR3byBhcmUgYnJva2VuIGluIFVuaWNvZGUgMi4xLjIgYnV0IGZpeGVkIGluIDIuMS41IGFuZCBsYXRlciovCisgICAgICAgIHsgIlx1RkY3Nlx1RkY5RSIsICAgICAgICJcdTMwQUJcdTMwOTkiLCAgICAgICAgICJcdTMwQUMiICAgICAgICAgICAgfSwgLy8gaHdfa2EgKyBod190ZW4KKyAgICAgICAgeyAiXHUzMEFCXHVGRjlFIiwgICAgICAgIlx1MzBBQlx1MzA5OSIsICAgICAgICAgIlx1MzBBQyIgICAgICAgICAgICB9LCAvLyBrYSArIGh3X3RlbgorCisgICAgfTsKKworICAgIC8vIFdpdGggQ2Fub25pY2FsIGRlY29tcG9zaXRpb24sIEhhbmd1bCBzeWxsYWJsZXMgc2hvdWxkIGdldCBkZWNvbXBvc2VkCisgICAgLy8gaW50byBKYW1vLCBidXQgSmFtbyBjaGFyYWN0ZXJzIHNob3VsZCBub3QgYmUgZGVjb21wb3NlZCBpbnRvCisgICAgLy8gY29uam9pbmluZyBKYW1vCisgICAgU3RyaW5nW11bXSBoYW5ndWxDYW5vbiA9IHsKKyAgICAgICAgLy8gSW5wdXQgICAgICAgICAgICAgICAgRGVjb21wb3NlZCAgICAgICAgICAgICAgQ29tcG9zZWQKKyAgICAgICAgeyAiXHVkNGRiIiwgICAgICAgICAgICAgIlx1MTExMVx1MTE3MVx1MTFiNiIsICAgIlx1ZDRkYiIgICAgICAgIH0sCisgICAgICAgIHsgIlx1MTExMVx1MTE3MVx1MTFiNiIsICJcdTExMTFcdTExNzFcdTExYjYiLCAgICJcdWQ0ZGIiICAgICAgICB9LAorICAgIH07CisKKyAgICAvLyBXaXRoIGNvbXBhdGliaWxpdHkgZGVjb21wb3NpdGlvbiB0dXJuZWQgb24sCisgICAgLy8gaXQgc2hvdWxkIGdvIGFsbCB0aGUgd2F5IGRvd24gdG8gY29uam9pbmluZyBKYW1vIGNoYXJhY3RlcnMuCisgICAgLy8gVEhJUyBJUyBOTyBMT05HRVIgVFJVRSBJTiBVTklDT0RFIHYyLjEuOCwgU08gVEhJUyBURVNUIElTIE9CU09MRVRFCisgICAgU3RyaW5nW11bXSBoYW5ndWxDb21wYXQgPSB7CisgICAgICAgIC8vIElucHV0ICAgICAgICBEZWNvbXBvc2VkICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wb3NlZAorICAgICAgICAvLyB7ICJcdWQ0ZGIiLCAgICAgIlx1MTExMVx1MTE2ZVx1MTE3NVx1MTFhZlx1MTFjMiIsICAgIlx1ZDQ3OFx1MTE3NVx1MTFhZlx1MTFjMiIgIH0sCisgICAgfTsKKworICAgIHB1YmxpYyB2b2lkIFRlc3RIYW5ndWxDb21wb3NlKCkKKyAgICAgICAgICAgICAgICB0aHJvd3MgRXhjZXB0aW9ueworICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgc3RhdGljIGNvbXBvc2l0aW9uIG1ldGhvZHMgd29yaworICAgICAgICBsb2dsbigiQ2Fub25pY2FsIGNvbXBvc2l0aW9uLi4uIik7CisgICAgICAgIHN0YXRpY1Rlc3QoTm9ybWFsaXplci5ORkMsIGhhbmd1bENhbm9uLCAgMik7CisgICAgICAgIGxvZ2xuKCJDb21wYXRpYmlsaXR5IGNvbXBvc2l0aW9uLi4uIik7CisgICAgICAgIHN0YXRpY1Rlc3QoTm9ybWFsaXplci5ORktDLCBoYW5ndWxDb21wYXQsIDIpOworICAgICAgICAvLyBOb3cgdHJ5IGl0ZXJhdGl2ZSBjb21wb3NpdGlvbi4uLi4KKyAgICAgICAgbG9nbG4oIkl0ZXJhdGl2ZSBjb21wb3NpdGlvbi4uLiIpOworICAgICAgICBOb3JtYWxpemVyIG5vcm0gPSBuZXcgTm9ybWFsaXplcigiIiwgTm9ybWFsaXplci5ORkMpOworICAgICAgICBpdGVyYXRlVGVzdChub3JtLCBoYW5ndWxDYW5vbiwgMik7CisKKyAgICAgICAgbm9ybS5zZXRNb2RlKE5vcm1hbGl6ZXIuTkZLRCk7CisgICAgICAgIGl0ZXJhdGVUZXN0KG5vcm0sIGhhbmd1bENvbXBhdCwgMik7CisKKyAgICAgICAgLy8gQW5kIGZpbmFsbHksIG1ha2Ugc3VyZSB5b3UgY2FuIGRvIGl0IGluIHJldmVyc2UgdG9vCisgICAgICAgIGxvZ2xuKCJSZXZlcnNlIGl0ZXJhdGlvbi4uLiIpOworICAgICAgICBub3JtLnNldE1vZGUoTm9ybWFsaXplci5ORkMpOworICAgICAgICBiYWNrQW5kRm9ydGgobm9ybSwgaGFuZ3VsQ2Fub24pOworICAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0SGFuZ3VsRGVjb21wKCkgdGhyb3dzIEV4Y2VwdGlvbnsKKyAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIHN0YXRpYyBkZWNvbXBvc2l0aW9uIG1ldGhvZHMgd29yaworICAgICAgICBsb2dsbigiQ2Fub25pY2FsIGRlY29tcG9zaXRpb24uLi4iKTsKKyAgICAgICAgc3RhdGljVGVzdChOb3JtYWxpemVyLk5GRCwgaGFuZ3VsQ2Fub24sICAxKTsKKyAgICAgICAgbG9nbG4oIkNvbXBhdGliaWxpdHkgZGVjb21wb3NpdGlvbi4uLiIpOworICAgICAgICBzdGF0aWNUZXN0KE5vcm1hbGl6ZXIuTkZLRCwgaGFuZ3VsQ29tcGF0LCAxKTsKKworICAgICAgICAgLy8gTm93IHRoZSBpdGVyYXRpdmUgZGVjb21wb3NpdGlvbiBtZXRob2RzLi4uCisgICAgICAgIGxvZ2xuKCJJdGVyYXRpdmUgZGVjb21wb3NpdGlvbi4uLiIpOworICAgICAgICBOb3JtYWxpemVyIG5vcm0gPSBuZXcgTm9ybWFsaXplcigiIiwgTm9ybWFsaXplci5ORkQpOworICAgICAgICBpdGVyYXRlVGVzdChub3JtLCBoYW5ndWxDYW5vbiwgMSk7CisKKyAgICAgICAgbm9ybS5zZXRNb2RlKE5vcm1hbGl6ZXIuTkZLRCk7CisgICAgICAgIGl0ZXJhdGVUZXN0KG5vcm0sIGhhbmd1bENvbXBhdCwgMSk7CisKKyAgICAgICAgLy8gQW5kIGZpbmFsbHksIG1ha2Ugc3VyZSB5b3UgY2FuIGRvIGl0IGluIHJldmVyc2UgdG9vCisgICAgICAgIGxvZ2xuKCJSZXZlcnNlIGl0ZXJhdGlvbi4uLiIpOworICAgICAgICBub3JtLnNldE1vZGUoTm9ybWFsaXplci5ORkQpOworICAgICAgICBiYWNrQW5kRm9ydGgobm9ybSwgaGFuZ3VsQ2Fub24pOworICAgIH0KKyAgICBwdWJsaWMgdm9pZCBUZXN0Tm9uZSgpIHRocm93cyBFeGNlcHRpb257CisgICAgICAgIE5vcm1hbGl6ZXIgbm9ybSA9IG5ldyBOb3JtYWxpemVyKCIiLCBOb3JtYWxpemVyLk5PTkUpOworICAgICAgICBpdGVyYXRlVGVzdChub3JtLCBjYW5vblRlc3RzLCAwKTsKKyAgICAgICAgc3RhdGljVGVzdChOb3JtYWxpemVyLk5PTkUsIGNhbm9uVGVzdHMsIDApOworICAgIH0KKyAgICBwdWJsaWMgdm9pZCBUZXN0RGVjb21wKCkgdGhyb3dzIEV4Y2VwdGlvbnsKKyAgICAgICAgTm9ybWFsaXplciBub3JtID0gbmV3IE5vcm1hbGl6ZXIoIiIsIE5vcm1hbGl6ZXIuTkZEKTsKKyAgICAgICAgaXRlcmF0ZVRlc3Qobm9ybSwgY2Fub25UZXN0cywgMSk7CisgICAgICAgIHN0YXRpY1Rlc3QoTm9ybWFsaXplci5ORkQsIGNhbm9uVGVzdHMsIDEpOworICAgICAgICBkZWNvbXBvc2VUZXN0KE5vcm1hbGl6ZXIuTkZELCBjYW5vblRlc3RzLCAxKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0Q29tcGF0RGVjb21wKCkgdGhyb3dzIEV4Y2VwdGlvbnsKKyAgICAgICAgTm9ybWFsaXplciBub3JtID0gbmV3IE5vcm1hbGl6ZXIoIiIsIE5vcm1hbGl6ZXIuTkZLRCk7CisgICAgICAgIGl0ZXJhdGVUZXN0KG5vcm0sIGNvbXBhdFRlc3RzLCAxKTsKKyAgICAgICAgc3RhdGljVGVzdChOb3JtYWxpemVyLk5GS0QsY29tcGF0VGVzdHMsIDEpOworICAgICAgICBkZWNvbXBvc2VUZXN0KE5vcm1hbGl6ZXIuTkZLRCxjb21wYXRUZXN0cywgMSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdENhbm9uQ29tcG9zZSgpIHRocm93cyBFeGNlcHRpb257CisgICAgICAgIE5vcm1hbGl6ZXIgbm9ybSA9IG5ldyBOb3JtYWxpemVyKCIiLCBOb3JtYWxpemVyLk5GQyk7CisgICAgICAgIGl0ZXJhdGVUZXN0KG5vcm0sIGNhbm9uVGVzdHMsIDIpOworICAgICAgICBzdGF0aWNUZXN0KE5vcm1hbGl6ZXIuTkZDLCBjYW5vblRlc3RzLCAyKTsKKyAgICAgICAgY29tcG9zZVRlc3QoTm9ybWFsaXplci5ORkMsIGNhbm9uVGVzdHMsIDIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RDb21wYXRDb21wb3NlKCkgdGhyb3dzIEV4Y2VwdGlvbnsKKyAgICAgICAgTm9ybWFsaXplciBub3JtID0gbmV3IE5vcm1hbGl6ZXIoIiIsIE5vcm1hbGl6ZXIuTkZLQyk7CisgICAgICAgIGl0ZXJhdGVUZXN0KG5vcm0sIGNvbXBhdFRlc3RzLCAyKTsKKyAgICAgICAgc3RhdGljVGVzdChOb3JtYWxpemVyLk5GS0MsY29tcGF0VGVzdHMsIDIpOworICAgICAgICBjb21wb3NlVGVzdChOb3JtYWxpemVyLk5GS0MsY29tcGF0VGVzdHMsIDIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RFeHBsb2RpbmdCYXNlKCkgdGhyb3dzIEV4Y2VwdGlvbnsKKyAgICAgICAgLy8gXHUwMTdmIC0gTGF0aW4gc21hbGwgbGV0dGVyIGxvbmcgcworICAgICAgICAvLyBcdTAzMDcgLSBjb21iaW5pbmcgZG90IGFib3ZlCisgICAgICAgIC8vIFx1MWU2MSAtIExhdGluIHNtYWxsIGxldHRlciBzIHdpdGggZG90IGFib3ZlCisgICAgICAgIC8vIFx1MWU5YiAtIExhdGluIHNtYWxsIGxldHRlciBsb25nIHMgd2l0aCBkb3QgYWJvdmUKKyAgICAgICAgU3RyaW5nW11bXSBjYW5vbiA9IHsKKyAgICAgICAgICAgIC8vIElucHV0ICAgICAgICAgICAgICAgIERlY29tcG9zZWQgICAgICAgICAgICAgIENvbXBvc2VkCisgICAgICAgICAgICB7ICJUc2NodVx1MDE3ZiIsICAgICAgICAiVHNjaHVcdTAxN2YiLCAgICAgICAgICAiVHNjaHVcdTAxN2YiICAgIH0sCisgICAgICAgICAgICB7ICJUc2NodVx1MWU5YiIsICAgICAgICAiVHNjaHVcdTAxN2ZcdTAzMDciLCAgICAiVHNjaHVcdTFlOWIiICAgIH0sCisgICAgICAgIH07CisgICAgICAgIFN0cmluZ1tdW10gY29tcGF0ID0geworICAgICAgICAgICAgLy8gSW5wdXQgICAgICAgICAgICAgICAgRGVjb21wb3NlZCAgICAgICAgICAgICAgQ29tcG9zZWQKKyAgICAgICAgICAgIHsgIlx1MDE3ZiIsICAgICAgICAicyIsICAgICAgICAgICAgICAicyIgICAgICAgICAgIH0sCisgICAgICAgICAgICB7ICJcdTFlOWIiLCAgICAgICAgInNcdTAzMDciLCAgICAgICAgIlx1MWU2MSIgICAgICB9LAorICAgICAgICB9OworCisgICAgICAgIHN0YXRpY1Rlc3QoTm9ybWFsaXplci5ORkQsIGNhbm9uLCAgMSk7CisgICAgICAgIHN0YXRpY1Rlc3QoTm9ybWFsaXplci5ORkMsIGNhbm9uLCAgMik7CisKKyAgICAgICAgc3RhdGljVGVzdChOb3JtYWxpemVyLk5GS0QsIGNvbXBhdCwgMSk7CisgICAgICAgIHN0YXRpY1Rlc3QoTm9ybWFsaXplci5ORktDLCBjb21wYXQsIDIpOworCisgICAgfQorCisgICAgLyoqCisgICAgICogVGhlIFRpYmV0YW4gdm93ZWwgc2lnbiBBQSwgMGY3MSwgd2FzIG1lc3NlZCB1cCBwcmlvciB0bworICAgICAqIFVuaWNvZGUgdmVyc2lvbiAyLjEuOS4KKyAgICAgKiBPbmNlIDIuMS45IG9yIDMuMCBpcyByZWxlYXNlZCwgdW5jb21tZW50IHRoaXMgdGVzdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0VGliZXRhbigpIHRocm93cyBFeGNlcHRpb257CisgICAgICAgIFN0cmluZ1tdW10gZGVjb21wID0geworICAgICAgICAgICAgeyAiXHUwZjc3IiwgIlx1MGY3NyIsICJcdTBmYjJcdTBmNzFcdTBmODAiIH0KKyAgICAgICAgfTsKKyAgICAgICAgU3RyaW5nW11bXSBjb21wb3NlID0geworICAgICAgICAgICAgeyAiXHUwZmIyXHUwZjcxXHUwZjgwIiwgIlx1MGZiMlx1MGY3MVx1MGY4MCIsICJcdTBmYjJcdTBmNzFcdTBmODAiIH0KKyAgICAgICAgfTsKKworICAgICAgICBzdGF0aWNUZXN0KE5vcm1hbGl6ZXIuTkZELCBkZWNvbXAsIDEpOworICAgICAgICBzdGF0aWNUZXN0KE5vcm1hbGl6ZXIuTkZLRCxkZWNvbXAsIDIpOworICAgICAgICBzdGF0aWNUZXN0KE5vcm1hbGl6ZXIuTkZDLCBjb21wb3NlLCAxKTsKKyAgICAgICAgc3RhdGljVGVzdChOb3JtYWxpemVyLk5GS0MsY29tcG9zZSwgMik7CisgICAgfQorCisgICAgLyoqCisgICAgICogTWFrZSBzdXJlIGNoYXJhY3RlcnMgaW4gdGhlIENvbXBvc2l0aW9uRXhjbHVzaW9uLnR4dCBsaXN0IGRvIG5vdCBnZXQKKyAgICAgKiBjb21wb3NlZCB0by4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0Q29tcG9zaXRpb25FeGNsdXNpb24oKQorICAgICAgICAgICAgICAgIHRocm93cyBFeGNlcHRpb257CisgICAgICAgIC8vIFRoaXMgbGlzdCBpcyBnZW5lcmF0ZWQgZnJvbSBDb21wb3NpdGlvbkV4Y2x1c2lvbi50eHQuCisgICAgICAgIC8vIFVwZGF0ZSB3aGVuZXZlciB0aGUgbm9ybWFsaXplciB0YWJsZXMgYXJlIHVwZGF0ZWQuICBOb3RlCisgICAgICAgIC8vIHRoYXQgd2UgdGVzdCBhbGwgY2hhcmFjdGVycyBsaXN0ZWQsIGV2ZW4gdGhvc2UgdGhhdCBjYW4gYmUKKyAgICAgICAgLy8gZGVyaXZlZCBmcm9tIHRoZSBVbmljb2RlIERCIGFuZCBhcmUgdGhlcmVmb3JlIGNvbW1lbnRlZAorICAgICAgICAvLyBvdXQuCisgICAgICAgIFN0cmluZyBFWENMVURFRCA9CisgICAgICAgICAgICAiXHUwMzQwXHUwMzQxXHUwMzQzXHUwMzQ0XHUwMzc0XHUwMzdFXHUwMzg3XHUwOTU4IiArCisgICAgICAgICAgICAiXHUwOTU5XHUwOTVBXHUwOTVCXHUwOTVDXHUwOTVEXHUwOTVFXHUwOTVGXHUwOURDIiArCisgICAgICAgICAgICAiXHUwOUREXHUwOURGXHUwQTMzXHUwQTM2XHUwQTU5XHUwQTVBXHUwQTVCXHUwQTVFIiArCisgICAgICAgICAgICAiXHUwQjVDXHUwQjVEXHUwRjQzXHUwRjREXHUwRjUyXHUwRjU3XHUwRjVDXHUwRjY5IiArCisgICAgICAgICAgICAiXHUwRjczXHUwRjc1XHUwRjc2XHUwRjc4XHUwRjgxXHUwRjkzXHUwRjlEXHUwRkEyIiArCisgICAgICAgICAgICAiXHUwRkE3XHUwRkFDXHUwRkI5XHUxRjcxXHUxRjczXHUxRjc1XHUxRjc3XHUxRjc5IiArCisgICAgICAgICAgICAiXHUxRjdCXHUxRjdEXHUxRkJCXHUxRkJFXHUxRkM5XHUxRkNCXHUxRkQzXHUxRkRCIiArCisgICAgICAgICAgICAiXHUxRkUzXHUxRkVCXHUxRkVFXHUxRkVGXHUxRkY5XHUxRkZCXHUxRkZEXHUyMDAwIiArCisgICAgICAgICAgICAiXHUyMDAxXHUyMTI2XHUyMTJBXHUyMTJCXHUyMzI5XHUyMzJBXHVGOTAwXHVGQTEwIiArCisgICAgICAgICAgICAiXHVGQTEyXHVGQTE1XHVGQTIwXHVGQTIyXHVGQTI1XHVGQTI2XHVGQTJBXHVGQjFGIiArCisgICAgICAgICAgICAiXHVGQjJBXHVGQjJCXHVGQjJDXHVGQjJEXHVGQjJFXHVGQjJGXHVGQjMwXHVGQjMxIiArCisgICAgICAgICAgICAiXHVGQjMyXHVGQjMzXHVGQjM0XHVGQjM1XHVGQjM2XHVGQjM4XHVGQjM5XHVGQjNBIiArCisgICAgICAgICAgICAiXHVGQjNCXHVGQjNDXHVGQjNFXHVGQjQwXHVGQjQxXHVGQjQzXHVGQjQ0XHVGQjQ2IiArCisgICAgICAgICAgICAiXHVGQjQ3XHVGQjQ4XHVGQjQ5XHVGQjRBXHVGQjRCXHVGQjRDXHVGQjREXHVGQjRFIjsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPEVYQ0xVREVELmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgIFN0cmluZyBhID0gU3RyaW5nLnZhbHVlT2YoRVhDTFVERUQuY2hhckF0KGkpKTsKKyAgICAgICAgICAgIFN0cmluZyBiID0gTm9ybWFsaXplci5ub3JtYWxpemUoYSwgTm9ybWFsaXplci5ORktEKTsKKyAgICAgICAgICAgIFN0cmluZyBjID0gTm9ybWFsaXplci5ub3JtYWxpemUoYiwgTm9ybWFsaXplci5ORkMpOworICAgICAgICAgICAgaWYgKGMuZXF1YWxzKGEpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6ICIgKyBoZXgoYSkgKyAiIHggREVDT01QX0NPTVBBVCA9PiAiICsKKyAgICAgICAgICAgICAgICAgICAgICBoZXgoYikgKyAiIHggQ09NUE9TRSA9PiAiICsKKyAgICAgICAgICAgICAgICAgICAgICBoZXgoYykpOworICAgICAgICAgICAgfSBlbHNlIGlmIChpc1ZlcmJvc2UoKSkgeworICAgICAgICAgICAgICAgIGxvZ2xuKCJPazogIiArIGhleChhKSArICIgeCBERUNPTVBfQ09NUEFUID0+ICIgKworICAgICAgICAgICAgICAgICAgICAgIGhleChiKSArICIgeCBDT01QT1NFID0+ICIgKworICAgICAgICAgICAgICAgICAgICAgIGhleChjKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBtZXRob2Qgd29ya3MgdG9vLCBidXQgaXQgaXMgc29tZXdoYXQKKyAgICAgICAgLy8gaW5jZXN0dW91cy4gIEl0IHVzZXMgVUluZm8sIHdoaWNoIGlzIHRoZSBzYW1lIGRhdGFiYXNlIHRoYXQKKyAgICAgICAgLy8gTm9ybWFsaXplckJ1aWxkZXIgdXNlcywgc28gaWYgc29tZXRoaW5nIGlzIHdyb25nIHdpdGgKKyAgICAgICAgLy8gVUluZm8sIHRoZSBmb2xsb3dpbmcgdGVzdCB3b24ndCBzaG93IGl0LiAgQWxsIGl0IHdpbGwgc2hvdworICAgICAgICAvLyBpcyB0aGF0IE5vcm1hbGl6ZXJCdWlsZGVyIGhhcyBiZWVuIHJ1biB3aXRoIHdoYXRldmVyIHRoZQorICAgICAgICAvLyBjdXJyZW50IFVJbmZvIGlzLgorICAgICAgICAvLworICAgICAgICAvLyBXZSBjb21tZW50IHRoaXMgb3V0IGluIGZhdm9yIG9mIHRoZSB0ZXN0IGFib3ZlLCB3aGljaAorICAgICAgICAvLyBwcm92aWRlcyBpbmRlcGVuZGVudCB2ZXJpZmljYXRpb24gKGJ1dCBhbHNvIHJlcXVpcmVzCisgICAgICAgIC8vIGluZGVwZW5kZW50IHVwZGF0aW5nKS4KKy8vICAgICAgbG9nbG4oIi0tLSIpOworLy8gICAgICBVSW5mbyB1aW5mbyA9IG5ldyBVSW5mbygpOworLy8gICAgICBmb3IgKGludCBpPTA7IGk8PTB4RkZGRjsgKytpKSB7CisvLyAgICAgICAgICBpZiAoIXVpbmZvLmlzRXhjbHVkZWRDb21wb3NpdGlvbigoY2hhcilpKSB8fAorLy8gICAgICAgICAgICAgICghdWluZm8uaGFzQ2Fub25pY2FsRGVjb21wb3NpdGlvbigoY2hhcilpKSAmJgorLy8gICAgICAgICAgICAgICAhdWluZm8uaGFzQ29tcGF0aWJpbGl0eURlY29tcG9zaXRpb24oKGNoYXIpaSkpKSBjb250aW51ZTsKKy8vICAgICAgICAgIFN0cmluZyBhID0gU3RyaW5nLnZhbHVlT2YoKGNoYXIpaSk7CisvLyAgICAgICAgICBTdHJpbmcgYiA9IE5ld05vcm1hbGl6ZXIubm9ybWFsaXplKGEsTmV3Tm9ybWFsaXplci5ERUNPTVBfQ09NUEFULDApOworLy8gICAgICAgICAgU3RyaW5nIGMgPSBOZXdOb3JtYWxpemVyLm5vcm1hbGl6ZShiLE5ld05vcm1hbGl6ZXIuQ09NUE9TRSwwKTsKKy8vICAgICAgICAgIGlmIChjLmVxdWFscyhhKSkgeworLy8gICAgICAgICAgICAgIGVycmxuKCJGQUlMOiAiICsgaGV4KGEpICsgIiB4IERFQ09NUF9DT01QQVQgPT4gIiArCisvLyAgICAgICAgICAgICAgICAgICAgaGV4KGIpICsgIiB4IENPTVBPU0UgPT4gIiArCisvLyAgICAgICAgICAgICAgICAgICAgaGV4KGMpKTsKKy8vICAgICAgICAgIH0gZWxzZSBpZiAoaXNWZXJib3NlKCkpIHsKKy8vICAgICAgICAgICAgICBsb2dsbigiT2s6ICIgKyBoZXgoYSkgKyAiIHggREVDT01QX0NPTVBBVCA9PiAiICsKKy8vICAgICAgICAgICAgICAgICAgICBoZXgoYikgKyAiIHggQ09NUE9TRSA9PiAiICsKKy8vICAgICAgICAgICAgICAgICAgICBoZXgoYykpOworLy8gICAgICAgICAgfQorLy8gICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdCBmb3IgYSBwcm9ibGVtIHRoYXQgc2hvd2VkIHVwIGp1c3QgYmVmb3JlIElDVSAxLjYgcmVsZWFzZQorICAgICAqIGhhdmluZyB0byBkbyB3aXRoIGNvbWJpbmluZyBjaGFyYWN0ZXJzIHdpdGggYW4gaW5kZXggb2YgemVyby4KKyAgICAgKiBTdWNoIGNoYXJhY3RlcnMgZG8gbm90IHBhcnRpY2lwYXRlIGluIGFueSBjYW5vbmljYWwKKyAgICAgKiBkZWNvbXBvc2l0aW9ucy4gIEhvd2V2ZXIsIGhhdmluZyBhbiBpbmRleCBvZiB6ZXJvIG1lYW5zIHRoYXQKKyAgICAgKiB0aGV5IGFsbCBzaGFyZSBvbmUgdHlwZU1hc2tbXSBlbnRyeSwgdGhhdCBpcywgdGhleSBhbGwgaGF2ZSB0bworICAgICAqIG1hcCB0byB0aGUgc2FtZSBjYW5vbmljYWwgY2xhc3MsIHdoaWNoIGlzIG5vdCB0aGUgY2FzZSwgaW4KKyAgICAgKiByZWFsaXR5LgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RaZXJvSW5kZXgoKQorICAgICAgICAgICAgICAgIHRocm93cyBFeGNlcHRpb257CisgICAgICAgIFN0cmluZ1tdIERBVEEgPSB7CisgICAgICAgICAgICAvLyBFeHBlY3QgY29sMSB4IENPTVBPU0VfQ09NUEFUID0+IGNvbDIKKyAgICAgICAgICAgIC8vIEV4cGVjdCBjb2wyIHggREVDT01QID0+IGNvbDMKKyAgICAgICAgICAgICJBXHUwMzE2XHUwMzAwIiwgIlx1MDBDMFx1MDMxNiIsICJBXHUwMzE2XHUwMzAwIiwKKyAgICAgICAgICAgICJBXHUwMzAwXHUwMzE2IiwgIlx1MDBDMFx1MDMxNiIsICJBXHUwMzE2XHUwMzAwIiwKKyAgICAgICAgICAgICJBXHUwMzI3XHUwMzAwIiwgIlx1MDBDMFx1MDMyNyIsICJBXHUwMzI3XHUwMzAwIiwKKyAgICAgICAgICAgICJjXHUwMzIxXHUwMzI3IiwgImNcdTAzMjFcdTAzMjciLCAiY1x1MDMyMVx1MDMyNyIsCisgICAgICAgICAgICAiY1x1MDMyN1x1MDMyMSIsICJcdTAwRTdcdTAzMjEiLCAiY1x1MDMyN1x1MDMyMSIsCisgICAgICAgIH07CisKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPERBVEEubGVuZ3RoOyBpKz0zKSB7CisgICAgICAgICAgICBTdHJpbmcgYSA9IERBVEFbaV07CisgICAgICAgICAgICBTdHJpbmcgYiA9IE5vcm1hbGl6ZXIubm9ybWFsaXplKGEsIE5vcm1hbGl6ZXIuTkZLQyk7CisgICAgICAgICAgICBTdHJpbmcgZXhwID0gREFUQVtpKzFdOworICAgICAgICAgICAgaWYgKGIuZXF1YWxzKGV4cCkpIHsKKyAgICAgICAgICAgICAgICBsb2dsbigiT2s6ICIgKyBoZXgoYSkgKyAiIHggQ09NUE9TRV9DT01QQVQgPT4gIiArIGhleChiKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiAiICsgaGV4KGEpICsgIiB4IENPTVBPU0VfQ09NUEFUID0+ICIgKyBoZXgoYikgKworICAgICAgICAgICAgICAgICAgICAgICIsIGV4cGVjdCAiICsgaGV4KGV4cCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYSA9IE5vcm1hbGl6ZXIubm9ybWFsaXplKGIsIE5vcm1hbGl6ZXIuTkZEKTsKKyAgICAgICAgICAgIGV4cCA9IERBVEFbaSsyXTsKKyAgICAgICAgICAgIGlmIChhLmVxdWFscyhleHApKSB7CisgICAgICAgICAgICAgICAgbG9nbG4oIk9rOiAiICsgaGV4KGIpICsgIiB4IERFQ09NUCA9PiAiICsgaGV4KGEpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6ICIgKyBoZXgoYikgKyAiIHggREVDT01QID0+ICIgKyBoZXgoYSkgKworICAgICAgICAgICAgICAgICAgICAgICIsIGV4cGVjdCAiICsgaGV4KGV4cCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdCBmb3IgYSBwcm9ibGVtIGZvdW5kIGJ5IFZlcmlzaWduLiAgUHJvYmxlbSBpcyB0aGF0CisgICAgICogY2hhcmFjdGVycyBhdCB0aGUgc3RhcnQgb2YgYSBzdHJpbmcgYXJlIG5vdCBwdXQgaW4gY2Fub25pY2FsCisgICAgICogb3JkZXIgY29ycmVjdGx5IGJ5IGNvbXBvc2UoKSBpZiB0aGVyZSBpcyBubyBzdGFydGVyLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RWZXJpc2lnbigpCisgICAgICAgICAgICAgICAgdGhyb3dzIEV4Y2VwdGlvbnsKKyAgICAgICAgU3RyaW5nW10gaW5wdXRzID0geworICAgICAgICAgICAgIlx1MDViOFx1MDViOVx1MDViMVx1MDU5MVx1MDVjM1x1MDViMFx1MDVhY1x1MDU5ZiIsCisgICAgICAgICAgICAiXHUwNTkyXHUwNWI3XHUwNWJjXHUwNWE1XHUwNWIwXHUwNWMwXHUwNWM0XHUwNWFkIgorICAgICAgICB9OworICAgICAgICBTdHJpbmdbXSBvdXRwdXRzID0geworICAgICAgICAgICAgIlx1MDViMVx1MDViOFx1MDViOVx1MDU5MVx1MDVjM1x1MDViMFx1MDVhY1x1MDU5ZiIsCisgICAgICAgICAgICAiXHUwNWIwXHUwNWI3XHUwNWJjXHUwNWE1XHUwNTkyXHUwNWMwXHUwNWFkXHUwNWM0IgorICAgICAgICB9OworCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaW5wdXRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBTdHJpbmcgaW5wdXQgPSBpbnB1dHNbaV07CisgICAgICAgICAgICBTdHJpbmcgb3V0cHV0ID0gb3V0cHV0c1tpXTsKKyAgICAgICAgICAgIFN0cmluZyByZXN1bHQgPSBOb3JtYWxpemVyLmRlY29tcG9zZShpbnB1dCwgZmFsc2UpOworICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXF1YWxzKG91dHB1dCkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTCBpbnB1dDogIiArIGhleChpbnB1dCkpOworICAgICAgICAgICAgICAgIGVycmxuKCIgZGVjb21wb3NlOiAiICsgaGV4KHJlc3VsdCkpOworICAgICAgICAgICAgICAgIGVycmxuKCIgIGV4cGVjdGVkOiAiICsgaGV4KG91dHB1dCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVzdWx0ID0gTm9ybWFsaXplci5jb21wb3NlKGlucHV0LCBmYWxzZSk7CisgICAgICAgICAgICBpZiAoIXJlc3VsdC5lcXVhbHMob3V0cHV0KSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMIGlucHV0OiAiICsgaGV4KGlucHV0KSk7CisgICAgICAgICAgICAgICAgZXJybG4oIiAgIGNvbXBvc2U6ICIgKyBoZXgocmVzdWx0KSk7CisgICAgICAgICAgICAgICAgZXJybG4oIiAgZXhwZWN0ZWQ6ICIgKyBoZXgob3V0cHV0KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgIH0KKyAgICBwdWJsaWMgdm9pZCAgVGVzdFF1aWNrQ2hlY2tSZXN1bHROTygpCisgICAgICAgICAgICAgICAgIHRocm93cyBFeGNlcHRpb257CisgICAgICAgIGZpbmFsIGNoYXIgQ1BORkRbXSA9IHsweDAwQzUsIDB4MDQwNywgMHgxRTAwLCAweDFGNTcsIDB4MjIwQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMEFFLCAweEFDMDAsIDB4RDdBMywgMHhGQjM2LCAweEZCNEV9OworICAgICAgICBmaW5hbCBjaGFyIENQTkZDW10gPSB7MHgwMzQwLCAweDBGOTMsIDB4MUY3NywgMHgxRkJCLCAweDFGRUIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAwMCwgMHgyMzJBLCAweEY5MDAsIDB4RkExRSwgMHhGQjRFfTsKKyAgICAgICAgZmluYWwgY2hhciBDUE5GS0RbXSA9IHsweDAwQTAsIDB4MDJFNCwgMHgxRkRCLCAweDI0RUEsIDB4MzJGRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhBQzAwLCAweEZCNEUsIDB4RkExMCwgMHhGRjNGLCAweEZBMkR9OworICAgICAgICBmaW5hbCBjaGFyIENQTkZLQ1tdID0gezB4MDBBMCwgMHgwMTdGLCAweDIwMDAsIDB4MjRFQSwgMHgzMkZFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMzRkUsIDB4RkI0RSwgMHhGQTEwLCAweEZGM0YsIDB4RkEyRH07CisKKworICAgICAgICBmaW5hbCBpbnQgU0laRSA9IDEwOworCisgICAgICAgIGludCBjb3VudCA9IDA7CisgICAgICAgIGZvciAoOyBjb3VudCA8IFNJWkU7IGNvdW50ICsrKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoTm9ybWFsaXplci5xdWlja0NoZWNrKFN0cmluZy52YWx1ZU9mKENQTkZEW2NvdW50XSksCisgICAgICAgICAgICAgICAgICAgIE5vcm1hbGl6ZXIuTkZEKSAhPSBOb3JtYWxpemVyLk5PKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVycmxuKCJFUlJPUiBpbiBORkQgcXVpY2sgY2hlY2sgYXQgVSsiICsKKyAgICAgICAgICAgICAgICAgICAgICAgSW50ZWdlci50b0hleFN0cmluZyhDUE5GRFtjb3VudF0pKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoTm9ybWFsaXplci5xdWlja0NoZWNrKFN0cmluZy52YWx1ZU9mKENQTkZDW2NvdW50XSksCisgICAgICAgICAgICAgICAgICAgICAgICBOb3JtYWxpemVyLk5GQykgIT1Ob3JtYWxpemVyLk5PKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVycmxuKCJFUlJPUiBpbiBORkMgcXVpY2sgY2hlY2sgYXQgVSsiKworICAgICAgICAgICAgICAgICAgICAgICBJbnRlZ2VyLnRvSGV4U3RyaW5nKENQTkZDW2NvdW50XSkpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChOb3JtYWxpemVyLnF1aWNrQ2hlY2soU3RyaW5nLnZhbHVlT2YoQ1BORktEW2NvdW50XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vcm1hbGl6ZXIuTkZLRCkgIT0gTm9ybWFsaXplci5OTykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRVJST1IgaW4gTkZLRCBxdWljayBjaGVjayBhdCBVKyIrCisgICAgICAgICAgICAgICAgICAgICAgIEludGVnZXIudG9IZXhTdHJpbmcoQ1BORktEW2NvdW50XSkpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChOb3JtYWxpemVyLnF1aWNrQ2hlY2soU3RyaW5nLnZhbHVlT2YoQ1BORktDW2NvdW50XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vcm1hbGl6ZXIuTkZLQykgIT1Ob3JtYWxpemVyLk5PKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVycmxuKCJFUlJPUiBpbiBORktDIHF1aWNrIGNoZWNrIGF0IFUrIisKKyAgICAgICAgICAgICAgICAgICAgICAgSW50ZWdlci50b0hleFN0cmluZyhDUE5GS0NbY291bnRdKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisKKyAgICBwdWJsaWMgdm9pZCBUZXN0UXVpY2tDaGVja1Jlc3VsdFlFUygpCisgICAgICAgICAgICAgICAgdGhyb3dzIEV4Y2VwdGlvbnsKKyAgICAgICAgZmluYWwgY2hhciBDUE5GRFtdID0gezB4MDBDNiwgMHgwMTdGLCAweDBGNzQsIDB4MTAwMCwgMHgxRTlBLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIyNjEsIDB4MzA3NSwgMHg0MDAwLCAweDUwMDAsIDB4RjAwMH07CisgICAgICAgIGZpbmFsIGNoYXIgQ1BORkNbXSA9IHsweDA0MDAsIDB4MDU0MCwgMHgwOTAxLCAweDEwMDAsIDB4MTUwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxRTlBLCAweDMwMDAsIDB4NDAwMCwgMHg1MDAwLCAweEYwMDB9OworICAgICAgICBmaW5hbCBjaGFyIENQTkZLRFtdID0gezB4MDBBQiwgMHgwMkEwLCAweDEwMDAsIDB4MTAyNywgMHgyRkZCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDNGRkYsIDB4NEZGRiwgMHhBMDAwLCAweEYwMDAsIDB4RkEyN307CisgICAgICAgIGZpbmFsIGNoYXIgQ1BORktDW10gPSB7MHgwMEIwLCAweDAxMDAsIDB4MDIwMCwgMHgwQTAyLCAweDEwMDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjAxMCwgMHgzMDMwLCAweDQwMDAsIDB4QTAwMCwgMHhGQTBFfTsKKworICAgICAgICBmaW5hbCBpbnQgU0laRSA9IDEwOworICAgICAgICBpbnQgY291bnQgPSAwOworCisgICAgICAgIGNoYXIgY3AgPSAwOworICAgICAgICB3aGlsZSAoY3AgPCAweEEwKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoTm9ybWFsaXplci5xdWlja0NoZWNrKFN0cmluZy52YWx1ZU9mKGNwKSwgTm9ybWFsaXplci5ORkQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE9IE5vcm1hbGl6ZXIuWUVTKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVycmxuKCJFUlJPUiBpbiBORkQgcXVpY2sgY2hlY2sgYXQgVSsiKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZWdlci50b0hleFN0cmluZyhjcCkpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChOb3JtYWxpemVyLnF1aWNrQ2hlY2soU3RyaW5nLnZhbHVlT2YoY3ApLCBOb3JtYWxpemVyLk5GQykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE9IE5vcm1hbGl6ZXIuWUVTKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVycmxuKCJFUlJPUiBpbiBORkMgcXVpY2sgY2hlY2sgYXQgVSsiKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZWdlci50b0hleFN0cmluZyhjcCkpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChOb3JtYWxpemVyLnF1aWNrQ2hlY2soU3RyaW5nLnZhbHVlT2YoY3ApLCBOb3JtYWxpemVyLk5GS0QpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPSBOb3JtYWxpemVyLllFUykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRVJST1IgaW4gTkZLRCBxdWljayBjaGVjayBhdCBVKyIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZWdlci50b0hleFN0cmluZyhjcCkpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChOb3JtYWxpemVyLnF1aWNrQ2hlY2soU3RyaW5nLnZhbHVlT2YoY3ApLCBOb3JtYWxpemVyLk5GS0MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPSBOb3JtYWxpemVyLllFUykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRVJST1IgaW4gTkZLQyBxdWljayBjaGVjayBhdCBVKyIrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZWdlci50b0hleFN0cmluZyhjcCkpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNwKys7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKDsgY291bnQgPCBTSVpFOyBjb3VudCArKykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKE5vcm1hbGl6ZXIucXVpY2tDaGVjayhTdHJpbmcudmFsdWVPZihDUE5GRFtjb3VudF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3JtYWxpemVyLk5GRCkhPU5vcm1hbGl6ZXIuWUVTKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVycmxuKCJFUlJPUiBpbiBORkQgcXVpY2sgY2hlY2sgYXQgVSsiKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZWdlci50b0hleFN0cmluZyhDUE5GRFtjb3VudF0pKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoTm9ybWFsaXplci5xdWlja0NoZWNrKFN0cmluZy52YWx1ZU9mKENQTkZDW2NvdW50XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vcm1hbGl6ZXIuTkZDKSE9Tm9ybWFsaXplci5ZRVMpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZXJybG4oIkVSUk9SIGluIE5GQyBxdWljayBjaGVjayBhdCBVKyIrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlZ2VyLnRvSGV4U3RyaW5nKENQTkZDW2NvdW50XSkpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChOb3JtYWxpemVyLnF1aWNrQ2hlY2soU3RyaW5nLnZhbHVlT2YoQ1BORktEW2NvdW50XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vcm1hbGl6ZXIuTkZLRCkhPU5vcm1hbGl6ZXIuWUVTKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVycmxuKCJFUlJPUiBpbiBORktEIHF1aWNrIGNoZWNrIGF0IFUrIisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVnZXIudG9IZXhTdHJpbmcoQ1BORktEW2NvdW50XSkpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChOb3JtYWxpemVyLnF1aWNrQ2hlY2soU3RyaW5nLnZhbHVlT2YoQ1BORktDW2NvdW50XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vcm1hbGl6ZXIuTkZLQykhPU5vcm1hbGl6ZXIuWUVTKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVycmxuKCJFUlJPUiBpbiBORktDIHF1aWNrIGNoZWNrIGF0IFUrIisKKyAgICAgICAgICAgICAgICAgICAgICAgIEludGVnZXIudG9IZXhTdHJpbmcoQ1BORktDW2NvdW50XSkpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBwdWJsaWMgdm9pZCBUZXN0QmVuZ2FsaSgpIHRocm93cyBFeGNlcHRpb257CisgICAgICAgIFN0cmluZyBpbnB1dCA9ICJcdTA5YmNcdTA5YmVcdTA5Y2RcdTA5YmUiOworICAgICAgICBTdHJpbmcgb3V0cHV0PU5vcm1hbGl6ZXIubm9ybWFsaXplKGlucHV0LE5vcm1hbGl6ZXIuTkZDKTsKKyAgICAgICAgaWYoIWlucHV0LmVxdWFscyhvdXRwdXQpKXsKKyAgICAgICAgICAgICBlcnJsbigiRVJST1IgaW4gTkZDIG9mIHN0cmluZyIpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgcHVibGljIHZvaWQgVGVzdFF1aWNrQ2hlY2tSZXN1bHRNQVlCRSgpCisgICAgICAgICAgICAgICAgdGhyb3dzIEV4Y2VwdGlvbnsKKworICAgICAgICBmaW5hbCBjaGFyW10gQ1BORkMgPSB7MHgwMzA2LCAweDA2NTQsIDB4MEJCRSwgMHgxMDJFLCAweDExNjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTE2QSwgMHgxMTczLCAweDExNzUsIDB4MzA5OSwgMHgzMDlBfTsKKyAgICAgICAgZmluYWwgY2hhcltdIENQTkZLQyA9IHsweDAzMDAsIDB4MDY1NCwgMHgwNjU1LCAweDA5RDcsIDB4MEIzRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwRENGLCAweERERiwgMHgxMDJFLCAweDExQTgsIDB4MzA5OX07CisKKworICAgICAgICBmaW5hbCBpbnQgU0laRSA9IDEwOworCisgICAgICAgIGludCBjb3VudCA9IDA7CisKKyAgICAgICAgLyogTkZEIGFuZCBORktEIGRvZXMgbm90IGhhdmUgYW55IE1BWUJFIGNvZGVwb2ludHMgKi8KKyAgICAgICAgZm9yICg7IGNvdW50IDwgU0laRTsgY291bnQgKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChOb3JtYWxpemVyLnF1aWNrQ2hlY2soU3RyaW5nLnZhbHVlT2YoQ1BORkNbY291bnRdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3JtYWxpemVyLk5GQykhPU5vcm1hbGl6ZXIuTUFZQkUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZXJybG4oIkVSUk9SIGluIE5GQyBxdWljayBjaGVjayBhdCBVKyIrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVnZXIudG9IZXhTdHJpbmcoQ1BORkNbY291bnRdKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKE5vcm1hbGl6ZXIucXVpY2tDaGVjayhTdHJpbmcudmFsdWVPZihDUE5GS0NbY291bnRdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vcm1hbGl6ZXIuTkZLQykhPU5vcm1hbGl6ZXIuTUFZQkUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZXJybG4oIkVSUk9SIGluIE5GS0MgcXVpY2sgY2hlY2sgYXQgVSsiKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlZ2VyLnRvSGV4U3RyaW5nKENQTkZLQ1tjb3VudF0pKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoTm9ybWFsaXplci5xdWlja0NoZWNrKG5ldyBjaGFyW117Q1BORkNbY291bnRdfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3JtYWxpemVyLk5GQykhPU5vcm1hbGl6ZXIuTUFZQkUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZXJybG4oIkVSUk9SIGluIE5GQyBxdWljayBjaGVjayBhdCBVKyIrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVnZXIudG9IZXhTdHJpbmcoQ1BORkNbY291bnRdKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKE5vcm1hbGl6ZXIucXVpY2tDaGVjayhuZXcgY2hhcltde0NQTkZLQ1tjb3VudF19LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9ybWFsaXplci5ORktDKSE9Tm9ybWFsaXplci5NQVlCRSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRVJST1IgaW4gTkZLQyBxdWljayBjaGVjayBhdCBVKyIrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVnZXIudG9IZXhTdHJpbmcoQ1BORktDW2NvdW50XSkpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChOb3JtYWxpemVyLnF1aWNrQ2hlY2sobmV3IGNoYXJbXXtDUE5GS0NbY291bnRdfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vcm1hbGl6ZXIuTk9ORSkhPU5vcm1hbGl6ZXIuTUFZQkUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZXJybG4oIkVSUk9SIGluIE5GS0MgcXVpY2sgY2hlY2sgYXQgVSsiKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlZ2VyLnRvSGV4U3RyaW5nKENQTkZLQ1tjb3VudF0pKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0UXVpY2tDaGVja1N0cmluZ1Jlc3VsdCgpCisgICAgICAgICAgICAgICAgdGhyb3dzIEV4Y2VwdGlvbnsKKyAgICAgICAgaW50IGNvdW50OworICAgICAgICBTdHJpbmcgZDsKKyAgICAgICAgU3RyaW5nIGM7CisKKyAgICAgICAgZm9yIChjb3VudCA9IDA7IGNvdW50IDwgY2Fub25UZXN0cy5sZW5ndGg7IGNvdW50ICsrKQorICAgICAgICB7CisgICAgICAgICAgICBkID0gY2Fub25UZXN0c1tjb3VudF1bMV07CisgICAgICAgICAgICBjID0gY2Fub25UZXN0c1tjb3VudF1bMl07CisgICAgICAgICAgICBpZiAoTm9ybWFsaXplci5xdWlja0NoZWNrKGQsTm9ybWFsaXplci5ORkQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE9IE5vcm1hbGl6ZXIuWUVTKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVycmxuKCJFUlJPUiBpbiBORkQgcXVpY2sgY2hlY2sgZm9yIHN0cmluZyBhdCBjb3VudCAiICsgY291bnQpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKE5vcm1hbGl6ZXIucXVpY2tDaGVjayhjLCBOb3JtYWxpemVyLk5GQykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT0gTm9ybWFsaXplci5OTykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRVJST1IgaW4gTkZDIHF1aWNrIGNoZWNrIGZvciBzdHJpbmcgYXQgY291bnQgIiArIGNvdW50KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGNvdW50ID0gMDsgY291bnQgPCBjb21wYXRUZXN0cy5sZW5ndGg7IGNvdW50ICsrKQorICAgICAgICB7CisgICAgICAgICAgICBkID0gY29tcGF0VGVzdHNbY291bnRdWzFdOworICAgICAgICAgICAgYyA9IGNvbXBhdFRlc3RzW2NvdW50XVsyXTsKKyAgICAgICAgICAgIGlmIChOb3JtYWxpemVyLnF1aWNrQ2hlY2soZCwgTm9ybWFsaXplci5ORktEKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPSBOb3JtYWxpemVyLllFUykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRVJST1IgaW4gTkZLRCBxdWljayBjaGVjayBmb3Igc3RyaW5nIGF0IGNvdW50ICIgKyBjb3VudCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoTm9ybWFsaXplci5xdWlja0NoZWNrKGMsICBOb3JtYWxpemVyLk5GS0MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE9IE5vcm1hbGl6ZXIuWUVTKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVycmxuKCJFUlJPUiBpbiBORktDIHF1aWNrIGNoZWNrIGZvciBzdHJpbmcgYXQgY291bnQgIiArIGNvdW50KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBJbnRlcm5hbCB1dGlsaXRpZXMKKyAgICAvLworICAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gSW50ZXJuYWwgdXRpbGl0aWVzCisgICAgLy8KKworICAgIHByaXZhdGUgdm9pZCBiYWNrQW5kRm9ydGgoTm9ybWFsaXplciBpdGVyLCBTdHJpbmcgaW5wdXQpCisgICAgeworICAgICAgICBpdGVyLnNldFRleHQoaW5wdXQpOworCisgICAgICAgIC8vIFJ1biB0aHJvdWdoIHRoZSBpdGVyYXRvciBmb3J3YXJkcyBhbmQgc3RpY2sgaXQgaW50byBhIFN0cmluZ0J1ZmZlcgorICAgICAgICBTdHJpbmdCdWZmZXIgZm9yd2FyZCA9ICBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIGZvciAoaW50IGNoID0gaXRlci5maXJzdCgpOyBjaCAhPSBpdGVyLkRPTkU7IGNoID0gaXRlci5uZXh0KCkpIHsKKyAgICAgICAgICAgIGZvcndhcmQuYXBwZW5kKGNoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE5vdyBkbyBpdCBiYWNrd2FyZHMKKyAgICAgICAgU3RyaW5nQnVmZmVyIHJldmVyc2UgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIGZvciAoaW50IGNoID0gaXRlci5sYXN0KCk7IGNoICE9IGl0ZXIuRE9ORTsgY2ggPSBpdGVyLnByZXZpb3VzKCkpIHsKKyAgICAgICAgICAgIHJldmVyc2UuaW5zZXJ0KDAsIGNoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghZm9yd2FyZC50b1N0cmluZygpLmVxdWFscyhyZXZlcnNlLnRvU3RyaW5nKCkpKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogRm9yd2FyZC9yZXZlcnNlIG1pc21hdGNoIGZvciBpbnB1dCAiICsgaGV4KGlucHV0KQorICAgICAgICAgICAgICAgICAgKyAiLCBmb3J3YXJkOiAiICsgaGV4KGZvcndhcmQpICsgIiwgYmFja3dhcmQ6ICIraGV4KHJldmVyc2UpKTsKKyAgICAgICAgfSBlbHNlIGlmIChpc1ZlcmJvc2UoKSkgeworICAgICAgICAgICAgbG9nbG4oIk9rOiBGb3J3YXJkL3JldmVyc2UgZm9yIGlucHV0ICIgKyBoZXgoaW5wdXQpCisgICAgICAgICAgICAgICAgICArICIsIGZvcndhcmQ6ICIgKyBoZXgoZm9yd2FyZCkgKyAiLCBiYWNrd2FyZDogIitoZXgocmV2ZXJzZSkpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGJhY2tBbmRGb3J0aChOb3JtYWxpemVyIGl0ZXIsIFN0cmluZ1tdW10gdGVzdHMpCisgICAgeworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRlc3RzLmxlbmd0aDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBpdGVyLnNldFRleHQodGVzdHNbaV1bMF0pOworCisgICAgICAgICAgICAvLyBSdW4gdGhyb3VnaCB0aGUgaXRlcmF0b3IgZm9yd2FyZHMgYW5kIHN0aWNrIGl0IGludG8gYQorICAgICAgICAgICAgLy8gU3RyaW5nQnVmZmVyCisgICAgICAgICAgICBTdHJpbmdCdWZmZXIgZm9yd2FyZCA9ICBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgICAgICBmb3IgKGludCBjaCA9IGl0ZXIuZmlyc3QoKTsgY2ggIT0gaXRlci5ET05FOyBjaCA9IGl0ZXIubmV4dCgpKSB7CisgICAgICAgICAgICAgICAgZm9yd2FyZC5hcHBlbmQoY2gpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBOb3cgZG8gaXQgYmFja3dhcmRzCisgICAgICAgICAgICBTdHJpbmdCdWZmZXIgcmV2ZXJzZSA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgICAgIGZvciAoaW50IGNoID0gaXRlci5sYXN0KCk7IGNoICE9IGl0ZXIuRE9ORTsgY2ggPSBpdGVyLnByZXZpb3VzKCkpIHsKKyAgICAgICAgICAgICAgICByZXZlcnNlLmluc2VydCgwLCBjaCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghZm9yd2FyZC50b1N0cmluZygpLmVxdWFscyhyZXZlcnNlLnRvU3RyaW5nKCkpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6IEZvcndhcmQvcmV2ZXJzZSBtaXNtYXRjaCBmb3IgaW5wdXQgIgorICAgICAgICAgICAgICAgICAgICArIGhleCh0ZXN0c1tpXVswXSkgKyAiLCBmb3J3YXJkOiAiICsgaGV4KGZvcndhcmQpCisgICAgICAgICAgICAgICAgICAgICsgIiwgYmFja3dhcmQ6ICIgKyBoZXgocmV2ZXJzZSkpOworICAgICAgICAgICAgfSBlbHNlIGlmIChpc1ZlcmJvc2UoKSkgeworICAgICAgICAgICAgICAgIGxvZ2xuKCJPazogRm9yd2FyZC9yZXZlcnNlIGZvciBpbnB1dCAiICsgaGV4KHRlc3RzW2ldWzBdKQorICAgICAgICAgICAgICAgICAgICAgICsgIiwgZm9yd2FyZDogIiArIGhleChmb3J3YXJkKSArICIsIGJhY2t3YXJkOiAiCisgICAgICAgICAgICAgICAgICAgICAgKyBoZXgocmV2ZXJzZSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHN0YXRpY1Rlc3QgKE5vcm1hbGl6ZXIuTW9kZSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdbXVtdIHRlc3RzLCBpbnQgb3V0Q29sKSB0aHJvd3MgRXhjZXB0aW9ueworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRlc3RzLmxlbmd0aDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBTdHJpbmcgaW5wdXQgPSBVdGlsaXR5LnVuZXNjYXBlKHRlc3RzW2ldWzBdKTsKKyAgICAgICAgICAgIFN0cmluZyBleHBlY3QgPSBVdGlsaXR5LnVuZXNjYXBlKHRlc3RzW2ldW291dENvbF0pOworCisgICAgICAgICAgICBsb2dsbigiTm9ybWFsaXppbmcgJyIgKyBpbnB1dCArICInICgiICsgaGV4KGlucHV0KSArICIpIiApOworCisgICAgICAgICAgICBTdHJpbmcgb3V0cHV0ID0gTm9ybWFsaXplci5ub3JtYWxpemUoaW5wdXQsIG1vZGUpOworCisgICAgICAgICAgICBpZiAoIW91dHB1dC5lcXVhbHMoZXhwZWN0KSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBjYXNlICIgKyBpCisgICAgICAgICAgICAgICAgICAgICsgIiBleHBlY3RlZCAnIiArIGV4cGVjdCArICInICgiICsgaGV4KGV4cGVjdCkgKyAiKSIKKyAgICAgICAgICAgICAgICAgICAgKyAiIGJ1dCBnb3QgJyIgKyBvdXRwdXQgKyAiJyAoIiArIGhleChvdXRwdXQpICsgIikiICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2hhcltdIG91dHB1dCA9IG5ldyBjaGFyWzFdOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRlc3RzLmxlbmd0aDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBjaGFyW10gaW5wdXQgPSBVdGlsaXR5LnVuZXNjYXBlKHRlc3RzW2ldWzBdKS50b0NoYXJBcnJheSgpOworICAgICAgICAgICAgU3RyaW5nIGV4cGVjdCA9VXRpbGl0eS51bmVzY2FwZSggdGVzdHNbaV1bb3V0Q29sXSk7CisKKyAgICAgICAgICAgIGxvZ2xuKCJOb3JtYWxpemluZyAnIiArIG5ldyBTdHJpbmcoaW5wdXQpICsgIicgKCIgKworICAgICAgICAgICAgICAgICAgICAgICAgaGV4KG5ldyBTdHJpbmcoaW5wdXQpKSArICIpIiApOworICAgICAgICAgICAgaW50IHJlcUxlbmd0aD0wOworCSAgICAgICAgd2hpbGUodHJ1ZSl7CisJCSAgICAgICAgdHJ5eworCQkgICAgICAgIAlyZXFMZW5ndGg9Tm9ybWFsaXplci5ub3JtYWxpemUoaW5wdXQsb3V0cHV0LCBtb2RlKTsKKwkJICAgICAgICAJaWYocmVxTGVuZ3RoPD1vdXRwdXQubGVuZ3RoCSl7CisJCSAgICAgICAgCQlicmVhazsKKwkJICAgICAgICAJfQorCQkgICAgICAgIH1jYXRjaChJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIGUpeworCQkgICAgICAgIAlvdXRwdXQ9IG5ldyBjaGFyW0ludGVnZXIucGFyc2VJbnQoZS5nZXRNZXNzYWdlKCkpXTsKKwkJICAgICAgICAJY29udGludWU7CisJCSAgICAgICAgfQorCSAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFleHBlY3QuZXF1YWxzKG5ldyBTdHJpbmcob3V0cHV0LDAscmVxTGVuZ3RoKSkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogY2FzZSAiICsgaQorICAgICAgICAgICAgICAgICAgICArICIgZXhwZWN0ZWQgJyIgKyBleHBlY3QgKyAiJyAoIiArIGhleChleHBlY3QpICsgIikiCisgICAgICAgICAgICAgICAgICAgICsgIiBidXQgZ290ICciICsgbmV3IFN0cmluZyhvdXRwdXQpCisgICAgICAgICAgICAgICAgICAgICsgIicgKCIgICsgaGV4KG5ldyBTdHJpbmcob3V0cHV0KSkgKyAiKSIgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBwcml2YXRlIHZvaWQgZGVjb21wb3NlVGVzdChOb3JtYWxpemVyLk1vZGUgbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nW11bXSB0ZXN0cywgaW50IG91dENvbCkgdGhyb3dzIEV4Y2VwdGlvbnsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0ZXN0cy5sZW5ndGg7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgU3RyaW5nIGlucHV0ID0gVXRpbGl0eS51bmVzY2FwZSh0ZXN0c1tpXVswXSk7CisgICAgICAgICAgICBTdHJpbmcgZXhwZWN0ID0gVXRpbGl0eS51bmVzY2FwZSh0ZXN0c1tpXVtvdXRDb2xdKTsKKworICAgICAgICAgICAgbG9nbG4oIk5vcm1hbGl6aW5nICciICsgaW5wdXQgKyAiJyAoIiArIGhleChpbnB1dCkgKyAiKSIgKTsKKworICAgICAgICAgICAgU3RyaW5nIG91dHB1dCA9IE5vcm1hbGl6ZXIuZGVjb21wb3NlKGlucHV0LCBtb2RlPT1Ob3JtYWxpemVyLk5GS0QpOworCisgICAgICAgICAgICBpZiAoIW91dHB1dC5lcXVhbHMoZXhwZWN0KSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBjYXNlICIgKyBpCisgICAgICAgICAgICAgICAgICAgICsgIiBleHBlY3RlZCAnIiArIGV4cGVjdCArICInICgiICsgaGV4KGV4cGVjdCkgKyAiKSIKKyAgICAgICAgICAgICAgICAgICAgKyAiIGJ1dCBnb3QgJyIgKyBvdXRwdXQgKyAiJyAoIiArIGhleChvdXRwdXQpICsgIikiICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2hhcltdIG91dHB1dCA9IG5ldyBjaGFyWzFdOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRlc3RzLmxlbmd0aDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBjaGFyW10gaW5wdXQgPSBVdGlsaXR5LnVuZXNjYXBlKHRlc3RzW2ldWzBdKS50b0NoYXJBcnJheSgpOworICAgICAgICAgICAgU3RyaW5nIGV4cGVjdCA9IFV0aWxpdHkudW5lc2NhcGUodGVzdHNbaV1bb3V0Q29sXSk7CisKKyAgICAgICAgICAgIGxvZ2xuKCJOb3JtYWxpemluZyAnIiArIG5ldyBTdHJpbmcoaW5wdXQpICsgIicgKCIgKworICAgICAgICAgICAgICAgICAgICAgICAgaGV4KG5ldyBTdHJpbmcoaW5wdXQpKSArICIpIiApOworICAgICAgICAgICAgaW50IHJlcUxlbmd0aD0wOworICAgICAgICAgICAgd2hpbGUodHJ1ZSl7CisgICAgICAgICAgICAgICAgdHJ5eworICAgICAgICAgICAgICAgICAgICByZXFMZW5ndGg9Tm9ybWFsaXplci5kZWNvbXBvc2UoaW5wdXQsb3V0cHV0LCBtb2RlPT1Ob3JtYWxpemVyLk5GS0QpOworICAgICAgICAgICAgICAgICAgICBpZihyZXFMZW5ndGg8PW91dHB1dC5sZW5ndGggKXsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfWNhdGNoKEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gZSl7CisgICAgICAgICAgICAgICAgICAgIG91dHB1dD0gbmV3IGNoYXJbSW50ZWdlci5wYXJzZUludChlLmdldE1lc3NhZ2UoKSldOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIWV4cGVjdC5lcXVhbHMobmV3IFN0cmluZyhvdXRwdXQsMCxyZXFMZW5ndGgpKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBjYXNlICIgKyBpCisgICAgICAgICAgICAgICAgICAgICsgIiBleHBlY3RlZCAnIiArIGV4cGVjdCArICInICgiICsgaGV4KGV4cGVjdCkgKyAiKSIKKyAgICAgICAgICAgICAgICAgICAgKyAiIGJ1dCBnb3QgJyIgKyBuZXcgU3RyaW5nKG91dHB1dCkKKyAgICAgICAgICAgICAgICAgICAgKyAiJyAoIiAgKyBoZXgobmV3IFN0cmluZyhvdXRwdXQpKSArICIpIiApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGNvbXBvc2VUZXN0KE5vcm1hbGl6ZXIuTW9kZSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdbXVtdIHRlc3RzLCBpbnQgb3V0Q29sKSB0aHJvd3MgRXhjZXB0aW9ueworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRlc3RzLmxlbmd0aDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBTdHJpbmcgaW5wdXQgPSBVdGlsaXR5LnVuZXNjYXBlKHRlc3RzW2ldWzBdKTsKKyAgICAgICAgICAgIFN0cmluZyBleHBlY3QgPSBVdGlsaXR5LnVuZXNjYXBlKHRlc3RzW2ldW291dENvbF0pOworCisgICAgICAgICAgICBsb2dsbigiTm9ybWFsaXppbmcgJyIgKyBpbnB1dCArICInICgiICsgaGV4KGlucHV0KSArICIpIiApOworCisgICAgICAgICAgICBTdHJpbmcgb3V0cHV0ID0gTm9ybWFsaXplci5jb21wb3NlKGlucHV0LCBtb2RlPT1Ob3JtYWxpemVyLk5GS0MpOworCisgICAgICAgICAgICBpZiAoIW91dHB1dC5lcXVhbHMoZXhwZWN0KSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBjYXNlICIgKyBpCisgICAgICAgICAgICAgICAgICAgICsgIiBleHBlY3RlZCAnIiArIGV4cGVjdCArICInICgiICsgaGV4KGV4cGVjdCkgKyAiKSIKKyAgICAgICAgICAgICAgICAgICAgKyAiIGJ1dCBnb3QgJyIgKyBvdXRwdXQgKyAiJyAoIiArIGhleChvdXRwdXQpICsgIikiICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2hhcltdIG91dHB1dCA9IG5ldyBjaGFyWzFdOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRlc3RzLmxlbmd0aDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBjaGFyW10gaW5wdXQgPSBVdGlsaXR5LnVuZXNjYXBlKHRlc3RzW2ldWzBdKS50b0NoYXJBcnJheSgpOworICAgICAgICAgICAgU3RyaW5nIGV4cGVjdCA9IFV0aWxpdHkudW5lc2NhcGUodGVzdHNbaV1bb3V0Q29sXSk7CisKKyAgICAgICAgICAgIGxvZ2xuKCJOb3JtYWxpemluZyAnIiArIG5ldyBTdHJpbmcoaW5wdXQpICsgIicgKCIgKworICAgICAgICAgICAgICAgICAgICAgICAgaGV4KG5ldyBTdHJpbmcoaW5wdXQpKSArICIpIiApOworICAgICAgICAgICAgaW50IHJlcUxlbmd0aD0wOworICAgICAgICAgICAgd2hpbGUodHJ1ZSl7CisgICAgICAgICAgICAgICAgdHJ5eworICAgICAgICAgICAgICAgICAgICByZXFMZW5ndGg9Tm9ybWFsaXplci5jb21wb3NlKGlucHV0LG91dHB1dCwgbW9kZT09Tm9ybWFsaXplci5ORktDKTsKKyAgICAgICAgICAgICAgICAgICAgaWYocmVxTGVuZ3RoPD1vdXRwdXQubGVuZ3RoICl7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH1jYXRjaChJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIGUpeworICAgICAgICAgICAgICAgICAgICBvdXRwdXQ9IG5ldyBjaGFyW0ludGVnZXIucGFyc2VJbnQoZS5nZXRNZXNzYWdlKCkpXTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFleHBlY3QuZXF1YWxzKG5ldyBTdHJpbmcob3V0cHV0LDAscmVxTGVuZ3RoKSkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogY2FzZSAiICsgaQorICAgICAgICAgICAgICAgICAgICArICIgZXhwZWN0ZWQgJyIgKyBleHBlY3QgKyAiJyAoIiArIGhleChleHBlY3QpICsgIikiCisgICAgICAgICAgICAgICAgICAgICsgIiBidXQgZ290ICciICsgbmV3IFN0cmluZyhvdXRwdXQpCisgICAgICAgICAgICAgICAgICAgICsgIicgKCIgICsgaGV4KG5ldyBTdHJpbmcob3V0cHV0KSkgKyAiKSIgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBwcml2YXRlIHZvaWQgaXRlcmF0ZVRlc3QoTm9ybWFsaXplciBpdGVyLCBTdHJpbmdbXVtdIHRlc3RzLCBpbnQgb3V0Q29sKXsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0ZXN0cy5sZW5ndGg7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgU3RyaW5nIGlucHV0ID0gVXRpbGl0eS51bmVzY2FwZSh0ZXN0c1tpXVswXSk7CisgICAgICAgICAgICBTdHJpbmcgZXhwZWN0ID0gVXRpbGl0eS51bmVzY2FwZSh0ZXN0c1tpXVtvdXRDb2xdKTsKKworICAgICAgICAgICAgbG9nbG4oIk5vcm1hbGl6aW5nICciICsgaW5wdXQgKyAiJyAoIiArIGhleChpbnB1dCkgKyAiKSIgKTsKKworICAgICAgICAgICAgaXRlci5zZXRUZXh0KGlucHV0KTsKKyAgICAgICAgICAgIGFzc2VydEVxdWFsKGV4cGVjdCwgaXRlciwgImNhc2UgIiArIGkgKyAiICIpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGFzc2VydEVxdWFsKFN0cmluZyBleHBlY3RlZCwgTm9ybWFsaXplciBpdGVyLCBTdHJpbmcgbXNnKQorICAgIHsKKyAgICAgICAgaW50IGluZGV4ID0gMDsKKyAgICAgICAgaW50IGNoOworICAgICAgICBVQ2hhcmFjdGVySXRlcmF0b3IgY0l0ZXIgPSAgVUNoYXJhY3Rlckl0ZXJhdG9yLmdldEluc3RhbmNlKGV4cGVjdGVkKTsKKyAgICAgICAgCisgICAgICAgIHdoaWxlICgoY2g9aXRlci5uZXh0KCkpIT0gaXRlci5ET05FKXsKKyAgICAgICAgICAgIGlmIChpbmRleCA+PSBleHBlY3RlZC5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiAiICsgbXNnICsgIlVuZXhwZWN0ZWQgY2hhcmFjdGVyICciICsgKGNoYXIpY2gKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIicgKCIgKyBoZXgoY2gpICsgIikiCisgICAgICAgICAgICAgICAgICAgICAgICArICIgYXQgaW5kZXggIiArIGluZGV4KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGludCB3YW50ID0gVVRGMTYuY2hhckF0KGV4cGVjdGVkLGluZGV4KTsKKyAgICAgICAgICAgIGlmIChjaCAhPSB3YW50KSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6ICIgKyBtc2cgKyAiZ290ICciICsgKGNoYXIpY2gKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIicgKCIgKyBoZXgoY2gpICsgIikiCisgICAgICAgICAgICAgICAgICAgICAgICArICIgYnV0IGV4cGVjdGVkICciICsgd2FudCArICInICgiICsgaGV4KHdhbnQpKyAiKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIiBhdCBpbmRleCAiICsgaW5kZXgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW5kZXgrPSAgVVRGMTYuZ2V0Q2hhckNvdW50KGNoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaW5kZXggPCBleHBlY3RlZC5sZW5ndGgoKSkgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6ICIgKyBtc2cgKyAiT25seSBnb3QgIiArIGluZGV4ICsgIiBjaGFycywgZXhwZWN0ZWQgIgorICAgICAgICAgICAgKyBleHBlY3RlZC5sZW5ndGgoKSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGNJdGVyLnNldFRvTGltaXQoKTsKKyAgICAgICAgd2hpbGUoKGNoPWl0ZXIucHJldmlvdXMoKSkhPWl0ZXIuRE9ORSl7CisgICAgICAgICAgICBpbnQgd2FudCA9IGNJdGVyLnByZXZpb3VzQ29kZVBvaW50KCk7CisgICAgICAgICAgICBpZiAoY2ggIT0gd2FudCApIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogIiArIG1zZyArICJnb3QgJyIgKyAoY2hhciljaAorICAgICAgICAgICAgICAgICAgICAgICAgKyAiJyAoIiArIGhleChjaCkgKyAiKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIiBidXQgZXhwZWN0ZWQgJyIgKyB3YW50ICsgIicgKCIgKyBoZXgod2FudCkgKyAiKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIiBhdCBpbmRleCAiICsgaW5kZXgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8vIE5PVEU6IFRoZXNlIHRlc3RzIGFyZSB1c2VkIGZvciBxdWljayBkZWJ1Z2dpbmcgc28gYXJlIG5vdCBwb3J0ZWQKKyAgICAvLyB0byBJQ1U0QyB0c25vcm0uY3BwIGluIGludGx0ZXN0CisgICAgLy8KKworICAgIHB1YmxpYyB2b2lkIFRlc3REZWJ1Z1N0YXRpYygpeworICAgICAgICBTdHJpbmcgaW4gPSBVdGlsaXR5LnVuZXNjYXBlKCJcXFUwMDAxRDE1N1xcVTAwMDFEMTY1Iik7CisgICAgICAgIGlmKCFOb3JtYWxpemVyLmlzTm9ybWFsaXplZChpbixOb3JtYWxpemVyLk5GQykpeworICAgICAgICAgICAgZXJybG4oImlzTm9ybWFsaXplZCBmYWlsZWQiKTsKKyAgICAgICAgfQorCisgICAgICAgIFN0cmluZyBpbnB1dCAgPSAgIlx1QUQ4Qlx1QUQ4Qlx1QUQ4Qlx1QUQ4QiIrCisgICAgICAgICAgICAiXFxVMDAwMWQxNWVcXFUwMDAxZDE1N1xcVTAwMDFkMTY1XFxVMDAwMWQxNWVcXFUwMDAxZDE1ZVxcVTAwMDFkMTVlXFxVMDAwMWQxNWUiKworICAgICAgICAgICAgIlxcVTAwMDFkMTVlXFxVMDAwMWQxNTdcXFUwMDAxZDE2NVxcVTAwMDFkMTVlXFxVMDAwMWQxNWVcXFUwMDAxZDE1ZVxcVTAwMDFkMTVlIisKKyAgICAgICAgICAgICJcXFUwMDAxZDE1ZVxcVTAwMDFkMTU3XFxVMDAwMWQxNjVcXFUwMDAxZDE1ZVxcVTAwMDFkMTVlXFxVMDAwMWQxNWVcXFUwMDAxZDE1ZSIrCisgICAgICAgICAgICAiXFxVMDAwMWQxNTdcXFUwMDAxZDE2NVxcVTAwMDFkMTVlXFxVMDAwMWQxNWVcXFUwMDAxZDE1ZVxcVTAwMDFkMTVlXFxVMDAwMWQxNWUiKworICAgICAgICAgICAgIlxcVTAwMDFkMTU3XFxVMDAwMWQxNjVcXFUwMDAxZDE1ZVxcVTAwMDFkMTVlXFxVMDAwMWQxNWVcXFUwMDAxZDE1ZVxcVTAwMDFkMTVlIisKKyAgICAgICAgICAgICJhYWFhYWFhYWFhYWFhYWFhYWF6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6eiIrCisgICAgICAgICAgICAiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmIiKworICAgICAgICAgICAgImNjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjIisKKyAgICAgICAgICAgICJkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZCIrCisgICAgICAgICAgICAiXHVBRDhCXHVBRDhCXHVBRDhCXHVBRDhCIisKKyAgICAgICAgICAgICJkXHUwMzFCXHUwMzA3XHUwMzIzIjsKKyAgICAgICAgU3RyaW5nIGV4cGVjdCA9ICJcdTExMDBcdTExNkZcdTExQUFcdTExMDBcdTExNkZcdTExQUFcdTExMDBcdTExNkYiKworICAgICAgICAgICAgICAgICAgICAgICAgIlx1MTFBQVx1MTEwMFx1MTE2Rlx1MTFBQVx1RDgzNFx1REQ1N1x1RDgzNFx1REQ2NSIrCisgICAgICAgICAgICAgICAgICAgICAgICAiXHVEODM0XHVERDU3XHVEODM0XHVERDY1XHVEODM0XHVERDU3XHVEODM0XHVERDY1IisKKyAgICAgICAgICAgICAgICAgICAgICAgICJcdUQ4MzRcdURENTdcdUQ4MzRcdURENjVcdUQ4MzRcdURENTdcdUQ4MzRcdURENjUiKworICAgICAgICAgICAgICAgICAgICAgICAgIlx1RDgzNFx1REQ1N1x1RDgzNFx1REQ2NVx1RDgzNFx1REQ1N1x1RDgzNFx1REQ2NSIrCisgICAgICAgICAgICAgICAgICAgICAgICAiXHVEODM0XHVERDU3XHVEODM0XHVERDY1XHVEODM0XHVERDU3XHVEODM0XHVERDY1IisKKyAgICAgICAgICAgICAgICAgICAgICAgICJcdUQ4MzRcdURENTdcdUQ4MzRcdURENjVcdUQ4MzRcdURENTdcdUQ4MzRcdURENjUiKworICAgICAgICAgICAgICAgICAgICAgICAgIlx1RDgzNFx1REQ1N1x1RDgzNFx1REQ2NVx1RDgzNFx1REQ1N1x1RDgzNFx1REQ2NSIrCisgICAgICAgICAgICAgICAgICAgICAgICAiXHVEODM0XHVERDU3XHVEODM0XHVERDY1XHVEODM0XHVERDU3XHVEODM0XHVERDY1IisKKyAgICAgICAgICAgICAgICAgICAgICAgICJcdUQ4MzRcdURENTdcdUQ4MzRcdURENjVcdUQ4MzRcdURENTdcdUQ4MzRcdURENjUiKworICAgICAgICAgICAgICAgICAgICAgICAgIlx1RDgzNFx1REQ1N1x1RDgzNFx1REQ2NVx1RDgzNFx1REQ1N1x1RDgzNFx1REQ2NSIrCisgICAgICAgICAgICAgICAgICAgICAgICAiXHVEODM0XHVERDU3XHVEODM0XHVERDY1XHVEODM0XHVERDU3XHVEODM0XHVERDY1IisKKyAgICAgICAgICAgICAgICAgICAgICAgICJcdUQ4MzRcdURENTdcdUQ4MzRcdURENjVcdUQ4MzRcdURENTdcdUQ4MzRcdURENjUiKworICAgICAgICAgICAgICAgICAgICAgICAgIlx1RDgzNFx1REQ1N1x1RDgzNFx1REQ2NVx1RDgzNFx1REQ1N1x1RDgzNFx1REQ2NSIrCisgICAgICAgICAgICAgICAgICAgICAgICAiXHVEODM0XHVERDU3XHVEODM0XHVERDY1XHVEODM0XHVERDU3XHVEODM0XHVERDY1IisKKyAgICAgICAgICAgICAgICAgICAgICAgICJcdUQ4MzRcdURENTdcdUQ4MzRcdURENjVcdUQ4MzRcdURENTdcdUQ4MzRcdURENjUiKworICAgICAgICAgICAgICAgICAgICAgICAgIlx1RDgzNFx1REQ1N1x1RDgzNFx1REQ2NWFhYWFhYWFhYWFhYWFhYWFhYXp6enp6eiIrCisgICAgICAgICAgICAgICAgICAgICAgICAienp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enoiKworICAgICAgICAgICAgICAgICAgICAgICAgImJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiIisKKyAgICAgICAgICAgICAgICAgICAgICAgICJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjYyIrCisgICAgICAgICAgICAgICAgICAgICAgICAiY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjIisKKyAgICAgICAgICAgICAgICAgICAgICAgICJkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZCIrCisgICAgICAgICAgICAgICAgICAgICAgICAiZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkIisKKyAgICAgICAgICAgICAgICAgICAgICAgICJcdTExMDBcdTExNkZcdTExQUFcdTExMDBcdTExNkZcdTExQUFcdTExMDBcdTExNkYiKworICAgICAgICAgICAgICAgICAgICAgICAgIlx1MTFBQVx1MTEwMFx1MTE2Rlx1MTFBQVx1MDA2NFx1MDMxQlx1MDMyM1x1MDMwNyI7CisgICAgICAgICAgICBTdHJpbmcgb3V0cHV0ID0gTm9ybWFsaXplci5ub3JtYWxpemUoVXRpbGl0eS51bmVzY2FwZShpbnB1dCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9ybWFsaXplci5ORkQpOworICAgICAgICAgICAgaWYoIWV4cGVjdC5lcXVhbHMob3V0cHV0KSl7CisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUwgZXhwZWN0ZWQ6ICIraGV4KGV4cGVjdCkgKyAiIGdvdDogIitoZXgob3V0cHV0KSk7CisgICAgICAgICAgICB9CisKKworCisgICAgfQorICAgIHB1YmxpYyB2b2lkIFRlc3REZWJ1Z0l0ZXIoKXsKKyAgICAgICAgU3RyaW5nIHNyYyA9IFV0aWxpdHkudW5lc2NhcGUoIlxcVTAwMDFkMTVlXFxVMDAwMWQxNTdcXFUwMDAxZDE2NVxcVTAwMDFkMTVlIik7CisgICAgICAgIFN0cmluZyBleHBlY3RlZCA9IFV0aWxpdHkudW5lc2NhcGUoIlxcVTAwMDFkMTVlXFxVMDAwMWQxNTdcXFUwMDAxZDE2NVxcVTAwMDFkMTVlIik7CisgICAgICAgIE5vcm1hbGl6ZXIgaXRlciA9IG5ldyBOb3JtYWxpemVyKG5ldyBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvcihVdGlsaXR5LnVuZXNjYXBlKHNyYykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9ybWFsaXplci5OT05FKTsKKyAgICAgICAgaW50IGluZGV4ID0gMDsKKyAgICAgICAgaW50IGNoOworICAgICAgICBVQ2hhcmFjdGVySXRlcmF0b3IgY0l0ZXIgPSAgVUNoYXJhY3Rlckl0ZXJhdG9yLmdldEluc3RhbmNlKGV4cGVjdGVkKTsKKyAgICAgICAgCisgICAgICAgIHdoaWxlICgoY2g9aXRlci5uZXh0KCkpIT0gaXRlci5ET05FKXsKKyAgICAgICAgICAgIGlmIChpbmRleCA+PSBleHBlY3RlZC5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiAiICsgICJVbmV4cGVjdGVkIGNoYXJhY3RlciAnIiArIChjaGFyKWNoCisgICAgICAgICAgICAgICAgICAgICAgICArICInICgiICsgaGV4KGNoKSArICIpIgorICAgICAgICAgICAgICAgICAgICAgICAgKyAiIGF0IGluZGV4ICIgKyBpbmRleCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbnQgd2FudCA9IFVURjE2LmNoYXJBdChleHBlY3RlZCxpbmRleCk7CisgICAgICAgICAgICBpZiAoY2ggIT0gd2FudCkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiAiICsgICJnb3QgJyIgKyAoY2hhciljaAorICAgICAgICAgICAgICAgICAgICAgICAgKyAiJyAoIiArIGhleChjaCkgKyAiKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIiBidXQgZXhwZWN0ZWQgJyIgKyB3YW50ICsgIicgKCIgKyBoZXgod2FudCkrICIpIgorICAgICAgICAgICAgICAgICAgICAgICAgKyAiIGF0IGluZGV4ICIgKyBpbmRleCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbmRleCs9ICBVVEYxNi5nZXRDaGFyQ291bnQoY2gpOworICAgICAgICB9CisgICAgICAgIGlmIChpbmRleCA8IGV4cGVjdGVkLmxlbmd0aCgpKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogIiArICAiT25seSBnb3QgIiArIGluZGV4ICsgIiBjaGFycywgZXhwZWN0ZWQgIgorICAgICAgICAgICAgKyBleHBlY3RlZC5sZW5ndGgoKSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGNJdGVyLnNldFRvTGltaXQoKTsKKyAgICAgICAgd2hpbGUoKGNoPWl0ZXIucHJldmlvdXMoKSkhPWl0ZXIuRE9ORSl7CisgICAgICAgICAgICBpbnQgd2FudCA9IGNJdGVyLnByZXZpb3VzQ29kZVBvaW50KCk7CisgICAgICAgICAgICBpZiAoY2ggIT0gd2FudCApIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogIiArICJnb3QgJyIgKyAoY2hhciljaAorICAgICAgICAgICAgICAgICAgICAgICAgKyAiJyAoIiArIGhleChjaCkgKyAiKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIiBidXQgZXhwZWN0ZWQgJyIgKyB3YW50ICsgIicgKCIgKyBoZXgod2FudCkgKyAiKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIiBhdCBpbmRleCAiICsgaW5kZXgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHB1YmxpYyB2b2lkIFRlc3REZWJ1Z0l0ZXJPbGQoKXsKKyAgICAgICAgU3RyaW5nIGlucHV0ID0gIlxcVTAwMDFEMTVFIjsKKyAgICAgICAgU3RyaW5nIGV4cGVjdGVkID0gIlx1RDgzNFx1REQ1N1x1RDgzNFx1REQ2NSI7CisgICAgICAgIFN0cmluZyBleHBlY3RlZFJldmVyc2UgPSAiXHVEODM0XHVERDY1XHVEODM0XHVERDU3IjsKKyAgICAgICAgaW50IGluZGV4ID0gMDsKKyAgICAgICAgaW50IGNoOworICAgICAgICBOb3JtYWxpemVyIGl0ZXIgPSBuZXcgTm9ybWFsaXplcihuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IoVXRpbGl0eS51bmVzY2FwZShpbnB1dCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9ybWFsaXplci5ORktDKTsKKyAgICAgICAgU3RyaW5nQnVmZmVyIGdvdCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgZm9yIChjaCA9IGl0ZXIuZmlyc3QoKTtjaCE9aXRlci5ET05FO2NoPWl0ZXIubmV4dCgpKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoaW5kZXggPj0gZXhwZWN0ZWQubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogIiArICAiVW5leHBlY3RlZCBjaGFyYWN0ZXIgJyIgKyAoY2hhciljaCArCisgICAgICAgICAgICAgICAgICAgICAgICInICgiICsgaGV4KGNoKSArICIpIiArICIgYXQgaW5kZXggIiArIGluZGV4KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGdvdC5hcHBlbmQoVUNoYXJhY3Rlci50b1N0cmluZyhjaCkpOworICAgICAgICAgICAgaW5kZXgrKzsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWV4cGVjdGVkLmVxdWFscyhnb3QudG9TdHJpbmcoKSkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogIiArICAiZ290ICciICtnb3QrICInICgiICsgaGV4KGdvdCkgKyAiKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIiBidXQgZXhwZWN0ZWQgJyIgKyBleHBlY3RlZCArICInICgiCisgICAgICAgICAgICAgICAgICAgICAgICArIGhleChleHBlY3RlZCkgKyAiKSIpOworICAgICAgICB9CisgICAgICAgIGlmIChnb3QubGVuZ3RoKCkgPCBleHBlY3RlZC5sZW5ndGgoKSkgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6ICIgKyAgIk9ubHkgZ290ICIgKyBpbmRleCArICIgY2hhcnMsIGV4cGVjdGVkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICsgZXhwZWN0ZWQubGVuZ3RoKCkpOworICAgICAgICB9CisKKyAgICAgICAgbG9nbG4oIlJldmVyc2UgSXRlcmF0aW9uXG4iKTsKKyAgICAgICAgaXRlci5zZXRJbmRleE9ubHkoaXRlci5lbmRJbmRleCgpKTsKKyAgICAgICAgZ290LnNldExlbmd0aCgwKTsKKyAgICAgICAgZm9yKGNoPWl0ZXIucHJldmlvdXMoKTtjaCE9aXRlci5ET05FO2NoPWl0ZXIucHJldmlvdXMoKSl7CisgICAgICAgICAgICBpZiAoaW5kZXggPj0gZXhwZWN0ZWQubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogIiArICAiVW5leHBlY3RlZCBjaGFyYWN0ZXIgJyIgKyAoY2hhciljaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIicgKCIgKyBoZXgoY2gpICsgIikiICsgIiBhdCBpbmRleCAiICsgaW5kZXgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZ290LmFwcGVuZChVQ2hhcmFjdGVyLnRvU3RyaW5nKGNoKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFleHBlY3RlZFJldmVyc2UuZXF1YWxzKGdvdC50b1N0cmluZygpKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiAiICsgICJnb3QgJyIgK2dvdCsgIicgKCIgKyBoZXgoZ290KSArICIpIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiBidXQgZXhwZWN0ZWQgJyIgKyBleHBlY3RlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIicgKCIgKyBoZXgoZXhwZWN0ZWQpICsgIikiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZ290Lmxlbmd0aCgpIDwgZXhwZWN0ZWQubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiAiICsgICJPbmx5IGdvdCAiICsgaW5kZXggKyAiIGNoYXJzLCBleHBlY3RlZCAiCisgICAgICAgICAgICAgICAgICAgICAgKyBleHBlY3RlZC5sZW5ndGgoKSk7CisgICAgICAgIH0KKworICAgIH0KKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJLy8gaGVscGVyIGNsYXNzIGZvciBUZXN0UHJldmlvdXNOZXh0KCkKKwkvLyBzaW1wbGUgVVRGLTMyIGNoYXJhY3RlciBpdGVyYXRvcgorCWNsYXNzIFVDaGFySXRlcmF0b3IgeworCisJICAgcHVibGljIFVDaGFySXRlcmF0b3IoaW50W10gc3JjLCBpbnQgbGVuLCBpbnQgaW5kZXgpeworCisJICAgICAgICBzPXNyYzsKKyAgICAgICAgICAgIGxlbmd0aD1sZW47CisgICAgICAgICAgICBpPWluZGV4OworICAgICAgIH0KKworCSAgICBwdWJsaWMgaW50IGN1cnJlbnQoKSB7CisJICAgICAgICBpZihpPGxlbmd0aCkgeworCSAgICAgICAgICAgIHJldHVybiBzW2ldOworCSAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAgICByZXR1cm4gLTE7CisJICAgICAgICB9CisJICAgIH0KKworCSAgICBwdWJsaWMgaW50IG5leHQoKSB7CisJICAgICAgICBpZihpPGxlbmd0aCkgeworCSAgICAgICAgICAgIHJldHVybiBzW2krK107CisJICAgICAgICB9IGVsc2UgeworCSAgICAgICAgICAgIHJldHVybiAtMTsKKwkgICAgICAgIH0KKwkgICAgfQorCisJICAgIHB1YmxpYyBpbnQgcHJldmlvdXMoKSB7CisJICAgICAgICBpZihpPjApIHsKKwkgICAgICAgICAgICByZXR1cm4gc1stLWldOworCSAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAgICByZXR1cm4gLTE7CisJICAgICAgICB9CisJICAgIH0KKworCSAgICBwdWJsaWMgaW50IGdldEluZGV4KCkgeworCSAgICAgICAgcmV0dXJuIGk7CisJICAgIH0KKworCSAgICBwcml2YXRlIGludFtdIHM7CisJICAgIHByaXZhdGUgaW50IGxlbmd0aCwgaTsKKwl9OworCXB1YmxpYyB2b2lkIFRlc3RQcmV2aW91c05leHQoKSB7CisJICAgIC8vIHNyYyBhbmQgZXhwZWN0IHN0cmluZ3MKKwkgICAgY2hhciBzcmNbXT17CisJICAgICAgICBVVEYxNi5nZXRMZWFkU3Vycm9nYXRlKDB4MmY5OTkpLCBVVEYxNi5nZXRUcmFpbFN1cnJvZ2F0ZSgweDJmOTk5KSwKKwkgICAgICAgIFVURjE2LmdldExlYWRTdXJyb2dhdGUoMHgxZDE1ZiksIFVURjE2LmdldFRyYWlsU3Vycm9nYXRlKDB4MWQxNWYpLAorCSAgICAgICAgMHhjNCwKKwkgICAgICAgIDB4MWVkMAorCSAgICB9OworCSAgICBpbnQgZXhwZWN0W109eworCSAgICAgICAgMHg4MzFkLAorCSAgICAgICAgMHgxZDE1OCwgMHgxZDE2NSwKKwkgICAgICAgIDB4NDEsIDB4MzA4LAorCSAgICAgICAgMHg0ZiwgMHgzMDIsIDB4MzAxCisJICAgIH07CisKKwkgICAgLy8gZXhwZWN0ZWQgc3JjIGluZGV4ZXMgY29ycmVzcG9uZGluZyB0byBleHBlY3QgaW5kZXhlcworCSAgICBpbnQgZXhwZWN0SW5kZXhbXT17CisJICAgICAgICAwLAorCSAgICAgICAgMiwgMiwKKwkgICAgICAgIDQsIDQsCisJICAgICAgICA1LCA1LCA1LAorCSAgICAgICAgNiAvLyBiZWhpbmQgbGFzdCBjaGFyYWN0ZXIKKwkgICAgfTsKKworCSAgICAvLyBpbml0aWFsIGluZGV4ZXMgaW50byB0aGUgc3JjIGFuZCBleHBlY3Qgc3RyaW5ncworCisJICAgIGZpbmFsIGludCBTUkNfTUlERExFPTQ7CisJICAgIGZpbmFsIGludCBFWFBFQ1RfTUlERExFPTM7CisKKworCSAgICAvLyBtb3ZlbWVudCB2ZWN0b3IKKwkgICAgLy8gLSBmb3IgcHJldmlvdXMoKSwgMCBmb3IgY3VycmVudCgpLCArIGZvciBuZXh0KCkKKwkgICAgLy8gbm90IGNvbnN0IHNvIHRoYXQgd2UgY2FuIHRlcm1pbmF0ZSBpdCBiZWxvdyBmb3IgdGhlIGVycm9yIG1lc3NhZ2UKKwkgICAgU3RyaW5nIG1vdmVzPSIwKzArMC0tMC0wLSsrKzAtLSsrKysrKyswLS0tLS0tLS0iOworCisJICAgIC8vIGl0ZXJhdG9ycworCSAgICBOb3JtYWxpemVyIGl0ZXIgPSBuZXcgTm9ybWFsaXplcihuZXcgU3RyaW5nKHNyYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3JtYWxpemVyLk5GRCk7CisJICAgIFVDaGFySXRlcmF0b3IgaXRlcjMyID0gbmV3IFVDaGFySXRlcmF0b3IoZXhwZWN0LCBleHBlY3QubGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWFBFQ1RfTUlERExFKTsKKworCSAgICBpbnQgYzEsIGMyOworCSAgICBjaGFyIG07CisKKwkgICAgLy8gaW5pdGlhbGx5IHNldCB0aGUgaW5kZXhlcyBpbnRvIHRoZSBtaWRkbGUgb2YgdGhlIHN0cmluZ3MKKwkgICAgaXRlci5zZXRJbmRleE9ubHkoU1JDX01JRERMRSk7CisKKwkgICAgLy8gbW92ZSBhcm91bmQgYW5kIGNvbXBhcmUgdGhlIGl0ZXJhdGlvbiBjb2RlIHBvaW50cyB3aXRoCisJICAgIC8vIHRoZSBleHBlY3RlZCBvbmVzCisJICAgIGludCBtb3Zlc0luZGV4ID0wOworCSAgICB3aGlsZShtb3Zlc0luZGV4PG1vdmVzLmxlbmd0aCgpKSB7CisgICAgICAgICAgICBtPW1vdmVzLmNoYXJBdChtb3Zlc0luZGV4KyspOworCSAgICAgICAgaWYobT09Jy0nKSB7CisJICAgICAgICAgICAgYzE9aXRlci5wcmV2aW91cygpOworCSAgICAgICAgICAgIGMyPWl0ZXIzMi5wcmV2aW91cygpOworCSAgICAgICAgfSBlbHNlIGlmKG09PScwJykgeworCSAgICAgICAgICAgIGMxPWl0ZXIuY3VycmVudCgpOworCSAgICAgICAgICAgIGMyPWl0ZXIzMi5jdXJyZW50KCk7CisJICAgICAgICB9IGVsc2UgLyogbT09JysnICovIHsKKwkgICAgICAgICAgICBjMT1pdGVyLm5leHQoKTsKKwkgICAgICAgICAgICBjMj1pdGVyMzIubmV4dCgpOworCSAgICAgICAgfQorCisJICAgICAgICAvLyBjb21wYXJlIHJlc3VsdHMKKwkgICAgICAgIGlmKGMxIT1jMikgeworCSAgICAgICAgICAgIC8vIGNvcHkgdGhlIG1vdmVzIHVudGlsIHRoZSBjdXJyZW50IChtKSBtb3ZlLCBhbmQgdGVybWluYXRlCisJICAgICAgICAgICAgU3RyaW5nIGhpc3RvcnkgPSBtb3Zlcy5zdWJzdHJpbmcoMCxtb3Zlc0luZGV4KTsKKwkgICAgICAgICAgICBlcnJsbigiZXJyb3I6IG1pc21hdGNoIGluIE5vcm1hbGl6ZXIgaXRlcmF0aW9uIGF0ICIraGlzdG9yeSsiOiAiCisJICAgICAgICAgICAgICAgICAgKyJnb3QgYzE9ICIgKyBoZXgoYzEpICsiICE9IGV4cGVjdGVkIGMyPSAiKyBoZXgoYzIpKTsKKwkgICAgICAgICAgICBicmVhazsKKwkgICAgICAgIH0KKworCSAgICAgICAgLy8gY29tcGFyZSBpbmRleGVzCisJICAgICAgICBpZihpdGVyLmdldEluZGV4KCkhPWV4cGVjdEluZGV4W2l0ZXIzMi5nZXRJbmRleCgpXSkgeworCSAgICAgICAgICAgIC8vIGNvcHkgdGhlIG1vdmVzIHVudGlsIHRoZSBjdXJyZW50IChtKSBtb3ZlLCBhbmQgdGVybWluYXRlCisJICAgICAgICAgICAgU3RyaW5nIGhpc3RvcnkgPSBtb3Zlcy5zdWJzdHJpbmcoMCxtb3Zlc0luZGV4KTsKKwkgICAgICAgICAgICBlcnJsbigiZXJyb3I6IGluZGV4IG1pc21hdGNoIGluIE5vcm1hbGl6ZXIgaXRlcmF0aW9uIGF0ICIKKyAgICAgICAgICAgICAgICAgICAgICAraGlzdG9yeSsgIiA6ICIrICJOb3JtYWxpemVyIGluZGV4ICIgK2l0ZXIuZ2V0SW5kZXgoKQorICAgICAgICAgICAgICAgICAgICAgICsiIGV4cGVjdGVkICIrIGV4cGVjdEluZGV4W2l0ZXIzMi5nZXRJbmRleCgpXSk7CisJICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICB9CisJICAgIH0KKwl9CisgICAgLy8gT25seSBpbiBJQ1U0agorICAgIHB1YmxpYyB2b2lkIFRlc3RQcmV2aW91c05leHRKQ0koKSB7CisgICAgICAgIC8vIHNyYyBhbmQgZXhwZWN0IHN0cmluZ3MKKyAgICAgICAgY2hhciBzcmNbXT17CisgICAgICAgICAgICBVVEYxNi5nZXRMZWFkU3Vycm9nYXRlKDB4MmY5OTkpLCBVVEYxNi5nZXRUcmFpbFN1cnJvZ2F0ZSgweDJmOTk5KSwKKyAgICAgICAgICAgIFVURjE2LmdldExlYWRTdXJyb2dhdGUoMHgxZDE1ZiksIFVURjE2LmdldFRyYWlsU3Vycm9nYXRlKDB4MWQxNWYpLAorICAgICAgICAgICAgMHhjNCwKKyAgICAgICAgICAgIDB4MWVkMAorICAgICAgICB9OworICAgICAgICBpbnQgZXhwZWN0W109eworICAgICAgICAgICAgMHg4MzFkLAorICAgICAgICAgICAgMHgxZDE1OCwgMHgxZDE2NSwKKyAgICAgICAgICAgIDB4NDEsIDB4MzA4LAorICAgICAgICAgICAgMHg0ZiwgMHgzMDIsIDB4MzAxCisgICAgICAgIH07CisKKyAgICAgICAgLy8gZXhwZWN0ZWQgc3JjIGluZGV4ZXMgY29ycmVzcG9uZGluZyB0byBleHBlY3QgaW5kZXhlcworICAgICAgICBpbnQgZXhwZWN0SW5kZXhbXT17CisgICAgICAgICAgICAwLAorICAgICAgICAgICAgMiwgMiwKKyAgICAgICAgICAgIDQsIDQsCisgICAgICAgICAgICA1LCA1LCA1LAorICAgICAgICAgICAgNiAvLyBiZWhpbmQgbGFzdCBjaGFyYWN0ZXIKKyAgICAgICAgfTsKKworICAgICAgICAvLyBpbml0aWFsIGluZGV4ZXMgaW50byB0aGUgc3JjIGFuZCBleHBlY3Qgc3RyaW5ncworCisgICAgICAgIGZpbmFsIGludCBTUkNfTUlERExFPTQ7CisgICAgICAgIGZpbmFsIGludCBFWFBFQ1RfTUlERExFPTM7CisKKworICAgICAgICAvLyBtb3ZlbWVudCB2ZWN0b3IKKyAgICAgICAgLy8gLSBmb3IgcHJldmlvdXMoKSwgMCBmb3IgY3VycmVudCgpLCArIGZvciBuZXh0KCkKKyAgICAgICAgLy8gbm90IGNvbnN0IHNvIHRoYXQgd2UgY2FuIHRlcm1pbmF0ZSBpdCBiZWxvdyBmb3IgdGhlIGVycm9yIG1lc3NhZ2UKKyAgICAgICAgU3RyaW5nIG1vdmVzPSIwKzArMC0tMC0wLSsrKzAtLSsrKysrKyswLS0tLS0tLS0iOworCisgICAgICAgIC8vIGl0ZXJhdG9ycworICAgICAgICBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvciB0ZXh0ID0gbmV3IFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yKG5ldyBTdHJpbmcoc3JjKSk7CisgICAgICAgIE5vcm1hbGl6ZXIgaXRlciA9IG5ldyBOb3JtYWxpemVyKHRleHQsTm9ybWFsaXplci5ORkQpOworICAgICAgICBVQ2hhckl0ZXJhdG9yIGl0ZXIzMiA9IG5ldyBVQ2hhckl0ZXJhdG9yKGV4cGVjdCwgZXhwZWN0Lmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhQRUNUX01JRERMRSk7CisKKyAgICAgICAgaW50IGMxLCBjMjsKKyAgICAgICAgY2hhciBtOworCisgICAgICAgIC8vIGluaXRpYWxseSBzZXQgdGhlIGluZGV4ZXMgaW50byB0aGUgbWlkZGxlIG9mIHRoZSBzdHJpbmdzCisgICAgICAgIGl0ZXIuc2V0SW5kZXhPbmx5KFNSQ19NSURETEUpOworCisgICAgICAgIC8vIG1vdmUgYXJvdW5kIGFuZCBjb21wYXJlIHRoZSBpdGVyYXRpb24gY29kZSBwb2ludHMgd2l0aAorICAgICAgICAvLyB0aGUgZXhwZWN0ZWQgb25lcworICAgICAgICBpbnQgbW92ZXNJbmRleCA9MDsKKyAgICAgICAgd2hpbGUobW92ZXNJbmRleDxtb3Zlcy5sZW5ndGgoKSkgeworICAgICAgICAgICAgbT1tb3Zlcy5jaGFyQXQobW92ZXNJbmRleCsrKTsKKyAgICAgICAgICAgIGlmKG09PSctJykgeworICAgICAgICAgICAgICAgIGMxPWl0ZXIucHJldmlvdXMoKTsKKyAgICAgICAgICAgICAgICBjMj1pdGVyMzIucHJldmlvdXMoKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZihtPT0nMCcpIHsKKyAgICAgICAgICAgICAgICBjMT1pdGVyLmN1cnJlbnQoKTsKKyAgICAgICAgICAgICAgICBjMj1pdGVyMzIuY3VycmVudCgpOworICAgICAgICAgICAgfSBlbHNlIC8qIG09PScrJyAqLyB7CisgICAgICAgICAgICAgICAgYzE9aXRlci5uZXh0KCk7CisgICAgICAgICAgICAgICAgYzI9aXRlcjMyLm5leHQoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gY29tcGFyZSByZXN1bHRzCisgICAgICAgICAgICBpZihjMSE9YzIpIHsKKyAgICAgICAgICAgICAgICAvLyBjb3B5IHRoZSBtb3ZlcyB1bnRpbCB0aGUgY3VycmVudCAobSkgbW92ZSwgYW5kIHRlcm1pbmF0ZQorICAgICAgICAgICAgICAgIFN0cmluZyBoaXN0b3J5ID0gbW92ZXMuc3Vic3RyaW5nKDAsbW92ZXNJbmRleCk7CisgICAgICAgICAgICAgICAgZXJybG4oImVycm9yOiBtaXNtYXRjaCBpbiBOb3JtYWxpemVyIGl0ZXJhdGlvbiBhdCAiK2hpc3RvcnkrIjogIgorICAgICAgICAgICAgICAgICAgICAgICsiZ290IGMxPSAiICsgaGV4KGMxKSArIiAhPSBleHBlY3RlZCBjMj0gIisgaGV4KGMyKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIGNvbXBhcmUgaW5kZXhlcworICAgICAgICAgICAgaWYoaXRlci5nZXRJbmRleCgpIT1leHBlY3RJbmRleFtpdGVyMzIuZ2V0SW5kZXgoKV0pIHsKKyAgICAgICAgICAgICAgICAvLyBjb3B5IHRoZSBtb3ZlcyB1bnRpbCB0aGUgY3VycmVudCAobSkgbW92ZSwgYW5kIHRlcm1pbmF0ZQorICAgICAgICAgICAgICAgIFN0cmluZyBoaXN0b3J5ID0gbW92ZXMuc3Vic3RyaW5nKDAsbW92ZXNJbmRleCk7CisgICAgICAgICAgICAgICAgZXJybG4oImVycm9yOiBpbmRleCBtaXNtYXRjaCBpbiBOb3JtYWxpemVyIGl0ZXJhdGlvbiBhdCAiCisgICAgICAgICAgICAgICAgICAgICAgK2hpc3RvcnkrICIgOiAiKyAiTm9ybWFsaXplciBpbmRleCAiICtpdGVyLmdldEluZGV4KCkKKyAgICAgICAgICAgICAgICAgICAgICArIiBleHBlY3RlZCAiKyBleHBlY3RJbmRleFtpdGVyMzIuZ2V0SW5kZXgoKV0pOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3REZXByZWNhdGVkQVBJKCl7CisgICAgICAgICAvLyBpbnN0YW50aWF0ZSBhIE5vcm1hbGl6ZXIgZnJvbSBhIENoYXJhY3Rlckl0ZXJhdG9yCisgICAgICAgIFN0cmluZyBzPVV0aWxpdHkudW5lc2NhcGUoImFcdTAzMDhcdWFjMDBcXFUwMDAyZjgwMCIpOworICAgICAgICAvLyBtYWtlIHMgYSBiaXQgbG9uZ2VyIGFuZCBtb3JlIGludGVyZXN0aW5nCisgICAgICAgIGphdmEudGV4dC5DaGFyYWN0ZXJJdGVyYXRvciBpdGVyID0gbmV3IFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yKHMrcyk7CisgICAgICAgIC8vdGVzdCBkZXByZWNhdGVkIGNvbnN0cnVjdG9ycworICAgICAgICBOb3JtYWxpemVyIG5vcm0gPSBuZXcgTm9ybWFsaXplcihpdGVyLCBOb3JtYWxpemVyLk5GQywwKTsKKyAgICAgICAgTm9ybWFsaXplciBub3JtMiA9IG5ldyBOb3JtYWxpemVyKHMsTm9ybWFsaXplci5ORkMsMCk7CisgICAgICAgIGlmKG5vcm0ubmV4dCgpIT0weGU0KSB7CisgICAgICAgICAgICBlcnJsbigiZXJyb3IgaW4gTm9ybWFsaXplcihDaGFyYWN0ZXJJdGVyYXRvcikubmV4dCgpIik7CisgICAgICAgIH0gICAgICAgCisgICAgICAgIC8vIHRlc3QgY2xvbmUoKSwgPT0sIGFuZCBoYXNoQ29kZSgpCisgICAgICAgIE5vcm1hbGl6ZXIgY2xvbmU9KE5vcm1hbGl6ZXIpbm9ybS5jbG9uZSgpOworICAgICAgICBpZihjbG9uZS5nZXRCZWdpbkluZGV4KCkhPSBub3JtLmdldEJlZ2luSW5kZXgoKSl7CisgICAgICAgICAgIGVycmxuKCJlcnJvciBpbiBOb3JtYWxpemVyLmdldEJlZ2luSW5kZXgoKSIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZihjbG9uZS5nZXRFbmRJbmRleCgpIT0gbm9ybS5nZXRFbmRJbmRleCgpKXsKKyAgICAgICAgICAgZXJybG4oImVycm9yIGluIE5vcm1hbGl6ZXIuZ2V0RW5kSW5kZXgoKSIpOworICAgICAgICB9CisgICAgICAgIC8vIHRlc3Qgc2V0T3B0aW9uKCkgYW5kIGdldE9wdGlvbigpCisgICAgICAgIGNsb25lLnNldE9wdGlvbigweGFhMDAwMCwgdHJ1ZSk7CisgICAgICAgIGNsb25lLnNldE9wdGlvbigweDIwMDAwLCBmYWxzZSk7CisgICAgICAgIGlmKGNsb25lLmdldE9wdGlvbigweDg4MDAwMCkgPT0wfHwgY2xvbmUuZ2V0T3B0aW9uKDB4MjAwMDApPT0xKSB7CisgICAgICAgICAgIGVycmxuKCJlcnJvciBpbiBOb3JtYWxpemVyOjpzZXRPcHRpb24oKSBvciBOb3JtYWxpemVyOjpnZXRPcHRpb24oKSIpOworICAgICAgICB9CisgICAgICAgIC8vdGVzdCBkZXByZWNhdGVkIG5vcm1hbGl6ZSBtZXRob2QKKyAgICAgICAgTm9ybWFsaXplci5ub3JtYWxpemUocyxOb3JtYWxpemVyLk5GQywwKTsKKyAgICAgICAgLy90ZXN0IGRlcHJlY2F0ZWQgY29tcG9zZSBtZXRob2QKKyAgICAgICAgTm9ybWFsaXplci5jb21wb3NlKHMsZmFsc2UsMCk7CisgICAgICAgIC8vdGVzdCBkZXByZWNhdGVkIGRlY29tcG9zZSBtZXRob2QKKyAgICAgICAgTm9ybWFsaXplci5kZWNvbXBvc2UocyxmYWxzZSwwKTsKKworICAgIH0KKworCS8vIHRlc3QgQVBJcyB0aGF0IGFyZSBub3Qgb3RoZXJ3aXNlIHVzZWQgLSBpbXByb3ZlIHRlc3QgY292ZXJhZ2UKKwlwdWJsaWMgdm9pZCBUZXN0Tm9ybWFsaXplckFQSSgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICB0cnl7CisgICAgICAgICAgICAvLyBpbnN0YW50aWF0ZSBhIE5vcm1hbGl6ZXIgZnJvbSBhIENoYXJhY3Rlckl0ZXJhdG9yCisgICAgICAgICAgICBTdHJpbmcgcz1VdGlsaXR5LnVuZXNjYXBlKCJhXHUwMzA4XHVhYzAwXFxVMDAwMmY4MDAiKTsKKyAgICAgICAgICAgIC8vIG1ha2UgcyBhIGJpdCBsb25nZXIgYW5kIG1vcmUgaW50ZXJlc3RpbmcKKyAgICAgICAgICAgIFVDaGFyYWN0ZXJJdGVyYXRvciBpdGVyID0gVUNoYXJhY3Rlckl0ZXJhdG9yLmdldEluc3RhbmNlKHMrcyk7CisgICAgICAgICAgICBOb3JtYWxpemVyIG5vcm0gPSBuZXcgTm9ybWFsaXplcihpdGVyLCBOb3JtYWxpemVyLk5GQyk7CisgICAgICAgICAgICBpZihub3JtLm5leHQoKSE9MHhlNCkgeworICAgICAgICAgICAgICAgIGVycmxuKCJlcnJvciBpbiBOb3JtYWxpemVyKENoYXJhY3Rlckl0ZXJhdG9yKS5uZXh0KCkiKTsKKyAgICAgICAgICAgIH0gICAKKyAgICAKKyAgICAgICAgICAgIC8vIHRlc3QgY2xvbmUoKSwgPT0sIGFuZCBoYXNoQ29kZSgpCisgICAgICAgICAgICBOb3JtYWxpemVyIGNsb25lPShOb3JtYWxpemVyKW5vcm0uY2xvbmUoKTsKKyAgICAgICAgICAgIGlmKGNsb25lLmVxdWFscyhub3JtKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJlcnJvciBpbiBOb3JtYWxpemVyKE5vcm1hbGl6ZXIoQ2hhcmFjdGVySXRlcmF0b3IpKS5jbG9uZSgpIT1ub3JtIik7CisgICAgICAgICAgICB9CisgICAgCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmKGNsb25lLmdldExlbmd0aCgpIT0gbm9ybS5nZXRMZW5ndGgoKSl7CisgICAgICAgICAgICAgICBlcnJsbigiZXJyb3IgaW4gTm9ybWFsaXplci5nZXRCZWdpbkluZGV4KCkiKTsKKyAgICAgICAgICAgIH0gCisgICAgICAgICAgICAvLyBjbG9uZSBtdXN0IGhhdmUgdGhlIHNhbWUgaGFzaENvZGUoKQorICAgICAgICAgICAgLy9pZihjbG9uZS5oYXNoQ29kZSgpIT1ub3JtLmhhc2hDb2RlKCkpIHsKKyAgICAgICAgICAgIC8vICAgIGVycmxuKCJlcnJvciBpbiBOb3JtYWxpemVyKE5vcm1hbGl6ZXIoQ2hhcmFjdGVySXRlcmF0b3IpKS5jbG9uZSgpLmhhc2hDb2RlKCkhPWNvcHkuaGFzaENvZGUoKSIpOworICAgICAgICAgICAgLy99CisgICAgICAgICAgICBpZihjbG9uZS5uZXh0KCkhPTB4YWMwMCkgeworICAgICAgICAgICAgICAgIGVycmxuKCJlcnJvciBpbiBOb3JtYWxpemVyKE5vcm1hbGl6ZXIoQ2hhcmFjdGVySXRlcmF0b3IpKS5uZXh0KCkiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGludCBjaCA9IGNsb25lLm5leHQoKTsKKyAgICAgICAgICAgIGlmKGNoIT0weDRlM2QpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiZXJyb3IgaW4gTm9ybWFsaXplcihOb3JtYWxpemVyKENoYXJhY3Rlckl0ZXJhdG9yKSkuY2xvbmUoKS5uZXh0KCkiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIHBvc2l0aW9uIGNoYW5nZWQsIG11c3QgY2hhbmdlIGhhc2hDb2RlKCkKKyAgICAgICAgICAgIGlmKGNsb25lLmhhc2hDb2RlKCk9PW5vcm0uaGFzaENvZGUoKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJlcnJvciBpbiBOb3JtYWxpemVyKE5vcm1hbGl6ZXIoQ2hhcmFjdGVySXRlcmF0b3IpKS5jbG9uZSgpLm5leHQoKS5oYXNoQ29kZSgpPT1jb3B5Lmhhc2hDb2RlKCkiKTsKKyAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgIC8vIHRlc3QgY29tcG9zZSgpIGFuZCBkZWNvbXBvc2UoKQorICAgICAgICAgICAgU3RyaW5nQnVmZmVyIHRlbDsKKyAgICAgICAgICAgIFN0cmluZyBuZmtjLCBuZmtkOworICAgICAgICAgICAgdGVsPW5ldyBTdHJpbmdCdWZmZXIoIlx1MjEyMVx1MjEyMVx1MjEyMVx1MjEyMVx1MjEyMVx1MjEyMVx1MjEyMVx1MjEyMVx1MjEyMVx1MjEyMSIpOworICAgICAgICAgICAgdGVsLmluc2VydCgxLChjaGFyKTB4MDMwMSk7CisgICAgCisgICAgICAgICAgICBuZmtjPU5vcm1hbGl6ZXIuY29tcG9zZSh0ZWwudG9TdHJpbmcoKSwgdHJ1ZSk7CisgICAgICAgICAgICBuZmtkPU5vcm1hbGl6ZXIuZGVjb21wb3NlKHRlbC50b1N0cmluZygpLCB0cnVlKTsKKyAgICAgICAgICAgIGlmKAorICAgICAgICAgICAgICAgICFuZmtjLmVxdWFscyhVdGlsaXR5LnVuZXNjYXBlKCJURVx1MDEzOVRFTFRFTFRFTFRFTFRFTFRFTFRFTFRFTFRFTCIpKXx8CisgICAgICAgICAgICAgICAgIW5ma2QuZXF1YWxzKFV0aWxpdHkudW5lc2NhcGUoIlRFTFx1MDMwMVRFTFRFTFRFTFRFTFRFTFRFTFRFTFRFTFRFTCIpKQorICAgICAgICAgICAgKSB7CisgICAgICAgICAgICAgICAgZXJybG4oImVycm9yIGluIE5vcm1hbGl6ZXI6OihkZSljb21wb3NlKCk6IHdyb25nIHJlc3VsdChzKSIpOworICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgLy8gdGVzdCBzZXRJbmRleCgpCisgICAgICAgICAgICBjaD1ub3JtLnNldEluZGV4KDMpOworICAgICAgICAgICAgaWYoY2ghPTB4NGUzZCkgeworICAgICAgICAgICAgICAgIGVycmxuKCJlcnJvciBpbiBOb3JtYWxpemVyKENoYXJhY3Rlckl0ZXJhdG9yKS5zZXRJbmRleCgzKSIpOworICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgLy8gdGVzdCBzZXRUZXh0KENoYXJhY3Rlckl0ZXJhdG9yKSBhbmQgZ2V0VGV4dCgpCisgICAgICAgICAgICBTdHJpbmcgb3V0LCBvdXQyOworICAgICAgICAgICAgY2xvbmUuc2V0VGV4dChpdGVyKTsKKyAgICAKKyAgICAgICAgICAgIG91dCA9IGNsb25lLmdldFRleHQoKTsKKyAgICAgICAgICAgIG91dDIgPSBpdGVyLmdldFRleHQoKTsKKyAgICAgICAgICAgIGlmKCAhb3V0LmVxdWFscyhvdXQyKSB8fAorICAgICAgICAgICAgICAgIGNsb25lLnN0YXJ0SW5kZXgoKSE9MHx8CisgICAgICAgICAgICAgICAgY2xvbmUuZW5kSW5kZXgoKSE9aXRlci5nZXRMZW5ndGgoKQorICAgICAgICAgICAgKSB7CisgICAgICAgICAgICAgICAgZXJybG4oImVycm9yIGluIE5vcm1hbGl6ZXI6OnNldFRleHQoKSBvciBOb3JtYWxpemVyOjpnZXRUZXh0KCkiKTsKKyAgICAgICAgICAgIH0KKyAgICAgCisgICAgICAgICAgICBjaGFyW10gZmlsbEluMSA9IG5ldyBjaGFyW2Nsb25lLmdldExlbmd0aCgpXTsKKyAgICAgICAgICAgIGNoYXJbXSBmaWxsSW4yID0gbmV3IGNoYXJbaXRlci5nZXRMZW5ndGgoKV07CisgICAgICAgICAgICBpbnQgbGVuID0gY2xvbmUuZ2V0VGV4dChmaWxsSW4xKTsKKyAgICAgICAgICAgIGl0ZXIuZ2V0VGV4dChmaWxsSW4yLDApOworICAgICAgICAgICAgaWYoIVV0aWxpdHkuYXJyYXlSZWdpb25NYXRjaGVzKGZpbGxJbjEsMCxmaWxsSW4yLDAsbGVuKSl7CisgICAgICAgICAgICAgICAgZXJybG4oImVycm9yIGluIE5vcm1hbGl6ZXIuZ2V0VGV4dCgpLiBOb3JtYWxpemVyOiAiKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVdGlsaXR5LmhleChuZXcgU3RyaW5nKGZpbGxJbjEpKSsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgSXRlcjogIiArIFV0aWxpdHkuaGV4KG5ldyBTdHJpbmcoZmlsbEluMikpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgY2xvbmUuc2V0VGV4dChmaWxsSW4xKTsKKyAgICAgICAgICAgIGxlbiA9IGNsb25lLmdldFRleHQoZmlsbEluMik7CisgICAgICAgICAgICBpZighVXRpbGl0eS5hcnJheVJlZ2lvbk1hdGNoZXMoZmlsbEluMSwwLGZpbGxJbjIsMCxsZW4pKXsKKyAgICAgICAgICAgICAgICBlcnJsbigiZXJyb3IgaW4gTm9ybWFsaXplci5zZXRUZXh0KCkgb3IgTm9ybWFsaXplci5nZXRUZXh0KCkiKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVdGlsaXR5LmhleChuZXcgU3RyaW5nKGZpbGxJbjEpKSsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgSXRlcjogIiArIFV0aWxpdHkuaGV4KG5ldyBTdHJpbmcoZmlsbEluMikpKTsKKyAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgIC8vIHRlc3Qgc2V0VGV4dChVQ2hhciAqKSwgZ2V0VU1vZGUoKSBhbmQgc2V0TW9kZSgpCisgICAgICAgICAgICBjbG9uZS5zZXRUZXh0KHMpOworICAgICAgICAgICAgY2xvbmUuc2V0SW5kZXhPbmx5KDEpOworICAgICAgICAgICAgY2xvbmUuc2V0TW9kZShOb3JtYWxpemVyLk5GRCk7CisgICAgICAgICAgICBpZihjbG9uZS5nZXRNb2RlKCkhPU5vcm1hbGl6ZXIuTkZEKSB7CisgICAgICAgICAgICAgICAgZXJybG4oImVycm9yIGluIE5vcm1hbGl6ZXI6OnNldE1vZGUoKSBvciBOb3JtYWxpemVyOjpnZXRNb2RlKCkiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmKGNsb25lLm5leHQoKSE9MHgzMDggfHwgY2xvbmUubmV4dCgpIT0weDExMDApIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiZXJyb3IgaW4gTm9ybWFsaXplcjo6c2V0VGV4dCgpIG9yIE5vcm1hbGl6ZXI6OnNldE1vZGUoKSIpOworICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgLy8gdGVzdCBsYXN0KCkvcHJldmlvdXMoKSB3aXRoIGFuIGludGVybmFsIGJ1ZmZlciBvdmVyZmxvdworICAgICAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZiA9IG5ldyBTdHJpbmdCdWZmZXIoImFhYWFhYWFhYWEiKTsKKyAgICAgICAgICAgIGJ1Zi5zZXRDaGFyQXQoMTAtMSwnXHUwMzA4Jyk7CisgICAgICAgICAgICBjbG9uZS5zZXRUZXh0KGJ1Zik7CisgICAgICAgICAgICBpZihjbG9uZS5sYXN0KCkhPTB4MzA4KSB7CisgICAgICAgICAgICAgICAgZXJybG4oImVycm9yIGluIE5vcm1hbGl6ZXIoMTAqVSswMzA4KS5sYXN0KCkiKTsKKyAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgIC8vIHRlc3QgVU5PUk1fTk9ORQorICAgICAgICAgICAgbm9ybS5zZXRNb2RlKE5vcm1hbGl6ZXIuTk9ORSk7CisgICAgICAgICAgICBpZihub3JtLmZpcnN0KCkhPTB4NjEgfHwgbm9ybS5uZXh0KCkhPTB4MzA4IHx8IG5vcm0ubGFzdCgpIT0weDJmODAwKSB7CisgICAgICAgICAgICAgICAgZXJybG4oImVycm9yIGluIE5vcm1hbGl6ZXIoVU5PUk1fTk9ORSkuZmlyc3QoKS9uZXh0KCkvbGFzdCgpIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBvdXQ9Tm9ybWFsaXplci5ub3JtYWxpemUocywgTm9ybWFsaXplci5OT05FKTsKKyAgICAgICAgICAgIGlmKCFvdXQuZXF1YWxzKHMpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oImVycm9yIGluIE5vcm1hbGl6ZXI6Om5vcm1hbGl6ZShVTk9STV9OT05FKSIpOworICAgICAgICAgICAgfQorICAgICAgICB9Y2F0Y2goRXhjZXB0aW9uIGUpeworICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAgICAgfQorCX0KKworCXB1YmxpYyB2b2lkIFRlc3RDb25jYXRlbmF0ZSgpIHsKKworCSAgICBPYmplY3RbXVtdY2FzZXM9bmV3IE9iamVjdFtdW117CisJICAgICAgICAvKiBtb2RlLCBsZWZ0LCByaWdodCwgcmVzdWx0ICovCisJICAgICAgICB7CisJICAgICAgICAgICAgTm9ybWFsaXplci5ORkMsCisJICAgICAgICAgICAgInJlIiwKKwkgICAgICAgICAgICAiXHUwMzAxc3VtXHUwMGU5IiwKKwkgICAgICAgICAgICAiclx1MDBlOXN1bVx1MDBlOSIKKwkgICAgICAgIH0sCisJICAgICAgICB7CisJICAgICAgICAgICAgTm9ybWFsaXplci5ORkMsCisJICAgICAgICAgICAgImFcdTExMDAiLAorCSAgICAgICAgICAgICJcdTExNjFiY2RlZmdoaWprIiwKKwkgICAgICAgICAgICAiYVx1YWMwMGJjZGVmZ2hpamsiCisJICAgICAgICB9LAorCSAgICAgICAgLyogIyMjIFRPRE86IGFkZCBtb3JlIGludGVyZXN0aW5nIGNhc2VzICovCisJICAgICAgICB7CisJICAgICAgICAgICAgTm9ybWFsaXplci5ORkQsCisJICAgICAgICAgICAgIlx1MDM0MFx1MDM0MVx1MDM0M1x1MDM0NFx1MDM3NFx1MDM3RVx1MDM4N1x1MDk1OCIgKworCSAgICAgICAgICAgICJcdTA5NTlcdTA5NUFcdTA5NUJcdTA5NUNcdTA5NURcdTA5NUVcdTA5NUZcdTA5REMiICsKKwkgICAgICAgICAgICAiXHUwOUREXHUwOURGXHUwQTMzXHUwQTM2XHUwQTU5XHUwQTVBXHUwQTVCXHUwQTVFIiArCisJICAgICAgICAgICAgIlx1MEI1Q1x1MEI1RFx1MEY0M1x1MEY0RFx1MEY1Mlx1MEY1N1x1MEY1Q1x1MEY2OSIgKworCSAgICAgICAgICAgICJcdTBGNzNcdTBGNzVcdTBGNzZcdTBGNzhcdTBGODFcdTBGOTNcdTBGOURcdTBGQTIiICsKKwkgICAgICAgICAgICAiXHUwRkE3XHUwRkFDXHUwRkI5XHUxRjcxXHUxRjczXHUxRjc1XHUxRjc3XHUxRjc5IiArCisJICAgICAgICAgICAgIlx1MUY3Qlx1MUY3RFx1MUZCQlx1MUZCRVx1MUZDOVx1MUZDQlx1MUZEM1x1MUZEQiIsCisKKwkgICAgICAgICAgICAiXHUxRkUzXHUxRkVCXHUxRkVFXHUxRkVGXHUxRkY5XHUxRkZCXHUxRkZEXHUyMDAwIiArCisJICAgICAgICAgICAgIlx1MjAwMVx1MjEyNlx1MjEyQVx1MjEyQlx1MjMyOVx1MjMyQVx1RjkwMFx1RkExMCIgKworCSAgICAgICAgICAgICJcdUZBMTJcdUZBMTVcdUZBMjBcdUZBMjJcdUZBMjVcdUZBMjZcdUZBMkFcdUZCMUYiICsKKwkgICAgICAgICAgICAiXHVGQjJBXHVGQjJCXHVGQjJDXHVGQjJEXHVGQjJFXHVGQjJGXHVGQjMwXHVGQjMxIiArCisJICAgICAgICAgICAgIlx1RkIzMlx1RkIzM1x1RkIzNFx1RkIzNVx1RkIzNlx1RkIzOFx1RkIzOVx1RkIzQSIgKworCSAgICAgICAgICAgICJcdUZCM0JcdUZCM0NcdUZCM0VcdUZCNDBcdUZCNDFcdUZCNDNcdUZCNDRcdUZCNDYiICsKKwkgICAgICAgICAgICAiXHVGQjQ3XHVGQjQ4XHVGQjQ5XHVGQjRBXHVGQjRCXHVGQjRDXHVGQjREXHVGQjRFIiwKKworCSAgICAgICAgICAgICJcdTAzNDBcdTAzNDFcdTAzNDNcdTAzNDRcdTAzNzRcdTAzN0VcdTAzODdcdTA5NTgiICsKKwkgICAgICAgICAgICAiXHUwOTU5XHUwOTVBXHUwOTVCXHUwOTVDXHUwOTVEXHUwOTVFXHUwOTVGXHUwOURDIiArCisJICAgICAgICAgICAgIlx1MDlERFx1MDlERlx1MEEzM1x1MEEzNlx1MEE1OVx1MEE1QVx1MEE1Qlx1MEE1RSIgKworCSAgICAgICAgICAgICJcdTBCNUNcdTBCNURcdTBGNDNcdTBGNERcdTBGNTJcdTBGNTdcdTBGNUNcdTBGNjkiICsKKwkgICAgICAgICAgICAiXHUwRjczXHUwRjc1XHUwRjc2XHUwRjc4XHUwRjgxXHUwRjkzXHUwRjlEXHUwRkEyIiArCisJICAgICAgICAgICAgIlx1MEZBN1x1MEZBQ1x1MEZCOVx1MUY3MVx1MUY3M1x1MUY3NVx1MUY3N1x1MUY3OSIgKworCSAgICAgICAgICAgICJcdTFGN0JcdTFGN0RcdTFGQkJcdTFGQkVcdTFGQzlcdTFGQ0JcdTFGRDNcdTAzOTkiICsKKwkgICAgICAgICAgICAiXHUwMzAxXHUwM0M1XHUwMzA4XHUwMzAxXHUxRkVCXHUxRkVFXHUxRkVGXHUxRkY5IiArCisJICAgICAgICAgICAgIlx1MUZGQlx1MUZGRFx1MjAwMFx1MjAwMVx1MjEyNlx1MjEyQVx1MjEyQlx1MjMyOSIgKworCSAgICAgICAgICAgICJcdTIzMkFcdUY5MDBcdUZBMTBcdUZBMTJcdUZBMTVcdUZBMjBcdUZBMjJcdUZBMjUiICsKKwkgICAgICAgICAgICAiXHVGQTI2XHVGQTJBXHVGQjFGXHVGQjJBXHVGQjJCXHVGQjJDXHVGQjJEXHVGQjJFIiArCisJICAgICAgICAgICAgIlx1RkIyRlx1RkIzMFx1RkIzMVx1RkIzMlx1RkIzM1x1RkIzNFx1RkIzNVx1RkIzNiIgKworCSAgICAgICAgICAgICJcdUZCMzhcdUZCMzlcdUZCM0FcdUZCM0JcdUZCM0NcdUZCM0VcdUZCNDBcdUZCNDEiICsKKwkgICAgICAgICAgICAiXHVGQjQzXHVGQjQ0XHVGQjQ2XHVGQjQ3XHVGQjQ4XHVGQjQ5XHVGQjRBXHVGQjRCIiArCisJICAgICAgICAgICAgIlx1RkI0Q1x1RkI0RFx1RkI0RSIKKwkgICAgICAgIH0KKwkgICAgfTsKKworCSAgICBTdHJpbmcgbGVmdCwgcmlnaHQsIGV4cGVjdCwgcmVzdWx0OworCSAgICBOb3JtYWxpemVyLk1vZGUgbW9kZTsKKwkgICAgaW50IGk7CisKKwkgICAgLyogdGVzdCBjb25jYXRlbmF0aW9uICovCisJICAgIGZvcihpPTA7IGk8Y2FzZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIG1vZGUgPSAoTm9ybWFsaXplci5Nb2RlKWNhc2VzW2ldWzBdOworCisJICAgICAgICBsZWZ0PShTdHJpbmcpY2FzZXNbaV1bMV07CisJICAgICAgICByaWdodD0oU3RyaW5nKWNhc2VzW2ldWzJdOworCSAgICAgICAgZXhwZWN0PShTdHJpbmcpY2FzZXNbaV1bM107CisJCSAgICB7CisJICAgICAgICAgICAgcmVzdWx0PU5vcm1hbGl6ZXIuY29uY2F0ZW5hdGUobGVmdCwgcmlnaHQsIG1vZGUpOworCQkgICAgICAgIGlmKCByZXN1bHQuZXF1YWxzKGV4cGVjdCkpIHsKKwkJICAgICAgICAgICAgZXJybG4oImVycm9yIGluIE5vcm1hbGl6ZXIuY29uY2F0ZW5hdGUoKSwgY2FzZXNbXSBmYWlsZWQiCisJICAgICAgICAgICAgICAgICAgICAgICsiLCByZXN1bHQ9PWV4cGVjdDogZXhwZWN0ZWQ6ICIKKwkgICAgICAgICAgICAgICAgICAgICAgKyBoZXgoZXhwZWN0KSsiID09PT09PT09PT4gZ290OiAiICsgaGV4KHJlc3VsdCkpOworCQkgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXN1bHQ9Tm9ybWFsaXplci5jb25jYXRlbmF0ZShsZWZ0LnRvQ2hhckFycmF5KCksIHJpZ2h0LnRvQ2hhckFycmF5KCksIG1vZGUpOworICAgICAgICAgICAgICAgIGlmKCByZXN1bHQuZXF1YWxzKGV4cGVjdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oImVycm9yIGluIE5vcm1hbGl6ZXIuY29uY2F0ZW5hdGUoKSwgY2FzZXNbXSBmYWlsZWQiCisgICAgICAgICAgICAgICAgICAgICAgICAgICsiLCByZXN1bHQ9PWV4cGVjdDogZXhwZWN0ZWQ6ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKyBoZXgoZXhwZWN0KSsiID09PT09PT09PT4gZ290OiAiICsgaGV4KHJlc3VsdCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKwkgICAgfQorCX0KKyAgICBwcml2YXRlIGZpbmFsIGludCBSQU5EX01BWCA9IDB4N2ZmZjsKKworICAgIHB1YmxpYyB2b2lkIFRlc3RDaGVja0ZDRCgpCisJeworCSAgY2hhcltdIEZBU1QgPSB7MHgwMDAxLCAweDAwMDIsIDB4MDAwMywgMHgwMDA0LCAweDAwMDUsIDB4MDAwNiwgMHgwMDA3LAorICAgICAgICAgICAgICAgICAgICAgMHgwMDA4LCAweDAwMDksIDB4MDAwQX07CisKKwkgIGNoYXJbXSBGQUxTRSA9IHsweDAwMDEsIDB4MDAwMiwgMHgwMkVBLCAweDAzRUIsIDB4MDMwMCwgMHgwMzAxLAorCSAgICAgICAgICAgICAgICAgIDB4MDJCOSwgMHgwMzE0LCAweDAzMTUsIDB4MDMxNn07CisKKyAgICAgIGNoYXJbXSBUUlVFID0gezB4MDAzMCwgMHgwMDQwLCAweDA0NDAsIDB4MDU2RCwgMHgwNjRGLCAweDA2RTcsCisJICAgICAgICAgICAgICAgICAweDAwNTAsIDB4MDczMCwgMHgwOUVFLCAweDFFMTB9OworCisJICBjaGFyW11bXSBkYXRhc3RyPSB7IHsweDAwNjEsIDB4MDMwQSwgMHgxRTA1LCAweDAzMDIsIDB9LAorCSAgICAgICAgICAgICAgICAgICAgICB7MHgwMDYxLCAweDAzMEEsIDB4MDBFMiwgMHgwMzIzLCAwfSwKKwkgICAgICAgICAgICAgICAgICAgICAgezB4MDA2MSwgMHgwMzIzLCAweDAwRTIsIDB4MDMyMywgMH0sCisJICAgICAgICAgICAgICAgICAgICAgIHsweDAwNjEsIDB4MDMyMywgMHgxRTA1LCAweDAzMDIsIDB9CisgICAgICAgICAgICAgICAgICAgICAgICB9OworCSAgTm9ybWFsaXplci5RdWlja0NoZWNrUmVzdWx0IHJlc3VsdFtdID0ge05vcm1hbGl6ZXIuWUVTLCBOb3JtYWxpemVyLk5PLCBOb3JtYWxpemVyLk5PLCBOb3JtYWxpemVyLllFU307CisKKwkgIGNoYXJbXSBkYXRhY2hhcj0geyAgICAgICAgMHg2MCwgMHg2MSwgMHg2MiwgMHg2MywgMHg2NCwgMHg2NSwgMHg2NiwgMHg2NywgMHg2OCwgMHg2OSwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg2YSwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlMCwgMHhlMSwgMHhlMiwgMHhlMywgMHhlNCwgMHhlNSwgMHhlNiwgMHhlNywgMHhlOCwgMHhlOSwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhlYSwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMzAwLCAweDAzMDEsIDB4MDMwMiwgMHgwMzAzLCAweDAzMDQsIDB4MDMwNSwgMHgwMzA2LAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAzMDcsIDB4MDMwOCwgMHgwMzA5LCAweDAzMGEsCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDMyMCwgMHgwMzIxLCAweDAzMjIsIDB4MDMyMywgMHgwMzI0LCAweDAzMjUsIDB4MDMyNiwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMzI3LCAweDAzMjgsIDB4MDMyOSwgMHgwMzJhLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFlMDAsIDB4MWUwMSwgMHgxZTAyLCAweDFlMDMsIDB4MWUwNCwgMHgxZTA1LCAweDFlMDYsCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWUwNywgMHgxZTA4LCAweDFlMDksIDB4MWUwYQorICAgICAgICAgICAgICAgICAgICAgICB9OworCisJICBpbnQgY291bnQgPSAwOworCisJICBpZiAoTm9ybWFsaXplci5xdWlja0NoZWNrKEZBU1QsMCxGQVNULmxlbmd0aCwgTm9ybWFsaXplci5GQ0QpICE9IE5vcm1hbGl6ZXIuWUVTKQorCSAgICBlcnJsbigiTmV3Tm9ybWFsaXplci5xdWlja0NoZWNrKEZDRCkgZmFpbGVkOiBleHBlY3RlZCB2YWx1ZSBmb3IgZmFzdCBOZXdOb3JtYWxpemVyLnF1aWNrQ2hlY2sgaXMgTmV3Tm9ybWFsaXplci5ZRVNcbiIpOworCSAgaWYgKE5vcm1hbGl6ZXIucXVpY2tDaGVjayhGQUxTRSwwLCBGQUxTRS5sZW5ndGgsTm9ybWFsaXplci5GQ0QpICE9IE5vcm1hbGl6ZXIuTk8pCisJICAgIGVycmxuKCJOZXdOb3JtYWxpemVyLnF1aWNrQ2hlY2soRkNEKSBmYWlsZWQ6IGV4cGVjdGVkIHZhbHVlIGZvciBlcnJvciBOZXdOb3JtYWxpemVyLnF1aWNrQ2hlY2sgaXMgTmV3Tm9ybWFsaXplci5OT1xuIik7CisJICBpZiAoTm9ybWFsaXplci5xdWlja0NoZWNrKFRSVUUsMCxUUlVFLmxlbmd0aCxOb3JtYWxpemVyLkZDRCkgIT0gTm9ybWFsaXplci5ZRVMpCisJICAgIGVycmxuKCJOZXdOb3JtYWxpemVyLnF1aWNrQ2hlY2soRkNEKSBmYWlsZWQ6IGV4cGVjdGVkIHZhbHVlIGZvciBjb3JyZWN0IE5ld05vcm1hbGl6ZXIucXVpY2tDaGVjayBpcyBOZXdOb3JtYWxpemVyLllFU1xuIik7CisKKworCSAgd2hpbGUgKGNvdW50IDwgNCkKKwkgIHsKKwkgICAgTm9ybWFsaXplci5RdWlja0NoZWNrUmVzdWx0IGZjZHJlc3VsdCA9IE5vcm1hbGl6ZXIucXVpY2tDaGVjayhkYXRhc3RyW2NvdW50XSwwLGRhdGFzdHJbY291bnRdLmxlbmd0aCwgTm9ybWFsaXplci5GQ0QpOworICAgICAgICBpZiAocmVzdWx0W2NvdW50XSAhPSBmY2RyZXN1bHQpIHsKKwkgICAgICAgIGVycmxuKCJOZXdOb3JtYWxpemVyLnF1aWNrQ2hlY2soRkNEKSBmYWlsZWQ6IERhdGEgc2V0ICIrIGNvdW50CisgICAgICAgICAgICAgICAgICAgICsgIiBleHBlY3RlZCB2YWx1ZSAiKyByZXN1bHRbY291bnRdKTsKKwkgICAgfQorCSAgICBjb3VudCArKzsKKwkgIH0KKworCSAgLyogcmFuZG9tIGNoZWNrcyBvZiBsb25nIHN0cmluZ3MgKi8KKwkgIC8vc3JhbmQoKHVuc2lnbmVkKXRpbWUoIE5VTEwgKSk7CisgICAgICBSYW5kb20gcmFuZCA9IG5ldyBSYW5kb20oKTsKKworCisJICBmb3IgKGNvdW50ID0gMDsgY291bnQgPCA1MDsgY291bnQgKyspCisJICB7CisJICAgIGludCBzaXplID0gMDsKKwkgICAgTm9ybWFsaXplci5RdWlja0NoZWNrUmVzdWx0IHRlc3RyZXN1bHQgPSBOb3JtYWxpemVyLllFUzsKKwkgICAgY2hhcltdIGRhdGE9IG5ldyBjaGFyWzIwXTsKKwkgICAgY2hhcltdIG5vcm09IG5ldyBjaGFyWzEwMF07CisJICAgIGNoYXJbXSBuZmQgPSBuZXcgY2hhclsxMDBdOworCSAgICBpbnQgbm9ybVN0YXJ0ID0gMDsKKwkgICAgaW50IG5mZHNpemUgPSAwOworCSAgICB3aGlsZSAoc2l6ZSAhPSAxOSkgeworCSAgICAgIGRhdGFbc2l6ZV0gPSBkYXRhY2hhcltyYW5kLm5leHRJbnQoUkFORF9NQVgpKjUwL1JBTkRfTUFYXTsKKwkgICAgICBsb2dsbigiMHgiK2RhdGFbc2l6ZV0pOworCSAgICAgIG5vcm1TdGFydCA9IE5vcm1hbGl6ZXIubm9ybWFsaXplKGRhdGEsc2l6ZSxzaXplKzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ybSxub3JtU3RhcnQsMTAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vcm1hbGl6ZXIuTkZEKTsKKwkgICAgICBzaXplICsrOworCSAgICB9CisJICAgIGxvZ2xuKCJcbiIpOworCisJICAgIG5mZHNpemUgPSBOb3JtYWxpemVyLm5vcm1hbGl6ZShkYXRhLDAsc2l6ZSwgbmZkLDAsbmZkLmxlbmd0aCxOb3JtYWxpemVyLk5GRCk7CisgICAgICAgIC8vICAgIG5mZHNpemUgPSB1bm9ybV9ub3JtYWxpemUoZGF0YSwgc2l6ZSwgVU5PUk1fTkZELCBVQ09MX0lHTk9SRV9IQU5HVUwsCisgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgIG5mZCwgMTAwLCAmc3RhdHVzKTsKKyAgICAgICAgaWYgKG5mZHNpemUgIT0gbm9ybVN0YXJ0IHx8IFV0aWxpdHkuYXJyYXlSZWdpb25NYXRjaGVzKG5mZCwwLCBub3JtLDAsbmZkc2l6ZSkgPT1mYWxzZSkgeworCSAgICAgIHRlc3RyZXN1bHQgPSBOb3JtYWxpemVyLk5POworCSAgICB9CisJICAgIGlmICh0ZXN0cmVzdWx0ID09IE5vcm1hbGl6ZXIuWUVTKSB7CisJICAgICAgbG9nbG4oInJlc3VsdCBOZXdOb3JtYWxpemVyLllFU1xuIik7CisJICAgIH0KKwkgICAgZWxzZSB7CisJICAgICAgbG9nbG4oInJlc3VsdCBOZXdOb3JtYWxpemVyLk5PXG4iKTsKKwkgICAgfQorCisJICAgIGlmIChOb3JtYWxpemVyLnF1aWNrQ2hlY2soZGF0YSwwLGRhdGEubGVuZ3RoLCBOb3JtYWxpemVyLkZDRCkgIT0gdGVzdHJlc3VsdCkgeworCSAgICAgIGVycmxuKCJOZXdOb3JtYWxpemVyLnF1aWNrQ2hlY2soRkNEKSBmYWlsZWQ6IGV4cGVjdGVkICIrIHRlc3RyZXN1bHQrIiBmb3IgcmFuZG9tIGRhdGFcbiIgKTsKKwkgICAgfQorCSAgfQorCX0KKworCisJLy8gcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIG9mIE5vcm1hbGl6ZXI6OmNvbXBhcmUKKwlwcml2YXRlIGludCByZWZfbm9ybV9jb21wYXJlKFN0cmluZyBzMSwgU3RyaW5nIHMyLCBpbnQgb3B0aW9ucykgeworCSAgICBTdHJpbmcgdDEsIHQyLHIxLHIyOworCisgICAgICAgIHIxPXMxOworICAgICAgICByMj1zMjsKKworCSAgICBpZigob3B0aW9ucyZOb3JtYWxpemVyLkNPTVBBUkVfSUdOT1JFX0NBU0UpIT0wKSB7CisJICAgICAgICByMSA9IFVDaGFyYWN0ZXIuZm9sZENhc2UoczEsKChvcHRpb25zJk5vcm1hbGl6ZXIuRk9MRF9DQVNFX0VYQ0xVREVfU1BFQ0lBTF9JKT09MCkpOworCSAgICAgICAgcjIgPSBVQ2hhcmFjdGVyLmZvbGRDYXNlKHMyLCgob3B0aW9ucyZOb3JtYWxpemVyLkZPTERfQ0FTRV9FWENMVURFX1NQRUNJQUxfSSk9PTApKTsKKwkgICAgfQorCisgICAgICAgICB0MSA9IE5vcm1hbGl6ZXIuZGVjb21wb3NlKHIxLCBmYWxzZSk7CisgICAgICAgICB0MiA9IE5vcm1hbGl6ZXIuZGVjb21wb3NlKHIyLCBmYWxzZSk7CisKKwkgICAgaWYoKG9wdGlvbnMmTm9ybWFsaXplci5DT01QQVJFX0NPREVfUE9JTlRfT1JERVIpIT0wKSB7CisgICAgICAgICAgICBVVEYxNi5TdHJpbmdDb21wYXJhdG9yIGNvbXAgCisgICAgICAgICAgICAgICAgICAgID0gbmV3IFVURjE2LlN0cmluZ0NvbXBhcmF0b3IodHJ1ZSwgZmFsc2UsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVURjE2LlN0cmluZ0NvbXBhcmF0b3IuRk9MRF9DQVNFX0RFRkFVTFQpOworCSAgICAgICAgcmV0dXJuIGNvbXAuY29tcGFyZSh0MSx0Mik7CisJICAgIH0gZWxzZSB7CisJICAgICAgICByZXR1cm4gdDEuY29tcGFyZVRvKHQyKTsKKwkgICAgfQorCisJfQorCisJLy8gdGVzdCB3cmFwcGVyIGZvciBOb3JtYWxpemVyOjpjb21wYXJlLCBzZXRzIFVOT1JNX0lOUFVUX0lTX0ZDRCBhcHByb3ByaWF0ZWx5CisJcHJpdmF0ZSBpbnQgbm9ybV9jb21wYXJlKFN0cmluZyBzMSwgU3RyaW5nIHMyLCBpbnQgb3B0aW9ucykgeworCSAgICBpZiggTm9ybWFsaXplci5ZRVM9PU5vcm1hbGl6ZXIucXVpY2tDaGVjayhzMSxOb3JtYWxpemVyLkZDRCkgJiYKKwkgICAgICAgIE5vcm1hbGl6ZXIuWUVTPT1Ob3JtYWxpemVyLnF1aWNrQ2hlY2soczIsTm9ybWFsaXplci5GQ0QpKSB7CisJICAgICAgICBvcHRpb25zfD1Ob3JtYWxpemVyLklOUFVUX0lTX0ZDRDsKKwkgICAgfQorCisJICAgIHJldHVybiBOb3JtYWxpemVyLmNvbXBhcmUoczEsIHMyLCBvcHRpb25zKTsKKwl9CisKKwkvLyByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb2YgVW5pY29kZVN0cmluZzo6Y2FzZUNvbXBhcmUKKwlwcml2YXRlIGludCByZWZfY2FzZV9jb21wYXJlKFN0cmluZyBzMSwgU3RyaW5nIHMyLCBpbnQgb3B0aW9ucykgeworCSAgICBTdHJpbmcgdDEsIHQyOworCisJICAgIHQxPXMxOworCSAgICB0Mj1zMjsKKworCSAgICB0MSA9IFVDaGFyYWN0ZXIuZm9sZENhc2UodDEsKChvcHRpb25zJk5vcm1hbGl6ZXIuRk9MRF9DQVNFX0VYQ0xVREVfU1BFQ0lBTF9JKT09MCkpOworCSAgICB0MiA9IFVDaGFyYWN0ZXIuZm9sZENhc2UodDIsKChvcHRpb25zJk5vcm1hbGl6ZXIuRk9MRF9DQVNFX0VYQ0xVREVfU1BFQ0lBTF9JKT09MCkpOworCisgICAgICAgIGlmKChvcHRpb25zJk5vcm1hbGl6ZXIuQ09NUEFSRV9DT0RFX1BPSU5UX09SREVSKSE9MCkgeworICAgICAgICAgICAgVVRGMTYuU3RyaW5nQ29tcGFyYXRvciBjb21wIAorICAgICAgICAgICAgICAgICAgICA9IG5ldyBVVEYxNi5TdHJpbmdDb21wYXJhdG9yKHRydWUsIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVRGMTYuU3RyaW5nQ29tcGFyYXRvci5GT0xEX0NBU0VfREVGQVVMVCk7CisgICAgICAgICAgICByZXR1cm4gY29tcC5jb21wYXJlKHQxLHQyKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiB0MS5jb21wYXJlVG8odDIpOworICAgICAgICB9CisKKwl9CisKKwkvLyByZWR1Y2UgYW4gaW50ZWdlciB0byAtMS8wLzEKKwlwcml2YXRlIHN0YXRpYyBpbnQgc2lnbihpbnQgdmFsdWUpIHsKKwkgICAgaWYodmFsdWU9PTApIHsKKwkgICAgICAgIHJldHVybiAwOworCSAgICB9IGVsc2UgeworCSAgICAgICAgcmV0dXJuICh2YWx1ZT4+MzEpfDE7CisJICAgIH0KKwl9CisgICAgICAgICAgICAvLyB0ZXN0IE5vcm1hbGl6ZXI6OmNvbXBhcmUgYW5kIHVub3JtX2NvbXBhcmUgKHRoaW5seSB3cmFwcGVkIGJ5IHRoZSBmb3JtZXIpCisgICAgICAgIC8vIGJ5IGNvbXBhcmluZyBpdCB3aXRoIGl0cyBzZW1hbnRpYyBlcXVpdmFsZW50CisgICAgICAgIC8vIHNpbmNlIHdlIHRydXN0IHRoZSBwaWVjZXMsIHRoaXMgaXMgc3VmZmljaWVudAorCisgICAgICAgIC8vIHRlc3QgZWFjaCBzdHJpbmcgd2l0aCBpdHNlbGYgYW5kIGVhY2ggb3RoZXIKKyAgICAgICAgLy8gZWFjaCB0aW1lIHdpdGggYWxsIG9wdGlvbnMKKyAgICAgcHJpdmF0ZSAgU3RyaW5nIHN0cmluZ3NbXT1uZXcgU3RyaW5nW117CisgICAgICAgICAgICAvLyBzb21lIGNhc2VzIGZyb20gTm9ybWFsaXphdGlvblRlc3QudHh0CisgICAgICAgICAgICAvLyAwLi4zCisgICAgICAgICAgICAiRFx1MDMxQlx1MDMwN1x1MDMyMyIsCisgICAgICAgICAgICAiXHUxRTBDXHUwMzFCXHUwMzA3IiwKKyAgICAgICAgICAgICJEXHUwMzFCXHUwMzIzXHUwMzA3IiwKKyAgICAgICAgICAgICJkXHUwMzFCXHUwMzIzXHUwMzA3IiwKKworICAgICAgICAgICAgLy8gNC4uNgorICAgICAgICAgICAgIlx1MDBFNCIsCisgICAgICAgICAgICAiYVx1MDMwOCIsCisgICAgICAgICAgICAiQVx1MDMwOCIsCisKKyAgICAgICAgICAgIC8vIEFuZ3N0cm9tIHNpZ24gPSBBIHJpbmcKKyAgICAgICAgICAgIC8vIDcuLjEwCisgICAgICAgICAgICAiXHUyMTJCIiwKKyAgICAgICAgICAgICJcdTAwQzUiLAorICAgICAgICAgICAgIkFcdTAzMEEiLAorICAgICAgICAgICAgImFcdTAzMEEiLAorCisgICAgICAgICAgICAvLyAxMS4xNAorICAgICAgICAgICAgImFcdTA1OUFcdTAzMTZcdTMwMkFcdTAzMkZiIiwKKyAgICAgICAgICAgICJhXHUzMDJBXHUwMzE2XHUwMzJGXHUwNTlBYiIsCisgICAgICAgICAgICAiYVx1MzAyQVx1MDMxNlx1MDMyRlx1MDU5QWIiLAorICAgICAgICAgICAgIkFcdTA1OUFcdTAzMTZcdTMwMkFcdTAzMkZiIiwKKworICAgICAgICAgICAgLy8gZnJvbSBJQ1UgY2FzZSBmb2xkaW5nIHRlc3RzCisgICAgICAgICAgICAvLyAxNS4uMjAKKyAgICAgICAgICAgICJBXHUwMGRmXHUwMGI1XHVmYjAzXFxVMDAwMTA0MGNcdTAxMzEiLAorICAgICAgICAgICAgImFzc1x1MDNiY2ZmaVxcVTAwMDEwNDM0aSIsCisgICAgICAgICAgICAiXHUwMDYxXHUwMDQyXHUwMTMxXHUwM2EzXHUwMGRmXHVmYjAzXHVkOTNmXHVkZmZmIiwKKyAgICAgICAgICAgICJcdTAwNDFcdTAwNjJcdTAwNjlcdTAzYzNcdTAwNzNcdTAwNTNcdTAwNDZcdTAwNjZcdTAwNDlcdWQ5M2ZcdWRmZmYiLAorICAgICAgICAgICAgIlx1MDA0MVx1MDA2Mlx1MDEzMVx1MDNjM1x1MDA1M1x1MDA3M1x1MDA2Nlx1MDA0Nlx1MDA2OVx1ZDkzZlx1ZGZmZiIsCisgICAgICAgICAgICAiXHUwMDQxXHUwMDYyXHUwMDY5XHUwM2MzXHUwMDczXHUwMDUzXHUwMDQ2XHUwMDY2XHUwMDQ5XHVkOTNmXHVkZmZkIiwKKworICAgICAgICAgICAgLy8gICAgIFUrZDgwMCBVKzEwMDAxICAgc2VlIGltcGxlbWVudGF0aW9uIGNvbW1lbnQgaW4gdW5vcm1fY21wRXF1aXZGb2xkCisgICAgICAgICAgICAvLyB2cy4gVSsxMDAwMCAgICAgICAgICBhdCBib3R0b20gLSBjb2RlIHBvaW50IG9yZGVyCisgICAgICAgICAgICAvLyAyMS4uMjIKKyAgICAgICAgICAgICJcdWQ4MDBcdWQ4MDBcdWRjMDEiLAorICAgICAgICAgICAgIlx1ZDgwMFx1ZGMwMCIsCisKKyAgICAgICAgICAgIC8vIG90aGVyIGNvZGUgcG9pbnQgb3JkZXIgdGVzdHMgZnJvbSB1c3RydGVzdC5jcHAKKyAgICAgICAgICAgIC8vIDIzLi4zMQorICAgICAgICAgICAgIlx1MjBhY1x1ZDgwMSIsCisgICAgICAgICAgICAiXHUyMGFjXHVkODAwXHVkYzAwIiwKKyAgICAgICAgICAgICJcdWQ4MDAiLAorICAgICAgICAgICAgIlx1ZDgwMFx1ZmY2MSIsCisgICAgICAgICAgICAiXHVkZmZmIiwKKyAgICAgICAgICAgICJcdWZmNjFcdWRmZmYiLAorICAgICAgICAgICAgIlx1ZmY2MVx1ZDgwMFx1ZGMwMiIsCisgICAgICAgICAgICAiXHVkODAwXHVkYzAyIiwKKyAgICAgICAgICAgICJcdWQ4NGRcdWRjNTYiLAorCisgICAgICAgICAgICAvLyBsb25nIHN0cmluZ3MsIHNlZSBjbm9ybXRzdC5jL1Rlc3ROb3JtQ292ZXJhZ2UoKQorICAgICAgICAgICAgLy8gZXF1aXZhbGVudCBpZiBjYXNlLWluc2Vuc2l0aXZlCisgICAgICAgICAgICAvLyAzMi4uMzMKKyAgICAgICAgICAgICJcdUFEOEJcdUFEOEJcdUFEOEJcdUFEOEIiKworICAgICAgICAgICAgIlxcVTAwMDFkMTVlXFxVMDAwMWQxNTdcXFUwMDAxZDE2NVxcVTAwMDFkMTVlXFxVMDAwMWQxNWVcXFUwMDAxZDE1ZVxcVTAwMDFkMTVlIisKKyAgICAgICAgICAgICJcXFUwMDAxZDE1ZVxcVTAwMDFkMTU3XFxVMDAwMWQxNjVcXFUwMDAxZDE1ZVxcVTAwMDFkMTVlXFxVMDAwMWQxNWVcXFUwMDAxZDE1ZSIrCisgICAgICAgICAgICAiXFxVMDAwMWQxNWVcXFUwMDAxZDE1N1xcVTAwMDFkMTY1XFxVMDAwMWQxNWVcXFUwMDAxZDE1ZVxcVTAwMDFkMTVlXFxVMDAwMWQxNWUiKworICAgICAgICAgICAgIlxcVTAwMDFkMTU3XFxVMDAwMWQxNjVcXFUwMDAxZDE1ZVxcVTAwMDFkMTVlXFxVMDAwMWQxNWVcXFUwMDAxZDE1ZVxcVTAwMDFkMTVlIisKKyAgICAgICAgICAgICJcXFUwMDAxZDE1N1xcVTAwMDFkMTY1XFxVMDAwMWQxNWVcXFUwMDAxZDE1ZVxcVTAwMDFkMTVlXFxVMDAwMWQxNWVcXFUwMDAxZDE1ZSIrCisgICAgICAgICAgICAiYWFhYWFhYWFhYWFhYWFhYWFhenp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enoiKworICAgICAgICAgICAgImJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiIisKKyAgICAgICAgICAgICJjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjYyIrCisgICAgICAgICAgICAiZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGQiKworICAgICAgICAgICAgIlx1QUQ4Qlx1QUQ4Qlx1QUQ4Qlx1QUQ4QiIrCisgICAgICAgICAgICAiZFx1MDMxQlx1MDMwN1x1MDMyMyIsCisKKyAgICAgICAgICAgICJcdTExMDBcdTExNmZcdTExYWFcdUFEOEJcdUFEOEJcdTExMDBcdTExNmZcdTExYWEiKworICAgICAgICAgICAgIlxcVTAwMDFkMTU3XFxVMDAwMWQxNjVcXFUwMDAxZDE1ZVxcVTAwMDFkMTVlXFxVMDAwMWQxNWVcXFUwMDAxZDE1ZVxcVTAwMDFkMTVlIisKKyAgICAgICAgICAgICJcXFUwMDAxZDE1N1xcVTAwMDFkMTY1XFxVMDAwMWQxNWVcXFUwMDAxZDE1ZVxcVTAwMDFkMTVlXFxVMDAwMWQxNWVcXFUwMDAxZDE1ZSIrCisgICAgICAgICAgICAiXFxVMDAwMWQxNTdcXFUwMDAxZDE2NVxcVTAwMDFkMTVlXFxVMDAwMWQxNWVcXFUwMDAxZDE1ZVxcVTAwMDFkMTVlXFxVMDAwMWQxNWUiKworICAgICAgICAgICAgIlxcVTAwMDFkMTVlXFxVMDAwMWQxNTdcXFUwMDAxZDE2NVxcVTAwMDFkMTVlXFxVMDAwMWQxNWVcXFUwMDAxZDE1ZVxcVTAwMDFkMTVlIisKKyAgICAgICAgICAgICJcXFUwMDAxZDE1ZVxcVTAwMDFkMTU3XFxVMDAwMWQxNjVcXFUwMDAxZDE1ZVxcVTAwMDFkMTVlXFxVMDAwMWQxNWVcXFUwMDAxZDE1ZSIrCisgICAgICAgICAgICAiYWFhYWFhYWFhYUFBQUFBQUFBWlpaWlpaWlpaWlpaWlpaWnp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enp6enoiKworICAgICAgICAgICAgImJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiIisKKyAgICAgICAgICAgICJjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjYyIrCisgICAgICAgICAgICAiZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGQiKworICAgICAgICAgICAgIlx1MTEwMFx1MTE2Zlx1MTFhYVx1QUQ4Qlx1QUQ4Qlx1MTEwMFx1MTE2Zlx1MTFhYSIrCisgICAgICAgICAgICAiXHUxRTBDXHUwMzFCXHUwMzA3IiwKKyAgICAgICAgICAgICJcdTAwZGF0ZXJcdTAwZmQiLAorICAgICAgICAgICAgIlx1MDBmYXRlclx1MDBmZCIsCisJICAgICAgICAvLyBzb21lIHN0cmluZ3MgdGhhdCBtYXkgbWFrZSBhIGRpZmZlcmVuY2Ugd2hldGhlciB0aGUgY29tcGFyZSBmdW5jdGlvbgorCSAgICAgICAgLy8gY2FzZS1mb2xkcyBvciBkZWNvbXBvc2VzIGZpcnN0CisJICAgICAgICAvLyAzNC4uNDEKKwkgICAgICAgICJcdTAzNjBcdTAzNDVcdTAzMzQiLAorCSAgICAgICAgIlx1MDM2MFx1MDNiOVx1MDMzNCIsCisKKwkgICAgICAgICJcdTAzNjBcdTFmODBcdTAzMzQiLAorCSAgICAgICAgIlx1MDM2MFx1MDNiMVx1MDMxM1x1MDNiOVx1MDMzNCIsCisKKwkgICAgICAgICJcdTAzNjBcdTFmZmNcdTAzMzQiLAorCSAgICAgICAgIlx1MDM2MFx1MDNjOVx1MDNiOVx1MDMzNCIsCisKKwkgICAgICAgICJcdTAwY2MiLAorCSAgICAgICAgIlx1MDA2OVx1MDMwMCIsCisgICAgICAgICAgICAiYVx1MDM2MFx1MDM0NVx1MDM2MFx1MDM0NWIiLAorICAgICAgICAgICAgImFcdTAzNDVcdTAzNjBcdTAzNDVcdTAzNjBiIiwKKworICAgIH07CisKKwkvLyBhbGwgY29tYmluYXRpb25zIG9mIG9wdGlvbnMKKwkvLyBVTk9STV9JTlBVVF9JU19GQ0QgaXMgc2V0IGF1dG9tYXRpY2FsbHkgaWYgYm90aCBpbnB1dCBzdHJpbmdzIGZ1bGZpbGwgRkNEIGNvbmRpdGlvbnMKKwlmaW5hbCBjbGFzcyBUZW1wIHsKKwkJaW50IG9wdGlvbnM7CisJCVN0cmluZyBuYW1lOworCQlwdWJsaWMgVGVtcChpbnQgb3B0LFN0cmluZyBzdHIpeworCQkJb3B0aW9ucyA9b3B0OworCQkJbmFtZSA9IHN0cjsKKwkJfQorCisJfQorCisgICAgcHVibGljIHZvaWQgVGVzdENvbXBhcmVEZWJ1ZygpeworCisgICAgICAgIFN0cmluZ1tdIHMgPSBuZXcgU3RyaW5nWzEwMF07IC8vIGF0IGxlYXN0IGFzIG1hbnkgaXRlbXMgYXMgaW4gc3RyaW5nc1tdICEKKworCisKKyAgICAgICAgVGVtcFtdIG9wdCA9IG5ldyBUZW1wW117CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBUZW1wKDAsImRlZmF1bHQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFRlbXAoTm9ybWFsaXplci5DT01QQVJFX0NPREVfUE9JTlRfT1JERVIsICJjb2RlIHBvaW50IG9yZGVyIiApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgVGVtcChOb3JtYWxpemVyLkNPTVBBUkVfSUdOT1JFX0NBU0UsICJpZ25vcmUgY2FzZSIgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFRlbXAoTm9ybWFsaXplci5DT01QQVJFX0NPREVfUE9JTlRfT1JERVJ8Tm9ybWFsaXplci5DT01QQVJFX0lHTk9SRV9DQVNFLCAiY29kZSBwb2ludCBvcmRlciAmIGlnbm9yZSBjYXNlIiApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgVGVtcChOb3JtYWxpemVyLkNPTVBBUkVfSUdOT1JFX0NBU0V8Tm9ybWFsaXplci5GT0xEX0NBU0VfRVhDTFVERV9TUEVDSUFMX0ksICJpZ25vcmUgY2FzZSAmIHNwZWNpYWwgaSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgVGVtcChOb3JtYWxpemVyLkNPTVBBUkVfQ09ERV9QT0lOVF9PUkRFUnxOb3JtYWxpemVyLkNPTVBBUkVfSUdOT1JFX0NBU0V8Tm9ybWFsaXplci5GT0xEX0NBU0VfRVhDTFVERV9TUEVDSUFMX0ksICJjb2RlIHBvaW50IG9yZGVyICYgaWdub3JlIGNhc2UgJiBzcGVjaWFsIGkiKQorICAgICAgICAgICAgICAgICAgICAgICAgfTsKKworCisKKyAgICAgICAgaW50IGksIGosIGssIGNvdW50PXN0cmluZ3MubGVuZ3RoOworICAgICAgICBpbnQgcmVzdWx0LCByZWZSZXN1bHQ7CisKKyAgICAgICAgLy8gY3JlYXRlIHRoZSBVbmljb2RlU3RyaW5ncworICAgICAgICBmb3IoaT0wOyBpPGNvdW50OyArK2kpIHsKKyAgICAgICAgICAgIHNbaV09VXRpbGl0eS51bmVzY2FwZShzdHJpbmdzW2ldKTsKKyAgICAgICAgfQorICAgICAgICBVVEYxNi5TdHJpbmdDb21wYXJhdG9yIGNvbXAgPSBuZXcgVVRGMTYuU3RyaW5nQ29tcGFyYXRvcih0cnVlLCBmYWxzZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVRGMTYuU3RyaW5nQ29tcGFyYXRvci5GT0xEX0NBU0VfREVGQVVMVCk7CisgICAgICAgIC8vIHRlc3QgdGhlbSBlYWNoIHdpdGggZWFjaCBvdGhlcgorCisgICAgICAgIGkgPSAxNTsKKyAgICAgICAgaiA9IDE2OworICAgICAgICBrID0gNDsKKyAgICAgICAgLy8gdGVzdCBOb3JtYWxpemVyOjpjb21wYXJlCisgICAgICAgIHJlc3VsdD1ub3JtX2NvbXBhcmUoc1tpXSwgc1tqXSwgb3B0W2tdLm9wdGlvbnMpOworICAgICAgICByZWZSZXN1bHQ9cmVmX25vcm1fY29tcGFyZShzW2ldLCBzW2pdLCBvcHRba10ub3B0aW9ucyk7CisgICAgICAgIGlmKHNpZ24ocmVzdWx0KSE9c2lnbihyZWZSZXN1bHQpKSB7CisgICAgICAgICAgICBlcnJsbigiTm9ybWFsaXplcjo6Y29tcGFyZSggIiArIGkgKyIsICIraiArICIsICIgK2srIiggIiArb3B0W2tdLm5hbWUrIikpPSIgKyByZXN1bHQgKyIgc2hvdWxkIGJlIHNhbWUgc2lnbiBhcyAiICsgcmVmUmVzdWx0KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIHRlc3QgVW5pY29kZVN0cmluZzo6Y2FzZUNvbXBhcmUgLSBzYW1lIGludGVybmFsIGltcGxlbWVudGF0aW9uIGZ1bmN0aW9uCisgICAgICAgICBpZigwIT0ob3B0W2tdLm9wdGlvbnMmTm9ybWFsaXplci5DT01QQVJFX0lHTk9SRV9DQVNFKSkgeworICAgICAgICAvLyAgICByZXN1bHQ9c1tpXS4gKHNbal0sIG9wdFtrXS5vcHRpb25zKTsKKyAgICAgICAgICAgIGlmICgob3B0W2tdLm9wdGlvbnMgJiBOb3JtYWxpemVyLkZPTERfQ0FTRV9FWENMVURFX1NQRUNJQUxfSSkgPT0gMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb21wLnNldElnbm9yZUNhc2UodHJ1ZSwgVVRGMTYuU3RyaW5nQ29tcGFyYXRvci5GT0xEX0NBU0VfREVGQVVMVCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBjb21wLnNldElnbm9yZUNhc2UodHJ1ZSwgVVRGMTYuU3RyaW5nQ29tcGFyYXRvci5GT0xEX0NBU0VfRVhDTFVERV9TUEVDSUFMX0kpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICByZXN1bHQ9Y29tcC5jb21wYXJlKHNbaV0sc1tqXSk7CisgICAgICAgICAgICByZWZSZXN1bHQ9cmVmX2Nhc2VfY29tcGFyZShzW2ldLCBzW2pdLCBvcHRba10ub3B0aW9ucyk7CisgICAgICAgICAgICBpZihzaWduKHJlc3VsdCkhPXNpZ24ocmVmUmVzdWx0KSkgeworICAgICAgICAgICAgICAgICAgICAgIGVycmxuKCJOb3JtYWxpemVyOjpjb21wYXJlKCAiICsgaSArIiwgIitqICsgIiwgIitrKyIoICIgK29wdFtrXS5uYW1lKyIpKT0iICsgcmVzdWx0ICsiIHNob3VsZCBiZSBzYW1lIHNpZ24gYXMgIiArIHJlZlJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIFN0cmluZyB2YWx1ZTEgPSAiXHUwMGRhdGVyXHUwMGZkIjsKKyAgICAgICAgU3RyaW5nIHZhbHVlMiA9ICJcdTAwZmF0ZXJcdTAwZmQiOworICAgICAgICBpZihOb3JtYWxpemVyLmNvbXBhcmUodmFsdWUxLHZhbHVlMiwwKSE9MCl7CisgICAgICAgICAgICBpZihOb3JtYWxpemVyLmNvbXBhcmUodmFsdWUxLHZhbHVlMixOb3JtYWxpemVyLkNPTVBBUkVfSUdOT1JFX0NBU0UpPT0wKXsKKworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisJcHVibGljIHZvaWQgVGVzdENvbXBhcmUoKSB7CisKKwkgICAgU3RyaW5nW10gcyA9IG5ldyBTdHJpbmdbMTAwXTsgLy8gYXQgbGVhc3QgYXMgbWFueSBpdGVtcyBhcyBpbiBzdHJpbmdzW10gIQorCisKKyAgICAgICAgVGVtcFtdIG9wdCA9IG5ldyBUZW1wW117CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBUZW1wKDAsImRlZmF1bHQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFRlbXAoTm9ybWFsaXplci5DT01QQVJFX0NPREVfUE9JTlRfT1JERVIsICJjb2RlIHBvaW50IG9yZGVyIiApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgVGVtcChOb3JtYWxpemVyLkNPTVBBUkVfSUdOT1JFX0NBU0UsICJpZ25vcmUgY2FzZSIgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFRlbXAoTm9ybWFsaXplci5DT01QQVJFX0NPREVfUE9JTlRfT1JERVJ8Tm9ybWFsaXplci5DT01QQVJFX0lHTk9SRV9DQVNFLCAiY29kZSBwb2ludCBvcmRlciAmIGlnbm9yZSBjYXNlIiApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgVGVtcChOb3JtYWxpemVyLkNPTVBBUkVfSUdOT1JFX0NBU0V8Tm9ybWFsaXplci5GT0xEX0NBU0VfRVhDTFVERV9TUEVDSUFMX0ksICJpZ25vcmUgY2FzZSAmIHNwZWNpYWwgaSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgVGVtcChOb3JtYWxpemVyLkNPTVBBUkVfQ09ERV9QT0lOVF9PUkRFUnxOb3JtYWxpemVyLkNPTVBBUkVfSUdOT1JFX0NBU0V8Tm9ybWFsaXplci5GT0xEX0NBU0VfRVhDTFVERV9TUEVDSUFMX0ksICJjb2RlIHBvaW50IG9yZGVyICYgaWdub3JlIGNhc2UgJiBzcGVjaWFsIGkiKQorICAgICAgICAgICAgICAgICAgICAgICAgfTsKKworCisKKwkgICAgaW50IGksIGosIGssIGNvdW50PXN0cmluZ3MubGVuZ3RoOworCSAgICBpbnQgcmVzdWx0LCByZWZSZXN1bHQ7CisKKwkgICAgLy8gY3JlYXRlIHRoZSBVbmljb2RlU3RyaW5ncworCSAgICBmb3IoaT0wOyBpPGNvdW50OyArK2kpIHsKKwkgICAgICAgIHNbaV09VXRpbGl0eS51bmVzY2FwZShzdHJpbmdzW2ldKTsKKwkgICAgfQorCSAgICBVVEYxNi5TdHJpbmdDb21wYXJhdG9yIGNvbXAgPSBuZXcgVVRGMTYuU3RyaW5nQ29tcGFyYXRvcigpOworCSAgICAvLyB0ZXN0IHRoZW0gZWFjaCB3aXRoIGVhY2ggb3RoZXIKKwkgICAgZm9yKGk9MDsgaTxjb3VudDsgKytpKSB7CisJICAgICAgICBmb3Ioaj1pOyBqPGNvdW50OyArK2opIHsKKwkgICAgICAgICAgICBmb3Ioaz0wOyBrPG9wdC5sZW5ndGg7ICsraykgeworCSAgICAgICAgICAgICAgICAvLyB0ZXN0IE5vcm1hbGl6ZXI6OmNvbXBhcmUKKwkgICAgICAgICAgICAgICAgcmVzdWx0PW5vcm1fY29tcGFyZShzW2ldLCBzW2pdLCBvcHRba10ub3B0aW9ucyk7CisJICAgICAgICAgICAgICAgIHJlZlJlc3VsdD1yZWZfbm9ybV9jb21wYXJlKHNbaV0sIHNbal0sIG9wdFtrXS5vcHRpb25zKTsKKwkgICAgICAgICAgICAgICAgaWYoc2lnbihyZXN1bHQpIT1zaWduKHJlZlJlc3VsdCkpIHsKKwkgICAgICAgICAgICAgICAgICAgIGVycmxuKCJOb3JtYWxpemVyOjpjb21wYXJlKCAiICsgaSArIiwgIitqICsgIiwgIiAraysiKCAiICtvcHRba10ubmFtZSsiKSk9IiArIHJlc3VsdCArIiBzaG91bGQgYmUgc2FtZSBzaWduIGFzICIgKyByZWZSZXN1bHQpOworCSAgICAgICAgICAgICAgICB9CisKKwkgICAgICAgICAgICAgICAgLy8gdGVzdCBVbmljb2RlU3RyaW5nOjpjYXNlQ29tcGFyZSAtIHNhbWUgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gZnVuY3Rpb24KKwkgICAgICAgICAgICAgICAgIGlmKDAhPShvcHRba10ub3B0aW9ucyZOb3JtYWxpemVyLkNPTVBBUkVfSUdOT1JFX0NBU0UpKSB7CisJICAgICAgICAgICAgICAgICAgICAvLyAgICByZXN1bHQ9c1tpXS4gKHNbal0sIG9wdFtrXS5vcHRpb25zKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgob3B0W2tdLm9wdGlvbnMgJiBOb3JtYWxpemVyLkZPTERfQ0FTRV9FWENMVURFX1NQRUNJQUxfSSkgPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wLnNldElnbm9yZUNhc2UodHJ1ZSwgVVRGMTYuU3RyaW5nQ29tcGFyYXRvci5GT0xEX0NBU0VfREVGQVVMVCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wLnNldElnbm9yZUNhc2UodHJ1ZSwgVVRGMTYuU3RyaW5nQ29tcGFyYXRvci5GT0xEX0NBU0VfRVhDTFVERV9TUEVDSUFMX0kpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBjb21wLnNldENvZGVQb2ludENvbXBhcmUoKG9wdFtrXS5vcHRpb25zICYgTm9ybWFsaXplci5DT01QQVJFX0NPREVfUE9JTlRfT1JERVIpICE9IDApOworICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzdWx0PWNvbXAuY2FzZUNvbXBhcmUoc1tpXSxzW2pdLCBvcHRba10ub3B0aW9ucyk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9Y29tcC5jb21wYXJlKHNbaV0sc1tqXSk7CisJICAgICAgICAgICAgICAgICAgICByZWZSZXN1bHQ9cmVmX2Nhc2VfY29tcGFyZShzW2ldLCBzW2pdLCBvcHRba10ub3B0aW9ucyk7CisJICAgICAgICAgICAgICAgICAgICBpZihzaWduKHJlc3VsdCkhPXNpZ24ocmVmUmVzdWx0KSkgeworCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycmxuKCJOb3JtYWxpemVyOjpjb21wYXJlKCAiICsgaSArIiwgIitqICsgIiwgIitrKyIoICIgK29wdFtrXS5uYW1lKyIpKT0iICsgcmVzdWx0ICsiIHNob3VsZCBiZSBzYW1lIHNpZ24gYXMgIiArIHJlZlJlc3VsdCk7CisgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgIH0KKwkgICAgICAgIH0KKwkgICAgfQorCX0KKworICAgIC8vIHZlcmlmeSB0aGF0IGNhc2UtZm9sZGluZyBkb2VzIG5vdCB1bi1GQ0Qgc3RyaW5ncworCWludCBjb3VudEZvbGRGQ0RFeGNlcHRpb25zKGludCBmb2xkaW5nT3B0aW9ucykgeworCSAgICBTdHJpbmcgcywgZDsKKwkgICAgaW50IGM7CisJICAgIGludCBjb3VudDsKKwkgICAgaW50Lyp1bnNpZ25lZCovIGNjLCB0cmFpbENDLCBmb2xkQ0MsIGZvbGRUcmFpbENDOworCSAgICBOb3JtYWxpemVyLlF1aWNrQ2hlY2tSZXN1bHQgcWNSZXN1bHQ7CisJICAgIGludCBjYXRlZ29yeTsKKwkgICAgYm9vbGVhbiBpc05GRDsKKworCisJICAgIGxvZ2xuKCJUZXN0IGlmIGNhc2UgZm9sZGluZyBtYXkgdW4tRkNEIGEgc3RyaW5nIChmb2xkaW5nIG9wdGlvbnMgMHgpIitoZXgoZm9sZGluZ09wdGlvbnMpKTsKKworCSAgICBjb3VudD0wOworCSAgICBmb3IoYz0wOyBjPD0weDEwZmZmZjsgKytjKSB7CisJICAgICAgICBjYXRlZ29yeT1VQ2hhcmFjdGVyLmdldFR5cGUoYyk7CisJICAgICAgICBpZihjYXRlZ29yeT09VUNoYXJhY3RlckNhdGVnb3J5LlVOQVNTSUdORUQpIHsKKwkgICAgICAgICAgICBjb250aW51ZTsgLy8gc2tpcCB1bmFzc2lnbmVkIGNvZGUgcG9pbnRzCisJICAgICAgICB9CisJICAgICAgICBpZihjPT0weGFjMDApIHsKKwkgICAgICAgICAgICBjPTB4ZDdhMzsgLy8gc2tpcCBIYW5ndWwgLSBubyBjYXNlIGZvbGRpbmcgdGhlcmUKKwkgICAgICAgICAgICBjb250aW51ZTsKKwkgICAgICAgIH0KKwkgICAgICAgIC8vIHNraXAgSGFuIGJsb2NrcyAtIG5vIGNhc2UgZm9sZGluZyB0aGVyZSBlaXRoZXIKKwkgICAgICAgIGlmKGM9PTB4MzQwMCkgeworCSAgICAgICAgICAgIGM9MHg0ZGI1OworCSAgICAgICAgICAgIGNvbnRpbnVlOworCSAgICAgICAgfQorCSAgICAgICAgaWYoYz09MHg0ZTAwKSB7CisJICAgICAgICAgICAgYz0weDlmYTU7CisJICAgICAgICAgICAgY29udGludWU7CisJICAgICAgICB9CisJICAgICAgICBpZihjPT0weDIwMDAwKSB7CisJICAgICAgICAgICAgYz0weDJhNmQ2OworCSAgICAgICAgICAgIGNvbnRpbnVlOworCSAgICAgICAgfQorCisJICAgICAgICBzPSBVVEYxNi52YWx1ZU9mKGMpOworCisJICAgICAgICAvLyBnZXQgbGVhZGluZyBhbmQgdHJhaWxpbmcgY2MgZm9yIGMKKwkgICAgICAgIGQ9IE5vcm1hbGl6ZXIuZGVjb21wb3NlKHMsZmFsc2UpOworCSAgICAgICAgaXNORkQ9IHM9PWQ7CisJICAgICAgICBjYz1VQ2hhcmFjdGVyLmdldENvbWJpbmluZ0NsYXNzKFVURjE2LmNoYXJBdChkLDApKTsKKwkgICAgICAgIHRyYWlsQ0M9VUNoYXJhY3Rlci5nZXRDb21iaW5pbmdDbGFzcyhVVEYxNi5jaGFyQXQoZCxkLmxlbmd0aCgpLTEpKTsKKworCSAgICAgICAgLy8gZ2V0IGxlYWRpbmcgYW5kIHRyYWlsaW5nIGNjIGZvciB0aGUgY2FzZS1mb2xkaW5nIG9mIGMKKwkgICAgICAgIFVDaGFyYWN0ZXIuZm9sZENhc2UocywoZm9sZGluZ09wdGlvbnM9PTApKTsKKwkgICAgICAgIGQgPSBOb3JtYWxpemVyLmRlY29tcG9zZShzLCBmYWxzZSk7CisJICAgICAgICBmb2xkQ0M9VUNoYXJhY3Rlci5nZXRDb21iaW5pbmdDbGFzcyhVVEYxNi5jaGFyQXQoZCwwKSk7CisJICAgICAgICBmb2xkVHJhaWxDQz1VQ2hhcmFjdGVyLmdldENvbWJpbmluZ0NsYXNzKFVURjE2LmNoYXJBdChkLGQubGVuZ3RoKCktMSkpOworCisJICAgICAgICBxY1Jlc3VsdD1Ob3JtYWxpemVyLnF1aWNrQ2hlY2socywgTm9ybWFsaXplci5GQ0QpOworCisKKwkgICAgICAgIC8vIGJhZDoKKwkgICAgICAgIC8vIC0gY2hhcmFjdGVyIG1hcHMgdG8gZW1wdHkgc3RyaW5nOiBhZGphY2VudCBjaGFyYWN0ZXJzIG1heSB0aGVuIG5lZWQgcmVvcmRlcmluZworCSAgICAgICAgLy8gLSBmb2xkaW5nIGhhcyBkaWZmZXJlbnQgbGVhZGluZy90cmFpbGluZyBjYydzLCBhbmQgdGhleSBkb24ndCBiZWNvbWUganVzdCAwCisJICAgICAgICAvLyAtIGZvbGRpbmcgaXRzZWxmIGlzIG5vdCBGQ0QKKwkgICAgICAgIGlmKCBxY1Jlc3VsdCE9Tm9ybWFsaXplci5ZRVMgfHwKKwkgICAgICAgICAgICBzLmxlbmd0aCgpPT0wIHx8CisJICAgICAgICAgICAgKGNjIT1mb2xkQ0MgJiYgZm9sZENDIT0wKSB8fCAodHJhaWxDQyE9Zm9sZFRyYWlsQ0MgJiYgZm9sZFRyYWlsQ0MhPTApCisJICAgICAgICApIHsKKwkgICAgICAgICAgICArK2NvdW50OworCSAgICAgICAgICAgIGVycmxuKCJVKyIraGV4KGMpKyI6IGNhc2UtZm9sZGluZyBtYXkgdW4tRkNEIGEgc3RyaW5nIChmb2xkaW5nIG9wdGlvbnMgMHgiK2hleChmb2xkaW5nT3B0aW9ucykrIikiKTsKKwkgICAgICAgICAgICAvL2VycmxuKCIgIGNjICUwMnggdHJhaWxDQyAlMDJ4ICAgIGZvbGRDQyhVKyUwNGx4KSAlMDJ4IGZvbGRUcmFpbENDKFUrJTA0bHgpICUwMnggICBxdWlja0NoZWNrKGZvbGRlZCk9JWQiLCBjYywgdHJhaWxDQywgVVRGMTYuY2hhckF0KGQsMCksIGZvbGRDQywgVVRGMTYuY2hhckF0KGQsZC5sZW5ndGgoKS0xKSwgZm9sZFRyYWlsQ0MsIHFjUmVzdWx0KTsKKwkgICAgICAgICAgICBjb250aW51ZTsKKwkgICAgICAgIH0KKworCSAgICAgICAgLy8gYWxzbyBiYWQ6CisJICAgICAgICAvLyBpZiBhIGNvZGUgcG9pbnQgaXMgaW4gTkZEIGJ1dCBpdHMgY2FzZSBmb2xkaW5nIGlzIG5vdCwgdGhlbgorCSAgICAgICAgLy8gdW5vcm1fY29tcGFyZSB3aWxsIGFsc28gZmFpbAorCSAgICAgICAgaWYoaXNORkQgJiYgTm9ybWFsaXplci5ZRVMhPU5vcm1hbGl6ZXIucXVpY2tDaGVjayhzLCBOb3JtYWxpemVyLk5GRCkpIHsKKwkgICAgICAgICAgICArK2NvdW50OworCSAgICAgICAgICAgIGVycmxuKCJVKyIraGV4KGMpKyI6IGNhc2UtZm9sZGluZyBtYXkgdW4tRkNEIGEgc3RyaW5nIChmb2xkaW5nIG9wdGlvbnMgMHgiK2hleChmb2xkaW5nT3B0aW9ucykrIikiKTsKKwkgICAgICAgIH0KKwkgICAgfQorCisJICAgIGxvZ2xuKCJUaGVyZSBhcmUgIitoZXgoY291bnQpKyIgY29kZSBwb2ludHMgZm9yIHdoaWNoIGNhc2UtZm9sZGluZyBtYXkgdW4tRkNEIGEgc3RyaW5nIChmb2xkaW5nIG9wdGlvbnMiK2ZvbGRpbmdPcHRpb25zKyJ4KSIgKTsKKwkgICAgcmV0dXJuIGNvdW50OworCX0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RGaW5kRm9sZEZDREV4Y2VwdGlvbnMoKSB7CisJICAgIGludCBjb3VudDsKKworCSAgICBjb3VudD1jb3VudEZvbGRGQ0RFeGNlcHRpb25zKDApOworCSAgICBjb3VudCs9Y291bnRGb2xkRkNERXhjZXB0aW9ucyhOb3JtYWxpemVyLkZPTERfQ0FTRV9FWENMVURFX1NQRUNJQUxfSSk7CisJICAgIGlmKGNvdW50PjApIHsKKwkgICAgICAgIC8vKgorCSAgICAgICAgLy8qIElmIGNhc2UtZm9sZGluZyB1bi1GQ0RzIGFueSBzdHJpbmdzLCB0aGVuIHVub3JtX2NvbXBhcmUoKSBtdXN0IGJlCisJICAgICAgICAvLyogcmUtaW1wbGVtZW50ZWQuCisJICAgICAgICAvLyogSXQgY3VycmVudGx5IGFzc3VtZXMgdGhhdCBvbmUgY2FuIGNoZWNrIGZvciBGQ0QgdGhlbiBjYXNlLWZvbGQKKwkgICAgICAgIC8vKiBhbmQgdGhlbiBzdGlsbCBoYXZlIEZDRCBzdHJpbmdzIGZvciByYXcgZGVjb21wb3NpdGlvbiB3aXRob3V0IHJlb3JkZXJpbmcuCisJICAgICAgICAvLyoKKwkgICAgICAgIGVycmxuKCJlcnJvcjogVGhlcmUgYXJlICIrY291bnQrIiBjb2RlIHBvaW50cyBmb3Igd2hpY2ggY2FzZS1mb2xkaW5nIisKKwkgICAgICAgICAgICAgICIgbWF5IHVuLUZDRCBhIHN0cmluZyBmb3IgYWxsIGZvbGRpbmcgb3B0aW9ucy5cbiBTZWUgY29tbWVudCIrCisgICAgICAgICAgICAgICAgICAiIGluIEJhc2ljTm9ybWFsaXplclRlc3Q6OkZpbmRGb2xkRkNERXhjZXB0aW9ucygpISIpOworCSAgICB9CisJfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RDb21iaW5pbmdNYXJrcygpeworICAgICAgICBTdHJpbmcgc3JjID0gIlx1MGY3MVx1MGY3Mlx1MGY3M1x1MGY3NFx1MGY3NSI7CisgICAgICAgIFN0cmluZyBleHBlY3RlZCA9ICJcdTBGNzFcdTBGNzFcdTBGNzFcdTBGNzJcdTBGNzJcdTBGNzRcdTBGNzQiOworICAgICAgICBTdHJpbmcgcmVzdWx0ID0gTm9ybWFsaXplci5kZWNvbXBvc2Uoc3JjLGZhbHNlKTsKKyAgICAgICAgaWYoIWV4cGVjdGVkLmVxdWFscyhyZXN1bHQpKXsKKyAgICAgICAgICAgIGVycmxuKCJSZW9yZGVyaW5nIG9mIGNvbWJpbmluZyBtYXJrcyBmYWlsZWQuIEV4cGVjdGVkOiAiK1V0aWxpdHkuaGV4KGV4cGVjdGVkKSsiIEdvdDogIisgVXRpbGl0eS5oZXgocmVzdWx0KSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKgorICAgICAqIFJlLWVuYWJsZSB0aGlzIHRlc3Qgd2hlbiBVVEMgZml4ZXMgVUFYIDIxCisgICAgcHVibGljIHZvaWQgVGVzdFVBWDIxRmFpbHVyZSgpeworICAgICAgICBmaW5hbCBTdHJpbmdbXVtdIGNhc2VzID0gbmV3IFN0cmluZ1tdW117CisJCSAgICAgICAgeyJcdTAwNjFcdTAzNDVcdTAzNjBcdTAzNDVcdTAwNjIiLCAiXHUwMDYxXHUwMzYwXHUwMzQ1XHUwMzQ1XHUwMDYyIn0sCisJCQkJeyJcdTAwNjFcdTAzNDVcdTAzNDVcdTAzNjBcdTAwNjIiLCAiXHUwMDYxXHUwMzYwXHUwMzQ1XHUwMzQ1XHUwMDYyIn0sCisJCQkJeyJcdTAwNjFcdTAzNDVcdTAzNjBcdTAzNjJcdTAzNjBcdTAwNjIiLCAiXHUwMDYxXHUwMzYyXHUwMzYwXHUwMzYwXHUwMzQ1XHUwMDYyIn0sCisJCQkJeyJcdTAwNjFcdTAzNjBcdTAzNDVcdTAzNjBcdTAzNjJcdTAwNjIiLCAiXHUwMDYxXHUwMzYyXHUwMzYwXHUwMzYwXHUwMzQ1XHUwMDYyIn0sCisJCQkJeyJcdTAwNjFcdTAzNDVcdTAzNjBcdTAzNjJcdTAzNjFcdTAwNjIiLCAiXHUwMDYxXHUwMzYyXHUwMzYwXHUwMzYxXHUwMzQ1XHUwMDYyIn0sCisJCQkJeyJcdTAwNjFcdTAzNjFcdTAzNDVcdTAzNjBcdTAzNjJcdTAwNjIiLCAiXHUwMDYxXHUwMzYyXHUwMzYxXHUwMzYwXHUwMzQ1XHUwMDYyIn0sCisgICAgICAgIH07CisgICAgICAgIGZvcihpbnQgaSA9IDA7IGk8IGNhc2VzLmxlbmd0aDsgaSsrKXsKKwkgICAgICAgIFN0cmluZyBzMSA9Y2FzZXNbMF1bMF07IAorCSAgICAgICAgU3RyaW5nIHMyID0gY2FzZXNbMF1bMV07CisJICAgICAgICBpZiggKE5vcm1hbGl6ZXIuY29tcGFyZShzMSxzMixOb3JtYWxpemVyLkZPTERfQ0FTRV9ERUZBVUxUID09MCkvL2Nhc2Ugc2Vuc2l0aXZlIGNvbXBhcmUKKyAgICAgICAgICAgICAgICAmJgorICAgICAgICAgICAgICAgIChOb3JtYWxpemVyLmNvbXBhcmUoczEsczIsTm9ybWFsaXplci5DT01QQVJFX0lHTk9SRV9DQVNFKSE9MCkpeworCSAgICAgICAgICAgIGVycmxuKCJOb3JtYWxpemVyLmNvbXBhcmUoKSBmYWlsZWQgZm9yIHMxOiAiIAorCSAgICAgICAgICAgICAgICAgICAgKyBVdGlsaXR5LmhleChzMSkgKyIgczI6ICIgKyBVdGlsaXR5LmhleChzMikpOworCSAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEZDTkZLQ0Nsb3N1cmUoKSB7CisgICAgICAgIGZpbmFsIGNsYXNzIFRlc3RTdHJ1Y3R7CisgICAgICAgICAgICBpbnQgYzsKKyAgICAgICAgICAgIFN0cmluZyBzOworICAgICAgICAgICAgVGVzdFN0cnVjdChpbnQgY3AsIFN0cmluZyBzcmMpeworICAgICAgICAgICAgICAgIGM9Y3A7CisgICAgICAgICAgICAgICAgcz1zcmM7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICBUZXN0U3RydWN0W10gdGVzdHM9IG5ldyBUZXN0U3RydWN0W117CisgICAgICAgICAgICBuZXcgVGVzdFN0cnVjdCggMHgwMzdBLCAiXHUwMDIwXHUwM0I5IiApLAorICAgICAgICAgICAgbmV3IFRlc3RTdHJ1Y3QoIDB4MDNEMiwgIlx1MDNDNSIgKSwKKyAgICAgICAgICAgIG5ldyBUZXN0U3RydWN0KCAweDIwQTgsICJcdTAwNzJcdTAwNzMiICkgLAorICAgICAgICAgICAgbmV3IFRlc3RTdHJ1Y3QoIDB4MjEwQiwgIlx1MDA2OCIgKSwKKyAgICAgICAgICAgIG5ldyBUZXN0U3RydWN0KCAweDIxMEMsICJcdTAwNjgiICksCisgICAgICAgICAgICBuZXcgVGVzdFN0cnVjdCggMHgyMTIxLCAiXHUwMDc0XHUwMDY1XHUwMDZDIiApLAorICAgICAgICAgICAgbmV3IFRlc3RTdHJ1Y3QoIDB4MjEyMiwgIlx1MDA3NFx1MDA2RCIgKSwKKyAgICAgICAgICAgIG5ldyBUZXN0U3RydWN0KCAweDIxMjgsICJcdTAwN0EiICksCisgICAgICAgICAgICBuZXcgVGVzdFN0cnVjdCggMHgxRDVEQiwiXHUwMDY4IiApLAorICAgICAgICAgICAgbmV3IFRlc3RTdHJ1Y3QoIDB4MUQ1RUQsIlx1MDA3QSIgKSwKKyAgICAgICAgICAgIG5ldyBUZXN0U3RydWN0KCAweDAwNjEsICIiICkKKyAgICAgICAgfTsKKyAgICAKKworICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgdGVzdHMubGVuZ3RoOyArKyBpKSB7CisgICAgICAgICAgICBTdHJpbmcgcmVzdWx0PU5vcm1hbGl6ZXIuZ2V0RkNfTkZLQ19DbG9zdXJlKHRlc3RzW2ldLmMpOworICAgICAgICAgICAgaWYoIXJlc3VsdC5lcXVhbHMobmV3IFN0cmluZyh0ZXN0c1tpXS5zKSkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiZ2V0RkNfTkZLQ19DbG9zdXJlKFUrIitJbnRlZ2VyLnRvSGV4U3RyaW5nKHRlc3RzW2ldLmMpKyIpIGlzIHdyb25nIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgLyogZXJyb3IgaGFuZGxpbmcgKi8KKworICAgICAgICBpbnQgbGVuZ3RoPU5vcm1hbGl6ZXIuZ2V0RkNfTkZLQ19DbG9zdXJlKDB4NWMsIG51bGwpOworICAgICAgICBpZihsZW5ndGghPTApeworICAgICAgICAgICAgZXJybG4oImdldEZDX05GS0NfQ2xvc3VyZSBkaWQgbm90IHBlcmZvcm0gZXJyb3IgaGFuZGxpbmcgY29ycmVjdGx5Iik7CisgICAgICAgIH0KKyAgICB9CisgICAgcHVibGljIHZvaWQgVGVzdEJ1Z0oyMzI0KCl7CisgICAgICAgLyogU3RyaW5nW10gaW5wdXQgPSBuZXcgU3RyaW5nW117CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8iXHUzMEZEXHUzMDk5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUzMEZBXHUzMDlBIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUzMEZCXHUzMDlBIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUzMEZDXHUzMDlBIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUzMEZFXHUzMDlBIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUzMEZEXHUzMDlBIiwKKworICAgICAgICB9OyovCisgICAgICAgIFN0cmluZyB0cm91Ymxlc29tZSA9ICJcdTMwOUEiOworICAgICAgICBmb3IoaW50IGk9MHgzMDAwOyBpPDB4MzEwMDtpKyspeworICAgICAgICAgICAgU3RyaW5nIGlucHV0ID0gKChjaGFyKWkpK3Ryb3VibGVzb21lOworICAgICAgICAgICAgdHJ5eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBTdHJpbmcgcmVzdWx0ID0gTm9ybWFsaXplci5jb21wb3NlKGlucHV0LGZhbHNlKTsKKyAgICAgICAgICAgIH1jYXRjaChJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIGUpeworICAgICAgICAgICAgICAgIGVycmxuKCJjb21wb3NlKCkgZmFpbGVkIGZvciBpbnB1dDogIiArIFV0aWxpdHkuaGV4KGlucHV0KSArICIgRXhjZXB0aW9uOiAiICsgZS50b1N0cmluZygpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgIH0KKyAgIC8qIAorICAgIFVOU0FGRV9TVEFSVFNbRF0gPSBuZXcgVW5pY29kZVNldCgiW1x1MEY3M1x1MEY3NVx1MEY4MV0iLCBmYWxzZSk7CisgICAgVU5TQUZFX1NUQVJUU1tDXSA9IG5ldyBVbmljb2RlU2V0KCJbXHUwOUJFXHUwOUQ3XHUwQjNFXHUwQjU2LVx1MEI1N1x1MEJCRVx1MEJEN1x1MENDMlx1MENENS1cdTBDRDYiCisgICAgICAgICsgIlx1MEQzRVx1MEQ1N1x1MERDRlx1MERERlx1MEY3M1x1MEY3NVx1MEY4MVx1MTAyRVx1MTE2MS1cdTExNzVcdTExQTgtXHUxMUMyXSIsIGZhbHNlKTsKKyAgICBVTlNBRkVfU1RBUlRTW0tEXSA9IG5ldyBVbmljb2RlU2V0KCJbXHUwRjczXHUwRjc1XHUwRjgxXHVGRjlFLVx1RkY5Rl0iLCBmYWxzZSk7CisgICAgVU5TQUZFX1NUQVJUU1tLQ10gPSBuZXcgVW5pY29kZVNldCgiW1x1MDlCRVx1MDlEN1x1MEIzRVx1MEI1Ni1cdTBCNTdcdTBCQkVcdTBCRDdcdTBDQzJcdTBDRDUtXHUwQ0Q2IgorICAgICAgICArICJcdTBEM0VcdTBENTdcdTBEQ0ZcdTBEREZcdTBGNzNcdTBGNzVcdTBGODFcdTEwMkVcdTExNjEtXHUxMTc1XHUxMUE4LVx1MTFDMlx1MzEzM1x1MzEzNS1cdTMxMzYiCisgICAgICAgICsgIlx1MzEzQS1cdTMxM0ZcdTMxNEYtXHUzMTYzXHVGRjlFLVx1RkY5Rlx1RkZBM1x1RkZBNS1cdUZGQTZcdUZGQUEtXHVGRkFGXHVGRkMyLVx1RkZDN1x1RkZDQS1cdUZGQ0YiCisgICAgICAgICsgIlx1RkZEMi1cdUZGRDdcdUZGREEtXHVGRkRDXSIsIGZhbHNlKTsKKyAgICAqLworICAgICBzdGF0aWMgZmluYWwgaW50IEQgPSAwLCBDID0gMSwgS0Q9IDIsIEtDID0gMywgRkNEPTQsIE5PTkU9NTsgICAKKyAgICBwcml2YXRlIHN0YXRpYyBVbmljb2RlU2V0W10gaW5pdFNraXBwYWJsZXMoVW5pY29kZVNldFtdIHNraXBwYWJsZXMpeworICAgICAgICBpZiggc2tpcHBhYmxlcy5sZW5ndGggPCA0ICl7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgICAgICBza2lwcGFibGVzW0RdID0gbmV3IFVuaWNvZGVTZXQoCisgICAgICAgICAgICAiW15cXHUwMEMwLVxcdTAwQzVcXHUwMEM3LVxcdTAwQ0ZcXHUwMEQxLVxcdTAwRDZcXHUwMEQ5LVxcdTAwREQiCisgICAgICAgICAgICArICJcXHUwMEUwLVxcdTAwRTVcXHUwMEU3LVxcdTAwRUZcXHUwMEYxLVxcdTAwRjZcXHUwMEY5LVxcdTAwRkQiCisgICAgICAgICAgICArICJcXHUwMEZGLVxcdTAxMEZcXHUwMTEyLVxcdTAxMjVcXHUwMTI4LVxcdTAxMzBcXHUwMTM0LVxcdTAxMzciCisgICAgICAgICAgICArICJcXHUwMTM5LVxcdTAxM0VcXHUwMTQzLVxcdTAxNDhcXHUwMTRDLVxcdTAxNTFcXHUwMTU0LVxcdTAxNjUiCisgICAgICAgICAgICArICJcXHUwMTY4LVxcdTAxN0VcXHUwMUEwLVxcdTAxQTFcXHUwMUFGLVxcdTAxQjBcXHUwMUNELVxcdTAxREMiCisgICAgICAgICAgICArICJcXHUwMURFLVxcdTAxRTNcXHUwMUU2LVxcdTAxRjBcXHUwMUY0LVxcdTAxRjVcXHUwMUY4LVxcdTAyMUIiCisgICAgICAgICAgICArICJcXHUwMjFFLVxcdTAyMUZcXHUwMjI2LVxcdTAyMzNcXHUwMzAwLVxcdTAzNEVcXHUwMzYwLVxcdTAzNkYiCisgICAgICAgICAgICArICJcXHUwMzc0XFx1MDM3RVxcdTAzODUtXFx1MDM4QVxcdTAzOENcXHUwMzhFLVxcdTAzOTBcXHUwM0FBLSIKKyAgICAgICAgICAgICsgIlxcdTAzQjBcXHUwM0NBLVxcdTAzQ0VcXHUwM0QzLVxcdTAzRDRcXHUwNDAwLVxcdTA0MDFcXHUwNDAzIgorICAgICAgICAgICAgKyAiXFx1MDQwN1xcdTA0MEMtXFx1MDQwRVxcdTA0MTlcXHUwNDM5XFx1MDQ1MC1cXHUwNDUxXFx1MDQ1MyIKKyAgICAgICAgICAgICsgIlxcdTA0NTdcXHUwNDVDLVxcdTA0NUVcXHUwNDc2LVxcdTA0NzdcXHUwNDgzLVxcdTA0ODZcXHUwNEMxLSIKKyAgICAgICAgICAgICsgIlxcdTA0QzJcXHUwNEQwLVxcdTA0RDNcXHUwNEQ2LVxcdTA0RDdcXHUwNERBLVxcdTA0REZcXHUwNEUyLSIKKyAgICAgICAgICAgICsgIlxcdTA0RTdcXHUwNEVBLVxcdTA0RjVcXHUwNEY4LVxcdTA0RjlcXHUwNTkxLVxcdTA1QTFcXHUwNUEzLSIKKyAgICAgICAgICAgICsgIlxcdTA1QjlcXHUwNUJCLVxcdTA1QkRcXHUwNUJGXFx1MDVDMS1cXHUwNUMyXFx1MDVDNFxcdTA2MjItIgorICAgICAgICAgICAgKyAiXFx1MDYyNlxcdTA2NEItXFx1MDY1NVxcdTA2NzBcXHUwNkMwXFx1MDZDMlxcdTA2RDNcXHUwNkQ2LSIKKyAgICAgICAgICAgICsgIlxcdTA2RENcXHUwNkRGLVxcdTA2RTRcXHUwNkU3LVxcdTA2RThcXHUwNkVBLVxcdTA2RURcXHUwNzExIgorICAgICAgICAgICAgKyAiXFx1MDczMC1cXHUwNzRBXFx1MDkyOVxcdTA5MzFcXHUwOTM0XFx1MDkzQ1xcdTA5NERcXHUwOTUxLSIKKyAgICAgICAgICAgICsgIlxcdTA5NTRcXHUwOTU4LVxcdTA5NUZcXHUwOUJDXFx1MDlDQi1cXHUwOUNEXFx1MDlEQy1cXHUwOUREIgorICAgICAgICAgICAgKyAiXFx1MDlERlxcdTBBMzNcXHUwQTM2XFx1MEEzQ1xcdTBBNERcXHUwQTU5LVxcdTBBNUJcXHUwQTVFXFx1MEFCQyIKKyAgICAgICAgICAgICsgIlxcdTBBQ0RcXHUwQjNDXFx1MEI0OFxcdTBCNEItXFx1MEI0RFxcdTBCNUMtXFx1MEI1RFxcdTBCOTQiCisgICAgICAgICAgICArICJcXHUwQkNBLVxcdTBCQ0RcXHUwQzQ4XFx1MEM0RFxcdTBDNTUtXFx1MEM1NlxcdTBDQzBcXHUwQ0M3LSIKKyAgICAgICAgICAgICsgIlxcdTBDQzhcXHUwQ0NBLVxcdTBDQ0JcXHUwQ0NEXFx1MEQ0QS1cXHUwRDREXFx1MERDQVxcdTBEREEiCisgICAgICAgICAgICArICJcXHUwRERDLVxcdTBEREVcXHUwRTM4LVxcdTBFM0FcXHUwRTQ4LVxcdTBFNEJcXHUwRUI4LVxcdTBFQjkiCisgICAgICAgICAgICArICJcXHUwRUM4LVxcdTBFQ0JcXHUwRjE4LVxcdTBGMTlcXHUwRjM1XFx1MEYzN1xcdTBGMzlcXHUwRjQzIgorICAgICAgICAgICAgKyAiXFx1MEY0RFxcdTBGNTJcXHUwRjU3XFx1MEY1Q1xcdTBGNjlcXHUwRjcxLVxcdTBGNzZcXHUwRjc4XFx1MEY3QSIKKyAgICAgICAgICAgICsgIi1cXHUwRjdEXFx1MEY4MC1cXHUwRjg0XFx1MEY4Ni1cXHUwRjg3XFx1MEY5M1xcdTBGOURcXHUwRkEyIgorICAgICAgICAgICAgKyAiXFx1MEZBN1xcdTBGQUNcXHUwRkI5XFx1MEZDNlxcdTEwMjZcXHUxMDM3XFx1MTAzOVxcdTE3MTRcXHUxNzM0IgorICAgICAgICAgICAgKyAiXFx1MTdEMlxcdTE4QTlcXHUxRTAwLVxcdTFFOTlcXHUxRTlCXFx1MUVBMC1cXHUxRUY5XFx1MUYwMC0iCisgICAgICAgICAgICArICJcXHUxRjE1XFx1MUYxOC1cXHUxRjFEXFx1MUYyMC1cXHUxRjQ1XFx1MUY0OC1cXHUxRjREXFx1MUY1MC0iCisgICAgICAgICAgICArICJcXHUxRjU3XFx1MUY1OVxcdTFGNUJcXHUxRjVEXFx1MUY1Ri1cXHUxRjdEXFx1MUY4MC1cXHUxRkI0IgorICAgICAgICAgICAgKyAiXFx1MUZCNi1cXHUxRkJDXFx1MUZCRVxcdTFGQzEtXFx1MUZDNFxcdTFGQzYtXFx1MUZEM1xcdTFGRDYtIgorICAgICAgICAgICAgKyAiXFx1MUZEQlxcdTFGREQtXFx1MUZFRlxcdTFGRjItXFx1MUZGNFxcdTFGRjYtXFx1MUZGRFxcdTIwMDAtIgorICAgICAgICAgICAgKyAiXFx1MjAwMVxcdTIwRDAtXFx1MjBEQ1xcdTIwRTFcXHUyMEU1LVxcdTIwRUFcXHUyMTI2XFx1MjEyQS0iCisgICAgICAgICAgICArICJcXHUyMTJCXFx1MjE5QS1cXHUyMTlCXFx1MjFBRVxcdTIxQ0QtXFx1MjFDRlxcdTIyMDRcXHUyMjA5IgorICAgICAgICAgICAgKyAiXFx1MjIwQ1xcdTIyMjRcXHUyMjI2XFx1MjI0MVxcdTIyNDRcXHUyMjQ3XFx1MjI0OVxcdTIyNjBcXHUyMjYyIgorICAgICAgICAgICAgKyAiXFx1MjI2RC1cXHUyMjcxXFx1MjI3NC1cXHUyMjc1XFx1MjI3OC1cXHUyMjc5XFx1MjI4MC1cXHUyMjgxIgorICAgICAgICAgICAgKyAiXFx1MjI4NC1cXHUyMjg1XFx1MjI4OC1cXHUyMjg5XFx1MjJBQy1cXHUyMkFGXFx1MjJFMC1cXHUyMkUzIgorICAgICAgICAgICAgKyAiXFx1MjJFQS1cXHUyMkVEXFx1MjMyOS1cXHUyMzJBXFx1MkFEQ1xcdTMwMkEtXFx1MzAyRlxcdTMwNEMiCisgICAgICAgICAgICArICJcXHUzMDRFXFx1MzA1MFxcdTMwNTJcXHUzMDU0XFx1MzA1NlxcdTMwNThcXHUzMDVBXFx1MzA1Q1xcdTMwNUUiCisgICAgICAgICAgICArICJcXHUzMDYwXFx1MzA2MlxcdTMwNjVcXHUzMDY3XFx1MzA2OVxcdTMwNzAtXFx1MzA3MVxcdTMwNzMtIgorICAgICAgICAgICAgKyAiXFx1MzA3NFxcdTMwNzYtXFx1MzA3N1xcdTMwNzktXFx1MzA3QVxcdTMwN0MtXFx1MzA3RFxcdTMwOTQiCisgICAgICAgICAgICArICJcXHUzMDk5LVxcdTMwOUFcXHUzMDlFXFx1MzBBQ1xcdTMwQUVcXHUzMEIwXFx1MzBCMlxcdTMwQjRcXHUzMEI2IgorICAgICAgICAgICAgKyAiXFx1MzBCOFxcdTMwQkFcXHUzMEJDXFx1MzBCRVxcdTMwQzBcXHUzMEMyXFx1MzBDNVxcdTMwQzdcXHUzMEM5IgorICAgICAgICAgICAgKyAiXFx1MzBEMC1cXHUzMEQxXFx1MzBEMy1cXHUzMEQ0XFx1MzBENi1cXHUzMEQ3XFx1MzBEOS1cXHUzMERBIgorICAgICAgICAgICAgKyAiXFx1MzBEQy1cXHUzMEREXFx1MzBGNFxcdTMwRjctXFx1MzBGQVxcdTMwRkVcXHVBQzAwLVxcdUQ3QTMiCisgICAgICAgICAgICArICJcXHVGOTAwLVxcdUZBMERcXHVGQTEwXFx1RkExMlxcdUZBMTUtXFx1RkExRVxcdUZBMjBcXHVGQTIyIgorICAgICAgICAgICAgKyAiXFx1RkEyNS1cXHVGQTI2XFx1RkEyQS1cXHVGQTJEXFx1RkEzMC1cXHVGQTZBXFx1RkIxRC1cXHVGQjFGIgorICAgICAgICAgICAgKyAiXFx1RkIyQS1cXHVGQjM2XFx1RkIzOC1cXHVGQjNDXFx1RkIzRVxcdUZCNDAtXFx1RkI0MVxcdUZCNDMtIgorICAgICAgICAgICAgKyAiXFx1RkI0NFxcdUZCNDYtXFx1RkI0RVxcdUZFMjAtXFx1RkUyM1xcVTAwMDFEMTVFLVxcVTAwMDFEMTY5IgorICAgICAgICAgICAgKyAiXFxVMDAwMUQxNkQtXFxVMDAwMUQxNzJcXFUwMDAxRDE3Qi1cXFUwMDAxRDE4MlxcVTAwMDFEMTg1LSIKKyAgICAgICAgICAgICsgIlxcVTAwMDFEMThCXFxVMDAwMUQxQUEtXFxVMDAwMUQxQURcXFUwMDAxRDFCQi1cXFUwMDAxRDFDMFxcVTAwMDIiCisgICAgICAgICAgICArICJGODAwLVxcVTAwMDJGQTFEXSIsIGZhbHNlKTsKKyAgICAvKlVuaWNvZGU6IAorICAgICAgICAgICJbXj8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tIgorICAgICAgICArICI/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Pz8/LT8/Py0/Py0/Py0/Py0/Py0/Pz8/LT8/Pz8tPz8/Py0/Py0/Py0/IgorICAgICAgICArICI/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/Py0/Pz8tPz8tPz8/Pz8/LT8/LT8/LT8/LT8/Py0/Pz8/IgorICAgICAgICArICI/Pz8tPz8tPz8/LT8/LT8/Pz8/Pz8tPz8/Pz8/Py0/Py0/Pz8tPz8/Py0/Pz8tPz8tPz8/LT8/Pz8tPz8tPz8tIgorICAgICAgICArICI/Py0/Py0/Py0/Pz8/Pz8/Pz8/Py0/Pz8tPz8tPz8tPz8/Pz8/Pz8/Pz8/Pz8/Py0/Pz8tPz8tPz8tPz8tPz8tIgorICAgICAgICArICI/Py0/Pz8/Py0/Py0/Py0/Pz8tPz8tPz8tPz8tPz8tPz8tP1w/LVw/Py0/Pz8tPz8/LT8/LT8/Py0/Pz8/Pz8/IgorICAgICAgICArICI/Pz8/Pz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8/LT8/Pz8/Pz8/Pz8/Pz8/Pz8/LT8/LT8/LT8/IgorICAgICAgICArICItPz8tPz8/LT8/Pz8/Pz8/Pz8/Pz8/Pz8/Py0/Py0/Py0/Py0/Py0/Pz8tPz8/LT8/LT8/Pz8tPz8/Py0/Py0/IgorICAgICAgICArICI/LT8/LT8/LT8/LT8/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/XSIqLworICAgIAorICAgICAgICBza2lwcGFibGVzW0NdID0gbmV3IFVuaWNvZGVTZXQoCisgICAgICAgICAgICAiW148LT5BLVBSLVphLXByLXpcXHUwMEE4XFx1MDBDMC1cXHUwMENGXFx1MDBEMS1cXHUwMEQ2XFx1MDBEOC0iCisgICAgICAgICAgICArICJcXHUwMEREXFx1MDBFMC1cXHUwMEVGXFx1MDBGMS1cXHUwMEY2XFx1MDBGOC1cXHUwMEZEXFx1MDBGRi0iCisgICAgICAgICAgICArICJcXHUwMTAzXFx1MDEwNi1cXHUwMTBGXFx1MDExMi1cXHUwMTE3XFx1MDExQS1cXHUwMTIxXFx1MDEyNC0iCisgICAgICAgICAgICArICJcXHUwMTI1XFx1MDEyOC1cXHUwMTJEXFx1MDEzMFxcdTAxMzktXFx1MDEzQVxcdTAxM0QtXFx1MDEzRSIKKyAgICAgICAgICAgICsgIlxcdTAxNDMtXFx1MDE0NFxcdTAxNDctXFx1MDE0OFxcdTAxNEMtXFx1MDE1MVxcdTAxNTQtXFx1MDE1NSIKKyAgICAgICAgICAgICsgIlxcdTAxNTgtXFx1MDE1RFxcdTAxNjAtXFx1MDE2MVxcdTAxNjQtXFx1MDE2NVxcdTAxNjgtXFx1MDE3MSIKKyAgICAgICAgICAgICsgIlxcdTAxNzQtXFx1MDE3RlxcdTAxQTAtXFx1MDFBMVxcdTAxQUYtXFx1MDFCMFxcdTAxQjdcXHUwMUNELSIKKyAgICAgICAgICAgICsgIlxcdTAxRENcXHUwMURFLVxcdTAxRTFcXHUwMUU2LVxcdTAxRUJcXHUwMUY0LVxcdTAxRjVcXHUwMUY4LSIKKyAgICAgICAgICAgICsgIlxcdTAxRkJcXHUwMjAwLVxcdTAyMUJcXHUwMjFFLVxcdTAyMUZcXHUwMjI2LVxcdTAyMzNcXHUwMjkyIgorICAgICAgICAgICAgKyAiXFx1MDMwMC1cXHUwMzRFXFx1MDM2MC1cXHUwMzZGXFx1MDM3NFxcdTAzN0VcXHUwMzg3XFx1MDM5MSIKKyAgICAgICAgICAgICsgIlxcdTAzOTVcXHUwMzk3XFx1MDM5OVxcdTAzOUZcXHUwM0ExXFx1MDNBNVxcdTAzQTlcXHUwM0FDXFx1MDNBRSIKKyAgICAgICAgICAgICsgIlxcdTAzQjFcXHUwM0I1XFx1MDNCN1xcdTAzQjlcXHUwM0JGXFx1MDNDMVxcdTAzQzVcXHUwM0M5LVxcdTAzQ0IiCisgICAgICAgICAgICArICJcXHUwM0NFXFx1MDNEMlxcdTA0MDZcXHUwNDEwXFx1MDQxM1xcdTA0MTUtXFx1MDQxOFxcdTA0MUFcXHUwNDFFIgorICAgICAgICAgICAgKyAiXFx1MDQyM1xcdTA0MjdcXHUwNDJCXFx1MDQyRFxcdTA0MzBcXHUwNDMzXFx1MDQzNS1cXHUwNDM4XFx1MDQzQSIKKyAgICAgICAgICAgICsgIlxcdTA0M0VcXHUwNDQzXFx1MDQ0N1xcdTA0NEJcXHUwNDREXFx1MDQ1NlxcdTA0NzQtXFx1MDQ3NVxcdTA0ODMiCisgICAgICAgICAgICArICItXFx1MDQ4NlxcdTA0RDgtXFx1MDREOVxcdTA0RTgtXFx1MDRFOVxcdTA1OTEtXFx1MDVBMVxcdTA1QTMtIgorICAgICAgICAgICAgKyAiXFx1MDVCOVxcdTA1QkItXFx1MDVCRFxcdTA1QkZcXHUwNUMxLVxcdTA1QzJcXHUwNUM0XFx1MDYyMi0iCisgICAgICAgICAgICArICJcXHUwNjIzXFx1MDYyN1xcdTA2NDhcXHUwNjRBLVxcdTA2NTVcXHUwNjcwXFx1MDZDMVxcdTA2RDJcXHUwNkQ1IgorICAgICAgICAgICAgKyAiLVxcdTA2RENcXHUwNkRGLVxcdTA2RTRcXHUwNkU3LVxcdTA2RThcXHUwNkVBLVxcdTA2RURcXHUwNzExIgorICAgICAgICAgICAgKyAiXFx1MDczMC1cXHUwNzRBXFx1MDkyOFxcdTA5MzBcXHUwOTMzXFx1MDkzQ1xcdTA5NERcXHUwOTUxLSIKKyAgICAgICAgICAgICsgIlxcdTA5NTRcXHUwOTU4LVxcdTA5NUZcXHUwOUJDXFx1MDlCRVxcdTA5QzdcXHUwOUNEXFx1MDlEN1xcdTA5REMiCisgICAgICAgICAgICArICItXFx1MDlERFxcdTA5REZcXHUwQTMzXFx1MEEzNlxcdTBBM0NcXHUwQTREXFx1MEE1OS1cXHUwQTVCIgorICAgICAgICAgICAgKyAiXFx1MEE1RVxcdTBBQkNcXHUwQUNEXFx1MEIzQ1xcdTBCM0VcXHUwQjQ3XFx1MEI0RFxcdTBCNTYtXFx1MEI1NyIKKyAgICAgICAgICAgICsgIlxcdTBCNUMtXFx1MEI1RFxcdTBCOTJcXHUwQkJFXFx1MEJDNi1cXHUwQkM3XFx1MEJDRFxcdTBCRDciCisgICAgICAgICAgICArICJcXHUwQzQ2XFx1MEM0RFxcdTBDNTUtXFx1MEM1NlxcdTBDQkZcXHUwQ0MyXFx1MENDNlxcdTBDQ0FcXHUwQ0NEIgorICAgICAgICAgICAgKyAiXFx1MENENS1cXHUwQ0Q2XFx1MEQzRVxcdTBENDYtXFx1MEQ0N1xcdTBENERcXHUwRDU3XFx1MERDQSIKKyAgICAgICAgICAgICsgIlxcdTBEQ0ZcXHUwREQ5XFx1MEREQ1xcdTBEREZcXHUwRTM4LVxcdTBFM0FcXHUwRTQ4LVxcdTBFNEIiCisgICAgICAgICAgICArICJcXHUwRUI4LVxcdTBFQjlcXHUwRUM4LVxcdTBFQ0JcXHUwRjE4LVxcdTBGMTlcXHUwRjM1XFx1MEYzNyIKKyAgICAgICAgICAgICsgIlxcdTBGMzlcXHUwRjQzXFx1MEY0RFxcdTBGNTJcXHUwRjU3XFx1MEY1Q1xcdTBGNjlcXHUwRjcxLVxcdTBGNzYiCisgICAgICAgICAgICArICJcXHUwRjc4XFx1MEY3QS1cXHUwRjdEXFx1MEY4MC1cXHUwRjg0XFx1MEY4Ni1cXHUwRjg3XFx1MEY5MyIKKyAgICAgICAgICAgICsgIlxcdTBGOURcXHUwRkEyXFx1MEZBN1xcdTBGQUNcXHUwRkI5XFx1MEZDNlxcdTEwMjVcXHUxMDJFXFx1MTAzNyIKKyAgICAgICAgICAgICsgIlxcdTEwMzlcXHUxMTAwLVxcdTExMTJcXHUxMTYxLVxcdTExNzVcXHUxMUE4LVxcdTExQzJcXHUxNzE0IgorICAgICAgICAgICAgKyAiXFx1MTczNFxcdTE3RDJcXHUxOEE5XFx1MUUwMC1cXHUxRTAzXFx1MUUwQS1cXHUxRTBGXFx1MUUxMi0iCisgICAgICAgICAgICArICJcXHUxRTFCXFx1MUUyMC1cXHUxRTI3XFx1MUUyQS1cXHUxRTQxXFx1MUU0NC1cXHUxRTUzXFx1MUU1OC0iCisgICAgICAgICAgICArICJcXHUxRTdEXFx1MUU4MC1cXHUxRTg3XFx1MUU4RS1cXHUxRTkxXFx1MUU5Ni1cXHUxRTk5XFx1MUVBMC0iCisgICAgICAgICAgICArICJcXHUxRUYzXFx1MUVGNi1cXHUxRUY5XFx1MUYwMC1cXHUxRjExXFx1MUYxOC1cXHUxRjE5XFx1MUYyMC0iCisgICAgICAgICAgICArICJcXHUxRjMxXFx1MUYzOC1cXHUxRjM5XFx1MUY0MC1cXHUxRjQxXFx1MUY0OC1cXHUxRjQ5XFx1MUY1MC0iCisgICAgICAgICAgICArICJcXHUxRjUxXFx1MUY1OVxcdTFGNjAtXFx1MUY3MVxcdTFGNzMtXFx1MUY3NVxcdTFGNzdcXHUxRjc5IgorICAgICAgICAgICAgKyAiXFx1MUY3Qi1cXHUxRjdEXFx1MUY4MC1cXHUxRjgxXFx1MUY4OC1cXHUxRjg5XFx1MUY5MC1cXHUxRjkxIgorICAgICAgICAgICAgKyAiXFx1MUY5OC1cXHUxRjk5XFx1MUZBMC1cXHUxRkExXFx1MUZBOC1cXHUxRkE5XFx1MUZCM1xcdTFGQjYiCisgICAgICAgICAgICArICJcXHUxRkJCLVxcdTFGQkNcXHUxRkJFLVxcdTFGQkZcXHUxRkMzXFx1MUZDNlxcdTFGQzlcXHUxRkNCLSIKKyAgICAgICAgICAgICsgIlxcdTFGQ0NcXHUxRkQzXFx1MUZEQlxcdTFGRTNcXHUxRkVCXFx1MUZFRS1cXHUxRkVGXFx1MUZGM1xcdTFGRjYiCisgICAgICAgICAgICArICJcXHUxRkY5XFx1MUZGQi1cXHUxRkZFXFx1MjAwMC1cXHUyMDAxXFx1MjBEMC1cXHUyMERDXFx1MjBFMSIKKyAgICAgICAgICAgICsgIlxcdTIwRTUtXFx1MjBFQVxcdTIxMjZcXHUyMTJBLVxcdTIxMkJcXHUyMTkwXFx1MjE5MlxcdTIxOTQiCisgICAgICAgICAgICArICJcXHUyMUQwXFx1MjFEMlxcdTIxRDRcXHUyMjAzXFx1MjIwOFxcdTIyMEJcXHUyMjIzXFx1MjIyNVxcdTIyM0MiCisgICAgICAgICAgICArICJcXHUyMjQzXFx1MjI0NVxcdTIyNDhcXHUyMjREXFx1MjI2MVxcdTIyNjQtXFx1MjI2NVxcdTIyNzItIgorICAgICAgICAgICAgKyAiXFx1MjI3M1xcdTIyNzYtXFx1MjI3N1xcdTIyN0EtXFx1MjI3RFxcdTIyODItXFx1MjI4M1xcdTIyODYtIgorICAgICAgICAgICAgKyAiXFx1MjI4N1xcdTIyOTEtXFx1MjI5MlxcdTIyQTJcXHUyMkE4LVxcdTIyQTlcXHUyMkFCXFx1MjJCMi0iCisgICAgICAgICAgICArICJcXHUyMkI1XFx1MjMyOS1cXHUyMzJBXFx1MkFEQ1xcdTMwMkEtXFx1MzAyRlxcdTMwNDZcXHUzMDRCIgorICAgICAgICAgICAgKyAiXFx1MzA0RFxcdTMwNEZcXHUzMDUxXFx1MzA1M1xcdTMwNTVcXHUzMDU3XFx1MzA1OVxcdTMwNUJcXHUzMDVEIgorICAgICAgICAgICAgKyAiXFx1MzA1RlxcdTMwNjFcXHUzMDY0XFx1MzA2NlxcdTMwNjhcXHUzMDZGXFx1MzA3MlxcdTMwNzVcXHUzMDc4IgorICAgICAgICAgICAgKyAiXFx1MzA3QlxcdTMwOTktXFx1MzA5QVxcdTMwOURcXHUzMEE2XFx1MzBBQlxcdTMwQURcXHUzMEFGXFx1MzBCMSIKKyAgICAgICAgICAgICsgIlxcdTMwQjNcXHUzMEI1XFx1MzBCN1xcdTMwQjlcXHUzMEJCXFx1MzBCRFxcdTMwQkZcXHUzMEMxXFx1MzBDNCIKKyAgICAgICAgICAgICsgIlxcdTMwQzZcXHUzMEM4XFx1MzBDRlxcdTMwRDJcXHUzMEQ1XFx1MzBEOFxcdTMwREJcXHUzMEVGLVxcdTMwRjIiCisgICAgICAgICAgICArICJcXHUzMEZEXFx1QUMwMFxcdUFDMUNcXHVBQzM4XFx1QUM1NFxcdUFDNzBcXHVBQzhDXFx1QUNBOFxcdUFDQzQiCisgICAgICAgICAgICArICJcXHVBQ0UwXFx1QUNGQ1xcdUFEMThcXHVBRDM0XFx1QUQ1MFxcdUFENkNcXHVBRDg4XFx1QURBNFxcdUFEQzAiCisgICAgICAgICAgICArICJcXHVBRERDXFx1QURGOFxcdUFFMTRcXHVBRTMwXFx1QUU0Q1xcdUFFNjhcXHVBRTg0XFx1QUVBMFxcdUFFQkMiCisgICAgICAgICAgICArICJcXHVBRUQ4XFx1QUVGNFxcdUFGMTBcXHVBRjJDXFx1QUY0OFxcdUFGNjRcXHVBRjgwXFx1QUY5Q1xcdUFGQjgiCisgICAgICAgICAgICArICJcXHVBRkQ0XFx1QUZGMFxcdUIwMENcXHVCMDI4XFx1QjA0NFxcdUIwNjBcXHVCMDdDXFx1QjA5OFxcdUIwQjQiCisgICAgICAgICAgICArICJcXHVCMEQwXFx1QjBFQ1xcdUIxMDhcXHVCMTI0XFx1QjE0MFxcdUIxNUNcXHVCMTc4XFx1QjE5NFxcdUIxQjAiCisgICAgICAgICAgICArICJcXHVCMUNDXFx1QjFFOFxcdUIyMDRcXHVCMjIwXFx1QjIzQ1xcdUIyNThcXHVCMjc0XFx1QjI5MFxcdUIyQUMiCisgICAgICAgICAgICArICJcXHVCMkM4XFx1QjJFNFxcdUIzMDBcXHVCMzFDXFx1QjMzOFxcdUIzNTRcXHVCMzcwXFx1QjM4Q1xcdUIzQTgiCisgICAgICAgICAgICArICJcXHVCM0M0XFx1QjNFMFxcdUIzRkNcXHVCNDE4XFx1QjQzNFxcdUI0NTBcXHVCNDZDXFx1QjQ4OFxcdUI0QTQiCisgICAgICAgICAgICArICJcXHVCNEMwXFx1QjREQ1xcdUI0RjhcXHVCNTE0XFx1QjUzMFxcdUI1NENcXHVCNTY4XFx1QjU4NFxcdUI1QTAiCisgICAgICAgICAgICArICJcXHVCNUJDXFx1QjVEOFxcdUI1RjRcXHVCNjEwXFx1QjYyQ1xcdUI2NDhcXHVCNjY0XFx1QjY4MFxcdUI2OUMiCisgICAgICAgICAgICArICJcXHVCNkI4XFx1QjZENFxcdUI2RjBcXHVCNzBDXFx1QjcyOFxcdUI3NDRcXHVCNzYwXFx1Qjc3Q1xcdUI3OTgiCisgICAgICAgICAgICArICJcXHVCN0I0XFx1QjdEMFxcdUI3RUNcXHVCODA4XFx1QjgyNFxcdUI4NDBcXHVCODVDXFx1Qjg3OFxcdUI4OTQiCisgICAgICAgICAgICArICJcXHVCOEIwXFx1QjhDQ1xcdUI4RThcXHVCOTA0XFx1QjkyMFxcdUI5M0NcXHVCOTU4XFx1Qjk3NFxcdUI5OTAiCisgICAgICAgICAgICArICJcXHVCOUFDXFx1QjlDOFxcdUI5RTRcXHVCQTAwXFx1QkExQ1xcdUJBMzhcXHVCQTU0XFx1QkE3MFxcdUJBOEMiCisgICAgICAgICAgICArICJcXHVCQUE4XFx1QkFDNFxcdUJBRTBcXHVCQUZDXFx1QkIxOFxcdUJCMzRcXHVCQjUwXFx1QkI2Q1xcdUJCODgiCisgICAgICAgICAgICArICJcXHVCQkE0XFx1QkJDMFxcdUJCRENcXHVCQkY4XFx1QkMxNFxcdUJDMzBcXHVCQzRDXFx1QkM2OFxcdUJDODQiCisgICAgICAgICAgICArICJcXHVCQ0EwXFx1QkNCQ1xcdUJDRDhcXHVCQ0Y0XFx1QkQxMFxcdUJEMkNcXHVCRDQ4XFx1QkQ2NFxcdUJEODAiCisgICAgICAgICAgICArICJcXHVCRDlDXFx1QkRCOFxcdUJERDRcXHVCREYwXFx1QkUwQ1xcdUJFMjhcXHVCRTQ0XFx1QkU2MFxcdUJFN0MiCisgICAgICAgICAgICArICJcXHVCRTk4XFx1QkVCNFxcdUJFRDBcXHVCRUVDXFx1QkYwOFxcdUJGMjRcXHVCRjQwXFx1QkY1Q1xcdUJGNzgiCisgICAgICAgICAgICArICJcXHVCRjk0XFx1QkZCMFxcdUJGQ0NcXHVCRkU4XFx1QzAwNFxcdUMwMjBcXHVDMDNDXFx1QzA1OFxcdUMwNzQiCisgICAgICAgICAgICArICJcXHVDMDkwXFx1QzBBQ1xcdUMwQzhcXHVDMEU0XFx1QzEwMFxcdUMxMUNcXHVDMTM4XFx1QzE1NFxcdUMxNzAiCisgICAgICAgICAgICArICJcXHVDMThDXFx1QzFBOFxcdUMxQzRcXHVDMUUwXFx1QzFGQ1xcdUMyMThcXHVDMjM0XFx1QzI1MFxcdUMyNkMiCisgICAgICAgICAgICArICJcXHVDMjg4XFx1QzJBNFxcdUMyQzBcXHVDMkRDXFx1QzJGOFxcdUMzMTRcXHVDMzMwXFx1QzM0Q1xcdUMzNjgiCisgICAgICAgICAgICArICJcXHVDMzg0XFx1QzNBMFxcdUMzQkNcXHVDM0Q4XFx1QzNGNFxcdUM0MTBcXHVDNDJDXFx1QzQ0OFxcdUM0NjQiCisgICAgICAgICAgICArICJcXHVDNDgwXFx1QzQ5Q1xcdUM0QjhcXHVDNEQ0XFx1QzRGMFxcdUM1MENcXHVDNTI4XFx1QzU0NFxcdUM1NjAiCisgICAgICAgICAgICArICJcXHVDNTdDXFx1QzU5OFxcdUM1QjRcXHVDNUQwXFx1QzVFQ1xcdUM2MDhcXHVDNjI0XFx1QzY0MFxcdUM2NUMiCisgICAgICAgICAgICArICJcXHVDNjc4XFx1QzY5NFxcdUM2QjBcXHVDNkNDXFx1QzZFOFxcdUM3MDRcXHVDNzIwXFx1QzczQ1xcdUM3NTgiCisgICAgICAgICAgICArICJcXHVDNzc0XFx1Qzc5MFxcdUM3QUNcXHVDN0M4XFx1QzdFNFxcdUM4MDBcXHVDODFDXFx1QzgzOFxcdUM4NTQiCisgICAgICAgICAgICArICJcXHVDODcwXFx1Qzg4Q1xcdUM4QThcXHVDOEM0XFx1QzhFMFxcdUM4RkNcXHVDOTE4XFx1QzkzNFxcdUM5NTAiCisgICAgICAgICAgICArICJcXHVDOTZDXFx1Qzk4OFxcdUM5QTRcXHVDOUMwXFx1QzlEQ1xcdUM5RjhcXHVDQTE0XFx1Q0EzMFxcdUNBNEMiCisgICAgICAgICAgICArICJcXHVDQTY4XFx1Q0E4NFxcdUNBQTBcXHVDQUJDXFx1Q0FEOFxcdUNBRjRcXHVDQjEwXFx1Q0IyQ1xcdUNCNDgiCisgICAgICAgICAgICArICJcXHVDQjY0XFx1Q0I4MFxcdUNCOUNcXHVDQkI4XFx1Q0JENFxcdUNCRjBcXHVDQzBDXFx1Q0MyOFxcdUNDNDQiCisgICAgICAgICAgICArICJcXHVDQzYwXFx1Q0M3Q1xcdUNDOThcXHVDQ0I0XFx1Q0NEMFxcdUNDRUNcXHVDRDA4XFx1Q0QyNFxcdUNENDAiCisgICAgICAgICAgICArICJcXHVDRDVDXFx1Q0Q3OFxcdUNEOTRcXHVDREIwXFx1Q0RDQ1xcdUNERThcXHVDRTA0XFx1Q0UyMFxcdUNFM0MiCisgICAgICAgICAgICArICJcXHVDRTU4XFx1Q0U3NFxcdUNFOTBcXHVDRUFDXFx1Q0VDOFxcdUNFRTRcXHVDRjAwXFx1Q0YxQ1xcdUNGMzgiCisgICAgICAgICAgICArICJcXHVDRjU0XFx1Q0Y3MFxcdUNGOENcXHVDRkE4XFx1Q0ZDNFxcdUNGRTBcXHVDRkZDXFx1RDAxOFxcdUQwMzQiCisgICAgICAgICAgICArICJcXHVEMDUwXFx1RDA2Q1xcdUQwODhcXHVEMEE0XFx1RDBDMFxcdUQwRENcXHVEMEY4XFx1RDExNFxcdUQxMzAiCisgICAgICAgICAgICArICJcXHVEMTRDXFx1RDE2OFxcdUQxODRcXHVEMUEwXFx1RDFCQ1xcdUQxRDhcXHVEMUY0XFx1RDIxMFxcdUQyMkMiCisgICAgICAgICAgICArICJcXHVEMjQ4XFx1RDI2NFxcdUQyODBcXHVEMjlDXFx1RDJCOFxcdUQyRDRcXHVEMkYwXFx1RDMwQ1xcdUQzMjgiCisgICAgICAgICAgICArICJcXHVEMzQ0XFx1RDM2MFxcdUQzN0NcXHVEMzk4XFx1RDNCNFxcdUQzRDBcXHVEM0VDXFx1RDQwOFxcdUQ0MjQiCisgICAgICAgICAgICArICJcXHVENDQwXFx1RDQ1Q1xcdUQ0NzhcXHVENDk0XFx1RDRCMFxcdUQ0Q0NcXHVENEU4XFx1RDUwNFxcdUQ1MjAiCisgICAgICAgICAgICArICJcXHVENTNDXFx1RDU1OFxcdUQ1NzRcXHVENTkwXFx1RDVBQ1xcdUQ1QzhcXHVENUU0XFx1RDYwMFxcdUQ2MUMiCisgICAgICAgICAgICArICJcXHVENjM4XFx1RDY1NFxcdUQ2NzBcXHVENjhDXFx1RDZBOFxcdUQ2QzRcXHVENkUwXFx1RDZGQ1xcdUQ3MTgiCisgICAgICAgICAgICArICJcXHVENzM0XFx1RDc1MFxcdUQ3NkNcXHVENzg4XFx1RjkwMC1cXHVGQTBEXFx1RkExMFxcdUZBMTJcXHVGQTE1IgorICAgICAgICAgICAgKyAiLVxcdUZBMUVcXHVGQTIwXFx1RkEyMlxcdUZBMjUtXFx1RkEyNlxcdUZBMkEtXFx1RkEyRFxcdUZBMzAtIgorICAgICAgICAgICAgKyAiXFx1RkE2QVxcdUZCMUQtXFx1RkIxRlxcdUZCMkEtXFx1RkIzNlxcdUZCMzgtXFx1RkIzQ1xcdUZCM0UiCisgICAgICAgICAgICArICJcXHVGQjQwLVxcdUZCNDFcXHVGQjQzLVxcdUZCNDRcXHVGQjQ2LVxcdUZCNEVcXHVGRTIwLVxcdUZFMjMiCisgICAgICAgICAgICArICJcXFUwMDAxRDE1RS1cXFUwMDAxRDE2OVxcVTAwMDFEMTZELVxcVTAwMDFEMTcyXFxVMDAwMUQxN0ItIgorICAgICAgICAgICAgKyAiXFxVMDAwMUQxODJcXFUwMDAxRDE4NS1cXFUwMDAxRDE4QlxcVTAwMDFEMUFBLVxcVTAwMDFEMUFEXFxVMDAwMSIKKyAgICAgICAgICAgICsgIkQxQkItXFxVMDAwMUQxQzBcXFUwMDAyRjgwMC1cXFUwMDAyRkExRF0iLCBmYWxzZSk7CisgICAgLypVbmljb2RlOiAKKyAgICAgICAgICAiW148LT5BLVBSLVphLXByLXo/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Pz8tPz8tPz8tPyIKKyAgICAgICAgKyAiPy0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Pz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8/LT8/LT8/PyIKKyAgICAgICAgKyAiPz8/Pz8/Pz8/Pz8/Pz8/Pz8/Py0/Pz8/Pz8/LT8/Pz8/Pz8/Pz8tPz8/Pz8/Pz8/LT8/LT8/LT8/LT8/LT8/LSIKKyAgICAgICAgKyAiPz8tPz8/LT8/Py0/Pz8/LT8/Pz8/LT8/LT8/LT8/LT8/Py0/Pz8/Pz8/LT8/LT8/Pz8/Pz8tPz8/Pz8/Py0/PyIKKyAgICAgICAgKyAiPz8/Pz8/Py0/Py0/Pz8/LT8/Pz8/Py0/Pz8/Pz8/LT8/Py0/Pz8/Pz8/Pz8tPz8tPz8tPz8tPz8tPz8/Pz8/PyIKKyAgICAgICAgKyAiPz8/Py0/Pz8tPz8tPz8tPz8/Pz8/Pz8/Pz8/Py0/Py0/Py0/Pz8/Pz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPyIKKyAgICAgICAgKyAiPy0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Pz8tPz8tPz8/Py0/Py0/Py0/Py0/Py0/Py0/Py0/PyIKKyAgICAgICAgKyAiPz8tPz8tPz8/Pz8tPz8/Pz8/LT8/Pz8/LT9cPy1cPz8tPz8/LT8/Py0/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/LT8/LSIKKyAgICAgICAgKyAiPz8tPz8tPz8tPz8tPz8tPz8/LT8/Py0/Py0/Pz8tPz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8tPz8/Pz8/Pz8/PyIKKyAgICAgICAgKyAiPz8/Pz8/Pz8/Pz8/Pz8tPz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/PyIKKyAgICAgICAgKyAiPz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/PyIKKyAgICAgICAgKyAiPz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/PyIKKyAgICAgICAgKyAiPz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/PyIKKyAgICAgICAgKyAiPz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/PyIKKyAgICAgICAgKyAiPz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/PyIKKyAgICAgICAgKyAiPz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/LT8/Pz8tPz8/Py0/Py0/Py0/Py0/Py0/Py0/Pz8tPyIKKyAgICAgICAgKyAiPy0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/XSIqLworICAgICAgICBza2lwcGFibGVzW0tEXSA9IG5ldyBVbmljb2RlU2V0KAorICAgICAgICAgICAgIlteXFx1MDBBMFxcdTAwQThcXHUwMEFBXFx1MDBBRlxcdTAwQjItXFx1MDBCNVxcdTAwQjgtXFx1MDBCQSIKKyAgICAgICAgICAgICsgIlxcdTAwQkMtXFx1MDBCRVxcdTAwQzAtXFx1MDBDNVxcdTAwQzctXFx1MDBDRlxcdTAwRDEtXFx1MDBENiIKKyAgICAgICAgICAgICsgIlxcdTAwRDktXFx1MDBERFxcdTAwRTAtXFx1MDBFNVxcdTAwRTctXFx1MDBFRlxcdTAwRjEtXFx1MDBGNiIKKyAgICAgICAgICAgICsgIlxcdTAwRjktXFx1MDBGRFxcdTAwRkYtXFx1MDEwRlxcdTAxMTItXFx1MDEyNVxcdTAxMjgtXFx1MDEzMCIKKyAgICAgICAgICAgICsgIlxcdTAxMzItXFx1MDEzN1xcdTAxMzktXFx1MDE0MFxcdTAxNDMtXFx1MDE0OVxcdTAxNEMtXFx1MDE1MSIKKyAgICAgICAgICAgICsgIlxcdTAxNTQtXFx1MDE2NVxcdTAxNjgtXFx1MDE3RlxcdTAxQTAtXFx1MDFBMVxcdTAxQUYtXFx1MDFCMCIKKyAgICAgICAgICAgICsgIlxcdTAxQzQtXFx1MDFEQ1xcdTAxREUtXFx1MDFFM1xcdTAxRTYtXFx1MDFGNVxcdTAxRjgtXFx1MDIxQiIKKyAgICAgICAgICAgICsgIlxcdTAyMUUtXFx1MDIxRlxcdTAyMjYtXFx1MDIzM1xcdTAyQjAtXFx1MDJCOFxcdTAyRDgtXFx1MDJERCIKKyAgICAgICAgICAgICsgIlxcdTAyRTAtXFx1MDJFNFxcdTAzMDAtXFx1MDM0RVxcdTAzNjAtXFx1MDM2RlxcdTAzNzRcXHUwMzdBIgorICAgICAgICAgICAgKyAiXFx1MDM3RVxcdTAzODQtXFx1MDM4QVxcdTAzOENcXHUwMzhFLVxcdTAzOTBcXHUwM0FBLVxcdTAzQjAiCisgICAgICAgICAgICArICJcXHUwM0NBLVxcdTAzQ0VcXHUwM0QwLVxcdTAzRDZcXHUwM0YwLVxcdTAzRjJcXHUwM0Y0LVxcdTAzRjUiCisgICAgICAgICAgICArICJcXHUwNDAwLVxcdTA0MDFcXHUwNDAzXFx1MDQwN1xcdTA0MEMtXFx1MDQwRVxcdTA0MTlcXHUwNDM5IgorICAgICAgICAgICAgKyAiXFx1MDQ1MC1cXHUwNDUxXFx1MDQ1M1xcdTA0NTdcXHUwNDVDLVxcdTA0NUVcXHUwNDc2LVxcdTA0NzciCisgICAgICAgICAgICArICJcXHUwNDgzLVxcdTA0ODZcXHUwNEMxLVxcdTA0QzJcXHUwNEQwLVxcdTA0RDNcXHUwNEQ2LVxcdTA0RDciCisgICAgICAgICAgICArICJcXHUwNERBLVxcdTA0REZcXHUwNEUyLVxcdTA0RTdcXHUwNEVBLVxcdTA0RjVcXHUwNEY4LVxcdTA0RjkiCisgICAgICAgICAgICArICJcXHUwNTg3XFx1MDU5MS1cXHUwNUExXFx1MDVBMy1cXHUwNUI5XFx1MDVCQi1cXHUwNUJEXFx1MDVCRiIKKyAgICAgICAgICAgICsgIlxcdTA1QzEtXFx1MDVDMlxcdTA1QzRcXHUwNjIyLVxcdTA2MjZcXHUwNjRCLVxcdTA2NTVcXHUwNjcwIgorICAgICAgICAgICAgKyAiXFx1MDY3NS1cXHUwNjc4XFx1MDZDMFxcdTA2QzJcXHUwNkQzXFx1MDZENi1cXHUwNkRDXFx1MDZERi0iCisgICAgICAgICAgICArICJcXHUwNkU0XFx1MDZFNy1cXHUwNkU4XFx1MDZFQS1cXHUwNkVEXFx1MDcxMVxcdTA3MzAtXFx1MDc0QSIKKyAgICAgICAgICAgICsgIlxcdTA5MjlcXHUwOTMxXFx1MDkzNFxcdTA5M0NcXHUwOTREXFx1MDk1MS1cXHUwOTU0XFx1MDk1OC0iCisgICAgICAgICAgICArICJcXHUwOTVGXFx1MDlCQ1xcdTA5Q0ItXFx1MDlDRFxcdTA5REMtXFx1MDlERFxcdTA5REZcXHUwQTMzIgorICAgICAgICAgICAgKyAiXFx1MEEzNlxcdTBBM0NcXHUwQTREXFx1MEE1OS1cXHUwQTVCXFx1MEE1RVxcdTBBQkNcXHUwQUNEXFx1MEIzQyIKKyAgICAgICAgICAgICsgIlxcdTBCNDhcXHUwQjRCLVxcdTBCNERcXHUwQjVDLVxcdTBCNURcXHUwQjk0XFx1MEJDQS1cXHUwQkNEIgorICAgICAgICAgICAgKyAiXFx1MEM0OFxcdTBDNERcXHUwQzU1LVxcdTBDNTZcXHUwQ0MwXFx1MENDNy1cXHUwQ0M4XFx1MENDQS0iCisgICAgICAgICAgICArICJcXHUwQ0NCXFx1MENDRFxcdTBENEEtXFx1MEQ0RFxcdTBEQ0FcXHUwRERBXFx1MEREQy1cXHUwRERFIgorICAgICAgICAgICAgKyAiXFx1MEUzM1xcdTBFMzgtXFx1MEUzQVxcdTBFNDgtXFx1MEU0QlxcdTBFQjNcXHUwRUI4LVxcdTBFQjkiCisgICAgICAgICAgICArICJcXHUwRUM4LVxcdTBFQ0JcXHUwRURDLVxcdTBFRERcXHUwRjBDXFx1MEYxOC1cXHUwRjE5XFx1MEYzNSIKKyAgICAgICAgICAgICsgIlxcdTBGMzdcXHUwRjM5XFx1MEY0M1xcdTBGNERcXHUwRjUyXFx1MEY1N1xcdTBGNUNcXHUwRjY5XFx1MEY3MS0iCisgICAgICAgICAgICArICJcXHUwRjdEXFx1MEY4MC1cXHUwRjg0XFx1MEY4Ni1cXHUwRjg3XFx1MEY5M1xcdTBGOURcXHUwRkEyIgorICAgICAgICAgICAgKyAiXFx1MEZBN1xcdTBGQUNcXHUwRkI5XFx1MEZDNlxcdTEwMjZcXHUxMDM3XFx1MTAzOVxcdTE3MTRcXHUxNzM0IgorICAgICAgICAgICAgKyAiXFx1MTdEMlxcdTE4QTlcXHUxRTAwLVxcdTFFOUJcXHUxRUEwLVxcdTFFRjlcXHUxRjAwLVxcdTFGMTUiCisgICAgICAgICAgICArICJcXHUxRjE4LVxcdTFGMURcXHUxRjIwLVxcdTFGNDVcXHUxRjQ4LVxcdTFGNERcXHUxRjUwLVxcdTFGNTciCisgICAgICAgICAgICArICJcXHUxRjU5XFx1MUY1QlxcdTFGNURcXHUxRjVGLVxcdTFGN0RcXHUxRjgwLVxcdTFGQjRcXHUxRkI2LSIKKyAgICAgICAgICAgICsgIlxcdTFGQzRcXHUxRkM2LVxcdTFGRDNcXHUxRkQ2LVxcdTFGREJcXHUxRkRELVxcdTFGRUZcXHUxRkYyLSIKKyAgICAgICAgICAgICsgIlxcdTFGRjRcXHUxRkY2LVxcdTFGRkVcXHUyMDAwLVxcdTIwMEFcXHUyMDExXFx1MjAxN1xcdTIwMjQtIgorICAgICAgICAgICAgKyAiXFx1MjAyNlxcdTIwMkZcXHUyMDMzLVxcdTIwMzRcXHUyMDM2LVxcdTIwMzdcXHUyMDNDXFx1MjAzRSIKKyAgICAgICAgICAgICsgIlxcdTIwNDctXFx1MjA0OVxcdTIwNTdcXHUyMDVGXFx1MjA3MC1cXHUyMDcxXFx1MjA3NC1cXHUyMDhFIgorICAgICAgICAgICAgKyAiXFx1MjBBOFxcdTIwRDAtXFx1MjBEQ1xcdTIwRTFcXHUyMEU1LVxcdTIwRUFcXHUyMTAwLVxcdTIxMDMiCisgICAgICAgICAgICArICJcXHUyMTA1LVxcdTIxMDdcXHUyMTA5LVxcdTIxMTNcXHUyMTE1LVxcdTIxMTZcXHUyMTE5LVxcdTIxMUQiCisgICAgICAgICAgICArICJcXHUyMTIwLVxcdTIxMjJcXHUyMTI0XFx1MjEyNlxcdTIxMjhcXHUyMTJBLVxcdTIxMkRcXHUyMTJGLSIKKyAgICAgICAgICAgICsgIlxcdTIxMzFcXHUyMTMzLVxcdTIxMzlcXHUyMTNELVxcdTIxNDBcXHUyMTQ1LVxcdTIxNDlcXHUyMTUzLSIKKyAgICAgICAgICAgICsgIlxcdTIxN0ZcXHUyMTlBLVxcdTIxOUJcXHUyMUFFXFx1MjFDRC1cXHUyMUNGXFx1MjIwNFxcdTIyMDkiCisgICAgICAgICAgICArICJcXHUyMjBDXFx1MjIyNFxcdTIyMjZcXHUyMjJDLVxcdTIyMkRcXHUyMjJGLVxcdTIyMzBcXHUyMjQxIgorICAgICAgICAgICAgKyAiXFx1MjI0NFxcdTIyNDdcXHUyMjQ5XFx1MjI2MFxcdTIyNjJcXHUyMjZELVxcdTIyNzFcXHUyMjc0LSIKKyAgICAgICAgICAgICsgIlxcdTIyNzVcXHUyMjc4LVxcdTIyNzlcXHUyMjgwLVxcdTIyODFcXHUyMjg0LVxcdTIyODVcXHUyMjg4LSIKKyAgICAgICAgICAgICsgIlxcdTIyODlcXHUyMkFDLVxcdTIyQUZcXHUyMkUwLVxcdTIyRTNcXHUyMkVBLVxcdTIyRURcXHUyMzI5LSIKKyAgICAgICAgICAgICsgIlxcdTIzMkFcXHUyNDYwLVxcdTI0RUFcXHUyQTBDXFx1MkE3NC1cXHUyQTc2XFx1MkFEQ1xcdTJFOUYiCisgICAgICAgICAgICArICJcXHUyRUYzXFx1MkYwMC1cXHUyRkQ1XFx1MzAwMFxcdTMwMkEtXFx1MzAyRlxcdTMwMzZcXHUzMDM4LSIKKyAgICAgICAgICAgICsgIlxcdTMwM0FcXHUzMDRDXFx1MzA0RVxcdTMwNTBcXHUzMDUyXFx1MzA1NFxcdTMwNTZcXHUzMDU4XFx1MzA1QSIKKyAgICAgICAgICAgICsgIlxcdTMwNUNcXHUzMDVFXFx1MzA2MFxcdTMwNjJcXHUzMDY1XFx1MzA2N1xcdTMwNjlcXHUzMDcwLVxcdTMwNzEiCisgICAgICAgICAgICArICJcXHUzMDczLVxcdTMwNzRcXHUzMDc2LVxcdTMwNzdcXHUzMDc5LVxcdTMwN0FcXHUzMDdDLVxcdTMwN0QiCisgICAgICAgICAgICArICJcXHUzMDk0XFx1MzA5OS1cXHUzMDlDXFx1MzA5RS1cXHUzMDlGXFx1MzBBQ1xcdTMwQUVcXHUzMEIwIgorICAgICAgICAgICAgKyAiXFx1MzBCMlxcdTMwQjRcXHUzMEI2XFx1MzBCOFxcdTMwQkFcXHUzMEJDXFx1MzBCRVxcdTMwQzBcXHUzMEMyIgorICAgICAgICAgICAgKyAiXFx1MzBDNVxcdTMwQzdcXHUzMEM5XFx1MzBEMC1cXHUzMEQxXFx1MzBEMy1cXHUzMEQ0XFx1MzBENi0iCisgICAgICAgICAgICArICJcXHUzMEQ3XFx1MzBEOS1cXHUzMERBXFx1MzBEQy1cXHUzMEREXFx1MzBGNFxcdTMwRjctXFx1MzBGQSIKKyAgICAgICAgICAgICsgIlxcdTMwRkUtXFx1MzBGRlxcdTMxMzEtXFx1MzE4RVxcdTMxOTItXFx1MzE5RlxcdTMyMDAtXFx1MzIxQyIKKyAgICAgICAgICAgICsgIlxcdTMyMjAtXFx1MzI0M1xcdTMyNTEtXFx1MzI3QlxcdTMyODAtXFx1MzJDQlxcdTMyRDAtXFx1MzJGRSIKKyAgICAgICAgICAgICsgIlxcdTMzMDAtXFx1MzM3NlxcdTMzN0ItXFx1MzNERFxcdTMzRTAtXFx1MzNGRVxcdUFDMDAtXFx1RDdBMyIKKyAgICAgICAgICAgICsgIlxcdUY5MDAtXFx1RkEwRFxcdUZBMTBcXHVGQTEyXFx1RkExNS1cXHVGQTFFXFx1RkEyMFxcdUZBMjIiCisgICAgICAgICAgICArICJcXHVGQTI1LVxcdUZBMjZcXHVGQTJBLVxcdUZBMkRcXHVGQTMwLVxcdUZBNkFcXHVGQjAwLVxcdUZCMDYiCisgICAgICAgICAgICArICJcXHVGQjEzLVxcdUZCMTdcXHVGQjFELVxcdUZCMzZcXHVGQjM4LVxcdUZCM0NcXHVGQjNFXFx1RkI0MC0iCisgICAgICAgICAgICArICJcXHVGQjQxXFx1RkI0My1cXHVGQjQ0XFx1RkI0Ni1cXHVGQkIxXFx1RkJEMy1cXHVGRDNEXFx1RkQ1MC0iCisgICAgICAgICAgICArICJcXHVGRDhGXFx1RkQ5Mi1cXHVGREM3XFx1RkRGMC1cXHVGREZDXFx1RkUyMC1cXHVGRTIzXFx1RkUzMC0iCisgICAgICAgICAgICArICJcXHVGRTQ0XFx1RkU0OS1cXHVGRTUyXFx1RkU1NC1cXHVGRTY2XFx1RkU2OC1cXHVGRTZCXFx1RkU3MC0iCisgICAgICAgICAgICArICJcXHVGRTcyXFx1RkU3NFxcdUZFNzYtXFx1RkVGQ1xcdUZGMDEtXFx1RkZCRVxcdUZGQzItXFx1RkZDNyIKKyAgICAgICAgICAgICsgIlxcdUZGQ0EtXFx1RkZDRlxcdUZGRDItXFx1RkZEN1xcdUZGREEtXFx1RkZEQ1xcdUZGRTAtXFx1RkZFNiIKKyAgICAgICAgICAgICsgIlxcdUZGRTgtXFx1RkZFRVxcVTAwMDFEMTVFLVxcVTAwMDFEMTY5XFxVMDAwMUQxNkQtXFxVMDAwMUQxNzIiCisgICAgICAgICAgICArICJcXFUwMDAxRDE3Qi1cXFUwMDAxRDE4MlxcVTAwMDFEMTg1LVxcVTAwMDFEMThCXFxVMDAwMUQxQUEtIgorICAgICAgICAgICAgKyAiXFxVMDAwMUQxQURcXFUwMDAxRDFCQi1cXFUwMDAxRDFDMFxcVTAwMDFENDAwLVxcVTAwMDFENDU0XFxVMDAwMSIKKyAgICAgICAgICAgICsgIkQ0NTYtXFxVMDAwMUQ0OUNcXFUwMDAxRDQ5RS1cXFUwMDAxRDQ5RlxcVTAwMDFENEEyXFxVMDAwMUQ0QTUtIgorICAgICAgICAgICAgKyAiXFxVMDAwMUQ0QTZcXFUwMDAxRDRBOS1cXFUwMDAxRDRBQ1xcVTAwMDFENEFFLVxcVTAwMDFENEI5XFxVMDAwMSIKKyAgICAgICAgICAgICsgIkQ0QkJcXFUwMDAxRDRCRC1cXFUwMDAxRDRDMFxcVTAwMDFENEMyLVxcVTAwMDFENEMzXFxVMDAwMUQ0QzUtIgorICAgICAgICAgICAgKyAiXFxVMDAwMUQ1MDVcXFUwMDAxRDUwNy1cXFUwMDAxRDUwQVxcVTAwMDFENTBELVxcVTAwMDFENTE0XFxVMDAwMSIKKyAgICAgICAgICAgICsgIkQ1MTYtXFxVMDAwMUQ1MUNcXFUwMDAxRDUxRS1cXFUwMDAxRDUzOVxcVTAwMDFENTNCLVxcVTAwMDFENTNFIgorICAgICAgICAgICAgKyAiXFxVMDAwMUQ1NDAtXFxVMDAwMUQ1NDRcXFUwMDAxRDU0NlxcVTAwMDFENTRBLVxcVTAwMDFENTUwXFxVMDAwMSIKKyAgICAgICAgICAgICsgIkQ1NTItXFxVMDAwMUQ2QTNcXFUwMDAxRDZBOC1cXFUwMDAxRDdDOVxcVTAwMDFEN0NFLVxcVTAwMDFEN0ZGIgorICAgICAgICAgICAgKyAiXFxVMDAwMkY4MDAtXFxVMDAwMkZBMURdIiwgZmFsc2UpOworICAgIC8qVW5pY29kZTogCisgICAgICAgICAgIltePz8/Pz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8iCisgICAgICAgICsgIi0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Pz8/Py0/Pz8tPz8tPz8tPz8tPz8tPz8iCisgICAgICAgICsgIi0/Py0/Pz8/LT8/Pz8tPz8/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Pz8tPz8tPz8tPz8/LT8/Py0iCisgICAgICAgICsgIj8/LT8/Py0/Pz8/Py0/Py0/Py0/Py0/Pz8tPz8/Pz8/Py0/Py0/Pz8tPz8tPz8/Pz8/Py0/Pz8/Pz8/LT8/LT8iCisgICAgICAgICsgIj8/LT8/Pz8tPz8/LT8/LT8/Py0/Pz8/LT8/Py0/Py0/Pz8tPz8tPz8tPz8/LT8/Pz8/Pz8/Pz8/LT8/LT8/LT8iCisgICAgICAgICsgIj8/Pz8/Pz8/Pz8/Pz8/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Pz8/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/IgorICAgICAgICArICJcPy1cPz8/Py0/Pz8tPz8tPz8/Py0/P1w/Py0/Py0/Pz8tPz8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/Pz8/LT8/IgorICAgICAgICArICItPz8tPz8tPz8tPz8tPz8tPz8/LT8/Pz8/Pz8tPz8tPz8/Pz8/Pz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tIgorICAgICAgICArICI/Py0/Py0/Pz8tPz8/Pz8tP1w/Py0/Pz8tPz8/Pz8/Pz8/Pz8/Pz8/Pz8tPz8tPz8tPz8tPz8tPz8/LT8/LT8/IgorICAgICAgICArICI/Pz8/Pz8/Pz8/Pz8/Pz8tPz8tPz8tPz8tPz8tPz8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/IgorICAgICAgICArICItPz8tPz8tPz8/Py0/Pz8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/IgorICAgICAgICArICI/LT8/LT8/LT8/LT8/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/PyIKKyAgICAgICAgKyAiLT8/LT8/LT8/LT8/Py0/Py0/Py0/Pz8tPz8tPz8tPz8tPz8tPz8iCisgICAgICAgICsgIi0/Py0/Py0/Py0/Pz8tPz8tPz8tPz8tPz8tP10iKi8KKyAgICAKKyAgICAgICAgc2tpcHBhYmxlc1tLQ10gPSBuZXcgVW5pY29kZVNldCgKKyAgICAgICAgICAgICJbXjwtPkEtUFItWmEtcHItelxcdTAwQTBcXHUwMEE4XFx1MDBBQVxcdTAwQUZcXHUwMEIyLVxcdTAwQjUiCisgICAgICAgICAgICArICJcXHUwMEI4LVxcdTAwQkFcXHUwMEJDLVxcdTAwQkVcXHUwMEMwLVxcdTAwQ0ZcXHUwMEQxLVxcdTAwRDYiCisgICAgICAgICAgICArICJcXHUwMEQ4LVxcdTAwRERcXHUwMEUwLVxcdTAwRUZcXHUwMEYxLVxcdTAwRjZcXHUwMEY4LVxcdTAwRkQiCisgICAgICAgICAgICArICJcXHUwMEZGLVxcdTAxMDNcXHUwMTA2LVxcdTAxMEZcXHUwMTEyLVxcdTAxMTdcXHUwMTFBLVxcdTAxMjEiCisgICAgICAgICAgICArICJcXHUwMTI0LVxcdTAxMjVcXHUwMTI4LVxcdTAxMkRcXHUwMTMwXFx1MDEzMi1cXHUwMTMzXFx1MDEzOS0iCisgICAgICAgICAgICArICJcXHUwMTNBXFx1MDEzRC1cXHUwMTQwXFx1MDE0My1cXHUwMTQ0XFx1MDE0Ny1cXHUwMTQ5XFx1MDE0Qy0iCisgICAgICAgICAgICArICJcXHUwMTUxXFx1MDE1NC1cXHUwMTU1XFx1MDE1OC1cXHUwMTVEXFx1MDE2MC1cXHUwMTYxXFx1MDE2NC0iCisgICAgICAgICAgICArICJcXHUwMTY1XFx1MDE2OC1cXHUwMTcxXFx1MDE3NC1cXHUwMTdGXFx1MDFBMC1cXHUwMUExXFx1MDFBRi0iCisgICAgICAgICAgICArICJcXHUwMUIwXFx1MDFCN1xcdTAxQzQtXFx1MDFEQ1xcdTAxREUtXFx1MDFFMVxcdTAxRTYtXFx1MDFFQiIKKyAgICAgICAgICAgICsgIlxcdTAxRjEtXFx1MDFGNVxcdTAxRjgtXFx1MDFGQlxcdTAyMDAtXFx1MDIxQlxcdTAyMUUtXFx1MDIxRiIKKyAgICAgICAgICAgICsgIlxcdTAyMjYtXFx1MDIzM1xcdTAyOTJcXHUwMkIwLVxcdTAyQjhcXHUwMkQ4LVxcdTAyRERcXHUwMkUwLSIKKyAgICAgICAgICAgICsgIlxcdTAyRTRcXHUwMzAwLVxcdTAzNEVcXHUwMzYwLVxcdTAzNkZcXHUwMzc0XFx1MDM3QVxcdTAzN0UiCisgICAgICAgICAgICArICJcXHUwMzg0LVxcdTAzODVcXHUwMzg3XFx1MDM5MVxcdTAzOTVcXHUwMzk3XFx1MDM5OVxcdTAzOUZcXHUwM0ExIgorICAgICAgICAgICAgKyAiXFx1MDNBNVxcdTAzQTlcXHUwM0FDXFx1MDNBRVxcdTAzQjFcXHUwM0I1XFx1MDNCN1xcdTAzQjlcXHUwM0JGIgorICAgICAgICAgICAgKyAiXFx1MDNDMVxcdTAzQzVcXHUwM0M5LVxcdTAzQ0JcXHUwM0NFXFx1MDNEMC1cXHUwM0Q2XFx1MDNGMC0iCisgICAgICAgICAgICArICJcXHUwM0YyXFx1MDNGNC1cXHUwM0Y1XFx1MDQwNlxcdTA0MTBcXHUwNDEzXFx1MDQxNS1cXHUwNDE4IgorICAgICAgICAgICAgKyAiXFx1MDQxQVxcdTA0MUVcXHUwNDIzXFx1MDQyN1xcdTA0MkJcXHUwNDJEXFx1MDQzMFxcdTA0MzNcXHUwNDM1LSIKKyAgICAgICAgICAgICsgIlxcdTA0MzhcXHUwNDNBXFx1MDQzRVxcdTA0NDNcXHUwNDQ3XFx1MDQ0QlxcdTA0NERcXHUwNDU2XFx1MDQ3NC0iCisgICAgICAgICAgICArICJcXHUwNDc1XFx1MDQ4My1cXHUwNDg2XFx1MDREOC1cXHUwNEQ5XFx1MDRFOC1cXHUwNEU5XFx1MDU4NyIKKyAgICAgICAgICAgICsgIlxcdTA1OTEtXFx1MDVBMVxcdTA1QTMtXFx1MDVCOVxcdTA1QkItXFx1MDVCRFxcdTA1QkZcXHUwNUMxLSIKKyAgICAgICAgICAgICsgIlxcdTA1QzJcXHUwNUM0XFx1MDYyMi1cXHUwNjIzXFx1MDYyN1xcdTA2NDhcXHUwNjRBLVxcdTA2NTUiCisgICAgICAgICAgICArICJcXHUwNjcwXFx1MDY3NS1cXHUwNjc4XFx1MDZDMVxcdTA2RDJcXHUwNkQ1LVxcdTA2RENcXHUwNkRGLSIKKyAgICAgICAgICAgICsgIlxcdTA2RTRcXHUwNkU3LVxcdTA2RThcXHUwNkVBLVxcdTA2RURcXHUwNzExXFx1MDczMC1cXHUwNzRBIgorICAgICAgICAgICAgKyAiXFx1MDkyOFxcdTA5MzBcXHUwOTMzXFx1MDkzQ1xcdTA5NERcXHUwOTUxLVxcdTA5NTRcXHUwOTU4LSIKKyAgICAgICAgICAgICsgIlxcdTA5NUZcXHUwOUJDXFx1MDlCRVxcdTA5QzdcXHUwOUNEXFx1MDlEN1xcdTA5REMtXFx1MDlERFxcdTA5REYiCisgICAgICAgICAgICArICJcXHUwQTMzXFx1MEEzNlxcdTBBM0NcXHUwQTREXFx1MEE1OS1cXHUwQTVCXFx1MEE1RVxcdTBBQkNcXHUwQUNEIgorICAgICAgICAgICAgKyAiXFx1MEIzQ1xcdTBCM0VcXHUwQjQ3XFx1MEI0RFxcdTBCNTYtXFx1MEI1N1xcdTBCNUMtXFx1MEI1RCIKKyAgICAgICAgICAgICsgIlxcdTBCOTJcXHUwQkJFXFx1MEJDNi1cXHUwQkM3XFx1MEJDRFxcdTBCRDdcXHUwQzQ2XFx1MEM0RFxcdTBDNTUiCisgICAgICAgICAgICArICItXFx1MEM1NlxcdTBDQkZcXHUwQ0MyXFx1MENDNlxcdTBDQ0FcXHUwQ0NEXFx1MENENS1cXHUwQ0Q2IgorICAgICAgICAgICAgKyAiXFx1MEQzRVxcdTBENDYtXFx1MEQ0N1xcdTBENERcXHUwRDU3XFx1MERDQVxcdTBEQ0ZcXHUwREQ5XFx1MEREQyIKKyAgICAgICAgICAgICsgIlxcdTBEREZcXHUwRTMzXFx1MEUzOC1cXHUwRTNBXFx1MEU0OC1cXHUwRTRCXFx1MEVCM1xcdTBFQjgtIgorICAgICAgICAgICAgKyAiXFx1MEVCOVxcdTBFQzgtXFx1MEVDQlxcdTBFREMtXFx1MEVERFxcdTBGMENcXHUwRjE4LVxcdTBGMTkiCisgICAgICAgICAgICArICJcXHUwRjM1XFx1MEYzN1xcdTBGMzlcXHUwRjQzXFx1MEY0RFxcdTBGNTJcXHUwRjU3XFx1MEY1Q1xcdTBGNjkiCisgICAgICAgICAgICArICJcXHUwRjcxLVxcdTBGN0RcXHUwRjgwLVxcdTBGODRcXHUwRjg2LVxcdTBGODdcXHUwRjkzXFx1MEY5RCIKKyAgICAgICAgICAgICsgIlxcdTBGQTJcXHUwRkE3XFx1MEZBQ1xcdTBGQjlcXHUwRkM2XFx1MTAyNVxcdTEwMkVcXHUxMDM3XFx1MTAzOSIKKyAgICAgICAgICAgICsgIlxcdTExMDAtXFx1MTExMlxcdTExNjEtXFx1MTE3NVxcdTExQTgtXFx1MTFDMlxcdTE3MTRcXHUxNzM0IgorICAgICAgICAgICAgKyAiXFx1MTdEMlxcdTE4QTlcXHUxRTAwLVxcdTFFMDNcXHUxRTBBLVxcdTFFMEZcXHUxRTEyLVxcdTFFMUIiCisgICAgICAgICAgICArICJcXHUxRTIwLVxcdTFFMjdcXHUxRTJBLVxcdTFFNDFcXHUxRTQ0LVxcdTFFNTNcXHUxRTU4LVxcdTFFN0QiCisgICAgICAgICAgICArICJcXHUxRTgwLVxcdTFFODdcXHUxRThFLVxcdTFFOTFcXHUxRTk2LVxcdTFFOUJcXHUxRUEwLVxcdTFFRjMiCisgICAgICAgICAgICArICJcXHUxRUY2LVxcdTFFRjlcXHUxRjAwLVxcdTFGMTFcXHUxRjE4LVxcdTFGMTlcXHUxRjIwLVxcdTFGMzEiCisgICAgICAgICAgICArICJcXHUxRjM4LVxcdTFGMzlcXHUxRjQwLVxcdTFGNDFcXHUxRjQ4LVxcdTFGNDlcXHUxRjUwLVxcdTFGNTEiCisgICAgICAgICAgICArICJcXHUxRjU5XFx1MUY2MC1cXHUxRjcxXFx1MUY3My1cXHUxRjc1XFx1MUY3N1xcdTFGNzlcXHUxRjdCLSIKKyAgICAgICAgICAgICsgIlxcdTFGN0RcXHUxRjgwLVxcdTFGODFcXHUxRjg4LVxcdTFGODlcXHUxRjkwLVxcdTFGOTFcXHUxRjk4LSIKKyAgICAgICAgICAgICsgIlxcdTFGOTlcXHUxRkEwLVxcdTFGQTFcXHUxRkE4LVxcdTFGQTlcXHUxRkIzXFx1MUZCNlxcdTFGQkItIgorICAgICAgICAgICAgKyAiXFx1MUZDMVxcdTFGQzNcXHUxRkM2XFx1MUZDOVxcdTFGQ0ItXFx1MUZDRlxcdTFGRDNcXHUxRkRCXFx1MUZERCIKKyAgICAgICAgICAgICsgIi1cXHUxRkRGXFx1MUZFM1xcdTFGRUJcXHUxRkVELVxcdTFGRUZcXHUxRkYzXFx1MUZGNlxcdTFGRjkiCisgICAgICAgICAgICArICJcXHUxRkZCLVxcdTFGRkVcXHUyMDAwLVxcdTIwMEFcXHUyMDExXFx1MjAxN1xcdTIwMjQtXFx1MjAyNiIKKyAgICAgICAgICAgICsgIlxcdTIwMkZcXHUyMDMzLVxcdTIwMzRcXHUyMDM2LVxcdTIwMzdcXHUyMDNDXFx1MjAzRVxcdTIwNDctIgorICAgICAgICAgICAgKyAiXFx1MjA0OVxcdTIwNTdcXHUyMDVGXFx1MjA3MC1cXHUyMDcxXFx1MjA3NC1cXHUyMDhFXFx1MjBBOCIKKyAgICAgICAgICAgICsgIlxcdTIwRDAtXFx1MjBEQ1xcdTIwRTFcXHUyMEU1LVxcdTIwRUFcXHUyMTAwLVxcdTIxMDNcXHUyMTA1LSIKKyAgICAgICAgICAgICsgIlxcdTIxMDdcXHUyMTA5LVxcdTIxMTNcXHUyMTE1LVxcdTIxMTZcXHUyMTE5LVxcdTIxMURcXHUyMTIwLSIKKyAgICAgICAgICAgICsgIlxcdTIxMjJcXHUyMTI0XFx1MjEyNlxcdTIxMjhcXHUyMTJBLVxcdTIxMkRcXHUyMTJGLVxcdTIxMzEiCisgICAgICAgICAgICArICJcXHUyMTMzLVxcdTIxMzlcXHUyMTNELVxcdTIxNDBcXHUyMTQ1LVxcdTIxNDlcXHUyMTUzLVxcdTIxN0YiCisgICAgICAgICAgICArICJcXHUyMTkwXFx1MjE5MlxcdTIxOTRcXHUyMUQwXFx1MjFEMlxcdTIxRDRcXHUyMjAzXFx1MjIwOFxcdTIyMEIiCisgICAgICAgICAgICArICJcXHUyMjIzXFx1MjIyNVxcdTIyMkMtXFx1MjIyRFxcdTIyMkYtXFx1MjIzMFxcdTIyM0NcXHUyMjQzIgorICAgICAgICAgICAgKyAiXFx1MjI0NVxcdTIyNDhcXHUyMjREXFx1MjI2MVxcdTIyNjQtXFx1MjI2NVxcdTIyNzItXFx1MjI3MyIKKyAgICAgICAgICAgICsgIlxcdTIyNzYtXFx1MjI3N1xcdTIyN0EtXFx1MjI3RFxcdTIyODItXFx1MjI4M1xcdTIyODYtXFx1MjI4NyIKKyAgICAgICAgICAgICsgIlxcdTIyOTEtXFx1MjI5MlxcdTIyQTJcXHUyMkE4LVxcdTIyQTlcXHUyMkFCXFx1MjJCMi1cXHUyMkI1IgorICAgICAgICAgICAgKyAiXFx1MjMyOS1cXHUyMzJBXFx1MjQ2MC1cXHUyNEVBXFx1MkEwQ1xcdTJBNzQtXFx1MkE3NlxcdTJBREMiCisgICAgICAgICAgICArICJcXHUyRTlGXFx1MkVGM1xcdTJGMDAtXFx1MkZENVxcdTMwMDBcXHUzMDJBLVxcdTMwMkZcXHUzMDM2IgorICAgICAgICAgICAgKyAiXFx1MzAzOC1cXHUzMDNBXFx1MzA0NlxcdTMwNEJcXHUzMDREXFx1MzA0RlxcdTMwNTFcXHUzMDUzXFx1MzA1NSIKKyAgICAgICAgICAgICsgIlxcdTMwNTdcXHUzMDU5XFx1MzA1QlxcdTMwNURcXHUzMDVGXFx1MzA2MVxcdTMwNjRcXHUzMDY2XFx1MzA2OCIKKyAgICAgICAgICAgICsgIlxcdTMwNkZcXHUzMDcyXFx1MzA3NVxcdTMwNzhcXHUzMDdCXFx1MzA5OS1cXHUzMDlEXFx1MzA5RlxcdTMwQTYiCisgICAgICAgICAgICArICJcXHUzMEFCXFx1MzBBRFxcdTMwQUZcXHUzMEIxXFx1MzBCM1xcdTMwQjVcXHUzMEI3XFx1MzBCOVxcdTMwQkIiCisgICAgICAgICAgICArICJcXHUzMEJEXFx1MzBCRlxcdTMwQzFcXHUzMEM0XFx1MzBDNlxcdTMwQzhcXHUzMENGXFx1MzBEMlxcdTMwRDUiCisgICAgICAgICAgICArICJcXHUzMEQ4XFx1MzBEQlxcdTMwRUYtXFx1MzBGMlxcdTMwRkRcXHUzMEZGXFx1MzEzMS1cXHUzMThFIgorICAgICAgICAgICAgKyAiXFx1MzE5Mi1cXHUzMTlGXFx1MzIwMC1cXHUzMjFDXFx1MzIyMC1cXHUzMjQzXFx1MzI1MS1cXHUzMjdCIgorICAgICAgICAgICAgKyAiXFx1MzI4MC1cXHUzMkNCXFx1MzJEMC1cXHUzMkZFXFx1MzMwMC1cXHUzMzc2XFx1MzM3Qi1cXHUzM0REIgorICAgICAgICAgICAgKyAiXFx1MzNFMC1cXHUzM0ZFXFx1QUMwMFxcdUFDMUNcXHVBQzM4XFx1QUM1NFxcdUFDNzBcXHVBQzhDXFx1QUNBOCIKKyAgICAgICAgICAgICsgIlxcdUFDQzRcXHVBQ0UwXFx1QUNGQ1xcdUFEMThcXHVBRDM0XFx1QUQ1MFxcdUFENkNcXHVBRDg4XFx1QURBNCIKKyAgICAgICAgICAgICsgIlxcdUFEQzBcXHVBRERDXFx1QURGOFxcdUFFMTRcXHVBRTMwXFx1QUU0Q1xcdUFFNjhcXHVBRTg0XFx1QUVBMCIKKyAgICAgICAgICAgICsgIlxcdUFFQkNcXHVBRUQ4XFx1QUVGNFxcdUFGMTBcXHVBRjJDXFx1QUY0OFxcdUFGNjRcXHVBRjgwXFx1QUY5QyIKKyAgICAgICAgICAgICsgIlxcdUFGQjhcXHVBRkQ0XFx1QUZGMFxcdUIwMENcXHVCMDI4XFx1QjA0NFxcdUIwNjBcXHVCMDdDXFx1QjA5OCIKKyAgICAgICAgICAgICsgIlxcdUIwQjRcXHVCMEQwXFx1QjBFQ1xcdUIxMDhcXHVCMTI0XFx1QjE0MFxcdUIxNUNcXHVCMTc4XFx1QjE5NCIKKyAgICAgICAgICAgICsgIlxcdUIxQjBcXHVCMUNDXFx1QjFFOFxcdUIyMDRcXHVCMjIwXFx1QjIzQ1xcdUIyNThcXHVCMjc0XFx1QjI5MCIKKyAgICAgICAgICAgICsgIlxcdUIyQUNcXHVCMkM4XFx1QjJFNFxcdUIzMDBcXHVCMzFDXFx1QjMzOFxcdUIzNTRcXHVCMzcwXFx1QjM4QyIKKyAgICAgICAgICAgICsgIlxcdUIzQThcXHVCM0M0XFx1QjNFMFxcdUIzRkNcXHVCNDE4XFx1QjQzNFxcdUI0NTBcXHVCNDZDXFx1QjQ4OCIKKyAgICAgICAgICAgICsgIlxcdUI0QTRcXHVCNEMwXFx1QjREQ1xcdUI0RjhcXHVCNTE0XFx1QjUzMFxcdUI1NENcXHVCNTY4XFx1QjU4NCIKKyAgICAgICAgICAgICsgIlxcdUI1QTBcXHVCNUJDXFx1QjVEOFxcdUI1RjRcXHVCNjEwXFx1QjYyQ1xcdUI2NDhcXHVCNjY0XFx1QjY4MCIKKyAgICAgICAgICAgICsgIlxcdUI2OUNcXHVCNkI4XFx1QjZENFxcdUI2RjBcXHVCNzBDXFx1QjcyOFxcdUI3NDRcXHVCNzYwXFx1Qjc3QyIKKyAgICAgICAgICAgICsgIlxcdUI3OThcXHVCN0I0XFx1QjdEMFxcdUI3RUNcXHVCODA4XFx1QjgyNFxcdUI4NDBcXHVCODVDXFx1Qjg3OCIKKyAgICAgICAgICAgICsgIlxcdUI4OTRcXHVCOEIwXFx1QjhDQ1xcdUI4RThcXHVCOTA0XFx1QjkyMFxcdUI5M0NcXHVCOTU4XFx1Qjk3NCIKKyAgICAgICAgICAgICsgIlxcdUI5OTBcXHVCOUFDXFx1QjlDOFxcdUI5RTRcXHVCQTAwXFx1QkExQ1xcdUJBMzhcXHVCQTU0XFx1QkE3MCIKKyAgICAgICAgICAgICsgIlxcdUJBOENcXHVCQUE4XFx1QkFDNFxcdUJBRTBcXHVCQUZDXFx1QkIxOFxcdUJCMzRcXHVCQjUwXFx1QkI2QyIKKyAgICAgICAgICAgICsgIlxcdUJCODhcXHVCQkE0XFx1QkJDMFxcdUJCRENcXHVCQkY4XFx1QkMxNFxcdUJDMzBcXHVCQzRDXFx1QkM2OCIKKyAgICAgICAgICAgICsgIlxcdUJDODRcXHVCQ0EwXFx1QkNCQ1xcdUJDRDhcXHVCQ0Y0XFx1QkQxMFxcdUJEMkNcXHVCRDQ4XFx1QkQ2NCIKKyAgICAgICAgICAgICsgIlxcdUJEODBcXHVCRDlDXFx1QkRCOFxcdUJERDRcXHVCREYwXFx1QkUwQ1xcdUJFMjhcXHVCRTQ0XFx1QkU2MCIKKyAgICAgICAgICAgICsgIlxcdUJFN0NcXHVCRTk4XFx1QkVCNFxcdUJFRDBcXHVCRUVDXFx1QkYwOFxcdUJGMjRcXHVCRjQwXFx1QkY1QyIKKyAgICAgICAgICAgICsgIlxcdUJGNzhcXHVCRjk0XFx1QkZCMFxcdUJGQ0NcXHVCRkU4XFx1QzAwNFxcdUMwMjBcXHVDMDNDXFx1QzA1OCIKKyAgICAgICAgICAgICsgIlxcdUMwNzRcXHVDMDkwXFx1QzBBQ1xcdUMwQzhcXHVDMEU0XFx1QzEwMFxcdUMxMUNcXHVDMTM4XFx1QzE1NCIKKyAgICAgICAgICAgICsgIlxcdUMxNzBcXHVDMThDXFx1QzFBOFxcdUMxQzRcXHVDMUUwXFx1QzFGQ1xcdUMyMThcXHVDMjM0XFx1QzI1MCIKKyAgICAgICAgICAgICsgIlxcdUMyNkNcXHVDMjg4XFx1QzJBNFxcdUMyQzBcXHVDMkRDXFx1QzJGOFxcdUMzMTRcXHVDMzMwXFx1QzM0QyIKKyAgICAgICAgICAgICsgIlxcdUMzNjhcXHVDMzg0XFx1QzNBMFxcdUMzQkNcXHVDM0Q4XFx1QzNGNFxcdUM0MTBcXHVDNDJDXFx1QzQ0OCIKKyAgICAgICAgICAgICsgIlxcdUM0NjRcXHVDNDgwXFx1QzQ5Q1xcdUM0QjhcXHVDNEQ0XFx1QzRGMFxcdUM1MENcXHVDNTI4XFx1QzU0NCIKKyAgICAgICAgICAgICsgIlxcdUM1NjBcXHVDNTdDXFx1QzU5OFxcdUM1QjRcXHVDNUQwXFx1QzVFQ1xcdUM2MDhcXHVDNjI0XFx1QzY0MCIKKyAgICAgICAgICAgICsgIlxcdUM2NUNcXHVDNjc4XFx1QzY5NFxcdUM2QjBcXHVDNkNDXFx1QzZFOFxcdUM3MDRcXHVDNzIwXFx1QzczQyIKKyAgICAgICAgICAgICsgIlxcdUM3NThcXHVDNzc0XFx1Qzc5MFxcdUM3QUNcXHVDN0M4XFx1QzdFNFxcdUM4MDBcXHVDODFDXFx1QzgzOCIKKyAgICAgICAgICAgICsgIlxcdUM4NTRcXHVDODcwXFx1Qzg4Q1xcdUM4QThcXHVDOEM0XFx1QzhFMFxcdUM4RkNcXHVDOTE4XFx1QzkzNCIKKyAgICAgICAgICAgICsgIlxcdUM5NTBcXHVDOTZDXFx1Qzk4OFxcdUM5QTRcXHVDOUMwXFx1QzlEQ1xcdUM5RjhcXHVDQTE0XFx1Q0EzMCIKKyAgICAgICAgICAgICsgIlxcdUNBNENcXHVDQTY4XFx1Q0E4NFxcdUNBQTBcXHVDQUJDXFx1Q0FEOFxcdUNBRjRcXHVDQjEwXFx1Q0IyQyIKKyAgICAgICAgICAgICsgIlxcdUNCNDhcXHVDQjY0XFx1Q0I4MFxcdUNCOUNcXHVDQkI4XFx1Q0JENFxcdUNCRjBcXHVDQzBDXFx1Q0MyOCIKKyAgICAgICAgICAgICsgIlxcdUNDNDRcXHVDQzYwXFx1Q0M3Q1xcdUNDOThcXHVDQ0I0XFx1Q0NEMFxcdUNDRUNcXHVDRDA4XFx1Q0QyNCIKKyAgICAgICAgICAgICsgIlxcdUNENDBcXHVDRDVDXFx1Q0Q3OFxcdUNEOTRcXHVDREIwXFx1Q0RDQ1xcdUNERThcXHVDRTA0XFx1Q0UyMCIKKyAgICAgICAgICAgICsgIlxcdUNFM0NcXHVDRTU4XFx1Q0U3NFxcdUNFOTBcXHVDRUFDXFx1Q0VDOFxcdUNFRTRcXHVDRjAwXFx1Q0YxQyIKKyAgICAgICAgICAgICsgIlxcdUNGMzhcXHVDRjU0XFx1Q0Y3MFxcdUNGOENcXHVDRkE4XFx1Q0ZDNFxcdUNGRTBcXHVDRkZDXFx1RDAxOCIKKyAgICAgICAgICAgICsgIlxcdUQwMzRcXHVEMDUwXFx1RDA2Q1xcdUQwODhcXHVEMEE0XFx1RDBDMFxcdUQwRENcXHVEMEY4XFx1RDExNCIKKyAgICAgICAgICAgICsgIlxcdUQxMzBcXHVEMTRDXFx1RDE2OFxcdUQxODRcXHVEMUEwXFx1RDFCQ1xcdUQxRDhcXHVEMUY0XFx1RDIxMCIKKyAgICAgICAgICAgICsgIlxcdUQyMkNcXHVEMjQ4XFx1RDI2NFxcdUQyODBcXHVEMjlDXFx1RDJCOFxcdUQyRDRcXHVEMkYwXFx1RDMwQyIKKyAgICAgICAgICAgICsgIlxcdUQzMjhcXHVEMzQ0XFx1RDM2MFxcdUQzN0NcXHVEMzk4XFx1RDNCNFxcdUQzRDBcXHVEM0VDXFx1RDQwOCIKKyAgICAgICAgICAgICsgIlxcdUQ0MjRcXHVENDQwXFx1RDQ1Q1xcdUQ0NzhcXHVENDk0XFx1RDRCMFxcdUQ0Q0NcXHVENEU4XFx1RDUwNCIKKyAgICAgICAgICAgICsgIlxcdUQ1MjBcXHVENTNDXFx1RDU1OFxcdUQ1NzRcXHVENTkwXFx1RDVBQ1xcdUQ1QzhcXHVENUU0XFx1RDYwMCIKKyAgICAgICAgICAgICsgIlxcdUQ2MUNcXHVENjM4XFx1RDY1NFxcdUQ2NzBcXHVENjhDXFx1RDZBOFxcdUQ2QzRcXHVENkUwXFx1RDZGQyIKKyAgICAgICAgICAgICsgIlxcdUQ3MThcXHVENzM0XFx1RDc1MFxcdUQ3NkNcXHVENzg4XFx1RjkwMC1cXHVGQTBEXFx1RkExMFxcdUZBMTIiCisgICAgICAgICAgICArICJcXHVGQTE1LVxcdUZBMUVcXHVGQTIwXFx1RkEyMlxcdUZBMjUtXFx1RkEyNlxcdUZBMkEtXFx1RkEyRCIKKyAgICAgICAgICAgICsgIlxcdUZBMzAtXFx1RkE2QVxcdUZCMDAtXFx1RkIwNlxcdUZCMTMtXFx1RkIxN1xcdUZCMUQtXFx1RkIzNiIKKyAgICAgICAgICAgICsgIlxcdUZCMzgtXFx1RkIzQ1xcdUZCM0VcXHVGQjQwLVxcdUZCNDFcXHVGQjQzLVxcdUZCNDRcXHVGQjQ2LSIKKyAgICAgICAgICAgICsgIlxcdUZCQjFcXHVGQkQzLVxcdUZEM0RcXHVGRDUwLVxcdUZEOEZcXHVGRDkyLVxcdUZEQzdcXHVGREYwLSIKKyAgICAgICAgICAgICsgIlxcdUZERkNcXHVGRTIwLVxcdUZFMjNcXHVGRTMwLVxcdUZFNDRcXHVGRTQ5LVxcdUZFNTJcXHVGRTU0LSIKKyAgICAgICAgICAgICsgIlxcdUZFNjZcXHVGRTY4LVxcdUZFNkJcXHVGRTcwLVxcdUZFNzJcXHVGRTc0XFx1RkU3Ni1cXHVGRUZDIgorICAgICAgICAgICAgKyAiXFx1RkYwMS1cXHVGRkJFXFx1RkZDMi1cXHVGRkM3XFx1RkZDQS1cXHVGRkNGXFx1RkZEMi1cXHVGRkQ3IgorICAgICAgICAgICAgKyAiXFx1RkZEQS1cXHVGRkRDXFx1RkZFMC1cXHVGRkU2XFx1RkZFOC1cXHVGRkVFXFxVMDAwMUQxNUUtXFxVMDAwMSIKKyAgICAgICAgICAgICsgIkQxNjlcXFUwMDAxRDE2RC1cXFUwMDAxRDE3MlxcVTAwMDFEMTdCLVxcVTAwMDFEMTgyXFxVMDAwMUQxODUtIgorICAgICAgICAgICAgKyAiXFxVMDAwMUQxOEJcXFUwMDAxRDFBQS1cXFUwMDAxRDFBRFxcVTAwMDFEMUJCLVxcVTAwMDFEMUMwXFxVMDAwMSIKKyAgICAgICAgICAgICsgIkQ0MDAtXFxVMDAwMUQ0NTRcXFUwMDAxRDQ1Ni1cXFUwMDAxRDQ5Q1xcVTAwMDFENDlFLVxcVTAwMDFENDlGIgorICAgICAgICAgICAgKyAiXFxVMDAwMUQ0QTJcXFUwMDAxRDRBNS1cXFUwMDAxRDRBNlxcVTAwMDFENEE5LVxcVTAwMDFENEFDXFxVMDAwMSIKKyAgICAgICAgICAgICsgIkQ0QUUtXFxVMDAwMUQ0QjlcXFUwMDAxRDRCQlxcVTAwMDFENEJELVxcVTAwMDFENEMwXFxVMDAwMUQ0QzItIgorICAgICAgICAgICAgKyAiXFxVMDAwMUQ0QzNcXFUwMDAxRDRDNS1cXFUwMDAxRDUwNVxcVTAwMDFENTA3LVxcVTAwMDFENTBBXFxVMDAwMSIKKyAgICAgICAgICAgICsgIkQ1MEQtXFxVMDAwMUQ1MTRcXFUwMDAxRDUxNi1cXFUwMDAxRDUxQ1xcVTAwMDFENTFFLVxcVTAwMDFENTM5IgorICAgICAgICAgICAgKyAiXFxVMDAwMUQ1M0ItXFxVMDAwMUQ1M0VcXFUwMDAxRDU0MC1cXFUwMDAxRDU0NFxcVTAwMDFENTQ2XFxVMDAwMSIKKyAgICAgICAgICAgICsgIkQ1NEEtXFxVMDAwMUQ1NTBcXFUwMDAxRDU1Mi1cXFUwMDAxRDZBM1xcVTAwMDFENkE4LVxcVTAwMDFEN0M5IgorICAgICAgICAgICAgKyAiXFxVMDAwMUQ3Q0UtXFxVMDAwMUQ3RkZcXFUwMDAyRjgwMC1cXFUwMDAyRkExRF0iLCBmYWxzZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJldHVybiBza2lwcGFibGVzOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RTa2lwcGFibGUoKSB7CisgICAgICAgVW5pY29kZVNldCBzdGFydHMsIGRpZmY7CisgICAgICAgVW5pY29kZVNldFtdIHNraXBTZXRzID0gbmV3IFVuaWNvZGVTZXRbXXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgVW5pY29kZVNldCgpLCAvL05GRAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBVbmljb2RlU2V0KCksIC8vTkZDCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFVuaWNvZGVTZXQoKSwgLy9ORktDCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFVuaWNvZGVTZXQoKSwgLy9ORktECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFVuaWNvZGVTZXQoKSwgLy9GQ0QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgVW5pY29kZVNldCgpLCAvL05PTkUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICBVbmljb2RlU2V0W10gZXhwZWN0U2V0cyA9IG5ldyBVbmljb2RlU2V0W117CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFVuaWNvZGVTZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgVW5pY29kZVNldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBVbmljb2RlU2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFVuaWNvZGVTZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgVW5pY29kZVNldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBVbmljb2RlU2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgU3RyaW5nQnVmZmVyIHMsIHBhdHRlcm47CisgICAgICAgaW50IHN0YXJ0LCBsaW1pdCwgcmFuZ2VTdGFydCwgcmFuZ2VFbmQ7CisgICAgICAgaW50IGksIHJhbmdlLCBjb3VudDsKKyAgICAgICBzdGFydHMgPSBuZXcgVW5pY29kZVNldCgpOworICAgICAgIAorICAgICAgIAorICAgICAgIC8qIGJ1aWxkIE5GKlNraXBwYWJsZSBzZXRzIGZyb20gcnVudGltZSBkYXRhICovCisgICAgICAgTm9ybWFsaXplckltcGwuYWRkUHJvcGVydHlTdGFydHMoc3RhcnRzKTsKKyAgICAgICBjb3VudD1zdGFydHMuZ2V0UmFuZ2VDb3VudCgpOworICAgCisgICAgICAgc3RhcnQ9bGltaXQ9MDsKKyAgICAgICByYW5nZVN0YXJ0PXJhbmdlRW5kPTA7CisgICAgICAgcmFuZ2U9MDsKKyAgICAgICBmb3IoOzspIHsKKyAgICAgICAgICAgaWYoc3RhcnQ8bGltaXQpIHsKKyAgICAgICAgICAgICAgIC8qIGdldCBwcm9wZXJ0aWVzIGZvciBzdGFydCBhbmQgYXBwbHkgdGhlbSB0byBbc3RhcnQuLmxpbWl0WyAqLworICAgICAgICAgICAgICAgaWYoTm9ybWFsaXplci5pc05GU2tpcHBhYmxlKHN0YXJ0LCBOb3JtYWxpemVyLk5GRCkpIHsKKyAgICAgICAgICAgICAgICAgICBza2lwU2V0c1tEXS5hZGQoc3RhcnQsIGxpbWl0LTEpOworICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgaWYoTm9ybWFsaXplci5pc05GU2tpcHBhYmxlKHN0YXJ0LCBOb3JtYWxpemVyLk5GS0QpKSB7CisgICAgICAgICAgICAgICAgICAgc2tpcFNldHNbS0RdLmFkZChzdGFydCwgbGltaXQtMSk7CisgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICBpZihOb3JtYWxpemVyLmlzTkZTa2lwcGFibGUoc3RhcnQsIE5vcm1hbGl6ZXIuTkZDKSkgeworICAgICAgICAgICAgICAgICAgIHNraXBTZXRzW0NdLmFkZChzdGFydCwgbGltaXQtMSk7CisgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICBpZihOb3JtYWxpemVyLmlzTkZTa2lwcGFibGUoc3RhcnQsIE5vcm1hbGl6ZXIuTkZLQykpIHsKKyAgICAgICAgICAgICAgICAgICBza2lwU2V0c1tLQ10uYWRkKHN0YXJ0LCBsaW1pdC0xKTsKKyAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgIGlmKE5vcm1hbGl6ZXIuaXNORlNraXBwYWJsZShzdGFydCwgTm9ybWFsaXplci5GQ0QpKSB7CisgICAgICAgICAgICAgICAgICAgc2tpcFNldHNbRkNEXS5hZGQoc3RhcnQsIGxpbWl0LTEpOworICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgaWYoTm9ybWFsaXplci5pc05GU2tpcHBhYmxlKHN0YXJ0LCBOb3JtYWxpemVyLk5PTkUpKSB7CisgICAgICAgICAgICAgICAgICAgc2tpcFNldHNbTk9ORV0uYWRkKHN0YXJ0LCBsaW1pdC0xKTsKKyAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgIAorICAgICAgICAgICB9CisgICAKKyAgICAgICAgICAgLyogZ28gdG8gbmV4dCByYW5nZSBvZiBzYW1lIHByb3BlcnRpZXMgKi8KKyAgICAgICAgICAgc3RhcnQ9bGltaXQ7CisgICAgICAgICAgIGlmKCsrbGltaXQ+cmFuZ2VFbmQpIHsKKyAgICAgICAgICAgICAgIGlmKHJhbmdlPGNvdW50KSB7CisgICAgICAgICAgICAgICAgICAgbGltaXQ9cmFuZ2VTdGFydD1zdGFydHMuZ2V0UmFuZ2VTdGFydChyYW5nZSk7CisgICAgICAgICAgICAgICAgICAgcmFuZ2VFbmQ9c3RhcnRzLmdldFJhbmdlRW5kKHJhbmdlKTsKKyAgICAgICAgICAgICAgICAgICArK3JhbmdlOworICAgICAgICAgICAgICAgfSBlbHNlIGlmKHJhbmdlPT1jb3VudCkgeworICAgICAgICAgICAgICAgICAgIC8qIGFkZGl0aW9uYWwgcmFuZ2UgdG8gY29tcGxldGUgdGhlIFVuaWNvZGUgY29kZSBzcGFjZSAqLworICAgICAgICAgICAgICAgICAgIGxpbWl0PXJhbmdlU3RhcnQ9cmFuZ2VFbmQ9MHgxMTAwMDA7CisgICAgICAgICAgICAgICAgICAgKytyYW5nZTsKKyAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICB9CisgICAgICAgICAgIH0KKyAgICAgICB9CisgICAKKyAgICAgICBleHBlY3RTZXRzID0gaW5pdFNraXBwYWJsZXMoZXhwZWN0U2V0cyk7CisgICAgICAgZm9yKGk9MDsgaTwgNC8qZXhwZWN0U2V0cy5sZW5ndGggZm9yIG5vdyBkbyBub3QgdGVzdCBGQ0QgYW5kIE5PTkUgc2luY2UgdGhlcmUgaXMgbm8gZGF0YSovOyArK2kpIHsKKyAgICAgICAgICAgaWYoIXNraXBTZXRzW2ldLmVxdWFscyhleHBlY3RTZXRzW2ldKSkgeworICAgICAgICAgICAgICAgZXJybG4oImVycm9yOiBUZXN0U2tpcHBhYmxlIHNraXBTZXRzWyIraSsiXSE9ZXhwZWN0ZWRTZXRzWyIraSsiXVxuIisKKyAgICAgICAgICAgICAgICAgICAgICJtYXkgbmVlZCB0byB1cGRhdGUgaGFyZGNvZGVkIFVuaWNvZGVTZXQgcGF0dGVybnMgaW4gY29tLmlibS5pY3UuZGV2LnRlc3Qubm9ybWFsaXplci5CYXNpY1Rlc3QuamF2YVxuIik7CisgICAKKyAgICAgICAgICAgICAgIHM9bmV3IFN0cmluZ0J1ZmZlcigic2tpcC1leHBlY3Q9Iik7CisgICAgICAgICAgICAgICBwYXR0ZXJuID0gbmV3IFN0cmluZ0J1ZmZlcigoZGlmZj1za2lwU2V0c1tpXSkucmVtb3ZlQWxsKGV4cGVjdFNldHNbaV0pLnRvUGF0dGVybih0cnVlKSk7CisgICAgICAgICAgICAgICBzLmFwcGVuZChwYXR0ZXJuKTsKKyAgIAorICAgICAgICAgICAgICAgcGF0dGVybi5kZWxldGUoMCxwYXR0ZXJuLmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgIHMuYXBwZW5kKCJcblxuZXhwZWN0LXNraXA9Iik7CisgICAgICAgICAgICAgICBwYXR0ZXJuID0gbmV3IFN0cmluZ0J1ZmZlcigoZGlmZj1leHBlY3RTZXRzW2ldKS5yZW1vdmVBbGwoc2tpcFNldHNbaV0pLnRvUGF0dGVybih0cnVlKSk7CisgICAgICAgICAgICAgICBzLmFwcGVuZChwYXR0ZXJuKTsKKyAgICAgICAgICAgICAgIHMuYXBwZW5kKCJcblxuIik7CisgICAKKyAgICAgICAgICAgICAgIGVycmxuKHMudG9TdHJpbmcoKSk7CisgICAgICAgICAgIH0KKyAgICAgICB9CisgICAgIH0KKyAgICAgCisgICAgIHB1YmxpYyB2b2lkIFRlc3RCdWdKMjA2OCgpeworICAgICAgICBTdHJpbmcgc2FtcGxlID0gIlRoZSBxdWljayBicm93biBmb3gganVtcGVkIG92ZXIgdGhlIGxhenkgZG9nIjsKKyAgICAgICAgVUNoYXJhY3Rlckl0ZXJhdG9yIHRleHQgPSBVQ2hhcmFjdGVySXRlcmF0b3IuZ2V0SW5zdGFuY2Uoc2FtcGxlKTsKKyAgICAgICAgTm9ybWFsaXplciBub3JtID0gbmV3IE5vcm1hbGl6ZXIodGV4dCxOb3JtYWxpemVyLk5GQyk7CisgICAgICAgIHRleHQuc2V0SW5kZXgoNCk7CisgICAgICAgIGlmKHRleHQuY3VycmVudCgpID09IG5vcm0uY3VycmVudCgpKXsKKyAgICAgICAgICAgIGVycmxuKCJOb3JtYWxpemVyIGlzIG5vdCBjbG9uaW5nIHRoZSBVQ2hhcmFjdGVySXRlcmF0b3IiKTsKKyAgICAgICAgfQorICAgICB9ICAgCisgICAgICAgIAorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L25vcm1hbGl6ZXIvQ29uZm9ybWFuY2VUZXN0LmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3Qvbm9ybWFsaXplci9Db25mb3JtYW5jZVRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44NzFiMWYwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L25vcm1hbGl6ZXIvQ29uZm9ybWFuY2VUZXN0LmphdmEKQEAgLTAsMCArMSw0NjkgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9ub3JtYWxpemVyL0NvbmZvcm1hbmNlVGVzdC5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzExLzIyIDAwOjIzOjE5ICQgCisgKiAkUmV2aXNpb246IDEuMTEgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3Qubm9ybWFsaXplcjsKKworaW1wb3J0IGNvbS5pYm0uaWN1LmRldi50ZXN0LlRlc3RVdGlsOworaW1wb3J0IGphdmEudGV4dC5TdHJpbmdDaGFyYWN0ZXJJdGVyYXRvcjsKK2ltcG9ydCBqYXZhLmlvLio7CitpbXBvcnQgY29tLmlibS5pY3UuZGV2LnRlc3QuKjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0Lio7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5VdGlsaXR5OworCitwdWJsaWMgY2xhc3MgQ29uZm9ybWFuY2VUZXN0IGV4dGVuZHMgVGVzdEZtd2sgeworCisgICAgTm9ybWFsaXplciBub3JtYWxpemVyOworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIG5ldyBDb25mb3JtYW5jZVRlc3QoKS5ydW4oYXJncyk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBDb25mb3JtYW5jZVRlc3QoKSB7CisgICAgICAgIC8vIERvZXNuJ3QgbWF0dGVyIHdoYXQgdGhlIHN0cmluZyBhbmQgbW9kZSBhcmU7IHdlJ2xsIGNoYW5nZQorICAgICAgICAvLyB0aGVtIGxhdGVyIGFzIG5lZWRlZC4KKyAgICAgICAgbm9ybWFsaXplciA9IG5ldyBOb3JtYWxpemVyKCIiLCBOb3JtYWxpemVyLk5GQyk7CisgICAgfQorICAgIC8vIG1vcmUgaW50ZXJlc3RpbmcgY29uZm9ybWFuY2UgdGVzdCBjYXNlcywgbm90IGluIHRoZSB1bmljb2RlLm9yZyBOb3JtYWxpemF0aW9uVGVzdC50eHQKKwlzdGF0aWMgIFN0cmluZ1tdIG1vcmVDYXNlcyA9eworCSAgICAvLyBNYXJrdXMgMjAwMWF1ZzMwCisJICAgICIwMDYxIDAzMzIgMDMwODswMEU0IDAzMzI7MDA2MSAwMzMyIDAzMDg7MDBFNCAwMzMyOzAwNjEgMDMzMiAwMzA4OyAjIE1hcmt1cyAwIiwKKwkKKwkgICAgLy8gTWFya3VzIDIwMDFvY3QyNiAtIHRlc3QgZWRnZSBjYXNlIGZvciBpdGVyYXRpb246IFUrMGY3My5jYz09MCBidXQgZGVjb21wb3NpdGlvbi5sZWFkLmNjPT0xMjkKKwkgICAgIjAwNjEgMDMwMSAwRjczOzAwRTEgMEY3MSAwRjcyOzAwNjEgMEY3MSAwRjcyIDAzMDE7MDBFMSAwRjcxIDBGNzI7MDA2MSAwRjcxIDBGNzIgMDMwMTsgIyBNYXJrdXMgMSIKKwl9OworCisgICAgLyoqCisgICAgICogVGVzdCB0aGUgY29uZm9ybWFuY2Ugb2YgTmV3Tm9ybWFsaXplciB0bworICAgICAqIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvdW5pY29kZS9yZXBvcnRzL3RyMTUvY29uZm9ybWFuY2UvRHJhZnQtVGVzdFN1aXRlLnR4dC4KKyAgICAgKiBUaGlzIGZpbGUgbXVzdCBiZSBsb2NhdGVkIGF0IHRoZSBwYXRoIHNwZWNpZmllZCBhcyBURVNUX1NVSVRFX0ZJTEUuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdENvbmZvcm1hbmNlKCkgdGhyb3dzIEV4Y2VwdGlvbnsKKyAgICAgICAgQnVmZmVyZWRSZWFkZXIgaW5wdXQgPSBudWxsOworICAgICAgICBTdHJpbmcgbGluZSA9IG51bGw7CisgICAgICAgIFN0cmluZ1tdIGZpZWxkcyA9IG5ldyBTdHJpbmdbNV07CisgICAgICAgIFN0cmluZ0J1ZmZlciBidWYgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIGludCBwYXNzQ291bnQgPSAwOworICAgICAgICBpbnQgZmFpbENvdW50ID0gMDsKKyAgICAgICAgVW5pY29kZVNldCBvdGhlciA9IG5ldyBVbmljb2RlU2V0KDAsIDB4MTBmZmZmKTsKKyAgICAgICAgaW50IGM9MDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGlucHV0ID0gVGVzdFV0aWwuZ2V0RGF0YVJlYWRlcigidW5pY29kZS9Ob3JtYWxpemF0aW9uVGVzdC50eHQiKTsKKyAgICAgICAgICAgIGZvciAoaW50IGNvdW50ID0gMDs7Kytjb3VudCkgeworICAgICAgICAgICAgICAgIGxpbmUgPSBpbnB1dC5yZWFkTGluZSgpOworICAgICAgICAgICAgICAgIGlmIChsaW5lID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgLy9yZWFkIHRoZSBleHRyYSB0ZXN0IGNhc2VzCisJICAgICAgICAgICAgICAgIGlmKGNvdW50ID4gbW9yZUNhc2VzLmxlbmd0aCkgeworCQkgICAgICAgICAgICAgICAgY291bnQgPSAwOworCQkgICAgICAgICAgICB9IGVsc2UgaWYoY291bnQgPT0gbW9yZUNhc2VzLmxlbmd0aCkgeworCQkgICAgICAgICAgICAgICAgLy8gYWxsIGRvbmUKKwkJICAgICAgICAgICAgICAgIGJyZWFrOworCQkgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBtb3JlQ2FzZXNbY291bnQrK107CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChsaW5lLmxlbmd0aCgpID09IDApIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgLy8gRXhwZWN0IDUgY29sdW1ucyBvZiB0aGlzIGZvcm1hdDoKKyAgICAgICAgICAgICAgICAvLyAxRTBDOzFFMEM7MDA0NCAwMzIzOzFFMEM7MDA0NCAwMzIzOyAjIDxjb21tZW50cz4KKworICAgICAgICAgICAgICAgIC8vIFNraXAgY29tbWVudHMKKyAgICAgICAgICAgICAgICBpZiAobGluZS5jaGFyQXQoMCkgPT0gJyMnICB8fCBsaW5lLmNoYXJBdCgwKT09J0AnKSBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIC8vIFBhcnNlIG91dCB0aGUgZmllbGRzCisgICAgICAgICAgICAgICAgaGV4c3BsaXQobGluZSwgJzsnLCBmaWVsZHMsIGJ1Zik7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIGEgc2luZ2xlIGNvZGUgcG9pbnQgZnJvbSB0aGUgIm90aGVyIiBVbmljb2RlU2V0CisJCSAgICAgICAgaWYoZmllbGRzWzBdLmxlbmd0aCgpPT1VVEYxNi5tb3ZlQ29kZVBvaW50T2Zmc2V0KGZpZWxkc1swXSwwLCAxKSkgeworCQkgICAgICAgICAgICBjPVVURjE2LmNoYXJBdChmaWVsZHNbMF0sMCk7IAorCQkgICAgICAgICAgICBpZigweGFjMjA8PWMgJiYgYzw9MHhkNzNmKSB7CisJCSAgICAgICAgICAgICAgICAvLyBub3QgYW4gZXhoYXVzdGl2ZSB0ZXN0IHJ1bjogc2tpcCBtb3N0IEhhbmd1bCBzeWxsYWJsZXMKKwkJICAgICAgICAgICAgICAgIGlmKGM9PTB4YWMyMCkgeworCQkgICAgICAgICAgICAgICAgICAgIG90aGVyLnJlbW92ZSgweGFjMjAsIDB4ZDczZik7CisJCSAgICAgICAgICAgICAgICB9CisJCSAgICAgICAgICAgICAgICBjb250aW51ZTsKKwkJICAgICAgICAgICAgfQorCQkgICAgICAgICAgICBvdGhlci5yZW1vdmUoYyk7CisJCSAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChjaGVja0NvbmZvcm1hbmNlKGZpZWxkcywgbGluZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgKytwYXNzQ291bnQ7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgKytmYWlsQ291bnQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICgoY291bnQgJSAxMDAwKSA9PSA5OTkpIHsKKyAgICAgICAgICAgICAgICAgICAgbG9nbG4oIkxpbmUgIiArIChjb3VudCsxKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBpbnB1dC5jbG9zZSgpOworICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIiIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZXgucHJpbnRTdGFja1RyYWNlKCk7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJDb3VsZG4ndCByZWFkIGZpbGUgIgorICAgICAgICAgICAgICArIGV4LmdldENsYXNzKCkuZ2V0TmFtZSgpICsgIiAiICsgZXguZ2V0TWVzc2FnZSgpCisgICAgICAgICAgICAgICsgIiBsaW5lID0gIiArIGxpbmUKKyAgICAgICAgICAgICAgKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChmYWlsQ291bnQgIT0gMCkgeworICAgICAgICAgICAgZXJybG4oIlRvdGFsOiAiICsgZmFpbENvdW50ICsgIiBsaW5lcyBmYWlsZWQsICIgKworICAgICAgICAgICAgICAgICAgcGFzc0NvdW50ICsgIiBsaW5lcyBwYXNzZWQiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvZ2xuKCJUb3RhbDogIiArIHBhc3NDb3VudCArICIgbGluZXMgcGFzc2VkIik7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogVmVyaWZ5IHRoZSBjb25mb3JtYW5jZSBvZiB0aGUgZ2l2ZW4gbGluZSBvZiB0aGUgVW5pY29kZQorICAgICAqIG5vcm1hbGl6YXRpb24gKFVUUiAxNSkgdGVzdCBzdWl0ZSBmaWxlLiAgRm9yIGVhY2ggbGluZSwKKyAgICAgKiB0aGVyZSBhcmUgZml2ZSBjb2x1bW5zLCBjb3JyZXNwb25kaW5nIHRvIGZpZWxkWzBdLi5maWVsZFs0XS4KKyAgICAgKgorICAgICAqIFRoZSBmb2xsb3dpbmcgaW52YXJpYW50cyBtdXN0IGJlIHRydWUgZm9yIGFsbCBjb25mb3JtYW50IGltcGxlbWVudGF0aW9ucworICAgICAqICBjMiA9PSBORkMoYzEpID09IE5GQyhjMikgPT0gTkZDKGMzKQorICAgICAqICBjMyA9PSBORkQoYzEpID09IE5GRChjMikgPT0gTkZEKGMzKQorICAgICAqICBjNCA9PSBORktDKGMxKSA9PSBORktDKGMyKSA9PSBORktDKGMzKSA9PSBORktDKGM0KSA9PSBORktDKGM1KQorICAgICAqICBjNSA9PSBORktEKGMxKSA9PSBORktEKGMyKSA9PSBORktEKGMzKSA9PSBORktEKGM0KSA9PSBORktEKGM1KQorICAgICAqCisgICAgICogQHBhcmFtIGZpZWxkIHRoZSA1IGNvbHVtbnMKKyAgICAgKiBAcGFyYW0gbGluZSB0aGUgc291cmNlIGxpbmUgZnJvbSB0aGUgdGVzdCBzdWl0ZSBmaWxlCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSB0ZXN0IHBhc3NlcworICAgICAqLworICAgIHByaXZhdGUgYm9vbGVhbiBjaGVja0NvbmZvcm1hbmNlKFN0cmluZ1tdIGZpZWxkLCBTdHJpbmcgbGluZSkgdGhyb3dzIEV4Y2VwdGlvbnsKKyAgICAgICAgYm9vbGVhbiBwYXNzID0gdHJ1ZTsKKyAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsgLy8gc2NyYXRjaAorICAgICAgICBTdHJpbmcgb3V0LGZjZDsKKyAgICAgICAgaW50IGk9MDsKKyAgICAgICAgZm9yIChpPTA7IGk8NTsgKytpKSB7CisgICAgICAgICAgICBpZiAoaTwzKSB7CisgICAgICAgICAgICAgICAgb3V0ID0gTm9ybWFsaXplci5ub3JtYWxpemUoZmllbGRbaV0sIE5vcm1hbGl6ZXIuTkZDKTsKKyAgICAgICAgICAgICAgICBwYXNzICY9IGFzc2VydEVxdWFsKCJDIiwgZmllbGRbaV0sIG91dCwgZmllbGRbMV0sICJjMiE9QyhjIiArIChpKzEpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBvdXQgPSBpdGVyYXRpdmVOb3JtKGZpZWxkW2ldLCBOb3JtYWxpemVyLk5GQywgYnVmLCArMSk7CisgICAgICAgICAgICAgICAgcGFzcyAmPSBhc3NlcnRFcXVhbCgiQygrMSkiLCBmaWVsZFtpXSwgb3V0LCBmaWVsZFsxXSwgImMyIT1DKGMiICsgKGkrMSkpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG91dCA9IGl0ZXJhdGl2ZU5vcm0oZmllbGRbaV0sIE5vcm1hbGl6ZXIuTkZDLCBidWYsIC0xKTsKKyAgICAgICAgICAgICAgICBwYXNzICY9IGFzc2VydEVxdWFsKCJDKC0xKSIsIGZpZWxkW2ldLCBvdXQsIGZpZWxkWzFdLCAiYzIhPUMoYyIgKyAoaSsxKSk7CisKKyAgICAgICAgICAgICAgICBvdXQgPSBpdGVyYXRpdmVOb3JtKG5ldyBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvcihmaWVsZFtpXSksIE5vcm1hbGl6ZXIuTkZDLCBidWYsICsxKTsKKyAgICAgICAgICAgICAgICBwYXNzICY9IGFzc2VydEVxdWFsKCJDKCsxKSIsIGZpZWxkW2ldLCBvdXQsIGZpZWxkWzFdLCAiYzIhPUMoYyIgKyAoaSsxKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgb3V0ID0gaXRlcmF0aXZlTm9ybShuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IoZmllbGRbaV0pLCBOb3JtYWxpemVyLk5GQywgYnVmLCAtMSk7CisgICAgICAgICAgICAgICAgcGFzcyAmPSBhc3NlcnRFcXVhbCgiQygtMSkiLCBmaWVsZFtpXSwgb3V0LCBmaWVsZFsxXSwgImMyIT1DKGMiICsgKGkrMSkpOworICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBvdXQgPSBOb3JtYWxpemVyLm5vcm1hbGl6ZShmaWVsZFtpXSwgTm9ybWFsaXplci5ORkQpOworICAgICAgICAgICAgICAgIHBhc3MgJj0gYXNzZXJ0RXF1YWwoIkQiLCBmaWVsZFtpXSwgb3V0LCBmaWVsZFsyXSwgImMzIT1EKGMiICsgKGkrMSkpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG91dCA9IGl0ZXJhdGl2ZU5vcm0oZmllbGRbaV0sIE5vcm1hbGl6ZXIuTkZELCBidWYsICsxKTsKKyAgICAgICAgICAgICAgICBwYXNzICY9IGFzc2VydEVxdWFsKCJEKCsxKSIsIGZpZWxkW2ldLCBvdXQsIGZpZWxkWzJdLCAiYzMhPUQoYyIgKyAoaSsxKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgb3V0ID0gaXRlcmF0aXZlTm9ybShmaWVsZFtpXSwgTm9ybWFsaXplci5ORkQsIGJ1ZiwgLTEpOworICAgICAgICAgICAgICAgIHBhc3MgJj0gYXNzZXJ0RXF1YWwoIkQoLTEpIiwgZmllbGRbaV0sIG91dCwgZmllbGRbMl0sICJjMyE9RChjIiArIChpKzEpKTsKKworICAgICAgICAgICAgICAgIG91dCA9IGl0ZXJhdGl2ZU5vcm0obmV3IFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yKGZpZWxkW2ldKSwgTm9ybWFsaXplci5ORkQsIGJ1ZiwgKzEpOworICAgICAgICAgICAgICAgIHBhc3MgJj0gYXNzZXJ0RXF1YWwoIkQoKzEpIiwgZmllbGRbaV0sIG91dCwgZmllbGRbMl0sICJjMyE9RChjIiArIChpKzEpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBvdXQgPSBpdGVyYXRpdmVOb3JtKG5ldyBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvcihmaWVsZFtpXSksIE5vcm1hbGl6ZXIuTkZELCBidWYsIC0xKTsKKyAgICAgICAgICAgICAgICBwYXNzICY9IGFzc2VydEVxdWFsKCJEKC0xKSIsIGZpZWxkW2ldLCBvdXQsIGZpZWxkWzJdLCAiYzMhPUQoYyIgKyAoaSsxKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBvdXQgPSBOb3JtYWxpemVyLm5vcm1hbGl6ZShmaWVsZFtpXSwgTm9ybWFsaXplci5ORktDKTsKKyAgICAgICAgICAgIHBhc3MgJj0gYXNzZXJ0RXF1YWwoIktDIiwgZmllbGRbaV0sIG91dCwgZmllbGRbM10sICJjNCE9S0MoYyIgKyAoaSsxKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG91dCA9IGl0ZXJhdGl2ZU5vcm0oZmllbGRbaV0sIE5vcm1hbGl6ZXIuTkZLQywgYnVmLCArMSk7CisgICAgICAgICAgICBwYXNzICY9IGFzc2VydEVxdWFsKCJLRCgrMSkiLCBmaWVsZFtpXSwgb3V0LCBmaWVsZFszXSwgImM0IT1LQyhjIiArIChpKzEpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgb3V0ID0gaXRlcmF0aXZlTm9ybShmaWVsZFtpXSwgTm9ybWFsaXplci5ORktDLCBidWYsIC0xKTsKKyAgICAgICAgICAgIHBhc3MgJj0gYXNzZXJ0RXF1YWwoIktEKC0xKSIsIGZpZWxkW2ldLCBvdXQsIGZpZWxkWzNdLCAiYzQhPUtDKGMiICsgKGkrMSkpOworCisgICAgICAgICAgICBvdXQgPSBpdGVyYXRpdmVOb3JtKG5ldyBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvcihmaWVsZFtpXSksIE5vcm1hbGl6ZXIuTkZLQywgYnVmLCArMSk7CisgICAgICAgICAgICBwYXNzICY9IGFzc2VydEVxdWFsKCJLRCgrMSkiLCBmaWVsZFtpXSwgb3V0LCBmaWVsZFszXSwgImM0IT1LQyhjIiArIChpKzEpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgb3V0ID0gaXRlcmF0aXZlTm9ybShuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IoZmllbGRbaV0pLCBOb3JtYWxpemVyLk5GS0MsIGJ1ZiwgLTEpOworICAgICAgICAgICAgcGFzcyAmPSBhc3NlcnRFcXVhbCgiS0QoLTEpIiwgZmllbGRbaV0sIG91dCwgZmllbGRbM10sICJjNCE9S0MoYyIgKyAoaSsxKSk7CisgICAgICAgICAgICAgIAorCisgICAgICAgICAgICBvdXQgPSBOb3JtYWxpemVyLm5vcm1hbGl6ZShmaWVsZFtpXSwgTm9ybWFsaXplci5ORktEKTsKKyAgICAgICAgICAgIHBhc3MgJj0gYXNzZXJ0RXF1YWwoIktEIiwgZmllbGRbaV0sIG91dCwgZmllbGRbNF0sICJjNSE9S0QoYyIgKyAoaSsxKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG91dCA9IGl0ZXJhdGl2ZU5vcm0oZmllbGRbaV0sIE5vcm1hbGl6ZXIuTkZLRCwgYnVmLCArMSk7CisgICAgICAgICAgICBwYXNzICY9IGFzc2VydEVxdWFsKCJLRCgrMSkiLCBmaWVsZFtpXSwgb3V0LCBmaWVsZFs0XSwgImM1IT1LRChjIiArIChpKzEpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgb3V0ID0gaXRlcmF0aXZlTm9ybShmaWVsZFtpXSwgTm9ybWFsaXplci5ORktELCBidWYsIC0xKTsKKyAgICAgICAgICAgIHBhc3MgJj0gYXNzZXJ0RXF1YWwoIktEKC0xKSIsIGZpZWxkW2ldLCBvdXQsIGZpZWxkWzRdLCAiYzUhPUtEKGMiICsgKGkrMSkpOworICAgICAgICAgCisgICAgICAgICAgICBvdXQgPSBpdGVyYXRpdmVOb3JtKG5ldyBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvcihmaWVsZFtpXSksIE5vcm1hbGl6ZXIuTkZLRCwgYnVmLCArMSk7CisgICAgICAgICAgICBwYXNzICY9IGFzc2VydEVxdWFsKCJLRCgrMSkiLCBmaWVsZFtpXSwgb3V0LCBmaWVsZFs0XSwgImM1IT1LRChjIiArIChpKzEpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgb3V0ID0gaXRlcmF0aXZlTm9ybShuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IoZmllbGRbaV0pLCBOb3JtYWxpemVyLk5GS0QsIGJ1ZiwgLTEpOworICAgICAgICAgICAgcGFzcyAmPSBhc3NlcnRFcXVhbCgiS0QoLTEpIiwgZmllbGRbaV0sIG91dCwgZmllbGRbNF0sICJjNSE9S0QoYyIgKyAoaSsxKSk7CisgICAgICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIGNvbXBhcmUoZmllbGRbMV0sZmllbGRbMl0pOworICAgICAgICBjb21wYXJlKGZpZWxkWzBdLGZpZWxkWzFdKTsKKyAgICAgICAgIC8vIHRlc3QgcXVpY2sgY2hlY2tzCisJICAgIGlmKE5vcm1hbGl6ZXIuTk8gPT0gTm9ybWFsaXplci5xdWlja0NoZWNrKGZpZWxkWzFdLCBOb3JtYWxpemVyLk5GQykpIHsKKwkgICAgICAgIGVycmxuKCJOb3JtYWxpemVyIGVycm9yOiBxdWlja0NoZWNrKE5GQyhzKSwgTmV3Tm9ybWFsaXplci5ORkMpIGlzIE5ld05vcm1hbGl6ZXIuTk8iKTsKKwkgICAgICAgIHBhc3MgPSBmYWxzZTsKKwkgICAgfQorCSAgICBpZihOb3JtYWxpemVyLk5PID09IE5vcm1hbGl6ZXIucXVpY2tDaGVjayhmaWVsZFsyXSwgTm9ybWFsaXplci5ORkQpKSB7CisJICAgICAgICBlcnJsbigiTm9ybWFsaXplciBlcnJvcjogcXVpY2tDaGVjayhORkQocyksIE5ld05vcm1hbGl6ZXIuTkZEKSBpcyBOZXdOb3JtYWxpemVyLk5PIik7CisJICAgICAgICBwYXNzID0gZmFsc2U7CisJICAgIH0KKwkgICAgaWYoTm9ybWFsaXplci5OTyA9PSBOb3JtYWxpemVyLnF1aWNrQ2hlY2soZmllbGRbM10sIE5vcm1hbGl6ZXIuTkZLQykpIHsKKwkgICAgICAgIGVycmxuKCJOb3JtYWxpemVyIGVycm9yOiBxdWlja0NoZWNrKE5GS0MocyksIE5ld05vcm1hbGl6ZXIuTkZLQykgaXMgTmV3Tm9ybWFsaXplci5OTyIpOworCSAgICAgICAgcGFzcyA9IGZhbHNlOworCSAgICB9CisJICAgIGlmKE5vcm1hbGl6ZXIuTk8gPT0gTm9ybWFsaXplci5xdWlja0NoZWNrKGZpZWxkWzRdLCBOb3JtYWxpemVyLk5GS0QpKSB7CisJICAgICAgICBlcnJsbigiTm9ybWFsaXplciBlcnJvcjogcXVpY2tDaGVjayhORktEKHMpLCBOZXdOb3JtYWxpemVyLk5GS0QpIGlzIE5ld05vcm1hbGl6ZXIuTk8iKTsKKwkgICAgICAgIHBhc3MgPSBmYWxzZTsKKwkgICAgfQorCQorICAgICAgICBpZighTm9ybWFsaXplci5pc05vcm1hbGl6ZWQoZmllbGRbMV0sIE5vcm1hbGl6ZXIuTkZDKSkgeworICAgICAgICAgICAgZXJybG4oIk5vcm1hbGl6ZXIgZXJyb3I6IGlzTm9ybWFsaXplZChORkMocyksIE5ld05vcm1hbGl6ZXIuTkZDKSBpcyBmYWxzZSIpOworICAgICAgICAgICAgcGFzcyA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIGlmKCFmaWVsZFswXS5lcXVhbHMoZmllbGRbMV0pICYmIE5vcm1hbGl6ZXIuaXNOb3JtYWxpemVkKGZpZWxkWzBdLCBOb3JtYWxpemVyLk5GQykpIHsKKyAgICAgICAgICAgIGVycmxuKCJOb3JtYWxpemVyIGVycm9yOiBpc05vcm1hbGl6ZWQocywgTmV3Tm9ybWFsaXplci5ORkMpIGlzIFRSVUUiKTsKKyAgICAgICAgICAgIHBhc3MgPSBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBpZighTm9ybWFsaXplci5pc05vcm1hbGl6ZWQoZmllbGRbM10sIE5vcm1hbGl6ZXIuTkZLQykpIHsKKyAgICAgICAgICAgIGVycmxuKCJOb3JtYWxpemVyIGVycm9yOiBpc05vcm1hbGl6ZWQoTkZLQyhzKSwgTmV3Tm9ybWFsaXplci5ORktDKSBpcyBmYWxzZSIpOworICAgICAgICAgICAgcGFzcyA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIGlmKCFmaWVsZFswXS5lcXVhbHMoZmllbGRbM10pICYmIE5vcm1hbGl6ZXIuaXNOb3JtYWxpemVkKGZpZWxkWzBdLCBOb3JtYWxpemVyLk5GS0MpKSB7CisgICAgICAgICAgICBlcnJsbigiTm9ybWFsaXplciBlcnJvcjogaXNOb3JtYWxpemVkKHMsIE5ld05vcm1hbGl6ZXIuTkZLQykgaXMgVFJVRSIpOworICAgICAgICAgICAgcGFzcyA9IGZhbHNlOworICAgICAgICB9CisJICAgIC8vIHRlc3QgYXBpIHRoYXQgdGFrZXMgYSBjaGFyW10KKyAgICAgICAgaWYoIU5vcm1hbGl6ZXIuaXNOb3JtYWxpemVkKGZpZWxkWzFdLnRvQ2hhckFycmF5KCksMCxmaWVsZFsxXS5sZW5ndGgoKSwgTm9ybWFsaXplci5ORkMpKSB7CisgICAgICAgICAgICBlcnJsbigiTm9ybWFsaXplciBlcnJvcjogaXNOb3JtYWxpemVkKE5GQyhzKSwgTmV3Tm9ybWFsaXplci5ORkMpIGlzIGZhbHNlIik7CisgICAgICAgICAgICBwYXNzID0gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgLy8gdGVzdCBhcGkgdGhhdCB0YWtlcyBhIGNvZGVwb2ludAorICAgICAgICBpZighTm9ybWFsaXplci5pc05vcm1hbGl6ZWQoVVRGMTYuY2hhckF0KGZpZWxkWzFdLDApLCBOb3JtYWxpemVyLk5GQykpIHsKKyAgICAgICAgICAgIGVycmxuKCJOb3JtYWxpemVyIGVycm9yOiBpc05vcm1hbGl6ZWQoTkZDKHMpLCBOZXdOb3JtYWxpemVyLk5GQykgaXMgZmFsc2UiKTsKKyAgICAgICAgICAgIHBhc3MgPSBmYWxzZTsKKyAgICAgICAgfQorCSAgICAvLyB0ZXN0IEZDRCBxdWljayBjaGVjayBhbmQgIm1ha2VGQ0QiCisgICAgICAgIGZjZD1Ob3JtYWxpemVyLm5vcm1hbGl6ZShmaWVsZFswXSwgTm9ybWFsaXplci5GQ0QpOworCSAgICBpZihOb3JtYWxpemVyLk5PID09IE5vcm1hbGl6ZXIucXVpY2tDaGVjayhmY2QsIE5vcm1hbGl6ZXIuRkNEKSkgeworCSAgICAgICAgZXJybG4oIk5vcm1hbGl6ZXIgZXJyb3I6IHF1aWNrQ2hlY2soRkNEKHMpLCBOZXdOb3JtYWxpemVyLkZDRCkgaXMgTmV3Tm9ybWFsaXplci5OTyIpOworCSAgICAgICAgcGFzcyA9IGZhbHNlOworCSAgICB9CisgICAgICAgIGlmKE5vcm1hbGl6ZXIuTk8gPT0gTm9ybWFsaXplci5xdWlja0NoZWNrKGZjZCwgTm9ybWFsaXplci5GQ0QpKSB7CisgICAgICAgICAgICBlcnJsbigiTm9ybWFsaXplciBlcnJvcjogcXVpY2tDaGVjayhGQ0QocyksIE5ld05vcm1hbGl6ZXIuRkNEKSBpcyBOZXdOb3JtYWxpemVyLk5PIik7CisgICAgICAgICAgICBwYXNzID0gZmFsc2U7CisgICAgICAgIH0KKwkgICAgaWYoTm9ybWFsaXplci5OTyA9PSBOb3JtYWxpemVyLnF1aWNrQ2hlY2soZmllbGRbMl0sIE5vcm1hbGl6ZXIuRkNEKSkgeworCSAgICAgICAgZXJybG4oIk5vcm1hbGl6ZXIgZXJyb3I6IHF1aWNrQ2hlY2soTkZEKHMpLCBOZXdOb3JtYWxpemVyLkZDRCkgaXMgTmV3Tm9ybWFsaXplci5OTyIpOworCSAgICAgICAgcGFzcyA9IGZhbHNlOworCSAgICB9CisKKwkgICAgaWYoTm9ybWFsaXplci5OTyA9PSBOb3JtYWxpemVyLnF1aWNrQ2hlY2soZmllbGRbNF0sIE5vcm1hbGl6ZXIuRkNEKSkgeworCSAgICAgICAgZXJybG4oIk5vcm1hbGl6ZXIgZXJyb3I6IHF1aWNrQ2hlY2soTkZLRChzKSwgTmV3Tm9ybWFsaXplci5GQ0QpIGlzIE5ld05vcm1hbGl6ZXIuTk8iKTsKKwkgICAgICAgIHBhc3MgPSBmYWxzZTsKKwkgICAgfQorICAgICAgICAKKyAgICAgICAgb3V0ID0gaXRlcmF0aXZlTm9ybShuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IoZmllbGRbMF0pLCBOb3JtYWxpemVyLkZDRCwgYnVmLCArMSk7CisgICAgICAgIG91dCA9IGl0ZXJhdGl2ZU5vcm0obmV3IFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yKGZpZWxkWzBdKSwgTm9ybWFsaXplci5GQ0QsIGJ1ZiwgLTEpOworICAgICAgICAKKyAgICAgICAgb3V0ID0gaXRlcmF0aXZlTm9ybShuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IoZmllbGRbMl0pLCBOb3JtYWxpemVyLkZDRCwgYnVmLCArMSk7CisgICAgICAgIG91dCA9IGl0ZXJhdGl2ZU5vcm0obmV3IFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yKGZpZWxkWzJdKSwgTm9ybWFsaXplci5GQ0QsIGJ1ZiwgLTEpOworICAgICAgICAKKyAgICAgICAgb3V0ID0gaXRlcmF0aXZlTm9ybShuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IoZmllbGRbNF0pLCBOb3JtYWxpemVyLkZDRCwgYnVmLCArMSk7CisgICAgICAgIG91dCA9IGl0ZXJhdGl2ZU5vcm0obmV3IFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yKGZpZWxkWzRdKSwgTm9ybWFsaXplci5GQ0QsIGJ1ZiwgLTEpOworICAgICAgICAKKyAgICAgICAgb3V0PU5vcm1hbGl6ZXIubm9ybWFsaXplKGZjZCwgTm9ybWFsaXplci5ORkQpOworCSAgICBpZighb3V0LmVxdWFscyhmaWVsZFsyXSkpIHsKKwkgICAgICAgIGVycmxuKCJOb3JtYWxpemVyIGVycm9yOiBORkQoRkNEKHMpKSE9TkZEKHMpIik7CisJICAgICAgICBwYXNzID0gZmFsc2U7CisJICAgIH0gICAgCisgICAgICAgIGlmICghcGFzcykgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6ICIgKyBsaW5lKTsKKyAgICAgICAgfSAgICAgCisgICAgICAgCisgICAgICAgIHJldHVybiBwYXNzOworICAgIH0KKyAgICBwcml2YXRlIHZvaWQgY29tcGFyZShTdHJpbmcgczEsIFN0cmluZyBzMil7CisgICAgICAgIGlmKHMxLmxlbmd0aCgpPT0xICYmIHMyLmxlbmd0aCgpPT0xKXsKKyAgICAgICAgICAgIGlmKE5vcm1hbGl6ZXIuY29tcGFyZShVVEYxNi5jaGFyQXQoczEsMCksVVRGMTYuY2hhckF0KHMyLDApLE5vcm1hbGl6ZXIuQ09NUEFSRV9JR05PUkVfQ0FTRSkhPTApeworICAgICAgICAgICAgICAgIGVycmxuKCJOb3JtYWxpemVyLmNvbXBhcmUoaW50LGludCkgZmFpbGVkIGZvciBzMTogIgorICAgICAgICAgICAgICAgICAgICAgICAgK1V0aWxpdHkuaGV4KHMxKSArICIgczI6ICIgKyBVdGlsaXR5LmhleChzMikpOworICAgICAgICAgICAgfSAgICAKKyAgICAgICAgfQorICAgICAgICBpZihzMS5sZW5ndGgoKT09MSAmJiBzMi5sZW5ndGgoKT4xKXsKKyAgICAgICAgICAgIGlmKE5vcm1hbGl6ZXIuY29tcGFyZShVVEYxNi5jaGFyQXQoczEsMCksczIsTm9ybWFsaXplci5DT01QQVJFX0lHTk9SRV9DQVNFKSE9MCl7CisgICAgICAgICAgICAgICAgZXJybG4oIk5vcm1hbGl6ZXIuY29tcGFyZShpbnQsU3RyaW5nKSBmYWlsZWQgZm9yIHMxOiAiCisgICAgICAgICAgICAgICAgICAgICAgICArVXRpbGl0eS5oZXgoczEpICsgIiBzMjogIiArIFV0aWxpdHkuaGV4KHMyKSk7CisgICAgICAgICAgICB9ICAgIAorICAgICAgICB9CisgICAgICAgIGlmKHMxLmxlbmd0aCgpPjEgJiYgczIubGVuZ3RoKCk+MSl7CisgICAgICAgICAgICAvLyBUT0RPOiBSZS1lbmFibGUgdGhpcyB0ZXN0cyBhZnRlciBVVEMgZml4ZXMgVUFYIDIxCisgICAgICAgICAgICBpZihzMS5pbmRleE9mKCdcdTAzNDUnKT49MClyZXR1cm47CisgICAgICAgICAgICBpZihOb3JtYWxpemVyLmNvbXBhcmUoczEudG9DaGFyQXJyYXkoKSxzMi50b0NoYXJBcnJheSgpLE5vcm1hbGl6ZXIuQ09NUEFSRV9JR05PUkVfQ0FTRSkhPTApeworICAgICAgICAgICAgICAgIGVycmxuKCJOb3JtYWxpemVyLmNvbXBhcmUoY2hhcltdLGNoYXJbXSkgZmFpbGVkIGZvciBzMTogIgorICAgICAgICAgICAgICAgICAgICAgICAgK1V0aWxpdHkuaGV4KHMxKSArICIgczI6ICIgKyBVdGlsaXR5LmhleChzMikpOworICAgICAgICAgICAgfSAgICAKKyAgICAgICAgfSAgICAKKyAgICB9CisgICAgLyoqCisgICAgICogRG8gYSBub3JtYWxpemF0aW9uIHVzaW5nIHRoZSBpdGVyYXRpdmUgQVBJIGluIHRoZSBnaXZlbiBkaXJlY3Rpb24uCisgICAgICogQHBhcmFtIGJ1ZiBzY3JhdGNoIGJ1ZmZlcgorICAgICAqIEBwYXJhbSBkaXIgZWl0aGVyICsxIG9yIC0xCisgICAgICovCisgICAgcHJpdmF0ZSBTdHJpbmcgaXRlcmF0aXZlTm9ybShTdHJpbmcgc3RyLCBOb3JtYWxpemVyLk1vZGUgbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ0J1ZmZlciBidWYsIGludCBkaXIpIHRocm93cyBFeGNlcHRpb257CisgICAgICAgIG5vcm1hbGl6ZXIuc2V0VGV4dChzdHIpOworICAgICAgICBub3JtYWxpemVyLnNldE1vZGUobW9kZSk7CisgICAgICAgIGJ1Zi5zZXRMZW5ndGgoMCk7CisgICAgICAgIAorICAgICAgICBpbnQgY2g7CisgICAgICAgIGlmIChkaXIgPiAwKSB7CisgICAgICAgICAgICBmb3IgKGNoID0gbm9ybWFsaXplci5maXJzdCgpOyBjaCAhPSBOb3JtYWxpemVyLkRPTkU7CisgICAgICAgICAgICAgICAgIGNoID0gbm9ybWFsaXplci5uZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBidWYuYXBwZW5kKFVURjE2LnRvU3RyaW5nKGNoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmb3IgKGNoID0gbm9ybWFsaXplci5sYXN0KCk7IGNoICE9IE5vcm1hbGl6ZXIuRE9ORTsKKyAgICAgICAgICAgICAgICAgY2ggPSBub3JtYWxpemVyLnByZXZpb3VzKCkpIHsKKyAgICAgICAgICAgICAgICBidWYuaW5zZXJ0KDAsIFVURjE2LnRvU3RyaW5nKGNoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGJ1Zi50b1N0cmluZygpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBEbyBhIG5vcm1hbGl6YXRpb24gdXNpbmcgdGhlIGl0ZXJhdGl2ZSBBUEkgaW4gdGhlIGdpdmVuIGRpcmVjdGlvbi4KKyAgICAgKiBAcGFyYW0gc3RyIGEgSmF2YSBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvcgorICAgICAqIEBwYXJhbSBidWYgc2NyYXRjaCBidWZmZXIKKyAgICAgKiBAcGFyYW0gZGlyIGVpdGhlciArMSBvciAtMQorICAgICAqLworICAgIHByaXZhdGUgU3RyaW5nIGl0ZXJhdGl2ZU5vcm0oU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3Igc3RyLCBOb3JtYWxpemVyLk1vZGUgbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ0J1ZmZlciBidWYsIGludCBkaXIpIHRocm93cyBFeGNlcHRpb257CisgICAgICAgIG5vcm1hbGl6ZXIuc2V0VGV4dChzdHIpOworICAgICAgICBub3JtYWxpemVyLnNldE1vZGUobW9kZSk7CisgICAgICAgIGJ1Zi5zZXRMZW5ndGgoMCk7CisgICAgICAgIAorICAgICAgICBpbnQgY2g7CisgICAgICAgIGlmIChkaXIgPiAwKSB7CisgICAgICAgICAgICBmb3IgKGNoID0gbm9ybWFsaXplci5maXJzdCgpOyBjaCAhPSBOb3JtYWxpemVyLkRPTkU7CisgICAgICAgICAgICAgICAgIGNoID0gbm9ybWFsaXplci5uZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBidWYuYXBwZW5kKFVURjE2LnRvU3RyaW5nKGNoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmb3IgKGNoID0gbm9ybWFsaXplci5sYXN0KCk7IGNoICE9IE5vcm1hbGl6ZXIuRE9ORTsKKyAgICAgICAgICAgICAgICAgY2ggPSBub3JtYWxpemVyLnByZXZpb3VzKCkpIHsKKyAgICAgICAgICAgICAgICBidWYuaW5zZXJ0KDAsIFVURjE2LnRvU3RyaW5nKGNoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGJ1Zi50b1N0cmluZygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEBwYXJhbSBvcCBuYW1lIG9mIG5vcm1hbGl6YXRpb24gZm9ybSwgZS5nLiwgIktDIgorICAgICAqIEBwYXJhbSBzIHN0cmluZyBiZWluZyBub3JtYWxpemVkCisgICAgICogQHBhcmFtIGdvdCB2YWx1ZSByZWNlaXZlZAorICAgICAqIEBwYXJhbSBleHAgZXhwZWN0ZWQgdmFsdWUKKyAgICAgKiBAcGFyYW0gbXNnIGRlc2NyaXB0aW9uIG9mIHRoaXMgdGVzdAorICAgICAqIEBwYXJhbSByZXR1cm4gdHJ1ZSBpZiBnb3QgPT0gZXhwCisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIGFzc2VydEVxdWFsKFN0cmluZyBvcCwgU3RyaW5nIHMsIFN0cmluZyBnb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBleHAsIFN0cmluZyBtc2cpIHsKKyAgICAgICAgaWYgKGV4cC5lcXVhbHMoZ290KSkgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgZXJybG4oKCIgICAgICAiICsgbXNnICsgIikgIiArIG9wICsgIigiICsgcyArICIpPSIgKyBoZXgoZ290KSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIsIGV4cC4gIiArIGhleChleHApKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTcGxpdCBhIHN0cmluZyBpbnRvIHBpZWNlcyBiYXNlZCBvbiB0aGUgZ2l2ZW4gZGVsaW1pdGVyCisgICAgICogY2hhcmFjdGVyLiAgVGhlbiwgcGFyc2UgdGhlIHJlc3VsdGFudCBmaWVsZHMgZnJvbSBoZXggaW50bworICAgICAqIGNoYXJhY3RlcnMuICBUaGF0IGlzLCAiMDA0MCAwNDAwOzBDMDA7MDg5OSIgLT4gbmV3IFN0cmluZ1tdIHsKKyAgICAgKiAiXHUwMDQwXHUwNDAwIiwgIlx1MEMwMCIsICJcdTA4OTkiIH0uICBUaGUgb3V0cHV0IGlzIGFzc3VtZWQgdG8KKyAgICAgKiBiZSBvZiB0aGUgcHJvcGVyIGxlbmd0aCBhbHJlYWR5LCBhbmQgZXhhY3RseSBvdXRwdXQubGVuZ3RoCisgICAgICogZmllbGRzIGFyZSBwYXJzZWQuICBJZiB0aGVyZSBhcmUgdG9vIGZldyBhbiBleGNlcHRpb24gaXMKKyAgICAgKiB0aHJvd24uICBJZiB0aGVyZSBhcmUgdG9vIG1hbnkgdGhlIGV4dHJhcyBhcmUgaWdub3JlZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBidWYgc2NyYXRjaCBidWZmZXIKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIGhleHNwbGl0KFN0cmluZyBzLCBjaGFyIGRlbGltaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ1tdIG91dHB1dCwgU3RyaW5nQnVmZmVyIGJ1ZikgeworICAgICAgICBpbnQgaTsKKyAgICAgICAgaW50IHBvcyA9IDA7CisgICAgICAgIGZvciAoaT0wOyBpPG91dHB1dC5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgaW50IGRlbGltID0gcy5pbmRleE9mKGRlbGltaXRlciwgcG9zKTsKKyAgICAgICAgICAgIGlmIChkZWxpbSA8IDApIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJNaXNzaW5nIGZpZWxkIGluICIgKyBzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIE91ciBmaWVsZCBpcyBmcm9tIHBvcy4uZGVsaW0tMS4KKyAgICAgICAgICAgIGJ1Zi5zZXRMZW5ndGgoMCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFN0cmluZyB0b0hleCA9IHMuc3Vic3RyaW5nKHBvcyxkZWxpbSk7CisgICAgICAgICAgICBwb3MgPSBkZWxpbTsKKyAgICAgICAgICAgIGludCBpbmRleCA9IDA7CisgICAgICAgICAgICBpbnQgbGVuID0gdG9IZXgubGVuZ3RoKCk7CisgICAgICAgICAgICB3aGlsZShpbmRleDwgbGVuKXsKKyAgICAgICAgICAgICAgICBpZih0b0hleC5jaGFyQXQoaW5kZXgpPT0nICcpeworICAgICAgICAgICAgICAgICAgICBpbmRleCsrOworICAgICAgICAgICAgICAgIH1lbHNleworICAgICAgICAgICAgICAgICAgICBpbnQgc3BhY2VQb3MgPSB0b0hleC5pbmRleE9mKCcgJywgaW5kZXgpOworICAgICAgICAgICAgICAgICAgICBpZihzcGFjZVBvcz09LTEpeworICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kSW50KGJ1Zix0b0hleC5zdWJzdHJpbmcoaW5kZXgsbGVuKSxzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNlUG9zID0gbGVuOworICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZEludChidWYsdG9IZXguc3Vic3RyaW5nKGluZGV4LCBzcGFjZVBvcykscyk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBzcGFjZVBvcysxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGJ1Zi5sZW5ndGgoKSA8IDEpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJFbXB0eSBmaWVsZCAiICsgaSArICIgaW4gIiArIHMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgb3V0cHV0W2ldID0gYnVmLnRvU3RyaW5nKCk7CisgICAgICAgICAgICArK3BvczsgLy8gU2tpcCBvdmVyIGRlbGltCisgICAgICAgIH0KKyAgICB9CisgICAgcHVibGljIHN0YXRpYyB2b2lkIGFwcGVuZEludChTdHJpbmdCdWZmZXIgYnVmLCBTdHJpbmcgc3RyVG9IZXgsIFN0cmluZyBzKXsKKyAgICAgICAgaW50IGhleCA9IEludGVnZXIucGFyc2VJbnQoc3RyVG9IZXgsMTYpOworICAgICAgICBpZiAoaGV4IDwgMCApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIk91dCBvZiByYW5nZSBoZXggIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZXggKyAiIGluICIgKyBzKTsKKyAgICAgICAgfWVsc2UgaWYgKGhleCA+IDB4RkZGRil7CisgICAgICAgICAgICBidWYuYXBwZW5kKChjaGFyKSgoaGV4Pj4xMCkrMHhkN2MwKSk7IAorICAgICAgICAgICAgYnVmLmFwcGVuZCgoY2hhcikoKGhleCYweDNmZil8MHhkYzAwKSk7CisgICAgICAgIH1lbHNleworICAgICAgICAgICAgYnVmLmFwcGVuZCgoY2hhcikgaGV4KTsKKyAgICAgICAgfQorICAgIH0KKyAgICAgICAgICAgIAorICAgIC8vIFNwZWNpZmljIHRlc3RzIGZvciBkZWJ1Z2dpbmcuICBUaGVzZSBhcmUgZ2VuZXJhbGx5IGZhaWx1cmVzCisgICAgLy8gdGFrZW4gZnJvbSB0aGUgY29uZm9ybWFuY2UgZmlsZSwgYnV0IGN1bGxlZCBvdXQgdG8gbWFrZQorICAgIC8vIGRlYnVnZ2luZyBlYXNpZXIuICBUaGVzZSBjYW4gYmUgZWxpbWluYXRlZCB3aXRob3V0IGFmZmVjdGluZworICAgIC8vIGNvdmVyYWdlLgorCisgICAgcHVibGljIHZvaWQgX2hpZGVUZXN0Q2FzZTYoKSB0aHJvd3MgRXhjZXB0aW9ueworICAgICAgICBfdGVzdE9uZUxpbmUoIjAzODU7MDM4NTswMEE4IDAzMDE7MDAyMCAwMzA4IDAzMDE7MDAyMCAwMzA4IDAzMDE7Iik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgX3Rlc3RPbmVMaW5lKFN0cmluZyBsaW5lKSB0aHJvd3MgRXhjZXB0aW9ueworICAgICAgICBTdHJpbmdbXSBmaWVsZHMgPSBuZXcgU3RyaW5nWzVdOworICAgICAgICBTdHJpbmdCdWZmZXIgYnVmID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICAvLyBQYXJzZSBvdXQgdGhlIGZpZWxkcworICAgICAgICBoZXhzcGxpdChsaW5lLCAnOycsIGZpZWxkcywgYnVmKTsKKyAgICAgICAgY2hlY2tDb25mb3JtYW5jZShmaWVsZHMsIGxpbmUpOworICAgIH0KKyAgICAKKworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L25vcm1hbGl6ZXIvRXhoYXVzdGl2ZVRlc3QuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9ub3JtYWxpemVyL0V4aGF1c3RpdmVUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMWE1YWQ2NgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9ub3JtYWxpemVyL0V4aGF1c3RpdmVUZXN0LmphdmEKQEAgLTAsMCArMSwxNDYgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9ub3JtYWxpemVyL0F0dGljL0V4aGF1c3RpdmVUZXN0LmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDYvMjAgMDE6MTY6MjQgJCAKKyAqICRSZXZpc2lvbjogMS4xMSAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3Qubm9ybWFsaXplcjsKKworaW1wb3J0IGNvbS5pYm0uaWN1LmRldi50ZXN0Lio7CitpbXBvcnQgY29tLmlibS5pY3UubGFuZy4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuKjsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLk5vcm1hbGl6ZXJJbXBsOworCitwdWJsaWMgY2xhc3MgRXhoYXVzdGl2ZVRlc3QgZXh0ZW5kcyBUZXN0Rm13aworeworIAkKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uCisgICAgeworICAgIAlTdHJpbmdbXSB0ZW1wQXJncyA9IG5ldyBTdHJpbmdbYXJncy5sZW5ndGhdOworICAgICAgICBpbnQgY291bnQgPSAwOworCisgICAgICAgIC8vIEFsbG93IHRoZSB0ZXN0IHRvIGJlIHBvaW50ZWQgYXQgYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIHRoZSBVbmljb2RlIGRhdGFiYXNlCisgICAgICAgIC8vZm9yIChpbnQgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKQorICAgICAgICAvL3sKKyAgICAgICAgLy8gICAgaWYgKGFyZ3NbaV0uZXF1YWxzKCItZGF0YSIpKSB7CisgICAgICAgIC8vICAgICAgICB0ZW1wSW5mbyA9IG5ldyBVSW5mbyhhcmdzWysraV0sIGFyZ3NbKytpXSk7CisgICAgICAgIC8vICAgIH0gZWxzZSB7CisgICAgICAgIC8vICAgICAgICB0ZW1wQXJnc1tjb3VudCsrXSA9IGFyZ3NbaV07CisgICAgICAgIC8vICAgIH0KKyAgICAgICAgLy99CisKKyAgICAgICAgYXJncyA9IG5ldyBTdHJpbmdbY291bnRdOworICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KHRlbXBBcmdzLCAwLCBhcmdzLCAwLCBjb3VudCk7CisKKworCisgICAgICAgIG5ldyBFeGhhdXN0aXZlVGVzdCgpLnJ1bihhcmdzKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIEV4aGF1c3RpdmVUZXN0KCkgeworICAgIH0KKworIAorCisgICAgLyoqCisgICAgICogUnVuIHRocm91Z2ggYWxsIG9mIHRoZSBjaGFyYWN0ZXJzIHJldHVybmVkIGJ5IGEgY29tcG9zZWQtY2hhciBpdGVyYXRvcgorICAgICAqIGFuZCBtYWtlIHN1cmUgdGhhdDoKKyAgICAgKiA8dWw+CisgICAgICogPGxpPmEpIFRoZXkgZG8gaW5kZWVkIGhhdmUgZGVjb21wb3NpdGlvbnMuCisgICAgICogPGxpPmIpIFRoZSBkZWNvbXBvc2l0aW9uIGFjY29yZGluZyB0byB0aGUgaXRlcmF0b3IgaXMgdGhlIHNhbWUgYXMKKyAgICAgKiAgICAgICAgICByZXR1cm5lZCBieSBOb3JtYWxpemVyLmRlY29tcG9zZSgpLgorICAgICAqIDxsaT5jKSBBbGwgY2hhcmFjdGVycyA8ZW0+bm90PC9lbT4gcmV0dXJuZWQgYnkgdGhlIGl0ZXJhdG9yIGRvIG5vdAorICAgICAqICAgICAgICAgIGhhdmUgZGVjb21wb3NpdGlvbnMuCisgICAgICogPC91bD4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0Q29tcG9zZWRDaGFySXRlcigpIHsKKyAgICAgICAgZG9UZXN0Q29tcG9zZWRDaGFycyhmYWxzZSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgZG9UZXN0Q29tcG9zZWRDaGFycyhib29sZWFuIGNvbXBhdCkgeworICAgICAgICBpbnQgb3B0aW9ucyA9IE5vcm1hbGl6ZXIuSUdOT1JFX0hBTkdVTDsKKyAgICAgICAgQ29tcG9zZWRDaGFySXRlciBpdGVyID0gbmV3IENvbXBvc2VkQ2hhckl0ZXIoY29tcGF0LCBvcHRpb25zKTsKKworICAgICAgICBjaGFyIGxhc3RDaGFyID0gMDsKKworICAgICAgICB3aGlsZSAoaXRlci5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgIGNoYXIgY2ggPSBpdGVyLm5leHQoKTsKKworICAgICAgICAgICAgLy8gVGVzdCBhbGwgY2hhcmFjdGVycyBiZXR3ZWVuIHRoZSBsYXN0IG9uZSBhbmQgdGhpcyBvbmUgdG8gbWFrZQorICAgICAgICAgICAgLy8gc3VyZSB0aGF0IHRoZXkgZG9uJ3QgaGF2ZSBkZWNvbXBvc2l0aW9ucworICAgICAgICAgICAgYXNzZXJ0Tm9EZWNvbXAobGFzdENoYXIsIGNoLCBjb21wYXQsIG9wdGlvbnMpOworICAgICAgICAgICAgbGFzdENoYXIgPSBjaDsKKworICAgICAgICAgICAgLy8gTm93IG1ha2Ugc3VyZSB0aGF0IHRoZSBkZWNvbXBvc2l0aW9ucyBmb3IgdGhpcyBjaGFyYWN0ZXIKKyAgICAgICAgICAgIC8vIG1ha2Ugc2Vuc2UKKyAgICAgICAgICAgIFN0cmluZyBjaFN0cmluZyAgID0gbmV3IFN0cmluZ0J1ZmZlcigpLmFwcGVuZChjaCkudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIFN0cmluZyBpdGVyRGVjb21wID0gaXRlci5kZWNvbXBvc2l0aW9uKCk7CisgICAgICAgICAgICBTdHJpbmcgbm9ybURlY29tcCA9IE5vcm1hbGl6ZXIuZGVjb21wb3NlKGNoU3RyaW5nLCBjb21wYXQpOworCisgICAgICAgICAgICBpZiAoaXRlckRlY29tcC5lcXVhbHMoY2hTdHJpbmcpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkVSUk9SOiAiICsgaGV4KGNoKSArICIgaGFzIGlkZW50aWNhbCBkZWNvbXAiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKCFpdGVyRGVjb21wLmVxdWFscyhub3JtRGVjb21wKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJFUlJPUjogTm9ybWFsaXplciBkZWNvbXAgZm9yICIgKyBoZXgoY2gpICsgIiAoIiArIGhleChub3JtRGVjb21wKSArICIpIgorICAgICAgICAgICAgICAgICAgICArICIgIT0gaXRlciBkZWNvbXAgKCIgKyBoZXgoaXRlckRlY29tcCkgKyAiKSIgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBhc3NlcnROb0RlY29tcChsYXN0Q2hhciwgJ1x1RkZGRicsIGNvbXBhdCwgb3B0aW9ucyk7CisgICAgfQorCisgICAgdm9pZCBhc3NlcnROb0RlY29tcChjaGFyIHN0YXJ0LCBjaGFyIGxpbWl0LCBib29sZWFuIGNvbXBhdCwgaW50IG9wdGlvbnMpCisgICAgeworICAgICAgICBmb3IgKGNoYXIgeCA9ICsrc3RhcnQ7IHggPCBsaW1pdDsgeCsrKSB7CisgICAgICAgICAgICBTdHJpbmcgeFN0cmluZyAgID0gbmV3IFN0cmluZ0J1ZmZlcigpLmFwcGVuZCh4KS50b1N0cmluZygpOworICAgICAgICAgICAgU3RyaW5nIGRlY29tcCA9IE5vcm1hbGl6ZXIuZGVjb21wb3NlKHhTdHJpbmcsIGNvbXBhdCk7CisgICAgICAgICAgICBpZiAoIWRlY29tcC5lcXVhbHMoeFN0cmluZykpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRVJST1I6ICIgKyBoZXgoeCkgKyAiIGhhcyBkZWNvbXBvc2l0aW9uICgiICsgaGV4KGRlY29tcCkgKyAiKSIKKyAgICAgICAgICAgICAgICAgICAgKyAiIGJ1dCB3YXMgbm90IHJldHVybmVkIGJ5IGl0ZXJhdG9yIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKworICAgIHB1YmxpYyB2b2lkIFRlc3RSb3VuZFRyaXAoKSB7CisgICAgICAgIGludCBvcHRpb25zID0gTm9ybWFsaXplci5JR05PUkVfSEFOR1VMOworICAgICAgICBib29sZWFuIGNvbXBhdCA9IGZhbHNlOworCisgICAgICAgIENvbXBvc2VkQ2hhckl0ZXIgaXRlciA9IG5ldyBDb21wb3NlZENoYXJJdGVyKGZhbHNlLCBvcHRpb25zKTsKKyAgICAgICAgd2hpbGUgKGl0ZXIuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICBjaGFyIGNoID0gaXRlci5uZXh0KCk7CisKKyAgICAgICAgICAgIFN0cmluZyBjaFN0ciA9IG5ldyBTdHJpbmdCdWZmZXIoKS5hcHBlbmQoY2gpLnRvU3RyaW5nKCk7CisgICAgICAgICAgICBTdHJpbmcgZGVjb21wID0gTm9ybWFsaXplci5kZWNvbXBvc2UoY2hTdHIsIGNvbXBhdCk7CisgICAgICAgICAgICBTdHJpbmcgY29tcCA9IE5vcm1hbGl6ZXIuY29tcG9zZShkZWNvbXAsIGNvbXBhdCk7CisKKyAgICAgICAgICAgIGludCBjQ2xhc3MgPSBVQ2hhcmFjdGVyLmdldENvbWJpbmluZ0NsYXNzKGRlY29tcC5jaGFyQXQoMCkpOworICAgICAgICAgICAgY0NsYXNzID0gMDsKKworICAgICAgICAgICAgaWYgKE5vcm1hbGl6ZXJJbXBsLmlzRnVsbENvbXBvc2l0aW9uRXhjbHVzaW9uKGNoKSkgeworICAgICAgICAgICAgICAgIGxvZ2xuKCJTa2lwcGVkIGV4Y2x1ZGVkIGNoYXIgIiArIGhleChjaCkgKyAiICgiICsgVUNoYXJhY3Rlci5nZXROYW1lKGNoKSArICIpIiApOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBBdm9pZCBkaXNwYXJhZ2VkIGNoYXJhY3RlcnMKKyAgICAgICAgICAgIGlmIChnZXREZWNvbXBvc2l0aW9uKGNoLGNvbXBhdCkubGVuZ3RoKCkgPT0gNCkgY29udGludWU7CisKKyAgICAgICAgICAgIGlmICghY29tcC5lcXVhbHMoY2hTdHIpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBSb3VuZCB0cmlwIGludmFsaWQ6ICIgKyBoZXgoY2hTdHIpICsgIiAtLT4gIiArIGhleChkZWNvbXApCisgICAgICAgICAgICAgICAgICAgICsgIiAtLT4gIiArIGhleChjb21wKSk7CisKKyAgICAgICAgICAgICAgICBlcnJsbigiICBjaGFyIGRlY29tcCBpcyAnIiArIGdldERlY29tcG9zaXRpb24oY2gsY29tcGF0KSArICInIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcHJpdmF0ZSBTdHJpbmcgZ2V0RGVjb21wb3NpdGlvbihjaGFyIGNoLCBib29sZWFuIGNvbXBhdCl7CisgICAgICAgIGNoYXJbXSBkZXN0ID0gbmV3IGNoYXJbMTBdOyAgIAorICAgICAgICBpbnQgbGVuZ3RoID0gTm9ybWFsaXplckltcGwuZ2V0RGVjb21wb3NpdGlvbihjaCxjb21wYXQsZGVzdCwwLGRlc3QubGVuZ3RoKTsgICAKKyAgICAgICAgcmV0dXJuIG5ldyBTdHJpbmcoZGVzdCwwLGxlbmd0aCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L25vcm1hbGl6ZXIvSW50SGFzaHRhYmxlLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3Qvbm9ybWFsaXplci9JbnRIYXNodGFibGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZmNlNjFlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L25vcm1hbGl6ZXIvSW50SGFzaHRhYmxlLmphdmEKQEAgLTAsMCArMSwzMyBAQAorcGFja2FnZSBjb20uaWJtLmljdS5kZXYudGVzdC5ub3JtYWxpemVyOworCitpbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKKworLyoqCisgKiBJbnRlZ2VyIGhhc2ggdGFibGUuIFVzZXMgSmF2YSBIYXNodGFibGUgZm9yIG5vdy4KKyAqIEBhdXRob3IgTWFyayBEYXZpcworICovCisgCitwdWJsaWMgY2xhc3MgSW50SGFzaHRhYmxlIHsKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICJDb3B5cmlnaHQgqSAxOTk4LTE5OTkgVW5pY29kZSwgSW5jLiI7CisgICAgCisgICAgcHVibGljIEludEhhc2h0YWJsZSAoaW50IGRlZmF1bHRWYWx1ZSkgeworICAgICAgICB0aGlzLmRlZmF1bHRWYWx1ZSA9IGRlZmF1bHRWYWx1ZTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgcHV0KGludCBrZXksIGludCB2YWx1ZSkgeworICAgICAgICBpZiAodmFsdWUgPT0gZGVmYXVsdFZhbHVlKSB7CisgICAgICAgICAgICB0YWJsZS5yZW1vdmUobmV3IEludGVnZXIoa2V5KSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0YWJsZS5wdXQobmV3IEludGVnZXIoa2V5KSwgbmV3IEludGVnZXIodmFsdWUpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgaW50IGdldChpbnQga2V5KSB7CisgICAgICAgIE9iamVjdCB2YWx1ZSA9IHRhYmxlLmdldChuZXcgSW50ZWdlcihrZXkpKTsKKyAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHJldHVybiBkZWZhdWx0VmFsdWU7CisgICAgICAgIHJldHVybiAoKEludGVnZXIpdmFsdWUpLmludFZhbHVlKCk7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgaW50IGRlZmF1bHRWYWx1ZTsKKyAgICBwcml2YXRlIEhhc2h0YWJsZSB0YWJsZSA9IG5ldyBIYXNodGFibGUoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3Qvbm9ybWFsaXplci9JbnRTdHJpbmdIYXNodGFibGUuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9ub3JtYWxpemVyL0ludFN0cmluZ0hhc2h0YWJsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhMWJjYzkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3Qvbm9ybWFsaXplci9JbnRTdHJpbmdIYXNodGFibGUuamF2YQpAQCAtMCwwICsxLDMzIEBACitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0Lm5vcm1hbGl6ZXI7CisKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOworCisvKioKKyAqIEludGVnZXItU3RyaW5nIGhhc2ggdGFibGUuIFVzZXMgSmF2YSBIYXNodGFibGUgZm9yIG5vdy4KKyAqIEBhdXRob3IgTWFyayBEYXZpcworICovCisgCitwdWJsaWMgY2xhc3MgSW50U3RyaW5nSGFzaHRhYmxlIHsKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICJDb3B5cmlnaHQgqSAxOTk4LTE5OTkgVW5pY29kZSwgSW5jLiI7CisgICAgCisgICAgcHVibGljIEludFN0cmluZ0hhc2h0YWJsZSAoU3RyaW5nIGRlZmF1bHRWYWx1ZSkgeworICAgICAgICB0aGlzLmRlZmF1bHRWYWx1ZSA9IGRlZmF1bHRWYWx1ZTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgcHV0KGludCBrZXksIFN0cmluZyB2YWx1ZSkgeworICAgICAgICBpZiAodmFsdWUgPT0gZGVmYXVsdFZhbHVlKSB7CisgICAgICAgICAgICB0YWJsZS5yZW1vdmUobmV3IEludGVnZXIoa2V5KSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0YWJsZS5wdXQobmV3IEludGVnZXIoa2V5KSwgdmFsdWUpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHB1YmxpYyBTdHJpbmcgZ2V0KGludCBrZXkpIHsKKyAgICAgICAgT2JqZWN0IHZhbHVlID0gdGFibGUuZ2V0KG5ldyBJbnRlZ2VyKGtleSkpOworICAgICAgICBpZiAodmFsdWUgPT0gbnVsbCkgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKKyAgICAgICAgcmV0dXJuIChTdHJpbmcpdmFsdWU7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgU3RyaW5nIGRlZmF1bHRWYWx1ZTsKKyAgICBwcml2YXRlIEhhc2h0YWJsZSB0YWJsZSA9IG5ldyBIYXNodGFibGUoKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3Qvbm9ybWFsaXplci9Mb25nSGFzaHRhYmxlLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3Qvbm9ybWFsaXplci9Mb25nSGFzaHRhYmxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODY0ZGQ5YQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9ub3JtYWxpemVyL0xvbmdIYXNodGFibGUuamF2YQpAQCAtMCwwICsxLDM1IEBACitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0Lm5vcm1hbGl6ZXI7CisKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOworCisvKioKKyAqIEhhc2h0YWJsZSBzdG9yaW5nIGludHMgYWRkcmVzc2VkIGJ5IGxvbmdzLiBVc2VkCisgKiBmb3Igc3RvcmluZyBvZiBjb21wb3NpdGlvbiBkYXRhLiBVc2VzIEphdmEgSGFzaHRhYmxlCisgKiBmb3Igbm93LgorICogQGF1dGhvciBWbGFkaW1pciBXZWluc3RlaW4KKyAqLworcHVibGljIGNsYXNzIExvbmdIYXNodGFibGUgeworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0ID0gIkNvcHlyaWdodCCpIDIwMDIgVW5pY29kZSwgSW5jLiI7CisgICAgCisgICAgcHVibGljIExvbmdIYXNodGFibGUgKGludCBkZWZhdWx0VmFsdWUpIHsKKyAgICAgICAgdGhpcy5kZWZhdWx0VmFsdWUgPSBkZWZhdWx0VmFsdWU7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIHB1dChsb25nIGtleSwgaW50IHZhbHVlKSB7CisgICAgICAgIGlmICh2YWx1ZSA9PSBkZWZhdWx0VmFsdWUpIHsKKyAgICAgICAgICAgIHRhYmxlLnJlbW92ZShuZXcgTG9uZyhrZXkpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRhYmxlLnB1dChuZXcgTG9uZyhrZXkpLCBuZXcgSW50ZWdlcih2YWx1ZSkpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHB1YmxpYyBpbnQgZ2V0KGxvbmcga2V5KSB7CisgICAgICAgIE9iamVjdCB2YWx1ZSA9IHRhYmxlLmdldChuZXcgTG9uZyhrZXkpKTsKKyAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHJldHVybiBkZWZhdWx0VmFsdWU7CisgICAgICAgIHJldHVybiAoKEludGVnZXIpdmFsdWUpLmludFZhbHVlKCk7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgaW50IGRlZmF1bHRWYWx1ZTsKKyAgICBwcml2YXRlIEhhc2h0YWJsZSB0YWJsZSA9IG5ldyBIYXNodGFibGUoKTsKKworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L25vcm1hbGl6ZXIvTm9ybWFsaXphdGlvbk1vbmtleVRlc3QuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9ub3JtYWxpemVyL05vcm1hbGl6YXRpb25Nb25rZXlUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWFhYzI5YQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9ub3JtYWxpemVyL05vcm1hbGl6YXRpb25Nb25rZXlUZXN0LmphdmEKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogCisgKiAkRGF0ZTogCisgKiAkUmV2aXNpb246IAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3Qubm9ybWFsaXplcjsKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYudGVzdC4qOworaW1wb3J0IGNvbS5pYm0uaWN1LmxhbmcuKjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0Lio7CitpbXBvcnQgamF2YS51dGlsLlJhbmRvbTsKKworcHVibGljIGNsYXNzIE5vcm1hbGl6YXRpb25Nb25rZXlUZXN0IGV4dGVuZHMgVGVzdEZtd2sgeworICAgIGludCBsb29wQ291bnQgPSAxMDA7CisgICAgaW50IG1heENoYXJDb3VudCA9IDIwOworICAgIGludCBtYXhDb2RlUG9pbnQgPSAweDEwZmZmZjsKKyAgICBSYW5kb20gcmFuZG9tID0gbnVsbDsKKyAgICBVbmljb2RlTm9ybWFsaXplciB1bmljb2RlX05GRDsKKyAgICBVbmljb2RlTm9ybWFsaXplciB1bmljb2RlX05GQzsKKyAgICBVbmljb2RlTm9ybWFsaXplciB1bmljb2RlX05GS0Q7CisgICAgVW5pY29kZU5vcm1hbGl6ZXIgdW5pY29kZV9ORktDOworICAgIAorICAgIHB1YmxpYyBOb3JtYWxpemF0aW9uTW9ua2V5VGVzdCgpIHsKKyAgICAgICAgcmFuZG9tID0gbmV3IFJhbmRvbSgpOworICAgICAgICB1bmljb2RlX05GRCA9IG5ldyBVbmljb2RlTm9ybWFsaXplcihVbmljb2RlTm9ybWFsaXplci5ELCB0cnVlKTsKKyAgICAgICAgdW5pY29kZV9ORkMgPSBuZXcgVW5pY29kZU5vcm1hbGl6ZXIoVW5pY29kZU5vcm1hbGl6ZXIuQywgdHJ1ZSk7CisgICAgICAgIHVuaWNvZGVfTkZLRCA9IG5ldyBVbmljb2RlTm9ybWFsaXplcihVbmljb2RlTm9ybWFsaXplci5LRCwgdHJ1ZSk7CisgICAgICAgIHVuaWNvZGVfTkZLQyA9IG5ldyBVbmljb2RlTm9ybWFsaXplcihVbmljb2RlTm9ybWFsaXplci5LQywgdHJ1ZSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBuZXcgTm9ybWFsaXphdGlvbk1vbmtleVRlc3QoKS5ydW4oYXJncyk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3ROb3JtYWxpemUoKSB7CisgICAgICAgIGludCBpID0gMDsKKyAgICAgICAgd2hpbGUgKGkgPCBsb29wQ291bnQpIHsKKyAgICAgICAgICAgIFN0cmluZyBzb3VyY2UgPSBnZXRUZXN0U291cmNlKCk7CisgICAgICAgICAgICBsb2dsbigiVGVzdCBzb3VyY2U6IiArIHNvdXJjZSk7CisgICAgICAgICAgICAvL05GRAorICAgICAgICAgICAgU3RyaW5nIHVuY29kZU5vcm0gPSB1bmljb2RlX05GRC5ub3JtYWxpemUoc291cmNlKTsKKyAgICAgICAgICAgIFN0cmluZyBpY3VOb3JtID0gTm9ybWFsaXplci5ub3JtYWxpemUoc291cmNlLCBOb3JtYWxpemVyLk5GRCk7CisgICAgICAgICAgICBsb2dsbigiXHRORkQoVW5pY29kZSk6ICIgKyB1bmNvZGVOb3JtKTsKKyAgICAgICAgICAgIGxvZ2xuKCJcdE5GRChpY3U0aikgIDogIiArIGljdU5vcm0pOworICAgICAgICAgICAgaWYgKCF1bmNvZGVOb3JtLmVxdWFscyhpY3VOb3JtKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJORkQ6IFVuaWNvZGUgc2FtcGxlIG91dHB1dCA9PiAiICsgdW5jb2RlTm9ybSArICI7IGljdTRqIG91dHB1dD0+ICIgKyBpY3VOb3JtKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vTkZDCisgICAgICAgICAgICB1bmNvZGVOb3JtID0gdW5pY29kZV9ORkMubm9ybWFsaXplKHNvdXJjZSk7CisgICAgICAgICAgICBpY3VOb3JtID0gTm9ybWFsaXplci5ub3JtYWxpemUoc291cmNlLCBOb3JtYWxpemVyLk5GQyk7CisgICAgICAgICAgICBsb2dsbigiXHRORkMoVW5pY29kZSk6ICIgKyB1bmNvZGVOb3JtKTsKKyAgICAgICAgICAgIGxvZ2xuKCJcdE5GQyhpY3U0aikgIDogIiArIGljdU5vcm0pOworICAgICAgICAgICAgaWYgKCF1bmNvZGVOb3JtLmVxdWFscyhpY3VOb3JtKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJORkM6IFVuaWNvZGUgc2FtcGxlIG91dHB1dCA9PiAiICsgdW5jb2RlTm9ybSArICI7IGljdTRqIG91dHB1dD0+ICIgKyBpY3VOb3JtKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vTkZLRAorICAgICAgICAgICAgdW5jb2RlTm9ybSA9IHVuaWNvZGVfTkZLRC5ub3JtYWxpemUoc291cmNlKTsKKyAgICAgICAgICAgIGljdU5vcm0gPSBOb3JtYWxpemVyLm5vcm1hbGl6ZShzb3VyY2UsIE5vcm1hbGl6ZXIuTkZLRCk7CisgICAgICAgICAgICBsb2dsbigiXHRORktEKFVuaWNvZGUpOiAiICsgdW5jb2RlTm9ybSk7CisgICAgICAgICAgICBsb2dsbigiXHRORktEKGljdTRqKSAgOiAiICsgaWN1Tm9ybSk7CisgICAgICAgICAgICBpZiAoIXVuY29kZU5vcm0uZXF1YWxzKGljdU5vcm0pKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIk5GS0Q6IFVuaWNvZGUgc2FtcGxlIG91dHB1dCA9PiAiICsgdW5jb2RlTm9ybSArICI7IGljdTRqIG91dHB1dD0+ICIgKyBpY3VOb3JtKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vTkZLQworICAgICAgICAgICAgdW5jb2RlTm9ybSA9IHVuaWNvZGVfTkZLQy5ub3JtYWxpemUoc291cmNlKTsKKyAgICAgICAgICAgIGljdU5vcm0gPSBOb3JtYWxpemVyLm5vcm1hbGl6ZShzb3VyY2UsIE5vcm1hbGl6ZXIuTkZLQyk7CisgICAgICAgICAgICBsb2dsbigiXHRORktDKFVuaWNvZGUpOiAiICsgdW5jb2RlTm9ybSk7CisgICAgICAgICAgICBsb2dsbigiXHRORktDKGljdTRqKSAgOiAiICsgaWN1Tm9ybSk7CisgICAgICAgICAgICBpZiAoIXVuY29kZU5vcm0uZXF1YWxzKGljdU5vcm0pKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIk5GS0M6IFVuaWNvZGUgc2FtcGxlIG91dHB1dCA9PiAiICsgdW5jb2RlTm9ybSArICI7IGljdTRqIG91dHB1dD0+ICIgKyBpY3VOb3JtKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaSsrOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIFN0cmluZyBnZXRUZXN0U291cmNlKCkgeworICAgICAgICBTdHJpbmcgc291cmNlID0gIiI7CisgICAgICAgIGludCBpID0gMDsKKyAgICAgICAgd2hpbGUgKGkgPCAocmFuZG9tLm5leHRJbnQobWF4Q2hhckNvdW50KSArIDEpKSB7CisgICAgICAgICAgICBpbnQgY29kZXBvaW50ID0gcmFuZG9tLm5leHRJbnQobWF4Q29kZVBvaW50KTsKKyAgICAgICAgICAgIC8vRWxpbWF0ZSB1bmFzc2lnbmVkIGNoYXJhY3RlcnMKKyAgICAgICAgICAgIHdoaWxlIChVQ2hhcmFjdGVyLmdldFR5cGUoY29kZXBvaW50KSA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuVU5BU1NJR05FRCkgeworICAgICAgICAgICAgICAgIGNvZGVwb2ludCA9IHJhbmRvbS5uZXh0SW50KG1heENvZGVQb2ludCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzb3VyY2UgPSBzb3VyY2UgKyBVVEYxNi50b1N0cmluZyhjb2RlcG9pbnQpOworICAgICAgICAgICAgaSsrOworICAgICAgICB9CisgICAgICAgIHJldHVybiBzb3VyY2U7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9ub3JtYWxpemVyL05vcm1hbGl6ZXJCdWlsZGVyLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3Qvbm9ybWFsaXplci9Ob3JtYWxpemVyQnVpbGRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlNWVhODgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3Qvbm9ybWFsaXplci9Ob3JtYWxpemVyQnVpbGRlci5qYXZhCkBAIC0wLDAgKzEsNTEyIEBACitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0Lm5vcm1hbGl6ZXI7CisKK2ltcG9ydCBqYXZhLmlvLkJ1ZmZlcmVkUmVhZGVyOworaW1wb3J0IGphdmEuaW8uRmlsZVJlYWRlcjsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEudXRpbC5CaXRTZXQ7CitpbXBvcnQgY29tLmlibS5pY3UuZGV2LnRlc3QuKjsKKworLyoqCisgKiBCdWlsZHMgdGhlIG5vcm1hbGl6YXRpb24gdGFibGVzLiBUaGlzIGlzIGEgc2VwYXJhdGUgY2xhc3Mgc28gdGhhdCBpdAorICogY2FuIGJlIHVubG9hZGVkIG9uY2Ugbm90IG5lZWRlZC48YnI+CisgKiBDb3B5cmlnaHQgqSAxOTk4LTIwMDIgVW5pY29kZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLjxicj4KKyAqIFRoZSBVbmljb2RlIENvbnNvcnRpdW0gbWFrZXMgbm8gZXhwcmVzc2VkIG9yIGltcGxpZWQgd2FycmFudHkgb2YgYW55CisgKiBraW5kLCBhbmQgYXNzdW1lcyBubyBsaWFiaWxpdHkgZm9yIGVycm9ycyBvciBvbWlzc2lvbnMuCisgKiBObyBsaWFiaWxpdHkgaXMgYXNzdW1lZCBmb3IgaW5jaWRlbnRhbCBhbmQgY29uc2VxdWVudGlhbCBkYW1hZ2VzCisgKiBpbiBjb25uZWN0aW9uIHdpdGggb3IgYXJpc2luZyBvdXQgb2YgdGhlIHVzZSBvZiB0aGUgaW5mb3JtYXRpb24gaGVyZS4KKyAqIEBhdXRob3IgTWFyayBEYXZpcworICogVXBkYXRlcyBmb3Igc3VwcGxlbWVudGFyeSBjb2RlIHBvaW50czogCisgKiBWbGFkaW1pciBXZWluc3RlaW4gJiBNYXJrdXMgU2NoZXJlcgorICovCitjbGFzcyBOb3JtYWxpemVyQnVpbGRlciB7CisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHQgPSAiQ29weXJpZ2h0IKkgMTk5OC0xOTk5IFVuaWNvZGUsIEluYy4iOworICAgIAorICAgIC8qKgorICAgICAqIFRlc3RpbmcgZmxhZ3MKKyAgICAgKi8KKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIERFQlVHID0gZmFsc2U7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBHRU5FUkFUSU5HID0gZmFsc2U7CisgICAgCisgICAgLyoqCisgICAgICogQ29uc3RhbnRzIGZvciB0aGUgZGF0YSBmaWxlIHZlcnNpb24gdG8gdXNlLgorICAgICAqLworICAgIC8qc3RhdGljIGZpbmFsIGJvb2xlYW4gTkVXX1ZFUlNJT04gPSB0cnVlOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBESVIgPSAiRDpcXFVuaWNvZGVEYXRhXFwiICsgKE5FV19WRVJTSU9OID8gIldvcmtpbmdHcm91cHNcXCIgOiAiIik7CisgICAgCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBVTklEQVRBX1ZFUlNJT04gPSBORVdfVkVSU0lPTiA/ICIzLjAuMGQxMiIgOiAiMi4xLjkiOworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgRVhDTFVTSU9OU19WRVJTSU9OID0gTkVXX1ZFUlNJT04gPyAiMWQ0IiA6ICIxIjsKKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBVTklDT0RFX0RBVEEgPSBESVIgKyAiVW5pY29kZURhdGEtIiArIFVOSURBVEFfVkVSU0lPTiArICIudHh0IjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBDT01QT1NJVElPTl9FWENMVVNJT05TID0gRElSICsgIkNvbXBvc2l0aW9uRXhjbHVzaW9ucy0iICsgRVhDTFVTSU9OU19WRVJTSU9OICsiLnR4dCI7CisgICAgKi8KKworICAgIC8qKgorICAgICAqIENhbGxlZCBleGFjdGx5IG9uY2UgYnkgTm9ybWFsaXplckRhdGEgdG8gYnVpbGQgdGhlIHN0YXRpYyBkYXRhCisgICAgICovCisgICAgCisgICAgc3RhdGljIE5vcm1hbGl6ZXJEYXRhIGJ1aWxkKGJvb2xlYW4gZnVsbERhdGEpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIEludEhhc2h0YWJsZSBjYW5vbmljYWxDbGFzcyA9IG5ldyBJbnRIYXNodGFibGUoMCk7CisgICAgICAgICAgICBJbnRTdHJpbmdIYXNodGFibGUgZGVjb21wb3NlID0gbmV3IEludFN0cmluZ0hhc2h0YWJsZShudWxsKTsKKyAgICAgICAgICAgIExvbmdIYXNodGFibGUgY29tcG9zZSA9IG5ldyBMb25nSGFzaHRhYmxlKE5vcm1hbGl6ZXJEYXRhLk5PVF9DT01QT1NJVEUpOworICAgICAgICAgICAgQml0U2V0IGlzQ29tcGF0aWJpbGl0eSA9IG5ldyBCaXRTZXQoKTsKKyAgICAgICAgICAgIEJpdFNldCBpc0V4Y2x1ZGVkID0gbmV3IEJpdFNldCgpOworICAgICAgICAgICAgaWYgKGZ1bGxEYXRhKSB7CisgICAgICAgICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oIkJ1aWxkaW5nIE5vcm1hbGl6ZXIgRGF0YSBmcm9tIGZpbGUuIik7CisgICAgICAgICAgICAgICAgcmVhZEV4Y2x1c2lvbkxpc3QoaXNFeGNsdWRlZCk7CisgICAgICAgICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oaXNFeGNsdWRlZC5nZXQoMHgwMEMwKSk7CisgICAgICAgICAgICAgICAgYnVpbGREZWNvbXBvc2l0aW9uVGFibGVzKGNhbm9uaWNhbENsYXNzLCBkZWNvbXBvc2UsIGNvbXBvc2UsIAorICAgICAgICAgICAgICAgICAgaXNDb21wYXRpYmlsaXR5LCBpc0V4Y2x1ZGVkKTsKKyAgICAgICAgICAgIH0gZWxzZSB7ICAgIC8vIGZvciB1c2UgaW4gQXBwbGV0cworICAgICAgICAgICAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCJCdWlsZGluZyBhYnJpZGdlZCBkYXRhLiIpOworICAgICAgICAgICAgICAgIHNldE1pbmltYWxEZWNvbXAoY2Fub25pY2FsQ2xhc3MsIGRlY29tcG9zZSwgY29tcG9zZSwgCisgICAgICAgICAgICAgICAgICBpc0NvbXBhdGliaWxpdHksIGlzRXhjbHVkZWQpOyAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBuZXcgTm9ybWFsaXplckRhdGEoY2Fub25pY2FsQ2xhc3MsIGRlY29tcG9zZSwgY29tcG9zZSwgCisgICAgICAgICAgICAgICAgICBpc0NvbXBhdGliaWxpdHksIGlzRXhjbHVkZWQpOworICAgICAgICB9IGNhdGNoIChqYXZhLmlvLklPRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIFN5c3RlbS5lcnIucHJpbnRsbigiQ2FuJ3QgbG9hZCBkYXRhIGZpbGUuIiArIGUgKyAiLCAiICsgZS5nZXRNZXNzYWdlKCkpOworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICB9CisKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIEJ1aWxkaW5nIERlY29tcG9zaXRpb24gVGFibGVzCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAvKioKKyAgICAgKiBSZWFkcyBleGNsdXNpb24gbGlzdCBhbmQgc3RvcmVzIHRoZSBkYXRhCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCByZWFkRXhjbHVzaW9uTGlzdChCaXRTZXQgaXNFeGNsdWRlZCkgdGhyb3dzIGphdmEuaW8uSU9FeGNlcHRpb24geworICAgICAgICBpZiAoREVCVUcpIFN5c3RlbS5vdXQucHJpbnRsbigiUmVhZGluZyBFeGNsdXNpb25zIik7CisgICAgICAgIC8vQnVmZmVyZWRSZWFkZXIgaW4gPSBuZXcgQnVmZmVyZWRSZWFkZXIobmV3IEZpbGVSZWFkZXIoQ09NUE9TSVRJT05fRVhDTFVTSU9OUyksIDUqMTAyNCk7CisgICAgICAgIEJ1ZmZlcmVkUmVhZGVyIGluID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGluID0gVGVzdFV0aWwuZ2V0RGF0YVJlYWRlcigidW5pY29kZS9Db21wb3NpdGlvbkV4Y2x1c2lvbnMudHh0Iik7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBTeXN0ZW0uZXJyLnByaW50bG4oIkZhaWwgdG8gcmVhZCB0aGUgZmlsZSBDb21wb3NpdGlvbkV4Y2x1c2lvbnMudHh0ISIpOworICAgICAgICAgICAgU3lzdGVtLmV4aXQoMSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIHJlYWQgYSBsaW5lLCBkaXNjYXJkaW5nIGNvbW1lbnRzIGFuZCBibGFuayBsaW5lcworICAgICAgICAgICAgCisgICAgICAgICAgICBTdHJpbmcgbGluZSA9IGluLnJlYWRMaW5lKCk7CisgICAgICAgICAgICBpZiAobGluZSA9PSBudWxsKSBicmVhazsKKyAgICAgICAgICAgIGludCBjb21tZW50ID0gbGluZS5pbmRleE9mKCcjJyk7ICAgICAgICAgICAgICAgICAgICAvLyBzdHJpcCBjb21tZW50cworICAgICAgICAgICAgaWYgKGNvbW1lbnQgIT0gLTEpIGxpbmUgPSBsaW5lLnN1YnN0cmluZygwLGNvbW1lbnQpOworICAgICAgICAgICAgaWYgKGxpbmUubGVuZ3RoKCkgPT0gMCkgY29udGludWU7ICAgICAgICAgICAgICAgICAgIC8vIGlnbm9yZSBibGFua3MKKyAgICAgICAgICAgIGlmKGxpbmUuaW5kZXhPZignICcpICE9IC0xKSB7CisgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUuc3Vic3RyaW5nKDAsIGxpbmUuaW5kZXhPZignICcpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIHN0b3JlIC0xIGluIHRoZSBleGNsdWRlZCB0YWJsZSBmb3IgZWFjaCBjaGFyYWN0ZXIgaGl0CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGludCB2YWx1ZSA9IEludGVnZXIucGFyc2VJbnQobGluZSwxNik7CisgICAgICAgICAgICBpc0V4Y2x1ZGVkLnNldCh2YWx1ZSk7CisgICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiRXhjbHVkaW5nICIgKyBoZXgodmFsdWUpKTsKKyAgICAgICAgfQorICAgICAgICBpbi5jbG9zZSgpOworICAgICAgICBpZiAoREVCVUcpIFN5c3RlbS5vdXQucHJpbnRsbigiRG9uZSByZWFkaW5nIEV4Y2x1c2lvbnMiKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQnVpbGRzIGEgZGVjb21wb3NpdGlvbiB0YWJsZSBmcm9tIGEgVW5pY29kZURhdGEgZmlsZQorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIHZvaWQgYnVpbGREZWNvbXBvc2l0aW9uVGFibGVzKAorICAgICAgSW50SGFzaHRhYmxlIGNhbm9uaWNhbENsYXNzLCBJbnRTdHJpbmdIYXNodGFibGUgZGVjb21wb3NlLCAKKyAgICAgIExvbmdIYXNodGFibGUgY29tcG9zZSwgQml0U2V0IGlzQ29tcGF0aWJpbGl0eSwgQml0U2V0IGlzRXhjbHVkZWQpCisgICAgICB0aHJvd3MgamF2YS5pby5JT0V4Y2VwdGlvbiB7CisgICAgICAgIGlmIChERUJVRykgU3lzdGVtLm91dC5wcmludGxuKCJSZWFkaW5nIFVuaWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNlIik7CisgICAgICAgIC8vQnVmZmVyZWRSZWFkZXIgaW4gPSBuZXcgQnVmZmVyZWRSZWFkZXIobmV3IEZpbGVSZWFkZXIoVU5JQ09ERV9EQVRBKSwgNjQqMTAyNCk7CisgICAgICAgIEJ1ZmZlcmVkUmVhZGVyIGluID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGluID0gVGVzdFV0aWwuZ2V0RGF0YVJlYWRlcigidW5pY29kZS9Vbmljb2RlRGF0YS50eHQiKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIFN5c3RlbS5lcnIucHJpbnRsbigiRmFpbGVkIHRvIHJlYWQgVW5pY29kZURhdGEudHh0Iik7CisgICAgICAgICAgICBTeXN0ZW0uZXhpdCgxKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaW50IHZhbHVlOworICAgICAgICBsb25nIHBhaXI7CisgICAgICAgIGludCBjb3VudGVyID0gMDsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gcmVhZCBhIGxpbmUsIGRpc2NhcmRpbmcgY29tbWVudHMgYW5kIGJsYW5rIGxpbmVzCisgICAgICAgICAgICAKKyAgICAgICAgICAgIFN0cmluZyBsaW5lID0gaW4ucmVhZExpbmUoKTsKKyAgICAgICAgICAgIGlmIChsaW5lID09IG51bGwpIGJyZWFrOworICAgICAgICAgICAgaW50IGNvbW1lbnQgPSBsaW5lLmluZGV4T2YoJyMnKTsgICAgICAgICAgICAgICAgICAgIC8vIHN0cmlwIGNvbW1lbnRzCisgICAgICAgICAgICBpZiAoY29tbWVudCAhPSAtMSkgbGluZSA9IGxpbmUuc3Vic3RyaW5nKDAsY29tbWVudCk7CisgICAgICAgICAgICBpZiAobGluZS5sZW5ndGgoKSA9PSAwKSBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChERUJVRykgeworICAgICAgICAgICAgICAgIGNvdW50ZXIrKzsKKyAgICAgICAgICAgICAgICBpZiAoKGNvdW50ZXIgJiAweEZGKSA9PSAwKSBTeXN0ZW0ub3V0LnByaW50bG4oIkF0OiAiICsgbGluZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIGZpbmQgdGhlIHZhbHVlcyBvZiB0aGUgcGFydGljdWxhciBmaWVsZHMgdGhhdCB3ZSBuZWVkCisgICAgICAgICAgICAvLyBTYW1wbGUgbGluZTogMDBDMDtMQVRJTiAuLi5BIEdSQVZFO0x1OzA7TDswMDQxIDAzMDA7Ozs7TjtMQVRJTiAuLi4gR1JBVkU7OzswMEUwOworICAgICAgICAgICAgCisgICAgICAgICAgICBpbnQgc3RhcnQgPSAwOworICAgICAgICAgICAgaW50IGVuZCA9IGxpbmUuaW5kZXhPZignOycpOyAvLyBjb2RlCisgICAgICAgICAgICB2YWx1ZSA9IEludGVnZXIucGFyc2VJbnQobGluZS5zdWJzdHJpbmcoc3RhcnQsZW5kKSwxNik7CisgICAgICAgICAgICBpZiAodHJ1ZSAmJiB2YWx1ZSA9PSAnXHUwMGMwJykgeworICAgICAgICAgICAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCJkZWJ1ZzogIiArIGxpbmUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZW5kID0gbGluZS5pbmRleE9mKCc7JyxzdGFydD1lbmQrMSk7IC8vIG5hbWUKKyAgICAgICAgICAgIFN0cmluZyBuYW1lID0gbGluZS5zdWJzdHJpbmcoc3RhcnQsZW5kKTsKKyAgICAgICAgICAgIGVuZCA9IGxpbmUuaW5kZXhPZignOycsc3RhcnQ9ZW5kKzEpOyAvLyBnZW5lcmFsIGNhdGVnb3J5CisgICAgICAgICAgICBlbmQgPSBsaW5lLmluZGV4T2YoJzsnLHN0YXJ0PWVuZCsxKTsgLy8gY2Fub25pY2FsIGNsYXNzCisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIGNoZWNrIGNvbnNpc3RlbmN5OiBjYW5vbmljYWwgY2xhc3NlcyBtdXN0IGJlIGZyb20gMCB0byAyNTUKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaW50IGNjID0gSW50ZWdlci5wYXJzZUludChsaW5lLnN1YnN0cmluZyhzdGFydCxlbmQpKTsKKyAgICAgICAgICAgIGlmIChjYyAhPSAoY2MgJiAweEZGKSkgU3lzdGVtLmVyci5wcmludGxuKCJCYWQgY2Fub25pY2FsIGNsYXNzIGF0OiAiICsgbGluZSk7CisgICAgICAgICAgICBjYW5vbmljYWxDbGFzcy5wdXQodmFsdWUsY2MpOworICAgICAgICAgICAgZW5kID0gbGluZS5pbmRleE9mKCc7JyxzdGFydD1lbmQrMSk7IC8vIEJJREkKKyAgICAgICAgICAgIGVuZCA9IGxpbmUuaW5kZXhPZignOycsc3RhcnQ9ZW5kKzEpOyAvLyBkZWNvbXAKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gZGVjb21wIHJlcXVpcmVzIG1vcmUgcHJvY2Vzc2luZy4KKyAgICAgICAgICAgIC8vIHN0b3JlIHdoZXRoZXIgaXQgaXMgY2Fub25pY2FsIG9yIGNvbXBhdGliaWxpdHkuCisgICAgICAgICAgICAvLyBzdG9yZSB0aGUgZGVjb21wIGluIG9uZSB0YWJsZSwgYW5kIHRoZSByZXZlcnNlIG1hcHBpbmcgKGZyb20gcGFpcnMpIGluIGFub3RoZXIKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHN0YXJ0ICE9IGVuZCkgeworICAgICAgICAgICAgICAgIFN0cmluZyBzZWdtZW50ID0gbGluZS5zdWJzdHJpbmcoc3RhcnQsIGVuZCk7CisgICAgICAgICAgICAgICAgYm9vbGVhbiBjb21wYXQgPSBzZWdtZW50LmNoYXJBdCgwKSA9PSAnPCc7CisgICAgICAgICAgICAgICAgaWYgKGNvbXBhdCkgaXNDb21wYXRpYmlsaXR5LnNldCh2YWx1ZSk7CisgICAgICAgICAgICAgICAgU3RyaW5nIGRlY29tcCA9IGZyb21IZXgoc2VnbWVudCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gYSBzbWFsbCBzbmlwcGV0IG9mIGNvZGUgdG8gZ2VuZXJhdGUgdGhlIEFwcGxldCBkYXRhCisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLyppZiAoR0VORVJBVElORykgeworICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgPCAweEZGKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlwiXFx1IiArIGhleCgoY2hhcil2YWx1ZSkgKyAiXCIsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArICJcIlxcdSIgKyBoZXgoZGVjb21wLCAiXFx1IikgKyAiXCIsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArIChjb21wYXQgPyAiXCJLXCIsIiA6ICJcIlwiLCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiLy8gIiArIG5hbWUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSovCisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gY2hlY2sgY29uc2lzdGVuY3k6IGFsbCBjYW5vbiBkZWNvbXBzIG11c3QgYmUgc2luZ2xlcyBvciBwYWlycyEKKyAgICAgICAgICAgICAgICBpbnQgZGVjb21wTGVuID0gVVRGMTZVdGlsLmNvdW50Q29kZVBvaW50KGRlY29tcCk7CisgICAgICAgICAgICAgICAgaWYgKGRlY29tcExlbiA8IDEgfHwgZGVjb21wTGVuID4gMiAmJiAhY29tcGF0KSB7CisgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5lcnIucHJpbnRsbigiQmFkIGRlY29tcCBhdDogIiArIGxpbmUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZWNvbXBvc2UucHV0KHZhbHVlLCBkZWNvbXApOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIG9ubHkgY29tcG9zaXRpb25zIGFyZSBjYW5vbmljYWwgcGFpcnMKKyAgICAgICAgICAgICAgICAvLyBza2lwIGlmIHNjcmlwdCBleGNsdXNpb24KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoIWNvbXBhdCAmJiAhaXNFeGNsdWRlZC5nZXQodmFsdWUpKSB7CisgICAgICAgICAgICAgICAgICAgIGludCBmaXJzdCA9ICdcdTAwMDAnOworICAgICAgICAgICAgICAgICAgICBpbnQgc2Vjb25kID0gVVRGMTZVdGlsLm5leHRDb2RlUG9pbnQoZGVjb21wLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRlY29tcExlbiA+IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0ID0gc2Vjb25kOworICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kID0gVVRGMTZVdGlsLm5leHRDb2RlUG9pbnQoZGVjb21wLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVVEYxNlV0aWwuY29kZVBvaW50TGVuZ3RoKGZpcnN0KSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC8vIHN0b3JlIGNvbXBvc2l0aW9uIHBhaXIgaW4gc2luZ2xlIGludGVnZXIKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIHBhaXIgPSAoKGxvbmcpZmlyc3QgPDwgMzIpIHwgc2Vjb25kOworICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUcgJiYgdmFsdWUgPT0gJ1x1MDBDMCcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiZGVidWcyOiAiICsgbGluZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgY29tcG9zZS5wdXQocGFpciwgdmFsdWUpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoREVCVUcpIHsKKyAgICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJFeGNsdWRpbmc6ICIgKyBkZWNvbXApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpbi5jbG9zZSgpOworICAgICAgICBpZiAoREVCVUcpIFN5c3RlbS5vdXQucHJpbnRsbigiRG9uZSByZWFkaW5nIFVuaWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNlIik7CisgICAgICAgIAorICAgICAgICAvLyBhZGQgYWxnb3JpdGhtaWMgSGFuZ3VsIGRlY29tcG9zaXRpb25zCisgICAgICAgIC8vIHRoaXMgaXMgbW9yZSBjb21wYWN0IGlmIGRvbmUgYXQgcnVudGltZSwgYnV0IGZvciBzaW1wbGljaXR5IHdlCisgICAgICAgIC8vIGRvIGl0IHRoaXMgd2F5LgorICAgICAgICAKKyAgICAgICAgaWYgKERFQlVHKSBTeXN0ZW0ub3V0LnByaW50bG4oIkFkZGluZyBIYW5ndWwiKTsKKyAgICAgICAgCisgICAgICAgIGZvciAoaW50IFNJbmRleCA9IDA7IFNJbmRleCA8IFNDb3VudDsgKytTSW5kZXgpIHsKKyAgICAgICAgICAgIGludCBUSW5kZXggPSBTSW5kZXggJSBUQ291bnQ7CisgICAgICAgICAgICBjaGFyIGZpcnN0LCBzZWNvbmQ7CisgICAgICAgICAgICBpZiAoVEluZGV4ICE9IDApIHsgLy8gdHJpcGxlCisgICAgICAgICAgICAgICAgZmlyc3QgPSAoY2hhcikoU0Jhc2UgKyBTSW5kZXggLSBUSW5kZXgpOworICAgICAgICAgICAgICAgIHNlY29uZCA9IChjaGFyKShUQmFzZSArIFRJbmRleCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGZpcnN0ID0gKGNoYXIpKExCYXNlICsgU0luZGV4IC8gTkNvdW50KTsKKyAgICAgICAgICAgICAgICBzZWNvbmQgPSAoY2hhcikoVkJhc2UgKyAoU0luZGV4ICUgTkNvdW50KSAvIFRDb3VudCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwYWlyID0gKChsb25nKWZpcnN0IDw8IDMyKSB8IHNlY29uZDsKKyAgICAgICAgICAgIHZhbHVlID0gU0luZGV4ICsgU0Jhc2U7CisgICAgICAgICAgICBkZWNvbXBvc2UucHV0KHZhbHVlLCBTdHJpbmcudmFsdWVPZihmaXJzdCkgKyBzZWNvbmQpOworICAgICAgICAgICAgY29tcG9zZS5wdXQocGFpciwgdmFsdWUpOworICAgICAgICB9CisgICAgICAgIGlmIChERUJVRykgU3lzdGVtLm91dC5wcmludGxuKCJEb25lIGFkZGluZyBIYW5ndWwiKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBIYW5ndWwgY29tcG9zaXRpb24gY29uc3RhbnRzCisgICAgICovCisgICAgc3RhdGljIGZpbmFsIGludCAKKyAgICAgICAgU0Jhc2UgPSAweEFDMDAsIExCYXNlID0gMHgxMTAwLCBWQmFzZSA9IDB4MTE2MSwgVEJhc2UgPSAweDExQTcsCisgICAgICAgIExDb3VudCA9IDE5LCBWQ291bnQgPSAyMSwgVENvdW50ID0gMjgsCisgICAgICAgIE5Db3VudCA9IFZDb3VudCAqIFRDb3VudCwgICAvLyA1ODgKKyAgICAgICAgU0NvdW50ID0gTENvdW50ICogTkNvdW50OyAgIC8vIDExMTcyCisgICAgCisgICAgLyoqCisgICAgICogRm9yIHVzZSBpbiBhbiBhcHBsZXQ6IGp1c3QgbG9hZCBhIG1pbmltYWwgc2V0IG9mIGRhdGEuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBzZXRNaW5pbWFsRGVjb21wKEludEhhc2h0YWJsZSBjYW5vbmljYWxDbGFzcywgSW50U3RyaW5nSGFzaHRhYmxlIGRlY29tcG9zZSwgCisgICAgICBMb25nSGFzaHRhYmxlIGNvbXBvc2UsIEJpdFNldCBpc0NvbXBhdGliaWxpdHksIEJpdFNldCBpc0V4Y2x1ZGVkKSB7CisgICAgICAgIFN0cmluZ1tdIGRlY29tcG9zZURhdGEgPSB7CisgICAgICAgICAgICAiXHUwMDVFIiwgIlx1MDAyMFx1MDMwMiIsICJLIiwKKyAgICAgICAgICAgICJcdTAwNUYiLCAiXHUwMDIwXHUwMzMyIiwgIksiLAorICAgICAgICAgICAgIlx1MDA2MCIsICJcdTAwMjBcdTAzMDAiLCAiSyIsCisgICAgICAgICAgICAiXHUwMEEwIiwgIlx1MDAyMCIsICJLIiwKKyAgICAgICAgICAgICJcdTAwQTgiLCAiXHUwMDIwXHUwMzA4IiwgIksiLAorICAgICAgICAgICAgIlx1MDBBQSIsICJcdTAwNjEiLCAiSyIsCisgICAgICAgICAgICAiXHUwMEFGIiwgIlx1MDAyMFx1MDMwNCIsICJLIiwKKyAgICAgICAgICAgICJcdTAwQjIiLCAiXHUwMDMyIiwgIksiLAorICAgICAgICAgICAgIlx1MDBCMyIsICJcdTAwMzMiLCAiSyIsCisgICAgICAgICAgICAiXHUwMEI0IiwgIlx1MDAyMFx1MDMwMSIsICJLIiwKKyAgICAgICAgICAgICJcdTAwQjUiLCAiXHUwM0JDIiwgIksiLAorICAgICAgICAgICAgIlx1MDBCOCIsICJcdTAwMjBcdTAzMjciLCAiSyIsCisgICAgICAgICAgICAiXHUwMEI5IiwgIlx1MDAzMSIsICJLIiwKKyAgICAgICAgICAgICJcdTAwQkEiLCAiXHUwMDZGIiwgIksiLAorICAgICAgICAgICAgIlx1MDBCQyIsICJcdTAwMzFcdTIwNDRcdTAwMzQiLCAiSyIsCisgICAgICAgICAgICAiXHUwMEJEIiwgIlx1MDAzMVx1MjA0NFx1MDAzMiIsICJLIiwKKyAgICAgICAgICAgICJcdTAwQkUiLCAiXHUwMDMzXHUyMDQ0XHUwMDM0IiwgIksiLAorICAgICAgICAgICAgIlx1MDBDMCIsICJcdTAwNDFcdTAzMDAiLCAiIiwKKyAgICAgICAgICAgICJcdTAwQzEiLCAiXHUwMDQxXHUwMzAxIiwgIiIsCisgICAgICAgICAgICAiXHUwMEMyIiwgIlx1MDA0MVx1MDMwMiIsICIiLAorICAgICAgICAgICAgIlx1MDBDMyIsICJcdTAwNDFcdTAzMDMiLCAiIiwKKyAgICAgICAgICAgICJcdTAwQzQiLCAiXHUwMDQxXHUwMzA4IiwgIiIsCisgICAgICAgICAgICAiXHUwMEM1IiwgIlx1MDA0MVx1MDMwQSIsICIiLAorICAgICAgICAgICAgIlx1MDBDNyIsICJcdTAwNDNcdTAzMjciLCAiIiwKKyAgICAgICAgICAgICJcdTAwQzgiLCAiXHUwMDQ1XHUwMzAwIiwgIiIsCisgICAgICAgICAgICAiXHUwMEM5IiwgIlx1MDA0NVx1MDMwMSIsICIiLAorICAgICAgICAgICAgIlx1MDBDQSIsICJcdTAwNDVcdTAzMDIiLCAiIiwKKyAgICAgICAgICAgICJcdTAwQ0IiLCAiXHUwMDQ1XHUwMzA4IiwgIiIsCisgICAgICAgICAgICAiXHUwMENDIiwgIlx1MDA0OVx1MDMwMCIsICIiLAorICAgICAgICAgICAgIlx1MDBDRCIsICJcdTAwNDlcdTAzMDEiLCAiIiwKKyAgICAgICAgICAgICJcdTAwQ0UiLCAiXHUwMDQ5XHUwMzAyIiwgIiIsCisgICAgICAgICAgICAiXHUwMENGIiwgIlx1MDA0OVx1MDMwOCIsICIiLAorICAgICAgICAgICAgIlx1MDBEMSIsICJcdTAwNEVcdTAzMDMiLCAiIiwKKyAgICAgICAgICAgICJcdTAwRDIiLCAiXHUwMDRGXHUwMzAwIiwgIiIsCisgICAgICAgICAgICAiXHUwMEQzIiwgIlx1MDA0Rlx1MDMwMSIsICIiLAorICAgICAgICAgICAgIlx1MDBENCIsICJcdTAwNEZcdTAzMDIiLCAiIiwKKyAgICAgICAgICAgICJcdTAwRDUiLCAiXHUwMDRGXHUwMzAzIiwgIiIsCisgICAgICAgICAgICAiXHUwMEQ2IiwgIlx1MDA0Rlx1MDMwOCIsICIiLAorICAgICAgICAgICAgIlx1MDBEOSIsICJcdTAwNTVcdTAzMDAiLCAiIiwKKyAgICAgICAgICAgICJcdTAwREEiLCAiXHUwMDU1XHUwMzAxIiwgIiIsCisgICAgICAgICAgICAiXHUwMERCIiwgIlx1MDA1NVx1MDMwMiIsICIiLAorICAgICAgICAgICAgIlx1MDBEQyIsICJcdTAwNTVcdTAzMDgiLCAiIiwKKyAgICAgICAgICAgICJcdTAwREQiLCAiXHUwMDU5XHUwMzAxIiwgIiIsCisgICAgICAgICAgICAiXHUwMEUwIiwgIlx1MDA2MVx1MDMwMCIsICIiLAorICAgICAgICAgICAgIlx1MDBFMSIsICJcdTAwNjFcdTAzMDEiLCAiIiwKKyAgICAgICAgICAgICJcdTAwRTIiLCAiXHUwMDYxXHUwMzAyIiwgIiIsCisgICAgICAgICAgICAiXHUwMEUzIiwgIlx1MDA2MVx1MDMwMyIsICIiLAorICAgICAgICAgICAgIlx1MDBFNCIsICJcdTAwNjFcdTAzMDgiLCAiIiwKKyAgICAgICAgICAgICJcdTAwRTUiLCAiXHUwMDYxXHUwMzBBIiwgIiIsCisgICAgICAgICAgICAiXHUwMEU3IiwgIlx1MDA2M1x1MDMyNyIsICIiLAorICAgICAgICAgICAgIlx1MDBFOCIsICJcdTAwNjVcdTAzMDAiLCAiIiwKKyAgICAgICAgICAgICJcdTAwRTkiLCAiXHUwMDY1XHUwMzAxIiwgIiIsCisgICAgICAgICAgICAiXHUwMEVBIiwgIlx1MDA2NVx1MDMwMiIsICIiLAorICAgICAgICAgICAgIlx1MDBFQiIsICJcdTAwNjVcdTAzMDgiLCAiIiwKKyAgICAgICAgICAgICJcdTAwRUMiLCAiXHUwMDY5XHUwMzAwIiwgIiIsCisgICAgICAgICAgICAiXHUwMEVEIiwgIlx1MDA2OVx1MDMwMSIsICIiLAorICAgICAgICAgICAgIlx1MDBFRSIsICJcdTAwNjlcdTAzMDIiLCAiIiwKKyAgICAgICAgICAgICJcdTAwRUYiLCAiXHUwMDY5XHUwMzA4IiwgIiIsCisgICAgICAgICAgICAiXHUwMEYxIiwgIlx1MDA2RVx1MDMwMyIsICIiLAorICAgICAgICAgICAgIlx1MDBGMiIsICJcdTAwNkZcdTAzMDAiLCAiIiwKKyAgICAgICAgICAgICJcdTAwRjMiLCAiXHUwMDZGXHUwMzAxIiwgIiIsCisgICAgICAgICAgICAiXHUwMEY0IiwgIlx1MDA2Rlx1MDMwMiIsICIiLAorICAgICAgICAgICAgIlx1MDBGNSIsICJcdTAwNkZcdTAzMDMiLCAiIiwKKyAgICAgICAgICAgICJcdTAwRjYiLCAiXHUwMDZGXHUwMzA4IiwgIiIsCisgICAgICAgICAgICAiXHUwMEY5IiwgIlx1MDA3NVx1MDMwMCIsICIiLAorICAgICAgICAgICAgIlx1MDBGQSIsICJcdTAwNzVcdTAzMDEiLCAiIiwKKyAgICAgICAgICAgICJcdTAwRkIiLCAiXHUwMDc1XHUwMzAyIiwgIiIsCisgICAgICAgICAgICAiXHUwMEZDIiwgIlx1MDA3NVx1MDMwOCIsICIiLAorICAgICAgICAgICAgIlx1MDBGRCIsICJcdTAwNzlcdTAzMDEiLCAiIiwKKy8vIEVYVFJBUywgb3V0c2lkZSBvZiBMYXRpbiAxCisgICAgICAgICAgICAiXHUxRUE0IiwgIlx1MDBDMlx1MDMwMSIsICIiLAorICAgICAgICAgICAgIlx1MUVBNSIsICJcdTAwRTJcdTAzMDEiLCAiIiwKKyAgICAgICAgICAgICJcdTFFQTYiLCAiXHUwMEMyXHUwMzAwIiwgIiIsCisgICAgICAgICAgICAiXHUxRUE3IiwgIlx1MDBFMlx1MDMwMCIsICIiLAorICAgICAgICB9OworCisgICAgICAgIGludFtdIGNsYXNzRGF0YSA9IHsKKyAgICAgICAgICAgIDB4MDMwMCwgMjMwLAorICAgICAgICAgICAgMHgwMzAxLCAyMzAsCisgICAgICAgICAgICAweDAzMDIsIDIzMCwKKyAgICAgICAgICAgIDB4MDMwMywgMjMwLAorICAgICAgICAgICAgMHgwMzA0LCAyMzAsCisgICAgICAgICAgICAweDAzMDUsIDIzMCwKKyAgICAgICAgICAgIDB4MDMwNiwgMjMwLAorICAgICAgICAgICAgMHgwMzA3LCAyMzAsCisgICAgICAgICAgICAweDAzMDgsIDIzMCwKKyAgICAgICAgICAgIDB4MDMwOSwgMjMwLAorICAgICAgICAgICAgMHgwMzBBLCAyMzAsCisgICAgICAgICAgICAweDAzMEIsIDIzMCwKKyAgICAgICAgICAgIDB4MDMwQywgMjMwLAorICAgICAgICAgICAgMHgwMzBELCAyMzAsCisgICAgICAgICAgICAweDAzMEUsIDIzMCwKKyAgICAgICAgICAgIDB4MDMwRiwgMjMwLAorICAgICAgICAgICAgMHgwMzEwLCAyMzAsCisgICAgICAgICAgICAweDAzMTEsIDIzMCwKKyAgICAgICAgICAgIDB4MDMxMiwgMjMwLAorICAgICAgICAgICAgMHgwMzEzLCAyMzAsCisgICAgICAgICAgICAweDAzMTQsIDIzMCwKKyAgICAgICAgICAgIDB4MDMxNSwgMjMyLAorICAgICAgICAgICAgMHgwMzE2LCAyMjAsCisgICAgICAgICAgICAweDAzMTcsIDIyMCwKKyAgICAgICAgICAgIDB4MDMxOCwgMjIwLAorICAgICAgICAgICAgMHgwMzE5LCAyMjAsCisgICAgICAgICAgICAweDAzMUEsIDIzMiwKKyAgICAgICAgICAgIDB4MDMxQiwgMjE2LAorICAgICAgICAgICAgMHgwMzFDLCAyMjAsCisgICAgICAgICAgICAweDAzMUQsIDIyMCwKKyAgICAgICAgICAgIDB4MDMxRSwgMjIwLAorICAgICAgICAgICAgMHgwMzFGLCAyMjAsCisgICAgICAgICAgICAweDAzMjAsIDIyMCwKKyAgICAgICAgICAgIDB4MDMyMSwgMjAyLAorICAgICAgICAgICAgMHgwMzIyLCAyMDIsCisgICAgICAgICAgICAweDAzMjMsIDIyMCwKKyAgICAgICAgICAgIDB4MDMyNCwgMjIwLAorICAgICAgICAgICAgMHgwMzI1LCAyMjAsCisgICAgICAgICAgICAweDAzMjYsIDIyMCwKKyAgICAgICAgICAgIDB4MDMyNywgMjAyLAorICAgICAgICAgICAgMHgwMzI4LCAyMDIsCisgICAgICAgICAgICAweDAzMjksIDIyMCwKKyAgICAgICAgICAgIDB4MDMyQSwgMjIwLAorICAgICAgICAgICAgMHgwMzJCLCAyMjAsCisgICAgICAgICAgICAweDAzMkMsIDIyMCwKKyAgICAgICAgICAgIDB4MDMyRCwgMjIwLAorICAgICAgICAgICAgMHgwMzJFLCAyMjAsCisgICAgICAgICAgICAweDAzMkYsIDIyMCwKKyAgICAgICAgICAgIDB4MDMzMCwgMjIwLAorICAgICAgICAgICAgMHgwMzMxLCAyMjAsCisgICAgICAgICAgICAweDAzMzIsIDIyMCwKKyAgICAgICAgICAgIDB4MDMzMywgMjIwLAorICAgICAgICAgICAgMHgwMzM0LCAxLAorICAgICAgICAgICAgMHgwMzM1LCAxLAorICAgICAgICAgICAgMHgwMzM2LCAxLAorICAgICAgICAgICAgMHgwMzM3LCAxLAorICAgICAgICAgICAgMHgwMzM4LCAxLAorICAgICAgICAgICAgMHgwMzM5LCAyMjAsCisgICAgICAgICAgICAweDAzM0EsIDIyMCwKKyAgICAgICAgICAgIDB4MDMzQiwgMjIwLAorICAgICAgICAgICAgMHgwMzNDLCAyMjAsCisgICAgICAgICAgICAweDAzM0QsIDIzMCwKKyAgICAgICAgICAgIDB4MDMzRSwgMjMwLAorICAgICAgICAgICAgMHgwMzNGLCAyMzAsCisgICAgICAgICAgICAweDAzNDAsIDIzMCwKKyAgICAgICAgICAgIDB4MDM0MSwgMjMwLAorICAgICAgICAgICAgMHgwMzQyLCAyMzAsCisgICAgICAgICAgICAweDAzNDMsIDIzMCwKKyAgICAgICAgICAgIDB4MDM0NCwgMjMwLAorICAgICAgICAgICAgMHgwMzQ1LCAyNDAsCisgICAgICAgICAgICAweDAzNjAsIDIzNCwKKyAgICAgICAgICAgIDB4MDM2MSwgMjM0CisgICAgICAgIH07CisgICAgCisgICAgICAgIC8vIGJ1aWxkIHRoZSBzYW1lIHRhYmxlcyB3ZSB3b3VsZCBvdGhlcndpc2UgZ2V0IGZyb20gdGhlCisgICAgICAgIC8vIFVuaWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNlLCBqdXN0IHdpdGggbGltaXRlZCBkYXRhCisgICAgICAgICAKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBkZWNvbXBvc2VEYXRhLmxlbmd0aDsgaSs9MykgeworICAgICAgICAgICAgY2hhciB2YWx1ZSA9IGRlY29tcG9zZURhdGFbaV0uY2hhckF0KDApOworICAgICAgICAgICAgU3RyaW5nIGRlY29tcCA9IGRlY29tcG9zZURhdGFbaSsxXTsKKyAgICAgICAgICAgIGJvb2xlYW4gY29tcGF0ID0gZGVjb21wb3NlRGF0YVtpKzJdLmVxdWFscygiSyIpOworICAgICAgICAgICAgaWYgKGNvbXBhdCkgaXNDb21wYXRpYmlsaXR5LnNldCh2YWx1ZSk7CisgICAgICAgICAgICBkZWNvbXBvc2UucHV0KHZhbHVlLCBkZWNvbXApOworICAgICAgICAgICAgaWYgKCFjb21wYXQpIHsKKyAgICAgICAgICAgICAgICBpbnQgZmlyc3QgPSAnXHUwMDAwJzsKKyAgICAgICAgICAgICAgICBpbnQgc2Vjb25kID0gVVRGMTZVdGlsLm5leHRDb2RlUG9pbnQoZGVjb21wLCAwKTsKKyAgICAgICAgICAgICAgICBpZiAoZGVjb21wLmxlbmd0aCgpID4gMSkgeworICAgICAgICAgICAgICAgICAgICBmaXJzdCA9IHNlY29uZDsKKyAgICAgICAgICAgICAgICAgICAgc2Vjb25kID0gVVRGMTZVdGlsLm5leHRDb2RlUG9pbnQoZGVjb21wLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIFVURjE2VXRpbC5jb2RlUG9pbnRMZW5ndGgoZmlyc3QpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbG9uZyBwYWlyID0gKGZpcnN0IDw8IDE2KSB8IHNlY29uZDsKKyAgICAgICAgICAgICAgICBjb21wb3NlLnB1dChwYWlyLCB2YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2xhc3NEYXRhLmxlbmd0aDspIHsKKyAgICAgICAgICAgIGNhbm9uaWNhbENsYXNzLnB1dChjbGFzc0RhdGFbaSsrXSwgY2xhc3NEYXRhW2krK10pOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFV0aWxpdHk6IFBhcnNlcyBhIHNlcXVlbmNlIG9mIGhleCBVbmljb2RlIGNoYXJhY3RlcnMgc2VwYXJhdGVkIGJ5IHNwYWNlcworICAgICAqLworICAgIHN0YXRpYyBwdWJsaWMgU3RyaW5nIGZyb21IZXgoU3RyaW5nIHNvdXJjZSkgeworICAgICAgICBTdHJpbmdCdWZmZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNvdXJjZS5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBjaGFyIGMgPSBzb3VyY2UuY2hhckF0KGkpOworICAgICAgICAgICAgc3dpdGNoIChjKSB7CisgICAgICAgICAgICAgIGNhc2UgJyAnOiBicmVhazsgLy8gaWdub3JlCisgICAgICAgICAgICAgIGNhc2UgJzAnOiBjYXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOiBjYXNlICc0JzogY2FzZSAnNSc6IGNhc2UgJzYnOiBjYXNlICc3JzogCisgICAgICAgICAgICAgIGNhc2UgJzgnOiBjYXNlICc5JzogY2FzZSAnQSc6IGNhc2UgJ0InOiBjYXNlICdDJzogY2FzZSAnRCc6IGNhc2UgJ0UnOiBjYXNlICdGJzogCisgICAgICAgICAgICAgIGNhc2UgJ2EnOiBjYXNlICdiJzogY2FzZSAnYyc6IGNhc2UgJ2QnOiBjYXNlICdlJzogY2FzZSAnZic6CisgICAgICAgICAgICAgICAgaW50IGVuZCA9IDA7CisgICAgICAgICAgICAgICAgaW50IHZhbHVlID0gMDsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbihzb3VyY2Uuc3Vic3RyaW5nKGksIGkgKyA0KSArICIqKioqKioqKioqKioiICsgc291cmNlKTsKKyAgICAgICAgICAgICAgICAgICAgZW5kID0gc291cmNlLmluZGV4T2YoJyAnLGkpOworICAgICAgICAgICAgICAgICAgICBpZiAoZW5kIDwgMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZW5kID0gc291cmNlLmxlbmd0aCgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gSW50ZWdlci5wYXJzZUludChzb3VyY2Uuc3Vic3RyaW5nKGksIGVuZCksMTYpOworICAgICAgICAgICAgICAgICAgICBVVEYxNlV0aWwuYXBwZW5kQ29kZVBvaW50KHJlc3VsdCwgdmFsdWUpOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiaTogIiArIGkgKyAiO2VuZDoiICsgZW5kICsgInNvdXJjZToiICsgc291cmNlKTsKKyAgICAgICAgICAgICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oc291cmNlLnN1YnN0cmluZyhpLCBpICsgNCkgKyAiKioqKioqKioqKioqIiArIHNvdXJjZSk7CisgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5leGl0KDEpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvL2krPSAzOyAvLyBza2lwIHJlc3Qgb2YgbnVtYmVyCisgICAgICAgICAgICAgICAgaSA9IGVuZDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAnPCc6IGludCBqID0gc291cmNlLmluZGV4T2YoJz4nLGkpOyAvLyBza2lwIDwuLi4+CisgICAgICAgICAgICAgICAgaWYgKGogPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIGkgPSBqOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9IC8vIGVsc2UgZmFsbCB0aHJvdWdoLS1lcnJvcgorICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkJhZCBoZXggdmFsdWUgaW4gIiArIHNvdXJjZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBVdGlsaXR5OiBTdXBwbGllcyBhIHplcm8tcGFkZGVkIGhleCByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnRlZ2VyICh3aXRob3V0IDB4KQorICAgICAqLworICAgIHN0YXRpYyBwdWJsaWMgU3RyaW5nIGhleChpbnQgaSkgeworICAgICAgICBTdHJpbmcgcmVzdWx0ID0gTG9uZy50b1N0cmluZyhpICYgMHhGRkZGRkZGRkwsIDE2KS50b1VwcGVyQ2FzZSgpOworICAgICAgICByZXR1cm4gIjAwMDAwMDAwIi5zdWJzdHJpbmcocmVzdWx0Lmxlbmd0aCgpLDgpICsgcmVzdWx0OworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBVdGlsaXR5OiBTdXBwbGllcyBhIHplcm8tcGFkZGVkIGhleCByZXByZXNlbnRhdGlvbiBvZiBhIFVuaWNvZGUgY2hhcmFjdGVyICh3aXRob3V0IDB4LCBcXHUpCisgICAgICovCisgICAgc3RhdGljIHB1YmxpYyBTdHJpbmcgaGV4KGNoYXIgaSkgeworICAgICAgICBTdHJpbmcgcmVzdWx0ID0gSW50ZWdlci50b1N0cmluZyhpLCAxNikudG9VcHBlckNhc2UoKTsKKyAgICAgICAgcmV0dXJuICIwMDAwIi5zdWJzdHJpbmcocmVzdWx0Lmxlbmd0aCgpLDQpICsgcmVzdWx0OworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBVdGlsaXR5OiBTdXBwbGllcyBhIHplcm8tcGFkZGVkIGhleCByZXByZXNlbnRhdGlvbiBvZiBhIFVuaWNvZGUgY2hhcmFjdGVyICh3aXRob3V0IDB4LCBcXHUpCisgICAgICovCisJcHVibGljIHN0YXRpYyBTdHJpbmcgaGV4KFN0cmluZyBzLCBTdHJpbmcgc2VwKSB7CisJICAgIFN0cmluZ0J1ZmZlciByZXN1bHQgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisJICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcy5sZW5ndGgoKTsgKytpKSB7CisJICAgICAgICBpZiAoaSAhPSAwKSByZXN1bHQuYXBwZW5kKHNlcCk7CisJICAgICAgICByZXN1bHQuYXBwZW5kKGhleChzLmNoYXJBdChpKSkpOworCSAgICB9CisJICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKKwl9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L25vcm1hbGl6ZXIvTm9ybWFsaXplckRhdGEuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9ub3JtYWxpemVyL05vcm1hbGl6ZXJEYXRhLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmY4ODI2MwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9ub3JtYWxpemVyL05vcm1hbGl6ZXJEYXRhLmphdmEKQEAgLTAsMCArMSwxMzMgQEAKK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3Qubm9ybWFsaXplcjsKKworaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7CitpbXBvcnQgamF2YS51dGlsLkJpdFNldDsKKworLyoqCisgKiBBY2Nlc3NlcyB0aGUgTm9ybWFsaXphdGlvbiBEYXRhIHVzZWQgZm9yIEZvcm1zIEMgYW5kIEQuPGJyPgorICogQ29weXJpZ2h0IKkgMTk5OC0yMDAyIFVuaWNvZGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC48YnI+CisgKiBUaGUgVW5pY29kZSBDb25zb3J0aXVtIG1ha2VzIG5vIGV4cHJlc3NlZCBvciBpbXBsaWVkIHdhcnJhbnR5IG9mIGFueQorICoga2luZCwgYW5kIGFzc3VtZXMgbm8gbGlhYmlsaXR5IGZvciBlcnJvcnMgb3Igb21pc3Npb25zLgorICogTm8gbGlhYmlsaXR5IGlzIGFzc3VtZWQgZm9yIGluY2lkZW50YWwgYW5kIGNvbnNlcXVlbnRpYWwgZGFtYWdlcworICogaW4gY29ubmVjdGlvbiB3aXRoIG9yIGFyaXNpbmcgb3V0IG9mIHRoZSB1c2Ugb2YgdGhlIGluZm9ybWF0aW9uIGhlcmUuCisgKiBAYXV0aG9yIE1hcmsgRGF2aXMKKyAqIFVwZGF0ZXMgZm9yIHN1cHBsZW1lbnRhcnkgY29kZSBwb2ludHM6IAorICogVmxhZGltaXIgV2VpbnN0ZWluICYgTWFya3VzIFNjaGVyZXIKKyAqLworcHVibGljIGNsYXNzIE5vcm1hbGl6ZXJEYXRhIHsKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9ICJDb3B5cmlnaHQgqSAxOTk4LTE5OTkgVW5pY29kZSwgSW5jLiI7CisgICAgCisgICAgLyoqCisgICAgKiBDb25zdGFudCBmb3IgdXNlIGluIGdldFBhaXJ3aXNlQ29tcG9zaXRpb24KKyAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE5PVF9DT01QT1NJVEUgPSAnXHVGRkZGJzsKKworICAgIC8qKgorICAgICogR2V0cyB0aGUgY29tYmluaW5nIGNsYXNzIG9mIGEgY2hhcmFjdGVyIGZyb20gdGhlCisgICAgKiBVbmljb2RlIENoYXJhY3RlciBEYXRhYmFzZS4KKyAgICAqIEBwYXJhbSAgIGNoICAgICAgdGhlIHNvdXJjZSBjaGFyYWN0ZXIKKyAgICAqIEByZXR1cm4gICAgICAgICAgdmFsdWUgZnJvbSAwIHRvIDI1NQorICAgICovCisgICAgcHVibGljIGludCBnZXRDYW5vbmljYWxDbGFzcyhpbnQgY2gpIHsKKyAgICAgICAgcmV0dXJuIGNhbm9uaWNhbENsYXNzLmdldChjaCk7CisgICAgfQorCisgICAgLyoqCisgICAgKiBSZXR1cm5zIHRoZSBjb21wb3NpdGUgb2YgdGhlIHR3byBjaGFyYWN0ZXJzLiBJZiB0aGUgdHdvCisgICAgKiBjaGFyYWN0ZXJzIGRvbid0IGNvbWJpbmUsIHJldHVybnMgTk9UX0NPTVBPU0lURS4KKyAgICAqIEBwYXJhbSAgIGZpcnN0ICAgZmlyc3QgY2hhcmFjdGVyIChlLmcuICdjJykKKyAgICAqIEBwYXJhbSAgIGZpcnN0ICAgc2Vjb25kIGNoYXJhY3RlciAoZS5nLiAnuCcgY2VkaWxsYSkKKyAgICAqIEByZXR1cm4gICAgICAgICAgY29tcG9zaXRlIChlLmcuICfnJykKKyAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0UGFpcndpc2VDb21wb3NpdGlvbihpbnQgZmlyc3QsIGludCBzZWNvbmQpIHsKKyAgICAgICAgcmV0dXJuIGNvbXBvc2UuZ2V0KCgobG9uZylmaXJzdCA8PCAzMikgfCBzZWNvbmQpOworICAgIH0KKworCisgICAgLyoqCisgICAgKiBHZXRzIHJlY3Vyc2l2ZSBkZWNvbXBvc2l0aW9uIG9mIGEgY2hhcmFjdGVyIGZyb20gdGhlIAorICAgICogVW5pY29kZSBDaGFyYWN0ZXIgRGF0YWJhc2UuCisgICAgKiBAcGFyYW0gICBjYW5vbmljYWwgICAgSWYgdHJ1ZQorICAgICogICAgICAgICAgICAgICAgICBiaXQgaXMgb24gaW4gdGhpcyBieXRlLCB0aGVuIHNlbGVjdHMgdGhlIHJlY3Vyc2l2ZSAKKyAgICAqICAgICAgICAgICAgICAgICAgY2Fub25pY2FsIGRlY29tcG9zaXRpb24sIG90aGVyd2lzZSBzZWxlY3RzCisgICAgKiAgICAgICAgICAgICAgICAgIHRoZSByZWN1cnNpdmUgY29tcGF0aWJpbGl0eSBhbmQgY2Fub25pY2FsIGRlY29tcG9zaXRpb24uCisgICAgKiBAcGFyYW0gICBjaCAgICAgIHRoZSBzb3VyY2UgY2hhcmFjdGVyCisgICAgKiBAcGFyYW0gICBidWZmZXIgIGJ1ZmZlciB0byBiZSBmaWxsZWQgd2l0aCB0aGUgZGVjb21wb3NpdGlvbgorICAgICovCisgICAgcHVibGljIHZvaWQgZ2V0UmVjdXJzaXZlRGVjb21wb3NpdGlvbihib29sZWFuIGNhbm9uaWNhbCwgaW50IGNoLCBTdHJpbmdCdWZmZXIgYnVmZmVyKSB7CisgICAgICAgIFN0cmluZyBkZWNvbXAgPSBkZWNvbXBvc2UuZ2V0KGNoKTsgCisgICAgICAgIGlmIChkZWNvbXAgIT0gbnVsbCAmJiAhKGNhbm9uaWNhbCAmJiBpc0NvbXBhdGliaWxpdHkuZ2V0KGNoKSkpIHsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZGVjb21wLmxlbmd0aCgpOyBpKz1VVEYxNlV0aWwuY29kZVBvaW50TGVuZ3RoKGNoKSkgeworICAgICAgICAgICAgICAgIGNoID0gVVRGMTZVdGlsLm5leHRDb2RlUG9pbnQoZGVjb21wLCBpKTsKKyAgICAgICAgICAgICAgICBnZXRSZWN1cnNpdmVEZWNvbXBvc2l0aW9uKGNhbm9uaWNhbCwgY2gsIGJ1ZmZlcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAvLyBpZiBubyBkZWNvbXAsIGFwcGVuZAorICAgICAgICAgICAgVVRGMTZVdGlsLmFwcGVuZENvZGVQb2ludChidWZmZXIsIGNoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gICAgICAgICAgICAgICAgICAgUFJJVkFURVMKKyAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgCisgICAgLyoqCisgICAgICogT25seSBhY2Nlc3NlZCBieSBOb3JtYWxpemVyQnVpbGRlci4KKyAgICAgKi8KKyAgICBOb3JtYWxpemVyRGF0YShJbnRIYXNodGFibGUgY2Fub25pY2FsQ2xhc3MsIEludFN0cmluZ0hhc2h0YWJsZSBkZWNvbXBvc2UsIAorICAgICAgTG9uZ0hhc2h0YWJsZSBjb21wb3NlLCBCaXRTZXQgaXNDb21wYXRpYmlsaXR5LCBCaXRTZXQgaXNFeGNsdWRlZCkgeworICAgICAgICB0aGlzLmNhbm9uaWNhbENsYXNzID0gY2Fub25pY2FsQ2xhc3M7CisgICAgICAgIHRoaXMuZGVjb21wb3NlID0gZGVjb21wb3NlOworICAgICAgICB0aGlzLmNvbXBvc2UgPSBjb21wb3NlOworICAgICAgICB0aGlzLmlzQ29tcGF0aWJpbGl0eSA9IGlzQ29tcGF0aWJpbGl0eTsKKyAgICAgICAgdGhpcy5pc0V4Y2x1ZGVkID0gaXNFeGNsdWRlZDsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgKiBKdXN0IGFjY2Vzc2libGUgZm9yIHRlc3RpbmcuCisgICAgKi8KKyAgICBib29sZWFuIGdldEV4Y2x1ZGVkIChjaGFyIGNoKSB7CisgICAgICAgIHJldHVybiBpc0V4Y2x1ZGVkLmdldChjaCk7CisgICAgfQorICAgCisgICAgLyoqCisgICAgKiBKdXN0IGFjY2Vzc2libGUgZm9yIHRlc3RpbmcuCisgICAgKi8KKyAgICBTdHJpbmcgZ2V0UmF3RGVjb21wb3NpdGlvbk1hcHBpbmcgKGNoYXIgY2gpIHsKKyAgICAgICAgcmV0dXJuIGRlY29tcG9zZS5nZXQoY2gpOworICAgIH0KKyAgIAorICAgIC8qKgorICAgICogRm9yIG5vdywganVzdCB1c2UgSW50SGFzaHRhYmxlCisgICAgKiBUd28tc3RhZ2UgdGFibGVzIHdvdWxkIGJlIHVzZWQgaW4gYW4gb3B0aW1pemVkIGltcGxlbWVudGF0aW9uLgorICAgICovCisgICAgcHJpdmF0ZSBJbnRIYXNodGFibGUgY2Fub25pY2FsQ2xhc3M7CisKKyAgICAvKioKKyAgICAqIFRoZSBtYWluIGRhdGEgdGFibGUgbWFwcyBjaGFycyB0byBhIDMyLWJpdCBpbnQuCisgICAgKiBJdCBob2xkcyBlaXRoZXIgYSBwYWlyOiB0b3AgPSBmaXJzdCwgYm90dG9tID0gc2Vjb25kCisgICAgKiBvciBzaW5nbGV0b246IHRvcCA9IDAsIGJvdHRvbSA9IHNpbmdsZS4KKyAgICAqIElmIHRoZXJlIGlzIG5vIGRlY29tcG9zaXRpb24sIHRoZSB2YWx1ZSBpcyAwLgorICAgICogVHdvLXN0YWdlIHRhYmxlcyB3b3VsZCBiZSB1c2VkIGluIGFuIG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbi4KKyAgICAqIEFuIG9wdGltaXphdGlvbiBjb3VsZCBhbHNvIG1hcCBjaGFycyB0byBhIHNtYWxsIGluZGV4LCB0aGVuIHVzZSB0aGF0CisgICAgKiBpbmRleCBpbiBhIHNtYWxsIGFycmF5IG9mIGludHMuCisgICAgKi8KKyAgICBwcml2YXRlIEludFN0cmluZ0hhc2h0YWJsZSBkZWNvbXBvc2U7CisgICAgCisgICAgLyoqCisgICAgKiBNYXBzIGZyb20gcGFpcnMgb2YgY2hhcmFjdGVycyB0byBzaW5nbGUuCisgICAgKiBJZiB0aGVyZSBpcyBubyBkZWNvbXBvc2l0aW9uLCB0aGUgdmFsdWUgaXMgTk9UX0NPTVBPU0lURS4KKyAgICAqLworICAgIHByaXZhdGUgTG9uZ0hhc2h0YWJsZSBjb21wb3NlOworICAgIAorICAgIC8qKgorICAgICogVGVsbHMgd2hldGhlciBkZWNvbXBvc2l0aW9uIGlzIGNhbm9uaWNhbCBvciBub3QuCisgICAgKi8KKyAgICBwcml2YXRlIEJpdFNldCBpc0NvbXBhdGliaWxpdHkgPSBuZXcgQml0U2V0KCk7CisgICAgCisgICAgLyoqCisgICAgKiBUZWxscyB3aGV0aGVyIGNoYXJhY3RlciBpcyBzY3JpcHQtZXhjbHVkZWQgb3Igbm90LgorICAgICogVXNlZCBvbmx5IHdoaWxlIGJ1aWxkaW5nLCBhbmQgZm9yIHRlc3RpbmcuCisgICAgKi8KKyAgICAKKyAgICBwcml2YXRlIEJpdFNldCBpc0V4Y2x1ZGVkID0gbmV3IEJpdFNldCgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9ub3JtYWxpemVyL1Rlc3RDYW5vbmljYWxJdGVyYXRvci5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L25vcm1hbGl6ZXIvVGVzdENhbm9uaWNhbEl0ZXJhdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZDgyZjlhMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9ub3JtYWxpemVyL1Rlc3RDYW5vbmljYWxJdGVyYXRvci5qYXZhCkBAIC0wLDAgKzEsMjYyIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3Qvbm9ybWFsaXplci9UZXN0Q2Fub25pY2FsSXRlcmF0b3IuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8xMi8xMSAyMzoyOToyOCAkIAorICogJFJldmlzaW9uOiAxLjExICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudGVzdC5ub3JtYWxpemVyOworCitpbXBvcnQgamF2YS50ZXh0LkNoYXJhY3Rlckl0ZXJhdG9yOworaW1wb3J0IGphdmEudGV4dC5TdHJpbmdDaGFyYWN0ZXJJdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYudGVzdC4qOworaW1wb3J0IGNvbS5pYm0uaWN1LmxhbmcuKjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0Lio7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5VdGlsaXR5OworCisvLyBUT0RPOiBmaXQgaW50byB0ZXN0IGZyYW1ld29yaworCitwdWJsaWMgY2xhc3MgVGVzdENhbm9uaWNhbEl0ZXJhdG9yIGV4dGVuZHMgVGVzdEZtd2sgeworCQorICAgIHN0YXRpYyBmaW5hbCBib29sZWFuIFNIT1dfTkFNRVMgPSBmYWxzZTsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBuZXcgVGVzdENhbm9uaWNhbEl0ZXJhdG9yKCkucnVuKGFyZ3MpOworICAgIH0KKwkKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIHRlc3RBcnJheVtdW10gPSB7CisgICAgICAgIHsiXHUwMEM1ZFx1MDMwN1x1MDMyNyIsICJBXHUwMzBBZFx1MDMwN1x1MDMyNywgQVx1MDMwQWRcdTAzMjdcdTAzMDcsIEFcdTAzMEFcdTFFMEJcdTAzMjcsICIKKyAgICAgICAgCSsgIkFcdTAzMEFcdTFFMTFcdTAzMDcsIFx1MDBDNWRcdTAzMDdcdTAzMjcsIFx1MDBDNWRcdTAzMjdcdTAzMDcsICIKKyAgICAgICAgCSsgIlx1MDBDNVx1MUUwQlx1MDMyNywgXHUwMEM1XHUxRTExXHUwMzA3LCBcdTIxMkJkXHUwMzA3XHUwMzI3LCAiCisgICAgICAgIAkrICJcdTIxMkJkXHUwMzI3XHUwMzA3LCBcdTIxMkJcdTFFMEJcdTAzMjcsIFx1MjEyQlx1MUUxMVx1MDMwNyJ9LAorICAgICAgICB7Ilx1MDEwZFx1MDE3RSIsICJjXHUwMzBDelx1MDMwQywgY1x1MDMwQ1x1MDE3RSwgXHUwMTBEelx1MDMwQywgXHUwMTBEXHUwMTdFIn0sCisgICAgICAgIHsieFx1MDMwN1x1MDMyNyIsICJ4XHUwMzA3XHUwMzI3LCB4XHUwMzI3XHUwMzA3LCBcdTFFOEJcdTAzMjcifSwKKyAgICB9OworICAgIAorICAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0RXhoYXVzdGl2ZSgpIHsKKyAgICAJaW50IGNvdW50ZXIgPSAwOworICAgIAlpbnQgbWl4ZWRDb3VudGVyID0gMDsKKyAgICAJaW50IGxhc3RNaXhlZENvdW50ZXIgPSAtMTsKKyAgICAJQ2Fub25pY2FsSXRlcmF0b3IgaXQgPSBuZXcgQ2Fub25pY2FsSXRlcmF0b3IoIiIpOworICAgIAkvKgorICAgIAlDYW5vbmljYWxJdGVyYXRvciBzbG93SXQgPSBuZXcgQ2Fub25pY2FsSXRlcmF0b3IoIiIpOworICAgIAlzbG93SXQuU0tJUF9aRVJPUyA9IGZhbHNlOworICAgIAkqLworICAgIAlUcmFuc2xpdGVyYXRvciBuYW1lID0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoIlteXFx1MDAyMC1cXHUwMDdGXSBuYW1lIik7CisgICAgCVNldCBpdFNldCA9IG5ldyBUcmVlU2V0KCk7CisgICAgCVNldCBzbG93SXRTZXQgPSBuZXcgVHJlZVNldCgpOworICAgIAkKKyAgICAJCisgICAgCWZvciAoaW50IGkgPSAwOyBpIDwgMHgxMEZGRkY7ICsraSkgeworICAgIAkJCisgICAgCQkvLyBza2lwIGNoYXJhY3RlcnMgd2Uga25vdyBkb24ndCBoYXZlIGRlY29tcHMKKyAgICAJCWludCB0eXBlID0gVUNoYXJhY3Rlci5nZXRUeXBlKGkpOworICAgIAkJaWYgKHR5cGUgPT0gQ2hhcmFjdGVyLlVOQVNTSUdORUQgfHwgdHlwZSA9PSBDaGFyYWN0ZXIuUFJJVkFURV9VU0UKKyAgICAJCQl8fCB0eXBlID09IENoYXJhY3Rlci5TVVJST0dBVEUpIGNvbnRpbnVlOworICAgIAkJCQorICAgIAkJaWYgKCgrK2NvdW50ZXIgJSA1MDAwKSA9PSAwKSBsb2dsbigiVGVzdGluZyAiICsgVXRpbGl0eS5oZXgoaSwwKSk7CisgICAgCQkKKyAgICAJCVN0cmluZyBzID0gVVRGMTYudmFsdWVPZihpKSArICJcdTAzNDUiOworICAgIAkJU3RyaW5nIGRlY29tcCA9IE5vcm1hbGl6ZXIuZGVjb21wb3NlKHMsIGZhbHNlKTsKKyAgICAJCVN0cmluZyBjb21wID0gTm9ybWFsaXplci5jb21wb3NlKHMsIGZhbHNlKTsKKyAgICAJCS8vIHNraXAgY2hhcmFjdGVycyB0aGF0IGRvbid0IGhhdmUgZWl0aGVyIGRlY29tcC4KKyAgICAJCS8vIG5lZWQgcXVpY2sgdGVzdCBmb3IgdGhpcyEKKyAgICAJCWlmIChzLmVxdWFscyhkZWNvbXApICYmIHMuZXF1YWxzKGNvbXApKSBjb250aW51ZTsKKyAgICAJCQorICAgIAkJaXQuc2V0U291cmNlKHMpOworICAgIAkJYm9vbGVhbiBnb3REZWNvbXAgPSBmYWxzZTsKKyAgICAJCWJvb2xlYW4gZ290Q29tcCA9IGZhbHNlOworICAgIAkJYm9vbGVhbiBnb3RTb3VyY2UgPSBmYWxzZTsKKyAgICAJCXdoaWxlICh0cnVlKSB7CisgICAgCQkJU3RyaW5nIGl0ZW0gPSBpdC5uZXh0KCk7CisgICAgCQkJaWYgKGl0ZW0gPT0gbnVsbCkgYnJlYWs7CisgICAgCQkJaWYgKGl0ZW0uZXF1YWxzKHMpKSBnb3RTb3VyY2UgPSB0cnVlOworICAgIAkJCWlmIChpdGVtLmVxdWFscyhkZWNvbXApKSBnb3REZWNvbXAgPSB0cnVlOworICAgIAkJCWlmIChpdGVtLmVxdWFscyhjb21wKSkgZ290Q29tcCA9IHRydWU7CisgICAgCQkJaWYgKChtaXhlZENvdW50ZXIgJiAweDdGKSA9PSAwICYmIChpIDwgMHhBRDAwIHx8IGkgPiAweEFDMDAgKyAxMTE3MikpIHsKKyAgICAJCQkJaWYgKGxhc3RNaXhlZENvdW50ZXIgIT0gbWl4ZWRDb3VudGVyKSB7CisgICAgCQkJCQlsb2dsbigiIik7CisgICAgCQkJCQlsYXN0TWl4ZWRDb3VudGVyID0gbWl4ZWRDb3VudGVyOworICAgIAkJCQl9CisgICAgICAgICAgICAgICAgICAgIGxvZ2xuKCJcdCIgKyBtaXhlZENvdW50ZXIgKyAiXHQiICsgbmFtZS50cmFuc2xpdGVyYXRlKGl0ZW0pCisgICAgICAgICAgICAgICAgICAgICsgKGl0ZW0uZXF1YWxzKHMpID8gIlx0KCpvcmlnaW5hbCopIiA6ICIiKQorICAgICAgICAgICAgICAgICAgICArIChpdGVtLmVxdWFscyhkZWNvbXApID8gIlx0KCpkZWNvbXAqKSIgOiAiIikKKyAgICAgICAgICAgICAgICAgICAgKyAoaXRlbS5lcXVhbHMoY29tcCkgPyAiXHQoKmNvbXAqKSIgOiAiIikKKyAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAJCQl9CisKKyAgICAJCX0KKyAgICAJCQorICAgIAkJLy8gY2hlY2sgdGhhdCB6ZXJvcyBvcHRpbWl6YXRpb24gZG9lc24ndCBtZXNzIHVwLgorICAgIAkJLyoKKyAgICAJCWlmICh0cnVlKSB7CisgICAgCQkJaXQucmVzZXQoKTsKKyAgICAJCQlpdFNldC5jbGVhcigpOworICAgIAkJCXdoaWxlICh0cnVlKSB7CisgICAgCQkJCVN0cmluZyBpdGVtID0gaXQubmV4dCgpOworICAgIAkJCQlpZiAoaXRlbSA9PSBudWxsKSBicmVhazsKKyAgICAJCQkJaXRTZXQuYWRkKGl0ZW0pOworICAgIAkJCX0KKyAgICAJCQlzbG93SXQuc2V0U291cmNlKHMpOworICAgIAkJCXNsb3dJdFNldC5jbGVhcigpOworICAgIAkJCXdoaWxlICh0cnVlKSB7CisgICAgCQkJCVN0cmluZyBpdGVtID0gc2xvd0l0Lm5leHQoKTsKKyAgICAJCQkJaWYgKGl0ZW0gPT0gbnVsbCkgYnJlYWs7CisgICAgCQkJCXNsb3dJdFNldC5hZGQoaXRlbSk7CisgICAgCQkJfQorICAgIAkJCWlmICghaXRTZXQuZXF1YWxzKHNsb3dJdFNldCkpIHsKKyAgICAJCQkJZXJybG4oIlplcm8gb3B0aW1pemF0aW9uIGZhaWx1cmUgd2l0aCAiICsgZ2V0UmVhZGFibGUocykpOworICAgIAkJCX0KKyAgICAJCX0KKyAgICAJCSovCisgICAgCQkKKyAgICAJCW1peGVkQ291bnRlcisrOworICAgIAkJaWYgKCFnb3RTb3VyY2UgfHwgIWdvdERlY29tcCB8fCAhZ290Q29tcCkgeworICAgIAkJCWVycmxuKCJGQUlMIENhbm9uaWNhbEl0ZXJhdG9yOiAiICsgcyArICIgZGVjb21wOiAiICtkZWNvbXArIiBjb21wOiAiK2NvbXApOworICAgICAgICAgICAgICAgIGl0LnJlc2V0KCk7CisgICAgICAgICAgICAgICAgZm9yKFN0cmluZyBpdGVtPWl0Lm5leHQoKTtpdGVtIT1udWxsO2l0ZW09aXQubmV4dCgpKXsKKyAgICAgICAgICAgICAgICAgICAgZXJyKGl0ZW0gKyAiICAgICIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlcnJsbigiIik7ICAgCisgICAgCQl9CisgICAgCX0KKyAgICB9CisgICAgCisgICAgcHVibGljIGludCBUZXN0U3BlZWQoKSB7CisgICAgICAgICAvLyBza2lwIHVubGVzcyB2ZXJib3NlCisgICAgICAgIGlmICghaXNWZXJib3NlKCkpIHJldHVybiAwOworCisgICAJCVN0cmluZyBzID0gIlx1QUMwMVx1MDM0NSI7CisgICAJCQorICAgIAlDYW5vbmljYWxJdGVyYXRvciBpdCA9IG5ldyBDYW5vbmljYWxJdGVyYXRvcihzKTsKKyAgICAJZG91YmxlIHN0YXJ0LCBlbmQ7CisgICAgCWludCB4ID0gMDsgLy8ganVzdCB0byBrZWVwIGNvZGUgZnJvbSBvcHRpbWl6aW5nIGF3YXkuCisgICAgCWludCBpdGVyYXRpb25zID0gMTAwMDA7CisgICAgCWRvdWJsZSBzbG93RGVsdGEgPSAwOworICAgIAkKKyAgICAJLyoKKyAgICAJQ2Fub25pY2FsSXRlcmF0b3Igc2xvd0l0ID0gbmV3IENhbm9uaWNhbEl0ZXJhdG9yKHMpOworICAgIAlzbG93SXQuU0tJUF9aRVJPUyA9IGZhbHNlOworCisgICAgCXN0YXJ0ID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgCWZvciAoaW50IGkgPSAwOyBpIDwgaXRlcmF0aW9uczsgKytpKSB7CisgICAgCQlzbG93SXQuc2V0U291cmNlKHMpOworICAgIAkJd2hpbGUgKHRydWUpIHsKKyAgICAJCQlTdHJpbmcgaXRlbSA9IHNsb3dJdC5uZXh0KCk7CisgICAgCQkJaWYgKGl0ZW0gPT0gbnVsbCkgYnJlYWs7CisgICAgCQkJeCArPSBpdGVtLmxlbmd0aCgpOworICAgIAkJfQorICAgIAl9CisgICAgCWVuZCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgIAlkb3VibGUgc2xvd0RlbHRhID0gKGVuZC1zdGFydCkgLyBpdGVyYXRpb25zOworICAgIAlsb2dsbigiU2xvdyBpdGVyYXRpb246ICIgKyBzbG93RGVsdGEpOworICAgIAkqLworCisgICAgCXN0YXJ0ID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgCWZvciAoaW50IGkgPSAwOyBpIDwgaXRlcmF0aW9uczsgKytpKSB7CisgICAgCQlpdC5zZXRTb3VyY2Uocyk7CisgICAgCQl3aGlsZSAodHJ1ZSkgeworICAgIAkJCVN0cmluZyBpdGVtID0gaXQubmV4dCgpOworICAgIAkJCWlmIChpdGVtID09IG51bGwpIGJyZWFrOworICAgIAkJCXggKz0gaXRlbS5sZW5ndGgoKTsKKyAgICAJCX0KKyAgICAJfQorICAgIAllbmQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAJZG91YmxlIGZhc3REZWx0YSA9IChlbmQtc3RhcnQpIC8gaXRlcmF0aW9uczsKKyAgICAJbG9nbG4oIkZhc3QgaXRlcmF0aW9uOiAiICsgZmFzdERlbHRhICsgKHNsb3dEZWx0YSAhPSAwID8gIiwgIiArIChmYXN0RGVsdGEvc2xvd0RlbHRhKSA6ICIiKSk7CisgICAgCQorICAgIAkKKyAgICAJcmV0dXJuIHg7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RCYXNpYygpIHsKKy8vICAgICAgVGhpcyBpcyBub3QgaW50ZXJlc3RpbmcgYW55bW9yZSBhcyB0aGUgZGF0YSBpcyBhbHJlYWR5IGJ1aWx0IAorLy8gICAgICBiZWZvcmVoYW5kCisKKy8vICAgICAgICBjaGVjayBidWlsZAorLy8gICAgICAgIFVuaWNvZGVTZXQgc3MgPSBDYW5vbmljYWxJdGVyYXRvci5nZXRTYWZlU3RhcnQoKTsKKy8vICAgICAgICBsb2dsbigiU2FmZSBTdGFydDogIiArIHNzLnRvUGF0dGVybih0cnVlKSk7CisvLyAgICAgICAgc3MgPSBDYW5vbmljYWxJdGVyYXRvci5nZXRTdGFydHMoJ2EnKTsKKy8vICAgICAgICBleHBlY3RFcXVhbCgiQ2hhcmFjdGVycyB3aXRoICdhJyBhdCB0aGUgc3RhcnQgb2YgdGhlaXIgZGVjb21wb3NpdGlvbjogIiwgIiIsIENhbm9uaWNhbEl0ZXJhdG9yLmdldFN0YXJ0cygnYScpLAorLy8gICAgICAgIAluZXcgVW5pY29kZVNldCgiW1x1MDBFMC1cdTAwRTVcdTAxMDFcdTAxMDNcdTAxMDVcdTAxQ0VcdTAxREZcdTAxRTFcdTAxRkIiCisvLyAgICAgICAgCSsgIlx1MDIwMVx1MDIwM1x1MDIyN1x1MUUwMVx1MUVBMVx1MUVBM1x1MUVBNVx1MUVBN1x1MUVBOVx1MUVBQlx1MUVBRFx1MUVBRlx1MUVCMVx1MUVCM1x1MUVCNVx1MUVCN10iKQorLy8gICAgICAgIAkJKTsKKyAgICAgICAgCisgICAgICAgIC8vIGNoZWNrIHBlcm11dGUKKyAgICAgICAgLy8gTk9URTogd2UgdXNlIGEgVHJlZVNldCBiZWxvdyB0byBzb3J0IHRoZSBvdXRwdXQsIHdoaWNoIGlzIG5vdCBndWFyYW50ZWVkIHRvIGJlIHNvcnRlZCEKKyAgICAgICAgCisgICAgICAgIFNldCByZXN1bHRzID0gbmV3IFRyZWVTZXQoKTsKKyAgICAgICAgQ2Fub25pY2FsSXRlcmF0b3IucGVybXV0ZSgiQUJDIiwgZmFsc2UsIHJlc3VsdHMpOworICAgICAgICBleHBlY3RFcXVhbCgiU2ltcGxlIHBlcm11dGF0aW9uICIsICIiLCBjb2xsZWN0aW9uVG9TdHJpbmcocmVzdWx0cyksICJBQkMsIEFDQiwgQkFDLCBCQ0EsIENBQiwgQ0JBIik7CisgICAgICAgIAorICAgICAgICAvLyB0cnkgc2FtcGxlcworICAgICAgICBTb3J0ZWRTZXQgc2V0ID0gbmV3IFRyZWVTZXQoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0ZXN0QXJyYXkubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIC8vbG9nbG4oIlJlc3VsdHMgZm9yOiAiICsgbmFtZS50cmFuc2xpdGVyYXRlKHRlc3RBcnJheVtpXSkpOworICAgICAgICAgICAgQ2Fub25pY2FsSXRlcmF0b3IgaXQgPSBuZXcgQ2Fub25pY2FsSXRlcmF0b3IodGVzdEFycmF5W2ldWzBdKTsKKyAgICAgICAgICAgIGludCBjb3VudGVyID0gMDsKKyAgICAgICAgICAgIHNldC5jbGVhcigpOworICAgICAgICAgICAgU3RyaW5nIGZpcnN0ID0gbnVsbDsKKyAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHJlc3VsdCA9IGl0Lm5leHQoKTsKKyAgICAgICAgICAgICAgICBpZihmaXJzdD09bnVsbCl7CisgICAgICAgICAgICAgICAgICAgIGZpcnN0ID0gcmVzdWx0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpIGJyZWFrOworICAgICAgICAgICAgICAgIHNldC5hZGQocmVzdWx0KTsgLy8gc29ydCB0aGVtCisgICAgICAgICAgICAgICAgLy9sb2dsbigrK2NvdW50ZXIgKyAiOiAiICsgaGV4LnRyYW5zbGl0ZXJhdGUocmVzdWx0KSk7CisgICAgICAgICAgICAgICAgLy9sb2dsbigiID0gIiArIG5hbWUudHJhbnNsaXRlcmF0ZShyZXN1bHQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGV4cGVjdEVxdWFsKGkgKyAiOiAiLCB0ZXN0QXJyYXlbaV1bMF0sIGNvbGxlY3Rpb25Ub1N0cmluZyhzZXQpLCB0ZXN0QXJyYXlbaV1bMV0pOworICAgICAgICAgICAgaXQucmVzZXQoKTsKKyAgICAgICAgICAgIGlmKCFpdC5uZXh0KCkuZXF1YWxzKGZpcnN0KSl7CisgICAgICAgICAgICAgICAgZXJybG4oIkNhbm9uaWNhbEl0ZXJhdG9yLnJlc2V0KCkgZmFpbGVkIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZighaXQuZ2V0U291cmNlKCkuZXF1YWxzKE5vcm1hbGl6ZXIubm9ybWFsaXplKHRlc3RBcnJheVtpXVswXSxOb3JtYWxpemVyLk5GRCkpKXsKKyAgICAgICAgICAgICAgICBlcnJsbigiQ2Fub25pY2FsSXRlcmF0b3IuZ2V0U291cmNlKCkgZG9lcyBub3QgcmV0dXJuIE5GRCBvZiBpbnB1dCBzb3VyY2UiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBleHBlY3RFcXVhbChTdHJpbmcgbWVzc2FnZSwgU3RyaW5nIGl0ZW0sIE9iamVjdCBhLCBPYmplY3QgYikgeworICAgIAlpZiAoIWEuZXF1YWxzKGIpKSB7CisgICAgCQllcnJsbigiRkFJTDogIiArIG1lc3NhZ2UgKyBnZXRSZWFkYWJsZShpdGVtKSk7CisgICAgCQllcnJsbigiXHQiICsgZ2V0UmVhZGFibGUoYSkpOworICAgIAkJZXJybG4oIlx0IiArIGdldFJlYWRhYmxlKGIpKTsKKyAgICAJfSBlbHNlIHsKKyAgICAJCWxvZ2xuKCJDaGVja2VkOiAiICsgbWVzc2FnZSArIGdldFJlYWRhYmxlKGl0ZW0pKTsKKyAgICAJCWxvZ2xuKCJcdCIgKyBnZXRSZWFkYWJsZShhKSk7CisgICAgCQlsb2dsbigiXHQiICsgZ2V0UmVhZGFibGUoYikpOworICAgIAl9CisgICAgfQorICAgIAorICAgIFRyYW5zbGl0ZXJhdG9yIG5hbWUgPSBudWxsOworICAgIFRyYW5zbGl0ZXJhdG9yIGhleCA9IG51bGw7CisgICAgICAgIAorICAgIHB1YmxpYyBTdHJpbmcgZ2V0UmVhZGFibGUoT2JqZWN0IG9iaikgeworICAgIAlpZiAob2JqID09IG51bGwpIHJldHVybiAibnVsbCI7CisgICAgCVN0cmluZyBzID0gb2JqLnRvU3RyaW5nKCk7CisgICAgCWlmIChzLmxlbmd0aCgpID09IDApIHJldHVybiAiIjsKKyAgICAgICAgLy8gc2V0IHVwIGZvciByZWFkYWJsZSBkaXNwbGF5CisgICAgICAgIGlmIChuYW1lID09IG51bGwpIG5hbWUgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgiW15cXCAtXFx1MDA3Rl0gbmFtZSIpOworICAgICAgICBpZiAoaGV4ID09IG51bGwpIGhleCA9IFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKCJbXlxcIC1cXHUwMDdGXSBoZXgiKTsKKyAgICAgICAgcmV0dXJuICJbIiArIChTSE9XX05BTUVTID8gbmFtZS50cmFuc2xpdGVyYXRlKHMpICsgIjsgIiA6ICIiKSArIGhleC50cmFuc2xpdGVyYXRlKHMpICsgIl0iOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgU3RyaW5nIGNvbGxlY3Rpb25Ub1N0cmluZyhDb2xsZWN0aW9uIGNvbCkgeworICAgICAgICBTdHJpbmdCdWZmZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBJdGVyYXRvciBpdCA9IGNvbC5pdGVyYXRvcigpOworICAgICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCgpICE9IDApIHJlc3VsdC5hcHBlbmQoIiwgIik7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGl0Lm5leHQoKS50b1N0cmluZygpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9ub3JtYWxpemVyL1VURjE2VXRpbC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L25vcm1hbGl6ZXIvVVRGMTZVdGlsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmMxMzIzMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9ub3JtYWxpemVyL1VURjE2VXRpbC5qYXZhCkBAIC0wLDAgKzEsMjIzIEBACisvKioKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogQ29weXJpZ2h0IChDKSAyMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9ub3JtYWxpemVyL0F0dGljL1VURjE2VXRpbC5qYXZhLHYgJCAKKyogJERhdGU6IDIwMDIvMTIvMTcgMDc6MzE6MjYgJCAKKyogJFJldmlzaW9uOiAxLjIgJAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3Qubm9ybWFsaXplcjsKKworLyoqCisgKiBVdGlsaXR5IGNsYXNzIGZvciBzdXBwbGVtZW50YXJ5IGNvZGUgcG9pbnQgCisgKiBzdXBwb3J0LiBUaGlzIG9uZSBpcyB3cml0dGVuIHB1cmVseSBmb3IgdXBkYXRpbmcKKyAqIE5vcm1hbGl6YXRpb24gc2FtcGxlIGZyb20gdGhlIHVuaWNvZGUub3JnIHNpdGUuCisgKiBJZiB5b3Ugd2FudCB0aGUgcmVhbCB0aGluZywgdXNlIFVURjE2IGNsYXNzCisgKiBmcm9tIElDVTRKCisgKiBAYXV0aG9yIFZsYWRpbWlyIFdlaW5zdGVpbiwgTWFya3VzIFNjaGVyZXIKKyAqLworcHVibGljIGNsYXNzIFVURjE2VXRpbCB7CisgICAgc3RhdGljIGZpbmFsIGludCBzdXBwT2Zmc2V0ID0gKDB4ZDgwMCA8PCAxMCkgKyAweGRjMDAgLSAweDEwMDAwOworCisJLyoqCisJICogTWV0aG9kIG5leHRDb2RlUG9pbnQuIFJldHVybnMgdGhlIG5leHQgY29kZSBwb2ludAorICAgICAqIGluIGEgc3RyaW5nLiAKKwkgKiBAcGFyYW0gcyBTdHJpbmcgaW4gcXVlc3Rpb24KKwkgKiBAcGFyYW0gaSBpbmRleCBmcm9tIHdoaWNoIHdlIHdhbnQgYSBjb2RlIHBvaW50CisJICogQHJldHVybiBpbnQgY29kZXBvaW50IGF0IGluZGV4IGkKKwkgKi8KKyAgICBzdGF0aWMgZmluYWwgcHVibGljIGludCBuZXh0Q29kZVBvaW50KFN0cmluZyBzLCBpbnQgaSkgeworICAgICAgICBpbnQgY2ggPSBzLmNoYXJBdChpKTsKKyAgICAgICAgaWYgKDB4ZDgwMCA8PSBjaCAmJiBjaCA8PSAweGRiZmYgJiYgKytpIDwgcy5sZW5ndGgoKSkgeworICAgICAgICAgICAgaW50IGNoMiA9IHMuY2hhckF0KGkpOworICAgICAgICAgICAgaWYgKDB4ZGMwMCA8PSBjaDIgJiYgY2gyIDw9IDB4ZGZmZikgeworICAgICAgICAgICAgICAgIGNoID0gKGNoIDw8IDEwKSArIGNoMiAtIHN1cHBPZmZzZXQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGNoOworICAgIH0KKworCS8qKgorCSAqIE1ldGhvZCBwcmV2Q29kZVBvaW50LiBHZXRzIHRoZSBjb2RlIHBvaW50IHByZWNlZGluZworICAgICAqIGluZGV4IGkgKHByZWRlY3JlbWVudCkuIAorCSAqIEBwYXJhbSBzIFN0cmluZyBpbiBxdWVzdGlvbgorCSAqIEBwYXJhbSBpIGluZGV4IGluIHN0cmluZworCSAqIEByZXR1cm4gaW50IGNvZGVwb2ludCBhdCBpbmRleCAtLWkKKwkgKi8KKyAgICBzdGF0aWMgZmluYWwgcHVibGljIGludCBwcmV2Q29kZVBvaW50KFN0cmluZyBzLCBpbnQgaSkgeworICAgICAgICBpbnQgY2ggPSBzLmNoYXJBdCgtLWkpOworICAgICAgICBpZiAoMHhkYzAwIDw9IGNoICYmIGNoIDw9IDB4ZGZmZiAmJiAtLWkgPj0gMCkgeworICAgICAgICAgICAgaW50IGNoMiA9IHMuY2hhckF0KGkpOworICAgICAgICAgICAgaWYgKDB4ZDgwMCA8PSBjaDIgJiYgY2gyIDw9IDB4ZGJmZikgeworICAgICAgICAgICAgICAgIGNoID0gKGNoMiA8PCAxMCkgKyBjaCAtIHN1cHBPZmZzZXQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGNoOworICAgIH0KKworCS8qKgorICAgICAqIE1ldGhvZCBuZXh0Q29kZVBvaW50LiBSZXR1cm5zIHRoZSBuZXh0IGNvZGUgcG9pbnQKKyAgICAgKiBpbiBhIHN0cmluZy4gCisgICAgICogQHBhcmFtIHMgU3RyaW5nQnVmZmVyIGluIHF1ZXN0aW9uCisgICAgICogQHBhcmFtIGkgaW5kZXggZnJvbSB3aGljaCB3ZSB3YW50IGEgY29kZSBwb2ludAorICAgICAqIEByZXR1cm4gaW50IGNvZGVwb2ludCBhdCBpbmRleCBpCisJICovCisgICAgc3RhdGljIGZpbmFsIHB1YmxpYyBpbnQgbmV4dENvZGVQb2ludChTdHJpbmdCdWZmZXIgcywgaW50IGkpIHsKKyAgICAgICAgaW50IGNoID0gcy5jaGFyQXQoaSk7CisgICAgICAgIGlmICgweGQ4MDAgPD0gY2ggJiYgY2ggPD0gMHhkYmZmICYmICsraSA8IHMubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIGludCBjaDIgPSBzLmNoYXJBdChpKTsKKyAgICAgICAgICAgIGlmICgweGRjMDAgPD0gY2gyICYmIGNoMiA8PSAweGRmZmYpIHsKKyAgICAgICAgICAgICAgICBjaCA9IChjaCA8PCAxMCkgKyBjaDIgLSBzdXBwT2Zmc2V0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBjaDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBNZXRob2QgcHJldkNvZGVQb2ludC4gR2V0cyB0aGUgY29kZSBwb2ludCBwcmVjZWRpbmcKKyAgICAgKiBpbmRleCBpIChwcmVkZWNyZW1lbnQpLiAKKyAgICAgKiBAcGFyYW0gcyBTdHJpbmdCdWZmZXIgaW4gcXVlc3Rpb24KKyAgICAgKiBAcGFyYW0gaSBpbmRleCBpbiBzdHJpbmcKKyAgICAgKiBAcmV0dXJuIGludCBjb2RlcG9pbnQgYXQgaW5kZXggLS1pCisgICAgICovCisgICAgc3RhdGljIGZpbmFsIHB1YmxpYyBpbnQgcHJldkNvZGVQb2ludChTdHJpbmdCdWZmZXIgcywgaW50IGkpIHsKKyAgICAgICAgaW50IGNoID0gcy5jaGFyQXQoLS1pKTsKKyAgICAgICAgaWYgKDB4ZGMwMCA8PSBjaCAmJiBjaCA8PSAweGRmZmYgJiYgLS1pID49IDApIHsKKyAgICAgICAgICAgIGludCBjaDIgPSBzLmNoYXJBdChpKTsKKyAgICAgICAgICAgIGlmICgweGQ4MDAgPD0gY2gyICYmIGNoMiA8PSAweGRiZmYpIHsKKyAgICAgICAgICAgICAgICBjaCA9IChjaDIgPDwgMTApICsgY2ggLSBzdXBwT2Zmc2V0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBjaDsKKyAgICB9CisKKwkvKioKKwkgKiBNZXRob2QgY29kZVBvaW50TGVuZ3RoLiBSZXR1cm5zIHRoZSBsZW5ndGggCisgICAgICogaW4gVVRGLTE2IGNvZGUgdW5pdHMgb2YgYSBnaXZlbiBjb2RlIHBvaW50CisJICogQHBhcmFtIGMgY29kZSBwb2ludCBpbiBxdWVzdGlvbgorCSAqIEByZXR1cm4gaW50IGxlbmd0aCBpbiBVVEYtMTYgY29kZSB1bml0cy4gQ2FuIGJlIDEgb3IgMgorCSAqLworICAgIHN0YXRpYyBmaW5hbCBwdWJsaWMgaW50IGNvZGVQb2ludExlbmd0aChpbnQgYykgeworICAgICAgICByZXR1cm4gYyA8PSAweGZmZmYgPyAxIDogMjsKKyAgICB9CisKKwkvKioKKwkgKiBNZXRob2QgYXBwZW5kQ29kZVBvaW50LiBBcHBlbmRzIGEgY29kZSBwb2ludAorICAgICAqIHRvIGEgU3RyaW5nQnVmZmVyCisJICogQHBhcmFtIGJ1ZmZlciBTdHJpbmdCdWZmZXIgaW4gcXVlc3Rpb24KKwkgKiBAcGFyYW0gY2ggY29kZSBwb2ludCB0byBhcHBlbmQKKwkgKi8KKyAgICBzdGF0aWMgZmluYWwgcHVibGljIHZvaWQgYXBwZW5kQ29kZVBvaW50KFN0cmluZ0J1ZmZlciBidWZmZXIsIGludCBjaCkgeworICAgICAgICBpZiAoY2ggPD0gMHhmZmZmKSB7CisgICAgICAgICAgICBidWZmZXIuYXBwZW5kKChjaGFyKWNoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoKGNoYXIpKDB4ZDdjMCArIChjaCA+PiAxMCkpKTsKKyAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoKGNoYXIpKDB4ZGMwMCArIChjaCAmIDB4M2ZmKSkpOyAKKyAgICAgICAgfQorICAgIH0KKworCS8qKgorCSAqIE1ldGhvZCBpbnNlcnRDb2RlUG9pbnQuIEluc2VydHMgYSBjb2RlIHBvaW50IGluCisgICAgICogYSBTdHJpbmdCdWZmZXIKKwkgKiBAcGFyYW0gYnVmZmVyIFN0cmluZ0J1ZmZlciBpbiBxdWVzdGlvbgorCSAqIEBwYXJhbSBpIGluZGV4IGF0IHdoaWNoIHdlIHdhbnQgY29kZSBwb2ludCB0byBiZSBpbnNlcnRlZAorCSAqIEBwYXJhbSBjaCBjb2RlIHBvaW50IHRvIGJlIGluc2VydGVkCisJICovCisgICAgc3RhdGljIGZpbmFsIHB1YmxpYyB2b2lkIGluc2VydENvZGVQb2ludChTdHJpbmdCdWZmZXIgYnVmZmVyLCBpbnQgaSwgaW50IGNoKSB7CisgICAgICAgIGlmIChjaCA8PSAweGZmZmYpIHsKKyAgICAgICAgICAgIGJ1ZmZlci5pbnNlcnQoaSwgKGNoYXIpY2gpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYnVmZmVyLmluc2VydChpLCAoY2hhcikoMHhkN2MwICsgKGNoID4+IDEwKSkpLmluc2VydChpICsgMSwgKGNoYXIpKDB4ZGMwMCArIChjaCAmIDB4M2ZmKSkpOyAKKyAgICAgICAgfQorICAgIH0KKyAgICAKKwkvKioKKwkgKiBNZXRob2Qgc2V0Q29kZVBvaW50QXQuIENoYW5nZXMgYSBjb2RlIHBvaW50IGF0IGEKKyAgICAgKiBnaXZlbiBpbmRleC4gQ2FuIGNoYW5nZSB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcuCisJICogQHBhcmFtIGJ1ZmZlciBTdHJpbmdCdWZmZXIgaW4gcXVlc3Rpb24KKwkgKiBAcGFyYW0gaSBpbmRleCBhdCB3aGljaCB3ZSB3YW50IHRvIGNoYW5nZSB0aGUgY29udGVudHMKKwkgKiBAcGFyYW0gY2ggcmVwbGFjZW1lbnQgY29kZSBwb2ludAorCSAqIEByZXR1cm4gaW50IGRpZmZlcmVuY2UgaW4gcmVzdWx0aW5nIFN0cmluZ0J1ZmZlciBsZW5ndGgKKwkgKi8KKyAgICBzdGF0aWMgZmluYWwgcHVibGljIGludCBzZXRDb2RlUG9pbnRBdChTdHJpbmdCdWZmZXIgYnVmZmVyLCBpbnQgaSwgaW50IGNoKSB7CisgICAgICAgIGludCBjcCA9IG5leHRDb2RlUG9pbnQoYnVmZmVyLCBpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChjaCA8PSAweGZmZmYgJiYgY3AgPD0gMHhmZmZmKSB7IC8vIEJvdGggQk1QCisgICAgICAgICAgICBidWZmZXIuc2V0Q2hhckF0KGksIChjaGFyKWNoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9IGVsc2UgaWYgKGNoID4gMHhmZmZmICYmIGNwID4gMHhmZmZmKSB7IC8vIEJvdGggc3VwcGxlbWVudGFyeQorICAgICAgICAgICAgYnVmZmVyLnNldENoYXJBdChpLCAoY2hhcikoMHhkN2MwICsgKGNoID4+IDEwKSkpOworICAgICAgICAgICAgYnVmZmVyLnNldENoYXJBdChpKzEsIChjaGFyKSgweGRjMDAgKyAoY2ggJiAweDNmZikpKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9IGVsc2UgaWYgKGNoIDw9IDB4ZmZmZiAmJiBjcCA+IDB4ZmZmZikgeyAvLyBwdXR0aW5nIEJNUCBpbnN0ZWFkIG9mIHN1cHBsZW1lbnRhcnksIGJ1ZmZlciBzaHJpbmtzCisgICAgICAgICAgICBidWZmZXIuc2V0Q2hhckF0KGksIChjaGFyKWNoKTsKKyAgICAgICAgICAgIGJ1ZmZlci5kZWxldGVDaGFyQXQoaSsxKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfSBlbHNlIHsgLy9pZiAoY2ggPiAweGZmZmYgJiYgY3AgPD0gMHhmZmZmKSB7IC8vIHB1dHRpbmcgc3VwcGxlbWVudGFyeSBpbnN0ZWFkIG9mIEJNUCwgYnVmZmVyIGdyb3dzCisgICAgICAgICAgICBidWZmZXIuc2V0Q2hhckF0KGksIChjaGFyKSgweGQ3YzAgKyAoY2ggPj4gMTApKSk7CisgICAgICAgICAgICBidWZmZXIuaW5zZXJ0KGkrMSwgKGNoYXIpKDB4ZGMwMCArIChjaCAmIDB4M2ZmKSkpOyAKKyAgICAgICAgICAgIHJldHVybiAxOyAgICAgICAgICAgCisgICAgICAgIH0KKyAgICB9CisKKwkvKioKKwkgKiBNZXRob2QgY291bnRDb2RlUG9pbnQuIENvdW50cyB0aGUgVVRGLTMyIGNvZGUgcG9pbnRzCisgICAgICogaW4gYSBVVEYtMTYgZW5jb2RlZCBzdHJpbmcuCisJICogQHBhcmFtIHNvdXJjZSBTdHJpbmcgaW4gcXVlc3Rpb24uCisJICogQHJldHVybiBpbnQgbnVtYmVyIG9mIGNvZGUgcG9pbnRzIGluIHRoaXMgc3RyaW5nCisJICovCisgICAgc3RhdGljIGZpbmFsIHB1YmxpYyBpbnQgY291bnRDb2RlUG9pbnQoU3RyaW5nIHNvdXJjZSkgCisgICAgeyAgICAgICAgIAorICAgICAgICBpbnQgcmVzdWx0ID0gMDsKKyAgICAgICAgY2hhciBjaDsKKyAgICAgICAgYm9vbGVhbiBoYWRMZWFkU3Vycm9nYXRlID0gZmFsc2U7CisgICAgICAgIAorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNvdXJjZS5sZW5ndGgoKTsgKysgaSkgCisgICAgICAgIHsKKyAgICAgICAgICAgIGNoID0gc291cmNlLmNoYXJBdChpKTsKKyAgICAgICAgICAgIGlmIChoYWRMZWFkU3Vycm9nYXRlICYmIDB4ZGMwMCA8PSBjaCAmJiBjaCA8PSAweGRmZmYpIHsKKyAgICAgICAgICAgICAgICBoYWRMZWFkU3Vycm9nYXRlID0gZmFsc2U7ICAgICAgICAgICAvLyBjb3VudCB2YWxpZCB0cmFpbCBhcyB6ZXJvCisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaGFkTGVhZFN1cnJvZ2F0ZSA9ICgweGQ4MDAgPD0gY2ggJiYgY2ggPD0gMHhkYmZmKTsKKyAgICAgICAgICAgICAgICArKyByZXN1bHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb3VudCBvdGhlcnMgYXMgMQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBNZXRob2QgY291bnRDb2RlUG9pbnQuIENvdW50cyB0aGUgVVRGLTMyIGNvZGUgcG9pbnRzCisgICAgICogaW4gYSBVVEYtMTYgZW5jb2RlZCBzdHJpbmcuCisgICAgICogQHBhcmFtIHNvdXJjZSBTdHJpbmdCdWZmZXIgaW4gcXVlc3Rpb24uCisgICAgICogQHJldHVybiBpbnQgbnVtYmVyIG9mIGNvZGUgcG9pbnRzIGluIHRoaXMgc3RyaW5nCisgICAgICovCisgICAgc3RhdGljIGZpbmFsIHB1YmxpYyBpbnQgY291bnRDb2RlUG9pbnQoU3RyaW5nQnVmZmVyIHNvdXJjZSkgCisgICAgeyAgICAgICAgIAorICAgICAgICBpbnQgcmVzdWx0ID0gMDsKKyAgICAgICAgY2hhciBjaDsKKyAgICAgICAgYm9vbGVhbiBoYWRMZWFkU3Vycm9nYXRlID0gZmFsc2U7CisgICAgICAgIAorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNvdXJjZS5sZW5ndGgoKTsgKysgaSkgCisgICAgICAgIHsKKyAgICAgICAgICAgIGNoID0gc291cmNlLmNoYXJBdChpKTsKKyAgICAgICAgICAgIGlmIChoYWRMZWFkU3Vycm9nYXRlICYmIDB4ZGMwMCA8PSBjaCAmJiBjaCA8PSAweGRmZmYpIHsKKyAgICAgICAgICAgICAgICBoYWRMZWFkU3Vycm9nYXRlID0gZmFsc2U7ICAgICAgICAgICAvLyBjb3VudCB2YWxpZCB0cmFpbCBhcyB6ZXJvCisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaGFkTGVhZFN1cnJvZ2F0ZSA9ICgweGQ4MDAgPD0gY2ggJiYgY2ggPD0gMHhkYmZmKTsKKyAgICAgICAgICAgICAgICArKyByZXN1bHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb3VudCBvdGhlcnMgYXMgMQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L25vcm1hbGl6ZXIvVW5pY29kZU5vcm1hbGl6ZXIuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9ub3JtYWxpemVyL1VuaWNvZGVOb3JtYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmE4OWI0ZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9ub3JtYWxpemVyL1VuaWNvZGVOb3JtYWxpemVyLmphdmEKQEAgLTAsMCArMSwxODIgQEAKKy8qKgorICogSW1wbGVtZW50cyBVbmljb2RlIE5vcm1hbGl6YXRpb24gRm9ybXMgQywgRCwgS0MsIEtELjxicj4KKyAqIFNlZSBVVFIjMTUgZm9yIGRldGFpbHMuPGJyPgorICogQ29weXJpZ2h0IKkgMTk5OC0yMDAyIFVuaWNvZGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC48YnI+CisgKiBUaGUgVW5pY29kZSBDb25zb3J0aXVtIG1ha2VzIG5vIGV4cHJlc3NlZCBvciBpbXBsaWVkIHdhcnJhbnR5IG9mIGFueQorICoga2luZCwgYW5kIGFzc3VtZXMgbm8gbGlhYmlsaXR5IGZvciBlcnJvcnMgb3Igb21pc3Npb25zLgorICogTm8gbGlhYmlsaXR5IGlzIGFzc3VtZWQgZm9yIGluY2lkZW50YWwgYW5kIGNvbnNlcXVlbnRpYWwgZGFtYWdlcworICogaW4gY29ubmVjdGlvbiB3aXRoIG9yIGFyaXNpbmcgb3V0IG9mIHRoZSB1c2Ugb2YgdGhlIGluZm9ybWF0aW9uIGhlcmUuCisgKiBAYXV0aG9yIE1hcmsgRGF2aXMKKyAqIFVwZGF0ZXMgZm9yIHN1cHBsZW1lbnRhcnkgY29kZSBwb2ludHM6IAorICogVmxhZGltaXIgV2VpbnN0ZWluICYgTWFya3VzIFNjaGVyZXIKKyAqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0Lm5vcm1hbGl6ZXI7CisKK3B1YmxpYyBjbGFzcyBVbmljb2RlTm9ybWFsaXplciB7CisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHQgPSAiQ29weXJpZ2h0IKkgMTk5OC0xOTk5IFVuaWNvZGUsIEluYy4iOworICAgIAorICAgIC8qKgorICAgICAqIENyZWF0ZSBhIG5vcm1hbGl6ZXIgZm9yIGEgZ2l2ZW4gZm9ybS4KKyAgICAgKi8KKyAgICBwdWJsaWMgVW5pY29kZU5vcm1hbGl6ZXIoYnl0ZSBmb3JtLCBib29sZWFuIGZ1bGxEYXRhKSB7CisgICAgICAgIHRoaXMuZm9ybSA9IGZvcm07CisgICAgICAgIGlmIChkYXRhID09IG51bGwpIGRhdGEgPSBOb3JtYWxpemVyQnVpbGRlci5idWlsZChmdWxsRGF0YSk7IC8vIGxvYWQgMXN0IHRpbWUKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgKiBNYXNrcyBmb3IgdGhlIGZvcm0gc2VsZWN0b3IKKyAgICAqLworICAgIHN0YXRpYyBmaW5hbCBieXRlIAorICAgICAgICBDT01QQVRJQklMSVRZX01BU0sgPSAxLAorICAgICAgICBDT01QT1NJVElPTl9NQVNLID0gMjsKKyAgICAgICAgCisgICAgLyoqCisgICAgKiBOb3JtYWxpemF0aW9uIEZvcm0gU2VsZWN0b3IKKyAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgYnl0ZSAKKyAgICAgICAgRCA9IDAgLCAKKyAgICAgICAgQyA9IENPTVBPU0lUSU9OX01BU0ssCisgICAgICAgIEtEID0gQ09NUEFUSUJJTElUWV9NQVNLLAorICAgICAgICBLQyA9IChieXRlKShDT01QQVRJQklMSVRZX01BU0sgKyBDT01QT1NJVElPTl9NQVNLKTsKKyAgICAKKyAgICAvKioKKyAgICAqIE5vcm1hbGl6ZXMgdGV4dCBhY2NvcmRpbmcgdG8gdGhlIGNob3NlbiBmb3JtLCAKKyAgICAqIHJlcGxhY2luZyBjb250ZW50cyBvZiB0aGUgdGFyZ2V0IGJ1ZmZlci4KKyAgICAqIEBwYXJhbSAgIHNvdXJjZSAgICAgIHRoZSBvcmlnaW5hbCB0ZXh0LCB1bm5vcm1hbGl6ZWQKKyAgICAqIEBwYXJhbSAgIHRhcmdldCAgICAgIHRoZSByZXN1bHRpbmcgbm9ybWFsaXplZCB0ZXh0CisgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nQnVmZmVyIG5vcm1hbGl6ZShTdHJpbmcgc291cmNlLCBTdHJpbmdCdWZmZXIgdGFyZ2V0KSB7CisgICAgICAgIAorICAgICAgICAvLyBGaXJzdCBkZWNvbXBvc2UgdGhlIHNvdXJjZSBpbnRvIHRhcmdldCwKKyAgICAgICAgLy8gdGhlbiBjb21wb3NlIGlmIHRoZSBmb3JtIHJlcXVpcmVzLgorICAgICAgICAKKyAgICAgICAgaWYgKHNvdXJjZS5sZW5ndGgoKSAhPSAwKSB7CisgICAgICAgICAgICBpbnRlcm5hbERlY29tcG9zZShzb3VyY2UsIHRhcmdldCk7CisgICAgICAgICAgICBpZiAoKGZvcm0gJiBDT01QT1NJVElPTl9NQVNLKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgaW50ZXJuYWxDb21wb3NlKHRhcmdldCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRhcmdldDsKKyAgICB9CisKKyAgICAvKioKKyAgICAqIE5vcm1hbGl6ZXMgdGV4dCBhY2NvcmRpbmcgdG8gdGhlIGNob3NlbiBmb3JtCisgICAgKiBAcGFyYW0gICBzb3VyY2UgICAgICB0aGUgb3JpZ2luYWwgdGV4dCwgdW5ub3JtYWxpemVkCisgICAgKiBAcmV0dXJuICB0YXJnZXQgICAgICB0aGUgcmVzdWx0aW5nIG5vcm1hbGl6ZWQgdGV4dAorICAgICovCisgICAgcHVibGljIFN0cmluZyBub3JtYWxpemUoU3RyaW5nIHNvdXJjZSkgeworICAgICAgICByZXR1cm4gbm9ybWFsaXplKHNvdXJjZSwgbmV3IFN0cmluZ0J1ZmZlcigpKS50b1N0cmluZygpOworICAgIH0KKyAgICAgICAgCisgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyAgICAgICAgICAgICAgICAgIFBSSVZBVEVTCisgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAKKyAgICAvKioKKyAgICAgKiBUaGUgY3VycmVudCBmb3JtLgorICAgICAqLworICAgIHByaXZhdGUgYnl0ZSBmb3JtOworCisgICAgLyoqCisgICAgKiBEZWNvbXBvc2VzIHRleHQsIGVpdGhlciBjYW5vbmljYWwgb3IgY29tcGF0aWJpbGl0eSwKKyAgICAqIHJlcGxhY2luZyBjb250ZW50cyBvZiB0aGUgdGFyZ2V0IGJ1ZmZlci4KKyAgICAqIEBwYXJhbSAgIGZvcm0gICAgICAgIHRoZSBub3JtYWxpemF0aW9uIGZvcm0uIElmIENPTVBBVElCSUxJVFlfTUFTSworICAgICogICAgICAgICAgICAgICAgICAgICAgYml0IGlzIG9uIGluIHRoaXMgYnl0ZSwgdGhlbiBzZWxlY3RzIHRoZSByZWN1cnNpdmUgCisgICAgKiAgICAgICAgICAgICAgICAgICAgICBjb21wYXRpYmlsaXR5IGRlY29tcG9zaXRpb24sIG90aGVyd2lzZSBzZWxlY3RzCisgICAgKiAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVjdXJzaXZlIGNhbm9uaWNhbCBkZWNvbXBvc2l0aW9uLgorICAgICogQHBhcmFtICAgc291cmNlICAgICAgdGhlIG9yaWdpbmFsIHRleHQsIHVubm9ybWFsaXplZAorICAgICogQHBhcmFtICAgdGFyZ2V0ICAgICAgdGhlIHJlc3VsdGluZyBub3JtYWxpemVkIHRleHQKKyAgICAqLworICAgIHByaXZhdGUgdm9pZCBpbnRlcm5hbERlY29tcG9zZShTdHJpbmcgc291cmNlLCBTdHJpbmdCdWZmZXIgdGFyZ2V0KSB7CisgICAgICAgIFN0cmluZ0J1ZmZlciBidWZmZXIgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIGJvb2xlYW4gY2Fub25pY2FsID0gKGZvcm0gJiBDT01QQVRJQklMSVRZX01BU0spID09IDA7CisgICAgICAgIGludCBjaDsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzb3VyY2UubGVuZ3RoKCk7KSB7CisgICAgICAgICAgICBidWZmZXIuc2V0TGVuZ3RoKDApOworICAgICAgICAgICAgY2ggPSBVVEYxNlV0aWwubmV4dENvZGVQb2ludChzb3VyY2UsIGkpOworICAgICAgICAgICAgaSs9VVRGMTZVdGlsLmNvZGVQb2ludExlbmd0aChjaCk7CisgICAgICAgICAgICBkYXRhLmdldFJlY3Vyc2l2ZURlY29tcG9zaXRpb24oY2Fub25pY2FsLCBjaCwgYnVmZmVyKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gYWRkIGFsbCBvZiB0aGUgY2hhcmFjdGVycyBpbiB0aGUgZGVjb21wb3NpdGlvbi4KKyAgICAgICAgICAgIC8vIChtYXkgYmUganVzdCB0aGUgb3JpZ2luYWwgY2hhcmFjdGVyLCBpZiB0aGVyZSB3YXMKKyAgICAgICAgICAgIC8vIG5vIGRlY29tcG9zaXRpb24gbWFwcGluZykKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBidWZmZXIubGVuZ3RoKCk7KSB7CisgICAgICAgICAgICAgICAgY2ggPSBVVEYxNlV0aWwubmV4dENvZGVQb2ludChidWZmZXIsIGopOworICAgICAgICAgICAgICAgIGorPVVURjE2VXRpbC5jb2RlUG9pbnRMZW5ndGgoY2gpOworICAgICAgICAgICAgICAgIGludCBjaENsYXNzID0gZGF0YS5nZXRDYW5vbmljYWxDbGFzcyhjaCk7CisgICAgICAgICAgICAgICAgaW50IGsgPSB0YXJnZXQubGVuZ3RoKCk7IC8vIGluc2VydGlvbiBwb2ludAorICAgICAgICAgICAgICAgIGlmIChjaENsYXNzICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC8vIGJ1YmJsZS1zb3J0IGNvbWJpbmluZyBtYXJrcyBhcyBuZWNlc3NhcnkKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGludCBjaDI7CisgICAgICAgICAgICAgICAgICAgIGZvciAoOyBrID4gMDsgayAtPSBVVEYxNlV0aWwuY29kZVBvaW50TGVuZ3RoKGNoMikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoMiA9IFVURjE2VXRpbC5wcmV2Q29kZVBvaW50KHRhcmdldCwgayk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5nZXRDYW5vbmljYWxDbGFzcyhjaDIpIDw9IGNoQ2xhc3MpIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFVURjE2VXRpbC5pbnNlcnRDb2RlUG9pbnQodGFyZ2V0LCBrLCBjaCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAqIENvbXBvc2VzIHRleHQgaW4gcGxhY2UuIFRhcmdldCBtdXN0IGFscmVhZHkKKyAgICAqIGhhdmUgYmVlbiBkZWNvbXBvc2VkLgorICAgICogQHBhcmFtICAgdGFyZ2V0ICAgICAgaW5wdXQ6IGRlY29tcG9zZWQgdGV4dC4KKyAgICAqICAgICAgICAgICAgICAgICAgICAgIG91dHB1dDogdGhlIHJlc3VsdGluZyBub3JtYWxpemVkIHRleHQuCisgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgaW50ZXJuYWxDb21wb3NlKFN0cmluZ0J1ZmZlciB0YXJnZXQpIHsKKyAgICAgICAgCisgICAgICAgIGludCBzdGFydGVyUG9zID0gMDsKKyAgICAgICAgaW50IHN0YXJ0ZXJDaCA9IFVURjE2VXRpbC5uZXh0Q29kZVBvaW50KHRhcmdldCwwKTsKKyAgICAgICAgaW50IGNvbXBQb3MgPSBVVEYxNlV0aWwuY29kZVBvaW50TGVuZ3RoKHN0YXJ0ZXJDaCk7CisgICAgICAgIGludCBsYXN0Q2xhc3MgPSBkYXRhLmdldENhbm9uaWNhbENsYXNzKHN0YXJ0ZXJDaCk7CisgICAgICAgIGlmIChsYXN0Q2xhc3MgIT0gMCkgbGFzdENsYXNzID0gMjU2OyAvLyBmaXggZm9yIGlycmVndWxhciBjb21iaW5pbmcgc2VxdWVuY2UKKyAgICAgICAgCisgICAgICAgIC8vIExvb3Agb24gdGhlIGRlY29tcG9zZWQgY2hhcmFjdGVycywgY29tYmluaW5nIHdoZXJlIHBvc3NpYmxlCisgICAgICAgIAorICAgICAgICBmb3IgKGludCBkZWNvbXBQb3MgPSBVVEYxNlV0aWwuY29kZVBvaW50TGVuZ3RoKHN0YXJ0ZXJDaCk7IGRlY29tcFBvcyA8IHRhcmdldC5sZW5ndGgoKTsgKSB7CisgICAgICAgICAgICBpbnQgY2ggPSBVVEYxNlV0aWwubmV4dENvZGVQb2ludCh0YXJnZXQsIGRlY29tcFBvcyk7CisgICAgICAgICAgICBkZWNvbXBQb3MgKz0gVVRGMTZVdGlsLmNvZGVQb2ludExlbmd0aChjaCk7CisgICAgICAgICAgICBpbnQgY2hDbGFzcyA9IGRhdGEuZ2V0Q2Fub25pY2FsQ2xhc3MoY2gpOworICAgICAgICAgICAgaW50IGNvbXBvc2l0ZSA9IGRhdGEuZ2V0UGFpcndpc2VDb21wb3NpdGlvbihzdGFydGVyQ2gsIGNoKTsKKyAgICAgICAgICAgIGlmIChjb21wb3NpdGUgIT0gZGF0YS5OT1RfQ09NUE9TSVRFCisgICAgICAgICAgICAmJiAobGFzdENsYXNzIDwgY2hDbGFzcyB8fCBsYXN0Q2xhc3MgPT0gMCkpIHsKKyAgICAgICAgICAgICAgICBVVEYxNlV0aWwuc2V0Q29kZVBvaW50QXQodGFyZ2V0LCBzdGFydGVyUG9zLCBjb21wb3NpdGUpOworICAgICAgICAgICAgICAgIHN0YXJ0ZXJDaCA9IGNvbXBvc2l0ZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGNoQ2xhc3MgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICBzdGFydGVyUG9zID0gY29tcFBvczsKKyAgICAgICAgICAgICAgICAgICAgc3RhcnRlckNoICA9IGNoOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBsYXN0Q2xhc3MgPSBjaENsYXNzOworICAgICAgICAgICAgICAgIGRlY29tcFBvcyArPSBVVEYxNlV0aWwuc2V0Q29kZVBvaW50QXQodGFyZ2V0LCBjb21wUG9zLCBjaCk7CisgICAgICAgICAgICAgICAgY29tcFBvcyArPSBVVEYxNlV0aWwuY29kZVBvaW50TGVuZ3RoKGNoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICB0YXJnZXQuc2V0TGVuZ3RoKGNvbXBQb3MpOworICAgIH0KKworICAgIC8qKgorICAgICogQ29udGFpbnMgbm9ybWFsaXphdGlvbiBkYXRhIGZyb20gdGhlIFVuaWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNlLgorICAgICogdXNlIGZhbHNlIGZvciB0aGUgbWluaW1hbCBzZXQsIHRydWUgZm9yIHRoZSByZWFsIHNldC4gIAorICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgTm9ybWFsaXplckRhdGEgZGF0YSA9IG51bGw7CisgICAgCisgICAgLyoqCisgICAgKiBKdXN0IGFjY2Vzc2libGUgZm9yIHRlc3RpbmcuCisgICAgKi8KKyAgICBib29sZWFuIGdldEV4Y2x1ZGVkIChjaGFyIGNoKSB7CisgICAgICAgIHJldHVybiBkYXRhLmdldEV4Y2x1ZGVkKGNoKTsKKyAgICB9CisgICAKKyAgICAvKioKKyAgICAqIEp1c3QgYWNjZXNzaWJsZSBmb3IgdGVzdGluZy4KKyAgICAqLworICAgIFN0cmluZyBnZXRSYXdEZWNvbXBvc2l0aW9uTWFwcGluZyAoY2hhciBjaCkgeworICAgICAgICByZXR1cm4gZGF0YS5nZXRSYXdEZWNvbXBvc2l0aW9uTWFwcGluZyhjaCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9ub3JtYWxpemVyL1VuaWNvZGVOb3JtYWxpemVyQ29uZm9ybWFuY2VUZXN0LmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3Qvbm9ybWFsaXplci9Vbmljb2RlTm9ybWFsaXplckNvbmZvcm1hbmNlVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwYzFmMjUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3Qvbm9ybWFsaXplci9Vbmljb2RlTm9ybWFsaXplckNvbmZvcm1hbmNlVGVzdC5qYXZhCkBAIC0wLDAgKzEsMjcxIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3Qvbm9ybWFsaXplci9Vbmljb2RlTm9ybWFsaXplckNvbmZvcm1hbmNlVGVzdC5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzEyLzA5IDIyOjUwOjQwICQgCisgKiAkUmV2aXNpb246IDEuMSAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudGVzdC5ub3JtYWxpemVyOworCitpbXBvcnQgY29tLmlibS5pY3UuZGV2LnRlc3QuVGVzdFV0aWw7CitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGNvbS5pYm0uaWN1LmRldi50ZXN0Lio7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC4qOworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuVXRpbGl0eTsKKworcHVibGljIGNsYXNzIFVuaWNvZGVOb3JtYWxpemVyQ29uZm9ybWFuY2VUZXN0IGV4dGVuZHMgVGVzdEZtd2sgeworCisgICAgVW5pY29kZU5vcm1hbGl6ZXIgbm9ybWFsaXplcl9DLCBub3JtYWxpemVyX0QsIG5vcm1hbGl6ZXJfS0MsIG5vcm1hbGl6ZXJfS0Q7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgbmV3IFVuaWNvZGVOb3JtYWxpemVyQ29uZm9ybWFuY2VUZXN0KCkucnVuKGFyZ3MpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgVW5pY29kZU5vcm1hbGl6ZXJDb25mb3JtYW5jZVRlc3QoKSB7CisgICAgICAgIC8vIERvZXNuJ3QgbWF0dGVyIHdoYXQgdGhlIHN0cmluZyBhbmQgbW9kZSBhcmU7IHdlJ2xsIGNoYW5nZQorICAgICAgICAvLyB0aGVtIGxhdGVyIGFzIG5lZWRlZC4KKyAgICAgICAgbm9ybWFsaXplcl9DID0gbmV3IFVuaWNvZGVOb3JtYWxpemVyKFVuaWNvZGVOb3JtYWxpemVyLkMsIHRydWUpOworICAgICAgICBub3JtYWxpemVyX0QgPSBuZXcgVW5pY29kZU5vcm1hbGl6ZXIoVW5pY29kZU5vcm1hbGl6ZXIuRCwgZmFsc2UpOworICAgICAgICBub3JtYWxpemVyX0tDID0gbmV3IFVuaWNvZGVOb3JtYWxpemVyKFVuaWNvZGVOb3JtYWxpemVyLktDLCBmYWxzZSk7CisgICAgICAgIG5vcm1hbGl6ZXJfS0QgPSBuZXcgVW5pY29kZU5vcm1hbGl6ZXIoVW5pY29kZU5vcm1hbGl6ZXIuS0QsIGZhbHNlKTsKKyAgICAgICAgCisgICAgfQorICAgIC8vIG1vcmUgaW50ZXJlc3RpbmcgY29uZm9ybWFuY2UgdGVzdCBjYXNlcywgbm90IGluIHRoZSB1bmljb2RlLm9yZyBOb3JtYWxpemF0aW9uVGVzdC50eHQKKwlzdGF0aWMgIFN0cmluZ1tdIG1vcmVDYXNlcyA9eworCSAgICAvLyBNYXJrdXMgMjAwMWF1ZzMwCisJICAgICIwMDYxIDAzMzIgMDMwODswMEU0IDAzMzI7MDA2MSAwMzMyIDAzMDg7MDBFNCAwMzMyOzAwNjEgMDMzMiAwMzA4OyAjIE1hcmt1cyAwIiwKKwkKKwkgICAgLy8gTWFya3VzIDIwMDFvY3QyNiAtIHRlc3QgZWRnZSBjYXNlIGZvciBpdGVyYXRpb246IFUrMGY3My5jYz09MCBidXQgZGVjb21wb3NpdGlvbi5sZWFkLmNjPT0xMjkKKwkgICAgIjAwNjEgMDMwMSAwRjczOzAwRTEgMEY3MSAwRjcyOzAwNjEgMEY3MSAwRjcyIDAzMDE7MDBFMSAwRjcxIDBGNzI7MDA2MSAwRjcxIDBGNzIgMDMwMTsgIyBNYXJrdXMgMSIKKwl9OworCisgICAgLyoqCisgICAgICogVGVzdCB0aGUgY29uZm9ybWFuY2Ugb2YgTmV3Tm9ybWFsaXplciB0bworICAgICAqIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvdW5pY29kZS9yZXBvcnRzL3RyMTUvY29uZm9ybWFuY2UvRHJhZnQtVGVzdFN1aXRlLnR4dC4KKyAgICAgKiBUaGlzIGZpbGUgbXVzdCBiZSBsb2NhdGVkIGF0IHRoZSBwYXRoIHNwZWNpZmllZCBhcyBURVNUX1NVSVRFX0ZJTEUuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdENvbmZvcm1hbmNlKCkgdGhyb3dzIEV4Y2VwdGlvbnsKKyAgICAgICAgQnVmZmVyZWRSZWFkZXIgaW5wdXQgPSBudWxsOworICAgICAgICBTdHJpbmcgbGluZSA9IG51bGw7CisgICAgICAgIFN0cmluZ1tdIGZpZWxkcyA9IG5ldyBTdHJpbmdbNV07CisgICAgICAgIFN0cmluZ0J1ZmZlciBidWYgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIGludCBwYXNzQ291bnQgPSAwOworICAgICAgICBpbnQgZmFpbENvdW50ID0gMDsKKyAgICAgICAgVW5pY29kZVNldCBvdGhlciA9IG5ldyBVbmljb2RlU2V0KDAsIDB4MTBmZmZmKTsKKyAgICAgICAgaW50IGM9MDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGlucHV0ID0gVGVzdFV0aWwuZ2V0RGF0YVJlYWRlcigidW5pY29kZS9Ob3JtYWxpemF0aW9uVGVzdC50eHQiKTsKKyAgICAgICAgICAgIGZvciAoaW50IGNvdW50ID0gMDs7Kytjb3VudCkgeworICAgICAgICAgICAgICAgIGxpbmUgPSBpbnB1dC5yZWFkTGluZSgpOworICAgICAgICAgICAgICAgIGlmIChsaW5lID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgLy9yZWFkIHRoZSBleHRyYSB0ZXN0IGNhc2VzCisJICAgICAgICAgICAgICAgIGlmKGNvdW50ID4gbW9yZUNhc2VzLmxlbmd0aCkgeworCQkgICAgICAgICAgICAgICAgY291bnQgPSAwOworCQkgICAgICAgICAgICB9IGVsc2UgaWYoY291bnQgPT0gbW9yZUNhc2VzLmxlbmd0aCkgeworCQkgICAgICAgICAgICAgICAgLy8gYWxsIGRvbmUKKwkJICAgICAgICAgICAgICAgIGJyZWFrOworCQkgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBtb3JlQ2FzZXNbY291bnQrK107CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChsaW5lLmxlbmd0aCgpID09IDApIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgLy8gRXhwZWN0IDUgY29sdW1ucyBvZiB0aGlzIGZvcm1hdDoKKyAgICAgICAgICAgICAgICAvLyAxRTBDOzFFMEM7MDA0NCAwMzIzOzFFMEM7MDA0NCAwMzIzOyAjIDxjb21tZW50cz4KKworICAgICAgICAgICAgICAgIC8vIFNraXAgY29tbWVudHMKKyAgICAgICAgICAgICAgICBpZiAobGluZS5jaGFyQXQoMCkgPT0gJyMnICB8fCBsaW5lLmNoYXJBdCgwKT09J0AnKSBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIC8vIFBhcnNlIG91dCB0aGUgZmllbGRzCisgICAgICAgICAgICAgICAgaGV4c3BsaXQobGluZSwgJzsnLCBmaWVsZHMsIGJ1Zik7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIGEgc2luZ2xlIGNvZGUgcG9pbnQgZnJvbSB0aGUgIm90aGVyIiBVbmljb2RlU2V0CisJCSAgICAgICAgaWYoZmllbGRzWzBdLmxlbmd0aCgpPT1VVEYxNi5tb3ZlQ29kZVBvaW50T2Zmc2V0KGZpZWxkc1swXSwwLCAxKSkgeworCQkgICAgICAgICAgICBjPVVURjE2LmNoYXJBdChmaWVsZHNbMF0sMCk7IAorCQkgICAgICAgICAgICBpZigweGFjMjA8PWMgJiYgYzw9MHhkNzNmKSB7CisJCSAgICAgICAgICAgICAgICAvLyBub3QgYW4gZXhoYXVzdGl2ZSB0ZXN0IHJ1bjogc2tpcCBtb3N0IEhhbmd1bCBzeWxsYWJsZXMKKwkJICAgICAgICAgICAgICAgIGlmKGM9PTB4YWMyMCkgeworCQkgICAgICAgICAgICAgICAgICAgIG90aGVyLnJlbW92ZSgweGFjMjAsIDB4ZDczZik7CisJCSAgICAgICAgICAgICAgICB9CisJCSAgICAgICAgICAgICAgICBjb250aW51ZTsKKwkJICAgICAgICAgICAgfQorCQkgICAgICAgICAgICBvdGhlci5yZW1vdmUoYyk7CisJCSAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChjaGVja0NvbmZvcm1hbmNlKGZpZWxkcywgbGluZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgKytwYXNzQ291bnQ7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgKytmYWlsQ291bnQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICgoY291bnQgJSAxMDAwKSA9PSA5OTkpIHsKKyAgICAgICAgICAgICAgICAgICAgbG9nbG4oIkxpbmUgIiArIChjb3VudCsxKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBpbnB1dC5jbG9zZSgpOworICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIiIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZXgucHJpbnRTdGFja1RyYWNlKCk7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJDb3VsZG4ndCByZWFkIGZpbGUgIgorICAgICAgICAgICAgICArIGV4LmdldENsYXNzKCkuZ2V0TmFtZSgpICsgIiAiICsgZXguZ2V0TWVzc2FnZSgpCisgICAgICAgICAgICAgICsgIiBsaW5lID0gIiArIGxpbmUKKyAgICAgICAgICAgICAgKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChmYWlsQ291bnQgIT0gMCkgeworICAgICAgICAgICAgZXJybG4oIlRvdGFsOiAiICsgZmFpbENvdW50ICsgIiBsaW5lcyBmYWlsZWQsICIgKworICAgICAgICAgICAgICAgICAgcGFzc0NvdW50ICsgIiBsaW5lcyBwYXNzZWQiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvZ2xuKCJUb3RhbDogIiArIHBhc3NDb3VudCArICIgbGluZXMgcGFzc2VkIik7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogVmVyaWZ5IHRoZSBjb25mb3JtYW5jZSBvZiB0aGUgZ2l2ZW4gbGluZSBvZiB0aGUgVW5pY29kZQorICAgICAqIG5vcm1hbGl6YXRpb24gKFVUUiAxNSkgdGVzdCBzdWl0ZSBmaWxlLiAgRm9yIGVhY2ggbGluZSwKKyAgICAgKiB0aGVyZSBhcmUgZml2ZSBjb2x1bW5zLCBjb3JyZXNwb25kaW5nIHRvIGZpZWxkWzBdLi5maWVsZFs0XS4KKyAgICAgKgorICAgICAqIFRoZSBmb2xsb3dpbmcgaW52YXJpYW50cyBtdXN0IGJlIHRydWUgZm9yIGFsbCBjb25mb3JtYW50IGltcGxlbWVudGF0aW9ucworICAgICAqICBjMiA9PSBORkMoYzEpID09IE5GQyhjMikgPT0gTkZDKGMzKQorICAgICAqICBjMyA9PSBORkQoYzEpID09IE5GRChjMikgPT0gTkZEKGMzKQorICAgICAqICBjNCA9PSBORktDKGMxKSA9PSBORktDKGMyKSA9PSBORktDKGMzKSA9PSBORktDKGM0KSA9PSBORktDKGM1KQorICAgICAqICBjNSA9PSBORktEKGMxKSA9PSBORktEKGMyKSA9PSBORktEKGMzKSA9PSBORktEKGM0KSA9PSBORktEKGM1KQorICAgICAqCisgICAgICogQHBhcmFtIGZpZWxkIHRoZSA1IGNvbHVtbnMKKyAgICAgKiBAcGFyYW0gbGluZSB0aGUgc291cmNlIGxpbmUgZnJvbSB0aGUgdGVzdCBzdWl0ZSBmaWxlCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSB0ZXN0IHBhc3NlcworICAgICAqLworICAgIHByaXZhdGUgYm9vbGVhbiBjaGVja0NvbmZvcm1hbmNlKFN0cmluZ1tdIGZpZWxkLCBTdHJpbmcgbGluZSkgdGhyb3dzIEV4Y2VwdGlvbnsKKyAgICAgICAgYm9vbGVhbiBwYXNzID0gdHJ1ZTsKKyAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsgLy8gc2NyYXRjaAorICAgICAgICBTdHJpbmcgb3V0LGZjZDsKKyAgICAgICAgaW50IGk9MDsKKyAgICAgICAgZm9yIChpPTA7IGk8NTsgKytpKSB7CisgICAgICAgICAgICBpZiAoaTwzKSB7CisgICAgICAgICAgICAgICAgb3V0ID0gbm9ybWFsaXplcl9DLm5vcm1hbGl6ZShmaWVsZFtpXSk7CisgICAgICAgICAgICAgICAgcGFzcyAmPSBhc3NlcnRFcXVhbCgiQyIsIGZpZWxkW2ldLCBvdXQsIGZpZWxkWzFdLCAiYzIhPUMoYyIgKyAoaSsxKSk7CisgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG91dCA9IG5vcm1hbGl6ZXJfRC5ub3JtYWxpemUoZmllbGRbaV0pOworICAgICAgICAgICAgICAgIHBhc3MgJj0gYXNzZXJ0RXF1YWwoIkQiLCBmaWVsZFtpXSwgb3V0LCBmaWVsZFsyXSwgImMzIT1EKGMiICsgKGkrMSkpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgICAgb3V0ID0gbm9ybWFsaXplcl9LQy5ub3JtYWxpemUoZmllbGRbaV0pOworICAgICAgICAgICAgcGFzcyAmPSBhc3NlcnRFcXVhbCgiS0MiLCBmaWVsZFtpXSwgb3V0LCBmaWVsZFszXSwgImM0IT1LQyhjIiArIChpKzEpKTsKKworICAgICAgICAgICAgb3V0ID0gbm9ybWFsaXplcl9LRC5ub3JtYWxpemUoZmllbGRbaV0pOworICAgICAgICAgICAgcGFzcyAmPSBhc3NlcnRFcXVhbCgiS0QiLCBmaWVsZFtpXSwgb3V0LCBmaWVsZFs0XSwgImM1IT1LRChjIiArIChpKzEpKTsKKyAgICAgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmICghcGFzcykgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6ICIgKyBsaW5lKTsKKyAgICAgICAgfSAgICAgCisgICAgICAgCisgICAgICAgIHJldHVybiBwYXNzOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gb3AgbmFtZSBvZiBub3JtYWxpemF0aW9uIGZvcm0sIGUuZy4sICJLQyIKKyAgICAgKiBAcGFyYW0gcyBzdHJpbmcgYmVpbmcgbm9ybWFsaXplZAorICAgICAqIEBwYXJhbSBnb3QgdmFsdWUgcmVjZWl2ZWQKKyAgICAgKiBAcGFyYW0gZXhwIGV4cGVjdGVkIHZhbHVlCisgICAgICogQHBhcmFtIG1zZyBkZXNjcmlwdGlvbiBvZiB0aGlzIHRlc3QKKyAgICAgKiBAcGFyYW0gcmV0dXJuIHRydWUgaWYgZ290ID09IGV4cAorICAgICAqLworICAgIHByaXZhdGUgYm9vbGVhbiBhc3NlcnRFcXVhbChTdHJpbmcgb3AsIFN0cmluZyBzLCBTdHJpbmcgZ290LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZXhwLCBTdHJpbmcgbXNnKSB7CisgICAgICAgIGlmIChleHAuZXF1YWxzKGdvdCkpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGVycmxuKCgiICAgICAgIiArIG1zZyArICIpICIgKyBvcCArICIoIiArIHMgKyAiKT0iICsgaGV4KGdvdCkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCBleHAuICIgKyBoZXgoZXhwKSkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLyoqCisgICAgICogU3BsaXQgYSBzdHJpbmcgaW50byBwaWVjZXMgYmFzZWQgb24gdGhlIGdpdmVuIGRlbGltaXRlcgorICAgICAqIGNoYXJhY3Rlci4gIFRoZW4sIHBhcnNlIHRoZSByZXN1bHRhbnQgZmllbGRzIGZyb20gaGV4IGludG8KKyAgICAgKiBjaGFyYWN0ZXJzLiAgVGhhdCBpcywgIjAwNDAgMDQwMDswQzAwOzA4OTkiIC0+IG5ldyBTdHJpbmdbXSB7CisgICAgICogIlx1MDA0MFx1MDQwMCIsICJcdTBDMDAiLCAiXHUwODk5IiB9LiAgVGhlIG91dHB1dCBpcyBhc3N1bWVkIHRvCisgICAgICogYmUgb2YgdGhlIHByb3BlciBsZW5ndGggYWxyZWFkeSwgYW5kIGV4YWN0bHkgb3V0cHV0Lmxlbmd0aAorICAgICAqIGZpZWxkcyBhcmUgcGFyc2VkLiAgSWYgdGhlcmUgYXJlIHRvbyBmZXcgYW4gZXhjZXB0aW9uIGlzCisgICAgICogdGhyb3duLiAgSWYgdGhlcmUgYXJlIHRvbyBtYW55IHRoZSBleHRyYXMgYXJlIGlnbm9yZWQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gYnVmIHNjcmF0Y2ggYnVmZmVyCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBoZXhzcGxpdChTdHJpbmcgcywgY2hhciBkZWxpbWl0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdbXSBvdXRwdXQsIFN0cmluZ0J1ZmZlciBidWYpIHsKKyAgICAgICAgaW50IGk7CisgICAgICAgIGludCBwb3MgPSAwOworICAgICAgICBmb3IgKGk9MDsgaTxvdXRwdXQubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGludCBkZWxpbSA9IHMuaW5kZXhPZihkZWxpbWl0ZXIsIHBvcyk7CisgICAgICAgICAgICBpZiAoZGVsaW0gPCAwKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiTWlzc2luZyBmaWVsZCBpbiAiICsgcyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBPdXIgZmllbGQgaXMgZnJvbSBwb3MuLmRlbGltLTEuCisgICAgICAgICAgICBidWYuc2V0TGVuZ3RoKDApOworICAgICAgICAgICAgCisgICAgICAgICAgICBTdHJpbmcgdG9IZXggPSBzLnN1YnN0cmluZyhwb3MsZGVsaW0pOworICAgICAgICAgICAgcG9zID0gZGVsaW07CisgICAgICAgICAgICBpbnQgaW5kZXggPSAwOworICAgICAgICAgICAgaW50IGxlbiA9IHRvSGV4Lmxlbmd0aCgpOworICAgICAgICAgICAgd2hpbGUoaW5kZXg8IGxlbil7CisgICAgICAgICAgICAgICAgaWYodG9IZXguY2hhckF0KGluZGV4KT09JyAnKXsKKyAgICAgICAgICAgICAgICAgICAgaW5kZXgrKzsKKyAgICAgICAgICAgICAgICB9ZWxzZXsKKyAgICAgICAgICAgICAgICAgICAgaW50IHNwYWNlUG9zID0gdG9IZXguaW5kZXhPZignICcsIGluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgaWYoc3BhY2VQb3M9PS0xKXsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZEludChidWYsdG9IZXguc3Vic3RyaW5nKGluZGV4LGxlbikscyk7CisgICAgICAgICAgICAgICAgICAgICAgICBzcGFjZVBvcyA9IGxlbjsKKyAgICAgICAgICAgICAgICAgICAgfWVsc2V7CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRJbnQoYnVmLHRvSGV4LnN1YnN0cmluZyhpbmRleCwgc3BhY2VQb3MpLHMpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gc3BhY2VQb3MrMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChidWYubGVuZ3RoKCkgPCAxKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiRW1wdHkgZmllbGQgIiArIGkgKyAiIGluICIgKyBzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG91dHB1dFtpXSA9IGJ1Zi50b1N0cmluZygpOworICAgICAgICAgICAgKytwb3M7IC8vIFNraXAgb3ZlciBkZWxpbQorICAgICAgICB9CisgICAgfQorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBhcHBlbmRJbnQoU3RyaW5nQnVmZmVyIGJ1ZiwgU3RyaW5nIHN0clRvSGV4LCBTdHJpbmcgcyl7CisgICAgICAgIGludCBoZXggPSBJbnRlZ2VyLnBhcnNlSW50KHN0clRvSGV4LDE2KTsKKyAgICAgICAgaWYgKGhleCA8IDAgKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJPdXQgb2YgcmFuZ2UgaGV4ICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGV4ICsgIiBpbiAiICsgcyk7CisgICAgICAgIH1lbHNlIGlmIChoZXggPiAweEZGRkYpeworICAgICAgICAgICAgYnVmLmFwcGVuZCgoY2hhcikoKGhleD4+MTApKzB4ZDdjMCkpOyAKKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQoKGNoYXIpKChoZXgmMHgzZmYpfDB4ZGMwMCkpOworICAgICAgICB9ZWxzZXsKKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQoKGNoYXIpIGhleCk7CisgICAgICAgIH0KKyAgICB9CisgICAgICAgICAgICAKKyAgICAvLyBTcGVjaWZpYyB0ZXN0cyBmb3IgZGVidWdnaW5nLiAgVGhlc2UgYXJlIGdlbmVyYWxseSBmYWlsdXJlcworICAgIC8vIHRha2VuIGZyb20gdGhlIGNvbmZvcm1hbmNlIGZpbGUsIGJ1dCBjdWxsZWQgb3V0IHRvIG1ha2UKKyAgICAvLyBkZWJ1Z2dpbmcgZWFzaWVyLiAgVGhlc2UgY2FuIGJlIGVsaW1pbmF0ZWQgd2l0aG91dCBhZmZlY3RpbmcKKyAgICAvLyBjb3ZlcmFnZS4KKworICAgIHB1YmxpYyB2b2lkIF9oaWRlVGVzdENhc2U2KCkgdGhyb3dzIEV4Y2VwdGlvbnsKKyAgICAgICAgX3Rlc3RPbmVMaW5lKCIwMzg1OzAzODU7MDBBOCAwMzAxOzAwMjAgMDMwOCAwMzAxOzAwMjAgMDMwOCAwMzAxOyIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIF90ZXN0T25lTGluZShTdHJpbmcgbGluZSkgdGhyb3dzIEV4Y2VwdGlvbnsKKyAgICAgICAgU3RyaW5nW10gZmllbGRzID0gbmV3IFN0cmluZ1s1XTsKKyAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgLy8gUGFyc2Ugb3V0IHRoZSBmaWVsZHMKKyAgICAgICAgaGV4c3BsaXQobGluZSwgJzsnLCBmaWVsZHMsIGJ1Zik7CisgICAgICAgIGNoZWNrQ29uZm9ybWFuY2UoZmllbGRzLCBsaW5lKTsKKyAgICB9CisgICAgCisKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9ub3JtYWxpemVyL3BhY2thZ2UuaHRtbCBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9ub3JtYWxpemVyL3BhY2thZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xMDEwYTgwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L25vcm1hbGl6ZXIvcGFja2FnZS5odG1sCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8IS0tICBDb3B5cmlnaHQgKEMpIDIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kCisgIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKworICAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3Qvbm9ybWFsaXplci9wYWNrYWdlLmh0bWwsdiAkCisgICRSZXZpc2lvbjogMS4xICQKKyAgJERhdGU6IDIwMDAvMDMvMTUgMjE6MzU6NDkgJAorLS0+Cis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSI+CitUZXN0cyBmb3IgTm9ybWFsaXplci4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvcGFja2FnZS5odG1sIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3BhY2thZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44ZmFmOTkyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3BhY2thZ2UuaHRtbApAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPCEtLSAgQ29weXJpZ2h0IChDKSAyMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZAorICBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3BhY2thZ2UuaHRtbCx2ICQKKyAgJFJldmlzaW9uOiAxLjEgJAorICAkRGF0ZTogMjAwMC8wMy8xNSAyMTozNTo0OCAkCistLT4KKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IndoaXRlIj4KK1NoYXJlZCB1dGlsaXRpZXMgZm9yIHRlc3RzLgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9wZXJmL0NvbGxhdGlvblBlcmZvcm1hbmNlVGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3BlcmYvQ29sbGF0aW9uUGVyZm9ybWFuY2VUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2NhOThkMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9wZXJmL0NvbGxhdGlvblBlcmZvcm1hbmNlVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTI2OCBAQAorLyoqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIENvcHlyaWdodCAoQykgMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgICAgICAqCisqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqICRTb3VyY2U6IAorKiAkRGF0ZTogCisqICRSZXZpc2lvbjogCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0LnBlcmY7CisKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0Lio7CitpbXBvcnQgamF2YS51dGlsLio7CitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuTG9jYWxlVXRpbGl0eTsKKworcHVibGljIGNsYXNzIENvbGxhdGlvblBlcmZvcm1hbmNlVGVzdCB7CisgICAgc3RhdGljIGZpbmFsIFN0cmluZyB1c2FnZVN0cmluZyA9IAorICAgICAgICAidXNhZ2U6ICBjb2xscGVyZiBvcHRpb25zLi4uXG4iCisgICAgICAgICsgIi1oZWxwICAgICAgICAgICAgICAgICAgICAgIERpc3BsYXkgdGhpcyBtZXNzYWdlLlxuIgorICAgICAgICArICItZmlsZSBmaWxlX25hbWUgICAgICAgICAgICB1dGYtMTYgZm9ybWF0IGZpbGUgb2YgbmFtZXMuXG4iCisgICAgICAgICsgIi1sb2NhbGUgbmFtZSAgICAgICAgICAgICAgIElDVSBsb2NhbGUgdG8gdXNlLiAgRGVmYXVsdCBpcyBlbl9VU1xuIgorICAgICAgICArICItcnVsZXMgZmlsZV9uYW1lICAgICAgICAgICBDb2xsYXRpb24gcnVsZXMgZmlsZSAob3ZlcnJpZGVzIGxvY2FsZSlcbiIKKyAgICAgICAgLy8rICItbGFuZ2lkIDB4MTIzNCAgICAgICAgICAgICBXaW5kb3dzIExhbmd1YWdlIElEIG51bWJlci4gIERlZmF1bHQgdG8gdmFsdWUgZm9yIC1sb2NhbGUgb3B0aW9uXG4iCisgICAgICAgIC8vKyAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VlIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vbGlicmFyeS9wc2RrL3dpbmJhc2UvbmxzXzh4bzMuaHRtXG4iCisgICAgICAgIC8vKyAiLXdpbiAgICAgICAgICAgICAgICAgICAgICAgUnVuIHRlc3QgdXNpbmcgV2luZG93cyBuYXRpdmUgc2VydmljZXMuICAoSUNVIGlzIGRlZmF1bHQpXG4iCisgICAgICAgIC8vKyAiLXVuaXggICAgICAgICAgICAgICAgICAgICAgUnVuIHRlc3QgdXNpbmcgVW5peCBzdHJ4ZnJtLCBzdHJjb2xsIHNlcnZpY2VzLlxuIgorICAgICAgICAvLysgIi11c2VsZW4gICAgICAgICAgICAgICAgICAgIFVzZSBBUEkgd2l0aCBzdHJpbmcgbGVuZ3Rocy4gIERlZmF1bHQgaXMgbnVsbC10ZXJtaW5hdGVkIHN0cmluZ3NcbiIKKyAgICAgICAgKyAiLXVzZWtleXMgICAgICAgICAgICAgICAgICAgUnVuIHRlc3RzIHVzaW5nIHNvcnRrZXlzIHJhdGhlciB0aGFuIHN0cmNvbGxcbiIKKyAgICAgICAgKyAiLXN0cmNtcCAgICAgICAgICAgICAgICAgICAgUnVuIHRlc3RzIHVzaW5nIHVfc3RyY21wIHJhdGhlciB0aGFuIHN0cmNvbGxcbiIKKyAgICAgICAgKyAiLXN0cmNtcENQTyAgICAgICAgICAgICAgICAgUnVuIHRlc3RzIHVzaW5nIHVfc3RyY21wQ29kZVBvaW50T3JkZXIgcmF0aGVyIHRoYW4gc3RyY29sbFxuIgorICAgICAgICArICItbG9vcCBubm5uICAgICAgICAgICAgICAgICBMb29wY291bnQgZm9yIHRlc3QuICBBZGp1c3QgZm9yIHJlYXNvbmFibGUgdG90YWwgcnVubmluZyB0aW1lLlxuIgorICAgICAgICArICItaWxvb3AgbiAgICAgICAgICAgICAgICAgICBJbm5lciBMb29wIENvdW50LiAgRGVmYXVsdCA9IDEuICBOdW1iZXIgb2YgY2FsbHMgdG8gZnVuY3Rpb25cbiIKKyAgICAgICAgKyAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVyIHRlc3QgYXQgZWFjaCBjYWxsIHBvaW50LiAgRm9yIG1lYXN1cmluZyB0ZXN0IG92ZXJoZWFkLlxuIgorICAgICAgICArICItdGVyc2UgICAgICAgICAgICAgICAgICAgICBUZXJzZSBudW1iZXJzLW9ubHkgb3V0cHV0LiAgSW50ZW5kZWQgZm9yIHVzZSBieSBzY3JpcHRzLlxuIgorICAgICAgICArICItZnJlbmNoICAgICAgICAgICAgICAgICAgICBGcmVuY2ggYWNjZW50IG9yZGVyaW5nXG4iCisgICAgICAgICsgIi1mcmVuY2hvZmYgICAgICAgICAgICAgICAgIE5vIEZyZW5jaCBhY2NlbnQgb3JkZXJpbmcgKGZvciB1c2Ugd2l0aCBGcmVuY2ggbG9jYWxlcy4pXG4iCisgICAgICAgICsgIi1ub3JtICAgICAgICAgICAgICAgICAgICAgIE5vcm1hbGl6aW5nIG1vZGUgb25cbiIKKyAgICAgICAgKyAiLXNoaWZ0ZWQgICAgICAgICAgICAgICAgICAgU2hpZnRlZCBtb2RlXG4iCisgICAgICAgICsgIi1sb3dlciAgICAgICAgICAgICAgICAgICAgIExvd2VyIGNhc2UgZmlyc3RcbiIKKyAgICAgICAgKyAiLXVwcGVyICAgICAgICAgICAgICAgICAgICAgVXBwZXIgY2FzZSBmaXJzdFxuIgorICAgICAgICArICItY2FzZSAgICAgICAgICAgICAgICAgICAgICBFbmFibGUgc2VwYXJhdGUgY2FzZSBsZXZlbFxuIgorICAgICAgICArICItbGV2ZWwgbiAgICAgICAgICAgICAgICAgICBTb3J0IGxldmVsLCAxIHRvIDUsIGZvciBQcmltYXJ5LCBTZWNuZGFyeSwgVGVydGlhcnksIFF1YXRlcm5hcnksIElkZW50aWNhbFxuIgorICAgICAgICArICIta2V5aGlzdCAgICAgICAgICAgICAgICAgICBQcm9kdWNlIGEgdGFibGUgc29ydCBrZXkgc2l6ZSB2cy4gc3RyaW5nIGxlbmd0aFxuIgorICAgICAgICArICItYmluc2VhcmNoICAgICAgICAgICAgICAgICBCaW5hcnkgU2VhcmNoIHRpbWluZyB0ZXN0XG4iCisgICAgICAgICsgIi1rZXlnZW4gICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5IEdlbmVyYXRpb24gdGltaW5nIHRlc3RcbiIKKyAgICAgICAgKyAiLXFzb3J0ICAgICAgICAgICAgICAgICAgICAgUXVpY2tzb3J0IHRpbWluZyB0ZXN0XG4iCisgICAgICAgICsgIi1pdGVyICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdGlvbiBQZXJmb3JtYW5jZSBUZXN0XG4iCisgICAgICAgICsgIi1kdW1wICAgICAgICAgICAgICAgICAgICAgIERpc3BsYXkgc3RyaW5ncywgc29ydCBrZXlzIGFuZCBDRXMuXG4iCisgICAgICAgICsgIi1qYXZhICAgICAgICAgICAgICAgICAgICAgIFJ1biB0ZXN0IHVzaW5nIGphdmEudGV4dC5Db2xsYXRvci5cbiI7CisgICAgCisgICAgLy9lbnVtIHtGTEFHLCBOVU0sIFNUUklOR30gdHlwZTsKKyAgICBzdGF0aWMgU3RyaW5nQnVmZmVyIHRlbXBfb3B0X2ZOYW1lICAgICAgPSBuZXcgU3RyaW5nQnVmZmVyKCIiKTsKKyAgICBzdGF0aWMgU3RyaW5nQnVmZmVyIHRlbXBfb3B0X2xvY2FsZSAgICAgPSBuZXcgU3RyaW5nQnVmZmVyKCJlbl9VUyIpOworICAgIC8vc3RhdGljIFN0cmluZ0J1ZmZlciB0ZW1wX29wdF9sYW5naWQgICAgID0gbmV3IFN0cmluZ0J1ZmZlcigiMCIpOyAgICAgICAgIC8vIERlZmF1bHRzIHRvIHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gb3B0X2xvY2FsZS4KKyAgICBzdGF0aWMgU3RyaW5nQnVmZmVyIHRlbXBfb3B0X3J1bGVzICAgICAgPSBuZXcgU3RyaW5nQnVmZmVyKCIiKTsKKyAgICBzdGF0aWMgU3RyaW5nQnVmZmVyIHRlbXBfb3B0X2hlbHAgICAgICAgPSBuZXcgU3RyaW5nQnVmZmVyKCIiKTsKKyAgICBzdGF0aWMgU3RyaW5nQnVmZmVyIHRlbXBfb3B0X2xvb3BDb3VudCAgPSBuZXcgU3RyaW5nQnVmZmVyKCIxIik7CisgICAgc3RhdGljIFN0cmluZ0J1ZmZlciB0ZW1wX29wdF9pTG9vcENvdW50ID0gbmV3IFN0cmluZ0J1ZmZlcigiMSIpOworICAgIHN0YXRpYyBTdHJpbmdCdWZmZXIgdGVtcF9vcHRfdGVyc2UgICAgICA9IG5ldyBTdHJpbmdCdWZmZXIoImZhbHNlIik7CisgICAgc3RhdGljIFN0cmluZ0J1ZmZlciB0ZW1wX29wdF9xc29ydCAgICAgID0gbmV3IFN0cmluZ0J1ZmZlcigiIik7CisgICAgc3RhdGljIFN0cmluZ0J1ZmZlciB0ZW1wX29wdF9iaW5zZWFyY2ggID0gbmV3IFN0cmluZ0J1ZmZlcigiIik7CisgICAgc3RhdGljIFN0cmluZ0J1ZmZlciB0ZW1wX29wdF9pY3UgICAgICAgID0gbmV3IFN0cmluZ0J1ZmZlcigidHJ1ZSIpOworICAgIC8vc3RhdGljIFN0cmluZ0J1ZmZlciBvcHRfd2luICAgICAgICA9IG5ldyBTdHJpbmdCdWZmZXIoIiIpOyAgICAgIC8vIFJ1biB3aXRoIFdpbmRvd3MgbmF0aXZlIGZ1bmN0aW9ucy4KKyAgICAvL3N0YXRpYyBTdHJpbmdCdWZmZXIgb3B0X3VuaXggICAgICAgPSBuZXcgU3RyaW5nQnVmZmVyKCIiKTsgICAgICAvLyBSdW4gd2l0aCBVTklYIHN0cmNvbGwsIHN0cnhmcm0gZnVuY3Rpb25zLgorICAgIC8vc3RhdGljIFN0cmluZ0J1ZmZlciBvcHRfdXNlbGVuICAgICA9IG5ldyBTdHJpbmdCdWZmZXIoIiIpOworICAgIHN0YXRpYyBTdHJpbmdCdWZmZXIgdGVtcF9vcHRfdXNla2V5cyAgICA9IG5ldyBTdHJpbmdCdWZmZXIoIiIpOworICAgIHN0YXRpYyBTdHJpbmdCdWZmZXIgdGVtcF9vcHRfc3RyY21wICAgICA9IG5ldyBTdHJpbmdCdWZmZXIoIiIpOworICAgIHN0YXRpYyBTdHJpbmdCdWZmZXIgdGVtcF9vcHRfc3RyY21wQ1BPICA9IG5ldyBTdHJpbmdCdWZmZXIoIiIpOworICAgIHN0YXRpYyBTdHJpbmdCdWZmZXIgdGVtcF9vcHRfbm9ybSAgICAgICA9IG5ldyBTdHJpbmdCdWZmZXIoIiIpOworICAgIHN0YXRpYyBTdHJpbmdCdWZmZXIgdGVtcF9vcHRfa2V5Z2VuICAgICA9IG5ldyBTdHJpbmdCdWZmZXIoIiIpOworICAgIHN0YXRpYyBTdHJpbmdCdWZmZXIgdGVtcF9vcHRfZnJlbmNoICAgICA9IG5ldyBTdHJpbmdCdWZmZXIoIiIpOworICAgIHN0YXRpYyBTdHJpbmdCdWZmZXIgdGVtcF9vcHRfZnJlbmNob2ZmICA9IG5ldyBTdHJpbmdCdWZmZXIoIiIpOworICAgIHN0YXRpYyBTdHJpbmdCdWZmZXIgdGVtcF9vcHRfc2hpZnRlZCAgICA9IG5ldyBTdHJpbmdCdWZmZXIoIiIpOworICAgIHN0YXRpYyBTdHJpbmdCdWZmZXIgdGVtcF9vcHRfbG93ZXIgICAgICA9IG5ldyBTdHJpbmdCdWZmZXIoIiIpOworICAgIHN0YXRpYyBTdHJpbmdCdWZmZXIgdGVtcF9vcHRfdXBwZXIgICAgICA9IG5ldyBTdHJpbmdCdWZmZXIoIiIpOworICAgIHN0YXRpYyBTdHJpbmdCdWZmZXIgdGVtcF9vcHRfY2FzZSAgICAgICA9IG5ldyBTdHJpbmdCdWZmZXIoIiIpOworICAgIHN0YXRpYyBTdHJpbmdCdWZmZXIgdGVtcF9vcHRfbGV2ZWwgICAgICA9IG5ldyBTdHJpbmdCdWZmZXIoIjAiKTsKKyAgICBzdGF0aWMgU3RyaW5nQnVmZmVyIHRlbXBfb3B0X2tleWhpc3QgICAgPSBuZXcgU3RyaW5nQnVmZmVyKCIiKTsKKyAgICBzdGF0aWMgU3RyaW5nQnVmZmVyIHRlbXBfb3B0X2l0ZXJ0ZXN0ICAgPSBuZXcgU3RyaW5nQnVmZmVyKCIiKTsKKyAgICBzdGF0aWMgU3RyaW5nQnVmZmVyIHRlbXBfb3B0X2R1bXAgICAgICAgPSBuZXcgU3RyaW5nQnVmZmVyKCIiKTsKKyAgICBzdGF0aWMgU3RyaW5nQnVmZmVyIHRlbXBfb3B0X2phdmEgICAgICAgPSBuZXcgU3RyaW5nQnVmZmVyKCIiKTsKKyAgICAKKyAgICAKKyAgICBzdGF0aWMgU3RyaW5nICAgb3B0X2ZOYW1lICAgICAgPSAiIjsKKyAgICBzdGF0aWMgU3RyaW5nICAgb3B0X2xvY2FsZSAgICAgPSAiZW5fVVMiOworICAgIC8vc3RhdGljIGludCAgICAgIG9wdF9sYW5naWQgICAgID0gMDsgICAgICAgICAvLyBEZWZhdWx0cyB0byB2YWx1ZSBjb3JyZXNwb25kaW5nIHRvIG9wdF9sb2NhbGUuCisgICAgc3RhdGljIFN0cmluZyAgIG9wdF9ydWxlcyAgICAgID0gIiI7CisgICAgc3RhdGljIGJvb2xlYW4gIG9wdF9oZWxwICAgICAgID0gZmFsc2U7CisgICAgc3RhdGljIGludCAgICAgIG9wdF9sb29wQ291bnQgID0gMTsKKyAgICBzdGF0aWMgaW50ICAgICAgb3B0X2lMb29wQ291bnQgPSAxOworICAgIHN0YXRpYyBib29sZWFuICBvcHRfdGVyc2UgICAgICA9IGZhbHNlOworICAgIHN0YXRpYyBib29sZWFuICBvcHRfcXNvcnQgICAgICA9IGZhbHNlOworICAgIHN0YXRpYyBib29sZWFuICBvcHRfYmluc2VhcmNoICA9IGZhbHNlOworICAgIHN0YXRpYyBib29sZWFuICBvcHRfaWN1ICAgICAgICA9IHRydWU7CisgICAgLy9zdGF0aWMgYm9vbGVhbiAgb3B0X3dpbiAgICAgICAgPSBmYWxzZTsgICAgICAvLyBSdW4gd2l0aCBXaW5kb3dzIG5hdGl2ZSBmdW5jdGlvbnMuCisgICAgLy9zdGF0aWMgYm9vbGVhbiAgb3B0X3VuaXggICAgICAgPSBmYWxzZTsgICAgICAvLyBSdW4gd2l0aCBVTklYIHN0cmNvbGwsIHN0cnhmcm0gZnVuY3Rpb25zLgorICAgIC8vc3RhdGljIGJvb2xlYW4gIG9wdF91c2VsZW4gICAgID0gZmFsc2U7CisgICAgc3RhdGljIGJvb2xlYW4gIG9wdF91c2VrZXlzICAgID0gZmFsc2U7CisgICAgc3RhdGljIGJvb2xlYW4gIG9wdF9zdHJjbXAgICAgID0gZmFsc2U7CisgICAgc3RhdGljIGJvb2xlYW4gIG9wdF9zdHJjbXBDUE8gID0gZmFsc2U7CisgICAgc3RhdGljIGJvb2xlYW4gIG9wdF9ub3JtICAgICAgID0gZmFsc2U7CisgICAgc3RhdGljIGJvb2xlYW4gIG9wdF9rZXlnZW4gICAgID0gZmFsc2U7CisgICAgc3RhdGljIGJvb2xlYW4gIG9wdF9mcmVuY2ggICAgID0gZmFsc2U7CisgICAgc3RhdGljIGJvb2xlYW4gIG9wdF9mcmVuY2hvZmYgID0gZmFsc2U7CisgICAgc3RhdGljIGJvb2xlYW4gIG9wdF9zaGlmdGVkICAgID0gZmFsc2U7CisgICAgc3RhdGljIGJvb2xlYW4gIG9wdF9sb3dlciAgICAgID0gZmFsc2U7CisgICAgc3RhdGljIGJvb2xlYW4gIG9wdF91cHBlciAgICAgID0gZmFsc2U7CisgICAgc3RhdGljIGJvb2xlYW4gIG9wdF9jYXNlICAgICAgID0gZmFsc2U7CisgICAgc3RhdGljIGludCAgICAgIG9wdF9sZXZlbCAgICAgID0gMDsKKyAgICBzdGF0aWMgYm9vbGVhbiAgb3B0X2tleWhpc3QgICAgPSBmYWxzZTsKKyAgICBzdGF0aWMgYm9vbGVhbiAgb3B0X2l0ZXJ0ZXN0ICAgPSBmYWxzZTsKKyAgICBzdGF0aWMgYm9vbGVhbiAgb3B0X2R1bXAgICAgICAgPSBmYWxzZTsKKyAgICBzdGF0aWMgYm9vbGVhbiAgb3B0X2phdmEgICAgICAgPSBmYWxzZTsKKworICAgIHN0YXRpYyBPcHRpb25TcGVjW10gb3B0aW9ucyA9IHsKKyAgICAgICAgbmV3IE9wdGlvblNwZWMoIi1maWxlIiwgMiwgdGVtcF9vcHRfZk5hbWUpLAorICAgICAgICBuZXcgT3B0aW9uU3BlYygiLWxvY2FsZSIsIDIsIHRlbXBfb3B0X2xvY2FsZSksCisgICAgICAgIC8vbmV3IE9wdGlvblNwZWMoIi1sYW5naWQiLCAxLCB0ZW1wX29wdF9sYW5naWQpLAorICAgICAgICBuZXcgT3B0aW9uU3BlYygiLXJ1bGVzIiwgMiwgdGVtcF9vcHRfcnVsZXMpLAorICAgICAgICBuZXcgT3B0aW9uU3BlYygiLXFzb3J0IiwgMCwgdGVtcF9vcHRfcXNvcnQpLAorICAgICAgICBuZXcgT3B0aW9uU3BlYygiLWJpbnNlYXJjaCIsIDAsIHRlbXBfb3B0X2JpbnNlYXJjaCksCisgICAgICAgIG5ldyBPcHRpb25TcGVjKCItaXRlciIsIDAsIHRlbXBfb3B0X2l0ZXJ0ZXN0KSwKKyAgICAgICAgLy9uZXcgT3B0aW9uU3BlYygiLXdpbiIsIDAsIHRlbXBfb3B0X3dpbiksCisgICAgICAgIC8vbmV3IE9wdGlvblNwZWMoIi11bml4IiwgMCwgdGVtcF9vcHRfdW5peCksCisgICAgICAgIC8vbmV3IE9wdGlvblNwZWMoIi11c2VsZW4iLCAwLCB0ZW1wX29wdF91c2VsZW4pLAorICAgICAgICBuZXcgT3B0aW9uU3BlYygiLXVzZWtleXMiLCAwLCB0ZW1wX29wdF91c2VrZXlzKSwKKyAgICAgICAgbmV3IE9wdGlvblNwZWMoIi1zdHJjbXAiLCAwLCB0ZW1wX29wdF9zdHJjbXApLAorICAgICAgICBuZXcgT3B0aW9uU3BlYygiLXN0cmNtcENQTyIsIDAsIHRlbXBfb3B0X3N0cmNtcENQTyksCisgICAgICAgIG5ldyBPcHRpb25TcGVjKCItbm9ybSIsIDAsIHRlbXBfb3B0X25vcm0pLAorICAgICAgICBuZXcgT3B0aW9uU3BlYygiLWZyZW5jaCIsIDAsIHRlbXBfb3B0X2ZyZW5jaCksCisgICAgICAgIG5ldyBPcHRpb25TcGVjKCItZnJlbmNob2ZmIiwgMCwgdGVtcF9vcHRfZnJlbmNob2ZmKSwKKyAgICAgICAgbmV3IE9wdGlvblNwZWMoIi1zaGlmdGVkIiwgMCwgdGVtcF9vcHRfc2hpZnRlZCksCisgICAgICAgIG5ldyBPcHRpb25TcGVjKCItbG93ZXIiLCAwLCB0ZW1wX29wdF9sb3dlciksCisgICAgICAgIG5ldyBPcHRpb25TcGVjKCItdXBwZXIiLCAwLCB0ZW1wX29wdF91cHBlciksCisgICAgICAgIG5ldyBPcHRpb25TcGVjKCItY2FzZSIsIDAsIHRlbXBfb3B0X2Nhc2UpLAorICAgICAgICBuZXcgT3B0aW9uU3BlYygiLWxldmVsIiwgMSwgdGVtcF9vcHRfbGV2ZWwpLAorICAgICAgICBuZXcgT3B0aW9uU3BlYygiLWtleWhpc3QiLCAwLCB0ZW1wX29wdF9rZXloaXN0KSwKKyAgICAgICAgbmV3IE9wdGlvblNwZWMoIi1rZXlnZW4iLCAwLCB0ZW1wX29wdF9rZXlnZW4pLAorICAgICAgICBuZXcgT3B0aW9uU3BlYygiLWxvb3AiLCAxLCB0ZW1wX29wdF9sb29wQ291bnQpLAorICAgICAgICBuZXcgT3B0aW9uU3BlYygiLWlsb29wIiwgMSwgdGVtcF9vcHRfaUxvb3BDb3VudCksCisgICAgICAgIG5ldyBPcHRpb25TcGVjKCItdGVyc2UiLCAwLCB0ZW1wX29wdF90ZXJzZSksCisgICAgICAgIG5ldyBPcHRpb25TcGVjKCItZHVtcCIsIDAsIHRlbXBfb3B0X2R1bXApLAorICAgICAgICBuZXcgT3B0aW9uU3BlYygiLWhlbHAiLCAwLCB0ZW1wX29wdF9oZWxwKSwKKyAgICAgICAgbmV3IE9wdGlvblNwZWMoIi0/IiwgMCwgdGVtcF9vcHRfaGVscCksCisgICAgICAgIG5ldyBPcHRpb25TcGVjKCItamF2YSIsIDAsIHRlbXBfb3B0X2phdmEpLAorICAgIH07CisgICAgCisgICAgc3RhdGljIGphdmEudGV4dC5Db2xsYXRvciBqYXZhQ29sID0gbnVsbDsKKyAgICBzdGF0aWMgY29tLmlibS5pY3UudGV4dC5Db2xsYXRvciBpY3VDb2wgPSBudWxsOworICAgIHN0YXRpYyBOdW1iZXJGb3JtYXQgbmYgPSBudWxsOworICAgIHN0YXRpYyBOdW1iZXJGb3JtYXQgcGVyY2VudCA9IG51bGw7CisgICAgQXJyYXlMaXN0IGxpc3QgPSBudWxsOworICAgIFN0cmluZ1tdIHRlc3RzID0gbnVsbDsKKyAgICBpbnQgZ2xvYmFsQ291bnQgPSAwOworICAgIAorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgQ29sbGF0aW9uUGVyZm9ybWFuY2VUZXN0IGNvbGxQZXJmID0gbmV3IENvbGxhdGlvblBlcmZvcm1hbmNlVGVzdCgpOworICAgICAgICBpZiAoICFjb2xsUGVyZi5wcm9jZXNzT3B0aW9ucyhhcmdzKSB8fCBvcHRfaGVscCB8fCBvcHRfZk5hbWUubGVuZ3RoKCk9PTApIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbih1c2FnZVN0cmluZyk7CisgICAgICAgICAgICBTeXN0ZW0uZXhpdCgxKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbmYgPSBOdW1iZXJGb3JtYXQuZ2V0SW5zdGFuY2UoKTsKKyAgICAgICAgbmYuc2V0TWF4aW11bUZyYWN0aW9uRGlnaXRzKDIpOworICAgICAgICBwZXJjZW50ID0gTnVtYmVyRm9ybWF0LmdldFBlcmNlbnRJbnN0YW5jZSgpOworICAgICAgICAKKyAgICAgICAgY29sbFBlcmYuc2V0T3B0aW9ucygpOworICAgICAgICBjb2xsUGVyZi5yZWFkRGF0YUxpbmVzKCk7CisgICAgICAgIAorICAgICAgICBpZiAob3B0X2R1bXApIHsKKyAgICAgICAgICAgIGNvbGxQZXJmLmRvRHVtcCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAob3B0X3Fzb3J0KSB7CisgICAgICAgICAgICBjb2xsUGVyZi5kb1FTb3J0KCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChvcHRfYmluc2VhcmNoKSB7CisgICAgICAgICAgICBjb2xsUGVyZi5kb0JpbmFyeVNlYXJjaCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAob3B0X2tleWdlbikgeworICAgICAgICAgICAgY29sbFBlcmYuZG9LZXlHZW4oKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKG9wdF9rZXloaXN0KSB7CisgICAgICAgICAgICBjb2xsUGVyZi5kb0tleUhpc3QoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKG9wdF9pdGVydGVzdCkgeworICAgICAgICAgICAgY29sbFBlcmYuZG9JdGVyVGVzdCgpOworICAgICAgICB9CisgICAgICAgIAorICAgIH0KKyAgICAKKyAgICAvL0R1bXAgZmlsZSBsaW5lcywgQ0VzLCBTb3J0IEtleXMgaWYgcmVxdWVzdGVkCisgICAgdm9pZCBkb0R1bXAoKSB7CisgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBsaXN0LnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICAvL3ByaW50IHRoZSBsaW5lCisgICAgICAgICAgICBTdHJpbmcgbGluZSA9IGNvbS5pYm0uaWN1LmltcGwuVXRpbGl0eS5lc2NhcGUoKFN0cmluZylsaXN0LmdldChpKSk7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obGluZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIiAgQ0VzOiAgIik7CisgICAgICAgICAgICBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IgQ0VpdGVyID0gKChjb20uaWJtLmljdS50ZXh0LlJ1bGVCYXNlZENvbGxhdG9yKWljdUNvbCkuZ2V0Q29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yKGxpbmUpOworICAgICAgICAgICAgaW50IGNlOworICAgICAgICAgICAgaW50IGogPSAwOworICAgICAgICAgICAgZm9yKDs7KSB7CisgICAgICAgICAgICAgICAgY2UgPSBDRWl0ZXIubmV4dCgpOworICAgICAgICAgICAgICAgIGlmIChjZSA9PSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuTlVMTE9SREVSKSB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnQoKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgb3V0U3RyID0gSW50ZWdlci50b0hleFN0cmluZyhjZSk7IAorICAgICAgICAgICAgICAgIGZvciAoaW50IGxlbiA9IDA7IGxlbiA8IDggLSBvdXRTdHIubGVuZ3RoKCk7IGxlbisrKSB7CisgICAgICAgICAgICAgICAgICAgIG91dFN0ciA9JzAnICsgb3V0U3RyOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KG91dFN0ciArICIgICIpOworICAgICAgICAgICAgICAgIGlmKCsraiA+OCkgeworICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCJcbiAgICAgICAgIik7CisgICAgICAgICAgICAgICAgICAgIGogPSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIlxuICAgSUNVIFNvcnQgS2V5OiAiKTsKKyAgICAgICAgICAgIENvbGxhdGlvbktleSBjayA9ICgoY29tLmlibS5pY3UudGV4dC5SdWxlQmFzZWRDb2xsYXRvcilpY3VDb2wpLmdldENvbGxhdGlvbktleShsaW5lKTsKKyAgICAgICAgICAgIGJ5dGVbXSBja3MgPSBjay50b0J5dGVBcnJheSgpOworICAgICAgICAgICAgaiA9IDA7CisgICAgICAgICAgICBmb3IoaW50IGsgPSAwOyBrIDwgY2tzLmxlbmd0aDsgaysrKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIG91dFN0ciA9IEludGVnZXIudG9IZXhTdHJpbmcoY2tzW2tdKTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKG91dFN0ci5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgMTogICAgIG91dFN0ciA9ICcwJyArIG91dFN0cjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDg6ICAgICBvdXRTdHIgPSBvdXRTdHIuc3Vic3RyaW5nKDYpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludChvdXRTdHIpOworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIiAgIik7CisgICAgICAgICAgICAgICAgaisrOworICAgICAgICAgICAgICAgIGlmKGogPiAwICYmIGogJSAyMCA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIlxuICAgICAgICAgICAgICAgICAiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlxuIik7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICoKKyAgICAgKiAgIGRvUVNvcnQoKSAgICBUaGUgcXVpY2sgc29ydCB0aW1pbmcgdGVzdC4KKyAgICAgKgorICAgICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICovCisgICAgdm9pZCBkb1FTb3J0KCkgeworICAgICAgICBjYWxsR0MoKTsKKyAgICAgICAgU3RyaW5nW10gc29ydFRlc3RzID0gKFN0cmluZ1tdKSB0ZXN0cy5jbG9uZSgpOworICAgICAgICAvL0FkanVzdCBsb29wIGNvdW50IHRvIGNvbXBlbnNhdGUgZm9yIGZpbGUgc2l6ZS4gUVNvcnQgc2hvdWxkIGJlIG5sb2cobikgCisgICAgICAgIGRvdWJsZSBkTG9vcENvdW50ID0gb3B0X2xvb3BDb3VudCAqIDMwMDAgLyAoKE1hdGgubG9nKHRlc3RzLmxlbmd0aCkgLyBNYXRoLmxvZygxMCkqIHRlc3RzLmxlbmd0aCkpOworIAorICAgICAgICBpZihvcHRfdXNla2V5cykgeworICAgICAgICAgICAgZExvb3BDb3VudCAqPSA1OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpbnQgYWRqX2xvb3BDb3VudCA9IChpbnQpZExvb3BDb3VudDsKKyAgICAgICAgaWYoYWRqX2xvb3BDb3VudCA8IDEpIHsKKyAgICAgICAgICAgIGFkal9sb29wQ291bnQgPSAxOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBnbG9iYWxDb3VudCA9IDA7CisgICAgICAgIGxvbmcgc3RhcnRUaW1lID0gMDsKKyAgICAgICAgbG9uZyBlbmRUaW1lID0gMDsKKyAgICAgICAgaWYgKG9wdF9pY3UgJiYgb3B0X3VzZWtleXMpIHsKKyAgICAgICAgICAgIHN0YXJ0VGltZSA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICAgICAgcVNvcnRJbXBsX2ljdV91c2VrZXlzKHRlc3RzLCAwLCB0ZXN0cy5sZW5ndGggLTEsIGljdUNvbCk7CisgICAgICAgICAgICBlbmRUaW1lID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG9wdF9pY3UgJiYgIW9wdF91c2VrZXlzKXsKKyAgICAgICAgICAgIHN0YXJ0VGltZSA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICAgICAgcVNvcnRJbXBsX25va2V5cyh0ZXN0cywgMCwgdGVzdHMubGVuZ3RoIC0xLCBpY3VDb2wpOworICAgICAgICAgICAgZW5kVGltZSA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICB9CisgICAgICAgIGlmIChvcHRfamF2YSAmJiBvcHRfdXNla2V5cykgeworICAgICAgICAgICAgc3RhcnRUaW1lID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgICAgICBxU29ydEltcGxfamF2YV91c2VrZXlzKHRlc3RzLCAwLCB0ZXN0cy5sZW5ndGggLTEsIGphdmFDb2wpOworICAgICAgICAgICAgZW5kVGltZSA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICB9CisgICAgICAgIGlmIChvcHRfamF2YSAmJiAhb3B0X3VzZWtleXMpeworICAgICAgICAgICAgc3RhcnRUaW1lID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgICAgICBxU29ydEltcGxfbm9rZXlzKHRlc3RzLCAwLCB0ZXN0cy5sZW5ndGggLTEsIGphdmFDb2wpOworICAgICAgICAgICAgZW5kVGltZSA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICB9CisgICAgICAgIGxvbmcgZWxhcHNlZFRpbWUgPSBlbmRUaW1lIC0gc3RhcnRUaW1lOworICAgICAgICBpbnQgbnMgPSAoaW50KSgxMDAwMDAwICogZWxhcHNlZFRpbWUgLyAoZ2xvYmFsQ291bnQgKyAwLjApKTsKKyAgICAgICAgaWYgKCFvcHRfdGVyc2UpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigicXNvcnQ6ICB0b3RhbCAjIG9mIHN0cmluZyBjb21wYXJlcyA9ICIgKyBnbG9iYWxDb3VudCk7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oInFzb3J0OiAgdGltZSBwZXIgY29tcGFyZSA9ICIgKyBucyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obnMpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAqCisgICAgICogICAgZG9CaW5hcnlTZWFyY2goKSAgICBCaW5hcnkgU2VhcmNoIHRpbWluZyB0ZXN0LiAgRWFjaCBuYW1lIGZyb20gdGhlIGxpc3QKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIGlzIGxvb2tlZCB1cCBpbiB0aGUgZnVsbCBzb3J0ZWQgbGlzdCBvZiBuYW1lcy4KKyAgICAgKgorICAgICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICovCisgICAgdm9pZCBkb0JpbmFyeVNlYXJjaCgpIHsKKyAgICAgICAgY2FsbEdDKCk7CisgICAgICAgIGludCBnQ291bnQgPSAwOworICAgICAgICBpbnQgbG9vcHMgPSAwOworICAgICAgICBkb3VibGUgZExvb3BDb3VudCA9IG9wdF9sb29wQ291bnQgKiAzMDAwIC8gKE1hdGgubG9nKHRlc3RzLmxlbmd0aCkgLyBNYXRoLmxvZygxMCkqIHRlc3RzLmxlbmd0aCk7CisgICAgICAgIGxvbmcgc3RhcnRUaW1lID0gMDsKKyAgICAgICAgbG9uZyBlbGFwc2VkVGltZSA9IDA7CisgICAgICAgIAorICAgICAgICBpZihvcHRfdXNla2V5cykgeworICAgICAgICAgICAgZExvb3BDb3VudCAqPSA1OworICAgICAgICB9CisgICAgICAgIGludCBhZGpfbG9vcENvdW50ID0gKGludClkTG9vcENvdW50OworICAgICAgICBpZihhZGpfbG9vcENvdW50IDwgMSkgeworICAgICAgICAgICAgYWRqX2xvb3BDb3VudCA9IDE7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vaW50IG9wdDIgPSAwOworICAgICAgICAKKyAgICAgICAgZm9yKDs7KSB7ICAgLy9ub3QgcmVhbGx5IGEgbG9vcCwganVzdCBhbGxvd3MgImJyZWFrIiB0byB3b3JrLCB0byBzaW1wbGlmeSAKKyAgICAgICAgICAgICAgICAgICAgLy9pbmFkdmVydGFudGx5IHJ1bm5pbmcgbW9yZSB0aGFuIG9uZSB0ZXN0IHRocm91Z2ggaGVyZQorICAgICAgICAgICAgaWYob3B0X3N0cmNtcCkgeworICAgICAgICAgICAgICAgIGludCByID0gMDsKKyAgICAgICAgICAgICAgICBzdGFydFRpbWUgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgICAgICAgICBmb3IobG9vcHMgPSAwOyBsb29wcyA8IGFkal9sb29wQ291bnQ7IGxvb3BzKyspIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCB0ZXN0cy5sZW5ndGg7IGorKykgeworICAgICAgICAgICAgICAgICAgICAgICAgaW50IGhpID0gdGVzdHMubGVuZ3RoLTE7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbG8gPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgaW50IGd1ZXNzID0gLTE7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IoOzspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbmV3R3Vlc3MgPSAoaGkgKyBsbykgLyAyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG5ld0d1ZXNzID09IGd1ZXNzKXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1ZXNzID0gbmV3R3Vlc3M7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IHRlc3RzW2pdLmNvbXBhcmVUbyh0ZXN0c1tndWVzc10pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdDb3VudCsrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHIgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpID0gZ3Vlc3M7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG8gPSBndWVzczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxhcHNlZFRpbWUgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSAtIHN0YXJ0VGltZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG9wdF9zdHJjbXBDUE8pIHsKKyAgICAgICAgICAgICAgICBpbnQgciA9IDA7CisgICAgICAgICAgICAgICAgc3RhcnRUaW1lID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgICAgICAgICAgZm9yKGxvb3BzID0gMDsgbG9vcHMgPCBhZGpfbG9vcENvdW50OyBsb29wcysrKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgdGVzdHMubGVuZ3RoOyBqKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBoaSA9IHRlc3RzLmxlbmd0aC0xOworICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxvID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBndWVzcyA9IC0xOworICAgICAgICAgICAgICAgICAgICAgICAgZm9yKDs7KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5ld0d1ZXNzID0gKGhpICsgbG8pIC8gMjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihuZXdHdWVzcyA9PSBndWVzcyl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWVzcyA9IG5ld0d1ZXNzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBjb20uaWJtLmljdS50ZXh0Lk5vcm1hbGl6ZXIuY29tcGFyZSh0ZXN0c1tqXSwgdGVzdHNbZ3Vlc3NdLCBOb3JtYWxpemVyLkNPTVBBUkVfQ09ERV9QT0lOVF9PUkRFUik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ0NvdW50Kys7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYociA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGkgPSBndWVzczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbyA9IGd1ZXNzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbGFwc2VkVGltZSA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpIC0gc3RhcnRUaW1lOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAob3B0X2ljdSkgeworICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaW50IHIgPSAwOworICAgICAgICAgICAgICAgIHN0YXJ0VGltZSA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICAgICAgICAgIGZvciAobG9vcHMgPSAwOyBsb29wcyA8IGFkal9sb29wQ291bnQ7IGxvb3BzKyspIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCB0ZXN0cy5sZW5ndGg7IGorKykgeworICAgICAgICAgICAgICAgICAgICAgICAgaW50IGhpID0gdGVzdHMubGVuZ3RoIC0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBsbyA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZ3Vlc3MgPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbmV3R3Vlc3MgPSAoaGkgKyBsbykgLyAyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdHdWVzcyA9PSBndWVzcykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3Vlc3MgPSBuZXdHdWVzczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0X3VzZWtleXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tLmlibS5pY3UudGV4dC5Db2xsYXRpb25LZXkgc29ydEtleTEgPSBpY3VDb2wuZ2V0Q29sbGF0aW9uS2V5KHRlc3RzW2pdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tLmlibS5pY3UudGV4dC5Db2xsYXRpb25LZXkgc29ydEtleTIgPSBpY3VDb2wuZ2V0Q29sbGF0aW9uS2V5KHRlc3RzW2d1ZXNzXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBzb3J0S2V5MS5jb21wYXJlVG8oc29ydEtleTIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnQ291bnQgKys7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGljdUNvbC5jb21wYXJlKHRlc3RzW2pdLCB0ZXN0c1tndWVzc10pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnQ291bnQrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpID0gZ3Vlc3M7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG8gPSBndWVzczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxhcHNlZFRpbWUgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSAtIHN0YXJ0VGltZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChvcHRfamF2YSkgeworICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaW50IHIgPSAwOworICAgICAgICAgICAgICAgIHN0YXJ0VGltZSA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICAgICAgICAgIGZvciAobG9vcHMgPSAwOyBsb29wcyA8IGFkal9sb29wQ291bnQ7IGxvb3BzKyspIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCB0ZXN0cy5sZW5ndGg7IGorKykgeworICAgICAgICAgICAgICAgICAgICAgICAgaW50IGhpID0gdGVzdHMubGVuZ3RoIC0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBsbyA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZ3Vlc3MgPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbmV3R3Vlc3MgPSAoaGkgKyBsbykgLyAyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdHdWVzcyA9PSBndWVzcykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3Vlc3MgPSBuZXdHdWVzczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0X3VzZWtleXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS50ZXh0LkNvbGxhdGlvbktleSBzb3J0S2V5MSA9IGphdmFDb2wuZ2V0Q29sbGF0aW9uS2V5KHRlc3RzW2pdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamF2YS50ZXh0LkNvbGxhdGlvbktleSBzb3J0S2V5MiA9IGphdmFDb2wuZ2V0Q29sbGF0aW9uS2V5KHRlc3RzW2d1ZXNzXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBzb3J0S2V5MS5jb21wYXJlVG8oc29ydEtleTIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnQ291bnQgKys7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGphdmFDb2wuY29tcGFyZSh0ZXN0c1tqXSwgdGVzdHNbZ3Vlc3NdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ0NvdW50Kys7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyIDwgMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaSA9IGd1ZXNzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvID0gZ3Vlc3M7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsYXBzZWRUaW1lID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkgLSBzdGFydFRpbWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsgCisgICAgICAgIH0KKyAgICAgICAgaW50IG5zID0gKGludCkoKGZsb2F0KSgxMDAwMDAwKSAqIChmbG9hdCllbGFwc2VkVGltZSAvIChmbG9hdClnQ291bnQpOworICAgICAgICBpZiAoIW9wdF90ZXJzZSkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJiaW5hcnkgc2VhcmNoOiAgdG90YWwgIyBvZiBzdHJpbmcgY29tcGFyZXMgPSAiICsgZ0NvdW50KTsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiYmluYXJ5IHNlYXJjaDogIGNvbXBhcmVzIHBlciBsb29wID0gIiArIGdDb3VudCAvIGxvb3BzKTsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiYmluYXJ5IHNlYXJjaDogIHRpbWUgcGVyIGNvbXBhcmUgPSAiICsgbnMpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKG5zKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgKgorICAgICAqICAgZG9LZXlHZW4oKSAgICAgS2V5IEdlbmVyYXRpb24gVGltaW5nIFRlc3QKKyAgICAgKgorICAgICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICovCisgICAgdm9pZCBkb0tleUdlbigpIHsKKyAgICAgICAgY2FsbEdDKCk7CisgICAgICAgIAorICAgICAgICAvLyBBZGp1c3QgbG9vcCBjb3VudCB0byBjb21wZW5zYXRlIGZvciBmaWxlIHNpemUuICAgU2hvdWxkIGJlIG9yZGVyIG4KKyAgICAgICAgZG91YmxlIGRMb29wQ291bnQgPSBvcHRfbG9vcENvdW50ICogKDEwMDAuMCAvICAoZG91YmxlKWxpc3Quc2l6ZSgpKTsKKyAgICAgICAgaW50IGFkal9sb29wQ291bnQgPSAoaW50KWRMb29wQ291bnQ7CisgICAgICAgIGlmIChhZGpfbG9vcENvdW50IDwgMSkgYWRqX2xvb3BDb3VudCA9IDE7CisKKyAgICAgICAgbG9uZyBzdGFydFRpbWUgPSAwOworICAgICAgICBsb25nIHRvdGFsS2V5TGVuID0gMDsKKyAgICAgICAgbG9uZyB0b3RhbENoYXJzID0gMDsKKyAgICAgICAgaWYgKG9wdF9qYXZhKSB7CisgICAgICAgICAgICBzdGFydFRpbWUgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgICAgIGZvciAoaW50IGxvb3BzPTA7IGxvb3BzPGFkal9sb29wQ291bnQ7IGxvb3BzKyspIHsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBsaW5lPTA7IGxpbmUgPCB0ZXN0cy5sZW5ndGg7IGxpbmUrKykgeworICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpTG9vcD0wOyBpTG9vcCA8IG9wdF9pTG9vcENvdW50OyBpTG9vcCsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbENoYXJzICs9IHRlc3RzW2xpbmVdLmxlbmd0aCgpOworICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZVtdIHNvcnRLZXkgPSBqYXZhQ29sLmdldENvbGxhdGlvbktleSh0ZXN0c1tsaW5lXSkudG9CeXRlQXJyYXkoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsS2V5TGVuICs9IHNvcnRLZXkubGVuZ3RoOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc3RhcnRUaW1lID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgICAgICBmb3IgKGludCBsb29wcz0wOyBsb29wczxhZGpfbG9vcENvdW50OyBsb29wcysrKSB7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgbGluZT0wOyBsaW5lIDwgdGVzdHMubGVuZ3RoOyBsaW5lKyspIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaUxvb3A9MDsgaUxvb3AgPCBvcHRfaUxvb3BDb3VudDsgaUxvb3ArKykgeworICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxDaGFycyArPSB0ZXN0c1tsaW5lXS5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVbXSBzb3J0S2V5ID0gaWN1Q29sLmdldENvbGxhdGlvbktleSh0ZXN0c1tsaW5lXSkudG9CeXRlQXJyYXkoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsS2V5TGVuICs9IHNvcnRLZXkubGVuZ3RoOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBsb25nIGVsYXBzZWRUaW1lID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkgLSBzdGFydFRpbWU7CisgICAgICAgIGxvbmcgbnMgPSAobG9uZykoMTAwMDAwMCAqIGVsYXBzZWRUaW1lIC8gKGFkal9sb29wQ291bnQgKiB0ZXN0cy5sZW5ndGggKyAwLjApKTsKKyAgICAgICAgaWYgKCFvcHRfdGVyc2UpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiU29ydCBLZXkgR2VuZXJhdGlvbjogIHRvdGFsICMgb2Yga2V5cyA9IiArIGFkal9sb29wQ291bnQgKiB0ZXN0cy5sZW5ndGgpOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJTb3J0IEtleSBHZW5lcmF0aW9uOiAgdGltZSBwZXIga2V5ID0gIiArIG5zICsgIiBucyIpOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJLZXkgTGVuZ3RoIC8gY2hhcmFjdGVyID0gIiArIG5mLmZvcm1hdCh0b3RhbEtleUxlbiAvICh0b3RhbENoYXJzICsgMC4wKSkpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludChucyArICIsICAiKTsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihuZi5mb3JtYXQodG90YWxLZXlMZW4gLyAodG90YWxDaGFycyArIDAuMCkpICsgIiwgIik7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICoKKyAgICAgKiAgICBkb0tleUhpc3QoKSAgICAgICBPdXRwdXQgYSB0YWJsZSBvZiBkYXRhIGZvciBhdmVyYWdlIHNvcnQga2V5IHNpemUgdnMuIHN0cmluZyBsZW5ndGguCisgICAgICoKKyAgICAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAqLworICAgIHZvaWQgZG9LZXlIaXN0KCkgeworICAgICAgICBjYWxsR0MoKTsKKyAgICAgICAgaW50ICAgICBtYXhMZW4gPSAwOworCisgICAgICAgIC8vIEZpbmQgdGhlIG1heGltdW0gc3RyaW5nIGxlbmd0aAorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRlc3RzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBpZiAodGVzdHNbaV0ubGVuZ3RoKCkgPiBtYXhMZW4pIG1heExlbiA9IHRlc3RzW2ldLmxlbmd0aCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpbnRbXSBhY2N1bXVsYXRlZExlbiAgPSBuZXcgaW50W21heExlbiArIDFdOworICAgICAgICBpbnRbXSBudW1LZXlzT2ZTaXplICAgPSBuZXcgaW50W21heExlbiArIDFdOworICAgICAgICAKKyAgICAgICAgLy8gRmlsbCB0aGUgYXJyYXlzLi4uCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGVzdHMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGludCBsZW4gPSB0ZXN0c1tpXS5sZW5ndGgoKTsKKyAgICAgICAgICAgIGFjY3VtdWxhdGVkTGVuW2xlbl0gKz0gaWN1Q29sLmdldENvbGxhdGlvbktleSh0ZXN0c1tpXSkudG9CeXRlQXJyYXkoKS5sZW5ndGg7CisgICAgICAgICAgICBudW1LZXlzT2ZTaXplW2xlbl0gICs9IDE7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIEFuZCB3cml0ZSBvdXQgYXZlcmFnZXMKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJTdHJpbmcgTGVuZ3RoLCAgQXZnIEtleSBMZW5ndGgsICBBdmcgS2V5IExlbiBwZXIgY2hhciIpOworICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8PSBtYXhMZW47IGkrKykgeworICAgICAgICAgICAgaWYgKG51bUtleXNPZlNpemVbaV0gPiAwKSB7CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGkgKyAiLCAiICsgbmYuZm9ybWF0KGFjY3VtdWxhdGVkTGVuW2ldIC8gKG51bUtleXNPZlNpemVbaV0rIDAuMCkpICsgIiwgIiAKKyAgICAgICAgICAgICAgICAgICAgKyBuZi5mb3JtYXQoYWNjdW11bGF0ZWRMZW5baV0gLyAobnVtS2V5c09mU2l6ZVtpXSAqIGkgKyAwLjApKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgfQorICAgIAorICAgIHZvaWQgZG9Gb3J3YXJkSXRlclRlc3QoKSB7CisgICAgICAgIGNhbGxHQygpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCJcblxuUGVyZm9ybWluZyBmb3J3YXJkIGl0ZXJhdGlvbiBwZXJmb3JtYW5jZSB0ZXN0IHdpdGggIik7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigicGVyZm9ybWFuY2UgdGVzdCBvbiBzdHJpbmdzIGZyb20gZmlsZSAtLS0tLS0tLS0tLSIpOworICAgIAorICAgICAgICBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IgaXRlciA9ICgoUnVsZUJhc2VkQ29sbGF0b3IpaWN1Q29sKS5nZXRDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IoIiIpOworICAgICAgICAKKyAgICAgICAgaW50IGdDb3VudCA9IDA7CisgICAgICAgIGludCBjb3VudCA9IDA7CisgICAgICAgIGxvbmcgc3RhcnRUaW1lID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgIHdoaWxlIChjb3VudCA8IG9wdF9sb29wQ291bnQpIHsKKyAgICAgICAgICAgIGludCBsaW5lY291bnQgPSAwOworICAgICAgICAgICAgd2hpbGUgKGxpbmVjb3VudCA8IHRlc3RzLmxlbmd0aCkgeworICAgICAgICAgICAgICAgIFN0cmluZyBzdHIgPSB0ZXN0c1tsaW5lY291bnRdOworICAgICAgICAgICAgICAgIGl0ZXIuc2V0VGV4dChzdHIpOworICAgICAgICAgICAgICAgIHdoaWxlIChpdGVyLm5leHQoKSAhPSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuTlVMTE9SREVSKSB7CisgICAgICAgICAgICAgICAgICAgIGdDb3VudCsrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBsaW5lY291bnQgKys7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb3VudCArKzsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbG9uZyBlbGFwc2VkVGltZSA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpIC0gc3RhcnRUaW1lOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImVsYXBzZWRUaW1lICIgKyBlbGFwc2VkVGltZSArICIgbXMiKTsKKyAgICAgICAgCisgICAgICAgIC8vIGVtcHR5IGxvb3AgcmVjYWxjdWxhdGlvbgorICAgICAgICBjb3VudCA9IDA7CisgICAgICAgIHN0YXJ0VGltZSA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICB3aGlsZSAoY291bnQgPCBvcHRfbG9vcENvdW50KSB7IAorICAgICAgICAgICAgaW50IGxpbmVjb3VudCA9IDA7CisgICAgICAgICAgICB3aGlsZSAobGluZWNvdW50IDwgdGVzdHMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHN0ciA9IHRlc3RzW2xpbmVjb3VudF07CisgICAgICAgICAgICAgICAgaXRlci5zZXRUZXh0KHN0cik7CisgICAgICAgICAgICAgICAgbGluZWNvdW50ICsrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY291bnQgKys7CisgICAgICAgIH0KKyAgICAgICAgZWxhcHNlZFRpbWUgLT0gKFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpIC0gc3RhcnRUaW1lKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJlbGFwc2VkVGltZSAiICsgZWxhcHNlZFRpbWUgKyAiIG1zIik7CisKKyAgICAgICAgaW50IG5zID0gKGludCkoMTAwMDAwMCAqIGVsYXBzZWRUaW1lIC8gKGdDb3VudCArIDAuMCkpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRvdGFsIG51bWJlciBvZiBzdHJpbmdzIGNvbXBhcmVkICIgKyB0ZXN0cy5sZW5ndGggCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiaW4gIiArIG9wdF9sb29wQ291bnQgKyAiIGxvb3BzIik7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQXZlcmFnZSB0aW1lIHBlciBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IubmV4dCgpIG5hbm8gc2Vjb25kcyAiICsgbnMpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oInBlcmZvcm1hbmNlIHRlc3Qgb24gc2tpcHBlZC01IGNvbmNhdGVuYXRlZCBzdHJpbmdzIGZyb20gZmlsZSAtLS0tLS0tLS0tLSIpOworICAgICAgICAKKyAgICAgICAgU3RyaW5nIHRvdGFsU3RyID0gIiI7CisgICAgICAgIGludCAgICBzdHJsZW4gPSAwOworICAgICAgICAvLyBhcHBlbmRpbmcgYWxsIHRoZSBzdHJpbmdzCisgICAgICAgIGludCBsaW5lY291bnQgPSAwOworICAgICAgICB3aGlsZSAobGluZWNvdW50IDwgdGVzdHMubGVuZ3RoKSB7CisgICAgICAgICAgICB0b3RhbFN0ciArPSB0ZXN0c1tsaW5lY291bnRdOworICAgICAgICAgICAgc3RybGVuICs9IHRlc3RzW2xpbmVjb3VudF0ubGVuZ3RoKCk7CisgICAgICAgICAgICBsaW5lY291bnQgKys7CisgICAgICAgIH0KKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJUb3RhbCBzaXplIG9mIHN0cmluZ3MgIiArIHN0cmxlbik7CisgICAgICAgIAorICAgICAgICBnQ291bnQgPSAwOworICAgICAgICBjb3VudCAgPSAwOworICAgICAgICBpdGVyID0gKChSdWxlQmFzZWRDb2xsYXRvcilpY3VDb2wpLmdldENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvcih0b3RhbFN0cik7CisgICAgICAgIHN0cmxlbiAtPSA1OyAvLyBhbnkgbGVmdCBvdmVyIGNoYXJhY3RlcnMgYXJlIG5vdCBpdGVyYXRlZCwKKyAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgaXMgdG8gZW5zdXJlIHRoZSBiYWNrd2FyZHMgYW5kIGZvcndhcmRzIGl0ZXJhdG9ycworICAgICAgICAgICAgICAgICAgICAgLy8gZ2V0cyB0aGUgc2FtZSBwb3NpdGlvbgorICAgICAgICBpbnQgc3RyaW5kZXggPSAwOworICAgICAgICBzdGFydFRpbWUgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgd2hpbGUgKGNvdW50IDwgb3B0X2xvb3BDb3VudCkgeworICAgICAgICAgICAgaW50IGNvdW50NSA9IDU7CisgICAgICAgICAgICBzdHJpbmRleCA9IDA7CisgICAgICAgICAgICBpdGVyLnNldE9mZnNldChzdHJpbmRleCk7CisgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgICAgIGlmIChpdGVyLm5leHQoKSA9PSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuTlVMTE9SREVSKSB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBnQ291bnQrKzsKKyAgICAgICAgICAgICAgICBjb3VudDUgLS07CisgICAgICAgICAgICAgICAgaWYgKGNvdW50NSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIHN0cmluZGV4ICs9IDEwOworICAgICAgICAgICAgICAgICAgICBpZiAoc3RyaW5kZXggPiBzdHJsZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGl0ZXIuc2V0T2Zmc2V0KHN0cmluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgY291bnQ1ID0gNTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb3VudCArKzsKKyAgICAgICAgfQorICAgIAorICAgICAgICBlbGFwc2VkVGltZSA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpIC0gc3RhcnRUaW1lOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImVsYXBzZWRUaW1lICIgKyBlbGFwc2VkVGltZSk7CisgICAgICAgIAorICAgICAgICAvLyBlbXB0eSBsb29wIHJlY2FsY3VsYXRpb24KKyAgICAgICAgaW50IHRlbXBnQ291bnQgPSAwOworICAgICAgICBjb3VudCA9IDA7CisgICAgICAgIHN0YXJ0VGltZSA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICB3aGlsZSAoY291bnQgPCBvcHRfbG9vcENvdW50KSB7CisgICAgICAgICAgICBpbnQgY291bnQ1ID0gNTsKKyAgICAgICAgICAgIHN0cmluZGV4ID0gMDsKKyAgICAgICAgICAgIGl0ZXIuc2V0T2Zmc2V0KHN0cmluZGV4KTsKKyAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgdGVtcGdDb3VudCArKzsKKyAgICAgICAgICAgICAgICBjb3VudDUgLS07CisgICAgICAgICAgICAgICAgaWYgKGNvdW50NSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIHN0cmluZGV4ICs9IDEwOworICAgICAgICAgICAgICAgICAgICBpZiAoc3RyaW5kZXggPiBzdHJsZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGl0ZXIuc2V0T2Zmc2V0KHN0cmluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgY291bnQ1ID0gNTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb3VudCArKzsKKyAgICAgICAgfQorICAgICAgICBlbGFwc2VkVGltZSAtPSAoU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkgLSBzdGFydFRpbWUpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImVsYXBzZWRUaW1lICIgKyBlbGFwc2VkVGltZSk7CisgICAgCisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiZ0NvdW50ICIgKyBnQ291bnQpOworICAgICAgICBucyA9IChpbnQpKDEwMDAwMDAgKiBlbGFwc2VkVGltZSAvIChnQ291bnQgKyAwLjApKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJBdmVyYWdlIHRpbWUgcGVyIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5uZXh0KCkgbmFubyBzZWNvbmRzICIgKyBucyk7CisgICAgfQorICAgIAorICAgIHZvaWQgZG9CYWNrd2FyZEl0ZXJUZXN0KCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCJcblxuUGVyZm9ybWluZyBiYWNrd2FyZCBpdGVyYXRpb24gcGVyZm9ybWFuY2UgdGVzdCB3aXRoICIpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oInBlcmZvcm1hbmNlIHRlc3Qgb24gc3RyaW5ncyBmcm9tIGZpbGUgLS0tLS0tLS0tLS1cbiIpOworICAgICAgICAKKyAgICAgICAgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yIGl0ZXIgPSAoKFJ1bGVCYXNlZENvbGxhdG9yKWljdUNvbCkuZ2V0Q29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yKCIiKTsKKyAgICAgICAgCisgICAgICAgIGludCBnQ291bnQgPSAwOworICAgICAgICBpbnQgY291bnQgPSAwOworICAgICAgICBsb25nIHN0YXJ0VGltZSA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICB3aGlsZSAoY291bnQgPCBvcHRfbG9vcENvdW50KSB7CisgICAgICAgICAgICBpbnQgbGluZWNvdW50ID0gMDsKKyAgICAgICAgICAgIHdoaWxlIChsaW5lY291bnQgPCB0ZXN0cy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgc3RyID0gdGVzdHNbbGluZWNvdW50XTsKKyAgICAgICAgICAgICAgICBpdGVyLnNldFRleHQoc3RyKTsKKyAgICAgICAgICAgICAgICB3aGlsZSAoaXRlci5wcmV2aW91cygpICE9IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5OVUxMT1JERVIpIHsKKyAgICAgICAgICAgICAgICAgICAgZ0NvdW50Kys7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGxpbmVjb3VudCArKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvdW50ICsrOworICAgICAgICB9CisgICAgICAgIGxvbmcgZWxhcHNlZFRpbWUgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSAtIHN0YXJ0VGltZTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJlbGFwc2VkVGltZSAiICsgZWxhcHNlZFRpbWUgKyAiIG1zIik7CisgICAgICAgIAorICAgICAgICAvLyBlbXB0eSBsb29wIHJlY2FsY3VsYXRpb24KKyAgICAgICAgY291bnQgPSAwOworICAgICAgICBzdGFydFRpbWUgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgd2hpbGUgKGNvdW50IDwgb3B0X2xvb3BDb3VudCkgeworICAgICAgICAgICAgaW50IGxpbmVjb3VudCA9IDA7CisgICAgICAgICAgICB3aGlsZSAobGluZWNvdW50IDwgdGVzdHMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHN0ciA9IHRlc3RzW2xpbmVjb3VudF07CisgICAgICAgICAgICAgICAgaXRlci5zZXRUZXh0KHN0cik7CisgICAgICAgICAgICAgICAgbGluZWNvdW50ICsrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY291bnQgKys7CisgICAgICAgIH0KKyAgICAgICAgZWxhcHNlZFRpbWUgLT0gKFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpIC0gc3RhcnRUaW1lKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJlbGFwc2VkVGltZSAiICsgZWxhcHNlZFRpbWUgKyAiIG1zIik7CisgICAgICAgIAorICAgICAgICBpbnQgbnMgPSAoaW50KSgxMDAwMDAwICogZWxhcHNlZFRpbWUgLyAoZ0NvdW50ICsgMC4wKSk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVG90YWwgbnVtYmVyIG9mIHN0cmluZ3MgY29tcGFyZWQgIiArIHRlc3RzLmxlbmd0aCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArICJpbiAiICsgb3B0X2xvb3BDb3VudCArICIgbG9vcHMiKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJBdmVyYWdlIHRpbWUgcGVyIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5wcmV2aW91cygpIG5hbm8gc2Vjb25kcyAiICsgbnMpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oInBlcmZvcm1hbmNlIHRlc3Qgb24gc2tpcHBlZC01IGNvbmNhdGVuYXRlZCBzdHJpbmdzIGZyb20gZmlsZSAtLS0tLS0tLS0tLSIpOworICAgIAorICAgICAgICBTdHJpbmcgdG90YWxTdHIgPSAiIjsKKyAgICAgICAgaW50ICAgIHN0cmxlbiA9IDA7CisgICAgICAgIC8vIGFwcGVuZGluZyBhbGwgdGhlIHN0cmluZ3MKKyAgICAgICAgaW50IGxpbmVjb3VudCA9IDA7CisgICAgICAgIHdoaWxlIChsaW5lY291bnQgPCB0ZXN0cy5sZW5ndGgpIHsKKyAgICAgICAgICAgIHRvdGFsU3RyICs9IHRlc3RzW2xpbmVjb3VudF07CisgICAgICAgICAgICBzdHJsZW4gKz0gdGVzdHNbbGluZWNvdW50XS5sZW5ndGgoKTsKKyAgICAgICAgICAgIGxpbmVjb3VudCArKzsKKyAgICAgICAgfQorICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRvdGFsIHNpemUgb2Ygc3RyaW5ncyAiICsgc3RybGVuKTsKKyAgICAgICAgCisgICAgICAgIGdDb3VudCA9IDA7CisgICAgICAgIGNvdW50ICA9IDA7CisgICAgCisgICAgICAgIGl0ZXIgPSAoKFJ1bGVCYXNlZENvbGxhdG9yKWljdUNvbCkuZ2V0Q29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yKHRvdGFsU3RyKTsKKyAgICAgICAgaW50IHN0cmluZGV4ID0gMDsKKyAgICAgICAgc3RhcnRUaW1lID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgIHdoaWxlIChjb3VudCA8IG9wdF9sb29wQ291bnQpIHsKKyAgICAgICAgICAgIGludCBjb3VudDUgPSA1OworICAgICAgICAgICAgc3RyaW5kZXggPSA1OworICAgICAgICAgICAgaXRlci5zZXRPZmZzZXQoc3RyaW5kZXgpOworICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXRlci5wcmV2aW91cygpID09IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5OVUxMT1JERVIpIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICBnQ291bnQgKys7CisgICAgICAgICAgICAgICAgIGNvdW50NSAtLTsKKyAgICAgICAgICAgICAgICAgaWYgKGNvdW50NSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICBzdHJpbmRleCArPSAxMDsKKyAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJpbmRleCA+IHN0cmxlbikgeworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICBpdGVyLnNldE9mZnNldChzdHJpbmRleCk7CisgICAgICAgICAgICAgICAgICAgICBjb3VudDUgPSA1OworICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb3VudCArKzsKKyAgICAgICAgfQorICAgIAorICAgICAgICBlbGFwc2VkVGltZSA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpIC0gc3RhcnRUaW1lOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImVsYXBzZWRUaW1lICIgKyBlbGFwc2VkVGltZSk7CisgICAgICAgIAorICAgICAgICAvLyBlbXB0eSBsb29wIHJlY2FsY3VsYXRpb24KKyAgICAgICAgY291bnQgPSAwOworICAgICAgICBpbnQgdGVtcGdDb3VudCA9IDA7CisgICAgICAgIHN0YXJ0VGltZSA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICB3aGlsZSAoY291bnQgPCBvcHRfbG9vcENvdW50KSB7CisgICAgICAgICAgICBpbnQgY291bnQ1ID0gNTsKKyAgICAgICAgICAgIHN0cmluZGV4ID0gNTsKKyAgICAgICAgICAgIGl0ZXIuc2V0T2Zmc2V0KHN0cmluZGV4KTsKKyAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgIHRlbXBnQ291bnQgKys7CisgICAgICAgICAgICAgICAgIGNvdW50NSAtLTsKKyAgICAgICAgICAgICAgICAgaWYgKGNvdW50NSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICBzdHJpbmRleCArPSAxMDsKKyAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJpbmRleCA+IHN0cmxlbikgeworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICBpdGVyLnNldE9mZnNldChzdHJpbmRleCk7CisgICAgICAgICAgICAgICAgICAgICBjb3VudDUgPSA1OworICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb3VudCArKzsKKyAgICAgICAgfQorICAgICAgICBlbGFwc2VkVGltZSAtPSAoU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkgLSBzdGFydFRpbWUpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImVsYXBzZWRUaW1lICIgKyBlbGFwc2VkVGltZSk7CisgICAgCisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiZ0NvdW50ICIgKyBnQ291bnQpOworICAgICAgICBucyA9IChpbnQpKDEwMDAwMDAgKiBlbGFwc2VkVGltZSAvIChnQ291bnQgKyAwLjApKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJBdmVyYWdlIHRpbWUgcGVyIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5wcmV2aW91cygpIG5hbm8gc2Vjb25kcyAiICsgbnMpOworICAgIH0KKyAgICAKKyAgICAKKyAgICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgKgorICAgICAqICAgIGRvSXRlclRlc3QoKSAgICAgICBJdGVyYXRpb24gdGVzdAorICAgICAqCisgICAgICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgKi8KKyAgICB2b2lkIGRvSXRlclRlc3QoKSB7CisgICAgICAgIGRvRm9yd2FyZEl0ZXJUZXN0KCk7CisgICAgICAgIGRvQmFja3dhcmRJdGVyVGVzdCgpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHNldE9wdGlvbnMoKSB7CisgICAgICAgIAorICAgICAgICBpZiAob3B0X2phdmEpIHsKKyAgICAgICAgICAgIG9wdF9pY3UgPSBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKG9wdF9ydWxlcy5sZW5ndGgoKSAhPSAwKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGljdUNvbCA9IG5ldyBjb20uaWJtLmljdS50ZXh0LlJ1bGVCYXNlZENvbGxhdG9yKGdldENvbGxhdGlvblJ1bGVzKG9wdF9ydWxlcykpOworICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkNhbm5vdCBvcGVuIHJ1bGVzOiIgKyBlLmdldE1lc3NhZ2UoKSk7CisgICAgICAgICAgICAgICAgU3lzdGVtLmV4aXQoMSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpY3VDb2wgPSBjb20uaWJtLmljdS50ZXh0LkNvbGxhdG9yLmdldEluc3RhbmNlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhbGVVdGlsaXR5LmdldExvY2FsZUZyb21OYW1lKG9wdF9sb2NhbGUpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgamF2YUNvbCA9IGphdmEudGV4dC5Db2xsYXRvci5nZXRJbnN0YW5jZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYWxlVXRpbGl0eS5nZXRMb2NhbGVGcm9tTmFtZShvcHRfbG9jYWxlKSk7CisgICAgICAgIAorICAgICAgICBpZiAob3B0X25vcm0pIHsKKyAgICAgICAgICAgIGphdmFDb2wuc2V0RGVjb21wb3NpdGlvbihqYXZhLnRleHQuQ29sbGF0b3IuQ0FOT05JQ0FMX0RFQ09NUE9TSVRJT04pOworICAgICAgICAgICAgaWN1Q29sLnNldERlY29tcG9zaXRpb24oY29tLmlibS5pY3UudGV4dC5Db2xsYXRvci5DQU5PTklDQUxfREVDT01QT1NJVElPTik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChvcHRfZnJlbmNoICYmIG9wdF9mcmVuY2hvZmYpIHsKKyAgICAgICAgICAgIFN5c3RlbS5lcnIucHJpbnRsbigiRXJyb3I6IHNwZWNpZmllZCBib3RoIC1mcmVuY2ggYW5kIC1mcmVuY2hvZmYgb3B0aW9ucy4iKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKG9wdF9mcmVuY2gpIHsKKyAgICAgICAgICAgICgoY29tLmlibS5pY3UudGV4dC5SdWxlQmFzZWRDb2xsYXRvcilpY3VDb2wpLnNldEZyZW5jaENvbGxhdGlvbih0cnVlKTsKKyAgICAgICAgfQorICAgICAgICBpZiAob3B0X2ZyZW5jaG9mZikgeworICAgICAgICAgICAgKChjb20uaWJtLmljdS50ZXh0LlJ1bGVCYXNlZENvbGxhdG9yKWljdUNvbCkuc2V0RnJlbmNoQ29sbGF0aW9uKGZhbHNlKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKG9wdF9sb3dlcikgeworICAgICAgICAgICAgKChjb20uaWJtLmljdS50ZXh0LlJ1bGVCYXNlZENvbGxhdG9yKWljdUNvbCkuc2V0TG93ZXJDYXNlRmlyc3QodHJ1ZSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChvcHRfdXBwZXIpIHsKKyAgICAgICAgICAgICgoY29tLmlibS5pY3UudGV4dC5SdWxlQmFzZWRDb2xsYXRvcilpY3VDb2wpLnNldFVwcGVyQ2FzZUZpcnN0KHRydWUpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAob3B0X3NoaWZ0ZWQpIHsKKyAgICAgICAgICAgICgoY29tLmlibS5pY3UudGV4dC5SdWxlQmFzZWRDb2xsYXRvcilpY3VDb2wpLnNldEFsdGVybmF0ZUhhbmRsaW5nU2hpZnRlZCh0cnVlKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKG9wdF9sZXZlbCAhPSAwKSB7CisgICAgICAgICAgICBzd2l0Y2ggKG9wdF9sZXZlbCkgeworICAgICAgICAgICAgICAgIGNhc2UgMSA6CisgICAgICAgICAgICAgICAgICAgICAgICBqYXZhQ29sLnNldFN0cmVuZ3RoKGphdmEudGV4dC5Db2xsYXRvci5QUklNQVJZKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGljdUNvbC5zZXRTdHJlbmd0aChjb20uaWJtLmljdS50ZXh0LkNvbGxhdG9yLlBSSU1BUlkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAyIDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGphdmFDb2wuc2V0U3RyZW5ndGgoamF2YS50ZXh0LkNvbGxhdG9yLlNFQ09OREFSWSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpY3VDb2wuc2V0U3RyZW5ndGgoY29tLmlibS5pY3UudGV4dC5Db2xsYXRvci5TRUNPTkRBUlkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAzIDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGphdmFDb2wuc2V0U3RyZW5ndGgoamF2YS50ZXh0LkNvbGxhdG9yLlRFUlRJQVJZKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGljdUNvbC5zZXRTdHJlbmd0aChjb20uaWJtLmljdS50ZXh0LkNvbGxhdG9yLlRFUlRJQVJZKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgNCA6CisgICAgICAgICAgICAgICAgICAgICAgICBpY3VDb2wuc2V0U3RyZW5ndGgoY29tLmlibS5pY3UudGV4dC5Db2xsYXRvci5RVUFURVJOQVJZKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgNSA6CisgICAgICAgICAgICAgICAgICAgICAgICBqYXZhQ29sLnNldFN0cmVuZ3RoKGphdmEudGV4dC5Db2xsYXRvci5JREVOVElDQUwpOworICAgICAgICAgICAgICAgICAgICAgICAgaWN1Q29sLnNldFN0cmVuZ3RoKGNvbS5pYm0uaWN1LnRleHQuQ29sbGF0b3IuSURFTlRJQ0FMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5lcnIucHJpbnRsbigiLWxldmVsIHBhcmFtIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA1XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmV4aXQoMSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLy8gbG9hZCBjbGFzc2VzIGF0IGxlYXN0IG9uY2UgYmVmb3JlIHN0YXJ0aW5nCisgICAgICAgIGphdmFDb2wuY29tcGFyZSgiYSIsICJiIik7CisgICAgICAgIGljdUNvbC5jb21wYXJlKCJhIiwgImIiKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIGJvb2xlYW4gcHJvY2Vzc09wdGlvbnMoU3RyaW5nW10gYXJncykgeworICAgICAgICBpbnQgYXJnTnVtOworICAgICAgICBmb3IgKGFyZ051bSA9MDsgYXJnTnVtIDwgYXJncy5sZW5ndGg7IGFyZ051bSsrKSB7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAoYXJnc1thcmdOdW1dLmVxdWFsc0lnbm9yZUNhc2Uob3B0aW9uc1tpXS5uYW1lKSkgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG9wdGlvbnNbaV0udHlwZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zW2ldLnZhbHVlLmRlbGV0ZSgwLCBvcHRpb25zW2ldLnZhbHVlLmNhcGFjaXR5KCkpLmFwcGVuZCgidHJ1ZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnTnVtKys7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoYXJnTnVtID49IGFyZ3MubGVuZ3RoKSB8fCAoYXJnc1thcmdOdW1dLmNoYXJBdCgwKT09Jy0nKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmVyci5wcmludGxuKCJ2YWx1ZSBleHBlY3RlZCBmb3IiKyBvcHRpb25zW2ldLm5hbWUgKyJvcHRpb24uXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZhbHVlID0gSW50ZWdlci5wYXJzZUludChhcmdzW2FyZ051bV0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uc1tpXS52YWx1ZS5kZWxldGUoMCwgb3B0aW9uc1tpXS52YWx1ZS5jYXBhY2l0eSgpKS5hcHBlbmQoYXJnc1thcmdOdW1dKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoTnVtYmVyRm9ybWF0RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5lcnIucHJpbnRsbigiRXhwZWN0ZWQ6IGEgbnVtYmVyIHZhbHVlIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7ICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdOdW0rKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChhcmdOdW0gPj0gYXJncy5sZW5ndGgpIHx8IChhcmdzW2FyZ051bV0uY2hhckF0KDApPT0nLScpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW0uZXJyLnByaW50bG4oInZhbHVlIGV4cGVjdGVkIGZvciIrIG9wdGlvbnNbaV0ubmFtZSArIm9wdGlvbi5cbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnNbaV0udmFsdWUuZGVsZXRlKDAsIG9wdGlvbnNbaV0udmFsdWUuY2FwYWNpdHkoKSkuYXBwZW5kKGFyZ3NbYXJnTnVtXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmVyci5wcmludGxuKCJPcHRpb24gdHlwZSBlcnJvcjoge0ZMQUc9MCwgTlVNPTEsIFNUUklORz0yfSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG9wdF9mTmFtZSAgICAgID0gdGVtcF9vcHRfZk5hbWUudG9TdHJpbmcoKTsKKyAgICAgICAgb3B0X2xvY2FsZSAgICAgPSB0ZW1wX29wdF9sb2NhbGUudG9TdHJpbmcoKTsKKyAgICAgICAgb3B0X3J1bGVzICAgICAgPSB0ZW1wX29wdF9ydWxlcy50b1N0cmluZygpOworICAgICAgICBpZiAodGVtcF9vcHRfaGVscC50b1N0cmluZygpLmVxdWFsc0lnbm9yZUNhc2UoInRydWUiKSkgeworICAgICAgICAgICAgb3B0X2hlbHAgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIG9wdF9sb29wQ291bnQgID0gSW50ZWdlci5wYXJzZUludCh0ZW1wX29wdF9sb29wQ291bnQudG9TdHJpbmcoKSk7CisgICAgICAgIG9wdF9pTG9vcENvdW50ID0gSW50ZWdlci5wYXJzZUludCh0ZW1wX29wdF9pTG9vcENvdW50LnRvU3RyaW5nKCkpOworICAgICAgICBpZiAodGVtcF9vcHRfdGVyc2UudG9TdHJpbmcoKS5lcXVhbHNJZ25vcmVDYXNlKCJ0cnVlIikpIHsKKyAgICAgICAgICAgIG9wdF90ZXJzZSA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRlbXBfb3B0X3Fzb3J0LnRvU3RyaW5nKCkuZXF1YWxzSWdub3JlQ2FzZSgidHJ1ZSIpKSB7CisgICAgICAgICAgICBvcHRfcXNvcnQgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIGlmICh0ZW1wX29wdF9iaW5zZWFyY2gudG9TdHJpbmcoKS5lcXVhbHNJZ25vcmVDYXNlKCJ0cnVlIikpIHsKKyAgICAgICAgICAgIG9wdF9iaW5zZWFyY2ggPSB0cnVlOworICAgICAgICB9CisgICAgICAgIGlmICh0ZW1wX29wdF9pY3UudG9TdHJpbmcoKS5lcXVhbHNJZ25vcmVDYXNlKCJ0cnVlIikpIHsKKyAgICAgICAgICAgIG9wdF9pY3UgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIGlmICh0ZW1wX29wdF91c2VrZXlzLnRvU3RyaW5nKCkuZXF1YWxzSWdub3JlQ2FzZSgidHJ1ZSIpKSB7CisgICAgICAgICAgICBvcHRfdXNla2V5cyA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRlbXBfb3B0X3N0cmNtcC50b1N0cmluZygpLmVxdWFsc0lnbm9yZUNhc2UoInRydWUiKSkgeworICAgICAgICAgICAgb3B0X3N0cmNtcCA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRlbXBfb3B0X3N0cmNtcENQTy50b1N0cmluZygpLmVxdWFsc0lnbm9yZUNhc2UoInRydWUiKSkgeworICAgICAgICAgICAgb3B0X3N0cmNtcENQTyA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRlbXBfb3B0X2tleWdlbi50b1N0cmluZygpLmVxdWFsc0lnbm9yZUNhc2UoInRydWUiKSkgeworICAgICAgICAgICAgb3B0X2tleWdlbiA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRlbXBfb3B0X25vcm0udG9TdHJpbmcoKS5lcXVhbHNJZ25vcmVDYXNlKCJ0cnVlIikpIHsKKyAgICAgICAgICAgIG9wdF9ub3JtID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodGVtcF9vcHRfZnJlbmNoLnRvU3RyaW5nKCkuZXF1YWxzSWdub3JlQ2FzZSgidHJ1ZSIpKSB7CisgICAgICAgICAgICBvcHRfZnJlbmNoID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodGVtcF9vcHRfZnJlbmNob2ZmLnRvU3RyaW5nKCkuZXF1YWxzSWdub3JlQ2FzZSgidHJ1ZSIpKSB7CisgICAgICAgICAgICBvcHRfZnJlbmNob2ZmID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodGVtcF9vcHRfc2hpZnRlZC50b1N0cmluZygpLmVxdWFsc0lnbm9yZUNhc2UoInRydWUiKSkgeworICAgICAgICAgICAgb3B0X3NoaWZ0ZWQgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIGlmICh0ZW1wX29wdF9sb3dlci50b1N0cmluZygpLmVxdWFsc0lnbm9yZUNhc2UoInRydWUiKSkgeworICAgICAgICAgICAgb3B0X2xvd2VyID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodGVtcF9vcHRfdXBwZXIudG9TdHJpbmcoKS5lcXVhbHNJZ25vcmVDYXNlKCJ0cnVlIikpIHsKKyAgICAgICAgICAgIG9wdF91cHBlciA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRlbXBfb3B0X2Nhc2UudG9TdHJpbmcoKS5lcXVhbHNJZ25vcmVDYXNlKCJ0cnVlIikpIHsKKyAgICAgICAgICAgIG9wdF9jYXNlID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBvcHRfbGV2ZWwgICAgICA9IEludGVnZXIucGFyc2VJbnQodGVtcF9vcHRfbGV2ZWwudG9TdHJpbmcoKSk7CisgICAgICAgIGlmICh0ZW1wX29wdF9rZXloaXN0LnRvU3RyaW5nKCkuZXF1YWxzSWdub3JlQ2FzZSgidHJ1ZSIpKSB7CisgICAgICAgICAgICBvcHRfa2V5aGlzdCA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRlbXBfb3B0X2l0ZXJ0ZXN0LnRvU3RyaW5nKCkuZXF1YWxzSWdub3JlQ2FzZSgidHJ1ZSIpKSB7CisgICAgICAgICAgICBvcHRfaXRlcnRlc3QgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIGlmICh0ZW1wX29wdF9kdW1wLnRvU3RyaW5nKCkuZXF1YWxzSWdub3JlQ2FzZSgidHJ1ZSIpKSB7CisgICAgICAgICAgICBvcHRfZHVtcCA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRlbXBfb3B0X2phdmEudG9TdHJpbmcoKS5lcXVhbHNJZ25vcmVDYXNlKCJ0cnVlIikpIHsKKyAgICAgICAgICAgIG9wdF9qYXZhID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEludm9rZSB0aGUgcnVudGltZSdzIGdhcmJhZ2UgY29sbGVjdGlvbiBwcm9jZWR1cmUgcmVwZWF0ZWRseQorICAgICAqIHVudGlsIHRoZSBhbW91bnQgb2YgZnJlZSBtZW1vcnkgc3RhYmlsaXplcyB0byB3aXRoaW4gMTAlLgorICAgICAqLyAgICAKKyAgICBwcml2YXRlIHZvaWQgY2FsbEdDKCkgeworICAgICAgICAvLyBGcm9tICJKYXZhIFBsYXRmb3JtIFBlcmZvcm1hbmNlIi4gIFRoaXMgaXMgdGhlIHByb2NlZHVyZQorICAgICAgICAvLyByZWNvbW1lbmRlZCBieSBKYXZhc29mdC4KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFN5c3RlbS5nYygpOworICAgICAgICAgICAgVGhyZWFkLmN1cnJlbnRUaHJlYWQoKS5zbGVlcCgxMDApOworICAgICAgICAgICAgU3lzdGVtLnJ1bkZpbmFsaXphdGlvbigpOworICAgICAgICAgICAgVGhyZWFkLmN1cnJlbnRUaHJlYWQoKS5zbGVlcCgxMDApOworICAgICAgICAgICAgCisgICAgICAgICAgICBTeXN0ZW0uZ2MoKTsKKyAgICAgICAgICAgIFRocmVhZC5jdXJyZW50VGhyZWFkKCkuc2xlZXAoMTAwKTsKKyAgICAgICAgICAgIFN5c3RlbS5ydW5GaW5hbGl6YXRpb24oKTsKKyAgICAgICAgICAgIFRocmVhZC5jdXJyZW50VGhyZWFkKCkuc2xlZXAoMTAwKTsKKyAgICAgICAgfSBjYXRjaCAoSW50ZXJydXB0ZWRFeGNlcHRpb24gZSkge30KKyAgICB9CisKKyAgICBwcml2YXRlIGJvb2xlYW4gbmVlZENSTEYgPSBmYWxzZTsKKyAgICAKKyAgICBwdWJsaWMgaW50IERPVE1BU0sgPSAweDdGRjsKKyAKKyAgICB2b2lkIGRvdChpbnQgaSkgeworICAgICAgICBpZiAoKGkgJSBET1RNQVNLKSA9PSAwKSB7CisgICAgICAgICAgICBuZWVkQ1JMRiA9IHRydWU7CisgICAgICAgICAgICAvLyBJIGRvIG5vdCBrbm93IHdoeSBwcmludCB0aGUgZG90IGhlcmUKKyAgICAgICAgICAgIC8vU3lzdGVtLm91dC5wcmludCgnLicpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIFN0cmluZyByZWFkRGF0YUxpbmUoQnVmZmVyZWRSZWFkZXIgYnIpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBTdHJpbmcgb3JpZ2luYWxMaW5lID0gIiI7CisgICAgICAgIFN0cmluZyBsaW5lID0gIiI7CisgICAgICAgIAorICAgICAgICB0cnkgeworICAgICAgICAgICAgbGluZSA9IG9yaWdpbmFsTGluZSA9IGJyLnJlYWRMaW5lKCk7CisgICAgICAgICAgICBpZiAobGluZSA9PSBudWxsKSByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIGlmIChsaW5lLmxlbmd0aCgpID4gMCAmJiBsaW5lLmNoYXJBdCgwKSA9PSAweEZFRkYpIGxpbmUgPSBsaW5lLnN1YnN0cmluZygxKTsKKyAgICAgICAgICAgIGludCBjb21tZW50UG9zID0gbGluZS5pbmRleE9mKCcjJyk7CisgICAgICAgICAgICBpZiAoY29tbWVudFBvcyA+PSAwKSBsaW5lID0gbGluZS5zdWJzdHJpbmcoMCwgY29tbWVudFBvcyk7CisgICAgICAgICAgICBsaW5lID0gbGluZS50cmltKCk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCJMaW5lIFwiezB9XCIsICBcInsxfVwiIiArIG9yaWdpbmFsTGluZSArICIgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGxpbmUgKyAiICIgKyBlLnRvU3RyaW5nKCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBsaW5lOworICAgIH0KKyAgICAKKyAgICB2b2lkIHJlYWREYXRhTGluZXMoKSB7CisgICAgICAgIC8vIFJlYWQgaW4gIHRoZSBpbnB1dCBmaWxlLgorICAgICAgICAvLyAgIEZpbGUgYXNzdW1lZCB0byBiZSB1dGYtMTYuCisgICAgICAgIC8vICAgTGluZXMgZ28gb250byBoZWFwIGJ1ZmZlcnMuICBHbG9iYWwgaW5kZXggYXJyYXkgdG8gbGluZSBzdGFydHMgaXMgY3JlYXRlZC4KKyAgICAgICAgLy8gICBMaW5lcyB0aGVtc2VsdmVzIGFyZSBudWxsIHRlcm1pbmF0ZWQuCisgICAgICAgIC8vCisgICAgICAgIEZpbGVJbnB1dFN0cmVhbSBmaXMgPSBudWxsOworICAgICAgICBJbnB1dFN0cmVhbVJlYWRlciBpc3IgPSBudWxsOworICAgICAgICBCdWZmZXJlZFJlYWRlciBiciA9IG51bGw7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmaXMgPSBuZXcgRmlsZUlucHV0U3RyZWFtKG9wdF9mTmFtZSk7CisgICAgICAgICAgICBpc3IgPSBuZXcgSW5wdXRTdHJlYW1SZWFkZXIoZmlzLCAiVW5pY29kZUxpdHRsZSIpOworICAgICAgICAgICAgYnI9IG5ldyBCdWZmZXJlZFJlYWRlcihpc3IsIDMyKjEwMjQpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgU3lzdGVtLmVyci5wcmludGxuKCJFcnJvcjogRmlsZSBhY2Nlc3MgZXhjZXB0aW9uOiAiICsgZS5nZXRNZXNzYWdlKCkgKyAiISIpOworICAgICAgICAgICAgU3lzdGVtLmV4aXQoMik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGludCBjb3VudGVyID0gMDsKKyAgICAgICAgCisgICAgICAgIGxpc3QgPSBuZXcgQXJyYXlMaXN0KCk7CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBTdHJpbmcgbGluZSA9IG51bGw7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGxpbmUgPSByZWFkRGF0YUxpbmUoYnIpOworICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0uZXJyLnByaW50bG4oIlJlYWQgRmlsZSBFcnJvciIgKyBlLmdldE1lc3NhZ2UoKSArICIhIik7CisgICAgICAgICAgICAgICAgU3lzdGVtLmV4aXQoMSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChsaW5lID09IG51bGwpIGJyZWFrOworICAgICAgICAgICAgaWYgKGxpbmUubGVuZ3RoKCkgPT0gMCkgY29udGludWU7CisgICAgICAgICAgICBkb3QoY291bnRlcisrKTsKKyAgICAgICAgICAgIGxpc3QuYWRkKGxpbmUpOworICAgICAgICB9CisgICAgICAgIGlmICghb3B0X3RlcnNlKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlJlYWQgIiArIGNvdW50ZXIgKyAiIGxpbmVzIGluIGZpbGUiKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaW50IHNpemUgPSBsaXN0LnNpemUoKTsKKyAgICAgICAgdGVzdHMgPSBuZXcgU3RyaW5nIFtzaXplXTsKKyAgICAgICAgCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgICAgICB0ZXN0c1tpXSA9IChTdHJpbmcpIGxpc3QuZ2V0KGkpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEdldCB0aGUgQ29sbGF0b3IgUnVsZXMKKyAgICAgKiBUaGUgUnVsZSBGaWxlIGZvcm1hdDoKKyAgICAgKiAxLiBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlcyB3aWxsIGJlIG9taXR0ZWQKKyAgICAgKiAyLiBsaW5lcyB3aXRoIHRoZSBsZWFkaW5nIGNoYXJhY3RlciAnIycgd2lsbCBiZSB0cmVhdGVkIGFzIGNvbW1lbnRzCisgICAgICogMy4gRmlsZSBlbmNvZGluZyBpcyBJU08tODg1OS0xCisgICAgICovCisgICAgU3RyaW5nIGdldENvbGxhdGlvblJ1bGVzKFN0cmluZyBydWxlRmlsZU5hbWUpIHsKKyAgICAgICAgRmlsZUlucHV0U3RyZWFtIGZpcyA9IG51bGw7CisgICAgICAgIElucHV0U3RyZWFtUmVhZGVyIGlzciA9IG51bGw7CisgICAgICAgIEJ1ZmZlcmVkUmVhZGVyIGJyID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZpcyA9IG5ldyBGaWxlSW5wdXRTdHJlYW0ob3B0X3J1bGVzKTsKKyAgICAgICAgICAgIGlzciA9IG5ldyBJbnB1dFN0cmVhbVJlYWRlcihmaXMsIklTTy04ODU5LTEiKTsKKyAgICAgICAgICAgIGJyPSBuZXcgQnVmZmVyZWRSZWFkZXIoaXNyKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIFN5c3RlbS5lcnIucHJpbnRsbigiRXJyb3I6IEZpbGUgYWNjZXNzIGV4Y2VwdGlvbjogIiArIGUuZ2V0TWVzc2FnZSgpICsgIiEiKTsKKyAgICAgICAgICAgIFN5c3RlbS5leGl0KDIpOworICAgICAgICB9CisgICAgICAgIFN0cmluZyBydWxlcyA9ICIiOworICAgICAgICBTdHJpbmcgbGluZSA9ICIiOworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBsaW5lID0gYnIucmVhZExpbmUoKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0uZXJyLnByaW50bG4oIlJlYWQgRmlsZSBFcnJvciIgKyBlLmdldE1lc3NhZ2UoKSArICIhIik7CisgICAgICAgICAgICAgICAgU3lzdGVtLmV4aXQoMSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobGluZSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbnQgY29tbWVudFBvcyA9IGxpbmUuaW5kZXhPZignIycpOworICAgICAgICAgICAgaWYgKGNvbW1lbnRQb3MgPj0gMCkgbGluZSA9IGxpbmUuc3Vic3RyaW5nKDAsIGNvbW1lbnRQb3MpOworICAgICAgICAgICAgbGluZSA9IGxpbmUudHJpbSgpOworICAgICAgICAgICAgcnVsZXMgPSBydWxlcyArIGxpbmU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJ1bGVzOworICAgIH0KKyAgICAKKyAgICAvL0ltcGxlbWVudGluZyBxc29ydAorICAgIHZvaWQgcVNvcnRJbXBsX2phdmFfdXNla2V5cyhTdHJpbmcgc3JjW10sIGludCBmcm9tSW5kZXgsIGludCB0b0luZGV4LCBqYXZhLnRleHQuQ29sbGF0b3IgYykgeworICAgICAgICBpbnQgbG93ID0gZnJvbUluZGV4OworICAgICAgICBpbnQgaGlnaCA9IHRvSW5kZXg7CisgICAgICAgIFN0cmluZyBtaWRkbGUgPSAiIjsKKyAgICAgICAgaWYgKGhpZ2ggPiBsb3cpIHsKKyAgICAgICAgICAgIG1pZGRsZSA9IHNyY1sgKGxvdyArIGhpZ2gpIC8gMiBdOworICAgICAgICAgICAgd2hpbGUobG93IDw9IGhpZ2gpIHsKKyAgICAgICAgICAgICAgICB3aGlsZSgobG93IDwgdG9JbmRleCkgJiYgKGNvbXBhcmUoYy5nZXRDb2xsYXRpb25LZXkoc3JjW2xvd10pLCBjLmdldENvbGxhdGlvbktleShtaWRkbGUpKSA8IDApKSB7CisgICAgICAgICAgICAgICAgICAgICsrbG93OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB3aGlsZSgoaGlnaCA+IGZyb21JbmRleCkgJiYgKGNvbXBhcmUoYy5nZXRDb2xsYXRpb25LZXkoc3JjW2hpZ2hdKSwgYy5nZXRDb2xsYXRpb25LZXkobWlkZGxlKSkgPiAwKSkgeworICAgICAgICAgICAgICAgICAgICAtLWhpZ2g7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmKGxvdyA8PSBoaWdoKSB7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBzd2FwID0gc3JjW2xvd107CisgICAgICAgICAgICAgICAgICAgIHNyY1tsb3ddID0gc3JjW2hpZ2hdOworICAgICAgICAgICAgICAgICAgICBzcmNbaGlnaF0gPSBzd2FwOworICAgICAgICAgICAgICAgICAgICArK2xvdzsKKyAgICAgICAgICAgICAgICAgICAgLS1oaWdoOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmKGZyb21JbmRleCA8IGhpZ2gpIHsKKyAgICAgICAgICAgICAgICBxU29ydEltcGxfamF2YV91c2VrZXlzKHNyYywgZnJvbUluZGV4LCBoaWdoLCBjKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYobG93IDwgdG9JbmRleCkgeworICAgICAgICAgICAgICAgIHFTb3J0SW1wbF9qYXZhX3VzZWtleXMoc3JjLCBsb3csIHRvSW5kZXgsIGMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIHZvaWQgcVNvcnRJbXBsX2ljdV91c2VrZXlzKFN0cmluZyBzcmNbXSwgaW50IGZyb21JbmRleCwgaW50IHRvSW5kZXgsIGNvbS5pYm0uaWN1LnRleHQuQ29sbGF0b3IgYykgeworICAgICAgICBpbnQgbG93ID0gZnJvbUluZGV4OworICAgICAgICBpbnQgaGlnaCA9IHRvSW5kZXg7CisgICAgICAgIFN0cmluZyBtaWRkbGUgPSAiIjsKKyAgICAgICAgaWYgKGhpZ2ggPiBsb3cpIHsKKyAgICAgICAgICAgIG1pZGRsZSA9IHNyY1sgKGxvdyArIGhpZ2gpIC8gMiBdOworICAgICAgICAgICAgd2hpbGUobG93IDw9IGhpZ2gpIHsKKyAgICAgICAgICAgICAgICB3aGlsZSgobG93IDwgdG9JbmRleCkgJiYgKGNvbXBhcmUoYy5nZXRDb2xsYXRpb25LZXkoc3JjW2xvd10pLCBjLmdldENvbGxhdGlvbktleShtaWRkbGUpKSA8IDApKSB7CisgICAgICAgICAgICAgICAgICAgICsrbG93OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB3aGlsZSgoaGlnaCA+IGZyb21JbmRleCkgJiYgKGNvbXBhcmUoYy5nZXRDb2xsYXRpb25LZXkoc3JjW2hpZ2hdKSwgYy5nZXRDb2xsYXRpb25LZXkobWlkZGxlKSkgPiAwKSkgeworICAgICAgICAgICAgICAgICAgICAtLWhpZ2g7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmKGxvdyA8PSBoaWdoKSB7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBzd2FwID0gc3JjW2xvd107CisgICAgICAgICAgICAgICAgICAgIHNyY1tsb3ddID0gc3JjW2hpZ2hdOworICAgICAgICAgICAgICAgICAgICBzcmNbaGlnaF0gPSBzd2FwOworICAgICAgICAgICAgICAgICAgICArK2xvdzsKKyAgICAgICAgICAgICAgICAgICAgLS1oaWdoOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmKGZyb21JbmRleCA8IGhpZ2gpIHsKKyAgICAgICAgICAgICAgICBxU29ydEltcGxfaWN1X3VzZWtleXMoc3JjLCBmcm9tSW5kZXgsIGhpZ2gsIGMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZihsb3cgPCB0b0luZGV4KSB7CisgICAgICAgICAgICAgICAgcVNvcnRJbXBsX2ljdV91c2VrZXlzKHNyYywgbG93LCB0b0luZGV4LCBjKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB2b2lkIHFTb3J0SW1wbF9ub2tleXMoU3RyaW5nIHNyY1tdLCBpbnQgZnJvbUluZGV4LCBpbnQgdG9JbmRleCwgQ29tcGFyYXRvciBjKSB7CisgICAgICAgIGludCBsb3cgPSBmcm9tSW5kZXg7CisgICAgICAgIGludCBoaWdoID0gdG9JbmRleDsKKyAgICAgICAgU3RyaW5nIG1pZGRsZSA9ICIiOworICAgICAgICBpZiAoaGlnaCA+IGxvdykgeworICAgICAgICAgICAgbWlkZGxlID0gc3JjWyAobG93ICsgaGlnaCkgLyAyIF07CisgICAgICAgICAgICB3aGlsZShsb3cgPD0gaGlnaCkgeworICAgICAgICAgICAgICAgIHdoaWxlKChsb3cgPCB0b0luZGV4KSAmJiAoY29tcGFyZShzcmNbbG93XSwgbWlkZGxlLCBjKSA8IDApKSB7CisgICAgICAgICAgICAgICAgICAgICsrbG93OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB3aGlsZSgoaGlnaCA+IGZyb21JbmRleCkgJiYgKGNvbXBhcmUoc3JjW2hpZ2hdLCBtaWRkbGUsIGMpID4gMCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLS1oaWdoOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZihsb3cgPD0gaGlnaCkgeworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgc3dhcCA9IHNyY1tsb3ddOworICAgICAgICAgICAgICAgICAgICBzcmNbbG93XSA9IHNyY1toaWdoXTsKKyAgICAgICAgICAgICAgICAgICAgc3JjW2hpZ2hdID0gc3dhcDsKKyAgICAgICAgICAgICAgICAgICAgKytsb3c7CisgICAgICAgICAgICAgICAgICAgIC0taGlnaDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZihmcm9tSW5kZXggPCBoaWdoKSB7CisgICAgICAgICAgICAgICAgcVNvcnRJbXBsX25va2V5cyhzcmMsIGZyb21JbmRleCwgaGlnaCwgYyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmKGxvdyA8IHRvSW5kZXgpIHsKKyAgICAgICAgICAgICAgICBxU29ydEltcGxfbm9rZXlzKHNyYywgbG93LCB0b0luZGV4LCBjKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBpbnQgY29tcGFyZShTdHJpbmcgc291cmNlLCBTdHJpbmcgdGFyZ2V0LCBDb21wYXJhdG9yIGMpIHsKKyAgICAgICAgZ2xvYmFsQ291bnQrKzsKKyAgICAgICAgcmV0dXJuIGMuY29tcGFyZShzb3VyY2UsIHRhcmdldCk7CisgICAgfQorICAgIAorICAgIGludCBjb21wYXJlKGphdmEudGV4dC5Db2xsYXRpb25LZXkgc291cmNlLCBqYXZhLnRleHQuQ29sbGF0aW9uS2V5IHRhcmdldCkgeworICAgICAgICBnbG9iYWxDb3VudCsrOworICAgICAgICByZXR1cm4gc291cmNlLmNvbXBhcmVUbyh0YXJnZXQpOworICAgIH0KKyAgICAKKyAgICBpbnQgY29tcGFyZShjb20uaWJtLmljdS50ZXh0LkNvbGxhdGlvbktleSBzb3VyY2UsIGNvbS5pYm0uaWN1LnRleHQuQ29sbGF0aW9uS2V5IHRhcmdldCkgeworICAgICAgICBnbG9iYWxDb3VudCsrOworICAgICAgICByZXR1cm4gc291cmNlLmNvbXBhcmVUbyh0YXJnZXQpOworICAgIH0gCisgICAgCisgICAgLy9DbGFzcyBmb3IgY29tbWFuZCBsaW5lIG9wdGlvbgorICAgIHN0YXRpYyBjbGFzcyBPcHRpb25TcGVjIHsKKyAgICAgICAgU3RyaW5nIG5hbWU7CisgICAgICAgIGludCB0eXBlOworICAgICAgICBTdHJpbmdCdWZmZXIgdmFsdWU7CisgICAgICAgIHB1YmxpYyBPcHRpb25TcGVjKFN0cmluZyBuYW1lLCBpbnQgdHlwZSwgU3RyaW5nQnVmZmVyIHZhbHVlKSB7CisgICAgICAgICAgICB0aGlzLm5hbWUgPSBuYW1lOworICAgICAgICAgICAgdGhpcy50eXBlID0gdHlwZTsKKyAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvcGVyZi9EYXRhc2V0LnBtIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3BlcmYvRGF0YXNldC5wbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YmQ3Y2UwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3BlcmYvRGF0YXNldC5wbQpAQCAtMCwwICsxLDkyIEBACisjLyoqCisjICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyMgKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorIyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisjICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyMgKgorIyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9wZXJmL0RhdGFzZXQucG0sdiAkCisjICogJERhdGU6IDIwMDIvMTIvMTggMDM6NTY6NDAgJAorIyAqICRSZXZpc2lvbjogMS4yICQKKyMgKgorIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjICovCitwYWNrYWdlIERhdGFzZXQ7Cit1c2UgU3RhdGlzdGljczo6RGVzY3JpcHRpdmU7Cit1c2UgU3RhdGlzdGljczo6RGlzdHJpYnV0aW9uczsKK3VzZSBzdHJpY3Q7CisKKyMgQ3JlYXRlIGEgbmV3IERhdGFzZXQgd2l0aCB0aGUgZ2l2ZW4gZGF0YS4KK3N1YiBuZXcgeworICAgIG15ICgkY2xhc3MpID0gc2hpZnQ7CisgICAgbXkgJHNlbGYgPSBibGVzcyB7CisgICAgICAgIF9kYXRhID0+IFxAXywKKyAgICAgICAgX3NjYWxlID0+IDEuMCwKKyAgICAgICAgX21lYW4gPT4gMC4wLAorICAgICAgICBfZXJyb3IgPT4gMC4wLAorICAgIH0sICRjbGFzczsKKworICAgIG15ICRuID0gQF87CisgICAgCisgICAgaWYgKCRuID49IDEpIHsKKyAgICAgICAgbXkgJHN0YXRzID0gU3RhdGlzdGljczo6RGVzY3JpcHRpdmU6OkZ1bGwtPm5ldygpOworICAgICAgICAkc3RhdHMtPmFkZF9kYXRhKEB7JHNlbGYtPntfZGF0YX19KTsKKyAgICAgICAgJHNlbGYtPntfbWVhbn0gPSAkc3RhdHMtPm1lYW4oKTsKKworICAgICAgICBpZiAoJG4gPj0gMikgeworICAgICAgICAgICAgIyBVc2UgYSB0IGRpc3RyaWJ1dGlvbiByYXRoZXIgdGhhbiBHYXVzc2lhbiBiZWNhdXNlIChhKSB3ZQorICAgICAgICAgICAgIyBhc3N1bWUgYW4gdW5kZXJseWluZyBub3JtYWwgZGlzdCwgKGIpIHdlIGRvIG5vdCBrbm93IHRoZQorICAgICAgICAgICAgIyBzdGFuZGFyZCBkZXZpYXRpb24gLS0gd2UgZXN0aW1hdGUgaXQgZnJvbSB0aGUgZGF0YSwgYW5kIChjKQorICAgICAgICAgICAgIyB3ZSBNQVkgaGF2ZSBhIHNtYWxsIHNhbXBsZSBzaXplIChhbHNvIHdvcmtzIGZvciBsYXJnZSBuKS4KKyAgICAgICAgICAgIG15ICR0ID0gU3RhdGlzdGljczo6RGlzdHJpYnV0aW9uczo6dGRpc3RyKCRuLTEsIDAuMDA1KTsKKyAgICAgICAgICAgICRzZWxmLT57X2Vycm9yfSA9ICR0ICogJHN0YXRzLT5zdGFuZGFyZF9kZXZpYXRpb24oKTsKKyAgICAgICAgfQorICAgIH0KKworICAgICRzZWxmOworfQorCisjIFNldCBhIHNjYWxpbmcgZmFjdG9yIGZvciBhbGwgZGF0YTsgMS4wIG1lYW5zIG5vIHNjYWxpbmcuCisjIFNjYWxlIG11c3QgYmUgPiAwLgorc3ViIHNldFNjYWxlIHsKKyAgICBteSAoJHNlbGYsICRzY2FsZSkgPSBAXzsKKyAgICAkc2VsZi0+e19zY2FsZX0gPSAkc2NhbGU7Cit9CisKKyMgTXVsdGlwbHkgdGhlIHNjYWxpbmcgZmFjdG9yIGJ5IGEgdmFsdWUuCitzdWIgc2NhbGVCeSB7CisgICAgbXkgKCRzZWxmLCAkYSkgPSBAXzsKKyAgICAkc2VsZi0+e19zY2FsZX0gKj0gJGE7Cit9CisKKyMgUmV0dXJuIHRoZSBtZWFuLgorc3ViIGdldE1lYW4geworICAgIG15ICRzZWxmID0gc2hpZnQ7CisgICAgcmV0dXJuICRzZWxmLT57X21lYW59ICogJHNlbGYtPntfc2NhbGV9OworfQorCisjIFJldHVybiBhIDk5JSBlcnJvciBiYXNlZCBvbiB0aGUgdCBkaXN0cmlidXRpb24uICBUaGUgZGF0YXNldAorIyBpcyBkZXNyaWJlZCBhcyBnZXRNZWFuKCkgKy8tIGdldEVycm9yKCkuCitzdWIgZ2V0RXJyb3IgeworICAgIG15ICRzZWxmID0gc2hpZnQ7CisgICAgcmV0dXJuICRzZWxmLT57X2Vycm9yfSAqICRzZWxmLT57X3NjYWxlfTsKK30KKworIyBEaXZpZGUgdHdvIERhdGFzZXRzIGFuZCByZXR1cm4gYSBuZXcgb25lLCBtYWludGFpbmluZyB0aGUKKyMgbWVhbisvLWVycm9yLiAgVGhlIG5ldyBEYXRhc2V0IGhhcyBubyBkYXRhIHBvaW50cy4KK3N1YiBkaXZpZGUgeworICAgIG15ICRzZWxmID0gc2hpZnQ7CisgICAgbXkgJHJocyA9IHNoaWZ0OworICAgIAorICAgIG15ICRtaW5yYXRpbyA9ICgkc2VsZi0+e19tZWFufSAtICRzZWxmLT57X2Vycm9yfSkgLworICAgICAgICAgICAgICAgICAgICgkcmhzLT57X21lYW59ICsgJHJocy0+e19lcnJvcn0pOworICAgIG15ICRtYXhyYXRpbyA9ICgkc2VsZi0+e19tZWFufSArICRzZWxmLT57X2Vycm9yfSkgLworICAgICAgICAgICAgICAgICAgICgkcmhzLT57X21lYW59IC0gJHJocy0+e19lcnJvcn0pOworCisgICAgbXkgJHJlc3VsdCA9IERhdGFzZXQtPm5ldygpOworICAgICRyZXN1bHQtPntfbWVhbn0gPSAoJG1pbnJhdGlvICsgJG1heHJhdGlvKSAvIDI7CisgICAgJHJlc3VsdC0+e19lcnJvcn0gPSAkcmVzdWx0LT57X21lYW59IC0gJG1pbnJhdGlvOworICAgICRyZXN1bHQtPntfc2NhbGV9ID0gJHNlbGYtPntfc2NhbGV9IC8gJHJocy0+e19zY2FsZX07CisgICAgJHJlc3VsdDsKK30KKworMTsKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9wZXJmL05vcm1hbGl6ZXJQZXJmb3JtYW5jZVRlc3QuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9wZXJmL05vcm1hbGl6ZXJQZXJmb3JtYW5jZVRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTgwMGVkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3BlcmYvTm9ybWFsaXplclBlcmZvcm1hbmNlVGVzdC5qYXZhCkBAIC0wLDAgKzEsNjk5IEBACisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmlnaHQgKGMpIDIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyogQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9wZXJmL05vcm1hbGl6ZXJQZXJmb3JtYW5jZVRlc3QuamF2YSx2ICQgCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudGVzdC5wZXJmOworCitpbXBvcnQgY29tLmlibS5pY3UudGV4dC4qOworaW1wb3J0IGphdmEuaW8uKjsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworCitwdWJsaWMgY2xhc3MgTm9ybWFsaXplclBlcmZvcm1hbmNlVGVzdCBleHRlbmRzIFBlcmZUZXN0IHsKKyAgICAKKyAgICBTdHJpbmdbXSBORkRGaWxlTGluZXM7CisgICAgU3RyaW5nW10gTkZDRmlsZUxpbmVzOworICAgIFN0cmluZ1tdIGZpbGVMaW5lczsKKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgbmV3IE5vcm1hbGl6ZXJQZXJmb3JtYW5jZVRlc3QoKS5ydW4oYXJncyk7CisgICAgfQorICAgIAorICAgIHByb3RlY3RlZCB2b2lkIHNldHVwKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgaWYgKGFyZ3MubGVuZ3RoIDwgMikgeworICAgICAgICAgICAgcHJpbnRVc2FnZSgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBTdHJpbmcgcGF0aCA9ICIiOworICAgICAgICBTdHJpbmcgZW5jb2RpbmcgPSAiVVRGLTgiOworICAgICAgICBTdHJpbmcgZmlsZU5hbWUgPSAiIjsKKyAgICAgICAgYm9vbGVhbiBidWxrTW9kZSA9IGZhbHNlOworICAgICAgICBib29sZWFuIGxpbmVNb2RlID0gZmFsc2U7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgaWYgKGFyZ3NbaV0uZXF1YWxzSWdub3JlQ2FzZSgiLWYiKSB8fCBhcmdzW2ldLmVxdWFsc0lnbm9yZUNhc2UoIi0tZmlsZU5hbWUiKSkgeworICAgICAgICAgICAgICAgIGlmICgoKGkgKyAxKSA+PSBhcmdzLmxlbmd0aCkgfHwgKGFyZ3NbaSsxXS5jaGFyQXQoMCkgPT0gJy0nKSkgeworICAgICAgICAgICAgICAgICAgICBwcmludFVzYWdlKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZmlsZU5hbWUgPSBhcmdzW2krMV07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGFyZ3NbaV0uZXF1YWxzSWdub3JlQ2FzZSgiLXMiKSB8fCBhcmdzW2ldLmVxdWFsc0lnbm9yZUNhc2UoIi0tc291cmNlRGlyIikgKSB7CisgICAgICAgICAgICAgICAgaWYgKCgoaSArIDEpID49IGFyZ3MubGVuZ3RoKSB8fCAoYXJnc1tpKzFdLmNoYXJBdCgwKSA9PSAnLScpKSB7CisgICAgICAgICAgICAgICAgICAgIHByaW50VXNhZ2UoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBwYXRoID0gYXJnc1tpKzFdOworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZmlsZXNlcGFyYXRvciA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgiZmlsZS5zZXBhcmF0b3IiLCAiLyIpOworICAgICAgICAgICAgICAgICAgICBpZiAocGF0aC5jaGFyQXQocGF0aC5sZW5ndGgoKSAtIDEpICE9IGZpbGVzZXBhcmF0b3IuY2hhckF0KDApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwYXRoID0gcGF0aCArIGZpbGVzZXBhcmF0b3I7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYXJnc1tpXS5lcXVhbHNJZ25vcmVDYXNlKCItZSIpIHx8IGFyZ3NbaV0uZXF1YWxzSWdub3JlQ2FzZSgiLS1lbmNvZGluZyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKCgoaSArIDEpID49IGFyZ3MubGVuZ3RoKSB8fCAoYXJnc1tpKzFdLmNoYXJBdCgwKSA9PSAnLScpKSB7CisgICAgICAgICAgICAgICAgICAgIHByaW50VXNhZ2UoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBlbmNvZGluZyA9IGFyZ3NbaSsxXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYXJnc1tpXS5lcXVhbHNJZ25vcmVDYXNlKCItYiIpIHx8IGFyZ3NbaV0uZXF1YWxzSWdub3JlQ2FzZSgiLS1idWxrTW9kZSIpKSB7CisgICAgICAgICAgICAgICAgYnVsa01vZGUgPSB0cnVlOworICAgICAgICAgICAgICAgIGxpbmVNb2RlID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYXJnc1tpXS5lcXVhbHNJZ25vcmVDYXNlKCItbCIpIHx8IGFyZ3NbaV0uZXF1YWxzSWdub3JlQ2FzZSgiLS1saW5lTW9kZSIpKSB7CisgICAgICAgICAgICAgICAgYnVsa01vZGUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBsaW5lTW9kZSA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYobGluZU1vZGUgPT0gYnVsa01vZGUpeworICAgICAgICAgICAgcHJpbnRVc2FnZSgpOworICAgICAgICB9CisgICAgICAgIGlmIChmaWxlTmFtZS5lcXVhbHNJZ25vcmVDYXNlKCIiKSl7CisgICAgICAgICAgICBwcmludFVzYWdlKCk7CisgICAgICAgIH0KKyAgICAgICAgZmlsZUxpbmVzID0gcmVhZExpbmVzKHBhdGggKyBmaWxlTmFtZSwgZW5jb2RpbmcsIGJ1bGtNb2RlKTsKKyAgICAgICAgTkZERmlsZUxpbmVzID0gbm9ybWFsaXplSW5wdXQoZmlsZUxpbmVzLCBOb3JtYWxpemVyLk5GRCk7CisgICAgICAgIE5GQ0ZpbGVMaW5lcyA9IG5vcm1hbGl6ZUlucHV0KGZpbGVMaW5lcywgTm9ybWFsaXplci5ORkMpOworICAgIH0KKyAgICAKKyAgICAvLyBUZXN0IE5GQyBQZXJmb3JtYW5jZQorICAgIFBlcmZUZXN0LkZ1bmN0aW9uIFRlc3RJQ1VfTkZDX05GRF9UZXh0KCkgeworICAgICAgICByZXR1cm4gbmV3IFBlcmZUZXN0LkZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgY2FsbCgpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE5GREZpbGVMaW5lcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbmZjID0gTm9ybWFsaXplci5ub3JtYWxpemUoTkZERmlsZUxpbmVzW2ldLCBOb3JtYWxpemVyLk5GQyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBwdWJsaWMgbG9uZyBnZXRPcGVyYXRpb25zUGVySXRlcmF0aW9uKCkgeworICAgICAgICAgICAgICAgIGludCB0b3RhbENoYXJzID0gMDsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE5GREZpbGVMaW5lcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICB0b3RhbENoYXJzID0gdG90YWxDaGFycyArIE5GREZpbGVMaW5lc1tpXS5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsQ2hhcnM7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorICAgIAorICAgIFBlcmZUZXN0LkZ1bmN0aW9uIFRlc3RJQ1VfTkZDX05GQ19UZXh0KCkgeworICAgICAgICByZXR1cm4gbmV3IFBlcmZUZXN0LkZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgY2FsbCgpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE5GQ0ZpbGVMaW5lcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbmZjID0gTm9ybWFsaXplci5ub3JtYWxpemUoTkZDRmlsZUxpbmVzW2ldLCBOb3JtYWxpemVyLk5GQyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBwdWJsaWMgbG9uZyBnZXRPcGVyYXRpb25zUGVySXRlcmF0aW9uKCkgeworICAgICAgICAgICAgICAgIGludCB0b3RhbENoYXJzID0gMDsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE5GQ0ZpbGVMaW5lcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICB0b3RhbENoYXJzID0gdG90YWxDaGFycyArIE5GQ0ZpbGVMaW5lc1tpXS5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsQ2hhcnM7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorICAgIAorICAgIFBlcmZUZXN0LkZ1bmN0aW9uIFRlc3RJQ1VfTkZDX09yaWdfVGV4dCgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQZXJmVGVzdC5GdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGNhbGwoKSB7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmaWxlTGluZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIG5mYyA9IE5vcm1hbGl6ZXIubm9ybWFsaXplKGZpbGVMaW5lc1tpXSwgTm9ybWFsaXplci5ORkMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgcHVibGljIGxvbmcgZ2V0T3BlcmF0aW9uc1Blckl0ZXJhdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpbnQgdG90YWxDaGFycyA9IDA7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmaWxlTGluZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgdG90YWxDaGFycyA9IHRvdGFsQ2hhcnMgKyBmaWxlTGluZXNbaV0ubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbENoYXJzOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KKyAgICAKKyAgICAvLyBUZXN0IE5GRCBQZXJmb3JtYW5jZQorICAgIFBlcmZUZXN0LkZ1bmN0aW9uIFRlc3RJQ1VfTkZEX05GRF9UZXh0KCkgeworICAgICAgICByZXR1cm4gbmV3IFBlcmZUZXN0LkZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgY2FsbCgpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE5GREZpbGVMaW5lcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbmZjID0gTm9ybWFsaXplci5ub3JtYWxpemUoTkZERmlsZUxpbmVzW2ldLCBOb3JtYWxpemVyLk5GRCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBwdWJsaWMgbG9uZyBnZXRPcGVyYXRpb25zUGVySXRlcmF0aW9uKCkgeworICAgICAgICAgICAgICAgIGludCB0b3RhbENoYXJzID0gMDsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE5GREZpbGVMaW5lcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICB0b3RhbENoYXJzID0gdG90YWxDaGFycyArIE5GREZpbGVMaW5lc1tpXS5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsQ2hhcnM7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorICAgIAorICAgIFBlcmZUZXN0LkZ1bmN0aW9uIFRlc3RJQ1VfTkZEX05GQ19UZXh0KCkgeworICAgICAgICByZXR1cm4gbmV3IFBlcmZUZXN0LkZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgY2FsbCgpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE5GQ0ZpbGVMaW5lcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbmZjID0gTm9ybWFsaXplci5ub3JtYWxpemUoTkZDRmlsZUxpbmVzW2ldLCBOb3JtYWxpemVyLk5GRCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBwdWJsaWMgbG9uZyBnZXRPcGVyYXRpb25zUGVySXRlcmF0aW9uKCkgeworICAgICAgICAgICAgICAgIGludCB0b3RhbENoYXJzID0gMDsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE5GQ0ZpbGVMaW5lcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICB0b3RhbENoYXJzID0gdG90YWxDaGFycyArIE5GQ0ZpbGVMaW5lc1tpXS5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsQ2hhcnM7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorICAgIAorICAgIFBlcmZUZXN0LkZ1bmN0aW9uIFRlc3RJQ1VfTkZEX09yaWdfVGV4dCgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQZXJmVGVzdC5GdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGNhbGwoKSB7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmaWxlTGluZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIG5mYyA9IE5vcm1hbGl6ZXIubm9ybWFsaXplKGZpbGVMaW5lc1tpXSwgTm9ybWFsaXplci5ORkQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgcHVibGljIGxvbmcgZ2V0T3BlcmF0aW9uc1Blckl0ZXJhdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpbnQgdG90YWxDaGFycyA9IDA7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmaWxlTGluZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgdG90YWxDaGFycyA9IHRvdGFsQ2hhcnMgKyBmaWxlTGluZXNbaV0ubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbENoYXJzOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KKy8qKiBJIHJlYWxseSB3aXNoIHRoZXJlIHdhcyBjb25kaXRpb25hbCBjb21waWxhdGlvbiBpbiBKYXZhICAgICAgCisgICAgICAgIC8vIFRlc3QgTkZDIFBlcmZvcm1hbmNlCisgICAgUGVyZlRlc3QuRnVuY3Rpb24gVGVzdEpES19ORkNfTkZEX1RleHQoKSB7CisgICAgICAgIHJldHVybiBuZXcgUGVyZlRlc3QuRnVuY3Rpb24oKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBjYWxsKCkgeworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTkZERmlsZUxpbmVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBuZmMgPSBzdW4udGV4dC5Ob3JtYWxpemVyLm5vcm1hbGl6ZShORkRGaWxlTGluZXNbaV0sIHN1bi50ZXh0Lk5vcm1hbGl6ZXIuQ09NUE9TRSwwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHB1YmxpYyBsb25nIGdldE9wZXJhdGlvbnNQZXJJdGVyYXRpb24oKSB7CisgICAgICAgICAgICAgICAgaW50IHRvdGFsQ2hhcnMgPSAwOworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTkZERmlsZUxpbmVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIHRvdGFsQ2hhcnMgPSB0b3RhbENoYXJzICsgTkZERmlsZUxpbmVzW2ldLmxlbmd0aCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxDaGFyczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9CisgIAorICAgIFBlcmZUZXN0LkZ1bmN0aW9uIFRlc3RKREtfTkZDX05GQ19UZXh0KCkgeworICAgICAgICByZXR1cm4gbmV3IFBlcmZUZXN0LkZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgY2FsbCgpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE5GQ0ZpbGVMaW5lcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbmZjID0gc3VuLnRleHQuTm9ybWFsaXplci5ub3JtYWxpemUoTkZDRmlsZUxpbmVzW2ldLCBzdW4udGV4dC5Ob3JtYWxpemVyLkNPTVBPU0UsMCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBwdWJsaWMgbG9uZyBnZXRPcGVyYXRpb25zUGVySXRlcmF0aW9uKCkgeworICAgICAgICAgICAgICAgIGludCB0b3RhbENoYXJzID0gMDsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE5GQ0ZpbGVMaW5lcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICB0b3RhbENoYXJzID0gdG90YWxDaGFycyArIE5GQ0ZpbGVMaW5lc1tpXS5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsQ2hhcnM7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorICAgIAorICAgIFBlcmZUZXN0LkZ1bmN0aW9uIFRlc3RKREtfTkZDX09yaWdfVGV4dCgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQZXJmVGVzdC5GdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGNhbGwoKSB7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmaWxlTGluZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIG5mYyA9IHN1bi50ZXh0Lk5vcm1hbGl6ZXIubm9ybWFsaXplKGZpbGVMaW5lc1tpXSwgc3VuLnRleHQuTm9ybWFsaXplci5DT01QT1NFLDApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgcHVibGljIGxvbmcgZ2V0T3BlcmF0aW9uc1Blckl0ZXJhdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpbnQgdG90YWxDaGFycyA9IDA7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmaWxlTGluZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgdG90YWxDaGFycyA9IHRvdGFsQ2hhcnMgKyBmaWxlTGluZXNbaV0ubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbENoYXJzOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KKyAgICAKKyAgICAvLyBUZXN0IE5GRCBQZXJmb3JtYW5jZQorICAgIFBlcmZUZXN0LkZ1bmN0aW9uIFRlc3RKREtfTkZEX05GRF9UZXh0KCkgeworICAgICAgICByZXR1cm4gbmV3IFBlcmZUZXN0LkZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgY2FsbCgpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE5GREZpbGVMaW5lcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbmZjID0gc3VuLnRleHQuTm9ybWFsaXplci5ub3JtYWxpemUoTkZERmlsZUxpbmVzW2ldLCBzdW4udGV4dC5Ob3JtYWxpemVyLkRFQ09NUCwwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHB1YmxpYyBsb25nIGdldE9wZXJhdGlvbnNQZXJJdGVyYXRpb24oKSB7CisgICAgICAgICAgICAgICAgaW50IHRvdGFsQ2hhcnMgPSAwOworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTkZERmlsZUxpbmVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIHRvdGFsQ2hhcnMgPSB0b3RhbENoYXJzICsgTkZERmlsZUxpbmVzW2ldLmxlbmd0aCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxDaGFyczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9CisgICAgCisgICAgUGVyZlRlc3QuRnVuY3Rpb24gVGVzdEpES19ORkRfTkZDX1RleHQoKSB7CisgICAgICAgIHJldHVybiBuZXcgUGVyZlRlc3QuRnVuY3Rpb24oKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBjYWxsKCkgeworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTkZDRmlsZUxpbmVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBuZmMgPSBzdW4udGV4dC5Ob3JtYWxpemVyLm5vcm1hbGl6ZShORkNGaWxlTGluZXNbaV0sIHN1bi50ZXh0Lk5vcm1hbGl6ZXIuREVDT01QLDApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgcHVibGljIGxvbmcgZ2V0T3BlcmF0aW9uc1Blckl0ZXJhdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpbnQgdG90YWxDaGFycyA9IDA7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBORkNGaWxlTGluZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgdG90YWxDaGFycyA9IHRvdGFsQ2hhcnMgKyBORkNGaWxlTGluZXNbaV0ubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbENoYXJzOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KKyAgICAKKyAgICBQZXJmVGVzdC5GdW5jdGlvbiBUZXN0SkRLX05GRF9PcmlnX1RleHQoKSB7CisgICAgICAgIHJldHVybiBuZXcgUGVyZlRlc3QuRnVuY3Rpb24oKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBjYWxsKCkgeworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZmlsZUxpbmVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBuZmMgPSBzdW4udGV4dC5Ob3JtYWxpemVyLm5vcm1hbGl6ZShmaWxlTGluZXNbaV0sIHN1bi50ZXh0Lk5vcm1hbGl6ZXIuREVDT01QLDApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgcHVibGljIGxvbmcgZ2V0T3BlcmF0aW9uc1Blckl0ZXJhdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpbnQgdG90YWxDaGFycyA9IDA7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmaWxlTGluZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgdG90YWxDaGFycyA9IHRvdGFsQ2hhcnMgKyBmaWxlTGluZXNbaV0ubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbENoYXJzOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KKyAgICAvLyBUZXN0IEZDRCBQZXJmb3JtYW5jZQorICAgIFBlcmZUZXN0LkZ1bmN0aW9uIFRlc3RJQ1VfRkNEX05GRF9UZXh0KCkgeworICAgICAgICByZXR1cm4gbmV3IFBlcmZUZXN0LkZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgY2FsbCgpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE5GREZpbGVMaW5lcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbmZjID0gTm9ybWFsaXplci5ub3JtYWxpemUoTkZERmlsZUxpbmVzW2ldLCBOb3JtYWxpemVyLkZDRCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBwdWJsaWMgbG9uZyBnZXRPcGVyYXRpb25zUGVySXRlcmF0aW9uKCkgeworICAgICAgICAgICAgICAgIGludCB0b3RhbENoYXJzID0gMDsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE5GREZpbGVMaW5lcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICB0b3RhbENoYXJzID0gdG90YWxDaGFycyArIE5GREZpbGVMaW5lc1tpXS5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsQ2hhcnM7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorKiovICAgIAorICAgIFBlcmZUZXN0LkZ1bmN0aW9uIFRlc3RJQ1VfRkNEX05GQ19UZXh0KCkgeworICAgICAgICByZXR1cm4gbmV3IFBlcmZUZXN0LkZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgY2FsbCgpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE5GQ0ZpbGVMaW5lcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbmZjID0gTm9ybWFsaXplci5ub3JtYWxpemUoTkZDRmlsZUxpbmVzW2ldLCBOb3JtYWxpemVyLkZDRCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBwdWJsaWMgbG9uZyBnZXRPcGVyYXRpb25zUGVySXRlcmF0aW9uKCkgeworICAgICAgICAgICAgICAgIGludCB0b3RhbENoYXJzID0gMDsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE5GQ0ZpbGVMaW5lcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICB0b3RhbENoYXJzID0gdG90YWxDaGFycyArIE5GQ0ZpbGVMaW5lc1tpXS5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsQ2hhcnM7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorICAgIAorICAgIFBlcmZUZXN0LkZ1bmN0aW9uIFRlc3RJQ1VfRkNEX09yaWdfVGV4dCgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQZXJmVGVzdC5GdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGNhbGwoKSB7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmaWxlTGluZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIG5mYyA9IE5vcm1hbGl6ZXIubm9ybWFsaXplKGZpbGVMaW5lc1tpXSwgTm9ybWFsaXplci5GQ0QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgcHVibGljIGxvbmcgZ2V0T3BlcmF0aW9uc1Blckl0ZXJhdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpbnQgdG90YWxDaGFycyA9IDA7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmaWxlTGluZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgdG90YWxDaGFycyA9IHRvdGFsQ2hhcnMgKyBmaWxlTGluZXNbaV0ubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbENoYXJzOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KKyAgICAKKyAgICAvLyBUZXN0IFF1aWNrIENoZWNrIFBlcmZvcm1hbmNlCisgICAgUGVyZlRlc3QuRnVuY3Rpb24gVGVzdFFDX05GQ19ORkRfVGV4dCgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQZXJmVGVzdC5GdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGNhbGwoKSB7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBORkRGaWxlTGluZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgTm9ybWFsaXplci5RdWlja0NoZWNrUmVzdWx0IHJlc3VsdCA9IE5vcm1hbGl6ZXIucXVpY2tDaGVjayhORkRGaWxlTGluZXNbaV0sIE5vcm1hbGl6ZXIuTkZDKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHB1YmxpYyBsb25nIGdldE9wZXJhdGlvbnNQZXJJdGVyYXRpb24oKSB7CisgICAgICAgICAgICAgICAgaW50IHRvdGFsQ2hhcnMgPSAwOworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTkZERmlsZUxpbmVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIHRvdGFsQ2hhcnMgPSB0b3RhbENoYXJzICsgTkZERmlsZUxpbmVzW2ldLmxlbmd0aCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxDaGFyczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9CisgICAgCisgICAgUGVyZlRlc3QuRnVuY3Rpb24gVGVzdFFDX05GQ19ORkNfVGV4dCgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQZXJmVGVzdC5GdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGNhbGwoKSB7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBORkNGaWxlTGluZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgTm9ybWFsaXplci5RdWlja0NoZWNrUmVzdWx0IHJlc3VsdCA9IE5vcm1hbGl6ZXIucXVpY2tDaGVjayhORkNGaWxlTGluZXNbaV0sIE5vcm1hbGl6ZXIuTkZDKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHB1YmxpYyBsb25nIGdldE9wZXJhdGlvbnNQZXJJdGVyYXRpb24oKSB7CisgICAgICAgICAgICAgICAgaW50IHRvdGFsQ2hhcnMgPSAwOworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTkZDRmlsZUxpbmVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIHRvdGFsQ2hhcnMgPSB0b3RhbENoYXJzICsgTkZDRmlsZUxpbmVzW2ldLmxlbmd0aCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxDaGFyczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9CisgICAgCisgICAgUGVyZlRlc3QuRnVuY3Rpb24gVGVzdFFDX05GQ19PcmlnX1RleHQoKSB7CisgICAgICAgIHJldHVybiBuZXcgUGVyZlRlc3QuRnVuY3Rpb24oKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBjYWxsKCkgeworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZmlsZUxpbmVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIE5vcm1hbGl6ZXIuUXVpY2tDaGVja1Jlc3VsdCByZXN1bHQgPSBOb3JtYWxpemVyLnF1aWNrQ2hlY2soZmlsZUxpbmVzW2ldLCBOb3JtYWxpemVyLk5GQyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBwdWJsaWMgbG9uZyBnZXRPcGVyYXRpb25zUGVySXRlcmF0aW9uKCkgeworICAgICAgICAgICAgICAgIGludCB0b3RhbENoYXJzID0gMDsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZpbGVMaW5lcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICB0b3RhbENoYXJzID0gdG90YWxDaGFycyArIGZpbGVMaW5lc1tpXS5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsQ2hhcnM7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorICAgIAorICAgIFBlcmZUZXN0LkZ1bmN0aW9uIFRlc3RRQ19ORkRfTkZEX1RleHQoKSB7CisgICAgICAgIHJldHVybiBuZXcgUGVyZlRlc3QuRnVuY3Rpb24oKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBjYWxsKCkgeworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTkZERmlsZUxpbmVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIE5vcm1hbGl6ZXIuUXVpY2tDaGVja1Jlc3VsdCByZXN1bHQgPSBOb3JtYWxpemVyLnF1aWNrQ2hlY2soTkZERmlsZUxpbmVzW2ldLCBOb3JtYWxpemVyLk5GRCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBwdWJsaWMgbG9uZyBnZXRPcGVyYXRpb25zUGVySXRlcmF0aW9uKCkgeworICAgICAgICAgICAgICAgIGludCB0b3RhbENoYXJzID0gMDsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE5GREZpbGVMaW5lcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICB0b3RhbENoYXJzID0gdG90YWxDaGFycyArIE5GREZpbGVMaW5lc1tpXS5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsQ2hhcnM7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorICAgIAorICAgIFBlcmZUZXN0LkZ1bmN0aW9uIFRlc3RRQ19ORkRfTkZDX1RleHQoKSB7CisgICAgICAgIHJldHVybiBuZXcgUGVyZlRlc3QuRnVuY3Rpb24oKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBjYWxsKCkgeworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTkZDRmlsZUxpbmVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIE5vcm1hbGl6ZXIuUXVpY2tDaGVja1Jlc3VsdCByZXN1bHQgPSBOb3JtYWxpemVyLnF1aWNrQ2hlY2soTkZDRmlsZUxpbmVzW2ldLCBOb3JtYWxpemVyLk5GRCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBwdWJsaWMgbG9uZyBnZXRPcGVyYXRpb25zUGVySXRlcmF0aW9uKCkgeworICAgICAgICAgICAgICAgIGludCB0b3RhbENoYXJzID0gMDsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE5GQ0ZpbGVMaW5lcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICB0b3RhbENoYXJzID0gdG90YWxDaGFycyArIE5GQ0ZpbGVMaW5lc1tpXS5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsQ2hhcnM7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorICAgIAorICAgIFBlcmZUZXN0LkZ1bmN0aW9uIFRlc3RRQ19ORkRfT3JpZ19UZXh0KCkgeworICAgICAgICByZXR1cm4gbmV3IFBlcmZUZXN0LkZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgY2FsbCgpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZpbGVMaW5lcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBOb3JtYWxpemVyLlF1aWNrQ2hlY2tSZXN1bHQgcmVzdWx0ID0gTm9ybWFsaXplci5xdWlja0NoZWNrKGZpbGVMaW5lc1tpXSwgTm9ybWFsaXplci5ORkQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgcHVibGljIGxvbmcgZ2V0T3BlcmF0aW9uc1Blckl0ZXJhdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpbnQgdG90YWxDaGFycyA9IDA7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmaWxlTGluZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgdG90YWxDaGFycyA9IHRvdGFsQ2hhcnMgKyBmaWxlTGluZXNbaV0ubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbENoYXJzOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KKyAgICAKKyAgICBQZXJmVGVzdC5GdW5jdGlvbiBUZXN0UUNfRkNEX05GRF9UZXh0KCkgeworICAgICAgICByZXR1cm4gbmV3IFBlcmZUZXN0LkZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgY2FsbCgpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE5GREZpbGVMaW5lcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBOb3JtYWxpemVyLlF1aWNrQ2hlY2tSZXN1bHQgcmVzdWx0ID0gTm9ybWFsaXplci5xdWlja0NoZWNrKE5GREZpbGVMaW5lc1tpXSwgTm9ybWFsaXplci5GQ0QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgcHVibGljIGxvbmcgZ2V0T3BlcmF0aW9uc1Blckl0ZXJhdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpbnQgdG90YWxDaGFycyA9IDA7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBORkRGaWxlTGluZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgdG90YWxDaGFycyA9IHRvdGFsQ2hhcnMgKyBORkRGaWxlTGluZXNbaV0ubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbENoYXJzOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KKyAgICAKKyAgICBQZXJmVGVzdC5GdW5jdGlvbiBUZXN0UUNfRkNEX05GQ19UZXh0KCkgeworICAgICAgICByZXR1cm4gbmV3IFBlcmZUZXN0LkZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgY2FsbCgpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE5GQ0ZpbGVMaW5lcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBOb3JtYWxpemVyLlF1aWNrQ2hlY2tSZXN1bHQgcmVzdWx0ID0gTm9ybWFsaXplci5xdWlja0NoZWNrKE5GQ0ZpbGVMaW5lc1tpXSwgTm9ybWFsaXplci5GQ0QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgcHVibGljIGxvbmcgZ2V0T3BlcmF0aW9uc1Blckl0ZXJhdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpbnQgdG90YWxDaGFycyA9IDA7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBORkNGaWxlTGluZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgdG90YWxDaGFycyA9IHRvdGFsQ2hhcnMgKyBORkNGaWxlTGluZXNbaV0ubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbENoYXJzOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KKyAgICAKKyAgICBQZXJmVGVzdC5GdW5jdGlvbiBUZXN0UUNfRkNEX09yaWdfVGV4dCgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQZXJmVGVzdC5GdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGNhbGwoKSB7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmaWxlTGluZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgTm9ybWFsaXplci5RdWlja0NoZWNrUmVzdWx0IHJlc3VsdCA9IE5vcm1hbGl6ZXIucXVpY2tDaGVjayhmaWxlTGluZXNbaV0sIE5vcm1hbGl6ZXIuRkNEKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHB1YmxpYyBsb25nIGdldE9wZXJhdGlvbnNQZXJJdGVyYXRpb24oKSB7CisgICAgICAgICAgICAgICAgaW50IHRvdGFsQ2hhcnMgPSAwOworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZmlsZUxpbmVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIHRvdGFsQ2hhcnMgPSB0b3RhbENoYXJzICsgZmlsZUxpbmVzW2ldLmxlbmd0aCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxDaGFyczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9CisgICAgCisgICAgLy8gVGVzdCBpc05vcm1hbGl6ZWQgUGVyZm9ybWFuY2UKKyAgICBQZXJmVGVzdC5GdW5jdGlvbiBUZXN0SXNOb3JtYWxpemVkX05GQ19ORkRfVGV4dCgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQZXJmVGVzdC5GdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGNhbGwoKSB7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBORkRGaWxlTGluZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiByZXN1bHQgPSBOb3JtYWxpemVyLmlzTm9ybWFsaXplZChORkRGaWxlTGluZXNbaV0sIE5vcm1hbGl6ZXIuTkZDKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHB1YmxpYyBsb25nIGdldE9wZXJhdGlvbnNQZXJJdGVyYXRpb24oKSB7CisgICAgICAgICAgICAgICAgaW50IHRvdGFsQ2hhcnMgPSAwOworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTkZERmlsZUxpbmVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIHRvdGFsQ2hhcnMgPSB0b3RhbENoYXJzICsgTkZERmlsZUxpbmVzW2ldLmxlbmd0aCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxDaGFyczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9CisgICAgCisgICAgUGVyZlRlc3QuRnVuY3Rpb24gVGVzdElzTm9ybWFsaXplZF9ORkNfTkZDX1RleHQoKSB7CisgICAgICAgIHJldHVybiBuZXcgUGVyZlRlc3QuRnVuY3Rpb24oKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBjYWxsKCkgeworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTkZDRmlsZUxpbmVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gcmVzdWx0ID0gTm9ybWFsaXplci5pc05vcm1hbGl6ZWQoTkZDRmlsZUxpbmVzW2ldLCBOb3JtYWxpemVyLk5GQyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBwdWJsaWMgbG9uZyBnZXRPcGVyYXRpb25zUGVySXRlcmF0aW9uKCkgeworICAgICAgICAgICAgICAgIGludCB0b3RhbENoYXJzID0gMDsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE5GQ0ZpbGVMaW5lcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICB0b3RhbENoYXJzID0gdG90YWxDaGFycyArIE5GQ0ZpbGVMaW5lc1tpXS5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsQ2hhcnM7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorICAgIAorICAgIFBlcmZUZXN0LkZ1bmN0aW9uIFRlc3RJc05vcm1hbGl6ZWRfTkZDX09yaWdfVGV4dCgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQZXJmVGVzdC5GdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGNhbGwoKSB7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmaWxlTGluZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiByZXN1bHQgPSBOb3JtYWxpemVyLmlzTm9ybWFsaXplZChmaWxlTGluZXNbaV0sIE5vcm1hbGl6ZXIuTkZDKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHB1YmxpYyBsb25nIGdldE9wZXJhdGlvbnNQZXJJdGVyYXRpb24oKSB7CisgICAgICAgICAgICAgICAgaW50IHRvdGFsQ2hhcnMgPSAwOworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZmlsZUxpbmVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIHRvdGFsQ2hhcnMgPSB0b3RhbENoYXJzICsgZmlsZUxpbmVzW2ldLmxlbmd0aCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxDaGFyczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9CisgICAgCisgICAgUGVyZlRlc3QuRnVuY3Rpb24gVGVzdElzTm9ybWFsaXplZF9ORkRfTkZEX1RleHQoKSB7CisgICAgICAgIHJldHVybiBuZXcgUGVyZlRlc3QuRnVuY3Rpb24oKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBjYWxsKCkgeworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTkZERmlsZUxpbmVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gcmVzdWx0ID0gTm9ybWFsaXplci5pc05vcm1hbGl6ZWQoTkZERmlsZUxpbmVzW2ldLCBOb3JtYWxpemVyLk5GRCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBwdWJsaWMgbG9uZyBnZXRPcGVyYXRpb25zUGVySXRlcmF0aW9uKCkgeworICAgICAgICAgICAgICAgIGludCB0b3RhbENoYXJzID0gMDsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE5GREZpbGVMaW5lcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICB0b3RhbENoYXJzID0gdG90YWxDaGFycyArIE5GREZpbGVMaW5lc1tpXS5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsQ2hhcnM7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorICAgIAorICAgIFBlcmZUZXN0LkZ1bmN0aW9uIFRlc3RJc05vcm1hbGl6ZWRfTkZEX05GQ19UZXh0KCkgeworICAgICAgICByZXR1cm4gbmV3IFBlcmZUZXN0LkZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgY2FsbCgpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE5GQ0ZpbGVMaW5lcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBib29sZWFuIHJlc3VsdCA9IE5vcm1hbGl6ZXIuaXNOb3JtYWxpemVkKE5GQ0ZpbGVMaW5lc1tpXSwgTm9ybWFsaXplci5ORkQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgcHVibGljIGxvbmcgZ2V0T3BlcmF0aW9uc1Blckl0ZXJhdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpbnQgdG90YWxDaGFycyA9IDA7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBORkNGaWxlTGluZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgdG90YWxDaGFycyA9IHRvdGFsQ2hhcnMgKyBORkNGaWxlTGluZXNbaV0ubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbENoYXJzOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KKyAgICAKKyAgICBQZXJmVGVzdC5GdW5jdGlvbiBUZXN0SXNOb3JtYWxpemVkX05GRF9PcmlnX1RleHQoKSB7CisgICAgICAgIHJldHVybiBuZXcgUGVyZlRlc3QuRnVuY3Rpb24oKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBjYWxsKCkgeworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZmlsZUxpbmVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gcmVzdWx0ID0gTm9ybWFsaXplci5pc05vcm1hbGl6ZWQoZmlsZUxpbmVzW2ldLCBOb3JtYWxpemVyLk5GRCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBwdWJsaWMgbG9uZyBnZXRPcGVyYXRpb25zUGVySXRlcmF0aW9uKCkgeworICAgICAgICAgICAgICAgIGludCB0b3RhbENoYXJzID0gMDsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZpbGVMaW5lcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICB0b3RhbENoYXJzID0gdG90YWxDaGFycyArIGZpbGVMaW5lc1tpXS5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsQ2hhcnM7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorICAgIAorICAgIFBlcmZUZXN0LkZ1bmN0aW9uIFRlc3RJc05vcm1hbGl6ZWRfRkNEX05GRF9UZXh0KCkgeworICAgICAgICByZXR1cm4gbmV3IFBlcmZUZXN0LkZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgY2FsbCgpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE5GREZpbGVMaW5lcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBib29sZWFuIHJlc3VsdCA9IE5vcm1hbGl6ZXIuaXNOb3JtYWxpemVkKE5GREZpbGVMaW5lc1tpXSwgTm9ybWFsaXplci5GQ0QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgcHVibGljIGxvbmcgZ2V0T3BlcmF0aW9uc1Blckl0ZXJhdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpbnQgdG90YWxDaGFycyA9IDA7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBORkRGaWxlTGluZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgdG90YWxDaGFycyA9IHRvdGFsQ2hhcnMgKyBORkRGaWxlTGluZXNbaV0ubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbENoYXJzOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KKyAgICAKKyAgICBQZXJmVGVzdC5GdW5jdGlvbiBUZXN0SXNOb3JtYWxpemVkX0ZDRF9ORkNfVGV4dCgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQZXJmVGVzdC5GdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGNhbGwoKSB7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBORkNGaWxlTGluZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiByZXN1bHQgPSBOb3JtYWxpemVyLmlzTm9ybWFsaXplZChORkNGaWxlTGluZXNbaV0sIE5vcm1hbGl6ZXIuRkNEKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHB1YmxpYyBsb25nIGdldE9wZXJhdGlvbnNQZXJJdGVyYXRpb24oKSB7CisgICAgICAgICAgICAgICAgaW50IHRvdGFsQ2hhcnMgPSAwOworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTkZDRmlsZUxpbmVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIHRvdGFsQ2hhcnMgPSB0b3RhbENoYXJzICsgTkZDRmlsZUxpbmVzW2ldLmxlbmd0aCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxDaGFyczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9CisgICAgCisgICAgUGVyZlRlc3QuRnVuY3Rpb24gVGVzdElzTm9ybWFsaXplZF9GQ0RfT3JpZ19UZXh0KCkgeworICAgICAgICByZXR1cm4gbmV3IFBlcmZUZXN0LkZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgY2FsbCgpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZpbGVMaW5lcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBib29sZWFuIHJlc3VsdCA9IE5vcm1hbGl6ZXIuaXNOb3JtYWxpemVkKGZpbGVMaW5lc1tpXSwgTm9ybWFsaXplci5GQ0QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgcHVibGljIGxvbmcgZ2V0T3BlcmF0aW9uc1Blckl0ZXJhdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpbnQgdG90YWxDaGFycyA9IDA7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmaWxlTGluZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgdG90YWxDaGFycyA9IHRvdGFsQ2hhcnMgKyBmaWxlTGluZXNbaV0ubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbENoYXJzOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KKyAgICAgIAorICAgIHByaXZhdGUgdm9pZCBwcmludFVzYWdlKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlVzYWdlOiAiICsgdGhpcy5nZXRDbGFzcygpLmdldE5hbWUoKSArICIgW09QVElPTlNdIGZpbGVOYW1lXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiXHQtZiBvciAtLWZpbGVOYW1lICBcdGZpbGUgdG8gYmUgdXNlZCBhcyB0ZXN0IGRhdGFcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArICJcdC1zIG9yIC0tc291cmNlRGlyIFx0c291cmNlIGRpcmVjdG9yeSBmb3IgZmlsZXMgZm9sbG93ZWQgYnkgcGF0aFxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIlx0LWUgb3IgLS1lbmNvZGluZyAgXHRlbmNvZGluZyBvZiBzb3VyY2UgZmlsZXNcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArICJcdC1iIG9yIC0tYnVsa01vZGUgIFx0bm9ybWFsaXplIHdob2xlIGZpbGUgYXQgb25jZVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIlx0LWwgb3IgLS1saW5lTW9kZSAgXHRub3JtYWxpemUgZmlsZSBvbmUgbGluZSBhdCBhIHRpbWVcbiIKKyAgICAgICAgICAgICk7CisgICAgICAgIFN5c3RlbS5leGl0KDEpOworICAgIH0KKyAgICBTdHJpbmdbXSBub3JtYWxpemVJbnB1dChTdHJpbmdbXSBzcmMsIE5vcm1hbGl6ZXIuTW9kZSBtb2RlKSB7CisgICAgICAgIFN0cmluZ1tdIGRlc3QgPSBuZXcgU3RyaW5nW3NyYy5sZW5ndGhdOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNyYy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgZGVzdFtpXSA9IE5vcm1hbGl6ZXIubm9ybWFsaXplKHNyY1tpXSwgbW9kZSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBkZXN0OworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9wZXJmL1BlcmZUZXN0LmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvcGVyZi9QZXJmVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlZjdiNTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvcGVyZi9QZXJmVGVzdC5qYXZhCkBAIC0wLDAgKzEsNjM0IEBACisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmlnaHQgKGMpIDIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyogQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9wZXJmL1BlcmZUZXN0LmphdmEsdiAkIAorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3QucGVyZjsKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYudG9vbC5VT3B0aW9uOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuTnVtYmVyRm9ybWF0OworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuRGVjaW1hbEZvcm1hdDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5NYXA7CitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CitpbXBvcnQgamF2YS5pby5CdWZmZXJlZFJlYWRlcjsKK2ltcG9ydCBqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbVJlYWRlcjsKK2ltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC4qOworCisvKioKKyAqIEJhc2UgY2xhc3MgZm9yIHBlcmZvcm1hbmNlIHRlc3RpbmcgZnJhbWV3b3JrLiAgVG8gdXNlLCBzdWJjbGFzcyBhbmQKKyAqIGRlZmluZSBvbmUgb3IgbW9yZSBpbnN0YW5jZSBtZXRob2RzIHdpdGggbmFtZXMgYmVnaW5uaW5nIHdpdGgKKyAqICJ0ZXN0IiAoY2FzZSBpZ25vcmVkKS4gIEVhY2ggc3VjaCBtZXRob2QgbXVzdCB0aGVuIGNhbGwgdHdvCisgKiBmdW5jdGlvbnMsIHNldFRlc3RGdW5jdGlvbigpLCBhbmQgc2V0RXZlbnRzUGVyQ2FsbCgpLiAgSW4gYWRkaXRpb24sCisgKiB0aGUgc3ViY2xhc3Mgc2hvdWxkIGRlZmluZSBhIG1haW4oKSBtZXRob2QgdGhhdCBjYWxscyBydW4oKSBhcworICogZGVmaW5lZCBoZXJlLiAgSWYgdGhlIHN1YmNsYXNzZXMgdXNlcyBhbnkgY29tbWFuZCBsaW5lIGFyZ3VtZW50cworICogKGJleW9uZCB0aG9zZSBoYW5kbGVkIGF1dG9tYXRpY2FsbHkgYnkgdGhpcyBjYWxzcykgdGhlbiBpdCBzaG91bGQKKyAqIG92ZXJyaWRlIHNldHVwKCkgdG8gaGFuZGxlIGl0cyBhcmd1bWVudHMuCisgKiAKKyAqIFRoZSBjb21tYW5kLWxpbmUgYXJndW1lbnQgbGlzdCBzaG91bGQgaGF2ZSB0aGUgZm9ybToKKyAqICAgYXJnLWxpc3QgOj0gb3B0aW9ucyogbWV0aC1zcGVjKyAnLSc/IC4uLgorICogICBtZXRoLXNwZWMgOj0gbWV0aC1uYW1lIGNvdW50KworICogICBvcHRpb25zIDo9IC1nYyB8IC1ub2djCisgKiB3aGVyZToKKyAqICAgbWV0aC1uYW1lIGEgbWV0aG9kIG5hbWUsIGNhc2UgaW5zZW5zaXRpdmUsIG9wdGlvbmFsbHkKKyAqICAgICAgICAgICAgIHdpdGggdGhlIGluaXRpYWwgInRlc3QiIG9taXR0ZWQKKyAqICAgY291bnQgICAgIGFuIGludGVnZXIsID4gMCwgZ2l2aW5nIHRoZSBudW1iZXIgb2YgdGltZQorICogICAgICAgICAgICAgdG8gY2FsbCB0aGUgbWV0aG9kIHNldHVwIGJ5IG1ldGgtbmFtZS4gIElmICdjb3VudCcgaXMKKyAqICAgICAgICAgICAgIGFuIGludGVnZXIgPCAwLCB0aGVuIGl0ZXJhdGlvbnMgYXJlIHZhcmllZCB0byBhY2hpZXZlIGEKKyAqICAgICAgICAgICAgIHRvdGFsIGR1cmF0aW9uIG9mIGF0IGxlYXN0IC1jb3VudCBzZWNvbmRzLgorICogICAnLScgICAgICAgYW4gb3B0aW9uYWwgc2VwYXJhdG9yOyBpZiBzZWVuLCBhbGwgc3Vic2VxdWVudAorICogICAgICAgICAgICAgYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gdGhlIHN1YmNsYXNzCisgKiAgIC4uLiAgICAgICBleHRyYSBhcmd1bWVudHMsIG5vdCByZWNvZ25pemVkIGFzIGVpdGhlciBhCisgKiAgICAgICAgICAgICBtZXRoLW5hbWUgb3IgYSBjb3VudCwgb3IgZm9sbG93aW5nIGEgJy0nLAorICogICAgICAgICAgICAgcGFzc2VkIHRvIHRoZSBzZXR1cCgpIG1ldGhvZCwgd2hpY2ggdGhlCisgKiAgICAgICAgICAgICBzdWJjbGFzcyBtYXkgb3ZlcnJpZGUKKyAqIG9wdGlvbnM6CisgKiAgIC1nYyAgICAgICBjYWxscyBSdW50aW1lLmdjKCkgcmVwZWF0ZWRseSB1bnRpbCBoZWFwCisgKiAgICAgICAgICAgICBzdGFiaWxpemVzIGJlZm9yZSBkb2luZyBhbnkgdGltaW5nCisgKiAgIC1ub2djICAgICBkaXNhYmxlIC1nYyAoZGVmYXVsdCkKKyAqCisgKiBFeGFtcGxlIGludm9jYXRpb246CisgKiBqYXZhIC1jcCBjbGFzc2VzIC12ZXJib3NlOmdjIGNvbS5pYm0uaWN1LmRldi50ZXN0LnBlcmYuVW5pY29kZVNldFBlcmYgLWdjIFVuaWNvZGVTZXRBZGQgMTAwIDEwMCAxMDAgMTAwIFtbOmw6XVs6YzpdXQorICogCisgKiBFeGFtcGxlIG91dHB1dDoKKyAqIFtHQyA1MTFLLT4xOTJLKDE5ODRLKSwgMC4wMDg2MTcwIHNlY3NdCisgKiBbR0MgNzA0Sy0+MzUzSygxOTg0SyksIDAuMDA1OTYxOSBzZWNzXQorICogW0Z1bGwgR0MgNjE4Sy0+MzcxSygxOTg0SyksIDAuMDI0Mjc3OSBzZWNzXQorICogW0Z1bGwgR0MgMzcxSy0+MzcxSygxOTg0SyksIDAuMDIyODY0OSBzZWNzXQorICogPSB0ZXN0VW5pY29kZVNldEFkZCBiZWdpbiAxMDAKKyAqID0gdGVzdFVuaWNvZGVTZXRBZGQgZW5kIDExOTc3IDExMDkwNDQKKyAqID0gdGVzdFVuaWNvZGVTZXRBZGQgYmVnaW4gMTAwCisgKiA9IHRlc3RVbmljb2RlU2V0QWRkIGVuZCAxMjA0NyAxMTA5MDQ0CisgKiA9IHRlc3RVbmljb2RlU2V0QWRkIGJlZ2luIDEwMAorICogPSB0ZXN0VW5pY29kZVNldEFkZCBlbmQgMTE5ODcgMTEwOTA0NAorICogPSB0ZXN0VW5pY29kZVNldEFkZCBiZWdpbiAxMDAKKyAqID0gdGVzdFVuaWNvZGVTZXRBZGQgZW5kIDExOTc4IDExMDkwNDQKKyAqCisgKiBUaGUgW10gbGluZXMgYXJlIGVtaXR0ZWQgYnkgdGhlIEpWTSBhcyBhIHJlc3VsdCBvZiB0aGUgLXZlcmJvc2U6Z2MKKyAqIHN3aXRjaC4KKyAqCisgKiBMaW5lcyBiZWdpbm5pbmcgd2l0aCAnPScgYXJlIGVtaXR0ZWQgYnkgUGVyZlRlc3Q6CisgKgorICogPSB0ZXN0VW5pY29kZVNldEFkZCBiZWdpbiAxMDAKKyAqIEEgJ2JlZ2luJyBzdGF0ZW1lbnQgY29udGFpbnMgdGhlIG5hbWUgb2YgdGhlIHNldHVwIG1ldGhvZCwgd2hpY2gKKyAqIGRldGVybWluZXMgd2hhdCB0ZXN0IGZ1bmN0aW9uIGlzIG1lYXN1cmVzLCBhbmQgdGhlIG51bWJlciBvZgorICogaXRlcmF0aW9ucyB0aGF0IHdpbGwgYmUgdGltZXMuCisgKgorICogPSB0ZXN0VW5pY29kZVNldEFkZCBlbmQgMTIwNDcgMTEwOTA0NAorICogQW4gJ2VuZCcgc3RhdGVtZW50IGdpdmVzIHRoZSBuYW1lIG9mIHRoZSBzZXR1cCBtZXRob2QgYWdhaW4sIGFuZAorICogdGhlbiB0d28gaW50ZWdlcnMuICBUaGUgZmlyc3QgaXMgdGhlIHRvdGFsIGVsYXBzZWQgdGltZSBpbgorICogbWlsbGlzZWNvbmRzLCBhbmQgdGhlIHNlY29uZCBpcyB0aGUgbnVtYmVyIG9mIGV2ZW50cyBwZXIgaXRlcmF0aW9uLgorICogSW4gdGhpcyBleGFtcGxlLCB0aGUgdGltZSBwZXIgZXZlbnQgaXMgMTIwNDcgLyAoMTAwICogMTEwOTA0NCkgb3IKKyAqIDEwOC42IG5zL2V2ZW50LgorICoKKyAqIFJhdyB0aW1lcyBhcmUgZ2l2ZW4gYXMgaW50ZWdlciBtcywgYmVjYXVzZSB0aGlzIGlzIHdoYXQgdGhlIHN5c3RlbQorICogbWVhc3VyZXMuCisgKgorICogQGF1dGhvciBBbGFuIExpdQorICogQHNpbmNlIElDVSAyLjQKKyAqLworcHVibGljIGFic3RyYWN0IGNsYXNzIFBlcmZUZXN0IHsKKworICAgIC8qKgorICAgICAqIEEgbWFwIG9mIG11bmdlZCBuYW1lcyB0byBNZXRob2Qgb2JqZWN0cy4gIEFsbCBhdmFpbGFibGUgbWV0aG9kcworICAgICAqIGluIHRoZSBjdXJyZW50IG9iamVjdCBiZWdpbm5pbmcgd2l0aCAidGVzdCIgKGNhc2UgaWdub3JlZCkuCisgICAgICovCisgICAgcHJpdmF0ZSBNYXAgYXZhaWxhYmxlVGVzdHM7IC8vIE5PVCBzdGF0aWMKKworICAgIC8vIENvbW1hbmQtbGluZSBvcHRpb25zIHNldCB0aGVzZToKKyAgICBwcm90ZWN0ZWQgYm9vbGVhbiAgICAgICAgdmVyYm9zZTsKKyAgICBwcm90ZWN0ZWQgU3RyaW5nICAgICAgICAgc291cmNlRGlyOworICAgIHByb3RlY3RlZCBTdHJpbmcgICAgICAgICBmaWxlTmFtZTsKKyAgICAvL3Byb3RlY3RlZCBTdHJpbmcgICAgICAgICByZXNvbHZlZEZpbGVOYW1lOworICAgIHByb3RlY3RlZCBTdHJpbmcgICAgICAgICBlbmNvZGluZzsKKyAgICBwcm90ZWN0ZWQgYm9vbGVhbiAgICAgICAgdXNlbGVuOworICAgIHByb3RlY3RlZCBpbnQgICAgICAgICAgICBpdGVyYXRpb25zOworICAgIHByb3RlY3RlZCBpbnQgICAgICAgICAgICBwYXNzZXM7CisgICAgcHJvdGVjdGVkIGludCAgICAgICAgICAgIHRpbWU7CisgICAgcHJvdGVjdGVkIGJvb2xlYW4gICAgICAgIGxpbmVfbW9kZTsKKyAgICBwcm90ZWN0ZWQgYm9vbGVhbiAgICAgICAgYnVsa19tb2RlOworICAgIHByb3RlY3RlZCBib29sZWFuICAgICAgICBkb1ByaW9yR0M7CisKKyAgICAvKioKKyAgICAgKiBTdWJjbGFzc2VzIG9mIFBlcmZUZXN0IHdpbGwgbmVlZCB0byBjcmVhdGUgc3ViY2xhc3NlcyBvZgorICAgICAqIEZ1bmN0aW9uIHRoYXQgZGVmaW5lIGEgY2FsbCgpIG1ldGhvZCB3aGljaCBjb250YWlucyB0aGUgY29kZSB0bworICAgICAqIGJlIHRpbWVkLiAgVGhleSB0aGVuIGNhbGwgc2V0VGVzdEZ1bmN0aW9uKCkgaW4gdGhlaXIgIlRlc3QuLi4iCisgICAgICogbWV0aG9kIHRvIGVzdGFibGlzaCB0aGlzIGFzIHRoZSBjdXJyZW50IHRlc3QgZnVuY3Rvci4KKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3Qgc3RhdGljIGNsYXNzIEZ1bmN0aW9uIHsKKworICAgICAgICAvKioKKyAgICAgICAgICogU3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCB0aGlzIG1ldGhvZCB0byBkbyB0aGUgYWN0aW9uIHRvIGJlCisgICAgICAgICAqIG1lYXN1cmVkLgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIGFic3RyYWN0IHZvaWQgY2FsbCgpOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBTdWJjbGFzc2VzIG1heSBpbXBsZW1lbnQgdGhpcyBtZXRob2QgdG8gcmV0dXJuIHBvc2l0aXZlCisgICAgICAgICAqIGludGVnZXIgaW5kaWNhdGluZyB0aGUgbnVtYmVyIG9mIG9wZXJhdGlvbnMgaW4gYSBzaW5nbGUKKyAgICAgICAgICogY2FsbCB0byB0aGlzIG9iamVjdCdzIGNhbGwoKSBtZXRob2QuICBJZiBzdWJjbGFzc2VzIGRvIG5vdAorICAgICAgICAgKiBvdmVycmlkZSB0aGlzIG1ldGhvZCwgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyAxLgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIGxvbmcgZ2V0T3BlcmF0aW9uc1Blckl0ZXJhdGlvbigpIHsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFN1YmNsYXNzZXMgbWF5IGltcGxlbWVudCB0aGlzIG1ldGhvZCB0byByZXR1cm4gZWl0aGVyIHBvc2l0aXZlCisgICAgICAgICAqIG9yIG5lZ2F0aXZlIGludGVnZXIgaW5kaWNhdGluZyB0aGUgbnVtYmVyIG9mIGV2ZW50cyBpbiBhIHNpbmdsZQorICAgICAgICAgKiBjYWxsIHRvIHRoaXMgb2JqZWN0J3MgY2FsbCgpIG1ldGhvZC4gIElmIHN1YmNsYXNzZXMgZG8gbm90CisgICAgICAgICAqIG92ZXJyaWRlIHRoaXMgbWV0aG9kLCB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIC0xLAorICAgICAgICAgKiBpbmRpY2F0aW5nIHRoYXQgZXZlbnRzIGFyZSBub3QgYXBwbGljYWJsZSB0byB0aGlzIHRlc3QuCisgICAgICAgICAqIGUuZzogTnVtYmVyIG9mIGJyZWFrcyAvIGl0ZXJhdGlvbnMgZm9yIGJyZWFrIGl0ZXJhdG9yCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgbG9uZyBnZXRFdmVudHNQZXJJdGVyYXRpb24oKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogQ2FsbCBjYWxsKCkgbiB0aW1lcyBpbiBhIHRpZ2h0IGxvb3AgYW5kIHJldHVybiB0aGUgZWxhcHNlZAorICAgICAgICAgKiBtaWxsaXNlY29uZHMuICBJZiBuIGlzIHNtYWxsIGFuZCBjYWxsKCkgaXMgZmFzdCB0aGUgcmV0dXJuCisgICAgICAgICAqIHJlc3VsdCBtYXkgYmUgemVyby4gIFNtYWxsIHJldHVybiB2YWx1ZXMgaGF2ZSBsaW1pdGVkCisgICAgICAgICAqIG1lYW5pbmdmdWxuZXNzLCBkZXBlbmRpbmcgb24gdGhlIHVuZGVybHlpbmcgVk0gYW5kIE9TLgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIGZpbmFsIGxvbmcgdGltZShsb25nIG4pIHsKKyAgICAgICAgICAgIGxvbmcgc3RhcnQsIHN0b3A7CisgICAgICAgICAgICBzdGFydCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICAgICAgd2hpbGUgKG4tLSA+IDApIHsKKyAgICAgICAgICAgICAgICBjYWxsKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdG9wID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgICAgICByZXR1cm4gc3RvcCAtIHN0YXJ0OyAvLyBtcworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogRXhjZXB0aW9uIGluZGljYXRpbmcgYSB1c2FnZSBlcnJvci4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFVzYWdlRXhjZXB0aW9uIGV4dGVuZHMgRXhjZXB0aW9uIHsKKyAgICAgICAgcHVibGljIFVzYWdlRXhjZXB0aW9uKFN0cmluZyBtZXNzYWdlKSB7CisgICAgICAgICAgICBzdXBlcihtZXNzYWdlKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBVc2FnZUV4Y2VwdGlvbigpIHsKKyAgICAgICAgICAgIHN1cGVyKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3Rvci4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgUGVyZlRlc3QoKSB7CisgICAgfQorCisgICAgLyoqCisgICAgICogRnJhbWV3b3JrIG1ldGhvZC4gIERlZmF1bHQgaW1wbGVtZW50YXRpb24gZG9lcyBub3QgcGFyc2UgYW55CisgICAgICogZXh0cmEgYXJndW1lbnRzLiAgU3ViY2xhc3NlcyBtYXkgb3ZlcnJpZGUgdGhpcyB0byBwYXJzZSBleHRyYQorICAgICAqIGFyZ3VtZW50cy4gIFN1YmNsYXNzIGltcGxlbWVudGF0aW9ucyBzaG91bGQgTk9UIGNhbGwgdGhlIGJhc2UKKyAgICAgKiBjbGFzcyBpbXBsZW1lbnRhdGlvbi4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgdm9pZCBzZXR1cChTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIGlmIChhcmdzLmxlbmd0aCA+IDApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJFeHRyYSBhcmd1bWVudHMgcmVjZWl2ZWQiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFRoZXNlIG11c3QgYmUga2VwdCBpbiBzeW5jIHdpdGggZ2V0T3B0aW9ucygpLgorICAgICAqLworICAgIHN0YXRpYyBmaW5hbCBpbnQgSEVMUDEgPSAwOworICAgIHN0YXRpYyBmaW5hbCBpbnQgSEVMUDIgPSAxOworICAgIHN0YXRpYyBmaW5hbCBpbnQgVkVSQk9TRSA9IDI7CisgICAgc3RhdGljIGZpbmFsIGludCBTT1VSQ0VESVIgPSAzOworICAgIHN0YXRpYyBmaW5hbCBpbnQgRU5DT0RJTkcgPSA0OworICAgIHN0YXRpYyBmaW5hbCBpbnQgVVNFTEVOID0gNTsKKyAgICBzdGF0aWMgZmluYWwgaW50IEZJTEVfTkFNRSA9IDY7CisgICAgc3RhdGljIGZpbmFsIGludCBQQVNTRVMgPSA3OworICAgIHN0YXRpYyBmaW5hbCBpbnQgSVRFUkFUSU9OUyA9IDg7CisgICAgc3RhdGljIGZpbmFsIGludCBUSU1FID0gOTsKKyAgICBzdGF0aWMgZmluYWwgaW50IExJTkVfTU9ERSA9IDEwOworICAgIHN0YXRpYyBmaW5hbCBpbnQgQlVMS19NT0RFID0gMTE7CisgICAgc3RhdGljIGZpbmFsIGludCBHQVJCQUdFX0NPTExFQ1QgPSAxMTsKKworICAgIFVPcHRpb25bXSBnZXRPcHRpb25zKCkgeworICAgICAgICByZXR1cm4gbmV3IFVPcHRpb25bXSB7CisgICAgICAgICAgICBVT3B0aW9uLkhFTFBfSCgpLAorICAgICAgICAgICAgVU9wdGlvbi5IRUxQX1FVRVNUSU9OX01BUksoKSwKKyAgICAgICAgICAgIFVPcHRpb24uVkVSQk9TRSgpLAorICAgICAgICAgICAgVU9wdGlvbi5TT1VSQ0VESVIoKSwKKyAgICAgICAgICAgIFVPcHRpb24uRU5DT0RJTkcoKSwKKyAgICAgICAgICAgIFVPcHRpb24uREVGKCAidXNlbGVuIiwgICAgICAgICd1JywgVU9wdGlvbi5OT19BUkcpLAorICAgICAgICAgICAgVU9wdGlvbi5ERUYoICJmaWxlLW5hbWUiLCAgICAgJ2YnLCBVT3B0aW9uLlJFUVVJUkVTX0FSRyksCisgICAgICAgICAgICBVT3B0aW9uLkRFRiggInBhc3NlcyIsICAgICAgICAncCcsIFVPcHRpb24uUkVRVUlSRVNfQVJHKSwKKyAgICAgICAgICAgIFVPcHRpb24uREVGKCAiaXRlcmF0aW9ucyIsICAgICdpJywgVU9wdGlvbi5SRVFVSVJFU19BUkcpLCAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBVT3B0aW9uLkRFRiggInRpbWUiLCAgICAgICAgICAndCcsIFVPcHRpb24uUkVRVUlSRVNfQVJHKSwKKyAgICAgICAgICAgIFVPcHRpb24uREVGKCAibGluZS1tb2RlIiwgICAgICdsJywgVU9wdGlvbi5OT19BUkcpLAorICAgICAgICAgICAgVU9wdGlvbi5ERUYoICJidWxrLW1vZGUiLCAgICAgJ2InLCBVT3B0aW9uLk5PX0FSRyksCisKKyAgICAgICAgICAgIFVPcHRpb24uREVGKCAiZ2MiLCAgICAgICAgICAgICdnJywgVU9wdGlvbi5OT19BUkcpLCAKKyAgICAgICAgfTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTdWJjbGFzc2VzIHNob3VsZCBjYWxsIHRoaXMgbWV0aG9kIGluIHRoZWlyIG1haW4oKS4gIHJ1bigpIHdpbGwKKyAgICAgKiBpbiB0dXJuIGNhbGwgc2V0dXAoKSB3aXRoIGFueSBhcmd1bWVudHMgaXQgZG9lcyBub3QgcGFyc2UuCisgICAgICogVGhpcyBtZXRob2QgcGFyc2VzIHRoZSBjb21tYW5kIGxpbmUgYW5kIHJ1bnMgdGhlIHRlc3RzIGdpdmVuIG9uCisgICAgICogdGhlIGNvbW1hbmQgbGluZSwgd2l0aCB0aGUgZ2l2ZW4gcGFyYW1ldGVycy4gIFNlZSB0aGUgY2xhc3MKKyAgICAgKiBkZXNjcmlwdGlvbiBmb3IgZGV0YWlscy4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgZmluYWwgdm9pZCBydW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIEFycmF5TGlzdCBtZXRob2RMaXN0ID0gbmV3IEFycmF5TGlzdCgpOworICAgICAgICBNZXRob2QgbWV0aCA9IG51bGw7CisKKyAgICAgICAgYXZhaWxhYmxlVGVzdHMgPSBudWxsOworICAgICAgICBkb1ByaW9yR0MgPSBmYWxzZTsKKyAgICAgICAgZW5jb2RpbmcgPSAiIjsKKyAgICAgICAgdXNlbGVuID0gZmFsc2U7CisgICAgICAgIGZpbGVOYW1lID0gbnVsbDsKKyAgICAgICAgc291cmNlRGlyID0gbnVsbDsKKyAgICAgICAgLy9saW5lcyA9IG51bGw7CisgICAgICAgIGxpbmVfbW9kZSA9IGZhbHNlOworICAgICAgICAvL2J1ZmZlciA9IG51bGw7CisgICAgICAgIC8vYnVmZmVyTGVuID0gMDsKKyAgICAgICAgdmVyYm9zZSA9IGZhbHNlOworICAgICAgICBidWxrX21vZGUgPSBmYWxzZTsKKyAgICAgICAgcGFzc2VzID0gaXRlcmF0aW9ucyA9IHRpbWUgPSAwOworCisgICAgICAgIFVPcHRpb25bXSBvcHRpb25zID0gZ2V0T3B0aW9ucygpOworICAgICAgICBpbnQgcmVtYWluaW5nQXJnYyA9IFVPcHRpb24ucGFyc2VBcmdzKGFyZ3MsIG9wdGlvbnMpOworCisgICAgICAgIGlmKGFyZ3MubGVuZ3RoPT0wIHx8IG9wdGlvbnNbSEVMUDFdLmRvZXNPY2N1ciB8fCBvcHRpb25zW0hFTFAyXS5kb2VzT2NjdXIpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBVc2FnZUV4Y2VwdGlvbigpOworICAgICAgICB9CisKKyAgICAgICAgaWYob3B0aW9uc1tWRVJCT1NFXS5kb2VzT2NjdXIpIHsKKyAgICAgICAgICAgIHZlcmJvc2UgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZihvcHRpb25zW1NPVVJDRURJUl0uZG9lc09jY3VyKSB7CisgICAgICAgICAgICBzb3VyY2VEaXIgPSBvcHRpb25zW1NPVVJDRURJUl0udmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmKG9wdGlvbnNbRU5DT0RJTkddLmRvZXNPY2N1cikgeworICAgICAgICAgICAgZW5jb2RpbmcgPSBvcHRpb25zW0VOQ09ESU5HXS52YWx1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYob3B0aW9uc1tVU0VMRU5dLmRvZXNPY2N1cikgeworICAgICAgICAgICAgdXNlbGVuID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYob3B0aW9uc1tGSUxFX05BTUVdLmRvZXNPY2N1cil7CisgICAgICAgICAgICBmaWxlTmFtZSA9IG9wdGlvbnNbRklMRV9OQU1FXS52YWx1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKG9wdGlvbnNbVElNRV0uZG9lc09jY3VyICYmIG9wdGlvbnNbSVRFUkFUSU9OU10uZG9lc09jY3VyKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgVXNhZ2VFeGNlcHRpb24oIkNhbm5vdCBzcGVjaWZ5IGJvdGggdGltZSBhbmQgaXRlcmF0aW9ucyIpOworICAgICAgICB9CisKKyAgICAgICAgaWYob3B0aW9uc1tQQVNTRVNdLmRvZXNPY2N1cikgeworICAgICAgICAgICAgcGFzc2VzID0gSW50ZWdlci5wYXJzZUludChvcHRpb25zW1BBU1NFU10udmFsdWUpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZihvcHRpb25zW0lURVJBVElPTlNdLmRvZXNPY2N1cikgeworICAgICAgICAgICAgaXRlcmF0aW9ucyA9IEludGVnZXIucGFyc2VJbnQob3B0aW9uc1tJVEVSQVRJT05TXS52YWx1ZSk7CisgICAgICAgICAgICB0aW1lID0wOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZihvcHRpb25zW1RJTUVdLmRvZXNPY2N1cikgeworICAgICAgICAgICAgdGltZSA9IEludGVnZXIucGFyc2VJbnQob3B0aW9uc1tUSU1FXS52YWx1ZSk7CisgICAgICAgICAgICBpdGVyYXRpb25zID0gMDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKG9wdGlvbnNbTElORV9NT0RFXS5kb2VzT2NjdXIgJiYgb3B0aW9uc1tCVUxLX01PREVdLmRvZXNPY2N1cikgeworICAgICAgICAgICAgdGhyb3cgbmV3IFVzYWdlRXhjZXB0aW9uKCJDYW5ub3Qgc3BlY2lmeSBib3RoIGxpbmUgbW9kZSBhbmQgYnVsayBtb2RlIik7CisgICAgICAgIH0KKworICAgICAgICBpZihvcHRpb25zW0xJTkVfTU9ERV0uZG9lc09jY3VyKSB7CisgICAgICAgICAgICBsaW5lX21vZGUgPSB0cnVlOworICAgICAgICAgICAgYnVsa19tb2RlID0gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmKG9wdGlvbnNbQlVMS19NT0RFXS5kb2VzT2NjdXIpIHsKKyAgICAgICAgICAgIGJ1bGtfbW9kZSA9IHRydWU7CisgICAgICAgICAgICBsaW5lX21vZGUgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIAorICAgICAgICBpZihvcHRpb25zW0dBUkJBR0VfQ09MTEVDVF0uZG9lc09jY3VyKSB7CisgICAgICAgICAgICBkb1ByaW9yR0MgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgaW50IGksIGo7CisgICAgICAgIGZvciAoaT0wOyBpPHJlbWFpbmluZ0FyZ2M7ICsraSkgeworCisgICAgICAgICAgICAvLyBpcyBhcmdzW2ldIGEgbWV0aG9kIG5hbWU/CisgICAgICAgICAgICBNZXRob2QgbSA9IGdldFRlc3RNZXRob2QoYXJnc1tpXSk7CisgICAgICAgICAgICBpZiAobSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgbWV0aG9kTGlzdC5hZGQobSk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIGFyZ3NbaV0gaXMgbmVpdGhlciBhIG1ldGhvZCBuYW1lIG5vciBhIG51bWJlci4gIFBhc3MKKyAgICAgICAgICAgIC8vIGV2ZXJ5dGhpbmcgZnJvbSBoZXJlIG9uIHRocm91Z2ggdG8gdGhlIHN1YmNsYXNzIHZpYQorICAgICAgICAgICAgLy8gc2V0dXAoKS4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1ldGhvZExpc3Quc2l6ZSgpIDwgMSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFVzYWdlRXhjZXB0aW9uKCJNdXN0IHNwZWNpZnkgYXQgbGVhc3Qgb25lIG1ldGhvZCBuYW1lIik7CisgICAgICAgIH0KKworICAgICAgICAvLyBQYXNzIHJlbWFpbmluZyBhcmd1bWVudHMsIGlmIGFueSwgdGhyb3VnaCB0byB0aGUgc3ViY2xhc3MKKyAgICAgICAgLy8gdmlhIHNldHVwKCkgbWV0aG9kLgorICAgICAgICBTdHJpbmdbXSBzdWJjbGFzc0FyZ3MgPSBuZXcgU3RyaW5nW3JlbWFpbmluZ0FyZ2MgLSBpXTsKKyAgICAgICAgZm9yIChqPTA7IGk8cmVtYWluaW5nQXJnYzsgKytqKSB7CisgICAgICAgICAgICBzdWJjbGFzc0FyZ3Nbal0gPSBhcmdzW2krK107CisgICAgICAgIH0KKyAgICAgICAgc2V0dXAoc3ViY2xhc3NBcmdzKTsKKworICAgICAgICBpZiAoZG9QcmlvckdDKSB7CisgICAgICAgICAgICAvLyBQdXQgdGhlIGhlYXAgaW4gYSBjb25zaXN0ZW50IHN0YXRlCisgICAgICAgICAgICBnYygpOworICAgICAgICB9CisKKwkgICAgZmluYWwgT2JqZWN0W10gTk9fQVJHUyA9IG5ldyBPYmplY3RbMF07CisKKyAgICAgICAgLy8gUnVuIHRoZSB0ZXN0cworICAgICAgICBmb3IgKGk9MDsgaTxtZXRob2RMaXN0LnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBtZXRoID0gKE1ldGhvZCkgbWV0aG9kTGlzdC5nZXQoaSk7CisKKyAgICAgICAgICAgIC8vIENhbGwgbWV0aCB0byBzZXQgdXAgdGhlIHRlc3QKKyAgICAgICAgICAgIGxvbmcgZXZlbnRzUGVyQ2FsbCA9IC0xOworICAgICAgICAgICAgRnVuY3Rpb24gdGVzdEZ1bmN0aW9uID0gKEZ1bmN0aW9uKW1ldGguaW52b2tlKHRoaXMsIE5PX0FSR1MpOworICAgICAgICAgICAgaWYgKHRlc3RGdW5jdGlvbiA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24obWV0aC5nZXROYW1lKCkgKyAiIGZhaWxlZCB0byByZXR1cm4gYSB0ZXN0IGZ1bmN0aW9uIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodGVzdEZ1bmN0aW9uLmdldE9wZXJhdGlvbnNQZXJJdGVyYXRpb24oKSA8IDEpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbihtZXRoLmdldE5hbWUoKSArICIgcmV0dXJuZWQgYW4gaWxsZWdhbCBvcGVyYXRpb25zL2l0ZXJhdGlvbigpIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGludCBuOworICAgICAgICAgICAgbG9uZyB0OworICAgICAgICAgICAgZm9yIChqPTA7IGo8cGFzc2VzOyArK2opIHsKKyAgICAgICAgICAgICAgICBpZiAoaXRlcmF0aW9ucyA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gUnVuIHNwZWNpZmllZCBudW1iZXIgb2YgaXRlcmF0aW9ucworICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIj0gIiArIG1ldGguZ2V0TmFtZSgpICsgIiBiZWdpbiAiICsgaXRlcmF0aW9ucyArICIgaXRlcmF0aW9ucyIpOworICAgICAgICAgICAgICAgICAgICB0ID0gdGVzdEZ1bmN0aW9uLnRpbWUoaXRlcmF0aW9ucyk7CisgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiPSAiICsgbWV0aC5nZXROYW1lKCkgKyAiIGVuZCAiICsgKHQvMTAwMC4wKSArICIgIiArIHRlc3RGdW5jdGlvbi5nZXRPcGVyYXRpb25zUGVySXRlcmF0aW9uKCkpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFJ1biBmb3Igc3BlY2lmaWVkIGR1cmF0aW9uIGluIHNlY29uZHMKKyAgICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCI9ICIgKyBtZXRoLmdldE5hbWUoKSArICIgYmVnaW4gIiArIHRpbWUgKyAiIHNlY29uZHMiKTsKKyAgICAgICAgICAgICAgICAgICAgbiA9IHRpbWUgKiAxMDAwOyAvLyBzID0+IG1zCisgICAgICAgICAgICAgICAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCIjICIgKyBtZXRoLmdldE5hbWUoKSArICIgIiArIG4gKyAiIHNlYyIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaW50IGxvb3BzID0gMDsKKyAgICAgICAgICAgICAgICAgICAgaW50IGZhaWxzYWZlID0gMTsgLy8gbGFzdCByZXNvcnQgZm9yIHZlcnkgZmFzdCBtZXRob2RzCisgICAgICAgICAgICAgICAgICAgIHQgPSAwOworICAgICAgICAgICAgICAgICAgICB3aGlsZSAodCA8IChpbnQpKG4gKiAwLjkpKSB7IC8vIDkwJSBpcyBjbG9zZSBlbm91Z2gKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsb29wcyA9PSAwIHx8IHQgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3BzID0gZmFpbHNhZmU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbHNhZmUgKj0gMTA7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCIjICIgKyBtZXRoLmdldE5hbWUoKSArICIgeCAiICsgbG9vcHMgKyAiID0gIiArIHQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wcyA9IChpbnQpKChkb3VibGUpbiAvIHQgKiBsb29wcyArIDAuNSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxvb3BzID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIlVuYWJsZSB0byBjb252ZXJnZSBvbiBkZXNpcmVkIGR1cmF0aW9uIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oIiMgIiArIG1ldGguZ2V0TmFtZSgpICsgIiB4ICIgKyBsb29wcyk7CisgICAgICAgICAgICAgICAgICAgICAgICB0ID0gdGVzdEZ1bmN0aW9uLnRpbWUobG9vcHMpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiPSAiICsgbWV0aC5nZXROYW1lKCkgKyAiIGVuZCAiICsgKHQvMTAwMC4wKSArICIgIiArIHRlc3RGdW5jdGlvbi5nZXRPcGVyYXRpb25zUGVySXRlcmF0aW9uKCkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAiICsgbG9vcHMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEludm9rZSB0aGUgcnVudGltZSdzIGdhcmJhZ2UgY29sbGVjdGlvbiBwcm9jZWR1cmUgcmVwZWF0ZWRseQorICAgICAqIHVudGlsIHRoZSBhbW91bnQgb2YgZnJlZSBtZW1vcnkgc3RhYmlsaXplcyB0byB3aXRoaW4gMTAlLgorICAgICAqLworICAgIHByb3RlY3RlZCB2b2lkIGdjKCkgeworICAgICAgICBpZiAoZmFsc2UpIHsKKyAgICAgICAgICAgIGxvbmcgbGFzdDsKKyAgICAgICAgICAgIGxvbmcgZnJlZSA9IDE7CisgICAgICAgICAgICBSdW50aW1lIHJ1bnRpbWUgPSBSdW50aW1lLmdldFJ1bnRpbWUoKTsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBydW50aW1lLmdjKCk7CisgICAgICAgICAgICAgICAgbGFzdCA9IGZyZWU7CisgICAgICAgICAgICAgICAgZnJlZSA9IHJ1bnRpbWUuZnJlZU1lbW9yeSgpOworICAgICAgICAgICAgfSB3aGlsZSAoKChkb3VibGUpTWF0aC5hYnMoZnJlZSAtIGxhc3QpKSAvIGZyZWUgPiAwLjEpOworICAgICAgICAgICAgLy8gV2FpdCBmb3IgdGhlIGNoYW5nZSBpbiBmcmVlIG1lbW9yeSB0byBkcm9wIHVuZGVyIDEwJQorICAgICAgICAgICAgLy8gYmV0d2VlbiBzdWNjZXNzaXZlIGNhbGxzLgorICAgICAgICB9CisKKyAgICAgICAgLy8gRnJvbSAiSmF2YSBQbGF0Zm9ybSBQZXJmb3JtYW5jZSIuICBUaGlzIGlzIHRoZSBwcm9jZWR1cmUKKyAgICAgICAgLy8gcmVjb21tZW5kZWQgYnkgSmF2YXNvZnQuCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBTeXN0ZW0uZ2MoKTsKKyAgICAgICAgICAgIFRocmVhZC5jdXJyZW50VGhyZWFkKCkuc2xlZXAoMTAwKTsKKyAgICAgICAgICAgIFN5c3RlbS5ydW5GaW5hbGl6YXRpb24oKTsKKyAgICAgICAgICAgIFRocmVhZC5jdXJyZW50VGhyZWFkKCkuc2xlZXAoMTAwKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgU3lzdGVtLmdjKCk7CisgICAgICAgICAgICBUaHJlYWQuY3VycmVudFRocmVhZCgpLnNsZWVwKDEwMCk7CisgICAgICAgICAgICBTeXN0ZW0ucnVuRmluYWxpemF0aW9uKCk7CisgICAgICAgICAgICBUaHJlYWQuY3VycmVudFRocmVhZCgpLnNsZWVwKDEwMCk7CisgICAgICAgIH0gY2F0Y2ggKEludGVycnVwdGVkRXhjZXB0aW9uIGUpIHt9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgbWFwIG9mIFN0cmluZyB0byBNZXRob2Qgb2JqZWN0cy4gIEVhY2ggc3RyaW5nIGlzIGEKKyAgICAgKiBtdW5nZWQgYWxsLWxvd2VyY2FzZSBuYW1lLiAgRm9yIHRoaXMgcmVhc29uLCB0ZXN0IG1ldGhvZHMKKyAgICAgKiAoYmVnaW5uaW5nIHdpdGggInRlc3QiLCBpZ25vcmluZyBjYXNlKSBtdXN0IG5vdCBjb2xsaWRlIHdoZW4KKyAgICAgKiBjYXNlIGZvbGRlZC4KKyAgICAgKi8KKyAgICBwcml2YXRlIE1hcCBnZXRBdmFpbGFibGVUZXN0cygpIHsKKyAgICAgICAgaWYgKGF2YWlsYWJsZVRlc3RzID09IG51bGwpIHsKKyAgICAgICAgICAgIGF2YWlsYWJsZVRlc3RzID0gbmV3IEhhc2hNYXAoKTsKKyAgICAgICAgICAgIE1ldGhvZFtdIG1ldGhvZHMgPSBnZXRDbGFzcygpLmdldERlY2xhcmVkTWV0aG9kcygpOworICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPG1ldGhvZHMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgbmFtZSA9IG1ldGhvZHNbaV0uZ2V0TmFtZSgpLnRvTG93ZXJDYXNlKCk7CisgICAgICAgICAgICAgICAgLy8gTm90ZTogbWV0aG9kcyBuYW1lZCAidGVzdCgpIiBhcmUgaWdub3JlZAorICAgICAgICAgICAgICAgIGlmIChuYW1lLmxlbmd0aCgpID4gNCAmJiBuYW1lLnN0YXJ0c1dpdGgoInRlc3QiKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoYXZhaWxhYmxlVGVzdHMuZ2V0KG5hbWUpICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJEdXBsaWNhdGUgbWV0aG9kIG5hbWUgaWdub3JpbmcgY2FzZTogIiArIG5hbWUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZVRlc3RzLnB1dChuYW1lLCBtZXRob2RzW2ldKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGF2YWlsYWJsZVRlc3RzOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdpdmVuIGEgbmFtZSwgcmV0dXJuIHRoZSBhc3NvY2lhdGVkIE1ldGhvZCBvYmplY3QsIG9yIG51bGwgaWYKKyAgICAgKiBub3QgZm91bmQuICBUaGUgZ2l2ZW4gbmFtZSB3aWxsIG1hcCB0byBhIG1ldGhvZCBvZiB0aGUgc2FtZQorICAgICAqIG5hbWUsIG9yIGEgbWV0aG9kIG5hbWVkICJ0ZXN0IiArIG5hbWUuICBDYXNlIGlzIGlnbm9yZWQuCisgICAgICovCisgICAgcHJpdmF0ZSBNZXRob2QgZ2V0VGVzdE1ldGhvZChTdHJpbmcgbmFtZSkgeworICAgICAgICBNYXAgYXZhaWwgPSBnZXRBdmFpbGFibGVUZXN0cygpOworICAgICAgICBTdHJpbmcga2V5ID0gbmFtZS50b0xvd2VyQ2FzZSgpOworICAgICAgICBNZXRob2QgbSA9IChNZXRob2QpIGF2YWlsLmdldChrZXkpOworICAgICAgICBpZiAobSAhPSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gbTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKE1ldGhvZCkgYXZhaWwuZ2V0KCJ0ZXN0IiArIGtleSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUHJpdmF0ZSB1dGlsaXR5IHRvIGNvbnZlcnQgYSBMaXN0IG9mIEludGVnZXIgb2JqZWN0cyB0byBpbnRbXS4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBpbnRbXSB0b0ludEFycmF5KExpc3QgbGlzdCkgeworICAgICAgICBpbnRbXSByZXN1bHQgPSBuZXcgaW50W2xpc3Quc2l6ZSgpXTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPGxpc3Quc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIHJlc3VsdFtpXSA9ICgoSW50ZWdlcikgbGlzdC5nZXQoaSkpLmludFZhbHVlKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgcHVibGljIHN0YXRpYyBjaGFyW10gcmVhZFRvRU9TKElucHV0U3RyZWFtUmVhZGVyIHN0cmVhbSkgeworICAgICAgICBBcnJheUxpc3QgdmVjID0gbmV3IEFycmF5TGlzdCgpOworICAgICAgICBpbnQgY291bnQgPSAwOworICAgICAgICBpbnQgcG9zID0gMDsKKyAgICAgICAgZmluYWwgaW50IE1BWExFTkdUSCA9IDB4ODAwMDsgLy8gbWF4IGJ1ZmZlciBzaXplIC0gMzJLCisgICAgICAgIGludCBsZW5ndGggPSAweDgwOyAvLyBzdGFydCB3aXRoIHNtYWxsIGJ1ZmZlcnMgYW5kIHdvcmsgdXAKKyAgICAgICAgZG8geworICAgICAgICAgICAgcG9zID0gMDsKKyAgICAgICAgICAgIGxlbmd0aCA9IGxlbmd0aCA+PSBNQVhMRU5HVEggPyBNQVhMRU5HVEggOiBsZW5ndGggKiAyOworICAgICAgICAgICAgY2hhcltdIGJ1ZmZlciA9IG5ldyBjaGFyW2xlbmd0aF07CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IG4gPSBzdHJlYW0ucmVhZChidWZmZXIsIHBvcywgbGVuZ3RoIC0gcG9zKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG4gPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcG9zICs9IG47CisgICAgICAgICAgICAgICAgfSB3aGlsZSAocG9zIDwgbGVuZ3RoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2ZWMuYWRkKGJ1ZmZlcik7CisgICAgICAgICAgICBjb3VudCArPSBwb3M7CisgICAgICAgIH0gd2hpbGUgKHBvcyA9PSBsZW5ndGgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBjaGFyW10gZGF0YSA9IG5ldyBjaGFyW2NvdW50XTsKKyAgICAgICAgcG9zID0gMDsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB2ZWMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGNoYXJbXSBidWYgPSAoY2hhcltdKXZlYy5nZXQoaSk7CisgICAgICAgICAgICBpbnQgbGVuID0gTWF0aC5taW4oYnVmLmxlbmd0aCwgY291bnQgLSBwb3MpOworICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShidWYsIDAsIGRhdGEsIHBvcywgbGVuKTsKKyAgICAgICAgICAgIHBvcyArPSBsZW47CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgfQorICAgIHB1YmxpYyBzdGF0aWMgYnl0ZVtdIHJlYWRUb0VPUyhJbnB1dFN0cmVhbSBzdHJlYW0pIHsKKworICAgICAgICBBcnJheUxpc3QgdmVjID0gbmV3IEFycmF5TGlzdCgpOworICAgICAgICBpbnQgY291bnQgPSAwOworICAgICAgICBpbnQgcG9zID0gMDsKKyAgICAgICAgZmluYWwgaW50IE1BWExFTkdUSCA9IDB4ODAwMDsgLy8gbWF4IGJ1ZmZlciBzaXplIC0gMzJLCisgICAgICAgIGludCBsZW5ndGggPSAweDgwOyAvLyBzdGFydCB3aXRoIHNtYWxsIGJ1ZmZlcnMgYW5kIHdvcmsgdXAKKyAgICAgICAgZG8geworICAgICAgICAgICAgcG9zID0gMDsKKyAgICAgICAgICAgIGxlbmd0aCA9IGxlbmd0aCA+PSBNQVhMRU5HVEggPyBNQVhMRU5HVEggOiBsZW5ndGggKiAyOworICAgICAgICAgICAgYnl0ZVtdIGJ1ZmZlciA9IG5ldyBieXRlW2xlbmd0aF07CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IG4gPSBzdHJlYW0ucmVhZChidWZmZXIsIHBvcywgbGVuZ3RoIC0gcG9zKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG4gPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcG9zICs9IG47CisgICAgICAgICAgICAgICAgfSB3aGlsZSAocG9zIDwgbGVuZ3RoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2ZWMuYWRkKGJ1ZmZlcik7CisgICAgICAgICAgICBjb3VudCArPSBwb3M7CisgICAgICAgIH0gd2hpbGUgKHBvcyA9PSBsZW5ndGgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBieXRlW10gZGF0YSA9IG5ldyBieXRlW2NvdW50XTsKKyAgICAgICAgcG9zID0gMDsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB2ZWMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGJ5dGVbXSBidWYgPSAoYnl0ZVtdKXZlYy5nZXQoaSk7CisgICAgICAgICAgICBpbnQgbGVuID0gTWF0aC5taW4oYnVmLmxlbmd0aCwgY291bnQgLSBwb3MpOworICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShidWYsIDAsIGRhdGEsIHBvcywgbGVuKTsKKyAgICAgICAgICAgIHBvcyArPSBsZW47CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBTdHJpbmdbXSByZWFkTGluZXMoU3RyaW5nIGZpbGVOYW1lLCBTdHJpbmcgZW5jb2RpbmcsIGJvb2xlYW4gYnVsa01vZGUpIHsKKyAgICAgICAgRmlsZUlucHV0U3RyZWFtIGZpcyA9IG51bGw7CisgICAgICAgIElucHV0U3RyZWFtUmVhZGVyIGlzciA9IG51bGw7CisgICAgICAgIEJ1ZmZlcmVkUmVhZGVyIGJyID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZpcyA9IG5ldyBGaWxlSW5wdXRTdHJlYW0oZmlsZU5hbWUpOworICAgICAgICAgICAgaXNyID0gbmV3IElucHV0U3RyZWFtUmVhZGVyKGZpcywgZW5jb2RpbmcpOworICAgICAgICAgICAgYnI9IG5ldyBCdWZmZXJlZFJlYWRlcihpc3IpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgU3lzdGVtLmVyci5wcmludGxuKCJFcnJvcjogRmlsZSBhY2Nlc3MgZXhjZXB0aW9uOiAiICsgZS5nZXRNZXNzYWdlKCkgKyAiISIpOworICAgICAgICAgICAgU3lzdGVtLmV4aXQoMSk7CisgICAgICAgIH0KKyAgICAgICAgQXJyYXlMaXN0IGxpc3QgPSBuZXcgQXJyYXlMaXN0KCk7CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBTdHJpbmcgbGluZSA9IG51bGw7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGxpbmUgPSByZWFkRGF0YUxpbmUoYnIpOworICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0uZXJyLnByaW50bG4oIlJlYWQgRmlsZSBFcnJvciIgKyBlLmdldE1lc3NhZ2UoKSArICIhIik7CisgICAgICAgICAgICAgICAgU3lzdGVtLmV4aXQoMSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobGluZSA9PSBudWxsKSBicmVhazsKKyAgICAgICAgICAgIGlmIChsaW5lLmxlbmd0aCgpID09IDApIGNvbnRpbnVlOworICAgICAgICAgICAgbGlzdC5hZGQobGluZSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGludCBzaXplID0gbGlzdC5zaXplKCk7CisgICAgICAgIFN0cmluZ1tdIGxpbmVzID0gbnVsbDsKKyAgICAgICAgCisgICAgICAgIGlmIChidWxrTW9kZSkgeworICAgICAgICAgICAgbGluZXMgPSBuZXcgU3RyaW5nWzFdOworICAgICAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZmZlciA9IG5ldyBTdHJpbmdCdWZmZXIoIiIpOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKChTdHJpbmcpIGxpc3QuZ2V0KGkpKTsKKyAgICAgICAgICAgICAgICAvKmlmIChpIDwgKHNpemUgLSAxKSkgeworICAgICAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKCJcclxuIik7CisgICAgICAgICAgICAgICAgfSovCisgICAgICAgICAgICB9CisgICAgICAgICAgICBsaW5lc1swXSA9IGJ1ZmZlci50b1N0cmluZygpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbGluZXMgPSBuZXcgU3RyaW5nIFtzaXplXTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgICAgICAgICAgbGluZXNbaV0gPSAoU3RyaW5nKSBsaXN0LmdldChpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIGxpbmVzOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgU3RyaW5nIHJlYWREYXRhTGluZShCdWZmZXJlZFJlYWRlciBicikgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIFN0cmluZyBvcmlnaW5hbExpbmUgPSAiIjsKKyAgICAgICAgU3RyaW5nIGxpbmUgPSAiIjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGxpbmUgPSBvcmlnaW5hbExpbmUgPSBici5yZWFkTGluZSgpOworICAgICAgICAgICAgaWYgKGxpbmUgPT0gbnVsbCkgcmV0dXJuIG51bGw7CisgICAgICAgICAgICBpZiAobGluZS5sZW5ndGgoKSA+IDAgJiYgbGluZS5jaGFyQXQoMCkgPT0gMHhGRUZGKSBsaW5lID0gbGluZS5zdWJzdHJpbmcoMSk7CisgICAgICAgICAgICBpbnQgY29tbWVudFBvcyA9IGxpbmUuaW5kZXhPZignIycpOworICAgICAgICAgICAgaWYgKGNvbW1lbnRQb3MgPj0gMCkgbGluZSA9IGxpbmUuc3Vic3RyaW5nKDAsIGNvbW1lbnRQb3MpOworICAgICAgICAgICAgbGluZSA9IGxpbmUudHJpbSgpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigiTGluZSBcInswfVwiLCAgXCJ7MX1cIiIgKyBvcmlnaW5hbExpbmUgKyAiICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBsaW5lICsgIiAiICsgZS50b1N0cmluZygpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbGluZTsKKyAgICB9Cit9CisKKy8vZW9mCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvcGVyZi9VQ2hhcmFjdGVyUGVyZi5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3BlcmYvVUNoYXJhY3RlclBlcmYuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDFkMGUyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3BlcmYvVUNoYXJhY3RlclBlcmYuamF2YQpAQCAtMCwwICsxLDUzOSBAQAorLyoqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9wZXJmL1VDaGFyYWN0ZXJQZXJmLmphdmEsdiAkCisgKiAkRGF0ZTogMjAwMi8xMC8zMCAxNzo1ODoyNiAkCisgKiAkUmV2aXNpb246IDEuMiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0LnBlcmY7CisKK2ltcG9ydCBjb20uaWJtLmljdS5sYW5nLlVDaGFyYWN0ZXI7CisKKy8qKgorICogQmFzZSBwZXJmb3JtYW5jZSB0ZXN0IHRoYXQgdGFrZXMgaW4gYSBtZXRob2QgbmFtZSBmb3IgdGVzdGluZyB3aXRoIEpESy4KKyAqIFRvIHVzZSAKKyAqIDxjb2RlPgorICogamF2YSBjb20uaWJtLmljdS5kZXYudGVzdC5wZXJmLlVDaGFyYWN0ZXJQZXJmICRNZXRob2ROYW1lICRMb29wQ291bnQgLSAKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRTVEFSVF9URVNUX0NIQVJBQ1RFUiAkRU5EX1RFU1RfQ0hBUkFDVEVSCisgKiA8L2NvZGU+CisgKiB3aGVyZSAkKl9URVNUX0NIQVJBQ1RFUiBhcmUgaW4gaGV4IGRlY2ltYWxzIHdpdGggYSBsZWFkaW5nIDB4CisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBVQ2hhcmFjdGVyUGVyZiBleHRlbmRzIFBlcmZUZXN0IAoreworICAgIC8vIHB1YmxpYyBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24KKyAgICB7ICAgCisgICAgICAgIG5ldyBVQ2hhcmFjdGVyUGVyZigpLnJ1bihhcmdzKTsKKwkgICAgLy8gbmV3IFVDaGFyYWN0ZXJQZXJmKCkuVGVzdFBlcmZvcm1hbmNlKCk7CisJfQorICAgIAorICAgIHByb3RlY3RlZCB2b2lkIHNldHVwKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgLy8gV2Ugb25seSB0YWtlIG9uZSBhcmd1bWVudCwgdGhlIHBhdHRlcm4KKyAgICAgICAgTUlOXyA9IENoYXJhY3Rlci5NSU5fVkFMVUU7CisgICAgICAgIE1BWF8gPSBDaGFyYWN0ZXIuTUFYX1ZBTFVFOworICAgICAgICBpZiAoYXJncy5sZW5ndGggPj0gMSkgeworICAgICAgICAJTUlOXyA9IEludGVnZXIucGFyc2VJbnQoYXJnc1swXSwgMTYpOworICAgICAgICB9CisgICAgICAgIGlmIChhcmdzLmxlbmd0aCA+PSAyKSB7CisgICAgICAgICAgICBNQVhfID0gSW50ZWdlci5wYXJzZUludChhcmdzWzFdLCAxNik7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgUGVyZlRlc3QuRnVuY3Rpb24gdGVzdERpZ2l0KCkgCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFBlcmZUZXN0LkZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgY2FsbCgpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBjaCA9IE1JTl87IGNoIDwgTUFYXzsgY2ggKyspIHsKKyAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3Rlci5kaWdpdChjaCwgMTApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcHVibGljIGxvbmcgZ2V0T3BlcmF0aW9uc1Blckl0ZXJhdGlvbigpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTUFYXyAtIE1JTl8gKyAxOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KKyAgICAKKyAgICBQZXJmVGVzdC5GdW5jdGlvbiB0ZXN0SkRLRGlnaXQoKSAKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgUGVyZlRlc3QuRnVuY3Rpb24oKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBjYWxsKCkgeworICAgICAgICAgICAgICAgIGZvciAoY2hhciBjaCA9IChjaGFyKU1JTl87IGNoIDwgKGNoYXIpTUFYXzsgY2ggKyspIHsKKyAgICAgICAgICAgICAgICAgICAgQ2hhcmFjdGVyLmRpZ2l0KGNoLCAxMCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwdWJsaWMgbG9uZyBnZXRPcGVyYXRpb25zUGVySXRlcmF0aW9uKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBNQVhfIC0gTUlOXyArIDE7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorICAgIAorICAgIFBlcmZUZXN0LkZ1bmN0aW9uIHRlc3RHZXROdW1lcmljVmFsdWUoKSAKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgUGVyZlRlc3QuRnVuY3Rpb24oKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBjYWxsKCkgeworICAgICAgICAgICAgICAgIGZvciAoaW50IGNoID0gTUlOXzsgY2ggPCBNQVhfOyBjaCArKykgeworICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyLmdldE51bWVyaWNWYWx1ZShjaCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwdWJsaWMgbG9uZyBnZXRPcGVyYXRpb25zUGVySXRlcmF0aW9uKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBNQVhfIC0gTUlOXyArIDE7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorCisgICAgUGVyZlRlc3QuRnVuY3Rpb24gdGVzdEpES0dldE51bWVyaWNWYWx1ZSgpIAorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQZXJmVGVzdC5GdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGNhbGwoKSB7CisgICAgICAgICAgICAgICAgZm9yIChjaGFyIGNoID0gKGNoYXIpTUlOXzsgY2ggPCAoY2hhcilNQVhfOyBjaCArKykgeworICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXIuZ2V0TnVtZXJpY1ZhbHVlKGNoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyBsb25nIGdldE9wZXJhdGlvbnNQZXJJdGVyYXRpb24oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1BWF8gLSBNSU5fICsgMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9CisgICAgIAorICAgIFBlcmZUZXN0LkZ1bmN0aW9uIHRlc3RHZXRUeXBlKCkgCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFBlcmZUZXN0LkZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgY2FsbCgpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBjaCA9IE1JTl87IGNoIDwgTUFYXzsgY2ggKyspIHsKKyAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3Rlci5nZXRUeXBlKGNoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyBsb25nIGdldE9wZXJhdGlvbnNQZXJJdGVyYXRpb24oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1BWF8gLSBNSU5fICsgMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9ICAgCisKKyAgICBQZXJmVGVzdC5GdW5jdGlvbiB0ZXN0SkRLR2V0VHlwZSgpIAorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQZXJmVGVzdC5GdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGNhbGwoKSB7CisgICAgICAgICAgICAgICAgZm9yIChjaGFyIGNoID0gKGNoYXIpTUlOXzsgY2ggPCAoY2hhcilNQVhfOyBjaCArKykgeworICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXIuZ2V0VHlwZShjaCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwdWJsaWMgbG9uZyBnZXRPcGVyYXRpb25zUGVySXRlcmF0aW9uKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBNQVhfIC0gTUlOXyArIDE7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorCisgICAgUGVyZlRlc3QuRnVuY3Rpb24gdGVzdElzRGVmaW5lZCgpIAorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQZXJmVGVzdC5GdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGNhbGwoKSB7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgY2ggPSBNSU5fOyBjaCA8IE1BWF87IGNoICsrKSB7CisgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXIuaXNEZWZpbmVkKGNoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyBsb25nIGdldE9wZXJhdGlvbnNQZXJJdGVyYXRpb24oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1BWF8gLSBNSU5fICsgMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9ICAgIAorICAgIAorICAgIFBlcmZUZXN0LkZ1bmN0aW9uIHRlc3RKREtJc0RlZmluZWQoKSAKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgUGVyZlRlc3QuRnVuY3Rpb24oKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBjYWxsKCkgeworICAgICAgICAgICAgICAgIGZvciAoY2hhciBjaCA9IChjaGFyKU1JTl87IGNoIDwgKGNoYXIpTUFYXzsgY2ggKyspIHsKKyAgICAgICAgICAgICAgICAgICAgQ2hhcmFjdGVyLmlzRGVmaW5lZChjaCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwdWJsaWMgbG9uZyBnZXRPcGVyYXRpb25zUGVySXRlcmF0aW9uKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBNQVhfIC0gTUlOXyArIDE7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfSAgICAKKworICAgIFBlcmZUZXN0LkZ1bmN0aW9uIHRlc3RJc0RpZ2l0KCkgCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFBlcmZUZXN0LkZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgY2FsbCgpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBjaCA9IE1JTl87IGNoIDwgTUFYXzsgY2ggKyspIHsKKyAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3Rlci5pc0RpZ2l0KGNoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyBsb25nIGdldE9wZXJhdGlvbnNQZXJJdGVyYXRpb24oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1BWF8gLSBNSU5fICsgMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9ICAgIAorICAgIAorICAgIFBlcmZUZXN0LkZ1bmN0aW9uIHRlc3RKREtJc0RpZ2l0KCkgCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFBlcmZUZXN0LkZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgY2FsbCgpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGNoYXIgY2ggPSAoY2hhcilNSU5fOyBjaCA8IChjaGFyKU1BWF87IGNoICsrKSB7CisgICAgICAgICAgICAgICAgICAgIENoYXJhY3Rlci5pc0RpZ2l0KGNoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyBsb25nIGdldE9wZXJhdGlvbnNQZXJJdGVyYXRpb24oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1BWF8gLSBNSU5fICsgMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9CisgICAgCisgICAgUGVyZlRlc3QuRnVuY3Rpb24gdGVzdElzSWRlbnRpZmllcklnbm9yYWJsZSgpIAorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQZXJmVGVzdC5GdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGNhbGwoKSB7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgY2ggPSBNSU5fOyBjaCA8IE1BWF87IGNoICsrKSB7CisgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXIuaXNJZGVudGlmaWVySWdub3JhYmxlKGNoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyBsb25nIGdldE9wZXJhdGlvbnNQZXJJdGVyYXRpb24oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1BWF8gLSBNSU5fICsgMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9ICAgIAorICAgIAorICAgIFBlcmZUZXN0LkZ1bmN0aW9uIHRlc3RKREtJc0lkZW50aWZpZXJJZ25vcmFibGUoKSAKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgUGVyZlRlc3QuRnVuY3Rpb24oKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBjYWxsKCkgeworICAgICAgICAgICAgICAgIGZvciAoY2hhciBjaCA9IChjaGFyKU1JTl87IGNoIDwgKGNoYXIpTUFYXzsgY2ggKyspIHsKKyAgICAgICAgICAgICAgICAgICAgQ2hhcmFjdGVyLmlzSWRlbnRpZmllcklnbm9yYWJsZShjaCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwdWJsaWMgbG9uZyBnZXRPcGVyYXRpb25zUGVySXRlcmF0aW9uKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBNQVhfIC0gTUlOXyArIDE7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorICAgIAorICAgIFBlcmZUZXN0LkZ1bmN0aW9uIHRlc3RJc0lTT0NvbnRyb2woKSAKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgUGVyZlRlc3QuRnVuY3Rpb24oKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBjYWxsKCkgeworICAgICAgICAgICAgICAgIGZvciAoaW50IGNoID0gTUlOXzsgY2ggPCBNQVhfOyBjaCArKykgeworICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyLmlzSVNPQ29udHJvbChjaCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwdWJsaWMgbG9uZyBnZXRPcGVyYXRpb25zUGVySXRlcmF0aW9uKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBNQVhfIC0gTUlOXyArIDE7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorICAgIAorICAgIFBlcmZUZXN0LkZ1bmN0aW9uIHRlc3RKREtJc0lTT0NvbnRyb2woKSAKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgUGVyZlRlc3QuRnVuY3Rpb24oKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBjYWxsKCkgeworICAgICAgICAgICAgICAgIGZvciAoY2hhciBjaCA9IChjaGFyKU1JTl87IGNoIDwgKGNoYXIpTUFYXzsgY2ggKyspIHsKKyAgICAgICAgICAgICAgICAgICAgQ2hhcmFjdGVyLmlzSVNPQ29udHJvbChjaCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwdWJsaWMgbG9uZyBnZXRPcGVyYXRpb25zUGVySXRlcmF0aW9uKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBNQVhfIC0gTUlOXyArIDE7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorICAgIAorICAgIFBlcmZUZXN0LkZ1bmN0aW9uIHRlc3RJc0xldHRlcigpIAorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQZXJmVGVzdC5GdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGNhbGwoKSB7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgY2ggPSBNSU5fOyBjaCA8IE1BWF87IGNoICsrKSB7CisgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXIuaXNMZXR0ZXIoY2gpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcHVibGljIGxvbmcgZ2V0T3BlcmF0aW9uc1Blckl0ZXJhdGlvbigpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTUFYXyAtIE1JTl8gKyAxOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KKyAgICAKKyAgICBQZXJmVGVzdC5GdW5jdGlvbiB0ZXN0SkRLSXNMZXR0ZXIoKSAKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgUGVyZlRlc3QuRnVuY3Rpb24oKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBjYWxsKCkgeworICAgICAgICAgICAgICAgIGZvciAoY2hhciBjaCA9IChjaGFyKU1JTl87IGNoIDwgKGNoYXIpTUFYXzsgY2ggKyspIHsKKyAgICAgICAgICAgICAgICAgICAgQ2hhcmFjdGVyLmlzTGV0dGVyKGNoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyBsb25nIGdldE9wZXJhdGlvbnNQZXJJdGVyYXRpb24oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1BWF8gLSBNSU5fICsgMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9CisgICAgCisgICAgUGVyZlRlc3QuRnVuY3Rpb24gdGVzdElzTGV0dGVyT3JEaWdpdCgpIAorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQZXJmVGVzdC5GdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGNhbGwoKSB7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgY2ggPSBNSU5fOyBjaCA8IE1BWF87IGNoICsrKSB7CisgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXIuaXNMZXR0ZXJPckRpZ2l0KGNoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyBsb25nIGdldE9wZXJhdGlvbnNQZXJJdGVyYXRpb24oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1BWF8gLSBNSU5fICsgMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9CisgICAgCisgICAgUGVyZlRlc3QuRnVuY3Rpb24gdGVzdEpES0lzTGV0dGVyT3JEaWdpdCgpIAorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQZXJmVGVzdC5GdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGNhbGwoKSB7CisgICAgICAgICAgICAgICAgZm9yIChjaGFyIGNoID0gKGNoYXIpTUlOXzsgY2ggPCAoY2hhcilNQVhfOyBjaCArKykgeworICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXIuaXNMZXR0ZXJPckRpZ2l0KGNoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyBsb25nIGdldE9wZXJhdGlvbnNQZXJJdGVyYXRpb24oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1BWF8gLSBNSU5fICsgMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBQZXJmVGVzdC5GdW5jdGlvbiB0ZXN0SXNMb3dlckNhc2UoKSAKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgUGVyZlRlc3QuRnVuY3Rpb24oKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBjYWxsKCkgeworICAgICAgICAgICAgICAgIGZvciAoaW50IGNoID0gTUlOXzsgY2ggPCBNQVhfOyBjaCArKykgeworICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyLmlzTG93ZXJDYXNlKGNoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyBsb25nIGdldE9wZXJhdGlvbnNQZXJJdGVyYXRpb24oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1BWF8gLSBNSU5fICsgMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9ICAgIAorICAgIAorICAgIFBlcmZUZXN0LkZ1bmN0aW9uIHRlc3RKREtJc0xvd2VyQ2FzZSgpIAorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQZXJmVGVzdC5GdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGNhbGwoKSB7CisgICAgICAgICAgICAgICAgZm9yIChjaGFyIGNoID0gKGNoYXIpTUlOXzsgY2ggPCAoY2hhcilNQVhfOyBjaCArKykgeworICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXIuaXNMb3dlckNhc2UoY2gpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcHVibGljIGxvbmcgZ2V0T3BlcmF0aW9uc1Blckl0ZXJhdGlvbigpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTUFYXyAtIE1JTl8gKyAxOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0gICAgCisgICAgCisgICAgUGVyZlRlc3QuRnVuY3Rpb24gdGVzdElzU3BhY2VDaGFyKCkgCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFBlcmZUZXN0LkZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgY2FsbCgpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBjaCA9IE1JTl87IGNoIDwgTUFYXzsgY2ggKyspIHsKKyAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3Rlci5pc1NwYWNlQ2hhcihjaCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwdWJsaWMgbG9uZyBnZXRPcGVyYXRpb25zUGVySXRlcmF0aW9uKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBNQVhfIC0gTUlOXyArIDE7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfSAKKyAgICAKKyAgICBQZXJmVGVzdC5GdW5jdGlvbiB0ZXN0SkRLSXNTcGFjZUNoYXIoKSAKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgUGVyZlRlc3QuRnVuY3Rpb24oKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBjYWxsKCkgeworICAgICAgICAgICAgICAgIGZvciAoY2hhciBjaCA9IChjaGFyKU1JTl87IGNoIDwgKGNoYXIpTUFYXzsgY2ggKyspIHsKKyAgICAgICAgICAgICAgICAgICAgQ2hhcmFjdGVyLmlzU3BhY2VDaGFyKGNoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyBsb25nIGdldE9wZXJhdGlvbnNQZXJJdGVyYXRpb24oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1BWF8gLSBNSU5fICsgMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9ICAKKyAgICAKKyAgICBQZXJmVGVzdC5GdW5jdGlvbiB0ZXN0SXNUaXRsZUNhc2UoKSAKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgUGVyZlRlc3QuRnVuY3Rpb24oKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBjYWxsKCkgeworICAgICAgICAgICAgICAgIGZvciAoaW50IGNoID0gTUlOXzsgY2ggPCBNQVhfOyBjaCArKykgeworICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyLmlzVGl0bGVDYXNlKGNoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyBsb25nIGdldE9wZXJhdGlvbnNQZXJJdGVyYXRpb24oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1BWF8gLSBNSU5fICsgMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9CisgICAgCisgICAgUGVyZlRlc3QuRnVuY3Rpb24gdGVzdEpES0lzVGl0bGVDYXNlKCkgCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFBlcmZUZXN0LkZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgY2FsbCgpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGNoYXIgY2ggPSAoY2hhcilNSU5fOyBjaCA8IChjaGFyKU1BWF87IGNoICsrKSB7CisgICAgICAgICAgICAgICAgICAgIENoYXJhY3Rlci5pc1RpdGxlQ2FzZShjaCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwdWJsaWMgbG9uZyBnZXRPcGVyYXRpb25zUGVySXRlcmF0aW9uKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBNQVhfIC0gTUlOXyArIDE7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfSAgICAKKyAgICAKKyAgICBQZXJmVGVzdC5GdW5jdGlvbiB0ZXN0SXNVbmljb2RlSWRlbnRpZmllclBhcnQoKSAKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgUGVyZlRlc3QuRnVuY3Rpb24oKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBjYWxsKCkgeworICAgICAgICAgICAgICAgIGZvciAoaW50IGNoID0gTUlOXzsgY2ggPCBNQVhfOyBjaCArKykgeworICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyLmlzVW5pY29kZUlkZW50aWZpZXJQYXJ0KGNoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyBsb25nIGdldE9wZXJhdGlvbnNQZXJJdGVyYXRpb24oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1BWF8gLSBNSU5fICsgMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9IAorICAgIAorICAgIFBlcmZUZXN0LkZ1bmN0aW9uIHRlc3RKREtJc1VuaWNvZGVJZGVudGlmaWVyUGFydCgpIAorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQZXJmVGVzdC5GdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGNhbGwoKSB7CisgICAgICAgICAgICAgICAgZm9yIChjaGFyIGNoID0gKGNoYXIpTUlOXzsgY2ggPCAoY2hhcilNQVhfOyBjaCArKykgeworICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXIuaXNVbmljb2RlSWRlbnRpZmllclBhcnQoY2gpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcHVibGljIGxvbmcgZ2V0T3BlcmF0aW9uc1Blckl0ZXJhdGlvbigpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTUFYXyAtIE1JTl8gKyAxOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0gCisgICAgCisgICAgUGVyZlRlc3QuRnVuY3Rpb24gdGVzdElzVW5pY29kZUlkZW50aWZpZXJTdGFydCgpIAorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQZXJmVGVzdC5GdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGNhbGwoKSB7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgY2ggPSBNSU5fOyBjaCA8IE1BWF87IGNoICsrKSB7CisgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXIuaXNVbmljb2RlSWRlbnRpZmllclN0YXJ0KGNoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyBsb25nIGdldE9wZXJhdGlvbnNQZXJJdGVyYXRpb24oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1BWF8gLSBNSU5fICsgMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9IAorICAgIAorICAgIFBlcmZUZXN0LkZ1bmN0aW9uIHRlc3RKREtJc1VuaWNvZGVJZGVudGlmaWVyU3RhcnQoKSAKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgUGVyZlRlc3QuRnVuY3Rpb24oKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBjYWxsKCkgeworICAgICAgICAgICAgICAgIGZvciAoY2hhciBjaCA9IChjaGFyKU1JTl87IGNoIDwgKGNoYXIpTUFYXzsgY2ggKyspIHsKKyAgICAgICAgICAgICAgICAgICAgQ2hhcmFjdGVyLmlzVW5pY29kZUlkZW50aWZpZXJTdGFydChjaCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwdWJsaWMgbG9uZyBnZXRPcGVyYXRpb25zUGVySXRlcmF0aW9uKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBNQVhfIC0gTUlOXyArIDE7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfSAKKyAgICAKKyAgICBQZXJmVGVzdC5GdW5jdGlvbiB0ZXN0SXNVcHBlckNhc2UoKSAKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgUGVyZlRlc3QuRnVuY3Rpb24oKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBjYWxsKCkgeworICAgICAgICAgICAgICAgIGZvciAoY2hhciBjaCA9IChjaGFyKU1JTl87IGNoIDwgKGNoYXIpTUFYXzsgY2ggKyspIHsKKyAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3Rlci5pc1VwcGVyQ2FzZShjaCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwdWJsaWMgbG9uZyBnZXRPcGVyYXRpb25zUGVySXRlcmF0aW9uKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBNQVhfIC0gTUlOXyArIDE7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorICAgIAorICAgIFBlcmZUZXN0LkZ1bmN0aW9uIHRlc3RKREtJc1VwcGVyQ2FzZSgpIAorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQZXJmVGVzdC5GdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGNhbGwoKSB7CisgICAgICAgICAgICAgICAgZm9yIChjaGFyIGNoID0gKGNoYXIpTUlOXzsgY2ggPCAoY2hhcilNQVhfOyBjaCArKykgeworICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXIuaXNVcHBlckNhc2UoY2gpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcHVibGljIGxvbmcgZ2V0T3BlcmF0aW9uc1Blckl0ZXJhdGlvbigpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTUFYXyAtIE1JTl8gKyAxOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0gICAgCisgICAgICAgICAKKyAgICBQZXJmVGVzdC5GdW5jdGlvbiB0ZXN0SXNXaGl0ZVNwYWNlKCkgCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFBlcmZUZXN0LkZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgY2FsbCgpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBjaCA9IE1JTl87IGNoIDwgTUFYXzsgY2ggKyspIHsKKyAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3Rlci5pc1doaXRlc3BhY2UoY2gpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcHVibGljIGxvbmcgZ2V0T3BlcmF0aW9uc1Blckl0ZXJhdGlvbigpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTUFYXyAtIE1JTl8gKyAxOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KKyAgICAKKyAgICBQZXJmVGVzdC5GdW5jdGlvbiB0ZXN0SkRLSXNXaGl0ZVNwYWNlKCkgCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFBlcmZUZXN0LkZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgY2FsbCgpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGNoYXIgY2ggPSAoY2hhcilNSU5fOyBjaCA8IChjaGFyKU1BWF87IGNoICsrKSB7CisgICAgICAgICAgICAgICAgICAgIENoYXJhY3Rlci5pc1doaXRlc3BhY2UoY2gpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcHVibGljIGxvbmcgZ2V0T3BlcmF0aW9uc1Blckl0ZXJhdGlvbigpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTUFYXyAtIE1JTl8gKyAxOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KKyAgICAKKyAgICAvLyBwcml2YXRlIGRhdGEgbWVtYmVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgICogTWluaW11bSBjb2RlcG9pbnQgdG8gZG8gdGVzdC4gVGVzdCBpcyByYW4gZnJvbSBNSU5fIHRvIE1BWF8KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBpbnQgTUlOXzsKKyAgICAvKioKKyAgICAgKiBNaW5pbXVtIGNvZGVwb2ludCB0byBkbyB0ZXN0LiBUZXN0IGlzIHJhbiBmcm9tIE1JTl8gdG8gTUFYXworICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGludCBNQVhfOworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3BlcmYvVW5pY29kZVNldFBlcmYuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9wZXJmL1VuaWNvZGVTZXRQZXJmLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjJhNTM5OAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9wZXJmL1VuaWNvZGVTZXRQZXJmLmphdmEKQEAgLTAsMCArMSwxNjQgQEAKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIENvcHlyaWdodCAoYykgMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworKiBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3BlcmYvVW5pY29kZVNldFBlcmYuamF2YSx2ICQgCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudGVzdC5wZXJmOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuKjsKK2ltcG9ydCBjb20uaWJtLmljdS5sYW5nLio7CitpbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7CitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworCisvKioKKyAqIEEgY2xhc3MgZm9yIHRlc3RpbmcgVW5pY29kZVNldCBwZXJmb3JtYW5jZS4KKyAqCisgKiBAYXV0aG9yIEFsYW4gTGl1CisgKiBAc2luY2UgSUNVIDIuNAorICovCitwdWJsaWMgY2xhc3MgVW5pY29kZVNldFBlcmYgZXh0ZW5kcyBQZXJmVGVzdCB7CisKKyAgICBTdHJpbmcgcGF0dGVybjsKKyAgICBVbmljb2RlU2V0IHRlc3RDaGFyczsKKyAgICBVbmljb2RlU2V0SXRlcmF0b3IgaXQ7CisgICAgVW5pY29kZVNldCB1czsKKyAgICBIYXNoU2V0IGhzOworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIG5ldyBVbmljb2RlU2V0UGVyZigpLnJ1bihhcmdzKTsKKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgdm9pZCBzZXR1cChTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIC8vIFdlIG9ubHkgdGFrZSBvbmUgYXJndW1lbnQsIHRoZSBwYXR0ZXJuCisgICAgICAgIGlmIChhcmdzLmxlbmd0aCAhPSAxKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigiUGxlYXNlIHN1cHBseSBVbmljb2RlU2V0IHBhdHRlcm4iKTsKKyAgICAgICAgfQorCisgICAgICAgIHBhdHRlcm4gPSBhcmdzWzBdOworICAgICAgICB0ZXN0Q2hhcnMgPSBuZXcgVW5pY29kZVNldChwYXR0ZXJuKTsKKyAgICAgICAgaXQgPSBuZXcgVW5pY29kZVNldEl0ZXJhdG9yKHRlc3RDaGFycyk7CisgICAgICAgIHVzID0gbmV3IFVuaWNvZGVTZXQoKTsKKyAgICAgICAgaHMgPSBuZXcgSGFzaFNldCgpOworICAgIH0KKworICAgIFBlcmZUZXN0LkZ1bmN0aW9uIHRlc3RVbmljb2RlU2V0QWRkKCkgeworICAgICAgICByZXR1cm4gbmV3IFBlcmZUZXN0LkZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgY2FsbCgpIHsKKyAgICAgICAgICAgICAgICB1cy5jbGVhcigpOworICAgICAgICAgICAgICAgIGl0LnJlc2V0KCk7CisgICAgICAgICAgICAgICAgaW50IG49MDsKKyAgICAgICAgICAgICAgICB3aGlsZSAoaXQubmV4dFJhbmdlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgY3AgPSBpdC5jb2RlcG9pbnQ7IGNwIDw9IGl0LmNvZGVwb2ludEVuZDsgKytjcCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdXMuYWRkKGNwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrbjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcHVibGljIGxvbmcgZ2V0T3BlcmF0aW9uc1Blckl0ZXJhdGlvbigpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGVzdENoYXJzLnNpemUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBQZXJmVGVzdC5GdW5jdGlvbiB0ZXN0SGFzaFNldEFkZCgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQZXJmVGVzdC5GdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGNhbGwoKSB7CisgICAgICAgICAgICAgICAgaHMuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBpdC5yZXNldCgpOworICAgICAgICAgICAgICAgIGludCBuPTA7CisgICAgICAgICAgICAgICAgd2hpbGUgKGl0Lm5leHRSYW5nZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGNwID0gaXQuY29kZXBvaW50OyBjcCA8PSBpdC5jb2RlcG9pbnRFbmQ7ICsrY3ApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGhzLmFkZChuZXcgSW50ZWdlcihjcCkpOworICAgICAgICAgICAgICAgICAgICAgICAgKytuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwdWJsaWMgbG9uZyBnZXRPcGVyYXRpb25zUGVySXRlcmF0aW9uKCkgeworICAgICAgICAgICAgICAgIHJldHVybiB0ZXN0Q2hhcnMuc2l6ZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KKworICAgIFBlcmZUZXN0LkZ1bmN0aW9uIHRlc3RVbmljb2RlU2V0Q29udGFpbnMoKSB7CisgICAgICAgIHVzLmNsZWFyKCk7CisgICAgICAgIHVzLnNldCh0ZXN0Q2hhcnMpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIG5ldyBQZXJmVGVzdC5GdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGNhbGwoKSB7CisgICAgICAgICAgICAgICAgaW50IHRlbXAgPSAwOworICAgICAgICAgICAgICAgIGZvciAoaW50IGNwID0gMDsgY3AgPD0gMHgxMEZGRkY7ICsrY3ApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHVzLmNvbnRhaW5zKGNwKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGVtcCArPSBjcDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcHVibGljIGxvbmcgZ2V0T3BlcmF0aW9uc1Blckl0ZXJhdGlvbigpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMHgxMTAwMDA7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorCisgICAgUGVyZlRlc3QuRnVuY3Rpb24gdGVzdEhhc2hTZXRDb250YWlucygpIHsKKyAgICAgICAgaHMuY2xlYXIoKTsKKyAgICAgICAgaXQucmVzZXQoKTsKKyAgICAgICAgd2hpbGUgKGl0Lm5leHQoKSkgeworICAgICAgICAgICAgaHMuYWRkKG5ldyBJbnRlZ2VyKGl0LmNvZGVwb2ludCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBuZXcgUGVyZlRlc3QuRnVuY3Rpb24oKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBjYWxsKCkgeworICAgICAgICAgICAgICAgIGludCB0ZW1wID0gMDsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBjcCA9IDA7IGNwIDw9IDB4MTBGRkZGOyArK2NwKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChocy5jb250YWlucyhuZXcgSW50ZWdlcihjcCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wICs9IGNwOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwdWJsaWMgbG9uZyBnZXRPcGVyYXRpb25zUGVySXRlcmF0aW9uKCkgeworICAgICAgICAgICAgICAgIHJldHVybiAweDExMDAwMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBQZXJmVGVzdC5GdW5jdGlvbiB0ZXN0VW5pY29kZVNldEl0ZXJhdGUoKSB7CisgICAgICAgIHJldHVybiBuZXcgUGVyZlRlc3QuRnVuY3Rpb24oKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBjYWxsKCkgeworICAgICAgICAgICAgICAgIGludCB0ZW1wID0gMDsKKyAgICAgICAgICAgICAgICBVbmljb2RlU2V0SXRlcmF0b3IgdWl0ID0gbmV3IFVuaWNvZGVTZXRJdGVyYXRvcih0ZXN0Q2hhcnMpOworICAgICAgICAgICAgICAgIHdoaWxlICh1aXQubmV4dCgpKSB7CisgICAgICAgICAgICAgICAgICAgIHRlbXAgKz0gdWl0LmNvZGVwb2ludDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyBsb25nIGdldE9wZXJhdGlvbnNQZXJJdGVyYXRpb24oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRlc3RDaGFycy5zaXplKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorCisgICAgUGVyZlRlc3QuRnVuY3Rpb24gdGVzdEhhc2hTZXRJdGVyYXRlKCkgeworICAgICAgICBocy5jbGVhcigpOworICAgICAgICBpdC5yZXNldCgpOworICAgICAgICB3aGlsZSAoaXQubmV4dCgpKSB7CisgICAgICAgICAgICBocy5hZGQobmV3IEludGVnZXIoaXQuY29kZXBvaW50KSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG5ldyBQZXJmVGVzdC5GdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGNhbGwoKSB7CisgICAgICAgICAgICAgICAgaW50IHRlbXAgPSAwOworICAgICAgICAgICAgICAgIEl0ZXJhdG9yIGl0ID0gaHMuaXRlcmF0b3IoKTsKKyAgICAgICAgICAgICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICAgICAgICAgIHRlbXAgKz0gKChJbnRlZ2VyKWl0Lm5leHQoKSkuaW50VmFsdWUoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyBsb25nIGdldE9wZXJhdGlvbnNQZXJJdGVyYXRpb24oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRlc3RDaGFycy5zaXplKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3BlcmYvY29sbGF0aW9ucGVyZi5wbCBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9wZXJmL2NvbGxhdGlvbnBlcmYucGwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZTRhODlmOQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9wZXJmL2NvbGxhdGlvbnBlcmYucGwKQEAgLTAsMCArMSwxMjggQEAKKyMvKioKKyMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIyAqIENvcHlyaWdodCAoQykgMjAwMi0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisjICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIyAqCisjICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3BlcmYvY29sbGF0aW9ucGVyZi5wbCx2ICQKKyMgKiAkRGF0ZTogMjAwMi8xMi8xOCAwMzo1Njo0MCAkCisjICogJFJldmlzaW9uOiAxLjIgJAorIyAqCisjICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyMgKi8KKyMKKyMgIElDVSBhbmQgV2luZG93cyBDb2xsYXRpb24gcGVyZm9ybWFuY2UgdGVzdCBzY3JpcHQKKyMgICAgICBVc2VkIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIGNvbGxwZXJmIHRlc3QgcHJvZ3JhbS4KKyMgICAgICBUaGlzIHNjcmlwdCBkZWZpbmVzIHRoZSBsb2NhbGVzIGFuZCBkYXRhIGZpbGVzIHRvIGJlIHRlc3RlZCwKKyMgICAgICAgIHJ1bnMgdGhlIGNvbGxwZXJmIHByb2dyYW0sIGFuZCBmb3JtYXRzIGFuZCBwcmludHMgdGhlIHJlc3VsdHMuCisjCisjICAgICAgICA3IEp1bmUgMjAwMSAgIEFuZHkgSGVuaW5nZXIKKyMKKyMgIElDVTRKIGFuZCBKYXZhIENvbGxhdG9yIHBlcmZvcm1hbmNlIHRlc3Qgc2NyaXB0CisjICAyMDAyLTA5LTI1IG1vZGlmaWVkIGJ5IFJpY2hhcmQgTGlhbmcKKworIworIyBNYXAgZGVmaW5lcyB0aGUgc2V0IG9mIGRhdGEgZmlsZXMgdG8gcnVuIGluIGVhY2ggbG9jYWxlCisjCislZGF0YUZpbGVzID0gKAorICAgImVuX1VTIiwgCQkiVGVzdE5hbWVzX0xhdGluLnR4dCIsCisgICAiZGFfREsiLCAJCSJUZXN0TmFtZXNfTGF0aW4udHh0IiwKKyAgICJkZV9ERSIsICAgIAkJIlRlc3ROYW1lc19MYXRpbi50eHQiLAorICAgImRlX19QSE9ORUJPT0siLCAiVGVzdE5hbWVzX0xhdGluLnR4dCIsCisgICAiZnJfRlIiLCAgIAkJIlRlc3ROYW1lc19MYXRpbi50eHQiLAorICAgImphX0pQIiwgCQkiVGVzdE5hbWVzX0xhdGluLnR4dCBUZXN0TmFtZXNfSmFwYW5lc2VfaC50eHQgVGVzdE5hbWVzX0phcGFuZXNlX2sudHh0IFRlc3ROYW1lc19Bc2lhbi50eHQiLAorICAgInpoX0NOIiwgCQkiVGVzdE5hbWVzX0xhdGluLnR4dCBUZXN0TmFtZXNfQ2hpbmVzZS50eHQiLAorICAgInpoX1RXIiwgCQkiVGVzdE5hbWVzX0xhdGluLnR4dCBUZXN0TmFtZXNfQ2hpbmVzZS50eHQiLAorICAgInpoX19QSU5ZSU4iLCAJIlRlc3ROYW1lc19MYXRpbi50eHQgVGVzdE5hbWVzX0NoaW5lc2UudHh0IiwKKyAgICJydV9SVSIsIAkJIlRlc3ROYW1lc19MYXRpbi50eHQgVGVzdE5hbWVzX1J1c3NpYW4udHh0IiwKKyAgICJ0aCIsICAgIAkJIlRlc3ROYW1lc19MYXRpbi50eHQgVGVzdE5hbWVzX1RoYWkudHh0IiwKKyAgICJrb19LUiIsICAgICAgICAgIlRlc3ROYW1lc19MYXRpbi50eHQgVGVzdE5hbWVzX0tvcmVhbi50eHQiLAorICAgKTsKKworCisjCisjICBPdXRlciBsb29wIHJ1bnMgdGhyb3VnaCB0aGUgbG9jYWxlcyB0byB0ZXN0CisjICAgICAoRWRpdCB0aGlzIGxpc3QgZGlyY3RseSB0byBtYWtlIGNoYW5nZXMpCisjCisgICBmb3JlYWNoICRsb2NhbGUgKAorCSAgICJlbl9VUyIsCisJICAgImRhX0RLIiwKKwkgICAiZGVfREUiLAorCSAgICJkZV9fUEhPTkVCT09LIiwKKwkgICAiZnJfRlIiLAorCSAgICJqYV9KUCIsCisgICAgICAgInpoX0NOIiwKKwkgICAiemhfVFciLAorCSAgICJ6aF9fUElOWUlOIiwKKyAgICAgICAia29fS1IiLAorCSAgICJydV9SVSIsCisJICAgInRoIiwKKyAgICAgICAgICAgICAgICAgICApCisgICAgICAgeworICAgICAgICMKKyAgICAgICAjIElubmVyIGxvb3AgcnVucyBvdmVyIHRoZSBzZXQgb2YgZGF0YSBmaWxlcyBzcGVjaWZpZWQgZm9yIGVhY2ggbG9jYWxlLgorICAgICAgICMgICAgKEVkaXQgdGhlICVkYXRhZmlsZXMgaW5pdGlhbGl6YXRpb24sIGFib3ZlLCB0byBtYWtlIGNoYW5nZXMuCisgICAgICAgIworICAgICAgICRmZiA9ICRkYXRhRmlsZXN7JGxvY2FsZX07CisgICAgICAgQGZmID0gc3BsaXQoL1tcc10rLywgJGZmKTsKKyAgICAgICBmb3JlYWNoICRkYXRhIChAZmYpIHsKKworICAgICAgICAgICMKKyAgICAgICAgICAjIFJ1biBJQ1UgVGVzdCBmb3IgdGhpcyAobG9jYWxlLCBkYXRhIGZpbGUpIHBhaXIuCisgICAgICAgICAgIworICAgICAgICAgICRpU3RyQ29sID0gYGphdmEgLWNsYXNzcGF0aCAuLi9jbGFzc2VzIGNvbS5pYm0uaWN1LmRldi50ZXN0LmNvbGxhdG9yLkNvbGxhdGlvblBlcmZvcm1hbmNlVGVzdCAtdGVyc2UgLWZpbGUgJGRhdGEgLWxvY2FsZSAkbG9jYWxlIC1sb29wIDEwMDAgLWJpbnNlYXJjaGA7CisgICAgICAgICAgJGlTdHJDb2wgPX5zL1ssXHNdKi8vZzsgICMgd2hhY2sgb2ZmIHRoZSBsZWFkaW5nICIgICwiIGluIHRoZSByZXR1cm5lZCByZXN1bHQuCisgICAgICAgICAgZG9LZXlUaW1lcygiamF2YSAtY2xhc3NwYXRoIC4uL2NsYXNzZXMgY29tLmlibS5pY3UuZGV2LnRlc3QuY29sbGF0b3IuQ29sbGF0aW9uUGVyZm9ybWFuY2VUZXN0IC10ZXJzZSAtZmlsZSAkZGF0YSAtbG9jYWxlICRsb2NhbGUgLWxvb3AgMTAwMCAta2V5Z2VuIiwKKyAgICAgICAgICAgICAgICAgICAgICRpS2V5R2VuLCAkaUtleUxlbik7CisKKworICAgICAgICAgICMKKyAgICAgICAgICAjIFJ1biBXaW5kb3dzIHRlc3QgZm9yIHRoaXMgKGxvY2FsZSwgZGF0YSBmaWxlKSBwYWlyLiAgT25seSBkbyBpZgorICAgICAgICAgICMgICAgd2UgYXJlIG5vdCBvbiBXaW5kb3dzIDk4L01FIGFuZCB3ZSBoYXZhIGEgd2luZG93cyBsYW5nSUQKKyAgICAgICAgICAjICAgIGZvciB0aGUgbG9jYWxlLgorICAgICAgICAgICMKKyAgICAgICAgICAkd1N0ckNvbCA9ICR3S2V5R2VuID0gJHdLZXlMZW4gPSAwOworICAgICAgICAgICR3U3RyQ29sID0gYGphdmEgLWNsYXNzcGF0aCAuLi9jbGFzc2VzIGNvbS5pYm0uaWN1LmRldi50ZXN0LmNvbGxhdG9yLkNvbGxhdGlvblBlcmZvcm1hbmNlVGVzdCAtdGVyc2UgLWZpbGUgJGRhdGEgLWxvY2FsZSAkbG9jYWxlIC1sb29wIDEwMDAgLWJpbnNlYXJjaCAtamF2YWA7CisgICAgICAgICAgJHdTdHJDb2wgPX5zL1ssXHNdKi8vZzsgICMgd2hhY2sgb2ZmIHRoZSBsZWFkaW5nICIgICwiIGluIHRoZSByZXR1cm5lZCByZXN1bHQuCisgICAgICAgICAgZG9LZXlUaW1lcygiamF2YSAtY2xhc3NwYXRoIC4uL2NsYXNzZXMgY29tLmlibS5pY3UuZGV2LnRlc3QuY29sbGF0b3IuQ29sbGF0aW9uUGVyZm9ybWFuY2VUZXN0IC10ZXJzZSAtZmlsZSAkZGF0YSAtbG9jYWxlICRsb2NhbGUgLWxvb3AgMTAwMCAta2V5Z2VuIC1qYXZhIiwKKyAgICAgICAgICAgICAgICAgICAgICR3S2V5R2VuLCAkd0tleUxlbik7CisgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAkY29sbERpZmYgPSAka2V5R2VuRGlmZiA9ICRrZXlMZW5EaWZmID0gMDsKKyAgICAgICAgICBpZiAoJHdLZXlMZW4gPiAwKSB7CisgICAgICAgICAgICAgICRjb2xsRGlmZiAgID0gKCgkd1N0ckNvbCAtICRpU3RyQ29sKSAvICRpU3RyQ29sKSAqIDEwMDsKKyAgICAgICAgICAgICAgJGtleUdlbkRpZmYgPSAoKCR3S2V5R2VuIC0gJGlLZXlHZW4pIC8gJGlLZXlHZW4pICogMTAwOworICAgICAgICAgICAgICAka2V5TGVuRGlmZiA9ICgoJHdLZXlMZW4gLSAkaUtleUxlbikgLyAkaUtleUxlbikgKiAxMDA7CisgICAgICAgICAgfQorCisgICAgICAgICAjCisgICAgICAgICAjICBXcml0ZSB0aGUgbGluZSBvZiByZXN1bHRzIGZvciB0aGlzIChsb2NhbGUsIGRhdGEgZmlsZSkuCisgICAgICAgICAjCisgICAgICAgICB3cml0ZTsKKyAgICB9CisgfQorCisjCisjICBkb0tleUdlblRpbWVzKCRDb21tYW5kX3RvX3J1biwgJHRpbWUsICRrZXlfbGVuZ3RoKQorIyAgICAgICBEbyBhIGtleS1nZW5lcmF0aW9uIHRlc3QgYW5kIHJldHVybiB0aGUgdGltZSBhbmQga2V5IGxlbmd0aC9jaGFyIHZhbHVlcy4KKyMKK3N1YiBkb0tleVRpbWVzKCQkJCkgeworICAgIyBwcmludCAiJF9bMF0iOworICAgbG9jYWwoJHgpID0gYCRfWzBdYDsgICAgICAgICAgICAgICAgICAjIGV4ZWN1dGUgdGhlIGNvbGxwZXJmIGNvbW1hbmQuCisgICAoJF9bMV0sICRfWzJdKSA9IHNwbGl0KC9cLC8sICR4KTsgICAgICMgY29sbHBlcmYgcmV0dXJucyAidGltZSwga2V5bGVuZ3RoIiBzdHJpbmcuCit9CisKKworIworIyAgT3V0cHV0IEZvcm1hdHMgLi4uCisjCisjCitmb3JtYXQgU1RET1VUX1RPUCA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tIElDVSAtLS0tLS0tLSAgIC0tLS0tLSBKQVZBIC0tLS0tLS0gICAgICAoSkFWQSAtIElDVSkvSUNVCitMb2NhbGUgICAgIERhdGEgZmlsZSAgICAgICAgICAgICAgICAgIHN0cmNvbGwga2V5Z2VuICBrZXlsZW4gIHN0cmNvbGwga2V5Z2VuICBrZXlsZW4gICAgY29sbCAga2V5Z2VuICBrZXlsZW4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLgorCitmb3JtYXQgU1RET1VUID0KK0A8PDw8PDw8PDwgQDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PHwgQCMjIyMjIyAgQCMjIyMgICBAIy4jIyAgfEAjIyMjIyBAIyMjIyMgICBAIy4jIyB8IEAjIyMlICBAIyMjJSAgIEAjIyMlCiskbG9jYWxlLCAkZGF0YSwgJGlTdHJDb2wsICRpS2V5R2VuLCAkaUtleUxlbiwgJHdTdHJDb2wsICR3S2V5R2VuLCAkd0tleUxlbiwgJGNvbGxEaWZmLCAka2V5R2VuRGlmZiwgJGtleUxlbkRpZmYKKy4KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9wZXJmL2RhdGEvY29sbGF0aW9uL1Rlc3ROYW1lc19Bc2lhbi50eHQgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvcGVyZi9kYXRhL2NvbGxhdGlvbi9UZXN0TmFtZXNfQXNpYW4udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjYzJlODgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvcGVyZi9kYXRhL2NvbGxhdGlvbi9UZXN0TmFtZXNfQXNpYW4udHh0CkBAIC0wLDAgKzEsMTAwMDEgQEAKK++7v+OBguOBjeOCguOBqCzjgoTjgZnjgYoNCivjgYLjgYTjgYvjgo8s44Gu44KK44GKDQor44GC44GL44Gk44GLLOOBi+OBmuOBsuOBkw0KK+OBguOCj+OBmizjgYLjgY3jgokNCivjgYLjgZXjga4s44KI44GX44KEDQor44GC44KJ44GNLOOCiOOBl+OBi+OBmg0KK+OBhOOBruOBhuOBiCzjgbLjgo3jgbLjgagNCivjgYvjgajjgYYs44G+44GV44Go44GXDQor44Gq44GL44KA44KJLOOBkeOBhOOBnuOBhg0KK+OBteOBmOOCj+OCiSzjgZ/jgYvjgZMNCivjgoTjgarjgY7jga/jgoks44G/44Gp44KKDQor44GL44KP44GgLOOBquOBiuOBkw0KK+OBhOOBl+OBrizjgY3jgojjgarjgYwNCivjgZTjgajjgYYs44GL44Gk44Gu44KKDQor44GE44GX44GY44G+LOOCiuOCh+OBhuOBuOOBhA0KK+OBguOBqOOBhizjgb7jgZXjga7jgooNCivjgb/jgZfjgb4s44Gf44GL44KG44GNDQor44G/44KI44GXLOOBruOBtuOBvuOBlQ0KK+OBn+OBoeOBrizjgZjjgoXjgpMNCivjgYrjgYrjga4s44GL44Ga44GKDQor44GN44Gf44GM44KPLOOCiOOBl+OBn+OBiw0KK+OBteOCi+OBleOCjyzjgZXjgajjgZcNCivjgYrjgYrjga/jgZcs44Gy44Go44GXDQor44KI44GX44GL44KPLOOBqOOBl+OChuOBjQ0KK+OBi+OCj+OBhCzjgajjgZfjgYoNCivjgYTjgZfjgags44GT44GG44GNDQor44GE44G+44GELOOBn+OBi+OChuOBjQ0KK+OChOOBvuOBquOBiyzjgZXjgaTjgb8NCivjgbvjgorjgYvjgo8s44GL44Gk44G/DQor44GZ44Ga44GNLOOBl+OCheOCk+OBmA0KK+OBguOCj+OBiCzjgYLjgaTjgZcNCivjgarjgYzjgZss44Gf44GL44Gy44KNDQor44GT44Gw44KE44GXLOOBmOOCheOCk+OBhOOBoQ0KK+OBvuOBiOOBoCzjgbLjgo3jgZcNCivjgYvjgajjgYYs44G+44GV44GL44GaDQor44GZ44G/44GfLOOBi+OBiuOCiw0KK+OBm+OBjeOBkOOBoSzjgZ/jgYvjgobjgY0NCivjgZ/jgarjgYss44Gm44KL44Gy44GVDQor44Gy44KJ44GuLOOBn+OBi+OBlw0KK+OBr+OBvuOBkOOBoSzjgZfjgpPjgZgNCivjgZXjgYvjgYzjgb8s44Gu44KK44GL44GaDQor44GT44Gw44KE44GXLOOChOOBmeOBlw0KK+OBn+OBjeOCguOBqCzjga7jgorjgZMNCivjgbvjgZcs44Gy44KN44G144G/DQor44GK44GK44Gf44GLLOOChuOBhuOBkw0KK+OBmeOBjuOCgOOCiSzjgZfjgZLjgYoNCivjgYLjgYrjgY0s44G+44GV44KLDQor44Gq44GL44Gv44KJLOOChuOBhuOBnuOBhg0KK+OBi+OBqOOBhizjgYrjgZXjgoANCivjgb7jgYjjgZXjgYss44Go44KC44G/44GkDQor44G144GY44Gf44GrLOOBi+OBmuOBsuOBkw0KK+OBu+OBo+OBnyzjgZfjgZLjgbLjgagNCivjgYLjgY3jgoTjgb4s44KG44Gf44GLDQor44G144GY44GfLOOBvuOBleOChuOBjQ0KK+OBqOOCiOOBquOBjCzjgoTjgZnjgbLjgo0NCivjga/jgaPjgajjgoos44G+44GV44GKDQor44Gu44KA44KJLOOBl+OBkuOBig0KK+OBi+OCj+OBl+OBvizjgZ/jgYvjgZMNCivjgoDjgo3jgoQs44Gm44Gk44GKDQor44GC44GX44GL44KPLOOChOOBmeOBl+OBkg0KK+OBr+OChOOBlyzjgZ/jgYvjgYoNCivjgb/jgoTjgYzjgo8s44G144G/44Gu44KKDQor44GK44GQ44KJLOOChOOBmeOBsuOCjQ0KK+OCiOOBl+OBoCzjgajjgZfjgbLjgZMNCivjgY/jganjgYYs44Gy44KN44GXDQor44GP44G+44GM44GELOOBn+OBi+OChuOBjQ0KK+OBq+OBl+OBiizjgbLjgafjgY0NCivjgYrjgYrjgYTjgoTjgb4s44Gu44G844KLDQor44Gf44GR44Gf44GrLOOBteOBqOOBlw0KK+OBhOOBl+OBoCzjgYvjgaTjgoQNCivjgYrjgYTjgYvjgo8s44Gu44G244GC44GNDQor44Gf44GL44Gv44GXLOOBm+OBhOOBmA0KK+OCgOOCieOBnyzjgajjgYrjgosNCivjgZnjgZrjgY0s44GZ44GZ44KADQor44Gv44KE44GXLOOBl+OCk+OBoeOCh+OBhg0KK+OBj+OCjeOBi+OCjyzjgb7jgZXjgYLjgY0NCivjgoTjgZjjgb4s44Go44GK44KLDQor44GL44Gk44KJ44GELOOCj+OBn+OCiw0KK+OBguOBi+OCiizjgorjgofjgYbjgZgNCivjgYLjgZrjgb4s44Gu44G244KG44GNDQor44GC44Gk44G/LOOBl+OCheOBhuOBmA0KK+OBvuOCi+OBiizjgojjgZfjgobjgY0NCivjgYTjgZHjgYos44G/44Gu44KLDQor44Go44KK44KE44G+LOOCiuOBpOOBig0KK+OBr+OBvuOBrizjgojjgYbjgYTjgaENCivjgoTjgb7jgoLjgags44GT44GG44Gf44KN44GGDQor44GT44GG44GhLOOChuOBhuOBmeOBkQ0KK+OBquOBi+OBmOOBvizjga7jgorjgbLjgZMNCivjgYLjgoks44Gy44KN44GXDQor44G744Gd44GL44KPLOOBvuOBleOBsuOCjQ0KK+OBhOOBmuOBvyzjgYvjga3jgb/jgaQNCivjgYLjgo/jgZgs44GC44Gk44GKDQor44G/44Ga44Gy44GNLOOCiOOBl+OBig0KK+OBiuOBoOOBmOOBvizjgarjgbvjgb8NCivjgbXjgovjgYvjgo8s44GX44GS44GKDQor44G/44Ga44GQ44GhLOOBmOOCjeOBhg0KK+OBhOOBqOOBhizjgbLjgo3jgZcNCivjgbXjgY/jgYQs44GV44Go44GXDQor44G144GY44Gv44KJLOOBn+OBkeOBsuOBqA0KK+OChOOBrizjgobjgYbjgZgNCivjga/jgoTjgZfjgZDjgaEs44Gy44KN44GXDQor44G744KKLOOBqOOBl+OChuOBjQ0KK+OCiOOBl+OBhCzjgZ/jgYvjgZcNCivjgYLjgpPjganjgYYs44Gy44KN44GXDQor44Gv44GfLOOBk+OBhuOBhOOBoQ0KK+OBk+OBsOOCiizjgbLjgafjgobjgY0NCivjgYrjgaDjgZfjgb4s44GL44Gk44KN44GGDQor44GG44GI44KE44G+LOOBv+OBpOOBquOCig0KK+OCgOOBnyzjgb7jgarjgbYNCivjgZ/jgarjgYss44GX44GS44GKDQor44GT44KT44GuLOOChuOBhuOBkw0KK+OBteOBmOOCj+OCiSzjgajjgZfjga/jgosNCivjgb/jgoTjgY0s44KG44Gf44GLDQor44Gv44Gq44KPLOOBvuOBleOBsuOCjQ0KK+OBpuOBmOOBvizjgYLjgY3jgokNCivjgY/jgbws44GC44Gk44GXDQor44GK44GK44GwLOOBl+OCk+OBlA0KK+OBk+OCk+OBrizjgZ/jgY/jgoQNCivjgb7jgaTjgbDjgoks44Gy44Gn44GKDQor44Gv44GX44KC44GoLOOBmeOBv+OBkw0KK+OCj+OBn+OBquOBuSzjgYvjgZrjgbLjgo0NCivjgZPjgZ/jgY0s44Gm44Gk44KEDQor44G144GL44KELOOCguOCguOBjQ0KK+OBvuOBpOOBhuOCiSzjgabjgaPjgbrjgYQNCivjgbXjgarjgaAs44GL44Ga44Gy44GTDQor44Gy44GM44GX44GgLOOBqOOBl+OChuOBjQ0KK+OBhOOBruOBvuOBnyzjgbLjgo3jgZcNCivjgZXjgajjgYYs44Gy44KN44G/DQor44GE44Go44GGLOOBn+OBpOOBlw0KK+OBv+OBn+OCgOOCiSzjgb7jgobjgb8NCivjgZnjgYzjga/jgoks44G/44Gk44KLDQor44Gf44GL44G/44KELOOBsuOBp+OBruOBtg0KK+OChOOBvuOBkOOBoSzjgZPjgZnjgZENCivjgYrjgZ8s44Gk44KI44GXDQor44Gb44Gu44GKLOOBr+OBmOOCgQ0KK+OBl+OBsOOBluOBjSzjgYLjgaTjgZcNCivjgarjgYvjgoDjgoks44KE44GZ44Gy44KNDQor44G144GY44GL44KPLOOBsuOCjeOChuOBjQ0KK+OBguOCieOBhCzjgorjgoXjgYbjgZgNCivjgYrjgYrjgY/jgoks44Gy44GV44Gu44KKDQor44G+44Gk44GwLOOBl+OBkuOCiw0KK+OBn+OCgeOBsuOCjSzjgoLjgajjgZMNCivjgb7jgpPjgb0s44GL44Gk44G/DQor44GT44GQ44GhLOOBn+OBi+OBlw0KK+OBn+OBq+OBkOOBoSzjgarjgYrjgZnjgZENCivjgoTjgb7jgoLjgags44Gf44GL44Gy44KNDQor44Gy44KJ44KC44GoLOOBsuOBp+OBguOBjQ0KK+OBguOCk+OCieOBjyzjgZ/jgYvjgZcNCivjgZ/jgarjgYss44Gu44KK44GTDQor44Gh44KD44GNLOOBl+OBkuOBsuOBpw0KK+OBleOBi+OBhCzjgaHjga/jgosNCivjgYTjgarjgYrjgYss44Gy44KN44GL44GaDQor44GG44GX44GY44G+LOOBl+OCk+OBhOOBoQ0KK+OBk+OBkeOBpCzjgYLjgY3jgbLjgZUNCivjgoDjgonjgZ8s44Gy44Go44GXDQor44GN44KA44KJLOOCiOOBl+OBsuOCjQ0KK+OBl+OCk+OBn+OBqyzjgorjgoXjgYbjgZgNCivjgYrjgYrjga/jgZ8s44Gu44G244GC44GNDQor44Gf44G244GhLOOChuOBn+OBiw0KK+OBmeOBv+OBoCzjgY3jgojjgZcNCivjgb/jgYbjgoks44Gq44Gq44GTDQor44KK44KF44GG44GoLOOBsuOCjeOBvw0KK+OBhOOBkeOBoCzjgbLjgo3jgarjgooNCivjgZ/jgYvjgoTjgarjgY4s44Gy44KN44G144G/DQor44GI44KT44GpLOOBkeOCk+OBhOOBoQ0KK+OBiuOBl+OBi+OCjyzjgZfjgpPjgZgNCivjgZPjgbDjgoTjgZcs44Gy44Gn44KG44GNDQor44KE44G+44GgLOOBhOOCj+OBig0KK+OBiuOBoCzjgb7jgZXjgYoNCivjgZ/jgY3jgZbjgo8s44GC44Gk44GXDQor44KC44KKLOOChOOBmeOBruOCig0KK+OBi+OBquOBluOCjyzjgZ/jgaTjgobjgY0NCivjgYrjgYrjgZ8s44Gf44GL44GC44GNDQor44GK44GK44GkLOOBpuOBpOOCjeOBhg0KK+OBteOBmOOCguOBqCzjgYvjgZrjgbLjgo0NCivjgoLjgorjgYvjgo8s44G+44GV44Gu44G2DQor44GE44Go44GGLOOBk+OBhuOBmA0KK+OBi+OBqOOBhizjgZPjgYbjgYTjgaENCivjgYbjgYjjga4s44KI44GX44Gy44GTDQor44GK44GK44GL44KPLOOBleOBi+OBiA0KK+OBvuOCi+OBhCzjgZjjgoXjgpPjgZMNCivjgYTjgo/jgYos44GX44KF44GG44GYDQor44GG44KB44GgLOOBi+OBmuOChA0KK+OCgeOBi+OBnyzjgb7jgZXjgosNCivjgaTjgZgs44Gk44GQ44Gy44GTDQor44Gf44GULOOBsuOCjeOBlw0KK+OChOOBvuOBl+OBnyzjgb7jgZXjgagNCivjgZnjgY7jgoTjgb4s44Gy44KN44KG44GNDQor44G144Gf44GwLOOBqOOBl+OBguOBjQ0KK+OBv+OChOOBsuOCiSzjgb/jgaHjgYLjgY0NCivjgavjgZfjgZbjgY0s44GZ44GZ44KADQor44Gf44Gq44GLLOOBj+OBq+OBkw0KK+OCgOOCieOCguOBqCzjgajjgoLjgYLjgY0NCivjgb7jgYjjgaAs44Gy44GV44GL44GaDQor44G/44KE44GRLOOBguOBpOOBlw0KK+OBqOOBhuOBmOOBvizjgZ/jgaTjgbLjgo0NCivjgYrjgYrjgoQs44G+44GV44KLDQor44GG44GI44GuLOOBqOOCguOBsuOCjQ0KK+OBn+OBi+OBleOBjSzjgoTjgZnjgbLjgZUNCivjgZPjgpPjga4s44KI44GX44Gy44GVDQor44Gf44GR44GKLOOBruOCiuOBi+OBmg0KK+OBi+OBquOChOOBvizjgoTjgZnjgbLjgZMNCivjgYrjgYrjgYrjgYss44Go44GX44KN44GGDQor44GT44Gw44KE44GXLOOBl+OCheOBhg0KK+OBq+OBl+OBluOBiyzjgb/jgYsNCivjgb7jgZnjgb/jgaAs44Go44KC44Gy44GTDQor44Gk44G844GELOOChOOBmeOBig0KK+OBn+OBjOOBvyzjgb7jgZXjgosNCivjgYrjgYvjgaAs44Gm44KL44GKDQor44GL44Gf44GO44KKLOOBleOBqOOBlw0KK+OBi+OCj+OBpizjgZ/jgYvjgZcNCivjgb/jgZrjgYQs44GC44KE44GKDQor44GL44GV44GK44GLLOOBqOOBl+OBsuOBkw0KK+OBsuOBjOOBl+OBn+OBqyzjgbLjgafjgbXjgb8NCivjgYbjgZfjgY0s44GL44Ga44GE44GhDQor44Gy44KJ44GV44KPLOOBquOBjOOBkw0KK+OBquOCiuOBnyzjgZfjgoXjgYbjgYTjgaENCivjgZPjgaDjgb4s44GL44Ga44Gy44KNDQor44GE44Gu44G+44GfLOOBsuOCjeOBvw0KK+OBjeOCgOOCiSzjgZfjgofjgYbjgZQNCivjgYTjgajjgYYs44G144G/44GKDQor44KP44Gf44Gq44G5LOOBpuOCi+OBguOBjQ0KK+OBpuOCieOBleOCjyzjgb/jgaTjgYoNCivjga/jgoTjgZcs44GX44KT44GE44GhDQor44GC44GV44GP44KJLOOBl+OCk+OChA0KK+OChOOBvuOBjSzjgZPjgYbjgYTjgaENCivjgarjgYvjgoDjgoks44GX44KT44GE44Gh44KN44GGDQor44GI44Gu44KC44GoLOOBsuOCjeOBv+OBoQ0KK+OBi+OBvuOBnyzjgZ/jgYvjgbLjgo0NCivjga/jgZfjgoLjgags44Gq44GK44GNDQor44GC44KJ44GELOOCiOOBl+OBvw0KK+OBi+OCiuOChCzjgZ/jgYvjgbLjgZMNCivjgZPjgpPjgaks44KI44GX44GNDQor44G+44GZ44GgLOOBsuOCjeOBig0KK+OBhOOBqOOBhizjgZHjgYTjgZnjgZENCivjgYrjgYss44G/44Gh44Gv44KLDQor44GK44GK44Gk44GLLOOBsuOBp+OBjQ0KK+OBvuOBpOOBiizjgZPjgYbjgZgNCivjgYLjgZ0s44Gm44KL44GL44GaDQor44GL44G/44KA44KJLOOBsuOCjeOChuOBjQ0KK+OBn+OBi+OBsOOBn+OBkSzjgZfjgZLjga7jgooNCivjgbXjgY/jgaAs44Gy44KN44KG44GNDQor44Gf44GL44Gv44GXLOOBkeOCk+OBqA0KK+OBhOOCj+OBjSzjgb7jgZPjgagNCivjgZnjgpMs44Go44KI44KG44GNDQor44GC44KT44Gp44GGLOOCiOOBl+OBig0KK+OBr+OBl+OCguOBqCzjgYvjgaoNCivjgoTjga/jgZ8s44Gy44Gn44GKDQor44G144GY44GNLOOBkeOCk+OBmA0KK+OBvuOBpOOBiizjgZXjgajjgZcNCivjgYLjgYrjgY0s44KI44GG44GE44Gh44KN44GGDQor44GU44Go44GGLOOBl+OCk+OBmA0KK+OBq+OBl+OBi+OCjyzjgbLjgajjgZcNCivjgZnjgb/jgags44G+44GV44G144G/DQor44Gy44KJ44GuLOOBk+OBhuOBmA0KK+OBhOOBqOOBhizjgZHjgYQNCivjgZPjgYTjgZrjgb8s44Gu44KK44GTDQor44GL44KP44Gw44GfLOOBruOBnuOBvw0KK+OCgOOBqOOBhizjgYvjgaTjga7jgooNCivjgYLjgaDjgaEs44G+44GV44GXDQor44GN44KJLOOBvuOBleOBlw0KK+OBguOChOOBrizjgZPjgYbjgY0NCivjgZ/jgovjgYQs44KI44GX44GKDQor44Gv44KE44GXLOOBjeOCh+OBhuOBkw0KK+OBhOOBkeOBoCzjgZjjgoXjgpMNCivjgbvjgorjgb/jgZ4s44GR44GE44GZ44GRDQor44G144KL44Gq44GMLOOBr+OCi+OBsuOBkw0KK+OBiuOBl+OBvizjgarjgZnjgYoNCivjga/jgoTjgZcs44Gy44Go44GXDQor44Gr44GXLOOChuOBjeOBv+OBpA0KK+OBk+OCgOOCjSzjgYvjgarjgoENCivjgbLjgo3jgZ/jgass44KI44GX44GKDQor44GZ44GMLOOBsuOCjeOBlw0KK+OBpOOCi+OBvyzjgYLjgY3jgbLjgZUNCivjgajjgb/jgoTjgb4s44GL44Ga44G/44GkDQor44KE44G+44GW44GNLOOCiOOBhuOBkw0KK+OBhOOBl+OBoCzjgZfjgofjgYbjgYTjgaHjgo3jgYYNCivjgYbjgaHjgajjgb8s44GC44GN44KJDQor44GK44GK44GV44KPLOOCiOOBl+OBi+OBmg0KK+OChOOBquOBjizjgbLjgafjgbLjgo0NCivjgb/jgoTjgZfjgZ8s44Gy44Gn44GNDQor44Gf44GL44Gv44GXLOOBk+OBhuOBmA0KK+OBqOOBjOOCjyzjgbLjgo3jgobjgY0NCivjgarjgYvjgoDjgoks44GX44GS44KLDQor44GG44GI44KA44KJLOOBn+OBkeOBlw0KK+OBguOBleOBrizjgobjgYbjgYTjgaENCivjgYrjgYrjgoTjgb4s44GR44KT44GYDQor44GL44KP44GuLOOBiOOBhOOBkw0KK+OBsOOBsCzjgbLjgajjgZcNCivjgYTjgajjgYYs44GX44KT44GE44GhDQor44GG44GI44GuLOOBruOBtuOChuOBjQ0KK+OBl+OCieOBhCzjgZHjgpPjgZfjgpMNCivjgYTjgYvjgb8s44Gv44KL44GKDQor44GL44KP44GX44G+LOOBqOOCguOChuOBjQ0KK+OBv+OChOOBkSzjgZ/jgYvjgbLjgo0NCivjgZXjgY/jgonjgYQs44GR44KT44GYDQor44Gf44GR44Gu44GX44GfLOOBl+OCheOBhuOBuOOBhA0KK+OBq+OBl+OBiuOBiyzjgZvjgYTjgYTjgaHjgo3jgYYNCivjgY/jgo3jgY0s44G+44GV44KI44GXDQor44Gf44Gq44GLLOOBv+OBruOCiw0KK+OBhOOBhOOBmOOBvizjgZ/jgYvjgZcNCivjgZXjgajjgYYs44Gy44KN44GC44GNDQor44GV44GP44KJ44GELOOBi+OBmuOBl+OBkg0KK+OChOOBquOBjuOBleOCjyzjga7jgbbjgYoNCivjgYbjgaHjgoTjgb4s44GX44GS44KI44GXDQor44GK44GP44GkLOOBi+OBmuOBqOOBlw0KK+OBq+OBl+OChOOBvizjgZvjgYTjgZgNCivjgZ/jgZHjgaAs44Gf44GL44GTDQor44G144KK44Gv44KJLOOBi+OBmuOBig0KK+OChOOBtuOBjSzjgb7jgZXjgbLjgo0NCivjgarjgYss44GL44Ga44Gy44KNDQor44KI44GX44GK44GLLOOBi+OBmuOChA0KK+OCguOBoeOBmuOBjSzjgZ/jgYvjgobjgY0NCivjgZnjgY7jgoTjgb4s44Gy44Gn44Gy44KNDQor44GE44KP44Gq44GMLOOBkeOBhOOBhOOBoQ0KK+OBv+OCjyzjga/jgovjgYvjgZoNCivjgbvjgorjgYvjgo8s44GL44Gk44GNDQor44Gf44GL44GgLOOBk+OBhuOBmA0KK+OBhOOBl+OBvuOCiyzjgZfjgZLjgoTjgZkNCivjgYrjgoDjgoks44Gy44Gn44GKDQor44GN44Gf44KA44KJLOOCiuOBiw0KK+OBmeOBjuOBjSzjgZ/jgYvjgY0NCivjgavjgZfjgoDjgoks44Gh44GI44GTDQor44Gq44GL44Gv44KJLOOBk+OBhuOBhOOBoQ0KK+OBvuOBpOOCguOBqCzjgYLjgY3jgokNCivjgbXjgY/jgZfjgb4s44G+44GV44KLDQor44GL44GY44GK44GLLOOBguOBjeOBsuOBqA0KK+OBquOBi+OBluOCjyzjga7jgbzjgosNCivjgb7jgZnjgZbjgY0s44Gf44GL44GXDQor44Gq44GLLOOBqOOBl+OBn+OBiw0KK+OBiuOBleOBoCzjga/jgZjjgoENCivjgYvjgo/jgZ8s44Gq44GK44G/DQor44KI44GX44GgLOOBk+OBhuOBmA0KK+OBquOBiyzjgajjgZfjgbLjgo0NCivjgYjjgYTjganjgoEs44Gy44Gn44GL44GaDQor44G+44Gk44KC44GoLOOCiOOBl+OBvuOBlQ0KK+OBquOBjOOBleOBiyzjgojjgZfjgYLjgY0NCivjgbXjgZjjgZXjgo8s44GL44Gk44Gy44GTDQor44GN44KI44Gf44GrLOOBpOOBqOOCgA0KK+OBguOCiuOCguOBqCzjgZvjgYTjgZMNCivjgYjjgZ7jgYgs44GR44GE44GE44GhDQor44Gk44Gh44KELOOBi+OBmuOChA0KK+OBteOBmOOBiuOBiyzjgoTjgZnjgZMNCivjgaTjgYvjgoLjgags44G144G/44GKDQor44Gf44GL44Gv44GXLOOBqOOCiOOBsuOBkw0KK+OBleOBi+OBhOOBoCzjgoTjgZnjgbLjgo0NCivjgZnjgZrjgY0s44GT44GG44GYDQor44GK44GX44G+LOOChOOBmeOBqOOBlw0KK+OBvuOBjeOBhuOBoSzjgZ/jgY/jgoQNCivjga/jgonjgaAs44Gy44GV44GL44GaDQor44G+44GV44GNLOOBguOBjeOCiQ0KK+OBiuOBjOOCjyzjga7jgbbjgYLjgY0NCivjgYbjgZfjgb7jgoss44GR44KTDQor44GE44GX44GgLOOBruOBtuOBn+OBiw0KK+OBr+OBquOBtuOBlSzjgYLjgaTjgZMNCivjgojjgZfjgoDjgoks44KI44GX44Gy44GVDQor44Gf44Gr44GM44KPLOOBvuOCiuOBig0KK+OBleOBqOOBhizjgZ/jgaTjgZcNCivjgYvjgaQs44Gf44GL44GXDQor44KE44G+44GQ44GhLOOBsuOCjeOBjQ0KK+OBr+OBj+OBoeOCh+OBhizjgYTjgZXjgYoNCivjgYTjgajjgYYs44Gf44GL44GXDQor44GV44GL44GELOOBi+OBmuOBruOCig0KK+OBn+OCk+OBlCzjgbLjgafjgYoNCivjgZPjgYTjgZrjgb8s44GR44KT44GZ44GRDQor44KP44GL44GZ44GOLOOBn+OBoOOBn+OBiw0KK+OBhuOBiOOBrizjgZfjgpPjgYTjgaENCivjgYbjgYjjgaAs44Go44KC44GNDQor44GZ44Ga44GNLOOBsuOBleOBiA0KK+OBiuOBiuOBrizjgojjgZfjga7jgooNCivjgYLjgbks44GR44KT44GE44GhDQor44GX44GE44GNLOOBsuOCjeOBlw0KK+OBguOCieOBjSzjgY3jgojjga/jgosNCivjgYLjgZrjgb4s44Gy44KN44KI44GXDQor44Gn44GQ44GhLOOBsuOCjeOBruOCig0KK+OBiOOCiuOBi+OCjyzjgobjgYbjgZMNCivjgbXjgYvjgoTjgb4s44Gu44G244KG44GNDQor44G144Gq44GNLOOBleOBi+OBiA0KK+OBhOOBoeOCgOOCiSzjgb7jgZPjgagNCivjga/jgZfjgoLjgags44Gu44KK44GC44GNDQor44Gy44GM44GXLOOBjeOCiOOBn+OBiw0KK+OBsuOCjeOBleOCjyzjgYLjgaTjgZcNCivjgbvjgorjgZDjgaEs44KG44GG44GE44GhDQor44GE44Gw44KJ44GNLOOChuOBhuOBhOOBoQ0KK+OBhOOBquOCgOOCiSzjgZPjgYbjgYTjgaENCivjgYTjgZfjgYvjgo8s44G/44GN44GKDQor44GE44Go44GELOOBn+OBoOOBlw0KK+OBi+OBquOBluOBlyzjga7jgorjgZMNCivjgYvjgZ/jgY7jgZcs44G+44GV44GXDQor44GL44Go44GGLOOChOOBmeOBlw0KK+OBi+OCj+OBoCzjgZHjgpPjgZnjgZENCivjgY3jga7jgZfjgZ8s44KE44GZ44Gy44KNDQor44GT44Gw44KE44GXLOOBi+OBpOOBruOCig0KK+OBk+OBvuOBpCzjgoTjgZnjgZ/jgYsNCivjgZPjgZ/jgass44Gy44Gn44GNDQor44GP44KN44GbLOOBiuOBleOCgA0KK+OBvuOBiOOBoCzjgobjgYbjgZgNCivjgb7jgpPjgZ/jgass44KI44GG44GE44GhDQor44G+44Gk44KC44GoLOOChOOBmeOBguOBjQ0KK+OBv+OCgOOCiSzjgZfjgZLjga7jgbYNCivjgb/jgo8s44G+44GV44Gy44KNDQor44KC44KK44GfLOOBguOBjeOBsuOBkw0KK+OCgOOBreOCgOOCiSzjgajjgZfjgb/jgaQNCivjgarjgYzjgZ8s44GR44KT44GYDQor44Gq44GL44GT44GYLOOBn+OBpOOChA0KK+OBquOBi+OCgOOCiSzjgojjgYbjgYTjgaENCivjgarjgYvjgoTjgb4s44Gf44GL44GXDQor44Gr44KA44KJLOOBmeOBmeOCgA0KK+OChOOBmOOBvizjgojjgZfjgYgNCivjga7jgb4s44Go44KI44G/DQor44Gs44GN44GELOOBi+OBpOOBvw0KK+OBiuOBjOOBleOCj+OCiSzjgZfjgoXjgYbjgZgNCivjgYrjgYrjgZXjgo8s44Gy44Gn44Gf44GLDQor44G+44Gk44Gq44GMLOOCiOOBl+OBguOBjQ0KK+OBiuOBi+OCguOBqCzjgbLjgo3jgobjgY0NCivjgYrjgZXjgaAs44KA44Gk44G/DQor44GV44GE44Go44GGLOOBguOBjeOBsuOCjQ0KK+OBleOBj+OCieOBhCzjgZfjgZLjga7jgooNCivjgZXjgajjgYYs44KI44GX44Gu44KKDQor44Gb44GW44GELOOBi+OBmuOChOOBmQ0KK+OBl+OBv+OBmizjgYLjgY3jgajjgZcNCivjgZfjgofjgYbjgb/jgaQs44KI44GX44Gy44KNDQor44GZ44GO44GV44KPLOOBruOBtuOChuOBjQ0KK+OBmeOBmuOBjSzjgobjgYbjgZgNCivjgZnjgZrjgY0s44KG44GG44GTDQor44Gf44GL44Gv44GXLOOBn+OBi+OChuOBjQ0KK+OBn+OBi+OBleOBiyzjga/jgZjjgoENCivjgbXjgZjjgYQs44GC44Gk44GTDQor44Gf44G+44GNLOOBleOBqOOBkw0KK+OBn+OBqyzjgYvjgZrjgbLjgZMNCivjgajjgY3jgZ7jga4s44GX44GS44GKDQor44Go44KK44GW44KPLOOBiOOBvw0KK+OBpOOCi+OBi+OCjyzjgYjjgYTjgZgNCivjgYbjgaAs44Gy44GV44KI44GXDQor44GG44KB44KA44KJLOOBjeOBv+OBsuOCjQ0KK+OCj+OBn+OCiizjgoTjgZnjgojjgZcNCivjgoTjgb7jgoLjgags44Gm44Gk44KEDQor44KE44G+44KC44GoLOOBvuOBleOCiOOBlw0KK+OChOOBrizjgobjgY3jgYoNCivjgojjgaAs44GE44GV44GKDQor44KE44G+44GQ44GhLOOBi+OBmuOCiOOBlw0KK+OBuyzjgYLjgY3jgokNCivjgb7jgaTjgb/jgoQs44KG44GG44GE44GhDQor44GV44KP44GgLOOBsuOCjeOBlw0KK+OBk+OBr+OCiSzjgb7jgZXjga7jgooNCivjgZXjgYTjgajjgYYs44G/44Gk44KLDQor44KE44GuLOOBv+OBpOOBig0KK+OBteOBmOOCguOCiizjga7jgorjgZMNCivjgoTjgb7jgZDjgaEs44KE44GZ44Gy44KNDQor44KE44G+44GgLOOBn+OBi+OBlw0KK+OBteOBmOOBnyzjgajjgZfjgY0NCivjgY3jgoDjgoks44Gf44GR44GKDQor44Gv44KE44GXLOOBvuOBleOBsuOCjQ0KK+OBvuOBiOOBluOCjyzjgYTjgZrjgb8NCivjgZfjgbbjgYvjgo8s44GN44KI44Gy44GVDQor44G/44G7LOOBvuOBleOBruOCig0KK+OBmeOBjuOChOOBvizjgZfjgpPjgYTjgaENCivjgbXjgovjgYvjgo8s44KI44GX44G144G/DQor44Gu44Gh44GbLOOBi+OBmuOBsuOBkw0KK+OBvuOBpOOCguOBqCzjgbLjgafjgYLjgY0NCivjgYrjgY/jga4s44KG44GN44GKDQor44KE44G+44GW44GNLOOChOOBmeOBsuOCjQ0KK+OBhOOBl+OBkizjgYLjgY3jgZMNCivjgb/jgYbjgoks44KK44KF44GG44Ge44GGDQor44Gw44GwLOOBn+OBj+OChA0KK+OCguOBoeOBmuOBjSzjgYjjgb/jgZMNCivjgajjgY/jgarjgYws44G144G/44Gy44GoDQor44GP44KN44GL44KPLOOBsuOCjeOBlw0KK+OBhOOBkeOBrizjgoHjgZDjgb8NCivjgoTjgb7jgYvjgZIs44KI44GG44GYDQor44KE44GO44Gv44GXLOOBl+OCheOBhuOBhOOBoQ0KK+OBjeOCiOOBv+OBpCzjgZHjgpPjgZgNCivjgoDjgonjgoTjgb4s44GI44GE44GY44KFDQor44GK44GK44Gk44GLLOOBsuOBp+OBsuOBkw0KK+OBiuOChOOBvuOBoCzjgZ/jgYvjgZcNCivjgYLjgZLjgZ8s44GY44KF44KT44GE44GhDQor44GC44KC44GGLOOBguOBjeOBig0KK+OBguOCieOBi+OCjyzjgbLjgafjgZcNCivjgbDjgpPjga4s44G+44GV44GN44KIDQor44GI44GV44GNLOOBl+OCk+OBhOOBoQ0KK+OBteOBi+OBluOCjyzjgajjgoLjgbLjgagNCivjgbXjgarjgbDjgZcs44G+44GV44KG44GNDQor44Gv44Gq44GgLOOBi+OBpOOBruOCig0KK+OBr+OBl+OCguOBqCzjgYjjgb/jgZMNCivjgbLjgZjjgY/jgo0s44Gq44GK44KG44GNDQor44G744GG44KELOOBi+OBmuOBsuOBkw0KK+OBu+OBneOBoCzjgaHjgYjjgb8NCivjgYTjgZHjgZbjgo8s44Gu44G244KE44GZDQor44GE44Gs44Gk44GLLOOBquOBiuOBjQ0KK+OBi+OBmOOBn+OBqyzjgYrjgZXjgoANCivjgYTjgajjgYYs44Gh44GP44GVDQor44GE44KP44GX44GfLOOBl+OBkw0KK+OBi+OBv+OChCzjgY/jgavjgYLjgY0NCivjgYvjgZnjgoQs44GC44GN44KJDQor44GL44KP44Gw44GfLOOBoOOBhA0KK+OBi+OCj+OBj+OBvCzjgYvjgZrjgajjgZcNCivjgY3jgbDjgZcs44Gy44Gn44Gy44GTDQor44GN44KK44GV44KPLOOBhOOBoeOCjeOBhg0KK+OBk+OBoOOBvizjgYrjgZXjgoANCivjgajjgYbjganjgYYs44GT44GG44GYDQor44GT44KE44GE44GXLOOBv+OBiw0KK+OBj+OCieOBnyzjgZPjgZnjgZENCivjgY/jgo/jga4s44Gy44KN44Gf44GLDQor44G+44GZ44GgLOOBmOOCheOCkw0KK+OBvuOBpOOBl+OBnyzjgZ/jgaDjgZcNCivjgb/jgoTjgZEs44GC44Gk44GXDQor44G/44KI44GgLOOBn+OBi+OBsuOBlQ0KK+OBv+OBmuOBn+OBqyzjgaTjgojjgZcNCivjgoLjgorjgo/jgY0s44GX44KT44GE44Gh44KN44GGDQor44KA44Go44GGLOOBi+OBpOOBjQ0KK+OBquOBjOOCjyzjgZfjgpPjgYTjgaENCivjgarjgYvjgZfjgb4s44Gy44GV44KI44GXDQor44Gr44GX44GgLOOBsuOCjeOCiOOBlw0KK+OBq+OBl+OBiizjgb7jgZXjgagNCivjga7jgoDjgoks44Gm44Gk44KEDQor44GK44Gg44GK44GK44Gv44KJLOOBl+OCk+OBlA0KK+OBiuOBiuOBsuOCiSzjgYTjgaHjgo3jgYYNCivjgYrjgYrjgazjgb4s44Gq44KL44GXDQor44GK44GK44KE44GOLOOBvuOBleOBsuOCjQ0KK+OBiuOBi+OBrSzjgZ/jgYvjgZcNCivjgYrjgY/jga4s44GL44Gk44GXDQor44GV44GE44Go44GGLOOCiOOBl+OBvw0KK+OBleOBi+OBhuOBiCzjgoTjgZnjgobjgY0NCivjgZXjgajjgYYs44Gf44GR44GXDQor44Gb44GN44KC44GoLOOBqOOBl+OChuOBjQ0KK+OBl+OBhOOBqizjgbXjgb/jga/jgosNCivjgZfjgb/jgZos44Gy44Gn44Go44GXDQor44GX44KJ44GV44GNLOOCiOOBhuOBkw0KK+OBmeOBqeOBhizjgZXjgajjgZMNCivjgZnjgZrjgY0s44Gy44KN44GXDQor44G744Gd44GL44KPLOOChuOCig0KK+OChOOBvuOBluOBjSzjgarjgYrjgY0NCivjgZ/jgYvjgZks44GL44Ga44KIDQor44Gf44GR44GgLOOBsuOCjeOChuOBjQ0KK+OBn+OBvuOBn+OBqyzjgYvjgZrjgYLjgY0NCivjgZ/jgavjgoLjgags44GX44KT44GE44GhDQor44Go44G/44Gq44GMLOOBsuOCjeOBsuOBlQ0KK+OBpOOBi+OBoCzjgbLjgafjgY0NCivjgYbjgonjgYvjgo8s44KG44GG44GYDQor44KP44Gf44KKLOOBk+OBhuOBmA0KK+OChOOBvuOCguOBqCzjgYLjgaTjgZcNCivjgoTjgb7jgZfjgZ8s44Go44GX44Gy44GnDQor44KE44GW44GNLOOBn+OBkeOBlw0KK+OCiOOBk+OBnyzjgobjgYbjgZMNCivjgojjgZfjgYvjgo8s44G/44Gk44Gy44KNDQor44GC44GV44GuLOOBv+OBoeOBkw0KK+OBiuOBj+OBoCzjgbLjgZXjgZMNCivjgYTjgarjgaAs44G+44GV44Gk44GqDQor44GX44KC44GL44KPLOOBteOBv+OBsuOBkw0KK+OBpOOBvOOBnyzjga7jgorjgYoNCivjgYrjgYrjgY/jgbws44Gf44GR44GXDQor44GV44GE44Go44GGLOOBl+OCheOBhuOBhOOBoQ0KK+OBteOBmOOBnyzjgaTjga3jgYoNCivjgb7jgY3jgoDjgoks44Gf44GR44GKDQor44Gr44Gu44G/44KELOOBi+OBmuOBig0KK+OBn+OBsOOBnyzjgojjgZfjgZ/jgYsNCivjgoDjgonjgYvjgb8s44Gy44KN44GNDQor44GE44G+44Gr44GXLOOBn+OBkeOBig0KK+OBn+OBjeOBjOOCjyzjgZfjgZLjgojjgZcNCivjgYrjgpPjgZrjgYss44Gy44KN44GXDQor44Go44Gu44GL44KPLOOBn+OBkeOBlw0KK+OBhOOBkeOBoCzjgajjgY3jgYoNCivjgZTjgajjgYYs44GL44Ga44KEDQor44Gd44GgLOOBkeOCk+OBmA0KK+OCguOCiuOBnyzjgb7jgZXjgobjgY0NCivjgZ/jgpPjga4s44GI44GE44GE44GhDQor44GU44GG44GgLOOBjeOCh+OBhuOBkw0KK+OChOOBvuOBkOOBoSzjgbLjgo3jgYvjgZoNCivjgYrjgZXjgarjgYQs44GC44Gk44GXDQor44Gy44GM44GXLOOBl+OCh+OBhuOBkw0KK+OChOOBvuOCguOBqCzjgbLjgafjgYLjgY0NCivjgZXjgajjgYYs44Gf44GL44GKDQor44G/44Ge44GQ44GhLOOBqOOBl+OChuOBjQ0KK+OBjeOBn+OBjOOCjyzjgbLjgo3jgZcNCivjgYrjgYrjgavjgZcs44Gd44GG44GE44GhDQor44GC44GE44Gv44KJLOOBsuOBp+OBig0KK+OBguOBjeOBsCzjgaTjgajjgoANCivjgYLjgb7jga4s44Go44GK44KLDQor44GC44GK44KE44GOLOOBn+OBi+OBig0KK+OBguOCiSzjgYLjgY3jgYoNCivjgYLjgZXjga4s44KI44GX44Gy44KNDQor44Gw44KTLOOBk+OBhuOBn+OCjeOBhg0KK+OBiOOBs+OBrOOBvizjgYLjgZHjgb8NCivjgbXjgZjjgYjjgaAs44GY44KF44KTDQor44G144GY44GELOOBl+OBkuOBruOCig0KK+OBiuOBkOOCiSzjgYLjgoTjgZMNCivjgbXjgYvjgYos44G/44Gk44Gy44KNDQor44G144GP44GgLOOBv+OBiw0KK+OBteOBj+OBiuOBiyzjgZfjgpPjgZQNCivjgZTjgYbjgaAs44KI44KK44GTDQor44Gv44GO44KP44KJLOOBjeOBj+OBig0KK+OBr+OBquOBv+OBpCzjgojjgZfjgZ/jgYsNCivjga/jgoks44G/44KG44GNDQor44Gv44Gk44GX44G+LOOBkeOCkw0KK+OBr+OBo+OBqOOCiizjgojjgZfjga7jgooNCivjga/jgoTjgZcs44GL44Gk44G/DQor44Gy44Gq44GfLOOBmOOCheOCkw0KK+OBsuOCieOBleOCjyzjgYvjgZrjgbLjgo0NCivjgbLjgo3jgZss44Gy44GV44KG44GNDQor44GZ44GO44KC44GoLOOBm+OBhOOBhOOBoQ0KK+OBu+OCiizjgYvjgZrjgYoNCivjgbvjgZ0s44GL44Ga44G/DQor44GE44Gn44GELOOBvuOBleOBi+OBmg0KK+OBhOOBhOOCgOOCiSzjgojjgZfjga7jgbYNCivjgYTjgZHjgaAs44GP44Gr44Gy44KNDQor44GE44G+44GELOOBn+OBoOOBlw0KK+OBhOOBruOBhuOBiCzjgbLjgo3jgZ/jgYsNCivjgYTjgZfjgZDjgo0s44Gy44KN44GXDQor44GE44GX44GL44KPLOOCiOOBhuOBkw0KK+OBhOOBl+OCj+OBnyzjgarjgYrjgbLjgZUNCivjgYTjgajjgYYs44Gm44Gk44KEDQor44GE44Go44GGLOOBn+OBi+OBlw0KK+OBhOOCj+OBj+OBvCzjgZ/jgYvjgobjgY0NCivjgYTjgo/jgZXjgY0s44Gf44Gk44Gy44GTDQor44GL44GM44G/LOOBl+OBkuOCiOOBlw0KK+OBi+OBvuOCguOBqCzjgZ/jgYjjgZMNCivjgYvjgb8s44G+44GT44GoDQor44GL44Gq44GW44KPLOOBleOBoOOBhOOBoQ0KK+OBi+OBreOBkyzjgoTjgYgNCivjgYvjgZfjgo/jgY4s44Gy44KN44GXDQor44GL44Gf44GK44GLLOOBguOBpOOBlw0KK+OBlOOBqOOBhizjgbLjgo3jgYvjgZoNCivjgYvjgo/jga/jgoks44Gy44KN44GC44GNDQor44GL44KP44GN44GfLOOChOOBmeOBkw0KK+OBjeOBoCzjgojjgZfjgbXjgb8NCivjgY3jgoDjgoks44G/44Gu44KLDQor44GK44GL44GW44GNLOOBn+OBkeOBig0KK+OBjeOBn+OCgOOCiSzjgYLjgY3jgYoNCivjgZPjgbDjgoTjgZcs44G/44KI44GTDQor44Gy44KN44GbLOOBr+OCi+OBig0KK+OBk+OBleOBiyzjgojjgZfjgobjgY0NCivjgZPjgY/jgb7jgYQs44G/44GI44GTDQor44GT44KC44GK44GLLOOBteOBv+OBig0KK+OBk+OCk+OBqeOBhizjgZ/jgaTjgagNCivjgY/jgbws44Gf44GL44KG44GNDQor44GP44G+44KC44GoLOOBguOBjeOBsuOBkw0KK+OBj+OCiuOChOOBvizjgobjgY3jgYgNCivjgY/jgZfjgaAs44KP44Gf44KLDQor44G+44GI44GL44KPLOOBsuOBp+OBn+OBiw0KK+OBvuOBmeOBoCzjgb/jgY3jgYoNCivjgb7jgaTjgaAs44GX44GS44GKDQor44GL44Gu44GGLOOBsuOCjeOChuOBjQ0KK+OBvuOBpOOBquOBvyzjgbLjgo3jgobjgY0NCivjgb7jgaTjgZbjgY0s44Gf44Gg44GXDQor44G/44KC44KKLOOBsuOCjeOBlw0KK+OBv+OBhuOCiSzjgojjgYbjgYTjgaENCivjgb/jgoTjga/jgZcs44GN44KH44GG44GTDQor44G/44KE44Gf44GRLOOBl+OBkuOBvw0KK+OBv+OBmuOBk+OBlyzjgajjgZfjgYoNCivjgoLjgorjgY0s44KE44GZ44Gy44KNDQor44KC44KKLOOBleOBqOOCiw0KK+OCgOOBi+OBhCzjgZ/jgaTjgb8NCivjgoDjgonjgZ8s44GV44Go44GXDQor44KA44Gk44GX44GLLOOBiOOBhOOBhOOBoQ0KK+OBquOBjOOBleOCjyzjgYvjgZrjgagNCivjgarjgYzjgYgs44Gf44GL44KG44GNDQor44Gq44GL44GY44G+LOOBi+OBpOOBqOOCgg0KK+OBquOBi+OBvuOBnyzjga7jgorjgbLjgo0NCivjgarjgYvjgoDjgoks44Gv44GY44KBDQor44GK44GK44Gr44GXLOOBvuOBleOBruOCig0KK+OBquOBi+OBrizjgoLjgYjjgZMNCivjgarjgYvjgZ8s44GX44GS44GTDQor44Gq44GL44KE44G+LOOBi+OBpOOBsuOBkw0KK+OBquOBpOOChOOBvizjgobjgYbjgZMNCivjgoLjgoos44KG44GN44GTDQor44Gr44KPLOOBvuOBleOBjQ0KK+OBruOBvizjgZXjgajjgZcNCivjga7jgorjgYvjga0s44G+44GV44KLDQor44GK44Gg44GtLOOCiOOBl+OBi+OBmg0KK+OBiuOBiuOBsOOChOOBlyzjgoTjgZnjgobjgY0NCivjgYrjgY0s44KI44GX44KG44GNDQor44GK44KJ44GELOOBmeOBmeOCgA0KK+OBiuOBiuOBqOOCgizjgYLjgY3jgYoNCivjgYrjgbLjgoMs44GP44Gr44Gy44GTDQor44GK44GL44KC44GoLOOCiOOBl+OBig0KK+OBhuOBiOOBoCzjgajjgojjgYvjgZoNCivjgavjgZcs44GC44Gk44GNDQor44Gf44GgLOOBn+OBi+OChuOBjQ0KK+OChOOBvuOBl+OBnyzjgZHjgpPjgZgNCivjgZXjgZXjgoLjgoos44KG44Gf44GLDQor44Gv44Gb44GM44KPLOOBqOOCguOChuOBjQ0KK+OBhOOBvuOBhCzjgb/jgobjgY0NCivjgojjgZPjgoTjgb4s44GR44KT44GYDQor44GZ44GO44KE44G+LOOCiOOBl+OBvuOBlQ0KK+OBguOCieOBhCzjgajjgoLjgZMNCivjgYLjgb7jgYzjgoQs44KG44KB44GuDQor44Gk44KLLOOBv+OBruOCiw0KK+OChOOBhOOBnyzjgb7jgY0NCivjgZvjgY0s44G+44KKDQor44Gv44KJLOOCiOOBl+OBruOCig0KK+OBv+OBhuOCiSzjgZnjgZnjgoANCivjgZXjgZUs44KG44GN44GTDQor44Gf44GL44GV44GNLOOBvuOBjeOBkw0KK+OBr+OCieOBoCzjgYjjgb/jgZMNCivjgY/jgonjgZ8s44KE44GZ44Gy44KNDQor44GC44GS44G+44GkLOOBsuOCjeOBv+OBoQ0KK+OBteOBj+OCguOBqCzjgb/jgY3jgYoNCivjgYrjgY/jgoDjgoks44Gg44GEDQor44GK44Gd44GI44GM44KPLOOChOOBmeOBquOCig0KK+OBleOBhOOBnyzjgb7jgZXjgbLjgo0NCivjgZXjgYvjgYQs44Gy44KN44G/DQor44GV44GL44KKLOOBruOBtuOBsuOCjQ0KK+OBleOBrizjgobjgZ/jgYsNCivjgZXjgajjgYYs44KI44GX44Gy44GTDQor44GV44Go44GGLOOBguOBjeOBig0KK+OBleOBqOOBhizjgZXjgajjgZcNCivjgZvjgY3jgYvjgo8s44GC44GN44KJDQor44Gb44GX44KCLOOBk+OBhuOBmA0KK+OBl+OBtuOChCzjgb7jgZXjga7jgooNCivjgZfjgb7jgoLjgoos44G+44GV44Gy44GTDQor44GX44KC44GgLOOBkeOBhOOBv+OCkw0KK+OBl+OCk+OBn+OBqyzjgobjgYbjgZgNCivjgZfjgonjgYQs44GX44GS44GNDQor44GX44KF44GGLOOBlOOBhOOBoQ0KK+OBmeOBoCzjgarjgYrjgY0NCivjgZnjgY7jgZ8s44KG44GG44GE44Gh44KNDQor44GZ44GW44GNLOOBpuOBpOOChA0KK+OBmeOBmuOBjSzjgajjgZfjgoQNCivjgZnjgZrjgY0s44Gu44KK44KG44GNDQor44Gf44GM44GELOOChOOBmeOBlw0KK+OBn+OBi+OBjizjgZHjgpPjgZ/jgo3jgYYNCivjgZ/jgYvjga/jgZcs44G+44GV44GTDQor44Gf44GL44GE44GXLOOBqOOCguOBguOBjQ0KK+OBn+OBi+OBiuOBiyzjgZ/jgYvjgY0NCivjgZ/jgYvjgoTjgb4s44GX44KT44GE44GhDQor44Gf44GR44KC44GoLOOBruOBnuOBvw0KK+OBn+OBvuOBoSzjgbLjgo3jgZcNCivjgZ/jgarjgYss44Gy44KN44G144G/DQor44Gf44GrLOOBsuOCjeOBtuOBvw0KK+OBpuOCieOBleOBjSzjgbLjgo3jgobjgY0NCivjgZXjgY/jgonjgY4s44Gu44KK44Gy44GVDQor44Go44KI44GV44GoLOOBsuOCjeOBlw0KK+OBpOOBmOOCguOBqCzjgobjgY3jgYoNCivjgaTjgovjgZ8s44GX44Gu44G2DQor44GG44Gh44KE44G+LOOBn+OBkeOBlw0KK+OBjeOBjeOCh+OBhizjgojjgZfjgZ/jgYsNCivjgYbjgYjjga4s44KI44GX44GTDQor44Gq44GM44GfLOOBruOCiuOBkw0KK+OCj+OBoCzjgZfjgZrjgYoNCivjgYTjgajjgYQs44KI44GX44Gy44GVDQor44KP44Gf44Gq44G5LOOBsuOBp+OBqOOBlw0KK+OChOOBtuOBhuOBoSzjgZfjgofjgYbjgbjjgYQNCivjgoTjgb7jgaAs44GC44GN44GKDQor44KE44G+44KC44GoLOOBguOBjeOBsuOCjQ0KK+OChOOBvuOCguOBqCzjgb7jgZXjgajjgZcNCivjgoTjgb7jgZfjgZ8s44Gk44Go44KADQor44KE44G+44GX44GfLOOBguOBjeOCiQ0KK+OChOOBrizjgajjgoLjgobjgY0NCivjgojjgZPjgZ8s44G/44Gq44GTDQor44KI44Gt44KA44KJLOOBn+OBoOOBlw0KK+OCiOOBl+OCgOOCiSzjgbLjgo3jgb8NCivjgb7jgaTjgaAs44KI44GX44Gk44GQDQor44G744Gd44KELOOBl+OCh+OBhuOBmA0KK+OBv+OChOOBl+OBnyzjgZfjgZLjgajjgoINCivjgZfjgYws44G+44GV44G/44GkDQor44KE44G+44GgLOOChuOBhuOBhOOBoQ0KK+OBr+OChOOBlyzjgZXjgbvjgooNCivjgYTjgZHjgaAs44Gk44KI44GXDQor44GG44GI44GuLOOBi+OBmuOBn+OBiw0KK+OBleOBhOOBqOOBhizjgabjgovjgojjgZcNCivjgarjgYzjgoTjgZks44GT44GG44GYDQor44Gv44GO44GKLOOBqOOCguOBsuOBkw0KK+OBr+OBvuOBoCzjgb7jgZXjgZgNCivjgoDjgonjgYvjgb8s44Gu44KK44Gy44KNDQor44GC44G5LOOBl+OCheOCk+OBmA0KK+OBguOBjeOChOOBvizjgajjgZfjgobjgY0NCivjgYLjgpPjganjgYYs44Gm44KT44Gb44GEDQor44GC44KJ44GNLOOBl+OBkuOBv+OBpA0KK+OBguOBnSzjgY/jgavjgYvjgZoNCivjgbDjgbAs44KG44GG44GZ44GRDQor44GI44Gz44GV44KPLOOBsuOCjeOBlw0KK+OBteOBmOOBhCzjgojjgZfjga7jgooNCivjgbXjgZjjgYQs44Gf44Gk44KEDQor44G144GY44GfLOOBsuOCjeOBlw0KK+OBteOBmOOCj+OCiSzjgbLjgo3jgoANCivjgbXjgY/jgaAs44GY44KF44KTDQor44G144GP44GK44GLLOOBhOOBleOBig0KK+OBteOCi+OChCzjgajjgZfjgobjgY0NCivjgYzjgaks44Gy44GV44GXDQor44Gv44GMLOOBguOBpOOBlw0KK+OBr+OBvuOBl+OBvizjgobjgb8NCivjga/jgZss44KG44Gf44GLDQor44Gv44GX44Ga44KBLOOBquOBiuOBjQ0KK+OBpOOBoCzjgbLjgo3jgZMNCivjga/jgoTjgZcs44Go44GX44KN44GGDQor44Gy44KJ44GELOOChuOBhuOBhOOBoQ0KK+OBsuOCieOBleOBiyzjgbLjgo3jgobjgY0NCivjgbLjgo3jgo/jgZ/jgoos44Gf44GL44Gy44KNDQor44GZ44Ga44GNLOOBsuOBp+OBjQ0KK+OBu+OBneOBvyzjgbLjgo3jgYLjgY0NCivjgYTjgaAs44Gh44Gv44KLDQor44GE44GM44KJ44GXLOOChuOBjeOChA0KK+OBhOOBhOOBmOOBvizjgZ/jgZHjgZcNCivjgYTjgb7jgoDjgoks44GT44GG44GE44GhDQor44GE44KM44GELOOBvuOBleOCiw0KK+OBhOOBl+OBhCzjgajjgoLjgobjgY0NCivjgYTjgZ3jga4s44G/44Gk44Go44GXDQor44GE44Go44GGLOOCiOOBl+OBvuOBlQ0KK+OBhOOCj+OBlSzjgajjgZfjgb8NCivjgYTjgZrjgb/jgZXjgo8s44Gb44GE44GYDQor44GL44GE44GgLOOBk+OBhuOBmA0KK+OBi+OBvuOBnyzjgajjgZfjgYgNCivjgYvjgpPjgbks44Gf44GL44Gy44KNDQor44GL44Gt44GTLOOBguOBjeOCiQ0KK+OCiOOBreOCguOBoSzjgarjgYrjgZcNCivjgYvjgZ/jgYrjgYss44GL44Ga44Gy44GTDQor44GL44Go44GGLOOChOOBmeOBsuOCjQ0KK+OBi+OBqOOBhizjgobjgYbjgZgNCivjgZ/jgb7jgYzjgo8s44GT44GG44GE44Gh44KN44GGDQor44Gq44KL44GRLOOBn+OBi+OBlw0KK+OBjeOBqSzjgZ/jgYvjgbXjgb8NCivjgY3jgY/jgoks44GL44Gk44G/DQor44GN44KA44KJLOOBvuOBleOBjQ0KK+OBjeOBruOBl+OBnyzjgoTjgZnjgbLjgo0NCivjgY3jgZ/jgYLjgY0s44Gy44KN44KG44GNDQor44GT44Gw44KE44GXLOOBi+OBmuOBsuOCjQ0KK+OBk+OBsOOChOOBlyzjgajjgZfjgY0NCivjgZPjgpPjga4s44KI44GGDQor44GT44G/44KE44G+LOOCiOOBl+OBsuOCjQ0KK+OBk+OBq+OBlyzjgYLjgY3jga7jgooNCivjgZPjgoTjgb4s44Gy44KN44G/DQor44GP44Gp44GGLOOBmOOCheOCkw0KK+OBj+OCiuOChCzjgobjgYbjgYTjgaENCivjgojjgZfjgaAs44GV44Go44KLDQor44G+44GN44GuLOOBqOOBl+OBig0KK+OBvuOBleOBjSzjgbLjgafjgogNCivjgb7jgaTjgYQs44KE44GZ44Gy44KNDQor44G+44Gk44KC44GoLOOBn+OBkeOBlw0KK+OBvuOBpOOChOOBvizjgZjjgoXjgpMNCivjgb/jgZ/jgoDjgoks44GY44KF44KTDQor44G/44KP44GfLOOBquOBiuOBjQ0KK+OBv+OChOOCguOBqCzjgbLjgajjgb8NCivjgoLjgaHjgZrjgY0s44GX44KF44GG44GE44GhDQor44KC44KKLOOBvuOBleOChuOBjQ0KK+OBvuOBpOOBoCzjgZHjgpPjgZgNCivjgoLjgorjgo/jgY0s44Gu44G244KG44GNDQor44KA44KJ44GL44G/LOOBn+OBkeOBig0KK+OCgOOCieOChOOBvizjgZXjgajjgZcNCivjgarjgYzjgZfjgb4s44G/44Gh44Gu44KKDQor44GG44Gh44Ge44GuLOOBn+OBi+OBlw0KK+OBquOBi+OBmOOBvizjgbLjgo3jgYLjgY0NCivjgarjgYvjgoDjgoks44Gy44KN44GXDQor44Gq44GL44KA44KJLOOCiOOBl+OBsuOBkw0KK+OBquOBi+OBl+OBvizjga7jgorjgYoNCivjgarjgonjga/jgoks44GV44Go44GXDQor44Gr44GX44G2LOOBguOChOOBkw0KK+OBq+OBl+OCguOBqCzjgarjgYrjgZMNCivjgavjgZfjgZbjgo8s44Gg44GE44GZ44GRDQor44Gu44GY44G+LOOBruOCiuOBig0KK+OBrOOCjyzjgZ/jgZHjgZcNCivjgYrjgYzjgo8s44GR44KT44GE44GhDQor44GK44GK44GM44GNLOOBi+OBmuOBsuOCjQ0KK+OBiuOBjSzjgb7jgZXjgbLjgZMNCivjgYrjgYrjgoLjgoos44Gy44KN44GC44GNDQor44GK44GK44Gs44G+LOOBvuOBleOBig0KK+OBiuOBiuOBn+OBkSzjgZXjgYjjgZMNCivjgZXjgZPjgaAs44GX44KF44GG44GE44GhDQor44GK44GL44GgLOOBpuOBpOOBmA0KK+OBiuOBjeOBnyzjgZXjgajjgZMNCivjgYrjgYrjga4s44Gf44GL44GXDQor44GK44KK44GELOOBl+OCheOCk+OBmA0KK+OBiuOBluOCjyzjgoTjgZnjgbLjgo0NCivjgZXjgYTjgajjgYYs44GR44GE44GYDQor44GV44GL44KC44GoLOOCiOOBl+OBig0KK+OBleOBi+OBnyzjgb7jgZXjgbLjgo0NCivjgZXjgarjgY4s44KI44GX44GNDQor44GV44GV44GNLOOBquOBjOOBvuOBlQ0KK+OBleOBqOOBhizjgb7jgoLjgosNCivjgZXjgajjgYYs44Gy44Gn44GNDQor44Gb44GN44GuLOOBruOCiuOBsuOCjQ0KK+OBl+OBvuOBoCzjgYLjgaTjgZcNCivjgZfjgb/jgZos44Gf44GL44GC44GNDQor44GX44KC44GgLOOBsuOCjeOChuOBjQ0KK+OBl+OBruOBluOBjSzjgYLjgaTjgZcNCivjgZfjgofjgYbjgaAs44GR44KT44GYDQor44GZ44GM44GuLOOBsuOCjeOChuOBjQ0KK+OBmeOBjuOBleOBjSzjgojjgYbjgZMNCivjgZnjgY7jgoTjgb4s44Gf44GR44GXDQor44GZ44Ga44GNLOOBsuOBp+OChuOBjQ0KK+OBmeOBmuOBjSzjgb7jgZXjga7jgooNCivjgZ/jgZDjgaEs44GX44KTDQor44Gf44GL44Gv44GXLOOBi+OBmuOBruOCig0KK+OBn+OBi+OBr+OBlyzjgYrjgZXjgoANCivjgZ/jgYvjga/jgZcs44Gy44Gn44GNDQor44Gf44GL44KE44Gq44GOLOOBl+OBkuOCiw0KK+OBn+OBkeOBhCzjga7jgbbjgYoNCivjgZ/jgZHjgZfjgb4s44GL44Gk44GX44KN44GGDQor44Gf44KA44KJLOOBl+OCh+OBhuOBhOOBoQ0KK+OBn+OBquOBiyzjgoTjgZnjgZgNCivjgZXjga4s44Gy44KN44G144G/DQor44Gm44KJ44G+44GILOOBvuOBjQ0KK+OBqOOBkOOBoSzjgZ/jgZHjgZcNCivjgajjgb/jgYQs44G+44GV44Gy44KNDQor44Go44Gj44Go44KKLOOBguOBjeOBsuOBkw0KK+OBpOOBmCzjgb7jgZXjgbLjgZMNCivjgaTjgY3jgZbjgo8s44GT44GG44GYDQor44Gk44KL44GfLOOBruOCiuOBkw0KK+OBhuOBoeOBoCzjgZfjgofjgYbjgZMNCivjgYbjgYjjgaAs44KI44GG44GZ44GRDQor44GG44GI44GuLOOBmOOCheOCk+OBmA0KK+OBiOOBjOOBl+OCiSzjgZ/jgaDjgZcNCivjgY3jgZ/jgo/jgY0s44Gb44GE44GNDQor44KP44Gf44Gq44G5LOOBn+OBi+OBlw0KK+OCj+OBn+OBquOBuSzjgbLjgo3jgobjgY0NCivjgo/jgZ/jgonjgYQs44GY44KN44GGDQor44KE44G+44GgLOOBguOBpOOBlw0KK+OBteOBmOOBnyzjgb7jgZXjgajjgZcNCivjgoTjgb7jgoLjgags44KE44GZ44GXDQor44KE44G+44GtLOOBv+OBoeOCiw0KK+OChOOBvuOBl+OBnyzjgZfjgZLjgb8NCivjgoTjgb7jgZbjgY0s44Gf44Gg44GXDQor44KI44GgLOOBl+OCheOCk+OBmeOBkQ0KK+OCiOOBl+OBoCzjgYvjgZrjgojjgZcNCivjgojjgZfjgoDjgoks44GV44Go44KLDQor44GK44GW44KPLOOBi+OBpOOChuOBjQ0KK+OChOOBvuOBoCzjgY3jgojjgZcNCivjgZXjgZXjgY0s44Gu44G244KG44GNDQor44GC44Gc44GM44G/LOOBl+OBkuOBi+OBmg0KK+OBteOBj+OBr+OCiSzjga7jgbbjgobjgY0NCivjga/jgZfjgoLjgags44KI44GX44Gy44KNDQor44GE44Gd44GgLOOBk+OBhuOBhOOBoQ0KK+OBi+OBvuOBnyzjgZ/jgaTjgoQNCivjgY3jgoDjgoks44KI44GX44Gy44KNDQor44GT44Gw44KE44GXLOOBkuOCkw0KK+OBj+OBvuOBleOBjSzjgojjgZfjgYLjgY0NCivjgb/jgY/jgass44Go44G/44GKDQor44GI44GgLOOBn+OBi+OBlw0KK+OBreOCguOBqCzjgb7jgZXjgobjgY0NCivjgYrjga4s44Gf44GP44GYDQor44GV44GI44GNLOOBruOCiuOChuOBjQ0KK+OBm+OBjSzjgobjgY3jgYoNCivjgZnjgoTjgb4s44Gy44KN44GTDQor44Gf44Gq44GLLOOBkeOCk+OBlA0KK+OBn+OBluOCjyzjgb/jgY3jgYoNCivjgYjjgpPjgaks44GY44KF44KT44GTDQor44KE44G+44GQ44GhLOOBruOCiuOBig0KK+OChOOBmeOBoCzjgZXjgajjgZcNCivjgZnjgZrjgY0s44Gf44GR44GXDQor44Gy44KN44Gv44GXLOOChOOBmeOBig0KK+OBi+OBqOOBhizjgbLjgo3jgojjgZcNCivjgYbjgYjjga/jgb4s44G/44Gu44KLDQor44G+44Go44GwLOOBoeOBsuOCjQ0KK+OCj+OBn+OBquOBuSzjgajjgYrjgosNCivjgYvjgo/jgZfjgb4s44Gm44Gk44GKDQor44G144GY44GL44GfLOOBv+OBpOOBig0KK+OBk+OBhOOBkSzjgYrjgZXjgoANCivjgZ/jgarjgYss44KK44KH44GG44Ge44GGDQor44Gg44GR44KE44G+LOOBsuOCjeOChuOBjQ0KK+OBj+OBl+OBs+OBjSzjgZnjgZHjgbLjgacNCivjgZnjgYzjga/jgoks44Gm44Gk44GKDQor44Gy44GM44GXLOOBteOBv+OBsuOCjQ0KK+OBu+OBiyzjgZHjgpPjgZ/jgo3jgYYNCivjgYTjgo/jgZ8s44Gf44GL44KG44GNDQor44GZ44GM44KP44KJLOOBvuOBmeOBkw0KK+OBmeOBqCzjgb7jgZXjgb8NCivjgb7jgaTjgZbjgY0s44G+44GV44Gu44KKDQor44GC44GL44G+44KLLOOBiuOBleOCgA0KK+OBguOBueOBi+OCjyzjgozjgYTjgZgNCivjgojjga3jgaAs44G+44GV44GKDQor44Gd44GM44G5LOOChuOBjeOBig0KK+OCj+OBi+OBsOOChOOBlyzjga/jgozjgYoNCivjgZnjgb/jgZ8s44Gm44Gk44KEDQor44GE44Gu44GG44GILOOBn+OBi+OCiOOBlw0KK+OBv+OChOOCguOBqCzjgaTjgajjgoANCivjgbXjgZjjgYvjgo8s44Gq44GK44GoDQor44GV44GE44Go44GGLOOBteOBv+OBig0KK+OBn+OBquOBuSzjgZHjgpPjgZgNCivjgZfjgb/jgZos44Gb44GE44GYDQor44Gu44GQ44GhLOOBl+OBkuOBguOBjQ0KK+OBi+OCj+OBquOBvyzjgb7jgZXjgYLjgY0NCivjgbXjgY/jgZfjgb4s44GC44GN44KJDQor44GK44Gg44KP44KJLOOBv+OBoeOBig0KK+OBiuOBiuOBnyzjgojjgYbjgZgNCivjgYvjgo/jga4s44Gf44Gg44KI44GXDQor44GP44Gr44KG44GNLOOChOOBmeOBsuOCjQ0KK+OBl+OBvuOBoCzjgb/jgaTjgosNCivjgZ/jgYvjgZfjgb4s44G/44Gk44GODQor44Gk44KELOOBvuOBk+OBqA0KK+OBquOBi+OBl+OBvizjgb7jgZXjgYoNCivjgoTjgY7jgZfjgZ8s44Go44GX44GKDQor44GN44GX44KC44GoLOOBvuOBk+OBqA0KK+OBj+OBkizjgZHjgpPjgZgNCivjgYLjgZXjga4s44KI44GX44GC44GNDQor44GL44KP44GL44G/LOOBpOOBreOBig0KK+OBl+OBvuOBoCzjgZfjgoXjgYbjgYTjgaENCivjgbXjgZjjgYQs44GX44KF44KT44GE44GhDQor44Gy44GMLOOBmOOCheOCk+OBjQ0KK+OBn+OBquOBuSzjgYLjgY3jgokNCivjgY/jgonjgoQs44GN44G444GEDQor44Gq44GL44GW44KPLOOBvuOBleOBsuOBqA0KK+OBguOCj+OBnyzjgZfjgZLjgosNCivjgZjjgaAs44GC44GN44GKDQor44G744Gd44GL44KPLOOBqOOBl+OBig0KK+OBl+OBtuOChCzjgojjgZfjgYvjgZoNCivjgZPjgbDjgoTjgZcs44GN44KI44GXDQor44GN44Gf44GM44KPLOOCiOOBl+OBpuOCiw0KK+OBv+OBmuOBn+OBqyzjgYLjgY3jgokNCivjgZ/jgYvjgZss44Go44GX44GKDQor44G/44KE44KA44KJLOOBqOOBiuOCiw0KK+OCiOOBk+OBr+OBnyzjgajjgZfjgbLjgZMNCivjgarjgorjgZ8s44G/44Gk44KI44GXDQor44GC44G5LOOBleOBoOOBsuOCjQ0KK+OBquOBvuOBiCzjgZHjgpPjgZgNCivjgY3jgoDjgoks44KG44Gf44GLDQor44Gq44GU44GXLOOBsuOBp+OBguOBjQ0KK+OBqOOBv+OBquOBiyzjgojjgZfjgYoNCivjgarjgYvjga4s44Gk44KC44KLDQor44GK44GK44GV44GPLOOBi+OBmuOBig0KK+OBr+OChOOBlyzjgZfjgZLjgYLjgY0NCivjgYrjgYrjgZUs44Gf44GL44GXDQor44KE44G+44GG44GhLOOBmA0KK+OBiuOBoCzjgorjgofjgYbjgZgNCivjgoHjgZDjgo0s44Gy44KN44KI44GXDQor44GL44Gq44GV44GNLOOBqOOBv+OBig0KK+OBiuOBi+OBrizjgoTjgZnjgYoNCivjgY/jgZXjgYvjgo8s44Gq44GK44GNDQor44GE44Gu44GG44GILOOBn+OBkeOBlw0KK+OChOOBoCzjgYvjgZrjgYrjgb8NCivjgb7jgaTjgYrjgYss44KG44GN44GKDQor44GZ44Ga44GNLOOChuOBhuOBmA0KK+OBn+OBjeOCguOBqCzjgY/jgavjgYoNCivjgbLjgYzjgZfjgbDjgZ8s44Gy44Gn44GKDQor44GE44GE44GgLOOBkeOCk+OBlw0KK+OBi+OCk+OBrizjgb7jgZXjgbLjgo0NCivjgZ/jgarjgYss44GX44GS44KLDQor44GE44GP44GfLOOChOOBmeOBsuOBlQ0KK+OBleOBrizjgbLjgafjgb7jgZUNCivjgZnjgYzjgo/jgoks44KE44GZ44Gy44KNDQor44Gq44GM44GfLOOChuOBjeOBig0KK+OBhuOCieOBrizjgZXjgajjgZcNCivjgZnjgY7jgoTjgb4s44GL44Gk44KG44GNDQor44GK44GL44G5LOOBteOBv+OBig0KK+OBk+OBhOOBpyzjgZ/jgYvjgZcNCivjgYTjgZfjgZ/jgass44GV44Go44GXDQor44KC44KKLOOBiOOBhOOBmA0KK+OBjeOBn+OCgOOCiSzjgZ/jgYvjgZcNCivjgYTjgo/jgb8s44KE44GZ44GKDQor44G144GL44GgLOOBn+OBi+OBlw0KK+OBhuOBiOOBoCzjgobjgYbjgZgNCivjgbXjgovjgZ/jgass44Gf44GL44G+44GVDQor44Gp44GELOOBn+OBi+OBlw0KK+OBquOBjOOBrizjgajjgZfjga7jgooNCivjgY3jgoDjgoks44GC44GN44KJDQor44GL44Gp44KELOOChuOBhuOBlA0KK+OBiuOBiuOBnyzjgY/jgavjgYoNCivjgZ/jgZHjgYbjgaEs44GR44KT44GE44Gh44KNDQor44Go44GP44KC44GoLOOBn+OBi+OBguOBjQ0KK+OBhOOBqOOBhizjgZfjgbXjgb8NCivjgoTjgb7jgZbjgY0s44Go44GN44GKDQor44GC44GK44GNLOOCiOOBl+OBvw0KK+OBoeOBjuOCiizjgYjjgYTjgZjjgo3jgYYNCivjgojjgZfjgarjgYws44Gh44GL44GIDQor44Gy44KJ44Gw44KE44GXLOOBsuOCjeOBi+OBmg0KK+OBquOBi+OBr+OCiSzjgZHjgpPjgZgNCivjgbLjgo3jgoQs44Gu44KK44Gy44KNDQor44GL44Gq44GELOOBi+OCk+OBm+OBhA0KK+OBqOOBiuOChOOBvizjgZ/jgYvjgZcNCivjgYbjga4s44GN44KT44GUDQor44GX44Gw44GfLOOBqOOBl+OBig0KK+OBjeOBn+OBjOOCjyzjgY3jga/jgaHjgo3jgYYNCivjga/jgonjgaAs44Gy44Gn44KG44GNDQor44KE44G+44KA44KJLOOBkeOCk+OBmA0KK+OBj+OBvuOBvyzjgobjgYbjgZ7jgYYNCivjgYTjgZfjgbDjgZcs44Go44GX44KG44GNDQor44GX44Gw44GfLOOBr+OCi+OBjQ0KK+OBleOBj+OChOOBvizjgYvjgZrjgYoNCivjgYTjgZHjgaAs44Gb44GE44GE44GhDQor44Gf44GR44KC44GoLOOBi+OBmuOBig0KK+OBn+OCguOBqCzjgajjgb/jgYoNCivjgZPjgoDjgo0s44KK44KH44GG44GE44GhDQor44Gf44Gq44GLLOOBvuOBleOBqOOBlw0KK+OBi+OBvuOBoCzjgbLjgo3jgZcNCivjgZ/jgbDjgZ8s44GR44GE44GE44GhDQor44Gy44KJ44GL44GfLOOBi+OBmuOBig0KK+OBn+OBkeOBhuOBoSzjgabjgaTjgYoNCivjgYTjgb7jgZos44KE44GZ44Gf44GgDQor44G144GY44GfLOOBqOOBl+OBv+OBoQ0KK+OChOOBvuOCguOBqCzjgaTjgajjgoANCivjgoTjgb7jgY0s44KG44GG44GYDQor44GX44KJ44GE44GhLOOBvuOBleOCiw0KK+OBleOBleOBjSzjgoDjgaTjgb8NCivjgb/jgoTjgYvjgo8s44G+44GV44Gf44GLDQor44GP44Gp44GGLOOBkeOBhOOBkw0KK+OBguOCieOBvuOBjSzjga7jgbbjgYoNCivjgY3jga/jgoks44Gq44GK44GNDQor44GK44GLLOOBjeOCh+OBhg0KK+OBk+OBq+OBlyzjgZfjgZLjgb8NCivjgZ/jgZHjgYbjgaEs44GV44Gh44GTDQor44Gf44Gq44GLLOOBl+OCk+OBhOOBoeOCjeOBhg0KK+OBleOBi+OCguOBqCzjgb7jgoLjgosNCivjgb7jgaTjgaDjgYTjgoks44GI44GE44GYDQor44GE44GuLOOBn+OBpOOCjeOBhg0KK+OBiuOBsOOBqizjgZfjgZLjgoTjgZkNCivjgYrjgYrjgY/jgo8s44GN44KI44GXDQor44GU44Go44GGLOOBl+OCk+OBmA0KK+OBmeOBmuOBjSzjgY3jgojjgZcNCivjgavjgZfjgYrjgYss44GV44G244KN44GGDQor44GV44GV44GNLOOBsuOBp+OBig0KK+OBr+OCiSzjgYTjgY/jgYoNCivjgZvjgY0s44Gy44KN44GXDQor44GV44GE44Go44GGLOOBsuOBqOOBlw0KK+OBteOBmOOBnyzjgZfjgoXjgpPjgZnjgZENCivjgZXjgYvjgZ8s44GT44GG44GE44GhDQor44G+44GI44GW44GNLOOBhOOBleOBig0KK+OBl+OBiuOBvyzjgb/jgaTjgYoNCivjgZ/jgYvjgY/jgo8s44G+44GV44Gu44G2DQor44GE44GX44Gv44KJLOOBoeOBiOOBkw0KK+OBk+OBj+OBvCzjgZHjgYTjgZMNCivjgb/jgoTjgZbjgY0s44GX44GS44GKDQor44GC44KK44G+LOOBkeOBhOOBkw0KK+OBhuOBoeOChOOBvizjgZ/jgYvjgZcNCivjgarjgZfjgY0s44GL44GK44KLDQor44G144GY44GfLOOChuOBv+OBkw0KK+OBn+OBi+OBjuOCjyzjgYTjgZXjgoANCivjgavjgZfjgaAs44Gy44Go44GXDQor44GN44GP44GhLOOBsuOBp+OBteOBvw0KK+OBquOBi+OBhCzjgb7jgZXjgb8NCivjgYTjgYTjgaAs44KE44GZ44GXDQor44KE44G+44GQ44GhLOOBruOBtuOBsuOCjQ0KK+OChOOBrizjgobjgYbjgYTjgaENCivjgoTjgb7jgoLjgags44Gy44GV44GXDQor44G744KK44KA44GNLOOCiOOBl+OBvg0KK+OBguOBoOOBoSzjgbXjgb/jga7jgooNCivjgYbjgonjga4s44GT44GG44GE44GhDQor44Gf44GR44GgLOOBv+OBoeOBkw0KK+OBleOBhOOBqOOBhizjgbLjgo3jgaTjgZANCivjgZfjgb7jgoDjgoks44GT44GG44GYDQor44G144GP44GgLOOBpOOCiOOBlw0KK+OBjeOCgOOCiSzjgYjjgYTjgZMNCivjgoTjgb7jgoLjgags44GI44KK44GTDQor44GX44GS44KE44GZLOOBiOOBhOOBhOOBoQ0KK+OBi+OBruOBhizjgbLjgo3jgYLjgY0NCivjgZnjgo8s44G144G/44GKDQor44GK44GL44GW44GNLOOBruOCiuOBig0KK+OBteOBi+OChCzjgb7jgZXjgbLjgo0NCivjgZPjgZbjgYQs44G/44Gk44KLDQor44G744Gp44KE44G+LOOBsuOBp+OBig0KK+OBj+OBvOOBnyzjgY3jgojjgZcNCivjgYTjgYTjgZrjgYss44KK44KH44GG44GTDQor44Gf44GL44GOLOOBn+OBkeOBruOCig0KK+OBhOOCj+OBiizjgb7jgZXjgZcNCivjgYTjgZfjgYQs44GE44GV44KADQor44KP44GL44Gw44KE44GXLOOBqOOBl+OBsuOBpw0KK+OBnOOCk+OBkSzjgajjgZfjgYoNCivjgo/jgZ/jgbks44KI44GX44G/DQor44G+44Gk44KC44GoLOOBsuOCjeOBl+OBkg0KK+OBvuOCi+OChOOBvizjgZHjgYTjgZgNCivjgarjgYvjga4s44Gy44Gn44Gu44KKDQor44GK44GK44GP44G8LOOBi+OBmuOBr+OCiw0KK+OBj+OBvOOBnyzjgb7jgZXjgagNCivjgavjgZfjgYvjgo8s44Gy44KN44GXDQor44Gr44Gj44GfLOOBteOBv+OBkw0KK+OBhOOBl+OBoCzjgbLjgafjgbLjgZMNCivjgYvjgb7jgZks44GR44KT44Ge44GGDQor44GL44GS44KE44G+LOOBv+OBruOCiw0KK+OBvuOBpOOCgOOCiSzjgajjgZfjgb/jgaENCivjgZXjgZXjgY0s44GZ44GZ44KADQor44Gy44KJ44GuLOOCiOOBl+OBi+OBmg0KK+OBmeOBmuOBjSzjgYTjgaHjgo3jgYYNCivjgavjgZfjga/jgoks44GR44GEDQor44GP44KN44GE44KPLOOBn+OBi+OBlw0KK+OBn+OBi+OBr+OBlyzjgbLjgo3jgZcNCivjgZ/jgZHjgYbjgaEs44Gy44Gn44GC44GkDQor44GX44G/44GaLOOBguOBjeOBsuOBpw0KK+OBleOBn+OBkSzjgZfjgpPjgZgNCivjgZPjgZ/jgass44Gf44GP44KC44KKDQor44GT44Gn44KJLOOBvuOBleOBqA0KK+OBr+OBvuOBrizjgb/jgaHjgYoNCivjgarjgYvjgoDjgoks44Gy44KN44GXDQor44KG44GC44GVLOOBkeOCk+OBmA0KK+OBiuOBi+OBoCzjgojjgZfjgbLjgo0NCivjgZPjgbDjgoTjgZcs44KI44GX44Gv44KLDQor44G144GP44GgLOOBmOOCheOCk+OBhOOBoQ0KK+OBi+OBv+OCgOOCiSzjgZ/jgYvjgZcNCivjgYTjgb7jgaAs44G+44GV44Gy44KNDQor44Gd44GtLOOBteOBv+OBig0KK+OBv+OBruOBkOOBoSzjgojjgZfjga7jgooNCivjgY/jgaDjgarjgb8s44G+44GV44KG44GNDQor44GE44Gu44GG44GILOOBv+OBqeOCig0KK+OBhuOBiOOCgOOCiSzjga7jgbzjgosNCivjgb/jgYbjgoks44GK44GV44KADQor44GZ44GM44KP44KJLOOBleOBqOOBlw0KK+OCj+OBn+OBquOBuSzjgarjgYrjgobjgY0NCivjgavjgZfjgo/jgY0s44KI44GG44GYDQor44GK44GK44Gf44GrLOOBvuOBleOBguOBjQ0KK+OBj+OCjeOBi+OCjyzjgY3jgojjgZcNCivjgY/jgbzjgZ8s44Gu44G244GKDQor44Gf44KA44KJLOOBsuOCjeOBsuOBkw0KK+OBiOOBs+OBr+OCiSzjgY3jgYTjgaENCivjgarjgYvjgoDjgoks44KI44GG44GTDQor44KE44G+44GtLOOCiOOBl+OBqA0KK+OBguOBleOBvizjgb7jgZXjgbLjgo0NCivjgb/jgYbjgoks44KE44GZ44Gu44G2DQor44GC44KJ44GL44KPLOOBl+OCk+OBmA0KK+OBk+OBmOOBvizjgojjgZfjgYLjgY0NCivjgZXjgYvjgZ8s44GT44GG44G444GEDQor44GT44Gw44KE44GXLOOBiuOBleOBteOBvw0KK+OBiuOBjOOCjyzjgojjgZfjgYoNCivjgYvjgajjgYYs44Gf44GL44KG44GNDQor44G/44Gk44GELOOBkeOBhOOBhOOBoQ0KK+OBpuOBl+OBvizjgYvjgZrjgb7jgZUNCivjgYLjgZ0s44Gy44KN44GE44GhDQor44KC44KK44KELOOBsuOBqOOBlw0KK+OChOOBqizjgYvjgZrjgYoNCivjgZXjgYTjgajjgYYs44Gy44KN44KG44GNDQor44GE44Gh44GNLOOBsuOCjeOBlw0KK+OBiuOBiuOBnyzjgbLjgo3jgZcNCivjgbvjgorjgYbjgaEs44GR44GE44GE44GhDQor44Gf44Gr44GQ44GhLOOCiOOBl+OBig0KK+OBq+OBl+OBrizjgZ3jgYbjgYTjgaHjgo3jgYYNCivjgbXjgovjga/jgZcs44GT44GG44Ge44GGDQor44GC44GN44GfLOOBqOOBl+OBig0KK+OBiuOBj+OBl+OBvizjgZ/jgYvjgZcNCivjgYrjgYrjgZ/jgass44Gf44Gg44Gy44KNDQor44GL44KB44GK44GLLOOCiOOBl+OBig0KK+OBr+OCieOBiuOBiyzjgYvjgaTjgoTjgZkNCivjgarjgYvjgoDjgoks44Gy44KN44GXDQor44GC44KJ44GX44G+LOOChuOBjeOBig0KK+OBquOBjOOBleOCjyzjgojjgZfjgo3jgYYNCivjgoTjgb7jgYrjgYss44GN44KI44GXDQor44Gv44GbLOOBvuOBleOBi+OBpA0KK+OBjeOBl+OCguOBqCzjgY/jgavjgYoNCivjgZnjgZrjgY0s44KI44GX44GKDQor44GL44KB44KELOOBi+OBpOOBvw0KK+OBvuOBmeOBoCzjgb7jgZXjga/jgosNCivjgYjjgpPjgaks44GR44KT44GE44GhDQor44GV44GP44KJ44GELOOBn+OBi+OBguOBjQ0KK+OBteOCi+OBl+OCh+OBhizjgbXjgZjjgYoNCivjgYbjgZfjgY0s44GL44Ga44G/DQor44GT44GE44GRLOOBsuOCjeOBlw0KK+OBqOOBhuOBvizjgZXjgaHjgbLjgo0NCivjgarjgYvjgZbjgags44Gy44KN44GXDQor44KE44G+44GK44GLLOOCiOOBl+OBruOBtg0KK+OBquOBi+OBrSzjga7jgbbjga/jgosNCivjgajjgb/jgZ8s44Gu44KK44GL44GaDQor44GV44Go44KA44KJLOOBkeOBhOOBmA0KK+OBsuOBleOBvuOBpCzjgajjgojjgajjgZcNCivjgYrjgYzjgo8s44G+44GV44GoDQor44GV44GL44GELOOBn+OBkeOBlw0KK+OBquOBi+OBjizjgobjgb8NCivjgZXjgo/jgZDjgaEs44G+44GV44GP44GrDQor44G+44Gk44KC44GoLOOBqOOBl+OBig0KK+OBteOCi+OBi+OCjyzjgZPjgYbjgYTjgaENCivjgbXjgZ/jgb8s44GN44KI44GXDQor44Gf44Gq44GLLOOBteOBj+OCgA0KK+OBsuOBs+OBrizjgbLjgo3jgZcNCivjgZnjgarjga/jgoks44GX44KH44GG44GYDQor44GE44GR44GgLOOBn+OBi+OBlw0KK+OBlOOBqOOBhizjga7jgbbjgobjgY0NCivjgYTjgZfjga4s44Gk44Go44KADQor44GN44KA44KJLOOBl+OBkuOCiw0KK+OChOOBvuOBoCzjgb/jgaTjgYoNCivjgoLjgorjgoLjgags44G+44GV44KLDQor44GK44GL44KC44GoLOOBvuOBpOOBig0KK+OBquOBi+OBmOOBvizjgZXjgYvjgYgNCivjgY3jgZ/jgoDjgoks44G+44GZ44G/DQor44Gq44GL44GE44GXLOOBn+OBkeOChuOBjQ0KK+OCj+OBlSzjgbLjgafjgYoNCivjgZPjgZfjgoDjgoks44G+44GV44GXDQor44Gy44Gq44GfLOOBjeOCh+OBhuOBuOOBhA0KK+OBquOBi+OCgOOCiSzjga7jgbbjgYoNCivjgbXjgY/jgYQs44Gf44Gk44Gy44GTDQor44Gf44GL44GgLOOBi+OBmuOBig0KK+OBquOBi+OCgOOCiSzjgbLjgo3jgZcNCivjgavjgZfjgoTjgb4s44G+44GV44Gy44KNDQor44Gq44GL44KE44G+LOOBn+OBi+OChOOBmQ0KK+OBr+OCiuOBjOOChCzjgbLjgo3jgYLjgY0NCivjgb7jgZnjgoLjgags44KI44GX44GKDQor44Gm44KJ44Gr44GXLOOBvuOBleOBruOBtg0KK+OBquOBjOOBj+OBvCzjgYrjgZXjgoANCivjgojjgZfjga4s44Gf44GL44GXDQor44KC44KK44GfLOOBruOBvOOCiw0KK+OBpuOCieOBiizjgb/jgaTjgbLjgo0NCivjgojjgZfjgoDjgoks44GN44KI44GYDQor44KP44Gf44Gq44G5LOOBkeOCk+OBmA0KK+OBvuOBpOOCguOBqCzjgY3jgojjgZcNCivjgYrjgZbjgY0s44KI44GX44GC44GNDQor44Gy44GQ44GhLOOBteOBmOOBjQ0KK+OBv+OChOOCguOBqCzjgb/jgZXjgYoNCivjgoTjgb7jgZDjgaEs44G+44GZ44G/DQor44KE44G+44KC44GoLOOBiOOBpOOBkw0KK+OBi+OBqOOBhizjgZPjgYbjgYTjgaENCivjgarjgYvjgYQs44GL44Ga44G/DQor44G144GY44GfLOOBsuOCjeOBlw0KK+OBmeOBjOOCj+OCiSzjgZPjgYbjgZjjgofjgYYNCivjgYTjgZfjgZbjgY0s44Gf44GL44KG44GNDQor44Gf44Gk44G/LOOCiOOBl+OBguOBjQ0KK+OBquOBi+OBl+OBnyzjgb7jgZPjgagNCivjgYrjgZjjgb4s44Gy44KN44GC44GNDQor44GC44GV44GX44GfLOOBvuOBleOBteOBvw0KK+OBu+OCiuOBhCzjgb/jgojjgZcNCivjgYTjgoos44GR44KT44GE44GhDQor44G144GY44G+44GNLOOBn+OBoOOBguOBjQ0KK+OBi+OBmOOCj+OCiSzjgZfjgoXjgYbjgYTjgaENCivjga/jgZvjgYzjgo8s44G/44Gk44GKDQor44G144Gq44KE44G+LOOBiOOBpOOBig0KK+OBjeOBr+OCiSzjgZ/jgYvjgZcNCivjgZ/jgZHjgaAs44GR44GE44GTDQor44GE44GE44GgLOOBi+OBquOBiA0KK+OBteOCi+OBqSzjgb7jgZXjgYoNCivjgoLjgoos44GX44KF44GG44GE44GhDQor44G144GP44GoLOOBquOBiuOChA0KK+OBiuOBiuOBr+OBlyzjgYLjgY3jgbLjgagNCivjgYLjgYrjgY0s44Gy44Gn44GXDQor44Gf44GY44G+LOOBsuOCjeOBlw0KK+OBiuOBiuOBpOOBiyzjgajjgoLjgbLjgo0NCivjgYLjgYrjga4s44GY44KT44GE44GhDQor44GE44Gu44GG44GILOOBsuOBqOOBlw0KK+OBiOOCk+OBqSzjgb7jgZXjgbLjgo0NCivjgbLjgo3jgZss44KI44GX44GL44GkDQor44GI44KT44GpLOOBguOBjeOBig0KK+OBi+OCj+OBhCzjgb/jgaHjgosNCivjgYLjgYTjgZbjgo8s44G144Go44GXDQor44GT44GE44Gf44Gw44GXLOOBjeOCiOOBsuOCjQ0KK+OBleOBqOOBhizjgoTjgZnjgbLjgo0NCivjgYvjga7jgYYs44GX44GS44GNDQor44GG44GI44KA44KJLOOBvuOBleOBqOOBlw0KK+OBmeOBv+OCiOOBlyzjgbLjgafjgYoNCivjgbLjgo3jgZ8s44GV44Go44KLDQor44GE44Gq44Go44G/LOOBi+OBmuOCiOOBlw0KK+OBhOOBqOOBhizjga7jgorjgYvjgaQNCivjgY/jgbws44Gy44Gn44GC44GNDQor44GL44G244KJ44GOLOOBqOOBl+OBsuOCjQ0KK+OBhOOBkeOBoCzjgojjgZfjga7jgooNCivjgZ/jgYvjga/jgZcs44GL44Ga44GKDQor44GV44GL44GELOOBvuOBleOBsuOCjQ0KK+OBi+OBqOOBhizjgoTjgZnjgY/jgasNCivjgZ/jgZHjgYQs44KE44GZ44KG44GNDQor44Gv44KT44GgLOOBqOOBiuOCiw0KK+OBquOBjOOChCzjgYvjgaTjgb8NCivjga/jgaPjgajjgoos44Gy44KN44Gu44KKDQor44GX44G/44GaLOOCiOOBl+OBquOBig0KK+OBhOOBvuOBq+OBlyzjgb7jgZXjgagNCivjgY/jgb7jgbks44G+44GV44GKDQor44G+44Gh44GgLOOBpOOBi+OBlQ0KK+OChOOBjizjgaHjga/jgosNCivjgYrjgaDjgb4s44KG44GN44GKDQor44GN44Gf44GY44G+LOOBmOOCheOCk+OBkw0KK+OBn+OBoeOBsOOBqizjgZ/jgY/jgo3jgYYNCivjgbXjgZjjgoLjgags44GX44KF44GG44GYDQor44G/44Ga44GuLOOBhOOBj+OBig0KK+OBiOOBkOOBoSzjgYvjgaTjgb8NCivjgYvjgo/jgbks44GV44Gk44GTDQor44Gq44GL44KA44KJLOOBoeOBguOBjQ0KK+OBguOBmeOBvizjgY3jgojjgYvjgZoNCivjga/jgoDjgoks44Gk44Go44KADQor44GE44Go44GGLOOChuOBhuOBmA0KK+OBhOOBkeOBluOBjSzjgZ/jgZHjgZcNCivjgoTjgb7jgZXjgY0s44Gu44KK44KG44GNDQor44Gr44GX44GW44KPLOOBneOBhuOBmA0KK+OBq+OCjyzjgYjjgYTjgbLjgZMNCivjgb/jgYbjgoks44Gy44GV44GXDQor44GL44Gf44GK44GLLOOBguOBkeOBvw0KK+OBr+OChOOBlyzjgb7jgY3jgZMNCivjgb/jgZXjgY0s44Gf44GR44GXDQor44GK44Gg44GP44KJLOOBsuOCjeOBv+OBoQ0KK+OBteOBl+OBvyzjgaHjgYvjgagNCivjgbLjgo3jgZ8s44Gf44GL44GXDQor44Gv44Gf44KELOOBqOOBl+OChuOBjQ0KK+OBleOBi+OBhCzjgobjgYbjgZgNCivjgYTjgaAs44GE44Gh44KN44GGDQor44GV44Go44GGLOOBn+OBoOOBlw0KK+OBu+OBl+OBrizjga7jgbzjgosNCivjgYrjgYzjgo8s44Gq44Gk44GC44GNDQor44G144GP44GW44GoLOOCiuOCheOBhuOBhOOBoQ0KK+OBn+OBquOBiyzjgZvjgYTjgZgNCivjgZXjgZXjgY0s44GN44KH44GG44GTDQor44GK44Ga44GhLOOBv+OBpOOBig0KK+OBteOCjeOCguOBqCzjgb/jga7jgosNCivjgavjgZfjgoDjgoks44GX44KT44KEDQor44Gf44GR44GgLOOBqOOBv+OBkw0KK+OBn+OBkeOBqOOBvyzjgZPjgYbjgYTjgaENCivjgYrjgYvjgaAs44G/44Gh44GKDQor44G+44GoLOOBi+OBmuOChuOBjQ0KK+OBmeOBmuOBjSzjgYLjgY3jgojjgZcNCivjgoDjgYvjgYQs44KI44GG44GE44GhDQor44GT44GMLOOChOOBmeOBig0KK+OBi+OBqOOBhizjgYvjgZrjgb8NCivjgojjgZPjgYQs44G144G/44Go44GXDQor44GG44GX44GU44KBLOOBvuOBleOBn+OBiw0KK+OBk+OBvuOBpCzjgojjgZfjgZ/jgYsNCivjgYTjgajjgYYs44Gy44GV44GC44GNDQor44GV44Go44GGLOOBl+OCheOCk+OBmeOBkQ0KK+OBsuOCjeOBmyzjga7jgorjgojjgZcNCivjgZTjgb8s44GY44KF44KTDQor44Gf44Gq44GLLOOBn+OBpOOBig0KK+OBvuOBpOOCguOBqCzjgZ/jgYTjgYTjgaENCivjga/jgoTjgZcs44Gb44GE44GYDQor44Gf44GL44Gv44GXLOOBi+OBpOOBsuOCjQ0KK+OBguOCieOBhCzjgajjgZfjgobjgY0NCivjgbvjgZcs44GN44KI44GXDQor44Gm44KJ44GgLOOBl+OBkuOCiw0KK+OBhOOBmuOBryzjga/jgovjgYoNCivjgZnjgarjgaAs44KE44GZ44GY44KN44GGDQor44GE44GY44G+LOOBteOBv+OBig0KK+OBn+OBi+OBoCzjgajjgZfjga/jgosNCivjgo/jgYvjgb7jgaQs44GT44GG44GYDQor44Gk44GgLOOBqOOBl+OChuOBjQ0KK+OBu+OBl+OBj+OBvizjgb7jgZXjga/jgosNCivjgbvjgpPjgaAs44Gy44KN44G/DQor44GL44G+44GgLOOBiOOBhOOBmA0KK+OBr+OChOOBlyzjgb/jgaTjgbLjgo0NCivjgYTjgb7jgYQs44Gf44Gk44KLDQor44Gk44Gh44KELOOBhOOBmuOBvw0KK+OCj+OBoCzjgYTjgY/jgagNCivjgojjgZfjgaAs44GN44G/44Gy44KNDQor44Gg44GmLOOBmOOCheOCkw0KK+OBr+OBmeOBkyzjgojjgZfjga7jgooNCivjgZ/jgZHjgarjgYss44Gy44KN44GC44GNDQor44GK44GP44GgLOOBi+OBmuOBig0KK+OBu+OBlyzjgobjgYbjgZnjgZENCivjgYvjgoHjgaAs44GL44GK44KLDQor44Gy44GX44Gs44G+LOOBsuOCjeOBteOBvw0KK+OBiuOBiuOBq+OBlyzjgbLjgo3jgYLjgY0NCivjgZXjgajjgYYs44G+44GV44GC44GNDQor44G744Gd44GL44KPLOOBguOBjeOCiQ0KK+OCiOOBl+OBluOCjyzjgbLjgafjgYoNCivjga/jgonjgaAs44KI44GX44Gf44GLDQor44GV44GV44GNLOOBqOOCguOChuOBjQ0KK+OBhOOBhOOBoCzjgbLjgafjgb8NCivjgY3jgYzjgo8s44GT44GG44GE44GhDQor44GE44GR44GKLOOBsuOCjeOChuOBjQ0KK+OBguOCieOBhCzjgoTjgZnjgYoNCivjgYvjgY3jgYvjgo8s44GY44KF44KT44GE44GhDQor44GU44Go44GGLOOBj+OBq+OBqOOBlw0KK+OBv+OChOOBk+OBlyzjgoTjgZnjgYgNCivjgbXjgZjjgZ8s44GC44Gk44G/DQor44GP44KJ44GfLOOBsuOCjeOChuOBjQ0KK+OCguOCiuOBiuOBiyzjgobjgb/jgZMNCivjgoTjgb7jgYbjgoks44KE44GZ44KI44GXDQor44GP44KN44GvLOOCiOOBhuOBkw0KK+OBhOOBmuOBr+OCiSzjgarjgYrjgYvjgZoNCivjgZfjgZLjgajjgoEs44KI44GX44GC44GNDQor44Gr44GXLOOChOOBmeOBteOBvw0KK+OBguOBjeOChOOBvizjgajjgb/jgYoNCivjgYTjgZHjgaAs44GL44Ga44GN44GhDQor44KC44KKLOOChOOBmeOBvw0KK+OBsuOCjeOBi+OCjyzjgobjgYbjgZgNCivjgZ3jgoHjgoQs44GC44GN44GKDQor44GV44GP44KJ44GELOOBiOOBv+OBkw0KK+OBv+OBmuOBrizjgYTjgZXjgoANCivjgabjgonjgaAs44Go44GX44GL44GaDQor44Gy44KJ44G+44GkLOOBl+OBkuOCiw0KK+OBiuOBiuOBnyzjgZTjgo3jgYYNCivjgbLjgonjgb7jgaQs44GI44Gk44GKDQor44Gr44GX44GgLOOChuOBjeOBig0KK+OCgOOCieOBnyzjgbLjgafjgobjgY0NCivjgb/jgZrjgZPjgZcs44GR44KT44GE44GhDQor44Go44G/44GfLOOBn+OBi+OBig0KK+OBi+OCj+OBvyzjgZvjgYTjgYTjgaENCivjgZfjgYTjga4s44GX44GS44GKDQor44Gq44GL44KA44KJLOOBruOBtuOBig0KK+OBhOOBl+OBi+OCjyzjgZPjgYbjgYTjgaENCivjgYvjga3jgZ/jgZEs44GL44Gq44KBDQor44GK44GX44GSLOOBn+OBhOOBoQ0KK+OBk+OBmOOBvizjgobjgYbjgZ7jgYYNCivjgajjgbAs44G+44GT44GoDQor44GE44KP44GfLOOBsuOBp+OBguOBjQ0KK+OBiuOBrizjgZHjgpPjgZgNCivjgZPjgZXjgYss44Gy44GV44Gf44GRDQor44GL44KT44GuLOOBguOBjeOBig0KK+OBhOOBqOOBhizjgajjgZfjgaTjgZANCivjgZ/jgYvjgY4s44G/44Gh44GTDQor44Gf44GL44GuLOOBl+OCk+OBhOOBoQ0KK+OBhOOBquOBjOOBjSzjgabjgaTjgYoNCivjga7jgZbjgY0s44GY44KF44KTDQor44Gf44GR44GgLOOBteOBv+OBkw0KK+OBlOOBqOOBhizjgZfjgpPjgZgNCivjgbvjgorjgYvjgo8s44GL44Ga44Gy44KNDQor44GZ44GO44KC44GoLOOCiuOCh+OBhg0KK+OBguOCieOBhCzjgZvjgYTjgZgNCivjgbXjgZjjgo/jgoks44Gy44Gn44GZ44GODQor44KI44GX44GgLOOBl+OCheOBhuOBhOOBoQ0KK+OBiuOBl+OBvizjgZ/jgZHjgZcNCivjgZTjgajjgYYs44Gg44GE44GY44KN44GGDQor44GE44Ga44G/44GV44KPLOOCiOOBl+OBqOOCgg0KK+OBhOOCj+OBtuOBoSzjgb7jgZXjgaTjgZANCivjgYTjgb7jgY3jgZ8s44GX44KH44GG44GYDQor44KA44KJ44GfLOOBl+OCh+OBhuOBkw0KK+OBl+OCguOBrizjgYvjgZrjgbLjgo0NCivjgZTjgYvjgYTjgaEs44GT44GG44GYDQor44KE44G+44KC44GoLOOBruOBvOOCiw0KK+OBquOBjOOBl+OBvizjgZjjgo3jgYYNCivjgb/jgZfjgb4s44KI44GX44Gy44KNDQor44KE44GZ44Gq44GMLOOBi+OBpOOBvw0KK+OBiuOBteOBoSzjgZjjgo3jgYYNCivjgZPjgoDjgYvjgYQs44GN44KI44G/DQor44Gq44GM44GV44KPLOOBn+OBhOOBm+OBhA0KK+OBjeOBn+OBiuOBiyzjgYvjgZrjgbLjgZMNCivjga/jgoks44GL44Ga44KEDQor44G144GL44GgLOOBruOCiuOBteOBvw0KK+OBjeOBn+OBjOOCjyzjgZ/jgYvjgYLjgY0NCivjgYrjgYrjgoLjgoos44KM44GE44GTDQor44Gv44G244GhLOOBsuOBp+OBi+OBmg0KK+OBv+OChOOBluOBjSzjgbLjgo3jgoANCivjgZfjgo3jgZ8s44G+44GV44KG44GNDQor44GT44G/44KELOOBk+OBhuOBmA0KK+OBpuOCieOBiizjgZjjgo3jgYYNCivjgavjgZfjgZDjgaEs44Go44GX44GC44GNDQor44GL44Gt44Ga44GLLOOBsuOCjeOBguOBjQ0KK+OBmeOBjuOChOOBvizjgabjgaTjgZgNCivjgZ/jgaHjgbDjgarjgY0s44Gv44KL44GC44GNDQor44KC44KK44GK44GLLOOBvuOBleOBi+OBmg0KK+OCiOOBruOCguOBqCzjgbLjgafjgY0NCivjgY/jgZnjgaAs44GL44Ga44GE44GhDQor44GC44KK44KE44GZLOOBiOOBpOOBig0KK+OBpOOBmOOCguOBqCzjgbLjgZXjgagNCivjgbXjgYvjgb8s44GY44KF44KT44GE44GhDQor44GC44GN44KE44G+LOOBjeOCiOOBlw0KK+OCguOBoeOBmuOBjSzjgojjgZfjgZ/jgYsNCivjga7jgoDjgoks44GX44KF44KT44GYDQor44KP44GgLOOBjeOCiOOBlw0KK+OBiuOBoSzjgbLjgo3jgZcNCivjgoDjgonjgb7jgaQs44Gh44GI44GTDQor44KE44GuLOOBiuOBleOCgA0KK+OCguOBoeOBmuOBjSzjgY3jgojjgZcNCivjgbLjgonjgZ8s44Gq44GK44GNDQor44KP44GL44G+44GkLOOBqOOBl+OBleOBoA0KK+OBleOBi+OCguOCiizjgYvjgojjgZMNCivjgZPjgbDjgoTjgZcs44GC44GN44Gy44GTDQor44GE44G+44KA44KJLOOCiOOBl+OBsuOCjQ0KK+OBiuOBiuOBmeOBjCzjgYvjgYjjgacNCivjgZ/jgYvjgoTjgb4s44Gf44GL44Go44KJDQor44GN44Gf44G/LOOBsuOCjeOBsuOBpw0KK+OBvuOBiOOBoCzjgZ/jgYjjgZMNCivjgajjgoLjga4s44GR44KT44GE44GhDQor44GL44G244KJ44GOLOOBvuOBleOChuOBjQ0KK+OBreOBjuOBlyzjgZHjgYTjgZ7jgYYNCivjgo/jgaAs44KG44G/44GTDQor44GZ44Ga44GNLOOChOOBmeOChuOBjQ0KK+OBleOBquOBiCzjgYvjgZrjgb7jgZUNCivjga4s44Gf44Gk44KEDQor44GE44GX44Gw44GXLOOBsuOCjeOChuOBjQ0KK+OChOOBvuOBl+OBnyzjgaTjga3jgYoNCivjgZnjgZrjgY0s44GL44Ga44Gy44KNDQor44G/44KE44KP44GNLOOBqOOBl+OBsuOBkw0KK+OBvuOBpOOBhuOCiSzjgojjgZfjgYLjgY0NCivjgY3jgZ/jgoTjgb4s44KI44GX44Gy44KNDQor44KE44G+44GQ44GhLOOBmOOCheOCk+OBmA0KK+OBq+OBl+OChOOBvizjgYvjgaTjgZgNCivjgYvjgo/jgbDjgZ8s44G+44GV44Gy44GTDQor44G/44GL44G/LOOBmOOCheOCkw0KK+OBmeOBjuOChOOBvizjgYTjgZXjgYoNCivjgY3jgZjjgb4s44Gu44KK44GKDQor44Gy44GM44GXLOOBl+OCheOBhuOBmA0KK+OBguOBuSzjgb7jgZXjgagNCivjgYTjga7jgYbjgYgs44KI44GG44GTDQor44G144GL44GgLOOBguOBjeOBig0KK+OCgOOCieOBvuOBpCzjgZjjgoXjgpMNCivjgbLjgonjgbDjgoss44Gf44GR44GKDQor44Gh44KH44GG44Gq44KTLOOCiOOBl+OBvuOCjQ0KK+OBi+OCj+OCgOOCjSzjgZXjgajjgZcNCivjgaTjgY/jgaAs44G/44Gu44KLDQor44G/44KE44KC44GoLOOBqOOBl+OBsuOCjQ0KK+OBmeOBiOOBsuOCjSzjgZjjgoXjgpPjgYTjgaENCivjgZfjgonjgYvjgo8s44GT44GG44GYDQor44Gf44Gq44GLLOOBkeOBhOOBlw0KK+OChOOBmeOBhCzjgojjgZfjga7jgbYNCivjgY3jgoDjgoks44GL44Gk44GTDQor44Gq44GL44GM44KPLOOBi+OBpOOCiOOBlw0KK+OBj+OBleOBrizjgajjgZfjgbLjgo0NCivjgYLjgaDjgaEs44KI44GX44Gy44KNDQor44Gq44GL44Go44KCLOOCgOOBpOOBvw0KK+OBvuOBmeOCguOBqCzjgaTjgajjgoANCivjgo/jgZ/jgazjgY0s44KE44GZ44Gy44KNDQor44Gf44GL44Gv44GXLOOBi+OBpOOBmA0KK+OBk+OBvOOCiizjgb/jgY3jgYoNCivjgYrjgYzjgo8s44GT44GG44GE44GhDQor44G144GY44KC44KKLOOBv+OBjeOBig0KK+OBhOOBr+OCiSzjgYjjgb8NCivjgo/jgZ/jgarjgbks44KG44GG44GTDQor44GG44KJ44G5LOOBhOOBleOCgA0KK+OBv+OBhuOCiSzjgb/jgaTjgosNCivjgarjgYvjgYQs44GR44GE44GE44GhDQor44KP44KJ44GX44GqLOOBl+OBkuOCiw0KK+OBteOBj+OBquOBjCzjgojjgZfjgYvjgZoNCivjgYrjgYrjgaTjgbws44KI44GX44GC44GNDQor44KI44GX44GgLOOBv+OBruOCiw0KK+OBr+OChOOBvyzjgYvjgaTjgbLjgZMNCivjga7jgoDjgoks44G+44GV44GL44GaDQor44Gy44KJ44GELOOCiOOBl+OChuOBjQ0KK+OBl+OBvuOBoCzjgb7jgZXjgYgNCivjgZnjgZrjgY0s44Gq44GK44Go44GXDQor44Gm44KJ44GX44G+LOOBjeOBv+OBsuOBkw0KK+OBl+OBmuOBr+OCiSzjgozjgYTjgZMNCivjgoTjgb7jgajjgoQs44GL44Ga44Gy44GTDQor44GK44GO44GuLOOBsuOCjeOBig0KK+OBvuOBpOOBkOOBvizjgZfjgZLjgbsNCivjgY3jgZ/jgYQs44Go44GX44Gy44GTDQor44GC44GL44GgLOOBl+OBmuOBig0KK+OBn+OBkeOCiOOBlyzjgZvjgYTjga7jgZnjgZENCivjgbLjgo3jga4s44Gd44GK44GY44KDDQor44GX44G+44KA44KJLOOBqOOBvuOBlQ0KK+OCiuOCheOBhuOBlCzjgZfjgoXjgpPjgYTjgaENCivjgY/jgavjgYjjgaAs44G+44GN44GKDQor44GK44GK44Gk44GLLOOBu+OBk+OBjw0KK+OBhOOBkeOBjOOBvyzjgbLjgafjgajjgZcNCivjgYvjga3jgb7jgaQs44GL44Gt44Gy44GnDQor44GK44GK44GM44KP44KJLOOCiOOBl+OBruOBtg0KK+OBmeOBmuOBjSzjgZ/jgYvjgZcNCivjgabjgonjgaAs44Gb44Gk44GTDQor44GL44KP44GV44GNLOOBpuOBpOOBmA0KK+OBiuOBl+OChOOBvizjgojjgZfjgbLjgZUNCivjgYvjgo/jgYvjgb8s44GX44GS44GNDQor44Gq44GL44KA44KJLOOBqOOBl+OBguOBjQ0KK+OBv+OBn+OBqyzjgajjgZfjgbLjgZMNCivjgZPjgb7jgaQs44Gy44KN44Gf44GLDQor44GC44GL44GE44KPLOOBqOOBl+OBsuOBkw0KK+OBhOOBoeOBhCzjgbXjgb/jgoQNCivjgbXjgY/jgoTjgb4s44G+44GV44GC44GNDQor44GP44Gp44GGLOOCiOOBl+OBpuOCiw0KK+OBvuOBpOOBl+OBnyzjgZfjgpPjgZgNCivjgavjgZfjgYvjgo8s44KG44GN44Gy44KNDQor44GC44G+44GM44G/LOOBl+OCkw0KK+OChOOBl+OBjSzjgYLjgYTjgYTjgaHjgo3jgYYNCivjgo/jgaAs44GC44Gk44GTDQor44G+44GZ44GgLOOBqOOCguOBkw0KK+OCiOOBl+OCgOOCiSzjgobjgYbjgZgNCivjgYrjgaAs44GX44KT44GYDQor44KI44GT44KE44G+LOOBn+OBi+OBteOBvw0KK+OBhOOBqOOBhCzjgobjgorjgZMNCivjgZnjgZrjgY0s44GL44Gk44Gy44KNDQor44Gq44GM44Gv44G+LOOBsuOCjeOChuOBjQ0KK+OChOOBluOBjSzjgabjgYTjgZ7jgYYNCivjgoTjgZjjgb4s44GN44KI44GXDQor44KA44GL44GI44GgLOOBleOBqOOCiw0KK+OBquOBi+OCgOOCiSzjgZ/jgaTjgYLjgY0NCivjgoTjgb7jgoDjgoks44GT44GG44GE44GhDQor44Gu44KC44GoLOOBqOOBl+OChuOBjQ0KK+OChOOBvuOBluOBjSzjgajjgZfjgbLjgZMNCivjgZXjgajjgYYs44Go44GX44KEDQor44GE44Gu44GG44GILOOBsuOCjeOChuOBjQ0KK+OBiuOBi+OBrizjgbLjgafjgYoNCivjgarjgYvjgavjgZcs44Gv44KL44Gy44GVDQor44GG44GI44GgLOOBsuOCjeOBvw0KK+OBguOBhOOBluOCjyzjgYLjgY3jgYoNCivjgYLjgonjgYQs44Go44KC44Gq44KKDQor44Gq44GM44GE44GXLOOBi+OBpOOBvw0KK+OBr+OBk+OBhCzjgb7jgZXjgYoNCivjgY/jgZnjgoLjgags44Gf44GL44KI44GXDQor44GC44KK44Go44G/LOOBmOOBpOOCjeOBhg0KK+OBr+OCiSzjgZ/jgb/jgYoNCivjgbvjgpPjgb4s44G+44GV44Gv44KLDQor44Gv44GX44KC44GoLOOBv+OBoeOBr+OCiw0KK+OBr+OBl+OCguOBqCzjgb7jgZXjgYoNCivjgYrjgYrjgazjgb4s44GE44GV44GKDQor44Gv44Gq44GNLOOBl+OCk+OBhOOBoeOCjeOBhg0KK+OBr+OBl+OCguOBqCzjgYLjgY3jgZMNCivjgZXjgY/jgonjgZbjgo8s44Gy44Gn44Go44GXDQor44GC44GL44GOLOOChOOBmeOBsuOBqA0KK+OBguOBjeOBmuOBjSzjgb7jgZXjgajjgZcNCivjgYLjgpPjganjgYYs44Gy44KN44GNDQor44GC44KJ44GELOOBn+OBvuOBig0KK+OBguOBleOCgOOCiSzjgYvjgaTjgb8NCivjgaHjgbAs44GC44GTDQor44GI44GQ44GhLOOChuOBjeOBn+OBiw0KK+OBteOBoeOBrizjgajjgYrjgosNCivjgbXjgZjjgb7jgoss44Gy44GV44GoDQor44G144GY44GV44KPLOOBruOCiuOBig0KK+OBteOBi+OBoCzjgbXjgb/jgbLjgo0NCivjgbXjgY/jgYQs44Gy44KN44GXDQor44G144GP44Go44G/LOOCiuOCheOBhuOBleOBjw0KK+OBjuOBvizjgYvjgZrjgojjgZcNCivjga/jgY7jgo/jgoks44GE44Gh44KN44GGDQor44Gv44KJLOOBjeOCiOOBn+OBiw0KK+OBr+OCi+OBqizjgZ/jgYvjgYLjgY0NCivjga/jgaTjgb8s44GC44Ga44GVDQor44Gv44KE44GbLOOBl+OCk+OBlA0KK+OBr+OChOOBpCzjgbLjgo3jgZcNCivjgbLjgonjgYrjgYss44G+44KG44G/DQor44Gy44KN44GXLOOBruOBtuOBkw0KK+OBu+OBl+OBkyzjgb7jgZXjgbLjgo0NCivjgYTjgaHjgYvjgo8s44G+44GV44KLDQor44GE44GM44KPLOOBjeOCiOOBlw0KK+OBhOOBhOOBmuOBiyzjgYLjgorjgZUNCivjgb/jgaTjgoLjgags44Gy44KN44Gf44GLDQor44GE44G+44KA44KJLOOBsuOCjeOChuOBjQ0KK+OBhOOBquOBvyzjgbLjgo3jgb/jgaENCivjgYTjga7jgYbjgYgs44Gf44GR44GXDQor44GE44GbLOOChuOBjeOBig0KK+OBmeOBjuOBr+OCiSzjgbLjgo3jgZ/jgYsNCivjgYTjgZfjgoLjgags44GR44KT44GYDQor44GE44GX44Ga44GLLOOBqOOBiuOCiw0KK+OBhOOBqOOBhizjgojjgYbjgZgNCivjgYvjgb/jgYvjgo8s44Gf44Gg44G/44GkDQor44GE44KP44GV44GNLOOBkeOBhOOBkw0KK+OBhOOBmuOBvyzjgb/jgo8NCivjgYvjgb7jgaAs44Gf44GL44Gy44KNDQor44Gf44GR44GG44GhLOOBv+OBjQ0KK+OBruOCgOOCiSzjgYjjgb/jgZMNCivjgYvjgZ/jga4s44Gm44KL44Gy44GVDQor44GL44Go44GGLOOBn+OBi+OBlw0KK+OBi+OCj+OBoCzjgbLjgo3jgobjgY0NCivjgYTjgZfjgYQs44KE44GZ44GNDQor44GL44KP44GX44G+LOOBiOOBhOOBkw0KK+OBjeOBj+OBi+OCjyzjgobjgYvjgooNCivjgY3jgZcs44Gf44GP44GXDQor44GT44Gw44KE44GXLOOBpuOBpOOChA0KK+OBk+OBsOOChOOBlyzjgYvjgZrjgbLjgZMNCivjgZPjgoTjgb4s44GC44GN44KJDQor44GT44GP44G8LOOCiOOBhuOBkw0KK+OBk+OCk+OBqSzjgb/jgYgNCivjgZPjgZfjgYos44G+44GV44Go44GXDQor44GP44G8LOOBpOOBqOOCgA0KK+OBu+OBl+OBrizjgajjgZfjgoQNCivjgY/jgZXjgYvjgo8s44GR44GE44GE44GhDQor44GP44GZ44G/LOOChuOBn+OBiw0KK+OBvuOBjeOBrizjgaHjgbLjgo0NCivjgb7jgovjgoTjgb4s44G+44GT44GoDQor44Gq44GL44KA44KJLOOBoeOBqOOBmw0KK+OBvuOBpOOCguOBqCzjgYLjgaTjgZcNCivjgoHjgZbjgo8s44Gy44Go44GXDQor44G/44GtLOOBvuOBleOChOOBmQ0KK+OBv+OBqCzjga7jgbbjgYoNCivjgb/jgoTjgoLjgags44GX44GS44KLDQor44G/44KE44GW44KPLOOBi+OBpOOBvw0KK+OBv+OBmuOBnyzjgZHjgpPjgZgNCivjgoLjgoos44Gv44Ga44GNDQor44KC44KK44KC44GoLOOBvuOBquOBtg0KK+OCguOCjeOBiuOBiyzjgb/jgaTjgbLjgo0NCivjgYLjgpPjganjgYYs44GE44KP44GKDQor44G/44KH44GG44GMLOOBn+OBi+OChuOBjQ0KK+OBquOBjOOBiizjgYLjgY3jgbLjgo0NCivjgarjgYzjgZss44GZ44GZ44KADQor44Gq44GE44Go44GGLOOBleOBoOOBv+OBpA0KK+OBquOBi+OBmOOBvizjgajjgYrjgosNCivjgarjgYvjgb7jgoss44Go44GX44GTDQor44Gq44GL44KA44KJLOOCiuOCheOBhuOBhOOBoQ0KK+OBquOBi+OBq+OBlyzjgbLjgafjgagNCivjgarjgYvjga4s44Gk44GL44GVDQor44GX44Gq44GgLOOBguOBjeOCiQ0KK+OBquOCiuOBnyzjgZ/jgY/jgZgNCivjgavjgYTjgoTjgb4s44Gy44KN44GXDQor44Gr44GX44GL44KPLOOBguOBjeOCiQ0KK+OBq+OBl+OBmuOBiyzjgajjgZfjgoQNCivjgbLjga4s44GL44Ga44KG44GNDQor44Gv44Gb44GM44KPLOOBv+OBpOOBguOBjQ0KK+OBiuOBjOOBnyzjgbLjgajjgZcNCivjgoDjgZXjgZcs44G/44Gk44KLDQor44GK44GK44GP44G8LOOBr+OCi+OBlw0KK+OBiuOBiuOBleOCjyzjgbLjgafjgY0NCivjgYrjgYrjgZ8s44GX44KT44GYDQor44GK44GK44KP44GgLOOBsuOCjeOBruOCig0KK+OBiuOBi+OBoCzjgZ/jgYvjgojjgZcNCivjgYrjgYvjgoLjgags44Gy44KN44GXDQor44GK44GN44KC44GoLOOBvuOBleOBsuOBkw0KK+OBiuOBq+OBpOOBiyzjgb7jgZXjgYLjgY0NCivjgYrjgZXjgY0s44Gf44GL44GXDQor44GV44GI44GNLOOCiOOBl+OBsuOCjQ0KK+OBleOBi+OBhCzjgorjgofjgYbjgZgNCivjgZXjgYvjgY0s44GN44KH44GG44GTDQor44GV44GL44GG44GILOOBn+OBi+OChuOBjQ0KK+OBleOBrizjgajjgZfjgbXjgb8NCivjgZXjgajjgYYs44KE44GZ44GXDQor44GV44Go44GGLOOBleOBqOOBlw0KK+OBleOCj+OBhCzjgb/jgaHjgbLjgo0NCivjgZvjgY3jga/jgoks44GC44GN44KJDQor44Gb44GX44KCLOOBl+OCheOBhuOBhOOBoQ0KK+OBl+OBsOOBnyzjgabjgaTjgo3jgYYNCivjgoDjgonjgZ8s44KK44KF44GG44Gf44KN44GGDQor44GX44G/44GaLOOBr+OChOOBqOOBlw0KK+OBl+OCguOBiuOBlSzjgZ/jgZHjgZcNCivjgZfjga7jgaAs44Gv44Gk44GIDQor44GX44KJ44GELOOBi+OBmuOBsuOBkw0KK+OBmeOBqeOBhizjgoLjgajjgobjgY0NCivjgZnjgY7jgZfjgb4s44G+44GV44KLDQor44GZ44KE44G+LOOBqOOCguOBruOCig0KK+OBmeOBmuOBjSzjgobjgZ/jgYsNCivjgZfjgoXjgY/jgoQs44GY44KF44KT44GE44GhDQor44Gf44GQ44GhLOOBquOBiuOChuOBjQ0KK+OBv+OChOOCguOBqCzjgZ/jgYvjgZcNCivjgZ/jgYvjga/jgZcs44GR44KT44KK44KF44GGDQor44Gf44GL44Gv44GXLOOChuOBjeOBiA0KK+OBn+OBi+OBr+OBlyzjgYTjgaHjgo3jgYYNCivjgZ/jgYvjgZss44GX44GS44GNDQor44G/44GL44G/LOOBkeOBhOOBmeOBkQ0KK+OBn+OBkeOChOOBvizjgajjgZfjgYLjgY0NCivjgZ/jgarjgbks44Gy44KN44KG44GNDQor44Gf44Gq44GLLOOBsuOCjeOBkw0KK+OBn+OBquOBiyzjga7jgorjgYLjgY0NCivjgZ/jgavjgZDjgaEs44GY44KF44KT44GTDQor44Gf44Gm44GE44GXLOOBquOBiuOChA0KK+OBpuOCi+OBjeOBqizjgYLjgY3jgogNCivjgajjgb/jgYrjgYss44Gq44GK44GNDQor44Go44KI44GgLOOBvuOBleOBsuOBkw0KK+OBpOOBoeOChCzjgojjgZfjgbLjgo0NCivjgaTjgZgs44Gy44KN44GXDQor44Gk44Gu44GM44GELOOChOOBmeOBruOCig0KK+OBhuOBoeOBoCzjgb7jgZXjgbXjgb8NCivjgYbjgaAs44GR44GE44GYDQor44GG44GI44Gv44KJLOOBl+OCk+OBmA0KK+OBhuOBiOOBrizjgobjgYbjgZgNCivjgYbjgoHjga/jgoks44G+44GT44GoDQor44GG44GZ44GELOOBk+OBhuOBuOOBhA0KK+OCj+OBoCzjgojjgZfjgYLjgY0NCivjgo/jgZ/jgarjgbks44GV44Go44GXDQor44KE44Gv44GOLOOBquOBiuOBteOBvw0KK+OChOOBvuOBoCzjgajjgZfjgYoNCivjgoTjgb7jgZDjgaEs44Go44KC44GL44GaDQor44KE44G+44KC44GoLOOBkeOCk+OBmOOCjeOBhg0KK+OChOOBvuOCguOBqCzjgb7jgarjgbYNCivjgoTjgb7jgZfjgZ8s44KK44KT44GY44KFDQor44KE44G+44GW44GNLOOBsuOBqOOBlw0KK+OChOOBmeOBoCzjgb7jgZXjgb8NCivjgojjganjgYzjgo8s44Gu44KK44GKDQor44KI44KN44Ga44KELOOBquOBiuOBsuOBlQ0KK+OCiOOBl+OBvuOBpCzjgaHjga/jgosNCivjgYjjgaDjgbLjgo0s44G/44Gp44KKDQor44GT44GY44G+LOOChOOBmeOBsuOBlQ0KK+OBiuOBjOOCjyzjgoHjgZDjgb8NCivjgZ/jgYvjgZss44G+44G/44GTDQor44G144GP44GfLOOBi+OBmuOBvw0KK+OBn+OBkOOBoSzjgbLjgo3jgoANCivjgYLjgZXjga4s44Go44GX44Gy44GTDQor44G144GY44GELOOBkeOCk+OBmA0KK+OBteOBmOOCj+OCiSzjgZPjgYbjgZgNCivjgZTjgajjgYYs44Gy44KN44GL44GaDQor44Gv44KE44GXLOOBqOOBl+OBguOBjQ0KK+OBsuOCieOBhCzjgbLjgo3jgZ/jgYsNCivjgYTjgaHjgYQs44GX44GS44KG44GNDQor44GE44GR44GgLOOBhOOBj+OBmOOCjeOBhg0KK+OBhOOBl+OBvuOCiyzjgb/jgo8NCivjgYTjgajjgYYs44Gm44Gk44KEDQor44GL44GS44KE44G+LOOBpOOCiOOBlw0KK+OBi+OBleOBvizjga7jgorjgb7jgZUNCivjgYvjgajjgYYs44GT44GG44GfDQor44GN44GP44GhLOOBqOOCguOBguOBjQ0KK+OBjeOBn+OBjOOCjyzjgb/jgaHjga/jgosNCivjgZPjgbDjgoTjgZcs44GT44GG44Gf44KN44GGDQor44GT44KT44GpLOOBruOCiuOBkw0KK+OBj+OBqeOBhizjga/jgoTjgagNCivjgY/jgZXjgbXjgYss44GX44Gu44G2DQor44G+44Gk44Gg44GE44KJLOOBvuOBjQ0KK+OBv+OBj+OBqyzjgoTjgZnjgZcNCivjgb/jgoTjgaEs44Gf44GL44G144G/DQor44G/44KE44GW44KPLOOBsuOCjeOBjQ0KK+OCguOCiuOBnyzjgY/jgovjgb8NCivjgoDjgo3jgZ7jga4s44Gy44KN44GC44GNDQor44Gq44GL44G/44GhLOOBl+OCh+OBhg0KK+OBq+OBl+OCgOOCiSzjgZfjgpPjgoQNCivjgYrjgYzjgo8s44Gf44GL44GXDQor44GK44GK44GILOOBvuOBleOBv+OBoQ0KK+OBiuOBiuOBnyzjgZ/jgYvjgZcNCivjgYrjgYvjgoTjgb4s44G/44Gk44KI44KKDQor44GV44GE44Go44GGLOOBn+OBi+OBruOBtg0KK+OBleOBrizjgZ/jgY/jgoQNCivjgZXjgajjgYYs44Gf44GL44GXDQor44GX44GELOOBv+OBleOBkw0KK+OBl+OCk+OBjeOCheOBhizjgb7jgZXjgobjgY0NCivjgZnjgY7jgoTjgb4s44GN44KI44Gf44GLDQor44Gf44GL44GOLOOCiOOBl+OBig0KK+OBn+OBkeOBhuOBoSzjgYvjgbvjgosNCivjgZ/jgarjgYss44Gu44G244GTDQor44Gf44KL44GV44KPLOOBguOBjeOBkw0KK+OBqOOCguOBrizjgYvjgZrjgb8NCivjgo/jgZ/jgarjgbks44G+44GV44Go44GXDQor44KE44G+44KC44GoLOOBsuOBp+OBqA0KK+OChOOBvuOBluOBjSzjgbXjgb/jga4NCivjgojjga3jgb/jgaQs44G+44GT44GoDQor44KG44KKLOOBqOOCguOBig0KK+OBvuOBpOOBkOOBvizjgbXjgb/jgZMNCivjgYLjgZjjgb4s44KE44GZ44GC44GNDQor44GC44G+44GuLOOBoeOBguOBjQ0KK+OBguOBiuOBjSzjgojjgZfjgZMNCivjgYLjgYrjgY0s44Gq44GK44Gy44GVDQor44GC44KJ44GNLOOBi+OBpOOBmA0KK+OBguOBleOBj+OCiSzjgZ/jgaTjgYoNCivjgYLjgZrjgb4s44KK44GIDQor44GV44Gf44GRLOOBkeOBhOOBkw0KK+OBoOOBhOOBiizjgbLjgafjgY0NCivjgarjgYvjgoDjgoks44Gf44GL44GTDQor44G144GY44GELOOBn+OBpOOBruOCig0KK+OBteOBmOOBiuOBiyzjgabjgaTjgo3jgYYNCivjgbXjgY/jgYQs44GT44GG44GYDQor44G144Gq44GgLOOChuOBhuOBkw0KK+OBlOOBqOOBhizjgYvjgYTjgaHjgo3jgYYNCivjga/jgb7jgaAs44KI44GX44G/DQor44GV44Go44GGLOOBm+OBhOOBlA0KK+OBr+OCiuOBvizjgarjgYrjgY0NCivjga/jgZvjgYzjgo8s44GC44GN44Gy44GTDQor44Gv44GfLOOBl+OCk+OBhOOBoeOCjeOBhg0KK+OBr+OBo+OBqOOCiizjgobjgY0NCivjga/jgoTjgb8s44GZ44G/44Gy44GoDQor44Gv44KE44GXLOOBvuOBleOBruOCig0KK+OBsuOBiOOBoCzjgb/jgaHjgYvjgZoNCivjgbLjgYrjgY0s44Go44GG44KB44GEDQor44G744GgLOOBsuOCjeOBjQ0KK+OBsuOCjeOBmeOBiCzjgZjjgoXjgpPjgZMNCivjgbLjgZfjgaAs44Gy44KN44GXDQor44G744KT44GU44GGLOOBvuOBleOBqA0KK+OBu+OCiuOBiCzjgYLjgY3jga7jgooNCivjgbvjgZfjgaos44GT44GG44GE44GhDQor44GE44Gh44GL44KPLOOBsuOBqOOBlw0KK+OBhOOBjOOBnyzjgYjjgYTjgYTjgaHjgo3jgYYNCivjgYTjgYTjgZrjgYss44G+44GT44GoDQor44GE44GR44GgLOOBn+OBi+OChuOBjQ0KK+OBu+OBneOBhCzjgZHjgpPjgZ/jgo3jgYYNCivjgYTjga4s44GY44KF44KTDQor44GE44Gu44GG44GILOOBteOBv+OBruOCig0KK+OBiuOBiuOCguOCiizjgZHjgpPjgYTjgaHjgo0NCivjgYTjgZfjgYQs44GR44GE44GY44KN44GGDQor44GE44GX44GELOOChOOBmeOBlw0KK+OBhOOBl+OBpOOBiyzjgajjgZfjgobjgY0NCivjgYTjgZ3jgYzjgYQs44KG44GG44GTDQor44GE44Go44GGLOOBleOBqOOBlw0KK+OBhOOCj+OBr+OBlyzjgobjgYbjgZMNCivjgYTjgo/jgZXjgY0s44Gy44KN44KG44GNDQor44GL44GM44G2LOOBl+OCk+OBmOOCjeOBhg0KK+OBi+OBvuOBu+OCiizjgajjgoLjgbLjgZMNCivjgYvjgb/jgoQs44Gu44G244KG44GNDQor44GL44Gq44GELOOBruOCiuOBkw0KK+OBi+OCk+OBoCzjgaHjgYgNCivjgYvjga7jgYYs44Gf44GR44GXDQor44Gf44G+44Gf44GrLOOBl+OBvg0KK+OBi+OBqOOBhizjgbLjgo3jgY0NCivjgYvjgajjgYYs44GY44KF44KT44GTDQor44GL44KP44GQ44GhLOOBk+OBhuOBmA0KK+OBi+OCj+OCgOOCiSzjgZfjgoXjgYbjgZgNCivjgYvjgo/jgZfjgb4s44Gu44G244GTDQor44GN44GP44GhLOOBhOOBoeOCjeOBhg0KK+OBjeOCgOOCiSzjgZ/jgYvjgbLjgZUNCivjgY3jgZcs44Gq44GK44GNDQor44GN44Gf44GM44KPLOOBquOBiuOBvw0KK+OBjeOCiOOBr+OCiSzjgaTjgajjgoANCivjgZPjgbDjgoTjgZcs44GR44KT44GYDQor44GT44Gg44G+LOOChOOBmeOBsuOCjQ0KK+OBk+OBhOOCjyzjgajjgoLjgobjgY0NCivjgZPjgZjjgb4s44GV44Go44GXDQor44GT44KT44GpLOOBkeOCk+OBhOOBoQ0KK+OBj+OBvCzjgarjgYrjgY0NCivjgY/jgb7jgY/jgoks44GR44KT44GE44GhDQor44Gy44KJ44GELOOBk+OBhuOBmA0KK+OBj+OCjeOBoCzjgYLjgaTjgZcNCivjgY/jgo3jgZXjgo8s44GI44GE44GY44KN44GGDQor44G+44GI44GgLOOBleOBqOOBlw0KK+OBl+OBtuOBn+OBqyzjgZPjgYbjgZgNCivjgb7jgZnjgaAs44KG44GG44GTDQor44Gv44KJLOOBkeOCk+OBmA0KK+OBvuOBpOOBhCzjgZfjgpPjgZgNCivjgb7jgaTjgoLjgags44Gy44KN44GXDQor44G+44Gk44Gq44G/LOOCiOOBl+OBkw0KK+OBvuOBpOOBiuOBiyzjgZfjgpPjgZQNCivjgb7jgaTjgoTjgb4s44GC44GN44KJDQor44G/44GL44G/LOOBsuOBp+OBig0KK+OBv+OBquOBvyzjgYLjgY3jgokNCivjgb/jgZ/jgoDjgoks44G+44GV44Go44GXDQor44G/44Gk44G+LOOBi+OBmuOBsuOBqA0KK+OBv+OChOOBl+OBnyzjgbLjgo3jgobjgY0NCivjga/jgZfjgZDjgaEs44GX44GS44GNDQor44G/44Ga44GuLOOBqOOBl+OChuOBjQ0KK+OCguOCiizjgb7jgZXjgZcNCivjgoLjgoos44Gy44KN44GL44GaDQor44KC44KK44KELOOCgOOBpOOBig0KK+OCgOOBreOBi+OBnyzjgYvjgZrjgojjgZcNCivjgoDjgonjgZ8s44KG44GN44KC44GoDQor44G/44KH44GG44GY44KTLOOBv+OBoeOBig0KK+OBquOBjOOBl+OBvizjgojjgZfjgYvjgZoNCivjgarjgYTjgajjgYYs44G+44GV44GNDQor44Gq44GL44GY44G+LOOBpuOCi+OBvw0KK+OBquOBi+OCguOBqCzjgbLjgo3jgYvjgZoNCivjgarjgYvjgoDjgoks44KG44GG44GYDQor44Gq44GL44KA44KJLOOBkeOCk+OBnw0KK+OBquOBi+OChCzjgo/jgZ/jgosNCivjgarjgpMs44GR44GE44GZ44GRDQor44Gq44Go44KKLOOBkeOCk+OChA0KK+OBq+OBhOOBluOCjyzjgojjgZfjga7jgooNCivjgavjgZfjgaAs44KE44GZ44GKDQor44Gr44GX44GqLOOBjeOCiOOBlw0KK+OBq+OBl+OBluOCjyzjgojjgZfjgbLjgo0NCivjga7jgYzjgo8s44Gy44KN44KEDQor44Gu44KA44KJLOOBvuOBleOBsuOCjQ0KK+OBiuOBjOOBleOCj+OCiSzjgYvjgZrjgabjgosNCivjgYrjgYzjgo8s44KE44GZ44Gu44KKDQor44GK44Gv44GXLOOBleOBqOOBlw0KK+OBiuOBiuOBrizjgbLjgo3jgoTjgZkNCivjgYrjgZfjgb4s44Gk44Go44KADQor44GK44GK44Gf44GNLOOBteOBqOOBlw0KK+OBiuOBiuOBpOOBiyzjgYjjgYTjgY0NCivjgYrjgYrjgoQs44KA44Gt44GKDQor44GK44GL44GgLOOBsuOCjeOChuOBjQ0KK+OBiuOBi+OBluOBjSzjgZPjgYbjgZ/jgo3jgYYNCivjgYrjgYrjgb8s44GC44KE44GTDQor44GK44Gu44Gn44KJLOOBvuOBleOBsuOBkw0KK+OBiuOBrizjgZ/jgYvjgYLjgY0NCivjgYrjgZbjgY0s44KI44GX44G+44GVDQor44GV44GE44GgLOOCguOCguOBkw0KK+OBleOBi+OBkOOBoSzjgZPjgYbjgZgNCivjgZXjgYvjgYQs44Gq44GK44GNDQor44GV44GTLOOBguOBi+OBlw0KK+OBleOCk+OBuSzjgb7jgZPjgagNCivjgZXjgZXjgY0s44KG44Gf44GLDQor44GV44Gf44GRLOOBqOOBl+OBjQ0KK+OBleOBqOOBhizjgobjgY3jgZ/jgYsNCivjgbLjgonjga4s44Gy44KN44GC44GNDQor44GV44KP44KA44KJLOOBsuOCjeOBlw0KK+OBm+OBjeOBrSzjgYvjgZrjgYLjgY0NCivjgZfjgbDjga/jgoks44GL44Ga44GuDQor44GX44Gw44GW44GNLOOBvuOBleOBkw0KK+OBl+OBvizjgZPjgZnjgZENCivjgZfjgb/jgZos44GR44GE44GZ44GRDQor44GX44KC44GL44KP44G5LOOBguOBjeOBsuOCjQ0KK+OBl+OBruOBluOBjSzjgbLjgo3jgZcNCivjgZfjgonjga/jgb4s44G/44Gh44Gy44GVDQor44GX44KH44GG44Gq44GULOOBn+OBi+OBl+OBkg0KK+OBmeOBoCzjgoHjgYTjgZjjgo3jgYYNCivjgZnjgY7jgoLjgags44G/44GLDQor44GZ44GO44GfLOOBn+OBi+OChuOBjQ0KK+OBmeOBv+OBoCzjgYLjgaTjgZcNCivjgZnjgZrjgY0s44G+44GV44G144G/DQor44GZ44Ga44GNLOOBl+OBkuOCiw0KK+OBmeOBmuOBrizjgYvjgaTjgbXjgb8NCivjgZ/jgZDjgaEs44G/44KG44GNDQor44Gf44GL44GOLOOBqOOBl+OBi+OBmg0KK+OBn+OBi+OBr+OBlyzjgbLjgo3jgb/jgaENCivjgZ/jgYvjga/jgZcs44Gy44Gn44Gu44KKDQor44Gf44GL44Gv44GXLOOBkeOCk+OBhOOBoQ0KK+OBn+OBi+OBrizjgb/jgY3jgZMNCivjgZ/jgYvjgZfjgb4s44Gf44Gg44GXDQor44Gf44GR44GgLOOBhOOBmuOBvw0KK+OBn+OBkeOBquOBiyzjgZHjgpPjgYTjgaENCivjgZ/jgZHjgoTjgZks44KM44GE44GYDQor44Gf44KA44KJLOOBsuOCjeOChuOBjQ0KK+OBn+OBquOBiyzjgZPjgYbjgYTjgaENCivjgZ/jgarjgYss44Gf44GL44KI44GXDQor44Gf44Gq44GLLOOBqOOBiuOCiw0KK+OBn+OBq+OBkOOBoSzjgYvjgaTjgbLjgZMNCivjgabjgonjgb7jgYgs44Gb44GE44GE44Gh44KN44GGDQor44Go44GN44KPLOOBoeOBiOOBkw0KK+OBqOOCiuOBlOOBiCzjgZXjgaDjgobjgY0NCivjgaTjgaHjgZ/jgass44Gy44Gn44GNDQor44Gk44GY44KA44KJLOOBn+OBi+OBlw0KK+OBpOOBi+OCguOBqCzjgZHjgpPjgZ/jgo3jgYYNCivjgaTjgaTjgb8s44G+44GV44Gu44KKDQor44GG44Gh44GuLOOBleOBqOOBlw0KK+OBreOBmizjgajjgZfjgYLjgY0NCivjgYbjgYjjgaTjgbws44KI44GX44Gf44GLDQor44GG44GK44Ga44G/LOOBleOCk+OBuuOBhA0KK+OCj+OBoCzjgb/jgaTjga7jgooNCivjgo/jgZ/jgarjgbks44KI44GX44GNDQor44KE44G2LOOBk+OBhuOBmA0KK+OChOOBvuOBoCzjgobjgYbjgZMNCivjgbLjgZXjga4s44KK44GLDQor44KE44G+44GQ44GhLOOBruOCiuOChuOBjQ0KK+OChOOBvuOBi+OCjyzjgobjgY3jgZMNCivjgoTjgb7jgoLjgags44Gq44GK44GoDQor44KE44G+44KC44GoLOOBl+OCk+OBhOOBoQ0KK+OChOOBvuOBhuOBoSzjgZfjgpPjgYTjgaHjgo3jgYYNCivjgoTjgb7jgZbjgY0s44Gf44GL44GKDQor44Gv44GO44KP44KJLOOBv+OBjeOBig0KK+OCiOOBreOBluOCjyzjgYjjgooNCivjgojjgZfjgaAs44GV44Gh44GTDQor44KI44GX44G+44GkLOOBkeOCk+OBn+OCjeOBhg0KK+OBmuOBlyzjgobjgY3jgYoNCivjgYTjgo/jgYvjgo8s44Gd44GG44Gf44KN44GGDQor44GE44GX44G+44GkLOOBsuOCjeOChOOBmQ0KK+OBguOBuSzjgYjjgYTjgYTjgaENCivjgYLjgYvjgYTjgZcs44GI44GE44GhDQor44GC44G+44GM44GfLOOBn+OBi+OBlw0KK+OBguOCk+OBluOBhCzjgb7jgZXjgbLjgacNCivjgYLjgonjgY0s44Go44GX44G/44GkDQor44GC44GX44GgLOOBleOBqOOBlw0KK+OBoeOCh+OBhizjgYjjgYTjgZgNCivjganjgYQs44GR44KT44GE44GhDQor44GI44Gu44KC44GoLOOBjeOCiOOBvw0KK+OBteOBmOOBhCzjgZXjgaTjgY0NCivjgbXjgZjjgZ8s44Gf44GL44GXDQor44G144GP44KA44KNLOOBn+OBi+OBlw0KK+OBteOBquOBjSzjgarjgYrjgY0NCivjgbXjgovjgoQs44Go44KC44KEDQor44GE44KP44GV44GNLOOBleOBiOOBkw0KK+OBhOOBqOOBhizjgZfjgo3jgYYNCivjga/jgaAs44Gy44Gn44GC44GNDQor44Gv44Gq44GpLOOBv+OBruOCiw0KK+OBr+OCieOBoCzjgZ/jgZHjgZcNCivjga/jgonjgZ7jga4s44Gu44G244Gy44KNDQor44Gv44GX44KC44GoLOOBleOBqOOBlw0KK+OBr+OBo+OBqOOCiizjgb7jgZPjgagNCivjga/jgoTjgZcs44Gf44GL44KI44GXDQor44Gy44GM44GXLOOBi+OBmuOBig0KK+OBsuOCieOBrizjgbLjgo3jgZMNCivjgbLjgorjgY0s44GR44KT44GE44Gh44KNDQor44G744KT44GgLOOBleOBquOBiA0KK+OBu+OBl+OChOOBvizjgb/jgY7jgbXjgb8NCivjgYTjgaHjga/jgoks44Gf44GL44GXDQor44GE44GM44KJ44GXLOOBi+OBpOOBruOBtg0KK+OBhOOBkeOBoCzjgorjgofjgYYNCivjgYTjgb7jgoDjgoks44GK44GV44KADQor44GE44Gq44KA44KJLOOBqOOCguOBruOCig0KK+OBhOOBruOBhuOBiCzjgoTjgZnjgbLjgo0NCivjgYTjgZXjgYss44GX44GS44KLDQor44GE44GX44GgLOOBkeOBhOOBhOOBoQ0KK+OBhOOBl+OBhCzjga7jgbzjgosNCivjgYTjgZfjgZrjgYss44KG44GN44GKDQor44GE44Go44GGLOOBl+OCh+OBhuOBkw0KK+OBhOOBqOOBhizjgb7jgZXjgb8NCivjgYTjgajjgYYs44GI44GE44GYDQor44GE44KP44Gq44GMLOOBquOBiuOBkw0KK+OBmOOCk+OBsCzjgaTjga3jga7jgooNCivjgYvjgZjjgoLjgags44Gf44GP44KEDQor44GL44GTLOOBqOOBl+OBsuOBkw0KK+OBi+OCkyzjgZ/jgY/jgoQNCivjgYvjga7jgYYs44G+44KG44G/DQor44GL44GZ44KELOOBvuOBleOBquOCig0KK+OBi+OBqOOBhizjgZHjgpPjgZgNCivjgYvjgo/jgbks44KI44GX44KG44GNDQor44GL44KP44GL44G/LOOBkeOCk+OBhOOBoQ0KK+OBi+OCj+OBrizjgb7jgZXjgbLjgZMNCivjgYvjgo/jgZfjgb4s44KE44GZ44Gu44G2DQor44GN44GP44GhLOOBvuOCguOCiw0KK+OBjeOCgOOCiSzjgYLjgaTjgZcNCivjgY3jga4s44GC44GNDQor44GN44Gf44GM44KPLOOBiuOBleOCgA0KK+OBk+OBsOOChOOBlyzjgajjgZfjgbLjgo0NCivjgYTjgajjgYYs44GX44KT44GYDQor44GT44GP44GX44KH44GGLOOBvuOBleOCiw0KK+OBk+OCk+OBqSzjgb7jgZXjgobjgY0NCivjgZPjgoTjgb4s44Gy44KN44Gf44GLDQor44GP44KM44G+44GkLOOBn+OBi+OBsuOBpw0KK+OBj+OCiuOCheOBhizjgojjgZfjgYgNCivjgb7jgaHjgZ8s44G+44GV44GNDQor44G+44KL44GE44GhLOOBvuOBleOChuOBjQ0KK+OBvuOBmeOBoCzjgobjgY3jgZMNCivjgb7jgaTjgYQs44Gy44Gn44GXDQor44G+44Gk44KC44GoLOOCiOOBl+OBjQ0KK+OBquOBi+OCgOOCiSzjgbLjgo3jgobjgY0NCivjgb7jgaTjgYrjgYss44Gf44GR44GXDQor44G+44Gk44KE44G+LOOBk+OBhuOBn+OCjeOBhg0KK+OBv+OBl+OBvizjgYvjgZrjgb8NCivjgb/jgaTjgoLjgags44GN44KI44G/DQor44G/44KE44KC44GoLOOBqOOBl+OBguOBjQ0KK+OBhuOBoeOChOOBvizjgb/jgY3jgZMNCivjgb/jgZrjga4s44G+44GV44KI44GXDQor44KC44GOLOOCguOChuOCiw0KK+OCguOCiizjgb7jgZXjgbLjgo0NCivjgoLjgorjgZ8s44GL44Ga44Gy44GVDQor44KC44Go44Gw44KE44GXLOOBleOBqOOCiw0KK+OCgOOCieOBi+OBvyzjgbLjgo3jgYLjgY0NCivjgoDjgonjgZ8s44Go44KC44Gu44KKDQor44Gq44GwLOOBsuOCjeOChuOBjQ0KK+OBquOBjOOBiuOBkSzjgZXjgajjgZcNCivjgarjgYzjgZ8s44GX44KH44GG44G444GEDQor44Gq44GL44GM44KPLOOCiOOBl+OChuOBjQ0KK+OBquOBi+OBmOOBvizjgZ/jgYvjgZcNCivjgarjgYvjgoDjgoks44Gf44Gk44KEDQor44Gq44GL44Gr44GXLOOBhOOBmuOCiw0KK+OBquOBi+OBiizjgYLjgY3jgZMNCivjgarjgYvjgoTjgb4s44G144G/44GKDQor44Gt44KC44GoLOOBv+OBpOOBguOBjQ0KK+OBq+OBl+OBoCzjgojjgZfjgoQNCivjgavjgZfjgoDjgoks44GN44KP44KADQor44Gu44G244Gv44KJLOOBk+OBhuOBmA0KK+OBruOBnuOBiCzjga/jgZjjgoENCivjgYrjgYrjgY4s44Gf44GR44GXDQor44GK44GK44GILOOCiOOBhuOBhOOBoQ0KK+OBiuOBiuOBj+OBvCzjgbLjgo3jgbXjgb8NCivjgYrjgYrjgoLjgoos44Gq44GK44GNDQor44GK44GuLOOBguOBjeOCiQ0KK+OBiuOBiuOBnyzjgYLjgZXjgZMNCivjgYrjgYrjgZ/jgass44KE44GZ44Gy44KNDQor44GK44GLLOOBteOBv+OBkw0KK+OBiuOBi+OBvuOBpCzjgZ/jgYvjgbLjgo0NCivjgYrjgYvjgoLjgags44Gu44KK44GKDQor44GK44GK44GuLOOBquOBiuOBjQ0KK+OBqOOBj+OBv+OChCzjgabjgaTjgoQNCivjgZXjgYTjgajjgYYs44KG44Gf44GLDQor44GV44GL44GN44Gw44KJLOOBn+OBi+OBig0KK+OBv+OBn+OBqyzjgZHjgpPjgYTjgaENCivjgZXjga4s44GX44KF44GG44Ge44GGDQor44GV44GV44GNLOOBm+OBhOOBmA0KK+OBleOBqOOBhizjgZ/jgYvjgYvjgZoNCivjgZXjgajjgYYs44Gu44G844KLDQor44GV44Go44GGLOOBqOOCguOBjQ0KK+OBleOChOOBrizjgYTjgY/jgoQNCivjgZvjgpPjgaos44Go44GX44G/44GkDQor44GX44G244Gf44GrLOOBjeOCh+OBhuOBkw0KK+OBl+OBvuOCgOOCiSzjgojjgZfjgb/jgaQNCivjgZfjgarjgaAs44GL44Gk44G/DQor44GX44KJ44Gv44G+LOOBn+OCjeOBhg0KK+OBl+OCheOBqOOBhizjgobjgb/jgZMNCivjgZnjgaAs44Gq44GK44Gy44KNDQor44GZ44GO44KE44G+LOOBsuOBp+OBvuOBlQ0KK+OBmeOBv+OBiuOBiyzjgajjgoLjgoQNCivjgZnjgZrjgY0s44Gy44Gn44Gy44KNDQor44Gf44Gw44GTLOOBj+OBv+OBkw0KK+OBn+OBjOOCjyzjgb7jgZPjgagNCivjgZ/jgYvjga/jgZcs44GX44KT44KEDQor44KP44Gf44Gq44G5LOOBvuOBjQ0KK+OBn+OBi+OBj+OCiSzjgZHjgpPjgZnjgZENCivjgZ/jgYvjgYrjgYss44GU44GGDQor44Gf44GR44Gv44GqLOOBvuOBleOBi+OBpA0KK+OBn+OBkeOBhuOBoSzjgZXjgajjgZcNCivjgZ/jgarjgYss44GR44KT44Gf44KN44GGDQor44Gf44Gq44GLLOOBm+OBhOOBmA0KK+OBn+OBquOBiyzjga7jgorjgbLjgo0NCivjgZ/jgavjgYQs44KG44KK44GTDQor44Gf44GX44KNLOOBkeOCk+OBhOOBoQ0KK+OBpuOCieOCguOBqCzjgYjjgYTjgZgNCivjgajjgY3jgYrjgYss44Gf44GL44GX44GSDQor44Go44G/44GL44KPLOOBruOCiuOBkw0KK+OBqOOCiuOBi+OBhCzjgarjgYrjgY0NCivjgaTjgaAs44GT44GG44GE44GhDQor44GV44GL44GELOOBv+OBu+OBkw0KK+OBhuOBoCzjgYLjgaTjgZMNCivjgYbjgYjjga4s44GK44GV44KADQor44GG44KB44Gv44KJLOOBqOOBl+OBig0KK+OBhuOBl+OBsCzjgb/jga7jgosNCivjgo/jgYvjgYos44GR44GE44GYDQor44KP44Gf44G5LOOBvuOBleOBqOOBlw0KK+OCj+OBn+OBquOBuSzjgaDjgYTjgaENCivjgajjgb/jgoTjgZks44Go44GX44Gy44GVDQor44KE44G+44GgLOOBvuOBjQ0KK+OChOOBvuOBk+OBlyzjgaDjgYTjgZnjgZENCivjgoTjgb7jgoLjgags44GY44KF44KTDQor44KE44G+44GX44GfLOOBquOBiuOBkw0KK+OChOOBquOBjizjgajjgZfjgYLjgY0NCivjgojjgZPjgZXjgo8s44Gf44GP44KEDQor44KI44GT44KE44G+LOOBi+OBmuOBruOBtg0KK+OCiOOBl+OBoCzjgarjgYrjgagNCivjgojjgZfjgb8s44Gf44GE44GNDQor44KI44GX44GW44KPLOOBqOOBl+OBi+OBpA0KK+OBhOOBvizjgb7jgZXjgbLjgo0NCivjgY/jgbws44G+44GV44Gy44GTDQor44Gq44GL44Gv44KJLOOBn+OBj+OChA0KK+OBiuOBkOOCiSzjgajjgYrjgosNCivjgZ/jgYvjgb7jgaQs44GR44KT44GE44GhDQor44GE44Gu44GG44GILOOCgOOBreOBsuOCjQ0KK+OBguOBhOOBsCzjgZXjgajjgZcNCivjgYLjgb7jga4s44Gq44GK44GTDQor44GC44KK44GfLOOBsuOBp+OBguOBjQ0KK+OBguOBn+OBkOOBoSzjgbLjgo3jgZcNCivjgaDjgaYs44GX44GS44Gy44GTDQor44GI44GW44KPLOOBquOCiuOBsuOBpw0KK+OBteOBmOOCguOBqCzjgb/jgY3jgYoNCivjgbXjgY/jganjgoEs44Gf44GL44GXDQor44G144KL44GL44KPLOOBguOBkeOBvw0KK+OBr+OBjuOCj+OCiSzjgorjgoXjgYbjgZ8NCivjga/jgarjgZ8s44Gy44KJ44GPDQor44Gv44Gb44GM44KPLOOChuOBn+OBiw0KK+OBi+OBmOOCj+OCiSzjgojjgZfjgZMNCivjga/jgaPjgajjgoos44Gf44GL44KG44GNDQor44Gy44GM44GXLOOCiuOCheOBhuOBmeOBkQ0KK+OBsuOCieOBiizjgb7jgZXjgobjgY0NCivjgbLjgo3jgZss44G/44Gk44KLDQor44G744KT44G+LOOBn+OBkeOBlw0KK+OBteOBj+OCjeOBhCzjgZHjgpPjgZgNCivjgYTjgaHjga7jgZvjgY0s44Go44GX44Gy44KNDQor44GE44GR44GgLOOChuOBn+OBiw0KK+OBhOOBvuOCgOOCiSzjgZHjgpPjgZnjgZENCivjgYTjga7jgYbjgYgs44GL44Ga44GKDQor44GE44GX44GgLOOBk+OBhuOBmA0KK+OBhOOBl+OBi+OCjyzjgYLjgY3jgokNCivjgYTjgo/jgZXjgY0s44Gf44GR44GXDQor44GL44GE44Ga44GLLOOBsuOCjeOBkw0KK+OBi+OBv+OBjOOBjSzjga7jgorjgbLjgacNCivjgYvjga3jgZMs44GP44Gr44Gy44GTDQor44GL44Gf44GO44KKLOOBquOBiuOChuOBjQ0KK+OBi+OBqOOBhizjgZHjgpPjgZgNCivjgYvjgo/jgYvjgb8s44GT44GG44GYDQor44GL44Gk44GNLOOBguOBjeOBqOOCgg0KK+OBjeOCgOOCiSzjgZXjgajjgosNCivjgY3jga7jgZfjgZ8s44KG44GL44KKDQor44GN44Gf44KE44G+LOOBoeOBsuOCjQ0KK+OBguOCgeOBl+OBnyzjgarjgYrjgY0NCivjgZPjgbDjgoTjgZcs44Gf44GL44Gy44KNDQor44GT44GMLOOBruOCiuOChuOBjQ0KK+OBk+OBhOOBkSzjgYLjgY3jgYoNCivjgZPjgpPjgaks44Go44KC44Gu44KKDQor44GP44G844GNLOOBhOOBj+OBkw0KK+OBj+OCieOBl+OBqizjgYvjgaTjgbLjgagNCivjgY/jgo3jgY0s44Gk44KI44GXDQor44G+44GI44GgLOOChOOBmeOBsuOCjQ0KK+OBvuOBleOBoCzjgbLjgo3jgobjgY0NCivjgb7jgaTjgaAs44Gq44GK44G/DQor44G+44Gk44KC44GoLOOBl+OCheOBhuOBhOOBoQ0KK+OCgeOBi+OBnyzjgbLjgo3jgY0NCivjgb/jgoTjgoLjgags44GC44GN44Gy44KNDQor44KC44KKLOOChuOBiw0KK+OCguOCiuOBnyzjgYvjgZrjgojjgZcNCivjgoDjgonjgYvjgb8s44G+44GV44GC44GNDQor44KA44GfLOOBsuOBleOBlw0KK+OBquOBjOOChOOBvizjgabjgaTjgoQNCivjgarjgYvjga/jgoks44Gf44GL44GTDQor44Gq44GL44KA44KJLOOBguOBjeOBruOBtg0KK+OBquOBi+OCgOOCiSzjgb7jgooNCivjgarjgYvjgZ8s44GT44GG44GE44GhDQor44Gq44GL44GW44KPLOOBkeOBhOOBmeOBkQ0KK+OBq+OBlyzjgYvjga3jga7jgbYNCivjgavjgZfjgoTjgb4s44G/44Gq44GTDQor44Gu44GoLOOBmOOCheOCk+OBhOOBoQ0KK+OBiuOBjOOCjyzjgojjgYbjgZgNCivjgYrjgYrjgbAs44G+44GV44Gy44GnDQor44GK44KA44KJLOOBvuOChg0KK+OBhOOBkeOBvuOBpCzjgZ/jgYvjgZMNCivjgYrjgYTjgaAs44Gy44Go44GXDQor44GK44GL44GW44KPLOOBsuOBqOOBlw0KK+OBiuOBrizjgarjgYrjgb8NCivjgZXjgYTjgajjgYYs44GC44GN44Gy44GVDQor44GV44GL44GELOOBruOBtuOChOOBmQ0KK+OBleOBj+OBnyzjgojjgZfjgYLjgY0NCivjgZXjgajjgYYs44G+44GV44Gy44GTDQor44GV44Go44GGLOOBk+OBhuOBmA0KK+OBleOCj+OBr+OBlyzjgZ/jgaTjgobjgY0NCivjgZfjgbDjgZ8s44GC44KE44GTDQor44GX44G/44GaLOOBi+OBpOOChuOBjQ0KK+OBl+OBiuOBvyzjgZfjgpPjgZgNCivjgZfjgZ/jgoks44Gy44GV44GXDQor44GZ44GO44GfLOOBi+OBpOOBsuOBkw0KK+OBmeOBkeOBjOOCjyzjga7jgbbjgojjgZcNCivjgZnjgZrjgY0s44GC44GN44Gy44KNDQor44GX44KH44GGLOOBl+OCh+OBhuOBn+OCjeOBhg0KK+OBn+OBhCzjgb7jgZXjgabjgosNCivjgZ/jgYvjgY4s44Gm44Gk44KN44GGDQor44Gf44GL44Gv44GXLOOBqOOBl+OBig0KK+OBn+OBi+OChOOBvizjgbLjgafjgaTjgZANCivjgZ/jgZHjgZfjgZ8s44GX44KH44GG44Ge44GGDQor44Gf44GTLOOCiOOBl+OBjQ0KK+OBn+OBquOBiyzjgY3jgofjgYbjgbjjgYQNCivjgZ/jgass44GL44Ga44Gq44KKDQor44Gf44Ga44GRLOOBm+OBhOOBhOOBoQ0KK+OBqOOCguOBqOOBlyzjgZHjgpPjgZgNCivjgaTjgaHjgoLjgags44G144G/44GKDQor44Gk44Gu44GgLOOBl+OCh+OBhuOBmA0KK+OBhuOBoeOBoCzjgZXjgajjgosNCivjgYbjgYjjgaAs44GC44GN44Gu44KKDQor44GG44Gu44GNLOOBruOBtuOBsuOBkw0KK+OCj+OBoCzjgbLjgo3jgZ/jgaQNCivjgo/jgZfjgZos44GX44KH44GGDQor44KP44Gf44Gq44G5LOOBk+OBhuOBm+OBhA0KK+OChOOBvuOBoCzjgZ/jgYvjgagNCivjgoTjgb7jgZDjgaEs44KI44GG44GYDQor44KE44G+44KC44GoLOOBv+OBpOOBnuOBhg0KK+OChOOBvuOBqizjgZvjgYTjgYTjgaHjgo3jgYYNCivjgoTjgZfjgo0s44Gf44GR44GXDQor44KI44GT44KE44G+LOOBvuOBleOBsuOBkw0KK+OCiOOBl+OBoCzjgajjgoLjgb8NCivjgobjgY0s44Gb44Gk44GTDQor44Gy44KJ44GL44KPLOOBvuOBquOBtg0KK+OCguOCiuOBhOOBoSzjgYjjgYTjgZjjgo3jgYYNCivjgZfjgb/jgZos44GR44GEDQor44G144GY44KF44GGLOOBl+OCk+OBhOOBoQ0KK+OBr+OBjOOCjyzjgZ/jgYvjgZcNCivjga/jgZvjgYzjgo8s44Gy44Gn44GC44GNDQor44Gy44KJ44GuLOOBn+OBj+OChA0KK+OBu+OCk+OBlOOBhizjgabjgovjgbLjgZMNCivjgYTjgZHjgaAs44Go44GX44KG44GNDQor44GE44GX44GL44KPLOOBsuOCjeOBjQ0KK+OBhOOBqOOBhizjgojjgZfjgb8NCivjgYvjgarjgoTjgb4s44GT44GG44GYDQor44GL44Gf44GO44KKLOOBl+OCk+OBmeOBkQ0KK+OBjeOCguOBqCzjgZ/jgY/jgoQNCivjgY3jgoTjgb4s44Gb44GE44GYDQor44GT44GY44GqLOOBkeOCkw0KK+OBk+OCk+OBqSzjgbLjgo3jgbLjgZMNCivjgY/jgorjgZ8s44GV44Go44GXDQor44G+44GZ44GgLOOBoOOBhOOBoQ0KK+OBv+OBi+OBvyzjgb/jgaTjgYoNCivjgb/jgo8s44Gf44GL44Gu44G2DQor44KC44Gh44Ga44GNLOOBruOBtuOChuOBjQ0KK+OCguOCiuOChOOBvizjgajjgZfjgYoNCivjgarjgYzjgbXjgZgs44GN44G/44Gy44GoDQor44Gq44GL44GY44G+LOOBvuOBleOBsuOBkw0KK+OBquOBi+OCgOOCiSzjgbLjgZXjgagNCivjgarjgZnjga4s44Gq44GK44GNDQor44Gu44GgLOOChuOBhuOBkw0KK+OBiuOBjOOCjyzjgorjgofjgYbjgZMNCivjgYrjgYrjgYvjgo8s44GY44KF44KT44GTDQor44GK44GK44Gf44GrLOOBkeOCkw0KK+OBiuOBj+OCgOOCiSzjgb7jgarjgb8NCivjgYTjgY4s44GC44GN44Gu44KKDQor44GV44Gq44GgLOOCiOOBl+OBsuOCjQ0KK+OBleOBqOOBhizjgbLjgafjgbLjgZUNCivjgZvjgY0s44KI44GG44GE44GhDQor44GX44Gw44GfLOOChuOBjeOBruOCig0KK+OBl+OBvuOBi+OCjyzjgZfjgZLjgosNCivjgZfjgYrjgZjjgoos44Gy44KN44GXDQor44GZ44GgLOOBqOOCguOBr+OCiw0KK+OBmeOBmuOBjSzjgZPjgYbjgZgNCivjgZ/jgYvjgaAs44Gf44GL44Gu44KKDQor44Gf44GL44Gv44GXLOOBjeOCh+OBhuOBkw0KK+OBn+OBi+OBmSzjgaTjgojjgZcNCivjgZ/jgavjgZDjgaEs44Gq44GK44GNDQor44Gk44Gt44GL44KPLOOBsuOCjeOBteOBvw0KK+OBhuOBiOOBr+OCiSzjgbLjgafjgYLjgY0NCivjgoTjgY7jgoLjgags44Gy44KN44GXDQor44KE44G+44GQ44GhLOOBqOOCguOBkw0KK+OChOOBvuOBl+OBnyzjgYvjgZrjgY0NCivjgoTjgZbjgY0s44Gq44GK44GNDQor44KI44GX44GgLOOBr+OCi+OBsuOBkw0KK+OBguOBhOOBi+OCjyzjgbLjgo3jgbXjgb8NCivjgaHjgYvjga/jgoks44GK44GV44KADQor44KP44Gf44Gq44G5LOOBn+OBi+OBiA0KK+OBruOBluOBjSzjgabjgovjgYLjgY0NCivjgYLjgYvjgavjgZcs44Gq44GK44Gy44KNDQor44GX44G+44KC44GoLOOBguOBqOOCgA0KK+OBguOBquOBluOCjyzjgb/jga7jgosNCivjgYTjgYbjgaEs44G+44GT44GoDQor44GE44GX44GL44KPLOOBk+OBhuOBhOOBoQ0KK+OBhOOBoeOBi+OCjyzjgZ3jgogNCivjgYTjgb7jga/jgoTjgZcs44GX44KT44GE44GhDQor44GG44Gh44KE44G+LOOCiOOBl+OBn+OBiw0KK+OBiuOBhuOBleOBiyzjgb7jgZXjgZ/jgYsNCivjgYrjgYrjgZ/jgass44Gy44Gn44GNDQor44GK44GK44Gw44KE44GXLOOBl+OCk+OBmA0KK+OBiuOBkOOCiSzjgbLjgo3jgZMNCivjgYvjgY3jgoLjgags44Gy44KN44GXDQor44GL44Go44GGLOOBl+OBkuOBruOCig0KK+OBi+OBv+OChOOBvizjgbLjgo3jgYvjgZoNCivjgYvjgo/jgZss44Gq44GK44GNDQor44GN44Gf44GY44G+LOOBguOBjeOBsuOCjQ0KK+OBj+OBleOBi+OBuSzjgb7jgYjjgZMNCivjgZPjgYTjgacs44Gy44Gn44GNDQor44GT44G+44GkLOOBkeOBhOOBhOOBoQ0KK+OBleOBhOOBqOOBhizjgbLjgafjgY0NCivjgZXjgajjgYYs44GY44KF44KTDQor44GX44KF44GGLOOBvuOBleOChA0KK+OBl+OBruOBoCzjgb7jgZnjgb8NCivjgZfjgb/jgZos44GV44Go44GXDQor44GZ44GM44KP44KJLOOBl+OBkuOBteOBvw0KK+OBmeOBv+OBi+OCjyzjgYvjgaTjgYLjgY0NCivjgZ/jgYvjgZss44GN44KI44Gf44GLDQor44Gf44GR44GgLOOBkeOBhOOBhOOBoQ0KK+OBn+OBquOBiyzjgZHjgpPjgZgNCivjgZ/jgbDjgZ8s44G/44KP44GTDQor44Gk44Gh44Gv44GXLOOCgOOBreOBsuOCjQ0KK+OBqOOCgOOCjSzjgarjgaTjgbLjgZMNCivjgarjgYvjgYzjgo8s44Gf44GL44GTDQor44Gq44GZLOOBsuOCjeOBlw0KK+OBq+OBl+OBr+OCiSzjgarjgYrjgY0NCivjga7jgoDjgoks44GL44Ga44Gy44GTDQor44Gv44Gb44GM44KPLOOBkeOCk+OBhOOBoQ0KK+OBr+OCieOBoCzjgajjgoLjgZMNCivjgbLjgZjjgoos44GI44KKDQor44G144GY44GfLOOBruOBtuOBkw0KK+OBu+OBneOBi+OCjyzjgZ/jgaTjgYoNCivjgb7jgZnjgbbjgaEs44Gf44GL44GXDQor44G+44Gk44Gq44GMLOOChuOBjQ0KK+OBvuOBpOOChOOBvizjgabjgaTjgoQNCivjgb/jgZ8s44G/44Gu44KLDQor44G/44KI44GXLOOCiOOBhuOBkw0KK+OCgOOCieOChOOBvizjgb7jgZPjgagNCivjgoLjgorjgZfjgZ8s44GL44Ga44Gy44KNDQor44KE44GY44G+LOOBquOBiuOBkw0KK+OChOOBvuOBluOBjSzjgbLjgo3jgobjgY0NCivjgY/jgorjga/jgoks44G+44GV44GNDQor44KI44GT44KE44G+LOOCiOOBhuOBkw0KK+OCj+OBn+OBquOBuSzjgojjgZfjgbLjgagNCivjgY/jgo/jgZfjgb4s44GZ44GQ44KLDQor44GV44GL44KC44GoLOOBsuOBp+OBruOBtg0KK+OBhOOBqOOBhizjgZ/jgaDjgbLjgo0NCivjgYbjgoHjgarjgYQs44GZ44GZ44KADQor44GK44GL44GX44KNLOOBl+OCjeOBhg0KK+OBi+OCj+OBiuOBiyzjgbLjgafjgY0NCivjgY/jgbAs44Gf44GL44GXDQor44GT44GG44GgLOOBvuOBleOBn+OBkQ0KK+OBleOBqOOBhizjgb7jgobjgb8NCivjgYLjgbks44G+44GV44Gv44KLDQor44Gf44GL44Gv44GXLOOBsuOBleOBvw0KK+OBn+OBsOOBnyzjgYvjgaTjgobjgY0NCivjgarjgYvjgYzjgo8s44GT44GG44GE44GhDQor44Gv44GX44KC44GoLOOBqOOBiuOCiw0KK+OBsuOCieOBrizjgb7jgZXjgZ/jgYsNCivjgbvjgZ3jga4s44GC44GN44Gy44GoDQor44KA44KJ44GL44G/LOOBkeOBhOOBkw0KK+OCiOOBl+OCgOOCiSzjgYjjgooNCivjgYLjgb7jgoQs44G+44GV44KLDQor44Gh44KH44GGLOOBoOOBhOOBmeOBkQ0KK+OBlOOBhuOBoCzjgY3jgojjga7jgbYNCivjga/jgoTjgYvjgo8s44Gy44KN44GNDQor44G144KL44GfLOOBquOCi+OBjQ0KK+OBhOOBhOOBoCzjgZ/jgYvjgbLjgo0NCivjgYTjgZfjgo/jgZ/jgoos44Gy44KN44GL44GkDQor44GL44Gw44KE44G+LOOBvuOBleOBjQ0KK+OBi+OCk+OBoCzjgoTjgZnjgbLjgagNCivjgY3jgZ/jgoDjgoks44KI44GX44GKDQor44GT44KT44GuLOOBk+OBhuOBhOOBoQ0KK+OBvuOBoeOBoCzjga/jgovjgb8NCivjgb7jgaTjgYQs44Gf44GR44GXDQor44G/44GG44KJLOOBkeOBhOOBlA0KK+OBn+OBr+OCiSzjga7jgorjgZMNCivjgoDjgonjgYvjgb8s44Gf44Gk44Gy44GTDQor44Gq44GL44G/44GtLOOBvuOCguOCiw0KK+OBquOBi+OBluOCjyzjgY3jgojjgZcNCivjgYrjgYrjgZ8s44GX44GS44GC44GNDQor44GE44GX44GL44KPLOOCiOOBhg0KK+OBhOOBqOOBhizjgajjgoLjgoQNCivjgZXjgajjgYYs44Gk44GQ44Gy44GnDQor44GX44Gw44GfLOOBquOBiuOBjQ0KK+OBneOCgeOChCzjgYLjgY3jgbLjgZMNCivjgZ/jgZHjgaAs44GC44GN44KJDQor44Gf44Gq44GLLOOBk+OBhuOBhOOBoeOCjeOBhg0KK+OBn+OBq+OBl+OBnyzjgbXjgb/jga4NCivjgaTjgaHjgoQs44KI44GX44GTDQor44KP44GY44G+LOOCiuOBkw0KK+OChOOBvuOBoCzjgbLjgo3jgY0NCivjgoTjgb7jgZbjgY0s44KG44Gf44GLDQor44Gf44GL44Gv44GXLOOBvuOBleOBjQ0KK+OBguOCk+OBqeOBhizjgobjgY0NCivjgYTjgZfjgoLjgags44KK44KH44GG44GZ44GRDQor44GE44KP44GV44GNLOOBv+OBmuOBvuOBlQ0KK+OBhuOCgeOBr+OCiSzjgZ/jgYvjgZcNCivjgYrjgYzjgZ8s44KE44GZ44GXDQor44GK44Gr44GW44KPLOOBl+OBkuOBjQ0KK+OBi+OBmCzjgYrjgZXjgoANCivjgYvjga3jgZMs44Gu44G244GL44GkDQor44GL44KP44G+44GfLOOBsuOCjeOBjQ0KK+OBj+OBvCzjgajjgoLjga7jgooNCivjgZPjgYbjgZXjgY0s44GT44GG44GE44GhDQor44GV44GE44G7LOOBquOCi+OBsuOCjQ0KK+OBleOBquOBoCzjgYrjgZXjgoANCivjgZfjgZfjgaks44GP44Gr44GKDQor44GZ44GO44Gv44KJLOOBjeOCiOOBl+OBkg0KK+OBn+OBi+OBiuOBiyzjgobjgb8NCivjgYTjgajjgYYs44GY44KF44KT44GYDQor44Gq44GL44GKLOOBl+OCk+OBmA0KK+OBquOBi+OBrizjgZgNCivjgavjgZfjgYvjgYQs44Go44GX44G/44GkDQor44Gt44KN44KBLOOBsuOCjeOBlw0KK+OBr+OBtizjgb7jgZPjgagNCivjgbLjgonjgYQs44GL44GK44KKDQor44G144GY44KP44KJLOOBqOOBiuOCiw0KK+OBu+OCk+OBvizjgobjgY3jga7jgbYNCivjgb7jgaTjgZbjgo8s44Gh44GL44KJDQor44G/44KE44KC44GoLOOChOOBmeOBmA0KK+OCguOCiuOChCzjgbvjgb7jgowNCivjgoTjga4s44Gy44KN44GXDQor44KE44G+44GX44GfLOOBvuOBhOOBkw0KK+OCiOOBoCzjgZ/jgYvjgbLjgo0NCivjgo/jgZ/jgbks44Gf44GL44GXDQor44GC44GN44GwLOOBkeOBhOOBhOOBoQ0KK+OBguOBuSzjgb7jgobjgb8NCivjgYTjgajjgYYs44KI44GG44GYDQor44GE44GX44KA44KJLOOChuOBv+OBkw0KK+OBhOOBqOOBhizjgb7jgZXjgosNCivjgYTjgb7jgYQs44Gf44GR44GXDQor44GG44GI44Gv44KJLOOCguOBqOOBkw0KK+OBhuOCgeOBpCzjgYLjgY3jgbLjgZMNCivjgYTjgb7jgavjgZcs44Gy44KN44KG44GNDQor44GK44GK44GE44GXLOOBvuOBleOBr+OCiw0KK+OBiuOBi+OBrizjgobjgY0NCivjgYrjgYzjgo8s44Go44GK44KLDQor44GL44GM44G/LOOBiOOCiuOBiw0KK+OBi+OBn+OChOOBvizjgb/jgaTjgZMNCivjgYvjgb8s44KI44GX44Gm44KLDQor44GL44KP44GV44GNLOOBsuOBqOOBlw0KK+OBi+OCj+OCguOBqCzjgb/jgaHjgYoNCivjgY3jgZ/jgoLjgags44Gk44Go44KADQor44GO44KH44GG44G2LOOBsuOCjeOBkw0KK+OBk+OBhOOBkeOBoCzjgZ/jgaTjgo3jgYYNCivjgZPjgaDjgb4s44Gf44GE44Gh44KN44GGDQor44GT44Gw44KE44GXLOOBsuOBp+OBsuOBqA0KK+OBleOBhOOBlOOBhizjgb/jgo/jgZMNCivjgZXjgYvjgYzjgb8s44GE44Gh44KN44GGDQor44GV44GV44GNLOOBquOBquOBiA0KK+OBleOCjyzjgZHjgpPjgZQNCivjgZfjgb/jgZos44KG44GN44GKDQor44GX44KH44GG44GgLOOBl+OBkuOBruOCig0KK+OBmeOBmuOBjSzjgYvjgZrjgbLjgokNCivjgYTjgZfjga/jgb4s44GR44KT44GoDQor44Gf44GL44Gv44GXLOOBvuOBjeOBkw0KK+OBn+OBkeOCjyzjgZfjgpPjgZgNCivjgZ/jga/jgoks44GV44Go44GXDQor44Gk44Gk44G/LOOBvuOBk+OBqA0KK+OBquOBhOOBqOOBhizjgZPjgYbjgZgNCivjgarjgYvjgZjjgb4s44Gu44Ge44KADQor44Gq44GL44KA44KJLOOBneOBhuOBhOOBoeOCjeOBhg0KK+OBhOOBkeOBoCzjgb7jgZXjgZ/jgYsNCivjgavjgZcs44Gk44Gt44GC44GNDQor44Gu44Gu44GE44Gh44KELOOBvuOBmeOBig0KK+OBr+OBl+OBmuOCgSzjgobjgYbjgZMNCivjga/jgaPjgajjgoos44KG44GGDQor44GE44Gu44GQ44GhLOOBi+OBpOOBteOBvw0KK+OBsuOBvuOBjSzjgajjgoLjga7jgooNCivjgbXjgYvjgZbjgo8s44KK44GIDQor44G144GY44Gq44GMLOOBteOBv+OBkw0KK+OBteOCi+OChCzjgb7jgorjgZMNCivjgbvjgorjgYvjgo8s44Go44KC44Gy44KNDQor44GE44GQ44GhLOOBn+OBi+OBsuOCjQ0KK+OBv+OBpOOBr+OBlyzjgYjjgYTjgYTjgaENCivjgb/jgoTjgZfjgZ8s44KI44GG44GTDQor44KA44KJ44G+44GkLOOBvuOBleOChuOBjQ0KK+OBhOOBruOBhuOBiCzjgYLjgY3jga7jgooNCivjgoTjga4s44Gf44Gg44Gf44GLDQor44KE44G+44GgLOOBn+OBpOOBig0KK+OChOOBvuOCguOBqCzjgoDjga3jgZ/jgYsNCivjgojjgZfjgaAs44KK44KH44GGDQor44KP44Gf44Gq44G5LOOBsuOBp+OChuOBjQ0KK+OCj+OBn+OBquOBuSzjgajjgZfjgYgNCivjgZPjgYbjgaAs44GV44Go44KLDQor44GK44GM44KPLOOBsuOCjeOBguOBjQ0KK+OBguOBjeOCguOBqCzjgZnjgZnjgoANCivjgYLjgZXjga4s44Go44KC44Gy44GTDQor44GC44G5LOOBvuOBleOBiuOBvw0KK+OBhOOBpOOBrizjgb/jgY3jgYoNCivjgYTjgaHjga7jgZss44GT44Ga44GIDQor44GE44KK44GfLOOChOOBmeOBguOBjQ0KK+OBhOOBl+OBiuOBiyzjgZfjgpPjgYTjgaENCivjgYTjgaHjgY0s44G+44GV44GoDQor44GE44Gv44KJLOOBjeOCiOOBn+OBiw0KK+OBhOOBvuOBmizjgaTjgojjgZcNCivjgYTjgo/jgZnjgY4s44G/44GLDQor44GG44GZ44GELOOBvuOBleOBsuOCjQ0KK+OBiOOBqOOBhizjgZHjgpPjgZgNCivjgYrjgYYs44KI44GX44Gy44KNDQor44GE44KP44GN44KKLOOCj+OBn+OCiw0KK+OBiuOBiuOBpOOBjSzjgZjjgoXjgpMNCivjgYrjgoDjgoks44GP44G/DQor44GK44GL44GW44GNLOOBqOOCguOBv+OBoQ0KK+OBiuOBjOOCjyzjgYLjgY3jgokNCivjgY3jgZ/jgoDjgoks44G+44KK44GTDQor44GK44GK44KE44G+LOOBoeOBmuOCiw0KK+OBi+OBleOBluOBjSzjgojjgZfjgbLjgo0NCivjgYvjgaTjga4s44Gf44GL44Gu44KKDQor44GL44Go44KKLOOBkeOCk+OBmA0KK+OBjOOBvyzjgbLjgo3jgZcNCivjgYvjgo/jgYvjgb8s44G+44GV44G/DQor44GL44KP44G/LOOBl+OCk+OBmA0KK+OBjeOBn+OBl+OCjSzjgYvjgZrjgojjgZcNCivjgY3jgoDjgoks44GX44GS44KLDQor44GP44GY44KJ44GK44GLLOOBoOOBhOOBjQ0KK+OBhOOBl+OBkOOCjSzjgZ/jgo3jgYYNCivjgYTjgarjgajjgb8s44Gg44GE44GZ44GRDQor44GT44Ga44G+LOOBvuOBhOOBkw0KK+OBk+OBl+OBhCzjgajjgoLjgbLjgo0NCivjgZPjgavjgZcs44Gf44Gg44GXDQor44GT44Gw44KE44GXLOOCiOOBl+OBig0KK+OBleOBhOOBqOOBhizjgajjgoLjgYgNCivjgZXjgYvjgYQs44G/44Gt44GKDQor44GV44GL44KC44GoLOOBmOOCheOCk+OBkw0KK+OBleOBqOOBhizjgZfjgpPjgYTjgaHjgo3jgYYNCivjgYTjgZfjgZDjgo0s44Gy44Gn44Gf44GLDQor44GX44Gq44GgLOOCiOOBl+OBkw0KK+OBl+OBvuOBoCzjgojjgZfjgZXjgaANCivjgYTjgajjgYYs44GN44KH44GG44GTDQor44GZ44GO44KE44G+LOOBi+OBmuOBqg0KK+OBmeOBmuOBjSzjgZPjgYbjgZgNCivjgZvjgY3jgZDjgaEs44GR44GE44GTDQor44GL44G/44KELOOBi+OBmeOBvw0KK+OBn+OBi+OBrizjgZHjgpPjgYTjgaENCivjgZ/jgYvjga/jgZcs44GT44GG44GE44Gh44KN44GGDQor44Gf44GL44G/44GW44KPLOOCiuOCheOBhuOBjQ0KK+OBn+OBkeOBhuOBoSzjgZ/jgYvjgY3jgogNCivjgZ/jgZHjgoLjgags44GL44Ga44Gy44GTDQor44Gf44Gh44Gw44GqLOOBguOChOOBkw0KK+OBn+OBquOBiyzjgarjgYrjgZMNCivjgZ/jgarjgb8s44Gk44Gt44GKDQor44Gf44Gu44GK44GLLOOBv+OBiOOBkw0KK+OBoeOCheOBhizjgZXjgoTjgYsNCivjgaTjgaHjgoQs44Gb44KM44GqDQor44Go44GYLOOBvuOBleOBkw0KK+OBqOOCiOOBoCzjgZ/jgY/jgoQNCivjgarjgYvjgZjjgb4s44Go44KC44GTDQor44Gq44GM44GfLOOCiOOBl+OBsuOBkw0KK+OBquOBjOOBr+OCiSzjgojjgZfjgobjgY0NCivjgarjgYvjgoDjgoks44G+44GV44GL44GkDQor44Gr44GX44GL44KPLOOBhOOCj+OBig0KK+OBq+OCjyzjgobjgY3jgYgNCivjga7jgYzjgb8s44KG44GLDQor44Gv44GX44Ga44KBLOOBn+OBi+OBlw0KK+OBr+OBm+OBuSzjgojjgYbjgbjjgYQNCivjga/jgarjgbbjgZUs44GK44GV44KADQor44Gv44KE44GXLOOBvuOBk+OBqA0KK+OBr+OCi+OBn+OBqyzjgZ/jgYvjgbLjgo0NCivjgbLjgofjgYbjgYgs44Go44KC44Gy44KNDQor44Gy44KJ44Gs44G+LOOBi+OBmuOBig0KK+OBteOBj+OBoCzjgZ/jgYvjgbLjgo0NCivjgbXjgZjjgYos44Gf44GL44KG44GNDQor44GE44Gu44GG44GILOOBruOCiuOBig0KK+OBteOCi+OBi+OCjyzjgb7jgZXjgb/jgaQNCivjgbXjgo8s44G/44GKDQor44G+44GI44GL44KPLOOCi+OBvw0KK+OBvuOBjeOBnyzjgYvjgaTjgobjgY0NCivjgb7jgaTjgYbjgoks44GI44KK44GTDQor44G+44Gk44GgLOOBn+OBi+OBlw0KK+OBvuOBpOOBv+OChCzjgZHjgpPjgYTjgaENCivjgb7jgarjgbks44KK44KH44GG44GZ44GRDQor44G/44Gq44GoLOOBsuOCjeOChuOBjQ0KK+OCgOOCieOBi+OBvyzjgb7jgZXjgb8NCivjgoLjgajjgojjgZcs44G+44GT44GoDQor44KC44KK44GfLOOBkeOCk+OBmA0KK+OChOOBjizjgZHjgYTjgZnjgZENCivjgYzjgpMs44Gv44Gq44GIDQor44KE44G+44GQ44GhLOOChOOBmeOBvuOBlQ0KK+OChOOBvuOBleOBjSzjgZjjgoXjgpMNCivjgoTjgb7jgaAs44Gf44Gk44GYDQor44KE44G+44Gr44GXLOOBquOBiuOBjQ0KK+OCiOOBk+OBnyzjgajjgoLjgbXjgb8NCivjgojjgZfjgYvjgo8s44Gf44GP44KEDQor44KI44GX44KA44KJLOOBj+OBq+OBsuOBkw0KK+OCj+OBjeOBnyzjgajjgYrjgosNCivjgo/jgZ/jgarjgbks44Gd44GGDQor44GC44G+44GTLOOCiOOBl+OBig0KK+OBvuOBrizjgYLjgY0NCivjgYbjgaHjgoDjgoks44Gh44Gq44GkDQor44GV44GP44KJ44GELOOBvuOBvw0KK+OBl+OCieOBhCzjgobjgZ/jgYsNCivjgabjgonjgY/jgoks44KI44GG44GYDQor44GK44GL44GgLOOBn+OBpOOBlw0KK+OBlOOBqOOBhizjgYLjgY3jgbLjgo0NCivjgaTjgbDjgY0s44Gb44GE44GE44Gh44KN44GGDQor44GE44Gq44GM44GNLOOBsuOBp+OBqOOBlw0KK+OBu+OCiuOBuSzjgoLjgajjgZgNCivjgYvjgYQs44KI44GX44GIDQor44Gf44GL44GgLOOBqOOBj+OBsuOBkw0KK+OBk+OBn+OBqyzjgbXjgb/jgbLjgZMNCivjgYTjga/jgoks44GR44GE44GTDQor44GC44GN44Gv44KJLOOBl+OCheOCk+OBmeOBkQ0KK+OBguOBuSzjgobjgY0NCivjgYLjgonjgY0s44Gy44KN44GXDQor44GE44GX44GELOOBruOBtuOChOOBmQ0KK+OBhOOBl+OBnOOBjSzjgaDjgYTjgZnjgZENCivjgYTjgZ/jgass44Gf44GL44GXDQor44GE44Go44GGLOOBl+OBmuOBkw0KK+OBhOOBrizjgb/jgY0NCivjgYTjgo/jgZbjgY0s44Gy44KN44Gf44GLDQor44GG44GI44GuLOOBkeOCk+OBmA0KK+OBhuOCgeOBr+OCiSzjgarjgaTjgZMNCivjgYrjgYrjgYgs44Gg44GE44GZ44GRDQor44GK44GK44GkLOOBoeOBiA0KK+OBiuOBiuOBpOOBvCzjgb7jgZXjgb/jgaQNCivjgYrjgYvjgaAs44Gf44Gk44KEDQor44GK44GL44KC44GoLOOBsuOBleOBlw0KK+OBiuOBj+OBquOBiyzjgZvjgYTjgZcNCivjgYrjgbDjgoks44KG44KK44GTDQor44GL44GY44Gq44GMLOOChuOBn+OBiw0KK+OBi+OBqOOBhizjgorjgofjgYYNCivjgYvjgajjgYYs44KP44Gf44KLDQor44GL44KP44GELOOBk+OBhuOBmA0KK+OBi+OCj+OBkOOBoSzjgZnjgZnjgoANCivjgY3jgZcs44KM44GE44GTDQor44GN44Gp44GT44KNLOOBguOBpOOBlw0KK+OBj+OBvOOBnyzjgb7jgobjgb8NCivjgY/jgo/jgbDjgoks44KG44GL44KKDQor44GT44GP44G8LOOCguOCguOBiA0KK+OBlOOBqOOBhizjgZHjgYTjgZMNCivjgZPjgb/jgoTjgb4s44G+44GV44KI44GXDQor44GV44GE44Go44GGLOOBl+OBkuOCiw0KK+OBleOBi+OCguOBqCzjgaHjgYvjgokNCivjgZXjgZXjga4s44GC44GL44GODQor44GV44Gq44GgLOOBvuOBleOChuOBjQ0KK+OBl+OBvuOBoCzjgZ/jgZHjgZcNCivjgZfjgoLjgbXjgZgs44Gu44G244Gy44GTDQor44GX44KPLOOBkeOCk+OBhOOBoQ0KK+OBmeOBjuOBr+OCiSzjgbLjgo3jga7jgbYNCivjgZnjgZrjgY0s44G+44GV44KEDQor44Gb44GNLOOBguOBpOOBquOCig0KK+OBn+OBi+OBjizjgYvjgogNCivjgZ/jgYvjga/jgZcs44Gy44KN44Gq44GKDQor44Gf44GN44GW44KPLOOBleOBqOOBlw0KK+OBn+OBkeOBoCzjgobjgYbjgYTjgaHjgo0NCivjgZ/jgarjgYss44Gb44GE44GYDQor44Gf44Gr44GL44KPLOOCiOOBl+OBpOOBkA0KK+OBn+OBsOOBnyzjgZHjgYTjgZ/jgo3jgYYNCivjgaTjgYvjgaAs44KK44GIDQor44Gk44G844GfLOOBvuOBleOChA0KK+OBqOOBhuOBi+OBhOOCiuOCkyzjgobjgb8NCivjgajjga7jgYQs44GC44GN44GTDQor44Gq44GL44GM44KPLOOCiOOBl+OBruOCig0KK+OBquOBjOOBrizjgorjgofjgYbjgZ8NCivjgarjgYvjgoTjgb4s44Go44KC44Gy44KNDQor44Gr44GX44GK44GLLOOBl+OCk+OBhOOBoQ0KK+OBreOBjuOBlyzjgorjgYsNCivjga7jgZbjgY0s44Gg44GE44GZ44GRDQor44Gv44GX44GQ44GhLOOBqOOBl+OBsuOCjQ0KK+OBr+OBo+OBqOOCiizjgobjgYbjgYTjgaENCivjga/jgb7jgaAs44Gg44GE44GYDQor44Gy44GX44Gs44G+LOOBguOBpOOBlw0KK+OBsuOCieOBnyzjgb7jgb/jgZMNCivjgbXjgY/jgaAs44Gf44GL44GXDQor44G144GY44GI44GgLOOBsuOBleOBi+OBmg0KK+OBteOBmOOCj+OCiSzjgZ/jgY/jgagNCivjgbvjgorjgYvjgo8s44GX44KF44GG44GYDQor44G+44Gk44GKLOOBsuOBp+OBruOCig0KK+OBvuOBpOOChOOBvizjgb/jgaTjgabjgosNCivjgb/jgoQs44GC44GN44KJDQor44G/44KE44KC44GoLOOBj+OBq+OBkw0KK+OCgOOCieOBi+OBvyzjgZ/jgaTjgbLjgo0NCivjgoLjgorjgZ8s44G+44G/DQor44KE44GQ44KJLOOBl+OCk+OBmA0KK+OChOOBvuOBoCzjgb/jgZrjgbsNCivjgobjgoks44GR44KT44GE44GhDQor44KI44GX44GW44KPLOOChuOBhuOBkw0KK+OCjeOBjyzjgYLjgY3jgZMNCivjgo/jgonjgbMs44Gy44KN44Gu44KKDQor44G/44Gy44KJLOOCiuOCh+OBhuOBuOOBhA0KK+OBv+OBjuOBnyzjgb7jgaoNCivjgZ/jgZHjgYbjgaEs44KK44KH44GGDQor44GK44Gu44Gn44KJLOOBj+OBq+OBsuOCjQ0KK+OBguOBi+OBjOOCjyzjgoLjgajjgZMNCivjgYLjgZXjgazjgb4s44GC44KEDQor44GC44KJ44GELOOBpOOCiOOBlw0KK+OBhOOBluOCjyzjgaHjga/jgosNCivjgYTjgZfjgbDjgZcs44Go44GX44KG44GNDQor44GE44GnLOOBquOCi+OBvw0KK+OBhOOBruOBhuOBiCzjgb7jgZPjgagNCivjgYTjgb7jgZzjgY0s44GP44G/44GTDQor44GE44KP44GfLOOBk+OBhuOBmA0KK+OBhuOBleOBvyzjgb7jgorjgZMNCivjgYjjga7jgY3jgaks44KI44KK44GTDQor44GK44GN44GfLOOChuOBjeOBruOCig0KK+OBiuOBiuOBpOOBiyzjgoLjgajjgYQNCivjgYrjga4s44Gy44KN44GXDQor44GK44GL44GgLOOBi+OBmuOBsuOCjQ0KK+OBiuOBj+OBj+OBvCzjgZ/jgYvjgZcNCivjgYvjgarjgYQs44GR44KT44GE44GhDQor44GL44G/44KELOOBleOBoeOBkw0KK+OBi+OCj+OBleOBjSzjgbLjgo3jgY0NCivjgY3jgaAs44GI44GE44GZ44GRDQor44GN44KA44KJLOOBteOBv+OBqA0KK+OBj+OCgeOBhuOBoSzjgZHjgpPjgZgNCivjgY/jgo/jga/jgoks44GX44GuDQor44GT44GMLOOBn+OBj+OBmA0KK+OBk+OBsOOChOOBlyzjgYLjgpPjgaoNCivjgZXjgYTjgajjgYYs44GR44KT44GE44GhDQor44GV44GV44GNLOOBr+OBquOBkw0KK+OBleOBqOOBhizjgb/jgY0NCivjgZXjga/jgoks44Gf44GL44G144G/DQor44GX44GgLOOCiOOBl+OBsuOCjQ0KK+OBl+OBv+OBmizjgZ/jgaTjgYoNCivjgZfjgoLjgZbjgY0s44Gf44Gk44Gy44GTDQor44GZ44GO44GG44KJLOOBvuOBleOBruOBtg0KK+OBmeOBqCzjgZXjgajjgZcNCivjgZvjgags44GR44GE44GYDQor44Gf44GL44GOLOOBruOCiuOChuOBjQ0KK+OBn+OBi+OBr+OBlyzjgb/jgYsNCivjgZ/jgZHjgaAs44KG44GG44GYDQor44Gf44GgLOOCiOOBl+OBn+OBiw0KK+OBn+OBq+OBkOOBoSzjgZ/jgYvjga7jgooNCivjgZ/jgoDjgoks44GR44GE44GTDQor44Gk44GL44Gv44KJLOOBv+OBmuOBuw0KK+OBpOOBvOOBhuOBoSzjgYLjgY3jgbXjgb8NCivjgabjgonjgaAs44KI44GX44GNDQor44Go44G/44GELOOBmOOCheOCk+OBkw0KK+OBquOBhOOBqOOBhizjgZ/jgYvjgYoNCivjgarjgYzjgZXjgYss44GT44GG44GYDQor44Gq44GM44GuLOOChOOBmeOBig0KK+OBquOBi+OCgOOCiSzjgYjjgYTjgZgNCivjgavjgZcs44Gq44GK44KG44GNDQor44Gr44GX44GgLOOCiuOCh+OBhuOBuOOBhOOBnw0KK+OBruOBkOOBoSzjgYvjgZrjgojjgZcNCivjga7jgoDjgoks44GL44Ga44GKDQor44Gv44Gj44Go44KKLOOBleOBqOOBvw0KK+OBr+OChOOBi+OCjyzjgobjgY0NCivjga/jgonjgaAs44G/44GIDQor44Gy44Gn44GX44G+LOOBv+OBjeOBkw0KK+OBteOBi+OBiizjgb/jgobjgY0NCivjgbXjgY/jga/jgoks44KG44GN44GTDQor44G144GY44KC44GoLOOBiOOCiuOBkw0KK+OBu+OBl+OBrizjgZnjgb/jgYoNCivjgbvjgorjgZDjgaEs44GY44KF44KT44GE44GhDQor44G+44GN44GuLOOBn+OBkeOBig0KK+OBk+OBv+OChCzjga7jgbzjgosNCivjgZPjgbDjgoTjgZcs44Gy44KN44GXDQor44GL44G/44GP44G8LOOBkeOCk+OBmA0KK+OBvuOBpOOBiizjgY3jgojjgZcNCivjgarjgYvjgaEs44GN44KI44GXDQor44GT44GZ44GOLOOCiOOBl+OBvw0KK+OBi+OBpOOBvuOBnyzjgajjgZfjgYvjgZoNCivjgYvjgYzjgoTjgb4s44G+44GV44Gv44KLDQor44GP44GcLOOBv+OBjeOBig0KK+OBj+OBvuOBoCzjgb7jgZXjgYLjgY0NCivjgZPjgZjjgofjgYYs44GV44Gq44GIDQor44GL44GX44GP44G+LOOBkeOCk+OBnuOBhg0KK+OBjeOBj+OBoSzjgojjgZfjgbLjgZUNCivjgY/jgb7jga4s44G+44GV44KG44GNDQor44GT44Gw44KE44GXLOOBl+OCheOCk+OBmA0KK+OBk+OBsOOChOOBlyzjga7jgbbjgZMNCivjgZPjgavjgZcs44GR44KT44GE44GhDQor44GT44Gw44GX44GM44KPLOOBsuOBqOOBlw0KK+OBi+OBhOOBqSzjgb/jgbsNCivjgY/jgo3jgY0s44GY44KF44KTDQor44GL44Gq44Gf44GrLOOCiuOBiA0KK+OBjeOBn+OBjOOCjyzjgarjgYrjgZ/jgYsNCivjgb/jgZrjgoLjgags44Gq44KL44GNDQor44G/44KE44GK44GLLOOBkeOCk+OCjeOBhg0KK+OCgOOCieOBnyzjgZHjgpPjgZgNCivjgoLjgorjgZ8s44Gy44Gn44Go44KCDQor44KE44Gq44GO44GgLOOBiOOCiuOBkw0KK+OChOOBvuOBluOBjSzjgZHjgpMNCivjgoTjgb7jgoLjgags44KE44GZ44Gu44KKDQor44KI44GULOOBqOOCguOBruOCig0KK+OCiOOBreOBoCzjgobjgb/jgZMNCivjgo/jgZMs44KK44GIDQor44GC44GL44Gv44GtLOOBsuOCjeOBguOBjQ0KK+OBguOBleOBuSzjgYvjgogNCivjgYLjgonjgYQs44Gy44Gn44GKDQor44GE44GR44GgLOOCiOOBl+OBn+OBiw0KK+OBhOOBl+OBqSzjgobjgY3jgZMNCivjgYTjgZrjga4s44G/44Gk44Gy44KNDQor44GE44Go44GGLOOBn+OBkeOBlw0KK+OBhOOBruOBhuOBiCzjga7jgbbjgZ/jgYsNCivjgYTjgo/jgZ8s44KI44GX44Gy44KNDQor44GG44GL44GELOOBsuOBleOBquOBjA0KK+OBiOOBqOOBhizjgbLjgo3jgY0NCivjgYrjgYrjgZXjgYss44Gf44Gm44GNDQor44GK44GK44Gr44GXLOOBv+OBpOOCiw0KK+OBiuOCgOOCiSzjgajjgoLjgZMNCivjgYrjgYvjga4s44KE44GZ44G144G/DQor44GK44GM44KPLOOBn+OBj+OChA0KK+OBiuOBluOBjSzjgZ/jgYvjgobjgY0NCivjgYrjgajjgYzjgo8s44KK44KH44GG44GTDQor44GL44GV44GELOOBquOBiuOBkw0KK+OBi+OBmeOBjCzjgZXjgarjgZMNCivjgYvjgajjgYYs44GR44KT44GE44Gh44KNDQor44GL44KB44Gf44GLLOOBn+OBhOOBmeOBkQ0KK+OBi+OCj+OBkOOBoSzjgYLjgobjgb8NCivjgYvjgo/jgbDjgZ8s44GC44KG44G/DQor44GN44Gf44GM44KPLOOBn+OBkeOBlw0KK+OBjeOCgOOCiSzjgojjgZfjgYvjgZoNCivjgY3jgorjgZXjgZMs44Gm44Gj44G644GEDQor44GP44KJ44Gv44GXLOOBn+OBi+OBguOBjQ0KK+OBlOOBhuOBoCzjgZ/jgZHjgbLjgo0NCivjgZPjgabjgoks44GN44G/44Gy44KNDQor44GT44Gw44KE44GXLOOBquOBpOOBkw0KK+OBk+OBvuOBpOOBsOOCiSzjgajjgoLjgbLjgZUNCivjgZXjgYTjgajjgYYs44Gm44KL44Gy44GVDQor44GV44GL44GELOOBn+OBi+OChuOBjQ0KK+OBleOBj+OCieOBhCzjgZXjgaDjgojjgZcNCivjgZXjgajjgYYs44GC44GNDQor44GV44KP44GV44GNLOOBn+OBi+OBlw0KK+OBl+OBvuOBrizjgajjgZfjgYLjgY0NCivjgZfjgofjgYbjgaAs44GP44G/DQor44GX44KT44Gf44GrLOOBkeOCk+OBnw0KK+OBmeOBjuOChOOBvizjgZ/jgYvjga0NCivjgZvjgY3jgoLjgags44GL44Gk44GC44GNDQor44Gf44GL44Gv44GXLOOCjOOBhA0KK+OBn+OBkOOBoSzjgo/jgZ/jgosNCivjgZ/jgaHjgbDjgaos44Gq44GK44GoDQor44Gf44Gq44GLLOOBleOBoeOBiA0KK+OBn+OBvuOBjSzjgarjgYrjgZMNCivjgaTjgYvjgaAs44Gm44Gk44KEDQor44Gk44G844GP44KJLOOBn+OBj+OChA0KK+OBqeOBhCzjga7jgbbjgZ/jgYsNCivjgajjgaAs44GX44KF44KT44GZ44GRDQor44Gq44GM44GV44GLLOOBv+OBoeOBkw0KK+OBquOBi+OBl+OBvizjgYLjgY3jgbLjgo0NCivjgarjgYvjgavjgZcs44G/44Gp44KKDQor44Gq44GL44KA44KJLOOBvuOChg0KK+OBquOBi+OChOOBvizjgZ/jgZHjgZcNCivjgavjgZfjga4s44KG44GLDQor44Gu44GP44GKLOOBi+OBiuOCig0KK+OBsOOBk+OBlyzjgZfjgpPjgZQNCivjga/jgZ/jga4s44KI44GG44GTDQor44Gv44KE44GXLOOBleOBqOOBkw0KK+OBr+OCieOBoCzjgYLjgaTjgZcNCivjgbLjgonjgYQs44KG44GG44GZ44GRDQor44Gy44KN44GILOOBguOBpOOBlw0KK+OBteOBj+OBoCzjgZXjgoTjgYsNCivjgbXjgZjjgoDjgoks44GC44GN44GTDQor44G144KL44GL44KPLOOBsuOCjeOBkw0KK+OBu+OBneOBoCzjgZfjgoXjgpPjgZQNCivjgb7jgYjjgYvjgo8s44G/44KPDQor44G+44GV44Go44GG44G/LOOBvuOBhOOBkw0KK+OBvuOBpOOBiuOBiyzjgajjgoLjgZMNCivjgb7jgaTjgbDjgoks44GC44GN44GTDQor44G/44GG44KJLOOBjeOCiOOBvuOBlQ0KK+OBv+OBnuOBr+OBnyzjgaHjgYgNCivjgb/jga/jgoks44G+44GV44GNDQor44G/44KE44KA44KJLOOBguOChA0KK+OCgOOCieOBnyzjgY/jgb/jgZMNCivjgoLjgoos44GP44G/44GTDQor44KC44KN44GILOOBsuOCjeOBi+OBmg0KK+OChOOBquOBjuOBleOCjyzjgZHjgYTjgZnjgZENCivjgoTjgb7jgYzjgZ8s44G+44GT44GoDQor44KE44G+44GgLOOBruOBtuOBkw0KK+OChOOBvuOCguOBqCzjgabjgovjgbLjgZMNCivjgoTjgb7jgoLjgags44KP44Gf44KLDQor44KI44GT44KE44G+LOOBguOChuOBvw0KK+OCiOOBl+OBoCzjgarjgYrjgZMNCivjgojjgZfjgoDjgoks44Gg44GE44GZ44GRDQor44KP44GgLOOBhOOBleOCgA0KK+OCj+OBn+OBquOBuSzjgbLjgo3jgZcNCivjgZXjgZXjga4s44GZ44GZ44KADQor44GT44Gg44G+LOOBn+OBi+OBsuOBkw0KK+OBi+OCj+OBl+OBvizjgb7jgZXjgarjgooNCivjgYvjgo/jga4s44GT44GG44GE44GhDQor44GL44G/44GG44KJLOOBi+OBmuOBsuOBpw0KK+OBk+OCk+OBrizjgbLjgafjgY0NCivjgY/jgoTjgb4s44Gf44GR44GXDQor44GT44GELOOBm+OBhOOBhOOBoeOCjeOBhg0KK+OBi+OBleOBmOOBvizjgbLjgo3jgbXjgb8NCivjgYvjgajjgYYs44Go44KC44G/DQor44GP44G844GfLOOBsuOCjeOChuOBjQ0KK+OBkeOBjOOBleOCjyzjgbLjgZXjgZcNCivjgYvjgo/jgY7jgZcs44Gy44KN44GXDQor44GL44G+44GgLOOBn+OBi+OBlw0KK+OBjeOBj+OBoSzjgYrjgZXjgoANCivjgYvjgajjgYYs44GL44Ga44Gy44GTDQor44G+44Gh44GgLOOBi+OBmuOBig0KK+OCgOOCieOBleOBjSzjgajjgZfjgYoNCivjgb7jgaTjgoLjgags44GR44KT44GE44GhDQor44G+44GV44GNLOOBjeOBj+OBig0KK+OBv+OBmuOBn+OBqyzjgarjgYrjgbLjgZMNCivjgb7jgovjgoTjgb4s44Gb44GE44GYDQor44KA44KJ44GX44G+LOOBn+OBoOOBig0KK+OBv+OBmuOBnyzjgojjgZfjgYoNCivjgoLjgorjgYQs44GO44KH44GYDQor44G/44KE44GW44KPLOOCiOOBl+OBig0KK+OBv+OBmuOBrizjgobjgorjgZMNCivjgoDjgonjgYTjgZcs44G+44KC44KLDQor44KA44KJ44GL44G/LOOBi+OBmuOBig0KK+OCgOOCieOBvuOBpCzjgYLjgaTjgZcNCivjgb/jgZ/jgY8s44GR44GE44Ge44GGDQor44G+44GI44GgLOOBguOBjeOBig0KK+OCgOOCieOBhCzjgajjgojjgb8NCivjgb7jgaTjgaAs44GV44Go44GXDQor44G/44Gm44KJLOOChOOBmeOBig0KK+OCguOCiizjgaTjgajjgoANCivjgb7jgaTjgYQs44Gf44GL44GXDQor44G/44GG44KJLOOBj+OBq+OBig0KK+OBvuOBpOOCguOBqCzjgZ/jgZHjgZcNCivjgb7jgaTjgZbjgo8s44KI44GX44GKDQor44G/44GL44G/LOOBr+OCi+OBjQ0KK+OBn+OBtuOBoSzjgZHjgpPjgZgNCivjgarjgYvjgZjjgb4s44G+44GV44Gy44KNDQor44Gq44GE44Go44GGLOOBn+OBkeOBig0KK+OBq+OBl+OBqizjgY3jgb/jgbLjgagNCivjgarjgYvjgYzjgb8s44GX44KF44GG44GE44GhDQor44Gq44GL44Gv44GfLOOBi+OBmuOBqOOBlw0KK+OBq+OBl+OBiuOBiyzjgbLjgo3jgZcNCivjgavjgZfjgaAs44KI44GX44KN44GGDQor44Gu44KA44KJLOOBj+OBq+OBsuOBkw0KK+OBquOBi+OCgOOCiSzjgbLjgafjgobjgY0NCivjgarjgYTjgajjgYYs44GL44Ga44GC44GNDQor44Gr44Gj44GfLOOChuOBn+OBiw0KK+OBquOBi+OBmOOBvizjgYvjgaTjgYoNCivjgarjgYvjgZss44Go44GX44GC44GNDQor44Gq44GL44GM44KPLOOBruOBtuOBig0KK+OBquOBi+OBmOOBvizjgoDjga3jgZ/jgYsNCivjgarjgYvjgoDjgoks44G744Ga44G/DQor44Gq44GM44GX44G+LOOBquOBiuOBmA0KK+OBiuOBjSzjgZnjgb/jgYoNCivjgYrjgY/jgaAs44Go44GX44GKDQor44GK44GK44Gv44GXLOOBsuOCjeOBlw0KK+OBiuOBjOOCjyzjgajjgYrjgosNCivjgYrjgZbjgo8s44Gy44KN44GXDQor44GK44GK44Gv44GXLOOChuOBn+OBiw0KK+OBiuOBiuOBrizjgb/jgaTjgYoNCivjgYrjgYrjgYTjgZcs44GYDQor44GK44GK44GL44KPLOOBi+OBiuOCiw0KK+OBiuOCiuOBjOOBlSzjgoTjgZnjgZ/jgZENCivjgYrjgYrjgZ8s44KI44GX44Gy44GTDQor44GK44GW44GNLOOBmOOCheOCk+OBhOOBoQ0KK+OBiuOBoOOBl+OBvizjgZ/jgaDjgZcNCivjgYrjgYrjgbLjgoks44Gb44Gk44GYDQor44GK44GK44KELOOBsuOBp+OBuw0KK+OBiuOBi+OBrizjgYLjgY3jgZMNCivjgYrjgZDjgZcs44GC44GR44G/DQor44GK44GK44GE44GM44KPLOOBn+OBi+OBr+OCiw0KK+OBquOBi+OBn+OBqyzjgZfjgpPjgYTjgaENCivjgZfjgonjgYrjgYzjgo8s44KJ44GE44GfDQor44Gq44GL44KA44KJLOOBqOOBl+OBv+OBpA0KK+OBguOBuSzjgYjjgb/jgZMNCivjgYvjgo/jgYbjgaEs44G+44KK44GIDQor44GE44Go44GGLOOBkeOCk+OBneOBhg0KK+OBk+OBhOOBmuOBvyzjgZ/jgY/jgoQNCivjgYvjgarjgYrjgYss44Gy44KN44GXDQor44GC44KK44G+LOOChOOCiOOBhA0KK+OBhuOBvuOChOOBr+OCiSzjgoTjgZnjgb8NCivjgYvjga3jgb7jgaQs44GV44GN44GTDQor44G144GL44KELOOBj+OBq+OBguOBjQ0KK+OBlOOBqOOBhizjgobjgYbjgYTjgaHjgo3jgYYNCivjgZnjgY7jgoLjgags44GP44Gr44GKDQor44GP44KK44Gv44KJLOOBqOOCiOOBsuOBkw0KK+OBiuOBiuOBnyzjgobjgY3jgZMNCivjgZnjgZrjgY0s44Gf44GR44GXDQor44KI44GX44GgLOOBi+OBmuOBqOOBlw0KK+OBr+OBo+OBqOOCiizjgbLjgo3jgZcNCivjgYvjganjgZ8s44GC44GN44Gy44KNDQor44GE44GX44GW44KPLOOChuOBmuOBjQ0KK+OBv+OChOOCguOBqCzjgb/jganjgooNCivjgYrjgZgs44KE44GZ44Gy44KNDQor44GC44KJ44GELOOBqOOBl+OBguOBjQ0KK+OBjeOBn+OCgOOCiSzjgorjgYvjgZMNCivjgZXjgYTjgajjgYYs44KI44GX44Gy44GoDQor44GT44Gw44KE44GXLOOBjeOCh+OBhuOBnuOBhg0KK+OBq+OBl+OBi+OCjyzjgajjgoLjgb8NCivjgZ/jgarjgYss44GL44Ga44Gy44KNDQor44Ga44GXLOOChOOBmeOBig0KK+OBguOCieOBhCzjgZfjgofjgYbjgbjjgYQNCivjgb7jgYjjgafjgoks44Gm44KL44KG44GNDQor44GT44KT44GpLOOBquOBig0KK+OBquOBjOOBu+OCiizjgobjgY3jgZMNCivjgYTjgo/jgZXjgY0s44G/44KE44GzDQor44Gq44GL44Gf44GrLOOBn+OBi+OBlw0KK+OBquOBi+OBjOOBjSzjgZHjgYTjgZMNCivjgY/jgo/jga/jgoks44G+44GT44GoDQor44GZ44Ga44GNLOOChuOBjQ0KK+OBn+OBoCzjgYjjgYTjgY0NCivjgo/jgaAs44Gq44GK44GTDQor44GV44GuLOOBsuOCjeOBlw0KK+OBqOOBjeOBnyzjgarjgaTjgZMNCivjgZPjgZXjgYQs44KG44GG44GTDQor44Gb44GU44GILOOBleOBqOOBkw0KK+OBquOBi+OBhCzjgYLjgaTjgb8NCivjga/jgonjgaAs44Go44GX44G+44GVDQor44GN44Gu44GX44GfLOOBv+OBoeOBig0KK+OBv+OChOOBluOBjSzjgYvjgZrjgb8NCivjgZ/jgY3jgZbjgo8s44G+44GV44GC44GNDQor44GV44Go44GGLOOBk+OBhuOBhOOBoeOCjeOBhg0KK+OBv+OBmuOBl+OBvizjgZ/jgZHjgosNCivjgZ/jgavjgZDjgaEs44Gv44KL44G/DQor44G+44Gk44GX44GfLOOBn+OBi+OBlw0KK+OBmeOBjuOBhuOCiSzjgZHjgpPjgZ/jgo3jgYYNCivjgZ/jgavjgYzjgY0s44Gb44GE44GTDQor44GV44Go44GGLOOBl+OBkuOBig0KK+OChOOBvuOBi+OCjyzjgZXjgaDjga/jgosNCivjgZnjgZrjgY0s44GX44GS44Gy44KNDQor44Go44GP44GgLOOBvuOCk+OBquOCig0KK+OBhOOCj+OBvizjga7jgbbjgYLjgY0NCivjgYrjgYrjga/jgoks44KG44GN44Gq44GKDQor44GX44GK44Gs44G+LOOBsuOBp+OBqOOBlw0KK+OBmeOBmuOBjSzjgYLjgY3jgojjgZcNCivjgZnjgZrjgY0s44KI44GX44GTDQor44GZ44Ga44GNLOOBruOBtuOBguOBjQ0KK+OBm+OBjSzjgYrjgZXjgoANCivjgZnjgZrjgY0s44Gk44Go44KADQor44GZ44GM44GKLOOBpuOBpOOBmA0KK+OBmeOBmuOBjSzjgZHjgYTjgZ/jgo3jgYYNCivjgZXjganjgajjgoIs44GC44GN44KJDQor44GX44G+LOOBv+OBruOCiw0KK+OBleOBhOOBqOOBhizjgYrjgZXjgoANCivjgZnjgZrjgY0s44G+44GV44Gy44KNDQor44GV44GE44Go44GGLOOChuOBjeOBig0KK+OBneOBvizjgYrjgZXjgoANCivjgZXjgajjgYYs44GR44KT44GYDQor44GX44KN44GV44GNLOOCiOOBhuOBhOOBoQ0KK+OBmeOBmuOBjSzjgojjgYbjgZjjgo3jgYYNCivjgZnjgZrjgY0s44Gm44Gk44KN44GGDQor44GZ44GO44KC44GoLOOBvuOBleOBig0KK+OBleOBi+OBhCzjgZfjgpPjgYTjgaENCivjgZnjgZrjgY0s44GL44Ga44KG44GNDQor44GV44Go44GGLOOBn+OBpOOBmA0KK+OBl+OBiuOBnyzjgajjgojjgYoNCivjgZ3jgb4s44GL44KT44GYDQor44GX44KF44Gp44GGLOOBn+OBi+OBig0KK+OBleOBj+OCieOBhCzjgajjgZfjgYoNCivjgZ3jgYbjgoQs44Gb44GE44GYDQor44GV44KP44KA44KJLOOBquOCi+OBvw0KK+OBm+OBiizjgobjgYbjgZgNCivjgZfjgb/jgZos44Go44GX44GKDQor44GV44GN44KC44KKLOOBhOOCj+OBig0KK+OBleOBhOOBqOOBhizjgbLjgZXjgYoNCivjgZfjgb/jgZos44GI44GE44Ge44GGDQor44GX44GK44Gu44KELOOBjeOCiOOBi+OBmg0KK+OBn+OBi+OBjizjgbLjgafjgYoNCivjgZ/jgY3jgYTjgZcs44KK44KH44GG44GYDQor44Go44GwLOOBvuOBleOBlw0KK+OBn+OBkOOBoSzjgb7jgZXjgYoNCivjgZ/jgYvjga4s44KA44Gt44GKDQor44Gf44GL44KE44GZLOOBqOOCiOOBvw0KK+OBn+OBquOBiyzjgZfjgZLjgosNCivjgZ/jgYvjga/jgb4s44KI44GX44GC44GNDQor44Gk44Gh44GgLOOBvuOCguOCiw0KK+OBn+OBi+OBiizjgb7jgZnjgb8NCivjgZ/jgavjgZDjgaEs44G/44Gh44GC44GNDQor44Gk44GY44GL44KPLOOChuOBhuOBhOOBoQ0KK+OCiOOBl+OBluOCjyzjgb7jgZXjga/jgosNCivjgZ/jgarjgYss44GY44KF44KT44Ge44GGDQor44Gf44G+44KLLOOBvuOBleOBvw0KK+OBn+OBi+OBjizjgY3jgofjgYbjgZMNCivjgaTjga3jgbLjgo0s44GY44KF44KT44GYDQor44Gf44GL44Gv44GXLOOBqOOBl+OBguOBjQ0KK+OBguOBleOBhCzjgobjgYbjgZgNCivjgZ/jgYvjgZXjgY0s44GC44GN44KJDQor44Gf44GL44Gq44G/LOOBvuOBleOCiw0KK+OBqOOCguOBquOBjCzjgaTjga3jgYvjgZoNCivjgZ/jgYvjgY4s44GE44Gk44GKDQor44Gk44GL44KC44GoLOOBguOBjeOBig0KK+OBpuOCieOBhuOBoSzjgZXjgaDjgobjgY0NCivjgZ/jga7jgYrjgYss44GZ44GZ44KADQor44GG44GZ44GOLOOBi+OBmuOBsuOCjQ0KK+OBhuOBpOOBjSzjgabjgaTjgYoNCivjgYbjgaHjgaAs44GR44KT44GZ44GRDQor44GG44KB44KA44KJLOOBqOOBl+OBig0KK+OBhuOBrizjgajjgZfjgbLjgacNCivjgo/jgZ/jgarjgbks44Gy44GV44KG44GNDQor44KP44Gf44Gq44G5LOOBi+OBpOOBquOCig0KK+OCj+OBn+OBquOBuSzjgZPjgpPjgZTjgYYNCivjgo/jgaAs44Gf44GR44G/44GkDQor44GK44GK44GfLOOBvuOBk+OBqA0KK+OBquOBi+OBmOOBvizjgZHjgYTjgYTjgaENCivjgbXjgovjgZXjgo8s44Gk44KI44GXDQor44GL44GX44KP44GOLOOBkw0KK+OBr+OBnyzjgZfjgofjgYbjgZnjgZENCivjgYbjgZfjgZjjgb4s44G+44GV44GL44GaDQor44G+44Gk44GELOOBguOBjeOCiQ0KK+OBi+OCj+OBqizjgaDjgYTjgZjjgo3jgYYNCivjgb/jgoTjgoLjgags44Gf44GL44Gy44GVDQor44KI44GX44GgLOOBmeOBv+OChuOBjQ0KK+OBiuOBiuOBi+OCj+OCiSzjgZLjgpPjgZ/jgo3jgYYNCivjgZnjgoTjgb4s44GP44KT44KN44GGDQor44GZ44Ga44GNLOOChuOBhuOBmA0KK+OBj+OBq+OBjuOBnyzjgojjgYbjgYTjgaENCivjgY3jgaks44G+44GV44GXDQor44GE44GX44GELOOBoeOBi+OBqOOBlw0KK+OBhuOBiOOBoCzjgZ/jgYvjgZcNCivjgYTjgaHjgYvjgo8s44GL44Ga44GKDQor44GK44GV44GY44G+LOOBqOOBl+OChA0KK+OBhuOBiOOCgOOCiSzjgajjgZfjgbLjgacNCivjgY3jgoDjgoks44Go44GN44GhDQor44KI44GT44KE44G+LOOBsuOBleOBig0KK+OBhOOBqOOBhizjgb7jgZXjgobjgY0NCivjgb/jgoTjgbks44GL44Ga44GoDQor44Gf44G+44GELOOBi+OBmuOBv+OBoQ0KK+OBk+OCiizjgZPjgYbjgYTjgaHjgo3jgYYNCivjgYTjgo/jgZXjgo8s44G+44Gq44G2DQor44KI44GX44KE44GZLOOBlOOBhg0KK+OBvuOBn+OBjSzjgZfjgpPjgZQNCivjgoTjgb7jgoLjgoos44GL44Gk44GKDQor44Gf44GL44GfLOOBruOCiuOBig0KK+OBmeOBqeOBhizjgZfjgofjgYbjgZMNCivjgYbjgYjjgoDjgoks44KG44Gf44GLDQor44GZ44Ga44GNLOOBv+OBruOCiw0KK+OBmeOBmuOBjSzjgYLjgY3jgokNCivjgYLjgonjgY0s44Gb44GN44GtDQor44GL44GgLOOBguOBjeOCiQ0KK+OBq+OBl+OCiOOCiizjgb/jga7jgosNCivjgYTjgarjgbAs44GL44Ga44GoDQor44G744KK44GELOOBpOOBreOBig0KK+OBmeOBqeOBhizjgb7jgZXjgbLjgZMNCivjgZfjgo3jgoTjgb4s44GTDQor44Gm44KJ44GELOOBguOBjeOBkw0KK+OBvuOBpOOCguOBqCzjgarjgYrjgZ/jgZENCivjgYTjgajjgYYs44Gb44GE44GYDQor44Gd44Go44KE44G+LOOBi+OBpOOBruOCig0KK+OBsuOCieOBiuOBiyzjgoTjgZnjgZcNCivjgbLjgonjgY0s44Gf44KC44GkDQor44Gf44Gq44G5LOOChuOBhuOBmOOCjeOBhg0KK+OBn+OCgeOBoeOBiyzjgZ/jgabjgYoNCivjgojjga3jgaAs44Go44GX44Gy44GnDQor44GI44GY44G+LOOBqOOCguOBruOCig0KK+OBn+OBi+OBr+OBlyzjgb/jgZXjgZMNCivjgabjgonjgYos44Gy44KN44Gy44GVDQor44G744KT44GgLOOChuOBvw0KK+OBiuOBoeOCiizjgoTjgZnjgbLjgo0NCivjgYrjgYrjgYQs44Gq44GK44G/DQor44GL44KP44GELOOBv+OBruOCiw0KK+OCgOOCieOBi+OBvyzjgb/jgojjgZcNCivjgarjgYvjgZjjgb4s44Gy44Go44GXDQor44GE44GX44Gv44KJLOOBteOBv+OBn+OBiw0KK+OBguOBi+OBu+OCiizjgb/jgaTjga7jgbYNCivjgoTjgZnjgaAs44GC44GN44KJDQor44KI44GT44GbLOOBqOOCguOBl+OBkg0KK+OCiOOBl+OBi+OCjyzjgajjgZfjgo3jgYYNCivjgoTjgb7jgZDjgaEs44G/44Gu44KLDQor44KI44GX44KA44KJLOOBvuOBleOBsuOBkw0KK+OCiOOBreOBoCzjgYvjgYrjgosNCivjgoTjgb7jgZfjgZ8s44GX44KH44GG44Ge44GGDQor44KE44G+44GgLOOBiOOBhOOBnuOBhg0KK+OChOOBvuOBluOBjSzjgZnjgZnjgoANCivjgojjgZfjgaAs44Gy44KN44GXDQor44KE44G+44Gf44GrLOOBsuOCjeOBpOOBkA0KK+OChOOBvuOBrSzjgojjga3jgZ/jgYsNCivjgoTjgb7jgYvjgo8s44GY44KF44KT44GE44GhDQor44KI44GX44GgLOOBn+OBi+OBig0KK+OChOOBvuOBleOBjSzjga7jgorjgYoNCivjgoTjgb7jgoLjgags44Gm44KL44GKDQor44KI44GT44GfLOOBiOOBhOOBhOOBoQ0KK+OChOOBvuOBoCzjgYvjgaTjgbLjgo0NCivjgojjgZfjga4s44Gg44GE44GZ44GRDQor44KI44GX44GgLOOCgOOBpOOBig0KK+OBruOCgOOCiSzjgb7jgZXjgZ/jgYsNCivjgoTjgb7jgaAs44GV44Go44KLDQor44GE44GX44GL44KPLOOBoeOCiOOBn+OBkQ0KK+OBmeOBmuOBjSzjgbLjgo3jgbXjgb8NCivjgb7jgZnjgaAs44GR44KT44GYDQor44GE44G+44GELOOBvuOBleOBnuOBhg0KK+OBjeOCheOBhuOBneOBmOOCkyzjgZHjgpPjgZnjgZENCivjgoTjgb7jgaAs44GC44GN44KJDQor44Gy44KJ44GuLOOBn+OBhOOBjQ0KK+OBquOBi+OBq+OBlyzjgYvjgZrjgZfjgZINCivjgZ/jgaTjgZ8s44GX44GS44KLDQor44G/44KA44KJLOOBvuOBleOBig0KK+OBsuOCieOBvuOBpCzjgZXjgaDjgYoNCivjgajjgb/jgZ8s44G+44GV44Gy44KNDQor44GT44Gw44KE44GXLOOBl+OCk+OBhOOBoeOCjeOBhg0KK+OBn+OBkeOBquOBiyzjgb7jgZXjgbLjgo0NCivjgYLjgb7jga4s44Gu44KK44GTDQor44GE44GX44GELOOBjeOCh+OBhuOBkw0KK+OBhOOBpyzjgZXjgY3jgZMNCivjgYrjgYvjgaAs44KK44GI44GTDQor44Gy44KJ44GE44GXLOOBvuOCig0KK+OCiOOBl+OCguOBqCzjgbLjgo3jgZMNCivjgYvjgo/jgZfjgb4s44G+44KG44G/DQor44Go44Gw44GfLOOBruOCiuOBi+OBmg0KK+OBn+OBquOBiyzjgbLjgYvjgosNCivjgYLjgpPjgbks44G+44Gq44G/DQor44Gf44GL44Gv44GXLOOBvuOBleOBsuOCjQ0KK+OBqOOBv+OChOOBvizjgojjgZfjgYLjgY0NCivjgZ/jgYvjgoTjgb4s44Go44GX44KG44GNDQor44G/44KE44GX44GfLOOBv+OBruOCiw0KK+OBr+OBl+OCguOBqCzjgb/jgY3jgYoNCivjgajjgYzjgoEs44G/44KP44GTDQor44Gu44GQ44GhLOOBi+OBmuOBvuOBlQ0KK+OBruOBkOOBoSzjgYLjgY3jgokNCivjgZ3jgYbjgb/jgoQs44GR44KT44GYDQor44GN44KA44KJLOOCiOOBhuOBmA0KK+OBi+OBqOOBhizjgajjgoLjgobjgY0NCivjgZnjgZrjgY0s44GR44KT44GYDQor44GK44GL44GgLOOBsuOCjeOBvw0KK+OChOOBrizjgZjjgoXjgpPjgZMNCivjgYrjga7jgZXjgags44Gv44KTDQor44G+44Gk44GgLOOCiOOBl+OBguOBjQ0KK+OBjeOCgOOCiSzjgZ/jgYvjgZcNCivjgZ/jgoDjgoks44Go44KC44Gu44KKDQor44GL44Go44GGLOOBqOOBl+OChA0KK+OBhOOBrOOBvuOCiyzjgbLjgo3jgZgNCivjgYrjga7jgafjgoks44Gq44GK44GTDQor44GZ44Ga44GNLOOBoeOBr+OCiw0KK+OBn+OBq+OBi+OCjyzjgbvjgZrjgYgNCivjgZXjgY/jgb4s44GX44G+DQor44GE44G+44KA44KJLOOCi+OCiuOBkw0KK+OBiOOBhOOBqeOCgSzjgobjgY0NCivjgojjgZfjgYQs44Gf44Gg44Gy44KNDQor44GK44GK44Gf44GNLOOChuOBv+OBkw0KK+OBj+OBmeOCguOBqCzjgYTjgZXjgYoNCivjgb/jgoTjgZfjgZ8s44KG44GN44GKDQor44G+44Gh44GELOOBi+OBmuOBsuOCjQ0KK+OBr+OChOOBl+OBoCzjgZ/jgYvjgajjgZcNCivjga/jgovjga/jgoks44Gf44GL44GXDQor44Gm44KJ44KC44GoLOOChuOBhuOBmOOCjeOBhg0KK+OBvuOBpOOCguOCiizjgYvjgZrjgYoNCivjgo/jgZ/jgarjgbks44GT44GG44GYDQor44GL44Gt44GTLOOChOOBmeOBlw0KK+OBiuOCiuOBjOOBlSzjgb7jgaTjga7jgooNCivjgaTjgYvjgoLjgags44Gy44KN44G/44GhDQor44KI44GX44GgLOOBv+OBqg0KK+OBq+OBl+OBoCzjgbLjgZXjgYgNCivjgbXjgovjgYvjgo8s44KK44GIDQor44KA44KJ44GL44G/LOOBn+OBi+OBig0KK+OBiuOBiuOBsOOChOOBlyzjgZPjgYbjgY3jgaENCivjgZXjgajjgYYs44GR44GE44GTDQor44KE44G+LOOBteOBv+OBkw0KK+OBv+OChOOBnyzjgZ/jgYvjgabjgosNCivvl77ombnlpoINCivkuIHlv4PltZANCivkuIHlv5flro8NCivkuIHlu7rmlocNCivkuIHlgYnmsJENCivkuIHnlKbljZcNCivkuIHntrrmhacNCivkuIHorb3nkLMNCivkuo7np4Dnvo4NCivkuo7mrr/ogZYNCivlsLnlsYXmiY0NCivlsLnmm4nmgakNCivlrZTnuYHpnJYNCivlsKToia8NCivlsKTmmJ/nrZYNCivlsKTnm5/osrQNCivlsKTokpTokLENCivmloflhIDoqaANCivmlrnmlofpi5INCivmlrnlv5fmmI4NCivmlrnlubjlrpwNCivmlrnkv4rpm4QNCivmlrnlvaXnqIsNCivmlrnoi6Xnj4oNCivmlrnlgaXliZsNCivmlrnmt5HlhJINCivmlrnnrZbmsJENCivmlrnoo5XmrL0NCivmlrnmhafnkLQNCivmlrnpupfpm4UNCivmr5vkvanlqJ8NCivmr5vmvKLmooUNCivnjovkuIDnj40NCivnjovkuIrntq0NCivnjovlpKfmmIwNCivnjovlrZDnhpkNCivnjovkuK3mhpMNCivnjovku4HlrpcNCivnjovlj4vlv5cNCivnjovlv4Plv6ANCivnjovmloflubMNCivnjovmlofpg4ENCivnjovmlofptLsNCivnjovkuJblrocNCivnjovkuJblu6MNCivnjovlvJjmr4UNCivnjovmsLjku4ENCivnjovnjonmlocNCivnjovnlJ/li7MNCivnjovlhYnpuoMNCivnjovlrofmuIUNCivnjovmnInmrIoNCivnjovkvK/pgLgNCivnjovlrZ3lkJsNCivnjovlro/lmIkNCivnjovlv5fmlocNCivnjovlv5fls7ANCivnjovlv5fmrL0NCivnjovlv5fpipgNCivnjovnp4DoiqwNCivnjovogrLlvrcNCivnjovkvp3pn7sNCivnjovkvakNCivnjovlnaTos6INCivnjovlsqHpmbUNCivnjovmgKHmlocNCivnjovmgKHmuIUNCivnjovmgKHomIsNCivnjovmmI7nj4oNCivnjovmrKPkuYsNCivnjovmsrvpgqYNCivnjovph5Hoj68NCivnjovkv6Hku4ENCivnjovkv6Hoo5UNCivnjovkv4rlvaUNCivnjovkv4rlh7ENCivnjovkv4rotoUNCivnjovkv57mlocNCivnjovliYfli50NCivnjovlpZXpiJ4NCivnjovlqIHog70NCivnjovlu7rmlocNCivnjovlu7rpm4QNCivnjovlvaXmmboNCivnjovmgJ3mvZQNCivnjovmmK3kuroNCivnjovmmLHlh7ENCivnjovmn4/loK8NCivnjovngrrokqgNCivnjovnm4jlgpENCivnjovntIANCivnjovnvo7mt5ENCivnjovnvo7mh78NCivnjovoi7Hok4kNCivnjovpg4HmrKMNCivnjovpg4Hnj7oNCivnjovlk7LogbANCivnjovmgoXlpoINCivnjovmmYLolJoNCivnjovmtanlgKsNCivnjovntKDljb8NCivnjovlgYnlt54NCivnjovlgaXmsJENCivnjovlnIvlvaUNCivnjovln7fkv6ENCivnjovltJHpvo0NCivnjovllZ/lrpcNCivnjovmlY/pipMNCivnjovmuIXptLsNCivnjovmt5HnnIkNCivnjovmt5Hpm68NCivnjovmt6jnkakNCivnjovojonmsbYNCivnjovlgpHnq4sNCivnjovlh7HokoINCivnjovljZrmlocNCivnjovlr4zmmIwNCivnjovmg6DnjrINCivnjovmlabmraMNCivnjovmma/ms4kNCivnjovmmbrps7QNCivnjovmnJ3pjbUNCivnjovnkKoNCivnjovnv5Tlr6cNCivnjovoj4HomK0NCivnjovpgLjkv64NCivnjovpm4XkvLYNCivnjovpm4Xpm68NCivnjovpm68NCivnjovli6TlloQNCivnjovmhJvlmIkNCivnjovmr5Poj4ENCivnjovnkZ7lkJ8NCivnjovnkZ7poKQNCivnjovogZYNCivnjovogZbmo4sNCivnjovoo5XmraMNCivnjovoqanlqbcNCivnjovpiYXnv5QNCivnjovlmInlkJsNCivnjovlmInovrINCivnjovlmInpvaENCivnjovnnb/lkJsNCivnjovntq3lpoINCivnjovnv6Doj68NCivnjovpipjmooUNCivnjovlvrfnmpMNCivnjovmhafoi7ENCivnjovmhafpnZwNCivnjovlhJLpmoYNCivnjovmm4npm68NCivnjovoiIjpgqYNCivnjovpjKbmhacNCivnjovniLXmmpANCivnjovorJnntq0NCivnjovnpq7orJkNCivnjovnk4rnj64NCivnjovpn7vmt5ENCivnjovpupfoiqwNCivnjovpupfpm68NCivnjovogIDmmokNCivnjovpkJjpipgNCivnjovpvaHmopMNCivnjovouo3pnJYNCivnjovmtZ/nvo4NCivnjovmo6jlvrcNCivnjovlq4bmo7sNCivnjovnrbHokLENCivnjovolo/pm68NCivkuJjnnJ/ntroNCivljIXlrq7ntq0NCivlj6Tnjonps7MNCivlj6TmmI7mmZ8NCivlj6TmoYLoj4oNCivlj6TmmbrlgYkNCivlj6Tkv7bntroNCivlj7LmmI7ljp8NCivlj7Lmm5zlvbANCivnlJjmsLjoo5UNCivnlJjpnIjpnJYNCivnlLDmspDmgakNCivnlLDoirPojLkNCivnlLDmt5HlkJsNCivnlLDnkqfoj4ANCivnmb3lpKflsLkNCivnmb3kvbPmuJ0NCivnmb3mjK/mupANCivnmb3llpzmlocNCivnmb3mpq7kv64NCivnn7PkuYPlpoINCivnn7PogrLnjp8NCivnn7PmmI7lkagNCivnn7Pls7vlubMNCivnn7PlgpHlrocNCivnn7PpjKboiKoNCivkvI3kuJbmj5oNCivkvI3lrrboqrwNCivku7vmiY3kv4oNCivku7vmlrDomK0NCivlkJHopb/pmb0NCivmiJDkuLnnjrINCivmnLHmlofnoqcNCivmnLHnjonmsbYNCivmnLHlpo3lpoINCivmnLHmspvmgKENCivmnLHlrpfolJoNCivmnLHmnbHmh4kNCivmnLHkv4rnpaUNCivmnLHlu7rms7ANCivmnLHnj43mhacNCivmnLHpg4Hluq0NCivmnLHlrrbmrKMNCivmnLHls7DoqrwNCivmnLHnj67lhIANCivmnLHlgYnlgpENCivmnLHlurfpipgNCivmnLHlr5PnkIYNCivmnLHpm4XpiLQNCivmnLHpgZTmmI4NCivmnLHps7PolocNCivmnLHpnZzmlocNCivmnLHoiq7lrpwNCivmsZ/kuK3lgaUNCivmsZ/mlofnk4oNCivmsZ/nq4vls7ANCivmsZ/lkYjpmb0NCivmsZ/np4DnjrINCivmsZ/kvbPpnJYNCivmsZ/ljZTli4cNCivmsZ/lrpflk7INCivmsZ/lsqnpgZQNCivmsZ/mmIzptLsNCivmsZ/mmI7nkosNCivmsZ/mrKPlrrkNCivmsZ/plbflo70NCivmsZ/kv4roiIgNCivmsZ/lu7rpipgNCivmsZ/mlL/lhJINCivmsZ/njrLmhacNCivmsZ/ooY3pvo0NCivmsZ/mjK/lrocNCivmsZ/ntJTnjqsNCivmsZ/llZ/ku7INCivmsZ/nm5vpvo0NCivmsZ/mmbrntq0NCivmsZ/pm4Xmg6ANCivmsZ/lmInlgKsNCivmsZ/lr6zmhYgNCivmsZ/mhrbpm68NCivmsZ/olb4NCivmsZ/lqp4NCivniZ/mmJUNCivkvZXku4HnlLANCivkvZXkuJbpm4QNCivkvZXkupnlvawNCivkvZXlkJvokI0NCivkvZXogrLmnbANCivkvZXkvbPono0NCivkvZXlhbbmvqQNCivkvZXlraPnp6YNCivkvZXlrpfnpqcNCivkvZXmgKHlkJsNCivkvZXmmI7lrpcNCivkvZXmmIflhJINCivkvZXnp4nmrKMNCivkvZXkv4rlu7cNCivkvZXlhqDpnJYNCivkvZXlvaXpp5INCivkvZXngrPos6INCivkvZXoi6XnkZwNCivkvZXls7vmnbANCivkvZXntKDlkJsNCivkvZXmlY/oj4ENCivkvZXmtrUNCivkvZXmg6DpiLoNCivkvZXpm4XnkKoNCivkvZXlmInlsZUNCivkvZXpipjlro8NCivkvZXlrbjljpoNCivkvZXpnZzlhIANCivkvZXml7vpnJwNCivkvZnlv4PovrINCivkvZnlkInnpaUNCivkvZnkvbPpn7MNCivkvZnlnaroirMNCivkvZnlrpvlhJINCivkvZnmmI7lqJ8NCivkvZnph5HlhbgNCivkvZnkv4rlhJINCivkvZnlvaXpnJYNCivkvZnnm4jpi5INCivkvZnms7DnlLcNCivkvZnlqYnokI0NCivkvZnmg6DmlocNCivkvZnnkZ7okI0NCivkvZnpvYrlqIENCivkvZnorJ3ovJ0NCivliKnnp4DomK0NCivlkLPlpKfntq0NCivlkLPku4HkvZENCivlkLPlhYPlq4gNCivlkLPmlofnjokNCivlkLPmlofnmbwNCivlkLPmlofmlowNCivlkLPkuJbpgZQNCivlkLPlubPlkowNCivlkLPmsLjmmIwNCivlkLPnjonojLkNCivlkLPnq4vmsJENCivlkLPlhYbmlocNCivlkLPlronpgqYNCivlkLPooYzkuK0NCivlkLPlppnlgKsNCivlkLPlv5flro8NCivlkLPlv5fmvKINCivlkLPmspvmmYMNCivlkLPnp4DntIsNCivlkLPogrLpnJYNCivlkLPkvp3ok5MNCivlkLPkvbPljZcNCivlkLPkvbPlrrkNCivlkLPkvbPok4kNCivlkLPkvbPnqY4NCivlkLPkvbPptLsNCivlkLPkvannj4oNCivlkLPkvanntJQNCivlkLPkvanoq60NCivlkLPlhbbpnJYNCivlkLPlnaTptLsNCivlkLPlrZ/lrpcNCivlkLPlrZ/lqJ8NCivlkLPlrZ/mhrINCivlkLPlrpflsrENCivlkLPlrpfpmoYNCivlkLPlrpfnv7ANCivlkLPlrpzoirMNCivlkLPlrpznqYYNCivlkLPlrpvnuIgNCivlkLPlsqHlhJINCivlkLPlubjnnJ8NCivlkLPlv6DpnJYNCivlkLPmgKHokI0NCivlkLPmgKHmhrINCivlkLPmib/nkosNCivlkLPmmIzluq0NCivlkLPmmI4NCivlkLPmmI7lk7INCivlkLPmmI7pgZQNCivlkLPmmI7mm4QNCivlkLPmmJXlp78NCivlkLPmnbHpnJYNCivlkLPmrKPmgKENCivlkLPmrKPlhJINCivlkLPmsrvoi7ENCivlkLPnp4nli7MNCivlkLPoirPnkZwNCivlkLPph5HnjokNCivlkLPpm6jlk7INCivlkLPkuq3oqrwNCivlkLPkv6HovJ0NCivlkLPkv4rlpYcNCivlkLPkv4rlhIANCivlkLPkv4rnt68NCivlkLPkv4roq7oNCivlkLPlhqDnvqQNCivlkLPlk4Hok4kNCivlkLPlp7/lhIANCivlkLPlrqPpi5INCivlkLPlu7roip0NCivlkLPlu7rli7MNCivlkLPlvovpipgNCivlkLPmgJ3nqY4NCivlkLPmlL/lvawNCivlkLPmlL/nqY4NCivlkLPmmKXnt6kNCivlkLPmmK3pvo0NCivlkLPmn4/lhIANCivlkLPngqvlrpcNCivlkLPnmofmrKMNCivlkLPnp4vnvo4NCivlkLPnvo7njrINCivlkLPnvo7mhacNCivlkLPoh7TpipgNCivlkLPoi7HptLsNCivlkLPph43mr4UNCivlkLPljp/lrocNCivlkLPlrrbmmI4NCivlkLPlrrbmhacNCivlkLPmjK/miJANCivlkLPmmY/lubMNCivlkLPms7DmmIwNCivlkLPnj67npo4NCivlkLPntJTmrKMNCivlkLPlgYnoqqANCivlkLPlnIvlgYkNCivlkLPloIXnkYsNCivlkLPlqYnmrYYNCivlkLPmgqANCivlkLPmlY/nnJ8NCivlkLPmt5HlpoINCivlkLPmt5HmlY8NCivlkLPmtrXlrpwNCivlkLPpm6rlpq4NCivlkLPli53npboNCivlkLPmg6DlkJsNCivlkLPmlq/nh7sNCivlkLPnioDpnYgNCivlkLPoqaDlrrgNCivlkLPpiJ7lqbcNCivlkLPpm4XltZANCivlkLPpm7LpqaUNCivlkLPmr5PnnJ8NCivlkLPnkZ7lk7INCivlkLPogZblqIENCivlkLPpvI7lgYkNCivlkLPlmInli50NCivlkLPlr6fnkYQNCivlkLPnpo/ph48NCivlkLPogofpqLANCivlkLPpipPlj4sNCivlkLPmhbbmlocNCivlkLPmhafmlY8NCivlkLPos5zlv6ANCivlkLPmm4npnZINCivlkLPmm4nolocNCivlkLPolZnntIsNCivlkLPpjKbpjrANCivlkLPpnZzoirMNCivlkLPnuL3miJANCivlkLPptLvmmIwNCivlkLPosZDlkIkNCivlkLPpn7vljYkNCivlkLPppqjmgKENCivlkLPkvbzkvbwNCivlkLPmmLbokbMNCivlkLPnkYvnkLMNCivlkYLlrZDosaoNCivlkYLmloflsIgNCivlkYLmraPlrokNCivlkYLoh6rpgZQNCivlkYLogrLoirMNCivlkYLkvbPlrrkNCivlkYLkvanntJQNCivlkYLlrpfpipgNCivlkYLlrpzpnJYNCivlkYLmgKHmhacNCivlkYLmmI7ms7ANCivlkYLoirPkv4oNCivlkYLkv53lsrgNCivlkYLljZfnlb8NCivlkYLlu7rpi5INCivlkYLmmK3lhIANCivlkYLnp4vpm7INCivlkYLoi7HnkYsNCivlkYLmoLzosaoNCivlkYLlnIvln7kNCivlkYLmt5Hljb8NCivlkYLntLnmpq4NCivlkYLoqaDnnJ8NCivlkYLpm6/mrYYNCivlkYLlmInlhYMNCivlkYLpipjmmboNCivlkYLlrbjlj6ENCivlkYLpnZzok4kNCivlkYLlu7PlmrQNCivlrovlv4PmhacNCivlrovkvK/nkZwNCivlrovkvannj4oNCivlrovmmIzpnJYNCivlrovlpZXlhJINCivlrovnprnnkakNCivlrovoiKvoh6MNCivlrovllqznjokNCivlrovnoqfnkLMNCivlrovnq4QNCivlt6vmiI7mgKENCivlt6vmmI7nv7ANCivlt6vmjK/lmIkNCivlt6vlmInoiIgNCivmnY7kuYPmlocNCivmnY7kuK3ku7sNCivmnY7ku4Hlh7ENCivmnY7lhYPoo5UNCivmnY7lv4Pku4ENCivmnY7mloflv5cNCivmnY7mlofmg6ANCivmnY7mlofpgZQNCivmnY7mnIjmmJ8NCivmnY7kuJblr6wNCivmnY7lt6fnkLMNCivmnY7mraPlvaUNCivmnY7msLjmmIwNCivmnY7njonljb8NCivmnY7nq4vku4ENCivmnY7ku7LnjoQNCivmnY7lhYbmlowNCivmnY7lpoLnj40NCivmnY7lronnkLMNCivmnY7nvr0NCivmnY7lkJvlvaUNCivmnY7lro/mlocNCivmnY7lv5fmiJANCivmnY7lv5flgYkNCivmnY7mspvmnbANCivmnY7np4DnjrINCivmnY7np4DomIUNCivmnY7ogrLnkakNCivmnY7kup7lgKsNCivmnY7kvp3mgYINCivmnY7kvbPoirMNCivmnY7kvbPnj40NCivmnY7kvbPmmYMNCivmnY7kvbPpm68NCivmnY7kvbPlhJINCivmnY7kvbPpnJYNCivmnY7kvbPok4ENCivmnY7kvanoip0NCivmnY7kvannjrINCivmnY7kvanlhIANCivmnY7kvanlrKwNCivmnY7lh73oiqwNCivmnY7lnaTmupANCivmnY7lpYfnv7ANCivmnY7lrZ/lk7INCivmnY7lrZ/nqY4NCivmnY7lrpflnaQNCivmnY7lrpfnvqkNCivmnY7lrpfnqY4NCivmnY7lrpfptLsNCivmnY7lrpzmtLINCivmnY7lrpzls7sNCivmnY7lrpzmqLoNCivmnY7lrpvnjrINCivmnY7lsJros6INCivmnY7lsrPls7ANCivmnY7lubjlqJ8NCivmnY7lv6DnqY4NCivmnY7mgKHnjrINCivmnY7mgKHmhacNCivmnY7mgKHml7sNCivmnY7mmJPkv64NCivmnY7mmIblro8NCivmnY7mmI7liKkNCivmnY7mmI7lvaUNCivmnY7mmI7ph5cNCivmnY7mmI7li7MNCivmnY7mmI7pnJ4NCivmnY7mmIfnv7ANCivmnY7mnbHpvo0NCivmnY7mrKPmgKENCivmnY7mrKPpgZQNCivmnY7ms5XmvKINCivmnY7njqXnkakNCivmnY7oirPlnLsNCivmnY7oip3ntr4NCivmnY7ph5HpiLQNCivmnY7plbfmpq4NCivmnY7pnZLpmb0NCivmnY7kv6HlvrcNCivmnY7kv4rlro8NCivmnY7kv4rlvaUNCivmnY7kv4rlvrcNCivmnY7kv4ros6INCivmnY7kv57mhacNCivmnY7lhqDnkakNCivmnY7ljZflrIwNCivmnY7lp7/lhIANCivmnY7lqIHlvrcNCivmnY7lu7rmsJENCivmnY7lu7rmmI4NCivmnY7lu7ros6INCivmnY7lu7roiIgNCivmnY7lvaXlrpwNCivmnY7lvaXpnJYNCivmnY7mgJ3okLENCivmnY7mgJ3oq60NCivmnY7mlL/lk7INCivmnY7mlL/pvo0NCivmnY7mmK3nvo4NCivmnY7mmLHmmKUNCivmnY7mn4/ok4kNCivmnY7nj4rnj4oNCivmnY7nm4jmvZQNCivmnY7np4vmooUNCivmnY7nvo7njokNCivmnY7nvo7lhIANCivmnY7og6TnkaQNCivmnY7oi7Hlv5cNCivmnY7osp7lrpwNCivmnY7pg4HlgYkNCivmnY7lgKkNCivmnY7lk7Lnt68NCivmnY7lrrbosaoNCivmnY7lrrnlqbcNCivmnY7mjK/mmIwNCivmnY7mmYnosaoNCivmnY7ms7DpnJYNCivmnY7nj67nkLMNCivmnY7npZbnj40NCivmnY7oqJPlhIQNCivmnY7lgYnmhLcNCivmnY7lgaXmupANCivmnY7lnIvlvLcNCivmnY7lnIvntq0NCivmnY7ln7rlvJgNCivmnY7lqYnnkZ4NCivmnY7lurfmraMNCivmnY7mlY/lkIkNCivmnY7muIXlkJ8NCivmnY7mt5Hosp4NCivmnY7mt5Hoj68NCivmnY7npaXnkZ4NCivmnY7pgKPls7ANCivmnY7lh7HmpagNCivmnY7mg6DoiqwNCivmnY7mg6Dpm68NCivmnY7mmbrlvLcNCivmnY7muZjmqLoNCivmnY7oqaDnp4sNCivmnY7pgLLnpo8NCivmnY7pm4XnjrINCivmnY7pm4Xmg6ANCivmnY7pm4Xnh5UNCivmnY7mhI/pm68NCivmnY7mr5PnnJ8NCivmnY7nkZ7oj68NCivmnY7ogZbnkLANCivmnY7pgZPmnpcNCivmnY7lmInlh4wNCivmnY7lmInptLsNCivmnY7mpq7pprMNCivmnY7npo/ok4kNCivmnY7ntq3mpagNCivmnY7pipjmr5MNCivmnY7lu6PnpYENCivmnY7mhbboj68NCivmnY7mhafnj6ANCivmnY7os6Lmt6YNCivmnY7mm4nlpq4NCivmnY7mm4noj4ENCivmnY7nkp/pg4ENCivmnY7olZnlpoINCivmnY7pjKbmmIcNCivmnY7pnZzmgKENCivmnY7pvo3nlJ8NCivmnY7ogbDlsrMNCivmnY7ptLvpgZQNCivmnY7pjpTpmKENCivmnY7pupfnj6ANCivmnY7ppqjmgKENCivmnY7liq3ou40NCivmnY7oi7nmhYgNCivmnY7ntZwNCivmnY7piLrpm68NCivmnY7mgZLlkJsNCivmnZzlv5fos6INCivmnZzlrpvoq60NCivmnZzoirPmlL8NCivmnZzlvaXpnJYNCivmnZznj67oqakNCivmnZzpmb3lnJMNCivmnZznh5Xoj68NCivmsojlo6vlgpENCivmsojmraPlvrcNCivmsojkvZHnv7ANCivmsojlv5fpvo0NCivmsojkvbPmhacNCivmsojlrpfmhbYNCivmsojmmIzmmI4NCivmsojnp4noqrwNCivmsojlhqDlro8NCivmsojlu7rlvrcNCivmsojmn4/lr6wNCivmsojpg4HlurcNCivmsojnm4rmib8NCivmsojmmajpkJgNCivmsojoiJLnkLMNCivmsojnkZ7mrL0NCivmsojntq3mr5MNCivmsojolZnlkJsNCivmsojnrbHpm7INCivmsarnp4Dnh5UNCivmsarpnZLok4kNCivmsarlrrbnkakNCivmsarpnZblnIsNCivosLfms5PpgZMNCivovpvlpZXmiJANCivpgqLog73mlocNCivpmK7kv6HmhrINCivpmK7mlpDnkZwNCivpmK7ptaznoqkNCivljZPlv5flv6ANCivljZPoirPlpoINCivljZPoi7Hlk7INCivljZPmt5HlqpsNCivljZPoqozpmoYNCivlkajlo6vlgpENCivlkajkuK3oiIgNCivlkajmlofpm4UNCivlkajku6PlsIkNCivlkajnjonok64NCivlkajlkInpvo0NCivlkajkvZHnpo4NCivlkajlrZ3oirMNCivlkajlv5fmuIUNCivlkajnp4DmmY8NCivlkajkup7mrKMNCivlkajkvanlrpwNCivlkajlpYfok4kNCivlkajlrpzoirMNCivlkajmgKHkvLYNCivlkajmmI7lvJgNCivlkajmnbANCivlkajnjp/okLENCivlkajph5Hnh5UNCivlkajkv4rosaoNCivlkajlqIHlkYgNCivlkajlvaXlspENCivlkajmn4/nlKsNCivlkajnp4vokI0NCivlkajpg4HmlocNCivlkajlqJ/lpoINCivlkajmjK/lh7ENCivlkajnj67lpoINCivlkajlgYnojLkNCivlkajmlY/piLoNCivlkajmg6Dok64NCivlkajoqaDoqJMNCivlkajpm7Lmo6ANCivlkajnhYzogL8NCivlkajoo5XosZANCivlkajlmInmhbYNCivlkajnv6DoiqwNCivlkajos6LlvrcNCivlkajnh5Xnm4gNCivlkajogbDlrocNCivlkajomK3oirMNCivlkajpiLrnv5QNCivlraPogrLmvqQNCivlrpjoirPlpoINCivlsJrmm7gNCivmlrzlrrbnj40NCivmmIzlrZ/nv7ANCivmnpfkuIrlv5cNCivmnpfkuo7npo4NCivmnpflo6vlipsNCivmnpflo6vlgpENCivmnpflo6vovrINCivmnpflpbPmu78NCivmnpflrZDlgpENCivmnpflrZDli6QNCivmnpflsI/nkKoNCivmnpfkuYvoj4ENCivmnpfku4vkuIANCivmnpflpKnmsJENCivmnpfmlofkuK0NCivmnpfmloflsIcNCivmnpfmlofmlq8NCivmnpfmloflvrcNCivmnpfmnKjoiIgNCivmnpfkuJboirMNCivmnpfkuJbmt4cNCivmnpfkuLvmgakNCivmnpflj6/piJ4NCivmnpflubPoi5ENCivmnpfmraPkuIANCivmnpfmraPlgYkNCivmnpfmsLjmmIwNCivmnpfmsLjnpaUNCivmnpfmsLjmmZ8NCivmnpfnjonnjrINCivmnpfnjonoj4ENCivmnpfnn7PpmoYNCivmnpfnq4vlgYkNCivmnpfku7DmnJsNCivmnpflkI7llK8NCivmnpflrojlvrcNCivmnpfnmb7mj5oNCivmnpfkvZHnj4oNCivmnpfkvK/lsrMNCivmnpfkvLbosp4NCivmnpflkYjku7sNCivmnpflkJvnv7ANCivmnpflppnlkJsNCivmnpflrZ3lhagNCivmnpflro/pn4sNCivmnpflro/lhJINCivmnpflu7flkIkNCivmnpflv5fmiJANCivmnpflv5fmnbANCivmnpflv5fnmocNCivmnpflv5floIUNCivmnpflv5fosaoNCivmnpflv5fnqY4NCivmnpflv5fptLsNCivmnpfmnZDkv4oNCivmnpfngbzpvo0NCivmnpfnp4DnjrINCivmnpfnp4DnnJ8NCivmnpfnp4DnqY4NCivmnpfogrLmsJENCivmnpfogrLlkI0NCivmnpfogrLlro8NCivmnpfogrLpgLINCivmnpfogrLmhacNCivmnpfogrLpup8NCivmnpfosLfls7ANCivmnpfkuqvnh4ENCivmnpfkvbPnlJ8NCivmnpfkvbPmgKENCivmnpfkvbPnm4gNCivmnpfkvbPntroNCivmnpfkvbPmhbYNCivmnpfkvbPmvZQNCivmnpfkvbPmqLoNCivmnpfkvbPptLsNCivmnpfkvanmgKENCivmnpfkvanpm68NCivmnpfkvanmhacNCivmnpfkvpHpnZINCivmnpfljZTmnZENCivmnpflnaTpn4sNCivmnpflpYfmqKENCivmnpflrZ/okLENCivmnpflrZ/nqY4NCivmnpflraPnh4ENCivmnpflrpfmhbYNCivmnpflrpfmvqQNCivmnpflrpzlkJsNCivmnpflrpzogZYNCivmnpflrpzmqLoNCivmnpflrpzok4ENCivmnpflrpvmqLoNCivmnpflsrHok4kNCivmnpflubjok4kNCivmnpflv6DlsrMNCivmnpfmgKHmsZ0NCivmnpfmgKHlkJsNCivmnpfmgKHlkJsNCivmnpfmgKHlnYcNCivmnpfmgKHoirMNCivmnpfmgKHokLENCivmnpfmgKHnpL0NCivmnpfmlrzlpq4NCivmnpfmmIzos6INCivmnpfmmI7nlJ8NCivmnpfmmI7mnbANCivmnpfmmI7mpZMNCivmnpfmmI7mr4UNCivmnpfmmI7nkrANCivmnpfmmIfpvo0NCivmnpfmnbDmrKMNCivmnpfmrKPmgKENCivmnpfmrKPmhYgNCivmnpfmrKPmr4UNCivmnpfmrKPpupcNCivmnpfniaflj7ANCivmnpfnjqvlkJsNCivmnpfnp4nnkakNCivmnpfoirPlpoINCivmnpfoirPlhIANCivmnpfoiqzoirMNCivmnpfph5Hku5UNCivmnpfph5Hpvo0NCivmnpfpnZLlv5cNCivmnpfkuq7ku4ENCivmnpfkv6Hlro8NCivmnpfkv53miJANCivmnpfkv4rkvZENCivmnpfkv4rlro8NCivmnpfkv4rnlLcNCivmnpfkv4rpgLgNCivmnpfkv4rprYENCivmnpfkv5Dkuq0NCivmnpflhqDlkJ8NCivmnpflhqDlhJINCivmnpflk4HlrpwNCivmnpflpZXnp4ANCivmnpflp7/lkL4NCivmnpflqIHlkI0NCivmnpflqIHoia8NCivmnpflu7rkuIANCivmnpflu7rlkL4NCivmnpflu7rlu7cNCivmnpflu7roia8NCivmnpflu7roj68NCivmnpflvaXmlocNCivmnpflvaXkvLYNCivmnpflvaXnlKsNCivmnpflvaXoiIgNCivmnpfmgYbnoqkNCivmnpfmlL/oia8NCivmnpfmlL/lhIANCivmnpfmmKXlubQNCivmnpfmmK3lv5cNCivmnpfmmJ/mmagNCivmnpfmn5HmnY8NCivmnpfmn4/mnZENCivmnpfmn4/nv7ANCivmnpfngrrmlocNCivmnpfnjrLoh7MNCivmnpfnm4jlkJsNCivmnpfnpYjlnYcNCivmnpfnp4vmg6ANCivmnpfnvo7lpoINCivmnpfnvo7lkJ8NCivmnpfnvo7njrINCivmnpfnvo7oj68NCivmnpfoh7TlkJsNCivmnpfoi7HnlLcNCivmnpfombnlpoINCivmnpfosp7lu7YNCivmnpfpg4HmlY8NCivmnpfpg4HomK0NCivmnpfpn4vlmIkNCivmnpflgKnlpoINCivmnpfljp/lkIgNCivmnpflk7Llro8NCivmnpflqJ/lpoINCivmnpflrrbnlJ8NCivmnpflrrbli4cNCivmnpflrrbogZYNCivmnpflrrbmhbYNCivmnpflrrnku58NCivmnpfls7vmmokNCivmnpfluq3nkYsNCivmnpfmjK/mtakNCivmnpfmmYnlhagNCivmnpfmmY/nqJoNCivmnpfmm7jmpbcNCivmnpfmoYLnj6ANCivmnpfms7Dntq0NCivmnpfnj67lpoINCivmnpfnm4rlvJgNCivmnpfnpZDnpr4NCivmnpfnqojmhI8NCivmnpfntKDoj68NCivmnpfogJjlvrcNCivmnpfotbfnv44NCivmnpflgYnmsJENCivmnpflgYnlvrcNCivmnpflnIvmrKMNCivmnpfln7nloK8NCivmnpflqYnnkZwNCivmnpflurflr6cNCivmnpfmlY/oo5UNCivmnpfmuIXpm7INCivmnpfmt5HnjrINCivmnpfmt5HlqKUNCivmnpfmt5HokI0NCivmnpfmt5HlhIANCivmnpfnm5vlgpENCivmnpfpm6rokI0NCivmnpfljZrpmoYNCivmnpfmg6DmlocNCivmnpfmg6DmlY8NCivmnpfmg6DnkIcNCivmnpfmmbrog70NCivmnpfmnJ8NCivmnpfmuZjmg6ANCivmnpfntKvoj4ENCivmnpfoppblsIoNCivmnpfpgLjmmIANCivmnpfpgLjlhJINCivmnpfpm4XlkJsNCivmnpfpm4XlgKsNCivmnpfpm4Xmg6ANCivmnpfpm4Xoj68NCivmnpfpm4XorJkNCivmnpfpoIblrokNCivmnpfltanlsbENCivmnpfmlazmlocNCivmnpfmlrDlh6ENCivmnpfmpaDmo4sNCivmnpfmr5PotoUNCivmnpfnhYzou5INCivmnpfnkZ7lrrYNCivmnpfnkZ7omK0NCivmnpfnpbrli5sNCivmnpfnvqnlgpENCivmnpfnvqTls7ANCivmnpfogZbmgakNCivmnpfogZbpiJ4NCivmnpfoo5XloIUNCivmnpfoqanlh6ENCivmnpfoqanpm68NCivmnpfpm43nv5QNCivmnpfpvI7mpI0NCivmnpflmInnj40NCivmnpflmInnvqQNCivmnpfmpq7mrL0NCivmnpfnnb/mmpgNCivmnpfnsr7muZsNCivmnpfnv6DokI0NCivmnpfpipjnhYwNCivmnpfpvYrolJoNCivmnpflu6PnvqkNCivmnpfmhaflkJsNCivmnpfmhafnvo4NCivmnpfmhafokI0NCivmnpfmhafpupcNCivmnpfnkb7omK0NCivmnpfos6LlvpcNCivmnpflrbjpmoYNCivmnpfmm4nlkJsNCivmnpfmm4noj68NCivmnpfmvqTnvqkNCivmnpfnqY4NCivmnpfoiIjph5cNCivmnpfpjKbpmoYNCivmnpfpnZzlrpwNCivmnpfpnZzoiqwNCivmnpfmh4vlt54NCivmnpfpp7/pgLgNCivmnpfptLvpgZQNCivmnpfosZDoiJwNCivmnpfpupflkJsNCivmnpfpupfoj68NCivmnpfnubzlubMNCivmnpflt43pvo0NCivmnpfoiorkuqgNCivmnpflp53lnYcNCivmnpflgKzkuJYNCivmnpfnkK7plpQNCivmnpfnhZLptLsNCivmnpfnrbHoj4ENCivmnpfpiLrlh7ENCivmnpfpqacNCivnpYHnvqnlnIsNCivliJ3oi6Xlh6ENCivpgrXlpZXpiJ4NCivpgrXmh7flvrcNCivpgrHljYPntroNCivpgrHlrZDmpZMNCivpgrHlpKnlro8NCivpgrHmlofptLsNCivpgrHlubzlqpoNCivpgrHnjonnjrINCivpgrHlronlj7ANCivpgrHlv5flhYkNCivpgrHnp4Doi7ENCivpgrHkvbPmnb4NCivpgrHlu7bpvaENCivpgrHmmIzoo5UNCivpgrHms5PlvbANCivpgrHkv6Hnm4oNCivpgrHkv4rmpq4NCivpgrHlk4Hoj68NCivpgrHlpZXnnb8NCivpgrHlu7roqqANCivpgrHmlL/muacNCivpgrHmn4/nkZwNCivpgrHnm4jmo6ANCivpgrHoh7TnqY4NCivpgrHph43mhrINCivpgrHmjK/ls7ANCivpgrHnj67ntroNCivpgrHlnIvmga0NCivpgrHlqYnlrIUNCivpgrHmuIXpvo0NCivpgrHmt5HmhacNCivpgrHlibXlhIkNCivpgrHmg6DoqakNCivpgrHmuZjpm7INCivpgrHpm4XoiqwNCivpgrHpm4XojJwNCivpgrHmr5PnjrINCivpgrHnm5/nkIcNCivpgrHoqannkIENCivpgrHlmInmhacNCivpgrHpn7bnkakNCivpgrHmhaflqbcNCivpgrHpnZzlrpwNCivpgrHosZDnpaUNCivpgrHpn7vlr6cNCivpgrHnubznkakNCivpgrHpoa/moZMNCivpgrHnkKzmt5ENCivpgrHpiLrmlpANCivph5HmmI7ovJ0NCivph5Hli6QNCivkvq/mloflk7INCivkvq/lro/mmIwNCivkvq/lsrPlro8NCivkvq/kv6HlrocNCivkvq/mn4/pnZINCivkvq/mt7XpipgNCivkvq/pm4Xpm68NCivkvq/pnZzmsZ0NCivkv57kvbPlh6ENCivkv57oiorologNCivlp5zlro/mpq4NCivlp5zoip3mgKENCivlp5zlh7HlgpENCivlp5zlop7ngqsNCivlp5zml7vlp40NCivlp5rnq4vkuIkNCivlp5rkvbPmhacNCivlp5rlqIHlrocNCivlp5rlh7HmlocNCivlp5rlvrfpup8NCivlvovmjK/mj5oNCivmlr3lj6/pmoYNCivmlr3lrofpp78NCivmlr3lrZ3lvrcNCivmlr3ogrLnkZwNCivmlr3kvanoj68NCivmlr3lrpvnm7QNCivmlr3mmI7lpo0NCivmlr3kv4rlkI0NCivmlr3lu7rlrocNCivmlr3mn4/lpoINCivmlr3pg4HolZkNCivmlr3mlY/nlLcNCivmlr3ljZrlhYMNCivmlr3mmbrli4cNCivmlr3pm4XlqJ8NCivmlr3lmInnkKoNCivmlr3mhaflkJsNCivmlr3pnZzmgKENCivmlr3nkYvnkZwNCivmn6/mlofnpaUNCivmn6/lhajnm4oNCivmn6/lv5fmmI4NCivmn6/kvanlkJsNCivmn6/lrpvlkJsNCivmn6/mrKPlhIANCivmn6/kv4rpmoYNCivmn6/nm4jlpoINCivmn6/mlY/nm5sNCivmn6/ljZrlhYMNCivmn6/mo4vmo6MNCivmn6/mr5PokI0NCivmn6/ps7PlhIANCivmn6/nk4rpjqMNCivmn7PkvanlkJsNCivmn7Pmo4vlhYMNCivmrrXmmI7lro8NCivmtKrlipvlo7kNCivmtKrlo6vogrINCivmtKrlrZDlqbcNCivmtKrmlofmmI4NCivmtKrkuJblmIkNCivmtKrmsLjmmIwNCivmtKrnjonokqgNCivmtKrlkI3ooaENCivmtKrlkJvnpaUNCivmtKrlv5fmmI4NCivmtKrmnZHpipgNCivmtKroia/mrKMNCivmtKrlnaTpjKENCivmtKrlrpzoia8NCivmtKrmgKHnnJ8NCivmtKrmmI7pvo0NCivmtKrkv4rpm4QNCivmtKrmlL/pnIgNCivmtKrnvo7okI0NCivmtKrph43ljb8NCivmtKrmjK/nm4oNCivmtKrnj67oirMNCivmtKrlgYnlk7INCivmtKrmm7znj4oNCivmtKrlnIvnv5QNCivmtKrlqYnntIsNCivmtKrlvqHlvZcNCivmtKrmuIXlgaUNCivmtKrmt5Hmt6kNCivmtKrpm6roirMNCivmtKrmg6Dmo4sNCivmtKroj4HpmoYNCivmtKrpm4Xoi5MNCivmtKrmhYjkvLYNCivmtKrnhYzlh7ENCivmtKrnkZ7ptLsNCivmtKrokLHpi5INCivmtKrpnZblh7ENCivmtKrlmInok64NCivmtKrmpq7ovJ0NCivmtKrntroNCivmtKrogoflvaUNCivmtKrpipjpjb4NCivmtKrmhbbpipgNCivmtKrnkannj40NCivmtKrpnZzmgKENCivmtKrol53oj4ENCivmtKrnubzos6INCivmtKrmmaLmg4cNCivmtKrpiLrmq7sNCivntIDmlofmrL0NCivntIDlv5fpnJYNCivntIDmgKHlqbcNCivntIDnm4jlt54NCivntIDljZrmlY8NCivntIDpoIboiIgNCivntIDomK3mvZQNCivog6HmlofnkZwNCivog6HnjonmhacNCivog6Hlu7flqIENCivog6HlrprlrocNCivog6HoirPmhYgNCivog6HnjrLlqYkNCivog6Hlrrbmpq4NCivog6HntJToj4ENCivog6Hmt5HlkJsNCivog6HljZrnoa8NCivog6HmmbrpipgNCivog6Hpm4XmmboNCivog6HnkZ7mtJkNCivog6HnoqflqpwNCivog6HpnZzoi5ENCivog6Hmh7/lv4MNCivojIPmlofmlL8NCivojIPlkInmhbYNCivojIPmmI7kuK0NCivojIPlp5zmhafmgKENCivojIPlrrboqqANCivojIPogJXprYENCivojIPljZrlvbANCivojIPmmbrmrL0NCivojIPnkZ7npaUNCivojIPntrHos6INCivojIPogIDogbANCivoqIjnq7nlrocNCivpn4vmoYLku4ENCivlgKrlqIHpgaANCivlgKrnkZ7mnJ8NCivlh4zmmI7lvrcNCivllJDljYPmg6ANCivllJDpgqbms7ANCivllJDoi7HlqJwNCivllJDmt5HoiqwNCivllJDnvqnloK8NCivllJDorb3njqsNCivlpI/mmKXpppkNCivlpI/mhafpvaENCivlravlhYPkv4oNCivlravmsLjkv6ENCivlravkvK/kuK0NCivlravljZToo5UNCivlravlu7rltLQNCivlravmjK/mtrwNCivlravlnIvmm7gNCivlravmt5HoiqwNCivlravlgrPlh7ENCivlravpgZPpmoYNCivlravosarlv5cNCivlravlrbjlhIANCivlravnkYANCivlvpDkuZnlj68NCivlvpDlo6vli5sNCivlvpDku4Hkub4NCivlvpDmlofnm4oNCivlvpDku5Xms5MNCivlvpDmsLjlhYkNCivlvpDnq4vpgZQNCivlvpDlpoLmmIcNCivlvpDlhYvpiJ4NCivlvpDlv5flgYkNCivlvpDogrLmhYgNCivlvpDkvanpjKYNCivlvpDmmIbnvr8NCivlvpDmnb7ptLsNCivlvpDkv6HkuK0NCivlvpDmgJ3ntq0NCivlvpDnvo7oj68NCivlvpDlrrbmpbcNCivlvpDmtZrlgpENCivlvpDlgYnls7sNCivlvpDlnIvlgKsNCivlvpDlqYnlhIANCivlvpDmlY/oirMNCivlvpDmt5HlqJ8NCivlvpDojonnnJ8NCivlvpDmjoznkZsNCivlvpDoqaDlqpsNCivlvpDpoIblro8NCivlvpDnkZ7mga0NCivlvpDoo5XlvawNCivlvpDlmInlro8NCivlvpDlpKLpup8NCivlvpDntq3mj5oNCivlvpDpipjorJkNCivlvpDmhaflv4MNCivlvpDpnIfmnbENCivlvpDptLvku4ENCivlvpDnubzmlL8NCivlvpDoj6HnpqcNCivlvpDpiLrntr4NCivmn7TlrbjoiJwNCivmrrfogofpmb0NCivnpZbmm4nps7MNCivnp6bmopPpipgNCivnv4Hkuo7nkKoNCivnv4HmlofojLkNCivnv4Hku7Los6INCivnv4HogrLnqJQNCivnv4HmmI7lrokNCivnv4Hmn4/ogZYNCivnv4Hnj67mgKENCivnv4HltIfluq0NCivnv4Hmt5Hoj68NCivnv4HpgLjou5INCivnv4HnvqnlrpcNCivnv4HlpKLlkJsNCivnv4HpipjpgZwNCivnv4HpnZznkZwNCivnv4HpnZrmmY8NCivoooHlpoLlsqENCivoooHlgYnlgKsNCivoooHmpq7nh6YNCivppqzkuIDmlocNCivppqznjonlqJ8NCivppqzkvbPkvLYNCivppqzoi7HlgpENCivppqzmmbrlkJsNCivppqznt5Llt50NCivpq5jkuIDpipgNCivpq5jlsI/mlocNCivpq5jkuJbmmIwNCivpq5jmraPlnIsNCivpq5jkvIrkv4oNCivpq5jlro/pipgNCivpq5jnp4DpiLQNCivpq5jlpq7nkYsNCivpq5jmmI4NCivpq5jlkrjlr6YNCivpq5jnvo7oirMNCivpq5jls7ANCivpq5jlgaUNCivpq5jln7nnnJ8NCivpq5jmlY/lqIkNCivpq5jnrJnovJQNCivpq5jnkKroiJINCivpq5jpm4XohbkNCivpq5jnhafplpQNCivpq5joqanlqIkNCivpq5jlvbDpmoYNCivpq5jnv6Dnv44NCivpq5jpipjnkIcNCivpq5jmhafokI0NCivpq5jorZzlgKsNCivpq5jmlozpkasNCivllYblvJjmmJMNCivltJTlgKnoi5MNCivlurfkuYPmnIgNCivlurfmlLjoj68NCivlurfnvo7njrINCivlurflgpHmsJENCivlurfpm4XlqbcNCivlurfmm4nolZkNCivlvLXkuIDptLsNCivlvLXlipvlpKsNCivlvLXljYPph4wNCivlvLXlsI/okI0NCivlvLXku4HmnbANCivlvLXlhYPpmoYNCivlvLXlpKnps7MNCivlvLXlv4PnkZwNCivlvLXmloflvaUNCivlvLXmlofmrL0NCivlvLXmlofosaoNCivlvLXmlofpqLANCivlvLXkuJbmmI4NCivlvLXkuJblhJINCivlvLXku5XogrINCivlvLXlj6/mrKMNCivlvLXlvJjms7ANCivlvLXmraPlv6ANCivlvLXmraPooZsNCivlvLXmsLjkv4oNCivlvLXnjoTptLsNCivlvLXnjonnkKoNCivlvLXnq4vmlocNCivlvLXkuqblr6cNCivlvLXlhYnku4ENCivlvLXljKHmnbANCivlvLXlpoLnkakNCivlvLXml63lrpcNCivlvLXoh7Pnnb8NCivlvLXkvZHnvqQNCivlvLXlhYvlgYkNCivlvLXlppnmhacNCivlvLXlro/nkZ4NCivlvLXlv5cNCivlvLXlv5fmmI4NCivlvLXlv5fnpaUNCivlvLXlv5fpgZQNCivlvLXlv5fosaoNCivlvLXmsoXnkr0NCivlvLXnp4DnkKoNCivlvLXogrLltKcNCivlvLXogrLoqqANCivlvLXogrLnkYsNCivlvLXkup7pipwNCivlvLXkvbPmg6ANCivlvLXkvannkZsNCivlvLXlrZ/lqbcNCivlvLXlrpzmlrANCivlvLXlv7XmhYgNCivlvLXmmIbnhYwNCivlvLXmmI7nhacNCivlvLXmnpfoiqwNCivlvLXmsrvlnIsNCivlvLXoip3lj4sNCivlvLXph5Hps7MNCivlvLXkv4rlgYkNCivlvLXlhqDoj68NCivlvLXlu7rosaoNCivlvLXmgYbnkYsNCivlvLXmn5TmmI4NCivlvLXnlYzogbANCivlvLXntIDlkJsNCivlvLXnvo7pm68NCivlvLXojILphpINCivlvLXpppnnkr0NCivlvLXlgKvnkYsNCivlvLXlk7LlgaUNCivlvLXlk7Lntq0NCivlvLXlrrbmjK8NCivlvLXlrrboj7ENCivlvLXlrrbnvqQNCivlvLXlrrbntroNCivlvLXlrrbosaoNCivlvLXlrrbpipgNCivlvLXlrrbnkYsNCivlvLXls7vlmIkNCivlvLXluq3mupANCivlvLXmjK/mupANCivlvLXmmYnosaoNCivlvLXmm7jntq0NCivlvLXmm7jppqgNCivlvLXmoYLps7MNCivlvLXnj67mgKENCivlvLXnm4rntq0NCivlvLXnp6boirgNCivlvLXntJTnm4oNCivlvLXogL/ltJoNCivlvLXpq5jnkZ4NCivlvLXlgaXoia8NCivlvLXlnIvlqpsNCivlvLXlqYnmmoQNCivlvLXmg5/mjbcNCivlvLXmooXlkJsNCivlvLXmuIXlh7ENCivlvLXmt5Hnj40NCivlvLXmt5HojLkNCivlvLXmt5Hpm4UNCivlvLXmt7Xlr4wNCivlvLXojonojLkNCivlvLXlh7HlrocNCivlvLXlh7HnkLMNCivlvLXli53lgpENCivlvLXljZrli5sNCivlvLXllqznv5QNCivlvLXlr4zmt7MNCivlvLXmg6DlqJ8NCivlvLXmg6Doj4ENCivlvLXmlabnvqkNCivlvLXmma/muL4NCivlvLXmmbrmuIUNCivlvLXmmbrnv5QNCivlvLXmmbrorJkNCivlvLXmuZjmgKENCivlvLXnmbvnv5QNCivlvLXntKvpiLQNCivlvLXoiJzoj68NCivlvLXoqLzojYMNCivlvLXpgLjnvqQNCivlvLXpiJ7osr0NCivlvLXpm4Xlp40NCivlvLXpm4XmlY8NCivlvLXpm4XlqbcNCivlvLXpm4Xmg6ANCivlvLXpm4XnkLQNCivlvLXpm4XpiLQNCivlvLXpm6/lhIANCivlvLXll6PmlocNCivlvLXmlrDlro8NCivlvLXmr5PlgKsNCivlvLXnkZrnj4oNCivlvLXnkZ7oirgNCivlvLXnkZ7msLYNCivlvLXnpbrmmIcNCivlvLXogZbojokNCivlvLXoqanmgKENCivlvLXpnZbmgKENCivlvLXlmInmraMNCivlvLXlmInoiqwNCivlvLXlmInmmYkNCivlvLXlmInmg6ANCivlvLXlmInogbINCivlvLXmppXlrrkNCivlvLXnnb/nqY4NCivlvLXnoqnmoZMNCivlvLXntrXoirMNCivlvLXntq3lk7INCivlvLXnv6DmlocNCivlvLXok5PokLENCivlvLXpipjlrpcNCivlvLXps7PlubMNCivlvLXmhbbmgKENCivlvLXmhaflqJ8NCivlvLXnkannj4oNCivlvLXmhrblkJsNCivlvLXmm4noj4ENCivlvLXnv7DmlocNCivlvLXpnZzlpoINCivlvLXnkrDkvIoNCivlvLXptLvmmboNCivlvLXnsKHmrKPoj68NCivlvLXosZDnkrgNCivlvLXnk4rmlocNCivlvLXol53ppqgNCivlvLXlr7bkupENCivlvLXogIDkupENCivlvLXogIDogbINCivlvLXppqjmlocNCivlvLXlt43ogIANCivlvLXoioMNCivlvLXnkIfplpQNCivlvLXnkKzoj4ENCivlvLXnkYvoirgNCivlvLXnrbHpm68NCivlvLXnppXlgKsNCivlvLXmgZLkuK0NCivmm7nlo6vmlY8NCivmm7nogb/nlLcNCivmm7nmmIznlLcNCivmm7nlk7LlmIkNCivmm7nmt5HlqpsNCivmm7nnmpPpm7INCivmm7nlmInmlocNCivmm7nnkr3nqaANCivmooHmloflrokNCivmooHmraPlv6ANCivmooHmsZ3oiJwNCivmooHlv5fpipgNCivmooHmnbHmnpcNCivmooHlvaXosaoNCivmooHlrrbmmI4NCivmooHmmYnprYENCivmooHllZ/njoQNCivmooHli53pipgNCivmooHmnJ3lh7ENCivmooHmhLfoirgNCivmooHlmInnj40NCivmooHmhafoj68NCivmooHnk4rkuLkNCivmooXlhYnlrocNCivnm5vlv4MNCivojqvmmJ/lrocNCivojorlo6vlnIsNCivojormlofmmK0NCivojorlvJjku7sNCivojornjonpup8NCivojorlv5fmpq4NCivojorkvp3lqbcNCivojorlnaTlk7INCivojorlrpfli7MNCivojormgKHou5INCivojormnbHmmI4NCivojorph5HpnZwNCivojormlL/mhrINCivojorlgInmnbANCivojorls7vmppUNCivojorntJTntJQNCivojorln7npkasNCivojormt5HoiqwNCivojormt5Hnj7oNCivojorli53liKkNCivojorlvqnosrQNCivojormg6Dok4kNCivojormmbrmtrUNCivojornmbvnmbwNCivojorpm4Xlv4MNCivojorpm4Xmg6ANCivojorpm6/pm68NCivojoroo5XmlocNCivojorpipjmma8NCivojormqLnlro8NCivojorpnZzmgKENCivojorpjpTnkp4NCivojormh7/lvLcNCivojornrbHlqbcNCivoqLHlj4jku4ENCivoqLHlo6zogIANCivoqLHmlofljpoNCivoqLHmlofosaoNCivoqLHkuJbmsJENCivoqLHliqDlro8NCivoqLHmraPlv6ANCivoqLHmsLjmr4UNCivoqLHnjonlrIsNCivoqLHlkI3kuJYNCivoqLHmsY7nqY4NCivoqLHlhYvku7INCivoqLHlro/lvrcNCivoqLHlv5fltIcNCivoqLHlv5fpgaANCivoqLHnp4Dnj4oNCivoqLHoia8NCivoqLHkvbPpm68NCivoqLHlrZ/nv5QNCivoqLHmgKHnj64NCivoqLHmnb7nrYkNCivoqLHoirPpipgNCivoqLHkv6Hmpq4NCivoqLHmgazntr4NCivoqLHnj4rnkZwNCivoqLHnvo7oj68NCivoqLHpg4HmlY8NCivoqLHlk7LnkZ4NCivoqLHlk7LnkYsNCivoqLHlrrbmmpgNCivoqLHlrrbosaoNCivoqLHls7vlk7INCivoqLHluq3nkYsNCivoqLHmmYnnhpINCivoqLHmm7jpipMNCivoqLHnj67lmIkNCivoqLHntKDoj4ENCivoqLHosqHlvpcNCivoqLHlqYnojLkNCivoqLHmooXoj4ENCivoqLHmt5HoiqwNCivoqLHmt5Hmg6ANCivoqLHojonojokNCivoqLHli53li5sNCivoqLHloKHlpoINCivoqLHmg6DlpoINCivoqLHmg6Dpm68NCivoqLHmma/piJ4NCivoqLHmmbrlh7ENCivoqLHmmbrlvrcNCivoqLHnq6Pog70NCivoqLHoj6/lgJoNCivoqLHpgLjnq6ANCivoqLHpm4XnjrINCivoqLHpm4Xmg6ANCivoqLHpm4Xpm4ENCivoqLHpm6/nkLMNCivoqLHmpajnpaUNCivoqLHnkZ4NCivoqLHnkZ7lhIANCivoqLHogZbmnbANCivoqLHlmInlhYMNCivoqLHlmInnj64NCivoqLHmppUNCivoqLHnoqnkv64NCivoqLHntq3nnJ8NCivoqLHpipjku4ENCivoqLHplqPmlocNCivoqLHmhafosp4NCivoqLHmhrboirMNCivoqLHpjKbmlocNCivoqLHltrjku4ENCivoqLHnk4rmlocNCivoqLHpupfoj68NCivoqLHppqjku4ENCivoqLHmmLboj68NCivoqLHnrbHokI0NCivoqLHmgZLpgZQNCivpgKPkvZHku4ENCivpgKPlu7rmmboNCivpgKPmoYLlro8NCivpgKPllZ/mmboNCivpgKPlmInntJQNCivpg63kuYPmpq4NCivpg63kuo7npo4NCivpg63lrZDnq4sNCivpg63ku4Hlk7INCivpg63mlofmg6ANCivpg63kuJbomK0NCivpg63msLjmmI4NCivpg63ku7Lmt7UNCivpg63lubTnnJ8NCivpg63lkJvmgKENCivpg63lv5flro8NCivpg63ogrLlhYgNCivpg63pgqblvaUNCivpg63kvbPpkasNCivpg63lrZ/ok4kNCivpg63mgKHkvLYNCivpg63mgKHnp4ANCivpg63mmI7lrpcNCivpg63mmI7nkYsNCivpg63njqXlpqYNCivpg63oip3nnb8NCivpg63kv53lkJsNCivpg63kv4rlhIQNCivpg63lk4Hnp4ANCivpg63lqIHlv5cNCivpg63lu7roia8NCivpg63mgJ3lrpwNCivpg63mmK3lrokNCivpg63mn4/np4ANCivpg63nm4jlkJsNCivpg63nvo7lloQNCivpg63osp7lrY0NCivpg63lh4zlv5cNCivpg63lrrbnpaUNCivpg63lrrjmmIANCivpg63mjK/mvKINCivpg63moYLps7MNCivpg63ntKDntr4NCivpg63lnIvmraMNCivpg63mt7vmlrANCivpg63mt5HmhacNCivpg63mg6DpnZINCivpg63mmbrnkYsNCivpg63pgLLmmIwNCivpg63pm4Xoj7ENCivpg63nkZ7mrL0NCivpg63lmInlgYkNCivpg63noqflqJ8NCivpg63mhbbnlJ8NCivpg63lhJLorJkNCivpg63nh5XnjrINCivpg63pnZznvo4NCivpg63pjq7lhYMNCivpg63njbvmlocNCivpg63nsaDmhbYNCivpg63mmpANCivpmbPkuIDoj68NCivpmbPkuYPmpq4NCivpmbPlj4jmmJUNCivpmbPljYPpjKYNCivpmbPlrZDlvaUNCivpmbPlt7HljYcNCivpmbPku4HlrpcNCivpmbPlhYPpnZYNCivpmbPlpKnos54NCivpmbPlv4PmvZQNCivpmbPmloflv6ANCivpmbPmlofmtpMNCivpmbPmlofmrL0NCivpmbPmloflvrcNCivpmbPmlofpiLoNCivpmbPkuJblrpcNCivpmbPkuJbmlL8NCivpmbPkuJbnq6ANCivpmbPkuJbmvqQNCivpmbPku6XpnZwNCivpmbPku5Xlj6ENCivpmbPlj6/mrKMNCivpmbPlt6fnj4oNCivpmbPlubzmrKMNCivpmbPlvJjoqJMNCivpmbPmnK3ln7kNCivpmbPmraPls7ANCivpmbPmraPosaoNCivpmbPmsLgNCivpmbPmsLjpnZINCivpmbPmsLjoqowNCivpmbPnjonmlocNCivpmbPnjonoiqwNCivpmbPnjonnj6ANCivpmbPnjonoj4ENCivpmbPnjonnkpgNCivpmbPnn7PogrINCivpmbPnq4vlgKsNCivpmbPnq4vntq0NCivpmbPkvIrlgKsNCivpmbPlhYnnlKsNCivpmbPlkJHmpq4NCivpmbPlpoLomIsNCivpmbPlronkvZENCivpmbPmsZ/nq4sNCivpmbPoh7Plh7ENCivpmbPkvZHluq0NCivpmbPkvK/okrwNCivpmbPlkJvoiKoNCivpmbPlnYfnoqkNCivpmbPlpo3np4ANCivpmbPlro/ku4ENCivpmbPlro/nvo4NCivpmbPlro/pgZQNCivpmbPlro/nhZINCivpmbPlv5flubMNCivpmbPlv5fmspsNCivpmbPlv5fmmI4NCivpmbPlv5flvaUNCivpmbPlv5fnpaUNCivpmbPlv5fmupANCivpmbPlv5fntq0NCivpmbPlv5fosaoNCivpmbPlv5fnqY4NCivpmbPmlLjlqbcNCivpmbPmsbbmtKUNCivpmbPnp4Doip0NCivpmbPnp4Dmg6ANCivpmbPnp4DmhacNCivpmbPogrLkvZANCivpmbPogrLoqakNCivpmbPoia/mlL8NCivpmbPphYnojLkNCivpmbPkvp3nv5QNCivpmbPkvbPlkJ8NCivpmbPkvbPnjqUNCivpmbPkvbPmg6ANCivpmbPkvbPpm68NCivpmbPkvbPnkpgNCivpmbPkvoPlqbcNCivpmbPkvankvakNCivpmbPkvannkLMNCivpmbPlhbbpiJ4NCivpmbPlnaTkvZANCivpmbPlp5Tmib8NCivpmbPlrZ/lgYkNCivpmbPlrZ/ovJ0NCivpmbPlrpflv5cNCivpmbPlrpfml5cNCivpmbPlrpzlubMNCivpmbPlrpzlp78NCivpmbPlrpznkosNCivpmbPlsJrmlocNCivpmbPlubjotrMNCivpmbPlv6Doia8NCivpmbPmgKHmlocNCivpmbPmgKHlpoINCivpmbPmgKHlpoINCivpmbPmgKHnq7kNCivpmbPmgKHkvLYNCivpmbPmgKHlkJsNCivpmbPmgKHlkJsNCivpmbPmgKHlkJsNCivpmbPmgKHmmIwNCivpmbPmgKHnnJ8NCivpmbPmgKHnkLQNCivpmbPmgKHoqqANCivpmbPmgKHmvZQNCivpmbPmgKHpnZwNCivpmbPmgKHlj6ENCivpmbPmmIzmlocNCivpmbPmmI7mraMNCivpmbPmmI7mnZANCivpmbPmmI7nj6ANCivpmbPmmI7mpbcNCivpmbPmmI7osZANCivpmbPmnbHoj68NCivpmbPmrKPlpoINCivpmbPmrKPmgKENCivpmbPmrKPomK0NCivpmbPms5Pnv5QNCivpmbPms4rovrANCivpmbPnjp/nkZsNCivpmbPnjqvoh7sNCivpmbPnp4nmlowNCivpmbPoip3lgKkNCivpmbPph5Hoia8NCivpmbPplbfmhbYNCivpmbPkuq3lkJsNCivpmbPkuq7nqY4NCivpmbPkv6HlkJ8NCivpmbPkv6HnlKsNCivpmbPkv6Hoo5UNCivpmbPkv53lhYMNCivpmbPkv4rku7ANCivpmbPkv4rlrocNCivpmbPkv4rml60NCivpmbPkv4rlro8NCivpmbPkv4rlu7cNCivpmbPkv4roia8NCivpmbPkv4rpg44NCivpmbPkv4roj68NCivpmbPkv4rmppUNCivpmbPkv4rpipgNCivpmbPkv4rmqLoNCivpmbPkv5DlrokNCivpmbPkv57ku7INCivpmbPlhqDlpKsNCivpmbPlhqDlrocNCivpmbPlhqDlro8NCivpmbPlhqDlgpENCivpmbPlhqDpipgNCivpmbPli4flnKgNCivpmbPli4HlkL4NCivpmbPlk4HlhYgNCivpmbPlpZXkuK0NCivpmbPlpZXlu7cNCivpmbPlpZXnqY4NCivpmbPlp7/mlocNCivpmbPlp7/lkJ8NCivpmbPlp7/nqY4NCivpmbPlqIHlhagNCivpmbPlqIHliqkNCivpmbPlqIHpgpENCivpmbPlqIHlhJINCivpmbPlrqPmr48NCivpmbPluKXlkI0NCivpmbPlu7rku7sNCivpmbPlu7rlrokNCivpmbPlu7rml60NCivpmbPlu7rlro8NCivpmbPlu7rlu7cNCivpmbPlu7rnlKsNCivpmbPlu7rpgqYNCivpmbPlu7rmj5oNCivpmbPlu7rpgZQNCivpmbPlu7rovJQNCivpmbPlu7rnkosNCivpmbPlu7rng5wNCivpmbPlvaXku7sNCivpmbPlvaXluIYNCivpmbPlvaXlkJsNCivpmbPlvaXlu7cNCivpmbPlvaXmmIwNCivpmbPlvaXntrgNCivpmbPlvaXli7MNCivpmbPmgJ3lubQNCivpmbPmgJ3mupANCivpmbPmgJ3nqY4NCivpmbPmlL/mlocNCivpmbPmlL/oo5UNCivpmbPmmKXlpoMNCivpmbPmmK3mlocNCivpmbPmmK3lgYkNCivpmbPmmK3nkYsNCivpmbPmmKDlhJINCivpmbPmmLHkuJ4NCivpmbPmmLHnlKsNCivpmbPmn5TlrokNCivpmbPmn4/ku70NCivpmbPmn4/lubQNCivpmbPmn4/lv5cNCivpmbPmn4/ls7ANCivpmbPmn4/lr6cNCivpmbPmn4/ovK8NCivpmbPngqvlkJsNCivpmbPngrPpjJUNCivpmbPnj43nkakNCivpmbPnm4jlhagNCivpmbPnm4jlrokNCivpmbPnm4jlrZwNCivpmbPnm4jlqbcNCivpmbPnm4jnkocNCivpmbPnprnpvYoNCivpmbPnp4vluIYNCivpmbPnp4vokI0NCivpmbPntIDotrMNCivpmbPnvo7lpoINCivpmbPnvo7lkJsNCivpmbPnvo7oip0NCivpmbPnvo7ntJQNCivpmbPnvo7nkLQNCivpmbPnvo7mhacNCivpmbPnvr/osLcNCivpmbPoh7Tnpo8NCivpmbPojILpm4QNCivpmbPoi7HlgpENCivpmbPombnmm7INCivpmbPooY3oh7MNCivpmbPosp7lpqQNCivpmbPpg4HmlocNCivpmbPpg4Hoj4ENCivpmbPph43lu7cNCivpmbPpn4vkvLYNCivpmbPpn7MNCivpmbPpppnlkJ8NCivpmbPlgJbnv6ANCivpmbPlk7LlvLcNCivpmbPlrrbnj40NCivpmbPlrrbpm68NCivpmbPlrrbmhacNCivpmbPlrrnokLENCivpmbPmjK/mnbENCivpmbPmmYLnm58NCivpmbPmoYLnjokNCivpmbPms7Dls7ANCivpmbPmtanojLkNCivpmbPnj67nj64NCivpmbPnm4roo5UNCivpmbPntKDlqKUNCivpmbPogJjlr6wNCivpmbPkub7mt6YNCivpmbPlgYnojokNCivpmbPlgaXpnJYNCivpmbPlnIvls7ANCivpmbPlnIvmpq4NCivpmbPln7nnq68NCivpmbPlqYnoj4ENCivpmbPltJHpipgNCivpmbPllZ/lrZgNCivpmbPmlY/mlrANCivpmbPmuIXlpYcNCivpmbPmt5HlkJsNCivpmbPmt5HoiqwNCivpmbPmt5HlqJ8NCivpmbPmt5HnvpoNCivpmbPmt5Hpm4UNCivpmbPmt5HpnZwNCivpmbPntLnluq0NCivpmbPoqLHmsJENCivpmbPlgpHoo5UNCivpmbPli53lmIkNCivpmbPlqbfnjp8NCivpmbPmg6DmlocNCivpmbPmg6DnjrINCivpmbPmg6DokI0NCivpmbPmg6DpvaENCivpmbPmma/ms7ANCivpmbPmmbrlgYkNCivpmbPmnJ3nhpkNCivpmbPmuZjnkLQNCivpmbPnkKbnkLMNCivpmbPogoXmrIoNCivpmbPoqaDkuq4NCivpmbPpgLjlubMNCivpmbPpgLjoj4ENCivpmbPpgLLpmoYNCivpmbPpmobmlowNCivpmbPpm4XoiqwNCivpmbPpm4Xoi5MNCivpmbPpm4Xmg6ANCivpmbPpm4XnkLQNCivpmbPpm4Xpm68NCivpmbPpm4Xpn7sNCivpmbPpoIbnmbwNCivpmbPmhI/pm68NCivpmbPmlazmlocNCivpmbPmpobmtrUNCivpmbPmr5PpiJ4NCivpmbPnhafmhYgNCivpmbPnkZ7liKkNCivpmbPnkZ7nkZwNCivpmbPnkZzoqakNCivpmbPnvqnlv6ANCivpmbPogZblrpwNCivpmbPonILngZ0NCivpmbPoo5XmmboNCivpmbPoqanlqbcNCivpmbPpgYvlvrUNCivpmbPpvI7ku4ENCivpmbPlmInlro8NCivpmbPlmInls7ANCivpmbPlmInpm4ENCivpmbPlmInnkakNCivpmbPml5fmmIwNCivpmbPmpq7nh78NCivpmbPnoqfntIUNCivpmbPnpo/mnpcNCivpmbPntq3lk7INCivpmbPogofptLsNCivpmbPpipjms4kNCivpmbPpipjogIANCivpmbPlhIANCivpmbPlu6Ppup8NCivpmbPlvrfpgaANCivpmbPmhbboj68NCivpmbPmhbbptLsNCivpmbPmhafoip0NCivpmbPmhafnvo4NCivpmbPmhafntJQNCivpmbPmhafpm68NCivpmbPmhZXlhJINCivpmbPmvZTpn7MNCivpmbPnkannkYQNCivpmbPoqrzoirMNCivpmbPpu47moYINCivpmbPmhrLlhIANCivpmbPmm4npnZINCivpmbPmm4nnraANCivpmbPmqLnlubQNCivpmbPnh5Xoj4ENCivpmbPnqY7npaUNCivpmbPolZnoirMNCivpmbPpjKbnp4ANCivpmbPpjKbptLsNCivpmbPpnZzmgKENCivpmbPpnZzmt5ENCivpmbPpnZzmhacNCivpmbPpvo3lr6wNCivpmbPolocNCivpmbPpp7/mj5oNCivpmbPptLvmuIUNCivpmbPnkr/lpoINCivpmbPnk4rmt4cNCivpmbPotIrkuK0NCivpmbPpn7vlpoINCivpmbPpn7vnq7kNCivpmbPpupLlhYMNCivpmbPpupflpoINCivpmbPpupfoiqwNCivpmbPpupflqbcNCivpmbPlr7bnjokNCivpmbPogIDnrJkNCivpmbPmq7vlrrkNCivpmbPoibfpiLQNCivpmbPml7vmlL8NCivpmbPlp7XlpoINCivpmbPmmLbmmLENCivpmbPloJwNCivpmbPnkKzoj4ENCivpmbPnkYvlhbgNCivpmbPnrbHoirMNCivpmbPpiLrnjqsNCivpmbPpiprojLkNCivpmbPngIXlpoINCivpmbPlrL/kvLYNCivpmbjmraPnvqkNCivpmbjmtKXoj68NCivpmbjps7PnjrINCivnq6Dmlofoip0NCivnq6Dnv5QNCivpuqXnm6flr7blhagNCivlgoXmlofpgLINCivlgoXkup7lh6ENCivlgoXlu7rlnIsNCivlgoXnj67mt4cNCivlgoXmt5Hpm68NCivlgoXpiZvmlocNCivlgoXnkK4NCivllqzlrpfloK8NCivlva3ku4Hlv5cNCivlva3mlofmhacNCivlva3njonoj68NCivlva3miJDlgpENCivlva3kvbPlgYkNCivlva3mnIvpm40NCivlva3kv4rnpo8NCivlva3lu7rmpq4NCivlva3oi6XmhYgNCivlva3mtanlgKsNCivlva3ltIfkv6ENCivlva3nm5sNCivlva3mu4vokI0NCivlva3pm4XntbkNCivlva3ogZbokI0NCivlva3mhaflpoINCivlva3pjKbngqsNCivlva3ppqjmhacNCivmma/pm6jnp4sNCivmm77lo6vou5INCivmm77lsI/njrINCivmm77lrZTpiLoNCivmm77mloflvawNCivmm77ku6TnkZwNCivmm77njonlpoINCivmm77ku7Lnm58NCivmm77nvr3ltroNCivmm77lv5flgpENCivmm77ogrLoj4ENCivmm77lraPmrYYNCivmm77mib/lv5cNCivmm77oip3omK0NCivmm77kv4rmmboNCivmm77lhqDmqLoNCivmm77lu7rlkowNCivmm77lu7rpnJYNCivmm77mgJ3ntq0NCivmm77mmKDpvaENCivmm77np4vmlY8NCivmm77nvo7pvaENCivmm77pg4HnqY4NCivmm77nj67nkLMNCivmm77lgYnnv5QNCivmm77lnIvmm7gNCivmm77lqYnmg6ANCivmm77mt5HoirMNCivmm77mtrXlia8NCivmm77lh7HmgowNCivmm77mg6DnjrINCivmm77mmbrnpboNCivmm77oj6/pvaENCivmm77pm4XpnZINCivmm77mhI/mlocNCivmm77muqXlhYMNCivmm77nkZvnkLMNCivmm77oo5Xlh7ENCivmm77lmInoi7ENCivmm77ntq3nvqQNCivmm77mhbbnkYQNCivmm77mhrLlv6ANCivmm77nuYHpnZINCivmm77nk4rmhacNCivmm77lr7bno4ENCivmm77ppqjlhIANCivmm77mmpDmuIUNCivmm77nno0NCivmuLjlpKfnt68NCivmuLjkuJbmlowNCivmuLjlhYblkJsNCivmuLjmnY7pm4QNCivmuLjkvanli7MNCivmuLjmmIznv7ANCivmuLjpnZLpnI8NCivmuLjnp4vmgKENCivmuLjlrrbosaoNCivmuLjlqYnpnZINCivmuLjmt5Hmg6ANCivmuLjllqzmmboNCivmuLjmmbrotoUNCivmuLjpgLLlr4wNCivmuLjpm4XnraANCivmuLjmpq7oj68NCivmuLjpjKvlrpcNCivmuLjnjbvnvqQNCivmua/kuIDnj4oNCivmua/lv5flv6ANCivmua/lrrbosaoNCivmua/lr4zmo4sNCivmua/mhbbpjJoNCivnqIvkuYvlr6cNCivnqIvlsJrliYcNCivnqIvlu7rnv7ANCivnqIvlgYnmlL8NCivnqIvpm4Xmg6ANCivnqIvnk4rokLENCivnq6XlvJgNCivnq6Xnvo7mu78NCivnq6Xpn7vlpoINCivoj6/lnIvpi5INCivos4DljprlubMNCivovpzkv6Hnpo8NCivplpTku7vpgaANCivpoIjkuIroi5ENCivppq7msLjngIUNCivppq7plbfpvo0NCivppq7lvanlqJ8NCivppq7nkZ7pmb0NCivppq7ogIDmlocNCivpu4PlipvoqIANCivpu4Pkuo7oiqwNCivpu4Pkuo7nnJ8NCivpu4PljYPlh4wNCivpu4Plo6vljp8NCivpu4Plo6vlmIkNCivpu4PlpKflgKsNCivpu4PlrZDljb8NCivpu4PlsI/lqJ8NCivpu4PkuK3lgYkNCivpu4Pku4Hoia8NCivpu4PlhYPpmoYNCivpu4PlpKnlgaUNCivpu4Plv4PmgKENCivpu4Plv4Plp64NCivpu4PmlofmgKENCivpu4PmlofnjrINCivpu4PmlofpmoYNCivpu4PmlofnkosNCivpu4PmnIjnkb4NCivpu4PkuJbmnIsNCivpu4PkuJblmIkNCivpu4Pku6XllqwNCivpu4Plt6flqbcNCivpu4PlvJjmr4UNCivpu4PmraPkvakNCivpu4PmsLjku4ENCivpu4PmsLjmvKINCivpu4Pnjonpm6gNCivpu4Pnjonoj4ENCivpu4Pnq4voiqwNCivpu4PkuqbokLENCivpu4Pku7vlu7YNCivpu4PlhYbmlY8NCivpu4PlpJnmhacNCivpu4Plroflu7cNCivpu4Pml63lvJgNCivpu4Pogb/lkJsNCivpu4PkvK/lubQNCivpu4PlppnoiqwNCivpu4Plro/pgLINCivpu4Plv5fmiJANCivpu4Plv5flvLcNCivpu4Plv5flmIkNCivpu4Plv5fpvo0NCivpu4Pnp4DlrrkNCivpu4PogrLkv6ENCivpu4Pkvp3mlocNCivpu4PkvbPlqpsNCivpu4Pkvankv5ANCivpu4PlnaTlvrcNCivpu4Plrpfln7oNCivpu4PlubjlhIANCivpu4PmgKHnj4oNCivpu4PmgKHoj4ENCivpu4PmgKHntq0NCivpu4PmmI7lv5cNCivpu4PmmI7nkZ4NCivpu4PmnbHmtbcNCivpu4PmrKPmhIkNCivpu4Pnjp/nkb4NCivpu4Poirfpm7INCivpu4PplbfmvqQNCivpu4Pkv6HmjbcNCivpu4Pkv6HlvbANCivpu4Pkv6HmlowNCivpu4Pkv4rlk7INCivpu4Pkv4rlgpENCivpu4Pkv4roiJwNCivpu4Pkv4rlmIkNCivpu4Pkv4ros6INCivpu4Pkv57mlpANCivpu4PlhqDpm4UNCivpu4Pli4fmhacNCivpu4Plk4Hmr4UNCivpu4Plp7/ntr4NCivpu4PlrqPlh7ENCivpu4Plu7rmlocNCivpu4Plu7rnqIsNCivpu4Plu7rlvbANCivpu4Plu7rli7MNCivpu4PlvaXlpKoNCivpu4PlvaXnkZwNCivpu4PlvaXmlowNCivpu4PmgJ3os6INCivpu4PmlL/mj5oNCivpu4PmmK3mmboNCivpu4PmmLHkuK0NCivpu4Pmn4/lhYMNCivpu4Pmn4/nv5QNCivpu4Pmn4/nv7ANCivpu4PngrPmhrINCivpu4Pnm4jmg6ANCivpu4Pnp4vokI0NCivpu4Pnvo7njokNCivpu4Pnvo7nvpoNCivpu4Pnvo7ok4kNCivpu4Poi6XolocNCivpu4Poi7HlgpENCivpu4Posp7nqY4NCivpu4Ppg4Hnj4oNCivpu4Ppg4Hpm68NCivpu4Ppn4vnkKoNCivpu4PlgInlvaUNCivpu4PlrrbpmoYNCivpu4Pluq3piLoNCivpu4PmjK/oqqANCivpu4Pmm7jpiLoNCivpu4PmtanpiJ4NCivpu4Pnj67oiJINCivpu4PnpZbos6INCivpu4Pog73osZANCivpu4PlgYnls7ANCivpu4PlgYnpipgNCivpu4PlgaXmuqINCivpu4PlnIvoirMNCivpu4PlnIvou5INCivpu4PlnIvoo5UNCivpu4PlnIvpkJgNCivpu4PlqYnosp4NCivpu4PltIfoqJMNCivpu4PlvanpipgNCivpu4PllZ/kv64NCivpu4PmlY/kv64NCivpu4PmooXnjrINCivpu4PmuIXpup8NCivpu4Pmt5HnjrINCivpu4Pmt5HmooUNCivpu4Pmt5Hoj68NCivpu4Pmt5HpnZwNCivpu4PnpaXmlowNCivpu4PojonlqJ8NCivpu4PpgJTlt5YNCivpu4Plh7HlqIENCivpu4Pli53oo5UNCivpu4PloK/lgYkNCivpu4Plr4zoqbMNCivpu4Pmg6DoiqwNCivpu4Pmg6DnkLQNCivpu4Pmg6DpnJ4NCivpu4Pmma/oo5UNCivpu4PmmbrlurcNCivpu4PmnJ3nkLQNCivpu4PmuZjlt6cNCivpu4PnkKrlqbcNCivpu4Pnq6PljZcNCivpu4PoiJLlvaUNCivpu4Poj4roi7ENCivpu4PpgLgNCivpu4PplpTovrINCivpu4Ppm4XmtKUNCivpu4Ppm4Xmt5ENCivpu4Ppm4XnkKoNCivpu4Ppm4XokLENCivpu4Ppm4XpvaENCivpu4PpoIblkIkNCivpu4PmhI/otoUNCivpu4PmlazmlowNCivpu4PmpoblqbcNCivpu4PmupDnkosNCivpu4PnkZ7kvLYNCivpu4PnkZ7pmb0NCivpu4Pnm5/lh7ENCivpu4PnvqnlkJsNCivpu4PogZblk7INCivpu4PogZbptLsNCivpu4Poo5Xnm5sNCivpu4PoqanoirgNCivpu4Poqanpm68NCivpu4PpiLTnkKoNCivpu4PpnZbmg6ANCivpu4PlmInli4cNCivpu4PlmInokLENCivpu4Pmpq7poIYNCivpu4Pnnb/kvLgNCivpu4Pntq3mmboNCivpu4PpipjlgYkNCivpu4PlhIDlkJsNCivpu4Pmhbboj68NCivpu4PmhafojLkNCivpu4PmvoTlgYkNCivpu4PpnIflrocNCivpu4Pmm4nkvakNCivpu4Pnh5XlqKUNCivpu4PpjJrmmokNCivpu4PpnZzlrpwNCivpu4Pmh4nnkr8NCivpu4Ppp7/pgZQNCivpu4PolrDnkakNCivpu4PngJrlvrcNCivpu4Pnk4rlhIANCivpu4Pnk4roqrwNCivpu4Ppn7vlpoINCivpu4PpupflpoMNCivpu4Ppupfok4kNCivpu4Plr7blhIANCivpu4Pnubzlop4NCivpu4PogIDnkakNCivpu4PpkJjokaYNCivpu4PppqjmhacNCivpu4PpvaHokLENCivpu4PoibfnjokNCivpu4PmmLbmlowNCivpu4Pnv4rlrrgNCivpu4PnkKzlkJsNCivpu4Poj4DpiLQNCivpu4PnkYvlr6cNCivpu4PnrbHpm4ENCivpu4PpiLrlqbcNCivpu4PpiabplpQNCivpu4PorLXoqqoNCivloZfmmYLpm6gNCivmpYrkuInos6INCivmpYrlo6vlvJgNCivmpYrlo6vos6INCivmpYrlrZDmr4UNCivmpYrkuYvmhacNCivmpYrlhYHkuK0NCivmpYrmloflro8NCivmpYrmlofnkZ4NCivmpYrkuJblh7ENCivmpYrlj6/mrYYNCivmpYrmraPlvawNCivmpYrnjonpvI4NCivmpYrku7LmsJENCivmpYrlrojln44NCivmpYrkvLbmhacNCivmpYrlv5fog70NCivmpYrlv5fpm40NCivmpYrnp4Dnj6ANCivmpYrogrLlhJINCivmpYrkvbPoj4ENCivmpYrkvannj4oNCivmpYrlnaToi7ENCivmpYrlrZ/ok4kNCivmpYrlrpfloK8NCivmpYrlrpfnv7ANCivmpYrlrpznkosNCivmpYrlsrHlhJINCivmpYrmgKHoirMNCivmpYrmib/nhrkNCivmpYrmmIbpnJYNCivmpYrmmI7lr7ANCivmpYrmnbHmlY8NCivmpYrmrKPnj64NCivmpYrnp4npoIYNCivmpYrplbfmvZQNCivmpYrkv4rovJ0NCivmpYrmgJ3pm4sNCivmpYrmmK3ovJ0NCivmpYrntIDoirgNCivmpYrnvo7ol50NCivmpYrlk7LlrokNCivmpYrlrrbpipgNCivmpYrmjK/lrpcNCivmpYrmm7josaoNCivmpYrnj67nkKYNCivmpYromZTpm4UNCivmpYrlgaXlnIsNCivmpYrln7nmgakNCivmpYrmg5/nmb0NCivmpYrmt7Pnoa8NCivmpYrmt5HkvbMNCivmpYrmt5HmlY8NCivmpYrmt5HmhacNCivmpYrnm5vmlowNCivmpYrlh7Hku7INCivmpYrli53lrocNCivmpYrljZrmrL0NCivmpYrlqbfpiJ4NCivmpYrlvqrlqbcNCivmpYrmg6DlqbcNCivmpYrmlq/lh7ENCivmpYrmma/pm68NCivmpYrmmbrlgpENCivmpYrmmbrpiJ4NCivmpYrmo67nmbwNCivmpYrnmpPnkYsNCivmpYroiJLluIYNCivmpYroj4HoiqwNCivmpYrosrTlqpsNCivmpYrplpTnv5QNCivmpYrpm4XlgKsNCivmpYrpm4XltZANCivmpYrpm4Xnv5QNCivmpYrpm4Xpm7INCivmpYrpm7Lnv5QNCivmpYrnhaXnq6ANCivmpYroo5UNCivmpYrlmInnjrINCivmpYrmp5Dpp5INCivmpYrotpnpipgNCivmpYrmhbbpmoYNCivmpYrnkosNCivmpYrmm4noj4ENCivmpYrolZnoirMNCivmpYrpnZzlpoINCivmpYrmiLTlt54NCivmpYrnpI7pgaANCivmpYrosZDpipgNCivmpYrnk4roj68NCivmpYrmm6bnkLMNCivmpYrnkIflpoINCivmpYrnkKzlqbcNCivmpYrpjqfkvIoNCivmuqvoh7Pku7sNCivmuqvmib/nv7ANCivmuqvoi6XlqbcNCivmuqvln7npnZINCivmuqvpm4XmuIUNCivmuqvmm4noj68NCivokKzkvbPmmJUNCivokKzmm4nmmI4NCivokYnlj4jlmIkNCivokYnlpKfokaYNCivokYnlpKnlsIcNCivokYnku6PmrIoNCivokYnkuqbnm5sNCivokYnlpoLpm68NCivokYnlro/lgpENCivokYnnp4DmooUNCivokYnkvbPmrKMNCivokYnkvannnJ8NCivokYnlrpfmmboNCivokYnmgKHlkJsNCivokYnmmIzlgKsNCivokYnmmI7pkasNCivokYnnjp/lkJsNCivokYnplbfpnZINCivokYnkv4rlro8NCivokYnkv57mnYkNCivokYnlu7rlkJsNCivokYnmgJ3lhIANCivokYnmmLHlv5cNCivokYnnp4vmnIgNCivokYnpg4Hoj4ENCivokYnlrrblrocNCivokYnls7vos5MNCivokYnmm7jnkYsNCivokYnogL/pvYoNCivokYnlvLXlu7oNCivokYnmt5HpiLQNCivokYnmg6Dnpo4NCivokYnoqaDmmbQNCivokYnpm4Xpm68NCivokYnnvqnmnb4NCivokYnpipjmmIwNCivokYnmvZTmgakNCivokYnolZnoirMNCivokYnpp7/pgLgNCivokYnpqLDpgaANCivokYnnkKTmgKENCivokZvlgKnlpoINCivokaPlt6fnjrINCivokaPmgKHlkJsNCivokaPlvaXlro8NCivokaPmjK/pm4QNCivokaPmhafnvo4NCivoo5jlhYPmhLcNCivoqbnlrZDmsJENCivoqbnkuJblgpENCivoqbnlro/lvawNCivoqbnkvbPmjK8NCivoqbnlrZ/mmYMNCivoqbnlv6Dmpq4NCivoqbnpnZLoibcNCivoqbnnvo7nj40NCivoqbnmtZrmmIcNCivoqbnojJfoirgNCivoqbnmt5HokI0NCivoqbnli53mrL0NCivoqbnmma/loK8NCivoqbnoqLzlr4wNCivoqbnpm4XplpQNCivoqbnlmInnkr8NCivoqbnnqY7okI0NCivoqbnnjpPnkYsNCivos4jmsrvlnIsNCivphJLkuIDku7INCivphJLmnY7mmIwNCivphJLph5HlvrcNCivphJLmlrDlhagNCivpm43mlablhYMNCivpm7fpm4Xoj4ENCivlu5bkuo7mlocNCivlu5blpKfmqJ8NCivlu5blhYPliKkNCivlu5bmlofoqZUNCivlu5bmnIjop4ANCivlu5bmraPlgYkNCivlu5bkuJ7mmZ4NCivlu5blkKvmvZQNCivlu5blv5flgYkNCivlu5bogrLoia8NCivlu5bkvanlpoINCivlu5bmgKHnjrINCivlu5bmmI7lhIANCivlu5boip3loIUNCivlu5bkv4rmrL0NCivlu5blp7/mr5MNCivlu5blvaXlh7ENCivlu5bmmLHmqLkNCivlu5bnvo7njrINCivlu5boi7HnlLcNCivlu5bov7DojIINCivlu5bljb/mg6ANCivlu5blrrbnkakNCivlu5bmganmhYgNCivlu5bmm7jnj64NCivlu5bnj67njqsNCivlu5bntKDljb8NCivlu5blgYnmiJANCivlu5blgYnptLsNCivlu5blnIvli5sNCivlu5bln7nnkZwNCivlu5blr4TokI0NCivlu5bmg4fmsrsNCivlu5bmopPojJwNCivlu5bmt5Hmg6ANCivlu5bosqvnj64NCivlu5bmg6DlqJ8NCivlu5bpgLLlubMNCivlu5bmpbfmlocNCivlu5bll74NCivlu5bpipjku4ENCivlu5bnkannkocNCivlu5bpjKbnkZwNCivlu5bpupLplpQNCivlu5bmlozlgpENCivnhornq4vmlrANCivnhorltIfnt68NCivnrqHlubzku7INCivoh7rmlofnhacNCivoo7TlgYnnqIsNCivopJrlrrblvrcNCivotpnku4HkvZENCivotpnmloflv6ANCivotpnlv4XmmIwNCivotpnlkJvmnbANCivotpnkvanoiqwNCivotpnmmI7ovJ0NCivotpnlk4HlvaUNCivotpnngqvli5sNCivotpnlrrboia8NCivotpnmoYLpnZINCivotpnlgYnlu7cNCivotpnln7npnJYNCivotpnnmo7lkJsNCivotpnpiJ7lv5cNCivotpnlu6PlhYMNCivotpnpm5npp78NCivphJ7osarovJ0NCivlionkuYPokLENCivlionlipvosaoNCivlionljYPnkZwNCivlionlpKfmpq4NCivlionlrZDpoI4NCivlionku4HmraMNCivlionlv4PlhIANCivlionmlofli50NCivlionml6XpoIYNCivlionkuJbmhbYNCivlionmraPmsrMNCivlionnjonmlocNCivlionnjonnkIcNCivlionku7LmtrUNCivlionlhajlvawNCivlionlpoLolrANCivlionml63oiqwNCivlionlkJvnpboNCivlionlu7fmpbcNCivlionlv5fmupANCivlionnp4Dpg4ENCivlionogrLlrpcNCivlionogrLnqY4NCivlionkup7oirgNCivlionkvbPoirMNCivlionkvbPpgZQNCivlionkvanpnZINCivlionlnaTnqY4NCivlionlrpfmgKENCivlionlrpzmmIYNCivlionlsqHpmbUNCivlionmgKHkvLYNCivlionmgKHlkowNCivlionmgKHpnZwNCivlionmmIzoqqANCivlionmmI7lk7INCivlionmnpznj40NCivlionmrKPojLkNCivlionnjqvlr6cNCivlionoirPomK0NCivlionph5Hps7MNCivlionkv6Hoia8NCivlionkv4rlu7cNCivlionkv4rlt5YNCivlionlhqDoia8NCivlionlk4HlrpwNCivlionlp7/lkJ8NCivlionlu7rlro8NCivlionlu7roia8NCivlionlu7rnlLoNCivlionlvaXljZoNCivlionmgarkuroNCivlionmmKDnp4ANCivlionmn4/pup8NCivlionnm4jlpoINCivlionnp4vmiJANCivlionnvo7kvpYNCivlionnvr/msZ0NCivlionou43mr4UNCivlionkv67mmI4NCivlionlk7LnkYsNCivlionlrrbmmIcNCivlionlrrbps7MNCivlionls7vkvLYNCivlionmjK/kuK0NCivlionmm7jlro8NCivlionmtZrpipgNCivlionnm4rnpo4NCivlionntJTmnY8NCivlionlgYnoqqANCivlionlnIvpvo0NCivlionlurfmpZ0NCivlionmlY/nkKoNCivlionmt5HojokNCivlionnpaXmsJENCivlionljZrmlocNCivlionmj5rpipgNCivlionmnJ3ok64NCivlionoiJLmhYgNCivlionplpTntZANCivlionpm4XokI0NCivlionli6TntpMNCivlionmupDlgKsNCivlionntpPntrgNCivlionlmInogrINCivlionlmInmqLoNCivlionnhpnmhacNCivlionogofptawNCivlionlvrfmraMNCivlionmhafnjrINCivlionnkanlqJ8NCivlionmm4noiqwNCivlionmqLnolZkNCivlionnqY7okqgNCivlionpjKbloIINCivlionpvo3lsbENCivlionptLvpnJYNCivlionngJrpmb0NCivlionlr7blqbcNCivlionmh7/mhacNCivlionlp7XlmIkNCivlionnkYvnjrINCivljrLmlozkuK0NCivmrZDlo6vmupANCivmrZDlv5fnm4gNCivmrZDmgKHnp4ANCivmrZDlu7rmsJENCivmrZDlqInlpqYNCivmrZDpgLjpnZINCivmrZDpmb3mg6DlpoINCivmrZDnqY7lkJsNCivmvZjlhYHku4ENCivmvZjnjonmg6ANCivmvZjlro/lrpcNCivmvZjkvanlkJsNCivmvZjmgKHlkJsNCivmvZjnjp/mqLoNCivmvZjlhqDlro8NCivmvZjlu7rmiJANCivmvZjmlL/nt68NCivmvZjnvo7njrINCivmvZjog73lk7INCivmvZjmg6DlqJ8NCivmvZjnkZ7pppkNCivmvZjlhIDmgawNCivmvZjptLvpipgNCivmvZjpiLrmn5QNCivolKPkuK3ooY0NCivolKPmsobnpaUNCivolKPlrpzpnZwNCivolKPplbfml7sNCivolKPmt5HmhacNCivolKPmv7Hlt54NCivolKHlo6vml7oNCivolKHku4HlgYkNCivolKHlpKnnpboNCivolKHmlofljZoNCivolKHmlofptLsNCivolKHkuJbptLsNCivolKHmraPlrpcNCivolKHnjonnp4sNCivolKHkuqbpm68NCivolKHlkI3mm7gNCivolKHml63mm5wNCivolKHkvK/ptLsNCivolKHlro/ln7kNCivolKHlv5fmmI4NCivolKHlv5fptLsNCivolKHmsbbptLsNCivolKHogrLmraMNCivolKHogrLli7MNCivolKHkvp3lrrkNCivolKHkvbPlro8NCivolKHkvbPoiqwNCivolKHkvbPlrrkNCivolKHkvbPok4kNCivolKHkvbPpnJYNCivolKHkvanlkJsNCivolKHkvannj4oNCivolKHkvanlqKUNCivolKHkvannqY4NCivolKHlhbbnj64NCivolKHlnaTpm4QNCivolKHlpYfpnJYNCivolKHlrZ/oirMNCivolKHlrZ/nnJ8NCivolKHlrZ/oq60NCivolKHlrpflv5cNCivolKHlrpfpgZQNCivolKHlrpfnv7ANCivolKHlrpzlu7cNCivolKHlrpzlgKkNCivolKHlrpzpnJYNCivolKHlsJrlsrMNCivolKHlsrPmm7gNCivolKHlubjmt7MNCivolKHlv6DnqY4NCivolKHmib/nkosNCivolKHmmJPpmZ4NCivolKHmmIzlhJINCivolKHmmI7msY4NCivolKHmmI7oirMNCivolKHmmI7ls7ANCivolKHmmI7okrINCivolKHmmI7pvo0NCivolKHmmIfnqY4NCivolKHmnbDlv5cNCivolKHmrKPmgKENCivolKHmraboq7oNCivolKHnp4nmmIYNCivolKHoirPmtLUNCivolKHph5Hpvo0NCivolKHkv6Hoia8NCivolKHlk4HlhIANCivolKHmgJ3mjbcNCivolKHmlL/lk7INCivolKHmlL/pvo0NCivolKHnjrLmtKUNCivolKHnvo7oip0NCivolKHpg4HlkJsNCivolKHlqJ/lqJ8NCivolKHmgoXnjp8NCivolKHnj67mgKENCivolKHlgYnmnbANCivolKHln7nora8NCivolKHmt7vmlocNCivolKHmt5HnjrINCivolKHmt5HolocNCivolKHli53pm4QNCivolKHlr4zosrQNCivolKHmg6Dnh5UNCivolKHmmbrmmpANCivolKHoiJLlrocNCivolKHpgLjnj4oNCivolKHpm4XoiqwNCivolKHpm4Xoj4ENCivolKHlgrPlvrcNCivolKHnkZ7mlocNCivolKHoo5XlgaUNCivolKHlmInmgYYNCivolKHmpq7mmIwNCivolKHnoqflrrkNCivolKHoo7TkvLYNCivolKHpipjos6INCivolKHmhafmsJENCivolKHos6LnmocNCivolKHmm4nnhLYNCivolKHnv7DnhooNCivolKHpnZzlrpwNCivolKHptLvmsJENCivolKHosZDmlocNCivolKHptZHlvYwNCivolKHpupfmg6ANCivolKHppqjlhIANCivolKHml7vmhrINCivolKHnkYvnq5ENCivphK3kuIDlh6ENCivphK3lipvku4ENCivphK3lrZDoposNCivphK3ku4Hlr4wNCivphK3lv4PlpoINCivphK3mloflr4wNCivphK3kuJbmmIwNCivphK3lt6fpnZINCivphK3njonkvLYNCivphK3nq4vkuqsNCivphK3ku7Llro8NCivphK3lhYnmt7MNCivphK3lkI/lrZwNCivphK3lpoLmrKMNCivphK3lrofmt6gNCivphK3miJDmo6ANCivphK3nmb7lqbcNCivphK3kvK/ljZcNCivphK3lv5flip8NCivphK3np4DlqJ8NCivphK3osp3lpoINCivphK3kvbPlhIANCivphK3lrZ/njrINCivphK3mgKHlkJsNCivphK3mmI7lv6ANCivphK3mrKPmpq4NCivphK3kv4rlro8NCivphK3lvaXpgZQNCivphK3nvo7njokNCivphK3ov6rlhYENCivphK3mjK/lrpwNCivphK3npZDpmKENCivphK3lgYnnj4oNCivphK3ln7nogbANCivphK3mooXlkJsNCivphK3mt5HnsbMNCivphK3mt5Hnh5UNCivphK3ojonpm68NCivphK3lh7HmlocNCivphK3li53ml60NCivphK3llqzpipgNCivphK3mg6DmlocNCivphK3mg6DpnJwNCivphK3mma/mlocNCivphK3mmbrlhYMNCivphK3mnJ3nh58NCivphK3nmpPkupENCivphK3nv5Tpvo0NCivphK3oqZTorJkNCivphK3pm4Xlj4sNCivphK3pm4XoiqwNCivphK3pm4XnlIQNCivphK3mhI/kuK0NCivphK3nkZznkLMNCivphK3oo5XlubQNCivphK3lmInmj5oNCivphK3ogoflv4MNCivphK3mhbblk7INCivphK3olJron6wNCivphK3mm4nolocNCivphK3pnZzoirMNCivphK3ptLvmupANCivphK3njbvmlocNCivphK3ln7UNCivphK3pnYsNCivphKfmsLjlv6ANCivphKfml63mlaYNCivphKfmmI7oirMNCivphKfmjK/oi7ENCivphKfljZrku4ENCivphKfnv5Tku4ENCivphKfnpo/pmoYNCivphKfliqblkYgNCivpu47kuJblu4kNCivpu47kv5DlnYcNCivpu47pipjku4ENCivnm6fku4HmnbANCivnm6flvJjmtbcNCivnm6flkInli4cNCivnm6fogrLogZYNCivnm6flrprlnYcNCivnm6fmgKHmtrUNCivnm6fpm6jmtrUNCivnm6fkv4rlhJINCivnm6flqIHpnJYNCivnm6fmgJ3mupANCivnm6fnvo7lpoINCivnm6flrrbpiLoNCivnm6fmt5HpupcNCivnm6fmhLfojokNCivnm6fmhaflrpwNCivnm6fpvo3nlJ8NCivnm6fnrbHnkakNCivola3lsLnosp4NCivola3mlofnrYYNCivola3ku6Xkuq4NCivola3njonosp4NCivola3lhYbnkLMNCivola3lpoLnj4oNCivola3mnInlro8NCivola3lro/oo5UNCivola3ogrLpmoYNCivola3lraPolocNCivola3mmIblu7cNCivola3pnZLokI0NCivola3nvo7lqJ8NCivola3mjK/lrokNCivola3lnIvmraMNCivola3muIXnh5UNCivola3pm6rlkJ8NCivola3ljZrku7ANCivola3mg6DoirMNCivola3mmbrmooUNCivola3oqaDmlrkNCivola3pm4XmlocNCivola3mhJvnjrINCivola3oqannkocNCivola3ntq3lgKkNCivola3mhafmgKENCivola3pnZzlrpwNCivola3ptrTou5INCivos7TkuYPpoIwNCivos7TlpKnptLsNCivos7TkuJbntq0NCivos7TmraPph44NCivos7TnjonpnJwNCivos7Tml63lvaUNCivos7Tlu7fnprkNCivos7Tlv5fntrENCivos7TogrLlu7cNCivos7TkvbPmrKMNCivos7TlrZ/oj68NCivos7TlsYXmraMNCivos7TmgKHlkJsNCivos7TmmI7lro8NCivos7TmrKPlrpwNCivos7ToirPlu7YNCivos7Tkv6HoqqANCivos7Tkv4rpgZQNCivos7Tli4flv5cNCivos7TlqIHlnYcNCivos7Tlu7rkvZENCivos7TlvaXkvZANCivos7TmgJ3pnJYNCivos7TmmK3pvo0NCivos7Tmn4/pvo0NCivos7TntIXpnJ4NCivos7TojILlu7cNCivos7Tpg4Hpm68NCivos7TmtanosZANCivos7TlnIvmgakNCivos7Tmt5HmgKENCivos7Tojonpm68NCivos7TosrTnvqkNCivos7TpoIbmjK8NCivos7TokabluIYNCivos7Tmpq7nkokNCivos7TmhbbpipgNCivos7Tpi5INCivos7TpjKblhIQNCivos7TpupcNCivos7Tmn4rmo4sNCivpgbLlsJrmrIoNCivpjKLmrKPlrpwNCivpjKLlvrfkv4oNCivpnI3ojpjnkZwNCivpp7HoirPmoqcNCivpp7HlmInmhbYNCivpvo3mmJ/lhYYNCivmiLTkuZnoj4ENCivmiLTmlofpm4QNCivmiLTlhajliKkNCivmiLTlro/kuJ4NCivmiLTkvbPlubMNCivmiLTmmI7nj6ANCivmiLTmjK/pgaANCivmiLTojokNCivmiLTlgrPlrrYNCivmiLTlmInlro8NCivmiLTos6LnpaUNCivmiLTolo/nj4oNCivolpvkuLnmoYINCivolpvlhYnnqIsNCivolpvkvp3okqgNCivolpvlpZXpvo0NCivolpvlgYnkvK8NCivolpvmma/mlocNCivolpvnkZ7nj40NCivolpvlhJLpnJkNCivorJ3kuo7mq7sNCivorJ3lv4Ppm4UNCivorJ3mlofnkZwNCivorJ3lvJjkuq4NCivorJ3njonnj6ANCivorJ3lpoLptLsNCivorJ3kvZDlrpwNCivorJ3lro/lv6ANCivorJ3lv5fmmI4NCivorJ3mibbpjKYNCivorJ3ogrLlqJ8NCivorJ3kvp3lgKsNCivorJ3kvbPlgKkNCivorJ3kvbPnqY4NCivorJ3kvanoirMNCivorJ3kvannnJ8NCivorJ3lkajnhr4NCivorJ3lrZ/oirgNCivorJ3lrZ/oiqkNCivorJ3lrpfos6INCivorJ3lrpzoirMNCivorJ3lrpzoh7sNCivorJ3lsJrlhJINCivorJ3mgKHlqbcNCivorJ3mmJPpnJYNCivorJ3mmI7lro8NCivorJ3mmI7lgKsNCivorJ3mmI7mhrINCivorJ3mmIflk7INCivorJ3mnb7mhrINCivorJ3mrKPph5cNCivorJ3np4noq7oNCivorJ3plbfljp8NCivorJ3kv4rlro8NCivorJ3lvaXlkI8NCivorJ3mn4/oiJ8NCivorJ3nvo7njrINCivorJ3lrrboj7ENCivorJ3ntKDoj7ENCivorJ3lnIvlvawNCivorJ3mopPpup8NCivorJ3mt5HlqJ8NCivorJ3lh7HlgYkNCivorJ3ltZDlsY8NCivorJ3mma/ku4ENCivorJ3nmpPmmboNCivorJ3pm4Xpm6oNCivorJ3poIbpmoYNCivorJ3okKzpvo0NCivorJ3lmInpipgNCivorJ3nv6DnkrANCivorJ3ps7PnjrINCivorJ3mhafnk4oNCivorJ3nh5XnjrINCivorJ3pnZzlrpwNCivorJ3ptLvpp78NCivorJ3nk4rmlocNCivorJ3poa/pipgNCivorJ3nhZLpoLsNCivpjb7lhYPmjK8NCivpjb7mnIjlnJMNCivpjb7lhYbmsJENCivpjb7lrZ3lhbYNCivpjb7np4DoirMNCivpjb7kvbPnqY4NCivpjb7ljZPlhJINCivpjb7lrpzoiIgNCivpjb7mib/nkosNCivpjb7mmI7mhrINCivpjb7np4noq7oNCivpjb7mlL/msJENCivpjb7nvo7nkLMNCivpjb7llYbpp78NCivpjb7mt5HokI0NCivpjb7mmbrlgpENCivpjb7pm7LlhYkNCivpjb7npo7lhYMNCivpjb7mqILlkJ8NCivpjb7olrDlq7oNCivpnqDlsrHnkKYNCivpn5Pkvanliq0NCivpn5Pnm7jlrpwNCivpn5PlmInpp78NCivnsKHlo6vnm4oNCivnsKHmlofkuqgNCivnsKHlt6flqbcNCivnsKHnq4vkuroNCivnsKHlroflsY8NCivnsKHkvLblqJ8NCivnsKHlro/lgKsNCivnsKHlv5fpm4QNCivnsKHnp4DntJQNCivnsKHkvannkKoNCivnsKHmmI7pm4ENCivnsKHmmK3okLgNCivnsKHlrrbmlrANCivnsKHlnIvmlowNCivnsKHmt5HlqbcNCivnsKHmo67kuZkNCivnsKHpoIbnq4sNCivnsKHnkZ7mo7sNCivnsKHlmInlro8NCivnsKHnpo7kvZENCivnsKHpipjovrANCivnsKHmhrblpoINCivnsKHpqarmvZQNCivogbbmnbHljZcNCivol43lhYPnmpMNCivol43ku7LlgYkNCivol43mmKXnmbwNCivol43lnIvoj68NCivol43pm4XpvaENCivol43pu5vnkakNCivpl5XpgKLmr4UNCivpoY/lpKfnpo8NCivpoY/lvJjnpaUNCivpoY/lpoLnjokNCivpoY/lkYjml60NCivpoY/lro/lj6ENCivpoY/lv5fpup8NCivpoY/lrpflubMNCivpoY/lpZXku4ENCivpoY/lrrbnpboNCivpoY/lsInlh7ENCivpoY/oj6/miJANCivpoY/nkZ7mlocNCivpoY/lmInmiJANCivpoY/npo/poIYNCivpoY/mvqTlrocNCivpoY/piLroirgNCivprY/ku4HlqIENCivprY/ku7vlu7cNCivprY/nmb7nm5sNCivprY/lrZ3lr6wNCivprY/np4DmgawNCivprY/mmI7nq6ANCivprY/oi7Hpjq4NCivprY/ltIfmoZMNCivprY/mnJ3kv6ENCivprY/nraDmlocNCivprY/lq6blpp0NCivprY/mhZXluIYNCivprY/nkYToqrwNCivnvoXlrZDou5INCivnvoXlhYPnlKsNCivnvoXlv4PlsY8NCivnvoXmnIjlh7ANCivnvoXlt6fojokNCivnvoXnjonokI0NCivnvoXlhYbntq0NCivnvoXlro/kuIANCivnvoXkup7lr6cNCivnvoXmgKHmg6ANCivnvoXoirfpnZINCivnvoXnvo7ok64NCivnvoXmjK/lu7cNCivnvoXntKDoirENCivnvoXlnIvoj68NCivnvoXlvLcNCivnvoXmt4fmlocNCivnvoXlgpENCivnvoXmg6DomK0NCivnvoXoj6/mv4MNCivnvoXpm6/nkLQNCivnvoXogZbnkLMNCivnvoXpmpvlt50NCivnvoXmm4nlqIENCivnvoXppqjlrpwNCivorZrlhYnoj68NCivorZroq6YNCivpl5zmt5Hpm7INCivlmrTlj6/lkJsNCivlmrTlqYnnjrINCivlmrTntq3lvrcNCivol7rlv4PmgKENCivomIflrZDnv5QNCivomIfmloflqJ8NCivomIflt6flr6cNCivomIfnjonkv64NCivomIfnq7nlrokNCivomIflv5floIUNCivomIfogrLlvJgNCivomIfkvbPotrMNCivomIfmgKHlpoINCivomIfmgKHppqgNCivomIfmrabpvo0NCivomIfpnZLlppkNCivomIfkv4rpipgNCivomIflpZXlgpENCivomIflu7rlv5cNCivomIfmgYboh7MNCivomIfmn4/lt54NCivomIfnmofljp8NCivomIfnvo7njrINCivomIfosp7nh5UNCivomIflgInmsLgNCivomIflrrbkv6ENCivomIfluq3nkaQNCivomIfnm4rnpb8NCivomIfou5LmsJENCivomIfloILosaoNCivomIfmuIXlrokNCivomIfljZrnjoQNCivomIfmuZjmgKENCivomIfpm4XlkJsNCivomIfpoIboqqANCivomIfnjLfnv5QNCivomIfogZbmtrUNCivomIfpnZbltZANCivomIfogZ7orLkNCivomIfmhaflqJ8NCivomIfmm4noioMNCivomIfogbLmjK8NCivomIfml7vlkJsNCivomIfnkYvnkLMNCivpkJjlo6vmrL0NCivpkJjkvbPntbkNCivpkJjmlY/mhKsNCivpkJjnoqfomK0NCivppZLkuq4NCivpu6jkuIDngroNCivpoaflgKnlpoINCivpvpTkuo7nj4oNCivpvpTkvanlkJsNCivpvpTmm7jogZYNCivpvpTpnZboqZINCivkvZjlsJrptLsNCivmtoLkuJblkowNCivmtoLmlL/nlLcNCivmtoLlr4zmmJ8NCivmtoLmhafnj40NCivnspjogrLnkYsNCivphJTlv4PmgKENCivmrJLlraPlvLcNCivugIDpipjmupANCivjgqLjgq3jg6Ljg4gs44Ok44K544KqDQor44Ki44Kk44Kr44OvLOODjuODquOCqg0KK+OCouOCq+ODhOOCqyzjgqvjgrrjg5LjgrMNCivjgqLjg6/jgros44Ki44Kt44OpDQor44Ki44K144OOLOODqOOCt+ODpA0KK+OCouODqeOCrSzjg6jjgrfjgqvjgroNCivjgqTjg47jgqbjgqgs44OS44Ot44OS44OIDQor44Kr44OI44KmLOODnuOCteODiOOCtw0KK+ODiuOCq+ODoOODqSzjgrHjgqTjgr7jgqYNCivjg5Xjgrjjg6/jg6ks44K/44Kr44KzDQor44Ok44OK44Ku44OP44OpLOODn+ODieODqg0KK+OCq+ODr+ODgCzjg4rjgqrjgrMNCivjgqTjgrfjg44s44Kt44Oo44OK44KsDQor44K044OI44KmLOOCq+ODhOODjuODqg0KK+OCpOOCt+OCuOODnizjg6rjg6fjgqbjg5jjgqQNCivjgqLjg4jjgqYs44Oe44K144OO44OqDQor44Of44K344OeLOOCv+OCq+ODpuOCrQ0KK+ODn+ODqOOCtyzjg47jg5bjg57jgrUNCivjgr/jg4Hjg44s44K444Ol44OzDQor44Kq44Kq44OOLOOCq+OCuuOCqg0KK+OCreOCv+OCrOODryzjg6jjgrfjgr/jgqsNCivjg5Xjg6vjgrXjg68s44K144OI44K3DQor44Kq44Kq44OP44K3LOODkuODiOOCtw0KK+ODqOOCt+OCq+ODryzjg4jjgrfjg6bjgq0NCivjgqvjg6/jgqQs44OI44K344KqDQor44Kk44K344OILOOCs+OCpuOCrQ0KK+OCpOODnuOCpCzjgr/jgqvjg6bjgq0NCivjg6Tjg57jg4rjgqss44K144OE44OfDQor44Ob44Oq44Kr44OvLOOCq+ODhOODnw0KK+OCueOCuuOCrSzjgrfjg6Xjg7PjgrgNCivjgqLjg6/jgqgs44Ki44OE44K3DQor44OK44Ks44K7LOOCv+OCq+ODkuODrQ0KK+OCs+ODkOODpOOCtyzjgrjjg6Xjg7PjgqTjg4ENCivjg57jgqjjg4As44OS44Ot44K3DQor44Kr44OI44KmLOODnuOCteOCq+OCug0KK+OCueODn+OCvyzjgqvjgqrjg6sNCivjgrvjgq3jgrDjg4Es44K/44Kr44Om44KtDQor44K/44OK44KrLOODhuODq+ODkuOCtQ0KK+ODkuODqeODjizjgr/jgqvjgrcNCivjg4/jg57jgrDjg4Es44K344Oz44K4DQor44K144Kr44Ks44OfLOODjuODquOCq+OCug0KK+OCs+ODkOODpOOCtyzjg6TjgrnjgrcNCivjgr/jgq3jg6Ljg4gs44OO44Oq44KzDQor44Ob44K3LOODkuODreODleODnw0KK+OCquOCquOCv+OCqyzjg6bjgqbjgrMNCivjgrnjgq7jg6Djg6ks44K344Ky44KqDQor44Ki44Kq44KtLOODnuOCteODqw0KK+ODiuOCq+ODj+ODqSzjg6bjgqbjgr7jgqYNCivjgqvjg4jjgqYs44Kq44K144OgDQor44Oe44Ko44K144KrLOODiOODouODn+ODhA0KK+ODleOCuOOCv+ODiyzjgqvjgrrjg5LjgrMNCivjg5vjg4Pjgr8s44K344Ky44OS44OIDQor44Ki44Kt44Ok44OeLOODpuOCv+OCqw0KK+ODleOCuOOCvyzjg57jgrXjg6bjgq0NCivjg4jjg6jjg4rjgqws44Ok44K544OS44OtDQor44OP44OD44OI44OqLOODnuOCteOCqg0KK+ODjuODoOODqSzjgrfjgrLjgqoNCivjgqvjg6/jgrfjg54s44K/44Kr44KzDQor44Og44Ot44OkLOODhuODhOOCqg0KK+OCouOCt+OCq+ODryzjg6TjgrnjgrfjgrINCivjg4/jg6Tjgrcs44K/44Kr44KqDQor44Of44Ok44Ks44OvLOODleODn+ODjuODqg0KK+OCquOCsOODqSzjg6Tjgrnjg5Ljg60NCivjg6jjgrfjg4As44OI44K344OS44KzDQor44Kv44OJ44KmLOODkuODreOCtw0KK+OCr+ODnuOCrOOCpCzjgr/jgqvjg6bjgq0NCivjg4vjgrfjgqos44OS44OH44KtDQor44Kq44Kq44Kk44Ok44OeLOODjuODnOODqw0KK+OCv+OCseOCv+ODiyzjg5Xjg4jjgrcNCivjgqTjgrfjg4As44Kr44OE44OkDQor44Kq44Kk44Kr44OvLOODjuODluOCouOCrQ0KK+OCv+OCq+ODj+OCtyzjgrvjgqTjgrgNCivjg6Djg6njgr8s44OI44Kq44OrDQor44K544K644KtLOOCueOCueODoA0KK+ODj+ODpOOCtyzjgrfjg7Pjg4Hjg6fjgqYNCivjgq/jg63jgqvjg68s44Oe44K144Ki44KtDQor44Ok44K444OeLOODiOOCquODqw0KK+OCq+ODhOODqeOCpCzjg6/jgr/jg6sNCivjgqLjgqvjg6os44Oq44On44Km44K4DQor44Ki44K644OeLOODjuODluODpuOCrQ0KK+OCouODhOODnyzjgrfjg6XjgqbjgrgNCivjg57jg6vjgqos44Oo44K344Om44KtDQor44Kk44Kx44KqLOODn+ODjuODqw0KK+ODiOODquODpOODnizjg6rjg4TjgqoNCivjg4/jg57jg44s44Oo44Km44Kk44OBDQor44Ok44Oe44Oi44OILOOCs+OCpuOCv+ODreOCpg0KK+OCs+OCpuODgSzjg6bjgqbjgrnjgrENCivjg4rjgqvjgrjjg54s44OO44Oq44OS44KzDQor44Ki44OpLOODkuODreOCtw0KK+ODm+OCveOCq+ODryzjg57jgrXjg5Ljg60NCivjgqTjgrrjg58s44Kr44ON44Of44OEDQor44Ki44Ov44K4LOOCouODhOOCqg0KK+ODn+OCuuODkuOCrSzjg6jjgrfjgqoNCivjgqrjg4Djgrjjg54s44OK44Ob44OfDQor44OV44Or44Kr44OvLOOCt+OCsuOCqg0KK+ODn+OCuuOCsOODgSzjgrjjg63jgqYNCivjgqTjg4jjgqYs44OS44Ot44K3DQor44OV44Kv44KkLOOCteODiOOCtw0KK+ODleOCuOODj+ODqSzjgr/jgrHjg5Ljg4gNCivjg6Tjg44s44Om44Km44K4DQor44OP44Ok44K344Kw44OBLOODkuODreOCtw0KK+ODm+ODqizjg4jjgrfjg6bjgq0NCivjg6jjgrfjgqQs44K/44Kr44K3DQor44Ki44Oz44OJ44KmLOODkuODreOCtw0KK+ODj+OCvyzjgrPjgqbjgqTjg4ENCivjgrPjg5Djg6os44OS44OH44Om44KtDQor44Kq44OA44K344OeLOOCq+ODhOODreOCpg0KK+OCpuOCqOODpOODnizjg5/jg4Tjg4rjg6oNCivjg6Djgr8s44Oe44OK44OWDQor44K/44OK44KrLOOCt+OCsuOCqg0KK+OCs+ODs+ODjizjg6bjgqbjgrMNCivjg5Xjgrjjg6/jg6ks44OI44K344OP44OrDQor44Of44Ok44KtLOODpuOCv+OCqw0KK+ODj+ODiuODryzjg57jgrXjg5Ljg60NCivjg4bjgrjjg54s44Ki44Kt44OpDQor44Kv44OcLOOCouODhOOCtw0KK+OCquOCquODkCzjgrfjg7PjgrQNCivjgrPjg7Pjg44s44K/44Kv44OkDQor44Oe44OE44OQ44OpLOODkuODh+OCqg0KK+ODj+OCt+ODouODiCzjgrnjg5/jgrMNCivjg6/jgr/jg4rjg5ks44Kr44K644OS44OtDQor44Kz44K/44KtLOODhuODhOODpA0KK+ODleOCq+ODpCzjg6Ljg6Ljgq0NCivjg57jg4Tjgqbjg6ks44OG44OD44Oa44KkDQor44OV44OK44OALOOCq+OCuuODkuOCsw0KK+ODkuOCrOOCt+ODgCzjg4jjgrfjg6bjgq0NCivjgqTjg47jg57jgr8s44OS44Ot44K3DQor44K144OI44KmLOODkuODreODnw0KK+OCpOODiOOCpizjgr/jg4TjgrcNCivjg5/jgr/jg6Djg6ks44Oe44Om44OfDQor44K544Ks44OP44OpLOODn+ODhOODqw0KK+OCv+OCq+ODn+ODpCzjg5Ljg4fjg47jg5YNCivjg6Tjg57jgrDjg4Es44Kz44K544KxDQor44Kq44K/LOODhOODqOOCtw0KK+OCu+ODjuOCqizjg4/jgrjjg6ENCivjgrfjg5Djgrbjgq0s44Ki44OE44K3DQor44OK44Kr44Og44OpLOODpOOCueODkuODrQ0KK+ODleOCuOOCq+ODryzjg5Ljg63jg6bjgq0NCivjgqLjg6njgqQs44Oq44Ol44Km44K4DQor44Kq44Kq44Kv44OpLOODkuOCteODjuODqg0KK+ODnuODhOODkCzjgrfjgrLjg6sNCivjgr/jg6Hjg5Ljg60s44Oi44OI44KzDQor44Oe44Oz44OdLOOCq+ODhOODnw0KK+OCs+OCsOODgSzjgr/jgqvjgrcNCivjgr/jg4vjgrDjg4Es44OK44Kq44K544KxDQor44Ok44Oe44Oi44OILOOCv+OCq+ODkuODrQ0KK+ODkuODqeODouODiCzjg5Ljg4fjgqLjgq0NCivjgqLjg7Pjg6njgq8s44K/44Kr44K3DQor44K/44OK44KrLOODjuODquOCsw0KK+ODgeODo+OCrSzjgrfjgrLjg5Ljg4cNCivjgrXjgqvjgqQs44OB44OP44OrDQor44Kk44OK44Kq44KrLOODkuODreOCq+OCug0KK+OCpuOCt+OCuOODnizjgrfjg7PjgqTjg4ENCivjgrPjgrHjg4Qs44Ki44Kt44OS44K1DQor44Og44Op44K/LOODkuODiOOCtw0KK+OCreODoOODqSzjg6jjgrfjg5Ljg60NCivjgrfjg7Pjgr/jg4ss44Oq44Ol44Km44K4DQor44Kq44Kq44OP44K/LOODjuODluOCouOCrQ0KK+OCv+ODluODgSzjg6bjgr/jgqsNCivjgrnjg5/jg4As44Kt44Oo44K3DQor44Of44Km44OpLOODiuODiuOCsw0KK+ODquODpeOCpuODiCzjg5Ljg63jg58NCivjgqTjgrHjg4As44OS44Ot44OK44OqDQor44K/44Kr44Ok44OK44KuLOODkuODreODleODnw0KK+OCqOODs+ODiSzjgrHjg7PjgqTjg4ENCivjgqrjgrfjgqvjg68s44K344Oz44K4DQor44Kz44OQ44Ok44K3LOODkuODh+ODpuOCrQ0KK+ODpOODnuODgCzjgqTjg6/jgqoNCivjgqrjg4As44Oe44K144KqDQor44K/44Kt44K244OvLOOCouODhOOCtw0KK+ODouODqizjg6Tjgrnjg47jg6oNCivjgqvjg4rjgrbjg68s44K/44OE44Om44KtDQor44Kq44Kq44K/LOOCv+OCq+OCouOCrQ0KK+OCquOCquODhCzjg4bjg4Tjg63jgqYNCivjg5Xjgrjjg6Ljg4gs44Kr44K644OS44OtDQor44Oi44Oq44Kr44OvLOODnuOCteODjuODlg0KK+OCpOODiOOCpizjgrPjgqbjgrgNCivjgqvjg4jjgqYs44Kz44Km44Kk44OBDQor44Km44Ko44OOLOODqOOCt+ODkuOCsw0KK+OCquOCquOCq+ODryzjgrXjgqvjgqgNCivjg57jg6vjgqQs44K444Ol44Oz44KzDQor44Kk44Ov44KqLOOCt+ODpeOCpuOCuA0KK+OCpuODoeODgCzjgqvjgrrjg6QNCivjg6Hjgqvjgr8s44Oe44K144OrDQor44OE44K4LOODhOOCsOODkuOCsw0KK+OCv+OCtCzjg5Ljg63jgrcNCivjg6Tjg57jgrfjgr8s44Oe44K144OIDQor44K544Ku44Ok44OeLOODkuODreODpuOCrQ0KK+ODleOCv+ODkCzjg4jjgrfjgqLjgq0NCivjg5/jg6Tjg5Ljg6ks44Of44OB44Ki44KtDQor44OL44K344K244KtLOOCueOCueODoA0KK+OCv+ODiuOCqyzjgq/jg4vjgrMNCivjg6Djg6njg6Ljg4gs44OI44Oi44Ki44KtDQor44Oe44Ko44OALOODkuOCteOCq+OCug0KK+ODn+ODpOOCsSzjgqLjg4TjgrcNCivjg4jjgqbjgrjjg54s44K/44OE44OS44OtDQor44Kq44Kq44OkLOODnuOCteODqw0KK+OCpuOCqOODjizjg4jjg6Ljg5Ljg60NCivjgr/jgqvjgrXjgq0s44Ok44K544OS44K1DQor44Kz44Oz44OOLOODqOOCt+ODkuOCtQ0KK+OCv+OCseOCqizjg47jg6rjgqvjgroNCivjgqvjg4rjg6Tjg54s44Ok44K544OS44KzDQor44Kq44Kq44Kq44KrLOODiOOCt+ODreOCpg0KK+OCs+ODkOODpOOCtyzjgrfjg6XjgqYNCivjg4vjgrfjgrbjgqss44Of44KrDQor44Oe44K544Of44OALOODiOODouODkuOCsw0KK+ODhOODnOOCpCzjg6TjgrnjgqoNCivjgr/jgqzjg58s44Oe44K144OrDQor44Kq44Kr44OALOODhuODq+OCqg0KK+OCq+OCv+OCruODqizjgrXjg4jjgrcNCivjgqvjg6/jg4Ys44K/44Kr44K3DQor44Of44K644KkLOOCouODpOOCqg0KK+OCq+OCteOCquOCqyzjg4jjgrfjg5LjgrMNCivjg5Ljgqzjgrfjgr/jg4ss44OS44OH44OV44OfDQor44Km44K344KtLOOCq+OCuuOCpOODgQ0KK+ODkuODqeOCteODryzjg4rjgqzjgrMNCivjg4rjg6rjgr8s44K344Ol44Km44Kk44OBDQor44Kz44OA44OeLOOCq+OCuuODkuODrQ0KK+OCpOODjuODnuOCvyzjg5Ljg63jg58NCivjgq3jg6Djg6ks44K344On44Km44K0DQor44Kk44OI44KmLOODleODn+OCqg0KK+ODr+OCv+ODiuODmSzjg4bjg6vjgqLjgq0NCivjg4bjg6njgrXjg68s44Of44OE44KqDQor44OP44Ok44K3LOOCt+ODs+OCpOODgQ0KK+OCouOCteOCr+ODqSzjgrfjg7Pjg6QNCivjg6Tjg57jgq0s44Kz44Km44Kk44OBDQor44OK44Kr44Og44OpLOOCt+ODs+OCpOODgeODreOCpg0KK+OCqOODjuODouODiCzjg5Ljg63jg5/jg4ENCivjgqvjg57jgr8s44K/44Kr44OS44OtDQor44OP44K344Oi44OILOODiuOCquOCrQ0KK+OCouODqeOCpCzjg6jjgrfjg58NCivjgqvjg6rjg6Qs44K/44Kr44OS44KzDQor44Kz44Oz44OJLOODqOOCt+OCrQ0KK+ODnuOCueODgCzjg5Ljg63jgqoNCivjgqTjg4jjgqYs44Kx44Kk44K544KxDQor44Kq44KrLOODn+ODgeODj+ODqw0KK+OCquOCquODhOOCqyzjg5Ljg4fjgq0NCivjg57jg4Tjgqos44Kz44Km44K4DQor44Ki44K9LOODhuODq+OCq+OCug0KK+OCq+ODn+ODoOODqSzjg5Ljg63jg6bjgq0NCivjgr/jgqvjg5Djgr/jgrEs44K344Ky44OO44OqDQor44OV44Kv44OALOODkuODreODpuOCrQ0KK+OCv+OCq+ODj+OCtyzjgrHjg7Pjg4gNCivjgqTjg6/jgq0s44Oe44Kz44OIDQor44K544OzLOODiOODqOODpuOCrQ0KK+OCouODs+ODieOCpizjg6jjgrfjgqoNCivjg4/jgrfjg6Ljg4gs44Kr44OKDQor44Ok44OP44K/LOODkuODh+OCqg0KK+ODleOCuOOCrSzjgrHjg7PjgrgNCivjg57jg4Tjgqos44K144OI44K3DQor44Ki44Kq44KtLOODqOOCpuOCpOODgeODreOCpg0KK+OCtOODiOOCpizjgrfjg7PjgrgNCivjg4vjgrfjgqvjg68s44OS44OI44K3DQor44K544Of44OILOODnuOCteODleODnw0KK+ODkuODqeODjizjgrPjgqbjgrgNCivjgqTjg4jjgqYs44Kx44KkDQor44Kz44Kk44K644OfLOODjuODquOCsw0KK+OCq+ODr+ODkOOCvyzjg47jgr7jg58NCivjg6Djg4jjgqYs44Kr44OE44OO44OqDQor44Ki44OA44OBLOODnuOCteOCtw0KK+OCreODqSzjg57jgrXjgrcNCivjgqLjg6Tjg44s44Kz44Km44KtDQor44K/44Or44KkLOODqOOCt+OCqg0KK+ODj+ODpOOCtyzjgq3jg6fjgqbjgrMNCivjgqTjgrHjg4As44K444Ol44OzDQor44Ob44Oq44Of44K+LOOCseOCpOOCueOCsQ0KK+ODleODq+ODiuOCrCzjg4/jg6vjg5LjgrMNCivjgqrjgrfjg54s44OK44K544KqDQor44OP44Ok44K3LOODkuODiOOCtw0KK+ODi+OCtyzjg6bjgq3jg5/jg4QNCivjgrPjg6Djg60s44Kr44OK44OhDQor44OS44Ot44K/44OLLOODqOOCt+OCqg0KK+OCueOCrCzjg5Ljg63jgrcNCivjg4Tjg6vjg58s44Ki44Kt44OS44K1DQor44OI44Of44Ok44OeLOOCq+OCuuODn+ODhA0KK+ODpOODnuOCtuOCrSzjg6jjgqbjgrMNCivjgqTjgrfjg4As44K344On44Km44Kk44OB44Ot44KmDQor44Km44OB44OI44OfLOOCouOCreODqQ0KK+OCquOCquOCteODryzjg6jjgrfjgqvjgroNCivjg6Tjg4rjgq4s44OS44OH44OS44OtDQor44Of44Ok44K344K/LOODkuODh+OCrQ0KK+OCv+OCq+ODj+OCtyzjgrPjgqbjgrgNCivjg4jjgqzjg68s44OS44Ot44Om44KtDQor44OK44Kr44Og44OpLOOCt+OCsuODqw0KK+OCpuOCqOODoOODqSzjgr/jgrHjgrcNCivjgqLjgrXjg44s44Om44Km44Kk44OBDQor44Kq44Kq44Ok44OeLOOCseODs+OCuA0KK+OCq+ODr+ODjizjgqjjgqTjgrMNCivjg5Djg5As44OS44OI44K3DQor44Kk44OI44KmLOOCt+ODs+OCpOODgQ0KK+OCpuOCqOODjizjg47jg5bjg6bjgq0NCivjgrfjg6njgqQs44Kx44Oz44K344OzDQor44Kk44Kr44OfLOODj+ODq+OCqg0KK+OCq+ODr+OCt+ODnizjg4jjg6Ljg6bjgq0NCivjg5/jg6TjgrEs44K/44Kr44OS44OtDQor44K144Kv44Op44KkLOOCseODs+OCuA0KK+OCv+OCseODjuOCt+OCvyzjgrfjg6Xjgqbjg5jjgqQNCivjg4vjgrfjgqrjgqss44K744Kk44Kk44OB44Ot44KmDQor44Kv44Ot44KtLOODnuOCteODqOOCtw0KK+OCv+ODiuOCqyzjg5/jg47jg6sNCivjgqTjgqTjgrjjg54s44K/44Kr44K3DQor44K144OI44KmLOODkuODreOCouOCrQ0KK+OCteOCr+ODqeOCpCzjgqvjgrrjgrfjgrINCivjg6Tjg4rjgq7jgrXjg68s44OO44OW44KqDQor44Km44OB44Ok44OeLOOCt+OCsuODqOOCtw0KK+OCquOCr+ODhCzjgqvjgrrjg4jjgrcNCivjg4vjgrfjg6Tjg54s44K744Kk44K4DQor44K/44Kx44OALOOCv+OCq+OCsw0KK+ODleODquODj+ODqSzjgqvjgrrjgqoNCivjg6Tjg5bjgq0s44Oe44K144OS44OtDQor44OK44KrLOOCq+OCuuODkuODrQ0KK+ODqOOCt+OCquOCqyzjgqvjgrrjg6QNCivjg6Ljg4Hjgrrjgq0s44K/44Kr44Om44KtDQor44K544Ku44Ok44OeLOODkuODh+ODkuODrQ0KK+OCpOODr+ODiuOCrCzjgrHjgqTjgqTjg4ENCivjg5/jg68s44OP44Or44Kr44K6DQor44Ob44Oq44Kr44OvLOOCq+ODhOOCrQ0KK+OCv+OCq+ODgCzjgrPjgqbjgrgNCivjgqTjgrfjg57jg6ss44K344Ky44Ok44K5DQor44Kq44Og44OpLOODkuODh+OCqg0KK+OCreOCv+ODoOODqSzjg6rjgqsNCivjgrnjgq7jgq0s44K/44Kr44KtDQor44OL44K344Og44OpLOODgeOCqOOCsw0KK+ODiuOCq+ODj+ODqSzjgrPjgqbjgqTjg4ENCivjg57jg4Tjg6Ljg4gs44Ki44Kt44OpDQor44OV44Kv44K344OeLOODnuOCteODqw0KK+OCq+OCuOOCquOCqyzjgqLjgq3jg5Ljg4gNCivjg4rjgqvjgrbjg68s44OO44Oc44OrDQor44Oe44K544K244KtLOOCv+OCq+OCtw0KK+ODiuOCqyzjg4jjgrfjgr/jgqsNCivjgqrjgrXjg4As44OP44K444OhDQor44Kr44Ov44K/LOODiuOCquODnw0KK+ODqOOCt+ODgCzjgrPjgqbjgrgNCivjg4rjgqss44OI44K344OS44OtDQor44Ko44Kk44OJ44OhLOODkuODh+OCq+OCug0KK+ODnuODhOODouODiCzjg6jjgrfjg57jgrUNCivjg4rjgqzjgrXjgqss44Oo44K344Ki44KtDQor44OV44K444K144OvLOOCq+ODhOODkuOCsw0KK+OCreODqOOCv+ODiyzjg4Tjg4jjg6ANCivjgqLjg6rjg6Ljg4gs44K744Kk44KzDQor44Ko44K+44KoLOOCseOCpOOCpOODgQ0KK+ODhOODgeODpCzjgqvjgrrjg6QNCivjg5Xjgrjjgqrjgqss44Ok44K544KzDQor44OE44Kr44Oi44OILOODleODn+OCqg0KK+OCv+OCq+ODj+OCtyzjg4jjg6jjg5LjgrMNCivjgrXjgqvjgqTjg4As44Ok44K544OS44OtDQor44K544K644KtLOOCs+OCpuOCuA0KK+OCquOCt+ODnizjg6Tjgrnjg4jjgrcNCivjg57jgq3jgqbjg4Es44K/44Kv44OkDQor44OP44Op44OALOODkuOCteOCq+OCug0KK+ODnuOCteOCrSzjgqLjgq3jg6kNCivjgqrjgqzjg68s44OO44OW44Ki44KtDQor44Km44K344Oe44OrLOOCseODsw0KK+OCpOOCt+ODgCzjg47jg5bjgr/jgqsNCivjg4/jg4rjg5bjgrUs44Ki44OE44KzDQor44Oo44K344Og44OpLOODqOOCt+ODkuOCtQ0KK+OCv+ODi+OCrOODryzjg57jg6rjgqoNCivjgrXjg4jjgqYs44K/44OE44K3DQor44Kr44OELOOCv+OCq+OCtw0KK+ODpOODnuOCsOODgSzjg5Ljg63jgq0NCivjg4/jgq/jg4Hjg6fjgqYs44Kk44K144KqDQor44Kk44OI44KmLOOCv+OCq+OCtw0KK+OCteOCq+OCpCzjgqvjgrrjg47jg6oNCivjgr/jg7PjgrQs44OS44OH44KqDQor44Kz44Kk44K644OfLOOCseODs+OCueOCsQ0KK+ODr+OCq+OCueOCrizjgr/jg4Djgr/jgqsNCivjgqbjgqjjg44s44K344Oz44Kk44OBDQor44Km44Ko44OALOODiOODouOCrQ0KK+OCueOCuuOCrSzjg5LjgrXjgqgNCivjgqrjgqrjg44s44Oo44K344OO44OqDQor44Ki44OZLOOCseODs+OCpOODgQ0KK+OCt+OCpOOCrSzjg5Ljg63jgrcNCivjgqLjg6njgq0s44Kt44Oo44OP44OrDQor44Ki44K644OeLOODkuODreODqOOCtw0KK+ODh+OCsOODgSzjg5Ljg63jg47jg6oNCivjgqjjg6rjgqvjg68s44Om44Km44KzDQor44OV44Kr44Ok44OeLOODjuODluODpuOCrQ0KK+ODleODiuOCrSzjgrXjgqvjgqgNCivjgqTjg4Hjg6Djg6ks44Oe44Kz44OIDQor44OP44K344Oi44OILOODjuODquOCouOCrQ0KK+ODkuOCrOOCtyzjgq3jg6jjgr/jgqsNCivjg5Ljg63jgrXjg68s44Ki44OE44K3DQor44Ob44Oq44Kw44OBLOODpuOCpuOCpOODgQ0KK+OCpOODkOODqeOCrSzjg6bjgqbjgqTjg4ENCivjgqTjg4rjg6Djg6ks44Kz44Km44Kk44OBDQor44Kk44K344Kr44OvLOODn+OCreOCqg0KK+OCpOODiOOCpCzjgr/jg4DjgrcNCivjgqvjg4rjgrbjgrcs44OO44Oq44KzDQor44Kr44K/44Ku44K3LOODnuOCteOCtw0KK+OCq+ODiOOCpizjg6TjgrnjgrcNCivjgqvjg6/jg4As44Kx44Oz44K544KxDQor44Kt44OO44K344K/LOODpOOCueODkuODrQ0KK+OCs+ODkOODpOOCtyzjgqvjg4Tjg47jg6oNCivjgrPjg57jg4Qs44Ok44K544K/44KrDQor44Kz44K/44OLLOODkuODh+OCrQ0KK+OCr+ODreOCuyzjgqrjgrXjg6ANCivjg57jgqjjg4As44Om44Km44K4DQor44Oe44Oz44K/44OLLOODqOOCpuOCpOODgQ0KK+ODnuODhOODouODiCzjg6TjgrnjgqLjgq0NCivjg5/jg6Djg6ks44K344Ky44OO44OWDQor44Of44OvLOODnuOCteODkuODrQ0KK+ODouODquOCvyzjgqLjgq3jg5LjgrMNCivjg6Djg43jg6Djg6ks44OI44K344Of44OEDQor44OK44Ks44K/LOOCseODs+OCuA0KK+ODiuOCq+OCs+OCuCzjgr/jg4Tjg6QNCivjg4rjgqvjg6Djg6ks44Oo44Km44Kk44OBDQor44OK44Kr44Ok44OeLOOCv+OCq+OCtw0KK+ODi+ODoOODqSzjgrnjgrnjg6ANCivjg6Tjgrjjg54s44Oo44K344KoDQor44OO44OeLOODiOODqOODnw0KK+ODjOOCreOCpCzjgqvjg4Tjg58NCivjgqrjgqzjgrXjg6/jg6ks44K344Ol44Km44K4DQor44Kq44Kq44K144OvLOODkuODh+OCv+OCqw0KK+ODnuODhOODiuOCrCzjg6jjgrfjgqLjgq0NCivjgqrjgqvjg6Ljg4gs44OS44Ot44Om44KtDQor44Kq44K144OALOODoOODhOODnw0KK+OCteOCpOODiOOCpizjgqLjgq3jg5Ljg60NCivjgrXjgq/jg6njgqQs44K344Ky44OO44OqDQor44K144OI44KmLOODqOOCt+ODjuODqg0KK+OCu+OCtuOCpCzjgqvjgrrjg6TjgrkNCivjgrfjg5/jgros44Ki44Kt44OI44K3DQor44K344On44Km44Of44OELOODqOOCt+ODkuODrQ0KK+OCueOCruOCteODryzjg47jg5bjg6bjgq0NCivjgrnjgrrjgq0s44Om44Km44K4DQor44K544K644KtLOODpuOCpuOCsw0KK+OCv+OCq+ODj+OCtyzjgr/jgqvjg6bjgq0NCivjgr/jgqvjgrXjgqss44OP44K444OhDQor44OV44K444KkLOOCouODhOOCsw0KK+OCv+ODnuOCrSzjgrXjg4jjgrMNCivjgr/jg4ss44Kr44K644OS44KzDQor44OI44Kt44K+44OOLOOCt+OCsuOCqg0KK+ODiOODquOCtuODryzjgqjjg58NCivjg4Tjg6vjgqvjg68s44Ko44Kk44K4DQor44Km44OALOODkuOCteODqOOCtw0KK+OCpuODoeODoOODqSzjgq3jg5/jg5Ljg60NCivjg6/jgr/jg6os44Ok44K544Oo44K3DQor44Ok44Oe44Oi44OILOODhuODhOODpA0KK+ODpOODnuODouODiCzjg57jgrXjg6jjgrcNCivjg6Tjg44s44Om44Kt44KqDQor44Oo44OALOOCpOOCteOCqg0KK+ODpOODnuOCsOODgSzjgqvjgrrjg6jjgrcNCivjg5ss44Ki44Kt44OpDQor44Oe44OE44Of44OkLOODpuOCpuOCpOODgQ0KK+OCteODr+ODgCzjg5Ljg63jgrcNCivjgrPjg4/jg6ks44Oe44K144OO44OqDQor44K144Kk44OI44KmLOODn+ODhOODqw0KK+ODpOODjizjg5/jg4TjgqoNCivjg5Xjgrjjg6Ljg6os44OO44Oq44KzDQor44Ok44Oe44Kw44OBLOODpOOCueODkuODrQ0KK+ODpOODnuODgCzjgr/jgqvjgrcNCivjg5Xjgrjjgr8s44OI44K344KtDQor44Kt44Og44OpLOOCv+OCseOCqg0KK+ODj+ODpOOCtyzjg57jgrXjg5Ljg60NCivjg57jgqjjgrbjg68s44Kk44K644OfDQor44K344OW44Kr44OvLOOCreODqOODkuOCtQ0KK+ODn+ODmyzjg57jgrXjg47jg6oNCivjgrnjgq7jg6Tjg54s44K344Oz44Kk44OBDQor44OV44Or44Kr44OvLOODqOOCt+ODleODnw0KK+ODjuODgeOCuyzjgqvjgrrjg5LjgrMNCivjg57jg4Tjg6Ljg4gs44OS44OH44Ki44KtDQor44Kq44Kv44OOLOODpuOCreOCqg0KK+ODpOODnuOCtuOCrSzjg6Tjgrnjg5Ljg60NCivjgqTjgrfjgrIs44Ki44Kt44KzDQor44Of44Km44OpLOODquODpeOCpuOCvuOCpg0KK+ODkOODkCzjgr/jgq/jg6QNCivjg6Ljg4Hjgrrjgq0s44Ko44Of44KzDQor44OI44Kv44OK44KsLOODleODn+ODkuODiA0KK+OCr+ODreOCq+ODryzjg5Ljg63jgrcNCivjgqTjgrHjg44s44Oh44Kw44OfDQor44Ok44Oe44Kr44KyLOODqOOCpuOCuA0KK+ODpOOCruODj+OCtyzjgrfjg6XjgqbjgqTjg4ENCivjgq3jg6jjg5/jg4Qs44Kx44Oz44K4DQor44Og44Op44Ok44OeLOOCqOOCpOOCuOODpQ0KK+OCquOCquODhOOCqyzjg5Ljg4fjg5LjgrMNCivjgqrjg6Tjg57jg4As44K/44Kr44K3DQor44Ki44Ky44K/LOOCuOODpeODs+OCpOODgQ0KK+OCouODouOCpizjgqLjgq3jgqoNCivjgqLjg6njgqvjg68s44OS44OH44K3DQor44OQ44Oz44OOLOODnuOCteOCreODqA0KK+OCqOOCteOCrSzjgrfjg7PjgqTjg4ENCivjg5Xjgqvjgrbjg68s44OI44Oi44OS44OIDQor44OV44OK44OQ44K3LOODnuOCteODpuOCrQ0KK+ODj+ODiuODgCzjgqvjg4Tjg47jg6oNCivjg4/jgrfjg6Ljg4gs44Ko44Of44KzDQor44OS44K444Kv44OtLOODiuOCquODpuOCrQ0KK+ODm+OCpuODpCzjgqvjgrrjg5LjgrMNCivjg5vjgr3jg4As44OB44Ko44OfDQor44Kk44Kx44K244OvLOODjuODluODpOOCuQ0KK+OCpOODjOODhOOCqyzjg4rjgqrjgq0NCivjgqvjgrjjgr/jg4ss44Kq44K144OgDQor44Kk44OI44KmLOODgeOCr+OCtQ0KK+OCpOODr+OCt+OCvyzjgrfjgrMNCivjgqvjg5/jg6Qs44Kv44OL44Ki44KtDQor44Kr44K544OkLOOCouOCreODqQ0KK+OCq+ODr+ODkOOCvyzjg4DjgqQNCivjgqvjg6/jgq/jg5ws44Kr44K644OI44K3DQor44Kt44OQ44K3LOODkuODh+ODkuOCsw0KK+OCreODquOCteODryzjgqTjg4Hjg63jgqYNCivjgrPjg4Djg54s44Kq44K144OgDQor44OI44Km44OJ44KmLOOCs+OCpuOCuA0KK+OCs+ODpOOCpOOCtyzjg5/jgqsNCivjgq/jg6njgr8s44Kz44K544KxDQor44Kv44Ov44OOLOODkuODreOCv+OCqw0KK+ODnuOCueODgCzjgrjjg6Xjg7MNCivjg57jg4Tjgrfjgr8s44K/44OA44K3DQor44Of44Ok44KxLOOCouODhOOCtw0KK+ODn+ODqOODgCzjgr/jgqvjg5LjgrUNCivjg5/jgrrjgr/jg4ss44OE44Oo44K3DQor44Oi44Oq44Ov44KtLOOCt+ODs+OCpOODgeODreOCpg0KK+ODoOODiOOCpizjgqvjg4Tjgq0NCivjg4rjgqzjg68s44K344Oz44Kk44OBDQor44OK44Kr44K344OeLOODkuOCteODqOOCtw0KK+ODi+OCt+ODgCzjg5Ljg63jg6jjgrcNCivjg4vjgrfjgqos44Oe44K144OIDQor44OO44Og44OpLOODhuODhOODpA0KK+OCquODgOOCquOCquODj+ODqSzjgrfjg7PjgrQNCivjgqrjgqrjg5Ljg6ks44Kk44OB44Ot44KmDQor44Kq44Kq44OM44OeLOODiuODq+OCtw0KK+OCquOCquODpOOCrizjg57jgrXjg5Ljg60NCivjgqrjgqvjg40s44K/44Kr44K3DQor44Kq44Kv44OOLOOCq+ODhOOCtw0KK+OCteOCpOODiOOCpizjg6jjgrfjg58NCivjgrXjgqvjgqbjgqgs44Ok44K544Om44KtDQor44K144OI44KmLOOCv+OCseOCtw0KK+OCu+OCreODouODiCzjg4jjgrfjg6bjgq0NCivjgrfjgqTjg4os44OV44Of44OP44OrDQor44K344Of44K6LOODkuODh+ODiOOCtw0KK+OCt+ODqeOCteOCrSzjg6jjgqbjgrMNCivjgrnjg4njgqYs44K144OI44KzDQor44K544K644KtLOODkuODreOCtw0KK+ODm+OCveOCq+ODryzjg6bjg6oNCivjg6Tjg57jgrbjgq0s44OK44Kq44KtDQor44K/44Kr44K5LOOCq+OCuuODqA0KK+OCv+OCseODgCzjg5Ljg63jg6bjgq0NCivjgr/jg57jgr/jg4ss44Kr44K644Ki44KtDQor44K/44OL44Oi44OILOOCt+ODs+OCpOODgQ0KK+ODiOODn+ODiuOCrCzjg5Ljg63jg5LjgrUNCivjg4Tjgqvjg4As44OS44OH44KtDQor44Km44Op44Kr44OvLOODpuOCpuOCuA0KK+ODr+OCv+ODqizjgrPjgqbjgrgNCivjg6Tjg57jg6Ljg4gs44Ki44OE44K3DQor44Ok44Oe44K344K/LOODiOOCt+ODkuODhw0KK+ODpOOCtuOCrSzjgr/jgrHjgrcNCivjg6jjgrPjgr8s44Om44Km44KzDQor44Oo44K344Kr44OvLOODn+ODhOODkuODrQ0KK+OCouOCteODjizjg5/jg4HjgrMNCivjgqrjgq/jg4As44OS44K144KzDQor44Kk44OK44OALOODnuOCteODhOODig0KK+OCt+ODouOCq+ODryzjg5Xjg5/jg5LjgrMNCivjg4Tjg5zjgr8s44OO44Oq44KqDQor44Kq44Kq44Kv44OcLOOCv+OCseOCtw0KK+OCteOCpOODiOOCpizjgrfjg6XjgqbjgqTjg4ENCivjg5Xjgrjjgr8s44OE44ON44KqDQor44Oe44Kt44Og44OpLOOCv+OCseOCqg0KK+ODi+ODjuODn+ODpCzjgqvjgrrjgqoNCivjgr/jg5Djgr8s44Oo44K344K/44KrDQor44Og44Op44Kr44OfLOODkuODreOCrQ0KK+OCpOODnuODi+OCtyzjgr/jgrHjgqoNCivjgr/jgq3jgqzjg68s44K344Ky44Oo44K3DQor44Kq44Oz44K644KrLOODkuODreOCtw0KK+ODiOODjuOCq+ODryzjgr/jgrHjgrcNCivjgqTjgrHjg4As44OI44Kt44KqDQor44K044OI44KmLOOCq+OCuuODpA0KK+OCveODgCzjgrHjg7PjgrgNCivjg6Ljg6rjgr8s44Oe44K144Om44KtDQor44K/44Oz44OOLOOCqOOCpOOCpOODgQ0KK+OCtOOCpuODgCzjgq3jg6fjgqbjgrMNCivjg6Tjg57jgrDjg4Es44OS44Ot44Kr44K6DQor44Kq44K144OK44KkLOOCouODhOOCtw0KK+ODkuOCrOOCtyzjgrfjg6fjgqbjgrMNCivjg6Tjg57jg6Ljg4gs44OS44OH44Ki44KtDQor44K144OI44KmLOOCv+OCq+OCqg0KK+ODn+OCvuOCsOODgSzjg4jjgrfjg6bjgq0NCivjgq3jgr/jgqzjg68s44OS44Ot44K3DQor44Kq44Kq44OL44K3LOOCveOCpuOCpOODgQ0KK+OCouOCpOODj+ODqSzjg5Ljg4fjgqoNCivjgqLjgq3jg5As44OE44OI44OgDQor44Ki44Oe44OOLOODiOOCquODqw0KK+OCouOCquODpOOCrizjgr/jgqvjgqoNCivjgqLjg6ks44Ki44Kt44KqDQor44Ki44K144OOLOODqOOCt+ODkuODrQ0KK+ODkOODsyzjgrPjgqbjgr/jg63jgqYNCivjgqjjg5Pjg4zjg54s44Ki44Kx44OfDQor44OV44K444Ko44OALOOCuOODpeODsw0KK+ODleOCuOOCpCzjgrfjgrLjg47jg6oNCivjgqrjgrDjg6ks44Ki44Ok44KzDQor44OV44Kr44KqLOODn+ODhOODkuODrQ0KK+ODleOCr+ODgCzjg5/jgqsNCivjg5Xjgq/jgqrjgqss44K344Oz44K0DQor44K044Km44OALOODqOODquOCsw0KK+ODj+OCruODr+ODqSzjgq3jgq/jgqoNCivjg4/jg4rjg5/jg4Qs44Oo44K344K/44KrDQor44OP44OpLOODn+ODpuOCrQ0KK+ODj+ODhOOCt+ODnizjgrHjg7MNCivjg4/jg4Pjg4jjg6os44Oo44K344OO44OqDQor44OP44Ok44K3LOOCq+ODhOODnw0KK+ODkuODiuOCvyzjgrjjg6Xjg7MNCivjg5Ljg6njgrXjg68s44Kr44K644OS44OtDQor44OS44Ot44K7LOODkuOCteODpuOCrQ0KK+OCueOCruODouODiCzjgrvjgqTjgqTjg4ENCivjg5vjg6os44Kr44K644KqDQor44Ob44K9LOOCq+OCuuODnw0KK+OCpOODh+OCpCzjg57jgrXjgqvjgroNCivjgqTjgqTjg6Djg6ks44Oo44K344OO44OWDQor44Kk44Kx44OALOOCr+ODi+ODkuODrQ0KK+OCpOODnuOCpCzjgr/jg4DjgrcNCivjgqTjg47jgqbjgqgs44OS44Ot44K/44KrDQor44Kk44K344Kw44OtLOODkuODreOCtw0KK+OCpOOCt+OCq+ODryzjg6jjgqbjgrMNCivjgqTjgrfjg6/jgr8s44OK44Kq44OS44K1DQor44Kk44OI44KmLOODhuODhOODpA0KK+OCpOODiOOCpizjgr/jgqvjgrcNCivjgqTjg6/jgq/jg5ws44K/44Kr44Om44KtDQor44Kk44Ov44K144KtLOOCv+ODhOODkuOCsw0KK+OCq+OCrOODnyzjgrfjgrLjg6jjgrcNCivjgqvjg57jg6Ljg4gs44K/44Ko44KzDQor44Kr44OfLOODnuOCs+ODiA0KK+OCq+ODiuOCtuODryzjgrXjg4DjgqTjg4ENCivjgqvjg43jgrMs44Ok44KoDQor44Kr44K344Ov44KuLOODkuODreOCtw0KK+OCq+OCv+OCquOCqyzjgqLjg4TjgrcNCivjgrTjg4jjgqYs44OS44Ot44Kr44K6DQor44Kr44Ov44OP44OpLOODkuODreOCouOCrQ0KK+OCq+ODr+OCreOCvyzjg6TjgrnjgrMNCivjgq3jg4As44Oo44K344OV44OfDQor44Kt44Og44OpLOODn+ODjuODqw0KK+OCquOCq+OCtuOCrSzjgr/jgrHjgqoNCivjgq3jgr/jg6Djg6ks44Ki44Kt44KqDQor44Kz44OQ44Ok44K3LOODn+ODqOOCsw0KK+ODkuODreOCuyzjg4/jg6vjgqoNCivjgrPjgrXjgqss44Oo44K344Om44KtDQor44Kz44Kv44Oe44KkLOODn+OCqOOCsw0KK+OCs+ODouOCquOCqyzjg5Xjg5/jgqoNCivjgrPjg7Pjg4njgqYs44K/44OE44OIDQor44Kv44OcLOOCv+OCq+ODpuOCrQ0KK+OCr+ODnuODouODiCzjgqLjgq3jg5LjgrMNCivjgq/jg6rjg6Tjg54s44Om44Kt44KoDQor44Kv44K344OALOODr+OCv+ODqw0KK+ODnuOCqOOCq+ODryzjg5Ljg4fjgr/jgqsNCivjg57jgrnjg4As44Of44Kt44KqDQor44Oe44OE44OALOOCt+OCsuOCqg0KK+OCq+ODjuOCpizjg5Ljg63jg6bjgq0NCivjg57jg4Tjg4rjg58s44OS44Ot44Om44KtDQor44Oe44OE44K244KtLOOCv+ODgOOCtw0KK+ODn+ODouODqizjg5Ljg63jgrcNCivjg5/jgqbjg6ks44Oo44Km44Kk44OBDQor44Of44Ok44OP44K3LOOCreODp+OCpuOCsw0KK+ODn+ODpOOCv+OCsSzjgrfjgrLjg58NCivjg5/jgrrjgrPjgrcs44OI44K344KqDQor44Oi44Oq44KtLOODpOOCueODkuODrQ0KK+ODouODqizjgrXjg4jjg6sNCivjg6DjgqvjgqQs44K/44OE44OfDQor44Og44Op44K/LOOCteODiOOCtw0KK+ODoOODhOOCt+OCqyzjgqjjgqTjgqTjg4ENCivjg4rjgqzjgrXjg68s44Kr44K644OIDQor44OK44Ks44KoLOOCv+OCq+ODpuOCrQ0KK+ODiuOCq+OCuOODnizjgqvjg4Tjg4jjg6INCivjg4rjgqvjg57jgr8s44OO44Oq44OS44OtDQor44OK44Kr44Og44OpLOODj+OCuOODoQ0KK+OCquOCquODi+OCtyzjg57jgrXjg47jg6oNCivjg4rjgqvjg44s44Oi44Ko44KzDQor44OK44Kr44K/LOOCt+OCsuOCsw0KK+ODiuOCq+ODpOODnizjgqvjg4Tjg5LjgrMNCivjg4rjg4Tjg6Tjg54s44Om44Km44KzDQor44Oi44OqLOODpuOCreOCsw0KK+ODi+ODryzjg57jgrXjgq0NCivjg47jg54s44K144OI44K3DQor44OO44Oq44Kr44ONLOODnuOCteODqw0KK+OCquODgOODjSzjg6jjgrfjgqvjgroNCivjgqrjgqrjg5Djg6Tjgrcs44Ok44K544Om44KtDQor44Kq44KtLOODqOOCt+ODpuOCrQ0KK+OCquODqeOCpCzjgrnjgrnjg6ANCivjgqrjgqrjg4jjg6Is44Ki44Kt44KqDQor44Kq44OS44OjLOOCr+ODi+ODkuOCsw0KK+OCquOCq+ODouODiCzjg6jjgrfjgqoNCivjgqbjgqjjg4As44OI44Oo44Kr44K6DQor44OL44K3LOOCouODhOOCrQ0KK+OCv+ODgCzjgr/jgqvjg6bjgq0NCivjg6Tjg57jgrfjgr8s44Kx44Oz44K4DQor44K144K144Oi44OqLOODpuOCv+OCqw0KK+ODj+OCu+OCrOODryzjg4jjg6Ljg6bjgq0NCivjgqTjg57jgqQs44Of44Om44KtDQor44Oo44Kz44Ok44OeLOOCseODs+OCuA0KK+OCueOCruODpOODnizjg6jjgrfjg57jgrUNCivjgqLjg6njgqQs44OI44Oi44KzDQor44Ki44Oe44Ks44OkLOODpuODoeODjg0KK+ODhOODqyzjg5/jg47jg6sNCivjg6TjgqTjgr8s44Oe44KtDQor44K744KtLOODnuODqg0KK+ODj+ODqSzjg6jjgrfjg47jg6oNCivjg5/jgqbjg6ks44K544K544OgDQor44K144K1LOODpuOCreOCsw0KK+OCv+OCq+OCteOCrSzjg57jgq3jgrMNCivjg4/jg6njg4As44Ko44Of44KzDQor44Kv44Op44K/LOODpOOCueODkuODrQ0KK+OCouOCsuODnuODhCzjg5Ljg63jg5/jg4ENCivjg5Xjgq/jg6Ljg4gs44Of44Kt44KqDQor44Kq44Kv44Og44OpLOODgOOCpA0KK+OCquOCveOCqOOCrOODryzjg6Tjgrnjg4rjg6oNCivjgrXjgqTjgr8s44Oe44K144OS44OtDQor44K144Kr44KkLOODkuODreODnw0KK+OCteOCq+ODqizjg47jg5bjg5Ljg60NCivjgrXjg44s44Om44K/44KrDQor44K144OI44KmLOODqOOCt+ODkuOCsw0KK+OCteODiOOCpizjgqLjgq3jgqoNCivjgrXjg4jjgqYs44K144OI44K3DQor44K744Kt44Kr44OvLOOCouOCreODqQ0KK+OCu+OCt+ODoizjgrPjgqbjgrgNCivjgrfjg5bjg6Qs44Oe44K144OO44OqDQor44K344Oe44Oi44OqLOODnuOCteODkuOCsw0KK+OCt+ODouODgCzjgrHjgqTjg5/jg7MNCivjgrfjg7Pjgr/jg4ss44Om44Km44K4DQor44K344Op44KkLOOCt+OCsuOCrQ0KK+OCt+ODpeOCpizjgrTjgqTjg4ENCivjgrnjg4As44OK44Kq44KtDQor44K544Ku44K/LOODpuOCpuOCpOODgeODrQ0KK+OCueOCtuOCrSzjg4bjg4Tjg6QNCivjgrnjgrrjgq0s44OI44K344OkDQor44K544K644KtLOODjuODquODpuOCrQ0KK+OCv+OCrOOCpCzjg6TjgrnjgrcNCivjgr/jgqvjgq4s44Kx44Oz44K/44Ot44KmDQor44K/44Kr44OP44K3LOODnuOCteOCsw0KK+OCv+OCq+OCpOOCtyzjg4jjg6LjgqLjgq0NCivjgr/jgqvjgqrjgqss44K/44Kr44KtDQor44K/44Kr44Ok44OeLOOCt+ODs+OCpOODgQ0KK+OCv+OCseODouODiCzjg47jgr7jg58NCivjgr/jg57jg4Es44OS44Ot44K3DQor44K/44OK44KrLOODkuODreODleODnw0KK+OCv+ODiyzjg5Ljg63jg5bjg58NCivjg4bjg6njgrXjgq0s44OS44Ot44Om44KtDQor44K144Kv44Op44KuLOODjuODquODkuOCtQ0KK+ODiOODqOOCteODiCzjg5Ljg63jgrcNCivjg4Tjgrjjg6Ljg4gs44Om44Kt44KqDQor44OE44Or44K/LOOCt+ODjuODlg0KK+OCpuODgeODpOODnizjgr/jgrHjgrcNCivjgq3jgq3jg6fjgqYs44Oo44K344K/44KrDQor44Km44Ko44OOLOODqOOCt+OCsw0KK+ODiuOCrOOCvyzjg47jg6rjgrMNCivjg6/jg4As44K344K644KqDQor44Kk44OI44KkLOODqOOCt+ODkuOCtQ0KK+ODr+OCv+ODiuODmSzjg5Ljg4fjg4jjgrcNCivjg6Tjg5bjgqbjg4Es44K344On44Km44OY44KkDQor44Ok44Oe44OALOOCouOCreOCqg0KK+ODpOODnuODouODiCzjgqLjgq3jg5Ljg60NCivjg6Tjg57jg6Ljg4gs44Oe44K144OI44K3DQor44Ok44Oe44K344K/LOODhOODiOODoA0KK+ODpOODnuOCt+OCvyzjgqLjgq3jg6kNCivjg6Tjg44s44OI44Oi44Om44KtDQor44Oo44Kz44K/LOODn+ODiuOCsw0KK+ODqOODjeODoOODqSzjgr/jg4DjgrcNCivjg6jjgrfjg6Djg6ks44OS44Ot44OfDQor44Oe44OE44OALOODqOOCt+ODhOOCsA0KK+ODm+OCveODpCzjgrfjg6fjgqbjgrgNCivjg5/jg6Tjgrfjgr8s44K344Ky44OI44OiDQor44K344KsLOODnuOCteODn+ODhA0KK+ODpOODnuODgCzjg6bjgqbjgqTjg4ENCivjg4/jg6Tjgrcs44K144Ob44OqDQor44Kk44Kx44OALOODhOODqOOCtw0KK+OCpuOCqOODjizjgqvjgrrjgr/jgqsNCivjgrXjgqTjg4jjgqYs44OG44Or44Oo44K3DQor44OK44Ks44Ok44K5LOOCs+OCpuOCuA0KK+ODj+OCruOCqizjg4jjg6Ljg5LjgrMNCivjg4/jg57jg4As44Oe44K144K4DQor44Og44Op44Kr44OfLOODjuODquODkuODrQ0KK+OCouODmSzjgrfjg6Xjg7PjgrgNCivjgqLjgq3jg6Tjg54s44OI44K344Om44KtDQor44Ki44Oz44OJ44KmLOODhuODs+OCu+OCpA0KK+OCouODqeOCrSzjgrfjgrLjg5/jg4QNCivjgqLjgr0s44Kv44OL44Kr44K6DQor44OQ44OQLOODpuOCpuOCueOCsQ0KK+OCqOODk+OCteODryzjg5Ljg63jgrcNCivjg5XjgrjjgqQs44Oo44K344OO44OqDQor44OV44K444KkLOOCv+ODhOODpA0KK+ODleOCuOOCvyzjg5Ljg63jgrcNCivjg5Xjgrjjg6/jg6ks44OS44Ot44OgDQor44OV44Kv44OALOOCuOODpeODsw0KK+ODleOCr+OCquOCqyzjgqTjgrXjgqoNCivjg5Xjg6vjg6Qs44OI44K344Om44KtDQor44Ks44OJLOODkuOCteOCtw0KK+ODj+OCrCzjgqLjg4TjgrcNCivjg4/jg57jgrfjg54s44Om44OfDQor44OP44K7LOODpuOCv+OCqw0KK+ODj+OCt+OCuuODoSzjg4rjgqrjgq0NCivjg4Tjg4As44OS44Ot44KzDQor44OP44Ok44K3LOODiOOCt+ODreOCpg0KK+ODkuODqeOCpCzjg6bjgqbjgqTjg4ENCivjg5Ljg6njgrXjgqss44OS44Ot44Om44KtDQor44OS44Ot44Ov44K/44OqLOOCv+OCq+ODkuODrQ0KK+OCueOCuuOCrSzjg5Ljg4fjgq0NCivjg5vjgr3jg58s44OS44Ot44Ki44KtDQor44Kk44OALOODgeODj+ODqw0KK+OCpOOCrOODqeOCtyzjg6bjgq3jg6QNCivjgqTjgqTjgrjjg54s44K/44Kx44K3DQor44Kk44Oe44Og44OpLOOCs+OCpuOCpOODgQ0KK+OCpOODrOOCpCzjg57jgrXjg6sNCivjgqTjgrfjgqQs44OI44Oi44Om44KtDQor44Kk44K944OOLOODn+ODhOODiOOCtw0KK+OCpOODiOOCpizjg6jjgrfjg57jgrUNCivjgqTjg6/jgrUs44OI44K344OfDQor44Kk44K644Of44K144OvLOOCu+OCpOOCuA0KK+OCq+OCpOODgCzjgrPjgqbjgrgNCivjgqvjg57jgr8s44OI44K344KoDQor44Kr44Oz44OZLOOCv+OCq+ODkuODrQ0KK+OCq+ODjeOCsyzjgqLjgq3jg6kNCivjg6jjg43jg6Ljg4Es44OK44Kq44K3DQor44Kr44K/44Kq44KrLOOCq+OCuuODkuOCsw0KK+OCq+ODiOOCpizjg6Tjgrnjg5Ljg60NCivjgqvjg4jjgqYs44Om44Km44K4DQor44K/44Oe44Ks44OvLOOCs+OCpuOCpOODgeODreOCpg0KK+ODiuODq+OCsSzjgr/jgqvjgrcNCivjgq3jg4ks44K/44Kr44OV44OfDQor44Kt44Kv44OpLOOCq+ODhOODnw0KK+OCreODoOODqSzjg57jgrXjgq0NCivjgq3jg47jgrfjgr8s44Ok44K544OS44OtDQor44Kt44K/44Ki44KtLOODkuODreODpuOCrQ0KK+OCs+ODkOODpOOCtyzjgqvjgrrjg5Ljg60NCivjgrPjg5Djg6Tjgrcs44OI44K344KtDQor44Kz44Oz44OOLOODqOOCpg0KK+OCs+ODn+ODpOODnizjg6jjgrfjg5Ljg60NCivjgrPjg4vjgrcs44Ki44Kt44OO44OqDQor44Kz44Ok44OeLOODkuODreODnw0KK+OCr+ODieOCpizjgrjjg6Xjg7MNCivjgq/jg6rjg6Qs44Om44Km44Kk44OBDQor44Oo44K344OALOOCteODiOODqw0KK+ODnuOCreODjizjg4jjgrfjgqoNCivjg57jgrXjgq0s44OS44OH44OoDQor44Oe44OE44KkLOODpOOCueODkuODrQ0KK+ODnuODhOODouODiCzjgr/jgrHjgrcNCivjg57jg4Tjg6Tjg54s44K444Ol44OzDQor44Of44K/44Og44OpLOOCuOODpeODsw0KK+ODn+ODr+OCvyzjg4rjgqrjgq0NCivjg5/jg6Tjg6Ljg4gs44OS44OI44OfDQor44Oi44OB44K644KtLOOCt+ODpeOCpuOCpOODgQ0KK+ODouODqizjg57jgrXjg6bjgq0NCivjg57jg4Tjg4As44Kx44Oz44K4DQor44Oi44Oq44Ov44KtLOODjuODluODpuOCrQ0KK+ODoOODqeOCq+ODnyzjgr/jgrHjgqoNCivjg6Djg6njg6Tjg54s44K144OI44K3DQor44OK44Ks44K344OeLOODn+ODgeODjuODqg0KK+OCpuODgeOCvuODjizjgr/jgqvjgrcNCivjg4rjgqvjgrjjg54s44OS44Ot44Ki44KtDQor44OK44Kr44Og44OpLOODkuODreOCtw0KK+ODiuOCq+ODoOODqSzjg6jjgrfjg5LjgrMNCivjg4rjgqvjgrfjg54s44OO44Oq44KqDQor44OK44Op44OP44OpLOOCteODiOOCtw0KK+ODi+OCt+ODlizjgqLjg6TjgrMNCivjg4vjgrfjg6Ljg4gs44OK44Kq44KzDQor44OL44K344K244OvLOODgOOCpOOCueOCsQ0KK+ODjuOCuOODnizjg47jg6rjgqoNCivjg4zjg68s44K/44Kx44K3DQor44Kq44Ks44OvLOOCseODs+OCpOODgQ0KK+OCquOCquOCrOOCrSzjgqvjgrrjg5Ljg60NCivjgqrjgq0s44Oe44K144OS44KzDQor44Kq44Kq44Oi44OqLOODkuODreOCouOCrQ0KK+OCquOCquODjOODnizjg57jgrXjgqoNCivjgqrjgqrjgr/jgrEs44K144Ko44KzDQor44K144Kz44OALOOCt+ODpeOCpuOCpOODgQ0KK+OCquOCq+ODgCzjg4bjg4TjgrgNCivjgqrjgq3jgr8s44K144OI44KzDQor44Kq44Kq44OOLOOCv+OCq+OCtw0KK+OCquODquOCpCzjgrfjg6Xjg7PjgrgNCivjgqrjgrbjg68s44Ok44K544OS44OtDQor44K144Kk44OI44KmLOOCseOCpOOCuA0KK+OCteOCq+ODouODiCzjg6jjgrfjgqoNCivjgrXjgqvjgr8s44Oe44K144OS44OtDQor44K144OK44KuLOODqOOCt+OCrQ0KK+OCteOCteOCrSzjg4rjgqzjg57jgrUNCivjgrXjg4jjgqYs44Oe44Oi44OrDQor44K144OI44KmLOODkuODh+OCrQ0KK+OCu+OCreODjizjg47jg6rjg5Ljg60NCivjgrfjg57jg4As44Ki44OE44K3DQor44K344Of44K6LOOCv+OCq+OCouOCrQ0KK+OCt+ODouODgCzjg5Ljg63jg6bjgq0NCivjgrfjg47jgrbjgq0s44Ki44OE44K3DQor44K344On44Km44OALOOCseODs+OCuA0KK+OCueOCrOODjizjg5Ljg63jg6bjgq0NCivjgrnjgq7jgrXjgq0s44Oo44Km44KzDQor44K544Ku44Ok44OeLOOCv+OCseOCtw0KK+OCueOCuuOCrSzjg5Ljg4fjg6bjgq0NCivjgrnjgrrjgq0s44Oe44K144OO44OqDQor44K/44Kw44OBLOOCt+ODsw0KK+OCv+OCq+ODj+OCtyzjgqvjgrrjg47jg6oNCivjgr/jgqvjg4/jgrcs44Kq44K144OgDQor44K/44Kr44OP44K3LOODkuODh+OCrQ0KK+OCv+OCq+ODpOODiuOCrizjgrfjgrLjg6sNCivjgr/jgrHjgqQs44OO44OW44KqDQor44K/44Kx44K344OeLOOCq+ODhOOCt+ODreOCpg0KK+OCv+ODoOODqSzjgrfjg6fjgqbjgqTjg4ENCivjgr/jg4rjgqss44Ok44K544K4DQor44K144OOLOODkuODreODleODnw0KK+ODhuODqeODnuOCqCzjg57jgq0NCivjg4jjgrDjg4Es44K/44Kx44K3DQor44OI44Of44KkLOODnuOCteODkuODrQ0KK+ODiOODg+ODiOODqizjgqLjgq3jg5LjgrMNCivjg4Tjgrgs44Oe44K144OS44KzDQor44OE44Kt44K244OvLOOCs+OCpuOCuA0KK+ODhOODq+OCvyzjg47jg6rjgrMNCivjgqbjg4Hjg4As44K344On44Km44KzDQor44Km44Ko44OALOODqOOCpuOCueOCsQ0KK+OCpuOCqOODjizjgrjjg6Xjg7PjgrgNCivjgqjjgqzjgrfjg6ks44K/44OA44K3DQor44Kt44K/44Ov44KtLOOCu+OCpOOCrQ0KK+ODr+OCv+ODiuODmSzjgr/jgqvjgrcNCivjg6/jgr/jg4rjg5ks44OS44Ot44Om44KtDQor44Ov44K/44Op44KkLOOCuOODreOCpg0KK+ODpOODnuODgCzjgqLjg4TjgrcNCivjg5Xjgrjjgr8s44Oe44K144OI44K3DQor44Ok44Oe44Oi44OILOODpOOCueOCtw0KK+ODpOODnuODjSzjg5/jg4Hjg6sNCivjg6Tjg57jgrfjgr8s44K344Ky44OfDQor44Ok44Oe44K244KtLOOCv+ODgOOCtw0KK+ODqOODgCzjgrfjg6Xjg7PjgrnjgrENCivjg6jjgrfjg4As44Kr44K644Oo44K3DQor44Oo44K344Og44OpLOOCteODiOODqw0KK+OCquOCtuODryzjgqvjg4Tjg6bjgq0NCivjg6Tjg57jg4As44Kt44Oo44K3DQor44K144K144KtLOODjuODluODpuOCrQ0KK+OCouOCvOOCrOODnyzjgrfjgrLjgqvjgroNCivjg5Xjgq/jg4/jg6ks44OO44OW44Om44KtDQor44OP44K344Oi44OILOODqOOCt+ODkuODrQ0KK+OCpOOCveODgCzjgrPjgqbjgqTjg4ENCivjgqvjg57jgr8s44K/44OE44OkDQor44Kt44Og44OpLOODqOOCt+ODkuODrQ0KK+OCs+ODkOODpOOCtyzjgrLjg7MNCivjgq/jg57jgrXjgq0s44Oo44K344Ki44KtDQor44Of44Kv44OLLOODiOODn+OCqg0KK+OCqOODgCzjgr/jgqvjgrcNCivjg43jg6Ljg4gs44Oe44K144Om44KtDQor44Kq44OOLOOCv+OCr+OCuA0KK+OCteOCqOOCrSzjg47jg6rjg6bjgq0NCivjgrvjgq0s44Om44Kt44KqDQor44K544Ok44OeLOODkuODreOCsw0KK+OCv+ODiuOCqyzjgrHjg7PjgrQNCivjgr/jgrbjg68s44Of44Kt44KqDQor44Ko44Oz44OJLOOCuOODpeODs+OCsw0KK+ODpOODnuOCsOODgSzjg47jg6rjgqoNCivjg6Tjgrnjg4As44K144OI44K3DQor44K544K644KtLOOCv+OCseOCtw0KK+ODkuODreODj+OCtyzjg6TjgrnjgqoNCivjgqvjg4jjgqYs44OS44Ot44Oo44K3DQor44Km44Ko44OP44OeLOODn+ODjuODqw0KK+ODnuODiOODkCzjg4Hjg5Ljg60NCivjg6/jgr/jg4rjg5ks44OI44Kq44OrDQor44Kr44Ov44K344OeLOODhuODhOOCqg0KK+ODleOCuOOCq+OCvyzjg5/jg4TjgqoNCivjgrPjgqTjgrEs44Kq44K144OgDQor44K/44OK44KrLOODquODp+OCpuOCvuOCpg0KK+ODgOOCseODpOODnizjg5Ljg63jg6bjgq0NCivjgq/jgrfjg5Pjgq0s44K544Kx44OS44OHDQor44K544Ks44OP44OpLOODhuODhOOCqg0KK+ODkuOCrOOCtyzjg5Xjg5/jg5Ljg60NCivjg5vjgqss44Kx44Oz44K/44Ot44KmDQor44Kk44Ov44K/LOOCv+OCq+ODpuOCrQ0KK+OCueOCrOODr+ODqSzjg57jgrnjgrMNCivjgrnjg4gs44Oe44K144OfDQor44Oe44OE44K244KtLOODnuOCteODjuODqg0KK+OCouOCq+ODnuODqyzjgqrjgrXjg6ANCivjgqLjg5njgqvjg68s44Os44Kk44K4DQor44Oo44ON44OALOODnuOCteOCqg0KK+OCveOCrOODmSzjg6bjgq3jgqoNCivjg6/jgqvjg5Djg6Tjgrcs44OP44Os44KqDQor44K544Of44K/LOODhuODhOODpA0KK+OCpOODjuOCpuOCqCzjgr/jgqvjg6jjgrcNCivjg5/jg6Tjg6Ljg4gs44OE44OI44OgDQor44OV44K444Kr44OvLOODiuOCquODiA0KK+OCteOCpOODiOOCpizjg5Xjg5/jgqoNCivjgr/jg4rjg5ks44Kx44Oz44K4DQor44K344Of44K6LOOCu+OCpOOCuA0KK+ODjuOCsOODgSzjgrfjgrLjgqLjgq0NCivjgqvjg6/jg4rjg58s44Oe44K144Ki44KtDQor44OV44Kv44K344OeLOOCouOCreODqQ0KK+OCquODgOODr+ODqSzjg5/jg4HjgqoNCivjgqrjgqrjgr8s44Oo44Km44K4DQor44Kr44Ov44OOLOOCv+ODgOODqOOCtw0KK+OCr+ODi+ODpuOCrSzjg6Tjgrnjg5Ljg60NCivjgrfjg57jg4As44Of44OE44OrDQor44K/44Kr44K344OeLOODn+ODhOOCrg0KK+ODhOODpCzjg57jgrPjg4gNCivjg4rjgqvjgrfjg54s44Oe44K144KqDQor44Ok44Ku44K344K/LOODiOOCt+OCqg0KK+OCreOCt+ODouODiCzjg57jgrPjg4gNCivjgq/jgrIs44Kx44Oz44K4DQor44Ki44K144OOLOODqOOCt+OCouOCrQ0KK+OCq+ODr+OCq+ODnyzjg4Tjg43jgqoNCivjgrfjg57jg4As44K344Ol44Km44Kk44OBDQor44OV44K444KkLOOCt+ODpeODs+OCpOODgQ0KK+ODkuOCrCzjgrjjg6Xjg7Pjgq0NCivjgr/jg4rjg5ks44Ki44Kt44OpDQor44Kv44Op44OkLOOCreODmOOCpA0KK+ODiuOCq+OCtuODryzjg57jgrXjg5Ljg4gNCivjgqLjg6/jgr8s44K344Ky44OrDQor44K444OALOOCouOCreOCqg0KK+ODm+OCveOCq+ODryzjg4jjgrfjgqoNCivjgrfjg5bjg6Qs44Oo44K344Kr44K6DQor44Kz44OQ44Ok44K3LOOCreODqOOCtw0KK+OCreOCv+OCrOODryzjg6jjgrfjg4bjg6sNCivjg5/jgrrjgr/jg4ss44Ki44Kt44OpDQor44K/44Kr44K7LOODiOOCt+OCqg0KK+ODn+ODpOODoOODqSzjg4jjgqrjg6sNCivjg6jjgrPjg4/jgr8s44OI44K344OS44KzDQor44OK44Oq44K/LOODn+ODhOODqOOCtw0KK+OCouODmSzjgrXjg4Djg5Ljg60NCivjg4rjg57jgqgs44Kx44Oz44K4DQor44Kt44Og44OpLOODpuOCv+OCqw0KK+ODiuOCtOOCtyzjg5Ljg4fjgqLjgq0NCivjg4jjg5/jg4rjgqss44Oo44K344KqDQor44OK44Kr44OOLOODhOODouODqw0KK+OCquOCquOCteOCryzjgqvjgrrjgqoNCivjg4/jg6Tjgrcs44K344Ky44Ki44KtDQor44Kq44Kq44K1LOOCv+OCq+OCtw0KK+ODpOODnuOCpuODgSzjgrgNCivjgqrjg4As44Oq44On44Km44K4DQor44Oh44Kw44OtLOODkuODreODqOOCtw0KK+OCq+ODiuOCteOCrSzjg4jjg5/jgqoNCivjgqrjgqvjg44s44Ok44K544KqDQor44Kv44K144Kr44OvLOODiuOCquOCrQ0KK+OCpOODjuOCpuOCqCzjgr/jgrHjgrcNCivjg6Tjg4As44Kr44K644Kq44OfDQor44Oe44OE44Kq44KrLOODpuOCreOCqg0KK+OCueOCuuOCrSzjg6bjgqbjgrgNCivjgr/jgq3jg6Ljg4gs44Kv44OL44KqDQor44OS44Ks44K344OQ44K/LOODkuODh+OCqg0KK+OCpOOCpOODgCzjgrHjg7PjgrcNCivjgqvjg7Pjg44s44Oe44K144OS44OtDQor44K/44OK44KrLOOCt+OCsuODqw0KK+OCpOOCr+OCvyzjg6Tjgrnjg5LjgrUNCivjgrXjg44s44OS44OH44Oe44K1DQor44K544Ks44Ov44OpLOODpOOCueODkuODrQ0KK+ODiuOCrOOCvyzjg6bjgq3jgqoNCivjgqbjg6njg44s44K144OI44K3DQor44K544Ku44Ok44OeLOOCq+ODhOODpuOCrQ0KK+OCquOCq+ODmSzjg5Xjg5/jgqoNCivjgrPjgqTjg4cs44K/44Kr44K3DQor44Kk44K344K/44OLLOOCteODiOOCtw0KK+ODouODqizjgqjjgqTjgrgNCivjgq3jgr/jg6Djg6ks44K/44Kr44K3DQor44Kk44Ov44OfLOODpOOCueOCqg0KK+ODleOCq+ODgCzjgr/jgqvjgrcNCivjgqbjgqjjg4As44Om44Km44K4DQor44OV44Or44K/44OLLOOCv+OCq+ODnuOCtQ0KK+ODieOCpCzjgr/jgqvjgrcNCivjg4rjgqzjg44s44OI44K344OO44OqDQor44Kt44Og44OpLOOCouOCreODqQ0KK+OCq+ODieODpCzjg6bjgqbjgrQNCivjgqrjgqrjgr8s44Kv44OL44KqDQor44K/44Kx44Km44OBLOOCseODs+OCpOODgeODrQ0KK+ODiOOCr+ODouODiCzjgr/jgqvjgqLjgq0NCivjgqTjg4jjgqYs44K344OV44OfDQor44Ok44Oe44K244KtLOODiOOCreOCqg0KK+OCouOCquOCrSzjg6jjgrfjg58NCivjg4Hjgq7jg6os44Ko44Kk44K444Ot44KmDQor44Oo44K344OK44KsLOODgeOCq+OCqA0KK+ODkuODqeODkOODpOOCtyzjg5Ljg63jgqvjgroNCivjg4rjgqvjg4/jg6ks44Kx44Oz44K4DQor44OS44Ot44OkLOODjuODquODkuODrQ0KK+OCq+ODiuOCpCzjgqvjg7PjgrvjgqQNCivjg4jjgqrjg6Tjg54s44K/44Kr44K3DQor44Km44OOLOOCreODs+OCtA0KK+OCt+ODkOOCvyzjg4jjgrfjgqoNCivjgq3jgr/jgqzjg68s44Kt44OP44OB44Ot44KmDQor44OP44Op44OALOODkuODh+ODpuOCrQ0KK+ODpOODnuODoOODqSzjgrHjg7PjgrgNCivjgq/jg57jg58s44Om44Km44K+44KmDQor44Kk44K344OQ44K3LOODiOOCt+ODpuOCrQ0KK+OCt+ODkOOCvyzjg4/jg6vjgq0NCivjgrXjgq/jg6Tjg54s44Kr44K644KqDQor44Kk44Kx44OALOOCu+OCpOOCpOODgQ0KK+OCv+OCseODouODiCzjgqvjgrrjgqoNCivjgr/jg6Ljg4gs44OI44Of44KqDQor44Kz44Og44OtLOODquODp+OCpuOCpOODgQ0KK+OCv+ODiuOCqyzjg57jgrXjg4jjgrcNCivjgqvjg57jg4As44OS44Ot44K3DQor44K/44OQ44K/LOOCseOCpOOCpOODgQ0KK+ODkuODqeOCq+OCvyzjgqvjgrrjgqoNCivjgr/jgrHjgqbjg4Es44OG44OE44KqDQor44Kk44Oe44K6LOODpOOCueOCv+ODgA0KK+ODleOCuOOCvyzjg4jjgrfjg5/jg4ENCivjg6Tjg57jg6Ljg4gs44OE44OI44OgDQor44Ok44Oe44KtLOODpuOCpuOCuA0KK+OCt+ODqeOCpOODgSzjg57jgrXjg6sNCivjgrXjgrXjgq0s44Og44OE44OfDQor44Of44Ok44Kr44OvLOODnuOCteOCv+OCqw0KK+OCr+ODieOCpizjgrHjgqTjgrMNCivjgqLjg6njg57jgq0s44OO44OW44KqDQor44Kt44OP44OpLOODiuOCquOCrQ0KK+OCquOCqyzjgq3jg6fjgqYNCivjgrPjg4vjgrcs44K344Ky44OfDQor44K/44Kx44Km44OBLOOCteODgeOCsw0KK+OCv+ODiuOCqyzjgrfjg7PjgqTjg4Hjg63jgqYNCivjgrXjgqvjg6Ljg4gs44Oe44Oi44OrDQor44Oe44OE44OA44Kk44OpLOOCqOOCpOOCuA0KK+OCpOODjizjgr/jg4Tjg63jgqYNCivjgqrjg5Djg4os44K344Ky44Ok44K5DQor44Kq44Kq44Kv44OvLOOCreODqOOCtw0KK+OCtOODiOOCpizjgrfjg7PjgrgNCivjgrnjgrrjgq0s44Kt44Oo44K3DQor44OL44K344Kq44KrLOOCteODluODreOCpg0KK+OCteOCteOCrSzjg5Ljg4fjgqoNCivjg4/jg6ks44Kk44Kv44KqDQor44K744KtLOODkuODreOCtw0KK+OCteOCpOODiOOCpizjg5Ljg4jjgrcNCivjg5Xjgrjjgr8s44K344Ol44Oz44K544KxDQor44K144Kr44K/LOOCs+OCpuOCpOODgQ0KK+ODnuOCqOOCtuOCrSzjgqTjgrXjgqoNCivjgrfjgqrjg58s44Of44OE44KqDQor44K/44Kr44Kv44OvLOODnuOCteODjuODlg0KK+OCpOOCt+ODj+ODqSzjg4HjgqjjgrMNCivjgrPjgq/jg5ws44Kx44Kk44KzDQor44Of44Ok44K244KtLOOCt+OCsuOCqg0KK+OCouODquODnizjgrHjgqTjgrMNCivjgqbjg4Hjg6Tjg54s44K/44Kr44K3DQor44OK44K344KtLOOCq+OCquODqw0KK+ODleOCuOOCvyzjg6bjg5/jgrMNCivjgr/jgqvjgq7jg68s44Kk44K144OgDQor44OL44K344OALOODkuODiOOCtw0KK+OCreOCr+ODgSzjg5Ljg4fjg5Xjg58NCivjg4rjgqvjgqQs44Oe44K144OfDQor44Kk44Kk44OALOODpOOCueOCtw0KK+ODpOODnuOCsOODgSzjg47jg5bjg5Ljg60NCivjg6Tjg44s44Om44Km44Kk44OBDQor44Ok44Oe44Oi44OILOODkuOCteOCtw0KK+ODm+ODquODoOOCrSzjg6jjgrfjg54NCivjgqLjg4Djg4Es44OV44Of44OO44OqDQor44Km44Op44OOLOOCs+OCpuOCpOODgQ0KK+OCv+OCseODgCzjg5/jg4HjgrMNCivjgrXjgqTjg4jjgqYs44OS44Ot44OE44KwDQor44K344Oe44Og44OpLOOCs+OCpuOCuA0KK+ODleOCr+ODgCzjg4Tjg6jjgrcNCivjgq3jg6Djg6ks44Ko44Kk44KzDQor44Ok44Oe44Oi44OILOOCqOODquOCsw0KK+OCt+OCsuODpOOCuSzjgqjjgqTjgqTjg4ENCivjgqvjg47jgqYs44OS44Ot44Ki44KtDQor44K544OvLOODleODn+OCqg0KK+OCquOCq+OCtuOCrSzjg47jg6rjgqoNCivjg5Xjgqvjg6Qs44Oe44K144OS44OtDQor44Kz44K244KkLOODn+ODhOODqw0KK+ODm+ODieODpOODnizjg5Ljg4fjgqoNCivjgq/jg5zjgr8s44Kt44Oo44K3DQor44Kk44Kk44K644KrLOODquODp+OCpuOCsw0KK+OCv+OCq+OCrizjgr/jgrHjg47jg6oNCivjgqTjg6/jgqos44Oe44K144K3DQor44Kk44K344KkLOOCpOOCteODoA0KK+ODr+OCq+ODkOODpOOCtyzjg4jjgrfjg5Ljg4cNCivjgrzjg7PjgrEs44OI44K344KqDQor44Ov44K/44OZLOODqOOCt+ODnw0KK+ODnuODhOODouODiCzjg5Ljg63jgrfjgrINCivjg57jg6vjg6Tjg54s44Kx44Kk44K4DQor44OK44Kr44OOLOODkuODh+ODjuODqg0KK+OCquOCquOCr+ODnCzjgqvjgrrjg4/jg6sNCivjgq/jg5zjgr8s44Oe44K144OIDQor44OL44K344Kr44OvLOODkuODreOCtw0KK+ODi+ODg+OCvyzjg5Xjg5/jgrMNCivjgqTjgrfjg4As44OS44OH44OS44KzDQor44Kr44Oe44K5LOOCseODs+OCvuOCpg0KK+OCq+OCsuODpOODnizjg5/jg47jg6sNCivjg57jg4Tjg6Djg6ks44OI44K344Of44OBDQor44K144K144KtLOOCueOCueODoA0KK+ODkuODqeODjizjg6jjgrfjgqvjgroNCivjgrnjgrrjgq0s44Kk44OB44Ot44KmDQor44OL44K344OP44OpLOOCseOCpA0KK+OCr+ODreOCpOODryzjgr/jgqvjgrcNCivjgr/jgqvjg4/jgrcs44OS44Ot44K3DQor44K/44Kx44Km44OBLOODkuODh+OCouODhA0KK+OCt+ODn+OCuizjgqLjgq3jg5Ljg4cNCivjgrXjgr/jgrEs44K344Oz44K4DQor44Kz44K/44OLLOOCv+OCr+ODouODqg0KK+OCs+ODh+ODqSzjg57jgrXjg4gNCivjg4/jg57jg44s44Of44OB44KqDQor44OK44Kr44Og44OpLOODkuODreOCtw0KK+ODpuOCouOCtSzjgrHjg7PjgrgNCivjgqrjgqvjg4As44Oo44K344OS44OtDQor44Kz44OQ44Ok44K3LOODqOOCt+ODj+ODqw0KK+ODleOCr+ODgCzjgrjjg6Xjg7PjgqTjg4ENCivjgqvjg5/jg6Djg6ks44K/44Kr44K3DQor44Kk44Oe44OALOODnuOCteODkuODrQ0KK+OCveODjSzjg5Xjg5/jgqoNCivjg5/jg47jgrDjg4Es44Oo44K344OO44OqDQor44Kv44OA44OK44OfLOODnuOCteODpuOCrQ0KK+OCpOODjuOCpuOCqCzjg5/jg4njg6oNCivjgqbjgqjjg6Djg6ks44OO44Oc44OrDQor44Of44Km44OpLOOCquOCteODoA0KK+OCueOCrOODr+ODqSzjgrXjg4jjgrcNCivjg6/jgr/jg4rjg5ks44OK44Kq44Om44KtDQor44OL44K344Ov44KtLOODqOOCpuOCuA0KK+OCquOCquOCv+ODiyzjg57jgrXjgqLjgq0NCivjgq/jg63jgqvjg68s44Kt44Oo44K3DQor44Kv44Oc44K/LOODjuODluOCqg0KK+OCv+ODoOODqSzjg5Ljg63jg5LjgrMNCivjgqjjg5Pjg4/jg6ks44Kt44Kk44OBDQor44OK44Kr44Og44OpLOODqOOCpuOCsw0KK+ODpOODnuODjSzjg6jjgrfjg4gNCivjgqLjgrXjg54s44Oe44K144OS44OtDQor44Of44Km44OpLOODpOOCueODjuODlg0KK+OCouODqeOCq+ODryzjgrfjg7PjgrgNCivjgrPjgrjjg54s44Oo44K344Ki44KtDQor44K144Kr44K/LOOCs+OCpuODmOOCpA0KK+OCs+ODkOODpOOCtyzjgqrjgrXjg5Xjg58NCivjgqrjgqzjg68s44Oo44K344KqDQor44Kr44OI44KmLOOCv+OCq+ODpuOCrQ0KK+ODn+ODhOOCpCzjgrHjgqTjgqTjg4ENCivjg4bjgrfjg54s44Kr44K644Oe44K1DQor44Ki44K9LOODkuODreOCpOODgQ0KK+ODouODquODpCzjg5Ljg4jjgrcNCivjg6Tjg4os44Kr44K644KqDQor44K144Kk44OI44KmLOODkuODreODpuOCrQ0KK+OCpOODgeOCrSzjg5Ljg63jgrcNCivjgqrjgqrjgr8s44OS44Ot44K3DQor44Ob44Oq44Km44OBLOOCseOCpOOCpOODgQ0KK+OCv+ODi+OCsOODgSzjg6jjgrfjgqoNCivjg4vjgrfjg44s44K944Km44Kk44OB44Ot44KmDQor44OV44Or44OP44K3LOOCs+OCpuOCvuOCpg0KK+OCouOCreOCvyzjg4jjgrfjgqoNCivjgqrjgq/jgrfjg54s44K/44Kr44K3DQor44Kq44Kq44K/44OLLOOCv+ODgOODkuODrQ0KK+OCq+ODoeOCquOCqyzjg6jjgrfjgqoNCivjg4/jg6njgqrjgqss44Kr44OE44Ok44K5DQor44OK44Kr44Og44OpLOODkuODreOCtw0KK+OCouODqeOCt+ODnizjg6bjgq3jgqoNCivjg4rjgqzjgrXjg68s44Oo44K344Ot44KmDQor44Ok44Oe44Kq44KrLOOCreODqOOCtw0KK+ODj+OCuyzjg57jgrXjgqvjg4QNCivjgq3jgrfjg6Ljg4gs44Kv44OL44KqDQor44K544K644KtLOODqOOCt+OCqg0KK+OCq+ODoeODpCzjgqvjg4Tjg58NCivjg57jgrnjg4As44Oe44K144OP44OrDQor44Ko44Oz44OJLOOCseODs+OCpOODgQ0KK+OCteOCr+ODqeOCpCzjgr/jgqvjgqLjgq0NCivjg5Xjg6vjgrfjg6fjgqYs44OV44K444KqDQor44Km44K344KtLOOCq+OCuuODnw0KK+OCs+OCpOOCsSzjg5Ljg63jgrcNCivjg4jjgqbjg54s44K144OB44OS44OtDQor44OK44Kr44K244OILOODkuODreOCtw0KK+ODpOODnuOCquOCqyzjg6jjgrfjg47jg5YNCivjg4rjgqvjg40s44OO44OW44OP44OrDQor44OI44Of44K/LOODjuODquOCq+OCug0KK+OCteODiOODoOODqSzjgrHjgqTjgrgNCivjg5LjgrXjg57jg4Qs44OI44Oo44OI44K3DQor44Kq44Ks44OvLOODnuOCteODiA0KK+OCteOCq+OCpCzjgr/jgrHjgrcNCivjg4rjgqvjgq4s44Om44OfDQor44K144Ov44Kw44OBLOODnuOCteOCr+ODiw0KK+ODnuODhOODouODiCzjg4jjgrfjgqoNCivjg5Xjg6vjgqvjg68s44Kz44Km44Kk44OBDQor44OV44K/44OfLOOCreODqOOCtw0KK+OCv+ODiuOCqyzjg5Xjgq/jg6ANCivjg5Ljg5Pjg44s44OS44Ot44K3DQor44K544OK44OP44OpLOOCt+ODp+OCpuOCuA0KK+OCpOOCseODgCzjgr/jgqvjgrcNCivjgrTjg4jjgqYs44OO44OW44Om44KtDQor44Kk44K344OOLOODhOODiOODoA0KK+OCreODoOODqSzjgrfjgrLjg6sNCivjg6Tjg57jg4As44Of44OE44KqDQor44Oi44Oq44Oi44OILOODnuOCteODqw0KK+OCquOCq+ODouODiCzjg57jg4TjgqoNCivjg4rjgqvjgrjjg54s44K144Kr44KoDQor44Kt44K/44Og44OpLOODnuOCueODnw0KK+ODiuOCq+OCpOOCtyzjgr/jgrHjg6bjgq0NCivjg6/jgrUs44OS44OH44KqDQor44Kz44K344Og44OpLOODnuOCteOCtw0KK+ODkuODiuOCvyzjgq3jg6fjgqbjg5jjgqQNCivjg4rjgqvjg6Djg6ks44OO44OW44KqDQor44OV44Kv44KkLOOCv+ODhOODkuOCsw0KK+OCv+OCq+ODgCzjgqvjgrrjgqoNCivjg4rjgqvjg6Djg6ks44OS44Ot44K3DQor44OL44K344Ok44OeLOODnuOCteODkuODrQ0KK+ODiuOCq+ODpOODnizjgr/jgqvjg6TjgrkNCivjg4/jg6rjgqzjg6Qs44OS44Ot44Ki44KtDQor44Oe44K544Oi44OILOODqOOCt+OCqg0KK+ODhuODqeODi+OCtyzjg57jgrXjg47jg5YNCivjg4rjgqzjgq/jg5ws44Kq44K144OgDQor44Oo44K344OOLOOCv+OCq+OCtw0KK+ODouODquOCvyzjg47jg5zjg6sNCivjg4bjg6njgqos44Of44OE44OS44OtDQor44Oo44K344Og44OpLOOCreODqOOCuA0KK+ODr+OCv+ODiuODmSzjgrHjg7PjgrgNCivjg57jg4Tjg6Ljg4gs44Kt44Oo44K3DQor44Kq44K244KtLOODqOOCt+OCouOCrQ0KK+ODkuOCsOODgSzjg5Xjgrjjgq0NCivjg5/jg6Tjg6Ljg4gs44Of44K144KqDQor44Ok44Oe44Kw44OBLOODnuOCueODnw0KK+ODpOODnuODouODiCzjgqjjg4TjgrMNCivjgqvjg4jjgqYs44Kz44Km44Kk44OBDQor44OK44Kr44KkLOOCq+OCuuODnw0KK+ODleOCuOOCvyzjg5Ljg63jgrcNCivjgrnjgqzjg6/jg6ks44Kz44Km44K444On44KmDQor44Kk44K344K244KtLOOCv+OCq+ODpuOCrQ0KK+OCv+ODhOODnyzjg6jjgrfjgqLjgq0NCivjg4rjgqvjgrfjgr8s44Oe44Kz44OIDQor44Kq44K444OeLOODkuODreOCouOCrQ0KK+OCouOCteOCt+OCvyzjg57jgrXjg5Xjg58NCivjg5vjg6rjgqQs44Of44Oo44K3DQor44Kk44OqLOOCseODs+OCpOODgQ0KK+ODleOCuOODnuOCrSzjgr/jg4DjgqLjgq0NCivjgqvjgrjjg6/jg6ks44K344Ol44Km44Kk44OBDQor44OP44K744Ks44OvLOODn+ODhOOCqg0KK+ODleODiuODpOODnizjgqjjg4TjgqoNCivjgq3jg4/jg6ks44K/44Kr44K3DQor44K/44Kx44OALOOCseOCpOOCsw0KK+OCpOOCpOODgCzjgqvjg4rjgqgNCivjg5Xjg6vjg4ks44Oe44K144KqDQor44Oi44OqLOOCt+ODpeOCpuOCpOODgQ0KK+ODleOCr+ODiCzjg4rjgqrjg6QNCivjgqrjgqrjg4/jgrcs44Ki44Kt44OS44OIDQor44Ki44Kq44KtLOODkuODh+OCtw0KK+OCv+OCuOODnizjg5Ljg63jgrcNCivjgqrjgqrjg4Tjgqss44OI44Oi44OS44OtDQor44Ki44Kq44OOLOOCuOODs+OCpOODgQ0KK+OCpOODjuOCpuOCqCzjg5Ljg4jjgrcNCivjgqjjg7Pjg4ks44Oe44K144OS44OtDQor44OS44Ot44K7LOODqOOCt+OCq+ODhA0KK+OCqOODs+ODiSzjgqLjgq3jgqoNCivjgqvjg6/jgqQs44Of44OB44OrDQor44Ki44Kk44K244OvLOODleODiOOCtw0KK+OCs+OCpOOCv+ODkOOCtyzjgq3jg6jjg5Ljg60NCivjgrXjg4jjgqYs44Ok44K544OS44OtDQor44Kr44OO44KmLOOCt+OCsuOCrQ0KK+OCpuOCqOODoOODqSzjg57jgrXjg4jjgrcNCivjgrnjg5/jg6jjgrcs44OS44OH44KqDQor44OS44Ot44K/LOOCteODiOODqw0KK+OCpOODiuODiOODnyzjgqvjgrrjg6jjgrcNCivjgqTjg4jjgqYs44OO44Oq44Kr44OEDQor44Kv44OcLOODkuODh+OCouOCrQ0KK+OCq+ODluODqeOCrizjg4jjgrfjg5Ljg60NCivjgqTjgrHjg4As44Oo44K344OO44OqDQor44K/44Kr44OP44K3LOOCq+OCuuOCqg0KK+OCteOCq+OCpCzjg57jgrXjg5Ljg60NCivjgqvjg4jjgqYs44Ok44K544Kv44OLDQor44K/44Kx44KkLOODpOOCueODpuOCrQ0KK+ODj+ODs+ODgCzjg4jjgqrjg6sNCivjg4rjgqzjg6Qs44Kr44OE44OfDQor44OP44OD44OI44OqLOODkuODreODjuODqg0KK+OCt+ODn+OCuizjg6jjgrfjg4rjgqoNCivjgqTjg57jg4vjgrcs44Oe44K144OIDQor44Kv44Oe44OZLOODnuOCteOCqg0KK+ODnuODgeODgCzjg4TjgqvjgrUNCivjg6Tjgq4s44OB44OP44OrDQor44Kq44OA44OeLOODpuOCreOCqg0KK+OCreOCv+OCuOODnizjgrjjg6Xjg7PjgrMNCivjgr/jg4Hjg5Djg4os44K/44Kv44Ot44KmDQor44OV44K444Oi44OILOOCt+ODpeOCpuOCuA0KK+ODn+OCuuODjizjgqTjgq/jgqoNCivjgqjjgrDjg4Es44Kr44OE44OfDQor44Kr44Ov44OZLOOCteODhOOCsw0KK+ODiuOCq+ODoOODqSzjg4HjgqLjgq0NCivjgqLjgrnjg54s44Kt44Oo44Kr44K6DQor44OP44Og44OpLOODhOODiOODoA0KK+OCpOODiOOCpizjg6bjgqbjgrgNCivjgqTjgrHjgrbjgq0s44K/44Kx44K3DQor44Ok44Oe44K144KtLOODjuODquODpuOCrQ0KK+ODi+OCt+OCtuODryzjgr3jgqbjgrgNCivjg4vjg68s44Ko44Kk44OS44KzDQor44Of44Km44OpLOODkuOCteOCtw0KK+OCq+OCv+OCquOCqyzjgqLjgrHjg58NCivjg4/jg6Tjgrcs44Oe44Kt44KzDQor44Of44K144KtLOOCv+OCseOCtw0KK+OCquODgOOCr+ODqSzjg5Ljg63jg5/jg4ENCivjg5Xjgrfjg58s44OB44Kr44OIDQor44OS44Ot44K/LOOCv+OCq+OCtw0KK+ODj+OCv+ODpCzjg4jjgrfjg6bjgq0NCivjgrXjgqvjgqQs44Om44Km44K4DQor44Kk44OALOOCpOODgeODreOCpg0KK+OCteODiOOCpizjgr/jg4DjgrcNCivjg5vjgrfjg44s44OO44Oc44OrDQor44Kq44Ks44OvLOODiuODhOOCouOCrQ0KK+ODleOCr+OCtuODiCzjg6rjg6XjgqbjgqTjg4ENCivjgr/jg4rjgqss44K744Kk44K4DQor44K144K144KtLOOCreODp+OCpuOCsw0KK+OCquOCuuODgSzjg5/jg4TjgqoNCivjg5Xjg63jg6Ljg4gs44Of44OO44OrDQor44OL44K344Og44OpLOOCt+ODs+ODpA0KK+OCv+OCseODgCzjg4jjg5/jgrMNCivjgr/jgrHjg4jjg58s44Kz44Km44Kk44OBDQor44Kq44Kr44OALOODn+ODgeOCqg0KK+ODnuODiCzjgqvjgrrjg6bjgq0NCivjgrnjgrrjgq0s44Ki44Kt44Oo44K3DQor44Og44Kr44KkLOODqOOCpuOCpOODgQ0KK+OCs+OCrCzjg6TjgrnjgqoNCivjgqvjg4jjgqYs44Kr44K644OfDQor44Oo44Kz44KkLOODleODn+ODiOOCtw0KK+OCpuOCt+OCtOODoSzjg57jgrXjgr/jgqsNCivjgrPjg57jg4Qs44Oo44K344K/44KrDQor44Kk44OI44KmLOODkuOCteOCouOCrQ0KK+OCteODiOOCpizjgrfjg6Xjg7PjgrnjgrENCivjg5Ljg63jgrss44OO44Oq44Oo44K3DQor44K044OfLOOCuOODpeODsw0KK+OCv+ODiuOCqyzjgr/jg4TjgqoNCivjg57jg4Tjg6Ljg4gs44K/44Kk44Kk44OBDQor44OP44Ok44K3LOOCu+OCpOOCuA0KK+OCv+OCq+ODj+OCtyzjgqvjg4Tjg5Ljg60NCivjgqLjg6njgqQs44OI44K344Om44KtDQor44Ob44K3LOOCreODqOOCtw0KK+ODhuODqeODgCzjgrfjgrLjg6sNCivjgqTjgrrjg48s44OP44Or44KqDQor44K544OK44OALOODpOOCueOCuOODreOCpg0KK+OCpOOCuOODnizjg5Xjg5/jgqoNCivjgr/jgqvjg4As44OI44K344OP44OrDQor44Ov44Kr44Oe44OELOOCs+OCpuOCuA0KK+ODhOODgCzjg4jjgrfjg6bjgq0NCivjg5vjgrfjgq/jg54s44Oe44K144OP44OrDQor44Ob44Oz44OALOODkuODreODnw0KK+OCq+ODnuODgCzjgqjjgqTjgrgNCivjg4/jg6Tjgrcs44Of44OE44OS44OtDQor44Kk44Oe44KkLOOCv+ODhOODqw0KK+ODhOODgeODpCzjgqTjgrrjg58NCivjg6/jg4As44Kk44Kv44OIDQor44Oo44K344OALOOCreODn+ODkuODrQ0KK+ODgOODhizjgrjjg6Xjg7MNCivjg4/jgrnjgrMs44Oo44K344OO44OqDQor44K/44Kx44OK44KrLOODkuODreOCouOCrQ0KK+OCquOCr+ODgCzjgqvjgrrjgqoNCivjg5vjgrcs44Om44Km44K544KxDQor44Kr44Oh44OALOOCq+OCquODqw0KK+ODkuOCt+ODjOODnizjg5Ljg63jg5Xjg58NCivjgqrjgqrjg4vjgrcs44OS44Ot44Ki44KtDQor44K144OI44KmLOODnuOCteOCouOCrQ0KK+ODm+OCveOCq+ODryzjgqLjgq3jg6kNCivjg6jjgrfjgrbjg68s44OS44OH44KqDQor44OP44Op44OALOODqOOCt+OCv+OCqw0KK+OCteOCteOCrSzjg4jjg6Ljg6bjgq0NCivjgqTjgqTjg4As44OS44OH44OfDQor44Kt44Ks44OvLOOCs+OCpuOCpOODgQ0KK+OCpOOCseOCqizjg5Ljg63jg6bjgq0NCivjgqLjg6njgqQs44Ok44K544KqDQor44Kr44Kt44Kr44OvLOOCuOODpeODs+OCpOODgQ0KK+OCtOODiOOCpizjgq/jg4vjg4jjgrcNCivjg5/jg6TjgrPjgrcs44Ok44K544KoDQor44OV44K444K/LOOCouODhOODnw0KK+OCr+ODqeOCvyzjg5Ljg63jg6bjgq0NCivjg6Ljg6rjgqrjgqss44Om44Of44KzDQor44Ok44Oe44Km44OpLOODpOOCueODqOOCtw0KK+OCr+ODreODjyzjg6jjgqbjgrMNCivjgqTjgrrjg4/jg6ks44OK44Kq44Kr44K6DQor44K344Ky44OI44OhLOODqOOCt+OCouOCrQ0KK+ODi+OCtyzjg6Tjgrnjg5Xjg58NCivjgqLjgq3jg6Tjg54s44OI44Of44KqDQor44Kk44Kx44OALOOCq+OCuuOCreODgQ0KK+ODouODqizjg6Tjgrnjg58NCivjg5Ljg63jgqvjg68s44Om44Km44K4DQor44K944Oh44OkLOOCouOCreOCqg0KK+OCteOCr+ODqeOCpCzjgqjjg5/jgrMNCivjg5/jgrrjg44s44Kk44K144OgDQor44OG44Op44OALOODiOOCt+OCq+OCug0KK+ODkuODqeODnuODhCzjgrfjgrLjg6sNCivjgqrjgqrjgr8s44K044Ot44KmDQor44OS44Op44Oe44OELOOCqOODhOOCqg0KK+ODi+OCt+ODgCzjg6bjgq3jgqoNCivjg6Djg6njgr8s44OS44OH44Om44KtDQor44Of44K644Kz44K3LOOCseODs+OCpOODgQ0KK+ODiOODn+OCvyzjgr/jgqvjgqoNCivjgqvjg6/jg58s44K744Kk44Kk44OBDQor44K344Kk44OOLOOCt+OCsuOCqg0KK+ODiuOCq+ODoOODqSzjg47jg5bjgqoNCivjgqTjgrfjgqvjg68s44Kz44Km44Kk44OBDQor44Kr44ON44K/44KxLOOCq+ODiuODoQ0KK+OCquOCt+OCsizjgr/jgqTjg4ENCivjgrPjgrjjg54s44Om44Km44K+44KmDQor44OI44OQLOODnuOCs+ODiA0KK+OCpOODr+OCvyzjg5Ljg4fjgqLjgq0NCivjgqrjg44s44Kx44Oz44K4DQor44Kz44K144KrLOODkuOCteOCv+OCsQ0KK+OCq+ODs+ODjizjgqLjgq3jgqoNCivjgqTjg4jjgqYs44OI44K344OE44KwDQor44K/44Kr44KuLOODn+ODgeOCsw0KK+OCv+OCq+ODjizjgrfjg7PjgqTjg4ENCivjgqTjg4rjgqzjgq0s44OG44OE44KqDQor44OO44K244KtLOOCuOODpeODsw0KK+OCv+OCseODgCzjg5Xjg5/jgrMNCivjgrTjg4jjgqYs44K344Oz44K4DQor44Ob44Oq44Kr44OvLOOCq+OCuuODkuODrQ0KK+OCueOCruODouODiCzjg6rjg6fjgqYNCivjgqLjg6njgqQs44K744Kk44K4DQor44OV44K444Ov44OpLOODkuODh+OCueOCrg0KK+ODqOOCt+ODgCzjgrfjg6XjgqbjgqTjg4ENCivjgqrjgrfjg54s44K/44Kx44K3DQor44K044OI44KmLOODgOOCpOOCuOODreOCpg0KK+OCpOOCuuODn+OCteODryzjg6jjgrfjg4jjg6INCivjgqTjg6/jg5bjg4Es44Oe44K144OE44KwDQor44Kk44Oe44Kt44K/LOOCt+ODp+OCpuOCuA0KK+ODoOODqeOCvyzjgrfjg6fjgqbjgrMNCivjgrfjg6Ljg44s44Kr44K644OS44OtDQor44K044Kr44Kk44OBLOOCs+OCpuOCuA0KK+ODpOODnuODouODiCzjg47jg5zjg6sNCivjg4rjgqzjgrfjg54s44K444Ot44KmDQor44Of44K344OeLOODqOOCt+ODkuODrQ0KK+ODpOOCueODiuOCrCzjgqvjg4Tjg58NCivjgqrjg5Xjg4Es44K444Ot44KmDQor44Kz44Og44Kr44KkLOOCreODqOODnw0KK+ODiuOCrOOCteODryzjgr/jgqTjgrvjgqQNCivjgq3jgr/jgqrjgqss44Kr44K644OS44KzDQor44OP44OpLOOCq+OCuuODpA0KK+ODleOCq+ODgCzjg47jg6rjg5Xjg58NCivjgq3jgr/jgqzjg68s44K/44Kr44Ki44KtDQor44Kq44Kq44Oi44OqLOODrOOCpOOCsw0KK+ODj+ODluODgSzjg5Ljg4fjgqvjgroNCivjg5/jg6Tjgrbjgq0s44OS44Ot44OgDQor44K344Ot44K/LOODnuOCteODpuOCrQ0KK+OCs+ODn+ODpCzjgrPjgqbjgrgNCivjg4bjg6njgqos44K444Ot44KmDQor44OL44K344Kw44OBLOODiOOCt+OCouOCrQ0KK+OCq+ODjeOCuuOCqyzjg5Ljg63jgqLjgq0NCivjgrnjgq7jg6Tjg54s44OG44OE44K4DQor44K/44OB44OQ44OK44KtLOODj+ODq+OCouOCrQ0KK+ODouODquOCquOCqyzjg57jgrXjgqvjgroNCivjg6jjg47jg6Ljg4gs44OS44OH44KtDQor44Kv44K544OALOOCq+OCuuOCpOODgQ0KK+OCouODquODpOOCuSzjgqjjg4TjgqoNCivjg4Tjgrjjg6Ljg4gs44OS44K144OIDQor44OV44Kr44OfLOOCuOODpeODs+OCpOODgQ0KK+OCouOCreODpOODnizjgq3jg6jjgrcNCivjg6Ljg4Hjgrrjgq0s44Oo44K344K/44KrDQor44OO44Og44OpLOOCt+ODpeODs+OCuA0KK+ODr+ODgCzjgq3jg6jjgrcNCivjgqrjg4Es44OS44Ot44K3DQor44Og44Op44Oe44OELOODgeOCqOOCsw0KK+ODpOODjizjgqrjgrXjg6ANCivjg6Ljg4Hjgrrjgq0s44Kt44Oo44K3DQor44OS44Op44K/LOODiuOCquOCrQ0KK+ODr+OCq+ODnuODhCzjg4jjgrfjgrXjg4ANCivjgrXjgqvjg6Ljg6os44Kr44Oo44KzDQor44Kz44OQ44Ok44K3LOOCouOCreODkuOCsw0KK+OCpOODnuODoOODqSzjg6jjgrfjg5Ljg60NCivjgqrjgqrjgrnjgqws44Kr44Ko44OHDQor44K/44Kr44Ok44OeLOOCv+OCq+ODiOODqQ0KK+OCreOCv+ODnyzjg5Ljg63jg5Ljg4cNCivjg57jgqjjg4As44K/44Ko44KzDQor44OI44Oi44OOLOOCseODs+OCpOODgQ0KK+OCq+ODluODqeOCrizjg57jgrXjg6bjgq0NCivjg43jgq7jgrcs44Kx44Kk44K+44KmDQor44Ov44OALOODpuODn+OCsw0KK+OCueOCuuOCrSzjg6Tjgrnjg6bjgq0NCivjgrXjg4rjgqgs44Kr44K644Oe44K1DQor44OOLOOCv+ODhOODpA0KK+OCpOOCt+ODkOOCtyzjg5Ljg63jg6bjgq0NCivjg6Tjg57jgrfjgr8s44OE44ON44KqDQor44K544K644KtLOOCq+OCuuODkuODrQ0KK+ODn+ODpOODr+OCrSzjg4jjgrfjg5LjgrMNCivjg57jg4Tjgqbjg6ks44Oo44K344Ki44KtDQor44Kt44K/44Ok44OeLOODqOOCt+ODkuODrQ0KK+ODpOODnuOCsOODgSzjgrjjg6Xjg7PjgrgNCivjg4vjgrfjg6Tjg54s44Kr44OE44K4DQor44Kr44Ov44OQ44K/LOODnuOCteODkuOCsw0KK+ODn+OCq+ODnyzjgrjjg6Xjg7MNCivjgrnjgq7jg6Tjg54s44Kk44K144KqDQor44Kt44K444OeLOODjuODquOCqg0KK+ODkuOCrOOCtyzjgrfjg6XjgqbjgrgNCivjgqLjg5ks44Oe44K144OIDQor44Kk44OO44Km44KoLOODqOOCpuOCsw0KK+ODleOCq+ODgCzjgqLjgq3jgqoNCivjg6Djg6njg57jg4Qs44K444Ol44OzDQor44OS44Op44OQ44OrLOOCv+OCseOCqg0KK+ODgeODp+OCpuODiuODsyzjg6jjgrfjg57jg60NCivjgqvjg6/jg6Djg60s44K144OI44K3DQor44OE44Kv44OALOODn+ODjuODqw0KK+ODn+ODpOODouODiCzjg4jjgrfjg5Ljg60NCivjgrnjgqjjg5Ljg60s44K444Ol44Oz44Kk44OBDQor44K344Op44Kr44OvLOOCs+OCpuOCuA0KK+OCv+ODiuOCqyzjgrHjgqTjgrcNCivjg6TjgrnjgqQs44Oo44K344OO44OWDQor44Kt44Og44OpLOOCq+ODhOOCsw0KK+ODiuOCq+OCrOODryzjgqvjg4Tjg6jjgrcNCivjgq/jgrXjg44s44OI44K344OS44OtDQor44Ki44OA44OBLOODqOOCt+ODkuODrQ0KK+ODiuOCq+ODiOODoizjg6Djg4Tjg58NCivjg57jgrnjg6Ljg4gs44OE44OI44OgDQor44Ov44K/44OM44KtLOODpOOCueODkuODrQ0KK+OCv+OCq+ODj+OCtyzjgqvjg4TjgrgNCivjgrPjg5zjg6os44Of44Kt44KqDQor44Kq44Ks44OvLOOCs+OCpuOCpOODgQ0KK+ODleOCuOODouODqizjg5/jgq3jgqoNCivjgqTjg4/jg6ks44Ko44OfDQor44Ov44K/44OK44OZLOODpuOCpuOCsw0KK+OCpuODqeODmSzjgqTjgrXjg6ANCivjg5/jgqbjg6ks44Of44OE44OrDQor44OK44Kr44KkLOOCseOCpOOCpOODgQ0KK+ODr+ODqeOCt+ODiizjgrfjgrLjg6sNCivjg5Xjgq/jg4rjgqws44Oo44K344Kr44K6DQor44Kq44Kq44OE44OcLOODqOOCt+OCouOCrQ0KK+ODqOOCt+ODgCzjg5/jg47jg6sNCivjg4/jg6Tjg58s44Kr44OE44OS44KzDQor44OO44Og44OpLOODnuOCteOCq+OCug0KK+ODkuODqeOCpCzjg6jjgrfjg6bjgq0NCivjgrfjg57jg4As44Oe44K144KoDQor44K544K644KtLOODiuOCquODiOOCtw0KK+ODhuODqeOCt+ODnizjgq3jg5/jg5LjgrMNCivjgrfjgrrjg4/jg6ks44Os44Kk44KzDQor44Ok44Oe44OI44OkLOOCq+OCuuODkuOCsw0KK+OCquOCruODjizjg5Ljg63jgqoNCivjg57jg4TjgrDjg54s44K344Ky44ObDQor44Kt44K/44KkLOODiOOCt+ODkuOCsw0KK+OCouOCq+ODgCzjgrfjgrrjgqoNCivjgr/jgrHjg6jjgrcs44K744Kk44OO44K544KxDQor44OS44Ot44OOLOOCveOCquOCuOODow0KK+OCt+ODnuODoOODqSzjg4jjg57jgrUNCivjg6rjg6XjgqbjgrQs44K344Ol44Oz44Kk44OBDQor44Kv44OL44Ko44OALOODnuOCreOCqg0KK+OCquOCquODhOOCqyzjg5vjgrPjgq8NCivjgqTjgrHjgqzjg58s44OS44OH44OI44K3DQor44Kr44ON44Oe44OELOOCq+ODjeODkuODhw0KK+OCquOCquOCrOODr+ODqSzjg6jjgrfjg47jg5YNCivjgrnjgrrjgq0s44K/44Kr44K3DQor44OG44Op44OALOOCu+ODhOOCsw0KK+OCq+ODr+OCteOCrSzjg4bjg4TjgrgNCivjgqrjgrfjg6Tjg54s44Oo44K344OS44K1DQor44Kr44Ov44Kr44OfLOOCt+OCsuOCrQ0KK+ODiuOCq+ODoOODqSzjg4jjgrfjgqLjgq0NCivjg5/jgr/jg4ss44OI44K344OS44KzDQor44Kz44Oe44OELOODkuODreOCv+OCqw0KK+OCouOCq+OCpOODryzjg4jjgrfjg5LjgrMNCivjgqTjg4HjgqQs44OV44Of44OkDQor44OV44Kv44Ok44OeLOODnuOCteOCouOCrQ0KK+OCr+ODieOCpizjg6jjgrfjg4bjg6sNCivjg57jg4Tjgrfjgr8s44K344Oz44K4DQor44OL44K344Kr44OvLOODpuOCreODkuODrQ0KK+OCouODnuOCrOODnyzjgrfjg7MNCivjg6Tjgrfjgq0s44Ki44Kk44Kk44OB44Ot44KmDQor44Ov44OALOOCouODhOOCsw0KK+ODnuOCueODgCzjg4jjg6LjgrMNCivjg6jjgrfjg6Djg6ks44Om44Km44K4DQor44Kq44OALOOCt+ODs+OCuA0KK+ODqOOCs+ODpOODnizjgr/jgqvjg5Xjg58NCivjgqTjg4jjgqQs44Om44Oq44KzDQor44K544K644KtLOOCq+ODhOODkuODrQ0KK+ODiuOCrOODj+ODnizjg5Ljg63jg6bjgq0NCivjg6Tjgrbjgq0s44OG44Kk44K+44KmDQor44Ok44K444OeLOOCreODqOOCtw0KK+ODoOOCq+OCqOODgCzjgrXjg4jjg6sNCivjg4rjgqvjg6Djg6ks44K/44OE44Ki44KtDQor44Ok44Oe44Og44OpLOOCs+OCpuOCpOODgQ0KK+ODjuODouODiCzjg4jjgrfjg6bjgq0NCivjg6Tjg57jgrbjgq0s44OI44K344OS44KzDQor44K144OI44KmLOODiOOCt+ODpA0KK+OCpOODjuOCpuOCqCzjg5Ljg63jg6bjgq0NCivjgqrjgqvjg44s44OS44OH44KqDQor44OK44Kr44OL44K3LOODj+ODq+ODkuOCtQ0KK+OCpuOCqOODgCzjg5Ljg63jg58NCivjgqLjgqTjgrbjg68s44Ki44Kt44KqDQor44Ki44Op44KkLOODiOODouODiuODqg0KK+ODiuOCrOOCpOOCtyzjgqvjg4Tjg58NCivjg4/jgrPjgqQs44Oe44K144KqDQor44Kv44K544Oi44OILOOCv+OCq+ODqOOCtw0KK+OCouODquODiOODnyzjgrjjg4Tjg63jgqYNCivjg4/jg6ks44K/44Of44KqDQor44Ob44Oz44OeLOODnuOCteODj+ODqw0KK+ODj+OCt+ODouODiCzjg5/jg4Hjg4/jg6sNCivjg4/jgrfjg6Ljg4gs44Oe44K144KqDQor44Kq44Kq44OM44OeLOOCpOOCteOCqg0KK+ODj+ODiuOCrSzjgrfjg7PjgqTjg4Hjg63jgqYNCivjg4/jgrfjg6Ljg4gs44Ki44Kt44KzDQor44K144Kv44Op44K244OvLOODkuODh+ODiOOCtw0KK+OCouOCq+OCrizjg6Tjgrnjg5Ljg4gNCivjgqLjgq3jgrrjgq0s44Oe44K144OI44K3DQor44Ki44Oz44OJ44KmLOODkuODreOCrQ0KK+OCouODqeOCpCzjgr/jg57jgqoNCivjgqLjgrXjg6Djg6ks44Kr44OE44OfDQor44OB44OQLOOCouOCsw0KK+OCqOOCsOODgSzjg6bjgq3jgr/jgqsNCivjg5Xjg4Hjg44s44OI44Kq44OrDQor44OV44K444Oe44OrLOODkuOCteODiA0KK+ODleOCuOOCteODryzjg47jg6rjgqoNCivjg5Xjgqvjg4As44OV44Of44OS44OtDQor44OV44Kv44KkLOODkuODreOCtw0KK+ODleOCr+ODiOODnyzjg6rjg6XjgqbjgrXjgq8NCivjgq7jg54s44Kr44K644Oo44K3DQor44OP44Ku44Ov44OpLOOCpOODgeODreOCpg0KK+ODj+ODqSzjgq3jg6jjgr/jgqsNCivjg4/jg6vjg4os44K/44Kr44Ki44KtDQor44OP44OE44OfLOOCouOCuuOCtQ0KK+ODj+ODpOOCuyzjgrfjg7PjgrQNCivjg4/jg6Tjg4Qs44OS44Ot44K3DQor44OS44Op44Kq44KrLOODnuODpuODnw0KK+ODkuODreOCtyzjg47jg5bjgrMNCivjg5vjgrfjgrMs44Oe44K144OS44OtDQor44Kk44OB44Kr44OvLOODnuOCteODqw0KK+OCpOOCrOODryzjgq3jg6jjgrcNCivjgqTjgqTjgrrjgqss44Ki44Oq44K1DQor44Of44OE44Oi44OILOODkuODreOCv+OCqw0KK+OCpOODnuODoOODqSzjg5Ljg63jg6bjgq0NCivjgqTjg4rjg58s44OS44Ot44Of44OBDQor44Kk44OO44Km44KoLOOCv+OCseOCtw0KK+OCpOOCuyzjg6bjgq3jgqoNCivjgrnjgq7jg4/jg6ks44OS44Ot44K/44KrDQor44Kk44K344Oi44OILOOCseODs+OCuA0KK+OCpOOCt+OCuuOCqyzjg4jjgqrjg6sNCivjgqTjg4jjgqYs44Oo44Km44K4DQor44Kr44Of44Kr44OvLOOCv+ODgOODn+ODhA0KK+OCpOODr+OCteOCrSzjgrHjgqTjgrMNCivjgqTjgrrjg58s44Of44OvDQor44Kr44Oe44OALOOCv+OCq+ODkuODrQ0KK+OCv+OCseOCpuODgSzjg5/jgq0NCivjg47jg6Djg6ks44Ko44Of44KzDQor44Kr44K/44OOLOODhuODq+ODkuOCtQ0KK+OCq+ODiOOCpizjgr/jgqvjgrcNCivjgqvjg6/jg4As44OS44Ot44Om44KtDQor44Kk44K344KkLOODpOOCueOCrQ0KK+OCq+ODr+OCt+ODnizjgqjjgqTjgrMNCivjgq3jgq/jgqvjg68s44Om44Kr44OqDQor44Kt44K3LOOCv+OCr+OCtw0KK+OCs+ODkOODpOOCtyzjg4bjg4Tjg6QNCivjgrPjg5Djg6Tjgrcs44Kr44K644OS44KzDQor44Kz44Ok44OeLOOCouOCreODqQ0KK+OCs+OCr+ODnCzjg6jjgqbjgrMNCivjgrPjg7Pjg4ks44Of44KoDQor44Kz44K344KqLOODnuOCteODiOOCtw0KK+OCr+ODnCzjg4Tjg4jjg6ANCivjg5vjgrfjg44s44OI44K344OkDQor44Kv44K144Kr44OvLOOCseOCpOOCpOODgQ0KK+OCr+OCueODnyzjg6bjgr/jgqsNCivjg57jgq3jg44s44OB44OS44OtDQor44Oe44Or44Ok44OeLOODnuOCs+ODiA0KK+ODiuOCq+ODoOODqSzjg4Hjg4jjgrsNCivjg57jg4Tjg6Ljg4gs44Ki44OE44K3DQor44Oh44K244OvLOODkuODiOOCtw0KK+ODn+ODjSzjg57jgrXjg6TjgrkNCivjg5/jg4gs44OO44OW44KqDQor44Of44Ok44Oi44OILOOCt+OCsuODqw0KK+ODn+ODpOOCtuODryzjgqvjg4Tjg58NCivjg5/jgrrjgr8s44Kx44Oz44K4DQor44Oi44OqLOODj+OCuuOCrQ0KK+ODouODquODouODiCzjg57jg4rjg5YNCivjg6Ljg63jgqrjgqss44Of44OE44OS44OtDQor44Ki44Oz44OJ44KmLOOCpOODr+OCqg0KK+ODn+ODp+OCpuOCrCzjgr/jgqvjg6bjgq0NCivjg4rjgqzjgqos44Ki44Kt44OS44OtDQor44OK44Ks44K7LOOCueOCueODoA0KK+ODiuOCpOODiOOCpizjgrXjg4Djg5/jg4QNCivjg4rjgqvjgrjjg54s44OI44Kq44OrDQor44OK44Kr44Oe44OrLOODiOOCt+OCsw0KK+ODiuOCq+ODoOODqSzjg6rjg6XjgqbjgqTjg4ENCivjg4rjgqvjg4vjgrcs44OS44OH44OIDQor44OK44Kr44OOLOODhOOCq+OCtQ0KK+OCt+ODiuODgCzjgqLjgq3jg6kNCivjg4rjg6rjgr8s44K/44Kv44K4DQor44OL44Kk44Ok44OeLOODkuODreOCtw0KK+ODi+OCt+OCq+ODryzjgqLjgq3jg6kNCivjg4vjgrfjgrrjgqss44OI44K344OkDQor44OS44OOLOOCq+OCuuODpuOCrQ0KK+ODj+OCu+OCrOODryzjg5/jg4TjgqLjgq0NCivjgqrjgqzjgr8s44OS44OI44K3DQor44Og44K144K3LOODn+ODhOODqw0KK+OCquOCquOCr+ODnCzjg4/jg6vjgrcNCivjgqrjgqrjgrXjg68s44OS44OH44KtDQor44Kq44Kq44K/LOOCt+ODs+OCuA0KK+OCquOCquODr+ODgCzjg5Ljg63jg47jg6oNCivjgqrjgqvjg4As44K/44Kr44Oo44K3DQor44Kq44Kr44Oi44OILOODkuODreOCtw0KK+OCquOCreODouODiCzjg57jgrXjg5LjgrMNCivjgqrjg4vjg4Tjgqss44Oe44K144Ki44KtDQor44Kq44K144KtLOOCv+OCq+OCtw0KK+OCteOCqOOCrSzjg6jjgrfjg5Ljg60NCivjgrXjgqvjgqQs44Oq44On44Km44K4DQor44K144Kr44KtLOOCreODp+OCpuOCsw0KK+OCteOCq+OCpuOCqCzjgr/jgqvjg6bjgq0NCivjgrXjg44s44OI44K344OV44OfDQor44K144OI44KmLOODpOOCueOCtw0KK+OCteODiOOCpizjgrXjg4jjgrcNCivjgrXjg6/jgqQs44Of44OB44OS44OtDQor44K744Kt44OP44OpLOOCouOCreODqQ0KK+OCu+OCt+ODoizjgrfjg6XjgqbjgqTjg4ENCivjgrfjg5Djgr8s44OG44OE44Ot44KmDQor44Og44Op44K/LOODquODpeOCpuOCv+ODreOCpg0KK+OCt+ODn+OCuizjg4/jg6Tjg4jjgrcNCivjgrfjg6LjgqrjgrUs44K/44Kx44K3DQor44K344OO44OALOODj+ODhOOCqA0KK+OCt+ODqeOCpCzjgqvjgrrjg5LjgrMNCivjgrnjg4njgqYs44Oi44OI44Om44KtDQor44K544Ku44K344OeLOODnuOCteODqw0KK+OCueODpOODnizjg4jjg6Ljg47jg6oNCivjgrnjgrrjgq0s44Om44K/44KrDQor44K344Ol44Kv44OkLOOCuOODpeODs+OCpOODgQ0KK+OCv+OCsOODgSzjg4rjgqrjg6bjgq0NCivjg5/jg6Tjg6Ljg4gs44K/44Kr44K3DQor44K/44Kr44OP44K3LOOCseODs+ODquODpeOCpg0KK+OCv+OCq+ODj+OCtyzjg6bjgq3jgqgNCivjgr/jgqvjg4/jgrcs44Kk44OB44Ot44KmDQor44K/44Kr44K7LOOCt+OCsuOCrQ0KK+ODn+OCq+ODnyzjgrHjgqTjgrnjgrENCivjgr/jgrHjg6Tjg54s44OI44K344Ki44KtDQor44K/44OK44OZLOODkuODreODpuOCrQ0KK+OCv+ODiuOCqyzjg5Ljg63jgrMNCivjgr/jg4rjgqss44OO44Oq44Ki44KtDQor44K/44OL44Kw44OBLOOCuOODpeODs+OCsw0KK+OCv+ODhuOCpOOCtyzjg4rjgqrjg6QNCivjg4bjg6vjgq3jg4os44Ki44Kt44OoDQor44OI44Of44Kq44KrLOODiuOCquOCrQ0KK+ODiOODqOODgCzjg57jgrXjg5LjgrMNCivjg4Tjg4Hjg6Qs44Oo44K344OS44OtDQor44OE44K4LOODkuODreOCtw0KK+ODhOODjuOCrOOCpCzjg6Tjgrnjg47jg6oNCivjgqbjg4Hjg4As44Oe44K144OV44OfDQor44Km44OALOOCseOCpOOCuA0KK+OCpuOCqOODj+ODqSzjgrfjg7PjgrgNCivjgqbjgqjjg44s44Om44Km44K4DQor44Km44Oh44OP44OpLOODnuOCs+ODiA0KK+OCpuOCueOCpCzjgrPjgqbjg5jjgqQNCivjg6/jg4As44Oo44K344Ki44KtDQor44Ov44K/44OK44OZLOOCteODiOOCtw0KK+ODpOODj+OCrizjg4rjgqrjg5Xjg58NCivjg6Tjg57jg4As44OI44K344KqDQor44Ok44Oe44Kw44OBLOODiOODouOCq+OCug0KK+ODpOODnuODouODiCzjgrHjg7Pjgrjjg63jgqYNCivjg6Tjg57jg6Ljg4gs44Oe44OK44OWDQor44Ok44Oe44K344K/LOODquODs+OCuOODpQ0KK+ODpOODnuOCtuOCrSzjg5Ljg4jjgrcNCivjg6Tjgrnjg4As44Oe44K144OfDQor44Oo44OJ44Ks44OvLOODjuODquOCqg0KK+ODqOODreOCuuODpCzjg4rjgqrjg5LjgrUNCivjg6jjgrfjg57jg4Qs44OB44OP44OrDQor44Ko44OA44OS44OtLOODn+ODieODqg0KK+OCs+OCuOODnizjg6Tjgrnjg5LjgrUNCivjgqrjgqzjg68s44Oh44Kw44OfDQor44K/44Kr44K7LOODnuODn+OCsw0KK+ODleOCr+OCvyzjgqvjgrrjg58NCivjgr/jgrDjg4Es44OS44Ot44OgDQor44Ki44K144OOLOODiOOCt+ODkuOCsw0KK+ODleOCuOOCpCzjgrHjg7PjgrgNCivjg5Xjgrjjg6/jg6ks44Kz44Km44K4DQor44K044OI44KmLOODkuODreOCq+OCug0KK+ODj+ODpOOCtyzjg4jjgrfjgqLjgq0NCivjg5Ljg6njgqQs44OS44Ot44K/44KrDQor44Kk44OB44KkLOOCt+OCsuODpuOCrQ0KK+OCpOOCseODgCzjgqTjgq/jgrjjg63jgqYNCivjgqTjgrfjg57jg6ss44Of44OvDQor44Kk44OI44KmLOODhuODhOODpA0KK+OCq+OCsuODpOODnizjg4Tjg6jjgrcNCivjgqvjgrXjg54s44OO44Oq44Oe44K1DQor44Kr44OI44KmLOOCs+OCpuOCvw0KK+OCreOCr+ODgSzjg4jjg6LjgqLjgq0NCivjgq3jgr/jgqzjg68s44Of44OB44OP44OrDQor44Kz44OQ44Ok44K3LOOCs+OCpuOCv+ODreOCpg0KK+OCs+ODs+ODiSzjg47jg6rjgrMNCivjgq/jg4njgqYs44OP44Ok44OIDQor44Kv44K144OV44KrLOOCt+ODjuODlg0KK+ODnuODhOODgOOCpOODqSzjg57jgq0NCivjg5/jgq/jg4ss44Ok44K544K3DQor44Of44Ok44OBLOOCv+OCq+ODleODnw0KK+ODn+ODpOOCtuODryzjg5Ljg63jgq0NCivjg6Ljg6rjgr8s44Kv44Or44OfDQor44Og44Ot44K+44OOLOODkuODreOCouOCrQ0KK+ODiuOCq+ODn+ODgSzjgrfjg6fjgqYNCivjg4vjgrfjg6Djg6ks44K344Oz44OkDQor44Kq44Ks44OvLOOCv+OCq+OCtw0KK+OCquOCquOCqCzjg57jgrXjg5/jg4ENCivjgqrjgqrjgr8s44K/44Kr44K3DQor44Kq44Kr44Ok44OeLOODn+ODhOODqOODqg0KK+OCteOCpOODiOOCpizjgr/jgqvjg47jg5YNCivjgrXjg44s44K/44Kv44OkDQor44K144OI44KmLOOCv+OCq+OCtw0KK+OCt+OCpCzjg5/jgrXjgrMNCivjgrfjg7Pjgq3jg6XjgqYs44Oe44K144Om44KtDQor44K544Ku44Ok44OeLOOCreODqOOCv+OCqw0KK+OCv+OCq+OCrizjg6jjgrfjgqoNCivjgr/jgrHjgqbjg4Es44Kr44Ob44OrDQor44K/44OK44KrLOODjuODluOCsw0KK+OCv+ODq+OCteODryzjgqLjgq3jgrMNCivjg4jjg6Ljg44s44Kr44K644OfDQor44Ov44K/44OK44OZLOODnuOCteODiOOCtw0KK+ODpOODnuODouODiCzjg5Ljg4fjg4gNCivjg6Tjg57jgrbjgq0s44OV44Of44OODQor44Oo44ON44Of44OELOODnuOCs+ODiA0KK+ODpuODqizjg4jjg6LjgqoNCivjg57jg4TjgrDjg54s44OV44Of44KzDQor44Ki44K444OeLOODpOOCueOCouOCrQ0KK+OCouODnuODjizjg4HjgqLjgq0NCivjgqLjgqrjgq0s44Oo44K344KzDQor44Ki44Kq44KtLOODiuOCquODkuOCtQ0KK+OCouODqeOCrSzjgqvjg4TjgrgNCivjgqLjgrXjgq/jg6ks44K/44OE44KqDQor44Ki44K644OeLOODquOCqA0KK+OCteOCv+OCsSzjgrHjgqTjgrMNCivjg4DjgqTjgqos44OS44OH44KtDQor44OK44Kr44Og44OpLOOCv+OCq+OCsw0KK+ODleOCuOOCpCzjgr/jg4Tjg47jg6oNCivjg5Xjgrjjgqrjgqss44OG44OE44Ot44KmDQor44OV44Kv44KkLOOCs+OCpuOCuA0KK+ODleODiuODgCzjg6bjgqbjgrMNCivjgrTjg4jjgqYs44Kr44Kk44OB44Ot44KmDQor44OP44Oe44OALOODqOOCt+ODnw0KK+OCteODiOOCpizjgrvjgqTjgrQNCivjg4/jg6rjg54s44OK44Kq44KtDQor44OP44K744Ks44OvLOOCouOCreODkuOCsw0KK+ODj+OCvyzjgrfjg7PjgqTjg4Hjg63jgqYNCivjg4/jg4Pjg4jjg6os44Om44KtDQor44OP44Ok44OfLOOCueODn+ODkuODiA0KK+ODj+ODpOOCtyzjg57jgrXjg47jg6oNCivjg5Ljgqjjg4As44Of44OB44Kr44K6DQor44OS44Kq44KtLOODiOOCpuODoeOCpA0KK+ODm+ODgCzjg5Ljg63jgq0NCivjg5Ljg63jgrnjgqgs44K444Ol44Oz44KzDQor44OS44K344OALOODkuODreOCtw0KK+ODm+ODs+OCtOOCpizjg57jgrXjg4gNCivjg5vjg6rjgqgs44Ki44Kt44OO44OqDQor44Ob44K344OKLOOCs+OCpuOCpOODgQ0KK+OCpOODgeOCq+ODryzjg5Ljg4jjgrcNCivjgqTjgqzjgr8s44Ko44Kk44Kk44OB44Ot44KmDQor44Kk44Kk44K644KrLOODnuOCs+ODiA0KK+OCpOOCseODgCzjgr/jgqvjg6bjgq0NCivjg5vjgr3jgqQs44Kx44Oz44K/44Ot44KmDQor44Kk44OOLOOCuOODpeODsw0KK+OCpOODjuOCpuOCqCzjg5Xjg5/jg47jg6oNCivjgqrjgqrjg6Ljg6os44Kx44Oz44Kk44OB44OtDQor44Kk44K344KkLOOCseOCpOOCuOODreOCpg0KK+OCpOOCt+OCpCzjg6TjgrnjgrcNCivjgqTjgrfjg4Tjgqss44OI44K344Om44KtDQor44Kk44K944Ks44KkLOODpuOCpuOCsw0KK+OCpOODiOOCpizjgrXjg4jjgrcNCivjgqTjg6/jg4/jgrcs44Om44Km44KzDQor44Kk44Ov44K144KtLOODkuODreODpuOCrQ0KK+OCq+OCrOODlizjgrfjg7Pjgrjjg63jgqYNCivjgqvjg57jg5vjg6os44OI44Oi44OS44KzDQor44Kr44Of44OkLOODjuODluODpuOCrQ0KK+OCq+ODiuOCpCzjg47jg6rjgrMNCivjgqvjg7Pjg4As44OB44KoDQor44Kr44OO44KmLOOCv+OCseOCtw0KK+OCv+ODnuOCv+ODiyzjgrfjg54NCivjgqvjg4jjgqYs44OS44Ot44KtDQor44Kr44OI44KmLOOCuOODpeODs+OCsw0KK+OCq+ODr+OCsOODgSzjgrPjgqbjgrgNCivjgqvjg6/jg6Djg6ks44K344Ol44Km44K4DQor44Kr44Ov44K344OeLOODjuODluOCsw0KK+OCreOCr+ODgSzjgqTjg4Hjg63jgqYNCivjgq3jg6Djg6ks44K/44Kr44OS44K1DQor44Kt44K3LOODiuOCquOCrQ0KK+OCreOCv+OCrOODryzjg4rjgqrjg58NCivjgq3jg6jjg4/jg6ks44OE44OI44OgDQor44Kz44OQ44Ok44K3LOOCseODs+OCuA0KK+OCs+ODgOODnizjg6Tjgrnjg5Ljg60NCivjgrPjgqTjg68s44OI44Oi44Om44KtDQor44Kz44K444OeLOOCteODiOOCtw0KK+OCs+ODs+ODiSzjgrHjg7PjgqTjg4ENCivjgq/jg5ws44OK44Kq44KtDQor44Kv44Oe44Kv44OpLOOCseODs+OCpOODgQ0KK+ODkuODqeOCpCzjgrPjgqbjgrgNCivjgq/jg63jg4As44Ki44OE44K3DQor44Kv44Ot44K144OvLOOCqOOCpOOCuOODreOCpg0KK+ODnuOCqOODgCzjgrXjg4jjgrcNCivjgrfjg5bjgr/jg4ss44Kz44Km44K4DQor44Oe44K544OALOODpuOCpuOCsw0KK+ODj+ODqSzjgrHjg7PjgrgNCivjg57jg4TjgqQs44K344Oz44K4DQor44Oe44OE44Oi44OILOODkuODreOCtw0KK+ODnuODhOODiuODnyzjg6jjgrfjgrMNCivjg57jg4Tjgqrjgqss44K344Oz44K0DQor44Oe44OE44Ok44OeLOOCouOCreODqQ0KK+ODn+OCq+ODnyzjg5Ljg4fjgqoNCivjg5/jg4rjg58s44Ki44Kt44OpDQor44Of44K/44Og44OpLOODnuOCteODiOOCtw0KK+ODn+ODhOODnizjgqvjgrrjg5Ljg4gNCivjg5/jg6Tjgrfjgr8s44OS44Ot44Om44KtDQor44OP44K344Kw44OBLOOCt+OCsuOCrQ0KK+ODn+OCuuODjizjg4jjgrfjg6bjgq0NCivjg6Ljg6os44Oe44K144K3DQor44Oi44OqLOODkuODreOCq+OCug0KK+ODouODquODpCzjg6Djg4TjgqoNCivjg6Djg43jgqvjgr8s44Kr44K644Oo44K3DQor44Og44Op44K/LOODpuOCreODouODiA0KK+ODn+ODp+OCpuOCuOODsyzjg5/jg4HjgqoNCivjg4rjgqzjgrfjg54s44Oo44K344Kr44K6DQor44OK44Kk44OI44KmLOODnuOCteOCrQ0KK+ODiuOCq+OCuOODnizjg4bjg6vjg58NCivjg4rjgqvjg6Ljg4gs44OS44Ot44Kr44K6DQor44OK44Kr44Og44OpLOODpuOCpuOCuA0KK+ODiuOCq+ODoOODqSzjgrHjg7Pjgr8NCivjg4rjgqvjg6Qs44Ov44K/44OrDQor44OK44OzLOOCseOCpOOCueOCsQ0KK+ODiuODiOODqizjgrHjg7Pjg6QNCivjg4vjgqTjgrbjg68s44Oo44K344OO44OqDQor44OL44K344OALOODpOOCueOCqg0KK+ODi+OCt+ODiizjgq3jg6jjgrcNCivjg4vjgrfjgrbjg68s44Oo44K344OS44OtDQor44OO44Ks44OvLOODkuODreODpA0KK+ODjuODoOODqSzjg57jgrXjg5Ljg60NCivjgqrjgqzjgrXjg6/jg6ks44Kr44K644OG44OrDQor44Kq44Ks44OvLOODpOOCueODjuODqg0KK+OCquODj+OCtyzjgrXjg4jjgrcNCivjgqrjgqrjg44s44OS44Ot44Ok44K5DQor44Kq44K344OeLOODhOODiOODoA0KK+OCquOCquOCv+OCrSzjg5Xjg4jjgrcNCivjgqrjgqrjg4Tjgqss44Ko44Kk44KtDQor44Kq44Kq44OkLOODoOODjeOCqg0KK+OCquOCq+ODgCzjg5Ljg63jg6bjgq0NCivjgqrjgqvjgrbjgq0s44Kz44Km44K/44Ot44KmDQor44Kq44Kq44OfLOOCouODpOOCsw0KK+OCquODjuODh+ODqSzjg57jgrXjg5LjgrMNCivjgqrjg44s44K/44Kr44Ki44KtDQor44Kq44K244KtLOODqOOCt+ODnuOCtQ0KK+OCteOCpOODgCzjg6Ljg6LjgrMNCivjgrXjgqvjgrDjg4Es44Kz44Km44K4DQor44K144Kr44KkLOODiuOCquOCrQ0KK+OCteOCsyzjgqLjgqvjgrcNCivjgrXjg7Pjg5ks44Oe44Kz44OIDQor44K144K144KtLOODpuOCv+OCqw0KK+OCteOCv+OCsSzjg4jjgrfjgq0NCivjgrXjg4jjgqYs44Om44Kt44K/44KrDQor44OS44Op44OOLOODkuODreOCouOCrQ0KK+OCteODr+ODoOODqSzjg5Ljg63jgrcNCivjgrvjgq3jg40s44Kr44K644Ki44KtDQor44K344OQ44OP44OpLOOCq+OCuuODjg0KK+OCt+ODkOOCtuOCrSzjg57jgrXjgrMNCivjgrfjg54s44Kz44K544KxDQor44K344Of44K6LOOCseOCpOOCueOCsQ0KK+OCt+ODouOCq+ODr+ODmSzjgqLjgq3jg5Ljg60NCivjgrfjg47jgrbjgq0s44OS44Ot44K3DQor44K344Op44OP44OeLOODn+ODgeODkuOCtQ0KK+OCt+ODp+OCpuODiuOCtCzjgr/jgqvjgrfjgrINCivjgrnjg4As44Oh44Kk44K444Ot44KmDQor44K544Ku44Oi44OILOODn+OCqw0KK+OCueOCruOCvyzjgr/jgqvjg6bjgq0NCivjgrnjg5/jg4As44Ki44OE44K3DQor44K544K644KtLOODnuOCteODleODnw0KK+OCueOCuuOCrSzjgrfjgrLjg6sNCivjgrnjgrrjg44s44Kr44OE44OV44OfDQor44K/44Kw44OBLOODn+ODpuOCrQ0KK+OCv+OCq+OCrizjg4jjgrfjgqvjgroNCivjgr/jgqvjg4/jgrcs44OS44Ot44Of44OBDQor44K/44Kr44OP44K3LOODkuODh+ODjuODqg0KK+OCv+OCq+ODj+OCtyzjgrHjg7PjgqTjg4ENCivjgr/jgqvjg44s44Of44Kt44KzDQor44K/44Kr44K344OeLOOCv+ODgOOCtw0KK+OCv+OCseODgCzjgqTjgrrjg58NCivjgr/jgrHjg4rjgqss44Kx44Oz44Kk44OBDQor44K/44Kx44Ok44K5LOODrOOCpOOCuA0KK+OCv+ODoOODqSzjg5Ljg63jg6bjgq0NCivjgr/jg4rjgqss44Kz44Km44Kk44OBDQor44K/44OK44KrLOOCv+OCq+ODqOOCtw0KK+OCv+ODiuOCqyzjg4jjgqrjg6sNCivjgr/jg4vjgrDjg4Es44Kr44OE44OS44KzDQor44OG44Op44Oe44KoLOOCu+OCpOOCpOODgeODreOCpg0KK+ODiOOCreODryzjg4HjgqjjgrMNCivjg4jjg6rjgrTjgqgs44K144OA44Om44KtDQor44OE44OB44K/44OLLOODkuODh+OCrQ0KK+ODhOOCuOODoOODqSzjgr/jgqvjgrcNCivjg4Tjgqvjg6Ljg4gs44Kx44Oz44K/44Ot44KmDQor44OE44OE44OfLOODnuOCteODjuODqg0KK+OCpuODgeODjizjgrXjg4jjgrcNCivjg43jgros44OI44K344Ki44KtDQor44Km44Ko44OE44OcLOODqOOCt+OCv+OCqw0KK+OCpuOCquOCuuODnyzjgrXjg7Pjg5rjgqQNCivjg6/jg4As44Of44OE44OO44OqDQor44Ov44K/44OK44OZLOODqOOCt+OCrQ0KK+ODpOODlizjgrPjgqbjgrgNCivjg6Tjg57jg4As44Om44Km44KzDQor44OS44K144OOLOODquOCqw0KK+ODpOODnuOCsOODgSzjg47jg6rjg6bjgq0NCivjg6Tjg57jgqvjg68s44Om44Kt44KzDQor44Ok44Oe44Oi44OILOODiuOCquODiA0KK+ODpOODnuODouODiCzjgrfjg7PjgqTjg4ENCivjg6Tjg57jgqbjg4Es44K344Oz44Kk44OB44Ot44KmDQor44Ok44Oe44K244KtLOOCv+OCq+OCqg0KK+ODj+OCruODr+ODqSzjg5/jgq3jgqoNCivjg6jjg43jgrbjg68s44Ko44OqDQor44Oo44K344OALOOCteODgeOCsw0KK+ODqOOCt+ODnuODhCzjgrHjg7Pjgr/jg63jgqYNCivjgrrjgrcs44Om44Kt44KqDQor44Kk44Ov44Kr44OvLOOCveOCpuOCv+ODreOCpg0KK+OCpOOCt+ODnuODhCzjg5Ljg63jg6TjgrkNCivjgqLjg5ks44Ko44Kk44Kk44OBDQor44Ki44Kr44Kk44K3LOOCqOOCpOODgQ0KK+OCouODnuOCrOOCvyzjgr/jgqvjgrcNCivjgqLjg7PjgrbjgqQs44Oe44K144OS44OHDQor44Ki44Op44KtLOODiOOCt+ODn+ODhA0KK+OCouOCt+ODgCzjgrXjg4jjgrcNCivjg4Hjg6fjgqYs44Ko44Kk44K4DQor44OJ44KkLOOCseODs+OCpOODgQ0KK+OCqOODjuODouODiCzjgq3jg6jjg58NCivjg5XjgrjjgqQs44K144OE44KtDQor44OV44K444K/LOOCv+OCq+OCtw0KK+ODleOCr+ODoOODrSzjgr/jgqvjgrcNCivjg5Xjg4rjgq0s44OK44Kq44KtDQor44OV44Or44OkLOODiOODouODpA0KK+OCpOODr+OCteOCrSzjgrXjgqjjgrMNCivjgqTjg4jjgqYs44K344Ot44KmDQor44OP44OALOODkuODh+OCouOCrQ0KK+ODj+ODiuODiSzjg5/jg47jg6sNCivjg4/jg6njg4As44K/44Kx44K3DQor44OP44Op44K+44OOLOODjuODluODkuODrQ0KK+ODj+OCt+ODouODiCzjgrXjg4jjgrcNCivjg4/jg4Pjg4jjg6os44Oe44Kz44OIDQor44OP44Ok44K3LOOCv+OCq+ODqOOCtw0KK+ODkuOCrOOCtyzjgqvjgrrjgqoNCivjg5Ljg6njg44s44OS44Ot44KzDQor44OS44Oq44KtLOOCseODs+OCpOODgeODrQ0KK+ODm+ODs+ODgCzjgrXjg4rjgqgNCivjg5vjgrfjg6Tjg54s44Of44Ku44OV44OfDQor44Kk44OB44OP44OpLOOCv+OCq+OCtw0KK+OCpOOCrOODqeOCtyzjgqvjg4Tjg47jg5YNCivjgqTjgrHjg4As44Oq44On44KmDQor44Kk44Oe44Og44OpLOOCquOCteODoA0KK+OCpOODiuODoOODqSzjg4jjg6Ljg47jg6oNCivjgqTjg47jgqbjgqgs44Ok44K544OS44OtDQor44Kk44K144KrLOOCt+OCsuODqw0KK+OCpOOCt+ODgCzjgrHjgqTjgqTjg4ENCivjgqTjgrfjgqQs44OO44Oc44OrDQor44Kk44K344K644KrLOODpuOCreOCqg0KK+OCpOODiOOCpizjgrfjg6fjgqbjgrMNCivjgqTjg4jjgqYs44Oe44K144OfDQor44Kk44OI44KmLOOCqOOCpOOCuA0KK+OCpOODr+ODiuOCrCzjg4rjgqrjgrMNCivjgrjjg7Pjg5As44OE44ON44OO44OqDQor44Kr44K444Oi44OILOOCv+OCr+ODpA0KK+OCq+OCsyzjg4jjgrfjg5LjgrMNCivjgqvjg7Ms44K/44Kv44OkDQor44Kr44OO44KmLOODnuODpuODnw0KK+OCq+OCueODpCzjg57jgrXjg4rjg6oNCivjgqvjg4jjgqYs44Kx44Oz44K4DQor44Kr44Ov44OZLOODqOOCt+ODpuOCrQ0KK+OCq+ODr+OCq+ODnyzjgrHjg7PjgqTjg4ENCivjgqvjg6/jg44s44Oe44K144OS44KzDQor44Kr44Ov44K344OeLOODpOOCueODjuODlg0KK+OCreOCr+ODgSzjg57jg6Ljg6sNCivjgq3jg6Djg6ks44Ki44OE44K3DQor44Kt44OOLOOCouOCrQ0KK+OCreOCv+OCrOODryzjgqrjgrXjg6ANCivjgrPjg5Djg6Tjgrcs44OI44K344OS44OtDQor44Kk44OI44KmLOOCt+ODs+OCuA0KK+OCs+OCr+OCt+ODp+OCpizjg57jgrXjg6sNCivjgrPjg7Pjg4ks44Oe44K144Om44KtDQor44Kz44Ok44OeLOODkuODreOCv+OCqw0KK+OCr+ODrOODnuODhCzjgr/jgqvjg5Ljg4cNCivjgq/jg6rjg6XjgqYs44Oo44K344KoDQor44Oe44OB44K/LOODnuOCteOCrQ0KK+ODnuODq+OCpOODgSzjg57jgrXjg6bjgq0NCivjg57jgrnjg4As44Om44Kt44KzDQor44Oe44OE44KkLOODkuODh+OCtw0KK+ODnuODhOODouODiCzjg6jjgrfjgq0NCivjg4rjgqvjg6Djg6ks44OS44Ot44Om44KtDQor44Oe44OE44Kq44KrLOOCv+OCseOCtw0KK+ODnuODhOODpOODnizjgrPjgqbjgr/jg63jgqYNCivjg5/jgrfjg54s44Kr44K644OfDQor44Of44OE44Oi44OILOOCreODqOODnw0KK+ODn+ODpOODouODiCzjg4jjgrfjgqLjgq0NCivjgqbjg4Hjg6Tjg54s44Of44Kt44KzDQor44Of44K644OOLOODnuOCteODqOOCtw0KK+ODouOCrizjg6Ljg6bjg6sNCivjg6Ljg6os44Oe44K144OS44OtDQor44Oi44Oq44K/LOOCq+OCuuODkuOCtQ0KK+ODouODiOODkOODpOOCtyzjgrXjg4jjg6sNCivjg6Djg6njgqvjg58s44OS44Ot44Ki44KtDQor44Og44Op44K/LOODiOODouODjuODqg0KK+ODiuODkCzjg5Ljg63jg6bjgq0NCivjg4rjgqzjgqrjgrEs44K144OI44K3DQor44OK44Ks44K/LOOCt+ODp+OCpuODmOOCpA0KK+ODiuOCq+OCrOODryzjg6jjgrfjg6bjgq0NCivjg4rjgqvjgrjjg54s44K/44Kr44K3DQor44OK44Kr44Og44OpLOOCv+ODhOODpA0KK+ODiuOCq+ODi+OCtyzjgqTjgrrjg6sNCivjg4rjgqvjgqos44Ki44Kt44KzDQor44OK44Kr44Ok44OeLOODleODn+OCqg0KK+ODjeODouODiCzjg5/jg4TjgqLjgq0NCivjg4vjgrfjg4As44Oo44K344OkDQor44OL44K344Og44OpLOOCreODr+ODoA0KK+ODjuODluODj+ODqSzjgrPjgqbjgrgNCivjg47jgr7jgqgs44OP44K444OhDQor44Kq44Kq44KuLOOCv+OCseOCtw0KK+OCquOCquOCqCzjg6jjgqbjgqTjg4ENCivjgqrjgqrjgq/jg5ws44OS44Ot44OV44OfDQor44Kq44Kq44Oi44OqLOODiuOCquOCrQ0KK+OCquODjizjgqLjgq3jg6kNCivjgqrjgqrjgr8s44Ki44K144KzDQor44Kq44Kq44K/44OLLOODpOOCueODkuODrQ0KK+OCquOCqyzjg5Xjg5/jgrMNCivjgqrjgqvjg57jg4Qs44K/44Kr44OS44OtDQor44Kq44Kr44Oi44OILOODjuODquOCqg0KK+OCquOCquODjizjg4rjgqrjgq0NCivjg4jjgq/jg5/jg6Qs44OG44OE44OkDQor44K144Kk44OI44KmLOODpuOCv+OCqw0KK+OCteOCq+OCreODkOODqSzjgr/jgqvjgqoNCivjg5/jgr/jg4ss44Kx44Oz44Kk44OBDQor44K144OOLOOCt+ODpeOCpuOCvuOCpg0KK+OCteOCteOCrSzjgrvjgqTjgrgNCivjgrXjg4jjgqYs44K/44Kr44Kr44K6DQor44K144OI44KmLOODjuODnOODqw0KK+OCteODiOOCpizjg4jjg6Ljgq0NCivjgrXjg6Tjg44s44Kk44Kv44OkDQor44K744Oz44OKLOODiOOCt+ODn+ODhA0KK+OCt+ODluOCv+ODiyzjgq3jg6fjgqbjgrMNCivjgrfjg57jg6Djg6ks44Oo44K344Of44OEDQor44K344OK44OALOOCq+ODhOODnw0KK+OCt+ODqeODj+ODnizjgr/jg63jgqYNCivjgrfjg6Xjg4jjgqYs44Om44Of44KzDQor44K544OALOODiuOCquODkuODrQ0KK+OCueOCruODpOODnizjg5Ljg4fjg57jgrUNCivjgrnjg5/jgqrjgqss44OI44Oi44OkDQor44K544K644KtLOODkuODh+ODkuODrQ0KK+OCv+ODkOOCsyzjgq/jg5/jgrMNCivjgr/jgqzjg68s44Oe44Kz44OIDQor44K/44Kr44OP44K3LOOCt+ODs+ODpA0KK+ODr+OCv+ODiuODmSzjg57jgq0NCivjgr/jgqvjgq/jg6ks44Kx44Oz44K544KxDQor44K/44Kr44Kq44KrLOOCtOOCpg0KK+OCv+OCseODj+ODiizjg57jgrXjgqvjg4QNCivjgr/jgrHjgqbjg4Es44K144OI44K3DQor44K/44OK44KrLOOCseODs+OCv+ODreOCpg0KK+OCv+ODiuOCqyzjgrvjgqTjgrgNCivjgr/jg4rjgqss44OO44Oq44OS44OtDQor44K/44OL44KkLOODpuODquOCsw0KK+OCv+OCt+ODrSzjgrHjg7PjgqTjg4ENCivjg4bjg6njg6Ljg4gs44Ko44Kk44K4DQor44OI44Kt44Kq44KrLOOCv+OCq+OCt+OCsg0KK+ODiOODn+OCq+ODryzjg47jg6rjgrMNCivjg4jjg6rjgqvjgqQs44OK44Kq44KtDQor44OE44OALOOCs+OCpuOCpOODgQ0KK+OCteOCq+OCpCzjg5/jg5vjgrMNCivjgqbjg4As44Ki44OE44KzDQor44Km44Ko44OOLOOCquOCteODoA0KK+OCpuODoeODj+ODqSzjg4jjgrfjgqoNCivjgqbjgrfjg5As44Of44OO44OrDQor44Ov44Kr44KqLOOCseOCpOOCuA0KK+ODr+OCv+ODmSzjg57jgrXjg4jjgrcNCivjg6/jgr/jg4rjg5ks44OA44Kk44OBDQor44OI44Of44Ok44K5LOODiOOCt+ODkuOCtQ0KK+ODpOODnuODgCzjg57jgq0NCivjg6Tjg57jgrPjgrcs44OA44Kk44K544KxDQor44Ok44Oe44Oi44OILOOCuOODpeODsw0KK+ODpOODnuOCt+OCvyzjg4rjgqrjgrMNCivjg6Tjg4rjgq4s44OI44K344Ki44KtDQor44Oo44Kz44K144OvLOOCv+OCr+ODpA0KK+ODqOOCs+ODpOODnizjgqvjgrrjg47jg5YNCivjg6jjgrfjg4As44OK44Kq44OIDQor44Oo44K344OfLOOCv+OCpOOCrQ0KK+ODqOOCt+OCtuODryzjg4jjgrfjgqvjg4QNCivjgqTjg54s44Oe44K144OS44OtDQor44Kv44OcLOODnuOCteODkuOCsw0KK+ODiuOCq+ODj+ODqSzjgr/jgq/jg6QNCivjgqrjgrDjg6ks44OI44Kq44OrDQor44K/44Kr44Oe44OELOOCseODs+OCpOODgQ0KK+OCpOODjuOCpuOCqCzjg6Djg43jg5Ljg60NCivjgqLjgqTjg5As44K144OI44K3DQor44Ki44Oe44OOLOODiuOCquOCsw0KK+OCouODquOCvyzjg5Ljg4fjgqLjgq0NCivjgqLjgr/jgrDjg4Es44OS44Ot44K3DQor44OA44OGLOOCt+OCsuODkuOCsw0KK+OCqOOCtuODryzjg4rjg6rjg5Ljg4cNCivjg5Xjgrjjg6Ljg4gs44Of44Kt44KqDQor44OV44Kv44OJ44OhLOOCv+OCq+OCtw0KK+ODleODq+OCq+ODryzjgqLjgrHjg58NCivjg4/jgq7jg6/jg6ks44Oq44Ol44Km44K/DQor44OP44OK44K/LOODkuODqeOCrw0KK+ODj+OCu+OCrOODryzjg6bjgr/jgqsNCivjgqvjgrjjg6/jg6ks44Oo44K344KzDQor44OP44OD44OI44OqLOOCv+OCq+ODpuOCrQ0KK+ODkuOCrOOCtyzjg6rjg6XjgqbjgrnjgrENCivjg5Ljg6njgqos44Oe44K144Om44KtDQor44OS44Ot44K7LOODn+ODhOODqw0KK+ODm+ODs+ODnizjgr/jgrHjgrcNCivjg5Xjgq/jg63jgqQs44Kx44Oz44K4DQor44Kk44OB44OO44K744KtLOODiOOCt+ODkuODrQ0KK+OCpOOCseODgCzjg6bjgr/jgqsNCivjgqTjg57jg6Djg6ks44Kx44Oz44K544KxDQor44Kk44OO44Km44KoLOOCq+OCuuOCqg0KK+OCpOOCt+ODgCzjgrPjgqbjgrgNCivjgqTjgrfjgqvjg68s44Ki44Kt44OpDQor44Kk44Ov44K144KtLOOCv+OCseOCtw0KK+OCq+OCpOOCuuOCqyzjg5Ljg63jgrMNCivjgqvjg5/jgqzjgq0s44OO44Oq44OS44OHDQor44Kr44ON44KzLOOCr+ODi+ODkuOCsw0KK+OCq+OCv+OCruODqizjg4rjgqrjg6bjgq0NCivjgqvjg4jjgqYs44Kx44Oz44K4DQor44Kr44Ov44Kr44OfLOOCs+OCpuOCuA0KK+OCq+ODhOOCrSzjgqLjgq3jg4jjg6INCivjgq3jg6Djg6ks44K144OI44OrDQor44Kt44OO44K344K/LOODpuOCq+ODqg0KK+OCreOCv+ODpOODnizjg4Hjg5Ljg60NCivjgqLjg6Hjgrfjgr8s44OK44Kq44KtDQor44Kz44OQ44Ok44K3LOOCv+OCq+ODkuODrQ0KK+OCs+OCrCzjg47jg6rjg6bjgq0NCivjgrPjgqTjgrEs44Ki44Kt44KqDQor44Kz44Oz44OJLOODiOODouODjuODqg0KK+OCr+ODnOOCrSzjgqTjgq/jgrMNCivjgq/jg6njgrfjg4os44Kr44OE44OS44OIDQor44Kv44Ot44KtLOODhOODqOOCtw0KK+ODnuOCqOODgCzjg6Tjgrnjg5Ljg60NCivjg57jgrXjg4As44OS44Ot44Om44KtDQor44Oe44OE44OALOODiuOCquODnw0KK+ODnuODhOODouODiCzjgrfjg6XjgqbjgqTjg4ENCivjg6Hjgqvjgr8s44OS44Ot44KtDQor44Of44Ok44Oi44OILOOCouOCreODkuODrQ0KK+ODouODqizjg6bjgqsNCivjg6Ljg6rjgr8s44Kr44K644Oo44K3DQor44Og44Op44Kr44OfLOODnuOCteOCouOCrQ0KK+ODoOOCvyzjg5LjgrXjgrcNCivjg4rjgqzjg6Tjg54s44OG44OE44OkDQor44OK44Kr44OP44OpLOOCv+OCq+OCsw0KK+ODiuOCq+ODoOODqSzjgqLjgq3jg47jg5YNCivjg4rjgqvjg6Djg6ks44Oe44OqDQor44OK44Kr44K/LOOCs+OCpuOCpOODgQ0KK+ODiuOCq+OCtuODryzjgrHjgqTjgrnjgrENCivjg4vjgrcs44Kr44ON44OO44OWDQor44OL44K344Ok44OeLOODn+ODiuOCsw0KK+ODjuODiCzjgrjjg6Xjg7PjgqTjg4ENCivjgqrjgqzjg68s44Oo44Km44K4DQor44Kq44Kq44OQLOODnuOCteODkuODhw0KK+OCquODoOODqSzjg57jg6YNCivjgqTjgrHjg57jg4Qs44K/44Kr44KzDQor44Kq44Kk44OALOODkuODiOOCtw0KK+OCquOCq+OCtuODryzjg5Ljg4jjgrcNCivjgqrjg44s44OK44Kq44OfDQor44K144Kk44OI44KmLOOCouOCreODkuOCtQ0KK+OCteOCq+OCpCzjg47jg5bjg6TjgrkNCivjgrXjgq/jgr8s44Oo44K344Ki44KtDQor44K144OI44KmLOODnuOCteODkuOCsw0KK+OCteODiOOCpizjgrPjgqbjgrgNCivjgrXjg6/jg4/jgrcs44K/44OE44Om44KtDQor44K344OQ44K/LOOCouODpOOCsw0KK+OCt+ODn+OCuizjgqvjg4Tjg6bjgq0NCivjgrfjgqrjg58s44K344Oz44K4DQor44K344K/44OpLOODkuOCteOCtw0KK+OCueOCruOCvyzjgqvjg4Tjg5LjgrMNCivjgrnjgrHjgqzjg68s44OO44OW44Oo44K3DQor44K544K644KtLOOCouOCreODkuODrQ0KK+OCt+ODp+OCpizjgrfjg6fjgqbjgr/jg63jgqYNCivjgr/jgqQs44Oe44K144OG44OrDQor44K/44Kr44KuLOODhuODhOODreOCpg0KK+OCv+OCq+ODj+OCtyzjg4jjgrfjgqoNCivjgr/jgqvjg6Tjg54s44OS44OH44OE44KwDQor44K/44Kx44K344K/LOOCt+ODp+OCpuOCvuOCpg0KK+OCv+OCsyzjg6jjgrfjgq0NCivjgr/jg4rjgqss44Kt44On44Km44OY44KkDQor44K/44OLLOOCq+OCuuODiuODqg0KK+OCv+OCuuOCsSzjgrvjgqTjgqTjg4ENCivjg4jjg6Ljg4jjgrcs44Kx44Oz44K4DQor44OE44OB44Oi44OILOODleODn+OCqg0KK+ODhOODjuODgCzjgrfjg6fjgqbjgrgNCivjgqbjg4Hjg4As44K144OI44OrDQor44Km44Ko44OALOOCouOCreODjuODqg0KK+OCpuODjuOCrSzjg47jg5bjg5LjgrMNCivjg6/jg4As44OS44Ot44K/44OEDQor44Ov44K344K6LOOCt+ODp+OCpg0KK+ODr+OCv+ODiuODmSzjgrPjgqbjgrvjgqQNCivjg6Tjg57jg4As44K/44Kr44OIDQor44Ok44Oe44Kw44OBLOODqOOCpuOCuA0KK+ODpOODnuODouODiCzjg5/jg4Tjgr7jgqYNCivjg6Tjg57jg4os44K744Kk44Kk44OB44Ot44KmDQor44Ok44K344OtLOOCv+OCseOCtw0KK+ODqOOCs+ODpOODnizjg57jgrXjg5LjgrMNCivjg6jjgrfjg4As44OI44Oi44OfDQor44Om44KtLOOCu+ODhOOCsw0KK+ODkuODqeOCq+ODryzjg57jg4rjg5YNCivjg6Ljg6rjgqTjg4Es44Ko44Kk44K444Ot44KmDQor44K344Of44K6LOOCseOCpA0KK+ODleOCuOODpeOCpizjgrfjg7PjgqTjg4ENCivjg4/jgqzjg68s44K/44Kr44K3DQor44OP44K744Ks44OvLOODkuODh+OCouOCrQ0KK+ODkuODqeODjizjgr/jgq/jg6QNCivjg5vjg7PjgrTjgqYs44OG44Or44OS44KzDQor44Kk44Kx44OALOODiOOCt+ODpuOCrQ0KK+OCpOOCt+OCq+ODryzjg5Ljg63jgq0NCivjgqTjg4jjgqYs44Oo44K344OfDQor44Kr44OK44Ok44OeLOOCs+OCpuOCuA0KK+OCq+OCv+OCruODqizjgrfjg7PjgrnjgrENCivjgq3jg6Ljg4gs44K/44Kv44OkDQor44Kt44Ok44OeLOOCu+OCpOOCuA0KK+OCs+OCuOODiizjgrHjg7MNCivjgrPjg7Pjg4ks44OS44Ot44OS44KzDQor44Kv44Oq44K/LOOCteODiOOCtw0KK+ODnuOCueODgCzjg4DjgqTjg4ENCivjg5/jgqvjg58s44Of44OE44KqDQor44Of44OvLOOCv+OCq+ODjuODlg0KK+ODouODgeOCuuOCrSzjg47jg5bjg6bjgq0NCivjg6Ljg6rjg6Tjg54s44OI44K344KqDQor44OK44Ks44OV44K4LOOCreODn+ODkuODiA0KK+ODiuOCq+OCuOODnizjg57jgrXjg5LjgrMNCivjg4rjgqvjg6Djg6ks44OS44K144OIDQor44OK44K544OOLOODiuOCquOCrQ0KK+ODjuODgCzjg6bjgqbjgrMNCivjgqrjgqzjg68s44Oq44On44Km44KzDQor44Kq44Kq44Kr44OvLOOCuOODpeODs+OCsw0KK+OCquOCquOCv+ODiyzjgrHjg7MNCivjgqrjgq/jg6Djg6ks44Oe44OK44OfDQor44Kk44KuLOOCouOCreODjuODqg0KK+OCteODiuODgCzjg6jjgrfjg5Ljg60NCivjgrXjg4jjgqYs44OS44OH44OS44K1DQor44K744KtLOODqOOCpuOCpOODgQ0KK+OCt+ODkOOCvyzjg6bjgq3jg47jg6oNCivjgrfjg57jgqvjg68s44K344Ky44OrDQor44K344Kq44K444OqLOODkuODreOCtw0KK+OCueODgCzjg4jjg6Ljg4/jg6sNCivjgrnjgrrjgq0s44Kz44Km44K4DQor44K/44Kr44OALOOCv+OCq+ODjuODqg0KK+OCv+OCq+ODj+OCtyzjgq3jg6fjgqbjgrMNCivjgr/jgqvjgrks44OE44Oo44K3DQor44K/44OL44Kw44OBLOODiuOCquOCrQ0KK+ODhOODjeOCq+ODryzjg5Ljg63jg5Xjg58NCivjgqbjgqjjg4/jg6ks44OS44OH44Ki44KtDQor44Ok44Ku44Oi44OILOODkuODreOCtw0KK+ODpOODnuOCsOODgSzjg4jjg6LjgrMNCivjg6Tjg57jgrfjgr8s44Kr44K644KtDQor44Ok44K244KtLOODiuOCquOCrQ0KK+ODqOOCt+ODgCzjg4/jg6vjg5LjgrMNCivjgqLjgqTjgqvjg68s44OS44Ot44OV44OfDQor44OB44Kr44OP44OpLOOCquOCteODoA0KK+ODr+OCv+ODiuODmSzjgr/jgqvjgqgNCivjg47jgrbjgq0s44OG44Or44Ki44KtDQor44Ki44Kr44OL44K3LOODiuOCquODkuODrQ0KK+OCt+ODnuODouODiCzjgqLjg4jjg6ANCivjgqLjg4rjgrbjg68s44Of44OO44OrDQor44Kk44Km44OBLOODnuOCs+ODiA0KK+OCpOOCt+OCq+ODryzjgrPjgqbjgqTjg4ENCivjgqTjg4Hjgqvjg68s44K944OoDQor44Kk44Oe44OP44Ok44K3LOOCt+ODs+OCpOODgQ0KK+OCpuODgeODpOODnizjg6jjgrfjgr/jgqsNCivjgqrjgqbjgrXjgqss44Oe44K144K/44KrDQor44Kq44Kq44K/44OLLOODkuODh+OCrQ0KK+OCquOCquODkOODpOOCtyzjgrfjg7PjgrgNCivjgqrjgrDjg6ks44OS44Ot44KzDQor44Kr44Kt44Oi44OILOODkuODreOCtw0KK+OCq+ODiOOCpizjgrfjgrLjg47jg6oNCivjgqvjg5/jg6Tjg54s44OS44Ot44Kr44K6DQor44Kr44Ov44K7LOODiuOCquOCrQ0KK+OCreOCv+OCuOODnizjgqLjgq3jg5Ljg60NCivjgq/jgrXjgqvjg5ks44Oe44Ko44KzDQor44Kz44Kk44OHLOODkuODh+OCrQ0KK+OCs+ODnuODhCzjgrHjgqTjgqTjg4ENCivjgrXjgqTjg4jjgqYs44OS44OH44KtDQor44K144OI44KmLOOCuOODpeODsw0KK+OCt+ODpeOCpizjg57jgrXjg6QNCivjgrfjg47jg4As44Oe44K544OfDQor44K344Of44K6LOOCteODiOOCtw0KK+OCueOCrOODr+ODqSzjgrfjgrLjg5Xjg58NCivjgrnjg5/jgqvjg68s44Kr44OE44Ki44KtDQor44K/44Kr44K7LOOCreODqOOCv+OCqw0KK+OCv+OCseODgCzjgrHjgqTjgqTjg4ENCivjgr/jg4rjgqss44Kx44Oz44K4DQor44K/44OQ44K/LOODn+ODr+OCsw0KK+ODhOODgeODj+OCtyzjg6Djg43jg5Ljg60NCivjg4jjg6Djg60s44OK44OE44OS44KzDQor44OK44Kr44Ks44OvLOOCv+OCq+OCsw0KK+ODiuOCuSzjg5Ljg63jgrcNCivjg4vjgrfjg4/jg6ks44OK44Kq44KtDQor44OO44Og44OpLOOCq+OCuuODkuOCsw0KK+ODj+OCu+OCrOODryzjgrHjg7PjgqTjg4ENCivjg4/jg6njg4As44OI44Oi44KzDQor44OS44K444OqLOOCqOODqg0KK+ODleOCuOOCvyzjg47jg5bjgrMNCivjg5vjgr3jgqvjg68s44K/44OE44KqDQor44Oe44K544OW44OBLOOCv+OCq+OCtw0KK+ODnuODhOODiuOCrCzjg6bjgq0NCivjg57jg4Tjg6Tjg54s44OG44OE44OkDQor44Of44K/LOODn+ODjuODqw0KK+ODn+ODqOOCtyzjg6jjgqbjgrMNCivjg6Djg6njg6Tjg54s44Oe44Kz44OIDQor44Oi44Oq44K344K/LOOCq+OCuuODkuODrQ0KK+ODpOOCuOODnizjg4rjgqrjgrMNCivjg6Tjg57jgrbjgq0s44OS44Ot44Om44KtDQor44Kv44Oq44OP44OpLOODnuOCteOCrQ0KK+ODqOOCs+ODpOODnizjg6jjgqbjgrMNCivjg6/jgr/jg4rjg5ks44Oo44K344OS44OIDQor44Kv44Ov44K344OeLOOCueOCsOODqw0KK+OCteOCq+ODouODiCzjg5Ljg4fjg47jg5YNCivjgqTjg4jjgqYs44K/44OA44OS44OtDQor44Km44Oh44OK44KkLOOCueOCueODoA0KK+OCquOCq+OCt+ODrSzjgrfjg63jgqYNCivjgqvjg6/jgqrjgqss44OS44OH44KtDQor44Kv44OQLOOCv+OCq+OCtw0KK+OCs+OCpuODgCzjg57jgrXjgr/jgrENCivjgrXjg4jjgqYs44Oe44Om44OfDQor44Ki44OZLOODnuOCteODj+ODqw0KK+OCv+OCq+ODj+OCtyzjg5LjgrXjg58NCivjgr/jg5Djgr8s44Kr44OE44Om44KtDQor44OK44Kr44Ks44OvLOOCs+OCpuOCpOODgQ0KK+ODj+OCt+ODouODiCzjg4jjgqrjg6sNCivjg5Ljg6njg44s44Oe44K144K/44KrDQor44Ob44K944OOLOOCouOCreODkuODiA0KK+ODoOODqeOCq+ODnyzjgrHjgqTjgrMNCivjg6jjgrfjg6Djg6ks44Ko44OqDQor44Ki44Oe44OkLOODnuOCteODqw0KK+ODgeODp+OCpizjg4DjgqTjgrnjgrENCivjgrTjgqbjg4As44Kt44Oo44OO44OWDQor44OP44Ok44Kr44OvLOODkuODreOCrQ0KK+ODleODq+OCvyzjg4rjg6vjgq0NCivjgqTjgqTjg4As44K/44Kr44OS44OtDQor44Kk44K344Ov44K/44OqLOODkuODreOCq+ODhA0KK+OCq+ODkOODpOODnizjg57jgrXjgq0NCivjgqvjg7Pjg4As44Ok44K544OS44OIDQor44Kt44K/44Og44OpLOODqOOCt+OCqg0KK+OCs+ODs+ODjizjgrPjgqbjgqTjg4ENCivjg57jg4Hjg4As44OP44Or44OfDQor44Oe44OE44KkLOOCv+OCseOCtw0KK+ODn+OCpuODqSzjgrHjgqTjgrQNCivjgr/jg4/jg6ks44OO44Oq44KzDQor44Og44Op44Kr44OfLOOCv+ODhOODkuOCsw0KK+ODiuOCq+ODn+ODjSzjg57jg6Ljg6sNCivjg4rjgqvjgrbjg68s44Kt44Oo44K3DQor44Kq44Kq44K/LOOCt+OCsuOCouOCrQ0KK+OCpOOCt+OCq+ODryzjg6jjgqYNCivjgqTjg4jjgqYs44OI44Oi44OkDQor44K144OI44KmLOODhOOCsOODkuODhw0KK+OCt+ODkOOCvyzjg4rjgqrjgq0NCivjgr3jg6Hjg6Qs44Ki44Kt44OS44KzDQor44K/44Kx44OALOOCouOCreODqQ0KK+OCv+ODiuOCqyzjgrPjgqbjgqTjg4Hjg63jgqYNCivjgr/jg4vjgrfjgr8s44OV44Of44OODQor44OE44OB44OkLOODqOOCt+OCsw0KK+ODr+OCuOODnizjg6rjgrMNCivjg6Tjg57jg4As44OS44Ot44KtDQor44Ok44Oe44K244KtLOODpuOCv+OCqw0KK+OCv+OCq+ODj+OCtyzjg57jgrXjgq0NCivjgqLjg7Pjg4njgqYs44Om44KtDQor44Kk44K344Oi44OILOODquODp+OCpuOCueOCsQ0KK+OCpOODr+OCteOCrSzjg5/jgrrjg57jgrUNCivjgqbjg6Hjg4/jg6ks44K/44Kr44K3DQor44Kq44Ks44K/LOODpOOCueOCtw0KK+OCquODi+OCtuODryzjgrfjgrLjgq0NCivjgqvjgrgs44Kq44K144OgDQor44Kr44ON44KzLOODjuODluOCq+ODhA0KK+OCq+ODr+ODnuOCvyzjg5Ljg63jgq0NCivjgq/jg5ws44OI44Oi44OO44OqDQor44Kz44Km44K144KtLOOCs+OCpuOCpOODgQ0KK+OCteOCpOODmyzjg4rjg6vjg5Ljg60NCivjgrXjg4rjg4As44Kq44K144OgDQor44K344K344OJLOOCr+ODi+OCqg0KK+OCueOCruODj+ODqSzjgq3jg6jjgrfjgrINCivjgr/jgqvjgqrjgqss44Om44OfDQor44Kk44OI44KmLOOCuOODpeODs+OCuA0KK+ODiuOCq+OCqizjgrfjg7PjgrgNCivjg4rjgqvjg44s44K4DQor44OL44K344Kr44KkLOODiOOCt+ODn+ODhA0KK+ODjeODreODoSzjg5Ljg63jgrcNCivjg4/jg5Ys44Oe44Kz44OIDQor44OS44Op44KkLOOCq+OCquODqg0KK+ODleOCuOODr+ODqSzjg4jjgqrjg6sNCivjg5vjg7Pjg54s44Om44Kt44OO44OWDQor44Oe44OE44K244OvLOODgeOCq+ODqQ0KK+ODn+ODpOODouODiCzjg6TjgrnjgrgNCivjg6Ljg6rjg6Qs44Ob44Oe44OsDQor44Ok44OOLOODkuODreOCtw0KK+ODpOODnuOCt+OCvyzjg57jgqTjgrMNCivjg6jjg4As44K/44Kr44OS44OtDQor44Ov44K/44OZLOOCv+OCq+OCtw0KK+OCouOCreODkCzjgrHjgqTjgqTjg4ENCivjgqLjg5ks44Oe44Om44OfDQor44Kk44OI44KmLOODqOOCpuOCuA0KK+OCpOOCt+ODoOODqSzjg6bjg5/jgrMNCivjgqTjg4jjgqYs44Oe44K144OrDQor44Kk44Oe44KkLOOCv+OCseOCtw0KK+OCpuOCqOODj+ODqSzjg6Ljg4jjgrMNCivjgqbjg6Hjg4Qs44Ki44Kt44OS44KzDQor44Kk44Oe44OL44K3LOODkuODreODpuOCrQ0KK+OCquOCquOCpOOCtyzjg57jgrXjg4/jg6sNCivjgqrjgqvjg44s44Om44KtDQor44Kq44Ks44OvLOODiOOCquODqw0KK+OCq+OCrOODnyzjgqjjg6rjgqsNCivjgqvjgr/jg6Tjg54s44Of44OE44KzDQor44Kr44OfLOODqOOCt+ODhuODqw0KK+OCq+ODr+OCteOCrSzjg5Ljg4jjgrcNCivjgqvjg6/jg6Ljg4gs44Of44OB44KqDQor44Kt44K/44Oi44OILOODhOODiOODoA0KK+OCruODp+OCpuODlizjg5Ljg63jgrMNCivjgrPjgqTjgrHjg4As44K/44OE44Ot44KmDQor44Kz44OA44OeLOOCv+OCpOODgeODreOCpg0KK+OCs+ODkOODpOOCtyzjg5Ljg4fjg5Ljg4gNCivjgrXjgqTjgrTjgqYs44Of44Ov44KzDQor44K144Kr44Ks44OfLOOCpOODgeODreOCpg0KK+OCteOCteOCrSzjg4rjg4rjgqgNCivjgrXjg68s44Kx44Oz44K0DQor44K344Of44K6LOODpuOCreOCqg0KK+OCt+ODp+OCpuODgCzjgrfjgrLjg47jg6oNCivjgrnjgrrjgq0s44Kr44K644OS44OpDQor44Kk44K344OP44OeLOOCseODs+ODiA0KK+OCv+OCq+ODj+OCtyzjg57jgq3jgrMNCivjgr/jgrHjg68s44K344Oz44K4DQor44K/44OP44OpLOOCteODiOOCtw0KK+ODhOODhOODnyzjg57jgrPjg4gNCivjg4rjgqTjg4jjgqYs44Kz44Km44K4DQor44OK44Kr44K444OeLOODjuOCvuODoA0KK+ODiuOCq+ODoOODqSzjgr3jgqbjgqTjg4Hjg63jgqYNCivjgqTjgrHjg4As44Oe44K144K/44KrDQor44OL44K3LOODhOODjeOCouOCrQ0KK+ODjuODjuOCpOODgeODpCzjg57jgrnjgqoNCivjg4/jgrfjgrrjg6Es44Om44Km44KzDQor44OP44OD44OI44OqLOODpuOCpg0KK+OCpOODjuOCsOODgSzjgqvjg4Tjg5Xjg58NCivjg5Ljg57jgq0s44OI44Oi44OO44OqDQor44OV44Kr44K244OvLOODquOCqA0KK+ODleOCuOODiuOCrCzjg5Xjg5/jgrMNCivjg5Xjg6vjg6Qs44Oe44Oq44KzDQor44Ob44Oq44Kr44OvLOODiOODouODkuODrQ0KK+OCpOOCsOODgSzjgr/jgqvjg5Ljg60NCivjg5/jg4Tjg4/jgrcs44Ko44Kk44Kk44OBDQor44Of44Ok44K344K/LOODqOOCpuOCsw0KK+ODoOODqeODnuODhCzjg57jgrXjg6bjgq0NCivjgqTjg47jgqbjgqgs44Ki44Kt44OO44OqDQor44Ok44OOLOOCv+ODgOOCv+OCqw0KK+ODpOODnuODgCzjgr/jg4TjgqoNCivjg6Tjg57jg6Ljg4gs44Og44ON44K/44KrDQor44Oo44K344OALOODquODp+OCpg0KK+ODr+OCv+ODiuODmSzjg5Ljg4fjg6bjgq0NCivjg6/jgr/jg4rjg5ks44OI44K344KoDQor44Kz44Km44OALOOCteODiOODqw0KK+OCquOCrOODryzjg5Ljg63jgqLjgq0NCivjgqLjgq3jg6Ljg4gs44K544K544OgDQor44Ki44K144OOLOODiOODouODkuOCsw0KK+OCouODmSzjg57jgrXjgqrjg58NCivjgqTjg4Tjg44s44Of44Kt44KqDQor44Kk44OB44OO44K7LOOCs+OCuuOCqA0KK+OCpOODquOCvyzjg6TjgrnjgqLjgq0NCivjgqTjgrfjgqrjgqss44K344Oz44Kk44OBDQor44Kk44OB44KtLOODnuOCteODiA0KK+OCpOODj+ODqSzjgq3jg6jjgr/jgqsNCivjgqTjg57jgros44OE44Oo44K3DQor44Kk44Ov44K544KuLOODn+OCqw0KK+OCpuOCueOCpCzjg57jgrXjg5Ljg60NCivjgqjjg4jjgqYs44Kx44Oz44K4DQor44Kq44KmLOODqOOCt+ODkuODrQ0KK+OCpOODr+OCreODqizjg6/jgr/jg6sNCivjgqrjgqrjg4Tjgq0s44K444Ol44OzDQor44Kq44Og44OpLOOCr+ODnw0KK+OCquOCq+OCtuOCrSzjg4jjg6Ljg5/jg4ENCivjgqrjgqzjg68s44Ki44Kt44OpDQor44Kt44K/44Og44OpLOODnuODquOCsw0KK+OCquOCquODpOODnizjg4Hjgrrjg6sNCivjgqvjgrXjgrbjgq0s44Oo44K344OS44OtDQor44Kr44OE44OOLOOCv+OCq+ODjuODqg0KK+OCq+ODiOODqizjgrHjg7PjgrgNCivjgqzjg58s44OS44Ot44K3DQor44Kr44Ov44Kr44OfLOODnuOCteODnw0KK+OCq+ODr+ODnyzjgrfjg7PjgrgNCivjgq3jgr/jgrfjg60s44Kr44K644Oo44K3DQor44Kt44Og44OpLOOCt+OCsuODqw0KK+OCr+OCuOODqeOCquOCqyzjg4DjgqTjgq0NCivjgqTjgrfjgrDjg60s44K/44Ot44KmDQor44Kk44OK44OI44OfLOODgOOCpOOCueOCsQ0KK+OCs+OCuuODnizjg57jgqTjgrMNCivjgrPjgrfjgqQs44OI44Oi44OS44OtDQor44Kz44OL44K3LOOCv+ODgOOCtw0KK+OCs+ODkOODpOOCtyzjg6jjgrfjgqoNCivjgrXjgqTjg4jjgqYs44OI44Oi44KoDQor44K144Kr44KkLOODn+ODjeOCqg0KK+OCteOCq+ODouODiCzjgrjjg6Xjg7PjgrMNCivjgrXjg4jjgqYs44K344Oz44Kk44OB44Ot44KmDQor44Kk44K344Kw44OtLOODkuODh+OCv+OCqw0KK+OCt+ODiuODgCzjg6jjgrfjgrMNCivjgrfjg57jg4As44Oo44K344K144OADQor44Kk44OI44KmLOOCreODp+OCpuOCsw0KK+OCueOCruODpOODnizjgqvjgrrjg4oNCivjgrnjgrrjgq0s44Kz44Km44K4DQor44K744Kt44Kw44OBLOOCseOCpOOCsw0KK+OCq+ODn+ODpCzjgqvjgrnjg58NCivjgr/jgqvjg44s44Kx44Oz44Kk44OBDQor44K/44Kr44OP44K3LOOCs+OCpuOCpOODgeODreOCpg0KK+OCv+OCq+ODn+OCtuODryzjg6rjg6Xjgqbjgq0NCivjgr/jgrHjgqbjg4Es44K/44Kr44Kt44OoDQor44K/44Kx44Oi44OILOOCq+OCuuODkuOCsw0KK+OCv+ODgeODkOODiizjgqLjg6TjgrMNCivjgr/jg4rjgqss44OK44Kq44KzDQor44K/44OK44OfLOODhOODjeOCqg0KK+OCv+ODjuOCquOCqyzjg5/jgqjjgrMNCivjg4Hjg6XjgqYs44K144Ok44KrDQor44OE44OB44OkLOOCu+ODrOODig0KK+ODiOOCuCzjg57jgrXjgrMNCivjg4jjg6jjg4As44K/44Kv44OkDQor44OK44Kr44K444OeLOODiOODouOCsw0KK+ODiuOCrOOCvyzjg6jjgrfjg5LjgrMNCivjg4rjgqzjg4/jg6ks44Oo44K344Om44KtDQor44OK44Kr44Og44OpLOODnuOCteOCq+ODhA0KK+ODi+OCt+OCq+ODryzjgqTjg6/jgqoNCivjg4vjg68s44Om44Kt44KoDQor44OO44Ks44OfLOODpuOCqw0KK+ODj+OCt+OCuuODoSzjgr/jgqvjgrcNCivjg4/jgrvjg5ks44Oo44Km44OY44KkDQor44OP44OK44OW44K1LOOCquOCteODoA0KK+ODj+ODpOOCtyzjg57jgrPjg4gNCivjg4/jg6vjgr/jg4ss44K/44Kr44OS44OtDQor44OS44On44Km44KoLOODiOODouODkuODrQ0KK+ODkuODqeODjOODnizjgqvjgrrjgqoNCivjg5Xjgq/jg4As44K/44Kr44OS44OtDQor44OV44K444KqLOOCv+OCq+ODpuOCrQ0KK+OCpOODjuOCpuOCqCzjg47jg6rjgqoNCivjg5Xjg6vjgqvjg68s44Oe44K144Of44OEDQor44OV44OvLOODn+OCqg0KK+ODnuOCqOOCq+ODryzjg6vjg58NCivjg57jgq3jgr8s44Kr44OE44Om44KtDQor44Oe44OE44Km44OpLOOCqOODquOCsw0KK+ODnuODhOODgCzjgr/jgqvjgrcNCivjg57jg4Tjg5/jg6Qs44Kx44Oz44Kk44OBDQor44Oe44OK44OZLOODquODp+OCpuOCueOCsQ0KK+ODn+ODiuODiCzjg5Ljg63jg6bjgq0NCivjg6Djg6njgqvjg58s44Oe44K144OfDQor44Oi44OI44Oo44K3LOODnuOCs+ODiA0KK+ODouODquOCvyzjgrHjg7PjgrgNCivjg6Tjgq4s44Kx44Kk44K544KxDQor44Ks44OzLOODj+ODiuOCqA0KK+ODpOODnuOCsOODgSzjg6Tjgrnjg57jgrUNCivjg6Tjg57jgrXjgq0s44K444Ol44OzDQor44Ok44Oe44OALOOCv+ODhOOCuA0KK+ODpOODnuODi+OCtyzjg4rjgqrjgq0NCivjg6jjgrPjgr8s44OI44Oi44OV44OfDQor44Oo44K344Kr44OvLOOCv+OCr+ODpA0KK+ODqOOCt+ODoOODqSzjgq/jg4vjg5LjgrMNCivjg6/jgq3jgr8s44OI44Kq44OrDQor44Ov44K/44OK44OZLOOCveOCpg0KK+OCouODnuOCsyzjg6jjgrfjgqoNCivjg57jg44s44Ki44KtDQor44Km44OB44Og44OpLOODgeODiuODhA0KK+OCteOCr+ODqeOCpCzjg57jg58NCivjgrfjg6njgqQs44Om44K/44KrDQor44OG44Op44Kv44OpLOODqOOCpuOCuA0KK+OCquOCq+ODgCzjgr/jg4TjgrcNCivjgrTjg4jjgqYs44Ki44Kt44OS44OtDQor44OE44OQ44KtLOOCu+OCpOOCpOODgeODreOCpg0KK+OCpOODiuOCrOOCrSzjg5Ljg4fjg4jjgrcNCivjg5vjg6rjg5ks44Oi44OI44K4DQor44Kr44KkLOODqOOCt+OCqA0KK+OCv+OCq+ODgCzjg4jjgq/jg5LjgrMNCivjgrPjgr/jg4ss44OV44Of44OS44KzDQor44Kk44OP44OpLOOCseOCpOOCsw0KK+OCouOCreODj+ODqSzjgrfjg6Xjg7PjgrnjgrENCivjgqLjg5ks44Om44KtDQor44Ki44Op44KtLOODkuODreOCtw0KK+OCpOOCt+OCpCzjg47jg5bjg6TjgrkNCivjgqTjgrfjgrzjgq0s44OA44Kk44K544KxDQor44Kk44K/44OLLOOCv+OCq+OCtw0KK+OCpOODiOOCpizjgrfjgrrjgrMNCivjgqTjg44s44Of44KtDQor44Kk44Ov44K244KtLOODkuODreOCv+OCqw0KK+OCpuOCqOODjizjgrHjg7PjgrgNCivjgqbjg6Hjg4/jg6ks44OK44OE44KzDQor44Kq44Kq44KoLOODgOOCpOOCueOCsQ0KK+OCquOCquODhCzjg4HjgqgNCivjgqrjgqrjg4Tjg5ws44Oe44K144Of44OEDQor44Kq44Kr44OALOOCv+ODhOODpA0KK+OCquOCq+ODouODiCzjg5LjgrXjgrcNCivjgqrjgq/jg4rjgqss44K744Kk44K3DQor44Kq44OQ44OpLOODpuODquOCsw0KK+OCq+OCuOODiuOCrCzjg6bjgr/jgqsNCivjgqvjg4jjgqYs44Oq44On44KmDQor44Kr44OI44KmLOODr+OCv+ODqw0KK+OCq+ODr+OCpCzjgrPjgqbjgrgNCivjgqvjg6/jgrDjg4Es44K544K544OgDQor44Kt44K3LOODrOOCpOOCsw0KK+OCreODieOCs+ODrSzjgqLjg4TjgrcNCivjgq/jg5zjgr8s44Oe44Om44OfDQor44Kv44Ov44OQ44OpLOODpuOCq+ODqg0KK+OCs+OCr+ODnCzjg6Ljg6LjgqgNCivjgrTjg4jjgqYs44Kx44Kk44KzDQor44Kz44Of44Ok44OeLOODnuOCteODqOOCtw0KK+OCteOCpOODiOOCpizjgrfjgrLjg6sNCivjgrXjgqvjg6Ljg4gs44OB44Kr44OpDQor44K144K144OOLOOCouOCq+OCrg0KK+OCteODiuODgCzjg57jgrXjg6bjgq0NCivjgrfjg57jg4As44K/44Kx44K3DQor44K344Oi44OV44K4LOODjuODluODkuOCsw0KK+OCt+ODryzjgrHjg7PjgqTjg4ENCivjgrnjgq7jg4/jg6ks44OS44Ot44OO44OWDQor44K544K644KtLOODnuOCteODpA0KK+OCu+OCrSzjgqLjg4Tjg4rjg6oNCivjgr/jgqvjgq4s44Kr44OoDQor44K/44Kr44OP44K3LOODkuODreODiuOCqg0KK+OCv+OCreOCtuODryzjgrXjg4jjgrcNCivjgr/jgrHjg4As44Om44Km44Kk44OB44OtDQor44K/44OK44KrLOOCu+OCpOOCuA0KK+OCv+ODi+OCq+ODryzjg6jjgrfjg4TjgrANCivjgr/jg5Djgr8s44Kx44Kk44K/44Ot44KmDQor44OE44Kr44OALOODquOCqA0KK+ODhOODnOOCvyzjg57jgrXjg6QNCivjg4jjgqbjgqvjgqTjg6rjg7Ms44Om44OfDQor44OI44OO44KkLOOCouOCreOCsw0KK+ODiuOCq+OCrOODryzjg6jjgrfjg47jg6oNCivjg4rjgqzjg44s44Oq44On44Km44K/DQor44OK44Kr44Ok44OeLOODiOODouODkuODrQ0KK+ODi+OCt+OCquOCqyzjgrfjg7PjgqTjg4ENCivjg43jgq7jgrcs44Oq44KrDQor44OO44K244KtLOODgOOCpOOCueOCsQ0KK+ODj+OCt+OCsOODgSzjg4jjgrfjg5Ljg60NCivjg4/jg4Pjg4jjg6os44Om44Km44Kk44OBDQor44OP44Oe44OALOODgOOCpOOCuA0KK+ODkuOCt+ODjOODnizjgqLjg4TjgrcNCivjg5Ljg6njgr8s44Oe44Of44KzDQor44OV44Kv44OALOOCv+OCq+OCtw0KK+ODleOCuOOCqOODgCzjg5LjgrXjgqvjgroNCivjg5Xjgrjjg6/jg6ks44K/44Kv44OIDQor44Ob44Oq44Kr44OvLOOCt+ODpeOCpuOCuA0KK+ODnuODhOOCqizjg5Ljg4fjg47jg6oNCivjg57jg4Tjg6Tjg54s44Of44OE44OG44OrDQor44Of44OkLOOCouOCreODqQ0KK+ODn+ODpOODouODiCzjgq/jg4vjgrMNCivjg6Djg6njgqvjg58s44K/44OE44OS44OtDQor44Oi44Oq44K/LOODnuODnw0KK+ODpOOCsOODqSzjgrfjg7PjgrgNCivjg6Tjg57jg4As44Of44K644ObDQor44Om44OpLOOCseODs+OCpOODgQ0KK+ODqOOCt+OCtuODryzjg6bjgqbjgrMNCivjg63jgq8s44Ki44Kt44KzDQor44Ov44Op44OTLOODkuODreODjuODqg0KK+ODn+ODkuODqSzjg6rjg6fjgqbjg5jjgqQNCivjg5/jgq7jgr8s44Oe44OKDQor44K/44Kx44Km44OBLOODquODp+OCpg0KK+OCquODjuODh+ODqSzjgq/jg4vjg5Ljg60NCivjgqLjgqvjgqzjg68s44Oi44OI44KzDQor44Ki44K144OM44OeLOOCouODpA0KK+OCouODqeOCpCzjg4Tjg6jjgrcNCivjgqTjgrbjg68s44OB44OP44OrDQor44Kk44K344OQ44K3LOODiOOCt+ODpuOCrQ0KK+OCpOODhyzjg4rjg6vjg58NCivjgqTjg47jgqbjgqgs44Oe44Kz44OIDQor44Kk44Oe44K844KtLOOCr+ODn+OCsw0KK+OCpOODr+OCvyzjgrPjgqbjgrgNCivjgqbjgrXjg58s44Oe44Oq44KzDQor44Ko44OO44Kt44OJLOODqOODquOCsw0KK+OCquOCreOCvyzjg6bjgq3jg47jg6oNCivjgqrjgqrjg4Tjgqss44Oi44OI44KkDQor44Kq44OOLOODkuODreOCtw0KK+OCquOCq+ODgCzjgqvjgrrjg5Ljg60NCivjgqrjgq/jgq/jg5ws44K/44Kr44K3DQor44Kr44OK44KkLOOCseODs+OCpOODgQ0KK+OCq+ODn+ODpCzjgrXjg4HjgrMNCivjgqvjg6/jgrXjgq0s44OS44Ot44KtDQor44Kt44OALOOCqOOCpOOCueOCsQ0KK+OCreODoOODqSzjg5Xjg5/jg4gNCivjgq/jg6Hjgqbjg4Es44Kx44Oz44K4DQor44Kv44Ov44OP44OpLOOCt+ODjg0KK+OCs+OCrCzjgr/jgq/jgrgNCivjgrPjg5Djg6Tjgrcs44Ki44Oz44OKDQor44K144Kk44OI44KmLOOCseODs+OCpOODgQ0KK+OCteOCteOCrSzjg4/jg4rjgrMNCivjgrXjg4jjgqYs44Of44KtDQor44K144OP44OpLOOCv+OCq+ODleODnw0KK+OCt+ODgCzjg6jjgrfjg5Ljg60NCivjgrfjg5/jgros44K/44OE44KqDQor44K344Oi44K244KtLOOCv+ODhOODkuOCsw0KK+OCueOCruOCpuODqSzjg57jgrXjg47jg5YNCivjgrnjg4gs44K144OI44K3DQor44K744OILOOCseOCpOOCuA0KK+OCv+OCq+OCrizjg47jg6rjg6bjgq0NCivjgr/jgqvjg4/jgrcs44Of44KrDQor44K/44Kx44OALOODpuOCpuOCuA0KK+OCv+ODgCzjg6jjgrfjgr/jgqsNCivjgr/jg4vjgrDjg4Es44K/44Kr44OO44OqDQor44K/44Og44OpLOOCseOCpOOCsw0KK+ODhOOCq+ODj+ODqSzjg5/jgrrjg5sNCivjg4Tjg5zjgqbjg4Es44Ki44Kt44OV44OfDQor44OG44Op44OALOODqOOCt+OCrQ0KK+ODiOODn+OCpCzjgrjjg6Xjg7PjgrMNCivjg4rjgqTjg4jjgqYs44K/44Kr44KqDQor44OK44Ks44K144KrLOOCs+OCpuOCuA0KK+ODiuOCrOODjizjg6TjgrnjgqoNCivjg4rjgqvjg6Djg6ks44Ko44Kk44K4DQor44OL44K3LOODiuOCquODpuOCrQ0KK+ODi+OCt+ODgCzjg6rjg6fjgqbjg5jjgqTjgr8NCivjg47jgrDjg4Es44Kr44K644Oo44K3DQor44OO44Og44OpLOOCq+OCuuOCqg0KK+ODj+ODg+ODiOODqizjgrXjg4jjg58NCivjg4/jg6Tjgqvjg68s44Om44KtDQor44OP44Op44OALOODn+OCqA0KK+ODkuODh+OCt+ODnizjg5/jgq3jgrMNCivjg5Xjgqvjgqos44Of44Om44KtDQor44OV44Kv44OP44OpLOODpuOCreOCsw0KK+ODleOCuOODouODiCzjgqjjg6rjgrMNCivjg5vjgrfjg44s44K544Of44KqDQor44Ob44Oq44Kw44OBLOOCuOODpeODs+OCpOODgQ0KK+ODnuOCreODjizjgr/jgrHjgqoNCivjgrPjg5/jg6Qs44OO44Oc44OrDQor44Kz44OQ44Ok44K3LOODkuODreOCtw0KK+OCq+ODn+OCr+ODnCzjgrHjg7PjgrgNCivjg57jg4Tjgqos44Kt44Oo44K3DQor44OK44Kr44OBLOOCreODqOOCtw0KK+OCs+OCueOCrizjg6jjgrfjg58NCivjgqvjg4Tjg57jgr8s44OI44K344Kr44K6DQor44Kr44Ks44Ok44OeLOODnuOCteODj+ODqw0KK+OCr+OCvCzjg5/jgq3jgqoNCivjgq/jg57jg4As44Oe44K144Ki44KtDQor44Kz44K444On44KmLOOCteODiuOCqA0KK+OCq+OCt+OCr+ODnizjgrHjg7Pjgr7jgqYNCivjgq3jgq/jg4Es44Oo44K344OS44K1DQor44Kv44Oe44OOLOODnuOCteODpuOCrQ0KK+OCs+ODkOODpOOCtyzjgrfjg6Xjg7PjgrgNCivjgrPjg5Djg6Tjgrcs44OO44OW44KzDQor44Kz44OL44K3LOOCseODs+OCpOODgQ0KK+OCs+ODkOOCt+OCrOODryzjg5Ljg4jjgrcNCivjgqvjgqTjg4ks44Of44ObDQor44Kv44Ot44KtLOOCuOODpeODsw0KK+OCq+ODiuOCv+ODiyzjg6rjgqgNCivjgq3jgr/jgqzjg68s44OK44Kq44K/44KrDQor44Of44K644Oi44OILOODiuODq+OCrQ0KK+ODn+ODpOOCquOCqyzjgrHjg7Pjg63jgqYNCivjg6Djg6njgr8s44Kx44Oz44K4DQor44Oi44Oq44K/LOODkuODh+ODiOODog0KK+ODpOODiuOCruODgCzjgqjjg6rjgrMNCivjg6Tjg57jgrbjgq0s44Kx44OzDQor44Ok44Oe44Oi44OILOODpOOCueODjuODqg0KK+ODqOOCtCzjg4jjg6Ljg47jg6oNCivjg6jjg43jg4As44Om44Of44KzDQor44Ov44KzLOODquOCqA0KK+OCouOCq+ODj+ODjSzjg5Ljg63jgqLjgq0NCivjgqLjgrXjg5ks44Kr44OoDQor44Ki44Op44KkLOODkuODh+OCqg0KK+OCpOOCseODgCzjg6jjgrfjgr/jgqsNCivjgqTjgrfjg4ks44Om44Kt44KzDQor44Kk44K644OOLOODn+ODhOODkuODrQ0KK+OCpOODiOOCpizjgr/jgrHjgrcNCivjgqTjg47jgqbjgqgs44OO44OW44K/44KrDQor44Kk44Ov44K/LOODqOOCt+ODkuODrQ0KK+OCpuOCq+OCpCzjg5LjgrXjg4rjgqwNCivjgqjjg4jjgqYs44OS44Ot44KtDQor44Kq44Kq44K144KrLOOCv+ODhuOCrQ0KK+OCquOCquODi+OCtyzjg5/jg4Tjg6sNCivjgqrjg6Djg6ks44OI44Oi44KzDQor44Kq44Kr44OOLOODpOOCueODleODnw0KK+OCquOCrOODryzjgr/jgq/jg6QNCivjgqrjgrbjgq0s44K/44Kr44Om44KtDQor44Kq44OI44Ks44OvLOODquODp+OCpuOCsw0KK+OCq+OCteOCpCzjg4rjgqrjgrMNCivjgqvjgrnjgqws44K144OK44KzDQor44Kr44OI44KmLOOCseODs+OCpOODgeODrQ0KK+OCq+ODoeOCv+OCqyzjgr/jgqTjgrnjgrENCivjgqvjg6/jgrDjg4Es44Ki44Om44OfDQor44Kr44Ov44OQ44K/LOOCouODpuODnw0KK+OCreOCv+OCrOODryzjgr/jgrHjgrcNCivjgq3jg6Djg6ks44Oo44K344Kr44K6DQor44Kt44Oq44K144KzLOODhuODg+ODmuOCpA0KK+OCr+ODqeODj+OCtyzjgr/jgqvjgqLjgq0NCivjgrTjgqbjg4As44K/44Kx44OS44OtDQor44Kz44OG44OpLOOCreODn+ODkuODrQ0KK+OCs+ODkOODpOOCtyzjg4rjg4TjgrMNCivjgrPjg57jg4Tjg5Djg6ks44OI44Oi44OS44K1DQor44K144Kk44OI44KmLOODhuODq+ODkuOCtQ0KK+OCteOCq+OCpCzjgr/jgqvjg6bjgq0NCivjgrXjgq/jg6njgqQs44K144OA44Oo44K3DQor44K144OI44KmLOOCouOCrQ0KK+OCteODr+OCteOCrSzjgr/jgqvjgrcNCivjgrfjg57jg44s44OI44K344Ki44KtDQor44K344On44Km44OALOOCr+ODnw0KK+OCt+ODs+OCv+ODiyzjgrHjg7Pjgr8NCivjgrnjgq7jg6Tjg54s44K/44Kr44ONDQor44K744Kt44Oi44OILOOCq+ODhOOCouOCrQ0KK+OCv+OCq+ODj+OCtyzjg6zjgqQNCivjgr/jgrDjg4Es44Ov44K/44OrDQor44K/44OB44OQ44OKLOODiuOCquODiA0KK+OCv+ODiuOCqyzjgrXjg4HjgqgNCivjgr/jg57jgq0s44OK44Kq44KzDQor44OE44Kr44OALOODhuODhOODpA0KK+ODhOODnOOCr+ODqSzjgr/jgq/jg6QNCivjg4njgqQs44OO44OW44K/44KrDQor44OI44OALOOCt+ODpeODs+OCueOCsQ0KK+ODiuOCrOOCteOCqyzjg5/jg4HjgrMNCivjg4rjgqvjgrfjg54s44Ki44Kt44OS44OtDQor44OK44Kr44OL44K3LOODn+ODieODqg0KK+ODiuOCq+ODoOODqSzjg57jg6YNCivjg4rjgqvjg6Tjg54s44K/44Kx44K3DQor44OL44K344OOLOODpuOCqw0KK+ODjuOCr+OCqizjgqvjgqrjg6oNCivjg5DjgrPjgrcs44K344Oz44K0DQor44OP44K/44OOLOODqOOCpuOCsw0KK+ODj+ODpOOCtyzjgrXjg4jjgrMNCivjg4/jg6njg4As44Ki44OE44K3DQor44OS44Op44KkLOODpuOCpuOCueOCsQ0KK+ODkuODreOCqCzjgqLjg4TjgrcNCivjg5Xjgq/jg4As44K144Ok44KrDQor44OV44K444Og44OpLOOCouOCreOCsw0KK+ODleODq+OCq+ODryzjg5Ljg63jgrMNCivjg5vjgr3jg4As44K344Ol44Oz44K0DQor44Oe44Ko44Kr44OvLOODn+ODrw0KK+ODnuOCteODiOOCpuODnyzjg57jgqTjgrMNCivjg57jg4Tjgqrjgqss44OI44Oi44KzDQor44Oe44OE44OQ44OpLOOCouOCreOCsw0KK+ODn+OCpuODqSzjgq3jg6jjg57jgrUNCivjg5/jgr7jg4/jgr8s44OB44KoDQor44Of44OP44OpLOODnuOCteOCrQ0KK+ODn+ODpOODoOODqSzjgqLjg6QNCivjg6Djg6njgr8s44Kv44Of44KzDQor44Oi44OqLOOCr+ODn+OCsw0KK+ODouODreOCqCzjg5Ljg63jgqvjgroNCivjg6Tjg4rjgq7jgrXjg68s44Kx44Kk44K544KxDQor44Ok44Oe44Ks44K/LOODnuOCs+ODiA0KK+ODpOODnuODgCzjg47jg5bjgrMNCivjg6Tjg57jg6Ljg4gs44OG44Or44OS44KzDQor44Ok44Oe44Oi44OILOODr+OCv+ODqw0KK+ODqOOCs+ODpOODnizjgqLjg6bjg58NCivjg6jjgrfjg4As44OK44Kq44KzDQor44Oo44K344Og44OpLOODgOOCpOOCueOCsQ0KK+ODr+ODgCzjgqTjgrXjg6ANCivjg6/jgr/jg4rjg5ks44OS44Ot44K3DQor44K144K144OOLOOCueOCueODoA0KK+OCs+ODgOODnizjgr/jgqvjg5LjgrMNCivjgqvjg6/jgrfjg54s44Oe44K144OK44OqDQor44Kr44Ov44OOLOOCs+OCpuOCpOODgQ0KK+OCq+ODn+OCpuODqSzjgqvjgrrjg5Ljg4cNCivjgrPjg7Pjg44s44OS44OH44KtDQor44Kv44Ok44OeLOOCv+OCseOCtw0KK+OCs+OCpCzjgrvjgqTjgqTjg4Hjg63jgqYNCivjgqvjgrXjgrjjg54s44OS44Ot44OV44OfDQor44Kr44OI44KmLOODiOODouODnw0KK+OCr+ODnOOCvyzjg5Ljg63jg6bjgq0NCivjgrHjgqzjgrXjg68s44OS44K144K3DQor44Kr44Ov44Ku44K3LOODkuODreOCtw0KK+OCq+ODnuODgCzjgr/jgqvjgrcNCivjgq3jgq/jg4Es44Kq44K144OgDQor44Kr44OI44KmLOOCq+OCuuODkuOCsw0KK+ODnuODgeODgCzjgqvjgrrjgqoNCivjg6Djg6njgrXjgq0s44OI44K344KqDQor44Oe44OE44Oi44OILOOCseODs+OCpOODgQ0KK+ODnuOCteOCrSzjgq3jgq/jgqoNCivjg5/jgrrjgr/jg4ss44OK44Kq44OS44KzDQor44Oe44Or44Ok44OeLOOCu+OCpOOCuA0KK+ODoOODqeOCt+ODnizjgr/jg4DjgqoNCivjg5/jgrrjgr8s44Oo44K344KqDQor44Oi44Oq44KkLOOCruODp+OCuA0KK+ODn+ODpOOCtuODryzjg6jjgrfjgqoNCivjg5/jgrrjg44s44Om44Oq44KzDQor44Og44Op44Kk44K3LOODnuODouODqw0KK+ODoOODqeOCq+ODnyzjgqvjgrrjgqoNCivjg6Djg6njg57jg4Qs44Ki44OE44K3DQor44Of44K/44KvLOOCseOCpOOCvuOCpg0KK+ODnuOCqOODgCzjgqLjgq3jgqoNCivjg6Djg6njgqQs44OI44Oo44OfDQor44Oe44OE44OALOOCteODiOOCtw0KK+ODn+ODhuODqSzjg6TjgrnjgqoNCivjg6Ljg6os44OE44OI44OgDQor44Oe44OE44KkLOOCv+OCq+OCtw0KK+ODn+OCpuODqSzjgq/jg4vjgqoNCivjg57jg4Tjg6Ljg4gs44K/44Kx44K3DQor44Oe44OE44K244OvLOODqOOCt+OCqg0KK+ODn+OCq+ODnyzjg4/jg6vjgq0NCivjgr/jg5bjg4Es44Kx44Oz44K4DQor44OK44Kr44K444OeLOODnuOCteODkuODrQ0KK+ODiuOCpOODiOOCpizjgr/jgrHjgqoNCivjg4vjgrfjg4os44Kt44Of44OS44OIDQor44OK44Kr44Ks44OfLOOCt+ODpeOCpuOCpOODgQ0KK+ODiuOCq+ODj+OCvyzjgqvjgrrjg4jjgrcNCivjg4vjgrfjgqrjgqss44OS44Ot44K3DQor44OL44K344OALOODqOOCt+ODreOCpg0KK+ODjuODoOODqSzjgq/jg4vjg5LjgrMNCivjg4rjgqvjg6Djg6ks44OS44OH44Om44KtDQor44OK44Kk44OI44KmLOOCq+OCuuOCouOCrQ0KK+ODi+ODg+OCvyzjg6bjgr/jgqsNCivjg4rjgqvjgrjjg54s44Kr44OE44KqDQor44OK44Kr44K7LOODiOOCt+OCouOCrQ0KK+ODiuOCq+OCrOODryzjg47jg5bjgqoNCivjg4rjgqvjgrjjg54s44Og44ON44K/44KrDQor44OK44Kr44Og44OpLOODm+OCuuODnw0KK+ODiuOCrOOCt+ODnizjg4rjgqrjgrgNCivjgqrjgq0s44K544Of44KqDQor44Kq44Kv44OALOODiOOCt+OCqg0KK+OCquOCquODj+OCtyzjg5Ljg63jgrcNCivjgqrjgqzjg68s44OI44Kq44OrDQor44Kq44K244OvLOODkuODreOCtw0KK+OCquOCquODj+OCtyzjg6bjgr/jgqsNCivjgqrjgqrjg44s44Of44OE44KqDQor44Kq44Kq44Kk44K3LOOCuA0KK+OCquOCquOCq+ODryzjgqvjgqrjg6sNCivjgqrjg6rjgqzjgrUs44Ok44K544K/44KxDQor44Kq44Kq44K/LOODqOOCt+ODkuOCsw0KK+OCquOCtuOCrSzjgrjjg6Xjg7PjgqTjg4ENCivjgqrjg4Djgrfjg54s44K/44OA44K3DQor44Kq44Kq44OS44OpLOOCu+ODhOOCuA0KK+OCquOCquODpCzjg5Ljg4fjg5sNCivjgqrjgqvjg44s44Ki44Kt44KzDQor44Kq44Kw44K3LOOCouOCseODnw0KK+OCquOCquOCpOOCrOODryzjgr/jgqvjg4/jg6sNCivjg4rjgqvjgr/jg4ss44K344Oz44Kk44OBDQor44K344Op44Kq44Ks44OvLOODqeOCpOOCvw0KK+ODiuOCq+ODoOODqSzjg4jjgrfjg5/jg4QNCivjgqLjg5ks44Ko44Of44KzDQor44Kr44Ov44Km44OBLOODnuODquOCqA0KK+OCpOODiOOCpizjgrHjg7Pjgr3jgqYNCivjgrPjgqTjgrrjg58s44K/44Kv44OkDQor44Kr44OK44Kq44KrLOODkuODreOCtw0KK+OCouODquODnizjg6Tjg6jjgqQNCivjgqbjg57jg6Tjg4/jg6ks44Ok44K544OfDQor44Kr44ON44Oe44OELOOCteOCreOCsw0KK+ODleOCq+ODpCzjgq/jg4vjgqLjgq0NCivjgrTjg4jjgqYs44Om44Km44Kk44OB44Ot44KmDQor44K544Ku44Oi44OILOOCr+ODi+OCqg0KK+OCr+ODquODj+ODqSzjg4jjg6jjg5LjgrMNCivjgqrjgqrjgr8s44Om44Kt44KzDQor44K544K644KtLOOCv+OCseOCtw0KK+ODqOOCt+ODgCzjgqvjgrrjg4jjgrcNCivjg4/jg4Pjg4jjg6os44OS44Ot44K3DQor44Kr44OJ44K/LOOCouOCreODkuODrQ0KK+OCpOOCt+OCtuODryzjg6bjgrrjgq0NCivjg5/jg6Tjg6Ljg4gs44Of44OJ44OqDQor44Kq44K4LOODpOOCueODkuODrQ0KK+OCouODqeOCpCzjg4jjgrfjgqLjgq0NCivjgq3jgr/jg6Djg6ks44Oq44Kr44KzDQor44K144Kk44OI44KmLOODqOOCt+ODkuODiA0KK+OCs+ODkOODpOOCtyzjgq3jg6fjgqbjgr7jgqYNCivjg4vjgrfjgqvjg68s44OI44Oi44OfDQor44K/44OK44KrLOOCq+OCuuODkuODrQ0KK+OCuuOCtyzjg6TjgrnjgqoNCivjgqLjg6njgqQs44K344On44Km44OY44KkDQor44Oe44Ko44OH44OpLOODhuODq+ODpuOCrQ0KK+OCs+ODs+ODiSzjg4rjgqoNCivjg4rjgqzjg5vjg6os44Om44Kt44KzDQor44Kk44Ov44K144KtLOODn+ODpOODkw0KK+ODiuOCq+OCv+ODiyzjgr/jgqvjgrcNCivjg4rjgqvjgqzjgq0s44Kx44Kk44KzDQor44Kv44Ov44OP44OpLOODnuOCs+ODiA0KK+OCueOCuuOCrSzjg6bjgq0NCivjgr/jg4As44Ko44Kk44KtDQor44Ov44OALOODiuOCquOCsw0KK+OCteODjizjg5Ljg63jgrcNCivjg4jjgq3jgr8s44OK44OE44KzDQor44Kz44K144KkLOODpuOCpuOCsw0KK+OCu+OCtOOCqCzjgrXjg4jjgrMNCivjg4rjgqvjgqQs44Ki44OE44OfDQor44OP44Op44OALOODiOOCt+ODnuOCtQ0KK+OCreODjuOCt+OCvyzjg5/jg4HjgqoNCivjg5/jg6Tjgrbjgq0s44Kr44K644OfDQor44K/44Kt44K244OvLOODnuOCteOCouOCrQ0KK+OCteODiOOCpizjgrPjgqbjgqTjg4Hjg63jgqYNCivjg5/jgrrjgrfjg54s44K/44Kx44OrDQor44K/44OL44Kw44OBLOODj+ODq+ODnw0KK+ODnuODhOOCt+OCvyzjgr/jgqvjgrcNCivjgrnjgq7jgqbjg6ks44Kx44Oz44K/44Ot44KmDQor44K/44OL44Ks44KtLOOCu+OCpOOCsw0KK+OCteODiOOCpizjgrfjgrLjgqoNCivjg6Tjg57jgqvjg68s44K144OA44OP44OrDQor44K544K644KtLOOCt+OCsuODkuODrQ0KK+ODiOOCr+ODgCzjg57jg7Pjg4rjg6oNCivjgqTjg6/jg54s44OO44OW44Ki44KtDQor44Kq44Kq44OP44OpLOODpuOCreODiuOCqg0KK+OCt+OCquODjOODnizjg5Ljg4fjg4jjgrcNCivjgrnjgrrjgq0s44Ki44Kt44Oo44K3DQor44K544K644KtLOODqOOCt+OCsw0KK+OCueOCuuOCrSzjg47jg5bjgqLjgq0NCivjgrvjgq0s44Kq44K144OgDQor44K544K644KtLOODhOODiOODoA0KK+OCueOCrOOCqizjg4bjg4TjgrgNCivjgrnjgrrjgq0s44Kx44Kk44K/44Ot44KmDQor44K144OJ44OI44OiLOOCouOCreODqQ0KK+OCt+ODnizjg5/jg47jg6sNCivjgrXjgqTjg4jjgqYs44Kq44K144OgDQor44K544K644KtLOODnuOCteODkuODrQ0KK+OCteOCpOODiOOCpizjg6bjgq3jgqoNCivjgr3jg54s44Kq44K144OgDQor44K144OI44KmLOOCseODs+OCuA0KK+OCt+ODreOCteOCrSzjg6jjgqbjgqTjg4ENCivjgrnjgrrjgq0s44Oo44Km44K444Ot44KmDQor44K544K644KtLOODhuODhOODreOCpg0KK+OCueOCruODouODiCzjg57jgrXjgqoNCivjgrXjgqvjgqQs44K344Oz44Kk44OBDQor44K544K644KtLOOCq+OCuuODpuOCrQ0KK+OCteODiOOCpizjgr/jg4TjgrgNCivjgrfjgqrjgr8s44OI44Oo44KqDQor44K944OeLOOCq+ODs+OCuA0KK+OCt+ODpeODieOCpizjgr/jgqvjgqoNCivjgrXjgq/jg6njgqQs44OI44K344KqDQor44K944Km44OkLOOCu+OCpOOCuA0KK+OCteODr+ODoOODqSzjg4rjg6vjg58NCivjgrvjgqos44Om44Km44K4DQor44K344Of44K6LOODiOOCt+OCqg0KK+OCteOCreODouODqizjgqTjg6/jgqoNCivjgrXjgqTjg4jjgqYs44OS44K144KqDQor44K344Of44K6LOOCqOOCpOOCvuOCpg0KK+OCt+OCquODjuODpCzjgq3jg6jjgqvjgroNCivjgr/jgqvjgq4s44OS44OH44KqDQor44K/44Kt44Kk44K3LOODquODp+OCpuOCuA0KK+ODiOODkCzjg57jgrXjgrcNCivjgr/jgrDjg4Es44Oe44K144KqDQor44K/44Kr44OOLOODoOODjeOCqg0KK+OCv+OCq+ODpOOCuSzjg4jjg6jjg58NCivjgr/jg4rjgqss44K344Ky44OrDQor44K/44Kr44OP44OeLOODqOOCt+OCouOCrQ0KK+ODhOODgeODgCzjg57jg6Ljg6sNCivjgr/jgqvjgqos44Oe44K544OfDQor44K/44OL44Kw44OBLOODn+ODgeOCouOCrQ0KK+ODhOOCuOOCq+ODryzjg6bjgqbjgqTjg4ENCivjg6jjgrfjgrbjg68s44Oe44K144OP44OrDQor44K/44OK44KrLOOCuOODpeODs+OCvuOCpg0KK+OCv+ODnuODqyzjg57jgrXjg58NCivjgr/jgqvjgq4s44Kt44On44Km44KzDQor44OE44ON44OS44OtLOOCuOODpeODs+OCuA0KK+OCv+OCq+ODj+OCtyzjg4jjgrfjgqLjgq0NCivjgqLjgrXjgqQs44Om44Km44K4DQor44K/44Kr44K144KtLOOCouOCreODqQ0KK+OCv+OCq+ODiuODnyzjg57jgrXjg6sNCivjg4jjg6Ljg4rjgqws44OE44ON44Kr44K6DQor44K/44Kr44KuLOOCpOODhOOCqg0KK+ODhOOCq+ODouODiCzjgqLjgq3jgqoNCivjg4bjg6njgqbjg4Es44K144OA44Om44KtDQor44K/44OO44Kq44KrLOOCueOCueODoA0KK+OCpuOCueOCrizjgqvjgrrjg5Ljg60NCivjgqbjg4Tjgq0s44OG44OE44KqDQor44Km44OB44OALOOCseODs+OCueOCsQ0KK+OCpuODoeODoOODqSzjg4jjgrfjgqoNCivjgqbjg44s44OI44K344OS44OHDQor44Ov44K/44OK44OZLOODkuOCteODpuOCrQ0KK+ODr+OCv+ODiuODmSzjgqvjg4Tjg4rjg6oNCivjg6/jgr/jg4rjg5ks44Kz44Oz44K044KmDQor44Ov44OALOOCv+OCseODn+ODhA0KK+OCquOCquOCvyzjg57jgrPjg4gNCivjg4rjgqvjgrjjg54s44Kx44Kk44Kk44OBDQor44OV44Or44K144OvLOODhOODqOOCtw0KK+OCq+OCt+ODr+OCrizjgrMNCivjg4/jgr8s44K344On44Km44K544KxDQor44Km44K344K444OeLOODnuOCteOCq+OCug0KK+ODnuODhOOCpCzjgqLjgq3jg6kNCivjgqvjg6/jg4os44OA44Kk44K444Ot44KmDQor44Of44Ok44Oi44OILOOCv+OCq+ODkuOCtQ0KK+ODqOOCt+ODgCzjgrnjg5/jg6bjgq0NCivjgqrjgqrjgqvjg6/jg6ks44Ky44Oz44K/44Ot44KmDQor44K544Ok44OeLOOCr+ODs+ODreOCpg0KK+OCueOCuuOCrSzjg6bjgqbjgrgNCivjgq/jg4vjgq7jgr8s44Oo44Km44Kk44OBDQor44Kt44OJLOODnuOCteOCtw0KK+OCpOOCt+OCpCzjg4Hjgqvjg4jjgrcNCivjgqbjgqjjg4As44K/44Kr44K3DQor44Kk44OB44Kr44OvLOOCq+OCuuOCqg0KK+OCquOCteOCuOODnizjg4jjgrfjg6QNCivjgqbjgqjjg6Djg6ks44OI44K344OS44OHDQor44Kt44Og44OpLOODiOOCreODgQ0KK+ODqOOCs+ODpOODnizjg5LjgrXjgqoNCivjgqTjg4jjgqYs44Oe44K144Om44KtDQor44Of44Ok44OZLOOCq+OCuuODiA0KK+OCv+ODnuOCpCzjgqvjgrrjg5/jg4ENCivjgrPjg6os44Kz44Km44Kk44OB44Ot44KmDQor44Kk44Ov44K144OvLOODnuODiuODlg0KK+ODqOOCt+ODpOOCuSzjgrTjgqYNCivjg57jgr/jgq0s44K344Oz44K0DQor44Ok44Oe44Oi44OqLOOCq+ODhOOCqg0KK+OCv+OCq+OCvyzjg47jg6rjgqoNCivjgrnjg4njgqYs44K344On44Km44KzDQor44Km44Ko44Og44OpLOODpuOCv+OCqw0KK+OCueOCuuOCrSzjg5/jg47jg6sNCivjgrnjgrrjgq0s44Ki44Kt44OpDQor44Ki44Op44KtLOOCu+OCreODjQ0KK+OCq+ODgCzjgqLjgq3jg6kNCivjg4vjgrfjg6jjg6os44Of44OO44OrDQor44Kk44OK44OQLOOCq+OCuuODiA0KK+ODm+ODquOCpCzjg4Tjg43jgqoNCivjgrnjg4njgqYs44Oe44K144OS44KzDQor44K344Ot44Ok44OeLOOCsw0KK+ODhuODqeOCpCzjgqLjgq3jgrMNCivjg57jg4Tjg6Ljg4gs44OK44Kq44K/44KxDQor44Kk44OI44KmLOOCu+OCpOOCuA0KK+OCveODiOODpOODnizjgqvjg4Tjg47jg6oNCivjg5Ljg6njgqrjgqss44Ok44K544K3DQor44OS44Op44KtLOOCv+ODouODhA0KK+OCv+ODiuODmSzjg6bjgqbjgrjjg63jgqYNCivjgr/jg6Hjg4Hjgqss44K/44OG44KqDQor44Oo44ON44OALOODiOOCt+ODkuODhw0KK+OCqOOCuOODnizjg4jjg6Ljg47jg6oNCivjgr/jgqvjg4/jgrcs44Of44K144KzDQor44OG44Op44KqLOODkuODreODkuOCtQ0KK+ODm+ODs+ODgCzjg6bjg58NCivjgqrjg4Hjg6os44Ok44K544OS44OtDQor44Kq44Kq44KkLOODiuOCquODnw0KK+OCq+ODr+OCpCzjg5/jg47jg6sNCivjg6Djg6njgqvjg58s44Of44Oo44K3DQor44OK44Kr44K444OeLOODkuODiOOCtw0KK+OCpOOCt+ODj+ODqSzjg5Xjg5/jgr/jgqsNCivjgqLjgqvjg5vjg6os44Of44OE44OO44OWDQor44Ok44K544OALOOCouOCreODqQ0KK+ODqOOCs+OCuyzjg4jjg6LjgrfjgrINCivjg6jjgrfjgqvjg68s44OI44K344Ot44KmDQor44Ok44Oe44Kw44OBLOODn+ODjuODqw0KK+ODqOOCt+ODoOODqSzjg57jgrXjg5LjgrMNCivjg6jjg43jg4As44Kr44Kq44OrDQor44Ok44Oe44K344K/LOOCt+ODp+OCpuOCvuOCpg0KK+ODpOODnuODgCzjgqjjgqTjgr7jgqYNCivjg6Tjg57jgrbjgq0s44K544K544OgDQor44Oo44K344OALOODkuODreOCtw0KK+ODpOODnuOCv+ODiyzjg5Ljg63jg4TjgrANCivjg6Tjg57jg40s44Oo44ON44K/44KrDQor44Ok44Oe44Kr44OvLOOCuOODpeODs+OCpOODgQ0KK+ODqOOCt+ODgCzjgr/jgqvjgqoNCivjg6Tjg57jgrXjgq0s44OO44Oq44KqDQor44Ok44Oe44Oi44OILOODhuODq+OCqg0KK+ODqOOCs+OCvyzjgqjjgqTjgqTjg4ENCivjg6Tjg57jg4As44Kr44OE44OS44OtDQor44Oo44K344OOLOODgOOCpOOCueOCsQ0KK+ODqOOCt+ODgCzjg6Djg4TjgqoNCivjg47jg6Djg6ks44Oe44K144K/44KrDQor44Ok44Oe44OALOOCteODiOODqw0KK+OCpOOCt+OCq+ODryzjg4Hjg6jjgr/jgrENCivjgrnjgrrjgq0s44OS44Ot44OV44OfDQor44Oe44K544OALOOCseODs+OCuA0KK+OCpOODnuOCpCzjg57jgrXjgr7jgqYNCivjgq3jg6Xjgqbjgr3jgrjjg7Ms44Kx44Oz44K544KxDQor44Ok44Oe44OALOOCouOCreODqQ0KK+ODkuODqeODjizjgr/jgqTjgq0NCivjg4rjgqvjg4vjgrcs44Kr44K644K344KyDQor44K/44OE44K/LOOCt+OCsuODqw0KK+ODn+ODoOODqSzjg57jgrXjgqoNCivjg5Ljg6njg57jg4Qs44K144OA44KqDQor44OI44Of44K/LOODnuOCteODkuODrQ0KK+OCs+ODkOODpOOCtyzjgrfjg7PjgqTjg4Hjg63jgqYNCivjgr/jgrHjg4rjgqss44Oe44K144OS44OtDQor44Ki44Oe44OOLOODjuODquOCsw0KK+OCpOOCt+OCpCzjgq3jg6fjgqbjgrMNCivjgqTjg4cs44K144Kt44KzDQor44Kq44Kr44OALOODquOCqOOCsw0KK+ODkuODqeOCpOOCtyzjg57jg6oNCivjg6jjgrfjg6Ljg4gs44OS44Ot44KzDQor44Kr44Ov44K344OeLOODnuODpuODnw0KK+ODiOODkOOCvyzjg47jg6rjgqvjgroNCivjgr/jg4rjgqss44OS44Kr44OrDQor44Ki44Oz44OZLOODnuODiuODnw0KK+OCv+OCq+ODj+OCtyzjg57jgrXjg5Ljg60NCivjg4jjg5/jg6Tjg54s44Oo44K344Ki44KtDQor44K/44Kr44Ok44OeLOODiOOCt+ODpuOCrQ0KK+ODn+ODpOOCt+OCvyzjg5/jg47jg6sNCivjg4/jgrfjg6Ljg4gs44Of44Kt44KqDQor44OI44Ks44OhLOODn+ODr+OCsw0KK+ODjuOCsOODgSzjgqvjgrrjg57jgrUNCivjg47jgrDjg4Es44Ki44Kt44OpDQor44K944Km44Of44OkLOOCseODs+OCuA0KK+OCreODoOODqSzjg6jjgqbjgrgNCivjgqvjg4jjgqYs44OI44Oi44Om44KtDQor44K544K644KtLOOCseODs+OCuA0KK+OCquOCq+ODgCzjg5Ljg63jg58NCivjg6Tjg44s44K444Ol44Oz44KzDQor44Kq44OO44K144OILOODj+ODsw0KK+ODnuODhOODgCzjg6jjgrfjgqLjgq0NCivjgq3jg6Djg6ks44K/44Kr44K3DQor44K/44Og44OpLOODiOODouODjuODqg0KK+OCq+ODiOOCpizjg4jjgrfjg6QNCivjgqTjg4zjg57jg6ss44OS44Ot44K4DQor44Kq44OO44OH44OpLOODiuOCquOCsw0KK+OCueOCuuOCrSzjg4Hjg4/jg6sNCivjgr/jg4vjgqvjg68s44Ob44K644KoDQor44K144Kv44OeLOOCt+ODng0KK+OCpOODnuODoOODqSzjg6vjg6rjgrMNCivjgqjjgqTjg4njg6Es44Om44KtDQor44Oo44K344KkLOOCv+ODgOODkuODrQ0KK+OCquOCquOCv+OCrSzjg6bjg5/jgrMNCivjgq/jgrnjg6Ljg4gs44Kk44K144KqDQor44Of44Ok44K344K/LOODpuOCreOCqg0KK+ODnuODgeOCpCzjgqvjgrrjg5Ljg60NCivjg4/jg6Tjgrfjg4As44K/44Kr44OI44K3DQor44OP44Or44OP44OpLOOCv+OCq+OCtw0KK+ODhuODqeODouODiCzjg6bjgqbjgrjjg63jgqYNCivjg57jg4Tjg6Ljg6os44Kr44K644KqDQor44Ov44K/44OK44OZLOOCs+OCpuOCuA0KK+OCq+ODjeOCsyzjg6TjgrnjgrcNCivjgqrjg6rjgqzjgrUs44Oe44OE44OO44OqDQor44OE44Kr44Oi44OILOODkuODreODn+ODgQ0KK+ODqOOCt+ODgCzjg5/jg4oNCivjg4vjgrfjg4As44OS44K144KoDQor44OV44Or44Kr44OvLOODquOCqA0KK+ODoOODqeOCq+ODnyzjgr/jgqvjgqoNCivjgqrjgqrjg5Djg6Tjgrcs44Kz44Km44Kt44OBDQor44K144OI44KmLOOCseOCpOOCsw0KK+ODpOODnizjg5Xjg5/jgrMNCivjg5/jg6Tjgr8s44K/44Kr44OG44OrClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3BlcmYvZGF0YS9jb2xsYXRpb24vVGVzdE5hbWVzX0NoaW5lc2UudHh0IGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3BlcmYvZGF0YS9jb2xsYXRpb24vVGVzdE5hbWVzX0NoaW5lc2UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzNDJiMDAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvcGVyZi9kYXRhL2NvbGxhdGlvbi9UZXN0TmFtZXNfQ2hpbmVzZS50eHQKQEAgLTAsMCArMSwxMDg5NSBAQAor77u/75e+6Jm55aaCDQor5LiB5LiA6LOiDQor5LiB5bed5YGJDQor5LiB5b+D5bWQDQor5LiB5byY5YWJDQor5LiB5Lu75rOVDQor5LiB5b+X5a6PDQor5LiB5bm45aesDQor5LiB5L+K5aSrDQor5LiB5bu65paHDQor5LiB5pig57SUDQor5LiB576/5paHDQor5LiB5ZOyDQor5LiB5YGJ5rCRDQor5LiB5ZyL5qKFDQor5LiB5reR546yDQor5LiB55Sm5Y2XDQor5LiB5q+T5b2lDQor5LiB6ZuN5ZOyDQor5LiB57a65oWnDQor5LiB5oWn5bWQDQor5LiB55Kf5qWTDQor5LiB6K2955CzDQor5LiB6YuQ6Y6wDQor5Y2c5q2j5YCrDQor5LqO5byL57+UDQor5LqO56eA576ODQor5LqO56eJ5byYDQor5LqO5riF6I+vDQor5LqO5q6/6IGWDQor5bGx5YKRDQor5bC55a+45qyjDQor5bC55bGF5omNDQor5bC55oyv5aiBDQor5bC555Ge6LGQDQor5bC55puJ5oGpDQor5LuH5a6255CqDQor5a2U5a6I5LitDQor5a2U5pm65p2wDQor5a2U57mB6ZyWDQor5bCk5b+D55GcDQor5bCk5ZCf5paHDQor5bCk6ImvDQor5bCk5piO5LuyDQor5bCk5L+K6Z+/DQor5bCk5pif562WDQor5bCk5YGJ5LuVDQor5bCk5reo57qTDQor5bCk5qy95qiCDQor5bCk55uf6LK0DQor5bCk5a+s5a6PDQor5bCk6Z+755CHDQor5bCk6JKU6JCxDQor5paH5b+X5b+gDQor5paH55yf6IqxDQor5paH5YSA6KmgDQor5pa55aOr6YqYDQor5pa55aSp5LitDQor5pa55paH6YuSDQor5pa55rC45riFDQor5pa55rGd6IKyDQor5pa55a2d5ZCbDQor5pa55b+X5piODQor5pa556eA5pWPDQor5pa55L2z5L+KDQor5pa55bm45a6cDQor5pa55oCh5r2UDQor5pa56ZW35o+aDQor5pa55L+K6ZuEDQor5pa55aWV5paMDQor5pa55bu65pm6DQor5pa55b2l56iLDQor5pa55pig6IqsDQor5pa55p+P5qy9DQor5pa556eL6YymDQor5pa56Iul54+KDQor5pa56YeN5YexDQor5pa55pmJ5b63DQor5pa55YGl5YmbDQor5pa55b2p5a6cDQor5pa55reR6IqsDQor5pa55reR5YSSDQor5pa55Yex546yDQor5pa55pmv5byYDQor5pa5562W5rCRDQor5pa56ZuF55CqDQor5pa55oSb54+NDQor5pa555Ge6YGgDQor5pa56KOV5qy9DQor5pa55ZiJ6IiIDQor5pa557+g6bS7DQor5pa55oWn55C0DQor5pa56Z2c5a6cDQor5pa555OK5YSADQor5pa56bqX6ZuFDQor5pa56ZCY6YuSDQor5pa56I+A6JCNDQor5q+b5paH5YuHDQor5q+b5L2p5aifDQor5q+b5b2l5ZasDQor5q+b5reR6IqsDQor5q+b5ryi5qKFDQor5rC056Wl6IuTDQor54mb6LK06LOiDQor546L5LiA54+NDQor546L5LmD5L+QDQor546L5Yqb5bmzDQor546L5LiK57atDQor546L5aOr5b+gDQor546L5aOr5qauDQor546L5aOr6LGqDQor546L5aSn5piMDQor546L5a2Q5oiQDQor546L5a2Q6IuxDQor546L5a2Q54aZDQor546L5bCP6IqsDQor546L5Lit5bmzDQor546L5Lit5oaTDQor546L5bC56IGWDQor546L5LuB5ZCbDQor546L5LuB5a6XDQor546L5LuB6IicDQor546L5YWD5YqpDQor546L5YWD6IiIDQor546L5Y+L5b+XDQor546L5aSp5paHDQor546L5bCR5paHDQor546L5b+D5b+gDQor546L5b+D5oChDQor546L5b+D5pm6DQor546L5paH5bmzDQor546L5paH5ZCbDQor546L5paH5b+XDQor546L5paH5p2wDQor546L5paH6YOBDQor546L5paH55CqDQor546L5paH55GkDQor546L5paH6bS7DQor546L5pa55oChDQor546L5pyI5am3DQor546L5LiW5a6HDQor546L5LiW5piODQor546L5LiW5YKRDQor546L5LiW5bujDQor546L5LiV6YqTDQor546L5Y+v5qyjDQor546L5ben55GpDQor546L5byY5q+FDQor546L5q2j5aiBDQor546L5q2j6YGUDQor546L5rC45LuBDQor546L5rC45piHDQor546L5rC46KqgDQor546L546J5paHDQor546L546J54+gDQor546L546J6ZuyDQor546L55Sf5YuzDQor546L56uL5qKFDQor546L56uL55GLDQor546L5Luy55CmDQor546L5YWJ6bqDDQor546L5ZCJ5L2zDQor546L5aaC546JDQor546L5a6H5riFDQor546L5a6J5YexDQor546L5pet5YWoDQor546L5pyJ5qyKDQor546L6Ieq5by3DQor546L5L2Q6LyUDQor546L5Lyv6YC4DQor546L5Yip55SfDQor546L5ZCb55GeDQor546L5aaZ57SFDQor546L5a2d5ZCbDQor546L5a6P5LuBDQor546L5a6P5ZOyDQor546L5a6P5ZiJDQor546L5bqP57a4DQor546L5b+X5LuBDQor546L5b+X5paHDQor546L5b+X5byYDQor546L5b+X5ZGIDQor546L5b+X5b+gDQor546L5b+X5bOwDQor546L5b+X5YGJDQor546L5b+X5riFDQor546L5b+X5qy9DQor546L5b+X6KqgDQor546L5b+X6LGqDQor546L5b+X6YqYDQor546L5p2P5aaCDQor546L56eA5LqRDQor546L56eA6IqsDQor546L56eA54+gDQor546L56eA6ZuvDQor546L56eA5qS/DQor546L6IKy5b63DQor546L6LC356WeDQor546L5Lqe5b+XDQor546L5L6d6Z+7DQor546L5L2z54+NDQor546L5L2z55CqDQor546L5L2pDQor546L5L2p6Z+zDQor546L5L2p6KmpDQor546L5Z2k6LOiDQor546L5a2f6KyZDQor546L5a6X5qOLDQor546L5a6c5b2lDQor546L5bKh6Zm1DQor546L5b+15oWIDQor546L5oCh5LuBDQor546L5oCh5paHDQor546L5oCh5pa5DQor546L5oCh54+NDQor546L5oCh5riFDQor546L5oCh5am3DQor546L5oCh5pm0DQor546L5oCh6ZuFDQor546L5oCh6JiLDQor546L5om/6IicDQor546L5piO5LuBDQor546L5piO54+KDQor546L5piO5a+MDQor546L5piA54+pDQor546L5qyj5LmLDQor546L5qyj5oWnDQor546L5rOT57+UDQor546L5rK76YKmDQor546L546r5qi6DQor546L6Iqz5oWnDQor546L6YK16YOBDQor546L6YeR6I+vDQor546L6Zuo5rmYDQor546L5Lqt6YieDQor546L5L+h5LuBDQor546L5L+h5rOwDQor546L5L+h5a+MDQor546L5L+h6KOVDQor546L5L+K5LuBDQor546L5L+K56uLDQor546L5L+K5b2lDQor546L5L+K5riFDQor546L5L+K5YKRDQor546L5L+K5YexDQor546L5L+K5YexDQor546L5L+K5a+MDQor546L5L+K5qy9DQor546L5L+K6LaFDQor546L5L+K6YGTDQor546L5L+K6b6NDQor546L5L+e5paHDQor546L5Yag5YCrDQor546L5Yag54S2DQor546L5YmH5YudDQor546L5YuB5YeMDQor546L5ZOB5reHDQor546L5aWV5ZCbDQor546L5aWV6YieDQor546L5ae/5LuKDQor546L5ae/6JCNDQor546L5aiB6IO9DQor546L5a6j5Y2/DQor546L5bu65bGxDQor546L5bu65paHDQor546L5bu65pS/DQor546L5bu65YexDQor546L5bu65qy9DQor546L5bu66ZuEDQor546L5bu65paMDQor546L5b2l6IO9DQor546L5b2l5pm6DQor546L5b6L5LmLDQor546L5oCd5o23DQor546L5oCd5r2UDQor546L5pS/5rK7DQor546L5pS/5qyKDQor546L5pit5Lq6DQor546L5pit5reRDQor546L5pit5oe/DQor546L5pif55qTDQor546L5pix5YexDQor546L5pix6JiLDQor546L5p+P5qyjDQor546L5p+P5aCvDQor546L5p+P6YieDQor546L5rS+6LuSDQor546L54K66JKoDQor546L546y6IuxDQor546L55uI5b+DDQor546L55uI5YKRDQor546L55uI6ZuFDQor546L56WI6YieDQor546L56eL5oOgDQor546L57SADQor546L576O546JDQor546L576O546yDQor546L576O5reRDQor546L576O5oOgDQor546L576O6ZuvDQor546L576O5oe/DQor546L6Ie05qOgDQor546L6Iul562RDQor546L6Iux5paHDQor546L6Iux6JOJDQor546L6KGN5piTDQor546L6LKe5oe/DQor546L6YOB5qyjDQor546L6YOB5am3DQor546L6YOB6I+BDQor546L6YOB54+6DQor546L6Z+L57+UDQor546L5L+u6JitDQor546L5ZOy6IGwDQor546L5a625YGJDQor546L5a6255GcDQor546L5bGV55GLDQor546L5oKF5aaCDQor546L5oyv5a6HDQor546L5oyv5rWpDQor546L5pmC6JSaDQor546L5qGC5bKRDQor546L5rW35aSpDQor546L5rWp5YCrDQor546L54+u5YCrDQor546L54+u55KHDQor546L57Sg5Y2/DQor546L57SU576ODQor546L6Iy56aaoDQor546L5YGJ5rCRDQor546L5YGJ5beeDQor546L5YGJ6LuNDQor546L5YGJ5b63DQor546L5YGl5rCRDQor546L5YGl5YuzDQor546L5ZyLDQor546L5ZyL5b2lDQor546L5ZyL6ZqGDQor546L5ZyL6b6NDQor546L5Z+35L+hDQor546L5Z+55qi6DQor546L5amJ55GcDQor546L5bSH5piODQor546L5bSR6b6NDQor546L5b2p6ZyeDQor546L5oOH5oWnDQor546L5ZWf5a6XDQor546L5ZWf5qi1DQor546L5pWP6LKeDQor546L5pWP6YqTDQor546L5pmo5puEDQor546L5qKF6JitDQor546L5rez5oWnDQor546L5riF6bS7DQor546L5reR5oChDQor546L5reR5YagDQor546L5reR55yJDQor546L5reR5aifDQor546L5reR5aqbDQor546L5reR6ZuvDQor546L5reR5oWnDQor546L5reR6Z+7DQor546L5reo55GpDQor546L56Wl5a6HDQor546L56Wl6ZyWDQor546L57S555yfDQor546L6I6J5rG2DQor546L6I6J6ZuvDQor546L6Zuq5aaCDQor546L5YKR56uLDQor546L5Yex5byYDQor546L5Yex5oChDQor546L5Yex6JKCDQor546L5Yud5byYDQor546L5Yud6ZuEDQor546L5Y2a5paHDQor546L5Y2a5L+uDQor546L5aCv5byYDQor546L5am35YSADQor546L5a+M5piMDQor546L5b6p6LydDQor546L5oOg5ZCbDQor546L5oOg546yDQor546L5oOg5pWPDQor546L5oOg5oWnDQor546L5pWm5q2jDQor546L5pm05ae/DQor546L5pmv5YWDDQor546L5pmv5rOJDQor546L5pm65byYDQor546L5pm656uLDQor546L5pm655uKDQor546L5pm66bO0DQor546L5pm66b6NDQor546L5pyd5rC4DQor546L5pyd6Y21DQor546L5qy95bidDQor546L5rmY6ZuyDQor546L55CqDQor546L55Cm5p6aDQor546L55qT5q2jDQor546L57Sr6ZuvDQor546L57+U5a+nDQor546L6IiS55GcDQor546L6Iic55SfDQor546L6I+B6JitDQor546L6Kmg5oWnDQor546L6LK06b6NDQor546L6YC45L+uDQor546L6YCy6bS7DQor546L6ZaU6Z+LDQor546L6ZuF5Ly2DQor546L6ZuF5ae/DQor546L6ZuF6LKeDQor546L6ZuF5oOgDQor546L6ZuF6ZuvDQor546L6ZuF5YSADQor546L6ZuF5oWnDQor546L6ZuvDQor546L6Zuy55SfDQor546L6aCG6bS7DQor546L5Yuk5ZaEDQor546L5oSP5oOgDQor546L5oWI5oW2DQor546L5oSb5ZiJDQor546L5pWs57+UDQor546L5paw5oWnDQor546L5qaG5a+MDQor546L5q+T6I+BDQor546L5q+T54WHDQor546L54Wn6IiIDQor546L55Ge5ZCfDQor546L55Ge54O9DQor546L55Ge6ZuyDQor546L55Ge6aCkDQor546L55Ge6JaMDQor546L55uf5LuBDQor546L56ic6YieDQor546L6IGWDQor546L6IGW5bCkDQor546L6IGW5rezDQor546L6IGW5qOLDQor546L6IGW57atDQor546L6IGW55GLDQor546L6KOV5q2jDQor546L6KOV5pm6DQor546L6Kmp6YOBDQor546L6Kmp5am3DQor546L6Kmp6ZuFDQor546L6Kmp6aaoDQor546L6YGT5LuBDQor546L6YmF57+UDQor546L6Z2W6ZuvDQor546L6byO5YWBDQor546L5ZiJ5ZCbDQor546L5ZiJ6YOBDQor546L5ZiJ55CqDQor546L5ZiJ6L6yDQor546L5ZiJ5oWnDQor546L5ZiJ6IiIDQor546L5ZiJ6b2hDQor546L5b2w5oeLDQor546L5qau55m8DQor546L5ryi56WlDQor546L552/5ZCbDQor546L56Kp5oW2DQor546L56aP56WlDQor546L57at5aaCDQor546L57at6ZuvDQor546L57at54emDQor546L57+g6I+vDQor546L6JK86b6NDQor546L6LGq5YKRDQor546L6YqY5qKFDQor546L6YqY6bS7DQor546L6bOz5a6cDQor546L5YSA56mODQor546L5b6355qTDQor546L5oW25aCCDQor546L5oWn5ZCbDQor546L5oWn6IuxDQor546L5oWn5YexDQor546L5oWn6ZuvDQor546L5oWn6Z2cDQor546L5qiZ5qy9DQor546L55G+55GcDQor546L6Lyd6YqYDQor546L5YSS6ZqGDQor546L5oay55ufDQor546L5puJ6Z+zDQor546L5puJ6ZuvDQor546L5puJ55GLDQor546L54eV5by3DQor546L6IiI6YKmDQor546L6JWZ5a65DQor546L6Yyr56W/DQor546L6Yym5oWnDQor546L6Z2c5oChDQor546L6Z2c55CqDQor546L6Z2c5oWnDQor546L54i15pqQDQor546L6IeG6Yi0DQor546L6JaH5aqbDQor546L6KyZ57atDQor546L6bS75b+XDQor546L6bS76YieDQor546L56au6KyZDQor546L5a+15oOgDQor546L54Ca5Z+6DQor546L55OK54+uDQor546L55OK55GkDQor546L57mq5bWQDQor546L6K2J6ZuEDQor546L6Z+75reRDQor546L6bWsDQor546L6bqS6YieDQor546L6bqX6IqsDQor546L6bqX5reRDQor546L6bqX55CmDQor546L6bqX6ZuvDQor546L6bqT5pavDQor546L5a+26b6NDQor546L57m85aCvDQor546L6ICA5pqJDQor546L6ICA5oW2DQor546L6ICA6ZC4DQor546L6ZCY6YqYDQor546L6aao5pWPDQor546L6aao6Iu5DQor546L6b2h5qKTDQor546L5YS356mODQor546L5qu75aifDQor546L6LqN6ZyWDQor546L6aGv5Y2JDQor546L6IqK6ZuvDQor546L5ae16ZuvDQor546L5rWf576ODQor546L55CH5ae/DQor546L57+K6J6iDQor546L5qOo5b63DQor546L55Cu55GLDQor546L55Ch6ZuvDQor546L5auG5qO7DQor546L55GL6Yi0DQor546L562x5am3DQor546L562x6JCxDQor546L6Yi65qyjDQor546L6Yi65qSNDQor546L6JOB5YSADQor546L6JaP6ZuvDQor546L5ay/5reRDQor5LiW5r2T6Z2cDQor5LiY55yf57a6DQor5YaJ5YWG54+NDQor5YyF5b+X5paHDQor5YyF5a6u57atDQor5Y+k5LiA55yfDQor5Y+k5pyI5ailDQor5Y+k546J6bOzDQor5Y+k56eA6Yi0DQor5Y+k5L2p546JDQor5Y+k5om/5byYDQor5Y+k5piO5pmfDQor5Y+k5L+K57axDQor5Y+k6Iux5bGxDQor5Y+k5qGC6I+KDQor5Y+k5oOf6YqYDQor5Y+k6I6J6ZycDQor5Y+k5pm65YGJDQor5Y+k6Zuy5LuBDQor5Y+k6Kmp5YSADQor5Y+k5a245ra1DQor5Y+k5L+257a6DQor5Y+46aCG5a6JDQor5Y+y5YWI6bS7DQor5Y+y5piO5Y6fDQor5Y+y5ZyL56aPDQor5Y+y6IGW6bS7DQor5Y+y5puc5b2wDQor5bem5a6X5YWDDQor5bem6JOMDQor55SY5rC46KOVDQor55SY5a2f6b6NDQor55SY5pS/5byYDQor55SY5oOg6I+vDQor55SY6ZyI6ZyWDQor55Sw5LiW6LOiDQor55Sw5YWG55CqDQor55Sw5rKQ5oGpDQor55Sw5L2p54GdDQor55Sw5oChDQor55Sw6Iqz6Iy5DQor55Sw6Iux5b+XDQor55Sw54+u5L+DDQor55Sw5reR5ZCbDQor55Sw5qy95paHDQor55Sw5ZiJ546yDQor55Sw5puJ6YieDQor55Sw55Kn6I+ADQor55Sz5b+X5paMDQor55Sz5a+M6ZGrDQor55m95aSn5bC5DQor55m95YWo5oiQDQor55m95bKR5oChDQor55m95L2z5ridDQor55m95a6c6YyaDQor55m95qyj5p2+DQor55m9546y5oWIDQor55m95oyv5rqQDQor55m96IC/6KGMDQor55m95reR55GcDQor55m95Zac5paHDQor55m96Iic5YWDDQor55m954WM6bqSDQor55m95qau5L+uDQor55m96Z2c5aaCDQor55m96bqX5aicDQor55+z5LmD5aaCDQor55+z5LiW5ZCNDQor55+z546J6bOzDQor55+z5pet55SfDQor55+z6IKy546fDQor55+z5L2z6JOJDQor55+z5a6X5LuBDQor55+z5piO5ZGoDQor55+z6Iqz54+KDQor55+z576O546yDQor55+z5bO75bmzDQor55+z57SU57a6DQor55+z5b2p5oWnDQor55+z5YKR5a6HDQor55+z5pyd5a6JDQor55+z6ZuF5oOgDQor55+z5oW25ZKMDQor55+z6Yym6IiqDQor55+z6aal55GEDQor55+z55GL6Z2cDQor5LyN5LiW5o+aDQor5LyN56eA6JOJDQor5LyN5bu65paHDQor5LyN5a626Kq8DQor5LyN5YGl6bWsDQor5LyN56Kn546yDQor5Lu75omN5L+KDQor5Lu75ZCb5pWPDQor5Lu75L+K5YSSDQor5Lu757SU5oWnDQor5Lu75paw6JitDQor5Lu7562x5riFDQor5Y2x5piO5bq3DQor5ZCR6KW/6Zm9DQor5ZCR5b635a65DQor5a6J5b+X5YGJDQor5oiQ5Li5546yDQor5puy5piM6ZqGDQor5pyx5LmZ55yfDQor5pyx5b+D5oChDQor5pyx5paH56KnDQor5pyx5LiW6YieDQor5pyx5q2j5paHDQor5pyx546J5rG2DQor5pyx5Lqm5Li5DQor5pyx55m+5pmfDQor5pyx5aaN5aaCDQor5pyx5biM5oyvDQor5pyx5b+X5rSLDQor5pyx5rKb5oChDQor5pyx6IKy5L2RDQor5pyx6IKy55GpDQor5pyx5L2z55CqDQor5pyx5a6X6JSaDQor5pyx5b+16IuxDQor5pyx5oCh6Ie7DQor5pyx5p2x5oeJDQor5pyx56eJ5oWnDQor5pyx6YKx5piODQor5pyx5L+K56WlDQor5pyx5L+K6b6NDQor5pyx5aWO5beeDQor5pyx5bu65rOwDQor5pyx5b2l5YSSDQor5pyx5pS/5ZOyDQor5pyx5p+P6JK8DQor5pyx54+N5oWnDQor5pyx56eL5oWnDQor5pyx6Iul5qKFDQor5pyx6YOB5bqtDQor5pyx5Y6f5a6PDQor5pyx5a625q2jDQor5pyx5a625qyjDQor5pyx5a625oWnDQor5pyx5a6557e0DQor5pyx5bOw6Kq8DQor5pyx5pmC5b2lDQor5pyx5pu46LOiDQor5pyx5q635bu3DQor5pyx54+u5YSADQor5pyx56WQ5ZGIDQor5pyx57SU55GpDQor5pyx5YGJ5YKRDQor5pyx5YGl6KqgDQor5pyx5Z+56JCxDQor5pyx5bq36YqYDQor5pyx5pWP6YGTDQor5pyx5reR5oOgDQor5pyx6Zmz5ZWf5rqQDQor5pyx5a+T55CGDQor5pyx5pyd6bqfDQor5pyx6Kmg6IGvDQor5pyx6ZuF6Yi0DQor5pyx5Zej6IqsDQor5pyx55Ge5YuHDQor5pyx6YGU5piODQor5pyx5qau5a6PDQor5pyx56aP5bGxDQor5pyx6bOz6JaHDQor5pyx5oWn55yfDQor5pyx6Lyd6ICADQor5pyx5puJ5pm0DQor5pyx6Z2c5paHDQor5pyx55K/5bC5DQor5pyx6bqX5am3DQor5pyx6Iqu5a6cDQor5pyx55Cs6JOBDQor5qyh6Jit6IuxDQor5rGf5Lit5YGlDQor5rGf5aSp5o6IDQor5rGf5paH5p2+DQor5rGf5paH55OKDQor5rGf5LiW6I+vDQor5rGf5q2j5YKRDQor5rGf546J5Y2JDQor5rGf56uL5bOwDQor5rGf5ZCJ56WlDQor5rGf5oiQ5paMDQor5rGf5ZGI6Zm9DQor5rGf5b+X5a6PDQor5rGf5b+X6ZqGDQor5rGf56eA546yDQor5rGf6IKy6ZyGDQor5rGf5L2z6IqzDQor5rGf5L2z57SUDQor5rGf5L2z6ZyWDQor5rGf5L2p546yDQor5rGf5L2p57iIDQor5rGf5Y2U5YuHDQor5rGf5a2f6IqdDQor5rGf5a2f5r6kDQor5rGf5a6X5ZOyDQor5rGf5a6c6IqzDQor5rGf5a6c5qi6DQor5rGf5bKp6YGUDQor5rGf5b+g6YGgDQor5rGf5oCh6JCxDQor5rGf5oCh56abDQor5rGf5piM6bS7DQor5rGf5piO5p2+DQor5rGf5piO5pu4DQor5rGf5piO55KLDQor5rGf5piO6JedDQor5rGf5p2x5oeLDQor5rGf5qyj5a65DQor5rGf546p6JCpDQor5rGf6Iqd5pWPDQor5rGf6ZW35aO9DQor5rGf5L+h5p2xDQor5rGf5L+K5piODQor5rGf5L+K5YSEDQor5rGf5L+K6IiIDQor5rGf5ZOB5YSADQor5rGf5aiB5b63DQor5rGf5bu66YqYDQor5rGf5b2l6LydDQor5rGf5oGsDQor5rGf5pS/5YSSDQor5rGf5pit6LOiDQor5rGf5p+P6JGmDQor5rGf546y5oWnDQor5rGf57SA5piODQor5rGf576O5oWnDQor5rGf6Iux5L+hDQor5rGf6KGN6b6NDQor5rGf6aKo6YGgDQor5rGf5a626YqYDQor5rGf5oyv5a6HDQor5rGf5pu455GpDQor5rGf54+u5a6ZDQor5rGf57SU546rDQor5rGf5YGl5oiQDQor5rGf5ZyL5oW2DQor5rGf5a+F55SrDQor5rGf5ZWf5LuyDQor5rGf5qKd5Z2HDQor5rGf5reR6LKeDQor5rGf55ub6b6NDQor5rGf5Yex5r2UDQor5rGf5oOg6I+vDQor5rGf5pm657atDQor5rGf6YC45a6JDQor5rGf6ZuF5paHDQor5rGf6ZuF5oOgDQor5rGf5YKz5rGfDQor5rGf55Ge56WlDQor5rGf6KOV5ZyLDQor5rGf5ZiJ5YCrDQor5rGf5qaV5qu7DQor5rGf57+g6IqzDQor5rGf5a+s5oWIDQor5rGf5oWn6IqzDQor5rGf5oWV5bGPDQor5rGf5oa26ZuvDQor5rGf56mO5piODQor5rGf6Yym6LydDQor5rGf6JW+DQor5rGf6LGQ6ImvDQor5rGf6bqX5aifDQor5rGf5Yqt5YCrDQor5rGf5aqeDQor5rGf5qqJ55qHDQor5rGg5rOw5a6PDQor54mf5piVDQor6Im+6Z2S6JOJDQor5L2V5aSn5pawDQor5L2V5LuB55SwDQor5L2V5aSp5oGpDQor5L2V5paH5paHDQor5L2V5paH6JCxDQor5L2V5LiW6ZuEDQor5L2V5rC455CzDQor5L2V546J5r2UDQor5L2V5LqZ5b2sDQor5L2V5YWJ5qu6DQor5L2V5pet5bmzDQor5L2V5ZCb6JCNDQor5L2V5b+X5rWpDQor5L2V5rKb54aZDQor5L2V6IKy5p2wDQor5L2V5Lqr6JOJDQor5L2V5L2z5Y2XDQor5L2V5L2z55yfDQor5L2V5L2z6J6NDQor5L2V5L2p6IqdDQor5L2V5L2p57SUDQor5L2V5YW25r6kDQor5L2V5aeN6JOJDQor5L2V5a2f6LOiDQor5L2V5a2j56emDQor5L2V5a6X5b2sDQor5L2V5a6X54a5DQor5L2V5a6X56anDQor5L2V5a6c5YCpDQor5L2V5a6c55KHDQor5L2V5bKz54+IDQor5L2V5oCh5ZCbDQor5L2V5om/5LuyDQor5L2V5piT5bGVDQor5L2V5piO5a6XDQor5L2V5piO5pu4DQor5L2V5piO56mODQor5L2V5piH5YSSDQor5L2V5p2+55GkDQor5L2V5qyj6LuSDQor5L2V56eJ5qyjDQor5L2V6Iq355GEDQor5L2V6Zuo6ZuvDQor5L2V5L+h5a6XDQor5L2V5L+K5bu3DQor5L2V5L+K6YGUDQor5L2V5L+K6LOiDQor5L2V5Yag6ZyWDQor5L2V5aiB5b63DQor5L2V5bu65qiCDQor5L2V5b2l6aeSDQor5L2V5oCd56mODQor5L2V5pS/57+wDQor5L2V5pit6LOiDQor5L2V54Kz6LOiDQor5L2V56eL6JCxDQor5L2V576O546yDQor5L2V6Iul55GcDQor5L2V6aaZ6JGJDQor5L2V5a626I+BDQor5L2V5bO75p2wDQor5L2V5oyv57atDQor5L2V5rWa6YqYDQor5L2V57Sg5ZCbDQor5L2V5YGl57atDQor5L2V5ZyL5pmfDQor5L2V5bSH57atDQor5L2V5pWP6I+BDQor5L2V5riF6b6NDQor5L2V5reR5am3DQor5L2V5ra1DQor5L2V5Yud5ZCIDQor5L2V5oOg5ZCbDQor5L2V5oOg6Yi6DQor5L2V6IiS5bWQDQor5L2V6YC454S2DQor5L2V6ZuF55CqDQor5L2V5oSP55GpDQor5L2V55Ge576ODQor5L2V6JCx55KHDQor5L2V5ZiJ5bGVDQor5L2V5qau5paHDQor5L2V57at6ICVDQor5L2V6YqY5a6PDQor5L2V5oW26IiIDQor5L2V5oWn5YSADQor5L2V5a245Y6aDQor5L2V5puJ55uIDQor5L2V54eV5bGPDQor5L2V6Yym6aGMDQor5L2V6Z2c5YSADQor5L2V57mUDQor5L2V6bqX5ZCbDQor5L2V5pe76ZycDQor5L2V57+K57a6DQor5L2Z5a2Q6YqYDQor5L2Z5b+D6L6yDQor5L2Z5paH6KOVDQor5L2Z5byY5YGJDQor5L2Z5ZCJ56WlDQor5L2Z5Ly2DQor5L2Z5b+X6b6NDQor5L2Z6L+FDQor5L2Z5L2z6Z+zDQor5L2Z5L2z6IiIDQor5L2Z5L2p5aifDQor5L2Z5Z2q6IqzDQor5L2Z5a2f6ZyPDQor5L2Z5a6X5YSSDQor5L2Z5a6b5YSSDQor5L2Z5b+g54eIDQor5L2Z5piM57+wDQor5L2Z5piO5aifDQor5L2Z5piO5r6kDQor5L2Z5p2x5puJDQor5L2Z5rOV5piMDQor5L2Z6YeR5YW4DQor5L2Z5L+h5YGJDQor5L2Z5L+K5re1DQor5L2Z5L+K5YSSDQor5L2Z5YuB5q+FDQor5L2Z5bid5oW2DQor5L2Z5b2l6ZyWDQor5L2Z5pS/6ZqGDQor5L2Z5pif5p+UDQor5L2Z55uI6YuSDQor5L2Z6Iul5biGDQor5L2Z5YeM5piMDQor5L2Z5a6255GpDQor5L2Z5rOw55S3DQor5L2Z57Sg6JitDQor5L2Z5ZyL5a6JDQor5L2Z5amJ6JCNDQor5L2Z5pmo6I+vDQor5L2Z55ub5qy9DQor5L2Z5oOg5paHDQor5L2Z5pm65YKRDQor5L2Z6ZuF5reRDQor5L2Z5oWI5a60DQor5L2Z55Ge6JCNDQor5L2Z5ZiJ5bOwDQor5L2Z56aP5rWpDQor5L2Z6b2K5aiBDQor5L2Z5oay5a6XDQor5L2Z6KunDQor5L2Z6Kyd6LydDQor5L2Z6bqX55C0DQor5L2Z55Cs55GcDQor5Yip56eA6JitDQor5Yip5b6357WDDQor5ZCz5LmD5YWDDQor5ZCz5Y2D5oWnDQor5ZCz5aSn57atDQor5ZCz5a2Q6LGqDQor5ZCz5Lit5a6PDQor5ZCz5LuB5L2RDQor5ZCz5LuB6LK0DQor5ZCz5YWD5bmzDQor5ZCz5YWD5auIDQor5ZCz5bCR6YieDQor5ZCz5b+D5oOgDQor5ZCz5paH546JDQor5ZCz5paH5oChDQor5ZCz5paH55uKDQor5ZCz5paH5YKRDQor5ZCz5paH55m8DQor5ZCz5paH6Yi0DQor5ZCz5paH5q+FDQor5ZCz5paH5paMDQor5ZCz54Gr5bGxDQor5ZCz5LiW5YGJDQor5ZCz5LiW6YGUDQor5ZCz5LuV5by3DQor5ZCz5Luf5LiADQor5ZCz5bmz5ZKMDQor5ZCz5b+F5YudDQor5ZCz5q2j5aWHDQor5ZCz5q2j6I+vDQor5ZCz5rC45piMDQor5ZCz5rC46KOVDQor5ZCz546J5ZCfDQor5ZCz546J6Iy5DQor5ZCz546J5pmvDQor5ZCz546J6JOJDQor5ZCz56uL5rCRDQor5ZCz56uL5YukDQor5ZCz5LyK6JiLDQor5ZCz5Luy5rOCDQor5ZCz5YWG5paHDQor5ZCz5ZCJ6b6NDQor5ZCz5aaC5qWmDQor5ZCz5a6J6YKmDQor5ZCz5pet5rOwDQor5ZCz6Iez5LuBDQor5ZCz6KGM5LitDQor5ZCz5Ly26bqXDQor5ZCz5ZCb6IKyDQor5ZCz5aaZ5YCrDQor5ZCz5a6P5LuBDQor5ZCz5a6P5Z+6DQor5ZCz5biM56WWDQor5ZCz5b+X5a6PDQor5ZCz5b+X5oGGDQor5ZCz5b+X5YGJDQor5ZCz5b+X5ryiDQor5ZCz5b+X6b6NDQor5ZCz5p2P5peLDQor5ZCz5rKb5pmDDQor5ZCz5rG25rG2DQor5ZCz56eA546yDQor5ZCz56eA57SLDQor5ZCz56eA6bWRDQor5ZCz6IKy5a6XDQor5ZCz6IKy56KpDQor5ZCz6IKy6ZyWDQor5ZCz5Lqe5qyjDQor5ZCz5L6d5aauDQor5ZCz5L6d6JOTDQor5ZCz5L2z5ZKMDQor5ZCz5L2z6IqzDQor5ZCz5L2z5Y2XDQor5ZCz5L2z546yDQor5ZCz5L2z546yDQor5ZCz5L2z5YCpDQor5ZCz5L2z5a65DQor5ZCz5L2z55yfDQor5ZCz5L2z5oOgDQor5ZCz5L2z6JOJDQor5ZCz5L2z5oasDQor5ZCz5L2z5qi6DQor5ZCz5L2z56mODQor5ZCz5L2z6JWZDQor5ZCz5L2z6Z2cDQor5ZCz5L2z6bS7DQor5ZCz5L2p5ZCbDQor5ZCz5L2p6IqzDQor5ZCz5L2p5Z+ODQor5ZCz5L2p54+KDQor5ZCz5L2p546yDQor5ZCz5L2p5ailDQor5ZCz5L2p57SUDQor5ZCz5L2p6JOJDQor5ZCz5L2p5YSSDQor5ZCz5L2p6KutDQor5ZCz5L2p6JOBDQor5ZCz5L6R5bqtDQor5ZCz5YW26ZyWDQor5ZCz5Ye96JOBDQor5ZCz5Y+U6Y6uDQor5ZCz5Z2k56WQDQor5ZCz5Z2k6bS7DQor5ZCz5aWH5ZOyDQor5ZCz5aWH6b6NDQor5ZCz5a2f5a6XDQor5ZCz5a2f6IqsDQor5ZCz5a2f6LKeDQor5ZCz5a2f5aifDQor5ZCz5a2f6Iy5DQor5ZCz5a2f6JOJDQor5ZCz5a2f5oayDQor5ZCz5a2f6YyrDQor5ZCz5a2f6JWODQor5ZCz5a2j55G+DQor5ZCz5a6X5bKxDQor5ZCz5a6X56WIDQor5ZCz5a6X5qGTDQor5ZCz5a6X6ZqGDQor5ZCz5a6X5YSSDQor5ZCz5a6X5oayDQor5ZCz5a6X57+wDQor5ZCz5a6X6IiIDQor5ZCz5a6X6b6NDQor5ZCz5a6a55aGDQor5ZCz5a6c6IqzDQor5ZCz5a6c6LKeDQor5ZCz5a6c56WQDQor5ZCz5a6c56mGDQor5ZCz5a6c5ayqDQor5ZCz5a6b5oChDQor5ZCz5a6b57iIDQor5ZCz5bCa5YCNDQor5ZCz5bCa5YSSDQor5ZCz5bKh5YSSDQor5ZCz5bKx6ZyWDQor5ZCz5bKz5qGQDQor5ZCz5bm45p6dDQor5ZCz5bm455yfDQor5ZCz5bu25pmDDQor5ZCz5b+g5pS/DQor5ZCz5b+g6ZyWDQor5ZCz5oCh5ZCbDQor5ZCz5oCh54+KDQor5ZCz5oCh6JCNDQor5ZCz5oCh5oW2DQor5ZCz5oCh55GpDQor5ZCz5oCh5oayDQor5ZCz5oCh6Z2cDQor5ZCz5oCh5au6DQor5ZCz5om/5ZOyDQor5ZCz5om/55KLDQor5ZCz5oubDQor5ZCz5piT6YGcDQor5ZCz5piM5bqtDQor5ZCz5piGDQor5ZCz5piG55KLDQor5ZCz5piODQor5ZCz5piO5b+gDQor5ZCz5piO6IqzDQor5ZCz5piO54+NDQor5ZCz5piO5ZOyDQor5ZCz5piO5oGtDQor5ZCz5piO6LuSDQor5ZCz5piO6YGUDQor5ZCz5piO55KLDQor5ZCz5piO5YuzDQor5ZCz5piO5puEDQor5ZCz5piO6b6NDQor5ZCz5piO6aGPDQor5ZCz5piV5ae/DQor5ZCz5piH5qmLDQor5ZCz5p2x5ZKMDQor5ZCz5p2x6IC/DQor5ZCz5p2x6ZyWDQor5ZCz5p2+5rKbDQor5ZCz5qyj5L2pDQor5ZCz5qyj5oChDQor5ZCz5qyj5YCrDQor5ZCz5qyj56KpDQor5ZCz5qyj5YSSDQor5ZCz5qyj6bS7DQor5ZCz5rOT546zDQor5ZCz5rK76IuxDQor5ZCz546r5aeNDQor5ZCz55u06ICVDQor5ZCz56eJ5YCrDQor5ZCz56eJ5YuzDQor5ZCz56eJ6ae/DQor5ZCz6Iqz6Z2SDQor5ZCz6Iqz55GcDQor5ZCz6Iqd57evDQor5ZCz6YeH6IqzDQor5ZCz6YeR546JDQor5ZCz6YeR5puGDQor5ZCz6ZW35p+PDQor5ZCz6Zuo5ZOyDQor5ZCz6Z2S6IKyDQor5ZCz6Z2S5bOwDQor5ZCz6Z2S55KwDQor5ZCz5Lqt6Kq8DQor5ZCz5L+h5bm4DQor5ZCz5L+h5a+sDQor5ZCz5L+h6LydDQor5ZCz5L6v55KLDQor5ZCz5L+K5a6PDQor5ZCz5L+K5aWHDQor5ZCz5L+K5p2wDQor5ZCz5L+K5YKRDQor5ZCz5L+K6YGUDQor5ZCz5L+K5YSADQor5ZCz5L+K5b63DQor5ZCz5L+K5q+FDQor5ZCz5L+K57evDQor5ZCz5L+K6LOiDQor5ZCz5L+K6YuSDQor5ZCz5L+K6Ku6DQor5ZCz5L+K5Y+hDQor5ZCz5L+e55GpDQor5ZCz5Yag576kDQor5ZCz5Yag6LOiDQor5ZCz5Yag57+sDQor5ZCz5YuB6b6NDQor5ZCz5ZOB6JOJDQor5ZCz5aWV5oiQDQor5ZCz5aWV576yDQor5ZCz5ae/5YSADQor5ZCz5ae/5qi6DQor5ZCz5aiB6IqzDQor5ZCz5a6j6YuSDQor5ZCz5bu655SfDQor5ZCz5bu655S3DQor5ZCz5bu66IqdDQor5ZCz5bu66YGUDQor5ZCz5bu65b63DQor5ZCz5bu66LOiDQor5ZCz5bu65YuzDQor5ZCz5bu65pe7DQor5ZCz5b2l5oW2DQor5ZCz5b6L6YqYDQor5ZCz5oCd6JCxDQor5ZCz5oCd55GpDQor5ZCz5oCd56mODQor5ZCz5pS/DQor5ZCz5pS/5pe6DQor5ZCz5pS/5Y6fDQor5ZCz5pS/5b2sDQor5ZCz5pS/5b63DQor5ZCz5pS/5YuzDQor5ZCz5pS/56mODQor5ZCz5pS/6ZyWDQor5ZCz5pil55SfDQor5ZCz5pil57epDQor5ZCz5pit6JOJDQor5ZCz5pit5q+FDQor5ZCz5pit6b6NDQor5ZCz5pix5a6PDQor5ZCz5p+E5b63DQor5ZCz5p+P6Z2SDQor5ZCz5p+P5YSADQor5ZCz5p+P5q+FDQor5ZCz5p+P56mODQor5ZCz54Kr5a6XDQor5ZCz54Kz5baiDQor5ZCz546y5aqbDQor5ZCz55qH5qyjDQor5ZCz55uI5r2UDQor5ZCz56WJ6b6NDQor5ZCz56eL576ODQor5ZCz56eL5oWnDQor5ZCz57SA5ZCbDQor5ZCz576O5aauDQor5ZCz576O546yDQor5ZCz576O5oOgDQor5ZCz576O56aODQor5ZCz576O5oWnDQor5ZCz576O6J6iDQor5ZCz576/6KugDQor5ZCz6Ie06YqYDQor5ZCz6Iul6I+vDQor5ZCz6Iux5a6PDQor5ZCz6Iux6bS7DQor5ZCz6LKe5a6cDQor5ZCz6LKe55GpDQor5ZCz6YOB6IqzDQor5ZCz6YeN5q+FDQor5ZCz6aOb6b6NDQor5ZCz5YCpDQor5ZCz5Y6f5a6HDQor5ZCz5ZOy6ZuvDQor5ZCz5ZOy5qyKDQor5ZCz5a625piODQor5ZCz5a6255CqDQor5ZCz5a625qauDQor5ZCz5a626LGqDQor5ZCz5a625oWnDQor5ZCz5a6555GpDQor5ZCz5bqt542EDQor5ZCz5oyv5oiQDQor5ZCz5oyv6LGqDQor5ZCz5oy66YuSDQor5ZCz5pmP5bmzDQor5ZCz5pu45qauDQor5ZCz5qGC566QDQor5ZCz5rOw5piMDQor5ZCz5rW36IqsDQor5ZCz54+u5ZCbDQor5ZCz54+u5oWIDQor5ZCz54+u56aODQor5ZCz55uK6IqzDQor5ZCz57Sg6IqsDQor5ZCz57SU5qyjDQor5ZCz6LuS6LuSDQor5ZCz5YGJ5YCrDQor5ZCz5YGJ6KqgDQor5ZCz5YGl5rCRDQor5ZCz5YGl6ZGrDQor5ZCz5ZyL5YGJDQor5ZCz5ZyL542FDQor5ZCz5ZyL54aZDQor5ZCz5ZyL6YqYDQor5ZCz5aCF55GLDQor5ZCz5Z+56LOiDQor5ZCz5amJ5am3DQor5ZCz5amJ5q2GDQor5ZCz5bSH6YqYDQor5ZCz5b2p6YKRDQor5ZCz5oKgDQor5ZCz5ZWf5o+aDQor5ZCz5ZWf5paMDQor5ZCz5pWP55yfDQor5ZCz5pWP6YmFDQor5ZCz5qKT6YCiDQor5ZCz5re76YuSDQor5ZCz5reR5aaCDQor5ZCz5reR6IqsDQor5ZCz5reR5Y2/DQor5ZCz5reR5pWPDQor5ZCz5reR6I+vDQor5ZCz5reR6bOzDQor5ZCz5ra15a6cDQor5ZCz56Wl57atDQor5ZCz57S56I+vDQor5ZCz6I6J5am3DQor5ZCz6Zuq5aauDQor5ZCz56uf6IqzDQor5ZCz5Yex6ZuvDQor5ZCz5Yud56W6DQor5ZCz5Zas5qOuDQor5ZCz5b6p6IiIDQor5ZCz5oOg5ZCbDQor5ZCz5oOg5b2pDQor5ZCz5oOg6ZuvDQor5ZCz5pav54e7DQor5ZCz5pm65p2xDQor5ZCz5pm66LGqDQor5ZCz5qOf6ZqGDQor5ZCz54qA6Z2IDQor5ZCz5ZaE6YqYDQor5ZCz6I+B6I+BDQor5ZCz6Kmg5a64DQor5ZCz6YC45rCRDQor5ZCz6YC4576kDQor5ZCz6Yie5am3DQor5ZCz6ZuF5Z2kDQor5ZCz6ZuF6YOBDQor5ZCz6ZuF5bWQDQor5ZCz6ZuF6JCNDQor5ZCz6ZuF6ZuvDQor5ZCz6ZuF57a6DQor5ZCz6Zuy6amlDQor5ZCz5ZyT5pyXDQor5ZCz5pWs55CqDQor5ZCz5q+T55yfDQor5ZCz5rqQ56ugDQor5ZCz55GeDQor5ZCz55Ge5ZOyDQor5ZCz55Ge5qy9DQor5ZCz55Ge5oW2DQor5ZCz56ia6ZyGDQor5ZCz6IGW5aiBDQor5ZCz6Kmp5am3DQor5ZCz6Kqg5piMDQor5ZCz6byO5YGJDQor5ZCz5ZiJ5L+hDQor5ZCz5ZiJ5aifDQor5ZCz5ZiJ5YudDQor5ZCz5ZiJ5qauDQor5ZCz5ZiJ6JWZDQor5ZCz5a+n55GEDQor5ZCz5qau5rOwDQor5ZCz5ryi6YqYDQor5ZCz56Kn5L+QDQor5ZCz56aP6YePDQor5ZCz57at5YCpDQor5ZCz57at6KOVDQor5ZCz6IKH6aiwDQor5ZCz6YGg6KqgDQor5ZCz6YqY5oyvDQor5ZCz6YqT5Y+LDQor5ZCz6bOz6JitDQor5ZCz5b635YWDDQor5ZCz5oW25paHDQor5ZCz5oWn5ZCbDQor5ZCz5oWn546yDQor5ZCz5oWn6LKeDQor5ZCz5oWn5pWPDQor5ZCz5oWn6ZuvDQor5ZCz5r2U54+KDQor5ZCz6LOc5b+gDQor5ZCz5oay5LitDQor5ZCz5oa25bGPDQor5ZCz5puJ6Z2SDQor5ZCz5puJ57SUDQor5ZCz5puJ6I+BDQor5ZCz5puJ6JaHDQor5ZCz54eV6IqsDQor5ZCz56mO6LuSDQor5ZCz6JWZ5aaCDQor5ZCz6JWZ57SLDQor5ZCz6YG15YWIDQor5ZCz6Yym5L2zDQor5ZCz6Yym6Y6wDQor5ZCz6Z2c5a6cDQor5ZCz6Z2c5oChDQor5ZCz6Z2c6IqzDQor5ZCz6Z2c6Iy5DQor5ZCz6Z2c6ZuvDQor5ZCz6b6N5a+2DQor5ZCz57i95oiQDQor5ZCz6IGy5rqQDQor5ZCz6YKBDQor5ZCz6bS75piMDQor5ZCz6bS75qOuDQor5ZCz5puc6IejDQor5ZCz6LGQ5ZCJDQor5ZCz6Y6u5YipDQor5ZCz55OK546JDQor5ZCz6Z+75Y2JDQor5ZCz6bqX5pilDQor5ZCz6bqX5am3DQor5ZCz54276ImvDQor5ZCz6aao5oChDQor5ZCz5oe/5am3DQor5ZCz6aGv5a6XDQor5ZCz5L285L28DQor5ZCz5pe75YSSDQor5ZCz546g6JOJDQor5ZCz5pi26JGzDQor5ZCz5rep5a6JDQor5ZCz55Cu5YKRDQor5ZCz55GL55CzDQor5ZCz562x54+IDQor5ZCz55KBDQor5ZCz6Z+e5b63DQor5ZGC5a2Q6LGqDQor5ZGC5LuB5ZyYDQor5ZGC5Y+L5am3DQor5ZGC5paH5bCIDQor5ZGC5paH6Yi0DQor5ZGC5LiW6LGqDQor5ZGC5q2j5a6JDQor5ZGC546J56eLDQor5ZGC56uL5YGJDQor5ZGC5aaC6IuxDQor5ZGC6Ieq6YGUDQor5ZGC5b+X5a6PDQor5ZGC5b+X6YuSDQor5ZGC6IKy6IqzDQor5ZGC6IKy55GLDQor5ZGC5L2z5a6cDQor5ZGC5L2z5a65DQor5ZGC5L2z5qi6DQor5ZGC5L2p5aeNDQor5ZGC5L2p57SUDQor5ZGC5YW26ZyWDQor5ZGC5aeN5aeNDQor5ZGC5a2j6IqzDQor5ZGC5a6X6YqYDQor5ZGC5a6c6IqzDQor5ZGC5a6c5pmPDQor5ZGC5a6c6ZyWDQor5ZGC5bGF5YuzDQor5ZGC5b+g6IKyDQor5ZGC5oCh5oWnDQor5ZGC5pe66aiPDQor5ZGC5piODQor5ZGC5piO5rOwDQor5ZGC5piO6b6NDQor5ZGC5p2w57evDQor5ZGC5qyj56mODQor5ZGC6Iqz5L+KDQor5ZGC6YeR5b2lDQor5ZGC6ZW36aaoDQor5ZGC5L+d5bK4DQor5ZGC5L+K5YSADQor5ZGC5L+QDQor5ZGC5Y2X55W/DQor5ZGC5aiB5b63DQor5ZGC5bu65b2lDQor5ZGC5bu66YuSDQor5ZGC5b2l6J6NDQor5ZGC5pS/5b2lDQor5ZGC5pS/6KutDQor5ZGC5pit5YSADQor5ZGC5p+P5a6PDQor5ZGC55qH5YW2DQor5ZGC56eL6ZuyDQor5ZGC576O5oOgDQor5ZGC576O6b2hDQor5ZGC6Iux55GLDQor5ZGC6Z+L5660DQor5ZGC5ZOy5piODQor5ZGC5bqt57atDQor5ZGC5qC86LGqDQor5ZGC56WQ5ZCJDQor5ZGC5YGJ5qy9DQor5ZGC5ZyL5Z+5DQor5ZGC5amJ6Iy5DQor5ZGC5qKF6Z+zDQor5ZGC5reR5Y2/DQor5ZGC5reR56aODQor5ZGC55CG6ZyWDQor5ZGC57S55qauDQor5ZGC6Zuq55GcDQor5ZGC5oOg6I+BDQor5ZGC5pm65YKRDQor5ZGC6Kmg55yfDQor5ZGC6ZuF546yDQor5ZGC6ZuF55CqDQor5ZGC6Zuv5q2GDQor5ZGC5ruE5aCvDQor5ZGC6IGW56ugDQor5ZGC5ZiJ5YWDDQor5ZGC5ZiJ6LGQDQor5ZGC57at546yDQor5ZGC6YqY5pm6DQor5ZGC5oWn5oOgDQor5ZGC5a245ZCbDQor5ZGC5a245pm6DQor5ZGC5a245Y+hDQor5ZGC54eV5p6XDQor5ZGC6Yym6aCGDQor5ZGC6Z2c6JOJDQor5ZGC6bS76bqfDQor5ZGC6bqX5aifDQor5ZGC5buz5Zq0DQor5ZGC57+K5rCRDQor5a6L5aSn6L6wDQor5a6L5LmL5o+GDQor5a6L5b+D5oWnDQor5a6L5LiW5paHDQor5a6L546J5am3DQor5a6L5Lyv55GcDQor5a6L5rKb5YuHDQor5a6L6IKy55GLDQor5a6L5L2p54+KDQor5a6L5a2f55GbDQor5a6L5bm455yfDQor5a6L5piM6ZyWDQor5a6L5p2x5aiBDQor5a6L56eJ6JCxDQor5a6L5L+K5rSLDQor5a6L5aWV5YSSDQor5a6L5bu65qyjDQor5a6L5pS/6ZqGDQor5a6L56a555GpDQor5a6L6Ie06YGgDQor5a6L5a626ZyWDQor5a6L6Iir6IejDQor5a6L5Z+55YWDDQor5a6L5pWP6I+vDQor5a6L5Zas546JDQor5a6L5pyd5paMDQor5a6L6Zuy5piODQor5a6L5ZiJ5LuBDQor5a6L56Kn55CzDQor5a6L5oWn5r2UDQor5a6L54eV5YS3DQor5a6L56uEDQor5a6L5pe755yfDQor5ber5a2Q5oe/DQor5ber5oiO5oChDQor5ber5L2p55KHDQor5ber5a6c5a24DQor5ber5piO57+wDQor5ber6Iq355GLDQor5ber5Yag6Kq8DQor5ber5p+P5q+FDQor5ber5oyv5ZiJDQor5ber5riF5paHDQor5ber5ZaE56aPDQor5ber5ZiJ6IiIDQor5ber5puJ6IqsDQor5ber5pmf6YC4DQor5p2O5LmD5paHDQor5p2O5aOr5LqrDQor5p2O5a2Q5YWBDQor5p2O5bCP6IqsDQor5p2O5Lit5Lu7DQor5p2O5Lit5oWnDQor5p2O5LuB5L+uDQor5p2O5LuB5YexDQor5p2O5LuK6bubDQor5p2O5YWD5ZyDDQor5p2O5YWD6KOVDQor5p2O5Y+L5rezDQor5p2O5aSp5qi6DQor5p2O5b+D5LuBDQor5p2O5b+D5bWQDQor5p2O5paHDQor5p2O5paH5ZCJDQor5p2O5paH5b+XDQor5p2O5paH5pS/DQor5p2O5paH6I6JDQor5p2O5paH5oOgDQor5p2O5paH55CmDQor5p2O5paH5oSPDQor5p2O5paH6YGUDQor5p2O5paH6LOiDQor5p2O5paH5paMDQor5p2O5pyI5pifDQor5p2O5LiW5a6JDQor5p2O5LiW5YGJDQor5p2O5LiW5Ym0DQor5p2O5LiW5a+sDQor5p2O5Lul5pawDQor5p2O5Y+v56uLDQor5p2O5ben55CzDQor5p2O5byY5piKDQor5p2O5q2j5YWDDQor5p2O5q2j5b2lDQor5p2O5q2j5YudDQor5p2O5q2j6LGqDQor5p2O5rC45piMDQor5p2O5rC45qy9DQor5p2O5rC46bS7DQor5p2O546J5L2pDQor5p2O546J5Y2/DQor5p2O546J55CzDQor5p2O546J6Yi0DQor5p2O56uL5LuBDQor5p2O56uL5by3DQor5p2O5Lqm5pm0DQor5p2O5Luy546EDQor5p2O5YWJDQor5p2O5YWJ56WlDQor5p2O5YWJ5YCiDQor5p2O5YWG5paMDQor5p2O5ZCJ5pWPDQor5p2O5ZCN5YCrDQor5p2O5aaC54+NDQor5p2O5a6H5byYDQor5p2O5a6I57atDQor5p2O5a6J55CzDQor5p2O5oiQ5ryiDQor5p2O5pyJ5qy9DQor5p2O5769DQor5p2O6Iez56ugDQor5p2O5L2Q5a+nDQor5p2O5Lyv5q+FDQor5p2O5ZCb5b2lDQor5p2O5ZCr5LuBDQor5p2O5aaN55GpDQor5p2O5a6P5paHDQor5p2O5a6P5rSyDQor5p2O5bu35YGJDQor5p2O5b+X5oiQDQor5p2O5b+X5piODQor5p2O5b+X5bOwDQor5p2O5b+X5YGJDQor5p2O5b+X56ugDQor5p2O5b+X6YqYDQor5p2O5b+X6bWsDQor5p2O5rKb5p2wDQor5p2O5rGq55ubDQor5p2O56eA5bm0DQor5p2O56eA546yDQor5p2O56eA5Y2/DQor5p2O56eA6I+vDQor5p2O56eA6JiFDQor5p2O6IKy5p6dDQor5p2O6IKy5bqtDQor5p2O6IKy576kDQor5p2O6IKy55GpDQor5p2O6IKy6J6NDQor5p2O6KaL5rG2DQor5p2O5Lqe5YCrDQor5p2O5Lqs5qi6DQor5p2O5L6d57SUDQor5p2O5L6d5oGCDQor5p2O5L2z5rG2DQor5p2O5L2z5piODQor5p2O5L2z6IqzDQor5p2O5L2z6IqsDQor5p2O5L2z546yDQor5p2O5L2z546yDQor5p2O5L2z54+NDQor5p2O5L2z5YCpDQor5p2O5L2z5a62DQor5p2O5L2z5pmDDQor5p2O5L2z55yfDQor5p2O5L2z6KiTDQor5p2O5L2z6ZuvDQor5p2O5L2z6JOJDQor5p2O5L2z5oW2DQor5p2O5L2z5YSSDQor5p2O5L2z5qi6DQor5p2O5L2z56mODQor5p2O5L2z6Ie7DQor5p2O5L2z6ZyWDQor5p2O5L2z6ZyPDQor5p2O5L2z6Y21DQor5p2O5L2z6JOBDQor5p2O5L6D5rSLDQor5p2O5L2p5L2pDQor5p2O5L2p6IqdDQor5p2O5L2p5ae/DQor5p2O5L2p54+KDQor5p2O5L2p546yDQor5p2O5L2p5YCpDQor5p2O5L2p55yfDQor5p2O5L2p6Zm1DQor5p2O5L2p5YSADQor5p2O5L2p5puEDQor5p2O5L2p6KutDQor5p2O5L2p5aysDQor5p2O5L6R5a6sDQor5p2O5YW25r6nDQor5p2O5Ye96IqsDQor5p2O5Y2T6YGTDQor5p2O5ZKM5piMDQor5p2O5Z2k5piODQor5p2O5Z2k5rqQDQor5p2O5Z2k6ZyWDQor5p2O5aWH5bGVDQor5p2O5aWH57+wDQor5p2O5a2f5Z2kDQor5p2O5a2f54+KDQor5p2O5a2f5ZOyDQor5p2O5a2f6LuSDQor5p2O5a2f5YSSDQor5p2O5a2f56mODQor5p2O5a2f54emDQor5p2O5a2f55KBDQor5p2O5a2j6I+vDQor5p2O5a6X5Z2kDQor5p2O5a6X5YCrDQor5p2O5a6X5oGpDQor5p2O5a6X576pDQor5p2O5a6X6LOiDQor5p2O5a6X5oayDQor5p2O5a6X56mODQor5p2O5a6X57+wDQor5p2O5a6X6ZyWDQor5p2O5a6X6bS7DQor5p2O5a6a6YGgDQor5p2O5a6c5piODQor5p2O5a6c6IqzDQor5p2O5a6c5rSyDQor5p2O5a6c546yDQor5p2O5a6c5ZOyDQor5p2O5a6c5bO7DQor5p2O5a6c57SUDQor5p2O5a6c5r2UDQor5p2O5a6c5qi6DQor5p2O5a6c6ZyWDQor5p2O5a6c6Z+TDQor5p2O5a6c5ZycDQor5p2O5a6b546yDQor5p2O5a6b6JCNDQor5p2O5a6b6Z2cDQor5p2O5bCa6LOiDQor5p2O5bKp5pqJDQor5p2O5bKx6JOBDQor5p2O5bKz5bOwDQor5p2O5bKz5qi6DQor5p2O5bKz6bS7DQor5p2O5bm45aifDQor5p2O5bm46YygDQor5p2O5b+g5ZKMDQor5p2O5b+g576pDQor5p2O5b+g56mODQor5p2O5b+16JKoDQor5p2O5oCh5piMDQor5p2O5oCh546yDQor5p2O5oCh6JCxDQor5p2O5oCh5a+sDQor5p2O5oCh5oWnDQor5p2O5oCh55G+DQor5p2O5oCh56mODQor5p2O5oCh5pe7DQor5p2O5om/5a6XDQor5p2O5om/55KLDQor5p2O5om/6b6NDQor5p2O5piT5L+uDQor5p2O5piT6Ku6DQor5p2O5piM6YGUDQor5p2O5piG5a6PDQor5p2O5piG6YGUDQor5p2O5piG6b6NDQor5p2O5piO5YipDQor5p2O5piO5oChDQor5p2O5piO5p2wDQor5p2O5piO5b2lDQor5p2O5piO5L+uDQor5p2O5piO5ZOyDQor5p2O5piO5pu4DQor5p2O5piO6YeXDQor5p2O5piO6YGUDQor5p2O5piO5r2UDQor5p2O5piO5YuzDQor5p2O5piO5qi6DQor5p2O5piO6KutDQor5p2O5piO6ZyeDQor5p2O5piO5aKJDQor5p2O5piA6Ie7DQor5p2O5piKDQor5p2O5piH57+wDQor5p2O5p2x5b2lDQor5p2O5p2x6ZqGDQor5p2O5p2x6b6NDQor5p2O5p2w5aaCDQor5p2O5p2+5a62DQor5p2O5qyj5oChDQor5p2O5qyj5oChDQor5p2O5qyj5ZOyDQor5p2O5qyj6YGUDQor5p2O5qyj5YSSDQor5p2O5qyj56mODQor5p2O5qyj6ZyeDQor5p2O5rOV5ryiDQor5p2O5rK75a6JDQor5p2O546f546fDQor5p2O546l55GpDQor5p2O56eJ5pyUDQor5p2O56eJ57+wDQor5p2O6Iqz5Zy7DQor5p2O6Iqz5am3DQor5p2O6Iqz5YSADQor5p2O6Iqd57a+DQor5p2O6Iq45b2lDQor5p2O6JmO5bOwDQor5p2O6YeR5rOTDQor5p2O6YeR6Yi0DQor5p2O6YeR5qi6DQor5p2O6ZW35paHDQor5p2O6ZW35qauDQor5p2O6ZW357SYDQor5p2O6Z2S5p2+DQor5p2O6Z2S6Zm9DQor5p2O6Z2e6ZyPDQor5p2O5L+h5oiQDQor5p2O5L+h5p2wDQor5p2O5L+h5b63DQor5p2O5L+h56mODQor5p2O5L+d6JOBDQor5p2O5L+K5a6PDQor5p2O5L+K5aWHDQor5p2O5L+K5piADQor5p2O5L+K5b2lDQor5p2O5L+K56W6DQor5p2O5L+K5YSEDQor5p2O5L+K5b63DQor5p2O5L+K5q+FDQor5p2O5L+K6LOiDQor5p2O5L+K6LOiDQor5p2O5L+K6LOiDQor5p2O5L+K5YuzDQor5p2O5L+K6YyhDQor5p2O5L+e5oWnDQor5p2O5Yag5pyLDQor5p2O5Yag5YSADQor5p2O5Yag55GpDQor5p2O5Yag6Ie7DQor5p2O5YuH5a+nDQor5p2O5Y2X5ayMDQor5p2O5ZOB5oWnDQor5p2O5aWV5p6aDQor5p2O5aWP6YqzDQor5p2O5ae/5YSADQor5p2O5ae/55GpDQor5p2O5aiB5a6PDQor5p2O5aiB5b63DQor5p2O5aiB6ZyWDQor5p2O5a6j55GpDQor5p2O5bu65rCRDQor5p2O5bu65a6PDQor5p2O5bu66YKmDQor5p2O5bu65piODQor5p2O5bu65aiBDQor5p2O5bu66JGmDQor5p2O5bu65a+sDQor5p2O5bu66LOiDQor5p2O5bu66YuSDQor5p2O5bu65qi6DQor5p2O5bu66IiIDQor5p2O5bu656ayDQor5p2O5b2l5a6PDQor5p2O5b2l5a6cDQor5p2O5b2l5YSADQor5p2O5b2l55GpDQor5p2O5b2l5YSSDQor5p2O5b2l6ZyWDQor5p2O5b6L55GLDQor5p2O5oCd5oChDQor5p2O5oCd6JCxDQor5p2O5oCd5YSADQor5p2O5oCd55GpDQor5p2O5oCd6KutDQor5p2O5pS/DQor5p2O5pS/5b+gDQor5p2O5pS/5ZOyDQor5p2O5pS/6YGUDQor5p2O5pS/6LydDQor5p2O5pS/5puEDQor5p2O5pS/6b6NDQor5p2O5pil5p6dDQor5p2O5pil54eVDQor5p2O5pit576ODQor5p2O5pit57evDQor5p2O5pig6JCxDQor5p2O5pix5pilDQor5p2O5pix54eQDQor5p2O5p+P5p2JDQor5p2O5p+P6JOJDQor5p2O5p+P6LOiDQor5p2O5p+P55KBDQor5p2O54Kz5Z2kDQor5p2O54+K54+KDQor5p2O55WM6YuSDQor5p2O55uI55uIDQor5p2O55uI5r2UDQor5p2O55uI56mODQor5p2O56eR5rOvDQor5p2O56eL5qKFDQor5p2O56eL5YSADQor5p2O56eL6bqfDQor5p2O576O546JDQor5p2O576O6IqzDQor5p2O576O5YCrDQor5p2O576O55GcDQor5p2O576O5YSADQor5p2O576O55GpDQor5p2O576O6YyhDQor5p2O6IOk55GkDQor5p2O6Ie05oWnDQor5p2O6IyC5YWoDQor5p2O6Iux5b+XDQor5p2O6Iux55GeDQor5p2O6Iux55GLDQor5p2O6Jm55YSADQor5p2O6LKe5a6cDQor5p2O6LKe5oWnDQor5p2O6L+w55SzDQor5p2O6YOB5YGJDQor5p2O6YeN6LOiDQor5p2O6Z+z5oWnDQor5p2O5YCpDQor5p2O5L+u6b2KDQor5p2O5ZOy5a6JDQor5p2O5ZOy57evDQor5p2O5a625a6PDQor5p2O5a6254+NDQor5p2O5a626JCxDQor5p2O5a626LGqDQor5p2O5a625YSCDQor5p2O5a626IiIDQor5p2O5a655am3DQor5p2O5bir5aq6DQor5p2O5oKF5ZiJDQor5p2O5oyv5piMDQor5p2O5oyv6KqgDQor5p2O5oyv5YSADQor5p2O5pmJ6LGqDQor5p2O5pu45ra1DQor5p2O5qC55ZiJDQor5p2O5qGD5qOuDQor5p2O5rOw6ZyWDQor5p2O5rWp5bqtDQor5p2O54+u5aaCDQor5p2O54+u55CzDQor5p2O54+u5ZiJDQor5p2O55uK5qauDQor5p2O56WW54+NDQor5p2O57Sg5qKFDQor5p2O57SU5oWnDQor5p2O6IO96YGgDQor5p2O6KiT5YSEDQor5p2O5Lm+5pqJDQor5p2O5YGJ5ZCJDQor5p2O5YGJ5oS3DQor5p2O5YGJ5ZiJDQor5p2O5YGJ6aGSDQor5p2O5YGl5rqQDQor5p2O5YGl6YqYDQor5p2O5ZyL5YWoDQor5p2O5ZyL5by3DQor5p2O5ZyL6I+vDQor5p2O5ZyL55GeDQor5p2O5ZyL5qauDQor5p2O5ZyL57atDQor5p2O5ZyL6YqADQor5p2O5ZyL6IiIDQor5p2O5Z+65byYDQor5p2O5Z+56I+vDQor5p2O5amJ55yfDQor5p2O5amJ55GeDQor5p2O5bSH5LuBDQor5p2O5bSH6LGqDQor5p2O5bq35q2jDQor5p2O5b2p55GpDQor5p2O5ZWf5byYDQor5p2O5ZWf5ruEDQor5p2O5pWP5ZCJDQor5p2O5pWP5ZiJDQor5p2O5pWP6b6NDQor5p2O5riF5ZCfDQor5p2O5reR5ZCbDQor5p2O5reR6IqsDQor5p2O5reR6LKeDQor5p2O5reR6Iy5DQor5p2O5reR5oOgDQor5p2O5reR6I+vDQor5p2O5reR6JOJDQor5p2O5reR6Z2cDQor5p2O5ra15a+MDQor5p2O56Wl55GeDQor5p2O57S557a6DQor5p2O57+O5q+TDQor5p2O6YCj5bOwDQor5p2O6Zuq6JCNDQor5p2O5YKR5aaCDQor5p2O5Yex5qWoDQor5p2O5Yud6ZuEDQor5p2O5Zas6YyaDQor5p2O5bWQ55CmDQor5p2O5oOg6IqsDQor5p2O5oOg54+gDQor5p2O5oOg55CzDQor5p2O5oOg6ZuvDQor5p2O5pm06ZuvDQor5p2O5pm65oChDQor5p2O5pm65by3DQor5p2O5pm657atDQor5p2O5qOuDQor5p2O5rmY5qi6DQor5p2O55qW546yDQor5p2O5ZaE5ZCMDQor5p2O6Iic6I+vDQor5p2O6Kmg56eLDQor5p2O6YC45omNDQor5p2O6YC4576kDQor5p2O6YCy56aPDQor5p2O6ZqG6I+vDQor5p2O6ZuF546rDQor5p2O6ZuF546yDQor5p2O6ZuF5qKFDQor5p2O6ZuF5am3DQor5p2O6ZuF5oOgDQor5p2O6ZuF5oOgDQor5p2O6ZuF6JCNDQor5p2O6ZuF6ZuvDQor5p2O6ZuF54eVDQor5p2O6Zuv54eVDQor5p2O5YKz5ZCbDQor5p2O5oSP6ZuvDQor5p2O5oOzDQor5p2O5paw5r6kDQor5p2O5q+T55yfDQor5p2O5rqQDQor5p2O55Ge5paHDQor5p2O55Ge6LKeDQor5p2O55Ge6I+vDQor5p2O55Ge6aiPDQor5p2O576p6ZuEDQor5p2O6IGW55CwDQor5p2O6Kmp5YGJDQor5p2O6Kmp5qW3DQor5p2O6YGT5p6XDQor5p2O5ZiJDQor5p2O5ZiJ5p6XDQor5p2O5ZiJ5YeMDQor5p2O5ZiJ6LuSDQor5p2O5ZiJ6I+vDQor5p2O5ZiJ6YqYDQor5p2O5ZiJ6bS7DQor5p2O5a+n6IqzDQor5p2O5qau6IyCDQor5p2O5qau6aazDQor5p2O5ryi56W6DQor5p2O56Kn5am3DQor5p2O56aP6JOJDQor5p2O57at5LuBDQor5p2O57at5YCrDQor5p2O57at5qWoDQor5p2O6IKH5qyjDQor5p2O6KqM5piODQor5p2O6YqY5ZGoDQor5p2O6YqY5q+TDQor5p2O6bO05a6HDQor5p2O6b2K6IqzDQor5p2O5buj56WBDQor5p2O5b635rW3DQor5p2O5oW25a6PDQor5p2O5oW26I+vDQor5p2O5oWn6IqsDQor5p2O5oWn576ODQor5p2O5oWn54+gDQor5p2O5oWn5YSADQor5p2O5q+F5L+hDQor5p2O55Gp5r2UDQor5p2O6LOi5remDQor5p2O5a245piODQor5p2O5oay5paMDQor5p2O5puJ5aauDQor5p2O5puJ546yDQor5p2O5puJ5bWQDQor5p2O5puJ6I+BDQor5p2O5puJ5qaVDQor5p2O5r6k6IKyDQor5p2O54eV546yDQor5p2O55Kf6YOBDQor5p2O57+w6Z2SDQor5p2O6IiI6IicDQor5p2O6JWZ5aaCDQor5p2O6JWZ6Iq4DQor5p2O6LGr5YehDQor5p2O6Yym5piHDQor5p2O6Yym6JOuDQor5p2O6Z2c5a6cDQor5p2O6Z2c5oChDQor5p2O6Z2c5oChDQor5p2O6Z2c576ODQor5p2O6Z2c6JOJDQor5p2O6b6N55SfDQor5p2O6b6N6bqfDQor5p2O54i16IejDQor5p2O6IGw5bKzDQor5p2O6Ly/6ZGrDQor5p2O6bS75b+XDQor5p2O6bS76YGUDQor5p2O5puc5a2YDQor5p2O6Ky55biGDQor5p2O6Y6U6ZihDQor5p2O6aal5aaCDQor5p2O55OK6IuxDQor5p2O6bqX5p6dDQor5p2O6bqX54+gDQor5p2O5a+2546JDQor5p2O6ICA5rCRDQor5p2O6aao5oChDQor5p2O5oe/5aaCDQor5p2O5qyK5a62DQor5p2O5Yqt6LuNDQor5p2O5pe75piHDQor5p2O5pe755GLDQor5p2O5pi25qyjDQor5p2O6Iu55oWIDQor5p2O5ra05rGdDQor5p2O5aCoDQor5p2O57WcDQor5p2O55GL55CqDQor5p2O562x6ZuyDQor5p2O6Yi66ZuvDQor5p2O6Z2a5a64DQor5p2O6Y6n5Lu7DQor5p2O5oGS5ZCbDQor5p2c5paH5YKRDQor5p2c5rCR5YKRDQor5p2c5YWo5p6XDQor5p2c5b+X6LOiDQor5p2c5L2z6LGqDQor5p2c5a2f5pS/DQor5p2c5a6b6KutDQor5p2c5om/6ZGrDQor5p2c5piH57+wDQor5p2c6Iqz5pS/DQor5p2c5L+K5q+FDQor5p2c5aiB5bu3DQor5p2c5b2l6ZyWDQor5p2c54Kz6b6NDQor5p2c576O5oWnDQor5p2c5a625piMDQor5p2c54+u6KmpDQor5p2c5amJ6ZuvDQor5p2c5reR6YyaDQor5p2c6Zm95ZyTDQor5p2c5ZiJ546yDQor5p2c57at5L+uDQor5p2c54eV6I+vDQor5p2c6ICA5LuBDQor5rKZ5q2j5oKFDQor5rKI5aOr5YKRDQor5rKI5LuB5YKRDQor5rKI5paH56WlDQor5rKI5LiW6ZaUDQor5rKI5q2j5b63DQor5rKI56uL5LuBDQor5rKI5aaC5bOwDQor5rKI5L2R57+wDQor5rKI5ZCb55KQDQor5rKI5b+X5bedDQor5rKI5b+X6b6NDQor5rKI5rG26JCNDQor5rKI6IKy5pifDQor5rKI5L6d56mODQor5rKI5L2z5oWnDQor5rKI5L2p6ZuvDQor5rKI5Z2k5piHDQor5rKI5a6X5oW2DQor5rKI5a6c6JOBDQor5rKI5oCh5Ly2DQor5rKI5piM5piODQor5rKI5piO6JCxDQor5rKI5qyj5a24DQor5rKI56eJ6Kq8DQor5rKI6Iq46JCpDQor5rKI5L+h5aKeDQor5rKI5L+K57+UDQor5rKI5Yag5a6PDQor5rKI5ae/5oWnDQor5rKI5bu65oiQDQor5rKI5bu65b63DQor5rKI5oGG5YWJDQor5rKI5pit6LOiDQor5rKI5p+P5a+sDQor5rKI55uI6I+BDQor5rKI576O5aifDQor5rKI6YOB5bq3DQor5rKI5ZOy5qiZDQor5rKI5a625qauDQor5rKI5oyv6IiIDQor5rKI55uK5om/DQor5rKI57SU5aaCDQor5rKI5ZyL6YqTDQor5rKI5pmo6ZCYDQor5rKI5reR6I+vDQor5rKI5oOg6I+BDQor5rKI6IiS55CzDQor5rKI6ZuF5oOgDQor5rKI5pqJ5bqtDQor5rKI55Ge5qy9DQor5rKI6IGW5bSRDQor5rKI6YGT6KuWDQor5rKI5ZiJ6JWZDQor5rKI57at5q+TDQor5rKI5b635Y6aDQor5rKI5a245oiQDQor5rKI6JWZ5ZCbDQor5rKI6bS75rSyDQor5rKI5aaP55yfDQor5rKI562x6ZuyDQor5rGq5aSn5YCrDQor5rGq5ben546yDQor5rGq55m+6LuSDQor5rGq56eA54eVDQor5rGq5a2f5ra1DQor5rGq5oCh6I+vDQor5rGq6Z2S6JOJDQor5rGq5Yag5a6PDQor5rGq576O546JDQor5rGq5a6255GpDQor5rGq5ZWf5paHDQor5rGq6ZuF6JCNDQor5rGq6Z2W5ZyLDQor5rGq5oW254+NDQor5rGq6bqX5aifDQor54uE5a625rqnDQor6LC35rOT6YGTDQor6LuK55uK6I+vDQor6L6b5a6X5r2tDQor6L6b5aWV5oiQDQor6L6b6I+B5ailDQor6L6b5pe75L+uDQor6YKi6IO95paHDQor6Ziu5paH56WlDQor6Ziu5ZGC55yfDQor6Ziu5L+h5oayDQor6Ziu5pix5a6PDQor6Ziu6aOb6YqYDQor6Ziu5reR6Iy5DQor6Ziu5paQ55GcDQor6Ziu6ZuF5YCrDQor6Ziu552/56WlDQor6Ziu6bWs56KpDQor5Y2T5aOr5YubDQor5Y2T5rC45aCCDQor5Y2T5b+X5b+gDQor5Y2T5L2z5oW2DQor5Y2T5a6b5ZCbDQor5Y2T5piO5YSADQor5Y2T6Iqz5aaCDQor5Y2T5L+K5a6PDQor5Y2T5bu66ZqGDQor5Y2T6Iux5ZOyDQor5Y2T5a625qWgDQor5Y2T6KiT6ImvDQor5Y2T5reR5aqbDQor5Y2T5pyd6ZaUDQor5Y2T55Ge5bSHDQor5Y2T6KqM6ZqGDQor5Y2T6Z2c5aaCDQor5Y2T5oGS55SfDQor5ZGo5LiK5qy9DQor5ZGo5aOr5YKRDQor5ZGo5aSn6YieDQor5ZGo5a2Q5pWsDQor5ZGo5Lit6IiIDQor5ZGo5b+D5oChDQor5ZGo5paH5pS/DQor5ZGo5paH6ZuFDQor5ZGo5pyI6ZycDQor5ZGo5LiW6LGQDQor5ZGo5Luj5bCJDQor5ZGo5byY5pWPDQor5ZGo5q2j5ZyLDQor5ZGo5rC46ZuEDQor5ZGo546J6JOuDQor5ZGo56uL5YGJDQor5ZGo5Luy5YexDQor5ZGo5ZCJ6b6NDQor5ZGo5bm055ubDQor5ZGo6Iez6IqsDQor5ZGo5L2R56aODQor5ZGo5Lyv6ZGrDQor5ZGo5ZCb6bS7DQor5ZGo5a2d6IqzDQor5ZGo5a6P55GcDQor5ZGo5bu36ZqGDQor5ZGo5b+X5b+gDQor5ZGo5b+X5riFDQor5ZGo5b+X5YuzDQor5ZGo5rG254+KDQor5ZGo56eA5pmPDQor5ZGo6IKy5Ly2DQor5ZGo6IKy5r2kDQor5ZGo5Lqe5qyjDQor5ZGo5L2z5oChDQor5ZGo5L2z6JOJDQor5ZGo5L2z6ZyHDQor5ZGo5L2p5a6cDQor5ZGo5L2p5YSADQor5ZGo5Y2U5YipDQor5ZGo5aWH6JOJDQor5ZGo5a2f6Kq8DQor5ZGo5a6X5bu6DQor5ZGo5a6c6IqzDQor5ZGo5a6b6JCxDQor5ZGo5bm46JOJDQor5ZGo5oCh5Ly2DQor5ZGo5oCh5ZCbDQor5ZGo5oCh6YKmDQor5ZGo5oCh5YS3DQor5ZGo5piO5byYDQor5ZGo5piO5b65DQor5ZGo5piO6LydDQor5ZGo5p2wDQor5ZGo5qyj6Iq4DQor5ZGo5qyj55GpDQor5ZGo546f6JCxDQor5ZGo6Iqz5aaCDQor5ZGo6Iqd5ra1DQor5ZGo6YeR54eVDQor5ZGo6Z2S6JOJDQor5ZGo5L+h6LydDQor5ZGo5L+K5a6PDQor5ZGo5L+K6LGqDQor5ZGo5Yag5Ly2DQor5ZGo5ZOB5aaNDQor5ZGo5aiB5ZGIDQor5ZGo5bu65ZGIDQor5ZGo5bu66YqYDQor5ZGo5b2l5bKRDQor5ZGo5oCd5b6uDQor5ZGo5pS/57+wDQor5ZGo5pif5ZCMDQor5ZGo5p+P55SrDQor5ZGo546yDQor5ZGo55uI5p2JDQor5ZGo56eL6JCNDQor5ZGo576O5pilDQor5ZGo6Ie05LieDQor5ZGo6YOB5paHDQor5ZGo6Z+L57+wDQor5ZGo5YeM5oKMDQor5ZGo5aif5aaCDQor5ZGo5a625rWpDQor5ZGo5a625oW2DQor5ZGo5bOw5q2jDQor5ZGo5oyv5YexDQor5ZGo5pu45am3DQor5ZGo5rOw5a6JDQor5ZGo54+u5aaCDQor5ZGo56WQ5oWnDQor5ZGo6IC/6KGMDQor5ZGo5YGJ6Iy5DQor5ZGo5ZyL6Z2WDQor5ZGo5amJ55CzDQor5ZGo5pWP6Yi6DQor5ZGo5reR5aifDQor5ZGo5reR54eVDQor5ZGo5Yex5oWnDQor5ZGo5oOg6JOuDQor5ZGo5pm65pWPDQor5ZGo5rid54+KDQor5ZGo6Kmg6KiTDQor5ZGo6YC46JitDQor5ZGo6ZuF5am3DQor5ZGo6Zuy5qOgDQor5ZGo5pWs5pmPDQor5ZGo5qWt5qy9DQor5ZGo54WM6IC/DQor5ZGo55Ge5qWgDQor5ZGo576p5bOwDQor5ZGo6IGW5oWnDQor5ZGo6KOV6LGQDQor5ZGo6YGT5rOTDQor5ZGo5ZiJ5p2+DQor5ZGo5ZiJ5oW2DQor5ZGo5ryi5rqQDQor5ZGo56aP6bOzDQor5ZGo57+g6IqsDQor5ZGo5YSE5L+hDQor5ZGo5oWn5ae/DQor5ZGo5qiC5aSpDQor5ZGo6LOi5b63DQor5ZGo5oay6YKmDQor5ZGo5puJ6JCNDQor5ZGo54eV55uIDQor5ZGo6J6N6ae/DQor5ZGo6Z2c6ZuvDQor5ZGo6IGw5a6HDQor5ZGo6Y6u6YKmDQor5ZGo6bqX546yDQor5ZGo6Jit6IqzDQor5ZGo5pe76Z2cDQor5ZGo5peG55GcDQor5ZGo55GLDQor5ZGo6Yi657+UDQor5a2f5aSp56WlDQor5a2f5oW25a6JDQor5a2j6IKy5r6kDQor5a6Y5aSn5byYDQor5a6Y6IKy6JCxDQor5a6Y6Iqz5aaCDQor5a6Y6IuR5YKRDQor5a6Y6L6y5ZOyDQor5bCa5pu4DQor5bGI6YGT5YmbDQor5bKz57at6YuMDQor5oi/5YWG6ZqGDQor5pa85a6254+NDQor5piT6Laz55yfDQor5piT5pm65YGlDQor5piM5a2f57+wDQor5p2x5oWO55CzDQor5p6X5LiA54WSDQor5p6X5LiK5b+XDQor5p6X5LmF5Yu7DQor5p6X5LqO5q2jDQor5p6X5LqO5am3DQor5p6X5LqO56aODQor5p6X5Y2D5aqaDQor5p6X5Y2D5q+TDQor5p6X5aOr5YqbDQor5p6X5aOr6YOBDQor5p6X5aOr5re1DQor5p6X5aOr5YKRDQor5p6X5aOr5o+aDQor5p6X5aOr6LaKDQor5p6X5aOr6L6yDQor5p6X5aSn5YWDDQor5p6X5aSn56WlDQor5p6X5aSn6YieDQor5p6X5aWz5ru/DQor5p6X5a2Q546EDQor5p6X5a2Q5YGJDQor5p6X5a2Q5YKRDQor5p6X5a2Q5oOgDQor5p6X5a2Q6KmgDQor5p6X5a2Q5YukDQor5p6X5a2Q57a6DQor5p6X5a2Q55GEDQor5p6X5bCP55CqDQor5p6X5bGx6ZuyDQor5p6X5omN5YWDDQor5p6X5Lit5by3DQor5p6X5LmL6I+BDQor5p6X5LuB5b2lDQor5p6X5LuB5YKRDQor5p6X5LuL5LiADQor5p6X5YWD5oS3DQor5p6X5Y2H5qyKDQor5p6X5aSp5rCRDQor5p6X5b+D5aaCDQor5p6X5b+D5bWQDQor5p6X5paH5LitDQor5p6X5paH5YWoDQor5p6X5paH5rOzDQor5p6X5paH56eRDQor5p6X5paH5bCHDQor5p6X5paH56WlDQor5p6X5paH5YudDQor5p6X5paH5pavDQor5p6X5paH55CmDQor5p6X5paH6ZuvDQor5p6X5paH5b63DQor5p6X5paH6IGwDQor5p6X5paH5aqEDQor5p6X5pyI6IuxDQor5p6X5pyo6IiIDQor5p6X5LiW5bmzDQor5p6X5LiW5piMDQor5p6X5LiW6IqzDQor5p6X5LiW5bOwDQor5p6X5LiW5YGJDQor5p6X5LiW5reHDQor5p6X5LiW57+UDQor5p6X5LiW5a+wDQor5p6X5Li75oGpDQor5p6X5Lul5pmoDQor5p6X5LuV5YGJDQor5p6X5Yqg5YagDQor5p6X5Y+v6YieDQor5p6X5beo5reZDQor5p6X5ben5qKFDQor5p6X5bmz6IuRDQor5p6X5byY5piHDQor5p6X5byY56WlDQor5p6X5q2j5LiADQor5p6X5q2j5a6XDQor5p6X5q2j6LuNDQor5p6X5q2j5YGJDQor5p6X5q2j5YexDQor5p6X5q2j56aPDQor5p6X5rCR5Z+6DQor5p6X5rC45piMDQor5p6X5rC45L+hDQor5p6X5rC45riFDQor5p6X5rC456WlDQor5p6X5rC45qOuDQor5p6X5rC45oW2DQor5p6X5rC45pmfDQor5p6X546J5aaCDQor5p6X546J6IqzDQor5p6X546J546yDQor5p6X546J54+uDQor5p6X546J5pWPDQor5p6X546J5am3DQor5p6X546J6I+BDQor5p6X546J6ZuyDQor5p6X546J6b6NDQor5p6X55+z6ZqGDQor5p6X56uL5Lu7DQor5p6X56uL5YCrDQor5p6X56uL5YGJDQor5p6X56uL576kDQor5p6X56uL6ZGrDQor5p6X5Luy5aiBDQor5p6X5Luw5pybDQor5p6X5YWG55uIDQor5p6X5ZCJ5LyvDQor5p6X5ZCO5ZSvDQor5p6X5aaC5pWPDQor5p6X5a6H5pifDQor5p6X5a6I5b63DQor5p6X5a6J57e5DQor5p6X5pyJ5L+KDQor5p6X55m+5o+aDQor5p6X6Iez5om/DQor5p6X6KGM6KyZDQor5p6X5L2R5a6JDQor5p6X5L2R54+KDQor5p6X5L2R5YSSDQor5p6X5L2R6Y2+DQor5p6X5Lyv5bKzDQor5p6X5Lyv5bO7DQor5p6X5Lyv5YuzDQor5p6X5Ly26LKeDQor5p6X5YWL5aiBDQor5p6X5YWL5a+wDQor5p6X5ZGI5Lu7DQor5p6X5ZCb5a6cDQor5p6X5ZCb546yDQor5p6X5ZCb55GcDQor5p6X5ZCb57+wDQor5p6X5ZCf5ae/DQor5p6X5Z2H6YOBDQor5p6X5aaZ5ZCbDQor5p6X5aaZ5ailDQor5p6X5aaN5aakDQor5p6X5a2d5YWoDQor5p6X5a2d5oayDQor5p6X5a6P5Z2kDQor5p6X5a6P5LquDQor5p6X5a6P6Z+LDQor5p6X5a6P5Lm+DQor5p6X5a6P6YGUDQor5p6X5a6P5YSSDQor5p6X5a6P6YyhDQor5p6X5bKQ55uKDQor5p6X5bu35ZCJDQor5p6X5bu36LydDQor5p6X5b+X5rCRDQor5p6X5b+X5oiQDQor5p6X5b+X6ImvDQor5p6X5b+X5b+gDQor5p6X5b+X5piODQor5p6X5b+X5p2wDQor5p6X5b+X6IqsDQor5p6X5b+X5YuHDQor5p6X5b+X55qHDQor5p6X5b+X5bOwDQor5p6X5b+X5YGJDQor5p6X5b+X5aCFDQor5p6X5b+X5o+aDQor5p6X5b+X5oWODQor5p6X5b+X6LGqDQor5p6X5b+X6LGqDQor5p6X5b+X6YqYDQor5p6X5b+X5YSSDQor5p6X5b+X56mODQor5p6X5b+X6KyADQor5p6X5b+X6b6NDQor5p6X5b+X6bS7DQor5p6X5b+X6bS7DQor5p6X5p2O6YqYDQor5p6X5p2Q5L+KDQor5p6X5rKb5ZCbDQor5p6X5rKb6JOBDQor5p6X54G86b6NDQor5p6X56eA5Z2qDQor5p6X56eA6IqxDQor5p6X56eA5L+QDQor5p6X56eA546yDQor5p6X56eA576ODQor5p6X56eA5Y2/DQor5p6X56eA55yfDQor5p6X56eA6ZuvDQor5p6X56eA6bOzDQor5p6X56eA56mODQor5p6X56eA6aaoDQor5p6X6IKy5LuVDQor5p6X6IKy5q2jDQor5p6X6IKy5rCRDQor5p6X6IKy55SfDQor5p6X6IKy56uLDQor5p6X6IKy5ZCNDQor5p6X6IKy5aaCDQor5p6X6IKy5oiQDQor5p6X6IKy5a6PDQor5p6X6IKy5piADQor5p6X6IKy54+KDQor5p6X6IKy6YCyDQor5p6X6IKy576kDQor5p6X6IKy6JCxDQor5p6X6IKy6JOTDQor5p6X6IKy5oWnDQor5p6X6IKy6LOiDQor5p6X6IKy6YuSDQor5p6X6IKy6bqfDQor5p6X6Imv5L+KDQor5p6X6KaL5piODQor5p6X6LC35bOwDQor5p6X6LKd54+KDQor5p6X6YeM54eVDQor5p6X5Lqr54eBDQor5p6X5L6d55uIDQor5p6X5L6d5r2UDQor5p6X5L6d55KHDQor5p6X5L2z55SfDQor5p6X5L2z5a6PDQor5p6X5L2z6ImvDQor5p6X5L2z5oChDQor5p6X5L2z5qyjDQor5p6X5L2z5LqtDQor5p6X5L2z55uIDQor5p6X5L2z6LKeDQor5p6X5L2z6Zm1DQor5p6X5L2z6Zm9DQor5p6X5L2z57a6DQor5p6X5L2z6JOJDQor5p6X5L2z5YSEDQor5p6X5L2z5oW2DQor5p6X5L2z5oWnDQor5p6X5L2z5oWnDQor5p6X5L2z5r2UDQor5p6X5L2z55GpDQor5p6X5L2z6LOiDQor5p6X5L2z5qi6DQor5p6X5L2z54eVDQor5p6X5L2z6Ie7DQor5p6X5L2z6Z2cDQor5p6X5L2z6bS7DQor5p6X5L2z5r2TDQor5p6X5L2p5ZCbDQor5p6X5L2p5oChDQor5p6X5L2p6IqsDQor5p6X5L2p6LKeDQor5p6X5L2p6ZuvDQor5p6X5L2p6JOJDQor5p6X5L2p6JOJDQor5p6X5L2p5oWnDQor5p6X5L2p5qi6DQor5p6X5L2p6YymDQor5p6X5L2p55KHDQor5p6X5L6R6Z2SDQor5p6X5YW25L6vDQor5p6X5YW26YuSDQor5p6X5Y2U5p2RDQor5p6X5ZKM56eADQor5p6X5Z2k55SfDQor5p6X5Z2k6Z+LDQor5p6X5Z2k5qiRDQor5p6X5Z2k6ZyCDQor5p6X5aWH5qihDQor5p6X5a2f5LuVDQor5p6X5a2f5ZCbDQor5p6X5a2f5LqtDQor5p6X5a2f6JCxDQor5p6X5a2f5b63DQor5p6X5a2f6LOiDQor5p6X5a2f56mODQor5p6X5a2f6JGzDQor5p6X5a2j6IuXDQor5p6X5a2j54eBDQor5p6X5a6X5bu3DQor5p6X5a6X6aCGDQor5p6X5a6X5YSEDQor5p6X5a6X5oW2DQor5p6X5a6X6LOiDQor5p6X5a6X6LydDQor5p6X5a6X5r6kDQor5p6X5a6X6KyoDQor5p6X5a6Y6YC4DQor5p6X5a6c5ZCbDQor5p6X5a6c546rDQor5p6X5a6c54+NDQor5p6X5a6c6IGWDQor5p6X5a6c6JOJDQor5p6X5a6c5oWnDQor5p6X5a6c6LOiDQor5p6X5a6c5qi6DQor5p6X5a6c6YyaDQor5p6X5a6c6Z2cDQor5p6X5a6c6JOBDQor5p6X5a6c5au6DQor5p6X5a6b55GcDQor5p6X5a6b5qi6DQor5p6X5bCa6ImvDQor5p6X5bCa56mODQor5p6X5bKx6JOJDQor5p6X5bKx6J6NDQor5p6X5bKz5YSADQor5p6X5bKz5baZDQor5p6X5bm46JOJDQor5p6X5bqa56uLDQor5p6X5b6B6KGbDQor5p6X5b+g5bKzDQor5p6X5b+g5oW2DQor5p6X5oChDQor5p6X5oCh5rGdDQor5p6X5oCh5Ly2DQor5p6X5oCh5YipDQor5p6X5oCh5ZCbDQor5p6X5oCh5ZCbDQor5p6X5oCh5ZCbDQor5p6X5oCh5ZCbDQor5p6X5oCh5ZCbDQor5p6X5oCh5ZCbDQor5p6X5oCh5ZCbDQor5p6X5oCh5Z2HDQor5p6X5oCh56eADQor5p6X5oCh6L6wDQor5p6X5oCh6IqzDQor5p6X5oCh6Z2SDQor5p6X5oCh6I6JDQor5p6X5oCh6I+BDQor5p6X5oCh6JCxDQor5p6X5oCh5a+sDQor5p6X5oCh5YSSDQor5p6X5oCh56S9DQor5p6X5om/5bKzDQor5p6X5om/5q+FDQor5p6X5pa85aauDQor5p6X5piT54+KDQor5p6X5piM5byYDQor5p6X5piM6LOiDQor5p6X5piG55SwDQor5p6X5piG5qihDQor5p6X5piG54WHDQor5p6X5piO55SfDQor5p6X5piO5b+XDQor5p6X5piO5a6XDQor5p6X5piO5p2wDQor5p6X5piO5b2lDQor5p6X5piO6I6JDQor5p6X5piO5qWTDQor5p6X5piO6KqMDQor5p6X5piO5b63DQor5p6X5piO5q+FDQor5p6X5piO57evDQor5p6X5piO6LydDQor5p6X5piO5YuzDQor5p6X5piO55KwDQor5p6X5piA6b6NDQor5p6X5piH5rC4DQor5p6X5piH6b6NDQor5p6X5p2x6IyCDQor5p6X5p2x5q+FDQor5p6X5p2w5qyjDQor5p6X5p2+5aCvDQor5p6X5qyj56uLDQor5p6X5qyj5oChDQor5p6X5qyj5oChDQor5p6X5qyj5oChDQor5p6X5qyj5pS/DQor5p6X5qyj5oWIDQor5p6X5qyj5YSADQor5p6X5qyj5YSADQor5p6X5qyj5q+FDQor5p6X5qyj6Kq8DQor5p6X5qyj56mODQor5p6X5qyj6bqXDQor5p6X5q2m6Ku6DQor5p6X5rOT5ZCbDQor5p6X5rOx56eADQor5p6X54mn5Y+wDQor5p6X546f5ZCbDQor5p6X546f5aaPDQor5p6X546r5ZCbDQor5p6X546r6JOJDQor5p6X56eJ5rOTDQor5p6X56eJ55GpDQor5p6X6Iqz5LiADQor5p6X6Iqz5aaCDQor5p6X6Iqz5aaCDQor5p6X6Iqz5beeDQor5p6X6Iqz6IqzDQor5p6X6Iqz5pawDQor5p6X6Iqz5YSADQor5p6X6Iqd5Y2JDQor5p6X6Iqd5a+nDQor5p6X6Iqs6IqzDQor5p6X6Iq45pqJDQor5p6X6Iq3562gDQor5p6X6YeR5LuVDQor5p6X6YeR5piODQor5p6X6YeR6JOuDQor5p6X6YeR6b6NDQor5p6X6ZW35b+XDQor5p6X6ZW35oW2DQor5p6X6Zuo6L6yDQor5p6X6Z2S5b+XDQor5p6X6Z2S5oWnDQor5p6X6Z2S6ZyeDQor5p6X5Lqu5LuBDQor5p6X5L+h5YWoDQor5p6X5L+h5L2RDQor5p6X5L+h5a6PDQor5p6X5L+h5bu3DQor5p6X5L+h5bu2DQor5p6X5L+h576pDQor5p6X5L+d5oiQDQor5p6X5L+K5LuyDQor5p6X5L+K5a6HDQor5p6X5L+K5L2RDQor5p6X5L+K5LyvDQor5p6X5L+K5a6PDQor5p6X5L+K5a6PDQor5p6X5L+K5bu3DQor5p6X5L+K55SrDQor5p6X5L+K55S3DQor5p6X5L+K6KiADQor5p6X5L+K5p2wDQor5p6X5L+K5YKRDQor5p6X5L+K6YC4DQor5p6X5L+K6YGUDQor5p6X5L+K6LGqDQor5p6X5L+K6a2BDQor5p6X5L+K6LOiDQor5p6X5L+K6bqfDQor5p6X5L+Q5LqtDQor5p6X5L+e5aKeDQor5p6X5Yag5a6HDQor5p6X5Yag5ZCfDQor5p6X5Yag5a6PDQor5p6X5Yag56eADQor5p6X5Yag55GbDQor5p6X5Yag5YSSDQor5p6X5YuH5oiQDQor5p6X5Y2X5a6PDQor5p6X5ZOB5a6cDQor5p6X5aWV5oiQDQor5p6X5aWV5Ly2DQor5p6X5aWV56eADQor5p6X5aWV5bWQDQor5p6X5aWO5ZCbDQor5p6X5ae/5Ly2DQor5p6X5ae/5ZC+DQor5p6X5ae/5aaZDQor5p6X5ae/5am3DQor5p6X5aiB5ZCNDQor5p6X5aiB5YipDQor5p6X5aiB5bu3DQor5p6X5aiB6ImvDQor5p6X5a6j5Lu7DQor5p6X5a6j6bCyDQor5p6X5bu65LiADQor5p6X5bu65LuyDQor5p6X5bu65a6HDQor5p6X5bu65oiQDQor5p6X5bu65ZC+DQor5p6X5bu65a6PDQor5p6X5bu65a6PDQor5p6X5bu65bu3DQor5p6X5bu65b+XDQor5p6X5bu655S3DQor5p6X5bu66ImvDQor5p6X5bu66YKmDQor5p6X5bu65piHDQor5p6X5bu66I+vDQor5p6X5bu65b2wDQor5p6X5bu655GpDQor5p6X5bu65YuzDQor5p6X5b2l5paHDQor5p6X5b2l5ZCNDQor5p6X5b2l5LqoDQor5p6X5b2l5Ly2DQor5p6X5b2l5a2dDQor5p6X5b2l5a6PDQor5p6X5b2l55SrDQor5p6X5b2l5LqrDQor5p6X5b2l5ZiJDQor5p6X5b2l6IiIDQor5p6X5oCd5ZCfDQor5p6X5oCd6I+vDQor5p6X5oCd6KaqDQor5p6X5oGG56KpDQor5p6X5oGq576kDQor5p6X5pS/5L2NDQor5p6X5pS/6ImvDQor5p6X5pS/5rWpDQor5p6X5pS/6KOVDQor5p6X5pS/5YSADQor5p6X5pS/57evDQor5p6X5pS/6YuSDQor5p6X5pS/57+wDQor5p6X5pil5bm0DQor5p6X5pil576ODQor5p6X5pit5a6HDQor5p6X5pit5b+XDQor5p6X5pit6YqYDQor5p6X5pig5rGdDQor5p6X5pif5pmoDQor5p6X5pix5ZCbDQor5p6X5pix5YGJDQor5p6X5p+R5p2PDQor5p6X5p+P5beeDQor5p6X5p+P5Ly4DQor5p6X5p+P5a6PDQor5p6X5p+P5p2RDQor5p6X5p+P5Z+ODQor5p6X5p+P5qauDQor5p6X5p+P57+wDQor5p6X5rOJ5rSLDQor5p6X5rSq6ZyEDQor5p6X54K65paHDQor5p6X54Kz54WMDQor5p6X54+K5aaCDQor5p6X546y6IezDQor5p6X54+N5aaCDQor5p6X55qH5YipDQor5p6X55uI5oiQDQor5p6X55uI5ZCbDQor5p6X55uI5b+XDQor5p6X55uI6JCxDQor5p6X56WI5Z2HDQor5p6X56eR5a6PDQor5p6X56eL6ImvDQor5p6X56eL5oOgDQor5p6X56eL6I+KDQor5p6X56eL6JOuDQor5p6X57SA5YWDDQor5p6X576O5aaCDQor5p6X576O5Ly2DQor5p6X576O5ZCbDQor5p6X576O5ZCfDQor5p6X576O56eADQor5p6X576O5oChDQor5p6X576O546yDQor5p6X576O54+gDQor5p6X576O5pm6DQor5p6X576O6I+vDQor5p6X576O5oWnDQor5p6X576O6b2hDQor5p6X576/5aaPDQor5p6X6Ie05ZCbDQor5p6X6Ie056mODQor5p6X6IyC55ubDQor5p6X6Iux55S3DQor5p6X6Iux5YKRDQor5p6X6Iux6YqYDQor5p6X6Jm55aaCDQor5p6X6Jm55a6PDQor5p6X6LKeDQor5p6X6LKe5bu2DQor5p6X6YOB5paHDQor5p6X6YOB5qyjDQor5p6X6YOB6IqsDQor5p6X6YOB5pWPDQor5p6X6YOB5qOuDQor5p6X6YOB6ZuEDQor5p6X6YOB6JitDQor5p6X6Z+L5LieDQor5p6X6Z+L5bu3DQor5p6X6Z+L5ZiJDQor5p6X6aaZ5ZCbDQor5p6X5YCN5LyKDQor5p6X5YCp5aaCDQor5p6X5YCp5oWnDQor5p6X5L+u5rCRDQor5p6X5YCr5petDQor5p6X5Y6f5ZCIDQor5p6X5ZOy5rCRDQor5p6X5ZOy5Lu7DQor5p6X5ZOy5a6PDQor5p6X5ZOy6KOVDQor5p6X5ZOy6LydDQor5p6X5aif5aaCDQor5p6X5aiJ5a2cDQor5p6X5a625byYDQor5p6X5a625byYDQor5p6X5a6255SfDQor5p6X5a625aaCDQor5p6X5a625LqoDQor5p6X5a625YuHDQor5p6X5a625oOgDQor5p6X5a625pqJDQor5p6X5a626IGWDQor5p6X5a6256aODQor5p6X5a626YqYDQor5p6X5a625oW2DQor5p6X5a626LOiDQor5p6X5a626JWZDQor5p6X5a625paMDQor5p6X5a655LufDQor5p6X5a656IGWDQor5p6X5bGV6IGWDQor5p6X5bO75pqJDQor5p6X5bOw5bm0DQor5p6X5bir576kDQor5p6X5bqt55GLDQor5p6X5oGp5YWJDQor5p6X5oGp6ZyIDQor5p6X5oyv5rWpDQor5p6X5oyv5pqYDQor5p6X5oyv5r+xDQor5p6X5pmC5pawDQor5p6X5pmJ5YWoDQor5p6X5pmJ55W/DQor5p6X5pmP5aaCDQor5p6X5pmP56iaDQor5p6X5pu45byYDQor5p6X5pu46IG/DQor5p6X5pu45qW3DQor5p6X5pu45q+FDQor5p6X5pu45r6kDQor5p6X5qGT6LOmDQor5p6X5qGC54+gDQor5p6X5qC85aaDDQor5p6X5rOw5a6JDQor5p6X5rOw57atDQor5p6X5rWa5YKRDQor5p6X5rWp576kDQor5p6X54+u5aaCDQor5p6X54+u6I+BDQor5p6X54+u5YSSDQor5p6X55uK5byYDQor5p6X55uK5aaCDQor5p6X55uK6YGLDQor5p6X55yf57a6DQor5p6X56WQ56a+DQor5p6X56WQ5qaGDQor5p6X56WQ55GEDQor5p6X56qI5oSPDQor5p6X57Sg5aaCDQor5p6X57Sg6LKeDQor5p6X57Sg6I+vDQor5p6X57SU5aaCDQor5p6X57SU5rmYDQor5p6X6ICY5b63DQor5p6X6IC/5byYDQor5p6X6IC/55yfDQor5p6X6Iy1DQor5p6X6LW357+ODQor5p6X6LuS6aChDQor5p6X6auY5rqQDQor5p6X5YGJ5rCRDQor5p6X5YGJ5b2sDQor5p6X5YGJ5qWoDQor5p6X5YGJ5b63DQor5p6X5YGl6Z2SDQor5p6X5ZSv5YexDQor5p6X5ZyL5qyjDQor5p6X5ZyL56WlDQor5p6X5ZyL6ZqGDQor5p6X5ZyL5YuzDQor5p6X5Z+55aCvDQor5p6X5amJ5ZCbDQor5p6X5amJ5am3DQor5p6X5amJ55GcDQor5p6X5bSH5a6HDQor5p6X5bSH5q+FDQor5p6X5bq35a+nDQor5p6X5ZWf5Lq6DQor5p6X5ZWf6IiqDQor5p6X5ZWf6LGQDQor5p6X5pWP6KOVDQor5p6X5qKF6Zq0DQor5p6X5riF5ZCJDQor5p6X5riF6ZuyDQor5p6X5reR5ZCbDQor5p6X5reR6IqsDQor5p6X5reR546yDQor5p6X5reR6LKeDQor5p6X5reR5aifDQor5p6X5reR5ailDQor5p6X5reR5qKFDQor5p6X5reR5aqbDQor5p6X5reR5oOgDQor5p6X5reR6JCNDQor5p6X5reR6I+vDQor5p6X5reR6ZuvDQor5p6X5reR5YSADQor5p6X5reR6YyaDQor5p6X5ra155GcDQor5p6X55ub5YKRDQor5p6X6I6Y5oChDQor5p6X6I236IqzDQor5p6X6Zuq6JCNDQor5p6X5YKR6IGWDQor5p6X5Ym1DQor5p6X5Yud5YKRDQor5p6X5Y2a6ZqGDQor5p6X5am3DQor5p6X5a+M576ODQor5p6X5oOg5paHDQor5p6X5oOg5oChDQor5p6X5oOg576ODQor5p6X5oOg5pWPDQor5p6X5oOg6JCNDQor5p6X5oOg6ZuvDQor5p6X5oOg55CHDQor5p6X5pWm54WMDQor5p6X5pmv5rCRDQor5p6X5pmv6ZuwDQor5p6X5pm66IO9DQor5p6X5pm65riFDQor5p6X5pm65qWtDQor5p6X5pyfDQor5p6X5qOu55SwDQor5p6X5riv6LK0DQor5p6X5rmY5oOgDQor5p6X5rmy6IiSDQor5p6X55Cm5ZyLDQor5p6X55m75bGxDQor5p6X57Sr6I+BDQor5p6X6IiS5oWnDQor5p6X6I+v5LiADQor5p6X6KaW5bCKDQor5p6X6Kmg57+UDQor5p6X6LaFDQor5p6X6YC45piADQor5p6X6YC45bOwDQor5p6X6YC46I+BDQor5p6X6YC45YSSDQor5p6X6YCy55uKDQor5p6X6Yie6Zm2DQor5p6X6ZuB5pWPDQor5p6X6ZuF5ZCbDQor5p6X6ZuF6IqsDQor5p6X6ZuF546yDQor5p6X6ZuF5YCrDQor5p6X6ZuF5rezDQor5p6X6ZuF5Y2aDQor5p6X6ZuF5oOgDQor5p6X6ZuF55CqDQor5p6X6ZuF6JCNDQor5p6X6ZuF6I+vDQor5p6X6ZuF6ZuvDQor5p6X6ZuF5oWnDQor5p6X6ZuF5oWnDQor5p6X6ZuF6KyZDQor5p6X6Zuv5a6jDQor5p6X6Zuy5q2jDQor5p6X6aCG5a6JDQor5p6X6aCG6IiIDQor5p6X5Yuk5reZDQor5p6X5bWp5bGxDQor5p6X5oSP5YCrDQor5p6X5oSP6aiwDQor5p6X5oSb5oOgDQor5p6X5pWs5paHDQor5p6X5pWs5re1DQor5p6X5pWs57+UDQor5p6X5paw5YehDQor5p6X5paw55m8DQor5p6X5pqJ55qTDQor5p6X5qWg5qOLDQor5p6X5q6/5LiADQor5p6X5q+T54+KDQor5p6X5q+T6LaFDQor5p6X5rqQ5rKzDQor5p6X54Wn55S3DQor5p6X54Wc5bqtDQor5p6X54WM6LuSDQor5p6X54Wl5qy9DQor5p6X55Ge5piODQor5p6X55Ge5a62DQor5p6X55Ge6ZuqDQor5p6X55Ge5b63DQor5p6X55Ge6JitDQor5p6X55Gc6I6JDQor5p6X55uf5YKRDQor5p6X56W65YubDQor5p6X56ia5o+aDQor5p6X57aT57atDQor5p6X576p5bOwDQor5p6X576p5YKRDQor5p6X576p5pm6DQor5p6X576p6ZuEDQor5p6X576k5bOwDQor5p6X576k6ICADQor5p6X6IGW5oChDQor5p6X6IGW5oGpDQor5p6X6IGW5YKRDQor5p6X6IGW5pm6DQor5p6X6IGW6YieDQor5p6X6IGW6ICADQor5p6X6JGm6JCNDQor5p6X6KOV5piVDQor5p6X6KOV5aCFDQor5p6X6KOV5YudDQor5p6X6KOV6IicDQor5p6X6Kmp5YehDQor5p6X6Kmp5YCpDQor5p6X6Kmp5re1DQor5p6X6Kmp6ZuvDQor5p6X6Kmp6Iu5DQor5p6X6YGL5rWpDQor5p6X6YmJ5pm6DQor5p6X6ZuN57+UDQor5p6X6Z2W5L+uDQor5p6X6aCM5Y2aDQor5p6X6byO5qSNDQor5p6X5ZiJ56a+DQor5p6X5ZiJ5L+hDQor5p6X5ZiJ54+NDQor5p6X5ZiJ5YGJDQor5p6X5ZiJ55CqDQor5p6X5ZiJ576kDQor5p6X5ZiJ5oWnDQor5p6X5ZiJ6bS7DQor5p6X5pGR5b2lDQor5p6X5qau5qy9DQor5p6X5ryiDQor5p6X5ryi5paMDQor5p6X552/5pqYDQor5p6X56Kn5oOgDQor5p6X56Kp5YSSDQor5p6X57K+5rmbDQor5p6X57at54+KDQor5p6X57at6I6JDQor5p6X57+g6JCNDQor5p6X6JOT576aDQor5p6X6LGq5b2lDQor5p6X6YqY5rSyDQor5p6X6YqY54WMDQor5p6X6YqY54abDQor5p6X6bOz54+NDQor5p6X6b2K6JSaDQor5p6X5YSA6Jm5DQor5p6X5aKe5aiBDQor5p6X5buj576pDQor5p6X5b635pmJDQor5p6X5oW25piHDQor5p6X5oW26JOJDQor5p6X5oWn5ZCbDQor5p6X5oWn5oChDQor5p6X5oWn54+KDQor5p6X5oWn576ODQor5p6X5oWn54+gDQor5p6X5oWn5rezDQor5p6X5oWn6JCNDQor5p6X5oWn6I+vDQor5p6X5oWn6ZuvDQor5p6X5oWn6bqXDQor5p6X5oas6ImvDQor5p6X5r6E5r6kDQor5p6X55Gp6IqzDQor5p6X55G+6JitDQor5p6X6JSa546yDQor5p6X6KGb6IGWDQor5p6X6LOi5b6XDQor5p6X6YGp5LmLDQor5p6X5YSS5rCRDQor5p6X5a246ZqGDQor5p6X5oay5pS/DQor5p6X5oa25rezDQor5p6X5puJ5ZCbDQor5p6X5puJ6IqzDQor5p6X5puJ546yDQor5p6X5puJ5am3DQor5p6X5puJ6I+vDQor5p6X5puJ5ZiJDQor5p6X5puJ5ai4DQor5p6X5r6k576pDQor5p6X54eV5qKFDQor5p6X55KfDQor5p6X56mODQor5p6X56mO6I6JDQor5p6X56mO6IGwDQor5p6X6IiI6YeXDQor5p6X6JWZ5reHDQor5p6X6LGr5LqtDQor5p6X6Yym5Ly2DQor5p6X6Yym6ZqGDQor5p6X6Yym6bS7DQor5p6X6Z2c5ZCfDQor5p6X6Z2c5a6cDQor5p6X6Z2c5oChDQor5p6X6Z2c5oChDQor5p6X6Z2c6IqsDQor5p6X6Z2c6ZuvDQor5p6X6Z2c5YSADQor5p6X6b6N55SfDQor5p6X5oeL5beeDQor5p6X6IGw5LuBDQor5p6X6KyZ5aaZDQor5p6X6ae/6YC4DQor5p6X6bS75ZCbDQor5p6X6bS75b2sDQor5p6X6bS76YGUDQor5p6X6bS76YyhDQor5p6X56au5by3DQor5p6X6LGQ6IicDQor5p6X54Cb5paHDQor5p6X55OK6IqzDQor5p6X6Z+75aifDQor5p6X6bqX5ZCbDQor5p6X6bqX576ODQor5p6X6bqX54+gDQor5p6X6bqX6I+vDQor5p6X6bqX6JOJDQor5p6X5a+256eADQor5p6X57m85bmzDQor5p6X6ICA5Y2XDQor5p6X6Je55paHDQor5p6X5beN6b6NDQor5p6X5oe/5ZCbDQor5p6X6bqfDQor5p6X5aSG6LOTDQor5p6X6IqK5LqoDQor5p6X5pe76YC4DQor5p6X54KF5baUDQor5p6X5aed5Z2HDQor5p6X5pi25a6JDQor5p6X54+I5aakDQor5p6X5YCs5LiWDQor5p6X57ST55GLDQor5p6X55CH6ZuvDQor5p6X5qOo5Lu7DQor5p6X55Cu6ZaUDQor5p6X55Cs55GcDQor5p6X5pqQ5bqtDQor5p6X54WS6bS7DQor5p6X55GL56ujDQor5p6X562x546yDQor5p6X562x6I+BDQor5p6X6JCp54eVDQor5p6X6Yi65bqtDQor5p6X6Yi65YexDQor5p6X6Yi65oWnDQor5p6X55KH5oChDQor5p6X6ZyZ55yfDQor5p6X6amnDQor5q2m6Imv5paHDQor5q2m5pWs5ZKMDQor56WB576p5ZyLDQor6Iqx57696JaHDQor6Iqx6ZuF5paQDQor5Yid6Iul5YehDQor6YK15paH5rOwDQor6YK15b+X6LGQDQor6YK15aWV6YieDQor6YK16YOB5oOgDQor6YK15Yud5re7DQor6YK15oSb546fDQor6YK15oe35b63DQor6YKx5LiA55yfDQor6YKx5LqO5YCpDQor6YKx5Y2D57a6DQor6YKx5aOr5oGtDQor6YKx5aSn5YmbDQor6YKx5a2Q5qWTDQor6YKx5bCP5auaDQor6YKx5LuB5YKRDQor6YKx5aSp5a6PDQor6YKx5paH546JDQor6YKx5paH5p+PDQor6YKx5paH5qy9DQor6YKx5paH6bS7DQor6YKx5LiW5rCRDQor6YKx5LuV5YKRDQor6YKx5bm85aqaDQor6YKx5q2j56WlDQor6YKx5rC45ZiJDQor6YKx546J546yDQor6YKx56uL5ZyLDQor6YKx5Luy6Z+7DQor6YKx5ZCN5LuVDQor6YKx5a6J5Y+wDQor6YKx5pyJ6KuSDQor6YKx5ZCb5riFDQor6YKx5b+X5YWJDQor6YKx5b+X5by3DQor6YKx5b+X5paMDQor6YKx56eA6IuxDQor6YKx56eA6Z2cDQor6YKx6Imv5q+FDQor6YKx5L2z5p2+DQor6YKx5L2z5r2BDQor6YKx5a2f5pyIDQor6YKx5a6a6YKmDQor6YKx5bu26b2hDQor6YKx5oCh5ZasDQor6YKx5oCh56aODQor6YKx5piM6KOVDQor6YKx5piO55CqDQor6YKx5qyj5oChDQor6YKx5rOT5b2wDQor6YKx6Iqz5a6cDQor6YKx6YeR55SfDQor6YKx5L+h55uKDQor6YKx5L+h6LydDQor6YKx5L+K5piMDQor6YKx5L+K5pm6DQor6YKx5L+K5qauDQor6YKx5L+K6ZyWDQor6YKx5Yag55GcDQor6YKx5ZOB6I+vDQor6YKx5Z6C56ugDQor6YKx5aWV5piODQor6YKx5aWV552/DQor6YKx5ae/5oOgDQor6YKx5bu65LitDQor6YKx5bu66KqgDQor6YKx5bu66YuQDQor6YKx5b2l55GbDQor6YKx5oCd5ZiJDQor6YKx5pS/5rmnDQor6YKx5pit5qy9DQor6YKx5pix6Ie7DQor6YKx5p+P55GcDQor6YKx5p+P6ZyWDQor6YKx54+A56WlDQor6YKx55uI5qOgDQor6YKx57SA6I+vDQor6YKx576O5oOgDQor6YKx576O5oWnDQor6YKx6Ie056mODQor6YKx6LuN5rWpDQor6YKx6YOB5reRDQor6YKx6YeN5oayDQor6YKx5ZOy55CzDQor6YKx5a626LOiDQor6YKx5oyv5bOwDQor6YKx5qGC6Yi0DQor6YKx5rWp5b2wDQor6YKx54+u57a6DQor6YKx57SU55GLDQor6YKx5YGJ5YCrDQor6YKx5YGl6ZuEDQor6YKx5ZyL5oGtDQor6YKx5ZyL5r2UDQor6YKx5Z+555GcDQor6YKx5amJ5ayFDQor6YKx5ZWf57+UDQor6YKx5pWP6JWZDQor6YKx5riF6b6NDQor6YKx5reR5aifDQor6YKx5reR55C0DQor6YKx5reR5oWnDQor6YKx57S55rqiDQor6YKx6I6J5am3DQor6YKx5YexDQor6YKx5Ym15YSJDQor6YKx5a+M5rqQDQor6YKx5oOg5ailDQor6YKx5oOg6KmpDQor6YKx5pmv6JCNDQor6YKx5pm65YKRDQor6YKx5rmY6ZuyDQor6YKx57WQDQor6YKx6Kmg5rezDQor6YKx6YC4576kDQor6YKx6ZuF6IqsDQor6YKx6ZuF6I6JDQor6YKx6ZuF6ZuvDQor6YKx6ZuF6IycDQor6YKx5ZyT5oOgDQor6YKx5pWs6ZuvDQor6YKx5q+T546yDQor6YKx54Wl5paHDQor6YKx55Ge5qKFDQor6YKx55uf55CHDQor6YKx6IGW5paHDQor6YKx6IGW5paMDQor6YKx6Kmp5re1DQor6YKx6Kmp55CBDQor6YKx6Z2W6ZuvDQor6YKx5ZiJ5YKRDQor6YKx5ZiJ5oWnDQor6YKx56Kn5pa9DQor6YKx57at5amJDQor6YKx6Z+255GpDQor6YKx5b635YexDQor6YKx5oWn5aaCDQor6YKx5oWn5am3DQor6YKx57ev5bmzDQor6YKx5puJ546yDQor6YKx5qi55ZyLDQor6YKx6Z2c5a6cDQor6YKx6Z2c6ZuvDQor6YKx6Y2+5LuBDQor6YKx6LGQ56WlDQor6YKx55OK5oOgDQor6YKx55OK5oWnDQor6YKx6Z+75a+nDQor6YKx6bqX6IuxDQor6YKx5a+26JCxDQor6YKx57m855GpDQor6YKx6JiK6Z2cDQor6YKx6aao5YSADQor6YKx6b2h6aCkDQor6YKx6aGv5qGTDQor6YKx6aGv6ZyWDQor6YKx5ae157a+DQor6YKx55Cs5reRDQor6YKx5qS/5YexDQor6YKx562x6ZuvDQor6YKx6Yi65paQDQor6YKx556NDQor6YeR5aOr54K6DQor6YeR5Lqs5qauDQor6YeR5piO6LydDQor6YeR5pS/6Ku6DQor6YeR54+e55CzDQor6YeR5YukDQor6YeR56OKDQor5L6v5Yqb57atDQor5L6v5paH5ZOyDQor5L6v5q2j6bS7DQor5L6v5aaC6IqsDQor5L6v5a6P5piMDQor5L6v56eA5aaCDQor5L6v5L2z5YW4DQor5L6v5Ye956eADQor5L6v5bKz5a6PDQor5L6v5piG5YqpDQor5L6v5qyj57+wDQor5L6v5L+h5a6HDQor5L6v5ZK45LuwDQor5L6v5b2l5Ly4DQor5L6v5p+P6Z2SDQor5L6v6Ie05LitDQor5L6v57Sg6ZuyDQor5L6v5re16YqYDQor5L6v5Y2a5YWDDQor5L6v5pmv5YubDQor5L6v6LK06b2hDQor5L6v6ZuF6ZuvDQor5L6v5ZiJ54+NDQor5L6v5oW26L6wDQor5L6v6Z2c5rGdDQor5L6v6bqX5oWnDQor5L6v6ZyI6Z2SDQor5L+e5L2z5YehDQor5L+e5rOK6ZyWDQor5L+e6IO95pa5DQor5L+e6ZuF5am3DQor5L+e6IqK6JaIDQor5aec5YWD6YieDQor5aec5ZCO5oChDQor5aec5a6P5qauDQor5aec5L2p5Ly2DQor5aec5piO5a6PDQor5aec6Iqd5oChDQor5aec5bu66YqYDQor5aec5aCJ5r2BDQor5aec5Yex5YKRDQor5aec5pm66YieDQor5aec6ZuF5am3DQor5aec576p5oS3DQor5aec5aKe54KrDQor5aec5qi56YymDQor5aec56au6LGqDQor5aec5pe75aeNDQor5aea5Y+I5paHDQor5aea5pa55r2UDQor5aea56uL5LiJDQor5aea5YWL6YieDQor5aea5b+X5oayDQor5aea5L2z5oWnDQor5aea5a6X5qi4DQor5aea5oCh6JitDQor5aea6YeR5rqQDQor5aea5aiB5a6HDQor5aea55uI5Lu7DQor5aea57Sg6JitDQor5aea5Yex5paHDQor5aea55Cb5a+MDQor5aea55Ge6LOiDQor5aea5b636bqfDQor5aea6bqX5Lq6DQor5a6j5b+X5YeMDQor5b6L5oyv5o+aDQor5pa95aSn57atDQor5pa95paHDQor5pa95paH6LGqDQor5pa95Y+v6ZqGDQor5pa9546J5ZOBDQor5pa95ZCN546lDQor5pa95a6H6ae/DQor5pa955m+5qi6DQor5pa95Lyv5a6cDQor5pa95a2d5b63DQor5pa95a6P5r6kDQor5pa95b+X6LGqDQor5pa956eA5a6bDQor5pa96IKy55GcDQor5pa95L2z5ZCbDQor5pa95L2p5ZCbDQor5pa95L2p6I+vDQor5pa95a2f5a6PDQor5pa95a6c5ZGIDQor5pa95a6b55u0DQor5pa95oCh5aaCDQor5pa95oCh6Yi0DQor5pa95piO5aaNDQor5pa95p2w5p2+DQor5pa9546r5ZCbDQor5pa96Zuo5L2QDQor5pa95L+K5ZCNDQor5pa95L+K6LOiDQor5pa95aWV5ra1DQor5pa95bu65a6HDQor5pa95b2l55SrDQor5pa95pS/6LGqDQor5pa95p+P5aaCDQor5pa955qH5petDQor5pa9576O55GbDQor5pa96YOB6JWZDQor5pa95oyv5Z2kDQor5pa957Sg5Y2/DQor5pa95YGl6bS7DQor5pa95pWP55S3DQor5pa95reR5oOgDQor5pa96Zuq5ae/DQor5pa95Y2a5YWDDQor5pa95a+M5rWpDQor5pa95oOg55CqDQor5pa95pm65YuHDQor5pa956iL5YexDQor5pa96Kmg54S2DQor5pa96Yie5YCrDQor5pa96ZuF5aifDQor5pa96Zuv55CqDQor5pa9576p5ruEDQor5pa95ZiJ55CqDQor5pa95ryi5ba4DQor5pa96KqM6LGqDQor5pa95oWn5ZCbDQor5pa955G+5YCrDQor5pa95puJ6ZuvDQor5pa96Z2c5oChDQor5pa955OK5aaCDQor5pa96aao6LK0DQor5pa95pe75a6cDQor5pa955GL55GcDQor5p+v5Yqb6LGqDQor5p+v5YWD5YexDQor5p+v5paH56WlDQor5p+v5LiW6LOiDQor5p+v5rC45b+gDQor5p+v5YWo55uKDQor5p+v5Lyv5b2lDQor5p+v5a6P5aiBDQor5p+v5b+X5piODQor5p+v5rKb5b+XDQor5p+v6Imv6JWZDQor5p+v5L2z56eADQor5p+v5L2p5ZCbDQor5p+v5Z2k5piODQor5p+v5a6X5LyvDQor5p+v5a6b5ZCbDQor5p+v5oCh546fDQor5p+v5piO57+wDQor5p+v5qyj5YSADQor5p+v6YeR5p2PDQor5p+v5L+K5ZCJDQor5p+v5L+K6ZqGDQor5p+v5a6j5a6HDQor5p+v5b2l5petDQor5p+v5pit55SfDQor5p+v55uI5aaCDQor5p+v6Jm55aaCDQor5p+v5rOw5ZCNDQor5p+v5pWP55ubDQor5p+v5reR5oOgDQor5p+v6YCj55SwDQor5p+v5Y2a5YWDDQor5p+v5a+M6K2wDQor5p+v5oOg6I+xDQor5p+v5pm65LuBDQor5p+v5qOL5qOjDQor5p+v6ZaU5paHDQor5p+v6ZuF6I+vDQor5p+v5q+T6JCNDQor5p+v5ZiJ5rG2DQor5p+v56Kn5pitDQor5p+v6bOz5YSADQor5p+v5oay6JK8DQor5p+v6Yym55S3DQor5p+v55OK6Y6jDQor5p+v5pe76ImvDQor5p+l5oWn55CzDQor5p+z5aaC5bqtDQor5p+z5L2p5ZCbDQor5p+z5bu66ImvDQor5p+z6Iy56JCNDQor5p+z5qOL5YWDDQor5p+z5ZiJ6LuSDQor5p+z6ba05p2+DQor5q615piO5a6PDQor5q616YC46LuSDQor5rSq5LiA5LitDQor5rSq5Yqb5aO5DQor5rSq5LqO6ZaUDQor5rSq5Y2D5oOgDQor5rSq5Y2D55CmDQor5rSq5aOr6IKyDQor5rSq5aOr5YKRDQor5rSq5aSn54K6DQor5rSq5a2Q5am3DQor5rSq5bCP5oOgDQor5rSq5YWD5paMDQor5rSq5paH5piODQor5rSq5paH5YexDQor5rSq5paH6LOiDQor5rSq5LiW5piHDQor5rSq5LiW5ZiJDQor5rSq5Yqg6YGUDQor5rSq5q2j5YWJDQor5rSq5rC45piMDQor5rSq546J6IqzDQor5rSq546J5am3DQor5rSq546J6JKoDQor5rSq5Lqm5r2UDQor5rSq5YWJ5YSEDQor5rSq5ZCN6KGhDQor5rSq5a6J5L+QDQor5rSq55m+6LOiDQor5rSq5L2R5piHDQor5rSq5ZCb56WlDQor5rSq5a6P5pS/DQor5rSq5b+X55SfDQor5rSq5b+X5piODQor5rSq5b+X6ZuEDQor5rSq5b+X6YqYDQor5rSq5p2R6YqYDQor5rSq56eA6IqzDQor5rSq56eA55GpDQor5rSq6Imv5qyjDQor5rSq5L6d55CqDQor5rSq5L2z55CzDQor5rSq5L2p5Ly2DQor5rSq5Z2k6YyhDQor5rSq5a2f55GkDQor5rSq5a6X5ryiDQor5rSq5a6c6ImvDQor5rSq5bCa6YqYDQor5rSq5b+g6IGWDQor5rSq5oCh55yfDQor5rSq5piO5YyWDQor5rSq5piO5YGJDQor5rSq5piO6b6NDQor5rSq5qyj5piHDQor5rSq6Iq35ryqDQor5rSq5L+h5ZiJDQor5rSq5L+K6ZuEDQor5rSq5a6j56u5DQor5rSq5oCd55CqDQor5rSq5pS/6ZyIDQor5rSq5p+P5a+nDQor5rSq56eL6I+vDQor5rSq576O6JCNDQor5rSq6IyC6ZuEDQor5rSq6Iux5YKRDQor5rSq6YOB5bqtDQor5rSq6YeN5Y2/DQor5rSq5a6255CqDQor5rSq5oKF546yDQor5rSq5oyv55uKDQor5rSq5oyv6YqYDQor5rSq5qC56I+vDQor5rSq54+u6IqzDQor5rSq54+u57a6DQor5rSq6IC/5pm6DQor5rSq5YGJ5ZOyDQor5rSq5YGJ5YKRDQor5rSq5YGJ6KutDQor5rSq5YGl5bOwDQor5rSq5pu854+KDQor5rSq5ZyL5ZOyDQor5rSq5ZyL5oOfDQor5rSq5ZyL57+UDQor5rSq5ZyL6ICADQor5rSq5Z+55YCrDQor5rSq5amJ57SLDQor5rSq5bSH5oGpDQor5rSq5bSR5YGlDQor5rSq5b6h5b2XDQor5rSq5ZWf5YGJDQor5rSq5pWP6IqzDQor5rSq5pWP6ZuEDQor5rSq5riF5YGlDQor5rSq5reR6LKeDQor5rSq5reR5oOgDQor5rSq5reR5repDQor5rSq57S55paHDQor5rSq57+O6LOTDQor5rSq6Zuq6IqzDQor5rSq5Yud5YexDQor5rSq5oOg5paHDQor5rSq5oOg5qOLDQor5rSq5pm05pm0DQor5rSq5pm66LOiDQor5rSq55Cm5oOgDQor5rSq6I+B6ZqGDQor5rSq6I+x57SrDQor5rSq6ZqG5pm6DQor5rSq6ZuF6IuTDQor5rSq6ZuF6ZuvDQor5rSq6aCG55S3DQor5rSq5oWI5Ly2DQor5rSq5oS35bu3DQor5rSq5qWo6YKmDQor5rSq5q+T5ayqDQor5rSq54WM5YexDQor5rSq55Ge5aCCDQor5rSq55Ge6JOJDQor5rSq55Ge6bS7DQor5rSq6JCs5b6XDQor5rSq6IGW5oGpDQor5rSq6JCx6YuSDQor5rSq6KOV54ScDQor5rSq6Kmp6ZuFDQor5rSq6Z2W5YexDQor5rSq5ZiJ5Zy7DQor5rSq5ZiJ54+KDQor5rSq5ZiJ55CzDQor5rSq5ZiJ6JOuDQor5rSq5ZiJ6ae/DQor5rSq5a+nDQor5rSq5qau6LydDQor5rSq55SE6IuhDQor5rSq56Kp5YGJDQor5rSq57a6DQor5rSq57at6ImvDQor5rSq57at5r6kDQor5rSq6IKH5b2lDQor5rSq6KqM5by3DQor5rSq6YqY5L2QDQor5rSq6YqY6Zm9DQor5rSq6YqY6Y2+DQor5rSq6a2B56anDQor5rSq5a+s5rOwDQor5rSq5oW26YqYDQor5rSq5oWn546yDQor5rSq5oWn6JCNDQor5rSq55Gp54+NDQor5rSq5YSS5piODQor5rSq5puJ5bWQDQor5rSq6JWZ5b+DDQor5rSq6Z2c5oChDQor5rSq6IGy6YqTDQor5rSq56au5ZCbDQor5rSq6Jed6I+BDQor5rSq6bqX5ae/DQor5rSq6bqX6YieDQor5rSq57m86LOiDQor5rSq5YS36bOzDQor5rSq5Yqt5YWDDQor5rSq5pmi5oOHDQor5rSq5paM5YexDQor5rSq5q2G5oChDQor5rSq562x5L2pDQor5rSq6Yi65qu7DQor55u45a2f6LGqDQor57SA5Lq655GLDQor57SA5paH5qy9DQor57SA5ZCJ5aaCDQor57SA5Lyv55KBDQor57SA5b+X6ZyWDQor57SA5L2z5a6cDQor57SA5a6X6ZyWDQor57SA5oCh5am3DQor57SA5rOT5aCvDQor57SA6ZW36IiIDQor57SA5aiB5769DQor57SA55uI5beeDQor57SA56WW6LGqDQor57SA5reR6IqzDQor57SA5Y2a5pWPDQor57SA5pm65LuBDQor57SA6Yie6ZaODQor57SA6aCG6IiIDQor57SA6YqY5Z2kDQor57SA5puJ5oGpDQor57SA6Jit5r2UDQor6IOh5LiB5YWDDQor6IOh5bCP6JCNDQor6IOh5b+D5oWnDQor6IOh5paH55GcDQor6IOh5LiW6J6NDQor6IOh5q2j57+wDQor6IOh546J5oWnDQor6IOh5ZCM5LquDQor6IOh5oiQ56ugDQor6IOh5bu35aiBDQor6IOh5b+X6YqYDQor6IOh6IKy57atDQor6IOh5L2z56aODQor6IOh5a6a5a6HDQor6IOh5oCh6IqzDQor6IOh5p2x5piHDQor6IOh6Iqz5oWIDQor6IOh6YeR54GdDQor6IOh5bidDQor6IOh546y5amJDQor6IOh6Iul55S3DQor6IOh5L+u55GADQor6IOh5a625qauDQor6IOh5bGV6YqYDQor6IOh5oyv5LitDQor6IOh5pu457a/DQor6IOh57SU6I+BDQor6IOh5Lm+6YuSDQor6IOh5o6I5rezDQor6IOh5reR5ZCbDQor6IOh5reR6ZuFDQor6IOh5Yex5pm6DQor6IOh5Y2a56GvDQor6IOh5oOg5am3DQor6IOh5pmv6ZuvDQor6IOh5pm66YqYDQor6IOh56uj56GvDQor6IOh6LK05pyIDQor6IOh6ZuF5aaNDQor6IOh6ZuF5pm6DQor6IOh6aCG6ZqGDQor6IOh5q+T55m8DQor6IOh55Ge5rSZDQor6IOh6Kmp6I+BDQor6IOh5ZiJ55yfDQor6IOh56Kn5aqcDQor6IOh6LWr5bu3DQor6IOh5oWn5aaCDQor6IOh5oay6ZyWDQor6IOh6Z2c6IuRDQor6IOh55OK5paHDQor6IOh6ICA5LuBDQor6IOh5oe/5b+DDQor6IOh54WS54+NDQor6IyD5Lit5aiBDQor6IyD5paH5pS/DQor6IyD5LiW55KLDQor6IyD546J6JCxDQor6IyD5ZCJ5oW2DQor6IyD5Z2H5rKbDQor6IyD55Sr5a6XDQor6IyD5L2z6ZuvDQor6IyD5piO5LitDQor6IyD5Yag5YGJDQor6IyD5aec5b2l5aaCDQor6IyD5aec5oWn5oChDQor6IyD56eL6ZyeDQor6IyD6YOB5aaCDQor6IyD5a626KqgDQor6IyD5oyv5paHDQor6IyD5oyv6bqfDQor6IyD6ICV6a2BDQor6IyD5ZyL5Z+6DQor6IyD5reR546yDQor6IyD6I6J6IuTDQor6IyD5Y2a5b2wDQor6IyD5o+a5a6cDQor6IyD5o+a6aiwDQor6IyD5pm65qy9DQor6IyD6Yie5YKRDQor6IyD5q+T6LKeDQor6IyD55Ge56WlDQor6IyD6Kmp5ryqDQor6IyD5ryi5ZCbDQor6IyD57ax6LOiDQor6IyD5oWn5aaCDQor6IyD5puJ5oChDQor6IyD54Ca5paHDQor6IyD6ICA6IGwDQor6IyD55CH55KHDQor6IuX5b6M5YKRDQor6KiI56u55a6HDQor6Z+L5Lq655GcDQor6Z+L5b+X6bS7DQor6Z+L5qGC5LuBDQor5YCZ5pi66L6wDQor5YCq546J6b6NDQor5YCq5b+X6bS7DQor5YCq5aiB6YGgDQor5YCq5YGJ5pm6DQor5YCq5reR5am3DQor5YCq55Ge5pyfDQor5YCq5oWn54+KDQor5YeM5LiW6IqzDQor5YeM5piO5b63DQor5YeM6Zuq5oOgDQor5YeM5oWn6JCNDQor5ZSQ5Y2D5oOgDQor5ZSQ5paH6LOiDQor5ZSQ5rC46IiIDQor5ZSQ5L2c6LGqDQor5ZSQ6YKm5rOwDQor5ZSQ5piO5b+XDQor5ZSQ5oCd57atDQor5ZSQ6Iux5aicDQor5ZSQ54+u54+KDQor5ZSQ5ZyL5b+gDQor5ZSQ5reR6IqsDQor5ZSQ5pyd57evDQor5ZSQ6ZuF54eVDQor5ZSQ576p5aCvDQor5ZSQ5ZiJ576aDQor5ZSQ6Z+26ZyZDQor5ZSQ5puJ5b6uDQor5ZSQ6K29546rDQor5aSP5q2j6YKmDQor5aSP6Imv546JDQor5aSP5pil6aaZDQor5aSP5reR6JOJDQor5aSP6YGU5YGJDQor5aSP5oWn6b2hDQor5aSP57+K5YCrDQor5a2r5LiK6ZuvDQor5a2r5aOr54OYDQor5a2r5YWD5L+KDQor5a2r5pa55YSADQor5a2r5Y+v54K6DQor5a2r5rC45L+hDQor5a2r56uL5rCRDQor5a2r5aaC5b2sDQor5a2r5Lyv5LitDQor5a2r5b+X5YuHDQor5a2r6IKy6IqdDQor5a2r5Y2U6KOVDQor5a2r5b+g5YexDQor5a2r5piO6ae/DQor5a2r6YeH6JaHDQor5a2r5bu65bS0DQor5a2r576O6IuxDQor5a2r6YOB5am3DQor5a2r5oyv5ra8DQor5a2r54+u6IqzDQor5a2r5YGJ5YCrDQor5a2r5ZyL5pu4DQor5a2r5bSH5ZOyDQor5a2r5oOf5q2jDQor5a2r5reR6IqsDQor5a2r5YKRDQor5a2r55CmDQor5a2r6YC454eVDQor5a2r5YKz5YexDQor5a2r5rqi5aCCDQor5a2r552m5YKRDQor5a2r6YGT6ZqGDQor5a2r5ZiJ6JStDQor5a2r57axDQor5a2r6LGq5b+XDQor5a2r6YqY6bS7DQor5a2r5oWn5rSlDQor5a2r5a245YSADQor5a2r6b6N57+UDQor5a2r6bqX5aifDQor5a2r54KY5a6cDQor5a2r55GADQor5a6u5aeN5aeNDQor5bir5a6c6Z2SDQor5b6Q5LmZ5Y+vDQor5b6Q5Y2D56WQDQor5b6Q5Y2D6ZuFDQor5b6Q5aOr5YubDQor5b6Q5a2Q5bmzDQor5b6Q5a2Q5by3DQor5b6Q5bCP6JCNDQor5b6Q5LuB5Lm+DQor5b6Q5b+D5a6cDQor5b6Q5paH5ZCbDQor5b6Q5paH55uKDQor5b6Q5pyI5ailDQor5b6Q5LiW5Z+6DQor5b6Q5LuV5rOTDQor5b6Q5ben5YeMDQor5b6Q5q2j5oChDQor5b6Q5rC45YWJDQor5b6Q5rC46bO0DQor5b6Q546J6IqsDQor5b6Q546J5oWIDQor5b6Q56uL6YGUDQor5b6Q5YWJ5bmzDQor5b6Q5Yyh5bmzDQor5b6Q5aaC5piHDQor5b6Q5pyJ5oW2DQor5b6Q6Im+5Ly2DQor5b6Q5YWL6YieDQor5b6Q5a6P5a6HDQor5b6Q5b+X5a6HDQor5b6Q5b+X5YGJDQor5b6Q5b+X6LGqDQor5b6Q5p2O5YWoDQor5b6Q56eA546yDQor5b6Q6IKy5oWIDQor5b6Q5L2z5aaCDQor5b6Q5L2p5aaCDQor5b6Q5L2p6YymDQor5b6Q5a6X5rqQDQor5b6Q5b+g576pDQor5b6Q5piG576/DQor5b6Q5piO6I+vDQor5b6Q5piO6bS7DQor5b6Q5p2+6bS7DQor5b6Q5qyj5aaPDQor5b6Q55+l5pysDQor5b6Q6YeH6JaHDQor5b6Q5L+h5LitDQor5b6Q5L+K5YKRDQor5b6Q5aWV5pqJDQor5b6Q5oCd57atDQor5b6Q5p+P6Z+cDQor5b6Q576O546JDQor5b6Q576O6I+vDQor5b6Q6Iul6aaoDQor5b6Q6Iux56KpDQor5b6Q6YOB5qi6DQor5b6Q5a625qW3DQor5b6Q5oyv5rSyDQor5b6Q5pu45pS/DQor5b6Q5rWa5YKRDQor5b6Q54+u56aODQor5b6Q5YGJ5YehDQor5b6Q5YGJ5bO7DQor5b6Q5YGJ6aCGDQor5b6Q5YGl6aCGDQor5b6Q5ZyL5YCrDQor5b6Q5ZyL5pm6DQor5b6Q5ZyL6ICADQor5b6Q5Z+55rq2DQor5b6Q5amJ5YSADQor5b6Q5bSR5bSZDQor5b6Q5b6e6KqlDQor5b6Q5pWP6IqzDQor5b6Q5pWP6I+vDQor5b6Q5qKF5YeMDQor5b6Q5reR5aifDQor5b6Q5reR5ayqDQor5b6Q56Wl54S2DQor5b6Q6I6J55yfDQor5b6Q6Zuq55OKDQor5b6Q5a+M5bq3DQor5b6Q5oOg54+NDQor5b6Q5o6M55GbDQor5b6Q5pyd5bq3DQor5b6Q6IiS5LqeDQor5b6Q6Kmg5aqbDQor5b6Q6YCy5a+2DQor5b6Q6ZuF5qOLDQor5b6Q6aCG5a6PDQor5b6Q5oSb5am3DQor5b6Q5q+T6ImvDQor5b6Q55Ga6Y6CDQor5b6Q55Ge5oGtDQor5b6Q55Ge6IGwDQor5b6Q55Gc5pWPDQor5b6Q6KOV5b2sDQor5b6Q6LOH6Ki8DQor5b6Q6Z2W5oOgDQor5b6Q5ZiJ5a6PDQor5b6Q5ZiJ55CzDQor5b6Q5ZiJ6aeSDQor5b6Q5aSi6bqfDQor5b6Q5qau6L6wDQor5b6Q55SE6bS7DQor5b6Q56aP56WlDQor5b6Q57at5o+aDQor5b6Q57+g6YGZDQor5b6Q6YqY5L2bDQor5b6Q6YqY6KyZDQor5b6Q6bOz5oa2DQor5b6Q5b636LOiDQor5b6Q5oWn5b+DDQor5b6Q5oWn5am3DQor5b6Q5q+F5a6PDQor5b6Q6ZyH5p2xDQor5b6Q5puJ562gDQor5b6Q6IiI5remDQor5b6Q6Z2c5YSADQor5b6Q6bS75LuBDQor5b6Q6LSK55m7DQor5b6Q6bqX54+NDQor5b6Q57m85pS/DQor5b6Q5qu76IqzDQor5b6Q5revDQor5b6Q6I+h56anDQor5b6Q55GL6IqsDQor5b6Q562x6Iq4DQor5b6Q6Yi657a+DQor5b6Q6ZGr6LGqDQor5pu455m+5bedDQor5qGR5oCh56eLDQor5p+05a246IicDQor5q636Iq36IulDQor5q6357S56ZaUDQor5q636IKH6Zm9DQor5rWm5puJ6bOzDQor55WZ5Lm+54ScDQor56WW5puJ6bOzDQor56em5LiA5bmzDQor56em5a6J56uLDQor56em5bu655GLDQor56em5qKT6YqYDQor56em6IGW5YKRDQor56em6bqX6ZuFDQor57+B5LqO55CqDQor57+B5aOr6LuSDQor57+B5a2Q5am3DQor57+B5paH6Iy5DQor57+B5Lul5ZOyDQor57+B546J5aifDQor57+B5Luy6LOiDQor57+B5a6H6ae/DQor57+B5a6P6ZyWDQor57+B5b+X6LGqDQor57+B6IKy56iUDQor57+B5L2z6Z+7DQor57+B5a6X6KOVDQor57+B5piO5a6JDQor57+B5p6X6YuMDQor57+B5L+h6Ie6DQor57+B5p+P6IGWDQor57+B6Iux5paMDQor57+B5oyv6IqzDQor57+B54+u5oChDQor57+B5YGJ5YCrDQor57+B5YGl57evDQor57+B5Z+65riFDQor57+B5bSH5bqtDQor57+B5ZWf5L+hDQor57+B5pmo6ICADQor57+B5reR6I+vDQor57+B5aO55ae/DQor57+B5ruL54+uDQor57+B6YC46LuSDQor57+B6ZuF5oOgDQor57+B5q+T57+ODQor57+B55Ge576aDQor57+B576p5a6XDQor57+B6byO5piMDQor57+B5ZiJ57+ODQor57+B5aSi5ZCbDQor57+B56Kn5aOVDQor57+B57at6ImvDQor57+B6YqY6YGcDQor57+B5b635Y2/DQor57+B5puJ6IqsDQor57+B6Z2c55GcDQor57+B6bqS5piMDQor57+B5YS35YCpDQor57+B55GL5aifDQor57+B6Z2a5pmPDQor6I2K5YGJ5pS/DQor6KKB5aSp6IuxDQor6KKB5aaC5bKhDQor6KKB5oCh6Iy5DQor6KKB5p+P5YGJDQor6KKB5YGJ5YCrDQor6KKB5ZWf6ZGrDQor6KKB6ZuF5oOgDQor6KKB5qau54emDQor6KKB6Z2c6I+vDQor6KiY5L2z6ZuvDQor6YOd5pS/6bS7DQor6aas5LiA5paHDQor6aas5Lit6amKDQor6aas5Y2g5bOwDQor6aas546J5aifDQor6aas5a6J5aauDQor6aas5b+X5piODQor6aas5L2z5Ly2DQor6aas5bKz5a6PDQor6aas5Y2X5qyjDQor6aas6Iux5YKRDQor6aas54+u5am3DQor6aas5ZyL6JW+DQor6aas5reR5Y2/DQor6aas5pm65ZCbDQor6aas54WM5Z2kDQor6aas5ZiJ6ZqGDQor6aas57eS5bedDQor6aas5oa25am3DQor6aas5qu76I+BDQor6auY5LiA6YqYDQor6auY5Y2D5oOgDQor6auY5aOr5piODQor6auY5a2Q5reHDQor6auY5bCP5paHDQor6auY5Y+L5oWnDQor6auY5paH5b2sDQor6auY5LiW5piMDQor6auY5Li75by3DQor6auY5byY5beeDQor6auY5q2j5ZyLDQor6auY546J5aaCDQor6auY546J6aaoDQor6auY5LyK5L+KDQor6auY5ZCI5YqpDQor6auY5pet5oW2DQor6auY6Iez5a+sDQor6auY5a6P6YqYDQor6auY5b+X5YGJDQor6auY5b+X6a2BDQor6auY56eA6Yi0DQor6auY5Lqe6JitDQor6auY5L2p5ZCfDQor6auY5aau55GLDQor6auY5a6X54WSDQor6auY5bm455GcDQor6auY5piODQor6auY5piO55GLDQor6auY5qyj5r2UDQor6auY6YeR5b+XDQor6auY5ZK45a+mDQor6auY5b2l5YubDQor6auY5p+P6LGqDQor6auY576O6IqzDQor6auY6Iux5YexDQor6auY6YOB5YexDQor6auY5bOwDQor6auY5qCpDQor6auY54+u57a6DQor6auY5YGJ5YCrDQor6auY5YGlDQor6auY5ZyL5ZOyDQor6auY5ZyL5a+nDQor6auY5Z+555yfDQor6auY5b2s5Y6fDQor6auY5ZWf56WQDQor6auY5pWP5aiJDQor6auY5reR6IqzDQor6auY5reR5oOgDQor6auY56yZ6LyUDQor6auY6Zuq5Y2/DQor6auY5am3DQor6auY5pmv5oChDQor6auY55Cq6IiSDQor6auY6Kmg5b2lDQor6auY6ZuF6IqzDQor6auY6ZuF6IW5DQor6auY5oSP56aODQor6auY5q+T6L6wDQor6auY54Wn6ZaUDQor6auY55Ge55GkDQor6auY576p5b+gDQor6auY6Kmp5aiJDQor6auY6aCM5riFDQor6auY5ZiJ6ImvDQor6auY5ZiJ5ba8DQor6auY5b2w6ZqGDQor6auY552/6JitDQor6auY56uv546rDQor6auY57+g57+ODQor6auY6YqA56mXDQor6auY6YqY5YKRDQor6auY6YqY55CHDQor6auY5YSA6YqYDQor6auY5oW25paMDQor6auY5oWn6JCNDQor6auY5oa25aaCDQor6auY6Z2c5rCRDQor6auY6JaH6JaHDQor6auY6K2c5YCrDQor6auY6bqX6JWZDQor6auY6aGl5ZOyDQor6auY5paM6ZGrDQor6auY562x5oWnDQor6auY6JaP5ra1DQor5ZWG5byY5piTDQor5ZWG6bOz6IuxDQor5a+H6bqX6ZuvDQor5bSU5L2R57atDQor5bSU5YCp6IuTDQor5bSU55Cm5rCRDQor5bi45qyj546JDQor5bq35LmD5pyIDQor5bq35LuV5a6XDQor5bq35a6H5a+nDQor5bq35pS46I+vDQor5bq35a2f5oSPDQor5bq36YeR6YuSDQor5bq3576O546yDQor5bq35a625b2wDQor5bq35bqt55GeDQor5bq36YWN5a65DQor5bq35YKR5rCRDQor5bq35pm65piHDQor5bq355m75YKRDQor5bq36ZuF5am3DQor5bq356ia5pqYDQor5bq35ZiJ6JitDQor5bq35puJ6JWZDQor5bq36bqX6LKeDQor5by1DQor5by15LiA6bS7DQor5by15LmD5paHDQor5by15LmD5YGJDQor5by15Yqb5LuBDQor5by15Yqb5aSrDQor5by15Y+I5Y2DDQor5by15Y+I54mZDQor5by15Y2D6YeMDQor5by15aOr6LOiDQor5by15a2Q5piMDQor5by15bCP6JCNDQor5by15Lit6JaHDQor5by15bC56aaoDQor5by15LuB5p2wDQor5by15LuB5YKRDQor5by15LuB6IGwDQor5by15YWDDQor5by15YWD6ZqGDQor5by15YWD6bS7DQor5by15Y+LDQor5by15aSp6bOzDQor5by15bCk5a2QDQor5by15b+D5oChDQor5by15b+D55GcDQor5by15b+D6aaoDQor5by15paH6IKyDQor5by15paH5piODQor5by15paH5b2lDQor5by15paH546yDQor5by15paH6LuSDQor5by15paH5qy9DQor5by15paH6ZuvDQor5by15paH5qauDQor5by15paH6LGqDQor5by15paH5qi1DQor5by15paH54iQDQor5by15paH6aiwDQor5by15pyI5a65DQor5by15LiW5LitDQor5by15LiW5bKzDQor5by15LiW5piODQor5by15LiW6IqsDQor5by15LiW6ZuvDQor5by15LiW5YSSDQor5by15LiW5aOODQor5by15Lul5YWoDQor5by15LuV6IKyDQor5by15LuV5pe7DQor5by15Yqg5piHDQor5by15Y+v5qyjDQor5by15aSu5piMDQor5by15ben546yDQor5by15bm855GLDQor5by15byY5rOwDQor5by15b+F5piODQor5by15q2j5L2ZDQor5by15q2j5b+gDQor5by15q2j5p2wDQor5by15q2j6ZqGDQor5by15q2j6KGbDQor5by15q2j546XDQor5by15rC45p2QDQor5by15rC45piGDQor5by15rC45L+KDQor5by15rC45qOLDQor5by15rC45YuzDQor5by1546E6bS7DQor5by1546J5qyjDQor5by1546J546yDQor5by1546J55CqDQor5by1546J6JOJDQor5by1546J5pe7DQor5by156uL5paHDQor5by156uL5qyjDQor5by156uL6YieDQor5by156uL57evDQor5by15Lqm5a+nDQor5by15Luy5bmzDQor5by15Luy6YqTDQor5by15YWJ5LuBDQor5by15YWJ5YGJDQor5by15YWG5Z+fDQor5by15Yyh5p2wDQor5by15ZCJ6LGQDQor5by15aW956auDQor5by15aaC55GpDQor5by15a6H56ujDQor5by15a6J5aauDQor5by15byP6ImvDQor5by15pet5a6XDQor5by15rGO6aiPDQor5by157695r2UDQor5by16Iez552/DQor5by16Im+6Yi0DQor5by15L2R5rCRDQor5by15L2R576kDQor5by15L2c5oiQDQor5by15Lyv6ae/DQor5by15YWL5YGJDQor5by15ZCb5aaCDQor5by15ZCb55GcDQor5by15ZCf5oWIDQor5by15aaZ5oWnDQor5by15a6L6JCNDQor5by15a6P5pilDQor5by15a6P55GeDQor5by15a6P6YqYDQor5by15biM6IGWDQor5by15b+XDQor5by15b+X5LuwDQor5by15b+X5a6HDQor5by15b+X6IifDQor5by15b+X5piODQor5by15b+X5YGJDQor5by15b+X5aCFDQor5by15b+X56WlDQor5by15b+X55CzDQor5by15b+X5rqQDQor5by15b+X6YGUDQor5by15b+X6LGqDQor5by15b+X6LGqDQor5by15b+X6LGqDQor5by15b+X6YqYDQor5by15b+X6bS7DQor5by15b+X55GEDQor5by15rKF55K9DQor5by156eA546JDQor5by156eA54+NDQor5by156eA55CqDQor5by156eA6JOJDQor5by16IKy5bmzDQor5by16IKy5bSnDQor5by16IKy6I+BDQor5by16IKy5oWODQor5by16IKy6KqgDQor5by16IKy5b2wDQor5by16IKy57a4DQor5by16IKy6YqTDQor5by16IKy55GLDQor5by16Imv5rqQDQor5by16YKR5aaCDQor5by15Lqe6YqcDQor5by15L2z5paHDQor5by15L2z6Z+zDQor5by15L2z5oOgDQor5by15L2z6ZuvDQor5by15L2z6JOJDQor5by15L2p5biGDQor5by15L2p55GbDQor5by15Y+U576ODQor5by15a2f546JDQor5by15a2f5am3DQor5by15a6X5LuBDQor5by15a6X6LOiDQor5by15a6c5pawDQor5by15bCa6YieDQor5by15bu25Lu7DQor5by15b+15oWIDQor5by15oCh5qyjDQor5by15oCh6I6JDQor5by15oCh5oWnDQor5by15piG54WMDQor5by15piO5YipDQor5by15piO56WlDQor5by15piO54WnDQor5by15piO55KLDQor5by15piH5qy9DQor5by15p6X6IqsDQor5by15qyj5oChDQor5by15qyj6JWZDQor5by15rK75ZyLDQor5by156eJ56W6DQor5by16Iqz6I+BDQor5by16Iqz57a+DQor5by16Iqd5Y+LDQor5by16Iq45oWnDQor5by16YeR5bGxDQor5by16YeR6bOzDQor5by16Zuo562RDQor5by15L+h55m8DQor5by15L+K5YGJDQor5by15L+K5aCvDQor5by15L+K6LOiDQor5by15Yag6I+vDQor5by15ae/5aqaDQor5by15bu66YKmDQor5by15bu656WlDQor5by15bu66LGqDQor5by15b2l6I+BDQor5by15oCd5YSADQor5by15oGG55GLDQor5by15pS/5YKRDQor5by15pit5YWDDQor5by15p+U5piODQor5by15rSy5pyfDQor5by154K65qOfDQor5by1546y5amJDQor5by155WM6IGwDQor5by155uI6bS7DQor5by156eL5am3DQor5by157SA5ZCbDQor5by1576O546yDQor5by1576O576aDQor5by1576O6ZuvDQor5by1576O6ZyeDQor5by16Ie06JKoDQor5by16IyC6YaSDQor5by16Iux55CmDQor5by16YOB6IqsDQor5by16YOB5am3DQor5by16aaZ55K9DQor5by15YCW56KnDQor5by15L+u6LGqDQor5by15YCr55GLDQor5by15Ymb57atDQor5by15Y6f6KyADQor5by15ZOy5YGlDQor5by15ZOy55GeDQor5by15ZOy5qaVDQor5by15ZOy57atDQor5by15ZOy6YqYDQor5by15aif6I+vDQor5by15a625piODQor5by15a625oyvDQor5by15a625remDQor5by15a625qOfDQor5by15a626I+xDQor5by15a625rqQDQor5by15a6255GcDQor5by15a62576kDQor5by15a625qaVDQor5by15a625qauDQor5by15a6256KpDQor5by15a6257a6DQor5by15a626LGqDQor5by15a626LGqDQor5by15a626LGqDQor5by15a626LWrDQor5by15a626YqYDQor5by15a626YqYDQor5by15a625r2kDQor5by15a625oe3DQor5by15a6255GLDQor5by15a656I+xDQor5by15a645a6XDQor5by15bO75p2wDQor5by15bO75ZiJDQor5by15bO75Zq0DQor5by15bOw5qauDQor5by15bqt5rqQDQor5by15bqt55GLDQor5by15oGp55OKDQor5by15oyv5rqQDQor5by15oyv6Y6wDQor5by15pmJ6YCaDQor5by15pmJ6LGqDQor5by15pmP6KqgDQor5by15pmP6b2hDQor5by15pu46IiqDQor5by15pu457atDQor5by15pu46LGqDQor5by15pu46YqYDQor5by15pu46aaoDQor5by15qC55rqQDQor5by15qGC6I+vDQor5by15qGC6bOzDQor5by15rOw6Z2SDQor5by15rWp5aCCDQor5by154+u5oChDQor5by154+u55CqDQor5by155uK5beeDQor5by155uK6I+vDQor5by155uK57atDQor5by156WQ5oWIDQor5by156WQ57atDQor5by156em6Iq4DQor5by157Sg56eLDQor5by157Sg6I+vDQor5by157SU55uKDQor5by157SU55GLDQor5by16IC/DQor5by16IC/57atDQor5by16IC/5bSaDQor5by16KiT576pDQor5by16LuS6LGqDQor5by16auY55GeDQor5by15YGJ5YCrDQor5by15YGJ6YieDQor5by15YGl6ImvDQor5by15ZyL5b+XDQor5by15ZyL5rWpDQor5by15ZyL5aqbDQor5by15ZyL55K9DQor5by15aCC5YehDQor5by15amJ5ZCbDQor5by15amJ5pqEDQor5by15bSH5YGJDQor5by15bq36JmUDQor5by15oOf5o23DQor5by15ZWf5piODQor5by15pWP6IqdDQor5by15qKF5ZCbDQor5by15rez5oOgDQor5by15riF5paHDQor5by15riF5YexDQor5by15reR5ZCbDQor5by15reR6IqzDQor5by15reR6IqsDQor5by15reR54+NDQor5by15reR6LKeDQor5by15reR5aifDQor5by15reR6Iy5DQor5by15reR5am3DQor5by15reR55CmDQor5by15reR6ZuFDQor5by15reR5au7DQor5by15reR6Ky5DQor5by15re15a+MDQor5by15ra16LuSDQor5by155ub57axDQor5by157S55pqJDQor5by16I6J6Iy5DQor5by16YCi5pmCDQor5by16Zuq6ZuyDQor5by15Yex5a6HDQor5by15Yex5rezDQor5by15Yex5bWQDQor5by15Yex55CzDQor5by15Yex6LaFDQor5by15Yex57atDQor5by15Yud5LuBDQor5by15Yud5YKRDQor5by15Yud6ZuEDQor5by15Y2a5ZKMDQor5by15Y2a5YubDQor5by15Y2a6YieDQor5by15Za7DQor5by15Zas57+UDQor5by15aO56IO9DQor5by15am36Z+7DQor5by15a+M5rezDQor5by15a+M56aODQor5by15oOg5aaCDQor5by15oOg54+KDQor5by15oOg5aifDQor5by15oOg5am3DQor5by15oOg55CqDQor5by15oOg6I+BDQor5by15oOg6ZuvDQor5by15oOg6JitDQor5by15pWm576pDQor5by15pm05pm0DQor5by15pmv5YCrDQor5by15pmv5ri+DQor5by15pmv6ZaODQor5by15pm65a6JDQor5by15pm65YmbDQor5by15pm65riFDQor5by15pm65YKRDQor5by15pm65bS0DQor5by15pm657+UDQor5by15pm66YieDQor5by15pm66LGqDQor5by15pm66KyZDQor5by15pyd5YexDQor5by15pyd6b6NDQor5by15qOL6ZuvDQor5by15rmY5oChDQor5by155Cq6I+vDQor5by155Cm57S5DQor5by155m757+UDQor5by155qT5bS0DQor5by156iL6aCGDQor5by157Sr6Yi0DQor5by157+U5pm6DQor5by16IiS55CmDQor5by16Iic6I+vDQor5by16I+B6Iy5DQor5by16I+v5YCpDQor5by16Kmg6Iy1DQor5by16Ki86I2DDQor5by16LK055CzDQor5by16YC45YehDQor5by16YC4576kDQor5by16YeP54S2DQor5by16Yie5a+MDQor5by16Yie6LK9DQor5by16ZaU5a+MDQor5by16ZuB5am3DQor5by16ZuF5aeNDQor5by16ZuF6IqsDQor5by16ZuF546yDQor5by16ZuF5Y2/DQor5by16ZuF5pWPDQor5by16ZuF5am3DQor5by16ZuF5am3DQor5by16ZuF5am3DQor5by16ZuF5am3DQor5by16ZuF5bWQDQor5by16ZuF5oOgDQor5by16ZuF5oOgDQor5by16ZuF55CqDQor5by16ZuF55C0DQor5by16ZuF6JCNDQor5by16ZuF6ZuvDQor5by16ZuF6ZuvDQor5by16ZuF6Yi0DQor5by16ZuF55GpDQor5by16Zuv6Iy1DQor5by16Zuv5YSADQor5by16aCG5ZCJDQor5by16aCG56aPDQor5by15Zej5paHDQor5by15oSP6KqgDQor5by15oWI54GRDQor5by15oS35pmPDQor5by15paw5a6PDQor5by15q+TDQor5by15q+T6IqsDQor5by15q+T5YCrDQor5by15q+T5r2UDQor5by15rqQ6ZGrDQor5by155Ga54+KDQor5by155Ge5ZCbDQor5by155Ge5p2wDQor5by155Ge6Iq4DQor5by155Ge5aifDQor5by155Ge5pmvDQor5by155Ge5qi6DQor5by155Ge5rC2DQor5by155Gc5ZCbDQor5by155Gc5aifDQor5by156W65piHDQor5by1576p5b+gDQor5by1576k5pyLDQor5by16IGW6I6JDQor5by16KOV5piMDQor5by16KOV6ZuvDQor5by16Kmp5oChDQor5by16Kmp6ZuvDQor5by16LOH5piKDQor5by16YGT5pm6DQor5by16Z2W5oChDQor5by16byO6YmJDQor5by15ZiJ5YWDDQor5by15ZiJ5q2jDQor5by15ZiJ5a6PDQor5by15ZiJ5qyjDQor5by15ZiJ6IqsDQor5by15ZiJ546yDQor5by15ZiJ546yDQor5by15ZiJ5ZOyDQor5by15ZiJ5pmJDQor5by15ZiJ55yfDQor5by15ZiJ6KiTDQor5by15ZiJ5oOgDQor5by15ZiJ6ZuEDQor5by15ZiJ57atDQor5by15ZiJ6IGyDQor5by15ZiJ54+jDQor5by15a+n6aaoDQor5by15qaV5a65DQor5by15qau55uIDQor5by15qau5oayDQor5by154aS54+KDQor5by1552/56mODQor5by156Kn5aifDQor5by156Kp5YWDDQor5by156Kp5qGTDQor5by156aP5pS/DQor5by157ax6YKRDQor5by157a16IqzDQor5by157at5YWoDQor5by157at54+KDQor5by157at5ZOyDQor5by157at55yfDQor5by157at5rezDQor5by157at5r2UDQor5by157+g5paHDQor5by157+g55CqDQor5by16IKH5qiRDQor5by16JOT6JCxDQor5by16LGq5paHDQor5by16YqA6IqzDQor5by16YqY5a6XDQor5by16YqY5bOwDQor5by16YqY57+wDQor5by16bOz5bmzDQor5by16bOz5YSADQor5by15buj5rWpDQor5by15b635qaGDQor5by15oW25oChDQor5by15oW26LGQDQor5by15oWn5oChDQor5by15oWn5aifDQor5by15oWn6JCNDQor5by15oWn5660DQor5by155Gp54+KDQor5by16KGb5biGDQor5by16YGp5oGGDQor5by15a245YCrDQor5by15oa25ZCbDQor5by15puJ5piADQor5by15puJ5am3DQor5by15puJ6I+BDQor5by15puJ6bOzDQor5by154eV5aauDQor5by157+w5paHDQor5by16YaS5LiWDQor5by16Yym5am3DQor5by16Z2c5aaCDQor5by16Z2c5oChDQor5by16Z2c6Iy5DQor5by16b6N5LuBDQor5by155Kw5LyKDQor5by16KyZ6YGUDQor5by16bS75aaCDQor5by16bS75pm6DQor5by15puc6YqTDQor5by157Ch5q2j5YGJDQor5by157Ch5qyj6I+vDQor5by157Ch5ZiJ5Lq6DQor5by16JeN5bC5DQor5by16LGQ55K4DQor5by15oe35oGpDQor5by155OK5LmLDQor5by155OK5paHDQor5by155OK5paHDQor5by155OK5pa5DQor5by155OK5oOgDQor5by16Jed6aaoDQor5by16bqX5ZCbDQor5by16bqX5reRDQor5by15a+25LqRDQor5by154275aOsDQor5by157m95paHDQor5by157m85piMDQor5by16ICA5LqRDQor5by16ICA5YWBDQor5by16ICA5q2jDQor5by16ICA6IGyDQor5by16YeL5paHDQor5by16aao5paHDQor5by16aao5paHDQor5by16aiw5YWDDQor5by15YS36JawDQor5by15beN6ICADQor5by16K296aaoDQor5by16ba06ICADQor5by16Zy95pyIDQor5by16IqDDQor5by15YCbDQor5by16Iyc6Iy5DQor5by155CH6ZaUDQor5by15aqc5aqcDQor5by155Cs5a6cDQor5by155Cs6I+BDQor5by16I+A5YCpDQor5by154WS5a+nDQor5by155GL6Iq4DQor5by155GL5YCrDQor5by155GL5am3DQor5by1562x5ZCbDQor5by1562x6ZuvDQor5by16YSQ5oabDQor5by16Yi65b2pDQor5by156aV5YCrDQor5by155KB5paHDQor5by16ZCZ5bC5DQor5by15oGS5LitDQor5oia5LmF5pm6DQor5pWW5rC46b6NDQor5pu55aOr5pWPDQor5pu55paH5b2lDQor5pu55LiW5rWpDQor5pu556uL6KGMDQor5pu56IG/55S3DQor5pu55b+X5by3DQor5pu55L2z5a6JDQor5pu55piM55S3DQor5pu55qyj6ImvDQor5pu55pil5paHDQor5pu55ZOy5ZiJDQor5pu55bO75piMDQor5pu554+u5oChDQor5pu55YGJ6Iy5DQor5pu55reR5aqbDQor5pu55Yud6LGQDQor5pu55pm65qyjDQor5pu555qT6ZuyDQor5pu56ZuF5oOgDQor5pu55paw5b2lDQor5pu55ZiJ5paHDQor5pu557at5YCrDQor5pu55q+F5YuHDQor5pu555K956mgDQor5pu56I6o6LOiDQor5qKB5LmD5YGlDQor5qKB5LuB6I+vDQor5qKB5paH5a6JDQor5qKB5paH6LOTDQor5qKB5LiW6LGqDQor5qKB5q2j5b+gDQor5qKB546J546yDQor5qKB5Lu75LitDQor5qKB5rGd6IicDQor5qKB5ZCb6ZyZDQor5qKB5b+X5b2sDQor5qKB5b+X6YqYDQor5qKB6IKy6I+vDQor5qKB5L2z6YCyDQor5qKB5oCh6IqsDQor5qKB5p2x5p6XDQor5qKB5L+h5YWDDQor5qKB5L+Q55CmDQor5qKB5b2l6LGqDQor5qKB54Kz6ZGEDQor5qKB6YOB6JOBDQor5qKB5a625piODQor5qKB5a626LGqDQor5qKB5bO76YqYDQor5qKB5pmJ6a2BDQor5qKB54+u54+uDQor5qKB56em5a6cDQor5qKB5YGl5b+gDQor5qKB5ZWf546EDQor5qKB5reR5aifDQor5qKB6I6J5aifDQor5qKB5Yud6YqYDQor5qKB5oOg5am3DQor5qKB5pmv5aCvDQor5qKB5pyd5YexDQor5qKB6IiS5oChDQor5qKB6YC46IqsDQor5qKB6ZuF6IiSDQor5qKB5oS36Iq4DQor5qKB55Ge6LuSDQor5qKB6IGW5piMDQor5qKB5ZiJ54+NDQor5qKB56Kn5oWnDQor5qKB57+g54+KDQor5qKB5oWn6I+vDQor5qKB5puJ57atDQor5qKB6Z2c5a6cDQor5qKB55OK5Li5DQor5qKB57m85LuBDQor5qKB5oe/5b63DQor5qKB55GL55yfDQor5qKF5YWJ5a6HDQor5qKF6ZuF5am3DQor55Wi5b+X6I+vDQor55ub5b+DDQor55ub56WlDQor56ym6IKH5LitDQor6I6r5pif5a6HDQor6I6K5LiA5YehDQor6I6K5LqO55GpDQor6I6K5aOr5ZyLDQor6I6K5a2Q5YexDQor6I6K5LuB5a6PDQor6I6K5b+D6JCNDQor6I6K5paH5pitDQor6I6K5paH6LGqDQor6I6K5LiW5p2wDQor6I6K5byY5Lu7DQor6I6K5q2j5o+aDQor6I6K5rC456aPDQor6I6K546J6bqfDQor6I6K5aaC6LuSDQor6I6K5YWL5YGJDQor6I6K5b+X5piODQor6I6K5b+X5qauDQor6I6K56eA6Yi0DQor6I6K6IKy5qaVDQor6I6K5L6d5am3DQor6I6K5L2z5qauDQor6I6K5L2p6ZuvDQor6I6K5Z2k5ZOyDQor6I6K5a2f546yDQor6I6K5a2f57STDQor6I6K5a6X5YuzDQor6I6K5a6Y55KHDQor6I6K5a6c55KHDQor6I6K5b+g55uKDQor6I6K5oCh6LuSDQor6I6K5piM5puEDQor6I6K5piO6YGUDQor6I6K5p2x5piODQor6I6K5qyj5ZOyDQor6I6K546l5aybDQor6I6K6YeR6Z2cDQor6I6K5L+K5YKRDQor6I6K5bu6DQor6I6K5pS/5oayDQor6I6K56eL5a2QDQor6I6K576O6aaoDQor6I6K6Iux55C0DQor6I6K5YCJ5p2wDQor6I6K5a625piHDQor6I6K5a626YqYDQor6I6K5bO75qaVDQor6I6K5qGT5ZiJDQor6I6K54+u6Yi0DQor6I6K57SU57SUDQor6I6K5YGJ5LuBDQor6I6K5ZyL6L6wDQor6I6K5Z+56ZGrDQor6I6K5ZWf5paHDQor6I6K5qKo6Z2SDQor6I6K5riF5a+MDQor6I6K5reR6IqsDQor6I6K5reR5am3DQor6I6K5reR6ZaUDQor6I6K5reR54+6DQor6I6K6I6J6I6JDQor6I6K5Yex6Iy1DQor6I6K5Yud5YipDQor6I6K5Y2a5riFDQor6I6K5aCv5Lu7DQor6I6K5a+M5YKRDQor6I6K5b6p6LK0DQor6I6K5oOg6Iy5DQor6I6K5oOg6JCNDQor6I6K5oOg6JOJDQor6I6K5pm06ZuyDQor6I6K5pmv55CHDQor6I6K5pm65ra1DQor6I6K5pm66YieDQor6I6K5pyd6YieDQor6I6K55m755m8DQor6I6K5ZaE6IqzDQor6I6K6LOA5ZasDQor6I6K6ZaU5petDQor6I6K6ZuF5b+DDQor6I6K6ZuF546yDQor6I6K6ZuF5am3DQor6I6K6ZuF5oOgDQor6I6K6ZuF6JCNDQor6I6K6ZuF6ZuyDQor6I6K6Zuv6ZuvDQor6I6K5bWp57evDQor6I6K55Ge5Y2XDQor6I6K6KOV5paHDQor6I6K5ZiJ546yDQor6I6K5ryi5riFDQor6I6K57at6YqYDQor6I6K6YqY5pmvDQor6I6K5oWn5b+DDQor6I6K55Gp5ae/DQor6I6K5qi55a6PDQor6I6K6JWZ6JCNDQor6I6K6Yym5bmzDQor6I6K6Z2c5oChDQor6I6K5r+x57a6DQor6I6K5puc5petDQor6I6K6J+s5aaDDQor6I6K6Y6U55KeDQor6I6K6aal57axDQor6I6K6bqX6LazDQor6I6K5oe/5by3DQor6I6K5o2D5aiJDQor6I6K5paM5pm6DQor6I6K562x5am3DQor6Kix5LiA5LmLDQor6Kix5LmD56mNDQor6Kix5Y+I5LuBDQor6Kix5aSn5a65DQor6Kix5LuB5YWoDQor6Kix5YWD6YqYDQor6Kix5aOs6ICADQor6Kix5b+D55uIDQor6Kix5paH5b+gDQor6Kix5paH5Y6aDQor6Kix5paH5qGQDQor6Kix5paH6I+vDQor6Kix5paH6LGqDQor6Kix5paH6JeNDQor6Kix5pel5pilDQor6Kix5LiW5rCRDQor6Kix5LiW5piMDQor6Kix5LiW5oGsDQor6Kix5LiW6LOiDQor6Kix5Yqg5a6PDQor6Kix5bmzDQor6Kix5byY5q+FDQor6Kix5q2j5b+gDQor6Kix5q2j6Kq8DQor6Kix5rC45piODQor6Kix5rC45q+FDQor6Kix546J6IqzDQor6Kix546J5aifDQor6Kix546J5ayLDQor6Kix55SyDQor6Kix56uL576kDQor6Kix5Luy6LOiDQor6Kix5ZCN5LiWDQor6Kix5a6H5p2wDQor6Kix5oiO5bKRDQor6Kix5rGO56mODQor6Kix6Iez5YWoDQor6Kix5L2R6YqTDQor6Kix5YWL5LuyDQor6Kix5ZCb6LGqDQor6Kix5aaN5biMDQor6Kix5a6P5YGJDQor6Kix5a6P5b63DQor6Kix5b+X5ZCMDQor6Kix5b+X5a6PDQor6Kix5b+X5bSHDQor6Kix5b+X6ZuEDQor6Kix5b+X57atDQor6Kix5b+X6YGgDQor6Kix5b+X6bWsDQor6Kix5rG25beeDQor6Kix56eA54+KDQor6Kix56eA6JOJDQor6Kix6IKy6I+BDQor6Kix6IKy6KqgDQor6Kix6ImvDQor6Kix6LKd5aaCDQor6Kix5L2z5pS/DQor6Kix5L2z6ZuvDQor6Kix5L2p6Iy5DQor6Kix5Y2T5aG1DQor6Kix5a2f57+UDQor6Kix5a6X5qauDQor6Kix5bm46ZuvDQor6Kix5oCh54+uDQor6Kix5om/6KiTDQor6Kix5piO5YKRDQor6Kix5piO5b63DQor6Kix5p2+562JDQor6Kix5rOT55CuDQor6Kix6Iqz5oWIDQor6Kix6Iqz6YqYDQor6Kix6IqZ55GyDQor6Kix6YeR55m8DQor6Kix5L+h5qauDQor6Kix5L+K6ZuEDQor6Kix5ae/5oChDQor6Kix5b2l54S2DQor6Kix5oGs57a+DQor6Kix5pit5YWDDQor6Kix5p+P5qi6DQor6Kix54+K55GcDQor6Kix56eL546yDQor6Kix576O6IqzDQor6Kix576O6I+vDQor6Kix6Ie057atDQor6Kix6Iux5YKRDQor6Kix6YOB5pWPDQor6Kix5L+45piMDQor6Kix5L+u6YqYDQor6Kix5Y6f6YqYDQor6Kix5ZOy55GeDQor6Kix5ZOy5b2wDQor6Kix5ZOy6LGqDQor6Kix5ZOy55GLDQor6Kix5a625a6jDQor6Kix5a625YKRDQor6Kix5a625pqYDQor6Kix5a625b2wDQor6Kix5a625qauDQor6Kix5a626LGqDQor6Kix5a626LGqDQor6Kix5a625oW2DQor6Kix5a646LGqDQor6Kix5bO75ZOyDQor6Kix5bO755GLDQor6Kix5bOw6YqYDQor6Kix5bqt55GLDQor6Kix5oyv5rmWDQor6Kix5pmC5ZiJDQor6Kix5pmJ54aSDQor6Kix5pu4DQor6Kix5pu45qauDQor6Kix5pu46YqTDQor6Kix5qC55a6cDQor6Kix5qCT6LGqDQor6Kix5rWp55GLDQor6Kix54+u5ZiJDQor6Kix55uK6LuSDQor6Kix56WQ6JCKDQor6Kix57Sg6I+BDQor6Kix57SU55GcDQor6Kix6IC/6LGqDQor6Kix6LKh5b6XDQor6Kix5YGJ5b+gDQor6Kix5ZyL5a6JDQor6Kix5ZyL6LOiDQor6Kix5amJ6Iy5DQor6Kix5b2p55yfDQor6Kix5ZWf5o+aDQor6Kix5qKF6I+BDQor6Kix5rez55CHDQor6Kix5riF5qWTDQor6Kix5reR6IqsDQor6Kix5reR6LKeDQor6Kix5reR6Iy5DQor6Kix5reR5oOgDQor6Kix5reR6I+vDQor6Kix5reR6JOuDQor6Kix55ub5piMDQor6Kix6I6J6I6JDQor6Kix5Yex5oOHDQor6Kix5Yex5ZiJDQor6Kix5Yud5YubDQor6Kix5Y2a54K6DQor6Kix5Y2a5qOuDQor6Kix5aCh5aaCDQor6Kix5a+M5b+gDQor6Kix5a+M6ZuEDQor6Kix5oOg5aaCDQor6Kix5oOg54+NDQor6Kix5oOg6Iy5DQor6Kix5oOg55CzDQor6Kix5oOg6ZuvDQor6Kix5oOg54CFDQor6Kix5pm05paQDQor6Kix5pmv6YieDQor6Kix5pm6546yDQor6Kix5pm65oOfDQor6Kix5pm65YexDQor6Kix5pm657+UDQor6Kix5pm66ZuEDQor6Kix5pm65b63DQor6Kix5pyd5a+MDQor6Kix5qy96LGqDQor6Kix55m75re1DQor6Kix56uj6IO9DQor6Kix5ZaE5YexDQor6Kix6IiS6IycDQor6Kix6I+v5YCaDQor6Kix6Kmg5YudDQor6Kix6LK05b2wDQor6Kix6YC456ugDQor6Kix6YCy6IiIDQor6Kix6ZaU6ZuEDQor6Kix6ZuF5qyjDQor6Kix6ZuF546yDQor6Kix6ZuF5reRDQor6Kix6ZuF5am3DQor6Kix6ZuF5oOgDQor6Kix6ZuF5oOgDQor6Kix6ZuF6JCNDQor6Kix6ZuF6ZuBDQor6Kix6ZuF6ZuvDQor6Kix6ZuF5oWnDQor6Kix6Zuv55CzDQor6Kix6aCG5riFDQor6Kix5oSP6Iu5DQor6Kix5oS357+UDQor6Kix5qWo56WlDQor6Kix5q+T5aifDQor6Kix5rqQ5rOJDQor6Kix55GeDQor6Kix55Ge6Iq4DQor6Kix55Ge5oGpDQor6Kix55Ge5YSADQor6Kix55Gc6IqzDQor6Kix56if5pu8DQor6Kix6IGW5p2wDQor6Kix6KOV5YSEDQor6Kix6Kmp562gDQor6Kix6Yi06IuxDQor6Kix5ZiJ5YWDDQor6Kix5ZiJ6IqzDQor6Kix5ZiJ5YCpDQor6Kix5ZiJ54+uDQor6Kix5ZiJ5oOgDQor6Kix5ZiJ56mODQor6Kix5qaVDQor6Kix5qau6ZqGDQor6Kix55Gk6aaoDQor6Kix56Kn54+gDQor6Kix56Kp5L+uDQor6Kix566U5ra1DQor6Kix57at6IKyDQor6Kix57at55yfDQor6Kix57+g56uvDQor6Kix6KqYDQor6Kix6YqY5LuBDQor6Kix6YqY5ZOyDQor6Kix6YqY6LKhDQor6Kix6Zaj5paHDQor6Kix6bOz6ZuFDQor6Kix5oW25paHDQor6Kix5oWn5ZCbDQor6Kix5oWn6LKeDQor6Kix5oWV6LKeDQor6Kix6YGp5qWTDQor6Kix5oa26IqzDQor6Kix5puJ6I+BDQor6Kix54eV6JCNDQor6Kix6Yym5paHDQor6Kix6Z2c5a6cDQor6Kix6Z2c6ZuqDQor6Kix5ba45LuBDQor6Kix6bS75paHDQor6Kix6Jaw5paHDQor6Kix5oe35paHDQor6Kix55OK5paHDQor6Kix55OK5pyIDQor6Kix6Zq056W6DQor6Kix6bqX6I+vDQor6Kix57m95aaCDQor6Kix6ICA5paHDQor6Kix6aao5LuBDQor6Kix6aiw5YWDDQor6Kix6LqN6K2wDQor6Kix5pi26I+vDQor6Kix55CH5am3DQor6Kix55Cu6YKmDQor6Kix5auI546JDQor6Kix562x6JCNDQor6Kix6Yi66Iy5DQor6Kix6YuR6bS7DQor6Kix5oGS6YGUDQor6YCj5LuB6IGWDQor6YCj5LiW5ZKMDQor6YCj5L2R5LuBDQor6YCj56eA5LuBDQor6YCj5L2p5rOgDQor6YCj6Iq45YewDQor6YCj5bu65pm6DQor6YCj56eL5pe6DQor6YCj5a6555CqDQor6YCj5qGC5a6PDQor6YCj5YGJ5YKRDQor6YCj5amJ5YSADQor6YCj5ZWf5pm6DQor6YCj5Yud56WlDQor6YCj6ZuF6LKeDQor6YCj5ZiJ57SUDQor6YCj5oW26LGQDQor6YCj6Z2c6Iy5DQor6YOt5LiA5qi6DQor6YOt5LmD5qauDQor6YOt5Lq66LGqDQor6YOt5Yqb55GLDQor6YOt5LqO56aODQor6YOt5aOr6I+vDQor6YOt5aOr6bOzDQor6YOt5a2Q56uLDQor6YOt5a2Q54aSDQor6YOt5a2Q56aVDQor6YOt5LuB5ZOyDQor6YOt5aSp56uLDQor6YOt5paH5ZCMDQor6YOt5paH5b2lDQor6YOt5paH5oOgDQor6YOt5paH6YqTDQor6YOt5rC05bGxDQor6YOt5LiW6JitDQor6YOt5Y2J6ZuvDQor6YOt5q2j5a6XDQor6YOt5rC45piODQor6YOt546J54+NDQor6YOt56uLDQor6YOt56uL6YGUDQor6YOt5Luy5re1DQor6YOt5YWG6ZuvDQor6YOt5aSZ5ZCfDQor6YOt5bm055yfDQor6YOt5pyJ6Y6uDQor6YOt6Iez5ZOyDQor6YOt5ZCb5oChDQor6YOt5a6P5paHDQor6YOt5a6P6ae/DQor6YOt5b+X5a6PDQor6YOt5b+X56WlDQor6YOt5p2PDQor6YOt5rKC5p2RDQor6YOt6IKy5YWIDQor6YOt6IKy5piMDQor6YOt6IKy57atDQor6YOt6YKm5b2lDQor6YOt5L2z5qyjDQor6YOt5L2z6ZuvDQor6YOt5L2z6ZGrDQor6YOt5L2p55CmDQor6YOt5aWH5paHDQor6YOt5a2f6JOJDQor6YOt5a6X5oW2DQor6YOt5bCa5YuzDQor6YOt5b+g5ZKMDQor6YOt5oCh5Ly2DQor6YOt5oCh5ZCbDQor6YOt5oCh5ZCbDQor6YOt5oCh56eADQor6YOt5oCh6Yi0DQor6YOt5om/5YSADQor6YOt5piO5a6XDQor6YOt5piO5bOwDQor6YOt5piO6YGTDQor6YOt5piO55GLDQor6YOt5p2+56mODQor6YOt5q2m5a6JDQor6YOt546f546fDQor6YOt546l5aamDQor6YOt6Iqz5ZCbDQor6YOt6Iqz6ZuvDQor6YOt6Iqd552/DQor6YOt6ZW35qi5DQor6YOt5L+h5a6PDQor6YOt5L+d5ZCbDQor6YOt5L+K5a6PDQor6YOt5L+K55S3DQor6YOt5L+K5L+hDQor6YOt5L+K5YSEDQor6YOt5L+Q5LqoDQor6YOt5Yag5bu3DQor6YOt5ZOB56eADQor6YOt5ae/5Ly2DQor6YOt5ae/5qyjDQor6YOt5aiB5b+XDQor6YOt5bu65a6PDQor6YOt5bu65bu3DQor6YOt5bu66ImvDQor6YOt5bu65rqQDQor6YOt5b2l5ZCbDQor6YOt5b2l55SrDQor6YOt5oCd5a6cDQor6YOt5pS/5b+gDQor6YOt5pS/55KLDQor6YOt5pit5a6JDQor6YOt5pit6aGvDQor6YOt5pix5pe7DQor6YOt5p+P56eADQor6YOt54Kz5oiQDQor6YOt546y5oWIDQor6YOt55uI5ZCbDQor6YOt55yB6JCxDQor6YOt576O5ZCbDQor6YOt576O5aeNDQor6YOt576O5ZaEDQor6YOt576O6JitDQor6YOt6IyC6JmUDQor6YOt6LKe5a2NDQor6YOt5YCN5a6JDQor6YOt5YCW6YqTDQor6YOt5YeM5b+XDQor6YOt5ZOy5oiQDQor6YOt5ZOy55GLDQor6YOt5a625a6PDQor6YOt5a6256WlDQor6YOt5a626LGqDQor6YOt5a625oWnDQor6YOt5a645piADQor6YOt5bOw5piHDQor6YOt5bqt6JOJDQor6YOt5oyv5ryiDQor6YOt5pmP5L2RDQor6YOt5pu46LGqDQor6YOt5qGC6bOzDQor6YOt5rWp5b+XDQor6YOt55uK5YWDDQor6YOt56WW5L2RDQor6YOt57Sg57a+DQor6YOt6IC/5Lu7DQor6YOt6LuSDQor6YOt5ZyL5q2jDQor6YOt5amJ546yDQor6YOt5ZWf5rKQDQor6YOt5re75pawDQor6YOt5reR6IqvDQor6YOt5reR5pWPDQor6YOt5reR5oWnDQor6YOt6YCi56WlDQor6YOt5YudDQor6YOt5Zas5bm0DQor6YOt5oOg6Z2SDQor6YOt5oOg5pe7DQor6YOt5pm65piODQor6YOt5pm655GLDQor6YOt55Cq5aqnDQor6YOt6Kmg54+uDQor6YOt6YCy5piMDQor6YOt6ZuF5rGdDQor6YOt6ZuF5am3DQor6YOt6ZuF6I+xDQor6YOt6ZuF6JaHDQor6YOt5oWI55uIDQor6YOt54Wc5bSHDQor6YOt55Ge5qy9DQor6YOt576p5qOgDQor6YOt6Kmp5bGPDQor6YOt5ZiJ5YGJDQor6YOt5aSi56u5DQor6YOt5qau5oW2DQor6YOt56Kn5aifDQor6YOt57a455uKDQor6YOt6IKH5by3DQor6YOt6YqY5YKRDQor6YOt5oW255SfDQor6YOt5oWn54+NDQor6YOt5oWn6JaEDQor6YOt5YSS6KyZDQor6YOt5puJ5Y2JDQor6YOt5puJ6ZuvDQor6YOt54eV546yDQor6YOt6JWZ6JCNDQor6YOt6YyV6ZyWDQor6YOt6Z2c576ODQor6YOt5r+f57atDQor6YOt6ae/DQor6YOt5puc5b2wDQor6YOt6Y6u5YWDDQor6YOt55OK5aqbDQor6YOt6bqX56eLDQor6YOt54275paHDQor6YOt6JiK5b+xDQor6YOt6aao6Y6CDQor6YOt57Gg5oW2DQor6YOt5pe755GcDQor6YOt5pmf5a6HDQor6YOt5pqQDQor6YOt6Yi66IqzDQor6YOt5oGS5aaZDQor6Zmz5LiA5oiQDQor6Zmz5LiA6I+vDQor6Zmz5LiA55GLDQor6Zmz5LmD6YenDQor6Zmz5LmD5qauDQor6Zmz5Lq655SEDQor6Zmz5Yqb5YehDQor6Zmz5Y+I5piVDQor6Zmz5Y+I6IGWDQor6Zmz5LiK5YCrDQor6Zmz5Y2D6YymDQor6Zmz5aOr5YKRDQor6Zmz5aSn5ZCMDQor6Zmz5a2Q5LuBDQor6Zmz5a2Q5b2lDQor6Zmz5a2Q6YieDQor6Zmz5bCP6JCNDQor6Zmz5bex5Y2HDQor6Zmz5Lit6YqYDQor6Zmz5LmL6KutDQor6Zmz5LuB5a6XDQor6Zmz5LuB5YKRDQor6Zmz5LuK5YehDQor6Zmz5YWD5a2dDQor6Zmz5YWD6Z2WDQor6Zmz5YWuDQor6Zmz5aSp5LuBDQor6Zmz5aSp6LOeDQor6Zmz5b+D5oChDQor6Zmz5b+D5oChDQor6Zmz5b+D5r2UDQor6Zmz5paH5bedDQor6Zmz5paH5oiQDQor6Zmz5paH5b+gDQor6Zmz5paH5LquDQor6Zmz5paH5pitDQor6Zmz5paH6YOODQor6Zmz5paH5raTDQor6Zmz5paH5b2sDQor6Zmz5paH56ugDQor6Zmz5paH5qy9DQor6Zmz5paH6I+vDQor6Zmz5paH6JOJDQor6Zmz5paH5b63DQor6Zmz5paH5a24DQor6Zmz5paH6bS7DQor6Zmz5paH6Yi6DQor6Zmz5pyI5aauDQor6Zmz5rC05rOJDQor6Zmz5LiW5a6HDQor6Zmz5LiW5a6XDQor6Zmz5LiW5piODQor6Zmz5LiW5p2wDQor6Zmz5LiW5pS/DQor6Zmz5LiW5bqtDQor6Zmz5LiW5YGJDQor6Zmz5LiW56ugDQor6Zmz5LiW5qO7DQor6Zmz5LiW55ufDQor6Zmz5LiW6LGqDQor6Zmz5LiW5r6kDQor6Zmz5LiW6bS7DQor6Zmz5Li75qyjDQor6Zmz5Lul6Z2cDQor6Zmz5LuV6IqzDQor6Zmz5LuV5rqQDQor6Zmz5LuV5Y+hDQor6Zmz5Yqg5piODQor6Zmz5Yqf6ZyWDQor6Zmz5Y+v5qyjDQor6Zmz5Y+z5rCRDQor6Zmz5Y+z6KutDQor6Zmz5beo6bagDQor6Zmz5ben54+KDQor6Zmz5ben5oOgDQor6Zmz5ben6aCkDQor6Zmz5bm85qyjDQor6Zmz5byY5paHDQor6Zmz5byY5qyjDQor6Zmz5byY6KiTDQor6Zmz5byY5q+FDQor6Zmz5byY6Y6nDQor6Zmz5pyt5Z+5DQor6Zmz5q2j5a6PDQor6Zmz5q2j5piMDQor6Zmz5q2j6IqzDQor6Zmz5q2j5bOwDQor6Zmz5q2j5YKRDQor6Zmz5q2j6ZuEDQor6Zmz5q2j6LGqDQor6Zmz5q2j6IiIDQor6Zmz5rCRDQor6Zmz5rC4DQor6Zmz5rC45a6XDQor6Zmz5rC45piMDQor6Zmz5rC46Z2SDQor6Zmz5rC45YeMDQor6Zmz5rC45bq3DQor6Zmz5rC45a+MDQor6Zmz5rC46KqMDQor6Zmz5rC456mGDQor6Zmz5rC454+pDQor6Zmz546J5paHDQor6Zmz546J5aWHDQor6Zmz546J6IqzDQor6Zmz546J6IqsDQor6Zmz546J54+KDQor6Zmz546J54+NDQor6Zmz546J5aifDQor6Zmz546J54+gDQor6Zmz546J5qKFDQor6Zmz546J55CzDQor6Zmz546J6I+BDQor6Zmz546J6ZuyDQor6Zmz546J5ayMDQor6Zmz546J55KYDQor6Zmz546J6aaoDQor6Zmz55Sf5p2+DQor6Zmz55+z6IKyDQor6Zmz56uL5YehDQor6Zmz56uL6KiADQor6Zmz56uL5qyjDQor6Zmz56uL5YCrDQor6Zmz56uL5YGJDQor6Zmz56uL57+ODQor6Zmz56uL57atDQor6Zmz56uL57+wDQor6Zmz5Lqm5YehDQor6Zmz5LyK5YCrDQor6Zmz5Luy5b+XDQor6Zmz5Luy6LOiDQor6Zmz5YWJ55SrDQor6Zmz5YWJ6I+vDQor6Zmz5YWG5aWVDQor6Zmz5ZCJ5YipDQor6Zmz5ZCR5qauDQor6Zmz5Zyo5piODQor6Zmz5aaC6IqsDQor6Zmz5aaC6JiLDQor6Zmz5a6H5p2wDQor6Zmz5a6H6LaFDQor6Zmz5a6J5L2RDQor6Zmz5a6J5qi4DQor6Zmz5pesDQor6Zmz5pyJ5b+XDQor6Zmz5rGf56uLDQor6Zmz55m+5YKRDQor6Zmz576954+KDQor6Zmz6Iez5YexDQor6Zmz5Lqo5oiQDQor6Zmz5L2R5Lu7DQor6Zmz5L2R5bqtDQor6Zmz5Ly455SwDQor6Zmz5Lyv5p2wDQor6Zmz5Lyv6JK8DQor6Zmz5YWL5a6HDQor6Zmz5YWL6YqYDQor6Zmz5ZCb5aaDDQor6Zmz5ZCb6IiqDQor6Zmz5ZCb5qauDQor6Zmz5ZCb5YSSDQor6Zmz5Z2H56KpDQor6Zmz5aaZ5qWoDQor6Zmz5aaN5Ly2DQor6Zmz5aaN56eADQor6Zmz5aak6JWZDQor6Zmz5a2d6YqTDQor6Zmz5a6P5LuBDQor6Zmz5a6P5a6JDQor6Zmz5a6P5piMDQor6Zmz5a6P5rOiDQor6Zmz5a6P576ODQor6Zmz5a6P5b2sDQor6Zmz5a6P6ZqGDQor6Zmz5a6P6YGUDQor6Zmz5a6P6YqYDQor6Zmz5a6P6LOiDQor6Zmz5a6P54WSDQor6Zmz5bu35L+KDQor6Zmz5b+X5bGxDQor6Zmz5b+X5bmzDQor6Zmz5b+X5LuyDQor6Zmz5b+X5a6JDQor6Zmz5b+X5a6PDQor6Zmz5b+X5rKbDQor6Zmz5b+X5bKzDQor6Zmz5b+X5oChDQor6Zmz5b+X5piODQor6Zmz5b+X5piHDQor6Zmz5b+X5qyjDQor6Zmz5b+X5b2lDQor6Zmz5b+X5rWpDQor6Zmz5b+X5YGJDQor6Zmz5b+X5by3DQor6Zmz5b+X56WlDQor6Zmz5b+X57+UDQor6Zmz5b+X6ZuEDQor6Zmz5b+X5rqQDQor6Zmz5b+X6YGUDQor6Zmz5b+X5qauDQor6Zmz5b+X57atDQor6Zmz5b+X6LGqDQor6Zmz5b+X6LGqDQor6Zmz5b+X6LGqDQor6Zmz5b+X6YGgDQor6Zmz5b+X6YqYDQor6Zmz5b+X5a+sDQor6Zmz5b+X56mODQor6Zmz5b+X6bS7DQor6Zmz5b+X5paMDQor6Zmz5pS45am3DQor6Zmz5p2R6b6NDQor6Zmz5rKb5ZCfDQor6Zmz5rG25rSlDQor6Zmz55S4DQor6Zmz56eA5ZCbDQor6Zmz56eA6IqdDQor6Zmz56eA546yDQor6Zmz56eA5aifDQor6Zmz56eA5pWPDQor6Zmz56eA5oOgDQor6Zmz56eA6ZuFDQor6Zmz56eA6Yi0DQor6Zmz56eA5oWnDQor6Zmz56eA6JitDQor6Zmz6IKy5q2jDQor6Zmz6IKy5L2QDQor6Zmz6IKy5aWHDQor6Zmz6IKy56ugDQor6Zmz6IKy5buJDQor6Zmz6IKy6KmpDQor6Zmz6IKy55GpDQor6Zmz6IKy5paMDQor6Zmz6Imv5pS/DQor6Zmz6KaL56eLDQor6Zmz6L6w5o+aDQor6Zmz6YWJ6Iy5DQor6Zmz5Lqe6Yi0DQor6Zmz5L6d6L6wDQor6Zmz5L6d57+UDQor6Zmz5L2zDQor6Zmz5L2z5rGdDQor6Zmz5L2z5Ly2DQor6Zmz5L2z5ZCfDQor6Zmz5L2z5a6PDQor6Zmz5L2z5aauDQor6Zmz5L2z546lDQor6Zmz5L2z55uIDQor6Zmz5L2z55yfDQor6Zmz5L2z5oOgDQor6Zmz5L2z55CqDQor6Zmz5L2z55CmDQor6Zmz5L2z6ZuvDQor6Zmz5L2z576kDQor6Zmz5L2z6bOzDQor6Zmz5L2z5oWnDQor6Zmz5L2z55KYDQor6Zmz5L2z6ae/DQor6Zmz5L2z5oCcDQor6Zmz5L6D5am3DQor6Zmz5L2p5ZCbDQor6Zmz5L2p5ZCbDQor6Zmz5L2p5L2pDQor6Zmz5L2p6Iq4DQor6Zmz5L2p55yfDQor6Zmz5L2p55CzDQor6Zmz5L2p55GcDQor6Zmz5L2p55GpDQor6Zmz5L6R5ailDQor6Zmz5YW26YieDQor6Zmz5Y2U5piMDQor6Zmz5ZKM5oiQDQor6Zmz5Z2k5L2QDQor6Zmz5Z2k5YKRDQor6Zmz5Z2k6Y2+DQor6Zmz5aeU5om/DQor6Zmz5a2f5Ly2DQor6Zmz5a2f6ImvDQor6Zmz5a2f5aiBDQor6Zmz5a2f5YGJDQor6Zmz5a2f55CqDQor6Zmz5a2f6Yi0DQor6Zmz5a2f6LydDQor6Zmz5a2j5L2RDQor6Zmz5a6X5LuBDQor6Zmz5a6X5b+XDQor6Zmz5a6X55uIDQor6Zmz5a6X6ZuEDQor6Zmz5a6X5peXDQor6Zmz5a6X57evDQor6Zmz5a6X6b6NDQor6Zmz5a6a6IezDQor6Zmz5a6c5bmzDQor6Zmz5a6c5ZCbDQor6Zmz5a6c56eADQor6Zmz5a6c5ae/DQor6Zmz5a6c5Z+5DQor6Zmz5a6c576kDQor6Zmz5a6c55KLDQor6Zmz5a6c5pe7DQor6Zmz5a6b5aeNDQor6Zmz5bCa5paHDQor6Zmz5bCa55GcDQor6Zmz5bGF5LuBDQor6Zmz5bKz5ZCbDQor6Zmz5bm46LazDQor6Zmz5bm45ru/DQor6Zmz5bu26YGTDQor6Zmz5b+g6ImvDQor6Zmz5b+g576pDQor6Zmz5oChDQor6Zmz5oCh5paHDQor6Zmz5oCh5Y2JDQor6Zmz5oCh5YawDQor6Zmz5oCh5aaCDQor6Zmz5oCh5aaCDQor6Zmz5oCh5aaCDQor6Zmz5oCh5aaCDQor6Zmz5oCh5aaCDQor6Zmz5oCh5aaCDQor6Zmz5oCh5a6JDQor6Zmz5oCh56u5DQor6Zmz5oCh5Ly2DQor6Zmz5oCh5Ly2DQor6Zmz5oCh5Ly2DQor6Zmz5oCh5YipDQor6Zmz5oCh5ZCbDQor6Zmz5oCh5ZCbDQor6Zmz5oCh5ZCbDQor6Zmz5oCh5ZCbDQor6Zmz5oCh5ZCbDQor6Zmz5oCh5ZCbDQor6Zmz5oCh5ZCbDQor6Zmz5oCh5ZCbDQor6Zmz5oCh5ZCbDQor6Zmz5oCh5bu3DQor6Zmz5oCh56eADQor6Zmz5oCh5piMDQor6Zmz5oCh6IqzDQor6Zmz5oCh54+KDQor6Zmz5oCh6aaZDQor6Zmz5oCh55yfDQor6Zmz5oCh5am3DQor6Zmz5oCh5am3DQor6Zmz5oCh55C0DQor6Zmz5oCh6I+BDQor6Zmz5oCh6ZuvDQor6Zmz5oCh6KqgDQor6Zmz5oCh56KpDQor6Zmz5oCh6JOJDQor6Zmz5oCh5r2UDQor6Zmz5oCh5YSSDQor6Zmz5oCh56mODQor6Zmz5oCh6Z2cDQor6Zmz5oCh6Z2cDQor6Zmz5oCh6JiLDQor6Zmz5oCh6JOBDQor6Zmz5oCh5Y+hDQor6Zmz5oub6KqgDQor6Zmz5piT5p2RDQor6Zmz5piM5paHDQor6Zmz5piM5rivDQor6Zmz5piG5p2wDQor6Zmz5piC5L2RDQor6Zmz5piO5q2jDQor6Zmz5piO5Ly4DQor6Zmz5piO5a6PDQor6Zmz5piO5p2QDQor6Zmz5piO5piMDQor6Zmz5piO5pS/DQor6Zmz5piO54+gDQor6Zmz5piO6I6JDQor6Zmz5piO5am3DQor6Zmz5piO5qW3DQor6Zmz5piO6KOVDQor6Zmz5piO5b63DQor6Zmz5piO6LOiDQor6Zmz5piO6LGQDQor6Zmz5piV5pa5DQor6Zmz5piH5q+FDQor6Zmz5p2x6I+vDQor6Zmz5p2w55ubDQor6Zmz5p2+6JCNDQor6Zmz5qyj5aaCDQor6Zmz5qyj5a6PDQor6Zmz5qyj5a6cDQor6Zmz5qyj5oChDQor6Zmz5qyj5oChDQor6Zmz5qyj5rOwDQor6Zmz5qyj55GcDQor6Zmz5qyj6JitDQor6Zmz5rOz5Lu7DQor6Zmz5rOV5YWJDQor6Zmz5rOT57+UDQor6Zmz5rOT6ZyWDQor6Zmz5rK75a6HDQor6Zmz5rOK6L6wDQor6Zmz546f5YWJDQor6Zmz546f5Ly2DQor6Zmz546f55GbDQor6Zmz546r5aaCDQor6Zmz546r5ZCbDQor6Zmz546r6IqzDQor6Zmz546r6Ie7DQor6Zmz546l54eVDQor6Zmz56eJ5rezDQor6Zmz56eJ5paMDQor6Zmz6Iqz54+NDQor6Zmz6Iqz6JCxDQor6Zmz6Iqd5YCpDQor6Zmz6Iqd56+EDQor6Zmz6Iqv5oChDQor6Zmz6YK16ZGrDQor6Zmz6YeR6ImvDQor6Zmz6YeR5aCkDQor6Zmz6YeR6IGyDQor6Zmz6ZW35oW2DQor6Zmz6Zuo5pawDQor6Zmz6Z2S55GcDQor6Zmz5Lqt5ZCbDQor6Zmz5Lqu5LieDQor6Zmz5Lqu5ZCbDQor6Zmz5Lqu56mODQor6Zmz5L+h5LyKDQor6Zmz5L+h5a6HDQor6Zmz5L+h5petDQor6Zmz5L+h5ZCfDQor6Zmz5L+h5a6PDQor6Zmz5L+h5a6PDQor6Zmz5L+h55SrDQor6Zmz5L+h5b+gDQor6Zmz5L+h5pm6DQor6Zmz5L+h6KOVDQor6Zmz5L+h6LGqDQor6Zmz5L+h5a24DQor6Zmz5L+d5YWDDQor6Zmz5L+d5b2wDQor6Zmz5L+K5LuBDQor6Zmz5L+K5paHDQor6Zmz5L+K5LuwDQor6Zmz5L+K5ZCJDQor6Zmz5L+K5aaCDQor6Zmz5L+K5a6HDQor6Zmz5L+K5a6JDQor6Zmz5L+K5oiQDQor6Zmz5L+K5petDQor6Zmz5L+K5L2RDQor6Zmz5L+K5ZGIDQor6Zmz5L+K5a6PDQor6Zmz5L+K5a6PDQor6Zmz5L+K5a6PDQor6Zmz5L+K5a6PDQor6Zmz5L+K5bu3DQor6Zmz5L+K55S3DQor6Zmz5L+K55S3DQor6Zmz5L+K6ImvDQor6Zmz5L+K5ZKMDQor6Zmz5L+K5p2wDQor6Zmz5L+K6YOODQor6Zmz5L+K5b2sDQor6Zmz5L+K5YKRDQor6Zmz5L+K5YexDQor6Zmz5L+K6I+vDQor6Zmz5L+K5rqQDQor6Zmz5L+K6YGUDQor6Zmz5L+K5qaVDQor6Zmz5L+K57atDQor6Zmz5L+K6LGqDQor6Zmz5L+K6YqYDQor6Zmz5L+K6YqYDQor6Zmz5L+K55KLDQor6Zmz5L+K5qi6DQor6Zmz5L+K6Ku6DQor6Zmz5L+K6b6NDQor6Zmz5L+K55GLDQor6Zmz5L+Q5a6JDQor6Zmz5L+Q56eADQor6Zmz5L+Q5r2UDQor6Zmz5L+e5LuyDQor6Zmz5L+e5aaZDQor6Zmz5L+e6Z2cDQor6Zmz5Yag5aSrDQor6Zmz5Yag5LuwDQor6Zmz5Yag5aaCDQor6Zmz5Yag5a6HDQor6Zmz5Yag5beeDQor6Zmz5Yag6IifDQor6Zmz5Yag5ZCrDQor6Zmz5Yag5a6PDQor6Zmz5Yag5bu3DQor6Zmz5Yag55S3DQor6Zmz5Yag5YKRDQor6Zmz5Yag5ZeaDQor6Zmz5Yag57atDQor6Zmz5Yag6YqYDQor6Zmz5Yag5qi6DQor6Zmz5Yag5aaPDQor6Zmz5YmH5qy9DQor6Zmz5YuH5ZyoDQor6Zmz5YuH5b+XDQor6Zmz5YuH6YGUDQor6Zmz5YuB5ZC+DQor6Zmz5Y2X5bGFDQor6Zmz5Y6a6YqYDQor6Zmz5ZOB5YWIDQor6Zmz5ZOB56eADQor6Zmz5ZOB6LydDQor6Zmz5aWV5LitDQor6Zmz5aWV5Lu7DQor6Zmz5aWV5biGDQor6Zmz5aWV5YipDQor6Zmz5aWV5bu3DQor6Zmz5aWV55uIDQor6Zmz5aWV6YGUDQor6Zmz5aWV56mODQor6Zmz5aWV6JOBDQor6Zmz5aWO5q+PDQor6Zmz5ae/5paHDQor6Zmz5ae/55m+DQor6Zmz5ae/5YipDQor6Zmz5ae/5ZCfDQor6Zmz5ae/5bKQDQor6Zmz5ae/54+KDQor6Zmz5ae/6JOJDQor6Zmz5ae/56mODQor6Zmz5ae/55KHDQor6Zmz5aiB5LieDQor6Zmz5aiB5YWoDQor6Zmz5aiB5a6HDQor6Zmz5aiB5oiQDQor6Zmz5aiB5YqpDQor6Zmz5aiB5bu3DQor6Zmz5aiB5b+XDQor6Zmz5aiB5b+XDQor6Zmz5aiB6YKRDQor6Zmz5aiB57+UDQor6Zmz5aiB6LGqDQor6Zmz5aiB5YSSDQor6Zmz5aiB6ZyWDQor6Zmz5a6j5Lu7DQor6Zmz5a6j5q+PDQor6Zmz5a6l5Lu7DQor6Zmz5a6l6KutDQor6Zmz5bil5ZCNDQor6Zmz5bu65LitDQor6Zmz5bu65YWDDQor6Zmz5bu65paHDQor6Zmz5bu65Lu7DQor6Zmz5bu65ZCMDQor6Zmz5bu65a6HDQor6Zmz5bu65a6JDQor6Zmz5bu65beeDQor6Zmz5bu65oiQDQor6Zmz5bu65petDQor6Zmz5bu66KGMDQor6Zmz5bu65ZGIDQor6Zmz5bu65a6PDQor6Zmz5bu65a6PDQor6Zmz5bu65a6PDQor6Zmz5bu65a6PDQor6Zmz5bu65bu3DQor6Zmz5bu65b+XDQor6Zmz5bu65b+XDQor6Zmz5bu655SrDQor6Zmz5bu655S3DQor6Zmz5bu66ImvDQor6Zmz5bu66YKmDQor6Zmz5bu65piODQor6Zmz5bu65ZyLDQor6Zmz5bu65o+aDQor6Zmz5bu66I+vDQor6Zmz5bu66KmVDQor6Zmz5bu65rqQDQor6Zmz5bu66YGUDQor6Zmz5bu65qauDQor6Zmz5bu66JOJDQor6Zmz5bu66LyUDQor6Zmz5bu66YqYDQor6Zmz5bu66YqYDQor6Zmz5bu655KLDQor6Zmz5bu65YuzDQor6Zmz5bu65qi6DQor6Zmz5bu66b6NDQor6Zmz5bu654OcDQor6Zmz5b2l5aSrDQor6Zmz5b2l5paHDQor6Zmz5b2l5Lu7DQor6Zmz5b2l5ZCIDQor6Zmz5b2l5a6HDQor6Zmz5b2l5biGDQor6Zmz5b2l56u5DQor6Zmz5b2l5Ly4DQor6Zmz5b2l5ZCbDQor6Zmz5b2l5aOvDQor6Zmz5b2l5a6PDQor6Zmz5b2l5a6PDQor6Zmz5b2l5bu3DQor6Zmz5b2l55SrDQor6Zmz5b2l6ImvDQor6Zmz5b2l5piMDQor6Zmz5b2l5YexDQor6Zmz5b2l5oS3DQor6Zmz5b2l57a4DQor6Zmz5b2l6LGqDQor6Zmz5b2l5oWwDQor6Zmz5b2l5YuzDQor6Zmz5b2l6ZyWDQor6Zmz5b6L5YWDDQor6Zmz5oCd5YWIDQor6Zmz5oCd5bm0DQor6Zmz5oCd5aakDQor6Zmz5oCd5LquDQor6Zmz5oCd5rqQDQor6Zmz5oCd6JOJDQor6Zmz5oCd5qi4DQor6Zmz5oCd56mODQor6Zmz5oCd57+wDQor6Zmz5oCd55KHDQor6Zmz5pS/5paHDQor6Zmz5pS/5a6PDQor6Zmz5pS/5piVDQor6Zmz5pS/5aCvDQor6Zmz5pS/6KOVDQor6Zmz5pS/5q+FDQor6Zmz5pS/6KyZDQor6Zmz5pil5aaDDQor6Zmz5pil5piODQor6Zmz5pil54eVDQor6Zmz5pit5paHDQor6Zmz5pit5a6HDQor6Zmz5pit5Ly2DQor6Zmz5pit5b+XDQor6Zmz5pit5YGJDQor6Zmz5pit5qauDQor6Zmz5pit6YqYDQor6Zmz5pit55GLDQor6Zmz5pig5petDQor6Zmz5pig5b+XDQor6Zmz5pig5YSSDQor6Zmz5pif5a6HDQor6Zmz5pif54a5DQor6Zmz5pix5LieDQor6Zmz5pix5YWoDQor6Zmz5pix5rGdDQor6Zmz5pix5a6PDQor6Zmz5pix55SrDQor6Zmz5pix6YGUDQor6Zmz5pix5qi6DQor6Zmz5p+U5a6JDQor6Zmz5p+E5pa5DQor6Zmz5p+P5YWDDQor6Zmz5p+P5Lu9DQor6Zmz5p+P5a6HDQor6Zmz5p+P5beeDQor6Zmz5p+P5bm0DQor6Zmz5p+P6IifDQor6Zmz5p+P5ZCrDQor6Zmz5p+P5a6PDQor6Zmz5p+P5b+XDQor6Zmz5p+P5rKFDQor6Zmz5p+P5bKzDQor6Zmz5p+P5bOwDQor6Zmz5p+P5YexDQor6Zmz5p+P55GeDQor6Zmz5p+P5a+nDQor6Zmz5p+P6JOJDQor6Zmz5p+P55KLDQor6Zmz5p+P57+wDQor6Zmz5p+P6LyvDQor6Zmz5p+P55GLDQor6Zmz5rSy5pifDQor6Zmz54Kr5ZCbDQor6Zmz54Kz5LuyDQor6Zmz54Kz6L6wDQor6Zmz54Kz6YyVDQor6Zmz54Kv6YymDQor6Zmz54+K54+KDQor6Zmz54+N55GpDQor6Zmz55qG6IiIDQor6Zmz55qH5petDQor6Zmz55qH6b6NDQor6Zmz55uI5YWoDQor6Zmz55uI5aaCDQor6Zmz55uI5aaCDQor6Zmz55uI5a6JDQor6Zmz55uI56u5DQor6Zmz55uI5ZCbDQor6Zmz55uI5a2cDQor6Zmz55uI5p2JDQor6Zmz55uI6LKdDQor6Zmz55uI5am3DQor6Zmz55uI57a6DQor6Zmz55uI55KLDQor6Zmz55uI6KutDQor6Zmz55uI55KHDQor6Zmz55u46YGUDQor6Zmz56WI6LOTDQor6Zmz56a56b2KDQor6Zmz56eR6aCGDQor6Zmz56eL5pa5DQor6Zmz56eL5biGDQor6Zmz56eL56eADQor6Zmz56eL57SUDQor6Zmz56eL6JCNDQor6Zmz56eL6ZuvDQor6Zmz56eL54eVDQor6Zmz57SF546JDQor6Zmz57SA6LazDQor6Zmz576O5LqRDQor6Zmz576O546JDQor6Zmz576O5aaCDQor6Zmz576O5bm0DQor6Zmz576O5Ly2DQor6Zmz576O5ZCbDQor6Zmz576O5ZCfDQor6Zmz576O5bu3DQor6Zmz576O56eADQor6Zmz576O6IqdDQor6Zmz576O546yDQor6Zmz576O5aifDQor6Zmz576O57SUDQor6Zmz576O5ZasDQor6Zmz576O5oOgDQor6Zmz576O55C0DQor6Zmz576O6I+xDQor6Zmz576O6Yi0DQor6Zmz576O5oWnDQor6Zmz576O5YSSDQor6Zmz576O6Z2cDQor6Zmz576O6Yi6DQor6Zmz576/6LC3DQor6Zmz6Ie05LuwDQor6Zmz6Ie05a6PDQor6Zmz6Ie056aPDQor6Zmz6Ie05Y+hDQor6Zmz6Iul5pumDQor6Zmz6IyC6ZuEDQor6Zmz6Iux5p2wDQor6Zmz6Iux5oyvDQor6Zmz6Iux5YKRDQor6Zmz6Iux6JOTDQor6Zmz6Iux6bS7DQor6Zmz6IuT5aifDQor6Zmz6Jm55puyDQor6Zmz6Jm55ZCfDQor6Zmz6Jm55r2UDQor6Zmz6KGN6IezDQor6Zmz6KGN6ZyWDQor6Zmz6LKe5petDQor6Zmz6LKe5aakDQor6Zmz6LKe6JOJDQor6Zmz6LKe55GLDQor6Zmz6YOB5LuBDQor6Zmz6YOB5paHDQor6Zmz6YOB6IqsDQor6Zmz6YOB5YKRDQor6Zmz6YOB6I+BDQor6Zmz6YOB5qWTDQor6Zmz6YeN5YWJDQor6Zmz6YeN5bu3DQor6Zmz6YeN5YSSDQor6Zmz6Z+L5ZyoDQor6Zmz6Z+L5Ly2DQor6Zmz6Z+L5bu3DQor6Zmz6Z+L5om/DQor6Zmz6Z+L6LGqDQor6Zmz6Z+zDQor6Zmz6aOb6ImvDQor6Zmz6aaZ5aaCDQor6Zmz6aaZ5ZCfDQor6Zmz6aaZ5am3DQor6Zmz5YCN55SEDQor6Zmz5YCW57+gDQor6Zmz5YeM56GvDQor6Zmz5ZOy5rCRDQor6Zmz5ZOy5by3DQor6Zmz5ZOy6LOiDQor6Zmz5a625q2jDQor6Zmz5a625aWHDQor6Zmz5a6254+NDQor6Zmz5a6256WlDQor6Zmz5a625rmWDQor6Zmz5a626ZuvDQor6Zmz5a625ryiDQor6Zmz5a625YSADQor6Zmz5a625oWnDQor6Zmz5a626IiIDQor6Zmz5a6255CuDQor6Zmz5a656JCxDQor6Zmz5bOw5beeDQor6Zmz5oGVDQor6Zmz5oGp5qauDQor6Zmz5oyv5p2xDQor6Zmz5oyv5rmnDQor6Zmz5oyv6YqYDQor6Zmz5pmC55ufDQor6Zmz5pu45YWJDQor6Zmz5pu45q+TDQor6Zmz5qGC546JDQor6Zmz5qGC5oWnDQor6Zmz5rOw5YWoDQor6Zmz5rOw5Ly2DQor6Zmz5rOw5bOwDQor6Zmz5rOw6YqYDQor6Zmz5rWa5qy9DQor6Zmz5rWp6Iy5DQor6Zmz54+u5LqRDQor6Zmz54+u5oChDQor6Zmz54+u54+uDQor6Zmz54+u55GcDQor6Zmz54+u55GLDQor6Zmz55uK6KOVDQor6Zmz56WQ5oKMDQor6Zmz57ShDQor6Zmz57Sg54+NDQor6Zmz57Sg5ailDQor6Zmz57Sg55GcDQor6Zmz57SU5oChDQor6Zmz6ICY5a+sDQor6Zmz6I2D6LGqDQor6Zmz6YOh5oChDQor6Zmz5Lm+5remDQor6Zmz5YGJ5rCRDQor6Zmz5YGJ5L+hDQor6Zmz5YGJ6I6JDQor6Zmz5YGJ6KOVDQor6Zmz5YGl5LiKDQor6Zmz5YGl5bCBDQor6Zmz5YGl6ZyWDQor6Zmz5ZyL5YWDDQor6Zmz5ZyL5piODQor6Zmz5ZyL5bOwDQor6Zmz5ZyL5qKBDQor6Zmz5ZyL5qOLDQor6Zmz5ZyL5qauDQor6Zmz5ZyL6YuSDQor6Zmz5aCF5rCRDQor6Zmz5Z+56IKyDQor6Zmz5Z+556uvDQor6Zmz5amJ6IKyDQor6Zmz5amJ5Y2/DQor6Zmz5amJ6I+BDQor6Zmz5amJ5r2UDQor6Zmz5bSH5Y6fDQor6Zmz5bSR6YqYDQor6Zmz5b2p57SUDQor6Zmz5o23DQor6Zmz5ZWf5a2YDQor6Zmz5ZWf5riFDQor6Zmz5ZWf6YqYDQor6Zmz5pWP5pifDQor6Zmz5pWP5pawDQor6Zmz5qKT55GLDQor6Zmz5qKF6aaoDQor6Zmz5riF5aWHDQor6Zmz5riF5rqQDQor6Zmz5reRDQor6Zmz5reR5ZCbDQor6Zmz5reR5oChDQor6Zmz5reR6IqsDQor6Zmz5reR6IqsDQor6Zmz5reR546yDQor6Zmz5reR56eLDQor6Zmz5reR6LKeDQor6Zmz5reR5aifDQor6Zmz5reR5aifDQor6Zmz5reR55yfDQor6Zmz5reR576aDQor6Zmz5reR5oOgDQor6Zmz5reR6JCNDQor6Zmz5reR6ZuFDQor6Zmz5reR6Yi0DQor6Zmz5reR5oWnDQor6Zmz5reR6Z2cDQor6Zmz5re156eLDQor6Zmz54yb5a6XDQor6Zmz56Wl6YieDQor6Zmz57S55bqtDQor6Zmz6I6K5YGJDQor6Zmz6I6J5am3DQor6Zmz6Kix5rCRDQor6Zmz6Zuq6IqsDQor6Zmz6Zuq6I+vDQor6Zmz5YKR6KOVDQor6Zmz5Yex546yDQor6Zmz5Yex6Yi/DQor6Zmz5Yud5aaCDQor6Zmz5Yud5ZiJDQor6Zmz5Y2a5bq3DQor6Zmz5Zas5a6HDQor6Zmz5am3546fDQor6Zmz5a+M5rCRDQor6Zmz5a+M5qauDQor6Zmz5oOg5paHDQor6Zmz5oOg5ZCbDQor6Zmz5oOg6IqsDQor6Zmz5oOg546yDQor6Zmz5oOg576ODQor6Zmz5oOg5aifDQor6Zmz5oOg5am3DQor6Zmz5oOg6JCNDQor6Zmz5oOg6ZuvDQor6Zmz5oOg6ZuvDQor6Zmz5oOg6b2hDQor6Zmz5o+a5ZOyDQor6Zmz5pm25pm2DQor6Zmz5pmv5rOwDQor6Zmz5pmv6ZGrDQor6Zmz5pm65LquDQor6Zmz5pm65YGJDQor6Zmz5pm66Zm9DQor6Zmz5pm65a+sDQor6Zmz5pyd5paHDQor6Zmz5pyd54aZDQor6Zmz5qOL54+NDQor6Zmz5rmY5LqODQor6Zmz5rmY55C0DQor6Zmz5rid5paHDQor6Zmz55Cq6ZuvDQor6Zmz55Cm55CzDQor6Zmz55m76ZqGDQor6Zmz562R562gDQor6Zmz6IKF5qyKDQor6Zmz6IiS5oabDQor6Zmz6I+BDQor6Zmz6I+v5YGJDQor6Zmz6Kmg5LquDQor6Zmz6LOA6Yi6DQor6Zmz6L6c5LquDQor6Zmz6YC45bmzDQor6Zmz6YC45piODQor6Zmz6YC455uIDQor6Zmz6YC46I+BDQor6Zmz6YC457atDQor6Zmz6YC46bS7DQor6Zmz6YCy5b+XDQor6Zmz6YCy6ZqGDQor6Zmz6Yie5bGPDQor6Zmz6ZaU6ZqGDQor6Zmz6ZqG5paMDQor6Zmz6ZuF5ZCbDQor6Zmz6ZuF546rDQor6Zmz6ZuF6IqsDQor6Zmz6ZuF546yDQor6Zmz6ZuF546yDQor6Zmz6ZuF6IuTDQor6Zmz6ZuF54+uDQor6Zmz6ZuF6ZuqDQor6Zmz6ZuF5am3DQor6Zmz6ZuF5oOgDQor6Zmz6ZuF5oOgDQor6Zmz6ZuF55CqDQor6Zmz6ZuF55C0DQor6Zmz6ZuF6I+BDQor6Zmz6ZuF6ZuvDQor6Zmz6ZuF6ZuvDQor6Zmz6ZuF6Yi0DQor6Zmz6ZuF5oWnDQor6Zmz6ZuF6Z+7DQor6Zmz6ZuvDQor6Zmz6Zuv5oOgDQor6Zmz6Zuy5qi4DQor6Zmz6aCG55m8DQor6Zmz5YKz6IiIDQor6Zmz5oSP5paHDQor6Zmz5oSP6ZuvDQor6Zmz5oWI6ZuFDQor6Zmz5oSb55SEDQor6Zmz5pWs5paHDQor6Zmz5pWs5YKRDQor6Zmz5paw54OIDQor6Zmz5qWt57WxDQor6Zmz5qaG5ra1DQor6Zmz5q+T6ImvDQor6Zmz5q+T6Iy5DQor6Zmz5q+T6YieDQor6Zmz5rqQ5q2jDQor6Zmz5rqr6JCNDQor6Zmz54Wn5oWIDQor6Zmz54Wm5reRDQor6Zmz54Wl5qOuDQor6Zmz55Ge5YipDQor6Zmz55Ge5piMDQor6Zmz55Ge6IqsDQor6Zmz55Ge6YenDQor6Zmz55Ge55GcDQor6Zmz55Ge6ZyWDQor6Zmz55Ge6bqfDQor6Zmz55Gc6KmpDQor6Zmz56W65a+MDQor6Zmz57aT5ZyLDQor6Zmz576p5b+gDQor6Zmz576p57evDQor6Zmz6IGW5bC5DQor6Zmz6IGW5a6cDQor6Zmz6IGW5YKRDQor6Zmz6IGW5oayDQor6Zmz6JCx6JSTDQor6Zmz6JyC54GdDQor6Zmz6KOV5Y2HDQor6Zmz6KOV5bu3DQor6Zmz6KOV5pm6DQor6Zmz6Kmp5bmzDQor6Zmz6Kmp5rOJDQor6Zmz6Kmp5am3DQor6Zmz6Kmp6KmpDQor6Zmz6Kmp6JiLDQor6Zmz6YGL5b61DQor6Zmz6YGU6KOVDQor6Zmz6ZuNDQor6Zmz6Z2W5oChDQor6Zmz6byO5LuBDQor6Zmz5ZiJ5LuBDQor6Zmz5ZiJ5LqoDQor6Zmz5ZiJ5a6PDQor6Zmz5ZiJ5oChDQor6Zmz5ZiJ546yDQor6Zmz5ZiJ5bOwDQor6Zmz5ZiJ6Iy1DQor6Zmz5ZiJ5remDQor6Zmz5ZiJ5oOgDQor6Zmz5ZiJ6ZuBDQor6Zmz5ZiJ5YukDQor6Zmz5ZiJ5b63DQor6Zmz5ZiJ55GpDQor6Zmz5ZiJ54efDQor6Zmz5ZiJ55CuDQor6Zmz5peX5piMDQor6Zmz5qau5p2wDQor6Zmz5qau6YCyDQor6Zmz5qau54e/DQor6Zmz5ryi54+NDQor6Zmz5ryi6JSaDQor6Zmz55Gk55yfDQor6Zmz56Kn57SFDQor6Zmz56Kn6ZuyDQor6Zmz56Kp5YGJDQor6Zmz56aP5p6XDQor6Zmz57a66I+vDQor6Zmz57at6YKmDQor6Zmz57at5ZOyDQor6Zmz57at5YSADQor6Zmz57+g5am3DQor6Zmz6IKH6bS7DQor6Zmz6JOT546yDQor6Zmz6KqM552/DQor6Zmz6YqYDQor6Zmz6YqY5rOJDQor6Zmz6YqY5by3DQor6Zmz6YqY6ZuEDQor6Zmz6YqY6ICADQor6Zmz6bOz546yDQor6Zmz6bOz6bO0DQor6Zmz5YSADQor6Zmz5YSA54+KDQor6Zmz5YSA5r2UDQor6Zmz5a+s5aaCDQor6Zmz5buj6bqfDQor6Zmz5b635ZKMDQor6Zmz5b635aCCDQor6Zmz5b636YGgDQor6Zmz5b615a6XDQor6Zmz5oW25pifDQor6Zmz5oW26I+vDQor6Zmz5oW257atDQor6Zmz5oW257+wDQor6Zmz5oW26bS7DQor6Zmz5oWn546JDQor6Zmz5oWn5aaCDQor6Zmz5oWn5ZCbDQor6Zmz5oWn6IqdDQor6Zmz5oWn54+KDQor6Zmz5oWn546yDQor6Zmz5oWn576ODQor6Zmz5oWn5Y2/DQor6Zmz5oWn55yfDQor6Zmz5oWn57SUDQor6Zmz5oWn5pWPDQor6Zmz5oWn6JCNDQor6Zmz5oWn6ZuvDQor6Zmz5oWn6JOJDQor6Zmz5oWn5qi1DQor6Zmz5oWn6JitDQor6Zmz5oWV5YSSDQor6Zmz5q+F5q2jDQor6Zmz5q+F6bS7DQor6Zmz5r2U6Z+zDQor6Zmz55Gp6IqzDQor6Zmz55Gp6JOJDQor6Zmz55Gp55GEDQor6Zmz57ev5oGpDQor6Zmz6JSa6Z2SDQor6Zmz6Kq86IqzDQor6Zmz6LOi5YW4DQor6Zmz6Lyd5ZCJDQor6Zmz6ZyH5a6HDQor6Zmz6buO5qGCDQor6Zmz5a245piODQor6Zmz5oay5LuBDQor6Zmz5oay5YSADQor6Zmz5oa26ZuvDQor6Zmz5puJ5aeNDQor6Zmz5puJ6Z2SDQor6Zmz5puJ6aKoDQor6Zmz5puJ5bWQDQor6Zmz5puJ6I+BDQor6Zmz5puJ562gDQor6Zmz5puJ5oWnDQor6Zmz5puJ6bqXDQor6Zmz5qi55bm0DQor6Zmz5r6k54+KDQor6Zmz54eV5Ly2DQor6Zmz54eV6I+BDQor6Zmz54eV5oCcDQor6Zmz56mO5ZCbDQor6Zmz56mO56WlDQor6Zmz56mO5oWnDQor6Zmz56mG6JOJDQor6Zmz57+w55KLDQor6Zmz6JWZ6IqzDQor6Zmz6JWZ6Iu5DQor6Zmz6Yyr6I+vDQor6Zmz6Yym56eADQor6Zmz6Yym5aCCDQor6Zmz6Yym5oWnDQor6Zmz6Yym6bS7DQor6Zmz6Z2c5aaCDQor6Zmz6Z2c5a6cDQor6Zmz6Z2c5oChDQor6Zmz6Z2c5oChDQor6Zmz6Z2c5oChDQor6Zmz6Z2c6IqzDQor6Zmz6Z2c5reRDQor6Zmz6Z2c5a+nDQor6Zmz6Z2c5YSADQor6Zmz6Z2c5oWnDQor6Zmz6Z2c6LOiDQor6Zmz6b6N55SfDQor6Zmz6b6N5a+sDQor6Zmz5puZ5p2xDQor6Zmz6IGw5LuBDQor6Zmz6IeG5LuBDQor6Zmz6JaHDQor6Zmz6JaH5aaCDQor6Zmz6KyZ5q+FDQor6Zmz6ae/5o+aDQor6Zmz6bS75paHDQor6Zmz6bS75b+XDQor6Zmz6bS75riFDQor6Zmz6bS76KOVDQor6Zmz6bS76ZyWDQor6Zmz55K/5aaCDQor6Zmz6LGQ5oyvDQor6Zmz5oe35ZOyDQor6Zmz55K954itDQor6Zmz55OK5reHDQor6Zmz55OK5qi6DQor6Zmz6Jed5b+DDQor6Zmz6LSK5LitDQor6Zmz6Y+X5Lu7DQor6Zmz6Z+75aSZDQor6Zmz6Z+75aaCDQor6Zmz6Z+75aaCDQor6Zmz6Z+75aaCDQor6Zmz6Z+756u5DQor6Zmz6Z+75am3DQor6Zmz6Z+76Z2cDQor6Zmz6bWs56a+DQor6Zmz6bqS5YWDDQor6Zmz6bqS5YWoDQor6Zmz6bqX5paHDQor6Zmz6bqX5aaCDQor6Zmz6bqX5a6HDQor6Zmz6bqX6ICMDQor6Zmz6bqX6IqsDQor6Zmz6bqX5Y2/DQor6Zmz6bqX54+gDQor6Zmz6bqX5am3DQor6Zmz6bqX6JCNDQor6Zmz6bqX6ZuvDQor6Zmz6bqX6JOuDQor6Zmz5a+2546JDQor6Zmz5a+26JOuDQor6Zmz6ICA5LuBDQor6Zmz6ICA56yZDQor6Zmz6aao5oChDQor6Zmz5YS35paHDQor6Zmz5qu75a65DQor6Zmz6K296b2hDQor6Zmz6ba05LitDQor6Zmz5oe/5pigDQor6Zmz6Im36Yi0DQor6Zmz6IqK56eADQor6Zmz5oCc5ZCbDQor6Zmz5pe75pS/DQor6Zmz546g5rqQDQor6Zmz5aeu6ZyPDQor6Zmz5ae15aaCDQor6Zmz5ae15ZCfDQor6Zmz5ae155GxDQor6Zmz5pi25pixDQor6Zmz54+I55CmDQor6Zmz5b2n6aaoDQor6Zmz55CH5aaCDQor6Zmz5aCcDQor6Zmz55Cu6ZaUDQor6Zmz55Cs5am3DQor6Zmz55Cs6I+BDQor6Zmz5qS45raTDQor6Zmz55GLDQor6Zmz55GL5YW4DQor6Zmz55GL6ICYDQor6Zmz55GL5pi2DQor6Zmz562x6IqzDQor6Zmz562x5am3DQor6Zmz562x562gDQor6Zmz6JCp6Iq4DQor6Zmz6Yi6546rDQor6Zmz6Yi65am3DQor6Zmz6Yi655K9DQor6Zmz6Yqa6Iy5DQor6Zmz6ZyI5a6HDQor6Zmz6JaP6ZuvDQor6Zmz54CF5aaCDQor6Zmz54CF5reRDQor6Zmz5ay/5ZugDQor6Zmz5ay/5Ly2DQor6Zmz6aGX5paHDQor6Zmz6ZGr6bqfDQor6Zm45bCP54eVDQor6Zm45q2j576pDQor6Zm45a2j5a6PDQor6Zm45L+h6b6NDQor6Zm45rSl6I+vDQor6Zm45qKF5am3DQor6Zm46Zuy5rOwDQor6Zm46bOz546yDQor6Zm45rev6Yi0DQor6Zm26IKy5Z2HDQor6Zm25oOf6JCxDQor56ug5paH6IqdDQor56ug5L2z6ZuyDQor56ug5qC55rqQDQor56ug57+UDQor56ug55OK5pa5DQor6bql5L2p6ZuvDQor6bql55un5a+25YWoDQor5YKF5LiA6ZuEDQor5YKF5a2Q5oGSDQor5YKF5paH6YCyDQor5YKF5q2j5biMDQor5YKF5YWJ5pm6DQor5YKF5a6P5paMDQor5YKF5Lqe5YehDQor5YKF5oCh6IqzDQor5YKF6YeR5a6PDQor5YKF5bu65ZyLDQor5YKF5pig5YWIDQor5YKF576O6JOJDQor5YKF54+u5reHDQor5YKF5ZyL5qOfDQor5YKF5ZWf55qHDQor5YKF5reR6ZuvDQor5YKF5pav5bmzDQor5YKF6ZuF5Y2/DQor5YKF54WM6YymDQor5YKF6Ymb5paHDQor5YKF5b635pS/DQor5YKF6Y2s5re8DQor5YKF55CuDQor5Zau5Lqm5L+gDQor5Za76Iez5ZaEDQor5Zas5a6X5aCvDQor5a+M5bq357+UDQor5b2t5LiK5ZCJDQor5b2t5aOr5oGSDQor5b2t5LuB5b+XDQor5b2t5Y+K6L6wDQor5b2t5paH5a6PDQor5b2t5paH5oWnDQor5b2t5Lul5L+hDQor5b2t5q2j6ImvDQor5b2t546J6I+vDQor5b2t5LyK6IqsDQor5b2t5aaC5pWPDQor5b2t5oiQ5YKRDQor5b2t5pet5YidDQor5b2t5a6P5ZCbDQor5b2t5b+X6LGqDQor5b2t5L2z5YGJDQor5b2t5a6X5oSPDQor5b2t5oCh6JWZDQor5b2t5pyL6ZuNDQor5b2t56eJ5q2jDQor5b2t5L+d5qyjDQor5b2t5L+K56aPDQor5b2t5Yag55GbDQor5b2t5aiB57+UDQor5b2t5bu65qauDQor5b2t5b6L5YehDQor5b2t5p+P5aiBDQor5b2t56eL6JCNDQor5b2t6Iul5oWIDQor5b2t6YOB5LuBDQor5b2t5ZOy5LuBDQor5b2t5rWp5YCrDQor5b2t5YGJ5ZCbDQor5b2t5ZyL5bOwDQor5b2t5bSH5L+hDQor5b2t5ZWf6YieDQor5b2t5reR54+NDQor5b2t55ubDQor5b2t6Zuq55CmDQor5b2t5Zac5rWpDQor5b2t5pm26IGyDQor5b2t5ruL6JCNDQor5b2t6IiS5b2lDQor5b2t6ZaL5piODQor5b2t6ZuF57W5DQor5b2t5oSb6JiLDQor5b2t55Ge6IuTDQor5b2t6IGW6JCNDQor5b2t5ZiJ5ZCbDQor5b2t5qau5qGCDQor5b2t6YqY5reHDQor5b2t5oWn5aaCDQor5b2t6LOi5LiADQor5b2t5puJ55CqDQor5b2t6Yym54KrDQor5b2t6ae/5rSBDQor5b2t6bqX5oWnDQor5b2t6aao5oWnDQor5b2t55GL5b2lDQor5b2t6aCO6JiLDQor5pmv6Zuo56eLDQor5pu+5Yeh5ZOyDQor5pu+5LqO5oWIDQor5pu+5Y2D6LGqDQor5pu+5aOr6LuSDQor5pu+5aOr5oGSDQor5pu+5a2Q5bqtDQor5pu+5bCP546yDQor5pu+5LuB5L2RDQor5pu+5YWD5b+XDQor5pu+5a2U6Yi6DQor5pu+5paHDQor5pu+5paH5b+gDQor5pu+5paH5b2sDQor5pu+5paH5oWnDQor5pu+5paH6aGXDQor5pu+5LiW54WMDQor5pu+5Luk55GcDQor5pu+5bmz6KqlDQor5pu+5q2j6ICADQor5pu+546J5aaCDQor5pu+546J6I+BDQor5pu+56uL5b63DQor5pu+5Luy55ufDQor5pu+5ZCJ5a6PDQor5pu+5aaC5ZCbDQor5pu+5a6J55CqDQor5pu+57695ba6DQor5pu+5ZCb6LGqDQor5pu+5b+X546EDQor5pu+5b+X5YKRDQor5pu+5b+X6bqfDQor5pu+56eA5qKFDQor5pu+6IKy6I+BDQor5pu+5L2z546yDQor5pu+5L2z55GxDQor5pu+5a2j5q2GDQor5pu+5bCa5b+XDQor5pu+5oCh5aifDQor5pu+5oCh5ZiJDQor5pu+5om/5b+XDQor5pu+5piO5b63DQor5pu+5rOT6ZyWDQor5pu+6Iqd6JitDQor5pu+5L+h5YKRDQor5pu+5L+K5b2lDQor5pu+5L+K5pm6DQor5pu+5L+K6LGqDQor5pu+5L+K55GLDQor5pu+5Yag5qi6DQor5pu+5ZOB5b2wDQor5pu+5ae/57a6DQor5pu+5aiB6KutDQor5pu+5bu65ZKMDQor5pu+5bu65Y2aDQor5pu+5bu65qauDQor5pu+5bu66ZyWDQor5pu+5b2l6ZaUDQor5pu+5b2l57+wDQor5pu+5oCd57atDQor5pu+5pS/6LGqDQor5pu+5pit57+UDQor5pu+5pig6b2hDQor5pu+5p+P5ra1DQor5pu+5p+P6IiIDQor5pu+55qH6b6NDQor5pu+56eL5pWPDQor5pu+576O5oChDQor5pu+576O6I+vDQor5pu+576O6b2hDQor5pu+6Iux5bOwDQor5pu+6YOB5paHDQor5pu+6YOB56mODQor5pu+5a625oyvDQor5pu+5bGV5YW2DQor5pu+5pu45oWnDQor5pu+54+u55CzDQor5pu+57Sg6Yi0DQor5pu+6LuS5b2sDQor5pu+5YGJ57+UDQor5pu+5YGl6YCiDQor5pu+5ZyL5b+XDQor5pu+5ZyL5pu4DQor5pu+5ZyL6KOVDQor5pu+5ZyL6YuGDQor5pu+5amJ5oOgDQor5pu+5bq45ZOyDQor5pu+5ZWf5by3DQor5pu+5qKF546JDQor5pu+5reR6IqzDQor5pu+5reR5pWPDQor5pu+5reR6JCNDQor5pu+5ra15YmvDQor5pu+56Wl6YGUDQor5pu+6LKr5pm6DQor5pu+5Yex5oKMDQor5pu+5Y2a5b2lDQor5pu+5a+M6Yi6DQor5pu+5oOg546yDQor5pu+5oOg6ZuvDQor5pu+5paQ57SFDQor5pu+5pm65byYDQor5pu+5pm656W6DQor5pu+5rmY6ZuyDQor5pu+6IiS5bmzDQor5pu+6I+v6b2hDQor5pu+6LK056aODQor5pu+6Yie6byODQor5pu+6ZuF6Z2SDQor5pu+6ZuF5oOgDQor5pu+6ZuF6YmJDQor5pu+6Zuy5rKQDQor5pu+5oSP5paHDQor5pu+5oWI5oOgDQor5pu+5pqJ5rS4DQor5pu+5rql5YWDDQor5pu+54Wl5YKRDQor5pu+55Ge5pmDDQor5pu+55Gb55CzDQor5pu+562g5YeKDQor5pu+6IGW54S2DQor5pu+6KOV5YexDQor5pu+6Kmp57+wDQor5pu+6Z2W5aifDQor5pu+6byO5YWDDQor5pu+5ZiJ6IuxDQor5pu+5qauDQor5pu+56Kn6JOuDQor5pu+57at576kDQor5pu+6YqY6YqcDQor5pu+5b636b6NDQor5pu+5oW255GEDQor5pu+5oWn55yfDQor5pu+5r6E5aCJDQor5pu+5oay5b+gDQor5pu+5puJ55CqDQor5pu+6JWZ6I+BDQor5pu+6Z2c5oChDQor5pu+57mB6Z2SDQor5pu+6bS75a62DQor5pu+5oe36LOiDQor5pu+55OK5oWnDQor5pu+6Z+755yfDQor5pu+6bqX5aifDQor5pu+5a+256OBDQor5pu+57m85aKeDQor5pu+6ICA6LOiDQor5pu+6aao5YSADQor5pu+6b2h5oWnDQor5pu+6YOF57WcDQor5pu+55Cu5b2lDQor5pu+5pqQ5riFDQor5pu+562x5am3DQor5pu+6Yi66IqsDQor5pu+556NDQor5ri45Yqb6KGMDQor5ri45aOr5ryiDQor5ri45aSn57evDQor5ri45LmL5au7DQor5ri45paH5b+XDQor5ri45paH6IGwDQor5ri45LiW5paMDQor5ri45pys5aiBDQor5ri4546J5ae/DQor5ri45YWG5ZCbDQor5ri45ZCb6Iu5DQor5ri45b+X5YGJDQor5ri45p2O6ZuEDQor5ri45Lqe5L+QDQor5ri45L2z5pWPDQor5ri45L2p5YuzDQor5ri45a6X5oayDQor5ri45a6c576kDQor5ri45oCh56WlDQor5ri45piM57+wDQor5ri45piO5YSADQor5ri45qyjDQor5ri46Z2S6ZyPDQor5ri45aWV6ZyWDQor5ri45pS/55KLDQor5ri456eL5oChDQor5ri46Iux5aaCDQor5ri45aif5aifDQor5ri45a626LGqDQor5ri45oGp5pS/DQor5ri454+u562gDQor5ri46auY5p2wDQor5ri45amJ6Z2SDQor5ri45ZWf6LydDQor5ri45reR5aaCDQor5ri45reR5oOgDQor5ri456Wl5p2wDQor5ri45Yex5aqcDQor5ri45Zas5pm6DQor5ri45oOg546yDQor5ri45pmv57+UDQor5ri45pm66LaFDQor5ri45pyd6IicDQor5ri456uj55ubDQor5ri46Iic5YKRDQor5ri46YCy5a+MDQor5ri46ZuF6IqzDQor5ri46ZuF5am3DQor5ri46ZuF562gDQor5ri455Ge6JOuDQor5ri46KOV5b63DQor5ri45qau6I+vDQor5ri45oW26IqzDQor5ri46Lyd56WlDQor5ri45puJ6Iq4DQor5ri46Yyr5a6XDQor5ri46ae/5YGJDQor5ri46Y6u6YKmDQor5ri45427576kDQor5ri45pe75oayDQor5ri455+e55qHDQor5rmv5LiA54+KDQor5rmv5LuK6JitDQor5rmv546J55C0DQor5rmv5b+X5b+gDQor5rmv5L2z57+wDQor5rmv5bKz6LGKDQor5rmv5rK76YKmDQor5rmv5a626LGqDQor5rmv5YGl5paHDQor5rmv5re15a+MDQor5rmv5a+M5qOLDQor5rmv6Kmg55GcDQor5rmv6ZuF5qWTDQor5rmv5oW26YyaDQor5rmv6bS76LOiDQor54Sm5L+h56WlDQor56iL5LmL5a+nDQor56iL5paH6Y2+DQor56iL56uL6LydDQor56iL5b+X5paHDQor56iL5bCa5YmHDQor56iL56eJ6ZGrDQor56iL5aWV5qyjDQor56iL5bu657+wDQor56iL5p+P56ugDQor56iL56eL6JitDQor56iL5YGJ5pS/DQor56iL5amJ5qyjDQor56iL5reR546yDQor56iL5paQ5paHDQor56iL6ZuF5oOgDQor56iL6Kmp5am3DQor56iL5r2U6I+hDQor56iL55OK6JCxDQor56iL6JiK6ZyeDQor56ul5aOr6IqsDQor56ul5byYDQor56ul5a6J5LqoDQor56ul5L+h5ZKMDQor56ul576O5ru/DQor56ul5oOf5pawDQor56ul5rmY6Iq4DQor56ul6IGW5YKRDQor56ul6Z+75aaCDQor56ul54CF6JOJDQor6IiS5am35am3DQor6I+v5ZyL6YuSDQor6KaD5oCd6b2KDQor6LK76aiP6JGzDQor6LOA5Y6a5bmzDQor6LOA55Ge6bqXDQor6LK36I+B6I+vDQor6L6c5L+h56aPDQor6L6c6YOB5LuBDQor6L6c5oOg576kDQor6L6c6Z2c5oChDQor6ZaU5Lu76YGgDQor6Zm95q2j5YWJDQor6Zuy5pm65YuHDQor6aCI5LiK6IuRDQor6aau5YWB5LitDQor6aau5paH5pS/DQor6aau5rC454CFDQor6aau5L2R6ZuEDQor6aau5L2z55CmDQor6aau6ZW36b6NDQor6aau5bu6562MDQor6aau576O54+KDQor6aau5pmJ5ZiJDQor6aau5b2p5aifDQor6aau5Y2a5YGJDQor6aau57+U55GcDQor6aau55Ge6Zm9DQor6aau6KqM6YG1DQor6aau54a+54WSDQor6aau6ICA5paHDQor6buD5LiADQor6buD5LiA5YCrDQor6buD5LmZ5LiKDQor6buD5Yqb6KiADQor6buD5LiK6IqzDQor6buD5Yeh57atDQor6buD5LqO6IqsDQor6buD5LqO54+KDQor6buD5LqO5ZOyDQor6buD5LqO55yfDQor6buD5LqO56aODQor6buD5Y2D6IqzDQor6buD5Y2D5YeMDQor6buD5Y2D6I+vDQor6buD5aOrDQor6buD5aOr5qyjDQor6buD5aOr5Y6fDQor6buD5aOr5bOwDQor6buD5aOr6YeXDQor6buD5aOr5ZiJDQor6buD5aOr6LGqDQor6buD5aOr6LOiDQor6buD5aSn5YCrDQor6buD5a2Q5omNDQor6buD5a2Q5bu6DQor6buD5a2Q5Y2/DQor6buD5a2Q6LuSDQor6buD5a2Q56mGDQor6buD5bCP5L2pDQor6buD5bCP5aifDQor6buD5bGx5bOwDQor6buD5omN5pe6DQor6buD5Lit5YGJDQor6buD5LmL5LqtDQor6buD5LuB5byYDQor6buD5LuB6ImvDQor6buD5LuB5p+PDQor6buD5LuB55KLDQor6buD5YWD5bGxDQor6buD5YWD6ZqGDQor6buD5YWD6ae/DQor6buD5Y+L6KyZDQor6buD5aSp5YGlDQor6buD5bCR6ZuoDQor6buD5b+D5oChDQor6buD5b+D5oChDQor6buD5b+D5oChDQor6buD5b+D5YSADQor6buD5b+D5aeuDQor6buD5paH5q2jDQor6buD5paH5a2dDQor6buD5paH5p2RDQor6buD5paH5oChDQor6buD5paH5L+hDQor6buD5paH5b2lDQor6buD5paH546yDQor6buD5paH55uKDQor6buD5paH5YudDQor6buD5paH6ZqGDQor6buD5paH56W6DQor6buD5paH5qauDQor6buD5paH55KLDQor6buD5paH6b6NDQor6buD5paH6bqSDQor6buD5pel6Z2SDQor6buD5pyI55G+DQor6buD5LiW5a6JDQor6buD5LiW5a6cDQor6buD5LiW5pyLDQor6buD5LiW5aCFDQor6buD5LiW5rmnDQor6buD5LiW5ZiJDQor6buD5LiW5aKeDQor6buD5LiW56mODQor6buD5Lul5ZasDQor6buD5LuV6YGUDQor6buD5Yqg5qyjDQor6buD5Y+v55SEDQor6buD5ben5am3DQor6buD5bmz5a6HDQor6buD5byY5ZCJDQor6buD5byY5q+FDQor6buD5q2j5LiADQor6buD5q2j5a6JDQor6buD5q2j5L2pDQor6buD5q2j5YGJDQor6buD5q2j6aCGDQor6buD5q2j6YyVDQor6buD5rC45LuBDQor6buD5rC45piHDQor6buD5rC45pm6DQor6buD5rC45ryiDQor6buD5rGA5ru/DQor6buD546J5ZCbDQor6buD546J6ZuoDQor6buD546J5aifDQor6buD546J5am3DQor6buD546J6I+BDQor6buD546J55GpDQor6buD546J6JitDQor6buD56uL5paHDQor6buD56uL6IqsDQor6buD56uL6YGUDQor6buD56uL57evDQor6buD5Lqm6JCxDQor6buD5Luy5q2jDQor6buD5Luy54WmDQor6buD5Lu75bu2DQor6buD5YWJ546JDQor6buD5YWJ5ru/DQor6buD5YWG5pWPDQor6buD5YWo5a+MDQor6buD5ZCJ5bu3DQor6buD5ZCN5rGgDQor6buD5aSZ5oWnDQor6buD5aaC55yfDQor6buD5aaC57+wDQor6buD5a6H5bu3DQor6buD5a6I55SwDQor6buD5a6J5b63DQor6buD5pet5byYDQor6buD5pet6LydDQor6buD5rGf55GcDQor6buD55m+54emDQor6buD6IG/5ZCbDQor6buD6Iez5p6wDQor6buD6Iez6bWsDQor6buD5Lyv5bm0DQor6buD5YWL5Lu7DQor6buD5ZCb5oChDQor6buD5aaZ6IqsDQor6buD5a2d5b2wDQor6buD5a6P5LquDQor6buD5a6P6YCyDQor6buD5a6P6ae/DQor6buD5b+X5LuBDQor6buD5b+X5bmzDQor6buD5b+X5oiQDQor6buD5b+X5piODQor6buD5b+X5YGJDQor6buD5b+X5by3DQor6buD5b+X5o+aDQor6buD5b+X6ZuEDQor6buD5b+X5ZiJDQor6buD5b+X6LGqDQor6buD5b+X6YqYDQor6buD5b+X6b6NDQor6buD5p2P5aaCDQor6buD5rKb6IGyDQor6buD56eA546yDQor6buD56eA5a65DQor6buD56eA6I+vDQor6buD56eA6JOJDQor6buD6IKy5L+hDQor6buD6ImvDQor6buD6YKm5b2lDQor6buD5L6d5paHDQor6buD5L2z5YWDDQor6buD5L2z5pilDQor6buD5L2z5aqbDQor6buD5L2z6I+vDQor6buD5L2z5au7DQor6buD5L2z6JWZDQor6buD5L2p5L+QDQor6buD5L2p6JCxDQor6buD5Y2T5ZCbDQor6buD5Z2k5b63DQor6buD5a2f5bCIDQor6buD5a2f5qi1DQor6buD5a6X5Z+6DQor6buD5a6X6LOiDQor6buD5a6c546yDQor6buD5a6b6LKeDQor6buD5bm45YSADQor6buD5b+16Iq5DQor6buD5oCh5ZCbDQor6buD5oCh54+KDQor6buD5oCh6Iy5DQor6buD5oCh6JCNDQor6buD5oCh6I+BDQor6buD5oCh6ZuvDQor6buD5oCh5ZiJDQor6buD5oCh57atDQor6buD5oCh6b2hDQor6buD5om/5b63DQor6buD5piM6byODQor6buD5piO5b+XDQor6buD5piO5b2lDQor6buD5piO55CGDQor6buD5piO55GeDQor6buD5piO5oWnDQor6buD5piV5bWQDQor6buD5p2x5rW3DQor6buD5p2+562gDQor6buD5qyj5oChDQor6buD5qyj5oSJDQor6buD5qyj6JWZDQor6buD5rKz6aCGDQor6buD5rK75bmzDQor6buD546f55G+DQor6buD56eJ6YieDQor6buD6Iqd6I+vDQor6buD6Iq36ZuyDQor6buD6YeR5rmvDQor6buD6YeR5qi5DQor6buD6ZW35r6kDQor6buD5Lqt6JCNDQor6buD5Lqu5YexDQor6buD5L+h5paHDQor6buD5L+h5o23DQor6buD5L+h5qOgDQor6buD5L+h5oS3DQor6buD5L+h5b2wDQor6buD5L+h6YqYDQor6buD5L+h56mODQor6buD5L+h5paMDQor6buD5L+d55KBDQor6buD5L+K55SfDQor6buD5L+K5ZOyDQor6buD5L+K5reHDQor6buD5L+K5YKRDQor6buD5L+K5YKRDQor6buD5L+K5YKRDQor6buD5L+K5YexDQor6buD5L+K5qOLDQor6buD5L+K6IicDQor6buD5L+K6ZqGDQor6buD5L+K56W6DQor6buD5L+K5ZiJDQor6buD5L+K57atDQor6buD5L+K6LGqDQor6buD5L+K6LOiDQor6buD5L+K56mODQor6buD5L+K6b6NDQor6buD5L+K54eBDQor6buD5L+e5paQDQor6buD5Yag5oChDQor6buD5Yag56iLDQor6buD5Yag6ZuFDQor6buD5Yag6LOTDQor6buD5Yag6b6NDQor6buD5YuH5oWnDQor6buD5Y6a55ubDQor6buD5ZOB5YKRDQor6buD5ZOB5q+FDQor6buD5aWV5o+GDQor6buD5aWV6ZyWDQor6buD5ae/5am3DQor6buD5ae/57a+DQor6buD5aiB5YexDQor6buD5aiB6YqYDQor6buD5a6j5YexDQor6buD5a6j56mGDQor6buD5bu65LitDQor6buD5bu65paHDQor6buD5bu66Z2SDQor6buD5bu65YexDQor6buD5bu65pm6DQor6buD5bu656iLDQor6buD5bu66YieDQor6buD5bu65rqQDQor6buD5bu65b2wDQor6buD5bu66LGqDQor6buD5bu66YqYDQor6buD5bu65YuzDQor6buD5bu656mODQor6buD5bu66b6NDQor6buD5b2l5aSqDQor6buD5b2l5by3DQor6buD5b2l5Y2aDQor6buD5b2l55qTDQor6buD5b2l55GcDQor6buD5b2l6LOTDQor6buD5b2l5qi1DQor6buD5b2l5paMDQor6buD5oCd5YexDQor6buD5oCd5ZiJDQor6buD5oCd6LOiDQor6buD5oCd55GLDQor6buD5pS/5Y6fDQor6buD5pS/5o+aDQor6buD5pS/6b6NDQor6buD5pil5aCkDQor6buD5pit5LuBDQor6buD5pit5pm6DQor6buD5pit57atDQor6buD5pig55GEDQor6buD5pix5LitDQor6buD5pix5oS3DQor6buD5pix6b6NDQor6buD5p+P5YWDDQor6buD5p+P5by3DQor6buD5p+P5ZasDQor6buD5p+P57+UDQor6buD5p+P55GeDQor6buD5p+P57a6DQor6buD5p+P55KLDQor6buD5p+P57+wDQor6buD5p+P56ayDQor6buD54K65qOfDQor6buD54Kz5oayDQor6buD54+K6JCNDQor6buD54+A6ZCYDQor6buD55uI5oOgDQor6buD55uI5b2wDQor6buD55u45b+XDQor6buD56eL6IqzDQor6buD56eL6JCNDQor6buD56eL55GbDQor6buD56eL6ZyeDQor6buD576O546JDQor6buD576O546yDQor6buD576O5aifDQor6buD576O576aDQor6buD576O562RDQor6buD576O6ZuvDQor6buD576O6JOJDQor6buD576O54eVDQor6buD6Ie05oGGDQor6buD6Ie06YGgDQor6buD6Iul6JaHDQor6buD6IyC5rqQDQor6buD6Iux5b2lDQor6buD6Iux5YKRDQor6buD6Iux6YqYDQor6buD6KGN5qy9DQor6buD6LKe56mODQor6buD6YOB5LuBDQor6buD6YOB546rDQor6buD6YOB54+KDQor6buD6YOB6IyXDQor6buD6YOB5am3DQor6buD6YOB5qOgDQor6buD6YOB6ZuvDQor6buD6YOB6Z2cDQor6buD6YeN5YexDQor6buD6Z+L55CqDQor6buD6Z+L5YuzDQor6buD6aaZ5qaVDQor6buD5YCJ5b2lDQor6buD5ZOy5qWTDQor6buD5a2r5a6HDQor6buD5a6254+NDQor6buD5a626ZqGDQor6buD5a6257evDQor6buD5bO75bSiDQor6buD5bqt6Yi6DQor6buD5oyv55SrDQor6buD5oyv5bqtDQor6buD5oyv6KqgDQor6buD5oyv55GyDQor6buD5pu45a+FDQor6buD5pu46Yi6DQor6buD5rOw5bSRDQor6buD5rOw6ZyWDQor6buD5rWp5aSpDQor6buD5rWp6YieDQor6buD54+u6Iq4DQor6buD54+u5aifDQor6buD54+u6IiSDQor6buD54+u55GcDQor6buD55uK5bu6DQor6buD56WW6LOiDQor6buD57Sg55yfDQor6buD57SU576ODQor6buD6IO96LGQDQor6buD6YeX5L+KDQor6buD5YGJ5a6ZDQor6buD5YGJ5L+uDQor6buD5YGJ5bOwDQor6buD5YGJ5YKRDQor6buD5YGJ6KqgDQor6buD5YGJ6YqYDQor6buD5YGl5aWHDQor6buD5YGl5pmPDQor6buD5YGl5rqiDQor6buD5Yew5oWIDQor6buD5ZyL5YWoDQor6buD5ZyL6IqzDQor6buD5ZyL5YCrDQor6buD5ZyL5bGVDQor6buD5ZyL5pmJDQor6buD5ZyL6LuSDQor6buD5ZyL5qOfDQor6buD5ZyL6YieDQor6buD5ZyL6KOVDQor6buD5ZyL5qauDQor6buD5ZyL6LGqDQor6buD5ZyL6ZCYDQor6buD5aCC6LuSDQor6buD5Z+55bO7DQor6buD5Z+56YqYDQor6buD5amJ6LKeDQor6buD5amJ6I+BDQor6buD5bCJ57+UDQor6buD5bSH6KiTDQor6buD5bSH6YqYDQor6buD5bi45qi5DQor6buD5b2p6YqYDQor6buD5oOf6IGWDQor6buD5ZWf5a6PDQor6buD5ZWf5L+uDQor6buD5ZWf5pu4DQor6buD5ZWf5b2wDQor6buD5pWPDQor6buD5pWP5L+uDQor6buD5pWP6I+vDQor6buD5pWP5oWnDQor6buD5qKF546yDQor6buD5re76JmODQor6buD5riF5rOwDQor6buD5riF6bqfDQor6buD5reR5bKRDQor6buD5reR6IqsDQor6buD5reR546yDQor6buD5reR6LKeDQor6buD5reR5Y2/DQor6buD5reR5qGDDQor6buD5reR5qKFDQor6buD5reR5aqbDQor6buD5reR55CqDQor6buD5reR6I+vDQor6buD5reR6ZuvDQor6buD5reR55SEDQor6buD5reR6Z2cDQor6buD5re16LOiDQor6buD55qODQor6buD56Wl5oGpDQor6buD56Wl5paMDQor6buD57S56JCxDQor6buD6I6JDQor6buD6I6J5aifDQor6buD6I6J55CqDQor6buD6I6J5ZiJDQor6buD6YCU5beWDQor6buD6Zuq6bOzDQor6buD5YKR5paHDQor6buD5Yex5aiBDQor6buD5Yex55CqDQor6buD5Yex6bqfDQor6buD5Yud5b+XDQor6buD5Yud6KOVDQor6buD5Y2a5rOwDQor6buD5Zac6bqfDQor6buD5aCv5YGJDQor6buD5am35am3DQor6buD5a+MDQor6buD5a+M6KmzDQor6buD5b6p6IGwDQor6buD5oOg5ZCbDQor6buD5oOg6IqsDQor6buD5oOg54+NDQor6buD5oOg5ailDQor6buD5oOg5pWPDQor6buD5oOg55C0DQor6buD5oOg5YukDQor6buD5oOg6KmpDQor6buD5oOg6ZyeDQor6buD5o+a5ZCNDQor6buD5pav6ae/DQor6buD5pmv6KOVDQor6buD5pm65YuHDQor6buD5pm65YGJDQor6buD5pm65bq3DQor6buD5pm66ZqGDQor6buD5pm66YqYDQor6buD5pm655GLDQor6buD5pyd55C0DQor6buD5pyd5qiRDQor6buD5qSN5oeLDQor6buD5rmY5benDQor6buD5rmY5am3DQor6buD5rid6IqzDQor6buD55Cq5am3DQor6buD55Cz6YieDQor6buD55Cm5qO7DQor6buD55m76Y21DQor6buD56uj5Y2XDQor6buD562R6Yi6DQor6buD5ZaE5pqJDQor6buD6IiS5b2lDQor6buD6Iic5b+gDQor6buD6I+B6JaHDQor6buD6I+K6IuxDQor6buD6Kmg55GeDQor6buD6LK05aCCDQor6buD6YC4DQor6buD6YC457SUDQor6buD6YC455GLDQor6buD6Yie5rKBDQor6buD6ZaU6L6yDQor6buD6ZuF5ZCbDQor6buD6ZuF6IqzDQor6buD6ZuF5rSlDQor6buD6ZuF546yDQor6buD6ZuF5Y2/DQor6buD6ZuF5reRDQor6buD6ZuF6ZuqDQor6buD6ZuF5oOgDQor6buD6ZuF55CqDQor6buD6ZuF55C0DQor6buD6ZuF6JCNDQor6buD6ZuF6ZuvDQor6buD6ZuF6JCxDQor6buD6ZuF6Yi0DQor6buD6ZuF5oWnDQor6buD6ZuF6b2hDQor6buD6Zuv546JDQor6buD6Zuv562gDQor6buD6aCG5ZCJDQor6buD5YKz5ZyNDQor6buD5buJ5pm6DQor6buD5oSP6Iy5DQor6buD5oSP6LaFDQor6buD5oWI5au6DQor6buD5pWs5YWDDQor6buD5pWs5paMDQor6buD5pqJ5paHDQor6buD5qW356W6DQor6buD5qaG5am3DQor6buD5q+T57+ODQor6buD5q+T6I+vDQor6buD5rqQ55KLDQor6buD54Wn5YexDQor6buD54Wm6ZuwDQor6buD55Gf6Iq4DQor6buD55Ge5Ly2DQor6buD55Ge5bGPDQor6buD55Ge56WlDQor6buD55Ge6Zm9DQor6buD55Ge6IiIDQor6buD55Gc5reRDQor6buD55uf5YexDQor6buD56W66IqsDQor6buD562g55yfDQor6buD576p5ZCbDQor6buD576p6YqYDQor6buD576k6ZuEDQor6buD6IGW5ZyzDQor6buD6IGW5ZOyDQor6buD6IGW5YKRDQor6buD6IGW5qO7DQor6buD6IGW6bS7DQor6buD6KOV5LitDQor6buD6KOV5a6cDQor6buD6KOV55ubDQor6buD6KOV57+UDQor6buD6KOV5pi2DQor6buD6Kmp6Iq4DQor6buD6Kmp6Iy5DQor6buD6Kmp5ra1DQor6buD6Kmp5oOgDQor6buD6Kmp6ZuvDQor6buD6Kmp6JiLDQor6buD6YGT5YWoDQor6buD6Yi055CqDQor6buD6ZuL55CmDQor6buD6Z2W6Iq4DQor6buD6Z2W5oOgDQor6buD6Z2W6ZuvDQor6buD6byO6IO9DQor6buD5ZiJ5rCRDQor6buD5ZiJ5YuHDQor6buD5ZiJ5YCrDQor6buD5ZiJ6ZuqDQor6buD5ZiJ6JCxDQor6buD5ZiJ6LOiDQor6buD5qau5bGxDQor6buD5qau6aCGDQor6buD5ryi5YWJDQor6buD5ryi6LydDQor6buD552/5Ly4DQor6buD56Kn6ZuyDQor6buD56aO5oW2DQor6buD57atDQor6buD57at5pm6DQor6buD6IKH5a6PDQor6buD6YGg5a6PDQor6buD6YqY5YGJDQor6buD6YqY6LydDQor6buD6a2B5b2sDQor6buD5YSA5ZCbDQor6buD5b6356eADQor6buD5b6354WSDQor6buD5oW26I+vDQor6buD5oWn546JDQor6buD5oWn6IqsDQor6buD5oWn5aifDQor6buD5oWn6Iy5DQor6buD5oWn6I+BDQor6buD5oWn56aODQor6buD5r6E5YGJDQor6buD6JSa5LuBDQor6buD6LOi56ugDQor6buD6ZyH5a6HDQor6buD5oay5b6XDQor6buD5oa26I+BDQor6buD5puJ5L2pDQor6buD5puJ6Z+zDQor6buD5puJ6I+xDQor6buD5puJ6JaHDQor6buD54eV5ailDQor6buD6IiI5YWDDQor6buD6JWZ6JCNDQor6buD6Yya5pqJDQor6buD6Yym56ugDQor6buD6Z2c5a2QDQor6buD6Z2c5a6cDQor6buD6Z2c5oChDQor6buD6Z2c6I6JDQor6buD6b6N5LiADQor6buD5oeJ55K/DQor6buD6IGw55CqDQor6buD6JaH55OKDQor6buD6ae/6YGUDQor6buD6bS75pm6DQor6buD56au5Ly4DQor6buD6Jaw55GpDQor6buD6ZuZ546JDQor6buD5oe35oW2DQor6buD54Ca5b63DQor6buD55OK5aaDDQor6buD55OK6I+vDQor6buD55OK5YSADQor6buD55OK5YSADQor6buD55OK5oWnDQor6buD55OK5oWnDQor6buD55OK6Kq8DQor6buD55OK5au6DQor6buD6Y+h55SfDQor6buD6Z+75aaCDQor6buD6Z+76Z+7DQor6buD6bWs5ZyWDQor6buD6bqX5aaDDQor6buD6bqX6IqsDQor6buD6bqX6aaZDQor6buD6bqX5a65DQor6buD6bqX6JOJDQor6buD6bqX6YyaDQor6buD5a+2546JDQor6buD5a+25YSADQor6buD5a+256i5DQor6buD54276KuEDQor6buD57m85aKeDQor6buD6ICA5paHDQor6buD6ICA5L+KDQor6buD6ICA5b63DQor6buD6ICA55GpDQor6buD6ICA6LydDQor6buD6K2w5b63DQor6buD6ZCY6JGmDQor6buD6aao5oChDQor6buD6aao5YSADQor6buD6aao5oWnDQor6buD6aao5q+FDQor6buD6aao6ZyIDQor6buD6b2h6JCxDQor6buD6Jit546JDQor6buD6ZC16LGqDQor6buD6aGv5am3DQor6buD6Im3546JDQor6buD546g5pmfDQor6buD5ae155GEDQor6buD5pi25paMDQor6buD5YuW6LuSDQor6buD55CH6IuTDQor6buD57+K5a64DQor6buD5qOW5ZCJDQor6buD55Cu5a+MDQor6buD55Cs5ZCbDQor6buD55Cs5am3DQor6buD55Cs6ZuvDQor6buD55Cs55GCDQor6buD6I+A6Yi0DQor6buD5pqQ552/DQor6buD55GL5qyjDQor6buD55GL5a+nDQor6buD562x6Iq4DQor6buD562x5ZasDQor6buD562x6ZuBDQor6buD562x6JiLDQor6buD6Yi65aifDQor6buD6Yi65am3DQor6buD6Yi65am3DQor6buD6Yi65paQDQor6buD6Yi66ZuvDQor6buD6Ymm6ZaUDQor6buD556NDQor6buD6JaP5r6EDQor6buD6Ky16KqqDQor6buD6b2gDQor5aGX5ben5oa2DQor5aGX5pmC6ZuoDQor5aGX5aqE6ZuyDQor5qWKDQor5qWK5Lq656mODQor5qWK5LiJ6LOiDQor5qWK5Y2D6YeMDQor5qWK5Y2D5oWnDQor5qWK5aOr5byYDQor5qWK5aOr5pyLDQor5qWK5aOr5q+FDQor5qWK5aOr6LOiDQor5qWK5aSn5q+FDQor5qWK5a2Q5oGGDQor5qWK5a2Q5q+FDQor5qWK5a2Q55GiDQor5qWK5bCP5oWnDQor5qWK5Lit5a2aDQor5qWK5LmL5oWnDQor5qWK5LuB6I+vDQor5qWK5LuL5paHDQor5qWK5YWB5LitDQor5qWK5b+D5oChDQor5qWK5b+D5b63DQor5qWK5paH5a6PDQor5qWK5paH5p2wDQor5qWK5paH5aqbDQor5qWK5paH55GeDQor5qWK5paH5YSADQor5qWK5paH55GLDQor5qWK5LiW5bmzDQor5qWK5LiW5YexDQor5qWK5LiW6bWsDQor5qWK5LuV6aaoDQor5qWK5Y+v5q2GDQor5qWK5byY5YWIDQor5qWK5pys6IGWDQor5qWK5q2j5b2sDQor5qWK5rC45q2jDQor5qWK5rC455CmDQor5qWK546J5ZCbDQor5qWK546J6byODQor5qWK55m96a+oDQor5qWK56uL576kDQor5qWK5Luy5rCRDQor5qWK5YWG5qy9DQor5qWK5aaD5am3DQor5qWK5a6I5Z+ODQor5qWK5peo56WlDQor5qWK6Ieq6ZuEDQor5qWK5Ly25oWnDQor5qWK5aaZ5oGpDQor5qWK5a6P56WlDQor5qWK5b+X5bmzDQor5qWK5b+X6IO9DQor5qWK5b+X5YGJDQor5qWK5b+X56WlDQor5qWK5b+X6ZuNDQor5qWK5b+X5a24DQor5qWK5rKb6JKUDQor5qWK56eA54+gDQor5qWK56eA5oWnDQor5qWK6IKy55yfDQor5qWK6IKy5YSSDQor5qWK5Lqe55CmDQor5qWK5L2z5qyjDQor5qWK5L2z5bGVDQor5qWK5L2z6I+BDQor5qWK5L2z5pKwDQor5qWK5L2z6J6iDQor5qWK5L2p54+KDQor5qWK5L2p5YSSDQor5qWK5YW254CaDQor5qWK5Z2k6IuxDQor5qWK5aWH5oOgDQor5qWK5a2f5L+uDQor5qWK5a2f6JOJDQor5qWK5a2f57+wDQor5qWK5a6XDQor5qWK5a6X5YCNDQor5qWK5a6X5aCvDQor5qWK5a6X5YSSDQor5qWK5a6X56mODQor5qWK5a6X57+wDQor5qWK5a6X54OcDQor5qWK5a6c5paHDQor5qWK5a6c55KLDQor5qWK5a6c6JOBDQor5qWK5bCa6KiTDQor5qWK5bCa6J6NDQor5qWK5bKx5YSSDQor5qWK5b+g5LuBDQor5qWK5b+g5oayDQor5qWK5oCh6IqzDQor5qWK5oCh6JCNDQor5qWK5om/DQor5qWK5om/54a5DQor5qWK5piT5YCrDQor5qWK5piM6LOTDQor5qWK5piG6ZyWDQor5qWK5piO5p2wDQor5qWK5piO57SUDQor5qWK5piO6KqgDQor5qWK5piO5a+wDQor5qWK5piO56anDQor5qWK5piH5qi6DQor5qWK5p2x5pWPDQor5qWK5p2+6YqYDQor5qWK5qyj5oChDQor5qWK5qyj54+uDQor5qWK5qyj54eVDQor5qWK5rOT6KSYDQor5qWK56eJ6aCGDQor5qWK6Iqz6ZuEDQor5qWK6Iq4DQor5qWK6YeR55KLDQor5qWK6ZW35r2UDQor5qWK6Z2S5bOwDQor5qWK5L+K5a6PDQor5qWK5L+K6LydDQor5qWK5aWV5pi2DQor5qWK5bu65b2lDQor5qWK5oCd6ZuLDQor5qWK5pS/5b2sDQor5qWK5pS/5YuzDQor5qWK5pS/6ZyWDQor5qWK5pit6LydDQor5qWK54K66IicDQor5qWK56eL55S3DQor5qWK57SA6Iq4DQor5qWK576O546yDQor5qWK576O5oOgDQor5qWK576O6JedDQor5qWK6IuR5YipDQor5qWK5YCpDQor5qWK5ZOy5a6JDQor5qWK5ZOy6YqYDQor5qWK5a625piODQor5qWK5a6256W6DQor5qWK5a626YqYDQor5qWK5a6255GLDQor5qWK5oGt5rKbDQor5qWK5oyv5a6XDQor5qWK5oyv5ryiDQor5qWK5pmP6I+BDQor5qWK5pu46LGqDQor5qWK5raT5qu7DQor5qWK54+u5ZCbDQor5qWK54+u55CmDQor5qWK55yf54+gDQor5qWK57Sg5Y2/DQor5qWK6I2Q57+UDQor5qWK6JmU6ZuFDQor5qWK5YGJ5paHDQor5qWK5YGJ55CqDQor5qWK5YGl5ZyLDQor5qWK5ZyL5p2+DQor5qWK5ZyL6byODQor5qWK5Z+55oGpDQor5qWK5amJ6I6JDQor5qWK5bSH6ZGrDQor5qWK5oOf55m9DQor5qWK5ZWf5a6PDQor5qWK5pWP6IqzDQor5qWK5qK15a2bDQor5qWK5rez56GvDQor5qWK5riF5qGDDQor5qWK5reR5YWDDQor5qWK5reR5L2zDQor5qWK5reR6IqsDQor5qWK5reR576ODQor5qWK5reR5pWPDQor5qWK5reR5oOgDQor5qWK5reR6JCNDQor5qWK5reR6ZuFDQor5qWK5reR5oWnDQor5qWK5re15YudDQor5qWK5reo6IqdDQor5qWK55ub5paMDQor5qWK6I6J6IqzDQor5qWK6Zuq6ZuFDQor5qWK5Yex5LuyDQor5qWK5Yex5YKRDQor5qWK5Yex6YieDQor5qWK5Yud5a6HDQor5qWK5Yud5paQDQor5qWK5Yub5YexDQor5qWK5Y2a5a6HDQor5qWK5Y2a5qy9DQor5qWK5Za76ZaUDQor5qWK5aO56IiSDQor5qWK5am36YieDQor5qWK5a+M5a6JDQor5qWK5a+M55CbDQor5qWK5b6q5am3DQor5qWK5oOg5a6HDQor5qWK5oOg55yfDQor5qWK5oOg5am3DQor5qWK5oOg55CzDQor5qWK5oOg6ZuvDQor5qWK5pWm5YKRDQor5qWK5pav5YexDQor5qWK5pmv5YWDDQor5qWK5pmv5aCvDQor5qWK5pmv6ZuvDQor5qWK5pm65YWDDQor5qWK5pm65a6PDQor5qWK5pm65YKRDQor5qWK5pm65aCvDQor5qWK5pm65ZaEDQor5qWK5pm66YieDQor5qWK5pm66b6NDQor5qWK5pyd5pWPDQor5qWK5pyd6IicDQor5qWK5qOu55m8DQor5qWK5rmn6KmVDQor5qWK55m75a6JDQor5qWK55qT55GLDQor5qWK562W6IiqDQor5qWK5ZaE5oOgDQor5qWK6IiS5biGDQor5qWK6IiS5aqbDQor5qWK6IiS6ZuvDQor5qWK6Iic5qy9DQor5qWK6I+B6IqsDQor5qWK6I+x6ZuFDQor5qWK6Kmg6I+YDQor5qWK6LK05aqbDQor5qWK6YC46I6JDQor5qWK6Yie55m+DQor5qWK6ZaU57+UDQor5qWK6ZuF546JDQor5qWK6ZuF6IqzDQor5qWK6ZuF5YCrDQor5qWK6ZuF5reRDQor5qWK6ZuF5am3DQor5qWK6ZuF5am3DQor5qWK6ZuF5bWQDQor5qWK6ZuF5oOgDQor5qWK6ZuF5pm2DQor5qWK6ZuF57+UDQor5qWK6ZuF6LaFDQor5qWK6ZuF6ZuvDQor5qWK6ZuF6ZuyDQor5qWK6ZuF6IycDQor5qWK6Zuv5oOgDQor5qWK6Zuy57+UDQor5qWK6aCG5qOLDQor5qWK5oWI5YSADQor5qWK5q+T546yDQor5qWK54Wl56ugDQor5qWK55Ge5YKRDQor5qWK6JCs5biGDQor5qWK6KOVDQor5qWK6Kmp6LuSDQor5qWK6YGT5b+gDQor5qWK5ZiJ546yDQor5qWK5ZiJ55GcDQor5qWK5ZiJ6LGQDQor5qWK5qau5ZCJDQor5qWK5qeQ6aeSDQor5qWK56Kn6ZuvDQor5qWK57at6I+vDQor5qWK6LaZ6YqYDQor5qWK6YqY6aGnDQor5qWK5b635b+XDQor5qWK5oW26ZqGDQor5qWK5oWn546yDQor5qWK5oWn55OKDQor5qWK55KLDQor5qWK6ZyH5YGJDQor5qWK5oay5piHDQor5qWK5puJ6Z2SDQor5qWK5puJ6I+BDQor5qWK5qmL6ZyWDQor5qWK54eV6ZuyDQor5qWK6JWZ6IqzDQor5qWK6JWZ5ZiJDQor5qWK6Yyr5oayDQor5qWK6Z2c5aaCDQor5qWK6Z2c5oChDQor5qWK6Z2c6ZuvDQor5qWK5oi05beeDQor5qWK54i16ae/DQor5qWK6ae/5rCRDQor5qWK5puc5rqWDQor5qWK56SO6YGgDQor5qWK57mh57a+DQor5qWK6LGQ5YWoDQor5qWK6LGQ6YqYDQor5qWK6Y6u6YGgDQor5qWK6aal6KqgDQor5qWK55OK6I+vDQor5qWK6bqX5YagDQor5qWK6bqX55C0DQor5qWK5pum55CzDQor5qWK6ZCY6YmJDQor5qWK6Z2I6IuTDQor5qWK6Iyc5Y2JDQor5qWK55CH5aaCDQor5qWK55CH5aqbDQor5qWK57+K54+uDQor5qWK55Cs5am3DQor5qWK55GL55CmDQor5qWK6JOB6JOBDQor5qWK6Y6n5LyKDQor5rqr5LiI57evDQor5rqr5b+D5bWQDQor5rqr5q2j6b6NDQor5rqr6Iez5Lu7DQor5rqr56eA5oChDQor5rqr5a6XDQor5rqr5om/57+wDQor5rqr6YeR55GeDQor5rqr5bu66IGyDQor5rqr6Iul5am3DQor5rqr5bGV6I+vDQor5rqr57Sg5qKFDQor5rqr5Z+56Z2SDQor5rqr5reR5oChDQor5rqr5YexDQor5rqr5pm66YCjDQor5rqr6ZuF5riFDQor5rqr6IGW5bu2DQor5rqr6YqY5ZOyDQor5rqr5puJ6I+vDQor5rqr6aal6YGgDQor5rqr6I+Y5ridDQor6JCs5L2z5piVDQor6JCs5bu65piODQor6JCs5pWP5amJDQor6JCs5puJ5piODQor6JGJ5LiB5rqQDQor6JGJ5LmD56aODQor6JGJ5Lq66LOTDQor6JGJ5Y+I5ZiJDQor6JGJ5Y2D6I+KDQor6JGJ5aOr5pawDQor6JGJ5aSn6JGmDQor6JGJ5a2Q6LGqDQor6JGJ5bGx6I+vDQor6JGJ5aSp5bCHDQor6JGJ5paH5YGJDQor6JGJ5paH6b6NDQor6JGJ5LiW5rCRDQor6JGJ5Luj5qyKDQor6JGJ5q2j6IGWDQor6JGJ546J546yDQor6JGJ5Lqm55ubDQor6JGJ5YWJ5oSJDQor6JGJ5ZCR6Zm9DQor6JGJ5aaC6ZuvDQor6JGJ56u56IKyDQor6JGJ5L2Q6ae/DQor6JGJ5a6P5YKRDQor6JGJ5b+X5b2lDQor6JGJ5b+X5Y2aDQor6JGJ5q2l5pe7DQor6JGJ56eA5qKFDQor6JGJ6IKy5bOwDQor6JGJ5L6d6Z2SDQor6JGJ5L2z5qyjDQor6JGJ5L2z6I+BDQor6JGJ5L2z5YuzDQor6JGJ5L2p55yfDQor6JGJ5aWJ5p2wDQor6JGJ5a2f5aCvDQor6JGJ5a6X5pm6DQor6JGJ5a6X6ZGrDQor6JGJ5a6b6LuSDQor6JGJ5b+g5qyjDQor6JGJ5oCh5ZCbDQor6JGJ5oCh6IqzDQor6JGJ5om/5rOTDQor6JGJ5piM5YCrDQor6JGJ5piO5piHDQor6JGJ5piO5peLDQor6JGJ5piO6ZGrDQor6JGJ5p2+54KrDQor6JGJ5qyj5q+TDQor6JGJ546f5ZCbDQor6JGJ6Iqz5Ly2DQor6JGJ6Iqz6JCNDQor6JGJ6Iq35aaYDQor6JGJ6ZW36Z2SDQor6JGJ5Lqt5b+XDQor6JGJ5L+h5bu3DQor6JGJ5L+K5a6PDQor6JGJ5L+K55SrDQor6JGJ5L+K5oW2DQor6JGJ5L+e5p2JDQor6JGJ5Yag5oWnDQor6JGJ5aWV57atDQor6JGJ5ae/5aaPDQor6JGJ5bu65ZCbDQor6JGJ5bu65piHDQor6JGJ5b2l5b+XDQor6JGJ5oCd5YSADQor6JGJ5pS/6LydDQor6JGJ5pit5Ly2DQor6JGJ5pix5b+XDQor6JGJ5p+P57axDQor6JGJ546y5bKRDQor6JGJ56eL5pyIDQor6JGJ576O5aifDQor6JGJ6Ie05b+gDQor6JGJ6KGN5a2cDQor6JGJ6YOB6I+BDQor6JGJ5YCpDQor6JGJ5ZOy5YWoDQor6JGJ5a625a6HDQor6JGJ5a626Yi0DQor6JGJ5a625YSSDQor6JGJ5bO76LOTDQor6JGJ5oyv56aPDQor6JGJ5pmJ5ZiJDQor6JGJ5pu455GLDQor6JGJ5raT5raTDQor6JGJ55uK5piHDQor6JGJ57Sg57a+DQor6JGJ6IC/6b2KDQor6JGJ5YGl5YGJDQor6JGJ5ZyL6LOiDQor6JGJ5by15bu6DQor6JGJ5qyy5oGSDQor6JGJ5reR54+NDQor6JGJ5reR6Yi0DQor6JGJ57S55Lu7DQor6JGJ5Yud546EDQor6JGJ5oOg5paHDQor6JGJ5oOg56aODQor6JGJ5pm65LuBDQor6JGJ5qOu5ridDQor6JGJ6Kmg5pm0DQor6JGJ6ZuB55SEDQor6JGJ6ZuF5am3DQor6JGJ6ZuF6ZuvDQor6JGJ6Zuy6bWsDQor6JGJ5q+T5bOwDQor6JGJ576p5p2+DQor6JGJ6Yi054+KDQor6JGJ5ZiJ6I+vDQor6JGJ552/5ZOyDQor6JGJ6YqY5piMDQor6JGJ5YSA6IqzDQor6JGJ5oWn5qyjDQor6JGJ5r2U5oGpDQor6JGJ5puJ6IqsDQor6JGJ5qi56ZaLDQor6JGJ6JWZ6IqzDQor6JGJ6Yym6bOzDQor6JGJ5puZ5oW2DQor6JGJ6ae/6YC4DQor6JGJ56au57atDQor6JGJ55OK5paHDQor6JGJ5a+25aOsDQor6JGJ6aiw6YGgDQor6JGJ6amlDQor6JGJ54606LGqDQor6JGJ55Ck5oChDQor6JGJ5oeM6aaoDQor6JGb5LiW6JCxDQor6JGb5YCp5aaCDQor6JGj5Lq65a6PDQor6JGj5a2Q6Z2SDQor6JGj5ben546yDQor6JGj5ZCI5oGpDQor6JGj5b+X5LuBDQor6JGj5L2z6LGqDQor6JGj5oCh5ZCbDQor6JGj6Iqz6YqYDQor6JGj5ae/5YipDQor6JGj5b2l5a6PDQor6JGj56eL55G+DQor6JGj5L+u6YqYDQor6JGj5oyv6ZuEDQor6JGj6IO955GeDQor6JGj5oOg6IqzDQor6JGj6IGW57ejDQor6JGj5oWn576ODQor6JGj6bS75qWgDQor6JGj5bai5rOTDQor6KOY5YWD5oS3DQor6Kej576O6Yi0DQor6Km55LqO6IqzDQor6Km55a2Q5rCRDQor6Km55LuB5ZiJDQor6Km55paH56WlDQor6Km55LiW5YKRDQor6Km55rC456WlDQor6Km556uL5oiQDQor6Km55aaC6YiQDQor6Km55a6P5b2sDQor6Km55b+X6bS7DQor6Km56IKy6ZuvDQor6Km55L2z5oyvDQor6Km55L2z6IiIDQor6Km55L2p56mODQor6Km55a2f5pmDDQor6Km55a6X5oayDQor6Km55a6c57SLDQor6Km55b+g5qauDQor6Km55piM5ZCJDQor6Km55piO5r2UDQor6Km55qyj5a6cDQor6Km56Z2S6Im3DQor6Km55YmN5rOwDQor6Km55pS/5bOwDQor6Km5576O54+NDQor6Km55Y2/6Iu5DQor6Km55a626YqTDQor6Km55rWa5piHDQor6Km555uK5YGJDQor6Km555uK6YqYDQor6Km56IyX6Iq4DQor6Km55amJ5ZCbDQor6Km55ZWf57evDQor6Km55reR5aaDDQor6Km55reR6JCNDQor6Km55reR6IqpDQor6Km55Yex5o23DQor6Km55Yud5qy9DQor6Km55a+M5pm6DQor6Km55oOg5aqbDQor6Km55pmv5aCvDQor6Km55pm65YKRDQor6Km55qOuDQor6Km557+U5Lu7DQor6Km56Ki85a+MDQor6Km56Yie57atDQor6Km56ZuF5am3DQor6Km56ZuF6ZaUDQor6Km56Zuv55GpDQor6Km5576k5q+FDQor6Km55ZiJ55K/DQor6Km55b636aaoDQor6Km55Yuz5piODQor6Km556mO6JCNDQor6Km555Ko5ba4DQor6Km56LGQ5a6HDQor6Km56bWR5bm0DQor6Km5546T55GLDQor6Km555Cs5ridDQor6LOH5ZCb5YSADQor6LOI5rK75ZyLDQor6LOI5oSb546rDQor6LOI6auQ5oabDQor6YSS5LiA5LuyDQor6YSS5paH6ZqGDQor6YSS56uL5b2lDQor6YSS5p2O5piMDQor6YSS5L2z6I+vDQor6YSS5a6X6I+vDQor6YSS5piO5Y6fDQor6YSS6YeR5b63DQor6YSS5ZyL6b6NDQor6YSS5pm65LuBDQor6YSS5paw5YWoDQor6YSS57at5YmbDQor6YSS6Z2c54+uDQor6ZuN5pWm5YWDDQor6Zu35a6c5bqtDQor6Zu36KGN6IiIDQor6Zu35oOg55CmDQor6Zu36ZuF6I+BDQor6Zu36bWs56iLDQor5buW5LiB6YC4DQor5buW5LqO5paHDQor5buW5Y2D5oWnDQor5buW5aOr5aCvDQor5buW5aSn5qifDQor5buW5bCP6I+vDQor5buW5LuB56a+DQor5buW5YWD5YipDQor5buW5YWB6Z2WDQor5buW5paH5bmzDQor5buW5paH6Iy5DQor5buW5paH6KmVDQor5buW5paH55SEDQor5buW5paH5r2UDQor5buW5pyI6KeADQor5buW5LuV57a6DQor5buW5pys5YWDDQor5buW5q2j5YGJDQor5buW546JDQor5buW546J6JCNDQor5buW5Lie5pmeDQor5buW5YWJ6LydDQor5buW5a6I5q2jDQor5buW5Lyv55KLDQor5buW5ZCr5r2UDQor5buW5a6P5oWIDQor5buW5b+X5rCRDQor5buW5b+X5YGJDQor5buW5b+X6YGgDQor5buW56eA5Y2/DQor5buW6IKy6ImvDQor5buW6Imv5reuDQor5buW5L2z546lDQor5buW5L2p5aaCDQor5buW5L2p6bOzDQor5buW5a6X5bGxDQor5buW5a6c576kDQor5buW5oCh546yDQor5buW5oCh5pmvDQor5buW5om/5oW2DQor5buW5piO5YSADQor5buW5qyj5YSADQor5buW6Iqz546yDQor5buW6Iqd5aCFDQor5buW6Z2S5p2+DQor5buW5L+h5a+sDQor5buW5L+K5YKRDQor5buW5L+K5qy9DQor5buW5Yag576ODQor5buW5aWV5Lu7DQor5buW5ae/5q+TDQor5buW5bu65Z+ODQor5buW5bu66YieDQor5buW5b2l5YexDQor5buW5oGG5q+FDQor5buW5pil6I+KDQor5buW5pix5qi5DQor5buW54Kz54ScDQor5buW55uI5aWHDQor5buW56eL5oChDQor5buW576O546yDQor5buW576O55CzDQor5buW6IyC6ImvDQor5buW6Iux55S3DQor5buW6Iux5YKRDQor5buW6IuR5ZCbDQor5buW6L+w6IyCDQor5buW6YOB5am3DQor5buW5YCp5a6cDQor5buW5Y2/5oOgDQor5buW5ZOy6KuWDQor5buW5a62546yDQor5buW5a625a+nDQor5buW5a6255GpDQor5buW5a625amnDQor5buW5bO75q+FDQor5buW5oGp5oWIDQor5buW5oyv6ImvDQor5buW5oy65bS0DQor5buW5pu454+uDQor5buW5qGC5ZCbDQor5buW5rWa5a6PDQor5buW54+u5ZCbDQor5buW54+u546rDQor5buW54+u5oSbDQor5buW55uK576kDQor5buW57Sg5Y2/DQor5buW6ICV6LydDQor5buW5Lm+5oiQDQor5buW5YGJ5oiQDQor5buW5YGJ6L6wDQor5buW5YGJ5pavDQor5buW5YGJ6bS7DQor5buW5YGl5piODQor5buW5YGl6YqYDQor5buW5ZyL5a6PDQor5buW5ZyL5YubDQor5buW5ZyL6I+vDQor5buW5Z+65a6PDQor5buW5Z+555GcDQor5buW5amJ5YipDQor5buW5amJ5qyjDQor5buW5a+E6JCNDQor5buW5bSH56KpDQor5buW5bq36ZyWDQor5buW5oOH5rK7DQor5buW5ZWf6ImvDQor5buW5pWP5rGdDQor5buW5pWP546yDQor5buW5qKT6IycDQor5buW5reR5ZCbDQor5buW5reR6LKeDQor5buW5reR5oOgDQor5buW5reR6bqXDQor5buW56Wl6YGUDQor5buW6LKr54+uDQor5buW56ug5qOLDQor5buW5a+M55SwDQor5buW5oOg5aifDQor5buW5pm66LydDQor5buW55Cq576ODQor5buW6IiS5YSADQor5buW6YCy5bmzDQor5buW6ZuF5YCpDQor5buW6aCG5biGDQor5buW5qW35paHDQor5buW562g5oChDQor5buW6JCx6Iq5DQor5buW5Ze+DQor5buW5ZiJ6Zm9DQor5buW5ryi6byODQor5buW57at54+NDQor5buW6YqY5LuBDQor5buW5oW26LOADQor5buW5oWn6ZuvDQor5buW55Gp55KHDQor5buW5oay5aCCDQor5buW5puJ5oWnDQor5buW6Yym55GcDQor5buW5pOO5biGDQor5buW5puc55GpDQor5buW6bqS6ZaUDQor5buW6ICA5p2xDQor5buW6aGv5oW2DQor5buW5YGy5aakDQor5buW5paM5YKRDQor5buW6Yi66YqYDQor5ryi6L+w5LuBDQor54aK56uL5pawDQor54aK5p2x5aKeDQor54aK5YeM6ZyGDQor54aK5bSH57evDQor54aK5Yuk5LqRDQor55SE5oWn5piODQor566h5bm85LuyDQor566h6YeR546yDQor566h55Cq6Iq4DQor57+f5pWm5pWPDQor6Ie65paH54WnDQor6JKy5L+h5YWoDQor6JKy6ae/5q+FDQor6KO05YGJ56iLDQor6KSa5b+D5oChDQor6KSa5L+K5YGJDQor6KSa5a625b63DQor6LOT5pWs5paHDQor6LaZ5aOr6b2KDQor6LaZ5a2Q57atDQor6LaZ5LuB5L2RDQor6LaZ5YWD5a6PDQor6LaZ5Y+L5bSnDQor6LaZ5paH5b+gDQor6LaZ5pa55oS3DQor6LaZ5LiW6KOVDQor6LaZ5b+F5piMDQor6LaZ546J6JOuDQor6LaZ5a6J55CqDQor6LaZ5ZCb5p2wDQor6LaZ5a6P6YieDQor6LaZ5b+X6LGqDQor6LaZ6IKy55CzDQor6LaZ5L2p6IqsDQor6LaZ5a6c5ZCbDQor6LaZ5oCh5am3DQor6LaZ5piO6LydDQor6LaZ6Iq36I+BDQor6LaZ5L+K5YexDQor6LaZ5ZOB5b2lDQor6LaZ5bu65YudDQor6LaZ5oGs5YSADQor6LaZ54Kr5YubDQor6LaZ56eL6bOzDQor6LaZ6Iux6b6NDQor6LaZ5L+u6ZyWDQor6LaZ5a626ImvDQor6LaZ5a626LOiDQor6LaZ5oyv5a6PDQor6LaZ5qGC6Z2SDQor6LaZ54+u5rGbDQor6LaZ56WQ55SEDQor6LaZ5YGJ5bu3DQor6LaZ5YGJ57+UDQor6LaZ5ZyL5b+XDQor6LaZ5Z+56ZyWDQor6LaZ5bSH6ZaUDQor6LaZ5pWP5aaCDQor6LaZ5reR6IqzDQor6LaZ55qO5ZCbDQor6LaZ5am35a6MDQor6LaZ5rmY5ZCbDQor6LaZ6Yie5b+XDQor6LaZ55Ge5piMDQor6LaZ5ZiJ5pWsDQor6LaZ5buj5YWDDQor6LaZ5oWV576kDQor6LaZ5qi55YSADQor6LaZ6b6N5Z+6DQor6LaZ6ZuZ6ae/DQor6LaZ5465576yDQor6YGg6Jek5rC45bq3DQor6YSe6LGq6LydDQor6b2K6Zuq5rGdDQor5YqJ5LmZ6JCxDQor5YqJ5LmD6JCxDQor5YqJ5Lq66LGqDQor5YqJ5Yeg6JCNDQor5YqJ5Yqb6LGqDQor5YqJ5Y+I5oWIDQor5YqJ5LiK5peXDQor5YqJ5LqO6I+BDQor5YqJ5Y2D55GcDQor5YqJ5aOr6I+vDQor5YqJ5aOr6LGqDQor5YqJ5aSn5qauDQor5YqJ5a2Q55SxDQor5YqJ5a2Q5ZiJDQor5YqJ5a2Q6aCODQor5YqJ5bGx6LGqDQor5YqJ5Lit55CqDQor5YqJ5LuB5q2jDQor5YqJ5LuB6KOVDQor5YqJ5YWD6bOzDQor5YqJ5bCR57atDQor5YqJ5b+D5YSADQor5YqJ5paH546JDQor5YqJ5paH546yDQor5YqJ5paH5YudDQor5YqJ5paH6LaFDQor5YqJ5paH56aPDQor5YqJ5pel6aCGDQor5YqJ5LiW5paHDQor5YqJ5LiW5riFDQor5YqJ5LiW5oW2DQor5YqJ5Lul562gDQor5YqJ5Y+wDQor5YqJ5byY5YGJDQor5YqJ5q2j5rKzDQor5YqJ5q2j6ZuEDQor5YqJ5rC45YGlDQor5YqJ546J5paHDQor5YqJ546J5a62DQor5YqJ546J6JCNDQor5YqJ546J55CHDQor5YqJ56uL5YGJDQor5YqJ5Lqm5piHDQor5YqJ5LyK5L+uDQor5YqJ5Luy5ra1DQor5YqJ5YWJ5p2wDQor5YqJ5YWG5a65DQor5YqJ5YWo5b2sDQor5YqJ5ZCN5aifDQor5YqJ5aaC6IqzDQor5YqJ5aaC6JawDQor5YqJ5a6H6JaHDQor5YqJ5a6J56WlDQor5YqJ5pet6IqsDQor5YqJ5rGd5aifDQor5YqJ6Iez5a6JDQor5YqJ5Lyv5b2lDQor5YqJ5ZCb56W6DQor5YqJ5a2d5YCrDQor5YqJ5a6P5YGJDQor5YqJ5bu35qW3DQor5YqJ5b+X5YuHDQor5YqJ5b+X5rWpDQor5YqJ5b+X5rqQDQor5YqJ5b+X55GLDQor5YqJ5rKC5piADQor5YqJ56eA6YOBDQor5YqJ56eA6ZuvDQor5YqJ6IKy5oiQDQor5YqJ6IKy5b+XDQor5YqJ6IKy5a6XDQor5YqJ6IKy5rS4DQor5YqJ6IKy6KqgDQor5YqJ6IKy56mODQor5YqJ6YKm5bmzDQor5YqJ6YKm55u4DQor5YqJ5Lqe6Iq4DQor5YqJ5L6d5paHDQor5YqJ5L2z5rKQDQor5YqJ5L2z5oChDQor5YqJ5L2z6IqzDQor5YqJ5L2z5rSnDQor5YqJ5L2z55CqDQor5YqJ5L2z6YGUDQor5YqJ5L2z56mODQor5YqJ5L6D5aaCDQor5YqJ5L2p6Z2SDQor5YqJ5L2p57a+DQor5YqJ5ZKM5b63DQor5YqJ5Z2k56mODQor5YqJ5a2f5L2zDQor5YqJ5a2f5YagDQor5YqJ5a2f57+wDQor5YqJ5a6X5oChDQor5YqJ5a6X6JGGDQor5YqJ5a6a5a6HDQor5YqJ5a6c5piGDQor5YqJ5a6c5am3DQor5YqJ5a6b5aaCDQor5YqJ5bKh6Zm1DQor5YqJ5bm46ZuqDQor5YqJ5b+g5YuzDQor5YqJ5oCh5Ly2DQor5YqJ5oCh5ZCbDQor5YqJ5oCh5ZCbDQor5YqJ5oCh5ZCbDQor5YqJ5oCh5ZKMDQor5YqJ5oCh6IqsDQor5YqJ5oCh5oOgDQor5YqJ5oCh6Z2cDQor5YqJ5om/5qi6DQor5YqJ5piMDQor5YqJ5piM6KqgDQor5YqJ5piO5ZCIDQor5YqJ5piO5p2wDQor5YqJ5piO5ZOyDQor5YqJ5piO6YGUDQor5YqJ5piO6bqXDQor5YqJ5piH6ZGrDQor5YqJ5p6c54+NDQor5YqJ5qyj5Z2kDQor5YqJ5qyj5oChDQor5YqJ5qyj6Iy5DQor5YqJ5q2m5rWaDQor5YqJ546f5oiQDQor5YqJ546r5a+nDQor5YqJ56m55p6XDQor5YqJ6Iqz5ZCfDQor5YqJ6Iqz546yDQor5YqJ6Iqz6JitDQor5YqJ6Iqs6IqzDQor5YqJ6YeH55yfDQor5YqJ6YeR6bOzDQor5YqJ6Z2S6JiLDQor5YqJ5L+h5a6PDQor5YqJ5L+h6ImvDQor5YqJ5L+h6bS7DQor5YqJ5L+K5a6PDQor5YqJ5L+K5bu3DQor5YqJ5L+K6ImvDQor5YqJ5L+K5p2wDQor5YqJ5L+K5q+FDQor5YqJ5L+K5beWDQor5YqJ5L+Q5qKFDQor5YqJ5Yag5aaNDQor5YqJ5Yag6ImvDQor5YqJ5Yag6aGvDQor5YqJ5YuD5b2lDQor5YqJ5ZOB5a6cDQor5YqJ5aWV5b+XDQor5YqJ5ae/DQor5YqJ5ae/5ZCfDQor5YqJ5aiB5rGXDQor5YqJ5aiB5piMDQor5YqJ5bu65rCRDQor5YqJ5bu65a6PDQor5YqJ5bu65a6PDQor5YqJ5bu65p2RDQor5YqJ5bu66ImvDQor5YqJ5bu65piODQor5YqJ5bu65b63DQor5YqJ5bu655S6DQor5YqJ5b2l5ZCbDQor5YqJ5b2l5bu3DQor5YqJ5b2l6ImvDQor5YqJ5b2l5Y2aDQor5YqJ5b6L5piODQor5YqJ5oCd5r2UDQor5YqJ5oGq5Lq6DQor5YqJ5pS/5YuzDQor5YqJ5pit5aaCDQor5YqJ5pig56eADQor5YqJ5pix6L6wDQor5YqJ5p+P5a6PDQor5YqJ5p+P6bqfDQor5YqJ54K65piODQor5YqJ54+K5aauDQor5YqJ54+N5L2RDQor5YqJ55uI5aaCDQor5YqJ55uI56eADQor5YqJ55uI6JitDQor5YqJ56eL5oiQDQor5YqJ56eL54eVDQor5YqJ576O5ZCbDQor5YqJ576O5L6WDQor5YqJ576O546yDQor5YqJ576O6I+vDQor5YqJ576/5rGdDQor5YqJ6Iul6Ky5DQor5YqJ6Iux6b6NDQor5YqJ6LKe5Ly2DQor5YqJ6LuN5q+FDQor5YqJ6Z+L5oiQDQor5YqJ5YCN5aaCDQor5YqJ5L+u5piODQor5YqJ5ZOy5a6HDQor5YqJ5ZOy6YOODQor5YqJ5ZOy55GLDQor5YqJ5a625oiQDQor5YqJ5a625a6PDQor5YqJ5a625piHDQor5YqJ5a6255CzDQor5YqJ5a625YOWDQor5YqJ5a626LGqDQor5YqJ5a626bOzDQor5YqJ5a626aaoDQor5YqJ5a655oe/DQor5YqJ5bO75Ly2DQor5YqJ5bOw6YOhDQor5YqJ5oGp5ZCJDQor5YqJ5oyv5LitDQor5YqJ5oyv6LGqDQor5YqJ5pmJ6IKyDQor5YqJ5pmP6KqgDQor5YqJ5pu45a6PDQor5YqJ5qC56LGqDQor5YqJ5qGQ55ubDQor5YqJ5rWa6YqYDQor5YqJ54+u5oChDQor5YqJ55uK5Ly4DQor5YqJ55uK56aODQor5YqJ56WW5a+nDQor5YqJ57Sg546yDQor5YqJ57SU5p2PDQor5YqJ6ICV57atDQor5YqJ6LuS5a6HDQor5YqJ5YGJ56uLDQor5YqJ5YGJ6KqgDQor5YqJ5ZyL5bmzDQor5YqJ5ZyL5qOfDQor5YqJ5ZyL6b6NDQor5YqJ5amJ546yDQor5YqJ5bSH55CGDQor5YqJ5bq35qWdDQor5YqJ5b6X5YWJDQor5YqJ5ZWf5bmzDQor5YqJ5pWP55CqDQor5YqJ5rez6ZuFDQor5YqJ5reR6IqsDQor5YqJ5reR6LKeDQor5YqJ5reR6I6JDQor5YqJ5reR6I+vDQor5YqJ5reR5oWnDQor5YqJ56Wl5rCRDQor5YqJ6I6J54eVDQor5YqJ5Yex6Iy5DQor5YqJ5Y2a5paHDQor5YqJ5a+M5piODQor5YqJ5oOg5oChDQor5YqJ5oOg57SLDQor5YqJ5o+a6YqYDQor5YqJ5pm65LuBDQor5YqJ5pm66YieDQor5YqJ5pyd6JOuDQor5YqJ5rmY55CqDQor5YqJ55qT5a+nDQor5YqJ6IiS5oWIDQor5YqJ6Kmg6JaHDQor5YqJ6YC456u5DQor5YqJ6ZaU57WQDQor5YqJ6ZuF5ZCbDQor5YqJ6ZuF546yDQor5YqJ6ZuF5oOgDQor5YqJ6ZuF6JCNDQor5YqJ6ZuF5oWnDQor5YqJ6Zuy6ZyeDQor5YqJ5Yuk57aTDQor5YqJ5pWs5rCRDQor5YqJ5q+T5rOiDQor5YqJ5rqQ5YCrDQor5YqJ55Ge6IqzDQor5YqJ55Ge6LGqDQor5YqJ57aT57a4DQor5YqJ6KOV5a6PDQor5YqJ6Kmp6Z+7DQor5YqJ6Z2WDQor5YqJ5ZiJ6IKyDQor5YqJ5ZiJ5rezDQor5YqJ5ZiJ6ZuvDQor5YqJ5ZiJ5qi6DQor5YqJ5b2wDQor5YqJ5qau5b63DQor5YqJ54aZ5oWnDQor5YqJ56Kp56mpDQor5YqJ57at5rOwDQor5YqJ6IKH6bWsDQor5YqJ6YqY5p2RDQor5YqJ6YqY6LydDQor5YqJ6bOz6IiIDQor5YqJ5b635q2jDQor5YqJ5b636KqgDQor5YqJ5oW26Y6uDQor5YqJ5oWn546yDQor5YqJ5oWn5am3DQor5YqJ5oWn55OPDQor5YqJ55Gp5aifDQor5YqJ6LOi54aSDQor5YqJ6ZyH6bS7DQor5YqJ5oa2DQor5YqJ5puJ6IqsDQor5YqJ5puJ55CqDQor5YqJ5puJ5qi6DQor5YqJ5qi56JWZDQor5YqJ54eV6JCNDQor5YqJ55Kf6YuSDQor5YqJ56mO6JKoDQor5YqJ6IiI5a62DQor5YqJ6JWZ55GEDQor5YqJ6Yym5aCCDQor5YqJ6Yym6bS7DQor5YqJ6Z2c6IqzDQor5YqJ6Z2c6I+vDQor5YqJ6b6N5bGxDQor5YqJ54i157atDQor5YqJ6Y2+6ZyWDQor5YqJ6bS76ZyWDQor5YqJ55Kn55GpDQor5YqJ6Y6u5ZiJDQor5YqJ54Ca6Zm9DQor5YqJ6Z+755CmDQor5YqJ6bqX5oOgDQor5YqJ5a+25am3DQor5YqJ6ICA5Y2HDQor5YqJ6K2v6IGwDQor5YqJ54GM6LydDQor5YqJ5oe/5oWnDQor5YqJ6K6a5Zi7DQor5YqJ5pe754+KDQor5YqJ5ae15ZiJDQor5YqJ5oyQDQor5YqJ57+K6YKhDQor5YqJ55GL546yDQor5YqJ562x5oWnDQor5YqJ54CF6ai/DQor5Y6y5paM5LitDQor5qiK5LmD5ZiJDQor5qiK5L+u6b6NDQor5qiC5a2Q6ae/DQor5q2Q5aOr5rqQDQor5q2Q5LiW5rSLDQor5q2Q5aaC56iLDQor5q2Q5b+X55uIDQor5q2Q6YKm6I+vDQor5q2Q5a6X5Y6fDQor5q2Q5oCh56eADQor5q2Q5piA5L+uDQor5q2Q6ZW35pmPDQor5q2Q5L+K5b2lDQor5q2Q5bu65rCRDQor5q2Q5pS/6Im3DQor5q2Q576O55GpDQor5q2Q5aiJ5aamDQor5q2Q5pu46LGqDQor5q2Q5reR5ae/DQor5q2Q6YC46Z2SDQor5q2Q6Zm95pyJ5oWnDQor5q2Q6Zm9546rDQor5q2Q6Zm95oOg5aaCDQor5q2Q6Zm96YqY5paHDQor5q2Q6Zm95b+75oa2DQor5q2Q5qau5p2wDQor5q2Q56mO5ZCbDQor5q2Q57mV5ZiJDQor5r2YDQor5r2Y5YWB5LuBDQor5r2Y5paH6I+vDQor5r2Y5q2j5YWDDQor5r2Y546J5oOgDQor5r2Y5Lqm6JW+DQor5r2Y5oiQ5a+MDQor5r2Y5a6P5a6XDQor5r2Y5b+X5YGJDQor5r2Y56eA55uIDQor5r2Y5L2z5aakDQor5r2Y5L2p5ZCbDQor5r2Y5a6X6KOVDQor5r2Y5bu26LydDQor5r2Y5oCh5ZCbDQor5r2Y5oCh55G+DQor5r2Y5piO5qW3DQor5r2Y546f5qi6DQor5r2Y5Lqu5aaCDQor5r2Y5L+h57+wDQor5r2Y5L+K6ImvDQor5r2Y5Yag5a6PDQor5r2Y5ZOB5r2UDQor5r2Y5aiB5q23DQor5r2Y5bu65oiQDQor5r2Y5bu65b2wDQor5r2Y5b2l6JOJDQor5r2Y5pS/57evDQor5r2Y5p+U6ICDDQor5r2Y54+N55CqDQor5r2Y576O546yDQor5r2Y6L+w5p2xDQor5r2Y5a626YqYDQor5r2Y5rOw5YWoDQor5r2Y6IO95ZOyDQor5r2Y5amJ6JCNDQor5r2Y5reR6ZuvDQor5r2Y5oOg5aifDQor5r2Y6YCy55uKDQor5r2Y6ZuF6aaoDQor5r2Y55Ge6aaZDQor5r2Y6KOV5pm6DQor5r2Y552/5ZOyDQor5r2Y5YSA5oGsDQor5r2Y5oWn5pWPDQor5r2Y5YSS55GpDQor5r2Y6Yym5piMDQor5r2Y6bS76YqYDQor5r2Y6bqX6JCNDQor5r2Y5ae15aaCDQor5r2Y6Yi65p+UDQor5ruV5oa26ZuvDQor57e05bu65Ly4DQor6JSj5Lit6KGNDQor6JSj5q2j56aPDQor6JSj5rGd5a6JDQor6JSj5rKG56WlDQor6JSj5L2z54+KDQor6JSj5L2p6aSYDQor6JSj5a2f5YSSDQor6JSj5a6c6Z2cDQor6JSj5oCh5oWnDQor6JSj5piO5YSSDQor6JSj6ZW35pe7DQor6JSj5pS/56mODQor6JSj54+u5rOgDQor6JSj5reR5oWnDQor6JSj6JCNDQor6JSj6JGm56uLDQor6JSj5b635omNDQor6JSj5r+x5beeDQor6JSj6ICA5q+FDQor6JSh5LiB57aT5ZOyDQor6JSh5aOr5pe6DQor6JSh5a2Q5oChDQor6JSh5Lit6YieDQor6JSh5LuB5YGJDQor6JSh5YWD5q2jDQor6JSh5YWD6ZuEDQor6JSh5aSp56W6DQor6JSh5paH5LuBDQor6JSh5paH5b2lDQor6JSh5paH5YGJDQor6JSh5paH5Y2aDQor6JSh5paH5qy9DQor6JSh5paH5ZiJDQor6JSh5paH6bS7DQor6JSh5pyI54+gDQor6JSh5LiW5p2wDQor6JSh5LiW6bS7DQor6JSh5ben5aaCDQor6JSh5byY5Y6fDQor6JSh5q2j5a6XDQor6JSh5q2j5pqJDQor6JSh5rC45b2sDQor6JSh5rC455GpDQor6JSh546J56eLDQor6JSh546J6I+BDQor6JSh56uL6IqsDQor6JSh5Lqm6ZuvDQor6JSh5Luy5a+nDQor6JSh5YWG6amKDQor6JSh5ZCN5pu4DQor6JSh5aaC5am3DQor6JSh5a6H5YCrDQor6JSh5a6J5ZasDQor6JSh5pet5pucDQor6JSh57695a65DQor6JSh6KGM55yfDQor6JSh5Lyv6bS7DQor6JSh5ZCb5q+FDQor6JSh5a6P5paHDQor6JSh5a6P5Z+5DQor6JSh5bu356mODQor6JSh5b+X5a6PDQor6JSh5b+X5piODQor6JSh5b+X5pmDDQor6JSh5b+X5o+aDQor6JSh5b+X57atDQor6JSh5b+X6bS7DQor6JSh5rKB546yDQor6JSh5rKb5am3DQor6JSh5rG26bS7DQor6JSh56eA546yDQor6JSh56eA5oOgDQor6JSh6IKy5q2jDQor6JSh6IKy5b2lDQor6JSh6IKy55yfDQor6JSh6IKy5YuzDQor6JSh6LKd54+KDQor6JSh5Lqr57+wDQor6JSh5L6d54+KDQor6JSh5L6d5a65DQor6JSh5L6d6b2hDQor6JSh5L2z5Ly2DQor6JSh5L2z5a6PDQor6JSh5L2z6ImvDQor6JSh5L2z5qyjDQor6JSh5L2z6IqsDQor6JSh5L2z546yDQor6JSh5L2z54+NDQor6JSh5L2z5a65DQor6JSh5L2z55yfDQor6JSh5L2z6IiqDQor6JSh5L2z55CzDQor6JSh5L2z6JOJDQor6JSh5L2z5qi6DQor6JSh5L2z56mODQor6JSh5L2z6ZyWDQor6JSh5L2z56S9DQor6JSh5L2p5aaCDQor6JSh5L2p5ZCbDQor6JSh5L2p5aakDQor6JSh5L2p6IqzDQor6JSh5L2p6IqsDQor6JSh5L2p54+KDQor6JSh5L2p54+KDQor6JSh5L2p546yDQor6JSh5L2p5ailDQor6JSh5L2p57SLDQor6JSh5L2p6JOJDQor6JSh5L2p56mODQor6JSh5L2p6Z2cDQor6JSh5L6R5bu3DQor6JSh5YW254+uDQor6JSh5Y2U55SrDQor6JSh5Y+X5YuzDQor6JSh5Z2k5L2RDQor6JSh5Z2k6ZuEDQor6JSh5Z2k6YymDQor6JSh5aWH5Z2HDQor6JSh5aWH6ZyWDQor6JSh5a2f5ZCbDQor6JSh5a2f6IKyDQor6JSh5a2f6IqzDQor6JSh5a2f56eLDQor6JSh5a2f5ZOyDQor6JSh5a2f55yfDQor6JSh5a2f6ZuEDQor6JSh5a2f5YSSDQor6JSh5a2f5qi6DQor6JSh5a2f6KutDQor6JSh5a2j546yDQor6JSh5a6X5L2RDQor6JSh5a6X5b+XDQor6JSh5a6X546rDQor6JSh5a6X55uKDQor6JSh5a6X6YGUDQor6JSh5a6X5YSSDQor6JSh5a6X5oayDQor6JSh5a6X56mODQor6JSh5a6X57+wDQor6JSh5a6X6ZyWDQor6JSh5a6c5ZCbDQor6JSh5a6c5bu3DQor6JSh5a6c6IqzDQor6JSh5a6c54+KDQor6JSh5a6c5YCpDQor6JSh5a6c55yfDQor6JSh5a6c6JOJDQor6JSh5a6c6ZyWDQor6JSh5a6c6JOBDQor6JSh5a6b546yDQor6JSh5a6b6KutDQor6JSh5bCa5bKzDQor6JSh5bCa56mODQor6JSh5bKx5YuzDQor6JSh5bKz5pu4DQor6JSh5bm45aaCDQor6JSh5bm45oGGDQor6JSh5bm45rezDQor6JSh5bym6LGqDQor6JSh5b+g5L+hDQor6JSh5b+g56mODQor6JSh5oCh5ZCbDQor6JSh5oCh6JCNDQor6JSh5om/5piKDQor6JSh5om/55KLDQor6JSh5om/57+wDQor6JSh5piT5LqoDQor6JSh5piT6ZmeDQor6JSh5piT5oayDQor6JSh5piM5a6HDQor6JSh5piM5YSSDQor6JSh5piG5L2RDQor6JSh5piODQor6JSh5piO5rGODQor6JSh5piO5a6PDQor6JSh5piO5p2JDQor6JSh5piO5a6XDQor6JSh5piO6IqzDQor6JSh5piO5YCrDQor6JSh5piO5ZOyDQor6JSh5piO5bOwDQor6JSh5piO6Iy1DQor6JSh5piO5qy9DQor6JSh5piO6JKyDQor6JSh5piO6LOcDQor6JSh5piO5oayDQor6JSh5piO56mODQor6JSh5piO6b6NDQor6JSh5piA55SrDQor6JSh5piH5LyvDQor6JSh5piH56mODQor6JSh5p2x5piODQor6JSh5p2x56mODQor6JSh5p2w5b+XDQor6JSh5p2+5p+PDQor6JSh5p2+6ZyWDQor6JSh5qyj5oChDQor6JSh5qyj5YCrDQor6JSh5qyj6YGUDQor6JSh5qyj56mODQor6JSh5q2m6Ku6DQor6JSh54mn5YuzDQor6JSh55u05YuzDQor6JSh56eJ5piGDQor6JSh56eJ55KLDQor6JSh56eJ6KutDQor6JSh6Iqz5rS1DQor6JSh6YeH6IqzDQor6JSh6YeR5bOwDQor6JSh6YeR6b6NDQor6JSh6ZW35qauDQor6JSh6Zuo5r2UDQor6JSh6Z2S5bOwDQor6JSh5L+h6ImvDQor6JSh5L+K5pmPDQor6JSh5L+K6LOiDQor6JSh5ZOB5YSADQor6JSh5a6l5a6aDQor6JSh5bu66KOVDQor6JSh5oCd5o23DQor6JSh5pS/5a6PDQor6JSh5pS/6KiADQor6JSh5pS/5ZOyDQor6JSh5pS/576kDQor6JSh5pS/5YuzDQor6JSh5pS/57+wDQor6JSh5pS/6b6NDQor6JSh5pit6b6NDQor6JSh5p+P5q+FDQor6JSh546y5rSlDQor6JSh56a55q2GDQor6JSh57SA5rqQDQor6JSh576O6IqdDQor6JSh576O6I6JDQor6JSh576O5oWnDQor6JSh6Iux5a6XDQor6JSh6YOB5ZCbDQor6JSh6Z+L5b+XDQor6JSh5YeM6bOzDQor6JSh5aif5aifDQor6JSh5a626I+vDQor6JSh5a6555GbDQor6JSh5oKF546fDQor6JSh5oyv6K2wDQor6JSh5qCp57atDQor6JSh54+u5oChDQor6JSh55yf56aVDQor6JSh57Sg56KnDQor6JSh6Iy56Iy1DQor6JSh5YGJ5p2wDQor6JSh5ZyL5omLDQor6JSh5ZyL6IGWDQor6JSh5Z+56K2vDQor6JSh5bSH5rCRDQor6JSh5ZWf5aCCDQor6JSh5re75paHDQor6JSh5reR5aaDDQor6JSh5reR5oChDQor6JSh5reR546yDQor6JSh5reR55yfDQor6JSh5reR5oOgDQor6JSh5reR55GcDQor6JSh5reR6JaHDQor6JSh55ub5YuzDQor6JSh6Zuq5Y2/DQor6JSh5Yud6ZuEDQor6JSh5Y2a5YWoDQor6JSh5Zas5a6JDQor6JSh5a+M6LK0DQor6JSh5oOg5aaCDQor6JSh5oOg576ODQor6JSh5oOg55CqDQor6JSh5oOg54eVDQor6JSh5pmv5reRDQor6JSh5pm65a6PDQor6JSh5pm65pqQDQor6JSh5rmY5oChDQor6JSh55qT5piODQor6JSh6IiS5a6HDQor6JSh6I+B6I+BDQor6JSh6Kmg57+UDQor6JSh6YC454+KDQor6JSh6YCy5piMDQor6JSh6ZqG5rOwDQor6JSh6ZuF5ZCbDQor6JSh6ZuF6IqsDQor6JSh6ZuF6Iy5DQor6JSh6ZuF5oOgDQor6JSh6ZuF6I+BDQor6JSh6ZuF5oWnDQor6JSh6Zuv5reHDQor6JSh5YKz5b63DQor6JSh5qWo55GcDQor6JSh5q+T6ZyWDQor6JSh55Ge5paHDQor6JSh55Ge5bOwDQor6JSh55Ge6bqSDQor6JSh576p55uKDQor6JSh6KOV5YGlDQor6JSh6Kmp6JaPDQor6JSh5ZiJ5LuBDQor6JSh5ZiJ5oGGDQor6JSh5ZiJ56ugDQor6JSh5ZiJ5oW2DQor6JSh5qau5piMDQor6JSh5qau6LOiDQor6JSh5ryi576pDQor6JSh56Kn5a65DQor6JSh56aP5pmPDQor6JSh57at546yDQor6JSh57at6JOBDQor6JSh6KO05Ly2DQor6JSh6YqYDQor6JSh6YqY5bOwDQor6JSh6YqY6LOiDQor6JSh6bOz5YSADQor6JSh5b616ZyWDQor6JSh5oWn5rCRDQor6JSh5oWn6LKeDQor6JSh5oWn6JCxDQor6JSh5q+F6LuSDQor6JSh6LOi55qHDQor6JSh5a245paHDQor6JSh5oa26Yi0DQor6JSh5puJ54S2DQor6JSh5r6k6YqYDQor6JSh56mO5660DQor6JSh57+w54aKDQor6JSh6JWZ5am3DQor6JSh6Yym5Z2hDQor6JSh6Z2c5a6cDQor6JSh6Z2c5oOgDQor6JSh6b6N5YSADQor6JSh57+85aaCDQor6JSh6bS75rCRDQor6JSh6bS75paMDQor6JSh55Kn5YWJDQor6JSh6LGQ5paHDQor6JSh6LGQ5p2wDQor6JSh6Y6u5ba9DQor6JSh6bWR5b2MDQor6JSh55OK5YSADQor6JSh6bqX6IqzDQor6JSh6bqX5oOgDQor6JSh54275q+FDQor6JSh6ICA576kDQor6JSh6ICA6aeSDQor6JSh6aao5YSADQor6JSh5L226IiIDQor6JSh5pe76IqzDQor6JSh5pe75oayDQor6JSh55CE56u5DQor6JSh5q2G5oChDQor6JSh55GL56uRDQor6JSh57e2DQor6JSh6ZGr5bu3DQor6KuH5pit6JitDQor6YSt5LiA5YehDQor6YSt5LmD5L2zDQor6YSt5Lq65YWDDQor6YSt5Yqb5LuBDQor6YSt5Y+I5LuBDQor6YSt5aOr6Z+LDQor6YSt5a2Q6KaLDQor6YSt5bCP5bWQDQor6YSt5bC55pavDQor6YSt5LuB5a+MDQor6YSt5YWD5a2dDQor6YSt5YWD55GcDQor6YSt5Y+L6KqgDQor6YSt5b+D5aaCDQor6YSt5paH5q2jDQor6YSt5paH5b2sDQor6YSt5paH5a+MDQor6YSt5paH5ZiJDQor6YSt5pyI5p6dDQor6YSt5LiW5piMDQor6YSt5LiW5rmYDQor6YSt5LuV6ZGrDQor6YSt5ben6Z2SDQor6YSt5byY5YGJDQor6YSt5q2j6KqgDQor6YSt5rC45rSlDQor6YSt546J5Ly2DQor6YSt546J6IuxDQor6YSt546J6I+BDQor6YSt56uL5LqrDQor6YSt5LqZ5ZCfDQor6YSt5LyK55yfDQor6YSt5Luy5a6PDQor6YSt5Luy6LOiDQor6YSt5YWJ5L2RDQor6YSt5YWJ5rezDQor6YSt5YWG5Z2HDQor6YSt5YWI6JCMDQor6YSt5ZCJ5L2RDQor6YSt5ZCP5a2cDQor6YSt5ZCI5L+uDQor6YSt5aSZ5ra1DQor6YSt5aaC5qyjDQor6YSt5aaC57SUDQor6YSt5a6H5a6PDQor6YSt5a6H5reoDQor6YSt5a6I5p2xDQor6YSt5a6J6Iq4DQor6YSt5a6J57+UDQor6YSt5oiQ5qOgDQor6YSt5pet55ubDQor6YSt5pyJ6LKhDQor6YSt55m+5am3DQor6YSt57695pm0DQor6YSt6Iez5YmbDQor6YSt5Lyv5Y2XDQor6YSt5ZCb6YGUDQor6YSt5a6P5piODQor6YSt5b+X5YqfDQor6YSt5b+X5YGJDQor6YSt5b+X6b6NDQor6YSt56eA5oChDQor6YSt56eA5aifDQor6YSt56eA5oWnDQor6YSt6IKy5piHDQor6YSt6LKd5aaCDQor6YSt5L2z5a6cDQor6YSt5L2z56WlDQor6YSt5L2z5YSADQor6YSt5L2p54+KDQor6YSt5YW26ZuvDQor6YSt5a2f546yDQor6YSt5a6X5p2wDQor6YSt5a6c6IqzDQor6YSt5bm45a6cDQor6YSt5oCh5ZCbDQor6YSt5oCh5am3DQor6YSt5piM5bKzDQor6YSt5piO5b+gDQor6YSt5piO6YqTDQor6YSt5qyj5aaCDQor6YSt5qyj5qauDQor6YSt56eJ5rOTDQor6YSt6Iq46Iq4DQor6YSt6ZW35b+XDQor6YSt5L+K5a6PDQor6YSt5YuH54ybDQor6YSt5bu65L2zDQor6YSt5b2l6YGUDQor6YSt5pil6I+KDQor6YSt55yB5p2RDQor6YSt576O546JDQor6YSt576O55C0DQor6YSt6Iul55CkDQor6YSt6L+q5YWBDQor6YSt5YCp5aaCDQor6YSt5a625YW4DQor6YSt5a626YqYDQor6YSt5oyv5a6cDQor6YSt5pu46Yi6DQor6YSt54+u5ZCbDQor6YSt56WQ6ZihDQor6YSt57Sg5b2sDQor6YSt6IyX6IGwDQor6YSt5YGJ54+KDQor6YSt5ZyL5q2jDQor6YSt5ZyL56WlDQor6YSt5Z+56IGwDQor6YSt5bSH5L2RDQor6YSt5oOf5b+DDQor6YSt5ZWf5qauDQor6YSt5qKF5ZCbDQor6YSt5riF5L+KDQor6YSt5reR5LqRDQor6YSt5reR57GzDQor6YSt5reR546yDQor6YSt5reR5am3DQor6YSt5reR54eVDQor6YSt5re16JekDQor6YSt56Wl5aaCDQor6YSt6I6J6ZuvDQor6YSt5YKR5YWDDQor6YSt5Yex5LuBDQor6YSt5Yex5YWDDQor6YSt5Yex5paHDQor6YSt5Yex6IKyDQor6YSt5Yex6bS7DQor6YSt5Yud5petDQor6YSt5Y2a5LuBDQor6YSt5Y2a5paHDQor6YSt5Zas6YqYDQor6YSt5am35paHDQor6YSt5a+M5LuBDQor6YSt5bCK5a2dDQor6YSt5oOg5paHDQor6YSt5oOg5ZCbDQor6YSt5oOg57SLDQor6YSt5oOg6ZycDQor6YSt5pav5bC5DQor6YSt5pmv5LuBDQor6YSt5pmv5paHDQor6YSt5pmv6ZqGDQor6YSt5pm65LuBDQor6YSt5pm65YWDDQor6YSt5pm65piMDQor6YSt5pm66LGqDQor6YSt5pyd5YWDDQor6YSt5pyd54efDQor6YSt5qSN5a+wDQor6YSt5rmY5piADQor6YSt55qT5LqRDQor6YSt56iL6K2wDQor6YSt57Wy6ZuvDQor6YSt57+U6b6NDQor6YSt6IiS6JWKDQor6YSt6Kmg5LuBDQor6YSt6KmU6KyZDQor6YSt6YC45au7DQor6YSt6ZaU6bS7DQor6YSt6ZuF5LqRDQor6YSt6ZuF5Y+LDQor6YSt6ZuF5paHDQor6YSt6ZuF5aaDDQor6YSt6ZuF6IqsDQor6YSt6ZuF5aifDQor6YSt6ZuF55CqDQor6YSt6ZuF55SEDQor6YSt6ZuF6bubDQor6YSt6Zuy6bWsDQor6YSt5oSP5LitDQor6YSt5pWs5qi6DQor6YSt5q+T6b2hDQor6YSt55Ge576ODQor6YSt55Gc55CzDQor6YSt576p5oayDQor6YSt6IGW6LOiDQor6YSt6KOV5bm0DQor6YSt6Kmp5oWnDQor6YSt5ZiJ5LuBDQor6YSt5ZiJ5o+aDQor6YSt5ZiJ5pe7DQor6YSt5qau5aifDQor6YSt56aP5ZKMDQor6YSt6IKH5b+DDQor6YSt6YqY5rOwDQor6YSt6bOz6b2hDQor6YSt5oW25ZOyDQor6YSt5oWn6IqzDQor6YSt5oWn6Y6CDQor6YSt6JSa6J+sDQor6YSt5oay5a2YDQor6YSt5puJ5oChDQor6YSt5puJ6JaHDQor6YSt56mO6YqTDQor6YSt6JWZ55CmDQor6YSt6ZyW6ae/DQor6YSt6Z2c6IqzDQor6YSt5oeL5YKRDQor6YSt6Kyd5YagDQor6YSt6bS75rqQDQor6YSt6LGQ5ZiJDQor6YSt6bqX5ZCbDQor6YSt54275paHDQor6YSt5pe76LuSDQor6YSt55CH5LuBDQor6YSt5Z+1DQor6YSt57Wc5b+DDQor6YSt55GL6ZqGDQor6YSt6Yi66ZCYDQor6YSt6Z2LDQor6YSn5Y2H5pWmDQor6YSn5paH5YSADQor6YSn5rC45b+gDQor6YSn5LyK5a65DQor6YSn5ZCO55CbDQor6YSn5pet5pWmDQor6YSn5b+X54WMDQor6YSn5L2z546yDQor6YSn5a6c5qyjDQor6YSn5piO6IqzDQor6YSn6YeR6bS7DQor6YSn56eL5oOgDQor6YSn5oyv6IuxDQor6YSn5YGJ6LOiDQor6YSn5reR546yDQor6YSn5Y2a5LuBDQor6YSn5oOg5paHDQor6YSn5pmv6b6NDQor6YSn57+U5LuBDQor6YSn6ZuF5b+DDQor6YSn6aCG5bGVDQor6YSn6KOV6aaoDQor6YSn56aP6ZqGDQor6YSn6ZyH5a6HDQor6YSn56mO6ae/DQor6YSn5Yqm5ZGIDQor6a2v5b+g6LGqDQor6a2v5oay6ZuyDQor6buO5LiW5buJDQor6buO5a6H5a65DQor6buO5piO5YCrDQor6buO5L+Q5Z2HDQor6buO5a625Ly2DQor6buO5amJ5YSADQor6buO54Wl5YWDDQor6buO6YqY5LuBDQor6buO56au5pm6DQor55un5LiJ5LuBDQor55un5LuB5p2wDQor55un5paH5b+gDQor55un5paH5pmfDQor55un5byY5rW3DQor55un5rC45piHDQor55un55Sz5rOwDQor55un5ZCJ5YuHDQor55un5ZGI6IqzDQor55un5b+X5b+gDQor55un5b+X6J6NDQor55un6IKy6IGWDQor55un5L2z5oOgDQor55un5Y+U5qyjDQor55un5a6a5Z2HDQor55un5bu26I+vDQor55un5oCh5Ly2DQor55un5oCh5ra1DQor55un5om/5qWtDQor55un5qyj5a6cDQor55un546r5aaPDQor55un6Zuo5ra1DQor55un5L+d5YWoDQor55un5L+K6KiADQor55un5L+K5YSSDQor55un5Yag5puEDQor55un5aWO5LyvDQor55un5aiB6ZyWDQor55un5bu65a6PDQor55un5bu66YqYDQor55un5oCd5rqQDQor55un5pif5YWoDQor55un5p+P6ImvDQor55un55uI5a6PDQor55un576O5aaCDQor55un6Iux5LuBDQor55un6Z+L5LuBDQor55un5a626Yi6DQor55un56WW57+UDQor55un5amJ55GcDQor55un5reR6bqXDQor55un5oOg5YKRDQor55un6LaF576kDQor55un5oS36I6JDQor55un576k6IKyDQor55un5ZiJ5oyvDQor55un5b636IqzDQor55un5oWn5a6cDQor55un6Lyd5bGVDQor55un56mO5b+XDQor55un6b6N55SfDQor55un6Z+75bKRDQor55un6K295YWBDQor55un562x55GpDQor56mG576O6JWZDQor6JWt5Lq66LGqDQor6JWt5aOr5rOwDQor6JWt5bC56LKeDQor6JWt5YWB5rOwDQor6JWt5paH5qyjDQor6JWt5paH562GDQor6JWt5paH6a2BDQor6JWt5LiW5rCRDQor6JWt5Lul5LquDQor6JWt5q2j5bmzDQor6JWt5rC45rOTDQor6JWt546J6LKeDQor6JWt56uL6Z+LDQor6JWt5Lqm57atDQor6JWt5Luy5b+XDQor6JWt5YWG55CzDQor6JWt5ZCN5rKCDQor6JWt5Zyt5aaZDQor6JWt5aaC54+KDQor6JWt5a6H5LyvDQor6JWt5a6J5bu3DQor6JWt5pyJ5a6PDQor6JWt6IG/5a6PDQor6JWt5ZCb5oChDQor6JWt5a6P6KOVDQor6JWt5b+X5769DQor6JWt5b+X6LGqDQor6JWt56eA5oOgDQor6JWt6IKy6ZqGDQor6JWt5L2z5oKMDQor6JWt5L2p54+KDQor6JWt5a2j6JaHDQor6JWt5bCa5paHDQor6JWt5oCh6IqzDQor6JWt5piG5bu3DQor6JWt5qyj5oChDQor6JWt6Iqz55uIDQor6JWt6Z2S6JCNDQor6JWt5L+K6LOiDQor6JWt5b2l5b2wDQor6JWt5p+P6LuSDQor6JWt576O5aifDQor6JWt6L+w5LuBDQor6JWt5aSP5pWPDQor6JWt5oyv5a6JDQor6JWt54+u5aaCDQor6JWt6KiT5ZyLDQor6JWt5ZyL5q2jDQor6JWt5ZyL5a+2DQor6JWt5bSH6KuWDQor6JWt5pWP5b2lDQor6JWt5riF54eVDQor6JWt5reR54+NDQor6JWt5reR56mODQor6JWt6Zuq5ZCfDQor6JWt5Yex5oeLDQor6JWt5Y2a5LuBDQor6JWt5Y2a5LuwDQor6JWt5a+M5YWDDQor6JWt5oOg5YWDDQor6JWt5oOg6IqzDQor6JWt5oOg6YSJDQor6JWt5paQ5aaCDQor6JWt5pmv6IGwDQor6JWt5pm65qKFDQor6JWt5qOL5YWDDQor6JWt56uj6bS7DQor6JWt6Kmg5pa5DQor6JWt6YC45bmzDQor6JWt6ZuF5Li5DQor6JWt6ZuF5paHDQor6JWt6ZuF6I6JDQor6JWt6Zuv5b+DDQor6JWt5oSb546yDQor6JWt54Wl57evDQor6JWt55Gb5peXDQor6JWt6IGW5qi6DQor6JWt6Kmp55KHDQor6JWt5ZiJ55CqDQor6JWt5a+n5ZCbDQor6JWt57at5YCpDQor6JWt6LyU5b2lDQor6JWt6YqY5qyKDQor6JWt5oWn5oChDQor6JWt55Gp55yfDQor6JWt5oa26JitDQor6JWt57+w6IuxDQor6JWt6Z2c5a6cDQor6JWt6LGQ5pm6DQor6JWt6bqX5aifDQor6JWt6ba06LuSDQor6JWt55Cu57+wDQor6JWt5qqJ6K2BDQor6LO05LmD6aCMDQor6LO05aOr6LaFDQor6LO05LuB56WQDQor6LO05aSp6bS7DQor6LO05paH6IuxDQor6LO05paH6I+vDQor6LO05LiW5piMDQor6LO05LiW57atDQor6LO05Y+v5oGpDQor6LO05byY55KYDQor6LO05q2j6YeODQor6LO05rC46Yi0DQor6LO0546J5ZSQDQor6LO0546J6ZycDQor6LO05Lqm6LKeDQor6LO05aaD5ZCbDQor6LO05pet5b2lDQor6LO05Lyv5aiBDQor6LO05aaZ5a6jDQor6LO05a6P5piMDQor6LO05bu356a5DQor6LO05b+X5piMDQor6LO05b+X5YGJDQor6LO05b+X57axDQor6LO05p2P5YSSDQor6LO056eA5pilDQor6LO06IKy5bu3DQor6LO06IKy6bqfDQor6LO05L2z5Ly2DQor6LO05L2z5qyjDQor6LO05L2z5oWnDQor6LO05L2p5ZCbDQor6LO05YW25LquDQor6LO05a2f6I+vDQor6LO05a6X6KqgDQor6LO05a6c5L2zDQor6LO05bGF5q2jDQor6LO05oCh5paHDQor6LO05oCh5Ly2DQor6LO05oCh5ZCbDQor6LO05oCh5qyjDQor6LO05oCh5qi6DQor6LO05piM5b2lDQor6LO05piO5a6PDQor6LO05piO5b63DQor6LO05p2x5bu2DQor6LO05qyj5a6cDQor6LO05q2m5rqqDQor6LO0546r5aaCDQor6LO06Iqz5bu2DQor6LO06ZW35L2RDQor6LO05L+h5YWJDQor6LO05L+h6KqgDQor6LO05L+K5YWGDQor6LO05L+K5a6PDQor6LO05L+K5p2wDQor6LO05L+K6YGUDQor6LO05L+Q5Y2JDQor6LO05Yag5a6PDQor6LO05YuH5b+XDQor6LO05aWV5biGDQor6LO05ae/5Z2HDQor6LO05aiB5Z2HDQor6LO05a6j5aakDQor6LO05bu65ZCIDQor6LO05bu65L2RDQor6LO05bu65b+XDQor6LO05bu66ZuEDQor6LO05bu66J6NDQor6LO05b2l5L2QDQor6LO05b2l6ImvDQor6LO05b2l5qi6DQor6LO05oCd6ZyWDQor6LO05pS/5a+sDQor6LO05pit5YWJDQor6LO05pit6b6NDQor6LO05pix5YubDQor6LO05p+P5Ly4DQor6LO05p+P6b6NDQor6LO054+A6LOiDQor6LO055uI6Z2SDQor6LO056eR5Y2wDQor6LO057SF6ZyeDQor6LO0576O5YagDQor6LO0576O6Yy1DQor6LO06IyC5bu3DQor6LO06Jm55Ly2DQor6LO06LuN6IiJDQor6LO06YOB6ZuvDQor6LO06Z+L6YGUDQor6LO05a625byYDQor6LO05oyv55SfDQor6LO05rWp6LGQDQor6LO056ep5YWJDQor6LO06auY5b+XDQor6LO05ZyL5oGpDQor6LO05Z+65relDQor6LO05ZWf5rqQDQor6LO05reR5oChDQor6LO05reR6LKeDQor6LO05reR6JCNDQor6LO06I6J6ZuvDQor6LO05oOg5ZCbDQor6LO05oSJ6IqzDQor6LO05qy96KmuDQor6LO06LK0576pDQor6LO06ZqG5bmzDQor6LO06ZuF55C0DQor6LO06aCG5oyvDQor6LO05rqQ5rezDQor6LO0576p5LitDQor6LO06JGm5biGDQor6LO06Z2W5a6cDQor6LO05ZiJ5oWnDQor6LO05qau55KJDQor6LO057at5bu3DQor6LO06YqY55u4DQor6LO05aKe6IGwDQor6LO05oW26YqYDQor6LO05oWn5aifDQor6LO05r2U6IqzDQor6LO06YuSDQor6LO05puJ5qWTDQor6LO056mO6LydDQor6LO06Yym5YSEDQor6LO06Z2c55KHDQor6LO06bS76YqYDQor6LO06Z+75aaCDQor6LO06bqXDQor6LO06bqX6ZuvDQor6LO06IqD5ZCbDQor6LO05p+K5qOLDQor6LO055GL5piADQor6LO06ZyI5YSSDQor6YGy5bCa5qyKDQor6Yyi5Lul5oGsDQor6Yyi6Imv6JWZDQor6Yyi5qyj5a6cDQor6Yyi5aiB6J6NDQor6Yyi6YOB6JiLDQor6Yyi6YC46ZyWDQor6Yyi5b635L+KDQor6Yyh5oOg6ZuvDQor6Za75oOg546yDQor6ZyN6I6Y55GcDQor6aex5rC45bu6DQor6aex5a2j5bmzDQor6aex6Iqz5qKnDQor6aex5bu65ZGIDQor6aex6KGN6b6NDQor6aex5ZiJ5oW2DQor6a6R6KGM5LuBDQor6a6R5ZyL5bOwDQor6b6N56eA6LKeDQor6b6N5pif5YWGDQor5YSy5LqO6LaFDQor5oeJ5b+X5a6PDQor5oi05LmZ6I+BDQor5oi05aSn6YieDQor5oi05YWD5YipDQor5oi05paH6ZuEDQor5oi05q2j5bmzDQor5oi056uL5Lq6DQor5oi05YWo5YipDQor5oi05a6I5q2jDQor5oi05L2R5rSyDQor5oi05ZGI5a6JDQor5oi05a6P5LieDQor5oi05b+X5piHDQor5oi05p2P6IqzDQor5oi05L2z5bmzDQor5oi05a2j5YWoDQor5oi05oCh6LKeDQor5oi05piO54+gDQor5oi05L+K57evDQor5oi056eL6aaZDQor5oi06YOB6IqzDQor5oi05oyv6YGgDQor5oi05ZyL6ImvDQor5oi05oOf5pyJDQor5oi06I6JDQor5oi05qOu5ZywDQor5oi06ZuF5aaCDQor5oi05YKz5a62DQor5oi055Ge5ZCbDQor5oi0576k5bOwDQor5oi05ZiJ5a6PDQor5oi05ZiJ5oayDQor5oi057at5Ly4DQor5oi05aKe55GcDQor5oi06LOi56WlDQor5oi06Z2c5YSADQor5oi05b+e6Ie7DQor5oi06JaP54+KDQor57mG5L+h5a6HDQor6Jab5LmD5YWBDQor6Jab5Li55qGCDQor6Jab5LiW54WMDQor6Jab546J6YuSDQor6Jab5YWJ56iLDQor6Jab5aaC5ZCbDQor6Jab55m+5oOgDQor6Jab5b+X5a6PDQor6Jab5L6d6JKoDQor6Jab5bm45ZiJDQor6Jab5piH5petDQor6Jab5aWV6b6NDQor6Jab576O6IqzDQor6Jab5bGV56uLDQor6Jab5YGJ5LyvDQor6Jab5reR6Z2WDQor6Jab5Yex5paHDQor6Jab5ZyN5LitDQor6Jab5pmv5paHDQor6Jab56uj57a4DQor6Jab6ZuF6JCNDQor6Jab55Ge54+NDQor6Jab5ZiJ6ZuEDQor6Jab6JOT6IqzDQor6Jab5YSS6ZyZDQor6Jab6Z+75am3DQor6Jab6Yi655yfDQor6Kyd5LqO5qu7DQor6Kyd5bCP5qKFDQor6Kyd5LuB5ZOyDQor6Kyd5YWD6LK0DQor6Kyd5b+D6ZuFDQor6Kyd5paH5aifDQor6Kyd5paH5aCvDQor6Kyd5paH55GcDQor6Kyd5paH5paMDQor6Kyd5Lul5qyjDQor6Kyd5byY5LquDQor6Kyd5q2j55uKDQor6Kyd5rC45L+hDQor6Kyd546J54+gDQor6Kyd56uL576kDQor6Kyd5YWJ5LitDQor6Kyd5ZCJ6LGQDQor6Kyd5aaC6bS7DQor6Kyd5oiM5ZiJDQor6Kyd6IG/DQor6Kyd5L2Q5a6cDQor6Kyd5YWL5by3DQor6Kyd5Z2H5q+FDQor6Kyd5a6P5b+gDQor6Kyd5a6P57evDQor6Kyd5b+X5a6PDQor6Kyd5b+X5piODQor6Kyd5b+X5YGJDQor6Kyd5b+X6YC4DQor6Kyd5b+X5b63DQor6Kyd5om26YymDQor6Kyd56eA6Z2SDQor6Kyd56eA6JOuDQor6Kyd6IKy5aifDQor6Kyd6IKy6ZyWDQor6Kyd5Lqe5bWQDQor6Kyd5L6d5YCrDQor6Kyd5L2z5paHDQor6Kyd5L2z5a6PDQor6Kyd5L2z6IqzDQor6Kyd5L2z5YCpDQor6Kyd5L2z57SUDQor6Kyd5L2z6ZuvDQor6Kyd5L2z56mODQor6Kyd5L2z5qu7DQor6Kyd5L2p5ZCbDQor6Kyd5L2p6IqzDQor6Kyd5L2p54+KDQor6Kyd5L2p54+NDQor6Kyd5L2p55yfDQor6Kyd5L2p6JOJDQor6Kyd5L6R5pu4DQor6Kyd5YW25paMDQor6Kyd5ZGo54a+DQor6Kyd5Z2k5oayDQor6Kyd5a2f5ZCbDQor6Kyd5a2f6Iq4DQor6Kyd5a2f55yfDQor6Kyd5a2f5qi6DQor6Kyd5a2f6IqpDQor6Kyd5a6X5L2RDQor6Kyd5a6X5a65DQor6Kyd5a6X6LOiDQor6Kyd5a6X5oayDQor6Kyd5a6X57+wDQor6Kyd5a6cDQor6Kyd5a6c6IqzDQor6Kyd5a6c5YCrDQor6Kyd5a6c5am3DQor6Kyd5a6c6Ie7DQor6Kyd5a6b546yDQor6Kyd5a6b6KuuDQor6Kyd5bCa5YSSDQor6Kyd5bm45a6cDQor6Kyd5bqa57+wDQor6Kyd5b+g5YukDQor6Kyd5oCh5am3DQor6Kyd5om/6YGUDQor6Kyd5pa85Y+hDQor6Kyd5piT6ZyWDQor6Kyd5piM55G+DQor6Kyd5piODQor6Kyd5piO5a6PDQor6Kyd5piO5p2RDQor6Kyd5piO6IqzDQor6Kyd5piO5YCrDQor6Kyd5piO5pu4DQor6Kyd5piO5oOgDQor6Kyd5piO5oasDQor6Kyd5piO5oayDQor6Kyd5piO57+wDQor6Kyd5piO6Ku0DQor6Kyd5piH5ZOyDQor6Kyd5p2x5piHDQor6Kyd5p2x5puJDQor6Kyd5p2+5oayDQor6Kyd5qyj5a6PDQor6Kyd5qyj5oChDQor6Kyd5qyj6YeXDQor6Kyd5qyj6ZyWDQor6Kyd54mn6ZiuDQor6Kyd56eJ5a65DQor6Kyd56eJ6Ku6DQor6Kyd6Iqd6Z2SDQor6Kyd6YeR6LKeDQor6Kyd6ZW35Y6fDQor6Kyd6Zuo6Z2SDQor6Kyd6Z2S5qi6DQor6Kyd5L+K5a6PDQor6Kyd5L+e5p6wDQor6Kyd5aWV5aedDQor6Kyd5b2l5ZCPDQor6Kyd5pS/55S3DQor6Kyd5pS/6YGUDQor6Kyd5pS/57+wDQor6Kyd5p+P6IifDQor6Kyd55qH57+UDQor6Kyd56eL54eVDQor6Kyd576O546yDQor6Kyd6Ie0576kDQor6Kyd6YOB55GEDQor6Kyd5a626I+xDQor6Kyd5bqt5oGpDQor6Kyd5pmJ6LOiDQor6Kyd5rWp54S2DQor6Kyd57Sg6I+xDQor6Kyd5Lm+6ae/DQor6Kyd5pu855uIDQor6Kyd5ZyL5b2sDQor6Kyd5amJ546yDQor6Kyd5ZWf5paHDQor6Kyd5qKT6bqfDQor6Kyd5riF5rSyDQor6Kyd5reR6IqsDQor6Kyd5reR5aifDQor6Kyd5reR6YieDQor6Kyd55qO55uIDQor6Kyd56yg5YWDDQor6Kyd5Yex5YGJDQor6Kyd5Y2a55qTDQor6Kyd5aqb55CqDQor6Kyd5bWQ5bGPDQor6Kyd5oOg6IqsDQor6Kyd5oOg6JCNDQor6Kyd5pmv5LuBDQor6Kyd5pm65rWpDQor6Kyd5qSN5bKhDQor6Kyd55qT5pm6DQor6Kyd6I+K6JWZDQor6Kyd6YCy5b+gDQor6Kyd6ZuF5aaCDQor6Kyd6ZuF6ZuqDQor6Kyd6ZuF6JCNDQor6Kyd6Zuv5YexDQor6Kyd6aCG6ZqGDQor6Kyd5q+T546yDQor6Kyd55Ge5qKFDQor6Kyd6JCs6b6NDQor6Kyd6Kmp5oWnDQor6Kyd5ZiJ54+KDQor6Kyd5ZiJ6YqYDQor6Kyd5qau5ZOyDQor6Kyd56Kn6I+BDQor6Kyd57at5LuBDQor6Kyd57+g55KwDQor6Kyd6YqY5b+gDQor6Kyd6YqY5pm6DQor6Kyd6bOz546yDQor6Kyd5b636YieDQor6Kyd5oWn54+NDQor6Kyd5oWn55OKDQor6Kyd6JSa5YSSDQor6Kyd5a2457axDQor6Kyd5puJ5bWQDQor6Kyd54eV546yDQor6Kyd6JWZDQor6Kyd6J6N6b2KDQor6Kyd6Z2c5a6cDQor6Kyd6Z2c5YSADQor6Kyd55Km5aaCDQor6Kyd6bS76ae/DQor6Kyd56au5oiQDQor6Kyd6Y6u5a6HDQor6Kyd55OK5paHDQor6Kyd6Z+75YSSDQor6Kyd5a+255GiDQor6Kyd6ICA6aSKDQor6Kyd6aGv6YqYDQor6Kyd5pe76I6JDQor6Kyd5pmf6YqYDQor6Kyd54WS6aC7DQor6Kyd54e/6IGwDQor6Y2+5LmZ5rCRDQor6Y2+5YWD5oyvDQor6Y2+5paH5a6HDQor6Y2+5paH5qy9DQor6Y2+5pyI5ZyTDQor6Y2+5bm85YeMDQor6Y2+5rC46ZuEDQor6Y2+546J5oOgDQor6Y2+5YWG5rCRDQor6Y2+5oiQ5aWHDQor6Y2+5Lyv5ZCbDQor6Y2+5a2d5YW2DQor6Y2+5b+X5a6PDQor6Y2+5b+X6LGqDQor6Y2+56eA6IqzDQor6Y2+6IKy6Ku6DQor6Y2+5L6d6Z2cDQor6Y2+5L2z55yfDQor6Y2+5L2z56mODQor6Y2+5L2p6Iq4DQor6Y2+5L2p5am3DQor6Y2+5Y2T5YSSDQor6Y2+5a2f5oasDQor6Y2+5a6c5YWoDQor6Y2+5a6c6IiIDQor6Y2+5bCa5YSSDQor6Y2+5bu26I+vDQor6Y2+5om/55KLDQor6Y2+5piT6YGUDQor6Y2+5piO56eADQor6Y2+5piO5pmPDQor6Y2+5piO5oayDQor6Y2+5piH56mODQor6Y2+5qyj57+wDQor6Y2+56eJ6Ku6DQor6Y2+6YeR55KLDQor6Y2+5L+K55SrDQor6Y2+5pS/5rCRDQor6Y2+5pS/6YymDQor6Y2+55uI5oWnDQor6Y2+576O55CzDQor6Y2+6YOB57+ODQor6Y2+5oyv5rOTDQor6Y2+57SL5piTDQor6Y2+5ZWG6ae/DQor6Y2+5bSH5qKFDQor6Y2+5reR6IqsDQor6Y2+5reR6JCNDQor6Y2+5Yex5L6dDQor6Y2+5oOg5aaCDQor6Y2+5pm65YKRDQor6Y2+57Wi5aaCDQor6Y2+6YC455+zDQor6Y2+6Zuy5YWJDQor6Y2+5rqQ5b63DQor6Y2+6KOV5paHDQor6Y2+5ZiJ6bOzDQor6Y2+56aO5YWDDQor6Y2+6YqY5pm6DQor6Y2+5b636ZyWDQor6Y2+5qiC5ZCfDQor6Y2+5puJ5bWQDQor6Y2+6Yym55CzDQor6Y2+6Jaw5au6DQor6Y2+6bWs6aObDQor6Y2+5oe/6I+vDQor6Y2+5pe75ZycDQor6Z6g5bKx55CmDQor6Z+T5paH6LGQDQor6Z+T5YWL5YSJDQor6Z+T5L2p5YqtDQor6Z+T5a6c5r2UDQor6Z+T5piO5YCrDQor6Z+T55u45a6cDQor6Z+T5qKFDQor6Z+T6ZuF6ICMDQor6Z+T5ZiJ6ae/DQor6Z+T5a+255GpDQor5Y+i5reR6I+vDQor57Ch5LiK5ZOyDQor57Ch5aOr55uKDQor57Ch5aOr5r+gDQor57Ch5bCP6JWZDQor57Ch5paH5LqoDQor57Ch5paH6LK0DQor57Ch5LiW6KOVDQor57Ch5ben5am3DQor57Ch5rCR6b6NDQor57Ch546J54+NDQor57Ch56uL5Lq6DQor57Ch5LyK5amVDQor57Ch5Luw5aOvDQor57Ch5ZCJ6IGwDQor57Ch5a6H5bGPDQor57Ch55m+5oeJDQor57Ch6Iez6ZyGDQor57Ch5Ly25aifDQor57Ch5ZCb546yDQor57Ch5aak546yDQor57Ch5a6P5YCrDQor57Ch5bu35a6JDQor57Ch5b+X5a6JDQor57Ch5b+X5bOwDQor57Ch5b+X6ZuEDQor57Ch5b+X56mODQor57Ch56eA5p2PDQor57Ch56eA57SUDQor57Ch6LKd54+KDQor57Ch5L2z55CqDQor57Ch5L2p55CqDQor57Ch5a6X5b63DQor57Ch5oCh5am3DQor57Ch5piO6ZuBDQor57Ch546r546JDQor57Ch6Zuo6JStDQor57Ch5bu65LiADQor57Ch5pit6JC4DQor57Ch576O5aifDQor57Ch6Jm555CqDQor57Ch5a625pawDQor57Ch54+u6ZuFDQor57Ch5YGl5L+KDQor57Ch5ZyL5paMDQor57Ch5ZWf5oGGDQor57Ch5reR6IqsDQor57Ch5reR5am3DQor57Ch6I6J6Z2cDQor57Ch5Y2a5b2sDQor57Ch5oOg5rmYDQor57Ch5qOu5LmZDQor57Ch6I+v55yfDQor57Ch6ZuF5aaCDQor57Ch6aCG56uLDQor57Ch5pWs5bqtDQor57Ch5rqi5Z2HDQor57Ch55Ge5qO7DQor57Ch6IGW6LGqDQor57Ch6Kmp5bOwDQor57Ch5ZiJ5a6PDQor57Ch5ZiJ5b2sDQor57Ch5ZiJ6b2hDQor57Ch5ryi55KLDQor57Ch56aO5L2RDQor57Ch57at6JCxDQor57Ch6YGg55yfDQor57Ch6YqY6L6wDQor57Ch6bOz5YSADQor57Ch5oWn5aifDQor57Ch5oa25aaCDQor57Ch6Yyr5re1DQor57Ch6ae/6LK/DQor57Ch6Jed5bOwDQor57Ch6amq5r2UDQor57Ch55GL5YCrDQor57Ch5oGS6IGWDQor6IG25p2x5Y2XDQor6IG25pqQ5bO7DQor6JeN5a2Q5qGTDQor6JeN5YWD55qTDQor6JeN5paH5a2dDQor6JeN5byY5YGJDQor6JeN5Luy5YGJDQor6JeN5b+X55m8DQor6JeN5oCh5bmzDQor6JeN5piV57evDQor6JeN5pil55m8DQor6JeN5bO75b2sDQor6JeN5YGJ5LuBDQor6JeN5ZyL6I+vDQor6JeN5qKT5L6WDQor6JeN5oOg6JCNDQor6JeN6ZuF6b2hDQor6JeN5ZiJ5ZOyDQor6JeN5oWn54+KDQor6JeN6bub55GpDQor6ZeV5bCR6IqzDQor6ZeV5ZCf5aSZDQor6ZeV5piO5oWnDQor6ZeV6YCi5q+FDQor6ZeV54CF6IqsDQor6aGP5aOr5b2sDQor6aGP5aSn56aPDQor6aGP5bCP5YehDQor6aGP5pyIDQor6aGP5byY56WlDQor6aGP5rC46IqzDQor6aGP546J55GLDQor6aGP5YWJ546XDQor6aGP5aaC546JDQor6aGP5pyJ55S3DQor6aGP5Lyv5aWHDQor6aGP5ZGI5petDQor6aGP5aaZ6IqzDQor6aGP5a6P5ZOyDQor6aGP5a6P5Y+hDQor6aGP5b+X5oiQDQor6aGP5b+X5o+aDQor6aGP5b+X6bqfDQor6aGP56eA55yfDQor6aGP6Imv5r6kDQor6aGP5L2z5oWnDQor6aGP5a6X5bmzDQor6aGP5om/5YGJDQor6aGP56eJ5b63DQor6aGP5aWV5LuBDQor6aGP56eL55C0DQor6aGP6Iul5bqtDQor6aGP5a6256W6DQor6aGP54+u5bWQDQor6aGP5ZyL5pu4DQor6aGP5bCJ5YexDQor6aGP5pmo5pqQDQor6aGP5reR6ZuyDQor6aGP5am3546yDQor6aGP6I+v5oiQDQor6aGP6ZuF5Y2JDQor6aGP6Zuv6Z+7DQor6aGP55Ge5paHDQor6aGP55Gc5oWnDQor6aGP6IGW6bS7DQor6aGP5ZiJ5oiQDQor6aGP5ZiJ55CzDQor6aGP5a+n5L2RDQor6aGP56aP6aCGDQor6aGP6YqA5qGQDQor6aGP6bO05oW2DQor6aGP55Gp6bWsDQor6aGP5r6k5a6HDQor6aGP6bS75qy9DQor6aGP54275L2RDQor6aGP6Yi66Iq4DQor6a2P5aOr5YKRDQor6a2P5a2Q5pm0DQor6a2P5LuB5aiBDQor6a2P5paH57a6DQor6a2P5ben5pm0DQor6a2P546J6ZuvDQor6a2P5Lu75bu3DQor6a2P5ZCN5rGODQor6a2P5a6H6YGUDQor6a2P55m+55ubDQor6a2P5Ly25aifDQor6a2P5ZCb5r2UDQor6a2P5a2d5a+sDQor6a2P5bKR6IqsDQor6a2P5b+X5YCrDQor6a2P56eA5oGsDQor6a2P6Imv5L2RDQor6a2P5L2z5Y2/DQor6a2P5a6c5a+sDQor6a2P5piO56ugDQor6a2P5L+K5pe6DQor6a2P5pil55SfDQor6a2P6Iux6Y6uDQor6a2P5pmJ5LiADQor6a2P5YGJDQor6a2P5bSH5qGTDQor6a2P5reR546rDQor6a2P6YCi5q+FDQor6a2P5pyd5L+hDQor6a2P6YC4546yDQor6a2P5oSb5rSlDQor6a2P5ruH5L2RDQor6a2P562g5paHDQor6a2P6Yi06IqdDQor6a2P5ZiJ6ImvDQor6a2P5aum5aadDQor6a2P56Kp56mODQor6a2P6YqY5ryiDQor6a2P5oWV5biGDQor6a2P6Lao5ZCJDQor6a2P6bqS5a65DQor6a2P55GE6Kq8DQor6b6Q5rC45Z+5DQor5pug5amJ5ZCbDQor576F5Y2D6ZuvDQor576F5a2Q6LuSDQor576F5bC55Ly2DQor576F5LuB5YuHDQor576F5YWD55SrDQor576F5YWB5LitDQor576F5Y+L6IGyDQor576F5b+D5bGPDQor576F5paH5a6cDQor576F5paH5b2sDQor576F5paH6b2KDQor576F5pyI5YewDQor576F5LiW6YqYDQor576F5LuV5qOLDQor576F5ben6I6JDQor576F5q2j6YKmDQor576F5rC45pm6DQor576F546J6JCNDQor576F5Lqm5peLDQor576F5Luw55yfDQor576F5YWG57atDQor576F5a6H5Lu7DQor576F5pet5ZCbDQor576F6Iez5ZaEDQor576F5a6P5LiADQor576F5b+X6ZuEDQor576F56eA546yDQor576F5Lqe5a+nDQor576F5L2z55CmDQor576F5a6c5ZCbDQor576F5oCh5oOgDQor576F5piO56ugDQor576F5qyj5oWIDQor576F6Iq36Z2SDQor576F5L+K5b2lDQor576F5b2lDQor576F546y546yDQor576F576O6JOuDQor576F6IuR5qaVDQor576F5a625qyjDQor576F5oyv5bu3DQor576F5rOw5YCrDQor576F54+u5aifDQor576F57Sg6IqxDQor576F5YGJ5ZOyDQor576F5YGl5b+XDQor576F5ZSv55GEDQor576F5ZyL6I+vDQor576F5ZyL5pqQDQor576F5amJ5ailDQor576F5by3DQor576F5pWP5paHDQor576F5pWP5YSADQor576F5reH5paHDQor576F5reR6JOJDQor576F57S55paHDQor576F5YKRDQor576F5Yex6aCkDQor576F5Y2a5L+KDQor576F5oOg5pa5DQor576F5oOg6JitDQor576F5pm66IO9DQor576F57Sr6I+BDQor576F6I+v5r+DDQor576F6Yie6ICADQor576F6ZuF5pWPDQor576F6Zuv55C0DQor576F5q+T5YKRDQor576F55Ge5qauDQor576F6IGW55CzDQor576F6YGUDQor576F5ZiJ546yDQor576F5qau6LydDQor576F6Zqb5bedDQor576F5oW25YKRDQor576F55Gp5qO7DQor576F5puJ5aiBDQor576F6IiI5a6JDQor576F6bS75Z+6DQor576F6aao5a6cDQor576F54WS56iLDQor6K2a5Y+I5rCRDQor6K2a5YWJ6I+vDQor6K2a5L2p5bWQDQor6K2a5oKF6aaoDQor6K2a5pm65LuBDQor6K2a6KumDQor6Zec5LiA5b+DDQor6Zec5b+X5a6HDQor6Zec5reR6ZuyDQor5Zq05a2Q562RDQor5Zq05b+D5YWDDQor5Zq05Y+v5ZCbDQor5Zq05b+X5ZOyDQor5Zq05pil6bOzDQor5Zq05oyv6IiIDQor5Zq05amJ546yDQor5Zq05reR6I+BDQor5Zq06Kmg6IGWDQor5Zq057at5b63DQor5Zq06aalDQor56uH55Ge6ZyeDQor6Je65b+D5oChDQor6JiH5Y2D5LujDQor6JiH5aOr6LGqDQor6JiH5a2Q57+UDQor6JiH5Lit5oChDQor6JiH5YWD5LmZDQor6JiH5paHDQor6JiH5paH5aifDQor6JiH5paH6LydDQor6JiH5LiW5bqtDQor6JiH5ben5a+nDQor6JiH5q2j5a62DQor6JiH5rC45YKRDQor6JiH546J5L+uDQor6JiH56uL5YexDQor6JiH5aaC6JWZDQor6JiH56u55a6JDQor6JiH5ZCb6ZyPDQor6JiH5a6P5rOwDQor6JiH5b+X5a2fDQor6JiH5b+X5aCFDQor6JiH5b+X6bS7DQor6JiH56eA546yDQor6JiH6IKy5byYDQor6JiH6IKy5L+eDQor6JiH6IKy55GxDQor6JiH5L2z6LazDQor6JiH5L2p55GcDQor6JiH5a6X5LiADQor6JiH5bCa55G+DQor6JiH5oCh5aaCDQor6JiH5oCh5ZCbDQor6JiH5oCh6I+BDQor6JiH5oCh6aaoDQor6JiH5piO5L+KDQor6JiH5piO6bS7DQor6JiH5q2m6b6NDQor6JiH6Iqz5q2jDQor6JiH6Iqz55GpDQor6JiH6Z2S5aaZDQor6JiH5L+h5rqQDQor6JiH5L+K5aSrDQor6JiH5L+K56WlDQor6JiH5L+K6YqYDQor6JiH5L+e5aaCDQor6JiH5YuH6KqgDQor6JiH5aWV5YKRDQor6JiH5aiB6YGUDQor6JiH5bu65LitDQor6JiH5bu65b+XDQor6JiH5bu66LGqDQor6JiH5b2l54aSDQor6JiH5oGG6IezDQor6JiH5pS/6KyZDQor6JiH5pit5ZCbDQor6JiH5pix5Lu7DQor6JiH5p+P5beeDQor6JiH5p+P5qi6DQor6JiH54+K55GpDQor6JiH55qH5Y6fDQor6JiH55uI56mXDQor6JiH57SA5pWPDQor6JiH576O546yDQor6JiH6Ie05LuBDQor6JiH6Iux55qTDQor6JiH6LKe54eVDQor6JiH6YOB5YCrDQor6JiH6YOB6ZuFDQor6JiH6aaZ55CqDQor6JiH5YCJ5rC4DQor6JiH5ZOy5YSEDQor6JiH5a62DQor6JiH5a625L+hDQor6JiH5a6255GpDQor6JiH5bO75rCRDQor6JiH5bqt55GkDQor6JiH5oyv6YqYDQor6JiH5qGT5oW2DQor6JiH5rWp54K6DQor6JiH55uK56W/DQor6JiH56qI55GxDQor6JiH57SU5oWnDQor6JiH6LuS5rCRDQor6JiH5YGJ6KqgDQor6JiH5ZyL5YW4DQor6JiH5aCC6LGqDQor6JiH5amJ5oOgDQor6JiH5pWPDQor6JiH5riF5a6JDQor6JiH5reR5am3DQor6JiH55qO5oWnDQor6JiH6I6J5oOgDQor6JiH5Y2a546EDQor6JiH5oOg6LKeDQor6JiH5pm25pawDQor6JiH5rmY5oChDQor6JiH6Iic5Y2/DQor6JiH6YC455yfDQor6JiH6ZuF5ZCbDQor6JiH6ZuF5oOgDQor6JiH6ZuF5oWnDQor6JiH6aCG6KqgDQor6JiH5oSP5bWQDQor6JiH5pWs6I+xDQor6JiH5q+T5b2sDQor6JiH54y357+UDQor6JiH552m5LuBDQor6JiH576k5YKRDQor6JiH6IGW5ra1DQor6JiH6KOV5paHDQor6JiH6Kmp5am3DQor6JiH6Z2W5bWQDQor6JiH5ZiJ5a6PDQor6JiH5ZiJ6bS7DQor6JiH56Kn5pitDQor6JiH6IGe6Ky5DQor6JiH5YSE54+NDQor6JiH5oWn5paHDQor6JiH5oWn5aifDQor6JiH5q+FDQor6JiH5puJ5aaCDQor6JiH5puJ6IqDDQor6JiH6Yym5piHDQor6JiH6Z2c6IqzDQor6JiH6IGy5oyvDQor6JiH6bS75YSADQor6JiH6bWs57+wDQor6JiH6bqX6I+vDQor6JiH5pe75ZCbDQor6JiH54Oc5q+FDQor6JiH55Ch6KmVDQor6JiH55GL55CzDQor6JiH6LGK5qOLDQor6JiH6Yi66I+BDQor6ZCY5aOr5qy9DQor6ZCY5paH56eADQor6ZCY546J5aaCDQor6ZCY5L2z57W5DQor6ZCY55uI5YexDQor6ZCY5oy66LGqDQor6ZCY5ZyL6YqYDQor6ZCY5pWP5oSrDQor6ZCY5oOg5a6HDQor6ZCY6aCG56a5DQor6ZCY56Kn6JitDQor6ZCY6aao6Kq8DQor6aWS5b+X6LGqDQor6aWS5LquDQor6aWS54+u6b2hDQor6aWS5pWs5ZyLDQor6buo5LiA54K6DQor6aGn5paH57WiDQor6aGn56uL6JiLDQor6aGn5a6X5rKbDQor6aGn5YCp5aaCDQor6aGn5bSH5b63DQor6aGn57+g6I+vDQor6b6U5LqO54+KDQor6b6U5paH56mODQor6b6U5YWG56W6DQor6b6U5L2p5ZCbDQor6b6U6Z2S6ZuyDQor6b6U5b2l5ZCNDQor6b6U6LKe5aaCDQor6b6U5pu46IGWDQor6b6U5reR6IuXDQor6b6U6ZuF5qyjDQor6b6U6Z2W6KmSDQor6b6U6LGr5oWnDQor5LqT6ZqG56WlDQor5L2Y5bCa6bS7DQor5L2Y6IGv5paMDQor6YK+5Lqm5Y2XDQor5raC5LiW5ZKMDQor5raC5ZCb6JOJDQor5raC6IKy5qauDQor5raC5qyj5a6PDQor5raC5pS/55S3DQor5raC5oyv5rCRDQor5raC5ZWf5Y6fDQor5raC5a+M5pifDQor5raC6ZuF54eVDQor5raC5ZiJ5Y6fDQor5raC5oWn54+NDQor5raC6ICA5Y2HDQor57KY5byY5ZCJDQor57KY6IKy55GLDQor57KY57SU5aaCDQor57KY6IGW6ZGrDQor57KY6ICA5LuBDQor6YSU5b+D5oChDQor6Z2z56uL5YGJDQor6YS65YWJ5a+nDQor5qyS5a2j5by3DQor7oCA6Iqz55CmDQor7oCA5amJ5am3DQor7oCA6YqY5rqQDQor7om+5paH5YuzDQor7om+6bOz55CqDQor7oun5L+h576pDQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3BlcmYvZGF0YS9jb2xsYXRpb24vVGVzdE5hbWVzX0phcGFuZXNlLnR4dCBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9wZXJmL2RhdGEvY29sbGF0aW9uL1Rlc3ROYW1lc19KYXBhbmVzZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGMwZDc1ZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9wZXJmL2RhdGEvY29sbGF0aW9uL1Rlc3ROYW1lc19KYXBhbmVzZS50eHQKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3BlcmYvZGF0YS9jb2xsYXRpb24vVGVzdE5hbWVzX0phcGFuZXNlX2gudHh0IGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3BlcmYvZGF0YS9jb2xsYXRpb24vVGVzdE5hbWVzX0phcGFuZXNlX2gudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyYWU4ODkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvcGVyZi9kYXRhL2NvbGxhdGlvbi9UZXN0TmFtZXNfSmFwYW5lc2VfaC50eHQKQEAgLTAsMCArMSwyMjc0MiBAQAor77u/44GC44GN44KC44GoLOOChOOBmeOBig0KK+OBguOBjeOBsCzjgZfjgZLjgosNCivjgYLjgonjgYQs44Gy44Gn44GC44GNDQor44GC44KJ44GELOOBkeOCk+OBhOOBoQ0KK+OBguOBi+OBjOOCjyzjgajjgZfjgYoNCivjgYLjgonjgY0s44Gb44GE44GUDQor44GC44GE44GL44KPLOOBruOCiuOBig0KK+OBguOBjeOBrizjgobjgY3jgYoNCivjgYLjgY3jgoTjgb4s44Gk44KI44GXDQor44GC44GV44GELOOBsuOBqOOBlw0KK+OBguOBuSzjgb7jgoLjgosNCivjgYLjgorjgYws44Gk44Go44KADQor44GC44GN44GfLOOCiOOBl+OBpuOCiw0KK+OBguOBi+OBpOOBiyzjgYvjgZrjgbLjgZMNCivjgYLjgonjgYQs44G+44GV44Gv44KLDQor44GC44GV44Gv44KJLOOBi+OBmuOBig0KK+OBguOBpOOBvyzjgb7jgZXjgYLjgY0NCivjgYLjgo/jgoQs44Gy44Go44GXDQor44GC44GV44GL44KPLOOBqOOBl+OBguOBjQ0KK+OBguOBiuOBjSzjgYrjgZXjgoANCivjgYLjgo/jgZos44GC44GN44KJDQor44GC44GN44GP44GVLOOCiOOBhuOBmeOBkQ0KK+OBguOBiuOChOOBjizjga/jgaTjgYvjgZoNCivjgYLjgZjjgZXjgo8s44GX44KF44GG44GE44GhDQor44GC44GE44GdLOOChOOBmeOBlw0KK+OBguOBiuOBl+OBvizjgaHjgojjgYvjgZoNCivjgYLjgajjgYYs44G+44GV44Gy44GTDQor44GC44GV44GuLOOCiOOBl+OChA0KK+OBguOCiuOBjCzjgZ3jgYbjgYTjgaENCivjgYLjgYrjgY0s44KK44KH44GG44G444GEDQor44GC44GE44GL44KPLOOChuOBjeOBig0KK+OBguOBjeOBnyzjgb7jgZXjgbLjgo0NCivjgYLjgZXjga4s44Gu44KK44GC44GNDQor44GC44GV44GoLOOBsuOBp+OBlw0KK+OBguOCieOBjSzjgojjgZfjgYvjgZoNCivjgYLjgpPjganjgYYs44KE44GZ44GXDQor44GC44GV44GL44KPLOOBsuOCjeOBlw0KK+OBhOOBhOOBoCzjgb7jgZPjgagNCivjgYTjgo/jgZXjgo8s44G+44GV44GNDQor44GE44GX44GL44KPLOOBvuOBleOBig0KK+OBhOOBruOBhuOBiCzjgbLjgo3jgbLjgagNCivjgYTjgZfjga/jgoks44KI44GX44Gu44KKDQor44GG44GL44GYLOOBleOBoeOBkw0KK+OBhuOCgeOBn+OBqyzjgYvjgaTjgbLjgZMNCivjgYrjgZHjgZ/jgass44GR44KT44GYDQor44GK44GK44GZ44GOLOOBguOBjeOBsuOCjQ0KK+OBiuOBiuOBi+OCjyzjgb/jgY3jgbLjgZMNCivjgYvjgajjgYYs44G+44GV44Go44GXDQor44GL44KCLOOBvuOBleOBguOBjQ0KK+OBj+OBvuOBjOOBhCzjgb7jgZXjgZcNCivjgZPjgpPjgaks44GC44GN44KJDQor44GZ44GO44KC44GoLOOBiuOBleOCgA0KK+OBr+OBvuOBleOBjSzjgojjgZfjga7jgooNCivjgaHjgaAs44GX44KF44KT44GYDQor44Gq44GL44KA44KJLOOBkeOBhOOBnuOBhg0KK+OBquOBjOOBnyzjgaHjgYjjgZMNCivjgZXjgo/jgoDjgoks44GL44Gh44GTDQor44Gq44KL44GKLOOCiOOBl+OBruOBtg0KK+OBquOCiuOBnyzjgobjgb/jgZMNCivjga/jgZvjgYzjgo8s44Gy44KN44GTDQor44G144GY44GfLOOBkeOBhOOBkw0KK+OBteOBmOOCj+OCiSzjgZ/jgYvjgZMNCivjgbbjgojjgYYs44Gm44Gk44GKDQor44G744KKLOOBk+OBhuOBmA0KK+OBv+OBquOBv+OCgOOCiSzjgaHjgYLjgY0NCivjgb/jgoTjgZjjgb4s44Gh44KI44KKDQor44KE44G+44GgLOOBvuOCig0KK+OChOOBvuOBkOOBoSzjgZ/jgYvjgZcNCivjgoTjgarjgY7jga/jgoks44G/44Gp44KKDQor44KI44GX44GuLOOBl+OCk+OBhOOBoQ0KK+OBq+OBhOOBoCzjgY/jgavjgbLjgZMNCivjgYrjgYrjgYTjgoTjgb4s44KG44GG44GTDQor44GL44Gq44GM44KPLOOBhOOBoeOCjeOBhg0KK+OBjeOCgOOCiSzjgorjgYjjgZMNCivjgaTjgYvjgZbjgY0s44G/44G7DQor44GL44KP44GgLOOBquOBiuOBkw0KK+OBguOBleOBi+OCjyzjgb/jgZXjgZMNCivjgZfjgoLjgaQs44G+44GV44GC44GNDQor44GK44GLLOOBn+OBi+OBsuOBqA0KK+OBiuOBjOOCjyzjgZPjgZnjgZENCivjgZ/jgYTjgoks44GX44KH44GG44GE44GhDQor44GE44GX44GuLOOBjeOCiOOBquOBjA0KK+OBjeOBv+OBl+OBvizjgYLjgY3jgokNCivjgZXjgajjgYYs44Gm44Gk44KEDQor44KE44G+44GgLOOBiuOBleOCgA0KK+OBiuOBiuOBnyzjgarjgYrjgb/jgaENCivjgb7jgYjjgaAs44Gy44Gn44Go44GXDQor44GL44GW44KJ44GXLOOBv+OBpOOCiw0KK+OBlOOBqOOBhizjgYvjgaTjga7jgooNCivjgbvjgZcs44G+44KC44KLDQor44GP44KN44GgLOOBl+OCk+OChA0KK+OBpOOBi+OCj+OBjSzjgajjgZfjgoQNCivjgYTjgarjgYzjgY0s44G+44GV44Gy44KNDQor44GE44KP44KC44GoLOOBn+OCguOBpA0KK+OBpOOCi+OBnyzjgZ/jgYvjgZcNCivjgYTjgZfjgZjjgb4s44KK44KH44GG44G444GEDQor44KE44G+44Gq44GLLOOBsuOCjeOBqOOBlw0KK+OBhuOBiOOBjSzjgYLjgY3jgZMNCivjgavjgZfjgoDjgoks44GC44Gk44GTDQor44KP44GE44GgLOOBn+OBoOOBlw0KK+OCiOOBl+OBoCzjgovjgb8NCivjgZfjgbbjgoQs44KG44Gf44GLDQor44GC44Go44GGLOOBvuOBleOBruOCig0KK+OBv+OChOOBnyzjgYvjgYrjgosNCivjgYrjgYrjgZ/jgY0s44Gk44GO44GKDQor44GN44KI44GK44GLLOOBvuOBk+OBqA0KK+OBiuOBiuOBn+OBqyzjgZ/jgYvjgZcNCivjgavjgZfjgo/jgY0s44Gq44GK44G/DQor44Gr44GX44KE44G+LOOBn+OBi+OBlw0KK+OBv+OBl+OBvizjgZ/jgYvjgobjgY0NCivjgYvjgajjgYYs44Gy44KN44GXDQor44GE44G+44GKLOOBv+OBmuOBuw0KK+OBiuOBluOBjSzjgZPjgYbjgZgNCivjgZvjgY3jgoQs44G+44GV44KG44GNDQor44Gk44GP44GgLOOBruOBtuOChuOBjQ0KK+OBv+OCiOOBlyzjga7jgbbjgb7jgZUNCivjgojjgZfjgb8s44Gf44GL44KG44GNDQor44GV44GV44GK44GLLOOBn+OBi+OBlw0KK+OBiuOBl+OBvizjgaHjga/jgosNCivjgY/jgbzjgZ8s44Gh44Ga44GTDQor44GX44Gw44KE44G+LOOBl+OCheOBhuOBnuOBhg0KK+OBiuOBiuOBj+OBvCzjgajjgarjgb8NCivjgZ/jgaHjga4s44GY44KF44KTDQor44KP44GgLOOBv+OBoeOCiA0KK+OBvuOBpOOBl+OBnyzjgb7jgZXjgoLjgooNCivjgZPjgoDjgoks44KE44GZ44Gy44GTDQor44G+44GN44GX44GfLOOBkeOBhOOBkw0KK+OBguOBi+OBiizjgoTjgZnjgbLjgo0NCivjga/jgZfjgoLjgags44Gy44Go44GXDQor44GK44GK44GuLOOBi+OBmuOBig0KK+OBm+OBjeOCguOBqCzjgojjgZfjgYoNCivjgb7jgYjjgaAs44Gh44GL44KJDQor44G/44Gk44G744KKLOOBquOBiuOBjQ0KK+OBv+OBquOBv+OBnuOBrizjgb7jgZXjgY0NCivjgZvjgYzjgo8s44GL44GK44KKDQor44GZ44Ga44GNLOOBqOOCiOOBmA0KK+OBjeOBn+OBjOOCjyzjgojjgZfjgZ/jgYsNCivjgojjgZfjgoTjgZks44GY44KN44GGDQor44KE44G+44KC44GoLOOBvuOCig0KK+OBi+OBqOOBhizjgbLjgo3jgZcNCivjgYvjgo/jgYvjgb8s44KI44GGDQor44G+44GN44GuLOOBquOBiuOBjQ0KK+OBmeOBmuOBjSzjgb7jgZXjgYoNCivjgbXjgovjgZXjgo8s44GV44Go44GXDQor44Gv44KE44GXLOOBmA0KK+OBhOOBvuOBq+OBlyzjgajjgZfjgbLjgZMNCivjgb/jgoTjgoLjgags44KG44GLDQor44G+44GNLOOBj+OBq+OBguOBjQ0KK+OBk+OBhOOBpyzjgZXjgbsNCivjgo/jgZ/jgarjgbks44G+44GV44GTDQor44GK44GK44Gv44GXLOOBsuOBqOOBlw0KK+OBguOBi+OBiizjgYLjgY3jgYoNCivjgYLjgZXjgYQs44GL44Ga44GTDQor44GE44G+44GELOOBn+OBi+OBlw0KK+OBjeOCiSzjgb7jgZXjgbLjgZMNCivjgavjgZfjgoDjgoks44Gm44KL44GNDQor44KI44GX44GL44KPLOOBqOOBl+OChuOBjQ0KK+OBv+OBquOBvyzjgZHjgpPjgZgNCivjgaTjgovjgZ8s44Gu44KK44GKDQor44Gq44GL44KA44KJLOOBmOOCheOCk+OBhOOBoQ0KK+OBn+OBquOBiyzjgZHjgpPjgZgNCivjgb7jgaTjgYbjgoks44Gf44GR44GXDQor44GZ44GO44GfLOOBmA0KK+OBi+OCj+OBhCzjgajjgZfjgYoNCivjgZPjgY/jgbws44GV44Gk44GNDQor44Gk44GgLOOBvuOBk+OBqA0KK+OBv+OChOOBn+OBkSzjgajjgZfjgZ/jgYsNCivjgY/jgo3jgZXjgo8s44KI44GX44GL44GaDQor44GZ44G/44Gy44KJLOOBvuOBleOBsuOBkw0KK+OBn+OBi+OBjSzjgb7jgZXjgYoNCivjgYTjgZfjgags44GT44GG44GNDQor44KE44G+44GgLOOCguOBqOOBi+OBmg0KK+OBq+OBhOOBpCzjga7jgbbjgYLjgY0NCivjgYTjgo/jgoDjgoks44GL44KT44GYDQor44GL44KP44Gq44G5LOOCiOOBl+OBsuOCjQ0KK+OBquOBjOOBhCzjgbLjgo3jgobjgY0NCivjgoTjgb7jga0s44Gh44GC44GNDQor44GE44G+44GELOOBn+OBi+OChuOBjQ0KK+OBquOBi+OBiizjgYTjgZXjgYoNCivjgYrjgZfjgY3jgoos44G144G/44Gv44KLDQor44GE44GX44GL44KPLOOBmOOCheOCkw0KK+OBiuOBi+OBmOOBvizjgZjjgoXjgpMNCivjgYrjgYrjgavjgZcs44G+44GV44Gv44KLDQor44GZ44Ga44GNLOOBpuOBpA0KK+OChOOBvuOBquOBiyzjgZXjgaTjgb8NCivjgZ/jgavjgZDjgaEs44GL44Ga44Gy44KNDQor44GL44KP44G5LOOBqOOBjeOBig0KK+OBk+OCk+OBrizjgb/jgY0NCivjgZXjgajjgYYs44KE44GZ44Gy44KNDQor44Gf44GL44KE44G+LOOBl+OCk+OBhOOBoQ0KK+OCguOCiuOBv+OBoSzjgYTjgZ/jgosNCivjgbvjgorjgYvjgo8s44GL44Gk44G/DQor44G144GP44GELOOBn+OBvuOBkw0KK+OBjeOBn+OCgOOCiSzjgYLjgY3jgokNCivjgarjgYvjga/jgoks44Gy44KN44G/DQor44GE44Gh44GELOOBsuOBp+OBruOCig0KK+OBhOOCj+OBlSzjgYvjgojjgZMNCivjgZnjgZrjgY0s44GX44KF44KT44GYDQor44KI44Gt44Gf44GrLOOBi+OBpOOBteOBvw0KK+OBn+OBrizjgZ/jgZHjgZcNCivjgZfjgbDjgZ8s44Gy44Gn44KIDQor44GE44Gu44GG44GILOOBvuOBleOBruOCig0KK+OBhOOBl+OBi+OCjyzjgajjgZfjgYoNCivjgY3jgZcs44G+44GV44G/DQor44GC44KP44GILOOBguOBpOOBlw0KK+OBn+OBkeOBiizjgojjgZfjgYLjgY0NCivjgY3jga7jgZfjgZ8s44GL44Ga44Gy44GTDQor44Gk44GL44GgLOOBteOBv+OBguOBjQ0KK+OBguOCiuOBqeOCgSzjgajjgZfjgobjgY0NCivjgY3jgaPjgYvjgo8s44Go44GX44GC44GNDQor44GK44GM44GV44KP44KJLOOBsuOBleOBi+OBmg0KK+OBquOBjOOBmyzjgZ/jgYvjgbLjgo0NCivjga/jgovjgoTjgb4s44GC44Gk44Gy44GTDQor44GK44GaLOOChOOBmeOBig0KK+OBk+OBleOBiyzjgajjgZfjgYvjgZoNCivjgZfjgonjgZXjgY0s44Go44GK44KLDQor44Gf44Gq44G5LOOBpOOBqOOCgA0KK+OBhOOBkeOBjOOBvyzjgaTjgojjgZcNCivjgZPjgbDjgoTjgZcs44GY44KF44KT44GE44GhDQor44G+44Gk44Gw44KJLOOBquOBiuOBqA0KK+OBquOBi+OBjOOCjyzjgoLjgorjgbLjgo0NCivjgYrjgYzjgo8s44Gb44GE44GYDQor44KI44GX44GgLOOBvuOBleOBruOBtg0KK+OBhOOBkSzjgZXjgaDjga7jgbYNCivjgZ/jgavjgZDjgaEs44G+44GV44G/44GhDQor44G+44GI44GgLOOBsuOCjeOBlw0KK+OBsuOCieOBrizjgZ/jgYvjgobjgY0NCivjgZfjgb/jgZos44GN44G/44GTDQor44KE44G+44GgLOOBguOBjeOBqOOBlw0KK+OBn+OBquOBiyzjgbLjgo3jgYLjgY0NCivjgZPjgb7jgaTjgZbjgY0s44G+44KC44KLDQor44GL44Go44GGLOOBvuOBleOBi+OBmg0KK+OBiuOCjyzjga7jgorjgZMNCivjgYTjgo/jgoDjgoks44Gy44KN44Gf44GgDQor44GE44KK44GILOOBi+OBmuOChuOBjQ0KK+OBguOBi+OChOOBvizjgb7jgZXjgobjgY0NCivjgYLjgY3jgoLjgags44Gy44KN44GC44GNDQor44GL44G/44KA44KJLOOBguOBjeOBsuOBkw0KK+OBmeOBv+OBnyzjgYvjgYrjgosNCivjga/jgb7jgZXjgY0s44GC44Gk44GXDQor44KE44GZ44GgLOOBvuOCguOCiw0KK+OBn+OBkeOCgOOCiSzjgb/jgY3jgoQNCivjgoDjgonjgYvjgb8s44Go44G/44Gk44GQDQor44Gq44GL44GY44G+LOOBsuOBleOBqOOCgg0KK+OCguOCiuOCguOBqCzjgZPjgYbjgZgNCivjgZvjgY3jgZDjgaEs44Gf44GL44KG44GNDQor44Gq44GL44GY44G+LOOBvuOBleOBsuOBkw0KK+OBjeOBjOOCjyzjgbLjgo3jgbLjgZUNCivjgZ/jgYvjgbLjgoks44Gf44GL44GXDQor44KC44Gh44GgLOOBguOBpOOBlw0KK+OBi+OCgeOChOOBvizjgZ/jgYvjgZcNCivjgYrjgoTjgb7jgaAs44G+44GV44Gy44GVDQor44Gf44Gq44GLLOOBpuOCi+OBsuOBlQ0KK+OBu+OCk+OBvizjgZfjgpPjgZgNCivjgY3jga7jgZfjgZ8s44KE44GZ44Gy44GTDQor44GX44Gu44Gk44GLLOOBruOBtuOBl+OBkg0KK+OBguOBhOOBr+OCiSzjgoTjgZnjgbXjgb8NCivjgarjgYzjgb7jgaQs44GI44GE44GYDQor44Go44KI44KA44KJLOOBvuOBleOBguOBjQ0KK+OBsuOCieOBrizjgZ/jgYvjgZcNCivjgY3jgoDjgoks44GY44KF44KTDQor44GE44GR44GgLOOBm+OBhOOBmA0KK+OBhOOBl+OBr+OCiSzjgobjgYbjgZMNCivjga7jgZDjgaEs44G+44GV44KLDQor44GT44GR44GkLOOBv+OBpOOBvuOBlQ0KK+OBiuOBj+OChOOBvizjgYLjgaTjgbLjgZMNCivjga/jgb7jgZDjgaEs44GX44KT44GYDQor44Gk44GY44GV44GLLOOBsuOBp+OBguOBjQ0KK+OBhOOBoeOBi+OCjyzjgZXjgajjgosNCivjgojjgZfjgaAs44Gb44GE44GUDQor44KE44G+44GgLOOCiOOBhuOBhOOBoQ0KK+OBl+OBv+OBmizjgoTjgZnjgZcNCivjgZXjgYvjgYzjgb8s44Gu44KK44GL44GaDQor44GT44GZ44GOLOOBsuOBleOBsuOBkw0KK+OBq+OBl+OBoCzjgZvjgYTjgZgNCivjgYTjgYTjgaAs44GL44Gk44KJDQor44GG44Gh44GgLOOChOOBmeOBvw0KK+OCguOBqOOChOOBvizjgaHjga/jgoQNCivjgb/jgoTjgoLjgags44GE44GP44KIDQor44GT44Gw44KE44GXLOOChOOBmeOBlw0KK+OBi+OBqOOBhizjgbLjgo3jgobjgY0NCivjgZfjgonjgYQs44GV44Go44GXDQor44Gv44GO44KP44KJLOOBk+OBhuOBmA0KK+OChOOBvuOBhuOBoSzjgobjgY3jgbLjgacNCivjgb/jgaTjga/jgZcs44GL44GK44KKDQor44KC44KT44GYLOOCiOOBhuOBhOOBoQ0KK+OBn+OBjeOCguOBqCzjga7jgorjgZMNCivjgYrjgY/jgaAs44GX44KF44GG44GYDQor44Gk44GL44KC44GoLOOBl+OCheOBhuOBmA0KK+OCgOOBk+OBr+OCiSzjgoTjgZnjgYTjgY8NCivjgZXjgovjgoQs44G/44Gh44GKDQor44GK44GL44GY44G+LOOBqOOBl+OBsuOBkw0KK+OBu+OBl+OBrizjgbLjgZXjgagNCivjgbvjgZcs44Gy44KN44G144G/DQor44G144GX44G/LOOBk+OBhuOBhOOBoQ0KK+OBn+OBi+OBr+OBlyzjgZ/jgaTjgoQNCivjgavjgZfjgoTjgb4s44GX44KT44GYDQor44Gk44KL44G+44GhLOOBl+OCh+OBhuOBhOOBoQ0KK+OBqOOBv+OBnyzjgarjgovjgagNCivjgYbjgaHjgaAs44Go44GK44KLDQor44GK44GK44Gf44GLLOOChuOBhuOBkw0KK+OBleOBi+OBhCzjgZ/jgYvjgbLjgZUNCivjgZ3jgYzjgbks44GL44Gk44G/DQor44KP44GgLOOBkeOCk+OBmA0KK+OBk+OBleOBiyzjgb7jgZXjgb8NCivjgYLjgZ0s44GC44GR44G/DQor44GC44KJ44GELOOBqOOBl+OBr+OCiw0KK+OBmeOBjuOCgOOCiSzjgZfjgZLjgYoNCivjgYLjgY3jgojjgZcs44GL44Ga44GKDQor44GC44GV44GL44KPLOOBpOOBqOOCgA0KK+OCj+OBoCzjgZXjgYvjgYgNCivjgYTjgZHjgaAs44GT44GG44GE44GhDQor44GK44GL44KC44GoLOOCiuOCh+OBhuOBmA0KK+OBguOBiuOBjSzjgb7jgZXjgosNCivjgYbjgYjjgZXjgo8s44Gk44KI44GXDQor44GG44KE44G+LOOBsuOBp+OBguOBjQ0KK+OBquOBi+OBr+OBvizjgZnjgZnjgoANCivjgYvjgo/jgoLjgags44G+44GV44KG44GNDQor44GZ44GI44G+44GkLOOBmOOCheOCk+OBmA0KK+OBquOBjOOBhCzjgZXjgajjgZcNCivjgarjgYvjga/jgoks44KG44GG44Ge44GGDQor44Gq44KP44GfLOOBquOCiuOBguOBjQ0KK+OBi+OBpOOBluOCjyzjgbLjgo3jgZcNCivjgoTjgb7jgYbjgaEs44G/44KG44GNDQor44GC44GL44GO44GXLOOBpOOCiOOBlw0KK+OBj+OBleOBmuOBvyzjgajjgZfjgbLjgZMNCivjgbvjgYvjgoos44Gy44KN44GXDQor44GL44Go44GGLOOBiuOBleOCgA0KK+OBjeOCiuOBhizjgbLjgo3jgY0NCivjgYrjgYzjgo8s44G+44GV44GoDQor44Gf44Gq44GLLOOBvuOBleOCiOOBlw0KK+OBguOBhOOCgOOCiSzjgaTjgajjgoANCivjgYTjgYzjgonjgZcs44G+44GV44GoDQor44GL44KP44KP44GNLOOBn+OBi+OBv+OBoQ0KK+OBvuOBiOOBleOBiyzjgajjgoLjgb/jgaQNCivjgb7jgaTjgZfjgb4s44GC44Gk44GXDQor44G+44Gk44KC44GoLOOBsuOBp+OBqA0KK+OBi+OBn+OBhCzjgb7jgZXjgbLjgo0NCivjgZPjgZjjgb4s44G+44GV44GC44GNDQor44Gk44GY44KC44GoLOOBqOOBiuOCiw0KK+OBquOCj+OBnyzjgZXjgajjgZcNCivjgbXjgZjjgZ/jgass44GL44Ga44Gy44GTDQor44GN44GbLOOBpuOBpOOCjeOBhg0KK+OBleOBi+OBkOOBoSzjgZjjgoXjgpPjgYTjgaENCivjgZnjgZrjgY0s44Go44GX44KG44GNDQor44Gv44G+44GV44GNLOOBvuOBleOBsuOCjQ0KK+OCiOOBl+OBoCzjgbLjgajjgZcNCivjgbvjgaPjgZ8s44GX44GS44Gy44GoDQor44G+44GZ44GTLOOBsuOBleOBig0KK+OBn+OBkeOBquOBiyzjgZPjgZnjgZENCivjgYTjgZfjgYQs44Gv44KL44GNDQor44Gf44GV44GLLOOBsuOCjeOBlw0KK+OBvuOBpOOBoCzjgb7jgZXjgbLjgo0NCivjga/jgZ8s44Gf44GL44GXDQor44GC44GN44KE44G+LOOChuOBn+OBiw0KK+OBn+OBi+OBr+OBlyzjgoTjgZnjgbLjgagNCivjgoTjgb7jgYvjgo8s44GX44KH44GG44GYDQor44KI44GT44GhLOOBvuOBleOBsuOCjQ0KK+OCiOOBreOBn+OBqyzjgY3jgYTjgaHjgo3jgYYNCivjgbXjgZjjga4s44KG44GG44GZ44GRDQor44Gv44Gb44GM44KPLOOBi+OBpOOBqOOBlw0KK+OBteOBmOOBnyzjgb7jgZXjgobjgY0NCivjgYLjgpPjgonjgY8s44G+44GV44GTDQor44Gv44GX44KC44GoLOOBruOBtuOChuOBjQ0KK+OBhOOBquOBoCzjgozjgYTjgZMNCivjgobjgZIs44G+44GV44KI44GXDQor44GE44G+44GgLOOBhOOBmuOBvw0KK+OBleOBi+OCguOBqCzjgYvjgZrjgbLjgZUNCivjgajjgojjgarjgYws44KE44GZ44Gy44KNDQor44Gv44GX44KC44GoLOOBpuOBpOOBig0KK+OBr+OBquOBhCzjgojjgZfjga7jgooNCivjgZfjgb/jgZos44Gf44Gk44GKDQor44Gq44GL44KA44KJLOOCiOOBl+OBr+OCiw0KK+OBi+OBmOOCgOOCiSzjgojjgZfjgbLjgZMNCivjgYTjgZfjgYzjgY0s44GR44KT44Ge44GGDQor44Gv44Gj44Go44KKLOOBvuOBleOBig0KK+OBguOBvuOBrizjgorjgofjgYYNCivjgb/jgYvjgb8s44GL44GK44KLDQor44G144KL44Gm44KJLOOBvuOChuOBvw0KK+OBvuOBv+OChCzjgbLjgafjgY0NCivjgaTjgovjga4s44KA44Gk44GTDQor44GC44GV44GELOOChOOBmeOBjQ0KK+OBruOCgOOCiSzjgZfjgZLjgYoNCivjgojjgZPjgoTjgb4s44GX44KT44GYDQor44GE44GR44GgLOOChuOBn+OBiw0KK+OBguOCk+OBqeOBhizjgYLjgY3jgYoNCivjgYrjgYvjgoTjgZks44KE44GZ44GTDQor44GU44Go44GGLOOBsuOBp+OBguOBjQ0KK+OBi+OCj+OBl+OBvizjgZ/jgYvjgZMNCivjga/jgY7jgo/jgoks44GI44KKDQor44GC44Gf44KJ44GXLOOChuOBv+OBkw0KK+OBn+OBi+OChOOBvizjgajjgZfjgbLjgagNCivjgavjgZfjgoTjgb4s44Go44GX44KG44GNDQor44GI44Gh44GULOOBl+OCk+OBhOOBoQ0KK+OChOOBvuOBluOBjSzjgojjgZfjgbLjgo0NCivjgoDjgo3jgoQs44Gm44Gk44GKDQor44GN44KA44KJLOOChuOBjeOBig0KK+OBquOBi+OBr+OCiSzjgbXjgb/jgYoNCivjgYbjgYjjga4s44Gf44GL44GXDQor44KI44GX44GgLOOBkeOCk+OBnw0KK+OBpOOBi+OCguOBqCzjgZ/jgaDjgZcNCivjgYrjgZbjgY0s44Go44GK44KLDQor44GC44GX44GL44KPLOOChOOBmeOBl+OBkg0KK+OBreOBjuOBlyzjgajjgoLjga7jgooNCivjgY3jgoXjgYbjga4s44GX44KF44GG44GE44GhDQor44GV44Go44GGLOOCiOOBl+OBsuOBpw0KK+OBhOOBruOBhuOBiCzjgYvjgZrjgbLjgZMNCivjgY3jgY/jgZrjgb8s44G+44GV44KLDQor44G+44Gk44KC44GoLOOBoOOBhOOBleOBjw0KK+OBr+OChOOBlyzjgZ/jgYvjgYoNCivjgbXjgY/jgYrjgZgs44GL44KT44GYDQor44Gq44KL44GbLOOBkeOCk+OBn+OCjeOBhg0KK+OBvuOBpOOCguOBqCzjgb7jgZXjgY0NCivjgoLjgoos44G+44GV44GXDQor44G/44GNLOOBruOBtuOBig0KK+OBquOBi+OBn+OBqyzjgojjgZfjgYLjgY0NCivjgb/jgoTjgYzjgo8s44G144G/44Gu44KKDQor44GC44KK44KI44GXLOOBhOOBj+OBig0KK+OBl+OCieOBhCzjgojjgZfjgobjgY0NCivjgb/jgarjgb8s44G+44GV44KI44GXDQor44Go44KK44GU44GILOOBteOBmOOBig0KK+OBk+OBmeOBjCzjgZ/jgaDjgZcNCivjgaTjgZjjga4s44GL44Ga44Gy44KNDQor44GK44GQ44KJLOOChOOBmeOBsuOCjQ0KK+OBiuOCiuOBnyzjgaHjgYvjgZcNCivjgYLjgb/jgoLjgags44GY44KF44KT44GE44GhDQor44GK44GV44GLLOOBqOOBiuOCiw0KK+OBr+OChOOBlyzjgojjgZfjgbLjgo0NCivjgb/jgarjgb8s44G/44Gu44KLDQor44KI44GX44GgLOOBqOOBl+OBsuOBkw0KK+OBq+OBl+OBr+OCiSzjgojjgZfjgYoNCivjgYrjgY/jgYzjgo8s44G+44GV44Go44KCDQor44Gk44GYLOOBpuOCi+OChuOBjQ0KK+OBquOBi+OBhCzjgZ/jgYvjgZcNCivjgavjgZfjgoDjgoks44Gk44GQ44GKDQor44Gr44Gf44Gq44GELOOBkeOCk+OBlA0KK+OBj+OBqeOBhizjgbLjgo3jgZcNCivjgZXjgYQs44Gf44GL44GKDQor44GX44KH44GGLOOBvuOBquOBtg0KK+OBhOOBruOBhuOBiCzjgYvjgYrjgosNCivjgZ/jgavjgZDjgaEs44Gy44KN44Gf44GtDQor44Gq44GL44Gr44GXLOOBl+OCk+OBmA0KK+OBiuOBiuOCguOCiizjgbLjgo3jgobjgY0NCivjgY/jgb7jgYzjgYQs44Gf44GL44KG44GNDQor44GE44GX44GC44GELOOBqOOCiOOBi+OBmg0KK+OBr+OBjuOBr+OCiSzjgYvjgZrjga7jgooNCivjgZ/jgYzjgZ8s44GR44KT44GYDQor44GZ44Ga44GNLOOBv+OBoeOBig0KK+OBj+OBvCzjgZzjgpPjgZXjgY8NCivjgYvjgarjgYbjgaEs44GX44KT44KEDQor44Gr44GX44GKLOOBsuOBp+OBjQ0KK+OBhOOBquOBoCzjgbLjgafjga7jgbYNCivjgZ/jgZHjgYTjgaEs44GX44KT44GYDQor44GC44KT44Gp44GGLOOBvuOBk+OBqA0KK+OBvuOBpOOBquOBvyzjgZfjgofjgYbjgYTjgaENCivjgb/jgarjgY/jgaEs44GX44KF44GG44GV44GPDQor44GL44Gq44GG44GhLOOBquOBiuOBjQ0KK+OBiuOBiuOBhOOChOOBvizjga7jgbzjgosNCivjgb7jgZnjgaAs44GX44KH44GG44GYDQor44KE44GO44Gv44KJLOOBqOOBl+OBig0KK+OBv+OBmuOBrizjgZHjgpPjgZgNCivjga7jgbbjgY/jgb8s44Go44GK44KLDQor44Gq44GgLOOBn+OBi+OBguOBjQ0KK+OBn+OBkeOBn+OBqyzjgbXjgajjgZcNCivjgYTjgb7jgYTjgZrjgb8s44GE44Gh44KN44GGDQor44GE44Gq44GgLOOBhOOBleOBig0KK+OBhOOBvuOBqyzjgZ/jgYvjgbXjgb8NCivjgYrjgY0s44G+44GV44Gy44KNDQor44G144GP44GX44G+LOOCiOOBhuOBmeOBkQ0KK+OBhOOBhOOBiizjgbLjgo3jgajjgoINCivjgYTjgZfjgaAs44GL44Gk44KEDQor44Gy44KJ44GfLOOBk+OBhuOBmA0KK+OBhOOBn+OBjOOBjSzjgYvjgZrjgbLjgo0NCivjgoTjgb7jgbXjgY8s44GV44Go44GXDQor44GV44Go44GGLOOBruOCiuOBig0KK+OBquOBi+OBjOOCjyzjgorjgofjgYYNCivjgYrjgZXjgYss44GX44KF44GG44GE44GhDQor44GK44GE44GL44KPLOOBruOBtuOBguOBjQ0KK+OBi+OBl+OBiizjgojjgZfjgbLjgo0NCivjgbvjgZfjgZbjgY0s44GX44GS44GNDQor44Gb44GN44GY44G+LOOBk+OBhuOBmA0KK+OBiuOBi+OBvuOBiCzjga7jgorjgbLjgo0NCivjgZXjgajjgYYs44Gf44GL44GXDQor44GT44GE44GnLOOBn+OBi+OBquOBig0KK+OBn+OBi+OBr+OBlyzjgZvjgYTjgZgNCivjgYrjgYzjgo8s44GT44GG44GE44GhDQor44Gm44KJ44GX44G+LOOBn+OBj+OBig0KK+OChOOBvuOBl+OBnyzjgb7jgZXjgYLjgY0NCivjga7jgZss44Gy44Gn44KG44GNDQor44G+44Gk44G+44GILOOBguOChuOBvw0KK+OCiOOBl+OBnyzjga7jgorjgYLjgY0NCivjgoDjgonjgZ8s44Go44GK44KLDQor44Gv44KJLOOBruOCiuOBsuOBkw0KK+OChOOBvuOBhuOBoSzjgZHjgpPjgZgNCivjgYvjgb8s44GL44Gk44KG44GNDQor44GZ44GM44GELOOBn+OBpOOChuOBjQ0KK+OBn+OBi+OBrizjgojjgZfjga7jgbYNCivjgajjgZPjgo0s44KI44GX44Gy44KNDQor44GZ44Ga44GNLOOBmeOBmeOCgA0KK+OBleOBleOBjSzjgYLjgaTjgobjgY0NCivjgaTjga7jgaAs44Gm44Gk44KN44GGDQor44KE44G+44GV44GNLOOBpuOBpOOChA0KK+OBv+OBhuOCiSzjgYvjgaTjgb8NCivjgYrjgaDjgY7jgoos44GC44Gk44GTDQor44Gv44KE44GXLOOBl+OCk+OBoeOCh+OBhg0KK+OBqOOBv+OBiuOBiyzjgbLjgajjgZcNCivjgYTjgZDjgaEs44Gb44GE44GE44GhDQor44GT44KT44GpLOOBn+OBi+OBlw0KK+OBj+OBvCzjgbLjgafjgYoNCivjgY/jgonjgazjgY0s44GN44KH44GG44GTDQor44Go44G/44G+44GkLOOBquOBiuOBkw0KK+OBj+OCjeOBi+OCjyzjgb7jgZXjgYLjgY0NCivjga7jgZbjgo8s44GZ44G/44GKDQor44GL44KP44GV44GNLOOBj+OBq+OBguOBjQ0KK+OBn+OBkeOBoCzjgYvjgaTjgoQNCivjgZfjga7jga/jgoks44GC44GN44Gy44KNDQor44G144KL44KELOOBl+OBkuOCiw0KK+OBquOBi+OCgOOCiSzjgZXjgajjgosNCivjgoTjgZjjgb4s44Go44GK44KLDQor44Gr44GX44GM44GNLOOBjeOCiOOBlw0KK+OBquOBi+OBjOOCjyzjgZ3jgYYNCivjgbLjgonjgoTjgb4s44GX44KF44KT44GE44GhDQor44KE44G+44GQ44GhLOOCgOOBpOOBsuOCjQ0KK+OCiOOBl+OCgOOCiSzjgobjgYbjgZgNCivjgaTjgaAs44Gf44GL44KG44GNDQor44GL44Gk44KJ44GELOOCj+OBn+OCiw0KK+OBv+OBquOBhCzjgajjgZfjgYvjgZoNCivjgZ/jgY3jgZDjgaEs44GL44Ga44GKDQor44KP44GR44G5LOOCiOOBl+OBsuOCjQ0KK+OBq+OBl+OBi+OCjyzjgb7jgZXjgoQNCivjgZfjgonjgYzjgY0s44Gy44KN44GC44GNDQor44Gw44GwLOOBvuOBleOBi+OBmg0KK+OBguOBi+OCiizjgorjgofjgYbjgZgNCivjgYLjgbks44Gf44GP44KEDQor44GL44GELOOBj+OBq+OBsuOCjQ0KK+OBiuOBiuOCguOCiizjgbLjgafjgYvjgaQNCivjgZnjgZrjgY0s44Gf44GL44GXDQor44Gq44GM44GV44KPLOOBsuOBqOOBlw0KK+OBleOCj+OBoCzjgYjjgb/jgZMNCivjgYLjgZrjgb4s44Gu44G244KG44GNDQor44GK44GuLOOBsuOBp+OBjQ0KK+OBi+OCj+OBq+OBlyzjga7jgbbjgbLjgacNCivjgb7jgarjgbks44GL44Ga44Gy44KNDQor44GC44KK44KE44G+LOOChuOBhuOBmA0KK+OBq+OBl+OBi+OCjyzjgY3jgojjgZcNCivjgYLjgaTjgb8s44GX44KF44GG44GYDQor44GE44Go44GGLOOBsuOCjeOChuOBjQ0KK+OBsuOCjeOBnyzjgajjgZfjgoQNCivjgbvjgYvjgZ7jga4s44GL44Ga44GoDQor44G744GX44GuLOOChOOBmeOBsuOCjQ0KK+OChOOBvuOBkOOBoSzjgb7jgZPjgagNCivjgYLjgYzjgZ8s44GT44GG44GYDQor44G+44KL44GKLOOCiOOBl+OChuOBjQ0KK+OBk+OBhOOBpyzjgbLjgo3jgYLjgY0NCivjgYvjgb/jgoDjgoks44G+44GV44Gy44GnDQor44GV44GE44Go44GGLOOBquOBiuOBjQ0KK+OBteOBj+OBv+OBpCzjgYLjgaTjgZcNCivjgbLjgonjgoTjgb4s44Gy44GL44KLDQor44GV44GE44Go44GGLOOBpuOBpOOChA0KK+OBhOOBkeOBiizjgb/jga7jgosNCivjgbXjgovjgYvjgo8s44GY44KF44KT44GE44GhDQor44GE44GE44GgLOOBsuOCjeOBguOBjQ0KK+OBv+OChOOBluOBjSzjgoLjgajjgbLjgo0NCivjgojjgZfjgaAs44KE44GZ44KG44GNDQor44GN44GP44GfLOOBiOOCiuOBkw0KK+OBoeOBsCzjgabjgaTjgYoNCivjgajjgorjgoTjgb4s44KK44Gk44GKDQor44GI44GW44KPLOOCiuOCheOBhuOBn+OCjeOBhg0KK+OBiuOBiuOBsCzjgojjgZfjgZ/jgb8NCivjgoTjgb7jgoLjgags44GK44GV44KADQor44Gr44GX44GL44KPLOOBvuOBleOBruOBtg0KK+OBiOOCk+OBqSzjgb7jgZXjga/jgosNCivjgbXjgY/jgYQs44GK44GV44KADQor44Gv44G+44GuLOOCiOOBhuOBhOOBoQ0KK+OBjeOBn+OBr+OCiSzjgZHjgpPjgZjjgofjgYYNCivjgZXjgajjgYYs44KG44GN44Gy44KNDQor44G+44Gk44GKLOOBvuOBleOBteOBvw0KK+OBqOOCiOOBnyzjgbLjgafjgoQNCivjgbLjgonjgoLjgags44Go44GX44Gy44GnDQor44KE44G+44KC44GoLOOBk+OBhuOBn+OCjeOBhg0KK+OBr+OBvuOBoCzjgb7jgobjgb8NCivjgYTjgo/jgYvjgb8s44G/44Gu44KLDQor44GP44G8LOOBpuOBpOOBig0KK+OBiOOCk+OBqSzjgYvjgZrjgbLjgo0NCivjgYvjgZLjgoTjgb4s44G+44GV44Gu44KKDQor44Gr44GE44KELOOBqOOCguOChuOBjQ0KK+OBk+OBhuOBoSzjgobjgYbjgZnjgZENCivjgYLjgaDjgaEs44GX44GS44KG44GNDQor44Gv44KE44GXLOOBl+OCheOCk+OBmA0KK+OBquOBi+OBrizjgb7jgZPjgagNCivjgYTjgZfjga/jgb4s44G+44GV44Gy44KNDQor44GT44GP44G8LOOCiuOCheOBhuOBhOOBoQ0KK+OBi+OCj+OBrizjga/jgZjjgoENCivjgarjgYvjgZjjgb4s44Gu44KK44Gy44GTDQor44Gf44GE44KJLOOBpOOCiOOBlw0KK+OBn+OBkeOBjizjgorjgaTjgYoNCivjgoLjgorjgZfjgb4s44Go44KC44GTDQor44Gq44GL44KA44KJLOOBsuOCjeOBguOBjQ0KK+OBruOBkOOBoSzjgbLjgo3jgY0NCivjgYLjgonjgY0s44KE44GZ44Gm44KLDQor44GC44KJLOOBsuOCjeOBlw0KK+OBhOOBqOOBhizjgarjgYrjgZMNCivjga/jgoTjgZXjgYss44G144Go44GXDQor44GT44Gk44GLLOOBvuOBleOBi+OBmg0KK+OBn+OBkeOBhuOBoSzjgbLjgo3jgZcNCivjgYTjgo/jgZ8s44Gf44GL44GXDQor44G+44GI44GgLOOCiOOBl+OBig0KK+OBu+OBneOBi+OCjyzjgb7jgZXjgbLjgo0NCivjgYLjgonjgYQs44KE44GZ44Gy44KNDQor44GK44GK44GP44KJLOOBi+OCk+OBmA0KK+OBn+OBkeOBk+OBlyzjgYLjgaTjgZcNCivjgoTjgb7jgZDjgaEs44GR44KT44GYDQor44GX44G/44GaLOOBi+OBpOOBqOOBlw0KK+OBhOOBqOOBhizjgojjgZfjgaTjgZANCivjgYTjgZrjgb8s44GL44Gt44G/44GkDQor44GU44Go44GGLOOBneOBhuOBn+OCjeOBhg0KK+OBiuOBiuOBpOOBvCzjgYvjgZrjgb8NCivjgYvjgb/jgZPjgYzjgo8s44GX44KT44GE44GhDQor44Gf44GR44GELOOBleOBqOOBkw0KK+OBv+OChOOBr+OCiSzjgb7jgZXjgZcNCivjgYLjgo/jgZgs44GC44Gk44GKDQor44GG44GX44KN44GgLOOBi+OBiuOCiw0KK+OCguOCiuOBhOOBmuOBvyzjga/jgZjjgoENCivjgarjgYzjga4s44GC44Gk44GXDQor44Gf44Gq44GLLOOCgOOBreOChuOBjQ0KK+OBteOBi+OBiCzjgZHjgpPjgZgNCivjgbXjgovjgoQs44G/44GV44GKDQor44G/44Ga44Gy44GNLOOCiOOBl+OBig0KK+OBj+OBvCzjgb/jgaTjgojjgZcNCivjgZ/jgZDjgaEs44G144G/44GC44GNDQor44Gq44GL44GKLOOBpOOBjuOBqA0KK+OChOOBvuOBl+OBnyzjgobjgYbjgYTjgaENCivjgY/jgo3jgY0s44GX44KH44GG44GUDQor44G+44Gk44GgLOOBkeOCk+OBhOOBoQ0KK+OBiuOBoOOBmOOBvizjgarjgbvjgb8NCivjgbvjgoos44KG44GN44GKDQor44Gf44Gr44GQ44GhLOOBpOOBreOChOOBmQ0KK+OBguOCieOBhCzjgajjgZfjga7jgooNCivjgZTjgajjgYYs44Gm44Gk44GYDQor44Go44Gt44GM44KPLOOBruOCiuOChuOBjQ0KK+OCguOCiuOBnyzjgZ/jgYvjgZMNCivjgbXjgovjgYvjgo8s44GX44GS44GKDQor44KG44GNLOOCiOOBl+OBruOCig0KK+OBl+OCieOBhOOBlyzjgZ/jgYvjgbLjgo0NCivjgYTjgZHjgoQs44GV44Gh44GTDQor44KP44Gf44Gq44G5LOOBn+OBpOOBiuOBjQ0KK+OBn+OBq+OBkOOBoSzjgZPjgYbjgYTjgaENCivjgb7jgZnjgaAs44GX44Gu44G2DQor44G/44Ga44GQ44GhLOOBmOOCjeOBhg0KK+OBr+OChOOBv+OBmizjgobjgb8NCivjgbvjgYvjgoos44GC44GN44Gy44GTDQor44GE44GX44GELOOBruOCiuOBsuOBkw0KK+OBl+OCieOBhOOBlyzjgb7jgZXjgbLjgZMNCivjgZfjgoLjgYvjgo/jgoks44GX44GS44Gy44KNDQor44KC44KK44KC44GoLOOBqOOCguOBkw0KK+OBhOOBqOOBhizjgbLjgo3jgZcNCivjgYrjgYrjgoQs44GR44GE44GYDQor44G/44KI44GXLOOBv+OBruOCiw0KK+OBl+OBsOOBnyzjga7jgorjgbLjgo0NCivjgZ/jgpPjgZbjgpMs44Go44KC44Gy44GTDQor44GE44KP44GV44GNLOOBsuOBp+OBi+OBmg0KK+OBteOBj+OBhCzjgZXjgajjgZcNCivjgoLjgorjgbDjgoTjgZcs44GL44Ga44KEDQor44KE44G+44GgLOOBsuOBp+OBvw0KK+OBteOBmOOCj+OCiSzjgZXjgajjgZcNCivjgarjgaTjgoEs44KE44GZ44GoDQor44GX44Gu44Gv44KJLOOBsuOCjeOBlw0KK+OBiuOBleOBoCzjgb7jgZXjgZcNCivjgbXjgZjjga/jgoks44Gf44GR44Gy44GoDQor44G144GY44KC44GoLOOBsuOCjeOBvw0KK+OBjeOBrizjgojjgZfjgYoNCivjgoTjgb7jgoLjgags44KC44Go44GNDQor44GE44GX44GY44G+LOOCguOCiuOBsuOCjQ0KK+OBhOOBjCzjgYLjgY3jgokNCivjgarjgYvjgYgs44Gg44GE44GYDQor44KE44GuLOOChuOBhuOBmA0KK+OBi+OBquOBv+OBpCzjgYrjgZXjgoANCivjgZnjgZrjgY0s44Gm44KL44GKDQor44Gf44GL44GgLOOCiuOCh+OBhuOBkw0KK+OBhOOBl+OBsOOBlyzjgbLjgo3jgobjgY0NCivjgYrjgYrjgaTjgbws44G/44Gk44Gv44KLDQor44GZ44GOLOOBn+OBi+OBlw0KK+OBr+OChOOBl+OBkOOBoSzjgbLjgo3jgZcNCivjgabjgonjgZfjgZ8s44GL44Ga44GKDQor44GX44KC44KE44G+LOOCiOOBl+OBteOBvw0KK+OBv+OChOOBluOBjSzjgb/jgaTjgosNCivjgoLjgoos44KE44GZ44Gy44KNDQor44KE44G+44KC44GoLOOBsuOBqOOBlw0KK+OBp+OBguOBhCzjgY3jgojjgbLjgo0NCivjgbvjgoos44Go44GX44KG44GNDQor44GC44Gt44GW44GNLOOBi+OBmuOBig0KK+OBj+OBvOOBnyzjgZ/jgYvjgbLjgo0NCivjgZQs44G+44GV44Go44GXDQor44Gy44GN44GgLOOBsuOCjeOBlw0KK+OBleOBi+OBkOOBoSzjga7jgorjgYLjgY0NCivjgojjgZfjgYQs44Gf44GL44GXDQor44GN44Gf44Gv44KJLOOBi+OBpOOBqA0KK+OBteOBmOOBhCzjgb/jganjgooNCivjgarjgoHjgY0s44KE44GZ44GTDQor44KI44GX44KA44KJLOOBqOOBl+OBig0KK+OBn+OCgOOCiSzjgaDjgYTjgZnjgZENCivjgYbjgb/jga4s44Gy44KN44GXDQor44GC44KT44Gp44GGLOOBsuOCjeOBlw0KK+OCiOOBl+OCguOBqCzjgZ/jgZHjgZcNCivjga3jgoLjgags44KI44GX44G144G/DQor44G/44KE44GW44GNLOOBvuOBleOBsuOBkw0KK+OBn+OBi+OCguOCiizjgaHjgYjjgZMNCivjgY/jgb7jgYzjgYQs44GP44Gr44GKDQor44GU44GG44GgLOOBk+OBhuOBn+OCjeOBhg0KK+OBr+OBnyzjgZPjgYbjgYTjgaENCivjgY/jgZrjgb8s44GV44Gh44GTDQor44Gq44Gk44GELOOBhOOBj+OBig0KK+OBl+OBvuOBoCzjgbLjgafjgYoNCivjgYrjgYrjgaTjgY0s44GL44Ga44Gy44KNDQor44G+44G/44KELOOBsuOCjeOBi+OBmg0KK+OBleOBqOOBhizjgZHjgpPjgZgNCivjgZPjgbDjgoos44Gy44Gn44KG44GNDQor44GV44GV44GNLOOChOOBmeOChuOBjQ0KK+OBi+OBreOBkyzjgb7jgZXjgY0NCivjgYrjga4s44Go44GK44KLDQor44GK44GK44KE44G+LOOCiOOBl+OBiA0KK+OBvuOBqOOBsCzjgb7jgZXjga/jgosNCivjgYTjgZ/jgY/jgoks44GY44KF44KT44GE44GhDQor44GK44Gg44GX44G+LOOBi+OBpOOCjeOBhg0KK+OBl+OBhOOBjSzjga7jgorjgZMNCivjgZfjgbDjgZ8s44GL44Ga44Gy44KNDQor44GL44Gk44KJLOOBoeOBi+OBkw0KK+OBguOCieOBhCzjgojjgZfjga7jgooNCivjgZXjgYTjgajjgYYs44Gk44KI44GXDQor44G+44Gk44KC44GoLOOBvuOBleOBruOCig0KK+OBhuOBiOOChOOBvizjgb/jgaTjgarjgooNCivjgb7jga4s44GX44KT44GE44GhDQor44G/44GV44GKLOOBquOBiuOBjQ0KK+OBneOBruOBuSzjgY3jgb/jgobjgY0NCivjgZnjgZrjgY0s44GC44GN44GKDQor44KE44Gf44GrLOOBjeOCh+OBhuOBkw0KK+OCgOOBnyzjgb7jgarjgbYNCivjgb7jgovjgoTjgb4s44G144G/44GC44GNDQor44G144GgLOOBn+OBi+OCiOOBlw0KK+OBk+OBsOOChOOBlyzjgZHjgYTjgYTjgaHjgo3jgYYNCivjgo/jgZ/jgarjgbks44GL44GK44KLDQor44GK44GgLOOBvuOBk+OBqA0KK+OBiuOBteOBoSzjgb7jgZXjgYoNCivjgZ/jgarjgYss44GX44GS44GKDQor44GV44KP44GNLOOBvuOBleOBlw0KK+OBleOBhOOBqOOBhizjgbLjgo3jgZcNCivjga/jgY7jga4s44Gu44G844KLDQor44GG44GX44KE44G+LOOBn+OBi+OBlw0KK+OBiuOBj+OBsuOCiSzjga7jgbbjgbLjgo0NCivjgojjgZfjgYTjgZEs44GV44Gq44GIDQor44GT44KT44GuLOOChuOBhuOBkw0KK+OBruOBoCzjgajjgZfjgYoNCivjgYjjgpPjgaks44Go44GX44KG44GNDQor44GZ44Ga44GNLOOBv+OBpOOBig0KK+OBn+OBquOBiyzjgojjgZfjgbLjgo0NCivjgY3jgaks44GR44GE44GYDQor44GE44Go44GGLOOBvuOBleOBruOBtg0KK+OBteOBmOOCj+OCiSzjgajjgZfjga/jgosNCivjga/jgZvjgYzjgo8s44GC44GN44KJDQor44G+44GZ44KC44GoLOOBkeOBhOOBmA0KK+OBi+OBhCzjgbLjgajjgZcNCivjgZ/jgYvjga/jgZ8s44Go44KC44GTDQor44Gy44Gn44GX44G+LOOBi+OBmuOBruOCig0KK+OBn+OBi+OChOOBvizjgZfjgZLjgY0NCivjgb/jgoTjgY0s44KG44Gf44GLDQor44G144GbLOOBi+OBmuOBsuOBkw0KK+OCguOCguOBhCzjgbLjgo3jgoTjgZkNCivjgaTjgobjgY0s44G/44Gk44GQDQor44GL44KP44Gv44KJLOOBl+OBkuOCiw0KK+OBvuOBpOOBhCzjgYLjgY3jgbLjgo0NCivjga/jgarjgo8s44G+44GV44Gy44KNDQor44Gy44KP44GgLOOBpuOBpOOChA0KK+OBvuOBmeOBhCzjgZ/jgYvjgZcNCivjgYvjgajjgYYs44Gf44Gg44Gk44GQDQor44Gf44GR44G+LOOBteOBv+OBig0KK+OBl+OCieOBhOOBlyzjgojjgZfjgYoNCivjgbXjgovjgYvjgo8s44GX44KH44GG44GE44GhDQor44Gm44GY44G+LOOBguOBjeOCiQ0KK+OBguOBjeOCguOBqCzjgZXjgajjgZcNCivjgZnjgY7jgoTjgb4s44Gy44KN44GC44GNDQor44Gq44KT44G2LOOChuOBjeOBsuOCjQ0KK+OBpOOBmOOBrizjgZHjgpMNCivjgabjgonjgZXjgYss44GE44Gj44GX44KTDQor44GV44GL44GELOOBsuOBp+OBguOBjQ0KK+OBj+OBvCzjgYLjgaTjgZcNCivjgb7jgovjgZ/jgass44G+44GV44KEDQor44Gf44GL44Gv44GXLOOBv+OBruOCiw0KK+OBvuOBpOOBhuOCiSzjgZfjgpPjgoQNCivjgZ/jgarjgYss44Gb44KT44GYDQor44KG44GW44KPLOOBn+OBi+OBguOBjQ0KK+OBn+OBi+OBr+OBlyzjgYvjgZrjgoQNCivjgYrjgYrjgbAs44GX44KT44GUDQor44G+44GI44GL44KPLOOBqOOBiuOCiw0KK+OBq+OCjyzjgajjgYrjgosNCivjgYvjgo/jgoDjgoks44G+44GV44GNDQor44GT44GE44GRLOOBi+OBmuOBiA0KK+OBj+OCiuOBl+OBnyzjgajjgZfjgobjgY0NCivjgbLjgo3jgZss44GK44GV44KADQor44GT44KT44GuLOOBn+OBj+OChA0KK+OBr+OBm+OBjOOCjyzjgbLjgo3jgbLjgZMNCivjgYTjgajjgYYs44Gy44KN44GXDQor44GN44GW44GNLOOBguOBpOOBlw0KK+OBiOOBquOBvyzjga7jgorjgYLjgY0NCivjgaTjgYvjgarjgYss44G144G/44GC44GNDQor44GV44GL44KC44GoLOOBsuOCjeOBvw0KK+OBvuOBpOOBsOOCiSzjgbLjgafjgYoNCivjgabjgonjgYQs44GX44GS44GC44GNDQor44GK44GX44GfLOOBn+OBi+OCiOOBlw0KK+OBn+OBquOBiyzjgojjgZfjgYLjgY0NCivjgoTjgb7jgoLjgags44G+44Gq44G2DQor44GE44GX44GQ44KNLOOCiOOBl+OBqA0KK+OBr+OBl+OCguOBqCzjgZnjgb/jgZMNCivjgZXjgajjgYYs44KE44GZ44Gy44KNDQor44KE44G+44KC44GoLOOBqOOBiuOCiw0KK+OBteOCi+OBi+OCjyzjgajjgZfjga7jgbYNCivjgoTjgb7jgaAs44Gy44KN44GoDQor44GE44GP44GfLOOBl+OCh+OBhuOBkw0KK+OBleOBqOOBhizjgobjgYbjgYTjgaENCivjgo/jgZ/jgarjgbks44GL44Ga44Gy44KNDQor44GL44GTLOOBn+OBpOOBmA0KK+OBvuOBmeOBoCzjgbLjgo3jga7jgooNCivjgYvjgb/jgZgs44Gf44GL44KG44GNDQor44GE44Gv44KJLOOBi+OBmuOBsuOCjQ0KK+OBguOBleOBvyzjgYvjgZrjgbLjgo0NCivjgarjgYvjgZjjgb4s44Gf44GL44GXDQor44GT44Gf44GNLOOBpuOBpOOChA0KK+OBi+OCj+OCguOBqCzjgYjjgYTjgYTjgaENCivjgYvjgo/jgZfjgb4s44GL44Ga44Gy44GTDQor44GC44Ga44G+LOOCiuOCheOBhuOBmA0KK+OBquOBi+OBrizjgZfjgoXjgYbjgYTjgaENCivjgbLjgonjga4s44GV44Go44GXDQor44Gf44GL44Gv44GXLOOBvuOBleOCiw0KK+OBteOBi+OChCzjgoLjgoLjgY0NCivjgYrjgYrjgbAs44Gf44GR44GXDQor44GV44GP44KJ44GELOOBsuOCjeOBguOBjQ0KK+OBleOBi+OBhCzjgYTjgaPjgZvjgYQNCivjgYLjgYrjgY0s44Gf44GP44GKDQor44KI44GX44GgLOOChOOBmeOBlw0KK+OBk+OBr+OBlyzjgb7jgZXjga7jgooNCivjgb7jgaTjgYbjgoks44Gm44Gj44G644GEDQor44GV44Go44GGLOOBiuOBleOCgA0KK+OBq+OBl+OBjeOBiuOCiizjgajjgoLjgZMNCivjgb/jgojjgZcs44KI44GX44Gy44GVDQor44GT44GZ44GOLOOBpOOBi+OBlQ0KK+OBleOBqOOBhizjgZ/jgYvjgYTjgaENCivjgbXjgZjjgYQs44KI44GX44Gy44KNDQor44G144Gq44GgLOOBi+OBmuOBsuOBkw0KK+OBmeOBjuOBnyzjgajjgYrjgosNCivjgZfjgofjgYbjgaAs44GL44Ga44Gy44KNDQor44KC44KK44GX44GfLOOBqOOBl+OBig0KK+OBsuOCiSzjgbLjgajjgZcNCivjgZfjgpPjgZ/jgY8s44Gy44KN44KG44GNDQor44Gy44GM44GX44GgLOOBqOOBl+OChuOBjQ0KK+OBj+OCiuOBnyzjgb7jgZXjgojjgZcNCivjgYTjgarjgaAs44KG44GG44GV44GPDQor44Gr44GX44GuLOOBqOOBl+OChA0KK+OBhOOBkeOBmOOCiizjga7jgorjgYLjgY0NCivjgarjgYvjgoDjgoks44Gq44GK44Gy44KNDQor44Gq44GL44GL44GpLOOCiOOBhuOBhOOBoQ0KK+OBhOOBruOBvuOBnyzjgbLjgo3jgZcNCivjgaTjgovjgb8s44Gy44KN44KI44GXDQor44Gy44KJ44KC44GoLOOBl+OBkuOBjQ0KK+OBv+OCiOOBlyzjgbXjgb/jgYLjgY0NCivjgYLjgo/jga4s44Gf44GL44GXDQor44GC44GN44GfLOOCiOOBl+OBiA0KK+OBsuOBjOOBl+OChOOBvizjgZ/jgZHjgZcNCivjgZXjgajjgYYs44Gy44KN44G/DQor44GL44KP44GV44GNLOOBkeOBhOOBhOOBoQ0KK+OBvuOCi+OChOOBvizjga/jgaTjgYoNCivjgZnjgarjgYws44Gy44Gn44GNDQor44GE44G+44GELOOBn+OBv+OBkw0KK+OBteOBmOOBhCzjgobjgY3jgYoNCivjgb7jgY3jgZ8s44G/44Gk44GKDQor44GE44Go44GGLOOBn+OBpOOBlw0KK+OBn+OBi+OBr+OBlyzjgorjgoXjgYbjgYTjgaENCivjgY3jgorjgb4s44GX44KT44GYDQor44GK44GK44Gr44GXLOOBqOOCguOChuOBjQ0KK+OBv+OBruOBl+OBvizjgZ/jgZHjgbLjgagNCivjgZXjgajjgYYs44GL44Ga44Gf44GLDQor44KE44G+44GX44GfLOOBn+OBi+OChuOBjQ0KK+OBv+OBn+OCgOOCiSzjgb7jgobjgb8NCivjgZXjgajjgYYs44GX44GS44KLDQor44Go44G+44GkLOOBn+OBvuOBvw0KK+OBiOOBs+OBl+OBvizjgoTjgZnjgobjgY0NCivjgo/jgaAs44GL44Ga44KEDQor44GZ44Ga44GNLOOBjeOCiOOBn+OBiw0KK+OBmeOBjOOBr+OCiSzjgb/jgaTjgosNCivjgZ/jgZDjgaEs44Gy44KN44KADQor44Go44GM44GXLOOBvuOBleOBsuOBkw0KK+OBquOBjOOBr+OCiSzjgZXjgajjgosNCivjgoTjgb7jgoLjgags44GR44GE44GTDQor44Gf44GR44GgLOOBvuOBleOChuOBjQ0KK+OBleOBqOOBhizjgb/jga7jgosNCivjgZ/jgYvjgb/jgoQs44Gy44Gn44Gu44G2DQor44GC44GK44GNLOOBn+OBi+OBsuOCjQ0KK+OBk+OChOOBjizjgZnjgb/jgZ/jgYsNCivjgYrjga7jgZbjgY0s44KK44KH44GG44GZ44GRDQor44KC44KK44GfLOOBruOCiuOBkw0KK+OBleOBj+OCieOBjizjgobjgb/jgZMNCivjgYrjgYvjgZXjgYss44Gy44KN44Gu44KKDQor44KE44G+44GQ44GhLOOBk+OBmeOBkQ0KK+OBi+OCj+OBl+OBvizjgojjgZfjga7jgooNCivjgYTjgo/jga4s44GL44Ga44Gu44KKDQor44GU44GG44GTLOOChOOBmeOBr+OCiw0KK+OCguOCiuOBnyzjgoTjgZnjgZgNCivjgZfjgZLjgZ/jgYss44Gq44GK44GNDQor44Gm44Ga44GLLOOBiOOBhOOBleOBjw0KK+OBiuOBnyzjgaTjgojjgZcNCivjgoTjgb7jgaAs44G+44GV44Gv44KLDQor44G144GL44GgLOOBsuOBleOChuOBjQ0KK+OBr+OBm+OBuSzjgoLjgajjgYLjgY0NCivjgb7jgaTjga4s44GC44Gk44GXDQor44Gk44GY44GL44KPLOOBkeOCk+OBhOOBoeOCjQ0KK+OBvuOBpOOCguOBqCzjgYvjgaTjgb8NCivjgZvjga7jgYos44Gv44GY44KBDQor44Gu44KA44KJLOOBleOBqOOBlw0KK+OBguOCieOBhCzjgajjgojjgZfjgZINCivjgYrjgZDjgoos44GZ44G/44GIDQor44GY44KT44GuLOOBvuOBleOBsuOCjQ0KK+OBsuOCjeOBmuOBvyzjgb/jga7jgosNCivjgb7jgaTjgYQs44GZ44GZ44KADQor44GX44Gw44GW44GNLOOBguOBpOOBlw0KK+OBhOOBruOBhuOBiCzjgbLjgafjgYoNCivjgZ/jgarjgYss44Gy44Gn44GL44GaDQor44GV44GdLOOBquOBiuOBteOBvw0KK+OBl+OCieOBr+OBvizjgYLjgY3jgbLjgZMNCivjgZ/jgarjgYss44Gq44GK44GNDQor44Gq44GL44KA44KJLOOChOOBmeOBsuOCjQ0KK+OBhOOBl+OBjOOBvyzjgojjgZfjgYLjgY0NCivjgZfjgbDjgZ8s44Gm44Gj44G644GEDQor44Gu44GQ44GhLOOBguOChuOBvw0KK+OBhOOBoeOBsCzjgZPjgYbjgZgNCivjgYvjgo/jgZDjgaEs44Gy44Gn44GTDQor44KI44GX44G/LOOBsuOBp+OBvw0KK+OBteOBmOOBi+OCjyzjgbLjgo3jgobjgY0NCivjgYvjgajjgYYs44Gk44KI44GXDQor44Gf44GL44Gv44GXLOOBhOOBleOCgA0KK+OBteOBmOOBleOCjyzjgYvjgZrjgYoNCivjgb/jgZrjgZ/jgass44Go44KC44G144G/DQor44Gb44GN44GQ44GhLOOCiOOBl+OCjeOBhg0KK+OBvuOBiOOBi+OCjyzjgoDjgaTjgb8NCivjgYLjgonjgYQs44KK44KF44GG44GYDQor44KC44KKLOOBkeOBhOOBn+OCjeOBhg0KK+OBleOBqOOBhizjgarjgYrjgZMNCivjgY/jgo/jgZ8s44GX44KH44GG44GE44GhDQor44GK44GQ44KKLOOBsuOCjeOBlw0KK+OBsuOCieOBhCzjgYvjgaTjgbLjgZMNCivjgavjgZfjgoDjgoks44G144G/44Go44GXDQor44GK44GK44GP44KJLOOBsuOBleOBruOCig0KK+OBneOBruOBuSzjgYLjgY3jgZMNCivjgYTjgYTjgaAs44KE44GZ44GC44GNDQor44GT44GQ44GhLOOBiOOBhOOBhOOBoeOCjeOBhg0KK+OCguOCjeOBu+OBlyzjgbLjgafjgYvjgZoNCivjga/jgb7jgaAs44Gu44KK44GL44GkDQor44GL44Gq44GW44KPLOOBi+OBmuOChuOBjQ0KK+OBvuOBpOOBsCzjgZfjgZLjgosNCivjgYTjgo/jgZ8s44Gy44Gn44Go44GXDQor44GC44Ga44GhLOOBvuOBleOCiw0KK+OBk+OCk+OBqSzjgYTjgZXjgYoNCivjgZ/jgYvjga/jgZcs44KI44GX44GKDQor44GC44G+44GuLOOBsuOCjeOBguOBjQ0KK+OBi+OBn+OBoCzjgYrjgZXjgoANCivjgZ/jgoHjgbLjgo0s44KC44Go44GTDQor44G+44Gk44GgLOOBn+OBi+OBlw0KK+OBquOCiuOBhOOBlyzjgoTjgZnjgojjgZcNCivjgYrjgY3jgZ8s44KC44KK44G/44GhDQor44KE44G+44GX44GfLOOBsuOCjeOBlw0KK+OBmeOBmuOBjSzjgobjgYbjgZgNCivjgb7jgpPjgb0s44GL44Gk44G/DQor44GE44Gh44GELOOBkeOCk+OBmA0KK+OBk+OBhOOBpyzjgajjgoLjgZMNCivjgZ/jgYvjga/jgZcs44Gq44GK44GTDQor44Gq44GL44GM44KPLOOBi+OBmuOBig0KK+OBiuOBr+OBvizjgZ/jgYvjgZcNCivjgZ/jgYvjga/jgZ8s44Gy44KN44G/DQor44GT44GQ44GhLOOBn+OBi+OBlw0KK+OBv+OChOOBjOOCjyzjgYvjgZrjgoQNCivjgZfjgbDjgoTjgb4s44Gv44GY44KBDQor44GC44KJ44GELOOChOOBmeOBsuOCjQ0KK+OCj+OBn+OBquOBuSzjgZnjgZnjgoANCivjgarjgYvjgoDjgoks44KG44Gf44GLDQor44G144KL44Gv44GfLOOBvuOBleOBquOCig0KK+OBn+OBq+OBkOOBoSzjgarjgYrjgZnjgZENCivjgbvjgpPjgaAs44GZ44GZ44KADQor44G+44Gk44KC44GoLOOBguOBjeOBsuOCjQ0KK+OBn+OBi+OBjSzjga/jgovjgb/jgaQNCivjgY3jgY/jgaEs44GX44KT44KEDQor44GE44Gu44GG44GILOOBk+OBhuOBhOOBoQ0KK+OBr+OCiSzjgb7jgZXjgYoNCivjgoTjgb7jgoLjgags44Gf44GL44Gy44KNDQor44KA44KJ44GL44G/LOOBqOOCguOChOOBmQ0KK+OBsOOBsCzjgb7jgZXjgbLjgZMNCivjga/jgZvjgYzjgo8s44Go44GX44Gy44GTDQor44GV44GV44GNLOOBguOBjeOBteOBvw0KK+OBguOBpOOBnyzjgbLjgajjgb8NCivjgZ/jgaHjgYvjgo8s44Gy44KN44Gk44GQDQor44Gy44KJ44KC44GoLOOBsuOBp+OBguOBjQ0KK+OBquOBi+OCgOOCiSzjgajjgZfjgoQNCivjgaTjgoDjgoks44Gf44GL44GKDQor44Gf44GL44Gv44GXLOOBneOBhuOBhOOBoeOCjeOBhg0KK+OCiOOBk+OChOOBvizjgb/jga7jgosNCivjgZPjgZ/jgZEs44G/44Gk44GKDQor44GC44KT44KJ44GPLOOBn+OBi+OBlw0KK+OBv+OBmuOBrizjgZfjgpPjgYTjgaENCivjgYrjgYrjgazjgY0s44GC44GN44KJDQor44GV44GL44GELOOBr+OBmOOCgQ0KK+OBiuOBnyzjgZfjgofjgYbjgZ7jgYYNCivjga/jgoTjgZcs44Gu44KK44GKDQor44GV44GE44Go44GGLOOBguOBjeOBsuOCjQ0KK+OBn+OBquOBiyzjga7jgorjgZMNCivjga/jgovjga/jgoks44Go44GG44GUDQor44GK44GK44Gk44GLLOOBvuOBleOChuOBjQ0KK+OBjeOBn+OBjOOCjyzjgbLjgafjgb8NCivjgojjgZPjgZ8s44GL44Gj44G644GEDQor44KI44GX44KA44KJLOOBguOBpOOBkw0KK+OBiuOBiuOBsuOCiSzjgZfjgpPjgYTjgaENCivjgaHjgoPjgY0s44GX44GS44Gy44GnDQor44GV44GL44GQ44GhLOOBk+OBhuOBhOOBoQ0KK+OBmeOBmuOBjSzjgYLjgY3jgbLjgo0NCivjgaHjgYvjgZbjgo8s44G+44KG44G/DQor44Gq44GL44GY44G+LOOBvuOBleOBruOCig0KK+OCj+OBn+OBquOBuSzjgZ/jgaDjgYoNCivjgZfjgbAs44GY44KF44KT44GTDQor44GV44GL44GELOOBoeOBr+OCiw0KK+OChOOBvuOBv+OBleOBiyzjgabjgaTjgYoNCivjgojjgZfjgYzjgb8s44GC44GN44KJDQor44Gy44KJ44GmLOOBvuOBleOChuOBjQ0KK+OCj+OBj+OBl+OBvizjgZ/jgaDjgZcNCivjgYLjgZXjgb4s44Gh44GL44KJDQor44GC44Ga44G/LOOBn+OBoOOBlw0KK+OBhOOBquOBiuOBiyzjgbLjgo3jgYvjgZoNCivjgZXjgarjgYQs44Gy44KN44GXDQor44KE44G+44GG44GhLOOChOOBmeOBsuOCjQ0KK+OBhOOBr+OCiSzjgajjgZfjgbLjgZMNCivjgZ/jgoTjgb4s44GK44GV44KADQor44GV44GV44GNLOOBl+OCk+OChA0KK+OBteOBmOOBhuOBoSzjgajjgZfjgYLjgY0NCivjgYbjgZfjgZjjgb4s44GX44KT44GE44GhDQor44Gu44Gu44KA44KJLOOBvuOBleOBn+OBiw0KK+OBq+OBlyzjgZ/jgZHjgbLjgo0NCivjgYTjgZHjgaAs44Gy44KN44G/DQor44GZ44GO44Gf44GrLOOBsuOCjeOBlw0KK+OBiuOBluOBjSzjgZ/jgZHjgZcNCivjgZPjgZHjgaQs44GC44GN44Gy44GVDQor44GV44Go44GGLOOCiOOBhuOBmeOBkQ0KK+OBm+OCk+OBsCzjgYLjgaTjgZcNCivjgYLjgZrjgb4s44Gy44Gn44GoDQor44Gq44GK44GELOOBhOOBoeOCjeOBhg0KK+OBu+OBl+OBrizjgojjgZfjgY0NCivjgYvjgb/jgoQs44KE44GZ44Gy44KNDQor44KA44KJ44GfLOOBsuOBqOOBlw0KK+OBhOOBoeOBv+OChCzjgZHjgYTjgZMNCivjgZ/jgovjgYQs44KE44GZ44GC44GNDQor44Gv44GO44Gv44KJLOOBv+OCj+OBkw0KK+OBn+OBi+OBr+OBlyzjgZ/jgYvjgZcNCivjgYrjgaHjgYLjgYQs44Gy44Go44GXDQor44GC44GN44KE44G+LOOBkeOBhOOBmeOBkQ0KK+OBjeOCgOOCiSzjgojjgZfjgbLjgo0NCivjga/jgoTjgZcs44Gy44Gn44GKDQor44KE44G+44GQ44GhLOOBv+OBpOOCiw0KK+OBqOOBk+OCjSzjgarjgYrjgZ/jgYsNCivjgYvjgZnjgoQs44GI44Gk44GTDQor44GE44KK44GILOOBl+OCheOBhuOBmA0KK+OCgOOCieOBhOOBlyzjgb/jgarjgZMNCivjgZfjgpPjgZ/jgass44KK44KF44GG44GYDQor44GG44GI44GuLOOBv+OBuw0KK+OBhuOBoeOBoCzjgZPjgYbjgZgNCivjga/jgZvjgYzjgo8sDQor44GP44KN44GgLOOCi+OCiuOBkw0KK+OBhOOBqOOBhizjgYvjgaTjgbLjgo0NCivjgbvjgorjgYbjgaEs44G+44KEDQor44GK44GK44Gv44GfLOOBruOBtuOBguOBjQ0KK+OBu+OCk+OBoCzjgbLjgafjgobjgY0NCivjgarjgYvjgoDjgoks44GZ44GZ44KADQor44GV44GI44GNLOOBiuOBjeOCguOCig0KK+OBguOBuSzjgabjgovjgbLjgZUNCivjgYbjgoHjgaAs44Gf44GL44Gy44KNDQor44Gs44G+LOOBvuOBleOChuOBjQ0KK+OBn+OBtuOBoSzjgobjgZ/jgYsNCivjgY3jgoDjgoks44G/44Gk44KLDQor44GG44GgLOOBn+OBi+OBvw0KK+OBguOBiuOBjSzjga7jgorjgZMNCivjgarjgYvjgoDjgoks44G+44GV44GoDQor44G144GY44GT44GXLOOBleOBqOOBlw0KK+OBmeOBv+OBoCzjgY3jgojjgZcNCivjgY/jgZrjga/jgoks44Gu44G844KLDQor44KP44Gf44Gq44G5LOOBsuOCjeOBlw0KK+OBguOCieOBnyzjgZXjgajjgb8NCivjgo3jgaPjgYvjgY8s44G+44KG44G/DQor44GE44Gu44GG44GILOOBv+OBpOOBvuOBlQ0KK+OBpOOBmOOCguOBqCzjgb7jgZXjgb8NCivjgb/jgYbjgoks44Gq44Gq44GTDQor44Gt44KC44GoLOOCiOOBl+OBig0KK+OBguOCgeOBv+OChCzjgojjgZfjgYvjgZoNCivjgarjgYvjgoDjgoks44Gy44KN44KG44GNDQor44GC44GE44GwLOOBruOBtuOBn+OBiw0KK+OCiOOBreOBluOCjyzjgZfjgpPjgoQNCivjgbXjgZjjgoDjgoks44GX44KF44GGDQor44KK44KF44GG44GoLOOBsuOCjeOBvw0KK+OCj+OBn+OBquOBuSzjgajjgoLjgb8NCivjgY3jgZ/jgYzjgo8s44GX44KT44GYDQor44GC44Gf44KJ44GXLOOBqOOCguOBquOBig0KK+OBjeOBj+OBoSzjgZjjgoXjgpMNCivjgZnjgZrjgY0s44GC44GN44KJDQor44Gf44Gq44GLLOOBsuOCjeOBlw0KK+OBhOOBkeOBoCzjgbLjgo3jgarjgooNCivjgojjgZPjgYvjgo8s44G/44Gk44Gy44GTDQor44GP44GV44Gk44GQLOOBn+OBi+OBlw0KK+OBv+OBmuOBrizjgZHjgpPjgZgNCivjgarjgYzjgbvjgoos44GT44GG44GE44GhDQor44GZ44GO44KC44GoLOOBk+OBhuOBmA0KK+OBguOCk+OBqeOBhizjgaTjga3jgYoNCivjgZ/jgYvjgoTjgarjgY4s44Gy44KN44G144G/DQor44GX44GwLOOBvuOBleOBkw0KK+OBi+OBv+OChOOBvizjgYvjgZrjgbLjgo0NCivjgYrjgYrjgbLjgoks44Gy44KN44G/DQor44G744KT44G+LOOBr+OCi+OChuOBjQ0KK+OBn+OBsOOBnyzjga7jgbbjgojjgZcNCivjgYjjgpPjgaks44GR44KT44GE44GhDQor44GE44GX44GM44GNLOOBm+OBhOOBmA0KK+OBl+OBsCzjgobjgYbjgYTjgaHjgo0NCivjgoTjgb7jgaAs44G+44GV44Gy44GoDQor44Gf44GL44GuLOOBi+OBpOOBig0KK+OCiOOBl+OBoCzjgZ/jgaTjgoQNCivjgYLjgb7jgZXjgY0s44Go44GX44Gy44GTDQor44GK44GX44GL44KPLOOBl+OCk+OBmA0KK+OBq+OBl+OBrizjgb/jgbvjgZMNCivjgYvjgajjgYYs44GK44GV44KADQor44Gv44G+44GK44GLLOOBqOOCguOBkw0KK+OBleOBrizjgZ/jgYvjgYvjgZoNCivjgZnjgYjjgZfjgZIs44GP44Gr44Gm44KLDQor44Gq44GL44GfLOOBsuOCjeOBvw0KK+OBk+OBsOOChOOBlyzjgbLjgafjgobjgY0NCivjgZnjganjgYYs44KE44GZ44GXDQor44Gk44Gk44G/LOOBjeOCiOOBsuOBqA0KK+OBv+OBn+OBqyzjgZPjgYbjgZgNCivjgYTjgZfjgaAs44KE44GZ44G144G/DQor44GE44GE44Ga44GLLOOChuOBn+OBiw0KK+OBl+OCieOBhCzjgobjgb8NCivjgoTjgb7jgaAs44GE44KP44GKDQor44Gk44GY44GL44GpLOOBi+OBmuOBkw0KK+OBvuOBpOOBquOBjCzjgZPjgYbjgYTjgaENCivjgZ/jgarjgYss44GL44Ga44GIDQor44G/44Gq44G/LOOBsuOCjeOBlw0KK+OBleOBi+OBhCzjgb7jgZXjgobjgY0NCivjgYbjgYjjgY0s44GX44GK44KKDQor44GK44GgLOOBvuOBleOBig0KK+OBvuOBiOOBoCzjgZvjgYTjgZgNCivjgafjgY3jgZ/jgass44GY44KF44KTDQor44GC44G+44GuLOOBn+OBi+OBsuOCjQ0KK+OBv+OChOOBk+OBlyzjgZfjgZLjgYvjgZoNCivjgYLjgpPjgZbjgYQs44Go44GX44G/44GhDQor44GG44KB44GgLOOChuOBjeOBig0KK+OBn+OBjeOBluOCjyzjgYLjgaTjgZcNCivjgoDjgonjgavjgZcs44GN44KI44GXDQor44GP44KK44Gv44KJLOOBqOOBl+OBsuOBkw0KK+OChOOBvuOBleOBjSzjgb7jgooNCivjgYrjgYrjgaTjgYss44G/44Gk44Gy44KNDQor44GC44G/44GuLOOBn+OBi+OBlw0KK+OCguOCiizjgoTjgZnjga7jgooNCivjgavjgZfjgoLjgoos44GX44KT44GYDQor44Gf44GR44GuLOOBvuOBleOBig0KK+OBl+OCk+OBjOOBjSzjgojjgZfjgYvjgZoNCivjgb7jgaTjgYos44KI44GX44GNDQor44G144GY44GtLOOBvuOBleOBjQ0KK+OBi+OBquOBvuOCiyzjgbLjgo3jgojjgZcNCivjgYvjgarjgZbjgo8s44Gf44Gk44KG44GNDQor44GX44G/44GaLOOCiuOCheOBhuOBmA0KK+OCj+OBoCzjgYTjgaTjgZMNCivjgYTjgZfjgY/jgoks44Gf44GR44GXDQor44G144GP44GgLOOBguOBjeOBsuOCjQ0KK+OBhuOBi+OBhCzjgojjgZfjgZMNCivjgYLjgorjgb4s44GK44GV44KADQor44GK44GK44GfLOOBn+OBi+OBguOBjQ0KK+OCguOCiuOBn+OBqyzjgZ/jgYvjgZcNCivjgYLjgaDjgaEs44KI44GX44Gy44KNDQor44GP44G+44GnLOOBvuOBleOBruOCig0KK+OBguOCiSzjgZnjgZnjgoANCivjga/jgZfjgoLjgags44Go44GK44KLDQor44Go44KI44GK44GLLOOBvuOBk+OBqA0KK+OBiuOBiuOBpCzjgabjgaTjgo3jgYYNCivjgb/jgoTjgY0s44GR44GE44GE44GhDQor44GE44GX44GL44KPLOOBmOOCheOCk+OBhOOBoQ0KK+OBhOOBjOOCieOBlyzjgarjgYrjgaTjgZANCivjgYrjgYrjgavjgZcs44GN44KT44KEDQor44GX44KJ44GE44GXLOOBk+OBhuOBhOOBoQ0KK+OCiOOBk+OCgSzjgojjgZfjgYLjgY0NCivjgbXjgZjjgoLjgags44GL44Ga44Gy44KNDQor44GL44KT44GuLOOCguOCiuOChOOBmQ0KK+OBn+OBoeOBsOOBqizjgb/jgaHjgYoNCivjgoTjgb7jgaAs44Gh44Gq44G/DQor44GC44GV44G/LOOBl+OBkuOBig0KK+OBv+OBhuOCiSzjgoTjgZnjgZcNCivjgajjgY/jgbLjgo0s44Gy44KN44Gu44G2DQor44KC44KK44GL44KPLOOBvuOBleOBruOBtg0KK+OBhOOBqOOBhizjgb/jgY3jgbLjgZUNCivjgZXjga4s44Go44KC44G/44GkDQor44GZ44Ga44GNLOOBvuOBk+OBqA0KK+OBl+OCguOBqOOBrizjgb7jgarjgbYNCivjgb7jgYvjgbks44GV44Go44G/DQor44GE44Go44GGLOOBk+OBhuOBmA0KK+OBpOOBj+OBoCzjgZjjgoXjgpPjgZgNCivjgojjgZfjgYvjgo8s44G/44Gk44GQDQor44Gf44GL44KE44Gq44GOLOOBsuOCjeOBjQ0KK+OBu+OCk+OBoCzjgZ/jgYvjgojjgZcNCivjgavjgZfjga4s44KG44GG44GYDQor44GN44KA44KJLOOCiOOBl+OBsuOCjQ0KK+OBi+OBqOOBhizjgZPjgYbjgYTjgaENCivjgYrjgYrjga/jgZ8s44GY44KF44KTDQor44GG44Gk44G/LOOBi+OBmuOBsuOBkw0KK+OBguOCk+OBqeOBhizjgYvjgZrjgbLjgZUNCivjga/jgb7jgZ/jgass44G/44Gu44KLDQor44GN44Gu44GX44GfLOOBn+OBi+OBteOBvw0KK+OBi+OCj+OBmyzjgajjgZfjgZ/jgYsNCivjgYbjgYjjga4s44KI44GX44Gy44GTDQor44GX44GL44G+LOOCiuOCh+OBhuOBmA0KK+OBmeOBmuOBjSzjgb7jgZXjgobjgY0NCivjgbXjgZjjgYrjgYss44G+44GV44Gy44KNDQor44GE44Gu44GG44GILOOBqOOCguOBsuOCjQ0KK+OBjeOBn+OBluOBjSzjgoTjgZnjgobjgY0NCivjgYLjgYTjgbks44Gy44KN44GXDQor44GK44GK44GL44KPLOOBleOBi+OBiA0KK+OBn+OBkeOBhCzjgoTjgZnjga/jgosNCivjgYvjgonjga/jgZcs44Gy44KN44GXDQor44GZ44Ga44GNLOOBvuOChuOBvw0KK+OBguOCieOBhCzjgbLjgo3jgZcNCivjgYTjga7jgaAs44Gu44KK44KG44GNDQor44GK44GP44KA44KJLOOBiOOCig0KK+OBvuOCi+OBhCzjgZjjgoXjgpPjgZMNCivjgbLjgo3jgZrjgb8s44GC44GN44Gy44GVDQor44KP44GX44GaLOOBn+OBj+OChA0KK+OCiOOBl+OCgOOCiSzjgZ/jgYvjgbLjgZUNCivjgYvjgaTjgb7jgZ8s44Gf44GL44GXDQor44G+44GZ44GL44KPLOOBi+OBpOOCiQ0KK+OBhOOCj+OBiizjgZfjgoXjgYbjgZgNCivjgoTjgb7jgoLjgags44KI44GX44Gy44GoDQor44Gf44Gq44GLLOOBleOBqOOCiw0KK+OBn+OBkeOBhuOBoSzjga7jgorjgobjgY0NCivjga7jga/jgoks44GX44KF44GG44Ge44GGDQor44G144Gq44Gv44GXLOOBi+OBmuOBruOCig0KK+OBquOBlOOBlyzjgZHjgpPjgZgNCivjgYbjgoHjgaAs44GL44Ga44KEDQor44GC44GN44KE44G+LOOBsuOBqOOBlw0KK+OBquOBi+OBoCzjgb7jgZXjgagNCivjgZXjgYTjgajjgYYs44KB44GQ44G/DQor44Gf44Gv44KJLOOBmOOCheOCk+OBhOOBoeOCjQ0KK+OBq+OBl+OBvuOBpCzjgojjgZfjgbLjgo0NCivjgbLjgonjgb/jgaQs44G+44GT44GoDQor44KB44GL44GfLOOBvuOBleOCiw0KK+OBn+OBi+OBvyzjgorjgoXjgYbjgZ/jgo3jgYYNCivjgZ3jga7jgaAs44Gy44Gn44KG44GNDQor44G/44KE44GW44GNLOOChuOBhuOBmA0KK+OBvuOCi+OChOOBvizjgbLjgafjgYLjgY0NCivjgaTjga7jgYvjgo8s44G+44GV44GXDQor44Gv44KJ44GgLOOBi+OBpOOBvw0KK+OBpOOBmCzjgaTjgZDjgbLjgZMNCivjgYTjgYzjgonjgZcs44Go44GX44GKDQor44KI44GX44GgLOOBi+OBiuOCig0KK+OBn+OBkeOBjOOBnyzjgZPjgYbjgY0NCivjgYLjgbks44KK44KH44GG44GYDQor44GC44GL44Gs44G+LOOBqOOBj+OBsuOCjQ0KK+OBi+OCj+OBoCzjgbLjgo3jgYLjgY0NCivjgZ/jgZQs44Gy44KN44GXDQor44GL44G/44KA44KJLOOBvuOBleOBlw0KK+OBvuOBpOOChCzjgZLjgpMNCivjgYTjgo/jgZ8s44GC44GN44Gy44GTDQor44G+44GI44GL44KPLOOBleOBqOOBlw0KK+OChOOBvuOBkOOBoSzjgozjgYTjgZMNCivjgZfjgo3jgZfjgZ8s44Go44KC44Gy44KNDQor44KE44G+44GX44GfLOOBvuOBleOBqA0KK+OBpOOBmOOBi+OCjyzjgZjjgoXjgpPjgYTjgaENCivjgZ/jgarjgYss44KI44GX44G144G/DQor44G/44Gq44G/LOOBqOOCguOBsuOCjQ0KK+OBleOBqOOBhizjgojjgZfjgYLjgY0NCivjgYbjgYrjgZrjgb8s44GC44GN44KJDQor44GZ44GO44KE44G+LOOBsuOCjeOChuOBjQ0KK+OBoeOBsCzjgb7jgZXjgobjgY0NCivjgYvjgarjgYQs44GV44Go44GXDQor44G+44Gk44KE44G+LOOBpOOCiOOBlw0KK+OBn+OBi+OBrizjgYLjgY3jgokNCivjgY/jgb7jgYzjgYQs44GT44GG44GE44GhDQor44Gf44GR44GT44GXLOOCgOOBpOOBsuOBlQ0KK+OBteOBn+OBsCzjgajjgZfjgYLjgY0NCivjgYbjgoHjgZbjgY0s44GL44Ga44Gf44GgDQor44GK44GE44KP44GRLOOCiOOBhuOBmeOBkQ0KK+OBquOBjOOBpOOBiyzjgb7jgarjgbYNCivjgYTjgb7jgYzjgo8s44Gy44Go44G/DQor44Gv44GX44KC44GoLOOBguOBjeOCiQ0KK+OBiuOBiuOBsuOCiSzjgobjgYbjgZ/jgo3jgYYNCivjgb/jgoTjgbLjgoks44G/44Gh44GC44GNDQor44Gu44GQ44GhLOOBkeOBhOOBnuOBhg0KK+OBmeOBjuOCguOBqCzjgYvjgZrjgbXjgb8NCivjgYvjgo/jgZDjgaEs44GL44Gk44Gu44KKDQor44GX44Gu44GbLOOBpOOCiOOBlw0KK+OBquOCiuOBleOCjyzjgojjgZfjgbLjgagNCivjgbLjgo3jgZss44GC44GN44Gy44KNDQor44Gr44GX44GW44GNLOOBmeOBmeOCgA0KK+OCguOCiizjga7jgbbjgobjgY0NCivjgbXjgYvjgYos44KI44GX44GTDQor44G/44KE44GY44G+LOOBkeOBhOOBnuOBhg0KK+OBvuOBpOOBrizjgYvjgZrjgZfjgZINCivjgYTjgo/jgYQs44GX44GS44Gu44G2DQor44GL44GELOOBv+OBqeOCig0KK+OBn+OBquOBiyzjgY/jgavjgZMNCivjgaHjgbAs44G+44GV44G/DQor44Gd44GuLOOBsuOCjeOBlw0KK+OCiOOBk+OChOOBvizjgYLjgY3jgbLjgZUNCivjgZ/jgYvjgZfjgb4s44GY44KF44KTDQor44GK44GL44KC44GoLOOBk+OBhuOBmA0KK+OBv+OChOOBi+OCjyzjgaDjgYTjgZnjgZENCivjgoDjgonjgoLjgags44Go44KC44GC44GNDQor44GN44KA44KJLOOBk+OBhuOBhOOBoQ0KK+OBvuOBpOOBquOBjCzjgobjgb/jgZMNCivjgbXjgY/jgaAs44Gk44Go44KADQor44GK44GK44Gr44GXLOOBvuOBleOBlw0KK+OBguOBhCzjgbLjgafjgYvjgZoNCivjgb7jgYjjgaAs44Gy44GV44GL44GaDQor44GE44Gu44GG44GILOOCiOOBl+OBvw0KK+OBhOOBhOOBoCzjgZ/jgYvjgbLjgZUNCivjgbXjgZjjgYQs44Gy44KN44KG44GNDQor44GV44GP44KJ44GELOOBn+OBj+OChA0KK+OBvuOBpOOBhCzjgYbjgYTjgooNCivjgYTjgb7jgaAs44GX44KT44GYDQor44G/44KE44GRLOOBguOBpOOBlw0KK+OBleOBi+OBhCzjgbLjgo3jgbLjgZUNCivjgYvjgajjgYYs44GK44GV44KADQor44GE44KP44GfLOOBquOBiuOBqA0KK+OBiuOBiuOBrizjgb7jgZXjgoQNCivjgYTjgZ3jgbks44Gf44GL44KI44GXDQor44GK44KE44G+44GgLOOBpOOBqOOCgA0KK+OBqOOBhuOBmOOBvizjgZ/jgaTjgbLjgo0NCivjgZ/jgZHjgYbjgaEs44GL44Ga44Gy44GTDQor44Gq44GL44KE44G+LOOBvuOBmeOBig0KK+OBl+OCieOBhOOBlyzjgYrjgZXjgoANCivjgYvjga7jgb7jgZ8s44GC44Gk44GXDQor44GZ44Gp44GGLOOBn+OBi+OBsuOCjQ0KK+OBl+OCieOChOOBvizjgYLjgY3jgbLjgo0NCivjgYrjgYrjgoQs44G+44GV44KLDQor44G/44Gq44GM44KPLOOBqOOCguOBsuOCjQ0KK+OBjeOCgOOCiSzjgZ/jgaTjgoQNCivjgZ/jgYvjgY4s44Gg44GE44GeDQor44GV44Go44GGLOOChuOBjeOBig0KK+OBteOBmOOCj+OCiSzjgb/jgaTjgosNCivjgYTjgoLjgags44KI44GG44GfDQor44GG44GI44GuLOOBqOOCguOBsuOCjQ0KK+OBjeOCh+OBhuOBrizjgZHjgpPjgZQNCivjgY3jgorjgYYs44KI44GX44Gf44GgDQor44GP44G844GfLOOBpOOBreOBig0KK+OBk+OBm+OBjSzjgZ/jgYvjgZcNCivjgZnjgZbjgY0s44G+44GV44Gy44KNDQor44Gf44GL44GV44GNLOOChOOBmeOBsuOBlQ0KK+OBpOOBi+OCguOBqCzjgZfjgpPjgYTjgaENCivjgarjgYTjgajjgYYs44GR44KT44GYDQor44Gq44GL44GU44KBLOOBsuOCjeOBi+OBmg0KK+OBquOBi+OCgOOCiSzjgbLjgafjgoTjgZkNCivjga/jgY7jgo/jgoks44GL44Gk44G/DQor44G+44Gk44KC44GoLOOBi+OCiOOBkw0KK+OBk+OCk+OBrizjgojjgZfjgbLjgZUNCivjgZXjgYTjgZDjgZUs44Gf44KC44GkDQor44G744KT44GgLOOChuOBjeOBig0KK+OBn+OBquOBiyzjgbLjgo3jgZcNCivjgb7jgaTjgajjgb8s44GL44KI44GTDQor44GC44GL44GV44GLLOOBsuOCjeOBguOBjQ0KK+OBm+OCk+OBjOOCkyzjgYLjgY3jgbLjgacNCivjgZ/jgZHjgYos44Gu44KK44GL44GaDQor44KA44KJ44GfLOOBsuOCjeOChuOBjQ0KK+OBi+OCj+OBmyzjgajjgoLjgbLjgo0NCivjgavjgZfjgZbjgY0s44Gf44Gk44KG44GNDQor44G444GE44Go44GGLOOBiOOBhOOBhOOBoQ0KK+OBiuOBiuOBleOCjyzjgb7jgZXjga/jgosNCivjgYbjgYjjgaAs44KI44GG44GE44GhDQor44GL44Gq44KE44G+LOOChOOBmeOBsuOBkw0KK+OBr+OCieOBoCzjgajjgoLjgobjgY0NCivjgarjgYvjgYzjgo8s44GC44Gk44GXDQor44G/44KE44KC44KKLOOBvuOBk+OBqA0KK+OBi+OBhCzjgZHjgpPjgZgNCivjgY3jgZDjgaEs44GX44KF44GG44GYDQor44GV44Gf44GRLOOBkeOCk+OBmA0KK+OBiuOBiuOBiuOBiyzjgajjgZfjgo3jgYYNCivjgarjgYvjgZbjgo8s44GT44GG44GYDQor44KE44GZ44GK44GLLOOBvuOBleOBsuOBpw0KK+OBj+OCjeOBv+OBpCzjgoTjgZnjgZ/jgYsNCivjgYvjgarjgaAs44Gy44Gn44GNDQor44G+44KL44GL44KPLOOBsuOBp+OBjQ0KK+OBquOBjOOBleOCjyzjgZ/jgZHjgobjgY0NCivjgZPjgbDjgoTjgZcs44GX44KF44GGDQor44GI44KT44GpLOOBvuOBleOBruOCig0KK+OBhOOCk+OBquOBvyzjga/jgovjgYoNCivjgoTjgb7jgoLjgags44GN44KI44Gf44GLDQor44Gq44GM44GP44KJLOOBleOBqOOBlw0KK+OBhuOBiOOBrizjgb7jgaHjgZMNCivjgavjgZfjgZbjgYss44G/44GLDQor44GV44Go44GGLOOBpuOBpOOCjeOBhg0KK+OCguOCiuOChOOBvizjgZ/jgaTjgYoNCivjgZPjga/jgoTjgZss44GX44GS44GKDQor44Gp44GE44GfLOOBsuOCjeOBlw0KK+OBu+OBneOBi+OCjyzjga7jgbbjgYoNCivjgYLjgYrjgY0s44G/44Gk44GEDQor44G+44GZ44G/44GgLOOBqOOCguOBsuOBkw0KK+OBiuOBoSzjgb7jgZXjgYTjgaENCivjgZnjgZrjgY0s44GR44KT44GYDQor44GZ44GO44KE44G+LOOBkeOCk+OBhOOBoQ0KK+OBteOBmOOCj+OCiSzjgZvjgYTjgoQNCivjgZ/jgarjgbks44G/44Gk44KG44GNDQor44Go44GgLOOBguOBpOOBlw0KK+OBpOOBvOOBhCzjgoTjgZnjgYoNCivjgZnjgY7jgZ8s44G+44GV44Gu44KKDQor44GC44Gg44GhLOOBkeOBhOOBnw0KK+OBteOBmOOBhCzjgb7jgZXjgY0NCivjgZnjgYzjgoLjgoos44Gy44KN44GXDQor44KE44GZ44GgLOOBquOBiuOBsuOBkw0KK+OBn+OBi+OBr+OBlyzjgbLjgo3jgobjgY0NCivjgZ/jgYzjgb8s44G+44GV44KLDQor44Go44G/44KE44G+LOOChuOBhuOBmA0KK+OBr+OBreOBoCzjgoTjgZnjgobjgY0NCivjgYrjgZbjgY0s44Gf44GR44GXDQor44GK44GQ44KJLOOChOOBmeOChuOBjQ0KK+OBpuOCieOBleOBjSzjga7jgbbjgoQNCivjgaTjgaHjgoQs44GI44Gk44GTDQor44GK44GL44GgLOOBpuOCi+OBig0KK+OBguOBuSzjga7jgbbjgobjgY0NCivjgYLjgbks44G/44Gk44GIDQor44KC44KK44KP44GNLOOBk+OBhuOBhOOBoeOCjeOBhg0KK+OBr+OChOOBrizjgZHjgpPjgZ8NCivjgajjgb/jgarjgYws44GY44KF44KTDQor44GZ44Ga44GNLOOBv+OBjQ0KK+OBi+OBn+OBjuOCiizjgZXjgajjgZcNCivjgYLjga/jgoks44Gv44KE44GoDQor44G744GXLOOBquOBquOBkw0KK+OBhOOBl+OBi+OCjyzjgZ/jgaTjgoQNCivjgZfjgoLjgoDjgoks44KI44GX44Gy44GVDQor44KP44GN44KC44GoLOOBv+OChuOBjQ0KK+OBi+OCj+OBpizjgZ/jgYvjgZcNCivjgYLjgbbjgonjgYvjgo8s44GL44Ga44GK44G/DQor44KI44GX44Gf44GRLOOBn+OBi+OBlw0KK+OBhOOBl+OBoCzjgb7jgZXjgobjgY0NCivjgbvjgpPjgaAs44Go44GX44KN44GGDQor44GX44Gf44G+LOOCiOOBl+OBig0KK+OBruOBkOOBoSzjgZ/jgZHjgZcNCivjgb/jgZrjgYQs44GC44KE44GKDQor44GC44KT44Gp44GGLOOBquOBiuOBteOBvw0KK+OCiOOBreOBl+OBvizjgarjgaTjgb8NCivjgYLjgY3jgZ8s44GY44KF44KT44GTDQor44GG44GILOOBguOBpOOBlw0KK+OBmeOBjizjgZPjgYbjgYTjgaENCivjgarjgYvjgZjjgb4s44G+44KKDQor44GL44GV44GK44GLLOOBqOOBl+OBsuOBkw0KK+OBruOBoCzjgabjgaTjgbXjgb8NCivjgb7jgaTjgZbjgo8s44GT44GG44GE44Gh44KN44GGDQor44KP44Gf44G5LOOBn+OBpOOBig0KK+OBguOBhOOBluOCjyzjgZHjgYTjgZjjgo3jgYYNCivjgYTjgo/jgZUs44GX44KTDQor44GT44GMLOOBguOBjeOBsuOBkw0KK+OBsuOBjOOBl+OBn+OBqyzjgbLjgafjgbXjgb8NCivjgYTjgZHjgaAs44Go44GX44KEDQor44GC44GN44Gq44GLLOOChOOBmeOBr+OCiw0KK+OBteOBmOOBnyzjgYvjgZrjgoQNCivjgoTjgb7jgYrjgYss44Gy44GV44Gf44GLDQor44KP44GhLOOBm+OBpOOChA0KK+OBhuOBiOOBrizjgZHjgpPjgZ/jgo3jgYYNCivjgYbjgZfjgY0s44GL44Ga44GE44GhDQor44KE44G+44KC44GoLOOBr+OCi+OBsuOBkw0KK+OBi+OBqOOBhizjgb7jgZXjgajjgZcNCivjgarjgYzjgYQs44Gf44Gg44Gy44KNDQor44G144GP44GgLOOBguOChOOBkw0KK+OBquOBi+OBn+OBqyzjgYjjgb8NCivjgbLjgonjgZXjgo8s44Gq44GM44GTDQor44G/44KE44GW44GNLOOBvuOBleOCiw0KK+OBpuOCieOBl+OBvizjgoDjga3jgYvjgZoNCivjgYLjgonjgYQs44Gh44GMDQor44Gf44Gq44GLLOOBl+OCk+OBhOOBoQ0KK+OBi+OBreOBkyzjgZ/jgYvjgYLjgY0NCivjgZXjgajjgYYs44Gm44Gk44GYDQor44Gq44KK44GfLOOBl+OCheOBhuOBhOOBoQ0KK+OBquOBjOOBl+OBvizjgZjjgoXjgpPjgYTjgaHjgo0NCivjgZXjgYvjga4s44Go44GX44GKDQor44G/44GG44KJLOOBleOBqOOBlw0KK+OChOOBvuOBkOOBoSzjgZHjgYQNCivjgYrjgafjgoks44Gq44GK44Go44GXDQor44GC44G5LOOBguOBpOOBlw0KK+OBk+OBoOOBvizjgYvjgZrjgbLjgo0NCivjgoTjgb7jgoLjgags44Gy44KN44KG44GNDQor44GK44GX44G+LOOBqOOBiuOCiw0KK+OBhOOBl+OBmizjgaTjgajjgoANCivjgYvjgpPjgbDjgoTjgZcs44KG44GN44GKDQor44GK44GK44GL44KPLOOBsuOCjeOChuOBjQ0KK+OBsuOBiOOBoCzjgZ/jgZHjgbLjgZMNCivjgYTjga7jgb7jgZ8s44Gy44KN44G/DQor44G+44GN44GfLOOBqOOBl+OChA0KK+OBjOOBquOBryzjgZ/jgYvjgobjgY0NCivjga/jgoTjgYvjgo8s44Gy44KN44KG44GNDQor44GC44GL44Gs44G+LOOBpuOBpOOChA0KK+OCgOOCjeOBi+OCjyzjgb7jgZXjga7jgooNCivjgYrjga4s44GR44GE44GZ44GRDQor44GN44KA44KJLOOBl+OCh+OBhuOBlA0KK+OBr+OBn+OBluOCjyzjgoTjgZnjgZMNCivjgbXjgZjjgZ8s44G+44GV44GNDQor44GG44GI44GgLOOBoOOBhOOBmeOBkQ0KK+OChOOBvuOBruOBhuOBoSzjgYTjgZXjgYoNCivjgbXjgovjgZ8s44KI44GX44Gy44KNDQor44GK44GP44KE44G+LOOBkeOCk+OBhOOBoeOCjQ0KK+OBhOOBqOOBhizjgbXjgb/jgYoNCivjgYrjgZXjgarjgYQs44Gb44GE44GE44GhDQor44GT44Gf44GrLOOBn+OBkeOBlw0KK+OBiuOBiuOBpOOBiyzjgZ/jgaDjgYLjgY0NCivjgbXjgY/jgZfjgb4s44GT44GZ44GRDQor44GE44GE44Ga44GLLOOBkeOCkw0KK+OCj+OBn+OBquOBuSzjgabjgovjgYLjgY0NCivjgoLjgorjgZ8s44GR44KT44GE44Gh44KNDQor44GL44Go44GGLOOBsuOCjeOBjQ0KK+OBu+OCk+OBoCzjgajjgZfjgYLjgY0NCivjgYvjgajjgYYs44GC44GN44Gu44KKDQor44GC44GV44Gs44G+LOOChOOBmeOBsuOCjQ0KK+OBguOBmuOBvizjgb7jgZXjgYoNCivjgabjgonjgZXjgo8s44G/44Gk44GKDQor44GC44GL44GXLOOBpOOBreOBig0KK+OBi+OBqOOBhizjgarjgYrjgagNCivjgYrjga7jgZXjgags44Gf44GL44GXDQor44Gq44GL44KA44KJLOOBsuOCjeOBpOOBkA0KK+OBruOCgOOCiSzjgbLjgafjgb8NCivjgYTjga7jgYbjgYgs44GI44GE44GE44GhDQor44Gv44KE44GXLOOBl+OCk+OBhOOBoQ0KK+OBn+OCgOOCiSzjgYzjgY8NCivjgZXjgYvjgYQs44GZ44GI44Gu44G2DQor44GZ44GO44KA44KJLOOCiuOCh+OBhg0KK+OBqOOBv+OChOOBvizjgZHjgYQNCivjgYvjgY3jgZbjgo8s44Go44GX44GC44GNDQor44Gr44GX44Gf44GrLOOBl+OCh+OBhuOBhOOBoeOCjeOBhg0KK+OBguOBleOBj+OCiSzjgZfjgpPjgoQNCivjgYTjgZfjgZbjgY0s44GV44Go44GXDQor44G+44Gk44KC44GoLOOBl+OCk+OBhOOBoeOCjeOBhg0KK+OBquOBjOOBiizjgajjgZfjgYoNCivjgY3jga4s44KK44GIDQor44GC44G5LOOBn+OBmeOBjw0KK+OBqCzjgZPjgYbjgZgNCivjgoTjgb7jgY0s44GT44GG44GE44GhDQor44GC44KJ44GELOOBkuOCkw0KK+OChOOBvuOBoCzjgZHjgYTjgZgNCivjgYrjgY/jgoDjgoks44GL44Ga44GIDQor44Gv44KJLOOBl+OCh+OBhuOBn+OCjeOBhg0KK+OChOOBvuOCguOBqCzjgYvjgaTjgbLjgZUNCivjgarjgYvjgoDjgoks44GX44KT44GE44Gh44KN44GGDQor44GC44KJ44GELOOBi+OBmuOChA0KK+OBhOOBkeOBqSzjgb7jgZXjgZ/jgYsNCivjgYTjgajjgYYs44GR44GE44GYDQor44GE44Go44GGLOOChuOBhuOBmA0KK+OBhuOCiuOCheOBhizjgYLjgY3jgokNCivjgYbjgaHjgoTjgb4s44Gf44Gg44GXDQor44GI44Gu44KC44GoLOOBsuOCjeOBv+OBoQ0KK+OBiOOBmuOCiSzjgajjgYrjgosNCivjgYrjgYrjgaTjgYss44GR44GE44GZ44GRDQor44GI44Gr44KDLOOBmeOBmeOCgA0KK+OBguOBi+OBiizjgZHjgYTjgZnjgZENCivjgYrjgYrjgavjgZcs44GX44KH44GG44GYDQor44GL44GM44KELOOBhOOBquOCkw0KK+OBi+OBvuOBnyzjgZ/jgYvjgbLjgo0NCivjgYvjgo/jgYvjgb8s44Gu44G244Gy44GVDQor44GV44GV44GNLOOChOOBmeOCiOOBlw0KK+OBn+OBi+OBr+OBlyzjgarjgYrjgbLjgZMNCivjgZ/jgaAs44GT44GG44GE44GhDQor44Gr44GX44GuLOOBvuOBleOCiOOBlw0KK+OBguOBleOBiizjgarjgYrjgY0NCivjga/jgZfjgoLjgags44Gq44GK44GNDQor44Gv44Gj44Go44KKLOOBn+OBi+OBkw0KK+OBu+OBlyzjgZ/jgYoNCivjgbvjgorjgZ8s44GX44KT44GE44GhDQor44G+44GI44Ge44GuLOOBquOCi+OBsuOBpw0KK+OBvuOBiOOBmOOBvizjgb/jga7jgosNCivjgb/jgoTjgZbjgY0s44KG44G/44GTDQor44GC44KJ44GELOOCiOOBl+OBvw0KK+OCguOCiizjgZPjgZnjgZENCivjgb7jgYjjgaAs44Gy44KN44GXDQor44GK44GhLOOBkeOCkw0KK+OBguOBleOBj+OCiSzjga7jgorjgYoNCivjgYbjgZXjgb8s44GC44Gk44GXDQor44GK44GP44KE44G+LOOBn+OBi+OBlw0KK+OBi+OCiuOChCzjgZ/jgYvjgbLjgZMNCivjgYbjgYjjgaAs44Gy44Gn44KG44GNDQor44GK44Gf44G5LOOBkeOBhOOBnuOBhg0KK+OBjeOCgOOCiSzjgYTjgZXjgoANCivjgY/jgZfjgaAs44KI44GX44Gv44KLDQor44GC44G+44GvLOOBk+OBhuOBmA0KK+OBk+OCk+OBqSzjgojjgZfjgY0NCivjgZfjgb/jgZos44GX44KH44GG44GE44Gh44KN44GGDQor44GZ44Ga44GNLOOBl+OCheOBhuOBk+OBhg0KK+OBmeOCkyzjgZnjgb/jgYoNCivjgZ/jganjgZPjgo0s44Gy44Go44GXDQor44Go44Gt44GV44GPLOOBhOOBleOCgA0KK+OBquOBi+OCgOOCiSzjgbLjgo3jgZcNCivjgb7jgZnjgaAs44Gy44KN44GKDQor44G/44KE44GW44GNLOOBv+OBr+OCiw0KK+OCiOOBl+OBquOBjCzjgYLjgY3jgbLjgZUNCivjgojjgZPjgYvjgo8s44Gf44GP44G+DQor44Gk44Gh44KELOOBvuOChuOBvw0KK+OBn+OBi+OBr+OBlyzjgb7jgZXjga7jgooNCivjgZ/jgarjgbks44G+44GV44GYDQor44GE44Go44GGLOOBkeOBhOOBmeOBkQ0KK+OBquOBjOOBiizjgZfjgpPjgYTjgaENCivjgZXjgajjgYYs44Gf44GR44GXDQor44Gf44GgLOOBqOOCguOBsuOCjQ0KK+OBguOBjeOCguOBqCzjgZfjgoXjgpPjgZnjgZENCivjgZ/jgoDjgoks44G+44KC44KLDQor44Gf44KA44KJLOOBi+OBmuOChuOBjQ0KK+OBiuOBiyzjgb/jgaHjga/jgosNCivjgZXjgY/jgonjgY4s44GR44KT44GE44GhDQor44GZ44Ga44GNLOOBsuOCjeOBlw0KK+OCguOCiuOBiuOBiyzjgZ/jgaDjgZcNCivjgoTjgZDjgaEs44KG44GG44GXDQor44G/44KE44KC44GoLOOBleOBqOOBlw0KK+OBl+OCieOBi+OCjyzjgbLjgafjgY0NCivjgYrjgYrjgaTjgYss44Gy44Gn44GNDQor44KE44G+44KC44GoLOOBqOOCguOChOOBmQ0KK+OBquOBi+OBvuOBoSzjgoTjgZnjgbXjgb8NCivjgo/jgYvjga/jgoks44KE44GZ44GKDQor44GC44GNLOOBn+OBi+OBlw0KK+OBn+OBjeOBnyzjgYvjgZrjgbLjgo0NCivjgYLjgonjgYvjgo8s44GR44GE44GE44GhDQor44G+44Gk44GKLOOBk+OBhuOBmA0KK+OBoeOCh+OBhizjgobjgYbjgYTjgaENCivjgY/jgo3jgaAs44GX44GS44KLDQor44KE44G+44GX44GfLOOBn+OCjeOBhg0KK+OBqOOCguOBiuOBiyzjgYjjgb/jgZMNCivjgarjgYvjgYos44KP44Gf44KLDQor44GC44GdLOOBpuOCi+OBi+OBmg0KK+OBteOBj+OBoCzjga7jgbbjgZ/jgYsNCivjgYLjgYrjgY0s44Gy44Go44GXDQor44GP44KLLOOBsuOBleOBqA0KK+OCgOOCieOBi+OBvyzjgoTjgZnjgbLjgo0NCivjgY/jgo3jgaAs44Gf44GP44KEDQor44G/44GL44G/LOOBguOBjeOBsuOCjQ0KK+OBi+OBv+OCgOOCiSzjgbLjgo3jgobjgY0NCivjgY3jgZ/jgZjjgb4s44Gq44GK44GNDQor44G+44KL44KE44G+LOOCiOOBl+OBsuOBlQ0KK+OBleOBn+OBkSzjgZHjgpPjgYTjgaENCivjgoLjgabjgY0s44Gf44GR44GXDQor44Go44G/44GfLOOBteOBjQ0KK+OBq+OCjyzjgbXjgb/jgZMNCivjgZ/jgYvjgbDjgZ/jgZEs44GX44GS44Gu44KKDQor44GC44Ga44G+LOOBvuOBleOCiw0KK+OBteOCi+OChCzjgZXjgaHjgZMNCivjgarjgZks44KI44GX44Gy44KNDQor44GT44KKLOOBvuOCig0KK+OBhOOBkeOBoCzjgb7jgZXjgbLjgo0NCivjgZTjgajjgYYs44GT44GG44GYDQor44G144GP44GgLOOBsuOCjeOChuOBjQ0KK+OBmeOBjOOBr+OCiSzjgZjjgoXjgpPjgZgNCivjgY3jgoDjgoks44Go44GX44Gy44GTDQor44Gf44GL44GbLOOBvuOCig0KK+OBq+OBl+OBiuOBiyzjgorjgofjgYYNCivjgbXjgovjgYvjgo8s44Gm44Gk44GKDQor44GP44Gp44GGLOOBkeOCk+OBhOOBoQ0KK+OBn+OBi+OBr+OBlyzjgZHjgpPjgagNCivjgoTjgb7jgoLjgags44KI44GX44Gy44KNDQor44G/44KE44KC44GoLOOCiuOCh+OBhuOBuOOBhA0KK+OBruOBnyzjgobjgY3jgbLjgo0NCivjgarjgYvjgoDjgoks44GX44Gu44G2DQor44GC44GN44GwLOOBv+OChA0KK+OBhOOCj+OBjSzjgb7jgZPjgagNCivjgYvjgajjgYYs44GX44G7DQor44KC44KK44KC44GoLOOBvuOBleOBi+OBmg0KK+OBquOBi+OCgOOCiSzjgYvjgZrjgajjgZcNCivjgarjgYvjgoTjgb4s44GL44Ga44KEDQor44GK44GK44Gf44GrLOOBl+OBkuOBsuOCjQ0KK+OBmeOBjuOChOOBvizjgb/jga7jgosNCivjgZnjgpMs44Go44KI44KG44GNDQor44KE44G+44KC44GoLOOBsuOCjeOBlw0KK+OBu+OCk+OBqSzjgobjgZ/jgYsNCivjga/jgYws44GL44GP44GYDQor44GX44GK44GW44GNLOOBi+OBmuOBsuOBkw0KK+OBteOBmOOBrizjgb/jga7jgosNCivjgYrjga4s44GR44KT44GYDQor44GC44KT44Gp44GGLOOCiOOBl+OBig0KK+OChOOBvuOBkOOBoSzjgajjgZfjgYLjgY0NCivjgY/jgo3jgaAs44Gf44GL44GXDQor44GG44GuLOOCiuOCh+OBhuOBhOOBoQ0KK+OBhOOBqOOBhuOBn+OBqyzjgZ/jgZHjgbLjgZMNCivjgYrjgYss44GI44Gk44G/DQor44G/44GG44KJLOOBruOBtuOChuOBjQ0KK+OBr+OBl+OCguOBqCzjgYvjgaoNCivjgYjjgoLjgags44G+44GT44GoDQor44GT44GMLOOBsuOCjeOBlw0KK+OBjeOBr+OCiSzjgbLjgo3jgZcNCivjgb7jgaTjgaAs44G144G/44Gf44GgDQor44KE44G+44GgLOOBguOBjeOBkw0KK+OBn+OBi+OBr+OBlyzjgojjgYbjgYTjgaENCivjgoTjga/jgZ8s44Gy44Gn44GKDQor44Gf44GW44GNLOOBkeOBhOOBnw0KK+OChOOBvuOCguOBqCzjgorjgoXjgYbjgYTjgaENCivjgZ/jgYvjgaAs44Gy44KN44G/DQor44Gu44GgLOOBvuOBleOBpOOBkA0KK+OBleOBhOOBv+OCh+OBhizjgYvjgYrjgosNCivjgZPjgbDjgoTjgZcs44GC44KJ44GfDQor44G144GY44GNLOOBkeOCk+OBmA0KK+OBl+OCieOBleOBiyzjgbXjgb/jgYoNCivjgZ/jgYvjga/jgZcs44Go44GK44KLDQor44KE44GkLOOBguOBpOOBig0KK+OBhuOBiuOBn+OBqyzjgbXjgb/jgbLjgZMNCivjgZ/jgoDjgoks44Go44GX44Gy44GTDQor44G+44Gk44GKLOOBleOBqOOBlw0KK+OBquOBi+OBluOCjyzjgZ/jgY/jgoQNCivjgY3jgaAs44KG44GN44GTDQor44Gf44KT44GSLOOBpuOBpOOCjeOBhg0KK+OBsuOCjeOBmyzjgZnjgZnjgoANCivjgb7jgaTjgZfjgb4s44G/44Gh44KEDQor44GK44GL44GuLOOBleOBqOOCiw0KK+OBguOBiuOBjSzjgojjgYbjgYTjgaHjgo3jgYYNCivjga/jgZvjgYzjgo8s44KK44KF44GG44GYDQor44Gr44GX44G744KKLOOBoeOBi+OCiQ0KK+OBhOOBl+OBmuOBiyzjgZ/jgYvjgoQNCivjgaTjgbzjgYQs44Gy44Gn44KG44GNDQor44GE44GX44GgLOOBvuOBleOCiw0KK+OBr+OBl+OCguOBqCzjgZXjgajjgosNCivjgZTjgajjgYYs44GX44KT44GYDQor44GC44GN44KE44G+LOOBsuOCjeOBjQ0KK+OBv+OBpOOBr+OBlyzjgZfjgZLjgosNCivjgZTjgZfjgb4s44GL44Ga44GKDQor44G144GP44GgLOOBsuOCjeOBlw0KK+OChOOBvuOBl+OBnyzjgarjgYrjgbXjgb8NCivjgarjgYvjgZbjgo8s44Gy44GV44GXDQor44Gr44GX44GL44KPLOOBsuOBqOOBlw0KK+OBhOOBkeOBhuOBoSzjgYvjgZrjgobjgY0NCivjgZ/jgYzjgb8s44Gf44GL44GKDQor44GL44KP44GN44GfLOOBkeOCk+OBmOOCjeOBhg0KK+OBquOBi+OCgOOCiSzjgYzjgY8NCivjgZPjgb7jgYQs44GT44GZ44GRDQor44G744GX44KELOOBguOChuOCgA0KK+OBmeOBv+OBqCzjgb7jgZXjgbXjgb8NCivjgbvjgZfjga4s44GL44Ga44GKDQor44Gq44GL44KELOOBl+OCk+OBhOOBoQ0KK+OBr+OCiSzjgb/jgZrjgbsNCivjgoDjgo3jgoTjgb4s44GL44Ga44Gy44GTDQor44KC44KKLOOBsuOBp+OBjQ0KK+OBl+OCieOBhOOBlyzjgb7jgZXjgbLjgo0NCivjgbLjgonjga4s44GT44GG44GYDQor44Gv44GX44KC44GoLOOChuOBhuOBkw0KK+OBguOBuSzjgZjjgoXjgpPjgZgNCivjgYTjgZfjgYvjgo8s44GC44KK44GL44GkDQor44GC44Ga44G+LOOCiOOBl+OBvw0KK+OBiuOBiuOBpOOBiyzjga7jgbbjgYoNCivjgYTjgajjgYYs44GR44GEDQor44GK44GX44G+LOOBoeOBi+OBig0KK+OBk+OBluOBhCzjgY3jgojjgbLjgo0NCivjgYvjgo/jgYvjgb8s44G+44GV44Go44GXDQor44Gq44GL44GuLOOCgOOBreOBsuOBkw0KK+OBhuOBmOOCguOBqCzjgb7jgZXjgbLjgZMNCivjgY3jgZfjgaAs44Gy44Go44GXDQor44GT44GE44Ga44G/LOOBruOCiuOBkw0KK+OBquOBhOOBqOOBhizjgajjgZfjgbLjgo0NCivjgojjgZfjgZrjgb8s44KI44GX44GNDQor44GZ44GO44KC44KKLOOBqOOBl+OBsuOCjQ0KK+OBguOBiuOBjSzjgajjgoLjga/jgosNCivjgZ/jgYvjga/jgZcs44GT44GG44GE44GhDQor44GE44GMLOOBruOCiuOBi+OBrQ0KK+OBi+OCj+OBsOOBnyzjga7jgZ7jgb8NCivjgZfjgbDjgZ8s44Gy44KN44Gy44GnDQor44Gg44KTLOOBvuOBquOBvw0KK+OBn+OBkOOBoSzjgYvjgZrjgbLjgo0NCivjgb7jgaHjgaAs44Go44KC44GKDQor44GC44GX44GgLOOChuOBhuOBkw0KK+OBguOCk+OBqeOBhizjgabjgYTjgZgNCivjgoDjgajjgYYs44GL44Gk44Gu44KKDQor44GT44KE44G+LOOBjeOCiOOBqA0KK+OBmeOBmuOBjSzjgZHjgYTjgYTjgaENCivjga7jgoDjgoks44GY44KF44KTDQor44GE44Go44KELOOBvuOBleOBqOOBlw0KK+OBoeOBi+OBiuOBiyzjgaTjgajjgoANCivjgZjjgpPjgbYs44G/44Gh44KE44GZDQor44GC44Gg44GhLOOBvuOBleOBlw0KK+OBi+OCj+OBhCzjgoTjgZnjgZcNCivjgb/jga7jgo8s44GT44GG44GE44GhDQor44GC44GV44GyLOOBqOOBl+OBguOBjQ0KK+OBiuOBiuOBnyzjgojjgZfjgYLjgY0NCivjgZ/jgarjgYss44GN44KI44GXDQor44GN44KJLOOBvuOBleOBlw0KK+OChOOBvuOBluOBjSzjgb/jgYsNCivjgoTjgb7jgYbjgaEs44G/44Gk44KLDQor44G744Gj44GfLOOCiOOBl+OBruOCig0KK+OBguOCieOBi+OCjyzjgZfjgZLjgYoNCivjgYrjgY/jgoDjgoks44GY44KF44KTDQor44GL44Gt44GTLOOBhOOBn+OCiw0KK+OBguOChOOBrizjgZPjgYbjgY0NCivjga/jgoTjgYvjgo8s44Go44KC44Gq44KKDQor44GE44Go44GGLOOBvuOBleOBsuOBkw0KK+OBiuOBj+OCgOOCiSzjgbLjgZXjga7jgooNCivjgZ/jgpPjgZbjgo8s44Gf44Gk44GKDQor44GV44GN44GuLOOCiOOBl+OBsuOCjQ0KK+OBi+OCj+OBr+OCiSzjgajjgYrjgosNCivjgZ/jgovjgYQs44KI44GX44GKDQor44GC44KK44KC44GoLOOBguOBpOOBlw0KK+OBiOOBs+OBkyzjgajjgoLjgarjgooNCivjgbLjga4s44GL44Gk44KEDQor44KE44G+44GgLOOBl+OCh+OBhuOCiOOBhg0KK+OBiuOBiuOBrizjgY/jgb8NCivjgZ/jgZHjgZfjgZ8s44KG44KK44GTDQor44Gv44KE44GXLOOBjeOCh+OBhuOBkw0KK+OBhOOBl+OBoCzjgZHjgpMNCivjgZfjgYrjgoQs44Gf44GR44GXDQor44GC44KT44Gp44GGLOOBruOBvOOCiw0KK+OBvuOBpOOBsOOCiSzjgb7jgZXjgbXjgb8NCivjgavjgZfjgaAs44G+44GV44KLDQor44Gq44GL44KA44KJLOOBvuOBleOBruOCig0KK+OBhOOBkeOBoCzjgZjjgoXjgpMNCivjga/jgoTjgb8s44Gy44Gn44GKDQor44GZ44Ga44GNLOOBl+OCh+OBhuOBnuOBhg0KK+OBiuOBjOOCjyzjgYLjgY3jgokNCivjgYTjgZfjgYvjgo8s44Go44GX44GC44GNDQor44GC44GV44G/LOOBkeOCk+OBmA0KK+OBr+OBn+OBkeOChOOBvizjgZ/jgYvjgZcNCivjgbvjgorjgb/jgZ4s44GR44GE44GZ44GRDQor44G+44KL44Gf44GrLOOBoeOBsuOCjQ0KK+OBleOBqOOBhizjgYLjgY3jgYoNCivjgZXjgYvjgarjgYss44GL44Ga44GKDQor44Gq44GL44KA44KJLOOBqOOCguOBsuOBkw0KK+OBhOOBqOOBhizjgYvjgYrjgosNCivjgbXjgovjgarjgYws44Gv44KL44Gy44GTDQor44G144GP44GX44G+LOOBvuOBleOBqA0KK+OBv+OBmuOBjOOBvyzjgojjgZfjgobjgY0NCivjgZ/jgZHjgYbjgaEs44G/44Gh44GKDQor44Go44KK44GG44G/LOOBv+OBruOCiw0KK+OBreOBjuOBlyzjgZfjgZLjgY0NCivjgZPjgoTjgb4s44GC44GN44Gu44KKDQor44GK44GX44G+LOOBquOBmeOBig0KK+OBi+OBn+OBiuOBiyzjgZ/jgYvjgZcNCivjgZ/jgY3jgZDjgaEs44Gy44Gn44G144G/DQor44GT44G+44GkLOOBi+OBmuOBig0KK+OChOOBjizjgZ/jgYvjgZcNCivjgZ/jgYvjgY4s44KI44GX44GKDQor44G+44GZ44GELOOBpuOBpOOCjeOBhg0KK+OBr+OChOOBlyzjgbLjgajjgZcNCivjgYLjga3jgZ/jgYQs44G+44GV44KG44GNDQor44GN44Gv44KJLOOBkeOCk+OBhOOBoQ0KK+OBleOBhOOBqOOBhizjgZfjgZLjgYoNCivjgY3jgZ/jgo/jgY0s44G/44Gh44Gy44GTDQor44Gu44GQ44GhLOOBsuOCjeOBv+OBoQ0KK+OBleOBi+OBkOOBoSzjgoLjgajjgYQNCivjgavjgZcs44KG44GN44G/44GkDQor44GE44GR44GgLOOBpuOBpOOBig0KK+OBleOBqOOBhizjgZ/jgYvjgZcNCivjgYTjgb7jgYQs44G+44GV44Gy44GoDQor44KE44G+44GgLOOBl+OBkuOBhOOBjw0KK+OBn+OBquOBiyzjgoTjgZnjgbLjgZUNCivjgYrjgYrjgZXjgZMs44G+44GT44GoDQor44GT44KA44KNLOOBi+OBquOCgQ0KK+OBleOBhOOBqOOBhizjgbLjgafjgY0NCivjgZnjgZrjgY0s44GR44KT44GE44GhDQor44G144Gq44Go44GM44KPLOOChuOBi+OCig0KK+OBhOOBl+OBhCzjgabjgovjgYLjgY0NCivjgb7jgaTjgYQs44Gu44G844KLDQor44GZ44GI44Gy44KJLOOBsuOBqOOBlw0KK+OBsuOCjeOBn+OBqyzjgojjgZfjgYoNCivjgbLjgYzjgZcs44GN44KI44GXDQor44GE44KA44KJLOOBguOBpOOBkw0KK+OBguOBuSzjgoTjgZnjga7jgooNCivjgojjga3jgY/jgoks44Gu44G244Go44GXDQor44KP44Gf44Gq44G5LOOCiOOBl+OBv+OBpA0KK+OBmeOBjCzjgbLjgo3jgZcNCivjgZXjga4s44Gy44KN44GXDQor44GX44GwLOOBqOOCguOBmA0KK+OChOOBvuOBkOOBoSzjgZfjgoXjgpPjgZgNCivjgY3jgZbjgo8s44KI44GX44Gy44KNDQor44GL44GV44G+44GNLOOCiOOBl+OCjeOBhg0KK+OBjeOCgOOCiSzjgZHjgYTjgZnjgZENCivjgaTjgovjgb8s44GC44GN44Gy44GVDQor44GC44GK44GNLOOBl+OCh+OBhuOBkw0KK+OBhOOBl+OBoCzjgoLjgajjgZcNCivjgoLjgo0s44GC44GN44GKDQor44GK44GP44KA44KJLOOBsuOCjeOChuOBjQ0KK+OBn+OBi+OBjizjgZPjgYbjgZgNCivjgYTjgZHjgoQs44G/44Gh44GKDQor44Go44G/44KE44G+LOOBi+OBmuOBv+OBpA0KK+OChOOBjizjgZ/jgYvjgYoNCivjgajjgb/jgY0s44Gm44Gk44KN44GGDQor44Go44Gu44KA44KJLOOBv+OBruOCiw0KK+OChOOBpOOBmuOBiyzjgajjgZfjgbLjgo0NCivjgbbjgb4s44GR44KT44GX44KH44GGDQor44Gq44GL44GW44KPLOOBteOBv+OBqOOCgg0KK+OChOOBvuOBluOBjSzjgojjgYbjgZMNCivjgb7jgaTjgZfjgZ8s44GX44Gu44G2DQor44GE44GgLOOBl+OCkw0KK+OBmeOBmuOBjSzjgojjgZfjgbLjgo0NCivjgarjgYvjga4s44KE44GZ44Gy44KNDQor44GL44KP44GQ44GhLOOBvuOBleOBig0KK+OBn+OBi+OBr+OBlyzjgaTjgajjgoANCivjgYTjgZfjgaAs44GX44KH44GG44GE44Gh44KN44GGDQor44GG44GgLOOBleOBqOOCiw0KK+OBteOBmOOCj+OCiSzjgorjgoXjgYbjgZgNCivjgZPjgYTjgacs44Go44GX44Gf44GRDQor44Gk44GL44GgLOOBuOOBhOOBr+OBoQ0KK+OBsuOCieOChOOBvizjgbLjgo3jgZcNCivjgYbjgaHjgajjgb8s44GC44GN44KJDQor44GE44G+44Gv44KJLOOBsuOCjeOCiOOBlw0KK+OBhuOBiOOBoCzjgbLjgajjgZcNCivjgZXjgZXjgYvjgo8s44KI44GX44Gy44KNDQor44GC44GE44GL44KPLOOBn+OBi+OBguOBjQ0KK+OBhuOBiOOBjSzjgZ/jgYvjgojjgZcNCivjgarjgYvjgoTjgb4s44KI44GX44G/DQor44GK44GK44GV44KPLOOCiOOBl+OBi+OBmg0KK+OBn+OBi+OBiuOBiyzjgajjgZfjgobjgY0NCivjgo/jgaAs44Gk44GO44GKDQor44GE44Gs44Ga44GLLOOBj+OBq+OBsuOBlQ0KK+OBn+OBquOBiyzjgZPjgYbjgY3jgaENCivjgZ/jgZHjgaAs44GN44KI44Gf44GLDQor44KE44G+44GgLOOBruOBvOOCiw0KK+OChOOBquOBjizjgbLjgafjgbLjgo0NCivjgZ/jgZHjgZfjgZ8s44KI44GX44Gf44GRDQor44Gr44GXLOOBn+OBpOOBsuOBkw0KK+OBiuOBiuOBn+OBkSzjgobjgYbjgYTjgaENCivjgavjgZ/jgarjgYQs44GX44GS44GKDQor44G744KT44G+LOOBruOBtuOBsuOBkw0KK+OBquOBi+OBrizjgojjgZfjga7jgooNCivjgb/jgoTjgZfjgZ8s44Gy44Gn44GNDQor44GG44GI44GuLOOBmOOCheOCk+OBmOOCjeOBhg0KK+OBsOOBsCzjgZXjgaDjgoANCivjgb/jgoTjgZbjgY0s44G+44GV44GKDQor44GP44Gr44GELOOBpOOBqOOCgA0KK+OBk+OBsOOChOOBlyzjgZHjgYTjgZgNCivjgb7jgZnjgaAs44Gy44KN44GXDQor44Gf44GL44Gv44GXLOOBk+OBhuOBmA0KK+OBpOOBi+OBiizjgbLjgo3jgY0NCivjgYvjgo/jgoDjgoks44Gf44GL44KG44GNDQor44GL44KP44Gw44GfLOOBk+OBhuOBnuOBhg0KK+OBguOBi+OBleOBiyzjgZjjgoXjgpPjgZMNCivjgYTjgYTjgaAs44Gm44Gk44KEDQor44GX44KJ44Gv44G+LOOBn+OBoOOBlw0KK+OBqOOBjOOCjyzjgbLjgo3jgobjgY0NCivjgYTjgajjgYYs44Gy44Gn44GE44GhDQor44GK44GL44G5LOOBvuOBleOBlw0KK+OCj+OBn+OBquOBuSzjgbLjgo3jgYoNCivjgZXjgYvjgbAs44Go44GX44Gy44KNDQor44Gy44KN44GV44KPLOOBsuOBqOOBlw0KK+OBquOBi+OCgOOCiSzjgZfjgZLjgosNCivjgoTjgZnjgYQs44GV44Go44GXDQor44Gy44KJ44GfLOOBi+OBmuOBsuOBlQ0KK+OBjeOBn+OBjOOCjyzjgZfjgpPjgYTjgaENCivjgYLjgb7jga4s44Gm44Gk44KEDQor44Gk44GY44KA44KJLOOBiOOBpOOCjeOBhg0KK+OBi+OCj+OBleOBjSzjgZPjgYbjgYTjgaENCivjgYbjgYjjgoDjgoks44Gf44GR44GXDQor44KA44KJ44GL44G/LOOBl+OBkuOBqg0KK+OBhOOBruOBhuOBiCzjgY3jgojjgZcNCivjga/jgZws44GR44KTDQor44Go44GX44Gy44KNLOOBjeOBv+OBsuOCjQ0KK+OBk+OBsOOChOOBlyzjgZfjgZLjgobjgY0NCivjgYTjga4s44Gf44Gg44Gu44KKDQor44GC44GV44GuLOOChuOBhuOBhOOBoQ0KK+OCguOCiizjgZPjgYbjgZgNCivjgYTjgarjgZbjgo8s44GT44GG44KI44GGDQor44GT44Gw44KE44GXLOOBpuOCi+OBsuOCjQ0KK+OBleOBi+OBjSzjgojjgZfjgbLjgZMNCivjgYbjgaHjgoTjgb4s44Gb44GE44GYDQor44G+44Gq44G5LOOChOOBmeOBjQ0KK+OBiuOBiuOChOOBvizjgZHjgpPjgZgNCivjgZfjgb/jgZos44G+44GV44Gy44GTDQor44KI44Gt44KA44KJLOOBsuOCjeOChuOBjQ0KK+OBsOOCieOBoCzjgYLjgY3jgbLjgZMNCivjgbXjgovjgZ7jga4s44KI44GX44GL44GaDQor44G144GY44KC44GoLOOBi+OBmuOBguOBjQ0KK+OBleOBrizjgb7jgoLjgosNCivjgYvjgo/jga4s44GI44GE44GTDQor44G744GX44GL44KPLOOBk+OBhuOBmA0KK+OBleOBleOCguOBqCzjgoLjgajjgaTjgZANCivjgZnjganjgYYs44G+44GV44GoDQor44GV44Go44GGLOOBn+OBi+OBig0KK+OBr+OChOOBlyzjgbLjgo3jgZcNCivjgbDjgbAs44Gy44Gn44Gu44KKDQor44Gw44GwLOOBsuOBqOOBlw0KK+OBiuOBiuOChOOBrSzjgbLjgafjgYoNCivjgarjgYzjgZXjgo8s44KE44GZ44KG44GNDQor44GV44GL44KC44GoLOOBvuOBleOBr+OCiw0KK+OBguOBiuOBjSzjgZvjgYTjgZgNCivjgoDjgarjgYvjgZ8s44G+44GV44Gv44KLDQor44GE44Go44GGLOOBl+OCk+OBhOOBoQ0KK+OBi+OCj+OBsOOBnyzjgbLjgo3jgobjgY0NCivjgZnjgY7jgoLjgags44G/44Gh44GKDQor44Gw44KT44Gp44GGLOOBmOOCheOCkw0KK+OBruOCgOOCiSzjgYLjgY3jgbLjgZMNCivjgZPjgpPjga4s44KI44GX44G/44GhDQor44GL44KP44GELOOBi+OBmuOBruOCig0KK+OBhuOBiOOBrizjga7jgbbjgobjgY0NCivjga/jgonjgaAs44Gy44KN44GXDQor44GL44Gu44GGLOOBguOBjeOCiQ0KK+OBiuOBiuOBr+OBnyzjgb/jgY3jgYoNCivjgZnjganjgYYs44Gf44GL44GXDQor44G+44Gk44GgLOOBsuOBqOOBlw0KK+OBhOOBkeOBjOOBvyzjgb7jgZPjgagNCivjgZfjgonjgYQs44GR44KT44GX44KTDQor44GV44Go44GGLOOBn+OBi+OBguOBjQ0KK+OBleOBi+OBhCzjgZ/jgZHjgZcNCivjgYrjgY0s44Go44GX44KG44GNDQor44GL44KP44KA44KJLOOBkeOCk+OBmA0KK+OChOOBvuOBoCzjgbLjgo3jgYoNCivjgYTjgajjgYYs44GC44GN44Gy44GVDQor44GE44GL44G/LOOBr+OCi+OBig0KK+OBguOBmuOBvuOBiizjgbLjgafjgagNCivjgbXjgZjjgoDjgoks44Go44GK44KLDQor44GN44Gf44KA44KJLOOChuOBhuOBmA0KK+OBqOOBjOOBvyzjgajjgZfjgb8NCivjgZPjgZnjgZIs44G+44GV44GKDQor44Gb44GNLOOBsuOCjeOChuOBjQ0KK+OBi+OCj+OBl+OBvizjgajjgoLjgobjgY0NCivjgZ/jgYvjgYQs44KG44GG44GUDQor44GC44GN44KE44G+LOOChuOBjeOBig0KK+OBmeOBmuOBjSzjgajjgZfjgbXjgb8NCivjgarjgYvjgoDjgoks44GX44KF44GG44GE44GhDQor44Gr44GX44GuLOOBn+OBi+OChuOBjQ0KK+OBv+OChOOBkSzjgZ/jgYvjgbLjgo0NCivjgojjga3jgoLjgaEs44KC44Go44GYDQor44Gf44GL44GX44G+LOOBl+OBkuOBig0KK+OBleOBi+OBhCzjgajjgZfjga7jgooNCivjgYrjgYrjgaTjgY0s44GC44GN44Go44GXDQor44GL44KP44GV44GNLOOBv+OBjQ0KK+OBq+OBl+OBi+OCjyzjgZ/jgY3jgYoNCivjgZXjgY/jgonjgYQs44GR44KT44GYDQor44GZ44GOLOOBsuOBp+OBguOBjQ0KK+OBu+OCiuOBk+OBlyzjgajjgYrjgosNCivjgoLjgoos44GL44Gk44KEDQor44Gv44GR44GgLOOBn+OBi+OBlw0KK+OBq+OBhOOBoCzjgZfjgpPjgYTjgaENCivjgY3jgY/jgZ/jgass44GV44Go44GXDQor44Gf44GR44Gu44GX44GfLOOBl+OCheOBhuOBuOOBhA0KK+OBn+OBi+OBr+OBlyzjgbLjgo3jgb8NCivjgZ/jgarjgbks44G+44GV44GTDQor44GE44GR44KC44GoLOOBruOCiuOBkw0KK+OBvuOBpOOChOOBvizjgobjgY3jgZMNCivjgojjgZfjgZbjgo8s44KI44GX44Gy44GVDQor44GC44GL44GELOOBv+OBruOCiw0KK+OBq+OBl+OBiuOBiyzjgZvjgYTjgYTjgaHjgo3jgYYNCivjgZ/jgZHjgoLjgags44Gu44G244GKDQor44Go44GP44GgLOOCiOOBl+OBig0KK+OBiuOBiuOCguOCiizjgoTjgZnjgbLjgo0NCivjgYvjgajjgYYs44Gf44Gk44GXDQor44GL44KP44GoLOOBteOBv+OBig0KK+OBvuOBiOOBoCzjgZ3jgYbjgYTjgaENCivjgY/jgo3jgY0s44G+44GV44KI44GXDQor44GE44GE44GgLOOBj+OBv+OBkw0KK+OBk+OChOOBquOBjizjga/jgZjjgoENCivjgb7jgaTjgarjgYws44GC44Gk44GXDQor44GE44Go44GGLOOChOOBmeOBguOBjQ0KK+OChOOBvuOCguOBqCzjgZ/jgaTjgYoNCivjgaTjgaTjgYQs44Go44GX44GC44GNDQor44Gf44Gq44GLLOOBv+OBruOCiw0KK+OBteOBj+OBl+OBvizjgZfjgoXjgpPjgYTjgaENCivjgZPjgZjjgb4s44KI44GX44Gy44GTDQor44Gr44GX44GgLOOBv+OBpOOBkA0KK+OBq+OBl+OChOOBvizjgZjjgoXjgpPjgZMNCivjgZnjgZrjgY0s44Gg44GE44GZ44GRDQor44GE44GE44GY44G+LOOBn+OBi+OBlw0KK+OBn+OBvuOBhCzjgZnjgZnjgoANCivjgZPjgpPjga4s44GK44GV44KADQor44G/44G+44GZLOOBqOOBl+OBv+OBpA0KK+OCiOOBreOBr+OCiSzjgZvjgYTjgYTjgaENCivjgojjgZfjgaAs44GL44Ga44G/DQor44G144GP44GgLOOBsuOCjeOBlw0KK+OBleOBqOOBhizjgbLjgo3jgYLjgY0NCivjgoTjgb7jgoLjgags44Gy44KN44GXDQor44GN44Gf44GULOOBruOBvOOCiw0KK+OBleOCk+OBrizjgajjgoLjgajjgZcNCivjgoTjgZXjgYss44Go44GX44GKDQor44KA44KJ44GfLOOBl+OBkuOBvw0KK+OBquOBi+OCguOBqCzjgYLjgY3jgZcNCivjgZXjgY/jgonjgYQs44GL44Ga44GX44GSDQor44Gv44KJ44GgLOOCiOOBl+OCguOBqA0KK+OBleOBqOOBhizjgYLjgaTjgYoNCivjgZXjgYTjgajjgYYs44G/44Gk44GKDQor44Gd44GtLOOBkeOBhOOBkw0KK+OBr+OBmeOBvyzjgYLjgY3jgbLjgo0NCivjgbLjgonjgZ8s44GL44Ga44Gy44KNDQor44KE44Gq44GO44GV44KPLOOBruOBtuOBig0KK+OBn+OBoeOBsOOBqizjgojjgYbjgZMNCivjgYTjgajjgYYs44G+44GV44Ga44G/DQor44Gv44KJLOOBguOBjeOCiQ0KK+OBleOBhOOBqOOBhizjgajjgZfjgbLjgo0NCivjgYTjgajjgYYs44GT44GG44GE44GhDQor44Gf44Gq44GLLOOBi+OBmuOChA0KK+OBhuOBoeOChOOBvizjgZfjgZLjgojjgZcNCivjgYvjgYzjgo8s44GR44GE44GE44GhDQor44Gf44GN44GW44KPLOOChuOBhuOBmOOCkw0KK+OBl+OBquOBjOOCjyzjgY/jgavjgbLjgZMNCivjgYvjgY3jga/jgoks44GX44KN44GGDQor44GZ44GM44Gs44G+LOOBmOOCheOCk+OBhOOBoQ0KK+OBi+OCgeOBhCzjgajjgZfjgoQNCivjgYrjgY/jgaQs44GL44Ga44Go44GXDQor44GE44GX44GL44KPLOOBl+OCh+OBhuOBl+OCheOCkw0KK+OBmeOBjuOBhuOCiSzjgoLjgorjgYoNCivjgYbjgoHjgaAs44Gy44GV44GXDQor44G/44Gq44GQ44GhLOOBhOOBoeOCjeOBhg0KK+OBu+OBl+OBrizjgZ/jgZHjgbLjgZMNCivjgavjgZfjgoTjgb4s44Gb44GE44GYDQor44Gf44GR44GgLOOBn+OBpOOChA0KK+OBleOBi+OBhCzjgY3jgYTjgaHjgo3jgYYNCivjgoTjgaTjgaAs44Gf44GR44GXDQor44KC44KK44GfLOOBkeOBhOOBnuOBhg0KK+OBleOBjeOBvizjgarjgYrjgbLjgo0NCivjgYLjgonjgYQs44KG44Gf44GLDQor44Gf44GR44GgLOOBn+OBi+OBkw0KK+OBn+OCgOOCiSzjgojjgZfjgZMNCivjgYrjgYvjgaAs44Gv44KL44G/DQor44KE44G+44GtLOOBoeOBr+OCiw0KK+OBquOBi+OCgOOCiSzjgobjgYbjgYTjgaENCivjgYLjgYrjga4s44Gf44Gk44GKDQor44GZ44GO44KE44G+LOOBi+OBreOCiOOBlw0KK+OBteOCiuOBr+OCiSzjgYvjgZrjgYoNCivjgo/jgZ/jgarjgbks44Gu44G244GoDQor44GL44GkLOOBpOOBi+OBlQ0KK+OBleOBr+OCiSzjgbLjgo3jgb8NCivjgYvjgY/jgZ8s44GC44GN44Gy44GTDQor44GI44Gu44KC44GoLOOBn+OBi+OBlw0KK+OCj+OBn+OBquOBuSzjgb7jgZPjgagNCivjgoTjgbbjgY0s44G+44GV44Gy44KNDQor44GC44G+44GV44GNLOOBk+OBhuOBhOOBoQ0KK+OCiOOBk+OBnyzjgb7jgZXjgbLjgacNCivjgbvjgorjga7jgYbjgaEs44Go44GX44GC44GNDQor44GN44Gv44KJLOOBpOOBreOBig0KK+OBn+OBkeOBoCzjgaTjgovjgb7jgaQNCivjgYTjga3jgaos44G+44GV44Gy44GTDQor44Gq44GLLOOBi+OBmuOBsuOCjQ0KK+OBhOOBoeOChOOBquOBjizjgZ/jgaDjgZcNCivjgZnjgZrjgY0s44GX44KH44GG44GR44GEDQor44Gq44KL44GX44G+LOOBquOBiuOBjeOBoQ0KK+OBl+OCieOBhOOBlyzjgZ/jgYvjgZcNCivjgYrjga4s44Go44GK44KLDQor44KI44GX44GK44GLLOOBi+OBmuOChA0KK+OBvuOBpOOBhuOCiSzjgbLjgo3jgYvjgZoNCivjgbXjgZjjgZ8s44Gm44Gk44GYDQor44GE44KP44G/LOOBqOOCiOOBr+OCiw0KK+OBqOOBj+OBl+OBkizjgZHjgYTjgZgNCivjgZ/jgarjgaAs44GN44G/44Gy44GTDQor44GK44GL44GuLOOBi+OBmuOBvuOBlQ0KK+OCguOBoeOBmuOBjSzjgZ/jgYvjgobjgY0NCivjgZ/jgYvjgZfjgb4s44GT44GG44GE44GhDQor44Go44KK44GG44G/LOOBi+OBmuOBig0KK+OBn+OBi+OBvyzjgojjgZfjgZ/jgYsNCivjga/jgoTjgZss44Go44KC44KG44GNDQor44Gf44GL44Gv44KJLOOBiOOBhOOBmA0KK+OBjeOCkyzjgb7jgZXjgobjgY0NCivjgZnjgY7jgoTjgb4s44Gy44Gn44Gy44KNDQor44GN44Gf44GY44G+LOOBk+OBhuOBmA0KK+OBq+OBo+OBnyzjgojjgZfjga7jgbYNCivjgYrjgYss44KG44GN44Gu44G2DQor44GK44GK44Gv44GXLOOBsuOCjeOBlw0KK+OBr+OCieOBoCzjgY3jga/jgaHjgo3jgYYNCivjgo/jgY3jgZXjgYss44Gy44KN44GXDQor44GE44KP44Gq44GMLOOBkeOBhOOBhOOBoQ0KK+OBi+OCj+OBl+OCiizjgb/jgaTjgYoNCivjgYTjgarjgoLjgags44G+44GV44GL44GaDQor44GV44KPLOOBsuOCjeOChuOBjQ0KK+OBn+OBkeOBoCzjgZ/jgZHjgbLjgZMNCivjgYTjgYTjgaAs44KI44GX44Gy44GoDQor44GL44GY44GuLOOBvuOCguOCiw0KK+OBv+OCjyzjga/jgovjgYvjgZoNCivjgbXjgY/jgYQs44GR44GE44GE44GhDQor44GZ44GI44Gq44GMLOOBqOOBiuOCiw0KK+OBj+OBq+OBiOOBoCzjgobjgZ/jgYsNCivjgY3jgZ/jgYrjgYss44GL44Ga44Gy44GTDQor44GE44GpLOOBqOOBiuOCiw0KK+OBiuOBj+OBoCzjgorjgofjgYbjgZnjgZENCivjgbvjgorjgYvjgo8s44GL44Gk44GNDQor44GZ44GI44KC44GoLOOBpuOBpOOChA0KK+OCiOOBk+OChOOBvizjgajjgZfjgbLjgo0NCivjgbXjgZjjgoLjgags44Go44G/44GKDQor44GN44GbLOOBl+OCh+OBhuOBmA0KK+OBq+OBl+OCgOOCiSzjgbLjgafjgbLjgZMNCivjgZ/jgYvjgaAs44GT44GG44GYDQor44Gk44GL44GgLOOBvuOBleOBi+OBmg0KK+OBqOOCiOOBoCzjgYjjgYTjgZgNCivjgZXjga4s44Go44GK44KLDQor44Gr44GX44GgLOOBvuOBleOBsuOBkw0KK+OBiuOBiuOCguOCiizjgYTjgaHjgo3jgYYNCivjgYrjgZbjgY0s44Go44GK44KLDQor44GE44GX44G+44KLLOOBl+OBkuOChOOBmQ0KK+OBn+OBquOBiyzjgZPjgYbjgYTjgaENCivjgYvjgZfjgo/jgbDjgoks44Gu44G844KLDQor44GC44GV44GuLOOChOOBmeOBi+OBmg0KK+OBsuOCieOBrizjgZfjgpPjgZgNCivjgZ/jgavjgoTjgb4s44Gm44Gk44KN44GGDQor44GG44KB44Gw44KE44GXLOOBkeOCk+OBmA0KK+OBiuOCgOOCiSzjgbLjgafjgYoNCivjgZXjgYvjgZDjgaEs44GN44KI44GL44GaDQor44GK44GL44KA44KJLOOBl+OCh+OBhuOBlA0KK+OChOOBvuOCguOBqCzjgYLjgY3jgokNCivjgYjjgaHjgZQs44GT44KM44GC44GNDQor44GV44KP44GgLOOChOOBmeOBsuOBkw0KK+OCiOOBk+OBhCzjgYvjgZrjgobjgY0NCivjgY3jgZ/jgoDjgoks44KK44GLDQor44KE44GZLOOBi+OBiuOCiw0KK+OBn+OBi+OBiizjgZjjgoXjgpPjgZMNCivjgYvjgaTjgonjgYrjgYss44GX44KT44Ge44GGDQor44Gk44G844GELOOBvuOBleOBsuOBkw0KK+OBpOOBmCzjgZfjgZLjgYoNCivjgZ/jgYvjga/jgZcs44GC44GN44GKDQor44GZ44GO44GNLOOBn+OBi+OBjQ0KK+OBn+OBkeOBhuOBoSzjgZ/jgYvjgbLjgo0NCivjgYvjgb8s44Go44GX44GL44GaDQor44GT44Gw44KE44GL44KPLOOChOOBmeOBsuOBkw0KK+OBguOBiuOBqCzjgZjjgaTjgZgNCivjgZ/jgaAs44KI44KK44GTDQor44Gy44Gg44GLLOOBruOCiuOBkw0KK+OBq+OBl+OCgOOCiSzjgaHjgYjjgZMNCivjgYjjgbDjgoks44Gk44Gt44GKDQor44G/44Ga44KC44GoLOOBi+OBmuOChA0KK+OBmeOBmuOBjSzjgY3jgojjgZcNCivjgZfjgYTjgaos44Gv44KL44KI44GXDQor44GX44GK44GfLOOBv+OBpOOBsuOBkw0KK+OBquOBi+OBr+OCiSzjgZPjgYbjgYTjgaENCivjgZTjgYbjgaAs44GN44KI44GXDQor44G144KL44GfLOOBvuOBleOBsuOBlQ0KK+OBvuOBmeOCguOBqCzjgZjjgoXjgpPjgYTjgaENCivjgarjgYvjgYzjgo8s44GN44GE44GhDQor44GE44GpLOOBn+OBi+OChuOBjQ0KK+OCiOOCiuOBteOBmCzjga7jgbzjgosNCivjgb7jgaTjgoLjgags44GC44GN44KJDQor44GV44GE44Go44GGLOOBj+OBq+OBguOBjQ0KK+OBquOBpOOBhCzjgbLjgafjgY0NCivjgYbjgYrjga4s44GL44GK44KKDQor44Gf44Gq44GULOOBkeOBhOOBkw0KK+OBn+OBvuOBjOOCjyzjga7jgorjgbLjgagNCivjgYrjgYss44Gf44GL44GXDQor44G144GP44GX44G+LOOBvuOBleOCiw0KK+OBiuOBi+OBoCzjgobjgYbjgZMNCivjgY3jga7jgZfjgZ8s44Gy44Gn44Gy44GTDQor44GX44G/44GaLOOBguOBjeOCiQ0KK+OBk+OBsOOChOOBlyzjgY3jgojjgZ/jgYsNCivjga7jgaAs44G+44GV44GXDQor44GL44Gu44GGLOOBpOOBkOOBsuOCjQ0KK+OBi+OBmOOBiuOBiyzjgYLjgY3jgbLjgagNCivjgYrjgYrjga4s44Gf44GL44GXDQor44GK44GK44Gv44GXLOOBvuOBleOChuOBjQ0KK+OBk+OBsOOChOOBlyzjgobjgYbjgYTjgaENCivjgZPjgYTjgZrjgb8s44GE44GP44GKDQor44Gf44Gq44GLLOOBsuOBqOOBlw0KK+OBteOBj+OBoCzjgajjgZfjgoQNCivjgarjgYvjgZbjgo8s44Gu44G844KLDQor44G744KK44GL44KPLOOBleOBqOOBlw0KK+OBhuOBoeOChOOBvizjgoLjgorjgbLjgo0NCivjgYTjgZrjgZ/jgass44GY44KF44KT44GE44GhDQor44Gf44GN44GELOOBqOOBl+OBkw0KK+OBn+OBi+OBmyzjga7jgbbjgaTjgZANCivjgb7jgZnjgZbjgY0s44Gf44GL44GXDQor44GC44KT44Gp44GGLOOBqOOBiuOCiw0KK+OBi+OBn+OBjuOCiizjgZfjgZLjgYTjgaHjgo3jgYYNCivjgoLjgorjgoTjgb4s44Go44GX44KEDQor44GV44Go44GGLOOBguOBjeOBsuOCjQ0KK+OBsuOCi+OBi+OCjyzjgZXjgajjgZcNCivjgYbjgYjjgaAs44G+44GV44GKDQor44Gq44GLLOOBqOOBl+OBn+OBiw0KK+OBv+OChOOBluOBjSzjgbLjgo3jgZcNCivjgYrjgYrjgY/jgbws44G+44GV44Gf44GLDQor44Gf44Gh44GL44KPLOOBvuOBk+OBqA0KK+OCj+OBn+OBquOBuSzjgb/jgaHjgarjgYoNCivjgYLjgZXjgYvjgo8s44Gb44GE44GYDQor44GL44KP44Gv44KJLOOBvuOBleOChA0KK+OBiuOBleOBoCzjga/jgZjjgoENCivjgZXjgYvjgYQs44Gv44KL44GKDQor44GP44KK44KE44G+LOOBleOBquOBiA0KK+OBleOBhOOBqOOBhizjgZPjgZrjgYgNCivjgZnjgY3jgYzjgoks44KI44GX44GTDQor44GC44GR44GyLOOBj+OBv+OBkw0KK+OBr+OChOOBlyzjgY3jgojjgb8NCivjgYvjgo/jgZ8s44Gq44GK44G/DQor44GX44G+44GM44GNLOOBv+OBleOBiA0KK+OBu+OCiizjgYvjgZrjgogNCivjga7jgoDjgoks44KI44GX44GTDQor44Go44KA44KJLOOBl+OCk+OBhOOBoQ0KK+OBj+OBvCzjgY3jgojjgZMNCivjgavjgZfjgoLjgags44Gu44KK44Gy44GoDQor44KI44GX44GgLOOBk+OBhuOBmA0KK+OBleOBjizjgZ/jgYvjgojjgZcNCivjgYvjgpPjga4s44GR44GE44GTDQor44KE44G244GuLOOBvuOBleOBjQ0KK+OChOOBmeOBquOBjCzjgbLjgo3jgobjgY0NCivjgbLjgYzjgZfjgYbjgYgs44Gy44KN44Gy44GoDQor44GT44GV44GNLOOBvuOBleOChuOBjQ0KK+OBquOBiyzjgajjgZfjgbLjgo0NCivjgYrjga4s44Go44GK44KLDQor44KA44KJ44GfLOOBk+OBhuOBnuOBhg0KK+OBl+OCh+OBhuOBmCzjgbLjgafjgYLjgY0NCivjgYvjgo/jgoLjgags44GC44GN44Gy44KNDQor44GI44GV44GNLOOBvuOBleOCiw0KK+OBiOOBhOOBqeOCgSzjgbLjgafjgYvjgZoNCivjgZnjgZrjgY0s44KG44Gf44GLDQor44KC44Go44KE44G+LOOChOOBmeOBi+OBmg0KK+OBr+OBvuOBoCzjgYLjgY3jgokNCivjgZPjgZfjgYvjgo8s44Go44GX44GKDQor44Gv44KE44GXLOOBvuOBleOBr+OCiw0KK+OChOOBvuOBluOBjSzjgobjgY3jgoQNCivjgb7jgaTjgoLjgags44KI44GX44G+44GVDQor44GK44GuLOOBl+OCk+OBhOOBoQ0KK+OBr+OBquOCjyzjgZ/jgaDjgZcNCivjga/jgZvjgYzjgo8s44GR44GE44GYDQor44G/44KE44GfLOOBvuOBleOBguOBjQ0KK+OBjeOBn+OBluOCjyzjgb7jgZXjgYvjgZoNCivjgYjjgpPjgaks44KE44GZ44Gy44GTDQor44Gq44GM44GV44GLLOOCiOOBl+OBguOBjQ0KK+OCiOOBl+OCguOBqCzjgbLjgo3jgb/jgaQNCivjgY/jgo3jgZXjgo8s44GR44KT44GV44GPDQor44G+44KL44KE44G+LOOCiOOBl+OBr+OCiw0KK+OBquOBi+OBq+OBlyzjgYvjgZrjgobjgY0NCivjgojjgZfjgaAs44GR44GE44GE44GhDQor44G144GP44GfLOOBsuOBp+OChA0KK+OBteOBmOOBleOCjyzjgYvjgaTjgbLjgZMNCivjgZXjgY/jgb4s44KI44GX44Gv44KLDQor44Gv44GX44KC44GoLOOBi+OBpOOBvw0KK+OCj+OBoCzjgb7jgZXjgYrjgb8NCivjgavjgZfjgZbjgY0s44Gu44G244GKDQor44G144GL44GM44KPLOOBiOOBpOOBkw0KK+OBguOBiuOChOOBvizjgb7jgZXjgYvjgZoNCivjgY3jgojjgZ/jgass44Gk44Go44KADQor44Go44KK44Gv44KJLOOBsuOCjeOChuOBjQ0KK+OBquOBjOOBrizjgZ/jgZHjgZcNCivjgYrjgYrjgYws44KG44Gf44GLDQor44GV44GL44GuLOOBn+OBi+OBlw0KK+OBv+OBpOOBr+OBlyzjgb7jgZXjgbLjgo0NCivjgYLjgorjgoLjgags44Gb44GE44GTDQor44KI44GX44G+44GkLOOBn+OBi+OBguOBjQ0KK+OBguOBiuOChOOBjizjgYLjgY3jgYoNCivjgoTjgb7jgaAs44G+44GV44Gy44GTDQor44KA44KJ44GfLOOChuOBv+OBkw0KK+OBhOOCiuOBiCzjgZfjgpPjgYTjgaENCivjgoTjgb7jgZbjgY0s44G+44GV44Gu44KKDQor44GI44Ge44GILOOBkeOBhOOBhOOBoQ0KK+OBleOBqOOBhizjgaTjgojjgZcNCivjgYrjgYrjgZ8s44GN44KI44GXDQor44GE44Gu44GGLOOCguOCiuOBsuOBqA0KK+OBi+OBqSzjgZ/jgaTjgoQNCivjgZXjgZXjgY0s44KI44GX44Gy44KNDQor44GL44GR44GyLOOCiOOBl+OBsuOCjQ0KK+OBpOOBoeOChCzjgYvjgZrjgoQNCivjgb7jgZXjgYrjgYss44GX44KH44GG44Ge44GGDQor44GZ44Ga44GNLOOChOOBmeOBig0KK+OBqOOBrSzjgajjgb/jgbLjgo0NCivjgYrjgYrjgo/jgaAs44Gu44KK44GC44GNDQor44GG44GI44GNLOOBvuOBleOBqA0KK+OBvuOBiOOBoCzjgYvjgZrjga7jgooNCivjgbXjgZjjgYrjgYss44KE44GZ44GTDQor44GG44KJ44G5LOOBquOBiuOBkw0KK+OBquOBi+OCgOOCiSzjgobjgYbjgYTjgaENCivjgYTjgZXjgYss44G+44GV44GC44GNDQor44Gr44GX44GV44GLLOOBruOBtuOBig0KK+OBhOOCj+OBlSzjgYjjgYTjgYTjgaENCivjgZ/jgY/jgZfjgb4s44KI44GX44GKDQor44Gk44GL44KC44GoLOOBteOBv+OBig0KK+OBleOBj+OBvizjgZ/jgZHjgbLjgZMNCivjgbLjgofjgYbjganjgYYs44Gy44KN44GXDQor44Gq44GL44KA44KJLOOBk+OBhuOBhOOBoeOCjeOBhg0KK+OBleOBleOBjSzjgb7jgZXjgYoNCivjgbXjgY/jgo/jgY0s44Go44GX44KEDQor44GK44GP44KA44KJLOOBvuOBleOCiOOBlw0KK+OBn+OBi+OBr+OBlyzjgajjgojjgbLjgZMNCivjgZfjgo3jgYQs44KE44GZ44GXDQor44GT44GL44G2LOOBn+OBoOOBig0KK+OBruOBkOOBoSzjgbLjgo3jgY0NCivjgZ/jgYvjgaQs44Gy44KN44GL44GaDQor44KI44Gt44GW44KPLOOBpuOBpOOChA0KK+OBleOBi+OBhOOBoCzjgoTjgZnjgbLjgo0NCivjgZPjgYTjgZrjgb8s44G/44Gk44KEDQor44G+44GI44GgLOOBi+OBpOOChuOBjQ0KK+OBvuOCk+OBoCzjgZ/jgaDjgZcNCivjgZPjgZDjgows44GE44Gh44KN44GGDQor44GC44GN44KC44GoLOOCiOOBl+OBqA0KK+OBn+OBkeOCgOOCiSzjgajjgoLjgYLjgY0NCivjgZnjgZrjgY0s44GT44GG44GYDQor44KE44G+44GG44GhLOOBmOOCheOCk+OBhOOBoQ0KK+OBleOBiOOBjSzjgobjgYbjgZgNCivjgo/jgYvjgbDjgoTjgZcs44Gu44G244KG44GNDQor44GC44GN44KC44GoLOOBvuOBleOBsuOBkw0KK+OCiOOBl+OBoCzjgbLjgo3jgYLjgY0NCivjgZXjgajjgYYs44Gk44Gt44GKDQor44GK44GX44G+LOOChOOBmeOBqOOBlw0KK+OBleOBleOBjSzjgb7jgZXjgbLjgacNCivjgYLjgonjgYQs44GC44GN44Gy44GnDQor44KP44Gf44Gq44G5LOOBpuOBpOOBmA0KK+OBhOOBkeOCguOBqCzjgobjgY3jgYoNCivjgY3jgY/jgYQs44GT44GG44GE44GhDQor44Gy44KJ44GfLOOBsuOCjeOBvw0KK+OBvuOBjeOBhuOBoSzjgZ/jgY/jgoQNCivjgZPjgZvjgY0s44GX44KN44GGDQor44Gr44GX44GL44KPLOOChOOBmeOBsuOCjQ0KK+OBhOOBjOOCieOBlyzjgbXjgb/jgYoNCivjgZ/jgarjgYss44Gf44Gg44Gk44GtDQor44G744KT44GgLOOBiOOBhOOBhOOBoQ0KK+OBr+OBo+OBnyzjgbLjgo3jgb8NCivjga/jgonjgaAs44Gy44GV44GL44GaDQor44KI44GX44GgLOOBiuOBleOCgA0KK+OCj+OBn+OBquOBuSzjgbLjgo3jgZcNCivjgZPjgYTjgZrjgb8s44KK44KH44GG44GE44GhDQor44GT44GZ44GgLOOBquOBiuOBsuOBlQ0KK+OBv+OChOOBkSzjgb7jgZXjgYLjgY0NCivjgbXjgZjjgoQs44Gf44GR44GXDQor44G+44GV44GNLOOBguOBjeOCiQ0KK+OBleOBj+OCieOBhCzjgbLjgafjgY0NCivjgavjgZfjgoTjgb4s44KI44GX44GKDQor44GL44KP44GbLOOBn+OBi+OBruOBtg0KK+OBiuOBi+OBluOCjyzjgZfjgpPjgoQNCivjgYLjgZXjgYss44Go44GX44KG44GNDQor44GK44GM44KPLOOBruOBtuOBguOBjQ0KK+OBquOBjOOBleOCjyzjga/jgZjjgoENCivjgY3jgZ/jgo/jgY0s44G+44GV44GKDQor44GX44G/44GaLOOBvuOBleOBruOCig0KK+OBk+OBsOOChOOBlyzjgb7jgZXjga/jgosNCivjgZ/jgaHjgbDjgaos44GX44GS44GTDQor44GE44G+44Gq44GLLOOBleOBqOOBvw0KK+OBhuOBl+OBvuOCiyzjgZHjgpMNCivjgYrjgYvjgoDjgoks44GR44KT44GE44GhDQor44KE44G+44GuLOOChuOBhuOBhOOBoQ0KK+OBjeOBn+OCgOOCiSzjgb/jgaHjgYvjgZoNCivjgZ/jgYvjgb7jgaQs44Gy44Gn44GNDQor44Go44GN44GL44KPLOOBi+OBmuOBsuOBpw0KK+OBhOOBkeOBoCzjgajjgZfjgoQNCivjgYTjgZfjgaAs44Gu44G244Gf44GLDQor44Gf44Gr44Gv44KJLOOBv+OBpOOBjg0KK+OBiuOBjOOCjyzjgbLjgajjgZcNCivjgZ/jgarjgYss44GX44KH44GG44GZ44GRDQor44Gq44GLLOOBkeOBhOOBkw0KK+OBqOOCguOBluOCjyzjga7jgbbjgZMNCivjga/jgonjgaAs44Gb44Gk44GTDQor44Gv44Gq44G244GVLOOBguOBpOOBkw0KK+OBqOOBj+OBiuOBiyzjgYLjgaTjgZcNCivjgbnjgaPjgZfjgocs44G+44GV44Gy44KNDQor44Gq44GL44GX44G+LOOBi+OBpOOBsuOBkw0KK+OBguOBleOBj+OCiSzjgoTjgZnjgbLjgZMNCivjgb/jgoTjgafjgoks44Gy44KN44GXDQor44GZ44Ga44GNLOOBquOBiuOBjQ0KK+OCiOOBl+OCgOOCiSzjgojjgZfjgbLjgZUNCivjgZXjgo8s44G+44GV44KG44GNDQor44Gq44GL44KE44G+LOOBk+OBhuOBhOOBoQ0KK+OBsuOCieOBluOCjyzjgojjgZfjgbLjgo0NCivjgbXjgZjjgo/jgoks44G+44GV44GC44GNDQor44GZ44GM44KP44KJLOOBqOOBiuOCiw0KK+OBn+OBq+OBjOOCjyzjgb7jgorjgYoNCivjgbvjgpPjgaAs44KE44GZ44GoDQor44Gv44Gq44GELOOBk+OBhuOBhOOBoQ0KK+OBiOOBkOOBoSzjgZXjgY/jgoHjgYQNCivjgYvjgZXjgYQs44KI44GG44GE44GhDQor44GP44KN44GV44KPLOOBsuOCjeOBlw0KK+OBn+OBmOOBvizjgZfjgpMNCivjgZXjgajjgYYs44Gf44Gk44GXDQor44Gy44Gz44GuLOOBpOOBreOBig0KK+OBmeOBjOOChCzjgZfjgoXjgYYNCivjgY/jgonjgZ8s44GT44GG44GE44GhDQor44G+44GZ44GgLOOBr+OCi+OBjQ0KK+OBmeOBjuOBr+OCiSzjgZHjgYTjgZMNCivjgYvjga3jgZMs44KI44GX44KG44GNDQor44GL44GkLOOBn+OBi+OBlw0KK+OBvuOCiyzjgbLjgo3jgoQNCivjgZ/jgarjgYss44Gy44Gn44GL44GaDQor44Go44GX44GK44GLLOOBguOBjeOCiQ0KK+OBl+OBkuOBrizjgorjgofjgYbjgZgNCivjgoTjgb7jgoLjgags44GV44Go44G/DQor44Gq44GL44GM44KPLOOBi+OBpOOBvw0KK+OChOOBvuOBkOOBoSzjgbLjgo3jgY0NCivjgYvjgo/jgoLjgoos44KI44GX44Gy44KNDQor44KA44KJ44KE44G+LOOBvuOBleOCiw0KK+OBl+OCheOBhizjgarjgYrjgoQNCivjgYTjgZHjgaAs44Gy44KN44KG44GNDQor44GT44Gg44G+LOOBn+OBpOOBig0KK+OBi+OBqOOBhizjgZXjgajjgosNCivjga/jgY/jgaHjgofjgYYs44GE44GV44GKDQor44GL44GS44KTLOOBi+OBiuOCiw0KK+OBpuOBmuOBiyzjgZPjgYbjgZgNCivjgZ/jgavjgZDjgaEs44G+44GV44Gf44GRDQor44Gm44KJ44GgLOOBquOBiuOBjQ0KK+OBi+OBqOOBhizjgZ/jgYvjgY0NCivjgarjgYTjgajjgYYs44Gf44GR44GKDQor44GE44Go44GGLOOBn+OBi+OBlw0KK+OBk+OBsOOChOOBlyzjgZHjgpPjgZgNCivjgZ/jgarjgYss44Gy44Gn44Go44GXDQor44GV44GV44GNLOOCj+OBn+OCiw0KK+OBu+OCk+OBoCzjgb/jgaHjgagNCivjgbLjgYjjgaAs44GC44GN44GKDQor44GV44GL44GELOOBi+OBmuOBruOCig0KK+OBi+OBpOOBvyzjgZ/jgYvjgZcNCivjgZ/jgZHjgbks44Gf44GL44GXDQor44Gu44GQ44GhLOOBpOOCiOOBlw0KK+OCj+OBoCzjgYjjgYTjgZgNCivjgYbjgYjjgoTjgb4s44GR44KT44GYDQor44GG44GI44GuLOOBn+OBi+OBsuOCjQ0KK+OBn+OCk+OBlCzjgbLjgafjgYoNCivjgoDjgonjgYvjgb8s44GL44Gk44G/DQor44GC44KJ44GNLOOBk+OBhuOBnuOBhg0KK+OBguOCieOBmyzjgb7jgZnjgbLjgo0NCivjgoTjgb7jgoLjgags44GX44KN44GGDQor44KP44GX44GKLOOBsuOCjeOChuOBjQ0KK+OCj+OBkeOBmOOBvizjgojjgZfjgbXjgb8NCivjgZPjgYTjgZrjgb8s44GR44KT44GZ44GRDQor44Go44GP44KE44G+LOOBqOOBl+OBteOBvw0KK+OBqOOBv+OBquOBjCzjgZHjgpPjgZgNCivjgY3jgZfjgaAs44Gb44GE44GYDQor44GR44KTLOOBv+OBoeOBsuOCjQ0KK+OBsuOCjeOBmyzjgojjgZfjgobjgY0NCivjgYbjgaHjgoTjgb4s44GR44KT44GE44GhDQor44KP44GL44GZ44GOLOOBn+OBoOOBn+OBiw0KK+OBhOOBl+OBkOOCjSzjgYvjgaTjga7jgooNCivjgavjgZfjgoDjgoks44Gy44KN44GL44GaDQor44GE44Gu44G+44GfLOOBi+OBiuOCiw0KK+OBpOOBpOOBvyzjgajjgZfjgbLjgZMNCivjgYTjgorjgYgs44GC44Gk44GXDQor44GV44GE44Go44GGLOOBi+OBmuOBig0KK+OBhuOBiOOBrizjgZfjgpPjgYTjgaENCivjgbvjgpPjgaAs44GK44GV44KADQor44GN44Gf44KA44KJLOOBi+OCiOOBkw0KK+OChOOBvuOBjOOBvyzjgarjgb8NCivjgarjgYvjgavjgZcs44G+44GV44Gy44KNDQor44GG44GI44GgLOOBn+OBi+OBlw0KK+OBsuOCjeOBnyzjgo/jgZ/jgosNCivjgYbjgYjjgaAs44Go44KC44GNDQor44GE44GR44GgLOOBsuOCjeOBlw0KK+OBr+OBquOBtuOBlSzjgojjgorjga7jgbYNCivjgZPjgaDjgb4s44Gy44KN44GC44GNDQor44GK44GL44KC44GoLOOBquOBiuOBjQ0KK+OBmeOBmuOBjSzjgbLjgo3jgb/jgaQNCivjgZnjgZrjgY0s44Gy44GV44GIDQor44Gr44GE44GP44KJLOOBguOBjeOBsuOCjQ0KK+OBq+OBl+OBoCzjgbLjgo3jgbLjgZUNCivjgYrjgZXjgbks44GY44KF44KT44GE44GhDQor44G744Gd44GL44KPLOOBkeOCk+OBhOOBoQ0KK+OBhOOBvuOBiizjgojjgYbjgYTjgaENCivjgbXjgZjjgZ8s44KI44GX44Gu44G2DQor44GK44GK44GuLOOCiOOBl+OBruOCig0KK+OBquOBi+OChOOBvizjgojjgZfjgYoNCivjga/jgoTjgZcs44GR44GE44GYDQor44GZ44GM44Gv44KJLOOBi+OBmuOBruOCig0KK+OBr+OCieOBoCzjgYTjgaHjgo3jgYYNCivjgYLjgbks44GX44KF44KT44GE44GhDQor44GC44G5LOOBkeOBhOOBhOOBoQ0KK+OBguOBuSzjgZHjgpPjgYTjgaENCivjgYLjgaDjgaEs44Gf44Gg44Gy44KNDQor44GC44GE44GwLOOBoOOBhOOBmeOBkQ0KK+OBguOBi+OBsOOBrSzjgYvjgZrjgYoNCivjgYLjgpPjganjgYYs44GI44GE44G7DQor44GC44KT44Gp44GGLOOBqOOCguOChuOBjQ0KK+OBguOBiuOBjSzjgb7jgZXjgZcNCivjgZfjgYTjgY0s44Gy44KN44GXDQor44GC44KJ44GELOOBl+OCh+OBhuOBhOOBoQ0KK+OBguOCieOBhCzjgajjgYrjgosNCivjgYLjgonjgYQs44Gf44GR44GXDQor44GC44KJ44GL44KPLOOBhOOBleOBig0KK+OBguOCieOBjSzjgZ/jgaTjgoQNCivjgYLjgonjgY0s44Gf44GL44KG44GNDQor44GC44KJ44GNLOOBjeOCiOOBr+OCiw0KK+OBguOCieOBjSzjgYvjgZrjgYLjgY0NCivjgYLjgonjgb7jgY0s44G+44GN44GKDQor44GC44KJ44KBLOOBn+OBi+OBrQ0KK+OBguOCiuOCgOOCiSzjgZ/jgZHjgZcNCivjgYLjgZXjgb8s44GX44KF44GG44GE44GhDQor44GC44Ga44G+LOOBsuOCjeOCiOOBlw0KK+OBsOOBsCzjgbLjgafjgYvjgZoNCivjgbDjgbAs44KC44Go44GTDQor44Gh44GwLOOBruOBtuOBguOBjQ0KK+OBoeOBsCzjgZPjgYbjgYTjgaENCivjgaHjga4s44Go44KC44KG44GNDQor44Gg44GE44GT44GPLOOCiOOBl+OBruOBtg0KK+OBp+OBkOOBoSzjgbLjgo3jga7jgooNCivjgafjgY0s44KI44GX44GC44GNDQor44Gp44GELOOBruOBtuOBsuOBkw0KK+OBiOOBoOOBleOCjyzjgbLjgafjgY0NCivjgYjjgZDjgaEs44KI44GX44Gq44KKDQor44GI44KT44GpLOOBi+OBmuOCjQ0KK+OBiOOCk+OBqSzjgb7jgZXjgYoNCivjgYjjgorjgYvjgo8s44KG44GG44GTDQor44G144GY44GELOOBsuOCjeOBlw0KK+OBteOBmOOCguOBqCzjgbLjgafjgagNCivjgbXjgZjjgoLjgags44G+44KG44G/DQor44G144GY44GuLOOCiOOBl+OBguOBjQ0KK+OBteOBi+OBr+OCiSzjgYLjgY3jgokNCivjgbXjgYvjgb8s44Gq44GK44GNDQor44G144GL44KE44G+LOOBruOBtuOChuOBjQ0KK+OBteOBj+OBoCzjgb7jgZXjgobjgY0NCivjgbXjgY/jgYQs44G+44GV44Gy44GTDQor44G144GP44KC44GoLOOBsuOCjeOBlw0KK+OBteOBj+OBquOBjCzjgb7jgZXjgbLjgZMNCivjgbXjgY/jgZfjgb4s44Gu44G244GKDQor44G144GP44GX44G+LOOBi+OBmuOBn+OBiw0KK+OBteOBquOBjSzjgZXjgYvjgYgNCivjgbXjgarjgY0s44KE44GZ44G144G/DQor44G144KL44KELOOBhOOBleOBig0KK+OBlOOBhuOBr+OCiSzjgojjgZfjgbLjgZUNCivjgZTjgajjgYYs44GX44KT44GE44Gh44KN44GGDQor44Gv44GMLOOBn+OBoOOBlw0KK+OBr+OBjuOBrizjgYvjgZrjgo0NCivjgYTjgaHjgoDjgoks44G+44GT44GoDQor44Gv44G+LOOBquOBiuOBjQ0KK+OBr+OBquOBoCzjgb7jgZXjgojjgZcNCivjgYTjgbAs44GN44KI44GV44GgDQor44Gv44Gb44G5LOOBi+OBpOOBuOOBhA0KK+OBr+OBm+OBjOOCjyzjgajjgZfjgo3jgYYNCivjga/jgZfjgoLjgags44Gu44KK44GC44GNDQor44Gv44GXLOOBquOBiuOBguOBjQ0KK+OBr+OBn+OBrizjga7jgbbjgbLjgo0NCivjga/jgajjgoos44GX44KT44Gf44KN44GGDQor44Gv44KE44GXLOOBguOBjeOBsuOBkw0KK+OBr+OChOOBlyzjgZPjgYbjgZgNCivjgbLjgaDjgYss44GL44Ga44GTDQor44Gy44GM44GXLOOBjeOCiOOBn+OBiw0KK+OBvuOBrizjgojjgZfjgYvjgZoNCivjgbLjgonjgYQs44KI44GX44Gf44GLDQor44GL44G/44GV44GNLOOBqOOBl+OBsuOBkw0KK+OBsuOCieOBrizjgb7jgZXjgbLjgZMNCivjgbLjgo3jgYQs44Gy44Gn44GKDQor44Gy44KN44KC44KKLOOCiOOBl+OBr+OCiw0KK+OBsuOCjeOBleOCjyzjgYLjgaTjgZcNCivjgbLjgo3jgZXjgo8s44GK44GV44KADQor44Gy44KN44GbLOOBl+OCk+OBhOOBoQ0KK+OBu+OCk+OBoCzjgojjgYYNCivjgbvjgpPjgb4s44Gy44KN44KE44GZDQor44G744KK44G5LOOBl+OBkuOCiw0KK+OBu+OCiuOBiCzjgbLjgo3jgZcNCivjgbvjgorjgZDjgaEs44KG44GG44GE44GhDQor44G+44Gk44KC44GoLOOBqOOBl+OBsuOBpw0KK+OBu+OCiizjga/jgZjjgoENCivjgbvjgoos44Gy44KN44G/DQor44G744GX44GL44KPLOOBruOCiuOChuOBjQ0KK+OBu+OBneOBi+OCjyzjgZnjgZnjgoANCivjgbLjgofjgYbjganjgYYs44G+44GV44Gv44KLDQor44GE44Gw44KJ44GNLOOChuOBhuOBhOOBoQ0KK+OBhOOBoeOBiuOBiyzjgYLjgaTjgbXjgb8NCivjgYTjgZHjgaAs44Gf44GL44Gy44GoDQor44GE44G+44GELOOCiOOBl+OBn+OBiw0KK+OBhOOBvuOCgOOCiSzjgZ/jgYvjgYLjgY0NCivjgYTjgb7jgarjgYss44Go44KC44KEDQor44GE44Gq44GgLOOBsuOCjeOBlw0KK+OBhOOBquOCgOOCiSzjgZPjgYbjgYTjgaENCivjgYTjga7jgYbjgYgs44GV44Go44KLDQor44GC44KJ44GELOOBqOOBl+OBvw0KK+OBhOOBruOBhuOBiCzjgYjjgYTjgZgNCivjgYTjgZfjgYQs44GN44KI44G/DQor44GE44GX44GELOOBsuOCjeOBlw0KK+OBhOOBl+OBi+OCjyzjgb/jgY3jgYoNCivjgYTjgZfjgYvjgo8s44GC44GN44KJDQor44GE44GX44GK44GLLOOBvuOBk+OBqA0KK+OBhOOBneOBoCwNCivjgYTjgajjgYYs44G+44GV44Gy44KNDQor44GE44Go44GGLOOBoeOBmuOBkw0KK+OBhOOBqOOBhizjgYvjgZrjgbLjgagNCivjgYTjgajjgYQs44Gf44Gg44GXDQor44GE44Go44GGLOOBl+OCk+OBmA0KK+OBhOOCj+OBhCzjgYLjgY3jgokNCivjgYTjgZrjgb/jgoQs44G+44GV44Gu44KKDQor44GL44GY44GfLOOBleOBqOOBlw0KK+OBi+OCgeOBhCzjgZfjgpPjgZgNCivjgYvjgarjgYQs44G+44GV44Gy44KNDQor44GL44Gq44GW44GXLOOBruOCiuOBkw0KK+OBi+OBreOBkyzjgZ/jgZHjgZcNCivjgYvjga3jgZMs44G+44GT44GoDQor44GL44Gu44GGLOOBhOOBj+OBig0KK+OBi+OCiuOBhizjgZfjgZLjgZgNCivjgaTjgY3jgZgs44Gf44GL44Gu44KKDQor44GL44GV44G+44GkLOOBsuOCjeOChuOBjQ0KK+OBi+OBn+OBjuOBlyzjgb7jgZXjgZcNCivjgYvjgZ/jgoTjgb4s44GC44GN44KJDQor44GL44Gf44KE44G+LOOBpuOBpOOCgeOBhA0KK+OBhOOBneOBoCzjgZ/jgYvjgYoNCivjgYvjgZ/jgoTjgb4s44GT44GG44GYDQor44GL44Go44GGLOOBleOBpOOBig0KK+OBi+OBqOOBhizjgb7jgZPjgagNCivjgYvjgajjgYYs44KE44GZ44GXDQor44GL44Go44GGLOOBoeOBiA0KK+OBi+OBpOOBvuOBnyzjgZ/jgY/jgoQNCivjgYvjgo/jgbks44KG44GN44Gu44G2DQor44GL44KP44G5LOOBguOBpOOBlw0KK+OBi+OCj+OBuSzjgoDjga3jgbLjgagNCivjgYvjgo/jgaAs44GR44KT44GZ44GRDQor44GL44KP44GgLOOBguOBjeOBsuOBkw0KK+OBi+OCj+OCguOBqCzjgYLjgY3jgYoNCivjgYvjgo/jgZ/jgass44Gb44GE44GNDQor44GN44G/44Ga44GLLOOBv+OBoeOCjQ0KK+OBjeOCgOOCiSzjgYvjgZrjgoQNCivjgY3jgoDjgoks44KK44KH44GG44Gf44KN44GGDQor44GN44Gu44GX44GfLOOChOOBmeOBsuOCjQ0KK+OBjeOBleOBiyzjgbLjgafjgYoNCivjgY3jgZfjgaAs44Gf44GL44GTDQor44GN44Gf44GM44KPLOOBjeOCh+OBhuOBhOOBoQ0KK+OBjeOBn+OCgOOCiSzjgojjgZfjgbLjgo0NCivjgY3jgZ8s44Gy44Gn44GoDQor44GN44KI44GuLOOBvuOBleOChuOBjQ0KK+OBk+OBsOOChOOBlyzjgYvjgaTjga7jgooNCivjgZPjgaDjgb4s44GL44Ga44Gq44KKDQor44Gp44GyLOOBsuOCieOChOOBmQ0KK+OBk+OBr+OCiSzjgb7jgZXjgY0NCivjgZPjgYTjgacs44Go44GX44KEDQor44GT44GE44KPLOOBsuOCh+OBhuOBmA0KK+OBk+OBhOOBmuOBvyzjga/jgovjgZMNCivjgZPjgb7jgaQs44KE44GZ44Gf44GLDQor44GT44KB44GgLOOBsuOCjeOChuOBjQ0KK+OBk+OCk+OBqSzjgb/jgY0NCivjgZPjgpPjgaks44Go44GK44KLDQor44GT44Gr44GXLOOBmOOCheOCk+OBmA0KK+OBk+OBleOBiyzjgbLjgo3jgYLjgY0NCivjgZPjgZ/jgY0s44GY44KF44KTDQor44GT44Gf44GrLOOBsuOBp+OBjQ0KK+OBk+OBqOOBtuOBjSzjgbLjgo3jgZcNCivjgZ/jgZfjgo0s44GL44Ga44Gu44KKDQor44GP44G844GfLOOChuOBjeOBvuOBlQ0KK+OBj+OBvCzjgabjgaTjgoQNCivjgY/jganjgYYs44G+44GV44GoDQor44GP44G+44GM44GELOOChOOBmeOBsuOCjQ0KK+OBj+OCjeOBmyzjgYrjgZXjgoANCivjgY/jgZfjgb4s44KE44GZ44GTDQor44GP44GX44G/44KELOOBk+OBhuOBjQ0KK+OBj+OBpOOBi+OBkSzjgZfjgpPjgYTjgaENCivjgY/jgo/jga4s44GX44KF44GG44Ge44GGDQor44G+44Gk44Gq44GMLOOBsuOBp+OBjQ0KK+OBvuOBiOOBoCzjgobjgYbjgZgNCivjgb7jgYjjga/jgoks44GV44Go44GXDQor44GI44Gu44GNLOOBqOOBl+OChA0KK+OBvuOBiOOBi+OCjyzjgZPjgYbjgZjjgo3jgYYNCivjgb7jgYjjgY0s44GC44KE44GTDQor44G+44KT44GuLOOBl+OCk+OBjg0KK+OBvuOBrizjgYjjgYTjgZgNCivjgb7jgpPjgZ/jgass44KI44GG44GE44GhDQor44G+44KL44KE44G+LOOChOOBmeOBsuOCjQ0KK+OBvuOBmyzjgYvjgZrjgbLjgZMNCivjgb7jgZnjgZbjgo8s44G+44GV44GKDQor44G+44Gk44GgLOOBv+OBpOOBruOCig0KK+OBvuOBpOOBhCzjgYTjgaTjgZMNCivjgb7jgaTjgYQs44G+44GV44GoDQor44G+44Gk44KC44GoLOOChOOBmeOBguOBjQ0KK+OBvuOBpOOCgOOCiSzjgYvjgZrjgYLjgY0NCivjgb7jgaTjga4s44Gu44KK44KG44GNDQor44G+44Gk44GW44GNLOOCjOOBhOOBkw0KK+OBv+OBjSzjgZfjgZLjgosNCivjgb/jgZPjgaAs44Gm44KL44KG44GNDQor44G/44KA44KJLOOBi+OBmuOBn+OBiw0KK+OBv+OCgOOCiSzjgZfjgZLjga7jgbYNCivjgb/jgarjgb8s44GV44Go44GXDQor44G/44Gq44G/LOOBruOBtuOBsuOCjQ0KK+OBv+OBquOBqCzjgoTjgZnjgZcNCivjgb/jga3jgb7jgaQs44Gu44KK44GTDQor44G/44GtLOOBvuOBleOBn+OBiw0KK+OBv+OBl+OBvizjgbLjgo3jgobjgY0NCivjgb/jgo8s44G+44GV44Gy44KNDQor44G/44KE44GQ44GhLOOBn+OBi+OBsuOCjQ0KK+OBv+OCiOOBlyzjgobjgYbjgZMNCivjgb/jgZrjgZ8s44GY44KF44KT44GTDQor44KC44KC44Gu44GELOOBkeOBhOOBmeOBkQ0KK+OBu+OCk+OBoCzjgZ/jgZHjgZcNCivjgoLjgorjgZ8s44KE44GZ44GXDQor44KC44KK44GfLOOBguOBjeOBsuOBkw0KK+OCguOCiizjgYLjgY3jgokNCivjgoLjgoos44GC44Gk44GXDQor44KC44KKLOOBi+OBmuOBsuOCjQ0KK+OCguOCiizjgb/jga7jgosNCivjgoLjgoos44Gf44GL44GXDQor44KA44Gt44KA44KJLOOBqOOBl+OBv+OBpA0KK+OCgOOCieOBi+OBvyzjgojjgYbjgZgNCivjgoDjgonjgYrjgYss44GT44GG44GYDQor44G/44KH44GG44GMLOOBsuOCjeOBjQ0KK+OBquOBjOOBv+OBrSzjgb7jgZXjgZcNCivjgoTjgb7jgaAs44GX44KT44GE44GhDQor44Gq44GM44GKLOOBqOOBl+OBi+OBmg0KK+OBquOBjOOBnyzjgZHjgpPjgZgNCivjgarjgYTjgajjgYYs44GT44GG44GE44Gh44KN44GGDQor44Gq44GL44GM44KPLOOBn+OCjeOBhg0KK+OBquOBi+OBhOOBoSzjgbLjgo3jga7jgooNCivjgZXjgZXjgY0s44Gk44GL44GVDQor44Gq44GL44GY44G+LOOBsuOCjeOBlw0KK+OBquOBi+OBl+OBvizjgZ3jgYbjgZ/jgo3jgYYNCivjgarjgYvjgZPjgZgs44Gf44Gk44KEDQor44Gq44GL44KA44KJLOOBvuOBleOBteOBvw0KK+OBquOBi+OCgOOCiSzjgZXjgajjgZcNCivjgarjgYvjgoDjgoks44Go44GK44KLDQor44Gq44GL44KA44KJLOOBmOOCheOCkw0KK+OBquOBi+OCgOOCiSzjgaDjgYTjgZnjgZENCivjgarjgYvjgoDjgoks44KG44GG44GTDQor44Gq44GL44KA44KJLOOCiOOBhuOBhOOBoQ0KK+OBquOBi+OCgOOCiSzjgY/jgb/jgZMNCivjgarjgYvjgavjgZcs44Go44GX44KG44GNDQor44Gq44GL44GuLOOBpuOBpOOChA0KK+OBquOBi+OBrizjgY3jgpPjgoQNCivjgarjgYvjgZfjgYos44GT44GG44GE44Gh44KN44GGDQor44Gq44GL44GfLOOBi+OBquOBkw0KK+OBquOBi+OChOOBvizjgZ/jgYvjgZcNCivjgarjgpPjgZEs44GC44Gk44GXDQor44Gq44KJ44GW44GNLOOBn+OBhOOBoeOCjeOBhg0KK+OBquOCiuOBmyzjgobjgY3jgbLjgo0NCivjgarjgovjgYrjgYss44GE44GV44KADQor44Gt44KC44GoLOOBn+OBoOOBlw0KK+OBq+OCgOOCiSzjgZnjgZnjgoANCivjgavjgoDjgoks44G+44GV44KG44GNDQor44Gr44GX44KA44KJLOOBpOOBqOOCgA0KK+OBq+OBl+OBrizjgYvjgZrjgb7jgZUNCivjgavjgZfjgZfjgZ8s44Gm44Gk44Gu44KKDQor44Gr44GX44GG44GhLOOBl+OCheOBhuOBhOOBoQ0KK+OBq+OBl+OChOOBvizjgarjgYrjgbLjgagNCivjgoTjgZjjgb4s44KI44GX44GIDQor44Gr44GX44GW44KPLOOChuOBn+OBiw0KK+OBq+OCjyzjgYLjgY3jgokNCivjga7jgbbjgarjgYws44G/44Gk44GXDQor44Gu44GM44G/LOOBvuOBk+OBqA0KK+OBruOBkOOBoSzjgZfjgpPjgYTjgaENCivjga7jgZDjgaEs44G/44KG44GNDQor44Gu44G+LOOBqOOCiOOBvw0KK+OBruOBvizjgZPjgYbjgYTjgaENCivjga7jgoDjgoks44GT44GG44GYDQor44Gu44KA44KJLOOBruOCiuOBig0KK+OBruOCgOOCiSzjgZfjgoXjgpPjgYTjgaHjgo3jgYYNCivjga7jgZss44Gf44Gg44GC44GNDQor44Gu44GW44KPLOOCiOOBhuOBhOOBoQ0KK+OBrOOBjeOBhCzjgYvjgaTjgb8NCivjgazjgb7jgYos44GC44GN44KJDQor44Gs44G+44GfLOOBi+OBmuOBsuOCjQ0KK+OBiuOBoeOBguOBhCzjgZ/jgYvjgobjgY0NCivjgYrjgaHjgYLjgYQs44KI44GX44GKDQor44GK44Gg44Gv44KJLOOBhOOBj+OBig0KK+OBiuOBoCzjgb/jga7jgosNCivjgYrjgYzjgZXjgo/jgoks44GX44KF44GG44GYDQor44GK44Gp44G+44KKLOOBqOOBhuOBhOOBoeOCjeOBhg0KK+OBiuOBi+OBqSzjgbXjgb/jgYoNCivjgYrjgb7jgZUs44GC44GN44KJDQor44GK44Gq44GMLOOBsuOCjeOChuOBjQ0KK+OBiuOBiuOBrizjgbLjgafjgobjgY0NCivjgYrjgYrjgZXjgY0s44GC44Gk44GXDQor44GK44GK44GV44KPLOOBsuOBp+OBn+OBiw0KK+OBiuOBiuOBmeOBvyzjgYvjgZrjgobjgY0NCivjgoTjgb7jgZfjgZ8s44G+44GV44KLDQor44GK44GK44GfLOOBquOCk+OBpuOBpA0KK+OBiuOBiuOBnyzjgZ/jgYvjgZcNCivjgYrjgYrjgaTjgYss44Gf44Gk44KEDQor44G+44Gk44Gq44GMLOOCiOOBl+OBguOBjQ0KK+OBiuOBiuOChOOBvizjga7jgorjgobjgY0NCivjgYrjgYvjgaAs44KK44GIDQor44GK44GL44GgLOOBn+OBkeOBlw0KK+OBiuOBi+OBoCzjgbLjgo3jgbXjgb8NCivjgYrjgYvjgaAs44KI44GX44Gu44KKDQor44GK44Gu44Gn44KJLOOBn+OBi+OBig0KK+OBiuOBi+OCguOBqCzjgbLjgo3jgobjgY0NCivjgYrjgYvjgZbjgY0s44Gf44GL44GC44GNDQor44GK44GP44GgLOOBqOOBl+OChuOBjQ0KK+OBiuOBjyzjga7jgbbjgobjgY0NCivjgYrjga4s44GV44Gh44GTDQor44GK44GuLOOBkeOBhOOBhOOBoeOCjeOBhg0KK+OBiuOCiuOBpizjgZHjgpPjgYTjgaENCivjgYrjgZXjgaAs44KA44Gk44G/DQor44GV44GE44Go44GGLOOCgOOBpOOBig0KK+OBleOBhOOBqOOBhizjgZfjgpPjgZQNCivjgZXjgYTjgajjgYYs44GX44KF44GG44GYDQor44GV44GE44Go44GGLOOCiOOBhuOBhOOBoQ0KK+OBleOBhOOBqOOBhizjgobjgZ/jgYsNCivjgZXjgYTjgajjgYYs44GL44Ga44Gy44KNDQor44GV44GE44Go44GGLOOBguOBjeOBsuOCjQ0KK+OBleOBi+OBhCzjgYTjgaHjgo3jgYYNCivjgYTjgZfjgZbjgY0s44KG44GN44Gu44KKDQor44GV44GL44KC44GoLOOBsuOCjeOBlw0KK+OBleOBi+OBruOBhuOBiCzjgbLjgafjgYoNCivjgZXjgYvjgYbjgYgs44GL44Ga44G+44GVDQor44GV44GT44GgLOOBruOBtuOBig0KK+OBleOBj+OCieOBhCzjgZfjgZLjga7jgooNCivjgZXjgY/jgonjgYQs44Gf44GL44GXDQor44GV44Gs44GNLOOCiuOCheOBhuOBn+OCjeOBhg0KK+OBleOBleOBjSzjgYLjgY3jgagNCivjgajjgb/jgZ8s44Go44KC44Gq44KKDQor44GV44Go44GGLOOBpuOBpOOBig0KK+OBleOBqOOBhizjgarjgYrjgY0NCivjgZXjgajjgYYs44KI44GX44Gu44KKDQor44GV44Go44GGLOOBvuOBleOChuOBjQ0KK+OBleOBqOOBhizjgajjgZfjgoQNCivjgZXjgajjgYYs44GC44Gk44GTDQor44GV44KP44GgLOOBvuOBleOBqA0KK+OBm+OBiizjgZHjgpPjgZXjgY8NCivjgZvjgZbjgYQs44GL44Ga44KE44GZDQor44GX44Gw44GfLOOBn+OBkeOBsuOBkw0KK+OBl+OBsOOBnyzjgojjgYYNCivjgZfjgYzjgY0s44GC44GN44Gy44GTDQor44GX44G/44GaLOOBsuOCjeOCgA0KK+OBl+OBv+OBmizjgojjgZfjgb8NCivjgZfjgb/jgZos44GC44GN44KJDQor44GX44G/44GaLOOBguOBjeOBqOOBlw0KK+OBl+OBv+OBmizjgbLjgafjgYoNCivjgZfjgoLjgoDjgoks44Gy44KN44GC44GNDQor44GX44Gu44Gv44KJLOOBi+OBmuOBsuOCjQ0KK+OBl+OCieOBpCzjgb7jgZPjgagNCivjgZfjgo3jgZfjgZ8s44GV44Go44GXDQor44GX44KH44GG44GYLOOChuOBhuOBkw0KK+OBl+OCh+OBhuOBv+OBpCzjgojjgZfjgbLjgo0NCivjgZ3jgaAs44GL44Gk44GZ44GRDQor44Gd44KC44KKLOOBn+OBpOOBig0KK+OBneOBhizjgYvjgZrjgbLjgZMNCivjgarjgYss44KG44GG44GYDQor44GZ44GO44KA44KJLOOBkeOBhOOBlw0KK+OBmeOBjuOBrizjgb7jgZXjgbLjgo0NCivjgZnjgY7jgZXjgo8s44Gu44G244KG44GNDQor44GZ44GO44GfLOOBleOChuOCig0KK+OBmeOBjuOBhuOBoSzjgZfjgpPjgZnjgZENCivjgZnjgY7jgoTjgb4s44GC44GN44Gu44KKDQor44GZ44GO44KE44G+LOOBvuOBleOBruOCig0KK+OBmeOBjuOChOOBvizjgYvjgZrjgb8NCivjgZnjgZrjgY0s44GX44KT44KEDQor44GZ44Ga44GNLOOChuOBhuOBmA0KK+OBmeOBmuOBjSzjgZfjgpMNCivjgZnjgZrjgY0s44Gy44KN44GC44GNDQor44GZ44Ga44GNLOOBqOOBl+OBguOBjQ0KK+OBmeOBmuOBjSzjgbLjgafjgagNCivjgZnjgZrjgY0s44GT44GG44GE44GhDQor44GZ44Ga44GNLOOChuOBhuOBkw0KK+OBn+OBoeOBsOOBqizjgZ/jgYvjgZcNCivjgZ/jgYTjgoks44GC44GN44KJDQor44Gf44GE44KJLOOBsuOBp+OBguOBjQ0KK+OBn+OBi+OBoCzjgbLjgo3jgobjgY0NCivjgZ/jgYvjgY4s44G+44GV44GL44GaDQor44Gf44GL44Gv44GXLOOBruOCiuOBhOOBpA0KK+OBn+OBi+OBr+OBlyzjgZ/jgYvjgobjgY0NCivjgZ/jgYvjga/jgZcs44Gv44GY44KBDQor44G+44GZ44GW44KPLOOBsuOBqOOBlw0KK+OBn+OBi+OBr+OBlyzjgb7jgZXjgYLjgY0NCivjgZ/jgYvjgb4s44Gy44GV44GoDQor44Gf44GL44GuLOOBv+OBiOOBkw0KK+OBn+OBi+OBrizjgYvjgZrjgojjgZcNCivjgZ/jgYvjgZXjgYss44Gv44GY44KBDQor44Gf44GL44GbLOOBi+OBpOOBmA0KK+OBn+OBi+OBnyzjgY/jgb/jgZMNCivjgZ/jgYvjgoTjgb4s44GC44Gk44GXDQor44Gf44GL44KE44Gq44GOLOOBguOCiuOBsuOCjQ0KK+OBn+OBkeOBoCzjgYjjgooNCivjgZ/jgZHjgaAs44GC44GN44KJDQor44G144GY44GELOOBguOBpOOBkw0KK+OBn+OBkeOBruOCiizjgYTjgY/jgZcNCivjgZ/jgZHjgZfjgZ8s44Gy44KN44GL44GaDQor44Gf44GR44GG44GhLOOChuOBhuOBmA0KK+OBn+OBkeOBhuOBoSzjgZ/jgYvjgajjgZcNCivjgZ/jgY3jgZbjgo8s44G+44GV44GC44GNDQor44Gf44GN44GW44KPLOOBpOOCiOOBlw0KK+OBn+OBvuOBjSzjgZXjgajjgZMNCivjgZ/jgoDjgoks44GC44GN44Gy44KNDQor44Gf44KA44KJLOOBpuOBpOOBrQ0KK+OBn+OCgOOCiSzjga7jgbbjgYoNCivjgZ/jgarjgYss44GX44KH44GG44GUDQor44KP44Gf44Gq44G5LOOBguOBjeOBsuOCjQ0KK+OBn+OBq+OChOOBvizjga7jgbzjgosNCivjgZ/jgass44GL44Ga44Gy44GTDQor44Gm44KJ44GN44GfLOOBquOBjOOBruOCig0KK+OBpuOBmuOBiyzjgZfjgpPjgYTjgaENCivjgajjgbDjgoos44GZ44GZ44KADQor44Go44GM44GXLOOBmOOCheOCk+OBhOOBoQ0KK+OChOOBvuOBoCzjgZHjgpPjgYTjgaENCivjgajjgY3jgZ7jga4s44GX44GS44GKDQor44Go44G/44Gq44GMLOOCguOBqOOBsuOBlQ0KK+OBqOOBv+OBquOBjCzjgZfjgpPjgZgNCivjgajjgb/jgZ8s44GX44KT44GYDQor44Go44G/44GfLOOBpuOBpOOBig0KK+OBqOOCguOBiuOBiyzjgbLjgajjgZcNCivjgajjga7jgZXjgY0s44KI44GX44Gu44KKDQor44Go44KK44GW44KPLOOBiOOBvw0KK+OBk+OBhOOBkSzjgbLjgo3jgZMNCivjgajjgojjgYvjgo8s44G+44GV44KI44GXDQor44Go44KI44GL44KPLOOBsuOBleOCiOOBlw0KK+OBpOOBvOOBhCzjgZ/jgaDjgZcNCivjgaTjgYvjgaAs44Go44GK44KLDQor44Gk44GP44GELOOBsuOBleOBlw0KK+OBpOOCi+OBi+OCjyzjgYjjgYTjgZgNCivjgaTjgaTjgYQs44Go44GX44GL44GaDQor44Gk44Gk44GELOOChuOBhuOBmA0KK+OBhuOBoeOBoCzjgbLjgo3jgY0NCivjgYbjgaHjgaAs44GY44KF44KT44GE44GhDQor44GG44Gh44G+LOOBl+OCheOCk+OBhOOBoQ0KK+OBhuOBoeOChOOBvizjgYLjgY3jgbLjgo0NCivjgYbjgaAs44Gy44GV44KI44GXDQor44GG44GI44GgLOOBi+OBmuOBruOCig0KK+OBhuOBiOOBrizjgY3jgojjgZcNCivjgYbjgYjjga4s44Gu44KK44GKDQor44GG44GI44GuLOOBn+OBi+OBlw0KK+OBhuOBkeOBjOOCjyzjgZ/jgYvjgobjgY0NCivjgYbjgb7jgZrjgoEs44KI44GX44Gy44KNDQor44GG44KB44KA44KJLOOBjeOBv+OBsuOCjQ0KK+OCj+OBoCzjgbLjgo3jgZcNCivjgo/jgaAs44KE44GZ44Gy44GTDQor44KP44Gf44Gq44G5LOOCiuOCh+OBhg0KK+OBhOOBhOOBoCzjgZXjgajjgZcNCivjgo/jgZ/jgarjgbks44Gf44GL44GXDQor44KP44Gf44KKLOOChOOBmeOCiOOBlw0KK+OChOOBjizjgojjgZfjgobjgY0NCivjgoTjgb7jgaAs44Gy44KN44KG44GNDQor44KE44G+44GMLOOBsuOBp+OBig0KK+OChOOBvuOBkOOBoSzjgb7jgZXjga7jgooNCivjgoTjgb7jgZDjgaEs44Gy44Gn44GKDQor44KE44G+44GQ44GhLOOBvuOBleOBlw0KK+OChOOBvuOCguOBqCzjgabjgaTjgoQNCivjgoTjgb7jgoLjgags44G+44GV44KG44GNDQor44KE44G+44KC44GoLOOBi+OBmuOChuOBjQ0KK+OChOOBvuOCguOBqCzjgbLjgafjgZcNCivjgoTjgb7jgoLjgags44G+44GV44Gu44KKDQor44KE44G+44KC44GoLOOBi+OBmuOBqA0KK+OChOOBvuOCguOBqCzjgYvjgYrjgosNCivjgoTjgb7jgoLjgags44G+44GV44KI44GXDQor44KE44G+44Gq44GLLOOBiOOBhOOBmA0KK+OChOOBvuOBl+OBnyzjgZXjgajjgosNCivjgoTjgb7jgYbjgaEs44GL44Ga44GC44GNDQor44KE44G+44GW44GNLOOBr+OCi+OBsuOBkw0KK+OChOOBvuOBluOBjSzjgb7jgZXjgajjgZcNCivjgoTjgb7jgZbjgY0s44GR44KT44GYDQor44KE44GuLOOChuOBjeOBig0KK+OChOOBrizjgZPjgYbjgYTjgaENCivjgoTjgZnjgaAs44Gf44GR44GXDQor44KE44GZ44G+44GkLOOBi+OBpOOBquOCig0KK+OChOOBmeOCguOBqCzjgZPjgYbjgZgNCivjgoTjgZnjgavjgo8s44Gf44GL44KG44GNDQor44KI44GgLOOBiuOBleOCgA0KK+OCiOOBoCzjgYTjgZXjgYoNCivjgojjgZfjgaAs44KI44GX44Gy44KNDQor44KI44GX44GELOOBn+OBpOOChA0KK+OCiOOBl+OBquOBjCzjgobjgb/jgZMNCivjgojjgZfjga4s44Gf44Gk44G/DQor44KI44GX44Gf44GRLOOBguOBjeOBsuOCjQ0KK+OBn+OBjeOBluOCjyzjgZ/jgYvjgZcNCivjgoTjgb7jgZDjgaEs44GL44Ga44KI44GXDQor44GL44Gw44GX44G+LOOBi+OBmuOBsuOBlQ0KK+OBleOBj+OCiSzjgobjgYbjgZnjgZENCivjgoDjgonjgoTjgb4s44Gy44KN44KG44GNDQor44Gy44GN44GgLOOBi+OBmuOBvw0KK+OCgOOCieOBhCzjgY/jgavjgbLjgo0NCivjgbss44GC44GN44KJDQor44GI44KT44GpLOOBm+OBhOOBmA0KK+OBpuOCieOCgOOCiSzjgZ/jgaTjgYoNCivjgo/jgZ/jgarjgbks44Gf44GL44Gy44GTDQor44GE44G+44GELOOBl+OBkuOChA0KK+OCguOCiuOCguOBqCzjgajjgZfjgYvjgZoNCivjgZPjgoTjgoos44Gb44GE44GYDQor44G+44Gk44G/44KELOOChuOBhuOBhOOBoQ0KK+OBl+OBsOOBnyzjgYvjgZrjgYoNCivjgaHjgZfjgo0s44KI44GX44Gy44KNDQor44GE44Gf44G/LOOBsuOBp+OBig0KK+OBiuOBluOBjSzjgbLjgajjgZcNCivjgbXjgY/jgoLjgags44G+44GV44Gk44GQDQor44GK44GL44GgLOOBsuOCjeOBlw0KK+OBleOCj+OBoCzjgbLjgo3jgZcNCivjgZXjgY/jgonjgYQs44Gf44GL44GXDQor44Gv44KE44GXLOOCiOOBl+OBruOCig0KK+OBvuOBpOOBiuOBiyzjgoTjgZnjga7jgooNCivjgb/jgojjgZcs44Gu44KK44KI44GXDQor44KE44G+44Gq44GLLOOBk+OBhuOBmOOCjeOBhg0KK+OBl+OBv+OBmizjgbLjgajjgZcNCivjgZPjga/jgoks44G+44GV44Gu44KKDQor44Gr44GX44GL44KPLOOBsuOCjeOBlw0KK+OBhOOBvuOBhCzjgoTjgZnjgYoNCivjgbXjgZjjgoDjgoks44Gy44KN44KG44GNDQor44GT44GY44G+LOOChOOBmeOChuOBjQ0KK+OBk+OBsOOChOOBlyzjgbLjgo3jgZcNCivjgY3jgY/jgaEs44GL44Gk44Gy44GTDQor44GV44GE44Go44GGLOOBv+OBpOOCiw0KK+OChOOBvuOBl+OBnyzjgbLjgafjgYLjgY0NCivjgYLjgbks44GX44KT44GYDQor44Gm44Ga44GLLOOBn+OBi+OBlw0KK+OBn+OBquOBiyzjgo/jgZ/jgosNCivjgavjgo8s44G/44Gu44KLDQor44GL44KB44GELOOBv+OBmuOBuw0KK+OChOOBrizjgb/jgaTjgYoNCivjgarjgYvjgb7jgoss44KE44GZ44GXDQor44GK44GK44Gv44GfLOOBvuOBleOBruOCig0KK+OChOOBmeOChOOBvizjgb7jgZXjgbLjgo0NCivjgYvjgZnjgYws44G/44Gk44GKDQor44GE44GX44GELOOBguOBjeOBsuOBkw0KK+OBteOBmOOCguOCiizjga7jgorjgZMNCivjgYTjgo/jgoLjgags44Gy44KN44GXDQor44KE44G+44GX44GfLOOCi+OBv+OBkw0KK+OBjeOBnyzjgajjgoLjgb8NCivjgoDjgonjgYrjgYss44KG44GG44GTDQor44GE44GQ44GVLOOCiOOBl+OBmuOBvw0KK+OBquOBjOOBleOCjyzjgbLjgo3jgZgNCivjgoTjgb7jgZDjgaEs44KE44GZ44Gy44KNDQor44GK44Gg44GY44G+LOOChuOBn+OBiw0KK+OBiuOBiuOBnyzjgb7jgb8NCivjga/jgY7jga4s44Gq44GK44GE44Gh44KN44GGDQor44KE44G244GNLOOBqOOBl+OBguOBjQ0KK+OBhOOBjSzjgojjgZfjgajjgZcNCivjgZXjgYTjgajjgYYs44G+44GV44GoDQor44KE44G+44GgLOOBn+OBi+OBlw0KK+OBquOBi+OChOOBviwNCivjgoDjgonjgb7jgaQs44GL44GK44KLDQor44Gf44GX44KNLOOBl+OCh+OBhuOBhOOBoQ0KK+OBhOOBl+OBr+OCiSzjgb7jgZXjgobjgY0NCivjgZfjgbDjgYrjgYss44Gf44Gk44GKDQor44Gq44GL44GKLOOChOOBmeOBruOCig0KK+OBteOBmOOBnyzjgajjgZfjgY0NCivjgZXjgY/jgZ8s44G+44GV44KG44GNDQor44Gv44GfLOOBmeOBmeOCgA0KK+OBiuOBiuOChOOBvizjgZ/jgaDjgZcNCivjgZ/jgZQs44GN44KH44GG44GTDQor44G+44Gk44KA44KJLOOBi+OBmuOBig0KK+OBhOOBqOOBhizjgb7jgZXjgobjgY0NCivjgY3jgoDjgoks44Gf44GR44GKDQor44GC44GK44GNLOOBv+OBpOOBn+OBiw0KK+OBk+OBvuOBjOOBnyzjgbLjgafjgajjgZcNCivjgarjgonjgoDjgoks44GL44Ga44GTDQor44G144GY44KC44GoLOOBvuOBleOBjQ0KK+OBv+OChOOBleOBiyzjgajjgZfjgbLjgZMNCivjga/jgoTjgZcs44G+44GV44Gy44KNDQor44GV44GE44Go44GGLOOBi+OBmuOBsuOBkw0KK+OBiuOBjOOBleOCj+OCiSzjgZfjgofjgYbjgZgNCivjgYrjgYrjgaTjgYss44Go44GX44KG44GNDQor44GL44KP44GELOOBqOOCguOChuOBjQ0KK+OBl+OBvuOBmizjgojjgYbjgYTjgaENCivjgZ/jgYvjga/jgZcs44GN44GX44GTDQor44G+44GI44GW44KPLOOBhOOBmuOBvw0KK+OBr+OBoCzjgYvjgYrjgosNCivjgb7jgaTjgbLjgoks44GI44KKDQor44GZ44GO44Gv44KJLOOBruOBvOOCiw0KK+OBquOBi+OBmOOBvizjgojjgZfjga7jgbYNCivjga/jgZ/jgZHjgoTjgb4s44Gm44Gk44KEDQor44GC44GK44GNLOOBvuOBleOBsuOBkw0KK+OBl+OBtuOBi+OCjyzjgY3jgojjgbLjgZUNCivjgYTjgZfjgaAs44GX44GS44KLDQor44GK44GL44GgLOOBn+OBi+OBlw0KK+OBhOOBqOOBhizjgYLjgY3jgokNCivjgYvjgajjgYYs44G+44GV44Gy44KNDQor44GT44Gw44KE44GXLOOBquOBiuOBv+OBpA0KK+OCgOOCieOBleOCjyzjgb/jga7jgosNCivjgb/jgbss44G+44GV44Gu44KKDQor44GZ44GM44GtLOOCiOOBl+OBruOBtg0KK+OBhOOBl+OBi+OCjyzjgojjgZfjgbLjgZMNCivjgYrjgYss44KE44GZ44Gy44KNDQor44GE44KP44G/LOOChuOBv+OBkw0KK+OBquOBi+OChOOBvizjgbLjgo3jgZcNCivjgYTjgajjgYYs44GL44Ga44GNDQor44GZ44GO44KE44G+LOOBl+OCk+OBhOOBoQ0KK+OBi+OBl+OCguOBqCzjgojjgZfjgZMNCivjgarjgYvjgoDjgoks44G+44GV44KG44GNDQor44GC44GK44KE44G+LOOBsuOBp+OBruOCig0KK+OBl+OBsOOBnyzjgZHjgpPjgYTjgaENCivjgb7jgaTjgYos44KI44GX44Gu44KKDQor44GX44Gu44KA44KJLOOBguOBiuOBhA0KK+OBteOCi+OBi+OCjyzjgojjgZfjgbXjgb8NCivjgoLjgajjgY0s44GX44KF44GG44GE44GhDQor44KP44Gf44Gq44G5LOOBoeOBig0KK+OBguOCk+OBqeOBhizjgb7jgZXjgbLjgo0NCivjgZ/jgZHjgbIs44GV44Gh44GTDQor44GE44GX44GELOOBguOBjeOBteOBvw0KK+OBruOBoeOBmyzjgYvjgZrjgbLjgZMNCivjgb/jgoTjgarjgYws44Go44GX44GTDQor44GX44KT44Gp44GGLOOBsuOCjeOBvw0KK+OBiuOBiuOBnyzjgb/jgojjgZMNCivjgZ/jgass44KI44GX44GC44GNDQor44GT44KA44KNLOOBteOBv+OBruOCig0KK+OBhOOCj+OBlSzjgbLjgo3jgb/jgaENCivjgb7jgaTjgoLjgags44Gy44Gn44GC44GNDQor44GN44KA44KJLOOBsuOBleOBqA0KK+OBguOBiuOBjSzjgYLjgY3jgbLjgZMNCivjgb7jgaTjgbDjgoTjgZcs44Gy44KN44GXDQor44GU44Go44GGLOOBteOBv+OChuOBjQ0KK+OBiuOBjOOCjyzjgYLjgY3jgokNCivjgZnjgY7jgZ/jgass44Gv44KL44GKDQor44GK44GP44GuLOOChuOBjeOBig0KK+OBleOBj+OCieOBoCzjgZfjgpPjgbrjgYQNCivjgoDjgZPjgoTjgb4s44Gu44KK44GTDQor44GE44Go44GGLOOBleOBqOOBlw0KK+OChOOBvuOCguOBqCzjgZ/jgaDjgZcNCivjgoTjgb7jgoLjgags44G+44GV44Go44GXDQor44GL44Gt44GTLOOBl+OCheOBhuOBuOOBhA0KK+OChOOBvuOBluOBjSzjgoTjgZnjgbLjgo0NCivjgarjgYvjgoDjgoks44Go44KCDQor44G/44KPLOOBiuOBleOCgA0KK+OBleOCgOOBi+OCjyzjgZfjgo3jgYYNCivjgarjgYvjgaAs44Go44GX44KG44GNDQor44KI44GX44Go44G/LOOBkeOCk+OBhOOBoQ0KK+OBn+OBi+OBl+OBvizjgaTjga3jgZgNCivjgYTjgZfjgZIs44GC44GN44GTDQor44GZ44GI44Gv44KJLOOBsuOCjeOChuOBjQ0KK+OBhOOBruOBhuOBiCzjgbLjgafjgb8NCivjga7jgZjjgb4sDQor44GV44GP44G+LOOBleOBoeOBiA0KK+OBleOBrizjgojjgZfjgb/jgaENCivjgoDjgonjgYrjgYss44GL44Gk44GYDQor44G/44GG44KJLOOCiuOCheOBhuOBnuOBhg0KK+OBleOBi+OCguOBqCzjgZjjgoXjgpMNCivjgarjgovjgYos44Gb44GE44GTDQor44Gv44Gb44GM44KPLOOBv+OBpOOBsuOCjQ0KK+OBiuOBi+OBoCzjgabjgaTjgYoNCivjgoTjgbLjgo0s44Gu44G244KG44GNDQor44Gw44GwLOOBn+OBj+OChA0KK+OBguOBnyzjgYLjgoTjga4NCivjgarjgYzjgZss44GN44KI44GXDQor44GL44KP44GILOOBhOOBmuOBvw0KK+OBv+OBhuOCiSzjgb7jgY3jgogNCivjgbXjgZjjgZ8s44GV44Go44GTDQor44Gk44KL44G/LOOCiOOBl+OBig0KK+OCguOBoeOBmuOBjSzjgYjjgb/jgZMNCivjgojjgZfjgaAs44GL44Ga44GC44GNDQor44GK44GL44KC44GoLOOBvuOBleOBteOBvw0KK+OChOOBmeOCguOBqCzjgb/jgaTjga/jgosNCivjga3jgoLjgags44Gf44GP44GYDQor44Gy44Gg44GLLOOBhuOBiOOBv+OBpA0KK+OBvuOBmeOBoCzjgY/jgb/jgZMNCivjgajjgY/jgarjgYws44G144G/44Gy44GoDQor44Gq44GL44GW44KPLOOBmeOBmeOCgA0KK+OBteOBmOOBquOCjyzjgojjgZfjga/jgosNCivjgojjgbPjgYvjgo8s44GL44Ga44Gy44KNDQor44GN44Gf44GgLOOBn+OBkeOBlw0KK+OCiOOBl+OBrizjgoTjgZnjgbLjgo0NCivjgbDjgbAs44KI44GX44GoDQor44GP44KN44GL44KPLOOBsuOCjeOBlw0KK+OBi+OBqOOBhizjgZ/jgYvjgZcNCivjgo/jgZ/jgarjgbks44Go44GX44GKDQor44Gk44Gh44GgLOOBguOBpOOBkw0KK+OBmeOBmuOBjSzjgb/jgobjgY0NCivjgb/jgZrjga4s44GC44GN44KJDQor44Gf44Gr44KC44GoLOOBn+OBj+OBvw0KK+OBhOOBkeOBrizjgoHjgZDjgb8NCivjgYTjgajjgYYs44GX44KH44GG44GTDQor44Gf44GR44GgLOOBqOOBiuOCiw0KK+OBvuOBiOOBoCzjgZPjgYbjgbjjgYQNCivjgY/jganjgYYs44GL44Gk44G/DQor44GL44GS44KE44G+LOOBv+OBreOBig0KK+OChOOBvuOBi+OBkizjgojjgYbjgZgNCivjgZXjgYjjgZDjgZUs44KM44GE44GTDQor44G/44Ga44Gf44GrLOOBquOBiuOBkw0KK+OBj+OBqeOBhizjgajjgZfjgbLjgZMNCivjgZPjgYrjgorjgoTjgb4s44G/44Ga44G7DQor44GL44Gf44KI44GbLOOCiOOBl+OBiA0KK+OBiuOBleOBoCzjgZHjgYTjgZMNCivjgoTjgY7jga/jgZcs44GX44KF44GG44GE44GhDQor44GZ44G/LOOBn+OBpOOBig0KK+OBn+OBquOBiyzjgYLjgaTjgZcNCivjgY/jganjgYYs44KG44GN44GKDQor44Gf44GR44GyLOOBguOBjeOCiQ0KK+OBguOCgeOBv+OChCzjgb/jgaHjgbLjgo0NCivjgarjgYvjgoDjgoks44Gf44GL44GXDQor44GN44KI44G/44GkLOOBkeOCk+OBmA0KK+OBhOOBmuOBv+OBoCzjgojjgZfjgYsNCivjgbXjgarjgY0s44Gy44KN44GC44GNDQor44Gf44GR44GX44GfLOOBi+OBmuOBsuOBkw0KK+OBv+OBhuOCiSzjgY3jgY/jgYoNCivjgYTjgZfjgbDjgZcs44Gu44G244GTDQor44KC44KK44GC44GELOOBkeOBhOOBmA0KK+OCgOOCieOChOOBvizjgYjjgYTjgZjjgoUNCivjgYrjgZXjgo8s44KE44GZ44Gu44KKDQor44G144GL44GgLOOCiOOBl+OBi+OBmg0KK+OChOOBvuOBoCzjgbLjgafjgbLjgZMNCivjgYTjgajjgYYs44GC44GN44KJDQor44GK44Gu44Gn44KJLOOBqOOBv+OBig0KK+OBr+OChOOBleOBiyzjgb7jgZXjgb/jgaENCivjgYrjgYrjgaTjgYss44Gy44Gn44Gy44GTDQor44Go44GK44KE44G+LOOBsuOCjeOBn+OBiw0KK+OBi+OCj+OBr+OCiSzjgb/jgaTjgosNCivjgYjjgbPjgZXjgo8s44G+44GV44GNDQor44KE44G+44GL44KPLOOBpuOBpOOChA0KK+OChOOBvuOCguOBqCzjgoTjgZnjgajjgoINCivjgZnjgZrjgY0s44Go44GK44KLDQor44GK44KE44G+44GgLOOBn+OBi+OBlw0KK+OBvuOBpOOChOOBvizjgorjgoXjgYbjgYTjgaENCivjgYLjgbks44Gu44G244Gy44KNDQor44GC44G5LOOChOOBmeOBig0KK+OBguOBuSzjgYvjgZrjgb7jgZUNCivjgYLjgbks44KG44GN44GKDQor44GC44GS44GfLOOBmOOCheOCk+OBhOOBoQ0KK+OBguOBi+OBr+OBrSzjgbLjgafjgbLjgo0NCivjgYLjgZHjgarjgYws44GY44KF44KTDQor44GC44GN44KE44G+LOOBl+OBkuOBig0KK+OBguOBjeOBluOCjyzjgbLjgafjgYvjgZoNCivjgYLjgb7jgaAs44G/44GN44GKDQor44GC44G+44GuLOOBvuOBleOBlw0KK+OBguOCguOBhizjgYLjgY3jgYoNCivjgYLjgpPjganjgYYs44Gy44Gn44GC44GNDQor44GC44KT44Gp44GGLOOBquOBiuOBjQ0KK+OBguOCk+OBqeOBhizjgajjgZfjgbXjgb8NCivjgYLjgYrjga4s44Gy44KN44GNDQor44GC44GK44KE44G+LOOBhOOCj+OBig0KK+OBguOCieOBhCzjgYvjgZrjgbLjgo0NCivjgYLjgonjgYvjgo8s44Gy44Gn44GXDQor44GC44KK44KC44GoLOOBsuOBp+OBjQ0KK+OBguOCiuOBiizjgb7jgZPjgagNCivjgYLjgZXjgYQs44GC44GN44KJDQor44GC44GV44GL44KPLOOCiOOBl+OBsuOBqA0KK+OBj+OCjeOBjSzjgobjgY3jga7jgooNCivjgYLjgZrjgb4s44GX44KT44GYDQor44Gw44KT44GuLOOBvuOBleOBjeOCiA0KK+OBueOBpOOChOOBjyzjgZHjgpPjgZQNCivjgbPjgajjgYYs44GY44KTDQor44Gh44GwLOOBsuOCjeOBlw0KK+OBoeOCheOBhizjgYvjgaTjgY0NCivjgYjjgaAs44GR44KT44GE44Gh44KNDQor44GI44KT44GpLOOBquOBiuOBvw0KK+OBiOOBleOBjSzjgZfjgpPjgYTjgaENCivjgbXjgZjjgYQs44Gy44KN44GXDQor44G144GY44GELOOBteOBv+OBig0KK+OBteOBmOOCguOBqCzjgYLjgY3jgokNCivjgbXjgZjjgZ8s44GN44KI44Gq44GKDQor44G144GY44GfLOOBguOBjeOBsuOCjQ0KK+OBteOBmOOCj+OCiSzjgZXjgajjgZcNCivjgbXjgYvjgZbjgo8s44Go44KC44Gy44GoDQor44G144GP44GgLOOBmeOBmeOCgA0KK+OBteOBj+OBr+OCiSzjgoTjgZnjgbLjgZMNCivjgbXjgY/jgZfjgb4s44GL44Ga44KI44GXDQor44G144GP44Gp44KBLOOBi+OBmuOBsuOBlQ0KK+OBteOBj+OChOOBvizjgZXjgajjgZcNCivjgbXjgarjgbDjgZcs44G+44GV44KG44GNDQor44G144KL44Gg44GmLOOBguOBjeOBsuOBkw0KK+OBteOCi+OBleOCjyzjgZfjgpPjgZgNCivjgbXjgovjgZ8s44KK44GN44KEDQor44G144KL44KELOOBl+OCk+OBhOOBoQ0KK+OBteOBl+OBjSzjgobjgYbjgYTjgaENCivjga/jgb7jgaAs44GT44GG44GE44Gh44KN44GGDQor44Gv44Gq44GgLOOBi+OBpOOBruOCig0KK+OBr+OBquOBvyzjgbLjgafjgYoNCivjga/jgonjgaAs44GC44GN44KJDQor44Gv44KL44GL44KPLOOBhOOBmuOBvw0KK+OBr+OBm+OBjOOCjyzjgojjgYbjgYTjgaENCivjgYrjgYrjgaQs44KA44Gt44Gy44KNDQor44Gv44GX44KC44GoLOOBguOBpOOBlw0KK+OBr+OBl+OCguOBqCzjgYjjgb/jgZMNCivjga/jgZnjgoLjgags44GC44Gk44GXDQor44Gv44Gj44Go44KKLOOBpOOCiOOBlw0KK+OBr+OChOOBleOBiyzjgZ/jgYvjgYoNCivjgbLjgaDjgYss44GR44GV44GKDQor44Gy44GQ44GhLOOBkeOBhOOBkw0KK+OBsuOBkOOBoSzjgbXjgZXjgobjgY0NCivjgbLjgZjjgY/jgo0s44Gq44GK44KG44GNDQor44Gy44KJ44GL44KPLOOBmOOCheOCk+OBhOOBoQ0KK+OBsuOCieOBrizjgbLjgo3jgogNCivjgbLjgonjgZ8s44G+44GV44Gy44KNDQor44Gy44KN44GbLOOBleOBoeOBkw0KK+OBsuOBleOBoCzjgZ/jgYvjgZcNCivjgbvjgoos44Gu44KK44KE44GZDQor44G744GG44KELOOBi+OBmuOBsuOBkw0KK+OBu+OCk+OBoCzjgZfjgZLjgobjgY0NCivjgbvjgpPjgb4s44Gf44Gk44KEDQor44Gf44Gq44GLLOOBpOOCiOOBlw0KK+OBu+OBl+OBmOOBvizjgZ/jgaTjgYoNCivjgbvjgZfjgYss44Gf44GR44GXDQor44G744Gd44GgLOOBoeOBiOOBvw0KK+OBhOOBoeOBi+OCjyzjgoTjgZnjgbLjgo0NCivjgYTjgaHjgoDjgoks44GR44GE44GUDQor44GE44GM44GuLOOBv+OBqeOCig0KK+OBhOOBhOOBoCzjgb7jgZXjgobjgY0NCivjgYTjgYTjgYrjgYss44Gy44KN44GXDQor44Gq44GM44GuLOOBleOBqOOCiw0KK+OBhOOBkeOBluOCjyzjga7jgbbjgoTjgZkNCivjgYTjgoLjgags44GZ44G/44KMDQor44GE44Gq44Ga44G/LOOChOOBmeOBr+OCiw0KK+OBj+OBl+OBv+OChCzjgZfjgpPjgYTjgaENCivjgYTjga7jgYbjgYgs44GX44KT44KEDQor44GE44Gu44GG44GILOOBguOBjeOCiQ0KK+OBhOOBruOBhuOBiCzjgajjgoLjgobjgY0NCivjgYTjgazjgaTjgYss44Gq44GK44GNDQor44GE44GV44GYLOOBsuOBp+OBqA0KK+OBhOOBl+OBoCzjgZfjgoXjgYbjgYTjgaENCivjgYTjgZfjgaAs44GE44GV44GKDQor44GE44GX44GgLOOBj+OBq+OBguOBjQ0KK+OBhOOBl+OBjOOBjSzjgYjjgorjgZMNCivjgYTjgZfjgYzjgb8s44GY44KF44KT44GE44GhDQor44GL44GY44Gf44GrLOOBiuOBleOCgA0KK+OBhOOBl+OBr+OCiSzjgbLjgo3jgobjgY0NCivjgYTjgZfjgoDjgoks44G+44GV44Gy44GTDQor44GE44GX44KE44G+LOOBl+OCheOBhuOBhOOBoQ0KK+OBhOOBl+OBluOBjSzjga7jgbbjgYoNCivjgYTjgZ3jgbks44KI44GX44Gy44GTDQor44GE44Gd44GW44GNLOOBvuOBleOBguOBjQ0KK+OBhOOBqOOBhizjgaHjgY/jgZUNCivjgYTjgajjgYYs44Gy44GV44GoDQor44GE44KP44GC44GVLOOBkeOCk+OBn+OCjeOBhg0KK+OBhOOCj+OBhCzjgarjgYrjgZ/jgYsNCivjgYTjgo/jgb4s44GV44Go44GXDQor44GE44KP44KC44GoLOOCiOOBhuOBhOOBoQ0KK+OBhOOCj+OBquOBjCzjgbLjgo3jga7jgooNCivjgYTjgo/jgZfjgZ8s44GX44GTDQor44GE44KP44GfLOOBi+OBmuOBvuOBlQ0KK+OBhOOCj+OBnyzjgYjjgYTjgZgNCivjgYvjganjgo/jgY0s44GV44Go44GXDQor44GL44GS44KE44G+LOOBkeOCk+OBhOOBoQ0KK+OCj+OBn+OBquOBuSzjgYTjgZrjgb8NCivjgYvjgb/jgoQs44GP44Gr44GC44GNDQor44GL44G/44KELOOBkeOCk+OBhOOBoQ0KK+OBi+OCk+OBsOOChOOBlyzjgY3jgpPjgZgNCivjgYvjga7jgYYs44Gy44KN44GXDQor44GL44KK44KELOOBquOCiuOChOOBmQ0KK+OBi+OBleOBjSzjgZjjgoXjgpMNCivjgYvjgZfjgb4s44G+44GV44GKDQor44GL44GZ44KELOOBguOBjeOCiQ0KK+OBi+OBqOOBhizjgZ/jgYvjgY0NCivjgYvjgajjgYYs44GL44Ga44Gy44KNDQor44GL44Go44GGLOOBkeOCk+OBmA0KK+OBi+OBqOOBhizjgb/jgaTjgZANCivjgYvjgajjgYYs44Gy44Gn44Gu44KKDQor44GL44Go44GGLOOBsuOCjeOChuOBjQ0KK+OBi+OCj+OBsOOBnyzjgaDjgYQNCivjgYvjgo/jgbDjgZ8s44GC44Gk44GXDQor44GL44KP44GQ44GhLOOBsuOBp+OBv+OBoQ0KK+OBi+OCj+OBr+OCiSzjgbLjgo3jgb8NCivjgYvjgo/jga/jgoks44GL44Ga44G144G/DQor44GL44KP44GY44KKLOOBv+OBoeOBig0KK+OBi+OCj+OBi+OBvyzjgabjgaTjgYoNCivjgYvjgo/jgY/jgbws44GL44Ga44Go44GXDQor44GL44KP44G+44GfLOOBn+OBi+OBruOBtg0KK+OBi+OCj+OCgOOCiSzjgbLjgajjgZcNCivjgYvjgo/jga4s44Gu44KK44GC44GNDQor44GL44KP44GV44GNLOOBvuOBleOBsuOBqA0KK+OBi+OCj+OBl+OBvizjgajjgZfjgbLjgZUNCivjgYvjgo/jgZos44G+44GV44Gu44KKDQor44GN44Gw44GXLOOBsuOBp+OBsuOBkw0KK+OBjeOBvuOBoSzjgb7jgZXjgY0NCivjgY3jgoLjgags44Gf44GR44GXDQor44GN44KA44KJLOOBn+OBj+OChA0KK+OBjeOCk+OBsOOCiSzjgojjgZfjgb/jgaENCivjgY3jga7jgZfjgZ8s44KE44GZ44GXDQor44GN44Gu44GX44GfLOOBsuOCjeOBjQ0KK+OBjeOCiuOBleOCjyzjgYTjgaHjgo3jgYYNCivjgZPjgbDjgoTjgZcs44GY44KF44KT44GE44GhDQor44GT44Gw44KE44GXLOOBsuOCjeOBguOBjQ0KK+OBk+OBsOOChOOBlyzjgb7jgZXjgYoNCivjgZPjgbDjgoTjgZcs44G144GY44Gy44GTDQor44GT44Gg44G+LOOBk+OBhuOBmA0KK+OBk+OBoOOBvizjgYrjgZXjgoANCivjgZ/jgYvjgoDjgoks44KC44Go44Gy44GTDQor44GT44Gy44Gq44GfLOOChuOBhuOBmeOBkQ0KK+OBk+OCk+OBrizjgbLjgo3jgZcNCivjgZPjgpPjga4s44Gf44GL44Gy44KNDQor44GT44KE44G+LOOBk+OBhuOBmA0KK+OBk+OBmuOBjSzjgajjgZfjgYoNCivjgajjgYbjganjgYYs44GT44GG44GYDQor44GT44GY44G+LOOBl+OCk+OBmA0KK+OBk+OCk+OBqSzjgYLjgY3jgokNCivjgZPjgpPjgaks44Gf44GL44GXDQor44GT44KT44GpLOOBvuOBleOBqOOBlw0KK+OBk+OCk+OBrizjgYvjgYrjgosNCivjgZPjgZ/jgY0s44Gy44Go44GXDQor44GT44KE44GE44GXLOOBv+OBiw0KK+OBk+OChOOBquOBjizjga7jgbzjgosNCivjgY/jgbws44GR44KT44Gf44KN44GGDQor44GP44Gp44GGLOOBjeOBv+OBsuOBqA0KK+OBj+OBvuOBjOOBhCzjgarjgYrjgobjgY0NCivjgY/jgb7jgY0s44GX44KT44GYDQor44GP44KJ44GhLOOBn+OBi+OChuOBjQ0KK+OBj+OCieOBnyzjgZPjgZnjgZENCivjgY/jgorjgZ8s44G/44GNDQor44GP44KK44KE44G+LOOBl+OCheOCk+OBmA0KK+OBj+OCjeOBoCzjgZPjgZnjgZENCivjgY/jgo3jgYvjgY4s44G+44GV44Gu44G2DQor44GP44KN44GV44KPLOOBl+OCk+OBmA0KK+OBj+OCjeOBleOCjyzjgZvjgYTjgY0NCivjgY/jgo/jga4s44Gy44KN44Gf44GLDQor44G+44GI44Gw44GXLOOBqOOBl+OBguOBjQ0KK+OBvuOBiOOBluOCjyzjga7jgbbjgobjgY0NCivjgb7jga4s44KI44GX44GKDQor44G+44KL44KP44GLLOOBsuOBp+OBquOBig0KK+OBhuOBoeOChOOBvizjgZ/jgaTjgYoNCivjgb7jgZnjgaAs44GY44KF44KTDQor44G+44Gk44GELOOBl+OBkuOBjQ0KK+OBvuOBpOOBhCzjgZXjgajjgZcNCivjgb7jgaTjgoLjgags44GX44KT44GE44GhDQor44G+44Gk44KC44GoLOOBsuOBleOBqA0KK+OBvuOBpOOBquOBjCzjgb7jgZXjgajjgZcNCivjgb7jgaTjgZfjgb4s44KC44KK44Gy44KNDQor44G+44Gk44GX44GfLOOBn+OBoOOBlw0KK+OBvuOBpOOBluOBjSzjgZ/jgZHjgZcNCivjgYTjgarjgYTjgZcs44KI44GX44GKDQor44G/44GL44G/LOOBkeOBhOOBhOOBoQ0KK+OBv+OBquOBjizjgYLjgY3jgb/jgaQNCivjgb/jgaTjgoTjgb4s44GT44GG44GE44Gh44KN44GGDQor44G/44GG44KJLOOBl+OBkuOBjQ0KK+OBv+OChOOBkSzjgYLjgaTjgZcNCivjgb/jgoTjgoLjgags44GC44Gk44GTDQor44G/44KE44GfLOOBk+OBhuOBmA0KK+OBv+OChOOBhuOBoSzjgb7jgZXjgY0NCivjgb/jgoTjgYbjgaEs44GE44Gh44KN44GGDQor44G/44KE44GW44KPLOOBguOBjeOCiQ0KK+OBv+OChOOBluOCjyzjgZ/jgYvjgZcNCivjgb/jgojjgaAs44Gf44GL44Gy44GVDQor44G/44Ge44G244GhLOOBkeOCk+OBmA0KK+OBv+OBnuOBnyzjgZ/jgZHjgYoNCivjgaHjgbAs44Gy44KN44Gy44GVDQor44G/44Ga44Gv44GXLOOBvuOBk+OBqA0KK+OBv+OBmuOBvuOBoSzjgZvjgYTjgZgNCivjgb/jgZrjgZ/jgass44GV44Go44GXDQor44G/44Ga44Gf44GrLOOBpOOCiOOBlw0KK+OBv+OBmuOBn+OBqyzjgbLjgo3jgobjgY0NCivjgoLjgaHjgZrjgY0s44G/44Gu44KLDQor44KC44KK44KC44GoLOOBquOBquOBkw0KK+OCguOCiuOBn+OBqyzjgZ/jgYvjgZcNCivjgoLjgorjgZ8s44Go44KI44Gy44GTDQor44KC44KK44GfLOOBn+OBi+OBlw0KK+OCguOCiuOCj+OBjSzjgZfjgpPjgYTjgaHjgo3jgYYNCivjgYrjgY/jgYQs44Gf44GR44Gy44GTDQor44KC44KKLOOBn+OBkeOBvw0KK+OCguOCiizjgZ/jgYvjgobjgY0NCivjgoDjgZPjgoTjgb4s44Gy44KN44KG44GNDQor44KA44KJ44GmLOOBl+OCk+OBhOOBoQ0KK+OCgOOBqOOBhizjgYvjgaTjgY0NCivjgarjgYzjgYQs44G/44Gk44Gy44KNDQor44Gq44GM44GuLOOBv+OBpOOBqOOBlw0KK+OBquOBjOOBiuOBiyzjgZ/jgYvjgbLjgo0NCivjgarjgYzjgZss44GL44Gk44G/DQor44Gq44GM44GfLOOBsuOCjeOChuOBjQ0KK+OBquOBjOOBnyzjgoLjgajjgY0NCivjgarjgYzjgo8s44GX44KT44GE44GhDQor44Gq44GL44G+44KLLOOCiOOBl+OBjQ0KK+OBquOBi+OCgOOCiSzjgYLjgY3jgokNCivjgarjgYvjgoDjgoks44Go44KC44GTDQor44GC44G5LOOCiOOBhuOBhOOBoeOCjeOBhg0KK+OBquOBi+OCgOOCiSzjgajjgZfjgoQNCivjgarjgYvjgoDjgoks44GC44GN44KJDQor44Gq44GL44GX44G+LOOBsuOBleOCiOOBlw0KK+OBquOBi+OBl+OBiizjgbLjgo3jgobjgY0NCivjgarjgYss44Gu44KK44GTDQor44Gq44G/44GNLOOBruOCiuOBi+OBmg0KK+OBquOCk+OBtizjgbLjgo3jgZfjgZINCivjgoTjgb7jgZDjgaEs44GX44KT44GYDQor44Gr44GE44G/LOOBl+OBkuOBteOBvw0KK+OBq+OBl+OBoCzjgbLjgo3jgojjgZcNCivjgavjgZfjgaAs44GI44GE44GYDQor44Gr44GX44GgLOOBvuOBleOBguOBjQ0KK+OBq+OBl+OBoCzjgZnjgZnjgoANCivjgavjgZfjgY/jgbws44GC44GN44Gy44KNDQor44Gr44GX44KA44KJLOOBn+OBi+OBguOBjQ0KK+OBq+OBl+OCgOOCiSzjgaTjgojjgZcNCivjgavjgZfjgYos44G+44GV44GoDQor44Gr44GX44GKLOOBl+OCk+OBmA0KK+OBq+OBl+OChOOBvizjgZ/jgYvjgZcNCivjgoTjgYzjgo8s44GR44GE44GYDQor44Gr44Gj44GfLOOBsuOCjeOBvw0KK+OBruOBueOBiuOBiyzjgYLjgY3jgbsNCivjga7jgZjjgoos44KI44GX44Gu44G2DQor44Gu44KA44KJLOOBpuOBpOOChA0KK+OBruOBquOBiyzjgYvjgaTjgZcNCivjgYrjgbDjgaos44G/44Gu44KLDQor44GK44Gh44GC44GELOOBqOOBl+OChuOBjQ0KK+OBiuOBoeOBv+OBmizjgZ/jgYvjgZcNCivjgYrjgaEs44G/44Gk44Gu44KKDQor44GK44Gg44GK44GK44Gv44KJLOOBl+OCk+OBlA0KK+OBiuOBoCzjgbLjgo3jgYvjgZoNCivjgYrjgYzjgZ8s44G+44GV44GNDQor44GK44GM44KPLOOBvuOBleOBqOOBlw0KK+OBiuOBjOOCjyzjgYjjgaTjgZMNCivjgYrjgZDjgoks44Gq44GK44KG44GNDQor44GK44GK44Gy44KJLOOBruOBtuOChuOBjQ0KK+OBiuOBiuOBsuOCiSzjgYTjgaHjgo3jgYYNCivjgYrjgYrjgYTjgZcs44GC44GN44KJDQor44GK44GK44GE44GXLOOBvuOBk+OBqA0KK+OBiuOBjSzjgYvjgoYNCivjgYrjgYrjgY/jgbws44GL44Ga44GTDQor44GK44GK44GuLOOBkeOBhOOBkw0KK+OBiuOBiuOBrOOBvizjgZfjgZLjga7jgbYNCivjgYrjgYrjgazjgb4s44Gq44KL44GXDQor44GK44GK44Gf44GNLOOBvuOBleOBsuOBpw0KK+OBiuOBiuOBnyzjgajjgYrjgosNCivjgYrjgYrjgZ8s44KI44GX44Gq44GMDQor44GK44GK44GfLOOBk+OBhuOBhOOBoQ0KK+OBiuOBqCzjgb7jgZXjgZrjgb8NCivjgYrjgYrjgaTjgbws44Gy44KN44G144G/DQor44GK44GK44KE44GOLOOBvuOBleOBsuOCjQ0KK+OBiuOBiuOChOOBvizjgYLjgaTjgZcNCivjgYrjgYTjgYgs44GL44Ga44KEDQor44GK44GY44G+LOOBguOBjeOCiQ0KK+OBiuOBi+OBuSzjgYTjgaHjgo3jgYYNCivjgYrjgYvjgaAs44Go44GK44KLDQor44GK44GL44KC44GoLOOBvuOBleOBjQ0KK+OBiuOBi+OBrSzjgZ/jgYvjgZcNCivjgYrjgYvjga4s44Gy44Gn44GKDQor44GK44GL44GuLOOBvuOBleOBkw0KK+OBiuOBi+OBluOBjSzjga/jgovjgbLjgZMNCivjgo/jgZ/jgarjgbks44G+44GV44Go44GXDQor44GK44GP44GgLOOBguOBpOOBsuOCjQ0KK+OBiuOBj+OBrizjgYvjgaTjgZcNCivjgYrjgarjgoQs44GL44Ga44GTDQor44GK44GuLOOBjeOCiOOBlw0KK+OBiuOBrizjgZfjgpPjgoQNCivjgYrjgYrjga4s44KG44Gf44GLDQor44GK44GV44Gq44GELOOBjeOCiOOBguOBjQ0KK+OBiuOBluOBjSzjgbLjgafjgYoNCivjgZXjgYTjgajjgYYs44KI44GX44G/DQor44GV44GE44Go44GGLOOBmOOCheOCkw0KK+OBleOBmCzjgoTjgZnjgbLjgacNCivjgZXjgZgs44GL44Ga44GKDQor44GV44GL44GELOOBi+OBmuOBsuOBkw0KK+OBleOBi+OBhCzjgajjgoLjgZnjgZENCivjgZXjgYvjgY/jgoks44Gf44GL44Gy44KNDQor44GV44GL44GG44GILOOChOOBmeOChuOBjQ0KK+OBleOBleOBuSzjgb7jgZPjgagNCivjgZXjgZXjgY0s44Gy44Gn44GL44GaDQor44Gq44G/44GNLOOBsuOCjeOBlw0KK+OBleOBn+OBkSzjgYvjgaTjgbLjgo0NCivjgZXjgZ/jgZEs44KP44GNDQor44GV44Go44GGLOOBl+OCheOBhuOBhOOBoQ0KK+OBleOBqOOBhizjgZ/jgZHjgZcNCivjgZXjgajjgYYs44Gq44GK44GNDQor44GV44Go44GGLOOChuOBhuOBnuOBhg0KK+OBleOBqOOBhizjgZfjgZLjgY0NCivjgZXjgajjgYYs44Gy44KN44GXDQor44GV44KP44GgLOOBr+OBmOOCgQ0KK+OBm+OBjeOBkOOBoSzjgbLjgo3jgYLjgY0NCivjgZvjgY3jgoLjgags44Go44GX44KG44GNDQor44Gb44GN44GtLOOBjeOBhOOBoQ0KK+OBm+OBjeOBiuOBiyzjgb7jgoLjgosNCivjgZvjgY3jgoQs44Gy44KN44GC44GNDQor44Gb44GNLOOBmOOCheOCk+OBhOOBoeOCjQ0KK+OBm+OCk+OBnyzjga7jgorjgYLjgY0NCivjgZfjgbDjgZ8s44GV44Go44GXDQor44GX44GE44GqLOOBteOBv+OBr+OCiw0KK+OBl+OBhOOChCzjgbLjgafjgY0NCivjgZfjgb7jgbDjgoTjgZcs44G+44KC44KLDQor44GX44G+44GgLOOBl+OCk+OBhOOBoeOCjeOBhg0KK+OBl+OBvuOBoCzjgb/jgaHjgajjgZcNCivjgZfjgb7jgoDjgoks44GC44GN44Gy44GoDQor44GX44G/44GaLOOBsuOBp+OBqOOBlw0KK+OBl+OBv+OBmizjgYTjgZ/jgosNCivjgZfjgoLjgoDjgoks44GL44Gk44GC44GNDQor44GX44Gu44GgLOOBk+OBhuOBmA0KK+OBl+OBruOBr+OCiSzjgoLjgajjgobjgY0NCivjgZfjgYrjgZbjgo8s44Gu44G244KG44GNDQor44GX44KJ44GE44GXLOOChuOBhuOBmA0KK+OBl+OCieOBleOBjSzjgojjgYbjgZMNCivjgZfjgonjgajjgoos44Gy44Gn44GYDQor44GX44GV44GELOOBvuOBleOBsuOCjQ0KK+OBl+OCh+OBhuOBoCzjgZHjgYTjgZnjgZENCivjgZ3jgYYs44Gq44GK44GNDQor44Gd44Gu44G5LOOBqOOBiuOCiw0KK+OBmeOBqeOBhizjgZfjgoXjgpPjgYTjgaENCivjgZnjganjgYYs44GV44Go44GTDQor44GZ44GO44GG44KJLOOBquOBiuOBjQ0KK+OBmeOBjuOChOOBvizjgorjgofjgYbjgYTjgaENCivjgZnjgY7jgoTjgb4s44Go44KC44GYDQor44GZ44G/44GgLOOBsuOCjeOBjQ0KK+OBmeOBv+OBi+OCjyzjgbLjgajjgZcNCivjgZnjgZrjgY0s44G/44Gt44GL44GaDQor44GZ44Ga44GNLOOBsuOCjeOBlw0KK+OBmeOBmuOBjSzjgYLjgaTjgZcNCivjgZnjgZrjgY0s44Go44GX44Gq44KKDQor44GZ44Ga44GNLOOCiOOBl+OChuOBjQ0KK+OBmeOBmuOBjSzjgoTjgZnjgZ4NCivjgZnjgZrjgY0s44Gv44GY44KBDQor44GZ44Ga44GNLOOBi+OBmuOBguOBjQ0KK+OBu+OBneOBi+OCjyzjgobjgooNCivjgZ/jgbbjgZcs44GE44GP44GfDQor44Gf44Gh44GW44KPLOOBruOCiuOBteOBvw0KK+OBn+OBoCzjgZ/jgYvjgYLjgY0NCivjgZ/jgaAs44Gy44KN44Go44GXDQor44Gf44GL44GfLOOChuOBhuOBmeOBkQ0KK+OBn+OBi+OBjOOBjSzjgbLjgafjgYvjgZoNCivjgoTjgb7jgZbjgY0s44Gq44GK44GNDQor44Gf44GL44Gv44GXLOOCiOOBl+OBpOOBkA0KK+OBn+OBi+OBr+OBlyzjgbLjgo3jgY0NCivjgZ/jgYvjga/jgZcs44G+44GV44KE44GZDQor44Gf44GL44GuLOOBn+OBi+OBsuOCjQ0KK+OBn+OBi+OBleOBjSzjgZ/jgYvjgZcNCivjgZ/jgYvjgZks44GL44Ga44KIDQor44Gf44GL44Go44KKLOOBk+OBhuOBmA0KK+OBn+OBi+OChOOBvizjgb7jgZXjgb8NCivjgZ/jgYvjgoTjgb4s44GX44GS44KLDQor44Gf44GL44KE44G+LOOChuOBhuOBmA0KK+OBn+OBi+OChCzjgojjgZfjgYvjgZoNCivjgZ/jgZHjgaAs44Gf44GI44GTDQor44Gf44GR44GgLOOBsuOCjeOChuOBjQ0KK+OBvuOBpOOBiuOBiyzjgojjgZfjgbLjgo0NCivjgZ/jgZHjgYQs44Gu44G244Gy44GTDQor44Gf44GR44GG44GhLOOBqOOCguOBiuOBjQ0KK+OBn+OBkeOBhuOBoSzjga7jgorjgajjgZcNCivjgZ/jgZEs44GR44GE44GTDQor44Gf44GN44G/44KELOOBqOOCguOBsuOCjQ0KK+OBn+OBvuOBn+OBqyzjgYvjgZrjgYLjgY0NCivjgZ/jgoDjgoks44KI44GX44Gy44KNDQor44Gf44KA44KJLOOBkeOCk+OBmA0KK+OBn+OBquOBiyzjgYvjgZrjgbLjgZUNCivjgZ/jgarjgYss44Go44KC44KE44GZDQor44Gf44Gq44GLLOOBguOChOOBkw0KK+OBn+OBquOBiyzjga7jgorjgbLjgo0NCivjgZ/jgavjgoLjgags44GX44KT44GE44GhDQor44Gf44Gr44KE44G+LOOBguOBjeOBsuOBkw0KK+OBn+OCk+OBrizjgYrjgZXjgoANCivjgZ/jga4s44Gy44GV44GKDQor44Gm44KJ44GW44KPLOOBguOBjeOCiQ0KK+OBqOOBj+OBl+OBkizjgZXjgajjgosNCivjgZTjgajjgYYs44Gq44GK44GNDQor44Go44G/44Gq44GMLOOBsuOCjeOBsuOBlQ0KK+OBqOOCk+OBl+OCh+OBhizjgbLjgafjgobjgY0NCivjgaTjgbzjgYQs44GX44KH44GG44GE44GhDQor44Gk44G844GfLOOBl+OCh+OBhuOBmA0KK+OBpOOBmOOCgOOCiSzjgarjgYrjgY0NCivjgb7jgaTjgoDjgoks44GC44GN44KJDQor44Gk44GL44GgLOOBsuOBp+OBjQ0KK+OBpOOBreOCiOOBlyzjgZXjgajjgb8NCivjgaTjgovjgYrjgYss44G+44GV44KEDQor44Gk44KLLOOCiOOBl+OBig0KK+OBhuOBoeOBoCzjgbLjgafjgobjgY0NCivjgYbjgYjjgaAs44Gf44KC44GkDQor44GG44KB44GV44GNLOOBjeOCiOOBlw0KK+OBhuOCieOBi+OCjyzjgobjgYbjgZgNCivjgYbjgonjgYvjgo8s44GL44Ga44GXDQor44KP44GgLOOBmOOCheOCkw0KK+OCj+OBi+OBsOOChOOBlyzjgZHjgpPjgZgNCivjgo/jgYvjgb7jgaQs44KI44GX44GL44GaDQor44KP44Gf44Gq44G5LOOBguOBpOOBkw0KK+OCj+OBn+OBquOBuSzjgZ/jgYvjgZcNCivjgo/jgZ/jgoos44GT44GG44GYDQor44KE44G5LOOBk+OBhuOBhOOBoQ0KK+OChOOBr+OBjizjgZfjgpPjgZgNCivjgoTjgb7jgaAs44GL44Ga44Gy44KNDQor44KE44G+44GgLOOBi+OBmuOBsuOCjQ0KK+OChOOBvuOBk+OBlyzjgb7jgZXjgobjgY0NCivjgoTjgb7jgoLjgags44Gd44GG44GE44GhDQor44KE44G+44KC44GoLOOBguOBpOOBlw0KK+OChOOBvuOCguOBqCzjgojjgYbjgYTjgaENCivjgoTjgb7jgoLjgags44GV44GhDQor44KE44G+44KC44GoLOOBvuOBleOBvw0KK+OChOOBvuOBhuOBoSzjgajjgYrjgosNCivjgoTjgb7jga4s44Gy44KN44G144G/DQor44KE44G+44GK44GLLOOBqOOCguOBn+OBiw0KK+OChOOBvuOBl+OBnyzjgajjgZfjgbLjgacNCivjgoTjgb7jgYbjgaEs44Gf44GR44GXDQor44KE44G+44GW44GNLOOBsuOCjeOBvuOBlQ0KK+OChOOBvuOBluOBjSzjgobjgYvjgooNCivjgoTjgarjgY7jgZfjgb4s44G+44GZ44G/DQor44KE44G+44KC44GoLOOBv+OBi+OBkw0KK+OChOOBrizjgZ/jgYvjgbLjgZMNCivjgoTjgZbjgY0s44Gf44GR44GXDQor44KI44GULOOChOOBmeOBr+OCiw0KK+OCiOOBk+OBhCzjgYvjgaTjgb7jgZUNCivjgojjgZPjgb/jgZ4s44Go44GX44GNDQor44KI44GT44GfLOOChuOBhuOBmA0KK+OCiOOBk+OBnyzjgbLjgZXjgYoNCivjgojjgZPjgZ8s44KG44GG44GTDQor44KI44GX44GgLOOBl+OCk+OBhOOBoeOCjeOBhg0KK+OCiOOBl+OBoCzjgb7jgaHjgZMNCivjgojjgZfjgbXjgZUs44GE44GP44G144G/DQor44KI44GX44Gv44KJLOOBqOOCguOBvuOBlQ0KK+OCiOOBl+OBhOOBiCzjga/jgZjjgoENCivjgojjgZfjgYvjgo8s44Gh44GIDQor44KI44GX44GL44KPLOOBv+OBpOOBsuOCjQ0KK+OCiOOBl+OBiizjgobjgYbjgZgNCivjgobjgYLjgZUs44G+44GV44KI44GXDQor44KG44GNLOOBguOBjeOCiQ0KK+OBguOBoOOBoSzjgajjgZfjgobjgY0NCivjgYrjgYrjgavjgZcs44GL44Ga44GKDQor44GK44GK44GfLOOBv+OCj+OBkw0KK+OBguOBleOBrizjgb/jgaHjgZMNCivjgavjgZfjgoDjgoks44G/44Gk44KI44GXDQor44KE44G+44GgLOOBsuOCjeOBruOCig0KK+OBleOBhCzjgY/jgavjgYoNCivjgb/jgoTjgoLjgags44GL44Ga44GKDQor44GZ44Ga44GNLOOBi+OBmuOBsuOBkw0KK+OBteOBj+OBhCzjgY/jgavjgoQNCivjgYrjgY/jgaAs44Gy44GV44GTDQor44GV44GE44Go44GGLOOBn+OBi+OBig0KK+OBteOCi+OChCzjgYvjgaTjgb8NCivjgoLjgajjgoTjgb4s44Gq44GK44Gy44KNDQor44KI44GX44GW44GNLOOChuOBhuOBhOOBoQ0KK+OBquOBi+OCgOOCiSzjgYLjgaTjgo3jgYYNCivjgajjgY3jgo8s44GX44KF44GG44GE44GhDQor44GE44Gq44GgLOOBvuOBleOBpOOBqg0KK+OBqOOBjeOCjyzjga7jgorjgobjgY0NCivjgojjgZfjgaAs44Gf44GL44KG44GNDQor44Gf44GL44GuLOOBkeOBhOOBkw0KK+OBhuOBiOOBoCzjgajjgoLjgZMNCivjgaTjgaHjgoQs44KG44GG44GTDQor44GX44KC44GL44KPLOOBteOBv+OBsuOBkw0KK+OBvuOBpOOBhCzjgYvjgaTjgb8NCivjgZnjgYzjgoQs44KI44GX44GKDQor44G/44Gu44GQ44GhLOOChOOBmeOBkw0KK+OBhuOBiOOBoCzjgbLjgYvjgosNCivjgYTjga4s44Go44KC44GYDQor44G+44GI44GgLOOBvuOBk+OBqA0KK+OBpOOBvOOBnyzjga7jgorjgYoNCivjgojjgZfjgb8s44GE44GP44GKDQor44GE44Gh44GL44KPLOOBl+OBkuOBsuOCjQ0KK+OBu+OCiizjgbLjgafjgoQNCivjga/jgoTjgZcs44KG44Gf44GLDQor44GX44Gw44GfLOOBhOOBj+OBkw0KK+OBk+OBsOOChOOBlyzjgb7jgZnjgbLjgZMNCivjgYrjgYrjgY/jgbws44Gf44GR44GXDQor44GE44KP44GfLOOBruOBtuOChuOBjQ0KK+OBteOBmOOBnyzjgb7jgZXjgbLjgo0NCivjgY3jgZ/jgoDjgoks44GL44Ga44GKDQor44GP44KN44GNLOOBkeOBhOOBkw0KK+OChOOBvuOCguOBqCzjgZ/jgYvjgZcNCivjgoTjgb7jgbDjgZ8s44KG44GN44GTDQor44GV44GE44Go44GGLOOBl+OCheOBhuOBhOOBoQ0KK+OBteOBmOOCj+OCiSzjgZ/jgaDjgZcNCivjgYTjgajjgYYs44GL44Ga44GoDQor44GE44GE44GRLOOBqOOBiuOCiw0KK+OBleOCgOOBi+OCjyzjgYLjgY3jga7jgooNCivjgYLjgZrjgb4s44G+44GV44GNDQor44GC44GK44GNLOOBguOBpOOBlw0KK+OBteOBmOOBnyzjgaTjga3jgYoNCivjgb/jgojjgZcs44Go44GX44GL44GaDQor44Gb44GN44KE44G+LOOCiOOBl+OBig0KK+OBpuOCieOBoCzjgabjgovjgbLjgZUNCivjgYjjgpPjgaks44Gf44GR44GXDQor44GL44GN44KC44GoLOOBkeOCk+OBmOOCjeOBhg0KK+OBteOCi+OChCzjgYTjgo/jgYoNCivjgb7jgY3jgoDjgoks44Gf44GR44GKDQor44GT44KT44GuLOOBsuOCjeOBlw0KK+OBmeOBjuOBleOBjSzjgajjgZfjgobjgY0NCivjgojjgZfjgaAs44GX44GS44GKDQor44Gv44GO44KP44KJLOOBsuOCjeOBlw0KK+OChOOBluOBjSzjgobjgYbjgZgNCivjgavjga7jgb/jgoQs44GL44Ga44GKDQor44GT44GV44GLLOOBsuOCjeOChOOBmQ0KK+OBleOBrizjgZfjgpPjgZQNCivjgZXjgYTjgajjgYYs44Gg44GE44GZ44GRDQor44GX44KC44GbLOOBn+OBi+OCiOOBlw0KK+OBn+OBi+OBr+OBlyzjgYvjgZrjgbLjgagNCivjgZ/jgaTjgYrjgYss44G+44GV44GNDQor44Gf44Gw44GfLOOCiOOBl+OBn+OBiw0KK+OBquOBiuOBhCzjgb7jgZXjgZMNCivjgarjgYzjgZ8s44G+44GV44GKDQor44Gr44GX44GK44GLLOOBl+OBkuOCiw0KK+OBvuOBpOOBi+OCjyzjgYLjgaTjgZcNCivjgb/jgZrjga4s44KG44GG44GTDQor44Go44GP44Gq44GMLOOBkeOBhOOBkw0KK+OCgOOCieOBi+OBvyzjgbLjgo3jgY0NCivjgoTjgZnjgYvjgo8s44Go44GX44Gu44KKDQor44KE44G+44GQ44GhLOOChuOBjeOBig0KK+OCiOOBk+OBhuOBiCzjgZ/jgaDjgZcNCivjgYLjgZrjgb4s44Gu44G844KLDQor44GE44Gq44GgLOOBv+OBpOOChuOBjQ0KK+OBhOOBl+OBhCzjga7jgbzjgosNCivjgYTjgb7jgavjgZcs44Gf44GR44GKDQor44GK44GL44GuLOOBi+OBreOBv+OBpA0KK+OBjeOBlyzjgajjgZfjgZMNCivjgY/jgbzjgZ8s44G+44GV44Gu44KKDQor44GT44G/44Gq44G/LOOBvuOChuOBvw0KK+OBguOBhOOChOOBvizjgZfjgofjgYbjgZjjgo3jgYYNCivjgZXjga4s44Gh44GL44KJDQor44Gf44GN44GM44KPLOOBl+OBkuOCiOOBlw0KK+OBk+OCk+OBrizjgbLjgo3jgoTjgZkNCivjgZvjgpPjgaDjgYQs44Gf44GL44GXDQor44Gr44KP44GuLOOBsuOBp+OBmeOBkQ0KK+OBlyzjgarjgYrjgojjgZcNCivjgYvjgajjgYYs44GL44Ga44Gq44KKDQor44GC44GL44GV44GLLOOBj+OBq+OBig0KK+OBiuOCk+OBmuOBiyzjgbLjgo3jgZcNCivjgZPjgYws44GT44GG44GE44GhDQor44Gv44KE44GL44KPLOOBqOOCguOBvw0KK+OBr+OBm+OBjOOCjyzjgb7jgZXjgojjgZcNCivjgbXjgovjgYvjgo8s44Gf44GR44GXDQor44G144GY44GL44GpLOOChuOBhuOBmA0KK+OBqOOBruOBi+OCjyzjgZ/jgZHjgZcNCivjgb7jgaTjgYos44KI44GX44GKDQor44GN44G/44Ga44GLLOOBvuOBleOBruOCig0KK+OBiuOBoSzjgb7jgZPjgagNCivjgYTjgaHjgZPjga/jgoks44G+44GV44KE44GZDQor44GE44GR44GgLOOBguOBjeOBkw0KK+OBguOCieOBn+OBkSzjgYTjgY/jgYoNCivjgYTjgZHjgaAs44Go44GN44GKDQor44GE44Go44GGLOOCiOOBhuOBhOOBoQ0KK+OBhOOBkeOBoCzjgYjjgaQNCivjgYTjgYTjgaAs44G+44GV44GoDQor44GK44GK44GP44G+LOOBi+OBmuOBiA0KK+OBj+OBleOBsCzjgb7jgZXjgY0NCivjgZPjgbDjgoTjgZcs44GV44KI44GTDQor44GU44Go44GGLOOBi+OBmuOChA0KK+OBmeOBmuOBjSzjgoLjgajjga7jgooNCivjgZvjgY3jga0s44Gy44KN44GXDQor44Gf44GL44GgLOOBqOOBl+OChuOBjQ0KK+OBk+OCk+OBqSzjgojjgYbjgZnjgZENCivjgZ/jgZHjgoTjgb4s44GR44GE44GX44KN44GGDQor44Gf44GL44GE44GhLOOBiuOBleOCgA0KK+OBneOBoCzjgZHjgpPjgZgNCivjgZ/jga4s44G+44GT44GoDQor44GX44Gu44GW44GNLOOBleOBqOOBlw0KK+OBr+OCieOBoCzjgYLjgoQNCivjgY/jganjgYYs44GL44Gk44GTDQor44Gk44Gu44GgLOOBquOBiuOBkw0KK+OBteOCi+OBi+OCjyzjgajjgZfjgYLjgY0NCivjgoLjgorjgZ8s44G+44GV44KG44GNDQor44KE44G+44KC44GoLOOBqOOBiuOCiw0KK+OChOOBvuOBl+OBnyzjgojjgZfjga/jgosNCivjgobjgYvjgo8s44KI44GX44GKDQor44KI44GX44GgLOOBiOOBhOOBkw0KK+OBr+OChOOBlyzjgajjgZfjgZ/jgYsNCivjgZ/jgpPjga4s44GI44GE44GE44GhDQor44Gf44GL44Gv44GXLOOBvuOBk+OBqA0KK+OBquOCiuOBguOBhCzjgojjgZfjga7jgooNCivjgZ/jgYvjgoDjgoks44GC44GN44GKDQor44Gf44KT44GuLOOBpuOBpOOBig0KK+OBk+OBsOOChOOBlyzjgZPjgYbjgYTjgaENCivjgZTjgajjgYYs44Go44GK44KLDQor44GU44GG44GgLOOBjeOCh+OBhuOBkw0KK+OBquOBi+OBl+OBvizjgb/jgaTjgYoNCivjgbvjgZfjga4s44G144G/44Gf44GgDQor44KP44GTLOOBquOBiuOBjQ0KK+OBmeOBmuOBjSzjgZfjgZLjgYoNCivjgojjgZfjgb7jgaQs44G+44GV44GP44GrDQor44Gq44G/44GK44GLLOOBl+OCk+OBmA0KK+OChOOBvuOBkOOBoSzjgbLjgo3jgYvjgZoNCivjgYTjgZfjgbDjgZcs44G+44GT44GoDQor44GE44GX44GgLOOBm+OCk+OChA0KK+OBhuOBoeOChOOBvizjgZvjgYTjgZgNCivjgYjjgpPjgaks44GX44GS44KLDQor44Gq44GL44GuLOOBvuOBleOBteOBvw0KK+OBhOOBvuOBhCzjgYvjgZrjgYoNCivjgYrjgZXjgarjgYQs44GC44Gk44GXDQor44GV44GL44KC44GoLOOBjeOCiOOBlw0KK+OBl+OBiuOBvyzjgaHjgYvjgZcNCivjgZfjgb7jgZbjgY0s44Gq44GK44GNDQor44Gm44KL44KELOOBqOOBl+OChA0KK+OBquOBi+OBn+OBqyzjgarjgYrjgY0NCivjga/jgY7jgo/jgoks44GN44KI44GL44GaDQor44Gy44GM44GXLOOBl+OCh+OBhuOBkw0KK+OBu+OCiuOBhuOBoSzjgojjgZfjgYoNCivjgb/jgZ7jgo3jgY4s44Gq44GK44GNDQor44KC44KKLOOBn+OCguOBpA0KK+OBhOOBruOBhuOBiCzjgZ/jgZHjgbLjgZMNCivjgZfjgaAs44G/44Gh44KIDQor44KE44G+44KC44GoLOOBv+OBoeOBkw0KK+OChOOBvuOCguOBqCzjgbLjgafjgYLjgY0NCivjgYrjgYrjgZ/jgY0s44GL44Ga44KEDQor44G144GYLOOBleOBquOBiA0KK+OBguOBjeOCguOBqCzjgb7jgoLjgosNCivjgYTjgYTjgZjjgb4s44GC44GN44GTDQor44GK44GQ44G+LOOChuOBv+OBkw0KK+OBleOBqOOBhizjgZ/jgYvjgYoNCivjgaTjgaHjgoQs44KI44GX44Gy44KNDQor44GV44GE44Go44GGLOOBi+OBmuOCiOOBlw0KK+OBr+OCiSzjgZvjgYTjgYTjgaHjgo3jgYYNCivjgbXjgZjjgb7jgY0s44GX44KT44KEDQor44KA44KN44GfLOOBv+OBpOOBvuOBlQ0KK+OCguOCiizjgajjgYrjgosNCivjgb/jgZ7jgZDjgaEs44Go44GX44KG44GNDQor44GE44GR44Gv44GfLOOBsuOCjeOChuOBjQ0KK+OBiuOBjOOCjyzjgbLjgo3jgZ/jgYsNCivjgYbjgYjjga4s44G+44GV44Go44GXDQor44Gf44Gq44GLLOOBi+OBmuOBsuOCjQ0KK+OBk+OBsOOChOOBlyzjgb7jgZXjgYvjgZoNCivjgY/jgo3jgZks44KE44GZ44GYDQor44GN44Gf44GM44KPLOOBsuOCjeOBlw0KK+OBl+OBruOBvyzjgb7jgZXjgobjgY0NCivjga/jgZss44KG44GG44Ge44GGDQor44Gm44KL44Gs44G+LOOCiOOBhuOBkw0KK+OBjeOBj+OBoSzjgZXjgajjgZcNCivjga/jgZfjgoLjgags44Gu44KK44KG44GNDQor44GK44GK44GL44KPLOOBl+OCk+OBqA0KK+OBiuOBiuOBq+OBlyzjgZ3jgYbjgYTjgaENCivjgYLjgbks44G+44GV44Gy44GoDQor44GC44Gg44GhLOOBsuOBp+OBjQ0KK+OBguOBoOOBoSzjgb7jgZXjgagNCivjgYLjgaDjgaEs44Go44GX44KG44GNDQor44GC44GULOOBi+OBiuOCig0KK+OBguOBhOOBr+OCiSzjgYLjgY3jgbLjgZMNCivjgYLjgYTjga/jgoks44Gy44Gn44GKDQor44GC44GE44GW44KPLOOBmOOCheOCk+OBhOOBoQ0KK+OBguOBi+OBvuOBpCzjgZ/jgaTjgYoNCivjgYLjgYvjgb4s44Go44KC44G/DQor44GC44GL44GbLOOBvuOBleOChuOBjQ0KK+OBguOBi+OChOOBvizjgZfjgpPjgZLjgpMNCivjgbXjgY/jgZfjgb4s44Go44KC44GuDQor44GC44GN44GwLOOBpOOBqOOCgA0KK+OBguOBjeOBrizjga/jgovjgY0NCivjgYLjgY3jgZfjgYss44KG44GG44GYDQor44Gq44KB44GNLOOBquOBiuOBvw0KK+OBguOBjeOBmuOBjSzjgZfjgpPjgYTjgaENCivjgYLjgb7jgaAs44KG44GN44GKDQor44GC44G+44GuLOOBqOOBiuOCiw0KK+OBguOBv+OBrizjga7jgbbjga/jgosNCivjgYLjgpPjgbks44KE44GZ44GXDQor44GC44KT44Gp44GGLOOBsuOCjeOBqOOBlw0KK+OBguOCk+OBluOBhCzjgZ/jgYvjgojjgZcNCivjgYLjgpPjgZbjgYQs44Gy44KN44GXDQor44GC44GK44GNLOOBleOBqOOBlw0KK+OBguOBiuOChOOBjizjgZ/jgYvjgYoNCivjgYLjgYrjgoTjgY4s44Gy44KN44KG44GNDQor44GC44GK44KE44GOLOOBsuOBleOBlw0KK+OBguOCieOBi+OCjyzjgZ/jgYTjgZnjgZENCivjgYLjgonjgYvjgo8s44G+44GV44KG44GNDQor44GC44KJ44GNLOOBqOOBl+OChuOBjQ0KK+OBguOCieOChOOBmSzjgbLjgajjgZcNCivjgYLjgoks44GC44GN44GKDQor44GC44KK44GfLOOBjeOCh+OBhuOBkw0KK+OBguOBleOBoCzjgY/jgavjgYoNCivjgYLjgZXjgaAs44Gy44KN44GC44GNDQor44GC44GV44GL44KPLOOBruOCiuOBiA0KK+OBguOBleOBj+OCiSzjgajjgoLjgobjgY0NCivjgarjgYvjgZXjgags44GC44GN44KJDQor44GC44GV44GuLOOCiOOBl+OBsuOCjQ0KK+OBguOBleOCiizjgYvjgZrjgY0NCivjgYLjgaTjgb8s44GC44GN44KI44GXDQor44GC44KP44GLLOOBi+OBpOOBvw0KK+OBsOOBsCzjgYvjgZrjgbLjgo0NCivjgbDjgpMs44GR44KT44Ge44GGDQor44Gw44KTLOOCj+OBn+OCiw0KK+OBsOOCkyzjgZPjgYbjgZ/jgo3jgYYNCivjgaHjgofjgYbjgZUs44G+44GV44GXDQor44Gg44GE44GpLOOBkeOBhOOBl+OCkw0KK+OBoOOBhOOCguOCkyzjgarjgYrjgbLjgZMNCivjgafjgoDjgoks44KI44GX44GoDQor44Gp44GELOOBn+OBi+OBlw0KK+OBiOOBs+OBrOOBvizjgYLjgZHjgb8NCivjgYjjgZDjgaEs44GY44KF44KTDQor44GI44Gv44KJLOOBi+OBmuOBig0KK+OBiOOBquOBvyzjgarjgaTjgZMNCivjgYjjgajjgYYs44KI44GX44Gq44KLDQor44GE44KP44GV44GNLOOBi+OBmuOBig0KK+OBiOOBluOBjSzjgobjgYbjgZgNCivjgbXjgZjjgYjjgaAs44GY44KF44KTDQor44G144GY44GILOOBk+OBhuOBhOOBoQ0KK+OBteOBmOOBjOOBjSzjgojjgZfjgaHjgYsNCivjgbXjgZjjgYQs44Go44GX44KG44GNDQor44G144GY44GELOOBguOBjeOCiQ0KK+OBteOBmOOBhCzjgZjjgoXjgpPjgYTjgaENCivjgbXjgZjjgYQs44G/44KG44GNDQor44G144GY44GELOOBl+OBkuOBruOCig0KK+OBteOBmOOBi+OCjyzjgZfjgpPjgYTjgaENCivjgbXjgZjjgoLjgoos44Go44KC44GuDQor44G144GY44KC44GoLOOBl+OCh+OBhuOBlA0KK+OBteOBmOOCguOBqCzjgZfjga4NCivjgbXjgZjjga4s44Gf44GL44GXDQor44G144GY44GK44GLLOOChOOBmeOBlw0KK+OBiuOBkOOCiSzjgYLjgoTjgZMNCivjgbXjgZjjgZ8s44G+44GV44GoDQor44G144GY44GfLOOBleOBqOOCiw0KK+OBteOBmOOBnyzjgobjgY3jgYoNCivjgbXjgZjjgZ8s44GX44KH44GG44GYDQor44G144GY44KP44KJLOOBsuOCjeOBlw0KK+OBteOBi+OBoCzjgYLjgaTjgZcNCivjgbXjgYvjgYos44G/44Gk44Gy44KNDQor44G144GL44GKLOOBv+OBleOBjQ0KK+OBteOBi+OBmywNCivjgbXjgY/jgaEs44KI44GX44Gy44KNDQor44G144GP44GgLOOChuOBhuOBkw0KK+OBteOBj+OBoCzjgbXjgb/jgbLjgZMNCivjgb7jgaTjgYvjgo8s44Gy44Gn44GKDQor44G144GP44GgLOOBv+OBiw0KK+OBteOBj+OBoCzjgobjgY3jgZMNCivjgbXjgY/jgaAs44GR44KT44GYDQor44G144GP44Gv44KJLOOChuOBjeOBig0KK+OBteOBj+OBhCzjgbLjgo3jgZcNCivjgbXjgY/jgYQs44GY44KF44KT44GE44GhDQor44G144GP44GK44GLLOOBl+OCk+OBlA0KK+OBl+OBjCzjgarjgYrjgagNCivjgbXjgY/jgZfjgb4s44GC44Gk44GXDQor44G144GP44GX44G+LOOBoeOBi+OBkw0KK+OBteOBj+OBl+OBvizjgarjgYrjgY0NCivjgYrjgYrjga4s44Gq44GK44GNDQor44G144Gq44GkLOOBqOOBl+OChuOBjQ0KK+OBlOOBhuOBoCzjgojjgorjgZMNCivjgZTjgYbjgaAs44Gy44Gn44GC44GNDQor44GU44GGLOOBi+OBhOOCjeOBhg0KK+OBk+OBkOOCjCzjgY3jgpPjgoQNCivjgZTjgajjgYYs44Gf44GL44GXDQor44GU44Go44GGLOOChuOBjeOCiA0KK+OBr+OBjCzjgorjgofjgYbjgYTjgaENCivjga/jgY7jgo/jgoks44GN44GP44GKDQor44Gv44G+44GgLOOBguOBjeOBig0KK+OBvuOBiOOBoCzjgZHjgpPjgYTjgaENCivjga/jgb7jga/jgZ8s44Gu44G844KLDQor44Gv44G+44GuLOOBruOBtuOBsuOCjQ0KK+OBr+OBquOBtuOBlSzjgorjgoXjgYbjgYTjgaHjgo3jgYYNCivjga/jgarjgZ8s44KI44GX44GYDQor44Gv44Gq44G/44GkLOOCiOOBl+OBn+OBiw0KK+OBr+OCk+OBoCzjgZnjgb/jgagNCivjga/jgonjgaAs44GC44KE44GTDQor44Gv44KJ44GgLOOBteOBv+OBig0KK+OBr+OCieOBoCzjgZjjgoXjgpPjgYTjgaENCivjga/jgonjgaAs44G+44GV44Gu44KKDQor44Gv44KJLOOBvuOBleOChuOBjQ0KK+OBr+OCiSzjgb/jgobjgY0NCivjga/jgZvjgYzjgo8s44G+44GT44GoDQor44Gv44GX44GQ44GhLOOBhOOBleOBig0KK+OBr+OBl+OCguOBqCzjgb7jgZXjgajjgZcNCivjga/jgZfjgoLjgags44Gu44KK44GNDQor44Gv44Gf44GR44KE44G+LOOBleOBqOOBlw0KK+OBr+OBn+OBquOBiyzjgY3jgojjgZcNCivjga/jgaTjgZfjgb4s44GR44KTDQor44Gv44Gj44Go44KKLOOCiOOBl+OBsuOBlQ0KK+OBr+OBo+OBqOOCiizjgaTjga3jgbLjgZUNCivjga/jgaPjgajjgoos44G+44GV44GTDQor44Gv44Gj44Go44KKLOOBteOBv+OBig0KK+OBr+OBo+OBqOOCiizjgobjgY3jgbLjgZMNCivjga/jgaPjgajjgoos44KI44GX44Gu44KKDQor44Gv44KE44GL44KPLOOBguOBjeOCiQ0KK+OBr+OChOOBl+OBoCzjgb7jgZXjgoQNCivjgYvjgpPjgaAs44GR44KT44GYDQor44Gv44KE44GXLOOBk+OBhuOBmA0KK+OBr+OChOOBlyzjgaTjgojjgZcNCivjga/jgoTjgZcs44Gy44KN44GXDQor44Gv44KE44GXLOOBi+OBpOOBvw0KK+OBqOOBs+OBi+OCjyzjgb/jgobjgY0NCivjgbLjgZLjgZ8s44KI44GG44GE44GhDQor44Gy44GQ44GhLOOBv+OBpOOBsuOCjQ0KK+OBsuOBkOOBoSzjgobjgYbjgZMNCivjgbLjgZjjgYvjgo8s44KI44GX44Gu44KKDQor44Gy44GL44GELOOBvuOBqeOBiw0KK+OBsuOBquOBnyzjgZjjgoXjgpMNCivjgbLjga4s44GX44KH44GG44GE44GhDQor44Gy44GuLOOBn+OBi+OChuOBjQ0KK+OBsuOCieOBjizjgoTjgZnjgZcNCivjgojjgoLjgaAs44GL44Ga44GoDQor44Gy44KJ44GuLOOBvuOBleOBruOBtg0KK+OBsuOCieOBrizjgbLjgo3jgobjgY0NCivjgbLjgonjgZXjgo8s44GL44Ga44Gy44KNDQor44Gy44KJ44GfLOOBvuOBleOBsuOCjQ0KK+OBguOBleOBrizjgbLjgo3jgZcNCivjgbLjgonjgZ8s44Gy44GV44GKDQor44Gy44KJ44Gk44GLLOOBn+OBkeOBlw0KK+OBsuOCjeOBi+OCjyzjgbXjgb/jgYLjgY0NCivjgbLjgo3jgarjgYss44GL44Ga44Gy44GVDQor44Gy44KN44GbLOOBsuOBleOChuOBjQ0KK+OBn+OBl+OCjSzjgY3jgb/jgZMNCivjgbLjgo3jgZss44G+44GT44GoDQor44Gy44GX44Gs44G+LOOBsuOCjeOBruOBtg0KK+OBhOOCj+OCguOBqCzjgZjjgoXjgpMNCivjgbLjgYbjgoks44Gy44Go44GXDQor44GZ44GO44KC44GoLOOBm+OBhOOBhOOBoQ0KK+OBu+OCk+OBvizjgoTjgZnjgobjgY0NCivjgbvjgpPjgb4s44Gk44KI44GXDQor44G744KT44G+LOOBn+OBhOOCiQ0KK+OBu+OCk+OBvizjgZ/jgaTjgo3jgYYNCivjgbvjgorjgYvjgo8s44GY44KF44KT44GE44GhDQor44G744KK44GKLOOBi+OBpOOCiOOBlw0KK+OBu+OCiizjgYvjgZrjgYoNCivjgbvjgoos44GC44Gk44GXDQor44G744KKLOOBk+OBhuOBhOOBoQ0KK+OBu+OBl+OBrizjgZfjgpPjgZgNCivjgbvjgZfjga4s44GC44GN44GTDQor44G744GX44GuLOOBteOBqOOBlw0KK+OBu+OBlyzjgbLjgo3jgZMNCivjgbvjgZ0s44GL44Ga44G/DQor44G744Gf44GmLOOChuOBiw0KK+OBhOOBoeOBi+OCjyzjgobjgb/jgZMNCivjgYTjgaHjgYvjgo8s44GV44Go44GXDQor44GE44Gh44GNLOOBn+OBkeOBlw0KK+OBhOOBoeOBruOBmyzjgYLjgooNCivjgYTjgaAs44Gq44GK44GNDQor44GE44Gn44GELOOBvuOBleOBi+OBmg0KK+OBhOOBjOOCieOBlyzjgobjgYbjgZgNCivjgYTjgZDjgaEs44GU44GGDQor44GE44GE44GgLOOBiOOBhOOBluOBtuOCjeOBhg0KK+OBhOOBhOOBoCzjgbXjgZjjgYoNCivjgYTjgYTjgZjjgb4s44Gy44KN44KG44GNDQor44GE44GE44GY44G+LOOBi+OBmuOBruOCig0KK+OBhOOBhOOCgOOCiSzjgojjgZfjga7jgbYNCivjgYTjgYTjga4s44Gy44Gn44GNDQor44GE44GE44Ga44GLLOOBsuOCjeOBlw0KK+OBhOOBhOOBmuOBiyzjgYvjgaTjgbLjgZMNCivjga/jgovjgZ8s44Go44GX44GTDQor44GE44GR44GgLOOBquOBiuOBsuOCjQ0KK+OBmeOBmuOBjSzjgajjgYrjgosNCivjgYTjgZHjgaAs44GP44Gr44Gy44KNDQor44GE44Gd44G5LOOBk+OBhuOBmA0KK+OBhOOBkeOChOOBvizjgZnjgY7jgYoNCivjgYTjgY/jgZ8s44Go44GX44GC44GNDQor44GE44G+44GE44Ga44G/LOOBoeOBmuOBkw0KK+OCguOCiuOBl+OBnyzjgZfjgZLjgY0NCivjgYTjgb7jgYQs44Gf44Gg44GXDQor44GE44G+44KA44KJLOOBvuOBquOBtg0KK+OBhOOBvuOCgOOCiSzjga7jgorjgobjgY0NCivjgYTjgarjgb8s44GR44KT44KEDQor44GE44Gu44GG44GILOOChOOBmeOBsuOBpw0KK+OBhOOBruOBhuOBiCzjgbLjgo3jgZcNCivjgYTjga7jgYbjgYgs44Gy44KN44GXDQor44GE44Gu44GG44GILOOBsuOCjeOBn+OBiw0KK+OBhOOBruOBhuOBiCzjgb/jgaTjgZMNCivjgYTjgazjgYQs44KG44GN44Go44GXDQor44GE44GX44GgLOOBvuOBquOBtg0KK+OBhOOBl+OBoCzjgajjgZfjgbLjgo0NCivjgYTjgZfjgaAs44KG44Gf44GLDQor44GE44GX44GQ44KNLOOBvuOCig0KK+OBhOOBl+OBkOOCjSzjgbLjgo3jgZcNCivjgYTjgZfjga/jgoks44GY44KF44KT44GE44GhDQor44GE44GX44GELOOBi+OBiuOCiw0KK+OBhOOBl+OBhCzjgZHjgYTjgYTjgaENCivjgYTjgZfjgYQs44GT44GG44GYDQor44KG44GN44G+44GVLOOBvuOBleOBqOOBlw0KK+OBhOOBl+OBi+OCjyzjgZ/jgYvjgZcNCivjgYTjgZfjgYvjgo8s44KI44GG44GTDQor44GE44GX44GP44KJLOOChuOBn+OBiw0KK+OBhOOBl+OCguOCiizjgbLjgo3jgYLjgY0NCivjgYTjgZfjgoLjgags44KK44GIDQor44GE44GX44KC44GoLOOBleOBoeOBkw0KK+OBhOOBl+OBiuOBiyzjgobjgYsNCivjgYTjgZfjgYrjgYss44Gu44G244GKDQor44GE44GX44KP44GfLOOBquOBiuOBsuOBlQ0KK+OBi+OCkyzjgojjgYbjgYTjgaHjgo3jgYYNCivjgYTjgZfjgZbjgYss44GL44KI44GTDQor44GE44Gd44GM44GELOOBn+OBi+OBsuOCjQ0KK+OBhOOBn+OBsOOBlyzjgZfjgpPjgYTjgaENCivjgYTjgZ/jgbDjgZcs44GX44GS44GNDQor44GV44GO44KELOOBsuOBp+OBguOBjQ0KK+OBhOOBqOOBhizjgabjgaTjgoQNCivjgYTjgajjgYYs44GC44GR44G/DQor44GE44Go44GGLOOBruOBnuOCgA0KK+OBhOOBqOOBhizjgarjgYrjgojjgZcNCivjgYTjgajjgYYs44GL44Ga44GX44GSDQor44GE44Go44GGLOOBquOBiuOChuOBjQ0KK+OBhOOBqOOBhizjgZ/jgYvjgZcNCivjgZXjgYvjgYQs44GT44GG44GE44GhDQor44GE44Go44GGLOOBi+OBmuOChuOBjQ0KK+OBhOOCj+OBhCzjgYvjgYrjgosNCivjgZfjgb7jgoDjgoks44G144GV44Gh44GLDQor44GE44KP44GELOOBjeOCh+OBhuOBkw0KK+OBi+OCj+OBquOBiyzjgYvjgZrjgb8NCivjgYTjgo/jgY/jgbws44Gf44GL44KG44GNDQor44GE44KP44KC44GoLOOBleOChOOBiw0KK+OBhOOCj+OCguOBqCzjgbLjgafjgYLjgY0NCivjgZ/jgZHjgaAs44GV44Gh44GTDQor44GE44KP44KA44KJLOOBsuOCjeOChuOBjQ0KK+OBhOOCj+OBquOBjCzjgbLjgafjgYoNCivjgYTjgo/jgYos44GT44GG44GE44GhDQor44GE44KP44GV44GNLOOBn+OBpOOBsuOBkw0KK+OBhOOCj+OBleOBjSzjgajjgonjgbLjgZMNCivjgZvjgYzjgo8s44G+44GV44Gf44GLDQor44GE44KP44GX44KNLOOCiOOBl+OBsuOBlQ0KK+OBhOOBmuOBvyzjgb7jgZPjgagNCivjgYvjgYjjgorjgoTjgb4s44Gq44GK44GNDQor44GL44GM44G/LOOBhOOBj+OBig0KK+OBi+OBjOOBvyzjgZfjgZLjgojjgZcNCivjgYvjgZjjgZ/jgass44GL44Ga44Gy44GTDQor44KE44G+44KC44GoLOOBiOOBhOOBhOOBoQ0KK+OBi+OBjeOBrOOBvizjgbLjgo3jgYLjgY0NCivjgYvjgY8s44Gy44KN44KG44GNDQor44GL44G+44GgLOOBvuOBk+OBqA0KK+OBhOOBquOBjOOBjSzjgb7jgZXjgYgNCivjgYvjgb7jgoLjgags44Gf44GI44GTDQor44GL44G+44Gf44GrLOOBquOBiuOBteOBvw0KK+OBi+OBvuOBnyzjgajjgoLjgZMNCivjgoTjgb7jgaAs44GI44GE44GYDQor44GL44KB44GgLOOBguOBjeOBkw0KK+OBi+OCgeOChCzjgbLjgafjgY0NCivjgYvjgb8s44G+44GT44GoDQor44GL44G/44GKLOOBvuOBquOBvw0KK+OBi+OBv+OChCzjgb7jgZXjga7jgooNCivjgYvjgoLjgags44KI44KK44GTDQor44GL44Gq44GgLOOBvuOBleOBn+OBiw0KK+OBi+OBquOBhCzjgY3jgofjgYbjgZMNCivjgYvjgarjgYQs44KK44GI44GTDQor44GL44Gq44GW44KPLOOBleOBoOOBhOOBoQ0KK+OBi+OCk+OBoCzjgZ/jgYvjgbLjgo0NCivjgYvjga3jgYTjgaEs44GC44GN44GKDQor44GL44Gt44GTLOOBsuOCjeOBtuOBvw0KK+OBi+OBreOBkyzjgb7jgZnjgYoNCivjgYvjga3jgZMs44GX44KF44GG44GYDQor44GL44Gt44GTLOOBn+OBkeOBsuOBkw0KK+OBi+OBreOBkyzjgoTjgYgNCivjgYvjga3jgZMs44Gy44GV44GXDQor44GL44Gt44G+44KLLOOBguOBpOOBlw0KK+OBi+OCiuOChCzjgojjgZfjga7jgbYNCivjgYvjgovjgbks44GN44KH44GG44GYDQor44GL44GX44G+LOOBsuOCjeOChuOBjQ0KK+OBi+OBl+OCj+OBjizjgojjgZfjgobjgY0NCivjgYvjgZfjgo/jgY4s44Gy44KN44GXDQor44GL44GZ44KELOOBkeOBhOOBlA0KK+OBi+OBmeOChCzjgZfjgofjgYbjgZMNCivjgYvjgZnjgoQs44Gf44GL44GXDQor44GL44Gf44GuLOOBkeOCk+OBhOOBoQ0KK+OBl+OCieOBjSzjgYvjgaTjgYoNCivjgYvjgZ/jgYrjgYss44KI44GG44GE44Gh44KN44GGDQor44GL44Gf44GK44GLLOOBguOBpOOBlw0KK+OBi+OBn+OChOOBviwNCivjgYvjgajjgYYs44Gf44Gm44GKDQor44GL44Go44GGLOOBsuOCjeOBlw0KK+OBi+OBqOOBhizjgbLjgo3jgZMNCivjgYvjgajjgYYs44Gy44KN44KEDQor44GL44Go44GGLOOBn+OBkeOBlw0KK+OBlOOBqOOBhizjgbLjgo3jgYvjgZoNCivjgYvjgaTjgoQs44Gy44KN44GXDQor44GL44KP44GgLOOBv+OBoeOBig0KK+OBi+OCj+OBoCzjgZXjgaHjgZMNCivjgYvjgo/jgZDjgaEs44GV44Go44GXDQor44GL44KP44Gv44KJLOOBm+OBhOOBhOOBoeOCjeOBhg0KK+OBi+OCj+OBr+OCiSzjgbLjgo3jgYLjgY0NCivjgYvjgo/jga/jgZ8s44Gy44KN44KG44GNDQor44GL44KP44GELOOBmOOCheOCk+OBhOOBoQ0KK+OBi+OCj+OBhCzjgYvjgojjgZMNCivjgYvjgo/jgYQs44G/44G7DQor44GL44KP44GL44G/LOOBn+OBkeOBlw0KK+OBi+OCj+OBjeOBnyzjgajjgoLjgYLjgY0NCivjgYvjgo/jgY3jgZ8s44KE44GZ44GTDQor44GL44KP44KA44KJLOOChuOBjeOBvuOBlQ0KK+OBi+OCj+OCgOOCiSzjgobjgY0NCivjgYvjgo/jgoDjgoks44G+44GV44KG44GNDQor44GL44KP44Ge44GILOOBv+OBqg0KK+OBteOBn+OBj+OBoSzjgZ/jgaDjgZcNCivjgY3jgaAs44KE44GZ44Gy44KNDQor44GN44GgLOOCiOOBl+OBteOBvw0KK+OBjeOBqSzjgYLjgY3jgYoNCivjgY3jga/jgoks44GL44Gk44Go44GXDQor44GN44GP44GhLOOBk+OBhuOBmA0KK+OBjeOBj+OBoSzjgYLjgYTjgZMNCivjgY3jgY/jgZ8s44GE44GV44GKDQor44GN44KC44GoLOOBi+OBmuOBvuOBlQ0KK+OBjeOCgOOCiSzjgb/jga7jgosNCivjgY3jgoDjgoks44Gq44G744G/DQor44GN44KA44KJLOOBl+OCheOCk+OBhOOBoQ0KK+OBjeOCgOOCiSzjgZnjgb/jgbLjgo0NCivjgb7jgaTjgoLjgags44Gf44GP44KN44GGDQor44GN44KA44KJLOOBqOOBl+OBig0KK+OBjeOCgOOCiSzjgZjjgoXjgpPjgZMNCivjgYrjgYvjgZbjgY0s44Gf44GR44GKDQor44GN44KA44KJLOOChuOBiw0KK+OBjeOCgOOCiSzjgYLjgaTjgZcNCivjgY3jga7jgZfjgZ8s44GR44GE44GTDQor44GN44GXLOOBjeOBv+OBsuOBkw0KK+OBjeOBmSzjgZjjgoXjgpPjgZMNCivjgY3jgZ/jgYvjgZws44Gu44G244GNDQor44GN44Gf44KA44KJLOOBguOBjeOBig0KK+OBjeOBhuOBoSzjgarjgYrjgagNCivjgY3jgYbjgaEs44Gf44GL44Ge44GGDQor44GN44KI44GfLOOBoOOBhOOBmeOBkQ0KK+OBk+OBsOOChOOBlyzjgb7jgZXjga/jgosNCivjgZPjgbDjgoTjgZcs44GR44KT44GYDQor44GT44Gw44KE44GXLOOBv+OCiOOBkw0KK+OBk+OBsOOChOOBlyzjgojjgZfjgobjgY0NCivjgZPjgbDjgoTjgZcs44Gf44GL44GXDQor44GT44Gw44KE44GXLOOBsuOBp+OBguOBjQ0KK+OBk+OBsOOChOOBlyzjgobjgYbjgYTjgaENCivjgZPjgbDjgoTjgZcs44KI44GX44GKDQor44GT44Gw44KE44GXLOOBsuOCjeOBsuOBpw0KK+OBsuOCjeOBmyzjga/jgovjgYoNCivjgZPjgafjgoks44GC44GN44Gy44KNDQor44GT44GM44GELOOBsuOBleOBn+OBiw0KK+OBk+OBkOOCjCzjgYvjgZrjgYoNCivjgoLjgorjgZ8s44G/44Gh44Gy44GTDQor44GT44KC44GoLOOCiOOBhuOBmeOBkQ0KK+OBk+OCk+OBrizjgYLjgY3jgbLjgo0NCivjgZPjgZXjgYss44KI44GX44KG44GNDQor44GT44GE44GRLOOBjeOCiOOBlw0KK+OBk+OBhOOBkSzjgojjgYbjgYTjgaENCivjgZPjgYTjgZcs44GC44GN44GKDQor44GT44GY44G+LOOBi+OBmuOBn+OBiw0KK+OBk+OBmOOBvizjgabjgaQNCivjgZPjgY/jgbss44GL44Gk44KEDQor44GT44GP44G+44GELOOBv+OBiOOBkw0KK+OBk+OBvuOBjOOBnyzjgb7jgZPjgagNCivjgZPjgb7jgY0s44GL44Ga44KG44GNDQor44GT44G+44GkLOOCiOOBhuOBhOOBoQ0KK+OBk+OBvuOBpCzjgYLjgaTjgZcNCivjgZPjgb/jga0s44GL44Gk44Gu44KKDQor44GT44G/44KE44G+LOOCiOOBl+OBruOBtg0KK+OBk+OCguOBiuOBiyzjgbXjgb/jgYoNCivjgZPjgoLjgoos44GX44GS44Gu44KKDQor44GT44KT44GpLOOBsuOCjeOBlw0KK+OBk+OCk+OBqSzjgb/jgY3jgYoNCivjgZPjgpPjgaks44KI44GX44Ge44GGDQor44GT44KT44GpLOOBn+OBi+OChuOBjQ0KK+OBk+OCk+OBqeOBhizjgZ/jgaTjgagNCivjgZPjgpPjga4s44Gm44Gk44GKDQor44GT44GZ44GOLOOCiOOBhuOBhOOBoQ0KK+OBk+OBhuOBoCzjgajjgZfjgobjgY0NCivjgZPjgoTjgarjgY4s44Gu44G244Gy44GTDQor44GP44G844GfLOOBsuOCjeOChuOBjQ0KK+OBj+OBvOOBnyzjgarjgYrjgY0NCivjgY/jgbws44Gf44GL44KG44GNDQor44GP44Gp44GGLOOBlOOBhg0KK+OBj+OBjCzjgZfjgZLjgosNCivjgY/jgZjjgb4s44GI44KKDQor44GP44G+44GgLOOBsuOCjeOBlw0KK+OBj+OBvuOBjSzjgb7jgY0NCivjgY/jgb7jgY/jgoks44GL44Gk44GoDQor44GP44G+44KC44GoLOOBguOBjeOBsuOBkw0KK+OBj+OCguOBi+OCjyzjgbLjgo3jga7jgooNCivjgY/jgonjgZfjgb4s44GT44GG44GE44GhDQor44GP44KK44Gv44KJLOOBk+OBhuOBmA0KK+OBj+OCiuOBr+OCiSzjgobjgb/jgZMNCivjgY/jgorjgoDjgoks44GX44KF44GG44GYDQor44GP44KK44GZLOOBsuOCjeOBlw0KK+OBj+OCiuOChOOBvizjgobjgY3jgYgNCivjgY/jgorjgoTjgb4s44GY44KF44KT44GE44GhDQor44GP44KN44GgLOOBguOBjeOCiQ0KK+OBj+OCjeOBi+OCjyzjgbLjgo3jgZcNCivjgY/jgo3jgY0s44Gu44G244KEDQor44GP44KN44GV44GNLOOBruOBtuOBguOBjQ0KK+OBj+OCjeOBmSzjgbLjgo3jgZcNCivjgY/jgZfjgaAs44KP44Gf44KLDQor44GP44GZ44GgLOOCiOOBl+OBkw0KK+OBj+OCj+OBsOOCiSzjgYTjgaHjgo3jgYYNCivjgYbjgaHjgaAs44GR44GE44GE44GhDQor44G+44GI44GgLOOChOOBmeOBsuOBkw0KK+OBq+OCjyzjgZfjgZLjgb/jgaQNCivjgb7jgYjjgbLjgoks44G+44GV44GoDQor44G+44GI44GL44KPLOOBsuOBp+OBn+OBiw0KK+OBvuOBjeOCgOOCiSzjgbLjgo3jgb/jgaQNCivjgb7jgY3jga4s44KG44GG44GYDQor44G+44GN44GuLOOBvuOCig0KK+OCiOOBhuOBk+OBnyzjgb/jgaHjgoTjgZkNCivjgb7jgovjgoTjgb4s44Gf44Gg44GXDQor44G+44GZ44GgLOOBv+OBjeOBig0KK+OBvuOBmeOBoCzjgabjgovjgYLjgY0NCivjgb7jgZnjgbLjgo0s44GN44G/DQor44G+44GZ44KE44G+LOOBn+OBj+OBmA0KK+OBvuOBpOOBsOOCiSzjgZPjgYbjgZgNCivjgb7jgaTjgbDjgoks44KE44GZ44Gq44KKDQor44G+44Gk44Gg44GE44KJLOOBvuOBleOBqA0KK+OBvuOBpOOBoCzjgZfjgZLjgYoNCivjgZXjgZXjgoLjgags44GV44KG44KKDQor44G+44Gk44GgLOOBqOOBl+OBvw0KK+OBvuOBpOOBteOBlSzjgYvjgaTjgZgNCivjgb7jgaTjgYQs44Go44GK44KLDQor44G+44Gk44GELOOBmOOCheOCk+OBhOOBoQ0KK+OBvuOBpOOBjSzjgYLjgY3jgbLjgZMNCivjgYvjga7jgYYs44Gy44KN44KG44GNDQor44G+44Gk44KC44GoLOOChuOBhuOBhOOBoQ0KK+OBvuOBpOOCguOBqCzjgajjgZfjgobjgY0NCivjgb7jgaTjgoLjgags44G144GY44GKDQor44Gv44GX44KC44GoLOOBl+OCh+OBhuOBmA0KK+OBvuOBpOOCgOOCiSzjgY3jgavjgaENCivjgb7jgaTjgoDjgoks44Gy44KN44KG44GNDQor44G+44Gk44Gq44G/LOOBsuOCjeOChuOBjQ0KK+OBvuOBpOOBquOBvyzjgobjgY3jgYoNCivjgaHjgbAs44Gm44Gk44KEDQor44G+44Gk44GX44GwLOOBk+OBhuOBhOOBoQ0KK+OBvuOBpOOBl+OBnyzjgbLjgo3jgZcNCivjgb7jgaTjgZfjgZ8s44GI44GE44GE44GhDQor44G+44Gk44GG44KJLOOBhOOBoeOCjeOBhg0KK+OBvuOBpOOBluOBjSzjgZ/jgaDjgZcNCivjgYTjgb7jgYQs44G+44GV44KG44GNDQor44G+44KG44KE44G+LOOBguOBpOOBlw0KK+OCgeOCkyzjgb7jgZXjgagNCivjgb/jgaHjgYzjgb8s44Gu44KK44GKDQor44G/44Gv44KJLOOBr+OCi+OBkw0KK+OBv+OBjSzjgYLjgaTjgZcNCivjgb/jgoLjgoos44Gy44KN44GXDQor44G/44Gq44G/44GQ44GhLOOBi+OBquOCgQ0KK+OBv+OBquOBmuOBjSzjgarjgYrjgobjgY0NCivjgb/jga3jgoDjgoks44KG44GL44KKDQor44G/44GX44GqLOOBi+OBmuOBsuOCjQ0KK+OBv+OBpOOBhCzjgZ/jgZHjga/jgosNCivjgb/jgYbjgoks44KI44GG44GE44GhDQor44G/44GG44KJLOOBkeOCk+OBhOOBoQ0KK+OCgOOCieOBi+OBvyzjgb7jgZXjga/jgosNCivjgb/jgo8s44GX44GS44KG44GNDQor44G/44KE44GM44KPLOOBvuOBleOBig0KK+OBv+OChOOBjizjgb/jgaHjgZMNCivjgb/jgoTjga/jgoks44Go44GX44GKDQor44G/44KE44Gv44GXLOOBjeOCh+OBhuOBkw0KK+OBv+OChOOBi+OCjyzjgb7jgZXjgajjgZcNCivjgb/jgoTjgY0s44G+44GV44Ga44G/DQor44G/44KE44KC44GoLOOBm+OBhOOBmA0KK+OBv+OChOOCguOBqCzjgbLjgo3jgZcNCivjgb/jgoTjgoLjgags44G+44GV44Gy44KNDQor44G/44KE44GV44GLLOOBquOBiuOBjQ0KK+OBv+OChOOBn+OBkSzjgZfjgZLjgb8NCivjgb/jgoTjgZ8s44Go44GX44Gy44KNDQor44G/44KE44GfLOOChuOBhuOBmA0KK+OBv+OChOOBnyzjgb7jgZXjgb/jgaENCivjgY/jgo3jgaAs44GR44GE44GTDQor44G/44KI44GXLOOBquOBiuOBkw0KK+OBv+OBmuOBk+OBlyzjgb7jgY3jgYoNCivjgb/jgZrjgZPjgZcs44Go44GX44GKDQor44G/44Ga44GuLOOBn+OBpOOChA0KK+OBv+OBmuOBrizjga7jgbbjga/jgosNCivjgb/jgZrjgZ/jgass44GX44KT44GYDQor44KC44KKLOOBl+OCh+OBhuOBmA0KK+OCguOCiizjga7jgorjgZMNCivjgoLjgorjgYvjgo8s44GC44GN44GTDQor44KC44KK44GNLOOChOOBmeOBsuOCjQ0KK+OCguOCiuOBl+OBnyzjgojjgZfjgb8NCivjgoLjgorjgZ8s44Gf44Gg44GXDQor44KC44KK44GfLOOBi+OBmuOBsuOCjQ0KK+OCguOCiuOChOOBvizjgajjgZfjgYoNCivjgoLjgorjgZ7jga4s44Gk44KI44GXDQor44KC44KKLOOBleOBqOOCiw0KK+OCguOCiizjgYvjgaTjgajjgb8NCivjgoLjgoos44KE44GZ44GKDQor44KC44KKLOOBsuOCjeOBruOCig0KK+OCguOCjeOBmuOBvyzjga7jgbzjgosNCivjgYTjga7jga/jgaos44GL44Ga44GKDQor44GT44GY44G+LOOBl+OCk+OBlA0KK+OCgOOBi+OBhCzjgZ/jgaTjgb8NCivjgoDjgYvjgYQs44GV44Gh44GKDQor44KA44KJ44GELOOBoeOBquOBpA0KK+OCgOOCieOBi+OBvyzjgajjgYrjgosNCivjgoDjgonjgYvjgb8s44Gh44Gv44KLDQor44KA44KJ44G+44GkLOOBvuOBleOBi+OBmg0KK+OBq+OCjyzjgYvjgaTjgbLjgo0NCivjgoDjgonjgZ8s44GV44Go44GXDQor44KA44KJ44GfLOOBhOOBoeOCjeOBhg0KK+OBiuOBiuOBrizjgZ/jgYvjgZcNCivjgoDjgonjgoTjgb4s44Gh44Gv44KLDQor44KA44Go44GGLOOBsuOCjeOChA0KK+OCgOOBqOOBhizjgZ/jgYvjgZcNCivjgoDjgajjgYYs44GC44G+44GtDQor44KA44Gk44GX44GLLOOBiOOBhOOBhOOBoQ0KK+OBquOBjOOBhCzjgbLjgo3jgZcNCivjgarjgYzjgYQs44GL44Gk44KG44GNDQor44Gq44GM44KC44GoLOOBkeOCk+OBhOOBoQ0KK+OBguOCieOBhCzjgZ/jgZHjgajjgZcNCivjgarjgYzjgYos44KE44GZ44Gq44KKDQor44Gq44GM44GV44KPLOOBguOBpOOBlw0KK+OBquOBjOOBleOCjyzjgYvjgZrjgagNCivjgarjgYzjgoTjgb4s44GC44GN44Gy44KNDQor44Gq44GE44Go44GGLOOBteOBleOBruOBtg0KK+OBquOBhOOBqOOBhizjgYvjgaTjgYoNCivjgarjgYvjgbDjgoTjgZcs44GL44Ga44Gy44GVDQor44Gq44GL44Gg44GmLOOBk+OBhuOBhOOBoQ0KK+OBquOBi+OBjOOBjSzjgb7jgZXjga7jgooNCivjgarjgYzjgYgs44Gf44GL44KG44GNDQor44Gq44GL44GM44KPLOOBpuOCi+OBmA0KK+OBquOBi+OBjOOCjyzjgajjgZfjgobjgY0NCivjgarjgYvjgZTjgoEs44KI44GX44Gq44KKDQor44Gq44GL44Gy44KJLOOChuOBn+OBiw0KK+OBquOBi+OBhCzjgYjjgb/jgZMNCivjgarjgYvjgZjjgb4s44GL44Gk44Go44KCDQor44Gq44GL44GY44G+LOOBv+OBiOOBkw0KK+OBquOBi+OBmOOBvizjgarjgYrjgoQNCivjgarjgYvjgZjjgb4s44GI44KKDQor44Gq44GL44GY44G+LOOBpOOBreOBguOBjQ0KK+OBquOBi+OBmOOBvizjgZHjgYTjgYTjgaENCivjgarjgYvjgZjjgb4s44Gq44GK44Gy44GnDQor44Gq44GL44G+44GfLOOBruOCiuOBsuOCjQ0KK+OBquOBi+OBv+OBoSzjgZfjgoXjgpPjgYTjgaHjgo3jgYYNCivjgarjgYvjgoDjgoks44G+44GV44GNDQor44Gq44GL44KA44KJLOOBqOOBl+OBguOBjQ0KK+OBquOBi+OCgOOCiSzjgb7jgZPjgagNCivjgarjgYvjgoDjgoks44Gm44KL44Gy44KNDQor44Gq44GL44KA44KJLOOBl+OCk+OBmA0KK+OBquOBi+OCgOOCiSzjga/jgZjjgoENCivjgarjgYvjgoDjgoks44Gu44KK44GC44GNDQor44Gq44GL44KA44KJLOOBsuOCjeOChuOBjQ0KK+OBquOBi+OCgOOCiSzjgYvjgZrjgbLjgZMNCivjgarjgYvjgoDjgoks44G+44GV44KG44GNDQor44Gq44GL44KA44KJLOOBquOBiuOBjQ0KK+OBquOBi+OBq+OBlyzjgajjgZfjgYLjgY0NCivjgYrjgYrjgavjgZcs44G+44GV44Gu44KKDQor44Gq44GL44Gr44GXLOOBqOOBl+OChuOBjQ0KK+OBquOBi+OBq+OBlyzjga7jgbbjgoTjgZkNCivjgarjgYvjga4s44GN44KI44Gf44GLDQor44GK44GL44GW44KPLOOBi+OCiOOBkw0KK+OBquOBi+OBrizjga7jgZ7jgb8NCivjgarjgYvjga4s44KI44GX44G144G/DQor44Gq44GL44GuLOOCguOBiOOBkw0KK+OBquOBi+OBiuOBiyzjgabjgaTjgoQNCivjgarjgYvjgYos44G144G/44GTDQor44Gq44GL44GKLOOBiOOBhOOBmA0KK+OBquOBi+OBmyzjgZPjgYbjgZcNCivjgarjgYvjgZ3jgY4s44G+44GV44Go44G/DQor44Gq44GL44GfLOOBl+OBkuOBkw0KK+OBquOBi+OBpOOBiyzjgZ/jgYvjgZcNCivjgarjgYvjgaTjgYss44G+44GT44GoDQor44Gq44GL44KE44G+LOOBsuOBp+OBjQ0KK+OBquOBi+OChOOBvizjgYLjgaTjgZcNCivjgarjgYvjgoTjgb4s44Gf44Gk44KEDQor44Gq44GL44KE44G+LOOBk+OBhuOBuOOBhA0KK+OBquOBi+OChOOBvizjgYvjgaTjgbLjgZMNCivjgarjgYvjgZbjgo8s44G/44Gk44GQDQor44Gq44G/44GNLOOBj+OBq+OBig0KK+OBquOCieOBl+OBvizjgb7jgZXjgYLjgY0NCivjgarjgoks44Gf44GR44Gy44GTDQor44GP44Gp44GGLOOBsuOBleOBlw0KK+OBquOBpOOBrizjgb/jgaHjga/jgosNCivjgarjgaTjgoTjgb4s44KG44GG44GTDQor44GI44Go44GGLOOBsuOCjeOBlw0KK+OBq+OBuOOBhCzjgZ/jgYvjgZcNCivjgYrjgY/jga4s44GV44KG44KKDQor44G+44GI44G744KKLOOBsuOCjeOBvw0KK+OBq+OBl+OBoCzjgbLjgajjgZcNCivjgavjgZfjgZDjgaEs44Gf44Gk44GKDQor44KC44KKLOOChuOBjeOBkw0KK+OBq+OBl+OBi+OCjyzjgb7jgZXjgZcNCivjgavjgZfjgY/jgoks44GX44GS44KLDQor44Gr44GX44KC44GoLOOBvuOBleOBjQ0KK+OBq+OBl+OBiizjgajjgZfjgbLjgZMNCivjgavjgZfjgo/jgY0s44GR44GE44GTDQor44Gr44GXLOOBvuOBleOCiw0KK+OBq+OCjyzjgb7jgZXjgY0NCivjga7jgbbjgb7jgZUs44G/44GV44GoDQor44Gu44GgLOOCguOBqOOBsuOBkw0KK+OBruOBkOOBoSzjgZ/jgYvjgZcNCivjga7jgZDjgaEs44GR44KTDQor44Gu44G744KKLOOBsuOBp+OChuOBjQ0KK+OBruOBn+OBqyzjgb7jgZXjgZ/jgZENCivjga7jgb4s44GV44Go44GXDQor44Gu44G/44KE44G+LOOBqOOBl+OCjeOBhg0KK+OBruOCguOBqCzjgajjgZfjgYLjgY0NCivjgZ/jgpPjgZbjgpMs44G/44Gh44GKDQor44GK44GK44GL44KPLOOBi+OBmuOBsuOBkw0KK+OBruOBruOChOOBvizjgb7jgZXjgY0NCivjga7jgorjgYvjga0s44G+44GV44KLDQor44Gu44KNLOOBm+OBhOOBhOOBoQ0KK+OBrizjgZfjgpPjgYTjgaENCivjgYrjgbDjgaos44Gy44KN44GXDQor44GK44Gz44Gq44GfLOOBguOBjeOBsuOBkw0KK+OBiuOBoeOBguOBhCzjgojjgZfjga7jgooNCivjgZfjgb7jgoDjgoks44Gy44KN44GXDQor44GK44Gg44GtLOOCiOOBl+OBi+OBmg0KK+OBiuOBjOOCjyzjgarjgYrjgb8NCivjgYrjgZDjgoks44Gy44Gn44Go44GXDQor44GK44GQ44KJLOOBm+OBhOOBmA0KK+OBiuOBkOOCiSzjgZfjgpPjgZnjgZENCivjgYrjgYrjgZDjgo0s44GE44KP44GKDQor44GK44GK44Gw44KE44GXLOOBkeOBhOOBnuOBhg0KK+OBiuOBiuOBsOOChOOBlyzjgoTjgZnjgobjgY0NCivjgYrjgYrjgbAs44GI44KK44GTDQor44GK44GhLOOBl+OCk+OBlA0KK+OBiuOBiuOBpyzjgajjgZfjgbLjgZMNCivjgYrjgYrjgbvjgoos44Gu44KK44GKDQor44GK44G7LOOBk+OBmeOBkQ0KK+OBiuOBiuOBhOOBlyzjgoLjgajjgYTjgaENCivjgYrjgY0s44KI44GX44KG44GNDQor44GK44GK44GP44G8LOOBvuOBleOBsuOCjQ0KK+OBiuOBiuOBj+OBvCzjgb7jgZXjgY/jgasNCivjgYrjgYrjgb/jgaEs44Gf44GR44Gu44KKDQor44GK44KA44KJLOOBpOOBreOBguOBjQ0KK+OBiuOBiuOBq+OBlyzjgYTjgZXjgYoNCivjgYrjga4s44GT44GG44GE44Gh44KN44GGDQor44GK44KJ44GELOOBmeOBmeOCgA0KK+OBiuOBleOBjSzjgZXjgajjgZcNCivjgYrjgYrjgZXjgo8s44Gd44GG44GE44Gh44KN44GGDQor44GK44GK44GV44KPLOOBn+OBoOOBlw0KK+OBiuOBiuOBleOCjyzjgorjgoXjgYbjgZgNCivjgYrjgYrjgZ/jgass44GR44KT44GYDQor44GK44GK44GfLOOBquOBiuOBjQ0KK+OBiuOBiuOBqOOCgizjgYLjgY3jgYoNCivjgYrjgZbjgY0s44GT44GG44GYDQor44GK44GK44Gk44GLLOOBn+OBkeOBlw0KK+OBiuOBiuOBpOOBiyzjgajjgZfjgo3jgYYNCivjgYrjgYrjgaTjgY0s44Gm44Gk44KEDQor44GK44GK44KELOOBvuOBleOBsuOCjQ0KK+OBiuOBsuOCgyzjgY/jgavjgbLjgZMNCivjgYrjgYrjgoQs44GZ44GQ44KLDQor44GK44GL44GgLOOBpOOBkOOBig0KK+OBiuOBi+OBoCzjgojjgZfjgbLjgo0NCivjgYrjgYvjgaAs44Go44GX44Gy44KNDQor44GK44GL44GgLOOBl+OCk+OBhOOBoQ0KK+OBiuOBi+OBr+OCiSzjgbLjgo3jgY0NCivjgYrjgYvjgoLjgags44KI44GX44GKDQor44GP44GV44GwLOOBsuOCjeOBlw0KK+OBiuOBi+OCgOOCiSzjgb7jgZXjgYvjgZoNCivjgYrjgYvjgoDjgoks44G+44GV44GNDQor44GK44GL44GuLOOBsuOCjeOBlw0KK+OBqOOBs+OBnyzjgZfjgoXjgYbjgbjjgYQNCivjgbvjgZ3jgYvjgo8s44GT44GG44GYDQor44GG44GI44GgLOOBqOOCiOOBi+OBmg0KK+OBk+OBm+OBjSzjgobjgb8NCivjgZ/jgZbjgo8s44GX44KF44KT44GYDQor44KE44G+44GW44GNLOOCiOOBl+OBi+OBmg0KK+OBiOOBkOOBoSzjgbLjgo3jgobjgY0NCivjgoLjgaHjgaAs44GZ44GZ44KADQor44GC44GN44KC44GoLOOBjeOBiOOBhA0KK+OBq+OBlyzjgYLjgaTjgY0NCivjgYTjgb7jgYTjgZcs44GX44GS44Go44GXDQor44Gf44GL44KE44GZLOOBruOBtuOCiOOBlw0KK+OBr+OBnyzjgb7jgZXjgobjgY0NCivjgbXjgZjjgZXjgo8s44GC44GN44KJDQor44KA44Go44GGLOOBsuOBleOBlw0KK+OCguOBn+OBhCzjgZfjgpPjgYTjgaENCivjgZ/jgaAs44Gf44GL44KG44GNDQor44GT44GE44Ga44G/LOOBi+OBmuOCiOOBlw0KK+OBpOOBvOOBj+OCiSzjgZPjgYbjgZ7jgYYNCivjgbLjgonjgbDjgoTjgZcs44Gy44KN44GYDQor44Gk44GY44GL44KPLOOBsuOCjeOBi+OBmg0KK+OBv+OBpOOBhOOBlyzjgZvjgYTjgYTjgaENCivjgoTjgb7jgZfjgZ8s44GR44KT44GYDQor44G+44KL44GK44GLLOOBruOBtuOBn+OBiw0KK+OBteOBi+OBiizjgajjgYrjgosNCivjgaTjgoDjgoks44GL44Gq44GTDQor44G+44KG44G/LOOBqOOBl+OBiA0KK+OBguOCieOBi+OCjyzjgb/jganjgooNCivjgYrjgbXjgaEs44GY44KF44KTDQor44GV44GV44KC44KKLOOChuOBn+OBiw0KK+OBleOBqOOBhizjgYLjgY3jgokNCivjgZ/jgYvjgY4s44G+44GT44GoDQor44Gf44Gq44GLLOOBvuOBleOBv+OBpA0KK+OBpOOBvOOBlCzjgbXjgb/jgbLjgZMNCivjgajjgorjgZXjgo8s44Gy44KN44KG44GNDQor44Gq44GL44GQ44GNLOOBkeOBhOOBlA0KK+OBr+OBm+OBjOOCjyzjgajjgoLjgobjgY0NCivjga/jgoTjgZcs44GT44GG44GYDQor44Gy44KJ44KE44G+LOOBl+OBkuOCiw0KK+OBteOBj+OBl+OBvizjgajjgZfjgY0NCivjgb7jgaTjgZfjgb4s44GL44Ga44Gy44KNDQor44KI44GX44GELOOBsuOBp+OBjQ0KK+OBhOOBl+OBhCzjga7jgorjgZMNCivjgYTjgb7jgYQs44G/44KG44GNDQor44Gq44GL44Gk44GYLOOChuOBjeOBiA0KK+OBu+OBhOOBoCzjgaTjga3jgYoNCivjgZXjgo/jga/jgZ8s44G/44Gk44KLDQor44Gf44Gv44KJLOOBl+OCh+OBhuOBmA0KK+OBn+OBi+OBr+OBlyzjgb/jga3jgb7jgZUNCivjgZnjgZrjgY0s44Gy44Gn44GC44GNDQor44KI44GT44KE44G+LOOBkeOCk+OBmA0KK+OBhOOBl+OBi+OCjyzjgZHjgpPjgZgNCivjgYLjgZXjga4s44KI44GX44Gf44GLDQor44GL44Gt44GTLOOBl+OCheOBhuOBmA0KK+OBj+OCjeOBmyzjgojjgYbjgZnjgZENCivjgZXjgYvjgY3jgbDjgoks44GC44KJ44GfDQor44GL44GV44G+LOOBkeOBhOOBkw0KK+OBmeOBjuOChOOBvizjgojjgZfjgb7jgZUNCivjgZnjgaAs44Gm44Gk44KEDQor44Gf44Gq44GLLOOBguOChA0KK+OBpOOBvOOBhCzjgYjjgaTjgZMNCivjga/jgZfjgoLjgags44Gh44GI44GTDQor44G144GP44GhLOOBleOBqOOBvw0KK+OBguOCieOBhCzjgajjgoLjgZMNCivjgZ/jgarjgYss44GR44KT44GYDQor44KE44GX44G+LOOBquOBiuOChuOBjQ0KK+OBi+OCj+OBvuOBnyzjgZ/jgZHjga7jgooNCivjgZnjgpPjgaAs44GC44Gk44KEDQor44G/44Ga44Gf44GrLOOBv+OBruOCiw0KK+OChOOBvuOBk+OBlyzjga7jgorjgobjgY0NCivjgYLjgb7jgYzjgoQs44KG44KB44GuDQor44GC44KJ44GNLOOBsuOBleOCiA0KK+OBhOOBvuOBhCzjgajjgZfjga/jgosNCivjgYTjgb7jgZbjgY0s44Gf44GL44Gy44GVDQor44GN44KA44KJLOOBi+OBpOOBsuOBpw0KK+OBmeOBjuOChOOBvizjgYTjgZXjgYoNCivjgZnjgZrjgY0s44Gg44GE44GZ44GRDQor44Gk44KLLOOBv+OBruOCiw0KK+OBr+OBk+OBluOBjSzjgYLjgY3jgokNCivjgZ/jgY3jgZbjgo8s44Gk44KI44GXDQor44GE44Go44GGLOOBi+OBmuOBruOBtg0KK+OBvuOBmeOBoCzjgojjgZfjga7jgooNCivjgaTjgbDjgY0s44Gh44GC44GNDQor44G/44GZ44G/LOOBoeOBi+OBkw0KK+OChOOBhOOBnyzjgb7jgY0NCivjgYvjgo/jgaQs44Gy44Go44GXDQor44Gk44GL44GgLOOBn+OBkeOBsuOBkw0KK+OBquOBi+OCguOBqCzjgbXjgb/jgZMNCivjgbXjgarjgbPjgY0s44GV44Gq44GIDQor44KI44GX44GW44KPLOOBjeOCh+OBhuOBkw0KK+OBqOOBhuOBvizjgojjgYbjgZMNCivjgZvjgY0s44G+44KKDQor44KA44KJ44GfLOOBquOBiuOBjQ0KK+OBi+OBn+OChOOBvizjgb7jgZXjgbLjgo0NCivjgY3jgaks44GX44KF44GG44GYDQor44GT44Gw44KE44GXLOOBk+OBhuOBmA0KK+OBl+OBruOBv+OChCzjgajjgoLjgYvjgZoNCivjgZ/jgarjgYss44GL44Ga44KG44GNDQor44Gv44KJLOOCiOOBl+OBruOCig0KK+OCguOCiuOBn+OBqyzjgZfjgofjgYbjgbjjgYQNCivjgYTjgaHjga7jgZss44GL44Ga44KG44GNDQor44G144GY44KC44GoLOOBi+OBpOOChuOBjQ0KK+OBhuOBiOOBrizjgZPjgYbjgZgNCivjgZfjgZfjgaks44Go44GX44Gu44KKDQor44G/44GG44KJLOOBmeOBmeOCgA0KK+OBhuOBoeOBoCzjgovjgb/jgZMNCivjganjgYQs44GT44GG44GE44GhDQor44Gd44GZ44G/LOOBqOOBl+OChuOBjQ0KK+OCiOOBl+OBoCzjgb7jgZXjgobjgY0NCivjgZ/jgYvjga/jgZcs44Go44GX44GKDQor44KE44G+44GQ44GhLOOBquOBiOOBkw0KK+OBleOBlSzjgobjgY3jgZMNCivjga/jgZvjgYzjgo8s44GL44GK44KKDQor44GC44Gk44GfLOOCiOOBl+OBig0KK+OBhOOBoeOBi+OCjyzjgb7jgZXjgYLjgY0NCivjgYbjga4s44GV44Go44G/DQor44GK44GM44KPLOOChuOBjeOBkw0KK+OBiuOBoCzjgbLjgo3jgYvjgZoNCivjgZ/jgYvjgZXjgY0s44G+44GN44GTDQor44Gf44GL44Gv44GXLOOBpOOCiOOBlw0KK+OBn+OBoCzjgZ/jgaDjgZcNCivjgZ/jgarjgYss44Gy44KN44GXDQor44Go44GP44Gq44GMLOOBsuOCjeOBlw0KK+OBqOOBv+OBnyzjgZjjgoXjgpPjgZMNCivjgarjgYTjgajjgYYs44KK44GIDQor44Gv44KJ44GgLOOBiOOBv+OBkw0KK+OBsuOCieOBi+OCjyzjgajjgoLjgZMNCivjgbXjgarjgoLjgags44Gy44KN44Gf44GLDQor44Gp44Gw44GXLOOChuOBjQ0KK+OBv+OBhuOCiSzjgaHjgZMNCivjgojjgZfjgaAs44Gy44KN44GC44GNDQor44GK44GK44Gf44GRLOOBmOOCheOCk+OBmA0KK+OBj+OCieOBnyzjgoTjgZnjgbLjgo0NCivjgY/jgorjgZ8s44GV44Go44GXDQor44Gg44KTLOOBvuOBk+OBqA0KK+OCguOCiuOBl+OBvizjgZfjgpPjgZgNCivjgojjgZfjgaAs44KI44GG44GYDQor44KP44GL44Gw44KE44GXLOOChuOBv+OBkw0KK+OBguOBkuOBvuOBpCzjgbLjgo3jgb/jgaENCivjgYTjgZfjgZDjgo0s44GT44GZ44GRDQor44GL44Go44GGLOOBi+OBmuOBsuOCjQ0KK+OBleOBhOOBqOOBhizjgZfjgpPjgYTjgaENCivjgarjgYTjgajjgYYs44G/44Gh44KIDQor44G/44KE44G+44GILOOBqOOBl+OChA0KK+OBi+OBqeOCj+OBjSzjgYLjgaTjgZcNCivjgbXjgY/jgoLjgags44G/44GN44GKDQor44Gr44GX44Gv44KJLOOBguOBjeOCiQ0KK+OBiuOBi+OChOOBvizjgYvjgZrjgarjgooNCivjgYrjgYvjgoTjgZks44G/44GI44GTDQor44GP44KN44GL44KPLOOBqOOBiuOCiw0KK+OBiuOBjeOBnyzjgojjgZfjgbLjgZUNCivjgYrjgY/jgb/jgoQs44G+44GV44GL44GaDQor44GK44GP44KA44KJLOOBoOOBhA0KK+OBiuOBruOBoCzjgarjgovjgb8NCivjgYrjga7jgafjgoks44Gy44Go44GXDQor44GK44GuLOOBr+OCi+OChuOBjQ0KK+OBiuOBrizjgarjgYrjgbXjgb8NCivjgYrjga4s44KI44GX44G144G/DQor44G+44Gk44GELOOBpuOCi+OBig0KK+OBiuOBneOBiOOBjOOCjyzjgoTjgZnjgarjgooNCivjgYrjgZbjgY0s44Gu44G244KG44GNDQor44GK44Gc44GNLOOBsuOCjeOChuOBjQ0KK+OBn+OBi+OBrizjgYTjgZXjgYoNCivjgorjgofjgYbjgYvjgYQs44KI44GX44GNDQor44GV44GS44GV44GLLOOCiuOCheOBhuOBhOOBoQ0KK+OBleOBjuOChCzjgY3jgofjgYbjgYTjgaENCivjgZXjgYTjgZ8s44G+44GV44Gy44KNDQor44GV44GE44Go44GGLOOBguOBjeOBv+OBpA0KK+OBleOBhOOBqOOBhizjgZTjgo3jgYYNCivjgZXjgYTjgajjgYYs44Gy44KN44KG44GNDQor44GV44GE44Go44GGLOOBpOOBreOBig0KK+OBleOBhOOBqOOBhizjgorjgYsNCivjgZXjgYvjgZDjgaEs44Gy44Gn44GC44GNDQor44GV44GL44GELOOBsuOCjeOBvw0KK+OBl+OBvuOBoCzjgbLjgo3jgZcNCivjgZXjgYvjgY3jgbDjgoks44GE44Gk44KN44GGDQor44GV44GL44KC44GoLOOBkeOCk+OBmA0KK+OBleOBi+OCguOBqCzjgb7jgZXjgY0NCivjgZXjgYvjgoLjgags44KA44Gt44Gy44KNDQor44GV44GL44KKLOOBruOBtuOBsuOCjQ0KK+OBleOBi+OBnyzjgZXjgajjgosNCivjgZXjgY/jgb4s44GX44KT44GYDQor44GV44GP44KJ44GELOOBn+OBi+OBruOBtg0KK+OBleOBj+OCieOBhCzjgZ/jgYvjgZcNCivjgZXjgY/jgonjgYQs44KI44GX44Gy44KNDQor44GV44KT44Gu44GG44G+44KLLOOChuOBjeOBig0KK+OBleOBrizjgobjgZ/jgYsNCivjgZXjgZXjgbks44Gf44Gk44KN44GGDQor44GV44GV44GNLOOBl+OCk+OBlA0KK+OBleOBleOBjSzjgajjgoLjgbLjgo0NCivjgZXjgZXjgY0s44Gf44GR44GXDQor44GV44GV44GNLOOBquOBiuOBqA0KK+OCiOOBl+OBoCzjgbLjgo3jgZcNCivjgZXjgajjgYYs44KI44GX44Gy44GTDQor44GV44Go44GGLOOBi+OBmuOBruOCig0KK+OBleOBqOOBhizjgZ/jgYvjga7jgooNCivjgZXjgajjgYYs44Gv44KE44GoDQor44GV44Go44GGLOOChOOBmeOBsuOBkw0KK+OBleOBqOOBhizjgojjgZfjgobjgY0NCivjgZXjgajjgYYs44KI44GX44GoDQor44GV44Go44GGLOOBguOBjeOBig0KK+OBleOBqOOBhizjgb7jgZXjgZMNCivjgZXjgajjgYYs44Go44KC44GTDQor44GV44Go44GGLOOChuOBhuOBhOOBoQ0KK+OBleOBqOOBhizjgaHjgYLjgY0NCivjgZXjgajjgYYs44GL44Ga44KEDQor44GV44Go44GGLOOBvuOBleOBvw0KK+OBleOBqOOBhizjgZXjgajjgZcNCivjgZXjgo/jgYTjgacs44KG44GG44GE44GhDQor44GV44KP44GELOOBk+OBhuOBhOOBoeOCjeOBhg0KK+OBleOChOOBquOBjizjgb7jgooNCivjgZvjgYzjgo8s44KI44GX44Gy44KNDQor44Gb44GE44G/44KELOOBsuOCjeOBlw0KK+OBm+OBhOOChOOBvizjgZfjgZLjgY0NCivjgZvjgY3jgYvjgo8s44GC44GN44KJDQor44Gb44GNLOOBk+OBhuOBmA0KK+OBm+OBjSzjgZ/jgZHjgZcNCivjgZvjgpPjgaAs44Gy44KN44Gf44GLDQor44Gb44KT44GU44GPLOOBjeOCh+OBhuOBkw0KK+OBm+OBrizjgajjgZfjgYLjgY0NCivjgZvjgZfjgoIs44GT44GG44GYDQor44Gb44Gf44GLLOOBkeOBhA0KK+OBmeOBjCzjgorjgofjgYbjgYTjgaENCivjgb/jgarjgb8s44KE44GZ44GXDQor44GX44Gw44GfLOOBoeOBguOBjQ0KK+OBl+OBtuOChCzjgbLjgo3jgb/jgaENCivjgZfjgbbjgoQs44Gk44KI44GXDQor44GX44G244KELOOBvuOBleOBruOCig0KK+OBl+OBhOOBrizjgbLjgo3jgZMNCivjgZfjgYvjgZ8s44Gf44GL44Gy44KNDQor44GX44GN44G2LOOBsuOCjeOBlw0KK+OBl+OBvuOBoCzjgb7jgZXjgbLjgo0NCivjgZfjgb7jgaAs44Gy44KN44GXDQor44GX44G+44GM44G/LOOBqOOBl+OBguOBjQ0KK+OBl+OBvuOCguOCiizjgb7jgZXjgbLjgZMNCivjgZfjgb7jgoDjgoks44KG44GN44Gu44KKDQor44GX44G+44GW44GNLOOBk+OBhg0KK+OBl+OBvuOBluOBjSzjgZ/jgYvjgYLjgY0NCivjgZfjgb/jgZos44GI44GE44Ge44GGDQor44GX44G/44GaLOOCiuOBiA0KK+OBl+OBv+OBmizjgbLjgo3jgZcNCivjgZfjgoLjgaAs44GR44GE44G/44KTDQor44GX44KC44Gy44KJLOOBk+OBhuOBn+OCjeOBhg0KK+OBl+OBruOBr+OCiSzjgYLjgY3jgbLjgo0NCivjgZfjga7jga/jgoks44G+44Gq44G2DQor44GX44Gu44GW44GNLOOBruOBtuOBkw0KK+OBl+OBruOBluOBjSzjgbLjgo3jgY0NCivjgZfjgpPjgb0s44GL44GZ44G/DQor44GX44KT44Gf44GrLOOChuOBhuOBmA0KK+OBiuOBiuOBjeOBqSzjgZ3jgajjgbLjgo0NCivjgZfjgYrjgazjgb4s44GN44KI44G/DQor44GX44GK44GfLOOBj+OBq+OBguOBjQ0KK+OBl+OBiuOChCzjgb7jgZXjgbLjgo0NCivjgZfjgYrjgZbjgo8s44GE44GV44GKDQor44GX44KJ44GELOOBl+OBkuOBjQ0KK+OBl+OCieOBleOBjSzjgbLjgo3jgZcNCivjgZfjgonjgajjgoos44G+44GV44Go44GXDQor44GX44KJ44Go44KKLOOBn+OBi+OBsuOCjQ0KK+OBl+OCjeOBjSzjgbLjgajjgZcNCivjgZfjgo3jgZfjgZ8s44GX44GS44GNDQor44GL44GX44G+LOOCiOOBl+OBig0KK+OBl+OCheOBhizjgZTjgYTjgaENCivjgYTjgb7jgYQs44Gy44Gn44Gv44KLDQor44Gd44GI44GgLOOBsuOCjeOBkw0KK+OBneOBjCzjgYTjgZrjgosNCivjgZ3jgo8s44GL44Ga44Gq44KKDQor44GZ44GgLOOBk+OBhuOBhOOBoQ0KK+OBmeOBoCzjgb7jgZXjgosNCivjgZnjgaAs44Gq44GK44GNDQor44GZ44GI44GgLOOBruOCiuOCiOOBlw0KK+OBmeOBiOOCguOCiizjgZXjgY3jgZMNCivjgZnjgYjjgYrjgYss44GX44KH44GG44GE44GhDQor44GZ44GM44KP44KJLOOBl+OCk+OBmA0KK+OBmeOBkuOBrizjgoTjgZnjgbLjgo0NCivjgZnjgY7jgoLjgags44KE44GZ44GKDQor44GZ44GO44GfLOOChuOBhuOBhOOBoeOCjQ0KK+OBmeOBjuOChOOBvizjgb/jgaTjgYoNCivjgZnjgY7jgoTjgb4s44GR44GE44GE44Gh44KN44GGDQor44GZ44GO44KE44G+LOOBiOOBhOOBmA0KK+OBmeOBv+OBqOOCgizjga7jgbzjgosNCivjgZnjgb8s44KG44GNDQor44GZ44Gq44GMLOOBsuOBp+OChuOBjQ0KK+OBmeOBluOBjSzjgabjgaTjgoQNCivjgZnjgZrjgY0s44Gm44KL44G/DQor44GZ44Ga44GNLOOBguOBjeOCiQ0KK+OBmeOBmuOBjSzjgoTjgZnjgZcNCivjgZnjgZrjgY0s44KG44GN44GKDQor44GZ44Ga44GNLOOBl+OBruOBtg0KK+OBmeOBmuOBjSzjgZfjgpPjgYTjgaENCivjgZnjgZrjgY0s44Go44GX44KEDQor44GZ44Ga44GNLOOBsuOCjeOBlw0KK+OBmeOBmuOBjSzjgYvjgZrjgYLjgY0NCivjgZnjgZrjgY0s44GR44GE44GYDQor44GK44GK44Gr44GXLOOBvuOBleOBr+OCiw0KK+OBmeOBmuOBjSzjga7jgbbjgYoNCivjgZnjgZrjgY0s44Gu44KK44KG44GNDQor44GZ44Ga44GNLOOCiuOCh+OBhuOBmeOBkQ0KK+OBn+OBvCzjgZfjgpMNCivjgZ/jgbbjgaEs44Gf44Gk44KEDQor44Gf44G244GVLOOBqOOBl+OBteOBvw0KK+OBn+OBoeOBi+OCjyzjgoTjgZnjgobjgY0NCivjgbLjgonjgY0s44KG44GG44GE44GhDQor44Gf44GM44GELOOChOOBmeOBlw0KK+OBn+OBjOOCjyzjgb/jgbsNCivjgZ/jgYws44Gu44G244Gf44GLDQor44Gf44GQ44GhLOOBv+OBleOBig0KK+OBn+OBkOOBoSzjgZfjgpMNCivjgZ/jgZDjgaEs44G/44Gq44GTDQor44Gf44GL44Gw44Gf44GRLOOCiOOBhuOBhOOBoQ0KK+OBn+OBi+OBjizjgZHjgpPjgZ/jgo3jgYYNCivjgZ/jgYvjga/jgoks44Go44GX44KEDQor44Gf44GL44Gv44GXLOOBqOOBl+OChuOBjQ0KK+OBn+OBi+OBr+OBlyzjgbLjgo3jgZcNCivjgZ/jgYvjga/jgZcs44Gb44GE44GE44GhDQor44Gf44GL44Gv44GXLOOCiOOBl+OBsuOBlQ0KK+OBn+OBi+OBr+OBlyzjga/jgovjgZXjgaANCivjgZ/jgYvjga/jgZcs44G+44GV44GTDQor44Gf44GL44Gv44GXLOOBvuOBleOChuOBjQ0KK+OBn+OBi+OBr+OBlyzjgbLjgafjgYoNCivjgZ/jgYvjga/jgZcs44GL44Ga44GX44GSDQor44Gf44GL44Gv44GXLOOBruOCiuOBsuOBkw0KK+OBn+OBi+OBr+OBlyzjgajjgojjgb8NCivjgZ/jgYvjga/jgZcs44G/44Gu44KLDQor44Gf44GL44GE44GXLOOBqOOCguOBguOBjQ0KK+OBk+OBsOOChOOBlyzjgYvjgZrjgbLjgo0NCivjgZ/jgYvjgb8s44G/44Gu44KLDQor44Gf44GL44KA44KJLOOBl+OCjeOBhg0KK+OBn+OBi+OBquOBlyzjgojjgZfjga7jgooNCivjga/jgZvjgYzjgo8s44Gy44KN44KG44GNDQor44Gf44GL44GuLOOBjeOCh+OBhuOBkw0KK+OBn+OBi+OBiuOBiyzjgZ/jgYvjgY0NCivjgZ/jgYvjgYrjgYss44Gu44G244KG44GNDQor44Gf44GL44Gf44GrLOOBguOBjeOCiQ0KK+OBn+OBi+OBpOOBmCzjgYvjgaTjgZgNCivjgZ/jgYvjgaTjgYss44GN44KI44GXDQor44Gf44GL44GkLOOBvuOBleOBvw0KK+OBn+OBi+OChOOBvizjgZfjgpPjgYTjgaENCivjgZ/jgYvjgoTjgb4s44Go44GK44KLDQor44Gf44GL44KE44G+LOOChOOBmeOBlw0KK+OBn+OBkeOBoCzjgZPjgYbjgYTjgaENCivjgZ/jgZHjgaAs44KE44GZ44Gu44KKDQor44Gf44GR44GgLOOBn+OBi+OBi+OBmg0KK+OBn+OBkeOBoCzjgarjgYrjgbLjgagNCivjgZ/jgZHjgoLjgags44Gu44Ge44G/DQor44Gf44GR44KC44GoLOOBi+OBpOOBlw0KK+OBn+OBkeOBhuOBoSzjgZ/jgYvjgZMNCivjgZ/jgZHjgYbjgaEs44Gy44KN44GL44GaDQor44Gf44GR44GG44GhLOOChuOBhuOBhOOBoQ0KK+OBn+OBkeOBhuOBoSzjgajjgYrjgosNCivjgZ/jgY3jgoLjgags44Gf44GL44Gy44KNDQor44Gf44G+44GhLOOBsuOCjeOBlw0KK+OBn+OCgOOCiSzjgajjgZfjgbLjgo0NCivjgZ/jgarjgbks44Gk44GL44GVDQor44Gf44Gq44GLLOOBkeOBhOOBkw0KK+OBn+OBquOBiyzjgarjgY7jgZUNCivjgZ/jgarjgYss44Gf44GL44KG44GNDQor44Gf44Gq44GLLOOBvuOBjQ0KK+OBn+OBquOBiyzjgbLjgo3jgbXjgb8NCivjgZ/jgarjgYss44GP44Gr44Gy44GTDQor44Gf44Gq44GLLOOBi+OBiuOCig0KK+OBn+OCk+OBoCzjgb/jgY3jgZMNCivjgZ/jgavjgaAs44GN44G/44G7DQor44Gf44Gr44GM44KPLOOCiOOBl+OBn+OBiw0KK+OBn+OBq+OCgOOCiSzjgojjgZfjgarjgooNCivjgZ/jgass44Gy44KN44G244G/DQor44Gf44GX44KNLOOChuOBjeOBig0KK+OBsuOCieOBleOBiyzjga7jgbbjgobjgY0NCivjgZ/jgo/jgaAs44GI44GE44GI44GkDQor44Gf44KP44KJLOOBl+OCk+OBmA0KK+OBpuOCieOBoCzjgajjgojjgbLjgZUNCivjgabjgonjgZXjgY0s44Gy44KN44KG44GNDQor44Gm44KJ44GX44G+LOOBsuOBp+OBkw0KK+OBk+OBsOOChOOBlyzjgZ/jgYTjgZ7jgYYNCivjgabjgonjgYbjgaEs44KE44GZ44G/44GkDQor44KP44Gf44Gq44G5LOOBl+OCk+OBhOOBoQ0KK+OBqOOBjeOBqOOCgizjgb7jgZXjga7jgooNCivjgajjgY/jgaAs44Gf44GL44KG44GNDQor44GV44GP44KJ44GOLOOBruOCiuOBsuOBlQ0KK+OBqOOBv+OCguOBqCzjgb7jgZXjgbLjgZMNCivjgajjgb/jgZ8s44Gy44Gn44GKDQor44Go44KC44G/LOOBsuOCjeOBv+OBpA0KK+OBqOOCk+OBkOOBhizjgb7jgZXjgZcNCivjgajjgorjgYbjgb8s44Gy44KN44GZ44GRDQor44Go44KI44GgLOOBi+OBpOOBsuOBlQ0KK+OBqOOCiOOBleOBqCzjgbLjgo3jgZcNCivjgajjgojjgZfjgb4s44Gm44Gk44KEDQor44Gk44Gh44GgLOOBmOOCheOCkw0KK+OBpOOBoeOCguOBqCzjgb7jgZPjgagNCivjgaTjgaHjgoQs44KB44GQ44G/DQor44Gk44GgLOOBn+OBpOOCjeOBhg0KK+OBpOOBoCzjgobjgYsNCivjgaTjgZjjgoLjgags44KG44GN44GKDQor44Gk44GYLOOBruOCiuOBig0KK+OBpOOBmCzjgbLjgo3jgZcNCivjgaTjgYvjgZTjgZcs44Go44GX44GL44GaDQor44Gk44GL44KC44GoLOOBkeOBhOOBmA0KK+OBpOOBjeOBoOOBpizjgbLjgo3jgZcNCivjgoLjgorjgZ8s44GT44GG44Ge44GGDQor44Gk44KL44GfLOOBl+OBruOBtg0KK+OBpOOBl+OBvizjgajjgoLjgYLjgY0NCivjgaTjgZcs44Go44GX44Gy44GTDQor44Gk44Gk44G/LOOBmeOBv+OBqA0KK+OBpOOChOOBvizjgoTjgZnjgY0NCivjgYbjgaHjgaAs44KG44GN44GKDQor44GG44Gh44GgLOOCiOOBhuOBkw0KK+OBhuOBoeOChOOBvizjgZ/jgZHjgZcNCivjgYbjgaAs44KG44GL44KKDQor44GG44GI44GgLOOBleOBiuOCig0KK+OBhuOBiOOBoCzjgbLjgo3jgZcNCivjgaTjgYvjgoLjgags44Gh44GI44G/DQor44GG44GI44GgLOOBsuOBp+OBig0KK+OBjeOBjeOCh+OBhizjgojjgZfjgZ/jgYsNCivjgYbjgYjjgaAs44GE44GP44GIDQor44GG44GI44GQ44KKLOOBqOOBiuOCiw0KK+OBhuOBiOOBr+OCiSzjgbLjgo3jgobjgY0NCivjgYbjgYjjgb7jgaQs44GL44Gk44KEDQor44GV44Go44GGLOOBi+OBmuOBsuOBkw0KK+OBhuOBiOOBrizjgbLjgafjgZ/jgYsNCivjgYbjgYjjga4s44KI44GX44GTDQor44GG44GI44GuLOOBsuOCjeOChuOBjQ0KK+OBhuOBiOOBrizjgZfjgZLjgY0NCivjgYbjgYjjga4s44Gy44Gn44GNDQor44GG44GI44KE44G+LOOBsuOCjeOBruOCig0KK+OBhuOCgeOBoCzjgYvjgarjgYYNCivjgYbjgoHjgYvjgo8s44GL44KIDQor44Gq44GM44GfLOOBruOCiuOBkw0KK+OBhuOCieOBlCzjgajjgojjgbLjgo0NCivjgYbjgovjgZfjgZbjgYss44KG44GN44GKDQor44Gf44GL44Gv44GXLOOBl+OCh+OBhuOBhOOBoQ0KK+OBhuOBpOOBruOBv+OChCzjgZfjgpPjgbrjgYQNCivjgo/jgaAs44GL44Ga44Gy44KNDQor44KP44GgLOOBv+OBjeOBiA0KK+OCj+OBoCzjgZfjgZrjgYoNCivjgo/jgYvjgbDjgoTjgZcs44KG44G/44GTDQor44KP44GL44Gw44KE44GXLOOBi+OBmuOBsuOBkw0KK+OCj+OBi+OBvuOBpCzjgYvjgZrjgY0NCivjgo/jgYvjgb7jgaQs44GT44GG44GYDQor44KP44GN44KC44GoLOOBquOCiuOBqA0KK+OCj+OBj+OBhCzjgZfjgoXjgYbjgZgNCivjgYTjgajjgYQs44KI44GX44Gy44GVDQor44KP44Gf44G5LOOBi+OBpOOChA0KK+OCj+OBn+OBuSzjgarjgYrjgZ/jgYsNCivjgo/jgZ/jgarjgbks44GX44KF44KT44GE44GhDQor44KP44Gf44Gq44G5LOOBsuOCjeOBlw0KK+OCj+OBn+OBquOBuSzjgZ/jgaDjgZcNCivjgo/jgZ/jgarjgbks44GI44GE44GE44GhDQor44KP44Gf44Gq44G5LOOBsuOBp+OBqOOBlw0KK+OCj+OBn+OBquOBuSzjgbLjgo3jgobjgY0NCivjgo/jgZ/jgarjgbks44Gy44KN44KG44GNDQor44KP44Gf44Gs44GNLOOBvuOBleOCiw0KK+OChOOBtuOBl+OBnyzjgb/jganjgooNCivjgoTjgbbjgZ8s44G/44Gk44KI44GXDQor44KE44G244GG44GhLOOBl+OCh+OBhuOBuOOBhA0KK+OChOOBmOOBvizjgojjgYbjgZMNCivjgoTjgY/jgZfjgZgs44G144G/44Gy44KNDQor44KE44G+44GgLOOChuOBjeOBkw0KK+OChOOBvuOBoCzjgbLjgo3jgYgNCivjgoTjgb7jgaAs44Gy44GVDQor44KE44G+44GgLOOBguOBjeOBruOBtg0KK+OChOOBvuOBoCzjgYLjgY3jgYoNCivjgoTjgb7jgaAs44GI44GE44GZ44GRDQor44KE44G+44GM44G/LOOBsuOCjeOBteOBvw0KK+OChOOBvuOBkOOBoSzjgZjjgo3jgYYNCivjgoTjgb7jgZDjgaEs44GT44GG44GYDQor44KE44G+44GL44KPLOOBl+OCkw0KK+OChOOBvuOBk+OBlyzjgZ/jgYvjgZcNCivjgoTjgb7jgoLjgags44GC44GN44Gy44KNDQor44KE44G+44KC44GoLOOBkeOBhA0KK+OChOOBvuOCguOBqCzjgb7jgZXjgb/jgaENCivjgoTjgb7jgoLjgags44Gy44KN44KG44GNDQor44KE44G+44KC44GoLOOBiOOBhOOBmA0KK+OChOOBvuOCguOBqCzjgbLjgo3jgbXjgb8NCivjgoTjgb7jgoLjgags44G+44GV44Gu44KKDQor44KE44G+44KC44GoLOOBvuOBleOBqOOBlw0KK+OBi+OCj+OBkOOBoSzjgYLjgY3jgokNCivjgoTjgb7jgoDjgo0s44Gy44KN44G/44GhDQor44GE44KP44GfLOOBn+OBkeOBlw0KK+OChOOBvuOBiuOBiyzjgYvjgZrjgbLjgo0NCivjgoTjgb7jgZXjgY0s44Gy44Gn44GP44GrDQor44KE44G+44GX44GfLOOBsuOCjeOBlw0KK+OChOOBvuOBl+OBnyzjgaTjgajjgoANCivjgoTjgb7jgZfjgZ8s44Go44GX44GC44GNDQor44KE44G+44GX44GfLOOBguOBjeOBkw0KK+OChOOBvuOBl+OBnyzjgbLjgo3jgobjgY0NCivjgoTjgb7jgZfjgZ8s44GL44Ga44Gy44GnDQor44KE44G+44GX44GfLOOBi+OBpOOChuOBjQ0KK+OChOOBvuOBl+OBnyzjgYLjgY3jgokNCivjgoTjgb7jgZbjgY0s44Gy44KN44KG44GNDQor44KE44G+44GW44GNLOOBi+OBiuOCiw0KK+OChOOBvuOBluOBjSzjgZPjgYbjgZgNCivjgoTjgarjgYzjgo8s44G+44GV44Gy44KNDQor44Gf44GL44GK44GLLOOBsuOBi+OCiw0KK+OChOOBquOBmyzjgorjgofjgYbjgYTjgaENCivjgoTjga4s44Go44KC44KG44GNDQor44KE44GKLOOBiOOCiuOBkw0KK+OChOOBmeOBoCzjgajjgZfjgbXjgb8NCivjgoTjgZnjgYvjgo8s44Gy44Go44G/DQor44KI44GM44GELOOBk+OBhuOBhOOBoQ0KK+OCiOOBk+OBjOOCjyzjgZvjgYTjgZgNCivjgojjgZPjgZXjgo8s44G+44GV44KG44GNDQor44KI44GT44GfLOOBv+OBquOBkw0KK+OCiOOBk+OBnyzjgoTjgZnjgZcNCivjgojjgZPjgYbjgaEs44Gk44Go44KADQor44Gq44GL44KE44G+LOOBguOBpOOBlw0KK+OCiOOBk+OChOOBvizjga/jgovjgbLjgZMNCivjgojjgZPjgoTjgb4s44G+44GV44GKDQor44KI44Gt44Gv44KJLOOBqOOBl+OChuOBjQ0KK+OCiOOBreOCgOOCiSzjgZ/jgaDjgZcNCivjgojjgZfjgaAs44G+44GV44Go44GXDQor44G/44KE44KA44KJLOOBpOOBqOOCgA0KK+OCiOOBl+OBoCzjgY3jgb/jgYLjgY0NCivjgojjgZfjgaAs44G+44GV44GL44GkDQor44Gq44GLLOOCiOOBl+OBsuOCjQ0KK+OCiOOBl+OCgOOCiSzjgojjgYbjgYTjgaENCivjgojjgZfjgoDjgoks44Gy44KN44G/DQor44Gs44G+44GKLOOBv+OBreOBig0KK+OCiOOBl+OBluOBjSzjgYjjgYTjgZgNCivjgarjgYvjgoDjgoks44GR44KT44GYDQor44KG44GC44GVLOOCiuOCh+OBhuOBnw0KK+OChuOBkizjgZ/jgYvjgbLjgo0NCivjgobjgYvjgo8s44KI44GX44Gf44GLDQor44G+44Gk44GgLOOCiOOBl+OBpOOBkA0KK+OBguOBuSzjgoTjgZnjgbLjgo0NCivjga/jgZvjgYzjgo8s44GL44Gk44G+44GVDQor44Gv44GX44KC44GoLOOBsuOBqOOBlw0KK+OBsuOCieOBpOOBiyzjgZ/jgoLjgaQNCivjgbvjgZfjgYvjgo8s44G/44Gu44KLDQor44G744Gd44KELOOBl+OCh+OBhuOBmA0KK+OBhOOBl+OBr+OCiSzjgZ/jgYvjgZcNCivjgYTjgo/jgY0s44Gf44Gh44Gv44KLDQor44GL44Gt44GgLOOBk+OBhuOBmA0KK+OBjeOCgOOCiSzjgZ/jgZHjgZcNCivjgZPjgpPjga4s44G+44GT44GoDQor44G+44Gk44GgLOOCiOOBl+OBsuOBlQ0KK+OBv+OChOOBl+OBnyzjgZfjgZLjgajjgoINCivjgZXjgYvjgoLjgags44G+44KKDQor44Gu44KA44KJLOOBl+OCk+OBhOOBoQ0KK+OBiuOBiuOBsOOChOOBlyzjgYjjgaTjgZMNCivjgZXjgYTjgajjgYYs44KG44GN44GIDQor44GV44GV44GM44KPLOOChuOBhuOBkw0KK+OBleOBqOOBhizjgoTjgojjgYQNCivjgZfjgYws44G+44GV44G/44GkDQor44GX44Gu44Gv44KJLOOBvuOBleOBlw0KK+OBl+OCh+OBhizjgoHjgZDjgb8NCivjgZ/jgZHjgYzjgo8s44G/44GI44GTDQor44Gf44Gk44G/LOOChuOBn+OBiw0KK+OBqOOBv+OBiCzjga7jgorjgbLjgZMNCivjgo/jgZ/jgarjgbks44G+44KC44KLDQor44KE44G+44GgLOOChuOBhuOBhOOBoQ0KK+OChOOBvuOBoCzjgajjgb/jgbLjgo0NCivjgoTjgb7jgoLjgags44Gf44GR44GXDQor44KE44G+44GW44GNLOOBvuOBleOBig0KK+OBk+OBvuOBpOOBluOBjSzjgaHjgYLjgY0NCivjgbXjgaHjgaAs44G+44GV44Gy44GTDQor44Gf44Gq44GLLOOBi+OBmuOChuOBjQ0KK+OBr+OChOOBlyzjgZXjgbvjgooNCivjgarjgYzjgZ8s44Gb44GE44GE44GhDQor44Gw44GwLOOBvuOBk+OBqA0KK+OBguOBi+OBvizjgZ/jgYvjgZcNCivjgYvjgZbjgb4s44GL44Ga44GX44GSDQor44KC44KKLOOBsuOCjeOBguOBjQ0KK+OBhOOBkeOBoCzjgaTjgojjgZcNCivjgo/jgZ/jgarjgbks44GL44Gk44GoDQor44G/44G+LOOBteOBv+OBig0KK+OBguOCk+OBqeOBhizjgajjgoLjgbLjgo0NCivjgb7jgYjjgZ7jga4s44G/44Gk44Gy44KNDQor44GK44Gf44GLLOOBk+OBhuOBhOOBoQ0KK+OBr+OChOOBlyzjgb7jgZXjgbLjgo0NCivjgYbjgYjjga4s44GL44Ga44Gf44GLDQor44Gk44Gu44GgLOOBkeOBhOOBhOOBoQ0KK+OBmeOBqeOBhizjgZ/jgYvjgajjgZcNCivjgZXjgYvjgoLjgags44G/44Gk44GC44GNDQor44Gf44Gq44GLLOOCguOCiuOBl+OBkg0KK+OBk+OBqOOBhuOBoCzjgobjgY3jga7jgooNCivjgYvjgovjgbks44G144G/44Gy44KNDQor44GV44GE44Go44GGLOOBpuOCi+OCiOOBlw0KK+OBsuOCieOBrizjgbLjgo3jgZMNCivjgZXjgajjgYYs44Gy44KN44G+44GVDQor44Gq44GL44KE44G+LOOBkeOCk+OBhOOBoQ0KK+OBruOBoCzjgobjgorjgZMNCivjgb4s44KE44GZ44Gy44KNDQor44GX44Gq44GM44KPLOOBoeOBi+OCiQ0KK+OBquOBjOOChOOBmSzjgZPjgYbjgZgNCivjgYLjgYrjgY0s44GT44GG44GYDQor44Gq44GL44GfLOOBr+OChOOBqA0KK+OBv+OBj+OCiuOChCzjgabjgovjgobjgY0NCivjgb7jgovjgoTjgb4s44Gy44Gn44Go44GXDQor44GI44Gh44Gc44KTLOOBsuOBleOBlw0KK+OBquOBi+OBq+OBlyzjgZfjgofjgYbjgYTjgaENCivjga/jgY7jgYos44Go44KC44Gy44GTDQor44Gf44KA44KJLOOBvuOBleOBguOBjQ0KK+OBn+OBkOOBoSzjgojjgZfjgajjgZcNCivjgYrjgZbjgo8s44GK44GV44KADQor44KE44GK44GE44GfLOOBqOOBl+OBsuOCjQ0KK+OBguOBleOBrizjga7jgorjgoTjgZkNCivjgY/jgZXjga4s44Gm44KL44Gy44KNDQor44Gv44G+44GgLOOBvuOBleOBmA0KK+OBhOOCiuOChOOBvizjga/jgarjgZMNCivjgoDjgonjgZ8s44Gq44GK44KEDQor44GC44GV44GuLOOCiOOBhuOBmA0KK+OBn+OBi+OBrizjgZHjgpPjgYTjgaENCivjgoTjgb7jgZDjgaEs44GC44GN44Go44GXDQor44KA44KJ44GL44G/LOOBruOCiuOBsuOCjQ0KK+OBn+OBquOBiyzjgYvjgaTjgZgNCivjgZ/jgYvjgYrjgYss44GY44KF44KT44GE44GhDQor44GZ44Ga44GNLOOBv+OBleOBuw0KK+OBv+OBreOBjuOBlyzjgarjgYrjgoQNCivjgYLjgbks44Gu44KK44GC44GNDQor44GC44G5LOOBv+OBmuOBuw0KK+OBguOBuSzjgZfjgoXjgpPjgZgNCivjgYLjgbks44Gy44Gn44GNDQor44GC44GM44Gk44G+LOOBguOBjeOCiQ0KK+OBguOBhOOBluOCjyzjgZ/jgYvjgZcNCivjgYLjgYvjgYTjgZEs44GY44KF44KT44GTDQor44GC44GN44KC44GoLOOCiOOBl+OBruOBtg0KK+OBguOBjeOBn+OChCzjgobjgY3jgYoNCivjgYLjgY3jgoTjgb4s44Go44GX44KG44GNDQor44GC44GP44GkLOOBl+OBkuOBjQ0KK+OBguOBvuOBrizjgZ/jgaDjgYvjgaQNCivjgYLjgb7jga4s44GC44Gk44Gu44KKDQor44GC44G+44GuLOOBteOBv+OBiA0KK+OBguOCgeOBv+OChCzjgYvjgZrjgb8NCivjgYLjgpPjganjgYYs44G+44GV44Gy44KNDQor44GC44KT44Gp44GGLOOBpuOCk+OBm+OBhA0KK+OBguOCk+OBluOBhCzjgobjgYbjgZgNCivjgYLjgYrjgY0s44KK44Gk44GTDQor44GC44GK44GNLOOBn+OBi+OChuOBjQ0KK+OBguOBiuOBjSzjgZXjgaDjga/jgosNCivjgYLjgonjgYQs44Gv44KL44Gy44GoDQor44GC44KJ44GNLOOCiOOBhuOBhOOBoQ0KK+OBguOCieOBjSzjgZfjgZLjgb/jgaQNCivjgYLjgonjgoQs44KI44GX44Gf44GLDQor44GC44KK44KI44GXLOOBqOOCguOBruOBtg0KK+OBguOBleOBsuOBqizjgojjgYbjgYTjgaENCivjgYLjgZXjgYQs44Gq44KK44GoDQor44GC44GV44G/LOOBsuOCjeOChuOBjQ0KK+OBguOBleOBpOOBkSzjgYvjgZrjgobjgY0NCivjgYLjgZ0s44GP44Gr44GL44GaDQor44GC44Ga44G+LOOBvuOBk+OBqA0KK+OBguOBmuOBvizjgZXjgajjgZMNCivjgbDjgbAs44GZ44G/44GTDQor44Gw44GwLOOBqOOCguOBkw0KK+OBi+OBjCzjgojjgZfjgY0NCivjgbDjgbAs44KG44GG44GZ44GRDQor44Gw44KTLOOChuOBiw0KK+OBs+OCi+OBi+OCjyzjgozjgYTjgZMNCivjgbzjgYYs44G144GP44GKDQor44Gg44GE44GULOOBl+OCheOCk+OBmeOBkQ0KK+OBoOOBhOOBlOOBjyzjgZjjgoXjgpPjgYTjgaENCivjganjgbDjgZcs44Go44GK44KLDQor44GI44Gz44GV44KPLOOBsuOCjeOBlw0KK+OBiOOBr+OCiSzjgbLjgo3jgajjgZcNCivjgbXjgaHjgYzjgb8s44KK44KF44GG44Gf44KN44GGDQor44G144GY44Gw44KE44GXLOOBsuOCjeOBlw0KK+OBteOBmOOBiOOBoCzjgorjgofjgYbjgYTjgaENCivjgbXjgZjjgYQs44Gb44GE44GUDQor44G144GY44GELOOBl+OCk+OBmA0KK+OBteOBmOOBhCzjgojjgZfjga7jgooNCivjgbXjgZjjgYQs44G+44GV44KEDQor44G144GY44GELOOBsuOBp+OBguOBjQ0KK+OBleOBi+OCguOBqCzjgZfjgoXjgYbjgbjjgYQNCivjgY3jgZ/jgaAs44GI44GE44GE44GhDQor44G144GY44GELOOBi+OBiuOCiw0KK+OBteOBmOOBhCzjgZfjgpPjgYTjgaENCivjgbXjgZjjgYQs44Gf44Gk44KEDQor44G144GY44GL44KPLOOBi+OBmuOBsuOBkw0KK+OBteOBmOOCguOCiizjgY3jgofjgYbjgZMNCivjgbXjgZjjgoLjgags44Gy44KN44GXDQor44G144GY44GuLOOBm+OBhOOBmA0KK+OBteOBmOOBleOCjyzjgbLjgo3jgZ/jgYsNCivjgbXjgZjjgZ8s44Go44GX44KEDQor44G144GY44GfLOOBsuOCjeOBlw0KK+OBteOBmOOBnyzjgZHjgYTjgZgNCivjgY/jgZnjgoLjgags44Gy44KN44G144G/DQor44G144GY44KP44KJLOOBsuOCjeOBlw0KK+OBteOBmOOCj+OCiSzjgZHjgYQNCivjgbXjgZjjgo/jgoks44G+44GT44GoDQor44G144GY44KP44KJLOOBsuOCjeOCgA0KK+OBteOBmOOCj+OCiSzjgajjgZfjgY0NCivjgbXjgYvjgbzjgoos44Gy44Gn44GKDQor44G144GL44G/LOOBleOBquOBiA0KK+OBteOBi+OBvyzjgbLjgZXjgZMNCivjgbXjgY/jgaAs44KG44GG44GTDQor44G144GP44GgLOOBleOBqOOBvw0KK+OBteOBj+OBoCzjgZjjgoXjgpMNCivjgbXjgY/jgaAs44KG44GLDQor44G144GP44GELOOBruOCiuOBoeOBiw0KK+OBteOBj+OBhCzjgajjgoLjgZgNCivjgbXjgY/jgarjgYws44GR44KT44GYDQor44G144GP44Gq44GMLOOBvuOBleOChOOBmQ0KK+OBteOBj+OBiuOBiyzjgb/jga7jgosNCivjgbXjgY/jgYrjgYss44GE44GV44GKDQor44G144GP44GXLOOChOOBmeOBruOCig0KK+OBteOBj+OBl+OBvizjgajjgZfjgobjgY0NCivjgbXjgY/jgajjgoEs44Gb44GE44GYDQor44G144GP44KE44G+LOOBi+OBpOOBsuOBqA0KK+OBteOBquOBsOOBlyzjgajjgYrjgosNCivjgbXjgovjga4s44GC44GN44KJDQor44G144KL44KELOOBqOOBl+OChuOBjQ0KK+OBteOCi+OChCzjgbLjgo3jgobjgY0NCivjgbXjgovjgoTjgb4s44G/44Gu44KLDQor44G144Gf44GwLOOChuOBv+OBkw0KK+OBguOBquOBvyzjgbLjgZXjga7jgooNCivjgbXjgZ/jgb8s44G144GY44GKDQor44G144Gf44KA44KJLOOBqOOCguOBkw0KK+OBjOOBqSzjgbLjgZXjgZcNCivjgZTjgYYs44KK44KH44GG44GTDQor44GU44GG44GgLOOBl+OCkw0KK+OBlOOBiyzjgZ/jgaTjgoQNCivjgZTjgajjgYYs44Go44GX44Gf44GLDQor44GU44Go44GGLOOBl+OBruOBtg0KK+OBr+OBtizjgZfjgofjgYbjgZgNCivjga/jgYws44GC44Gk44GXDQor44Gv44GOLOOBkeOCk+OBmA0KK+OBr+OBvizjgZ/jgaDjgbLjgo0NCivjga/jgb7jgaAs44G+44GV44KLDQor44Gv44G+44GuLOOBiuOBleOCgA0KK+OBr+OBvuOBrizjgZ/jgaTjgoQNCivjga/jgb7jgZfjgb4s44KG44G/DQor44Gv44G+44GX44G+LOOBleOBoOOBv+OBpA0KK+OBr+OBquOBhCzjgabjgaTjgYoNCivjga/jgoks44Gf44Gk44GNDQor44GK44GfLOOBk+OBhuOBhOOBoQ0KK+OBr+OCieOBoCzjgarjgYrjgY0NCivjga/jgonjgZMs44Gf44Gk44Gy44KNDQor44Gv44GbLOOChuOBn+OBiw0KK+OBr+OBm+OBjOOCjyzjgbLjgo3jgZcNCivjga/jgZvjgYzjgo8s44GX44KH44GG44GYDQor44Gv44GX44KC44GoLOOBleOBqOOBlw0KK+OBr+OBl+OCguOBqCzjgZvjgaTjgYoNCivjga/jgZfjgoLjgags44GC44GR44G/DQor44Gv44GX44Ga44KBLOOBvuOBleOBjQ0KK+OBr+OBl+OBmuOCgSzjgarjgYrjgY0NCivjga/jgZ8s44GX44KT44GE44GhDQor44Gv44GfLOOCiOOBl+OBsuOBkw0KK+OBr+OBnyzjgZ/jgZHjgbLjgZMNCivjga/jgZ/jga4s44GN44KH44GG44GTDQor44Gv44Gf44GuLOOChOOBmeOChuOBjQ0KK+OBr+OBn+OBrizjgojjgZfjgbLjgo0NCivjgaTjgaAs44Gy44KN44GTDQor44Gv44KE44GL44KPLOOCiOOBl+OBruOCig0KK+OBr+OChOOBrizjgYvjgarjgZMNCivjga/jgoTjgZcs44GV44GK44KKDQor44Gv44KE44GXLOOBmeOBmeOCgA0KK+OBr+OChOOBlyzjga7jgbbjgobjgY0NCivjga/jgoTjgZcs44Gy44KN44KG44GNDQor44Gv44KE44GXLOOBqOOBl+OCjeOBhg0KK+OBr+OChOOBl+OBn+OBqyzjgYLjgY3jgokNCivjgbLjgYzjgZfjga4s44GN44G/44Gf44GRDQor44Gy44GQ44GhLOOBi+OBmuOBsuOBkw0KK+OBsuOBkOOBoSzjgZfjgpPjgYTjgaHjgo3jgYYNCivjgbLjgoHjga4s44KE44GZ44GXDQor44Gy44KJ44Gw44KE44GXLOOChuOBhuOBkw0KK+OBsuOCieOBhCzjgobjgYbjgYTjgaENCivjgbLjgonjgYvjgo8s44Gy44KN44GXDQor44Gy44KJ44GNLOOBsuOCjeOBlw0KK+OBsuOCieOBrizjgZvjgYTjgorjgofjgYYNCivjgYLjgYrjgY0s44G/44Gh44GTDQor44Gy44KJ44GK44GLLOOBvuOBleOChA0KK+OBsuOCieOBleOBiyzjgbLjgo3jgobjgY0NCivjgbLjgonjgoTjgb4s44KI44GX44Gu44KKDQor44Gy44KN44Gv44GfLOOChuOBhuOBhOOBoeOCjQ0KK+OBvuOBiOOBi+OCjyzjgoTjgZnjgbLjgo0NCivjgbLjgo3jgZss44G+44Gq44G2DQor44Gy44KN44GbLOOBsuOCjeOCiOOBlw0KK+OBsuOCjeOBnyzjgb7jgZXjga7jgbYNCivjgbLjgo3jgo/jgZ/jgoos44Gf44GL44Gy44KNDQor44Gy44KN44G/44GkLOOBsuOCjeOBlw0KK+OBsuOBhuOCiSzjgb7jgoLjgosNCivjgbvjgbws44Gf44GE44GZ44GRDQor44G744GP44KJLOOBvuOBk+OBqA0KK+OBu+OCk+OBoCzjgYTjgZXjgYoNCivjgbvjgpPjgaAs44KI44GG44GTDQor44GZ44Ga44GNLOOBsuOBp+OBjQ0KK+OBu+OCk+OBlOOBhizjgYvjgZrjgZ/jgYsNCivjgbvjgorjgZDjgaEs44GN44GE44Gh44KN44GGDQor44G744KK44GELOOBjeOBq+OBoQ0KK+OBu+OCiuOBi+OCjyzjgabjgovjgYoNCivjgbvjgZfjga4s44KE44GZ44Gy44KNDQor44G744Gd44GL44KPLOOBsuOBp+OChuOBjQ0KK+OBu+OBneOBvyzjgbLjgo3jgYLjgY0NCivjgbvjgaPjgZ8s44GL44Ga44GC44GNDQor44GE44G244GLLOOBruOBtuOBv+OBoQ0KK+OBhOOBtuOBjSzjgbLjgafjgobjgY0NCivjgYTjgaHjgYvjgo8s44Gy44KN44GXDQor44GE44Gh44KA44KJLOOBjeOBv+OBiA0KK+OBhOOBoCzjgYvjgarjgoENCivjgYTjgaAs44Gh44Gv44KLDQor44GE44GnLOOChOOBmeOBsuOBpw0KK+OBhOOBpyzjgY3jgojjgZ/jgYsNCivjgYTjgacs44Gq44GK44KG44GNDQor44GE44Gn44GfLOOBn+OBi+OBlw0KK+OBhOOBjOOCieOBlyzjgZHjgYTjgZMNCivjgYTjgYzjgonjgZcs44KG44GN44KEDQor44GE44GSLOOBleOBpOOBjQ0KK+OBhOOBhOOBoCzjgZfjgofjgYbjgZ7jgYYNCivjgYTjgYTjgaAs44Gf44GL44KG44GNDQor44GE44GE44GgLOOBn+OBvuOBvw0KK+OBhOOBhOOBoCzjgojjgZfjgbLjgZUNCivjgYTjgYTjga/jgoks44Gy44KN44GXDQor44GE44GE44GY44G+LOOBn+OBkeOBlw0KK+OBhOOBkeOBoCzjgYvjgaTjgoQNCivjgYTjgZHjgaAs44G+44GV44GC44GNDQor44GE44GT44G+LOOBruOBtuOBvuOBlQ0KK+OBhOOBvuOBhCzjgY3jgojjgbLjgagNCivjgYTjgb7jgYQs44G+44GT44GoDQor44Gf44Gq44GLLOOBjeOCh+OBhuOBkw0KK+OBhOOBvuOCgOOCiSzjgZPjgYbjgYTjgaENCivjgYTjgb7jgarjgoos44Gf44Gk44KEDQor44GE44G+44Gc44GNLOOBmOOCheOCk+OBmA0KK+OBhOOBquOBoCzjgb7jgobjgb8NCivjgYTjgarjgb7jgZks44Gy44KN44GXDQor44GE44Gu44GG44GILOOBsuOCjeOChuOBjQ0KK+OBhOOBpyzjgb7jgZXjgbLjgo0NCivjgYTjgozjgYQs44G+44GV44KLDQor44GE44GX44Gv44KJLOOBv+OBpOOBvw0KK+OBhOOBl+OBr+OCiSzjgb/jgobjgY0NCivjgYTjgZfjga/jgoks44Gq44GK44GNDQor44GE44GX44Gv44KJLOOBmeOBmeOCgA0KK+OBhOOBl+OBr+OCiSzjgZjjgoXjgpPjgYTjgaENCivjgYTjgZfjgYQs44Gf44GL44KG44GNDQor44GE44GX44GELOOBqOOCguOChuOBjQ0KK+OBhOOBl+OBi+OCjyzjgobjgYbjgZgNCivjgYTjgZfjgYvjgo8s44Gq44GK44G144G/DQor44GE44GX44KA44KJLOOBsuOCjeOChuOBjQ0KK+OBhOOBl+OCj+OBn+OCiizjgb7jgZnjgb8NCivjgYTjgZfjgZbjgY0s44Gu44KK44KI44GXDQor44GE44GX44Ga44GLLOOBquOBiuOBqOOBjw0KK+OBhOOBneOBrizjgb/jgaTjgajjgZcNCivjgYTjgZ3jgoTjgb4s44G/44Gk44Gu44G2DQor44GE44GZ44GgLOOBl+OBkuOBig0KK+OBhOOBn+OBj+OCiSzjgb7jgZXjgbLjgo0NCivjgYTjgajjgYYs44G+44GV44Gy44KNDQor44GE44Go44GGLOOBsuOCjeOBteOBvw0KK+OBhOOBqOOBhizjgojjgZfjgb7jgZUNCivjgYTjgajjgYYs44Gv44KL44GKDQor44G+44Gk44GELOOBn+OBkeOBsuOBkw0KK+OBhOOBqOOBhizjgZ/jgZHjgbLjgZMNCivjgYTjgajjgYYs44G+44GV44Gh44GLDQor44GE44Go44GGLOOBvuOBleOBsuOBkw0KK+OBhOOCj+OBi+OBvyzjgaTjgajjgoANCivjgYTjgo/jgZUs44Go44GX44G/DQor44GE44KP44GV44GNLOOChuOBhuOBmA0KK+OBhOOCj+OBleOBjSzjgarjgYrjgobjgY0NCivjgYTjgo/jgZfjgZ8s44G/44Gh44Gf44GLDQor44GE44Ga44G/LOOBqOOBiuOCiw0KK+OBhOOBqOOBhizjgYLjgaTjgZcNCivjgYTjgZrjgb8s44Go44G444GEDQor44GE44Ga44G/44GV44KPLOOBm+OBhOOBmA0KK+OBmOOCk+OBrizjgoTjgZnjgZcNCivjgb/jgaks44KK44KF44GG44GYDQor44GL44GMLOOBguOBkeOBvw0KK+OBi+OBjOOBvyzjgbXjgZXjgYoNCivjgYvjgZLjgoTjgb4s44Gy44GV44Gq44GMDQor44GL44GELOOBsuOBqOOBlw0KK+OBi+OBhOOBoCzjgZPjgYbjgZgNCivjgYvjgYTjgZos44Gf44GR44Gy44GoDQor44GL44GY44GfLOOBmA0KK+OBi+OBkeOBsizjgYLjgZHjgb8NCivjgYvjgY3jgoLjgags44Go44KC44Gy44KNDQor44GL44GN44Gs44G+LOOBleOBoeOBkw0KK+OBi+OBjeOBrOOBvizjgZfjgZrjgYsNCivjgYvjgb7jgZ8s44Go44GX44GIDQor44GL44G+44GfLOOBkeOCk+OBhOOBoQ0KK+OBi+OBv+OBkOOBoSzjgb/jgYjjgZMNCivjgYvjgb/jgoDjgoks44KI44GX44GKDQor44GL44Gt44GTLOOBvuOBleOBruOCig0KK+OBi+OBquOBvuOCiyzjgZgNCivjgYvjgarjgZbjgo8s44G+44KC44KLDQor44GL44KT44G5LOOBn+OBi+OBsuOCjQ0KK+OBi+OCk+OBoCzjgZPjgYbjgZ7jgYYNCivjgYvjga3jga/jgoks44GR44KTDQor44GU44Go44GGLOOBl+OBkuOBi+OBmg0KK+OBi+OBreOBkyzjgZ/jgZHjgZcNCivjgYvjga3jgZMs44KE44GZ44Gq44GKDQor44GL44Gt44GTLOOBguOBjeOCiQ0KK+OBi+OBreOBkyzjgbLjgafjgajjgZcNCivjgYvjga3jgZMs44Gy44KN44G144G/DQor44GL44Gt44G/44GkLOOBsuOCjeOBv+OBpA0KK+OBi+OBreOCgOOCiSzjgYvjgZrjgYoNCivjgYvjga3jgZ8s44GT44GG44GE44GhDQor44Gf44Gq44GLLOOBvuOBleOCiOOBlw0KK+OCiOOBreOCguOBoSzjgarjgYrjgZcNCivjgYvjgpPjga4s44KE44GZ44G+44GVDQor44GL44GV44GELOOChuOBi+OCig0KK+OBi+OBl+OBvizjgZPjgYbjgZjjgo3jgYYNCivjgZ/jgYvjgY4s44Gy44Gn44GNDQor44GN44Gf44KA44KJLOOBvuOBleOBvw0KK+OBi+OBn+OBiuOBiyzjgoTjgZnjgobjgY0NCivjgYvjgZ/jgYrjgYss44GL44Ga44Gy44GTDQor44GL44Gf44GK44GLLOOBl+OBkuOChuOBjQ0KK+OBi+OBn+OBmyzjgoTjgZnjgarjgooNCivjgYvjgZ/jgoTjgb4s44G/44Gh44GTDQor44GL44Gf44KE44G+LOOBquOBiuOChuOBjQ0KK+OBi+OBn+OChOOBvizjgobjgYbjgZMNCivjgYvjgZ/jgoTjgb4s44GN44KH44GG44GTDQor44GL44Go44GGLOOChOOBmeOBsuOCjQ0KK+OBi+OBqOOBhizjgbLjgo3jgYLjgY0NCivjgYvjgajjgYYs44GX44KT44GE44GhDQor44GL44Go44GGLOOBpOOBqOOCgA0KK+OBi+OBqOOBhizjgbLjgo3jgobjgY0NCivjgYvjgajjgYYs44Go44GX44Gy44KNDQor44GL44Go44GGLOOCiOOBl+OBvw0KK+OBi+OBqOOBhizjgobjgYbjgZgNCivjgYvjgajjgYYs44Gk44Go44KADQor44Gd44KB44KELOOBmOOCheOCk+OBkw0KK+OBi+OCj+OBsOOBnyzjgb7jgZPjgagNCivjgYvjgo/jgZDjgaEs44G+44GV44GE44GhDQor44GL44KP44GQ44GhLOOBl+OCk+OChA0KK+OBn+OBvuOBjOOCjyzjgZPjgYbjgYTjgaHjgo3jgYYNCivjgYvjgo/jga/jgoks44Gy44GV44GXDQor44GL44KP44Gv44KJLOOBmOOCheOCk+OBmA0KK+OBi+OCj+OBsuOBqCzjgYvjgaTjgbLjgZUNCivjgYvjgo/jgYQs44Gu44KK44Gy44GVDQor44GL44KP44GELOOBruOCiuOBkw0KK+OBr+OBjuOCj+OCiSzjgZfjgZLjgY0NCivjgarjgovjgZEs44Gf44GL44GXDQor44GL44KP44GV44GNLOOCiOOBl+OBsuOCjQ0KK+OBi+OCj+OBl+OBvizjgobjgYvjgooNCivjgYvjgo/jgZfjgb4s44KG44GN44GTDQor44GL44KP44GfLOOChuOBn+OBiw0KK+OBi+OChOOBvizjgbLjgo3jgYvjgZoNCivjgYvjgZbjgb7jgaTjgoos44Gy44KN44GTDQor44GN44GpLOOBn+OBi+OBteOBvw0KK+OBjeOBjOOBvyzjgb7jgarjgbYNCivjgY3jgZTjgZcs44Gy44GV44KEDQor44KC44KK44GV44KPLOOBjeOCiOOBlw0KK+OBjeOBj+OBoSzjgb/jgaTjgZANCivjgY3jgY/jgaEs44GN44GE44GhDQor44GN44GP44GhLOOBruOCiuOBig0KK+OBjeOBj+OCiSzjgYvjgaTjgb8NCivjgY3jgoDjgoks44Gk44Gt44GKDQor44GN44KA44KJLOOBsuOCjeOBjQ0KK+OBjeOCgOOCiSzjgYLjgZHjgb8NCivjgY3jgoDjgoks44Go44KC44Gy44GVDQor44GN44KA44KJLOOBi+OBpOOBruOCig0KK+OBjeOCgOOCiSzjgZHjgYTjgYTjgaENCivjgY3jgoDjgoks44G+44GV44GNDQor44GN44KA44KJLOOBvuOBleOChuOBjQ0KK+OBjeOCgOOCiSzjgZHjgpPjgYTjgaENCivjgY3jgoDjgoks44Gu44KK44GTDQor44GN44KA44KJLOOBl+OCk+OBjeOBoQ0KK+OBjeOBruOBl+OBnyzjgZ/jgYTjgZMNCivjgY3jga7jgZfjgZ8s44Go44GX44Gy44GTDQor44GN44Gu44GX44GfLOOChOOBmeOBsuOCjQ0KK+OBjeOBl+OBuSzjgbLjgo3jgY0NCivjgY3jgZfjgaAs44KI44GX44Gu44KKDQor44GN44GX44KC44GoLOOBn+OBkeOBlw0KK+OBjeOBl+OCguOBqCzjgZ/jgaTjgoQNCivjgY3jgZ8s44Gf44GL44G/44GhDQor44GN44Gf44GC44GNLOOBsuOCjeOChuOBjQ0KK+OBjeOBn+OBoCzjgbLjgo3jgobjgY0NCivjgY3jgZ/jgYzjgo8s44Go44GX44KG44GNDQor44GN44Gf44G744KKLOOBsuOCjeOChuOBjQ0KK+OBjeOBn+OBmOOBvizjgZ/jgaTjgoQNCivjgY3jgZ/jgoDjgoks44Gy44KN44GXDQor44GT44Gw44KE44GXLOOBl+OBkuOCiOOBlw0KK+OBk+OBsOOChOOBlyzjgYvjgZrjgbLjgo0NCivjgZPjgbDjgoTjgZcs44Gh44G144KGDQor44GT44Gw44KE44GXLOOChOOBmeOChuOBjQ0KK+OBl+OCieOBhCzjgaDjgYTjgZnjgZENCivjgZPjgbDjgoTjgZcs44Gy44KN44KG44GNDQor44GT44Gw44KE44GXLOOBl+OCk+OBhOOBoQ0KK+OBk+OBsOOChOOBlyzjgajjgZfjgoQNCivjgZPjgbDjgoTjgZcs44Go44GX44GNDQor44GT44Gw44KE44GXLOOBquOBiuOBteOBvw0KK+OBk+OBoOOBvizjgbLjgo3jgobjgY0NCivjgZPjgY7jgZ8s44GR44GE44GE44GhDQor44GT44GQ44KMLOOCiOOBl+OBi+OBmg0KK+OBk+OBr+OBlyzjga7jgorjgZfjgZINCivjgZPjgZQs44Gf44GL44Gy44GnDQor44GT44KT44GuLOOCiOOBhg0KK+OBk+OCk+OBrizjgY3jgpPjgoQNCivjgZPjgpPjga4s44KE44GZ44Gy44KNDQor44GT44KT44Gu44GZLOOBsuOCjeOBi+OBmg0KK+OBk+OBhOOBpyzjgZPjgYbjgZgNCivjgZPjgb7jgaTjgbDjgoks44Gy44Gn44Go44GXDQor44GT44G/44KELOOBiuOBleOCgA0KK+OBk+OBv+OChOOBvizjgojjgZfjgbLjgo0NCivjgZPjgoLjgaAs44Gf44GL44GXDQor44GT44KT44GpLOOBi+OBmuOBvuOBlQ0KK+OBk+OCk+OBqSzjgb7jgZXjgagNCivjgZPjgpPjgaks44Gy44Go44GXDQor44GT44KT44GpLOOBi+OBpOOChA0KK+OBk+OCk+OBqSzjgYvjgZrjgajjgZcNCivjgZPjgavjgZcs44GC44GN44Gu44KKDQor44GT44GVLOOBvuOBleOBqA0KK+OBk+OBmeOBjizjgZHjgpPjgYTjgaHjgo0NCivjgZPjgZ/jgY0s44G+44GV44KG44GNDQor44GT44Gf44GrLOOBkeOBhOOBhOOBoQ0KK+OBk+OChOOBvizjgb/jgY0NCivjgZPjgoTjgb4s44Gy44KN44G/DQor44GT44KE44G+LOOBi+OBpOOBsuOBkw0KK+OBk+OBluOCjyzjgb7jgZXjga7jgooNCivjgZPjgZrjgoss44KI44GX44GC44GNDQor44GP44G844GfLOOBsuOCjeOBlw0KK+OBj+OBvOOBnyzjgZjjgoXjgpPjgZMNCivjgY/jgbzjgoQs44Go44KC44GTDQor44GP44Gp44GGLOOBmOOCheOCkw0KK+OBm+OBruOBiizjgbLjgajjgZcNCivjgY/jgb7jgYzjgYQs44GL44Ga44Gu44KKDQor44GP44KJ44Gp44G/LOOBjeOCiOOBteOBvw0KK+OBj+OCieOCguOBqCzjga7jgorjgobjgY0NCivjgY/jgonjgajjgb8s44GR44GE44GZ44GRDQor44GP44KK44GuLOOChOOBmeOBsuOCjQ0KK+OBj+OCiuOChCzjgobjgYbjgYTjgaENCivjgY/jgo3jgaAs44Gy44KN44GXDQor44GP44KN44GL44KPLOOBv+OBpOOBguOBjQ0KK+OBj+OBleOBi+OCjyzjga7jgbbjgb/jgaQNCivjgY/jgZXjga4s44GV44Go44GXDQor44GP44KP44Gw44KJLOOBqOOBl+OBsuOCjQ0KK+OBj+OCj+OBrizjgoTjgZnjgbLjgo0NCivjgojjgZfjgaAs44GV44Go44KLDQor44GP44Ga44GuLOOBsuOCjeOBi+OBmg0KK+OBvuOBoeOBoCzjgbLjgo3jgZcNCivjgb7jgYjjgaAs44GR44KT44GE44GhDQor44G+44GI44GL44KPLOOBv+OBreOBi+OBmg0KK+OBiuOBiuOBn+OBqyzjgZ/jgaDjgZfjgZINCivjgb7jgY0s44Gf44GP44KEDQor44G+44GN44GuLOOBqOOBl+OBig0KK+OBvuOCi+OBiuOBiyzjgoTjgZnjgbLjgo0NCivjgb7jgovjgoTjgb4s44GY44KF44KT44GT44GGDQor44G+44KL44KE44G+LOOBruOCiuOBsuOCjQ0KK+OBvuOCi+OChOOBvizjgb/jga7jgosNCivjgb7jgZXjgYQs44GX44KT44GUDQor44G+44GV44GNLOOBsuOBp+OCiA0KK+OBvuOBmyzjgZ/jgYvjgZcNCivjgb7jgZnjgaAs44KG44Gf44GLDQor44G+44Go44GwLOOBn+OBi+OBqOOBlw0KK+OBvuOBqOOBsCzjgY/jgavjgbLjgZMNCivjgb7jgaTjgbDjgoks44Gf44GL44GC44GNDQor44G+44Gk44GELOOBsuOBleOBlw0KK+OBvuOBpOOBhCzjgoTjgZnjgbLjgo0NCivjgb7jgaTjgYvjgo8s44Gb44GE44GE44GhDQor44G+44Gk44KC44KKLOOBl+OCh+OBhuOBng0KK+OBvuOBpOOCguOBqCzjgZ/jgYvjgZcNCivjgb7jgaTjgoLjgags44G+44GV44KI44GXDQor44G+44Gk44KC44GoLOOBl+OBkuOCiw0KK+OBvuOBpOOCguOBqCzjgZjjgoXjgpPjgZMNCivjgb7jgaTjgoLjgags44Gf44GR44GXDQor44G+44Gk44KC44GoLOOBqOOBiuOCiw0KK+OBvuOBpOOCguOBqCzjgZXjgaDjgYoNCivjgb7jgaTjgYos44GL44Ga44KI44GXDQor44G+44Gk44GK44GLLOOBn+OBkeOBqOOBlw0KK+OBvuOBpOOBl+OBvizjgZ/jgYvjgbLjgo0NCivjgarjgYvjgavjgo8s44Go44GX44KN44GGDQor44G+44Gk44KE44G+LOOBmOOCheOCkw0KK+OBvuOBpOOChOOBvizjgZjjgoXjgpPjgZgNCivjgb7jgaTjgZbjgo8s44Gy44Gn44KIDQor44G/44KA44KJLOOBl+OCheOCk+OBhOOBoQ0KK+OBv+OBq+OCheOBhizjgZPjgYbjgYTjgaENCivjgb/jgZ8s44G+44Gq44G2DQor44G/44GfLOOBsuOCjeOBi+OBmg0KK+OBv+OBn+OCgOOCiSzjgZjjgoXjgpMNCivjgb/jgaTjgaAs44GK44GV44KADQor44G/44Gk44GgLOOBmOOCheOCk+OBhOOBoQ0KK+OBv+OBpOOBvuOBnyzjgojjgZfjga7jgooNCivjgb/jgaTjgYrjgYss44GC44KE44GTDQor44G/44GG44KJLOOBjeOCh+OBhuOBkw0KK+OBv+OBhuOCiSzjgb/jganjgooNCivjgb/jgo/jgZ8s44Gq44GK44GNDQor44Gq44GM44GbLOOBn+OBi+OBlw0KK+OBv+OChOOBkSzjgYLjgY3jgYoNCivjgb/jgoTjgZEs44KG44GL44KKDQor44G/44KE44G+LOOBm+OBhOOBmA0KK+OBv+OChOOCguOBqCzjgabjgaTjgYoNCivjgb/jgoTjgoLjgags44Gy44Go44G/DQor44G/44KE44Gq44GMLOOBvuOBleOBi+OBpA0KK+OBv+OChOOBluOBjSzjgoLjgajjgbXjgb8NCivjgb/jgZrjgbAs44Gy44KN44GXDQor44G/44Ga44Gs44G+LOOBi+OBpOOBvw0KK+OBv+OBmuOBleOBjSzjgb/jgo8NCivjgb/jgZrjgZ8s44Gu44KK44GC44GNDQor44KC44Gh44Ga44GNLOOBl+OCheOBhuOBhOOBoQ0KK+OCguOBoeOBmuOBjSzjgYLjgaTjgY0NCivjgoLjgaHjgZrjgY0s44Gh44GL44KJDQor44KC44GOLOOBsuOCjeOBlw0KK+OCguOCguOBmyzjgaTjgojjgZcNCivjgbLjgonjga4s44GC44GN44Gy44GnDQor44KC44KKLOOChuOBhuOBjQ0KK+OCguOCiizjgb7jgZXjgobjgY0NCivjgoLjgoos44G+44GV44KG44GNDQor44KC44KKLOOBl+OBkuOBig0KK+OCguOCiuOBi+OCjyzjgZfjgpPjgZgNCivjgoTjgY7jgZfjgZ8s44GE44GV44GKDQor44KC44KK44KC44GoLOOBk+OBhuOBhOOBoeOCjeOBhg0KK+OCguOCiuOCguOBqCzjgZPjgYbjgZgNCivjgb7jgaTjgaAs44GR44KT44GYDQor44KC44KK44GK44GLLOOBguOBjeOBsuOBkw0KK+OCguOCiuOBl+OBnyzjgorjgYgNCivjgoLjgorjgZ8s44GP44Gr44Gy44KNDQor44KC44KK44GfLOOBjeOCiOOBiOOBhA0KK+OBi+OBreOBkyzjgYvjgZrjgYLjgY0NCivjgoLjgorjgZ8s44G+44GV44KG44GNDQor44KC44KK44KP44GNLOOBruOBtuOChuOBjQ0KK+OCguOCjeOBqeOBvyzjgojjgYbjgYTjgaENCivjgoLjgajjga/jgZcs44KI44GX44Gy44GnDQor44KC44Go44GY44G+LOOBpuOBpOOBig0KK+OCguOBqOOBjSzjgZHjgYTjgZMNCivjgoLjgoos44G/44KPDQor44GG44GZ44GELOOBi+OBiuOCiw0KK+OCgOOCieOBi+OBvyzjgZ/jgZHjgYoNCivjgoDjgonjgYvjgb8s44Gg44GE44Gb44GEDQor44KA44KJ44GL44G/LOOBsuOBp+OBlw0KK+OCgOOCieOBi+OBvyzjgbLjgajjgZcNCivjgoDjgonjgZ8s44KI44GX44GKDQor44KA44KJ44GfLOOBjeOCiOOBsuOBkw0KK+OCgOOCieOChOOBvizjgZXjgajjgZcNCivjgoDjgajjgYYs44KI44GX44Gy44KNDQor44Gq44Gg44GQ44GhLOOBmeOBv+OBqA0KK+OBquOBjOOBr+OBlyzjgYTjgZXjgYoNCivjgarjgYzjgYQs44G+44GV44Gy44KNDQor44Gq44GM44KA44KJLOOBvuOBk+OBqA0KK+OBquOBjOOBiizjgb7jgZXjgb8NCivjgarjgYzjgZfjgb4s44G/44Gh44Gu44KKDQor44Gq44GM44GX44G+LOOBv+OCiOOBkw0KK+OBquOBjOOBnyzjgarjgYrjgooNCivjgarjgYzjgZ8s44Gu44G844KLDQor44Gq44GM44Gk44GLLOOBruOCiuOChuOBjQ0KK+OBquOBjOOChOOBvizjgZXjgarjgYgNCivjgYbjgaHjgaAs44Gf44GL44Gy44GnDQor44GG44Gh44Ge44GuLOOBn+OBi+OBlw0KK+OBquOBi+OBoCzjgajjgZfjgoQNCivjgarjgYvjgYzjgo8s44KE44GZ44Gy44KNDQor44Gq44GL44GM44KPLOOChuOBjeOBsuOCjQ0KK+OBquOBi+OBjOOCjyzjgaHjga/jgosNCivjgarjgYvjgYzjgo8s44Gq44GK44KG44GNDQor44Gq44GL44GY44G+LOOBk+OBhuOBhOOBoeOCjeOBhg0KK+OBquOBi+OBmOOBvizjgbLjgo3jgYLjgY0NCivjgarjgYvjgZjjgb4s44GN44KH44GG44GTDQor44Gq44GL44G/44GhLOOCiuOCheOBhuOBhOOBoQ0KK+OBquOBi+OCguOBqCzjgoTjgZnjgajjgoINCivjgarjgYvjgoLjgags44Gy44KN44GXDQor44Gq44GL44KA44KJLOOBsuOCjeOBlw0KK+OBquOBi+OCgOOCiSzjgobjgb/jgZMNCivjgarjgYvjgoDjgoks44Gy44KN44GXDQor44GC44GN44KE44G+LOOBn+OBi+OBmA0KK+OBquOBi+OCgOOCiSzjgbLjgafjgagNCivjgarjgYvjgoDjgoks44Gk44Go44KADQor44Gq44GL44KA44KJLOOBn+OBi+OBkw0KK+OBquOBi+OCgOOCiSzjgobjgY3jgZMNCivjgarjgYvjgoDjgoks44KI44GX44Gy44GTDQor44Gq44GL44KA44KJLOOBm+OBhOOBmA0KK+OBquOBi+OCgOOCiSzjgobjgYbjgYTjgaENCivjgarjgYvjgoDjgoks44Gy44KN44G/DQor44Gq44GL44KA44KJLOOBleOBqOOBlw0KK+OBquOBi+OBrizjgZ/jgYvjgZcNCivjgarjgYvjga4s44GR44GE44GYDQor44Gq44GL44GX44G+LOOBruOCiuOBig0KK+OBquOBi+OBpOOBvCzjgb7jgZXjgbLjgZMNCivjgarjgYvjgaTjgYss44Gm44Gk44KN44GGDQor44Gq44GL44KE44G+LOOBvuOBk+OBqA0KK+OBquOBi+OChOOBvizjgb7jgZXjgbLjgZMNCivjgarjgYvjgZbjgo8s44GK44GV44KADQor44Gq44GK44Gk44GLLOOBguOBjeOBkw0KK+OBquOCieOBr+OCiSzjgZXjgajjgZcNCivjgarjgovjgZfjgb4s44G+44GV44GTDQor44Gq44Go44KKLOOBsuOCjeOBn+OBiw0KK+OBq+OBhOOBmOOBvizjgobjgYsNCivjgavjgYTjgoQs44KK44GLDQor44Gr44GXLOOBqOOBl+OBsuOBlQ0KK+OBq+OBlyzjgb7jgZXjgbLjgo0NCivjgavjgZfjgbYs44GC44KE44GTDQor44Gr44GX44GgLOOBn+OBpOOChA0KK+OBq+OBl+OBr+OCiSzjgZ/jgYvjgYLjgY0NCivjgavjgZfjgYvjgo8s44G+44GV44GTDQor44Gf44Gq44GLLOOBhOOBleOBig0KK+OBq+OBl+OBi+OCjyzjgb7jgZXjgagNCivjgavjgZfjgoLjgags44Gy44Gn44GC44GNDQor44Gr44GX44KC44GoLOOBquOBiuOBkw0KK+OBq+OBl+OCgOOCiSzjgZ/jgYvjgZcNCivjgavjgZfjgoDjgoks44GT44GG44Ge44GGDQor44Gr44GX44GuLOOBkeOCk+OBmA0KK+OBq+OBl+OBrizjgZfjgpPjgoQNCivjgavjgZfjgYrjgYss44G+44GV44Gu44G2DQor44Gr44GX44GW44GNLOOBkeOCk+OBmA0KK+OBq+OBl+OBluOCjyzjgaDjgYTjgZnjgZENCivjgavjgo8s44KC44KK44KI44GXDQor44Gu44G2LOOBv+OBruOCiw0KK+OBruOBjOOBhOOBqCzjga7jgbbjgobjgY0NCivjga7jgZDjgaEs44KI44GG44GTDQor44Gu44GYLOOBsuOCjeOChuOBjQ0KK+OBruOBmOOBvizjga7jgorjgYoNCivjga7jgoDjgoks44GC44GN44GTDQor44Gu44KA44KJLOOBl+OCk+OBhOOBoQ0KK+OBruOBquOBiyzjgobjgY3jga7jgooNCivjgarjgYvjgZjjgb4s44Gh44G144KGDQor44Gu44GW44GNLOOBv+OBjeOBig0KK+OBruOBluOBjSzjgojjgZfjgobjgY0NCivjgazjgo8s44Gf44GR44GXDQor44GK44GhLOOBn+OBi+OBlw0KK+OBiuOBoeOBguOBhCzjgajjgZfjgobjgY0NCivjgYrjgaAs44GC44Gk44GXDQor44GK44GM44GV44KP44KJLOOCiOOBl+OChuOBjQ0KK+OBiuOBjOOBleOCj+OCiSzjgajjgb/jgYoNCivjgYrjgYzjgZ8s44GL44Ga44Gv44KLDQor44GK44GM44KPLOOBkeOCk+OBhOOBoQ0KK+OBiuOBjuOBr+OCiSzjgbLjgo3jgY0NCivjgYrjgYrjga/jgoks44GL44Gk44G/DQor44GK44GK44GwLOOChuOBv+OBkw0KK+OBiuOBiuOBsCzjgYjjgYTjgZgNCivjgb7jgaTjgaAs44GX44GS44KG44GNDQor44GK44GK44GILOOChuOBhuOBmA0KK+OBiuOBiuOBjOOBjSzjgYvjgZrjgbLjgo0NCivjgZfjgofjgYbjgZjjgb4s44Go44GX44Gy44GnDQor44GK44Gv44G+LOOBsuOCjeOChuOBjQ0KK+OBiuOBiuOBr+OBlyzjgZHjgYTjgZMNCivjgYrjgY7jga4s44GX44GS44GNDQor44GK44GK44GL44KPLOOBk+OBhuOBhOOBoQ0KK+OBiuOBiuOBi+OCj+OCiSzjgb7jgarjgbYNCivjgYrjgY0s44G+44GV44Gy44GTDQor44Gt44KC44GoLOOBmOOCheOCkw0KK+OBiuOBiuOBj+OBvCzjga7jgbbjgobjgY0NCivjgYrjgYrjgY/jgoks44Go44KC44Gy44GTDQor44GK44G+LOOBqOOCguOBsuOBlQ0KK+OBiuOBiuOBv+OBiyzjgabjgaTjgZcNCivjgYrjgYrjgoLjgoos44Gy44Gn44G/DQor44GK44GK44KC44KKLOOBsuOCjeOBguOBjQ0KK+OCj+OBn+OBquOBuSzjgYvjgZrjgYLjgY0NCivjgYrjgYrjgavjgZcs44G/44Gk44KLDQor44GK44GK44Gr44GXLOOBvuOBleOBsuOBpw0KK+OBiuOBrizjgZXjgarjgYgNCivjgYrjga4s44GY44KF44KT44GTDQor44GK44GK44Gs44G+LOOBvuOBleOBig0KK+OBiuOBl+OBvizjgZ/jgYvjgobjgY0NCivjgYrjgZfjgb4s44G+44GV44GXDQor44GK44GK44GfLOOBvuOBleOChuOBjQ0KK+OBiuOBiuOBnyzjgoLjgajjgYQNCivjgYrjgYrjgZ8s44GL44GK44KLDQor44GK44GK44Gf44GLLOOBqOOBl+OBguOBjQ0KK+OBiuOBiuOBn+OBkSzjgZXjgYjjgZMNCivjgYrjgYrjgZ/jgZEs44Gy44Gn44G144G/DQor44GK44GK44Gf44GrLOOBj+OBq+OBig0KK+OBiuOBiuOBpOOBvCzjgYLjgaTjgobjgY0NCivjgYrjgYrjgaTjgYss44Gm44Gk44GKDQor44GK44GK44Gk44GLLOOBqOOBl+OBsuOBkw0KK+OBiuOBiuOBpOOBjSzjgYTjgZrjgb8NCivjgZXjgZPjgaAs44GX44KF44GG44GE44GhDQor44GK44GK44KPLOOBleOBqOOBlw0KK+OBiuOBiuOChCzjgZjjgoXjgpPjgZvjgYQNCivjgYrjgYTjgYvjgo8s44G+44GV44GNDQor44GK44GL44G5LOOBvuOBquOBtg0KK+OBk+OBsOOChOOBlyzjgZ3jgYYNCivjgYrjgYvjgaAs44KE44GZ44G/44GkDQor44GK44GL44GgLOOBpuOBpOOBmA0KK+OBiuOBi+OBoCzjgabjgaTjgoQNCivjgYrjgYvjgoLjgags44Gy44Gn44GC44GNDQor44GK44GL44KC44GoLOOBsuOBp+OBruOBtg0KK+OCgeOCiSzjgbLjgo3jgobjgY0NCivjgYrjgYvjga4s44GL44Ga44Gu44KKDQor44GK44GL44GW44GNLOOBi+OBmuOChuOBjQ0KK+OBiuOBjeOBnyzjgZXjgajjgZMNCivjgYrjgY/jgaAs44GI44GE44GE44Gh44KN44GGDQor44GK44GP44Gs44GNLOOBvuOBleOBi+OBmg0KK+OBiuOCk+OBoCzjgaHjgZrjgZMNCivjgYrjgpPjgaAs44Gy44KJ44Gf44GLDQor44GG44Gk44G/LOOBvuOBleOBsuOCjQ0KK+OBiuOBiuOBrizjgZ/jgYvjgZcNCivjgYrjgYrjga4s44KG44GN44Gy44KNDQor44GL44KP44KC44GoLOOBsuOBp+OChuOBjQ0KK+OBi+OBqSzjgY/jgavjgbLjgo0NCivjgYrjgZfjgb4s44GX44KN44GGDQor44GK44GK44GZ44G/LOOBguOBjeOCiQ0KK+OBiuOBiuOBnyzjgYvjgZrjgobjgY0NCivjgYrjgorjgYQs44GX44KF44KT44GYDQor44GK44KK44GfLOOBl+OCheOBhuOBhOOBoQ0KK+OBiuOBiuOBleOBiyzjgajjgojjgbLjgacNCivjgYrjgZ3jga7jgYQs44KG44GN44GKDQor44GK44GW44GVLOOChuOBjeOBruOBtg0KK+OBiuOBluOCjyzjgZ/jgaTjgZgNCivjgYrjgZbjgo8s44Gq44GK44Gu44KKDQor44GK44GW44KPLOOChOOBmeOBsuOCjQ0KK+OBl+OCieOBqOOCiizjgZjjgoXjgpMNCivjgYrjgZ7jga0s44GC44GN44GKDQor44GV44GuLOOBsuOCjeOBsuOBlQ0KK+OBleOBhOOBqOOBhizjgb7jgZXjgb8NCivjgZXjgYTjgajjgYYs44Gq44GK44GNDQor44GV44GE44Go44GGLOOBv+OBiOOBkw0KK+OBleOBhOOBqOOBhizjgZHjgYTjgZgNCivjgZXjgYTjgajjgYYs44Gh44GL44GTDQor44GV44GL44GELOOBsuOCjeOBvw0KK+OBleOBi+OBhCzjgZHjgpPjgZgNCivjgZXjgYvjgYQs44G+44GT44GoDQor44GV44GL44GN44Gw44KJLOOBv+OBpOOBguOBjQ0KK+OBleOBi+OCguOBqCzjgozjgYTjgZMNCivjgZXjgYvjgoLjgags44KI44GX44GKDQor44GV44GL44KC44GoLOOBqOOCguOBkw0KK+OBleOBi+OCguOBqCzjgZjjgoXjgpPjgbrjgYQNCivjgZXjgYvjgoLjgags44GL44GK44KLDQor44GV44GL44KA44KJLOOBkeOCk+OBmA0KK+OBleOBi+OBrSzjgZPjgYbjgZgNCivjgZXjgYvjgZ8s44G+44GV44Gy44GTDQor44GV44GL44GfLOOBvuOBleOBsuOCjQ0KK+OBguOBj+OBn+OBjOOCjyzjgb7jgZXjgbLjgo0NCivjgZXjgY/jgonjgYQs44G+44GV44GoDQor44GV44GP44KJ44GELOOCi+OCiuOBkw0KK+OBvuOBpOOBsOOCiSzjgorjgofjgYbjgZMNCivjgZXjgY/jgonjgYQs44GV44Go44KLDQor44GV44Gq44GOLOOCiOOBl+OBjQ0KK+OBleOBrizjgobjgY3jgZMNCivjgYrjgYrjgYzjgY0s44Gh44Gy44KNDQor44GV44GV44GNLOOBteOBv+OBsuOCjQ0KK+OBleOBleOBjSzjgajjgYrjgosNCivjgZXjgZXjgY0s44Gy44Gn44KG44GNDQor44GV44GV44GNLOOBhOOBj+OBteOBvw0KK+OBleOBleOBjSzjgarjgYzjgb7jgZUNCivjgZXjgZXjgY0s44Go44KC44GTDQor44GV44Gf44GRLOOBn+OBi+OChuOBjQ0KK+OBk+OBoOOBvizjgb7jgZXjgbLjgo0NCivjgZXjgajjgYYs44Go44GK44KLDQor44GV44Go44GGLOOBteOBmOOBig0KK+OBleOBqOOBhizjgbLjgafjga/jgosNCivjgZXjgajjgYYs44G+44KC44KLDQor44GV44Go44GGLOOBvuOChuOBvw0KK+OBleOBqOOBhizjgZfjgo3jgYYNCivjgZXjgajjgYYs44GR44KT44GYDQor44GV44Go44GGLOOBsuOBp+OBruOCig0KK+OBleOBqOOBhizjgZHjgYTjgYTjgaENCivjgZXjgajjgYYs44GC44GN44Gy44KNDQor44GV44Go44GGLOOBsuOBp+OBjQ0KK+OBleOBi+OBhCzjgZHjgpPjgZgNCivjgZXjgo/jgaAs44GT44GG44Gf44KN44GGDQor44Gb44GM44KPLOOBleOBqOOCiw0KK+OBm+OBhOOBrizjgZfjgofjgYbjgZgNCivjgZvjgY0s44Gk44Go44KADQor44Gb44GN44GpLOOBl+OCk+OBmA0KK+OBm+OBjeOBrizjga7jgorjgbLjgo0NCivjgZvjgYos44Gf44GL44KG44GNDQor44Gb44KK44GL44KPLOOBiuOBleOCgA0KK+OBl+OBsOOBleOBjSzjgbLjgo3jga7jgooNCivjgZfjgYws44GL44Gq44G/DQor44GX44GS44KLLOOCiOOBl+OBkw0KK+OBl+OBvuOBoCzjgYLjgaTjgZcNCivjgZfjgb7jgaAs44G/44Gk44GIDQor44GX44G+44GgLOOBvuOBk+OBqA0KK+OBl+OBvuOBoCzjgYvjgYrjgosNCivjgZfjgb7jgoLjgags44G/44Gk44KE44GZDQor44GX44G+44KA44KJLOOBn+OBpOOChA0KK+OBl+OBvuOBrizjgZ/jgYvjgZcNCivjgZfjgb/jgZos44Gf44GL44GC44GNDQor44GX44G/44GaLOOBqOOBl+OBsuOCjQ0KK+OBl+OBv+OBmizjgZ/jgaDjgZcNCivjgZfjgb/jgZos44Gk44Go44KADQor44GX44G/44GaLOOBk+OBhuOBmOOCjeOBhg0KK+OBl+OBv+OBmizjgZXjgajjgosNCivjgZfjgb/jgZos44G/44Ga44GNDQor44GX44KC44GgLOOBsuOCjeOChuOBjQ0KK+OBl+OCguOBjOOBjSzjgZHjgpPjgoQNCivjgZfjgoLjga/jgZ8s44Gy44KN44KG44GNDQor44GX44KC44KA44KJLOOBruOBtuOBsuOCjQ0KK+OBl+OCguOBiuOBiyzjgajjgZfjgYLjgY0NCivjgZfjgoDjgoks44GX44KH44GG44GE44GhDQor44KE44GI44GM44GXLOOBguOBpOOBkw0KK+OBl+OBruOBluOBjSzjgYLjgaTjgZcNCivjga/jgY7jgo/jgoks44Gy44Gn44GKDQor44GX44GK44GgLOOBvuOBleOBsuOBqA0KK+OBl+OBiuOBnyzjgbLjgZXjgojjgZcNCivjgZfjgYrjgZbjgo8s44GR44KT44GE44GhDQor44GX44KJ44GELOOBn+OBkeOBlw0KK+OBl+OCieOBhOOBlyzjgajjgoLjgbLjgZUNCivjgZfjgofjgYbjgaAs44GR44KT44GYDQor44GX44KF44GGLOOBqOOCguOBkw0KK+OBneOCgeOChCzjgb7jgZXjgZcNCivjgZnjgaAs44GP44G/44GTDQor44GZ44GILOOBsuOBp+OBig0KK+OBmeOBiOOBnyzjgbLjgafjgYoNCivjgZfjgbbjgYTjgaEs44Gy44Gn44KG44GNDQor44GZ44GM44GuLOOBsuOCjeOChuOBjQ0KK+OBmeOBjOOCj+OCiSzjgbLjgZXjgZ/jgYsNCivjgZnjgY7jgYgs44GL44Gk44Go44GXDQor44GZ44GO44G+44GVLOOBkeOBhOOBnw0KK+OBmeOBjuOCguOCiizjga7jgbbjgobjgY0NCivjgZnjgY7jgoLjgags44Go44GK44KLDQor44GZ44GO44GV44GNLOOCiOOBhuOBkw0KK+OBmeOBjuOBhuOCiSzjgobjgY3jgYoNCivjgZnjgY7jgYbjgoks44GY44KF44KT44GE44GhDQor44G/44Ga44GK44GhLOOBn+OBi+OBlw0KK+OBmeOBjuOChOOBvizjgb7jgZXjgoQNCivjgZnjgY7jgoTjgb4s44G+44Gq44G2DQor44GZ44GO44KE44G+LOOBkeOCkw0KK+OBmeOBjuOChOOBvizjgZ/jgZHjgZcNCivjgZnjgb8s44G+44GV44KC44GoDQor44Gf44G544GELOOCiOOBl+OBruOCig0KK+OBmeOBquOBvyzjgbLjgo3jgZMNCivjgZnjgZXjgo8s44GK44GV44KADQor44GZ44Ga44GNLOOBguOBjeOBkw0KK+OBmeOBmuOBjSzjgYjjgYTjgZgNCivjgZnjgZrjgY0s44Gy44Gn44KG44GNDQor44GZ44Ga44GNLOOBsuOCjeOBguOBjQ0KK+OBmeOBmuOBjSzjgYvjgarjgZMNCivjgZnjgZrjgY0s44GL44Gq44GTDQor44GZ44Ga44GNLOOBi+OBmuOCiOOBlw0KK+OBmeOBmuOBjSzjgZHjgpPjgZ8NCivjgZnjgZrjgY0s44GT44GG44GYDQor44GZ44Ga44GNLOOBvuOBleOBruOCig0KK+OBmeOBmuOBjSzjgarjgorjgb7jgZUNCivjgZ/jgbks44KK44KF44GG44GE44Gh44KN44GGDQor44Gf44Gh44Gv44KJLOOBn+OBi+OBlw0KK+OBn+OBkizjgajjgZfjgY0NCivjgZ/jgZDjgaEs44KP44Gf44KLDQor44Gq44GL44GfLOOCj+OBn+OCiw0KK+OBn+OBkOOBoSzjgZfjgpMNCivjgZ/jgZjjgb4s44GC44GN44KJDQor44Gf44GY44G+LOOBvuOBk+OBqA0KK+OBn+OBi+OBoCzjgZPjgYbjgYTjgaENCivjgZ/jgYvjgY7jgo8s44G/44Gk44Gy44KNDQor44Gf44GL44Gv44GXLOOBi+OBmuOCiOOBlw0KK+OBn+OBi+OBr+OBlyzjgbLjgo3jgoTjgZkNCivjgZ/jgYvjga/jgZcs44GL44Ga44Gu44KKDQor44Gf44GL44Gv44GXLOOBv+OBpOOBqOOBlw0KK+OBn+OBi+OBj+OCiSzjgZPjgYbjgZgNCivjgZ/jgYvjgY/jgoks44KE44GZ44G+44GVDQor44Gf44GL44Gv44GXLOOChOOBsuOCjQ0KK+OBn+OBi+OBr+OBlyzjgYLjgY3jgbXjgb8NCivjgZ/jgYvjga/jgZcs44GK44GV44KADQor44Gf44GL44Gv44GXLOOChuOBhuOBmA0KK+OBn+OBi+OBr+OBlyzjgbLjgo3jgobjgY0NCivjgZ/jgYvjga/jgZcs44Gk44GL44GVDQor44Gf44GL44Gv44GXLOOBl+OCk+OBhOOBoQ0KK+OBn+OBi+OBr+OBlyzjgobjgYbjgZMNCivjgZ/jgYvjga/jgZcs44G+44GT44GoDQor44Gf44GL44Gv44GXLOOBsuOBp+OBjQ0KK+OBn+OBi+OBj+OCiSzjgaTjgajjgoANCivjgZ/jgYvjgb/jgoQs44Gf44G+44G/DQor44Gf44GL44GV44GULOOBj+OBq+OBsuOBkw0KK+OBn+OBi+OBleOBjSzjgb7jgZXjgagNCivjgZ/jgYvjgZss44G+44GV44Gy44GoDQor44Gf44GL44Gk44GLLOOBl+OCk+OBhOOBoQ0KK+OBn+OBi+OChOOBquOBjizjgZfjgZLjgosNCivjgZ/jgYvjgoTjgarjgY4s44KE44GI44GN44GhDQor44Gf44GR44GhLOOBsuOBp+OBguOBjQ0KK+OBn+OBkeOBoCzjgbLjgo3jgZcNCivjgZ/jgZHjgaAs44GE44Gk44Gy44GoDQor44Gf44GR44GM44G/LOOBi+OBpOOBvw0KK+OBn+OBkeOBsuOBlSzjgb7jgZPjgagNCivjgZ/jgZHjgYQs44Gu44G244GKDQor44Gf44GR44GELOOBn+OBoOOChuOBjQ0KK+OBn+OBkeOBi+OCjyzjgZ/jgZHjgbLjgZMNCivjgZ/jgZHjgoDjgoks44Go44GX44Gy44GnDQor44Gf44GR44Gq44GLLOOBqOOBl+OBsuOCjQ0KK+OBhOOBvuOBhCzjgojjgYbjgYTjgaENCivjgZ/jgZHjgZXjgZMs44KI44GG44GE44GhDQor44Gf44GR44GX44G+LOOBi+OBpOOBl+OCjeOBhg0KK+OBn+OBkeOBhuOBoSzjgbLjgo3jgajjgZcNCivjgbLjgaDjgYss44Go44GK44KLDQor44Gf44GN44KC44GoLOOBv+OBqeOCig0KK+OBn+OBjeOBluOCjyzjgY3jgY/jgb8NCivjgZ/jgb7jgYQs44G+44GV44KLDQor44Gf44KA44KJLOOBl+OCh+OBhuOBhOOBoQ0KK+OBn+OBquOBuSzjgYjjgYTjgZgNCivjgZ/jgarjgbks44KI44GG44G444GEDQor44Gf44Gq44GLLOOBguOBjeOBqA0KK+OBn+OBquOBiyzjgYTjgZXjgoANCivjgZ/jgarjgYss44G/44Gp44KKDQor44Gf44Gq44GLLOOCiOOBl+OBquOCig0KK+OBn+OBquOBiyzjgoTjgZnjgZgNCivjgZ/jgarjgYss44Gf44GL44GXDQor44Gf44Gq44GLLOOBguOCiuOBsuOBqA0KK+OBn+OBquOBiyzjgZfjgpPjgZQNCivjgZ/jgarjgYss44GX44KF44GG44GE44GhDQor44Gf44Gq44GLLOOBsuOCjeOChuOBjQ0KK+OBn+OBquOBiyzjgZ/jgYvjgZcNCivjgZXjga4s44Gy44KN44G144G/DQor44Gf44GrLOOBiOOBhOOBhOOBoeOCjeOBhg0KK+OBn+OBq+OCgOOCiSzjgojjgZfjgbXjgb8NCivjgZ/jgavjgoTjgb4s44Gg44GE44GZ44GRDQor44Gf44GV44GLLOOChOOBmeOBvuOBlQ0KK+OBi+OBqOOBhizjgYjjgYTjgZgNCivjgabjgonjgaAs44KI44GX44KG44GNDQor44Gm44KJ44G+44GILOOBvuOBjQ0KK+OBpuOCieOBq+OBlyzjga7jgbbjgobjgY0NCivjgabjgonjgavjgZcs44Gy44KN44G/44GkDQor44Gm44KJ44Ge44GuLOOBi+OBiuOCig0KK+OBqOOBs+OBnyzjgb7jgZXjgb8NCivjgYTjgZrjgb/jgZXjgo8s44Gy44Gn44GNDQor44Go44GgLOOBleOBqOOBlw0KK+OBqOOBkOOBoSzjgZ/jgZHjgZcNCivjgajjgb7jgaQs44Go44KC44GC44GNDQor44GC44GN44KA44KJLOOBruOBtuOChuOBjQ0KK+OBqOOBjeOBn+OBkSzjgZ/jgZHjgZcNCivjgajjgY/jgb7jgZks44GC44GN44Gy44KNDQor44Go44GP44Gf44GRLOOBguOBjeOBsuOBkw0KK+OBqOOBvuOBjSzjgYvjgZrjgoQNCivjgajjgb/jgYQs44G+44GV44Gy44KNDQor44Go44G/44GfLOOBjeOBv+OBig0KK+OBqOOBv+OChOOBvizjgb7jgZXjgagNCivjgajjgoLjgaAs44GP44G/44GTDQor44Go44KC44Gq44GMLOOBvuOBleOBruOCig0KK+OBqOOBleOBiyzjgarjgYrjgagNCivjgajjgaPjgajjgoos44GC44GN44Gy44GTDQor44G+44Gk44GKLOOCiOOBl+OChuOBjQ0KK+OBqOOCiOOBoCzjgojjgZfjgobjgY0NCivjgaTjgbzjgYQs44GC44GN44KJDQor44GL44Go44GGLOOBqOOBl+OBsuOCjQ0KK+OBpOOBoeOChCzjgYvjgZrjgZcNCivjgaTjgaAs44GX44KT44GUDQor44Gk44GYLOOBvuOBleOBsuOBkw0KK+OBpOOBmCzjgojjgYbjgYTjgaENCivjgaTjgZjjga4s44KI44GG44GZ44GRDQor44Gk44GL44GT44GXLOOBguOBjeOCiQ0KK+OBpOOBi+OCguOBqCzjgZfjgZLjgbLjgo0NCivjgaTjgYvjgZbjgY0s44G144G/44Gy44KNDQor44Gk44GN44GC44GXLOOBguOBjeOCiQ0KK+OBpOOBjeOBluOCjyzjgZPjgYbjgZgNCivjgaTjgb/jgZ8s44GI44GE44GE44GhDQor44GI44KT44GpLOOBn+OBoOOBsuOBkw0KK+OBpOOBqCzjgajjgZfjgbLjgo0NCivjgaTjgoDjgoks44KI44GX44GKDQor44Gk44Gt44GL44KPLOOBneOBruOBmeOBkQ0KK+OBpOOCi+OBiuOBiyzjgojjgZfjgbLjgZMNCivjgaTjgovjgZ8s44Gu44KK44GTDQor44Gk44KL44GfLOOCguOBqOOChuOBjQ0KK+OBpOOCi+OBnyzjgZ/jgaTjgobjgY0NCivjgaTjgaTjgb8s44GX44KF44KT44KEDQor44Gk44Gk44G/LOOBi+OBpOOBvw0KK+OBpOOCj+OBkyzjgobjgYsNCivjgaTjgoTjgb4s44GN44KI44G144GVDQor44GG44Gh44GgLOOBl+OCh+OBhuOBkw0KK+OBhuOBoeOBoCzjgb7jgZXjgbLjgo0NCivjgYbjgaHjgaAs44Gb44Gk44GTDQor44GG44Gh44KE44G+LOOBl+OCk+OBlA0KK+OBhuOBoeOChOOBvizjgbLjgafjgYoNCivjgYbjgaks44GN44KI44G/DQor44GG44GI44GgLOOBr+OCi+OBjQ0KK+OBhuOBiOOBoCzjgojjgYbjgZnjgZENCivjgb7jgaTjgoDjgoks44Gg44GE44GY44KN44GGDQor44GG44GI44GgLOOBguOBkeOBvw0KK+OBhuOBiOOBoCzjgYLjgY3jgYoNCivjgYbjgYjjgb7jgaQs44Gy44Gn44GKDQor44GG44GI44GuLOOBsuOCjeOBvw0KK+OBhuOBiOOBrizjgZjjgoXjgpPjgZgNCivjgYTjgZfjgaAs44GL44Ga44Gy44GTDQor44GG44KB44GgLOOBk+OBhuOBm+OBhA0KK+OBhuOCgeOBjOOBjSzjgY/jgavjgZMNCivjgYbjga4s44G+44KC44KLDQor44GG44KJ44Gv44GXLA0KK+OBl+OBv+OBmizjgZXjgajjgZcNCivjgYjjgYzjgZfjgoks44Gf44Gg44GXDQor44GZ44GI44GL44GtLOOBpuOCi+OChuOBjQ0KK+OBhuOBpCzjgajjgYrjgosNCivjgYbjgaTjga/jgZcs44Go44GX44Gy44KNDQor44GG44Gk44G/LOOBkeOBhOOBhOOBoQ0KK+OCj+OBoCzjgaTjga3jgbXjgb8NCivjgo/jgaAs44Gf44Gk44G/DQor44GN44Gf44KP44GNLOOBm+OBhOOBjQ0KK+OCj+OBl+OBmizjga/jgovjgarjgYwNCivjgo/jgZ/jgbks44G144G/44KIDQor44KP44Gf44Gq44G5LOOBsuOCjeOBlw0KK+OCj+OBn+OBquOBuSzjgb7jgZXjgoQNCivjgo/jgZ/jgarjgbks44GV44Go44G/DQor44KP44Gf44Gq44G5LOOBl+OCk+OBhOOBoQ0KK+OCj+OBn+OBquOBuSzjgZ/jgYvjgZcNCivjgo/jgZ/jgarjgbks44Gk44Go44KADQor44KP44Gf44Gq44G5LOOCiOOBl+OBguOBjQ0KK+OCj+OBn+OBquOBuSzjgaTjga3jgYoNCivjgo/jgZ/jgarjgbks44G+44GV44KIDQor44KP44Gf44Gq44G5LOOBiOOBhOOBmA0KK+OCj+OBn+OBquOBuSzjgbLjgo3jgZMNCivjgo/jgZ/jgarjgbks44Gy44KN44KG44GNDQor44KP44Gf44Gq44G5LOOBi+OBpOOBlw0KK+OCj+OBn+OBquOBuSzjgobjgYbjgZjjgo3jgYYNCivjgo/jgZ/jgarjgbks44KE44GZ44GKDQor44GI44Gv44KJLOOBguOBpOOBlw0KK+OCj+OBn+OBquOBuSzjgbLjgafjgYLjgY0NCivjgo/jgZ/jgonjgYQs44GY44KN44GGDQor44KE44GI44GM44GXLOOBiuOBleOCgA0KK+OChOOBr+OBjizjgZfjga7jgbYNCivjgoTjgb7jgaAs44GX44KF44GG44GE44GhDQor44KE44G+44GgLOOBn+OBkeOBlw0KK+OChOOBvuOBoCzjgojjgYbjgZgNCivjgZPjgpPjgaks44Go44GX44KEDQor44KE44G+44GgLOOBguOBpOOBlw0KK+OChOOBvuOBoCzjgYrjgZXjgoANCivjgoTjgb7jgaAs44G/44GNDQor44KE44G+44GgLOOBguOBjeOBsuOCjQ0KK+OBiOOBruOCguOBqCzjgbLjgo3jgZcNCivjgZXjgYTjgajjgYYs44Gy44KN44KG44GNDQor44KE44G+44GQ44GhLOOBjeOCk+OChA0KK+OBteOBmOOBnyzjgb7jgZXjgajjgZcNCivjgoTjgb7jgZDjgaEs44GV44Go44GTDQor44KE44G+44GQ44GhLOOChOOBmeOBsuOCjQ0KK+OBiOOBluOBjSzjgbLjgajjgZcNCivjgoTjgb7jgZDjgaEs44GV44Go44KLDQor44KE44G+44KC44GoLOOBleOBqOOBlw0KK+OChOOBvuOCguOBqCzjgajjgYrjgosNCivjgoTjgb7jgoLjgags44KE44GZ44GXDQor44KE44G+44KC44GoLOOBn+OBkeOBlw0KK+OChOOBvuOCguOBqCzjgZPjgYbjgYTjgaENCivjgoTjgb7jgoLjgags44GT44GG44GNDQor44KE44G+44KC44GoLOOBqOOBl+OChuOBjQ0KK+OChOOBvuOCguOBqCzjgb7jgZXjgosNCivjgoTjgb7jgarjgYss44Gy44KN44GXDQor44KE44G+44GtLOOBv+OBoeOCiw0KK+OChOOBvuOBruOBj+OBoSzjgZXjgajjgZcNCivjgoTjgb7jgZXjgY0s44Gf44GL44GXDQor44KE44G+44GX44GfLOOBvuOBleOBi+OBmg0KK+OChOOBvuOBl+OBnyzjgbLjgo3jgY0NCivjgoTjgb7jgZfjgZ8s44GR44GE44GE44Gh44KN44GGDQor44KE44G+44GX44GfLOOBk+OBhuOBjQ0KK+OChOOBvuOBl+OBnyzjgZfjgZLjgb8NCivjgZfjgZXjgYQs44G+44GV44KG44GNDQor44KE44G+44GX44GfLOOBqOOBl+OBsuOCjQ0KK+OChOOBvuOBhuOBoSzjgajjgZfjgobjgY0NCivjgoTjgb7jgYbjgaEs44G+44GT44GoDQor44KE44G+44GW44GNLOOBsuOBp+OBig0KK+OChOOBvuOBluOBjSzjgZ/jgaDjgZcNCivjgoTjgb7jgZbjgY0s44KA44Gk44G/DQor44KE44Gq44GO44KC44GoLOOBn+OBkeOBlw0KK+OChOOBrizjgorjgofjgYbjgZgNCivjgoTjga4s44Gy44KN44GNDQor44KE44GX44KNLOOChOOBmeOBlw0KK+OChOOBluOCjyzjgb7jgZPjgagNCivjgojjgaAs44GX44KF44KT44GZ44GRDQor44KI44GOLOOBteOBv+OChuOBjQ0KK+OCiOOBk+OBhCzjgZPjgYbjgZgNCivjgojjgZPjgoTjgb4s44GR44KT44GX44KH44GGDQor44KI44Gt44GW44GNLOOBteOBqOOBlw0KK+OCiOOBl+OBoCzjgZjjgoXjgpMNCivjgojjgZfjgaAs44KK44GI44GTDQor44KI44GX44GgLOOBi+OBmuOCiOOBlw0KK+OCiOOBl+OBoCzjgZjjgoXjgpPjgZMNCivjgYjjgbPjgaos44Gb44GE44GE44GhDQor44KI44GX44GgLOOBn+OBoOOBlw0KK+OCiOOBl+OBoCzjgZ/jgaTjgYoNCivjgojjgZfjgYTjgZEs44KE44GZ44Gu44KKDQor44KI44GX44KA44KJLOOBv+OBpOOChuOBjQ0KK+OCiOOBl+OCgOOCiSzjgZXjgajjgosNCivjgojjgZfjga4s44GX44KT44GE44GhDQor44KI44GX44GKLOOBruOBvOOCiw0KK+OCiOOBl+OBn+OBkSzjgZfjgZLjgojjgZcNCivjgobjgYLjgZUs44Gm44Gk44GYDQor44GK44GK44KP44GgLOOBl+OCh+OBhuOBmA0KK+OBiOOBkOOBoSzjgZXjgajjgosNCivjgYrjgZbjgo8s44GL44Gk44KG44GNDQor44GV44Go44GGLOOBv+OBpOOBguOBjQ0KK+OBl+OCk+OBn+OBqyzjgZ/jgZHjgb8NCivjgZnjgY7jgZ/jgass44KI44GX44Gy44GTDQor44Gf44GL44Gv44GXLOOBhOOBmuOBvw0KK+OBn+OBjeOBluOCjyzjgarjgYrjgY0NCivjgb/jgojjgaAs44GR44KT44GYDQor44KE44G+44GgLOOBjeOCiOOBlw0KK+OChOOBr+OBjizjgZXjgajjgZcNCivjgY3jgoQs44Gf44Gg44GXDQor44G/44Gb44GNLOOBruOCiuOBi+OBmg0KK+OBiOOBruOCguOBqCzjgZHjgpPjgZ/jgo3jgYYNCivjgZXjgY/jgonjgaAs44G+44GV44GNDQor44GV44GV44GNLOOBruOBtuOChuOBjQ0KK+OBsOOBsCzjgZ/jgZHjgYoNCivjgYLjgbws44GL44GK44KKDQor44GC44Gg44GhLOOBk+OBhuOBuOOBhA0KK+OBguOBi+OBleOBiyzjgb7jgZXjgbLjgo0NCivjgYLjgb7jgZXjgY0s44Gy44Gn44GoDQor44GC44GK44GNLOOBi+OCk+OBmA0KK+OBguOBnOOBjOOBvyzjgZfjgZLjgYvjgZoNCivjgYjjganjga4s44G144G/44Gy44KNDQor44Gp44GELOOBi+OBmuOBig0KK+OBteOBmOOBhCzjgajjgoLjgbLjgagNCivjgbXjgZjjgYQs44GV44KG44KKDQor44G144GY44KC44GoLOOBsuOCjeOBjQ0KK+OBteOBmOOCguOBqCzjgZ/jgZHjgZcNCivjgbXjgY/jga/jgoks44Gu44G244KG44GNDQor44G144GP44GK44GLLOOBpuOBpOOChA0KK+OBteOBj+OBl+OBvizjgZHjgpPjgYTjgaENCivjgbXjgZXjgoTjgb4s44GT44GG44GE44GhDQor44GU44Go44GGLOOCiOOBl+OBsuOCjQ0KK+OBr+OBvuOBuSzjgYjjgYTjgZgNCivjga/jgarjgaAs44GR44GE44GZ44GRDQor44Gv44GX44KC44GoLOOCiOOBl+OBsuOCjQ0KK+OBsuOBsyzjgZXjgYvjgYgNCivjgbLjgonjgaTjgYss44GL44Ga44KG44GNDQor44GE44GL44KKLOOBn+OBi+OChuOBjQ0KK+OBhOOBj+OBnyzjgYLjgY3jgbLjgZMNCivjgYTjgb7jgYQs44Gm44Gk44GXDQor44GE44GX44Gv44KJLOOChOOBmeOBsuOCjQ0KK+OBhOOBneOBoCzjgZPjgYbjgYTjgaENCivjgYTjgZ3jgZbjgY0s44KI44GX44Gf44GLDQor44GY44KT44GQ44GGLOOCiOOBl+OBguOBjQ0KK+OBquOBhCzjgb/jga7jgosNCivjgZjjgofjgYbjgavjgZcs44GK44GV44G/DQor44GL44GY44Gv44KJLOOCiOOBl+OBguOBjQ0KK+OBi+OBvuOBnyzjgZ/jgaTjgoQNCivjgYvjgoHjgYQs44GC44GN44KJDQor44GL44G/44KE44G+LOOBpuOBpOOChA0KK+OBi+OBqOOBhizjgZ/jgaTjgZgNCivjgYvjgajjgYYs44Go44GX44KG44GNDQor44GI44G/LOOBsuOBp+OBguOBjQ0KK+OBi+OCj+OCguOCiizjgb7jgoLjgosNCivjgY3jgoDjgoks44KI44GX44Gy44KNDQor44GN44KA44KJLOOBi+OBmuOBig0KK+OBjeOBl+OBuSzjgY/jgavjgbLjgZMNCivjgY3jgZfjgYvjgo8s44GL44Ga44KI44GXDQor44GN44Gf44GM44KPLOOBl+OCk+OBhOOBoQ0KK+OBjeOBn+OBquOBiyzjgoHjgZDjgb8NCivjgZPjgbDjgoTjgZcs44G+44GV44KG44GNDQor44GT44Gw44KE44GXLOOBkuOCkw0KK+OBk+OBhOOBkSzjgajjgYbjgZ8NCivjgZPjgYTjgZrjgb8s44GL44Ga44KEDQor44GT44GY44G+LOOBn+OBi+OBsuOBlQ0KK+OBk+OBq+OBlyzjgY3jgojjgYvjgZoNCivjgZPjgoTjgb4s44Gf44GP44KEDQor44GP44Gp44GGLOOBi+OBmuOChA0KK+OBj+OBvuOBleOBjSzjgojjgZfjgYLjgY0NCivjgY/jgo3jgaAs44Gy44KN44GL44GaDQor44GP44GV44GLLOOBl+OCk+OBlA0KK+OBiOOCk+OBqSzjgZHjgpPjgZgNCivjgb7jgYjjgYvjgo8s44G+44GV44Gy44KNDQor44G+44KL44GfLOOBsuOBp+OBjQ0KK+OBvuOBpOOBl+OBnyzjgZfjgpPjgZQNCivjgb/jgY/jgass44Go44G/44GKDQor44GI44KT44GpLOOCiOOBl+OBruOCig0KK+OBv+OBrSzjgoTjgZnjgZ/jgYsNCivjgb/jgYbjgoks44GX44KF44GG44GE44GhDQor44G/44Ge44GQ44GhLOOBl+OCh+OBhuOBmA0KK+OBu+OCkyzjgojjgZfjgYLjgY0NCivjgb/jgZrjgZfjgb4s44GX44GS44KLDQor44GI44GgLOOBn+OBi+OBlw0KK+OBquOBjOOBiizjgYLjgaTjgZcNCivjgarjgYvjgoDjgoks44Go44GK44KLDQor44Gq44GL44Gr44GXLOOChuOBhuOBmA0KK+OBquOBi+OBrizjgojjgYbjgZMNCivjgarjgYvjgYos44GL44Gk44KEDQor44Gt44KC44GoLOOBvuOBleOChuOBjQ0KK+OBq+OBl+OBi+OCjyzjgZPjgYbjgZgNCivjgavjgZfjgo/jgY0s44GR44KT44GE44GhDQor44Gu44GgLOOBn+OBi+OBkw0KK+OBruOBkOOBoSzjgb/jgajjgZcNCivjgYrjgaHjgYLjgYQs44GT44GG44GYDQor44GK44GK44Gv44GXLOOChOOBmeOCiOOBlw0KK+OBiuOBrizjgZ/jgY/jgZgNCivjgYjjgb8s44Gy44Gn44GKDQor44GK44GP44KA44KJLOOBvuOBleOBsuOCjQ0KK+OBiuOBj+OBrizjgbLjgafjgb/jgaQNCivjgYjjgpPjgaks44KI44GX44Gf44GgDQor44GK44GK44Gr44GXLOOBguOBjeOCiQ0KK+OBiuOBluOBjSzjgY/jgavjga/jgosNCivjgZXjgYjjgY0s44Gu44KK44KG44GNDQor44GV44GM44KPLOOBruOBvOOCiw0KK+OBleOBj+OBvizjgb7jgZXjgbsNCivjgZXjgajjgYYs44GX44GS44GC44GNDQor44GV44Go44GGLOOBv+OBpOOBsuOCjQ0KK+OBleOCjyzjgY3jgojjgZ/jgYsNCivjgZvjgYzjgo8s44GT44GG44GYDQor44Gb44GNLOOChuOBjeOBig0KK+OBm+OCk+OBoCzjgZHjgpPjgZgNCivjgZfjgbbjgoQs44GX44KF44GG44GE44GhDQor44GX44G/44GaLOOCiOOBl+OBr+OCiw0KK+OBl+OCk+OBp+OCkyzjgYLjgY3jgojjgZcNCivjgZfjgYrjgZ8s44Gy44Go44GXDQor44GX44KF44GP44Gf44GrLOOBqOOBl+OBig0KK+OBmeOChOOBvizjgbLjgo3jgZMNCivjgZnjgZrjgoDjgoks44GE44GV44GKDQor44Gf44GL44GK44GLLOOCiOOBl+OChuOBjQ0KK+OBn+OBkeOBhuOBoSzjgYvjgaTjga7jgooNCivjgZ/jgZHjgYbjgaEs44GL44Ga44GXDQor44Gf44G+44GELOOBvuOBleOBsuOCjQ0KK+OBn+OCkyzjgYvjgZrjgbLjgo0NCivjgZ/jgarjgYss44GR44KT44GUDQor44GI44Go44GGLOOBpuOCi+OBguOBjQ0KK+OBn+OBq+OBsuOCiSzjgYvjgZrjgbLjgo0NCivjgZ/jgavjgoTjgb4s44GN44GP44GKDQor44Gf44GK44GLLOOBl+OBkuOBjQ0KK+OBn+OBl+OBvizjgb7jgZXjgobjgY0NCivjgZ/jgZbjgo8s44G/44GN44GKDQor44Go44GN44GfLOOBi+OBpOOCiOOBlw0KK+OBqOOBv+OBnyzjgZfjgZLjgY0NCivjgajjgb/jgZ8s44GR44KT44GYDQor44Go44G/44GfLOOBguOBjeOBig0KK+OBpOOBmOOBuSzjgbLjgo3jgZMNCivjgaTjgZjjgYvjgo8s44GR44KT44GE44GhDQor44GI44KT44GpLOOBmOOCheOCk+OBkw0KK+OBv+OChOOBluOBjSzjgb7jgY3jgZMNCivjgo/jgaAs44KI44GX44Gf44GLDQor44KP44Gf44Gq44G5LOOBsuOCjeOBvw0KK+OChOOBvuOBoCzjgarjgYrjgoQNCivjgoTjgb7jgaAs44Gf44Gg44GXDQor44KE44G+44GgLOOBleOChOOBiw0KK+OChOOBvuOBkOOBoSzjga7jgorjgYoNCivjgoTjgb7jgoLjgags44Gf44GL44GTDQor44KE44G+44GK44GLLOOBi+OBpOOBruOCig0KK+OChOOBvuOBl+OBnyzjga7jgbbjgYoNCivjgoTjgb7jgZfjgZ8s44GL44Ga44Gy44GVDQor44KE44G+44Ge44GILOOBsuOCjeOBvuOBlQ0KK+OChOOBiizjgoTjgZnjga/jgosNCivjgoTjgZnjgaAs44GV44Go44GXDQor44KI44Gk44Gf44GrLOOCiOOBl+OBig0KK+OCiOOBl+OBr+OCiSzjgbLjgafjgYoNCivjgojjgZPjgYbjgoks44G+44GV44GKDQor44Gy44KJ44GbLOOBl+OBkuOBig0KK+OBvuOBpOOBhCzjgYTjgaHjgZ/jgo3jgYYNCivjgZPjgbDjgoTjgZcs44GL44Ga44Gy44GVDQor44GZ44Ga44GNLOOBn+OBkeOBlw0KK+OBi+OBqOOBhizjgajjgZfjgY/jgasNCivjgY/jgavjgajjgoIs44Gu44G244KG44GNDQor44GI44KT44GpLOOBlOOBhg0KK+OBhOOBqOOBhizjgZXjgajjgosNCivjgYrjgYvjgZbjgY0s44Gy44Gn44GKDQor44Gy44KN44Gv44GXLOOChOOBmeOBig0KK+OBleOBi+OBjSzjgojjgYbjgZMNCivjgb/jgY0s44Go44GN44GTDQor44GP44G+44GNLOOBvuOBleOBig0KK+OBn+OChOOBvizjgabjgaTjgYoNCivjgYrjgYrjgo/jgY0s44GN44Gv44GhDQor44G/44KH44GG44Gp44GGLOOBvuOBleOBqA0KK+OBi+OBqOOBhizjgbLjgo3jgojjgZcNCivjgbDjgbAs44G/44GN44GKDQor44GL44Gt44GTLOOBr+OCi+OBsuOBkw0KK+OBk+OBkOOCjCzjgbLjgo3jgYLjgY0NCivjgZ/jgZHjgaAs44KI44GX44Gu44KKDQor44GE44Gh44KA44KJLOOBvuOCguOCiw0KK+OBhOOBqOOBhizjga7jgbzjgosNCivjgYbjgYjjga/jgb4s44G/44Gu44KLDQor44Gq44GL44GELOOBk+OBhuOBmA0KK+OBk+OBsOOChOOBlyzjgb7jgZXjgYoNCivjgZfjgb7jgaAs44G+44Gq44GKDQor44KB44GQ44KNLOOBl+OBkuOCiw0KK+OChOOBvuOChCzjgbLjgo3jgZcNCivjgbXjgZjjgZ8s44G/44Gk44GQDQor44G+44Go44GwLOOBoeOBsuOCjQ0KK+OBhOOBqOOBhizjgoLjgajjgYvjgZoNCivjgarjgYvjgYQs44GX44Ga44GKDQor44GK44GL44GgLOOBvuOBleOBsuOBqA0KK+OBruOCguOBqCzjgajjgZfjgY0NCivjgarjgYzjgZfjgb4s44KI44GG44GYDQor44KI44Gt44GL44KPLOOBn+OCguOBpA0KK+OCj+OBn+OBquOBuSzjgajjgYrjgosNCivjgoDjgonjgb7jgaQs44Go44KC44Gh44GLDQor44GN44Gf44GrLOOChuOBhuOBhOOBoeOCjQ0KK+OBv+OBi+OBvyzjgbLjgo3jgZcNCivjgYLjgaDjgaEs44G/44Gk44GKDQor44GE44Gu44GG44GILOOBvuOBleOBguOBjQ0KK+OBiuOBi+OBoCzjgZ/jgYvjgYLjgY0NCivjgYvjgo/jgZfjgb4s44Gm44Gk44GKDQor44Gb44GNLOOBguOBjeOCiQ0KK+OBn+OBi+OBr+OBlyzjgojjgZfjgZgNCivjgo/jgZ/jgarjgbks44G+44GV44KLDQor44GP44KK44Gv44KJLOOBoeOBr+OCiw0KK+OCj+OBn+OBquOBuSzjgZHjgYTjgZnjgZENCivjgbXjgZjjgYvjgZ8s44G/44Gk44GKDQor44KI44GX44GoLOOBruOCiuOBig0KK+OBi+OCj+OBmyzjgYrjgZXjgoANCivjgZ/jgarjgYss44G+44GT44GoDQor44GE44G+44GELOOBkeOCk+OBmA0KK+OBk+OCgOOCjSzjgobjgY3jgajjgZcNCivjgb7jgYjjgaAs44GI44GE44GUDQor44GT44GE44GRLOOBiuOBleOCgA0KK+OCj+OBn+OBquOBuSzjgb/jgaHjgYLjgY0NCivjgZPjgpPjgaks44Gy44GV44Go44GXDQor44GE44GX44GELOOBsuOBleOChA0KK+OBv+OBl+OBvizjgZ/jgYvjgZcNCivjgZPjgbDjgoTjgZcs44KI44GX44GL44GaDQor44KE44G+44GX44GfLOOBkeOCk+OBmA0KK+OBn+OBquOBiyzjgorjgofjgYbjgZ7jgYYNCivjgoTjgb7jgaAs44G+44GV44Go44GXDQor44GL44G/44KELOOBv+OBoeOChOOBmQ0KK+OChOOBvuOCguOBqCzjgorjgY3jgYoNCivjgZfjgYrjgZbjgY0s44Go44GK44KLDQor44Gq44GL44KA44KJLOOBoeOBi+OBlw0KK+OBn+OBkeOCguOBqCzjgZXjgaHjgYoNCivjgaDjgZHjgoTjgb4s44Gy44KN44KG44GNDQor44GC44KJ44GL44KPLOOBnOOCk+OBmA0KK+OCiOOBk+OBnyzjgb7jgZXjgobjgY0NCivjgarjgYvjgoDjgoks44GL44Ga44Gy44GTDQor44GC44KJ44GL44KPLOOBqOOBl+OBig0KK+OBiuOBiuOBv+OBoSzjgb7jgZPjgagNCivjgb7jgaTjgY0s44GI44GE44GNDQor44GP44GX44Gz44GNLOOBmeOBkeOBsuOBpw0KK+OBq+OBo+OBnyzjgabjgovjgbLjgZMNCivjgaTjgbzjgYbjgaEs44G/44GN44GKDQor44GV44GE44Go44GGLOOBsuOCjeOChuOBjQ0KK+OBn+OBkeOCgOOCiSzjgajjgZfjgbLjgo0NCivjgZ/jgarjgbks44GL44Ga44GKDQor44G+44GI44GgLOOCguOBqOOBj+OBqw0KK+OBmeOBjOOBr+OCiSzjgabjgaTjgYoNCivjgYvjga3jgZMs44GX44KH44GG44GYDQor44KE44G+44GG44GhLOOBvuOBleOBsuOBkw0KK+OBi+OBv+OBluOCjyzjgbLjgo3jgbXjgb8NCivjgZPjgYws44Go44GP44Gy44KNDQor44Gk44KL44GV44GNLOOBmeOBquOBig0KK+OBsuOBjOOBlyzjgbXjgb/jgbLjgo0NCivjgYTjgZfjgaAs44KE44GZ44Gy44KNDQor44Gq44GL44GM44KPLOOBr+OCi+OBig0KK+OBpuOCieOBl+OBvizjgbLjgZXjga/jgosNCivjgY3jgZ/jgoDjgoks44GX44KF44KT44GYDQor44Gv44Gj44Go44KKLOOBsuOBp+OBvw0KK+OBleOBleOBjSzjgojjgZfjgbLjgo0NCivjgbvjgYss44GR44KT44Gf44KN44GGDQor44Gu44KA44KJLOOBpuOCi+OBig0KK+OBr+OChOOBrizjgYvjgZrjgYoNCivjgYLjgpPjgZbjgYQs44GX44KT44GE44GhDQor44G144KL44GuLOOBjeOCiOOBsuOBpw0KK+OBq+OBl+OCj+OBjSzjgY/jgasNCivjga/jgZvjgYzjgo8s44G+44GV44GKDQor44GE44KP44GfLOOBn+OBi+OChuOBjQ0KK+OBqOOBoCzjgbLjgo3jgYLjgY0NCivjgarjgYvjgoDjgoks44G+44GV44GoDQor44G144KL44GE44GXLOOBvuOBmeOBvw0KK+OBquOBi+OCgOOCiSzjgbXjgZjjgYoNCivjgarjgYvjgYzjgo8s44Gy44Gn44GKDQor44Gq44GL44G+LOOBn+OBpOOChA0KK+OBmeOBjOOCj+OCiSzjgb7jgZnjgZMNCivjgb7jgaTjgoLjgags44Gk44Go44KADQor44Gv44GX44KC44GoLOOCiOOBhuOBn+OCjeOBhg0KK+OBquOBi+OBpCzjgoTjgZnjgYvjgZoNCivjgZXjgajjgYbjgoos44GC44GN44KJDQor44GE44GN44GfLOOChuOBjeOBruOBtg0KK+OBjeOBj+OBoSzjgZ/jgZHjgZcNCivjgZnjgags44G+44GV44G/DQor44GX44Gw44GfLOOBsuOBleOBruOCig0KK+OBquOBhOOBqOOBhizjgZPjgYbjgZgNCivjgoLjgoos44GL44Ga44GTDQor44GE44Go44GELOOBguOBjeOCiQ0KK+OBhOOBqOOBhizjgZHjgpPjgZgNCivjgb7jgaTjgZbjgY0s44G+44GV44Gu44KKDQor44GG44GI44GuLOOBv+OBpOOBruOCig0KK+OBi+OBn+OBiuOBiyzjgY3jgojjgYvjgZoNCivjgbDjgpPjganjgYYs44Gf44Gk44GKDQor44GV44GE44Go44GGLOOBmOOCheOCk+OBmA0KK+OBhOOCj+OBhCzjgZfjgZLjgosNCivjgZfjgoLjgoTjgb4s44G/44Gu44KLDQor44GC44GL44G+44KLLOOBiuOBleOCgA0KK+OBlOOBqOOBhizjga/jgZjjgoENCivjgb7jgaTjgaAs44GZ44GZ44KADQor44Gt44GM44G/LOOBqOOBl+OBig0KK+OChOOBvuOBl+OBnyzjgb7jgZXjgYrjgb8NCivjgojjga3jgoTjgb4s44KK44KF44GG44G444GEDQor44GE44GX44KE44G+LOOBsuOBleOBig0KK+OBguOBueOBi+OCjyzjgozjgYTjgZgNCivjgYTjgb7jgoDjgoks44GX44GS44KLDQor44GE44KP44Gq44GMLOOBv+OBruOCiw0KK+OBhuOBiOOBoCzjgY/jgavjgbLjgZMNCivjgbXjgZjjgYvjgo8s44KG44GN44GKDQor44Gf44KA44KJLOOCiOOBl+OBsuOBlQ0KK+OBi+OBl+OBhCzjgb7jgZXjgagNCivjgojjga3jgaAs44G+44GV44GKDQor44KI44GT44GkLOOBguOBjeOBig0KK+OBguOBleOBiizjgobjgYbjgZgNCivjgZ/jgarjgYss44GR44GE44GYDQor44Gf44Gq44GLLOOBn+OBoOOBvw0KK+OChOOBl+OBjSzjgoTjgZnjgobjgY0NCivjgYvjgYTjgYzjgYQs44Gf44GR44GXDQor44Gd44GM44G5LOOChuOBjeOBig0KK+OBteOCi+OBi+OCjyzjgZHjgpPjgZgNCivjgYvjgo/jgYbjgaEs44KG44GG44GE44GhDQor44G144GY44GELOOBruOCiuOChuOBjQ0KK+OBhOOBkeOBruOChCzjgZ/jgaTjgYoNCivjgYrjgaEs44Gu44KK44GKDQor44Gq44GL44KC44GoLOOBquOBiuOBr+OCiw0KK+OCj+OBi+OBsOOChOOBlyzjga/jgozjgYoNCivjgYLjgonjgY0s44G144G/44GKDQor44KE44G5LOOBsuOBp+OBig0KK+OBn+OBi+OBr+OBlyzjgoTjgZnjgbLjgo0NCivjgZfjgbDjga4s44G/44Gk44GKDQor44Gf44GM44GX44KJLOOBqOOBl+OBig0KK+OBmeOBv+OBnyzjgabjgaTjgoQNCivjgZXjgajjgYYs44GT44GG44GY44KN44GGDQor44Gh44GuLOOBl+OBkuOBqA0KK+OChOOBvuOBoCzjgoTjgZnjgbLjgo0NCivjgYTjgYzjgonjgZcs44Gu44KK44KI44GXDQor44GE44GR44GM44G/LOOBkeOCk+OBhOOBoQ0KK+OBteOBquOBoCzjgZ/jgYvjgobjgY0NCivjgYTjga7jgYbjgYgs44Gf44GL44KI44GXDQor44Gr44GX44KE44G+LOOBsuOCjeOBlw0KK+OBhOOBl+OBr+OCiSzjgajjgZfjgZ/jgYsNCivjgZnjgZrjgY0s44Gf44GE44GhDQor44GT44KC44KK44KELOOBi+OBmuOBig0KK+OBoeOCheOBhuOBlCzjgbLjgo3jgZcNCivjgZPjgbDjgoTjgZcs44GK44GV44KADQor44G/44KE44KC44GoLOOBpOOBqOOCgA0KK+OBquOBi+OBnyzjgZ/jgYvjgobjgY0NCivjgYTjgorjgZ/jgass44Gf44GP44GKDQor44GK44GM44KPLOOChuOBjeOBoQ0KK+OBiuOBrSzjgZHjgpPjgZgNCivjgZPjgb7jgaQs44G+44GV44GC44GNDQor44G/44Gu44KPLOOBsuOCjeOBlw0KK+OBteOBmOOBi+OCjyzjgarjgYrjgagNCivjgYvjgo/jgZDjgaEs44KE44GZ44Gy44KNDQor44Gh44GwLOOBqOOBl+OBsuOBkw0KK+OBquOBi+OBq+OBlyzjgZXjgaDjgYoNCivjgZXjgY/jgb4s44Gy44Go44GXDQor44Gf44GR44G+44GVLOOBqOOBl+OChuOBjQ0KK+OBm+OBjSzjgojjgYbjgYTjgaENCivjgZXjgYTjgajjgYYs44G144G/44GKDQor44G144GY44KC44GoLOOChOOBmeOBig0KK+OBiuOBkOOCiizjgZ/jgaTjgZgNCivjgYTjgZfjgbDjgZcs44GN44KI44GXDQor44GC44GW44G/LOOBl+OBkuOCiw0KK+OBiuOBjOOBleOCj+OCiSzjgarjgYrjgYTjgaENCivjgZXjgYTjgajjgYYs44Gy44KN44GXDQor44Gf44Gq44G5LOOBkeOCk+OBmA0KK+OCguOCiuOChOOBvizjgZfjgoXjgYbjgbjjgYQNCivjgY3jgZ/jgZbjgo8s44Gy44Gn44Go44GXDQor44GL44Gq44GW44KPLOOBi+OBpOOBig0KK+OBr+OCieOBoCzjgb7jgZXjgagNCivjgYrjgY/jgoTjgb4s44GV44Go44GXDQor44GX44G/44GaLOOBm+OBhOOBmA0KK+OBhOOBruOBvuOBnyzjgobjgY3jgYoNCivjgbXjgovjgZXjgo8s44Gb44GE44GNDQor44Gf44GR44GG44GhLOOBl+OCjeOBhg0KK+OBiuOBiuOBrizjgaTjgajjgoANCivjgoLjgo3jgYrjgYss44GR44KT44GYDQor44GX44Gu44GW44GNLOOBteOBv+OBguOBjQ0KK+OBruOBkOOBoSzjgZfjgZLjgYLjgY0NCivjgZfjgb7jgaAs44GT44GG44GYDQor44GL44KP44GV44GNLOOChuOBn+OBiw0KK+OBiuOBiuOBi+OCjyzjgb7jgZPjgagNCivjgZXjgoHjgZfjgb4s44G+44GV44Gy44KNDQor44G744Gd44GY44G+LOOBi+OBmuOBsuOBkw0KK+OCj+OBn+OBquOBuSzjgajjgb/jgYoNCivjgYvjgo/jgarjgb8s44G+44GV44GC44GNDQor44GP44GV44GuLOOBkeOBhOOBleOBjw0KK+OBpOOBoeOBnyzjgajjgoLjgYLjgY0NCivjgYrjgYrjga/jgZcs44GT44GG44GYDQor44Gu44GgLOOBv+OBjeOBig0KK+OCj+OBn+OBquOBuSzjgbLjgZXjgYoNCivjgojjgZfjgZ/jgZEs44KE44GZ44Gy44KNDQor44G144GP44GX44G+LOOBguOBjeOCiQ0KK+OBhOOCj+OChCzjgZ/jgYvjgYoNCivjgZXjgYvjgoLjgags44KC44Go44Gv44KLDQor44GP44G844GfLOOBl+OCh+OBhuOBmA0KK+OBhOOBneOChOOBvizjgZPjgYbjgYTjgaENCivjgYrjgYrjga4s44G/44Gk44GC44GNDQor44GC44G5LOOBn+OBpOOBig0KK+OBiuOBoOOCj+OCiSzjgb/jgaHjgYoNCivjgY3jgYbjgaEs44GR44KT44GYDQor44GE44GX44GL44KPLOOBqOOBl+OBteOBvw0KK+OCiOOBl+OBoCzjgZ/jgaTjgYoNCivjgaHjgoPjgbDjgZ/jgZEs44G+44GV44G144G/DQor44GV44GL44GELOOCiOOBl+OBig0KK+OBiuOBiuOBnyzjgojjgYbjgZgNCivjgarjgYvjga4s44G+44GV44G/DQor44Gv44GgLOOBn+OBi+OBlw0KK+OBquOBi+OChOOBvizjgZjjgoXjgpPjgZgNCivjgZXjgYvjgZDjgaEs44GR44KT44GYDQor44Gq44GM44GX44G+LOOChOOBmeOBig0KK+OBleOBjOOCiSzjgajjgZfjgbLjgo0NCivjgYvjgo/jga4s44Gf44Gg44KI44GXDQor44GL44Gt44GTLOOBhOOBleOBig0KK+OBquOBi+OBoCzjgb/jgaTjgosNCivjgYLjgb7jga4s44Gf44GL44GXDQor44KE44GW44GNLOOBl+OCheOBhuOBmA0KK+OBsuOCieOBjuOBrizjgYvjgZrjgYoNCivjgZ/jgbDjgZ8s44GE44Gh44GKDQor44GP44Gr44KG44GNLOOChOOBmeOBsuOCjQ0KK+OBiuOBj+OBhuOBoSzjgbLjgo3jga7jgooNCivjgZnjgY7jgoLjgags44Gy44Gn44GYDQor44Gq44GL44KA44KJLOOCiuOCh+OBhuOBmA0KK+OBmeOBjuOBleOBjSzjgo/jgZ/jgosNCivjgoTjgb7jgZfjgZ8s44Gf44GL44Gm44KLDQor44Gu44KA44KJLOOBi+OBmuOBvw0KK+OBl+OBvuOBoCzjgb/jgaTjgosNCivjgbXjgY/jgaAs44GL44Ga44Gu44KKDQor44GV44Go44GGLOOBsuOBp+OBig0KK+OBiuOBj+OBvOOCiizjgbLjgo3jgZcNCivjgojjgZPjgYvjgo8s44G+44GV44G/DQor44Gn44KT44GgLOOBjeOCiOOBlw0KK+OBteOBj+OBquOBjCzjgZnjgZnjgoANCivjgZ/jgYvjgZfjgb4s44G/44Gk44GODQor44GL44Go44GGLOOBpuOBpOOBig0KK+OBhOOBl+OBkOOCjSzjgYLjgY3jga7jgooNCivjgYTjgZHjgbks44GP44Gr44KG44GNDQor44GK44GK44Gk44GLLOOBmeOBmeOCgA0KK+OBl+OBv+OBmizjgojjgZfjga7jgooNCivjgZnjgZrjgY0s44Gf44GL44GKDQor44Gk44KELOOBvuOBk+OBqA0KK+OBhuOBoeOBoCzjgb7jgZXjgZ/jgYsNCivjgYrjgaEs44GR44KT44GE44GhDQor44GC44KK44GMLOOBn+OBkeOBlw0KK+OBquOBi+OBl+OBvizjgYvjgaTjgZgNCivjgb7jgZXjgY0s44G+44Gk44G/DQor44Gq44GL44GX44G+LOOBvuOBleOBig0KK+OBguOBleOBr+OCiSzjgb7jgZXjgojjgZcNCivjgZTjgajjgYYs44Gy44GV44GKDQor44GG44GI44G+44GkLOOBsuOCjeOBlw0KK+OBleOBjeOCguOCiizjgojjgZfjgYLjgY0NCivjgojjgZfjgaAs44Gk44Go44KADQor44G144GY44GfLOOChOOBmeOCiOOBlw0KK+OChOOBjuOBl+OBnyzjgajjgZfjgYoNCivjgoDjgo3jgbXjgZcs44G+44GV44Gy44KNDQor44GL44KB44GgLOOBiOOBhOOBhOOBoQ0KK+OBhOOBi+OCjyzjgbLjgo3jgZ/jgaANCivjgoTjgb7jgZbjgY0s44Gy44KN44GXDQor44Gk44KL44Gv44GXLOOBvuOBk+OBqA0KK+OBv+OBruOBl+OBvizjga7jgorjgYoNCivjgY3jgZfjgoLjgags44G+44GT44GoDQor44Gf44GR44GX44GfLOOBvuOBleOBlw0KK+OBquOBi+OBnyzjgZfjgpPjgYTjgaENCivjgYjjgpPjgaks44GN44KI44GXDQor44KC44KK44KELOOBkeOBhOOCgeOBhA0KK+OBj+OBvOOBnyzjgZnjgb/jgYoNCivjgarjgYrjga/jgoks44Gy44KN44GXDQor44GP44GSLOOBkeOCk+OBmA0KK+OBi+OBleOBrizjgb7jgZXjga/jgosNCivjgYTjgYTjgoDjgoks44Gf44GL44GXDQor44GK44GK44GfLOOBvuOBleOChuOBjQ0KK+OBn+OBkeOBkyzjgbLjgo3jgbXjgb8NCivjgoDjgonjgZPjgZcs44Go44GX44GKDQor44KI44GX44GgLOOBkeOCk+OBmA0KK+OBguOBleOBrizjgojjgZfjgYLjgY0NCivjgojjgZfjgaAs44G+44GV44Go44GXDQor44Gv44KE44GXLOOBpuOBpOOCjeOBhg0KK+OBmeOBmuOBjSzjgZ/jgaTjgoQNCivjgYrjgaAs44KK44KH44GG44GE44GhDQor44KE44G+44GG44GhLOOBjeOCiOOBlw0KK+OBi+OCj+OBi+OBvyzjgaTjga3jgYoNCivjgYbjgZnjgaAs44GT44GG44GYDQor44GV44Go44GGLOOBl+OCk+OBhOOBoQ0KK+OBj+OCieOBl+OBvizjgZfjgpPjgZgNCivjgb7jgZss44Gu44G844KLDQor44GT44KT44GuLOOBsuOCjeOBlw0KK+OBvuOBpOOBluOCjyzjgYLjgY3jgokNCivjgZfjgb7jgaAs44GX44KF44GG44GE44GhDQor44KE44G+44KC44GoLOOCiOOBl+OBruOCig0KK+OBiuOBiuOBj+OBvCzjgZHjgpPjgZgNCivjgYrjgZDjgoks44GL44Ga44Gu44KKDQor44GV44GP44G+LOOBiOOBhOOBmA0KK+OBruOBkOOBoSzjgbLjgo3jga7jgooNCivjgbLjgarjgZ8s44GT44GG44GE44GhDQor44G144GY44GELOOBl+OCheOCk+OBhOOBoQ0KK+OBmeOBjuOCguOBqCzjgb7jgZXjgZcNCivjgaTjgYvjga/jgoks44GU44KN44GGDQor44G/44Gk44Gq44GMLOOBvuOBleOBguOBjQ0KK+OBquOBi+OCgOOCiSzjgb7jgZXjgojjgZcNCivjgoTjgZjjgb4s44Gf44GR44GXDQor44GL44G/44GfLOOBmeOBmeOCgA0KK+OBsuOBjCzjgZjjgoXjgpPjgY0NCivjgb/jgarjgYzjgo8s44KI44GX44Gm44KLDQor44Go44G/LOOBn+OBi+OBig0KK+OBleOBi+OBjeOBsOOCiSzjgbLjgo3jgZcNCivjgYvjgY/jgZ8s44GC44GN44Gy44KNDQor44Gk44Gh44KELOOBsuOBp+OChuOBjQ0KK+OCgOOCieOBnyzjgZHjgpMNCivjgZ/jgarjgbks44GC44GN44KJDQor44GX44KC44GgLOOCiOOBl+OBruOCig0KK+OBpOOBi+OCguOBqCzjgY/jgonjgZgNCivjga/jgarjga/jgZ8s44Gy44Gn44GKDQor44GL44KT44GgLOOBl+OCk+OBmA0KK+OBi+OCj+OBoCzjgobjgY3jgYoNCivjgojjgZfjgYQs44Gk44Gt44GKDQor44GP44KJ44KELOOBjeOBuOOBhA0KK+OBpuOCieOBl+OBvizjgbLjgafjgobjgY0NCivjgY3jgZ/jgYzjgo8s44KI44GX44GKDQor44GE44GnLOOBqOOBl+OBsuOCjQ0KK+OBpOOCiyzjgbLjgZXjgYoNCivjgYbjgaTjga7jgb/jgoQs44Go44GX44GL44GaDQor44Gq44GL44GW44KPLOOBvuOBleOBsuOBqA0KK+OBsuOBoCzjgojjgZfjga7jgbYNCivjgbvjgZ3jgYvjgo8s44Gy44Gn44GYDQor44Gh44GQ44GVLOOBm+OBhOOBmA0KK+OBneOBhuOChCzjgbLjgo3jgb8NCivjgoTjgb7jgZDjgaEs44GT44GG44G444GEDQor44GV44GL44GmLOOBteOBv+OBig0KK+OBguOCj+OBnyzjgZfjgZLjgosNCivjgo/jgYvjgbDjgoTjgZcs44GL44Ga44Gy44GTDQor44GI44KT44GY44KF44GG44GYLOOBvuOBk+OBqA0KK+OBruOBkOOBoSzjgZPjgYbjgYTjgaENCivjgYvjgo/jgoDjgoks44G+44GV44GKDQor44KC44KK44KC44GoLOOBv+OBjeOBig0KK+OCiOOBreOBr+OBqizjgZ/jgaDjgbLjgo0NCivjgZjjgaAs44GC44GN44GKDQor44GG44GI44GgLOOBkeOCk+OBmA0KK+OBl+OBruOBr+OCiSzjgYTjgZXjgoANCivjgZ/jgYvjgoTjgb4s44G+44GV44GL44GaDQor44KE44G+44KA44KNLOOBvuOBleOBruOBtg0KK+OCj+OBjSzjgZjjgoXjgpPjgZMNCivjgYLjgb7jga4s44G+44Gk44GKDQor44G744Gd44GL44KPLOOBqOOBl+OBig0KK+OBqOOBhuOBlOOBhizjgbLjgo3jgbLjgZUNCivjgarjgYss44Go44G/44GKDQor44Gu44GgLOOBn+OBi+OBruOCig0KK+OChOOBvuOBl+OBnyzjgaHjgYjjgZMNCivjgarjgYvjgZjjgb4s44Gy44KN44GXDQor44Gq44GM44GK44GLLOOBk+OBhuOBmA0KK+OBl+OBtuOChCzjgojjgZfjgYvjgZoNCivjgZvjgorjgZbjgo8s44GT44GG44Ge44GGDQor44G144GY44KC44KKLOOBm+OBhOOBmA0KK+OBteOBj+OBoCzjgZ/jgaTjgbLjgo0NCivjgbXjgZjjgZ8s44Gf44GL44Gy44GVDQor44KE44G+44GYLOOBsuOBp+OBguOBjQ0KK+OBk+OBsOOChOOBlyzjgYTjgZrjgb8NCivjgZPjgbDjgoTjgZcs44GN44KI44GXDQor44GX44GX44GP44KJLOOCiOOBl+OBguOBjQ0KK+OBk+OBkOOCjCzjgb7jgZXjga/jgosNCivjgoLjgoos44KI44GG44GE44GhDQor44Gq44GL44KA44KJLOOBruOCiuOBn+OBiw0KK+OBhOOBhOOBmOOBvizjga7jgorjgobjgY0NCivjgY3jgZ/jgYzjgo8s44KI44GX44Gm44KLDQor44Gf44KA44KJLOOBn+OBoOOCiOOBlw0KK+OBquOBjOOBl+OBvizjgoTjgZnjgYgNCivjgYjjga7jgY0s44GE44Ga44G/DQor44GV44Go44GGLOOCiOOBl+OBruOBtg0KK+OBvuOBpOOCguOBqCzjgojjgZfjgYoNCivjgYbjgYjjgaAs44Gy44KN44GKDQor44G/44Ga44Gf44GrLOOBguOBjeOCiQ0KK+OBguOBi+OBlyzjgZ/jgaTjgYoNCivjgarjgYvjgoLjgags44GK44GV44KADQor44Gq44GL44KE44G+LOOBsuOCjeOBruOBtg0KK+OBteOBmOOBhCzjgoTjgZnjgbLjgo0NCivjgarjgYvjgoTjgb4s44GX44KH44GG44GE44GhDQor44KI44Gt44G/44GkLOOBpuOBpOOBig0KK+OBn+OBi+OBmyzjgajjgZfjgYoNCivjgo/jgZ/jgarjgbks44Gy44Go44GXDQor44G144GL44GW44KPLOOBqOOBl+OBruOBtg0KK+OBi+OBkuOBhuOCiSzjgb7jgZXjgb8NCivjgZfjgpPjganjgYYs44GL44Gk44GYDQor44GX44G/44GaLOOBn+OBpOOBvw0KK+OBleOBi+OBl+OBnyzjgojjgZfjga4NCivjgb/jgoTjgoDjgoks44Go44GK44KLDQor44Gf44Gq44GLLOOBvuOBleOBqOOBlw0KK+OBn+OBi+OBhOOBlyzjgZnjgZnjgoANCivjgYTjgZfjgYzjgY0s44GR44KT44GYDQor44Gf44GL44GgLOOCiOOBl+OBi+OBmg0KK+OBn+OBpuOBhOOBlyzjgYvjgZrjgarjgYsNCivjgZXjgYvjgZ8s44Gy44Gn44GKDQor44KI44GT44Gv44GfLOOBqOOBl+OBsuOBkw0KK+OBj+OChCzjgZ/jgoLjgaQNCivjgojjgZfjgaAs44G+44GV44Gy44GnDQor44GN44Gf44GgLOOBr+OCi+OBig0KK+OCiOOBl+OBoCzjgZfjgpPjgZjjgo3jgYYNCivjgZPjgbDjgoTjgZcs44GL44Ga44G/DQor44Gq44KK44GfLOOBv+OBpOOCiOOBlw0KK+OBhOOBrOOBhCzjgb7jgZXjgojjgZcNCivjgoTjgZnjgYvjgo8s44G144G/44GKDQor44Gu44GQ44GhLOOBmeOBquOBig0KK+OBl+OCh+OBhuOBoCzjgYTjgaHjgZ7jgYYNCivjgoTjgb7jgaAs44Gm44KL44Gy44GVDQor44KP44GP44GgLOOBpOOBqOOCgA0KK+OBguOBuSzjgZXjgaDjgbLjgo0NCivjgZ/jgZHjgYvjgo8s44Gf44GL44GKDQor44GV44Go44GGLOOBsuOBp+OBjQ0KK+OBr+OBquOBiuOBiyzjgojjgZfjgYoNCivjgYrjgYrjga4s44Gy44Gn44GKDQor44Gf44Gq44GLLOOBkeOCk+OBnuOBhg0KK+OBpOOBruOBoCzjgYLjgY3jgYoNCivjgarjgb7jgYgs44GR44KT44GYDQor44Gf44GL44Gv44GXLOOBn+OBoOOBsuOBlQ0KK+OBquOBi+OBmOOBvizjgZfjgZLjgosNCivjgarjgYvjgoDjgoks44GN44G/44GTDQor44GG44KK44GGLOOBr+OCi+OBn+OBkQ0KK+OBteOBmOOBhOOCjyzjgbXjgb/jgbLjgZMNCivjgZXjgZXjgY0s44Gf44GL44GXDQor44GN44KA44KJLOOChuOBn+OBiw0KK+OBn+OBi+OBjizjgZfjgoXjgYbjgYTjgaENCivjgYvjgZ/jgoTjgb4s44Gy44KN44GoDQor44GE44GQ44GhLOOBiuOBleOCgA0KK+OBguOBuSzjgabjgovjgYoNCivjgZnjgZrjgY0s44Gf44GL44Gy44KNDQor44Gy44KJLOOBi+OBmuOBsuOCjQ0KK+OBquOBlOOBlyzjgbLjgafjgYLjgY0NCivjgYLjgaDjgaEs44GR44KT44GYDQor44KA44KJ44KE44G+LOOBvuOCguOCiw0KK+OBj+OBq+OBi+OBnyzjgZnjgZnjgoANCivjgb7jgaTjgYQs44G+44GT44GoDQor44GT44GE44GnLOOBv+OBpOOBig0KK+OBsuOCjeOBnyzjgbLjgo3jgoTjgZkNCivjgajjgb/jgarjgYss44KI44GX44GKDQor44KP44GN44GfLOOBteOBmOOBig0KK+OBhuOCgeOCgOOCiSzjgZfjgofjgYbjgZgNCivjgbXjgZEs44KI44GG44GE44GhDQor44GG44GI44G+44GkLOOBi+OBpOOBvw0KK+OBvuOBpOOBluOBjSzjgoTjgZnjgbLjgo0NCivjgarjgYvjga4s44Gk44KC44KLDQor44GT44Gg44GLLOOBn+OBkeOBig0KK+OBsuOCjeOBn+OBqyzjgZHjgpPjgZgNCivjgZ/jgYvjga/jgZcs44GT44GG44GE44GhDQor44GV44GuLOOBmOOCheOCk+OBhOOBoeOCjQ0KK+OBl+OBv+OBmizjgojjgZfjgYvjgZoNCivjgYvjgpPjgZbjgY0s44Gm44KL44KI44GXDQor44GK44GK44GV44GPLOOBi+OBmuOBig0KK+OCj+OBl+OBoCzjgb7jgZXjgbLjgacNCivjgY/jgavjgoLjgags44KE44GZ44G+44GVDQor44GX44KN44GL44KPLOOBvuOBk+OBqA0KK+OBi+OCj+OBr+OCiSzjgZHjgpPjgYTjgaENCivjgYrjgYss44Gk44Gt44GL44GaDQor44GT44KC44KKLOOCiOOBl+OBguOBjQ0KK+OBr+OChOOBlyzjgZfjgZLjgYLjgY0NCivjgYvjga3jgZMs44GE44GP44GKDQor44GL44Gp44GE44GRLOOBquOBiuOBv+OBoQ0KK+OBiuOBi+OCgOOCiSzjgZjjgoXjgpPjgYTjgaENCivjgYrjgYvjgoDjgo0s44GY44KF44KT44GE44Gh44KNDQor44Gf44G244GhLOOBquOBiuOBkw0KK+OChOOBvuOCguOBqCzjgYLjgY3jga7jgooNCivjgYrjgYrjgZUs44Gf44GL44GXDQor44GE44KK44GILOOBl+OCk+OBhOOBoeOCjeOBhg0KK+OBn+OBi+OBryzjgYvjgZrjgbLjgZMNCivjgZ/jgYTjgoks44Gv44KL44GKDQor44G/44Gq44G/LOOChOOBmeOBvuOBlQ0KK+OBhOOBkeOBoCzjgZfjgZLjgosNCivjgYLjgYrjgY0s44G144G/44GKDQor44KE44G+44GG44GhLOOBmA0KK+OCiOOBl+OBr+OCiSzjgb7jgZXjgbXjgb8NCivjgZXjgZXjgY0s44GC44GN44Gy44GoDQor44G/44Ga44Gf44GrLOOBqOOBl+OBhOOBoQ0KK+OBsuOCieOBrizjgYvjgaTjgobjgY0NCivjgarjgYzjgZ8s44GC44GN44KJDQor44GL44Gf44KE44G+LOOBkeOBhA0KK+OBiuOBoCzjgorjgofjgYbjgZgNCivjgYjjga7jgoLjgags44KG44GG44GNDQor44Gf44GR44Gq44GLLOOBleOBi+OBiA0KK+OBvuOBpOOBluOBjSzjgbLjgo3jgZcNCivjgb7jgaTjgbDjgoks44GT44GG44GYDQor44KE44G+44GX44GfLOOBm+OBpOOBkw0KK+OCgeOBkOOCjSzjgbLjgo3jgojjgZcNCivjgYrjgZbjgY0s44Gy44Gn44KG44GNDQor44GK44GK44GM44G/LOOBk+OBhuOBhOOBoQ0KK+OBiuOBvuOBiCzjgZfjgpPjgYTjgaENCivjgY3jgaAs44GL44KT44GYDQor44GG44GI44GuLOOBiuOBleOCgA0KK+OBiuOBi+OBoCzjgYvjgaTjgobjgY0NCivjgYvjgarjgZXjgY0s44Go44G/44GKDQor44KE44GL44G5LOOBsuOCjeOChuOBjQ0KK+OBquOCgOOCiSzjgobjgb/jgZMNCivjgYTjgYTjgZjjgb4s44KC44Go44GC44GNDQor44GV44GV44GNLOOBruOBtuOChuOBjQ0KK+OCguOBoeOBmuOBjSzjgojjgZfjga7jgbYNCivjgbbjgpPjgoQs44Go44GX44GKDQor44GK44GL44GuLOOChOOBmeOBig0KK+OBn+OBkeOBhuOBoSzjgZXjgajjgZcNCivjgYbjgYjjga4s44Go44GK44KLDQor44G144GY44KC44GoLOOBsuOBp+OBqA0KK+OBi+OCj+OBkOOBoSzjgb/jgaTjga/jgosNCivjgZ/jgY3jgoLjgags44G+44GV44Gu44KKDQor44GL44Gf44GK44GLLOOBl+OBkuOCiw0KK+OBj+OBleOBi+OCjyzjgarjgYrjgY0NCivjgYLjgZXjgYQs44Gy44Go44GXDQor44KC44KKLOOBiOOBhOOBhOOBoQ0KK+OBj+OBvCzjgojjgZfjgY/jgasNCivjgYLjgpPjganjgYYs44GE44Gh44KN44GGDQor44GG44KJ44KE44G+LOOBiuOBleOCgA0KK+OBj+OCiuOBnyzjgojjgZfjgYoNCivjgYTjga7jgYbjgYgs44Gf44GR44GXDQor44GL44Gt44GL44KPLOOBsuOBp+OBig0KK+OBhuOBiOOCguOBqCzjgorjgofjgYbjgZ7jgYYNCivjgarjgYvjgYos44GR44KT44GE44GhDQor44GK44GL44KC44GoLOOBr+OCi+OBig0KK+OBq+OBl+OCgOOCiSzjgY3jgojjgZcNCivjgoTjgaAs44GL44Ga44GK44G/DQor44GN44GpLOOBiuOBleOCgA0KK+OBiuOBi+OBsOOChOOBlyzjgb/jgaTjgbLjgo0NCivjgYvjgo/jgZfjgb4s44GY44KF44KT44Ge44GGDQor44Gv44GX44GNLOOBn+OBi+OBv+OBoQ0KK+OBv+OChOOCguOBqCzjgYTjgaHjgo3jgYYNCivjgarjgYvjgYos44Gf44GL44Gy44GTDQor44G+44Gk44GK44GLLOOChuOBjeOBig0KK+OBsuOBs+OBrizjgbLjgo3jgb8NCivjgavjgZfjgYvjgo8s44GL44GK44KLDQor44GL44G244GfLOOBkeOCk+OBmA0KK+OCj+OBn+OBquOBuSzjgY3jgojjgZcNCivjgoTjgb7jga4s44GT44GG44GE44GhDQor44GV44GE44Go44GGLOOBl+OBkuOBv+OBpA0KK+OBmeOBmuOBjSzjgobjgYbjgZgNCivjgY/jgo/jga/jgoks44GV44Go44GXDQor44KC44KK44GfLOOBqOOBl+OBsuOCjQ0KK+OBteOBmOOBhCzjgZnjgb/jgojjgZcNCivjgarjgYzjgZfjgb4s44Gk44Gt44KG44GNDQor44GE44Gq44KA44KJLOOBvuOBleOBsuOCjQ0KK+OBiuOBluOCjyzjgbLjgajjgZcNCivjgZ/jgY3jgoLjgags44GP44Gr44GKDQor44G/44KE44GX44GfLOOBsuOBleOBlw0KK+OCguOBhuOCiizjgb7jgZXjgobjgY0NCivjgYTjga7jgYbjgYgs44G/44Gk44GKDQor44Gq44GM44GuLOOCguOBqOOBguOBjQ0KK+OBr+OCieOBqCzjgojjgZfjgYoNCivjgb7jgb/jgoQs44Go44GX44GL44GaDQor44Gy44GM44GX44Gw44GfLOOBsuOBp+OBig0KK+OBq+OBl+OBn+OBqyzjgZXjgajjgZcNCivjgZ/jgYvjgY8s44Gu44G244KG44GNDQor44Gv44Gq44GgLOOBv+OBruOCiw0KK+OBguOBleOBrizjgb/jgaHjgYoNCivjgbDjgbAs44Gy44KN44GXDQor44GE44Go44GGLOOBl+OCk+OBjeOBoQ0KK+OBhOOBhOOBoCzjgZHjgpPjgZcNCivjgZPjga/jgoTjgYvjgo8s44Gf44GR44Gy44GTDQor44G144GY44KP44KJLOOBi+OBpOOBvw0KK+OBl+OCheOBj+OCiizjgoTjgZnjgbLjgZMNCivjgobjgZ/jgass44GR44KTDQor44KA44Gt44GL44KPLOOBhOOBj+OBkw0KK+OBi+OCk+OBrizjgb7jgZXjgbLjgo0NCivjgavjgags44GL44Gk44G/DQor44Gf44KA44KJLOOCiOOBl+OBguOBjQ0KK+OBquOBi+OBl+OBvizjgZXjgajjgZcNCivjgYrjgYrjgZ8s44Gh44GL44GTDQor44GE44Gu44GG44GILOOCiOOBl+OBkw0KK+OBj+OBvuOBvuOCiyzjgZHjgpPjgZgNCivjgZ/jgarjgYss44GX44GS44KLDQor44G+44GI44GgLOOBvuOBleOBguOBjQ0KK+OBguOBvyzjga7jgbbjgYoNCivjgb/jgarjgags44GC44GN44KJDQor44Gr44GX44GgLOOBi+OBmuOBig0KK+OBhOOBl+OBr+OCiSzjgZXjgbbjgo3jgYYNCivjgarjgYvjgZfjgb4s44Go44GX44GKDQor44GE44GP44GfLOOChOOBmeOBsuOBlQ0KK+OBiuOBjSzjgZ/jgaDjgYoNCivjgYvjgYzjgo8s44GX44KF44GG44GE44Gh44KN44GGDQor44Gy44KJ44GL44KPLOOBqOOBl+OBig0KK+OChOOBvuOBluOBjSzjgajjgZfjga7jgooNCivjgY/jgb7jgYzjgYQs44GT44GG44GY44KN44GGDQor44Gf44GX44KNLOOBv+OBpOOBl+OBkg0KK+OBleOBrizjgbLjgafjgb7jgZUNCivjgb/jganjgorjgYvjgo8s44G144G/44Gy44GTDQor44Gq44GL44KA44KJLOOBvuOBleOBruOCig0KK+OCiOOBl+OBvyzjgbLjgo3jgZMNCivjgYTjgarjgb8s44Gy44Gn44GoDQor44KP44Gf44Gq44G5LOOBjeOCiOOBlw0KK+OBk+OBjCzjgajjgoLjgbLjgacNCivjgZnjgYzjgo/jgoks44KE44GZ44Gy44KNDQor44Gf44GR44GG44GhLOOCiOOBhuOBhOOBoQ0KK+OBiOOBoCzjgojjgZfjgo3jgYYNCivjgYLjgpPjganjgYYs44Gy44KN44GKDQor44Gf44KL44GELOOChuOBn+OBiw0KK+OBlOOBqOOBhizjgbLjgo3jgZcNCivjgZfjgoLjgYzjgY0s44GX44GS44KLDQor44Gq44GM44GfLOOChuOBjeOBig0KK+OBu+OBl+OBi+OCjyzjgZjjgoXjgpPjgYTjgaENCivjgZPjgb/jgarjgb8s44G+44GV44GKDQor44GL44GMLOOCiOOBhg0KK+OBr+OBnOOBi+OCjyzjga7jgbbjgYoNCivjgaHjgbAs44GX44Ga44GLDQor44GG44KJ44GuLOOBleOBqOOBlw0KK+OBk+OCk+OBrizjgajjgZfjgY0NCivjgZPjgbDjgoTjgZcs44GL44Ga44KI44GXDQor44KC44KC44GbLOOChuOBhuOBkw0KK+OBpOOBkizjgZjjgoXjgpPjgZgNCivjgoTjgZnjgZPjgaEs44KE44GZ44Gf44GLDQor44G744Gd44GW44KPLOOBl+OCh+OBhuOBhOOBoQ0KK+OBmeOBjuOChOOBvizjgYvjgaTjgobjgY0NCivjgYLjgbks44Gf44GR44KG44GNDQor44Gf44Gq44GLLOOBruOBtuOChuOBjQ0KK+OBm+OBhOOBkSzjgoTjgZnjgbLjgo0NCivjgaTjgZIs44G+44GV44Gu44G2DQor44KP44GL44Gw44KE44GXLOOBguOBjeOBig0KK+OBiuOBiuOBj+OBvCzjgZ/jgYvjgYoNCivjgYrjgYvjgbks44G144G/44GKDQor44GE44KP44GELOOBsuOBleOBig0KK+OBn+OBquOBiyzjgabjgovjgobjgY0NCivjgoTjgb7jgoLjgags44G/44Gk44GKDQor44Gf44GL44KE44G+LOOBquOBiuOBjQ0KK+OBn+OBmOOBvizjgbLjgafjga7jgooNCivjgYvjgZrjgZfjgo0s44G+44GV44Gv44KLDQor44GT44GE44GnLOOBn+OBi+OBlw0KK+OBi+OCgizjgZ/jgaTjga7jgooNCivjgY3jgZ/jgZjjgb4s44KI44GX44KG44GNDQor44Gv44G+44GuLOOBl+OBkuOCiw0KK+OBhOOBhOOChOOBvizjgajjgZfjgobjgY0NCivjgoTjgb7jgZfjgZ8s44GX44KH44GG44GE44GhDQor44GN44GfLOOBl+OBkuOChuOBjQ0KK+OBhOOBl+OBn+OBqyzjgZXjgajjgZcNCivjgY/jgZjjgoEs44GV44Gg44GKDQor44GN44GX44GL44KPLOOBi+OBmuOBig0KK+OBquOBjOOBrizjgb7jgZXjgbLjgo0NCivjgojjgoDjgoks44Gf44Gg44Gu44KKDQor44Gq44GL44GX44G+LOOBqOOBl+OChuOBjQ0KK+OCguOCiizjgYjjgYTjgZgNCivjgoTjgb7jgZgs44KI44GX44GL44GaDQor44GK44Gc44GNLOOBvuOBleOBn+OBiw0KK+OBhOOBquOBoCzjgoTjgZnjgZcNCivjga/jgoTjgZss44Gf44GL44GXDQor44G744KT44G9LOOBmeOBmeOCgA0KK+OBiuOBiuOChCzjgYvjgpPjgZgNCivjgY3jgZ/jgoDjgoks44Gf44GL44GXDQor44Go44GX44KTLOOBleOBqOOCiw0KK+OBn+OBkeOBhCzjgoTjgZnjgbXjgb8NCivjgYrjgYvjgoTjgb4s44Gu44G244GKDQor44GE44GX44Ga44GLLOOBk+OBhuOBn+OCjeOBhg0KK+OBr+OBnyzjgajjgZfjgYLjgY0NCivjgZnjgYzjga/jgoks44KG44GG44GYDQor44GE44KP44G/LOOChOOBmeOBig0KK+OChuOCguOBqCzjgbLjgafjgYoNCivjgY3jgZ/jgYzjgo8s44KG44Gf44GLDQor44GE44Gv44KJLOOChuOBhuOBnuOBhg0KK+OBruOCgOOCiSzjgYTjgaHjgo3jgYYNCivjgb/jgoTjgZXjgYss44GR44KT44GYDQor44KI44GX44GgLOOBqOOCguOCiOOBlw0KK+OBteOBi+OBoCzjgZ/jgYvjgZcNCivjgbXjgZjjgo/jgoks44GL44Ga44G/44GkDQor44GN44GoLOOBqOOBl+OBguOBjQ0KK+OBhuOBiOOCguOCiizjgYTjgZXjgYoNCivjgoTjgb7jgYvjgo8s44G+44GV44G/DQor44GP44KN44GgLOOBv+OBoeOCjQ0KK+OBiuOBiuOBpOOBiyzjgbLjgo3jgZcNCivjgYbjgYjjgaAs44KG44GG44GYDQor44Gd44GuLOOBv+OBjeOBig0KK+OBoOOBhCzjgajjgoLjgb/jgaENCivjgZfjgpPjgZ7jgYYs44Gy44KN44GL44GaDQor44GG44GI44GgLOOChuOBn+OBiw0KK+OCj+OBi+OBv+OChCzjgYvjgZrjgb8NCivjgYvjgoDjgoks44G144G/44Gk44GQDQor44G144KL44Gf44GrLOOBn+OBi+OBvuOBlQ0KK+OBi+OBpOOBhuOCiSzjgYvjgaTjgb8NCivjgY/jgb7jgYQs44Gb44GE44GYDQor44Gw44GwLOOBr+OCi+OBpOOBkA0KK+OBi+OBreOBqOOCgizjgZ/jgaTjgb8NCivjgoDjgonjga/jgZcs44Go44GK44KLDQor44Gp44GELOOBn+OBi+OBlw0KK+OBquOBv+OBi+OCjyzjgZfjgZLjga/jgosNCivjgZ/jgYvjgYrjgYss44GR44KT44GYDQor44G+44Gk44KC44GoLOOCiuOCheOBhuOBhOOBoeOCjeOBhg0KK+OCj+OBn+OBquOBuSzjgojjgZ4NCivjgZ/jgaAs44G+44GV44Gy44KNDQor44GC44KK44G+LOOCiOOBl+OBpuOCiw0KK+OBquOBjOOBrizjgajjgZfjga7jgooNCivjgoTjga4s44Gm44KL44KG44GNDQor44GE44GV44GLLOOChuOBjeOBsuOCjQ0KK+OBhOOBqOOBhizjgajjgY/jgYTjgaENCivjgoTjgb7jgZbjgY0s44GZ44G/44GKDQor44GP44GuLOOBi+OBmuOBig0KK+OBl+OBsCzjgZHjgpPjgZgNCivjgY3jgoDjgoks44GC44GN44KJDQor44GZ44G/44GgLOOBi+OBmuOBig0KK+OCguOBqOOBjOOBhOOBqCzjgbLjgo3jgYvjgZoNCivjgavjgo8s44GX44GS44GTDQor44Gf44GR44GG44GhLOOChuOBhuOBmA0KK+OBn+OCgOOCiSzjgYvjgZrjgojjgZcNCivjgbzjgYbjgZ8s44GR44GE44GZ44GRDQor44GL44Gp44KELOOChuOBhuOBlA0KK+OBr+OCieOBoCzjgojjgZfjga7jgbYNCivjgb/jgaTjgYTjgZcs44Gy44KN44GXDQor44GE44Gu44GG44GILOOBkeOBhOOBmeOBkQ0KK+OCgOOCieOBr+OBlyzjgb7jgZPjgagNCivjgavjgZfjgYvjgo8s44GX44KT44GE44GhDQor44G+44GZ44GgLOOBk+OBhuOBmA0KK+OBiuOBiuOBnyzjgY/jgavjgYoNCivjgbXjgY/jgYQs44G+44GV44GKDQor44GL44GS44KE44G+LOOBkeOCk+OBmA0KK+OBquOBjOOBpOOBiyzjgZ/jgaDjgobjgY0NCivjgY/jgZXjga4s44GX44GS44GKDQor44GT44GY44G+LOOBsuOCjeOChuOBjQ0KK+OBj+OCieOBnyzjgZ/jgaDjgZcNCivjgZ/jgZHjgYbjgaEs44GR44KT44GE44Gh44KNDQor44GE44GR44GgLOOBguOBpOOBig0KK+OBn+OBi+OBrizjgobjgZ/jgYsNCivjgY/jgonjgoQs44GX44KT44GE44GhDQor44GK44GuLOOBpOOBqOOCgA0KK+OBquOBi+OBoCzjgZjjgoXjgpPjgZ7jgYYNCivjgajjgY/jgoLjgags44Gf44GL44GC44GNDQor44GK44GK44Gv44GXLOOBqOOBl+OBteOBvw0KK+OChOOBvuOBoCzjgYLjgY3jgokNCivjga/jgpPjgaAs44Gm44Gk44GKDQor44GE44GX44Gv44KJLOOBm+OBhOOBmA0KK+OCiOOBl+OBr+OCiSzjgZXjgajjgZcNCivjgZ/jgabjgYTjgZcs44Go44GX44Gy44GTDQor44GE44Go44GGLOOBl+OBteOBvw0KK+OBleOBqOOBhizjgZ/jgYvjgYoNCivjgYrjgYrjgY/jgoks44GX44KH44GG44GY44KN44GGDQor44Gq44GL44GZ44GYLOOCiOOBhuOBhOOBoQ0KK+OBn+OBhOOCiSzjgbLjgo3jgZcNCivjgY3jgbLjgoks44Gv44KL44Gy44GTDQor44Gq44GL44GY44G+LOOBsuOBp+OBpOOBrQ0KK+OChOOBvuOBluOBjSzjgajjgY3jgYoNCivjgajjgbPjgZ8s44GC44GN44KJDQor44Gq44GL44GW44KPLOOBr+OCi+OBig0KK+OBq+OBl+OBr+OCiSzjgYvjgZrjgYoNCivjgoHjgZDjgo0s44GY44KF44KT44GYDQor44G+44KL44KE44G+LOOBk+OBhuOBnuOBhg0KK+OBjeOBj+OBoSzjgbLjgZXjga7jgooNCivjgYLjgYrjgY0s44KI44GX44G/DQor44GN44Gj44Gf44GLLOOBn+OBv+OBig0KK+OChOOBmeOBhCzjgobjgY3jgZMNCivjgYTjgaHjgb7jgoss44KI44GX44GC44GNDQor44KE44G+44GW44GNLOOBqOOBl+OChuOBjQ0KK+OBmeOBjOOBr+OCiSzjgZjjgoXjgpPjgYTjgaENCivjgajjgb/jgarjgYws44KI44GX44Gy44GTDQor44Gh44GO44KKLOOBiOOBhOOBmOOCjeOBhg0KK+OBiuOBiuOBsCzjgobjgorjgZMNCivjgb7jgaTjgYQs44G144GP44G/DQor44Gy44KJ44KE44G+LOOBvuOBleOBsuOCjQ0KK+OChOOBvuOCgOOCiSzjgb/jgaTjga7jgbYNCivjgYrjgYrjgacs44G+44GV44G/DQor44KI44GX44Gq44GMLOOBoeOBi+OBiA0KK+OBk+OBmOOBvizjgZ/jgZHjga7jgooNCivjgajjgb/jgarjgYws44Gh44GI44GTDQor44GV44GMLOOBpuOBpOOChA0KK+OBr+OCiSzjgobjgYbjgZjjgo3jgYYNCivjgajjgb/jgojjgZcs44Gf44GL44GXDQor44KI44GX44GgLOOBneOBruOBiA0KK+OBsuOCieOBsOOChOOBlyzjgbLjgo3jgYvjgZoNCivjgb7jgaTjgaks44Gy44Gn44GKDQor44GE44G+44G144GPLOOChuOBhuOBlw0KK+OBjeOCiOOBmyzjgZfjgpPjgoQNCivjga/jgarjgbbjgZUs44GZ44GZ44KADQor44Gh44GwLOOBqOOBl+OBruOCig0KK+OChOOBvuOBluOBjSzjgorjgoXjgYbjgZgNCivjgarjgYvjga/jgoks44GR44KT44GYDQor44GK44GuLOOBk+OBhuOBuOOBhA0KK+OBhuOBiOOBvuOBpCzjgYvjgojjgZMNCivjgYLjgY3jgoTjgb4s44G+44GV44GC44GNDQor44Go44Gf44GrLOOCiOOBhuOBhOOBoQ0KK+OCiOOBreOBoCzjgb7jgZXjgbLjgo0NCivjgbXjgovjgY/jgZUs44GV44GL44GIDQor44Gy44KN44KELOOBruOCiuOBsuOCjQ0KK+OCiOOBl+OBoCzjgZfjgpPjgZXjgY8NCivjgYvjga3jgZMs44GX44GS44KLDQor44Gq44GM44GfLOOBvuOBleOBr+OCiw0KK+OBhOOBuSzjgZfjgpPjgZgNCivjgZvjgY3jga0s44G+44GV44KG44GNDQor44GK44GL44GgLOOBvuOBleOBr+OCiw0KK+OBi+OBquOBhCzjgYvjgpPjgZvjgYQNCivjgZXjgajjgYYs44Gy44Go44GXDQor44GV44GL44GN44Gw44KJLOOCiOOBl+OBig0KK+OBhOOBvuOBhCzjgb/jga/jgosNCivjgbLjgoHjgZgs44GX44KT44Ge44GGDQor44GK44GO44Gv44KJLOOBvuOBleOCiOOBlw0KK+OBn+OBkeOCgOOCiSzjgZ/jgYvjga7jgooNCivjgajjgYrjgoTjgb4s44Gf44GL44GXDQor44GN44Gf44Gv44KJLOOBn+OBi+OBsuOBlQ0KK+OBiuOBiuOBleOBiyzjgYvjgaTjgbLjgZMNCivjgYrjgYrjgZPjgYbjgaEs44GL44Ga44G+44GVDQor44Gf44GL44GKLOOBruOCiuOBkw0KK+OBhuOBqSzjgajjgZfjgo3jgYYNCivjgYbjga4s44GN44KT44GUDQor44G144GY44GNLOOBsuOCjeOBvw0KK+OBleOBqOOBhizjgajjgZfjgYoNCivjgYTjgZ3jgYzjgYQs44G+44GV44G/DQor44GL44KJ44GV44GNLOOCiOOBl+OBig0KK+OChOOBvuOBoCzjgZ/jgoLjgaQNCivjgo/jgaAs44GI44Gk44GKDQor44GX44Gw44GfLOOBqOOBl+OBig0KK+OBl+OBiuOBluOBjSzjgZ/jgaTjgYoNCivjgZfjgYws44G/44Gk44Gu44G2DQor44GP44KK44GfLOOBv+OBoeOBig0KK+OBr+OBl+OCguOBqCzjgojjgZfjgo3jgYYNCivjgojjgZfjgoDjgoks44Gf44GL44GXDQor44G/44KE44GW44GNLOOBsuOCjeOBruOCig0KK+OBjeOBn+OBjOOCjyzjgY3jga/jgaHjgo3jgYYNCivjgYrjgaDjgZEs44Gh44GL44KJDQor44GZ44Ga44GNLOOBguOBjeOCiQ0KK+OChOOBvuOBhOOBlyzjgY3jgojjgYLjgY0NCivjgYrjgZzjgY0s44Gy44KN44GXDQor44Gf44GL44GELOOBleOBqOOBvw0KK+OBi+OBreOBkyzjgZHjgpPjgZgNCivjga/jgonjgaAs44Gy44Gn44KG44GNDQor44GX44G+44GgLOOBkeOCk+OBleOBjw0KK+OChOOBquOBjizjgZ/jgZHjgYoNCivjgZnjgZrjgY0s44Gf44GL44Gy44GoDQor44Gf44GL44Gv44GXLOOChOOBmeOBig0KK+OBiuOBkOOCiuOChOOBvizjgajjgYrjgosNCivjgo/jgZ/jgarjgbks44Gu44G244KG44GNDQor44KE44G+44KA44KJLOOBkeOCk+OBmA0KK+OBn+OBi+OBr+OBlyzjgZ/jgaDjgbLjgacNCivjgZfjgYrjgZjjgb4s44GL44GK44KLDQor44Gk44KL44GK44GLLOOBqOOBiuOCiw0KK+OBhOOBqOOBhizjgajjgZfjgb/jgaENCivjgb7jgaTjgYbjgoks44Gb44GE44GNDQor44KE44G+44KC44GoLOOBn+OBi+OBig0KK+OBj+OBvuOBvyzjgobjgYbjgZ7jgYYNCivjgZHjgpPjgojjgZcs44Gf44GL44GXDQor44KE44G+44GL44GSLOOCiOOBl+OBguOBjQ0KK+OBlOOBqOOBhizjgbLjgo3jgYoNCivjgZ/jgZHjgYbjgaEs44G+44GV44Go44GXDQor44Gv44KE44GXLOOBi+OBmuOChuOBjQ0KK+OBhOOBl+OBsOOBlyzjgajjgZfjgobjgY0NCivjgYTjgaos44KK44KH44GGDQor44GE44Gu44GG44GILOOBn+OBi+OChuOBjQ0KK+OBq+OBl+OBi+OCjyzjgbLjgafjgYoNCivjga/jgpPjgaAs44GN44KI44GYDQor44Gf44Gm44Gw44KE44GXLOOBi+OBmuOCiOOBlw0KK+OBiuOBl+OBvizjgY/jgavjgbLjgZMNCivjgZfjgbDjgZ8s44Gv44KL44GNDQor44G/44GG44KJLOOBguOBpOOBlw0KK+OBk+OBi+OBlCzjgYvjgZrjga7jgooNCivjgYTjgYTjgaAs44KG44Gf44GLDQor44Gf44GR44GZ44GILOOBi+OBmuOBvw0KK+OBhOOBjOOCieOBlyzjgabjgaTjgoQNCivjgb7jgZnjgoTjgb4s44KI44GX44GKDQor44GV44GP44KE44G+LOOBi+OBmuOBig0KK+OBleOBj+OCieOBhCzjgZHjgpMNCivjgZ/jgb7jgoos44G+44GV44GKDQor44GE44G+44Gr44GXLOOBv+OBruOCiw0KK+OBiuOBjOOCjyzjgb7jgZXjgbLjgagNCivjga/jgY7jgo/jgoks44GN44KI44GXDQor44GK44GK44GP44GrLOOBsuOBp+OBsuOBkw0KK+OBhOOBkeOBoCzjgZvjgYTjgYTjgaENCivjgb7jgYjjgZjjgb4s44GC44GN44KJDQor44GE44KP44GELOOBi+OBpOOBvw0KK+OChOOBvuOBoCzjgb7jgZXjgY0NCivjgZnjgaAs44G+44GV44GoDQor44Go44GN44KPLOOBiuOBleOCgA0KK+OBr+OChOOBlyzjgobjgYbjgYTjgaENCivjgZ/jgZHjgoLjgags44GL44Ga44GKDQor44GL44KT44Gw44KE44GXLOOBvuOBleOBig0KK+OBqOOBluOCjyzjgaTjgajjgoANCivjgZ/jgabjga4s44GX44KT44GUDQor44GL44KT44G5LOOBkeOBhOOBkw0KK+OBiuOBj+OBoCzjgojjgZfjgagNCivjgZ/jgoLjgags44Go44G/44GKDQor44Gq44GM44GELOOBruOBtuOBn+OBiw0KK+OBiuOBluOCjyzjgZfjgpPjgYTjgaENCivjgZXjgajjgYYs44KE44GZ44Gq44KKDQor44GT44KT44GpLOOBguOBjeOBig0KK+OBreOBjuOBlyzjgZ/jgaDjgZcNCivjgZ/jgarjgYss44Gm44Gk44GKDQor44GT44KA44KNLOOCiuOCh+OBhuOBhOOBoQ0KK+OCiOOBl+OBoCzjgajjgojjgbXjgb8NCivjgYTjgYTjgZjjgb4s44Gy44KN44G/DQor44Gr44GE44G744KKLOOBi+OBmuOBig0KK+OBk+OCguOCiuOChCzjgojjgZfjgZ/jgYsNCivjgZfjgpPjganjgYYs44Gy44Gn44Ga44G/DQor44KE44GuLOOCiOOBhuOBhOOBoQ0KK+OBn+OBquOBiyzjgb7jgZXjgajjgZcNCivjga/jgY7jgZ/jgass44KN44GP44KN44GGDQor44GT44GZ44GOLOOBoOOBhOOBjeOBoQ0KK+OBhOOBuSzjga7jgorjgYoNCivjgYvjgarjgZbjgo8s44Gy44KN44GXDQor44Gf44GgLOOBn+OBoOOBsuOBlQ0KK+OBquOBjOOBnyzjgorjgoXjgYbjgZnjgZENCivjgYvjgb7jgaAs44Gy44KN44GXDQor44Gf44GL44Gv44GXLOOCiOOBl+OBig0KK+OBiuOBhOOBpyzjgb7jgZPjgagNCivjgZ/jgYvjgY/jgoks44Gy44KN44GXDQor44KE44GZ44G+44GkLOOBmeOBmeOCgA0KK+OBvuOCiyzjgojjgZfjgbLjgZUNCivjgY/jgbzjgZ8s44Gu44G844KLDQor44Gf44Gw44GfLOOBkeOBhOOBhOOBoQ0KK+OCguOCiuOBnyzjga7jgorjgYoNCivjgY/jgavjgajjgoIs44Gk44Gt44GYDQor44GC44GV44Gs44G+LOOBsuOCjeOBi+OBmg0KK+OBu+OBl+OBqizjgoTjgZnjgYoNCivjga7jgZbjgo8s44Gv44KL44Gy44GVDQor44G+44Gk44KA44KJLOOBl+OCk+OBhOOBoQ0KK+OBsuOCieOBi+OBnyzjgYvjgZrjgYoNCivjgbLjgonjgb4s44Gv44KL44GKDQor44GX44G/44GaLOOBn+OBi+OBlw0KK+OCiOOBk+OBi+OCjyzjgo/jgZ/jgosNCivjgY3jgY/jgaEs44GC44Gk44GXDQor44GP44KN44GV44KPLOOBhOOBleOCgA0KK+OBn+OBkeOBhuOBoSzjgabjgaTjgYoNCivjgbLjgonjgYws44KI44GG44GYDQor44GV44GE44Go44GGLOOBruOCiuOBig0KK+OBhuOBoeOBvOOCiizjgZPjgYbjgYTjgaENCivjgYTjgarjgoDjgoks44KI44GX44Gv44KLDQor44GK44GV44GgLOOBn+OBi+OBlw0KK+OBmeOBjuOChOOBvizjgZ/jgYvjgajjgZcNCivjgYTjgb7jgZos44KE44GZ44Gf44GgDQor44GG44KJ44GuLOOBvuOBleOCiOOBlw0KK+OCguOBoeOBmuOBjSzjgYvjgZrjgYoNCivjgZnjgYzjgo8s44GX44GS44KLDQor44GE44GR44GgLOOBqOOBl+OBig0KK+OBn+OBquOBiyzjga/jgovjgYoNCivjgZXjgYTjgajjgYYs44Gf44Gk44GYDQor44G144GY44GfLOOBqOOBl+OBv+OBoQ0KK+OBv+OChOOBrSzjgaTjgajjgoANCivjgYvjgb7jgaAs44G/44Gu44KLDQor44Gt44GO44GXLOOCiOOBl+OBruOCig0KK+OBiuOBj+OBjOOCjyzjgobjgY3jgYoNCivjga/jgoTjgZcs44Gy44GV44GXDQor44Gw44GwLOOBruOBtuOBsuOBkw0KK+OChOOBvuOCguOBqCzjgaTjgajjgoANCivjgYjjgpPjgaks44Gu44G844KLDQor44Gd44KB44KELOOBiuOBleOCgA0KK+OBguOCieOBhCzjgojjgZfjgobjgY0NCivjgYLjgbks44GC44GN44KJDQor44Gh44GwLOOBn+OBpOOBig0KK+OBn+OBi+OChOOBvizjgb/jga7jgosNCivjgoTjgb7jgY0s44KG44GG44GYDQor44Gf44GR44GG44GhLOOBl+OBkuOBteOBlQ0KK+OBn+OBkeOBuSzjgZ/jgYvjgYoNCivjgYLjgaDjgaEs44KI44GX44GC44GNDQor44Gf44GL44GX44G+LOOBguOBjeOCiQ0KK+OCiOOBk+OChOOBvizjga7jgorjgarjgYoNCivjgZfjgonjgYTjgaEs44G+44GV44KLDQor44GP44Gp44GGLOOBl+OBkuOBig0KK+OBmeOBmuOBjSzjgY3jgojjgZcNCivjgZ/jgYvjgZfjgb4s44Gf44GL44GXDQor44KE44G+44GM44GfLOOBv+OBruOCiw0KK+OCiOOBl+OBoCzjgZ/jgY/jgYoNCivjgb/jgoTjgYvjgo8s44GR44KT44GYDQor44GV44GV44GNLOOCgOOBpOOBvw0KK+OBhOOBp+OBhuOCiSzjgYvjgZrjgZMNCivjgZ/jgarjgYss44Gy44KN44GXDQor44GE44Go44GGLOOBguOBpOOBsuOBkw0KK+OBiuOBiuOBpCzjgZ/jgZHjgZcNCivjgbXjgYjjgY0s44Go44GX44GL44GaDQor44GX44KC44G144GVLOOBguOBpOOBlw0KK+OBv+OChOOBi+OCjyzjgb7jgZXjgZ/jgYsNCivjga/jgZfjgoLjgags44Gf44GL44GXDQor44KE44G+44Ge44GILOOBk+OBhuOBmA0KK+OBq+OBhOOBj+OCiSzjga7jgbbjgYoNCivjgo/jgZ/jgarjgbks44Go44GX44Gu44KKDQor44KA44KN44G144GXLOOBi+OBqg0KK+OBi+OCk+OBoCzjgYvjgaTjgb7jgZUNCivjgY/jganjgYYs44GR44GE44GTDQor44Gf44GL44Gv44KJLOOCj+OBn+OCiw0KK+OBiuOBi+OBoCzjgZHjgYTjgZgNCivjganjgYQs44GV44Go44KLDQor44Gf44Gq44G5LOOBvuOCguOCiw0KK+OBk+OCgOOCjSzjgZHjgpPjgYTjgaENCivjgoLjgorjgoTjgb4s44G144G/44GTDQor44GC44KJ44G+44GNLOOBruOBtuOBig0KK+OBk+OBl+OBuSzjgYvjgZrjgo0NCivjgZXjga4s44Gu44G244Gy44KNDQor44GK44GL44GgLOOCiOOBl+OBvuOBlQ0KK+OBteOBmOOCj+OCiSzjgY3jgofjgYbjgZMNCivjgb7jgaTjgYos44GL44Ga44G/DQor44Gf44Gq44GLLOOBv+OBreOBig0KK+OBjeOBr+OCiSzjgarjgYrjgY0NCivjgavjgZfjga/jgZ8s44KG44GGDQor44Gr44GX44KP44GNLOOCiOOBl+OBn+OBiw0KK+OBiuOBi+OBluOBjSzjgbLjgo3jgYvjgZoNCivjgbXjgZjjgo/jgoks44GK44GV44KADQor44KE44GZ44GgLOOChuOBi+OBkw0KK+OBiuOBiyzjgY3jgofjgYYNCivjgbvjgZ3jga4s44GX44GS44GKDQor44GC44GL44GXLOOBn+OBj+OBvg0KK+OBquOBi+OBhCzjgZPjgYbjgYTjgaENCivjgoTjgZnjgaAs44GN44GP44GYDQor44Gm44KJ44KA44KJLOOBteOBv+OBn+OBiw0KK+OBj+OBvOOBnyzjgojjgZfjgobjgY0NCivjgZPjgavjgZcs44GX44GS44G/DQor44Gu44KA44KJLOOBguOBjeOCiQ0KK+OBhOOBruOBmyzjgY/jgavjgZMNCivjgo/jgZ/jgarjgbks44KE44GZ44Gy44GTDQor44Gr44GX44GKLOOBi+OBmuOBsuOBlQ0KK+OCguOBv+OBjSzjgZPjgZnjgZENCivjgZnjgarjgaAs44Gy44KN44Gf44GLDQor44Gf44GR44GG44GhLOOBleOBoeOBkw0KK+OBguOBjeOBmyzjgbLjgo3jgZcNCivjgZfjgYrjgZ8s44KI44GX44Gy44GTDQor44GN44GpLOOCiOOBl+OBguOBjQ0KK+OBhOOBl+OCj+OBn+OCiizjgajjgZfjgYoNCivjgZfjgonjgYzjgb8s44Gf44GL44Gy44KNDQor44GG44Gh44Gq44GMLOOBsuOBp+OChA0KK+OBn+OBquOBiyzjgZfjgpPjgYTjgaHjgo3jgYYNCivjgY/jgo3jgZXjgY0s44Gm44Gk44GKDQor44GK44Go44GXLOOChuOBhuOBhOOBoQ0KK+OBleOBqOOBhizjgb7jgZXjgYoNCivjgZnjgZrjgY0s44G+44GV44KG44GNDQor44Gy44KN44GfLOOBleOBhOOBmA0KK+OChOOBruOBi+OCjyzjgZjjgoXjgpPjgYTjgaENCivjgZXjgYvjgoLjgags44G+44KC44KLDQor44GT44KA44KNLOOBvuOBleOBqA0KK+OBhOOBvuOBnyzjgojjgYbjgYTjgaENCivjgbvjgZ3jgoQs44GL44Ga44Gf44GLDQor44Gm44KJ44GV44GLLOOBvuOBleOChuOBjQ0KK+OBu+OCk+OBvizjgYvjgZrjgYgNCivjgYvjgZnjgYws44Gy44KN44GX44GSDQor44G+44Gk44Gg44GE44KJLOOBiOOBhOOBmA0KK+OBi+OCj+OBi+OBvyzjgZfjgoXjgYbjgZgNCivjga3jgZTjgo0s44GX44KT44GYDQor44G144GP44GgLOOBiOOBhOOBnuOBhg0KK+OBmeOBmuOBjSzjgbLjgo3jgZcNCivjgajjgb7jgaQs44KI44GX44GYDQor44GE44GuLOOBn+OBpOOCjeOBhg0KK+OBmeOBmuOBjSzjgZjjgoXjgpPjgZgNCivjgYLjgZXjgYQs44GL44Ga44GKDQor44Gv44KJLOOBn+OBi+OBruOCig0KK+OBu+OBlyzjgY/jgavjgYvjgaQNCivjgarjgovjgYvjgo8s44GL44Ga44Gu44KKDQor44GK44GgLOOBn+OBi+OBguOBjQ0KK+OBiuOBsOOBqizjgZfjgZLjgoTjgZkNCivjgZ/jgavjgZbjgo8s44G+44GV44Gy44KNDQor44G144GY44GK44GLLOOBn+OBi+OBlw0KK+OBlOOBqOOBhizjgZ/jgYvjgZgNCivjgZPjgozjgarjgYws44Go44GX44GC44GNDQor44Gf44GL44Gv44GXLOOBoOOBhOOBmeOBkQ0KK+OBn+OBi+OCiSzjgb/jgaTjga/jgosNCivjgYrjgYrjgY/jgo8s44GN44KI44GXDQor44Gf44Gq44GLLOOBsuOBp+OBi+OBmg0KK+OBleOBqOOBhizjga7jgorjgYoNCivjgZfjgb7jgazjgY0s44GR44KTDQor44Gd44GtLOOBsuOCjeOBlw0KK+OBn+OBquOBiyzjgYvjgZrjgYoNCivjgbXjgZjjgoDjgoks44GT44GG44GYDQor44GU44Go44GGLOOBl+OCk+OBmA0KK+OBr+OBl+OCguOBqCzjgoTjgZnjgZ/jgYsNCivjgbLjgovjgb4s44GC44GN44KJDQor44G744GX44GwLOOBsuOBp+OCiA0KK+OBi+OCgeOCj+OCiizjgbLjgo3jgb8NCivjgYrjgY/jgYQs44Gy44KN44GXDQor44Gy44GV44KC44GoLOOBiuOBleOCgA0KK+OBmeOBmuOBjSzjgY3jgojjgZcNCivjgbLjgonjgZXjgo8s44KI44GX44Gf44GLDQor44GN44Gf44GnLOOBruOCiuOBguOBjQ0KK+OBteOBj+OBoCzjgYvjgZrjgbLjgZUNCivjgZfjgYrjgZbjgY0s44GR44GE44GYDQor44KA44Go44GGLOOChuOBn+OBiw0KK+OBq+OBl+OBiuOBiyzjgZXjgbbjgo3jgYYNCivjgaTjgbzjga4s44Gy44KN44Gy44GVDQor44Gq44Gk44GG44KBLOOBqOOBl+OBvuOBlQ0KK+OBn+OBq+OBjOOBjSzjgbLjgo3jgYLjgY0NCivjgYrjgYrjgZnjgYws44GL44Ga44GKDQor44GG44Gh44GgLOOBsuOBp+OBig0KK+OBi+OBqOOBhizjgYjjgYTjgZgNCivjgZXjgZXjgY0s44Gy44Gn44GKDQor44GL44GX44G+LOOBruOCiuOBig0KK+OBguOBi+OBleOBiyzjgYvjgZrjgYoNCivjgYvjgo/jgYvjgb8s44KI44GG44GE44GhDQor44GX44GpLOOBn+OBpOOChA0KK+OChOOBvuOBhuOBoSzjgojjgZfjgbLjgacNCivjgYvjga4s44KG44Gf44GLDQor44Gv44KJLOOBhOOBj+OBig0KK+OBvuOBpOOBsOOCiSzjgZHjgpPjgZgNCivjgabjgonjgYvjgaks44GL44Ga44Gy44KNDQor44GX44GK44GfLOOCiOOBl+OBruOCig0KK+OBiuOBi+OBoCzjgbLjgajjgZcNCivjgY/jgo3jgaAs44KK44KH44GGDQor44KC44KK44KC44GoLOOBteOBmOOBig0KK+OBm+OBjSzjgbLjgo3jgZcNCivjgZnjgZrjgY0s44GC44GN44KJDQor44Gf44GR44GP44GVLOOBsuOCjeOBlw0KK+OBn+OBjOOBl+OCiSzjga7jgbbjgYoNCivjgZPjgbDjgoTjgZcs44GK44GV44KADQor44GV44GI44GNLOOBkeOBhOOBmA0KK+OBn+OBpOOBluOCjyzjgY3jgb/jgYLjgY0NCivjgZXjgYTjgajjgYYs44Gy44Go44GXDQor44G144KL44GL44KPLOOBjeOCiOOBlw0KK+OBn+OCgOOCiSzjgbXjgb/jgagNCivjgaTjgorjgoQs44G+44Gh44GKDQor44GV44GL44GQ44GhLOOBteOBv+OBqOOBlw0KK+OBteOBj+OBl+OBvizjgojjgYbjgYTjgaENCivjgYrjgYrjgYvjgo8s44Gy44KN44GXDQor44G144GY44GfLOOBl+OCheOCk+OBmeOBkQ0KK+OBi+OCj+OBkOOBoSzjgYvjgaTjga7jgooNCivjgajjgY3jgYrjgYss44Gm44KL44GKDQor44Gq44GL44GuLOOBqOOBv+OBig0KK+OBhOOBruOBhuOBiCzjgb7jgZXjgobjgY0NCivjgY/jgavjgajjgZcs44Gf44GP44KN44GGDQor44GV44GL44GfLOOBk+OBhuOBhOOBoQ0KK+OCguOCiuOBi+OCjyzjgaTjga3jgYoNCivjga7jgZDjgaEs44Gy44KN44GXDQor44GP44G844GfLOOCgOOBpOOBvw0KK+OBquOBi+OBiuOBiyzjgZ/jgaTjgYoNCivjga7jgbXjgZgs44GR44GE44GYDQor44KC44GM44KKLOOBiOOBhOOBmA0KK+OBvuOBiOOBluOBjSzjgYTjgZXjgYoNCivjgYrjgYrjgaTjgYss44GX44GS44KI44GXDQor44G/44Ga44GfLOOBkeOCk+OBruOBmeOBkQ0KK+OBmeOBjuOChOOBvizjgojjgZfjgbLjgZUNCivjgYvjgYzjgo8s44KI44GX44Gf44GLDQor44Gr44GX44Gv44KJLOOCiOOBl+OBteOBvw0KK+OBpuOBmuOBiyzjgZfjgpPjgYTjgaENCivjgZfjgYrjgb8s44G/44Gk44GKDQor44GK44GK44Gv44KJLOOBn+OBoOOBguOBjQ0KK+OBguOBleOBj+OCiSzjgYLjgY3jgbLjgo0NCivjgZfjgb7jgaAs44Gm44Gk44KEDQor44GX44G+44GL44KPLOOBmeOBmeOCgA0KK+OBr+OBl+OCguOBqCzjgbLjgajjgZcNCivjgYbjgZos44GX44Ga44GKDQor44Gf44GL44GP44KPLOOBvuOBleOBruOBtg0KK+OBv+OBoeOBnyzjgZfjgoXjgpPjgYTjgaENCivjgYbjgYjjgaAs44GG44GE44KKDQor44GX44GMLOOBn+OBi+OBpOOBkA0KK+OBhOOBkeOBvyzjgb/jgaTjgZANCivjgoLjgoos44G+44GV44GC44GNDQor44GL44GX44KC44GoLOOBvuOBmeOBvw0KK+OBhOOBl+OBr+OCiSzjgaHjgYjjgZMNCivjgYvjga3jgZMs44Gh44GI44GTDQor44Gf44GL44Gv44GXLOOBqOOBl+OBig0KK+OCguOBqOOBhCzjgb7jgZXjgYoNCivjgZPjgZ/jgZEs44G/44Gh44GKDQor44GL44GV44GELOOBmeOBiOOBkw0KK+OBi+OBqOOBhizjga7jgorjgZMNCivjgZPjgY/jgbws44GR44GE44GTDQor44KP44GL44KE44G+LOOBl+OBkuOChA0KK+OBleOBquOBoCzjgb7jgZXjgbLjgZMNCivjgZXjgYvjgZ8s44Go44G/44KI44GXDQor44Gu44KA44KJLOOBv+OBpOOBig0KK+OBr+OChOOBi+OCjyzjgYvjgZrjgb8NCivjgb/jgoTjgZbjgY0s44GX44GS44GKDQor44GK44Gr44Gk44GLLOOBkeOCk+OBmA0KK+OBhOOBpyzjgYrjgZXjgoANCivjgarjgYzjgZXjgZMs44Gf44GL44Gu44KKDQor44GE44Go44GGLOOBv+OBoeOBn+OBiw0KK+OBi+OBreOBn+OBkSzjgabjgovjgYLjgY0NCivjgY/jgbzjgZ8s44GN44KI44KG44GNDQor44GC44KK44G+LOOBkeOBhOOBkw0KK+OCj+OBi+OBiizjgbLjgo3jgZcNCivjgYTjgZfjgZbjgYss44Gf44GL44KG44GNDQor44GK44GfLOOBnOOCk+OBr+OBoeOCjeOBhg0KK+OBleOBi+OCguOBqCzjgZHjgYTjgZQNCivjgYrjgYrjgbvjgoos44KG44GN44GKDQor44GX44KT44Gf44GrLOOBqOOBl+OBguOBjQ0KK+OBhuOBoeOChOOBvizjgZ/jgYvjgZcNCivjgbLjgonjgZ8s44G/44Gq44GTDQor44GC44KK44Ge44GuLOOBleOBqOOBkw0KK+OBhOOBqOOBhizjgZ/jgYvjgZcNCivjgYLjgYrjgoTjgY4s44G+44GV44GC44GNDQor44Gq44GL44KA44KJLOOBleOBoOOBig0KK+OBhOOBhOOBoCzjgb/jgaHjgYoNCivjgarjgZfjgY0s44GL44GK44KLDQor44KA44KJ44GbLOOBi+OBmuOBig0KK+OBvuOBpOOBiizjgZHjgYTjgZQNCivjgZXjgajjgYYs44GX44KN44GGDQor44GC44GV44Gs44G+LOOBl+OCk+OBhOOBoeOCjeOBhg0KK+OBteOBn+OBvyzjgoTjgZnjgb7jgZUNCivjgbXjgarjgags44GP44Gr44G/DQor44G144GY44GfLOOChuOBv+OBkw0KK+OBteOCi+OBi+OCjyzjgZ/jgZHjgYoNCivjgbXjgarjga/jgZcs44Gy44GV44KEDQor44G244Go44GGLOOBsuOCjeOChuOBjQ0KK+OBi+OBruOBhizjgYvjgaTjgbLjgo0NCivjgYrjgY3jgaQs44Gy44KN44Gf44GLDQor44Gf44GL44GO44KPLOOBhOOBleOCgA0KK+OBu+OBl+OBrizjgaHjgYjjgZMNCivjgavjgZfjgZjjgb4s44GP44Gr44Gy44KNDQor44GL44G+44GfLOOBoeOBguOBjQ0KK+OBpOOBmOOCguOBqCzjgajjgZfjgYTjgaENCivjga/jgarjgaAs44GX44KT44GYDQor44Gy44KN44GbLOOBvuOBleOBig0KK+OBq+OBl+OBoCzjgbLjgajjgZcNCivjgYbjgYjjgY0s44Go44GX44GL44GaDQor44KI44GX44GuLOOBjeOCiOOBig0KK+OBjeOBn+OCgOOCiSzjgZvjgYTjgYTjgaENCivjgZfjgb/jgZos44G/44Gh44GTDQor44GE44GX44GW44GNLOOBsuOBleOBlw0KK+OBr+OChOOBlyzjgb/jgaTjga7jgbYNCivjgY3jgY/jgaEs44Gy44Gn44G144G/DQor44GK44GL44GpLOOBpOOBkOOBig0KK+OBk+OCgOOCiSzjgZfjgZLjgosNCivjga/jgZfjgoLjgags44Gk44Go44KADQor44Gq44GL44Gk44GLLOOBn+OBkeOBlw0KK+OBiuOBiuOBhOOBlyzjgb7jgZnjgojjgZcNCivjgY/jgo3jgaAs44G+44GV44KI44GXDQor44Gq44GL44GELOOBvuOBleOBvw0KK+OBjeOBn+OBluOCjyzjga7jgorjgYLjgY0NCivjgY3jgZfjgaAs44GX44GS44KLDQor44GL44Gq44G+44KLLOOBvuOBk+OBqA0KK+OBguOCieOBhCzjgZfjgZrjgYoNCivjgbXjgZ/jgaTjgY4s44Gv44KL44GKDQor44GN44GP44GhLOOBqOOBl+OBig0KK+OBhOOBhOOBoCzjgoTjgZnjgZcNCivjgarjgYvjgYgs44GC44GN44GKDQor44Gy44KJ44G+44GkLOOBv+OBruOCiw0KK+OBq+OBl+OBiuOBiyzjgZjjgoXjgpPjgZ7jgYYNCivjgZXjgajjgYYs44GR44GE44GNDQor44KC44KKLOOBr+OCi+OBig0KK+OBu+OBl+OBrizjgYTjgZXjgYoNCivjgoTjgb7jgZDjgaEs44Gu44G244Gy44KNDQor44GG44GZ44GELOOCiOOBhuOBhOOBoQ0KK+OBvuOBpOOBsOOCiSzjgYjjgYTjgYTjgaENCivjgYLjgorjgZXjgYss44G+44GV44GNDQor44Gr44GX44GKLOOBiOOBhOOBmA0KK+OBjeOBoCzjgabjgaTjgYoNCivjgoTjga4s44KG44GG44GE44GhDQor44GL44Go44GGLOOBkeOCk+OBnw0KK+OCj+OBn+OBquOBuSzjgaHjgbLjgo0NCivjga/jgoTjgZcs44KE44GZ44GKDQor44KP44Gf44G5LOOCiOOBhuOBhOOBoQ0KK+OCj+OBn+OBquOBuSzjgb7jgZXjgYoNCivjgobjgZDjgaEs44Gy44KN44GTDQor44KE44G+44KC44GoLOOBsuOBleOBlw0KK+OBleOBhOOBqOOBhizjgbXjgb/jgYoNCivjgYvjgYTjgZos44GR44KT44GE44GhDQor44G744GX44GuLOOBsuOBp+OBig0KK+OBl+OBruOBr+OCiSzjga7jgbbjgbLjgo0NCivjgYrjgYrjgazjgb4s44G+44KC44KLDQor44G/44KPLOOBn+OBkeOBlw0KK+OBu+OCiuOCgOOBjSzjgojjgZfjgb4NCivjgYTjgZfjgZ/jgaYs44GX44KT44GE44Gh44KN44GGDQor44G/44G144GtLOOBjeOCiOOBlw0KK+OCguOBv+OBjSzjgb7jgZPjgagNCivjga/jgZvjgYzjgo8s44Gm44KL44GKDQor44GZ44GO44KE44G+LOOBl+OCheOCk+OBmA0KK+OBpOOBj+OBoCzjgZ/jgaDjgZcNCivjgYLjgaDjgaEs44G144G/44Gu44KKDQor44Gn44GW44KPLOOBn+OBoOOCiOOBlw0KK+OBiuOBnyzjgY3jgojjgZcNCivjgZXjgajjgYYs44GC44GN44KJDQor44Gb44GN44GQ44GhLOOBv+OBpOOBruOCig0KK+OBk+OBj+OBtuOCkyzjgojjgZfjgY0NCivjgbvjgZfjgaos44KG44GN44G144G/DQor44GG44KJ44GuLOOBk+OBhuOBhOOBoQ0KK+OBn+OBkeOCgOOCiSzjgoTjgZnjgbLjgo0NCivjgajjgY/jgarjgYws44Gy44Go44GXDQor44GP44KK44Gv44KJLOOBsuOBp+OBqA0KK+OBiuOBj+OCgOOCiSzjgZjjgoXjgpPjgYTjgaENCivjgZXjgYTjgajjgYYs44GX44KT44GE44Gh44KN44GGDQor44G+44Gk44GX44GfLOOBkeOBhOOBnuOBhg0KK+OBn+OBkeOBoCzjgb/jgaHjgZMNCivjgavjgZfjgY0s44KC44Go44KI44GXDQor44GG44KB44GgLOOBleOBi+OBiA0KK+OBu+OCk+OBoCzjgYTjgY/jgYoNCivjgYvjgoIs44GL44Ga44GG44G/DQor44GG44GX44GgLOOBpOOCiOOBlw0KK+OBleOBhOOBqOOBhizjgbLjgo3jgaTjgZANCivjga/jgZnjgaAs44G+44GZ44GKDQor44G/44GL44KPLOOCiOOBhuOBkw0KK+OBhuOBoeOBoCzjgY/jgavjgbLjgZMNCivjgavjgZfjgZbjgY0s44GX44KH44GG44GE44GhDQor44GE44GM44KJ44GXLOOBl+OCh+OBhuOBmA0KK+OCj+OBn+OBquOBuSzjgYLjgZXjgZMNCivjgZfjgb7jgoDjgoks44GT44GG44GYDQor44GL44Go44GGLOOBruOCiuOBkw0KK+OBi+OCj+OBuSzjgZfjgofjgYbjgZMNCivjgZXjgYvjgoLjgags44KI44GG44GYDQor44KC44KK44GX44GfLOOCguOBqOOCiOOBlw0KK+OBmeOBjOOBr+OCiSzjgorjgofjgYYNCivjgajjgb/jgoTjgb4s44GL44Gk44Gy44GTDQor44G144GP44GgLOOBpOOCiOOBlw0KK+OBiuOBqOOBluOBjSzjgYLjgaTjgbLjgZMNCivjgbXjgZjjgoLjgoos44Gf44GL44GKDQor44GT44KC44KKLOOBjeOCiOOChuOBjQ0KK+OBteOBj+OBquOBjCzjgb7jgZXjgYLjgY0NCivjgb/jgoTjga/jgoks44GL44Gk44Gu44KKDQor44GY44KT44GuLOOBv+OBpOOBig0KK+OBjeOCgOOCiSzjgYjjgYTjgZMNCivjgYTjgarjgYzjgY0s44KG44GN44GTDQor44KC44KKLOOBruOCiuOBig0KK+OCj+OBn+OBquOBuSzjgYvjgaTjga7jgooNCivjgaTjgZjjgoLjgags44GC44GN44GKDQor44KC44KT44Gc44KTLOOBsuOCjeOChuOBjQ0KK+OBquOCgOOCiSwNCivjgoTjgb7jgoLjgags44GI44KK44GTDQor44Gv44GX44KC44GoLOOBsuOCjeOBjQ0KK+OBguOCieOBhCzjgoTjgZnjga7jgooNCivjgbXjgZjjgYQs44Gy44KN44GXDQor44KP44Gf44Gq44G5LOOBpuOBpA0KK+OBr+OBm+OBjOOCjyzjgajjgojjgYvjgZoNCivjgZfjgZLjgoTjgZks44GI44GE44GE44GhDQor44KE44G+44Gu44GELOOBn+OBj+OBvg0KK+OBk+OBsOOChOOBlyzjgb7jgZXjgosNCivjgarjgYzjgYQs44KI44GX44GC44GNDQor44GV44KPLOOBruOBtuOBig0KK+OBvuOBpOOCiOOBlyzjgb/jgaHjgYoNCivjgZXjgYTjgajjgYYs44GL44GK44KLDQor44GL44Gu44GGLOOBsuOCjeOBguOBjQ0KK+OBhuOBl+OBlOOCgSzjgoTjgZnjgYoNCivjgYTjgZfjgYQs44GT44GG44GYDQor44GG44GZ44GNLOOBhOOBmuOCiw0KK+OBmeOBqeOBhizjgojjgZfjgYoNCivjgYvjgZjjgoTjgb4s44Gf44GL44GN44G/DQor44GK44GK44GwLOOBsuOBp+OBjQ0KK+OBmeOCjyzjgbXjgb/jgYoNCivjgYTjgo/jgZ8s44KE44GZ44GoDQor44Go44GGLOOBr+OBmOOCgQ0KK+OBiuOBhOOBi+OCjyzjgbLjgajjgZcNCivjgbLjgonjgYQs44GI44GE44GTDQor44Gf44GL44GX44G+LOOBqOOBl+OBig0KK+OBteOBv+OBrizjgbLjgo3jgZcNCivjgYrjgYvjgZbjgY0s44Gu44KK44GKDQor44GX44KJ44GNLOOBvuOBleOBpOOBrQ0KK+OBn+OBkeOCguOBqCzjgobjgYbjgZgNCivjgb7jgaTjgoLjgags44Gu44KK44Gy44GTDQor44G+44Gk44Gw44KJLOOBsuOCjeOBlw0KK+OBiOOBs+OBr+OCiSzjgZPjgYbjgZgNCivjgbXjgZjjga4s44KE44GZ44GKDQor44G144GL44KELOOBvuOBleOBsuOCjQ0KK+OBu+OBl+OBrizjgZ/jgYvjgZcNCivjgYvjgZ/jgoTjgb4s44GV44Gh44GTDQor44GC44KJ44GL44KPLOOBvuOBleOChuOBjQ0KK+OBn+OBi+OBrizjgYvjgZrjgYoNCivjgY/jgo3jgaAs44KE44GZ44Gy44KNDQor44GE44Go44GGLOOBmOOCheOCk+OBkw0KK+OBk+OBluOBhCzjgb/jgaTjgosNCivjgYbjgYjjgoTjgb4s44GN44KI44GXDQor44Gv44Gj44Go44KKLOOBqOOBl+OBjQ0KK+OBq+OBl+OCgOOCiSzjgajjgZfjgZ/jgYsNCivjgbXjgovjgYvjgo8s44Gf44GL44GKDQor44KE44GX44GNLOOBl+OBkuOBjQ0KK+OBu+OBqeOChOOBvizjgbLjgafjgYoNCivjgYjjgajjgYYs44Go44KC44Gy44GTDQor44KE44G+44KC44GoLOOBvuOBleOBqOOBlw0KK+OBm+OBjeOBkOOBoSzjgYTjgZXjgoANCivjgZ/jgarjgbks44Gy44Gn44Go44GXDQor44Gf44GR44GgLOOBqOOBl+OChuOBjQ0KK+OBl+OCk+OBn+OBqyzjgYvjgZ/jgZcNCivjgY/jgbzjgZ8s44GN44KI44GXDQor44GZ44GO44GK44GLLOOBleOBqOOBvw0KK+OChOOBvuOBluOBjSzjgZXjgaDjga7jgooNCivjgZXjgYTjgajjgYYs44Gy44Gn44GNDQor44GG44GI44GuLOOBqOOBl+OBn+OBkQ0KK+OBl+OBvuOCguOBqCzjgZPjgZnjgZENCivjgY3jgZ/jga4s44G+44GV44G/DQor44GE44GE44Ga44GLLOOCiuOCh+OBhuOBkw0KK+OBhOOBmuOBvyzjgY3jgofjgYbjgZgNCivjga/jgonjgaAs44Gf44GL44KG44GNDQor44GK44Gh44GC44GELOOBleOBqOOBlw0KK+OChOOBvuOBhuOBoSzjgYLjgY3jgbLjgo0NCivjgYjjgZDjgaEs44Gy44Gn44Gk44GtDQor44Gv44GO44KP44KJLOOBn+OBkeOBlw0KK+OBn+OBi+OBjizjgZ/jgZHjga7jgooNCivjgYrjgY/jgoLjgags44G+44Gq44G2DQor44G+44Gk44GW44GNLOOCiuOCh+OBhuOBhOOBoQ0KK+OBhOOBoeOCgOOCiSzjgobjgorjgZMNCivjgb/jgoTjgZXjgYss44Go44KC44GTDQor44G/44KE44GfLOOBm+OBhOOBhOOBoQ0KK+OBquOBjOOBiizjgZfjgofjgYbjgY3jgaENCivjgYTjgo/jgYos44G+44GV44GXDQor44G144GL44GW44KPLOOBl+OBkuOCiw0KK+OBn+OCgOOCiSzjgb7jgZXjgYoNCivjgY3jgorjgoXjgYYs44Gf44Gg44GKDQor44G+44Gk44GW44GNLOOCiOOBl+OBig0KK+OBi+OBqOOBhizjgabjgovjgb/jgaQNCivjgb/jgZ8s44Gq44GK44GoDQor44GE44GX44GELOOBhOOBleOCgA0KK+OBiuOBi+OCguOBqCzjgabjgaTjgYoNCivjgYbjgYjjgYrjgYss44Gu44G244GKDQor44GN44KH44GG44GuLOOBvuOBleOBqA0KK+OBi+OBreOBkyzjgobjgYbjgZ7jgYYNCivjgZXjgY/jgonjgYQs44GN44KH44GG44GTDQor44KP44GL44Gw44KE44GXLOOBqOOBl+OBsuOBpw0KK+OCj+OBn+OBquOBuSzjgojjgZfjgbLjgo0NCivjgYLjgZXjgYQs44Gr44GZ44GRDQor44GL44Gp44GuLOOChuOBhuOBmA0KK+OChOOBvuOBluOBjSzjgajjgojjgbLjgo0NCivjgYLjgo/jga4s44Go44GX44KG44GNDQor44GK44GM44KPLOOBn+OBi+OBruOCig0KK+OBnOOCk+OBkSzjgajjgZfjgYoNCivjgbXjgY/jgoLjgags44Go44KC44Gy44GTDQor44GK44GpLOOBi+OBmuOBruOCig0KK+OCguOCiuOCguOBqCzjgZ/jgYvjgYoNCivjgajjgYbjgbzjgYYs44GL44Ga44G/DQor44GL44Gf44KE44G+LOOBvuOBleOBlw0KK+OBquOBjOOBvuOBpCzjgZ/jgYvjgYLjgY0NCivjgo/jgZ/jgbks44KI44GX44G/DQor44GE44GX44GNLOOChuOBhg0KK+OBhOOBquOBjOOCjyzjgobjgYbjgZMNCivjgarjgYvjga4s44Gf44GL44Gv44KLDQor44Gr44GX44KE44G+LOOChOOBmeOCiOOBlw0KK+OBl+OCguOBoCzjgb/jgojjgZMNCivjgZfjgZLjgZ8s44Gf44GL44GKDQor44G+44Gk44KC44GoLOOBsuOCjeOBl+OBkg0KK+OBi+OBn+OChOOBvizjgobjgYYNCivjgZ3jga4s44GL44Gk44G/DQor44GE44Gb44GNLOOChuOBjeOBig0KK+OBhOOBqOOBhizjgojjgZfjgYvjgZoNCivjgZvjgY3jga0s44G+44GV44GKDQor44KA44KJ44KE44G+LOOBteOBmOOBig0KK+OBvuOCi+OChOOBvizjgZHjgYTjgZgNCivjgY/jgo3jgZXjgo8s44KI44GX44G144G/DQor44GZ44G/LOOBqOOBiuOCiw0KK+OBruOBkOOBoSzjgobjgYbjgZgNCivjgZXjgajjgYbjgb8s44Gy44Gn44GNDQor44GK44GK44GL44KPLOOBpOOBkOOBsuOBqA0KK+OBquOBi+OBrizjgbLjgafjga7jgooNCivjgYrjgYrjgYTjgZcs44GYDQor44Gv44G2LOOBguOBjeOCiQ0KK+OBhuOBoeOBoCzjga7jgorjgb7jgZUNCivjgb/jgY0s44G144G/44Gu44G2DQor44GZ44Ga44GNLOOBpOOBreOChuOBjQ0KK+OBi+OBleOBr+OCiSzjgYTjgZrjgb8NCivjgYrjgYrjgY/jgbws44GL44Ga44Gv44KLDQor44GL44Gf44GL44G/LOOBruOCiuOBi+OBmg0KK+OBn+OBi+OBr+OBlyzjgajjgZfjgbLjgZMNCivjgYTjgZfjgYvjgo8s44GL44Ga44KEDQor44Gf44GL44Go44KKLOOBn+OBi+OBig0KK+OBn+OBq+OBkOOBoSzjgZfjgpPjgZgNCivjgZvjgY0s44KG44GN44G+44GVDQor44GP44G844GfLOOBvuOBleOBqA0KK+OBguOBueOBi+OCjyzjgoDjgaTjgYoNCivjgbXjgZjjgb7jgY0s44Gf44GR44GXDQor44GL44Gf44KE44G+LOOBvuOBleOChuOBjQ0KK+OBk+OChOOBvizjgZHjgpPjgZgNCivjga/jgZfjgoLjgags44GC44GR44G/DQor44GZ44G/LOOBv+OBoeOBig0KK+OBq+OBl+OBi+OCjyzjgbLjgo3jgZcNCivjgZXjgo/jgb4s44GC44KE44GTDQor44Gv44GX44KC44GoLOOChuOBhuOBkw0KK+OBquOBi+OBnyzjgoTjgZnjgb7jgZUNCivjgYbjgaHjgoTjgb4s44Gy44KN44GXDQor44GV44GV44GNLOOBvuOCig0KK+OBguOBleOBr+OCiSzjgb/jgaTjgbLjgo0NCivjgavjgaPjgZ8s44G144G/44GTDQor44Gg44KTLOOCi+OCiuOBkw0KK+OBmeOBjuOBnyzjgabjgaTjgZcNCivjgoTjgb7jgoLjgags44GX44KT44GE44GhDQor44GK44G144GhLOOBv+OBjQ0KK+OBk+OBsOOChOOBlyzjgb/jgo/jgZMNCivjgb/jgojjgZcs44GT44GG44GN44GhDQor44GE44GX44GgLOOBsuOBp+OBsuOBkw0KK+OBiuOBq+OBjSzjga7jgbzjgosNCivjgY/jgorjga/jgoks44Gf44G/44GKDQor44GX44KJ44GELOOBpOOBi+OBlQ0KK+OBleOBi+OBq+OBlyzjgZHjgpPjgYTjgaENCivjgYrjgaAs44Gy44GV44GXDQor44GL44G+44GZLOOBkeOCk+OBnuOBhg0KK+OBquOBi+OBjOOCjyzjgb7jgZXjgojjgZcNCivjgYvjgZfjgoLjgags44GN44KH44GG44GE44GhDQor44Gw44KT44Gp44GGLOOChuOBmuOCiw0KK+OBteOBn+OBvyzjgb7jgZXjgZcNCivjgoTjgb7jgZfjgZ8s44Gf44GL44GXDQor44Gv44KE44GXLOOChuOBhuOBmA0KK+OBi+OBkuOChOOBvizjgb/jga7jgosNCivjgYLjgZnjgb4s44Gu44G244GKDQor44GX44KC44KA44KJLOOChuOBhuOBhOOBoQ0KK+OChOOBvuOBkOOBoSzjgZ/jgaDjgZcNCivjgoTjgb7jgags44Gy44KN44GXDQor44GV44Go44GGLOOBl+OBkuOCiw0KK+OBvuOBpOOBoOOBhOOCiSzjgYvjgZrjgoQNCivjgb7jgaTjgoDjgoks44Go44GX44G/44GhDQor44GT44KT44GuLOOCiOOBl+OChA0KK+OBiuOBiuOBr+OBlyzjgoTjgZXjgbbjgo3jgYYNCivjgY3jgY/jgZ8s44GX44GS44GNDQor44KI44GX44GK44GLLOOBsuOCjeOBlw0KK+OBleOBrizjgojjgZfjgYoNCivjgZ/jgarjgYss44KG44GN44Gu44KKDQor44GV44GV44GNLOOBmeOBmeOCgA0KK+OBi+OCj+OBkOOBoSzjgYLjgaTjgZcNCivjgoTjgb7jgZfjgZ8s44Gf44Gk44GKDQor44Gf44GR44KA44KJLOOBteOBv+OBig0KK+OBteOBj+OBoSzjgYvjgZrjgYgNCivjgb7jgarjgYss44Go44G/44GIDQor44GC44KJ44GNLOOBn+OBi+OBruOBtg0KK+OBsuOCieOBrizjgojjgZfjgYvjgZoNCivjgarjgYvjgoDjgoks44Gk44Go44KADQor44Gv44GX44KC44GoLOOBqOOBl+OBi+OBpA0KK+OBi+OBqOOBhizjgYTjgY/jgZMNCivjga/jgb7jgYvjgo8s44GP44Gr44GKDQor44Gv44KE44GXLOOBkeOBhOOBkw0KK+OBhOOBqOOBhizjgZHjgpPjgYTjgaENCivjgZnjgZrjgY0s44GE44Gh44KN44GGDQor44Gf44GR44GG44GhLOOBi+OBmuOBsuOBkw0KK+OBq+OBlyzjgZPjgYbjgYTjgaENCivjgYTjgo/jgbvjgoos44Go44GX44G+44GVDQor44GE44G+44GELOOBj+OBv+OBkw0KK+OCguOCiuOBrizjgZ/jgYvjgZcNCivjgavjgZfjga/jgoks44GR44GEDQor44GN44KK44KELOOBsuOBleOBqA0KK+OBleOBqOOBhizjgajjgojjgZMNCivjgbvjgZ3jgaAs44Gy44GV44GTDQor44Gf44GL44Gv44GXLOOBn+OBoOOBlw0KK+OBquOBi+OBmOOBvizjgZfjgZLjgosNCivjgoTjgZnjga/jgoks44Gq44KL44KG44GNDQor44GP44KN44GE44KPLOOBn+OBi+OBlw0KK+OBi+OCgizjgbLjgo3jgZcNCivjgYLjgYvjgb7jgaQs44GP44Gr44GC44GNDQor44GN44Gf44KA44KJLOOBvuOChuOBvw0KK+OBq+OBl+OBoCzjgobjgY3jgZMNCivjgYrjgYvjgaAs44GX44KT44GE44GhDQor44GV44GV44GNLOOBqOOBl+OChuOBjQ0KK+OBn+OBi+OBr+OBlyzjgbLjgo3jgZcNCivjgZfjgb/jgZos44GE44GV44KADQor44GI44KT44GpLOOBl+OCk+OBmeOBkQ0KK+OBhuOBoOOBjOOCjyzjgabjgovjgYoNCivjgZfjgb/jgZos44Gu44KK44G144G/DQor44GC44GK44KE44GOLOOBm+OBhOOBnuOBhg0KK+OBr+OBl+OCguOBqCzjgYvjgZrjgYoNCivjgZ/jgZHjgYbjgaEs44Gy44Gn44GC44GkDQor44GC44KJ44GELOOChOOBmeOBlw0KK+OBhOOBl+OBmOOBvizjgYTjgZXjgYoNCivjgZPjgYzjga0s44Gy44Gn44GKDQor44GV44KP44GX44G+LOOBl+OCk+OBhOOBoQ0KK+OBn+OBi+OChOOBquOBjizjgb/jga7jgosNCivjgb7jgZXjgaAs44Gy44KN44G/44GhDQor44GX44G/44GaLOOBguOBjeOBsuOBpw0KK+OBiuOBruOBp+OCiSzjgZ/jgYvjgYoNCivjgZ/jgarjgYss44G/44Gk44KLDQor44Gu44KA44KJLOOBruOBtuOBig0KK+OCiOOBl+OBoCzjgbLjgo3jgZcNCivjgojjgZfjgaAs44Go44GX44GZ44GRDQor44GV44Gf44GRLOOBl+OCk+OBmA0KK+OBleOBhOOBqOOBhizjgb7jgoLjgosNCivjgb/jgoTjgY4s44Gy44KN44GXDQor44Gf44GL44GX44G+LOOBkeOBhOOBmA0KK+OBi+OBsOOChCzjgbLjgo3jgbXjgb8NCivjgYTjgZfjgZbjgY0s44GX44KT44GE44GhDQor44GL44GM44KELOOCiOOBhuOBhOOBoQ0KK+OBk+OBn+OBqyzjgZ/jgY/jgoLjgooNCivjgZPjgZnjgaAs44KE44GZ44GC44GNDQor44GE44GY44KKLOOChuOBn+OBiw0KK+OBvuOCi+OChOOBvizjgZ/jgb/jgoQNCivjgYvjgarjgYQs44KI44GX44GKDQor44KE44GOLOOBv+OBpOOBkA0KK+OBteOBmOOBrizjgZXjgajjgZcNCivjgZPjgafjgoks44G+44GV44GoDQor44GZ44GO44GKLOOBvuOBleOChuOBjQ0KK+OBmeOBjOOBr+OCiSzjgZPjgYbjgYTjgaENCivjgZXjgYTjgajjgYYs44G/44Gk44KE44GZDQor44GK44GLLOOBr+OCi+OChOOBmQ0KK+OBhOOBl+OBvuOCiyzjgYrjgZXjgoANCivjgb/jgoTjgZbjgY0s44GT44GG44Ge44GGDQor44Gv44G+44GuLOOBv+OBoeOBig0KK+OBk+OBn+OBmOOBvizjgojjgZfjga7jgooNCivjgZ/jgYvjgZfjgb4s44GC44GR44G144G/DQor44Gk44GL44GgLOOBm+OBhOOBhOOBoQ0KK+OBquOBi+OCgOOCiSzjgYvjgaTjgbXjgb8NCivjgZ/jgZHjgaAs44G+44GV44Gu44KKDQor44KE44GZ44KA44KNLOOBr+OCi+OBsuOBkw0KK+OBquOBi+OCgOOCiSzjgbLjgo3jgZcNCivjgbXjgZjjgZfjgb4s44GX44GS44G+44GVDQor44GK44GL44GgLOOBn+OBkeOBlw0KK+OBguOChCzjgb/jgaTjgb7jgosNCivjgarjgYvjgoDjgoks44G/44Gk44G+44KLDQor44Gf44GL44Gv44GXLOOBn+OBkeOBsuOCjQ0KK+OBmeOBjOOBr+OCiSzjgZfjgZLjgZ/jgaANCivjgobjgYLjgZUs44GR44KT44GYDQor44GE44GX44GELOOCgOOBreOCiOOBlw0KK+OBiuOBiuOBj+OBvCzjgbLjgo3jgajjgZcNCivjgYrjgZXjgo8s44G+44GV44Gf44GRDQor44KE44G+44KC44GoLOOBv+OBjeOBig0KK+OBhOOBvuOBhOOBmuOBvyzjgYvjgZrjgbLjgZMNCivjgYrjgYvjgaAs44KI44GX44Gy44KNDQor44Gq44GL44KA44KJLOOBj+OBq+OBig0KK+OBn+OBquOBiyzjgY3jgojjgZcNCivjgarjgYvjga4s44Gf44GP44GKDQor44GK44GK44KC44KKLOOBi+OBmuOBsuOBkw0KK+OChOOBvuOCguOBqCzjgYvjgZrjgYoNCivjgarjgYzjgYQs44KG44GN44G+44GVDQor44GT44Gw44KE44GXLOOCiOOBl+OBr+OCiw0KK+OBsuOBjeOBoSzjgbLjgZXjgZcNCivjgoTjgb7jgaAs44Go44GX44GKDQor44Gk44GL44KC44GoLOOBpOOBqOOCgA0KK+OBhOOBruOBhuOBiCzjgb7jgZXjgagNCivjgYTjga7jgYbjgYgs44GC44GN44KJDQor44GZ44G/44GL44KPLOOBi+OBiuOCiw0KK+OBteOBj+OBoCzjgZjjgoXjgpPjgYTjgaENCivjgoTjgb7jgoLjgags44Gb44Gk44GTDQor44GV44GE44Go44GGLOOChuOBhuOBkw0KK+OBi+OCk+OBsCzjgojjgZfjgb/jgaQNCivjgZXjgonjgYQs44G+44GV44GC44GNDQor44GV44GL44GNLOOBl+OCh+OBhuOBmA0KK+OChOOBmeOBhCzjgZ/jgYvjgZcNCivjgYvjgb/jgoDjgoks44Gf44GL44GXDQor44Gb44G5LOOCiOOBl+OBn+OBiw0KK+OCiOOBl+OBoCzjgajjgZfjgYvjgZoNCivjgarjgYzjgZss44Gf44Gg44GXDQor44G144GP44GhLOOBhOOBmuOBvw0KK+OBteOBj+OBoCzjgZgNCivjga7jgarjgYss44Gu44G244Gy44GTDQor44GE44G+44GgLOOBvuOBleOBsuOCjQ0KK+OBq+OBl+OBi+OCjyzjgb7jgZnjgZMNCivjgZPjgoTjga4s44Gy44Gn44GKDQor44Gq44GL44GW44KPLOOBguOBjeOBig0KK+OBiuOBjOOCjyzjgZ/jgYvjgZcNCivjgarjgYvjgoTjgb4s44Gv44KL44Gy44GVDQor44Gs44Gu44GL44KPLOOBkeOBhOOBkw0KK+OBneOBrSzjgbXjgb/jgYoNCivjgb/jgZ7jgZDjgaEs44KG44GN44GKDQor44GT44Gw44KE44GXLOOBhOOCj+OBig0KK+OCiOOBl+OBvuOBpCzjgb7jgZXjgYoNCivjgYrjgYrjga/jgoks44G+44GV44GK44G/DQor44KE44G+44GgLOOBl+OCk+OBmA0KK+OBv+OBruOBkOOBoSzjgojjgZfjga7jgooNCivjgZfjgpPjgoHjgpMs44Gf44GL44G144G/DQor44Gu44GbLOOBvuOBleOBig0KK+OBhOOCj+OBr+OBlyzjgorjgofjgYbjgYTjgaENCivjgYLjgYvjgYQs44Gf44GR44GXDQor44Gk44Gf44KC44GoLOOBvuOBleOBr+OCiw0KK+OBquOBi+OCguOBqCzjgb/jga7jgosNCivjgY/jgaDjgarjgb8s44G+44GV44KG44GNDQor44GE44Gh44GgLOOBn+OBi+OBlw0KK+OChOOBrizjgYjjgYTjgZgNCivjgb7jgaTjgY0s44GN44G/44GKDQor44GV44GV44GNLOOCiOOBl+OBl+OBkg0KK+OBteOCi+OBrizjgYvjgYrjgosNCivjgbXjgZjjgZ8s44GC44GN44KJDQor44GE44Gu44GG44GILOOBv+OBqeOCig0KK+OBn+OChCzjgb/jgaTjgoTjgZkNCivjgb/jgoTjgZbjgo8s44Gf44KN44GGDQor44KP44Gf44Gq44G5LOOCiOOBhuOBkw0KK+OBguOBj+OBrSzjgajjgZfjgo3jgYYNCivjgbvjgZfjga4s44GX44KT44GE44GhDQor44KI44GX44GgLOOBi+OBmuOBig0KK+OBhuOBiOOCgOOCiSzjga7jgbzjgosNCivjgYvjgb/jgoQs44GR44KT44GYDQor44GZ44Ga44GNLOOBn+OBkeOBlw0KK+OBguOCk+OBqeOBhizjgZ/jgYvjga/jgosNCivjgajjgojjgYTjgZrjgb8s44Go44GX44GKDQor44GP44KP44GqLOOBruOCiuOBkw0KK+OBq+OBhOOBvyzjgYvjgaTjgZcNCivjgb/jgYbjgoks44GK44GV44KADQor44Gu44KA44KJLOOBguOBjeOCiQ0KK+OBiuOBi+OBoCzjgZjjgoXjgpMNCivjgYLjgZXjgazjgb4s44GL44Ga44Gy44KNDQor44GV44GV44GKLOOBsuOBp+OChuOBjQ0KK+OBhOOBquOBjOOBjSzjgb7jgZXjgagNCivjgZnjgYzjgo/jgoks44GV44Go44GXDQor44GX44KH44GG44GYLOOBn+OBkeOBleOBoA0KK+OBn+OBjOOCjyzjgb/jga7jgosNCivjgZ3jgYws44Gu44G244Go44KCDQor44GX44KH44GG44KPLOOBjeOCiOOBvw0KK+OBvuOBpOOBi+OCjyzjgbLjgo3jgobjgY0NCivjgZfjgoLjgoDjgoks44KG44GG44GYDQor44KP44Gf44Gq44G5LOOBquOBiuOChuOBjQ0KK+OBk+OBsOOChOOBlyzjgZfjgpPjgZgNCivjgYTjgYTjgaAs44GT44GG44GE44GhDQor44G144GP44KC44GoLOOBkeOCk+OBhOOBoQ0KK+OCgOOCieOChOOBvizjgbLjgo3jgY0NCivjgbvjgoos44G+44GV44GC44GNDQor44KE44G+44GuLOOBsuOBp+OBig0KK+OBq+OBl+OCj+OBjSzjgojjgYbjgZgNCivjgb7jgaTjgYos44G+44GV44GqDQor44GK44GL44KC44GoLOOBvuOBk+OBqA0KK+OBiuOBiuOBleOBjSzjgZHjgpPjgYTjgaENCivjgYbjgoHjgoLjgags44Gq44GK44G144G/DQor44GK44GL44KA44KJLOOBguOBn+OCiw0KK+OBk+OBhOOBkSzjgZPjgYbjgZvjgYQNCivjgYrjgYrjgZ/jgass44G+44GV44GC44GNDQor44GL44Gf44GK44GLLOOBvuOBleOBjQ0KK+OBiuOBi+OBoCzjgZfjgaHjgo3jgYYNCivjgbXjgY/jgZfjgb4s44KI44GX44GKDQor44GI44Gg44Gq44GLLOOChOOBmeOBruOCig0KK+OBmeOBmuOBjSzjgZfjgZLjgosNCivjgYTjgaHjgYvjgo8s44Gb44GE44GE44GhDQor44GP44KN44GL44KPLOOBjeOCiOOBlw0KK+OBleOBqOOBhizjgY3jgojjgbLjgZUNCivjgYrjgYrjgZXjgo8s44GL44Ga44Gy44GTDQor44KC44Gh44Ga44GNLOOBmeOBiOOBsuOCjQ0KK+OChOOBvuOBl+OBnyzjgZHjgYTjgYTjgaHjgo3jgYYNCivjgYTjgaHjgYvjgo8s44Gf44GL44GXDQor44G144GL44GW44KPLOOBi+OBmuOBuw0KK+OBj+OBvOOBnyzjga7jgbbjgYoNCivjgavjgZfjgoDjgoks44GT44GG44GYDQor44Gt44GO44GXLOOBsuOBleOChuOBjQ0KK+OBk+OCk+OBqSzjgZHjgpPjgZgNCivjgbXjgovjgoQs44G/44Gk44GODQor44GT44Gw44KE44GXLOOBn+OBpOOBig0KK+OBn+OCgOOCiSzjgbLjgo3jgbLjgZMNCivjgb/jgaTjga/jgZcs44Gg44GE44Gv44Gh44KN44GGDQor44GP44G+44GW44KPLOOBi+OBpOOBvw0KK+OChOOBvuOBoCzjgojjgZfjgYoNCivjgbLjgo3jgaQs44GL44Ga44G/44GkDQor44GL44Gt44GgLOOChuOBn+OBiw0KK+OBguOBnSzjgobjgY3jgYoNCivjgYjjgbPjga/jgoks44GN44GE44GhDQor44KE44GZ44GELOOBj+OBq+OBig0KK+OBmeOBqeOBhizjgbLjgo3jgZMNCivjgoTjga/jgZ8s44G+44GV44Gu44KKDQor44GV44GL44GELOOBqOOCguOBsuOCjQ0KK+OBleOBjCzjgojjgZfjgYoNCivjgoTjgb7jgZbjgY0s44GI44G/44GTDQor44Gq44GL44KA44KJLOOCiOOBhuOBkw0KK+OBhOOBluOCjyzjgbLjgo3jgaHjgYsNCivjgYLjgonjgYQs44GR44KT44GE44GhDQor44GG44G244GL44GfLOOBleOBoOOBvw0KK+OCj+OBn+OBrOOBjSzjgZ/jgaDjgobjgY0NCivjgbLjgZfjgZ8s44Gu44G844KLDQor44GL44Go44GGLOOChuOBhuOBkw0KK+OChOOBvuOBrSzjgojjgZfjgagNCivjgoTjgb7jgZfjgZ8s44Gy44KN44GXDQor44Gu44KA44KJLOOCiOOBl+OCjeOBhg0KK+OChOOBquOBhCzjgb7jgZXjgobjgY0NCivjgoDjgonjgYvjgb8s44G+44GV44G/44GhDQor44GC44GK44GNLOOBguOBjeOCiQ0KK+OChOOBl+OCjSzjgZnjgZnjgoANCivjgYLjgZXjgb4s44G+44GV44Gy44KNDQor44GK44GP44GgLOOBteOBv+OBig0KK+OBhOOBl+OBsOOBlyzjgobjgYbjgZgNCivjgb/jgarjgb/jgacs44Gy44Gn44GC44GNDQor44GE44Gs44Ga44GLLOOBk+OBhuOBuOOBhA0KK+OBqOOBjeOCjyzjgojjgZfjga/jgosNCivjgb/jgYbjgoks44KE44GZ44Gu44G2DQor44G+44G244GhLOOBqOOBl+OBr+OCiw0KK+OBiuOBsOOCiSzjgbLjgo3jgobjgY0NCivjgb7jgaTjgY0s44Gy44KN44GXDQor44GI44GQ44GhLOOBkeOCk+OBhOOBoQ0KK+OBiuOBiuOBvyzjgZ/jgZHjgZcNCivjgo/jgZ/jgarjgbks44Gf44GR44GXDQor44GC44KJ44GL44KPLOOBl+OCk+OBmA0KK+OBmeOBjOOBrizjgYLjgY3jgokNCivjgoTjgZnjgYQs44GT44GG44G444GEDQor44G/44KE44KC44GoLOOBsuOCjeOChOOBmQ0KK+OBteOBmOOBjuOCjyzjgZPjgYbjgYTjgaENCivjgY3jgZ/jgYzjgo8s44G/44GN44GKDQor44Gf44Gr44GQ44GhLOOBv+OBpOOCiw0KK+OBk+OBmOOBvizjgojjgZfjgYLjgY0NCivjgYLjgb7jgYvjgo8s44KG44Gf44GLDQor44GK44GK44Gs44GNLOOChuOBn+OBiw0KK+OBn+OBquOBuSzjgZPjgYbjgZgNCivjgb7jgovjga/jgZcs44GE44GV44GKDQor44KE44Gp44KELOOBmOOCheOCk+OBhOOBoQ0KK+OBiuOBiuOBjOOBjyzjgojjgZfjgbLjgo0NCivjgZXjgYvjgZ8s44GT44GG44G444GEDQor44Gv44KJLOOBsuOBp+OBvw0KK+OBn+OBi+OBjizjgbLjgafjgYoNCivjgYLjgYTjga/jgoks44GC44GN44KJDQor44GK44GK44GfLOOBqOOBiuOCiw0KK+OBguOBjeOChOOBvizjgojjgZfjgbLjgo0NCivjgZfjgb/jgZos44Gf44GL44GKDQor44GT44Gw44KE44GXLOOBiuOBleOBteOBvw0KK+OBr+OBn+OCguOBqCzjgZHjgpPjgZgNCivjgYbjgZnjgaAs44Gf44GL44Gu44G2DQor44Gf44GL44Gv44GXLOOBi+OBmuOBig0KK+OBquOBi+OBjOOCjyzjgabjgaTjgYoNCivjgb7jgaTjgbDjgoks44Gv44KL44GKDQor44GP44Gs44GOLOOChuOBn+OBiw0KK+OBiuOBjOOCjyzjgojjgZfjgYoNCivjgaTjgZgs44GL44Ga44Gf44GLDQor44GL44KP44GELOOBkeOBhOOBhOOBoeOCjeOBhg0KK+OBmeOBjOOCj+OCiSzjgZfjgoXjgYbjgYTjgaENCivjgoDjgajjgYYs44GL44Ga44GKDQor44GK44Gw44KJLOOChOOBmeOBqOOBlw0KK+OBi+OBqOOBhizjgZ/jgYvjgobjgY0NCivjgYvjgbbjgonjgY0s44KG44GN44GKDQor44KP44GL44Gf44G5LOOBpOOBqOOCgA0KK+OBiuOBjOOCjyzjgZPjgYbjgZfjgo3jgYYNCivjgYTjgo/jgZXjgY0s44Gy44KN44KG44GNDQor44Gq44KK44GfLOOBiuOBleOCgA0KK+OBguOBjeOChOOBvizjgZ/jgYvjgZcNCivjgb/jgaTjgYQs44GR44GE44GE44GhDQor44GI44KT44GpLOOChuOBn+OBiw0KK+OCiOOBreOBnyzjgYLjgY3jgYoNCivjgYLjgYrjgYQs44GN44KI44GXDQor44GK44GL44KC44GoLOOCiOOBl+OBsuOBlQ0KK+OBiuOBiuOBpOOBiyzjgZfjgpPjgYTjgaENCivjgbXjgY/jgoLjgoos44GV44GL44GIDQor44Gm44GX44G+LOOBi+OBmuOBvuOBlQ0KK+OBr+OBvizjgbLjgafjgY0NCivjgojjgZfjgaAs44Gv44GY44KBDQor44GL44KP44G5LOOCiOOBl+OBr+OCiw0KK+OBn+OBquOBiyzjgoTjgZnjga7jgooNCivjgZ/jgYvjga/jgZcs44GN44KH44GG44GE44GhDQor44Gf44Gq44G5LOOBteOBv+OBguOBjQ0KK+OBguOBnSzjgbLjgo3jgYTjgaENCivjgZ/jgYvjgaAs44Gy44KN44GXDQor44G/44KE44GuLOOBqOOBl+OBig0KK+OBhuOBiOOBmuOBvyzjgbLjgajjgZcNCivjgYTjgaHjgYvjgo8s44KE44GZ44GC44GNDQor44GC44GV44KPLOOBqOOCguOBteOBvw0KK+OBhOOBquOCguOBqCzjgYvjgZrjgYoNCivjgoLjgorjgoQs44Gy44Go44GXDQor44Gq44GL44Gf44GrLOOBkeOCkw0KK+OBv+OChOOCguOBqCzjgYTjgaHjgZ7jgYYNCivjgb/jgY/jgass44GI44GE44GE44GhDQor44GN44Gf44KA44KJLOOBn+OBoOOBvuOBlQ0KK+OChOOBn+OBuSzjgb7jgZXjgbLjgacNCivjgarjgYzjgYvjgo8s44KK44KH44GG44GE44GhDQor44KE44GqLOOBi+OBmuOBig0KK+OBleOBj+OBvizjgb/jgaTjgosNCivjgYLjgonjgYQs44Go44GX44GKDQor44GX44G+44GgLOOBquOBiuOBkw0KK+OBpuOBmuOBiyzjgZfjgoXjgpPjgYTjgaENCivjgYbjgYjjga4s44GX44KF44KT44GE44GhDQor44GV44GE44Go44GGLOOBsuOCjeOChuOBjQ0KK+OBiuOBiuOBj+OCj+OBoCzjgb7jgarjgbYNCivjgojjgZPjgoTjgb4s44KI44GX44GK44G/DQor44KP44Gf44Gq44G5LOOCiOOBhuOBhOOBoQ0KK+OBq+OBl+OCgOOCiSzjgYLjgY3jga7jgooNCivjgZ/jgYvjgb7jgaQs44GT44GG44GE44GhDQor44Gr44GX44KA44KJLOOBn+OBpOOBvg0KK+OBhOOBoeOBjSzjgbLjgo3jgZcNCivjgYTjgo/jgZfjgZ8s44Gu44G244Gk44GqDQor44GK44GuLOOBqOOBl+OBig0KK+OBq+OBl+OBjSzjgZ/jgaTjgYoNCivjgZXjgo8s44GL44Ga44GKDQor44Gf44GL44G/LOOBiuOBleOCgA0KK+OChOOBmeOBteOBjyzjgZHjgpPjgZgNCivjgYrjgYrjgZ8s44Gy44KN44GXDQor44GK44GL44KC44GoLOOBsuOCjeOBvuOBlQ0KK+OBleOBi+OBhCzjgoTjgZnjgYoNCivjgbXjgZjjgoLjgags44Go44GN44GKDQor44G+44Gk44KC44GoLOOBl+OBkuOBruOCig0KK+OBiuOBiuOChOOBtizjgYvjgZrjgoQNCivjgavjgZfjgoDjgoks44GX44KF44GG44GE44GhDQor44G744KK44GG44GhLOOBkeOBhOOBhOOBoQ0KK+OBhOOBl+OCguOBqCzjgZfjgoXjgYbjgYTjgaENCivjgb7jgaTjgoLjgags44Gq44KK44GKDQor44Gf44GR44GG44GhLOOBl+OCk+OBhOOBoeOCjeOBhg0KK+OCguOBqOOChOOBvizjgZPjgYbjgZfjgo3jgYYNCivjgojjgZfjgarjgYws44GT44GG44GYDQor44G144KL44GL44KPLOOBv+OBoeOBig0KK+OBn+OBq+OBkOOBoSzjgojjgZfjgYoNCivjgZ/jgZHjgZPjgZcs44G+44GV44Go44GXDQor44Gk44KA44KJLOOBk+OBhuOBm+OBhA0KK+OBiuOBrizjgZfjgZLjgYoNCivjgYrjgYvjgoLjgags44GV44Go44GXDQor44G144KL44GfLOOBvuOBleOBsuOCjQ0KK+OBq+OBl+OBrizjgZ3jgYbjgYTjgaHjgo3jgYYNCivjgb/jgZrjgZ/jgass44Gy44KN44KG44GNDQor44GT44KE44G+LOOBsuOBleOBlw0KK+OBjeOBj+OBoSzjgZHjgpPjgYTjgaENCivjgYrjgYrjgZPjgYbjgaEs44G+44GV44GC44GNDQor44GL44KP44GfLOOBn+OBi+OBlw0KK+OBj+OBr+OCiSzjgojjgZfjgobjgY0NCivjgbXjgovjga/jgZcs44GT44GG44Ge44GGDQor44Gf44GL44KI44GXLOOBteOBv+OBqOOCiA0KK+OBi+OBmSzjga7jgbbjgobjgY0NCivjgYLjgb/jgoLjgags44GZ44GZ44KADQor44KA44Gt44Go44GGLOOBqOOBl+OBig0KK+OBvuOBpOOCguOBqCzjgZnjgZnjgoANCivjgZ/jgYvjgarjgZcs44G+44GV44GC44GNDQor44GC44GN44GfLOOBqOOBl+OBig0KK+OBn+OBi+OBr+OBlyzjgoTjgZnjgb/jgaENCivjgarjgYzjgYQs44Gf44GL44GXDQor44KI44GX44GgLOOBpOOBi+OBlQ0KK+OBvuOBpOOCguOBqCzjgoTjgZnjgYLjgY0NCivjgajjgY/jgaAs44G/44Gh44GKDQor44Gy44KJ44GELOOBruOBnuOCgA0KK+OBiuOBj+OBl+OBvizjgZ/jgYvjgZcNCivjgb7jgZfjgZ8s44GX44GS44GKDQor44KE44G+44GgLOOBjeOBv+OBsuOCjQ0KK+OBleOBj+OCieOBhCzjgajjgoLjgYoNCivjgZ/jgY3jgZbjgo8s44GV44Go44GXDQor44G+44GZ44GTLOOChuOBhuOBmA0KK+OBl+OCk+OBi+OCjyzjgbLjgo3jgYgNCivjgYrjgYrjgZ/jgass44Gf44Gg44Gy44KNDQor44GL44KP44GuLOOCiOOBl+OBv+OBpA0KK+OBguOCieOBi+OCjyzjgabjgaTjgYoNCivjgYLjgaDjgaEs44Gf44GL44KG44GNDQor44GG44Gh44GgLOOBkeOCk+OBmA0KK+OBk+OBr+OCiSzjgajjgZfjgbLjgZMNCivjgYrjgYrjga/jgZcs44GL44Ga44Gy44GTDQor44GL44KB44GK44GLLOOCiOOBl+OBig0KK+OBv+OCgOOCiSzjgajjgb/jgYoNCivjgYTjgY0s44KI44GeDQor44GC44GX44Ga44GLLOOBsuOCjeOBlw0KK+OChOOBvuOCguOBqCzjgbLjgo3jga7jgooNCivjgojjgZfjgaAs44GK44GV44KADQor44Gv44KJ44GK44GLLOOBi+OBpOOChOOBmQ0KK+OBhuOCi+OCj+OBlyzjgbLjgo3jgZcNCivjgYrjgpPjgaAs44GR44KT44GYDQor44GE44KT44GpLOOBvuOBleOBig0KK+OBn+OBkeOBquOBiyzjgb7jgZXjgajjgZcNCivjgbXjgZjjgZXjgo8s44G+44KC44KLDQor44GK44GK44KC44KKLOOBvuOBleOChuOBjQ0KK+OBquOBi+OCgOOCiSzjgbLjgo3jgZcNCivjgZfjgofjgYbjgZgs44KI44GX44Gu44KKDQor44GN44Gf44GY44G+LOOCiOOBl+OBguOBjQ0KK+OBhOOBqOOBhizjgYLjgY3jgokNCivjgbLjgonjgYos44GL44Ga44Gf44GLDQor44GZ44G/44KC44GoLOOBruOBtuOChA0KK+OBquOBi+OBn+OBqyzjgbLjgo3jgZcNCivjgYLjgonjgZfjgb4s44KG44GN44GKDQor44GL44Gf44KE44G+LOOChuOBjeOBruOBtg0KK+OBhuOBiOOBoCzjgb7jgZXjgbLjgo0NCivjgbXjgZjjgoLjgags44Gy44KN44G144G/DQor44KE44G+44Gv44GfLOOCiuOCheOBhuOBmA0KK+OBiuOBiuOBn+OBqyzjgaTjgajjgoANCivjgYTjgYTjgazjgb4s44KI44GX44Gy44KNDQor44Gq44GM44GV44KPLOOCiOOBl+OCjeOBhg0KK+OChOOBmeOBoCzjgZfjgoXjgYbjgZgNCivjgbXjgY/jgZfjgb4s44KK44KH44GG44GE44GhDQor44GV44GL44GN44Gw44KJLOOBguOChOOBkw0KK+OBi+OBqOOBhizjgZ/jgYvjgZcNCivjgojjgZPjgZbjgo8s44G144G/44Gf44GLDQor44GL44Gp44GuLOOBi+OBmuOBvw0KK+OChOOBvuOBiuOBiyzjgY3jgojjgZcNCivjgYvjgb/jgZ/jgass44Gy44KN44GNDQor44GL44Go44GGLOOBiOOBpOOCjeOBhg0KK+OBruOCguOBqCzjgajjgZfjgYvjgZoNCivjgZnjgY7jgoLjgags44Gb44GE44GE44GhDQor44G144GY44GuLOOBk+OBhuOBmA0KK+OBhOOBruOBhuOBiCzjgZfjgofjgYbjgZgNCivjga/jgZss44G+44GV44GL44GkDQor44KC44KKLOOBiOOCieOBtg0KK+OBi+OCj+OBsOOBnyzjgbLjgafjgYoNCivjgYvjgo/jgZ7jgYgs44GX44KH44GG44GE44GhDQor44Gv44GX44KC44GoLOOBoOOBhOOBl+OCkw0KK+OBsuOCjeOBvuOBlSzjgoTjgZnjgbLjgo0NCivjgY3jgZfjgoLjgags44GP44Gr44GKDQor44Gy44KJ44Gk44GLLOOBv+OBruOCiw0KK+OBhuOBiOOBoCzjgojjgZfjgobjgY0NCivjgYLjgonjgYQs44Go44GX44Gy44GTDQor44GE44GE44GgLOOBvuOBleOChuOBjQ0KK+OBsuOCjeOBl+OBvizjgZfjgofjgYbjgZ7jgYYNCivjgYTjgZXjgYss44GL44Gk44Gy44KNDQor44GZ44Ga44GNLOOCiOOBl+OBig0KK+OBj+OCieOCguOBoSzjgZ/jgYvjgYoNCivjgZXjgYTjgajjgYYs44G+44GV44GKDQor44GZ44Ga44GNLOOBv+OBpOOBkA0KK+OBteOBi+OChCzjgabjgaTjgZgNCivjgZXjgYvjgYQs44Go44GX44KN44GGDQor44GK44GK44KP44GgLOOBqOOBl+OBig0KK+OBi+OCgeOChCzjgYvjgaTjgb8NCivjgY/jgZXjgYbjgoks44Go44GX44GKDQor44KP44GgLOOBi+OBmuOBig0KK+OBlOOBqOOBhizjgY3jgofjgYbjgYTjgaENCivjgbLjgonjgbXjgY8s44GC44GN44KJDQor44KC44KN44KELOOBsuOBp+OBqOOBlw0KK+OBhOOBkeOBoCzjgZXjgaDjgobjgY0NCivjgb7jgZnjgaAs44G+44GV44Gv44KLDQor44G/44Ga44GuLOOBqOOBl+OBn+OBiw0KK+OBr+OChOOBlyzjgY3jgojjgajjgZcNCivjgYLjgYrjgY0s44Go44GX44Gy44GTDQor44GT44Gw44KKLOOBvuOBleOChuOBjQ0KK+OBv+OBleOCjyzjgZXjgbbjgo3jgYYNCivjgZ/jgYvjgY4s44Gm44Gk44GKDQor44GI44KT44GpLOOBkeOCk+OBhOOBoQ0KK+OBmeOBjOOBleOCjyzjgZvjgYTjgZgNCivjgYrjgorjga/jgoks44Go44KI44G/DQor44G+44Gk44Gq44GMLOOBn+OBi+OBteOBvw0KK+OBi+OBleOBhCzjgY3jgojjgYLjgY0NCivjgZvjgoDjgoks44Gf44GL44GXDQor44GV44GP44KJ44GELOOBn+OBi+OBguOBjQ0KK+OBpuOCieOBi+OBqSzjgojjgZfjgobjgY0NCivjgbXjgZjjgZ8s44KE44GZ44GC44GNDQor44GL44KP44Gu44G5LOOBi+OBhOOBoQ0KK+OBguOBiuOBsCzjgb7jgZXjgosNCivjgoDjgonjgoLjgags44KG44GN44KI44GXDQor44Gk44G844GG44GhLOOBn+OBi+OBlw0KK+OBteOCi+OBl+OCh+OBhizjgbXjgZjjgYoNCivjgZfjgbDjgoTjgb4s44G144G/44GKDQor44KE44G+44KC44GoLOOBn+OBi+OBsuOCjQ0KK+OBhuOBoeOBoCzjgbLjgo3jgbXjgb8NCivjgb7jgYjjgZbjgo8s44Go44G/44GKDQor44GT44KA44KJLOOBguOBjeOBruOBtg0KK+OChOOBvuOBleOBjSzjgojjgZfjgZgNCivjgYbjgZfjgY0s44GL44Ga44G/DQor44G+44Gh44KE44G+LOOBl+OCh+OBhuOBmA0KK+OBteOBmOOBrOOBjSzjgZnjgZnjgoANCivjgarjgYvjgoDjgoks44G+44Gk44G/DQor44GP44GZ44KC44GoLOOBpuOCi+OBig0KK+OBmeOBmuOBjSzjgojjgZfjgYoNCivjgYbjgYjjgoTjgb4s44Go44GX44KG44GNDQor44GT44GE44GRLOOBsuOCjeOBlw0KK+OBr+OBm+OBjOOCjyzjgb/jgaTjgYLjgY0NCivjgbXjgovjgYvjgo8s44KE44GZ44Gy44KNDQor44KE44G+44GgLOOBguOBjeOBig0KK+OChuOBr+OCieOBjizjgb/jgaTjgojjgZcNCivjgYrjgZfjgb4s44Gu44KK44KG44GNDQor44Gd44GtLOOBvuOBleOBsuOCjQ0KK+OBqOOBhuOBvizjgZXjgaHjgbLjgo0NCivjgZ/jgYvjga/jgZcs44GX44Ga44GKDQor44GL44GR44Gv44GfLOOBvuOBleOBig0KK+OBhOOBl+OBhCzjgZfjgZLjgosNCivjgZXjgajjgYYs44Gu44KK44KG44GNDQor44KA44KJ44KE44G+LOOBkeOCk+OBmA0KK+OBu+OCiuOBkOOBoSzjgb7jgZPjgagNCivjgarjgYvjgZbjgags44Gy44KN44GXDQor44GV44Go44GGLOOBvuOBk+OBqA0KK+OBi+OBreOBkyzjgorjgoXjgYbjgZ7jgYYNCivjgYvjgZfjgb4s44Go44GX44Gu44G2DQor44Go44GQ44GhLOOBsuOCjeOCgA0KK+OBk+OBv+OChOOBvizjgY3jgb/jgYLjgY3jgokNCivjgoTjgb7jgYrjgYss44KI44GX44Gu44G2DQor44Gf44GL44Gv44GXLOOBkeOBhOOBhOOBoQ0KK+OCguOCiuOBnyzjgZHjgYTjgYTjgaENCivjgojjgZPjgYQs44KI44GX44Gu44G2DQor44Gy44KJ44GELOOBkeOBhOOBhOOBoQ0KK+OBl+OBhOOBsOOBlyzjgb7jgZXjgZ/jgZENCivjgYvjga3jgZMs44G+44GV44G144G/DQor44Gq44GL44GtLOOBruOBtuOBr+OCiw0KK+OBm+OBjeOBkOOBoSzjgabjgaTjgYoNCivjgb/jgoLjgoos44Gf44GL44Gy44GTDQor44GN44GP44GhLOOBvuOBleOBn+OBiw0KK+OChOOBvuOCguOBqCzjgYvjgaTjgZgNCivjgYLjgonjgYvjgo8s44Gf44GL44GKDQor44Go44KC44GP44GrLOOBvuOBleOBjQ0KK+OBqOOBv+OBnyzjga7jgorjgYvjgZoNCivjgZ/jgYvjga/jgZcs44GX44KF44GG44G444GEDQor44Go44GM44GXLOOBruOBtuOBig0KK+OBi+OCj+OCgOOCiSzjgajjgZfjgbLjgo0NCivjgbXjgY/jgarjgYws44GR44GE44GYDQor44G+44GN44GfLOOBqOOBj+OBvw0KK+OBleOBrizjgb/jga7jgosNCivjgZXjgajjgoDjgoks44GR44GE44GYDQor44GV44GL44GuLOOBmOOCheOCk+OChA0KK+OBpOOBoeOBr+OBlyzjgZfjgZLjgYLjgY0NCivjgYbjgYjjga4s44GR44KT44Ge44GGDQor44Gq44GL44GM44KPLOOBsuOBp+OBguOBjQ0KK+OBqOOBj+OBquOBjCzjgZHjgpPjgZgNCivjgYTjgajjgYYs44GL44Ga44GKDQor44Gy44GV44G+44GkLOOBqOOCiOOBqOOBlw0KK+OBiuOBiuOBpOOBiyzjgYvjgoHjgYoNCivjgYvjgo/jgoLjgags44GX44GS44GNDQor44Gu44KA44KJLOOCiOOBl+OBhOOBoQ0KK+OBi+OBruOBhizjgobjgZ/jgYsNCivjgYbjgYjjgZXjgYss44KG44GG44GYDQor44G144GY44KP44KJLOOBsuOCieOBig0KK+OBiuOBjOOCjyzjgb7jgZXjgagNCivjgY/jgonjgZ8s44Go44KC44G144G/DQor44Gv44Gq44Gd44GoLOOBqOOCiOOBteOBvw0KK+OBq+OBl+OBi+OCjyzjgZ/jgYvjgojjgZcNCivjgYjjgbPjgZks44Gy44Gn44GKDQor44KE44GZ44Gu44KKLOOCiOOBl+OBr+OCiw0KK+OBleOBi+OBhCzjgZ/jgZHjgZcNCivjgb7jgYjjgaAs44KI44GX44GC44GNDQor44G144GP44GgLOOBl+OBkuOBn+OBiw0KK+OChOOBvuOCguOBqCzjgb7jgZXjgZrjgb8NCivjgZfjgYrjgZ8s44KE44GZ44G+44GVDQor44KA44KJ44GL44G/LOOBqOOCguOCiA0KK+OBhOOBj+OBvyzjgZ/jgYvjgZcNCivjgarjgYvjgY4s44KG44G/DQor44Go44GP44G+44GkLOOBn+OBi+OBig0KK+OBn+OBq+OBhCzjgajjgZfjgobjgY0NCivjgYrjgYrjgoTjgb4s44GR44KT44GYDQor44Gf44GuLOOBn+OBi+OBoeOBuw0KK+OBiuOBiuOBnyzjgbLjgo3jga7jgbYNCivjgY/jgb7jga4s44GC44GN44GKDQor44GV44KP44GQ44GhLOOBvuOBleOBj+OBqw0KK+OBguOBleOBrizjgYvjgZrjgYoNCivjgZXjgYvjgZDjgaEs44Gu44KK44KG44GNDQor44KP44Gf44Gq44G5LOOBpOOBqOOCgA0KK+OBi+OBqOOBhizjgYvjgZrjgYoNCivjgb7jgYjjgYvjgo8s44Gf44GL44GXDQor44G+44Gk44KC44GoLOOBi+OBmuOBig0KK+OBvuOBpOOCguOBqCzjgajjgZfjgYoNCivjgoTjgb7jgarjgYss44GI44GE44GYDQor44GT44Gw44KE44GXLOOBk+OBhuOBmA0KK+OBteOBmOOBnyzjgZ/jgaTjgYoNCivjgoTjgY4s44G+44GV44G/DQor44GE44KP44GELOOBvuOBleOBn+OBiw0KK+OBteOBj+OBl+OBvizjgbLjgafjgb8NCivjgbXjgovjgYvjgo8s44GT44GG44GE44GhDQor44GK44GM44GfLOOBvuOBleOBruOCig0KK+OBmeOBmuOBjSzjgZ/jgaDjgbLjgZMNCivjgZfjgYvjgb4s44Gf44GL44GXDQor44GN44GX44KC44GoLOOBl+OCheOCk+OBhOOBoQ0KK+OBk+OCjeOBjizjgYvjgaTjgb8NCivjgbXjgZ/jgb8s44GN44KI44GXDQor44KE44GX44KNLOOBqOOBl+OBig0KK+OBr+OCiuOBhOOBkSzjgojjgZfjga/jgosNCivjgZfjgoDjgoks44GC44KK44G+44GVDQor44Gq44GM44GP44KJLOOBhOOBoeOCjeOBhg0KK+OBv+OBquOBvyzjgZPjgYbjgZgNCivjgajjgY/jgarjgYws44GN44KI44GXDQor44Gf44Gq44GLLOOBteOBj+OCgA0KK+OBpuOCieOBleOBjSzjgZfjgo3jgYYNCivjgYvjgajjgYYs44Go44GK44KLDQor44G/44Ga44GuLOOCiOOBl+OBguOBjQ0KK+OBn+OCguOBqCzjgbLjgajjgZcNCivjgYbjgaHjgaAs44Gy44KN44GL44GaDQor44Gf44GR44GE44GhLOOCiOOBl+OChuOBjQ0KK+OBsuOBs+OBrizjgbLjgo3jgZcNCivjgZPjgbDjgoTjgZcs44KK44KH44GG44G444GEDQor44KP44Gf44Gq44G5LOOBsuOCjeOBn+OBoA0KK+OBteOBi+OBoCzjgb7jgZXjgbLjgo0NCivjgYTjgZfjgZ/jgass44GL44Ga44Gy44GVDQor44GE44GnLOOCiOOBl+OChuOBjQ0KK+OBq+OBhOOBleOBqCzjgb7jgZXjgobjgY0NCivjgZnjgarjga/jgoks44GX44KH44GG44GYDQor44GX44G/44GaLOOBvuOBleOBig0KK+OBi+OBqOOBhizjga7jgorjgobjgY0NCivjgarjgYTjgajjgYYs44GY44KF44KT44GYDQor44GT44GE44GRLOOBqOOBhuOBmeOBkQ0KK+OBjeOBn+OCgOOCiSzjgajjgojjgbLjgZMNCivjgYvjgYzjgo8s44Go44GX44KG44GNDQor44GE44GR44GgLOOBn+OBi+OBlw0KK+OBi+OBruOBhizjgZ/jgYvjgZcNCivjgYrjgYvjgoLjgags44Gd44GG44GYDQor44GT44Gw44KE44GXLOOBleOBoOOBsuOCjQ0KK+OBhOOBl+OBhCzjgb7jgZXjgbLjgo0NCivjgZXjgYjjgY0s44G+44GZ44KG44GNDQor44GV44KP44GgLOOBn+OBi+OBlw0KK+OBlOOBqOOBhizjga7jgbbjgobjgY0NCivjgYrjga4s44G+44GV44Gy44KNDQor44G144Gq44GK44GLLOOBvuOBleOBguOBjQ0KK+OBl+OCk+OChCzjgb7jgZXjgYvjgZoNCivjgbvjgpPjgZbjgo8s44Gy44GL44KLDQor44KE44G+44GG44GhLOOBl+OBkuOBmA0KK+OBhOOBl+OBrizjgaTjgajjgoANCivjgYTjgYrjgY8s44Gy44Gn44Go44GXDQor44GC44KJ44GNLOOCiOOBhuOBkw0KK+OBteOBmOOCj+OBjSzjgb/jga7jgosNCivjgYTjgaHjgoDjgoks44G+44GV44GNDQor44Gv44KE44GXLOOCiOOBl+OBleOBoA0KK+OCguOCiizjgZ/jgY/jgZgNCivjgY3jgoDjgoks44GX44GS44KLDQor44KG44GN44G144GNLOOBvuOBleOBsuOBlQ0KK+OBr+OBjuOCguOBqCzjgYTjgo/jgYoNCivjga/jgZfjgoLjgags44Gy44Gn44GKDQor44GN44Gf44KE44G+LOOCiOOBl+OBpuOCiw0KK+OBteOBmOOCguOCiizjgZHjgpPjgZgNCivjgYrjgY/jga4s44GK44GV44KADQor44KE44G+44GgLOOBv+OBpOOBig0KK+OBn+OBlCzjgZ/jgYvjgZcNCivjgYLjgZXjgYQs44KI44GX44Gy44KNDQor44KC44KK44GuLOOBsuOCjeOBlw0KK+OBv+OBquOBhCzjgZHjgYTjgZMNCivjgoLjgorjgZXjgo8s44Go44KI44GTDQor44Gq44KK44GV44KPLOOBteOBv+OBkw0KK+OCguOCiuOCguOBqCzjgb7jgZXjgosNCivjgZPjgbDjgoTjgZcs44KI44GX44Gu44KKDQor44GX44G+44GgLOOBsuOBp+OBjQ0KK+OBmeOBmuOBjSzjgb/jgZXjgZMNCivjgbXjgY/jgaAs44GR44GEDQor44GC44KJ44GELOOBguOBjeOBruOBtg0KK+OBn+OBq+OChOOBvizjgZfjgoXjgYbjgYTjgaENCivjgYrjgYvjgoLjgags44G+44Gk44GKDQor44Gg44GE44KC44KTLOOBv+OBruOCiw0KK+OBr+OChOOBlyzjgojjgZfjgarjgYoNCivjgYTjgZfjgaAs44G144GP44GKDQor44Gy44KN44GV44KPLOOCiOOBl+OBv+OBoQ0KK+OCiOOBl+OBiuOBiyzjgb7jgZXjgZrjgb8NCivjgb7jgaTjgoLjgags44GX44KT44GE44GhDQor44Gq44GL44GY44G+LOOBleOBi+OBiA0KK+OBjeOBnyzjgZXjgarjgYgNCivjgavjgZfjgoDjgoks44GX44GS44GL44GaDQor44Gv44Gj44Go44KKLOOBsuOBp+OBig0KK+OChOOBvuOCguOBqCzjgYvjgZrjgYoNCivjgYTjgajjgYYs44GC44GN44KJDQor44GN44Gf44KA44KJLOOBvuOBmeOBvw0KK+OBn+OBquOBiyzjgajjgb/jgYoNCivjgYTjgYrjgY0s44Go44G/44KE44GZDQor44GL44G+44GfLOOBk+OBhuOBmA0KK+OBl+OBv+OBmizjgbLjgo3jgZcNCivjgb7jgZnjgYrjgYss44Gy44Gn44GKDQor44GV44KP44GgLOOBl+OCh+OBhuOBkw0KK+OBquOBi+OBhOOBlyzjgZ/jgZHjgobjgY0NCivjgo/jgZ/jgarjgbks44G+44GV44Gy44KNDQor44KI44GX44GW44KPLOOBguOBjeOBig0KK+OBleOBleOBiuOBiyzjga7jgorjgYLjgY0NCivjgoTjgb7jgZDjgaEs44Go44GX44GKDQor44GE44G+44G144GPLOOBn+OBoOOBlw0KK+OBi+OBv+OChCzjgajjgb/jgYgNCivjgo/jgZUs44Gy44Gn44GKDQor44GN44GP44GhLOOBguOBjeOBsuOBkw0KK+OBhuOBi+OBhCzjgb/jgY3jgYoNCivjgYTjgo/jgb4s44Gb44GE44GE44GhDQor44Gk44GYLOOBtuOCk+OBmA0KK+OBn+OBkeOBoCzjgZXjgaDjgaTjgZANCivjgZvjgajjgYzjgo8s44GX44GS44Go44GXDQor44GT44GX44KA44KJLOOBvuOBleOBlw0KK+OCj+OBn+OBquOBuSzjgZjjgoXjgpPjgYTjgaENCivjgYbjgZXjgb8s44G/44Gk44Gu44G2DQor44GK44GL44GgLOOBqOOBl+OBsuOBkw0KK+OBteOBmOOCj+OCiSzjgZfjgofjgYbjgZgNCivjgYvjgajjgYYs44KE44GZ44KG44GNDQor44GE44GX44Gv44KJLOOBvuOBleOCiw0KK+OBsuOBquOBnyzjgY3jgofjgYbjgbjjgYQNCivjgYbjgYjjgZnjgY4s44GX44GS44Gy44KNDQor44GX44Gw44GfLOOBruOBtuOBi+OBmg0KK+OBiuOBj+OBoCzjgb7jgZXjgosNCivjgZnjgarjgoTjgb4s44KI44GX44GKDQor44GE44G+44GELOOBguOBjeOBsuOBkw0KK+OBquOBi+OCgOOCiSzjga7jgbbjgYoNCivjgarjgYvjgoLjgoos44GT44GG44GYDQor44G144GL44GV44KPLOOCgOOBreOBsuOBlQ0KK+OBv+OBmuOBnyzjgZfjgpPjgYTjgaENCivjgYrjga4s44GL44Ga44GXDQor44GV44GE44Go44GGLOOBsuOCjeOBlw0KK+OBl+OCheOBqeOBhizjgb/jga7jgosNCivjgbXjgY/jgYQs44Gf44Gk44Gy44GTDQor44Gu44GgLOOBi+OBquOBiA0KK+OBiuOBiuOBrizjga/jgovjgY0NCivjgZPjgYzjgb8s44KI44GX44G+44GVDQor44G/44GNLOOBvuOBleOChuOBjQ0KK+OBhOOBkeOBoCzjgbXjgb/jgYoNCivjgbXjgZjjgoLjgoos44Go44GX44Gy44GTDQor44Gf44GL44GgLOOBi+OBmuOBig0KK+OBhOOBkeOBoCzjga7jgbbjgZ7jgYYNCivjgYTjgajjgYYs44Gu44G244Gf44GLDQor44KP44Gf44Gq44G5LOOBi+OBmuOBsuOCjQ0KK+OBleOCj+OBoCzjgb7jgZXjgbXjgb8NCivjgb7jgYjjgZjjgb4s44G+44GT44GoDQor44GE44Gq44KA44KJLOOBmeOBmeOCgA0KK+OBquOBi+OCgOOCiSzjgbLjgo3jgZcNCivjgarjgYvjgZjjgb4s44GX44Gu44G2DQor44GE44KP44G+LOOCiOOBl+OChuOBjQ0KK+OCj+OBi+OBpOOBjSzjgbLjgafjgY0NCivjga/jgZvjgYzjgo8s44KI44GX44KN44GGDQor44GE44Gu44GG44GILOOBn+OBi+OBlw0KK+OBi+OBleOBr+OCiSzjgZPjgYbjgZgNCivjgavjgZfjgoTjgb4s44G+44GV44Gy44KNDQor44GZ44Gp44GGLOOBmOOCheOCk+OBhOOBoQ0KK+OBiuOBi+OBuSzjgajjgZfjgbLjgo0NCivjgbXjgY/jgbAs44GR44KT44GYDQor44G+44Gk44Gq44GMLOOChOOBmeOBig0KK+OBleOBi+OBhCzjgbLjgo3jgbLjgZMNCivjgbXjgZjjgZ8s44KG44GN44GKDQor44Gq44GL44KE44G+LOOBn+OBi+OChOOBmQ0KK+OCiOOBreOBoCzjgZHjgpPjgZ7jgYYNCivjgY/jgb7jgZ8s44GT44GG44GE44GhDQor44GT44KE44G+LOOBsuOCjeOChuOBjQ0KK+OCiOOBreOChOOBvizjgZ/jgZHjgZcNCivjgbXjgZjjgYvjgo8s44GR44KT44GYDQor44Gv44KK44GM44KELOOBsuOCjeOBguOBjQ0KK+OBr+OBm+OBjOOCjyzjgYvjgZrjgbLjgagNCivjgojjgZfjgaAs44Gf44Gg44GXDQor44GP44GZ44Gu44GNLOOCiOOBl+OBteOBvw0KK+OBn+OBi+OBr+OBlyzjgZXjgaHjgZMNCivjgarjgYzjgZ8s44GX44KT44GYDQor44Gd44Gu44GP44KJLOOBsuOCjeOBlw0KK+OBvuOBmeOCguOBqCzjgojjgZfjgYoNCivjgYrjgY7jga/jgoks44Gy44KN44GXDQor44KI44GX44GgLOOBvuOBquOBtg0KK+OBn+OBquOBiyzjgb7jgZXjgbLjgZMNCivjgYjjgaAs44Gb44GE44GE44GhDQor44Gq44GLLOOBn+OCguOBpA0KK+OBhOOBhOOBmuOBiyzjga7jgbzjgosNCivjgabjgonjgavjgZcs44G+44GV44Gu44G2DQor44G144GP44GELOOBm+OBhOOBmA0KK+OBp+OCgOOCiSzjgYvjgZrjgbLjgZMNCivjgZXjgYjjgY0s44GX44GS44Gv44KLDQor44GG44Gh44GgLOOBsuOBp+OBruOCig0KK+OBl+OBhOOBqizjga7jgbbjgYoNCivjgbXjgovjgoQs44KI44GX44Gv44KLDQor44Gq44GM44GP44G8LOOBiuOBleOCgA0KK+OBpuOCieOBhuOBoSzjgbLjgafjgYLjgY0NCivjgYrjgYrjgZ/jgYss44G+44GV44GC44GNDQor44G144GY44KI44GXLOOBqOOBiuOCiw0KK+OBleOBhOOBqOOBhizjgb7jgZXjgYoNCivjgY/jgo3jgZXjgo8s44G144GV44GIDQor44GE44GX44GL44KPLOOBkeOCk+OBneOBhg0KK+OCiOOBl+OBrizjgZ/jgYvjgZcNCivjgZPjgb/jgoQs44GL44Ga44KI44GXDQor44KE44G+44GM44GfLOOBqOOBl+OBig0KK+OBpOOChCzjgYvjgYrjgosNCivjgavjgZfjga4s44Gu44KK44KG44GNDQor44GG44Gh44GgLOOBsuOBleOBig0KK+OCj+OBn+OBquOBuSzjgYvjgZrjgb/jgaENCivjgoLjgorjgZ8s44Gu44G844KLDQor44GT44GX44GgLOOBk+OBhuOBnuOBhg0KK+OBsuOCjeOBmyzjgorjgofjgYbjgbjjgYQNCivjgojjgZfjgoDjgoks44GL44Gk44Go44GXDQor44G/44GG44KJLOOCiOOBl+OBi+OBmg0KK+OBk+OBhOOBmuOBvyzjgbLjgafjga7jgbYNCivjgabjgonjgYos44G/44Gk44Gy44KNDQor44Gb44GM44KPLOOBv+OBoeOBig0KK+OBi+OBhOOBmuOBiyzjgYLjgY3jgokNCivjgbXjgY/jgb7jgZks44GZ44Ga44KIDQor44GE44Go44GG44GaLOOBmA0KK+OBm+OBjeOBjOOBvyzjgbLjgo3jgZcNCivjgbXjgZgs44GE44Ga44G/DQor44KI44GX44KA44KJLOOBjeOCiOOBmA0KK+OBteOCi+OCguOBqCzjgojjgZfjgobjgY0NCivjgZ/jgY3jgZ8s44G+44Gq44G2DQor44GK44GL44GgLOOBsuOCjeOBsuOBlQ0KK+OBn+OBi+OBr+OBlyzjgYLjgY3jgokNCivjgZ/jgavjgbXjgZgs44G+44GV44GC44GNDQor44GE44G+44GK44GLLOOBi+OBmuOBsuOCjQ0KK+OCj+OBn+OBquOBuSzjgZHjgpPjgZgNCivjgoTjgb7jgoLjgags44GL44GK44KLDQor44KI44GgLOOChOOBmeOBig0KK+OBteOBi+OChOOBvizjgbLjgo3jgZcNCivjgoTjgb7jgZDjgaEs44Gy44GV44GKDQor44GV44GuLOOBjeOBvw0KK+OBn+OBi+OBr+OBlyzjgobjgooNCivjgb7jgaTjgoLjgags44GN44KI44GXDQor44KE44GuLOOBsuOBleOBlw0KK+OBguOBjeOBsCzjgYvjgZrjgojjgZcNCivjgb/jganjgorjgYvjgo8s44Gy44KN44G/44GkDQor44Gf44GL44GXLOOBv+OCiOOBkw0KK+OBteOCi+OBi+OCjyzjgb/jga7jgosNCivjgbLjgY3jgZ8s44GI44GE44GYDQor44GK44GW44GNLOOCiOOBl+OBguOBjQ0KK+OBguOBiuOBjSzjgZfjgZLjgYrjgb8NCivjgZXjgYjjgZDjgZUs44G+44GV44Gy44KNDQor44G144GY44KC44GoLOOBsuOCjeOBlw0KK+OBk+OBq+OBlyzjgobjgYbjgZgNCivjgYrjgYrjgavjgZcs44GX44KF44KT44GZ44GRDQor44Gy44GQ44GhLOOBteOBmOOBjQ0KK+OBj+OBvOOBnyzjgZjjgoXjgpPjgYTjgaENCivjgoTjgb7jgZDjgaEs44GX44KN44GGDQor44G144KL44GL44KPLOOBvuOBleOBqA0KK+OBquOCiuOBnyzjgYTjgaHjgo3jgYYNCivjgZ/jgarjgYss44G144GV44GE44GhDQor44Gv44Gf44GR44KE44G+LOOBpuOBpOOBig0KK+OBv+OChOOCguOBqCzjgb/jgZXjgYoNCivjga7jgZbjgY0s44KE44GZ44Gv44KLDQor44Gv44Gb44GM44KPLOOBoeOCh+OBhuOBl+OCjeOBhg0KK+OBl+OCieOBi+OCjyzjgojjgZfjgbLjgZMNCivjgYLjgYTjgaAs44GT44GG44G444GEDQor44Gy44KN44GL44KPLOOBsuOCjeOBlw0KK+OCiuOCheOBhuOBi+OCjyzjgaTjgojjgoANCivjgoTjgb7jgZDjgaEs44G+44GZ44G/DQor44GP44KK44GV44GNLOOBsuOBp+OBig0KK+OCguOCiuOCguOBqCzjgojjgZfjgb/jgaENCivjgY/jgbzjgZ8s44G+44GV44GC44GNDQor44GP44G+44GV44GTLOOCguOCiuOBl+OBkg0KK+OBguOBoOOBoSzjgZHjgpPjgZ8NCivjgZPjgpPjga4s44Gy44KN44GC44GNDQor44KE44G+44KC44GoLOOBiOOBpOOBkw0KK+OBhOOCj+OBhCzjgorjgofjgYbjgZ8NCivjgYrjgYrjga/jgoks44Gy44Gn44GKDQor44GE44GX44Gv44KJLOOBqOOCguOBruOCig0KK+OBguOBiuOBjSzjgZ/jgZHjgZcNCivjgoLjgoos44KI44KK44GTDQor44KN44Gj44G944KT44GOLOOBvuOBleOBguOBjQ0KK+OBi+OBqOOBhizjgZPjgYbjgYTjgaENCivjgZXjgajjgYYs44KE44GZ44GKDQor44G+44GI44Ge44GuLOOBiOOBhOOBmOOCjeOBhg0KK+OBteOBmOOCguOBqCzjgbLjgafjga7jgbYNCivjgZ/jgavjgoDjgoks44Gy44KN44GXDQor44Gq44GL44Gr44GXLOOChuOBn+OBiw0KK+OBn+OBi+OBr+OBlyzjgZfjgpPjgZgNCivjgarjgYvjgYQs44GL44Ga44G/DQor44Gf44GL44Gv44GXLOOBn+OBkeOBteOBvw0KK+OBl+OCgizjgobjgYbjgYTjgaHjgo0NCivjgZfjgbDjgZ8s44GE44GV44KADQor44G144KL44G/44GhLOOCiOOBl+OBig0KK+OBn+OBkeOBoCzjgYLjgY3jgokNCivjgbXjgZjjgZ8s44Gy44KN44GXDQor44GL44GO44KE44G+LOOBpuOBpOOChA0KK+OCj+OBoSzjgb7jgZXjga7jgooNCivjgbXjgZjjgZ8s44Gy44Go44GXDQor44GT44KT44GpLOOBl+OBkuOBruOCig0KK+OBvuOBpOOCguOBqCzjgZ/jgYvjgZcNCivjgbXjgY/jgYQs44Gy44Gn44KG44GNDQor44GZ44GM44KP44KJLOOBk+OBhuOBmOOCh+OBhg0KK+OBteOBi+OChOOBvizjgYLjgY3jgokNCivjgYTjgb7jgYQs44G+44GV44Gf44GLDQor44GV44Go44GGLOOBj+OBq+OBsuOBkw0KK+OBi+OBquOBluOCjyzjgYvjgZrjgYoNCivjgbXjgaHjgZbjgY0s44GK44GV44KADQor44Gk44GL44GgLOOBl+OCh+OBhuOBhOOBoQ0KK+OBhOOBl+OBluOBjSzjgZ/jgYvjgobjgY0NCivjgajjgY/jgoks44G/44GN44GKDQor44Go44Gu44GV44GNLOOCguOBqOOCiOOBlw0KK+OBn+OBi+OBjSzjgbLjgafjgYoNCivjgbXjgZjjgZ8s44Gy44KN44KG44GNDQor44Gq44GM44GbLOOCjOOBhOOBkw0KK+OBn+OBquOBiyzjgbLjgo3jgobjgY0NCivjgZ/jgaTjgb8s44KI44GX44GC44GNDQor44KE44G+44KC44GoLOOChuOBhuOBhOOBoQ0KK+OBteOBj+OBnyzjgZ/jgYvjgarjgYoNCivjgY/jgo/jga/jgoks44KI44GX44KG44GNDQor44G144GY44GfLOOBiOOBhOOBnuOBhg0KK+OBhOOBquOBj+OBvizjgajjgZfjgZMNCivjgb/jgZXjgYos44GT44GG44Ge44GGDQor44Gq44GL44GX44GfLOOBvuOBk+OBqA0KK+OBiuOBj+OChOOBvizjgobjgYbjgZgNCivjgarjgYzjgYgs44GL44Ga44Gy44KNDQor44Gq44GM44GELOOBl+OCh+OBhuOBlA0KK+OChOOBvuOBluOBjSzjgb7jgZXjgosNCivjgZfjgonjgYTjgZcs44GX44KH44GG44GE44GhDQor44GG44GI44GgLOOBl+OBkuOCiw0KK+OBiuOBmOOBvizjgbLjgo3jgYLjgY0NCivjgbLjgo3jgZss44G+44GV44Gu44G2DQor44Gy44KJ44GuLOOBvuOBleOCiw0KK+OBteOCi+OBnyzjgZ/jgYvjgYoNCivjgZPjgazjgb4s44GL44GK44KLDQor44Gf44GL44KE44G+LOOBqOOCguOBr+OCiw0KK+OBguOBleOBl+OBnyzjgb7jgZXjgbXjgb8NCivjgojjgaTjga/jgZcs44Gy44KN44GXDQor44Gk44Gh44KELOOBn+OBi+OBvw0KK+OBiuOBiuOBq+OBlyzjgYTjgZXjgYoNCivjgoTjgb7jgZDjgaEs44GX44KH44GG44GYDQor44GX44Ga44GuLOOBhOOBleOCgA0KK+OBr+OBl+OBuSzjgorjgofjgYbjgYTjgaENCivjgbvjgorjgYQs44G/44KI44GXDQor44Gq44GM44GK44GLLOOBruOCiuOBkw0KK+OBj+OCiuOBnyzjgZfjgofjgYbjgbjjgYQNCivjgY3jgbAs44GV44Gq44GIDQor44GE44GgLOOBvuOBoeOBkw0KK+OBteOBj+OBqOOBvyzjgYvjgZrjgb8NCivjgZPjgbDjgoTjgZcs44Gu44G844KLDQor44GE44KKLOOBkeOCk+OBhOOBoQ0KK+OBleOBnyzjgb7jgZnjgZANCivjgb7jgovjgoTjgb4s44Gy44KN44G144G/DQor44GC44GK44KE44G+LOOBl+OBkuOCiw0KK+OBl+OCk+OBqeOBhizjgoTjgZnjgYoNCivjgYLjgYTjgYvjgo8s44GN44KH44GG44GYDQor44GV44GL44Gu44GG44GILOOBkeOCk+OBhOOBoQ0KK+OBteOBmOOBvuOBjSzjgZ/jgaDjgYLjgY0NCivjgYvjgo/jga/jgoks44G+44GT44GoDQor44KA44KJ44GfLOOBsuOBp+OChuOBjQ0KK+OCiOOBl+OBoCzjgobjgYbjgYTjgaENCivjgYTjgZ/jgY/jgoks44Gm44Gk44KEDQor44GY44Ge44Gw44KJLOOCiOOBhg0KK+OBn+OBquOBiyzjgajjgZfjgYoNCivjgYvjgZjjgo/jgoks44GX44KF44GG44GE44GhDQor44Gf44Gq44GLLOOBiuOBleOCgA0KK+OBr+OBmeOBhOOBkSzjgZfjgoXjgYbjgZgNCivjgajjgYbjgb4s44KG44G/44GTDQor44GL44KP44GN44GfLOOBguOBjeOCiQ0KK+OBvuOBpOOCguOBqCzjgoTjgZnjgbLjgZMNCivjga/jgZvjgYzjgo8s44G/44Gk44GKDQor44G144GY44GELOOBqOOBiuOCiw0KK+OBruOCgOOCiSzjgb/jgaHjgZ/jgYsNCivjgojjgYbjgZPjgZ8s44Gy44Gn44GKDQor44GL44Gq44GW44KPLOOBk+OBhuOBnuOBhg0KK+OBvuOBmeOChOOBvizjgZfjgpPjgYTjgaENCivjgYvjga7jgYYs44Gy44KN44GXDQor44G144Gq44KE44G+LOOBiOOBpOOBig0KK+OChOOBvuOBl+OBnyzjgY3jgaHjgbLjgZMNCivjgZXjgajjgYYs44G+44GV44GL44GaDQor44GL44KB44KC44GoLOOCiOOBl+OBteOBvw0KK+OBhOOBqOOBhizjgY3jgojjgZcNCivjgYrjgY/jgoDjgoks44GX44GS44GKDQor44G144GY44GELOOBpuOCi+OBig0KK+OBjeOBr+OCiSzjgZ/jgYvjgZcNCivjga7jgoDjgoks44KK44GV44GPDQor44GC44GP44Gf44GM44KPLOOBpOOBqOOCgA0KK+OBhOOBl+OBoCzjgY/jgavjgYoNCivjgYbjgoHjga/jgoks44GX44GS44KLDQor44GK44GK44GOLOOBquOBiuOChuOBjQ0KK+OBk+OCk+OBqSzjga/jgovjgYoNCivjgZ/jgZHjgaAs44GR44GE44GTDQor44G+44Gk44GELOOBteOBv+OBiOOBhA0KK+OBi+OBv+OBiuOBiyzjgb7jgZXjgosNCivjgYvjgoLjgZfjgZ8s44Gy44KN44G/DQor44KE44Gq44GO44GV44KPLOOBn+OBkeOBsuOCjQ0KK+OBn+OBkeOBhuOBoSzjgb7jgoLjgosNCivjgoLjgpPjgb4s44G/44Gu44KLDQor44GE44GE44GgLOOBi+OBquOBiA0KK+OBr+OBm+OBjOOCjyzjgajjgZfjgZgNCivjgarjgYzjgbvjgoos44Gy44KN44GXDQor44KC44KK44GK44GLLOOBn+OBoOOBruOCig0KK+OBq+OBl+OChOOBvizjgYLjgY3jgYoNCivjgoTjgb7jgoLjgags44KE44GZ44GKDQor44GE44GX44GgLOOBqOOBl+OBig0KK+OBteOCi+OBqSzjgb7jgZXjgYoNCivjgYvjgpPjgaAs44G+44GV44GC44GNDQor44GE44GX44GgLOOBl+OBkuOCiw0KK+OBleOBhOOBqOOBhizjgZ/jgYvjgbLjgo0NCivjgY3jgoDjgoks44Gy44Go44GXDQor44GE44KP44G/LOOChOOBmeOBruOBtg0KK+OCguOCiizjgZfjgoXjgYbjgYTjgaENCivjgZ/jgYvjgoTjgb4s44GX44KH44GG44Ge44GGDQor44Gv44KE44GX44GQ44GhLOOBguOBjeOBsuOBkw0KK+OBleOBhOOBqOOBhizjgoTjgZnjgYoNCivjgZfjgbDjgZ/jgY0s44GP44Gr44GC44GNDQor44GK44GO44Gv44KJLOOCiOOBl+OBr+OCiw0KK+OBi+OBqOOBhizjgYTjgZXjgb8NCivjgbXjgY/jgags44Gq44GK44KEDQor44GK44GgLOOBsuOBp+OBguOBjQ0KK+OBleOBqOOBhizjgb7jgZXjgbLjgo0NCivjgarjgYvjgoDjgoks44KG44Gf44GLDQor44Gv44G+44GgLOOBn+OBi+OBsuOCjQ0KK+OBiuOBjOOBleOCj+OCiSzjgabjgaTjgoQNCivjgoDjgonjgY0s44GL44Ga44Gy44GTDQor44GK44GK44Gv44GXLOOBguOBjeOBsuOBqA0KK+OBn+OBi+OBrizjgZ/jgYvjgZcNCivjgarjgYvjgZbjgo8s44GL44Ga44Go44GXDQor44G/44KE44GYLOOBguOBjeOBsuOCjQ0KK+OBmeOBiOOBquOBjCzjgoTjgZnjgYoNCivjgZ/jgZ/jgY0s44GC44GN44KJDQor44KI44GX44GgLOOBhOOCj+OBig0KK+OBguOBiuOBjSzjgbLjgafjgZcNCivjgZnjgY7jgoDjgoks44GL44GK44KLDQor44GE44Go44GGLOOBvuOBleOBqOOBlw0KK+OBn+OBi+OBr+OBlyzjgZfjgpPjgYTjgaENCivjgZnjgZrjgY0s44GE44GV44KADQor44GL44Gf44KE44G+LOOBqOOBl+OBsuOBkw0KK+OBleOBhOOBqOOBhizjgb7jgZXjgZcNCivjgZ/jgZjjgb4s44Gy44KN44GXDQor44GC44G5LOOCiOOBhuOBhOOBoeOCjeOBhg0KK+OBquOBi+OBmOOBvizjgZfjgZLjgY0NCivjgoTjgb7jgZDjgaEs44G+44GT44GoDQor44KP44GN44GW44GLLOOBvuOBleOBsuOBkw0KK+OBleOBkyzjgZXjgaDjgagNCivjgYrjgYrjgaTjgYss44Go44KC44Gy44KNDQor44Gk44GL44KC44GoLOOBmeOBmeOCgA0KK+OBhOOBruOBhuOBiCzjgbXjgb/jgYoNCivjgarjgYzjgYos44Go44GK44KLDQor44GG44KJ44GwLOOBvuOBleOBig0KK+OBk+OBmOOBvizjgoTjgZnjgbLjgo0NCivjgZ/jgZHjgaAs44KG44GG44GYDQor44GC44GK44GuLOOBmOOCk+OBhOOBoQ0KK+OBhOOBmuOBi+OCjyzjga7jgbbjgYoNCivjgY/jganjgYYs44GL44Ga44GC44GNDQor44Gq44GL44KA44KJLOOBqOOBl+OChuOBjQ0KK+OBvuOBpOOBiizjgb7jgZXjgbXjgb8NCivjgYTjgarjgYzjgY0s44GX44KT44GE44GhDQor44Gr44GX44KC44GoLOOBl+OCh+OBhuOBhOOBoQ0KK+OBhOOBruOBhuOBiCzjgbLjgajjgZcNCivjgYrjga7jgafjgoks44Gm44Gk44KEDQor44GE44GX44GW44GLLOOBqOOBl+OBsuOBkw0KK+OBr+OBjuOCj+OCiSzjgZHjgpPjgZ7jgYYNCivjgbXjgovjgZ8s44G+44GV44KLDQor44GG44GI44GY44G+LOOBqOOBv+OBig0KK+OBrOOBvuOBnyzjgZfjgoXjgYbjgYTjgaENCivjgYjjgpPjgaks44G+44GV44Gy44KNDQor44GL44GM44KE44G+LOOBl+OCk+OChA0KK+OChuOCiuOCguOBqCzjgbLjgajjgZcNCivjgbXjgaEs44Gf44Gg44GKDQor44G144GY44GK44GNLOOBsuOCjeOBruOBtg0KK+OBleOBhOOBqOOBhizjgb7jgZXjgajjgZcNCivjgb7jgaTjgoLjgags44G/44Gk44GC44GNDQor44Gy44KN44GbLOOCiOOBl+OBi+OBpA0KK+OBsOOBsCzjgZjjgoXjgpPjgYTjgaHjgo0NCivjgZPjgbDjgoTjgZcs44Gy44KN44KG44GNDQor44GZ44Ga44GNLOOBvuOBleOBvw0KK+OBquOBi+OChOOBvizjgYvjgZrjgYoNCivjgY3jgZcs44Gy44KN44GXDQor44GC44GV44GuLOOBvuOBleOBi+OBmg0KK+OBiOOCk+OBqSzjgYLjgY3jgYoNCivjgYTjgZfjgbDjgZcs44Gg44GE44GUDQor44GL44GE44GgLOOBv+OBpOOBig0KK+OBhOOBkeOBmOOBvizjgbLjgafjgYLjgY0NCivjga/jgonjgaAs44Go44GX44GKDQor44Gv44G+44GuLOOBk+OBruOCgA0KK+OBi+OCj+OBhCzjgb/jgaHjgosNCivjgo/jgaAs44Go44GX44G+44GVDQor44GV44Go44GGLOOBsuOCjeOBlw0KK+OBn+OBquOBiyzjgZvjgYTjgZgNCivjgYLjgY/jgaQs44KI44GX44Gu44KKDQor44GE44Go44GGLOOBjeOCiOOBvw0KK+OBguOCk+OBqeOBhizjgYTjgo/jgZgNCivjgYLjgYTjgZbjgo8s44G144Go44GXDQor44GP44G844GfLOOBjeOCiOOBlw0KK+OBteOBi+OBhuOBvyzjgZXjgajjgZcNCivjgZfjgb/jgZos44Gy44Go44GXDQor44Gf44GL44Gv44GXLOOBleOBqOOBlw0KK+OBquOBv+OBjSzjgabjgaTjgo3jgYYNCivjga7jgZbjgo8s44KE44GZ44GXDQor44GT44GE44Gf44Gw44GXLOOBjeOCiOOBsuOCjQ0KK+OBn+OBpuOBhOOBlyzjgbLjgo3jgb8NCivjgYvjgo/jgYvjgb8s44GL44Ga44GKDQor44GT44Gw44KE44GXLOOBi+OBmuOBruOCig0KK+OBiuOBruOBmuOBiyzjgbLjgafjgYoNCivjgZ/jgZDjgaEs44G/44Gk44GQDQor44Gf44GL44Gv44GXLOOBvuOBleOBguOBjQ0KK+OBleOBqOOBhizjgoTjgZnjgbLjgo0NCivjgY/jgo/jga/jgoks44GX44KN44GGDQor44Gb44GoLOOBleOBqOOBlw0KK+OBlOOBkSzjgbLjgafjgY0NCivjgojjgZfjgoDjgoks44GN44KI44GXDQor44Gf44GL44KE44G+LOOBruOBtuOChuOBjQ0KK+OBleOBleOBjSzjgobjgY3jgYoNCivjgYvjga7jgYYs44GX44GS44GNDQor44Gf44GL44Gv44GXLOOBl+OBkuOBr+OCiw0KK+OBquOBjOOBiuOBiyzjgajjgoLjgobjgY0NCivjgZnjgZrjgY0s44Gy44Gn44GNDQor44KE44G+44GQ44GhLOOBguOBjeOCiQ0KK+OCguOCiizjgZXjgajjgosNCivjgZnjgZrjgY0s44GE44Gk44GKDQor44GG44GI44KA44KJLOOBvuOBleOBqOOBlw0KK+OChOOBtuOBr+OCiSzjgb/jgaTjgojjgZcNCivjgZfjgonjgYTjgZcs44GL44Ga44GNDQor44GN44GP44GfLOOBvuOBleOBruOBtg0KK+OBquOBi+OBhCzjgb/jgaTjga7jgooNCivjgY/jgonjgoLjgags44KG44Gf44GLDQor44GZ44G/44KI44GXLOOBsuOBp+OBig0KK+OBn+OBi+OBjizjgbLjgo3jgbLjgZUNCivjgZfjgofjgYbjgZgs44Gu44KK44GKDQor44GK44GV44GgLOOBvuOBleOChuOBjQ0KK+OBguOBleOBrizjgZXjgajjgZcNCivjgYTjgo/jgZUs44GN44KI44GXDQor44Gw44GwLOOChuOBn+OBiw0KK+OBsuOCjeOBnyzjgZXjgajjgosNCivjgbXjgZjjgoLjgags44G/44GV44GTDQor44GV44GuLOOBvuOBleOCiw0KK+OCguOBqOOBjSzjgoTjgZnjgobjgY0NCivjgYTjgajjgYYs44G+44GV44Gu44KKDQor44GG44GR44GM44KPLOOBteOBv+OBig0KK+OBhuOCgeOBsOOChOOBlyzjgYTjgZXjgYoNCivjgYTjgarjgajjgb8s44GL44Ga44KI44GXDQor44Gf44GL44KE44Gq44GOLOOBvuOBleOBguOBjQ0KK+OBr+OCiSzjgYTjgZXjgYoNCivjgarjgYvjga/jgoks44G244KT44KN44GGDQor44GV44GE44Gf44GRLOOBm+OBhOOBmA0KK+OBi+OBl+OChOOBvizjgbLjgo3jgZcNCivjgZXjgYvjgYQs44Go44KC44KG44GNDQor44GE44Go44GGLOOBruOCiuOBi+OBpA0KK+OBquOBi+OCgOOCiSzjgojjgZfjga7jgbYNCivjgYrjgYrjga7jgY4s44Gf44GR44GXDQor44GE44GL44G/LOOChuOBn+OBiw0KK+OBn+OBi+OBr+OBlyzjgZfjgpPjgYTjgaENCivjgZfjgYTjgaos44Go44G/44GKDQor44Gf44G+44Gu44GELOOBl+OCh+OBhuOBhOOBoQ0KK+OBj+OBvCzjgbLjgafjgYLjgY0NCivjgY3jgoDjgoks44Gf44GL44GXDQor44G744Gj44GfLOOBsuOBqOOBlw0KK+OBu+OBi+OCiizjgZ/jgYvjgobjgY0NCivjgZXjgajjgYYs44GC44GN44GKDQor44G744GX44GuLOOBl+OCheOBhuOBhOOBoQ0KK+OBi+OBtuOCieOBjizjgajjgZfjgbLjgo0NCivjgYrjgZXjgaAs44Go44GX44G144G/DQor44GZ44GI44Gy44KNLOOBn+OBi+OBig0KK+OCgOOCieOBi+OCjyzjgojjgZfjgb8NCivjgYTjgo/jgZXjgY0s44GR44KT44GYDQor44KE44G+44KA44KJLOOBl+OCk+OBmA0KK+OCguOCiuOBnyzjgZ/jgaTjgYoNCivjgYTjgZHjgaAs44KI44GX44Gu44KKDQor44KE44GG44GhLOOBsuOCjeOBlw0KK+OChOOBvuOBl+OBnyzjgYvjgZrjgbLjgacNCivjgo/jgZ/jgarjgbks44Gy44KN44GXDQor44GC44Gq44KTLOOBiOOBpOOBmA0KK+OBq+OBl+OBrizjgZ/jgaTjgo3jgYYNCivjgZPjgZfjgb/jgZos44KE44GZ44GKDQor44Gf44GL44Gv44GXLOOBi+OBmuOBig0KK+OBiOOBjOOCjyzjgajjgZfjgYoNCivjgoTjgb7jgZbjgY0s44Gf44Gk44Gy44KNDQor44GE44G+44Gc44GNLOOCiOOBl+OBteOChg0KK+OBmeOBmuOBjSzjgbLjgafjgY0NCivjgavjgZfjga/jgoks44KG44GG44GE44GhDQor44GK44GL44G5LOOBhOOBleOCgA0KK+OBleOBi+OBhCzjgb7jgZXjgbLjgo0NCivjgZ/jgaAs44Go44GX44GKDQor44GZ44GI44KI44GXLOOBv+OBjeOBig0KK+OBr+OChOOBlyzjgYTjgZ/jgosNCivjgZ/jgYvjga/jgZcs44GR44KT44GYDQor44GT44GC44GXLOOBr+OBmOOCgQ0KK+OCguOCiuOBi+OCjyzjgYjjgYTjgZcNCivjgYvjgajjgYYs44KE44GZ44GP44GrDQor44G+44GI44GwLOOBvuOBleOBsuOCjQ0KK+OChOOBrizjgZ/jgaTjgYoNCivjgYTjgajjgYYs44KI44GX44Gv44KLDQor44Gq44GL44GELOOBsuOCjeOBlw0KK+OBiuOBoOOBjuOCiizjgYvjgZrjgYoNCivjgYjjgpPjgaks44Gm44Gk44GKDQor44Gf44GR44GELOOChOOBmeOChuOBjQ0KK+OBquOBi+OBn+OBqyzjgb/jgaHjga7jgooNCivjgYTjgo/jgZXjgY0s44Go44KC44Gy44KNDQor44GL44KJ44GL44GVLOOBguOBjeOBsuOCjQ0KK+OBguOBleOBrizjgZHjgpPjgYTjgaENCivjgYTjgo/jgbbjgaEs44G+44GV44KLDQor44Gv44KT44GgLOOBqOOBiuOCiw0KK+OBpuOCieOBiizjgojjgZfjgobjgY0NCivjgZ/jgZHjgYQs44KI44GX44KC44GoDQor44Gv44GX44KC44GoLOOCiOOBl+OBvw0KK+OBv+OChOOBleOBiyzjgaTjgajjgoANCivjgabjgonjgaAs44GE44Gh44KN44GGDQor44GV44GL44GfLOOChOOBmeOChuOBjQ0KK+OBquOBjOOChCzjgYvjgaTjgb8NCivjga/jgZfjgoLjgags44GR44KT44GYDQor44GK44GK44GP44KJLOOBpOOBqOOCgA0KK+OBquOBi+OBleOBjSzjgb/jgaTjgZANCivjgY3jgorjga/jgoks44Go44GX44KG44GNDQor44GC44KJ44GELOOBl+OCheOCk+OBmA0KK+OBhOOCj+OBrizjgbLjgo3jgobjgY0NCivjga/jgaPjgajjgoos44Gy44KN44Gu44KKDQor44GZ44Ga44GNLOOBqOOBiuOCiw0KK+OBq+OBl+OBr+OCiSzjgbLjgo3jgZcNCivjgZXjgZXjgY0s44GX44Ga44GKDQor44Gv44Gq44G144GVLOOBpOOBqOOCgA0KK+OBruOBqeOBrizjgZ/jgaTjgobjgY0NCivjgYvjgo/jgbDjgZ8s44GP44Gr44GKDQor44GX44G/44GaLOOCiOOBl+OBquOBig0KK+OBquOBjOOBl+OBvizjgaTjgZDjgbLjgZMNCivjgoLjgoos44GL44Ga44GKDQor44GX44G/44GaLOOBl+OBkuOBguOBjQ0KK+OBsuOBleOChOOBmSzjgZHjgYTjgZ7jgYYNCivjgYvjgZ/jgYbjgoks44GX44GS44KG44GNDQor44Gf44GR44KA44KJLOOBguOBjeOBv+OBpA0KK+OBhOOBvuOBq+OBlyzjgb7jgZXjgagNCivjgYrjgYvjgaAs44GC44GN44Gy44GTDQor44Gq44GL44GILOOBiuOBleOCgA0KK+OBl+OCjeOBrizjgZjjgoXjgpPjgYTjgaENCivjgojjgZPjgoTjgb4s44Gu44G244GKDQor44GK44GL44GW44KPLOOBvuOBleOBsuOBkw0KK+OBi+OBvyzjga7jgorjgajjgZcNCivjgY/jgb7jgbks44G+44GV44GKDQor44GX44G/44GaLOOBn+OBpOOCjeOBhg0KK+OChOOBquOBjuOBleOCjyzjgZfjgofjgYbjgYTjgaENCivjgb7jgY3jga4s44KG44GG44GYDQor44GV44KPLOOCj+OBn+OCiw0KK+OBhuOBl+OCjeOBoCzjgY/jgavjgYoNCivjgb7jgaHjgaAs44Gk44GL44GVDQor44GT44Gw44KE44GXLOOBn+OBi+OBig0KK+OBl+OBkuOCgOOCiSzjgajjgZfjga/jgosNCivjgbLjgZDjgaEs44Gf44GL44GXDQor44GE44GE44Gs44G+LOOBvuOBleOChuOBjQ0KK+OBhOOBmuOBvyzjgb/jga7jgosNCivjga/jgoTjgZcs44Gy44KN44Go44GXDQor44KE44GOLOOBoeOBr+OCiw0KK+OBiuOBiuOBi+OCj+OCiSzjgY3jgojjgZ/jgZENCivjgbXjgY/jgYrjgZgs44GK44GV44KADQor44GG44GM44GY44KTLOOBvuOBleOBvw0KK+OBn+OBquOBuSzjgZfjgpMNCivjgZTjgZfjgb4s44G+44GV44Gy44GnDQor44GC44KT44Gp44GGLOOBsuOCjeOBlw0KK+OBiuOBoOOBvizjgobjgY3jgYoNCivjgYrjgYvjgZbjgY0s44GE44KP44GKDQor44GE44GX44GL44KPLOOBteOBv+OChuOBjQ0KK+OCgOOCieOChOOBvizjgb7jgZXjgZMNCivjga/jgoTjgZXjgYss44GR44GE44GYDQor44Gq44GL44GY44G+LOOBn+OBjw0KK+OBn+OBkeOCguOBqCzjgojjgZfjgb8NCivjgY3jgZ/jgZjjgb4s44GY44KF44KT44GTDQor44G/44GL44G/LOOBquOBvw0KK+OCj+OCieOBl+OBqizjgZjjgoXjgpPjgoQNCivjgY3jgoDjgoks44GX44KTDQor44GK44GW44KPLOOCiOOBl+OBi+OBmg0KK+OChOOBvuOCgOOCiSzjgbLjgajjgZcNCivjgojjgZfjgaAs44GX44GS44GNDQor44Gf44Gh44Gw44GqLOOBn+OBj+OCjeOBhg0KK+OBvuOBpOOCguOBqCzjga7jgorjga7jgZnjgZENCivjgb/jgZfjgb4s44Gy44Gn44GC44GNDQor44Gb44GNLOOBsuOCjeOBlw0KK+OBn+OBi+OBr+OBlyzjgoTjgZnjgbLjgZUNCivjgYrjgYrjgYTjgZEs44G+44GV44GXDQor44G144GY44KC44GoLOOBl+OCheOBhuOBmA0KK+OCiOOBl+OCgOOCiSzjga7jgbbjgbLjgZMNCivjgZPjgbDjgoTjgZcs44KB44GE44GYDQor44GK44GK44GM44G/LOOCiOOBl+OChuOBjQ0KK+OBi+OBhCzjgZfjgofjgYbjgZ/jgo3jgYYNCivjgYvjgYjjgaQs44G+44GV44Gv44KLDQor44KC44KN44GELOOBn+OBi+OBsuOCjQ0KK+OBv+OBmuOBrizjgYTjgY/jgYoNCivjgYrjgYrjgaTjgYss44GC44GN44Gy44GTDQor44GK44GK44GfLOOBi+OBiuOCiw0KK+OBm+OBjeOBrSzjgorjgoXjgYbjgZgNCivjgb/jgoTjgZDjgaEs44GL44Ga44Gf44GLDQor44KI44Gt44GgLOOBquOBu+OBkw0KK+OBu+OCiuOBhuOBoSzjgb7jgZXjgZMNCivjgYjjgZDjgaEs44GL44Gk44G/DQor44GG44GX44KN44G+44GkLOOBi+OBmuOBvw0KK+OBhOOBhOOBoCzjgobjgY3jgbLjgo0NCivjgojjgZfjgaAs44KI44GX44G/DQor44Gq44GL44GbLOOBguOBjeOBig0KK+OBmeOBmuOBjSzjgobjgYbjgZMNCivjgYrjgYTjgYvjgo8s44GI44GE44GTDQor44GL44KP44G5LOOBleOBpOOBkw0KK+OBn+OBq+OBluOCjyzjgZ/jgYvjgYoNCivjgYvjga3jgZMs44Gv44KL44KIDQor44G144GY44GK44GLLOOBkeOBhOOBkw0KK+OCgOOCieOBiuOBiyzjgaTjgojjgZcNCivjgYbjgazjgb4s44GR44GE44GTDQor44G/44KE44GRLOOBteOBjeOBkw0KK+OBquOBi+OCgOOCiSzjgaHjgYLjgY0NCivjgYrjgYrjgo8s44G+44GV44Gv44KLDQor44Gt44KC44GoLOOBhOOBoeOCjeOBhg0KK+OBq+OBl+OCgOOCiSzjgajjgoLjgbLjgZUNCivjgZ/jgaTjgb8s44GE44KP44GKDQor44GV44Go44GGLOOBguOBjeOBig0KK+OBmeOBruOBr+OCiSzjgajjgZfjgbLjgZMNCivjgYLjgZnjgb4s44GN44KI44GL44GaDQor44Gf44GL44GwLOOBruOBtuOBguOBjQ0KK+OCiOOBl+OCgOOCiSzjgZXjgajjgZcNCivjgYLjgbks44Gq44GK44GoDQor44GN44GP44GhLOOBkeOBhOOBmA0KK+OBquOBi+OCgOOCiSzjgYvjgZrjgb7jgZUNCivjga/jgoDjgoks44Gk44Go44KADQor44GZ44Ga44GNLOOBruOBtuOBsuOBqA0KK+OBi+OCj+OCgOOCiSzjgajjgZfjgoQNCivjgbLjgbPjga4s44Gy44GV44GIDQor44GN44Gf44GgLOOBvuOBleOBsuOCjQ0KK+OBleOBqOOBhizjgaTjga3jgYoNCivjgYvjgajjgYYs44GL44Ga44GKDQor44GE44Go44GGLOOChuOBhuOBmA0KK+OBteOBj+OBqOOBvyzjgb7jgZXjgosNCivjgoDjgo3jgZrjgb8s44G+44GV44Gy44KNDQor44KE44G+44Gq44GLLOOBmOOCheOCk+OBhOOBoQ0KK+OBiuOBi+OBoCzjgZHjgpPjgYTjgaENCivjgajjgYbjgZTjgYYs44Gf44GR44GXDQor44Gq44KK44GfLOOBn+OBi+OBlw0KK+OBhOOBkeOBluOBjSzjgZ/jgZHjgZcNCivjgYvjgo/jgbDjgZ8s44GX44KN44GGDQor44G+44Gk44GK44GLLOOBruOBtuOBig0KK+OBquOBi+OBoCzjgbLjgo3jgZcNCivjgZXjgajjgYYs44GX44KT44KEDQor44Gf44GR44GW44KPLOOCiOOBl+OBsuOCjQ0KK+OChOOBquOBjOOCjyzjgbLjgo3jgZcNCivjgoTjgb7jgZXjgY0s44Gu44KK44KG44GNDQor44GX44GM44GNLOOBruOCiuOBguOBjQ0KK+OChuOBvyzjgZ/jgZHjgZcNCivjgYrjgZbjgY0s44Gk44Go44KADQor44Gq44GM44GX44G+LOOBn+OBhOOBmeOBkQ0KK+OChOOBtuOBhuOBoSzjgbLjgZXjgYoNCivjgbvjgZ3jgoQs44Gy44GV44GXDQor44Gr44GX44GW44KPLOOBneOBhuOBmA0KK+OBr+OChOOBvyzjgojjgZfjgYoNCivjga/jgZvjgYzjgo8s44Gq44GK44G/DQor44GL44KP44GV44GNLOOBi+OBpOOBsuOBkw0KK+OBqOOCiOOBhOOBmuOBvyzjgZ/jgYvjgobjgY0NCivjgYrjgY/jgoDjgoks44G+44GV44GoDQor44KE44G+44GgLOOBruOBtuOBsuOCjQ0KK+OBq+OCjyzjgYjjgYTjgbLjgZMNCivjgavjgZfjgZbjgY0s44Gy44KN44GXDQor44GZ44GO44KC44GoLOOBl+OBkuOCiw0KK+OBiuOBiuOBleOCjyzjgajjgoLjgarjgYoNCivjgajjgaAs44Go44GX44GC44GNDQor44Gq44GL44GuLOOCiOOBl+OBi+OBpA0KK+OBv+OBhuOCiSzjgbLjgZXjgZcNCivjgoTjgb7jgZbjgY0s44Gq44GK44KG44GNDQor44GV44GL44KC44GoLOOBsuOCieOBjw0KK+OChOOBvuOBoCzjgb/jgaHjgZMNCivjgYTjga7jgYbjgYgs44GL44KI44GTDQor44KE44GZ44GELOOBvuOBleOCiA0KK+OBvuOBpOOBoCzjgobjgb8NCivjgYvjgZ/jgYrjgYss44GC44GR44G/DQor44GZ44Ga44GNLOOBkeOBhOOBkw0KK+OBr+OChOOBlyzjgZHjgYTjgZMNCivjga/jgb7jgb7jgaQs44KE44GZ44GTDQor44Gv44G+44GuLOOBiOOCig0KK+OBv+OBmuOBn+OBqyzjgb/jgojjgZMNCivjgZnjgb/jgZ8s44KC44Go44Gh44GLDQor44Gv44KE44GXLOOBvuOBjeOBkw0KK+OBqOOBj+OBquOBjCzjgobjgb/jgZMNCivjgYvjgajjgYYs44Gu44G244GTDQor44G+44Gk44GG44KJLOOBv+OBiOOBkw0KK+OBsuOCg+OBj+OBqizjgbLjgafjgZMNCivjgYLjgpPjgZbjgYQs44KI44GG44GTDQor44G144GL44G+44GhLOOBmeOBv+OBig0KK+OBv+OBleOBjSzjgZ/jgZHjgZcNCivjgoLjgaHjgZrjgY0s44Go44KI44Gy44GTDQor44GC44GK44KE44GOLOOBguOBjeOCiQ0KK+OBn+OBi+OBr+OBlyzjgobjgY3jgbLjgacNCivjgY3jgZss44GC44GN44KJDQor44GG44GI44KC44KKLOOBl+OBkuOCiw0KK+OBguOBmuOBvizjgb/jgYjjgZMNCivjgYrjgaDjgY/jgoks44Gy44KN44G/44GhDQor44Gf44Gq44GLLOOBsuOBleOBig0KK+OBqOOBhOOBn+OBqyzjgYvjgaTjgo3jgYYNCivjgoTjgb7jgZbjgY0s44GR44KT44GE44GhDQor44Gv44GX44KC44GoLOOBn+OBi+OBlw0KK+OBvuOBpOOBv+OChCzjgb7jgZXjgbLjgZMNCivjgbXjgZfjgb8s44Gh44GL44GoDQor44GN44KH44GG44KE44G+LOOBpuOCi+OBig0KK+OCiOOBl+OBoCzjgZHjgYTjgZMNCivjgYbjgovjgZfjgaks44GC44Gk44GTDQor44Gb44GKLOOBv+OBiOOBkw0KK+OBv+OBquOBi+OCjyzjgaTjgY3jgZMNCivjgbXjgZjjga4s44GL44Ga44KG44GNDQor44Gy44KN44GfLOOBn+OBi+OBlw0KK+OBiuOBiuOBnyzjgojjgZfjgb8NCivjgYrjgYrjgYws44G+44GV44Gu44KKDQor44Gq44GM44Gv44G+LOOBn+OBpOOBig0KK+OBmOOCk+OBrizjgoTjgZnjgY0NCivjgYTjgaHjgYvjgo8s44Gv44GY44KBDQor44Gv44KE44GXLOOBn+OBoOOBlw0KK+OBr+OBn+OChCzjgajjgZfjgobjgY0NCivjgbvjgorjgZPjgZcs44Gu44G244Gy44GTDQor44GL44GrLOOBguOBjeOBig0KK+OBu+OCk+OBoCzjgoLjgajjgbLjgZUNCivjgaTjgaHjgoQs44Go44G/44GKDQor44Gf44G+44GmLOOBv+OBpOOCiw0KK+OChuOBi+OCjyzjgYjjgYTjgZgNCivjgZXjgYvjgYQs44KG44GG44GYDQor44G/44KE44GYLOOChuOBhuOBhOOBoQ0KK+OBn+OCgOOCiSzjgbLjgajjgZcNCivjgYvjgo/jgZDjgaEs44Gy44Gn44G+44KLDQor44GV44GuLOOBvuOBleOBi+OBmg0KK+OBquOBi+OCgOOCiSzjgobjgYbjgYTjgaENCivjgZPjgbDjgoTjgZcs44KG44GN44GKDQor44GE44GgLOOBhOOBoeOCjeOBhg0KK+OBm+OBjeOCguOBqCzjgojjgZfjgbLjgo0NCivjgYvjgo/jgb7jgZ8s44GL44Ga44GKDQor44GP44G8LOOBsuOCjeOBlw0KK+OBn+OBi+OBrizjgoTjgZnjgbLjgo0NCivjgo/jgZ/jgarjgbks44KE44KI44GEDQor44GE44GL44KL44GOLOOBv+OBruOCiw0KK+OBleOBqOOBhizjgZ/jgaDjgZcNCivjgbLjgaDjgYss44KI44GX44Gy44GTDQor44KI44GX44GELOOBk+OBhuOBnuOBhg0KK+OBl+OBvuOCgOOCiSzjgYjjgYTjgo0NCivjgYrjgbMs44Go44GX44GKDQor44Gq44GL44GY44G+LOOBqOOBj+OBruOBtg0KK+OBu+OBl+OBrizjga7jgbzjgosNCivjgYvjgo/jgoLjgags44GY44KF44KT44GYDQor44Gr44GX44GgLOOChOOBmeOBsuOBpw0KK+OBl+OBv+OBmizjgb7jgZXjgYLjgY0NCivjgZ/jgoDjgoks44GY44KF44KTDQor44Go44KI44GX44G+LOOCiOOBl+OBv+OBpA0KK+OBiOOCk+OBqSzjgZ/jgYvjgYoNCivjgYrjgYzjgo8s44Gq44Gk44GC44GNDQor44GN44Gf44Gv44KJLOOBteOBv+OBig0KK+OBiuOBkOOBqyzjgZHjgpPjgZgNCivjgYrjgbbjgaEs44GR44GE44Ge44GGDQor44G/44KI44GXLOOBi+OBmuOBig0KK+OBhOOBkeOBrizjgZfjgpPjgYTjgaENCivjgYbjgYjjgb7jgaQs44GL44Gk44GC44GNDQor44G144GP44GW44GoLOOCiuOCheOBhuOBhOOBoQ0KK+OBguOBiuOBjSzjgZ/jgYvjgZcNCivjgZXjgoHjgZjjgb4s44GV44Gh44GKDQor44GN44Gp44G+LOOBkeOCk+OBmA0KK+OBk+OBoOOBhOOCiSzjgY3jgY/jgYoNCivjgbLjgZDjgaEs44Gf44Gk44GKDQor44G+44GI44GX44KNLOOBi+OBmuOBsuOCjQ0KK+OBn+OBquOBiyzjgZvjgYTjgZgNCivjgarjgYvjgYzjgo8s44KI44GG44GZ44GRDQor44GE44Gu44GG44GILOOChOOBmeOBsuOBpw0KK+OBqOOCiuOBhizjgb7jgZXjgYLjgY0NCivjgb7jgovjgoTjgb4s44Gq44GK44GNDQor44G+44Gk44GG44KJLOOBkeOCk+OBmA0KK+OBn+OCgeOBoeOBiyzjgYvjgYrjgosNCivjgZXjgZXjgY0s44GN44KH44GG44GTDQor44GK44GK44Gf44GNLOOBl+OCk+OBmeOBkQ0KK+OBiuOBjOOCjyzjgb7jgZPjgagNCivjgb7jgaTjgb8s44G+44GZ44GIDQor44GC44KK44G+44GkLOOBl+OBkuOBig0KK+OBk+OCieOBjyzjgobjgYbjgZ7jgYYNCivjgb/jgoTjgZfjgZ8s44G/44Gu44KLDQor44GK44Ga44GhLOOBv+OBpOOBig0KK+OBleOBi+OBjeOBsOOCiSzjgZ/jgYvjgZMNCivjgZXjgajjgYYs44GC44GN44KJDQor44Gy44KN44GbLOOBqOOCguOBkw0KK+OBpOOBoeOBoCzjgajjgZfjgYLjgY0NCivjga/jgZfjgoks44Gh44KIDQor44G144KN44KC44GoLOOBv+OBruOCiw0KK+OBk+OBleOBiyzjgYLjgY3jgbLjgo0NCivjgZ/jgZHjgYTjgaEs44KI44GG44GE44GhDQor44Gm44KJ44GgLOOCiOOBl+OBi+OBmg0KK+OBk+OBhOOBpyzjgbLjgafjgY0NCivjgZXjgYTjgajjgYYs44GX44KH44GG44GE44GhDQor44G/44KE44Gq44GMLOOBruOCiuOBsuOBkw0KK+OBq+OBl+OCgOOCiSzjgZfjgpPjgoQNCivjgZ/jgarjgYss44KG44GG44Ge44GGDQorLOOChuOBv+OBkw0KK+OChuOBj+OBsuOCjSzjgozjgYTjgZMNCivjgojjgZfjgo/jgoks44GY44KF44KTDQor44GC44GK44GNLOOCi+OBv+OBkw0KK+OBn+OBpuOBhOOBlyzjgobjgorjgZMNCivjgZ/jgZHjgaAs44Go44G/44GTDQor44KE44GZ44GgLOOBteOBmOOBkw0KK+OBguOBiuOBjSzjgbLjgafjgobjgY0NCivjgojjgZfjgaAs44Gq44GK44GTDQor44GC44Gg44GhLOOBguOBjeOBkw0KK+OBruOBkOOBoSzjgojjgZfjga7jgbYNCivjgo/jgZ/jgarjgbks44GX44GS44KG44GNDQor44Gf44GR44Go44G/LOOBk+OBhuOBhOOBoQ0KK+OBj+OCiuOCj+OBjSzjgb7jgZXjgY0NCivjgY3jgZ/jgZrjgoEs44KC44Go44Gy44GTDQor44GK44GV44GgLOOBqOOBl+OBig0KK+OBguOBl+OBjOOBhCzjgojjgZfjgZ/jgYsNCivjgZXjgYvjgZfjgZ8s44GN44KI44GXDQor44Gk44Gh44GgLOOBl+OCheOCk+OBhOOBoQ0KK+OBiuOBi+OBoCzjgb/jgaHjgYoNCivjgZ/jgarjgYss44Gy44Gn44Gh44GLDQor44GK44GK44Gf44GU44GXLOOBk+OBhuOBnuOBhg0KK+OBj+OCjeOBleOBiyzjgYjjgYTjgZgNCivjgZnjgZbjgY0s44GC44Gk44GXDQor44GL44Gt44G/44GkLOOBsuOCjeOChuOBjQ0KK+OBvuOBqCzjgYvjgZrjgobjgY0NCivjgajjgojjgbXjgY8s44G+44GV44GKDQor44GC44KJ44GELOOBsuOCjeOBi+OBmg0KK+OBteOBmOOBi+OCjyzjga7jgbbjgYLjgY0NCivjgojjgZPjgYos44Gf44GL44KI44GXDQor44GC44G+44GuLOOBr+OCi+OBig0KK+OBiuOBiuOBrizjgZ/jgYvjgbXjgb8NCivjgZnjgZrjgY0s44GC44GN44KI44GXDQor44GL44Go44GGLOOBvuOBleOChuOBjQ0KK+OBleOBhOOBqOOBhizjgb/jgaTjgYoNCivjgYrjgYYs44GL44Gk44G/DQor44G/44KE44GW44GNLOOBhOOBleOBig0KK+OBjeOChCzjgbXjgb/jgZ/jgb4NCivjgbXjgZjjgZ8s44GL44Ga44Gy44GTDQor44KA44GL44GELOOCiOOBhuOBhOOBoQ0KK+OBvuOBpOOCguOBqCzjgYvjgYrjgosNCivjgYvjgo/jgYQs44KG44GN44GKDQor44G+44Gk44KC44GoLOOBjeOCiOOBn+OBiw0KK+OBn+OBkeOBhuOBoSzjgorjgofjgYbjgZgNCivjgZPjgZjjgb4s44Gy44Gn44GKDQor44Gv44Gb44GM44KPLOOBn+OBpOOBig0KK+OBk+OBjCzjgoTjgZnjgYoNCivjgoTjgb7jgaAs44GT44GG44GE44GhDQor44GK44GK44GfLOOBv+OBruOCiw0KK+OChOOBvuOCguOBqCzjgZfjgpPjgZnjgZENCivjgZXjgY/jgonjgoLjgags44G144GY44GoDQor44KE44Gq44GO44GV44KPLOOBj+OBq+OBig0KK+OBteOBj+OBhCzjgZPjgYbjgZgNCivjgYvjgajjgYYs44GL44Ga44G/DQor44GE44KP44GfLOOChOOBmeOChuOBjQ0KK+OBteOBmOOCguOBqCzjgZ/jgaDjgbXjgZUNCivjgY3jga7jgZfjgZ8s44GC44GN44Gy44GTDQor44KE44G+44GgLOOBmOOCjeOBhg0KK+OBj+OCieOBvuOBiCzjgZPjgYbjgZgNCivjgY/jgonjgZ8s44Gf44GL44GXDQor44KI44GT44GELOOBteOBv+OBqOOBlw0KK+OBk+OBsOOChOOBlyzjgbLjgafjgoQNCivjgYvjgajjgYYs44KC44KK44KI44GXDQor44G+44GZ44GELOOBsuOBqOOBlw0KK+OBhuOCieOBnyzjgabjgovjgYLjgY0NCivjgZ/jgYvjga/jgZcs44G+44GV44Gy44KNDQor44GG44GX44GU44KBLOOBvuOBleOBn+OBiw0KK+OBr+OCieOBhCzjgZfjgpPjgZgNCivjgYbjgaDjgYzjgo8s44Go44GX44KN44GGDQor44Gf44GL44GOLOOBi+OBmuOChuOBjQ0KK+OBv+OChOOBluOBjSzjgZXjgajjgb8NCivjgoTjgb7jgoDjgoks44G+44GV44Gy44KNDQor44KE44G+44GO44GXLOOCiuOCheOBhuOBhOOBoQ0KK+OBk+OBvuOBpCzjgojjgZfjgZ/jgYsNCivjga/jgb7jgZDjgaEs44KG44GLDQor44KC44KKLOOBsuOCjeOBi+OBmg0KK+OChOOBvuOBoCzjgoTjgZnjga7jgooNCivjgYvjgYzjgo8s44G/44Gh44GKDQor44GN44GP44GhLOOBteOBv+OBjQ0KK+OBj+OBmCzjgoTjgZnjgZcNCivjgYTjgajjgYYs44Gy44GV44GC44GNDQor44GL44KP44GQ44GhLOOCiOOBl+OBi+OBmg0KK+OBguOCieOBjSzjgZfjgpPjgZnjgZENCivjgYrjgYvjgbks44Gy44KN44G/DQor44GT44G844KKLOOBl+OCk+OBhOOBoQ0KK+OBiuOBoSzjgYrjgZXjgoANCivjgb7jgovjgYos44Gv44GY44KBDQor44GV44Go44GGLOOBl+OCheOCk+OBmeOBkQ0KK+OBn+OBquOBiyzjgbLjgafjga7jgooNCivjgb7jgaTjgoTjgb4s44Go44GX44GKDQor44GK44GK44Gk44GLLOOBj+OBq+OBig0KK+OChOOBvuOCguOBqCzjgZHjgpPjgZgNCivjgbXjgZjjgYos44G/44Gk44GIDQor44Gu44KA44KJLOOBsuOBleOBn+OBiw0KK+OBsuOCjeOBmyzjga7jgorjgojjgZcNCivjgYLjgpPjgZbjgYQs44GX44GS44Gu44KKDQor44GK44GK44Gk44G8LOOBv+OBoeOCjQ0KK+OBleOBhOOBqOOBhizjgorjgoXjgYbjgZgNCivjgYTjgajjgYYs44GV44Go44GXDQor44KP44KJ44GV44KPLOOBjeOBj+OBig0KK+OBguOCieOBi+OCjyzjgoTjgZnjgarjgooNCivjgZTjgb8s44GY44KF44KTDQor44GI44KT44GpLOOBleOBoeOBig0KK+OCiOOBl+OBoCzjgb7jgZXjga/jgosNCivjgYbjgaHjgaAs44Gy44Gn44GKDQor44GC44GV44GE44GtLOOBpuOBpOOChA0KK+OBiuOBl+OBvizjgZfjgZLjgYoNCivjgZ/jgarjgYss44Gf44Gk44GKDQor44GK44GK44GTLOOBvuOBleOCjeOBhg0KK+OBhOOBmuOBpCzjgarjgYrjgosNCivjga/jgoTjgZcs44G+44GV44KG44GNDQor44G144GY44GNLOOBqOOBiuOCiw0KK+OBl+OBiuOBi+OBhCzjgYvjgZrjgbLjgZMNCivjgarjgYzjgbXjgaEs44GN44KI44Gk44GQDQor44G+44Gk44KC44GoLOOBn+OBhOOBhOOBoQ0KK+OBi+OBqOOBhizjgbLjgo3jgZcNCivjgo/jgZ/jgarjgbks44GR44GE44GYDQor44Gv44G+44GQ44GhLOOCiuOCheOBhuOBhOOBoQ0KK+OBi+OBreOBkyzjgobjgZ/jgYsNCivjgZXjgajjgYYs44Go44GX44GKDQor44GK44GK44GELOOBvuOBleOBjQ0KK+OBr+OChOOBlyzjgZvjgYTjgZgNCivjgY3jgb/jgaTjgYss44G+44GV44GKDQor44G144GP44GgLOOBvuOCguOCiw0KK+OBquOBi+OCgOOCiSzjgZ/jgaDjgZcNCivjgoTjgbDjgZcs44GR44KT44GYDQor44GT44Gw44KE44GXLOOBn+OBi+OChuOBjQ0KK+OBqOOBj+OBoCzjgajjgoLjgYvjgZoNCivjgZ/jgYvjga/jgZcs44GL44Gk44Gy44KNDQor44GE44Go44GGLOOBv+OBpOOBig0KK+OBruOBkOOBoSzjgojjgYbjgYTjgaHjgo3jgYYNCivjgYvjgo/jgaos44Gu44KK44GKDQor44Gq44GL44GuLOOBpOOChOOBkw0KK+OChOOBvuOBoCzjgb7jgZXjgZMNCivjgbLjgonjgb7jgaQs44Gd44GG44Gf44KN44GGDQor44GC44KJ44GELOOBqOOBl+OChuOBjQ0KK+OCiOOBl+OBrizjgYvjgYrjgooNCivjga/jgb7jgaAs44GL44Ga44GKDQor44GK44GK44GfLOOBqOOBl+OBsuOBkw0KK+OBl+OBsOOBnyzjgb7jgZnjgYLjgY0NCivjgo/jgYvjgoTjgb4s44GC44GN44Gy44KNDQor44G744GXLOOBjeOCiOOBlw0KK+OBv+OCjyzjgb7jgZXjgYoNCivjgZ/jgarjgYss44KG44GG44GYDQor44GL44Gq44KELOOBruOCiuOBsuOBkw0KK+OBn+OBkeOBquOBiyzjgZjjgpMNCivjgZXjgajjgYYs44Go44GX44KG44GNDQor44G/44Ga44GX44G+LOOBqOOCiOOBhuOBhOOBoQ0KK+OBpuOCieOBoCzjgZfjgZLjgosNCivjgoLjgorjgoQs44Gf44Gg44KG44GNDQor44GZ44GO44KE44G+LOOCguOBqOOBr+OCiw0KK+OBhuOBvyzjga/jgovjgYoNCivjgY3jgZDjgaEs44KI44GG44GE44Gh44KN44GGDQor44GG44KL44KP44GXLOOBn+OBkeOBlw0KK+OBsuOCieOBvuOBpCzjgb/jgaHjgYrjgY0NCivjgYTjgZrjga8s44Gv44KL44GKDQor44GE44Go44GGLOOBvuOBk+OBqA0KK+OBleOBqOOBhizjgb7jgZnjgYoNCivjgZfjgZLjga7jgbYs44GR44KT44GYDQor44KI44GX44KC44GoLOOBi+OBmuOBig0KK+OBl+OBsOOBnyzjgaTjgojjgZcNCivjgbXjgarjgZPjgZcs44GE44Gh44Ge44GGDQor44GZ44Gq44GgLOOChOOBmeOBmOOCjeOBhg0KKyzjgoTjgZnjgYoNCivjgY3jgY/jgb4s44Gq44GK44Gy44GTDQor44GZ44GoLOOBleOBqOOBlw0KK+OBq+OBl+OBluOCjyzjgbLjgafjgYoNCivjgZPjgbDjgoTjgZcs44G/44Gk44GTDQor44GL44KP44GU44GILOOBvuOBleOBsuOBkw0KK+OBhOOBmOOBvizjgbXjgb/jgYoNCivjgavjgZfjgYos44Gy44KN44GXDQor44Gr44GX44KE44G+LOOBruOBtuOChuOBjQ0KK+OBleOBhOOBqOOBhizjgojjgZfjgYLjgY0NCivjgYvjganjgo/jgY0s44Gy44KN44G/DQor44Gy44KN44GbLOOBn+OBi+OBig0KK+OBn+OBkOOBoSzjgZ/jgYvjgojjgZcNCivjgZ/jgYvjgaAs44Go44GX44Gv44KLDQor44KP44Gf44Gq44G5LOOBkeOCk+OBmA0KK+OBi+OBqOOBhizjgZfjgZLjgYLjgY0NCivjgarjgYvjga/jgoks44GP44Gr44GKDQor44GE44GX44GP44G8LOOCiuOCheOBhuOBhOOBoQ0KK+OChOOBvuOBoCzjgojjgZfjgYoNCivjgo/jgYvjgb7jgaQs44GT44GG44GYDQor44GL44KP44GX44G+LOOBsuOCjeOChuOBjQ0KK+OBi+OBn+OCguOBqCzjgZHjgpPjgZgNCivjgZ/jgYvjgoTjgb4s44GN44G/44Gy44GTDQor44Gk44Gh44GgLOOBn+OBpOOBlw0KK+OBn+OBoeOBsOOBqizjgbLjgafjgYoNCivjgZPjgbDjgoTjgZcs44GC44GN44KJDQor44Gk44GgLOOBqOOBl+OChuOBjQ0KK+OCguOCiuOBi+OCjyzjgobjgY3jgYoNCivjgYrjgY/jga4s44KI44GX44GKDQor44GE44G+44GELOOBvuOCguOCiw0KK+OCgOOCieOBiizjgZ/jgaDjgZcNCivjgZfjgoLjgoDjgoks44GY44KN44GGDQor44GI44KT44GpLOOBqOOBl+OBruOBtg0KK+OBu+OBl+OBj+OBvizjgb7jgZXjga/jgosNCivjgYvjgo/jgZss44GX44KT44GV44GPDQor44G+44Gh44GgLOOCgOOBreOBlw0KK+OBk+OBsOOChOOBlyzjgZ/jgaTjgYoNCivjga/jgaAs44Gy44KN44GXDQor44Gk44GP44GgLOOBvuOBleOBr+OCiw0KK+OBq+OBl+OBi+OCjyzjgZfjgofjgYYNCivjgbvjgpPjgaAs44Gy44KN44G/DQor44KP44GX44GK44GLLOOBqOOBl+OBsuOCjQ0KK+OCgOOCjeOBhCzjgojjgYYNCivjgoTjgZnjgaAs44G+44GV44GXDQor44KI44GX44GgLOOBsuOCjeOChuOBjQ0KK+OBu+OCiizjgYLjgaTjgZMNCivjgZPjgYbjgaAs44GT44GG44GI44GEDQor44GL44G+44GgLOOBiOOBhOOBmA0KK+OBhuOBiOOCgOOCiSzjgbLjgo3jgb8NCivjgb7jgaTjgbDjgoks44GL44Ga44KEDQor44G/44Gq44Go44GQ44GhLOOBl+OBkuOCiw0KK+OBj+OBjOOBpuOCkyzjgoTjgZnjgZcNCivjgYTjgo/jgZss44Gu44G244Gy44KNDQor44Gv44KE44GXLOOBv+OBpOOBsuOCjQ0KK+OBhOOBj+OBquOBvyzjgZfjgpPjgZgNCivjgYTjgajjgYYs44Gf44GL44GXDQor44GT44KE44G+LOOBsuOCjeOBv+OBoQ0KK+OBiuOBqOOBvuOCiyzjgojjgZfjgbLjgagNCivjgarjgYzjgYQs44KC44Go44Gv44KLDQor44GE44Go44GGLOOBvuOBk+OBqA0KK+OBhOOBvuOBhCzjgZ/jgaTjgosNCivjgb7jgZnjgaAs44Gf44GL44Gy44KNDQor44GL44KP44G5LOOCiuOCh+OBhuOBnw0KK+OBleOBqOOBhizjgZHjgYTjgZgNCivjgZXjgZMs44G+44GV44Gv44KLDQor44KA44GL44GELOOBmOOCheOCk+OBhOOBoQ0KK+OBiuOBl+OBvizjgY/jgZnjgZ/jgYsNCivjgaTjgaHjgoQs44GE44Ga44G/DQor44Gv44KE44GX44GQ44GhLOOBqOOBl+OBguOBjQ0KK+OBleOBqOOBhizjgZvjgYTjgYTjgaENCivjgoDjgonjgZXjgags44KG44GN44Gy44GTDQor44Gv44KL44KE44G+LOOBvuOBleOBig0KK+OBl+OBkuOCguOCiizjgZfjgoXjgpPjgYTjgaENCivjgbXjgarjgY0s44Gy44GV44GKDQor44KP44GgLOOBhOOBj+OBqA0KK+OBpOOBvOOBiyzjgZfjgpPjgZnjgZENCivjgajjgaAs44GY44KF44KT44GE44Gh44KNDQor44KE44G+44KA44KJLOOBn+OBoOOBguOBjQ0KK+OBhOOBl+OBkOOCjSzjgZfjgpPjgYTjgaENCivjgbXjgarjga/jgZcs44KG44GNDQor44GZ44Ga44GNLOOCiOOBl+OBig0KK+OCiOOBl+OBoCzjgY3jgb/jgbLjgo0NCivjgo/jgZ/jgarjgbks44Gk44GO44GKDQor44Gq44GL44Gr44GXLOOBn+OBi+OBv+OBpA0KK+OChOOBvuOCguOBqCzjgZjjgoXjgpPjgZgNCivjgYTjgZfjgYvjgo8s44G+44GV44KG44GNDQor44Gf44GR44GG44GhLOOBk+OBhuOBhOOBoQ0KK+OBiuOBj+OBrizjgZXjgajjgZcNCivjgaDjgaYs44GY44KF44KTDQor44Gf44G5LOOBvuOBleOBqOOBlw0KK+OChOOBjizjgorjgofjgYbjgYTjgaENCivjgojjgZfjgaAs44GL44Ga44GKDQor44G144KL44GfLOOBn+OBi+OChuOBjQ0KK+OBi+OCj+OBkOOBoSzjgorjgoXjgYbjgZ/jgo3jgYYNCivjga/jgZnjgZMs44KI44GX44Gu44KKDQor44Gq44GM44G/44GtLOOBl+OCheOCk+OBmA0KK+OBn+OBkeOBl+OBnyzjgZXjgajjgZcNCivjgYLjgYvjgYos44GL44Ga44KG44GNDQor44KP44GN44KC44GoLOOBn+OBi+OBlw0KK+OBn+OBleOBiyzjgZHjgpPjgZgNCivjgarjgYvjgZfjgb4s44KE44GZ44KI44GXDQor44Gf44GR44Gq44GLLOOBsuOCjeOBguOBjQ0KK+OChOOBvuOBl+OBnyzjgarjgYrjgbLjgZMNCivjgY/jgbzjgYgs44Gm44KL44GKDQor44GK44GQ44GXLOOBl+OCh+OBhuOBhOOBoQ0KK+OBguOBleOBiyzjgZfjgZLjgajjgZcNCivjgYjjgZDjgaEs44Gy44KN44KI44GXDQor44GK44GK44GV44GNLOOBvuOBk+OBqA0KK+OBiuOBj+OBoCzjgYvjgZrjgYoNCivjgYrjgY/jgoDjgoks44GL44Ga44KNDQor44GL44Gq44G+44KLLOOCiOOBl+OBsuOBkw0KK+OBjeOBruOBl+OBnyzjgYrjgZXjgoANCivjgZXjgZXjgY0s44GN44KI44Gy44GnDQor44Gf44GL44GuLOOBn+OBpOOBig0KK+OBr+OBl+OBoCzjgZfjgZLjgosNCivjgbvjgZcs44KG44GG44GZ44GRDQor44G/44Ga44GuLOOBi+OBpOOBsuOBkw0KK+OBv+OBpOOBr+OBlyzjgZ/jgaTjgoQNCivjgoLjgajjga/jgZcs44G+44GV44GXDQor44KE44G+44GgLOOBpuOBpOOBmA0KK+OBquOBjOOBrizjgb7jgZXjgobjgY0NCivjgYTjgZfjgYQs44KG44GN44Gy44KNDQor44GL44KB44GgLOOBi+OBiuOCiw0KK+OBjeOBr+OBnyzjgZ/jgZHjgbLjgacNCivjgZPjgbDjgoTjgZcs44GK44GV44KADQor44GX44KJ44G144GtLOOBn+OBi+OCiOOBlw0KK+OBquOBpOOBr+OCiSzjgbLjgo3jgYLjgY0NCivjgavjgZfjga/jgoks44KE44GZ44Gy44GVDQor44Gv44GX44GwLOOBn+OBj+OBig0KK+OBsuOBl+OBrOOBvizjgbLjgo3jgbXjgb8NCivjgbLjgbPjgoQs44GX44KT44Gf44KN44GGDQor44G/44KELOOBsuOBp+OBr+OCiw0KK+OCgOOCieOBi+OBvyzjgbXjgb/jgYoNCivjgoDjgonjgZ8s44Gv44GY44KBDQor44KP44Gf44Gq44G5LOOBl+OCh+OBhuOBhOOBoQ0KK+OBiuOBiuOBq+OBlyzjgbLjgo3jgYLjgY0NCivjgZ/jgZHjgZfjgZ8s44Gy44KN44GXDQor44Gk44Gw44GN44KC44GoLOOChOOBmeOBlw0KK+OBr+OBvuOBiuOBiyzjgZ/jgZHjgYoNCivjgb/jgZrjga4s44Go44KI44Gf44GLDQor44GC44G5LOOBsuOCjeOBvw0KK+OBguOCieOBhOOBlyzjgb7jgZXjgb8NCivjgZXjgajjgYYs44G+44GV44GC44GNDQor44GV44KP44GuLOOBm+OBhOOBluOBtuOCjeOBhg0KK+OBl+OCguOBmOOCh+OBhizjgZ/jgaDjgb8NCivjgZ/jgYvjgaAs44GL44Ga44Gy44GnDQor44Gq44GM44GfLOOChOOBmeOBsuOCjQ0KK+OBq+OBl+OBr+OBnyzjgb7jgZXjgbXjgb8NCivjga/jgoTjgZcs44Gd44GG44GE44GhDQor44G744Gd44GL44KPLOOBguOBjeOCiQ0KK+OBguOBiuOBjSzjgb/jgY3jgajjgZcNCivjgojjgZfjgaAs44Gy44KN44Go44GXDQor44KP44Gf44Gq44G5LOOBn+OBi+OBig0KK+OBhOOCj+OBleOCjyzjgZ/jgYvjga/jgosNCivjga7jgZss44GZ44GI44GKDQor44Gy44KJ44GX44GfLOOBsuOCjeOChOOBmQ0KK+OCiOOBl+OBluOCjyzjgbLjgafjgYoNCivjgoDjgajjgYYs44GR44GE44Ge44GGDQor44G/44KP44GG44KJLOOBsuOBp+OBguOBjQ0KK+OBjeOBj+OBoSzjga/jgZjjgoENCivjgYjjgZ7jgYgs44Gy44KN44G/DQor44GE44GX44GL44KPLOOBn+OBkeOBlw0KK+OBhOOBoeOBi+OCjyzjgZ/jgYvjgZcNCivjga/jgonjgaAs44KI44GX44Gf44GLDQor44KA44KJ44GfLOOCiOOBl+OBqA0KK+OBhOOBqOOBhizjgb/jgY3jgYoNCivjgbvjgZfjgaos44GR44GE44KEDQor44Go44GP44GgLOOBruOCiuOBig0KK+OBn+OBkOOCiizjgYvjgZrjgojjgZcNCivjgZXjgZXjgY0s44Go44KC44KG44GNDQor44Gf44G+44KLLOOBr+OCi+OBig0KK+OBq+OBl+OBr+OBlyzjgZfjgZLjgYoNCivjgZjjgaTjgYvjgo8s44GL44Ga44Gy44GTDQor44GZ44Ga44GNLOOBleOBhOOBoQ0KK+OBiuOBiuOBq+OBlyzjgY3jgb/jgZMNCivjgarjgYzjgZXjgY0s44KG44GG44GTDQor44GE44GE44GgLOOBsuOBp+OBvw0KK+OBn+OBi+OBrizjgb7jgZXjgbLjgo0NCivjgbLjgZXjga4s44Go44GX44Gk44GQDQor44GE44Gu44GG44GILOOBsuOBp+OBjQ0KK+OBhOOBl+OBj+OCiSzjgb7jgZXjgobjgY0NCivjgYLjgY3jgoTjgb4s44GT44GG44GYDQor44GE44Gh44GL44KPLOOBm+OCk+OCig0KK+OBjeOBjOOCjyzjgZPjgYbjgYTjgaENCivjgZXjgYTjgajjgYYs44Gy44KN44KG44GNDQor44KI44GgLOOBv+OBjeOBig0KK+OBguOCieOBjSzjgobjgYbjgZgNCivjgZnjgY7jga/jgoks44Gy44Gn44Gy44GVDQor44GL44KP44GQ44GhLOOBpuOBhOOBmA0KK+OBv+OChCzjgb7jgZXjgbLjgZMNCivjgYTjgZHjgYos44Gy44KN44KG44GNDQor44GV44GP44KJ44GELOOBteOBmOOBig0KK+OBk+OBl+OBrizjgojjgYbjgZnjgZENCivjgY3jgY/jgYvjgo8s44GL44Ga44GKDQor44KG44GC44GVLOOBn+OBi+OBlw0KK+OBmeOBmuOBjSzjgobjgYbjgZgNCivjgb7jgZnjgaAs44GX44KT44Gf44KN44GGDQor44GC44KJ44GELOOChOOBmeOBig0KK+OBhOOBkeOBoCzjgajjgZfjgYoNCivjgY3jgZks44GC44GN44KJDQor44GG44GX44KE44G+LOOCjOOBhA0KK+OBi+OBvuOBnyzjgYjjgaTjgZcNCivjgYbjgZXjgb8s44GN44KI44GXDQor44Gq44GL44GuLOOBn+OBkeOBlw0KK+OBi+OBjeOBi+OCjyzjgZjjgoXjgpPjgYTjgaENCivjgY3jgZjjgb4s44Gy44KN44KG44GNDQor44KA44GL44GELOOBvuOBleOCiOOBlw0KK+OBquOBjOOChOOBvizjgb7jgZXjgZMNCivjga/jgaPjgajjgoos44G+44GV44GKDQor44G/44GX44G+LOOBpOOCiOOBlw0KK+OBlOOBqOOBhizjgY/jgavjgajjgZcNCivjgYTjgajjgYYs44Gy44KN44KG44GNDQor44GK44GM44GfLOOBi+OCiOOBkw0KK+OBj+OBleOBsCzjga/jgovjgobjgY0NCivjgabjgonjgYgs44Gy44GV44GoDQor44G744KT44GgLOOBruOCiuOBig0KK+OBguOBj+OBn+OBjOOCjyzjgb/jga7jgosNCivjgb/jgoTjgZPjgZcs44KE44GZ44GIDQor44G144GP44GX44G+LOOBkeOBhOOBmeOBkQ0KK+OBl+OBruOBmuOBiyzjgajjgoLjgZMNCivjgYrjgYrjgZ/jgY0s44GX44KH44GG44GYDQor44Gq44GM44G+44GkLOOBm+OBhOOBhOOBoeOCjeOBhg0KK+OBguOCieOBhCzjgb7jgZXjgosNCivjgb7jgaTjgaAs44GV44Gh44KIDQor44G144GY44GfLOOBguOBpOOBvw0KK+OBi+OBv+OBkOOBoSzjgbLjgo3jgYLjgY0NCivjgYvjgajjgYYs44Gy44Go44GXDQor44KE44G+44GW44GNLOOBn+OBkeOBruOCig0KK+OBhuOCgeOBn+OBqyzjgYLjgaTjgZMNCivjgarjgovjgZss44GY44KF44KT44GTDQor44GP44G8LOOBj+OBq+OBig0KK+OBj+OCieOBnyzjgbLjgo3jgobjgY0NCivjgZPjgpPjgaks44Gm44KL44GKDQor44Gf44GR44GG44GhLOOBv+OBjeOChA0KK+OBhOOBruOBhuOBiCzjga7jgorjgYoNCivjgZ/jgYvjgaAs44KI44GX44GL44GaDQor44GC44GP44GkLOOBi+OBpOOChuOBjQ0KK+OBqOOCiuOBhCzjgbLjgo3jgb8NCivjgoLjgorjgYrjgYss44KG44G/44GTDQor44GL44GP44Gf44GrLOOBvuOBquOBtg0KK+OBn+OBkeOBhOOBoSzjgaHjgYjjgZMNCivjgZ/jgYQs44GR44GE44GTDQor44Gk44Gh44KELOOBvuOBleOBteOBvw0KK+OBvuOBmeOBoCzjgb7jgZXjgZ/jgYsNCivjgYvjgpPjgaAs44Gy44GV44GKDQor44KE44G+44GG44KJLOOChOOBmeOCiOOBlw0KK+OBjeOBruOBl+OBnyzjgZfjgZLjgb/jgaQNCivjgbvjgZXjgYss44GP44Gr44GKDQor44G+44KL44GK44GLLOOBsuOBp+OChuOBjQ0KK+OBi+OBvuOBnyzjgbLjgo3jgZcNCivjga/jgZ/jgarjgYss44G+44GV44G/DQor44GP44KN44GvLOOCiOOBhuOBkw0KK+OBqOOBpOOBiyzjgojjgYbjgZMNCivjgYTjgZfjgYQs44G144KIDQor44KC44KK44GfLOOBvuOBoQ0KK+OBu+OCk+OBvizjgZfjgZLjgosNCivjgYLjgonjgYvjgY0s44KI44GX44Go44KCDQor44Gf44GRLOOBn+OBkeOBsuOBkw0KK+OBhOOBmuOBr+OCiSzjgarjgYrjgYvjgZoNCivjgbLjgZXjgajjgb8s44Gf44KN44GGDQor44GZ44Ga44GNLOOCiOOBl+OBsuOCjQ0KK+OBq+OBl+OBquOBiyzjgbLjgZXjga7jgooNCivjgb/jgZrjga4s44GT44GG44Ge44GGDQor44KC44KK44KA44KJLOOBguOBjeOCiQ0KK+OBn+OBi+OBr+OBlyzjgajjgZfjgYvjgZoNCivjgZfjgZLjgajjgoEs44KI44GX44GC44GNDQor44GV44Go44GGLOOChuOBhuOBmA0KK+OBvuOBiOOBi+OCjyzjgb7jgZXjgb8NCivjgojjgZfjgYQs44Go44GX44Gu44KKDQor44G744Gd44KELOOBsuOBp+OBsuOBkw0KK+OBleOBi+OCguOBqCzjgYvjgZrjgYoNCivjgZPjgYTjgZrjgb8s44GX44GS44G/DQor44Gr44GXLOOChOOBmeOBteOBvw0KK+OBi+OBreOBkyzjgYLjgY3jgokNCivjgZnjgb/jgY/jgoks44GX44KH44GG44G444GEDQor44KI44GT44GKLOOBn+OBi+OBig0KK+OBleOBleOBjSzjgYvjgZrjgYoNCivjga/jgoTjgZcs44GC44GN44KJDQor44Gf44Gq44GLLOOBjeOCiOOBlw0KK+OBguOBjeOChOOBvizjgajjgb/jgYoNCivjgZXjgYTjgZks44KI44GX44GL44GaDQor44Gu44GM44G/LOOBm+OBhOOBmA0KK+OBqOOCiOOBl+OBvizjgZfjgoXjgYbjgYTjgaHjgo3jgYYNCivjgZfjgpMs44Gf44GL44GXDQor44G144GN44GuLOOCguOCiuOCiOOBlw0KK+OBhOOBkeOBoCzjgYvjgZrjgY3jgaENCivjgYrjgaDjgo/jgoks44KK44GkDQor44Gf44GL44Gv44GXLOOBqOOBl+OBi+OBpA0KK+OBkeOBhOOBvizjgZjjgoXjgpMNCivjgZfjgb/jgZos44GT44GG44GYDQor44GE44G+44GE44Ga44G/LOOBqOOCguOBmA0KK+OCguOCiuOBnyzjgobjgb/jgZMNCivjgoLjgoos44KE44GZ44G/DQor44G+44GI44GL44KPLOOChOOBmeOBi+OBmg0KK+OChOOBquOBjuOBoCzjgZnjgZnjgoANCivjgoDjgonjgoLjgags44Gy44KN44GXDQor44GZ44Ga44GNLOOBsuOCjeOBlw0KK+OBu+OBneOBiCzjgb7jgZXjgbLjgZMNCivjgYTjgZfjgY/jgoks44Gb44GE44GYDQor44Gy44KN44GL44KPLOOChuOBhuOBmA0KK+OBi+OCieOBl+OBvizjgZ/jgYvjgZcNCivjgb7jgaHjgaAs44GX44KT44GE44GhDQor44KC44KK44KE44G+LOOBsuOBleOBruOCig0KK+OBn+OBkeOCgOOCiSzjgabjgaTjgZ7jgYYNCivjgaTjgYvjgoLjgags44GC44GN44G144G/DQor44KE44G+44GQ44GhLOOBsuOCjeOBsuOBqA0KK+OBneOCgeOChCzjgYLjgY3jgYoNCivjgarjgYvjgZTjgoEs44Gy44Gn44GKDQor44GE44KP44Gq44GMLOOBkeOBhOOBmeOBkQ0KK+OBm+OBjeOChCzjgZHjgpPjgZgNCivjgabjgonjgYQs44GL44Ga44Gy44KNDQor44Gf44Gq44GLLOOBsuOBp+OBig0KK+OBm+OBjeOChCzjgZjjgoXjgpPjgo3jgYYNCivjgZXjgY/jgonjgYQs44GI44G/44GTDQor44GE44Gd44G5LOOBvuOBpOOBn+OCjeOBhg0KK+OBvuOBpOOBiuOBiyzjgZ/jgYvjgbLjgZMNCivjgYTjgaEs44G+44GV44Gu44KKDQor44KE44G+44KC44GoLOOBl+OCjeOBhg0KK+OBp+OBkOOBoSzjgZ/jgYvjgajjgZcNCivjgbLjgonjgb7jgaQs44KI44GX44GKDQor44G/44Ga44GuLOOBhOOBleOCgA0KK+OBqOOBv+OBquOBjCzjgb7jgZXjgbLjgo0NCivjgZ/jgYvjgZfjgb4s44Gy44Go44GXDQor44Gu44GM44G/LOOBsuOCjeOBlw0KK+OBiuOBiuOBpCzjgbLjgo3jgbXjgb8NCivjgZPjgbDjgoTjgZcs44GR44KT44GE44GhDQor44Gm44KJ44GgLOOBqOOBl+OBi+OBmg0KK+OBleOBhOOBqOOBhizjgZ/jgaTjgoQNCivjgYLjgZXjga4s44Gf44GL44KEDQor44GX44KC44KA44KJLOOBruOCiuOBqOOBlw0KK+OBiuOBiuOBhOOBlyzjga7jgorjgojjgZcNCivjgZ/jgarjgYss44Gk44Gt44GKDQor44G+44Gk44KC44GoLOOBjeOCiOOBlw0KK+OBsuOCieOBvuOBpCzjgZfjgZLjgosNCivjgZ/jgZHjgYbjgaEs44G/44Gu44KLDQor44GX44GS44Gv44KJLOOBpuOCi+OBvuOBlQ0KK+OBiuOBi+OCguOBqCzjga/jgZjjgoENCivjgoDjgonjgoTjgb4s44KC44Go44GTDQor44GT44G+44Gk44Gw44KJLOOBl+OBmuOBig0KK+OBiOOBsOOBnyzjgZHjgpPjgZgNCivjgYrjgYrjgZ8s44GU44KN44GGDQor44Gm44KJ44GKLOOBsuOCjeOChuOBjQ0KK+OBiuOBiuOBleOCjyzjgb7jgZXjgosNCivjgYvjgo/jgZfjgb4s44Gf44Gk44G/DQor44GC44KJ44GELOOBvuOBleOBlw0KK+OBr+OBl+OBmuOCgSzjgYLjgY3jgokNCivjgb/jgZrjgZfjgb4s44GT44GG44GYDQor44Gy44KJ44G+44GkLOOBiOOBpOOBig0KK+OBiuOBj+OCgOOCiSzjgojjgZfjgZMNCivjgb/jgZrjgarjgYss44GT44GG44GXDQor44G744KK44GG44GhLOOBl+OCheOBhuOBhOOBoQ0KK+OBn+OBjeOCguOBqCzjgajjgZfjgYoNCivjgoTjgZnjgbAs44GT44GG44GYDQor44GN44Gf44GuLOOCguOBqOOBruOBtg0KK+OBq+OBl+OBoCzjgobjgY3jgYoNCivjgYTjgZfjgYvjgo8s44Go44GX44G/DQor44GK44GK44GwLOOBsuOBleOBig0KK+OBi+OBl+OCj+OBjizjgYvjgZrjgobjgY0NCivjgZXjgajjgYYs44GK44GV44KADQor44G+44Gk44GgLOOBguOBjeOBig0KK+OBk+OCgOOCjSzjgarjgYrjgY0NCivjgoDjgonjgZ8s44Gy44Gn44KG44GNDQor44GV44GV44GM44KPLOOBi+OBmuOBig0KK+OBleOBn+OBkSzjga/jgovjgajjgZcNCivjgY/jgo/jga4s44Gy44GV44GKDQor44GU44Go44GGLOOBi+OBpOOBvw0KK+OBteOBmOOBhCzjgZfjgpPjgYTjgaENCivjgb/jgZrjgZPjgZcs44GR44KT44GE44GhDQor44G144GY44G+44GNLOOBi+OBmuOChA0KK+OBhOOBp+OBnyzjgbLjgajjgZcNCivjgarjgYvjgaTjgYss44Gf44GL44GXDQor44GG44KT44GuLOOBn+OBkeOBvw0KK+OBmeOBmuOBjSzjgYvjgZrjgbLjgo0NCivjga/jgb4s44Gy44KN44GXDQor44Go44G/44GfLOOBn+OBi+OBig0KK+OBn+OBq+OBpCzjgobjgYbjgZQNCivjgZnjgZrjgY0s44G+44GV44G/44GhDQor44GK44GP44KA44KJLOOBoeOCiOOBmA0KK+OBteOBj+OBl+OBvizjgYvjgZrjgbLjgZMNCivjgYrjgYrjga/jgZcs44Gy44GL44KLDQor44KE44G+44GX44GfLOOBn+OBi+OBig0KK+OBi+OCj+OBvyzjgZvjgYTjgYTjgaENCivjga/jgovjgZ8s44GR44KT44GE44Gh44KNDQor44G/44KE44KC44GoLOOBsuOCjeOBlw0KK+OBpOOBmOOBnyzjgobjgYbjgZMNCivjgYTjgb7jgoDjgoks44G+44GV44GKDQor44GV44Go44GGLOOBleOBtuOCjeOBhg0KK+OBquOBi+OBmOOBvizjgobjgY3jgZMNCivjgZfjgYTjga4s44GX44GS44GKDQor44GU44Go44GGLOOBv+OBruOCiw0KK+OBi+OBqOOBhizjgoLjgajjga/jgosNCivjgarjgYzjgYQs44Gh44GI44GTDQor44GG44Gh44GuLOOBguOBpOOBlw0KK+OBiOOBhOOBmOOBvizjgYrjgZXjgoANCivjgoTjgb7jgarjgYss44GT44GG44GYDQor44Gq44GL44KA44KJLOOBruOBtuOBig0KK+OBmeOBmuOBjSzjgoTjgZnjgobjgY0NCivjgZvjgoDjgoks44KK44KF44GG44GE44GhDQor44Gq44GL44GM44KPLOOBi+OBpOOBsuOCjQ0KK+OBn+OChCzjgZ/jgYvjgZcNCivjgoDjgonjgYvjgb8s44Gy44KN44Gu44KKDQor44GE44GX44GL44KPLOOBk+OBhuOBhOOBoQ0KK+OBm+OBjeOBkOOBoSzjgZfjgofjgYbjgYTjgaHjgo3jgYYNCivjgYrjgYrjga4s44KI44GX44KG44GNDQor44GK44GE44GL44KPLOOBqOOBl+OChA0KK+OBhOOCj+OBhCzjgY/jgavjgoTjgZkNCivjgYLjgZXjgbIs44GR44KT44GYDQor44GU44Go44GGLOOBi+OBiuOCiw0KK+OBi+OBreOBn+OBkSzjgYvjgarjgoENCivjgYbjgYjjgb7jgaQs44Go44GX44Gu44KKDQor44G144GP44GX44G+LOOBsuOCjeOBmA0KK+OBteOBj+OBoCzjgZ/jgYvjgobjgY0NCivjgZnjgZrjgY0s44GN44KH44GG44GTDQor44GK44GQ44KJLOOChuOBjeOBsuOBkw0KK+OBsuOCieOBpyzjga7jgbbjgYvjgZoNCivjgYrjgZfjgZIs44Gf44GE44GhDQor44G+44Gk44KC44GoLOOBiOOCiuOBkw0KK+OBleOBleOBjSzjgYjjgaTjgYoNCivjgZTjgpPjgaAs44G+44GV44KLDQor44G+44Gk44GK44GLLOOBm+OBhOOBmA0KK+OBhuOCgeOBluOCjyzjgb7jgZXjgaTjgZANCivjgavjgZfjgYos44GL44Ga44Gq44KKDQor44GT44GY44G+LOOChuOBhuOBnuOBhg0KK+OBn+OBq+OBkOOBoSzjgojjgZfjgaTjgZANCivjgYrjgYrjgY7jgZks44Gy44KN44GXDQor44GV44Gg44Gy44GVLOOBk+OBhuOBhOOBoQ0KK+OBteOBmOOCj+OCiSzjgoLjgorjgYoNCivjga/jgaPjgajjgoos44Gq44GK44KG44GNDQor44GL44G+44GfLOOBqOOBl+OBig0KK+OBqOOBsCzjgb7jgZPjgagNCivjgoTjgb7jgaAs44Gf44Gg44Gy44KNDQor44KE44G+44KC44GoLOOBv+OBjeOBig0KK+OBn+OBkeOBhuOBoSzjgZ/jgZHjgZcNCivjgYLjgonjgY0s44Gy44Gn44G144G/DQor44Gr44GX44GKLOOBm+OBpOOBkw0KK+OCguOCiuOBhuOBoSzjgZXjgarjgYgNCivjgYTjgo/jgZ8s44Gy44Gn44GC44GNDQor44GV44GV44GNLOOBvuOBleOCjeOBhg0KK+OBvuOBiOOBjOOCjyzjgoTjgZnjgaTjgZANCivjgbXjgY/jgavjgZcs44GL44Ga44Gu44G2DQor44GG44GI44GgLOOBqOOCguOCiA0KK+OChOOBvuOBjuOBlyzjgb7jgZPjgagNCivjgYrjga4s44GR44KT44GYDQor44G144GY44GfLOOBteOBj+OBjeOBoQ0KK+OBjeOBn+OCgOOCiSzjgojjgZfjgb/jgaQNCivjgojjgZfjga/jgoks44KG44KK44GTDQor44GE44KP44GV44KPLOOBn+OBj+OBvw0KK+OBk+OBvuOBpCzjgZ/jgaTjgojjgZcNCivjgZ/jgavjgoDjgoks44Gy44KN44GC44GNDQor44GT44GV44GLLOOBsuOBleOBn+OBkQ0KK+OBn+OBl+OBvizjgb7jgZXjgobjgY0NCivjgavjgZfjgYrjgYss44GL44Gk44KG44GNDQor44GZ44Ga44GNLOOBqOOBl+OBig0KK+OBlOOBqOOBhizjgoTjgZnjgbLjgokNCivjgYvjgo/jga/jgoks44GY44KF44KT44GE44GhDQor44Gf44GY44G+LOOBl+OCh+OBhuOBmA0KK+OBi+OCk+OBrizjgYLjgY3jgYoNCivjgYvjgZ/jgZfjgb4s44GX44KT44KEDQor44Gv44GX44KC44GoLOOBv+OBmeOBmg0KK+OBquOBi+OBoCzjgbLjgo3jgZcNCivjgYvjgZXjga/jgoks44Gb44GE44GE44GhDQor44Gm44KJ44KC44GoLOOBn+OBi+OBguOBjQ0KK+OCj+OBi+OBvuOBpCzjgb7jgarjgb8NCivjgYTjgajjgYYs44Go44GX44Gk44GQDQor44KP44GgLOOBsuOBp+OBvw0KK+OBn+OCk+OBmCzjgbLjgo3jgYLjgY0NCivjgYrjgYrjgaTjgYss44KB44GQ44G/DQor44Gk44GY44KC44GoLOOBkeOBhOOBhOOBoQ0KK+OBm+OCiuOBluOCjyzjga7jgbbjga/jgosNCivjgajjga7jgZXjgY0s44G144G/44GIDQor44Gf44GL44GOLOOBv+OBoeOBkw0KK+OBiuOBteOBoSzjgYvjgaTjgarjgooNCivjgYLjgb7jga4s44G/44Gh44GKDQor44Gq44GL44KA44KJLOOBguOBjeOCiQ0KK+OBn+OBsOOBnyzjgobjgYbjgZgNCivjgajjgojjgZrjgb8s44G+44GV44GC44GNDQor44GX44KF44GP44KELOOCiOOBl+OCjeOBhg0KK+OBn+OBi+OBrizjgZfjgpPjgYTjgaENCivjgoDjgonjgYvjgb8s44Gy44Go44GXDQor44GE44GX44Ga44GLLOOBruOBtuOCiOOBlw0KK+OBhOOBhOOBmuOBiyzjgajjgZfjgbLjgZMNCivjgZfjgonjgYQs44GC44GN44KJDQor44G144GP44Gv44KJLOOBmeOBiOOBr+OCiw0KK+OBhOOBquOBjOOBjSzjgabjgaTjgYoNCivjgbLjgonjgZfjgb4s44Gy44Go44GXDQor44Gk44GY44Gw44KE44GXLOOBguOBpOOBlw0KK+OBvuOBpOOBiizjgb7jgZXjgb8NCivjgoTjgb7jgoLjgags44G+44Gq44G2DQor44KC44KK44GuLOOBn+OBi+OBig0KK+OBn+OBmOOBvizjgajjgZfjgYoNCivjga7jgZbjgY0s44GY44KF44KTDQor44GC44Gg44GhLOOBruOBtuOBn+OBiw0KK+OBn+OBi+OChCzjgZ/jgYvjgZcNCivjgYrjga4s44G+44GV44GKDQor44G+44Gk44KC44GoLOOBi+OBpOOBguOBjQ0KK+OBr+OBl+OCguOBqCzjgYvjgZrjgbLjgacNCivjgYvjga4s44KE44GZ44GXDQor44Gf44GR44GgLOOBteOBv+OBkw0KK+OBjeOCiuOBr+OCiSzjgZHjgYTjgZMNCivjgZ/jgarjgYss44KE44GZ44Gy44GTDQor44Go44KK44GELOOBguOBjeOBruOBtg0KK+OBquOBi+OBl+OBvizjgb7jgZXjgYoNCivjgZvjgZnjgb8s44GY44KF44KTDQor44G+44GI44Gu44Gd44GuLOOBi+OBmuOBquOCig0KK+OBlOOBqOOBhizjgZfjgpPjgZgNCivjgbvjgoos44KG44GN44KI44GXDQor44Gf44GL44GE44KJLOOBjeOCh+OBhuOBhOOBoQ0KK+OBn+OBq+OBoCzjgYLjgY3jgbLjgo0NCivjgbXjgovjganjgYQs44GX44KF44GG44GE44Gh44KN44GGDQor44GK44GK44GO44KELOOBvuOBleOBquOBig0KK+OBquOBi+OBmOOBvizjga7jgbbjgojjgZcNCivjgbvjgorjgYvjgo8s44GL44Ga44Gy44KNDQor44GZ44Ga44GNLOOBvuOBk+OBqA0KK+OBguOBiuOBjSzjga7jgbbjgobjgY0NCivjgYrjgY/jga/jgZ8s44G+44GV44Gy44KNDQor44GP44KP44Gw44KJLOOChuOBhuOBmeOBkQ0KK+OBi+OCk+OBoCzjgbLjgo3jgb/jgaQNCivjgZnjgY7jgoLjgags44KK44KH44GGDQor44KE44G+44KC44GoLOOBsuOBp+OBguOBjQ0KK+OBi+OBreOBkyzjgb7jgZXjgosNCivjgarjgorjgZ8s44KC44Go44KG44GNDQor44Gr44GX44GKLOOBn+OBkeOBsuOCjQ0KK+OBhOOBi+OCiizjga/jgovjgYoNCivjgbXjgovjgYvjgo8s44GR44KT44GE44GhDQor44GC44KJ44GELOOBm+OBhOOBmA0KK+OBj+OBmuOBi+OBvyzjgbLjgo3jgZcNCivjgZTjgajjgYYs44GX44KF44GG44GE44GhDQor44KE44G+44Gv44KJLOOBvuOBmeOBvw0KK+OChOOBvuOBoCzjgZfjgZLjgosNCivjgYTjgZgs44Go44GX44KN44GGDQor44GP44KJ44KC44GhLOOBv+OBjeOBig0KK+OBteOBmOOCj+OCiSzjgbLjgafjgZnjgY4NCivjgZ/jgZHjgaAs44GV44Go44GXDQor44Gf44GL44Gu44GbLOOBiOOBpOOBig0KK+OBqOOCguOCgOOCiSzjgZfjgZLjgbXjgb8NCivjgZXjgajjgYYs44Gv44GY44KBDQor44GV44GL44GN44Gw44KJLOOBvuOBleOChuOBjQ0KK+OBv+OChOOBluOBjSzjgobjgYbjgZgNCivjgojjgZfjgaAs44GX44KF44GG44GE44GhDQor44Gf44Gq44GLLOOCiOOBl+OBsuOBkw0KK+OBlOOBqOOBhizjgb/jgaHjgYoNCivjgavjgZfjgaAs44GR44GE44GE44GhDQor44Gq44GL44GX44G+LOOBv+OBpOOBsuOCjQ0KK+OBjeOCgOOCiSzjgZfjgZLjgobjgY0NCivjgYTjga7jgYbjgYgs44G+44GV44Go44GXDQor44GK44GX44G+LOOBn+OBkeOBlw0KK+OBiuOBiuOChCzjgb7jgoLjgosNCivjgb/jgoTjgoLjgags44G+44GV44Gu44KKDQor44KE44G+44GX44GfLOOBiuOBleOCgA0KK+OBn+OBquOBiyzjgb7jgZnjgb8NCivjgoLjgoos44GC44Gk44GXDQor44Gq44KL44G/LOOBiuOBleOCgA0KK+OBlOOBqOOBhizjgaDjgYTjgZjjgo3jgYYNCivjgoTjgb7jgaHjgYss44GC44GN44KJDQor44GV44GV44GNLOOBvuOBleOBsuOBqA0KK+OBjeOBl+OBoCzjgb/jgaHjgYoNCivjgYrjgYrjgoTjgb4s44KI44GG44GZ44GRDQor44GX44GE44GuLOOBi+OBpOOChA0KK+OBhOOBmuOBv+OBleOCjyzjgojjgZfjgajjgoINCivjgYvjgb/jgoDjgoks44Gg44GE44GhDQor44GV44GL44GELOOBkeOCk+OBhOOBoQ0KK+OBlOOBqOOBhizjgYvjgZrjgYoNCivjgYvjgajjgYYs44GN44GE44Gh44KN44GGDQor44Gf44GL44Gv44GXLOOBk+OBhuOBmA0KK+OBj+OBrizjgZ/jgaTjgbLjgZMNCivjgYTjgo/jgbbjgaEs44G+44GV44Gk44GQDQor44G744KT44G2LOOBvuOBleOBteOBvw0KK+OCguOCiuOBnyzjgZjjgoXjgpMNCivjgZvjgY3jgoQs44GTDQor44Gs44G+44GfLOOBi+OBmuOChA0KK+OBlOOBqOOBhizjgoHjgYTjgZXjgYQNCivjgb7jgarjgbks44G+44GV44KLDQor44GE44G+44GN44GfLOOBl+OCh+OBhuOBmA0KK+OBk+OBoOOBiyzjgZHjgpPjgZgNCivjgojjgZfjgaAs44Gf44GR44Gy44GVDQor44GV44Go44GGLOOBn+OBkeOBlw0KK+OBj+OBmeOBvyzjgYvjgZrjgobjgY0NCivjga/jgY7jgo/jgoks44Go44GX44GL44GaDQor44G144KL44GbLOOBpuOCi+OBsuOBkw0KK+OCgOOCieOBnyzjgZfjgofjgYbjgZMNCivjgYrjgY/jgoDjgoks44G+44GV44Gy44GTDQor44Gf44Gr44GM44G/LOOBn+OBhOOBoQ0KK+OBquOBi+OCgOOCiSzjgZfjgpPjgZgNCivjgZPjgYTjgZrjgb8s44G+44GV44Gy44GTDQor44GZ44Gp44GGLOOBsuOCjeOBlw0KK+OBhOOBpyzjgabjgaTjgoQNCivjgZfjgoLjga4s44GL44Ga44Gy44KNDQor44Gf44GL44GOLOOCiOOBl+OBguOBjQ0KK+OBleOBi+OBhCzjgYLjgaTjgZcNCivjgYTjga7jgYbjgYgs44GL44Ga44GKDQor44G144KL44GfLOOBv+OBoeOBruOBtg0KK+OBguOBleOBhCzjgY3jgojjgZcNCivjgbXjgYvjgZXjgo8s44GP44Gr44Gy44GTDQor44GU44GL44GE44GhLOOBk+OBhuOBmA0KK+OBiuOBiuOBpOOBiyzjgoTjgZnjga7jgooNCivjgZXjgajjgYYs44GV44Go44GXDQor44GE44Gu44GG44GILOOBl+OBkuOCiw0KK+OBn+OBkeOBoCzjgb7jgZXjgobjgY0NCivjgb7jgZnjgaAs44KI44GX44Gy44GTDQor44KE44G+44KC44GoLOOBruOBvOOCiw0KK+OBiuOBiuOBr+OCiSzjgb7jgarjgbYNCivjgbXjgarjgaQs44GL44Ga44Gy44GTDQor44GT44KE44G+LOOBmOOCheOCk+OBnuOBhg0KK+OChOOBvuOBluOBjSzjgajjgZfjgbLjgo0NCivjgZ/jgZjjgoos44G/44Gt44Gv44KLDQor44GV44Go44GGLOOBpOOCiOOBlw0KK+OBquOBjOOBl+OBvizjgZjjgo3jgYYNCivjgaTjgaAs44Gf44GL44GXDQor44Gq44GM44GKLOOBqOOCguOBvw0KK+OBiuOBiuOBmeOBjizjgbLjgo3jgobjgY0NCivjgYTjgajjgYYs44Go44KC44Gq44KKDQor44Gf44G+44GELOOChuOBn+OBiw0KK+OBv+OChOOBl+OBnyzjgojjgYbjgYTjgaHjgo3jgYYNCivjgb/jgZfjgb4s44KI44GX44Gy44KNDQor44G744KK44GELOOBquOBiuOBguOBjQ0KK+OBlOOBqOOBhizjgb7jgZPjgagNCivjgoTjgYos44GY44KF44KT44GE44GhDQor44Gy44GY44KELOOBn+OBpOOChA0KK+OBu+OCiuOBhCzjgbLjgafjgZgNCivjgZ/jgZHjgaAs44Gf44GL44KI44GXDQor44KE44GZ44Gq44GMLOOBi+OBpOOBvw0KK+OChOOBvuOBluOBjSzjgbLjgafjgbLjgagNCivjgoTjga4s44GC44GN44KJDQor44GX44KP44GPLOOBv+OBruOCiw0KK+OBi+OBv+OBrizjgYLjgY3jgokNCivjgarjgYvjgZjjgb4s44Gf44GE44GY44KN44GGDQor44G+44GZ44GgLOOBj+OBq+OBsuOBkw0KK+OBiuOBteOBoSzjgZjjgo3jgYYNCivjgbXjgY/jgZbjgY0s44KM44GE44GTDQor44GE44Gf44GM44GNLOOBl+OBkuOBjQ0KK+OBl+OCgizjgaHjgYgNCivjgbXjgY/jgYQs44Gu44G244GC44GNDQor44GE44GzLOOBmOOCk+OBhOOBoQ0KK+OBk+OCgOOBi+OBhCzjgY3jgojjgb8NCivjgbXjgZjjgYgs44Gu44G244KG44GNDQor44G+44Gk44GNLOOBi+OBmuOBsuOBkw0KK+OBk+OBsOOChOOBlyzjgYvjgZrjgojjgZcNCivjgZTjgYbjgaEs44GL44Ga44Go44GXDQor44Gv44Gb44GM44KPLOOBkeOCkw0KK+OBi+OCj+OBlOOBiCzjgajjgoLjgbXjgb8NCivjgarjgYzjgZXjgo8s44Gf44GE44Gb44GEDQor44KE44G+44GX44GfLOOBleOBi+OBiA0KK+OBhOOBl+OBluOBjSzjgZfjgpPjgYTjgaHjgo3jgYYNCivjgYrjgaAs44G/44Gh44Gy44KNDQor44GX44KT44Gp44GGLOOBn+OBi+OBguOBjQ0KK+OBl+OCguOBleOBkyzjga/jgovjgbLjgZUNCivjgaTjgaTjgb8s44GN44KI44GXDQor44GN44Gf44GK44GLLOOBi+OBmuOBsuOBkw0KK+OBjeOBn+OBluOCjyzjgZPjgYbjgZgNCivjgarjgYvjgYrjgYss44GI44GE44GYDQor44GE44GX44Gw44GXLOOBv+OChuOBjQ0KK+OBr+OBl+OBkOOBoSzjgb/jgo/jgZMNCivjgo/jgZ/jgarjgbks44GC44GN44Gy44KNDQor44GK44GK44GwLOOBi+OBquOCgQ0KK+OBr+OCiSzjgYvjgZrjgoQNCivjgZfjgb/jgZos44GT44G/44GqDQor44GE44GW44KPLOOCiOOBl+OBsuOBkw0KK+OCiOOBl+OChOOBvizjgYLjgY3jgokNCivjgZnjgY7jgoLjgags44Gy44KN44KG44GNDQor44GT44G+44GkLOOBk+OBhuOBhOOBoQ0KK+OBuOOCk+OBvyzjgZPjgYbjgZ7jgYYNCivjgbXjgYvjgaAs44Gu44KK44G144G/DQor44GT44Gw44KE44GXLOOCiOOBl+OBsuOBlQ0KK+OBmeOBjuOCguOBqCzjgZHjgpPjgZgNCivjgojjgZPjgoTjgb4s44Gk44Go44KADQor44Gf44Gq44GLLOOBruOCiuOBsuOBkw0KK+OBv+OChOOBn+OBqyzjgZXjgajjgosNCivjga/jgZvjgYzjgo8s44GC44Gk44GXDQor44GN44Gf44GM44KPLOOBn+OBi+OBguOBjQ0KK+OBteOBj+OBiuOBiyzjgbLjgo3jgobjgY0NCivjgYrjgoDjgoks44GV44Go44KLDQor44GE44GQ44GhLOOBvuOBk+OBqA0KK+OBr+OChOOBlyzjgb7jgorjgZMNCivjgbLjgonjgYQs44GL44GI44GTDQor44GK44GK44KC44KKLOOCjOOBhOOBkw0KK+OBiuOBjuOBrizjgYTjgaHjgo3jgYYNCivjgZ/jgoDjgoks44G/44Gk44GKDQor44Gf44GR44GgLOOBsuOBp+OBguOBjQ0KK+OBv+OChOOBquOBjCzjgZPjgYbjgYTjgaHjgo3jgYYNCivjgbLjgonjgYQs44Gu44KK44G+44GVDQor44Gr44GX44KA44KJLOOBsuOCjeOChuOBjQ0KK+OBr+OBtuOBoSzjgbLjgafjgYvjgZoNCivjgYrjgYrjgY/jgoks44KI44GX44GC44GNDQor44Gv44Gj44GfLOOBiOOBhOOBmA0KK+OBhOOBk+OBvizjgbLjgo3jgobjgY0NCivjgYLjgZXjgbLjgaos44Gf44GL44GXDQor44GL44Gu44GGLOOBl+OCk+OBlA0KK+OBquOBi+OBq+OBlyzjgZfjgoXjgYbjgZgNCivjgb/jgoTjgZbjgY0s44Gy44KN44KADQor44GE44Gh44GL44GpLOOBqOOCiOOBguOBjQ0KK+OBquOBjOOBleOCjyzjgYLjgY3jga7jgbYNCivjga/jgb7jgZDjgaEs44Gv44KL44GKDQor44KE44GX44KNLOOBsuOCjeOBruOCig0KK+OCgOOCieOBiizjgb7jgY0NCivjgYrjgYrjgY7jgb7jgaEs44GC44GN44KJDQor44GX44KN44GfLOOBvuOBleOChuOBjQ0KK+OBpuOBl+OBvizjgb/jgaTjgYoNCivjgYvjgo/jgZXjgY0s44KE44GZ44KG44GNDQor44KE44G+44GgLOOBiuOBleOCgA0KK+OBu+OCk+OBoCzjgb7jgZXjgbLjgacNCivjgYvjga3jgZMs44GX44GS44KLDQor44G+44Gk44GX44G+LOOBsuOCjeOBmuOBvw0KK+OBk+OBv+OChCzjgZPjgYbjgZgNCivjgo/jgaAs44Gk44KI44GXDQor44KI44GX44GgLOOBn+OBi+OBlw0KK+OCguOCiuOBleOBjSzjgobjgYbjgZgNCivjgYTjgb7jgbLjgYzjgZcs44Gy44Gn44GKDQor44GP44KJ44KC44GhLOOCj+OBn+OCiw0KK+OChuOBi+OCjyzjgZXjgajjgZcNCivjgabjgonjgYos44GY44KN44GGDQor44GT44KT44GpLOOBvuOBjQ0KK+OBleOBhOOBqOOBhizjgb7jgZXjgobjgY0NCivjgojjgZfjgarjgYws44Gy44KN44GXDQor44KG44GC44GVLOOBr+OCi+OChuOBjQ0KK+OBm+OCk+OBjCzjgojjgZfjgYoNCivjgavjgZfjgZDjgaEs44Go44GX44GC44GNDQor44GG44GI44GgLOOBquOBiuOBjQ0KK+OChOOBvuOBiuOBiyzjgajjgZfjgYoNCivjgoTjgb7jgoLjgags44GL44Ga44GKDQor44G144GY44GL44KPLOOBqOOBl+OBn+OBkQ0KK+OBiuOBkOOCiSzjgZ/jgYvjgZcNCivjgYvjgo/jga4s44Gy44Gn44GKDQor44GL44Gt44Ga44GLLOOBsuOCjeOBguOBjQ0KK+OBiuOBi+OCguOBqCzjgobjgYbjgZnjgZENCivjgYvjgo/jgaTjgY0s44GL44Ga44GKDQor44GZ44GI44KI44GXLOOBn+OBpOOChA0KK+OBi+OCj+OBuSzjgZfjgZLjgobjgY0NCivjgZ/jgYvjga/jgZcs44Gf44GL44KG44GNDQor44KC44KKLOOBl+OCk+OBmeOBkQ0KK+OBmeOBjuOChOOBvizjgabjgaTjgZgNCivjgb7jgYjjgoTjgb4s44GN44KI44GXDQor44GT44KB44Gf44GrLOOChuOBhuOBmA0KK+OBteOBmOOCj+OCiSzjgY3jgojjgZcNCivjgYLjgafjgYzjgo8s44Gy44KN44KG44GNDQor44Go44G/44GW44KPLOOBiuOBleOCgA0KK+OBquOBi+OBnyzjgb7jgZXjgYLjgY0NCivjgZ/jgaHjgbDjgarjgY0s44Gv44KL44GC44GNDQor44GT44Gg44G+LOOBl+OCh+OBhuOBlA0KK+OBr+OBquOBhCzjgaHjgbsNCivjgaHjga7jga0s44GL44Ga44GKDQor44GX44G/44GaLOOBk+OBhuOBhOOBoQ0KK+OBn+OBjeOBluOCjyzjgb7jgZXjgagNCivjgY/jganjgYYs44GR44KT44GYDQor44KC44KK44GK44GLLOOBvuOBleOBi+OBmg0KK+OBi+OBreOBsuOCiSzjgYLjgY3jgYoNCivjgZXjgajjgYYs44Gy44KN44Gu44G2DQor44KE44Gw44GqLOOBqOOBl+OBig0KK+OBleOBi+OBmuOCgSzjgbLjgo3jgobjgY0NCivjga/jgZfjgoLjgags44GN44KIDQor44KI44Gu44KC44GoLOOBsuOBp+OBjQ0KK+OBsOOCk+OBl+OCh+OBhizjgY/jgavjgYoNCivjgbXjgaHjgYgs44GL44Ga44GKDQor44GZ44Ga44GNLOOBhOOBj+OBig0KK+OBmeOBmuOBjSzjgobjgY3jga7jgooNCivjgZPjgbDjgoTjgZcs44GL44Ga44Gy44KNDQor44GL44Go44GGLOOBn+OBi+OBpOOBkA0KK+OBj+OBmeOBoCzjgYvjgZrjgYTjgaENCivjgb/jgoTjgZ/jgZEs44KI44GX44Gy44KNDQor44GV44GuLOOBsuOBp+OBmA0KK+OBvuOCi+OBnyzjgajjgZfjgYLjgY0NCivjgb7jgY3jgZ8s44G+44KK44GTDQor44GL44GX44KP44GOLOOBr+OBmOOCgQ0KK+OBn+OBqyzjgojjgZfjgb8NCivjgYLjgorjgoTjgZks44GI44Gk44GKDQor44GL44Go44GGLOOBl+OCheOBhuOBmA0KK+OBn+OBquOBiyzjgb7jgZXjgbLjgagNCivjgaTjgZjjgZ8s44Gy44KN44GXDQor44GK44GK44GM44KP44KJLOOBn+OBoOOBig0KK+OCgOOCieOBleOCjyzjgajjgZfjgbLjgo0NCivjgZvjgY3jgoLjgags44Gy44GV44GXDQor44Gk44GY44KC44GoLOOBsuOBleOBqA0KK+OBl+OBiuOBn+OBqyzjgojjgYbjgYTjgaHjgo3jgYYNCivjgb/jgo8s44Go44GX44GKDQor44Gq44GM44GV44GLLOOBm+OBhOOBmA0KK+OBk+OBhOOBpyzjgYLjgY3jgokNCivjgYrjgZDjgoks44Gk44Go44KADQor44Gk44Gk44G/LOOBn+OBi+OBruOCig0KK+OBteOBi+OBvyzjgZjjgoXjgpPjgYTjgaENCivjgojjgZfjgaAs44Gf44GL44GXDQor44KC44KN44G744GXLOOBmeOBmeOCgA0KK+OBl+OBiuOBrizjgZ/jgaDjgbLjgacNCivjgoTjgb7jgZDjgaEs44Gu44G244G/44GhDQor44G+44G/44KELOOBpOOBi+OBlQ0KK+OBleOBhOOBqOOBhizjgZfjgZLjgobjgY0NCivjgYLjgY3jgoTjgb4s44GN44KI44GXDQor44GC44Gg44GhLOOBi+OBmuOBsuOCjQ0KK+OBi+OCj+OBrizjgajjgZfjgb/jgaQNCivjgarjgYvjgoDjgoks44GC44GN44Gy44KNDQor44KE44G+44GQ44GhLOOBqOOBl+OBjQ0KK+OBleOBj+OBvizjgbLjgafjgb8NCivjgoLjgaHjgZrjgY0s44KI44GX44Gf44GLDQor44KP44Gf44Gq44G5LOOCiOOBhuOBmA0KK+OBk+OBsOOChOOBlyzjgZvjgYTjgZgNCivjgY3jgZcs44G/44KM44GEDQor44Gv44KE44GV44GLLOOBv+OBoeOCiA0KK+OBk+OBteOBmCzjgb7jgZXjga7jgbYNCivjgZXjgYTjgajjgYYs44GC44GN44GTDQor44Gu44KA44KJLOOBl+OCheOCk+OBmA0KK+OBvuOBpOOBhCzjgobjgY3jgYoNCivjga/jgoTjgZfjgaAs44G+44GV44GIDQor44GK44GM44KPLOOBn+OBi+OBlw0KK+OBu+OCk+OBoCzjgZ/jgYvjgZcNCivjgZPjgZbjgo8s44KI44GX44KC44GoDQor44GV44GV44GNLOOBsuOBp+OBguOBjQ0KK+OCj+OBoCzjgY3jgojjgZcNCivjgoTjgb7jgo/jgY0s44Gf44G/DQor44G144GY44GELOOBr+OCi+OCiA0KK+OBn+OBjeOBluOCjyzjgoTjgZnjgbLjgZMNCivjgZXjgajjgYYs44GT44GG44GYDQor44G/44GL44G/LOOBleOBqOOBlw0KK+OBv+OCjyzjga7jgbzjgosNCivjgYrjgaEs44Gy44KN44GXDQor44G144GY44GfLOOBkeOBhOOBmA0KK+OBquOBjOOBnyzjgYTjgaHjgo3jgYYNCivjgY/jgbzjgZ8s44KI44GG44GTDQor44GC44GK44GM44GNLOOBkuOCkw0KK+OBi+OCiuOChOOBqSzjgarjgYrjgZMNCivjgb/jga/jgZcs44GX44KT44GE44GhDQor44KA44KJ44G+44GkLOOBoeOBiOOBkw0KK+OBi+OBn+OChOOBvizjgYrjgZXjgoANCivjgoTjgb7jgZbjgY0s44Go44GX44Gy44GTDQor44GK44GK44GO44GdLOOBjeOCiOOBn+OBiw0KK+OBsOOBsCzjgb7jgZXjgYvjgZoNCivjgb/jgZfjgb4s44G+44GV44Gy44GTDQor44KE44GuLOOBiuOBleOCgA0KK+OBquOBi+OBmOOBvizjgYLjgY3jgbLjgZMNCivjgZ/jgZHjgZfjgZ8s44GN44KH44GG44GTDQor44Gq44GL44GuLOOBv+OBruOCiw0KK+OBn+OBi+OBrizjgobjgY0NCivjgYvjgo/jgaAs44GL44Ga44G+44GVDQor44Gf44GY44G+LOOBk+OBhuOBn+OCjeOBhg0KK+OCguOBoeOBmuOBjSzjgY3jgojjgZcNCivjgY3jgoDjgoks44GL44Gk44G/DQor44GC44GN44G7LOOBqOOBv+OCguOBqA0KK+OChOOBvuOCguOBqCzjgYLjgY0NCivjgYvjgo/jgZss44KG44Gf44GLDQor44GV44GVLOOBsuOBleOBig0KK+OBruOBmyzjgYvjgZrjgarjgooNCivjgbLjgonjgZ8s44Gq44GK44GNDQor44GT44Gw44KE44GXLOOBl+OCheOBhuOBhOOBoQ0KK+OBguOBjOOCjyzjgobjgYbjgZnjgZENCivjgabjgonjgoLjgags44Gy44KN44G144G/DQor44GK44GW44GNLOOBleOBi+OBiA0KK+OCguOCiizjgY3jgofjgYbjgZMNCivjgYbjgaQs44Gy44Go44GXDQor44KP44GL44G+44GkLOOBqOOBl+OBleOBoA0KK+OBhOOBvuOBhCzjgbXjgb/jgZMNCivjgY/jgbws44Gf44GL44Gy44KNDQor44Gf44GL44GuLOOBmOOCheOCk+OBmA0KK+OBsuOBs+OBrizjgbLjgafjgYoNCivjgZnjgZrjgY0s44Gv44KL44GNDQor44Gf44Gq44GLLOOBn+OBi+OBr+OCiw0KK+OBleOBi+OCguOCiizjgYvjgojjgZMNCivjgZ/jgY3jgZbjgo8s44Gm44GkDQor44KI44GX44GL44KPLOOBn+OBiOOBkw0KK+OBqOOCiOOBoCzjgorjgoXjgYbjgYTjgaENCivjgYbjgonjgZfjgb4s44KG44GG44GYDQor44GT44KT44GuLOOCguOBqOOBsuOCjQ0KK+OBpuOCieOBi+OCjyzjgZ/jgZHjgarjgYwNCivjgZPjgbDjgoTjgZcs44GC44GN44Gy44GTDQor44GN44KA44KJLOOBn+OBi+OBkw0KK+OBi+OBv+OBiizjgozjgYQNCivjgY/jgozjgbDjgoTjgZcs44GN44KI44G/DQor44GL44Gt44GgLOOBsuOCjeOBkw0KK+OBi+OCj+OCguOBqCzjgZPjgYbjgbjjgYQNCivjgYTjgb7jgoDjgoks44KI44GX44Gy44KNDQor44GT44Gv44GO44GW44KPLOOBv+OBruOCiw0KK+OBl+OBruOBluOBjSzjgZfjgoXjgYbjgYTjgaHjgo3jgYYNCivjgoHjgZDjgo0s44GV44Go44GXDQor44GP44Gr44GV44GgLOOBvuOBleOBr+OCiw0KK+OCguOCiizjgY3jgogNCivjgYvjgo/jgY7jgZcs44Gf44GL44KG44GNDQor44GK44GK44GZ44GMLOOBi+OBiOOBpw0KK+OBmeOBoCzjgbLjgo3jgZcNCivjgarjgYvjgoDjgoks44GN44KI44GL44GaDQor44GE44GX44GTLOOBmOOCheOCkw0KK+OBmeOBmuOBjSzjgarjgYrjgoQNCivjgY3jgY/jgaEs44GL44Ga44Gy44GTDQor44GK44GO44GfLOOBguOBjeOCiQ0KK+OBn+OBi+OChOOBvizjgZ/jgYvjgajjgokNCivjgarjgYvjgZfjgb4s44GN44KI44GXDQor44Gk44GY44KC44GoLOOBsuOCjeOBlw0KK+OBr+OChOOBvizjgY/jgavjgbLjgo0NCivjgYTjgZ/jgYzjgY0s44G+44GV44GC44GNDQor44KE44G+44KC44GoLOOBsuOCjeOBguOBjQ0KK+OBguOBoOOBoSzjgbLjgo3jgZcNCivjgY3jgZ/jgb8s44Gy44KN44Gy44GnDQor44Gf44G+44GNLOOBv+OBoeOBig0KK+OBvuOBiOOBoCzjgobjgYbjgZgNCivjgYLjgaDjgaEs44GX44KH44GG44Ge44GGDQor44Gf44G+44GgLOOBkOOCk+OBmA0KK+OCguOCiuOBkOOBoSzjgobjgYbjgZgNCivjgojjgZfjgarjgYws44Gu44KK44GTDQor44G+44GI44GgLOOBn+OBiOOBkw0KK+OCj+OBn+OBquOBuSzjgZ/jgb7jgY0NCivjgZ/jgYvjga/jgZcs44KI44KK44Gf44GLDQor44GE44GX44GTLOOBpuOBpOOCjeOBhg0KK+OBiuOBmOOBvizjgYvjgaTjgZgNCivjgZfjgbDjgoTjgb4s44KI44GX44GC44GNDQor44GX44GwLOOBn+OBkeOBsuOBkw0KK+OBqOOCguOBrizjgZHjgpPjgYTjgaENCivjgZnjgb8s44G+44GV44G144G/DQor44G/44Gk44Gq44GMLOOBguOBjeOBkw0KK+OBhuOCieOBrizjgb7jgZXjgY0NCivjgojjgZPjgZrjgYss44GV44Go44GXDQor44G144GY44GL44KPLOOBr+OCi+OBsuOCjQ0KK+OBi+OBtuOCieOBjizjgb7jgZXjgobjgY0NCivjgojjgZfjgaAs44KG44Gf44GLDQor44GV44GE44Go44GGLOOCiOOBl+OBguOBjQ0KK+OChOOBrizjgZ/jgYvjgbLjgZUNCivjgojjgZPjgZ8s44Gq44GK44G/DQor44Gq44GL44KA44KJLOOBguOBpOOBlw0KK+OBquOBv+OBleOBqCzjgb7jgZXjgYvjgZoNCivjga3jgY7jgZcs44GR44GE44Ge44GGDQor44GN44GuLOOBruOBvOOCiw0KK+OBquOBi+OBmOOBvizjgYLjgY3jgokNCivjgaTjgaTjgb8s44GX44KF44GG44GE44GhDQor44GT44GG44GgLOOChOOBmeOBsuOBkw0KK+OBu+OCiizjgb/jgobjgY0NCivjgZPjgpPjga4s44GL44Ga44KEDQor44KP44GgLOOChuOBv+OBkw0KK+OBvuOBpOOBquOBjCzjgZXjgaDjgYoNCivjgavjgZfjgoDjgoks44Go44GX44KG44GNDQor44GE44GELOOChOOBmeOBsuOCjQ0KK+OChOOBmeOBhCzjgarjgYrjgY0NCivjgZPjgbDjgoTjgZcs44GX44KF44GG44GE44GhDQor44KE44G+44GV44GNLOOBvuOBleOBsuOCjQ0KK+OBmeOBmuOBjSzjgoTjgZnjgobjgY0NCivjgYTjgo/jgZ8s44Gv44KL44Gy44GTDQor44GX44GS44KC44KKLOOBn+OBi+OBlw0KK+OBhOOBvuOCgOOCiSzjga7jgbbjgZ/jgYsNCivjgaTjgYvjgoLjgags44GC44GN44KIDQor44GE44Go44GGLOOBl+OCk+OBmeOBhA0KK+OBj+OBvCzjgZjjgo3jgYYNCivjgZXjgarjgYgs44GL44Ga44G+44GVDQor44GT44Gg44G+LOOBguOBjeOBig0KK+OBhOOBqOOBhizjgYvjgaTjgZcNCivjgYLjgY/jgaQs44KI44GG44GTDQor44GC44Gf44KJ44GXLOOBv+OBiOOBkw0KK+OBn+OBkOOCiizjgZjjgoXjgpPjgZMNCivjga4s44Gf44Gk44KEDQor44GC44GL44G+44GkLOOBkeOCk+OBmOOCjeOBhg0KK+OBguOBleOBrizjgZHjgpPjgZgNCivjgarjgYvjgYzjgo8s44G+44GV44GC44GNDQor44GL44KP44GX44G+LOOBguOBleOBkw0KK+OBleOBqOOBhizjgbLjgafjgYoNCivjgYrjgZDjgoks44Gb44GE44GYDQor44GE44GX44Gw44GXLOOBsuOCjeOChuOBjQ0KK+OBvuOBpOOBiuOBiyzjgZ/jgYvjgojjgZcNCivjgZ/jgY3jgZbjgo8s44G+44GV44KI44GXDQor44GE44Gf44GP44KJLOOBleOBqOOBlw0KK+OBu+OCk+OBlOOBhizjgojjgZfjgYvjgZoNCivjgarjgYzjgoTjgZks44Gf44GL44KG44GNDQor44GG44Gh44GgLOOBsuOCjeOBlw0KK+OChOOBvuOBl+OBnyzjgaTjga3jgYoNCivjgYTjgZfjgZDjgo0s44Gy44KN44GXDQor44KC44KKLOOBqOOCiOOBsuOBkw0KK+OBn+OBquOBiyzjgZPjgYbjgYTjgaENCivjgbLjgZDjgaEs44GX44GS44GoDQor44GN44GoLOOBl+OCk+OBhOOBoQ0KK+OBn+OBquOBiyzjgYvjgZrjgobjgY0NCivjgZnjgZrjgY0s44GL44Ga44Gy44KNDQor44GZ44GM44GELOOBkeOCk+OBmA0KK+OCiOOBreOBluOCjyzjgojjgZfjgYvjgZoNCivjgYLjgonjgYvjgo8s44KK44KF44GG44GYDQor44GE44Gu44GgLOOChOOBmeOBsuOBlQ0KK+OBi+OBqOOBhizjgb7jgZXjgYoNCivjgYvjgZLjgoTjgb4s44G+44GV44GXDQor44G/44KE44KP44GNLOOBqOOBl+OBsuOBkw0KK+OBv+OBoeOChOOBvizjgZ/jgaDjgoTjgZkNCivjgoLjgoos44Go44GX44GC44GNDQor44KC44KK44GV44KPLOOBl+OCk+OBhOOBoeOCjeOBhg0KK+OBq+OBl+OCgOOCiSzjgYvjgaTjgobjgY0NCivjgZXjgYTjgajjgYYs44KE44GZ44Gu44KKDQor44KE44G+44KC44GoLOOCiOOBhuOBmeOBkQ0KK+OBvuOBpOOBhuOCiSzjgojjgZfjgYLjgY0NCivjga/jgZvjgYzjgo8s44Gk44Go44KADQor44GG44Gh44GgLOOBmOOCheOCk+OBhOOBoQ0KK+OChOOBmeOBoCzjgZPjgYbjgYTjgaENCivjgYTjgZfjgaAs44Go44GK44KLDQor44KC44KK44GuLOOBi+OBpOOBvuOBlQ0KK+OBjeOBn+OChOOBvizjgojjgZfjgbLjgo0NCivjgZXjgYvjgoLjgags44KI44GX44Gu44KKDQor44Gd44GG44G/44KELOOBsuOCjeOChuOBjQ0KK+OBjeOBj+OBoSzjgZfjgpPjgYTjgaENCivjgZfjgbbjgYQs44GT44GG44GYDQor44Go44G/44GfLOOBguOBpOOBlw0KK+OCguOCiizjgZPjgYbjgZgNCivjgoTjgb7jgZDjgaEs44GY44KF44KT44GYDQor44GN44Gf44KE44G+LOOCiOOBl+OBsuOCjQ0KK+OBvuOCk+OCguOBqCzjgYLjgY3jgokNCivjgZ/jgarjgYss44KG44Gf44GLDQor44KC44KKLOOBi+OBmuOBsuOCjQ0KK+OBhOOBn+OBj+OCiSzjgYTjgZXjgoANCivjgYTjgaHjgb/jgoQs44G+44GV44GXDQor44Gr44GX44KE44G+LOOBi+OBpOOBmA0KK+OCj+OBn+OBquOBuSzjgbLjgo3jgZcNCivjga/jgpPjgYzjgYQs44Gv44KL44GKDQor44Gq44GM44GuLOOBkeOBhOOBhOOBoeOCjeOBhg0KK+OBl+OBsCzjgZHjgpPjgZgNCivjgZPjgZjjgb4s44GZ44GZ44KADQor44Gf44Gf44GuLOOBleOBqOOBlw0KK+OBi+OCj+OBsOOBnyzjgb7jgZXjgbLjgZMNCivjgZ/jgZHjgaAs44Gf44KN44GGDQor44GK44KA44KJLOOBhOOBj+OCjeOBhg0KK+OBleOBkyzjgbLjgo3jgZcNCivjgYTjgZfjga/jgoks44G/44Gu44KLDQor44GE44Gh44Gu44GbLOOBmeOBmeOCgA0KK+OBjeOBl+OBoCzjgojjgZfjgb8NCivjgb/jgYvjgb8s44GY44KF44KTDQor44Gv44KE44GXLOOBn+OBj+OBmA0KK+OBleOBleOBjSzjgYLjgobjgb8NCivjgojjga3jgb/jgaQs44GL44Ga44Gq44KKDQor44Gb44GN44GtLOOCiOOBl+OBquOCig0KK+OBhOOBvuOBq+OBlyzjgY3jgojjgZ/jgaANCivjgYLjgYrjgY0s44Gf44Gg44GXDQor44GZ44GO44KE44G+LOOBhOOBleOBig0KK+OBquOBi+OCguOCiizjgojjgZfjgbXjgb8NCivjgZfjgb7jgaAs44G+44GV44Gy44GTDQor44G+44GZ44GgLOOBteOBleOBig0KK+OBpOOBvOOBhCzjgbLjgo3jgZcNCivjgZvjgY3jgoQs44GZ44GZ44KADQor44GN44GY44G+LOOBruOCiuOBig0KK+OCiOOBl+OBmuOBvyzjgbLjgafjgZ/jgYsNCivjgoTjgarjgY7jgaDjgaYs44GX44KT44KEDQor44GX44GS44G+44GkLOOBr+OCi+OChOOBmQ0KK+OBhOOBruOBhuOBiCzjgarjgYrjgY0NCivjgZ/jgZHjgYbjgaEs44GR44GE44GTDQor44Gf44Gq44GLLOOBn+OBkeOBlw0KK+OBsuOBjOOBlyzjgZfjgoXjgYbjgZgNCivjgZ/jgYvjgZ8s44Gq44GK44Gy44KNDQor44Gq44GL44GELOOBpOOBjuOBig0KK+OBr+OBm+OBjOOCjyzjgZjjgoXjgpPjgYTjgaENCivjgZ/jgass44Gf44GL44GXDQor44GT44Gw44KE44GXLOOBv+OBjeOBqOOCiA0KK+OBn+OBi+OBr+OBlyzjgYLjgZXjgZMNCivjgYLjgbks44G+44GV44GoDQor44GT44Gw44KE44GXLOOCiOOBl+OBnuOBhg0KK+OBiuOBrizjgYTjgY/jgoQNCivjgZ/jgYvjga/jgZcs44KG44GN44Gy44KNDQor44GP44KN44GgLOOBguOBpOOBlw0KK+OCj+OBn+OBquOBuSzjgbLjgo3jgZcNCivjgYLjgbks44GX44KT44GYDQor44GE44Gu44GG44GILOOCiOOBhuOBkw0KK+OBiOOCk+OBqSzjgojjgZfjgYoNCivjga7jga7jgZfjgZ8s44GX44GS44G144G/DQor44GL44Gq44GELOOBj+OBv+OBkw0KK+OBk+OBn+OBjSzjgZgNCivjgZ/jgYvjga/jgZcs44KI44GG44GTDQor44GX44GS44KE44G+LOOBqOOBv+OBig0KK+OBteOBi+OBoCzjgYLjgY3jgYoNCivjgZfjgYrjgZgs44GL44Gk44KG44GNDQor44KC44KK44KELOOBteOBv+OBsuOCjQ0KK+OBiuOBiuOBpOOBiyzjgb7jgZXjgoQNCivjgYLjgbks44G+44GV44Gf44GLDQor44Gy44KJ44GELOOBn+OBi+OChuOBjQ0KK+OCgOOCieOBvuOBpCzjgZjjgoXjgpMNCivjgb/jgZrjgZ8s44G+44GV44G/DQor44G744KK44GILOOBi+OBmuOChuOBjQ0KK+OBsuOBi+OBlSzjgb7jgZXjgZ/jgYsNCivjgYrjgZfjgZ/jgass44G+44GT44GoDQor44GT44Gw44KE44GXLOOBi+OBpOOBvw0KK+OBj+OCieOBr+OBlyzjgbLjgafjgobjgY0NCivjgbLjgonjgbDjgoss44Gf44GR44GKDQor44G144GY44GI44GgLOOBvuOBk+OBqA0KK+OBqOOBluOCjyzjgYvjgaTjgb8NCivjgoTjgarjgZss44GX44GS44KLDQor44GP44G844GfLOOCiOOBl+OBig0KK+OBvuOBv+OChCzjgb7jgZXjgY0NCivjgobjga/jgonjgY4s44G+44GV44G/DQor44Gh44KH44GG44Gq44KTLOOCiOOBl+OBvuOCjQ0KK+OBv+OCiOOBlyzjgajjgYrjgosNCivjga7jgZjjgb4s44KI44GX44Gu44KKDQor44KC44KK44GV44GNLOOBvuOBk+OBqA0KK+OBk+OChOOBvizjgajjgZfjgYLjgY0NCivjgYvjgajjgYYs44Gy44KN44GNDQor44GN44Gu44GX44GfLOOChOOBoeOCiA0KK+OBi+OCj+OCgOOCjSzjgZXjgajjgZcNCivjgoLjgoos44GR44GE44GE44GhDQor44Gy44KJ44GX44GfLOOBleOBoOOBjQ0KK+OBi+OCj+OBl+OBvizjgorjgofjgYYNCivjgbXjgovjgYvjgo8s44GC44GN44GoDQor44GE44KT44Gn44KTLOOBvuOBleOBsuOBkw0KK+OChOOBvuOBoCzjgoTjgZnjgobjgY0NCivjgaTjgY/jgaAs44G/44Gu44KLDQor44GE44KP44GV44GNLOOBvuOBleOBsuOBqA0KK+OBiuOBvuOBiCzjgYrjgZXjgoANCivjgZnjgZrjgY0s44G+44GV44KG44GNDQor44Gv44KJLOOBvuOBleOBsuOBkw0KK+OBleOBi+OBhCzjgZ/jgaTjgoDjga0NCivjgoLjgorjgoQs44GL44Ga44G+44GVDQor44G/44KE44KC44GoLOOBqOOBl+OBsuOCjQ0KK+OBl+OBkuOBnyzjgb7jgZXjgbLjgo0NCivjgYTjgZfjgYvjgo8s44Gy44Gn44Gu44KKDQor44Gf44GW44GNLOOBleOBoOOCgA0KK+OBmeOBiOOBsuOCjSzjgoDjga3jgoQNCivjgYvjga3jgaAs44GT44GG44GE44GhDQor44GZ44GI44Gy44KNLOOBmOOCheOCk+OBhOOBoQ0KK+OBleOBleOBjSzjgorjgoXjgYbjgZXjgY8NCivjgbLjgoTjgb4s44Gf44Gk44Gv44KLDQor44GN44Gp44GQ44GhLOOCiOOBl+OBsuOCjQ0KK+OBl+OBvuOBoCzjgajjgZfjgobjgY0NCivjgb/jgoTjgZEs44Gy44Go44G/DQor44KC44KKLOOBmOOCjeOBhg0KK+OBl+OCieOBi+OCjyzjgZPjgYbjgZgNCivjgo/jgYvjgbDjgoTjgZcs44GX44KT44GE44Gh44KN44GGDQor44KE44G+44GX44GfLOOBi+OBmuOBig0KK+OBguOBvuOBrizjgZjjgoXjgpPjgZgNCivjgZ/jgZHjgYTjgaEs44Gy44KN44Gf44GLDQor44GX44KTLOOBkeOBhOOBkw0KK+OBi+OBleOBr+OCiSzjgabjgaTjgoQNCivjgZ/jgarjgYss44GR44GE44GXDQor44GK44GP44GgLOOBguOBjeOCiQ0KK+OBi+OBqOOBhizjgajjgoLjgZMNCivjgYvjgo/jgZXjgY0s44G+44GV44GTDQor44GL44Go44GGLOOBi+OBmuOBig0KK+OBhOOBoeOBmyzjgb7jgZXjgYLjgY0NCivjgY3jgZ/jgYzjgo8s44GS44KT44G444GEDQor44KE44GZ44GELOOCiOOBl+OBruOBtg0KK+OBiOOBoCzjgajjgb/jgYvjgZoNCivjga/jgoTjgZcs44Gf44Gk44GYDQor44Gq44GM44GELOOBleOBqOOBlw0KK+OBqOOBruOCgOOCiSzjgb7jgZXjga7jgooNCivjgZ/jgarjgYss44Gu44G244KG44GNDQor44GP44KK44Gw44KE44GXLOOCiOOBl+OBruOCig0KK+OBjeOCgOOCiSzjgYvjgaTjgZMNCivjga/jgZzjgY0s44Gu44G244KG44GNDQor44GC44KT44GuLOOBguOBpOOBlw0KK+OBn+OBi+OCiOOBlyzjgojjgZfjgZXjgagNCivjgYLjgpPjgZbjgYQs44GX44KH44GG44GY44KN44GGDQor44Gf44GL44Gv44GXLOOBiuOBleOCgA0KK+OBr+OCieOBrizjgaTjga3jgYoNCivjgarjgYvjgYzjgo8s44GL44Gk44KI44GXDQor44Gr44GX44GL44KPLOOChuOBjeOBig0KK+OBl+OBtuOChCzjgYvjgZrjgbLjgo0NCivjgYvjgajjgYYs44Gu44G244Gy44KNDQor44GC44Gg44GhLOOBqOOBl+OBsuOCjQ0KK+OBleOBj+OCieOBhCzjgoTjgZnjgZ/jgYsNCivjgY/jgZXjga4s44Go44GX44Gy44KNDQor44G/44Gq44G/44Ge44GuLOOBv+OBruOCiw0KK+OBpOOBmOOCgOOCiSzjgYLjgY3jgajjgZcNCivjgoTjgb7jgaAs44GE44GV44KADQor44GL44Gk44GX44G+LOOBl+OBkuOBvw0KK+OBk+OChOOBquOBiyzjgbLjgo3jgobjgY0NCivjgZ/jgbDjgZ8s44GC44GN44KJDQor44GC44Gg44GhLOOCiOOBl+OBsuOCjQ0KK+OBsuOCjeOBrizjgZvjgYTjgYTjgaENCivjgaTjgZbjgY0s44Gy44KN44GC44GNDQor44Gf44Gh44Gw44GqLOOBl+OBkuOBguOBjQ0KK+OBueOBo+OBl+OChyzjgYvjgZrjgb8NCivjgb7jgaTjgZfjgZ8s44Gh44KF44GG44Ge44GGDQor44Gf44Gr44GQ44GhLOOBkeOCk+OBl+OCheOBhg0KK+OBquOBi+OBqOOCgizjgoDjgaTjgb8NCivjgavjgZfjgoDjgoks44Gy44KN44GXDQor44G/44GG44KJLOOBvuOBk+OBqA0KK+OBk+OCk+OBqSzjgYrjgZXjgoANCivjgb7jgaTjgYQs44G+44GV44GNDQor44G+44Gk44KC44GoLOOBsuOCjeOBi+OBmg0KK+OBu+OCiuOBhCzjgbLjgo3jgZcNCivjgb7jgZnjgoLjgags44Gk44Go44KADQor44Gq44GL44GY44G+LOOBoeOBi+OBlw0KK+OBjeOCgOOCiSzjgZHjgpPjgYTjgaENCivjgb/jgo8s44Gy44KN44KG44GNDQor44GE44GX44Gw44GXLOOChOOBmeOBlw0KK+OBiOOBkOOBoSzjga7jgorjgbLjgZUNCivjgYTjgarjgbXjgY8s44GY44KF44KTDQor44KP44Gf44Gs44GNLOOChOOBmeOBsuOCjQ0KK+OBsuOBkOOBoSzjgojjgZfjgbLjgZMNCivjgYTjgZHjga4s44GN44GP44GKDQor44GG44KB44Gv44KJLOOBvuOBquOBtg0KK+OBruOBluOCjyzjgZ/jgaDjgZcNCivjgYTjgb7jgYQs44G+44GV44GNDQor44Gf44GL44Gv44GXLOOBi+OBpOOBmA0KK+OBhOOBhOOBoCzjga/jgovjgbLjgZUNCivjgbXjgZjjgYvjgo8s44GL44GK44KLDQor44Gr44GX44GILOOBn+OBoOOBsuOBkw0KK+OBk+OBmeOBkizjgbLjgo3jgZcNCivjgYrjgYrjgZ8s44GY44KF44KT44GTDQor44Gu44GYLOOBj+OBq+OBsuOBkw0KK+OBk+OBvOOCiizjgb/jgY3jgYoNCivjgZnjgY7jgoTjgb4s44KI44GX44GC44GNDQor44GL44KP44GfLOOBpuOBpOOBsuOBkw0KK+OBleOCgeOBl+OBvizjgb/jga3jgYoNCivjgZPjgoTjgb4s44GN44KI44Gf44GLDQor44GI44KT44GL44GELOOBn+OBi+OBlw0KK+OBk+OCguOBoCzjgaTjgajjgoANCivjgYrjgYzjgo8s44GT44GG44GE44GhDQor44KE44G+44KA44KJLOOBi+OBmuOBvuOBlQ0KK+OBiOOBruOCguOBqCzjgozjgYTjgZgNCivjgZ/jgYvjgaAs44Gy44GV44Gf44GgDQor44Gq44GL44G/44GeLOOChuOBv+OBkw0KK+OBiuOBi+OCgOOCiSzjgbLjgo3jgZcNCivjgYvjgb/jgbDjgoTjgZcs44Gb44GE44GYDQor44G144GY44KC44KKLOOBv+OBjeOBig0KK+OBj+OCjeOBoCzjgZfjgpPjgYTjgaENCivjgZXjgajjgYYs44KI44KK44GIDQor44KI44GX44KA44KJLOOBn+OBjeOBig0KK+OCguOBn+OBhCzjgZ/jgY/jgZgNCivjgoDjgonjgZ8s44Go44GK44KLDQor44G/44KPLOOBquOBiuOBqA0KK+OBhOOBr+OCiSzjgYjjgb8NCivjgYTjgb7jgYQs44Gf44GL44GXDQor44Gy44GuLOOBi+OBmuOBig0KK+OBvuOBpOOCguOBqCzjgZ/jgYvjgZcNCivjgZvjgags44KI44GG44GYDQor44GP44G+44GM44GELOOChOOBmeOBsuOCjQ0KK+OChOOBvuOBoCzjgojjgZfjgYoNCivjgo/jgZ/jgarjgbks44KG44GG44GTDQor44KE44GV44GLLOOBsuOCjeOBlw0KK+OBleOBqOOBhizjgYLjgY3jgbLjgo0NCivjgb/jgoTjgZ/jgZEs44Gy44KN44Gu44G2DQor44G+44Gk44GG44KJLOOBsuOBqOOBlw0KK+OBvuOBpOOBl+OBnyzjgb7jgZPjgagNCivjgYbjgonjgbks44GE44GV44KADQor44GX44GM44GNLOOBvuOBleOCiOOBlw0KK+OBpuOCieOBoCzjgojjgZfjgbLjgagNCivjgYTjgo/jgoLjgags44KI44GX44GC44GNDQor44GE44Gu44GG44GILOOBmOOCjeOBhg0KK+OCguOBoeOBmuOBjSzjgobjgY3jgYoNCivjgojjgZfjgZrjgb8s44GI44GE44GE44GhDQor44G/44GG44KJLOOBv+OBpOOCiw0KK+OBv+OBmuOBrizjgZ/jgYvjgobjgY0NCivjgojjgZfjgYQs44GY44KF44KT44GE44GhDQor44G144KL44GELOOCiOOBl+OBsuOCjQ0KK+OBr+OChOOBlyzjgZfjgZLjgYLjgY0NCivjgZfjgonjgYTjgZcs44Gy44Gn44GKDQor44GZ44GM44KP44KJLOOBn+OBpOOBig0KK+OBquOBi+OBhCzjgZHjgYTjgYTjgaENCivjga7jgbXjgZgs44KI44GX44Gv44KLDQor44GV44Go44GGLOOBsuOCjeOBi+OBmg0KK+OBj+OCjeOBoCzjgY3jgYTjgaENCivjgYTjgZHjgaAs44Gf44GL44GXDQor44GV44GMLOOBkeOBhOOBlw0KK+OBv+OChOOBi+OCjyzjgYTjgY/jgbLjgZUNCivjgo/jgonjgZfjgaos44GX44GS44KLDQor44GN44Gf44GM44KPLOOBruOBtuOChuOBjQ0KK+OBhOOBvuOBhCzjgbXjgb/jgYLjgY0NCivjgb/jgZXjgY0s44Gy44KN44Gu44G2DQor44GE44GX44GgLOOBn+OBkeOBlw0KK+OCiuOBj+OCiSzjgbLjgafjgYLjgY0NCivjgZfjgofjgYbjgZgs44GT44GG44GE44Gh44KN44GGDQor44G144GP44Gq44GMLOOCiOOBl+OBi+OBmg0KK+OBj+OCjeOBjSzjgZ/jgYvjgYoNCivjgb7jgZ/jgY0s44GX44KH44GG44GW44KTDQor44Gb44GN44GtLOOBvuOBleOBr+OCiw0KK+OChOOBvuOBl+OBnyzjgb/jgaTjgbLjgo0NCivjgZ/jgarjgYss44KI44GX44GC44GNDQor44GK44GK44Gv44G+LOOBvuOBleOBsuOCjQ0KK+OBiuOBiuOBpOOBvCzjgojjgZfjgYLjgY0NCivjgZ/jgYQs44Gy44GV44Gv44KLDQor44Gk44KL44KELOOBvuOBleOBruOCig0KK+OCiOOBl+OBoCzjgojjgYbjgYTjgaENCivjgb7jgZnjgb/jgaQs44Gf44GL44GXDQor44GL44GZ44KELOOBl+OBkuOBig0KK+OCiOOBl+OBoCzjgb/jga7jgosNCivjgYvjgo/jgoDjgoks44Gy44Gn44GNDQor44Gv44KE44GXLOOBj+OBq+OBsuOBkw0KK+OBj+OBq+OCguOBqCzjgb7jgZXjgobjgY0NCivjgYLjgonjgYvjgo8s44Gy44Gq44GTDQor44Gq44GL44KA44KJLOOBvuOBleOBruOCig0KK+OBhOOBl+OBkOOCjSzjgZvjgYTjgZgNCivjga/jgoTjgb8s44GL44Gk44Gy44GTDQor44G/44Gq44G/44Ge44GuLOOBjeOCk+OBmA0KK+OBleOBi+OBnyzjgb/jga7jgosNCivjgYvjgo/jgoLjgags44G144G/44GL44GaDQor44KA44KJ44GK44GLLOOChOOBmeOBruOCig0KK+OBhOOBqOOBhizjgojjgZfjgYoNCivjgo/jgZ/jgarjgbks44G/44Gh44GKDQor44Gu44KA44KJLOOBvuOBleOBi+OBmg0KK+OBleOBqOOBhizjga/jgovjgaoNCivjgo/jgZ/jgarjgbks44Gy44KN44GXDQor44GT44Gw44KE44GXLOOBvuOBleOBi+OBpA0KK+OBrOOCi+OBjSzjgbLjgafjgbLjgZMNCivjgojjgZfjgaAs44KI44GG44GE44GhDQor44GV44GE44Go44GGLOOBsuOCjeOBlw0KK+OBsuOCieOBhCzjgojjgZfjgobjgY0NCivjgY3jgoDjgoks44Gf44GL44GXDQor44GK44GPLOOCjeOBhg0KK+OBr+OChOOBleOBiyzjgoTjgZnjgZMNCivjgYLjgZXjga4s44GR44KT44GYDQor44G144GY44GV44GNLOOBl+OCk+OChA0KK+OBguOBjeOCguOBqCzjgorjgYsNCivjgZfjgb7jgaAs44G+44GV44GIDQor44G/44Ga44GL44G/LOOBvuOBleOBr+OCiw0KK+OBquOBi+OBjOOCjyzjgajjgYrjgosNCivjgZXjgajjgYYs44Gm44Gk44KEDQor44GT44Gw44GX44KKLOOBkeOCk+OBmA0KK+OBguOCieOBjSzjgojjgZfjgYoNCivjgZnjgZrjgY0s44Gq44GK44Go44GXDQor44Gr44GX44GnLOOBm+OBpA0KK+OBiuOBoeOBguOBhCzjgojjgZfjgbLjgZUNCivjga7jgarjgYss44Gf44GL44GXDQor44KE44GZ44GELOOCiuOCheOBhuOBmA0KK+OBk+OBr+OBnyzjgZHjgpPjgYTjgaENCivjgb/jga7jgZfjgb4s44GC44Gk44GKDQor44Gm44KJ44GX44G+LOOBjeOBv+OBsuOBkw0KK+OChOOBj+OCjyzjgojjgZfjgYoNCivjgZnjgYzjgo/jgoks44G/44Gh44GKDQor44G/44Gk44Gv44GXLOOBpuOBpOOCjeOBhg0KK+OBruOCgOOCiSzjga7jgorjgZMNCivjgaHjgofjgYYs44GC44Ga44G/DQor44GV44Go44GGLOOCiuOCh+OBhuOBkw0KK+OBl+OBmuOBr+OCiSzjgozjgYTjgZMNCivjga/jgoTjgZfjgYvjgo8s44GR44KT44GYDQor44Gr44KPLOOCiOOBl+OBig0KK+OBv+OBiOOBrizjgZHjgpPjgYTjgaENCivjgZfjgb7jgaAs44Gy44Gn44GoDQor44Gq44GL44KA44KJLOOBqOOBl+OBig0KK+OBsuOCieOBrizjgorjgofjgYbjgYTjgaENCivjgoTjgb7jgajjgoQs44GL44Ga44Gy44GTDQor44Gk44Gu44GgLOOChOOBmeOBruOCig0KK+OBk+OBsOOChOOBlyzjga7jgbbjgYLjgY0NCivjgZXjgYvjgY/jgoks44GN44KH44GG44GTDQor44G+44Gk44GgLOOBvuOBleOBguOBjQ0KK+OBhOOBvuOCgOOCiSzjgZvjgYTjgZcNCivjgoTjgY7jga/jgZcs44Gq44GK44GTDQor44GK44GO44GuLOOBsuOCjeOBig0KK+OBn+OBquOBiyzjgojjgZfjgb7jgZUNCivjgbLjgYws44KI44GX44GL44GaDQor44GV44GTLOOBpOOBqOOCgA0KK+OBn+OBluOBjSzjgZ/jgoLjgaQNCivjgYTjgYTjgaAs44G+44GV44Gv44KLDQor44GE44GE44GgLOOCiuOCh+OBhuOBmeOBkQ0KK+OBvuOBpOOBkOOBvizjgZfjgZLjgbsNCivjgoDjgonjgZ8s44GR44KTDQor44KE44GZ44KC44GoLOOBvuOBk+OBqA0KK+OBl+OBv+OBmizjgbLjgo3jgZcNCivjgo/jgY/jgYQs44KI44GX44Gf44GLDQor44Gf44GL44Gv44GXLOOCiOOBl+OBig0KK+OBjeOBn+OBhCzjgajjgZfjgbLjgZMNCivjgYLjgaDjgaEs44GX44KH44GG44GE44Gh44KN44GGDQor44Gv44Gq44G244GhLOOBr+OBmOOCgQ0KK+OBleOBqOOBhizjgY/jgavjgbLjgo0NCivjgYLjgonjgYQs44Go44GX44Gy44GTDQor44Gf44GR44Gq44GLLOOBleOBqOOBlw0KK+OBi+OBhCzjgb/jgbvjgZMNCivjgYLjgYvjgaAs44GX44Ga44GKDQor44GP44Gr44GZ44GILOOBsuOCjeOBguOBjQ0KK+OBvuOBiOOBi+OCjyzjgYLjgY3jgokNCivjgb/jgarjgb8s44G/44Gk44GXDQor44Gf44GN44GM44G/LOOBsuOBp+OChuOBjQ0KK+OBvuOBpOOBhCzjgb7jgZPjgagNCivjgZfjgonjgYQs44G+44GV44G/44GhDQor44Gf44GR44KI44GXLOOBm+OBhOOBruOBmeOBkQ0KK+OBn+OBi+OBoCzjgY3jgojjgZ/jgYsNCivjgZ/jgYvjgY4s44Gf44GL44Gy44GTDQor44GP44Gp44GGLOOBjeOCiOOBn+OBiw0KK+OBl+OBvuOBoCzjga7jgbbjgZMNCivjgYvjgajjgYYs44GL44Ga44GKDQor44GX44GO44KH44GGLOOBsuOBp+OBguOBjQ0KK+OBsuOCjeOBrizjgZ3jgYrjgZjjgoMNCivjgY3jga7jgZfjgZ8s44KI44GX44GIDQor44GX44G/44GaLOOBl+OCh+OBhuOBnuOBhg0KK+OBl+OCgOOCiSzjgbLjgo3jgYLjgY0NCivjgY/jgZXjgYvjgoos44G/44G7DQor44GL44KL44G5LOOBqOOBl+OBr+OCiw0KK+OBvuOBpOOCguOBqCzjgarjgYrjgobjgY0NCivjgZfjgb7jgoDjgoks44Go44G+44GVDQor44GL44Gk44GL44KPLOOBn+OBi+OBig0KK+OBhOOBmizjgYTjgZXjgYoNCivjgZXjgY/jgonjgoLjgags44GE44Gk44GYDQor44KC44KK44GfLOOBmOOCjeOBhg0KK+OBn+OBquOBuSzjgY/jgavjgYTjgaENCivjga/jgaPjgajjgoos44G144G/44GoDQor44KK44KF44GG44GULOOBl+OCheOCk+OBhOOBoQ0KK+OBiuOBvuOBpOOBluOCjyzjgb7jgZXjga/jgosNCivjgYrjgajjgo8s44KG44GN44KI44GXDQor44GT44Gg44G+LOOBm+OBhOOBhOOBoQ0KK+OBi+OChOOBl+OBvizjgobjgYbjgZgNCivjgZPjgbDjgoTjgZcs44GX44GS44KLDQor44GP44Gr44GI44GgLOOBvuOBjeOBig0KK+OBk+OBhizjgYvjgZrjgarjgooNCivjgavjgZfjgoTjgb4s44Gy44Go44G/DQor44KP44GgLOOBsuOCjeOChA0KK+OBq+OBl+OCguOBqCzjgZ/jgYvjgZcNCivjgZXjgYTjgajjgYYs44GL44Gk44Gu44KKDQor44Go44GX44G+LOOCiOOBhuOBhOOBoQ0KK+OBiuOBiuOBpOOBiyzjgbvjgZPjgY8NCivjgYrjga4s44G+44GV44KLDQor44GZ44Ga44GNLOOBn+OBi+OBlw0KK+OBleOBj+OCieOBhCzjgZ/jgYvjgZcNCivjgYrjgZzjgY0s44Gf44GL44GXDQor44GK44GL44GgLOOBvuOBleOBv+OBpA0KK+OBiuOBjOOCjyzjgbLjgo3jgZcNCivjgYTjgZHjgYzjgb8s44Gy44Gn44Go44GXDQor44GT44G+44GkLOOBn+OBi+OBruOCig0KK+OCiOOBl+OBhCzjgojjgZfjgYLjgY0NCivjgbLjgonjga4s44GX44KH44GG44GE44GhDQor44Gf44GL44GZ44GLLOOBsuOCjeOBlw0KK+OBr+OBl+OCguOBqCzjgoTjgZnjgobjgY0NCivjgY/jgo/jgYgs44GN44GP44GKDQor44GL44Gt44G+44GkLOOBi+OBreOBsuOBpw0KK+OBvuOBpOOBiizjgZHjgYTjgYTjgaENCivjgYTjgaks44Gf44GL44Gy44GTDQor44GE44GuLOOBmOOCheOCk+OBhOOBoQ0KK+OBleOBhOOBqOOBhizjgZ/jgZHjgZcNCivjgYvjgb/jgoTjgb4s44GT44GG44GYDQor44GT44GX44KC44GoLOOBk+OBhuOBhOOBoQ0KK+OBiuOBiuOBjOOCj+OCiSzjgojjgZfjga7jgbYNCivjgZ/jgYvjga/jgZcs44G+44GT44GoDQor44Gq44GM44G+44GkLOOBl+OCk+OBhOOBoQ0KK+OBmeOBmuOBjSzjgZTjgo3jgYYNCivjgabjgonjgYos44KI44GG44GYDQor44G744KK44GRLOOBi+OBiuOCiw0KK+OBmeOBmuOBjSzjgZ/jgYvjgZcNCivjgYrjgYzjgo8s44GT44GG44GE44GhDQor44G/44KE44KC44GoLOOBruOBtuOBig0KK+OBiuOBiuOBmeOBvyzjgbLjgo3jgobjgY0NCivjgYTjgo/jgbbjgaEs44Gu44G244KE44GZDQor44G+44Gk44GG44KJLOOBn+OBpOOBig0KK+OBleOCj+OBoSzjgaHjgYvjgYoNCivjgabjgonjgaAs44Gb44Gk44GTDQor44GE44Gw44KE44GXLOOChuOBn+OBiw0KK+OBhOOCj+OBmyzjgZjjgoXjgpPjgYTjgaHjgo0NCivjgYrjgYzjgo8s44Gb44GE44GYDQor44GC44GdLOOChOOBmeOBqOOCgg0KK+OBteOBj+OCguOBqCzjgZXjgobjgooNCivjgYTjgacs44G144G/44Gf44GLDQor44GL44KP44GV44GNLOOBpuOBpOOBmA0KK+OBr+OCi+OBqizjgb7jgZXjga7jgooNCivjgZ/jgZjjgb4s44KG44GN44G144G/DQor44GL44Gq44KE44G+LOOCiOOBhuOBmA0KK+OBn+OBquOBiyzjgo/jgZ/jgosNCivjgb7jgaTjgZbjgY0s44G+44GV44GKDQor44GE44Gu44GV44GLLOOBk+OBhuOBmA0KK+OBiuOBl+OChOOBvizjgojjgZfjgbLjgZUNCivjgZ/jgZHjgYbjgaEs44Gf44GL44GXDQor44GV44GV44GK44GLLOOBqOOBl+OChuOBjQ0KK+OBk+OCguOCiizjgb7jgZXjgYLjgY0NCivjgZ/jgZjjgb4s44Gy44KN44GC44GNDQor44GE44GR44GM44G/LOOBkeOCk+OBmA0KK+OChOOBvuOBkOOBoSzjgb7jgZXjgYLjgY0NCivjgYvjgo/jgYvjgb8s44GX44GS44GNDQor44GE44Gb44GNLOOBiOOBhOOBmeOBkQ0KK+OBn+OBkeOBoCzjgbLjgafjgobjgY0NCivjgZ/jgYvjgoTjgZks44G+44Gq44G2DQor44GL44KB44GgLOOBn+OBkeOBqOOBlw0KK+OBteOBmOOBrizjgb7jgZPjgagNCivjgb/jgZXjgY0s44KE44GZ44Gu44KKDQor44Gq44GL44KA44KJLOOBqOOBl+OBguOBjQ0KK+OBiuOBjOOCjyzjgZPjgYbjgZgNCivjgarjgYvjgZbjgo8s44Gy44Gn44Go44GXDQor44Gb44GNLOOChOOBmeOBj+OBqw0KK+OCiOOBl+OBi+OCjyzjgZ/jgY/jgoQNCivjgZ/jgYzjgo8s44Gf44GL44GXDQor44G/44Gf44GrLOOBqOOBl+OBsuOBkw0KK+OBmeOBiOOBnyzjgYLjgY3jgbLjgagNCivjgYTjgazjgYQs44GR44KTDQor44GK44GV44GgLOOBleOBqOOBlw0KK+OBteOCi+OBi+OCjyzjgYvjgaTjgYoNCivjgZnjgZrjgY0s44G+44GT44GoDQor44GN44Gf44KA44KJLOOCiuOCh+OBhuOBmeOBkQ0KK+OBk+OBvuOBpCzjgbLjgo3jgZ/jgYsNCivjgYLjgZXjgaAs44KI44GG44GE44Gh44KN44GGDQor44GL44KT44GW44GNLOOChOOBmeOBvuOBlQ0KK+OBhuOBmeOBhCzjgojjgZfjgbXjgb8NCivjgbXjgovjgoQs44Go44GX44Gy44GTDQor44KI44GR44KA44KJLOOBteOBv+OCiOOBlw0KK+OCiOOBk+OBiCzjgojjgZfjgY0NCivjgYLjgYvjgYTjgo8s44Go44GX44Gy44GTDQor44G144GP44GX44G+LOOBsuOCjeOChOOBmQ0KK+OChOOBmOOBvizjgoTjgZnjgZcNCivjga/jgoks44G/44KG44GNDQor44GN44GX44GgLOOChuOBhuOBnuOBhg0KK+OBj+OBvCzjgb/jgaTjgosNCivjgYvjgZ/jgY7jgoos44KE44GZ44Gu44KKDQor44GE44Gh44GELOOBteOBv+OChA0KK+OBvuOBpOOBjSzjgajjgZfjgYLjgY0NCivjgo/jgZHjgbks44GR44KT44GYDQor44G+44KL44KE44G+LOOBsuOBp+OBig0KK+OBpOOBsOOBjSzjgZfjgZLjgosNCivjgZXjga4s44Gy44KN44GXDQor44G/44KE44KC44GoLOOBvuOBleOBqOOBlw0KK+OBteOBj+OChOOBvizjgb7jgZXjgYLjgY0NCivjgYbjgYjjgoDjgoks44G+44GV44KLDQor44GP44KP44GL44GpLOOCiuOBjQ0KK+OBj+OBq+OBvuOBpCzjgb7jgZXjgosNCivjgYvjgZ/jgYrjgYss44Gu44KK44KG44GNDQor44Go44G/44GfLOOBi+OBmuOBruOCig0KK+OBquOBi+OCgOOCiSzjgYLjgaTjgbLjgZMNCivjgY/jganjgYYs44KI44GX44Gm44KLDQor44GK44G244GhLOOBpuOCi+OBsuOBkw0KK+OCiOOBl+OBi+OCjyzjgajjgYrjgosNCivjgYvjgZLjgoTjgb4s44G+44GT44GoDQor44Go44GgLOOBkeOBhOOBhOOBoQ0KK+OBn+OBi+OBr+OCiSzjgZXjgajjgZcNCivjgb7jgaTjgZfjgZ8s44GX44KT44GYDQor44GT44Gg44GE44KJLOOBsuOBp+OBlw0KK+OBl+OCk+OBi+OBhCzjgoLjgajjgYoNCivjgabjgonjgaAs44G+44GV44Gy44GoDQor44GL44KP44GN44GfLOOBr+OBmOOCgQ0KK+OBv+OBhuOCiSzjgZXjgarjgYgNCivjgYLjgbks44Gy44Go44GXDQor44Gr44GX44GL44KPLOOChuOBjeOBsuOCjQ0KK+OBu+OBneOBoCzjgYTjgo/jgYoNCivjgb7jgZnjgaAs44KI44GX44GKDQor44GL44GW44G+LOOBn+OBkeOBlw0KK+OBguOCieOBvuOBjSzjgYvjgZrjgYoNCivjgo/jgZ/jgazjgY0s44G/44Gk44GODQor44GV44GL44KC44GoLOOBpOOCiOOBlw0KK+OBguOBvuOBjOOBvyzjgZfjgpMNCivjgZPjgpPjga4s44GE44GV44GKDQor44GK44GP44GgLOOCiOOBl+OBruOCig0KK+OBiuOBr+OBjyzjgb/jgaTjgYoNCivjgarjgYvjgoDjgoks44KI44GX44G144G/DQor44Gq44GL44KA44KJLOOChuOBhuOBhOOBoQ0KK+OBhuOBl+OChOOBvizjgobjgY3jgYoNCivjgoTjgZfjgY0s44GC44GE44GE44Gh44KN44GGDQor44GN44Gu44GbLOOBl+OCheOCk+OBhOOBoQ0KK+OCj+OBi+OChOOBvizjgZPjgYbjgYTjgaENCivjgYTjgb7jgYQs44G+44GV44KG44GNDQor44G+44GI44GgLOOBjeOCiOOBlw0KK+OBvuOBpOOBl+OBnyzjgYjjgYTjgZgNCivjgbLjgonjgZDjgaEs44Gy44KN44GXDQor44KP44GgLOOBguOBpOOBkw0KK+OCj+OBn+OBquOBuSzjgZ3jgYbjgYTjgaENCivjgb7jgaTjgYQs44GX44KT44GE44GhDQor44G+44Gk44KC44GoLOOBv+OBjeOBig0KK+OBquOBi+OCgOOCiSzjgZjjgoXjgpPjgYTjgaHjgo0NCivjgZ/jgY3jgZ8s44KI44GX44GoDQor44G+44GZ44GgLOOBqOOCguOBkw0KK+OBv+OChOOBhuOBoSzjgb7jgobjgb8NCivjgZfjgoDjgoks44GV44GL44GIDQor44G+44Gk44GELOOBn+OBjeOBkw0KK+OBr+OCieOBr+OBnyzjgajjgb/jgZ/jgo3jgYYNCivjgbLjgZXjgZ/jgass44GC44Gk44GXDQor44GL44GM44G/LOOBvuOBleOBpOOBkA0KK+OCiOOBl+OCgOOCiSzjgobjgYbjgZgNCivjgYrjgYrjgaTjgYss44GR44GE44GUDQor44Gf44Gq44GLLOOBl+OCk+OBhOOBoQ0KK+OBsuOCieOBrizjgZfjgoXjgYYNCivjgZ/jgZHjgZnjgYgs44Gm44Gk44KEDQor44Gr44GX44GuLOOCiOOBl+OChuOBjQ0KK+OBiuOBiuOBpOOBiyzjgoHjgZDjgb8NCivjgYrjgaAs44GX44KT44GYDQor44GX44G/44GaLOOChuOBn+OBiw0KK+OBr+OBvuOCguOBqCzjgZ/jgYvjgojjgZcNCivjgb/jgoTjgb7jgYgs44G+44GV44Gq44KKDQor44Gq44GM44GX44G+LOOBiOOBhOOBmA0KK+OBv+OBpOOCgSzjgZPjgYbjgZgNCivjgYvjgZTjgZ/jgass44KI44GX44GL44GaDQor44KI44GT44KE44G+LOOBn+OBi+OBteOBvw0KK+OBleOBi+OBnyzjgZHjgpPjgZgNCivjgYrjgYTjgY/jgbws44GC44GN44Gy44GnDQor44GP44KJ44KC44GhLOOBsuOCjeOChA0KK+OBguOCk+OBluOBhCzjgb7jgZXjgobjgY0NCivjgbXjgY/jgZfjgb4s44KK44GIDQor44Gq44GL44KA44KJLOOBsuOBqOOBvw0KK+OBhOOBqOOBhCzjgobjgorjgZMNCivjgbvjgZfjga4s44G/44Gh44GTDQor44GT44GE44GnLOOBsuOCjeOBsuOBkw0KK+OBiuOBluOBjSzjgZjjgoXjgpMNCivjgZvjgZjjgoIs44G+44GV44G/44GhDQor44GZ44Gp44GGLOOBvuOBleOBv+OBpA0KK+OBi+OBmOOCj+OCiSzjgb/jganjgooNCivjgZnjgZrjgY0s44GL44Gk44Gy44KNDQor44G744GX44GuLOOBr+OCi+OBkw0KK+OBquOBi+OCgOOCiSzjgojjgZfjgYLjgY0NCivjgoLjgorjgZ8s44GC44GN44GL44GaDQor44KE44G+44GW44GNLOOBqOOBl+OBsuOBkw0KK+OBiuOBj+OBjOOCjyzjgb7jgZXjgbLjgZMNCivjgarjgYzjga/jgb4s44Gy44KN44KG44GNDQor44KI44GX44KA44KJLOOBguOBjeOBv+OBpA0KK+OBvuOBpOOBoCzjgZ/jgYvjgajjgZcNCivjgbvjgYvjgZ7jga4s44GC44Gk44Gy44GVDQor44GC44G5LOOBqOOBl+OBpOOBkA0KK+OBquOBjOOBhCzjgZPjgYbjgZgNCivjgajjgYzjgZcs44Go44GX44Gy44GoDQor44KE44GW44GNLOOBpuOBhOOBnuOBhg0KK+OChOOBvuOBhuOBoSzjgbLjgafjgY0NCivjgb/jgZXjgY0s44Gq44GK44GNDQor44KI44GX44GgLOOBl+OCk+OBmA0KK+OBquOBi+OCguOBqCzjgZfjgZLjgosNCivjgZfjga7jga/jgoks44Gk44Gt44GL44GaDQor44Gq44GL44Gr44GXLOOBguOBjeOCiQ0KK+OChOOBmOOBvizjgY3jgojjgZcNCivjgajjgojjgbXjgY8s44KG44GG44GYDQor44Gf44GL44GX44G+LOOBi+OBpOOBmA0KK+OBteOBl+OBq+OBlyzjgY3jgb/jgYgNCivjgoDjgYvjgYQs44Gm44Gk44KEDQor44Gr44GX44KA44KJLOOBsuOCjeOChuOBlw0KK+OBi+OCj+OBsOOBnyzjgZXjgajjgZcNCivjgoDjgYvjgYjjgaAs44GV44Go44KLDQor44GX44Gb44GNLOOBhOOBo+OBl+OCkw0KK+OBi+OBn+OBiuOBiyzjgojjgZfjgbLjgacNCivjgarjgYTjgajjgYYs44Gy44KN44GNDQor44G/44GoLOOChOOBmeOBqA0KK+OBiuOBiuOBq+OBlyzjgajjgZfjgo3jgYYNCivjgojjgZPjgoTjgb4s44Gf44GL44GXDQor44Gq44GL44KA44KJLOOBn+OBpOOBguOBjQ0KK+OBhOOBluOCjyzjgbLjgZXjga7jgooNCivjgZ/jgavjgYzjgo8s44Go44G/44GIDQor44GZ44GO44GfLOOChuOBiw0KK+OBiuOBl+OBnyzjgb7jgZXjgobjgY0NCivjgZfjgb7jgaAs44Go44KC44GTDQor44KE44G+44KA44KJLOOBk+OBhuOBhOOBoQ0KK+OBteOBj+OBiuOBiyzjgb7jgZXjgZcNCivjgoTjgarjgoos44Gy44KN44GC44GNDQor44GZ44Ga44GNLOOBl+OCk+OBmA0KK+OBleOBi+OBhCzjgZXjgajjgosNCivjgoTjgb7jgaAs44KG44GN44Gy44KNDQor44KE44G+44GT44GXLOOBl+OBkuOCiw0KK+OBruOCguOBqCzjgajjgZfjgobjgY0NCivjgZ/jgZHjgZfjgZ8s44KC44Go44GNDQor44G/44Gu44GgLOOBl+OBkuOChuOBjQ0KK+OBguOBleOBhCzjgZfjgbsNCivjgoDjga3jgoTjgZks44Gy44Gn44KG44GNDQor44GL44KP44Gr44GXLOOBvuOBk+OBqA0KK+OBleOBi+OBkOOBoSzjgoTjgZnjgbLjgZUNCivjgoTjgb7jgZbjgY0s44Go44GX44Gy44GTDQor44GC44GV44GK44GLLOOBsuOBp+OBruOBtg0KK+OBjeOBruOBl+OBnyzjgb/jgY3jgZ7jgYYNCivjgb/jgb4s44GN44KI44G/DQor44G144GP44KC44KK44GfLOOBl+OBkuOBig0KK+OBi+OBmOOChOOBvizjgojjgZfjgZMNCivjgoTjgb7jgZbjgY0s44GY44KF44KT44GE44GhDQor44GV44Go44GGLOOBqOOBl+OChA0KK+OBi+OCj+OBuSzjgb/jgaTjgbLjgZMNCivjgb7jgovjgoTjgb4s44Gu44G244KI44GXDQor44GK44GM44KJ44GtLOOBruOBtuOBkw0KK+OBqeOBhCzjgobjgYbjgZ7jgYYNCivjgZ/jgarjgYss44G/44Gk44GKDQor44GK44GO44GX44G+LOOBiuOBleOCgA0KK+OBhOOBruOBhuOBiCzjgbLjgo3jgobjgY0NCivjgbXjgovjgoQs44Gy44KN44Gu44KKDQor44G144GP44GELOOBpOOCiOOBlw0KK+OBvuOBmeOBoCzjgZ/jgYvjgbLjgo0NCivjgbvjgpPjgaAs44KG44G/44GTDQor44Gq44GL44Gr44GXLOOBquOBiuOBn+OBiw0KK+OBv+OChOOBvuOBiCzjgarjgYrjgbLjgZMNCivjgYrjgYvjga4s44Gy44Gn44GKDQor44Gw44GwLOOCiOOBhuOBhOOBoeOCjeOBhg0KK+OBoOOBkeOChOOBvizjgZXjgY/jgZMNCivjgoTjgb7jgZDjgaEs44KE44GZ44GKDQor44Gv44KE44GXLOOBqOOBl+OCjeOBhg0KK+OBqOOBv+OBmuOBiyzjgoTjgZnjgbLjgo0NCivjgarjgYvjgavjgZcs44Gv44KL44Gy44GVDQor44GC44G5LOOBr+OBmOOCgQ0KK+OBguOBiuOChOOBjizjgbLjgo3jgZMNCivjgabjgonjgo/jgY0s44GN44KI44GTDQor44GL44Gf44GO44KKLOOBruOBvOOCiw0KK+OBquOBi+OBjOOCjyzjgb7jgZXjgYoNCivjgZPjgbDjgoTjgZcs44GL44Ga44Gy44KNDQor44GG44GI44GgLOOBsuOCjeOBvw0KK+OBteOBmOOCj+OCiSzjgYLjgY3jgbLjgo0NCivjga/jgoTjgZXjgYss44Gf44Gk44G/DQor44GN44KA44KJLOOBsuOCjeOBlw0KK+OBlOOBqOOBhizjgb7jgZXjgbLjgo0NCivjgZfjgoDjgoks44GR44GE44Ge44GGDQor44Gb44GNLOOBqOOBl+OBi+OBmg0KK+OBguOBhOOBluOCjyzjgYLjgY3jgYoNCivjga7jgoDjgoks44GT44GZ44GRDQor44GL44KT44GgLOOBl+OCheOBhuOBmA0KK+OBhuOCieOBhCzjgb7jgZnjgb8NCivjgoLjgajjgoTjgb4s44KI44GX44Gv44KLDQor44GL44G/44KA44KJLOOBpuOBpOOBig0KK+OBsuOCieOBhCzjgb7jgZXjgobjgY0NCivjgYLjgonjgYQs44Go44KC44Gq44KKDQor44GV44GE44Go44GGLOOCiOOBhuOBhOOBoQ0KK+OBvuOBjeOBr+OCiSzjgb7jgZXjgZcNCivjgYrjgYrjgo/jgY8s44GK44GV44KADQor44KC44Gh44Ga44GNLOOBvuOBleOBsuOCjQ0KK+OBr+OCk+OBjOOBhCzjgojjgZfjgbLjgo0NCivjgYTjga7jgYbjgYgs44GL44Ga44Gy44GoDQor44Gq44GM44GE44GXLOOBi+OBpOOBvw0KK+OBq+OBl+OCguOBqCzjgYLjgY3jgokNCivjgaTjgaHjgoQs44GX44KH44GG44GE44GhDQor44G+44Gk44KC44GoLOOBn+OBi+OBlw0KK+OBu+OCkyzjgZfjgofjgYbjgZQNCivjgYTjgo/jgYQs44Gf44Gk44KEDQor44GP44G8LOOBvuOBleOBig0KK+OBr+OBk+OBhCzjgb7jgZXjgYoNCivjgo/jgZ/jgarjgbks44Gu44KK44GKDQor44GZ44GO44GfLOOBqOOBl+OBv+OBpA0KK+OBquOBi+OCgOOCiSzjgYvjgZrjgbLjgo0NCivjgYvjgonjgZXjgY0s44GT44GG44GE44GhDQor44Gu44KK44G+44GkLOOBv+OBpOOBsuOBkw0KK+OBj+OBmeOCguOBqCzjgZ/jgYvjgojjgZcNCivjgavjgZfjgoDjgoks44GV44Go44GXDQor44GT44GZ44GSLOOBvuOBleOBqg0KK+OBteOBj+OBv+OBpCzjgoTjgZnjgb8NCivjgoTjgb7jgZDjgaEs44GV44G244KN44GGDQor44GE44GX44GQ44KNLOOBi+OBmuOBvw0KK+OBqOOBj+OBoCzjgarjgYrjgoQNCivjgYLjgorjgajjgb8s44GY44Gk44KN44GGDQor44Gy44KE44G+LOOBl+OCk+OBhOOBoQ0KK+OBsuOCjeOBmyzjgb7jgZXjgajjgZcNCivjgavjgZfjgaAs44Go44GK44KLDQor44Gv44Gj44Go44KKLOOCiOOBl+OBvw0KK+OBsuOCieOBsOOChOOBlyzjgZHjgpPjgYTjgaENCivjga/jgonjgZfjgb4s44GI44GE44GYDQor44Gv44KJLOOBn+OBv+OBig0KK+OBr+OBvuOBrizjgYvjgZrjgobjgY0NCivjga/jgb7jgaAs44G+44GV44Go44GXDQor44Gv44GX44KC44GoLOOBi+OBpOOBsuOBkw0KK+OBr+OChOOBlyzjgbLjgZXjgZgNCivjgbLjgZDjgaEs44G+44GV44G/DQor44Gy44KJ44GuLOOChuOBn+OBiw0KK+OBu+OCk+OBvizjgb7jgZXjga/jgosNCivjga/jgovjgb7jgZcs44KI44GX44G+44GVDQor44Gv44GX44KC44GoLOOChOOBmeOBig0KK+OBsuOBoCzjgZ/jgYvjgZcNCivjgbLjgonjgZnjgYss44Gh44KH44GG44GYDQor44Gv44GO44KP44KJLOOBk+OBhuOBhOOBoQ0KK+OBr+OBvuOBoCzjgY3jgb/jgYgNCivjga/jgZfjgoLjgags44G/44Gh44Gv44KLDQor44G744KT44G+LOOBv+OCiOOBlw0KK+OBu+OBi+OCiizjgoTjgZnjgbLjgo0NCivjga/jgonjgaAs44G/44Gh44GTDQor44Gv44KE44GXLOOBkeOCk+OBmA0KK+OBu+OCiuOBuSzjgYvjgZrjgYoNCivjga/jgZfjgoLjgags44G+44GV44GKDQor44Gv44Gb44GM44KPLOOBn+OBoOOBi+OBmg0KK+OBsuOCjeOBuSzjgb/jgY3jgYoNCivjga/jgZfjgoLjgags44GL44Ga44G/DQor44Gy44KJ44GuLOOBvuOBleOChuOBjQ0KK+OBr+OBl+OCguOBqCzjgZHjgpMNCivjgbLjgZjjgYvjgZ8s44Gk44GO44GIDQor44GK44GK44Gs44G+LOOBhOOBleOBig0KK+OBr+OBtuOBpCzjgbLjgo3jgobjgY0NCivjgbLjgaDjgYss44GL44Ga44Gy44KNDQor44Gv44GX44KC44GoLOOBjeOCk+OChA0KK+OBr+OBvuOBrizjgarjgYrjgY0NCivjgbLjgZfjgazjgb4s44Gu44G244KG44GNDQor44Gv44KJLOOCiOOBl+OBvw0KK+OBr+OBquOBjSzjgZfjgpPjgYTjgaHjgo3jgYYNCivjga/jgoks44GR44KT44GYDQor44Gv44GMLOOBn+OBkeOBig0KK+OBr+OBquOBoCzjgb7jgZXjga7jgooNCivjgbLjgonjgoTjgarjgY4s44Gu44G244Gf44GLDQor44G744KK44GL44KPLOOBv+OBpOOBruOCig0KK+OBu+OCiuOBi+OCjyzjgZHjgpMNCivjga/jgZfjgoLjgags44GC44GN44GTDQor44Gv44GfLOOBqOOBl+OBsuOBkw0KK+OBsuOCieOBhCzjgZjjgoXjgpMNCivjga/jgonjgZDjgaEs44KE44GZ44G+44GVDQor44Gy44KJ44GKLOOChuOBhuOBhOOBoQ0KK+OBr+OBl+OBmuOCgSzjgYvjgpPjgZ8NCivjgaTjgZgs44G+44Gq44G2DQor44GV44GP44KJ44GW44KPLOOBsuOBp+OBqOOBlw0KK+OBguOBuSzjgZPjgYbjgYTjgaENCivjgYLjgbks44G+44GV44Gy44KNDQor44GC44G5LOOBsuOCjeOBnw0KK+OBguOBuSzjgZPjgYbjgZgNCivjgYLjgbks44GK44GV44KADQor44GC44G5LOOBn+OBi+OBig0KK+OBguOBi+OBjizjgoTjgZnjgbLjgagNCivjgYrjgYvjgoLjgags44GX44Ga44GKDQor44GI44KT44GpLOOBv+OBoeOBkw0KK+OBguOBi+OBhOOBlyzjgaTjga3jga/jgosNCivjgavjgZfjgaos44G+44GT44GoDQor44GC44GN44KC44GoLOOBqOOBl+OBig0KK+OBguOBjeOBmuOBjSzjgb7jgZXjgajjgZcNCivjgbLjgonjgbDjgoTjgZcs44GX44GS44G+44GVDQor44GC44KB44G/44KELOOBguOBjeOCiQ0KK+OBguOBv+OBrizjgYLjgY3jgbLjgo0NCivjgYLjgarjgb8s44G+44GV44GL44GaDQor44GC44Gq44GW44KPLOOBi+OBiuOCiw0KK+OBguOCk+OBqeOBhizjgobjgYbjgZ7jgYYNCivjgYLjgpPjganjgYYs44Gy44KN44GNDQor44GC44GK44KE44G+LOOBvuOBleOBjQ0KK+OBguOBiuOChOOBvizjgZPjgYbjgZgNCivjgYLjgYrjgoTjgb4s44GX44KT44GE44GhDQor44GC44KJ44GELOOBk+OBhuOBhOOBoQ0KK+OBguOCieOBhCzjgb7jgZXjgZcNCivjgYLjgonjgYQs44G+44GT44GoDQor44GC44KJ44GELOOBn+OBvuOBig0KK+OBguOCieOBhCzjgb7jgZXjgoTjgZkNCivjgYLjgonjgY0s44G/44KG44GNDQor44GZ44GM44KP44KJLOOBqOOCguOBvw0KK+OBguOBleOBsizjgZfjgZLjgosNCivjgYLjgZXjgY/jgoks44Gf44GL44GXDQor44GC44GV44G/LOOBteOBv+OBqOOBlw0KK+OBguOBleOCgOOCiSzjgYvjgaTjgb8NCivjgoTjgb7jgZfjgaos44GL44Ga44GKDQor44GC44GV44KKLOOBvuOBleOBkw0KK+OBguOBleOBmizjgajjgoLjgZMNCivjgYLjgaTjgb8s44KI44GX44KG44GNDQor44Gw44KTLOOBsuOCjeOChOOBmQ0KK+OBueOBo+OBl+OChyzjgZHjgYTjgYTjgaENCivjgaHjgbAs44GC44GTDQor44Gh44GL44GN44KILOOBquOBiuOBsuOBlQ0KK+OBoeOCgOOCiSzjgZ/jgb/jgYgNCivjganjgbDjgZcs44Gf44GR44GKDQor44GI44Gw44GXLOOBl+OCh+OBhuOBuOOBhA0KK+OBiOOBs+OBr+OCiSzjgojjgZfjgbXjgb8NCivjgYjjgYzjgb8s44KG44GN44GKDQor44GI44GQ44GhLOOChuOBjeOBn+OBiw0KK+OBiOOBkOOBoSzjgZXjgajjgZcNCivjgYjjgZjjgoos44GZ44GQ44KLDQor44GI44KT44GpLOOBvuOChuOBvw0KK+OBiOOCk+OBqSzjgZ/jgaTjgYoNCivjgYjjga7jgoLjgags44KI44GX44Gk44GQDQor44G144Gh44GuLOOBqOOBiuOCiw0KK+OBteOBmOOBhCzjgYrjgZXjgoANCivjgbXjgZjjgYQs44Gm44GkDQor44GE44GX44GELOOBmOOCheOCkw0KK+OCgOOCieOChOOBvizjgajjgZfjgbLjgZUNCivjgbXjgZjjgYvjgZ8s44Gf44Gk44KEDQor44G144GY44GL44KPLOOBi+OBmuOBqOOCgg0KK+OBteOBmOOBvuOCiyzjgbLjgZXjgagNCivjgbXjgZjjgoLjgags44GP44Gr44Gy44KNDQor44G144GY44KC44GoLOOBn+OBoOOCiOOBlw0KK+OBteOBmOOCguOBqCzjgajjgZfjgYvjgZoNCivjgbXjgZjjga4s44KE44GZ44Go44KCDQor44G144GY44GKLOOBqOOBl+OBguOBjQ0KK+OBteOBmOOBleOBiyzjgZXjgajjgZcNCivjgbXjgZjjgZXjgo8s44Gu44KK44GKDQor44G144GY44GV44KPLOOBn+OBi+OBsuOCjQ0KK+OBteOBmOOBnyzjgb7jgZXjgobjgY0NCivjgbXjgZjjgZ8s44G+44GV44KG44GNDQor44G144GY44KP44KJLOOBqOOBiuOCiw0KK+OBteOBmOOCj+OCiSzjgb7jgZXjgobjgY0NCivjgbXjgZjjgo/jgoks44GX44KT44GX44KH44GGDQor44G144GL44GgLOOBteOBv+OBsuOCjQ0KK+OBteOBi+OBjOOCjyzjgYLjgaTjgbLjgo0NCivjgbXjgYvjga4s44GR44GEDQor44G144GL44KPLOOBm+OBhOOBmA0KK+OBteOBi+OChCzjgajjgZfjgYvjgZoNCivjgbXjgYvjgZbjgo8s44Gy44Go44GXDQor44G144GP44GgLOOBk+OBhuOBmA0KK+OBteOBj+OBhCzjgbLjgo3jgZcNCivjgbXjgY/jgoLjgags44Gy44KN44Gf44GLDQor44G144GP44KC44GoLOOBsuOCjeOBguOBjQ0KK+OBteOBj+OCguOBqCzjgb7jgZXjgbLjgZMNCivjgbXjgY/jgoLjgags44GZ44GZ44KADQor44G144GP44GX44G+LOOBsuOCjeOChuOBjQ0KK+OBteOBj+OBqOOBvyzjgorjgoXjgYbjgZXjgY8NCivjgbXjgarjgY0s44GX44KT44GYDQor44G144KL44GV44KPLOOBn+OCjeOBhg0KK+OBguOBs+OBkyzjgb7jgZXjgobjgY0NCivjgbXjgZss44Gu44KK44GKDQor44G144Gb44GM44KPLOOCiOOBl+OBquOBig0KK+OBteOBl+OBvyzjgarjgYrjgbLjgZUNCivjgY7jgb4s44GL44Ga44KI44GXDQor44GU44G/LOOBvuOBk+OBqA0KK+OBlOOBqOOBhizjga7jgorjgZMNCivjgZTjgajjgYYs44Go44KC44GC44GNDQor44GU44Go44GGLOOBsuOBleOBruOCig0KK+OBkOOCk+OBmCzjgb/jgogNCivjga/jgY7jgo/jgoks44KI44GX44GTDQor44Gv44GO44KP44KJLOOBhOOBoeOCjeOBhg0KK+OBr+OBhOOBrizjgbLjgZXjgojjgZcNCivjga/jgYvjgb7jgaAs44Gu44KK44KG44GNDQor44Gv44G+44GgLOOChuOBjQ0KK+OBr+OBvuOBoCzjgobjgY3jgYoNCivjga/jgb7jgZDjgaEs44GR44KT44GYDQor44Gv44KJLOOBl+OCk+OBhOOBoQ0KK+OBr+OCiSzjgY3jgojjgZ/jgYsNCivjga/jgoks44GP44Gr44Gy44GTDQor44Gv44KJLOOBvuOBleOBquOCig0KK+OBr+OCieOBoCzjgb7jgZnjgb8NCivjga/jgonjgaAs44G/44Gq44GTDQor44Gv44KJ44GgLOOBruOCiuOBkw0KK+OBr+OCieOBkyzjgZ/jgYvjgbLjgo0NCivjga/jgovjgaos44Gf44GL44GC44GNDQor44Gv44Gb44GM44KPLOOBn+OBj+OChA0KK+OBiuOBl+OBvizjgYLjgY3jgokNCivjga/jgZfjgoLjgags44Gf44GL44GXDQor44Gv44Gf44GuLOOBi+OBmuOBsuOCjQ0KK+OBr+OBn+OBluOCjyzjgYvjgZrjgb/jgaENCivjga/jgags44G+44GV44GXDQor44Gv44Gk44G/LOOBguOBmuOBlQ0KK+OBr+OBo+OBqOOCiizjgajjgoLjgobjgY0NCivjga/jgoTjgYvjgo8s44Go44GX44Gy44KNDQor44Gv44KE44GL44KPLOOBguOBpOOCjeOBhg0KK+OBr+OChOOBi+OCjyzjgajjgZfjgbLjgZMNCivjga/jgoTjga4s44GC44Gk44GXDQor44Gv44KE44GbLOOBl+OCk+OBlA0KK+OBr+OChOOBlyzjgZ/jgYvjga/jgosNCivjga/jgoTjgZcs44GL44GK44KKDQor44Gv44KE44GXLOOCiOOBl+OBsuOCjQ0KK+OBr+OChOOBlyzjgZHjgYTjgZgNCivjga/jgoTjgZcs44Gb44GE44GfDQor44GE44KC44GoLOOBvuOBleOCiOOBlw0KK+OBr+OChOOBpCzjgbLjgo3jgZcNCivjgbLjgYzjgY0s44Gy44Gn44GC44GNDQor44Gy44GM44GXLOOBmeOBv+OBkw0KK+OBsuOBrizjgZHjgpPjgZgNCivjgbLjgonjgbDjgoTjgZcs44Gq44GK44GoDQor44Gy44KJ44GuLOOBi+OBmuOBsuOCjQ0KK+OBsuOCieOBrizjgZHjgYTjgYTjgaENCivjgbLjgonjgYrjgYss44G+44KG44G/DQor44Gv44KJ44GV44GNLOOBn+OBpOOChA0KK+OBsuOCieOBpizjgbLjgafjgYoNCivjgbLjgonjgoTjgb4s44Go44GK44KLDQor44Gy44KN44GILOOCiOOBl+OBi+OBmg0KK+OBsuOCjeOBi+OCjyzjgZfjgoXjgYbjgYTjgaENCivjgbLjgo3jgZss44Gy44Gn44Gf44GLDQor44Gy44KN44GXLOOBruOBtuOBkw0KK+OBsuOBleOCgOOBrSzjgZHjgYTjgZMNCivjgbvjgpPjgaAs44GT44GG44GE44GhDQor44G744KK44GL44KPLOOBruOCiuOBguOBjQ0KK+OBu+OCiuOBk+OBlyzjgZfjgpPjgYTjgaENCivjgbvjgorjgZPjgZcs44Gy44KN44KG44GNDQor44G744GXLOOChuOBjeOBig0KK+OBu+OBl+OBkyzjgb7jgZXjgbLjgo0NCivjgbLjgonjgZXjgo8s44GV44Gg44KG44GNDQor44G744Gd44GELOOBl+OCk+OBhOOBoQ0KK+OBsuOCh+OBhuOBqeOBhizjgZ/jgYvjgZcNCivjgbLjgofjgYbjganjgYYs44KG44GG44GZ44GRDQor44GE44G5LOOBl+OCk+OBhOOBoQ0KK+OBhOOBoeOBi+OCjyzjgb7jgZXjgbLjgo0NCivjgYTjgaHjgYvjgo8s44G+44GV44KLDQor44GE44Gh44GL44KPLOOChuOBvw0KK+OBhOOBoeOBruOBv+OChCzjgb/jgaTjgosNCivjgYTjgacs44G/44Gk44KG44GNDQor44GE44GnLOOChuOCig0KK+OBhOOBjOOCieOBlyzjgoTjgZnjgobjgY0NCivjgYTjgYzjgo8s44GN44KI44GXDQor44GE44GQ44GhLOOBl+OCk+OChA0KK+OBhOOBhOOBoCzjgZfjgoXjgYbjgYTjgaENCivjgYTjgYTjgaAs44Gy44KN44GXDQor44GE44GE44GY44G+LOOBk+OBhuOBhOOBoQ0KK+OBhOOBhOOBpOOBiyzjga7jgbbjgYoNCivjgYTjgYTjgZrjgYss44GL44Ga44Gu44KKDQor44GE44GE44Ga44GLLOOBguOCiuOBlQ0KK+OBhOOBi+OCieOBlyzjgajjgoLjgY0NCivjgYTjgZHjgaAs44Gq44GK44GNDQor44GE44GR44GgLOOBvuOBleOBteOBvw0KK+OBhOOBkeOBoCzjgZjjgoXjgpMNCivjgYTjgZHjgaAs44Gy44Gn44GoDQor44GE44GR44Gq44GMLOOBsuOCjeOBig0KK+OBv+OBpOOCguOBqCzjgbLjgo3jgZ/jgYsNCivjgYTjgZHjgoTjgb4s44Gy44KN44KG44GNDQor44GE44GR44GWLOOBsuOBqOOBlw0KK+OBhOOBkeOBluOBjSzjgYrjgZXjgoANCivjgYTjgY/jgZ8s44Gm44KL44KG44GNDQor44GE44G+44GELOOCiOOBl+OBruOCig0KK+OBhOOBvuOBhOOBmuOBvyzjga7jgorjgbLjgo0NCivjgYTjgb7jgoDjgoks44Gy44KN44KG44GNDQor44GE44G+44KA44KJLOOBiOOBhOOCig0KK+OBhOOBvuOBq+OBlyzjgajjgoLjgbLjgo0NCivjgYTjgarjgYzjgY0s44GL44GK44KKDQor44GE44Gq44GM44GNLOOBi+OBpOOChuOBjQ0KK+OBhOOBquOBjOOCjyzjgZ/jgaTjgoQNCivjgYTjgarjgbss44G+44GV44KLDQor44GE44Gq44G/LOOBsuOCjeOBv+OBoQ0KK+OBhOOBquOBpOOBkCzjgb/jgZXjgYoNCivjgYTjgarjgojjgZcs44Gf44Gk44GKDQor44GE44GuLOOBi+OBmuOBqA0KK+OBhOOBruOBiuOBiyzjgZfjgpPjgoQNCivjgYTjga7jgYbjgYgs44Gf44GL44KG44GNDQor44GE44Gu44GG44GILOOBn+OBkeOBlw0KK+OBhOOBruOBhuOBiCzjgbLjgafjgYvjgZoNCivjgYTjga7jgYbjgYgs44Gf44GL44GXDQor44GE44Gu44GG44GILOOBn+OBi+OBguOBjQ0KK+OBhOOBruOBhuOBiCzjgobjgYbjgYTjgaENCivjgYTjga7jgYbjgYgs44GN44GP44GKDQor44GE44KK44GV44KPLOOBguOBjeOBsuOBkw0KK+OBhOOBmyzjgobjgY3jgYoNCivjgYTjgZvjgY0s44GL44Gk44KEDQor44GE44GX44GgLOOChOOBmeOBruOCig0KK+OBhOOBl+OBoCzjgaTjgojjgZcNCivjgYrjgYvjgaAs44Gv44KL44G/DQor44GE44GX44GELOOBiOOBhOOBmA0KK+OChOOBvuOBoCzjgbLjgo3jgbbjgb8NCivjgZnjgY7jga/jgoks44Gy44KN44Gf44GLDQor44GE44GX44GL44KPLOOBi+OBpOOCiQ0KK+OBhOOBl+OBi+OCjyzjgb7jgZXjgZMNCivjgYTjgZfjgYvjgo8s44G+44GV44G/DQor44GE44GX44G+44KLLOOBruOCiuOBkw0KK+OBhOOBl+OCguOBqCzjgZ/jgaTjgYoNCivjgYTjgZfjgoLjgags44G+44GV44Gy44KNDQor44GE44GX44KC44GoLOOBkeOCk+OBmA0KK+OBhOOBl+OBrizjgYvjgY/jgYTjgaHjgo3jgYYNCivjgYTjgZfjgaTjgYss44GV44Go44GXDQor44GE44GX44KP44GfLOOBn+OBj+OChA0KK+OBhOOBl+OCj+OBnyzjgobjgYbjgZgNCivjgbLjgonjgbDjgoTjgZcs44GI44GE44GYDQor44GE44GX44GW44GNLOOCguOBqOOBruOCig0KK+OBhOOBl+OBmuOBiyzjgajjgYrjgosNCivjgYTjgZ3jgaAs44Gf44GR44GXDQor44Go44GK44GLLOOBqOOBl+OChuOBjQ0KK+OBj+OCiuOBr+OCiSzjgZHjgYTjgZgNCivjgYTjgajjgYYs44GR44KT44GE44GhDQor44GE44Go44GGLOOCiOOBl+OBguOBjQ0KK+OBhOOBqOOBhizjgYjjgaTjgY0NCivjgYTjgajjgYYs44KI44GG44GYDQor44GE44Go44GGLOOBleOBqOOBlw0KK+OBhOOBoeOChOOBquOBjizjgZfjgZLjgbLjgagNCivjgYTjgajjgYYs44Gk44Gt44Gy44KNDQor44Gq44GM44GfLOOBi+OBpOOBvw0KK+OBhOOBqOOBhizjgZ/jgYvjga/jgosNCivjgYvjgb/jgYvjgo8s44Gf44Gg44G/44GkDQor44GE44KP44GELOOBruOBvOOCiw0KK+OBhOOCj+OBi+OCjyzjgabjgovjgbLjgZUNCivjgYTjgo/jgb8s44Go44GX44Gy44GTDQor44GE44KP44G/LOOBn+OBi+OBlw0KK+OBhOOCj+OCguOBqCzjgajjgoLjgZMNCivjgYTjgo/jgarjgYws44G+44GV44Gy44KNDQor44GE44KP44GV44GNLOOBkeOBhOOBkw0KK+OBhOOCj+OBleOBjSzjgbXjgb/jgYvjgZoNCivjgYTjgo/jgZss44Gy44KN44KG44GNDQor44GE44KP44GX44GfLOOBiuOBleOCgA0KK+OBhOOCj+OBnyzjgZPjgYbjgZvjgYQNCivjgYTjgo/jgZ8s44GV44Go44GXDQor44GE44KP44Gf44GmLOOBsuOBp+OBjQ0KK+OBhOOBmuOBvyzjgb/jgo8NCivjgZjjgpPjga4s44Gf44GL44KE44GZDQor44GL44GM44KPLOOBsuOBp+OBig0KK+OBi+OBhOOBrOOBvizjga7jgbbjgYoNCivjgYvjgZjjgZ8s44Gf44GL44G/44GhDQor44GL44GR44GM44KPLOOBi+OBmuOBn+OBiw0KK+OBi+OBjeOBrOOBvizjgarjgYrjgY0NCivjgYvjgb7jgaAs44Gf44GL44Gy44KNDQor44GL44G+44GfLOOBsuOCjeOBjQ0KK+OBi+OCgeOBn+OBqyzjgY/jgavjgYLjgY0NCivjgYvjgb8s44G+44GV44Gu44KKDQor44GL44G/44KA44KJLOOBvuOBleOBlw0KK+OBi+OBv+OChOOBvizjgb7jgZXjgobjgY0NCivjgYvjgarjgYbjgaEs44Gf44GL44KG44GNDQor44Gf44GR44GG44GhLOOBv+OBjQ0KK+OBi+OBreOBkyzjgoTjgZnjga7jgbYNCivjgYvjga3jgZMs44KE44GZ44GNDQor44GL44KT44Gs44GNLOOBm+OBhOOBhOOBoQ0KK+OBi+OBruOBhizjgY3jgojjgY/jgasNCivjgYvjgonjga/jgZcs44Gy44KN44GC44GNDQor44GL44GV44GELOOBv+OBruOCiw0KK+OBruOCgOOCiSzjgYjjgb/jgZMNCivjgYvjgZXjgYQs44KC44KC44GTDQor44GL44GbLOOBmOOCheOCk+OBhOOBoQ0KK+OBi+OBl+OBj+OCiSzjgojjgZfjgo3jgYYNCivjgYvjgZfjgoDjgoks44GV44Go44GXDQor44GL44GX44KP44GOLOOBi+OCiOOBkw0KK+OBi+OBn+OBrizjgabjgovjgbLjgZUNCivjgYvjgZ/jgYrjgYss44KE44GZ44GXDQor44GL44Go44GGLOOBiuOBleOCgA0KK+OBi+OBqOOBhizjgarjgYrjgY0NCivjgYvjgajjgYYs44GR44GEDQor44GL44Go44GGLOOBvuOBleOBr+OCiw0KK+OBi+OBqOOBhizjgZ/jgYvjgYLjgY0NCivjgYvjgajjgYYs44Gf44GL44GXDQor44GL44Go44GG44GK44GLLOOChuOBi+OCig0KK+OBi+OBpOOBhCzjgZgNCivjgYvjgaTjgb7jgZ8s44G/44Gu44KLDQor44GL44KP44Gw44GfLOOBn+OBi+OBig0KK+OBi+OCj+OBoeOChCzjgajjgZfjgYLjgY0NCivjgYvjgo/jgaAs44KK44Gb44GEDQor44GL44KP44GgLOOBsuOCjeOChuOBjQ0KK+OBhOOCiuOBleOCjyzjgbXjgb/jgYoNCivjgYvjgo/jgYQs44G/44KPDQor44GL44KP44GL44G/LOOBkeOCk+OBmA0KK+OBi+OCj+OBi+OBvyzjgb/jga7jgosNCivjgYvjgo/jgb8s44GC44GN44KJDQor44GL44KP44KA44KJLOOBkeOCk+OBmA0KK+OBhOOBl+OBhCzjgoTjgZnjgY0NCivjgYvjgo/jga4s44G+44GV44Gy44KNDQor44GL44KP44KA44KJLOOBjeOCiOOBsuOCjQ0KK+OBi+OCj+OBleOBjSzjga7jgbbjgobjgY0NCivjgYvjgo/jgZss44Gq44GK44GNDQor44GL44KP44GbLOOBsuOCjeOBlw0KK+OBi+OCj+OBmyzjgYjjgYTjgZgNCivjgYvjgo/jgZfjgb4s44GI44GE44GTDQor44GL44KP44Gf44GrLOOBj+OBq+OBsuOBkw0KK+OBkeOBhOOBoCzjgb7jgZXjgYLjgY0NCivjgY3jgaAs44GX44GS44GTDQor44GN44Gg44GhLOOBl+OBkuOBig0KK+OBjeOBr+OCiSzjgajjgoLjgYgNCivjgY3jgY/jgYvjgo8s44KG44GL44KKDQor44GN44KC44GoLOOBvuOBleOBsuOBpw0KK+OBjeOCgOOCiSzjgZHjgpPjgYTjgaENCivjgYvjgb7jgZ8s44Gy44KN44KG44GNDQor44GE44GP44G/LOOBvuOChuOBvw0KK+OBjeOBruOBl+OBnyzjgZfjgZLjgYvjgZoNCivjgY3jga7jgYbjgaEs44G+44GNDQor44GN44GXLOOBn+OBj+OBlw0KK+OBjeOBl+OCguOBqCzjgYvjgZrjgbLjgo0NCivjgY3jgYbjgaEs44Go44KI44GC44GNDQor44GT44GwLOOBsuOCjeOChuOBjQ0KK+OCguOCiizjgbLjgafjgY0NCivjgZPjgbDjgoTjgYvjgo8s44Gf44GR44GXDQor44GP44G844GfLOOBsuOBqOOBlw0KK+OBk+OBsOOChOOBlyzjgabjgaTjgoQNCivjgYrjgYrjgYvjgo8s44GX44KTDQor44GT44Gw44KE44GXLOOBpuOBpOOBmA0KK+OBk+OBsOOChOOBlyzjgY3jgojjga7jgooNCivjgZPjgb7jgZ8s44GI44GE44Gf44GkDQor44GT44Gw44KE44GXLOOBi+OBpOOBvw0KK+OBk+OBsOOChOOBlyzjgYvjgaTjgobjgY0NCivjgZPjgbDjgoTjgZcs44GL44Ga44Gy44GTDQor44GT44Gg44G+LOOChOOBmeOBlw0KK+OBk+OBiOOBmCzjgaTjgajjgoANCivjgZPjgZDjgaEs44GR44KT44GYDQor44GT44Gv44GfLOOBqOOBl+OBsuOBkw0KK+OBk+OBsuOCiSzjgY3jgb/jgYoNCivjgarjgYvjgYzjgo8s44KK44GI44GTDQor44GT44KE44G+LOOBguOBjeOCiQ0KK+OBk+OBhOOBpyzjgojjgZfjgo3jgYYNCivjgZPjgYTjgacs44GY44KF44KTDQor44GT44GE44GRLOOBl+OBkuOCiw0KK+OBk+OBhOOBmuOBvyzjgoLjgajjgZMNCivjgZPjgZjjgb4s44Gf44GP44KEDQor44GT44GR44GQ44GhLOOChOOBmeOBvuOBlQ0KK+OBk+OBj+OBvCzjgojjgYbjgZMNCivjgZPjgb7jgaQs44Gf44GL44GTDQor44GT44G+44GkLOOChuOBv+OBkw0KK+OBk+OBv+OChCzjgojjgYbjgZgNCivjgZPjgpPjgaks44GL44Ga44Go44GXDQor44GT44KT44GpLOOBguOBjeOCiQ0KK+OBk+OCk+OBqSzjgb/jgYgNCivjgZPjgpPjgaks44Gf44GL44KG44GNDQor44GT44KT44GpLOOBn+OBpOOBig0KK+OBk+OBq+OBlyzjgZ/jgYvjgZMNCivjgZPjgZXjgYss44G+44GV44Gy44KNDQor44GT44Gb44GNLOOBqOOBl+OBsuOBkw0KK+OBk+OBl+OBhOOBlyzjgZ/jgaTjgoQNCivjgZPjgZfjgYos44G+44GV44Go44GXDQor44GT44GZ44GSLOOBqOOBl+OBguOBjQ0KK+OBk+OBhuOChCzjgb7jgZXjga7jgooNCivjgZPjgoTjgb4s44GL44Ga44GXDQor44GT44KE44G+LOOBiuOBleOCgA0KK+OBn+OBkeOBoSzjgZfjgoXjgYbjgZ7jgYYNCivjgY/jgbws44Go44GX44KEDQor44GP44G8LOOBpOOBqOOCgA0KK+OBj+OBvCzjgbXjgb/jgY0NCivjgY/jgYzjgYQs44Gf44GL44KG44GNDQor44GE44GL44KJ44GXLOOBi+OBmuOBsuOCjQ0KK+OBj+OBvuOBluOCjyzjga7jgbbjgZMNCivjgY/jgavjgb/jgaQs44Gy44GV44KI44GXDQor44GP44GuLOOBm+OBhOOBlw0KK+OBu+OBl+OBrizjgajjgZfjgoQNCivjgY/jgonjgZfjgZIs44GT44GG44GYDQor44GP44KK44Gv44KJLOOBv+OBiw0KK+OBquOBi+OBjOOCjyzjgZfjgofjgYbjgYTjgaENCivjgoTjgarjgY7jgaAs44KG44GN44GKDQor44GP44KK44KE44G+LOOBsuOBp+OBguOBjQ0KK+OBj+OCjeOBi+OCjyzjgbLjgafjgobjgY0NCivjgY/jgZXjgYvjgo8s44GR44GE44GE44GhDQor44GP44GV44Gq44GOLOOBiuOBleOCgA0KK+OBj+OBleOBrizjgbLjgafjgbLjgZMNCivjgY/jgZss44GV44Go44KLDQor44GP44GX44GgLOOBoeOBiA0KK+OBj+OBmeOBoCzjgZPjgYbjgYTjgaHjgo3jgYYNCivjgY/jgZnjgY0s44Gh44GI44GTDQor44GP44GZ44G/LOOChuOBn+OBiw0KK+OBvuOBiOOBoCzjgZ/jgaTjgoQNCivjgb7jgYjjgaAs44GC44GN44GKDQor44G+44GI44GL44KPLOOBsuOCjeOBkw0KK+OBvuOBiOOBi+OCjyzjgZ/jgYvjgYoNCivjgb7jgYzjgorjgbXjgaEs44KI44GX44GKDQor44G+44GN44GuLOOBoeOBsuOCjQ0KK+OBvuOBjeOBrizjgZHjgpPjgZgNCivjgb7jgarjgbks44G+44GV44KIDQor44GC44GM44Gk44G+LOOBn+OBpOOChuOBjQ0KK+OBvuOCi+OBiizjgZfjgZLjgosNCivjgb7jgovjgZ8s44Gq44GK44GNDQor44G+44KL44KE44G+LOOChuOBiw0KK+OBvuOCi+OChOOBvizjgb7jgZPjgagNCivjgb7jgovjgoTjgb4s44Gf44GL44Gy44KNDQor44G+44KL44KE44G+LOOChuOBhuOBmA0KK+OBvuOBmeOBoCzjgabjgovjgb/jgaQNCivjgb7jgZnjgaAs44Go44GX44KEDQor44GL44KT44Gw44KJLOOBhOOBmuOBvw0KK+OBvuOBpOOBsOOCiSzjgbLjgo3jgZcNCivjgarjgYvjgoDjgoks44Gh44Go44GbDQor44G+44Gk44GgLOOBj+OBq+OBruOCig0KK+OBvuOBpOOBoCzjgb7jgZXjgobjgY0NCivjgb7jgaTjgYQs44Gy44KN44KG44GNDQor44G+44Gk44GELOOCiOOBl+OBruOCig0KK+OBvuOBpOOBhCzjgZfjgoXjgYbjgYTjgaHjgo3jgYYNCivjgb7jgaTjgYQs44Gh44KI44GTDQor44G+44Gk44KC44GoLOOBguOBpOOBlw0KK+OBvuOBpOOCguOBqCzjgZHjgpPjgZgNCivjgb7jgaTjgoLjgags44G+44GV44GL44GkDQor44G+44Gk44KC44GoLOOBl+OCk+OChA0KK+OBvuOBpOOBiuOBiyzjgb/jgbsNCivjgarjgovjgZss44KK44KF44GG44GYDQor44G+44Gk44KELOOBruOBtuOBsuOBkw0KK+OCgeOBluOCjyzjgbLjgajjgZcNCivjgb/jgY7jgZ8s44G+44KG44G/DQor44G/44GL44G/LOOBl+OCh+OBhuOBmA0KK+OBv+OCgOOCiSzjgYvjgZrjgoQNCivjgoTjgarjgY4s44GT44GG44GE44GhDQor44G/44Gq44GL44GfLOOBvuOBleOChuOBjQ0KK+OBv+OBrSzjgb7jgZXjgoTjgZkNCivjgb/jga0s44KE44GZ44GI44GEDQor44G/44Gu44KPLOOBjeOCiOOBiA0KK+OBv+OBleOCjyzjgb7jgY3jgZMNCivjgb/jgZXjgo8s44Gf44GL44Gy44KNDQor44G/44GX44G+LOOBpOOCiOOBlw0KK+OBv+OBn+OCgOOCiSzjgajjgoLjgbLjgo0NCivjgb/jgags44Gu44G244GKDQor44G/44Gk44Gy44KJLOOBvuOCiuOBkw0KK+OBv+OBpOOBhOOBlyzjgb7jgZXjgbXjgb8NCivjgb/jgaTjgarjgoos44Gf44GL44GIDQor44G/44GG44KJLOOBsuOCjeOBi+OBmg0KK+OBv+OChOOBuSzjgZHjgpPjgZgNCivjgb/jgoTjgZjjgb4s44GX44GS44GNDQor44G/44KE44KC44GoLOOBl+OBkuOCiw0KK+OBv+OChOOCguOBqCzjgajjgoLjgb8NCivjgb/jgoTjgZXjgYss44KG44GG44GE44Gh44KNDQor44G/44KE44GV44GLLOOBkeOCk+OBhOOBoeOCjQ0KK+OBv+OChOOBl+OBnyzjgbLjgo3jgYsNCivjgb/jgoTjgZfjgZ8s44GY44KF44KT44GTDQor44G/44KE44GW44GNLOOBruOCiuOBl+OBkg0KK+OBv+OChOOBluOCjyzjgYvjgaTjgb8NCivjgb/jgoTjgZbjgo8s44Gf44GL44KG44GNDQor44G/44Ge44Gv44GXLOOBn+OBkeOBsuOBkw0KK+OBleOBi+OBhCzjgbLjgo3jgZcNCivjgb/jgZrjga4s44Gy44KN44GC44GNDQor44G/44Ga44GK44GhLOOBn+OBi+OBig0KK+OBv+OBmuOBl+OBvizjgZHjgpPjgZgNCivjgb/jgZrjgZ8s44GR44KT44GYDQor44KC44Gh44Gv44KJLOOBj+OBqw0KK+OCguOBoeOBmuOBjSzjgZPjgYbjgYTjgaENCivjgoLjgoLjgZss44GX44KF44GG44GE44GhDQor44KC44KKLOOBsuOCjeOBjQ0KK+OCguOCiizjgYLjgY3jgbLjgo0NCivjgoLjgoos44Gh44GIDQor44KC44KKLOOBr+OBmuOBjQ0KK+OCguOCiizjgbLjgafjgY0NCivjgoLjgoos44G+44KC44KLDQor44KC44KK44GL44KPLOOBvuOBleOCiA0KK+OCguOCiuOCguOBqCzjgoTjgZnjgbLjgo0NCivjgoLjgorjgoLjgags44GT44GG44GE44GhDQor44KC44KK44KC44GoLOOBvuOBquOBtg0KK+OCguOCiuOCgOOCiSzjgZfjgpPjgYTjgaENCivjgoLjgorjga4s44GL44Ga44G/DQor44KC44KK44GV44KPLOOBj+OBq+OBi+OBmg0KK+OBl+OBvuOBiuOBiyzjgYrjgZXjgoANCivjgoLjgorjgZfjgZ8s44KG44GLDQor44KC44KK44KE44G+LOOBsuOCjeOBkw0KK+OCguOCjeOBiuOBiyzjgb/jgaTjgbLjgo0NCivjgoLjgo3jgajjgb8s44Gq44GK44GNDQor44KC44Go44GNLOOBn+OBoOOBqOOBlw0KK+OCguOBqOOBrizjgYvjgaTjgobjgY0NCivjgoLjgajjgZ/jgYss44Gy44Gn44GNDQor44KA44GQ44KL44G+LOOBn+OBj+OBmA0KK+OCgOOBi+OBhCzjgojjgZfjgb8NCivjgYLjgpPjganjgYYs44GE44KP44GKDQor44Gv44GtLOOBk+OBhuOBjQ0KK+OCgOOCieOBi+OBvyzjgajjgZfjgYvjgZoNCivjgoDjgonjgb7jgaQs44Gk44Go44KADQor44KA44KJ44GX44GSLOOBi+OBmuOChuOBjQ0KK+OBl+OCguOCgOOCiSzjgZjjgoXjgpMNCivjgoDjgonjgZ8s44G+44GT44GoDQor44G/44KH44GG44GMLOOBn+OBi+OChuOBjQ0KK+OBquOBjOOBr+OCiSzjgbLjgo3jgZcNCivjgYTjgajjgYYs44GL44Gk44G/DQor44Gq44GM44GELOOBkeOBhOOBnw0KK+OBquOBjOOBhCzjgajjgYrjgosNCivjgYTjgo/jgags44KI44GX44GNDQor44Gf44GR44GX44GSLOOBoeOBu+OBkw0KK+OBquOBjOOBiizjgYLjgY3jgbLjgo0NCivjgarjgYzjgYos44G/44Gh44Gu44KKDQor44Gq44GM44GKLOOBhOOBleOBiA0KK+OBteOBj+OBpOOBiyzjgZHjgYTjgZMNCivjgarjgYzjgZXjgo8s44Gy44Gn44GNDQor44Gq44GM44GV44KPLOOChOOBmeOBsuOCjQ0KK+OBquOBjOOBmyzjgZnjgZnjgoANCivjgarjgYzjgZfjgb4s44GC44GN44GKDQor44Gq44GM44Gf44GrLOOBteOBv+OBsuOBkw0KK+OBquOBjOOCj+OBjSzjgbLjgo3jgoTjgZkNCivjgarjgYzjgoTjgb4s44G+44GV44Gy44GnDQor44Gq44GU44KELOOCguOCiuOBig0KK+OBquOBhOOBqOOBhizjga7jgbbjgobjgY0NCivjgarjgYTjgajjgYYs44GV44Gg44G/44GkDQor44Gq44GL44GgLOOBn+OBj+OChA0KK+OBquOBi+OBjOOBjSzjgbLjgo3jgYLjgY0NCivjgarjgYvjgYzjgo8s44Gm44KL44Gu44G2DQor44Gq44GL44GM44KPLOOBqOOBl+OBsuOCjQ0KK+OBquOBi+OBjOOCjyzjgoTjgZnjgbLjgo0NCivjgarjgYvjgYzjgo8s44G+44GV44GXDQor44Gq44GL44GY44G+LOOBqOOBiuOCiw0KK+OBu+OCiuOBhuOBoSzjgajjgojjgZgNCivjgarjgYvjga/jgoks44GL44Ga44Gy44GoDQor44Gq44GL44GY44G+LOOBi+OBmuOChuOBjQ0KK+OBquOBi+OBmOOBvizjgZPjgYbjgZgNCivjgY3jgY/jgZ8s44G/44GLDQor44Gq44GL44GY44G+LOOBqOOBl+OBguOBjQ0KK+OBquOBi+OBvuOCiyzjgajjgZfjgZMNCivjgarjgYvjgoDjgoks44KI44GXDQor44Gq44GL44KA44KJLOOBvuOBk+OBqA0KK+OBquOBi+OCgOOCiSzjgaHjgYgNCivjgarjgYvjgoDjgoks44Gu44KK44GTDQor44Gq44GL44KA44KJLOOBn+OBi+OBig0KK+OBquOBi+OCgOOCiSzjgZ/jgYvjgZcNCivjgarjgYvjgoDjgoks44KK44KF44GG44GE44GhDQor44Gq44GL44KA44KJLOOBl+OBkuOBi+OBmg0KK+OBr+OBo+OBqOOCiizjgb7jgarjgbYNCivjgarjgYvjgoDjgoks44GV44G244KN44GGDQor44Gq44GL44KA44KJLOOBqOOBiuOCiw0KK+OBquOBi+OCgOOCiSzjgZ/jgaTjgZgNCivjgb/jgoTjgoLjgags44GE44Ga44KLDQor44Gq44GL44Gr44GXLOOBsuOBp+OBqA0KK+OBquOBi+OBq+OBlyzjgZnjgarjgYoNCivjgarjgYvjga4s44KI44GX44GC44GNDQor44Gq44GL44GuLOOBoeOChuOBjQ0KK+OBquOBi+OBrizjgoTjgZnjgbLjgacNCivjgarjgYvjga4s44GK44GV44KADQor44Gq44GL44GuLOOBpOOBi+OBlQ0KK+OBquOBi+OBrizjgZHjgYQNCivjgarjgYvjga4s44KI44GX44Gu44G2DQor44Gq44GL44GKLOOBn+OBi+OBsuOCjQ0KK+OBquOBi+OBiuOBiyzjgb7jgZXjgYvjgaQNCivjgarjgYvjgZfjgb4s44GX44KT44GE44GhDQor44Gq44GL44GX44G+LOOBi+OBmuOBquOCig0KK+OBl+OBquOBoCzjgYLjgY3jgokNCivjgarjgYvjgZ8s44GL44Ga44Gq44KKDQor44Gq44GL44KELOOBn+OBj+OBmA0KK+OBleOBhOOBi+OCjyzjgbLjgajjgZcNCivjga/jgZvjgYzjgo8s44Gy44KN44GXDQor44Gq44GL44GW44KPLOOBvuOBvw0KK+OBquOBvuOBpCzjgb7jgb8NCivjgarjgorjgZ8s44Gf44GP44GYDQor44Gq44GZ44GuLOOBn+OBi+OBguOBjQ0KK+OBreOCguOBqCzjgb/jga3jgYLjgY0NCivjga3jgYrjgYQs44G+44GT44GoDQor44Gt44GaLOOBquOBiuOBjQ0KK+OBq+OBhOOCgOOCiSzjgYvjgZrjgb7jgZUNCivjgavjgYTjgoTjgb4s44Gh44GL44GSDQor44Gr44GE44KE44G+LOOBsuOCjeOBlw0KK+OBq+OBruOBv+OChCzjgbLjgo3jgZcNCivjgavjga7jgb/jgoQs44GL44Ga44GC44GNDQor44Gr44GXLOOBn+OBi+OBig0KK+OBq+OBl+OBoCzjgb7jgZXjga7jgooNCivjgavjgZfjgaAs44G+44GV44GXDQor44Gr44GX44Gp44GuLOOCiOOBl+OBruOCig0KK+OBq+OBl+OBi+OCjyzjgYLjgY3jgokNCivjgavjgZfjgY3jgaks44GC44GN44Gy44GTDQor44Gr44GX44KA44KJLOOBguOBjeOCiQ0KK+OBq+OBl+OBqizjgaDjgYTjgYTjgaQNCivjgavjgZfjgYos44GY44KF44KT44GYDQor44GE44Gu44GG44GILOOBi+OBmuOBqOOBlw0KK+OBq+OBl+OBluOCjyzjgZ/jgYvjgYLjgY0NCivjgavjgZfjgZrjgYss44Go44GX44KEDQor44Gr44Gj44GfLOOBsuOBqOOBvw0KK+OBruOBoCzjgo/jgYvjgZMNCivjga7jgoDjgoks44GV44Go44GXDQor44Gu44Gu44KA44KJLOOBsuOCjeOChuOBjQ0KK+OBruOCiuOBr+OBlyzjgYTjgZXjgYoNCivjgbLjga4s44GL44Ga44KG44GNDQor44Gu44GW44GNLOOBl+OCkw0KK+OBruOBluOCjyzjgb7jgZXjgbLjgo0NCivjgazjgb7jga4s44Gu44G244GTDQor44GK44Gz44GbLOOBsuOCjeOBjQ0KK+OBiuOBvOOBi+OBnyzjgZHjgpPjgZnjgZENCivjgYrjgaEs44GC44GN44Gy44KNDQor44Gv44Gb44GM44KPLOOBv+OBpOOBguOBjQ0KK+OBvuOBquOBuSzjgbLjgo3jgobjgY0NCivjgYrjgaAs44GL44Gk44G/DQor44GK44GgLOOBl+OCk+OBmeOBkQ0KK+OBiuOBoCzjgbLjgafjgbLjgo0NCivjgYrjgaAs44GY44KF44KT44GTDQor44GK44Gg44GP44KJLOOBjuOChw0KK+OBiuOBjOOBnyzjgbLjgajjgZcNCivjgYrjgYzjgo8s44Go44GX44Gy44GTDQor44GC44G5LOOCiOOBhuOBmeOBkQ0KK+OBiuOBkOOBoSzjgZPjgYbjgY0NCivjgYrjgZDjgb4s44G+44GV44KI44GXDQor44GK44GQ44KJLOOBn+OBvuOBjQ0KK+OBiuOBkOOCiSzjgbLjgafjgYoNCivjgoDjgZXjgZcs44G/44Gk44KLDQor44GK44GQ44KJLOOBvuOBleOBsuOBkw0KK+OBiuOBkOOCiizjgb7jgZPjgagNCivjgYrjgYrjgbAs44GR44KT44GYDQor44GK44GK44Gv44GXLOOCiOOBhuOBhOOBoQ0KK+OBiuOBiuOBhCzjgbLjgo3jgYvjgZoNCivjgYrjgYrjgYTjgYgs44GR44KT44GYDQor44GK44GK44GP44G8LOOBr+OCi+OBlw0KK+OBiuOBiuOBj+OBvizjgYTjgZXjgoANCivjgYrjgYrjgY/jgb4s44Gy44KN44GXDQor44GK44GuLOOBi+OBpOOBvw0KK+OBiuOBiuOBrOOBvizjgYvjgojjgZMNCivjgZ/jgYvjgZss44KI44GX44Gy44GnDQor44GK44GK44GV44KPLOOBsuOBp+OBjQ0KK+OBiuOBiuOBleOCjyzjgbLjgo3jgZcNCivjgYrjgYrjgZXjgo8s44GR44KT44GYDQor44GK44GK44GV44KPLOOBneOBhuOBmeOBkQ0KK+OBiuOBl+OBvizjgb7jgorjgZMNCivjgYrjgZfjgb4s44Gy44KN44GKDQor44GK44GX44G+LOOBv+OBpOOBsuOCjQ0KK+OBiuOBiuOBnyzjgZfjgpPjgZgNCivjgYrjgYrjgZ/jgYss44Gy44KN44KG44GNDQor44GK44GK44Gf44GNLOOBn+OBkeOBlw0KK+OBiuOBiuOBn+OBqyzjgojjgYbjgZgNCivjgYrjgYrjgaTjgYss44Gy44KN44Gu44G2DQor44GK44GK44Gk44GLLOOBpuOBpOOBig0KK+OBiuOBiuOCjyzjgb7jgZPjgagNCivjgYrjgYrjgo/jgaAs44Gy44KN44Gu44KKDQor44GK44GK44KE44G+LOOBsuOBqOOBlw0KK+OBiuOBnuOBrSzjga7jgbbjgobjgY0NCivjgYrjgYss44KE44GZ44GXDQor44GK44GLLOOBsuOCjeOBguOBjQ0KK+OBiuOBiyzjgYvjgZrjgZfjgZINCivjgYrjgYss44Gf44GL44Gu44KKDQor44GK44GL44GgLOOBn+OBi+OCiOOBlw0KK+OBiuOBi+OBoCzjgbLjgajjgZcNCivjgYrjgYvjgaAs44G+44GV44KG44GNDQor44GK44GL44GgLOOBqOOCiOOBguOBjQ0KK+OBiuOBi+OBqeOCgSzjgY3jgojjgYvjgaQNCivjgYrjgYvjgoLjgags44KE44GZ44GXDQor44GK44GL44KC44GoLOOBk+OBhuOBmA0KK+OBiuOBi+OCguOBqCzjgbLjgo3jgZcNCivjgYrjgYvjgoDjgoks44KK44GLDQor44GK44GL44GuLOOBguOBjeOCiQ0KK+OBiuOBi+OBruOChCzjgb/jgaTjgosNCivjgYrjgYvjgYos44KE44GZ44GYDQor44GK44GL44GW44GNLOOBsuOBp+OBig0KK+OBiuOBjSzjgbLjgo3jgobjgY0NCivjgYrjgY3jgoLjgags44G+44GV44Gy44GTDQor44GK44GP44KA44KJLOOBqOOCguOBkw0KK+OBiuOBj+OCgOOCiSzjgobjgY3jgbLjgZMNCivjgYrjgY/jga4s44GC44GEDQor44GK44G+44GfLOOBguOBjeOCiOOBlw0KK+OBiuOBq+OBjSzjgbLjgo3jgobjgY0NCivjgYrjgavjgaTjgYss44G+44GV44GC44GNDQor44GK44Gu44Gn44KJLOOBguOBjeOCiQ0KK+OBiuOBruOBluOCjyzjgbLjgafjgaTjgZANCivjgYrjgYrjgavjgZcs44GR44KTDQor44GK44GK44Gr44GXLOOBj+OBq+OCiOOBlw0KK+OBiuOBiuOBpOOBiyzjgarjgYrjgbLjgZUNCivjgYrjgZXjgaAs44Go44KC44Gu44G2DQor44GK44GV44GNLOOBn+OBi+OBlw0KK+OBiuOBleOBquOBvyzjgZfjgZrjgojjgZcNCivjgYrjgoTjgb7jgaAs44KE44GZ44Gu44KKDQor44GK44GW44KPLOOBk+OBhuOBmOOCjeOBhg0KK+OBiuOBluOCjyzjgZfjgo3jgYYNCivjgYrjgZbjgo8s44KE44GZ44Gu44KKDQor44GV44GI44GQ44GVLOOChOOBmeOBruOCig0KK+OBleOBiOOBjSzjgojjgZfjgbLjgo0NCivjgarjgYvjgZjjgb4s44Gf44GR44GXDQor44GV44GE44GfLOOBoeOBiOOBkw0KK+OBiuOBjOOCjyzjgoTjgZnjga/jgosNCivjgZXjgYTjgajjgYYs44GL44Ga44Gy44GVDQor44GV44GE44Go44GGLOOBn+OBi+OBsuOBkw0KK+OBleOBhOOBqOOBhizjgojjgZfjga7jgooNCivjgZXjgYvjgYQs44KK44KH44GG44GYDQor44GV44GL44GELOOBsuOBp+OBruOCig0KK+OBleOBi+OBhCzjgZHjgYTjgZgNCivjgZXjgYvjgYQs44Gf44GR44GXDQor44GV44GL44GELOOBn+OBjw0KK+OBleOBi+OBhCzjgZfjgofjgYbjgZQNCivjgZXjgYvjgYTjgoos44Gy44KN44KG44GNDQor44GV44GL44GNLOOBjeOCh+OBhuOBkw0KK+OBleOBi+OBvizjgb7jgZXjga7jgooNCivjgZXjgYvjgb7jgY0s44G+44GV44Go44KCDQor44GV44GL44KC44GoLOOBvuOBleOBqOOBlw0KK+OBleOBi+OCguOBqCzjgZXjgajjgosNCivjgZXjgYvjgoLjgags44GX44KF44GG44GE44GhDQor44GV44GL44GfLOOBn+OBi+OBlw0KK+OBleOBi+OBhuOBiCzjgZ/jgYvjgobjgY0NCivjgZXjgYvjgZrjgoEs44Gf44GP44G/DQor44Gq44GL44GuLOOBqOOCguOBsuOCjQ0KK+OBleOBj+OBvizjgojjgZfjgbLjgZMNCivjgZXjgpPjgbzjgpPjgb7jgaQs44GL44Ga44Gy44KNDQor44GV44GuLOOBn+OBkeOBlw0KK+OBleOBrizjgajjgZfjgbXjgb8NCivjgZXjgZXjgYzjgo8s44KG44Gf44GLDQor44GV44GV44GNLOOChuOCiuOBkw0KK+OBleOBleOBjSzjgoTjgZnjgobjgY0NCivjgZXjgZXjgY0s44GL44Ga44KI44GXDQor44GV44GV44GNLOOBk+OBhuOBmA0KK+OBleOBleOBluOCjyzjgajjgZfjgobjgY0NCivjgZXjgajjgYYs44KE44GZ44GXDQor44GV44Go44GGLOOBi+OBpOOBsuOBqA0KK+OBleOBqOOBhizjgojjgZfjgZ/jgYsNCivjgZXjgajjgYYs44Gf44GL44KG44GNDQor44GV44Go44GGLOOBruOBtuOBn+OBiw0KK+OBleOBqOOBhizjgobjgYbjgZnjgZENCivjgZXjgajjgYYs44Gy44Gn44KG44GNDQor44GV44Go44GGLOOBleOBqOOBlw0KK+OBleOBqOOBhizjgYrjgZXjgoANCivjgZXjgajjgYYs44G+44KG44G/DQor44GV44Go44GGLOOBruOBtuOBig0KK+OBleOBqOOBhizjgbLjgafjga7jgooNCivjgZXjgaTjgb4s44G/44KP44GTDQor44GV44KP44GQ44GhLOOBquOBiuOBqA0KK+OBleOCj+OBhCzjgb/jgaHjgbLjgo0NCivjgZXjgo/jgonjgY4s44KE44GZ44GKDQor44GV44KP44Gf44GrLOOBj+OBq+OBig0KK+OBm+OBhOOBnyzjgYLjgaTjgZcNCivjgZvjgY0s44G+44GV44G+44KNDQor44Gb44GNLOOBruOBtuOBsuOCjQ0KK+OBm+OBjSzjga7jgorjgoTjgZkNCivjgZvjgY3jga/jgoks44GC44GN44KJDQor44Gb44GN44GtLOOChuOBhuOBmeOBkQ0KK+OBm+OBjeOBrSzjgbLjgo3jgobjgY0NCivjgZfjgonjgYTjgZcs44G+44GV44Gy44KNDQor44Gb44KT44GMLOOBruOBtuOBig0KK+OBm+OBrizjga7jgorjgobjgY0NCivjgZvjgZfjgoIs44GX44KF44GG44GE44GhDQor44Gb44GoLOOBn+OBpOOBig0KK+OBm+OBqOOBkOOBoSzjgZ/jgaTjgoQNCivjgabjgovjgoQs44KG44GG44GE44GhDQor44GX44GE44GwLOOCiuOBiw0KK+OBl+OBsOOBrizjgajjgoLjgobjgY0NCivjgZfjgbDjgZXjgY0s44GE44GP44GTDQor44GX44Gw44GfLOOBpuOBpOOCjeOBhg0KK+OBl+OBtuOBleOCjyzjgb7jgZXjgbXjgb8NCivjgZfjgbbjgZXjgo8s44KI44GX44Gy44KNDQor44GX44GhLOOBoOOBhOOBiOOBhA0KK+OBl+OBoeOBnyzjgZ/jgYvjgobjgY0NCivjgZfjgZLjgbLjgZUs44Go44GK44KLDQor44GX44GS44GV44KPLOOBv+OChuOBjQ0KK+OCgOOCieOBnyzjgorjgoXjgYbjgZ/jgo3jgYYNCivjgZfjgb7jgZos44Gf44GL44Gk44GQDQor44GX44G+44GaLOOBn+OBpOOBlw0KK+OBjeOBl+OBoCzjgZ/jgYvjgZcNCivjgZfjgb/jgZos44G/44Gh44GKDQor44GX44G/44GaLOOBiOOBhOOBhOOBoQ0KK+OBl+OBv+OBmizjgbLjgo3jgZcNCivjgZfjgb/jgZos44Gv44KE44Go44GXDQor44GX44G/44GaLOOBj+OCk+OBmA0KK+OBl+OBv+OBmizjgZHjgYTjgZMNCivjgZfjgb/jgZos44Gy44KN44GX44GSDQor44G/44KE44GT44GXLOOBqOOBl+OBsuOCjQ0KK+OBl+OCguOBv+OBoSzjgb7jgorjgZMNCivjgarjgYvjgbDjgoTjgZcs44GL44GK44KLDQor44GX44KC44GK44GVLOOBn+OBkeOBlw0KK+OBl+OCguOBpOOBmCzjgZfjgpPjgZgNCivjgZfjgarjgaAs44Gh44GL44GXDQor44GX44Gq44GM44KPLOOBruOBtuOBig0KK+OBl+OCk+OCguOBqCzjgb7jgZXjgbLjgo0NCivjgZfjga4s44KI44GX44Gu44KKDQor44GX44Gu44GgLOOCiuOCheOBhuOBn+OCjeOBhg0KK+OBl+OBruOBoCzjga/jgaTjgYgNCivjgZfjga7jgZbjgY0s44GX44KH44GG44GYDQor44GX44GK44Gf44GrLOOBpuOBpOOBsuOCjQ0KK+OBl+OBiuOChCzjgaTjgYvjgZUNCivjgZfjgonjgbks44GE44Gj44Gb44GEDQor44GX44KJ44GM44GNLOOCiOOBl+OBr+OCiw0KK+OBl+OCieOBhCzjgYvjgZrjgbLjgZMNCivjgZfjgonjgYTjgZcs44GI44Gk44Gy44KNDQor44GX44KJ44GE44GXLOOBsuOCjeOBlw0KK+OBl+OCieOBjSzjgYvjgZrjgbLjgo0NCivjgZfjgZrjgZ8s44GR44GE44GTDQor44GX44KH44GG44GYLOOBkeOBhOOBnw0KK+OBneOBruOBoCzjgb/jganjgooNCivjgZnjganjgYYs44KC44Go44KG44GNDQor44GZ44GI44GgLOOBm+OBhOOBkw0KK+OBmeOBiOOBpOOBkCzjgZ/jgYvjgZcNCivjgZnjgYzjgZ8s44KE44GZ44GZ44GRDQor44GZ44GM44KP44KJLOOCiOOBl+OBguOBjQ0KK+OBmeOBjuOBrizjgojjgZfjga7jgbYNCivjgZnjgY7jgZXjgY0s44KG44GG44GYDQor44GZ44GO44GX44G+LOOBvuOBleOCiw0KK+OBquOBjOOBhCzjgb7jgorjgZMNCivjgZnjgY7jgoTjgb4s44Go44GX44Gy44KNDQor44GZ44G/LOOBi+OBpOOBsuOCjQ0KK+OBmeOBv+OBn+OBqyzjgZfjgpPjgYTjgaENCivjgZnjgZXjgY0s44Gy44KN44KG44GNDQor44GZ44GZ44GNLOOBk+OBhuOBhOOBoQ0KK+OBmeOChOOBvizjgajjgoLjga7jgooNCivjgZnjgZrjgY0s44G/44Gh44GKDQor44GZ44Ga44GNLOOBkeOCk+OBhOOBoQ0KK+OBmeOBmuOBjSzjgZPjgYbjgYTjgaENCivjgZ/jgZjjgb4s44GV44Go44GNDQor44GZ44Ga44GNLOOBn+OBj+OChA0KK+OBmeOBmuOBjSzjgoTjgZnjgZMNCivjgZnjgZrjgY0s44KG44Gf44GLDQor44GZ44Ga44GNLOOBguOBjeOBkw0KK+OBmeOBmuOBjSzjgYLjgaTjgZcNCivjgZnjgZrjgY0s44Gy44Gn44Go44KCDQor44GZ44Ga44GNLOOBsuOBp+OBqOOBlw0KK+OBmeOBmuOBjSzjgbLjgafjgajjgZcNCivjgZnjgZrjgY0s44Gy44KN44GNDQor44GX44KF44GP44KELOOBmOOCheOCk+OBhOOBoQ0KK+OBn+OBoeOBsOOBqizjgYvjgogNCivjgZ/jgaHjgoTjgb4s44GT44GG44GE44GhDQor44Gf44Gp44GT44KNLOOBvuOBleOBguOBjQ0KK+OBn+OBjOOCjyzjgb7jgZXjgbLjgagNCivjgZ/jgZDjgaEs44KC44Go44GL44GaDQor44Gf44GQ44GhLOOBquOBiuOChuOBjQ0KK+OBn+OBkOOBoSzjga7jgbbjgbLjgZUNCivjgZ/jgYQs44Gu44KK44GKDQor44Gf44GY44G+LOOBleOBoeOBiA0KK+OBn+OBi+OBoCzjgZXjgajjgosNCivjgZ/jgYvjgaAs44GX44GS44Gu44G2DQor44Gf44GL44GOLOOBmeOBmeOCgA0KK+OBv+OChOOCguOBqCzjgZ/jgYvjgZcNCivjgZ/jgYvjga/jgb4s44Gm44Gk44GKDQor44Gf44GL44Gv44GXLOOChOOBmeOBguOBjQ0KK+OBn+OBi+OBr+OBlyzjgb7jgZXjga7jgooNCivjgZ/jgYvjga/jgZcs44Gk44Go44KADQor44Gf44GL44Gv44GXLOOBvuOBleOChuOBjQ0KK+OBn+OBi+OBr+OBlyzjgb7jgZPjgagNCivjgZ/jgYvjga/jgZcs44GR44KT44KK44KF44GGDQor44Gf44GL44Gv44GXLOOBqOOBl+OBsuOBlQ0KK+OBn+OBi+OBr+OBlyzjgoTjgZnjgZcNCivjgZ/jgYvjga/jgZcs44Gy44KN44KG44GNDQor44Gf44GL44Gv44GXLOOChOOBmeOBruOCig0KK+OBn+OBi+OBr+OBlyzjgbLjgo3jgZcNCivjgZ/jgYvjga/jgZcs44KC44Go44KE44GZDQor44Gf44GL44Gv44GXLOOChuOBjeOBiA0KK+OBn+OBi+OBr+OBlyzjgoTjgZnjgZMNCivjgZ/jgYvjga/jgZcs44Gf44GL44GXDQor44Gf44GL44Gv44GXLOOCiOOBl+OBsuOBlQ0KK+OBn+OBi+OBr+OBlyzjgajjgZfjgobjgY0NCivjgZ/jgYvjga/jgZcs44GV44Go44GTDQor44Gf44GL44Gv44GXLOOBsuOBp+OBjQ0KK+OBn+OBi+OBr+OBlyzjgYTjgaHjgo3jgYYNCivjgZ/jgYvjga/jgZcs44Gu44G244GC44GNDQor44Gf44GL44Gv44GXLOOBv+OBpOOCiw0KK+OBn+OBi+OBquOBlyzjgZfjgpMNCivjgZ/jgYvjga4s44GL44Gk44Gu44KKDQor44Gf44GL44GK44GLLOOBpuOBpOOChA0KK+OBn+OBi+OBmyzjgZfjgZLjgY0NCivjgZ/jgYvjgZfjgaos44GT44GG44Gb44GEDQor44Gf44GL44GX44GqLOOBoOOBhOOBleOBjw0KK+OBn+OBi+OBnyzjgbLjgo3jgYLjgY0NCivjgZ/jgYvjgoTjgb4s44Gy44KN44KG44GNDQor44Gf44GL44KE44Gq44GOLOOBmOOCheOCkw0KK+OBn+OBkeOBsOOChOOBlyzjgYvjgaTjgb8NCivjgb/jgYvjgb8s44GR44GE44GZ44GRDQor44Gf44GR44GELOOBvuOBk+OBqA0KK+OBn+OBkeOBjSzjgb7jgZfjgoXjgYYNCivjgZ/jgZHjgoLjgoos44Gu44G244Gy44GTDQor44Gf44GR44KA44KJLOOBiuOBleOCgA0KK+OBn+OBkeOBhuOBoSzjgZHjgpMNCivjgZ/jgZHjgoQs44GX44KH44GG44GE44GhDQor44Gf44GR44KE44G+LOOBqOOBl+OBguOBjQ0KK+OBn+OBjeOBkOOBoSzjgajjgZfjgYvjgZoNCivjgZ/jgY3jgZfjgZ8s44Go44GX44KG44GNDQor44Gf44GN44GW44KPLOOBguOBjeOCiQ0KK+OBn+OBvuOBhCzjgZfjgZLjgosNCivjgZ/jgb/jgoQs44GC44GN44GTDQor44Gf44KA44KJLOOCiOOBhuOBmeOBkQ0KK+OBn+OBquOBuSzjgbLjgo3jgobjgY0NCivjgZ/jgarjga/jgZcs44KI44GX44KG44GNDQor44Gf44Gq44GLLOOBl+OBkuOBqA0KK+OBn+OBquOBiyzjgbLjgafjga7jgooNCivjgZ/jgarjgYss44Gy44KN44KG44GNDQor44Gf44Gq44GLLOOBsuOCjeOBjQ0KK+OBn+OBquOBiyzjgobjgY3jgZMNCivjgZ/jgarjgYss44Gy44KN44GTDQor44Gf44Gq44GLLOOBmOOCheOCk+OBhOOBoQ0KK+OBn+OBquOBiyzjgZfjgpMNCivjgZ/jgarjgYss44G+44GV44GL44GaDQor44Gf44Gq44GLLOOBmOOCheOCk+OBkw0KK+OBk+OBoOOBvizjgojjgZfjgbLjgZMNCivjgZ/jgarjgYss44GC44GV44GKDQor44Gf44Gq44GLLOOBruOCiuOBguOBjQ0KK+OBn+OBquOBiyzjgZXjgajjgZcNCivjgZ/jgarjgYss44GK44GV44KADQor44Gf44Gq44KA44KJLOOBleOBqOOBlw0KK+OBn+OCk+OBsCzjgYvjgZrjgarjgooNCivjgZ/jgavjgZDjgaEs44GR44GE44GYDQor44Gf44Gr44GQ44GhLOOBmOOCheOCk+OBkw0KK+OBn+OBq+OBhCzjgZLjgpMNCivjgZ/jgavjgoDjgoks44Go44KC44Gu44KKDQor44Gf44Gr44KP44GNLOOBiuOBleOCgA0KK+OBn+OCi+OBhCzjgZfjgofjgYbjgZgNCivjgZ/jgZXjgY0s44GL44Ga44KG44GNDQor44Gf44GX44KNLOOBvuOBleOChA0KK+OBn+OBpuOBhOOBlyzjgarjgYrjgoQNCivjgZ/jgYbjgaEs44KK44KH44GG44GTDQor44Gf44GG44KJLOOBsuOCjeOBguOBjQ0KK+OBpuOCieOBoCzjgojjgZfjgYoNCivjgZXjgajjgYYs44GC44GN44KJDQor44Gm44KJ44Gr44GXLOOCguOCiuOChuOBjQ0KK+OBpuOCieOBl+OBnyzjgbLjgo3jgZcNCivjgabjgovjgY3jgaos44GC44GN44KIDQor44Go44G5LOOBiOOCiuOBkw0KK+OBqOOBhuOBlOOBhizjgZ/jgYvjga/jgosNCivjgajjgZDjgaEs44GI44GE44GYDQor44Go44GYLOOBi+OBpOOBruOCig0KK+OBqOOBv+OBquOBjCzjgb7jgZXjgagNCivjgajjgb/jgarjgYws44KE44GZ44G+44GVDQor44Go44G/44GK44GLLOOBquOBiuOBjQ0KK+OBqOOBv+OBnyzjgZnjgZDjgosNCivjgajjgb/jgoTjgb4s44Gy44KN44Gf44GLDQor44Go44Gt44GM44KPLOOBguOBjeOCiQ0KK+OBqOOBl+OBquOCiizjgZjjgoXjgpPjgZMNCivjgajjgojjgaAs44GT44GG44GYDQor44Go44KI44GgLOOBi+OBpOOChA0KK+OBqOOCiOOBoCzjgb7jgZXjgbLjgZMNCivjgYrjgYrjgoLjgoos44KI44GG44GE44Gh44KN44GGDQor44Go44Ga44GLLOOBsuOBp+OBig0KK+OChOOBvuOBi+OCjyzjgorjgoXjgYbjgbjjgYQNCivjgaTjgbzjgYQs44GY44KF44KT44GTDQor44Gk44Gh44Gv44GXLOOBi+OBpOOBvw0KK+OBpOOBoeOBrizjgb/jga7jgosNCivjgaTjgaHjgoQs44KI44GX44Gy44KNDQor44G+44GNLOOBsuOBp+OBruOCig0KK+OBpOOBoCzjgb/jgaTjga7jgbYNCivjgaTjgYzjgo8s44GR44KT44GYDQor44Gk44GYLOOBleOBqOOBlw0KK+OBpOOBmCzjgajjgojjgYvjgZoNCivjgaTjgZgs44Gy44KN44GXDQor44Gk44GL44GgLOOBsuOCjeOChuOBjQ0KK+OBpOOBi+OCguOBqCzjgY3jgojjgZcNCivjgaTjgoDjgoks44Gf44GL44KG44GNDQor44Gk44Gq44GX44G+LOOChuOBjeOBig0KK+OBiuOBj+OChOOBvizjgb7jgoLjgosNCivjgaTjga7jgaAs44GV44Gg44Gv44KLDQor44Gk44Gu44GM44GELOOChOOBmeOBruOCig0KK+OBpOOBl+OBvizjga7jgbzjgosNCivjgaTjgaTjgb8s44Gy44KN44GXDQor44Gk44Ga44GNLOOBi+OBpOOBvw0KK+OBpOOCi+OBiuOBiyzjgbLjgafjgagNCivjgYbjgaHjgaAs44Gy44GV44GXDQor44GG44Gh44GgLOOBvuOBleOCiw0KK+OBhuOBoeOBoCzjgb7jgZXjgbXjgb8NCivjgYbjgaHjgaAs44KE44GZ44GXDQor44GG44Gh44GuLOOBguOBjeOBsuOBkw0KK+OBhuOBoeOBruOBj+OCiSzjgoHjgZDjgb8NCivjgYbjgaHjgoTjgb4s44G/44Gh44Gv44KLDQor44GG44Gh44KE44G+LOOBn+OBi+OBruOCig0KK+OBhuOBoeOChOOBvizjga7jgbbjgbLjgo0NCivjgYbjgaAs44GR44GE44GYDQor44GG44GI44GgLOOBl+OBkuOCiw0KK+OBhuOBiOOBoCzjgarjgaTjgZMNCivjgYbjgYjjgaAs44KI44GX44GoDQor44GG44GI44GgLOOBqOOBl+OBr+OCiw0KK+OBhuOBiOOBr+OCiSzjgZfjgZLjgosNCivjgYbjgYjjga/jgoks44G+44GV44GKDQor44GG44GI44Gv44KJLOOBl+OCk+OBmA0KK+OBhuOBiOOBmOOBvizjgbLjgo3jgobjgY0NCivjgYbjgYjjgY0s44GI44KK44GTDQor44GG44GI44KA44KJLOOBj+OBq+OBsuOCjQ0KK+OBhuOBiOOBrizjgZ/jgYvjgbLjgacNCivjgYbjgYjjga4s44Go44GP44Gy44KNDQor44GG44GI44GuLOOChuOBhuOBmA0KK+OBhuOBiOOChOOBvizjgojjgZfjgZMNCivjgYbjgYQs44GR44GE44GZ44GRDQor44GG44KB44GgLOOBl+OCh+OBhuOBhOOBoQ0KK+OBhuOCgeOBoCzjgYLjgaTjgZcNCivjgYbjgoHjgaAs44Gh44Gv44KLDQor44GG44KB44GgLOOBkeOCk+OBmA0KK+OBhuOCgeOBr+OCiSzjgb7jgZPjgagNCivjgYbjgoHjgYvjgo8s44G+44GV44Gu44KKDQor44GG44KL44GX44Gg44GrLOOBvuOBleOChuOBjQ0KK+OBhOOBruOBhuOBiCzjgZ/jgZHjgZcNCivjgYbjgZXjgb8s44KG44GG44GTDQor44GG44GX44G+44KLLOOBn+OBpOOBsuOCjQ0KK+OBhuOBl+OChOOBvizjgYvjgaTjgobjgY0NCivjgYbjgZnjgYQs44GT44GG44G444GEDQor44GG44GZ44GELOOBiuOBleOCgA0KK+OBhuOBpOOBvyzjgZjjgo3jgYYNCivjgZXjgZXjgYzjgo8s44GL44Ga44GC44GNDQor44Gd44KB44KELOOBkeOCk+OBmA0KK+OCj+OBoCzjgb7jgZXjgYoNCivjgo/jgaAs44G+44GV44KI44GXDQor44KP44GgLOOCiOOBl+OBguOBjQ0KK+OBn+OBruOBhuOBiCzjgobjgYbjgYTjgaENCivjgo/jgZfjgaAs44Gy44Gn44GC44GNDQor44KP44Gf44GELOOBv+OBoeOBguOBjQ0KK+OCj+OBn+OBquOBuSzjgb7jgZXjgobjgY0NCivjgo/jgZ/jgarjgbks44GC44GN44GKDQor44KP44Gf44Gq44G5LOOBi+OBmuOBsuOBlQ0KK+OCj+OBn+OBquOBuSzjgZXjgajjgZcNCivjgo/jgZ/jgarjgbks44Gy44Gn44GNDQor44KP44Gf44Gq44G5LOOBqOOBiuOCiw0KK+OCj+OBn+OBquOBuSzjgbLjgo3jgobjgY0NCivjgo/jgZ/jgarjgbks44GC44GN44KJDQor44KE44GOLOOBi+OBmuOBig0KK+OChOOBlCzjgb7jgZXjgbLjgZMNCivjgoTjga/jgY4s44Gq44GK44G144G/DQor44KE44GP44GXLOOBiuOBleOCgA0KK+OChOOBvuOBoCzjgozjgYTjgY0NCivjgoTjgb7jgaAs44Gf44GL44GXDQor44KE44G+44GgLOOBqOOBv+OChOOBmQ0KK+OChOOBvuOBoCzjgajjgZfjgbLjgo0NCivjgoTjgb7jgaAs44Go44GX44GKDQor44KE44G+44GgLOOCiOOBl+OBig0KK+OChOOBvuOBoCzjgobjgYsNCivjgoTjgb7jgYzjgZ8s44Gf44GR44GXDQor44KE44G+44GO44GXLOOBvuOBleOBiA0KK+OBr+OCiizjgb7jgZXjgobjgY0NCivjgoTjgb7jgZDjgaEs44GL44Gk44GXDQor44KE44G+44GQ44GhLOOBqOOCguOBi+OBmg0KK+OChOOBvuOBkOOBoSzjgajjgoLjgb8NCivjgYLjgYrjgaTjgYss44KI44GX44GV44GoDQor44KE44G+44GQ44GhLOOBvuOBleOBruOCig0KK+OChOOBvuOBmCzjgb/jgaHjgYoNCivjgoTjgb7jgoLjgags44Gy44KN44Gu44KKDQor44KE44G+44KC44GoLOOBmOOCheOCk+OBhOOBoQ0KK+OChOOBvuOCguOBqCzjgZHjgpPjgZjjgo3jgYYNCivjgoTjgb7jgoLjgags44GL44Ga44Gy44KNDQor44KE44G+44KC44GoLOOBsuOCjeOBteOBvw0KK+OChOOBvuOCguOBqCzjgZ/jgYvjgobjgY0NCivjgoTjgb7jgoLjgags44GC44GN44Gy44GnDQor44KE44G+44KC44GoLOOBqOOBl+OBruOCig0KK+OChOOBvuOCguOBqCzjgYjjgYTjgZgNCivjgoTjgb7jgoLjgags44G+44Gq44G2DQor44KE44G+44KC44GoLOOBqOOBl+OChuOBjQ0KK+OChOOBvuOCguOBqCzjgarjgYrjgbXjgb8NCivjgoTjgb7jgoDjgoks44Go44KC44GL44GaDQor44KE44G+44Gq44GLLOOChuOBn+OBiw0KK+OChOOBvuOBl+OBqizjgZfjgpPjgZgNCivjgoTjgb7jgZfjgZ8s44KG44GN44Gy44KNDQor44KE44G+44GX44GfLOOCiuOCk+OBmOOChQ0KK+OChOOBvuOBl+OBnyzjgZHjgpPjgZgNCivjgoTjgb7jgZfjgZ8s44Gy44Go44GXDQor44KE44G+44GmLOOBkeOBhA0KK+OChOOBvuOBhuOBoSzjgYLjgY3jgokNCivjgoTjgb7jgZbjgY0s44KG44GN44Gy44GVDQor44KE44G+44GW44GNLOOBruOBvOOCiw0KK+OChOOBvuOBluOBjSzjgbLjgajjgZcNCivjgoTjgarjgY4s44GL44Ga44GKDQor44KE44Gq44GO44GgLOOBk+OBhuOBhOOBoeOCjeOBhg0KK+OChOOBquOBjuOBoCzjgb/jgbsNCivjgoTjgarjgYQs44GV44Go44GXDQor44KE44Gq44GLLOOBn+OBoOOBlw0KK+OChOOBmeOBoCzjgb7jgZXjgb8NCivjgoTjgZnjgaAs44GE44KP44GKDQor44KE44GZ44GgLOOBm+OBjeOBkw0KK+OChOOBmeOCguOBqCzjgYvjgZrjgoQNCivjgoTjgaTjgYss44Gq44GK44GNDQor44KE44GW44KPLOOBv+OBmuOBuw0KK+OCiOOBoCzjgabjgaTjgoQNCivjgojjganjgYzjgo8s44Gu44KK44GKDQor44KI44GgLOOBsuOCjeOBruOCig0KK+OCiOOBk+OBr+OBnyzjgbLjgo3jgoQNCivjgojjgZPjgoTjgb4s44GE44KP44GKDQor44KI44GT44KE44G+LOOBl+OBkuOCiw0KK+OCiOOCguOCiizjgYLjgY3jgojjgZcNCivjgojjga3jgoLjgaEs44KI44GX44Gk44GQDQor44KI44KN44Ga44KELOOBquOBiuOBsuOBlQ0KK+OCiOOBl+OBoCzjgZ/jgaTjgZ7jgYYNCivjgojjgZfjgaAs44Gf44GL44GXDQor44KI44GX44GgLOOBruOCiuOBig0KK+OBteOBmOOBleOBjSzjgZPjgYbjgYTjgaENCivjgojjgZfjgaAs44Gy44Go44GXDQor44KI44GX44GgLOOBpuOBpOOBig0KK+OCiOOBl+OBvuOBpCzjgaHjga/jgosNCivjgojjgZfjgoLjgags44KG44GG44GZ44GRDQor44KI44GX44KA44KJLOOBi+OBpOOChA0KK+OBhOOBl+OBsOOBlyzjgZ/jgaDjgZcNCivjgojjgZfjga4s44Gf44Gk44KEDQor44Gf44GL44GuLOOBkeOBhOOBlA0KK+OChuOBr+OBlyzjgZfjgofjgYbjgZMNCivjgYjjgaDjgbLjgo0s44G/44Gp44KKDQor44Gv44KJ44GgLOOBvuOBleOChuOBjQ0KK+OBr+OChOOBleOBiyzjgorjgoXjgYbjgZvjgYQNCivjgYTjgarjgYzjgY0s44G+44GV44GNDQor44GE44Gu44GG44GILOOBleOBqOOBlw0KK+OBhOOBl+OBr+OCiSzjgZ/jgYvjgZcNCivjgZPjgZjjgb4s44KE44GZ44Gy44GVDQor44GT44GZ44GOLOOBl+OCk+OBlA0KK+OBj+OBvOOBnyzjgarjgovjgb8NCivjgoLjgoos44Gf44GL44GXDQor44Gq44GL44Gw44KE44GXLOOBquOBiuOBsuOBlQ0KK+OBreOCguOBqCzjgZ/jgYvjgZcNCivjgavjga7jgb/jgoQs44GR44GEDQor44GK44GM44KPLOOCgeOBkOOBvw0KK+OBiuOBiuOBn+OBqyzjgb7jgZXjgZMNCivjgZvjgY0s44GP44G/DQor44GX44G244Gf44GrLOOBpOOBqOOCgA0KK+OBl+OCk+OBqCzjgbLjgo3jgobjgY0NCivjgZ3jgbbjgYgs44Gy44Go44GXDQor44Gf44GL44Gv44GXLOOBn+OBkeOBlw0KK+OBn+OBi+OBmyzjgb7jgb/jgZMNCivjgajjgojjgaAs44Gy44KN44Gy44GnDQor44GG44GI44GgLOOBl+OCk+OBn+OCjeOBhg0KK+OChOOBvuOCguOBqCzjgoTjgZnjgobjgY0NCivjgoTjgb7jgZrjgb8s44Gy44KN44GXDQor44KI44GX44GgLOOBk+OBhuOBmA0KK+OBguOBleOBi+OBhCzjgarjgovjgajjgZcNCivjgbXjgY/jgZ8s44GL44Ga44G/DQor44GL44KP44GV44GNLOOBi+OBmuOBig0KK+OBsuOCjeOBmyzjgojjgZfjgYvjgZoNCivjgYvjgZXjga/jgoks44Gb44Gk44GTDQor44GK44GW44KPLOOBkeOBhOOBhOOBoQ0KK+OBi+OBqOOBhizjgZHjgYTjgYTjgaENCivjgarjgYvjgoDjgoks44Gb44GE44GI44GEDQor44Gf44GQ44GhLOOBsuOCjeOCgA0KK+OBguOBoOOBoSzjgorjgofjgYbjgZvjgYQNCivjgYLjgYvjgZcs44KI44GX44Gy44GVDQor44GC44GN44KE44G+LOOBiOOBvw0KK+OBguOBiuOBjSzjgZfjgofjgYbjgZgNCivjgYLjgonjgY0s44Go44KC44Gf44GRDQor44GC44GV44GyLOOBteOBv+OBruOCig0KK+OBguOBleOBrizjgajjgZfjgbLjgZMNCivjgYLjgo/jga4s44GK44GV44KADQor44GC44KP44GuLOOBmOOCheOCk+OBmOOCjeOBhg0KK+OBqeOBhuOBmCzjgarjgYrjgobjgY0NCivjganjgYbjgZ7jga4s44Gb44GE44KEDQor44G144Gh44GL44G/LOOBi+OBpOOCjeOBhg0KK+OBteOBmOOBhCzjgZHjgpPjgZgNCivjgbXjgZjjgYQs44GT44GG44GE44GhDQor44G144GY44GE44GILOOBruOBtuOChA0KK+OBk+OCjyzjgZfjgoXjgpPjgYTjgaENCivjgbXjgZjjgZfjgo0s44G+44GV44GKDQor44G144GY44GfLOOCiOOBhuOBkw0KK+OBteOBmOOBnyzjgbLjgo3jgobjgY0NCivjgbXjgZjjgo/jgoks44GT44GG44GYDQor44G144GP44GgLOOBquOBiuOChuOBjQ0KK+OBteOBj+OBoCzjgZ/jgaTjgYoNCivjgbXjgY/jgaAs44GR44KTDQor44GV44GE44Go44GGLOOBiuOBleOBvw0KK+OBteOBj+OChOOBvizjgZjjgoXjgpPjgYTjgaENCivjgbXjgovjga/jgZ8s44GT44GG44GYDQor44GU44Go44GGLOOBsuOCjeOBi+OBmg0KK+OBr+OCgOOCjSzjgYrjgZXjgoANCivjga/jgZss44Gf44GP44Gy44GVDQor44Gv44GX44KC44GoLOOBvuOBleOBsuOCjQ0KK+OBr+OBl+OCguOBqCzjgZjjgoXjgpPjgYTjgaENCivjga/jgaPjgajjgoos44GY44KF44KTDQor44Gv44KE44GXLOOBi+OBpOOBsuOBkw0KK+OBr+OChOOBlyzjgajjgZfjgYLjgY0NCivjga/jgoTjgZcs44G+44GV44GL44GaDQor44Gv44KE44GXLOOBl+OBkuOBv+OBpA0KK+OBr+OChOOBlyzjgoHjgYQNCivjga/jgoTjgZcs44G+44GV44Gk44GQDQor44Gy44GzLOOBsuOCjeOChuOBjQ0KK+OBsuOBkOOBvizjgZ/jgY/jgoQNCivjgbLjgonjgYQs44Gy44KN44Gf44GLDQor44Gy44KJ44GL44KPLOOBpOOBreOBqOOCgg0KK+OBsuOCieOBrizjgYvjgZrjgbLjgZMNCivjgbLjgo3jgarjgYss44G/44Gu44KLDQor44G744KK44GQ44GhLOOBruOBtuOBguOBjQ0KK+OBu+OBleOBiyzjgZXjgajjgZcNCivjgbvjgZ3jgoQs44Gb44GE44GYDQor44GE44Gh44GELOOBl+OBkuOChuOBjQ0KK+OBhOOBoeOBi+OCjyzjgoLjgajjgbLjgo0NCivjgYTjgZDjgb4s44GI44GE44GE44GhDQor44GE44GE44GV44GLLOOBvuOChuOBvw0KK+OBhOOBi+OCjyzjgYTjgo/jgYoNCivjgYTjgZHjgaAs44GC44KG44GTDQor44GE44GR44GgLOOBhOOBj+OBmOOCjeOBhg0KK+OBhOOBkeOBjOOBvyzjgb7jgoLjgosNCivjgYTjga7jgYbjgYgs44GX44KN44GGDQor44GE44Gu44GG44GILOOBsuOBleOBguOBjQ0KK+OBk+OBsOOChOOBlyzjgajjgY/jgZjjgo3jgYYNCivjgYTjgZfjgbDjgZcs44KE44GZ44Gy44GVDQor44GE44GX44GgLOOCiOOBl+OChuOBjQ0KK+OBhOOBl+OBvuOCiyzjgb/jgo8NCivjgYTjgZfjgZrjgYss44Go44GX44KG44GNDQor44GE44GdLOOBsuOBp+OBguOBjQ0KK+OBhOOBqOOBhizjgbLjgafjgYLjgY0NCivjgYTjgajjgYYs44GC44GN44Gy44GTDQor44GE44Go44GGLOOBvuOBleOBsuOCjQ0KK+OBhOOBqOOBhizjgZXjgo/jgZMNCivjgYTjgajjgYYs44Gm44Gk44KEDQor44GE44Go44GGLOOCiOOBl+OBv+OBrQ0KK+OBhOOBqOOBhizjgZHjgpPjgYTjgaENCivjgYTjgo/jgZ8s44GV44Go44GXDQor44GL44KK44KELOOBm+OBhOOBhOOBoQ0KK+OBjOOBleOBjSzjgZfjgZLjgYoNCivjgYvjgYws44GL44Ga44Gy44GVDQor44GL44GS44KE44G+LOOBpOOCiOOBlw0KK+OBi+OBmOOBquOBvyzjgZ/jgYvjgobjgY0NCivjgYvjgb/jgbLjgonjgZ8s44Gy44KN44KG44GNDQor44GL44Gq44KC44KKLOOBn+OBpOOChA0KK+OBi+OBreOBkyzjgabjgovjgYoNCivjgYvjga3jgZMs44KI44GX44GKDQor44GL44Gr44KPLOOBguOBjeOCiQ0KK+OBi+OBleOBvizjga7jgorjgb7jgZUNCivjgYvjgZss44Gy44KN44KG44GNDQor44GL44GX44KA44KJLOOBteOBv+OBqOOBlw0KK+OBi+OBn+OBiuOBiyzjgZHjgpPjgZgNCivjgYvjgajjgYYs44GY44KF44KT44GTDQor44GL44Go44GGLOOBkeOBhOOBmA0KK+OBi+OBqOOBhizjgZPjgYbjgZ8NCivjgYvjgajjgYYs44GC44GN44Gy44GTDQor44GL44Go44GGLOOBruOBtuOBsuOBpw0KK+OBi+OCj+OBoSzjgZHjgYTjgZMNCivjgYvjgo/jgZDjgaEs44Gh44GV44GoDQor44GL44KP44GuLOOBv+OBpOOBig0KK+OBi+OCj+OBl+OBvizjgabjgaTjgZgNCivjgY3jgY/jgaEs44Go44KC44GC44GNDQor44GN44KC44GoLOOCiOOBl+OBsuOCjQ0KK+OBjeOCgOOCiSzjgYvjgaTjgoQNCivjgY3jga7jgZfjgZ8s44Gm44GkDQor44GN44GX44Gv44KJLOOBpOOBkOOBguOBjQ0KK+OBjeOBl+OBi+OCjyzjgbLjgafjgobjgY0NCivjgY3jgZ8s44KK44GIDQor44GN44Gf44GM44KPLOOBv+OBoeOBr+OCiw0KK+OBjeOBn+OBrizjgorjgYjjgZMNCivjgY3jgZ/jgoTjgb4s44Gb44GE44GTDQor44GN44KI44GK44GLLOOBvuOBleOCiA0KK+OBjeOCiOOBmyzjgaTjgYvjgZUNCivjgZPjgbDjgoos44Gf44Gm44GNDQor44GT44Gw44KE44GXLOOBi+OBiuOCiw0KK+OBk+OBsOOChOOBlyzjgZPjgYbjgZ/jgo3jgYYNCivjgZPjgbzjgoos44Gf44G+44G/DQor44GT44GE44KPLOOBn+OBkeOBlw0KK+OBk+OBmOOBvizjgbXjgb/jgogNCivjga/jgZfjgoLjgags44GT44GG44GE44GhDQor44GT44G/44KE44G+LOOBn+OBi+OBsuOCjQ0KK+OBk+OCk+OBqSzjgajjgoLjgobjgY0NCivjgZPjgpPjgaks44Gu44KK44GTDQor44GT44KT44GpLOOCiOOBhuOBmeOBkQ0KK+OBk+OBl+OBi+OCjyzjgYLjgY3jgbXjgb8NCivjgZPjgabjgYzjgo8s44GR44KT44GYDQor44GT44KPLOOBruOBtuOChuOBjQ0KK+OBj+OBvOOBnyzjgZfjgofjgYbjgYTjgaENCivjgY/jgbzjgZ8s44Gy44KN44KG44GNDQor44GP44Gp44GGLOOBr+OChOOBqA0KK+OBj+OBjCzjgojjgZfjgbLjgo0NCivjgoLjgoos44KG44GN44Gy44KNDQor44GP44Gr44Gf44GRLOOBr+OBmOOCgQ0KK+OBj+OCieOBi+OBkSzjgbLjgo3jgYvjgZoNCivjgY/jgoos44G+44GV44Gy44GoDQor44GP44GV44G144GLLOOBl+OBruOBtg0KK+OBj+OCj+OBsOOCiSzjgajjgYrjgosNCivjgb7jgaHjgaAs44Gy44KN44KG44GNDQor44G+44KL44KE44G+LOOChuOBjQ0KK+OBn+OBkeOBhuOBoSzjgYLjgY3jgYoNCivjgb7jgaTjgbAs44GC44Gk44GXDQor44G+44Gk44Gw44KJLOOBn+OBkeOCjQ0KK+OBvuOBpOOBoOOBhOOCiSzjgb7jgY0NCivjgb7jgaTjgoLjgags44KI44KK44GTDQor44G+44Gk44KC44GoLOOCiOOBl+OBguOBjQ0KK+OBvuOBpOOBquOBjCzjgb/jgbsNCivjgb7jgaTjgYos44G+44GV44KEDQor44G+44Gk44GKLOOBruOCiuOChuOBjQ0KK+OBvuOBpOOBiizjgZfjgpPjgoQNCivjgb/jgY/jgass44KE44GZ44GXDQor44G/44Gq44GM44KPLOOCj+OBn+OCiw0KK+OBv+OBquOBjOOCjyzjgZfjgZLjgosNCivjgb/jga7jgaYs44Go44KC44GC44GNDQor44G/44GfLOOCiOOBl+OBj+OBqw0KK+OBv+OBqOOCgSzjgZ/jgZHjgZcNCivjgb/jgaTjgoTjgb4s44GX44KF44GG44GE44GhDQor44G/44KE44GhLOOBn+OBi+OBteOBvw0KK+OBv+OChOOBmCzjgZPjgYbjgZgNCivjgb/jgoTjgZjjgb4s44G/44Gk44GKDQor44G/44KE44GfLOOBkeOBhOOBkw0KK+OBv+OChOOBluOBjSzjgY3jgojjgYLjgY0NCivjgb/jgoTjgZbjgY0s44G+44GT44GoDQor44G/44KE44GW44GoLOOCiOOBl+OBquOCig0KK+OBv+OChOOBluOCjyzjgbLjgo3jgY0NCivjgb/jgZ7jgZDjgaEs44KC44Go44GTDQor44G/44Ga44GELOOBvuOBleOCiOOBlw0KK+OCguOCk+OBrizjgYjjgYTjgZgNCivjgoLjgoos44G/44Gk44Gy44KNDQor44KC44KKLOOBruOCiuOBmeOBvw0KK+OCguOCiuOBnyzjgY/jgovjgb8NCivjgoLjgorjgZ8s44Go44GX44GC44GNDQor44KC44KK44KE44G+LOOBvuOCiuOBkw0KK+OCgOOCieOBi+OBvyzjgorjgoXjgYbjgYTjgaENCivjgoDjgonjgYvjgb8s44GT44GG44GE44Gh44KN44GGDQor44KA44KJ44GL44G/LOOBv+OBruOCiw0KK+OCgOOCieOBvuOBpCzjgZfjgpPjgZnjgZENCivjgoDjgo3jgZ7jga4s44Gy44KN44GC44GNDQor44Gq44GM44G244GhLOOBsuOCjeOBlw0KK+OBquOBjOOBrizjgb/jgaTjgosNCivjgarjgYzjgZss44KK44KF44GG44GE44GhDQor44Gq44GM44Gf44GrLOOBl+OBuw0KK+OBquOBlOOChCzjgbLjgo3jgYLjgY0NCivjgarjgYvjgYzjgo8s44GL44GK44KKDQor44Gq44GL44G/44GhLOOBl+OCh+OBhg0KK+OBquOBi+OCgOOCiSzjgZjjgoXjgpPjgYTjgaHjgo0NCivjgarjgYvjgoDjgoks44G+44GV44Gu44KKDQor44Gq44GL44GuLOOBsuOCjeOBlw0KK+OBquOBi+OBl+OBvizjgbLjgo3jga7jgooNCivjgavjgZfjgaAs44GY44KF44KTDQor44Gr44GX44Gv44KJLOOBguOBpOOBqA0KK+OBq+OBl+OCgOOCiSzjgZfjgpPjgoQNCivjgavjgZfjgYrjgYss44GL44Ga44Gy44GTDQor44Gu44GQ44GhLOOBruOBvOOCiw0KK+OBruOBmyzjgb7jgZXjgZrjgb8NCivjgYrjgbDjgZ8s44KG44GG44GYDQor44GK44Gh44GC44GELOOBhOOBj+OBkw0KK+OBiuOBoeOBguOBhCzjgbLjgafjgbLjgZMNCivjgYrjgYzjgo8s44Gf44GL44GXDQor44GK44GM44KPLOOBvuOBleOBqA0KK+OBiuOBjOOCjyzjgZ/jgb/jgoQNCivjgYrjgYzjgo8s44GL44Gk44Go44GXDQor44GK44GO44GuLOOBvuOChuOBvw0KK+OBiuOBkOOCiSzjgZ/jgYvjgYLjgY0NCivjgZPjgpPjgaks44KE44GZ44KG44GNDQor44GK44GK44GILOOBvuOBleOBv+OBoQ0KK+OBiuOBiuOBjOOBjSzjgZjjgo3jgYYNCivjgYrjgYrjgavjgZcs44Gu44KK44GC44GNDQor44GK44GK44GuLOOBvuOBleOBv+OBoQ0KK+OBiuOBiuOBnyzjgbLjgo3jgZcNCivjgYrjgZfjgo0s44GL44Ga44GX44GSDQor44GK44GK44GfLOOBn+OBi+OBlw0KK+OBiuOBiuOBn+OBl+OCjSzjgbLjgafjgY0NCivjgYrjgYrjgaQs44G+44GV44GL44GaDQor44GK44GK44GkLOOCgeOBkOOBvw0KK+OBiuOBiuOChOOBjizjgYjjgYTjgZgNCivjgYrjgYrjgoTjgb4s44Gh44Gv44KLDQor44GK44GL44KC44GoLOOBsuOCjeOBtuOBvw0KK+OBiuOBi+OChOOBvizjgb/jgaTjgojjgooNCivjgYrjgZHjgZ/jgass44Gf44Gk44GTDQor44GK44GP44KE44G+LOOBj+OBv+OBkw0KK+OBiuOBruOBp+OCiSzjgbLjgafjgajjgZcNCivjgYrjgZbjgo8s44G/44Gu44KLDQor44GV44GE44Go44GGLOOBi+OBmuOBsuOBpw0KK+OBleOBhOOBqOOBhizjgabjgovjgYoNCivjgZXjgYTjgajjgYYs44Gf44GL44Gu44G2DQor44GV44GL44GQ44GhLOOBsuOCjeOBi+OBmg0KK+OBleOBi+OBquOBiyzjgoLjgajjgoANCivjgZXjgYvjgavjgo8s44KI44KK44GTDQor44GV44GL44GG44GhLOOBqOOBl+OBn+OBiw0KK+OBleOBj+OCieOBhCzjgaTjgajjgoANCivjgZXjgY/jgonjgYQs44G+44GV44KG44GNDQor44GV44GuLOOBn+OBj+OChA0KK+OBleOBleOBjSzjgb7jgZXjgb8NCivjgZXjgZXjgY0s44GI44KKDQor44GV44GV44GNLOOCiuOBiA0KK+OBleOBleOBvizjgb7jgZXjgYvjgZoNCivjgZXjgajjgYYs44Gf44GR44KEDQor44GV44Go44GGLOOBsuOCjeOChuOBjQ0KK+OBleOBqOOBhizjgZ/jgYvjgZcNCivjgZXjgajjgYYs44G/44KPDQor44Gr44GX44G+44GfLOOBpuOBpOOBig0KK+OBleOCj+OBoCzjgb7jgZXjgbLjgZUNCivjgZvjgpPjgbAs44KG44GG44GE44GhDQor44Gb44GoLOOCiOOBl+OBruOCig0KK+OBl+OBtuOChCzjgobjgY3jgYoNCivjgZfjgYQs44G/44GV44GTDQor44GX44G+44GgLOOBk+OBhuOBuOOBhA0KK+OBl+OBvuOBoCzjgb/jgYgNCivjgYrjgYvjgoLjgags44G+44GV44Go44GXDQor44GX44Gq44GM44KPLOOBleOBoeOBiA0KK+OBl+OCk+OBi+OCjyzjgbLjgZXjgoQNCivjgZfjgpPjgY3jgoXjgYYs44G+44GV44KG44GNDQor44GX44Gu44GgLOOBpuOCi+OBiA0KK+OBl+OBruOBr+OCiSzjgZvjgYTjgYTjgaENCivjgYLjgZXjgYvjgo8s44GL44GK44KLDQor44GX44GK44Gv44KJLOOBvuOBleOBqA0KK+OBl+OCjeOBnyzjgYvjgaTjgbLjgo0NCivjgZnjgY7jgoLjgags44GL44Ga44Gy44GnDQor44GZ44GO44KE44G+LOOBjeOCiOOBn+OBiw0KK+OBmeOBkOOBoSzjga7jgbbjgZMNCivjgoLjgo3jgajjgb8s44Gv44KL44GTDQor44GZ44Ga44GNLOOBvuOBleOBteOBvw0KK+OBn+OBkOOBoSzjgYLjgY3jgYoNCivjgZ/jgZDjgaEs44KG44GG44GYDQor44Gf44Gv44KJLOOBsuOCjeOChuOBjQ0KK+OBn+OBi+OBjizjgojjgZfjgYoNCivjgZ/jgYvjga/jgZcs44GL44Ga44GKDQor44Gf44GL44GELOOBkeOCk+OBmA0KK+OBn+OBi+OChOOBvizjgYvjgZrjgZMNCivjgZ/jgZEs44Gq44GK44GNDQor44Gf44GR44Gw44KE44GXLOOCiuOCheOBhuOBmA0KK+OBn+OBkeOBi+OCjyzjgZjjgoXjgpPjgZMNCivjgZ/jgZHjgYbjgaEs44GL44G744KLDQor44KP44Gf44Gq44G5LOOBk+OBhuOBmA0KK+OBn+OBkeOBhuOBoSzjgbLjgafjgY0NCivjgZ/jgb/jgoQs44G+44GV44GL44GaDQor44Gf44KA44KJLOOBsuOCjeOBlw0KK+OBn+OBquOBuSzjgb7jgZXjgbLjgo0NCivjgZ/jgarjgYss44GR44GE44GTDQor44Gf44Gq44GLLOOBruOBtuOBkw0KK+OBn+OBquOBiyzjgaTjgojjgZcNCivjgZ/jgavjgZDjgaEs44GC44Gk44GXDQor44Gf44Gr44GQ44GhLOOBi+OBmuOBsuOCjQ0KK+OBn+OBq+OCgOOCiSzjgZ/jgaTjgYoNCivjgZ/jga7jgYbjgYgs44GC44GN44Gy44KNDQor44Gf44KL44GV44KPLOOBguOBjeOBkw0KK+OBn+OBl+OCjSzjgajjgZfjga/jgosNCivjgabjgonjgaAs44KG44GN44Gy44GTDQor44Go44GG44GMLOOBsuOBp+OBv+OBrQ0KK+OBqOOBjOOBlyzjgZfjgZLjgYoNCivjgajjgYbjgZTjgYYs44GX44KT44KEDQor44Go44GP44Gq44GMLOOBguOChOOBkw0KK+OBqOOCguOBrizjgYvjgZrjgb8NCivjgajjgojjgaAs44KI44GG44GY44KN44GGDQor44Gk44Gh44KELOOBsuOCjeOBguOBjQ0KK+OBpOOBi+OBr+OCiSzjga7jgbbjgbLjgo0NCivjgYbjgonjgZXjgY0s44KG44GG44GYDQor44KP44GgLOOBqOOCguOChOOBmQ0KK+OCj+OBoCzjgozjgYTjgZMNCivjgo/jgZ/jgarjgbks44G+44GV44Go44GXDQor44KP44Gf44Gq44G5LOOBteOBv+OBig0KK+OChOOBjuOBrOOBvizjgZHjgYTjgZMNCivjgoTjgb7jgaAs44Go44GX44GC44GNDQor44KE44G+44GgLOOBsuOBleOBlw0KK+OChOOBvuOBoCzjgZHjgYTjgZgNCivjgoTjgb7jgoLjgags44G+44GV44GC44GNDQor44KE44G+44KC44GoLOOBsuOBp+OBqA0KK+OChOOBvuOCguOBqCzjgZ/jgaTjgoQNCivjgoTjgb7jgoLjgags44KG44GN44Gy44KNDQor44KE44G+44Gq44GLLOOBoeOBsuOCjQ0KK+OChOOBvuOBquOBiyzjgYvjgYrjgosNCivjgoTjgb7jgZfjgZ8s44G+44GV44Gy44KNDQor44Gy44GQ44GhLOOBmOOCheOCk+OBmA0KK+OChOOBvuOBluOBjSzjgbXjgb/jga4NCivjgoTjgarjgY4s44Gy44KN44GXDQor44KE44GZ44GgLOOBruOBtuOChuOBjQ0KK+OChOOBmeOBiCzjgajjgZfjgoQNCivjgojjgZPjgYgs44Gu44G244GC44GNDQor44KI44GT44KE44G+LOOCiuOBiOOBkw0KK+OCiOOBreOBr+OCiSzjgZPjgYbjgYTjgaENCivjgojjga3jgb/jgaQs44G+44GT44GoDQor44KI44KK44G+44GkLOOBqOOCguOBkw0KK+OCiOOBl+OBoCzjgbXjgb/jgbLjgo0NCivjgojjgZfjga4s44G/44Gk44Gy44KNDQor44KI44GX44Gf44GNLOOBiuOBleOCgA0KK+OChuOBi+OCjyzjgZjjgoXjgpPjgoQNCivjgobjgoos44Go44KC44GKDQor44KC44KKLOOBn+OBi+OBsuOBlQ0KK+OBleOBleOBjSzjgYvjgaTjgbLjgZMNCivjgZfjgonjga/jgb4s44Gf44GR44Gy44KNDQor44Gm44KT44Gx44GPLOOChuOBhuOBhOOBoeOCjQ0KK+OBhuOBoeOBoCzjgarjgYrjgoQNCivjgoTjgb7jgYbjgoks44Go44GK44KLDQor44G+44Gk44GQ44G+LOOBteOBv+OBkw0KK+OBguOBuSzjgbLjgo3jgobjgY0NCivjgYLjgbks44GL44Gk44G/DQor44GC44G5LOOBi+OBmuOBig0KK+OBguOBuSzjgarjgYrjgYLjgY0NCivjgYLjgaDjgaEs44Gq44Gq44GKDQor44GC44GE44Gv44KJLOOBpOOCiOOBlw0KK+OBguOBmOOBvizjgoTjgZnjgYLjgY0NCivjgYLjgYvjgZXjgYss44Go44GK44KLDQor44GC44GN44KC44GoLOOBk+OBhuOBnuOBhg0KK+OBguOBjeOChOOBvizjgZ/jgYvjgZcNCivjgYLjgY3jgoTjgb4s44Gf44Gk44KEDQor44GC44GP44GtLOOBsuOCjeOBlw0KK+OBguOBvuOBrizjgb7jgarjgbYNCivjgYLjgb7jga4s44Gh44GC44GNDQor44GC44KB44G/44KELOOBvuOBleOBpOOBkA0KK+OBguOCk+OBqeOBhizjgb/jgY0NCivjgYLjgpPjganjgYYs44G/44KPDQor44GC44KT44Gp44GGLOOBi+OBmuOBig0KK+OBguOCk+OBmOOBjSzjgobjgYbjgZMNCivjgYLjgpPjgbrjgYTjgZgs44GX44KF44KT44GE44GhDQor44GC44GK44GNLOOCiOOBl+OBkw0KK+OBguOBiuOBjSzjgZfjgZLjga/jgosNCivjgYLjgYrjgY0s44KG44GN44GTDQor44GC44GK44GNLOOBmOOCheOCkw0KK+OBguOBiuOBjSzjgajjgZfjgYLjgY0NCivjga/jgonjgZfjgb4s44KK44GLDQor44GC44GK44GNLOOBpOOBqOOCgA0KK+OBguOBiuOBjSzjgarjgYrjgbLjgZUNCivjgYLjgYrjgoTjgY4s44Gf44GL44KG44GNDQor44GC44GK44KE44G+LOOCiOOBhuOBhOOBoQ0KK+OBguOBiuOChOOBvizjgZHjgYTjgZnjgZENCivjgYLjgonjgYQs44GT44GG44GE44GhDQor44GC44KJ44GNLOOBvuOBk+OBqA0KK+OBguOCieOBjSzjgYvjgaTjgZgNCivjgYLjgonjgZ8s44G/44GNDQor44GC44KJ44KELOOBl+OCk+OBhOOBoQ0KK+OBk+OBsOOChOOBi+OCjyzjgoTjgZnjgbLjgo0NCivjgYLjgorjgZ8s44Gq44KL44Gy44GoDQor44GC44GV44GwLOOCiOOBl+OChuOBjQ0KK+OBguOBleOBiyzjgajjgoLjgaHjgYsNCivjgYLjgZXjgY/jgoks44Gf44Gk44GKDQor44GC44GV44GuLOOBl+OCheOBhuOBmA0KK+OBguOBleOBrizjgajjgoLjgYLjgY0NCivjgYLjgZfjgbks44G+44GV44Gy44GTDQor44GC44KP44G/44KELOOBsuOCjeOChuOBjQ0KK+OBguOBluOBvyzjgaTjgajjgoANCivjgYLjgZzjgoTjgarjgY4s44Gy44KN44G/DQor44GC44Ga44G+LOOCiuOBiA0KK+OBguOBmuOBvizjgZ/jgYvjgobjgY0NCivjgYLjgZrjgb4s44Gq44GK44KG44GNDQor44Gw44GwLOOCiOOBl+OBi+OBmg0KK+OBsOOBsCzjgYvjgaTjgobjgY0NCivjgbDjgbAs44Gg44GE44GZ44GRDQor44Gw44Gq44GLLOOBi+OBmuOChA0KK+OBleOBn+OBkSzjgZHjgYTjgZMNCivjgaHjgbAs44KC44Go44Gv44KLDQor44Gh44GO44KJLOOBruOBtuOBsuOBkw0KK+OBoeOBr+OCiSzjgZ/jgYvjgbXjgb8NCivjgaHjgYvjgYQs44GC44Gk44GXDQor44Gh44KF44GG44G+LOOBn+OBkeOBlw0KK+OBoOOBhCzjgb7jgZXjgbLjgo0NCivjgaDjgYTjgYos44Gy44Gn44GNDQor44Gg44GmLOOBsuOCjeOBlw0KK+OBp+OBkOOBoSzjgZPjgYbjgZgNCivjgafjgo8s44GI44G/44GTDQor44Gp44GELOOBn+OBhOOBnuOBhg0KK+OBiOOBs+OBleOCjyzjgbLjgo3jgb/jgaQNCivjgarjgYvjgoDjgoks44Gf44GL44GTDQor44GI44GE44KC44KKLOOBr+OCi+OBvw0KK+OBiOOCk+OBqSzjgarjgYrjgY0NCivjgYjjgpPjgaks44Gf44GL44GKDQor44GI44Gu44KC44GoLOOBkeOBhOOBkw0KK+OBteOBmOOBhCzjgbLjgo3jgYvjgZoNCivjgbXjgZjjgYQs44GR44KT44GE44Gh44KNDQor44G144GY44GELOOBn+OBpOOBruOCig0KK+OBteOBmOOBhCzjgb/jgaTjgojjgZcNCivjgbXjgZjjgYQs44Go44GX44GC44GNDQor44G144GY44GL44KPLOOBl+OBruOBtg0KK+OBteOBmOOCguOCiizjgYLjgY3jgZMNCivjgYLjgYrjgY0s44GC44GN44KJDQor44G144GY44KC44GoLOOBquOBiuOChA0KK+OBteOBmOOBiuOBiyzjgabjgaTjgo3jgYYNCivjgbXjgZjjgZ8s44KE44GZ44Gy44GVDQor44G144GY44GfLOOCgOOBpOOBig0KK+OBteOBi+OBiizjgZfjgpPjgYTjgaENCivjgbXjgY/jgaAs44GL44Gk44Gy44GTDQor44G144GP44GgLOOBsuOCjeOBlw0KK+OBteOBj+OBhCzjgbLjgafjgYoNCivjgbXjgY/jgYQs44GT44GG44GYDQor44G144GP44KC44GoLOOBsuOBp+OBn+OBiw0KK+OBteOBj+OBl+OBvizjgbLjgafjga7jgbYNCivjgbXjgY/jgZfjgb4s44Gu44G244GTDQor44Gy44GuLOOBleOBoQ0KK+OBteOBj+OBluOCjyzjgY3jgofjgYbjgZMNCivjgbXjgY/jgZbjgo8s44G/44GN44GTDQor44G144Gq44GgLOOChuOBhuOBkw0KK+OBteOCi+OBoOOBpizjgZHjgYTjgZMNCivjgbXjgovjgoQs44GR44GE44GZ44GRDQor44G144Gf44KA44KJLOOBv+OBjeOChA0KK+OBquOBi+OCgOOCiSzjgoLjgajjgbLjgZUNCivjgZTjgajjgYYs44GX44GS44GNDQor44GU44Go44GGLOOBi+OBmuOChA0KK+OBlOOBqOOBhizjgYvjgYTjgaHjgo3jgYYNCivjgZTjgajjgYYs44KI44GG44GTDQor44Gv44GwLOOCiOOBhuOBkw0KK+OBr+OBoeOChOOBvizjgb7jgZXjgb8NCivjga/jgY7jgo/jgoks44GX44KTDQor44Gv44G+44G5LOOBn+OBi+OChuOBjQ0KK+OBr+OBvuOBoCzjgojjgZfjgb8NCivjga/jgb7jgaAs44Gf44GL44Gy44GnDQor44G+44GI44GK44GLLOOBsuOBqOOBlw0KK+OBr+OBquOBvyzjgoTjgZnjgbLjgacNCivjga/jgarjgYrjgYss44GC44GN44GTDQor44Gb44GW44GELOOBquOBiuOBjQ0KK+OBr+OCiSzjgorjgofjgYbjgZgNCivjgZXjgajjgYYs44Gb44GE44GUDQor44Gv44KJLOOBguOBpOOBlw0KK+OBr+OCieOBoCzjgarjgaTjgb8NCivjga/jgonjgaAs44GI44GE44GE44GhDQor44Gv44KJ44GgLOOBi+OBmuOBsuOBkw0KK+OBr+OCieOBoCzjgb7jgZXjgYLjgY0NCivjga/jgonjgaAs44G/44Gk44Gu44KKDQor44Gv44KK44G+LOOBquOBiuOBjQ0KK+OBu+OCk+OBvizjga7jgbbjgYLjgY0NCivjga/jgovjgoTjgb4s44GX44GS44KLDQor44Gv44GbLOOCiOOBhuOBhOOBoQ0KK+OBr+OBm+OBjOOCjyzjgZ/jgaTjgYoNCivjga/jgZvjgYzjgo8s44KE44KI44GEDQor44Gv44Gb44GM44KPLOOBkeOCk+OBn+OCjeOBhg0KK+OBr+OBm+OBjOOCjyzjgYLjgY3jgbLjgZMNCivjga/jgZfjgZDjgaEs44Gy44Go44GXDQor44Gv44GX44KC44GoLOOBi+OBpOOBkw0KK+OBr+OBl+OCguOBqCzjgYvjgZrjgoQNCivjga/jgZfjgZrjgoEs44GT44GG44Gf44KN44GGDQor44Gv44GX44Ga44KBLOOBv+OCjw0KK+OBr+OBl+OBmuOCgSzjgZfjgoXjgpPjgZnjgZENCivjga/jgZ8s44GX44KT44GE44Gh44KN44GGDQor44Gv44Gf44GuLOOBoeOBi+OCiQ0KK+OBr+OBn+OBrizjgYvjgZrjgajjgoINCivjga/jgajjgoos44Gq44GK44GNDQor44Gv44Gj44Go44KKLOOBn+OBkeOBlw0KK+OBr+OBo+OBqOOCiizjgojjgYbjgYTjgaENCivjga/jgaPjgajjgoos44GC44GN44Gy44GTDQor44Gv44Gj44Go44KKLOOChuOBjQ0KK+OBr+OBo+OBqOOCiizjgZXjgajjgZcNCivjga/jgaPjgajjgoos44G+44GV44GNDQor44Gv44Gj44Go44KKLOOCj+OBn+OCiw0KK+OBr+OChOOBi+OCjyzjgZHjgYTjgZMNCivjga/jgoTjgYvjgo8s44Gq44GK44G/DQor44Gv44KE44G/LOOBmeOBv+OBsuOBqA0KK+OBr+OChOOBlyzjgbLjgafjgYLjgY0NCivjga/jgoTjgZcs44KG44G/44GTDQor44Gv44KE44GXLOOBvuOBleOBn+OBiw0KK+OBr+OChOOBlyzjgb7jgobjgb8NCivjga/jgoTjgZcs44KE44GZ44Gy44KNDQor44GV44GV44Gf44GrLOOBguOBjeOCiQ0KK+OBr+OChOOBlyzjgb7jgZXjga7jgooNCivjga/jgZbjgb4s44Gb44GE44GE44GhDQor44G444KT44G/LOOBi+OBquOBkw0KK+OBsuOBsyzjgajjgoLjgb8NCivjgbLjgaDjgYss44Go44GG44GTDQor44Gy44Gg44GLLOOChuOBhuOBkw0KK+OBsuOBoOOBiyzjgZ/jgo3jgYYNCivjgbLjgYjjgaAs44G/44Gh44GL44GaDQor44Gy44GM44GNLOOBl+OCh+OBhuOBmA0KK+OBsuOBjOOBlyzjgojjgZfjgbLjgZUNCivjgbLjgYTjganjgoEs44Gy44KN44G/44GhDQor44Gy44GY44GP44KNLOOBm+OBhOOBhOOBoQ0KK+OBteOBj+OBhCzjgYTjgZXjgYoNCivjgbLjgb4s44KI44GX44GNDQor44Gy44GK44GNLOOBqOOBhuOCgeOBhA0KK+OBsuOCieOBhCzjgb7jgooNCivjgb/jgY0s44G+44GV44KG44GNDQor44Gy44KJ44GuLOOBteOBjeOCiA0KK+OBsuOCieOBrizjgYvjgZrjgbLjgo0NCivjgbLjgonjgZ8s44GX44KN44GGDQor44Gy44KJ44Gk44GLLOOBteOBv+OBi+OBmg0KK+OBu+OBoCzjgbLjgo3jgY0NCivjgbLjgonjgoTjgb4s44Gq44GK44GTDQor44Gy44KN44G5LOOBjeOBj+OBvw0KK+OBsuOCjeOBhCzjgb7jgZXjgbLjgo0NCivjgbLjgo3jgZXjgo8s44G+44GV44Gy44KNDQor44Gy44KN44GV44KPLOOBquOBiuOBkw0KK+OBsuOCjeOBmeOBiCzjgZjjgoXjgpPjgZMNCivjgbLjgo3jgZ8s44GK44GV44KADQor44Gv44KE44G+LOOChuOBhuOBkw0KK+OBsuOCjeOCj+OBn+OCiizjgZXjgobjgooNCivjgbLjgZXjgoLjgags44G/44GL44GTDQor44Gy44GV44GuLOOCiOOBl+OBguOBjQ0KK+OBsuOBleOChuOBjSzjgobjgYvjgooNCivjgbLjgZfjgaAs44Gy44KN44GXDQor44Gy44GX44Gf44GrLOOChOOBmeOBlw0KK+OCj+OBoCzjgbXjgb/jgYgNCivjgbLjgoTjgb4s44Gu44G244Gy44GTDQor44GC44KK44GP44KJLOOChuOBn+OBiw0KK+OBu+OCk+OBoCzjgb/jga7jgosNCivjgbvjgpPjgaAs44GR44GE44GZ44GRDQor44G744KT44GU44GGLOOBvuOBleOBqA0KK+OBu+OCk+OBvizjgobjgYbjgYTjgaENCivjgbvjgpPjgb4s44GC44GN44Gu44G2DQor44G+44Gk44KC44GoLOOBkeOCk+OBnw0KK+OBu+OCiizjgb7jgarjgbYNCivjgbvjgoos44GC44GN44GoDQor44G744KK44G5LOOBqOOBl+OChuOBjQ0KK+OBu+OCiuOBiCzjgYLjgY3jga7jgooNCivjgbvjgorjgYgs44G+44GV44Gy44GTDQor44G744KK44GILOOBn+OBoOOBlw0KK+OBu+OCiuOBhuOBoSzjgojjgZfjgbXjgb8NCivjgbvjgZfjgbAs44Go44GK44KLDQor44G744GX44GL44KPLOOBsuOBp+OBig0KK+OBi+OBqOOBhizjgarjgYrjgY0NCivjgbvjgZfjgaos44GT44GG44GE44GhDQor44G744KKLOOBruOCiuOChuOBjQ0KK+OBu+OBl+OBrizjgZ/jgYvjgZcNCivjgbvjgZ3jgaAs44Gu44G244GKDQor44G744Gj44GfLOOBleOBiuOCig0KK+OBu+OBoeOBqSzjgZ/jgYvjgoQNCivjgYTjgbbjgYss44KI44GX44Gm44KLDQor44GE44Gh44GL44KPLOOBsuOBqOOBlw0KK+OBhOOBoeOBi+OCjyzjgb7jgorjgZMNCivjgYTjgaHjgb7jgZks44Gk44Go44KADQor44GE44Gh44Gu44GbLOOBi+OBpOOBvw0KK+OBhOOBpyzjgb7jgZXjgbLjgZMNCivjgYTjgYzjgonjgZcs44G+44GV44GoDQor44GE44GM44GfLOOBiOOBhOOBhOOBoeOCjeOBhg0KK+OBhOOBhCzjgobjgorjgZMNCivjgYTjgYTjgaAs44G+44GV44KI44GXDQor44GE44GE44GgLOOBvuOBleOChuOBjQ0KK+OBhOOBhOOBoCzjgZfjgpPjgZgNCivjgYTjgYTjga4s44GE44Gh44KN44GGDQor44GE44GE44KI44KKLOOBv+OBoeOBr+OCiw0KK+OBhOOBhOOBmuOBiyzjgb7jgZPjgagNCivjgYTjgYvjgovjgY4s44GL44Gk44KEDQor44GE44GL44KPLOOBkeOBhOOBmeOBkQ0KK+OBhOOBkeOBoSzjgb7jgb8NCivjgYTjgZHjgaAs44GT44GG44GE44Gh44KN44GGDQor44GE44GR44GgLOOCguOBqOOBr+OCiw0KK+OBhOOBkeOBoCzjgZ/jgYvjgZMNCivjgYTjgZHjgaAs44Gf44GL44KG44GNDQor44GE44GR44GM44G/LOOBqOOCguOBsuOCjQ0KK+OBhOOBkeOBmOOCiizjgYvjgZrjgoQNCivjgYTjgZHjgZ/jgY0s44GP44Gr44GK44G/DQor44GE44GP44KC44GoLOOBl+OCkw0KK+OBhOOBvuOBhCzjgZ/jgZHjgZcNCivjgYTjgb7jgYQs44KM44GE44GTDQor44G744Gd44GELOOBkeOCk+OBn+OCjeOBhg0KK+OBhOOBvuOBhCzjgZXjgbbjgo3jgYYNCivjgYTjgb7jgavjgZcs44Gf44GR44GXDQor44GE44Gq44GgLOOBr+OBmOOCgQ0KK+OBhOOBquOBjOOBjSzjgb7jgarjgbYNCivjgYTjgarjgZIs44GR44KT44GE44GhDQor44Gv44GW44G+LOOBsuOBleOCguOBqA0KK+OBhOOBrizjgZjjgoXjgpMNCivjgYTjga7jgb7jgZ8s44GR44GE44Gf44KN44GGDQor44GE44Gu44GG44GILOOCiuOBiA0KK+OChOOBmeOBi+OCjyzjgZ/jgYvjgbLjgagNCivjga/jgoss44Go44GK44KLDQor44GE44Gu44GG44GILOOBpuOCi+OBig0KK+OBhOOBruOBhuOBiCzjgaTjgajjgoANCivjgYTjga7jgYbjgYgs44G144G/44Gu44KKDQor44GE44Gu44GG44GILOOBsuOCjeOBsuOBlQ0KK+OBhOOBiuOBjSzjgb7jgZXjgb/jgaENCivjgYTjgorjgYgs44Gu44G244KG44GNDQor44GE44GV44GLLOOBqOOBiuOCiw0KK+OBhOOBleOBiyzjgo/jgZ/jgosNCivjgYrjgYrjgoLjgoos44GR44KT44GE44Gh44KNDQor44GE44GX44Gw44GXLOOBvuOBquOBtg0KK+OBhOOBl+OBoCzjgZHjgYTjgYTjgaENCivjgYTjgZfjgaAs44GG44KJ44KJDQor44GE44GX44Gv44KJLOOCiOOBl+OBqA0KK+OBhOOBl+OBr+OCiSzjga/jgovjgYoNCivjgbLjgonjgags44Gy44Gn44GKDQor44GE44GX44GELOOBkeOBhOOBmOOCjeOBhg0KK+OBhOOBl+OBhCzjgb/jgY3jgYoNCivjgYTjgZfjgYQs44GC44Gk44GXDQor44GE44GX44GELOOBr+OCi+OBig0KK+OBhOOBl+OBhCzjgZHjgYTjgZgNCivjgYTjgZfjgYQs44G+44GV44GTDQor44Gv44Gt44GE44GXLOOBl+OCk+OBmeOBkQ0KK+OBhOOBl+OBhCzjgoTjgZnjgZcNCivjgYTjgZfjgYvjgo8s44KI44GG44GTDQor44GE44GX44GL44KPLOOCiOOBhuOBmeOBkQ0KK+OBhOOBl+OBi+OCjyzjgojjgZfjgbLjgZMNCivjgYTjgZfjgYvjgo8s44KG44GLDQor44GE44GX44GL44KPLOOBruOCiuOBkw0KK+OBhOOBl+OBiuOBiyzjgojjgZfjgobjgY0NCivjgYTjgZfjgaTjgYss44Go44GX44KG44GNDQor44GE44GX44KP44GfLOOBguOCiuOBsuOCjQ0KK+OBhOOBl+OBluOBiyzjgZPjgYbjgZgNCivjgYTjgZfjgZbjgYss44GI44GE44GE44GhDQor44GE44GX44GW44GNLOOBk+OBhuOBmA0KK+OBhOOBl+OBmuOBjSzjgarjgYrjgagNCivjgYTjgZ0s44GX44GS44Gy44GoDQor44GE44Gd44GM44GELOOChuOBhuOBkw0KK+OBhOOBn+OBsCzjgobjgYbjgZgNCivjgYTjgajjgYYs44GE44Gu44KKDQor44GE44Go44GGLOOBvuOBleOBsuOCjQ0KK+OBhOOBqOOBhizjgb7jgZXjgbLjgo0NCivjgYTjgajjgYYs44Gw44KTDQor44GE44Go44GGLOOBleOBqOOBlw0KK+OBhOOBqOOBhizjgYLjgaTjgZcNCivjgbLjgaDjgYss44Gy44Gn44Gk44GQDQor44GE44Go44GGLOOBvuOBleOBsuOCjQ0KK+OBhOOBqOOBhizjgobjgY0NCivjgavjgZcs44GX44KT44GE44GhDQor44GE44KP44Gg44KMLOOCiOOBl+OBruOCig0KK+OBhOOCj+OBr+OBlyzjgobjgYbjgZMNCivjgYTjgo/jgY0s44G/44Ga44G7DQor44GE44KP44KC44GoLOOCiOOBl+OBruOCig0KK+OBhOOCj+OBleOBjSzjga7jgbbjgYvjgZoNCivjgbLjgonjgaTjgYss44Gy44KN44GXDQor44GE44KP44GV44GNLOOBsuOCjeOChuOBjQ0KK+OBhOOCj+OBleOBjSzjgb7jgZXjgobjgY0NCivjgYTjgo/jgZXjgY0s44Gy44KN44KG44GNDQor44GY44KT44GQ44GGLOOBleOBqOOBkw0KK+OBhOOCj+OBl+OBkizjgb7jgZPjgagNCivjgYTjgo/jgZ8s44Gy44KN44GXDQor44GY44KT44GQ44GGLOOCiOOBl+OBruOCig0KK+OBlCzjgoTjgZnjgYvjgZoNCivjgYvjgYws44GL44Gk44KEDQor44GL44GM44G2LOOBl+OCk+OBmOOCjeOBhg0KK+OBi+OBjuOChOOBvizjgbLjgafjgYoNCivjgYvjgYQs44KG44GG44Ge44GGDQor44GL44GE44GgLOOBruOCiuOChuOBjQ0KK+OBi+OBhOOBoCzjga7jgorjgb7jgZUNCivjgYvjgb7jgaEs44Gy44KN44KG44GNDQor44GL44G+44GgLOOBvuOBleOBkw0KK+OBi+OBvuOBu+OCiizjgajjgoLjgbLjgZMNCivjgYvjgb7jgZ8s44GT44GG44GE44Gh44KN44GGDQor44GL44KB44GgLOOBvuOChuOBvw0KK+OBi+OCgeOBhCzjgbXjgb/jgbLjgZMNCivjgYvjgb/jga4s44Gf44GR44GXDQor44GL44G/44GuLOOBsuOBqOOBlw0KK+OBi+OBv+OBqOOBrizjgorjgoXjgYbjgZgNCivjgYvjgb/jgoQs44Gu44G244KG44GNDQor44GL44G/44KELOOBoeOBguOBjQ0KK+OBi+OBv+OChOOBvizjgZHjgpPjgY4NCivjgYvjgoLjgpMs44Gy44Gn44GNDQor44GL44KC44KTLOOBiOOBhOOBn+OCjeOBhg0KK+OBi+OCkyzjgajjgoLjga7jgooNCivjgYvjgarjgYQs44Gu44KK44GTDQor44GL44Gq44GELOOBmeOBv+OBkw0KK+OBi+OBquOBmCzjgb7jgZXjgobjgY0NCivjgYvjgarjgYrjgYss44Gf44G/44GKDQor44GL44Gq44GW44KPLOOBi+OBpOOBsuOBlQ0KK+OBi+OCk+OBuSzjgZXjgYrjgooNCivjgYvjgpPjgaAs44KE44GZ44Gf44GLDQor44GL44KT44GgLOOBoeOBiA0KK+OBi+OBreOBjSzjgYjjgYTjgZnjgZENCivjgYvjga3jgY3jgogs44Gy44KN44GoDQor44GL44Gt44GTLOOBsuOCjeOChuOBjQ0KK+OBi+OBreOBl+OBnyzjgYvjgZrjgbLjgo0NCivjgYvjga3jgoTjgZks44Gq44GK44KEDQor44GL44Gu44GGLOOBl+OCk+OBmA0KK+OBi+OBruOBhizjgZ/jgZHjgZcNCivjgYvjgpPjgZrjgYQs44Gf44G/44KG44GNDQor44GL44GV44Gv44KJLOOBquOBquOBkw0KK+OBi+OBleOBr+OCiSzjgbLjgafjgbLjgZUNCivjgYvjgZXjgYQs44GI44GE44GE44GhDQor44GL44GV44G+44GkLOOBj+OBq+OBqOOBlw0KK+OBi+OBleOCgizjgZHjgpPjgYTjgaHjgo0NCivjgZ/jgb7jgZ/jgass44GX44G+DQor44GL44GX44KP44GOLOOChuOCiuOBvw0KK+OBi+OBl+OCj+OBkOOCiSzjgbLjgafjgobjgY0NCivjgYvjgZ/jgaAs44GV44Gh44GTDQor44GL44Gf44GK44GLLOOBquOBiuOBjQ0KK+OBu+OBlyzjgbLjgo3jgagNCivjgYvjgZ/jgYrjgYss44GX44KF44GG44GYDQor44GL44Go44GGLOOBsuOCjeOBjQ0KK+OBi+OBqOOBhizjgoTjgZnjgobjgY0NCivjgYvjgajjgYYs44KC44KK44Gy44KNDQor44GL44Go44GGLOOBl+OCk+OBhOOBoQ0KK+OBi+OBqOOBhizjgorjgofjgYbjgZ8NCivjgYvjgajjgYYs44GR44GE44GTDQor44GL44Go44GGLOOBpuOCi+OBsuOBkw0KK+OBi+OBqOOBhizjgZjjgoXjgpPjgZMNCivjgYvjgajjgYYs44G/44Gh44KEDQor44GL44Go44GuLOOBjeOCiOOBlw0KK+OBi+OBpOOCgOOCiSzjgbLjgafjgY0NCivjgYvjgo/jgbDjgZ8s44GE44Gh44KN44GGDQor44GL44KP44GU44GILOOBguOBjeOCiQ0KK+OBi+OCj+OBkOOBoSzjgZPjgYbjgZgNCivjgYvjgo/jga/jgoks44G+44GZ44G/DQor44GL44GX44KA44KJLOOChuOBhuOBkw0KK+OBi+OCj+OBhCzjgarjgYrjgb8NCivjgYvjgo/jgYQs44Gy44KN44KG44GNDQor44GL44KP44KC44GoLOOBvuOBquOBtg0KK+OBi+OCj+OCgOOCiSzjgZXjgajjgosNCivjgYvjgo/jgoDjgoks44GX44KF44GG44GYDQor44GL44KP44GqLOOChuOBjeOBsuOBqA0KK+OBi+OCj+OBqizjgb7jgZXjgYvjgZoNCivjgYvjgo/jgarjgb8s44Gy44Gn44Gy44GTDQor44GL44KP44GuLOOBl+OCk+OBmA0KK+OBi+OCj+OBmyzjgZjjgoXjgpPjgYTjgaHjgo0NCivjga/jgonjgaAs44GX44KF44GG44GT44GGDQor44GL44KP44GX44G+LOOBruOBtuOBkw0KK+OBi+OBluOBvyzjgarjgYrjgagNCivjgYvjgZrjgZXjgo8s44KE44GZ44Gy44KNDQor44GN44Gw44KE44GXLOOChuOBhuOBhOOBoQ0KK+OBjeOBoCzjgZ/jgZHjgZcNCivjgY3jga/jgoks44KI44GX44Gy44GTDQor44GN44GP44GhLOOBsuOCjeOBlw0KK+OBjeOBj+OBoSzjgYTjgaHjgo3jgYYNCivjgZXjgYTjgajjgYYs44GR44KT44GYDQor44GN44GP44GELOOBpOOCiOOBlw0KK+OBjeOCguOBqCzjgojjgYbjgZMNCivjgY3jgoDjgoks44Gu44G244KG44GNDQor44GN44KA44KJLOOBpOOCiOOBlw0KK+OBjeOCgOOCiSzjgajjgZfjgaTjgZANCivjgY3jgoDjgoks44Gf44GL44Gy44GVDQor44GN44KA44KJLOOBr+OCi+OBvw0KK+OBjeOBrizjgYvjgZrjgb7jgZUNCivjgY3jgorjga4s44GL44Ga44KEDQor44GN44GV44Gs44GNLOOBvuOBk+OBqA0KK+OBjeOBlyzjgb7jgZXjgY0NCivjgY3jgZcs44Gq44GK44GNDQor44GN44GX44GgLOOBleOBqOOBlw0KK+OBjeOBl+OBi+OCjyzjgZfjgpMNCivjgbLjgonjgaYs44GX44KT44GYDQor44GN44GX44Gq44G/LOOChOOBmeOBvuOBlQ0KK+OBjeOBnSzjgojjgZfjgYoNCivjgY3jgZ8s44Gy44Gn44GC44GNDQor44GN44Gf44GM44KPLOOBquOBiuOBvw0KK+OBjeOBn+OBmOOBvizjgbLjgo3jgobjgY0NCivjgY3jgZ/jgZjjgb4s44Gb44GE44GLDQor44GN44Gf44KA44KJLOOBruOCiuOBkw0KK+OBjeOBn+OBrizjgajjgZfjgobjgY0NCivjgY3jgZ/jgZbjgY0s44Gf44Gg44GXDQor44GN44Gf44GW44KPLOOBn+OBpOOBlw0KK+OBjeOCiOOBr+OCiSzjgaTjgajjgoANCivjga/jgZfjgoLjgags44GK44GV44KADQor44Gu44GW44GNLOOBteOBv+OBjeOCiA0KK+OBk+OBsOOChOOBlyzjgbXjgb/jgYoNCivjgZPjgbDjgoTjgZcs44G+44GV44KG44GNDQor44GT44Gw44KE44GXLOOBquOBiuOBjQ0KK+OBk+OBsOOChOOBlyzjgZ/jgYvjga/jgosNCivjgZPjgbDjgoTjgZcs44GR44KT44GYDQor44GT44Gw44KE44GXLOOBguOBpOOBlw0KK+OBk+OBsOOChOOBlyzjgYjjgYTjgZgNCivjgZPjgbDjgoTjgZcs44GV44Gh44GTDQor44GT44Gw44KE44GXLOOBl+OCh+OBhuOBmA0KK+OBk+OBsOOChOOBlyzjgajjgoLjgbLjgo0NCivjgZPjgYbjgaEs44KG44GNDQor44GT44Gg44G+LOOChOOBmeOBsuOCjQ0KK+OBk+OBjCzjgYLjgY3jgbLjgo0NCivjgajjgYbjganjgYYs44GX44KF44GG44GE44GhDQor44GT44Gv44KJLOOBquOBiuOBmeOBvw0KK+OBk+OBsizjga/jgovjgb8NCivjgZPjgpPjga4s44Gy44KN44G144G/DQor44GT44GE44GRLOOBqOOBiuOCiw0KK+OBk+OBhOOCjyzjgajjgoLjgobjgY0NCivjgZPjgYTjgZrjgb8s44GX44KF44GG44GUDQor44GT44GY44GLLOOBv+OBiOOBkw0KK+OBk+OBmOOBvizjgarjgYzjgYoNCivjgZPjgZjjgb4s44KK44Gh44GTDQor44GT44GY44G+LOOBi+OBmuOBsuOBkw0KK+OBk+OBmOOBvizjgZXjgajjgZcNCivjgZPjgb7jgaTjgbDjgoks44KK44KF44GG44GfDQor44GT44G/44KELOOBjeOCiOOBlw0KK+OBk+OCguOBoCzjgYLjgY3jgojjgZcNCivjgZPjgoDjgo0s44Go44GX44KG44GNDQor44GT44KT44GpLOOBquOBpOOBvw0KK+OBk+OCk+OBqSzjgZHjgpPjgZgNCivjgZPjgpPjgaks44GR44KT44GE44GhDQor44GT44GV44GRLOOBk+OBhuOBhOOBoQ0KK+OBk+OBmyzjgZ/jgYvjgZcNCivjgZPjgZnjgY4s44Gf44GR44GXDQor44GT44Ga44GLLOOChOOBmeOBruOCig0KK+OBj+OBvCzjga/jgovjgb8NCivjgY/jgbws44Gf44GR44Gy44KNDQor44GP44G8LOOBquOBiuOBjQ0KK+OBj+OBvCzjgZfjgZLjgYoNCivjgY/jgbws44Gy44KN44GXDQor44GP44Gp44GGLOOBvuOCig0KK+OBj+OBqeOBhizjgZvjgYTjgYTjgaENCivjgY/jganjgYYs44G+44GV44GNDQor44GP44G+44GL44KPLOOBkeOCk+OBmA0KK+OBj+OBvuOBj+OCiSzjgZHjgpPjgYTjgaENCivjgY/jgb7jgZfjgo0s44Gb44GE44GE44GhDQor44GP44G+44GfLOOBl+OCjeOBhg0KK+OBj+OBq+OCguOBqCzjgZjjgoXjgpPjgZgNCivjgY/jgonjgoLjgaEs44GX44KF44GG44GE44GhDQor44GP44KJ44GX44G+LOOBsuOCjeOBlw0KK+OBj+OCiuOBr+OCiSzjgYvjgZrjgbLjgo0NCivjgbLjgonjgYQs44GT44GG44GYDQor44GP44KK44Gv44KJLOOCiOOBl+OChuOBjQ0KK+OBj+OCiuOBr+OCiSzjgYvjgaTjgogNCivjgY/jgorjga/jgoks44KG44GG44GYDQor44GP44KK44Gv44KJLOOBpuOBpOOBig0KK+OBj+OCiuOBr+OBlyzjgb/jgaTjga7jgbYNCivjgY/jgorjgZks44KI44GG44GTDQor44GP44KN44GgLOOBguOBpOOBlw0KK+OBj+OCjeOBoCzjgbLjgo3jgobjgY0NCivjgY/jgo3jgY0s44Gf44GL44Gy44KNDQor44GP44KN44GNLOOBqOOCguOBkw0KK+OBj+OCjeOBjSzjgYjjgYTjgZgNCivjgY/jgo3jgoEs44G+44GT44GoDQor44GP44KN44GV44KPLOOBiOOBhOOBmOOCjeOBhg0KK+OBj+OCi+OBv+OChCzjgZPjgYbjgY0NCivjgY/jgZXjgoTjgarjgY4s44G+44GV44Go44GXDQor44GP44GZ44Gu44GbLOOBquOBiuOBiuOBvw0KK+OBj+OCj+OBr+OCiSzjgZfjgpPjgZgNCivjgb7jgaHjgaAs44KI44GG44GTDQor44G+44Gg44KJ44KBLOOBqOOBl+OBn+OBiw0KK+OBvuOBiOOBoCzjgZXjgajjgZcNCivjgb7jgYjjgaAs44GV44Go44KLDQor44G+44GI44GgLOOBl+OCk+OBhOOBoeOCjeOBhg0KK+OBvuOBiOOBjOOCjyzjgbXjgb/jgbLjgacNCivjgb7jgYjjga/jgoks44GO44KT44GYDQor44G+44GI44GN44GfLOOBi+OBmuOBkw0KK+OBvuOBjeOBrizjgZ/jgYvjgbLjgo0NCivjgZfjgbbjgZ/jgass44GT44GG44GYDQor44G+44Gq44G5LOOCiOOBl+OBruOCig0KK+OBvuOCi+OChOOBvizjgYLjgY3jgokNCivjgb7jgovjgoTjgb4s44Gy44KN44KG44GNDQor44G+44KL44KE44G+LOOBkeOBhOOBhOOBoQ0KK+OBvuOBleOBiuOBiyzjgZ/jgYvjgZcNCivjgb7jgZnjgbbjgaEs44KI44GX44Gu44KKDQor44G+44GZ44GgLOOChuOBhuOBkw0KK+OBvuOBmeOBoCzjgojjgZfjga/jgosNCivjgb7jgZnjgaAs44Gf44GL44Go44GXDQor44G+44GZ44GgLOOBn+OBj+OChA0KK+OBvuOBmeOBoCzjgbLjgo3jgYvjgZoNCivjgb7jgZnjgaAs44Gy44KN44GNDQor44G+44Gk44GwLOOBruOBnuOBvw0KK+OBr+OCiSzjgZHjgpPjgZgNCivjgb7jgaTjgaAs44GR44KT44GYDQor44G+44Gk44GgLOOBoOOBhOOBmeOBkQ0KK+OBvuOBpOOBteOBmCzjgYLjgY3jgYoNCivjgb7jgaTjgbXjgZgs44GL44Ga44Gq44KKDQor44Gf44Gh44GP44GELOOBv+OBjQ0KK+OBvuOBpOOBhCzjgZfjgpPjgZgNCivjgb7jgaTjgYvjgo8s44Gf44GL44Gy44KNDQor44G+44Gk44G+44KLLOOBl+OCheOBhuOBleOBjw0KK+OBvuOBpOOCguOBqCzjgYLjgY3jgYoNCivjgb7jgaTjgoLjgags44GL44Ga44Gu44KKDQor44G+44Gk44KC44GoLOOBguOBjeOBsuOBkw0KK+OBvuOBpOOCguOBqCzjga7jgorjgZMNCivjgb7jgaTjgoLjgags44Gy44KN44GXDQor44G+44Gk44KC44GoLOOBpOOBqOOCgA0KK+OBl+OBiuOBsOOCiSzjgZfjgpPjgYTjgaENCivjgb7jgaTjgoDjgoks44GX44KF44KT44GE44GhDQor44G+44Gk44KA44KJLOOCiOOBl+OBruOCig0KK+OBvuOBpOOBquOBjCzjgobjgY3jgZMNCivjgb7jgaTjgarjgYws44G+44GV44Gy44KNDQor44G+44Gk44Gq44G/LOOCiOOBl+OBkw0KK+OBvuOBpOOBiizjgajjgZfjgoQNCivjgb7jgaTjgYos44Go44KC44Gy44KNDQor44G+44Gk44GK44GLLOOBiOOBhOOBkw0KK+OBr+OChOOBl+OBoCzjgYvjgZrjgbLjgo0NCivjgb7jgaTjgYrjgYss44Gb44GE44GE44GhDQor44GC44Gc44KE44Gq44GOLOOBm+OBhOOBmA0KK+OBvuOBpOOBiuOBiyzjgZfjgpPjgZQNCivjgb7jgaTjgYrjgYss44Gy44KN44GC44GNDQor44G+44Gk44GbLOOBn+OBi+OChuOBjQ0KK+OBvuOBpOOBl+OBvizjgZHjgpPjgZgNCivjgb7jgaTjgZfjgZ8s44GT44GG44GYDQor44G+44Gk44Gf44GrLOOBl+OCk+OBmA0KK+OBvuOBpOOCj+OBiyzjgZXjgajjgZcNCivjgb7jgaTjgoTjgb4s44GC44GN44KJDQor44G+44Gk44GW44GNLOOBjeOBj+OBig0KK+OBvuOBpOOBquOBjCzjgb7jgZPjgagNCivjgbvjgpPjgaos44GN44KP44KADQor44KB44GL44GfLOOBkeOCk+OBmA0KK+OBv+OBi+OBmOOCiizjgY3jgofjgYbjgZMNCivjgb/jgYvjgb8s44GX44KT44GZ44GRDQor44G/44GL44G/LOOBsuOBp+OBig0KK+OBv+OBjSzjgb7jgZXjgobjgY0NCivjgb/jgb/jgZ8s44G/44Gh44KNDQor44G/44Gq44GP44GhLOOBteOBv+OBr+OCiw0KK+OBv+OBquOBvyzjgZXjgajjgZcNCivjgb/jgarjgb8s44Go44KC44KG44GNDQor44G/44Gq44G/LOOBguOBjeOCiQ0KK+OBv+OBquOBqCzjgZfjgofjgYbjgZgNCivjgb/jga0s44KI44GX44Gf44GLDQor44G/44GtLOOBguOBpOOBlw0KK+OBv+OBl+OBvizjgZPjgYbjgZgNCivjgb/jgZfjgb4s44GK44GV44KADQor44G/44Gd44GuLOOBsuOCjeOBsuOBlQ0KK+OBv+OBn+OCgOOCiSzjgb7jgZXjgajjgZcNCivjgb/jgZ/jgpPjgaAs44GR44KT44GE44GhDQor44G/44Gk44G8LOOCiOOBl+OBi+OBmg0KK+OBv+OBpOOBvOOBlyzjgajjgZfjgbLjgo0NCivjga/jgZnjgoDjgoks44Go44GX44G144G/DQor44G/44Gk44Gv44GXLOOBsuOCjeOBv+OBpA0KK+OBl+OBquOBoCzjgbLjgo3jgobjgY0NCivjgb/jgaTjgb4s44GL44Ga44Gy44GoDQor44G/44KE44Gv44KJLOOBmOOBpOOChA0KK+OBv+OChOOBr+OCiSzjgbLjgafjga/jgosNCivjgb/jgoTjgYQs44G/44GI44GTDQor44G/44KE44GY44G+LOOChuOBi+OBkw0KK+OBv+OChOOCguOBqCzjgYvjgZrjgarjgooNCivjgb/jgoTjgoLjgags44Gy44Gn44Gu44KKDQor44G/44KE44GX44GfLOOBsuOCjeOChuOBjQ0KK+OBv+OChOOBnyzjgbLjgo3jgobjgY0NCivjgb/jgoTjgZ8s44GL44GK44KLDQor44G/44KE44GG44GhLOOBkeOCk+OBmA0KK+OBv+OChOOBhuOBoSzjgYrjgZXjgoANCivjgb/jgoTjgYbjgoks44Gf44GR44Gy44GVDQor44G/44KE44GW44GNLOOBn+OBkeOBlw0KK+OBr+OBl+OBkOOBoSzjgZfjgZLjgY0NCivjgb/jgoTjgZbjgo8s44GT44GG44GYDQor44G/44KE44GW44KPLOOBguOBjeOBig0KK+OBv+OChOOBmizjgoTjgZnjgbLjgagNCivjgb/jgZ7jgYvjgb8s44GY44KF44KT44GE44GhDQor44G/44Ga44GuLOOBpuOBpOOBsuOBkw0KK+OBv+OBmuOBrizjgajjgZfjgobjgY0NCivjgb/jgZrjgZ/jgass44Gu44G244KG44GNDQor44KC44Gh44GgLOOBguOBjeOBsuOCjQ0KK+OCguOBoeOBmuOBjSzjgYLjgY3jgYoNCivjgoLjgaHjgZrjgY0s44GY44KN44GGDQor44G/44KI44GXLOOBn+OBi+OBlw0KK+OCguOCiizjgb7jgZXjgY0NCivjgoLjgoos44G+44GV44GXDQor44KC44KKLOOBoOOBhOOBhOOBoQ0KK+OCguOCiizjgb7jgZXjgobjgY0NCivjgoLjgoos44Gm44Gk44KEDQor44KC44KKLOOBsuOCjeOBi+OBmg0KK+OCguOCiizjgaTjga3jgYLjgY0NCivjgoLjgoos44GE44Ga44G/DQor44KC44KKLOOBsuOCjeOBi+OBmg0KK+OCguOCiuOBkOOBoSzjgbLjgo3jgY0NCivjgoLjgorjgYvjgo8s44GT44GG44GYDQor44KC44KK44Gq44GMLOOBvuOBleOBlw0KK+OCguOCiuOBleOBjSzjgYLjgZHjgb8NCivjgoLjgorjgZ8s44KI44GG44GE44GhDQor44KC44KK44GfLOOBiOOBhOOBmA0KK+OCguOCiuOChCzjgoDjgaTjgYoNCivjgoLjgorjgoTjgb4s44Gy44Gn44GKDQor44KC44Gm44GOLOOBv+OBpOOBsuOCjQ0KK+OCguOBqOOBjSzjgY/jgavjgbLjgo0NCivjga/jgY7jgo/jgoks44Gu44G244KI44GXDQor44KA44GL44GE44GgLOOBl+OBkw0KK+OCgOOBreOBsuOCjSzjgbLjgafjgobjgY0NCivjgoDjga3jgYvjgZ8s44GL44Ga44KI44GXDQor44KA44KJ44GL44G/LOOBpOOCiOOBlw0KK+OCgOOCieOBi+OBvyzjgoTjgZnjgbLjgo0NCivjgoDjgonjgYvjgb8s44KE44GZ44GKDQor44KA44KJ44GT44GXLOOBsuOCjeOBkw0KK+OCgOOCieOBvuOBpCzjgb7jgZXjgagNCivjgoDjgonjgazjgY0s44GR44GE44GYDQor44KA44KJ44GfLOOChuOBjeOCguOBqA0KK+OCgOOCieOBnyzjgb7jgZXjgY0NCivjgoDjgonjgZ8s44Gb44GE44GYDQor44KA44KJ44KE44G+LOOCiOOBl+OBr+OCiw0KK+OChOOBvuOBl+OBnyzjgYLjgY3jgbLjgo0NCivjgoDjgo3jgZ8s44Gy44KN44GL44GaDQor44G/44KH44GG44GY44KTLOOBv+OBoeOBig0KK+OBquOBjOOBhCzjga7jgorjgZMNCivjgarjgYzjgazjgb4s44KG44GN44GKDQor44Gq44GM44GKLOOBiOOCig0KK+OBquOBjOOBiuOBiyzjgb/jgbsNCivjgarjgYzjgZXjgo8s44GL44GK44KLDQor44Gq44GM44GX44G+LOOBn+OBi+OBlw0KK+OBquOBjOOBl+OBvizjgojjgZfjgYvjgZoNCivjgarjgYzjgZ8s44KI44GX44KE44GZDQor44Gq44GM44GfLOOBoeOBiOOBkw0KK+OBr+OBm+OBjOOCjyzjgbLjgo3jgYLjgY0NCivjgYTjgYzjgonjgZcs44GL44Ga44Gy44KNDQor44Gq44GM44KE44G+LOOBkeOCk+OBmA0KK+OBquOBjOOCiOOBlyzjgb7jgZXjgYvjgaQNCivjgarjgYTjgajjgYYs44G+44GV44GNDQor44Gq44GL44Gw44KE44GXLOOBvuOBleOBruOCig0KK+OBquOBi+OBjOOCjyzjgZfjgpPjgYTjgaENCivjgarjgYvjgZTjgoEs44GV44Go44GXDQor44Gq44GL44GX44G+LOOBqOOBl+OBguOBjQ0KK+OBquOBi+OBmOOBvizjgoTjgZnjgb7jgZUNCivjgarjgYvjgZjjgb4s44KG44GG44GTDQor44Gq44GL44GY44G+LOOBpuOCi+OBvw0KK+OBquOBi+OBmOOBvizjgY/jgonjgagNCivjgarjgYvjgZjjgb4s44KG44GG44GYDQor44Gq44GL44GP44GNLOOBl+OCk+OBhOOBoeOCjeOBhg0KK+OBquOBi+OBvuOCiyzjgorjgYsNCivjgarjgYvjgb/jgaEs44G/44GLDQor44Gq44GL44KC44GoLOOChuOBjeOBsuOCjQ0KK+OBquOBi+OCguOBqCzjgbLjgo3jgYvjgZoNCivjgarjgYvjgoLjgags44Gy44KN44KG44GNDQor44KP44Gf44Gq44G5LOOBsuOCjeOBteOBvw0KK+OBquOBi+OCgOOCiSzjgb7jgZXjgarjgooNCivjgarjgYvjgoDjgoks44GX44KT44GE44Gh44KN44GGDQor44Gq44GL44KA44KJLOOBm+OBhOOBmA0KK+OBquOBi+OCgOOCiSzjgYvjgZrjga7jgooNCivjgarjgYvjgoDjgoks44KG44GG44GYDQor44Gq44GL44KA44KJLOOBpuOCi+OChuOBjQ0KK+OBr+OBjuOCj+OCiSzjgZXjgajjgZMNCivjgarjgYvjgoDjgoks44G+44GN44GTDQor44Gq44GL44KA44KJLOOBsuOBp+OChuOBjQ0KK+OBquOBi+OCgOOCiSzjgabjgaTjgoQNCivjgarjgYvjgoDjgoks44GR44KT44GfDQor44Gq44GL44GuLOOChOOBmeOBlw0KK+OBquOBi+OBiizjgobjgYbjgZMNCivjgarjgYvjgYos44Gy44KN44KG44GNDQor44Gq44GL44GK44GLLOOBqOOCguOChuOBjQ0KK+OBquOBi+OBl+OBvizjgZXjgajjgZcNCivjgavjgZfjgZjjgb4s44Gf44GL44GXDQor44Gq44GL44KELOOCj+OBn+OCiw0KK+OBquOBi+OChOOBvizjgbLjgo3jgZcNCivjgarjgYvjgZbjgags44GL44Gk44GC44GNDQor44Gq44G+44Gf44KBLOOBvuOCguOCiw0KK+OBquOCgeOCiSzjgoLjgorjgbLjgagNCivjgarjgarjgb8s44Gf44Gg44Go44GXDQor44Gq44KT44GwLOOBn+OBi+OBig0KK+OBquOCkyzjgZHjgYTjgZnjgZENCivjgarjgpPjgb0s44GC44GN44KJDQor44Gq44KJ44G2LOOBsuOBp+OBjQ0KK+OBquOCiuOBr+OCiSzjgbLjgo3jgb8NCivjgarjgorjgajjgb8s44Gq44GK44GNDQor44Gq44KL44GX44G+LOOBvuOBk+OBqA0KK+OBquOBmeOBi+OCjyzjgZjjgoXjgpPjgoQNCivjgarjgajjgoos44GR44KT44KEDQor44Gt44GO44GXLOOBiOOBv+OBkw0KK+OBreOCguOBqCzjgYTjgZrjgb8NCivjgavjgYjjgaAs44Go44GK44KLDQor44Gr44GE44GY44G+LOOBvuOBk+OBqA0KK+OBq+OBhOOBj+OCiSzjgb7jgZXjgosNCivjgavjgYTjgaTjgb4s44GR44KT44GYDQor44Gr44GE44GW44KPLOOCiOOBl+OBruOCig0KK+OBq+OBl+OBoCzjgbLjgo3jgbLjgagNCivjgavjgZfjgaAs44Gf44GR44GXDQor44Gr44GX44GgLOOBiOOBhOOBmA0KK+OBq+OBl+OBoCzjgbLjgafjgagNCivjgbLjgaDjgYss44KG44GN44G+44GVDQor44Gr44GX44GgLOOChOOBmeOBig0KK+OBq+OBl+OBi+OBqSzjgYLjgaTjgZcNCivjgavjgZfjgYvjgo8s44GI44GE44GY44KFDQor44Gr44GX44GL44KPLOOBqOOCguOBguOBjQ0KK+OBq+OBl+OBi+OCjyzjgb7jgZXjga7jgbYNCivjgavjgZfjgoLjgags44Gy44Gn44KEDQor44Gr44GX44KA44KJLOOBvuOBleOBruOCig0KK+OBq+OBl+OBqizjgY3jgojjgZcNCivjgavjgZfjga4s44Gy44KN44GL44GaDQor44Gr44GX44GfLOOBv+OBjQ0KK+OBteOBi+OBvyzjgYvjgZrjgogNCivjgavjgZfjgo/jgY0s44Gf44GR44Gy44GTDQor44Gr44GX44KE44G+LOOBi+OBpOOBlw0KK+OBq+OBl+OChOOBvizjgbLjgajjgZcNCivjgavjgZfjgZbjgo8s44KI44GX44Gy44KNDQor44Gr44Gj44GfLOOBsuOCjeOCiOOBlw0KK+OBq+OCj+OBnyzjgbvjgZrjgb8NCivjgavjgo/jgoTjgb4s44Gh44GaDQor44Gu44GC44G/LOOBj+OBq+OBkw0KK+OBruOBvOOCiuOBn+OBpizjgb7jgarjgbYNCivjga7jgaAs44Gf44GL44KG44GNDQor44Gu44GM44KPLOOBsuOCjeOChA0KK+OBruOBkOOBoSzjgajjgoLjgYLjgY0NCivjga7jgZDjgaEs44Gf44GL44GXDQor44Gu44GY44KKLOOBsuOCjeOChuOBjQ0KK+OBruOCguOBqCzjgobjgYbjgZMNCivjga7jgoDjgoks44G/44GN44GTDQor44Gv44KE44GV44GLLOOBi+OBmuOBsuOCjQ0KK+OBruOCgOOCiSzjgb7jgZXjgbLjgo0NCivjga7jgags44Gd44Gu44G/DQor44Gu44GW44GNLOOBqOOBl+OChA0KK+OBk+OBleOBiyzjgoTjgZnjgZcNCivjgYrjgbDjgaos44GC44KE44GTDQor44GK44GhLOOBvuOBleOBpuOCiw0KK+OBiuOBoCzjga/jgovjga7jgbYNCivjgYrjgYzjgZXjgo/jgoks44GL44Ga44Gm44KLDQor44GK44GM44GfLOOBsuOCjeOChOOBmQ0KK+OBj+OBjSzjgobjgZ/jgYsNCivjgYrjgYvjgaAs44Gy44KN44GC44GNDQor44GK44GM44KPLOOBsuOCjeOChuOBjQ0KK+OBiuOBjOOCjyzjgb7jgZXjgobjgY0NCivjgYrjgYzjgo8s44KE44GZ44Gu44KKDQor44GK44GO44Gv44KJLOOBi+OBmuOBqOOBlw0KK+OBiuOBjuOBrizjgZPjgYbjgYTjgaENCivjgYrjgbYs44G/44GLDQor44GK44GK44Gv44KJLOOBn+OBoOOBsuOBkw0KK+OBr+OBvuOCguOBqCzjgoTjgZnjgZMNCivjgYrjgYrjga/jgoks44KG44GG44GYDQor44GK44Gv44GXLOOBleOBqOOBlw0KK+OBiuOBiuOBi+OCjyzjgb7jgZXjgagNCivjgYrjgYrjgY/jgbws44G+44GV44GC44GNDQor44GK44GK44G/44KELOOBm+OBhOOBmA0KK+OBiuOBiuOCguOCiizjgabjgaTjgoQNCivjgYrjgoDjgoks44KK44KH44GG44GE44GhDQor44GK44GK44Gr44GXLOOBvuOBleOBn+OBiw0KK+OBiuOBiuOBrizjgbLjgo3jgoTjgZkNCivjgYrjgYrjgazjgY0s44GL44Ga44GKDQor44GK44GK44GV44GNLOOBleOBqOOBlw0KK+OBiuOBiuOBleOBjSzjgobjgYbjgZMNCivjgYrjgYrjgZXjgo8s44GX44KN44GGDQor44GK44GX44G+LOOBn+OBkeOBlw0KK+OBiuOBl+OBvizjgZ/jgYvjgYoNCivjgYrjgZfjgb4s44Gk44Go44KADQor44GK44GK44GfLOOChOOBmeOBig0KK+OBiuOBiuOBnyzjga7jgbbjgbLjgo0NCivjgYrjgYrjgZ8s44G/44GLDQor44GK44GK44GfLOOBsuOCjeOBlw0KK+OBguOCk+OBqeOBhizjgZHjgpPjgYTjgaENCivjgYrjgZ/jgYss44Gf44GL44GC44GNDQor44GK44GK44Gf44GNLOOBteOBqOOBlw0KK+OBiuOBiuOBn+OBqyzjgYvjgZrjgbLjgZMNCivjgYrjgYrjgZ/jgass44Gu44KK44Gy44GVDQor44GK44GK44Gf44GrLOOBvuOBleOBi+OBmg0KK+OBr+OChOOBlyzjgobjgY3jgZMNCivjgYrjgYrjgaTjgbws44Gf44GR44Gy44GVDQor44GK44GK44Gk44GLLOOCiOOBl+OBruOCig0KK+OBiuOBiuOBpOOBiyzjgYjjgYTjgY0NCivjgYrjgYrjgaTjgYss44GC44Gk44GXDQor44Gv44KE44GXLOOBiOOBv+OBkw0KK+OBiuOBiuOBpOOCiyzjgb/jgaHjgYgNCivjgYrjgbXjgaEs44Go44GX44GTDQor44GK44GK44KPLOOBn+OBkeOBlw0KK+OBiuOBiuOChCzjgoDjga3jgYoNCivjgYrjgZjjgYos44G144G/44Gu44G2DQor44GK44GLLOOBvuOBleOBqOOBlw0KK+OBiuOBi+OBuSzjgYLjgobjgoANCivjgYrjgYvjgaAs44G+44GV44GNDQor44GK44GL44GgLOOBn+OBi+OChA0KK+OBiuOBi+OBoCzjgajjgYrjgosNCivjgYrjgYvjgaAs44Gy44KN44KG44GNDQor44GK44GL44KC44GoLOOBn+OBi+OChuOBjQ0KK+OBiuOBi+OCguOBqCzjgobjgYYNCivjgYrjgYvjgoLjgags44Go44KC44KG44GNDQor44GK44GL44KA44KJLOOBsuOCjeOBj+OBqw0KK+OBiuOBi+OCgOOCiSzjgZHjgYTjgYTjgaENCivjgYrjgYvjgZbjgY0s44Gy44KN44Go44GXDQor44GK44GL44GW44GNLOOBk+OBhuOBn+OCjeOBhg0KK+OBiuOBjeOBrizjgYvjgYrjgosNCivjgYrjgY/jgaAs44Gv44GY44KBDQor44GK44GP44GgLOOBvuOBleOBruOCig0KK+OBiuOBj+OBjOOCjyzjgZjjgoXjgpPjgYTjgaENCivjga/jgY7jga/jgoks44GR44KT44GYDQor44GK44GP44GG44GhLOOCgOOBreOBlw0KK+OBiuOBiuOBvyzjgYLjgoTjgZMNCivjgYrjgoDjgoks44Gy44Go44GXDQor44GK44KT44GgLOOBi+OBmuOBsuOCjQ0KK+OBiuOBiuOBrizjgobjgZ/jgYsNCivjgYrjgYrjga4s44Gy44KH44GG44Ge44GGDQor44GK44GK44GuLOOBv+OBruOCiw0KK+OBiuOBiuOBrizjgZfjgoXjgpPjgZnjgZENCivjgYrjga7jgafjgoks44G+44GV44Gy44GTDQor44GK44Gu44Gn44KJLOOCiOOBl+OBruOCig0KK+OBiuOBruOBp+OCiSzjgajjgZfjgYoNCivjgYrjga7jgoDjgoks44G/44Gu44KLDQor44GK44Gu44GW44KPLOOBl+OCk+OChA0KK+OBiuOBiuOBrOOBjSzjgabjgaTjgo3jgYYNCivjgYrjga4s44Gf44GL44GC44GNDQor44GK44GK44KE44G+LOOBsuOBqOOBlw0KK+OBiuOCiuOBqSzjgbLjgafjgYLjgY0NCivjgYrjgorjgZfjgY3jgaAs44GT44GG44GE44GhDQor44GK44GK44GV44GLLOOBn+OBoOOBig0KK+OBiuOChOOBvizjgZ/jgYTjgaENCivjgYrjgZbjgY0s44Gf44Gk44KEDQor44GK44GW44GNLOOCiOOBl+OBvuOBlQ0KK+OBiuOBluOCjyzjgobjgYbjgZnjgZENCivjgZPjgZbjgo8s44Gy44KN44GXDQor44GK44GW44KPLOOBvuOBleOBr+OCiw0KK+OBiuOBluOCjyzjgZ/jgZHjgZcNCivjga/jgZ/jgarjgYss44G/44Gk44Gy44KNDQor44GV44GI44GNLOOCiuOCh+OBhuOBkw0KK+OBleOBhOOBoCzjgoLjgoLjgZMNCivjgZXjgYTjgZDjgZUs44Gy44KN44GXDQor44Gv44KT44GgLOOBn+OBkeOBlw0KK+OBleOBhOOBqOOBhizjgoTjgZnjgajjgoINCivjgZXjgYTjgajjgYYs44G+44GV44Gy44GVDQor44GV44GE44Go44GGLOOBl+OBkuOBsuOBqA0KK+OBleOBi+OBoSzjgb7jgZXjgYoNCivjgZXjgYvjgZDjgaEs44GT44GG44GYDQor44GV44GL44GELOOBv+OBruOCiw0KK+OBleOBi+OBhCzjgZPjgYbjgZ7jgYYNCivjgbLjgonjga4s44GC44GN44Gy44KNDQor44GV44GL44GELOOBguOBjeOCiQ0KK+OBleOBi+OBhCzjgbLjgo3jgb8NCivjgZXjgYvjgYQs44G/44GN44GKDQor44GV44GL44GELOOBquOBiuOBjQ0KK+OBleOBi+OCguOBqCzjgZ/jgYvjgZcNCivjgZXjgYvjgoLjgags44KE44GZ44Gy44KNDQor44Gy44KN44GbLOOCiOOBl+OBguOBjQ0KK+OBleOBi+OCguOBqCzjgojjgYbjgY3jgaENCivjgZXjgYvjgZ8s44Go44KC44GYDQor44GN44GX44GgLOOBsuOCjeOBguOBjQ0KK+OBleOBkyzjgYLjgYvjgZcNCivjgZXjgY/jgb4s44G+44GV44KLDQor44GV44GP44KJ44GwLOOBiOOBvw0KK+OBleOBj+OCieOBhCzjga/jgovjgb8NCivjgZXjgY/jgonjgoTjgb4s44Gy44KN44GXDQor44GV44KB44GX44G+LOOBi+OBmuOCiOOBlw0KK+OBleOCk+OBuSzjgb7jgZPjgagNCivjgZXjgovjgo/jgZ/jgoos44G+44GV44GNDQor44Gv44Gb44GM44KPLOOBvuOBleOBqA0KK+OBleOBleOBiCzjgarjgYrjgY0NCivjgZXjgZXjga/jgoks44KK44KH44GG44GYDQor44GV44GV44GNLOOBn+OBi+OBvuOBlQ0KK+OBleOBleOBjSzjgZ/jgYvjgZcNCivjgZXjgZXjgY0s44KG44Gf44GLDQor44GV44GV44GNLOOChuOBjeOBkw0KK+OBr+OBs+OCjSzjgobjgZ/jgYsNCivjgZXjgZXjgYos44GL44Ga44GX44GSDQor44GV44GV44GK44GLLOOBqOOCguOBkw0KK+OBleOBleOBn+OBqyzjgojjgZfjgb8NCivjgZXjgZ8s44Go44KC44G/DQor44GV44Gf44GRLOOBqOOBl+OBjQ0KK+OBleOBqOOBhizjgZjjgoXjgpMNCivjgbvjgZfjga4s44GR44GE44GYDQor44GV44Go44GGLOOBvuOBleOBr+OCiw0KK+OBr+OBo+OBqOOCiizjgZfjgpPjgoQNCivjgZXjgajjgYYs44Go44GK44KLDQor44GV44Go44GGLOOBl+OBkuOBjQ0KK+OBleOBqOOBhizjgobjgY3jgZ/jgYsNCivjgZXjgajjgYYs44KK44KH44GG44GE44GhDQor44GV44Go44GGLOOBn+OBpOOBjQ0KK+OBleOBqOOBhizjgZHjgYTjgZgNCivjgZXjgajjgYYs44G+44KK44GKDQor44GV44Go44GGLOOBqOOBl+OBguOBjQ0KK+OBleOBqOOBhizjgZHjgYTjgYTjgaENCivjgbLjgonjga4s44Gy44KN44GC44GNDQor44GV44Go44GGLOOBsuOCjeOChuOBjQ0KK+OBleOBqOOBhizjgoTjgZnjga7jgooNCivjgZXjgo/jgaAs44GR44GE44GE44GhDQor44GV44KP44GgLOOBk+OBhuOBuOOBhA0KK+OBleOCj+OBteOBmCzjgZ/jgYvjgbLjgo0NCivjgZXjgo/jgY0s44GT44GG44G444GEDQor44GV44KP44KA44KJLOOBsuOCjeOBlw0KK+OBm+OBjOOCjyzjgZfjgpPjgZ/jgo3jgYYNCivjgZvjgYzjgo8s44GL44Ga44GNDQor44Gb44GNLOOCiuOBpOOBkw0KK+OBm+OBjSzjgZ/jgYTjgaENCivjgZvjgY3jgZDjgaEs44Gy44GV44GXDQor44Gb44GN44GtLOOBi+OBmuOBguOBjQ0KK+OBm+OBjeOBrSzjgYvjgaTjgb8NCivjgbLjgonjga4s44GI44GE44GE44GhDQor44Gb44KT44GU44GPLOOChOOBmeOBlw0KK+OBm+OBiizjgbLjgo3jgZcNCivjgZvjgoks44Gf44Gg44GXDQor44Gb44KJLOOBsuOCjeOBi+OBpA0KK+OBl+OBsOOBr+OCiSzjgYvjgZrjga4NCivjgZfjgbDjgZ8s44GL44Ga44Gy44GTDQor44GX44Gw44GfLOOBqOOCguOBsuOCjQ0KK+OBr+OBm+OBjOOCjyzjgajjgoLjgb/jgaQNCivjgZfjgbDjgZ8s44KG44Gf44GLDQor44GX44Gw44GfLOOBvuOBleOBn+OBkQ0KK+OBl+OBsOOBnyzjgb7jgZXjgobjgY0NCivjgZfjgbDjgZbjgY0s44G+44GV44GTDQor44GX44G244Gf44GrLOOBqOOCguOBr+OCiw0KK+OBl+OBtuOChCzjgajjgoLjgYvjgaQNCivjgZfjgaHjgbLjgofjgYYs44GN44G/44GC44GNDQor44GX44GNLOOBvuOBleOCiw0KK+OBl+OBjeOBl+OBvizjgZ/jgZHjgZcNCivjgZfjgb4s44GC44GN44GTDQor44GX44G+LOOBk+OBmeOBkQ0KK+OBl+OBvuOBoCzjgYvjgaTjgbLjgo0NCivjgZfjgb7jgazjgY0s44Gf44GL44GXDQor44GX44G+44GK44GLLOOChOOBmeOBn+OBiw0KK+OBl+OBvuOBl+OBnyzjgarjgYrjgbLjgo0NCivjgZfjgb7jgZos44GR44GE44GE44GhDQor44GX44G/44GaLOOBsuOBp+OBjQ0KK+OBl+OBv+OBmizjgZHjgYTjgZnjgZENCivjga/jgZvjgYzjgo8s44Gh44GI44GTDQor44GX44G/44GaLOOBvuOBleOBig0KK+OBl+OBv+OBmizjgobjgorjgZMNCivjgZfjgb/jgZos44GL44Ga44Gy44GVDQor44GX44KC44GM44GELOOBqOOBl+OBkw0KK+OBl+OCguOBi+OCj+OBuSzjgYLjgY3jgbLjgo0NCivjgZfjgoLjgYrjgYss44GC44GN44Gy44KNDQor44GX44KC44GV44GLLOOBsuOBp+OChuOBjQ0KK+OBl+OCguOChOOBvizjgabjgaTjgoQNCivjgZfjgpPjgbzjgoos44Gy44KN44GIDQor44GX44Gu44Gv44KJLOOBquOBiuOBn+OBiw0KK+OBl+OBruOBr+OCiSzjgbLjgZXjgajjgZcNCivjgZfjga7jgZbjgY0s44Gy44KN44GXDQor44GX44Gu44GW44GNLOOCiOOBl+OBkw0KK+OBl+OBruOBmuOBiyzjgZHjgpPjgYTjgaENCivjgZfjgpPjgoQs44Gy44Gn44GTDQor44GX44GK44GfLOOBmOOCheOCk+OBjeOBoQ0KK+OBl+OBiuOBn+OBqyzjgZHjgpPjgZgNCivjgZfjgYrjgoQs44Go44GK44KLDQor44GX44KJ44Gv44G+LOOBv+OBoeOBsuOBlQ0KK+OBl+OCieOBhCzjgb/jgYsNCivjgZfjgonjgYTjgZcs44G/44GVDQor44GX44KJ44GE44GXLOOChOOBmeOBsuOBqA0KK+OBl+OCieOBhOOBlyzjgaTjgajjgoANCivjgZfjgonjgY0s44GR44GE44GZ44GRDQor44GX44KJ44GV44GNLOOBi+OBmuOChuOBjQ0KK+OBl+OCh+OBhuOBquOBlCzjgZ/jgYvjgZfjgZINCivjgYrjgYrjgoTjgb4s44G/44GLDQor44GX44KF44Go44GGLOOBsuOCjeOBjQ0KK+OBl+OCguOBhOOBmizjgojjgorjgagNCivjgZ3jgYjjgaAs44Gf44GP44G/DQor44G744KK44GuLOOBsuOCjeOBi+OBpA0KK+OBneOBqOOBmOOBvizjgbXjgajjgZcNCivjgZnjgaAs44KB44GE44GY44KN44GGDQor44GZ44GgLOOBk+OBhuOBkw0KK+OBmeOBqeOBhizjgbLjgafjgbLjgagNCivjgZnjgYws44Gv44GY44KBDQor44GZ44GM44Gs44G+LOOBsuOCjeOBi+OBmg0KK+OBmeOBjOOCj+OCiSzjgZHjgYQNCivjgZnjgY7jgbDjgoTjgZcs44G+44GV44Go44GXDQor44GZ44GO44KC44GoLOOBv+OBiw0KK+OBmeOBjuOCguOBqCzjga7jgbbjgZMNCivjgZnjgY7jgoDjgoks44Gu44KK44Gy44GTDQor44GZ44GO44GuLOOBleOBqOOCiw0KK+OBmeOBjuOBleOBjSzjgZfjgpPjgYTjgaENCivjgZnjgY7jgZXjgo8s44Gf44GL44GKDQor44GZ44GO44GfLOOBn+OBi+OChuOBjQ0KK+OBr+OChOOBlyzjgZ/jgb8NCivjgZnjgY7jgYbjgoks44Go44GK44KLDQor44GZ44GO44KE44G+LOOBqOOBl+OChA0KK+OBmeOBjuOChOOBvizjgZfjgpPjgZgNCivjgZnjgZQs44KE44GZ44GKDQor44GZ44GE44GfLOOCiOOBl+OBsuOBlQ0KK+OBmeOBv+OBoCzjgYLjgaTjgZcNCivjgZnjgb/jgYvjgo8s44GV44Go44GXDQor44GZ44Gq44GMLOOBqOOBiuOCiw0KK+OBmeOBruOBr+OCiSzjgb7jgZXjgb8NCivjgZnjgZrjgY0s44GC44GN44KJDQor44GZ44Ga44GNLOOBqOOCguOChuOBjQ0KK+OBmeOBmuOBjSzjgojjgZfjgobjgY0NCivjgZnjgZrjgY0s44G+44GV44G144G/DQor44GZ44Ga44GNLOOBl+OCh+OBhuOBlA0KK+OBmeOBmuOBjSzjgZ/jgZHjgbLjgo0NCivjgZnjgZrjgY0s44KI44GX44Gu44KKDQor44GZ44Ga44GNLOOBi+OBmuOBtQ0KK+OBmeOBmuOBjSzjgYLjgY3jgZMNCivjgZnjgZrjgY0s44GL44Gk44Gy44GTDQor44GZ44Ga44GNLOOBl+OBkuOCiw0KK+OChOOBvuOBi+OCjyzjgZ/jgaTjgYoNCivjgZnjgZrjgY0s44GC44GV44GTDQor44GZ44Ga44GNLOOBguOBjeOBsuOBkw0KK+OBr+OBjCzjgbLjgo3jgYvjgZoNCivjgZnjgZrjgY0s44GE44GV44GoDQor44GZ44Ga44GNLOOBi+OBiuOCig0KK+OBmeOBmuOBrizjgYvjgaTjgbXjgb8NCivjgZfjgoXjgajjgYYs44GP44Gr44Gy44GnDQor44Gf44Gw44KJLOOBvuOBkw0KK+OBn+OBoCzjgb7jgZXjgosNCivjga/jgorjgYzjgYQs44Gf44GL44Gu44G2DQor44Gf44GgLOOBvuOBleOChuOBjQ0KK+OBn+OBjOOBl+OCiSzjgb/jgarjgZMNCivjgZ/jgZDjgaEs44G/44KG44GNDQor44Gf44GQ44GhLOOBruOBtuOBguOBjQ0KK+OBn+OBmOOBvizjgZfjgpPjgZgNCivjgZ/jgZjjgb4s44GX44KT44GYDQor44G744Gj44GfLOOBl+OCheOCk+OBhOOBoQ0KK+OBn+OBi+OBoCzjgajjgoLjga7jgooNCivjgZ/jgYvjgY4s44Go44GX44GL44GaDQor44Gf44GL44GOLOOCiOOBhuOBhOOBoQ0KK+OBn+OBi+OBjizjgobjgYbjgZMNCivjgZ/jgYvjga/jgZcs44GI44GE44GTDQor44Gv44GX44GQ44GhLOOBsuOCjeOBguOBjQ0KK+OBn+OBi+OBr+OBlyzjgbLjgo3jgZcNCivjgZ/jgYvjga/jgZcs44Gq44GK44G/DQor44Gf44GL44Gv44GXLOOBsuOCjeOBv+OBoQ0KK+OBn+OBi+OBr+OBlyzjgYvjgaTjgajjgZcNCivjgZ/jgYvjga/jgZcs44GL44Ga44GTDQor44Gf44GL44Gv44GXLOOBi+OBmuOBig0KK+OBn+OBi+OBr+OBlyzjgajjgoLjgbLjgo0NCivjga/jgZvjgYzjgo8s44Gm44KL44GKDQor44Gf44GL44Gv44GXLOOBkeOCk+OBn+OCjeOBhg0KK+OBn+OBi+OBr+OBlyzjgbLjgafjga7jgooNCivjgZ/jgYvjga/jgZcs44GL44Gk44G/DQor44Gf44GL44Gv44GXLOOBl+OCk+OBhOOBoQ0KK+OBn+OBi+OBr+OBlyzjgojjgZfjgb/jgaQNCivjgZ/jgYvjga/jgZcs44GL44Ga44Gy44KNDQor44Gf44GL44Gv44GXLOOBhOOBoeOBn+OCjeOBhg0KK+OBn+OBi+OBr+OBlyzjgYLjgaTjga7jgooNCivjgZ/jgYvjga/jgZcs44GR44KT44GE44GhDQor44Gf44GL44Gv44GXLOOBteOBleOBsuOBkw0KK+OBiuOBiuOBvyzjgZHjgpPjgZgNCivjgZ/jgYvjgbLjgoks44G/44Gu44KLDQor44Gf44GL44GELOOCiOOBl+OBqOOCgg0KK+OBn+OBi+OBv+OChCzjgZPjgYbjgZgNCivjgZ/jgYvjgarjgZcs44KK44G7DQor44Gf44GL44GuLOOBv+OBjeOBkw0KK+OBn+OBi+OBrizjgojjgZfjgbLjgo0NCivjgZ/jgYvjga4s44Gf44G+44KIDQor44Gf44GL44GuLOOCiOOBl+OBsuOBqA0KK+OBn+OBi+OBrizjgYLjgY3jgbLjgo0NCivjga/jgoTjgYvjgo8s44KC44Go44Gy44KNDQor44Gf44GL44GX44G+LOOBn+OBoOOBlw0KK+OBn+OBi+OBmSzjgYvjgaTjga7jgooNCivjgZ/jgYvjgajjgYbjgoos44Gy44Gn44Gy44GTDQor44Gf44GL44Go44KKLOOBteOBleOBvw0KK+OBn+OBi+OChCzjga7jgorjgYLjgY0NCivjgZ/jgZEs44GC44GN44Gy44KNDQor44Gf44GR44GgLOOBm+OBhOOBmA0KK+OBn+OBkeOBoCzjgYTjgZrjgb8NCivjgbvjgoos44GT44GG44Ge44GGDQor44Gf44GR44GgLOOBl+OCk+OBhOOBoQ0KK+OBn+OBkeOBr+OCiSzjgbLjgYvjgosNCivjgZ/jgZHjgYQs44GX44KT44GE44GhDQor44Gf44GR44KC44GoLOOBguOBjQ0KK+OBn+OBkeOCguOBqCzjgYLjgY3jgZnjgZENCivjgZ/jgZHjgarjgYss44GR44KT44GE44GhDQor44Gv44KE44GXLOOBvuOBleOBsuOBkw0KK+OBn+OBi+OBjizjgb7jgZXjgY0NCivjgZ/jgZHjgajjgb8s44G+44GV44Gu44KKDQor44Gf44GR44GG44GhLOOBv+OBuw0KK+OBn+OBkeOBhuOBoSzjgb/jgaTjgYoNCivjgZ/jgZHjgYbjgaEs44Gu44G244KI44GXDQor44Gf44GR44KE44GZLOOCjOOBhOOBmA0KK+OBn+OBkeOBluOCjyzjgorjgofjgYbjgZgNCivjgZ/jgY3jgbAs44GV44Go44GXDQor44Gf44GP44G8LOOBn+OBi+OBruOCig0KK+OBr+OBq+OCheOBhizjgaTjgojjgZcNCivjgZ/jgb7jgojjgoos44KG44GG44GTDQor44Gf44KC44GkLOOChuOBhuOBnw0KK+OBn+OCgOOCiSzjgbLjgo3jgobjgY0NCivjgZ/jgoDjgoks44GC44GR44G/DQor44Gf44KA44KJLOOBguOBjeOCiQ0KK+OBn+OBquOBuSzjgoTjgZnjga7jgooNCivjgZ/jgarjgbks44Gy44Gn44Gy44GTDQor44Gf44Gq44GLLOOBsuOCjeOChuOBjQ0KK+OBn+OBquOBiyzjgojjgZfjgobjgY0NCivjgZ/jgarjgYss44GT44GG44GE44GhDQor44Gf44Gq44GLLOOBguOBpOOBlw0KK+OBn+OBkeOBoCzjgojjgZfjgZMNCivjgZ/jgarjgYss44Gf44Gg44GXDQor44Gv44Gb44GM44KPLOOBvuOBleOCiw0KK+OBn+OBquOBiyzjgbLjgafjgobjgY0NCivjgZ/jgarjgYss44Gf44GL44KI44GXDQor44Gf44Gq44GLLOOBvuOBquOBtg0KK+OBn+OBquOBiyzjgYvjgaTjgY0NCivjgZ/jgarjgYss44G+44GT44GoDQor44Gf44Gq44GLLOOChuOBhuOBkw0KK+OBn+OBquOBiyzjgZPjgYbjgYTjgaENCivjgZ/jgarjgYss44KI44GX44GKDQor44Gf44Gq44GLLOOBqOOBiuOCiw0KK+OBn+OBqyzjgbLjgo3jgZMNCivjgb/jgZ/jgass44G444GE44GUDQor44Gf44Gr44GQ44GhLOOBsuOBp+OBguOBjQ0KK+OBr+OBo+OBqOOCiizjgbLjgo3jgZMNCivjgZ/jgavjgZDjgaEs44GR44KT44GE44GhDQor44Gf44Gr44GQ44GhLOOChuOBhuOBkw0KK+OBn+OBq+OBkOOBoSzjgYvjgaTjgbLjgZMNCivjgZ/jgavjgYvjgo8s44GR44KT44GXDQor44Gf44GV44GLLOOBvuOBk+OBqA0KK+OBn+OBl+OBvizjgZHjgYTjgZnjgZENCivjgZ/jgabjgYvjgo8s44G+44GV44KLDQor44Gf44Gm44GuLOOBk+OBhuOBmA0KK+OBpuOCieOBmOOBvizjga/jgZjjgoENCivjgabjgonjgb7jgYgs44Gb44GE44GE44Gh44KN44GGDQor44Gm44KJ44GV44KPLOOBvuOBk+OBqA0KK+OBpuOCieOChOOBvizjgb/jgojjgZMNCivjgabjgZfjgb4s44GI44Gk44G+44GVDQor44Go44GgLOOCguOBqOOChuOBjQ0KK+OBqOOBqOOBvyzjgZ/jgZHjgbLjgZMNCivjgajjgYrjgoTjgb4s44KG44GN44Gy44GTDQor44Go44GN44KPLOOBoeOBiOOBkw0KK+OBteOBj+OChOOBvizjgZHjgpPjgZgNCivjgajjgY/jgZbjgo8s44G+44GV44KLDQor44Go44G/44Gq44GMLOOBk+OBhuOBmA0KK+OBqOOBv+OBnyzjgbLjgafjgZcNCivjgajjgb/jgoTjgb4s44GL44Ga44Gu44KKDQor44GV44KP44KA44KJLOOBn+OBpOOBvw0KK+OBqOOCiuOBlOOBiCzjgZXjgaDjgobjgY0NCivjgajjgorjgZ/jgass44Gy44Gn44Gu44KKDQor44Go44GV44GLLOOBl+OCheOBhuOBmA0KK+OBpOOBvOOBhCzjgb7jgZXjgbLjgZMNCivjgbLjgonjgbDjgoTjgZcs44Go44KC44Gq44KKDQor44Gk44Gh44GgLOOBsuOCjeOChuOBjQ0KK+OBpOOBoeOBn+OBqyzjgbLjgafjgY0NCivjgaTjgaHjgoQs44GX44GS44GoDQor44Gk44GgLOOBsuOCjeOBlw0KK+OBpOOBoCzjgYLjgaTjgojjgZcNCivjgaTjgZgs44Gy44KN44GXDQor44Gk44GY44GELOOBi+OBmuOBig0KK+OBpOOBmOOCgOOCiSzjgarjgovjgagNCivjgaTjgZjjgoDjgoks44Gf44GL44GXDQor44Gk44GY44GuLOOBl+OCheOBhuOBhOOBoQ0KK+OBpOOBmOOBleOCjyzjgobjgb8NCivjgaTjgYvjgaAs44Gf44GE44Ge44GGDQor44Gk44GL44Gv44KJLOOBpuOBpOOBig0KK+OBpOOBi+OCguOBqCzjgoTjgZnjgY0NCivjgaTjgYvjgoLjgags44KI44GX44G/DQor44Gk44GL44KC44GoLOOBkeOCk+OBn+OCjeOBhg0KK+OBpOOBreOBoCzjgb7jgZXjgbLjgo0NCivjgaTjga7jgaAs44Gf44GR44GXDQor44Gk44Gu44GgLOOBkeOCk+OBhOOBoeOCjQ0KK+OBpOOCi+OBvuOCiyzjgZ/jgYvjgZcNCivjgaTjgZXjgYss44GR44KTDQor44Gk44Gk44GELOOBn+OBi+OBl+OBkg0KK+OBpOOBpOOBvyzjgb7jgZXjga7jgooNCivjgaTjgaTjgb8s44G+44GV44Gv44KLDQor44Gk44Gk44G/44Gv44KJLOOBn+OBi+OBig0KK+OBhuOBoeOBoCzjgb7jgZPjgagNCivjgYbjgaHjgaAs44GV44Gg44KG44GNDQor44Gv44KE44GXLOOBn+OBi+OChuOBjQ0KK+OBhuOBoeOBoCzjgZ/jgaTjgoQNCivjgYbjgaHjga4s44GV44Go44GXDQor44GG44Gh44KE44G+LOOBguOChOOBrg0KK+OBhuOBoOOBjOOCjyzjgZfjgpPjgYTjgaENCivjgYbjgYjjgaAs44Gy44KN44KG44GNDQor44GG44GI44GgLOOBkeOCk+OBmA0KK+OBhuOBiOOBoCzjgZ/jgZHjgZcNCivjga3jgZos44Go44GX44GC44GNDQor44GG44GI44KA44KJLOOBleOBqOOBlw0KK+OBhuOBiOOCgOOCiSzjgZfjgofjgYbjgZ8NCivjgYbjgYjjgoDjgoks44GR44KT44GE44GhDQor44GG44GI44GuLOOBl+OCk+OChA0KK+OBhuOBiOOBrizjgajjgoLjgbXjgb8NCivjgYbjgYjjgZXjgo8s44Go44GX44Gy44KNDQor44GG44GI44Gk44G8LOOCiOOBl+OBn+OBiw0KK+OBhuOBiOOBpOOBjSzjgojjgZfjgabjgosNCivjgYbjgZHjga4s44KG44GG44GZ44GRDQor44GG44G+44Gv44GXLOOBsuOBp+OBteOBvw0KK+OBhuOCgeOBoCzjgoTjgZnjgZ/jgYsNCivjgYbjgoHjgoDjgoks44GL44GK44KLDQor44GG44G/44GgLOOBk+OBhuOBjeOBoQ0KK+OBhuOBiuOBmuOBvyzjgZXjgpPjgbrjgYQNCivjgYbjgonjgZ8s44Gb44KT44GfDQor44GG44GX44GP44GVLOOBqOOBl+OChuOBjQ0KK+OBhuOBmeOBquOBvyzjgZjjgoXjgpMNCivjgo/jgaAs44GY44KF44KT44GE44GhDQor44KP44GgLOOBi+OBiuOCig0KK+OCj+OBoCzjgb/jgY0NCivjgo/jgaAs44G/44Gk44Gu44KKDQor44KP44GL44GbLOOBleOBqOOCiOOBlw0KK+OCj+OBjSzjgZ/jgaDjgZcNCivjgo/jgZ/jgarjgbks44Gf44GR44GXDQor44KP44Gf44Gq44G5LOOBqOOCguOBguOBjQ0KK+OCj+OBn+OBquOBuSzjgojjgZfjgbLjgZUNCivjgo/jgZ/jgarjgbks44Gm44GE44GYDQor44KP44Gf44Gq44G5LOOCiOOBl+OBjQ0KK+OCj+OBn+OBquOBuSzjgojjgZfjgobjgY0NCivjgo/jgZ/jgarjgbks44GL44Ga44GoDQor44KP44Gf44Gs44GNLOOCiOOBl+OBsuOBlQ0KK+OCj+OBn+OBrOOBjSzjgbLjgafjgYoNCivjgo/jgZ/jgoos44Gy44KN44G/44GkDQor44Gv44GX44GQ44GhLOOBmOOCheOCk+OChA0KK+OChOOBtizjgZPjgYbjgZgNCivjgoTjgY7jgazjgb4s44G/44Gk44GC44GNDQor44KE44GY44G+LOOBquOBiuOBjQ0KK+OChOOBvuOBoCzjgZfjgZLjgbXjgb8NCivjgoTjgb7jgaAs44KI44GX44Gf44GLDQor44KE44G+44GgLOOChuOBhuOBmeOBkQ0KK+OChOOBvuOBoCzjgobjgYbjgZMNCivjgoTjgb7jgaAs44GC44GN44GC44GkDQor44KE44G+44GgLOOBguOBjeOCiQ0KK+OChOOBvuOBoCzjgaHjgYgNCivjgoTjgb7jgaAs44Gy44KN44GTDQor44KE44G+44GgLOOBi+OBmuOBvw0KK+OChOOBvuOBoCzjgb7jgZXjgojjgZcNCivjgbLjgZXjga4s44KK44GLDQor44KE44G+44GgLOOBleOBqOOBlw0KK+OChOOBvuOBoCzjgZXjgoTjgYsNCivjgoTjgb7jgbXjgZgs44Gf44Gk44KEDQor44KE44G+44GO44KPLOOChOOBmeOBsuOBkw0KK+OChOOBvuOBkOOBoSzjgoTjgZnjgbLjgo0NCivjgoTjgb7jgZDjgaEs44KI44GX44Gy44KNDQor44KE44G+44GQ44GhLOOBruOCiuOChuOBjQ0KK+OChOOBvuOBkOOBoSzjgobjgYQNCivjgoTjgb7jgZDjgaEs44GE44GV44GKDQor44KE44G+44GQ44GhLOOBpuOBpOOChA0KK+OChOOBvuOBkOOBoSzjgZ/jgZHjga/jgosNCivjgoTjgb7jgZDjgaEs44GC44GN44KJDQor44KE44G+44GQ44GhLOOBn+OBi+OBsuOCjQ0KK+OChOOBvuOBi+OCjyzjgobjgY3jgZMNCivjgoTjgb7jgoLjgags44Gy44KN44GXDQor44KE44G+44KC44GoLOOBi+OBquOBkw0KK+OBv+OBmuOBn+OBqyzjgY3jgb/jgYoNCivjgoTjgb7jgoLjgags44G/44Gp44KKDQor44KE44G+44KC44GoLOOBv+OBpOOBsuOCjQ0KK+OChOOBvuOCguOBqCzjgojjga7jgZnjgZENCivjgoTjgb7jgoLjgags44Gq44GK44GoDQor44KE44G+44KC44GoLOOBn+OBi+OBlw0KK+OChOOBvuOCguOBqCzjgYvjgaTjgZgNCivjgoTjgb7jgoLjgags44GL44GaDQor44KE44G+44KC44GoLOOBi+OBmuOBguOBjQ0KK+OChOOBvuOCguOBqCzjgbLjgarjgZMNCivjgoTjgb7jgoLjgags44GX44KT44GE44GhDQor44KE44G+44GtLOOBvuOBk+OBqA0KK+OChOOBvuOBrSzjgoTjgZnjgbLjgZUNCivjgoTjgb7jgZfjgZ8s44Go44GX44GKDQor44KE44G+44GX44GfLOOBi+OBmuOBsuOBlQ0KK+OBr+OCk+OBoCzjgYTjgZXjgYoNCivjgoTjgb7jgYbjgaEs44KI44GX44KEDQor44KE44G+44GG44GhLOOBl+OCk+OBhOOBoeOCjeOBhg0KK+OChOOBvuOBhuOCiSzjgZ/jgYvjgZcNCivjgoTjgb7jgZbjgY0s44Gy44KN44GoDQor44KE44G+44GW44GNLOOBi+OBmuOCiOOBlw0KK+OChOOBvuOBluOBjSzjgZHjgpPjgYTjgaENCivjgZ/jgoDjgoks44G+44GV44Go44GXDQor44KE44G+44GW44GNLOOBleOBqOOBlw0KK+OChOOBvuOBluOBjSzjgZ/jgYvjgYoNCivjgoTjgb7jgZ7jgYgs44Gf44GL44GXDQor44KE44Gq44GO44GV44KPLOOChuOBv+OBkw0KK+OChOOBrizjgZ/jgZHjgZcNCivjgoTjgZnjgaAs44Gy44Gn44GNDQor44KE44GZ44Gv44KJLOOBkeOBhOOBkw0KK+OBk+OBl+OCguOBqCzjgoLjgagNCivjga/jgY7jgo/jgoks44G/44GN44GKDQor44KI44GT44GfLOOBpuOCi+OBsuOBlQ0KK+OCiOOBk+OChOOBvizjgZ/jgZHjgZcNCivjgojjgoLjgaAs44GC44GN44KJDQor44KI44Gq44GMLOOBleOBqOOBlw0KK+OCiOOBreOBoCzjgbLjgo3jgZ/jgZENCivjgojjga3jgoTjgb4s44GV44Gh44KIDQor44KI44Gt44GW44KPLOOBiOOCig0KK+OCiOOBreOBluOCjyzjgajjgoLjgbLjgZUNCivjgojjgZfjgaAs44G+44KG44G/DQor44KI44GX44GgLOOBpuOCi+OChOOBmQ0KK+OCiOOBl+OBoCzjgYvjgaTjgbLjgo0NCivjgojjgZfjgaAs44G+44GV44GoDQor44KI44GX44GgLOOBguOBjeOBsuOBlQ0KK+OCiOOBl+OBoCzjgZXjgaHjgZMNCivjgojjgZfjgaAs44GR44KT44GUDQor44KI44GX44GgLOOBjeOCiOOBsuOBqA0KK+OCiOOBl+OBkOOBoSzjga7jgbbjgZMNCivjgojjgZfjgYQs44KG44GN44GKDQor44KI44GX44GE44GRLOOBjeOCiOOChuOBjQ0KK+OCiOOBl+OBvuOBpCzjgZHjgpPjgZ/jgo3jgYYNCivjgojjgZfjga4s44Gy44GV44KI44GXDQor44KI44GX44GuLOOBl+OBkuOBig0KK+OCiOOBl+OBluOCjyzjgYrjgZXjgoANCivjgojjgaTjgZ/jgass44G/44Gk44Gy44KNDQor44KG44GN44GW44GtLOOBm+OBhOOBmA0KK+OChuOChOOBvizjgojjgZfjgbLjgZUNCivjgZrjgZcs44KG44GN44GKDQor44GC44KJ44GELOOBvuOBleOBqA0KK+OBteOBmOOBjSzjgobjgYbjgYTjgaENCivjgbLjgonjga4s44GX44GS44KLDQor44GL44KB44KE44G+LOOBsuOBp+OBruOBtg0KK+OBk+OBmOOBvizjgYvjgZrjgYoNCivjgarjgYvjgYos44KB44GQ44G/DQor44GE44KP44GL44KPLOOBneOBhuOBn+OCjeOBhg0KK+OBpOOBoeOChCzjgZ/jgaTjgoQNCivjgYTjgZjjgo0s44GT44GG44GYDQor44GP44Gp44GGLOOBqOOCguOBkw0KK+OBquOBjOOBl+OBvizjgYvjgZrjgbLjgagNCivjga/jgZfjgZDjgaEs44GL44Gk44KG44GNDQor44Gk44Gh44KELOOBkeOBhOOBkw0KK+OBhOOBl+OBvuOBpCzjgbLjgo3jgoTjgZkNCivjga/jgonjgaAs44Gy44KN44Gf44GLDQor44G/44Ga44GuLOOBteOBv+OBig0KK+OBu+OBl+OBrizjga/jgovjgYoNCivjgYLjgbks44GX44GS44Gu44KKDQor44GC44G5LOOBn+OBi+OBkw0KK+OBguOBuSzjgobjgZ/jgYsNCivjgYLjgbks44GI44GE44GE44GhDQor44GC44G244GL44KPLOOBv+OBlQ0KK+OBguOBoOOBoSzjgZHjgpPjgZ/jgo3jgYYNCivjgYLjgYTjgZbjgo8s44GN44KK44GTDQor44GC44GY44KNLOOBvuOBleOChuOBjQ0KK+OBguOBi+OBhCzjgajjgZfjgYLjgY0NCivjgZ/jgoLjgags44G/44GN44GKDQor44GC44GL44GE44GXLOOBiOOBhOOBoQ0KK+OBguOBi+OBlyzjgb7jgobjgb8NCivjgYLjgY3jgYTjgZEs44KE44GZ44Gy44KNDQor44GC44GN44GfLOOBruOCiuOBoeOBiw0KK+OBguOBjeOChOOBvizjgoDjgaTjgb8NCivjgYLjgb7jgYzjgYQs44Gy44Gn44G144G/DQor44GC44G+44GM44GfLOOBn+OBi+OBlw0KK+OBguOBvuOBrizjgb/jgbsNCivjgYLjgoHjgb/jgoQs44GL44Gk44G/DQor44GC44KT44Gp44GGLOOBi+OBmuOBsuOCjQ0KK+OBguOCk+OBqeOBhizjgZ/jgYvjgobjgY0NCivjgYLjgpPjganjgYYs44Gg44GE44GUDQor44GC44KT44Gp44GGLOOBl+OCk+OBlA0KK+OBguOCk+OBluOBhCzjgb7jgZXjgbLjgacNCivjgYLjgYrjgY0s44G+44GV44Go44GXDQor44GC44GK44GNLOOBguOBjeOBteOBvw0KK+OBguOBiuOChOOBjizjgYLjgaTjgagNCivjgYLjgYrjgoTjgb4s44KG44GG44GTDQor44GC44KJ44GELOOBvuOBleOBlw0KK+OBguOCieOBhCzjgajjgoLjgarjgooNCivjgYLjgonjgY0s44Go44GX44G/44GkDQor44GC44KJ44KELOOBsuOCjeOBguOBjQ0KK+OBguOCiuOBvizjgZfjgpPjgYTjgaENCivjgYLjgorjgZ/jgZEs44Gb44GE44GYDQor44GC44GV44GgLOOBn+OBkeOBig0KK+OBguOBleOBsizjgobjgYbjgZgNCivjgYLjgZXjga4s44GY44KF44KT44GTDQor44GC44GX44GgLOOBleOBqOOBlw0KK+OBguOBl+OBi+OCjyzjgZXjgajjgZcNCivjgbDjgbAs44KE44GZ44KG44GNDQor44Gw44GwLOOBn+OBi+OBr+OCiw0KK+OBsOOBsCzjgZHjgpPjgZgNCivjgaHjgbAs44GY44KF44KT44GTDQor44GU44Go44GGLOOBvuOBleOBsuOBkw0KK+OBoeOCh+OBhizjgYjjgYTjgZgNCivjgaDjgYTjgaks44KG44GG44GTDQor44Gp44GC44GELOOBk+OBhuOBmA0KK+OBqeOBhCzjgajjgoLjgbLjgo0NCivjgbvjgZ3jgYQs44Gf44GP44GYDQor44Gp44GELOOBhOOBleOBig0KK+OBqeOBhCzjgZHjgpPjgYTjgaENCivjgYjjgYzjgZfjgoks44Gy44Gn44Gf44GLDQor44GI44GQ44GhLOOChOOBmeOBsuOCjQ0KK+OBiOOBsOOCiSzjgaTjgajjgoANCivjgYjjgpPjgaks44GX44KT44GE44GhDQor44GI44KT44GpLOOBleOBqOOBlw0KK+OBguOBvuOCiizjgZHjgpPjgZgNCivjgYjjga7jgoLjgags44GN44KI44G/DQor44GI44Gu44KC44GoLOOBvuOBleOBvw0KK+OBiOOBruOCguOBqCzjgYLjgY3jgokNCivjgYjjga7jgoLjgags44Gh44GL44KJDQor44GI44GW44GNLOOBi+OBmuOBsuOBqA0KK+OBteOBmOOBr+OCiSzjgb7jgZXjga/jgosNCivjgbXjgZjjgYQs44Gf44GL44GXDQor44G144GY44GELOOBleOBpOOBjQ0KK+OBsuOCi+OBi+OCjyzjgZHjgpMNCivjgbXjgZjjgYQs44G+44GV44Gy44GTDQor44G144GY44GV44KPLOOBr+OCi+OBvw0KK+OBteOBmOOBleOCjyzjgbLjgo3jgobjgY0NCivjgbLjgZQs44GL44Gk44KG44GNDQor44G144GY44GfLOOBpOOCiOOBlw0KK+OBteOBmOOBnyzjgZ/jgYvjgZcNCivjgbXjgZjjgo/jgoks44Go44GK44KLDQor44G144GL44G/LOOChOOBmeOChuOBjQ0KK+OBteOBi+OBluOCjyzjgZ/jgZHjgZcNCivjga/jgZvjgYzjgo8s44KI44GG44GZ44GRDQor44G144GP44GgLOOBmOOCheOCk+OBkw0KK+OBteOBj+OCguOBqCzjgb/jgaTjgYoNCivjgbXjgY/jgoDjgo0s44Gf44GL44GXDQor44G144GP44KNLOOChOOBmeOBkw0KK+OBteOBj+OBlyzjgbLjgo3jgb8NCivjgbXjgY/jgZfjgb4s44Gf44GL44G/DQor44G144GP44GX44G+LOOBl+OCk+OBhOOBoQ0KK+OBr+OBjuOCj+OCiSzjgajjgZfjgYoNCivjgbXjgY/jgZfjgb4s44GC44GN44KJDQor44G144Gq44GNLOOBquOBiuOBjQ0KK+OBteOBquOBj+OBvCzjgbXjgb/jgYoNCivjga/jgonjgaAs44G/44Gu44KLDQor44G144KL44Gv44GfLOOCguOBqOOBteOBvw0KK+OBteOCi+OBi+OCjyzjgb7jgaHjgZMNCivjgbXjgovjgoLjgags44Gf44GL44GXDQor44G144KL44KELOOBqOOCguOChA0KK+OBteOBl+OBvyzjgbLjgo3jgb8NCivjgZTjgYbjgaAs44G/44GN44GKDQor44GE44KK44GILOOBl+OCk+OBmA0KK+OBhOOBl+OBr+OCiSzjgYLjgY3jgokNCivjgYTjgaHjgYvjgo8s44G+44GV44KG44GNDQor44GE44GwLOOBvuOBvw0KK+OBhOOCj+OBleOBjSzjgZXjgYjjgZMNCivjgYTjga7jgYbjgYgs44GC44KE44GTDQor44GE44GE44KC44KKLOOBvuOBleOBsuOCjQ0KK+OBhOOBr+OCiSzjgZvjgYTjgZgNCivjgYTjgo/jgoDjgoks44GX44KH44GG44GfDQor44GE44Gq44GM44GNLOOChuOBjeOBig0KK+OBhOOBl+OBmOOBvizjgYvjgZrjgbLjgo0NCivjgYTjgajjgYYs44GX44KN44GGDQor44GU44KT44Gp44GGLOOBl+OCheOBhuOBmA0KK+OBlOOBqOOBhizjgZnjgb/jgowNCivjgYTjgZfjgYvjgo8s44G+44GV44Gy44GTDQor44GE44Go44GGLOOBvuOBleOBruOBtg0KK+OBhOOBm+OBjSzjgorjgZMNCivjgZTjgajjgYYs44Gy44KN44KG44GNDQor44Gv44GgLOOBsuOBp+OBguOBjQ0KK+OBr+OBjuOCj+OCiSzjgb/jgo/jgZMNCivjga/jgY7jgo/jgoks44Go44KC44GTDQor44Gv44GE44GY44G+LOOBguOBhOOBkw0KK+OBr+OBvuOBoCzjgbLjgo3jgZcNCivjga/jgb7jga4s44Gy44KN44Gk44GQDQor44Gv44G+44GK44GLLOOBk+OBmeOBkQ0KK+OBr+OBquOBqSzjgb/jga7jgosNCivjga/jgarjgZ8s44Gm44Gk44KEDQor44Gv44KJLOOBqOOCguOBsuOBkw0KK+OBr+OCiSzjgobjgYbjgZgNCivjga/jgoks44Gf44GR44GXDQor44Gv44KJLOOBjeOCh+OBhuOBkw0KK+OBr+OCieOBoCzjgZfjgpMNCivjga/jgonjgaAs44Gf44GR44GXDQor44Gv44KJ44GgLOOBguOBjeOBsuOBqA0KK+OBmeOBmuOBjSzjgZ/jgZHjgo0NCivjga/jgonjgYws44Gf44Gk44KEDQor44Gv44KJ44G/LOOBkeOCk+OBn+OCjeOBhg0KK+OBr+OCieOChOOBvizjga7jgbbjgbLjgZMNCivjga/jgonjgZ7jga4s44Gu44G244Gy44KNDQor44Gv44Gb44G5LOOBn+OBj+OBmA0KK+OBi+OBreOBkyzjgajjgoLjgYLjgY0NCivjgaTjgaHjgaAs44KI44GG44GE44GhDQor44Gv44GX44KC44GoLOOCiuOBiA0KK+OBr+OBl+OCguOBqCzjgbXjgb/jgbLjgo0NCivjga/jgZfjgoLjgags44GL44Gq44GIDQor44Gv44GX44KC44GoLOOBleOBqOOBlw0KK+OBr+OBl+OCguOBqCzjgZ/jgYvjgYLjgY0NCivjga/jgZfjgoLjgags44Gy44Gn44GNDQor44Gv44GX44KC44GoLOOBsuOBp+OBjQ0KK+OBr+OBl+OCguOBqCzjgojjgZfjgbLjgZMNCivjga/jgZ8s44GR44GE44GTDQor44Gv44Gj44Go44KKLOOBsuOBp+OBguOBjQ0KK+OBr+OBo+OBqOOCiizjgb7jgZPjgagNCivjga/jgaPjgajjgoos44Gb44GE44GYDQor44Gv44KE44GL44KPLOOBjeOCiOOBlw0KK+OBr+OChOOBi+OCjyzjgbLjgafjga/jgosNCivjga/jgoTjgZXjgYss44KI44GX44GL44GaDQor44Gv44KE44GV44GNLOOBm+OBhOOBlA0KK+OBr+OChOOBlyzjgajjgZfjgbLjgZMNCivjga/jgoTjgZcs44Gf44GL44KI44GXDQor44Gv44KE44GXLOOBn+OBi+OBquOCig0KK+OBr+OChOOBlyzjgoTjgZnjgY0NCivjga/jgoTjgZcs44GC44GN44KJDQor44Gv44KE44GX44GgLOOBkeOCk+OBnuOBhg0KK+OBsuOBsyzjgYvjgZrjga7jgbYNCivjgbLjgYzjgZcs44KE44GZ44Gy44KNDQor44Gy44GM44GXLOOBi+OBmuOBig0KK+OBsuOBkOOBoSzjgZPjgYbjgYTjgaHjgo3jgYYNCivjgbLjgZjjgYvjgZ8s44GR44KT44GYDQor44Gy44GY44KELOOCiOOBl+OBig0KK+OBsuOBquOBjCzjgZ/jgZHjgZcNCivjgbLjgonjgYvjgo8s44Gy44Gn44GC44GNDQor44Gy44KJ44GuLOOBsuOCjeOBkw0KK+OBsuOCieOBrizjgYTjgZ/jgosNCivjgbLjgonjga4s44Gf44Gg44GKDQor44Gy44KJ44GKLOOBn+OBi+OBsuOBqA0KK+OBsuOCieOBl+OBvizjgarjgYrjgY0NCivjgbLjgonjgoTjgb4s44Go44GX44KN44GGDQor44Gy44KJ44KE44GZLOOBsuOBqOOBlw0KK+OBsuOCiuOBjSzjgZHjgpPjgYTjgaHjgo0NCivjgbLjgo3jgb7jgZUs44KP44Gf44KLDQor44Gy44KN44KC44GoLOOBl+OCk+OBmA0KK+OBsuOCjeOBiuOBiyzjgb7jgarjgbYNCivjgbLjgo3jgZss44KG44G/44GTDQor44Gy44KN44GbLOOBvuOBpOOBn+OCjeOBhg0KK+OBhuOCgeOBoCzjgorjgofjgYbjgYTjgaENCivjgbvjgpPjgaAs44GV44Gq44GIDQor44G744KT44GpLOOBn+OBkeOBlw0KK+OBu+OCiuOCguOBqCzjgoTjgZnjgobjgY0NCivjgbvjgorjga4s44GL44Ga44GX44GSDQor44G744KK44GG44GhLOOBn+OBi+OBrQ0KK+OBu+OBleOBiyzjgYLjgY3jgZMNCivjgbvjgZfjga4s44G+44GT44GoDQor44G744GX44KE44G+LOOBv+OBjuOBteOBvw0KK+OBu+OBneOBi+OCjyzjgabjgaTjgoQNCivjgbvjgZ3jgYvjgo8s44KI44GX44Gy44KNDQor44G744Gd44GL44KPLOOBl+OBkuOBig0KK+OBu+OBneOChCzjgbLjgo3jgZcNCivjgYTjgbDjgonjgY0s44Gu44G244GKDQor44GE44Gh44Gv44KJLOOBsuOBleOBv+OBpA0KK+OBhOOBoeOBr+OCiSzjgZ/jgYvjgZcNCivjgYTjgaHjga/jgoks44Gu44G244GTDQor44GE44Gh44GL44KPLOOBkeOCk+OBhOOBoQ0KK+OBhOOBoeOBruOBmyzjgZXjgajjgZcNCivjgYTjgaAs44Gf44GR44GXDQor44GE44Gn44GQ44GhLOOBi+OBmuOBsuOBqA0KK+OBhOOBqSzjgb7jgZXjgZcNCivjgYTjgYzjgonjgZcs44GL44Gk44Gu44G2DQor44GE44GM44KJ44GXLOOChuOBjeOBsuOBkw0KK+OBhOOBjOOCieOBlyzjgbLjgo3jgZcNCivjgYTjgYTjgaAs44Gy44KN44GKDQor44GE44GE44GgLOOBi+OBpOOBqOOBlw0KK+OBhOOBhOOBmOOBvizjgZPjgYbjgZgNCivjgYTjgZHjgaAs44KK44KH44GGDQor44GE44GR44GgLOOBqOOCguOBvw0KK+OBhOOBkeOBoCzjgajjgoLjgb8NCivjgYTjgZHjgaAs44KI44GG44GTDQor44GE44G+44GELOOBk+OBhuOBjQ0KK+OBhOOBvuOBhOOBmuOBvyzjgZHjgYTjgZMNCivjgYTjgb7jgYTjgZrjgb8s44G/44KPDQor44GE44G+44KA44KJLOOBiuOBleOCgA0KK+OBhOOBvuOCgOOCiSzjgb/jga7jgosNCivjgYTjgoLjgpMs44GL44Ga44KG44GNDQor44GE44Gq44GgLOOBvuOBmeOBvw0KK+OBhOOBquOBjOOBjSzjgYvjgZrjgoQNCivjgYTjgarjgYzjgY0s44G/44Gk44KEDQor44GE44Gq44KA44KJLOOBn+OBi+OBlw0KK+OBhOOBquOCgOOCiSzjgajjgoLjga7jgooNCivjgYTjga4s44Gb44GE44GE44Gh44KN44GGDQor44GE44Gu44GL44KPLOOBguOBmeOBkw0KK+OBhOOBruOBvuOBnyzjgYvjgZrjgbLjgagNCivjgYTjga7jgYbjgYgs44Gy44KN44GL44GaDQor44GE44Gu44GG44GILOOBleOBqOOBlw0KK+OBhOOBruOBhuOBiCzjgZfjgbsNCivjgYTjga7jgYbjgYgs44KE44GZ44Gy44KNDQor44GE44Gu44GG44GILOOChuOBhuOBmA0KK+OBhOOBruOBhuOBiCzjgobjgYbjgZ8NCivjgYTjga7jgYbjgYgs44GT44GG44GE44Gh44KN44GGDQor44GE44Gs44GELOOBl+OCk+OBhOOBoeOCjeOBhg0KK+OBhOOBrOOBl+OBvizjgb7jgobjgb8NCivjgYTjgorjgYgs44G+44GV44Gu44KKDQor44GE44GV44GLLOOBl+OBkuOCiw0KK+OBhOOBl+OBsCzjgaHjgbLjgo0NCivjgYTjgZfjgbDjgZcs44Gg44GE44GZ44GRDQor44GE44GX44Gw44GXLOOBsuOBp+OBjQ0KK+OBhOOBl+OBoCzjgbLjgo3jgb/jgaQNCivjgYTjgZfjgaAs44Gy44KN44GXDQor44GE44GX44GgLOOBi+OBpOOBsuOCjQ0KK+OBhOOBl+OBoCzjgZHjgYTjgYTjgaENCivjgYTjgZfjgYzjgb8s44GT44GG44GE44GhDQor44GE44GX44GQ44KNLOOBk+OBhuOBmA0KK+OBhOOBl+OBr+OCiSzjgb7jgorjgZMNCivjgYTjgZfjgYQs44G+44GV44Gy44KNDQor44GE44GX44GELOOBquOBiuOBvw0KK+OBhOOBl+OBhCzjga7jgbzjgosNCivjgYTjgZfjgYQs44Gb44Gk44GTDQor44GE44GX44GELOOBn+OBoOOBlw0KK+OBhOOBl+OBhCzjgZ/jgYvjga/jgosNCivjgYTjgZfjgYvjgo8s44Go44GX44GKDQor44GE44GX44G+44KLLOOBpOOCiOOBlw0KK+OBi+OCj+OBmizjgojjgYbjgYTjgaENCivjgYTjgZfjgZrjgYss44KG44GN44GKDQor44GE44Gf44KELOOBruOCiuOBsuOBlQ0KK+OBhOOBhOOBoCzjgYLjgY3jgbLjgo0NCivjgYTjgajjgYYs44Gy44KN44G/44GhDQor44GE44Go44GGLOOBsuOCjeOBlw0KK+OBhOOBqOOBhizjgYTjgY/jgYoNCivjgYTjgajjgYYs44GL44Ga44KEDQor44GE44Go44GGLOOBl+OCh+OBhuOBkw0KK+OBhOOBqOOBhizjgYvjgZrjgbLjgo0NCivjgYTjgajjgYYs44GY44KF44KTDQor44GE44Go44GGLOOBvuOBk+OBqA0KK+OBhOOBqOOBhizjgYrjgZXjgoANCivjgYTjgajjgYYs44KI44GX44G+44GVDQor44GE44Go44GGLOOBvuOBleOChuOBjQ0KK+OBhOOBqOOBhizjgb7jgZXjgb8NCivjgYTjgajjgYYs44Gy44KN44GC44GNDQor44GE44Go44GGLOOBn+OBvuOBjQ0KK+OBhOOBqOOBhizjgY3jgojjgZ/jgYsNCivjgYTjgajjgYYs44G+44GV44G144G/DQor44GE44Go44GGLOOBsuOCjeOBi+OBmg0KK+OBhOOBqOOBhizjgobjgY3jgYoNCivjgYTjgajjgYYs44GI44GE44GYDQor44GE44Go44GGLOOBv+OBu+OBkw0KK+OBhOOCj+OBhCzjgZ/jgYvjgobjgY0NCivjgYTjgo/jgYQs44GL44Ga44GX44GSDQor44GE44KP44G/LOOBjeOCiOOBlw0KK+OBhOOCj+OCgOOCiSzjgojjgZfjgZ/jgYsNCivjgYTjgo/jgarjgYws44Gq44GK44GTDQor44GE44KP44GKLOOBi+OBmuOBguOBjQ0KK+OBhOOCj+OBleOBjSzjgorjgoXjgYbjgZMNCivjgYTjgo/jgZ8s44GN44KI44GTDQor44GE44KP44GfLOOBv+OBpOOBsuOCjQ0KK+OBhOOCj+OBnyzjgZfjgpPjgZgNCivjgYTjgZrjgb8s44Gu44Ge44KADQor44GY44KT44GwLOOBpOOBreOBruOCig0KK+OBruOBhuOBoSzjgorjgYgNCivjgonjgY8s44KI44GX44Gu44KKDQor44GL44GM44G/LOOBsuOCjeOBlw0KK+OBi+OBjOOCjyzjgZHjgYTjgZ8NCivjgYvjgZLjgoTjgb4s44Gf44G+44GNDQor44GL44GELOOBmOOCheOCkw0KK+OBi+OBmOOCguOBqCzjgZ/jgY/jgoQNCivjgYvjgZjjgo/jgoks44Gb44GE44GYDQor44GP44KK44Gv44KJLOOBiOOBhOOBmA0KK+OBi+OBjeOCgOOCiSzjgZjjgoXjgpMNCivjgYvjgY3jga7jgY0s44Gf44GL44GC44GNDQor44GL44GN44GG44GhLOOBsuOCjeOChuOBjQ0KK+OBi+OBjeOBluOBjSzjgZPjgYbjgZgNCivjgYvjgZMs44Go44GX44Gy44GTDQor44GL44KB44GX44G+LOOBoOOBhOOBmeOBkQ0KK+OBi+OBv+OBiOOBmSzjgYjjgYTjgYTjgaENCivjgYvjgb/jgY/jgoks44Gy44KN44GXDQor44GL44G/44KA44KJLOOBk+OBhuOBhOOBoeOCjeOBhg0KK+OBi+OBv+OBn+OBjSzjgb7jgZXjgZgNCivjgYvjgb/jgojjgZfjgYvjgo8s44G+44GV44KG44GNDQor44GL44KTLOOBn+OBj+OChA0KK+OBi+OBquOBhCzjgajjgZfjgYvjgZoNCivjgYvjgpPjgbDjgoTjgZcs44GE44Gh44KN44GGDQor44GL44KT44GgLOOCiOOBl+OBsuOBqA0KK+OBi+OBreOBkyzjgZ/jgYvjgobjgY0NCivjgYvjga3jgZMs44KE44GZ44KG44GNDQor44GL44Gt44GfLOOBn+OBi+OBlw0KK+OBi+OBruOBhizjgb7jgobjgb8NCivjgYvjgorjga4s44Gy44KN44GXDQor44GL44GV44G/LOOBi+OBquOBiA0KK+OBi+OBleOBquOBvyzjgZ/jgYvjgagNCivjgYvjgZss44G+44KC44KLDQor44GL44GZ44GMLOOBsuOCjeOBlw0KK+OBi+OBmeOChCzjgb7jgZXjgarjgooNCivjgYvjgZ/jgYrjgYss44Gu44KK44GTDQor44GL44Go44GGLOOBquOBiuOBkw0KK+OBi+OBqOOBhizjgbLjgo3jgZcNCivjgYvjgajjgYYs44G+44GV44KG44GNDQor44GL44Go44GGLOOBruOCiuOBguOBjQ0KK+OBi+OBqOOBhizjgZ/jgaDjgYLjgY0NCivjgYvjgajjgYYs44GR44KT44GYDQor44GL44Go44GGLOOBkeOCk+OBmA0KK+OBi+OBqOOBhizjgZ/jgYvjgobjgY0NCivjgYvjgajjgYYs44GC44GN44Gy44GoDQor44GL44Go44GGLOOBmOOCjeOBhg0KK+OBi+OBpOOBvuOBnyzjgY/jgb8NCivjgYvjgaTjgoks44G+44GV44GNDQor44GL44KP44G5LOOCiOOBl+OChuOBjQ0KK+OBi+OCj+OBoCzjgZ/jgZHjgZcNCivjgYvjgo/jgZDjgaEs44Gy44Gn44GNDQor44GV44GE44Go44GGLOOBsuOBp+OBn+OBiw0KK+OBi+OCj+OBkOOBoSzjgYTjgY/jgZMNCivjgYvjgo/jga/jgZ8s44GL44GK44KKDQor44GL44KP44GL44G/LOOBi+OBmuOCiOOBlw0KK+OBi+OCj+OBi+OBvyzjgZHjgpPjgYTjgaENCivjgoTjgZjjgb4s44G/44Gk44KIDQor44GL44KP44KC44GoLOOBpOOCiOOBlw0KK+OBi+OCj+OCgOOCiSzjgbLjgafjgYLjgY0NCivjgYvjgo/jgoDjgoks44Gy44KN44GXDQor44GL44KP44KA44KJLOOBmOOCheOCk+OBhOOBoQ0KK+OBi+OCj+OCgOOCiSzjgb7jgooNCivjgYvjgo/jga4s44G+44GV44Gy44GTDQor44GL44KP44GuLOOBvuOBleOBi+OBpA0KK+OBi+OCj+OBleOBjSzjgZfjgZLjgobjgY0NCivjgYvjgo/jgZss44GR44KT44GYDQor44GL44KP44GX44G+LOOBqOOBl+OChA0KK+OBi+OCj+OBl+OBvizjgojjgZfjga/jgosNCivjgYvjgo/jgZfjgb4s44Gy44Gn44GNDQor44GL44KP44GX44G+LOOChOOBmeOBruOBtg0KK+OBjeOBoCzjgb/jga7jgosNCivjgY3jgY/jgaEs44GL44Ga44KEDQor44GN44GP44GhLOOBn+OBi+OBsuOBpw0KK+OChOOBvuOCguOBqCzjgoTjgZnjgbLjgo0NCivjgYLjgY3jgojjgZcs44KE44GZ44Gy44KNDQor44GN44GP44GhLOOBvuOCguOCiw0KK+OBjeOBj+OBoSzjgZ/jgaTjgoQNCivjgY3jgY/jgaEs44G/44Gk44KLDQor44GN44GP44GhLOOBguOBjeOBkw0KK+OBjeOCgOOCiSzjgbXjgb/jgbLjgZMNCivjgY3jgoDjgoks44G+44GV44Gy44GTDQor44GN44KA44KJLOOBguOBjeOBsuOBkw0KK+OBjeOCgOOCiSzjgYLjgaTjgZcNCivjgY3jgoDjgoks44Gy44KN44GXDQor44GN44KA44KJLOOBvuOBleOBjQ0KK+OBjeOCgOOCiSzjgb/jga7jgosNCivjgYvjgajjgYYs44GX44KH44GG44GYDQor44GN44Gq44GbLOOChuOBhuOBmA0KK+OBjeOBrSzjgb7jgZXjgZMNCivjgY3jga4s44GC44GNDQor44GN44GuLOOBi+OBmuOBsuOCjQ0KK+OBjeOBruOBl+OBnyzjgZHjgYTjgZ8NCivjgY3jgoks44KI44GG44GTDQor44GN44GX44KC44GoLOOBqOOBiuOCiw0KK+OBjeOBn+OBsOOBn+OBkSzjgYLjgY3jgYoNCivjgY3jgZ/jgbDjgZ/jgZEs44Gf44GL44Gy44GTDQor44GN44Gf44GM44KPLOOBiuOBleOCgA0KK+OBjeOBn+OBjOOCjyzjgaHjgYvjgZMNCivjgY3jgZ/jgoDjgoks44Gy44KN44GC44GNDQor44Gf44GL44Gv44GXLOOCgeOBkOOBvw0KK+OBjeOBn+OChOOBvizjgYjjgYTjgZgNCivjgY3jgojjgarjgoos44Gy44KN44GXDQor44GT44Gw44KE44GXLOOBjeOCiOOBlw0KK+OBk+OBsOOChOOBlyzjgajjgZfjgbLjgo0NCivjgZPjgbDjgoTjgZcs44GC44GN44GTDQor44GT44Gw44KE44GXLOOBn+OBi+OBlw0KK+OBk+OBsOOChOOBlyzjgbLjgo3jgZcNCivjgZPjgbDjgoTjgZcs44Gy44KN44GC44GNDQor44GT44Gw44KE44GXLOOBquOBiuOBjQ0KK+OBhOOBqOOBhizjgZfjgpPjgZgNCivjgZPjgpPjga4s44KI44GG44GE44GhDQor44GT44KT44GuLOOBn+OBi+OBv+OBpA0KK+OBk+OCk+OBrizjgbLjgo3jgZcNCivjgZPjgpPjga4s44GL44Ga44GC44GNDQor44GT44GE44GRLOOBqOOCguOBteOBvw0KK+OBk+OBmOOBvizjgo/jgZ/jgosNCivjgZPjgY/jgZfjgofjgYYs44G+44GV44KLDQor44GT44G+44GNLOOBi+OBmuOChA0KK+OBvuOBi+OBuSzjgZXjgbbjgo3jgYYNCivjgZPjgb7jgaQs44Gf44GR44GXDQor44GT44G+44GkLOOBsuOCjeOBiA0KK+OBk+OCk+OBqSzjgZfjgpMNCivjgZPjgpPjgaks44Gf44GP44G/DQor44GT44KT44GpLOOBvuOBleOChuOBjQ0KK+OBk+OBl+OBsCzjgb/jgY0NCivjgojjgZPjgYgs44KE44GZ44Gu44KKDQor44GT44Gm44GM44KPLOOBvuOBleOBruOCig0KK+OBk+OCk+OBrizjgYvjgZrjgYLjgY0NCivjgZPjgoTjgb4s44KM44GE44GTDQor44GT44KE44G+LOOCguOBqOOBj+OBqw0KK+OBk+OChOOBvizjgbLjgo3jgZ/jgYsNCivjgZPjgZbjgZks44Go44GX44Gu44KKDQor44GP44Gh44GE44GXLOOBi+OBmuOBqOOBlw0KK+OBj+OBjuOBv+OChCzjgorjgoXjgYbjgZnjgZENCivjgY/jgZjjgonjgYQs44GC44Gk44GXDQor44GP44G+44Gu44G/44GpLOOBsuOCjeOBlw0KK+OBj+OBvuOBluOBjSzjgajjgoLjgY0NCivjgY/jgozjgb7jgaQs44Gf44GL44Gy44GnDQor44GP44KK44GNLOOBvuOBleOChuOBjQ0KK+OBj+OCiuOChOOBvizjgajjgZfjgo3jgYYNCivjgY/jgorjgoTjgb4s44Gy44KN44GXDQor44GP44KN44G5LOOBquOBiuOBqA0KK+OBj+OCjeOBleOCjyzjgajjgoLjgYLjgY0NCivjgY/jgo3jgZXjgo8s44KE44GZ44KG44GNDQor44GP44KK44KF44GGLOOCiOOBl+OBiA0KK+OBj+OBleOBrizjgYvjgaTjgobjgY0NCivjgY/jgo/jga/jgoks44GY44KF44KTDQor44GP44Ga44GuLOOCiOOBl+OBn+OBiw0KK+OBjeOCheOBhuOBoCzjgZ/jgY/jgoQNCivjgb7jgbbjgaEs44GR44KT44GE44GhDQor44G+44Gh44GfLOOBvuOBleOBjQ0KK+OBvuOBiOOBoCzjgojjgYbjgYTjgaENCivjgb7jgYjjgYTjgYgs44GC44GN44G144G/DQor44G+44GI44GL44KPLOOBoeOBguOBjQ0KK+OBvuOBvuOBoCzjgbLjgo3jgZcNCivjgb7jgarjgbks44Gy44KN44Gf44GLDQor44G+44Gq44G5LOOBi+OBmuOBig0KK+OBvuOCi+OBhOOBoSzjgb7jgZXjgobjgY0NCivjgb7jgovjgZ/jgass44Gf44GL44Gy44GnDQor44G+44KL44KE44G+LOOBn+OBi+OBkw0KK+OBvuOBleOBiuOBiyzjgZ/jgYvjgobjgY0NCivjgb7jgZnjgaAs44Gf44Gk44G/DQor44G+44GZ44GgLOOBpOOCiOOBlw0KK+OBvuOBmeOBoCzjgojjgZfjgbbjgb8NCivjgb7jgZnjgaAs44KG44GN44GTDQor44G+44GZ44GgLOOBsuOCjeOBi+OBmg0KK+OBvuOBpOOBsOOCiSzjgZPjgYbjgZ7jgYYNCivjgb7jgaTjgaAs44GL44Gk44KEDQor44G+44Gk44GgLOOBsuOCjeOChuOBjQ0KK+OBvuOBpOOBoOOBhOOCiSzjgajjgZfjgbXjgb8NCivjgb7jgaTjgYjjgaAs44GC44KG44G/DQor44G+44Gk44GELOOBsuOBp+OBlw0KK+OBvuOBpOOBhCzjgbLjgo3jgY0NCivjgb7jgaTjgoLjgags44Gu44G244GKDQor44G+44Gk44KC44GoLOOBm+OBhOOBhOOBoQ0KK+OBvuOBpOOCguOBqCzjgYvjgZrjgbLjgo0NCivjgb7jgaTjgoLjgags44GN44KI44GL44GaDQor44G+44Gk44KC44GoLOOBjeOCh+OBhuOBkw0KK+OBvuOBpOOCguOBqCzjgojjgZfjgY0NCivjgb7jgaTjgoLjgags44Gq44KK44GC44GNDQor44G+44Gk44KC44GoLOOBguOBjeOBruOCig0KK+OBvuOBpOOCguOBqCzjgZHjgpMNCivjgb7jgaTjgoLjgags44Go44GX44GL44GaDQor44G+44Gk44KC44GoLOOBkeOCkw0KK+OBvuOBpOOCguOBqCzjgaDjgYQNCivjgarjgYvjgoDjgoks44Gy44KN44KG44GNDQor44G+44Gk44KA44KJLOOBj+OBvw0KK+OBvuOBpOOBquOBjCzjgZHjgpPjgZjjgo3jgYYNCivjgb7jgaTjga4s44GL44Ga44GoDQor44G+44Gk44GKLOOCiuOCheOBhuOBhOOBoQ0KK+OBvuOBpOOBiizjgZ/jgYvjgYoNCivjgb7jgaTjgYrjgYss44Gf44GR44GXDQor44G+44Gk44GK44GLLOOBi+OBmuOBruOCig0KK+OBvuOBpOOBiuOBiyzjgZ/jgaDjgYLjgY0NCivjgb7jgaTjgYrjgYss44Gy44KN44GXDQor44G+44Gk44GK44GLLOOBguOBpOOBlw0KK+OBvuOBpOOBl+OBvizjgY3jgb/jgYoNCivjgb7jgaTjgZ/jgass44GC44KEDQor44G+44Gk44KE44G+LOOBk+OBhuOBn+OCjeOBhg0KK+OBv+OBoeOCguOBqCzjgb7jgobjgb8NCivjgb/jgYjjgY0s44Gf44GP44KN44GGDQor44G/44GL44G/LOOBi+OBmuOBvw0KK+OBv+OBi+OBvyzjgojjgZfjgZ/jgYsNCivjgb/jgarjgYzjgo8s44Gk44KI44GXDQor44G/44Gq44GL44KPLOOBl+OCh+OBhuOBkw0KK+OBv+OBl+OBvizjgYvjgZrjgb8NCivjgb/jgZfjgb4s44GX44Gu44G2DQor44G/44GX44G+LOOBsuOCjeOBguOBjQ0KK+OBv+OBn+OBoSzjgZPjgYbjgZgNCivjgb/jgaTjgaAs44Gq44GK44GNDQor44G/44Gk44Gv44GXLOOBmOOCheOCkw0KK+OBv+OBpOOBhCzjgbLjgo3jgZcNCivjgb/jgaTjgoLjgags44GN44KI44G/DQor44G/44GG44KJLOOBjeOCh+OBhuOBmA0KK+OBv+OBhuOCiSzjgb7jgZXjgbLjgo0NCivjgb/jgoTjgbks44GC44GN44KJDQor44G/44KE44GhLOOBvuOBleOChuOBjQ0KK+OBv+OChOOBmOOBvizjgYLjgY3jga7jgooNCivjgbDjgpMs44G+44Gq44G2DQor44G/44KE44KC44GoLOOBqOOBl+OBguOBjQ0KK+OCiOOBk+OBiCzjgZPjgYbjgZ7jgYYNCivjgb/jgoTjgZXjgYss44GR44GE44GE44GhDQor44G/44KE44GfLOOBsuOCjeOChuOBjQ0KK+OBv+OChOOBnyzjgYvjgZrjgYoNCivjgb/jgoTjgYbjgaEs44G+44GV44Gy44KNDQor44GG44Gh44KE44G+LOOBv+OBjeOBkw0KK+OBleOBi+OBhCzjgorjgofjgYbjgZnjgZENCivjgb/jgoTjgZbjgo8s44Go44GX44GC44GNDQor44G/44Ge44G244GhLOOBiOOBhOOBkw0KK+OBv+OBnuOBkOOBoSzjgYLjgY3jgokNCivjgb/jgZ7jgZDjgaEs44GE44Ga44G/DQor44G/44Ga44KC44GoLOOBguOBpOOBsuOBkw0KK+OBv+OBmuOBrizjgb7jgZXjgojjgZcNCivjgb/jgZrjga4s44G+44GV44KG44GNDQor44G/44Ga44GuLOOChuOBhuOBmA0KK+OBv+OBmuOBl+OBvizjgobjgY3jgYoNCivjgb/jgZrjgZ8s44KG44Gf44GLDQor44G/44Ga44Gf44GrLOOBsuOBleOBqA0KK+OCguOBjizjgYvjgZrjga7jgooNCivjgoLjgY4s44KC44KG44KLDQor44KC44GOLOOBsuOCjeOBlw0KK+OCguOCguOBmyzjgaDjgYTjgZnjgZENCivjgoLjgpPjgb4s44KG44GG44GYDQor44KC44KKLOOCjOOBhOOBkw0KK+OCguOCiizjgZHjgYTjgZnjgZENCivjgoLjgoos44GR44KT44GE44GhDQor44KC44KKLOOBvuOBleOBsuOCjQ0KK+OCguOCiizjgorjgYsNCivjgoLjgoos44Gk44Go44KADQor44KC44KK44KC44GoLOOChuOBjeOBsuOCjQ0KK+OCguOCiuOBrizjgojjgYbjgZnjgZENCivjgojjgZfjgaAs44Gq44GK44G144G/DQor44KC44KK44GfLOOBsuOBp+OBruOBtg0KK+OCguOCiuOBnyzjgYvjgZrjgbLjgZUNCivjgoLjgorjgZ8s44GL44Gk44G/DQor44KC44KK44GfLOOCiOOBl+OChA0KK+OCguOCiuOBnyzjgZfjgZLjgYoNCivjgoLjgorjgo/jgY0s44Gf44GP44GKDQor44KC44KNLOOCiOOBl+OCjeOBhg0KK+OCguOBn+OBhCzjgbLjgo3jgZcNCivjgoLjgajjgbDjgoTjgZcs44GV44Go44KLDQor44KC44Go44Gv44GXLOOBl+OBkuOBvuOBlQ0KK+OCguOBqOOChOOBvizjgb7jgZXjga7jgooNCivjgoLjgajjgZbjgo8s44KG44GG44GYDQor44KA44GL44KPLOOBhOOBpOOBkw0KK+OCgOOBquOBi+OBnyzjgbXjgb/jgZMNCivjgoDjgonjgYvjgb8s44Gy44KN44GC44GNDQor44KA44KJ44GL44G/LOOCiOOBl+OBjQ0KK+OCgOOCieOBi+OBvyzjgbLjgo3jgobjgY0NCivjgoDjgonjgYvjgb8s44KE44GZ44GTDQor44KA44KJ44GL44G/LOOBguOBjeOBsuOBlQ0KK+OCgOOCieOBi+OCjyzjgb7jgZXjgZMNCivjgoDjgonjgarjgYss44G+44KG44GTDQor44KA44KJ44GfLOOBqOOCguOBruOCig0KK+OCgOOCieOBnyzjgbLjgo3jgY0NCivjgoDjgonjgoTjgb4s44GR44KT44GYDQor44KA44KJ44KE44G+LOOBsuOCjeOBlw0KK+OCgOOCjeOBr+OBlyzjgZPjgYbjgZgNCivjgoDjgajjgYYs44GL44GK44KLDQor44KA44Go44GGLOOBguOBjeOBkw0KK+OBquOBsCzjgbLjgo3jgobjgY0NCivjgarjgYzjgYQs44G+44GV44KLDQor44Gq44GM44GELOOBquOBiuOBguOBjQ0KK+OBquOBjOOBrizjgYvjgaTjgoQNCivjgarjgYzjga4s44Gf44G+44G/DQor44Gq44GM44GKLOOChOOBmeOBsuOCjQ0KK+OChOOBvuOCguOBqCzjgYvjgZrjgbLjgo0NCivjgarjgYzjgYrjgZEs44GV44Go44GXDQor44Gq44GM44GK44GVLOOBguOBjeOBsuOCjQ0KK+OBquOBjOOBl+OBvizjgYvjgaTjgoQNCivjgarjgYzjgZfjgb4s44GP44G/DQor44Gq44GM44GfLOOBv+OBjQ0KK+OBiuOBiuOBsCzjgZXjgajjgZcNCivjgarjgYzjgZ8s44GX44KT44GYDQor44Gq44GM44GfLOOBl+OCh+OBhuOBuOOBhA0KK+OBquOBjOOBn+OBqyzjgaTjgojjgZcNCivjgarjgYTjgajjgYYs44KE44GZ44Gu44KKDQor44Gq44GL44GhLOOCiOOBl+OBr+OCiw0KK+OBquOBi+OBoCzjgojjgZfjgobjgY0NCivjgarjgYvjgaDjgYQs44KG44GG44GE44GhDQor44Gq44GL44GM44KPLOOBquOBiuOChuOBjQ0KK+OBquOBi+OBjOOCjyzjgojjgZfjgobjgY0NCivjgarjgYvjgYzjgo8s44GC44Gk44GXDQor44Gq44GL44GM44KPLOOBsuOCjeOChuOBjQ0KK+OBquOBi+OBr+OCiSzjgZjjgoXjgpMNCivjgarjgYvjgYQs44GR44GE44GE44GhDQor44Gq44GL44GELOOBl+OBrg0KK+OBquOBi+OBmOOBvizjgZ/jgYvjgZcNCivjgarjgYvjgZjjgb4s44GT44GG44GYDQor44Gq44GL44KA44KJLOOBl+OCheOBhuOBlA0KK+OBquOBi+OCgOOCiSzjgb7jgZXjgobjgY0NCivjgY3jgb/jgbLjgoks44G/44GLDQor44GE44Go44GGLOOBn+OBi+OBsuOBlQ0KK+OBquOBi+OCgOOCiSzjgZPjgYbjgZgNCivjgarjgYvjgoDjgoks44Gf44Gk44KEDQor44Gq44GL44KA44KJLOOBi+OBmuOChuOBjQ0KK+OBquOBi+OCgOOCiSzjga/jgZjjgoENCivjgarjgYvjgoDjgoks44G+44GV44GC44GNDQor44Gq44GL44KA44KJLOOBsuOCjeOBjQ0KK+OBquOBi+OCgOOCiSzjgb/jgY0NCivjgarjgYvjgoDjgoks44Go44KC44GKDQor44Gq44GL44Gr44GXLOOBhOOBmuOCiw0KK+OBquOBi+OBq+OBlyzjgZ/jgYvjgbLjgo0NCivjgarjgYvjga4s44KG44GG44GTDQor44Gq44GL44GuLOOChOOBmeOBguOBjQ0KK+OBquOBi+OBrizjgabjgaTjgoQNCivjgarjgYvjga4s44GL44Ga44Gu44KKDQor44Gq44GL44GuLOOBguOBpOOBlw0KK+OBquOBi+OBiizjgYLjgY3jgZMNCivjgarjgYvjgZXjgY8s44GX44KH44GG44Gf44GkDQor44Gq44GL44GbLOOBsuOCjeOBn+OBiw0KK+OBquOBi+OBnyzjgY/jgovjgb8NCivjgarjgYvjgZ8s44Gy44KN44G/DQor44Gq44GL44GfLOOChOOBmeOBsuOCjQ0KK+OBquOBi+OBn+OBkSzjgZ/jgY/jgYoNCivjgarjgYvjgoTjgb4s44G144G/44GKDQor44Gq44G/44GNLOOBkeOBhOOBlw0KK+OBquOBquOBleOCjyzjgarjgb/jgZgNCivjgarjgpPjgbAs44Gg44GE44GZ44GRDQor44Gq44KT44KC44GPLOOBiOOBv+OBkw0KK+OBreOCguOBqCzjgarjgaTjgZMNCivjga3jgoLjgags44G/44Gk44GC44GNDQor44Gr44GELOOCiOOBl+OBkw0KK+OBq+OBhOOBpyzjgbLjgafjgaTjgZANCivjgavjgYTjgY/jgoks44Gy44Gn44KEDQor44Gr44GE44Ga44G+LOOBn+OBhOOBoeOCjeOBhg0KK+OBq+OBi+OBvyzjgYLjgY3jgokNCivjgavjgZfjgbDjgoTjgZcs44G+44GV44Gy44GTDQor44Gr44GX44GgLOOCiOOBl+OChA0KK+OBq+OBl+OBr+OCiSzjgZfjgY3jgZMNCivjgavjgZfjga/jgoks44GV44Go44GXDQor44Gr44GX44GL44KPLOOBn+OBi+OBsuOCjQ0KK+OBq+OBl+OBi+OBnCzjgYvjgZrjga7jgooNCivjgavjgZfjgb/jgoQs44GV44Go44GXDQor44Gr44GX44KA44KJLOOBl+OCk+OBhOOBoQ0KK+OBq+OBl+OCgOOCiSzjgY3jgo/jgoANCivjgavjgZfjgoTjgb4s44Gy44Go44GXDQor44Gr44GX44KE44G+LOOCguOBqOOBguOBjQ0KK+OBq+OBo+OBnyzjgYvjgaTjgYLjgY0NCivjgavjgo8s44GN44KI44GXDQor44Go44GG44GU44GGLOOBvuOBquOBtg0KK+OBq+OCjyzjgYvjgaTjgoQNCivjga7jgbbjga/jgoks44GT44GG44GYDQor44GK44GM44KPLOOChuOBhuOBkw0KK+OBruOBjOOBvyzjgYrjgZXjgoANCivjga7jgYzjgb8s44GY44KF44KT44GE44GhDQor44Gu44KC44GoLOOBv+OBiw0KK+OBruOCgOOCiSzjgb7jgarjgbYNCivjga7jgoDjgoks44Gf44GL44Gy44KNDQor44Gu44Ge44GILOOBr+OBmOOCgQ0KK+OBrOOBvuOBnyzjgabjgaQNCivjgYrjgaDjgZjjgb4s44GI44KKDQor44GK44GK44GM44GI44KKLOOBqOOBiuOCiw0KK+OBiuOBjOOBnyzjgbLjgafjgY0NCivjgYrjgYzjgo8s44GX44GS44KLDQor44GK44GM44KPLOOBn+OBkeOBig0KK+OBiuOBiuOBjizjgZ/jgZHjgZcNCivjgYrjgY7jgY/jgbws44KI44GG44GY44KN44GGDQor44GK44GULOOBqOOCguOBjQ0KK+OBiuOBkOOCiSzjgbLjgo3jgobjgY0NCivjgYrjgYrjgbAs44Go44KC44Gy44KNDQor44GK44GK44Gw44KE44GXLOOCiOOCiuOBkw0KK+OBiuOBiuOBiCzjgojjgYbjgYTjgaENCivjgYrjgYrjgYzjgb4s44GT44GG44GE44GhDQor44GK44Gv44GXLOOBquOBiuOBjQ0KK+OBiuOBiuOBhOOBlyzjgZHjgpPjgZgNCivjgYrjgYrjgYvjgo8s44KE44GZ44Gy44GTDQor44GK44GK44GN44GpLOOBvuOBleOBig0KK+OBiuOBiuOBj+OBvCzjgbLjgo3jgobjgY0NCivjgYrjgYrjgY/jgbws44Gy44KN44G144G/DQor44GK44GK44GP44G+LOOBvuOBk+OBqA0KK+OBiuOBvizjgb7jgoLjgosNCivjgYrjgb7jgYgs44KA44Gk44KN44GGDQor44GK44G+44GILOOBn+OBi+OBlw0KK+OBiuOBiuOCguOCiizjgajjgoLjgbLjgo0NCivjgYrjgYrjgoLjgoos44G/44Gk44KI44GXDQor44GK44GK44KC44KKLOOBquOBiuOBjQ0KK+OBiuOBiuOCguOCiizjgbLjgo3jgY0NCivjgYrjgYrjgoLjgoos44G+44GV44KE44GZDQor44GK44GK44KC44GoLOOBv+OBpOOCiw0KK+OBiuOBiuOBq+OBlyzjgYLjgYTjgZMNCivjgYrjgYrjgavjgZcs44GR44KT44GYDQor44GK44GK44Gr44GXLOOBvuOBleOBpuOCiw0KK+OBiuOBrizjgYLjgY3jgokNCivjgYrjgYrjgazjgb4s44Gy44KN44GNDQor44GK44GK44GV44GLLOOCiuOBlQ0KK+OBiuOBiuOBleOCjyzjgZ/jgYvjgbLjgo0NCivjgYrjgYrjgZXjgo8s44GZ44G/44GTDQor44GK44GX44G+LOOBn+OBi+OBlw0KK+OBiuOBl+OCjSzjgZfjgpPjgYTjgaENCivjgYrjgYrjgZ8s44GC44GV44GTDQor44GK44GK44GfLOOBguOBpOOBig0KK+OBiuOBiuOBnyzjgbLjgafjgobjgY0NCivjgYrjgYrjgZ8s44G+44GV44G/DQor44GK44GK44GfLOOCgOOBreOChOOBmQ0KK+OBiuOBiuOBnyzjgZfjgpPjgYTjgaHjgo3jgYYNCivjgYrjgYrjgZ/jgass44KE44GZ44Gy44KNDQor44GK44GK44GkLOOBsuOCjeOChuOBjQ0KK+OBiuOBiuOBpOOBiyzjgZ/jgYvjgZcNCivjgYrjgYrjgaTjgY0s44GC44GN44Gy44KNDQor44GK44GE44GL44KPLOOBv+OBoeOBig0KK+OBiuOBiyzjgojjgZfjgbLjgZUNCivjgYrjgYss44Gy44Gn44GNDQor44GK44GLLOOBteOBv+OBkw0KK+OBiuOBi+OBoCzjgb/jgY0NCivjgYrjgYvjgaAs44KE44GZ44GXDQor44GK44GL44GgLOOChuOBhuOBhOOBoQ0KK+OBiuOBi+OBoCzjgZXjgajjgosNCivjgYrjgYvjgZDjgaEs44Gu44G244Gy44KNDQor44GK44GL44GELOOChuOBn+OBiw0KK+OBiuOBi+OBvuOBpCzjgZ/jgYvjgbLjgo0NCivjgYrjgYvjgoLjgags44KI44GX44GC44GNDQor44GK44GL44KC44GoLOOBiOOBhOOBhOOBoQ0KK+OBiuOBi+OCguOBqCzjgbLjgafjgYoNCivjgYrjgYvjgoLjgags44G+44GV44G244G/DQor44GK44GL44KC44GoLOOBvuOBleOBsuOCjQ0KK+OBiuOBi+OCguOBqCzjgb/jgaHjga/jgosNCivjgYrjgYvjgoLjgags44Gu44KK44GKDQor44GK44GL44GuLOOBqOOCguOBsuOCjQ0KK+OBiuOBi+OBluOBjSzjgobjgY3jgagNCivjgYrjgY3jgoLjgags44GI44Gk44GTDQor44GK44GP44GuLOOCiOOBl+OBn+OBvw0KK+OBiuOBj+OChOOBvizjgoTjgZnjgYoNCivjgYrjgYrjgb8s44GX44GS44KLDQor44GK44GK44GuLOOBquOBiuOBjQ0KK+OBiuOBiuOBrizjgbLjgo3jgbXjgb8NCivjgYrjgYrjga4s44Gy44KN44GXDQor44GK44GK44Gu44GbLOOBmOOCheOCk+OBkw0KK+OBiuOBruOBluOBjSzjgZ/jgYvjgZcNCivjgYrjgorjgYgs44KI44GX44GTDQor44GK44GW44GNLOOBvuOBleOBkw0KK+OBqOOBj+OBv+OChCzjgabjgaTjgoQNCivjgZXjgYTjgaEs44GL44GK44KKDQor44GV44GE44Go44GGLOOBl+OCk+OBhOOBoQ0KK+OBleOBhOOBqOOBhizjgbLjgajjgY0NCivjgZXjgYTjgajjgYYs44Gy44Gn44GC44GNDQor44GV44GE44Go44GGLOOBsuOCjeOBn+OBiw0KK+OBleOBhOOBqOOBhizjgobjgZ/jgYsNCivjgZXjgYTjgajjgYYs44KE44GZ44Gy44GTDQor44GV44GE44Go44GGLOOBn+OBhOOBlw0KK+OBleOBhOOBqOOBhizjgYvjgYrjgosNCivjga/jgYvjgb7jgaAs44GL44KIDQor44GV44GL44GQ44GhLOOBk+OBhuOBmA0KK+OBleOBi+OBhCzjgb7jgorjgZMNCivjgZXjgYvjgY3jgbDjgoks44Gf44GL44GKDQor44GV44GL44GN44KC44GoLOOCiOOBl+OBiA0KK+OBleOBi+OCguOBqCzjgYjjgYTjgZgNCivjgZXjgYvjgoLjgags44GI44KKDQor44GV44GL44KC44GoLOOBsuOBp+OBsuOCjQ0KK+OBleOBi+OCguOBqCzjgYTjgZrjgb8NCivjgZXjgYvjgoLjgags44GR44GE44GE44GhDQor44G/44Gf44GrLOOBkeOCk+OBhOOBoQ0KK+OBleOBi+OBhuOBoSzjgY/jgavjgbLjgZMNCivjgZXjgY3jgoLjgags44G+44GV44Gy44GTDQor44GV44GP44G+LOOBv+OBpOOCiw0KK+OBleOBj+OCieOBhCzjgoLjgajjga7jgooNCivjgZXjga4s44KK44GN44KEDQor44GV44GuLOOCiuOCheOBhuOBhOOBoQ0KK+OBleOBrizjgZfjgoXjgYbjgZ7jgYYNCivjgZXjgZXjgaAs44GX44KF44KT44GZ44GRDQor44GV44GV44Gv44KJLOOBmeOBmeOCgA0KK+OBleOBleOBjSzjgZ/jgYvjgbLjgagNCivjgZXjgZXjgY0s44Go44GX44Gy44GTDQor44GV44GV44GNLOOChOOBmeOBteOBvw0KK+OBqOOBoOOBqyzjgaTjgojjgZcNCivjgZXjgZXjgY0s44Gb44GE44GYDQor44GV44Gf44GRLOOBpOOBreOBruOCig0KK+OBleOBqOOBhizjgoTjgZnjgbLjgo0NCivjgZXjgajjgYYs44GX44KT44GUDQor44GV44Go44GGLOOBsuOBleOBr+OCiw0KK+OBleOBqOOBhizjgobjgYbjgYTjgaENCivjgZXjgajjgYYs44KI44GX44GC44GNDQor44GV44Go44GGLOOBn+OBi+OBi+OBmg0KK+OBleOBqOOBhizjgorjgYjjgZMNCivjgZXjgajjgYYs44Go44GK44KLDQor44GV44Go44GGLOOChuOBhuOBhOOBoQ0KK+OBleOBqOOBhizjga/jgovjgYoNCivjgZXjgajjgYYs44GX44KT44GE44Gh44KN44GGDQor44GV44Go44GGLOOBruOBvOOCiw0KK+OBleOBqOOBhizjgZPjgYbjgZgNCivjgZXjgajjgYYs44Gg44GE44GZ44GRDQor44GV44Go44GGLOOBguOBjeOCiQ0KK+OBleOBqOOBhizjgZHjgYTjgZ/jgo3jgYYNCivjgZXjgajjgYYs44Go44KC44GTDQor44GV44Go44GGLOOBmOOCheOCk+OBmA0KK+OBleOBqOOBhizjgajjgoLjgY0NCivjgZXjgo/jgaAs44GR44GE44Gf44KN44GGDQor44GV44KP44GgLOOBvuOBkw0KK+OBleOCj+OBoCzjgb/jgaHjgogNCivjgYTjgo/jgZ8s44G+44KG44G/DQor44GV44KP44GELOOBqOOBl+OBsuOBkw0KK+OBleOCj+OBhCzjgZ3jgYbjgYTjgaHjgo3jgYYNCivjgZXjgoTjga4s44GE44GP44KEDQor44Gb44GNLOOBn+OBkeOBlw0KK+OBm+OBjeOBkOOBoSzjgb7jgZXjgojjgZcNCivjgZvjgY3jgZDjgaEs44G/44GLDQor44Gb44GN44GQ44GhLOOBguOBjeOCiQ0KK+OBm+OBjeOBrSzjgYLjgY3jgbLjgo0NCivjgZvjgY3jga4s44Gf44GL44GXDQor44Gb44KT44GqLOOBqOOBl+OBv+OBpA0KK+OBm+OCiuOBluOCjyzjgbLjgo3jgobjgY0NCivjgZvjgags44GL44Gk44KEDQor44GX44Gw44GfLOOBk+OBhuOBhOOBoQ0KK+OBl+OBsOOBnyzjgb7jgZXjgbLjgacNCivjgZfjgbDjgZ8s44GR44GE44GZ44GRDQor44GX44Gw44Gf44GrLOOBleOBqOOBlw0KK+OBl+OBtuOBn+OBqyzjgY3jgofjgYbjgZMNCivjgZfjgYws44GV44Go44KLDQor44GX44GS44Gu44G2LOOBi+OBmuOCiOOBlw0KK+OBl+OBvizjgb/jgY3jgZMNCivjgZfjgb7jgaAs44KM44GE44GY44KN44GGDQor44GX44G+44GgLOOBleOBqOOBkw0KK+OBl+OBvuOCgOOCiSzjgojjgZfjgb/jgaQNCivjgZfjgb/jgZos44Gf44GR44GL44GaDQor44GX44G/44GaLOOBleOBoOOBv+OBoQ0KK+OBl+OCguOBsOOChOOBlyzjgY3jgojjgZcNCivjgZfjgoLjgYzjgo8s44GT44GG44GYDQor44GX44KC44Gy44GU44GXLOOBpuOBpOOBsuOBlQ0KK+OBl+OCguOBhOOBpyzjgZ/jgYTjgZcNCivjgZfjgarjgaAs44GL44Gk44G/DQor44GX44Gt44GELOOChuOBiw0KK+OBl+OCk+OBjOOBhCzjgZ/jgaDjgZcNCivjgZfjga7jgaAs44GT44GG44GYDQor44GX44Gu44Gv44KJLOOBn+OBi+OBsuOCjQ0KK+OBl+OBruOBluOBjSzjgajjgoLjgojjgZcNCivjgZfjgYrjgoQs44Gf44GP44KEDQor44GX44KJ44Gv44G+LOOBn+OCjeOBhg0KK+OBl+OCieOBhOOBlyzjgobjgYbjgYTjgaENCivjgZfjgonjgYTjgZcs44Gf44GL44GXDQor44GX44Gf44KJLOOBn+OBkeOBlw0KK+OBl+OCh+OBhuOBmCzjgbLjgo3jgobjgY0NCivjgZfjgofjgYbjgZgs44GX44KTDQor44G+44GZ44KE44G+LOOBvuOBleOBsuOBpw0KK+OBl+OCheOBqOOBhizjgobjgb/jgZMNCivjgZ3jgYjjgaAs44Gy44Gn44GL44GaDQor44Gd44GtLOOBsuOBp+OBjQ0KK+OBneOBreOBoCzjgZ/jgY/jgYoNCivjgZ3jga7jgbks44G+44GV44Gy44KNDQor44Gd44Gu44G5LOOBvuOBleOBlw0KK+OBneOCieOBrizjgb/jgbsNCivjgZnjgaAs44Gq44GK44Gy44KNDQor44GZ44GM44GELOOBruOCiuOChuOBjQ0KK+OBmeOBjOOCj+OCiSzjgZvjgYTjgb4NCivjgZnjgY7jgoLjgags44Gf44GL44Gy44KNDQor44GZ44GO44KC44GoLOOBn+OBi+OBvuOBlQ0KK+OBmeOBjuOBhuOCiSzjgojjgZfjga7jgooNCivjgZnjgY7jgoTjgb4s44G+44GV44Gy44KNDQor44GZ44GO44KE44G+LOOBsuOBp+OBvuOBlQ0KK+OBmeOBjuOChOOBvizjgozjgYTjgZMNCivjgZnjgZjjgoPjgY8s44Gf44GL44KE44GZDQor44GZ44GLLOOBqOOBiuOCiw0KK+OBmeOBkeOBjOOCjyzjgbLjgo3jgobjgY0NCivjgZnjgb/jgarjgYws44GN44G/44GTDQor44GZ44G/44GK44GLLOOBqOOCguOChA0KK+OBmeOBquOChOOBvizjgZHjgpPjgYTjgaENCivjgZnjgZrjgY0s44G+44GV44KEDQor44GZ44Ga44GNLOOBsuOCjeOBlw0KK+OBhOOBl+OBhCzjgoTjgZnjgbLjgZMNCivjgZnjgZrjgY0s44GX44GS44KLDQor44GZ44Ga44GNLOOBn+OBi+OChuOBjQ0KK+OBmeOBmuOBjSzjgbLjgafjgbLjgo0NCivjgoTjgb7jgZfjgo0s44Gy44Gn44GNDQor44GZ44Ga44GNLOOBsuOCjeOBlw0KK+OBmeOBmuOBjSwNCivjgZnjgZrjgY0s44GL44Gk44KG44GNDQor44GZ44Ga44GNLOOBi+OBmuOBruOCig0KK+OBmeOBmuOBjSzjgZPjgYbjgYTjgaENCivjgZ/jgbDjgZMs44GP44G/44GTDQor44Gf44Gw44GfLOOBvuOBleOBjQ0KK+OBquOBi+OBmOOBvizjgabjgovjgobjgY0NCivjgZ/jgbDjgZ8s44KI44GX44Gk44GQDQor44Gf44Gh44Gw44GqLOOBqOOBl+OChuOBjQ0KK+OBn+OBjOOBvyzjgZ/jgYTjgZvjgYQNCivjgb7jgb7jgaAs44GR44KT44GYDQor44Gf44GM44KPLOOBvuOBk+OBqA0KK+OBn+OBmOOBvizjgoLjgajjgbLjgo0NCivjgZ/jgYvjgbDjgoTjgZcs44KG44GNDQor44Gf44GL44GgLOOBqOOCguOCiA0KK+OBn+OBi+OBoCzjgZ/jgYvjgbLjgo0NCivjgZ/jgYvjgY4s44GI44G/DQor44Gf44GL44GOLOOBoOOBhOOBmeOBkQ0KK+OBn+OBi+OBr+OBlyzjgZfjgpPjgoQNCivjgZ/jgYvjga/jgZcs44KG44GN44GKDQor44Gf44GL44Gv44GXLOOBsuOCjeOBjQ0KK+OBn+OBi+OBr+OBlyzjgbLjgo3jgZMNCivjgZ/jgYvjga/jgZcs44GE44Ga44KLDQor44Gf44GL44Gv44GXLOOBvuOBleOBjQ0KK+OBn+OBi+OBr+OBlyzjgb/jgZfjgofjgYYNCivjgo/jgZ/jgarjgbks44G+44GNDQor44Gf44GL44Gv44GXLOOChOOBmeOBlw0KK+OBn+OBi+OBr+OBlyzjgobjgZ/jgYsNCivjgZ/jgYvjga/jgZcs44GT44GG44G444GEDQor44Gf44GL44Gv44GXLOOBvuOBleOBteOBvw0KK+OBn+OBi+OBhCzjgbLjgafjgY0NCivjgZ/jgYvjgY/jgoks44GR44KT44GZ44GRDQor44Gf44GL44GP44KJLOOBl+OBuw0KK+OBn+OBi+OBvuOBoSzjgYvjgaTjga7jgooNCivjgZ/jgYvjgb7jgaQs44GC44GN44KI44GXDQor44G+44Gk44Gq44GMLOOChOOBmeOBsuOCjQ0KK+OBn+OBi+OCguOBqCzjgojjgZfjgY0NCivjgZ/jgYvjgoDjgoks44Gu44G244GL44GkDQor44Gf44GL44GK44GLLOOBlOOBhg0KK+OBn+OBi+OBmeOBjizjga/jgovjgZMNCivjgZ/jgYvjgoQs44Gy44Gn44GC44GNDQor44Gf44GL44KE44G+LOOBsuOCjeOChuOBjQ0KK+OBjeOBn+OBr+OCiSzjgZHjgpPjgYTjgaENCivjgZ/jgZHjgaAs44GP44Gr44Gy44GnDQor44Gf44GR44GgLOOBvuOBleOBsuOCjQ0KK+OBn+OBkeOBr+OBqizjgb7jgZXjgYvjgaQNCivjgZ/jgZHjgb7jgaQs44G+44GV44G/DQor44Gf44GR44GK44GLLOOBv+OBruOCiw0KK+OBhOOBl+OBi+OCjyzjgoLjgajjgbXjgb8NCivjgZ/jgZHjgZfjgZ8s44Gq44GK44GNDQor44Gf44GR44Gf44GrLOOBruOBtuOChuOBjQ0KK+OBn+OBkeOBhuOBoSzjgZXjgajjgZcNCivjgZ/jgZHjgYbjgaEs44GV44Go44GXDQor44Gf44GR44KE44G+LOOBn+OBkeOBlw0KK+OBn+OBkeOBluOCjyzjgY3jgojjgZgNCivjgZ/jgY3jgZbjgo8s44Gk44Go44KADQor44Gf44GN44GW44KPLOOBoeOBi+OCiQ0KK+OBn+OBvuOBhCzjgajjgoLjgobjgY0NCivjgZ/jgarjga/jgZcs44Gu44G244KG44GNDQor44Gf44Gq44GLLOOBkeOCk+OBn+OCjeOBhg0KK+OBn+OBquOBiyzjgZPjgZnjgZENCivjgZ/jgarjgYss44Gy44KN44KG44GNDQor44Gf44Gq44GLLOOBsuOCjeOBlw0KK+OBn+OBquOBiyzjgZHjgYTjgZMNCivjgZ/jgarjgYss44KC44Go44GNDQor44Gf44Gq44GLLOOBm+OBhOOBmA0KK+OBn+OBquOBiyzjgYvjgZrjgbLjgagNCivjgZ/jgarjgYss44KG44GG44GTDQor44Gf44Gq44GLLOOBiOOBhOOBhOOBoQ0KK+OBn+OBquOBiyzjgYjjgYTjgZgNCivjgZ/jgarjgYss44Gk44Gt44Gy44KNDQor44Gf44Gq44GLLOOBvuOBleOBsuOCjQ0KK+OBn+OBquOBiyzjga7jgorjgbLjgo0NCivjgZ/jgarjgYss44GL44Ga44Gq44GKDQor44Gf44Gq44GLLOOBruOBvOOCiw0KK+OBhOOBl+OBoCzjgZHjgpPjgoQNCivjgZ/jgarjgYss44GL44Ga44GKDQor44Gf44Gr44GQ44GhLOOBl+OBkuOCiw0KK+OBn+OBq+OBkOOBoSzjgZHjgpPjgYTjgaENCivjgZ/jgavjgYQs44KG44KK44GTDQor44Gf44Gr44KA44KJLOOBv+OBoeOCiA0KK+OBn+OBq+OBiuOBiyzjgajjgoLjgZMNCivjgZ/jgpPjga4s44KG44GN44GKDQor44Gf44Gs44G+LOOBvuOCguOCiw0KK+OCiOOBk+OChOOBvizjgo/jgZ/jgosNCivjgZ/jgZfjgo0s44GC44GN44KJDQor44Gf44GX44KNLOOBkeOCk+OBhOOBoQ0KK+OBn+OBpizjgbLjgafjgagNCivjgZ/jgYbjgoks44G+44GT44GoDQor44Gf44Ge44GILOOChuOBhuOBkw0KK+OBn+OBmuOBkSzjgb7jgZPjgagNCivjgabjgpPjgoIs44GL44KI44GTDQor44Gm44KJ44GgLOOBoeOBiOOBkw0KK+OBpuOCieOCguOBqCzjgYjjgYTjgZgNCivjgabjgonjgYrjgYss44GR44GEDQor44Gm44Ga44GLLOOBsuOCjeOChuOBjQ0KK+OBqOOBkOOBoSzjgZjjgoXjgpPjgZMNCivjgajjgYbjgb4s44GT44GG44GE44GhDQor44Go44GG44G+LOOBsuOCjeOChOOBmQ0KK+OBqOOBiuOChOOBvizjgYvjgZrjgobjgY0NCivjgajjgY3jgYrjgYss44Gf44GL44GX44GSDQor44Gf44Gr44KE44G+LOOBsuOBp+OBguOBjQ0KK+OBv+OBhuOCiSzjgZ3jgYbjgYTjgaENCivjgajjgY/jgoks44GL44Ga44GKDQor44Go44GP44KE44G+LOOBsuOCjeOChA0KK+OBqOOBv+OBhOOBlyzjgY/jgavjgbLjgZMNCivjgajjgb/jgYvjgo8s44Gu44KK44GTDQor44Go44G/44Gq44GMLOOBguOBpOOBlw0KK+OBqOOBv+OBnyzjgbXjgb/jgYgNCivjgajjgb/jgZ8s44KC44Go44KI44GXDQor44GK44GK44KC44KKLOOBvuOBleOChuOBjQ0KK+OBqOOCguOBnyzjgbLjgafjgbLjgZMNCivjgajjgoLjga4s44GR44GE44GYDQor44Go44KK44GL44GELOOBquOBiuOBjQ0KK+OBqOOCiuOBhuOBvyzjgojjgZfjga7jgbYNCivjgajjgaTjgYss44GC44KE44GTDQor44Go44KI44GgLOOBkeOBhOOBhOOBoQ0KK+OBqOOCiOOBoCzjgb/jgY3jgbLjgo0NCivjgajjgojjgYrjgYss44Gf44GP44Gu44G2DQor44Gk44Gh44GgLOOBk+OBhuOBmA0KK+OBpOOBoCzjgZPjgYbjgYTjgaENCivjgaTjgZjjgZ/jgass44G+44GV44Gk44GQDQor44Gk44GL44KC44GoLOOCiOOBl+OBpuOCiw0KK+OBpOOBi+OCguOBqCzjgbLjgo3jgYLjgY0NCivjgaTjgYvjgo/jgY0s44G+44GV44Gf44GLDQor44Gk44KL44G+44GNLOOCiOOBhuOBkw0KK+OBhOOBoeOBsOOCk+OBjOOBmyzjgobjgY3jgZMNCivjgZXjgYvjgYQs44G/44G744GTDQor44GG44Gh44GgLOOBi+OBmuOBsuOCjQ0KK+OBi+OBquOBiuOBiyzjgZPjgYbjgbjjgYQNCivjgYbjgaHjgaAs44Gf44Gk44KEDQor44GG44Gh44GG44G/LOOBquOBiuOBsuOBkw0KK+OBhuOBoeOChOOBvizjgbXjgb/jgZ/jgYsNCivjgYbjgaHjgoTjgb4s44KG44GNDQor44GG44GgLOOBguOBpOOBkw0KK+OBhuOBoOOBjOOCjyzjgZ/jgo3jgYYNCivjgYrjgZfjgb4s44GC44Gk44GTDQor44GG44GI44GgLOOBiOOBhOOBiw0KK+OBhuOBiOOBoCzjgojjgZfjgb/jgaQNCivjgYbjgYjjga/jgoks44Gy44Gn44KG44GNDQor44GG44GI44KA44KJLOOBvuOBleOBjQ0KK+OBhuOBiOOBrizjgYrjgZXjgoANCivjgYbjgYjjga4s44Gy44KN44Gu44KKDQor44GG44GI44GZ44GOLOOBvuOBleOBvw0KK+OBhuOBiOOBpOOBjSzjgZ/jgYTjgaENCivjgYbjgYvjgo8s44G+44GV44Gy44GnDQor44GG44G+44Ga44KBLOOBl+OCk+OChA0KK+OBhuOCgeOBr+OCiSzjgajjgZfjgYoNCivjgYbjgoHjgoDjgoks44Gy44KN44G144G/DQor44GG44KB44GW44KPLOOBsuOCjeOBlw0KK+OBhuOBrizjgbLjgo3jgZcNCivjgYbjga4s44Gy44GV44KEDQor44GG44KJ44KC44GoLOOBkeOBhA0KK+OBhuOCi+OBvizjgb7jgZXjgbXjgb8NCivjgYbjgZfjgbAs44G/44Gu44KLDQor44Gq44GM44GfLOOCiuOCheOBhuOBnw0KK+OBhuOBl+OBkOOBlSzjgajjgZfjgYLjgY0NCivjga/jgZvjgYzjgo8s44KI44GX44GC44GNDQor44GV44GL44G+44GNLOOChuOCig0KK+OBhuOCj+OBuSzjgb7jgZXjgobjgY0NCivjgo/jgaAs44GC44GN44GTDQor44KP44GL44GKLOOBkeOBhOOBmA0KK+OCj+OBi+OBiizjgozjgYTjgZMNCivjgo/jgY3jgZ8s44KI44GG44GTDQor44GE44Gu44G+44GfLOOBsuOCjeOBvw0KK+OCj+OBj+OBhCzjgb7jgZXjgoQNCivjgo/jgZfjgZbjgo8s44GR44GE44GTDQor44KP44GX44Ga44GLLOOBk+OBhuOBmA0KK+OCj+OBn+OBuSzjgb7jgZXjgajjgZcNCivjgo/jgZ/jgarjgbks44Gu44KK44KG44GNDQor44KP44Gf44Gq44G5LOOBi+OBmuOBsuOCjQ0KK+OCj+OBn+OBquOBuSzjgZfjgZLjgosNCivjgo/jgZ/jgarjgbks44Gf44GL44GKDQor44KP44Gf44Gq44G5LOOBpOOCiOOBlw0KK+OCj+OBn+OBquOBuSzjgajjgoLjgobjgY0NCivjgo/jgZ/jgarjgbks44Gg44GE44GhDQor44KP44Gf44Gq44G5LOOBsuOBp+OBjQ0KK+OCj+OBn+OBquOBuSzjgbLjgo3jgYvjgZoNCivjgo/jgZ/jgarjgbks44Gy44KN44G/DQor44Go44KI44GfLOOBsuOBqOOBlw0KK+OCj+OBn+OCiizjgZHjgYTjgZMNCivjgajjgb/jgoTjgZks44Go44GX44Gy44GVDQor44KE44GI44GM44GNLOOCiOOBl+OBguOBjQ0KK+OChOOBjizjgb/jgojjgZMNCivjgoTjgY4s44KI44GX44G+44GVDQor44KE44GO44Gs44G+LOOBoOOBhOOBmeOBkQ0KK+OChOOBjyzjgYLjgY3jgagNCivjgoTjgb7jgaAs44GL44Ga44Gy44GTDQor44KE44G+44GgLOOBvuOBjQ0KK+OChOOBvuOBoCzjgojjgYbjgZMNCivjgoTjgb7jgY7jgZcs44GC44Gk44GXDQor44KE44G+44GQ44GhLOOBk+OBhuOBhOOBoQ0KK+OChOOBvuOBkOOBoSzjgajjgZfjgobjgY0NCivjgoTjgb7jgZDjgaEs44GL44GK44KLDQor44KE44G+44GQ44GhLOOBguOBjeOCiQ0KK+OChOOBvuOBk+OBlyzjgaDjgYTjgZnjgZENCivjgoTjgb7jgoLjgags44G+44GV44Gy44KNDQor44KE44G+44KC44GoLOOBkeOCk+OBmA0KK+OChOOBvuOCguOBqCzjgZ/jgZHjgYoNCivjgoTjgb7jgoLjgags44Gb44GE44GE44GhDQor44KE44G+44KC44GoLOOBl+OCheOBhuOBmA0KK+OBn+OBoeOBsOOBqizjgb7jgZXjgajjgZcNCivjgoTjgb7jgoLjgags44GY44KF44KTDQor44KE44G+44KC44GoLOOBkeOCk+OBhOOBoQ0KK+OBr+OCieOBn+OBqyzjgajjgoLjgZMNCivjgoTjgb7jgarjgYss44Gf44GL44GXDQor44KE44G+44GtLOOCiOOBl+OBteOBvw0KK+OChOOBvuOBl+OBnyzjgYLjgY3jgbLjgZMNCivjgoTjgb7jgZfjgZ8s44Gy44KN44GXDQor44KE44G+44GX44GfLOOBquOBiuOBkw0KK+OChOOBvuOBn+OBqyzjgZ/jgYvjgZcNCivjgoTjgb7jgYbjgaEs44Go44KC44GTDQor44KE44G+44GW44GNLOOBguOBjeOCiQ0KK+OChOOBqizjgbLjgo3jgYLjgY0NCivjgoTjgarjgbks44Gy44KN44GNDQor44KE44Gq44GM44KPLOOCiuOCh+OBhg0KK+OChOOBquOBjizjgajjgZfjgYLjgY0NCivjgoTjgarjgY7jgaAs44KK44KF44GG44GE44GhDQor44KE44GV44GLLOOBi+OBmuOBsuOBpw0KK+OChOOBmeOBoCzjgb7jgZXjgb/jgaQNCivjgoTjgZnjgbXjgY8s44KG44Gf44GLDQor44KE44GZ44GL44KPLOOBjeOCiOOBi+OBmg0KK+OCiOOBk+OBleOCjyzjgZ/jgY/jgoQNCivjgojjgZPjgZ8s44Gy44KN44GXDQor44KI44GT44GfLOOBi+OBmuOBsuOCjQ0KK+OBr+OCieOBoCzjgZPjgZnjgZENCivjgojjgZPjgYbjgaEs44G+44GV44Gy44KNDQor44KI44GT44GG44GhLOOBl+OCk+OBmeOBkQ0KK+OCiOOBk+OChOOBvizjgb7jgZPjgagNCivjgojjgZPjgoTjgb4s44GL44Ga44Gu44G2DQor44KI44Gt44GgLOOBquOBiuOBjQ0KK+OCiOOBreOBrizjgarjgYrjgb8NCivjgYvjgZXjga/jgoks44GV44Go44G/DQor44KI44GX44GgLOOBsuOBp+OBig0KK+OCiOOBl+OBoCzjgZjjgoXjgpMNCivjgojjgZfjgaAs44Gy44KN44GXDQor44KI44GX44GgLOOBquOBiuOBqA0KK+OCiOOBl+OBoCzjgbLjgo3jgZcNCivjgojjgZfjganjgoEs44GX44Ga44GLDQor44KI44GX44Gv44KJLOOBn+OBi+OBsuOCjQ0KK+OCiOOBl+OBhCzjgZXjgajjgosNCivjgojjgZfjgYQs44G+44GT44GoDQor44KI44GX44GL44KPLOOBl+OBiuOCig0KK+OCiOOBl+OBvyzjgZ/jgYTjgY0NCivjgojjgZfjga4s44G144G/44GKDQor44KI44GX44GuLOOChOOBmeOBlw0KK+OCiOOBl+OBrizjgajjgoLjgZMNCivjgojjgZfjgYrjgYss44GR44KT44GE44GhDQor44KI44GX44GK44GLLOOBk+OBhuOBhOOBoeOCjeOBhg0KK+OCiOOBl+OBn+OBkSzjgZ/jgaDjgZcNCivjgojjgZfjgZbjgo8s44Go44GX44GL44GkDQor44KG44Ga44Gv44KJLOOBk+OBhuOBmA0KK+OBnOOCk+OBkizjgYvjgZrjgZ/jgYsNCivjgZrjgZcs44G/44GKDQor44GU44G/LOOBsuOCjeOBjQ0KK+OBlOOBqOOBhizjgbLjgo3jgZcNCivjgYTjgZHjgaAs44Gf44GR44Gv44KLDQor44GE44G+LOOBvuOBleOBsuOCjQ0KK+OBguOBuSzjgb7jgarjgbYNCivjgYvjgajjgYYs44GX44GS44KLDQor44GL44KP44Gw44GfLOOBl+OBkuOCiw0KK+OBk+OBsOOChOOBlyzjgobjgY3jgbLjgZMNCivjgZPjgpPjgaks44GP44Gr44KA44GtDQor44GP44G8LOOBvuOBleOBsuOBkw0KK+OBj+OCieOCguOBoSzjgojjgYbjgZMNCivjgb7jgovjgoTjgb4s44KI44GX44GC44GNDQor44KC44KK44GL44GPLOOChuOBjeOBig0KK+OCgOOCieOBiuOBiyzjgbLjgo3jgobjgY0NCivjgarjgYzjgZfjgb4s44KI44GG44GTDQor44Gq44GLLOOBqOOBl+OChA0KK+OBquOBi+OBr+OCiSzjgZ/jgY/jgoQNCivjgarjgYvjgoDjgoks44Gk44KI44GXDQor44Gq44GL44GbLOOBqOOBvw0KK+OBquOCiuOBnyzjgbLjgZXjgYgNCivjgavjgZfjgoDjgoks44GI44G/44GTDQor44Gu44Gq44GLLOOBsuOBp+OBquOBig0KK+OBiuOBjOOCjyzjgojjgZfjgYoNCivjgYrjgZDjgoks44Go44GK44KLDQor44GK44GK44G/LOOBvuOBk+OBqA0KK+OBiuOBi+OBrizjgb7jgZXjgoQNCivjgZfjgb7jgaAs44GY44KF44KT44GYDQor44GX44G/44GaLOOBi+OBmuOBruOBl+OCkw0KK+OBl+OCgOOCiSzjgbLjgafjgobjgY0NCivjgZ/jgYvjga/jgZcs44G/44Gk44G+44GVDQor44Gf44GL44G+44GkLOOBkeOCk+OBhOOBoQ0KK+OBhuOBiOOBoCzjgoDjgaTjgYoNCivjgYbjgZgs44GU44GGDQor44GG44Gk44G/LOOBl+OCheOBhuOBhOOBoQ0KK+OBguOBuSzjgojjgYbjgYTjgaENCivjgZPjgpPjgaks44Gf44GL44GXDQor44Gf44GL44Gu44GG44GhLOOBkeOCk+OBleOBjw0KK+OBhOOBruOBhuOBiCzjgoDjga3jgbLjgo0NCivjgarjgYvjga/jgoks44Gy44Go44GXDQor44GC44Gg44GhLOOChuOBn+OBiw0KK+OBquOBi+OBrizjgbLjgo3jgY0NCivjgYLjgYTjgbAs44Gu44KK44GC44GNDQor44GC44GE44GwLOOBn+OBkeOBlw0KK+OBguOBhOOBsCzjgZXjgajjgZcNCivjgYLjgYTjgaAs44G+44GV44Gy44KNDQor44GC44GE44Gv44KJLOOBguOBpOOBlw0KK+OBguOBi+OBhOOBlyzjgb7jgZXjgYrjgb8NCivjgYLjgYvjgYTjgo8s44KI44GX44Gy44KNDQor44GC44GL44GK44GOLOOBqOOBl+OBsuOBpw0KK+OBguOBjeOBnyzjgaTjgojjgZcNCivjgYLjgb7jga4s44Gq44GK44GTDQor44GC44GK44GNLOOBsuOCjeOBkw0KK+OBguOBiuOBjSzjgobjgY3jgZMNCivjgYLjgYrjgazjgb4s44Gy44Go44GXDQor44GC44GK44KE44GOLOOBiOOBhOOBmA0KK+OBguOCieOBjSzjgYLjgY3jgokNCivjgYLjgorjgb7jgaEs44Go44GX44Gu44G2DQor44GC44KK44GfLOOBsuOBp+OBguOBjQ0KK+OBguOBleOBoCzjgabjgaTjgoQNCivjgYLjgZXjgYjjgaAs44Gf44GL44Gy44KNDQor44GC44GV44Gv44KJLOOCiOOBl+OBr+OCiw0KK+OBguOBleOBi+OCjyzjgYvjgZrjgbLjgZMNCivjgYLjgZXjgoLjgags44Gk44Go44KADQor44GC44GV44GuLOOChuOBn+OBiw0KK+OBguOBn+OBkOOBoSzjgbLjgo3jgZcNCivjgYLjgoTjgY0s44Gv44KL44GTDQor44Gw44GwLOOBl+OCheOCk+OBmeOBkQ0KK+OBsOOBsCzjgYvjgYrjgosNCivjgbDjgbAs44Gq44Gq44GTDQor44Gw44KTLOOBn+OBkeOBlw0KK+OBoOOBhOOBk+OBjyzjgb/jgaHjgogNCivjgaDjgaYs44GX44GS44Gy44GTDQor44GV44GuLOOBmOOCheOCk+OBhOOBoQ0KK+OBv+OBpOOBiuOBiyzjgZfjgZLjgY0NCivjgafjgpPjgaAs44GL44Ga44Gy44GTDQor44Gp44GELOOBiOOBvw0KK+OBiOOCk+OBqSzjgajjgoLjgbLjgZMNCivjgYjjgpPjgaks44KI44GG44GE44Gh44KN44GGDQor44GI44GW44KPLOOBquOCiuOBsuOBpw0KK+OBteOBmOOBiCzjgZ/jgZHjgbXjgb8NCivjgbXjgZjjgYQs44GL44Ga44Gy44KNDQor44G144GY44GELOOBvuOBleOBguOBjQ0KK+OBteOBmOOBvuOBjSzjgb7jgZXjgYvjgaQNCivjgbXjgZjjgoLjgags44G/44KPDQor44G144GY44KC44GoLOOBv+OBjeOBig0KK+OBteOBmOOCgOOCjSzjgZPjgYbjgZgNCivjgoLjgo3jgZrjgb8s44GL44KT44GYDQor44G144GY44GV44KPLOOBkeOCk+OBmA0KK+OBteOBmOOBnyzjgbLjgo3jgobjgY0NCivjgbXjgYvjgZss44Gf44Gk44KEDQor44G144GP44GgLOOBl+OBm+OBhA0KK+OBteOBj+OBqeOCgSzjgZ/jgYvjgZcNCivjgbXjgY/jgYQs44Gy44GV44GXDQor44G144GP44Gq44GMLOOBteOBv+OBsuOBlQ0KK+OBteOBj+OBl+OBvizjgbLjgafjgYoNCivjgbXjgY/jgZbjgo8s44G+44KK44GLDQor44G144KL44Gw44KE44GXLOOBguOBjeOCiQ0KK+OBteOCi+OBi+OCjyzjgbLjgafjgY0NCivjgbXjgovjgYvjgo8s44GC44GR44G/DQor44GU44GGLOOBr+OBqg0KK+OBlOOBvuOCiyzjgZnjgZnjgoANCivjgZTjgajjgYYs44GX44KH44GGDQor44GU44Go44GGLOOBn+OBpOOChA0KK+OBlOOBqOOBhizjgaHjgZrjgYsNCivjga7jgoLjgags44GL44GK44KLDQor44Gv44GO44KP44KJLOOCiuOCheOBhuOBnw0KK+OBr+OBhOOChOOBvizjgY3jgofjgYbjgZMNCivjga/jgb4s44GL44Ga44G/44GhDQor44Gv44G+44GhLOOBl+OCheOBhuOBhOOBoQ0KK+OBr+OBvuOBoCzjgarjgYrjgbLjgZUNCivjga/jgb7jgZ/jgass44GX44GS44GKDQor44Gv44Gq44GELOOChOOBmeOBsuOBqA0KK+OBr+OBquOBnyzjgbLjgonjgY8NCivjga/jga3jgZgs44Gy44KN44GTDQor44Gv44KT44GW44KPLOOBvuOBleOBsuOBkw0KK+OBr+OCiSzjgb/jgbsNCivjga/jgoks44GX44KT44GYDQor44Gv44KJ44GgLOOBi+OBmuOBsuOBpw0KK+OBr+OCieOBoCzjgY3jgojjgZcNCivjga/jgZvjgYzjgo8s44KG44Gf44GLDQor44Gv44Gb44GM44KPLOOBquOBiuOBkw0KK+OBr+OBm+OBjOOCjyzjgabjgaTjgoQNCivjga/jgZfjgZDjgaEs44G+44GV44KI44GXDQor44Gv44GX44KC44GoLOOChOOBmeOChuOBjQ0KK+OBlOOBqOOBhizjgZHjgYQNCivjgYvjgZjjgo/jgoks44KI44GX44GTDQor44Gv44GZ44G/LOOBpOOBkOOBruOCig0KK+OBi+OBn+OChOOBquOBjizjgYjjgYTjgYTjgaENCivjga/jgZ/jgZHjgoTjgb4s44GX44KT44GE44GhDQor44KA44KJ44GELOOBv+OBpOOChuOBjQ0KK+OBr+OBn+OBqyzjgorjgoXjgYbjgYTjgaENCivjga/jgaPjgajjgoos44KE44GZ44Gu44G2DQor44Gv44Gj44Go44KKLOOBn+OBi+OChuOBjQ0KK+OBr+OChOOBlyzjgZ/jgYvjgobjgY0NCivjgYrjgYrjgZnjgb8s44G+44GV44GTDQor44Gv44KE44GXLOOBi+OBmuOBquOCig0KK+OBr+OChOOBlyzjgojjgZfjga7jgbYNCivjga/jgoTjgZfjgaAs44GV44GNDQor44Gy44GMLOOBn+OBkeOBig0KK+OBsuOBjOOBlyzjgorjgoXjgYbjgZnjgZENCivjgbLjgYzjgZfjgaAs44GX44KF44GG44GE44GhDQor44Go44KI44GgLOOChuOBhuOBhOOBoeOCjQ0KK+OBsuOBrizjgZ/jgZHjgbLjgZMNCivjgbLjgoks44Gm44Gk44KEDQor44Gy44KJ44KC44GoLOOBmOOCheOCk+OBkw0KK+OBsuOCieOBiizjgb7jgZXjgagNCivjgbLjgonjgYos44G+44GV44KG44GNDQor44Gy44KJ44GfLOOBquOBiuOBvw0KK+OBsuOCieOChOOBvizjgZ/jgZHjgZcNCivjgbLjgo3jgYQs44Gf44GL44GXDQor44Gy44KN44GL44KPLOOBruOCiuOBi+OBmg0KK+OBsuOCjeOBi+OCjyzjgojjgZ/jgo3jgYYNCivjgbLjgo3jgb7jgZks44GL44Ga44KG44GNDQor44Gy44KN44GbLOOBv+OBpOOCiw0KK+OBsuOCjeOBmyzjgZ/jgYvjgYoNCivjgbLjgZfjgoQs44GV44Go44GXDQor44G744GG44GX44KH44GGLOOBguOBjeOBkw0KK+OBu+OCk+OBoCzjgb/jgbvjgZMNCivjga/jgoTjgZcs44Gu44Ge44KADQor44G744KT44G+LOOBn+OBkeOBlw0KK+OBu+OCiuOBkOOBoSzjgabjgovjgYoNCivjgbvjgorjgYQs44Gy44KN44G/DQor44G744GXLOOBguOBjeOBsuOBkw0KK+OBu+OBneOBhCzjgYvjgaTjgoQNCivjgbvjgZ3jgb8s44KE44GZ44GKDQor44G744Gj44GfLOOBvuOBleOBsuOBpw0KK+OBteOBj+OCjeOBhCzjgZHjgpPjgZgNCivjgbXjgovjgoQs44GC44GN44Gy44GoDQor44GE44G244GLLOOBneOBhuOBhOOBoQ0KK+OBhOOBoeOBsCzjgZ/jgYvjgZcNCivjgYTjgaHjga/jgoks44Gy44KN44GXDQor44GE44Gh44GL44KPLOOBsuOCjeOBlw0KK+OBhOOBoeOCgOOCiSzjgZjjgoXjgpPjgYTjgaHjgo0NCivjgYTjgaHjga7jgZvjgY0s44Go44GX44Gy44KNDQor44GE44GE44GgLOOBqOOBl+OChA0KK+OBhOOBhOOBoCzjgZjjgoXjgpPjgZMNCivjgYTjgYTjgZjjgb4s44KI44GG44GTDQor44GX44Gu44Gv44KJLOOBr+OBmOOCgQ0KK+OBhOOBkeOBoCzjgorjgYgNCivjgYTjgZHjgaAs44KG44GNDQor44GE44GR44GgLOOChuOBn+OBiw0KK+OBhOOBkeOBoCzjgojjgYbjgZMNCivjgYTjgZHjgZbjgo8s44GL44Ga44Gf44GLDQor44GE44G+44GELOOBvuOChuOBvw0KK+OBhOOBvuOBhCzjgZHjgYTjgZ8NCivjgYTjgb7jgYQs44GP44Gr44Gy44GTDQor44GE44G+44GNLOOBv+OBruOCiw0KK+OBhOOBvuOCgOOCiSzjgZHjgpPjgZnjgZENCivjgYTjgoLjgags44GX44KH44GG44GE44GhDQor44GC44G5LOOCiOOBl+OChOOBmQ0KK+OBhOOBquOBoCzjgobjgY3jgZMNCivjgYTjga7jgYbjgYgs44Go44KC44Gy44KNDQor44GE44Gu44GG44GILOOBn+OBi+OBlw0KK+OBhOOBruOBhuOBiCzjgb7jgZXjgbLjgZMNCivjgYTjga7jgYbjgYgs44GL44Ga44GKDQor44GE44KK44GILOOCiOOBl+OBsuOBkw0KK+OBpOOCi+OBiuOBiyzjgbLjgajjgZcNCivjgYrjgYrjga/jgZcs44Gy44GV44Go44GXDQor44GE44GX44GgLOOChuOBhuOBmA0KK+OBhOOBl+OBoCzjgZHjgpPjgZgNCivjgYTjgZfjgaAs44GT44GG44GYDQor44GE44GX44GgLOOBr+OBmOOCgQ0KK+OBhOOBl+OBkOOCjSzjgojjgZfjgY0NCivjgYTjgZfjga/jgoks44GX44GS44GKDQor44GE44GX44Gv44KJLOOBmOOCheOCk+OBkw0KK+OBhOOBl+OBhCzjgb/jgaTjgbLjgZMNCivjgYTjgZfjgYvjgo8s44G+44GV44Gu44KKDQor44GE44GX44GL44KPLOOBguOBjeOCiQ0KK+OBhOOBl+OCj+OBnyzjgb7jgZXjga7jgooNCivjgYTjgajjgYYs44Gf44GL44GXDQor44GE44Go44GGLOOBguOBjeOBkw0KK+OBhOOBqOOChOOBvizjgajjgZfjgYoNCivjgYTjgaTjgY0s44GL44Ga44Gy44KNDQor44GE44KP44GNLOOBk+OBhuOBn+OCjeOBhg0KK+OBhOOCj+OBleOBjSzjgZ/jgZHjgZcNCivjgYTjgZrjgaQs44KG44GG44GYDQor44GY44G2LOOBiOOBv+OBkw0KK+OBi+OBqeOBhCzjgabjgovjgoTjgZkNCivjgYLjgaDjgaEs44GR44KT44GYDQor44GL44GELOOBn+OBi+OChuOBjQ0KK+OBi+OBhOOBmyzjgbLjgo3jgYLjgY0NCivjgYvjgYTjgZrjgYss44Gy44KN44GTDQor44GL44GY44KP44KJLOOBsuOCjeOBlw0KK+OBi+OBjSzjgYvjgaTjgajjgZcNCivjgYvjgY3jgb8s44GT44GG44GYDQor44GZ44GO44GfLOOCjOOBhOOBjQ0KK+OBi+OBj+OBn+OBqyzjgoTjgZnjgZMNCivjgYvjgb/jgbDjgoTjgZcs44GL44Gk44Gy44GTDQor44GL44G/44GM44GNLOOBruOCiuOBsuOBpw0KK+OBi+OBv+OChCzjgZXjgajjgZcNCivjgYvjgoLjgaAs44GT44GG44GE44GhDQor44GL44KC44GoLOOBn+OCguOBpA0KK+OBi+OCk+OBsOOChOOBlyzjgoLjgajjgbLjgo0NCivjgYvjga3jgZMs44GX44KT44GUDQor44GL44Gt44GTLOOBv+OBpOOChA0KK+OBi+OBreOBkyzjgY/jgavjgbLjgZMNCivjgYvjga3jgZMs44G/44Gk44GKDQor44GL44Gr44GV44KPLOOBn+OBpOOChA0KK+OBi+OCiyzjgZ/jgYvjgobjgY0NCivjgYvjgZfjgo/jgY4s44Gm44Gk44KEDQor44GL44GZ44G/LOOCiOOBhuOBhOOBoeOCjeOBhg0KK+OBi+OBn+OBjuOCiizjgarjgYrjgobjgY0NCivjgYvjgajjgYYs44G/44Gk44Gy44KNDQor44GL44Go44GGLOOBguOBpOOBlw0KK+OBi+OBqOOBhizjgobjgYbjgZMNCivjgYvjgajjgYYs44Gu44G244GKDQor44GL44Go44GGLOOBn+OBpOOCjeOBhg0KK+OBn+OBkOOBoSzjgZjjgoXjgpPjgZMNCivjgYvjgajjgYYs44GR44KT44GYDQor44GL44Go44GGLOOBk+OBhg0KK+OBi+OBqOOBhizjgZfjgpPjgYTjgaENCivjgYvjgaTjgoks44GC44GN44KJDQor44Gd44GULOOBkeOCkw0KK+OBi+OCj+OBsuOBqCzjgb7jgZPjgagNCivjgYvjgo/jgYQs44KK44GI44GTDQor44GL44KP44GL44G/LOOBk+OBhuOBmA0KK+OBi+OCj+OBvyzjgZfjgZLjgosNCivjgYvjgo/jgoDjgoks44GX44KT44GYDQor44GL44KP44KA44KJLOOBpuOCi+OBjQ0KK+OBi+OCj+OBleOBjSzjgbLjgo3jgZcNCivjgYvjgo/jgZXjgY0s44Go44KC44GL44GaDQor44GL44KP44GG44GhLOOBvuOBleOBguOBjQ0KK+OBi+OBpOOBjSzjgYLjgY3jgajjgoINCivjgY3jgaAs44G444GE44GYDQor44GN44Gp44GT44KNLOOBsuOCjeOBlw0KK+OCguOCiizjgZHjgpPjgZgNCivjgY3jgY/jgaEs44G+44GT44GoDQor44GN44GP44GM44KPLOOBv+OBiA0KK+OBjeOCgOOCiSzjgb/jgaTjgbLjgo0NCivjgY3jgoDjgoks44GV44Go44KLDQor44GN44KA44KJLOOBn+OBkeOBlw0KK+OBjeOCgOOCiSzjgZ/jgY/jgb8NCivjgY3jga7jgZfjgZ8s44Go44KI44GNDQor44GN44Gu44GX44GfLOOCiOOBl+OBguOBjQ0KK+OBjeOBruOBl+OBnyzjgojjgZfjga/jgosNCivjgY3jga7jgZfjgZ8s44KG44GL44KKDQor44GN44GX44GgLOOChuOBjeOBkw0KK+OBjeOBl+OBi+OCjyzjgb7jgZXjgbLjgZMNCivjgY3jgZ8s44Go44GX44GKDQor44GN44Gf44GQ44GhLOOBkeOBhOOBmeOBkQ0KK+OBguOBvuOBrizjgb/jgaHjgogNCivjgY3jgZ/jgoDjgoks44G+44Gq44G2DQor44GN44Gf44KE44G+LOOBoeOBsuOCjQ0KK+OBk+OBsOOChOOBlyzjgarjgYrjgagNCivjgZPjgbDjgoTjgZcs44KC44Go44Gu44KKDQor44GT44Gw44KE44GXLOOBsuOCjeOChuOBjQ0KK+OBk+OBsOOChOOBlyzjgoTjgZnjgabjgosNCivjgZPjgbDjgoTjgZcs44Go44KC44GC44GNDQor44GT44Gw44KE44GXLOOBmOOCheOCk+OBmA0KK+OBguOCgeOBl+OBnyzjgarjgYrjgY0NCivjgZPjgbDjgoTjgZcs44GT44GG44GE44GhDQor44GT44Gw44KE44GXLOOBsuOCjeOBvw0KK+OBk+OBsOOChOOBlyzjgZHjgpPjgZgNCivjgZPjgbDjgoTjgZcs44GN44KI44Gf44GLDQor44GT44Gw44KE44GXLOOBvuOChuOBvw0KK+OBk+OBsOOChOOBlyzjgaDjgYTjgZnjgZENCivjgZPjgbDjgoTjgZcs44Gf44GL44Gy44KNDQor44GK44GgLOOBvuOBleOBsuOBkw0KK+OBk+OBvOOCiizjgbLjgafjgb8NCivjgZPjgaDjgYTjgoks44Gu44G244Gy44KNDQor44GT44Gg44G+LOOBm+OBhOOBmA0KK+OBi+OCj+OBkOOBoSzjgYLjgaTjgZcNCivjgZPjgaDjgaYs44G/44Gk44KLDQor44GT44GMLOOBruOCiuOChuOBjQ0KK+OBk+OBjCzjgYLjgY3jgokNCivjgZPjgYzjga3jgb7jgoss44G+44GV44G/DQor44GT44Gv44KJLOOBqOOCguOBquOCig0KK+OBk+OBhuOBoCzjgZHjgpPjgYTjgaENCivjgZPjgpPjga4s44G+44Gq44G2DQor44GT44GW44GELOOBk+OBhuOBhOOBoQ0KK+OBk+OBhOOBkSzjgYLjgY3jgYoNCivjgZPjgYTjgZrjgb8s44G+44GV44GKDQor44GT44GY44G+LOOChOOBmeOCjQ0KK+OBk+OBmOOBvizjgZHjgpMNCivjgZPjgb7jgaQs44Gf44GL44GXDQor44GT44KC44KKLOOCiOOBl+OBn+OBiw0KK+OBk+OCk+OBqSzjgajjgoLjga7jgooNCivjgZPjgpPjgaks44GE44GV44KADQor44GT44KT44GfLOOBkeOCk+OBhOOBoQ0KK+OBk+OBn+OBiyzjgb/jgaTjga7jgooNCivjgZPjgZ/jgZEs44G+44GV44GNDQor44GT44KE44G+LOOBqOOBhuOCjeOBjw0KK+OBj+OBvCzjgbLjgo3jgZcNCivjgY/jgbzjgY0s44GE44GP44GTDQor44GP44G844GfLOOCiOOBhuOBhOOBoQ0KK+OBj+OBjCzjgZ/jgaTjgZgNCivjgY/jgb7jgYzjgYQs44KE44GZ44Gq44KKDQor44GP44Gr44KC44KKLOOCiOOBhuOBhOOBoQ0KK+OBj+OCieOCguOBqCzjgZjjgoXjgpMNCivjgY/jgonjgZXjgo8s44GC44Gk44GXDQor44GP44KJ44GX44GqLOOBi+OBpOOBsuOBqA0KK+OBj+OCieOBnyzjgZXjgajjgZcNCivjgY/jgorjgoLjgags44Gf44GR44GKDQor44GP44KK44GfLOOCiOOBl+OBvuOBlQ0KK+OBj+OCjeOBoCzjgajjgZfjgYvjgZoNCivjgY/jgo3jgaAs44Gy44Gn44GC44GNDQor44GP44KN44GL44KPLOOBl+OCk+OBlA0KK+OBj+OCjeOBjSzjgaTjgojjgZcNCivjgY/jgo3jgZXjgY0s44KK44KH44GG44GE44GhDQor44GP44KN44GV44KPLOOBsuOCjeOChuOBjQ0KK+OBj+OCiuOCheOBhizjgZHjgpPjgZgNCivjgY/jgo/jgZ8s44G+44GV44Gy44GTDQor44GP44Ga44G/LOOBn+OBi+OBsuOCjQ0KK+OBvuOBtuOBoSzjgZ/jgY/jgb8NCivjgb7jgYjjgaAs44KE44GZ44Gy44KNDQor44G+44GI44GgLOOBkeOBhOOBlw0KK+OBvuOBiOOBjOOCjyzjgYLjgY3jgbLjgZMNCivjgb7jgYjjgYvjgo8s44KE44GZ44Go44GXDQor44G+44GN44GKLOOBm+OBhOOBhOOBoQ0KK+OBvuOCgeOBr+OCiSzjgYLjgY3jgbLjgo0NCivjgb7jgZXjgaAs44Gy44KN44KG44GNDQor44G+44GZ44GgLOOCiOOBhuOBmeOBkQ0KK+OBvuOBmeOBoCzjgbLjgo3jgZcNCivjgb7jgZnjgaAs44Gf44GL44GXDQor44G+44GZ44GgLOOBqOOCguOBkw0KK+OBvuOBmeOChOOBvizjgorjgaTjgZMNCivjgb7jgaTjgaAs44KA44Gk44G/DQor44G+44Gk44GgLOOBquOBiuOBvw0KK+OBvuOBpOOBiOOBoCzjgaTjgojjgZcNCivjgb7jgaTjgYQs44Gf44GL44G+44GVDQor44G+44Gk44KC44GoLOOBkeOCk+OBn+OCjeOBhg0KK+OBvuOBpOOCguOBqCzjgZHjgYTjgZgNCivjgb7jgaTjgoLjgags44Gb44GE44GE44GhDQor44G+44Gk44KC44GoLOOChuOBhuOBhOOBoQ0KK+OBvuOBpOOCguOBqCzjgZfjgoXjgYbjgYTjgaENCivjgb7jgaTjgoLjgags44KI44GG44Gf44KN44GGDQor44G+44Gk44Gq44GMLOOBvuOBleOChuOBjQ0KK+OBvuOBpOOBrizjgoTjgZnjgbLjgZMNCivjgb7jgaTjga4s44GX44KT44GE44GhDQor44G+44Gk44GK44GLLOOBv+OBoeOBkw0KK+OBvuOChuOBvyzjgYLjgY3jgokNCivjgoHjgYvjgZ8s44Gy44KN44GNDQor44KB44KJLOOBk+OBhuOBmA0KK+OBv+OBn+OBqyzjgZ/jgo3jgYYNCivjgb/jgZ/jgass44G/44Gh44Gy44GoDQor44G/44GoLOOChuOBv+OBkw0KK+OBv+OChOOBjOOBvyzjgZfjgZLjgbLjgZUNCivjgYTjgYrjgY0s44G+44GV44GC44GNDQor44G/44KE44KC44GoLOOBguOBjeOBsuOCjQ0KK+OBv+OChOOCgOOCiSzjgajjgoLjgobjgY0NCivjgb/jgoTjga4s44Gf44GL44GC44GNDQor44G/44KE44GG44GhLOOBvuOBleOBr+OCiw0KK+OBv+OChOOBluOBjSzjgb7jgZXjgYvjgaQNCivjgoLjgaHjgZrjgY0s44KG44GNDQor44KC44KC44GELOOBsuOBp+OBvuOBlQ0KK+OCguOCiizjgobjgYsNCivjgoLjgoos44GP44G/44GTDQor44KC44KK44KC44GoLOOCiOOBhuOBhOOBoQ0KK+OCguOCiuOCguOBqCzjgoDjgaTjgZMNCivjgoLjgorjgYrjgYss44GR44KT44GYDQor44KC44KK44GV44KPLOOBqOOCguOBsuOCjQ0KK+OCguOCiuOBnyzjgYvjgZrjgojjgZcNCivjgoLjgorjgZ8s44Gy44KN44Gu44G2DQor44KC44KK44GfLOOBguOBjeOBsuOBkw0KK+OCguOCiuOBnyzjgZfjgpPjgoQNCivjgoLjgorjgoTjgb4s44Gf44GL44GXDQor44KC44KK44KE44G+LOOBn+OBpOOBsuOBkw0KK+OCguOBpuOBjizjgajjgYrjgosNCivjgoDjgonjgYvjgb8s44G+44GV44GC44GNDQor44GC44GV44GuLOOBkeOCk+OBlA0KK+OBguOChuOBi+OCjyzjgZXjgajjgZcNCivjgoDjgonjgYos44Gg44GE44GZ44GRDQor44KA44KJ44GK44GLLOOBl+OBkuOCiw0KK+OCgOOCieOBnyzjgajjgoLjgYvjgZoNCivjgoDjgZfjgYLjgZEs44GI44G/44GTDQor44KA44GfLOOBsuOBleOBlw0KK+OBquOBueOBhCzjgb7jgZXjgbLjgo0NCivjgarjgYzjgYQs44GT44GG44GE44GhDQor44Gq44GM44GELOOBvuOBleOBkw0KK+OBquOBjOOBv+OBrSzjgZXjgobjgooNCivjgarjgYzjgZXjgo8s44Gf44Gg44GXDQor44Gq44GM44GfLOOBpuOBpOOBig0KK+OBquOBjOOChOOBvizjgabjgaTjgoQNCivjgarjgZDjgoks44KG44G/44GTDQor44Gq44GE44Go44GGLOOBsuOCjeOBlw0KK+OBquOBi+OBjOOCjyzjgorjgoXjgYbjgZgNCivjgarjgYvjgYzjgo8s44KG44G/44GTDQor44Gq44GL44GM44KPLOOChOOBmeOBlw0KK+OBquOBi+OBjOOCjyzjgb7jgZXjgbLjgo0NCivjgarjgYvjga/jgoks44Gf44GL44GTDQor44Gq44GL44GELOOBl+OBkuOCiw0KK+OBquOBi+OBhCzjgZ/jgYvjgbLjgo0NCivjgarjgYvjgZjjgb4s44Go44GK44KLDQor44Gq44GL44GY44G+LOOChuOBv+OBkw0KK+OBquOBi+OBmOOBvizjgYvjgaTjgoQNCivjgZXjgo/jgaAs44G/44GI44GTDQor44Gq44GL44KA44KJLOOBguOBjeOBruOBtg0KK+OBsOOCk+OBsCzjgabjgaTjgoQNCivjgarjgYvjgoDjgoks44Gy44Gn44Gy44GoDQor44Gq44GL44KA44KJLOOBk+OBhuOBhOOBoQ0KK+OBquOBi+OCgOOCiSzjgb7jgZXjga7jgooNCivjgarjgYvjgoDjgoks44GL44Ga44GKDQor44Gq44GL44KA44KJLOOBvuOCig0KK+OBquOBi+OCgOOCiSzjgZ/jgZHjgZcNCivjgarjgYvjgoDjgoks44GC44GN44Gy44KNDQor44Gq44GL44GuLOOBteOBv+OBkw0KK+OBquOBi+OBrizjgbLjgo3jgYvjgZoNCivjgarjgYvjgYos44Gu44G244KG44GNDQor44Gq44GL44GX44G+LOOChOOBmeOBsuOCjQ0KK+OBquOBi+OBnyzjgZPjgYbjgYTjgaENCivjgarjgYvjgZ8s44GC44GN44GTDQor44Gq44GL44KE44G+LOOBquOBiuOChOOBmQ0KK+OBquOBi+OChOOBvizjgbLjgo3jgbXjgb8NCivjgarjgYvjgoTjgb4s44GC44GN44Gy44KNDQor44Gq44GL44KE44G+LOOBkeOBhOOBkw0KK+OBquOBi+OBluOCjyzjgYvjgaTjgoQNCivjgarjgYvjgZbjgo8s44GR44GE44GZ44GRDQor44Gq44GM44GK44GLLOOChuOBn+OBiw0KK+OBquOBquOBl+OCgyzjgojjgZfjgbLjgo0NCivjgarjgorjgZ8s44Gk44KI44GXDQor44Gq44KK44GfLOOBvuOBk+OBqA0KK+OBquOBmSzjgZ/jgZHjgZcNCivjgarjgZnjgZ8s44Gy44KN44GXDQor44Gr44GXLOOBi+OBreOBruOBtg0KK+OBq+OBl+OBoCzjga7jgbbjgobjgY0NCivjgavjgZfjgoDjgoks44GV44Gh44GKDQor44G+44GV44GgLOOBn+OBkeOBsuOBkw0KK+OBq+OBl+OCgOOCiSzjgajjgoLjgZMNCivjgavjgZfjgoDjgoks44G+44GV44KG44GNDQor44Gr44GX44GKLOOCiOOBl+OBn+OBoA0KK+OBq+OBl+OChOOBvizjgb/jgarjgZMNCivjgavjgaPjgZ8s44GL44GK44KKDQor44Gu44GM44G/LOOChOOBmeOBsuOCjQ0KK+OBruOBquOBiyzjgZ/jgYvjgbLjgo0NCivjga7jgZss44Gy44Gn44GKDQor44Gu44Gf44G5LOOBl+OCk+OBlA0KK+OBruOBqCzjgZjjgoXjgpPjgYTjgaENCivjga7jgaYs44Gy44KN44GNDQor44Gs44GP44GELOOBvuOBleOBsuOCjQ0KK+OBiuOBoSzjgYLjgY3jgbLjgZMNCivjgYrjgaHjgYLjgYQs44Go44GX44KG44GNDQor44GK44GgLOOCiOOBl+OBi+OBmg0KK+OBiuOBjOOBleOCj+OCiSzjgobjgYbjgZgNCivjgYrjgYzjgo8s44KI44GG44GYDQor44GK44GM44KPLOOBk+OBhuOBmA0KK+OBiuOBjOOCjyzjgb7jgZXjgbLjgZMNCivjgYrjgYzjgo8s44G+44GV44KEDQor44GK44GM44KPLOOBquOBiuOBn+OBkQ0KK+OBiuOBjOOCjyzjgajjgoLjgb8NCivjgYrjgY7jga4s44G+44GT44GoDQor44GK44GK44GwLOOBvuOBleOBsuOBpw0KK+OBn+OBjeOBv+OChCzjgobjgY3jgYoNCivjgYrjgYrjga/jgZcs44Gf44Gg44KG44GNDQor44GK44GK44Gv44GXLOOBn+OBj+OBv+OCkw0KK+OBiuOBiuOBhCzjgaHjgZXjgagNCivjgYrjgYrjgYvjgo8s44GI44G/DQor44GK44GK44KC44KKLOOBmOOCheOCk+OBiw0KK+OBiuOCgOOCiSzjgb7jgoYNCivjgYrjgarjgYvjga/jgoks44Gf44GR44Gk44GQDQor44GK44GK44Gr44GXLOOCiOOBl+OBruOCig0KK+OBiuOBrizjgYLjgY3jgZMNCivjgYrjgYrjgYrjgYss44Gf44GL44GXDQor44GK44GX44G+LOOBruOBtg0KK+OBiuOBl+OBvizjgZHjgpPjgYTjgaENCivjgYTjgZHjgb7jgaQs44Gf44GL44GTDQor44GK44GK44GfLOOBn+OBkeOBlw0KK+OBiuOBiuOBnyzjgZ/jgYvjgZcNCivjgYrjgYrjgZ8s44GV44Gh44GTDQor44GK44GK44GfLOOBn+OBv+OBkw0KK+OBteOBj+OBoCzjgb/jgYgNCivjgYrjgZzjgY0s44GR44GE44GE44GhDQor44GK44GE44GgLOOBsuOBqOOBlw0KK+OBiuOBhOOBmCzjgY/jgavjgbLjgo0NCivjgYrjgYvjgaAs44GX44KT44GYDQor44GZ44GO44KC44GoLOOBn+OBi+OChuOBjQ0KK+OBiuOBi+OBluOBjSzjgoTjgZnjgbLjgo0NCivjgYrjgYvjgZbjgY0s44KE44GZ44GXDQor44GK44GL44GW44KPLOOBsuOBqOOBlw0KK+OBiuOBj+OBoCzjgabjgaTjgoQNCivjgYrjgY/jgaAs44G+44GV44GNDQor44GK44GP44KA44KJLOOBl+OBkuOCiw0KK+OBiuOBj+OCgOOCiSzjgbLjgafjgbLjgagNCivjgYrjgY/jga4s44GT44GG44Gf44KN44GGDQor44GK44GP44KE44G+LOOBguOBjeOBsuOCjQ0KK+OBiuOBrizjgarjgYrjgb8NCivjgYrjgYrjgazjgY0s44Gy44Gn44Gu44KKDQor44GK44GK44Gv44GXLOOBqOOBl+OBig0KK+OBqOOBiuOChCzjgb7jgZXjgbLjgo0NCivjgYrjgajjgZDjgo0s44Gu44G244KG44GNDQor44GV44GE44GU44GGLOOBn+OBkeOBsuOCjQ0KK+OBleOBhOOBqOOBhizjgojjgZfjgZ/jgo3jgYYNCivjgZXjgYTjgajjgYYs44GC44GN44Gy44GVDQor44GV44GE44Go44GGLOOBteOBv+OBsuOBkw0KK+OBleOBhOOBqOOBhizjgbLjgo3jgY0NCivjgZXjgYTjgajjgYYs44Gy44KN44GXDQor44GV44GE44Go44GGLOOBmOOCheOCkw0KK+OBleOBhOOBqOOBhizjgYvjgpPjgZgNCivjgZXjgYvjgYjjgaDjgass44G/44GLDQor44GV44GL44GELOOBruOBtuOChOOBmQ0KK+OBleOBi+OBhCzjgajjgY/jgZjjgo3jgYYNCivjgZXjgYvjgZ8s44Gk44KI44GXDQor44GV44GL44GfLOOBi+OBmuOBsuOBkw0KK+OBleOBj+OBvizjgZ/jgYvjgbLjgo0NCivjgZXjgY/jgonjgbDjgoTjgZcs44GC44Gk44GXDQor44GV44GP44KJ44GELOOBvuOBpOOBig0KK+OBleOBj+OBnyzjgojjgZfjgYLjgY0NCivjgZXjgZXjgY0s44G+44GV44GL44GaDQor44GV44GV44GNLOOBguOBjeOCiQ0KK+OBleOBleOBjSzjgZXjgaHjgZMNCivjgZXjgZXjgY0s44KI44GX44KG44GNDQor44GV44GV44KBLOOCiOOBhuOBhOOBoQ0KK+OBleOBqOOBhizjgYvjgZrjga7jgooNCivjgZXjgajjgYYs44G+44GV44Gy44GTDQor44GV44Go44GGLOOCiOOBl+OBsuOCjQ0KK+OBleOBqOOBhizjgojjgZfjgo3jgYYNCivjgZXjgajjgYYs44Gv44GY44KBDQor44GV44Go44GGLOOBsuOCjeOBvw0KK+OBleOBqOOBhizjgbLjgo3jgZcNCivjgZXjgajjgYYs44GT44GG44GYDQor44GV44Go44GGLOOBl+OCh+OBhuOBmA0KK+OBleOBqOOBhizjgoTjgYgNCivjgZXjgajjgYYs44GP44G/44GTDQor44GV44Go44GGLOOBsuOCjeOChOOBmQ0KK+OBleOBqOOBhizjgorjgYgNCivjgZXjgo/jgaAs44Gf44GL44GtDQor44GV44KP44Gv44GXLOOBn+OBpOOChuOBjQ0KK+OBleOCj+OBrizjgYvjgZrjgbLjgo0NCivjgZvjgZDjgaEs44GX44KF44GG44G444GEDQor44Gb44GNLOOBqOOCguOBkw0KK+OBm+OBjeOBkOOBoSzjgojjgZfjgbLjgo0NCivjgZvjgY3jgZDjgaEs44GV44Go44GXDQor44GX44GwLOOBi+OBiuOCig0KK+OBl+OBsOOBnyzjgYLjgoTjgZMNCivjgZfjgbDjgZ8s44G+44GV44Gv44KLDQor44GX44G244KELOOBn+OBi+OBlw0KK+OBl+OBvuOBoCzjgZfjgoXjgYbjgZgNCivjgZfjgb/jgZos44GL44Gk44KG44GNDQor44GE44GX44GL44KPLOOBn+OBi+OChuOBjQ0KK+OBl+OBv+OBmizjgajjgoLjgbLjgo0NCivjgZfjgb/jgZos44GL44Gk44KG44GNDQor44GX44G/44GaLOOBkeOCk+OBmA0KK+OBl+OBv+OBmizjgZHjgpPjgZ/jgo3jgYYNCivjgbXjgZjjgYjjgaAs44GT44GG44GE44Gh44KN44GGDQor44GX44KC44KE44G+44GgLOOBl+OCk+OBhOOBoQ0KK+OBl+OBquOBjOOCjyzjgajjgoLjgbLjgacNCivjgZfjgpPjgoQs44G/44Gk44Gu44KKDQor44GX44GK44G/LOOBl+OCk+OBmA0KK+OBl+OBiuOBpCzjgYvjgaTjgbLjgZMNCivjgZvjgY3jgZDjgaEs44Go44GK44KLDQor44Gk44Gu44GgLOOBn+OBi+OBlw0KK+OBl+OCieOBleOBiyzjgYLjgaTjgYoNCivjgZfjgo3jgZfjgZ8s44Gy44KN44KG44GNDQor44GX44Gf44KJLOOBsuOBleOBlw0KK+OBl+OCh+OBhizjgZjjgoXjgpPjgYTjgaENCivjgZnjgYzjgo/jgoks44G/44G7DQor44GZ44GM44KP44KJLOOBleOBqOOBlw0KK+OBmeOBjuOCguOBqCzjgZfjgofjgYbjgYTjgaENCivjgZnjgY7jgZ8s44Go44KC44GL44GaDQor44GZ44GO44GfLOOBvuOBleOCiOOCig0KK+OBmeOBjuOBnyzjgYvjgaTjgbLjgZMNCivjgZnjgY7jgYbjgoks44GV44Go44GTDQor44GZ44GO44GG44KJLOOBqOOCiOOBsuOBlQ0KK+OBmeOBjuOChOOBvizjgb/jgZrjgbsNCivjgYTjgZHjgZ7jgYgs44G+44GV44Go44GXDQor44GZ44GO44KE44G+LOOBsuOCjeOBguOBjQ0KK+OBmeOBiyzjgajjgoLjgobjgY0NCivjgZnjgZHjgYzjgo8s44Gu44G244KI44GXDQor44GZ44G/44Gu44GG44GILOOBsuOBp+OBjQ0KK+OBmeOBv+OCiOOBlyzjgZ/jga3jgYvjgZoNCivjgZnjgb/jgojjgZcs44Go44GX44G/44GkDQor44GZ44Gq44G/LOOBsuOCjeOChuOBjQ0KK+OBmeOBmuOBjSzjgoTjgaHjgogNCivjgZnjgZrjgY0s44G+44KC44KLDQor44GZ44Ga44GNLOOBguOBjeOBsuOCjQ0KK+OBmeOBmuOBjSzjgYLjgY3jgokNCivjgZnjgZrjgY0s44Gy44KN44GC44GNDQor44GZ44Ga44GNLOOBhOOBo+OBuuOBhA0KK+OBmeOBmuOBjSzjgb7jgZXjgagNCivjgZnjgZrjgY0s44Gu44G244GC44GNDQor44GX44KH44GG44GYLOOBl+OBmg0KK+OBl+OCh+OBhizjgZfjgofjgYbjgZ/jgo3jgYYNCivjgZ/jgbDjgZ8s44Gd44GG44GE44Gh44KN44GGDQor44Gf44GgLOOBqOOBl+OBig0KK+OBn+OBqeOBk+OCjSzjgbLjgafjgobjgY0NCivjgZ/jgYzjgb8s44GT44GG44GYDQor44Gf44GQ44GhLOOBn+OBi+OBlw0KK+OBn+OBkOOBoSzjgbLjgo3jgYLjgY0NCivjgZ/jgYQs44G+44GV44Gm44KLDQor44Gf44GE44KJLOOBguOBpOOBlw0KK+OBn+OBhOOBlSzjgb/jgaTjgbLjgo0NCivjgZ/jgZjjgb4s44GN44KI44GXDQor44Gf44GL44GgLOOBn+OBoOOBquOBig0KK+OBn+OBi+OBoCzjgYjjgaTjgo3jgYYNCivjgZ/jgYvjgY4s44Gm44Gk44KN44GGDQor44Gf44GL44Gv44GXLOOBguOBpOOChA0KK+OBn+OBi+OBr+OBlyzjgbLjgo3jgZcNCivjgZ/jgYvjga/jgZcs44Go44GK44KLDQor44Gf44GL44Gv44GXLOOBquOBiuOBjQ0KK+OBn+OBi+OBr+OBlyzjgZXjgajjgZcNCivjgZ/jgYvjga/jgZcs44KG44GG44GYDQor44Gf44GL44Gv44GXLOOBqOOBl+OBig0KK+OBn+OBi+OBr+OBlyzjgobjgYbjgZnjgZENCivjgZ/jgYvjga/jgZcs44Gq44GK44GNDQor44Gf44GL44Gv44GXLOOCiOOBl+OBteOBvw0KK+OBn+OBi+OBhCzjgZfjga7jgbYNCivjgZ/jgYvjga4s44GL44KT44GTDQor44Gf44GL44GX44G+LOOBquOBiuOChA0KK+OBn+OBi+OChOOBvizjgbLjgafjgaTjgZANCivjgZ/jgZHjgaAs44GL44Ga44KI44GXDQor44Gf44GR44GE44GhLOOBkeOBhOOBmeOBkQ0KK+OBn+OBkeOBvuOBlSzjgZHjgpPjgYTjgaENCivjgZ/jgZHjgoDjgoks44GX44G7DQor44Gf44GR44KA44KJLOOBl+OCheOCk+OBmeOBkQ0KK+OBn+OBkeOBquOBiyzjgarjgYrjgagNCivjgZ/jgZHjgZfjgZ8s44GX44KH44GG44Ge44GGDQor44Gf44GR44GG44GhLOOBguOBpOOBqA0KK+OBn+OBkeOBhuOBoSzjgbLjgajjgZcNCivjgZ/jgZHjgYbjgaEs44GI44GE44GE44Gh44KN44GGDQor44Gf44GN44GL44KPLOOBguOBpOOBlw0KK+OBn+OBjeOBjeOBnyzjgZ/jgYvjgZcNCivjgZ/jgY3jgZbjgo8s44Gy44Gn44GoDQor44Gf44GTLOOCiOOBl+OBjQ0KK+OBn+OBi+OBrizjgoLjgajjgobjgY0NCivjgZ/jgb7jgYzjgo8s44Gy44KN44KG44GNDQor44Gf44G+44GNLOOBiuOBleOCgA0KK+OBn+OCgOOCiSzjgYvjgZrjgZ/jgYsNCivjgZ/jgarjgbks44Gy44KN44Gu44G2DQor44Gf44Gq44G5LOOBteOBv+OBig0KK+OBn+OBquOBiyzjgY3jgofjgYbjgbjjgYQNCivjgZ/jgarjgYss44GN44KH44GG44GTDQor44Gf44Gq44GLLOOBv+OBuw0KK+OBn+OBquOBiyzjgojjgZfjgbLjgZUNCivjgZ/jgarjgYss44KI44GG44GTDQor44Gf44Gq44GLLOOBvuOBleOCiOOBlw0KK+OBn+OBqyzjgYvjgZrjgarjgooNCivjgZ/jgavjgZDjgaEs44Gu44G244Gy44KNDQor44Gf44Gr44GX44KH44GGLOOBl+OCk+OBlA0KK+OBn+OBpuOChOOBvizjgojjgZfjgbXjgb8NCivjgZ/jgaTjgb8s44G+44GZ44G/DQor44Gf44GG44KJLOOBn+OBi+OBqOOBlw0KK+OBn+OBluOCjyzjgajjgoLjgobjgY0NCivjgZ/jgZrjgZEs44Gb44GE44GE44GhDQor44Gm44KJ44GgLOOBkeOBhOOBkw0KK+OBqOOBhuOBvizjgYvjgZrjgbLjgo0NCivjgajjgYrjgoTjgb4s44GL44Ga44Gy44KNDQor44Go44KB44GK44GPLOOBguOBjeOBig0KK+OBqOOBv+OBhOOBiCzjga/jgoTjgagNCivjgbXjgZ/jgaTjgY4s44Gy44KN44GXDQor44Go44KC44Go44GXLOOBkeOCk+OBmA0KK+OBqOOBreOBjOOCjyzjgYLjgY3jgZMNCivjgYrjgY/jgoDjgoks44Gu44KK44Gy44GTDQor44Go44GX44GX44GSLOOBsuOCjeOBlw0KK+OBqOOCiOOBoCzjgYvjgZrjgarjgooNCivjgajjgojjgarjgYss44G+44GV44KEDQor44Gk44Gw44GNLOOBpuOBpOOChA0KK+OBpOOBoeOCguOBqCzjgbXjgb/jgYoNCivjgaTjgaAs44GV44Go44GXDQor44Gk44GgLOOBi+OCiA0KK+OBpOOBoCzjgajjgZfjgYgNCivjgaTjgZjjgYQs44Go44KC44Gf44GLDQor44Gk44GY44KA44KJLOOBruOCiuOBkw0KK+OBpOOBi+OBr+OCiSzjgajjgZfjgo3jgYYNCivjgaTjga7jgaAs44GX44KH44GG44GYDQor44Gk44KL44GOLOOBr+OCi+OBsuOBkw0KK+OBpOOCi+OBnyzjgabjgovjgbLjgZMNCivjgaTjgZfjgb4s44GN44Gs44KIDQor44Gk44Gk44GELOOBsuOCjeOChuOBjQ0KK+OBpOOBoeOBoCzjgYvjgaTjgobjgY0NCivjgYbjgaHjgaAs44GV44Go44KLDQor44GG44Gh44GgLOOBn+OBj+OBmA0KK+OBhuOBoeOBj+OCiSzjgZ/jgZHjgZcNCivjgYbjgaHjgZ/jgass44GL44Gk44GTDQor44GG44GI44GgLOOBleOBjeOBkw0KK+OBhuOBiOOBoCzjgaHjgYgNCivjgYbjgYjjgaAs44GM44GPDQor44GG44GI44GgLOOBguOBjeOBruOCig0KK+OBhuOBiOOCgOOCiSzjgbLjgo3jgZMNCivjgYbjgYjjga4s44Gy44KN44GXDQor44GG44GI44Gk44GNLOOBvuOBjQ0KK+OBhOOBkSzjgb7jgZXjgosNCivjgYbjgoHjgaAs44G/44G7DQor44GG44KB44KA44KJLOOBquOBpOOBkw0KK+OBhuOBruOBjSzjga7jgbbjgbLjgZMNCivjgYbjgonjgZfjgZ8s44Go44KC44GTDQor44GG44KJ44GfLOOBqOOCguOChuOBjQ0KK+OBhuOBl+OBiizjgojjgZfjgYoNCivjgYbjgZ/jgYzjgo8s44Gm44Gk44KEDQor44KP44GgLOOBqOOCguOBkw0KK+OCj+OBoCzjgYLjgY3jgbLjgagNCivjgo/jgaAs44Gy44KN44Gf44GkDQor44KP44GgLOOBvuOBleOBsuOCjQ0KK+OCj+OBjOOBpOOBvizjgZfjgofjgYbjgYTjgaENCivjgo/jgYvjgb7jgaQs44KG44GG44GYDQor44KP44GN44GfLOOBsuOCjeOBguOBjQ0KK+OCj+OBkyzjgbLjgo3jgYvjgZoNCivjgo/jgorjgYvjgZ8s44Gq44GK44KG44GNDQor44KP44GX44GaLOOBl+OCh+OBhg0KK+OCj+OBn+OBquOBuSzjgZfjgoXjgpPjgZgNCivjgo/jgZ/jgarjgbks44KI44GX44KG44GNDQor44KP44Gf44Gq44G5LOOBqOOBl+OBig0KK+OCj+OBn+OBquOBuSzjgYzjgY8NCivjgo/jgZ/jgarjgbks44Gy44KN44G144G/DQor44GK44KA44KJLOOBsuOCjeOBsuOBpw0KK+OCj+OBn+OBquOBuSzjgZPjgYbjgZvjgYQNCivjgo/jgZ/jgarjgbks44Gq44GK44GTDQor44KP44Gf44Gq44G5LOOCiuOCheOBhuOBhOOBoQ0KK+OCj+OBn+OBquOBuSzjgabjgaTjgo3jgYYNCivjgoTjgY4s44Go44KC44G/DQor44KE44GOLOOChuOBhuOBkw0KK+OChOOBvuOBoCzjgZ/jgYvjgagNCivjgoTjgb7jgaAs44Gu44KK44Go44GXDQor44KE44G+44GgLOOBsuOBp+OBteOBvw0KK+OChOOBvuOBoCzjgZfjgZLjgYoNCivjgoTjgb7jgaAs44Gf44GR44Gy44KNDQor44KE44G+44G144GPLOOBsuOBp+OBig0KK+OChOOBvuOBkOOBoSzjgb7jgorjgZMNCivjgoTjgb7jgZDjgaEs44KI44GG44GYDQor44KE44G+44GQ44GhLOOCiOOBhuOBkw0KK+OChOOBvuOBkOOBoSzjgbLjgo3jgYvjgZoNCivjgoTjgb7jgZgs44Go44GK44KLDQor44KE44G+44GL44KPLOOBk+OBhuOBmA0KK+OChOOBvuOCguOBqCzjgZ/jgYvjga7jgooNCivjgoTjgb7jgoLjgags44GR44KT44GE44GhDQor44KE44G+44KC44GoLOOBv+OBpOOBnuOBhg0KK+OChOOBvuOCguOBqCzjgobjgY3jgZMNCivjgoTjgb7jgoLjgags44Gy44KN44KE44GZDQor44KE44G+44KC44GoLOOBk+OBhuOBmA0KK+OChOOBvuOCguOBqCzjgb7jgZXjgY0NCivjgoTjgb7jgoLjgags44KG44GG44GYDQor44KE44G+44KC44GoLOOChuOBn+OBiw0KK+OChOOBvuOBqizjgZvjgYTjgYTjgaHjgo3jgYYNCivjgoTjgb7jgZXjgY0s44GL44Gk44G/DQor44KE44G+44GX44GfLOOBruOCiuOBqOOBlw0KK+OChOOBvuOBl+OBnyzjgajjgYrjgosNCivjgoTjgb7jgZbjgY0s44Gy44KN44GXDQor44KE44Gq44GOLOOCiuOCh+OBhg0KK+OChOOBrizjgZHjgpPjgZ/jgo3jgYYNCivjgoTjgZfjgo0s44Gf44GR44GXDQor44KE44GZ44GELOOBteOBqOOBlw0KK+OChOOBmeOCgOOCjSzjgZ/jgYvjgZcNCivjgoTjgZnjgYbjgZgs44KI44GX44KG44GNDQor44KI44GT44GILOOBsuOBp+OBruOCig0KK+OCiOOBk+OBhCzjgb7jgoQNCivjgojjgZPjgb/jgZ4s44GN44KI44GX44GSDQor44KI44GT44KE44G+LOOBvuOBleOBsuOBkw0KK+OCiOOBreOBluOCjyzjgYvjgZrjgbLjgZMNCivjgojjgZfjgaAs44GR44KT44KEDQor44KI44GX44GgLOOBruOBtuOBsuOCjQ0KK+OCiOOBl+OBoCzjgYvjgaTjgoQNCivjgojjgZfjgaAs44GL44Ga44GC44GNDQor44KI44GX44GgLOOBqOOCguOBvw0KK+OCiOOBl+OBhCzjgZfjgZLjgagNCivjgojjgZfjgoDjgoks44Gm44KL44GL44GaDQor44KI44GX44KE44G+LOOBiOOBhOOBmA0KK+OCiOOBl+OBluOCjyzjgZXjgaHjgZMNCivjgbXjgZjjgZfjgb4s44GR44KT44Gf44KN44GGDQor44KG44GC44GVLOOBkeOBhA0KK+OChuOBjSzjgZvjgaTjgZMNCivjgobjgY0s44GC44GN44KIDQor44KG44GELOOBoOOBhOOBmeOBkQ0KK+OBguOBoOOBoSzjgarjgYrjgZ/jgZENCivjgbDjgpMs44Gf44GL44GXDQor44G144KL44GELOOCiOOBl+OBruOCig0KK+OBr+OBm+OBjOOCjyzjga/jgZjjgoENCivjgbLjgonjgYvjgo8s44G+44Gq44G2DQor44GE44Go44GGLOOBqOOBl+OBsuOBkw0KK+OBhOOCj+OBleOBjSzjgorjgofjgYbjgZgNCivjgYvjgajjgYYs44GR44KT44GYDQor44GL44KP44Gv44KJLOOCiOOBl+OBv+OBpA0KK+OBvuOBiOOBr+OCiSzjgYrjgZXjgoANCivjgb7jgaTjgZ/jgass44GX44GS44GKDQor44KC44KK44GE44GhLOOBiOOBhOOBmOOCjeOBhg0KK+OBq+OBl+OBhuOBoSzjga7jgbbjgobjgY0NCivjgbXjgZjjgb7jgY0s44Gf44GE44Ge44GGDQor44GK44GK44Gv44KJLOOBn+OBi+OBlw0KK+OBleOBquOBoCzjgbLjgafjgYLjgY0NCivjgZ3jga0s44Gk44Go44KADQor44Go44Gu44KA44KJLOOCiOOBl+OChuOBjQ0KK+OBl+OBv+OBmizjgZHjgYQNCivjgb/jgZfjgb4s44G+44KK44GTDQor44G144GY44GfLOOBn+OCjeOBhg0KK+OBteOBmOOBnyzjgbLjgafjgY0NCivjgbXjgZjjgZ8s44KI44GGDQor44G144GY44KP44KJLOOBk+OBhuOBmOOCjeOBhg0KK+OBteOBmOOCheOBhizjgZfjgpPjgYTjgaENCivjgbXjgYvjgaAs44Gf44GP44KEDQor44G144GP44GgLOOChuOBn+OBiw0KK+OBteOBj+OBsuOBlSzjgarjgYrjgZ/jgYsNCivjgbXjgY/jgZbjgags44GC44KEDQor44G144GP44GW44KPLOOBn+OBi+OBlw0KK+OBteOCi+OBleOCjyzjgY3jga/jgosNCivjga/jgYzjgo8s44Gf44GL44GXDQor44Gv44GOLOOBsuOCjeOBn+OBiw0KK+OBr+OCieOBoCzjgb/jgaTjgosNCivjga/jgonjgaAs44Gu44G244Gy44KNDQor44Gv44KJ44GgLOOBvuOBjQ0KK+OBr+OCieOBvuOBjSzjgarjgYrjgZMNCivjga/jgZvjgYzjgo8s44KK44GIDQor44Gv44Gb44GM44KPLOOBsuOBp+OBguOBjQ0KK+OBr+OBl+OBiizjgobjgYsNCivjga/jgZnjgb8s44Gy44KN44GXDQor44Gv44GZ44G/LOOBkeOCk+OBhOOBoeOCjQ0KK+OBr+OBo+OBqOOCiizjgojjgorjgZMNCivjgYTjgZfjgYvjgo8s44G244KT44G644GEDQor44Gv44KE44GXLOOBn+OBi+OBkw0KK+OBsuOCieOBrizjgZ/jgY/jgoQNCivjgbLjgonjga4s44GL44Ga44GC44GNDQor44Gy44KJ44GuLOOBqOOBl+OBguOBjQ0KK+OBsuOCjeOBuSzjgbLjgafjgY0NCivjgZfjga7jgaAs44GR44KT44GYDQor44Gy44GV44GgLOOBn+OBi+OChuOBjQ0KK+OBuyzjgZ/jgZHjgZcNCivjgbvjgpPjgZTjgYYs44Gm44KL44Gy44GTDQor44G744GXLOOBv+OBoeOBkw0KK+OBu+OBl+OBrizjgb7jgZXjgY0NCivjgbvjgZ3jgYvjgo8s44Gy44KN44GL44GaDQor44G744Gd44GuLOOChuOBvw0KK+OBi+OBqOOBhizjgojjgZfjgo3jgYYNCivjgYTjgY4s44KI44GG44GTDQor44GE44GR44GgLOOBqOOBl+OChuOBjQ0KK+OBhOOBj+OCjSzjga7jgorjgbLjgo0NCivjgYTjgb7jgYQs44GL44Ga44KI44GXDQor44GE44Gq44GgLOOBk+OBhuOBuOOBhA0KK+OBhOOBruOBkOOBoSzjgZ/jgYvjgobjgY0NCivjgYTjgZfjgZDjgo0s44Gk44GQ44GL44GaDQor44GE44GX44GL44KPLOOBsuOCjeOBjQ0KK+OBhOOBl+OBi+OCjyzjgZHjgpPjgZgNCivjgYTjgZfjgZbjgY0s44KG44GL44KKDQor44GE44GX44Gc44GNLOOCiOOBl+OBqA0KK+OBhOOBqOOBhizjgabjgaTjgoQNCivjgYTjgajjgYYs44G+44GV44KI44GXDQor44GE44Go44GGLOOBquOBiuOBjQ0KK+OBhOOBqOOBhizjgojjgZfjgb8NCivjgYTjgb7jgYzjgo8s44GR44GEDQor44GE44GW44KPLOOBk+OBhuOBmA0KK+OBhOOBmuOBvyzjgZfjgofjgYbjgZgNCivjgYTjgZrjgb/jgaDjgaYs44Gu44KK44Go44GXDQor44GL44G244KJ44GOLOOBi+OBiuOCig0KK+OBi+OBv+OChOOBvizjgajjgYrjgosNCivjgYvjgarjgoTjgb4s44GT44GG44GYDQor44GL44Gq44GW44KPLOOBmOOCjeOBhg0KK+OBi+OCk+OBsOOCiSzjgYvjgaTjgojjgZcNCivjgYvjgpPjgaAs44KG44GG44GTDQor44GL44KT44GgLOOBv+OBmeOBvuOCiw0KK+OBi+OBreOBkyzjgarjgorjgajjgoINCivjgYvjgZfjgoDjgoks44Gy44KN44GXDQor44GL44Gf44GO44KKLOOBl+OCk+OBmeOBkQ0KK+OBi+OBqOOBhizjgbLjgo3jga7jgooNCivjgYvjgajjgYYs44Gu44G244Gy44GVDQor44GL44KP44GgLOOBr+OCi+OBvw0KK+OBi+OCj+OBmeOBvyzjgojjgYbjgZMNCivjgY3jgaks44GX44KF44KT44GE44GhDQor44GN44GP44GhLOOBruOBtuOBsuOCjQ0KK+OBjeOCguOBqCzjgZ/jgY/jgoQNCivjgY3jgoDjgoks44GR44KT44GfDQor44GN44KT44GpLOOBv+OBoeOBr+OCiw0KK+OBjeOBn+OCgOOCiSzjgb/jgbsNCivjgY3jgZ/jga4s44GV44Gg44GKDQor44GN44Gf44KP44Gf44GbLOOBmeOBmeOCgA0KK+OBjeOBo+OBnyzjgoTjgZnjgZMNCivjgY3jgoTjgb4s44Gb44GE44GYDQor44GN44KI44GfLOOBsuOCjeOChuOBjQ0KK+OBk+OBsOOChOOBlyzjgZjjgoXjgpPjgZgNCivjgZPjgbDjgoTjgZcs44KI44GG44GTDQor44GT44GMLOOBguOBpOOChA0KK+OBk+OBr+OCiSzjgZ/jgYvjgobjgY0NCivjgZPjgZjjgaos44GR44KTDQor44GT44KT44GuLOOBkeOBhOOBlA0KK+OBk+OBmuOBiyzjgb7jgZXjgY0NCivjgZPjgYTjgacs44GX44KT44GYDQor44GT44G+44GkLOOCiuOCheOBhuOBmeOBkQ0KK+OBk+OBv+OBquOBqCzjgZfjgoXjgYbjgZgNCivjgZPjgoLjgoos44GV44Go44GTDQor44GT44KT44GpLOOBsuOCjeOBsuOBkw0KK+OBk+OBq+OBlyzjga7jgorjgZMNCivjgY/jgbzjgoTjgb4s44Gf44Gg44GC44GNDQor44GP44G+44GM44GELOOCiuOCh+OBhuOBmA0KK+OBj+OBvuOBnyzjgZ/jgYvjgZMNCivjgY/jgorjga/jgoks44Gf44GR44GXDQor44GP44KK44Gv44KJLOOBkeOBhOOBkw0KK+OBj+OCiuOBnyzjgZXjgajjgZcNCivjgY/jgZXjga4s44Gy44KN44G144G/DQor44GP44GX44GgLOOBguOBjeOBsuOBkw0KK+OBvuOBiOOBoCzjgobjgY0NCivjgb7jgY0s44GR44GE44GZ44GRDQor44G+44GN44GfLOOBl+OCk+OBmA0KK+OBvuOCi+OChOOBvizjgaTjga3jgYoNCivjgb7jgZnjgaAs44Gg44GE44GhDQor44G+44Gk44Gw44KJLOOBoeOBi+OCiQ0KK+OBvuOBpOOBsOOCiSzjgbLjgafjgajjgZcNCivjgb7jgaTjgYQs44GR44GE44GTDQor44G+44Gk44KC44GoLOOBvuOBleOChuOBjQ0KK+OBvuOBpOOCgOOCiSzjgZfjgpPjgZ/jgo3jgYYNCivjgb7jgaTjgYos44GL44Ga44Gy44KNDQor44G/44GL44G/LOOBv+OBpOOBig0KK+OBv+OBjSzjgZ/jgYvjgYLjgY0NCivjgb/jga7jgYbjgoks44Gb44GE44GYDQor44G/44GX44G+LOOBkeOCk+OBhOOBoQ0KK+OBv+OBpOOBquOBjCzjgojjgZfjgobjgY0NCivjgb/jgYbjgoks44G+44GV44Gu44KKDQor44G/44KPLOOBn+OBi+OBruOBtg0KK+OBv+OChOOBiizjgoTjgZnjga/jgosNCivjgb/jgoTjgZ8s44GL44Gq44GGDQor44G/44Ga44Gf44GrLOOBi+OBmuOBsuOBkw0KK+OBv+OBmuOBn+OBqyzjgbLjgafjga7jgbYNCivjgoLjgaHjgZrjgY0s44G/44Gk44KLDQor44KC44Gh44Ga44GNLOOBj+OBv+OBkw0KK+OCguOBoeOBmuOBjSzjga7jgbbjgobjgY0NCivjgoLjgY4s44Gy44KN44GXDQor44KC44KKLOOBleOBqOOCiw0KK+OCguOCiizjgZ/jgaDjgbLjgZMNCivjgoLjgoos44Gf44Gg44KG44GNDQor44KC44KKLOOBqOOCguOBsuOBlQ0KK+OCguOCiizjgajjgZfjgY0NCivjgoLjgorjgoTjgb4s44Go44GX44GKDQor44KC44KN44GK44GLLOOChuOBjQ0KK+OCguOBqOOBsCzjgaDjgYTjgZXjgY8NCivjgoDjga3jgags44GL44Gk44G+44GVDQor44KA44KJ44GELOOCiOOBl+OBkw0KK+OCgOOCieOBiuOBiyzjgZHjgpMNCivjgoDjgo3jgYQs44Gy44Gn44Gy44KNDQor44Gq44GM44G144GYLOOBjeOBv+OBsuOBqA0KK+OBquOBjOOBhCzjgYLjgY3jgokNCivjgarjgYTjgajjgYYs44KG44GN44GTDQor44Gq44GE44Go44GGLOOBn+OCjeOBhg0KK+OBquOBi+OBjOOCjyzjgb/jga7jgosNCivjgarjgYvjga/jgoks44G/44KE44GTDQor44Gq44GL44GY44G+LOOChuOBn+OBiw0KK+OBquOBi+OBmOOBvizjgb7jgZXjgbLjgZMNCivjgarjgYvjgoDjgoks44Gf44GR44GXDQor44Gq44GL44KA44KJLOOBsuOCjeOBlw0KK+OBquOBi+OCgOOCiSzjgYLjgoQNCivjgarjgYvjgoDjgoks44GC44GN44KJDQor44Gq44GL44KA44KJLOOBguOBjeOCiQ0KK+OBquOBi+OCgOOCiSzjgYLjgaTjgZcNCivjgarjgYvjgoDjgoks44Gy44GV44GoDQor44KE44G+44GgLOOBn+OBi+OBlw0KK+OBquOBi+OBiizjgYjjgYTjgZgNCivjgarjgYvjgaTjgYvjgZUs44GN44KI44GXDQor44Gq44GL44KE44G+LOOBvuOCig0KK+OBquOCgOOCiSzjgoDjga3jgobjgY0NCivjgarjgZnjga4s44Gq44GK44GNDQor44Gr44GE44Gc44GNLOOBqOOBl+OBr+OCiw0KK+OBq+OBl+OBi+OCjyzjgZPjgYbjgZ7jgYYNCivjgavjgZfjgY3jgYrjgoos44KI44GX44GC44GNDQor44Gr44GX44GW44KPLOOBi+OBpOOBruOCig0KK+OBruOBguOBjSzjgojjgYbjgZMNCivjga7jgaAs44GR44KT44Gf44KN44GGDQor44Gu44GgLOOChuOBhuOBkw0KK+OBruOBkOOBoSzjgbLjgZXjgZcNCivjga7jgoDjgoks44Gy44Gn44GNDQor44GK44Gh44GC44GELOOBk+OBmeOBkQ0KK+OCguOCiizjgb7jgorjgZMNCivjgYrjgYzjgZXjgo/jgoks44G/44Gk44Gy44GVDQor44GK44GM44GV44KP44KJLOOBn+OBpOOBlw0KK+OBiuOBjOOCjyzjgorjgofjgYbjgZMNCivjgYrjgYzjgo8s44Gf44GL44Gy44KNDQor44GK44GM44KPLOOChOOBmeOBsuOBlQ0KK+OBiuOBkOOCiSzjgbXjgb/jga7jgooNCivjgYrjgZDjgoks44G+44GV44GNDQor44GK44GK44GE44GXLOOBsuOCjeOChA0KK+OBiuOBiuOBi+OCjyzjgajjgZfjgYLjgY0NCivjgYrjgYrjgYvjgo8s44GY44KF44KT44GTDQor44GK44GL44GcLOOBquOBiuOBjQ0KK+OBiuOBjSzjgabjgaTjgoQNCivjgYrjgoDjgoks44GC44Gk44GXDQor44GK44GK44GZ44G/LOOBvuOBleOBsuOCjQ0KK+OBiuOBiuOBnyzjgbXjgb/jgbLjgZMNCivjgYrjgYrjgZ/jgZEs44Gm44Gk44GYDQor44GK44GK44Gf44GrLOOBkeOCkw0KK+OBiuOBiuOChOOBvizjgZHjgpPjgZgNCivjgYrjgZzjgY0s44Gy44KN44GXDQor44GK44GL44KC44GoLOOBmOOCheOCkw0KK+OBiuOBi+OCgOOCiSzjgZPjgYbjgZfjgpMNCivjgYrjgYvjgoDjgoks44G+44KC44KLDQor44GK44GP44KA44KJLOOBvuOBquOBvw0KK+OBiuOCk+OBoCzjga7jgorjgbLjgZMNCivjgYrjga7jgafjgoks44Gu44KK44KG44GNDQor44GK44KE44G5LOOBn+OBi+OBruOCig0KK+OBleOBjCzjgajjgZfjgYLjgY0NCivjgZXjgYTjgajjgYYs44KG44GG44GTDQor44GV44GL44GELOOBleOBquOBiA0KK+OBhOOBjizjgYLjgY3jga7jgooNCivjgZXjgYvjgoLjgags44Gy44GV44GtDQor44GV44GL44KC44GoLOOCiOOBl+OBsuOCjQ0KK+OBleOBi+OBpOOBjizjgYvjgZrjgYoNCivjgZXjgYvjgYbjgYgs44GR44KT44GYDQor44GV44GP44G+LOOBvuOCiuOBkw0KK+OBleOBj+OCiSzjgYjjgYTjgY0NCivjgZXjgarjgaAs44KI44GX44Gy44KNDQor44GV44GV44GNLOOBn+OBkeOBig0KK+OBleOBleOBjSzjgarjgYrjgoQNCivjgZXjgajjgYYs44GL44Gk44KG44GNDQor44GV44Go44GGLOOBn+OBi+OBsuOCjQ0KK+OBleOBqOOBhizjgajjgZfjgYLjgY0NCivjgZXjgajjgYYs44GX44KF44GG44GE44GhDQor44GV44Go44GGLOOBsuOBp+OBsuOBlQ0KK+OBleOBqOOBhizjgYvjgaTjgbLjgo0NCivjgZXjgajjgYYs44GN44KH44GG44GTDQor44GV44Go44GGLOOChOOBmeOBsuOBqA0KK+OBleOBqOOBhizjgYvjgZrjgbLjgacNCivjgZXjgajjgYYs44GV44Go44G/DQor44Gb44GE44GRLOOBvuOBleOBruOCig0KK+OBm+OBjSzjgojjgYbjgYTjgaENCivjgZvjgY0s44Gm44Gk44KEDQor44Gb44GNLOOBpuOBpA0KK+OBm+OBjeOBkOOBoSzjgZ/jgZHjgZcNCivjgZvjgZ8s44Go44GX44GKDQor44GX44KT44GM44GELOOBguOBjeOBkw0KK+OBl+OBsOOBnyzjgojjgZfjgZMNCivjgZfjgbDjgZ8s44KG44GN44Gu44KKDQor44GX44G244GNLOOBmOOCjeOBhg0KK+OBl+OBkuOBqOOBvyzjgYvjgZrjgb/jgaQNCivjgZfjgYws44Gy44KN44GXDQor44GX44GE44GwLOOBv+OBiw0KK+OBl+OBvuOBoCzjgYTjgaHjgo3jgYYNCivjgZfjgb7jgYvjgo8s44GX44GS44KLDQor44GX44G/44GaLOOBmeOBmeOCgA0KK+OBl+OBv+OBmizjgZ/jgYvjgaTjgaoNCivjgZfjgb/jgZos44GK44GV44KADQor44GX44G/44GaLOOBn+OBi+OBlw0KK+OBl+OCguOCgOOCiSzjgZ/jgYvjgZcNCivjgZfjgoLjgoDjgoks44GC44GN44KJDQor44GX44GK44GY44KKLOOBsuOCjeOBlw0KK+OBl+OBiuOBluOCjyzjgYLjgoTjgZMNCivjgZfjgonjgYQs44KG44GG44GTDQor44GX44KJ44GL44KPLOOBteOBv+OBiA0KK+OBneOBvuOCkyzjgZjjgpMNCivjgZ3jgYbjgoQs44G+44GV44GoDQor44Gd44Gu44GgLOOBvuOChuOBvw0KK+OBmeOBoCzjgajjgoLjga/jgosNCivjgZnjgYzjga4s44GR44KT44GE44GhDQor44GZ44GM44Gs44G+LOOBleOBqOOBlw0KK+OBmeOBjOOCjyzjgZvjgYTjgYTjgaENCivjgZnjgY7jgYbjgoks44GN44KH44GG44GZ44GRDQor44GZ44GO44KE44G+LOOBqOOCguOBsuOCjQ0KK+OBmeOBmuOBjSzjgZHjgpMNCivjgZnjgZrjgY0s44GT44GG44GYDQor44GZ44Ga44GNLOOBguOBpOOBlw0KK+OBmeOBmuOBjSzjgZfjgpPjgYTjgaHjgo3jgYYNCivjgZfjgofjgYbjgZgs44Gm44Gk44KEDQor44Gf44GQ44GhLOOBi+OBpOOChA0KK+OBn+OBhOOCiSzjgZ/jgaDjgagNCivjgZ/jgZjjgb4s44KK44GIDQor44Gf44GL44GgLOOBn+OBi+OBruOCig0KK+OBiuOBi+OChOOBvizjgYLjgZXjgZMNCivjgZ/jgYvjgY7jgZcs44G/44GL44GTDQor44Gf44GL44Gv44GXLOOBl+OCk+OBhOOBoeOCjeOBhg0KK+OBn+OBi+OBr+OBlyzjgoTjgZnjgZcNCivjgZ/jgYvjga/jgZcs44G+44GV44KI44GXDQor44Gf44GL44Gv44GXLOOBqOOBiuOCiw0KK+OBn+OBi+OBr+OBlyzjgY3jgofjgYbjgZMNCivjgZ/jgYvjgY0s44KI44GG44GE44GhDQor44Gf44GL44GK44GLLOOBn+OBj+OChA0KK+OBn+OBi+OBiuOBiyzjgbLjgo3jgobjgY0NCivjgYTjgb7jgYTjgZrjgb8s44KI44GX44GKDQor44Gf44GL44GV44KPLOOBn+OBi+OBlw0KK+OBn+OBi+OBmSzjgaTjgojjgZcNCivjgZ/jgZHjgYQs44Gb44Gk44GTDQor44Gf44GR44Gq44GLLOOBn+OBkeOBlw0KK+OBn+OBkeOBluOBjSzjgojjgZfjgZMNCivjgZ/jgb7jgYTjgZcs44Gy44Gn44GC44GNDQor44Gf44G+44GNLOOBl+OBkuOCiw0KK+OBn+OBquOBiyzjgYLjgY3jgokNCivjgZ/jgavjgZDjgaEs44Gq44GK44GNDQor44Gf44GG44GhLOOBsuOCjeOBquOBig0KK+OBpuOCieOBv+OBpCzjgaDjgYTjgZnjgZENCivjgajjgaAs44G+44KEDQor44Go44G/44Gq44GMLOOBl+OCk+OBhOOBoeOCjeOBhg0KK+OBqOOBv+OBnyzjgYLjgY3jgogNCivjgajjgpPjgZDjgYYs44Gy44Gn44Go44GXDQor44Gk44Gt44GL44KPLOOBsuOCjeOBteOBvw0KK+OBpOOBpOOBhCzjgYvjgaTjgojjgZcNCivjgYbjgaHjgaAs44Gf44GR44GXDQor44GG44Gh44Gv44GXLOOBn+OBj+OBig0KK+OBhuOBiOOBoCzjgb7jgZXjgbLjgZMNCivjgYTjgajjgYYs44KI44GG44GE44GhDQor44GG44GI44GgLOOBsuOCjeOBlw0KK+OBhuOBiOOBr+OCiSzjgbLjgafjgYLjgY0NCivjgbXjgZjjgZ8s44GX44G7DQor44GG44KB44GgLOOBpuOBpOOChA0KK+OBhuOCgeOBr+OCiSzjgoTjgojjgYQNCivjgYbjgonjgbks44Gy44GV44GTDQor44KP44Gf44G5LOOChOOBmeOBlw0KK+OChOOBjOOBleOBjSzjgZnjgb/jgYsNCivjgoTjgY7jgoLjgags44Gy44KN44GXDQor44KE44GY44G+LOOBi+OBpOOBvw0KK+OChOOBvuOBoCzjgb/jgaHjgZMNCivjgoTjgb7jgaAs44Gf44GL44GXDQor44KE44G+44GgLOOBv+OBi+OBkw0KK+OChOOBvuOBkOOBoSzjgZXjgajjgZMNCivjgoTjgb7jgZDjgaEs44Go44KC44GTDQor44KE44G+44KC44GoLOOChOOBmeOBsuOCjQ0KK+OChOOBvuOCguOBqCzjgoTjgZnjgbLjgo0NCivjgoTjgb7jgoLjgags44Gq44GK44GNDQor44KE44G+44KC44GoLOOBk+OBhuOBmA0KK+OChOOBvuOBrSzjgYvjgZrjgbLjgo0NCivjgoTjgb7jgZXjgY0s44Gv44KL44Gu44KKDQor44KE44G+44GX44GfLOOBi+OBmuOBjQ0KK+OChOOBvuOBluOBjSzjgb7jgZXjgobjgY0NCivjgoTjgb7jgZXjgY0s44Go44GX44KEDQor44KE44Gq44GM44KPLOOBn+OBkeOBlw0KK+OChOOBquOBjuOBoCzjgoTjgZnjgYoNCivjgYrjga4s44Gy44Gn44Gu44G2DQor44KE44Gq44GO44GV44KPLOOChOOBmeOBlw0KK+OChOOBluOBjSzjgarjgYrjgY0NCivjgoTjgZbjgo8s44Gb44GE44GYDQor44KI44GT44KE44G+LOOBsuOCjeOBkw0KK+OCiOOBk+OChOOBvizjgZ/jgZHjgZcNCivjgojjgoIs44GN44KH44GG44GYDQor44KI44GX44GgLOOBsuOBp+OBig0KK+OCiOOBl+OBoCzjgobjgYbjgZgNCivjgojjgZfjgaAs44Gv44KL44Gy44GTDQor44KI44GX44Gv44KJLOOBguOChuOBvw0KK+OCiOOBl+OBr+OCiSzjgb7jgZXjgbLjgacNCivjgojjgZfjgoLjgoos44Gf44GL44GXDQor44Gc44Gj44GkLOOBsuOBp+OCiA0KK+OBguOBuSzjgojjgZfjgZ/jgaANCivjgYLjgaDjgaEs44GT44GG44GYDQor44GC44GE44GL44KPLOOBsuOCjeOBteOBvw0KK+OBguOBi+OBiCzjgb/jgaHjgZMNCivjgYLjgpPjganjgYYs44G+44GNDQor44GC44GV44G/LOOBv+OBlQ0KK+OBhOOBvuOBquOBiyzjga/jgovjgogNCivjgbnjgaPjgbcs44KG44GG44GZ44GRDQor44G544Gj44G3LOOBsuOCjeOBguOBjQ0KK+OBoeOBi+OBr+OCiSzjgYrjgZXjgoANCivjgbXjgZjjgYQs44G/44Gk44Go44GXDQor44G144GY44GV44GNLOOBn+OBi+OChuOBjQ0KK+OBteOBj+OBl+OBvizjgYLjgZrjgZUNCivjgY/jgo3jgaAs44Go44GX44G/DQor44KC44KKLOOBvuOBleOBsuOBpw0KK+OCj+OBn+OBquOBuSzjgZ/jgYvjgYgNCivjgY/jgo3jgaAs44GC44GV44GTDQor44G/44KE44GG44GhLOOBmOOCheOCk+OBkw0KK+OBhOOBqOOBhizjgY3jgY/jgZMNCivjgYTjgYTjgaAs44G+44KG44G/DQor44GL44KP44GuLOOBvuOBhA0KK+OBguOBhOOBhuOCiSzjgajjgZfjgYoNCivjga7jgZbjgY0s44Gm44KL44GC44GNDQor44Gz44Gf44GrLOOBguOChOOBvw0KK+OBn+OBq+OBguOBhCzjgaDjgYTjgZnjgZENCivjgYLjgYrjgY0s44GY44KF44KT44GE44GhDQor44GK44GNLOOBjeOBleOBjw0KK+OBguOBiuOBjSzjgYvjgZrjgobjgY0NCivjgYLjgYrjgoTjgY4s44GR44KT44GfDQor44GC44GL44Gr44GXLOOBquOBiuOBsuOCjQ0KK+OBguOBleOBiizjgb7jgZXjgbLjgZMNCivjgYLjgZXjgY/jgoks44GL44GIDQor44GC44GX44GW44KPLOOBi+OBmuOBjQ0KK+OBguOBn+OBjyzjgbLjgo3jgZcNCivjgYLjgaDjgaEs44KG44GG44GTDQor44GE44Go44GGLOOChuOCig0KK+OBl+OBvuOCguOBqCzjgYLjgajjgoANCivjgZXjgYTjgajjgYYs44G+44GV44KLDQor44GX44Gu44Gv44KJLOOBi+OBpOOBvw0KK+OBiuOBi+OBrizjgbLjgafjgZMNCivjgYrjgYvjgoLjgags44Gy44KN44GXDQor44Gy44KJ44GL44KPLOOCiOOBlOOCjeOBhg0KK+OBmeOBjOOBrOOBvizjgajjgoLjgb/jgaENCivjgYLjgarjgZbjgo8s44G/44Gu44KLDQor44GC44KJ44GELOOBqOOBl+OBi+OBmg0KK+OBguOCieOBhCzjgY3jgpPjgoQNCivjgYLjgonjgYvjgo8s44KG44G/44GTDQor44GC44KJ44GL44GtLOOBguOBjeOBkw0KK+OBguOCieOBjSzjgZfjgZLjga7jgooNCivjgYLjgpPjganjgYYs44Gy44KN44Gy44GVDQor44GE44GG44GhLOOBvuOBk+OBqA0KK+OBhOOBkeOBoCzjgoTjgZnjgbLjgo0NCivjgYTjgZHjgoQs44G+44GV44GNDQor44GE44GX44GL44KPLOOBsuOCjeOBlw0KK+OBhOOBl+OBi+OCjyzjgb7jgZXjgb8NCivjgYTjgZfjgYvjgo8s44Gy44KN44GXDQor44GE44GX44GL44KPLOOBk+OBhuOBhOOBoQ0KK+OBhOOBl+OBjOOBjSzjgbLjgo3jgZcNCivjgYTjgZfjgZDjgo0s44GL44GK44KLDQor44GE44GX44Gv44KJLOOBvuOBleOBjQ0KK+OBhOOBneOCgOOCiSzjgY/jgb/jgZMNCivjgYTjgZ/jgYzjgY0s44GN44KI44G/DQor44GE44GE44GgLOOBl+OCjeOBhg0KK+OBhOOBoeOBi+OCjyzjgZ3jgogNCivjgYTjgaHjgYvjgo8s44KI44GX44Go44GXDQor44GE44GnLOOBhOOBn+OCiw0KK+OBhOOBqOOBhizjgbLjgo3jgbXjgb8NCivjgYTjgazjgYQs44G+44GN44GoDQor44GE44Gu44GG44GILOOBruOBtuOBsuOCjQ0KK+OBhOOBvuOBq+OBlyzjgoDjga3jgZ/jgYsNCivjgYTjgb7jga/jgoTjgZcs44GX44KT44GE44GhDQor44GE44KP44GV44GNLOOBvuOBleOBpOOBkA0KK+OBhOOCj+OBleOBjSzjgb7jgobjgb8NCivjgYTjgo/jgoLjgags44GR44GE44GE44GhDQor44GG44GI44GuLOOBiOOBhOOBmA0KK+OBhuOBiOOBrizjgYvjgZrjga7jgooNCivjgYbjgaHjgYTjgZEs44KI44GX44GC44GNDQor44GG44Gh44KE44G+LOOCiOOBl+OBn+OBiw0KK+OBhuOCgeOBoCzjgZfjgoXjgYbjgZgNCivjgYbjgoHjgoDjgoks44GV44KIDQor44GG44KB44KC44GoLOOBoeOBu+OBkw0KK+OBhuOCi+OBl+OBsOOCiSzjgojjgZfjgbLjgZMNCivjgYjjgZDjgb4s44GI44KKDQor44GI44KJLOOBquOBiuOChA0KK+OBiuOBhuOBleOBiyzjgb7jgZXjgZ/jgYsNCivjgYrjgYrjgYvjgo8s44G+44GV44G/44GkDQor44GK44GK44GV44KPLOOBvuOBleOBsuOBkw0KK+OBiuOBl+OBvizjgojjgZfjgZ/jgYsNCivjgYrjgZfjgb4s44G+44Gq44G2DQor44GK44GK44GZ44GMLOOBn+OBpOOBsuOBkw0KK+OBiuOBiuOBn+OBqyzjgbLjgafjgY0NCivjgYrjgYrjgaQs44G+44GV44G144G/DQor44GK44GK44Gk44GLLOOBn+OBoOOBsuOBlQ0KK+OBiuOBrSzjgb7jgZXjgobjgY0NCivjgYrjgYrjga4s44GC44GN44KJDQor44GK44GK44Gv44GXLOOBkeOCk+OBhOOBoQ0KK+OBiuOBiuOBr+OBlyzjgZHjgpPjgZQNCivjgYrjgYrjgbDjgoTjgZcs44GX44KT44GYDQor44GK44GK44KI44GXLOOBn+OBi+OChuOBjQ0KK+OBiuOBi+OCguOBqCzjgZ/jgaDjgobjgY0NCivjgYrjgYzjgZXjgo/jgoks44KI44GX44GTDQor44GK44GM44KPLOOBsuOBp+OBruOCig0KK+OBiuOBj+OBn+OBqyzjgZTjgYYNCivjgYrjgY/jgoDjgoks44KG44GG44GTDQor44GK44GQ44KJLOOBsuOCjeOBkw0KK+OBhOOBhOOBi+OCjyzjgZHjgpPjgYTjgaHjgo0NCivjgYrjgZDjgoks44GV44Go44GXDQor44GK44GW44KPLOOBn+OBi+OBruOCig0KK+OBiuOBluOCjyzjgbLjgafjgbLjgZMNCivjgYrjgYrjga4s44KE44GZ44Gu44KKDQor44GL44GN44KC44GoLOOCjOOBhOOBkw0KK+OBi+OBjeOCguOBqCzjgbLjgo3jgZcNCivjgYvjgZLjgoTjgb4s44Go44KC44G/DQor44GE44GX44GL44KPLOOBsuOCjeOBlw0KK+OBi+OBneOCiizjgoTjgZnjgbLjgagNCivjgYvjgaTjgb8s44Gq44GK44GNDQor44GL44Go44GGLOOBquOBiuOBkw0KK+OBi+OBqOOBhizjga7jgorjgZMNCivjgYvjgajjgYYs44GX44GS44Gu44KKDQor44GL44Go44GGLOOBoOOBhOOBmeOBkQ0KK+OBi+OBqOOBhizjgZHjgYTjgZgNCivjgZHjgZrjgYss44GC44GN44KJDQor44GL44Gp44KP44GNLOOBv+OBpOOBl+OCjeOBhg0KK+OBi+OBreOBkyzjgYLjgY3jgbLjgo0NCivjgYvjga7jgYYs44Gu44KK44GTDQor44GL44G/44KE44G+LOOBsuOCjeOBi+OBmg0KK+OBi+OCj+OBl+OBvizjgbLjgo3jgobjgY0NCivjgYvjgo/jgZss44GV44Go44KLDQor44GL44KP44GuLOOBi+OBmuOBjQ0KK+OBi+OCj+OCguOBqCzjgb7jgZXjgZ/jgYsNCivjgYvjgo/jgoLjgags44GX44KTDQor44GL44KP44GbLOOBquOBiuOBjQ0KK+OBi+OCk+OBoCzjgbLjgafjgajjgZcNCivjgY3jgY/jgaEs44Gy44GV44KG44GNDQor44GN44GP44GhLOOBguOBjeOBkw0KK+OBjeOBj+OBoSzjga7jgbbjgYoNCivjgY3jgZ/jgYLjgonjgZcs44G+44GE44GTDQor44GN44Gf44GK44GLLOOBv+OChuOBjQ0KK+OBjeOBn+OBmOOBvizjgYLjgY3jgbLjgo0NCivjgY3jgZ/jgoDjgoks44Gf44GR44G/DQor44GN44Gf44KA44KJLOOBguOBpOOBlw0KK+OBjeOBpuOCiSzjgZXjgajjgZcNCivjgY3jga7jgZfjgZ8s44GY44KF44KT44GTDQor44GN44KA44KJLOOBn+OBi+OBsuOCjQ0KK+OBjeOCiuOBhizjgZ/jgZHjgZcNCivjgY/jgZXjgYvjgbks44G+44GI44GTDQor44GP44G844GfLOOBk+OBmeOBkQ0KK+OBj+OBvuOBjOOBhCzjgZHjgpPjgZjjgo3jgYYNCivjgY/jgb7jga4s44GV44KKDQor44GP44KK44Gv44KJLOOBvuOBleOBqA0KK+OBj+OCi+OBl+OBvizjgYLjgY3jgojjgZcNCivjgarjgYvjgYzjgo8s44Gh44GLDQor44GT44GE44GnLOOBsuOBp+OBjQ0KK+OBk+OCk+OBrizjgb7jgZXjgZcNCivjgZPjgoLjgags44KG44GG44GTDQor44GT44GMLOOBj+OBq+OBr+OCiw0KK+OBk+OBmOOBvizjgZ/jgYTjgZgNCivjgZPjgavjgZcs44GL44KI44GTDQor44GT44Gw44KE44GXLOOBm+OBhOOBhg0KK+OBk+OBvuOBpCzjgZHjgYTjgYTjgaENCivjgZPjgb/jgoQs44GX44KT44KEDQor44GT44KT44GpLOOBleOBqOOBlw0KK+OBk+OCk+OBqSzjgaTjgajjgoANCivjgZTjgajjgYYs44Gg44GE44GZ44GRDQor44GV44GE44Go44GGLOOBn+OBpOOChA0KK+OBleOBhOOBqOOBhizjgZPjgYbjgZgNCivjgZXjgYTjgajjgYYs44Gy44Gn44GNDQor44GV44GL44KC44GoLOOBn+OBkeOBig0KK+OBleOBj+OBvizjgajjgZfjgYvjgZoNCivjgZfjgb/jgZos44Gq44GK44GNDQor44GV44Gg44Gh44GLLOOBkeOBhOOBmOOChQ0KK+OBleOBqCzjgZXjgojjgZMNCivjgZXjgajjgYYs44GY44KF44KTDQor44GV44Go44GGLOOBsuOBqOOBvw0KK+OBleOBqOOBhizjgb/jgYsNCivjgZXjgajjgYYs44GL44Gk44KG44GNDQor44GV44KP44GgLOOBmOOCheOCk+OBmA0KK+OBhOOBneOCjyzjgb7jgZXjgbLjgZMNCivjgZfjgoIs44Gf44GL44GC44GNDQor44GX44KF44GGLOOBvuOBleOChA0KK+OBl+OBiuOBi+OCjyzjgYLjgoTjga4NCivjgZfjgYrjgZbjgo8s44G+44GV44Gy44GTDQor44GX44GL44GG44GhLOOBv+OBpOOCiw0KK+OBl+OBmuOCiizjgZ/jgZHjgZcNCivjgZfjga4s44Gm44Gk44GYDQor44GX44Gu44GW44GNLOOBmOOCheOCk+OBmOOCjeOBhg0KK+OBl+OBruOBoCzjgb7jgZnjgb8NCivjgZfjga7jgaAs44KG44GN44GTDQor44GX44Gw44GW44GNLOOBguOBjeOBsuOBqA0KK+OBl+OBsOOBnyzjgZXjgYrjgooNCivjgZfjgb7jgoDjgoks44Gu44G844KLDQor44GX44G/44GaLOOBv+OBvuOBkw0KK+OBl+OBv+OBmizjgobjgYbjgZgNCivjgZfjgb/jgZos44GV44Go44GXDQor44GX44G/44GaLOOBl+OCk+OBhOOBoeOCjeOBhg0KK+OBn+OBjeOBn+OBqyzjgobjgYbjgYTjgaENCivjgZfjgonjga4s44Gf44GL44KG44GNDQor44GZ44GI44Gy44KNLOOBkeOCkw0KK+OBmeOBjOOBhCzjgb/jgY3jgYoNCivjgZnjgYzjgojjgZcs44GR44KT44GYDQor44GZ44GM44KP44KJLOOBl+OBkuOBteOBvw0KK+OBmeOBjuOBhuOCiSzjga7jgorjgYLjgY0NCivjgZnjgY7jgZfjgb4s44GX44KF44KT44GZ44GRDQor44GZ44GO44KC44GoLOOBsuOBleOBlw0KK+OBmeOBmuOBi+OCjyzjgojjgZfjgYgNCivjgZnjgaAs44GC44GN44KI44GXDQor44GZ44G/44GL44KPLOOBi+OBpOOBguOBjQ0KK+OBmeOBv+OBrizjgZPjgYbjgZgNCivjgZvjgY3jgZDjgaEs44GX44GS44G/DQor44Gd44GI44GY44G+LOOChOOBmeOBquOCig0KK+OBn+OBiuOBiyzjgZ/jgaDjgZcNCivjgZ/jgYvjgY0s44GN44KH44GG44GTDQor44Gf44GL44GX44G+LOOBl+OCk+OBhOOBoQ0KK+OBn+OBi+OBmyzjgY3jgojjgZ/jgYsNCivjgZ/jgYvjga/jgZcs44GL44Gk44KEDQor44Gf44GL44Gv44GXLOOBn+OBpOOChA0KK+OBn+OBi+OBr+OBlyzjgYjjgYTjgYTjgaENCivjgZ/jgY3jgZ/jgass44Gq44GqDQor44Gf44GR44GG44GhLOOBsuOCjeOBtuOBvw0KK+OBn+OBkeOBoCzjgZ/jgaDjgobjgY0NCivjgZ/jgZHjgaAs44GR44GE44GE44GhDQor44Gf44GR44GgLOOBhOOBj+OBsuOBkw0KK+OBn+OBkeOCgOOCiSzjgarjgYrjgbLjgZUNCivjgZ/jgZQs44G+44GV44GTDQor44Gf44GN44GW44KPLOOBoeOBi+OBkw0KK+OBn+OBquOBiyzjgojjgYbjgZMNCivjgZ/jgarjgYss44KK44KH44GG44GZ44GRDQor44Gf44Gq44GLLOOBkeOCk+OBmA0KK+OBhOOCj+OBrizjgYvjgZrjgZfjgZINCivjgZ/jgarjgYss44Gy44KN44GXDQor44Gf44Gr44GILOOBleOBoOOCiOOBlw0KK+OBn+OBq+OBkOOBoSzjgYvjgZrjgYgNCivjgZ/jgavjgZDjgaEs44GYDQor44Gf44Gr44G+44GkLOOBsuOCjeOBlw0KK+OBn+OBsOOBnyzjgb/jgo/jgZMNCivjgZ/jgb7jgY0s44Gf44Gk44KEDQor44GE44Gb44KC44GoLA0KK+OBn+OBv+OChCzjgYLjgY0NCivjgaHjgoPjgoLjgags44G144GV44GXDQor44Gh44GuLOOCiOOBhuOBhOOBoeOCjeOBhg0KK+OBpOOBi+OCguOBqCzjgojjgYbjgZMNCivjgaTjgaHjga/jgZcs44KA44Gt44Gy44KNDQor44Gm44KJ44GV44KPLOOBn+OBpOOChA0KK+OBqCzjgb/jgaHjgZMNCivjgbXjgY/jgZfjgb4s44Gq44GK44GXDQor44Go44GwLOOBjeOCh+OBhuOBkw0KK+OBqOOBv+OCiOOBlyzjgbLjgajjgY0NCivjgajjgoDjgo0s44Gq44Gk44Gy44GTDQor44Go44KI44GX44G+LOOBmOOCheOCk+OBhOOBoQ0KK+OBqOOCiuOChOOBvizjgarjgYrjgobjgY0NCivjgarjgYTjgajjgYYs44Gy44KN44KG44GNDQor44GE44GnLOOBv+OBoeOBi+OBmg0KK+OBr+OBnyzjgbXjgZXjgYoNCivjgarjgYvjgYzjgY0s44G/44GNDQor44Gq44GL44GM44KPLOOBn+OBi+OBkw0KK+OBquOBi+OBluOCjyzjgojjgZfjgZMNCivjgarjgYvjgacs44GX44KH44GG44GTDQor44Gq44GL44Gv44KJLOOBguOBpOOBlw0KK+OBn+OBkeOBhuOBoSzjgYvjgaTjgbLjgZUNCivjgarjgYvjgoDjgoks44GV44Go44GXDQor44Gq44GL44KA44KJLOOBn+OBkeOBlw0KK+OBquOBmSzjgbLjgo3jgZcNCivjgavjgYTjgoDjgoks44Go44GX44Gy44KNDQor44Gr44GX44GK44GLLOOBsuOBp+OBguOBjQ0KK+OBq+OBl+OBi+OCjyzjgYLjgY3jgokNCivjgavjgZfjgZbjgo8s44GX44GS44KLDQor44Gr44GX44GoLOOChOOBmeOBkw0KK+OBq+OBl+OBrizjgZPjgYbjgZgNCivjgavjgZfjga/jgoks44Gq44GK44GNDQor44Gr44GX44KA44KJLOOBj+OBq+OCguOCig0KK+OBreOCguOBqCzjgZXjgaHjgogNCivjga7jgZDjgaEs44GI44G/DQor44Gu44GQ44GhLOOBvuOBleOChA0KK+OBruOBmOOCiizjgojjgZfjgarjgYoNCivjga7jgZjjgoos44Gf44GL44Gy44KNDQor44Gu44KA44KJLOOBi+OBmuOBsuOBkw0KK+OBr+OBo+OBnyzjgYLjgY3jgZMNCivjga/jgZfjgbAs44Gh44GL44GTDQor44Gv44GX44KC44GoLOOChuOBiw0KK+OBr+OBl+OCguOBqCzjgYTjgaHjgo3jgYYNCivjgYTjga7jgYbjgYgs44GN44KI44GXDQor44Gv44GX44KC44GoLOOBn+OBi+OBkw0KK+OBr+OBm+OBjOOCjyzjgZHjgpPjgYTjgaENCivjga/jgZ8s44GL44Ga44GNDQor44Gv44GfLOOCiOOBl+OBi+OBpA0KK+OBr+OBn+OBrizjgb7jgYTjgZMNCivjga/jgoTjgZcs44Gy44KN44KG44GNDQor44Gv44KE44GXLOOBj+OBv+OBkw0KK+OBr+OCieOBoCzjgajjgoLjgZMNCivjga/jgonjgaAs44GR44KT44GE44GhDQor44Gw44GwLOOBsuOCjeOBteOBvw0KK+OBsOOBsCzjgYLjgZnjgYsNCivjgbLjgZDjgaEs44Gu44G244Gy44GTDQor44Gy44GQ44GhLOOBjeOCh+OBhuOBkw0KK+OBsuOBleOBjSzjgZTjgYbjgZgNCivjgbLjgZjjgoos44GI44KKDQor44Gy44KJ44KE44G+LOOBn+OBi+OChuOBjQ0KK+OBteOBj+OBoCzjgb7jgobjgb8NCivjgbXjgZjjgYQs44Gy44KN44G144G/DQor44GZ44GM44GELOOBleOBqOOBvw0KK+OBteOBmOOBnyzjgYvjgZrjgoQNCivjgbXjgZjjgZ8s44KG44GN44GTDQor44G144GY44GfLOOBruOBtuOBkw0KK+OBteOBmOOBn+OBqyzjgZXjgajjgZcNCivjgbXjgZjjgarjgb8s44GX44GS44KG44GNDQor44G144GY44GuLOOBn+OBpOOChuOBjQ0KK+OBruOBruOCgOOCiSzjgYvjgaTjgZgNCivjgbXjgZss44Gf44Gm44KLDQor44GZ44GO44KC44GoLOOCiOOBhuOBhOOBoeOCjeOBhg0KK+OBu+OBneOBi+OCjyzjgZ/jgaTjgYoNCivjgbvjgorjgYbjgaEs44Gq44GK44G/DQor44G744KK44GL44KPLOOBsuOCjeOBguOBjQ0KK+OBvuOBjeOBrizjgYTjgY/jgZMNCivjgb7jgY3jga4s44Gu44KK44Gy44GTDQor44G+44GX44GTLOOBqOOBl+OBsuOBkw0KK+OBvuOBmeOBoCzjgYvjgZrjgoQNCivjgb7jgZnjgbbjgaEs44Gf44GL44GXDQor44G+44GZ44G244GhLOOBguOBjeOBsuOCjQ0KK+OBvuOBpOOBhCzjgb7jgY3jgZMNCivjgb7jgaTjgZbjgo8s44G+44GV44GoDQor44Go44G/44Gq44GMLOOBn+OBi+OBlw0KK+OBvuOBpOOBquOBjCzjgojjgZfjgZMNCivjgb7jgaTjgarjgYws44KG44GNDQor44GZ44Ga44GNLOOChOOBmeOBmA0KK+OBvuOBpOOCgOOCiSzjgZHjgYTjgYTjgaENCivjgb7jgaTjgoLjgags44Gy44Gn44G144G/DQor44G+44Gk44KC44GoLOOBqOOCguOBsuOBlQ0KK+OBvuOBpOOChOOBvizjga7jgorjgZMNCivjgb7jgaTjgoTjgb4s44GT44GG44GYDQor44G+44Gk44KE44G+LOOBpuOBpOOChA0KK+OBvuOBpOOCiOOBlyzjgYLjgY3jgZMNCivjgb7jga4s44Gb44GE44GYDQor44G+44KL44GK44GLLOOBqOOBl+OChOOBmQ0KK+OBv+OBi+OBvyzjgojjgYbjgZMNCivjgb/jgY0s44Gy44KN44GNDQor44G/44Ge44GQ44GhLOOBvuOBleOBvw0KK+OBv+OBnyzjgb/jga7jgosNCivjgb/jga0s44Gh44GC44GNDQor44G/44Gt44GKLOOBleOBqOOCiw0KK+OBleOBqOOBhizjgYvjgaTjga7jgooNCivjgYTjgY/jgZ8s44GC44KEDQor44G/44KE44GW44GNLOOBsuOBp+OBjQ0KK+OBn+OBi+OBjuOCjyzjgZfjgZLjgosNCivjgb/jgojjgZcs44KI44GG44GTDQor44KA44GL44GELOOBv+OBpOOBn+OBiw0KK+OCgOOCieOBi+OBvyzjgb7jgZXjgYLjgY0NCivjgYTjgZfjgaAs44Gk44GL44GVDQor44KA44KJ44GL44G/LOOBleOBqOOBlw0KK+OCgOOCieOBi+OBvyzjgYvjgZrjgZ/jgYsNCivjgoDjgonjgoTjgb4s44GT44GG44GYDQor44KA44KJ44KE44G+LOOBvuOBk+OBqA0KK+OCgOOCjeOBhCzjgb7jgZXjgZ/jgYsNCivjgoLjgZ/jgYQs44GL44Ga44G+44GVDQor44KC44Go44GNLOOBi+OBmuOChA0KK+OCguOBqOOCgOOCiSzjgZPjgYbjgZgNCivjgoLjgoos44GL44Gk44Gy44KNDQor44GL44GbLOOBguOBjeOCiOOBlw0KK+OCguOCiuOBl+OBnyzjgYvjgZrjgbLjgo0NCivjgoLjgorjgZ8s44Gq44GK44GNDQor44KC44KN44Go44G/LOOBsuOBp+OBruOBtg0KK+OCguOCjeOBr+OBlyzjgobjgY3jgZMNCivjgYvjgo/jgoLjgags44Gy44KN44Gu44KKDQor44KE44GQ44GhLOOBpuOCi+OBsuOBkw0KK+OChOOBmOOBvizjgarjgYrjgZMNCivjgoTjgZnjgYvjgo8s44Gy44KN44GXDQor44KE44GZ44GgLOOBvuOBleOBsuOBqA0KK+OChOOBpOOBmuOBiyzjgb7jgorjgZMNCivjgoTjgarjgY7jgZXjgo8s44KG44GNDQor44KE44G+44GQ44GhLOOBjeOCk+OChA0KK+OChOOBvuOBleOBjSzjgZ/jgYvjgoQNCivjgoTjgb7jgZbjgY0s44Gy44KN44KG44GNDQor44KE44G+44GW44GNLOOCiOOBl+OBkw0KK+OChOOBvuOBluOBjSzjgZvjgYTjgZjjgo3jgYYNCivjgoTjgb7jgaAs44GR44KT44Gf44KN44GGDQor44KE44G+44GgLOOBquOBiuOBjQ0KK+OChOOBvuOBoCzjgZ/jgYvjga7jgooNCivjgoTjgb7jgarjgYss44GX44KF44GG44GE44GhDQor44GP44KK44Gv44KJLOOBvuOBleOBjQ0KK+OChOOBvuOCguOBqCzjgb7jgZXjgZMNCivjgoTjgb7jgoLjgags44GX44KT44Gf44KN44GGDQor44KE44G+44KC44GoLOOChOOBmeOBlw0KK+OBvuOBpOOBiizjgb7jgZnjgb8NCivjgojjgY4s44Gh44Go44GbDQor44KI44GT44KE44G+LOOBsuOBp+OBjQ0KK+OCiOOBk+OChOOBvizjgojjgYbjgZMNCivjgojjgZfjgYvjgo8s44Gq44GK44Gy44GnDQor44KI44GX44GL44KPLOOCiOOBl+OBkw0KK+OCiOOBl+OBoCzjgZPjgYbjgZgNCivjgo/jgY/jgYQs44Gm44Gk44KEDQor44KP44Gf44Gq44G5LOOBkeOCk+OBn+OCjeOBhg0KK+OCj+OBn+OBquOBuSzjgZfjgbsNCivjgo/jgZ/jgarjgbks44KI44GX44Gy44GoDQor44KP44Gf44Gq44G5LOOBvuOBquOBtg0KK+OBr+OChOOBlyzjgZ/jgYvjgZcNCivjgoTjgb7jgaAs44Gu44G244KEDQor44KP44GL44Gw44KE44GXLOOBleOBqOOBlw0KK+OBhOOCj+OCgOOCiSzjga7jgorjgb7jgZUNCivjgo/jgZ/jgarjgbks44Gu44G844KLDQor44GP44KP44GX44G+LOOBmeOBkOOCiw0KK+OBiuOBsOOBnyzjgZXjgajjgb8NCivjgYLjgarjgZbjgo8s44Gy44GL44KLDQor44KE44GOLOOBk+OBmeOBkQ0KK+OBguOBi+OBiizjgajjgoLjgYvjgZoNCivjgZfjgb/jgZos44Gq44Gk44GTDQor44GV44GL44KC44GoLOOBsuOBp+OBruOBtg0KK+OBguOBiuOBjSzjgZfjgZLjgYLjgY0NCivjgYLjgZrjgb4s44GT44GG44GE44GhDQor44GE44GE44GgLOOBiOOBqg0KK+OBhOOBkeOBhuOBoSzjgoHjgbDjgYgNCivjgYTjgZfjgYvjgo8s44Gm44Gk44GKDQor44GE44Gd44GM44GELOOBvuOBk+OBqA0KK+OBhOOBqOOBhizjgZ/jgaDjgbLjgo0NCivjgYTjgbAs44GC44Ga44GVDQor44GE44KP44KC44GoLOOBl+OCk+OBmA0KK+OBhuOBiOOBleOBiyzjgZ/jgZHjgbLjgo0NCivjgYbjgYjjga4s44G+44KC44KLDQor44GG44GI44Gy44KJLOOBkeOCk+OBlA0KK+OBhuOBoeOChOOBvizjgZHjgpPjgZgNCivjgYbjgoHjgarjgYQs44GZ44GZ44KADQor44GI44KA44KJLOOBn+OBi+OBsuOCjQ0KK+OBiuOBjeOBnyzjgZjjgoXjgpPjgYTjgaENCivjgYrjgYrjgY/jgbws44Gy44KN44GXDQor44GK44GK44Gf44GrLOOBguOChA0KK+OBiuOBiuOBpCzjgbLjgo3jgZMNCivjgYrjgYrjgaTjgYss44KI44GX44G/DQor44GK44GL44GX44KNLOOBl+OCjeOBhg0KK+OBiuOBoCzjgYLjgaTjgZcNCivjgYrjga4s44Gy44KN44G/DQor44GL44Go44GGLOOCiOOBl+OChuOBjQ0KK+OBi+OBreOBsuOBlSzjgarjgYrjgZMNCivjgYvjgb/jgoQs44GK44GV44KADQor44GL44KP44GELOOBn+OBj+OCiOOBlw0KK+OBi+OCj+OBiuOBiyzjgbLjgafjgY0NCivjgY3jgZ/jga4s44GY44KF44KT44GE44GhDQor44GN44G244GXLOOBpOOBuA0KK+OBjeOCgOOCiSzjgb7jgZXjgZ/jgYsNCivjgY3jgoDjgoks44G+44GV44GTDQor44GP44GV44GLLOOBleOBqOOBvw0KK+OBj+OBsCzjgZ/jgYvjgZcNCivjgY/jgbzjgZ8s44GX44KN44GGDQor44GP44KN44GE44KPLOOBl+OCk+OBmA0KK+OBj+OCj+OBsOOCiSzjgYjjgYTjgZgNCivjgZPjgYTjgZEs44GZ44G/44GKDQor44GT44GE44Gf44Gw44GXLOOBpOOBi+OBlQ0KK+OBk+OBhuOBoCzjgbLjgafjgYoNCivjgZPjgYbjgaAs44G+44GV44Gf44GRDQor44GT44GX44KA44KJLOOBguOBpOOBlw0KK+OBk+OChOOBquOBjizjgbLjgZXjgZMNCivjga/jgajjgoos44KG44GG44GTDQor44GV44GL44GG44GILOOBleOCjw0KK+OBguOBuSzjgZPjgYbjgYTjgaENCivjgZXjgajjgYYs44KE44GZ44G/44GkDQor44GV44Go44GGLOOBvuOChuOBvw0KK+OBleOBqOOBhizjgojjgZfjgYoNCivjgZfjgb7jgaAs44KK44GIDQor44GE44G+44GELOOBi+OBpOOBguOBjQ0KK+OBmeOBjOOBrOOBvizjgaHjgogNCivjgZvjgY0s44GC44GN44Gy44KNDQor44Gb44GuLOOBn+OBi+OChOOBmQ0KK+OBguOBuSzjgb7jgZXjga/jgosNCivjgZ/jgYvjgZnjgYws44G+44KG44G/DQor44Gf44GL44GZ44GOLOOBruOBtuOBkw0KK+OBn+OBi+OBr+OBlyzjgajjgoLjgb8NCivjgZ/jgYvjga/jgZcs44GR44KT44Gf44KN44GGDQor44Gf44GL44Gv44GXLOOBguOBjeOBsuOBqA0KK+OBn+OBi+OBr+OBlyzjgZPjgYbjgZgNCivjgZ/jgYvjga/jgZcs44Gy44GV44G/DQor44Gf44GN44KC44GoLOOChuOBhuOBnw0KK+OBn+OBj+OBvCzjgojjgZfjgobjgY0NCivjgZ/jgZHjgYbjgaEs44Go44KC44GTDQor44Gf44GR44Gq44GLLOOChuOBjeOBsuOBkw0KK+OBn+OBquOBiyzjgoLjgajjgYTjgaENCivjgZ/jgarjgYss44Gh44Ga44KLDQor44Gf44Gw44GfLOOBi+OBpOOChuOBjQ0KK+OBn+OBv+OChCzjgZ/jgZHjgZcNCivjgZ/jgoDjgoks44KM44GE44GTDQor44Gh44KF44GG44G+LOOBsuOCjeOBn+OBiw0KK+OBu+OCk+OBlOOBhizjgobjgYbjgZMNCivjgarjgYvjgYos44Gu44G244GC44GNDQor44Gq44GL44GM44KPLOOBk+OBhuOBhOOBoQ0KK+OBquOBi+OBnuOBrizjgbLjgafjga7jgooNCivjgarjgYvjga4s44G/44Gk44Gy44KNDQor44Gr44Gj44GfLOOBr+OBqg0KK+OBq+OCjyzjgorjgofjgYbjgYTjgaENCivjga7jgZgs44Gy44KN44GC44GNDQor44Gv44GW44GuLOOBn+OBi+OBlw0KK+OBr+OBl+OCguOBqCzjgajjgYrjgosNCivjga/jgZfjgoLjgags44KG44GG44GTDQor44Gv44KE44GXLOOBoeOBiuOCig0KK+OBr+OChOOBlyzjgajjgYbjgZMNCivjga/jgonjgZDjgaEs44Gf44GL44GXDQor44Gv44KL44GQ44GhLOOBqOOBl+OBig0KK+OBsuOCieOBpyzjgYTjgZXjgoANCivjgbLjgonjga4s44G+44GV44Gf44GLDQor44Gy44KJ44KE44G+LOOChuOBjQ0KK+OBteOBi+OBluOCjyzjgbLjgo3jgb8NCivjgbXjgY/jgb7jgZks44GL44KIDQor44G144GP44KC44KKLOOBvuOBleOCiw0KK+OBteOBmOOBi+OCjyzjgZfjgZLjgosNCivjgbvjgZfjga4s44Gu44KK44GTDQor44G744Gd44GuLOOBguOBjeOBsuOBqA0KK+OBvuOBpOOBiuOBiyzjgojjgZfjgarjgooNCivjgb7jgaTjgoDjgoks44Gq44G/44GTDQor44G/44Ga44GL44G/LOOBpuOBpOOCjeOBhg0KK+OBv+OBpOOBhCzjgZ/jgYTjgZnjgZENCivjgb/jga7jgYvjgb8s44Go44GX44KG44GNDQor44G/44KE44KC44GoLOOBn+OBpOOBlw0KK+OCgOOCieOBi+OBvyzjgZHjgYTjgZMNCivjgoTjgZ8s44Gq44GK44GTDQor44KE44Gq44GO44GfLOOBv+OBruOCiw0KK+OChOOBvuOBkOOBoSzjgZPjgYbjgZgNCivjgoTjgb7jgZfjgZ8s44G/44Gh44GKDQor44KE44G+44KC44GoLOOChuOBhuOBhOOBoeOCjQ0KK+OCiOOBl+OBn+OBkSzjgbLjgafjga7jgooNCivjgojjgZfjgoDjgoks44GI44KKDQor44Gy44GQ44GhLOOBn+OBkeOBlw0KK+OBr+OBl+OCguOBqCzjgYLjgaTjgZcNCivjgo/jgZ/jgarjgbks44KG44GNDQor44GC44GN44GwLOOBn+OBkeOBsuOBkw0KK+OBguOBjeOCguOBqCzjgb/jgaTjgogNCivjgYLjgb7jgoQs44G+44GV44KLDQor44GC44KT44Gp44GGLOOBpuOBpOOCjeOBhg0KK+OBguOCk+OBluOCjyzjga7jgbbjgbLjgo0NCivjgYLjgZXjga/jgZ8s44GL44Ga44Gy44GoDQor44Gw44GwLOOBv+OBoeOBsuOBqA0KK+OBueOBo+OBl+OChyzjgabjgovjgbLjgagNCivjgaHjgYvjgoLjgags44GV44GK44KKDQor44Gh44KH44GGLOOBoOOBhOOBmeOBkQ0KK+OBteOBmOOBsuOCiSzjgb/jgo/jgZMNCivjgbXjgZjjgYQs44GR44GE44GTDQor44G144GY44Gf44GrLOOCiOOBl+OBi+OBpA0KK+OBteOBi+OBoCzjgb7jgZXjgYLjgY0NCivjgbXjgovjgaDjgaYs44Gq44GK44GNDQor44G144KL44KE44G+LOOBsuOCjeOChuOBjQ0KK+OBlOOBhuOBoCzjgY3jgojjga7jgbYNCivjgZPjgYTjgZEs44KI44GX44KG44GNDQor44Gv44GL44G+44GgLOOBk+OBhuOBnuOBhg0KK+OBr+OBm+OBjOOCjyzjgZ/jgYvjgYoNCivjga/jgZfjgoLjgags44GT44GG44GE44GhDQor44Gv44Gj44GfLOOBkeOCk+OBhOOBoQ0KK+OBr+OBo+OBqOOCiizjgZ/jgYvjgbLjgo0NCivjga/jgoTjgYvjgo8s44Gy44KN44GNDQor44Gv44KE44GL44KPLOOBquOCi+OBpOOBkA0KK+OBsuOBrOOBvizjgZ/jgY/jgoQNCivjgbLjgo3jgY0s44Go44KC44Gy44GnDQor44G744KK44Gu44GG44GhLOOChuOBhuOBmA0KK+OBu+OBneOBrizjgYLjgaTjgZMNCivjgbXjgZjjgYrjgYss44Gy44Gn44GNDQor44G144KL44GfLOOBquOCi+OBjQ0KK+OBteOBleOBrizjgZHjgpMNCivjgbXjgZfjgb8s44GK44GV44KADQor44GE44Gf44GpLOOBsuOBqOOBlw0KK+OBhOOBoCzjgb7jgZXjgbLjgo0NCivjgYTjga/jgoks44GR44GEDQor44GE44GE44GgLOOBn+OBi+OBsuOCjQ0KK+OBhOOBquOChOOBvizjgbLjgo3jgYvjgZoNCivjgYTjga4s44GY44KF44KT44GE44GhDQor44GE44Gu44GG44GILOOCgeOBkOOBvw0KK+OBhOOBl+OBoCzjgojjgZfjgaTjgZANCivjgYTjgZfjgoLjgags44KE44GZ44KI44GXDQor44GE44GX44KPLOOBv+OBpOOCiw0KK+OBhOOBl+OCj+OBn+OCiizjgbLjgo3jgYvjgaQNCivjgYTjgZ/jgY/jgoks44Gq44G744GTDQor44GE44Go44GGLOOBn+OBi+OBsuOCjQ0KK+OBhOOBqOOBhizjgZfjgoXjgYbjgYTjgaENCivjgYTjgo/jgYQs44Gq44Gq44GTDQor44GE44GW44KPLA0KK+OBmOOBtizjgZnjgZDjgosNCivjgYvjgbDjgoTjgb4s44G+44GV44GNDQor44GL44GELOOChuOBhuOBkw0KK+OBi+OBjeOBrOOBvizjgZjjgoXjgpMNCivjgYvjgY3jgZbjgY0s44G+44GV44GNDQor44GL44GP44GgLOOBl+OCheOBhuOBmeOBkQ0KK+OBi+OBquOBjOOCjyzjgZfjgpMNCivjgYvjgpPjgbks44Gf44GR44GKDQor44GL44KT44GgLOOChOOBmeOBsuOBqA0KK+OBi+OBleOBoCzjgb/jgaHjgZ/jgYsNCivjgYvjgo/jgYQs44Go44KC44GTDQor44GV44GV44GNLOOBhOOBj+OBiA0KK+OBi+OCj+OBmyzjgZXjgbsNCivjgY3jgoLjgags44G/44GN44GtDQor44GN44Gf44Gv44KJLOOBruOBtuOBig0KK+OBjeOBn+OCgOOCiSzjgojjgZfjgYoNCivjgZPjgbDjgoTjgZcs44Gy44KN44GIDQor44GT44G244GRLOOChuOBhuOBkw0KK+OBk+OBhOOBmuOBvyzjgYvjgarjgZMNCivjgZPjgb/jgoTjgb4s44G+44KK44GTDQor44GT44KT44Gu44GL44Ga44Gy44KNLOOChOOBmeOBsuOBqA0KK+OBk+OBl+OBi+OCjyzjgZ/jgYvjgobjgY0NCivjgZPjgpPjga4s44GT44GG44GE44GhDQor44GP44G8LOOBvuOBleOBruOBtg0KK+OBj+OBvOOBi+OCjyzjgarjgaTjgY0NCivjgY/jganjgYYs44Go44KC44GLDQor44GP44KK44Gv44KJLOOBi+OBpOOBhOOBoQ0KK+OBj+OCjeOBjizjgZXjgYjjgZMNCivjgb7jgaHjgaAs44Gv44KL44G/DQor44G+44GY44G+LOOChOOBmeOBkw0KK+OBhOOBl+OBmizjga7jgorjgobjgY0NCivjgb7jgYvjgbks44Gy44KN44KIDQor44G+44KL44KE44G+LOOBsuOBp+OBguOBjQ0KK+OBvuOBmeOBoCzjgYvjgogNCivjgb7jgaTjgYzjgZXjgY0s44GC44GN44KJDQor44G+44Gk44GELOOBn+OBkeOBlw0KK+OBvuOBpOOBhCzjgZXjgYrjgooNCivjgb7jgaTjgoLjgags44GR44KT44GYDQor44G+44KP44Gf44KKLOOBi+OCk+OBmA0KK+OBv+OBoeOCguOBqCzjgajjgZfjgbLjgo0NCivjgb/jgY0s44GZ44G/44GTDQor44G/44Gk44G+LOOBn+OBi+OBruOCig0KK+OBv+OBhuOCiSzjgZHjgYTjgZQNCivjgb/jgo8s44G+44GT44GoDQor44G/44KE44KC44GoLOOBi+OBpOOBsuOBlQ0KK+OBv+OChOOCguOBqCzjgoTjgZnjga7jgbYNCivjgb/jgoTjgoLjgags44Gf44GR44Gu44G2DQor44G/44KE44GfLOOBvuOBleOBlw0KK+OCgOOCieOBi+OBvyzjgajjgYrjgosNCivjgZ/jga/jgoks44Gu44KK44GTDQor44G/44Ga44Gf44GrLOOBqOOCguOBiw0KK+OCguOCiizjgobjgY0NCivjgoLjgorjgZDjgaEs44G+44GV44Gy44GTDQor44KC44KK44GL44KPLOOBsuOCjeOBlw0KK+OCguOCiuOCguOBqCzjgYvjgZrjgb8NCivjgoLjgorjgZ8s44KM44GE44GTDQor44KA44KJ44GL44G/LOOBn+OBpOOBsuOBkw0KK+OBguOBp+OBjOOCjyzjgYLjgYQNCivjgarjgYzjgZXjgYss44Gy44GL44KLDQor44Gq44GM44GfLOOBmOOCheOCig0KK+OBquOBjOOBnyzjgYvjgaTjga7jgbYNCivjgYTjgZbjgo8s44GL44GK44KKDQor44Gq44GL44G/44GtLOOBvuOCguOCiw0KK+OBquOBi+OCgOOCiSzjgbLjgo3jga7jgooNCivjgarjgYvjgoDjgoks44Gf44Gk44KEDQor44GE44KC44GoLOOBk+OBhuOBhOOBoeOCjeOBhg0KK+OBquOBi+OCgOOCiSzjgZ/jgZHjgZcNCivjgarjgYvjgYos44KG44GG44GYDQor44Gq44GL44KE44G+LOOBhuOBl+OCkw0KK+OBquOBi+OBluOCjyzjgY3jgojjgZcNCivjgarjgb/jgY0s44Gv44KL44KI44GXDQor44Gr44GE44G/LOOBguOBjeOBsuOCjQ0KK+OBq+OBhOOBnOOBjSzjgYvjgYrjgooNCivjgavjgZfjgacs44Gy44Gn44GC44GNDQor44Gr44KPLOOBsuOBp+OBjQ0KK+OBruOBuSzjgb/jgZUNCivjgYrjgYrjgZ8s44GX44GS44GC44GNDQor44GK44GM44KPLOOBvuOBleOCiOOBlw0KK+OBiuOBkOOBmSzjgobjgYbjgZnjgZENCivjgYrjgYrjgoLjgags44GX44KH44GG44GYDQor44GK44GX44G+LOOBn+OBi+OBruOCig0KK+OBiuOBiuOBnyzjgZHjgpPjgYTjgaENCivjgYrjgYrjgoQs44Gy44G/44GTDQor44GE44GX44GL44KPLOOCiOOBhg0KK+OBiuOBi+OBoCzjgZ/jgZHjgZcNCivjgYrjgY8s44G144G/44KG44GNDQor44GK44GP44GgLOOBvuOBleOBjQ0KK+OBiuOBl+OBj+OBvCzjgZHjgpPjgYTjgaENCivjgYrjgZzjgY0s44GL44Gk44Gy44GTDQor44KJ44GELOOChuOBhuOBmA0KK+OBhOOBqOOBhizjgajjgoLjgoQNCivjgZXjgYTjgY0s44Gy44KN44GXDQor44GV44GE44Go44GGLOOBn+OBpOOChA0KK+OCiOOBl+OBoCzjgb/jgaHjgoTjgZkNCivjgZXjgZMs44GX44GS44G/44GkDQor44GV44GV44GY44G+LOOBmOOCheOCk+OChA0KK+OBleOBleOBjSzjgobjgY3jgZMNCivjgZXjgajjgYYs44Gk44GQ44Gy44GnDQor44GE44KP44KC44GoLOOBi+OBmuOBsuOBkw0KK+OBleOBqOOBhizjgaHjgYjjgZMNCivjgZXjgo/jgaAs44Gy44Gn44KE44GZDQor44Gb44GN44GL44KPLOOBhOOBmuOBvw0KK+OBm+OBjeOBrSzjgb/jgaTjgYoNCivjgZfjgbDjgZ8s44Gq44GK44GNDQor44GX44GS44Gv44KJLOOBl+OCk+OChA0KK+OBl+OBvuOBiuOBiyzjgYLjgY3jgbLjgZMNCivjgZfjgb/jgZos44GL44Ga44Gy44KNDQor44GX44KCLOOBvuOBleOBguOBjQ0KK+OBl+OCguOCgOOCiSzjgZ/jgYvjgZcNCivjgZfjgoDjgoks44Gf44GL44Gy44GVDQor44Gd44KB44KELOOBguOBjeOBsuOBkw0KK+OBmeOBiOOCiOOBlyzjgZHjgpPjgYTjgaENCivjgZnjgZrjgY0s44Gy44Gn44KG44GNDQor44GZ44Ga44GNLOOBquOBiuOBjQ0KK+OBn+OBi+OBoCzjgYTjgaHjgo3jgYYNCivjgZ/jgYvjga/jgZcsDQor44Gf44GL44GbLOOBvuOBquOBtg0KK+OBn+OBkeOBoCzjgYLjgY3jgokNCivjgZ/jgZHjgYQs44Gy44GV44KI44GXDQor44Gf44GR44KC44GoLOOBr+OBmOOCgQ0KK+OBn+OBvuOBhCzjgajjgZfjgbLjgZMNCivjgZ/jgoDjgoks44Gf44GL44KG44GNDQor44Gf44KA44KJLOOBleOBqOOCiw0KK+OBhOOBl+OBi+OCjyzjgbLjgajjgZcNCivjgZ/jgarjgYss44GT44GG44GE44Gh44KN44GGDQor44Gf44Gq44GLLOOBvuOBleOBsuOCjQ0KK+OBn+OBq+OBkOOBoSzjgZ/jgZHjga7jgooNCivjgZ/jgavjgZDjgaEs44Gy44KN44Gf44GLDQor44Gf44Gr44GQ44GhLOOBkeOCk+OBmA0KK+OBn+OBq+OBkOOBoSzjgZHjgpMNCivjgYTjgZfjgaAs44GC44Gk44GXDQor44Gf44Gr44GX44GfLOOBteOBv+OBrg0KK+OBpuOCieOBq+OBlyzjgaTjgojjgZcNCivjgajjgYrjgoTjgb4s44GN44KH44GG44GTDQor44Go44G/44GfLOOBv+OCjw0KK+OBqOOBreOBjOOCjyzjgZ/jgY8NCivjgajjgojjgaAs44Gu44KK44GTDQor44Go44KI44GfLOOBl+OCheOBhuOBmA0KK+OBpOOBoeOChCzjgojjgZfjgZMNCivjgYTjgZfjgYvjgo8s44Gq44GK44GNDQor44Gk44KA44KJLOOBqOOBl+OBguOBjQ0KK+OBpOOBruOBi+OCjyzjgojjgZfjgb8NCivjgYbjgaHjgaAs44Gy44Go44GXDQor44GG44GV44G/LOOBn+OBkeOBlw0KK+OCj+OBmOOBvizjgorjgZMNCivjgo/jgZ/jgarjgbks44G+44GNDQor44KP44Gf44Gq44G5LOOCiOOBhuOBhOOBoQ0KK+OCj+OBn+OBquOBuSzjgoTjgojjgYQNCivjgoTjgY4s44GR44GE44GE44GhDQor44KE44GOLOOBjeOCh+OBhuOBkw0KK+OChOOBj+OCjyzjgbLjgo3jgbXjgb8NCivjgoTjgb7jgaAs44Gy44KN44GNDQor44KE44G+44GgLOOBn+OBi+OChuOBjQ0KK+OChOOBvuOBkOOBoSzjgajjgZfjgobjgY0NCivjgoTjgb7jga7jgY/jgaEs44G+44GV44GTDQor44KE44G+44GX44GfLOOBk+OBhuOBhOOBoQ0KK+OChOOBvuOBl+OBnyzjgarjgYrjgobjgY0NCivjgoTjgb7jgZbjgY0s44Gy44Gn44KG44GNDQor44KE44G+44GW44GNLOOChuOBn+OBiw0KK+OChOOBquOBjOOCjyzjgZ/jgaTjgo3jgYYNCivjgoTjgZnjgaAs44Go44KI44GC44GNDQor44KE44GZ44GILOOBqOOCguOChuOBjQ0KK+OBhOOBneOBjOOBhCzjgZ/jgaDjga7jgbYNCivjgoTjgZ/jgYzjgYQs44GI44KKDQor44KI44GX44GgLOOCiuOCh+OBhuOBkw0KK+OBn+OBi+OBr+OBlyzjgb7jgZXjgY0NCivjgYrjgYvjgaAs44GX44KF44GG44GE44GhDQor44GC44GK44GNLOOBvuOBleOCiw0KK+OBguOBjeOBsCzjgYLjgY3jgZMNCivjgYLjgbks44GC44GN44GTDQor44GC44G+44GuLOOBvuOBleOBig0KK+OBguOCiuOCguOBqCzjgZfjgoXjgYbjgZgNCivjgYLjgpPjganjgYYs44KG44GNDQor44GE44GL44KPLOOBn+OBhOOBuOOBhA0KK+OBhOOBl+OBhCzjga7jgorjgbLjgo0NCivjgYTjgZfjgYvjgo8s44Gq44GK44GTDQor44GE44GX44Ga44GLLOOChuOBvw0KK+OBhOOBl+OBsOOBlyzjgZfjgoXjgpPjgZnjgZENCivjgYTjgZfjgoLjgags44KK44KH44GG44GZ44GRDQor44GE44GnLOOBleOBqOOBkw0KK+OBhOOBoeOBruOBmyzjgZXjgajjgZcNCivjgYTjgarjgaAs44G+44Gq44G2DQor44GE44Gs44GELOOChOOBmeOCiA0KK+OBhOOBruOBhuOBiCzjgb7jgb/jgZMNCivjgYTjgoTjgb4s44GT44GG44GYDQor44GE44KP44GV44GNLOOBv+OBmuOBvuOBlQ0KK+OBhOOCj+OBvizjgYvjgZrjgZMNCivjgYTjgo/jgb7jgaQs44GK44GV44Gq44GKDQor44GG44GI44GgLOOBsuOCjeOBkw0KK+OBhuOBiOOBrizjgbLjgo3jgY0NCivjgYbjgaHjgaAs44Gf44GL44GKDQor44GG44GpLOOBkeOCk+OBmA0KK+OBhuOCgeOBr+OCiSzjgZ/jgYvjgZcNCivjgYjjgZDjgaEs44Go44G/44GV44G2DQor44GI44Gu44GNLOOCiOOBl+OBkw0KK+OBiOOCguOBqCzjgb/jgaTjgoLjgagNCivjgYjjgoLjgoos44Gb44GE44KEDQor44Gq44GL44GM44KPLOOBquOBiuOBguOBjQ0KK+OBiuOBiuOBnyzjgbLjgafjgobjgY0NCivjgYrjgYzjgZ8s44KE44GZ44GXDQor44GK44GM44KPLOOBruOBtuOBn+OBiw0KK+OBiuOBjOOCjyzjgozjgYTjgZMNCivjgYrjgY/jgYQs44Gf44GP44GYDQor44GK44GP44KA44KJLOOCguOBqOOBkw0KK+OBiuOBiuOBn+OBqyzjgabjgovjgYLjgY0NCivjgYrjgaTjgajjgoIs44KG44GN44GTDQor44GK44Gr44GW44KPLOOBl+OBkuOBjQ0KK+OBiuOBrizjga7jgorjgYLjgY0NCivjgYrjgbDjgaos44Gb44GE44GE44Gh44KN44GGDQor44GK44G+44GM44KKLOOBvuOBleOChA0KK+OBi+OBjeOBluOCjyzjgabjgaTjgbLjgo0NCivjgYvjgZHjgbIs44GI44KK44GTDQor44GL44GV44Gv44KJLOOBvuOBqeOBiw0KK+OBi+OBmCzjgYrjgZXjgoANCivjgYvjgZjjgZ8s44Gf44GL44GKDQor44GL44GY44GfLOOBn+OBi+OBig0KK+OBi+OBmOOChOOBvizjgb/jga7jgosNCivjgYvjgajjgYYs44KI44GX44Gu44G2DQor44GL44Gq44GgLOOBkeOBhA0KK+OBi+OBreOBkyzjga7jgbbjgYvjgaQNCivjgYvjga3jgZMs44KK44KH44GG44GfDQor44GE44Gf44GuLOOBkeOCk+OBmeOBkQ0KK+OBquOBjOOBpOOBvizjgZfjgoXjgYbjgbjjgYQNCivjgYvjga7jgYYs44Gb44GE44GYDQor44GL44G+44GILOOBquOBiuOBjQ0KK+OBi+OCj+OBhCzjgabjgaTjgYoNCivjgYvjgo/jgb7jgZ8s44Gy44KN44GNDQor44GL44KT44GuLOOBvuOBhOOBkw0KK+OBjeOBhuOBoSzjgYTjgZrjgb8NCivjgY3jgZcs44KI44GG44GTDQor44GN44Gf44GM44KPLOOBqOOCguOBruOBtg0KK+OBjeOBruOBl+OBnyzjgarjgorjgajjgZcNCivjgY3jgofjgYbjgYzjgY8s44G+44GT44GoDQor44GP44G8LOOBqOOCguOBruOCig0KK+OBj+OBvOOBnyzjgZ/jgY/jgoQNCivjgY/jgbzjgZ8s44GX44KT44G644GEDQor44GP44KK44Gv44KJLOOCiuOBiA0KK+OBj+OCiuOChOOBvizjgZHjgYTjgZMNCivjgYTjgZfjgYzjgY0s44Go44GX44G144GVDQor44GP44KN44GELOOBhOOBpOOCjeOBhg0KK+OBk+OBhuOBleOBjSzjgZPjgYbjgYTjgaENCivjgZPjgYbjgaAs44GC44Gk44GXDQor44GT44Gw44KE44GXLOOBruOBtuOBguOBjQ0KK+OBk+OBsOOChOOBlyzjgabjgaTjgoQNCivjgZPjgbDjgoTjgZcs44KG44GG44GZ44GRDQor44GT44Gw44KE44GXLOOBk+OBhuOBmA0KK+OBhOOBruOBhuOBiCzjga7jgbbjgYLjgY0NCivjgZXjgYTjgbss44Gq44KL44Gy44KNDQor44GV44GL44GM44KPLOOCiOOBhuOBuOOBhA0KK+OBi+OCj+OCgOOCiSzjgobjgZ/jgYsNCivjgZXjgZXjgYrjgYss44KI44GG44GTDQor44GV44GV44GNLOOBruOBvOOCiw0KK+OBleOBqOOBhizjga7jgorjgYvjgZoNCivjgZXjgajjgYYs44G+44Gq44G2DQor44GV44Gq44GgLOOBiuOBleOCgA0KK+OBleOCi+OChOOBvizjgZHjgpPjgYTjgaENCivjgZfjgYrjgaQs44GI44GE44GZ44GRDQor44GX44GK44Gu44KELOOBl+OBruOBtg0KK+OBl+OBiuOChOOBvizjga7jgbzjgosNCivjgZfjgY7jga/jgoks44Gy44KN44KG44GNDQor44GX44GX44GpLOOBj+OBq+OBig0KK+OBl+OBruOBluOBjSzjgYvjgZrjgbLjgagNCivjgZfjgbDjgZ8s44G/44Gu44KLDQor44GX44G/44GaLA0KK+OBl+OCh+OBhuOBrizjgZfjgpPjgYTjgaENCivjgZfjgonjgY0s44Gy44KN44KG44GNDQor44GZ44GO44GK44GLLOOBv+OBpOOBi+OBmg0KK+OBmeOBjuOBr+OCiSzjgY3jgojjgZfjgZINCivjgZnjgZrjgY0s44Gy44GV44Gm44KLDQor44GZ44Ga44GNLOOBl+OBkuOChuOBjQ0KK+OBmeOBv+OChOOBvizjgZvjgYTjgZgNCivjgZvjgaPjgZ8s44G+44GV44GNDQor44GE44GX44KP44GfLOOBoOOBhOOBmOOChQ0KK+OBm+OCk+OBlOOBjyzjgb/jga7jgosNCivjgZ/jgYvjgYrjgYss44KG44G/DQor44Gf44GL44GW44KPLOOBn+OBi+OBl+OBkg0KK+OBn+OBi+OBr+OBlyzjgYLjgoTjgZMNCivjgZ/jgYvjgoDjgoks44Gf44GL44KG44GNDQor44Gf44GN44GoLOOBsuOBp+OBjQ0KK+OBn+OBquOBiyzjgYvjgZoNCivjgZ/jgarjgYss44GC44GN44GTDQor44GE44Go44GGLOOBmOOCheOCk+OBmA0KK+OBn+OBquOBuSzjgZHjgpPjgZgNCivjgZ/jgavjgZDjgaEs44G+44Gq44G2DQor44Gh44KD44KP44KT44KELOOCiOOBl+OBr+OCiw0KK+OBpuOCieOBleOBiyzjgbLjgo3jgY0NCivjgajjgZPjgo0s44GY44KF44KT44GE44GhDQor44Gq44GL44GELOOBn+OBi+OBlw0KK+OBquOBi+OBiizjgZfjgpPjgZgNCivjgarjgYzjgYrjgYss44G/44G7DQor44Gq44GL44GM44KPLOOCguOBqOOBguOBjQ0KK+OBquOBi+OBmOOBvizjgZnjgbLjgaENCivjgarjgYzjgZss44Gf44Gk44KEDQor44Gq44GL44GuLOOBm+OBhOOBnw0KK+OBquOBi+OBrizjgZgNCivjgarjgYzjga4s44KG44GG44GTDQor44GE44GR44GgLOOBguOBjeOBkw0KK+OBquOBi+OCgOOCiSzjgb7jgorjgZMNCivjgarjgYvjgoTjgb4s44GL44Gk44Go44GXDQor44Gr44GKLOOBmOOCheOCk+OBhOOBoQ0KK+OBq+OBl+OBiizjga7jgorjgZMNCivjgavjgZfjgYvjgYQs44Go44GX44G/44GkDQor44Gr44GX44GW44GLLOOCiOOBl+OBkw0KK+OBq+OBl+OBoCzjgaDjgYTjgZnjgZENCivjgavjgZfjgaAs44Gf44GL44GXDQor44GE44GE44GY44G+LOOBvuOBleOBjQ0KK+OBq+OBl+OBr+OCiSzjgYvjgZrjgobjgY0NCivjgavjgZfjgoDjgoks44GL44Ga44KEDQor44Gt44KN44KBLOOBsuOCjeOBlw0KK+OBruOBmOOBvizjgZXjga3jgbLjgo0NCivjga7jgarjgYss44Gg44GE44GZ44GRDQor44Gv44GX44GwLOOBruOCiuOBi+OBmg0KK+OBr+OBoeOChCzjgZ/jgYvjgbLjgo0NCivjga/jgaPjgajjgoos44GTDQor44GE44GE44GgLOOBsuOCjeOChuOBjQ0KK+OBr+OBtizjgb7jgZPjgagNCivjga/jgoTjgYvjgo8s44Gm44Gk44KN44GGDQor44Gv44KE44GXLOOBquOBiuOBkw0KK+OBr+OChOOBl+OBvizjgbLjgafjgZcNCivjga/jgoks44Gf44GP44G/DQor44Gy44GM44GX44GgLOOBvuOBleOCiw0KK+OBm+OBjeOBkOOBoSzjgY3jgofjgYbjgYTjgaENCivjgbLjgonjgYQs44GL44GK44KKDQor44Gy44KN44GZ44GILOOBsuOCjeOChuOBjQ0KK+OBsuOCjeOBr+OBnyzjgZ/jgY/jgoQNCivjgbXjgY/jgZfjgb4s44G/44Gk44GKDQor44G144GY44GKLOOBpuOCk+OBuuOBhA0KK+OBteOBmOOBnyzjgobjgYbjgYTjgaHjgo3jgYYNCivjgbXjgZjjgb7jgY0s44KG44GN44Gy44GTDQor44G144GY44KP44KJLOOBqOOBiuOCiw0KK+OBteOCi+OBhOOBoSzjgobjgYbjgZnjgZENCivjgbvjgZXjgYss44Gf44GR44GXDQor44G744GX44GuLOOBk+OBhuOBmA0KK+OBu+OCiizjgobjgY3jgZMNCivjgbvjgorjgoLjgags44KG44GG44GYDQor44G744KT44G+LOOChuOBjeOBruOBtg0KK+OBvuOBiOOBi+OCjyzjgZ/jgZHjga/jgosNCivjgb7jgYjjgaAs44Gf44GL44Gy44GoDQor44G+44GI44GgLOOBv+OBjeOBig0KK+OBvuOBiOOBoCzjgZ/jgaTjgoQNCivjgb7jgZXjgYQs44GP44G/DQor44G+44Gk44GELOOBsuOBp+OBruOBtg0KK+OBvuOBpOOBluOCjyzjgaHjgYvjgokNCivjgb7jgaTjgaAs44Gf44GL44KG44GNDQor44G+44Gk44Go44KCLOOBvuOBleOBquOBig0KK+OBvuOBpOOBquOBjCzjgZHjgpPjgZgNCivjgb7jgaTjgoLjgags44KI44GG44GZ44GRDQor44G/44Ga44GQ44GhLOOBqOOCguOBn+OBiw0KK+OBv+OChOOCguOBqCzjgb7jgobjgb8NCivjgb/jgoTjgoLjgags44KE44GZ44GYDQor44KA44KJ44GL44G/LOOBi+OBmuOBsuOBpw0KK+OCgOOCieOBi+OBvyzjgb7jgZXjgbLjgo0NCivjgoDjgonjgarjgYss44GV44Go44GXDQor44KC44Gh44Ga44GNLOOBn+OBj+OChA0KK+OCguOBqOOBj+OCiSzjgajjgoLjgZMNCivjgoLjgoos44GP44Gr44GL44GaDQor44KC44KK44KELOOBu+OBvuOCjA0KK+OChOOBmeOBhCzjgZ/jgYTjgZLjgpMNCivjgoTjgZnjgaAs44G/44GN44GTDQor44KE44GZ44GgLOOBjeOCiOOBsuOBqA0KK+OChOOBnyzjgYvjgZrjgbLjgo0NCivjgoTjgZ/jgY0s44Gu44G244GKDQor44KE44GhLOOBteOBv+OBsuOBkw0KK+OChOOBrizjgbLjgo3jgZcNCivjgoTjgb7jgYTjgZrjgb8s44KI44GX44GC44GNDQor44KE44G+44GK44GLLOOBvuOBleOBjQ0KK+OChOOBvuOBkOOBoSzjgoTjgZnjgbLjgo0NCivjgoTjgb7jgZDjgaEs44KI44GX44Gu44KKDQor44KE44G+44GW44GNLOOBguOBjeOBig0KK+OChOOBvuOBluOBjSzjgarjgaoNCivjgoTjgb7jgZfjgZ8s44G+44GE44GTDQor44KE44G+44KC44GoLOOBkeOCkw0KK+OCiOOBk+OBnOOBjSzjgZ/jgYTjgaENCivjgojjgZfjgaAs44Gq44GK44GoDQor44KI44GX44GuLOOChOOBmeOBig0KK+OCiOOBl+OBvyzjgZ/jgYvjgZcNCivjgojjgaAs44Gf44GL44Gy44KNDQor44KI44GgLOOBsuOCjeOBguOBjQ0KK+OCjeOBmCzjgbXjgb/jgYLjgY0NCivjgo/jgaAs44G+44G/DQor44KP44Gf44Gq44G5LOOChuOBjeOBig0KK+OCj+OBn+OBquOBuSzjgbLjgafjgY0NCivjgo/jgZ/jgarjgbks44GL44Ga44GKDQor44KP44Gf44G5LOOBn+OBi+OBlw0KK+OBi+OBruOBhizjgZ/jgYvjgajjgZcNCivjgavjgaPjgZ8s44GK44GV44KADQor44GC44GK44GNLOOBl+OCheOBhg0KK+OBguOBiuOBjSzjga/jgarjgZMNCivjgYLjgYrjgoTjgb4s44G+44GV44GC44GNDQor44GC44GK44KE44G+LOOBrOOBhA0KK+OBguOBjeOBsCzjgZHjgYTjgYTjgaENCivjgYLjgZXjgaAs44G+44KK44GTDQor44GC44Gg44GhLOOBqOOCguOBvw0KK+OBguOBoOOBoSzjgobjgYbjgZMNCivjgYLjgajjgbks44Gv44KL44GoDQor44GC44G5LOOBi+OBpOOBsuOBkw0KK+OBguOBuSzjga7jgbbjgYoNCivjgYLjgbks44G+44KG44G/DQor44GC44G+44GuLOOBvuOBjQ0KK+OBguOBvuOBrizjgZjjgoXjgpPjgYTjgaHjgo0NCivjgYLjgonjgYvjgo8s44KK44KH44GG44GZ44GRDQor44GC44KK44GfLOOCiOOBhuOBuOOBhA0KK+OBguOCiuOBqOOCgizjgbLjgo3jgZcNCivjgYLjgpPjgZbjgYQs44Gy44Gn44GC44GNDQor44GE44Go44GGLOOCiOOBhuOBmA0KK+OBguOCk+OBqeOBhizjgorjgYjjgZMNCivjgYTjgYzjgonjgZcs44G/44GK44GTDQor44GE44GR44GgLOOBhOOBmuOBvw0KK+OBn+OBi+OBr+OBlyzjgYLjgaTjgYoNCivjgYTjgZfjgbDjgZcs44Gf44Gg44GXDQor44GE44GX44KA44KJLOOChuOBv+OBkw0KK+OBhOOBl+OCguOBqCzjgb7jgorjgZMNCivjgYTjgaHjgYQs44GR44GE44GTDQor44GE44Gh44GL44KPLOOBsuOCjeOBqA0KK+OBhOOBoeOBi+OCjyzjgb7jgY3jgZMNCivjgYTjgaHjga7jgZss44GN44KI44GXDQor44GE44Go44GGLOOBguOBjeOBsuOCjQ0KK+OBhOOBqOOBhizjgb7jgZXjgosNCivjgYTjgajjgYYs44KK44GVDQor44GE44Gq44GK44GLLOOBvuOBleOBteOBvw0KK+OBhOOBquOBsCzjgbLjgo3jgZ/jgZENCivjgYTjgazjgZrjgYss44G+44KG44G/DQor44GE44Gu44GG44GILOOBsuOBp+OBiuOBvw0KK+OBhOOBruOBi+OCjyzjgZfjgoXjgpPjgZnjgZENCivjgYTjgb7jgYQs44Gf44GR44GXDQor44GE44G+44GX44KF44GPLOOCiuOCh+OBhg0KK+OBhOOCj+OBhCzjgajjgoLjgbLjgZMNCivjgYTjgo/jgZfjgb4s44GX44KF44GG44GE44GhDQor44GG44GI44Ge44GuLOOCgeOBkOOBvw0KK+OBhuOBiOOBoCzjgZ/jgYvjgbLjgo0NCivjgYbjgYjjga/jgoks44Gf44GL44KG44GNDQor44GG44GI44Gv44KJLOOCguOBqOOBkw0KK+OBi+OBjeOBnyzjgZHjgpMNCivjgYbjgZXjgb8s44Gy44GY44KKDQor44GG44Gh44GgLOOBsuOCjeOBjQ0KK+OBhuOBoeOBoCzjgYLjgoTjgZMNCivjgYbjgaHjgbzjgoos44G/44GV44GoDQor44GG44KB44GM44GELOOBi+OBmuOBiA0KK+OBhuOCgeOBpCzjgYLjgY3jgbLjgZMNCivjgYbjgoHjga4s44Gf44GR44GXDQor44GG44KJ44GL44KPLOOChuOBjQ0KK+OBhuOCieOBuSzjgZfjgZLjgbLjgZUNCivjgYjjgZDjgaEs44Gf44Gg44GXDQor44GI44Ga44G/LOOBhOOBj+OCiA0KK+OBiOOBruOCguOBqCzjgZ/jgo3jgYYNCivjgYTjgb7jgavjgZcs44Gy44KN44KG44GNDQor44GI44Gu44KC44GoLOOBteOBv+OBkw0KK+OBiOOCk+OBqSzjgojjgZfjgY0NCivjgYrjgYTjgYvjgo8s44G+44GV44GNDQor44GK44GE44GL44KPLOOChuOBjeOBteOBvw0KK+OBiuOBiuOBhCzjgojjgYbjgZgNCivjgYrjgYrjgYTjgZcs44G+44GV44Gv44KLDQor44GK44GK44GfLOOBteOBv+OBi+OBmg0KK+OBiuOBiuOBpOOBiyzjgZfjgpPjgZnjgZENCivjgYrjgYrjgavjgZcs44GL44Gk44GC44GNDQor44GK44GK44Gr44GXLOOBv+OBoeOBiA0KK+OBiuOBi+OBoCzjgoTjgZnjgYoNCivjgYrjgYvjgaAs44G+44GV44KLDQor44GK44GL44GuLOOChuOBjQ0KK+OBiuOBi+OBuSzjgojjgZfjgbLjgo0NCivjgYrjgYvjgbks44Gy44Gn44GC44GNDQor44GK44GL44KA44KJLOOCiuOCh+OBhg0KK+OBiuOBi+OCguOBqCzjgb/jgY0NCivjgYrjgYvjgoLjgags44G/44KG44GNDQor44GK44GM44KPLOOBn+OBiOOBkw0KK+OBiuOBjOOCjyzjgajjgYrjgosNCivjgYrjgY/jgaAs44GR44KTDQor44GK44GP44GgLOOBpuOBpOOChA0KK+OBiuOBluOBjSzjgb7jgb/jgZMNCivjgYrjga4s44Gq44GK44GTDQor44GK44GK44KE44G+LOOBn+OBi+OBlw0KK+OBi+OBhOOBmuOBiyzjgajjgZfjgbXjgb8NCivjgYvjgYzjgb8s44GI44KK44GLDQor44GL44GN44GfLOOBi+OBiuOCiw0KK+OBi+OBjyzjgZPjgYbjgZgNCivjgYvjgZXjgYQs44KG44GN44Gu44KKDQor44GL44GY44GELOOBguOBi+OBrQ0KK+OBi+OBmOOBnyzjgarjgYrjgoQNCivjgYvjgZ/jgYgs44KG44GG44GY44KTDQor44GL44Gf44KE44G+LOOBv+OBpOOBkw0KK+OBi+OBpCzjgajjgYrjgosNCivjgYvjgajjgYYs44Gf44GPDQor44GL44Go44GGLOOBoOOBhOOBmeOBkQ0KK+OBi+OBvyzjgYLjgaTjgZMNCivjgYvjga3jgZMs44GP44Gr44Gy44GoDQor44GL44G+44GgLOOBi+OBmuOBsuOCjQ0KK+OBi+OBvyzjgojjgZfjgabjgosNCivjgYvjgb/jgbLjgZUs44KG44GG44GYDQor44GL44G/44KC44GoLOOBi+OBiuOCig0KK+OBi+OBv+OChCzjgYvjgZrjgYoNCivjgYvjgb/jgoTjgb4s44G+44GNDQor44GL44KP44GL44G/LOOBvuOBmeOBvw0KK+OBi+OCj+OBleOBjSzjgbLjgajjgZcNCivjgYvjgo/jgZss44Gy44KN44GL44GaDQor44GL44KP44Gv44GfLOOBn+OBkeOBoeOBiw0KK+OBi+OCj+OBr+OCiSzjgZjjgoXjgpPjgZMNCivjgYvjgo/jgoDjgoks44GL44Ga44Gy44KNDQor44GL44KP44KC44GoLOOBkeOBhOOBmeOBkQ0KK+OBi+OCj+OCguOBqCzjgbLjgo3jgZcNCivjgYvjgo/jgoLjgags44G/44Gh44GKDQor44GL44KT44GgLOOBn+OBkeOBlw0KK+OBjeOBj+OBoSzjgYjjgooNCivjgY3jgZ/jgYzjgo8s44G+44GV44G244G/DQor44GN44Gf44Gq44GMLOOBleOBi+OBiA0KK+OBjeOBn+OBrizjgZfjgpPjgZQNCivjgY3jgZ/jgoDjgoks44Gf44Gk44KEDQor44GN44Gf44KC44GoLOOBpOOBqOOCgA0KK+OBjeOBruOBiCzjgbLjgo3jgZcNCivjgY3jgbbjgZss44Gf44GL44GIDQor44GN44KA44KJLOOBmOOCheOCk+OBhOOBoQ0KK+OBjeOCgOOCiSzjgajjgoLjgY0NCivjgY3jgoLjgags44Gy44Gn44KG44GNDQor44GN44KC44GoLOOChuOCig0KK+OBjuOCh+OBhuOBtizjgbLjgo3jgZMNCivjgY/jgass44G/44G7DQor44GP44Gr44G+44GVLOOBv+OBiOOBkw0KK+OBj+OBvuOBleOBiyzjgZ/jgYTjgZvjgaQNCivjgY/jgonjgZfjgZIs44GC44GN44GKDQor44GP44KK44Gv44KJLOOBn+OBkeOBlw0KK+OBk+OBhOOBkSzjgoHjgZDjgb8NCivjgZPjgYTjgZHjgaAs44Gf44Gk44KN44GGDQor44GT44GE44Ga44G/LOOBsuOCjeOBlw0KK+OBk+OBhOOBrOOBvizjgb/jgaHjgZMNCivjgZPjgaTjgYss44GL44Ga44GC44GNDQor44GT44GMLOOBl+OBkuOBjQ0KK+OBk+OBl+OCguOBqCzjgbLjgo3jgb/jgaQNCivjgZPjgaDjgb4s44Gf44GE44Gh44KN44GGDQor44GT44Gg44G+LOOBvuOBleOBi+OBmg0KK+OBlOOBqOOBhizjgYLjgorjgojjgZcNCivjgZPjgavjgZcs44Go44KC44GTDQor44GT44Gw44KE44GXLOOCiOOBl+OBmA0KK+OBk+OBsOOChOOBlyzjgb7jgZXjgY0NCivjgZPjgbDjgoTjgZcs44KE44GZ44Gf44GLDQor44GT44Gw44KE44GXLOOBsuOBp+OBsuOBqA0KK+OBk+OBvuOBjSzjgZ/jgaTjgoQNCivjgZPjgb7jgbAs44GL44Ga44Gu44KKDQor44GT44G/44KELOOBi+OBpOOBsuOBkw0KK+OBk+OChOOBvizjgb7jgZXjga7jgooNCivjgZPjgoTjgb4s44KE44GZ44Gu44KKDQor44GV44GE44GNLOOBqOOCguOBsuOBlQ0KK+OBleOBhOOBlOOBhizjgb/jgo/jgZMNCivjgZXjgYTjgajjgYYs44GR44KT44GYDQor44GV44GE44Go44GGLOOBpuOBpOOBig0KK+OBleOBhOOBqOOBhizjgYTjgZXjgoANCivjgYTjgYzjgonjgZcs44GX44KH44GG44GUDQor44GV44GI44GQ44GVLOOBquOBvw0KK+OBleOBi+OBhCzjgYLjgY3jgokNCivjgZXjgYvjgYzjgb8s44GE44Gh44KN44GGDQor44GV44GL44GtLOOBoOOBhOOBjQ0KK+OBleOBi+OCguOBqCzjgajjgoLjga7jgooNCivjgZXjgYvjgoLjgags44G+44GT44GoDQor44GV44GP44KJ44GELOOBsuOCjeOBvw0KK+OBleOBj+OCieOBoCzjgorjgofjgYbjgZgNCivjgZXjgZPjgpMs44G+44GV44Gy44KNDQor44GV44GV44GNLOOBquOBquOBiA0KK+OBleOBleOBr+OCiSzjgo/jgYvjgZMNCivjgZXjgajjgYYs44GS44KTDQor44GV44Go44GGLOOBmOOCheOCk+OBhOOBoQ0KK+OBleOBqOOBhizjgZHjgpPjgZQNCivjgZXjgajjgYYs44Gq44GK44GoDQor44GV44GuLOOBsuOBp+OBguOBjQ0KK+OBleOCjyzjgZHjgpPjgZQNCivjgZfjgbbjgoQs44Gf44Gg44GXDQor44GX44G244KELOOBsuOBp+OBig0KK+OBl+OBvuOBoCzjgb7jgarjgYgNCivjgZfjgb7jgaAs44Gy44Gn44Gf44GRDQor44GX44G+44GgLOOChOOCiOOBhA0KK+OBl+OBv+OBmizjgobjgY3jgYoNCivjgZfjgb/jgZos44Gg44GE44GZ44GRDQor44GX44G/44GaLOOBsuOBp+OBjQ0KK+OBl+OBv+OBmizjgYLjgY3jga4NCivjgZfjgb/jgZos44Gq44GK44KG44GNDQor44GE44Gu44GG44GILOOBkeOBhOOBmeOBkQ0KK+OBl+OCgizjgZXjgajjgZcNCivjgZfjgofjgYbjgaAs44GX44GS44Gu44KKDQor44GY44KT44GuLOOBvuOBk+OBqA0KK+OBmOOCk+OBrizjgorjgoXjgYbjgZgNCivjgZfjgpPjgb7jgaEs44Gf44GR44GXDQor44GZ44GO44GELOOBvuOBleOBquOBig0KK+OBmeOBjuOBiuOBiyzjgZ/jgYvjgbLjgZMNCivjgZnjgY7jgoLjgags44G/44Gh44Gu44KKDQor44GZ44Ga44GNLOOBi+OBmuOBsuOCiQ0KK+OBmeOBmuOBjSzjgaDjgYTjgZnjgZENCivjgZnjgZrjgY0s44GL44Ga44Gy44KNDQor44GZ44Ga44GNLOOBsuOCjeOBl+OBkg0KK+OBmeOBmuOBjSzjgobjgYbjgYTjgaHjgo3jgYYNCivjgZvjgYos44Gu44KK44GTDQor44Gb44GNLOOBneOBhg0KK+OBhOOBl+OBr+OBvizjgZHjgpPjgagNCivjgZ3jga7jgaAs44GT44GG44Gf44KN44GGDQor44Gf44GELOOCiOOBl+OBguOBjQ0KK+OBn+OBi+OBhOOCjyzjgY3jgojjgZcNCivjgZ/jgYvjgY4s44KG44GG44GYDQor44Gf44GL44Gv44GXLOOBvuOBjeOBkw0KK+OBn+OBi+OBr+OBlyzjga7jgbbjgobjgY0NCivjgZ/jgYvjga/jgZcs44G+44GN44GTDQor44Gf44GL44Gv44GXLOOBn+OBkeOBlw0KK+OBn+OBi+OBr+OBlyzjgYLjgY3jgbLjgZMNCivjgZ/jgYvjgoDjgY8s44GR44KT44GXDQor44Gf44GQ44GhLOOBsuOCjeOBkw0KK+OBn+OBkeOBhuOBoSzjgojjgZfjgZMNCivjgZ/jgZHjgYvjgo8s44G+44GV44GXDQor44Gf44GR44KPLOOBl+OCk+OBmA0KK+OBn+OBoOOBvuOBpCzjgbLjgafjgY0NCivjgZ/jgZ/jgoks44GT44GG44GYDQor44Gf44Gq44GLLOOBn+OBi+OBlw0KK+OBn+OBq+OCguOBqCzjgobjgYbjgZgNCivjgZ/jga3jgoDjgoks44GC44GN44G144G/DQor44Gf44Gv44KJLOOBleOBqOOBlw0KK+OBn+OCgOOCiSzjgbLjgo3jgZcNCivjgaDjgpMs44Gf44GL44KG44GNDQor44GE44GE44GgLOOCgOOBreOBruOCig0KK+OBoeOBsCzjgYjjgYTjgZnjgZENCivjgaHjgofjgYbjgajjgY8s44Gy44Gn44KG44GNDQor44Gk44GL44Gv44KJLOOBsuOCjeOChuOBjQ0KK+OBpOOBpOOBvyzjgb7jgZPjgagNCivjgaTjgoLjgoos44G+44KK44GTDQor44Gm44KJ44GX44GfLOOChuOBhuOBhOOBoeOCjeOBhg0KK+OBqeOBhCzjgobjgZ/jgYsNCivjganjgYQs44KI44GX44GIDQor44Gp44GELOOCiOOBhuOBhOOBoQ0KK+OBqOOBl+OBvizjgZPjgYbjgbjjgYQNCivjgarjgYTjgajjgYYs44GT44GG44GYDQor44Gq44GL44GELOOBvuOBleOBsuOCjQ0KK+OBquOBi+OBhCzjgZfjgoXjgYbjgbjjgYQNCivjgarjgYvjgYos44GN44G744GTDQor44Gq44GL44GM44KPLOOBoeOBguOBjQ0KK+OBquOBjOOBleOBjSzjgYvjgYrjgooNCivjgarjgYvjgZjjgb4s44Gf44GL44G144G/DQor44Gq44GL44GY44G+LOOBruOBnuOCgA0KK+OBquOBi+OBl+OBvizjgZXjgarjgYgNCivjgarjgYvjgaAs44GN44KI44GTDQor44Gq44GL44Gv44KJLOOBv+OBquOBkw0KK+OBquOBi+OCgOOCiSzjgZjjgoXjgpPjgZ7jgYYNCivjgarjgYvjgoDjgoks44GX44KF44GG44Gf44KN44GGDQor44Gq44GL44KA44KJLOOChuOCig0KK+OBquOBi+OCgOOCiSzjgZ3jgYbjgYTjgaHjgo3jgYYNCivjgarjgYvjgoDjgoks44G/44Gk44Gy44KNDQor44Gq44GL44KA44KJLOOBi+OBpOOBsuOBkw0KK+OBquOBi+OCgOOCiSzjgbLjgafjgoQNCivjgbvjgZfjga4s44Go44GX44Gv44KLDQor44Gq44GL44KC44GoLOOBguOBjeOBkw0KK+OBhOOBkeOBoCzjgb7jgZXjgZ/jgYsNCivjgarjgYvjgoLjgoos44Go44GK44KLDQor44Gq44GM44KI44GXLOOBn+OBi+OBvuOBlQ0KK+OBquOBp+OBr+OCiSzjgbLjgo3jgZcNCivjgarjgarjgoLjgoos44Gk44Go44KADQor44Gq44KJ44GV44GLLOOBsuOCjeOBlw0KK+OBquOCk+OBsCzjgobjgY0NCivjgavjgZcs44Gk44Gt44GC44GNDQor44Gr44GX44GL44KPLOOBsuOBp+OBguOBjQ0KK+OBq+OBl+OBoCzjgZHjgpPjgZcNCivjgavjgZfjgoDjgoks44KG44GNDQor44Gu44GQ44GhLOOBleOBqOOBlw0KK+OBruOBoCzjgZHjgpPjgYTjgaENCivjga7jgarjgb8s44GZ44GQ44KLDQor44Gu44Gu44GE44Gh44KELOOBvuOBmeOBig0KK+OBruOCgOOCiSzjgajjgoLjgbLjgZMNCivjga7jgoLjgags44KG44GG44GE44GhDQor44Gv44GM44KELOOBquOBiuOChuOBjQ0KK+OBr+OBjuOCj+OCiSzjgoTjgZnjgobjgY0NCivjga/jgY8s44Go44KC44Gy44GoDQor44Gv44GXLOOBn+OBi+OBlw0KK+OBr+OBl+OBmuOCgSzjgobjgYbjgZMNCivjga/jgZfjgbAs44G+44GT44GoDQor44Gv44Gb44G5LOOBn+OBi+OBvuOBlQ0KK+OBr+OBnyzjgb7jgZXjgb/jgaENCivjga/jgZ/jgYgs44G/44GN44GoDQor44Gv44Gf44GuLOOBguOBjeOCiOOBlw0KK+OBr+OBoeOBrizjgZnjgZnjgoANCivjga/jgaPjgajjgoos44KG44GGDQor44Gv44KE44GXLOOCjOOBhOOBkw0KK+OBr+OChOOBl+OBoCzjgYLjgY3jgokNCivjga/jgoTjgbXjga0s44KI44GX44GC44GNDQor44Gv44KJLOOBn+OBpOOBmA0KK+OBr+OCieOBoCzjgY/jgb/jgZMNCivjga/jgonjgaAs44G+44GV44GTDQor44GE44Gu44GQ44GhLOOBi+OBpOOBteOBvw0KK+OBr+OCieOBoCzjgZ/jgYvjgobjgY0NCivjgbLjgYzjgZfjgoTjgb4s44KI44GG44GTDQor44Gy44GQ44GhLOOBsuOBp+OBjQ0KK+OBsuOBlCzjgbLjgo3jgZcNCivjgbLjgaDjga4s44Go44KC44KEDQor44Gy44G+44GNLOOBqOOCguOBruOCig0KK+OBj+OCieOBl+OBkizjgYvjgZrjgobjgY0NCivjgYTjgZfjga/jgoks44KM44GE44GTDQor44Gy44KJ44GfLOOBl+OBkuOBig0KK+OBsuOCjeOBleOCjyzjgobjgY3jgZMNCivjgbLjgo3jgZ8s44GR44GE44GTDQor44G144GL44GV44KPLOOBv+OBjeOBkw0KK+OBteOBi+OBluOCjyzjgorjgYgNCivjgbXjgYvjgZbjgo8s44Gf44GL44GXDQor44G144GP44KA44KNLOOBvuOBleOBqOOCgg0KK+OBteOBmOOBhCzjgabjgaTjgoQNCivjgYTjgajjgYYs44GR44GE44GTDQor44G144GY44GELOOBv+OBiuOBkw0KK+OBteOBmOOBquOBjCzjgZHjgYTjgZgNCivjgbXjgZjjgarjgYws44G144G/44GTDQor44G144GY44KP44KJLOOBruOCiuOBsuOCjQ0KK+OBteOBmOOCj+OCiSzjgorjgYgNCivjgbXjgZjjgo/jgoks44Gq44GK44KG44GNDQor44G144Gf44Gk44GOLOOBpOOCiOOBlw0KK+OBteOBn+OBpOOCguOCiizjgZfjgZrjgYsNCivjgbXjgovjga/jgZ8s44Gu44G244GC44GNDQor44G144KL44KELOOBvuOCiuOBkw0KK+OBuOOCk+OBvyzjgb7jgZXjgosNCivjgbvjgZcs44G+44GE44GTDQor44G744GX44GuLOOBi+OBpOOBguOBjQ0KK+OBu+OCiizjgY3jgb/jgbLjgo0NCivjgbvjgorjgYgs44GX44KT44GYDQor44G744KK44GK44GLLOOBguOBpOOBkw0KK+OBu+OCiuOBi+OCjyzjgajjgoLjgbLjgo0NCivjgb7jgYjjgbXjga0s44Gq44G/44GTDQor44G+44GN44GuLOOChOOBmeOBruOCig0KK+OBvuOBmeOBoCzjgYrjgY/jgagNCivjgb7jgaTjgYbjgoks44Gf44GR44GXDQor44G+44Gk44GX44GfLOOBguOBjeOBlw0KK+OBvuOBpOOCguOBqCzjgbLjgafjgZ/jgYsNCivjgYTjgZDjgaEs44Gf44GL44Gy44KNDQor44G+44Gk44KE44G+LOOBvuOBleOBsuOCjQ0KK+OBvuOBquOBuSzjgaHjga4NCivjgb7jgovjgoTjgb4s44Gq44GK44KG44GNDQor44G/44GG44KJLOOBv+OBoeOCiw0KK+OBv+OBjSzjgZ/jgYvjgobjgY0NCivjgb/jgaTjga/jgZcs44GI44GE44GE44GhDQor44G/44Gk44G5LOOBvuOBleOBqA0KK+OBv+OBqOOBuSzjgbLjgZXjgoQNCivjgaHjgofjgYbjgajjgY8s44Gf44G+44GNDQor44GE44GR44G144GYLOOBruOBtuOCiOOBlw0KK+OBv+OChOOBluOBjSzjgb7jgZXjga/jgosNCivjgb/jgoTjgZbjgY0s44GC44GN44KJDQor44G/44KE44GX44GfLOOCiOOBhuOBkw0KK+OBv+OChOOBnyzjgZ/jgYvjgZcNCivjgoDjgZPjgYbjgoTjgb4s44G/44Gh44Gy44GnDQor44KA44KJ44GELOOBv+OBuw0KK+OCgOOCieOBi+OBvyzjgb7jgb8NCivjgoDjgonjgYvjgb8s44G/44Gk44GC44GNDQor44KA44KJ44GfLOOBqOOCguOChuOBjQ0KK+OCgOOCieOBvuOBpCzjgb7jgZXjgobjgY0NCivjgoLjgajjgY0s44GY44KF44KT44GfDQor44KC44Go44KI44GXLOOBm+OBhOOBhOOBoQ0KK+OCguOBv+OChOOBvizjgYjjgYTjgZgNCivjgoLjgoos44Gf44GL44GXDQor44KC44KKLOOBn+OBkeOChA0KK+OCguOCiuOBhuOBiCzjgojjgZfjgZ/jgYsNCivjgYTjga7jgYbjgYgs44GC44GN44Gu44KKDQor44KC44KK44GG44GhLOOBl+OCk+OBn+OCjeOBhg0KK+OCguOCiuOBnyzjgobjgYbjgY0NCivjgoTjgY7jgZXjgo8s44GL44Ga44G/DQor44KE44GX44G+LOOBk+OBhuOBmA0KK+OChOOBmeOBoCzjgbXjgb/jgbLjgZMNCivjgoTjga4s44G/44GNDQor44KE44GuLOOBn+OBoOOBn+OBiw0KK+OChOOBvuOBkOOBoSzjgZjjgoXjgpMNCivjgoTjgb7jgZXjgY0s44G144G/44Gy44GTDQor44KE44G+44GW44GNLOOBruOBtuOBsuOBkw0KK+OChOOBvuOBl+OBnyzjgZHjgYTjgZgNCivjgoTjgb7jgZfjgZ8s44GC44Gk44GXDQor44KE44G+44GgLOOBn+OBpOOBig0KK+OChOOBvuOBqizjgYvjgaoNCivjgoTjgb7jgb/jgaEs44GR44GE44GZ44GRDQor44GE44Gq44GLLOOBkuOCk+OBnw0KK+OChOOBvuOCguOBqCzjgZPjgYbjgZgNCivjgoTjgb7jgoLjgags44Gf44GP44KEDQor44KE44G+44KC44GoLOOBsuOBp+OBig0KK+OChOOBvuOCguOBqCzjgoDjga3jgZ/jgYsNCivjgobjgbAs44KG44Gf44GLDQor44KI44GT44Gf44GrLOOBvuOBk+OBqA0KK+OCiOOBk+OChOOBvizjgojjgZfjgYoNCivjgojjgZfjgaAs44GL44Ga44Gy44KNDQor44KI44GX44GgLOOBqOOBl+OBi+OBmg0KK+OBhOOCj+OBleOBjSzjgajjgZfjgYvjgZoNCivjgojjgZfjgaAs44KK44KH44GGDQor44KI44GgLOOBiOOBvw0KK+OCj+OBi+OBvuOBpCzjgb/jgaHjgYgNCivjgo/jgZUs44KK44KH44GG44GTDQor44KP44GgLOOBi+OBiuOCiw0KK+OCj+OBn+OBquOBuSzjgZHjgYTjgZ7jgYYNCivjgYTjgo/jgY/jgoks44GI44GE44GE44GhDQor44KP44Gf44Gq44G5LOOBsuOBp+OChuOBjQ0KK+OCj+OBn+OBquOBuSzjgYvjgZrjgb/jga0NCivjgo/jgZ/jgarjgbks44GX44KH44GG44Gf44KN44GGDQor44KP44Gf44Gq44G5LOOChuOBjQ0KK+OCj+OBn+OBquOBuSzjgZfjgZLjgosNCivjgo/jgZ/jgarjgbks44Gy44KN44KG44GNDQor44KP44Gf44Gq44G5LOOBjeOCiOOBi+OBmg0KK+OCj+OBn+OBquOBuSzjgajjgZfjgYgNCivjgYrjgYrjgYQs44Gu44G244Gy44KNDQor44GE44GE44GgLOOChuOBjeOBkw0KK+OCgOOBi+OBhCzjgZ/jgYvjgZcNCivjgbXjgb/jga/jgoks44GL44GK44KKDQor44GL44KP44GU44GILOOBvuOBleOBr+OCiw0KK+OBj+OCjeOBi+OCjyzjgbLjgo3jgb8NCivjgZPjgYbjgaAs44GV44Go44KLDQor44G144GY44GfLOOChuOBhuOBkw0KK+OBk+OBsOOChOOBlyzjgZ/jgZHjgZcNCivjga/jgb7jgoDjgoks44GL44KIDQor44GE44KP44GbLOOChOOBmeOBsuOCjQ0KK+OBn+OBkeOBoCzjgb7jgZXjgosNCivjgYrjgYzjgo8s44Gy44KN44GC44GNDQor44G/44Ga44GfLOOBleOBqOOCiw0KK+OBhOOBhOOBoCzjgYLjgaTjgZcNCivjgYLjgYTjga/jgoks44KE44GZ44GTDQor44GC44GK44GGLOOBqOOBl+OBjQ0KK+OBguOBiuOBjSzjgZfjgpPjgZPjgYYNCivjgYLjgYrjgbAs44Gy44KN44KI44GXDQor44GC44GN44KC44GoLOOBmeOBmeOCgA0KK+OBguOBleOBhCzjgobjgYbjgZMNCivjgYTjgZfjgoTjgb4s44GX44KF44KT44GZ44GRDQor44GC44GV44GKLOOBiOOBv+OBkw0KK+OBguOBleOBoCzjgajjgZfjgY0NCivjgYLjgZXjgaAs44GR44KT44Gf44KN44GGDQor44GC44GV44GuLOOBteOBmOOBig0KK+OBguOBleOBrizjgajjgoLjgbLjgZMNCivjgYLjgZbjgb8s44Go44GX44KG44GNDQor44GC44GZ44G+LOOBl+OCheOBhuOBuOOBhA0KK+OBguOBneOBhizjgobjgYsNCivjgYLjgaDjgaEs44GN44KH44GG44GE44GhDQor44GC44Go44G/LOOBruOCiuOBsuOCjQ0KK+OBguOBquOBvyzjgoTjgZnjgbLjgZUNCivjgYLjgbks44G+44GV44GK44G/DQor44GC44G5LOOBvuOBk+OBqA0KK+OBguOBuSzjgb7jgZPjgagNCivjgYLjgb7jga4s44G+44GV44Go44GXDQor44GC44KE44G5LOOBn+OCjeOBhg0KK+OBn+OBkeOBjeOBnyzjgb7jgarjgbYNCivjgYLjgonjgYQs44G+44GNDQor44GE44Gk44GuLOOBv+OBjeOBig0KK+OBguOCiuOBi+OCjyzjgojjgZfjga7jgbYNCivjgYLjgorjgZ8s44GT44GG44GE44GhDQor44GC44KT44GY44KFLOOBpOOCiOOBlw0KK+OBguOCk+OBqeOBhizjgb7jgZXjgY0NCivjgYLjgpPjganjgYYs44KK44KF44GG44GfDQor44GE44Gh44Gu44GbLOOBk+OBmuOBiA0KK+OBhOOBhOOBrOOBvizjgbLjgo3jgobjgY0NCivjgYTjgYbjgYgs44KI44GX44GC44GNDQor44GE44GM44KJ44GXLOOBguOBjeOBkw0KK+OBhOOBkeOBhuOBoSzjgYrjgorjgYsNCivjgYTjgZHjgYzjgb8s44G/44Gu44KLDQor44GE44GR44GgLOOBn+OBkeOBlw0KK+OBhOOCiuOBnyzjgoTjgZnjgYLjgY0NCivjgYTjgZHjgaAs44GX44KF44GG44GE44GhDQor44GE44GR44GgLOOBl+OCh+OBhuOBhOOBoQ0KK+OBhOOBkeOBoCzjgZjjgo3jgYYNCivjgYTjgZfjgYQs44GY44KF44KT44GE44GhDQor44GE44GX44GELOOBqOOCguOBkw0KK+OBhOOBl+OBhCzjgarjgYrjgb8NCivjgYTjgZfjgYrjgYss44GX44KT44GE44GhDQor44GE44G+44GELOOBn+OBkeOBlw0KK+OBhOOBl+OBi+OCjyzjgorjgofjgYbjgbjjgYQNCivjgYTjgZfjgYvjgo8s44Go44KC44Gu44G2DQor44GE44GX44GQ44KNLOOChuOBjeOBsuOCjQ0KK+OBhOOBl+OBoCzjgZ/jgaTjgobjgY0NCivjgYTjgZvjgY0s44Gf44GR44GXDQor44GE44Gh44GNLOOBvuOBleOBqA0KK+OBhOOBoeOBruOBmyzjgajjgoLjgbLjgo0NCivjgYTjgaHjga7jgb/jgoQs44G144G/44Gf44GRDQor44GE44Go44GGLOOBl+OCk+OBhOOBoQ0KK+OBhOOBqOOBhizjga7jgorjgZMNCivjgYTjgarjgaAs44KI44GX44Gf44GLDQor44GE44Gq44GwLOOBm+OBhOOBhOOBoeOCjeOBhg0KK+OBhOOBr+OCiSzjgY3jgojjgZ/jgYsNCivjgYTjga7jgYbjgYgs44GK44GV44KADQor44GE44Gu44GG44GILOOBruOCiuOBkw0KK+OBhOOBruOBhuOBiCzjgajjgoLjgobjgY0NCivjgYTjgb7jgYTjgZrjgb8s44GC44Gk44GXDQor44GE44G+LOOBleOBqOOBkw0KK+OBhOOBvuOBoCzjgb/jgYoNCivjgYTjgb7jgZos44Gk44KI44GXDQor44GE44G+44KA44KJLOOBv+OBpOOBqOOBlw0KK+OBhOOCiuOBn+OBqyzjgZ/jgY/jgZgNCivjgYTjgo/jgY0s44Gf44Gk44KEDQor44GE44KP44GV44GNLOOBvuOCig0KK+OBhOOCj+OBleOBjSzjgb7jgaoNCivjgYTjgo/jgZnjgY4s44G/44GLDQor44GE44KP44Gv44GXLOOBhOOBoeOCjeOBhg0KK+OBhOOCj+OBtuOBoSzjgarjgbsNCivjgYTjgo/jgbvjgoos44GC44GN44Gy44GTDQor44GG44GI44GgLOOBruOBtuOBiA0KK+OBhuOBiOOBvuOBpCzjgZ/jgYvjgZcNCivjgYbjgZnjgYQs44Go44KC44GE44GhDQor44GG44GZ44GELOOBvuOBleOBsuOCjQ0KK+OBhuOBoeOBoCzjgYvjgYrjgooNCivjgYbjgaTjgb8s44G+44GN44GTDQor44GG44KB44GgLOOBsuOBp+OBruOBtg0KK+OBhuOCieOBrizjgoTjgZnjgbLjgo0NCivjgYjjgYzjgo8s44Gf44GR44GXDQor44GI44GW44GNLOOBguOBpOOBkw0KK+OBiOOBqOOBhizjgZHjgpPjgZgNCivjgYjjga7jgoLjgags44Gv44KL44Gy44KJDQor44GI44Gu44KC44GoLOOBguOBjeOCiQ0KK+OBiOOBvizjgYLjgY3jgZMNCivjgYjjgpPjgaks44Gy44GV44Gu44KKDQor44GI44KT44GpLOOCiOOBl+OBvuOBlQ0KK+OBiuOBhOOBn+OBqyzjgobjgY0NCivjgYrjgYYs44KI44GX44Gy44KNDQor44GK44GK44GELOOBi+OBiuOCiw0KK+OBiuOBiuOBiCzjgYLjgY3jgbLjgo0NCivjgYrjgY0s44GC44KEDQor44GK44GK44GP44G8LOOBteOBv+OBruOCig0KK+OBiuOBiuOBleOCjyzjgYTjgZXjgYoNCivjgYrjgYrjgZXjgo8s44Gy44GV44GXDQor44GE44KP44GN44KKLOOCj+OBn+OCiw0KK+OBiuOBiuOBmeOBvyzjgoLjgajjgbLjgZMNCivjgYrjgYrjgZ8s44G/44Gk44Gy44KNDQor44GK44GK44GfLOOBn+OBi+OBlw0KK+OBiuOBiuOBpOOBiyzjgYLjgY3jga7jgooNCivjgYrjgYrjgaTjgYss44GT44GG44GE44GhDQor44GK44GK44Gk44GLLOOBqOOCguOBsuOCjQ0KK+OBiuOBiuOBpOOBjSzjgZjjgoXjgpMNCivjgYrjgarjgYss44Gg44GE44GZ44GRDQor44GK44GK44Gr44GXLOOCiOOBhuOBkw0KK+OBiuOBiuOBvCzjgb7jgZXjgZMNCivjgYrjgb4s44GN44KI44GXDQor44GK44KA44KJLOOBl+OBruOBtg0KK+OBiuOCgOOCiSzjgY/jgb8NCivjgYTjgZfjgYQs44Gq44GK44GTDQor44GK44GK44KC44KKLOOCiOOBl+OBsuOCjQ0KK+OBiuOBiuOCguOCiizjgbLjgo3jgYvjgZoNCivjgYrjgYrjgoLjgoos44Gu44G244Gy44GVDQor44GK44GK44KP44GgLOOBn+OBi+OBteOBvw0KK+OBiuOBi+OBhCzjgozjgYQNCivjgYrjgYvjgZbjgY0s44Go44KC44G/44GhDQor44GK44GL44GW44GNLOOBi+OBmuOBsuOBqA0KK+OBhOOBkeOBoCzjgYLjgY3jgYoNCivjgYrjgYvjga4s44GI44GE44GE44GhDQor44GK44GL44G5LOOBhuOCieOCiQ0KK+OBiuOBi+OCguOBqCzjgYjjgaTjgZMNCivjgYrjgYzjgo8s44KG44GG44GTDQor44GK44GM44KPLOOBguOBjeOCiQ0KK+OBiuOBjOOCjyzjgorjgofjgYbjgYTjgaENCivjgYrjgYzjgo8s44GN44KI44GuDQor44GK44GK44GM44KP44KJLOOBj+OBq+OBr+OCiw0KK+OBiuOBj+OBr+OCiSzjgZXjgajjgZcNCivjgYrjgY/jgoTjgb4s44G+44GTDQor44GK44GQ44KJLOOChOOBmeOBr+OCiw0KK+OBjeOBn+OCgOOCiSzjgb7jgorjgZMNCivjgYrjgZbjgo8s44GX44GS44G/44GkDQor44GK44GhLOOCguOBqOOBsuOCjQ0KK+OBiuOBrizjgZ/jgYvjgZcNCivjgYrjgYrjga4s44Gh44GLDQor44GK44Gu44Gn44KJLOOBkeOCk+OBlw0KK+OBiuOBsOOBnyzjgYvjgaTjgojjgZcNCivjgYrjgYrjgoTjgb4s44Gh44Ga44KLDQor44GK44KT44GfLOOCgeOBkOOBvw0KK+OBhOOCj+OBnyzjgZ/jgZHjgZcNCivjgYvjgYTjgbbjgY0s44KG44G/DQor44GL44GN44KC44GoLOOBvuOBoeOBkw0KK+OBi+OBluOBkOOBoSzjgb7jgZXjga7jgooNCivjgYvjgZXjgZbjgY0s44KI44GX44Gy44KNDQor44GL44GYLOOBleOBiuOCig0KK+OBi+OBmOOCgOOCiSzjga/jgovjgaoNCivjgYvjgZfjgo/jgYQs44Gu44KK44GTDQor44GL44GX44KP44Gw44KJLOOBquOBiuOChA0KK+OBi+OBn+OBj+OCiSzjgojjgZfjgobjgY0NCivjgYvjgZ/jgoTjgb4s44G+44GE44GTDQor44GL44Gk44GuLOOBn+OBi+OBruOCig0KK+OBi+OBqSzjgaHjgYjjgZMNCivjgYvjgajjgYYs44Gu44G244KG44GNDQor44GE44Gd44GuLOOBv+OBqeOCig0KK+OBi+OBqOOBhizjgZ/jgYvjgZcNCivjgYvjgajjgYYs44GX44G7DQor44GL44Go44GGLOOBguOBjeOCiOOBlw0KK+OBi+OBqOOCiizjgZHjgpPjgZgNCivjgYvjgarjgZXjgYss44KC44Go44Gy44KNDQor44GL44Gq44GW44KPLOOBv+OBoeOBkw0KK+OBi+OBquOChOOBvizjgYvjgarjgZMNCivjgYvjga3jgZMs44KG44GN44GKDQor44GL44Gt44GTLOOBqOOCguOBkw0KK+OBi+OBreOBoCzjgoLjgajjgY0NCivjgYzjgb8s44Gy44KN44GXDQor44GL44KB44GK44GLLOOBvuOBquOBvw0KK+OBi+OCieOBleOCjyzjgYLjgY3jgabjgosNCivjgYvjgonjgZfjgb4s44GN44KI44G144G/DQor44GL44KL44GE44GXLOOBhOOBmuOBvw0KK+OBi+OCj+OBhCzjgarjgYrjgobjgY0NCivjgYvjgo/jgYQs44Gf44GL44GK44G/DQor44GL44KP44GL44G/LOOBvuOBleOBvw0KK+OBi+OCj+OBi+OBvyzjgZHjgpPjgZ8NCivjgYvjgo/jgZos44GC44Gk44GXDQor44GL44KP44Gq44GLLOOBiOOBhOOBmeOBkQ0KK+OBi+OCj+OBrizjgZ/jgYvjgZcNCivjgYvjgo/jgbDjgZ8s44Gq44GK44KEDQor44GL44KP44G5LOOBl+OBuw0KK+OBi+OCj+OBvyzjgZfjgpPjgZgNCivjgYvjgpPjgbDjgZcs44G/44Gh44GTDQor44GL44KT44Gw44KJLOOBguOBpOOBlw0KK+OBjeOBl+OBhCzjgoTjgZnjgYgNCivjgY3jgZfjgaAs44GC44GN44Gy44KNDQor44GN44Gf44GM44KPLOOBvuOBleOBjQ0KK+OBjeOBn+OBl+OCjSzjgYvjgZrjgojjgZcNCivjgY3jgZ/jga/jgoks44KI44GX44GL44GaDQor44GN44Gf44KA44KJLOOCiOOBhuOBhOOBoQ0KK+OBjeOBqSzjgaHjgYjjgZMNCivjgY3jga7jgZfjgZ8s44KP44GL44GTDQor44GI44GgLOOBiOOBhA0KK+OBjeOCgOOCiSzjgarjgaTjgZMNCivjgY3jgoDjgoks44GX44GS44KLDQor44GN44KA44KJLOOBguOBpOOBlw0KK+OBjeOCiOOBquOBjCzjga7jgorjgb/jgaQNCivjgY3jgojjgb/jgoQs44Gf44GL44GKDQor44GN44KK44KELOOBvuOBleOBjQ0KK+OBhOOBqOOBhizjgajjgoLjgoQNCivjgY/jgZfjgaAs44GN44KH44GG44GTDQor44GP44GY44KJ44GK44GLLOOBoOOBhOOBjQ0KK+OBj+OBq+OCguOBqCzjgZ/jgZHjgajjgZcNCivjgY/jgazjgY4s44Go44GK44KLDQor44GP44G8LOOBguOBpOOBlw0KK+OBj+OBvOOBleOCjyzjgb7jgZXjgY0NCivjgY/jgbzjgZ8s44Gf44GL44Gy44KNDQor44GP44KB44GuLOOBruOBtuOBig0KK+OBhOOBl+OBkOOCjSzjgZ/jgo3jgYYNCivjgY/jgoks44Go44KC44GC44GNDQor44GP44KJ44GV44KPLOOBteOBv+OBr+OCiw0KK+OBj+OCieOBnyzjgorjgofjgYbjgZMNCivjgY/jgo3jgYvjgo8s44Gf44GL44Gy44GVDQor44GP44KN44GZLOOBvuOBv+OBkw0KK+OBj+OCjeOChOOBquOBjizjgZXjgpPjgZfjgo3jgYYNCivjgYTjgarjgajjgb8s44Gg44GE44GZ44GRDQor44GT44GE44GRLOOBvuOChuOBkw0KK+OBk+OBhOOBkSzjgo/jgZ/jgosNCivjgZPjgYTjgZfjgYvjgo8s44Gy44Gn44KG44GNDQor44GT44GE44Ga44G/LOOBpuOCi+OBvw0KK+OBk+OBhOOBmuOBvyzjga7jgorjgb7jgZUNCivjgZPjgYTjgacs44G+44Gp44GLDQor44GT44Ga44G+LOOBvuOBhOOBkw0KK+OBk+OCk+OBrizjgYLjgaTjgZMNCivjgZPjgoTjgb4s44Gg44GE44GNDQor44GT44KKLOOBn+OBi+OBsuOBpw0KK+OBi+OBpOOBi+OCjyzjgZvjgYTjgYTjgaHjgo3jgYYNCivjgZPjgYzjga4s44GC44GN44G144G/DQor44GT44GX44GELOOBqOOCguOBsuOCjQ0KK+OBk+OBl+OBvuOCiyzjgaDjgYTjgajjgY8NCivjgZPjgZnjgY4s44G+44GV44GXDQor44GT44Gb44GNLOOBvuOBquOBtg0KK+OBk+OBn+OBqyzjgoTjgYTjgaENCivjgZPjgaDjgb4s44Gb44KT44GYDQor44GT44Gr44GXLOOBn+OBv+OBkw0KK+OBk+OBq+OBlyzjgZ/jgaDjgZcNCivjgZPjgbAs44Go44KC44GNDQor44GT44Gw44Gf44GRLOOBkeOBhOOBhOOBoQ0KK+OBk+OBsOOChOOBlyzjgYLjgY3jgZMNCivjgZPjgbDjgoTjgZcs44KE44GZ44KG44GNDQor44GT44Gw44KE44GXLOOCiOOBhuOBmA0KK+OBk+OBsOOChOOBlyzjgb7jgZXjgoQNCivjgZPjgbDjgoTjgZcs44KI44GX44GKDQor44Gq44GL44KA44KJLOOCiOOBhuOBuOOBhA0KK+OBk+OBsOOChOOBlyzjgbLjgo3jgZMNCivjgZPjgbzjgoos44GP44Gr44Gy44GTDQor44GT44G+44GkLOOBpOOCiOOBlw0KK+OBk+OChOOBvizjgaTjgY7jgYoNCivjgZPjgpPjga4s44Gf44GL44GTDQor44GV44GE44Go44GGLOOBqOOCguOBiA0KK+OBleOBhOOBqOOBhizjgYLjgaTjgZMNCivjgZXjgYTjgajjgYYs44Gy44KN44KG44GNDQor44GV44GE44Go44GGLOOBsuOCjeOChuOBjQ0KK+OBhOOBqOOBhizjgbXjgY3jgZMNCivjgZXjgYvjgYQs44Gh44Gy44KNDQor44GV44GL44GELOOBjeOCiOOBlw0KK+OBleOBi+OBhCzjgb/jga3jgYoNCivjgZXjgYvjgY3jgbDjgoks44Go44GX44GNDQor44GV44GL44GQ44GhLOOBhOOBoeOCjeOBhg0KK+OBhOOCj+OBleOBjSzjgozjgYTjgZMNCivjgZXjgYvjgoLjgags44Gu44KK44GKDQor44GV44GL44KC44GoLOOCiOOBhuOBmA0KK+OBleOBi+OCguOBqCzjgZjjgoXjgpPjgZMNCivjgZXjgZXjgY0s44GL44Gk44Go44GXDQor44GV44GV44GNLOOBk+OBleOBjw0KK+OBleOBleOBjSzjgZjjgoXjgpPjgZMNCivjgZXjgZXjgY0s44KM44GqDQor44GE44G+44Gv44GXLOOBsuOCjeOBvw0KK+OBleOBpOOBvyzjgZ/jgYvjgobjgY0NCivjgZXjgajjgYYs44GX44KT44GE44Gh44KN44GGDQor44GV44Go44GGLOOChuOBhuOBmA0KK+OBleOBqOOBhizjgajjgoLjgY/jgasNCivjgZXjgajjgYYs44G+44KK44GTDQor44GV44Go44GGLOOBk+OBhuOBjQ0KK+OBleOBqOOBhizjgobjgb/jgZMNCivjgZXjga4s44GX44GuDQor44GE44GX44GQ44KNLOOBsuOBp+OBn+OBiw0KK+OBleOCj+OChOOBquOBjizjgb/jgaTjgbLjgo0NCivjgZfjgYrjgZ8s44GR44GE44GZ44GRDQor44GX44GNLOOChuOBhuOBkw0KK+OBl+OBkuOBiuOBiyzjgozjgYQNCivjgZfjgZLjgZ8s44G+44KC44KLDQor44GX44GX44GpLOOCiuOBiw0KK+OBl+OBquOBoCzjgojjgZfjgZMNCivjgYTjgacs44KI44GX44G144G/DQor44GX44Gw44GfLOOCiOOBhuOBkw0KK+OBl+OBsOOBnyzjgYLjgorjgbLjgagNCivjgZfjgbDjgZ8s44KK44KH44GGDQor44GX44Gw44GfLOOBl+OCheOBhuOBhOOBoQ0KK+OBl+OBvuOBmizjgoLjgarjgb8NCivjgZfjgb7jgaAs44KI44GX44GV44GgDQor44GX44G+44GaLOOBpOOBreOBig0KK+OBl+OBv+OBmizjgbLjgafjgZ/jgaANCivjgZfjgb/jgZos44GP44Gr44GIDQor44GX44KC44Gv44GXLOOBsuOCjeOBruOBtg0KK+OBl+OCguOChOOBvizjgYvjgYrjgooNCivjgZjjgofjgYYs44Gf44GL44GXDQor44GE44Go44GGLOOBjeOCh+OBhuOBkw0KK+OBmeOBjOOBnyzjga7jgbbjgYgNCivjgZnjgYzjgoQs44GC44GN44Gy44KNDQor44GZ44GO44GfLOOBn+OBi+OBsuOCjQ0KK+OBmeOBjuOBquOBiyzjgYjjgYTjgZgNCivjgZnjgY7jgoLjgags44G144G/44GKDQor44GZ44GO44KE44G+LOOBi+OBmuOBqg0KK+OBmeOBjuOChOOBvizjgobjgYbjgZgNCivjgZnjgY7jgoTjgb4s44Go44GK44KLDQor44GZ44GS44GuLOOBlOOBhg0KK+OBmeOBmuOBjSzjgZPjgYbjgZgNCivjgZnjgZrjgY0s44G+44GV44Gy44KNDQor44GZ44Ga44GNLOOBsuOBp+OBguOBjQ0KK+OBmeOBmuOBjSzjgZPjgYbjgZgNCivjgZnjgZrjgY0s44KG44GG44GTDQor44GE44KP44GV44GNLOOBqOOCguOBteOBvw0KK+OBmeOBmuOBjSzjgojjgYbjgZMNCivjgZnjgZrjgY0s44GT44GG44GYDQor44GE44Gh44GL44KPLOOCiuOBiw0KK+OBm+OBjSzjgb7jgZXjgojjgZcNCivjgZvjgY3jgZDjgaEs44GR44GE44GTDQor44Gb44GN44KELOOBkeOCk+OBmA0KK+OBm+OBkyzjgZHjgpPjgZ/jgo3jgYYNCivjgZvjgoks44Gy44KN44KG44GNDQor44Gd44GMLOOChuOBiw0KK+OBneOBjCzjgYjjgYTjgZMNCivjgYTjgajjgYYs44GC44GN44KJDQor44GL44G/44KELOOBi+OBmeOBvw0KK+OBneOCk+OBjyzjgajjgZfjgYvjgZoNCivjgZ/jgYvjgY0s44KG44G/44GTDQor44Gf44GL44GOLOOCiOOBl+OBr+OCiw0KK+OBn+OBi+OBleOBjSzjgoTjgZnjgYoNCivjgYTjgZHjgaAs44Gy44Go44GXDQor44Gf44GL44GX44G+LOOChOOBmeOBsuOBqA0KK+OBn+OBi+OBrizjgZHjgpPjgYTjgaENCivjgZ/jgYvjga4s44Gy44Gn44GNDQor44Gf44GL44GuLOOBvuOBjeOBkw0KK+OBn+OBi+OBrizjgarjgYrjgbLjgo0NCivjgZ/jgYvjga4s44KI44GX44Gy44GVDQor44Gf44GL44Gv44GXLOOCiOOBl+OBig0KK+OBn+OBi+OBr+OBlyzjgZPjgYbjgbjjgYQNCivjgZ/jgYvjga/jgZcs44GT44GG44GE44Gh44KN44GGDQor44Gf44GL44Gv44GXLOOBjOOBjw0KK+OBn+OBi+OBr+OBlyzjgYvjgaoNCivjgZ/jgYvjga/jgZcs44Gf44GL44Gu44KKDQor44Gf44GL44G+44GkLOOBsuOCjeOBlw0KK+OBn+OBjOOBvyzjgbLjgajjgZcNCivjgZ/jgYvjgb/jgZbjgo8s44KK44KF44GG44GNDQor44Gf44GL44KJ44GgLOOBl+OCk+OBhOOBoQ0KK+OBn+OBjeOBi+OCjyzjgYjjgb/jgZMNCivjgZ/jgY3jgZbjgo8s44GE44KP44GKDQor44GE44GE44GuLOOChuOBvw0KK+OBn+OBkeOBhCzjgojjgZfjgbLjgo0NCivjgZ/jgZHjgYbjgaEs44GX44KT44GE44Gh44KN44GGDQor44Gf44GR44GG44GhLOOBn+OBi+OBjeOCiA0KK+OBn+OBkeOBjeOBnyzjgb7jgY0NCivjgZ/jgZHjgarjgYss44G144G/44GKDQor44Gf44GR44Gu44GG44GhLOOCiuOCh+OBhuOBmA0KK+OBn+OBkeOBr+OBqizjgbXjgb8NCivjgYTjgajjgYYs44Go44GP44GTDQor44Gf44GR44KC44GoLOOBvuOBleOCiw0KK+OBn+OBkeOCguOBqCzjgYvjgZrjgbLjgZMNCivjgZ/jgZQs44GZ44GZ44KADQor44Gf44GV44GLLOOCiOOBl+OBruOBtg0KK+OBn+OBmOOBvizjgbLjgo3jgYvjgZoNCivjgZ/jgZfjgo0s44KI44GX44GTDQor44Gf44GX44KNLOOBlOOBhg0KK+OBn+OBn+OCiSzjgZXjgarjgYgNCivjgZ/jgaHjgbDjgaos44GC44KE44GTDQor44GE44Gh44KA44KJLOOBleOBqOOBlw0KK+OBn+OBpuOBhOOBlyzjgobjgY0NCivjgZ/jgabjga4s44Gy44GV44GXDQor44Gf44Gm44GuLOOBoOOBhOOBng0KK+OBn+OBquOBiyzjgZHjgpPjgYTjgaHjgo0NCivjgZ/jgarjgYss44G+44GV44Gy44KNDQor44Gf44Gq44GLLOOBquOBiuOBkw0KK+OBn+OBquOBiyzjgajjgYrjgosNCivjgZ/jgarjgYss44GN44KH44GG44GTDQor44Gf44Gq44GLLOOChOOBmeOBlw0KK+OBn+OBquOBiyzjgojjgYbjgZMNCivjgYzjgb8s44G+44GT44GoDQor44Gf44Gq44G/LOOBpOOBreOBig0KK+OBn+OBqyzjgb7jgb8NCivjgZ/jgavjgZDjgaEs44KG44G/44GTDQor44Gq44GL44GK44GLLOOChuOBjQ0KK+OBn+OBq+OBluOCjyzjgojjgZfjga7jgooNCivjgZ/jgavjgaAs44Gu44G244KG44GNDQor44Gf44Gr44KC44GoLOOBguOBjeOBvw0KK+OBn+OBruOBiuOBiyzjgb/jgYjjgZMNCivjgZ/jgbDjgZ8s44G+44GV44GNDQor44Gf44Gv44KJLOOBv+OBi+OBkw0KK+OBn+OCgOOCiSzjgobjgY3jgbLjgo0NCivjgaHjgYvjgZbjgo8s44Gu44KK44Gy44GoDQor44Gh44GuLOOBn+OBi+OBruOBtg0KK+OBoeOBr+OCiSzjgbLjgZXjga4NCivjgaHjgoXjgYYs44GV44KE44GLDQor44Gh44KF44GG44G+LOOBkeOBhOOBhOOBoQ0KK+OBpOOBi+OBoCzjgbLjgafjgZ/jgZENCivjgaTjgYvjgoLjgags44Gu44G244Gf44GLDQor44Gk44GL44KC44GoLOOChuOBn+OBiw0KK+OBpOOBoCzjgajjgoLjga7jgooNCivjgaTjgaHjgaAs44G+44GV44GKDQor44Gk44Gh44KELOOBm+OCjOOBqg0KK+OBpOOBoeOChCzjgYLjgY0NCivjgaTjga3jgY0s44GP44G/44GTDQor44Gn44G/44GbLOOBn+OBi+OBlw0KK+OBpuOCieOBiuOBiyzjgYvjgarjgZMNCivjgYTjgZrjgb8s44GC44Gk44GXDQor44Go44GGLOOBm+OBhOOBmA0KK+OBqOOBmCzjgb7jgZXjgZMNCivjgajjgZfjgYrjgYss44G/44GZ44GaDQor44Go44GgLOOBr+OBquOBiA0KK+OBqOOBs+OBquOBhCzjgYLjgY3jgZMNCivjgajjgoLjgYQs44G/44Gt44GNDQor44Go44KE44G+LOOBguOBhOOBkw0KK+OBqOOCiOOBl+OBvizjgZPjgYbjgYTjgaENCivjgajjgojjgaAs44Gf44GP44KEDQor44Go44KI44Gv44G+LOOBqOOBl+OBig0KK+OBquOBjOOBiCzjgZHjgpPjgZgNCivjgarjgYzjgYgs44GX44G7DQor44Gq44GL44GKLOOBqOOCguOBsuOBpw0KK+OBquOBi+OBiizjgZHjgpPjgZ/jgo3jgYYNCivjgarjgYvjgZjjgb4s44Go44KC44GTDQor44Gq44GL44GY44G+LOOCiOOBl+OBn+OBiw0KK+OBquOBi+OBmOOBvizjgaTjgojjgZcNCivjgarjgYzjgZfjgb4s44G+44KKDQor44Gq44GM44GbLOOBk+OBhuOBhOOBoeOCjeOBhg0KK+OBquOBi+OBnuOBrizjgZjjgoXjgpPjgZMNCivjgarjgYvjgZ8s44GC44GV44GTDQor44Gq44GM44GfLOOCiOOBl+OBsuOBkw0KK+OBquOBjOOBqCzjgb7jgorjgZMNCivjgarjgYvjgavjgZcs44GS44KTDQor44Gq44GL44GuLOOCiOOBl+OBkw0KK+OBquOBjOOBrizjgbLjgo3jgY0NCivjgarjgYzjga4s44Gf44GL44GXDQor44Gq44GM44GuLOOBpuOBpOOChA0KK+OBquOBjOOBr+OCiSzjgojjgZfjgobjgY0NCivjgarjgYvjgbLjgYzjgZcs44KB44GQ44G/DQor44Gq44GL44KA44KJLOOBjeOBteOBvw0KK+OBhOOBrOOBmuOBiyzjgajjgoLjgYvjgZoNCivjgarjgYvjgoDjgoks44G144G/44GNDQor44Gq44GL44KA44KJLOOBsuOBqOOBlw0KK+OBquOBi+OCgOOCiSzjgb/jgbsNCivjgarjgYvjgoDjgoks44G+44GV44GL44GkDQor44Gq44GL44KELOOChuOBn+OBiw0KK+OBquOBi+OChCzjgZHjgYQNCivjgarjgonjgZXjgY0s44Gu44G244Gq44KKDQor44Gq44KK44GfLOOCiuOCheOBhuOBnw0KK+OBquOCiuOBnyzjgojjgZfjgZMNCivjgavjgYTjgaAs44Go44KC44GC44GNDQor44Gr44GX44GL44KPLOOBhOOCj+OBig0KK+OBq+OBl+OCgOOCiSzjgaHjgY7jgooNCivjgavjgZfjgoDjgoks44Gf44GE44GE44GhDQor44Gr44GX44KA44KJLOOBi+OBpOOBvw0KK+OBq+OBl+OChOOBvizjgajjgYrjgosNCivjgavjgZfjgoTjgb4s44Gu44KK44G+44GVDQor44Gr44KA44KJLOOBsuOCjeOChuOBjQ0KK+OBq+OCjyzjgobjgY3jgYgNCivjgazjgb7jgZ8s44Gq44GK44GTDQor44Gs44G+44GfLOOBn+OBi+OBsuOCjQ0KK+OBrOOBvuOBoCzjgaTjgojjgZcNCivjga3jgY7jgZcs44GE44GV44GKDQor44Gu44GW44GNLOOBn+OBi+OBquOBig0KK+OBruOBjOOBvyzjgobjgYsNCivjga7jgaAs44Gf44Gk44KEDQor44Gu44Gv44KJLOOBpOOCiOOBlw0KK+OBruOBtuOBr+OCiSzjgobjgYbjgZMNCivjga/jgYws44G+44GV44GoDQor44Gv44GO44KP44KJLOOBn+OBoOOBi+OBmg0KK+OBr+OBjuOCj+OCiSzjgYvjgaTjgokNCivjga/jgZfjgZrjgoEs44Gf44GL44GXDQor44Gv44GX44KC44GoLOOBn+OBi+OChuOBjQ0KK+OBr+OBl+OCguOBqCzjgZ3jgojjgYsNCivjga/jgZfjgoLjgags44GC44GN44KJDQor44Gv44Gb44GM44KPLOOBvuOBk+OBqA0KK+OBr+OBm+OBjOOCjyzjgb7jgobjgb8NCivjga/jgZvjgYzjgo8s44GL44Ga44Gf44GLDQor44Gv44Gb44G5LOOCiOOBhuOBuOOBhA0KK+OBr+OBnyzjgb7jgZXjgbLjgo0NCivjga/jgZ/jgZHjgoTjgb4s44Gv44Ga44GNDQor44Gv44Gf44Gq44GLLOOBhOOBj+OBnuOBhg0KK+OBr+OBn+OBrizjgYLjgaTjgogNCivjga/jgaPjgajjgoos44GC44GN44KI44GXDQor44Gv44Gq44GW44GNLOOBn+OBpOOChA0KK+OBr+OBquOBtuOBlSzjgYrjgZXjgoANCivjga/jgarjgoDjgoks44GU44GGDQor44Gw44GwLOOBguOBjeOBkw0KK+OBr+OBvuOBleOBjSzjgojjgZfjgobjgY0NCivjga/jgb7jgaAs44Gk44GQ44GNDQor44Gv44KE44GXLOOBvuOBquOBtg0KK+OBr+OChOOBlyzjgZ/jgZHjgbLjgo0NCivjga/jgoTjgZcs44G+44GT44GoDQor44Gv44KE44GXLOOCiuOCh+OBhg0KK+OBr+OCiSzjgb7jgZXjgbLjgacNCivjga/jgonjgZfjgb4s44GK44GV44KADQor44Gv44KJ44GgLOOBquOBiuOChA0KK+OBr+OCieOBoCzjgorjgYgNCivjga/jgovjgZ/jgass44Gf44GL44Gy44KNDQor44Gy44GM44GX44GuLOOBvuOBjQ0KK+OBsuOBjOOBl+OChOOBvizjgobjgYYNCivjgbLjgZDjgaEs44GX44GS44G/44GkDQor44GE44GX44Gv44KJLOOBn+OBkeOCiOOBlw0KK+OBsuOBmOOBi+OBnyzjgbLjgo3jgYLjgY0NCivjgbLjgbMs44Gf44Gk44GoDQor44Gy44KH44GG44GILOOBqOOCguOBsuOCjQ0KK+OBsuOCieOBhCzjgbLjgafjga7jgooNCivjgbLjgonjgYvjgo8s44GY44KF44KT44KEDQor44Gy44KJ44GPLOOBl+OBkuOBjQ0KK+OBsuOCieOBleOCjyzjgZHjgpPjgZgNCivjgYTjga7jga/jgoks44Gf44GP44Gy44KNDQor44Gy44KJ44GfLOOBj+OBq+OBpOOBkA0KK+OBsuOCieOBrOOBvizjgYvjgZrjgYoNCivjgbLjgonjga4s44Gf44KN44GGDQor44Gy44KJ44KE44G+LOOBl+OBkuOCiw0KK+OBsuOCjeOBhuOBoSzjgozjgYQNCivjgbLjgo3jgYrjgYss44KG44GL44GTDQor44Gy44KN44GL44KPLOOBkeOCk+OBn+OCjeOBhg0KK+OBteOBj+OBhCzjgb7jgZXjgY0NCivjgbXjgY/jgaAs44Gf44GL44Gy44KNDQor44G144GP44GgLOOBmeOBmeOCgA0KK+OBk+OCiizjgY3jgofjgYbjgZMNCivjgbXjgZjjgYQs44GY44KF44KT44GE44GhDQor44G144GY44GELOOBoOOBhOOBng0KK+OBhOOBpyzjgaHjgYjjgZMNCivjgbXjgZjjgYQs44Gy44KN44GL44GaDQor44G144GY44GKLOOBn+OBi+OChuOBjQ0KK+OBteOBmOOBiuOBiyzjgZHjgpPjgYTjgaENCivjgbXjgZjjgY/jgoks44GN44GP44GTDQor44G144GY44GV44KPLOOBk+OBhuOBmA0KK+OBteOBmOOBleOCjyzjgZHjgpPjgZ/jgo3jgYYNCivjgbXjgZjjgZfjgZIs44GR44GE44GE44GhDQor44G144GY44GfLOOBkeOCk+OBhOOBoQ0KK+OBhOOBruOBhuOBiCzjga7jgorjgYoNCivjgbXjgZjjgags44KG44GLDQor44G144GY44Gq44GMLOOBquOBjOOBvuOBlQ0KK+OBteOBmOOCj+OCiSzjgajjgoLjga/jgosNCivjgbXjgZjjgo/jgoks44Go44GX44GNDQor44G144GbLOOBi+OBiuOCiw0KK+OBteOCi+OBi+OCjyzjgb7jgZXjgb/jgaQNCivjgbXjgovjgYvjgo8s44KG44GG44GE44GhDQor44GE44GX44GELOOBoOOBhOOBmeOBkQ0KK+OBteOCi+OBleOCjyzjgbLjgo3jgY0NCivjgbXjgovjgZ8s44GT44GG44GE44GhDQor44G144KL44GfLOOCiOOBl+OBguOBjQ0KK+OBteOCi+OBnyzjgarjgYrjgZMNCivjgbXjgo8s44G/44GKDQor44G744GXLOOBvuOChuOBvw0KK+OBu+OBneOBoCzjgZHjgYTjgZnjgZENCivjgYTjgZfjgYQs44Gy44KN44G/44GhDQor44G744KK44GL44KPLOOBquOBiuOBkw0KK+OBu+OCiuOBk+OBlyzjgbLjgo3jgYLjgY0NCivjgbvjgpPjgaAs44Gu44G844KLDQor44G+44GI44GL44KPLOOCi+OBvw0KK+OBvuOBiOOBoCzjgb/jgarjgZMNCivjgb7jgYjjgaAs44Gf44KN44GGDQor44G+44GI44GgLOOBn+OBi+OBlw0KK+OBvuOBiOOBrizjgZXjgajjgZcNCivjgb7jgY0s44Gq44G/DQor44G+44GN44Ge44GuLOOBleOChOOBiw0KK+OBvuOBjeOBnyzjgYvjgaTjgobjgY0NCivjgb7jgY3jga4s44KA44Gt44GNDQor44G+44GV44GNLOOChuOBmuOCiw0KK+OBvuOBmeOBluOBjSzjgojjgZfjgZMNCivjgb7jgZnjgaAs44KG44GG44GZ44GRDQor44G+44GZ44G244GhLOOBi+OBmuOBsuOCjQ0KK+OBvuOBoeOBoCzjgb/jgobjgY0NCivjgb7jgaTjgYbjgoks44GI44KK44GTDQor44G+44Gk44GL44KPLOOCguOBqOOCiA0KK+OBvuOBpOOBluOBjSzjgaDjgYTjgZnjgZENCivjgb7jgaTjgZbjgY0s44G+44GNDQor44G+44Gk44GX44GfLOOBk+OBmuOBiA0KK+OBvuOBpOOBl+OBvizjgbLjgafjgYoNCivjgb7jgaTjgaAs44GX44GS44KG44GNDQor44G+44Gk44GgLOOBn+OBi+OBlw0KK+OBvuOBpOOBoCzjgYLjgobjgb8NCivjgb7jgaTjgarjgYws44Gf44GL44GXDQor44G+44Gk44Gq44G/LOOBk+OBhuOBmA0KK+OBvuOBpOOBsOOCiSzjga7jgorjgbXjgb8NCivjgb7jgaTjgbDjgoks44GV44Go44G/DQor44G+44Gk44G/44KELOOBkeOCk+OBhOOBoQ0KK+OBvuOBpOOCguOBqCzjgb7jgZPjgagNCivjgb7jgaTjgoLjgags44GL44Ga44Gy44GnDQor44G+44Gk44KC44GoLOOBn+OBkeOBteOBvw0KK+OBvuOBpOOCguOBqCzjgobjgYbjgZnjgZENCivjgb7jgaTjgoLjgags44Gy44KN44GTDQor44G+44Gk44KE44G+LOOBoeOBmuOBkw0KK+OBvuOBquOBuSzjgorjgofjgYbjgZnjgZENCivjgb7jgovjgoTjgb4s44G+44GV44GNDQor44G+44KL44KE44G+LOOBsuOCjeOBjQ0KK+OBv+OBhuOCiSzjgoTjgZnjgb/jgaQNCivjgb/jgY/jgass44G144G/44Gq44KKDQor44G/44Ga44GL44G/LOOBsuOBp+OBjQ0KK+OBv+OBpOOBr+OBlyzjga7jgorjgojjgZcNCivjgb/jgarjgags44Gy44KN44KG44GNDQor44G/44Gq44G/LOOBn+OBi+OChuOBjQ0KK+OBv+OBteOBrSzjgojjgZfjgbLjgo0NCivjgb/jgoTjgYzjgo8s44G+44GV44GXDQor44G/44KE44GV44GLLOOBl+OBruOBtg0KK+OBv+OChOOBluOCjyzjgZjjgoXjgpMNCivjgoDjgonjgYos44G+44GV44GTDQor44KA44KJ44GL44G/LOOBvuOBleOBvw0KK+OCgOOCieOBnyzjgZHjgpPjgZnjgZENCivjgoDjgonjgb7jgaQs44Gu44G244KG44GNDQor44KA44KJ44KE44G+LOOBqOOBl+OBig0KK+OCgOOCieOChOOBvizjgYvjgZrjgYLjgY0NCivjgoHjgZDjgo0s44Go44KC44Gy44GTDQor44KC44Gh44Ga44GNLOOBk+OBhuOBhOOBoQ0KK+OCguOBqOOCiOOBlyzjgb7jgZPjgagNCivjgoLjgoLjgZos44KG44GN44GTDQor44KC44KKLOOBvuOBleOBjQ0KK+OCguOCiizjgoTjgZnjgZ/jgYsNCivjgoLjgoos44G/44G7DQor44KC44KKLOOBn+OBvuOCiA0KK+OCguOCiuOBnyzjgZHjgpPjgZgNCivjgoLjgorjgZ8s44GR44KT44GE44Gh44KNDQor44KC44KK44GuLOOBv+OBoeOBig0KK+OCguOCiuOCguOBqCzjgZ/jgYvjgZcNCivjgoLjgorjgoLjgags44KG44GN44GTDQor44KC44KK44KE44G+LOOBi+OBmuOChuOBjQ0KK+OCguOCiuOCj+OBjSzjgbXjgb/jgYLjgY0NCivjgoTjgY4s44GR44GE44GZ44GRDQor44KE44GOLOOChuOBn+OBiw0KK+OChOOBj+OBl+OBmCzjgYrjgZXjgoANCivjgoTjgZMs44Gk44KI44GXDQor44KE44GW44KPLOOBkeOCk+OBhOOBoQ0KK+OChOOBmeOBvizjgZHjgpPjgZjjgo3jgYYNCivjgoTjgajjgZQs44GC44GEDQor44GM44KTLOOBr+OBquOBiA0KK+OChOOBquOBtizjgZXjgajjgZcNCivjgoTjga4s44GX44KF44GG44GT44GGDQor44KE44G244GfLOOBsuOCjeOBlw0KK+OChOOBvuOBhuOBoSzjgobjgY3jgZMNCivjgoTjgb7jgYbjgaEs44G/44Gk44Gv44KLDQor44KE44G+44GQ44GhLOOCiuOCh+OBhg0KK+OChOOBvuOBkOOBoSzjgoTjgZnjgb7jgZUNCivjgoTjgb7jgZDjgaEs44Gq44GK44GTDQor44GY44Gg44GELOOBsuOCjeOBguOBjQ0KK+OChOOBvuOBkOOBoSzjgYjjgYTjgZ8NCivjgoTjgb7jgZDjgaEs44Gb44GE44GTDQor44KE44G+44GQ44GhLOOBk+OBhuOBmA0KK+OChOOBvuOBleOBjSzjgoTjgZnjgbLjgo0NCivjgoTjgb7jgZXjgY0s44GY44KF44KTDQor44KE44G+44GW44GNLOOBguOBpOOChA0KK+OChOOBvuOBl+OBnyzjgYvjgZrjgbLjgo0NCivjgoTjgb7jgZfjgZ8s44G+44GV44GoDQor44KE44G+44GX44GfLOOBn+OBj+OChA0KK+OChOOBvuOBoCzjgZ/jgYvjgZcNCivjgoTjgb7jgaAs44KE44GZ44GKDQor44KE44G+44GgLOOBn+OBpOOBmA0KK+OChOOBvuOBoCzjgoTjgZnjgbLjgZUNCivjgoTjgb7jgaAs44GN44KH44GG44GTDQor44KE44G+44Go44KELOOBvuOCiuOBkw0KK+OChOOBvuOBquOBiyzjgbLjgbXjgb8NCivjgoTjgb7jgarjgZcs44GY44KF44KTDQor44KE44G+44Gr44GXLOOBquOBiuOBjQ0KK+OChOOBvuOCguOBqCzjgaHjgYsNCivjgoTjgb7jgoLjgags44GL44Ga44KEDQor44KE44G+44KC44GoLOOCiuOBiw0KK+OChOOBvuOCguOBqCzjgb7jgarjgb8NCivjgoTjgb7jgoLjgags44KI44GG44GZ44GRDQor44KE44G+44KC44GoLOOBn+OBpOOChA0KK+OCiOOBk+OBnyzjgajjgoLjgbXjgb8NCivjgojjgZPjgZ8s44GX44GS44KG44GNDQor44KI44GT44GfLOOBi+OCiA0KK+OCiOOBk+OBpizjgZvjgYTjgYTjgaHjgo3jgYYNCivjgojjgZfjgYrjgYss44Gf44GL44GXDQor44KI44GX44GK44GLLOOBguOBpOOBlw0KK+OCiOOBl+OBiuOBiyzjgbLjgafjgagNCivjgojjgZfjgYvjgo8s44Gf44GP44KEDQor44KI44GX44GL44KPLOOCiuOCh+OBhuOBhOOBoQ0KK+OCiOOBl+OBoCzjgb7jgZXjgobjgY0NCivjgojjgZfjgaAs44GY44KF44KT44GTDQor44KI44GX44GgLOOBguOBi+OBrQ0KK+OCiOOBl+OBrizjgb/jga7jgosNCivjgojjgZfjgb8s44G+44GV44KG44GNDQor44KI44GX44KA44KJLOOBj+OBq+OBsuOBkw0KK+OCiOOBoCzjga7jgorjgbLjgZUNCivjgojjga3jgZbjgo8s44GC44KJ44GfDQor44KK44KF44GG44GoLOOBkeOBhA0KK+OCj+OBi+OBpOOBjSzjgZfjgpPjgZnjgZENCivjgo/jgY3jgZbjgYss44GX44KT44KEDQor44KP44GN44GfLOOChuOBhuOBmeOBkQ0KK+OCj+OBjeOBnyzjgajjgYrjgosNCivjgo/jgY3jgoLjgags44GX44KH44GG44GTDQor44KP44GgLOOBn+OBi+OBlw0KK+OCj+OBoCzjgYLjgY3jgZMNCivjgo/jgZ/jgZss44Gg44GEDQor44KP44Gf44Gq44G5LOOChOOBmeOBr+OCiw0KK+OCj+OBn+OBquOBuSzjgZ3jgYYNCivjgo/jgZ/jgarjgbks44Gy44KN44KG44GNDQor44KP44Gf44Gq44G5LOOBquOBiuOBkw0KK+OCj+OBn+OBquOBuSzjgojjgZfjgZ/jgYsNCivjgY3jga7jgZfjgZ8s44KG44GG44GTDQor44GC44GK44GNLOOCiOOBl+OBsuOBkw0KK+OChOOBquOBjuOBr+OCiSzjgY3jgojjgZcNCivjgYLjgb7jgZMs44KI44GX44GKDQor44GT44KT44Gp44GGLOOBl+OBiuOCig0KK+OBl+OCieOBi+OCjyzjgojjgYbjgZMNCivjgZPjgoTjgb4s44Gf44GL44KG44GNDQor44GT44KT44GpLOOBvuOBk+OBqA0KK+OCguOCiizjgajjgZfjgYoNCivjgYrjgYrjga4s44Gy44Gn44KI44GXDQor44G+44GuLOOBguOBjQ0KK+OBquOBjOOBrizjgZnjgb/jgZMNCivjgZXjgajjgYYs44GI44KKDQor44G/44KE44GW44GNLOOBguOChA0KK+OBiuOBjOOCjyzjgYLjgY3jgokNCivjgY3jgoDjgoks44Gy44Gn44Go44GXDQor44KI44GT44GKLOOBkeOCk+OBmA0KK+OBhuOBoeOCgOOCiSzjgaHjgarjgaQNCivjgZTjgZfjgb4s44KK44KF44GG44GE44GhDQor44GV44GI44GNLOOBv+OBjQ0KK+OBquOBi+OBmOOBvizjgbLjgo3jgb8NCivjgYTjgo/jgb8s44G/44G7DQor44GI44GSLOOCjOOBhA0KK+OBhuOCgeOBnuOBrizjgYvjgYrjgooNCivjgZXjgY/jgonjgYQs44G+44G/DQor44KP44Gf44Gq44G5LOOBvuOChA0KK+OBquOBjOOBhCzjgZfjgofjgYbjgZQNCivjgYrjgZ3jgYzjgb8s44GC44Gk44Gy44GTDQor44GP44KN44GL44KPLOOBvuOBleOCiOOBlw0KK+OBn+OBi+OBmeOBiyzjgojjgZfjgYvjgZoNCivjgYrjgbDjgZ8s44G+44GV44Gy44GTDQor44GX44KJ44GELOOChuOBn+OBiw0KK+OBvuOBpOOBhuOCiSzjgb7jgZPjgagNCivjgarjgYvjgZbjgo8s44KI44GX44Gy44GVDQor44G+44Gk44GELOOChuOBhuOBhOOBoQ0KK+OBk+OBm+OBjSzjgZPjgYbjgZ/jgo3jgYYNCivjgaTjgYvjgaAs44Gu44KK44KG44GNDQor44Gm44KJ44GP44KJLOOCiOOBhuOBmA0KK+OBq+OBuOOBhCzjgY3jgojjgZcNCivjgYvjgo/jgoDjgoks44Gf44GL44KG44GNDQor44Gy44GULOOBvuOBleOChuOBjQ0KK+OBk+OBsOOChOOBlyzjgY3jgojjga7jgooNCivjgbXjgovjgZ8s44Gf44GL44KG44GNDQor44KC44Gh44Ga44GNLOOBsuOCjeOChuOBjQ0KK+OBiuOBi+OBoCzjgZ/jgaTjgZcNCivjgZXjgYTjgajjgYYs44KG44GN44GTDQor44GL44KP44Gv44KJLOOChuOBjQ0KK+OBmeOBmuOBi+OBkSzjgZ/jgY/jgoQNCivjgYTjgajjgYYs44GC44Gk44GTDQor44GE44GX44Ga44GLLOOBsuOBleOBqA0KK+OBn+OBueOBhCzjgoTjgZnjgb7jgZUNCivjgZTjgajjgYYs44GC44GN44Gy44KNDQor44GX44KC44GV44GLLOOBqOOBiuOCiw0KK+OBi+OCj+OBhCzjgYvjgZrjgb4NCivjgo/jgZ/jgarjgbks44KI44GX44GL44GaDQor44GZ44Ga44GNLOOBhOOBpOOBteOBvw0KK+OBvuOBpOOChOOBvizjgbLjgo3jgZcNCivjga/jgoks44KK44KH44GG44G444GEDQor44Gk44Gw44GNLOOBm+OBhOOBhOOBoeOCjeOBhg0KK+OChOOBmeOBhCzjgZ/jgYvjgobjgY0NCivjgZPjgbDjgoTjgZcs44GR44KT44Gf44KN44GGDQor44GK44GL44G5LOOBleOChuOCig0KK+OBiuOBjOOCjyzjgZfjgofjgYbjgZMNCivjgoTjgb7jgZDjgaEs44GV44Go44GXDQor44G144GY44GL44KPLOOBkeOCk+OBmA0KK+OBhOOBquOBjOOBjSzjgbLjgafjgajjgZcNCivjgaHjgZ4s44Go44GX44Gy44GTDQor44Gv44Gq44GgLOOBmOOCheOCk+OChA0KK+OBiuOBiuOBkyzjgoLjgajjgYLjgY0NCivjgYrjgYrjgY/jgoks44GZ44G/44Gy44KNDQor44G+44Gk44GKLOOBpOOBqOOCgA0KK+OBiOOCk+OBqSzjgb7jgorjgZMNCivjgbvjgorjgbks44KC44Go44GYDQor44GL44GkLOOBpuOBpOOBsuOCjQ0KK+OBiuOBn+OBiyzjgb7jgZXjga7jgbYNCivjgZ/jgYvjga/jgZcs44Go44GX44KEDQor44KA44KJ44KE44G+LOOChuOBhuOBkw0KK+OCiOOBl+OBiuOBiyzjgZXjgobjgooNCivjgYvjgYQs44KI44GX44GIDQor44Gf44GL44Gv44GXLOOCj+OBi+OBkw0KK+OBkOOCk+OBkizjgZ/jgb7jgogNCivjgoTjga4s44Gf44GEDQor44Gv44KE44GXLOOBguOChOOBkw0KK+OBv+OBhuOCiSzjgb7jgarjgb8NCivjgYLjgYrjgoTjgY4s44Gy44KN44Gf44GLDQor44Gf44GL44GgLOOBqOOBj+OBsuOBkw0KK+OBrOOBvuOBnyzjgZHjgpPjgZgNCivjgYvjgZ/jgYrjgYss44GL44GK44KLDQor44GX44G/44GaLOOBleOBoeOBkw0KK+OBl+OBv+OBmizjgobjgYbjgZMNCivjgb7jgaTjgoDjgoks44Gf44KN44GGDQor44GK44KK44GoLOOBleOBqOOBlw0KK+OBk+OBn+OBqyzjgbXjgb/jgbLjgZMNCivjgYrjgYrjga/jgZcs44KK44KH44GGDQor44GL44KT44Gb44GNLOOBkeOBhOOBkw0KK+OBjeOBn+OCgOOCiSzjgZPjgYbjgZ/jgo3jgYYNCivjgZXjgY/jgZ8s44GX44KT44GE44Gh44KN44GGDQor44KI44GX44GgLOOBn+OBi+OBlw0KK+OBk+OBr+OCiSzjgajjgYrjgosNCivjgYTjga/jgoks44GR44GE44GTDQor44Gk44GY44GG44KJLOOBi+OBmuOBsuOCjQ0KK+OBquOBi+OCgOOCiSzjgaTjgojjgZcNCivjgYLjgYrjgY0s44GC44GN44GTDQor44GC44GK44KE44G+LOOBoOOBhOOBmeOBkQ0KK+OBguOBi+OBhOOBkSzjgbLjgo3jgb8NCivjgYLjgYvjgaQs44GY44KF44KTDQor44GC44GN44Gv44KJLOOBl+OCheOCk+OBmeOBkQ0KK+OBguOBjeOCguOBqCzjgb7jgooNCivjgYLjgZXjgY/jgoks44Gf44GL44GXDQor44GC44GV44GuLOOCiuOCh+OBhg0KK+OBguOBs+OCiyzjgYLjgYTjgZMNCivjgYLjgbks44Gu44KK44Gf44GLDQor44GC44G5LOOChuOBjQ0KK+OBguOBuSzjgZ/jgY/jgoQNCivjgYLjgbnjgYvjgo8s44Go44KC44GTDQor44GC44KJ44GELOOBruOCiuOBsuOBqA0KK+OBguOCieOBhCzjgb7jgZXjgajjgZcNCivjgYLjgonjgYvjgo8s44Gy44KN44GNDQor44GC44KJ44GNLOOBn+OBi+OBguOBjQ0KK+OBguOCieOBjSzjgbLjgo3jgZcNCivjgYLjgorjgYgs44G+44GV44G144G/DQor44GC44KT44Gp44GGLOOBkeOCk+OBn+OCjeOBhg0KK+OBhOOBhOOBoCzjgZjjgoXjgpPjgYTjgaENCivjgYTjgZHjgaAs44GX44KF44KT44GZ44GRDQor44GE44GR44GgLOOBn+OBkeOBlw0KK+OBhOOBkeOBoCzjgarjgYrjgY0NCivjgYTjgZfjgYQs44Gu44G244KE44GZDQor44GE44GX44GELOOBr+OChOOBqA0KK+OBhOOBl+OBjOOBjSzjgb/jgoTjgZMNCivjgYTjgZfjgYvjgo8s44KG44GNDQor44GE44GX44GL44KPLOOChuOBv+OBkw0KK+OBhOOBl+OBluOCjyzjgabjgovjgY0NCivjgYTjgZfjgZrjgb8s44GX44KF44GG44G444GEDQor44GE44GX44Gc44GNLOOBoOOBhOOBmeOBkQ0KK+OBhOOBl+OBoCzjgobjgYbjgZgNCivjgYTjgZfjgaAs44KM44GE44GTDQor44GE44GX44GgLOOCiOOBl+OBn+OBiw0KK+OBhOOBl+OBpSzjgZ/jgYvjgZcNCivjgYTjgZfjga/jgoks44G144G/44Gq44GKDQor44GE44GX44G+44KLLOOBl+OCheOBhuOBhOOBoQ0KK+OBhOOBn+OBqyzjgZ/jgYvjgZcNCivjgYTjgZ/jga/jgoks44Gy44GV44Gk44GQDQor44GE44Gh44G+LOOBquOBiuOBqA0KK+OBhOOBqOOBhizjgobjgYbjgZMNCivjgYTjgajjgYYs44KG44GG44GE44Gh44KN44GGDQor44GE44Go44GGLOOBsuOCjeOBi+OBmg0KK+OBhOOBqOOBhizjgYLjgY3jgZMNCivjgYTjgajjgYYs44GX44Ga44GTDQor44GE44Go44GGLOOBiuOBjQ0KK+OBhOOBqOOBhizjgaTjgojjgZcNCivjgYTjgajjgYYs44Gy44KN44KG44GNDQor44GE44Gq44GM44GNLOOBl+OBkuOBjQ0KK+OBhOOBquOBvyzjgozjgYoNCivjgYTjga4s44G/44GNDQor44GE44Gu44GG44GILOOBvuOBleOBjQ0KK+OBhOOBruOBhuOBiCzjgZ/jgYvjgZcNCivjgYTjgb7jgYos44GY44KF44KT44G644GEDQor44GE44G+44GgLOOBkeOCk+OBhOOBoQ0KK+OBhOOCj+OBi+OBvyzjgobjgYbjgZnjgZENCivjgYTjgo/jgY/jgoks44KG44Gf44GLDQor44GE44KP44GW44GNLOOBsuOCjeOBn+OBiw0KK+OBhOOCj+OBnyzjgZPjgYbjgZgNCivjgYTjgo/jgoLjgags44Gy44KN44GNDQor44GG44GI44GZ44GOLOOBmOOCheOCk+OBkw0KK+OBhuOBiOOBoCzjgb7jgZXjgoQNCivjgYbjgYjjgZ/jgYss44GX44KH44GG44GYDQor44GG44GI44GhLOOBvuOCig0KK+OBhuOBiOOBrizjgZHjgpPjgZgNCivjgbLjgorjgoXjgYYs44GT44GG44GYDQor44GG44GI44KA44KJLOOBvuOBleOBsuOCjQ0KK+OBhuOBoeOBoCzjgYLjgoQNCivjgYbjgaHjgaAs44GN44GE44GhDQor44GG44Gh44Gv44GXLOOBlOOBhg0KK+OBhuOBoeOChOOBvizjgozjgb8NCivjgYbjgoHjga/jgoks44Gq44Gk44GTDQor44GG44KK44Gf44GrLOOBvuOBmeOBvw0KK+OBiuOBhOOBi+OCjyzjgZHjgpPjgZ/jgo3jgYYNCivjgYrjgYrjgYQs44Go44KC44KG44GNDQor44GK44GK44GELOOBi+OCiOOBkw0KK+OBiuOBiuOBhOOBlyzjgb7jgZXjgbLjgZMNCivjgYrjgYbjgaEs44GR44KT44GX44KTDQor44GK44GK44GILOOBoOOBhOOBmeOBkQ0KK+OBiuOBiuOBiuOBiyzjgb7jgZXjgbLjgo0NCivjgYrjgYrjgYvjgo8s44G+44GV44KEDQor44GK44GK44GP44G8LOOCiuOCh+OBhg0KK+OBiuOBiuOBj+OBvizjga7jgorjgbLjgo0NCivjgYrjgYrjgZ8s44Gu44G244Gy44KNDQor44GK44GK44Gf44GrLOOBl+OBmuOBiw0KK+OBiuOBiuOBpCzjgaHjgYgNCivjgYrjgYrjgaQs44Gm44Gk44KEDQor44GK44GK44Gk44GLLOOBmOOCheOCkw0KK+OBiuOBiuOBpOOBiyzjgabjgovjgbLjgo0NCivjgYrjgYrjgaTjgYss44GC44GN44KJDQor44GK44GK44Gk44GLLOOBkeOBhA0KK+OBiuOBiuOBpOOBvCzjgb7jgZXjgb/jgaQNCivjgYrjgYrjga/jgZ8s44GC44GN44GTDQor44GK44GK44G+44GVLOOBn+OBpOOBig0KK+OBiuOBiuOChCzjgZHjgYTjgZgNCivjgYrjgYrjgoTjgb4s44Gf44GE44GZ44GRDQor44GK44GLLOOBn+OCjeOBhg0KK+OBiuOBi+OBmOOBvizjgb/jgaTjga7jgbYNCivjgYrjgYvjgaAs44Gf44Gk44KEDQor44GK44GL44GgLOOBoeOBsuOCjQ0KK+OBiuOBi+OBoCzjga7jgorjgojjgZcNCivjgYrjgYvjgaAs44GV44Go44GXDQor44GK44GL44GgLOOCi+OBvw0KK+OBiuOBi+OBr+OBnyzjgZ/jgaTjgoQNCivjgYrjgYvjgbks44KE44GZ44G+44GVDQor44GK44GL44KC44GoLOOBsuOBleOBlw0KK+OBiuOBi+OCguOBqCzjgojjgZfjga7jgooNCivjgYrjgYvjgoLjgags44Gy44Gn44GNDQor44GK44GM44KPLOOBkeOBhOOBkw0KK+OBiuOBjOOCjyzjgaDjgYTjgZnjgZENCivjgYrjgY/jgaAs44GT44GG44G444GEDQor44GK44GP44GoLOOBleOBoQ0KK+OBiuOBj+OBquOBiyzjgZvjgYTjgZcNCivjgYrjgZDjgoks44Gf44KN44GGDQor44GK44GW44GNLOOBruOBtuOBguOBjQ0KK+OBiuOBleOBoCzjgbLjgo3jgZcNCivjgYrjgZbjgo8s44Gy44KN44G/DQor44GK44GY44G+LOOBvuOBk+OBqA0KK+OBiuOBmOOBvizjgb7jgZXjgZcNCivjgYrjgbDjgoks44KG44KK44GTDQor44GL44GE44Go44GGLOOBn+OBi+OBlw0KK+OBi+OBjeOBj+OCiSzjgb7jgZXjgobjgY0NCivjgYvjgY3jgoLjgags44Gm44Gk44KEDQor44GL44GPLOOBk+OBhuOBmA0KK+OBi+OBkuOChOOBvizjgZ/jgaDjgbLjgZUNCivjgYvjgZjjgarjgYws44KG44Gf44GLDQor44GL44GX44G+LOOCiOOBl+OBsuOBkw0KK+OBi+OBn+OBiuOBiyzjgZ/jgYvjgbLjgo0NCivjgYvjgZ/jgY7jgoos44Gq44Gk44GTDQor44GL44Gf44KE44G+LOOBvuOBsuOBqA0KK+OBi+OBqSzjgobjgb/jgZMNCivjgYvjgajjgYYs44KK44Gk44GTDQor44GL44Go44GGLOOCiuOCh+OBhg0KK+OBi+OBqOOBhizjgbXjgb8NCivjgYvjgajjgYYs44KM44GE44GTDQor44GL44Go44GGLOOBmeOBv+OCjA0KK+OBi+OBqOOBhizjgbLjgo3jgZcNCivjgYvjgajjgYYs44Gm44Gk44KEDQor44GL44Go44GGLOOBleOBqOOBlw0KK+OBi+OBqOOBhizjgo/jgZ/jgosNCivjgYvjgajjgYYs44GT44GG44GE44Gh44KN44GGDQor44GL44Gq44KC44GoLOOBguOBjeOBkw0KK+OBi+OBquOChCzjgZfjgpPjgoQNCivjgYvjga3jgZMs44KI44GX44GL44GaDQor44GL44Gt44KC44KKLOOChuOBhg0KK+OBi+OCjyzjgojjgZfjgYvjgZoNCivjgYvjgo/jgYQs44GT44GG44GYDQor44GL44KP44GELOOBr+OCi+OBkw0KK+OBi+OCj+OBi+OBvyzjgb7jgZXjgYrjgb8NCivjgYvjgo/jgZDjgaEs44Gh44GL44GTDQor44GL44KP44GQ44GhLOOBl+OCheOCk+OBmeOBkQ0KK+OBi+OCj+OBkOOBoSzjgajjgZfjgbLjgZMNCivjgYvjgo/jgZDjgaEs44Gy44KN44GNDQor44GL44KP44GQ44GhLOOBmeOBmeOCgA0KK+OBi+OCj+OBlOOBhOOBlyzjgZ/jgYvjgobjgY0NCivjgYvjgo/jgZfjgb4s44GU44KN44GGDQor44GL44KP44GqLOOBn+OBkeOBlw0KK+OBi+OCj+OBruOBuSzjgobjgY3jgZMNCivjgYvjgpPjga4s44KE44GZ44Gu44G2DQor44GN44GP44GhLOOBruOBnuOBvw0KK+OBjeOBlyzjgozjgYTjgZMNCivjgY3jgZfjgoLjgags44Gf44GR44GXDQor44GN44GX44KNLOOChOOBmeOBlw0KK+OBjeOBn+OBiizjgZfjgpMNCivjgY3jgZ/jga/jgb4s44Gf44GR44Gu44KKDQor44GN44Gf44KA44KJLOOCiOOBl+OBruOCig0KK+OBjeOBqeOBk+OCjSzjgYLjgaTjgZcNCivjgY3jgoDjgoks44GT44GG44GE44GhDQor44GN44KA44KJLOOBvuOBk+OBqA0KK+OBjeOCgOOCiSzjgYLjgYTjgZMNCivjgY3jgorjgYLjgZEs44GI44GE44GV44GPDQor44GP44GN44KC44GoLOOBqOOBl+OBjQ0KK+OBj+OBvCzjgY/jgavjgobjgY0NCivjgY/jgbzjgZ8s44G+44KG44G/DQor44GP44G+44GP44KJLOOCiuOBiw0KK+OBj+OBvuOBoCzjgobjgYbjgZnjgZENCivjgY/jgb7jgoLjgags44Gy44KN44GC44GNDQor44GP44KBLOOBvuOBleOBsuOBqA0KK+OBj+OCieOChCzjgZPjgYbjgbjjgYQNCivjgY/jgorjgo/jgY0s44G+44GN44GTDQor44GP44KP44Gw44KJLOOChuOBi+OCig0KK+OBlOOBhizjgabjgovjgYoNCivjgZPjgYTjgZEs44GV44Go44KLDQor44GT44GE44GRLOOCjOOBiuOBqg0KK+OBk+OBleOBiyzjgoDjgaTjgb8NCivjgZPjgYbjgaAs44GC44KE44GTDQor44GT44GMLOOBk+OBhuOBhOOBoQ0KK+OBk+OBj+OBvCzjgoLjgoLjgYgNCivjgZPjgY/jgoks44KK44GIDQor44GT44GULOOCiuOCheOBhuOBmA0KK+OBk+OBleOBjSzjgorjgofjgYbjgZnjgZENCivjgZPjgZjjgb4s44Gy44KN44GTDQor44GT44Gn44KJLOOBi+OBmuOBqA0KK+OBlOOBqOOBhizjgaDjgYTjgZnjgZENCivjgZTjgajjgYYs44GR44GE44GTDQor44GU44Go44GGLOOBi+OBmuOBruOCig0KK+OBk+OBr+OBnyzjgaHjgojjgb8NCivjgZPjgbDjgoTjgZcs44Go44GK44KLDQor44GT44Gw44KE44GXLOOBquOBu+OBkw0KK+OBk+OBvuOBpOOBsOOCiSzjgb/jgbsNCivjgZPjgb/jgoQs44Go44GP44GTDQor44GT44G/44KE44G+LOOBvuOBleOCiOOBlw0KK+OBk+OChOOBquOBjizjgZfjgpPjgoQNCivjgZPjgoTjgb4s44Gf44GL44GTDQor44GT44KT44GpLOOBruOBtuOBiw0KK+OBk+OCk+OBrizjga7jgbbjgbsNCivjgZXjgYTjgajjgYYs44Gy44KN44Gy44GnDQor44GV44GE44Go44GGLOOBl+OBkuOCiw0KK+OBleOBhOOBqOOBhizjgZHjgpPjgYTjgaENCivjgZXjgYTjgajjgYYs44GR44KT44GUDQor44GV44GE44Go44GGLOOBguOBhA0KK+OBleOBi+OBhCzjgorjgofjgYbjgZnjgZENCivjgZXjgYvjga4s44KG44GN44GTDQor44GV44GL44KC44GoLOOCj+OBn+OCiw0KK+OBleOBi+OCguOBqCzjgaHjgYvjgokNCivjgZXjgY/jgonjgYQs44G+44GV44G144G/DQor44GV44GV44GNLOOCiOOBl+OBkw0KK+OBleOBleOBjSzjgZ/jgZHjgobjgY0NCivjgZXjgZXjgY0s44KG44GN44GKDQor44GV44GV44GNLOOBleOBjQ0KK+OBleOBleOBjSzjgoTjgZnjgbLjgo0NCivjgZXjgZXjga4s44GC44GL44GODQor44GV44Gg44KC44GoLOOBkuOCk+OBk+OBhg0KK+OBleOBqOOBhizjgbLjgo3jgY0NCivjgZXjgajjgYYs44KG44GG44GE44Gh44KNDQor44GV44Go44GGLOOBn+OBi+OBlw0KK+OBleOBqOOBhizjgZ/jgYvjgbLjgo0NCivjgZXjgajjgYYs44Go44KC44GTDQor44GV44Gq44GgLOOBvuOBleOChuOBjQ0KK+OBleOBreOBl+OBkizjgajjgZfjga7jgbYNCivjgZXjga4s44GL44Ga44Gy44GTDQor44GX44GS44Go44G/LOOBleOBqOOBkw0KK+OBl+OBruOBr+OCiSzjgoLjgorjgbLjgZMNCivjgZfjgbDjgYvjgo8s44GR44KT44GY44KN44GGDQor44GX44Gw44GuLOOCiuOCh+OBhg0KK+OBl+OBvuOBoCzjgZ/jgZHjgZcNCivjgZfjgb7jgaAs44Gf44Gk44KN44GGDQor44GX44G/44GaLOOBn+OBi+OBig0KK+OBl+OCgOOCiSzjgZ/jgYvjga7jgooNCivjgZfjgoDjgoks44Gf44GR44GXDQor44GX44KC44GL44KPLOOBqOOCguOChA0KK+OBl+OCguOBteOBmCzjga7jgbbjgbLjgZMNCivjgZfjgoLjgoTjgb4s44Gy44Gn44GL44GaDQor44GX44KH44GGLOOBsuOCjeOChuOBjQ0KK+OBl+OCieOBhCzjgorjgYgNCivjgZfjgonjgYws44GT44GG44GYDQor44GX44KJ44GL44KPLOOChOOBmeOBkw0KK+OBl+OCieOBmSzjgb/jgobjgY0NCivjgZfjgo8s44GR44KT44GE44GhDQor44GX44KT44GRLOOBquOBhOOBl+OCkw0KK+OBl+OCk+OBqeOBhizjgajjgoLjgYvjgZoNCivjgZnjgYzjga/jgoks44Gy44KN44GL44GaDQor44GZ44GO44GG44GhLOOBl+OCh+OBhuOBn+OCjeOBhg0KK+OBmeOBjuOBhuOCiSzjgaHjgYLjgY0NCivjgZnjgY7jgZXjgo8s44KI44GG44GTDQor44GZ44GO44Gv44KJLOOBsuOCjeOBruOBtg0KK+OBmeOBjuOCguOBqCzjgabjgovjgobjgY0NCivjgZnjgY7jgoTjgb4s44Gf44Gk44KEDQor44GZ44Ga44GNLOOBvuOBleOChuOBjQ0KK+OBmeOBmuOBjSzjgZfjgpPjgYTjgaENCivjgZnjgZrjgY0s44Gf44GE44GZ44GRDQor44GZ44Ga44GNLOOBvuOBk+OBqA0KK+OBmeOBmuOBjSzjgb7jgZXjgoQNCivjgZnjgZrjgY0s44KK44KF44GG44GfDQor44GZ44Ga44GNLOOBruOCiuOBkw0KK+OBmeOBmuOBjSzjgb/jgYvjgZMNCivjgZnjgaAs44KK44KT44KEDQor44GZ44GoLOOBpuOBpOOChA0KK+OBmeOBv+OBoCzjgYLjgY3jgbLjgo0NCivjgZvjgY0s44GC44Gk44Gq44KKDQor44Gb44GNLOOBi+OBmuOBjQ0KK+OBm+OCk+OBoCzjgobjgY3jgZMNCivjgZ3jgoHjgb/jgoQs44Gh44GIDQor44Gd44KELOOBsuOCjeOBjQ0KK+OBoOOBhOOBvuOCiyzjgYLjgY3jgokNCivjgZ/jgYvjgYos44Gv44Gq44GIDQor44Gf44GL44GOLOOBi+OCiA0KK+OBn+OBi+OBluOCjyzjgaDjgpMNCivjgZ/jgYvjgZss44GR44KT44GYDQor44Gf44GL44GtLOOBleOBqOOBlw0KK+OBn+OBi+OBr+OBlyzjgZjjgoXjgpPjgZMNCivjgZ/jgYvjga/jgZcs44Gf44GL44GXDQor44Gf44GL44Gv44GXLOOBsuOCjeOBquOBig0KK+OBn+OBi+OBr+OBlyzjgbLjgo3jgobjgY0NCivjgZ/jgYvjga/jgZcs44G+44Gq44G2DQor44Gf44GL44KE44G+LOOChuOBjeOBig0KK+OBn+OBjeOBhuOBoSzjgorjgYgNCivjgZ/jgY3jgYvjgo8s44GC44GN44KJDQor44Gf44GN44GQ44GhLOOBkeOCk+OBn+OCjeOBhg0KK+OBn+OBjeOBluOCjyzjgZXjgajjgZcNCivjgZ/jgY3jgZbjgo8s44GT44GG44GY44KN44GGDQor44Gf44GN44GW44KPLOOBoeOBsuOCjQ0KK+OBn+OBjeOBnyzjgYLjgY3jgokNCivjgZ/jgZDjgaEs44GR44KT44Gf44KN44GGDQor44Gf44GR44GELOOBj+OBq+OBig0KK+OBn+OBkeOBhuOBoSzjgZfjgpPjgZQNCivjgZ/jgZHjgaAs44KG44GG44GE44Gh44KNDQor44Gf44GR44Gv44KJLOOCiOOBhuOBkw0KK+OBn+OBpuOBrizjgarjgYrjgZ/jgYsNCivjgZ/jgarjgYss44Gg44GE44GZ44GRDQor44Gf44Gq44GLLOOBmeOBmeOCgA0KK+OBn+OBquOBiyzjgYLjgY3jgokNCivjgZ/jgarjgYss44Gq44GKDQor44Gf44Gq44GLLOOBm+OBhOOBmA0KK+OBn+OBquOBiyzjgajjgYrjgosNCivjgZ/jgarjgYss44Gq44GK44GTDQor44Gf44Gq44GLLOOBiOOCiuOBkw0KK+OBn+OBquOBiyzjgb/jgaTjgYgNCivjgZ/jgarjgbks44GX44KT44GE44Gh44KN44GGDQor44Gf44GrLOOBoeOBi+OCiA0KK+OBn+OBq+OBi+OCjyzjgojjgZfjgaTjgZANCivjgZ/jgavjgarjgYss44Gy44KN44Gf44GLDQor44Gf44Gr44KC44GoLOOBoeOBmuOCiw0KK+OBn+OBrOOBvizjgbXjgb/jgbLjgZMNCivjgZ/jgbDjgZ8s44GY44KF44KTDQor44Gf44Gw44GfLOOBkw0KK+OBn+OBsOOBnyzjgojjgYbjgZnjgZENCivjgZ/jgbDjgZ8s44GR44GE44Gf44KN44GGDQor44Gf44KA44KJLOOBk+OBhuOBhOOBoQ0KK+OBn+OCi+OBjSzjgobjgY0NCivjgZ/jgpPjgZgs44GN44KI44Gu44KKDQor44Gh44GwLOOBi+OBmuOChuOBjQ0KK+OBoeOBsCzjgbLjgo3jgYvjgZoNCivjgaTjgYvjgaAs44KK44GIDQor44Gk44GN44KC44GoLOOBguOBpOOBlw0KK+OBpOOBmCzjgbLjgo3jgZcNCivjgaTjgaAs44GN44G/44Gy44GTDQor44Gk44Gh44KC44GoLOOBl+OCk+OBlA0KK+OBpOOBpOOBvyzjgajjgoLjgZMNCivjgaTjgaTjgb8s44GY44KF44KT44GE44GhDQor44Gk44G844GfLOOBvuOBleOChA0KK+OBpuOBhCzjgo/jgYvjgb8NCivjgabjgonjgYvjgaks44G/44Gk44GC44GNDQor44G/44Gu44GG44KJLOOBvuOBquOBtg0KK+OBpuOCi+OBhCzjgb7jgooNCivjganjgYQs44GT44GG44Gf44KN44GGDQor44Go44GGLOOBvuOBjeOBkw0KK+OBqOOBhuOBi+OBhOOCiuOCkyzjgobjgb8NCivjganjgYbjgoHjgpMs44GI44Gk44GTDQor44Go44GG44GL44GELOOBi+OBiuOCig0KK+OBqOOBj+OBquOBjCzjgY3jgb/jgZ/jgYsNCivjgajjgY/jgoTjgb4s44Gf44GE44GMDQor44Go44GX44G+LOOBv+OCj+OBkw0KK+OBqeOBhuOBoSzjgajjgoLjgobjgY0NCivjgajjga7jgYQs44GC44GN44GTDQor44Go44Gu44KA44KJLOOCiuOBiOOBkw0KK+OBqOOBv+OBnyzjgY/jgavjgYoNCivjgajjgoLjga4s44Gy44Gn44GL44GaDQor44Go44KK44GELOOBvuOCguOCiw0KK+OBquOBjOOBhCzjgajjgoLjga7jgooNCivjgarjgYvjgYzjgo8s44GE44GP44G+DQor44Gq44GL44GM44KPLOOCiOOBl+OBruOCig0KK+OBquOBi+OBjOOCjyzjgaDjgYTjgZnjgZENCivjgarjgYvjgZbjgags44KC44Go44Gu44G2DQor44Gq44GL44GX44G+LOOBoeOBi+OBkw0KK+OBquOBjOOBnyzjgobjgYsNCivjgarjgYvjga4s44GL44GqDQor44Gq44GM44GuLOOCiuOCh+OBhuOBnw0KK+OBquOBjOOBrizjgorjgofjgYYNCivjgarjgYvjgoDjgoks44KI44GG44GTDQor44Gq44GL44KA44KJLOOBleOBqOOBlw0KK+OBquOBi+OCgOOCiSzjgZ/jgZHjgZcNCivjgarjgYvjgoDjgoks44Gm44Gk44KEDQor44Gq44GL44KC44KKLOOBqOOBj+OBkw0KK+OBquOBi+OChOOBvizjgajjgoLjgbLjgo0NCivjgarjgovjgZss44Gf44GL44GXDQor44Gq44KT44GULOOBvuOBleOBjQ0KK+OBquOCk+OBsCzjgZHjgpMNCivjgarjgpPjgbAs44GT44GG44GYDQor44Gr44GE44G/LOOBk+OBhuOBuOOBhA0KK+OBq+OBl+OBiizjgojjgYbjgZgNCivjgavjgZfjgYrjgYss44GX44KT44GE44GhDQor44Gr44GX44GK44GLLOOBqOOCguOBkw0KK+OBq+OBl+OBleOBiyzjgb7jgb8NCivjgavjgZfjgZbjgY0s44Gf44GP44G+DQor44Gr44GX44GW44KPLOOBquOBiuOBjQ0KK+OBq+OBl+OBrizjgZXjgajjgZcNCivjgazjgb7jgZ/jgY0s44KC44Go44GNDQor44Gt44GO44GXLOOCiuOBiw0KK+OBreOChOOBvizjgZ/jgZHjgZcNCivjga7jgaAs44Gh44GC44GNDQor44Gu44GQ44GhLOOBruOCiuOBkw0KK+OBruOBkOOBoSzjgojjgYbjgZnjgZENCivjga7jgZDjgaEs44GR44GE44GYDQor44Gu44GQ44GhLOOBl+OCk+OBjeOBoQ0KK+OBruOBluOBjSzjgaDjgYTjgZnjgZENCivjga7jgaAs44Gy44KN44GTDQor44Gu44G844KKLOOCiOOBl+OBsuOCjQ0KK+OBruOCgOOCiSzjgZfjgoXjgYbjgYTjgaENCivjga7jgoDjgoks44G/44GV44GTDQor44Gu44KA44KJLOOBkeOCk+OBmA0KK+OBr+OBjuOCj+OCiSzjgZfjgofjgYbjgZ/jgo3jgYYNCivjga/jgZfjgZDjgaEs44Go44GX44Gy44KNDQor44Gv44GX44KC44GoLOOBn+OBi+OBteOBvw0KK+OBvuOBjSzjgYvjgZrjgagNCivjga/jgZvjgYzjgo8s44Gf44GR44GKDQor44Gv44Gb44GM44KPLOOBiuOBleOCgA0KK+OBr+OBoCzjgYLjgoTjgZMNCivjga/jgaPjgajjgoos44KG44GG44GE44GhDQor44Gv44Gj44Go44KKLOOBvuOChuOBkw0KK+OBsOOBsCzjgb7jgZXjgY0NCivjgbDjgbAs44GR44KT44GYDQor44Gw44GwLOOBl+OCk+OBhOOBoeOCjeOBhg0KK+OBsOOBsCzjgorjgYvjgZMNCivjga/jgb7jgaAs44GP44G/44GTDQor44Gv44G+44GgLOOBoOOBhOOBmA0KK+OBr+OBvuOBoCzjgorjgZUNCivjga/jgb7jgaAs44G144G/44Gy44KNDQor44Gv44G+44GuLOOBvuOBleOChuOBjQ0KK+OBr+OChOOBlyzjgYLjgY3jga7jgooNCivjgbLjgZDjgaEs44GT44GG44GNDQor44Gy44GV44Gk44GtLOOBvuOBk+OBqA0KK+OBsuOBl+OBrOOBvizjgYLjgaTjgZcNCivjgbPjgofjgYbjganjgYYs44Gy44KN44GTDQor44Gy44KJ44GELOOBvuOBleOBi+OBmg0KK+OBsuOCieOBiuOBiyzjgb/jgY0NCivjgbLjgonjgYvjgo8s44Go44KC44Gy44KNDQor44Gy44KJ44GV44KPLOOBn+OBj+OBmA0KK+OBsuOCieOBl+OBvizjgZjjgo3jgYYNCivjgbLjgonjgZ8s44G+44G/44GTDQor44Gy44KJ44GuLOOChOOCiOOBhA0KK+OBsuOCi+OBvizjgobjgYbjgYTjgaENCivjgbLjgo3jgZss44Gy44Gn44GNDQor44Gy44KN44GbLOOBi+OBpOOCiOOBlw0KK+OBsuOCjeOBnyzjgbLjgo3jgZcNCivjgbXjgY/jgYQs44GC44Ga44GVDQor44G144GP44GgLOOBn+OBi+OBlw0KK+OBteOBj+OBsCzjgYvjgarjgoENCivjgbXjgY/jgoDjgoks44KG44G/44GTDQor44G144GP44KC44GoLOOBoOOBhOOBmeOBkQ0KK+OBteOBmOOBhCzjgZHjgpMNCivjgbXjgZjjgYQs44KG44GNDQor44G144GY44GELOOBv+OCjw0KK+OBteOBmOOBiOOBoCzjgbLjgZXjgYvjgZoNCivjgbXjgZjjgZ8s44Gy44Gn44GL44GaDQor44G144GY44GfLOOChuOBjeOBkw0KK+OBteOBmOOBpCzjgZ/jgZHjgZcNCivjgbXjgZjjga4s44Gf44GL44G7DQor44G144GY44KC44GoLOOBleOBqOOBkw0KK+OBteOBmOOCj+OCiSzjgZ/jgY/jgagNCivjgbXjgZjjgo/jgoks44KK44GqDQor44G144GY44KP44KJLOOBj+OBvw0KK+OBteOCi+OBi+OCjyzjgorjgofjgYYNCivjgbss44G+44GV44Gu44KKDQor44G744GX44GuLOOCgOOBreOBqOOCgg0KK+OBu+OBneOBi+OCjyzjgabjgovjgbLjgZMNCivjgbvjgorjgYvjgo8s44GX44KF44GG44GYDQor44G744KT44GU44GGLOOCiOOBl+OBguOBjQ0KK+OBvuOBiOOBoCzjgYLjgaTjgZcNCivjgb7jgYrjgYss44Gk44Go44KADQor44G+44GZ44G244GhLOOBpOOCiOOBlw0KK+OBvuOBmeOBv+OBpCzjgY3jgofjgYbjgbjjgYQNCivjgb7jgaTjgYQs44GR44KT44Gf44KN44GGDQor44G+44Gk44GKLOOBsuOBp+OBruOCig0KK+OBvuOBpOOBiuOBiyzjgY3jgofjgYbjgZnjgZENCivjgb7jgaTjgYrjgYss44GV44Gh44GTDQor44G+44Gk44GgLOOCiuOCh+OBhg0KK+OBvuOBpOOBsOOCiSzjgYLjgY3jgZMNCivjgo/jgZ/jgarjgbks44Gg44GE44GZ44GRDQor44G+44Gk44KE44G+LOOBn+OBkeOBlw0KK+OBvuOBpOOChOOBvizjgb/jgaTjgabjgosNCivjgb7jgaTjgoTjgb4s44KI44GX44GNDQor44G+44Go44GwLOOBqOOCguOBsuOCjQ0KK+OBv+OBhuOCiSzjgb7jgZXjgY0NCivjgb/jgaTjgY4s44Gf44GR44GXDQor44G/44GoLOOBl+OCheOBhuOBhOOBoQ0KK+OBv+OBruOBhuOCiSzjgoTjgZnjgbLjgZUNCivjgb/jgoQs44GC44GN44KJDQor44G/44KE44GRLOOBsuOBp+OBvuOBlQ0KK+OBv+OChOOBl+OBnyzjgYLjgYQNCivjgb/jgoTjgZfjgZ8s44KG44GN44GKDQor44G/44KE44GfLOOBguOBjeOBsuOCjQ0KK+OBv+OChOOCguOBqCzjgZ/jgaTjgoQNCivjgb/jgoTjgoLjgags44GP44Gr44GTDQor44G/44KE44KC44GoLOOBvuOBleOBsuOCjQ0KK+OCgOOBj+OBoCzjgajjgoLjgYLjgooNCivjgoDjgZfjgYss44KG44GN44GTDQor44KA44Go44GGLOOBguOBjeOCiQ0KK+OCgOOCieOBi+OBvyzjgobjgYsNCivjgoDjgonjgYvjgb8s44GL44Gq44GTDQor44KA44KJ44GL44G/LOOBn+OBpOOBsuOCjQ0KK+OCgOOCieOBi+OBvyzjgbLjgafjgaTjgZANCivjgoDjgonjgZ/jgass44KC44Go44Gy44KNDQor44KA44KJ44G+44GkLOOBvuOBleOBkw0KK+OCgOOCieOChOOBvizjgojjgZfjgYLjgY0NCivjgoLjgaHjgZrjgY0s44Go44GX44Gy44GTDQor44KC44KK44GQ44GhLOOBv+OBleOBqA0KK+OCguOCiuOBnyzjgb7jgb8NCivjgoLjgorjgbDjgoTjgZcs44GT44GG44KB44GEDQor44KC44KN44GoLOOBsuOCjeOBn+OBpA0KK+OChOOBiOOBjOOBlyzjgbLjgafjgobjgY0NCivjgoTjgYrjgoTjgb4s44GS44KT44GfDQor44KE44GM44G/LOOCiOOBl+OBsuOCjQ0KK+OChOOBjizjgZHjgYTjgZgNCivjgoTjgZDjgoks44GX44KT44GYDQor44KE44GZ44GT44GhLOOBruOBvOOCiw0KK+OChOOBmeOBoCzjgobjgYbjgZnjgZENCivjgoTjgZnjgaAs44Gu44KK44GTDQor44KE44G+44GQ44GhLOOChuOBhuOBmeOBkQ0KK+OChOOBvuOBkOOBoSzjgZfjgofjgYbjgZfjgpMNCivjgoTjgb7jgaAs44KP44GE44GR44KTDQor44KE44G+44GgLOOBv+OBmuOBuw0KK+OChOOBvuOBoCzjgYLjgY3jgokNCivjgoTjgb7jgb/jgaEs44GL44Gk44KG44GNDQor44KE44G+44KC44GoLOOBmOOCheOCk+OBkw0KK+OChOOBvuOCguOBqCzjgbLjgo3jgb8NCivjgobjgY0s44G+44G/44GTDQor44KG44G/44GwLOOBkeOBhOOBhOOBoQ0KK+OChuOCiSzjgZHjgpPjgYTjgaENCivjgojjgZPjgZnjgYss44Gv44KL44Gu44G2DQor44KI44GT44GfLOOBguOBhA0KK+OCiOOBk+OChOOBvizjgYLjgoTjgZMNCivjgojjgZfjgYrjgYss44Gq44GK44GTDQor44KI44GX44GK44GLLOOBi+OBmuOBsuOCjQ0KK+OCiOOBl+OBluOCjyzjgobjgYbjgZMNCivjgojjgZfjgaAs44G/44Gk44KLDQor44KI44GX44GgLOOBguOBi+OCig0KK+OCiOOBl+OBoCzjgZ/jgYvjgZcNCivjgojjgZfjga4s44GL44Ga44G/DQor44KI44GX44KA44KJLOOChuOBhuOBkw0KK+OCiuOCheOBhizjgYjjgYTjgZgNCivjgo3jgY8s44GC44GN44GTDQor44GV44GL44KC44GoLOOBkeOBhOOBkw0KK+OCj+OBn+OBquOBuSzjgozjgYTjgaoNCivjgo/jgZ/jgarjgbks44KG44G144GTDQor44KP44Gf44Gq44G5LOOChuOBhg0KK+OCj+OBn+OBquOBuSzjgZ/jgYvjgZMNCivjgo/jgZ/jgarjgbks44KE44KI44GEDQor44KP44KJ44GzLOOBsuOCjeOBruOCig0KK+OBruOBluOCjyzjgobjgYbjgZMNCivjgY/jgbws44KE44GZ44GTDQor44KI44GX44KC44GoLOOBkw0KK+OChOOBvuOCguOBqCzjgZ/jgYvjgZcNCivjgoTjgb7jgoLjgags44Gf44GL44GXDQor44Gy44KN44GV44KPLOOCiuOBiA0KK+OBv+OBsuOCiSzjgorjgofjgYbjgbjjgYQNCivjgYrjgYrjga4s44Gy44KN44KG44GNDQor44GK44GgLOOBi+OBmuOBsuOBkw0KK+OBiuOBiuOBsOOBn+OBkSzjgb/jgbvjgZMNCivjgYvjganjgYgs44GC44GEDQor44Gr44GX44GgLOOBqOOCiOOBsuOCjQ0KK+OBvuOBpOOCguOBqCzjgojjgZfjgYLjgY0NCivjgb/jgY7jgZ8s44G+44GqDQor44G/44KE44KC44KKLOOBv+OBig0KK+OChOOBvuOBl+OBnyzjgb7jganjgYsNCivjgoTjgb7jgaAs44GX44KT44GUDQor44Gu44KK44Go44G/LOOBoeOBiA0KK+OBhOOBkeOBoCzjgobjgYbjgZnjgZENCivjgoLjgorjgZ8s44KK44KH44GG44GYDQor44Gf44GR44GG44GhLOOCiuOCh+OBhg0KK+OBv+OBnyzjgojjgZfjga7jgooNCivjgYTjgazjgYQs44GR44KTDQor44Go44GGLOOBruOCiuOChuOBjQ0KK+OBvuOBjeOBrizjgb7jgooNCivjgarjgaTjgoEs44GX44KT44KEDQor44GK44Gu44Gn44KJLOOBj+OBq+OBsuOCjQ0KK+OBiuOBiuOBnyzjgb/jgY3jgZMNCivjgYbjgovjgZfjgZXjgZMs44KK44Gk44GTDQor44GV44GL44GN44Gw44KJLOOBl+OBkuOBruOCig0KK+OBguOBiuOBjSzjgYjjgYTjgZnjgZENCivjgYLjgYrjgY0s44Gq44GK44GoDQor44GC44GK44GNLOOChuOBhuOBkw0KK+OBguOBi+OBjOOCjyzjgoLjgajjgZMNCivjgYLjgYvjgaTjgYss44GL44Ga44Gy44GoDQor44GC44GL44G744KKLOOBkeOBhOOBmOOCjeOBhg0KK+OBguOBjeOChOOBvizjgYvjgZrjgbLjgo0NCivjgYLjgZXjgYQs44Gm44KL44G/DQor44GC44GV44GELOOBl+OCk+OBuuOBhA0KK+OBguOBleOBiuOBiyzjgZHjgpPjgZgNCivjgYLjgZXjgazjgb4s44GC44KEDQor44GC44GdLOOBquOBiuOBteOBvw0KK+OBguOBn+OBkSzjgajjgZfjgY0NCivjgYLjgaDjgaEs44GX44KT44GUDQor44GC44G5LOOBn+OBi+OBv+OBoQ0KK+OBguOBuSzjga7jgbbjgoTjgZkNCivjgYLjgbks44KG44GN44GIDQor44GC44KJ44GELOOBpOOCiOOBlw0KK+OBguOCiuOBvizjgajjgoLjgZMNCivjgYTjgYTjgZrjgYss44Gg44GE44GZ44GRDQor44GE44GM44KJ44GXLOOChuOBn+OBiw0KK+OBhOOBkeOBoCzjgZPjgZrjgYgNCivjgYTjgZHjgaAs44GR44KT44Gf44KN44GGDQor44GE44GR44Gv44GfLOOBsuOCjeOBjQ0KK+OBhOOBluOCjyzjgaHjga/jgosNCivjgYTjgZfjgYQs44KE44GZ44GXDQor44GE44GX44GL44KPLOOCiuOCh+OBhuOBkw0KK+OBhOOBl+OBkOOCjSzjgYLjgY3jgbLjgo0NCivjgYTjgZfjgaAs44GT44GG44Gf44KN44GGDQor44GE44GX44GgLOOBn+OBpOOBig0KK+OBhOOBl+OBsOOBlyzjgajjgZfjgobjgY0NCivjgYTjgZfjga/jgoks44Gf44GL44Gy44KNDQor44GE44GX44KC44GoLOOBvuOChuOBkw0KK+OBhOOBneOBr+OBnyzjgYLjgZXjgZMNCivjgYTjgZ/jgb8s44Gf44GL44GC44GNDQor44GE44Gh44GL44KPLOOBquOCi+OBn+OBiw0KK+OBhOOBo+OBl+OBjSzjgZ/jgaTjgoQNCivjgYTjgacs44Gq44KL44G/DQor44GE44GnLOOBk+OBhuOBmA0KK+OBhOOBqOOBhizjgb7jgobjgb8NCivjgYTjgajjgYYs44GY44KF44KT44G644GEDQor44GE44Go44GGLOOBvuOBleOBig0KK+OBhOOBqOOBhizjgarjgaTjgZMNCivjgYTjgajjgYYs44G+44GEDQor44GE44Gu44GG44GILOOBvuOBk+OBqA0KK+OBhOOBruOBhuOBiCzjgojjgYbjgZnjgZENCivjgYTjga7jgYbjgYgs44Gq44GK44GNDQor44GE44Gu44GG44GILOOBi+OBpOOBjQ0KK+OBhOOBruOBj+OBoSzjga7jgorjgobjgY0NCivjgYTjgb7jgYQs44KK44G7DQor44GE44G+44GN44KF44GG44KM44GELOOCjOOBhOOBkw0KK+OBhOOBvuOBnOOBjSzjgY/jgb/jgZMNCivjgYTjgb7jgoDjgoks44G+44GZ44G/DQor44GE44G+44KA44KJLOOBkeOCk+OBhOOBoeOCjQ0KK+OBhOOCj+OBhCzjgZXjgajjgosNCivjgYTjgo/jgYQs44Gf44GL44GXDQor44GE44KP44GV44GNLOOBqOOCguOBkw0KK+OBhOOCj+OBmyzjgZnjgZnjgoANCivjgYTjgo/jgZ8s44GT44GG44GYDQor44GE44KP44GnLOOBkeOCk+OBn+OCjeOBhg0KK+OBhOOCj+OCgOOCiSzjgb7jgZXjgbLjgagNCivjgYbjgYjjgaAs44G144G/44GKDQor44GG44GI44GuLOOBvuOBleOBteOBvw0KK+OBhuOBiOOBrizjgZfjgpPjgZgNCivjgYbjgYvjgYQs44Gy44KN44GNDQor44GG44GV44G/LOOBvuOCiuOBkw0KK+OBhuOBoeOBhuOBvyzjgorjgYjjgZMNCivjgYbjgaHjgoTjgb4s44G+44GV44G144G/DQor44GG44KJ44Gv44KJLOOBn+OBhOOBmA0KK+OBiOOBjizjgZ/jgYvjgbLjgZMNCivjgYjjgZjjgoos44Gy44KN44GXDQor44GI44Gu44GN44GpLOOCiOOCiuOBkw0KK+OBiOOCguOCiizjgYTjgaTjgY0NCivjgYjjgpPjgaks44Gv44GY44KBDQor44GK44GK44GELOOBquOBpOOBkw0KK+OBiuOBiuOBhOOBkSzjgajjgoLjgYvjgZoNCivjgYrjgbXjgoks44Gg44GE44GZ44GRDQor44GK44GK44GL44KPLOOCiOOBl+OBkw0KK+OBiuOBjeOBnyzjgobjgY3jga7jgooNCivjgYrjgYrjgZXjgo8s44G+44GV44KG44GNDQor44GK44GK44GfLOOBqOOCguOBkw0KK+OBiuOBiuOBnyzjgYLjgY3jgarjgYoNCivjgYrjgYrjgZ8s44KI44GG44G444GEDQor44GK44GK44Gf44GrLOOBn+OBi+OBguOBjQ0KK+OBiuOBiuOBn+OBqyzjgobjgY3jgbLjgacNCivjgYrjgYrjgaTjgYss44KC44Go44GEDQor44GK44GK44Gk44GLLOOCiOOBl+OBruOCig0KK+OBiuOBiuOBpOOBiyzjgaDjgYTjgZjjgo3jgYYNCivjgYrjgYrjgaTjgY0s44GV44Go44KLDQor44GK44GpLOOBn+OBj+OBvw0KK+OBiuOBqOOCk+OBuSzjgZ/jgaTjgoQNCivjgYrjga4s44G+44GV44Gy44GTDQor44GK44GuLOOBsuOCjeOBlw0KK+OBiuOBiuOBr+OBlyzjgZ/jgaTjgoQNCivjgYrjgYrjga/jgZ8s44GC44GN44KJDQor44GK44GK44G/44GhLOOBv+OBuw0KK+OBiuOBiuOChOOBvizjgb/jgY3jgbLjgagNCivjgYrjgYvjgZbjgY0s44Gf44Gk44G144G/DQor44GK44GL44GY44G+LOOBv+OBquOBkw0KK+OBiuOBi+OBoCzjgYvjgZrjgbLjgo0NCivjgYrjgYvjgaAs44Gf44GP44G+DQor44GK44GL44KC44GoLOOBn+OBkeOBlw0KK+OBiuOBi+OCguOBqCzjgaDjgYTjgZnjgZENCivjgYrjgYzjgo8s44GY44KF44KTDQor44GK44GO44GfLOOBqOOBl+OBteOBvw0KK+OBiuOBj+OBj+OBvCzjgZ/jgYvjgZcNCivjgYrjgaHjgYLjgYQs44Go44KC44Gu44KKDQor44GK44G+44GfLOOBkeOCkw0KK+OBi+OBlSzjgobjgY3jgZMNCivjgYvjgZfjgo8s44Gg44GE44GZ44GRDQor44GL44Go44GGLOOBk+OBhuOBuOOBhA0KK+OBi+OBqOOBhizjgZ/jgaDjgZcNCivjgYvjgarjgYQs44GR44KT44GE44GhDQor44GL44Gq44KE44G+LOOBoOOBhOOBmeOBkQ0KK+OBi+OBreOBkyzjgbXjgb/jgoQNCivjgYvjga3jgaTjgY0s44GY44KF44KT44KEDQor44GL44Gt44G+44KLLOOBguOBmuOBlQ0KK+OBi+OBueOBhuOBoSzjgarjgYrjgagNCivjgYvjgb/jgoDjgoks44GL44GK44KKDQor44GL44G/44KELOOBleOBoeOBkw0KK+OBi+OBv+OChCzjgZPjgYbjgYTjgaHjgo3jgYYNCivjgYvjgo/jgYQs44KG44G/44GTDQor44GL44KP44GELOOBsuOCjeOBlw0KK+OBi+OCj+OBi+OBvyzjgonjgYQNCivjgYvjgo/jgZXjgY0s44KE44GZ44Gy44KNDQor44GL44KP44GV44GNLOOBpuOBpOOBguOBjQ0KK+OBi+OCj+OBleOBjSzjgbLjgo3jgY0NCivjgYvjgo/jgZfjgb4s44Gf44GL44GKDQor44GL44KP44GfLOOBkeOBhOOBhOOBoQ0KK+OBi+OCj+OBvuOBnyzjgZPjgYbjgZ8NCivjgYvjgo/jgoLjgags44GR44GE44GZ44GRDQor44GN44GX44KC44GoLOOBguOBjeOCiOOBlw0KK+OBjeOBl+OCjSzjgZHjgYTjgZ8NCivjgY3jgaAs44GI44GE44GZ44GRDQor44GN44Gf44GK44GLLOOBmOOCheOCkw0KK+OBjeOBn+OBrizjgb7jgZXjgbLjgZMNCivjgY3jgZ/jga/jgoks44Gd44GG44G444GEDQor44GN44Gf44KA44KJLOOBn+OCjeOBhg0KK+OBjeOBn+OCguOBqCzjgb/jgbsNCivjgY3jgoDjgoks44Gf44GR44Gy44KNDQor44GN44KA44KJLOOBteOBv+OBqA0KK+OBjeOCguOBqCzjgZHjgYTjgZMNCivjgY3jgpMs44KI44GX44KG44GNDQor44GP44GX44KE44G+LOOBguOBjeOCiA0KK+OBj+OBqeOBhizjgajjgoLjga7jgooNCivjgY/jganjgYYs44GX44KF44KT44GZ44GRDQor44GP44KB44GG44GhLOOBkeOCk+OBmA0KK+OBj+OCieOBl+OBkizjgZPjgYbjgZgNCivjgY/jgonjgaEs44GL44Ga44Gy44KNDQor44GP44KJ44Gq44GLLOOBn+OBkeOBlw0KK+OBj+OCiuOBr+OCiSzjgojjgYbjgZnjgZENCivjgY/jgo3jgY0s44G+44GV44GNDQor44GP44KN44GV44GLLOOCiOOBhuOBkw0KK+OBj+OCj+OBr+OCiSzjgZfjga4NCivjgobjgYgs44GL44Gk44Gu44KKDQor44GT44GE44Ga44G/LOOBl+OCk+OChA0KK+OBk+OBhuOBmOOBvizjgojjgZfjgbLjgZMNCivjgZPjgYbjgaAs44GL44Gk44KG44GNDQor44GT44KT44GuLOOBkeOCk+OBhOOBoQ0KK+OBk+OBjCzjgZfjgofjgYbjgYTjgaENCivjgZPjgYws44Gf44GP44GYDQor44GT44GP44G244KTLOOBoeOBi+OBkw0KK+OBk+OBleOBiyzjgYLjgY3jgZMNCivjgZPjgaPjgaYs44G+44GE44GTDQor44Gv44Gf44Gq44GLLOOBn+OBi+OBlw0KK+OBk+OBsOOChOOBlyzjgobjgYsNCivjgZPjgbDjgoTjgZcs44Gy44Gn44GNDQor44GT44Gw44KE44GXLOOBguOCk+OBqg0KK+OBk+OBsOOChOOBlyzjga7jgorjgYLjgY0NCivjgZPjgbDjgoTjgZcs44GN44G/44Gy44GTDQor44GT44G+44GkLOOBl+OCk+OBmeOBkQ0KK+OBk+OBvuOBpOOBsOOCiSzjgbXjgb8NCivjgZPjgoHjgaDjgass44Gm44Gk44KN44GGDQor44GV44GE44GNLOOBguOBpOOBlw0KK+OBleOBhOOBqOOBhizjgZHjgpPjgYTjgaENCivjgZXjgYvjgYQs44Gy44KN44GC44GNDQor44GV44GL44GQ44GhLOOBn+OCjeOBhg0KK+OBleOBj+OBvizjgobjgY3jgZMNCivjgZXjgZMs44G+44KEDQor44GV44GV44GELOOBquOBiuOChA0KK+OBleOBleOBiizjgYvjgZrjgY3jgb8NCivjgZXjgZXjgY0s44Gv44Gq44GTDQor44GV44GV44GNLOOBvuOBleOBig0KK+OBleOBqOOBhizjgYvjgaTjgbLjgZMNCivjgZXjgajjgYYs44GL44Ga44KG44GNDQor44GV44Go44GGLOOBsuOCjeOBsuOBqA0KK+OBleOBqOOBhizjgb7jgZXjgY0NCivjgZXjgajjgYYs44G/44GNDQor44GV44Go44GGLOOBvuOBleOBkw0KK+OBleOBqOOBhizjgb/jgY0NCivjgZXjgajjgYYs44Gu44G244KG44GNDQor44GV44Go44GGLOOCiuOCh+OBhuOBleOBjw0KK+OBleOBrizjgb7jgZXjgZMNCivjgZXjga4s44Gq44GO44GVDQor44GV44Gv44KJLOOBn+OBi+OBteOBvw0KK+OBleOCi+OChOOBvizjgZ/jgYvjgobjgY0NCivjgZXjgo/jgZDjgaEs44GC44KEDQor44GX44GELOOBiOOBvw0KK+OBl+OBiuOBluOBjSzjgbLjgafjgYLjgY0NCivjgZfjgYrjgaAs44GI44GE44GYDQor44GX44GNLOOBvuOBleOCiw0KK+OBl+OBoCzjgojjgZfjgbLjgo0NCivjgZfjga7jga/jgoks44Gy44Go44GXDQor44GX44Gu44Gv44KJLOOBsuOBleOBlw0KK+OBl+OBtuOBleOCjyzjgojjgYbjgZnjgZENCivjgZfjgb7jgaAs44KK44KF44GG44GfDQor44GX44G+44GgLOOBv+OBu+OBkw0KK+OBl+OBvuOBoCzjgZHjgpPjgZ/jgo3jgYYNCivjgZfjgb/jgZos44Gf44Gk44GKDQor44GX44G/44GaLOOCj+OBn+OCiw0KK+OBl+OBv+OBmizjgajjgoLjgZMNCivjgZfjgb/jgZos44GV44Go44GTDQor44GX44G/44GaLOOBmOOCheOCk+OBhOOBoQ0KK+OBl+OBv+OBmizjgZjjgo3jgYYNCivjgZfjgoIs44GN44Gs44GIDQor44GX44KC44GW44GNLOOBn+OBpOOBsuOBkw0KK+OBl+OCguOBmOOBvizjgYjjgYTjgYTjgaHjgo3jgYYNCivjgZfjgoLjgaQs44Gf44GL44Gy44KNDQor44GX44KC44GuLOOBguOBjeOBsuOBkw0KK+OBl+OCguOChCzjgojjgorjgZMNCivjgZfjgonjgZks44GX44KT44GUDQor44GZ44GO44GG44KJLOOBvuOBleOBruOBtg0KK+OBmeOBjuOBhuOCiSzjgajjgZfjgo3jgYYNCivjgZnjgZrjgY0s44Go44KC44G/DQor44GZ44Ga44GNLOOBiOOCiuOBkw0KK+OBmeOBmuOBjSzjgobjgYbjgZnjgZENCivjgZnjgZrjgY0s44KI44GX44Gu44KKDQor44GZ44Ga44GNLOOCiOOBl+OBjQ0KK+OBmeOBqCzjgZXjgajjgZcNCivjgZnjgarjgaAs44GV44Go44GXDQor44GZ44KE44G+LOOBoOOBhOOBmeOBkQ0KK+OBm+OBiizjgYvjgYrjgooNCivjgZvjgY0s44GT44GG44G444GEDQor44Gb44GN44GtLOOBv+OBpOOCiw0KK+OBm+OBjeOBsCzjgb7jgY0NCivjgZvjgags44GR44GE44GYDQor44Gb44KT44GU44GPLOOBruOCiuOBsuOBlQ0KK+OBm+OCk+OBoCzjgobjgYbjgZMNCivjgZvjgpPjgbAs44G/44Ga44G7DQor44Gd44KB44KELOOBkeOBhOOBlA0KK+OBn+OBi+OBjizjgbLjgafjgY0NCivjgZ/jgYvjgY4s44GC44GEDQor44Gf44GL44GOLOOBruOCiuOChuOBjQ0KK+OBn+OBi+OBmyzjgojjgYbjgYTjgaHjgo3jgYYNCivjgZ/jgYvjgaAs44KI44GG44GZ44GRDQor44Gf44GL44Gv44GXLOOChOOBmeOChuOBjQ0KK+OBn+OBi+OBr+OBlyzjgojjgZfjga7jgooNCivjgZ/jgYvjga/jgZcs44Gf44GL44Gu44KKDQor44Gf44GL44Gv44GXLOOBvuOBleOBqA0KK+OBn+OBi+OBr+OBlyzjgb/jgYsNCivjgZ/jgYvjga/jgZcs44KE44GZ44Gy44KNDQor44Gf44GL44G/44GW44KPLOOBk+OBmuOBiA0KK+OBn+OBjeOBluOCjyzjgZHjgYTjgZ7jgYYNCivjgZ/jgZDjgaEs44GN44KH44GG44GTDQor44Gf44GR44GX44GfLOOBkeOCkw0KK+OBn+OBkeOBoCzjgYvjgZrjgb4NCivjgZ/jgZHjgaAs44KG44GG44GYDQor44Gf44GR44GgLOOBk+OBhuOBmA0KK+OBn+OBkeOBquOBiyzjgZ/jgYvjgbLjgo0NCivjgZ/jgZHjga/jgoks44G/44GN44GTDQor44Gf44GR44KE44G+LOOBv+OBpOOCiw0KK+OBn+OBmCzjgb/jgYsNCivjgZ/jgaAs44KI44GX44Gf44GLDQor44Gg44GmLOOBj+OBv+OBkw0KK+OBn+OBquOBiyzjgaHjgYvjgbXjgb8NCivjgZ/jgarjgYss44Gu44KK44Gy44GTDQor44Gf44Gq44GLLOOBn+OBj+OBquOBjA0KK+OBn+OBquOBiyzjgZ/jgYvjgobjgY0NCivjgZ/jgarjgYss44Gf44GL44KG44GNDQor44Gf44Gr44GQ44GhLOOBn+OBi+OBruOCig0KK+OBn+OBq+OBk+OBlyzjgZHjgpPjgZ/jgo3jgYYNCivjgZ/jgavjga4s44Gf44GL44GC44GNDQor44Gf44G244GNLOOBn+OCjeOBhg0KK+OBn+OBtuOBoSzjgojjgZfjgbLjgagNCivjgZ/jgb7jgYrjgY0s44G+44GV44KI44GXDQor44Gf44G+44GM44KPLOOBqOOCguOBkw0KK+OBn+OCgOOCiSzjgZHjgYTjgZMNCivjgZ/jgoHjga7jgoos44KI44GG44G444GEDQor44Gf44KT44GuLOOBiOOCig0KK+OBn+OCk+OBvCzjgYLjgY3jgbLjgZMNCivjgaHjgaAs44GL44Gk44Gy44GVDQor44Gh44Gt44KTLOOChuOBjQ0KK+OBpOOBjOOBreOBluOCjyzjga7jgbbjgobjgY0NCivjgaTjgYvjga/jgoks44G/44Ga44G7DQor44Gk44Gh44KELOOBvuOChuOBvw0KK+OBpOOBoeOChCzjgojjgYbjgZnjgZENCivjgaTjgaHjgoQs44KE44GZ44KG44GNDQor44Gk44Ga44GNLOOBvuOBvw0KK+OBpOOBmuOCieOBr+OCiSzjgZXjgaHjgZMNCivjgaTjga3jgojjgZcs44Gm44KL44Gu44G2DQor44Gk44G844GG44GhLOOBguOBjeOBteOBvw0KK+OBpOOCi+OBl+OBvizjgorjgYgNCivjgafjgZDjgaEs44Gf44GP44KEDQor44Gm44Ga44GLLOOBv+OBpOOBruOBtg0KK+OBpuOCieOBi+OCjyzjgZ/jgYvjgZcNCivjgabjgonjgZDjgaEs44KA44Gt44Gu44KKDQor44Gm44KJ44GX44G+LOOBkeOCk+OBmA0KK+OBpuOCieOBoCzjgojjgZfjgY0NCivjgajjgYzjgZcs44Gg44GE44GZ44GRDQor44Go44GP44KA44KJLOOBk+OBhuOBhOOBoQ0KK+OBqOOBluOCjyzjgobjgYbjgZMNCivjgajjgbPjgYrjgYss44Gf44GR44GXDQor44Go44G+44KK44GuLOOBmOOCheOCk+OBkw0KK+OBqOOBv+OBhCzjgZjjgoXjgpPjgZMNCivjgajjgb/jgZbjgo8s44GC44KEDQor44Go44G/44GfLOOBn+OBhOOBoQ0KK+OBqOOBv+OBnyzjgobjgYbjgZ8NCivjgajjgb/jgarjgYws44KI44GG44GTDQor44Go44KI44GgLOOBneOBhuOBn+OCjeOBhg0KK+OBqOOCieOBn+OBqyzjgb7jgZXjgZMNCivjgarjgYTjgajjgYYs44Gf44GL44GKDQor44Gq44GM44GELOOBoeOBiA0KK+OBquOBjOOBhCzjgZjjgoXjgpPjgZMNCivjgarjgYvjgYTjgZEs44GX44KT44GUDQor44Gq44GL44GG44GILOOBoOOBhOOBmeOBkQ0KK+OBquOBjOOBiizjgorjgofjgYbjgZMNCivjgarjgYvjgZPjgZgs44GV44KE44GLDQor44Gq44GM44GV44GLLOOBk+OBhuOBmA0KK+OBquOBi+OBmOOBvizjgobjgY3jgZMNCivjgarjgYvjgZjjgb4s44G+44KKDQor44Gq44GM44GfLOOBi+OBpOOChA0KK+OBquOBjOOBnyzjgYLjgaTjgbLjgZUNCivjgarjgYzjgZ8s44Gq44GK44GNDQor44Gq44GL44Gk44KLLOOBsuOCjeOBguOBjQ0KK+OBquOBjOOBrizjgoTjgZnjgYoNCivjgarjgYvjgoDjgoks44GV44Go44KLDQor44Gq44GL44KA44KJLOOBsuOCjeOBlw0KK+OBquOBi+OCgOOCiSzjgY/jgb/jgZMNCivjgarjgYvjgoDjgoks44Gy44KN44GXDQor44Gq44GL44KA44KJLOOChuOBiw0KK+OBquOBi+OCgOOCiSzjgb7jgZXjgYLjgY0NCivjgarjgYvjgoDjgoks44GI44GE44GYDQor44Gq44Gk44Gv44KJLOOBleOChOOBiw0KK+OBquOCiuOBleOBoCzjgZfjgpPjgZnjgZENCivjgarjgpPjgbYs44Gu44G244KG44GNDQor44Gr44GL44GE44Gp44GGLOOBqOOCguOChA0KK+OBq+OBlyzjgZ3jgYbjgYTjgaHjgo3jgYYNCivjgavjgZcs44Gq44GK44KG44GNDQor44Gr44GX44GKLOOBqOOBl+OChA0KK+OBq+OBl+OBi+OCjyzjgZHjgpPjgZgNCivjgavjgZfjgY/jgoks44GV44Go44GTDQor44Gr44GX44GW44KPLOOBhOOBleOCgA0KK+OBq+OBl+OBluOCjyzjgYjjgorjgaoNCivjgavjgZfjgaAs44GX44KT44GE44GhDQor44Gr44GX44GgLOOCiuOCh+OBhuOBuOOBhOOBnw0KK+OBq+OBl+OChOOBvizjgbLjgZXjga7jgooNCivjgazjga7jgoQs44GX44GS44GKDQor44Gs44G+44GW44GNLOOChuOBjeOBig0KK+OBrOOBvuOBnyzjgZ/jgZHjgZcNCivjga7jganjgb8s44KK44GqDQor44Gu44G/LOOBvuOBleOBjQ0KK+OBruOBkOOBoSzjgYvjgZrjgojjgZcNCivjga7jgZjjgb4s44Gm44KL44GC44GNDQor44Gu44GY44KKLOOBqOOBl+OChuOBjQ0KK+OBruOBoCzjgb/jgY3jgZMNCivjga7jgaAs44KG44GN44GTDQor44Gu44KA44KJLOOBl+OCk+OBuOOBhA0KK+OBruOCgOOCiSzjgYvjgZrjgYgNCivjga7jgoDjgoks44GL44Ga44GKDQor44Gv44GT44GX44G+LOOCj+OBn+OCiw0KK+OBr+OBl+OCguOBqCzjgorjgofjgYYNCivjga/jgZfjgoLjgags44GR44GEDQor44Gv44Gb44GM44KPLOOBkeOCk+OBn+OCjeOBhg0KK+OBr+OBn+OBkeOChOOBvizjgobjgbXjgZMNCivjga/jgaPjgZ8s44KG44GyDQor44Gv44Gj44Go44KKLOOBleOBqOOBvw0KK+OBr+OBquOBhCzjgZ/jgZHjga/jgosNCivjga/jgarjgaAs44GR44GE44GZ44GRDQor44Gv44G+44GQ44GhLOOBkeOCkw0KK+OBr+OBvuOBoCzjgb7jgarjgb8NCivjga/jgb7jgaAs44GR44GE44GTDQor44Gv44G+44GuLOOBn+OBi+OChuOBjQ0KK+OBr+OChOOBi+OCjyzjgobjgY0NCivjga/jgoTjgZcs44Gm44Gk44GKDQor44Gv44KE44GXLOOBqOOCguOBquOBjA0KK+OBr+OChOOBlyzjgZHjgpPjgZ/jgo3jgYYNCivjga/jgoks44Gh44GL44GTDQor44Gv44KJLOOChOOBmeOBguOBjQ0KK+OBr+OCieOBoCzjgb/jgYgNCivjgbLjgYjjgYvjgZ8s44GV44Go44GTDQor44Gy44GM44GVLOOBguOBpOOBlw0KK+OBsuOBjOOBvyzjgZvjgYTjgZgNCivjgbLjgY3jga4s44Gm44Gk44GYDQor44Gy44GgLOOBn+OBi+OBlw0KK+OBsuOBoOOBiyzjgZfjgpMNCivjgbLjgafjgZfjgb4s44G/44GN44GTDQor44GV44GL44GELOOBmOOCheOCk+OChA0KK+OBsuOCieOBhCzjga/jgoTjgagNCivjgbLjgonjgYTjgo8s44GI44Gk44GTDQor44Gy44KJ44GfLOOBsuOBp+OBjQ0KK+OBsuOCieOBsOOChOOBlyzjgarjgYrjgobjgY0NCivjgbLjgo3jgZss44GC44KE44GTDQor44G144GL44GKLOOBv+OChuOBjQ0KK+OBteOBj+OBhCzjgbLjgafjgbLjgZMNCivjgbXjgY/jgZbjgY0s44G/44KM44GEDQor44G144GP44GgLOOCiOOBhuOBuOOBhA0KK+OBteOBj+OBoCzjgoTjgZnjgbLjgo0NCivjgbXjgY/jgaAs44G+44GV44KLDQor44G144GP44GgLOOBmOOCheOCk+OBhOOBoQ0KK+OBteOBj+OBr+OCiSzjgobjgY3jgZMNCivjgbXjgY/jgoDjgo0s44Gy44KN44G144G/DQor44G144GY44GG44KJLOOBguOChA0KK+OBteOBmOOBiuOBiyzjgZPjgYbjgYTjgaHjgo3jgYYNCivjgbXjgZjjgYrjgYss44G+44KEDQor44G144GY44GfLOOBl+OBkuOCiw0KK+OBteOBmOOCguOBqCzjgobjgYvjgooNCivjgbXjgZjjgoLjgags44GI44KK44GTDQor44G144GY44KP44KJLOOBguOBjeOBsuOCjQ0KK+OBteOBn+OCgOOCjCzjgYTjgZXjgYoNCivjgbXjgovjgZXjgo8s44GE44Gh44KN44GGDQor44G144KL44GfLOOBsuOBleOBig0KK+OBteOCi+OChCzjgbLjgafjgYoNCivjgbvjgZPjgoks44G+44Gk44GKDQor44G744GX44GuLOOBmeOBv+OBig0KK+OBu+OBl+OBrizjgZ/jgoLjgaQNCivjgbvjgZ3jga4s44Gy44KN44G/44GhDQor44G744KKLOOBqOOBlw0KK+OBu+OCiuOBhuOBoSzjgYjjgaTjgYoNCivjgbvjgorjgYrjgYss44KE44GZ44GKDQor44G744KK44GQ44GhLOOBmOOCheOCk+OBhOOBoQ0KK+OBu+OCk+OBvizjgYTjgZXjgYoNCivjgb7jgYjjgYvjgo8s44Go44KC44KG44GNDQor44G+44GI44GY44G+LOOBk+OBhuOBmA0KK+OBvuOBiOOBoCzjgajjgZfjgbLjgo0NCivjgb7jgYjjga/jgoks44Go44GX44Gy44GTDQor44G+44GNLOOBl+OBkuOBruOCig0KK+OBvuOBjeOBrizjgZ/jgZHjgYoNCivjgb7jgZnjgYQs44Gy44KN44GXDQor44G+44GZ44GgLOOBjeOCiOOBlw0KK+OBvuOBmeOBoCzjgb7jgZXjgb/jgaQNCivjgb7jgaTjgYQs44GL44KT44GYDQor44GP44G+44GM44GELOOBi+OBpOOBsuOBkw0KK+OBi+OBreOBkyzjgorjgofjgYbjgZgNCivjgZPjgb/jgoQs44Gu44G844KLDQor44GT44GM44GE44GoLOOBv+OBoeOBkw0KK+OBi+OCk+OBsOOChOOBlyzjgabjgovjgb7jgZUNCivjgY3jga7jgZfjgZ8s44Gv44KL44Gy44GTDQor44GN44GP44GhLOOBv+OBruOCiw0KK+OBk+OBvuOBsCzjgobjgZ/jgYsNCivjgZPjgY/jgbYs44G/44Gk44GTDQor44GT44Gw44KE44GXLOOBsuOCjeOBlw0KK+OBk+OBsOOChOOBlyzjgabjgovjgYoNCivjgY3jgaTjgZ/jgYss44Gh44KF44GG44GR44KTDQor44G+44Gk44GKLOOBn+OBi+OChuOBjQ0KK+OBi+OCj+OBhCzjgb7jgarjgbYNCivjgY/jgorjga/jgoks44Go44GK44KLDQor44GL44Gp44GuLOOBsuOCjeOCiOOBlw0KK+OBi+OBv+OBj+OBvCzjgZHjgpPjgZgNCivjgYvjgo/jgZDjgaEs44Gf44GL44GXDQor44GL44G+44GfLOOBvuOBleOCguOBqA0KK+OBi+OCk+OBoCzjgYvjgZrjgb8NCivjgYvjgpPjgaAs44G/44Gk44GKDQor44GT44GX44KA44KJLOOBqOOBl+OChuOBjQ0KK+OBvuOBpOOBiizjgY3jgojjgZcNCivjgY/jgZXjgY0s44GY44KF44KT44GYDQor44GL44KC44Gv44KJLOOBvuOBleOBteOBvw0KK+OBi+OBleOBmOOBvizjgajjgZfjgb7jgZUNCivjgb7jgaTjgY0s44KI44GX44GL44GaDQor44GL44G/44GP44KJLOOBpOOBreOBig0KK+OBj+OCiuOBr+OCiSzjga7jgbbjgYLjgY0NCivjgarjgYvjgaEs44GN44KI44GXDQor44GL44GM44KPLOOBl+OCk+OBhOOBoQ0KK+OBk+OBsOOChOOBlyzjgZvjgYTjgZgNCivjgYvjgpPjga4s44Go44GX44GKDQor44G+44Gk44GX44GfLOOBteOBv+OBig0KK+OBi+OBl+OCj+OBoCzjgYrjgZXjgoANCivjgZPjgpPjga4s44GL44Ga44GKDQor44GT44GZ44GOLOOCiOOBl+OBvw0KK+OBk+OCguOCiizjgajjgZfjgo3jgYYNCivjgYvjgo/jga4s44KG44GN44GKDQor44GN44Gf44KA44KJLOOBn+OBkeOBsuOBkw0KK+OBi+OBmOOBvizjgabjgaTjgoQNCivjgYvjgajjgYYs44Gy44Gn44GKDQor44GT44KE44GuLOOChuOBjeOBig0KK+OBi+OBpOOBvuOBnyzjgajjgZfjgYvjgZoNCivjgY/jgo/jgaAs44GR44GE44GYDQor44GT44Gf44GrLOOChOOBvuOBqA0KK+OBi+OBmOOBhuOBoSzjga7jgbbjgZMNCivjgZPjgpPjgaks44Gf44GL44GXDQor44GT44KT44GpLOOCiOOBl+OBi+OBmg0KK+OBvuOBpOOBquOBvyzjgZfjgpPjgoQNCivjgYvjgYzjgoTjgb4s44G+44GV44Gv44KLDQor44GL44Gt44GTLOOChOOBmeOBsuOBkw0KK+OBk+OChOOBvizjgoTjgZnjga/jgosNCivjgY3jgaTjgYvjgo8s44GT44GG44Gb44GEDQor44GL44GX44GP44KJLOOBi+OCk+OBmA0KK+OBj+OCjeOBjSzjgojjgZfjgobjgY0NCivjgZPjgYTjgZrjgb8s44GX44KF44GG44G444GEDQor44GP44GcLOOBv+OBjeOBig0KK+OBi+OCj+OBi+OBvyzjgZHjgYTjgZMNCivjgYvjgb8s44GV44Gh44GKDQor44GN44KA44KJLOOBqOOBiuOCiw0KK+OBvuOBpOOBrizjgYvjgZrjgbLjgZUNCivjgY3jgY/jgZ8s44GK44GV44KADQor44GP44G+44GgLOOBvuOBleOBguOBjQ0KK+OBj+OBq+OBr+OCiSzjgZfjgoXjgpPjgYTjgaENCivjgZPjgZjjgb4s44KG44Gf44GLDQor44GP44KK44Gv44KJLOOBvuOBleOBruOCig0KK+OCiOOBreOBj+OCiSzjgojjgZfjgZ/jgb8NCivjgZPjgbDjgoTjgZcs44Gk44Gt44GKDQor44GT44Gw44KE44GXLOOBpuOBpOOBig0KK+OBk+OBmOOCh+OBhizjgZXjgarjgYgNCivjgY3jgoDjgoks44GY44KF44KT44GE44GhDQor44GT44Gw44KE44GXLOOBvuOBleOBguOBjQ0KK+OBk+OCk+OBqSzjga7jgbbjgYvjgZoNCivjgYvjgo/jgYQs44Go44GX44GL44GkDQor44GP44G+44Gv44KJLOOBkeOCk+OBmA0KK+OBjeOBmyzjgb/jgaHjgoTjgZkNCivjgYvjgZfjgY/jgb4s44GR44KT44Ge44GGDQor44GL44GTLOOBmOOCheOCk+OBhOOBoQ0KK+OBhOOBl+OBjOOBhCzjgojjgZfjgYLjgY0NCivjgYvjgb/jgZDjgaEs44Gf44Gg44GXDQor44GP44KC44GgLOOBqOOBl+OBig0KK+OBk+OBvuOBpCzjgZfjgofjgYbjgYTjgaENCivjgYvjga3jgaAs44G/44Gk44GKDQor44GN44GP44GhLOOCiOOBl+OBsuOBlQ0KK+OBk+OBn+OBqyzjgojjgZfjgobjgY0NCivjgZPjgbDjgoTjgZcs44KE44GZ44GoDQor44GL44KP44GQ44GhLOOCiOOBl+OBig0KK+OBi+OBreOBkyzjgbLjgo3jgYLjgY0NCivjgYvjgoIs44KI44GX44GC44GNDQor44GL44KP44KA44KJLOOBiOOBhOOBmA0KK+OBj+OBvuOBrizjgb7jgZXjgobjgY0NCivjgZPjgbDjgoTjgZcs44KI44GX44GIDQor44GN44KA44KJLOOBi+OBmuOBsuOBlQ0KK+OBjeOBl+OCguOBqCzjgbLjgo3jgbLjgZUNCivjgY3jgoDjgoks44GN44GX44GKDQor44GL44G/44GQ44GhLOOBpuOBpOOChA0KK+OBjeOCgOOCiSzjgb7jgZXjga/jgaENCivjgZPjgbDjgoTjgZcs44GX44KF44KT44GYDQor44GL44Gp44GP44KJLOOBi+OBquOBkw0KK+OBjeOBn+OCgOOCiSzjgbLjgafjgogNCivjgYvjgaTjgY0s44Gy44GV44GXDQor44GL44KT44GW44GNLOOBvuOBleOBruOBtg0KK+OBi+OBn+OBjuOCiizjgYTjgY/jgb8NCivjgZPjgbDjgoTjgZcs44Gu44G244GTDQor44GT44G+44Gk44GW44GNLOOBk+OBhuOBnuOBhg0KK+OBjeOBnyzjgbLjgo3jga7jgooNCivjgYvjgaTjga/jgoks44GX44KF44GGDQor44GT44GQ44KMLOOBguOBjeOBiA0KK+OBk+OBmOOBvizjgYLjgaTjgZcNCivjgZPjgoHjgaAs44Gy44GV44GXDQor44GT44Gr44GXLOOBkeOCk+OBhOOBoQ0KK+OBj+OCj+OBr+OCiSzjgoTjgZnjgb7jgZUNCivjgZPjgoTjgb4s44Gy44Gn44GC44GNDQor44G+44Gk44KC44GoLOOBruOCiuOChuOBjQ0KK+OBi+OBmOOCguOBqCzjgojjgZfjgYLjgY0NCivjgY/jgb7jgZbjgo8s44GL44Gk44G/DQor44GN44KA44KJLOOBqOOBl+OBig0KK+OBk+OBsOOBl+OBjOOCjyzjgbLjgajjgZcNCivjgYvjgb/jgoQs44KG44GGDQor44G+44Gk44KC44GoLOOBl+OCh+OBhuOBmA0KK+OBk+OBr+OBlyzjgYjjgYTjgZ7jgYYNCivjgZPjgaDjgb4s44Gc44KT44GE44GhDQor44GL44KP44GL44G/LOOBi+OBmuOBvw0KK+OBvuOBpOOCguOBqCzjga/jgovjgYoNCivjgYvjgYTjgaks44G/44G7DQor44GN44KA44KJLOOBqOOBl+OBig0KK+OBj+OBlCzjgY3jgojjgb8NCivjgb7jgaTjgoLjgags44KI44GX44KG44GNDQor44G+44Gk44KE44G+LOOCiuOCh+OBhuOBmeOBkQ0KK+OBvuOCi+OChOOBvizjgZXjgaHjgZMNCivjgZPjgpPjga4s44GN44KI44GXDQor44GP44KN44GNLOOBmOOCheOCkw0KK+OBk+OBv+OChCzjgorjgofjgYbjgZMNCivjgY3jgoDjgoks44Gq44GK44KG44GNDQor44GN44GuLOOBv+OBgg0KK+OBk+OBvuOBpCzjgobjgY0NCivjgYvjga3jgaHjgYss44KK44KH44GG44GZ44GRDQor44GL44Gq44Gf44GrLOOCiuOBiA0KK+OBk+OBsOOChOOBlyzjgojjgZfjgo3jgYYNCivjgY3jgZ/jgoTjgb4s44GL44Gq44GTDQor44GL44GYLOOBsuOCjeOBkw0KK+OBi+OCj+OBl+OBvizjgarjgYrjgY0NCivjgY3jgoDjgoks44G+44GN44GTDQor44GT44Gw44KJLOOBn+OBj+OBvg0KK+OBjeOBn+OBjOOCjyzjgarjgYrjgZ/jgYsNCivjgb7jgovjgoTjgb4s44Gq44G744GTDQor44GL44KC44KTLOOBvuOBleOBlw0KK+OBv+OBhuOCiSzjgZ/jgYvjgZcNCivjgb/jgZfjgb4s44GL44Gk44Gy44KNDQor44G/44GZ44GOLOOBqOOCguOBguOBjQ0KK+OBv+OBmuOBnyzjgZjjgoXjgpPjgZMNCivjgb/jgZrjgoLjgags44Gq44KL44GNDQor44G/44Ge44GQ44GhLOOBvuOBleOBkw0KK+OBv+OBmuOBiyzjgobjgZ/jgYsNCivjgb/jgarjgb8s44Gf44GR44KLDQor44G/44Gq44G/44Gf44GrLOOBvuOBleOBqA0KK+OBv+OBreOBnyzjgobjgY3jgZMNCivjgb/jgoTjgYQs44GT44GG44GfDQor44G/44KE44GK44GLLOOBkeOCk+OCjeOBhg0KK+OBv+OChOOBluOBjSzjgb7jgobjgb8NCivjgb/jgoTjgZbjgY0s44GY44KF44KKDQor44G/44KE44Gv44KJLOOBn+OBpOOBsuOBkw0KK+OBv+OCiOOBlyzjgYLjgY3jga7jgbYNCivjgoDjgonjgYvjgb8s44G+44GV44Gy44GnDQor44KA44KJ44GNLOOBguOBpOOBkw0KK+OCgOOCieOBnyzjgZHjgpPjgZgNCivjgoDjgonjgZ8s44G/44Gh44KEDQor44KA44KJ44GfLOOCgeOBkOOBvw0KK+OCgOOCieOChOOBvizjgb7jgZXjgZMNCivjgoLjgajjga4s44KE44GZ44G+44GVDQor44KC44KKLOOBqOOBl+OChuOBjQ0KK+OCguOCiizjgarjgYoNCivjgoLjgorjgZ8s44Gy44Gn44Go44KCDQor44KC44KK44GfLOOCiuOBiA0KK+OCguOCiuOChOOBvizjgYLjgaTjgZcNCivjgoLjgorjgoTjgb4s44GL44GK44KKDQor44KE44GW44KPLOOBi+OBmuOBkw0KK+OChOOBmOOBvizjgajjgoLjgbLjgo0NCivjgoTjgarjgY7jgaAs44GI44KK44GTDQor44KE44G+44GM44GfLOOBkeOBhOOBhOOBoQ0KK+OChOOBvuOBi+OCjyzjgZfjgpPjgoQNCivjgoTjgb7jgZDjgaEs44GV44Go44G/DQor44KE44G+44GQ44GhLOOChuOBjQ0KK+OChOOBvuOBkOOBoSzjgZ/jgaDjgobjgY0NCivjgoTjgb7jgZXjgY0s44G+44GV44GNDQor44KE44G+44GW44GNLOOBkeOCkw0KK+OChOOBvuOBl+OBnyzjgZfjgoXjgY/jgbsNCivjgoTjgb7jgaAs44KI44GX44GC44GNDQor44KE44G+44GgLOOBkeOCk+OBhOOBoQ0KK+OChOOBvuOBoCzjgZfjgoXjgpMNCivjgoTjgb7jgarjgYss44G+44GV44GXDQor44KE44G+44GtLOOBl+OCk+OBlA0KK+OChOOBvuOCguOBqCzjgoTjgZnjga7jgooNCivjgoTjgb7jgoLjgags44GL44Ga44Gy44KNDQor44KE44G+44KC44GoLOOBsuOBp+OChuOBjQ0KK+OChuOBi+OCjyzjgZXjgajjgZcNCivjgobjgZYs44GC44GN44GTDQor44KG44Gf44GrLOOCiuOBiA0KK+OChuOBn+OBqyzjgaDjgYTjgZnjgZENCivjgojjgZQs44Go44KC44Gu44KKDQor44KI44GT44G844KKLOOBvuOBleOBn+OBkQ0KK+OCiOOBl+OBiuOBiyzjgZ/jgaDjgYLjgY0NCivjgojjgZfjgYvjgo8s44Gy44KN44G/DQor44KI44GX44GgLOOBsuOCjeOBn+OBiw0KK+OCiOOBl+OBoCzjgY3jgofjgYbjgZMNCivjgojjgZfjgoLjgags44KC44Go44GKDQor44KI44Gt44GgLOOChuOBv+OBkw0KK+OCj+OBi+OBleOChCzjgZfjgZrjgYsNCivjgo/jgZ/jgarjgbks44GY44KF44KT44GE44Gh44KNDQor44KP44Gf44Gq44G5LOOChOOBmeOBsuOCjQ0KK+OBv+OBpOOChOOBvizjgb7jgZXjgb8NCivjgbLjgonjgYrjgYss44KK44GVDQor44GL44KT44GuLOOBi+OBpOOBqA0KK+OCj+OBkyzjgorjgYgNCivjgYLjgYrjgY0s44KP44Gf44KLDQor44GC44GL44GKLOOBvuOBleOBruOCig0KK+OBguOBi+OBjizjgorjgofjgYbjgbjjgYQNCivjgYLjgYvjgZcs44Gy44KN44GTDQor44GC44GL44Gk44GLLOOChOOBmeOChuOBjQ0KK+OBguOBi+OBr+OBrSzjgbLjgo3jgYLjgY0NCivjgYLjgYvjgbvjgoos44KG44GG44GTDQor44GC44GN44KC44GoLOOBoeOBiA0KK+OBguOBjeOChOOBvizjgb/jgbsNCivjgYLjgZXjgYQs44G+44GV44GL44GaDQor44GC44GV44GuLOOChOOBmeOBsuOCjQ0KK+OBguOBleOBsizjgYLjgZXjgZMNCivjgYLjgZXjgbks44GL44KIDQor44GC44Gv44KM44KTLOOBoOOBhOOBmeOBkQ0KK+OBguOBuSzjgajjgZfjgbLjgZMNCivjgYLjgbks44GL44GK44KLDQor44GC44G5LOOBsuOCjeOBteOBvw0KK+OBguOBvuOBrizjgb7jgZXjgb8NCivjgYLjgoHjgoLjgoos44GC44KK44GVDQor44GC44KJ44GELOOBsuOBp+OBig0KK+OBguOCieOBhCzjgYjjgaTjgZMNCivjgYLjgonjgYQs44GL44Gk44Gy44KNDQor44GC44KJ44Gf44GrLOOBleOBpOOBjQ0KK+OBguOCiuOBquOBiyzjgajjgoLjgbLjgo0NCivjgYTjgYTjgZQs44Gu44KK44GC44GNDQor44GE44GE44GgLOOBvuOChuOBvw0KK+OBhOOBkeOBoCzjgojjgZfjgZ/jgYsNCivjgYTjgZPjgYws44GI44G/44GTDQor44GE44GX44GELOOBi+OBiuOCig0KK+OBhOOBl+OBiuOBiyzjgZ/jgYvjgZcNCivjgYTjgZfjgZbjgYss44KG44GN44GIDQor44GE44GX44GY44G+LOOBv+OBig0KK+OBhOOBl+OBoCzjgobjgYQNCivjgYTjgZfjgaks44KG44GN44GTDQor44GE44GX44GuLOOBn+OBi+OBig0KK+OBhOOBl+OBvuOBtuOBlyzjgYLjgY3jgbLjgagNCivjgYTjgZvjgoos44GK44Go44Gy44GTDQor44GE44Gd44G5LOOBr+OCi+OBiw0KK+OBhOOBn+OBqyzjgZ/jgYvjgYLjgY0NCivjgYTjgZrjga4s44G/44Gk44Gy44KNDQor44GE44Gn44GuLOOCiOOBhuOBuOOBhA0KK+OBhOOBqOOBhizjgojjgYbjgZMNCivjgYTjgajjgYYs44G/44Gk44Gf44GLDQor44GE44Go44GGLOOCiOOBl+OBguOBjQ0KK+OBhOOBqOOBhizjgobjgYvjgooNCivjgYTjgajjgYYs44G+44GqDQor44GE44Go44GGLOOBn+OBkeOBlw0KK+OBhOOBqOOChOOBvizjgYLjgaTjgZcNCivjgYTjgaos44GC44GN44KJDQor44GE44Gq44GV44GNLOOChOOBmeOBruOCig0KK+OBhOOBquOBsCzjgojjgYbjgZnjgZENCivjgYTjgarjgbAs44Gf44Gg44GXDQor44GE44Gu44GG44GILOOBn+OBkeOBlw0KK+OBhOOBruOBhuOBiCzjga7jgbbjgZ/jgYsNCivjgYTjga7jgYbjgYgs44G+44KK44GTDQor44GE44G5LOOBjeOCh+OBhuOBkw0KK+OBhOOBvuOBhCzjgobjgY3jgYgNCivjgYTjgb7jgYrjgYss44GX44KF44GG44G444GEDQor44GE44G+44KA44KJLOOBvuOBleOBlw0KK+OBhOOCj+OBnyzjgZ/jgZHjgbLjgo0NCivjgYTjgo/jgZ8s44KI44GX44Gy44KNDQor44GE44KP44GfLOOBiuOBleOCgA0KK+OBhOOCj+OBvyzjgobjgYbjgZMNCivjgYTjgo/jgoLjgags44GR44KT44GE44Gh44KNDQor44GG44GI44GgLOOCjOOBhOOBkw0KK+OBhuOBiOOBrizjgZXjgokNCivjgYbjgYjjga/jgoks44Gf44GL44Gu44KKDQor44GG44GL44GELOOBsuOBleOBquOBjA0KK+OBhuOBoOOBjOOCjyzjgobjgYbjgYTjgaENCivjgYbjgaHjgoTjgb4s44Gy44KN44G+44GVDQor44GG44Gk44G/LOOBsuOCjeOChuOBjQ0KK+OBhuOBpOOBvyzjgb7jgorjgZMNCivjgYbjga4s44G+44GT44GoDQor44GI44GM44GX44KJLOOBl+OCheOCk+OBmeOBkQ0KK+OBiOOBqOOBhizjgbLjgo3jgY0NCivjgYjjgajjgb8s44Gy44Gn44G/DQor44GI44KT44GpLOOCgeOBkOOBvw0KK+OBiOOCk+OBqSzjgbLjgo3jgY0NCivjgYrjgYvjgaks44Gf44GL44Gy44GVDQor44GK44GK44GP44KJLOOBsuOCjeOBkw0KK+OBiuOBiuOBleOBiyzjgZ/jgabjgY0NCivjgYrjgYrjgZXjgYss44GT44GG44Gf44KN44GGDQor44GK44GK44GV44KPLOOBleOBoQ0KK+OBiuOBiuOBmeOBvyzjgZXjgajjgZMNCivjgYrjgZ8s44Gh44GI44GTDQor44GK44GK44Gf44GrLOOBvuOBk+OBqA0KK+OBiuOBiuOBq+OBlyzjgb7jgZXjgbLjgo0NCivjgYrjgYrjgavjgZcs44G/44Gk44KLDQor44GK44GK44Gr44GXLOOCgOOBleOBlw0KK+OBiuOBiuOBq+OBlyzjgb7jgZXjgYoNCivjgYrjgYrjga4s44Gq44G744GTDQor44GK44GK44GuLOOBv+OBi+OBkw0KK+OBiuOBrizjgojjgYbjgZMNCivjgYrjgb7jgaQs44KI44GG44GZ44GRDQor44GK44KA44KJLOOBqOOCguOBkw0KK+OBiuOBiuOChCzjgobjgY3jgYgNCivjgYrjgYss44Gu44KK44Gy44GoDQor44GK44GL44GELOOBkeOCk+OBhOOBoQ0KK+OBiuOBi+OBhuOBoSzjgajjgoLjga7jgooNCivjgYrjgYvjgaAs44KG44GG44GNDQor44GK44GL44GgLOOBvuOCiuOBkw0KK+OBiuOBi+OBrizjgoTjgZnjgbXjgb8NCivjgYrjgYvjgoDjgoks44GC44GL44KKDQor44GK44GL44KC44GoLOOBneOBhg0KK+OBiuOBjOOCjyzjgYTjgZrjgb8NCivjgYrjgYzjgo8s44GT44Ga44GIDQor44GK44GM44KPLOOBjeOCk+OChA0KK+OBiuOBjOOCjyzjgb/jgaHjgZMNCivjgYrjgYzjgo8s44Gf44GP44KEDQor44GK44GM44KPLOOChuOBv+OBkw0KK+OBiuOBjuOBrizjgYjjgorjgZMNCivjgYrjgY8s44GV44KE44GLDQor44GK44GP44GL44KPLOOBsuOCjeOBguOBjQ0KK+OBiuOBj+OBoCzjgYLjgY3jgYoNCivjgYrjgY/jgoDjgoks44GV44Go44GTDQor44GK44GW44GNLOOBn+OBi+OChuOBjQ0KK+OBiuOBmOOBvizjgZ/jgYvjgZcNCivjgYrjgZzjgY0s44GR44GE44GE44GhDQor44GK44GgLOOBsuOCjeOChuOBjQ0KK+OBiuOBoCzjgYLjgaTjgZMNCivjgYrjgaHjgYLjgYQs44Gq44GK44GNDQor44GK44Go44GM44KPLOOCiuOCh+OBhuOBkw0KK+OBiuOBrizjgb/jgZrjgY0NCivjgYrjgYrjga/jgoks44GR44GE44GTDQor44GL44GE44GY44G+LOOBkeOCk+OBnw0KK+OBi+OBjOOCjyzjgajjgoLjgb/jgaQNCivjgYvjgY3jgYos44Gf44GL44KEDQor44GL44GR44GyLOOBqOOCguOBvw0KK+OBi+OBleOBhCzjgarjgYrjgZMNCivjgYvjgZXjgb8s44KI44GX44G144G/DQor44GL44GY44GfLOOBkeOBhOOBhOOBoQ0KK+OBi+OBmOOBn+OBqyzjgb7jgZXjgarjgooNCivjgYvjgZfjgb4s44KE44GZ44Gy44KNDQor44GL44GX44G+LOOChuOBhuOBkw0KK+OBi+OBmOOCguOBqCzjgYLjgoTjgZMNCivjgYvjgZnjgYws44GV44Gq44GTDQor44GL44GbLOOCjOOBhOOBkw0KK+OBi+OBn+OBjuOCiizjgYvjgZrjgZfjgZINCivjgYvjgZ/jgoTjgb4s44KK44KH44GG44GTDQor44GL44Gf44KE44G+LOOChuOBhuOBmA0KK+OBi+OBqOOBhizjgbLjgajjgZcNCivjgYvjgajjgYYs44GP44Gr44GC44GNDQor44GL44Go44GGLOOBkeOCk+OBhOOBoeOCjQ0KK+OBi+OBquOBluOCjyzjgbLjgo3jgYvjgZoNCivjgYvjga3jgb/jgaQs44Go44KC44Gu44KKDQor44GL44Gu44GGLOOChuOBjeOBiA0KK+OBi+OBvuOBnyzjgbLjgo3jgZ/jgYsNCivjgYvjgb/jgZbjgY0s44G+44GV44Go44GXDQor44GL44G/LOOCiOOBhuOBhOOBoQ0KK+OBi+OCgeOBn+OBiyzjgZ/jgYTjgZnjgZENCivjgYvjgoIs44GR44KT44KEDQor44GL44KP44GELOOBqOOCguOBi+OBmg0KK+OBi+OCj+OBhCzjgZjjgoXjgooNCivjgYvjgo/jgYvjgb8s44Gf44GL44GXDQor44GL44KP44GL44G/LOOBv+OBig0KK+OBi+OCj+OBkOOBoSzjgYLjgobjgb8NCivjgYvjgo/jgZDjgaEs44GL44Ga44Gy44GnDQor44GL44KP44GQ44GhLOOBleOBqOOBlw0KK+OBi+OCj+OBleOBjSzjgZjjgpMNCivjgYvjgo/jgZXjgY0s44Gq44GK44GNDQor44GL44KP44Gq44G/LOOBguOBjeOBkw0KK+OBi+OCj+OBrSzjgYvjgarjgZMNCivjgYvjgo/jgbDjgZ8s44GC44KG44G/DQor44GL44KP44KA44KJLOOCguOBhg0KK+OBi+OCj+OCguOBqCzjgobjgYYNCivjgYvjgpPjgaAs44G/44Gp44KKDQor44GL44KT44GgLOOBquOBiuOBlw0KK+OBi+OCk+OBrizjgb7jgZXjgZMNCivjgY3jgZfjgoLjgags44GR44KT44Gf44KN44GGDQor44GN44Gf44GM44KPLOOBn+OBkeOBlw0KK+OBjeOBn+OBr+OCiSzjgajjgoLjga/jgosNCivjgY3jgZ/jgoDjgoks44GX44KH44GGDQor44GN44Gf44KA44KJLOOBl+OCk+OBlA0KK+OBjeOBrOOChCzjgajjgZfjgb8NCivjgY3jga7jgZfjgZ8s44Gm44GkDQor44GN44Gv44KJLOOBn+OBpOOChA0KK+OBjeOCgOOCiSzjgojjgZfjgYvjgZoNCivjgY3jgoDjgoks44G+44GV44Gy44KNDQor44GN44KA44KJLOOBguOBjeOCiOOBlw0KK+OBjeOCgOOCiSzjgZjjgoXjgpMNCivjgY3jgojjgZfjgb4s44Gv44KL44G/DQor44GN44KI44Ga44GLLOOChuOBjQ0KK+OBjeOCiSzjgZ/jgYvjgZcNCivjgY3jgorjgZXjgZMs44Gm44Gj44G644GEDQor44GN44KTLOOBleOChuOCig0KK+OBjeOCkyzjgarjgYrjgZMNCivjgY/jgavjgYjjgaAs44GL44Ga44GC44GNDQor44GP44G8LOOBlOOBhg0KK+OBj+OBvuOBrizjgZ/jgZHjgagNCivjgY/jgonjgZ8s44GC44GN44Gy44KNDQor44GP44KJ44Gv44GXLOOBn+OBi+OBguOBjQ0KK+OBj+OCjCzjgajjgYrjgosNCivjgY/jgo3jgYQs44KI44GX44Gf44GLDQor44GP44KN44GNLOOChuOBhuOBkw0KK+OBj+OCj+OBrizjgbLjgo3jgZ/jgYsNCivjgZTjgYYs44GV44GIDQor44GU44GG44GgLOOBn+OBkeOBsuOCjQ0KK+OBk+OBjCzjgZHjgYQNCivjgZPjgY/jgZfjgofjgYYs44Gk44KI44GXDQor44GT44GV44GLLOOBl+OCheOBhuOBhOOBoeOCjeOBhg0KK+OBk+OBmOOBvizjgorjgofjgYbjgZnjgZENCivjgZPjgZ7jga4s44GC44GE44KPDQor44GT44Gg44G+LOOBhOOBj+OBig0KK+OBk+OBpuOCiSzjgY3jgb/jgbLjgo0NCivjgZPjgafjgoks44GX44KT44Gf44KN44GGDQor44GU44Go44GGLOOBn+OBoOOBruOCig0KK+OBlOOBqOOBhizjgbLjgo3jgZMNCivjgZPjgavjgZcs44G/44GV44GNDQor44GT44Gr44GXLOOCiOOBhuOBkw0KK+OBk+OBq+OBlyzjgajjgoLjgoQNCivjgZPjgbDjgoTjgZcs44Gq44Gk44GTDQor44GT44Gw44KE44GXLOOBk+OBhuOBmA0KK+OBk+OBsOOChOOBlyzjgaHjgYgNCivjgZPjgbDjgoTjgZcs44Gk44KI44GXDQor44GT44G244GbLOOBsuOBp+OChuOBjQ0KK+OBk+OBvuOBjSzjgbLjgo3jgarjgYoNCivjgZPjgb7jgZbjgo8s44Gf44GL44G+44GVDQor44GT44G+44Gk44Gw44KJLOOBqOOCguOBsuOBlQ0KK+OBk+OChOOBvizjgYTjgaHjgo3jgYYNCivjgZPjgpPjgaks44Gy44KN44GTDQor44GV44GE44GNLOOBi+OBiuOCiw0KK+OBleOBhCzjgYvjgZrjgoQNCivjgZXjgYTjgajjgYYs44GN44KH44GG44GTDQor44GV44GE44Go44GGLOOBk+OBhuOBhOOBoQ0KK+OBleOBhOOBqOOBhizjgabjgovjgbLjgZUNCivjgZXjgYTjgajjgYYs44Gv44GY44KBDQor44GV44GE44Go44GGLOOBsuOCjeOBvw0KK+OBleOBhOOBqOOBhizjgbXjgb/jgZMNCivjgZXjgYTjgajjgYYs44Gy44Go44GXDQor44GV44GE44Go44GGLOOBvuOBjeOBkw0KK+OBleOBi+OBhCzjgZ/jgYvjgobjgY0NCivjgZXjgYvjgb8s44Gf44GL44GXDQor44GV44GL44KC44GoLOOBk+OBhuOBmA0KK+OBleOBi+OCguOBqCzjgbLjgafjgY0NCivjgZXjgYvjgoLjgags44G+44GV44KI44GXDQor44GV44GL44KC44GoLOOBquOBquOBkw0KK+OBleOBi+OCguOBqCzjgojjgYbjgYTjgaHjgo3jgYYNCivjgZXjgY/jgonjgYQs44GV44Gg44KI44GXDQor44GV44GP44KJ44GOLOOBquOBu+OBkw0KK+OBleOBleOBjSzjgb7jgZXjgY0NCivjgZXjgZXjgY0s44KG44G/44GIDQor44GV44Go44GGLOOBteOBj+OBn+OCjeOBhg0KK+OBleOBqOOBhizjgZfjgoXjgYbjgZXjgY8NCivjgZXjgajjgYYs44Gf44GL44GXDQor44GV44Go44GGLOOBguOBjQ0KK+OBleOBqOOBhizjgZHjgpPjgYTjgaHjgo0NCivjgZXjgajjgYYs44GL44Ga44G/44GhDQor44GV44Go44GGLOOChuOBvw0KK+OBleOBqOOBhizjgorjgofjgYbjgZnjgZENCivjgZXjga4s44Go44GK44KLDQor44GV44GuLOOCiuOCh+OBhuOBmeOBkQ0KK+OBleOCj+OBleOBjSzjgZ/jgYvjgZcNCivjgZXjgo/jgaAs44Gy44KN44GTDQor44GV44KT44G644GELOOBleOBqOOCiw0KK+OBl+OBiuOBmuOBiyzjgYLjgaTjgZcNCivjgZfjga4s44GL44Ga44Gu44KKDQor44GX44Gw44GfLOOBi+OBmuOBn+OBiw0KK+OBl+OBvizjgZjjgoXjgpMNCivjgZfjgb7jga4s44Go44GX44GC44GNDQor44GX44G/44GaLOOCiOOBl+OBkw0KK+OBl+OBv+OBmizjgb7jgb8NCivjgZfjgoLjgYvjgo8s44KI44GX44GK44G/DQor44GX44KC44KA44KJLOOBiOOBhOOBtg0KK+OBl+OCheOBj+OCiizjgb7jgarjgb8NCivjgZfjgofjgYbjgZjjgb4s44Gf44Gk44GKDQor44GX44KH44GG44GgLOOBj+OBvw0KK+OBl+OCieOBhOOBlyzjga7jgorjgYvjgZoNCivjgZfjgonjgYvjgZ8s44GY44KF44KTDQor44GX44KJ44GV44GNLOOCguOCguOBkw0KK+OBl+OCjeOBnyzjgb7jgZXjgbLjgo0NCivjgZjjgpPjgZDjgYbjgZgs44GX44GS44GL44GaDQor44GX44KT44Gf44GrLOOBkeOCk+OBnw0KK+OBl+OCk+OBvCzjga7jgbbjgobjgY0NCivjgZjjgpPjgbws44KC44Go44Gv44KLDQor44GX44KT44KA44KJLOOBsuOBp+OBqOOBlw0KK+OBmeOBjOOBhCzjgaTjgajjgoANCivjgZnjgY7jgoLjgags44G/44G7DQor44GZ44GO44KC44KKLOOBsuOCjeOBkw0KK+OBmeOBjuOChOOBvizjgZ/jgYvjga0NCivjgZnjgY7jgoTjgb4s44GY44KF44KTDQor44GZ44GO44KE44G+LOOBn+OBj+OBvg0KK+OBmeOBmuOBjSzjgY3jgY/jgZMNCivjgZvjgYzjgo8s44GY44KF44KTDQor44Gb44GNLOOBkeOCk+OBmA0KK+OBm+OBjeOBrSzjgbLjgo3jgZcNCivjgZvjgY3jgoLjgags44GL44Gk44GC44GNDQor44Gb44GoLOOBguOBpOOBlw0KK+OBm+OCiSzjgYvjgZrjgojjgZcNCivjgZ3jgafjgoTjgb4s44Gd44KJ44GTDQor44Gd44Gu44GELOOBpuOCi+OBiA0KK+OBn+OBhOOCiSzjgb7jgZXjgZcNCivjgZ/jgYvjgY0s44G/44Gh44KLDQor44Gf44GL44Gv44GXLOOCjOOBhA0KK+OBn+OBi+OBr+OBlyzjgb/jga3jgZMNCivjgZ/jgYvjga/jgZcs44Go44KC44GKDQor44Gf44GL44Gv44G+LOOBk+OBhuOBjQ0KK+OBn+OBi+OBv+OChCzjgaHjga/jgosNCivjgZ/jgYvjgoTjgarjgY4s44GL44Ga44Gy44GTDQor44Gf44GL44KE44G+LOOBleOBqOOBlw0KK+OBn+OBkOOBoSzjgo/jgZ/jgosNCivjgZ/jgZHjgYbjgaEs44GC44Gk44GXDQor44Gf44GR44GW44GNLOOBvuOChuOBkw0KK+OBn+OBkeOBl+OBnyzjgZXjgajjgb8NCivjgZ/jgZHjgoLjgags44Gy44KN44Go44KCDQor44Gf44GgLOOBguOBpOOBkw0KK+OBn+OBoeOBi+OCjyzjgb7jgZPjgagNCivjgZ/jgaHjgbDjgaos44Gq44GK44GoDQor44Gf44Gk44GM44KPLOOBqOOCguOBkw0KK+OBn+OBquOBiyzjgoTjgZnjga7jgooNCivjgZ/jgarjgYss44GC44GN44KIDQor44Gf44Gq44GLLOOBvuOBleOBn+OBiw0KK+OBn+OBquOBiyzjgZPjgYbjgZnjgZENCivjgZ/jgarjgYss44GV44Gh44GIDQor44Gf44Gq44GLLOOBl+OCh+OBhuOBuOOBhA0KK+OBn+OBquOBuSzjga7jgorjgZMNCivjgZ/jgavjgZDjgaEs44Gf44GR44GXDQor44Gf44Gr44KP44GNLOOBsuOCjeOBteOBvw0KK+OBn+OBsOOBnyzjgojjgZfjgbLjgZUNCivjgZ/jga/jgoks44GR44KT44GYDQor44Gf44G+44GNLOOBquOBiuOBkw0KK+OBn+OBvuOCgOOCiSzjgb7jgZPjgagNCivjgZ/jgovjgb8s44Gy44KN44G/DQor44Gf44KT44Gw44KJLOOCiuOCh+OBhuOBkw0KK+OBoeOBi+OBpCzjgabjgaTjgbLjgZMNCivjgaHjgbAs44GL44G744KKDQor44Gh44KH44GGLOOCiuOCh+OBhuOBnw0KK+OBpOOBi+OBoCzjgabjgaTjgoQNCivjgaTjgYvjgoLjgags44GV44Gh44GLDQor44Gk44GY44KC44GoLOOBv+OBjQ0KK+OBpOOBoeOBoCzjgZHjgYTjgZMNCivjgaTjgaHjgoQs44Gf44GL44GC44GNDQor44Gk44Gh44KELOOBoeOBi+OCiQ0KK+OBpOOBpOOBvyzjgZXjgajjgZcNCivjgaTjgbzjgY/jgoks44Gf44GP44KEDQor44Gk44KA44KJLOOBqOOCguOBiA0KK+OBpuOBl+OBvizjgYLjgY3jgZMNCivjgabjgonjgZXjgY0s44G+44GV44Gy44GoDQor44Gm44KJ44GV44GNLOOBj+OBvw0KK+OBpuOCieOBoCzjgZ/jgZHjga/jgosNCivjganjgYQs44Go44KC44GTDQor44Gp44GELOOBruOBtuOBn+OBiw0KK+OBqOOBhizjgbLjgo3jgZMNCivjgajjgY3jgZ8s44GX44KT44GE44Gh44KN44GGDQor44Go44GN44GoLOOCiuOCh+OBhuOBmeOBkQ0KK+OBqOOBj+OBoCzjgYjjgb8NCivjgajjgZfjgZrjgb8s44G+44G7DQor44Go44GgLOOBl+OCheOCk+OBmeOBkQ0KK+OBqOOCiOOBoCzjgbLjgo3jgYLjgY0NCivjgarjgYTjgajjgYYs44KK44KH44GG44GfDQor44Gq44GL44GELOOBvuOBleOBqOOBlw0KK+OBquOBi+OBiizjgYLjgY3jgbLjgZMNCivjgarjgYzjgYos44GI44KK44GTDQor44Gq44GL44GM44KPLOOBqOOCguOBvw0KK+OBquOBjOOBleOBiyzjgb/jgaHjgZMNCivjgarjgYvjgZXjgYss44KE44GZ44Gy44KNDQor44Gq44GM44GV44GNLOOChuOBhuOBhOOBoeOCjQ0KK+OBquOBi+OBluOCjyzjgobjgYbjgbjjgYQNCivjgarjgYvjgZbjgo8s44KI44GG44GTDQor44Gq44GL44GX44G+LOOChuOBhuOChA0KK+OBquOBi+OBmOOBvizjgYjjgb/jgZMNCivjgarjgYvjgZfjgb4s44GC44GN44Gy44KNDQor44Gq44GL44GY44G+LOOBl+OCheOBhuOBn+OCjeOBhg0KK+OBquOBi+OBmOOBvizjgorjgofjgYbjgZnjgZENCivjgarjgYvjgaAs44GL44KI44GTDQor44Gq44GL44GgLOOBguOChOOBkw0KK+OBquOBjOOBpOOBiyzjgYTjgZXjgYoNCivjgarjgYvjgags44GX44KF44GG44GYDQor44Gq44GL44Gr44GXLOOBv+OBqeOCig0KK+OBquOBi+OBq+OBlyzjgZnjgZnjgoANCivjgarjgYvjgavjgZcs44GE44Gf44KLDQor44Gq44GM44G+44GkLOOBvuOBleOBsuOCjQ0KK+OBquOBi+OCgOOCiSzjgZfjgZLjgajjgZcNCivjgarjgYvjgoDjgoks44GN44KH44GG44GTDQor44Gq44GL44KA44KJLOOBguOChOOBkw0KK+OBquOBi+OCgOOCiSzjgb7jgoYNCivjgarjgYvjgoDjgoks44GR44GE44GTDQor44Gq44GL44KA44KJLOOBquOBiuOBkw0KK+OBquOBi+OCgOOCiSzjgbLjgo3jgYvjgZoNCivjgarjgYvjgoDjgoks44GV44KE44GTDQor44Gq44GL44KC44KKLOOBpuOBpOOChA0KK+OBquOBi+OChCzjgobjgYbjgZgNCivjgarjgYvjgoTjgb4s44Gf44GR44GXDQor44Gq44GZLOOBk+OBhuOBmA0KK+OBquOCiuOBqOOBvyzjgZfjgpPjgZ/jgo3jgYYNCivjgarjgpPjgbYs44Go44KC44KEDQor44Gr44GE44G/LOOChOOBmeOBn+OBiw0KK+OBq+OBl+OBi+OCjyzjgZ3jga7jgZMNCivjgavjgZfjga4s44KG44GLDQor44Gr44GX44KE44G+LOOBn+OBi+OBsuOCjQ0KK+OBrOOBi+OBoCzjgojjgZfjgZMNCivjgazjgb7jgZ8s44KG44GG44GE44GhDQor44Gs44G+44GfLOOBleOBqOOBlw0KK+OBruOBjOOBvyzjgZXjgajjgZcNCivjga7jgY4s44GC44KE44GTDQor44Gu44GP44GKLOOBi+OBiuOCig0KK+OBruOBkOOBoSzjgZ/jgYvjgobjgY0NCivjga7jgZbjgY0s44Gq44Gk44GtDQor44Gu44GYLOOChuOBjQ0KK+OBruOBvizjgozjgYTjgZMNCivjga7jgoDjgoks44G+44GV44GKDQor44Gu44KA44KJLOOChuOBhuOBhOOBoQ0KK+OBsOOBk+OBlyzjgZfjgpPjgZQNCivjga/jgZfjgoLjgags44Gq44GK44GTDQor44Gv44GZ44Gs44G+LOOBoeOBiA0KK+OBr+OBmyzjgojjgYbjgYTjgaENCivjga/jgZvjgYzjgo8s44Gy44KN44GXDQor44Gv44Gf44GM44KPLOOBmOOCheOCk+OBkw0KK+OBr+OBn+OBkeOChOOBvizjgobjgYbjgZMNCivjga/jgZ/jga4s44KI44GG44GTDQor44Gv44Gq44GELOOCiuOBiw0KK+OBr+OBvuOBleOBjSzjgb7jgZPjgagNCivjga/jgb7jgaAs44Gy44KN44Gf44GLDQor44Gv44G+44GnLOOBn+OBi+OBlw0KK+OBr+OChOOBi+OCjyzjgYLjgY0NCivjga/jgoTjgZcs44GC44KEDQor44Gv44KE44GXLOOBleOBqOOBkw0KK+OBr+OChOOBlyzjgZXjgajjgZcNCivjga/jgoTjgZcs44GY44KF44KTDQor44Gv44KE44GXLOOCiOOBhuOBkw0KK+OBr+OChOOBlyzjgZnjgZnjgoANCivjga/jgoks44Go44KC44Gy44GVDQor44Gv44KJ44GX44GqLOOBruOBtuOBjQ0KK+OBr+OCieOBoCzjgYLjgaTjgZcNCivjga/jgonjgaAs44G/44Gp44KKDQor44Gv44KL44GqLOOBl+OCheOBhuOBmeOBkQ0KK+OBsuOBjeOBnyzjgbLjgafjgagNCivjgbLjgaDjgYQs44G+44KG44G/DQor44Gy44KJ44GELOOBjeOCh+OBhuOBkw0KK+OBsuOCieOBhCzjgobjgYbjgZnjgZENCivjgbLjgonjgYQs44GI44KK44GTDQor44Gy44KJ44GE44KPLOOBj+OBv+OBkw0KK+OBsuOCieOBiizjgbLjgafjgYvjgZoNCivjgbLjgonjgYvjgo8s44G+44GNDQor44Gy44KJ44GfLOOCiOOBl+OBguOBjQ0KK+OBsuOCieOBvuOBpCzjgZ/jgYvjgYoNCivjgbLjgo3jgYgs44GC44Gk44GXDQor44Gy44KN44GbLOOBsuOBp+OBruOCig0KK+OBteOBi+OBluOCjyzjgbLjgafjgobjgY0NCivjgbXjgYvjgbvjgoos44Gu44KK44Gy44KNDQor44G144GP44GX44G+LOOBvuOBjeOBig0KK+OBteOBj+OBoCzjgbLjgo3jgobjgY0NCivjgbXjgY/jgaAs44Gy44KN44G144G/DQor44G144GP44GgLOOBleOChOOBiw0KK+OBteOBmOOBhCzjgorjgYjjgZMNCivjgbXjgZjjgYvjgo8s44GL44Ga44G/DQor44G144GY44GfLOOBkeOCk+OBmA0KK+OBteOBmOOBnyzjgb7jgZXjgYoNCivjgbXjgZjjgZ8s44KI44GX44KN44GGDQor44G144GY44KA44KJLOOBqOOCguOChuOBjQ0KK+OBteOBmOOCgOOCiSzjgYLjgY3jgZMNCivjgbXjgZjjgoLjgags44GX44KH44GG44G444GEDQor44G144GY44KC44GoLOOCiuOCheOBhuOBuOOBhA0KK+OBteOBmOOCj+OCiSzjgZHjgYTjgZXjgY8NCivjgbXjgZjjgo/jgoks44GV44Go44GXDQor44G144Gf44GL44GfLOOBmOOCjeOBhg0KK+OBteOBquOBhCzjgZXjgaHjgZMNCivjgbXjgovjgYvjgo8s44Gy44KN44GTDQor44G144KL44GL44KPLOOBmOOCheOCk+OBhOOBoQ0KK+OBteOCi+OBvuOBnyzjgajjgoLjgoQNCivjgbvjgZcs44KG44GNDQor44G744GX44GG44KJLOOBsuOCjeOBlw0KK+OBu+OBl+OCjSzjgYTjgaTjgb8NCivjgbvjgZ3jgaAs44GX44KF44KT44GUDQor44G744KKLOOBruOBtuOBsuOBpw0KK+OBu+OCiizjgobjgY0NCivjgbvjgorjgYgs44Gu44G244GoDQor44G744KK44GQ44GhLOOBruOBnuOCgA0KK+OBu+OCk+OBqizjgYvjgYrjgosNCivjgbvjgpPjgbws44Gy44KN44KG44GNDQor44G+44GI44GL44KPLOOBv+OCjw0KK+OBvuOBiOOBoCzjgZPjgZnjgZENCivjgb7jgYjjgaAs44Gf44GL44GXDQor44G+44GI44GgLOOBiOOBpOOBkw0KK+OBvuOBjeOBhuOBoSzjgZHjgYTjgZgNCivjgb7jgY3jga4s44GX44KH44GG44GTDQor44G+44GN44KC44GoLOOBqOOCguOBruOCig0KK+OBvuOBleOBqOOBhuOBvyzjgb7jgYTjgZMNCivjgb7jgZnjgYQs44KI44GG44GZ44GRDQor44G+44GZ44GgLOOBvuOBleOChuOBjQ0KK+OBvuOBmeOBoCzjgb/jgbsNCivjgb7jgaTjgYQs44G/44GKDQor44G+44Gk44GG44KJLOOBi+OBmuOBsuOBlQ0KK+OBvuOBpOOBiuOBiyzjgYLjgY3jgbLjgo0NCivjgb7jgaTjgYrjgYss44Go44KC44GTDQor44G+44Gk44GK44GLLOOBvuOChuOBvw0KK+OBvuOBpOOBiuOBiyzjgaDjgYTjgZnjgZENCivjgb7jgaTjgYvjgZIs44Gy44GV44GKDQor44G+44Gk44GX44GfLOOBleOBqOOBlw0KK+OBvuOBpOOBquOBjCzjgo/jgZ/jgosNCivjgb7jgaTjgbDjgoks44Gu44Ge44G/DQor44G+44Gk44Gw44KJLOOBguOBjeOBkw0KK+OBvuOBpOOCguOBqCzjgbLjgo3jgb/jgaQNCivjgb7jgaTjgoLjgags44G744GP44GoDQor44G+44Gk44KE44G+LOOBvuOBhOOBkw0KK+OBv+OBhuOCiSzjgorjgofjgYYNCivjgb/jgYbjgoks44GC44Gk44GXDQor44G/44GG44KJLOOBguOBpOOBlw0KK+OBv+OBhuOCiSzjgY3jgojjgb7jgZUNCivjgb/jgY0s44KG44GG44GYDQor44G/44Ga44GL44KPLOOBsuOCjeOChuOBjQ0KK+OBv+OBmuOBn+OBqyzjgobjgY3jgZMNCivjgb/jgZrjga4s44KG44GG44Gb44GEDQor44G/44Gd44GuLOOBn+OBoOOBvuOBlQ0KK+OBv+OBnuOBr+OBnyzjgaHjgYgNCivjgb/jgarjgYzjgo8s44G+44Gh44GTDQor44G/44Gq44GM44KPLOOBguOChA0KK+OBv+OBquOBvyzjgbLjgo3jgobjgY0NCivjgb/jgarjgb8s44Gf44GL44GXDQor44G/44Gq44G/44GL44GfLOOBn+OBi+OBruOBtg0KK+OBv+OBquOBv+OCgOOCiSzjgbLjgafjgY0NCivjgb/jga/jgoks44G+44GV44GNDQor44G/44KA44KJLOOBv+OBjeOBkw0KK+OBv+OChOOBhCzjga7jgbbjgYLjgY0NCivjgb/jgoTjgZbjgY0s44GC44Gk44GXDQor44G/44KE44GW44KPLOOBquOBiuOChA0KK+OBv+OChOOBluOCjyzjgYLjgY3jgokNCivjgb/jgoTjgoDjgoks44GL44GK44KKDQor44G/44KE44KA44KJLOOBguOChA0KK+OBv+OChOOCguOBqCzjgobjgYbjgbjjgYQNCivjgb/jgoTjgoLjgags44G+44GV44KEDQor44G/44KI44GXLOOBpOOBi+OBlQ0KK+OCgOOBreOCgOOCiSzjgaHjgYvjgbXjgb8NCivjgoDjgonjgYvjgZ8s44Go44KC44KG44GNDQor44KA44KJ44Ga44G/LOOBv+OBpOOBruOCig0KK+OCgOOCieOBnyzjgY/jgb/jgZMNCivjgoDjgonjgZ8s44G+44GNDQor44KA44KJ44KC44GoLOOBi+OBmuOBruOBtg0KK+OCgOOCieOChOOBvizjgarjgYoNCivjgoLjgoos44Gq44GK44GTDQor44KC44KKLOOBi+OBpOOBvuOBlQ0KK+OCguOCiizjgYLjgaTjgbLjgZMNCivjgoLjgoos44GP44G/44GTDQor44KC44KKLOOBv+OBjQ0KK+OCguOCiuOBhuOBoSzjga7jgorjgZMNCivjgoLjgorjgZfjgZ8s44KG44GG44GE44Gh44KNDQor44KC44KK44Gf44GrLOOBi+OBmuOBqA0KK+OCguOCiuOCguOBqCzjgZLjgpMNCivjgoLjgorjgoTjgb4s44GT44GG44GYDQor44KC44KN44GILOOBsuOCjeOBi+OBmg0KK+OChOOBlCzjgb/jga7jgosNCivjgoTjgZnjgYzjgY0s44Go44KC44G144G/DQor44KE44GZ44GgLOOBguOChOOBkw0KK+OChOOBmeOCguOBqCzjgYLjgaTjgZcNCivjgoTjgaTjgarjgb8s44GC44GN44GKDQor44KE44Gq44GO44GV44KPLOOBkeOBhOOBmeOBkQ0KK+OChOOBquOBjuOBr+OCiSzjgZfjgpPjgZnjgZENCivjgoTjgbbjgarjgYss44Gf44GE44GXDQor44KE44G+44GG44GhLOOBn+OBi+OChuOBjQ0KK+OChOOBvuOBiuOBiyzjgZ/jgaDjgZcNCivjgoTjgb7jgYrjgYss44Gq44GK44KEDQor44KE44G+44GK44GNLOOBsuOCjeOChuOBjQ0KK+OChOOBvuOBjOOBnyzjgb7jgZPjgagNCivjgoTjgb7jgZDjgaEs44GX44KT44GE44GhDQor44KE44G+44GQ44GhLOOBsuOCjeOBkw0KK+OChOOBvuOBl+OBnyzjgb7jganjgYsNCivjgoTjgb7jgZfjgZ8s44Gh44GIDQor44KE44G+44GgLOOBoeOBiA0KK+OChOOBvuOBoCzjgZjjgoXjgpPjgZgNCivjgoTjgb7jgaAs44Gu44G244GTDQor44KE44G+44GgLOOBguOChA0KK+OChOOBvuOBoCzjgb7jgY3jgZMNCivjgoTjgb7jgarjgYss44KB44GQ44G/DQor44KE44G+44KA44KJLOOBhOOBo+OBm+OBhA0KK+OChOOBvuOCgOOCjSzjgYvjgarjgZMNCivjgoTjgb7jgoLjgags44GT44GG44G444GEDQor44KE44G+44KC44GoLOOBpuOCi+OBsuOBkw0KK+OChOOBvuOCguOBqCzjgb7jgZXjgobjgY0NCivjgoTjgb7jgoLjgags44G/44Gk44KI44GXDQor44KE44G+44KC44GoLOOBv+OBruOCiw0KK+OChOOBvuOCguOBqCzjgZfjga7jgbYNCivjgoTjgb7jgoLjgags44Go44GK44KLDQor44KE44G+44KC44GoLOOBguOBmeOBiw0KK+OChOOBvuOCguOBqCzjgo/jgZ/jgosNCivjgobjgYLjgZUs44GP44G/44GTDQor44KG44GNLOOBquOBiuOBkw0KK+OChuOCiuOChOOBvizjga7jgorjgbLjgo0NCivjgojjgZPjgZ8s44GC44Gk44Gy44GVDQor44KI44GT44Gv44G+LOOBqOOBl+OChuOBjQ0KK+OCiOOBk+OChOOBvizjgYLjgobjgb8NCivjgojjgZPjgoTjgb4s44GL44Ga44GNDQor44KI44GX44GK44GLLOOBjeOCh+OBhuOBkw0KK+OCiOOBl+OBiuOBiyzjgb7jgYTjgZMNCivjgojjgZfjgYrjgYss44G+44KK44GTDQor44KI44GX44GgLOOBn+OBi+OBqOOBlw0KK+OCiOOBl+OBoCzjgarjgYrjgZMNCivjgojjgZfjgaAs44Gq44GK44GTDQor44KI44GX44GgLOOBvuOCiuOBiA0KK+OCiOOBl+OBoCzjgobjgYbjgZgNCivjgojjgZfjgaAs44KG44GG44GYDQor44KI44GX44GuLOOChuOBiw0KK+OCiOOBl+OBsuOCjSzjgobjgb8NCivjgojjgZfjgb7jgaQs44Go44GK44KLDQor44KI44GX44KA44KJLOOBoOOBhOOBmeOBkQ0KK+OCiOOBl+OCgOOCiSzjgYvjgZrjgbXjgb8NCivjgo/jgYvjgb7jgaQs44Gy44KN44KEDQor44KP44GN44GfLOOBi+OBmuOBig0KK+OCj+OBjeOBnyzjgZHjgpPjgZfjgo3jgYYNCivjgo/jgZfjgYos44KI44GX44GC44GNDQor44KP44GX44GW44KPLOOBoeOBguOBjQ0KK+OCj+OBoCzjgYTjgZXjgoANCivjgo/jgaAs44Go44GX44GKDQor44KP44GgLOOBhOOBleOBig0KK+OCj+OBoCzjgZ/jgZHjgZcNCivjgo/jgaAs44GL44Gk44GIDQor44KP44Gf44Gq44G5LOOBi+OBmuOBl+OCkw0KK+OCj+OBn+OBquOBuSzjgajjgY/jgZgNCivjgo/jgZ/jgarjgbks44Gy44KN44GXDQor44KP44Gf44Gq44G5LOOBjeOCiOOBiuOBvw0KK+OCj+OBn+OBquOBuSzjgojjgZfjgbLjgo0NCivjgo/jgZ/jgarjgbks44KI44KK44G/44GkDQor44KP44Gf44Gq44G5LOOBkeOBhOOBmA0KK+OChOOBvuOBkOOBoSzjgoLjgajjgZgNCivjgZnjgZrjgY0s44GY44KN44GGDQor44GV44GV44GuLOOBmeOBmeOCgA0KK+OBi+OBreOBkyzjgZ/jgZHjgZcNCivjgY/jgbzjgZ8s44KM44GE44GTDQor44GT44GZ44GR44GM44KPLOOBvuOBleOBquOBig0KK+OBi+OBquOBhCzjgZXjgbbjgo3jgYYNCivjgYvjgajjgYYs44GT44GG44GE44GhDQor44GT44Gg44G+LOOBn+OBi+OBsuOBkw0KK+OBk+OBsOOChOOBlyzjgajjgZfjgbLjgo0NCivjgZPjgZjjgb4s44Go44GK44KLDQor44GL44KB44KE44G+LOOBi+OBmuOBsuOBkw0KK+OBj+OCieOBsOOChOOBlyzjga7jgbbjgYoNCivjgYvjgpPjgaAs44GL44Ga44KG44GNDQor44GT44KT44GuLOOBmOOCheOCk+OBmA0KK+OBi+OCj+OBl+OBvizjgb7jgZXjgarjgooNCivjgYvjgo/jgYvjgb8s44GT44GG44GYDQor44GL44Gq44GLLOOBi+OBj+OBn+OCjeOBhg0KK+OBi+OCj+OCgOOCiSzjgbLjgo3jgYbjgb8NCivjgY3jgoDjgoks44GX44KF44KT44GE44GhDQor44GL44GZ44GMLOOBsuOCjeOBlw0KK+OBk+OBmOOBvizjgoLjgajjgojjgZcNCivjgYvjgo/jga4s44GT44GG44GE44GhDQor44GL44KP44GqLOOCiOOBl+OBvuOBlQ0KK+OBk+OBmuOBvizjgZ/jgZHjgZcNCivjgYvjgo/jgZXjgY0s44G+44GV44GC44GNDQor44GL44Gf44GuLOOBvuOBleOBguOBjQ0KK+OBi+OBn+OBoCzjgYLjgY3jgYoNCivjgY3jgY/jgaEs44G+44GV44GK44G/DQor44GL44G/44GG44KJLOOBi+OBmuOBsuOBpw0KK+OBi+OBreOBoCzjgabjgaTjgYoNCivjgZPjgpPjga4s44KE44GZ44GKDQor44GL44KP44KC44GoLOOBl+OBkuOBvw0KK+OBi+OBsOOChCzjgbLjgo3jgZcNCivjgZPjgbbjgY/jgo0s44GR44KT44GN44GhDQor44GP44G+44GM44GELOOChuOBhuOBmA0KK+OBk+OCk+OBrizjgbLjgafjgY0NCivjgZPjgoTjgb4s44GX44KH44GG44GE44GhDQor44GN44Gf44GX44KNLOOBsuOBqOOBlw0KK+OBk+OBoOOBvizjgZ/jgZHjgZcNCivjgYvjgajjgYYs44GI44GE44GE44GhDQor44GN44KA44KJLOOBqOOBl+OBr+OCiw0KK+OBk+OBhOOBpyzjgYTjgZXjgYoNCivjgY/jgoTjgb4s44Gf44GR44GXDQor44GN44KK44Gv44KJLOOCguOCiuOBsuOCjQ0KK+OBi+OCiCzjgb7jgZXjgZ/jgaANCivjgYvjga3jgZMs44Go44GX44GKDQor44GT44Gv44KJLOOBhOOCj+OBig0KK+OBi+OBqOOBhizjgobjgY3jgYoNCivjgZPjgYQs44Gb44GE44GE44Gh44KN44GGDQor44GL44KE44G+LOOBhOOBleOBig0KK+OBk+OBhOOBkSzjgY/jgavjgbLjgZMNCivjgZPjgZjjgb4s44GC44GN44GoDQor44GT44G+44GkLOOBvuOBleOBmA0KK+OBjeOBn+OCgOOCiSzjga7jgorjgojjgZcNCivjgY3jgZ/jgo/jgY0s44Gc44KT44GE44Gh44KNDQor44GL44GV44GY44G+LOOBsuOCjeOBteOBvw0KK+OBjeOCgOOCiSzjgabjgaTjgo3jgYYNCivjgYvjgb/jgZDjgaEs44GV44Gh44GKDQor44GL44Go44GGLOOBteOBmOOBig0KK+OBi+OCj+OCgOOCiSzjgajjgZfjgbLjgagNCivjgYvjganjgZ8s44Gu44G244Gf44GLDQor44GK44GK44Gf44GRLOOBl+OBkuOCiw0KK+OBi+OBqOOBhizjgajjgoLjgb8NCivjgY3jga4s44Gu44G244Gy44GVDQor44GL44G/LOOBvuOBleOBvw0KK+OBjeOBj+OBoSzjgb7jgZXjgobjgY0NCivjgYvjgY3jgYbjgaEs44Gy44KN44Gy44GVDQor44GT44GY44G+LOOBvuOBleOBvw0KK+OBi+OBn+OBiuOBiyzjgZfjgoXjgpPjgZnjgZENCivjgY/jgbzjgZ8s44Gy44KN44KG44GNDQor44GN44Gf44GW44KPLOOBvuOBleOBguOBjQ0KK+OBk+OBv+OBrSzjgoLjgajjgobjgY0NCivjgY/jgbws44Gf44GL44KG44GNDQor44GN44Gf44Ga44KBLOOBi+OBmuOBqOOBlw0KK+OBk+OBsOOChOOBlyzjgYvjgaTjgYoNCivjgYvjgo/jgZDjgaEs44KI44GX44Gy44GTDQor44GR44GM44GV44KPLOOBsuOBleOBlw0KK+OBk+OBhuOBoSzjgb/jgaHjgYoNCivjgZPjgoTjgb4s44Go44GK44KLDQor44GL44KP44GN44GfLOOBn+OBi+OBsuOBpw0KK+OBi+OCj+OBv+OBpCzjgZfjgofjgYbjgZ7jgYYNCivjgYvjgZ/jgbLjgoks44GC44Gk44GKDQor44GL44KP44GO44GXLOOBsuOCjeOBlw0KK+OBk+OCk+OBqSzjgojjgZfjgb/jgaQNCivjgY3jgoDjgoks44GC44GN44Gy44GTDQor44GP44G844KE44G+LOOBl+OCk+OBn+OCjeOBhg0KK+OBj+OBvuOCguOBqCzjgb7jgZXjgY0NCivjgYvjgo/jgZ8s44G144G/44KIDQor44GP44Gr44Gu44G2LOOChOOBmeOBig0KK+OBi+OBvuOBoCzjgZ/jgYvjgZcNCivjgYvjgY8s44GK44GV44KADQor44GL44Gt44GTLOOBiuOBleOCgA0KK+OBk+OBsOOChOOBlyzjgYLjgY3jgokNCivjgYvjgZfjgYos44GR44KT44GYDQor44GL44Gq44GE44KPLOOBkeOBhOOBmA0KK+OBkeOCk+OCguOBoSzjgZ/jgaDjgZcNCivjgY3jgY/jgaEs44GK44GV44KADQor44GL44GW44G+LOOChOOBmeOBguOBjQ0KK+OBk+OBvuOBpOOCguOBqCzjgYjjgYTjgZMNCivjgZPjgpPjgaks44GL44Gk44Gy44GTDQor44GN44GP44GX44G+LOOBi+OBpOOBvuOBlQ0KK+OBk+OBsOOChOOBlyzjgZvjgYTjgZMNCivjgY/jgb7jgYzjgYQs44G+44GV44Go44GXDQor44GL44Go44GGLOOBi+OBmuOBsuOBkw0KK+OBvuOCi+OBsOOChOOBlyzjgZ/jgYvjgZcNCivjgoDjgajjgYYs44GL44Gk44G/DQor44G/44Gf44GrLOOBn+OBkeOBlw0KK+OBv+OCjyzjgb7jgZXjgZcNCivjgZfjgb/jgZos44Gk44Go44KADQor44G/44Ga44GuLOOBqOOBl+OBig0KK+OBvuOBoeOBoCzjgYvjgZrjgYoNCivjgb7jgaTjgYQs44GL44Ga44Gf44G/DQor44G/44GG44KJLOOCiuOCheOBhuOBhOOBoQ0KK+OBsuOBrizjgorjgofjgYbjgYTjgaENCivjgoDjgonjgYvjgb8s44G+44GV44Gy44KNDQor44G/44KE44GuLOOBsuOCjeOChuOBjQ0KK+OBvuOCi+OBhCzjgb7jgZXjga7jgooNCivjgoDjgonjgZXjgY0s44Go44GX44GKDQor44G+44GV44GLLOOBsuOBp+OBruOCig0KK+OBv+OBreOBnyzjgZ/jgZHjgb8NCivjgb7jgaTjgarjgYws44KG44Gf44GLDQor44G/44Gq44GM44KPLOOBm+OBhOOBmA0KK+OBv+OChOOBkSzjgarjgYrjgYLjgY0NCivjgb7jgaTjgoLjgags44GR44KT44GE44GhDQor44G/44GV44KPLOOBqOOBl+OChuOBjQ0KK+OBvuOBiOOBoCzjgZPjgYbjgZ7jgYYNCivjgYbjgaDjgYzjgo8s44Go44GX44GL44GkDQor44G/44KE44Gv44KJLOOBk+OBhuOBmA0KK+OCgOOCieOBhCzjgZfjgofjgYbjgZgNCivjgb7jgaTjgoLjgoos44GX44GS44GNDQor44G+44GV44GNLOOBjeOBj+OBig0KK+OBv+OBhuOCiSzjgYjjgYTjgZgNCivjgoLjgajjgb/jgoQs44GN44KI44GXDQor44KA44KJ44GL44G/LOOBsuOCjeOBteOBvw0KK+OBvuOBqOOBsCzjgb7jgZXjgYLjgY0NCivjgb/jgYbjgoks44Go44GX44GKDQor44G+44Gk44GL44KPLOOBi+OBmuOBsuOCjQ0KK+OBv+OBmuOBn+OBqyzjgarjgYrjgbLjgZMNCivjgb/jgoTjga4s44G+44GV44KG44GNDQor44G+44Gk44GgLOOBteOBleOBoeOBiw0KK+OBv+OBmSzjgYLjgY3jgokNCivjgb7jgaTjgoTjgb4s44Go44GX44GIDQor44G/44KE44KC44GoLOOBn+OBoOOBguOBpA0KK+OBv+OBmuOBrizjgbXjgb/jgYoNCivjgb7jgovjgoTjgb4s44Gb44GE44GYDQor44G+44KL44GTLOOBv+OBoeOBn+OBiw0KK+OCguOBoeOBoCzjgajjgYrjgosNCivjgoLjgajjga/jgZcs44G+44KC44KLDQor44G/44Ga44KELOOBk+OBhuOBmA0KK+OBv+OChOOBluOBjSzjgb/jgaHjgb7jgZUNCivjgb/jgoTjgYzjgo8s44G/44Gk44KLDQor44KA44KJ44GX44G+LOOBn+OBoOOBig0KK+OBvuOBmeOBleOBkyzjgZvjgYTjgYTjgaENCivjgoLjgoos44GE44Gh44KN44GGDQor44KC44KK44GfLOOBi+OBmuOBig0KK+OBv+OBquOBvyzjgojjgZfjgYLjgY0NCivjgb/jgoTjgY0s44G+44GV44GKDQor44KC44KK44KE44G+LOOBkeOCk+OBmA0KK+OBv+OBmuOBnyzjgojjgZfjgYoNCivjgb7jgaTjgYQs44G/44Gk44GQDQor44G+44Gk44GKLOOBvuOBleOCiA0KK+OBvuOBpOOBl+OBnyzjgobjgZ/jgYsNCivjgZPjgbDjgoTjgZcs44GL44Gk44G/DQor44KA44GL44GILOOBvuOBleOBmA0KK+OCguOCiuOBhCzjgY7jgofjgZgNCivjgoLjgorjgZ8s44Gf44GE44Ge44GGDQor44KA44GL44GELOOBvuOBleOBig0KK+OBvuOBpOOBiizjgajjgY3jgo8NCivjgoDjgonjgoTjgb4s44KI44GX44Gy44GTDQor44G+44Gk44KC44GoLOOBqOOBl+OBig0KK+OBv+OChOOBleOBqCzjgb/jga7jgosNCivjgb/jgoTjgZbjgo8s44KI44GX44GKDQor44KC44KK44KA44KJLOOBn+OBi+OBlw0KK+OCgOOCieOBrizjgbLjgafjgYoNCivjgb7jgZnjgaAs44G/44Gu44KLDQor44KA44KJ44GfLOOBruOBtuOBig0KK+OBv+OChOOBleOBiyzjgZHjgpPjgZgNCivjgoLjgajjgbDjgoTjgZcs44G+44GV44G/44GkDQor44G/44Ga44GuLOOChuOCiuOBkw0KK+OCguOCguOBhCzjgojjgZfjgYoNCivjgb7jgaTjgaAs44Go44GP44GKDQor44GZ44GM44KP44KJLOOBquOBiuOBiA0KK+OBvuOBpOOBsOOCiSzjgb7jgZPjgagNCivjgb7jgaTjgoLjgags44G/44Gu44KLDQor44G/44KE44Gv44KJLOOBguOBpOOCiOOBlw0KK+OCgOOCieOBhOOBlyzjgb7jgoLjgosNCivjgb7jgaTjgoDjgoks44G+44KC44KLDQor44G/44KI44GXLOOBpuOBpOOCiOOBlw0KK+OCguOCiuOCguOBqCzjgYvjgZrjgYoNCivjgb/jgZrjgZ/jgass44Gf44GR44GXDQor44G+44Gk44GwLOOBguOBpOOBlw0KK+OBvuOBpOOBhCzjgYvjgpMNCivjgoDjgonjgYvjgb8s44GL44Ga44GKDQor44KC44KK44GfLOOBl+OBkuOBr+OCiw0KK+OCgOOCieOBnyzjgZfjgZLjgYoNCivjgb7jgZXjgY0s44Gy44KN44GXDQor44G/44KE44GW44GNLOOCiOOBl+OBjQ0KK+OBvuOBpOOBsOOCiSzjgZfjgpPjgYTjgaENCivjgoDjgonjgb7jgaQs44GC44Gk44GXDQor44KC44KKLOOBruOBtuOChuOBjQ0KK+OCguOCiuOCgOOCiSzjgb7jgZXjgYvjgZoNCivjgZnjgo8s44KI44GX44G/DQor44GT44KP44Gf44KKLOOBquOBiuOBjQ0KK+OBvuOBpOOBluOBjSzjgojjgZfjga7jgbYNCivjgb7jgaPjgZXjgY0s44G+44GV44Gy44KNDQor44G/44Gf44GPLOOBkeOBhOOBnuOBhg0KK+OBvuOBpOOBi+OCjyzjgZXjgajjgZcNCivjgoLjgY4s44GX44GTDQor44G+44G244GhLOOBjeOCiOOBlw0KK+OBvuOBpOOCguOBqCzjgajjgZfjgo3jgYYNCivjgoLjgoos44KK44KH44GG44GE44GhDQor44G+44Gk44GG44KJLOOBi+OBmuOBquOCig0KK+OBvuOBiOOBoCzjgYLjgY3jgYoNCivjgb7jgZnjgaAs44Gy44KN44GXDQor44G+44GI44Gr44GXLOOBsuOCjeOBlw0KK+OBvuOCi+OChOOBvizjgarjgYrjgoQNCivjgb7jgaTjgaAs44Gf44GL44GKDQor44G+44GNLOOBqOOBl+OBsuOBkw0KK+OCguOBhuOBiCzjgZfjgpPjgYTjgaHjgo3jgYYNCivjgoDjgonjgYQs44Go44KI44G/DQor44G+44Gk44GELOOBj+OBq+OBsuOBkw0KK+OCguOCiuOBnyzjgb7jgZXjgosNCivjgb7jgYjjgaAs44Gf44GL44G244G/DQor44KA44KJ44GG44GhLOOBhOOBleOCgA0KK+OBv+OBpOOChOOBmSzjgYLjgY3jgokNCivjgoLjgoos44GR44KT44GYDQor44G+44Gk44GgLOOBleOBqOOBlw0KK+OBvuOBpOOBiizjgb7jgZXjgbXjgb8NCivjgb7jgovjgoTjgb4s44GC44GN44GKDQor44G+44Gk44GM44GILOOBl+OBkuOBsuOCjQ0KK+OBi+OBv+OBj+OCiSzjgZPjgYbjgYTjgaENCivjgb/jganjgorjgYvjgo8s44KG44GG44GY44KN44GGDQor44G+44GZ44GgLOOBl+OBkuOBruOBtg0KK+OBv+OBpuOCiSzjgoTjgZnjgYoNCivjgb7jgaTjgarjgYws44GC44GN44KJDQor44KC44KK44GK44GLLOOCiOOBl+OBvw0KK+OBv+OBneOBiizjgYjjgaTjgYoNCivjgoDjgonjgoTjgb4s44GL44Gk44KI44GXDQor44KC44KK44KC44GoLOOBl+OBkuOCiw0KK+OCguOCiizjgaTjgajjgoANCivjgb7jgZnjgaAs44Gy44KN44Gf44GLDQor44G/44KE44KC44GoLOOBi+OBpOOBvuOBlQ0KK+OCgOOCieOBnyzjgojjgZfjgabjgosNCivjgb/jgarjgb/jgZXjgo8s44GL44Ga44Gy44KNDQor44G+44GX44G+LOOBmeOBv+OBsuOCjQ0KK+OCguOCiuOBkOOBoSzjgojjgZfjgYLjgY0NCivjgb7jgaTjgYQs44Gf44GL44GXDQor44G+44GI44GL44KPLOOBsuOBqOOBlw0KK+OCguOBoeOBmuOBjSzjgZjjgoXjgpMNCivjgb7jgZnjgaAs44GX44KT44GN44GhDQor44G+44Gk44KC44GoLOOBmOOCheOCk+OBnuOBhg0KK+OCguOCiuOBquOBjCzjgYvjgZrjga7jgooNCivjgb7jgZnjgaAs44Gy44KN44Gf44G/DQor44G/44GG44KJLOOBj+OBq+OBig0KK+OBvuOBpOOBrizjgZ/jgaDjgYoNCivjgb7jgaTjgYrjgYss44KI44GX44Gm44KLDQor44G+44Gh44GELOOBk+OBhuOBhOOBoQ0KK+OBv+OBmuOBn+OBqyzjgajjgZfjgYoNCivjgb7jgaTjgoLjgags44KI44GX44Gu44KKDQor44G+44GV44GNLOOBsuOBp+OBqA0KK+OBvuOBpOOCguOBqCzjgZ/jgZHjgZcNCivjgb/jgaTjgoQs44Gy44Gn44KE44GZDQor44G/44Ga44GuLOOBmOOCjeOBhg0KK+OBvuOBiOOBoCzjgbXjgb/jgYoNCivjgoDjgonjgb7jgaQs44GR44KT44GYDQor44KA44GV44GX44GuLOOBguOBjeOCiQ0KK+OBvuOBiOOBr+OBnyzjgb7jgZXjgbLjgZMNCivjgb7jgaTjgZbjgo8s44KI44GX44GKDQor44G/44Gk44GELOOCiOOBl+OBi+OBmg0KK+OCguOCguOBoCzjgb/jgaTjgYvjgZoNCivjgb7jgaTjgYos44GL44Gk44G/DQor44G/44KPLOOBl+OCheOBhuOBmA0KK+OCgOOCieOBi+OBvyzjgabjgaTjgoQNCivjgb/jgYvjgb8s44Gv44KL44GNDQor44Gs44GL44GW44KPLOOBl+OCk+OBmA0KK+OBquOBi+OCgOOCiSzjgZfjgZrjgYgNCivjgavjgZfjgoDjgoks44GP44Gr44Gy44GTDQor44Gr44Gj44GfLOOBkeOCk+OBmA0KK+OBquOBjOOBpOOChizjgajjgY3jgoTjgZkNCivjgavjgYTjga4s44Gy44KN44GXDQor44Gf44G244GhLOOBkeOCk+OBmA0KK+OBq+OBl+OBrizjgZXjgbbjgo3jgYYNCivjgazjgYvjgZ8s44Gf44KC44GkDQor44Gr44GX44KA44KJLOOBsuOBleOBig0KK+OBquOBjOOBrizjgZ/jgYvjgobjgY0NCivjgarjgYvjgYzjgo8s44KI44GX44GC44GNDQor44Gr44GX44KE44G+LOOBsuOCjeOBlw0KK+OBquOBi+OBmOOBvizjgb7jgZXjgbLjgo0NCivjgavjgZfjgaAs44G/44Gk44GKDQor44Gq44GL44KA44KJLOOBteOBv+OBig0KK+OBruOCgOOCiSzjgobjgY3jgYoNCivjgarjgYvjgoLjgags44Gu44KK44GC44GNDQor44Gq44GL44GM44KPLOOBi+OBmuOBn+OBvw0KK+OBquOCi+OBleOCjyzjgaTjga3jgYoNCivjgarjgYTjgajjgYYs44Gf44GR44GKDQor44Gu44G5LOOCiOOBl+OBsuOBpw0KK+OBq+OBl+OBqizjgoTjgZnjga7jgooNCivjga7jgoDjgoks44Gf44Gg44GXDQor44Gq44GL44KA44KJLOOBl+OCk+OBmOOCjeOBhg0KK+OBq+OBi+OBhOOBqeOBhizjgojjgZfjgoTjgZkNCivjgarjgYvjgaAs44Gf44Gk44GKDQor44Gr44GX44GqLOOBjeOBv+OBsuOBqA0KK+OBquOCiuOBnyzjgajjgZfjgYoNCivjga7jgZDjgaEs44KI44GX44Gy44KNDQor44Gu44KELOOBk+OBhuOBjQ0KK+OBquOBjOOBhCzjgb7jgZXjgagNCivjgarjgYvjgoDjgoks44GN44KI44GXDQor44Gr44GE44Ga44G+LOOBn+OBi+OBvw0KK+OBquOBi+OBjOOBvyzjgZfjgoXjgYbjgYTjgaENCivjgarjgYzjgZ8s44GN44GX44GKDQor44Gr44GX44GW44KPLOOBr+OBpOOBiA0KK+OBruOBmyzjgZjjgoXjgYbjgo3jgYYNCivjgarjgYzjgYQs44KG44GN44GKDQor44Gr44GX44GW44KPLOOBvuOBleOBig0KK+OBquOBi+OBr+OBnyzjgYvjgZrjgajjgZcNCivjgarjgYvjgZjjgb4s44Gy44KN44GXDQor44Gq44GL44GgLOOBvuOBpOOBig0KK+OBruOBquOBiyzjgb7jgZXjgY0NCivjgarjgYvjgYzjgo8s44G+44GV44GC44GNDQor44Gq44GL44GX44G+LOOBn+OBv+OBig0KK+OBquOBi+OCguOBqCzjgb7jgZXjgosNCivjgavjgZfjgYrjgYss44Gy44KN44GXDQor44Gr44GX44G+44GILOOBl+OCk+OBn+OCjeOBhg0KK+OBquOBi+OCgOOCiSzjgb7jgZXjgYoNCivjgarjgYvjgavjgZcs44GL44Ga44GKDQor44Gu44GgLOOCgOOBpOOChA0KK+OBquOBi+OCgOOCiSzjgYLjgY3jgbLjgZMNCivjgarjgYvjgZbjgo8s44KK44KH44GG44GE44GhDQor44Gr44GX44GgLOOCiOOBl+OCjeOBhg0KK+OBq+OBl+OBoCzjgZ/jgaDjgobjgY0NCivjgavjgYQs44KK44KH44GG44GYDQor44KE44G+44KC44GoLOOBsuOBqOOBlw0KK+OBquOBi+OBhuOBoSzjgoTjgZnjgYoNCivjgarjgYvjgZjjgb4s44GL44Ga44Gf44GLDQor44Gq44GL44KA44KJLOOBvuOBleOBvw0KK+OBruOCgOOCiSzjgY/jgavjgbLjgZMNCivjgavjgZfjgoDjgoks44KE44GZ44Gy44KNDQor44Gu44Gq44GLLOOBn+OBoOOBsuOBkw0KK+OBq+OBl+OCgOOCiSzjgajjgZfjgbLjgacNCivjgavjgZfjgYos44GN44KI44GXDQor44Gq44GM44GKLOOBjeOCiOOBlw0KK+OBq+OBhOOBvyzjgZHjgpPjgZgNCivjgarjgYvjgoDjgoks44Gy44Gn44KG44GNDQor44Gt44Ga44GLLOOCiOOBl+OBruOCig0KK+OBquOBi+OCgOOCiSzjgobjgY3jgajjgZcNCivjgarjgYvjgZbjgags44Gm44Gk44KEDQor44GC44GV44GuLOOBmOOCheOCkw0KK+OBruOBjOOBvyzjgY/jgavjgbLjgo0NCivjgarjgYvjgZjjgb4s44GL44Ga44Gy44GTDQor44Gq44GE44Go44GGLOOBi+OBmuOBguOBjQ0KK+OBquOBi+OCgOOCiSzjgojjgZfjga7jgooNCivjgarjgYvjgavjgZcs44GN44KI44GC44GNDQor44Gq44GL44GgLOOBn+OBv+OBig0KK+OBquOBjOOBleOCjyzjgZ/jgYvjgZcNCivjgarjgYzjga4s44GL44Ga44KG44GNDQor44Gr44Gj44GfLOOChuOBn+OBiw0KK+OBquOCk+OBsCzjgb/jgaTjgbLjgo0NCivjga7jgZrjgYgs44GP44Gr44G/44GkDQor44Gq44GM44G/LOOBsuOCjeOBlw0KK+OBquOBjOOBhCzjgZjjgoXjgpPjgYTjgaENCivjgarjgYvjga/jgoks44G/44Ga44G7DQor44Gq44GL44GY44G+LOOBn+OBkeOCiOOBlw0KK+OBquOBi+OBmOOBvizjgYvjgaTjgYoNCivjgavjgZfjgaAs44GC44GN44Gy44GTDQor44Gq44GK44GELOOBl+OBoeOCjeOBhg0KK+OBquOBueOBl+OBvizjgojjgZfjgb7jgZUNCivjgarjgYvjga4s44GX44KH44GG44GE44GhDQor44Gq44GL44KA44KJLOOBr+OCi+OBig0KK+OBruOBoCzjgb/jgaTjgojjgZcNCivjgarjgYvjgZss44Go44GX44GC44GNDQor44Gq44GL44GY44G+LOOBv+OBpOOBl+OBkg0KK+OBquOBjOOBleOCjyzjgZ/jgaDjgZcNCivjgavjgbjjgYQs44G/44Gk44KIDQor44Gq44GM44GELOOCiuOCh+OBhuOBmeOBkQ0KK+OBquOBi+OBl+OBvizjgZ/jgYvjgYoNCivjgarjgYvjgYos44Gb44GEDQor44Gq44GL44GM44KPLOOBruOBtuOBig0KK+OBquOBhOOBqOOBhizjgZPjgYbjgYTjgaHjgo3jgYYNCivjga7jgZjjgb4s44KG44GG44GZ44GRDQor44Gq44GM44GuLOOChuOBjeOBig0KK+OBq+OBl+OBoCzjgYvjgZrjgYoNCivjgarjgYvjgaAs44GN44KI44GXDQor44Gq44GL44Gv44KJLOOBn+OBi+OBruOBmeOBkQ0KK+OBquOBi+OBmOOBvizjgoDjga3jgZ/jgYsNCivjga3jgoLjgags44GN44KI44GXDQor44Gq44GL44KA44KJLOOBkeOCk+OBmA0KK+OBquOBjOOBqOOCgizjgb7jgZXjgb8NCivjgarjgYvjgoDjgoks44Gy44Go44G/DQor44Gq44GL44KE44G+LOOCiOOBl+OBig0KK+OBquOBi+OCgOOCiSzjgbvjgZrjgb8NCivjgarjgYvjgoDjgoks44G144G/44Gu44KKDQor44Gu44GY44G+LOOBpuOBpOOCjeOBhg0KK+OBquOBjOOBteOBoSzjgoTjgZnjgo0NCivjgarjgYvjga4s44GU44GE44GhDQor44Gr44GX44KE44G+LOOBl+OCk+OBhOOBoQ0KK+OBquOBi+OCgOOCiSzjgb7jgZXjgobjgY0NCivjgarjgYzjgZfjgb4s44Gq44GK44GYDQor44Gr44KPLOOChuOBn+OBiw0KK+OBquOBi+OBrizjgoTjgZnjgYLjgY0NCivjgYrjgavjgZbjgo8s44KG44GN44GKDQor44GK44GX44GL44GfLOOBvuOBleOBig0KK+OBiuOBiyzjgYvjgaTjgbLjgo0NCivjgYrjgY/jgoTjgb4s44Gu44G844KLDQor44GK44GNLOOBmeOBv+OBig0KK+OBiuOBi+OBv+OChCzjgZHjgpPjgZgNCivjgYrjgZDjgoks44G+44GV44GNDQor44GK44GK44GnLOOBvuOBleOBruOCig0KK+OBiuOBruOBoCzjgb7jgZXjgbLjgZMNCivjgYrjgYrjgavjgZcs44G+44GV44GNDQor44GK44GP44GgLOOBjeOCh+OBhuOBhOOBoeOCjeOBhg0KK+OBiuOBj+OBoCzjgajjgZfjgYoNCivjgYrjgYzjgo8s44GT44GG44GYDQor44GK44GuLOOBvuOBleOBig0KK+OBiuOBiuOBmeOBvyzjgZPjgYbjgZgNCivjgYrjgYrjgaTjgYss44Gf44GL44GXDQor44GK44GK44Go44KCLOOBvuOBleOBguOBjQ0KK+OBiuOBi+OBluOBjSzjgobjgYbjgZgNCivjgYrjgYrjga/jgZcs44Gy44KN44GXDQor44GK44GO44GuLOOBteOBv+OBig0KK+OBiuOBleOBoCzjgZfjgZrjgYLjgY0NCivjgYrjgYrjgbAs44Gy44GV44GXDQor44GK44GX44G+LOOBguOChOOBkw0KK+OBiuOBiuOBi+OCjyzjgYvjgZrjgoQNCivjgYrjgYvjgoLjgags44Gy44KN44GXDQor44GK44GM44KPLOOBqOOBiuOCiw0KK+OBiuOBrizjgY3jgojjgagNCivjgYrjgYvjga4s44Go44GK44KLDQor44GK44GW44KPLOOChuOBjeOBvuOBlQ0KK+OBiuOBr+OBjyzjgbLjgo3jgZcNCivjgYrjgZfjgZ/jgass44Gf44GL44GXDQor44GK44GW44KPLOOBsuOCjeOBlw0KK+OBiuOBiuOBr+OBlyzjgZ/jgYvjga7jgbYNCivjgYrjgYrjga/jgZ8s44GT44GG44Go44GPDQor44GK44Gu44Gn44KJLOOBv+OChA0KK+OBiuOBrizjgbXjgb/jgYoNCivjgYrjgYrjgYrjgYss44G144GY44GTDQor44GK44GK44GuLOOCiOOBl+OBruOCig0KK+OBiuOBiuOBr+OBlyzjgobjgZ/jgYsNCivjgYrjgYrjgZ8s44Gf44GL44GXDQor44GK44GK44KC44KKLOOBkeOCk+OBn+OCjeOBhg0KK+OBiuOBl+OBvizjgZMNCivjgYrjgYvjgoLjgags44GT44GG44GE44GhDQor44Gy44KN44GbLOOBqOOCguOChuOBjQ0KK+OBiuOBiuOBv+OBmizjgoTjgZnjgYoNCivjgYrjgYrjga4s44G/44Gk44GKDQor44GK44Gh44GC44GELOOBvuOBleOBsuOBlQ0KK+OBiuOBi+OBuSzjgZ/jgYQNCivjgYrjgYrjgZ/jgass44GC44GN44Gy44KNDQor44GK44GP44GuLOOBl+OBkuOBig0KK+OBiuOBiuOBmeOBjCzjgZHjgpPjgYTjgaENCivjgYrjgYrjga7jgY0s44GL44GK44KLDQor44GK44GK44GE44GXLOOBmA0KK+OBiuOBi+OBoCzjgoLjgajjgaTjgZANCivjgYrjgYrjgb/jgoQs44KG44GN44Gy44KNDQor44GV44Gf44GRLOOBpOOBreOBig0KK+OBiuOBoOOBjizjga/jgaHjgo3jgYYNCivjgYrjgYrjgZ8s44GV44Go44KLDQor44GK44G144GhLOOBn+OBoOOCiOOBlw0KK+OBiuOBiuOBi+OCjyzjgYvjgYrjgosNCivjgYrjgYvjgaks44GV44Go44KLDQor44GK44GK44GV44KPLOOBsuOBp+OBjQ0KK+OBiuOBjuOBleOCjyzjgobjgY3jgbLjgo0NCivjgYrjgYvjgbks44GC44Gk44GXDQor44GK44Go44KI44GXLOOBsuOBp+OBig0KK+OBiuOBjOOCjyzjgZ/jgaTjgo3jgYYNCivjgYrjgorjgYzjgZUs44KE44GZ44Gf44GRDQor44GK44GK44GwLOOChuOBjeOBkw0KK+OBiuOBsOOBnyzjgZ/jgYvjgZcNCivjgYrjgYrjga4s44Gf44GL44KI44GXDQor44GK44GK44GV44GLLOOBvuOBleOChA0KK+OBiuOBiuOBv+OBrSzjgZHjgpPjgZ7jgYYNCivjgYrjgYrjgZ8s44KI44GX44Gy44GTDQor44GE44Gu44GG44GILOOBguOBjeOBig0KK+OBiuOBiuOBk+OBlyzjgZfjgZLjgY0NCivjgYrjgZbjgo8s44Gy44Gn44GKDQor44GK44GL44G5LOOBkeOBhOOBhOOBoQ0KK+OBiuOBiuOBvOOCiSzjgYjjgYTjgZjjgo3jgYYNCivjgYrjgYrjgZ8s44GY44KH44GG44GE44Gh44KN44GGDQor44GK44GW44GNLOOBmOOCheOCk+OBhOOBoQ0KK+OBiuOBj+OBoCzjgoTjgZnjgbLjgo0NCivjgYrjgZbjgo8s44Gm44KL44GC44GNDQor44GK44GL44GgLOOBmeOBmeOCgA0KK+OBiuOBiuOBpOOBiyzjgZPjgYbjgZgNCivjgYrjga7jgafjgoks44GT44GG44GE44GhDQor44GK44GX44GKLOOBn+OBoOOBl+OBkg0KK+OBiuOBoOOBl+OBvizjgZ/jgaDjgZcNCivjgYrjgZbjgY0s44GX44GS44KLDQor44G+44GI44GgLOOBv+OBpOOBig0KK+OBiuOBjSzjgb7jgZXjgYoNCivjgYrjga7jgaAs44Go44GN44GIDQor44GK44Gq44GOLOOBguOBjeOCiQ0KK+OBiuOBj+OBoCzjgojjgZfjgY3jgogNCivjgYrjgYrjgbLjgoks44Gb44Gk44GYDQor44GK44Gu44GW44KPLOOBqOOBl+OBsuOBkw0KK+OBiuOBjuOBr+OCiSzjgY/jgavjgYLjgY0NCivjgYrjgYrjgY/jgb4s44GL44Ga44GKDQor44GK44GK44Gv44KJLOOBruOBtuOBsuOCjQ0KK+OBiuOBjSzjgYvjgaTjgZnjgZENCivjgYrjgYzjgo8s44Gf44Gk44KEDQor44GK44GK44KELOOBsuOBp+OBuw0KK+OBiuOBiuOBleOCjyzjgZXjgbbjgo3jgYYNCivjgYrjgYrjga/jgoks44Gy44KN44KI44GXDQor44GK44GgLOOBn+OBi+OBkw0KK+OBiuOBluOCjyzjgb/jgaTjgYoNCivjgYrjgYzjgZ8s44KK44KH44GG44GZ44GRDQor44GK44GL44GuLOOBguOBjeOBkw0KK+OBiuOBiuOBhOOBlyzjgZfjgb4NCivjgYrjgarjgYQs44Gy44KN44KG44GNDQor44GK44GK44Gk44GLLOOBmOOCheOCk+OBkw0KK+OBiuOBiuOBpOOBiyzjgabjgaTjgYoNCivjgYrjgYTjgacs44KI44GX44GC44GNDQor44GK44GN44KE44G+LOOBi+OBmuOBkw0KK+OBiuOBkOOBlyzjgYLjgZHjgb8NCivjgYrjgaAs44KE44GZ44GXDQor44GK44GL44Gw44KE44GXLOOBn+OBoOOBsuOCjQ0KK+OBiuOBiuOBn+OBqyzjgZjjgoXjgpPjgZgNCivjgYrjgYrjgaTjgY0s44GC44KG44G/DQor44GK44GL44GgLOOBsuOCjeOBlw0KK+OBiuOBiuOBmeOBvyzjgaHjga/jgosNCivjgYrjgYrjgYTjgYzjgo8s44Gf44GL44Gv44KLDQor44GK44GL44GgLOOBmeOBmeOCgA0KK+OBiuOBluOCjyzjgYvjgZrjgbLjgZMNCivjgYrjgYrjgZ/jgass44Gm44Gk44KN44GGDQor44GK44GW44GNLOOBsuOCjeOChuOBjQ0KK+OBiuOBiuOBnyzjgb7jgZXjgZMNCivjgoTjgarjgY7jgoQs44KG44GL44KKDQor44Gq44GL44Gf44GrLOOBl+OCk+OBhOOBoQ0KK+OBk+OBsOOChOOBlyzjgbLjgafjgZcNCivjgb/jgY/jgass44KI44GX44Gy44KNDQor44GZ44Ga44GNLOOBmOOCheOCk+OBhOOBoQ0KK+OBr+OBoOOBrizjgobjgY3jgb7jgZUNCivjgb/jgoTjgb4s44GL44GK44KKDQor44Gf44GL44Gv44GXLOOBvuOBleOBqA0KK+OBl+OCieOBiuOBjOOCjyzjgonjgYTjgZ8NCivjgarjgYvjgoDjgoks44GC44Gd44GLDQor44G+44Gk44GW44GNLOOBjeOBhOOBoeOCjeOBhg0KK+OChOOBvuOBl+OBnyzjgZ/jgYvjgojjgZcNCivjgZfjgoLjgoTjgb4s44GX44GS44KLDQor44G144Gf44KA44KJLOOBruOBtuOChuOBjQ0KK+OBj+OCjyzjgZ/jgYvjgZcNCivjgarjgYvjgoDjgoks44Go44GX44G/44GkDQor44KI44GT44KE44G+LOOBsuOCjeOBguOBjQ0KK+OBsuOCi+OBvizjgobjgY3jgZMNCivjgZ/jgaHjgYvjgo8s44Gq44GK44G/DQor44KP44GL44Gw44KE44GXLOOBpuOCi+OBvw0KK+OBn+OBi+OBr+OBnyzjgajjgoINCivjgYLjgbks44GI44G/44GTDQor44Gb44GNLOOCiuOCheOBhuOBlA0KK+OChOOBvuOBluOBjSzjgbLjgajjgZcNCivjgoTjgb7jga0s44KI44GX44Gy44KNDQor44Gf44GW44KPLOOBmOOCheOCk+OBmA0KK+OBi+OBmOOBi+OCjyzjgYLjgZXjgZMNCivjgZXjgajjgYYs44G+44GV44Gy44KNDQor44GL44KP44GG44GhLOOBvuOCiuOBiA0KK+OBiuOBiuOChOOBvizjga7jgbbjgZMNCivjgZfjgpPjgb/jgofjgYYs44GY44KF44KT44GTDQor44Gf44Gh44KP44GgLOOBquOBiuOBvw0KK+OBiuOBiuOBj+OBvCzjgabjgaTjgoQNCivjgajjgYbjgZTjgYYs44Gy44KN44KG44GNDQor44Gq44GM44GP44KJLOOBn+OBi+OBr+OCiw0KK+OBhOOBqOOBhizjgZHjgpPjgZ3jgYYNCivjgoTjgb7jgZbjgY0s44Gb44GEDQor44GL44GW44G+LOOBr+OCi+OChuOBjQ0KK+OBi+OCk+OBsOOChOOBlyzjgbLjgafjgYoNCivjgZXjgZXjga4s44KB44GE44GTDQor44GL44KP44GX44G+LOOBv+OChuOBjQ0KK+OBl+OCk+OBkOOBhizjga7jgorjgYLjgY0NCivjgZPjgYTjgZrjgb8s44Gf44GP44KEDQor44GL44Gt44GTLOOCiOOBl+OBvw0KK+OBk+OBsOOChOOBlyzjgZnjgYjjgaTjgZANCivjgYvjgoLjgZfjgZ8s44GX44KF44GG44GE44GhDQor44Gf44KA44KJLOOBleOBoeOCiA0KK+OBr+OBm+OBjOOCjyzjgZ/jgYvjgZcNCivjgY/jgorjga/jgoks44Gy44KN44G144G/DQor44GL44Gq44GK44GLLOOBsuOCjeOBlw0KK+OBk+OBsOOChOOBlyzjgobjgY3jgZ/jgYsNCivjgbLjgYTjgZcs44Gf44GL44KG44GNDQor44Gr44G444GELOOBhOOBj+OBkw0KK+OBvuOCi+OBnyzjgarjgYrjgZMNCivjgajjgYrjgoTjgb4s44Gq44G/DQor44Gb44GN44GW44KPLOOBoeOBiw0KK+OBguOCiuOBvizjgoTjgojjgYQNCivjgY/jgorjga/jgoks44Go44KC44GIDQor44GZ44G/44GuLOOBv+OBruOCiw0KK+OCiOOBl+OBoCzjgbLjgafjgY0NCivjgY3jga7jgZfjgZ8s44Go44KC44GTDQor44GK44Gh44GC44GELOOBv+OChuOBjQ0KK+OBhuOBvuOChOOBr+OCiSzjgoTjgZnjgb8NCivjgbvjgZ3jgYvjgo8s44Gy44KN44GTDQor44G144GL44GM44KPLOOBl+OCk+OBmA0KK+OBi+OCj+OCgOOCiSzjgYjjgYTjgZ7jgYYNCivjgb7jgaTjgYQs44GR44GE44GTDQor44KI44GX44KC44GoLOOBn+OBi+OBsuOCjQ0KK+OBhuOBquOBi+OBvyzjgajjgoLjgZMNCivjgYvjga3jgb7jgaQs44GV44GN44GTDQor44GL44KP44GL44G/LOOBvuOBk+OBqA0KK+OBqOOCiOOBoCzjgbLjgafjgYoNCivjgoTjga4s44GC44GN44Gy44GTDQor44Gb44GNLOOBn+OBi+OBguOBjQ0KK+OBquOBi+OBq+OBlyzjgbLjgajjgZcNCivjga/jgZfjgoLjgags44GC44GNDQor44G144GL44KELOOBj+OBq+OBguOBjQ0KK+OBv+OChOOCguOBqCzjgbLjgafjgY/jgasNCivjgZ/jgZHjgaAs44Go44GX44G144G/DQor44G/44KE44GW44KPLOOBv+OBjeOBig0KK+OBhOOBkeOBoCzjgYvjgZrjgbLjgZMNCivjgYrjgZfjgb4s44Gy44KN44GXDQor44Gq44GL44KA44KJLOOBiOOCiuOBkw0KK+OBlOOBqOOBhizjgobjgYbjgYTjgaHjgo3jgYYNCivjgYbjgZfjgZTjgoEs44Gy44KN44GXDQor44GP44KP44KE44G+LOOBsuOCjeOBguOBjQ0KK+OBpOOBi+OBoCzjgaHjga/jgosNCivjgoDjgonjgZ8s44Gh44GL44GKDQor44GV44Go44GGLOOCiOOBl+OBn+OBiw0KK+OBj+OCjeOBoCzjgYvjgYrjgooNCivjgZnjgY7jgoLjgags44GP44Gr44GKDQor44KE44GZ44GgLOOBk+OBhuOBhOOBoQ0KK+OBjeOBhuOBoSzjgZXjgajjgZcNCivjgZHjganjgYbjgYTjgpMs44GY44KF44KT44GE44GhDQor44Gf44Gq44GLLOOBoeOBiw0KK+OBquOBi+OCgOOCiSzjgbLjgo3jgYLjgY0NCivjgY/jgorjga/jgoks44Go44KI44Gy44GTDQor44Gf44GN44GW44KPLOOBi+OBmuOBruOCig0KK+OBhuOBiOOBoCzjgbLjgafjgYLjgY0NCivjgZPjgbks44Gy44Gn44GC44GNDQor44Gu44GQ44GhLOOBteOBv+OBig0KK+OBk+OCk+OBrizjgajjgoLjgbLjgZMNCivjgajjgb/jgZ8s44GL44Gq44KBDQor44GK44GK44GfLOOChuOBjeOBkw0KK+OBvuOBjSzjgbLjgYvjgosNCivjgYLjgb7jga4s44GR44KT44GE44Gh44KNDQor44GT44G/44GtLOOBguOBjeOBsuOCjQ0KK+OBleOBqOOBhizjgajjgoLjgoQNCivjgYTjgb7jgacs44KG44GG44GYDQor44G+44Gk44Gq44GMLOOBn+OBpOOChA0KK+OBmeOBmuOBjSzjgZ/jgZHjgZcNCivjgb7jgaTjgYos44GL44GIDQor44GV44GE44Go44GGLOOBjeOCh+OBhuOBhOOBoQ0KK+OCiOOBl+OBluOCjyzjgo/jgZ/jgosNCivjgYbjgoTjgb4s44GR44GE44GTDQor44GC44KT44Gp44GGLOOBvuOBleOBsuOBkw0KK+OBmeOBmuOBjSzjgZXjgajjgZcNCivjgojjgZfjgaAs44GL44Ga44Go44GXDQor44GL44KP44GgLOOBiOOBv+OBkw0KK+OBteOBj+OBoCzjgZHjgYQNCivjgoLjgorjgZfjgb4s44G+44GV44GXDQor44Gk44Gh44GgLOOBqOOBiuOCiw0KK+OBleOBi+OBhCzjgb/jgaHjgoTjgZkNCivjgaTjgYvjgaAs44GC44Gk44GXDQor44Gv44Gj44Go44KKLOOBsuOCjeOBlw0KK+OBn+OCgOOCiSzjgZPjgYbjgZgNCivjgo/jgZ/jgarjgbks44Gq44GK44GNDQor44GT44GZ44GOLOOBn+OBi+OBguOBjQ0KK+OBsuOCieOBnyzjgZHjgYTjgZ8NCivjgZnjgY7jgoTjgb4s44KI44GX44KG44GNDQor44KC44KK44GL44KPLOOCguOBqOOBr+OCiw0KK+OBi+OBqeOBnyzjgYLjgY3jgbLjgo0NCivjgZXjga4s44Gy44KN44GXDQor44GK44GW44GNLOOBpuOBpOOBig0KK+OCiOOBk+OBvuOBpCzjgYvjgaTjgbLjgZUNCivjgZ/jgarjgYss44KG44G/44GTDQor44GE44GX44GV44GLLOOBk+OBhuOBhOOBoeOCjeOBhg0KK+OBhOOBl+OBluOCjyzjgobjgZrjgY0NCivjgZPjgbDjgoTjgZcs44GY44KF44KTDQor44KI44GX44GgLOOBqOOCguOBguOBjQ0KK+OBjeOCgOOCiSzjgorjgYjjgZMNCivjgYrjgYrjgaTjgYss44Gf44GR44KLDQor44GC44Gg44GhLOOBn+OBi+OBlw0KK+OBguOBi+OBleOBiyzjgZfjgofjgYbjgZgNCivjgb/jgoTjgoLjgags44G/44Gp44KKDQor44GE44Gh44KA44KJLOOBi+OBiuOCig0KK+OBiuOBl+OBnyzjga7jgbbjgobjgY0NCivjgbvjgpPjgaAs44GK44GV44KADQor44GL44KE44Gs44G+LOOBk+OBhuOBmA0KK+OBruOBluOBjSzjgobjgYbjgZgNCivjgYvjganjgo/jgY0s44G144GY44GIDQor44GK44GYLOOChOOBmeOBsuOCjQ0KK+OBn+OBkOOBoSzjgoTjgZnjgaTjga0NCivjgZ/jgZHjgYTjgZcs44GC44GN44GoDQor44Gy44KJ44GELOOBl+OCk+OBmA0KK+OBi+OBquOBluOCjyzjgZjjgoXjgpPjgYTjgaENCivjgbXjgovjgYvjgo8s44GI44KK44GLDQor44KC44KK44Gq44GLLOOBvuOBleOCiA0KK+OBguOCieOBhCzjgajjgZfjgYLjgY0NCivjgZ/jgarjgYss44KI44GX44Gu44KKDQor44GX44G/44GaLOOCiOOBl+OChuOBjQ0KK+OBhOOBoeOBr+OCiSzjgb7jgZXjgosNCivjgY3jgZ/jga7jga/jgoks44Gy44Gn44Gy44KNDQor44GN44Gf44GKLOOBqOOCguOBsuOBqA0KK+OCguOCiuOCguOBqCzjgbLjgafjgY0NCivjgY3jgZ/jgoDjgoks44KK44GL44GTDQor44GV44GV44GW44KPLOOBn+OBkeOBlw0KK+OBvuOBpOOBiuOBiyzjgarjgYrjgZMNCivjgZPjgYbjgoks44Gf44GL44Gy44KNDQor44G/44KPLOOBsuOCjeOBkw0KK+OCiOOBl+OBiuOBiyzjgbLjgo3jgZMNCivjgbvjgoos44KG44G/44GTDQor44GV44GE44Go44GGLOOCiOOBl+OBsuOBqA0KK+OBquOBjOOBmyzjgbLjgafjga/jgosNCivjgoLjgorjgZfjgb4s44Gy44KN44GLDQor44GK44KP44KKLOOBvuOBjeOBkw0KK+OBn+OBquOBiyzjgb/jgY0NCivjgabjgonjgoDjgoks44Go44GX44G+44GVDQor44GT44Gw44KE44GXLOOBjeOCh+OBhuOBnuOBhg0KK+OBleOBhOOBqOOBhizjgbLjgo3jga7jgooNCivjgY3jgoDjgoks44Gf44GR44GXDQor44Gv44GX44KC44GoLOOCiOOBl+OBsuOBlQ0KK+OBquOBi+OBjOOCjyzjgabjgaTjgoQNCivjgarjgYvjgoDjgoks44G+44GV44GK44GNDQor44Gv44GO44KP44KJLOOBj+OBq+OBsuOBkw0KK+OBq+OBl+OBi+OCjyzjgajjgoLjgb8NCivjgY3jgZ/jgZjjgb4s44GT44GG44GE44GhDQor44Gf44GL44GG44KJLOOChOOBmeOBig0KK+OBguOBleOBoCzjgbLjgafjgogNCivjgY3jgZ/jgZrjgoEs44GC44KJ44GfDQor44Gt44KC44GoLOOCj+OBi+OBkw0KK+OBn+OBquOBiyzjgb7jgZXjgbLjgZMNCivjgZ/jgarjgYss44GL44Ga44Gy44KNDQor44GC44Gg44GhLOOBi+OBmuOBsuOBkw0KK+OBr+OCiSzjgb7jgZXjgobjgY0NCivjgYLjgYvjgb7jgaQs44GR44KT44GUDQor44GE44G+44KA44KJLOOBguOBpOOBlw0KK+OCgOOCieOChOOBvizjgojjgYbjgZgNCivjgZ/jgZHjgYbjgaEs44Gf44GL44KG44GNDQor44Ga44GXLOOChOOBmeOBig0KK+OBk+OBsOOChOOBlyzjgYvjgbsNCivjgoTjgb7jgZbjgY0s44GC44Gk44GTDQor44Gv44G+44GQ44GhLOOBneOBhuOBhOOBoQ0KK+OBi+OBkuOChOOBvizjgbLjgo3jgobjgY0NCivjgYvjgarjgoLjgoos44Gy44Gn44GNDQor44GL44Go44KKLOOBpOOCiOOBlw0KK+OBguOCieOBhCzjgZfjgofjgYbjgbjjgYQNCivjgb/jgoTjgZ8s44G+44KK44GTDQor44GZ44Ga44GNLOOBiOOBv+OBkw0KK+OBr+OCi+OBnyzjgbLjgafjgoQNCivjgarjgYvjgZbjgo8s44Gf44GL44GXDQor44GZ44GMLOOBvuOBleOChuOBjQ0KK+OBvuOBiOOBp+OCiSzjgabjgovjgobjgY0NCivjgYLjgonjgb7jgY0s44GC44Gk44GXDQor44GN44Gf44GuLOOBn+OBpOOChA0KK+OCiOOBl+OBrizjgZfjgZLjgb/jgaQNCivjgb/jgY/jgorjgoQs44KI44GG44GTDQor44GK44GP44Gu44GOLOOBkeOCk+OBmA0KK+OBleOBj+OCieOBhCzjgojjgZfjgYvjgaQNCivjgZPjgpPjgaks44Gq44GKDQor44GZ44Ga44GNLOOBruOCiuOBkw0KK+OBj+OCiuOBr+OCiSzjgY/jgb/jgZMNCivjgoDjgZPjgYbjgZDjgaEs44G+44GNDQor44G144GY44GELOOBguOBjeOBsuOCjQ0KK+OBi+OBkizjgobjgYbjgZMNCivjgb7jgYjjgaAs44Gu44G244KEDQor44Gq44GM44G744KKLOOChuOBjeOBkw0KK+OBpOOBmCzjgoLjgoLjgZMNCivjgY3jgoDjgoks44GX44KT44Gf44KN44GGDQor44G+44Gk44GKLOOBk+OBhuOBhOOBoQ0KK+OBn+OBpuOBrizjga7jgorjgojjgZcNCivjgY3jgoDjgoks44G+44GT44GoDQor44GZ44GW44GNLOOBn+OBpOOChA0KK+OBhOOCj+OBleOBjSzjgb/jgoTjgbMNCivjgZXjgajjgYYs44KG44KKDQor44Gr44Gj44GfLOOBoOOBhOOBi+OCkw0KK+OBn+OBquOBiyzjgb7jgooNCivjgZfjgb7jgaAs44GC44GL44GtDQor44Gf44Gr44GQ44GhLOOBruOCiuOBkw0KK+OBu+OCk+OBoCzjgZnjgarjgYoNCivjgarjgYvjgZ/jgass44Gf44GL44GXDQor44G/44KE44GY44G+LOOBl+OCheOCkw0KK+OBj+OBjeOChOOBvizjgZPjgYbjgZgNCivjgZvjgY3jga0s44KK44KH44GG44Gf44KN44GGDQor44KI44GX44Gv44KJLOOBleOBqOOCiw0KK+OBsuOCieOBnyzjgb7jgZXjgYvjgZoNCivjgarjgYzjgZXjgo8s44Go44GX44GKDQor44Gq44GL44GM44GNLOOBkeOBhOOBkw0KK+OBj+OCjeOBi+OCjyzjgoTjgZnjgobjgY0NCivjgYvjgZHjgZ/jgoos44GR44KT44GY44KN44GGDQor44GE44Go44GGLOOBi+OCiOOBkw0KK+OBvuOBiOOBi+OCjyzjgZjjgoXjgpPjgZgNCivjgb7jgaTjgaAs44GC44GN44GKDQor44GP44KP44Gv44KJLOOBvuOBk+OBqA0KK+OBhOOBhOOBmuOBiyzjgo/jgYvjgZMNCivjgb7jgZjjgb4s44Gy44Gn44KG44GNDQor44KA44KJ44GfLOOBqOOCguOBkw0KK+OBguOBjeOBhOOBkSzjgobjgYbjgYTjgaENCivjgarjgb/jgY0s44Gm44Gk44KEDQor44KI44GX44GuLOOBv+OBjeOBkw0KK+OBmeOBmuOBjSzjgobjgY0NCivjgZ/jgoDjgoks44G/44Gp44KKDQor44GL44KB44GgLOOBl+OCk+OChA0KK+OBq+OBlyzjgoTjgZnjgZcNCivjgYTjgarjgYrjgYss44GR44KT44GYDQor44GE44KP44GV44GNLOOChuOBhuOBmA0KK+OBi+OCk+OBoCzjgarjgb8NCivjgZ/jgaAs44GI44GE44GNDQor44GG44GkLOOBqOOCguOBguOBjQ0KK+OBl+OBvuOBoCzjgb7jgZXjgYoNCivjgojjgZfjgaAs44Gy44KN44KG44GNDQor44GK44GP44GM44KPLOOCiOOBl+OBteOBvw0KK+OBmeOBmuOBjSzjgZHjgYTjgZMNCivjgZ/jgpPjgb0s44G/44Gt44GTDQor44KP44GgLOOBquOBiuOBkw0KK+OBhuOCi+OBl+OBr+OCiSzjgYjjgYTjgZnjgZENCivjgYTjgYTjgYos44Gf44KN44GGDQor44Gr44GE44Gv44KJLOOBjeOCh+OBhuOBkw0KK+OBiuOCgOOCiSzjgZ/jgY/jgoQNCivjgYTjga7jgYbjgYgs44Gc44KT44GY44KN44GGDQor44KC44KK44Gq44GMLOOBqOOBl+OBsuOCjQ0KK+OBleOBrizjgbLjgo3jgZcNCivjgarjgYvjgZ/jgass44G+44GV44KE44GZDQor44GC44G5LOOBvuOBleOBquOBig0KK+OBhuOBoeOBoCzjgZHjgpPjgZgNCivjgbLjgo3jgZ8s44KG44GG44GV44GPDQor44GE44KP44GP44KJLOOBi+OBhOOBmOOCjeOBhg0KK+OBhOOBl+OBiuOBiyzjgbLjgafjgYLjgY0NCivjgajjgY3jgZ8s44Gq44Gk44GTDQor44GN44Gu44GX44GfLOOBquOBiuOBmeOBkQ0KK+OBv+OBmuOBrizjgYLjgYTjgZMNCivjgoTjgZnjgYgs44G+44GV44G/DQor44GE44KP44KC44GoLOOBleOBqOOCiw0KK+OChOOBvuOBmCzjgobjgYvjgooNCivjgZPjgZXjgYQs44KG44GG44GTDQor44GP44G8LOOBqOOBl+OBiA0KK+OBoeOBsCzjgbLjgYvjgosNCivjgoTjgaTjgZ/jgass44GC44Gk44GXDQor44GE44GM44KJ44GXLOOBn+OBi+OBmuOBvw0KK+OBguOCieOBi+OCjyzjgYLjgYvjga0NCivjgabjgonjgZXjgY0s44KC44Go44GC44GNDQor44Gb44GU44GILOOBleOBqOOBkw0KK+OBqOOBj+OBl+OBvizjgb7jgZXjgZMNCivjgbDjgpPjganjgYYs44GX44KH44GG44GTDQor44Gf44GN44GW44KPLOOBkeOCk+OBmA0KK+OBv+OBmuOBleOBjSzjgZHjgpPjgZ/jgo3jgYYNCivjgZ/jgY3jgZDjgaEs44GR44GEDQor44Gy44GK44GNLOOBvuOBleOBlw0KK+OBquOBi+OBhCzjgYLjgaTjgb8NCivjgYrjgYTjgYvjgo8s44KM44GE44GTDQor44G+44Gk44KA44KJLOOBoeOBkOOBlQ0KK+OBiOOCk+OBqSzjgojjgZfjgYoNCivjgZ/jgZjjgb4s44GV44Go44GTDQor44KE44G+44GW44GNLOOBiOOBhOOBmA0KK+OBm+OBruOBiizjgZPjgYbjgZgNCivjga/jgonjgaAs44Go44GX44G+44GVDQor44G144GP44GELOOBqOOCguOBiw0KK+OBvuOBpOOBhuOCiSzjgZHjgYQNCivjgYvjgo/jgoDjgoks44KG44GG44GE44GhDQor44Gm44KJ44KC44GoLOOBn+OBi+OBv+OBoQ0KK+OBr+OBjuOCj+OCiSzjgZ/jgY/jgb8NCivjgarjgYvjgZfjgb4s44GI44G/44GTDQor44GN44Gu44GX44GfLOOBv+OBoeOBig0KK+OBguOCieOBhCzjgaHjgZrjgosNCivjgoDjgonjgoTjgb4s44GY44KF44KT44GTDQor44GV44GI44GQ44GVLOOBqOOCguOBvw0KK+OBn+OBquOBiyzjgb/jgaTjgZMNCivjgb7jgYjjgaAs44GK44GV44KADQor44G/44KE44GW44GNLOOBi+OBmuOBvw0KK+OBhOOBkeOBuSzjgYLjgY3jgokNCivjgY/jgo/jgbDjgoks44Gf44GL44Gu44KKDQor44KI44GgLOOBn+OBi+OBig0KK+OBn+OBoeOBsOOBqizjgoTjgZnjgYLjgY0NCivjgoTjgb7jgZDjgaEs44KI44GX44GC44GNDQor44GE44GX44Gv44KJLOOBkeOBhOOBkw0KK+OBn+OBjeOBluOCjyzjgb7jgZXjgYLjgY0NCivjgbLjgonjga4s44KI44GX44G244G/DQor44GL44KP44GV44GNLOOBn+OBi+OCiOOBlw0KK+OChOOBvuOCguOBqCzjgbLjgZXjgajjgZcNCivjgYLjgonjgZss44GC44Gk44GXDQor44KE44Gq44GO44GV44KPLOOBvuOBleOBruOBtg0KK+OBl+OBiuOChCzjgYLjgY3jgYgNCivjgZXjgajjgYYs44GT44GG44GE44Gh44KN44GGDQor44GL44Go44GGLOOBsuOBqOOBvw0KK+OBiuOBrizjgojjgZfjgZ/jgYsNCivjgY3jgZ/jga/jgb4s44KE44GZ44G+44GVDQor44GU44Go44GGLOOBruOCiuOBkw0KK+OBq+OBruOBv+OChCzjgb7jgobjgb8NCivjgYbjgZnjgYQs44Go44KC44Gu44KKDQor44G/44Ga44GX44G+LOOBn+OBkeOCiw0KK+OBmeOBqeOBhizjgb7jgZPjgagNCivjgYTjgZHjgaAs44GC44GN44GTDQor44Gq44GL44Gy44GM44GXLOOBguOCiuOBl+OBkg0KK+OBj+OCiuOCguOBqCzjgo3jgo/jgosNCivjgajjgaAs44Gy44KN44Gf44GLDQor44Gv44GL44G+44GfLOOBguOBpOOBruOBtg0KK+OBn+OBq+OBkOOBoSzjga/jgovjgb8NCivjgYTjgb7jgZzjgY0s44GE44GP44GTDQor44G744KK44GKLOOBvuOChuOBvw0KK+OBi+OBmeOBjCzjgaTjgojjgZcNCivjgYvjgo/jgZss44Gq44GK44GTDQor44GV44Go44GGLOOBsuOCjeOBvw0KK+OBn+OBi+OBquOBlyzjga7jgbbjgYLjgY0NCivjgb7jgaTjgZfjgZ8s44Gf44GL44GXDQor44KE44GQ44GhLOOBsuOBp+OBjQ0KK+OBi+OBreOBkyzjgYvjgZrjgobjgY0NCivjgbLjgaDjgYss44G/44GKDQor44GV44Gj44GVLOOBn+OBhOOBoQ0KK+OBneOBjCzjgZ/jgY/jgoQNCivjgZnjgY7jgYbjgoks44GR44KT44Gf44KN44GGDQor44GV44Go44GGLOOBguOBv+OBkw0KK+OBn+OBq+OBsOOChOOBlyzjgZXjgaHjgZMNCivjgavjgZfjgYrjgYss44Gf44GL44GXDQor44Go44KC44Gq44GMLOOBquOBiuOBjQ0KK+OBiuOBiuOBr+OBlyzjgbLjgafjgY0NCivjgarjgYzjgZfjgb4s44Gb44GE44GfDQor44Gf44Gr44GM44GNLOOBm+OBhOOBkw0KK+OBk+OBhuOBoCzjgZPjgb/jgaoNCivjgY3jgojjga4s44GV44Go44GXDQor44KE44G+44GL44KPLOOBqOOBl+OBig0KK+OBquOBi+OBmOOBvizjgbLjgo3jgZcNCivjgoLjgabjgY4s44GT44GG44GYDQor44GK44GK44Gs44G+LOOChuOBn+OBiw0KK+OBleOBqOOBhizjgZfjgZLjgYoNCivjgbXjgovjgYTjgYgs44KI44GX44GTDQor44GC44GE44KC44GoLOOCguOBqOOBteOBvw0KK+OCiOOBk+OBiizjgY/jgavjgYoNCivjgavjgZfjgYvjgo8s44GR44KT44GYDQor44Gz44Go44GGLOOCiOOBl+OBquOBjA0KK+OBjeOBn+OCgOOCiSzjgZfjgpPjgoQNCivjgoTjgb7jgYvjgo8s44GV44Gg44Gv44KLDQor44Go44G/44GfLOOBn+OBkeOBlw0KK+OBpOOBoeOBoCzjgbLjgafjgagNCivjgYTjgZfjgZDjgo0s44KK44GIDQor44G+44Gk44GKLOOBqOOBiuOCiw0KK+OBhuOBiOOCguOBqCzjgZPjgYbjgYTjgaHjgo3jgYYNCivjgYTjgYTjgaAs44G/44GN44GTDQor44GZ44Ga44GNLOOBl+OBkuOBsuOCjQ0KK+OBn+OCgOOCiSzjgYvjgZrjgojjgZcNCivjgYrjgY/jgaAs44Gu44G844KLDQor44G744KKLOOCiOOBl+OBvw0KK+OBj+OBleOBpOOBkCzjgoTjgZnjgZcNCivjgoTjgb7jgaAs44G+44GV44Gq44GKDQor44GC44GV44Gv44KJLOOBn+OBi+OBsuOCjQ0KK+OBqOOBj+OBoCzjgb7jgpPjgarjgooNCivjgYTjgafjgZ8s44KI44GX44Gy44KNDQor44GE44Go44GGLOOBpuOCi+OBv+OBoQ0KK+OBleOBqOOBhizjgY3jgYTjgaHjgo3jgYYNCivjgaTjgZjjgZXjgo8s44GR44GEDQor44GK44GuLOOBk+OBhuOBmA0KK+OBhOOCj+OBvizjga7jgbbjgYLjgY0NCivjgaDjgYTjgZTjgY8s44GY44KF44KT44GE44GhDQor44KE44G+44KA44KJLOOCiOOBl+OBi+OBmg0KK+OBr+OBm+OBjOOCjyzjgajjgZfjgYvjgZoNCivjgYTjgY4s44Gf44GL44Gy44KNDQor44G+44GL44G5LOOBvuOBleOBi+OBpA0KK+OBiuOBi+OCguOBqCzjgYvjgaTjgYoNCivjgYrjgYrjga/jgoks44KG44GN44Gq44GKDQor44Gb44GN44KE44G+LOOBi+OBmuOBig0KK+OBjeOBn+OBmOOBvizjgbLjgo3jgYLjgY0NCivjgajjgorjgYbjgb8s44G+44GV44Gy44KNDQor44G/44KE44GW44GNLOOBn+OBpuOBig0KK+OBhuOBhCzjgojjgZfjgbLjgagNCivjgY/jgonjgoLjgaEs44GL44Ga44Gy44KNDQor44GX44GK44Gs44G+LOOBsuOBp+OBqOOBlw0KK+OCieOBhOOBnyzjgYTjgY/jgYoNCivjgZfjgoLjgZPjgYbjgbks44Gu44G244GL44GaDQor44GV44KP44GuLOOBpuOCi+OBig0KK+OBleOBi+OBq+OBlyzjgobjgYbjgZgNCivjgZXjgZXjgY0s44Go44GX44GKDQor44Gb44GE44GuLOOBkeOBhOOBnuOBhg0KK+OBmeOBmuOBjSzjgYLjgY3jgojjgZcNCivjgZXjgYvjgoLjgags44Go44GX44GKDQor44GZ44Ga44GNLOOBl+OCjeOBhg0KK+OBleOCj+OBrizjgYvjgaTjgoQNCivjgZfjgYws44Gm44Gk44KEDQor44GU44Go44GGLOOBqOOBj+OBvuOBlQ0KK+OBmeOBoCzjgZjjgoXjgpPjgZgNCivjgZnjgZrjgY0s44KI44GX44GTDQor44GV44GL44GN44Gw44KJLOOBqOOBl+OBig0KK+OBleOBqOOBhizjgZHjgpPjgZgNCivjgZXjgYvjgZDjgaEs44KI44GX44Gu44KKDQor44GZ44GO44GV44GNLOOBv+OBpOOBj+OBqw0KK+OBmeOBiOOBjSzjgZ/jgYvjgZcNCivjgZnjgZrjgY0s44Gu44G244GC44GNDQor44GX44Gw44GfLOOBk+OBqOOBmA0KK+OBmeOBjuOChOOBvizjgZ/jgaDjgYoNCivjgZXjgYvjgYQs44G+44GV44KG44GNDQor44GX44G/44GaLOOBn+OBoOOBlw0KK+OBmeOBjuOCguOBqCzjgajjgZfjgYoNCivjgZXjgajjgYYs44Gf44GP44GYDQor44Gb44GNLOOBiuOBleOCgA0KK+OBleOBj+OCieOBhCzjga/jgovjgobjgY0NCivjgZvjgY3jgZDjgaEs44GT44GZ44GRDQor44GV44Go44GGLOOBiOOBhOOBmA0KK+OBmeOBmuOBjSzjgobjgYbjga7jgZnjgZENCivjgZXjgYTjgajjgYYs44Gf44Gg44GKDQor44Gb44GN44GtLOOBqOOCiOOBteOBvw0KK+OBmeOBmuOBjSzjgaTjgajjgoANCivjgYTjgYTjgaAs44GN44KI44Gf44GLDQor44GZ44Ga44GNLOOBsuOCjeOBlw0KK+OBleOBleOBjSzjgb/jgaTjgYoNCivjgZnjgYjjgarjgYws44Go44GX44GKDQor44GV44GL44KC44GoLOOBsuOBp+OBguOBjQ0KK+OBleOBhOOBqOOBhizjgb7jgZXjgb8NCivjgZnjgYzjgYos44Gm44Gk44GYDQor44GX44G+44GaLOOBv+OBruOCiw0KK+OBleOBhOOBqOOBhizjgbXjgb/jgYoNCivjgZfjga7jgZbjgY0s44GC44GN44KJDQor44GZ44Ga44GNLOOCiOOBl+OChuOBjQ0KK+OBmeOBquOBjCzjgZHjgpMNCivjgZXjgajjgYYs44GK44GV44KADQor44GZ44Ga44GNLOOBkeOBhOOBn+OCjeOBhg0KK+OBm+OBjeOBrSzjgZXjgaDjga7jgooNCivjgZXjgZXjgY0s44Go44GX44GKDQor44GV44KP44GgLOOBguOBjeOCiQ0KK+OBleOBhOOBqOOBhizjgYvjgZrjgYoNCivjgZfjgoLjgZ7jga4s44Gf44Gg44Gy44GTDQor44GZ44GILOOBn+OBi+OBlw0KK+OBleOBqeOBqOOCgizjgYLjgY3jgokNCivjgZvjgY3jga0s44GR44KT44GZ44GRDQor44GV44Go44GGLOOBleOBqOOBlw0KK+OBleOCk+OBlCzjgojjgZfjga7jgbYNCivjgZnjganjgYYs44GP44Gr44GC44GNDQor44Gd44Gu44GgLOOBquOBiuOBvw0KK+OBl+OBvizjgb/jga7jgosNCivjgZXjgajjgYYs44KI44Gt44Ge44GGDQor44GV44Go44GGLOOBqOOBv+OBig0KK+OBl+OBtuOChCzjgYvjgZrjgYLjgY0NCivjgZXjgajjgYYs44GL44Ga44GKDQor44GV44Go44GGLOOBpuOCi+OBsuOBkw0KK+OBleOBi+OBnyzjgojjga3jgYoNCivjgZXjgYTjgajjgYYs44GK44GV44KADQor44GZ44KP44GNLOOBn+OBi+OBlw0KK+OBneOCiizjgZ/jgZHjgZgNCivjgZXjgYvjgoLjgags44GX44KF44KT44GE44GhDQor44GX44KJ44GE44GXLOOBvuOBleOBqOOBlw0KK+OBmeOBmuOBjSzjgYLjgY3jgYoNCivjgZfjgb7jgaAs44Go44GX44GKDQor44GZ44Ga44GNLOOBvuOBleOBsuOCjQ0KK+OBmeOBmuOBjSzjgojjgZfjgYoNCivjgZXjgajjgYYs44Gv44GY44KBDQor44GZ44Ga44GNLOOBjeOCiOOBlw0KK+OBleOBqOOBhizjgaTjgajjgoANCivjgZfjgZLjgb7jgaQs44GN44KI44GXDQor44GV44GM44KJLOOBn+OBi+OBqOOBlw0KK+OBleOBhOOBqOOBhizjgobjgY3jgYoNCivjgZfjgpPjgZDjgYYs44Gf44GL44GKDQor44GZ44GM44Gs44G+LOOBpuOCi+OBruOBtg0KK+OBneOBjCzjgZ/jgZHjgZcNCivjgZXjgZXjgY0s44Gu44G244KG44GNDQor44GV44Go44GGLOOBl+OBkuOCiw0KK+OBleOCj+OBoCzjgabjgaTjgYoNCivjgZ3jgb4s44GK44GV44KADQor44GX44Gw44GfLOOBn+OBkeOBig0KK+OBleOBqOOBhizjgb/jgaHjgZMNCivjgZXjgajjgYYs44GN44KI44GXDQor44GX44G+44GgLOOBsuOBp+OBig0KK+OBleOBleOBjSzjga7jgbbjgYoNCivjgZXjgajjgYYs44GR44KT44GYDQor44GV44GE44Go44GGLOOBl+OBkuOCiw0KK+OBl+OCguOBpyzjgbLjgafjgY0NCivjgZXjgZXjgY0s44Go44GX44GKDQor44GV44Go44GGLOOCiOOBhg0KK+OBleOBqOOBhizjgbLjgZXjgYoNCivjgZXjgo/jgaAs44GX44KT44GE44GhDQor44GX44KN44GV44GNLOOCiOOBhuOBhOOBoQ0KK+OBl+OBsOOBhCzjgZnjgZnjgoANCivjgZXjgYTjgajjgYYs44G/44Gh44GKDQor44GZ44Ga44GNLOOBqOOBl+OBig0KK+OBneOBjOOBuSzjgYTjgZXjgYoNCivjgZvjgYzjgo8s44Gh44Gy44KNDQor44GX44G/44GaLOOBv+OBruOCiw0KK+OBmeOBmuOBjSzjgojjgYbjgZjjgo3jgYYNCivjgZfjgo3jgoTjgb4s44KI44GX44Gy44GTDQor44GX44GE44GqLOOCiOOBl+OBig0KK+OBleOChOOBvizjgb7jgoLjgosNCivjgZXjgYvjgoLjgags44G+44GT44GoDQor44GV44Go44GGLOOBsuOCjeOBlw0KK+OBmeOBmuOBjSzjgZ/jgaDjgojjgZcNCivjgZnjgZrjgY0s44Gm44Gk44KN44GGDQor44GV44GV44GbLOOBi+OBpOOChuOBjQ0KK+OBleOBj+OCieOBhCzjgb7jgZXjgY0NCivjgZfjgb7jgaAs44Gb44GE44GYDQor44GV44Go44GGLOOBi+OBpOOBsuOCjQ0KK+OBl+OCguOBrizjgojjgYbjgZnjgZENCivjgZnjgZrjgY0s44KI44GX44Gq44KKDQor44GZ44GO44KC44GoLOOBvuOBleOBig0KK+OBl+OBv+OBmizjgZ/jgZHjgYoNCivjgZXjga4s44KI44GX44Gu44G2DQor44GZ44Ga44GNLOOBk+OBhuOBuOOBhA0KK+OBl+OBvuOBoCzjgYvjgZrjgbLjgZMNCivjgZnjgZrjgY0s44Gv44KL44Gy44GVDQor44GZ44GO44G144GYLOOBsuOBqOOBlw0KK+OBleOBi+OBhCzjgZfjgpPjgYTjgaENCivjgZXjgYvjgZDjgaEs44GI44GE44GYDQor44GZ44GM44KP44KJLOOBoOOBhOOBleOBjw0KK+OBl+OBruOBmuOBiyzjgZjjgoXjgpPjgYTjgaENCivjgZfjgYws44G/44Gk44GKDQor44GV44GL44GM44G/LOOBqOOCiOOBvg0KK+OBmeOBmuOBjSzjgYvjgZrjgobjgY0NCivjgZnjgY7jga4s44Gy44Gn44GKDQor44GZ44GO44GG44KJLOOBmeOBmeOCgA0KK+OBl+OBv+OBmizjgYvjgZrjgb8NCivjgZnjgZrjgY0s44Gf44GR44GX44GSDQor44GV44GV44GTLOOBm+OBhOOBnuOBhg0KK+OBm+OBjSzjgobjgY3jgojjgZcNCivjgZXjgajjgYYs44Gf44Gk44GYDQor44GX44G+LOOBsuOCjeOBlw0KK+OBmeOBmuOBjSzjgY3jgojjgabjgosNCivjgZXjgYvjgoLjgags44KI44GX44GL44GaDQor44GV44GV44GNLOOBsuOCjeOBlw0KK+OBl+OBvuOBoCzjgYTjgZ3jgZgNCivjgZXjgYTjgajjgYYs44Gf44Gg44Gy44GVDQor44GX44GK44GfLOOBqOOCiOOBig0KK+OBl+OBiuOBoCzjgYTjgZXjgoANCivjgZnjgaAs44GI44GE44GYDQor44GX44GE44GqLOOBkeOCk+OBnuOBhg0KK+OBl+OBiuOBruOChCzjgabjgaTjgYoNCivjgZXjgYTjgZfjgofjgYYs44KE44GZ44Gy44KNDQor44Gd44GE44GgLOOBiOOBhOOBhOOBoQ0KK+OBneOBvizjgYvjgpPjgZgNCivjgZXjgajjgYYs44Gy44KN44GXDQor44GV44Go44GGLOOBn+OBkeOBv+OBoQ0KK+OBl+OBiuOBsOOCiSzjgY3jgojjgYgNCivjgZXjgZXjgYrjgYss44KI44GX44Gf44GLDQor44GV44GV44GNLOOBv+OBpOOBruOBtg0KK+OBm+OBqCzjgbXjgb/jgYoNCivjgZfjgoXjganjgYYs44Gf44GL44GKDQor44GV44GL44KC44GoLOOBsuOCjeOBlw0KK+OBleOBj+OBvizjgZ/jgYvjgZcNCivjgZfjga7jgZbjgo8s44Gk44KI44GXDQor44GX44GK44Gw44KJLOOBsuOCjeOChuOBjQ0KK+OBleOBj+OCieOBhCzjgobjgZrjgosNCivjgZXjgajjgYYs44KB44GQ44KADQor44GV44GP44KJ44GELOOBqOOBl+OBig0KK+OBleOBleOBuSzjgbLjgo3jgZcNCivjgZXjgajjgYYs44KK44KF44GG44Ge44GGDQor44GZ44GO44GG44KJLOOChuOBhuOBnuOBhg0KK+OBleOBi+OBhCzjgb7jgZXjgYoNCivjgZ3jgb4s44Gu44G244GKDQor44Gd44GG44KELOOBm+OBhOOBmA0KK+OBneOBreOBi+OBpCzjgYLjgY3jgokNCivjgZvjgY3jga0s44Gf44GR44GKDQor44GZ44Ga44GNLOOBruOCiuOBig0KK+OBm+OBjeOBrSzjgajjgZfjgaTjgZANCivjgZXjgYvjgY3jgbDjgoks44GL44Ga44Go44GXDQor44GX44KC44GL44KP44G5LOOBkeOCkw0KK+OBleOCj+OCgOOCiSzjgarjgovjgb8NCivjgZvjgY0s44GY44KF44KT44GE44GhDQor44GZ44Ga44GNLOOBk+OBmuOBiA0KK+OBleOBi+OBvuOBjSzjgbLjgafjgYLjgY0NCivjgZXjgYzjgo8s44Go44GX44Gy44GVDQor44GZ44GO44KE44G+LOOBn+OBkeOChuOBjQ0KK+OBmeOBjuOCguOBqCzjgZMNCivjgZvjgYos44KG44GG44GYDQor44GV44GE44Go44GGLOOBn+OBi+OBlw0KK+OBleOBi+OBhCzjgb/jgY3jgYoNCivjgZXjgY/jgonjgYQs44Gf44Gg44Gy44KNDQor44Gb44GN44GtLOOBvuOBleOBruOCig0KK+OBleOBqOOBhizjga/jgaTjgb8NCivjgZfjgb/jgZos44Gf44GL44GXDQor44GX44G/44GaLOOBqOOBl+OBig0KK+OBleOBhOOBqOOBhizjgb7jgZXjgYoNCivjgZXjgY/jgonjgYQs44G+44GV44GC44GNDQor44GZ44GO44KE44G+LOOChOOBmeOBig0KK+OBl+OBmuOBiyzjgbLjgZXjgarjgYoNCivjgZfjgonjgYvjgo8s44GC44GN44KJDQor44GV44GE44Go44GGLOOChuOBmuOCiw0KK+OBleOBjeOCguOCiizjgYTjgo/jgYoNCivjgZXjgajjgYYs44Gm44Gk44GKDQor44Gb44GN44GQ44GhLOOBiuOBjeOBqOOBlw0KK+OBm+OBjeOBrSzjga7jgorjgZMNCivjgZfjgbDjgZ8s44GT44GG44GY44KN44GGDQor44GZ44Ga44GNLOOBn+OBi+OBsuOCjQ0KK+OBleOBhOOBqOOBhizjgbLjgZXjgYoNCivjgZXjgajjgYYs44Gu44KK44GKDQor44Gb44GN44GtLOOBiuOBleOCgA0KK+OBleOBi+OBhCzjga/jgovjgbLjgZMNCivjgZXjgZXjgYos44GX44KT44GYDQor44GZ44Gp44GGLOOBvuOBk+OBqA0KK+OCguOCiizjgZfjgofjgYbjgZgNCivjgZfjgb/jgZos44GI44GE44Ge44GGDQor44GV44Go44GGLOOBpuOCi+OBig0KK+OBmeOBmuOBjSzjgYTjgZXjgYoNCivjgZfjgoDjgoks44Gy44KN44Go44GXDQor44GX44Gw44GV44GNLOOBsuOCjeOBlw0KK+OBmeOBjOOBvuOBnyzjgYvjgZrjgYoNCivjgZnjgZrjgY0s44Gy44KN44GXDQor44GX44GK44Gu44KELOOBjeOCiOOBi+OBmg0KK+OBn+OBi+OBr+OBlyzjgajjgZfjgo3jgYYNCivjgaTjgY3jgoTjgb4s44GN44GP44GKDQor44Gk44Gu44GgLOOCiOOBl+OBjQ0KK+OBn+OBi+OBr+OBlyzjgarjgYrjgagNCivjgajjgY/jgZbjgo8s44KC44KK44Gv44KLDQor44Gf44GQ44GhLOOBvuOBleOBig0KK+OBn+OBi+OBjizjgbLjgafjgYoNCivjgZ/jgYvjga4s44Gm44KL44G/44GkDQor44Gf44Gv44KJLOOBjeOCiOOBi+OBmg0KK+OBqOOCiOOBleOCjyzjgZPjgYbjgYTjgaENCivjgajjgojjgb7jgZks44GR44GE44GE44GhDQor44Gf44GL44Gv44GXLOOBvuOBleOBruOBtg0KK+OBn+OBkeOBhuOBoSzjgabjgYTjgZgNCivjgZ/jgY3jgYTjgZcs44KK44KH44GG44GYDQor44Gf44GL44GE44GXLOOBl+OBkuOBig0KK+OBn+OBi+OBleOBjSzjgZHjgpPjgZgNCivjgZ/jgavjgYzjgo8s44Gy44KN44KG44GNDQor44Gf44GL44Gv44GXLOOBvuOBleOBqOOBlw0KK+OBn+OBquOBr+OBlyzjgZPjgYbjgZgNCivjgZ/jgb7jgY0s44Gy44KN44GXDQor44Go44GwLOOBvuOBleOBlw0KK+OBn+OBsOOBnyzjgZ/jgYvjgZcNCivjgaTjgZgs44Gf44GL44GKDQor44Gf44Gq44GLLOOBguOBpOOBlw0KK+OBn+OBi+OBr+OBlyzjgb7jgZXjga7jgooNCivjgajjgY/jgarjgYws44GN44G/44GKDQor44Gf44GQ44GhLOOBvuOBleOBig0KK+OBn+OBjeOBluOCjyzjgYvjgaTjgZfjgZINCivjgajjgb8s44Gf44Gt44G+44GVDQor44Gk44GYLOOBkeOBhOOBkw0KK+OBhuOBoeOBoCzjgajjgZfjgYoNCivjgZ/jgarjgYss44GE44KP44GKDQor44Gk44Gt44KI44GXLOOBruOCiuOBi+OBmg0KK+OBn+OBi+OBrizjgoDjga3jgYoNCivjgZ/jgYvjga/jgZcs44KG44GN44GhDQor44Gf44GL44KE44Gq44GOLOOCiOOBhuOBhOOBoQ0KK+OBn+OBkeOBoCzjgZHjgYTjgZnjgZENCivjgZ/jgbws44KG44Gf44GLDQor44Gf44Gq44GLLOOBi+OBmuOBig0KK+OBn+OBkeOBhuOBoSzjgb7jgZXjgY0NCivjgZ/jgYvjgoTjgZks44Go44KI44G/DQor44Gk44Gh44KELOOChuOBr+OBpA0KK+OBqOOBj+OBquOBjCzjgZHjgpPjgZgNCivjgaTjgaHjgaAs44Gq44GK44GL44GfDQor44Gk44G844GELOOBiOOBhOOBiOOBpA0KK+OBn+OBi+OBr+OBlyzjgb7jgZXjgZfjgZINCivjgaTjgYvjgoLjgags44GV44Gg44KADQor44Gf44Gq44GLLOOBl+OBkuOCiw0KK+OBqOOCguOBpOOBrSzjgZnjgZnjgoANCivjgaHjgZgs44Go44GX44Gv44KLDQor44GV44Go44GGLOOBm+OBhOOBmA0KK+OBn+OBi+OBnyzjgaTjga3jgYoNCivjgajjga/jgZ8s44KI44GX44G/DQor44Gf44GL44Gv44GXLOOBv+OBruOCiw0KK+OBn+OBi+OBr+OBvizjgojjgZfjgYLjgY0NCivjgabjgonjgZXjgo8s44Gq44GK44GTDQor44Gf44GL44Gw44KE44GXLOOBl+OCh+OBhuOBmA0KK+OBpuOCieOBoCzjgZfjgoXjgYbjgZgNCivjgaTjgYvjgaAs44Gb44GE44GYDQor44Gf44Gq44GLLOOBsuOBp+OBig0KK+OBqOOCiuOBvuOCiyzjgZ/jgb/jgYoNCivjgaTjgaHjgaAs44G+44KC44KLDQor44Gf44GN44KC44GoLOOBqOOBl+OBsuOBkw0KK+OBn+OBjeOBhCzjgbLjgafjgYLjgY0NCivjgZ/jga3jgaAs44GR44KT44GYDQor44Gf44KA44KJLOOCiOOBl+OBruOCig0KK+OBn+OBqeOBk+OCjSzjgbLjgZXjgYoNCivjgZ/jgYvjgYos44G+44GZ44G/DQor44Gf44Gq44GLLOOBsuOBi+OCiw0KK+OBn+OBi+OBr+OBlyzjga/jgaTjgYoNCivjgZ/jgYvjga/jgZcs44GX44GS44KG44GNDQor44Gf44GL44Gv44GXLOOBteOBmOOBig0KK+OBqOOBv+OBnyzjgajjgYrjgosNCivjgZ/jgYvjga/jgZcs44GC44Gk44Gu44KKDQor44Gf44Gr44GQ44GhLOOBv+OBoeOBguOBjQ0KK+OBn+OBquOBiyzjgobjgYbjgZ7jgYYNCivjgaTjgbzjgYQs44Gy44KN44G/DQor44Gf44GR44GG44GhLOOBu+OBtuOCkw0KK+OBpOOBoCzjgajjgojjgZcNCivjgZ/jgZHjgaAs44G+44GV44KG44GNDQor44Gf44GR44GELOOBl+OBkuOBig0KK+OBpOOBmOOBi+OCjyzjgobjgYbjgYTjgaENCivjgZ/jgZHjgoDjgoks44Gb44GE44GY44KFDQor44Gf44GNLOOBvuOBleOBguOBjQ0KK+OBn+OBi+OBoCzjgb7jgZXjgYLjgY0NCivjgZ/jgY3jgZbjgo8s44GX44GS44KLDQor44Gf44Gq44GLLOOBvuOBleOBmA0KK+OBn+OBq+OCgOOCiSzjgZ/jgZHjgojjgZcNCivjgojjgZfjgZbjgo8s44G+44GV44Gv44KLDQor44Gk44Gt44GL44KPLOOBn+OCjeOBhg0KK+OBn+OBquOBiyzjgbLjgo3jgZcNCivjgZ/jgYvjgaAs44GL44Gk44GKDQor44Gk44KLLOOBguOBjeOCiQ0KK+OBn+OBqyzjgb7jgZXjgbLjgo0NCivjgZ/jgZDjgaEs44GE44GV44GKDQor44Gf44Gq44GLLOOBmOOCheOCk+OBnuOBhg0KK+OBn+OBq+OBkOOBoSzjgYvjgZrjgbLjgo0NCivjgZ/jgarjgYss44Gu44KK44G/44GkDQor44Gk44GYLOOChuOBhuOBhOOBoQ0KK+OBn+OBquOBiyzjgYvjgaTjgb8NCivjgaTjgobjgY0s44Gy44GV44GKDQor44Gf44G+44KLLOOBvuOBleOBvw0KK+OBpOOBoeOChCzjgZHjgYTjgZgNCivjgaTjgovjgYrjgYss44Gu44G244GKDQor44Gf44GL44Gv44GXLOOBpuOBpOOBig0KK+OBn+OBi+OBr+OBlyzjgb/jgaTjgZMNCivjgajjgYbjgbXjgY/jgZgs44Go44GX44GKDQor44Gf44Gq44GLLOOBiuOBjeOBpOOBkA0KK+OBn+OBi+OBjizjgY3jgofjgYbjgZMNCivjgZ/jgYvjga/jgZcs44KI44GX44Gy44GVDQor44Gf44Gr44GQ44GhLOOCiuOCh+OBhuOBmA0KK+OBqOOCiOOBoCzjgbLjgajjgZcNCivjgZ/jgYvjgY4s44Gf44GR44GXDQor44Gf44GR44GELOOBl+OBkuOCiw0KK+OBpOOBoCzjgbXjgb/jgYoNCivjgaTjga3jgbLjgo0s44GY44KF44KT44GYDQor44Gf44GN44GW44KPLOOBqOOBl+OBig0KK+OBn+OBoeOBsOOBqizjgZTjgYTjgaENCivjgZ/jgYvjga/jgZcs44GL44Gk44KG44GNDQor44Gf44Gr44GQ44GhLOOBk+OBmeOBkQ0KK+OBn+OBkeOBoCzjgYvjgZrjgagNCivjgaTjgaHjgoQs44GR44KT44GE44GhDQor44Gf44GL44Gv44GXLOOBqOOBl+OBguOBjQ0KK+OBn+OBruOBhuOBiCzjgbLjgZPjgZXjgbbjgo3jgYYNCivjgZ/jgYvjgbDjgZ/jgZEs44G+44GV44Gu44G2DQor44Gf44GL44Gv44GXLOOBvuOBn+OBleOBtuOCjeOBhg0KK+OBteOBquOBjSzjgabjgovjgoTjgZkNCivjgZ/jgZHjgaAs44GL44Gk44G+44GVDQor44Go44GP44Gq44GMLOOBn+OBpA0KK+OBguOBleOBhCzjgobjgYbjgZgNCivjgZ/jgYvjga/jgZcs44G/44GN44GTDQor44Gf44GL44Gv44GXLOOBruOCiuOBig0KK+OBn+OBjOOCjyzjgZfjgofjgYbjgYTjgaENCivjgZ/jgarjgYss44Gu44G244KG44GNDQor44Gf44Gh44GL44KPLOOBn+OBkeOBlw0KK+OBn+OBkOOBoSzjgYvjgZrjgojjgZcNCivjgZ/jgYvjgZXjgY0s44GC44GN44KJDQor44Gf44G+44GK44GNLOOBl+OBmuOBig0KK+OBn+OBquOBiyzjgZvjgYTjgYTjgaHjgo3jgYYNCivjgZ/jgYvjga4s44GX44KTDQor44Gf44GR44GG44GhLOOBl+OBkuOCiw0KK+OBpOOBoCzjgZvjgpPjgZgNCivjgZ/jgYvjgarjgb8s44G+44GV44KLDQor44Gk44GN44Gq44KPLOOCiOOBl+OBquOBig0KK+OBqOOBv+OCguOCiizjgZnjgZnjgoANCivjgZ/jgZHjgaAs44Go44GK44KLDQor44Go44GM44GXLOOBpuOBpOOBsuOBkw0KK+OBpOOBmuOBjSzjgZfjgZLjgajjgZcNCivjgajjgbPjgZ8s44Gu44G244GC44GNDQor44Go44KC44Gq44GMLOOBpOOBreOBi+OBmg0KK+OBpOOBpOOBhCzjgZfjgZLjgYLjgY0NCivjgZ/jgYvjgY4s44GY44KF44KT44GYDQor44Gf44Gr44GQ44GhLOOBi+OBmuOBqOOBlw0KK+OBn+OBi+OBrizjgajjgZfjgbLjgo0NCivjgZ/jgarjgYss44GV44Go44GXDQor44Go44G+44Gk44KKLOOBl+OCjeOBhg0KK+OBn+OBi+OBjizjgYTjgaTjgYoNCivjgZ/jgYvjgZfjgb4s44G144G/44GKDQor44Gf44Gv44KJLOOCiOOBl+OBguOBjQ0KK+OBn+OBquOBiyzjgYvjgZrjgZMNCivjgZ/jgYvjgaAs44KI44GX44GKDQor44Go44KK44GELOOBv+OBpOOChuOBjQ0KK+OBn+OBkeOBuSzjga7jgbbjgobjgY0NCivjgaTjgYvjgoLjgags44GC44GN44GKDQor44Gf44KA44KJLOOBruOBtuOBsuOCjQ0KK+OBqOOBv+OBquOBjCzjgZXjgYvjgYgNCivjgZ/jgYvjgYTjgo8s44GV44Go44GXDQor44Gf44Gw44GfLOOBkeOCk+OBmA0KK+OBn+OBi+OBr+OBlyzjgY/jgavjgYoNCivjgabjgpPjgb3jgYbjgorjgpMs44Gd44GG44GE44GhDQor44Gm44KJ44GG44GhLOOBleOBoOOChuOBjQ0KK+OBn+OBi+OBr+OBlyzjgY3jgojjgZcNCivjgZ/jgYvjgZss44Gh44GL44KJDQor44Gf44GR44KA44KJLOOCguOBqOOBhA0KK+OBn+OCgOOBi+OBhCzjgbXjgb/jgYoNCivjgZ/jgYvjga/jgZcs44KG44GG44GYDQor44Gf44GR44GkLOOBi+OBpOOBmA0KK+OBn+OBruOBiuOBiyzjgZnjgZnjgoANCivjgZ/jgYvjga/jgZcs44Gf44Gg44GXDQor44Go44GK44KE44G+LOOBjeOCiOOBruOBtg0KK+OBn+OBkeOBhuOBoSzjgYLjgaTjgZcNCivjgZ/jgYvjga/jgZcs44G+44GV44GKDQor44GG44GX44GKLOOChuOBmuOCiw0KK+OBhuOBmeOBjizjgYvjgZrjgbLjgo0NCivjgYbjgaHjgoTjgb4s44KI44GG44GE44GhDQor44GG44KB44GgLOOBi+OBmuOBmeOBkQ0KK+OBhuOBkeOCguOCiizjgb7jgZXjgaoNCivjgYbjgaHjgaAs44G/44Gh44KEDQor44GG44GI44GgLOOBsuOBleOBig0KK+OBhuOBoeOBoCzjgZHjgYTjgZgNCivjgYbjgaTjgY0s44Gm44Gk44GKDQor44GG44GI44GgLOOBv+OBjeOBsuOBkw0KK+OBhuOBoeOBoCzjgbLjgafjgY0NCivjgYbjgYjjga/jgoks44GX44KF44GGDQor44GG44GI44KA44KJLOOBruOBtuOChA0KK+OBhuOBoeOBoCzjgZXjgaDjgobjgY0NCivjgYbjgaHjgoDjgoks44GR44GE44GE44GhDQor44GG44Gh44GgLOOBkeOCk+OBmeOBkQ0KK+OBhuOBoeOBoCzjgZHjgYTjgYTjgaENCivjgYbjgYjjgY0s44GC44GN44GTDQor44GG44GL44GYLOOBvuOBleOBpuOCiw0KK+OBhuOBoeOBoCzjgb7jgZXjgYLjgY0NCivjgYbjgYjjgoDjgoks44Gy44Gn44GKDQor44GG44GX44GKLOOBqOOBj+OBmA0KK+OBhuOCgeOCgOOCiSzjgajjgZfjgYoNCivjgYbjgoHjgZfjgb4s44KK44GN44Gk44GQDQor44GG44GT44KTLOOBi+OBiuOCiw0KK+OBhuOBoeOBhOOBkSzjgZjjgoXjgpPjgYTjgaENCivjgYbjgovjgZfjga4s44Gf44GL44GC44GNDQor44GG44Gh44Gq44GXLOOBuOOBhOOBnw0KK+OBhuOBkOOBlSzjgb7jgZXjgobjgY0NCivjgYbjga4s44Go44GX44Gy44GnDQor44GG44GI44GNLOOBv+OBruOCiw0KK+OBhuOBiOOCguOBqCzjgZHjgpMNCivjgYbjgYjjgoDjgoks44KG44GN44GKDQor44GG44GI44Gv44KJLOOBsuOCjeOBlw0KK+OBhuOBiOOBoCzjgZfjgpPjgbrjgYQNCivjgo/jgZ/jgarjgbks44Gy44GV44KG44GNDQor44KP44Gf44Gq44G5LOOBi+OBpOOBvw0KK+OCj+OBn+OBquOBuSzjgY3jgpPjgoQNCivjgo/jgYvjgoDjgoks44KE44GZ44KNDQor44KP44Gf44Gq44G5LOOBsuOBp+OBmA0KK+OCj+OBn+OBquOBuSzjgojjgZfjgZ/jgYsNCivjgo/jgZ/jgarjgbks44Gy44KN44Gv44KLDQor44KP44Gf44Gq44G5LOOBi+OBpOOBquOCig0KK+OCj+OBn+OBquOBuSzjgbLjgafjgYoNCivjgo/jgZ/jgarjgbks44GL44Gk44Gy44GTDQor44KP44Gf44Gq44G5LOOChOOBmeOBguOBjQ0KK+OCj+OBn+OBquOBuSzjgZ/jgaDjgZcNCivjgo/jgY3jgZ8s44GT44GG44KB44GEDQor44KP44Gf44Gq44G5LOOBqOOBjeOBig0KK+OCj+OBn+OBquOBuSzjgZPjgpPjgZTjgYYNCivjgo/jgZ/jgarjgbks44GC44GN44KJDQor44KP44Gf44Gq44G5LOOBiuOBleOCgA0KK+OCj+OBn+OBquOBuSzjgZHjgpPjgZgNCivjgo/jgZ/jgarjgbks44GZ44G/44Gf44GgDQor44KP44GgLOOChOOBmeOBlw0KK+OCj+OBn+OBquOBuSzjgZ/jgaTjgbLjgZMNCivjgo/jgaAs44Gf44GR44G/44GkDQor44KP44GgLOOBu+OBvuOCjA0KK+OCj+OBn+OBquOBuSzjgb7jgZXjgYLjgY0NCivjgo/jgZ/jgarjgbks44GC44GN44KJDQor44KP44Gf44Gq44G5LOOBl+OBkuOBguOBjQ0KK+OCj+OBi+OBsOOChOOBlyzjgb/jga3jgYoNCivjgo/jgZ/jgarjgbks44Gy44GV44GKDQor44GK44GK44GfLOOBvuOBk+OBqA0KK+OBteOBmOOCj+OCiSzjgZnjgb/jgYLjgY0NCivjgZPjgYTjgZEs44G/44Gh44GKDQor44GL44Gf44GK44GLLOOBpuOBpOOChA0KK+OBsuOCjeOBl+OBkizjgY3jgojjgZcNCivjgZfjgpPjgZbjgo8s44Gy44KN44GXDQor44G/44Ga44GL44G/LOOBvuOBleOBv+OBpA0KK+OBquOBi+OBmOOBvizjgZHjgYTjgYTjgaENCivjgbXjgY/jgZfjgb4s44GX44GS44GNDQor44Gq44GLLOOBsuOCjeOBlw0KK+OBsuOCieOChOOBvizjgb7jgZXjgZMNCivjgavjgo/jgoTjgb4s44GL44Gk44GYDQor44GX44G/44GaLOOBneOBhuOBmOOCjeOBhg0KK+OBteOCi+OBleOCjyzjgaTjgojjgZcNCivjgZXjgY/jgonjgYQs44G/44Ga44G7DQor44Gf44GR44Gq44GLLOOBguOBpOOBruOBtg0KK+OBmeOBjuOBhuOCiSzjgYvjgojjgZMNCivjgYvjgajjgYYs44GR44KT44GYDQor44G744GX44GL44KPLOOBvuOBleOBig0KK+OBiuOBjOOCjyzjgYTjgZXjgYoNCivjgYvjgZfjgo/jgY4s44GTDQor44GV44GL44GELOOBsuOCjeOBkw0KK+OCguOCiizjga/jgovjgYoNCivjgbvjgpPjgbws44Gu44G244KG44GNDQor44GE44GE44GY44G+LOOCiOOBl+OBguOBjQ0KK+OBk+OBmOOBvizjgZ/jgYvjgYoNCivjgZ/jgYvjga/jgZcs44Gu44G844KLDQor44Gv44GfLOOBl+OCh+OBhuOBmeOBkQ0KK+OBiuOBjOOCjyzjgYLjgY3jga7jgooNCivjgaTjgaHjgoQs44GL44Gk44KEDQor44GT44KE44G+LOOBhOOBleOBig0KK+OBteOCi+OBvyzjgabjgaTjgYoNCivjgY/jgoEs44Gk44Gt44GKDQor44GP44KJ44GfLOOBm+OBpOOBig0KK+OBhuOBl+OBmOOBvizjgb7jgZXjgYvjgZoNCivjgYjjgbDjgags44GL44Gk44Gu44KKDQor44GV44Go44GGLOOBruOBtuOChuOBjQ0KK+OCgOOBl+OCgyzjgarjgYrjgbLjgZMNCivjgobjgYLjgZUs44G+44KC44KLDQor44GN44GP44GhLOOBquOBiuOBjQ0KK+OBvuOBpOOBsOOChOOBlyzjgabjgovjgojjgZcNCivjgb7jgaTjgYQs44GC44GN44KJDQor44Gf44GR44KA44KJLOOBsuOCjeOBlw0KK+OBpuOCieOBl+OBvizjgojjgYbjgZnjgZENCivjgY/jgoks44Gy44Gn44GP44GrDQor44G+44Gk44GELOOCiOOBl+OBig0KK+OBhuOBiOOBoCzjgYTjgZXjgYoNCivjga/jgoTjgZcs44GX44KT44GE44GhDQor44GL44KP44GqLOOBoOOBhOOBmOOCjeOBhg0KK+OBr+OChOOBlyzjgYvjgZrjgYoNCivjgafjgoLjgags44G+44GV44Gy44KNDQor44GX44G244GNLOOBn+OBkeOBlw0KK+OBr+OBvizjgZ/jgaTjgYoNCivjgYjjgpPjgaks44GT44GG44GW44G244KN44GGDQor44G/44KE44KC44GoLOOBn+OBi+OBsuOBlQ0KK+OBvuOBpOOBoCzjgbLjgo3jgZcNCivjgoTjgb7jgoLjgags44Go44KC44GTDQor44KA44KJ44GL44G/LOOBl+OBkuOBig0KK+OBiuOBi+OBoCzjgaDjgYTjgY3jgaENCivjgo/jgZ/jgarjgbks44GL44Ga44KG44GNDQor44GE44KP44GV44GNLOOBguOBjeOCiA0KK+OCiOOBl+OBoCzjgZnjgb/jgobjgY0NCivjgYrjgYrjgoLjgoos44G+44GV44Gu44KKDQor44G/44Ga44Gf44GrLOOBsuOBleOBiA0KK+OBmeOBjuOBhuOCiSzjgYvjgZrjgYoNCivjga7jgarjgYss44G/44Gk44Gf44GLDQor44KP44Gf44Gq44G5LOOBhOOBleOCgA0KK+OBleOBhOOBqOOBhizjgZ/jgZHjgYoNCivjgYrjgYrjgYvjgo/jgoks44GS44KT44Gf44KN44GGDQor44GL44Gp44GE44GRLOOBn+OBkeOBn+OBoA0KK+OBvuOBpOOCguOBqCzjga7jgorjgYvjgZoNCivjgarjgYss44Gf44GL44GKDQor44GL44Go44GGLOOBkeOCk+OBnuOBhg0KK+OBi+OCj+OBhOOBlyzjgobjgYbjgZMNCivjgarjgYzjgZXjgo8s44Gk44Go44KADQor44GZ44KE44G+LOOBj+OCk+OCjeOBhg0KK+OBj+OBvuOBl+OCjSzjgbLjgo3jgZcNCivjgZ/jgYvjgbDjgoTjgZcs44Gy44Gn44GKDQor44GT44KT44GpLOOBkeOCk+OBnuOBhg0KK+OBhOOBquOBsCzjgZXjgajjgosNCivjgZPjgbDjgoTjgZcs44Go44GX44Gy44KNDQor44KE44G+44GQ44GhLOOBv+OBi+OBkw0KK+OBmeOBmuOBjSzjgobjgYbjgZgNCivjgYLjgY3jgoTjgb4s44KG44Gf44GLDQor44Gf44GL44GgLOOBguOBjeOCiQ0KK+OBleOCj+OBhCzjgb7jgZXjgbLjgZMNCivjgarjgYvjgZ8s44GN44KI44KG44GNDQor44GE44Gf44GwLOOChuOBhuOBhOOBoQ0KK+OBj+OBq+OBjuOBnyzjgojjgYbjgYTjgaENCivjgoTjgb7jgaAs44KI44GG44GTDQor44KE44G+44GgLOOChuOBhuOBkw0KK+OBn+OBi+OBr+OBlyzjgojjgYbjgYTjgaHjgo3jgYYNCivjgYbjgoHjgoDjgoks44Gu44KK44Gy44GTDQor44GT44Gw44KE44GXLOOBruOBtuOBguOBjQ0KK+OBi+OBreOBv+OBpCzjgZ/jgaDjgYoNCivjgY3jgaks44G+44GV44GXDQor44GL44Gt44GNLOOBn+OBoOOBig0KK+OBk+OCgOOCiSzjgb7jgZXjgbLjgo0NCivjgbXjgZjjgoLjgoos44GR44KT44GE44GhDQor44KE44G+44GX44GfLOOBpuOCi+OBn+OBkQ0KK+OBj+OCiuOChOOBvizjgb7jgZXjgbLjgo0NCivjgajjgZbjgo8s44Gf44GL44GXDQor44GE44GX44GELOOBoeOBi+OBqOOBlw0KK+OBn+OBi+OBr+OBlyzjgojjgYbjgYTjgaENCivjgZ/jgarjgYss44GL44Ga44G/DQor44GE44GX44GW44GNLOOBpuOBpOOBig0KK+OBr+OCieOBoCzjgb7jgZXjgbLjgo0NCivjgajjgY/jgbLjgZUs44GX44GS44KE44GZDQor44GE44GX44KA44KJLOOBn+OBoOOBsuOCjQ0KK+OBhuOBiOOBoCzjgZ/jgYvjgZcNCivjgYrjgbXjgaEs44GP44Gr44Gy44KNDQor44KE44Gk44KL44GOLOOBv+OBpOOBig0KK+OBv+OBquOBqCzjgb7jgobjgb8NCivjgojjgZfjgaAs44G+44GV44Gy44KNDQor44G/44Gq44G/LOOChOOBmeOBig0KK+OBiuOBiyzjgYLjgY3jgYoNCivjgYTjgaHjgYvjgo8s44GL44Ga44GKDQor44GK44GK44GP44G8LOOBsuOBp+OBjQ0KK+OBhOOBl+OBoCzjgbLjgo3jgobjgY0NCivjgajjgb/jgZ8s44GE44GV44GKDQor44Gy44KJ44GK44GLLOOBsuOCjeOBsuOBlQ0KK+OBi+OBqOOBhizjgbLjgafjgYoNCivjgYrjgoDjgoks44KA44Gk44GKDQor44GK44GV44GY44G+LOOBqOOBl+OChA0KK+OBteOBquOBk+OBlyzjgZvjgaTjgYoNCivjgZPjgYbjgaAs44Gy44Gn44GC44GNDQor44GC44GV44GK44GLLOOBn+OBpOOBig0KK+OBi+OBmeOBjCzjgYLjgZHjgb8NCivjgoLjgoLjga/jgoks44G244KT44GE44GhDQor44GG44GI44KA44KJLOOBqOOBl+OBsuOBpw0KK+OBiuOBsOOBnyzjgYvjgZrjgZMNCivjgYrjga7jgaAs44KG44GN44GKDQor44G/44KE44GX44GfLOOBi+OCk+OBmA0KK+OBu+OBneOChCzjgoTjgZnjgYoNCivjgoTjgZfjgo0s44KG44GN44GKDQor44KP44Gf44Gq44G5LOOBguOBpOOBlw0KK+OBjeOCgOOCiSzjgajjgY3jgaENCivjgYvjgb/jgZjjgofjgYYs44Gy44GV44GIDQor44GV44Go44GGLOOCiOOBl+OBiuOBjQ0KK+OBvuOBpOOBl+OBvizjgYLjgY3jgokNCivjgYvjgZ/jgoTjgb4s44KI44GG44GTDQor44Gy44KJ44GuLOOBlOOBuOOBhA0KK+OBquOBi+OCieOBhCzjgaDjgYTjgZnjgZENCivjgojjgZPjgoTjgb4s44Gy44GV44GKDQor44GK44GK44GM44GtLOOBqOOCguOBsuOCjQ0KK+OBjeOCgOOCiSzjgb7jgZPjgagNCivjga7jgZbjgZUs44KI44GX44Gu44KKDQor44KC44KK44GuLOOBi+OBmuOBl+OBkg0KK+OBiOOBoeOBlOOChCzjgb/jgaHjgbLjgZMNCivjgbXjgY/jgZfjgb4s44Gy44Gn44GKDQor44GE44Go44GGLOOBvuOBleOChuOBjQ0KK+OBhOOBkeOBoCzjgobjgY3jgZMNCivjgajjgY/jgarjgYws44KK44GIDQor44GN44KC44GoLOOBguOBhOOBkw0KK+OBiuOBl+OBoCzjgZXjgajjgZMNCivjga/jgZfjgoLjgags44Gu44KK44GL44GaDQor44Gu44GQ44GhLOOBqOOBl+OBruOCig0KK+OBv+OChOOBuSzjgYvjgZrjgagNCivjgY/jgo/jga/jgoks44KE44GZ44GIDQor44GN44KA44KJLOOBsuOCjeOBvw0KK+OBiuOBoCzjgYvjgZrjgobjgY0NCivjgYLjgYTjgZbjgo8s44Gf44G/44GKDQor44GG44GI44GuLOOBi+OBpOOBig0KK+OBvuOBpOOBsOOCiSzjga7jgorjgobjgY0NCivjgZ/jgb7jgYQs44GL44Ga44G/44GhDQor44GX44KJ44GELOOCiOOBl+OBig0KK+OBiuOBiuOBr+OBlyzjgZPjgYbjgZgNCivjgZ/jgb/jgoQs44G144G/44KEDQor44Gv44KJ44GgLOOCiOOBl+OBkw0KK+OBhuOBmeOBhCzjgZ/jgYvjgZcNCivjgZPjgoos44GT44GG44GE44Gh44KN44GGDQor44Gu44GgLOOBl+OBkuOBsuOBkw0KK+OBquOBv+OBjSzjgb7jgZXjgagNCivjgarjgYvjgYos44G+44GV44G/44GkDQor44GL44Gp44KELOOBguOBjeOCiQ0KK+OBiuOBrizjgajjgZfjgbLjgacNCivjgZfjgbbjgYvjgo8s44GX44KT44GE44GhDQor44GE44KP44GV44KPLOOBvuOBquOBtg0KK+OBn+OBtuOBmyzjgYTjgaHjgo3jgYYNCivjgYrjgZXjgo8s44Gf44GL44KI44GXDQor44Gq44GL44Gg44GELOOBkeOCk+OBmA0KK+OBiOOBjOOBl+OCiSzjgbLjgo3jgobjgY0NCivjgZXjgZXjgY0s44GL44Gk44GKDQor44G144GP44GhLOOBi+OBmuOBsuOBkw0KK+OCiOOBl+OChOOBmSzjgZTjgYYNCivjgo/jgZ/jgarjgbks44GT44GV44GoDQor44GG44GI44GuLOOCjOOBhOOBkw0KK+OBiOOBqOOBhizjgb7jgZXjga7jgooNCivjgojjgZfjgaAs44G+44GV44GKDQor44Gf44GR44GELOOChuOBhuOBhOOBoQ0KK+OBr+OChOOBlyzjgbLjgZXjgZcNCivjgb7jgZ/jgY0s44GX44KT44GUDQor44KC44KK44KC44GoLOOBhOOBoeOCjeOBhg0KK+OBhOOBr+OCiSzjgZHjgpPjgZgNCivjgaTjgYvjga/jgoks44Gm44KL44GKDQor44GL44Gu44GGLOOBqOOCguOBkw0KK+OCgOOBreOChuOBjSzjgbLjgafjgb7jgZUNCivjgYrjgYrjgaTjgbws44KI44GX44Gf44GLDQor44KE44G+44KC44KKLOOBi+OBpOOBig0KK+OBguOCk+OBqeOBhizjgZvjgYTjgY0NCivjgoTjgb7jgZbjgY0s44KI44GX44GC44GNDQor44Gf44GN44KC44GoLOOCiOOBhuOBhOOBoQ0KK+OBn+OBkeOCgOOCiSzjgarjgYrjgYvjgZoNCivjgoDjgonjgYvjgb8s44G+44GT44GoDQor44Gf44GL44GfLOOBruOCiuOBig0KK+OBsuOCjeOBmyzjgaTjgZ/jgbLjgo0NCivjgoTjgY/jgo8s44Gf44GL44GXDQor44GX44KT44GQ44KK44KH44GGLOOCiOOBhuOBkw0KK+OBn+OBoSzjgb7jgZXjgZcNCivjgZXjgajjgYYs44GL44Ga44GKDQor44KE44G+44KC44GoLOOBvuOBleOBsuOCjQ0KK+OBmeOBqeOBhizjgZfjgofjgYbjgZMNCivjgbvjgpPjgb4s44Gy44KN44GNDQor44GK44GK44Gk44G8LOOBqOOBl+OBig0KK+OBi+OBluOBvizjgb/jgaTjgbLjgo0NCivjgYLjgYzjgo8s44G/44G744GTDQor44GE44Gu44GG44GILOOCiuOCheOBhuOBhOOBoQ0KK+OBguOCieOBhCzjgb7jgZXjgaENCivjgYbjgYjjgoDjgoks44KG44Gf44GLDQor44Gr44GX44GP44KJLOOBvuOBleOBsuOCjQ0KK+OBv+OChOOBluOBjSzjgojjgZfjgYvjgZoNCivjgbXjgY/jgaAs44KC44KK44G+44GVDQor44Gk44KK44KELOOBn+OBoOOBig0KK+OBn+OBquOBiyzjgbLjgo3jgYvjgZoNCivjgYrjgYzjgo8s44GT44GG44GYDQor44GZ44Ga44GNLOOBv+OBruOCiw0KK+OBr+OBvuOBkOOBoSzjgZ/jgY/jgZgNCivjgYvjgoHjgaAs44GL44Gk44KEDQor44KC44KC44Gv44KJLOOBsuOBp+OBig0KK+OBsuOCieOBiizjgZ/jgYvjgZMNCivjgZ/jgYvjgaAs44Gq44GK44KG44GNDQor44GE44GR44GgLOOCiOOBl+OBsuOCjQ0KK+OBmeOBmuOBjSzjgYLjgY3jgokNCivjgZ/jgYvjga/jgZcs44GL44Ga44KI44GXDQor44Gf44Gq44GLLOOBmOOCjeOBhg0KK+OBm+OCiSzjgZ/jgYTjgaENCivjgZ/jgZHjgoDjgoks44Go44GX44GC44GNDQor44G744KK44GN44KKLOOBvuOCguOCiw0KK+OBhOOBkeOBoCzjgb/jga7jgosNCivjgYLjgonjgY0s44Gb44GN44GtDQor44GK44GK44Gk44GLLOOBi+OBmuOBhOOBoeOCjeOBhg0KK+OBj+OBq+OBvuOBpCzjgZvjgYTjgZbjgbbjgo3jgYYNCivjgYbjgZfjgbAs44Gf44GL44GXDQor44Gv44KE44GXLOOBvuOBleOBqA0KK+OBhOOBl+OBhCzjgb/jgY3jgYoNCivjgYvjgaAs44GC44GN44KJDQor44KE44GOLOOBn+OBoOOBig0KK+OBsuOCieOBhCzjgZPjgYbjgYTjgaHjgo3jgYYNCivjgY/jgo3jgZss44Gy44KN44GXDQor44GK44GL44G5LOOBhOOBleOCgA0KK+OBi+OBreOBkyzjgajjgZfjgobjgY0NCivjgZPjgZjjgb4s44GV44Go44KLDQor44Gr44GX44KI44KKLOOBv+OBruOCiw0KK+OBquOBi+OBmOOCh+OBhizjgZjjgo3jgYYNCivjga/jgZfjgY/jgoks44Gk44Go44KADQor44Gf44GL44Gv44GXLOOBn+OBpOOBig0KK+OBhuOBiOOBj+OBlSzjga7jgbbjgYLjgY0NCivjgZfjgbDjgZ8s44Gy44KN44GXDQor44Gf44GL44Gv44GXLOOBpuOCi+OBig0KK+OBhOOBquOBsCzjgYvjgZrjgagNCivjgZjjgoXjgpPjgYTjgaHjgo0s44GC44GN44Gu44KKDQor44Gv44KE44GL44KPLOOBsuOBp+OBig0KK+OBhOOBqOOBhizjgZ/jgZHjgZcNCivjgY3jgoLjgags44G+44GV44Gk44GQDQor44GE44GgLOOBsuOCjeOBlw0KK+OBu+OBhuOBmOOCh+OBhizjgYvjgaTjgbLjgZMNCivjgbvjgorjgYQs44Gk44Gt44GKDQor44GL44GE44GbLOOBguOBpOOBlw0KK+OBr+OBl+OCguOBqCzjgoTjgZnjgYLjgY0NCivjgZnjgZrjgY0s44Gy44Go44GXDQor44GL44Gt44GV44GLLOOCiOOBl+OBig0KK+OChOOBvuOBkOOBoSzjgobjgYbjgZgNCivjgZnjgZrjgY0s44G+44GV44GL44GaDQor44GZ44Gp44GGLOOBvuOBleOBsuOBkw0KK+OBiuOBiuOBsCzjgb/jgbvjgZMNCivjgoDjgonjgZ8s44Go44GX44GTDQor44GC44GN44KE44G+LOOBvuOBleOBlw0KK+OBguOBmeOBvizjgZ/jgZHjgYoNCivjgYvjgo/jgZjjgoos44Gy44Gn44GKDQor44G+44Gk44KC44GoLOOBjeOCh+OBhuOBmA0KK+OBl+OCjeOChOOBvizjgZMNCivjgbXjgZjjgYQs44GC44Gk44GTDQor44GU44Go44GGLOOBoOOBhOOBmeOBkQ0KK+OBn+OBq+OBguOBhCzjgoTjgZnjgb7jgZUNCivjgYvjgaTjgbzjgoos44G+44GNDQor44Gy44GC44GmLOOBj+OBv+OBkw0KK+OBpuOCieOBhCzjgYLjgY3jgZMNCivjga/jgpPjgaAs44G+44GV44GTDQor44G/44GX44G+LOOBsuOCjeOBvw0KK+OBn+OBi+OBl+OBvizjgYvjgZrjgb8NCivjgb7jgaTjgaAs44GC44GN44KJDQor44GT44KT44GpLOOBruOCiuOBkw0KK+OBhOOBn+OChCzjgZHjgpPjgZgNCivjgb7jgaTjgoLjgags44Gq44GK44Gf44GRDQor44GE44GE44KE44G+LOOBsuOBp+OBig0KK+OBmOOBo+OBqCzjgYvjgaTjgbLjgo0NCivjgY/jgbzjgZ8s44GV44Gh44GTDQor44GE44GX44GQ44KNLOOBiOOBhOOBmA0KK+OCguOCiizjgYbjgaTjgb8NCivjgYvjgpPjga4s44GV44Gh44GTDQor44GE44Go44GGLOOBm+OBhOOBmA0KK+OCiOOBl+OBoCzjgorjgoXjgYbjgZgNCivjgb7jgovjgoTjgb4s44GP44Gr44GKDQor44GV44Go44GGLOOBquOBuw0KK+OBk+OBhuOBoCzjgojjgYbjgZgNCivjgo/jgZ/jgass44G+44KC44KLDQor44GV44GbLOOBhOOBj+OBig0KK+OBneOBqOOChOOBvizjgYvjgaTjga7jgooNCivjgbvjgpPjgaAs44Gm44KL44GP44GrDQor44GE44Gs44GELOOChuOBn+OBiw0KK+OBmeOBmuOBjSzjgojjgZfjga7jgooNCivjgZPjgavjgZcs44KI44GX44Gu44G2DQor44GZ44GO44GELOOChuOBjeOBsuOBlQ0KK+OBguOCieOBjSzjga7jgbbjgYoNCivjgbLjgonjgYrjgYss44KE44GZ44GXDQor44GK44GK44Gk44GLLOOCgOOBpOOBig0KK+OBi+OBqOOBhizjgZfjgZLjgYoNCivjgZfjgYrjga4s44Gy44KN44GXDQor44GL44Gf44KE44G+LOOBsuOCjeOBruOCig0KK+OBteOBoeOBi+OBvyzjgZ/jgZHjgbLjgZMNCivjgbLjgonjgY0s44Gf44KC44GkDQor44GE44KP44GV44GNLOOBjeOBv+OBig0KK+OBiOOBruOBjSzjgZjjgoXjgpMNCivjgYTjgo/jgZ8s44Gb44GE44GE44GhDQor44GX44KF44Go44GGLOOBn+OBoOOBlw0KK+OBqOOBiuOChOOBvizjgb7jgaTjga7jgooNCivjgZPjgYTjgacs44GY44KF44KT44GW44G244KNDQor44Gf44Gq44G5LOOChuOBhuOBmOOCjeOBhg0KK+OChOOBvuOCguOBqCzjgZfjgoXjgpPjgYTjgaENCivjgYvjgYTjga/jgaQs44Gb44GE44GXDQor44GC44KJ44GELOOBi+OBpOOBmA0KK+OBhuOBiOOBoCzjgobjgYbjgZ7jgYYNCivjgY/jgonjgYrjgYss44Gd44GG44GE44Gh44KN44GGDQor44GT44Gw44KE44GXLOOBiOOBpOOBsuOCjQ0KK+OBn+OCgeOBoeOBiyzjgZ/jgabjgYoNCivjgojjgZfjgaAs44GX44Ga44GKDQor44G+44Gk44KC44GoLOOBl+OBkuOCiw0KK+OBleOBi+OBl+OBnyzjgYvjga3jgYoNCivjgo/jgaAs44Go44GX44GC44GNDQor44GE44Go44GGLOOChOOBmeOBig0KK+OCiOOBl+OBoCzjgYvjgaTjgZgNCivjgojjga3jgaAs44Go44GX44Gy44GnDQor44GK44KA44KJLOOBvuOBleOBvw0KK+OBn+OBi+OBjizjgZfjgaHjgo3jgYYNCivjgYbjgaHjgoTjgb4s44GC44GN44GTDQor44GL44GX44KP44GOLOOBkeOBhOOBkw0KK+OBq+OBl+OBoCzjgZvjgaTjgYoNCivjgYrjgZfjgYss44Gf44GR44GKDQor44GI44GY44G+LOOBqOOCguOBruOCig0KK+OBiuOBiyzjgZHjgpPjgYTjgaENCivjgojjgZfjgaAs44KE44GZ44GIDQor44GE44G+44GELOOChOOBmeOBl+OCjeOBhg0KK+OChOOBvuOBv+OBoSzjgajjgoLjgZMNCivjgYLjgYTjgoLjga4s44GL44Gk44GKDQor44Gy44GuLOOCguOBqOOBkw0KK+OBn+OBi+OBr+OBlyzjgb/jgZXjgZMNCivjgojjgZPjgZ8s44GI44GE44GTDQor44GE44Gu44GGLOOBn+OBiOOBkw0KK+OCiOOBl+OBoCzjgbLjgo3jgZMNCivjgojjgZfjgYrjgYss44GC44GN44GTDQor44GG44KB44GW44KPLOOBhuOBjeOBkw0KK+OBpuOCieOBiizjgbLjgo3jgbLjgZUNCivjgYvjgo/jga/jgoks44Gv44KL44GKDQor44Gv44Gb44GM44KPLOOBv+OBruOCiw0KK+OBjeOBlyzjgabjgovjgZMNCivjga/jgZfjgZrjgoEs44G/44Gk44Gy44KNDQor44KI44GX44GgLOOCgeOBkOOBvw0KK+OBv+OBreOBteOBmCzjgarjgYrjgZMNCivjgbvjgpPjgaAs44KG44G/DQor44Gf44GL44GV44KPLOOBv+OChuOBjQ0KK+OBiuOBiuOBr+OBlyzjgojjgYbjgZMNCivjgYvjgYzjgo8s44Gh44GLDQor44Gr44GX44GgLOOBvuOCig0KK+OBhOOBn+OBjOOBjSzjgYLjgY3jgZMNCivjgYLjgY3jgoTjgb4s44Gu44KK44Gy44KNDQor44GK44Gh44KKLOOChOOBmeOBsuOCjQ0KK+OBruOBluOCjyzjgZPjgYbjgZgNCivjgZXjgYTjgajjgYYs44GR44KT44GYDQor44GN44KA44KJLOOBoeOBiA0KK+OBguOBuSzjgarjgYrjgagNCivjgY/jgZnjga7jgY0s44Go44KC44GTDQor44Gv44KE44GXLOOChOOBmeOBsuOCjQ0KK+OBiuOBiuOBhCzjgarjgYrjgb8NCivjgYvjgb/jgYrjgYss44Gv44KL44KI44GXDQor44GC44GN44KE44G+LOOBhOOBleOBig0KK+OBguOCiuOBnyzjgYvjgaTjgb8NCivjgY3jgZ/jgoDjgoks44G/44Gh44KG44GNDQor44G+44GZ44KA44KJLOOBn+OBi+OBruOCig0KK+OBiuOBiuOBleOCjyzjgZHjgpMNCivjgYvjgo/jgYQs44G/44Gu44KLDQor44GE44Gf44GM44GNLOOBsuOBp+OBig0KK+OCguOCiizjgZ/jgYvjgYoNCivjgYLjgYrjgY0s44G/44GN44GKDQor44G144GY44GX44KNLOOBk+OBhuOBmA0KK+OBl+OBv+OBmizjgoLjgajjgZfjgZINCivjgoDjgonjgYvjgb8s44G/44KI44GXDQor44Gq44GL44GY44G+LOOBpuOBpOOBig0KK+OCguOBjizjgYLjgY3jgYoNCivjgb/jgYbjgoks44GL44Ga44GKDQor44Gf44GL44G+44GkLOOBkeOCk+OBmA0KK+OBn+OBi+OBoCzjgZfjgofjgYbjgYTjgaENCivjgZPjgpPjgaks44G+44GV44GTDQor44Gq44GL44GY44G+LOOBsuOBqOOBlw0KK+OBreOCjOOBhCzjgbLjgo3jgZcNCivjgYbjgZfjgY8s44GK44GV44KADQor44GN44Gf44GW44KPLOOBkw0KK+OBleOBo+OBlSzjga7jgbbjgbLjgo0NCivjgYTjgaPjgZfjgY0s44KI44GX44Gy44KNDQor44GL44KP44GuLOOBruOCiuOBpOOBkA0KK+OBhOOBl+OBr+OCiSzjgbXjgb/jgZ/jgYsNCivjgYvjgoHjgYrjgYss44Gf44Gg44GKDQor44GN44GG44GhLOOBruOCiuOBi+OBmg0KK+OBquOBjOOBhCzjgbLjgajjgZcNCivjga7jgZDjgaEs44G/44Gh44GKDQor44GK44GX44GfLOOBn+OBi+OBig0KK+OCiOOBl+OCgOOCiSzjgajjgZfjgb/jgaENCivjgYLjgYvjgbvjgoos44G/44Gk44Gu44G2DQor44G+44KL44Gq44GMLOOCiOOBl+OBpOOBkA0KK+OCiOOBl+OBrizjgZPjgYbjgZ/jgo3jgYYNCivjgoTjga4s44KI44GX44Gy44KNDQor44KE44G+44GQ44GhLOOBvuOBleOBsuOBpw0KK+OChOOBvuOBkOOBoSzjgYvjgaTjgajjgZcNCivjgZvjgpPjganjgaAs44G+44GV44KLDQor44KE44GZ44GgLOOBguOBjeOCiQ0KK+OCiOOBk+OBiCzjgZjjgoXjgpPjgYTjgaENCivjgoTjgb7jgZfjgZ8s44Gb44GE44GW44G244KN44GGDQor44KI44GX44GgLOOBqOOBv+OBnuOBhg0KK+OChOOBvuOBl+OBnyzjgZnjgZnjgoANCivjgoTjgZnjgYQs44GL44Ga44GKDQor44KE44G+44GK44GLLOOBjeOCh+OBhuOBmeOBkQ0KK+OCiOOBk+OBmyzjgajjgoLjgZfjgZINCivjgoTjgb7jgZDjgaEs44GR44KT44GYDQor44KE44Gv44GOLOOChOOBmeOBr+OCiw0KK+OChOOBvuOBiuOBiyzjgbLjgo3jgb7jgosNCivjgojjgaTjgoQs44Go44GK44KLDQor44KE44G+44KC44GoLOOBmOOCheOCk+OBkw0KK+OCiOOBl+OBi+OCjyzjgajjgZfjgo3jgYYNCivjgoTjgb7jgZfjgZ8s44GX44KH44GG44GYDQor44KE44G+44GK44GLLOOBsuOCjeOBkw0KK+OCiOOBreOBv+OBpCzjgZvjgYTjgZgNCivjgojjgZfjgaAs44GR44KT44GE44GhDQor44KE44G+44GW44GNLOOBpuOBpOOBig0KK+OChOOBvuOCguOBqCzjgbLjgYvjgosNCivjgoTjgb7jgZDjgaEs44G/44Gu44KLDQor44KE44G+44GG44GhLOOBleOBi+OBiA0KK+OCiOOBl+OBluOCjyzjgYvjgaTjgb8NCivjgojjgZfjgYrjgYss44GL44Gk44Gy44GoDQor44KE44G+44KC44GoLOOBruOBtuOBig0KK+OChOOBvuOBiuOBiyzjgb/jgaHjgajjgZcNCivjgoTjgb7jgZbjgY0s44GC44GN44KJDQor44KI44GX44KA44KJLOOBvuOBleOBsuOBkw0KK+OChOOBmeOBoCzjgZPjgYbjgZgNCivjgoTjgb7jgZfjgZ8s44Gb44GE44GE44GhDQor44KE44GgLOOBl+OCk+OChA0KK+OCiOOBl+OBoCzjgYTjgaHjgo3jgYYNCivjgoTjgb7jgoLjgags44Gk44Go44KADQor44KE44G+44GgLOOBlOOCjeOBhg0KK+OCiOOBreOBoCzjgYvjgYrjgosNCivjgojjgZfjgaAs44G+44GV44Gy44KNDQor44KE44G+44GgLOOBj+OBmeOBig0KK+OChOOBvuOBkOOBoSzjgZ/jgYvjgbXjgb8NCivjgoTjgb7jgZDjgaEs44G144G/44Gy44KNDQor44KE44G+44KC44GoLOOBn+OBi+OBkw0KK+OCiOOBl+OBoCzjgZnjgZnjgoANCivjgoTjgb7jgZfjgZ8s44GX44KH44GG44Ge44GGDQor44KE44KT44G5LOOBguOBpOOBsuOCjQ0KK+OChOOBvuOBkOOBoSzjga7jgorjgojjgZcNCivjgoTjgb7jgoLjgags44GY44KF44KT44GYDQor44KE44G+44GtLOOBk+OBhuOBmOOCjeOBhg0KK+OChOOBvuOBleOBjSzjgZHjgpPjgZ/jgo3jgYYNCivjgoTjgZnjgYrjgYss44KG44GN44GKDQor44KE44G+44GgLOOBiOOBhOOBnuOBhg0KK+OCiOOBl+OBluOCjyzjgZjjgo3jgYYNCivjgoTjgZjjgb4s44GC44GN44KJDQor44KE44Gq44GELOOBpuOBpOOBig0KK+OChOOBvuOBluOBjSzjgYvjgZrjgYoNCivjgoTjgb7jgYbjgaEs44G144GP44G/44GhDQor44KE44G+44GW44GNLOOBmeOBmeOCgA0KK+OCiOOBl+OBrizjgZ/jgaTjgobjgY0NCivjgoTjgb7jgYvjgZIs44Gf44Gg44Gu44G2DQor44KE44GOLOOBmOOBpOOBruOCig0KK+OChOOBmeOBoCzjgb7jgZXjgYoNCivjgoTjgb7jgoQs44Gu44G244GKDQor44Gf44GL44GQ44GhLOOBruOBvOOCiw0KK+OCiOOBl+OBoCzjgbLjgo3jgZcNCivjgojjgZfjga4s44GT44GG44GYDQor44KE44G+44KA44KJLOOBmOOCheOCk+OBhOOBoQ0KK+OChOOBjizjgYvjgaTjga7jgooNCivjgoTjgb7jgaAs44GT44GZ44GRDQor44KG44GL44KPLOOBvuOBleOBqOOBlw0KK+OChOOBvuOCguOBqCzjgZjjgofjgYbjgZgNCivjgoTjgb7jgZ/jgass44Gy44KN44Gk44GQDQor44KE44G+44KA44KNLOOCiOOBl+OBi+OBrQ0KK+OCiOOBl+OBoCzjgajjgZfjgbLjgZMNCivjgojjgZPjgYvjgo8s44Go44KC44KI44GXDQor44KE44G+44GW44GNLOOBk+OBhuOBhOOBoQ0KK+OChOOBvuOCguOBqCzjgZ/jgZHjgYoNCivjgojjgZfjga4s44GN44KI44GXDQor44KE44G+44GtLOOCiOOBreOBn+OBiw0KK+OChOOBmeOBquOBjCzjgYLjgY3jgbLjgo0NCivjgoTjgarjgYss44GR44GE44GE44GhDQor44KE44G+44GtLOOBpuOBpOOBig0KK+OChOOBvuOBhuOBoSzjgojjgZfjgobjgY0NCivjgoTjgb7jgZDjgaEs44KG44GG44GYDQor44KE44G+44KP44GNLOOBl+OCh+OBhuOBn+OCjeOBhg0KK+OChOOBvuOBi+OCjyzjgZjjgoXjgpPjgYTjgaENCivjgoTjgb7jgaAs44GL44Ga44G/DQor44KI44GT44KE44G+LOOBl+OCh+OBhuOBn+OCjeOBhg0KK+OChOOBvuOCguOBqCzjgoTjgZ3jgb8NCivjgoTjgb7jgZDjgaEs44Gu44G844KLDQor44KE44G+44GQ44GhLOOBn+OBi+OCiOOBlw0KK+OCiOOBl+OBoCzjgZ/jgYvjgYoNCivjgoTjgb7jgarjgYss44GL44Ga44G/DQor44KE44G+44KC44GoLOOBn+OBoOOBr+OCiw0KK+OCiOOBl+OBoCzjgZ/jgYvjgYoNCivjgoTjgb7jgaAs44GV44Go44KLDQor44KE44G+44GK44GLLOOCiOOBl+OBqOOCgg0KK+OCiOOBk+OChOOBvizjgb7jgZXjgbLjgZUNCivjgoTjgb7jgZXjgY0s44Gu44KK44GKDQor44KE44G+44KC44GoLOOBi+OBpOOBsuOBkw0KK+OChOOBvuOBi+OCjyzjgb7jgZXjgojjgZcNCivjgoTjgYbjgaEs44Gf44Gg44KI44GXDQor44KI44GX44Gv44KJLOOBi+OBpOOBmA0KK+OCiOOBk+OBv+OBnizjgZfjgZLjgosNCivjgoTjgb7jgoLjgags44GX44KF44GG44Ge44GGDQor44KE44G+44KC44GoLOOBpuOCi+OBig0KK+OChOOBvuOCguOBqCzjgYjjgYTjgYTjgaHjgo3jgYYNCivjgojjgZfjgaAs44G+44GV44Gy44KNDQor44KI44GX44GgLOOBteOBv+OBsuOCjQ0KK+OChOOBmeOBhCzjgb/jga7jgosNCivjgoTjgb7jgZDjgaEs44GX44GS44KLDQor44KE44G+44KC44GoLOOBguOBjeOCiQ0KK+OCiOOBk+OBnyzjgYjjgYTjgYTjgaENCivjgojjgZfjgaAs44KG44Gf44GLDQor44KI44GT44KE44G+LOOBsuOBp+OBjQ0KK+OChOOBmeOBhCzjgYvjgZrjgoLjgagNCivjgoTjgb7jgZXjgY0s44GL44Ga44Gy44KNDQor44KI44GX44GK44GLLOOBruOBtuOBig0KK+OCiOOBl+OBoCzjgZfjgoXjgpPjgo3jgY8NCivjgoTjgb7jgaAs44GL44Gk44Gy44KNDQor44KE44G+44KC44GoLOOCiOOBhuOBmA0KK+OCiOOBl+OBoCzjgZvjgYTjgZ7jgYYNCivjgoTjgb7jgZbjgY0s44Gb44GE44GX44KN44GGDQor44KE44G+44GtLOOBquOBiuOBmA0KK+OChuOBn+OBqyzjgZnjgZnjgoANCivjgojjga3jgZbjgo8s44KI44GX44Gy44KNDQor44KI44GX44GuLOOBoOOBhOOBmeOBkQ0KK+OCiOOBl+OBoCzjgZ/jgZHjgYoNCivjgojjgZfjgoLjgoos44Gy44GV44Go44KIDQor44KI44GX44KP44KJLOOBn+OBkeOBlw0KK+OChOOBvuOBoCzjgajjgZfjgY0NCivjgojjgZfjgaAs44Go44GX44GL44GaDQor44KI44GX44GgLOOCgOOBpOOBig0KK+OChOOBvuOCguOBqCzjgoLjgorjgbLjgZMNCivjgZPjgZjjgb4s44GP44Gr44GL44GkDQor44GK44GuLOOBl+OBkuOBig0KK+OBvuOBiOOBi+OCjyzjgZPjgYbjgZ/jgo3jgYYNCivjgZPjgpPjga4s44Gu44G244KG44GNDQor44G+44GN44GbLOOBjeOCiOOBlw0KK+OBruOCgOOCiSzjgb7jgZXjgZ/jgYsNCivjgoTjgZnjga/jgoks44G+44GV44Gy44GTDQor44Gq44GM44GX44G+LOOBguOBpOOCiOOBlw0KK+OBjeOBn+OBr+OBlyzjgb7jgZXjgYoNCivjgaTjgoss44GN44KI44G/44GhDQor44Gk44GP44GgLOOBv+OBoeOBig0KK+OBpuOCieOBhuOBoSzjgZ/jgZHjgZcNCivjgoTjgb7jgaAs44GV44Go44KLDQor44Gb44KT44GwLOOBmeOBmeOCgA0KK+OBleOBiOOBjSzjga7jgorjgYoNCivjgYrjgYvjgaAs44GX44KH44GG44GE44GhDQor44G/44KE44GG44GhLOOBsuOBleOBig0KK+OBk+OCk+OBqSzjgajjgZfjgYoNCivjgbXjgY3jgYLjgZIs44KE44GZ44GKDQor44GE44GX44GL44KPLOOBoeOCiOOBn+OBkQ0KK+OBhOOCj+OCguOBqCzjgb7jgZXjgYoNCivjgY/jgbws44GY44KF44KT44GE44Gh44KNDQor44Gf44Gq44GLLOOBsuOCjeOBi+OBpA0KK+OCj+OBoCzjga7jgorjgYoNCivjgYTjgo/jgYos44Gk44Gt44Gu44KKDQor44GP44G+44GM44GELOOBn+OBi+OBsuOCjQ0KK+OBmeOBmuOBjSzjgbLjgo3jgbXjgb8NCivjgZ/jgYvjgoDjgoks44Gy44KN44GXDQor44Gr44GX44GG44KJLOOBm+OBhOOBhOOBoeOCjeOBhg0KK+OBv+OBpOOBmCzjgb7jgZXjgZcNCivjgZ/jgY3jgY3jgZ8s44GC44GN44KJDQor44GK44GG44GhLOOBkeOCk+OBmA0KK+OBk+OBvizjgYLjgY3jgYoNCivjgb7jgZnjgaAs44GR44KT44GYDQor44GL44Go44GGLOOBqOOBl+OCjeOBhg0KK+OBhOOBhOOBmuOBiyzjgYvjgZrjgbLjgZMNCivjgb7jgovjgoTjgb4s44Gu44G244GC44GNDQor44Go44GX44Gf44GrLOOBqOOBiuOCiw0KK+OBr+OBquOBtuOBoSzjgb7jgZXjgbLjgo0NCivjgYTjgb7jgYQs44G+44GV44Ge44GGDQor44GK44GL44Gy44KNLOOBpOOBreOBig0KK+OBjeOCgOOCiSzjgajjgZfjgbLjgZMNCivjgZ/jgZjjgb4s44G+44GV44Gv44KLDQor44GL44KT44GgLOOBpOOCieOChuOBjQ0KK+OBqeOBhCzjgYrjgZXjgoANCivjgYLjgonjgYzjgY0s44KE44GZ44Gu44G2DQor44GN44KF44GG44Gd44GY44KTLOOBkeOCk+OBmeOBkQ0KK+OBn+OBkeOBhuOBoSzjgaTjga3jgogNCivjgYbjgazjgb4s44Gy44Gn44Gq44KKDQor44KE44G+44GQ44GhLOOCiOOBl+OBn+OBiw0KK+OCiOOCguOCiizjgoLjgajjgbLjgZUNCivjgZfjgb7jgZbjgY0s44GP44Gr44Gy44GTDQor44Go44GP44KELOOBqOOBl+OBig0KK+OChOOBvuOBoCzjgYLjgY3jgokNCivjgbXjgYvjgoQs44GX44GS44GKDQor44GI44GQ44GhLOOBr+OCi+OBig0KK+OBleOBrizjgbLjgafjga7jgbYNCivjgajjgY/jga4s44GC44GN44KJDQor44GK44GK44Go44KCLOOBleOBoOOCgA0KK+OBl+OCieOBiuOBjOOCjyzjgbLjgo3jgZcNCivjgbLjgonjga4s44Gf44GE44GNDQor44GK44GgLOOChuOBhuOBmA0KK+OBn+OBquOBiyzjgorjgofjgYbjgZ7jgYYNCivjgbXjgZjjgZ8s44GC44GN44KJDQor44GC44KJ44GELOOBguOBjeOBsuOBpw0KK+OBteOBmOOBnyzjgobjgYbjgZgNCivjgarjgYvjgYzjgo8s44Gy44KN44KG44GNDQor44Gq44GL44Gr44GXLOOBi+OBmuOBl+OBkg0KK+OBr+OCiSzjgYLjgY3jgbLjgo0NCivjgaHjgbAs44Go44GX44GTDQor44GE44GX44KP44GfLOOBqOOBl+OBsuOBlQ0KK+OChOOBkOOBoSzjgZ/jgZHjgbLjgo0NCivjgabjgZjjgb4s44GL44Ga44GKDQor44Gf44Gk44GfLOOBl+OBkuOCiw0KK+OBj+OBleOBiyzjgZ/jgZHjgZcNCivjgbXjgovjgZ8s44Gf44GR44Gv44KLDQor44GU44Go44GGLOOBvuOBleOBruOBtg0KK+OBiuOBoOOBjuOCiizjgZ/jgaDjgZcNCivjgY/jgb7jgYzjgYQs44Gf44GR44KLDQor44KA44KJ44GL44G/LOOBv+OBmuOBuw0KK+OBv+OCgOOCiSzjgb7jgZXjgYoNCivjgojjgZPjgYQs44GP44Gr44Gy44GTDQor44GE44Gq44GSLOOBqOOCguOChuOBjQ0KK+OBguOCgeOBv+OChCzjgb/jgaTjgYoNCivjgYTjga7jgYbjgYgs44GV44Gg44GKDQor44Gs44G+44GfLOOBmOOCk+OBhOOBoQ0KK+OBleOBi+OCguOBqCzjgZTjgbjjgYQNCivjgbLjgonjgb7jgaQs44GV44Gg44GKDQor44Gq44KK44GfLOOBi+OBiuOCiw0KK+OBpOOBreOBvyzjgYTjgaHjgo3jgYYNCivjgZ/jgYvjgZfjgb4s44G144GV44Gy44GTDQor44G/44GZLOOBi+OBmuOBvw0KK+OBleOBjeOChOOBvizjgojjgZfjgbLjgZMNCivjgbXjgZjjgo/jgoks44Gf44Gg44GXDQor44Go44G/44GfLOOBvuOBleOBsuOCjQ0KK+OBpOOBquOCj+OBjSzjgb/jga3jgYoNCivjga/jgZvjgYzjgo8s44Gf44GR44GXDQor44G144GP44GW44KPLOOChuOBhuOBnuOBhg0KK+OBlOOBiOOBkSzjgYLjgY3jgokNCivjgarjgYss44G+44GV44Gy44KNDQor44GI44Gw44GoLOOBkeOBhOOBkw0KK+OBk+OBsOOChOOBlyzjgZfjgpPjgYTjgaHjgo3jgYYNCivjgbLjgonjgaTjgYss44GN44KI44GXDQor44GV44Go44GGLOOBruOBtuOBig0KK+OBhOOBruOBhuOBiCzjgYLjgY3jgokNCivjga/jgZnjgazjgb4s44G+44GV44GKDQor44G144KL44Gv44GfLOOBguOBleOBkw0KK+OBhuOBiOOBrizjgYLjgaTjgZcNCivjgZ/jgZHjgarjgYss44G+44GV44Gy44KNDQor44GP44Gr44Gf44GRLOOCiOOBl+OBig0KK+OBsuOCieOBnyzjgobjgYbjgZMNCivjga/jgZvjgYzjgo8s44GS44KTDQor44G144GP44Gv44KJLOOBguOBpOOBlw0KK+OBteOBquOBkOOBoSzjgajjgYrjgosNCivjgYLjgb7jga4s44Gu44KK44GTDQor44GK44GK44GuLOOBv+OBmuOBruOCig0KK+OBmeOCjyzjga7jgorjgZMNCivjga7jgYzjgb8s44G/44GLDQor44GG44KB44GuLOOChOOBmeOChuOBjQ0KK+OBhOOBkeOBrizjgobjgYbjgZMNCivjgarjgYvjgZjjgb4s44Gv44Gq44GTDQor44GE44GX44GELOOBjeOCh+OBhuOBkw0KK+OBleOBhOOBqOOBhizjgajjgoLjgZMNCivjgZ/jgarjgYss44GL44Ga44KG44GNDQor44Gf44Gm44GE44GXLOOBqOOBl+OBi+OBmg0KK+OBmeOBmuOBjSzjgojjgZfjgbLjgZMNCivjgY3jga7jgZfjgZ8s44Gy44GL44KLDQor44GK44GK44GV44KPLOOCiOOBl+OBsuOCjQ0KK+OBhOOBpyzjgZXjgY3jgZMNCivjgYrjgYzjgo8s44GX44G7DQor44GI44Gu44KC44GoLOOCj+OBjeOBkw0KK+OBiuOBluOCjyzjgb/jgZrjgbsNCivjga/jgZ/jgZHjgoTjgb4s44Go44KC44Gy44KNDQor44GE44GE44GgLOOBv+OBpOOBguOBjQ0KK+OBl+OBruOBluOBjSzjgZjjgoXjgpPjgYTjgaENCivjgYrjgYvjgaAs44KK44GI44GTDQor44Gf44GL44G+LOOBvuOBleOBlw0KK+OChOOBjizjgbLjgo3jgobjgY0NCivjgZXjgYvjgYQs44G+44GV44KIDQor44GX44G/44GaLOOBk+OBhuOBmA0KK+OBu+OCiuOBi+OCjyzjgojjgYbjgZMNCivjgarjgYzjgYos44GT44GG44G444GEDQor44Gy44KJ44GE44GXLOOBvuOCig0KK+OBleOBjOOCjyzjgZ/jgoLjgaQNCivjga/jgonjgaAs44G+44GV44G/DQor44Gf44GL44Gv44GXLOOCiuOCheOBhuOBhOOBoQ0KK+OBn+OBoSzjgb7jgZXjgogNCivjgbLjgYgs44GN44G/44GKDQor44Gf44GgLOOBv+OBquOBkw0KK+OCiOOBl+OCguOBqCzjgbLjgo3jgZMNCivjgoLjgaHjgZrjgY0s44Gh44Gy44KNDQor44Gf44Gq44GLLOOBk+OBhuOBmA0KK+OBn+OBkOOBoSzjgb7jgobjgb8NCivjgZXjgajjgYYs44GE44GP44GKDQor44GV44GL44GX44GfLOOChuOBjeOBiA0KK+OBi+OCj+OBl+OBvizjgb7jgobjgb8NCivjgbvjgorjgZDjgaEs44GL44GK44KKDQor44G144GP44G+LOOBmeOBv+OBn+OBiw0KK+OBi+OCj+OBn+OBqyzjgYLjgY3jgokNCivjgZjjgbPjgY0s44GK44GV44KADQor44GV44GE44Go44GGLOOBv+OBpOOCiw0KK+OBl+OBiuOBpCzjgYTjgZXjgYoNCivjgajjgbDjgZ8s44Gu44KK44GL44GaDQor44KE44G+44KC44GoLOOBvuOBleOBsuOBkw0KK+OBiuOBteOBoSzjgbLjgo3jgb/jgaENCivjgZfjga7jga/jgoks44Gu44G244GKDQor44KE44G+44GL44KPLOOBi+OBmuOBn+OBoA0KK+OBn+OCgOOCiSzjgajjgZfjgYoNCivjga/jgZ/jgZHjgoTjgb4s44Gf44GL44GTDQor44Gf44Gq44GLLOOBsuOBi+OCiw0KK+OBi+OBquOBluOCjyzjgbLjgafjgYLjgY0NCivjgZ/jgYvjga/jgZcs44GI44KK44GTDQor44G144GY44KA44KJLOOBv+OBquOBkw0KK+OBquOBjOOBl+OBvizjgojjgZfjgobjgY0NCivjgY3jga7jgZfjgZ8s44Go44GN44GTDQor44GT44KT44GpLOOBvuOBvw0KK+OBguOCk+OBuSzjgb7jgarjgb8NCivjgZXjgYTjgajjgYYs44GE44Ga44G/DQor44GC44GV44GgLOOBv+OBjQ0KK+OBjeOBruOBl+OBnyzjgbXjgb/jgYgNCivjgYvjganjgoQs44GC44GN44GTDQor44GG44GI44GgLOOBqOOBiuOCiw0KK+OBleOBhOOBqOOBhizjgoLjgasNCivjgZ/jgYvjga/jgZcs44G+44GV44Gy44KNDQor44GE44GX44GW44GNLOOBl+OCguOCkw0KK+OBiuOBluOCjyzjgabjgovjgbLjgZUNCivjga/jgoTjgZcs44GK44GV44KADQor44KE44GM44KPLOOBv+OBoeOBig0KK+OBn+OBi+OBr+OBlyzjgZ/jgb/jgYoNCivjgajjgb/jgoTjgb4s44KI44GX44GC44GNDQor44GC44Gg44GhLOOChuOBhuOBnuOBhg0KK+OBguOBi+OBhOOCjyzjgZfjgofjgYbjgZnjgZENCivjgYvjgYzjgoQs44KG44GN44Gu44G2DQor44GC44KJ44GELOOBleOBiuOCig0KK+OBiuOBl+OBjeOCiizjgZ/jgYvjgZcNCivjgoTjgb7jgoDjgoks44GI44GE44GYDQor44Gf44GL44KE44G+LOOBqOOBl+OChuOBjQ0KK+OCiOOBk+OChOOBvizjgYrjgZXjgoANCivjgbDjgpMs44Gk44GQ44GKDQor44GE44Ga44G/LOOCiOOBl+OBruOCig0KK+OBv+OBmuOBrizjgZ/jgaDjgYoNCivjgbbjgpPjgoQs44G/44Gu44KLDQor44Gm44KJ44GK44GLLOOBl+OCh+OBhuOBmA0KK+OBv+OChOOBl+OBnyzjgb/jga7jgosNCivjgYLjgZXjgb4s44GR44GE44GTDQor44GV44GV44GNLOOBpuOBpOOBig0KK+OBq+OBl+OBiizjgojjgorjgagNCivjgbXjgovjgoQs44Gm44Gk44GKDQor44GE44G+44GgLOOBsuOBp+OChuOBjQ0KK+OBhOOBl+OBr+OCiSzjgYTjgY/jgYgNCivjga/jgZfjgoLjgags44G/44GN44GKDQor44G+44KL44KE44G+LOOBqOOCguOChuOBjQ0KK+OBi+OBmCzjgYvjgZrjgZ/jgYsNCivjgYvjga3jgZMs44Gv44Gq44GTDQor44Gq44GL44GgLOOBruOCiuOBsuOBqA0KK+OBoeOBluOCjyzjgarjgbsNCivjgZXjgo8s44GC44GV44GTDQor44Go44GM44KBLOOBv+OCj+OBkw0KK+OCiOOBl+OBoCzjgZLjgpMNCivjgYrjgYrjga4s44Gy44KN44GTDQor44KE44GTLOOBvuOBleOBsuOBkw0KK+OBhOOBl+OBi+OCjyzjgYLjgY3jga7jgooNCivjgZPjgajjgaAs44Gy44KN44GTDQor44GV44GM44KPLOOBi+OBmuOBvg0KK+OBruOBkOOBoSzjgYvjgZrjgb7jgZUNCivjgafjgpPjgbws44Gy44KN44G144G/DQor44Gv44KL44GNLOOBguOBjeOBsuOBkw0KK+OBhOOBrSzjgZfjgofjgYbjgYjjgYQNCivjgYrjgYrjga4s44GP44Gr44GKDQor44GL44Gt44GgLOOBn+OBpOOBsuOBkw0KK+OBruOBkOOBoSzjgYLjgY3jgokNCivjgYrjgYrjgbAs44Gy44KN44G/44GkDQor44GK44GfLOOBqOOBj+OBhOOBoeOCjeOBhg0KK+OBl+OCguOBvuOBjSzjgoTjgZnjgYoNCivjgo/jgZ/jgbLjgY0s44KG44GG44GTDQor44KE44G+44KC44GoLOOBvuOCig0KK+OBteOBmOOCgOOCiSzjgb7jgorjgZMNCivjgZ3jgYbjgb/jgoQs44GR44KT44GYDQor44GX44G+LOOBj+OBvw0KK+OBleOBleOBjSzjgZ/jgYvjgobjgY0NCivjgYvjgYzjgo8s44KM44GE44GTDQor44Gf44GR44GG44GhLOOBj+OBv+OBkw0KK+OBleOBhOOBjSzjgb/jgojjgZMNCivjgYTjgajjgYYs44Gu44KK44GTDQor44GN44KA44KJLOOCiOOBhuOBmA0KK+OBn+OBsOOBnyzjgZ/jgYvjgbLjgo0NCivjgY/jgoEs44Go44KI44GC44GNDQor44Gf44GL44GgLOOBvuOCiuOBkw0KK+OBn+OCgOOCiSzjgb/jgYgNCivjgZ/jgYvjgb7jgaQs44G+44GN44GTDQor44GX44KN44GX44GfLOOBl+OCheOBhuOBleOBjw0KK+OBi+OBqOOBhizjgajjgoLjgobjgY0NCivjgYLjgo/jgYQs44Go44GX44Gu44KKDQor44G744GV44GLLOOBruOCiuOBkw0KK+OBn+OBquOBiyzjgovjgb8NCivjgb/jgbLjgoks44GX44KF44GG44GV44GPDQor44GV44Go44GGLOOBkeOBhOOBkw0KK+OBiuOBluOCjyzjgobjgY3jgYoNCivjgZnjgZrjgY0s44GR44KT44GYDQor44G/44KE44GW44GNLOOCiuOCheOBhuOBnuOBhg0KK+OCguOCiuOBn+OBqyzjgobjgYvjgooNCivjgYTjgo/jgZDjgo0s44Gk44Go44KADQor44GG44GI44G+LOOBl+OCh+OBhuOBkw0KK+OBteOBi+OBnyzjgaHjgYsNCivjgbLjgo3jgZss44GC44GN44GTDQor44GK44GL44GgLOOBsuOCjeOBvw0KK+OBi+OBqOOBhizjgYLjgorjgYsNCivjgb7jgY0s44GV44KG44KKDQor44Gu44GgLOOBqOOCguOBi+OBmg0KK+OBj+OBvCzjgY3jgofjgYbjgZMNCivjgavjgZfjgY3jgYrjgoos44Gk44GO44GKDQor44KE44GuLOOBmOOCheOCk+OBkw0KK+OBi+OCj+OCgOOBk+OBhizjgarjgYrjgY0NCivjgoTjgZnjgoDjgoks44G/44KI44GTDQor44Go44Gr44GXLOOBqOOCguOBkw0KK+OChOOBvuOCguOBqCzjgbLjgYvjgosNCivjgZfjgoLjgaAs44Gg44GE44GZ44GRDQor44GK44GK44Gf44GrLOOBj+OBq+OBig0KK+OBiuOBruOBleOBqCzjga/jgpMNCivjgYvjgarjgZbjgo8s44Gy44KN44GC44GNDQor44GK44GL44KC44GoLOOBv+OCj+OBkw0KK+OBleOBhOOBqOOBhizjgb/jgarjgZMNCivjgYvjgZfjgo/jgbDjgoks44Gu44G244GTDQor44Gf44GL44Gv44GXLOOBvuOBleOBruOBtg0KK+OBleOBhOOBqOOBhizjgb7jgarjgbYNCivjgb7jgaTjgaAs44KI44GX44GC44GNDQor44Gf44Gh44GW44GNLOOCj+OBi+OBkw0KK+OBk+OCk+OBqSzjgajjgoLjgZMNCivjgZfjgb/jgZos44Gg44GE44GZ44GRDQor44Gq44GM44GK44GLLOOBi+OBiuOCig0KK+OBquOBi+OBjOOCjyzjgYLjgaTjgZcNCivjgZ/jgYvjgags44Gy44KN44KG44GNDQor44GN44KA44KJLOOBn+OBi+OBlw0KK+OBquOCi+OBmyzjgY3jgojjgb8NCivjgYrjgZDjgb4s44GL44GIDQor44Gf44GL44Gv44GXLOOBv+OBquOBiA0KK+OBjeOBj+OBoSzjgZvjgYTjgZMNCivjgZXjgajjgYYs44Gv44GY44KBDQor44GI44KT44GpLOOBvuOCiuOBkw0KK+OBn+OCgOOCiSzjgajjgoLjga7jgooNCivjgoTjgb7jgoLjgags44GT44GG44GYDQor44GC44GV44GELOOCiOOBl+OBsuOCjQ0KK+OCguOCiizjgYrjgZXjgoANCivjgZ/jgYvjgZfjgo0s44KB44GQ44G/DQor44GK44GLLOOBleOBhOOBiw0KK+OBi+OBqOOBhizjgajjgZfjgoQNCivjgYTjgZDjgaEs44GV44Gh44GTDQor44Gf44Gq44GLLOOBjeOCh+OBhuOBkw0KK+OCiOOBl+OBoCzjgZPjgYbjgZgNCivjgYLjgY3jgoLjgags44G+44Gp44GLDQor44Gr44GX44GELOOBmOOCheOCk+OBmA0KK+OCj+OBl+OBiuOBiyzjgZPjgYbjgZgNCivjgYTjgazjgb7jgoss44Gy44KN44GYDQor44G744GXLOOBl+OBmuOBiw0KK+OCiOOBreOChOOBvizjgb7jgZXjga7jgbYNCivjgY/jgo3jgbks44KG44GG44GE44GhDQor44GE44GX44GELOOBsuOBleOBiA0KK+OBsuOBkOOBoSzjgZjjgoXjgpPjgYTjgaENCivjgarjgYvjgaAs44Gf44GL44Gv44KLDQor44GK44Gu44Gn44KJLOOBquOBiuOBkw0KK+OBqOOBoCzjgajjgZfjgobjgY0NCivjgb7jgYjjgaAs44Gy44KN44GTDQor44Gq44GM44GELOOChuOBjeOBkw0KK+OBk+OBrOOBnyzjgbLjgZXjgojjgZcNCivjgZfjgbDjgZXjgY0s44GL44Gk44Go44GXDQor44GG44GL44GELOOBguOBjeOBiw0KK+OBmeOBmuOBjSzjgaHjga/jgosNCivjgbLjgonjgY0s44Gu44G244GTDQor44Gq44GL44KA44KJLOOChuOBhuOBkw0KK+OChOOBvuOBoCzjgb7jgZXjgb8NCivjgYvjganjgY/jgoks44G+44GV44GXDQor44Gf44GL44GV44GNLOOBk+OBhuOBmA0KK+OBquOBi+OBnyzjgY3jgojjgb8NCivjgZ/jgavjgYvjgo8s44G744Ga44GIDQor44Gr44GX44KA44KJLOOBvuOBleOChA0KK+OBv+OBquOBvyzjgYLjgoTjgb8NCivjgYrjgYrjgazjgY0s44G/44Gu44KLDQor44GV44Go44GGLOOBsuOCjeOBlw0KK+OBn+OBi+OBr+OBlyzjgZ/jgYvjgYoNCivjgbLjgaAs44GK44GV44KADQor44GV44GP44G+LOOBl+OBvg0KK+OBq+OBiOOBoCzjgZ/jgYvjgZcNCivjgojjgZPjgYQs44KM44G/DQor44KI44Gt44GP44KJLOOBn+OBkeOBig0KK+OBsOOCk+OBsCzjgorjgYgNCivjgoTjgb7jgaAs44GC44GN44Gy44GnDQor44GE44G+44KA44KJLOOCi+OCiuOBkw0KK+OBhOOBkeOBoCzjgaHjgYLjgY0NCivjgarjgYvjgoDjgoks44G/44Gq44GTDQor44GZ44Gp44GGLOOCiuOBiA0KK+OBquOBi+OBneOBrSzjgYvjgYrjgooNCivjgYrjgYrjgZXjgo8s44Gh44GL44GTDQor44GV44Go44GGLOOBl+OBoeOCjeOBhg0KK+OBiOOBhOOBqeOCgSzjgobjgY0NCivjgYTjgYzjgonjgZcs44G/44GLDQor44Gf44KELOOBn+OBi+OBkw0KK+OBiuOBiuOBsuOCiSzjgojjgZfjgZMNCivjgZXjgYvjgoLjgags44GV44Go44GXDQor44GZ44GO44KC44GoLOOBk+OBhuOBmA0KK+OBi+OBqOOBhizjgb/jgarjgZMNCivjgojjgZfjgYQs44Gf44Gg44Gy44KNDQor44GE44KP44KELOOCiOOBhuOBkw0KK+OBjeOBruOBl+OBnyzjgY3jgofjgYbjgZMNCivjgZnjgY7jgZXjgo8s44GL44Ga44KIDQor44KP44GgLOOBv+OCiOOBkw0KK+OBv+OChOOBl+OBnyzjgYjjgb/jgZMNCivjgYbjgYjjga4s44Gu44G244GTDQor44GK44GK44Gf44GNLOOChuOBv+OBkw0KK+OBhOOBl+OBsOOBlyzjgY3jgofjgYbjgZMNCivjgYTjgo/jgZfjgZ8s44G+44GV44GKDQor44GE44GX44GL44KPLOOBsuOBp+OBsuOBkw0KK+OBjeOBlyzjgZ/jgabjgYoNCivjgb7jgovjgoTjgb4s44Gy44GV44GKDQor44G744KT44G+LOOBn+OBi+OBig0KK+OBj+OBmeOCguOBqCzjgYTjgZXjgYoNCivjgYTjgb7jga4s44GN44G/44Gy44GnDQor44GK44GK44Gr44GXLOOBm+OBhOOBnuOBhg0KK+OChOOBvuOBoCzjgZfjgofjgYYNCivjgbXjgZjjgYrjgYss44Go44KJ44GKDQor44Gv44Gq44GgLOOChOOBmeOBi+OBmg0KK+OBl+OBsOOBnyzjgYLjgZXjgYoNCivjgb/jgoTjgZfjgZ8s44KG44GN44GKDQor44GL44GV44Gv44KJLOOBvuOBleOBig0KK+OBiuOBiuOChOOBkSzjga/jgovjgYoNCivjgYTjgb7jgYQs44GP44Gr44GKDQor44GT44Gb44GNLOOBvuOCiuOBkw0KK+OBiuOBiuOBnyzjga7jgbzjgosNCivjgb7jgaHjgYQs44GL44Ga44Gy44KNDQor44GN44GP44GhLOOBm+OBpOOBig0KK+OBsuOBkOOBoSzjgYvjgZrjgYgNCivjgb/jgarjgojjgZcs44GY44KF44KT44GYDQor44GZ44Ga44GNLOOBsuOCjeOBi+OBmg0KK+OBquOCk+OBsCzjgarjgYrjgY0NCivjgYrjgYrjgavjgZcs44Gg44GE44GV44GPDQor44Gv44KE44GX44GgLOOBn+OBi+OBqOOBlw0KK+OBn+OBquOBiyzjgbLjgafjgbLjgo0NCivjgYvjga3jgZMs44GL44Ga44Gu44KKDQor44Gk44Gh44KELOOBqOOCguOChuOBjQ0KK+OBhOOBhOOBoCzjgYjjgaTjgYoNCivjgbXjgovjgoQs44GL44Ga44GKDQor44Gq44GL44KA44KJLOOBv+OBpOOBkA0KK+OBr+OCi+OBr+OCiSzjgZ/jgYvjgZcNCivjgbvjgorjgYgs44KI44KK44GX44GSDQor44GK44GK44GfLOOBn+OBkeOBlw0KK+OBmeOBmuOBjSzjgoTjgZnjgaTjgZANCivjgYrjgags44G+44GV44Go44GXDQor44Gq44GL44GM44KPLOOBvuOChuOBvw0KK+OBi+OCj+OBl+OBvizjgojjgYbjgbjjgYQNCivjgabjgonjgoLjgags44KG44GG44GY44KN44GGDQor44GN44KA44KJLOOBguOBjeOCiQ0KK+OCiOOBqeOBquOCjyzjgobjgYvjgooNCivjgZPjgaDjgYTjgoks44Gy44Gn44GC44GNDQor44GL44GP44KJ44GELOOCiOOBhuOBkw0KK+OBiuOBkOOCiizjgbLjgo3jgojjgZcNCivjga/jgZ8s44GR44KT44GYDQor44G+44Gk44KC44KKLOOBi+OBmuOBig0KK+OCiOOBl+OBiuOBiyzjgZvjgYTjgZgNCivjgZfjgZLjgZ8s44G/44Gh44GC44GNDQor44GL44KP44GQ44GhLOOBqOOCguOBsuOCjQ0KK+OBi+OBreOBkyzjgb7jgZXjgYoNCivjgYLjgZXjgbIs44Gf44Gg44GC44GNDQor44KP44Gf44Gq44G5LOOBk+OBhuOBmA0KK+OBguOCiuOChOOBvizjgaTjgZDjgYoNCivjgaTjgZjjgZ8s44Gf44Gk44GKDQor44KI44GX44Gv44GXLOOBsuOBp+OBig0KK+OBv+OBl+OBvizjgZvjgYTjgZcNCivjgZXjgajjgYYs44GL44Gk44GYDQor44GL44Gt44G+44KLLOOBiOOBpOOBsuOCjQ0KK+OBi+OBreOBkyzjgoTjgZnjgZcNCivjgYjjgZjjgb4s44Gy44KN44GC44GNDQor44G/44Gk44GP44GhLOOBmOOCheOCkw0KK+OCguOCiizjgY3jgb/jgYoNCivjgYrjgaEs44Gb44GE44GE44GhDQor44G+44GI44GL44KPLOOBi+OBmuOBig0KK+OBn+OBquOBiyzjgb7jgZXjga7jgooNCivjgYrjgorjgYzjgZUs44G+44Gk44Gu44KKDQor44GT44Gb44GNLOOBi+OBiuOCiw0KK+OBsuOCieOChOOBvizjgZ/jgaDjgZcNCivjgZPjgbzjgoos44GI44Gk44KI44GXDQor44Gq44GL44GG44GILOOBn+OBpOOBig0KK+OBmeOBqOOBhizjgb7jgZXjgYoNCivjgZTjgajjgYYs44GN44KI44Gy44GTDQor44Gk44GL44KC44GoLOOBsuOCjeOBv+OBoQ0KK+OBiOOBs+OBr+OCiSzjgojjgZfjgYLjgY0NCivjgoLjgorjga4s44Gy44Gn44Gu44KKDQor44GZ44Ga44GNLOOBvuOBleOBguOBjQ0KK+OCiOOBl+OBoCzjgb7jgZPjgagNCivjgYTjgb7jgYQs44G+44GV44GNDQor44Gy44GuLOOCgOOBreOBn+OBiw0KK+OCiOOBl+OBoCzjgb/jgaoNCivjgYrjgavjgZrjgYss44GZ44G/44Gf44GgDQor44Gf44GL44GOLOOBvuOBleOBsuOBkw0KK+OBiuOCgOOCiSzjgYvjgaTjgbLjgagNCivjgYbjgaHjgoTjgb4s44GI44Gk44GTDQor44GP44KN44GL44KPLOOCiOOBl+OBruOBtg0KK+OChOOBvuOBl+OBnyzjgZ/jgY3jgYoNCivjgavjgZfjgaAs44Gy44GV44GIDQor44GL44GX44KP44GOLOOBsuOCjeOBlw0KK+OBi+OBreOBkyzjgobjgY3jgZMNCivjgY/jgb7jgaAs44G/44GN44GKDQor44GT44GY44G+LOOBquOBiuOBmuOBvw0KK+OBl+OCieOBhCzjgabjgaTjgbLjgZMNCivjgbXjgovjgYvjgo8s44KK44GIDQor44KA44GX44GGLOOBn+OBoOOBguOBjQ0KK+OCiOOBl+OBrizjgajjgZfjgYoNCivjgZnjgY7jgYbjgoks44Gb44GE44GE44GhDQor44G144GY44GV44KPLOOBvuOCig0KK+OBleOBqOOBhizjgYLjgY3jgbLjgo0NCivjgYjjgZbjgY0s44Gf44GL44KG44GNDQor44KA44KJ44GL44G/LOOBn+OBi+OBig0KK+OBq+OCj+OChOOBvizjgb7jgaTjgoLjgooNCivjgoTjgZnjga4s44G/44GLDQor44Gp44GG44GgLOOBqOOCguOBsuOBkw0KK+OBi+OBmOOBhCzjgoLjgarjgb8NCivjgZ/jgarjgYss44KI44GG44GTDQor44G+44Gk44Gq44KKLOOBhOOBleOBig0KK+OBiuOBiuOBsOOChOOBlyzjgZPjgYbjgY3jgaENCivjgZ/jgYvjga/jgZcs44Gf44GP44KEDQor44G+44Gk44KA44KJLOOChOOBmeOBvuOBlQ0KK+OBk+OCguOCiizjgb7jgY3jgZMNCivjga7jgZ7jgYgs44GL44Ga44GIDQor44GK44GuLOOBjeOCiOOBvw0KK+OBi+OCk+OBrizjgZPjgZrjgYgNCivjgZXjgajjgYYs44GR44GE44GTDQor44Gu44Gq44GLLOOCj+OBi+OBkw0KK+OBi+OCj+OBr+OCiSzjgobjgb8NCivjgarjgYvjgoDjgoks44G+44KG44G/DQor44KE44G+44GX44GfLOOBqOOBl+OBi+OBmg0KK+OBk+OBhuOBhOOBoSzjgoLjgoLjgYgNCivjgYTjgZ/jgoQs44Gy44Gn44GKDQor44KE44G+LOOBteOBv+OBkw0KK+OChOOBvuOCguOBqCzjgZ3jgYbjgYTjgaHjgo3jgYYNCivjgY/jgonjgZ8s44KE44GZ44GTDQor44GL44KP44GaLOOBhOOBn+OCiw0KK+OBv+OBi+OBvyzjgZPjgYbjgYTjgaENCivjgZ/jgY3jgYzjgo8s44KI44GX44GL44GaDQor44Gf44Gq44GLLOOBsuOCjeOBguOBjQ0KK+OBv+OChOOBnyzjgZ/jgYvjgabjgosKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvcGVyZi9kYXRhL2NvbGxhdGlvbi9UZXN0TmFtZXNfSmFwYW5lc2Vfay50eHQgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvcGVyZi9kYXRhL2NvbGxhdGlvbi9UZXN0TmFtZXNfSmFwYW5lc2Vfay50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDJlYmE1OQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9wZXJmL2RhdGEvY29sbGF0aW9uL1Rlc3ROYW1lc19KYXBhbmVzZV9rLnR4dApAQCAtMCwwICsxLDIyNzQyIEBACivvu7/jgqLjgq3jg6Ljg4gs44Ok44K544KqDQor44Ki44Kt44OQLOOCt+OCsuODqw0KK+OCouODqeOCpCzjg5Ljg4fjgqLjgq0NCivjgqLjg6njgqQs44Kx44Oz44Kk44OBDQor44Ki44Kr44Ks44OvLOODiOOCt+OCqg0KK+OCouODqeOCrSzjgrvjgqTjgrQNCivjgqLjgqTjgqvjg68s44OO44Oq44KqDQor44Ki44Kt44OOLOODpuOCreOCqg0KK+OCouOCreODpOODnizjg4Tjg6jjgrcNCivjgqLjgrXjgqQs44OS44OI44K3DQor44Ki44OZLOODnuODouODqw0KK+OCouODquOCrCzjg4Tjg4jjg6ANCivjgqLjgq3jgr8s44Oo44K344OG44OrDQor44Ki44Kr44OE44KrLOOCq+OCuuODkuOCsw0KK+OCouODqeOCpCzjg57jgrXjg4/jg6sNCivjgqLjgrXjg4/jg6ks44Kr44K644KqDQor44Ki44OE44OfLOODnuOCteOCouOCrQ0KK+OCouODr+ODpCzjg5Ljg4jjgrcNCivjgqLjgrXjgqvjg68s44OI44K344Ki44KtDQor44Ki44Kq44KtLOOCquOCteODoA0KK+OCouODr+OCuizjgqLjgq3jg6kNCivjgqLjgq3jgq/jgrUs44Oo44Km44K544KxDQor44Ki44Kq44Ok44KuLOODj+ODhOOCq+OCug0KK+OCouOCuOOCteODryzjgrfjg6XjgqbjgqTjg4ENCivjgqLjgqTjgr0s44Ok44K544K3DQor44Ki44Kq44K344OeLOODgeODqOOCq+OCug0KK+OCouODiOOCpizjg57jgrXjg5LjgrMNCivjgqLjgrXjg44s44Oo44K344OkDQor44Ki44Oq44KsLOOCveOCpuOCpOODgQ0KK+OCouOCquOCrSzjg6rjg6fjgqbjg5jjgqQNCivjgqLjgqTjgqvjg68s44Om44Kt44KqDQor44Ki44Kt44K/LOODnuOCteODkuODrQ0KK+OCouOCteODjizjg47jg6rjgqLjgq0NCivjgqLjgrXjg4gs44OS44OH44K3DQor44Ki44Op44KtLOODqOOCt+OCq+OCug0KK+OCouODs+ODieOCpizjg6TjgrnjgrcNCivjgqLjgrXjgqvjg68s44OS44Ot44K3DQor44Kk44Kk44OALOODnuOCs+ODiA0KK+OCpOODr+OCteODryzjg57jgrXjgq0NCivjgqTjgrfjgqvjg68s44Oe44K144KqDQor44Kk44OO44Km44KoLOODkuODreODkuODiA0KK+OCpOOCt+ODj+ODqSzjg6jjgrfjg47jg6oNCivjgqbjgqvjgrgs44K144OB44KzDQor44Km44Oh44K/44OLLOOCq+ODhOODkuOCsw0KK+OCquOCseOCv+ODiyzjgrHjg7PjgrgNCivjgqrjgqrjgrnjgq4s44Ki44Kt44OS44OtDQor44Kq44Kq44Kr44OvLOODn+OCreODkuOCsw0KK+OCq+ODiOOCpizjg57jgrXjg4jjgrcNCivjgqvjg6Is44Oe44K144Ki44KtDQor44Kv44Oe44Ks44KkLOODnuOCteOCtw0KK+OCs+ODs+ODiSzjgqLjgq3jg6kNCivjgrnjgq7jg6Ljg4gs44Kq44K144OgDQor44OP44Oe44K144KtLOODqOOCt+ODjuODqg0KK+ODgeODgCzjgrfjg6Xjg7PjgrgNCivjg4rjgqvjg6Djg6ks44Kx44Kk44K+44KmDQor44OK44Ks44K/LOODgeOCqOOCsw0KK+OCteODr+ODoOODqSzjgqvjg4HjgrMNCivjg4rjg6vjgqos44Oo44K344OO44OWDQor44OK44Oq44K/LOODpuODn+OCsw0KK+ODj+OCu+OCrOODryzjg5Ljg63jgrMNCivjg5Xjgrjjgr8s44Kx44Kk44KzDQor44OV44K444Ov44OpLOOCv+OCq+OCsw0KK+ODluODqOOCpizjg4bjg4TjgqoNCivjg5vjg6os44Kz44Km44K4DQor44Of44OK44Of44Og44OpLOODgeOCouOCrQ0KK+ODn+ODpOOCuOODnizjg4Hjg6jjg6oNCivjg6Tjg57jg4As44Oe44OqDQor44Ok44Oe44Kw44OBLOOCv+OCq+OCtw0KK+ODpOODiuOCruODj+ODqSzjg5/jg4njg6oNCivjg6jjgrfjg44s44K344Oz44Kk44OBDQor44OL44Kk44OALOOCr+ODi+ODkuOCsw0KK+OCquOCquOCpOODpOODnizjg6bjgqbjgrMNCivjgqvjg4rjgqzjg68s44Kk44OB44Ot44KmDQor44Kt44Og44OpLOODquOCqOOCsw0KK+ODhOOCq+OCtuOCrSzjg5/jg5sNCivjgqvjg6/jg4As44OK44Kq44KzDQor44Ki44K144Kr44OvLOODn+OCteOCsw0KK+OCt+ODouODhCzjg57jgrXjgqLjgq0NCivjgqrjgqss44K/44Kr44OS44OIDQor44Kq44Ks44OvLOOCs+OCueOCsQ0KK+OCv+OCpOODqSzjgrfjg6fjgqbjgqTjg4ENCivjgqTjgrfjg44s44Kt44Oo44OK44KsDQor44Kt44Of44K344OeLOOCouOCreODqQ0KK+OCteODiOOCpizjg4bjg4Tjg6QNCivjg6Tjg57jg4As44Kq44K144OgDQor44Kq44Kq44K/LOODiuOCquODn+ODgQ0KK+ODnuOCqOODgCzjg5Ljg4fjg4jjgrcNCivjgqvjgrbjg6njgrcs44Of44OE44OrDQor44K044OI44KmLOOCq+ODhOODjuODqg0KK+ODm+OCtyzjg57jg6Ljg6sNCivjgq/jg63jg4As44K344Oz44OkDQor44OE44Kr44Ov44KtLOODiOOCt+ODpA0KK+OCpOODiuOCrOOCrSzjg57jgrXjg5Ljg60NCivjgqTjg6/jg6Ljg4gs44K/44Oi44OEDQor44OE44Or44K/LOOCv+OCq+OCtw0KK+OCpOOCt+OCuOODnizjg6rjg6fjgqbjg5jjgqQNCivjg6Tjg57jg4rjgqss44OS44Ot44OI44K3DQor44Km44Ko44KtLOOCouOCreOCsw0KK+ODi+OCt+ODoOODqSzjgqLjg4TjgrMNCivjg6/jgqTjg4As44K/44OA44K3DQor44Oo44K344OALOODq+ODnw0KK+OCt+ODluODpCzjg6bjgr/jgqsNCivjgqLjg4jjgqYs44Oe44K144OO44OqDQor44Of44Ok44K/LOOCq+OCquODqw0KK+OCquOCquOCv+OCrSzjg4Tjgq7jgqoNCivjgq3jg6jjgqrjgqss44Oe44Kz44OIDQor44Kq44Kq44K/44OLLOOCv+OCq+OCtw0KK+ODi+OCt+ODr+OCrSzjg4rjgqrjg58NCivjg4vjgrfjg6Tjg54s44K/44Kr44K3DQor44Of44K344OeLOOCv+OCq+ODpuOCrQ0KK+OCq+ODiOOCpizjg5Ljg63jgrcNCivjgqTjg57jgqos44Of44K644ObDQor44Kq44K244KtLOOCs+OCpuOCuA0KK+OCu+OCreODpCzjg57jgrXjg6bjgq0NCivjg4Tjgq/jg4As44OO44OW44Om44KtDQor44Of44Oo44K3LOODjuODluODnuOCtQ0KK+ODqOOCt+ODnyzjgr/jgqvjg6bjgq0NCivjgrXjgrXjgqrjgqss44K/44Kr44K3DQor44Kq44K344OeLOODgeODj+ODqw0KK+OCr+ODnOOCvyzjg4HjgrrjgrMNCivjgrfjg5Djg6Tjg54s44K344Ol44Km44K+44KmDQor44Kq44Kq44Kv44OcLOODiOODiuODnw0KK+OCv+ODgeODjizjgrjjg6Xjg7MNCivjg6/jg4As44Of44OB44OoDQor44Oe44OE44K344K/LOODnuOCteODouODqg0KK+OCs+ODoOODqSzjg6Tjgrnjg5LjgrMNCivjg57jgq3jgrfjgr8s44Kx44Kk44KzDQor44Ki44Kr44KqLOODpOOCueODkuODrQ0KK+ODj+OCt+ODouODiCzjg5Ljg4jjgrcNCivjgqrjgqrjg44s44Kr44K644KqDQor44K744Kt44Oi44OILOODqOOCt+OCqg0KK+ODnuOCqOODgCzjg4Hjgqvjg6kNCivjg5/jg4Tjg5vjg6os44OK44Kq44KtDQor44Of44OK44Of44K+44OOLOODnuOCteOCrQ0KK+OCu+OCrOODryzjgqvjgqrjg6oNCivjgrnjgrrjgq0s44OI44Oo44K4DQor44Kt44K/44Ks44OvLOODqOOCt+OCv+OCqw0KK+ODqOOCt+ODpOOCuSzjgrjjg63jgqYNCivjg6Tjg57jg6Ljg4gs44Oe44OqDQor44Kr44OI44KmLOODkuODreOCtw0KK+OCq+ODr+OCq+ODnyzjg6jjgqYNCivjg57jgq3jg44s44OK44Kq44KtDQor44K544K644KtLOODnuOCteOCqg0KK+ODleODq+OCteODryzjgrXjg4jjgrcNCivjg4/jg6Tjgrcs44K4DQor44Kk44Oe44OL44K3LOODiOOCt+ODkuOCsw0KK+ODn+ODpOODouODiCzjg6bjgqsNCivjg57jgq0s44Kv44OL44Ki44KtDQor44Kz44Kk44OHLOOCteODmw0KK+ODr+OCv+ODiuODmSzjg57jgrXjgrMNCivjgqrjgqrjg4/jgrcs44OS44OI44K3DQor44Ki44Kr44KqLOOCouOCreOCqg0KK+OCouOCteOCpCzjgqvjgrrjgrMNCivjgqTjg57jgqQs44K/44Kr44K3DQor44Kt44OpLOODnuOCteODkuOCsw0KK+ODi+OCt+ODoOODqSzjg4bjg6vjgq0NCivjg6jjgrfjgqvjg68s44OI44K344Om44KtDQor44Of44OK44OfLOOCseODs+OCuA0KK+ODhOODq+OCvyzjg47jg6rjgqoNCivjg4rjgqvjg6Djg6ks44K444Ol44Oz44Kk44OBDQor44K/44OK44KrLOOCseODs+OCuA0KK+ODnuODhOOCpuODqSzjgr/jgrHjgrcNCivjgrnjgq7jgr8s44K4DQor44Kr44Ov44KkLOODiOOCt+OCqg0KK+OCs+OCr+ODnCzjgrXjg4Tjgq0NCivjg4Tjg4As44Oe44Kz44OIDQor44Of44Ok44K/44KxLOODiOOCt+OCv+OCqw0KK+OCr+ODreOCteODryzjg6jjgrfjgqvjgroNCivjgrnjg5/jg5Ljg6ks44Oe44K144OS44KzDQor44K/44Kr44KtLOODnuOCteOCqg0KK+OCpOOCt+ODiCzjgrPjgqbjgq0NCivjg6Tjg57jg4As44Oi44OI44Kr44K6DQor44OL44Kk44OELOODjuODluOCouOCrQ0KK+OCpOODr+ODoOODqSzjgqvjg7PjgrgNCivjgqvjg6/jg4rjg5ks44Oo44K344OS44OtDQor44OK44Ks44KkLOODkuODreODpuOCrQ0KK+ODpOODnuODjSzjg4HjgqLjgq0NCivjgqTjg57jgqQs44K/44Kr44Om44KtDQor44OK44Kr44KqLOOCpOOCteOCqg0KK+OCquOCt+OCreODqizjg5Xjg5/jg4/jg6sNCivjgqTjgrfjgqvjg68s44K444Ol44OzDQor44Kq44Kr44K444OeLOOCuOODpeODsw0KK+OCquOCquODi+OCtyzjg57jgrXjg4/jg6sNCivjgrnjgrrjgq0s44OG44OEDQor44Ok44Oe44OK44KrLOOCteODhOODnw0KK+OCv+ODi+OCsOODgSzjgqvjgrrjg5Ljg60NCivjgqvjg6/jg5ks44OI44Kt44KqDQor44Kz44Oz44OOLOODn+OCrQ0KK+OCteODiOOCpizjg6Tjgrnjg5Ljg60NCivjgr/jgqvjg6Tjg54s44K344Oz44Kk44OBDQor44Oi44Oq44Of44OBLOOCpOOCv+ODqw0KK+ODm+ODquOCq+ODryzjgqvjg4Tjg58NCivjg5Xjgq/jgqQs44K/44Oe44KzDQor44Kt44K/44Og44OpLOOCouOCreODqQ0KK+ODiuOCq+ODj+ODqSzjg5Ljg63jg58NCivjgqTjg4HjgqQs44OS44OH44OO44OqDQor44Kk44Ov44K1LOOCq+ODqOOCsw0KK+OCueOCuuOCrSzjgrfjg6Xjg7PjgrgNCivjg6jjg43jgr/jg4ss44Kr44OE44OV44OfDQor44K/44OOLOOCv+OCseOCtw0KK+OCt+ODkOOCvyzjg5Ljg4fjg6gNCivjgqTjg47jgqbjgqgs44Oe44K144OO44OqDQor44Kk44K344Kr44OvLOODiOOCt+OCqg0KK+OCreOCtyzjg57jgrXjg58NCivjgqLjg6/jgqgs44Ki44OE44K3DQor44K/44Kx44KqLOODqOOCt+OCouOCrQ0KK+OCreODjuOCt+OCvyzjgqvjgrrjg5LjgrMNCivjg4Tjgqvjg4As44OV44Of44Ki44KtDQor44Ki44Oq44OJ44OhLOODiOOCt+ODpuOCrQ0KK+OCreODg+OCq+ODryzjg4jjgrfjgqLjgq0NCivjgqrjgqzjgrXjg6/jg6ks44OS44K144Kr44K6DQor44OK44Ks44K7LOOCv+OCq+ODkuODrQ0KK+ODj+ODq+ODpOODnizjgqLjg4Tjg5LjgrMNCivjgqrjgros44Ok44K544KqDQor44Kz44K144KrLOODiOOCt+OCq+OCug0KK+OCt+ODqeOCteOCrSzjg4jjgqrjg6sNCivjgr/jg4rjg5ks44OE44OI44OgDQor44Kk44Kx44Ks44OfLOODhOODqOOCtw0KK+OCs+ODkOODpOOCtyzjgrjjg6Xjg7PjgqTjg4ENCivjg57jg4Tjg5Djg6ks44OK44Kq44OIDQor44OK44Kr44Ks44OvLOODouODquODkuODrQ0KK+OCquOCrOODryzjgrvjgqTjgrgNCivjg6jjgrfjg4As44Oe44K144OO44OWDQor44Kk44KxLOOCteODgOODjuODlg0KK+OCv+ODi+OCsOODgSzjg57jgrXjg5/jg4ENCivjg57jgqjjg4As44OS44Ot44K3DQor44OS44Op44OOLOOCv+OCq+ODpuOCrQ0KK+OCt+ODn+OCuizjgq3jg5/jgrMNCivjg6Tjg57jg4As44Ki44Kt44OI44K3DQor44K/44OK44KrLOODkuODreOCouOCrQ0KK+OCs+ODnuODhOOCtuOCrSzjg57jg6Ljg6sNCivjgqvjg4jjgqYs44Oe44K144Kr44K6DQor44Kq44OvLOODjuODquOCsw0KK+OCpOODr+ODoOODqSzjg5Ljg63jgr/jg4ANCivjgqTjg6rjgqgs44Kr44K644Om44KtDQor44Ki44Kr44Ok44OeLOODnuOCteODpuOCrQ0KK+OCouOCreODouODiCzjg5Ljg63jgqLjgq0NCivjgqvjg5/jg6Djg6ks44Ki44Kt44OS44KzDQor44K544Of44K/LOOCq+OCquODqw0KK+ODj+ODnuOCteOCrSzjgqLjg4TjgrcNCivjg6Tjgrnjg4As44Oe44Oi44OrDQor44K/44Kx44Og44OpLOODn+OCreODpA0KK+ODoOODqeOCq+ODnyzjg4jjg5/jg4TjgrANCivjg4rjgqvjgrjjg54s44OS44K144OI44OiDQor44Oi44Oq44Oi44OILOOCs+OCpuOCuA0KK+OCu+OCreOCsOODgSzjgr/jgqvjg6bjgq0NCivjg4rjgqvjgrjjg54s44Oe44K144OS44KzDQor44Kt44Ks44OvLOODkuODreODkuOCtQ0KK+OCv+OCq+ODkuODqSzjgr/jgqvjgrcNCivjg6Ljg4Hjg4As44Ki44OE44K3DQor44Kr44Oh44Ok44OeLOOCv+OCq+OCtw0KK+OCquODpOODnuODgCzjg57jgrXjg5LjgrUNCivjgr/jg4rjgqss44OG44Or44OS44K1DQor44Ob44Oz44OeLOOCt+ODs+OCuA0KK+OCreODjuOCt+OCvyzjg6Tjgrnjg5LjgrMNCivjgrfjg47jg4Tjgqss44OO44OW44K344KyDQor44Ki44Kk44OP44OpLOODpOOCueODleODnw0KK+ODiuOCrOODnuODhCzjgqjjgqTjgrgNCivjg4jjg6jjg6Djg6ks44Oe44K144Ki44KtDQor44OS44Op44OOLOOCv+OCq+OCtw0KK+OCreODoOODqSzjgrjjg6Xjg7MNCivjgqTjgrHjg4As44K744Kk44K4DQor44Kk44K344OP44OpLOODpuOCpuOCsw0KK+ODjuOCsOODgSzjg57jgrXjg6sNCivjgrPjgrHjg4Qs44Of44OE44Oe44K1DQor44Kq44Kv44Ok44OeLOOCouODhOODkuOCsw0KK+ODj+ODnuOCsOODgSzjgrfjg7PjgrgNCivjg4TjgrjjgrXjgqss44OS44OH44Ki44KtDQor44Kk44OB44Kr44OvLOOCteODiOODqw0KK+ODqOOCt+ODgCzjgrvjgqTjgrQNCivjg6Tjg57jg4As44Oo44Km44Kk44OBDQor44K344Of44K6LOODpOOCueOCtw0KK+OCteOCq+OCrOODnyzjg47jg6rjgqvjgroNCivjgrPjgrnjgq4s44OS44K144OS44KzDQor44OL44K344OALOOCu+OCpOOCuA0KK+OCpOOCpOODgCzjgqvjg4Tjg6kNCivjgqbjg4Hjg4As44Ok44K544OfDQor44Oi44OI44Ok44OeLOODgeODj+ODpA0KK+ODn+ODpOODouODiCzjgqTjgq/jg6gNCivjgrPjg5Djg6Tjgrcs44Ok44K544K3DQor44Kr44OI44KmLOODkuODreODpuOCrQ0KK+OCt+ODqeOCpCzjgrXjg4jjgrcNCivjg4/jgq7jg6/jg6ks44Kz44Km44K4DQor44Ok44Oe44Km44OBLOODpuOCreODkuODhw0KK+ODn+ODhOODj+OCtyzjgqvjgqrjg6oNCivjg6Ljg7Pjgrgs44Oo44Km44Kk44OBDQor44K/44Kt44Oi44OILOODjuODquOCsw0KK+OCquOCr+ODgCzjgrfjg6XjgqbjgrgNCivjg4Tjgqvjg6Ljg4gs44K344Ol44Km44K4DQor44Og44Kz44OP44OpLOODpOOCueOCpOOCrw0KK+OCteODq+ODpCzjg5/jg4HjgqoNCivjgqrjgqvjgrjjg54s44OI44K344OS44KzDQor44Ob44K344OOLOODkuOCteODiA0KK+ODm+OCtyzjg5Ljg63jg5Xjg58NCivjg5Xjgrfjg58s44Kz44Km44Kk44OBDQor44K/44Kr44OP44K3LOOCv+ODhOODpA0KK+ODi+OCt+ODpOODnizjgrfjg7PjgrgNCivjg4Tjg6vjg57jg4Es44K344On44Km44Kk44OBDQor44OI44Of44K/LOODiuODq+ODiA0KK+OCpuODgeODgCzjg4jjgqrjg6sNCivjgqrjgqrjgr/jgqss44Om44Km44KzDQor44K144Kr44KkLOOCv+OCq+ODkuOCtQ0KK+OCveOCrOODmSzjgqvjg4Tjg58NCivjg6/jg4As44Kx44Oz44K4DQor44Kz44K144KrLOODnuOCteODnw0KK+OCouOCvSzjgqLjgrHjg58NCivjgqLjg6njgqQs44OI44K344OP44OrDQor44K544Ku44Og44OpLOOCt+OCsuOCqg0KK+OCouOCreODqOOCtyzjgqvjgrrjgqoNCivjgqLjgrXjgqvjg68s44OE44OI44OgDQor44Ov44OALOOCteOCq+OCqA0KK+OCpOOCseODgCzjgrPjgqbjgqTjg4ENCivjgqrjgqvjg6Ljg4gs44Oq44On44Km44K4DQor44Ki44Kq44KtLOODnuOCteODqw0KK+OCpuOCqOOCteODryzjg4Tjg6jjgrcNCivjgqbjg6Tjg54s44OS44OH44Ki44KtDQor44OK44Kr44OP44OeLOOCueOCueODoA0KK+OCq+ODr+ODouODiCzjg57jgrXjg6bjgq0NCivjgrnjgqjjg57jg4Qs44K444Ol44Oz44K4DQor44OK44Ks44KkLOOCteODiOOCtw0KK+ODiuOCq+ODj+ODqSzjg6bjgqbjgr7jgqYNCivjg4rjg6/jgr8s44OK44Oq44Ki44KtDQor44Kr44OE44K244OvLOODkuODreOCtw0KK+ODpOODnuOCpuODgSzjg5/jg6bjgq0NCivjgqLjgqvjgq7jgrcs44OE44Oo44K3DQor44Kv44K144K644OfLOODiOOCt+ODkuOCsw0KK+ODm+OCq+ODqizjg5Ljg63jgrcNCivjgqvjg4jjgqYs44Kq44K144OgDQor44Kt44Oq44KmLOODkuODreOCrQ0KK+OCquOCrOODryzjg57jgrXjg4gNCivjgr/jg4rjgqss44Oe44K144Oo44K3DQor44Ki44Kk44Og44OpLOODhOODiOODoA0KK+OCpOOCrOODqeOCtyzjg57jgrXjg4gNCivjgqvjg6/jg6/jgq0s44K/44Kr44Of44OBDQor44Oe44Ko44K144KrLOODiOODouODn+ODhA0KK+ODnuODhOOCt+ODnizjgqLjg4TjgrcNCivjg57jg4Tjg6Ljg4gs44OS44OH44OIDQor44Kr44K/44KkLOODnuOCteODkuODrQ0KK+OCs+OCuOODnizjg57jgrXjgqLjgq0NCivjg4Tjgrjjg6Ljg4gs44OI44Kq44OrDQor44OK44Ov44K/LOOCteODiOOCtw0KK+ODleOCuOOCv+ODiyzjgqvjgrrjg5LjgrMNCivjgq3jgrss44OG44OE44Ot44KmDQor44K144Kr44Kw44OBLOOCuOODpeODs+OCpOODgQ0KK+OCueOCuuOCrSzjg4jjgrfjg6bjgq0NCivjg4/jg57jgrXjgq0s44Oe44K144OS44OtDQor44Oo44K344OALOODkuODiOOCtw0KK+ODm+ODg+OCvyzjgrfjgrLjg5Ljg4gNCivjg57jgrnjgrMs44OS44K144KqDQor44K/44Kx44OK44KrLOOCs+OCueOCsQ0KK+OCpOOCt+OCpCzjg4/jg6vjgq0NCivjgr/jgrXjgqss44OS44Ot44K3DQor44Oe44OE44OALOODnuOCteODkuODrQ0KK+ODj+OCvyzjgr/jgqvjgrcNCivjgqLjgq3jg6Tjg54s44Om44K/44KrDQor44K/44Kr44OP44K3LOODpOOCueODkuODiA0KK+ODpOODnuOCq+ODryzjgrfjg6fjgqbjgrgNCivjg6jjgrPjg4Es44Oe44K144OS44OtDQor44Oo44ON44K/44OLLOOCreOCpOODgeODreOCpg0KK+ODleOCuOODjizjg6bjgqbjgrnjgrENCivjg4/jgrvjgqzjg68s44Kr44OE44OI44K3DQor44OV44K444K/LOODnuOCteODpuOCrQ0KK+OCouODs+ODqeOCryzjg57jgrXjgrMNCivjg4/jgrfjg6Ljg4gs44OO44OW44Om44KtDQor44Kk44OK44OALOODrOOCpOOCsw0KK+ODpuOCsizjg57jgrXjg6jjgrcNCivjgqTjg57jg4As44Kk44K644OfDQor44K144Kr44Oi44OILOOCq+OCuuODkuOCtQ0KK+ODiOODqOODiuOCrCzjg6Tjgrnjg5Ljg60NCivjg4/jgrfjg6Ljg4gs44OG44OE44KqDQor44OP44OK44KkLOODqOOCt+ODjuODqg0KK+OCt+ODn+OCuizjgr/jg4TjgqoNCivjg4rjgqvjg6Djg6ks44Oo44K344OP44OrDQor44Kr44K444Og44OpLOODqOOCt+ODkuOCsw0KK+OCpOOCt+OCrOOCrSzjgrHjg7Pjgr7jgqYNCivjg4/jg4Pjg4jjg6os44Oe44K144KqDQor44Ki44Oe44OOLOODquODp+OCpg0KK+ODn+OCq+ODnyzjgqvjgqrjg6sNCivjg5Xjg6vjg4bjg6ks44Oe44Om44OfDQor44Oe44Of44OkLOODkuODh+OCrQ0KK+ODhOODq+ODjizjg6Djg4TjgrMNCivjgqLjgrXjgqQs44Ok44K544KtDQor44OO44Og44OpLOOCt+OCsuOCqg0KK+ODqOOCs+ODpOODnizjgrfjg7PjgrgNCivjgqTjgrHjg4As44Om44K/44KrDQor44Ki44Oz44OJ44KmLOOCouOCreOCqg0KK+OCquOCq+ODpOOCuSzjg6TjgrnjgrMNCivjgrTjg4jjgqYs44OS44OH44Ki44KtDQor44Kr44Ov44K344OeLOOCv+OCq+OCsw0KK+ODj+OCruODr+ODqSzjgqjjg6oNCivjgqLjgr/jg6njgrcs44Om44Of44KzDQor44K/44Kr44Ok44OeLOODiOOCt+ODkuODiA0KK+ODi+OCt+ODpOODnizjg4jjgrfjg6bjgq0NCivjgqjjg4HjgrQs44K344Oz44Kk44OBDQor44Ok44Oe44K244KtLOODqOOCt+ODkuODrQ0KK+ODoOODreODpCzjg4bjg4TjgqoNCivjgq3jg6Djg6ks44Om44Kt44KqDQor44OK44Kr44OP44OpLOODleODn+OCqg0KK+OCpuOCqOODjizjgr/jgqvjgrcNCivjg6jjgrfjg4As44Kx44Oz44K/DQor44OE44Kr44Oi44OILOOCv+ODgOOCtw0KK+OCquOCtuOCrSzjg4jjgqrjg6sNCivjgqLjgrfjgqvjg68s44Ok44K544K344KyDQor44ON44Ku44K3LOODiOODouODjuODqg0KK+OCreODpeOCpuODjizjgrfjg6XjgqbjgqTjg4ENCivjgrXjg4jjgqYs44Oo44K344OS44OHDQor44Kk44OO44Km44KoLOOCq+OCuuODkuOCsw0KK+OCreOCr+OCuuODnyzjg57jgrXjg6sNCivjg57jg4Tjg6Ljg4gs44OA44Kk44K144KvDQor44OP44Ok44K3LOOCv+OCq+OCqg0KK+ODleOCr+OCquOCuCzjgqvjg7PjgrgNCivjg4rjg6vjgrss44Kx44Oz44K/44Ot44KmDQor44Oe44OE44Oi44OILOODnuOCteOCrQ0KK+ODouODqizjg57jgrXjgrcNCivjg5/jgq0s44OO44OW44KqDQor44OK44Kr44K/44OLLOODqOOCt+OCouOCrQ0KK+ODn+ODpOOCrOODryzjg5Xjg5/jg47jg6oNCivjgqLjg6rjg6jjgrcs44Kk44Kv44KqDQor44K344Op44KkLOODqOOCt+ODpuOCrQ0KK+ODn+ODiuODnyzjg57jgrXjg6jjgrcNCivjg4jjg6rjgrTjgqgs44OV44K444KqDQor44Kz44K544KsLOOCv+ODgOOCtw0KK+ODhOOCuOODjizjgqvjgrrjg5Ljg60NCivjgqrjgrDjg6ks44Ok44K544OS44OtDQor44Kq44Oq44K/LOODgeOCq+OCtw0KK+OCouODn+ODouODiCzjgrjjg6Xjg7PjgqTjg4ENCivjgqrjgrXjgqss44OI44Kq44OrDQor44OP44Ok44K3LOODqOOCt+ODkuODrQ0KK+ODn+ODiuODnyzjg5/jg47jg6sNCivjg6jjgrfjg4As44OI44K344OS44KzDQor44OL44K344OP44OpLOODqOOCt+OCqg0KK+OCquOCr+OCrOODryzjg57jgrXjg4jjg6INCivjg4Tjgrgs44OG44Or44Om44KtDQor44OK44Kr44KkLOOCv+OCq+OCtw0KK+ODi+OCt+ODoOODqSzjg4TjgrDjgqoNCivjg4vjgr/jg4rjgqQs44Kx44Oz44K0DQor44Kv44OJ44KmLOODkuODreOCtw0KK+OCteOCpCzjgr/jgqvjgqoNCivjgrfjg6fjgqYs44Oe44OK44OWDQor44Kk44OO44Km44KoLOOCq+OCquODqw0KK+OCv+ODi+OCsOODgSzjg5Ljg63jgr/jg40NCivjg4rjgqvjg4vjgrcs44K344Oz44K4DQor44Kq44Kq44Oi44OqLOODkuODreODpuOCrQ0KK+OCr+ODnuOCrOOCpCzjgr/jgqvjg6bjgq0NCivjgqTjgrfjgqLjgqQs44OI44Oo44Kr44K6DQor44OP44Ku44OP44OpLOOCq+OCuuODjuODqg0KK+OCv+OCrOOCvyzjgrHjg7PjgrgNCivjgrnjgrrjgq0s44Of44OB44KqDQor44Kv44OcLOOCvOODs+OCteOCrw0KK+OCq+ODiuOCpuODgSzjgrfjg7Pjg6QNCivjg4vjgrfjgqos44OS44OH44KtDQor44Kk44OK44OALOODkuODh+ODjuODlg0KK+OCv+OCseOCpOODgSzjgrfjg7PjgrgNCivjgqLjg7Pjg4njgqYs44Oe44Kz44OIDQor44Oe44OE44OK44OfLOOCt+ODp+OCpuOCpOODgQ0KK+ODn+ODiuOCr+ODgSzjgrfjg6XjgqbjgrXjgq8NCivjgqvjg4rjgqbjg4Es44OK44Kq44KtDQor44Kq44Kq44Kk44Ok44OeLOODjuODnOODqw0KK+ODnuOCueODgCzjgrfjg6fjgqbjgrgNCivjg6Tjgq7jg4/jg6ks44OI44K344KqDQor44Of44K644OOLOOCseODs+OCuA0KK+ODjuODluOCr+ODnyzjg4jjgqrjg6sNCivjg4rjg4As44K/44Kr44Ki44KtDQor44K/44Kx44K/44OLLOODleODiOOCtw0KK+OCpOODnuOCpOOCuuODnyzjgqTjg4Hjg63jgqYNCivjgqTjg4rjg4As44Kk44K144KqDQor44Kk44Oe44OLLOOCv+OCq+ODleODnw0KK+OCquOCrSzjg57jgrXjg5Ljg60NCivjg5Xjgq/jgrfjg54s44Oo44Km44K544KxDQor44Kk44Kk44KqLOODkuODreODiOODog0KK+OCpOOCt+ODgCzjgqvjg4Tjg6QNCivjg5Ljg6njgr8s44Kz44Km44K4DQor44Kk44K/44Ks44KtLOOCq+OCuuODkuODrQ0KK+ODpOODnuODleOCryzjgrXjg4jjgrcNCivjgrXjg4jjgqYs44OO44Oq44KqDQor44OK44Kr44Ks44OvLOODquODp+OCpg0KK+OCquOCteOCqyzjgrfjg6XjgqbjgqTjg4ENCivjgqrjgqTjgqvjg68s44OO44OW44Ki44KtDQor44Kr44K344KqLOODqOOCt+ODkuODrQ0KK+ODm+OCt+OCtuOCrSzjgrfjgrLjgq0NCivjgrvjgq3jgrjjg54s44Kz44Km44K4DQor44Kq44Kr44Oe44KoLOODjuODquODkuODrQ0KK+OCteODiOOCpizjgr/jgqvjgrcNCivjgrPjgqTjg4cs44K/44Kr44OK44KqDQor44K/44Kr44OP44K3LOOCu+OCpOOCuA0KK+OCquOCrOODryzjgrPjgqbjgqTjg4ENCivjg4bjg6njgrfjg54s44K/44Kv44KqDQor44Ok44Oe44K344K/LOODnuOCteOCouOCrQ0KK+ODjuOCuyzjg5Ljg4fjg6bjgq0NCivjg57jg4Tjg57jgqgs44Ki44Om44OfDQor44Oo44K344K/LOODjuODquOCouOCrQ0KK+ODoOODqeOCvyzjg4jjgqrjg6sNCivjg4/jg6ks44OO44Oq44OS44KzDQor44Ok44Oe44Km44OBLOOCseODs+OCuA0KK+OCq+ODnyzjgqvjg4Tjg6bjgq0NCivjgrnjgqzjgqQs44K/44OE44Om44KtDQor44K/44Kr44OOLOODqOOCt+ODjuODlg0KK+ODiOOCs+ODrSzjg6jjgrfjg5Ljg60NCivjgrnjgrrjgq0s44K544K544OgDQor44K144K144KtLOOCouODhOODpuOCrQ0KK+ODhOODjuODgCzjg4bjg4Tjg63jgqYNCivjg6Tjg57jgrXjgq0s44OG44OE44OkDQor44Of44Km44OpLOOCq+ODhOODnw0KK+OCquODgOOCruODqizjgqLjg4TjgrMNCivjg4/jg6Tjgrcs44K344Oz44OB44On44KmDQor44OI44Of44Kq44KrLOODkuODiOOCtw0KK+OCpOOCsOODgSzjgrvjgqTjgqTjg4ENCivjgrPjg7Pjg4ks44K/44Kr44K3DQor44Kv44OcLOODkuODh+OCqg0KK+OCr+ODqeODjOOCrSzjgq3jg6fjgqbjgrMNCivjg4jjg5/jg57jg4Qs44OK44Kq44KzDQor44Kv44Ot44Kr44OvLOODnuOCteOCouOCrQ0KK+ODjuOCtuODryzjgrnjg5/jgqoNCivjgqvjg6/jgrXjgq0s44Kv44OL44Ki44KtDQor44K/44Kx44OALOOCq+ODhOODpA0KK+OCt+ODjuODj+ODqSzjgqLjgq3jg5Ljg60NCivjg5Xjg6vjg6Qs44K344Ky44OrDQor44OK44Kr44Og44OpLOOCteODiOODqw0KK+ODpOOCuOODnizjg4jjgqrjg6sNCivjg4vjgrfjgqzjgq0s44Kt44Oo44K3DQor44OK44Kr44Ks44OvLOOCveOCpg0KK+ODkuODqeODpOODnizjgrfjg6Xjg7PjgqTjg4ENCivjg6Tjg57jgrDjg4Es44Og44OE44OS44OtDQor44Oo44K344Og44OpLOODpuOCpuOCuA0KK+ODhOODgCzjgr/jgqvjg6bjgq0NCivjgqvjg4Tjg6njgqQs44Ov44K/44OrDQor44Of44OK44KkLOODiOOCt+OCq+OCug0KK+OCv+OCreOCsOODgSzjgqvjgrrjgqoNCivjg6/jgrHjg5ks44Oo44K344OS44OtDQor44OL44K344Kr44OvLOODnuOCteODpA0KK+OCt+ODqeOCrOOCrSzjg5Ljg63jgqLjgq0NCivjg5Djg5As44Oe44K144Kr44K6DQor44Ki44Kr44OqLOODquODp+OCpuOCuA0KK+OCouODmSzjgr/jgq/jg6QNCivjgqvjgqQs44Kv44OL44OS44OtDQor44Kq44Kq44Oi44OqLOODkuODh+OCq+ODhA0KK+OCueOCuuOCrSzjgr/jgqvjgrcNCivjg4rjgqzjgrXjg68s44OS44OI44K3DQor44K144Ov44OALOOCqOODn+OCsw0KK+OCouOCuuODnizjg47jg5bjg6bjgq0NCivjgqrjg44s44OS44OH44KtDQor44Kr44Ov44OL44K3LOODjuODluODkuODhw0KK+ODnuODiuODmSzjgqvjgrrjg5Ljg60NCivjgqLjg6rjg6Tjg54s44Om44Km44K4DQor44OL44K344Kr44OvLOOCreODqOOCtw0KK+OCouODhOODnyzjgrfjg6XjgqbjgrgNCivjgqTjg4jjgqYs44OS44Ot44Om44KtDQor44OS44Ot44K/LOODiOOCt+ODpA0KK+ODm+OCq+OCvuODjizjgqvjgrrjg4gNCivjg5vjgrfjg44s44Ok44K544OS44OtDQor44Ok44Oe44Kw44OBLOODnuOCs+ODiA0KK+OCouOCrOOCvyzjgrPjgqbjgrgNCivjg57jg6vjgqos44Oo44K344Om44KtDQor44Kz44Kk44OHLOODkuODreOCouOCrQ0KK+OCq+ODn+ODoOODqSzjg57jgrXjg5Ljg4cNCivjgrXjgqTjg4jjgqYs44OK44Kq44KtDQor44OV44Kv44Of44OELOOCouODhOOCtw0KK+ODkuODqeODpOODnizjg5Ljgqvjg6sNCivjgrXjgqTjg4jjgqYs44OG44OE44OkDQor44Kk44Kx44KqLOODn+ODjuODqw0KK+ODleODq+OCq+ODryzjgrjjg6Xjg7PjgqTjg4ENCivjgqTjgqTjg4As44OS44Ot44Ki44KtDQor44Of44Ok44K244KtLOODouODiOODkuODrQ0KK+ODqOOCt+ODgCzjg6Tjgrnjg6bjgq0NCivjgq3jgq/jgr8s44Ko44Oq44KzDQor44OB44OQLOODhuODhOOCqg0KK+ODiOODquODpOODnizjg6rjg4TjgqoNCivjgqjjgrbjg68s44Oq44Ol44Km44K/44Ot44KmDQor44Kq44Kq44OQLOODqOOCt+OCv+ODnw0KK+ODpOODnuODouODiCzjgqrjgrXjg6ANCivjg4vjgrfjgqvjg68s44Oe44K144OO44OWDQor44Ko44Oz44OJLOODnuOCteODj+ODqw0KK+ODleOCr+OCpCzjgqrjgrXjg6ANCivjg4/jg57jg44s44Oo44Km44Kk44OBDQor44Kt44K/44OP44OpLOOCseODs+OCuOODp+OCpg0KK+OCteODiOOCpizjg6bjgq3jg5Ljg60NCivjg57jg4Tjgqos44Oe44K144OV44OfDQor44OI44Oo44K/LOODkuODh+ODpA0KK+ODkuODqeODouODiCzjg4jjgrfjg5Ljg4cNCivjg6Tjg57jg6Ljg4gs44Kz44Km44K/44Ot44KmDQor44OP44Oe44OALOODnuODpuODnw0KK+OCpOODr+OCq+ODnyzjg5/jg47jg6sNCivjgq/jg5ws44OG44OE44KqDQor44Ko44Oz44OJLOOCq+OCuuODkuODrQ0KK+OCq+OCsuODpOODnizjg57jgrXjg47jg6oNCivjg4vjgqTjg6Qs44OI44Oi44Om44KtDQor44Kz44Km44OBLOODpuOCpuOCueOCsQ0KK+OCouODgOODgSzjgrfjgrLjg6bjgq0NCivjg4/jg6Tjgrcs44K344Ol44Oz44K4DQor44OK44Kr44OOLOODnuOCs+ODiA0KK+OCpOOCt+ODj+ODnizjg57jgrXjg5Ljg60NCivjgrPjgq/jg5ws44Oq44Ol44Km44Kk44OBDQor44Kr44Ov44OOLOODj+OCuOODoQ0KK+ODiuOCq+OCuOODnizjg47jg6rjg5LjgrMNCivjgr/jgqTjg6ks44OE44Oo44K3DQor44K/44Kx44KuLOODquODhOOCqg0KK+ODouODquOCt+ODnizjg4jjg6LjgrMNCivjg4rjgqvjg6Djg6ks44OS44Ot44Ki44KtDQor44OO44Kw44OBLOODkuODreOCrQ0KK+OCouODqeOCrSzjg6Tjgrnjg4bjg6sNCivjgqLjg6ks44OS44Ot44K3DQor44Kk44OI44KmLOODiuOCquOCsw0KK+ODj+ODpOOCteOCqyzjg5Xjg4jjgrcNCivjgrPjg4Tjgqss44Oe44K144Kr44K6DQor44K/44Kx44Km44OBLOODkuODreOCtw0KK+OCpOODr+OCvyzjgr/jgqvjgrcNCivjg57jgqjjg4As44Oo44K344KqDQor44Ob44K944Kr44OvLOODnuOCteODkuODrQ0KK+OCouODqeOCpCzjg6Tjgrnjg5Ljg60NCivjgqrjgqrjgq/jg6ks44Kr44Oz44K4DQor44K/44Kx44Kz44K3LOOCouODhOOCtw0KK+ODpOODnuOCsOODgSzjgrHjg7PjgrgNCivjgrfjg5/jgros44Kr44OE44OI44K3DQor44Kk44OI44KmLOODqOOCt+ODhOOCsA0KK+OCpOOCuuODnyzjgqvjg43jg5/jg4QNCivjgrTjg4jjgqYs44K944Km44K/44Ot44KmDQor44Kq44Kq44OE44OcLOOCq+OCuuODnw0KK+OCq+ODn+OCs+OCrOODryzjgrfjg7PjgqTjg4ENCivjgr/jgrHjgqQs44K144OI44KzDQor44Of44Ok44OP44OpLOODnuOCteOCtw0KK+OCouODr+OCuCzjgqLjg4TjgqoNCivjgqbjgrfjg63jg4As44Kr44Kq44OrDQor44Oi44Oq44Kk44K644OfLOODj+OCuOODoQ0KK+ODiuOCrOODjizjgqLjg4TjgrcNCivjgr/jg4rjgqss44Og44ON44Om44KtDQor44OV44Kr44KoLOOCseODs+OCuA0KK+ODleODq+ODpCzjg5/jgrXjgqoNCivjg5/jgrrjg5Ljgq0s44Oo44K344KqDQor44Kv44OcLOODn+ODhOODqOOCtw0KK+OCv+OCsOODgSzjg5Xjg5/jgqLjgq0NCivjg4rjgqvjgqos44OE44Ku44OIDQor44Ok44Oe44K344K/LOODpuOCpuOCpOODgQ0KK+OCr+ODreOCrSzjgrfjg6fjgqbjgrQNCivjg57jg4Tjg4As44Kx44Oz44Kk44OBDQor44Kq44OA44K444OeLOODiuODm+ODnw0KK+ODm+ODqizjg6bjgq3jgqoNCivjgr/jg4vjgrDjg4Es44OE44ON44Ok44K5DQor44Ki44Op44KkLOODiOOCt+ODjuODqg0KK+OCtOODiOOCpizjg4bjg4TjgrgNCivjg4jjg43jgqzjg68s44OO44Oq44Om44KtDQor44Oi44Oq44K/LOOCv+OCq+OCsw0KK+ODleODq+OCq+ODryzjgrfjgrLjgqoNCivjg6bjgq0s44Oo44K344OO44OqDQor44K344Op44Kk44K3LOOCv+OCq+ODkuODrQ0KK+OCpOOCseODpCzjgrXjg4HjgrMNCivjg6/jgr/jg4rjg5ks44K/44OE44Kq44KtDQor44K/44OL44Kw44OBLOOCs+OCpuOCpOODgQ0KK+ODnuOCueODgCzjgrfjg47jg5YNCivjg5/jgrrjgrDjg4Es44K444Ot44KmDQor44OP44Ok44Of44K6LOODpuODnw0KK+ODm+OCq+ODqizjgqLjgq3jg5LjgrMNCivjgqTjgrfjgqQs44OO44Oq44OS44KzDQor44K344Op44Kk44K3LOODnuOCteODkuOCsw0KK+OCt+ODouOCq+ODr+ODqSzjgrfjgrLjg5Ljg60NCivjg6Ljg6rjg6Ljg4gs44OI44Oi44KzDQor44Kk44OI44KmLOODkuODreOCtw0KK+OCquOCquODpCzjgrHjgqTjgrgNCivjg5/jg6jjgrcs44Of44OO44OrDQor44K344OQ44K/LOODjuODquODkuODrQ0KK+OCv+ODs+OCtuODsyzjg4jjg6Ljg5LjgrMNCivjgqTjg6/jgrXjgq0s44OS44OH44Kr44K6DQor44OV44Kv44KkLOOCteODiOOCtw0KK+ODouODquODkOODpOOCtyzjgqvjgrrjg6QNCivjg6Tjg57jg4As44OS44OH44OfDQor44OV44K444Ov44OpLOOCteODiOOCtw0KK+ODiuODhOODoSzjg6Tjgrnjg4gNCivjgrfjg47jg4/jg6ks44OS44Ot44K3DQor44Kq44K144OALOODnuOCteOCtw0KK+ODleOCuOODj+ODqSzjgr/jgrHjg5Ljg4gNCivjg5Xjgrjjg6Ljg4gs44OS44Ot44OfDQor44Kt44OOLOODqOOCt+OCqg0KK+ODpOODnuODouODiCzjg6Ljg4jjgq0NCivjgqTjgrfjgrjjg54s44Oi44Oq44OS44OtDQor44Kk44KsLOOCouOCreODqQ0KK+ODiuOCq+OCqCzjg4DjgqTjgrgNCivjg6Tjg44s44Om44Km44K4DQor44Kr44OK44Of44OELOOCquOCteODoA0KK+OCueOCuuOCrSzjg4bjg6vjgqoNCivjgr/jgqvjg4As44Oq44On44Km44KzDQor44Kk44K344OQ44K3LOODkuODreODpuOCrQ0KK+OCquOCquODhOODnCzjg5/jg4Tjg4/jg6sNCivjgrnjgq4s44K/44Kr44K3DQor44OP44Ok44K344Kw44OBLOODkuODreOCtw0KK+ODhuODqeOCt+OCvyzjgqvjgrrjgqoNCivjgrfjg6Ljg6Tjg54s44Oo44K344OV44OfDQor44Of44Ok44K244KtLOODn+ODhOODqw0KK+ODouODqizjg6Tjgrnjg5Ljg60NCivjg6Tjg57jg6Ljg4gs44OS44OI44K3DQor44OH44Ki44KkLOOCreODqOODkuODrQ0KK+ODm+ODqizjg4jjgrfjg6bjgq0NCivjgqLjg43jgrbjgq0s44Kr44K644KqDQor44Kv44Oc44K/LOOCv+OCq+ODkuODrQ0KK+OCtCzjg57jgrXjg4jjgrcNCivjg5Ljgq3jg4As44OS44Ot44K3DQor44K144Kr44Kw44OBLOODjuODquOCouOCrQ0KK+ODqOOCt+OCpCzjgr/jgqvjgrcNCivjgq3jgr/jg4/jg6ks44Kr44OE44OIDQor44OV44K444KkLOODn+ODieODqg0KK+ODiuODoeOCrSzjg6TjgrnjgrMNCivjg6jjgrfjg6Djg6ks44OI44K344KqDQor44K/44Og44OpLOODgOOCpOOCueOCsQ0KK+OCpuODn+ODjizjg5Ljg63jgrcNCivjgqLjg7Pjg4njgqYs44OS44Ot44K3DQor44Oo44K344Oi44OILOOCv+OCseOCtw0KK+ODjeODouODiCzjg6jjgrfjg5Xjg58NCivjg5/jg6Tjgrbjgq0s44Oe44K144OS44KzDQor44K/44Kr44Oi44OqLOODgeOCqOOCsw0KK+OCr+ODnuOCrOOCpCzjgq/jg4vjgqoNCivjgrTjgqbjg4As44Kz44Km44K/44Ot44KmDQor44OP44K/LOOCs+OCpuOCpOODgQ0KK+OCr+OCuuODnyzjgrXjg4HjgrMNCivjg4rjg4TjgqQs44Kk44Kv44KqDQor44K344Oe44OALOODkuODh+OCqg0KK+OCquOCquODhOOCrSzjgqvjgrrjg5Ljg60NCivjg57jg5/jg6Qs44OS44Ot44Kr44K6DQor44K144OI44KmLOOCseODs+OCuA0KK+OCs+ODkOODqizjg5Ljg4fjg6bjgq0NCivjgrXjgrXjgq0s44Ok44K544Om44KtDQor44Kr44ON44KzLOODnuOCteOCrQ0KK+OCquODjizjg4jjgqrjg6sNCivjgqrjgqrjg6Tjg54s44Oo44K344KoDQor44Oe44OI44OQLOODnuOCteODj+ODqw0KK+OCpOOCv+OCr+ODqSzjgrjjg6Xjg7PjgqTjg4ENCivjgqrjg4Djgrfjg54s44Kr44OE44Ot44KmDQor44K344Kk44KtLOODjuODquOCsw0KK+OCt+ODkOOCvyzjgqvjgrrjg5Ljg60NCivjgqvjg4Tjg6ks44OB44Kr44KzDQor44Ki44Op44KkLOODqOOCt+ODjuODqg0KK+OCteOCpOODiOOCpizjg4Tjg6jjgrcNCivjg57jg4Tjg6Ljg4gs44Oe44K144OO44OqDQor44Km44Ko44Ok44OeLOODn+ODhOODiuODqg0KK+ODnuODjizjgrfjg7PjgqTjg4ENCivjg5/jgrXjgqos44OK44Kq44KtDQor44K944OO44OZLOOCreODn+ODpuOCrQ0KK+OCueOCuuOCrSzjgqLjgq3jgqoNCivjg6Tjgr/jg4ss44Kt44On44Km44KzDQor44Og44K/LOODnuODiuODlg0KK+ODnuODq+ODpOODnizjg5Xjg5/jgqLjgq0NCivjg5Xjg4As44K/44Kr44Oo44K3DQor44Kz44OQ44Ok44K3LOOCseOCpOOCpOODgeODreOCpg0KK+ODr+OCv+ODiuODmSzjgqvjgqrjg6sNCivjgqrjg4As44Oe44Kz44OIDQor44Kq44OV44OBLOODnuOCteOCqg0KK+OCv+ODiuOCqyzjgrfjgrLjgqoNCivjgrXjg6/jgq0s44Oe44K144K3DQor44K144Kk44OI44KmLOODkuODreOCtw0KK+ODj+OCruODjizjg47jg5zjg6sNCivjgqbjgrfjg6Tjg54s44K/44Kr44K3DQor44Kq44Kv44OS44OpLOODjuODluODkuODrQ0KK+ODqOOCt+OCpOOCsSzjgrXjg4rjgqgNCivjgrPjg7Pjg44s44Om44Km44KzDQor44OO44OALOODiOOCt+OCqg0KK+OCqOODs+ODiSzjg4jjgrfjg6bjgq0NCivjgrnjgrrjgq0s44Of44OE44KqDQor44K/44OK44KrLOODqOOCt+ODkuODrQ0KK+OCreODiSzjgrHjgqTjgrgNCivjgqTjg4jjgqYs44Oe44K144OO44OWDQor44OV44K444Ov44OpLOODiOOCt+ODj+ODqw0KK+ODj+OCu+OCrOODryzjgqLjgq3jg6kNCivjg57jgrnjg6Ljg4gs44Kx44Kk44K4DQor44Kr44KkLOODkuODiOOCtw0KK+OCv+OCq+ODj+OCvyzjg4jjg6LjgrMNCivjg5Ljg4fjgrfjg54s44Kr44K644OO44OqDQor44K/44Kr44Ok44OeLOOCt+OCsuOCrQ0KK+ODn+ODpOOCrSzjg6bjgr/jgqsNCivjg5Xjgrss44Kr44K644OS44KzDQor44Oi44Oi44KkLOODkuODreODpOOCuQ0KK+ODhOODpuOCrSzjg5/jg4TjgrANCivjgqvjg6/jg4/jg6ks44K344Ky44OrDQor44Oe44OE44KkLOOCouOCreODkuODrQ0KK+ODj+ODiuODryzjg57jgrXjg5Ljg60NCivjg5Ljg6/jg4As44OG44OE44OkDQor44Oe44K544KkLOOCv+OCq+OCtw0KK+OCq+ODiOOCpizjgr/jg4Djg4TjgrANCivjgr/jgrHjg54s44OV44Of44KqDQor44K344Op44Kk44K3LOODqOOCt+OCqg0KK+ODleODq+OCq+ODryzjgrfjg6fjgqbjgqTjg4ENCivjg4bjgrjjg54s44Ki44Kt44OpDQor44Ki44Kt44Oi44OILOOCteODiOOCtw0KK+OCueOCruODpOODnizjg5Ljg63jgqLjgq0NCivjg4rjg7Pjg5Ys44Om44Kt44OS44OtDQor44OE44K444OOLOOCseODsw0KK+ODhuODqeOCteOCqyzjgqTjg4Pjgrfjg7MNCivjgrXjgqvjgqQs44OS44OH44Ki44KtDQor44Kv44OcLOOCouODhOOCtw0KK+ODnuODq+OCv+ODiyzjg57jgrXjg6QNCivjgr/jgqvjg4/jgrcs44Of44OO44OrDQor44Oe44OE44Km44OpLOOCt+ODs+ODpA0KK+OCv+ODiuOCqyzjgrvjg7PjgrgNCivjg6bjgrbjg68s44K/44Kr44Ki44KtDQor44K/44Kr44OP44K3LOOCq+OCuuODpA0KK+OCquOCquODkCzjgrfjg7PjgrQNCivjg57jgqjjgqvjg68s44OI44Kq44OrDQor44OL44OvLOODiOOCquODqw0KK+OCq+ODr+ODoOODqSzjg57jgrXjgq0NCivjgrPjgqTjgrEs44Kr44K644KoDQor44Kv44Oq44K344K/LOODiOOCt+ODpuOCrQ0KK+ODkuODreOCuyzjgqrjgrXjg6ANCivjgrPjg7Pjg44s44K/44Kv44OkDQor44OP44K744Ks44OvLOODkuODreODkuOCsw0KK+OCpOODiOOCpizjg5Ljg63jgrcNCivjgq3jgrbjgq0s44Ki44OE44K3DQor44Ko44OK44OfLOODjuODquOCouOCrQ0KK+ODhOOCq+ODiuOCqyzjg5Xjg5/jgqLjgq0NCivjgrXjgqvjg6Ljg4gs44OS44Ot44OfDQor44Oe44OE44OQ44OpLOODkuODh+OCqg0KK+ODhuODqeOCpCzjgrfjgrLjgqLjgq0NCivjgqrjgrfjgr8s44K/44Kr44Oo44K3DQor44K/44OK44KrLOODqOOCt+OCouOCrQ0KK+ODpOODnuODouODiCzjg57jg4rjg5YNCivjgqTjgrfjgrDjg60s44Oo44K344OIDQor44OP44K344Oi44OILOOCueODn+OCsw0KK+OCteODiOOCpizjg6Tjgrnjg5Ljg60NCivjg6Tjg57jg6Ljg4gs44OI44Kq44OrDQor44OV44Or44Kr44OvLOODiOOCt+ODjuODlg0KK+ODpOODnuODgCzjg5Ljg63jg4gNCivjgqTjgq/jgr8s44K344On44Km44KzDQor44K144OI44KmLOODpuOCpuOCpOODgQ0KK+ODr+OCv+ODiuODmSzjgqvjgrrjg5Ljg60NCivjgqvjgrMs44K/44OE44K4DQor44Oe44K544OALOODkuODreODjuODqg0KK+OCq+ODn+OCuCzjgr/jgqvjg6bjgq0NCivjgqTjg4/jg6ks44Kr44K644OS44OtDQor44Ki44K144OfLOOCq+OCuuODkuODrQ0KK+ODiuOCq+OCuOODnizjgr/jgqvjgrcNCivjgrPjgr/jgq0s44OG44OE44OkDQor44Kr44Ov44Oi44OILOOCqOOCpOOCpOODgQ0KK+OCq+ODr+OCt+ODnizjgqvjgrrjg5LjgrMNCivjgqLjgrrjg54s44Oq44Ol44Km44K4DQor44OK44Kr44OOLOOCt+ODpeOCpuOCpOODgQ0KK+ODkuODqeODjizjgrXjg4jjgrcNCivjgr/jgqvjg4/jgrcs44Oe44K144OrDQor44OV44Kr44OkLOODouODouOCrQ0KK+OCquOCquODkCzjgr/jgrHjgrcNCivjgrXjgq/jg6njgqQs44OS44Ot44Ki44KtDQor44K144Kr44KkLOOCpOODg+OCu+OCpA0KK+OCouOCquOCrSzjgr/jgq/jgqoNCivjg6jjgrfjg4As44Ok44K544K3DQor44Kz44OP44K3LOODnuOCteODjuODqg0KK+ODnuODhOOCpuODqSzjg4bjg4Pjg5rjgqQNCivjgrXjg4jjgqYs44Kq44K144OgDQor44OL44K344Kt44Kq44OqLOODiOODouOCsw0KK+ODn+ODqOOCtyzjg6jjgrfjg5LjgrUNCivjgrPjgrnjgq4s44OE44Kr44K1DQor44K144OI44KmLOOCv+OCq+OCpOODgQ0KK+ODleOCuOOCpCzjg6jjgrfjg5Ljg60NCivjg5Xjg4rjg4As44Kr44K644OS44KzDQor44K544Ku44K/LOODiOOCquODqw0KK+OCt+ODp+OCpuODgCzjgqvjgrrjg5Ljg60NCivjg6Ljg6rjgrfjgr8s44OI44K344KqDQor44OS44OpLOODkuODiOOCtw0KK+OCt+ODs+OCv+OCryzjg5Ljg63jg6bjgq0NCivjg5Ljgqzjgrfjg4As44OI44K344Om44KtDQor44Kv44Oq44K/LOODnuOCteODqOOCtw0KK+OCpOODiuODgCzjg6bjgqbjgrXjgq8NCivjg4vjgrfjg44s44OI44K344OkDQor44Kk44Kx44K444OqLOODjuODquOCouOCrQ0KK+ODiuOCq+ODoOODqSzjg4rjgqrjg5Ljg60NCivjg4rjgqvjgqvjg4ks44Oo44Km44Kk44OBDQor44Kk44OO44Oe44K/LOODkuODreOCtw0KK+ODhOODq+ODnyzjg5Ljg63jg6jjgrcNCivjg5Ljg6njg6Ljg4gs44K344Ky44KtDQor44Of44Oo44K3LOODleODn+OCouOCrQ0KK+OCouODr+ODjizjgr/jgqvjgrcNCivjgqLjgq3jgr8s44Oo44K344KoDQor44OS44Ks44K344Ok44OeLOOCv+OCseOCtw0KK+OCteODiOOCpizjg5Ljg63jg58NCivjgqvjg6/jgrXjgq0s44Kx44Kk44Kk44OBDQor44Oe44Or44Ok44OeLOODj+ODhOOCqg0KK+OCueODiuOCrCzjg5Ljg4fjgq0NCivjgqTjg57jgqQs44K/44Of44KzDQor44OV44K444KkLOODpuOCreOCqg0KK+ODnuOCreOCvyzjg5/jg4TjgqoNCivjgqTjg4jjgqYs44K/44OE44K3DQor44K/44Kr44OP44K3LOODquODpeOCpuOCpOODgQ0KK+OCreODquODnizjgrfjg7PjgrgNCivjgqrjgqrjg4vjgrcs44OI44Oi44Om44KtDQor44Of44OO44K344OeLOOCv+OCseODkuODiA0KK+OCteODiOOCpizjgqvjgrrjgr/jgqsNCivjg6Tjg57jgrfjgr8s44K/44Kr44Om44KtDQor44Of44K/44Og44OpLOODnuODpuODnw0KK+OCteODiOOCpizjgrfjgrLjg6sNCivjg4jjg57jg4Qs44K/44Oe44OfDQor44Ko44OT44K344OeLOODpOOCueODpuOCrQ0KK+ODr+ODgCzjgqvjgrrjg6QNCivjgrnjgrrjgq0s44Kt44Oo44K/44KrDQor44K544Ks44OP44OpLOODn+ODhOODqw0KK+OCv+OCsOODgSzjg5Ljg63jg6ANCivjg4jjgqzjgrcs44Oe44K144OS44KzDQor44OK44Ks44OP44OpLOOCteODiOODqw0KK+ODpOODnuODouODiCzjgrHjgqTjgrMNCivjgr/jgrHjg4As44Oe44K144Om44KtDQor44K144OI44KmLOODn+ODjuODqw0KK+OCv+OCq+ODn+ODpCzjg5Ljg4fjg47jg5YNCivjgqLjgqrjgq0s44K/44Kr44OS44OtDQor44Kz44Ok44KuLOOCueODn+OCv+OCqw0KK+OCquODjuOCtuOCrSzjg6rjg6fjgqbjgrnjgrENCivjg6Ljg6rjgr8s44OO44Oq44KzDQor44K144Kv44Op44KuLOODpuODn+OCsw0KK+OCquOCq+OCteOCqyzjg5Ljg63jg47jg6oNCivjg6Tjg57jgrDjg4Es44Kz44K544KxDQor44Kr44Ov44K344OeLOODqOOCt+ODjuODqg0KK+OCpOODr+ODjizjgqvjgrrjg47jg6oNCivjgrTjgqbjgrMs44Ok44K544OP44OrDQor44Oi44Oq44K/LOODpOOCueOCuA0KK+OCt+OCsuOCv+OCqyzjg4rjgqrjgq0NCivjg4bjgrrjgqss44Ko44Kk44K144KvDQor44Kq44K/LOODhOODqOOCtw0KK+ODpOODnuODgCzjg57jgrXjg4/jg6sNCivjg5Xjgqvjg4As44OS44K144Om44KtDQor44OP44K744OZLOODouODiOOCouOCrQ0KK+ODnuODhOODjizjgqLjg4TjgrcNCivjg4Tjgrjjgqvjg68s44Kx44Oz44Kk44OB44OtDQor44Oe44OE44Oi44OILOOCq+ODhOODnw0KK+OCu+ODjuOCqizjg4/jgrjjg6ENCivjg47jg6Djg6ks44K144OI44K3DQor44Ki44Op44KkLOODiOODqOOCt+OCsg0KK+OCquOCsOODqizjgrnjg5/jgqgNCivjgrjjg7Pjg44s44Oe44K144OS44OtDQor44OS44Ot44K644OfLOODn+ODjuODqw0KK+ODnuODhOOCpCzjgrnjgrnjg6ANCivjgrfjg5Djgrbjgq0s44Ki44OE44K3DQor44Kk44OO44Km44KoLOODkuODh+OCqg0KK+OCv+ODiuOCqyzjg5Ljg4fjgqvjgroNCivjgrXjgr0s44OK44Kq44OV44OfDQor44K344Op44OP44OeLOOCouOCreODkuOCsw0KK+OCv+ODiuOCqyzjg4rjgqrjgq0NCivjg4rjgqvjg6Djg6ks44Ok44K544OS44OtDQor44Kk44K344Ks44OfLOODqOOCt+OCouOCrQ0KK+OCt+ODkOOCvyzjg4bjg4Pjg5rjgqQNCivjg47jgrDjg4Es44Ki44Om44OfDQor44Kk44OB44OQLOOCs+OCpuOCuA0KK+OCq+ODr+OCsOODgSzjg5Ljg4fjgrMNCivjg6jjgrfjg58s44OS44OH44OfDQor44OV44K444Kr44OvLOODkuODreODpuOCrQ0KK+OCq+ODiOOCpizjg4Tjg6jjgrcNCivjgr/jgqvjg4/jgrcs44Kk44K144OgDQor44OV44K444K144OvLOOCq+OCuuOCqg0KK+ODn+OCuuOCv+ODiyzjg4jjg6Ljg5Xjg58NCivjgrvjgq3jgrDjg4Es44Oo44K344Ot44KmDQor44Oe44Ko44Kr44OvLOODoOODhOODnw0KK+OCouODqeOCpCzjg6rjg6XjgqbjgrgNCivjg6Ljg6os44Kx44Kk44K/44Ot44KmDQor44K144OI44KmLOODiuOCquOCsw0KK+OCr+ODr+OCvyzjgrfjg6fjgqbjgqTjg4ENCivjgqrjgrDjg6os44OS44Ot44K3DQor44OS44Op44KkLOOCq+ODhOODkuOCsw0KK+ODi+OCt+ODoOODqSzjg5Xjg5/jg4jjgrcNCivjgqrjgqrjgq/jg6ks44OS44K144OO44OqDQor44K944OO44OZLOOCouOCreOCsw0KK+OCpOOCpOODgCzjg6TjgrnjgqLjgq0NCivjgrPjgrDjg4Es44Ko44Kk44Kk44OB44Ot44KmDQor44Oi44Ot44Ob44K3LOODkuODh+OCq+OCug0KK+ODj+ODnuODgCzjg47jg6rjgqvjg4QNCivjgqvjg4rjgrbjg68s44Kr44K644Om44KtDQor44Oe44OE44OQLOOCt+OCsuODqw0KK+OCpOODr+OCvyzjg5Ljg4fjg4jjgrcNCivjgqLjgrrjg4Es44Oe44K144OrDQor44Kz44Oz44OJLOOCpOOCteOCqg0KK+OCv+OCq+ODj+OCtyzjg6jjgrfjgqoNCivjgqLjg57jg44s44OS44Ot44Ki44KtDQor44Kr44K/44OALOOCquOCteODoA0KK+OCv+ODoeODkuODrSzjg6Ljg4jjgrMNCivjg57jg4Tjg4As44K/44Kr44K3DQor44OK44Oq44Kk44K3LOODpOOCueODqOOCtw0KK+OCquOCreOCvyzjg6Ljg6rjg5/jg4ENCivjg6Tjg57jgrfjgr8s44OS44Ot44K3DQor44K544K644KtLOODpuOCpuOCuA0KK+ODnuODs+ODnSzjgqvjg4Tjg58NCivjgqTjg4HjgqQs44Kx44Oz44K4DQor44Kz44Kk44OHLOODiOODouOCsw0KK+OCv+OCq+ODj+OCtyzjg4rjgqrjgrMNCivjg4rjgqvjgqzjg68s44Kr44K644KqDQor44Kq44OP44OeLOOCv+OCq+OCtw0KK+OCv+OCq+ODj+OCvyzjg5Ljg63jg58NCivjgrPjgrDjg4Es44K/44Kr44K3DQor44Of44Ok44Ks44OvLOOCq+OCuuODpA0KK+OCt+ODkOODpOODnizjg4/jgrjjg6ENCivjgqLjg6njgqQs44Ok44K544OS44OtDQor44Ov44K/44OK44OZLOOCueOCueODoA0KK+ODiuOCq+ODoOODqSzjg6bjgr/jgqsNCivjg5Xjg6vjg4/jgr8s44Oe44K144OK44OqDQor44K/44OL44Kw44OBLOODiuOCquOCueOCsQ0KK+ODm+ODs+ODgCzjgrnjgrnjg6ANCivjg57jg4Tjg6Ljg4gs44Ki44Kt44OS44OtDQor44K/44Kr44KtLOODj+ODq+ODn+ODhA0KK+OCreOCr+ODgSzjgrfjg7Pjg6QNCivjgqTjg47jgqbjgqgs44Kz44Km44Kk44OBDQor44OP44OpLOODnuOCteOCqg0KK+ODpOODnuODouODiCzjgr/jgqvjg5Ljg60NCivjg6Djg6njgqvjg58s44OI44Oi44Ok44K5DQor44OQ44OQLOODnuOCteODkuOCsw0KK+ODj+OCu+OCrOODryzjg4jjgrfjg5LjgrMNCivjgrXjgrXjgq0s44Ki44Kt44OV44OfDQor44Ki44OE44K/LOODkuODiOODnw0KK+OCv+ODgeOCq+ODryzjg5Ljg63jg4TjgrANCivjg5Ljg6njg6Ljg4gs44OS44OH44Ki44KtDQor44OK44Kr44Og44OpLOODiOOCt+ODpA0KK+ODhOODoOODqSzjgr/jgqvjgqoNCivjgr/jgqvjg4/jgrcs44K944Km44Kk44OB44Ot44KmDQor44Oo44Kz44Ok44OeLOODn+ODjuODqw0KK+OCs+OCv+OCsSzjg5/jg4TjgqoNCivjgqLjg7Pjg6njgq8s44K/44Kr44K3DQor44Of44K644OOLOOCt+ODs+OCpOODgQ0KK+OCquOCquODjOOCrSzjgqLjgq3jg6kNCivjgrXjgqvjgqQs44OP44K444OhDQor44Kq44K/LOOCt+ODp+OCpuOCvuOCpg0KK+ODj+ODpOOCtyzjg47jg6rjgqoNCivjgrXjgqTjg4jjgqYs44Ki44Kt44OS44OtDQor44K/44OK44KrLOODjuODquOCsw0KK+ODj+ODq+ODj+ODqSzjg4jjgqbjgrQNCivjgqrjgqrjg4Tjgqss44Oe44K144Om44KtDQor44Kt44K/44Ks44OvLOODkuODh+ODnw0KK+ODqOOCs+OCvyzjgqvjg4Pjg5rjgqQNCivjg6jjgrfjg6Djg6ks44Ki44OE44KzDQor44Kq44Kq44OS44OpLOOCt+ODs+OCpOODgQ0KK+ODgeODo+OCrSzjgrfjgrLjg5Ljg4cNCivjgrXjgqvjgrDjg4Es44Kz44Km44Kk44OBDQor44K544K644KtLOOCouOCreODkuODrQ0KK+ODgeOCq+OCtuODryzjg57jg6bjg58NCivjg4rjgqvjgrjjg54s44Oe44K144OO44OqDQor44Ov44K/44OK44OZLOOCv+ODgOOCqg0KK+OCt+ODkCzjgrjjg6Xjg7PjgrMNCivjgrXjgqvjgqQs44OB44OP44OrDQor44Ok44Oe44Of44K144KrLOODhuODhOOCqg0KK+ODqOOCt+OCrOODnyzjgqLjgq3jg6kNCivjg5Ljg6njg4Ys44Oe44K144Om44KtDQor44Ov44Kv44K344OeLOOCv+ODgOOCtw0KK+OCouOCteODnizjg4Hjgqvjg6kNCivjgqLjgrrjg58s44K/44OA44K3DQor44Kk44OK44Kq44KrLOODkuODreOCq+OCug0KK+OCteODiuOCpCzjg5Ljg63jgrcNCivjg6Tjg57jgqbjg4Es44Ok44K544OS44OtDQor44Kk44OP44OpLOODiOOCt+ODkuOCsw0KK+OCv+ODpOODnizjgqrjgrXjg6ANCivjgrXjgrXjgq0s44K344Oz44OkDQor44OV44K444Km44OBLOODiOOCt+OCouOCrQ0KK+OCpuOCt+OCuOODnizjgrfjg7PjgqTjg4ENCivjg47jg47jg6Djg6ks44Oe44K144K/44KrDQor44OL44K3LOOCv+OCseODkuODrQ0KK+OCpOOCseODgCzjg5Ljg63jg58NCivjgrnjgq7jgr/jg4ss44OS44Ot44K3DQor44Kq44K244KtLOOCv+OCseOCtw0KK+OCs+OCseODhCzjgqLjgq3jg5LjgrUNCivjgrXjg4jjgqYs44Oo44Km44K544KxDQor44K744Oz44OQLOOCouODhOOCtw0KK+OCouOCuuODnizjg5Ljg4fjg4gNCivjg4rjgqrjgqQs44Kk44OB44Ot44KmDQor44Ob44K344OOLOODqOOCt+OCrQ0KK+OCq+ODn+ODpCzjg6Tjgrnjg5Ljg60NCivjg6Djg6njgr8s44OS44OI44K3DQor44Kk44OB44Of44OkLOOCseOCpOOCsw0KK+OCv+ODq+OCpCzjg6TjgrnjgqLjgq0NCivjg4/jgq7jg4/jg6ks44Of44Ov44KzDQor44K/44Kr44OP44K3LOOCv+OCq+OCtw0KK+OCquODgeOCouOCpCzjg5Ljg4jjgrcNCivjgqLjgq3jg6Tjg54s44Kx44Kk44K544KxDQor44Kt44Og44OpLOODqOOCt+ODkuODrQ0KK+ODj+ODpOOCtyzjg5Ljg4fjgqoNCivjg6Tjg57jgrDjg4Es44Of44OE44OrDQor44OI44Kz44OtLOODiuOCquOCv+OCqw0KK+OCq+OCueODpCzjgqjjg4TjgrMNCivjgqTjg6rjgqgs44K344Ol44Km44K4DQor44Og44Op44Kk44K3LOODn+ODiuOCsw0KK+OCt+ODs+OCv+ODiyzjg6rjg6XjgqbjgrgNCivjgqbjgqjjg44s44Of44ObDQor44Km44OB44OALOOCs+OCpuOCuA0KK+ODj+OCu+OCrOODrywNCivjgq/jg63jg4As44Or44Oq44KzDQor44Kk44OI44KmLOOCq+ODhOODkuODrQ0KK+ODm+ODquOCpuODgSzjg57jg6QNCivjgqrjgqrjg4/jgr8s44OO44OW44Ki44KtDQor44Ob44Oz44OALOODkuODh+ODpuOCrQ0KK+ODiuOCq+ODoOODqSzjgrnjgrnjg6ANCivjgrXjgqjjgq0s44Kq44Kt44Oi44OqDQor44Ki44OZLOODhuODq+ODkuOCtQ0KK+OCpuODoeODgCzjgr/jgqvjg5Ljg60NCivjg4zjg54s44Oe44K144Om44KtDQor44K/44OW44OBLOODpuOCv+OCqw0KK+OCreODoOODqSzjg5/jg4Tjg6sNCivjgqbjg4As44K/44Kr44OfDQor44Ki44Kq44KtLOODjuODquOCsw0KK+ODiuOCq+ODoOODqSzjg57jgrXjg4gNCivjg5XjgrjjgrPjgrcs44K144OI44K3DQor44K544Of44OALOOCreODqOOCtw0KK+OCr+OCuuODj+ODqSzjg47jg5zjg6sNCivjg6/jgr/jg4rjg5ks44OS44Ot44K3DQor44Ki44Op44K/LOOCteODiOODnw0KK+ODreODg+OCq+OCryzjg57jg6bjg58NCivjgqTjg47jgqbjgqgs44Of44OE44Oe44K1DQor44OE44K444Oi44OILOODnuOCteODnw0KK+ODn+OCpuODqSzjg4rjg4rjgrMNCivjg43jg6Ljg4gs44Oo44K344KqDQor44Ki44Oh44Of44OkLOODqOOCt+OCq+OCug0KK+ODiuOCq+ODoOODqSzjg5Ljg63jg6bjgq0NCivjgqLjgqTjg5As44OO44OW44K/44KrDQor44Oo44ON44K244OvLOOCt+ODs+ODpA0KK+ODleOCuOODoOODqSzjgrfjg6XjgqYNCivjg6rjg6Xjgqbjg4gs44OS44Ot44OfDQor44Ov44K/44OK44OZLOODiOODouODnw0KK+OCreOCv+OCrOODryzjgrfjg7PjgrgNCivjgqLjgr/jg6njgrcs44OI44Oi44OK44KqDQor44Kt44Kv44OBLOOCuOODpeODsw0KK+OCueOCuuOCrSzjgqLjgq3jg6kNCivjgr/jg4rjgqss44OS44Ot44K3DQor44Kk44Kx44OALOODkuODreODiuODqg0KK+ODqOOCs+OCq+ODryzjg5/jg4Tjg5LjgrMNCivjgq/jgrXjg4TjgrAs44K/44Kr44K3DQor44Of44K644OOLOOCseODs+OCuA0KK+ODiuOCrOODm+ODqizjgrPjgqbjgqTjg4ENCivjgrnjgq7jg6Ljg4gs44Kz44Km44K4DQor44Ki44Oz44OJ44KmLOODhOODjeOCqg0KK+OCv+OCq+ODpOODiuOCrizjg5Ljg63jg5Xjg58NCivjgrfjg5As44Oe44K144KzDQor44Kr44Of44Ok44OeLOOCq+OCuuODkuODrQ0KK+OCquOCquODkuODqSzjg5Ljg63jg58NCivjg5vjg7Pjg54s44OP44Or44Om44KtDQor44K/44OQ44K/LOODjuODluODqOOCtw0KK+OCqOODs+ODiSzjgrHjg7PjgqTjg4ENCivjgqTjgrfjgqzjgq0s44K744Kk44K4DQor44K344OQLOODpuOCpuOCpOODgeODrQ0KK+ODpOODnuODgCzjg57jgrXjg5Ljg4gNCivjgr/jgqvjg44s44Kr44OE44KqDQor44Oo44K344OALOOCv+ODhOODpA0KK+OCouODnuOCteOCrSzjg4jjgrfjg5LjgrMNCivjgqrjgrfjgqvjg68s44K344Oz44K4DQor44OL44K344OOLOODn+ODm+OCsw0KK+OCq+ODiOOCpizjgqrjgrXjg6ANCivjg4/jg57jgqrjgqss44OI44Oi44KzDQor44K144OOLOOCv+OCq+OCq+OCug0KK+OCueOCqOOCt+OCsizjgq/jg4vjg4bjg6sNCivjg4rjgqvjgr8s44OS44Ot44OfDQor44Kz44OQ44Ok44K3LOODkuODh+ODpuOCrQ0KK+OCueODieOCpizjg6TjgrnjgrcNCivjg4Tjg4Tjg58s44Kt44Oo44OS44OIDQor44Of44K/44OLLOOCs+OCpuOCuA0KK+OCpOOCt+ODgCzjg6Tjgrnjg5Xjg58NCivjgqTjgqTjgrrjgqss44Om44K/44KrDQor44K344Op44KkLOODpuODnw0KK+ODpOODnuODgCzjgqTjg6/jgqoNCivjg4Tjgrjjgqvjg4ks44Kr44K644KzDQor44Oe44OE44OK44KsLOOCs+OCpuOCpOODgQ0KK+OCv+ODiuOCqyzjgqvjgrrjgqgNCivjg5/jg4rjg58s44OS44Ot44K3DQor44K144Kr44KkLOODnuOCteODpuOCrQ0KK+OCpuOCqOOCrSzjgrfjgqrjg6oNCivjgqrjg4As44Oe44K144KqDQor44Oe44Ko44OALOOCu+OCpOOCuA0KK+ODh+OCreOCv+ODiyzjgrjjg6Xjg7MNCivjgqLjg57jg44s44K/44Kr44OS44OtDQor44Of44Ok44Kz44K3LOOCt+OCsuOCq+OCug0KK+OCouODs+OCtuOCpCzjg4jjgrfjg5/jg4ENCivjgqbjg6Hjg4As44Om44Kt44KqDQor44K/44Kt44K244OvLOOCouODhOOCtw0KK+ODoOODqeODi+OCtyzjgq3jg6jjgrcNCivjgq/jg6rjg4/jg6ks44OI44K344OS44KzDQor44Ok44Oe44K144KtLOODnuODqg0KK+OCquOCquODhOOCqyzjg5/jg4Tjg5Ljg60NCivjgqLjg5/jg44s44K/44Kr44K3DQor44Oi44OqLOODpOOCueODjuODqg0KK+ODi+OCt+ODouODqizjgrfjg7PjgrgNCivjgr/jgrHjg44s44Oe44K144KqDQor44K344Oz44Ks44KtLOODqOOCt+OCq+OCug0KK+ODnuODhOOCqizjg6jjgrfjgq0NCivjg5Xjgrjjg40s44Oe44K144KtDQor44Kr44OK44Oe44OrLOODkuODreODqOOCtw0KK+OCq+ODiuOCtuODryzjgr/jg4Tjg6bjgq0NCivjgrfjg5/jgros44Oq44Ol44Km44K4DQor44Ov44OALOOCpOODhOOCsw0KK+OCpOOCt+OCr+ODqSzjgr/jgrHjgrcNCivjg5Xjgq/jg4As44Ki44Kt44OS44OtDQor44Km44Kr44KkLOODqOOCt+OCsw0KK+OCouODquODnizjgqrjgrXjg6ANCivjgqrjgqrjgr8s44K/44Kr44Ki44KtDQor44Oi44Oq44K/44OLLOOCv+OCq+OCtw0KK+OCouODgOODgSzjg6jjgrfjg5Ljg60NCivjgq/jg57jg4cs44Oe44K144OO44OqDQor44Ki44OpLOOCueOCueODoA0KK+ODj+OCt+ODouODiCzjg4jjgqrjg6sNCivjg4jjg6jjgqrjgqss44Oe44Kz44OIDQor44Kq44Kq44OELOODhuODhOODreOCpg0KK+ODn+ODpOOCrSzjgrHjgqTjgqTjg4ENCivjgqTjgrfjgqvjg68s44K444Ol44Oz44Kk44OBDQor44Kk44Ks44Op44K3LOODiuOCquODhOOCsA0KK+OCquOCquODi+OCtyzjgq3jg7Pjg6QNCivjgrfjg6njgqTjgrcs44Kz44Km44Kk44OBDQor44Oo44Kz44OhLOODqOOCt+OCouOCrQ0KK+ODleOCuOODouODiCzjgqvjgrrjg5Ljg60NCivjgqvjg7Pjg44s44Oi44Oq44Ok44K5DQor44K/44OB44OQ44OKLOODn+ODgeOCqg0KK+ODpOODnuODgCzjg4Hjg4rjg58NCivjgqLjgrXjg58s44K344Ky44KqDQor44Of44Km44OpLOODpOOCueOCtw0KK+ODiOOCr+ODkuODrSzjg5Ljg63jg47jg5YNCivjg6Ljg6rjgqvjg68s44Oe44K144OO44OWDQor44Kk44OI44KmLOODn+OCreODkuOCtQ0KK+OCteODjizjg4jjg6Ljg5/jg4QNCivjgrnjgrrjgq0s44Oe44Kz44OIDQor44K344Oi44OI44OOLOODnuODiuODlg0KK+ODnuOCq+ODmSzjgrXjg4jjg58NCivjgqTjg4jjgqYs44Kz44Km44K4DQor44OE44Kv44OALOOCuOODpeODs+OCuA0KK+ODqOOCt+OCq+ODryzjg5/jg4TjgrANCivjgr/jgqvjg6Tjg4rjgq4s44OS44Ot44KtDQor44Ob44Oz44OALOOCv+OCq+ODqOOCtw0KK+ODi+OCt+ODjizjg6bjgqbjgrgNCivjgq3jg6Djg6ks44Oo44K344OS44OtDQor44Kr44OI44KmLOOCs+OCpuOCpOODgQ0KK+OCquOCquODj+OCvyzjgrjjg6Xjg7MNCivjgqbjg4Tjg58s44Kr44K644OS44KzDQor44Ki44Oz44OJ44KmLOOCq+OCuuODkuOCtQ0KK+ODj+ODnuOCv+ODiyzjg5/jg47jg6sNCivjgq3jg47jgrfjgr8s44K/44Kr44OV44OfDQor44Kr44Ov44K7LOODiOOCt+OCv+OCqw0KK+OCpuOCqOODjizjg6jjgrfjg5LjgrMNCivjgrfjgqvjg54s44Oq44On44Km44K4DQor44K544K644KtLOODnuOCteODpuOCrQ0KK+ODleOCuOOCquOCqyzjg57jgrXjg5Ljg60NCivjgqTjg47jgqbjgqgs44OI44Oi44OS44OtDQor44Kt44K/44K244KtLOODpOOCueODpuOCrQ0KK+OCouOCpOODmSzjg5Ljg63jgrcNCivjgqrjgqrjgqvjg68s44K144Kr44KoDQor44K/44Kx44KkLOODpOOCueODj+ODqw0KK+OCq+ODqeODj+OCtyzjg5Ljg63jgrcNCivjgrnjgrrjgq0s44Oe44Om44OfDQor44Ki44Op44KkLOODkuODreOCtw0KK+OCpOODjuODgCzjg47jg6rjg6bjgq0NCivjgqrjgq/jg6Djg6ks44Ko44OqDQor44Oe44Or44KkLOOCuOODpeODs+OCsw0KK+ODkuODreOCuuODnyzjgqLjgq3jg5LjgrUNCivjg6/jgrfjgros44K/44Kv44OkDQor44Oo44K344Og44OpLOOCv+OCq+ODkuOCtQ0KK+OCq+ODhOODnuOCvyzjgr/jgqvjgrcNCivjg57jgrnjgqvjg68s44Kr44OE44OpDQor44Kk44Ov44KqLOOCt+ODpeOCpuOCuA0KK+ODpOODnuODouODiCzjg6jjgrfjg5Ljg4gNCivjgr/jg4rjgqss44K144OI44OrDQor44K/44Kx44Km44OBLOODjuODquODpuOCrQ0KK+ODjuODj+ODqSzjgrfjg6Xjgqbjgr7jgqYNCivjg5Xjg4rjg4/jgrcs44Kr44K644OO44OqDQor44OK44K044K3LOOCseODs+OCuA0KK+OCpuODoeODgCzjgqvjgrrjg6QNCivjgqLjgq3jg6Tjg54s44OS44OI44K3DQor44OK44Kr44OALOODnuOCteODiA0KK+OCteOCpOODiOOCpizjg6HjgrDjg58NCivjgr/jg4/jg6ks44K444Ol44Oz44Kk44OB44OtDQor44OL44K344Oe44OELOODqOOCt+ODkuODrQ0KK+ODkuODqeODn+ODhCzjg57jgrPjg4gNCivjg6Hjgqvjgr8s44Oe44K144OrDQor44K/44Kr44OfLOODquODpeOCpuOCv+ODreOCpg0KK+OCveODjuODgCzjg5Ljg4fjg6bjgq0NCivjg5/jg6Tjgrbjgq0s44Om44Km44K4DQor44Oe44Or44Ok44OeLOODkuODh+OCouOCrQ0KK+ODhOODjuOCq+ODryzjg57jgrXjgrcNCivjg4/jg6njg4As44Kr44OE44OfDQor44OE44K4LOODhOOCsOODkuOCsw0KK+OCpOOCrOODqeOCtyzjg4jjgrfjgqoNCivjg6jjgrfjg4As44Kr44Kq44OqDQor44K/44Kx44Ks44K/LOOCs+OCpuOCrQ0KK+OCouODmSzjg6rjg6fjgqbjgrgNCivjgqLjgqvjg4zjg54s44OI44Kv44OS44OtDQor44Kr44Ov44OALOODkuODreOCouOCrQ0KK+OCv+OCtCzjg5Ljg63jgrcNCivjgqvjg5/jg6Djg6ks44Oe44K144K3DQor44Oe44OE44OkLOOCsuODsw0KK+OCpOODr+OCvyzjgqLjgq3jg5LjgrMNCivjg57jgqjjgqvjg68s44K144OI44K3DQor44Ok44Oe44Kw44OBLOODrOOCpOOCsw0KK+OCt+ODreOCt+OCvyzjg4jjg6Ljg5Ljg60NCivjg6Tjg57jgrfjgr8s44Oe44K144OIDQor44OE44K444Kr44OvLOOCuOODpeODs+OCpOODgQ0KK+OCv+ODiuOCqyzjg6jjgrfjg5Xjg58NCivjg5/jg4rjg58s44OI44Oi44OS44OtDQor44K144OI44KmLOODqOOCt+OCouOCrQ0KK+OCpuOCquOCuuODnyzjgqLjgq3jg6kNCivjgrnjgq7jg6Tjg54s44OS44Ot44Om44KtDQor44OB44OQLOODnuOCteODpuOCrQ0KK+OCq+ODiuOCpCzjgrXjg4jjgrcNCivjg57jg4Tjg6Tjg54s44OE44Oo44K3DQor44K/44Kr44OOLOOCouOCreODqQ0KK+OCr+ODnuOCrOOCpCzjgrPjgqbjgqTjg4ENCivjgr/jgrHjgrPjgrcs44Og44OE44OS44K1DQor44OV44K/44OQLOODiOOCt+OCouOCrQ0KK+OCpuODoeOCtuOCrSzjgqvjgrrjgr/jg4ANCivjgqrjgqTjg6/jgrEs44Oo44Km44K544KxDQor44OK44Ks44OE44KrLOODnuODiuODlg0KK+OCpOODnuOCrOODryzjg5Ljg4jjg58NCivjg4/jgrfjg6Ljg4gs44Ki44Kt44OpDQor44Kq44Kq44OS44OpLOODpuOCpuOCv+ODreOCpg0KK+ODn+ODpOODkuODqSzjg5/jg4HjgqLjgq0NCivjg47jgrDjg4Es44Kx44Kk44K+44KmDQor44K544Ku44Oi44OILOOCq+OCuuODleODnw0KK+OCq+ODr+OCsOODgSzjgqvjg4Tjg47jg6oNCivjgrfjg47jgrss44OE44Oo44K3DQor44OK44Oq44K144OvLOODqOOCt+ODkuODiA0KK+ODkuODreOCuyzjgqLjgq3jg5Ljg60NCivjg4vjgrfjgrbjgq0s44K544K544OgDQor44Oi44OqLOODjuODluODpuOCrQ0KK+ODleOCq+OCqizjg6jjgrfjgrMNCivjg5/jg6Tjgrjjg54s44Kx44Kk44K+44KmDQor44Oe44OE44OOLOOCq+OCuuOCt+OCsg0KK+OCpOODr+OCpCzjgrfjgrLjg47jg5YNCivjgqvjgqQs44Of44OJ44OqDQor44K/44OK44KrLOOCr+ODi+OCsw0KK+ODgeODkCzjg57jgrXjg58NCivjgr3jg44s44OS44Ot44K3DQor44Oo44Kz44Ok44OeLOOCouOCreODkuOCtQ0KK+OCv+OCq+OCt+ODnizjgrjjg6Xjg7MNCivjgqrjgqvjg6Ljg4gs44Kz44Km44K4DQor44Of44Ok44Kr44OvLOODgOOCpOOCueOCsQ0KK+ODoOODqeODouODiCzjg4jjg6LjgqLjgq0NCivjgq3jg6Djg6ks44Kz44Km44Kk44OBDQor44Oe44OE44OK44KsLOODpuODn+OCsw0KK+ODleOCr+ODgCzjg4Tjg4jjg6ANCivjgqrjgqrjg4vjgrcs44Oe44K144K3DQor44Ki44KkLOODkuODh+OCq+OCug0KK+ODnuOCqOODgCzjg5LjgrXjgqvjgroNCivjgqTjg47jgqbjgqgs44Oo44K344OfDQor44Kk44Kk44OALOOCv+OCq+ODkuOCtQ0KK+ODleOCuOOCpCzjg5Ljg63jg6bjgq0NCivjgrXjgq/jg6njgqQs44K/44Kv44OkDQor44Oe44OE44KkLOOCpuOCpOODqg0KK+OCpOODnuODgCzjgrfjg7PjgrgNCivjg5/jg6TjgrEs44Ki44OE44K3DQor44K144Kr44KkLOODkuODreODkuOCtQ0KK+OCq+ODiOOCpizjgqrjgrXjg6ANCivjgqTjg6/jgr8s44OK44Kq44OIDQor44Kq44Kq44OOLOODnuOCteODpA0KK+OCpOOCveODmSzjgr/jgqvjg6jjgrcNCivjgqrjg6Tjg57jg4As44OE44OI44OgDQor44OI44Km44K444OeLOOCv+ODhOODkuODrQ0KK+OCv+OCseOCpuODgSzjgqvjgrrjg5LjgrMNCivjg4rjgqvjg6Tjg54s44Oe44K544KqDQor44K344Op44Kk44K3LOOCquOCteODoA0KK+OCq+ODjuODnuOCvyzjgqLjg4TjgrcNCivjgrnjg4njgqYs44K/44Kr44OS44OtDQor44K344Op44Ok44OeLOOCouOCreODkuODrQ0KK+OCquOCquODpCzjg57jgrXjg6sNCivjg5/jg4rjgqzjg68s44OI44Oi44OS44OtDQor44Kt44Og44OpLOOCv+ODhOODpA0KK+OCv+OCq+OCrizjg4DjgqTjgr4NCivjgrXjg4jjgqYs44Om44Kt44KqDQor44OV44K444Ov44OpLOODn+ODhOODqw0KK+OCpOODouODiCzjg6jjgqbjgr8NCivjgqbjgqjjg44s44OI44Oi44OS44OtDQor44Kt44On44Km44OOLOOCseODs+OCtA0KK+OCreODquOCpizjg6jjgrfjgr/jg4ANCivjgq/jg5zjgr8s44OE44ON44KqDQor44Kz44K744KtLOOCv+OCq+OCtw0KK+OCueOCtuOCrSzjg57jgrXjg5Ljg60NCivjgr/jgqvjgrXjgq0s44Ok44K544OS44K1DQor44OE44Kr44Oi44OILOOCt+ODs+OCpOODgQ0KK+ODiuOCpOODiOOCpizjgrHjg7PjgrgNCivjg4rjgqvjgrTjg6Es44OS44Ot44Kr44K6DQor44OK44Kr44Og44OpLOODkuODh+ODpOOCuQ0KK+ODj+OCruODr+ODqSzjgqvjg4Tjg58NCivjg57jg4Tjg6Ljg4gs44Kr44Oo44KzDQor44Kz44Oz44OOLOODqOOCt+ODkuOCtQ0KK+OCteOCpOOCsOOCtSzjgr/jg6Ljg4QNCivjg5vjg7Pjg4As44Om44Kt44KqDQor44K/44OK44KrLOODkuODreOCtw0KK+ODnuODhOODiOODnyzjgqvjg6jjgrMNCivjgqLjgqvjgrXjgqss44OS44Ot44Ki44KtDQor44K744Oz44Ks44OzLOOCouOCreODkuODhw0KK+OCv+OCseOCqizjg47jg6rjgqvjgroNCivjg6Djg6njgr8s44OS44Ot44Om44KtDQor44Kr44Ov44K7LOODiOODouODkuODrQ0KK+ODi+OCt+OCtuOCrSzjgr/jg4Tjg6bjgq0NCivjg5jjgqTjg4jjgqYs44Ko44Kk44Kk44OBDQor44Kq44Kq44K144OvLOODnuOCteODj+ODqw0KK+OCpuOCqOODgCzjg6jjgqbjgqTjg4ENCivjgqvjg4rjg6Tjg54s44Ok44K544OS44KzDQor44OP44Op44OALOODiOODouODpuOCrQ0KK+ODiuOCq+OCrOODryzjgqLjg4TjgrcNCivjg5/jg6Tjg6Ljg6os44Oe44Kz44OIDQor44Kr44KkLOOCseODs+OCuA0KK+OCreOCsOODgSzjgrfjg6XjgqbjgrgNCivjgrXjgr/jgrEs44Kx44Oz44K4DQor44Kq44Kq44Kq44KrLOODiOOCt+ODreOCpg0KK+ODiuOCq+OCtuODryzjgrPjgqbjgrgNCivjg6Tjgrnjgqrjgqss44Oe44K144OS44OHDQor44Kv44Ot44Of44OELOODpOOCueOCv+OCqw0KK+OCq+ODiuODgCzjg5Ljg4fjgq0NCivjg57jg6vjgqvjg68s44OS44OH44KtDQor44OK44Ks44K144OvLOOCv+OCseODpuOCrQ0KK+OCs+ODkOODpOOCtyzjgrfjg6XjgqYNCivjgqjjg7Pjg4ks44Oe44K144OO44OqDQor44Kk44Oz44OK44OfLOODj+ODq+OCqg0KK+ODpOODnuODouODiCzjgq3jg6jjgr/jgqsNCivjg4rjgqzjgq/jg6ks44K144OI44K3DQor44Km44Ko44OOLOODnuODgeOCsw0KK+ODi+OCt+OCtuOCqyzjg5/jgqsNCivjgrXjg4jjgqYs44OG44OE44Ot44KmDQor44Oi44Oq44Ok44OeLOOCv+ODhOOCqg0KK+OCs+ODj+ODpOOCuyzjgrfjgrLjgqoNCivjg4njgqTjgr8s44OS44Ot44K3DQor44Ob44K944Kr44OvLOODjuODluOCqg0KK+OCouOCquOCrSzjg5/jg4TjgqQNCivjg57jgrnjg5/jg4As44OI44Oi44OS44KzDQor44Kq44OBLOODnuOCteOCpOODgQ0KK+OCueOCuuOCrSzjgrHjg7PjgrgNCivjgrnjgq7jg6Tjg54s44Kx44Oz44Kk44OBDQor44OV44K444Ov44OpLOOCu+OCpOODpA0KK+OCv+ODiuODmSzjg5/jg4Tjg6bjgq0NCivjg4jjg4As44Ki44OE44K3DQor44OE44Oc44KkLOODpOOCueOCqg0KK+OCueOCruOCvyzjg57jgrXjg47jg6oNCivjgqLjg4Djg4Es44Kx44Kk44K/DQor44OV44K444KkLOODnuOCteOCrQ0KK+OCueOCrOODouODqizjg5Ljg63jgrcNCivjg6Tjgrnjg4As44OK44Kq44OS44KzDQor44K/44Kr44OP44K3LOODkuODreODpuOCrQ0KK+OCv+OCrOODnyzjg57jgrXjg6sNCivjg4jjg5/jg6Tjg54s44Om44Km44K4DQor44OP44ON44OALOODpOOCueODpuOCrQ0KK+OCquOCtuOCrSzjgr/jgrHjgrcNCivjgqrjgrDjg6ks44Ok44K544Om44KtDQor44OG44Op44K144KtLOODjuODluODpA0KK+ODhOODgeODpCzjgqjjg4TjgrMNCivjgqrjgqvjg4As44OG44Or44KqDQor44Ki44OZLOODjuODluODpuOCrQ0KK+OCouODmSzjg5/jg4TjgqgNCivjg6Ljg6rjg6/jgq0s44Kz44Km44Kk44OB44Ot44KmDQor44OP44Ok44OOLOOCseODs+OCvw0KK+ODiOODn+ODiuOCrCzjgrjjg6Xjg7MNCivjgrnjgrrjgq0s44Of44KtDQor44Kr44K/44Ku44OqLOOCteODiOOCtw0KK+OCouODj+ODqSzjg4/jg6Tjg4gNCivjg5vjgrcs44OK44OK44KzDQor44Kk44K344Kr44OvLOOCv+ODhOODpA0KK+OCt+ODouODoOODqSzjg6jjgrfjg5LjgrUNCivjg6/jgq3jg6Ljg4gs44Of44Om44KtDQor44Kr44Ov44OGLOOCv+OCq+OCtw0KK+OCouODluODqeOCq+ODryzjgqvjgrrjgqrjg58NCivjg6jjgrfjgr/jgrEs44K/44Kr44K3DQor44Kk44K344OALOODnuOCteODpuOCrQ0KK+ODm+ODs+ODgCzjg4jjgrfjg63jgqYNCivjgrfjgr/jg54s44Oo44K344KqDQor44OO44Kw44OBLOOCv+OCseOCtw0KK+ODn+OCuuOCpCzjgqLjg6TjgqoNCivjgqLjg7Pjg4njgqYs44OK44Kq44OV44OfDQor44Oo44ON44K344OeLOODiuODhOODnw0KK+OCouOCreOCvyzjgrjjg6Xjg7PjgrMNCivjgqbjgqgs44Ki44OE44K3DQor44K544KuLOOCs+OCpuOCpOODgQ0KK+ODiuOCq+OCuOODnizjg57jg6oNCivjgqvjgrXjgqrjgqss44OI44K344OS44KzDQor44OO44OALOODhuODhOODleODnw0KK+ODnuODhOOCtuODryzjgrPjgqbjgqTjg4Hjg63jgqYNCivjg6/jgr/jg5ks44K/44OE44KqDQor44Ki44Kk44K244OvLOOCseOCpOOCuOODreOCpg0KK+OCpOODr+OCtSzjgrfjg7MNCivjgrPjgqws44Ki44Kt44OS44KzDQor44OS44Ks44K344K/44OLLOODkuODh+ODleODnw0KK+OCpOOCseODgCzjg4jjgrfjg6QNCivjgqLjgq3jg4rjgqss44Ok44K544OP44OrDQor44OV44K444K/LOOCq+OCuuODpA0KK+ODpOODnuOCquOCqyzjg5LjgrXjgr/jgqsNCivjg6/jg4Es44K744OE44OkDQor44Km44Ko44OOLOOCseODs+OCv+ODreOCpg0KK+OCpuOCt+OCrSzjgqvjgrrjgqTjg4ENCivjg6Tjg57jg6Ljg4gs44OP44Or44OS44KzDQor44Kr44OI44KmLOODnuOCteODiOOCtw0KK+ODiuOCrOOCpCzjgr/jg4Djg5Ljg60NCivjg5Xjgq/jg4As44Ki44Ok44KzDQor44OK44Kr44K/44OLLOOCqOODnw0KK+ODkuODqeOCteODryzjg4rjgqzjgrMNCivjg5/jg6Tjgrbjgq0s44Oe44K144OrDQor44OG44Op44K344OeLOODoOODjeOCq+OCug0KK+OCouODqeOCpCzjg4HjgqwNCivjgr/jg4rjgqss44K344Oz44Kk44OBDQor44Kr44ON44KzLOOCv+OCq+OCouOCrQ0KK+OCteODiOOCpizjg4bjg4TjgrgNCivjg4rjg6rjgr8s44K344Ol44Km44Kk44OBDQor44OK44Ks44K344OeLOOCuOODpeODs+OCpOODgeODrQ0KK+OCteOCq+ODjizjg4jjgrfjgqoNCivjg5/jgqbjg6ks44K144OI44K3DQor44Ok44Oe44Kw44OBLOOCseOCpA0KK+OCquODh+ODqSzjg4rjgqrjg4jjgrcNCivjgqLjg5ks44Ki44OE44K3DQor44Kz44OA44OeLOOCq+OCuuODkuODrQ0KK+ODpOODnuODouODiCzjg5Ljg63jg6bjgq0NCivjgqrjgrfjg54s44OI44Kq44OrDQor44Kk44K344K6LOODhOODiOODoA0KK+OCq+ODs+ODkOODpOOCtyzjg6bjgq3jgqoNCivjgqrjgqrjgqvjg68s44OS44Ot44Om44KtDQor44OS44Ko44OALOOCv+OCseODkuOCsw0KK+OCpOODjuODnuOCvyzjg5Ljg63jg58NCivjg57jgq3jgr8s44OI44K344OkDQor44Ks44OK44OPLOOCv+OCq+ODpuOCrQ0KK+ODj+ODpOOCq+ODryzjg5Ljg63jg6bjgq0NCivjgqLjgqvjg4zjg54s44OG44OE44OkDQor44Og44Ot44Kr44OvLOODnuOCteODjuODqg0KK+OCquODjizjgrHjgqTjgrnjgrENCivjgq3jg6Djg6ks44K344On44Km44K0DQor44OP44K/44K244OvLOODpOOCueOCsw0KK+ODleOCuOOCvyzjg57jgrXjgq0NCivjgqbjgqjjg4As44OA44Kk44K544KxDQor44Ok44Oe44OO44Km44OBLOOCpOOCteOCqg0KK+ODleODq+OCvyzjg6jjgrfjg5Ljg60NCivjgqrjgq/jg6Tjg54s44Kx44Oz44Kk44OB44OtDQor44Kk44OI44KmLOODleODn+OCqg0KK+OCquOCteODiuOCpCzjgrvjgqTjgqTjg4ENCivjgrPjgr/jg4ss44K/44Kx44K3DQor44Kq44Kq44OE44KrLOOCv+ODgOOCouOCrQ0KK+ODleOCr+OCt+ODnizjgrPjgrnjgrENCivjgqTjgqTjgrrjgqss44Kx44OzDQor44Ov44K/44OK44OZLOODhuODq+OCouOCrQ0KK+ODouODquOCvyzjgrHjg7PjgqTjg4Hjg60NCivjgqvjg4jjgqYs44OS44Ot44KtDQor44Ob44Oz44OALOODiOOCt+OCouOCrQ0KK+OCq+ODiOOCpizjgqLjgq3jg47jg6oNCivjgqLjgrXjg4zjg54s44Ok44K544OS44OtDQor44Ki44K644OeLOODnuOCteOCqg0KK+ODhuODqeOCteODryzjg5/jg4TjgqoNCivjgqLjgqvjgrcs44OE44ON44KqDQor44Kr44OI44KmLOODiuOCquODiA0KK+OCquODjuOCteODiCzjgr/jgqvjgrcNCivjg4rjgqvjg6Djg6ks44OS44Ot44OE44KwDQor44OO44Og44OpLOODkuODh+ODnw0KK+OCpOODjuOCpuOCqCzjgqjjgqTjgqTjg4ENCivjg4/jg6Tjgrcs44K344Oz44Kk44OBDQor44K/44Og44OpLOOCrOOCrw0KK+OCteOCq+OCpCzjgrnjgqjjg47jg5YNCivjgrnjgq7jg6Djg6ks44Oq44On44KmDQor44OI44Of44Ok44OeLOOCseOCpA0KK+OCq+OCreOCtuODryzjg4jjgrfjgqLjgq0NCivjg4vjgrfjgr/jg4ss44K344On44Km44Kk44OB44Ot44KmDQor44Ki44K144Kv44OpLOOCt+ODs+ODpA0KK+OCpOOCt+OCtuOCrSzjgrXjg4jjgrcNCivjg57jg4Tjg6Ljg4gs44K344Oz44Kk44OB44Ot44KmDQor44OK44Ks44KqLOODiOOCt+OCqg0KK+OCreODjizjg6rjgqgNCivjgqLjg5ks44K/44K544KvDQor44OILOOCs+OCpuOCuA0KK+ODpOODnuOCrSzjgrPjgqbjgqTjg4ENCivjgqLjg6njgqQs44Ky44OzDQor44Ok44Oe44OALOOCseOCpOOCuA0KK+OCquOCr+ODoOODqSzjgqvjgrrjgqgNCivjg4/jg6ks44K344On44Km44K/44Ot44KmDQor44Ok44Oe44Oi44OILOOCq+ODhOODkuOCtQ0KK+ODiuOCq+ODoOODqSzjgrfjg7PjgqTjg4Hjg63jgqYNCivjgqLjg6njgqQs44Kr44K644OkDQor44Kk44Kx44OJLOODnuOCteOCv+OCqw0KK+OCpOODiOOCpizjgrHjgqTjgrgNCivjgqTjg4jjgqYs44Om44Km44K4DQor44Km44Oq44Ol44KmLOOCouOCreODqQ0KK+OCpuODgeODpOODnizjgr/jg4DjgrcNCivjgqjjg47jg6Ljg4gs44OS44Ot44Of44OBDQor44Ko44K644OpLOODiOOCquODqw0KK+OCquOCquODhOOCqyzjgrHjgqTjgrnjgrENCivjgqjjg4vjg6Ms44K544K544OgDQor44Ki44Kr44KqLOOCseOCpOOCueOCsQ0KK+OCquOCquODi+OCtyzjgrfjg6fjgqbjgrgNCivjgqvjgqzjg6Qs44Kk44OK44OzDQor44Kr44Oe44K/LOOCv+OCq+ODkuODrQ0KK+OCq+ODr+OCq+ODnyzjg47jg5bjg5LjgrUNCivjgrXjgrXjgq0s44Ok44K544Oo44K3DQor44K/44Kr44OP44K3LOODiuOCquODkuOCsw0KK+OCv+ODgCzjgrPjgqbjgqTjg4ENCivjg4vjgrfjg44s44Oe44K144Oo44K3DQor44Ki44K144KqLOODiuOCquOCrQ0KK+ODj+OCt+ODouODiCzjg4rjgqrjgq0NCivjg4/jg4Pjg4jjg6os44K/44Kr44KzDQor44Ob44K3LOOCv+OCqg0KK+ODm+ODquOCvyzjgrfjg7PjgqTjg4ENCivjg57jgqjjgr7jg44s44OK44Or44OS44OHDQor44Oe44Ko44K444OeLOODn+ODjuODqw0KK+ODn+ODpOOCtuOCrSzjg6bjg5/jgrMNCivjgqLjg6njgqQs44Oo44K344OfDQor44Oi44OqLOOCs+OCueOCsQ0KK+ODnuOCqOODgCzjg5Ljg63jgrcNCivjgqrjg4Es44Kx44OzDQor44Ki44K144Kv44OpLOODjuODquOCqg0KK+OCpuOCteODnyzjgqLjg4TjgrcNCivjgqrjgq/jg6Tjg54s44K/44Kr44K3DQor44Kr44Oq44OkLOOCv+OCq+ODkuOCsw0KK+OCpuOCqOODgCzjg5Ljg4fjg6bjgq0NCivjgqrjgr/jg5ks44Kx44Kk44K+44KmDQor44Kt44Og44OpLOOCpOOCteODoA0KK+OCr+OCt+ODgCzjg6jjgrfjg4/jg6sNCivjgqLjg57jg48s44Kz44Km44K4DQor44Kz44Oz44OJLOODqOOCt+OCrQ0KK+OCt+ODn+OCuizjgrfjg6fjgqbjgqTjg4Hjg63jgqYNCivjgrnjgrrjgq0s44K344Ol44Km44Kz44KmDQor44K544OzLOOCueODn+OCqg0KK+OCv+ODieOCs+ODrSzjg5Ljg4jjgrcNCivjg4jjg43jgrXjgq8s44Kk44K144OgDQor44OK44Kr44Og44OpLOODkuODreOCtw0KK+ODnuOCueODgCzjg5Ljg63jgqoNCivjg5/jg6Tjgrbjgq0s44Of44OP44OrDQor44Oo44K344OK44KsLOOCouOCreODkuOCtQ0KK+ODqOOCs+OCq+ODryzjgr/jgq/jg54NCivjg4Tjg4Hjg6Qs44Oe44Om44OfDQor44K/44Kr44OP44K3LOODnuOCteODjuODqg0KK+OCv+ODiuODmSzjg57jgrXjgrgNCivjgqTjg4jjgqYs44Kx44Kk44K544KxDQor44OK44Ks44KqLOOCt+ODs+OCpOODgQ0KK+OCteODiOOCpizjgr/jgrHjgrcNCivjgr/jg4As44OI44Oi44OS44OtDQor44Ki44Kt44Oi44OILOOCt+ODpeODs+OCueOCsQ0KK+OCv+ODoOODqSzjg57jg6Ljg6sNCivjgr/jg6Djg6ks44Kr44K644Om44KtDQor44Kq44KrLOODn+ODgeODj+ODqw0KK+OCteOCr+ODqeOCrizjgrHjg7PjgqTjg4ENCivjgrnjgrrjgq0s44OS44Ot44K3DQor44Oi44Oq44Kq44KrLOOCv+ODgOOCtw0KK+ODpOOCsOODgSzjg6bjgqbjgrcNCivjg5/jg6Tjg6Ljg4gs44K144OI44K3DQor44K344Op44Kr44OvLOODkuODh+OCrQ0KK+OCquOCquODhOOCqyzjg5Ljg4fjgq0NCivjg6Tjg57jg6Ljg4gs44OI44Oi44Ok44K5DQor44OK44Kr44Oe44OBLOODpOOCueODleODnw0KK+ODr+OCq+ODj+ODqSzjg6TjgrnjgqoNCivjgqLjgq0s44K/44Kr44K3DQor44K/44Kt44K/LOOCq+OCuuODkuODrQ0KK+OCouODqeOCq+ODryzjgrHjgqTjgqTjg4ENCivjg57jg4Tjgqos44Kz44Km44K4DQor44OB44On44KmLOODpuOCpuOCpOODgQ0KK+OCr+ODreODgCzjgrfjgrLjg6sNCivjg6Tjg57jgrfjgr8s44K/44Ot44KmDQor44OI44Oi44Kq44KrLOOCqOODn+OCsw0KK+ODiuOCq+OCqizjg6/jgr/jg6sNCivjgqLjgr0s44OG44Or44Kr44K6DQor44OV44Kv44OALOODjuODluOCv+OCqw0KK+OCouOCquOCrSzjg5Ljg4jjgrcNCivjgq/jg6ss44OS44K144OIDQor44Og44Op44Kr44OfLOODpOOCueODkuODrQ0KK+OCr+ODreODgCzjgr/jgq/jg6QNCivjg5/jgqvjg58s44Ki44Kt44OS44OtDQor44Kr44Of44Og44OpLOODkuODreODpuOCrQ0KK+OCreOCv+OCuOODnizjg4rjgqrjgq0NCivjg57jg6vjg6Tjg54s44Oo44K344OS44K1DQor44K144K/44KxLOOCseODs+OCpOODgQ0KK+ODouODhuOCrSzjgr/jgrHjgrcNCivjg4jjg5/jgr8s44OV44KtDQor44OL44OvLOODleODn+OCsw0KK+OCv+OCq+ODkOOCv+OCsSzjgrfjgrLjg47jg6oNCivjgqLjgrrjg54s44Oe44K144OrDQor44OV44Or44OkLOOCteODgeOCsw0KK+ODiuOCuSzjg6jjgrfjg5Ljg60NCivjgrPjg6os44Oe44OqDQor44Kk44Kx44OALOODnuOCteODkuODrQ0KK+OCtOODiOOCpizjgrPjgqbjgrgNCivjg5Xjgq/jg4As44OS44Ot44Om44KtDQor44K544Ks44OP44OpLOOCuOODpeODs+OCuA0KK+OCreODoOODqSzjg4jjgrfjg5LjgrMNCivjgr/jgqvjgrss44Oe44OqDQor44OL44K344Kq44KrLOODquODp+OCpg0KK+ODleODq+OCq+ODryzjg4bjg4TjgqoNCivjgq/jg4njgqYs44Kx44Oz44Kk44OBDQor44K/44Kr44OP44K3LOOCseODs+ODiA0KK+ODpOODnuODouODiCzjg6jjgrfjg5Ljg60NCivjg5/jg6Tjg6Ljg4gs44Oq44On44Km44OY44KkDQor44OO44K/LOODpuOCreODkuODrQ0KK+ODiuOCq+ODoOODqSzjgrfjg47jg5YNCivjgqLjgq3jg5As44Of44OkDQor44Kk44Ov44KtLOODnuOCs+ODiA0KK+OCq+ODiOOCpizjgrfjg5sNCivjg6Ljg6rjg6Ljg4gs44Oe44K144Kr44K6DQor44OK44Kr44Og44OpLOOCq+OCuuODiOOCtw0KK+ODiuOCq+ODpOODnizjgqvjgrrjg6QNCivjgqrjgqrjgr/jg4ss44K344Ky44OS44OtDQor44K544Ku44Ok44OeLOODn+ODjuODqw0KK+OCueODsyzjg4jjg6jjg6bjgq0NCivjg6Tjg57jg6Ljg4gs44OS44Ot44K3DQor44Ob44Oz44OJLOODpuOCv+OCqw0KK+ODj+OCrCzjgqvjgq/jgrgNCivjgrfjgqrjgrbjgq0s44Kr44K644OS44KzDQor44OV44K444OOLOODn+ODjuODqw0KK+OCquODjizjgrHjg7PjgrgNCivjgqLjg7Pjg4njgqYs44Oo44K344KqDQor44Ok44Oe44Kw44OBLOODiOOCt+OCouOCrQ0KK+OCr+ODreODgCzjgr/jgqvjgrcNCivjgqbjg44s44Oq44On44Km44Kk44OBDQor44Kk44OI44Km44K/44OLLOOCv+OCseODkuOCsw0KK+OCquOCqyzjgqjjg4Tjg58NCivjg5/jgqbjg6ks44OO44OW44Om44KtDQor44OP44K344Oi44OILOOCq+ODig0KK+OCqOODouODiCzjg57jgrPjg4gNCivjgrPjgqws44OS44Ot44K3DQor44Kt44OP44OpLOODkuODreOCtw0KK+ODnuODhOODgCzjg5Xjg5/jgr/jg4ANCivjg6Tjg57jg4As44Ki44Kt44KzDQor44K/44Kr44OP44K3LOODqOOCpuOCpOODgQ0KK+ODpOODj+OCvyzjg5Ljg4fjgqoNCivjgr/jgrbjgq0s44Kx44Kk44K/DQor44Ok44Oe44Oi44OILOODquODpeOCpuOCpOODgQ0KK+OCv+OCq+ODgCzjg5Ljg63jg58NCivjg47jg4As44Oe44K144OE44KwDQor44K144Kk44Of44On44KmLOOCq+OCquODqw0KK+OCs+ODkOODpOOCtyzjgqLjg6njgr8NCivjg5Xjgrjjgq0s44Kx44Oz44K4DQor44K344Op44K144KrLOODleODn+OCqg0KK+OCv+OCq+ODj+OCtyzjg4jjgqrjg6sNCivjg6Tjg4Qs44Ki44OE44KqDQor44Km44Kq44K/44OLLOODleODn+ODkuOCsw0KK+OCv+ODoOODqSzjg4jjgrfjg5LjgrMNCivjg57jg4Tjgqos44K144OI44K3DQor44OK44Kr44K244OvLOOCv+OCr+ODpA0KK+OCreODgCzjg6bjgq3jgrMNCivjgr/jg7PjgrIs44OG44OE44Ot44KmDQor44OS44Ot44K7LOOCueOCueODoA0KK+ODnuODhOOCt+ODnizjg5/jg4Hjg6QNCivjgqrjgqvjg44s44K144OI44OrDQor44Ki44Kq44KtLOODqOOCpuOCpOODgeODreOCpg0KK+ODj+OCu+OCrOODryzjg6rjg6XjgqbjgrgNCivjg4vjgrfjg5vjg6os44OB44Kr44OpDQor44Kk44K344K644KrLOOCv+OCq+ODpA0KK+ODhOODnOOCpCzjg5Ljg4fjg6bjgq0NCivjgqTjgrfjg4As44Oe44K144OrDQor44OP44K344Oi44OILOOCteODiOODqw0KK+OCtOODiOOCpizjgrfjg7PjgrgNCivjgqLjgq3jg6Tjg54s44OS44Ot44KtDQor44Of44OE44OP44K3LOOCt+OCsuODqw0KK+OCtOOCt+ODnizjgqvjgrrjgqoNCivjg5Xjgq/jg4As44OS44Ot44K3DQor44Ok44Oe44K344K/LOODiuOCquODleODnw0KK+ODiuOCq+OCtuODryzjg5LjgrXjgrcNCivjg4vjgrfjgqvjg68s44OS44OI44K3DQor44Kk44Kx44Km44OBLOOCq+OCuuODpuOCrQ0KK+OCv+OCrOODnyzjgr/jgqvjgqoNCivjgqvjg6/jgq3jgr8s44Kx44Oz44K444Ot44KmDQor44OK44Kr44Og44OpLOOCrOOCrw0KK+OCs+ODnuOCpCzjgrPjgrnjgrENCivjg5vjgrfjg6Qs44Ki44Om44OgDQor44K544Of44OILOODnuOCteODleODnw0KK+ODm+OCt+ODjizjgqvjgrrjgqoNCivjg4rjgqvjg6Qs44K344Oz44Kk44OBDQor44OP44OpLOODn+OCuuODmw0KK+ODoOODreODpOODnizjgqvjgrrjg5LjgrMNCivjg6Ljg6os44OS44OH44KtDQor44K344Op44Kk44K3LOODnuOCteODkuODrQ0KK+ODkuODqeODjizjgrPjgqbjgrgNCivjg4/jgrfjg6Ljg4gs44Om44Km44KzDQor44Ki44OZLOOCuOODpeODs+OCuA0KK+OCpOOCt+OCq+ODryzjgqLjg6rjgqvjg4QNCivjgqLjgrrjg54s44Oo44K344OfDQor44Kq44Kq44OE44KrLOODjuODluOCqg0KK+OCpOODiOOCpizjgrHjgqQNCivjgqrjgrfjg54s44OB44Kr44KqDQor44Kz44K244KkLOOCreODqOODkuODrQ0KK+OCq+ODr+OCq+ODnyzjg57jgrXjg4jjgrcNCivjg4rjgqvjg44s44Og44ON44OS44KzDQor44Km44K444Oi44OILOODnuOCteODkuOCsw0KK+OCreOCt+ODgCzjg5Ljg4jjgrcNCivjgrPjgqTjgrrjg58s44OO44Oq44KzDQor44OK44Kk44OI44KmLOODiOOCt+ODkuODrQ0KK+ODqOOCt+OCuuODnyzjg6jjgrfjgq0NCivjgrnjgq7jg6Ljg6os44OI44K344OS44OtDQor44Ki44Kq44KtLOODiOODouODj+ODqw0KK+OCv+OCq+ODj+OCtyzjgrPjgqbjgqTjg4ENCivjgqTjgqws44OO44Oq44Kr44ONDQor44Kr44Ov44OQ44K/LOODjuOCvuODnw0KK+OCt+ODkOOCvyzjg5Ljg63jg5Ljg4cNCivjg4Djg7Ms44Oe44OK44OfDQor44K/44Kw44OBLOOCq+OCuuODkuODrQ0KK+ODnuODgeODgCzjg4jjg6LjgqoNCivjgqLjgrfjg4As44Om44Km44KzDQor44Ki44Oz44OJ44KmLOODhuOCpOOCuA0KK+ODoOODiOOCpizjgqvjg4Tjg47jg6oNCivjgrPjg6Tjg54s44Kt44Oo44OIDQor44K544K644KtLOOCseOCpOOCpOODgQ0KK+ODjuODoOODqSzjgrjjg6Xjg7MNCivjgqTjg4jjg6Qs44Oe44K144OI44K3DQor44OB44Kr44Kq44KrLOODhOODiOODoA0KK+OCuOODs+ODlizjg5/jg4Hjg6TjgrkNCivjgqLjg4Djg4Es44Oe44K144K3DQor44Kr44Ov44KkLOODpOOCueOCtw0KK+ODn+ODjuODryzjgrPjgqbjgqTjg4ENCivjgqLjgrXjg5Is44OI44K344Ki44KtDQor44Kq44Kq44K/LOODqOOCt+OCouOCrQ0KK+OCv+ODiuOCqyzjgq3jg6jjgrcNCivjgq3jg6ks44Oe44K144K3DQor44Ok44Oe44K244KtLOODn+OCqw0KK+ODpOODnuOCpuODgSzjg5/jg4Tjg6sNCivjg5vjg4Pjgr8s44Oo44K344OO44OqDQor44Ki44Op44Kr44OvLOOCt+OCsuOCqg0KK+OCquOCr+ODoOODqSzjgrjjg6Xjg7MNCivjgqvjg43jgrMs44Kk44K/44OrDQor44Ki44Ok44OOLOOCs+OCpuOCrQ0KK+ODj+ODpOOCq+ODryzjg4jjg6Ljg4rjg6oNCivjgqTjg4jjgqYs44Oe44K144OS44KzDQor44Kq44Kv44Og44OpLOODkuOCteODjuODqg0KK+OCv+ODs+OCtuODryzjgr/jg4TjgqoNCivjgrXjgq3jg44s44Oo44K344OS44OtDQor44Kr44Ov44OP44OpLOODiOOCquODqw0KK+OCv+ODq+OCpCzjg6jjgrfjgqoNCivjgqLjg6rjg6Ljg4gs44Ki44OE44K3DQor44Ko44OT44KzLOODiOODouODiuODqg0KK+ODkuODjizjgqvjg4Tjg6QNCivjg6Tjg57jg4As44K344On44Km44Oo44KmDQor44Kq44Kq44OOLOOCr+ODnw0KK+OCv+OCseOCt+OCvyzjg6bjg6rjgrMNCivjg4/jg6Tjgrcs44Kt44On44Km44KzDQor44Kk44K344OALOOCseODsw0KK+OCt+OCquODpCzjgr/jgrHjgrcNCivjgqLjg7Pjg4njgqYs44OO44Oc44OrDQor44Oe44OE44OQ44OpLOODnuOCteODleODnw0KK+ODi+OCt+ODgCzjg57jgrXjg6sNCivjg4rjgqvjg6Djg6ks44Oe44K144OO44OqDQor44Kk44Kx44OALOOCuOODpeODsw0KK+ODj+ODpOODnyzjg5Ljg4fjgqoNCivjgrnjgrrjgq0s44K344On44Km44K+44KmDQor44Kq44Ks44OvLOOCouOCreODqQ0KK+OCpOOCt+OCq+ODryzjg4jjgrfjgqLjgq0NCivjgqLjgrXjg58s44Kx44Oz44K4DQor44OP44K/44Kx44Ok44OeLOOCv+OCq+OCtw0KK+ODm+ODquODn+OCvizjgrHjgqTjgrnjgrENCivjg57jg6vjgr/jg4ss44OB44OS44OtDQor44K144OI44KmLOOCouOCreOCqg0KK+OCteOCq+ODiuOCqyzjgqvjgrrjgqoNCivjg4rjgqvjg6Djg6ks44OI44Oi44OS44KzDQor44Kk44OI44KmLOOCq+OCquODqw0KK+ODleODq+ODiuOCrCzjg4/jg6vjg5LjgrMNCivjg5Xjgq/jgrfjg54s44Oe44K144OIDQor44Of44K644Ks44OfLOODqOOCt+ODpuOCrQ0KK+OCv+OCseOCpuODgSzjg5/jg4HjgqoNCivjg4jjg6rjgqbjg58s44Of44OO44OrDQor44ON44Ku44K3LOOCt+OCsuOCrQ0KK+OCs+ODpOODnizjgqLjgq3jg47jg6oNCivjgqrjgrfjg54s44OK44K544KqDQor44Kr44K/44Kq44KrLOOCv+OCq+OCtw0KK+OCv+OCreOCsOODgSzjg5Ljg4fjg5Xjg58NCivjgrPjg57jg4Qs44Kr44K644KqDQor44Ok44KuLOOCv+OCq+OCtw0KK+OCv+OCq+OCrizjg6jjgrfjgqoNCivjg57jgrnjgqQs44OG44OE44Ot44KmDQor44OP44Ok44K3LOODkuODiOOCtw0KK+OCouODjeOCv+OCpCzjg57jgrXjg6bjgq0NCivjgq3jg4/jg6ks44Kx44Oz44Kk44OBDQor44K144Kk44OI44KmLOOCt+OCsuOCqg0KK+OCreOCv+ODr+OCrSzjg5/jg4Hjg5LjgrMNCivjg47jgrDjg4Es44OS44Ot44Of44OBDQor44K144Kr44Kw44OBLOODouODiOOCpA0KK+ODi+OCtyzjg6bjgq3jg5/jg4QNCivjgqTjgrHjg4As44OG44OE44KqDQor44K144OI44KmLOOCv+OCq+OCtw0KK+OCpOODnuOCpCzjg57jgrXjg5Ljg4gNCivjg6Tjg57jg4As44K344Ky44Kk44KvDQor44K/44OK44KrLOODpOOCueODkuOCtQ0KK+OCquOCquOCteOCsyzjg57jgrPjg4gNCivjgrPjg6Djg60s44Kr44OK44OhDQor44K144Kk44OI44KmLOODkuODh+OCrQ0KK+OCueOCuuOCrSzjgrHjg7PjgqTjg4ENCivjg5Xjg4rjg4jjgqzjg68s44Om44Kr44OqDQor44Kk44K344KkLOODhuODq+OCouOCrQ0KK+ODnuODhOOCpCzjg47jg5zjg6sNCivjgrnjgqjjg5Ljg6ks44OS44OI44K3DQor44OS44Ot44K/44OLLOODqOOCt+OCqg0KK+ODkuOCrOOCtyzjgq3jg6jjgrcNCivjgqTjg6Djg6ks44Ki44OE44KzDQor44Ki44OZLOODpOOCueODjuODqg0KK+ODqOODjeOCr+ODqSzjg47jg5bjg4jjgrcNCivjg6/jgr/jg4rjg5ks44Oo44K344Of44OEDQor44K544KsLOODkuODreOCtw0KK+OCteODjizjg5Ljg63jgrcNCivjgrfjg5As44OI44Oi44K4DQor44Ok44Oe44Kw44OBLOOCt+ODpeODs+OCuA0KK+OCreOCtuODryzjg6jjgrfjg5Ljg60NCivjgqvjgrXjg57jgq0s44Oo44K344Ot44KmDQor44Kt44Og44OpLOOCseOCpOOCueOCsQ0KK+ODhOODq+ODnyzjgqLjgq3jg5LjgrUNCivjgqLjgqrjgq0s44K344On44Km44KzDQor44Kk44K344OALOODouODiOOCtw0KK+ODouODrSzjgqLjgq3jgqoNCivjgqrjgq/jg6Djg6ks44OS44Ot44Om44KtDQor44K/44Kr44KuLOOCs+OCpuOCuA0KK+OCpOOCseODpCzjg5/jg4HjgqoNCivjg4jjg5/jg6Tjg54s44Kr44K644Of44OEDQor44Ok44KuLOOCv+OCq+OCqg0KK+ODiOODn+OCrSzjg4bjg4Tjg63jgqYNCivjg4jjg47jg6Djg6ks44Of44OO44OrDQor44Ok44OE44K644KrLOODiOOCt+ODkuODrQ0KK+ODluODnizjgrHjg7Pjgrfjg6fjgqYNCivjg4rjgqvjgrbjg68s44OV44Of44OI44OiDQor44Ok44Oe44K244KtLOODqOOCpuOCsw0KK+ODnuODhOOCt+OCvyzjgrfjg47jg5YNCivjgqTjg4As44K344OzDQor44K544K644KtLOODqOOCt+ODkuODrQ0KK+ODiuOCq+ODjizjg6Tjgrnjg5Ljg60NCivjgqvjg6/jgrDjg4Es44Oe44K144KqDQor44K/44Kr44OP44K3LOODhOODiOODoA0KK+OCpOOCt+ODgCzjgrfjg6fjgqbjgqTjg4Hjg63jgqYNCivjgqbjg4As44K144OI44OrDQor44OV44K444Ov44OpLOODquODpeOCpuOCuA0KK+OCs+OCpOODhyzjg4jjgrfjgr/jgrENCivjg4Tjgqvjg4As44OY44Kk44OP44OBDQor44OS44Op44Ok44OeLOODkuODreOCtw0KK+OCpuODgeODiOODnyzjgqLjgq3jg6kNCivjgqTjg57jg4/jg6ks44OS44Ot44Oo44K3DQor44Km44Ko44OALOODkuODiOOCtw0KK+OCteOCteOCq+ODryzjg6jjgrfjg5Ljg60NCivjgqLjgqTjgqvjg68s44K/44Kr44Ki44KtDQor44Km44Ko44KtLOOCv+OCq+ODqOOCtw0KK+ODiuOCq+ODpOODnizjg6jjgrfjg58NCivjgqrjgqrjgrXjg68s44Oo44K344Kr44K6DQor44K/44Kr44Kq44KrLOODiOOCt+ODpuOCrQ0KK+ODr+ODgCzjg4Tjgq7jgqoNCivjgqTjg4zjgrrjgqss44Kv44OL44OS44K1DQor44K/44OK44KrLOOCs+OCpuOCreODgQ0KK+OCv+OCseODgCzjgq3jg6jjgr/jgqsNCivjg6Tjg57jg4As44OO44Oc44OrDQor44Ok44OK44KuLOODkuODh+ODkuODrQ0KK+OCv+OCseOCt+OCvyzjg6jjgrfjgr/jgrENCivjg4vjgrcs44K/44OE44OS44KzDQor44Kq44Kq44K/44KxLOODpuOCpuOCpOODgQ0KK+ODi+OCv+ODiuOCpCzjgrfjgrLjgqoNCivjg5vjg7Pjg54s44OO44OW44OS44KzDQor44OK44Kr44OOLOODqOOCt+ODjuODqg0KK+ODn+ODpOOCt+OCvyzjg5Ljg4fjgq0NCivjgqbjgqjjg44s44K444Ol44Oz44K444Ot44KmDQor44OQ44OQLOOCteODgOODoA0KK+ODn+ODpOOCtuOCrSzjg57jgrXjgqoNCivjgq/jg4vjgqQs44OE44OI44OgDQor44Kz44OQ44Ok44K3LOOCseOCpOOCuA0KK+ODnuOCueODgCzjg5Ljg63jgrcNCivjgr/jgqvjg4/jgrcs44Kz44Km44K4DQor44OE44Kr44KqLOODkuODreOCrQ0KK+OCq+ODr+ODoOODqSzjgr/jgqvjg6bjgq0NCivjgqvjg6/jg5Djgr8s44Kz44Km44K+44KmDQor44Ki44Kr44K144KrLOOCuOODpeODs+OCsw0KK+OCpOOCpOODgCzjg4bjg4Tjg6QNCivjgrfjg6njg4/jg54s44K/44OA44K3DQor44OI44Ks44OvLOODkuODreODpuOCrQ0KK+OCpOODiOOCpizjg5Ljg4fjgqTjg4ENCivjgqrjgqvjg5ks44Oe44K144K3DQor44Ov44K/44OK44OZLOODkuODreOCqg0KK+OCteOCq+ODkCzjg4jjgrfjg5Ljg60NCivjg5Ljg63jgrXjg68s44OS44OI44K3DQor44OK44Kr44Og44OpLOOCt+OCsuODqw0KK+ODpOOCueOCpCzjgrXjg4jjgrcNCivjg5Ljg6njgr8s44Kr44K644OS44K1DQor44Kt44K/44Ks44OvLOOCt+ODs+OCpOODgQ0KK+OCouODnuODjizjg4bjg4Tjg6QNCivjg4Tjgrjjg6Djg6ks44Ko44OE44Ot44KmDQor44Kr44Ov44K144KtLOOCs+OCpuOCpOODgQ0KK+OCpuOCqOODoOODqSzjgr/jgrHjgrcNCivjg6Djg6njgqvjg58s44K344Ky44OKDQor44Kk44OO44Km44KoLOOCreODqOOCtw0KK+ODj+OCvCzjgrHjg7MNCivjg4jjgrfjg5Ljg60s44Kt44Of44OS44OtDQor44Kz44OQ44Ok44K3LOOCt+OCsuODpuOCrQ0KK+OCpOODjizjgr/jg4Djg47jg6oNCivjgqLjgrXjg44s44Om44Km44Kk44OBDQor44Oi44OqLOOCs+OCpuOCuA0KK+OCpOODiuOCtuODryzjgrPjgqbjg6jjgqYNCivjgrPjg5Djg6Tjgrcs44OG44Or44OS44OtDQor44K144Kr44KtLOODqOOCt+ODkuOCsw0KK+OCpuODgeODpOODnizjgrvjgqTjgrgNCivjg57jg4rjg5ks44Ok44K544KtDQor44Kq44Kq44Ok44OeLOOCseODs+OCuA0KK+OCt+ODn+OCuizjg57jgrXjg5LjgrMNCivjg6jjg43jg6Djg6ks44OS44Ot44Om44KtDQor44OQ44Op44OALOOCouOCreODkuOCsw0KK+ODleODq+OCvuODjizjg6jjgrfjgqvjgroNCivjg5Xjgrjjg6Ljg4gs44Kr44K644Ki44KtDQor44K144OOLOODnuODouODqw0KK+OCq+ODr+ODjizjgqjjgqTjgrMNCivjg5vjgrfjgqvjg68s44Kz44Km44K4DQor44K144K144Oi44OILOODouODiOODhOOCsA0KK+OCueODieOCpizjg57jgrXjg4gNCivjgrXjg4jjgqYs44K/44Kr44KqDQor44OP44Ok44K3LOODkuODreOCtw0KK+ODkOODkCzjg5Ljg4fjg47jg6oNCivjg5Djg5As44OS44OI44K3DQor44Kq44Kq44Ok44ONLOODkuODh+OCqg0KK+ODiuOCrOOCteODryzjg6Tjgrnjg6bjgq0NCivjgrXjgqvjg6Ljg4gs44Oe44K144OP44OrDQor44Ki44Kq44KtLOOCu+OCpOOCuA0KK+ODoOODiuOCq+OCvyzjg57jgrXjg4/jg6sNCivjgqTjg4jjgqYs44K344Oz44Kk44OBDQor44Kr44Ov44OQ44K/LOODkuODreODpuOCrQ0KK+OCueOCruODouODiCzjg5/jg4HjgqoNCivjg5Djg7Pjg4njgqYs44K444Ol44OzDQor44OO44Og44OpLOOCouOCreODkuOCsw0KK+OCs+ODs+ODjizjg6jjgrfjg5/jg4ENCivjgqvjg6/jgqQs44Kr44K644OO44OqDQor44Km44Ko44OOLOODjuODluODpuOCrQ0KK+ODj+ODqeODgCzjg5Ljg63jgrcNCivjgqvjg47jgqYs44Ki44Kt44OpDQor44Kq44Kq44OP44K/LOODn+OCreOCqg0KK+OCueODieOCpizjgr/jgqvjgrcNCivjg57jg4Tjg4As44OS44OI44K3DQor44Kk44Kx44Ks44OfLOODnuOCs+ODiA0KK+OCt+ODqeOCpCzjgrHjg7Pjgrfjg7MNCivjgrXjg4jjgqYs44K/44Kr44Ki44KtDQor44K144Kr44KkLOOCv+OCseOCtw0KK+OCquOCrSzjg4jjgrfjg6bjgq0NCivjgqvjg6/jg6Djg6ks44Kx44Oz44K4DQor44Ok44Oe44OALOODkuODreOCqg0KK+OCpOODiOOCpizjgqLjgq3jg5LjgrUNCivjgqTjgqvjg58s44OP44Or44KqDQor44Ki44K644Oe44KqLOODkuODh+ODiA0KK+ODleOCuOODoOODqSzjg4jjgqrjg6sNCivjgq3jgr/jg6Djg6ks44Om44Km44K4DQor44OI44Ks44OfLOODiOOCt+ODnw0KK+OCs+OCueOCsizjg57jgrXjgqoNCivjgrvjgq0s44OS44Ot44Om44KtDQor44Kr44Ov44K344OeLOODiOODouODpuOCrQ0KK+OCv+OCq+OCpCzjg6bjgqbjgrQNCivjgqLjgq3jg6Tjg54s44Om44Kt44KqDQor44K544K644KtLOODiOOCt+ODleODnw0KK+ODiuOCq+ODoOODqSzjgrfjg6XjgqbjgqTjg4ENCivjg4vjgrfjg44s44K/44Kr44Om44KtDQor44Of44Ok44KxLOOCv+OCq+ODkuODrQ0KK+ODqOODjeODouODgSzjg6Ljg4jjgrgNCivjgr/jgqvjgrfjg54s44K344Ky44KqDQor44K144Kr44KkLOODiOOCt+ODjuODqg0KK+OCquOCquODhOOCrSzjgqLjgq3jg4jjgrcNCivjgqvjg6/jgrXjgq0s44Of44KtDQor44OL44K344Kr44OvLOOCv+OCreOCqg0KK+OCteOCr+ODqeOCpCzjgrHjg7PjgrgNCivjgrnjgq4s44OS44OH44Ki44KtDQor44Ob44Oq44Kz44K3LOODiOOCquODqw0KK+ODouODqizjgqvjg4Tjg6QNCivjg4/jgrHjg4As44K/44Kr44K3DQor44OL44Kk44OALOOCt+ODs+OCpOODgQ0KK+OCreOCr+OCv+ODiyzjgrXjg4jjgrcNCivjgr/jgrHjg47jgrfjgr8s44K344Ol44Km44OY44KkDQor44K/44Kr44OP44K3LOODkuODreODnw0KK+OCv+ODiuODmSzjg57jgrXjgrMNCivjgqTjgrHjg6Ljg4gs44OO44Oq44KzDQor44Oe44OE44Ok44OeLOODpuOCreOCsw0KK+ODqOOCt+OCtuODryzjg6jjgrfjg5LjgrUNCivjgqLjgqvjgqQs44Of44OO44OrDQor44OL44K344Kq44KrLOOCu+OCpOOCpOODgeODreOCpg0KK+OCv+OCseODouODiCzjg47jg5bjgqoNCivjg4jjgq/jg4As44Oo44K344KqDQor44Kq44Kq44Oi44OqLOODpOOCueODkuODrQ0KK+OCq+ODiOOCpizjgr/jg4TjgrcNCivjgqvjg6/jg4gs44OV44Of44KqDQor44Oe44Ko44OALOOCveOCpuOCpOODgQ0KK+OCr+ODreOCrSzjg57jgrXjg6jjgrcNCivjgqTjgqTjg4As44Kv44Of44KzDQor44Kz44Ok44OK44KuLOODj+OCuOODoQ0KK+ODnuODhOODiuOCrCzjgqLjg4TjgrcNCivjgqTjg4jjgqYs44Ok44K544Ki44KtDQor44Ok44Oe44Oi44OILOOCv+ODhOOCqg0KK+ODhOODhOOCpCzjg4jjgrfjgqLjgq0NCivjgr/jg4rjgqss44Of44OO44OrDQor44OV44Kv44K344OeLOOCt+ODpeODs+OCpOODgQ0KK+OCs+OCuOODnizjg6jjgrfjg5LjgrMNCivjg4vjgrfjg4As44Of44OE44KwDQor44OL44K344Ok44OeLOOCuOODpeODs+OCsw0KK+OCueOCuuOCrSzjg4DjgqTjgrnjgrENCivjgqTjgqTjgrjjg54s44K/44Kr44K3DQor44K/44Oe44KkLOOCueOCueODoA0KK+OCs+ODs+ODjizjgqrjgrXjg6ANCivjg5/jg57jgrks44OI44K344Of44OEDQor44Oo44ON44OP44OpLOOCu+OCpOOCpOODgQ0KK+ODqOOCt+ODgCzjgqvjgrrjg58NCivjg5Xjgq/jg4As44OS44Ot44K3DQor44K144OI44KmLOODkuODreOCouOCrQ0KK+ODpOODnuODouODiCzjg5Ljg63jgrcNCivjgq3jgr/jgrQs44OO44Oc44OrDQor44K144Oz44OOLOODiOODouODiOOCtw0KK+ODpOOCteOCqyzjg4jjgrfjgqoNCivjg6Djg6njgr8s44K344Ky44OfDQor44OK44Kr44Oi44OILOOCouOCreOCtw0KK+OCteOCr+ODqeOCpCzjgqvjgrrjgrfjgrINCivjg4/jg6njg4As44Oo44K344Oi44OIDQor44K144OI44KmLOOCouODhOOCqg0KK+OCteOCpOODiOOCpizjg5/jg4TjgqoNCivjgr3jg40s44Kx44Kk44KzDQor44OP44K544OfLOOCouOCreODkuODrQ0KK+ODkuODqeOCvyzjgqvjgrrjg5Ljg60NCivjg6Tjg4rjgq7jgrXjg68s44OO44OW44KqDQor44K/44OB44OQ44OKLOODqOOCpuOCsw0KK+OCpOODiOOCpizjg57jgrXjgrrjg58NCivjg4/jg6ks44Ki44Kt44OpDQor44K144Kk44OI44KmLOODiOOCt+ODkuODrQ0KK+OCpOODiOOCpizjgrPjgqbjgqTjg4ENCivjgr/jg4rjgqss44Kr44K644OkDQor44Km44OB44Ok44OeLOOCt+OCsuODqOOCtw0KK+OCq+OCrOODryzjgrHjgqTjgqTjg4ENCivjgr/jgq3jgrbjg68s44Om44Km44K444OzDQor44K344OK44Ks44OvLOOCr+ODi+ODkuOCsw0KK+OCq+OCreODj+ODqSzjgrfjg63jgqYNCivjgrnjgqzjg4zjg54s44K444Ol44Oz44Kk44OBDQor44Kr44Oh44KkLOODiOOCt+ODpA0KK+OCquOCr+ODhCzjgqvjgrrjg4jjgrcNCivjgqTjgrfjgqvjg68s44K344On44Km44K344Ol44OzDQor44K544Ku44Km44OpLOODouODquOCqg0KK+OCpuODoeODgCzjg5LjgrXjgrcNCivjg5/jg4rjgrDjg4Es44Kk44OB44Ot44KmDQor44Ob44K344OOLOOCv+OCseODkuOCsw0KK+ODi+OCt+ODpOODnizjgrvjgqTjgrgNCivjgr/jgrHjg4As44K/44OE44OkDQor44K144Kr44KkLOOCreOCpOODgeODreOCpg0KK+ODpOODhOODgCzjgr/jgrHjgrcNCivjg6Ljg6rjgr8s44Kx44Kk44K+44KmDQor44K144Kt44OeLOODiuOCquODkuODrQ0KK+OCouODqeOCpCzjg6bjgr/jgqsNCivjgr/jgrHjg4As44K/44Kr44KzDQor44K/44Og44OpLOODqOOCt+OCsw0KK+OCquOCq+ODgCzjg4/jg6vjg58NCivjg6Tjg57jg40s44OB44OP44OrDQor44OK44Kr44Og44OpLOODpuOCpuOCpOODgQ0KK+OCouOCquODjizjgr/jg4TjgqoNCivjgrnjgq7jg6Tjg54s44Kr44ON44Oo44K3DQor44OV44Oq44OP44OpLOOCq+OCuuOCqg0KK+ODr+OCv+ODiuODmSzjg47jg5bjg4gNCivjgqvjg4Qs44OE44Kr44K1DQor44K144OP44OpLOODkuODreODnw0KK+OCq+OCr+OCvyzjgqLjgq3jg5LjgrMNCivjgqjjg47jg6Ljg4gs44K/44Kr44K3DQor44Ov44K/44OK44OZLOODnuOCs+ODiA0KK+ODpOODluOCrSzjg57jgrXjg5Ljg60NCivjgqLjg57jgrXjgq0s44Kz44Km44Kk44OBDQor44Oo44Kz44K/LOODnuOCteODkuODhw0KK+ODm+ODquODjuOCpuODgSzjg4jjgrfjgqLjgq0NCivjgq3jg4/jg6ks44OE44ON44KqDQor44K/44Kx44OALOODhOODq+ODnuODhA0KK+OCpOODjeODiizjg57jgrXjg5LjgrMNCivjg4rjgqss44Kr44K644OS44OtDQor44Kk44OB44Ok44OK44KuLOOCv+ODgOOCtw0KK+OCueOCuuOCrSzjgrfjg6fjgqbjgrHjgqQNCivjg4rjg6vjgrfjg54s44OK44Kq44Kt44OBDQor44K344Op44Kk44K3LOOCv+OCq+OCtw0KK+OCquODjizjg4jjgqrjg6sNCivjg6jjgrfjgqrjgqss44Kr44K644OkDQor44Oe44OE44Km44OpLOODkuODreOCq+OCug0KK+ODleOCuOOCvyzjg4bjg4TjgrgNCivjgqTjg6/jg58s44OI44Oo44OP44OrDQor44OI44Kv44K344KyLOOCseOCpOOCuA0KK+OCv+ODiuODgCzjgq3jg5/jg5LjgrMNCivjgqrjgqvjg44s44Kr44K644Oe44K1DQor44Oi44OB44K644KtLOOCv+OCq+ODpuOCrQ0KK+OCv+OCq+OCt+ODnizjgrPjgqbjgqTjg4ENCivjg4jjg6rjgqbjg58s44Kr44K644KqDQor44K/44Kr44OfLOODqOOCt+OCv+OCqw0KK+ODj+ODpOOCuyzjg4jjg6Ljg6bjgq0NCivjgr/jgqvjg4/jg6ks44Ko44Kk44K4DQor44Kt44OzLOODnuOCteODpuOCrQ0KK+OCueOCruODpOODnizjg5Ljg4fjg5Ljg60NCivjgq3jgr/jgrjjg54s44Kz44Km44K4DQor44OL44OD44K/LOODqOOCt+ODjuODlg0KK+OCquOCqyzjg6bjgq3jg47jg5YNCivjgqrjgqrjg4/jgrcs44OS44Ot44K3DQor44OP44Op44OALOOCreODj+ODgeODreOCpg0KK+ODr+OCreOCteOCqyzjg5Ljg63jgrcNCivjgqTjg6/jg4rjgqws44Kx44Kk44Kk44OBDQor44Kr44Ov44K344OqLOODn+ODhOOCqg0KK+OCpOODiuODouODiCzjg57jgrXjgqvjgroNCivjgrXjg68s44OS44Ot44Om44KtDQor44K/44Kx44OALOOCv+OCseODkuOCsw0KK+OCpOOCpOODgCzjg6jjgrfjg5Ljg4gNCivjgqvjgrjjg44s44Oe44Oi44OrDQor44Of44OvLOODj+ODq+OCq+OCug0KK+ODleOCr+OCpCzjgrHjgqTjgqTjg4ENCivjgrnjgqjjg4rjgqws44OI44Kq44OrDQor44Kv44OL44Ko44OALOODpuOCv+OCqw0KK+OCreOCv+OCquOCqyzjgqvjgrrjg5LjgrMNCivjgqTjg4ks44OI44Kq44OrDQor44Kq44Kv44OALOODquODp+OCpuOCueOCsQ0KK+ODm+ODquOCq+ODryzjgqvjg4Tjgq0NCivjgrnjgqjjg6Ljg4gs44OG44OE44OkDQor44Oo44Kz44Ok44OeLOODiOOCt+ODkuODrQ0KK+ODleOCuOODouODiCzjg4jjg5/jgqoNCivjgq3jgrss44K344On44Km44K4DQor44OL44K344Og44OpLOODkuODh+ODkuOCsw0KK+OCv+OCq+ODgCzjgrPjgqbjgrgNCivjg4Tjgqvjg4As44Oe44K144Kr44K6DQor44OI44Oo44OALOOCqOOCpOOCuA0KK+OCteODjizjg4jjgqrjg6sNCivjg4vjgrfjg4As44Oe44K144OS44KzDQor44Kq44Kq44Oi44OqLOOCpOODgeODreOCpg0KK+OCquOCtuOCrSzjg4jjgqrjg6sNCivjgqTjgrfjg57jg6ss44K344Ky44Ok44K5DQor44K/44OK44KrLOOCs+OCpuOCpOODgQ0KK+OCq+OCt+ODr+ODkOODqSzjg47jg5zjg6sNCivjgqLjgrXjg44s44Ok44K544Kr44K6DQor44OS44Op44OOLOOCt+ODs+OCuA0KK+OCv+ODi+ODpOODnizjg4bjg4Tjg63jgqYNCivjgqbjg6Hjg5Djg6Tjgrcs44Kx44Oz44K4DQor44Kq44Og44OpLOODkuODh+OCqg0KK+OCteOCq+OCsOODgSzjgq3jg6jjgqvjgroNCivjgqrjgqvjg6Djg6ks44K344On44Km44K0DQor44Ok44Oe44Oi44OILOOCouOCreODqQ0KK+OCqOODgeOCtCzjgrPjg6zjgqLjgq0NCivjgrXjg6/jg4As44Ok44K544OS44KzDQor44Oo44Kz44KkLOOCq+OCuuODpuOCrQ0KK+OCreOCv+ODoOODqSzjg6rjgqsNCivjg6Tjgrks44Kr44Kq44OrDQor44K/44Kr44KqLOOCuOODpeODs+OCsw0KK+OCq+ODhOODqeOCquOCqyzjgrfjg7Pjgr7jgqYNCivjg4Tjg5zjgqQs44Oe44K144OS44KzDQor44OE44K4LOOCt+OCsuOCqg0KK+OCv+OCq+ODj+OCtyzjgqLjgq3jgqoNCivjgrnjgq7jgq0s44K/44Kr44KtDQor44K/44Kx44Km44OBLOOCv+OCq+ODkuODrQ0KK+OCq+ODnyzjg4jjgrfjgqvjgroNCivjgrPjg5Djg6Tjgqvjg68s44Ok44K544OS44KzDQor44Ki44Kq44OILOOCuOODhOOCuA0KK+OCv+ODgCzjg6jjg6rjgrMNCivjg5Ljg4Djgqss44OO44Oq44KzDQor44OL44K344Og44OpLOODgeOCqOOCsw0KK+OCqOODkOODqSzjg4Tjg43jgqoNCivjg5/jgrrjg6Ljg4gs44Kr44K644OkDQor44K544K644KtLOOCreODqOOCtw0KK+OCt+OCpOODiizjg4/jg6vjg6jjgrcNCivjgrfjgqrjgr8s44Of44OE44OS44KzDQor44OK44Kr44OP44OpLOOCs+OCpuOCpOODgQ0KK+OCtOOCpuODgCzjgq3jg6jjgrcNCivjg5Xjg6vjgr8s44Oe44K144OS44K1DQor44Oe44K544Oi44OILOOCuOODpeODs+OCpOODgQ0KK+ODiuOCq+OCrOODryzjgq3jgqTjg4ENCivjgqTjg4ks44K/44Kr44Om44KtDQor44Oo44Oq44OV44K4LOODjuODnOODqw0KK+ODnuODhOODouODiCzjgqLjgq3jg6kNCivjgrXjgqTjg4jjgqYs44Kv44OL44Ki44KtDQor44OK44OE44KkLOODkuODh+OCrQ0KK+OCpuOCquODjizjgqvjgqrjg6oNCivjgr/jg4rjgrQs44Kx44Kk44KzDQor44K/44Oe44Ks44OvLOODjuODquODkuODiA0KK+OCquOCqyzjgr/jgqvjgrcNCivjg5Xjgq/jgrfjg54s44Oe44K144OrDQor44Kq44Kr44OALOODpuOCpuOCsw0KK+OCreODjuOCt+OCvyzjg5Ljg4fjg5LjgrMNCivjgrfjg5/jgros44Ki44Kt44OpDQor44Kz44OQ44Ok44K3LOOCreODqOOCv+OCqw0KK+ODjuODgCzjg57jgrXjgrcNCivjgqvjg47jgqYs44OE44Kw44OS44OtDQor44Kr44K444Kq44KrLOOCouOCreODkuODiA0KK+OCquOCquODjizjgr/jgqvjgrcNCivjgqrjgqrjg4/jgrcs44Oe44K144Om44KtDQor44Kz44OQ44Ok44K3LOODpuOCpuOCpOODgQ0KK+OCs+OCpOOCuuODnyzjgqTjgq/jgqoNCivjgr/jg4rjgqss44OS44OI44K3DQor44OV44Kv44OALOODiOOCt+ODpA0KK+ODiuOCq+OCtuODryzjg47jg5zjg6sNCivjg5vjg6rjgqvjg68s44K144OI44K3DQor44Km44OB44Ok44OeLOODouODquODkuODrQ0KK+OCpOOCuuOCv+ODiyzjgrjjg6Xjg7PjgqTjg4ENCivjgr/jgq3jgqQs44OI44K344KzDQor44K/44Kr44K7LOODjuODluODhOOCsA0KK+ODnuOCueOCtuOCrSzjgr/jgqvjgrcNCivjgqLjg7Pjg4njgqYs44OI44Kq44OrDQor44Kr44K/44Ku44OqLOOCt+OCsuOCpOODgeODreOCpg0KK+ODouODquODpOODnizjg4jjgrfjg6QNCivjgrXjg4jjgqYs44Ki44Kt44OS44OtDQor44OS44Or44Kr44OvLOOCteODiOOCtw0KK+OCpuOCqOODgCzjg57jgrXjgqoNCivjg4rjgqss44OI44K344K/44KrDQor44Of44Ok44K244KtLOODkuODreOCtw0KK+OCquOCquOCr+ODnCzjg57jgrXjgr/jgqsNCivjgr/jg4Hjgqvjg68s44Oe44Kz44OIDQor44Ov44K/44OK44OZLOODn+ODgeODiuOCqg0KK+OCouOCteOCq+ODryzjgrvjgqTjgrgNCivjgqvjg6/jg4/jg6ks44Oe44K144OkDQor44Kq44K144OALOODj+OCuOODoQ0KK+OCteOCq+OCpCzjg4/jg6vjgqoNCivjgq/jg6rjg6Tjg54s44K144OK44KoDQor44K144Kk44OI44KmLOOCs+OCuuOCqA0KK+OCueOCreOCrOODqSzjg6jjgrfjgrMNCivjgqLjgrHjg5Is44Kv44Of44KzDQor44OP44Ok44K3LOOCreODqOODnw0KK+OCq+ODr+OCvyzjg4rjgqrjg58NCivjgrfjg57jgqzjgq0s44Of44K144KoDQor44Ob44OqLOOCq+OCuuODqA0KK+ODjuODoOODqSzjg6jjgrfjgrMNCivjg4jjg6Djg6ks44K344Oz44Kk44OBDQor44Kv44OcLOOCreODqOOCsw0KK+ODi+OCt+ODouODiCzjg47jg6rjg5Ljg4gNCivjg6jjgrfjg4As44Kz44Km44K4DQor44K144KuLOOCv+OCq+ODqOOCtw0KK+OCq+ODs+ODjizjgrHjgqTjgrMNCivjg6Tjg5bjg44s44Oe44K144KtDQor44Ok44K544OK44KsLOODkuODreODpuOCrQ0KK+ODkuOCrOOCt+OCpuOCqCzjg5Ljg63jg5Ljg4gNCivjgrPjgrXjgq0s44Oe44K144Om44KtDQor44OK44KrLOODiOOCt+ODkuODrQ0KK+OCquODjizjg4jjgqrjg6sNCivjg6Djg6njgr8s44Kz44Km44K+44KmDQor44K344On44Km44K4LOODkuODh+OCouOCrQ0KK+OCq+ODr+ODouODiCzjgqLjgq3jg5Ljg60NCivjgqjjgrXjgq0s44Oe44K144OrDQor44Ko44Kk44OJ44OhLOODkuODh+OCq+OCug0KK+OCueOCuuOCrSzjg6bjgr/jgqsNCivjg6Ljg4jjg6Tjg54s44Ok44K544Kr44K6DQor44OP44Oe44OALOOCouOCreODqQ0KK+OCs+OCt+OCq+ODryzjg4jjgrfjgqoNCivjg4/jg6Tjgrcs44Oe44K144OP44OrDQor44Ok44Oe44K244KtLOODpuOCreODpA0KK+ODnuODhOODouODiCzjg6jjgrfjg57jgrUNCivjgqrjg44s44K344Oz44Kk44OBDQor44OP44OK44OvLOOCv+ODgOOCtw0KK+ODj+OCu+OCrOODryzjgrHjgqTjgrgNCivjg5/jg6Tjgr8s44Oe44K144Ki44KtDQor44Kt44K/44K244OvLOODnuOCteOCq+OCug0KK+OCqOODs+ODiSzjg6Tjgrnjg5LjgrMNCivjg4rjgqzjgrXjgqss44Oo44K344Ki44KtDQor44Oo44K344Oi44OILOODkuODreODn+ODhA0KK+OCr+ODreOCteODryzjgrHjg7PjgrXjgq8NCivjg57jg6vjg6Tjg54s44Oo44K344OP44OrDQor44OK44Kr44OL44K3LOOCq+OCuuODpuOCrQ0KK+ODqOOCt+ODgCzjgrHjgqTjgqTjg4ENCivjg5Xjgq/jgr8s44OS44OH44OkDQor44OV44K444K144OvLOOCq+ODhOODkuOCsw0KK+OCteOCr+ODnizjg6jjgrfjg4/jg6sNCivjg4/jgrfjg6Ljg4gs44Kr44OE44OfDQor44Ov44OALOODnuOCteOCquODnw0KK+ODi+OCt+OCtuOCrSzjg47jg5bjgqoNCivjg5Xjgqvjgqzjg68s44Ko44OE44KzDQor44Ki44Kq44Ok44OeLOODnuOCteOCq+OCug0KK+OCreODqOOCv+ODiyzjg4Tjg4jjg6ANCivjg4jjg6rjg4/jg6ks44OS44Ot44Om44KtDQor44OK44Ks44OOLOOCv+OCseOCtw0KK+OCquOCquOCrCzjg6bjgr/jgqsNCivjgrXjgqvjg44s44K/44Kr44K3DQor44Of44OE44OP44K3LOODnuOCteODkuODrQ0KK+OCouODquODouODiCzjgrvjgqTjgrMNCivjg6jjgrfjg57jg4Qs44K/44Kr44Ki44KtDQor44Ki44Kq44Ok44KuLOOCouOCreOCqg0KK+ODpOODnuODgCzjg57jgrXjg5LjgrMNCivjg6Djg6njgr8s44Om44Of44KzDQor44Kk44Oq44KoLOOCt+ODs+OCpOODgQ0KK+ODpOODnuOCtuOCrSzjg57jgrXjg47jg6oNCivjgqjjgr7jgqgs44Kx44Kk44Kk44OBDQor44K144OI44KmLOODhOODqOOCtw0KK+OCquOCquOCvyzjgq3jg6jjgrcNCivjgqTjg47jgqYs44Oi44Oq44OS44OIDQor44Kr44OJLOOCv+ODhOODpA0KK+OCteOCteOCrSzjg6jjgrfjg5Ljg60NCivjgqvjgrHjg5Is44Oo44K344OS44OtDQor44OE44OB44OkLOOCq+OCuuODpA0KK+ODnuOCteOCquOCqyzjgrfjg6fjgqbjgr7jgqYNCivjgrnjgrrjgq0s44Ok44K544KqDQor44OI44ONLOODiOODn+ODkuODrQ0KK+OCquOCquODr+ODgCzjg47jg6rjgqLjgq0NCivjgqbjgqjjgq0s44Oe44K144OIDQor44Oe44Ko44OALOOCq+OCuuODjuODqg0KK+ODleOCuOOCquOCqyzjg6TjgrnjgrMNCivjgqbjg6njg5ks44OK44Kq44KzDQor44OK44Kr44Og44OpLOODpuOCpuOCpOODgQ0KK+OCpOOCteOCqyzjg57jgrXjgqLjgq0NCivjg4vjgrfjgrXjgqss44OO44OW44KqDQor44Kk44Ov44K1LOOCqOOCpOOCpOODgQ0KK+OCv+OCr+OCt+ODnizjg6jjgrfjgqoNCivjg4Tjgqvjg6Ljg4gs44OV44Of44KqDQor44K144Kv44OeLOOCv+OCseODkuOCsw0KK+ODkuODp+OCpuODieOCpizjg5Ljg63jgrcNCivjg4rjgqvjg6Djg6ks44Kz44Km44Kk44OB44Ot44KmDQor44K144K144KtLOODnuOCteOCqg0KK+ODleOCr+ODr+OCrSzjg4jjgrfjg6QNCivjgqrjgq/jg6Djg6ks44Oe44K144Oo44K3DQor44K/44Kr44OP44K3LOODiOODqOODkuOCsw0KK+OCt+ODreOCpCzjg6TjgrnjgrcNCivjgrPjgqvjg5Ys44K/44OA44KqDQor44OO44Kw44OBLOODkuODreOCrQ0KK+OCv+OCq+ODhCzjg5Ljg63jgqvjgroNCivjg6jjg43jgrbjg68s44OG44OE44OkDQor44K144Kr44Kk44OALOODpOOCueODkuODrQ0KK+OCs+OCpOOCuuODnyzjg5/jg4Tjg6QNCivjg57jgqjjg4As44Kr44OE44Om44KtDQor44Oe44Oz44OALOOCv+ODgOOCtw0KK+OCs+OCsOODrCzjgqTjg4Hjg63jgqYNCivjgqLjgq3jg6Ljg4gs44Oo44K344OIDQor44K/44Kx44Og44OpLOODiOODouOCouOCrQ0KK+OCueOCuuOCrSzjgrPjgqbjgrgNCivjg6Tjg57jgqbjg4Es44K444Ol44Oz44Kk44OBDQor44K144Ko44KtLOODpuOCpuOCuA0KK+ODr+OCq+ODkOODpOOCtyzjg47jg5bjg6bjgq0NCivjgqLjgq3jg6Ljg4gs44Oe44K144OS44KzDQor44Oo44K344OALOODkuODreOCouOCrQ0KK+OCteODiOOCpizjg4Tjg43jgqoNCivjgqrjgrfjg54s44Ok44K544OI44K3DQor44K144K144KtLOODnuOCteODkuODhw0KK+OCouODqeOCpCzjgqLjgq3jg5Ljg4cNCivjg6/jgr/jg4rjg5ks44OG44OE44K4DQor44Kk44Kx44Oi44OILOODpuOCreOCqg0KK+OCreOCr+OCpCzjgrPjgqbjgqTjg4ENCivjg5Ljg6njgr8s44OS44Ot44OfDQor44Oe44Kt44Km44OBLOOCv+OCr+ODpA0KK+OCs+OCu+OCrSzjgrfjg63jgqYNCivjg4vjgrfjgqvjg68s44Ok44K544OS44OtDQor44Kk44Ks44Op44K3LOODleODn+OCqg0KK+OCv+ODiuOCqyzjgr/jg4Djg4Tjg40NCivjg5vjg7Pjg4As44Ko44Kk44Kk44OBDQor44OP44OD44K/LOODkuODreODnw0KK+ODj+ODqeODgCzjg5LjgrXjgqvjgroNCivjg6jjgrfjg4As44Kq44K144OgDQor44Ov44K/44OK44OZLOODkuODreOCtw0KK+OCs+OCpOOCuuODnyzjg6rjg6fjgqbjgqTjg4ENCivjgrPjgrnjg4As44OK44Kq44OS44K1DQor44Of44Ok44KxLOODnuOCteOCouOCrQ0KK+ODleOCuOODpCzjgr/jgrHjgrcNCivjg57jgrXjgq0s44Ki44Kt44OpDQor44K144Kv44Op44KkLOODkuODh+OCrQ0KK+ODi+OCt+ODpOODnizjg6jjgrfjgqoNCivjgqvjg6/jgrss44K/44Kr44OO44OWDQor44Kq44Kr44K244OvLOOCt+ODs+ODpA0KK+OCouOCteOCqyzjg4jjgrfjg6bjgq0NCivjgqrjgqzjg68s44OO44OW44Ki44KtDQor44OK44Ks44K144OvLOODj+OCuOODoQ0KK+OCreOCv+ODr+OCrSzjg57jgrXjgqoNCivjgrfjg5/jgros44Oe44K144OO44OqDQor44Kz44OQ44Ok44K3LOODnuOCteODj+ODqw0KK+OCv+ODgeODkOODiizjgrfjgrLjgrMNCivjgqTjg57jg4rjgqss44K144OI44OfDQor44Km44K344Oe44OrLOOCseODsw0KK+OCquOCq+ODoOODqSzjgrHjg7PjgqTjg4ENCivjg6Tjg57jg44s44Om44Km44Kk44OBDQor44Kt44K/44Og44OpLOODn+ODgeOCq+OCug0KK+OCv+OCq+ODnuODhCzjg5Ljg4fjgq0NCivjg4jjgq3jgqvjg68s44Kr44K644OS44OHDQor44Kk44Kx44OALOODiOOCt+ODpA0KK+OCpOOCt+ODgCzjg47jg5bjgr/jgqsNCivjgr/jg4vjg4/jg6ks44Of44OE44KuDQor44Kq44Ks44OvLOODkuODiOOCtw0KK+OCv+ODiuOCqyzjgrfjg6fjgqbjgrnjgrENCivjg4rjgqss44Kx44Kk44KzDQor44OI44Oi44K244OvLOODjuODluOCsw0KK+ODj+ODqeODgCzjgrvjg4TjgrMNCivjg4/jg4rjg5bjgrUs44Ki44OE44KzDQor44OI44Kv44Kq44KrLOOCouODhOOCtw0KK+ODmeODg+OCt+ODpyzjg57jgrXjg5Ljg60NCivjg4rjgqvjgrfjg54s44Kr44OE44OS44KzDQor44Ki44K144Kv44OpLOODpOOCueODkuOCsw0KK+ODn+ODpOODh+ODqSzjg5Ljg63jgrcNCivjgrnjgrrjgq0s44OK44Kq44KtDQor44Oo44K344Og44OpLOODqOOCt+ODkuOCtQ0KK+OCteODryzjg57jgrXjg6bjgq0NCivjg4rjgqvjg6Tjg54s44Kz44Km44Kk44OBDQor44OS44Op44K244OvLOODqOOCt+ODkuODrQ0KK+ODleOCuOODr+ODqSzjg57jgrXjgqLjgq0NCivjgrnjgqzjg6/jg6ks44OI44Kq44OrDQor44K/44OL44Ks44OvLOODnuODquOCqg0KK+ODm+ODs+ODgCzjg6Tjgrnjg4gNCivjg4/jg4rjgqQs44Kz44Km44Kk44OBDQor44Ko44Kw44OBLOOCteOCr+ODoeOCpA0KK+OCq+OCteOCpCzjg6jjgqbjgqTjg4ENCivjgq/jg63jgrXjg68s44OS44Ot44K3DQor44K/44K444OeLOOCt+ODsw0KK+OCteODiOOCpizjgr/jg4TjgrcNCivjg5Ljg5Pjg44s44OE44ON44KqDQor44K544Ks44OkLOOCt+ODpeOCpg0KK+OCr+ODqeOCvyzjgrPjgqbjgqTjg4ENCivjg57jgrnjg4As44OP44Or44KtDQor44K544Ku44OP44OpLOOCseOCpOOCsw0KK+OCq+ODjeOCsyzjg6jjgrfjg6bjgq0NCivjgqvjg4Qs44K/44Kr44K3DQor44Oe44OrLOODkuODreODpA0KK+OCv+ODiuOCqyzjg5Ljg4fjgqvjgroNCivjg4jjgrfjgqrjgqss44Ki44Kt44OpDQor44K344Ky44OOLOODquODp+OCpuOCuA0KK+ODpOODnuODouODiCzjgrXjg4jjg58NCivjg4rjgqvjgqzjg68s44Kr44OE44OfDQor44Ok44Oe44Kw44OBLOODkuODreOCrQ0KK+OCq+ODr+ODouODqizjg6jjgrfjg5Ljg60NCivjg6Djg6njg6Tjg54s44Oe44K144OrDQor44K344Ol44KmLOODiuOCquODpA0KK+OCpOOCseODgCzjg5Ljg63jg6bjgq0NCivjgrPjg4Djg54s44K/44OE44KqDQor44Kr44OI44KmLOOCteODiOODqw0KK+ODj+OCr+ODgeODp+OCpizjgqTjgrXjgqoNCivjgqvjgrLjg7Ms44Kr44Kq44OrDQor44OG44K644KrLOOCs+OCpuOCuA0KK+OCv+ODi+OCsOODgSzjg57jgrXjgr/jgrENCivjg4bjg6njg4As44OK44Kq44KtDQor44Kr44OI44KmLOOCv+OCq+OCrQ0KK+ODiuOCpOODiOOCpizjgr/jgrHjgqoNCivjgqTjg4jjgqYs44K/44Kr44K3DQor44Kz44OQ44Ok44K3LOOCseODs+OCuA0KK+OCv+ODiuOCqyzjg5Ljg4fjg4jjgrcNCivjgrXjgrXjgq0s44Ov44K/44OrDQor44Ob44Oz44OALOODn+ODgeODiA0KK+ODkuOCqOODgCzjgqLjgq3jgqoNCivjgrXjgqvjgqQs44Kr44K644OO44OqDQor44Kr44OE44OfLOOCv+OCq+OCtw0KK+OCv+OCseODmSzjgr/jgqvjgrcNCivjg47jgrDjg4Es44OE44Oo44K3DQor44Ov44OALOOCqOOCpOOCuA0KK+OCpuOCqOODpOODnizjgrHjg7PjgrgNCivjgqbjgqjjg44s44K/44Kr44OS44OtDQor44K/44Oz44K0LOODkuODh+OCqg0KK+ODoOODqeOCq+ODnyzjgqvjg4Tjg58NCivjgqLjg6njgq0s44Kz44Km44K+44KmDQor44Ki44Op44K7LOODnuOCueODkuODrQ0KK+ODpOODnuODouODiCzjgrfjg63jgqYNCivjg6/jgrfjgqos44OS44Ot44Om44KtDQor44Ov44Kx44K444OeLOODqOOCt+ODleODnw0KK+OCs+OCpOOCuuODnyzjgrHjg7PjgrnjgrENCivjg4jjgq/jg6Tjg54s44OI44K344OV44OfDQor44OI44Of44OK44KsLOOCseODs+OCuA0KK+OCreOCt+ODgCzjgrvjgqTjgrgNCivjgrHjg7Ms44Of44OB44OS44OtDQor44OS44Ot44K7LOODqOOCt+ODpuOCrQ0KK+OCpuODgeODpOODnizjgrHjg7PjgqTjg4ENCivjg6/jgqvjgrnjgq4s44K/44OA44K/44KrDQor44Kk44K344Kw44OtLOOCq+ODhOODjuODqg0KK+ODi+OCt+ODoOODqSzjg5Ljg63jgqvjgroNCivjgqTjg47jg57jgr8s44Kr44Kq44OrDQor44OE44OE44OfLOODiOOCt+ODkuOCsw0KK+OCpOODquOCqCzjgqLjg4TjgrcNCivjgrXjgqTjg4jjgqYs44Kr44K644KqDQor44Km44Ko44OOLOOCt+ODs+OCpOODgQ0KK+ODm+ODs+ODgCzjgqrjgrXjg6ANCivjgq3jgr/jg6Djg6ks44Kr44Oo44KzDQor44Ok44Oe44Ks44OfLOODiuODnw0KK+ODiuOCq+ODi+OCtyzjg57jgrXjg5Ljg60NCivjgqbjgqjjg4As44K/44Kr44K3DQor44OS44Ot44K/LOODr+OCv+ODqw0KK+OCpuOCqOODgCzjg4jjg6Ljgq0NCivjgqTjgrHjg4As44OS44Ot44K3DQor44OP44OK44OW44K1LOODqOODquODjuODlg0KK+OCs+ODgOODnizjg5Ljg63jgqLjgq0NCivjgqrjgqvjg6Ljg4gs44OK44Kq44KtDQor44K544K644KtLOODkuODreODn+ODhA0KK+OCueOCuuOCrSzjg5LjgrXjgqgNCivjg4vjgqTjgq/jg6ks44Ki44Kt44OS44OtDQor44OL44K344OALOODkuODreODkuOCtQ0KK+OCquOCteODmSzjgrjjg6Xjg7PjgqTjg4ENCivjg5vjgr3jgqvjg68s44Kx44Oz44Kk44OBDQor44Kk44Oe44KqLOODqOOCpuOCpOODgQ0KK+ODleOCuOOCvyzjg6jjgrfjg47jg5YNCivjgqrjgqrjg44s44Oo44K344OO44OqDQor44OK44Kr44Ok44OeLOODqOOCt+OCqg0KK+ODj+ODpOOCtyzjgrHjgqTjgrgNCivjgrnjgqzjg4/jg6ks44Kr44K644OO44OqDQor44OP44Op44OALOOCpOODgeODreOCpg0KK+OCouODmSzjgrfjg6Xjg7PjgqTjg4ENCivjgqLjg5ks44Kx44Kk44Kk44OBDQor44Ki44OZLOOCseODs+OCpOODgQ0KK+OCouODgOODgSzjgr/jg4Djg5Ljg60NCivjgqLjgqTjg5As44OA44Kk44K544KxDQor44Ki44Kr44OQ44ONLOOCq+OCuuOCqg0KK+OCouODs+ODieOCpizjgqjjgqTjg5sNCivjgqLjg7Pjg4njgqYs44OI44Oi44Om44KtDQor44Ki44Kq44KtLOODnuOCteOCtw0KK+OCt+OCpOOCrSzjg5Ljg63jgrcNCivjgqLjg6njgqQs44K344On44Km44Kk44OBDQor44Ki44Op44KkLOODiOOCquODqw0KK+OCouODqeOCpCzjgr/jgrHjgrcNCivjgqLjg6njgqvjg68s44Kk44K144KqDQor44Ki44Op44KtLOOCv+ODhOODpA0KK+OCouODqeOCrSzjgr/jgqvjg6bjgq0NCivjgqLjg6njgq0s44Kt44Oo44OP44OrDQor44Ki44Op44KtLOOCq+OCuuOCouOCrQ0KK+OCouODqeODnuOCrSzjg57jgq3jgqoNCivjgqLjg6njg6Es44K/44Kr44ONDQor44Ki44Oq44Og44OpLOOCv+OCseOCtw0KK+OCouOCteODnyzjgrfjg6XjgqbjgqTjg4ENCivjgqLjgrrjg54s44OS44Ot44Oo44K3DQor44OQ44OQLOODkuODh+OCq+OCug0KK+ODkOODkCzjg6Ljg4jjgrMNCivjg4Hjg5As44OO44OW44Ki44KtDQor44OB44OQLOOCs+OCpuOCpOODgQ0KK+ODgeODjizjg4jjg6Ljg6bjgq0NCivjg4DjgqTjgrPjgq8s44Oo44K344OO44OWDQor44OH44Kw44OBLOODkuODreODjuODqg0KK+ODh+OCrSzjg6jjgrfjgqLjgq0NCivjg4njgqQs44OO44OW44OS44KzDQor44Ko44OA44K144OvLOODkuODh+OCrQ0KK+OCqOOCsOODgSzjg6jjgrfjg4rjg6oNCivjgqjjg7Pjg4ks44Kr44K644OtDQor44Ko44Oz44OJLOODnuOCteOCqg0KK+OCqOODquOCq+ODryzjg6bjgqbjgrMNCivjg5XjgrjjgqQs44OS44Ot44K3DQor44OV44K444Oi44OILOODkuODh+ODiA0KK+ODleOCuOODouODiCzjg57jg6bjg58NCivjg5Xjgrjjg44s44Oo44K344Ki44KtDQor44OV44Kr44OP44OpLOOCouOCreODqQ0KK+ODleOCq+ODnyzjg4rjgqrjgq0NCivjg5Xjgqvjg6Tjg54s44OO44OW44Om44KtDQor44OV44Kv44OALOODnuOCteODpuOCrQ0KK+ODleOCr+OCpCzjg57jgrXjg5LjgrMNCivjg5Xjgq/jg6Ljg4gs44OS44Ot44K3DQor44OV44Kv44OK44KsLOODnuOCteODkuOCsw0KK+ODleOCr+OCt+ODnizjg47jg5bjgqoNCivjg5Xjgq/jgrfjg54s44Kr44K644K/44KrDQor44OV44OK44KtLOOCteOCq+OCqA0KK+ODleODiuOCrSzjg6Tjgrnjg5Xjg58NCivjg5Xjg6vjg6Qs44Kk44K144KqDQor44K044Km44OP44OpLOODqOOCt+ODkuOCtQ0KK+OCtOODiOOCpizjgrfjg7PjgqTjg4Hjg63jgqYNCivjg4/jgqws44K/44OA44K3DQor44OP44Ku44OOLOOCq+OCuuODrQ0KK+OCpOODgeODoOODqSzjg57jgrPjg4gNCivjg4/jg54s44OK44Kq44KtDQor44OP44OK44OALOODnuOCteODqOOCtw0KK+OCpOODkCzjgq3jg6jjgrXjg4ANCivjg4/jgrvjg5ks44Kr44OE44OY44KkDQor44OP44K744Ks44OvLOODiOOCt+ODreOCpg0KK+ODj+OCt+ODouODiCzjg47jg6rjgqLjgq0NCivjg4/jgrcs44OK44Kq44Ki44KtDQor44OP44K/44OOLOODjuODluODkuODrQ0KK+ODj+ODiOODqizjgrfjg7Pjgr/jg63jgqYNCivjg4/jg6Tjgrcs44Ki44Kt44OS44KzDQor44OP44Ok44K3LOOCs+OCpuOCuA0KK+ODkuODgOOCqyzjgqvjgrrjgrMNCivjg5Ljgqzjgrcs44Kt44Oo44K/44KrDQor44Oe44OOLOODqOOCt+OCq+OCug0KK+ODkuODqeOCpCzjg6jjgrfjgr/jgqsNCivjgqvjg5/jgrXjgq0s44OI44K344OS44KzDQor44OS44Op44OOLOODnuOCteODkuOCsw0KK+ODkuODreOCpCzjg5Ljg4fjgqoNCivjg5Ljg63jg6Ljg6os44Oo44K344OP44OrDQor44OS44Ot44K144OvLOOCouODhOOCtw0KK+ODkuODreOCteODryzjgqrjgrXjg6ANCivjg5Ljg63jgrss44K344Oz44Kk44OBDQor44Ob44Oz44OALOODqOOCpg0KK+ODm+ODs+ODnizjg5Ljg63jg6TjgrkNCivjg5vjg6rjg5ks44K344Ky44OrDQor44Ob44Oq44KoLOODkuODreOCtw0KK+ODm+ODquOCsOODgSzjg6bjgqbjgqTjg4ENCivjg57jg4Tjg6Ljg4gs44OI44K344OS44OHDQor44Ob44OqLOODj+OCuOODoQ0KK+ODm+ODqizjg5Ljg63jg58NCivjg5vjgrfjgqvjg68s44OO44Oq44Om44KtDQor44Ob44K944Kr44OvLOOCueOCueODoA0KK+ODkuODp+OCpuODieOCpizjg57jgrXjg4/jg6sNCivjgqTjg5Djg6njgq0s44Om44Km44Kk44OBDQor44Kk44OB44Kq44KrLOOCouODhOODleODnw0KK+OCpOOCseODgCzjgr/jgqvjg5Ljg4gNCivjgqTjg57jgqQs44Oo44K344K/44KrDQor44Kk44Oe44Og44OpLOOCv+OCq+OCouOCrQ0KK+OCpOODnuODiuOCqyzjg4jjg6Ljg6QNCivjgqTjg4rjg4As44OS44Ot44K3DQor44Kk44OK44Og44OpLOOCs+OCpuOCpOODgQ0KK+OCpOODjuOCpuOCqCzjgrXjg4jjg6sNCivjgqLjg6njgqQs44OI44K344OfDQor44Kk44OO44Km44KoLOOCqOOCpOOCuA0KK+OCpOOCt+OCpCzjgq3jg6jjg58NCivjgqTjgrfjgqQs44OS44Ot44K3DQor44Kk44K344Kr44OvLOODn+OCreOCqg0KK+OCpOOCt+OCq+ODryzjgqLjgq3jg6kNCivjgqTjgrfjgqrjgqss44Oe44Kz44OIDQor44Kk44K944OALA0KK+OCpOODiOOCpizjg57jgrXjg5Ljg60NCivjgqTjg4jjgqYs44OB44K644KzDQor44Kk44OI44KmLOOCq+OCuuODkuODiA0KK+OCpOODiOOCpCzjgr/jg4DjgrcNCivjgqTjg4jjgqYs44K344Oz44K4DQor44Kk44Ov44KkLOOCouOCreODqQ0KK+OCpOOCuuODn+ODpCzjg57jgrXjg47jg6oNCivjgqvjgrjjgr8s44K144OI44K3DQor44Kr44Oh44KkLOOCt+ODs+OCuA0KK+OCq+ODiuOCpCzjg57jgrXjg5Ljg60NCivjgqvjg4rjgrbjgrcs44OO44Oq44KzDQor44Kr44ON44KzLOOCv+OCseOCtw0KK+OCq+ODjeOCsyzjg57jgrPjg4gNCivjgqvjg47jgqYs44Kk44Kv44KqDQor44Kr44Oq44KmLOOCt+OCsuOCuA0KK+ODhOOCreOCuCzjgr/jgqvjg47jg6oNCivjgqvjgrXjg57jg4Qs44OS44Ot44Om44KtDQor44Kr44K/44Ku44K3LOODnuOCteOCtw0KK+OCq+OCv+ODpOODnizjgqLjgq3jg6kNCivjgqvjgr/jg6Tjg54s44OG44OE44Oh44KkDQor44Kk44K944OALOOCv+OCq+OCqg0KK+OCq+OCv+ODpOODnizjgrPjgqbjgrgNCivjgqvjg4jjgqYs44K144OE44KqDQor44Kr44OI44KmLOODnuOCs+ODiA0KK+OCq+ODiOOCpizjg6TjgrnjgrcNCivjgqvjg4jjgqYs44OB44KoDQor44Kr44OE44Oe44K/LOOCv+OCr+ODpA0KK+OCq+ODr+ODmSzjg6bjgq3jg47jg5YNCivjgqvjg6/jg5ks44Ki44OE44K3DQor44Kr44Ov44OZLOODoOODjeODkuODiA0KK+OCq+ODr+ODgCzjgrHjg7PjgrnjgrENCivjgqvjg6/jg4As44Ki44Kt44OS44KzDQor44Kr44Ov44Oi44OILOOCouOCreOCqg0KK+OCq+ODr+OCv+ODiyzjgrvjgqTjgq0NCivjgq3jg5/jgrrjgqss44Of44OB44OtDQor44Kt44Og44OpLOOCq+OCuuODpA0KK+OCreODoOODqSzjg6rjg6fjgqbjgr/jg63jgqYNCivjgq3jg47jgrfjgr8s44Ok44K544OS44OtDQor44Kt44K144KrLOODkuODh+OCqg0KK+OCreOCt+ODgCzjgr/jgqvjgrMNCivjgq3jgr/jgqzjg68s44Kt44On44Km44Kk44OBDQor44Kt44K/44Og44OpLOODqOOCt+ODkuODrQ0KK+OCreOCvyzjg5Ljg4fjg4gNCivjgq3jg6jjg44s44Oe44K144Om44KtDQor44Kz44OQ44Ok44K3LOOCq+ODhOODjuODqg0KK+OCs+ODgOODnizjgqvjgrrjg4rjg6oNCivjg4njg5Is44OS44Op44Ok44K5DQor44Kz44OP44OpLOODnuOCteOCrQ0KK+OCs+OCpOODhyzjg4jjgrfjg6QNCivjgrPjgqTjg68s44OS44On44Km44K4DQor44Kz44Kk44K644OfLOODj+ODq+OCsw0KK+OCs+ODnuODhCzjg6Tjgrnjgr/jgqsNCivjgrPjg6Hjg4As44OS44Ot44Om44KtDQor44Kz44Oz44OJLOODn+OCrQ0KK+OCs+ODs+ODiSzjg4jjgqrjg6sNCivjgrPjg4vjgrcs44K444Ol44Oz44K4DQor44Kz44K144KrLOODkuODreOCouOCrQ0KK+OCs+OCv+OCrSzjgrjjg6Xjg7MNCivjgrPjgr/jg4ss44OS44OH44KtDQor44Kz44OI44OW44KtLOODkuODreOCtw0KK+OCv+OCt+ODrSzjgqvjgrrjg47jg6oNCivjgq/jg5zjgr8s44Om44Kt44Oe44K1DQor44Kv44OcLOODhuODhOODpA0KK+OCr+ODieOCpizjg57jgrXjg4gNCivjgq/jg57jgqzjgqQs44Ok44K544OS44OtDQor44Kv44Ot44K7LOOCquOCteODoA0KK+OCr+OCt+ODnizjg6TjgrnjgrMNCivjgq/jgrfjg5/jg6Qs44Kz44Km44KtDQor44Kv44OE44Kr44KxLOOCt+ODs+OCpOODgQ0KK+OCr+ODr+ODjizjgrfjg6Xjgqbjgr7jgqYNCivjg57jg4Tjg4rjgqws44OS44OH44KtDQor44Oe44Ko44OALOODpuOCpuOCuA0KK+ODnuOCqOODj+ODqSzjgrXjg4jjgrcNCivjgqjjg47jgq0s44OI44K344OkDQor44Oe44Ko44Kr44OvLOOCs+OCpuOCuOODreOCpg0KK+ODnuOCqOOCrSzjgqLjg6TjgrMNCivjg57jg7Pjg44s44K344Oz44KuDQor44Oe44OOLOOCqOOCpOOCuA0KK+ODnuODs+OCv+ODiyzjg6jjgqbjgqTjg4ENCivjg57jg6vjg6Tjg54s44Ok44K544OS44OtDQor44Oe44K7LOOCq+OCuuODkuOCsw0KK+ODnuOCueOCtuODryzjg57jgrXjgqoNCivjg57jg4Tjg4As44Of44OE44OO44OqDQor44Oe44OE44KkLOOCpOODhOOCsw0KK+ODnuODhOOCpCzjg57jgrXjg4gNCivjg57jg4Tjg6Ljg4gs44Ok44K544Ki44KtDQor44Oe44OE44Og44OpLOOCq+OCuuOCouOCrQ0KK+ODnuODhOODjizjg47jg6rjg6bjgq0NCivjg57jg4Tjgrbjgq0s44Os44Kk44KzDQor44Of44KtLOOCt+OCsuODqw0KK+ODn+OCs+ODgCzjg4bjg6vjg6bjgq0NCivjg5/jg6Djg6ks44Kr44K644K/44KrDQor44Of44Og44OpLOOCt+OCsuODjuODlg0KK+ODn+ODiuODnyzjgrXjg4jjgrcNCivjg5/jg4rjg58s44OO44OW44OS44OtDQor44Of44OK44OILOODpOOCueOCtw0KK+ODn+ODjeODnuODhCzjg47jg6rjgrMNCivjg5/jg40s44Oe44K144K/44KrDQor44Of44K344OeLOODkuODreODpuOCrQ0KK+ODn+ODryzjg57jgrXjg5Ljg60NCivjg5/jg6TjgrDjg4Es44K/44Kr44OS44OtDQor44Of44Oo44K3LOODpuOCpuOCsw0KK+ODn+OCuuOCvyzjgrjjg6Xjg7PjgrMNCivjg6Ljg6Ljg47jgqQs44Kx44Kk44K544KxDQor44Ob44Oz44OALOOCv+OCseOCtw0KK+ODouODquOCvyzjg6TjgrnjgrcNCivjg6Ljg6rjgr8s44Ki44Kt44OS44KzDQor44Oi44OqLOOCouOCreODqQ0KK+ODouODqizjgqLjg4TjgrcNCivjg6Ljg6os44Kr44K644OS44OtDQor44Oi44OqLOODn+ODjuODqw0KK+ODouODqizjgr/jgqvjgrcNCivjg6Djg43jg6Djg6ks44OI44K344Of44OEDQor44Og44Op44Kr44OfLOODqOOCpuOCuA0KK+ODoOODqeOCquOCqyzjgrPjgqbjgrgNCivjg5/jg6fjgqbjgqws44OS44Ot44KtDQor44OK44Ks44Of44ONLOODnuOCteOCtw0KK+ODpOODnuODgCzjgrfjg7PjgqTjg4ENCivjg4rjgqzjgqos44OI44K344Kr44K6DQor44OK44Ks44K/LOOCseODs+OCuA0KK+ODiuOCpOODiOOCpizjgrPjgqbjgqTjg4Hjg63jgqYNCivjg4rjgqvjgqzjg68s44K/44Ot44KmDQor44OK44Kr44Kk44OBLOODkuODreODjuODqg0KK+OCteOCteOCrSzjg4TjgqvjgrUNCivjg4rjgqvjgrjjg54s44OS44Ot44K3DQor44OK44Kr44K344OeLOOCveOCpuOCv+ODreOCpg0KK+ODiuOCq+OCs+OCuCzjgr/jg4Tjg6QNCivjg4rjgqvjg6Djg6ks44Oe44K144OV44OfDQor44OK44Kr44Og44OpLOOCteODiOOCtw0KK+ODiuOCq+ODoOODqSzjg4jjgqrjg6sNCivjg4rjgqvjg6Djg6ks44K444Ol44OzDQor44OK44Kr44Og44OpLOODgOOCpOOCueOCsQ0KK+ODiuOCq+ODoOODqSzjg6bjgqbjgrMNCivjg4rjgqvjg6Djg6ks44Oo44Km44Kk44OBDQor44OK44Kr44Og44OpLOOCr+ODn+OCsw0KK+ODiuOCq+ODi+OCtyzjg4jjgrfjg6bjgq0NCivjg4rjgqvjg44s44OG44OE44OkDQor44OK44Kr44OOLOOCreODs+ODpA0KK+ODiuOCq+OCt+OCqizjgrPjgqbjgqTjg4Hjg63jgqYNCivjg4rjgqvjgr8s44Kr44OK44KzDQor44OK44Kr44Ok44OeLOOCv+OCq+OCtw0KK+ODiuODs+OCsSzjgqLjg4TjgrcNCivjg4rjg6njgrbjgq0s44K/44Kk44OB44Ot44KmDQor44OK44Oq44K7LOODpuOCreODkuODrQ0KK+ODiuODq+OCquOCqyzjgqTjgrXjg6ANCivjg43jg6Ljg4gs44K/44OA44K3DQor44OL44Og44OpLOOCueOCueODoA0KK+ODi+ODoOODqSzjg57jgrXjg6bjgq0NCivjg4vjgrfjg6Djg6ks44OE44OI44OgDQor44OL44K344OOLOOCq+OCuuODnuOCtQ0KK+ODi+OCt+OCt+OCvyzjg4bjg4Tjg47jg6oNCivjg4vjgrfjgqbjg4Es44K344Ol44Km44Kk44OBDQor44OL44K344Ok44OeLOODiuOCquODkuODiA0KK+ODpOOCuOODnizjg6jjgrfjgqgNCivjg4vjgrfjgrbjg68s44Om44K/44KrDQor44OL44OvLOOCouOCreODqQ0KK+ODjuODluODiuOCrCzjg5/jg4TjgrcNCivjg47jgqzjg58s44Oe44Kz44OIDQor44OO44Kw44OBLOOCt+ODs+OCpOODgQ0KK+ODjuOCsOODgSzjg5/jg6bjgq0NCivjg47jg54s44OI44Oo44OfDQor44OO44OeLOOCs+OCpuOCpOODgQ0KK+ODjuODoOODqSzjgrPjgqbjgrgNCivjg47jg6Djg6ks44OO44Oq44KqDQor44OO44Og44OpLOOCt+ODpeODs+OCpOODgeODreOCpg0KK+ODjuOCuyzjgr/jg4DjgqLjgq0NCivjg47jgrbjg68s44Oo44Km44Kk44OBDQor44OM44Kt44KkLOOCq+ODhOODnw0KK+ODjOODnuOCqizjgqLjgq3jg6kNCivjg4zjg57jgr8s44Kr44K644OS44OtDQor44Kq44OB44Ki44KkLOOCv+OCq+ODpuOCrQ0KK+OCquODgeOCouOCpCzjg6jjgrfjgqoNCivjgqrjg4Djg4/jg6ks44Kk44Kv44KqDQor44Kq44OALOODn+ODjuODqw0KK+OCquOCrOOCteODr+ODqSzjgrfjg6XjgqbjgrgNCivjgqrjg4njg57jg6os44OI44Km44Kk44OB44Ot44KmDQor44Kq44Kr44OJLOODleODn+OCqg0KK+OCquODnuOCtSzjgqLjgq3jg6kNCivjgqrjg4rjgqws44OS44Ot44Om44KtDQor44Kq44Kq44OOLOODkuODh+ODpuOCrQ0KK+OCquOCquOCteOCrSzjgqLjg4TjgrcNCivjgqrjgqrjgrXjg68s44OS44OH44K/44KrDQor44Kq44Kq44K544OfLOOCq+OCuuODpuOCrQ0KK+ODpOODnuOCt+OCvyzjg57jgrXjg6sNCivjgqrjgqrjgr8s44OK44Oz44OG44OEDQor44Kq44Kq44K/LOOCv+OCq+OCtw0KK+OCquOCquODhOOCqyzjgr/jg4Tjg6QNCivjg57jg4Tjg4rjgqws44Oo44K344Ki44KtDQor44Kq44Kq44Ok44OeLOODjuODquODpuOCrQ0KK+OCquOCq+ODgCzjg6rjgqgNCivjgqrjgqvjg4As44K/44Kx44K3DQor44Kq44Kr44OALOODkuODreODleODnw0KK+OCquOCq+ODgCzjg6jjgrfjg47jg6oNCivjgqrjg47jg4fjg6ks44K/44Kr44KqDQor44Kq44Kr44Oi44OILOODkuODreODpuOCrQ0KK+OCquOCq+OCtuOCrSzjgr/jgqvjgqLjgq0NCivjgqrjgq/jg4As44OI44K344Om44KtDQor44Kq44KvLOODjuODluODpuOCrQ0KK+OCquODjizjgrXjg4HjgrMNCivjgqrjg44s44Kx44Kk44Kk44OB44Ot44KmDQor44Kq44Oq44OGLOOCseODs+OCpOODgQ0KK+OCquOCteODgCzjg6Djg4Tjg58NCivjgrXjgqTjg4jjgqYs44Og44OE44KqDQor44K144Kk44OI44KmLOOCt+ODs+OCtA0KK+OCteOCpOODiOOCpizjgrfjg6XjgqbjgrgNCivjgrXjgqTjg4jjgqYs44Oo44Km44Kk44OBDQor44K144Kk44OI44KmLOODpuOCv+OCqw0KK+OCteOCpOODiOOCpizjgqvjgrrjg5Ljg60NCivjgrXjgqTjg4jjgqYs44Ki44Kt44OS44OtDQor44K144Kr44KkLOOCpOODgeODreOCpg0KK+OCpOOCt+OCtuOCrSzjg6bjgq3jg47jg6oNCivjgrXjgqvjg6Ljg4gs44OS44Ot44K3DQor44K144Kr44OO44Km44KoLOODkuODh+OCqg0KK+OCteOCq+OCpuOCqCzjgqvjgrrjg57jgrUNCivjgrXjgrPjg4As44OO44OW44KqDQor44K144Kv44Op44KkLOOCt+OCsuODjuODqg0KK+OCteOCr+ODqeOCpCzjgr/jgqvjgrcNCivjgrXjg4zjgq0s44Oq44Ol44Km44K/44Ot44KmDQor44K144K144KtLOOCouOCreODiA0KK+ODiOODn+OCvyzjg4jjg6Ljg4rjg6oNCivjgrXjg4jjgqYs44OG44OE44KqDQor44K144OI44KmLOODiuOCquOCrQ0KK+OCteODiOOCpizjg6jjgrfjg47jg6oNCivjgrXjg4jjgqYs44Oe44K144Om44KtDQor44K144OI44KmLOODiOOCt+ODpA0KK+OCteODiOOCpizjgqLjg4TjgrMNCivjgrXjg6/jg4As44Oe44K144OIDQor44K744KqLOOCseODs+OCteOCrw0KK+OCu+OCtuOCpCzjgqvjgrrjg6TjgrkNCivjgrfjg5Djgr8s44K/44Kx44OS44KzDQor44K344OQ44K/LOODqOOCpg0KK+OCt+OCrOOCrSzjgqLjgq3jg5LjgrMNCivjgrfjg5/jgros44OS44Ot44OgDQor44K344Of44K6LOODqOOCt+ODnw0KK+OCt+ODn+OCuizjgqLjgq3jg6kNCivjgrfjg5/jgros44Ki44Kt44OI44K3DQor44K344Of44K6LOODkuODh+OCqg0KK+OCt+ODouODoOODqSzjg5Ljg63jgqLjgq0NCivjgrfjg47jg4/jg6ks44Kr44K644OS44OtDQor44K344Op44OELOODnuOCs+ODiA0KK+OCt+ODreOCt+OCvyzjgrXjg4jjgrcNCivjgrfjg6fjgqbjgrgs44Om44Km44KzDQor44K344On44Km44Of44OELOODqOOCt+ODkuODrQ0KK+OCveODgCzjgqvjg4TjgrnjgrENCivjgr3jg6Ljg6os44K/44OE44KqDQor44K944KmLOOCq+OCuuODkuOCsw0KK+ODiuOCqyzjg6bjgqbjgrgNCivjgrnjgq7jg6Djg6ks44Kx44Kk44K3DQor44K544Ku44OOLOODnuOCteODkuODrQ0KK+OCueOCruOCteODryzjg47jg5bjg6bjgq0NCivjgrnjgq7jgr8s44K144Om44OqDQor44K544Ku44Km44OBLOOCt+ODs+OCueOCsQ0KK+OCueOCruODpOODnizjgqLjgq3jg47jg6oNCivjgrnjgq7jg6Tjg54s44Oe44K144OO44OqDQor44K544Ku44Ok44OeLOOCq+OCuuODnw0KK+OCueOCuuOCrSzjgrfjg7Pjg6QNCivjgrnjgrrjgq0s44Om44Km44K4DQor44K544K644KtLOOCt+ODsw0KK+OCueOCuuOCrSzjg5Ljg63jgqLjgq0NCivjgrnjgrrjgq0s44OI44K344Ki44KtDQor44K544K644KtLOODkuODh+ODiA0KK+OCueOCuuOCrSzjgrPjgqbjgqTjg4ENCivjgrnjgrrjgq0s44Om44Km44KzDQor44K/44OB44OQ44OKLOOCv+OCq+OCtw0KK+OCv+OCpOODqSzjgqLjgq3jg6kNCivjgr/jgqTjg6ks44OS44OH44Ki44KtDQor44K/44Kr44OALOODkuODreODpuOCrQ0KK+OCv+OCq+OCrizjg57jgrXjgqvjgroNCivjgr/jgqvjg4/jgrcs44OO44Oq44Kk44OEDQor44K/44Kr44OP44K3LOOCv+OCq+ODpuOCrQ0KK+OCv+OCq+ODj+OCtyzjg4/jgrjjg6ENCivjg57jgrnjgrbjg68s44OS44OI44K3DQor44K/44Kr44OP44K3LOODnuOCteOCouOCrQ0KK+OCv+OCq+ODnizjg5LjgrXjg4gNCivjgr/jgqvjg44s44Of44Ko44KzDQor44K/44Kr44OOLOOCq+OCuuODqOOCtw0KK+OCv+OCq+OCteOCqyzjg4/jgrjjg6ENCivjgr/jgqvjgrss44Kr44OE44K4DQor44K/44Kr44K/LOOCr+ODn+OCsw0KK+OCv+OCq+ODpOODnizjgqLjg4TjgrcNCivjgr/jgqvjg6Tjg4rjgq4s44Ki44Oq44OS44OtDQor44K/44Kx44OALOOCqOODqg0KK+OCv+OCseODgCzjgqLjgq3jg6kNCivjg5XjgrjjgqQs44Ki44OE44KzDQor44K/44Kx44OO44OqLOOCpOOCr+OCtw0KK+OCv+OCseOCt+OCvyzjg5Ljg63jgqvjgroNCivjgr/jgrHjgqbjg4Es44Om44Km44K4DQor44K/44Kx44Km44OBLOOCv+OCq+ODiOOCtw0KK+OCv+OCreOCtuODryzjg57jgrXjgqLjgq0NCivjgr/jgq3jgrbjg68s44OE44Oo44K3DQor44K/44Oe44KtLOOCteODiOOCsw0KK+OCv+ODoOODqSzjgqLjgq3jg5Ljg60NCivjgr/jg6Djg6ks44OG44OE44ONDQor44K/44Og44OpLOODjuODluOCqg0KK+OCv+ODiuOCqyzjgrfjg6fjgqbjgrQNCivjg6/jgr/jg4rjg5ks44Ki44Kt44OS44OtDQor44K/44OL44Ok44OeLOODjuODnOODqw0KK+OCv+ODiyzjgqvjgrrjg5LjgrMNCivjg4bjg6njgq3jgr8s44OK44Ks44OO44OqDQor44OG44K644KrLOOCt+ODs+OCpOODgQ0KK+ODiOODkOODqizjgrnjgrnjg6ANCivjg4jjgqzjgrcs44K444Ol44Oz44Kk44OBDQor44Ok44Oe44OALOOCseODs+OCpOODgQ0KK+ODiOOCreOCvuODjizjgrfjgrLjgqoNCivjg4jjg5/jg4rjgqws44Oi44OI44OS44K1DQor44OI44Of44OK44KsLOOCt+ODs+OCuA0KK+ODiOODn+OCvyzjgrfjg7PjgrgNCivjg4jjg5/jgr8s44OG44OE44KqDQor44OI44Oi44Kq44KrLOODkuODiOOCtw0KK+ODiOODjuOCteOCrSzjg6jjgrfjg47jg6oNCivjg4jjg6rjgrbjg68s44Ko44OfDQor44Kz44Kk44KxLOODkuODreOCsw0KK+ODiOODqOOCq+ODryzjg57jgrXjg6jjgrcNCivjg4jjg6jjgqvjg68s44OS44K144Oo44K3DQor44OE44Oc44KkLOOCv+ODgOOCtw0KK+ODhOOCq+ODgCzjg4jjgqrjg6sNCivjg4Tjgq/jgqQs44OS44K144K3DQor44OE44Or44Kr44OvLOOCqOOCpOOCuA0KK+ODhOODhOOCpCzjg4jjgrfjgqvjgroNCivjg4Tjg4TjgqQs44Om44Km44K4DQor44Km44OB44OALOODkuODreOCrQ0KK+OCpuODgeODgCzjgrjjg6Xjg7PjgqTjg4ENCivjgqbjg4Hjg54s44K344Ol44Oz44Kk44OBDQor44Km44OB44Ok44OeLOOCouOCreODkuODrQ0KK+OCpuODgCzjg5LjgrXjg6jjgrcNCivjgqbjgqjjg4As44Kr44K644OO44OqDQor44Km44Ko44OOLOOCreODqOOCtw0KK+OCpuOCqOODjizjg47jg6rjgqoNCivjgqbjgqjjg44s44K/44Kr44K3DQor44Km44Kx44Ks44OvLOOCv+OCq+ODpuOCrQ0KK+OCpuODnuOCuuODoSzjg6jjgrfjg5Ljg60NCivjgqbjg6Hjg6Djg6ks44Kt44Of44OS44OtDQor44Ov44OALOODkuODreOCtw0KK+ODr+ODgCzjg6Tjgrnjg5LjgrMNCivjg6/jgr/jg4rjg5ks44Oq44On44KmDQor44Kk44Kk44OALOOCteODiOOCtw0KK+ODr+OCv+ODiuODmSzjgr/jgqvjgrcNCivjg6/jgr/jg6os44Ok44K544Oo44K3DQor44Ok44KuLOODqOOCt+ODpuOCrQ0KK+ODpOODnuODgCzjg5Ljg63jg6bjgq0NCivjg6Tjg57jgqws44OS44OH44KqDQor44Ok44Oe44Kw44OBLOODnuOCteODjuODqg0KK+ODpOODnuOCsOODgSzjg5Ljg4fjgqoNCivjg6Tjg57jgrDjg4Es44Oe44K144K3DQor44Ok44Oe44Oi44OILOODhuODhOODpA0KK+ODpOODnuODouODiCzjg57jgrXjg6bjgq0NCivjg6Tjg57jg6Ljg4gs44Kr44K644Om44KtDQor44Ok44Oe44Oi44OILOODkuODh+OCtw0KK+ODpOODnuODouODiCzjg57jgrXjg47jg6oNCivjg6Tjg57jg6Ljg4gs44Kr44K644OIDQor44Ok44Oe44Oi44OILOOCq+OCquODqw0KK+ODpOODnuODouODiCzjg57jgrXjg6jjgrcNCivjg6Tjg57jg4rjgqss44Ko44Kk44K4DQor44Ok44Oe44K344K/LOOCteODiOODqw0KK+ODpOODnuOCpuODgSzjgqvjgrrjgqLjgq0NCivjg6Tjg57jgrbjgq0s44OP44Or44OS44KzDQor44Ok44Oe44K244KtLOODnuOCteODiOOCtw0KK+ODpOODnuOCtuOCrSzjgrHjg7PjgrgNCivjg6Tjg44s44Om44Kt44KqDQor44Ok44OOLOOCs+OCpuOCpOODgQ0KK+ODpOOCueODgCzjgr/jgrHjgrcNCivjg6Tjgrnjg57jg4Qs44Kr44OE44OK44OqDQor44Ok44K544Oi44OILOOCs+OCpuOCuA0KK+ODpOOCueODi+ODryzjgr/jgqvjg6bjgq0NCivjg6jjg4As44Kq44K144OgDQor44Oo44OALOOCpOOCteOCqg0KK+ODqOOCt+ODgCzjg6jjgrfjg5Ljg60NCivjg6jjgrfjgqQs44K/44OE44OkDQor44Oo44K344OK44KsLOODpuODn+OCsw0KK+ODqOOCt+ODjizjgr/jg4Tjg58NCivjg6jjgrfjgr/jgrEs44Ki44Kt44OS44OtDQor44K/44Kt44K244OvLOOCv+OCq+OCtw0KK+ODpOODnuOCsOODgSzjgqvjgrrjg6jjgrcNCivjgqvjg5Djgrfjg54s44Kr44K644OS44K1DQor44K144Kv44OpLOODpuOCpuOCueOCsQ0KK+ODoOODqeODpOODnizjg5Ljg63jg6bjgq0NCivjg5Ljgq3jg4As44Kr44K644OfDQor44Og44Op44KkLOOCr+ODi+ODkuODrQ0KK+ODmyzjgqLjgq3jg6kNCivjgqjjg7Pjg4ks44K744Kk44K4DQor44OG44Op44Og44OpLOOCv+ODhOOCqg0KK+ODr+OCv+ODiuODmSzjgr/jgqvjg5LjgrMNCivjgqTjg57jgqQs44K344Ky44OkDQor44Oi44Oq44Oi44OILOODiOOCt+OCq+OCug0KK+OCs+ODpOODqizjgrvjgqTjgrgNCivjg57jg4Tjg5/jg6Qs44Om44Km44Kk44OBDQor44K344OQ44K/LOOCq+OCuuOCqg0KK+ODgeOCt+ODrSzjg6jjgrfjg5Ljg60NCivjgqTjgr/jg58s44OS44OH44KqDQor44Kq44K244KtLOODkuODiOOCtw0KK+ODleOCr+ODouODiCzjg57jgrXjg4TjgrANCivjgqrjgqvjg4As44OS44Ot44K3DQor44K144Ov44OALOODkuODreOCtw0KK+OCteOCr+ODqeOCpCzjgr/jgqvjgrcNCivjg4/jg6Tjgrcs44Oo44K344OO44OqDQor44Oe44OE44Kq44KrLOODpOOCueODjuODqg0KK+ODn+ODqOOCtyzjg47jg6rjg6jjgrcNCivjg6Tjg57jg4rjgqss44Kz44Km44K444Ot44KmDQor44K344Of44K6LOODkuODiOOCtw0KK+OCs+ODj+ODqSzjg57jgrXjg47jg6oNCivjg4vjgrfjgqvjg68s44OS44Ot44K3DQor44Kk44Oe44KkLOODpOOCueOCqg0KK+ODleOCuOODoOODqSzjg5Ljg63jg6bjgq0NCivjgrPjgrjjg54s44Ok44K544Om44KtDQor44Kz44OQ44Ok44K3LOODkuODreOCtw0KK+OCreOCr+ODgSzjgqvjg4Tjg5LjgrMNCivjgrXjgqTjg4jjgqYs44Of44OE44OrDQor44Ok44Oe44K344K/LOODkuODh+OCouOCrQ0KK+OCouODmSzjgrfjg7PjgrgNCivjg4bjgrrjgqss44K/44Kr44K3DQor44K/44OK44KrLOODr+OCv+ODqw0KK+ODi+ODryzjg5/jg47jg6sNCivjgqvjg6HjgqQs44Of44K644ObDQor44Ok44OOLOODn+ODhOOCqg0KK+ODiuOCq+ODnuODqyzjg6TjgrnjgrcNCivjgqrjgqrjg4/jgr8s44Oe44K144OO44OqDQor44Ok44K544Ok44OeLOODnuOCteODkuODrQ0KK+OCq+OCueOCrCzjg5/jg4TjgqoNCivjgqTjgrfjgqQs44Ki44Kt44OS44KzDQor44OV44K444Oi44OqLOODjuODquOCsw0KK+OCpOODr+ODouODiCzjg5Ljg63jgrcNCivjg6Tjg57jgrfjgr8s44Or44Of44KzDQor44Kt44K/LOODiOODouODnw0KK+ODoOODqeOCquOCqyzjg6bjgqbjgrMNCivjgqTjgrDjgrUs44Oo44K344K644OfDQor44OK44Ks44K144OvLOODkuODreOCuA0KK+ODpOODnuOCsOODgSzjg6Tjgrnjg5Ljg60NCivjgqrjg4Djgrjjg54s44Om44K/44KrDQor44Kq44Kq44K/LOODnuODnw0KK+ODj+OCruODjizjg4rjgqrjgqTjg4Hjg63jgqYNCivjg6Tjg5bjgq0s44OI44K344Ki44KtDQor44Kk44KtLOODqOOCt+ODiOOCtw0KK+OCteOCpOODiOOCpizjg57jgrXjg4gNCivjg6Tjg57jg4As44K/44Kr44K3DQor44OK44Kr44Ok44OeLA0KK+ODoOODqeODnuODhCzjgqvjgqrjg6sNCivjgr/jgrfjg60s44K344On44Km44Kk44OBDQor44Kk44K344OP44OpLOODnuOCteODpuOCrQ0KK+OCt+ODkOOCquOCqyzjgr/jg4TjgqoNCivjg4rjgqvjgqos44Ok44K544OO44OqDQor44OV44K444K/LOODiOOCt+OCrQ0KK+OCteOCr+OCvyzjg57jgrXjg6bjgq0NCivjg4/jgr8s44K544K544OgDQor44Kq44Kq44Ok44OeLOOCv+ODgOOCtw0KK+OCv+OCtCzjgq3jg6fjgqbjgrMNCivjg57jg4Tjg6Djg6ks44Kr44K644KqDQor44Kk44OI44KmLOODnuOCteODpuOCrQ0KK+OCreODoOODqSzjgr/jgrHjgqoNCivjgqLjgqrjgq0s44Of44OE44K/44KrDQor44Kz44Oe44Ks44K/LOODkuODh+ODiOOCtw0KK+ODiuODqeODoOODqSzjgqvjgrrjgrMNCivjg5Xjgrjjg6Ljg4gs44Oe44K144KtDQor44Of44Ok44K144KrLOODiOOCt+ODkuOCsw0KK+ODj+ODpOOCtyzjg57jgrXjg5Ljg60NCivjgrXjgqTjg4jjgqYs44Kr44K644OS44KzDQor44Kq44Ks44K144Ov44OpLOOCt+ODp+OCpuOCuA0KK+OCquOCquODhOOCqyzjg4jjgrfjg6bjgq0NCivjgqvjg6/jgqQs44OI44Oi44Om44KtDQor44K344Oe44K6LOODqOOCpuOCpOODgQ0KK+OCv+OCq+ODj+OCtyzjgq3jgrfjgrMNCivjg57jgqjjgrbjg68s44Kk44K644OfDQor44OP44OALOOCq+OCquODqw0KK+ODnuODhOODkuODqSzjgqjjg6oNCivjgrnjgq7jg4/jg6ks44OO44Oc44OrDQor44OK44Kr44K444OeLOODqOOCt+ODjuODlg0KK+ODj+OCv+OCseODpOODnizjg4bjg4Tjg6QNCivjgqLjgqrjgq0s44Oe44K144OS44KzDQor44K344OW44Kr44OvLOOCreODqOODkuOCtQ0KK+OCpOOCt+ODgCzjgrfjgrLjg6sNCivjgqrjgqvjg4As44K/44Kr44K3DQor44Kk44OI44KmLOOCouOCreODqQ0KK+OCq+ODiOOCpizjg57jgrXjg5Ljg60NCivjgrPjg5Djg6Tjgrcs44OK44Kq44Of44OEDQor44Og44Op44K144OvLOODn+ODjuODqw0KK+ODn+ODmyzjg57jgrXjg47jg6oNCivjgrnjgqzjg40s44Oo44K344OO44OWDQor44Kk44K344Kr44OvLOODqOOCt+ODkuOCsw0KK+OCquOCqyzjg6Tjgrnjg5Ljg60NCivjgqTjg6/jg58s44Om44Of44KzDQor44OK44Kr44Ok44OeLOODkuODreOCtw0KK+OCpOODiOOCpizjgqvjgrrjgq0NCivjgrnjgq7jg6Tjg54s44K344Oz44Kk44OBDQor44Kr44K344Oi44OILOODqOOCt+OCsw0KK+ODiuOCq+ODoOODqSzjg57jgrXjg6bjgq0NCivjgqLjgqrjg6Tjg54s44OS44OH44OO44OqDQor44K344OQ44K/LOOCseODs+OCpOODgQ0KK+ODnuODhOOCqizjg6jjgrfjg47jg6oNCivjgrfjg47jg6Djg6ks44Ki44Kq44KkDQor44OV44Or44Kr44OvLOODqOOCt+ODleODnw0KK+ODouODiOOCrSzjgrfjg6XjgqbjgqTjg4ENCivjg6/jgr/jg4rjg5ks44OB44KqDQor44Ki44Oz44OJ44KmLOODnuOCteODkuODrQ0KK+OCv+OCseODkizjgrXjg4HjgrMNCivjgqTjgrfjgqQs44Ki44Kt44OV44OfDQor44OO44OB44K7LOOCq+OCuuODkuOCsw0KK+ODn+ODpOODiuOCrCzjg4jjgrfjgrMNCivjgrfjg7Pjg4njgqYs44OS44Ot44OfDQor44Kq44Kq44K/LOODn+ODqOOCsw0KK+OCv+ODiyzjg6jjgrfjgqLjgq0NCivjgrPjg6Djg60s44OV44Of44OO44OqDQor44Kk44Ov44K1LOODkuODreODn+ODgQ0KK+ODnuODhOODouODiCzjg5Ljg4fjgqLjgq0NCivjgq3jg6Djg6ks44OS44K144OIDQor44Ki44Kq44KtLOOCouOCreODkuOCsw0KK+ODnuODhOODkOODpOOCtyzjg5Ljg63jgrcNCivjgrTjg4jjgqYs44OV44Of44Om44KtDQor44Kq44Ks44OvLOOCouOCreODqQ0KK+OCueOCruOCv+ODiyzjg4/jg6vjgqoNCivjgqrjgq/jg44s44Om44Kt44KqDQor44K144Kv44Op44OALOOCt+ODs+ODmuOCpA0KK+ODoOOCs+ODpOODnizjg47jg6rjgrMNCivjgqTjg4jjgqYs44K144OI44K3DQor44Ok44Oe44Oi44OILOOCv+ODgOOCtw0KK+ODpOODnuODouODiCzjg57jgrXjg4jjgrcNCivjgqvjg43jgrMs44K344Ol44Km44OY44KkDQor44Ok44Oe44K244KtLOODpOOCueODkuODrQ0KK+ODiuOCq+ODoOODqSzjg4jjg6INCivjg5/jg68s44Kq44K144OgDQor44K144Og44Kr44OvLOOCt+ODreOCpg0KK+ODiuOCq+ODgCzjg4jjgrfjg6bjgq0NCivjg6jjgrfjg4jjg58s44Kx44Oz44Kk44OBDQor44K/44Kr44K344OeLOODhOODjeOCuA0KK+OCpOOCt+OCsizjgqLjgq3jgrMNCivjgrnjgqjjg4/jg6ks44OS44Ot44Om44KtDQor44Kk44OO44Km44KoLOODkuODh+ODnw0KK+ODjuOCuOODniwNCivjgrXjgq/jg54s44K144OB44KoDQor44K144OOLOODqOOCt+ODn+ODgQ0KK+ODoOODqeOCquOCqyzjgqvjg4TjgrgNCivjg5/jgqbjg6ks44Oq44Ol44Km44K+44KmDQor44K144Kr44Oi44OILOOCuOODpeODsw0KK+ODiuODq+OCqizjgrvjgqTjgrMNCivjg4/jgrvjgqzjg68s44Of44OE44OS44OtDQor44Kq44Kr44OALOODhuODhOOCqg0KK+ODpOODkuODrSzjg47jg5bjg6bjgq0NCivjg5Djg5As44K/44Kv44OkDQor44Ki44K/LOOCouODpOODjg0KK+ODiuOCrOOCuyzjgq3jg6jjgrcNCivjgqvjg6/jgqgs44Kk44K644OfDQor44Of44Km44OpLOODnuOCreODqA0KK+ODleOCuOOCvyzjgrXjg4jjgrMNCivjg4Tjg6vjg58s44Oo44K344KqDQor44Oi44OB44K644KtLOOCqOODn+OCsw0KK+ODqOOCt+ODgCzjgqvjgrrjgqLjgq0NCivjgqrjgqvjg6Ljg4gs44Oe44K144OV44OfDQor44Ok44K544Oi44OILOODn+ODhOODj+ODqw0KK+ODjeODouODiCzjgr/jgq/jgrgNCivjg5Ljg4Djgqss44Km44Ko44Of44OEDQor44Oe44K544OALOOCr+ODn+OCsw0KK+ODiOOCr+ODiuOCrCzjg5Xjg5/jg5Ljg4gNCivjg4rjgqvjgrbjg68s44K544K544OgDQor44OV44K444OK44OvLOODqOOCt+ODj+ODqw0KK+ODqOODk+OCq+ODryzjgqvjgrrjg5Ljg60NCivjgq3jgr/jg4As44K/44Kx44K3DQor44Oo44K344OOLOODpOOCueODkuODrQ0KK+ODkOODkCzjg6jjgrfjg4gNCivjgq/jg63jgqvjg68s44OS44Ot44K3DQor44Kr44OI44KmLOOCv+OCq+OCtw0KK+ODr+OCv+ODiuODmSzjg4jjgrfjgqoNCivjg4Tjg4Hjg4As44Ki44OE44KzDQor44K544K644KtLOODn+ODpuOCrQ0KK+ODn+OCuuODjizjgqLjgq3jg6kNCivjgr/jg4vjg6Ljg4gs44K/44Kv44OfDQor44Kk44Kx44OOLOODoeOCsOODnw0KK+OCpOODiOOCpizjgrfjg6fjgqbjgrMNCivjgr/jgrHjg4As44OI44Kq44OrDQor44Oe44Ko44OALOOCs+OCpuODmOOCpA0KK+OCr+ODieOCpizjgqvjg4Tjg58NCivjgqvjgrLjg6Tjg54s44Of44ON44KqDQor44Ok44Oe44Kr44KyLOODqOOCpuOCuA0KK+OCteOCqOOCsOOCtSzjg6zjgqTjgrMNCivjg5/jgrrjgr/jg4ss44OK44Kq44KzDQor44Kv44OJ44KmLOODiOOCt+ODkuOCsw0KK+OCs+OCquODquODpOODnizjg5/jgrrjg5sNCivjgqvjgr/jg6jjgrss44Oo44K344KoDQor44Kq44K144OALOOCseOCpOOCsw0KK+ODpOOCruODj+OCtyzjgrfjg6XjgqbjgqTjg4ENCivjgrnjg58s44K/44OE44KqDQor44K/44OK44KrLOOCouODhOOCtw0KK+OCr+ODieOCpizjg6bjgq3jgqoNCivjgr/jgrHjg5Is44Ki44Kt44OpDQor44Ki44Oh44Of44OkLOODn+ODgeODkuODrQ0KK+ODiuOCq+ODoOODqSzjgr/jgqvjgrcNCivjgq3jg6jjg5/jg4Qs44Kx44Oz44K4DQor44Kk44K644Of44OALOODqOOCt+OCqw0KK+ODleODiuOCrSzjg5Ljg63jgqLjgq0NCivjgr/jgrHjgrfjgr8s44Kr44K644OS44KzDQor44Of44Km44OpLOOCreOCr+OCqg0KK+OCpOOCt+ODkOOCtyzjg47jg5bjgrMNCivjg6Ljg6rjgqLjgqQs44Kx44Kk44K4DQor44Og44Op44Ok44OeLOOCqOOCpOOCuOODpQ0KK+OCquOCteODryzjg6Tjgrnjg47jg6oNCivjg5Xjgqvjg4As44Oo44K344Kr44K6DQor44Ok44Oe44OALOODkuODh+ODkuOCsw0KK+OCpOODiOOCpizjgqLjgq3jg6kNCivjgqrjg47jg4fjg6ks44OI44Of44KqDQor44OP44Ok44K144KrLOODnuOCteODn+ODgQ0KK+OCquOCquODhOOCqyzjg5Ljg4fjg5LjgrMNCivjg4jjgqrjg6Tjg54s44OS44Ot44K/44KrDQor44Kr44Ov44OP44OpLOODn+ODhOODqw0KK+OCqOODk+OCteODryzjg57jgrXjgq0NCivjg6Tjg57jgqvjg68s44OG44OE44OkDQor44Ok44Oe44Oi44OILOODpOOCueODiOODog0KK+OCueOCuuOCrSzjg4jjgqrjg6sNCivjgqrjg6Tjg57jg4As44K/44Kr44K3DQor44Oe44OE44Ok44OeLOODquODpeOCpuOCpOODgQ0KK+OCouODmSzjg47jg5bjg5Ljg60NCivjgqLjg5ks44Ok44K544KqDQor44Ki44OZLOOCq+OCuuODnuOCtQ0KK+OCouODmSzjg6bjgq3jgqoNCivjgqLjgrLjgr8s44K444Ol44Oz44Kk44OBDQor44Ki44Kr44OP44ONLOODkuODh+ODkuODrQ0KK+OCouOCseODiuOCrCzjgrjjg6Xjg7MNCivjgqLjgq3jg6Tjg54s44K344Ky44KqDQor44Ki44Kt44K244OvLOODkuODh+OCq+OCug0KK+OCouODnuODgCzjg5/jgq3jgqoNCivjgqLjg57jg44s44Oe44K144K3DQor44Ki44Oi44KmLOOCouOCreOCqg0KK+OCouODs+ODieOCpizjg5Ljg4fjgqLjgq0NCivjgqLjg7Pjg4njgqYs44OK44Kq44KtDQor44Ki44Oz44OJ44KmLOODiOOCt+ODleODnw0KK+OCouOCquODjizjg5Ljg63jgq0NCivjgqLjgqrjg6Tjg54s44Kk44Ov44KqDQor44Ki44Op44KkLOOCq+OCuuODkuODrQ0KK+OCouODqeOCq+ODryzjg5Ljg4fjgrcNCivjgqLjg6rjg6Ljg4gs44OS44OH44KtDQor44Ki44Oq44KqLOODnuOCs+ODiA0KK+OCouOCteOCpCzjgqLjgq3jg6kNCivjgqLjgrXjgqvjg68s44Oo44K344OS44OIDQor44Kv44Ot44KtLOODpuOCreODjuODqg0KK+OCouOCuuODnizjgrfjg7PjgrgNCivjg5Djg7Pjg44s44Oe44K144Kt44OoDQor44OZ44OE44Ok44KvLOOCseODs+OCtA0KK+ODk+ODiOOCpizjgrjjg7MNCivjg4Hjg5As44OS44Ot44K3DQor44OB44Ol44KmLOOCq+ODhOOCrQ0KK+OCqOODgCzjgrHjg7PjgqTjg4Hjg60NCivjgqjjg7Pjg4ks44OK44Kq44OfDQor44Ko44K144KtLOOCt+ODs+OCpOODgQ0KK+ODleOCuOOCpCzjg5Ljg63jgrcNCivjg5XjgrjjgqQs44OV44Of44KqDQor44OV44K444Oi44OILOOCouOCreODqQ0KK+ODleOCuOOCvyzjgq3jg6jjg4rjgqoNCivjg5Xjgrjjgr8s44Ki44Kt44OS44OtDQor44OV44K444Ov44OpLOOCteODiOOCtw0KK+ODleOCq+OCtuODryzjg4jjg6Ljg5Ljg4gNCivjg5Xjgq/jg4As44K544K544OgDQor44OV44Kv44OP44OpLOODpOOCueODkuOCsw0KK+ODleOCr+OCt+ODnizjgqvjgrrjg6jjgrcNCivjg5Xjgq/jg4njg6Es44Kr44K644OS44K1DQor44OV44Kv44Ok44OeLOOCteODiOOCtw0KK+ODleODiuODkOOCtyzjg57jgrXjg6bjgq0NCivjg5Xjg6vjg4Djg4Ys44Ki44Kt44OS44KzDQor44OV44Or44K144OvLOOCt+ODs+OCuA0KK+ODleODq+OCvyzjg6rjgq3jg6QNCivjg5Xjg6vjg6Qs44K344Oz44Kk44OBDQor44OV44K344KtLOODpuOCpuOCpOODgQ0KK+ODj+ODnuODgCzjgrPjgqbjgqTjg4Hjg63jgqYNCivjg4/jg4rjg4As44Kr44OE44OO44OqDQor44OP44OK44OfLOODkuODh+OCqg0KK+ODj+ODqeODgCzjgqLjgq3jg6kNCivjg4/jg6vjgqvjg68s44Kk44K644OfDQor44OP44K744Ks44OvLOODqOOCpuOCpOODgQ0KK+OCquOCquODhCzjg6Djg43jg5Ljg60NCivjg4/jgrfjg6Ljg4gs44Ki44OE44K3DQor44OP44K344Oi44OILOOCqOODn+OCsw0KK+ODj+OCueODouODiCzjgqLjg4TjgrcNCivjg4/jg4Pjg4jjg6os44OE44Oo44K3DQor44OP44Ok44K144KrLOOCv+OCq+OCqg0KK+ODkuODgOOCqyzjgrHjgrXjgqoNCivjg5LjgrDjg4Es44Kx44Kk44KzDQor44OS44Kw44OBLOODleOCteODpuOCrQ0KK+ODkuOCuOOCr+ODrSzjg4rjgqrjg6bjgq0NCivjg5Ljg6njgqvjg68s44K444Ol44Oz44Kk44OBDQor44OS44Op44OOLOODkuODreODqA0KK+ODkuODqeOCvyzjg57jgrXjg5Ljg60NCivjg5Ljg63jgrss44K144OB44KzDQor44OS44K144OALOOCv+OCq+OCtw0KK+ODm+ODqizjg47jg6rjg6TjgrkNCivjg5vjgqbjg6Qs44Kr44K644OS44KzDQor44Ob44Oz44OALOOCt+OCsuODpuOCrQ0KK+ODm+ODs+ODnizjgr/jg4Tjg6QNCivjgr/jg4rjgqss44OE44Oo44K3DQor44Ob44K344K444OeLOOCv+ODhOOCqg0KK+ODm+OCt+OCqyzjgr/jgrHjgrcNCivjg5vjgr3jg4As44OB44Ko44OfDQor44Kk44OB44Kr44OvLOODpOOCueODkuODrQ0KK+OCpOODgeODoOODqSzjgrHjgqTjgrQNCivjgqTjgqzjg44s44Of44OJ44OqDQor44Kk44Kk44OALOODnuOCteODpuOCrQ0KK+OCpOOCpOOCquOCqyzjg5Ljg63jgrcNCivjg4rjgqzjg44s44K144OI44OrDQor44Kk44Kx44K244OvLOODjuODluODpOOCuQ0KK+OCpOODouODiCzjgrnjg5/jg6wNCivjgqTjg4rjgrrjg58s44Ok44K544OP44OrDQor44Kv44K344Of44OkLOOCt+ODs+OCpOODgQ0KK+OCpOODjuOCpuOCqCzjgrfjg7Pjg6QNCivjgqTjg47jgqbjgqgs44Ki44Kt44OpDQor44Kk44OO44Km44KoLOODiOODouODpuOCrQ0KK+OCpOODjOODhOOCqyzjg4rjgqrjgq0NCivjgqTjgrXjgrgs44OS44OH44OIDQor44Kk44K344OALOOCt+ODpeOCpuOCpOODgQ0KK+OCpOOCt+ODgCzjgqTjgrXjgqoNCivjgqTjgrfjg4As44Kv44OL44Ki44KtDQor44Kk44K344Ks44KtLOOCqOODquOCsw0KK+OCpOOCt+OCrOODnyzjgrjjg6Xjg7PjgqTjg4ENCivjgqvjgrjjgr/jg4ss44Kq44K144OgDQor44Kk44K344OP44OpLOODkuODreODpuOCrQ0KK+OCpOOCt+ODoOODqSzjg57jgrXjg5LjgrMNCivjgqTjgrfjg6Tjg54s44K344Ol44Km44Kk44OBDQor44Kk44K344K244KtLOODjuODluOCqg0KK+OCpOOCveODmSzjg6jjgrfjg5LjgrMNCivjgqTjgr3jgrbjgq0s44Oe44K144Ki44KtDQor44Kk44OI44KmLOODgeOCr+OCtQ0KK+OCpOODiOOCpizjg5LjgrXjg4gNCivjgqTjg6/jgqLjgrUs44Kx44Oz44K/44Ot44KmDQor44Kk44Ov44KkLOODiuOCquOCv+OCqw0KK+OCpOODr+ODnizjgrXjg4jjgrcNCivjgqTjg6/jg6Ljg4gs44Oo44Km44Kk44OBDQor44Kk44Ov44OK44KsLOODkuODreODjuODqg0KK+OCpOODr+OCt+OCvyzjgrfjgrMNCivjgqTjg6/jgr8s44Kr44K644Oe44K1DQor44Kk44Ov44K/LOOCqOOCpOOCuA0KK+OCq+ODieODr+OCrSzjgrXjg4jjgrcNCivjgqvjgrLjg6Tjg54s44Kx44Oz44Kk44OBDQor44Ov44K/44OK44OZLOOCpOOCuuODnw0KK+OCq+ODn+ODpCzjgq/jg4vjgqLjgq0NCivjgqvjg5/jg6Qs44Kx44Oz44Kk44OBDQor44Kr44Oz44OQ44Ok44K3LOOCreODs+OCuA0KK+OCq+ODjuOCpizjg5Ljg63jgrcNCivjgqvjg6rjg6Qs44OK44Oq44Ok44K5DQor44Kr44K144KtLOOCuOODpeODsw0KK+OCq+OCt+ODnizjg57jgrXjgqoNCivjgqvjgrnjg6Qs44Ki44Kt44OpDQor44Kr44OI44KmLOOCv+OCq+OCrQ0KK+OCq+ODiOOCpizjgqvjgrrjg5Ljg60NCivjgqvjg4jjgqYs44Kx44Oz44K4DQor44Kr44OI44KmLOODn+ODhOOCsA0KK+OCq+ODiOOCpizjg5Ljg4fjg47jg6oNCivjgqvjg4jjgqYs44OS44Ot44Om44KtDQor44Kr44Ov44OQ44K/LOODgOOCpA0KK+OCq+ODr+ODkOOCvyzjgqLjg4TjgrcNCivjgqvjg6/jgrDjg4Es44OS44OH44Of44OBDQor44Kr44Ov44OP44OpLOODkuODreODnw0KK+OCq+ODr+ODj+ODqSzjgqvjgrrjg5Xjg58NCivjgqvjg6/jgrjjg6os44Of44OB44KqDQor44Kr44Ov44Kr44OfLOODhuODhOOCqg0KK+OCq+ODr+OCr+ODnCzjgqvjgrrjg4jjgrcNCivjgqvjg6/jg57jgr8s44K/44Kr44OO44OWDQor44Kr44Ov44Og44OpLOODkuODiOOCtw0KK+OCq+ODr+ODjizjg47jg6rjgqLjgq0NCivjgqvjg6/jgrXjgq0s44Oe44K144OS44OIDQor44Kr44Ov44K344OeLOODiOOCt+ODkuOCtQ0KK+OCq+ODr+OCuizjg57jgrXjg47jg6oNCivjgq3jg5Djgrcs44OS44OH44OS44KzDQor44Kt44Oe44OBLOODnuOCteOCrQ0KK+OCreODouODiCzjgr/jgrHjgrcNCivjgq3jg6Djg6ks44K/44Kv44OkDQor44Kt44Oz44OQ44OpLOODqOOCt+ODn+ODgQ0KK+OCreODjuOCt+OCvyzjg6TjgrnjgrcNCivjgq3jg47jgrfjgr8s44OS44Ot44KtDQor44Kt44Oq44K144OvLOOCpOODgeODreOCpg0KK+OCs+ODkOODpOOCtyzjgrjjg6Xjg7PjgqTjg4ENCivjgrPjg5Djg6Tjgrcs44OS44Ot44Ki44KtDQor44Kz44OQ44Ok44K3LOODnuOCteOCqg0KK+OCs+ODkOODpOOCtyzjg5Xjgrjjg5LjgrMNCivjgrPjg4Djg54s44Kz44Km44K4DQor44Kz44OA44OeLOOCquOCteODoA0KK+OCv+OCq+ODoOODqSzjg6Ljg4jjg5LjgrMNCivjgrPjg5Ljg4rjgr8s44Om44Km44K544KxDQor44Kz44Oz44OOLOODkuODreOCtw0KK+OCs+ODs+ODjizjgr/jgqvjg5Ljg60NCivjgrPjg6Tjg54s44Kz44Km44K4DQor44Kz44K644KtLOODiOOCt+OCqg0KK+ODiOOCpuODieOCpizjgrPjgqbjgrgNCivjgrPjgrjjg54s44K344Oz44K4DQor44Kz44Oz44OJLOOCouOCreODqQ0KK+OCs+ODs+ODiSzjgr/jgqvjgrcNCivjgrPjg7Pjg4ks44Oe44K144OI44K3DQor44Kz44Oz44OOLOOCq+OCquODqw0KK+OCs+OCv+OCrSzjg5Ljg4jjgrcNCivjgrPjg6TjgqTjgrcs44Of44KrDQor44Kz44Ok44OK44KuLOODjuODnOODqw0KK+OCr+ODnCzjgrHjg7Pjgr/jg63jgqYNCivjgq/jg4njgqYs44Kt44Of44OS44OIDQor44Kv44Oe44Ks44KkLOODiuOCquODpuOCrQ0KK+OCr+ODnuOCrSzjgrfjg7PjgrgNCivjgq/jg6njg4Es44K/44Kr44Om44KtDQor44Kv44Op44K/LOOCs+OCueOCsQ0KK+OCr+ODquOCvyzjg5/jgq0NCivjgq/jg6rjg6Tjg54s44K344Ol44Oz44K4DQor44Kv44Ot44OALOOCs+OCueOCsQ0KK+OCr+ODreOCq+OCrizjg57jgrXjg47jg5YNCivjgq/jg63jgrXjg68s44K344Oz44K4DQor44Kv44Ot44K144OvLOOCu+OCpOOCrQ0KK+OCr+ODr+ODjizjg5Ljg63jgr/jgqsNCivjg57jgqjjg5Djgrcs44OI44K344Ki44KtDQor44Oe44Ko44K244OvLOODjuODluODpuOCrQ0KK+ODnuODjizjg6jjgrfjgqoNCivjg57jg6vjg6/jgqss44OS44OH44OK44KqDQor44Km44OB44Ok44OeLOOCv+ODhOOCqg0KK+ODnuOCueODgCzjgrjjg6Xjg7MNCivjg57jg4TjgqQs44K344Ky44KtDQor44Oe44OE44KkLOOCteODiOOCtw0KK+ODnuODhOODouODiCzjgrfjg7PjgqTjg4ENCivjg57jg4Tjg6Ljg4gs44OS44K144OIDQor44Oe44OE44OK44KsLOODnuOCteODiOOCtw0KK+ODnuODhOOCt+ODnizjg6Ljg6rjg5Ljg60NCivjg57jg4Tjgrfjgr8s44K/44OA44K3DQor44Oe44OE44K244KtLOOCv+OCseOCtw0KK+OCpOODiuOCpOOCtyzjg6jjgrfjgqoNCivjg5/jgqvjg58s44Kx44Kk44Kk44OBDQor44Of44OK44KuLOOCouOCreODn+ODhA0KK+ODn+ODhOODpOODnizjgrPjgqbjgqTjg4Hjg63jgqYNCivjg5/jgqbjg6ks44K344Ky44KtDQor44Of44Ok44KxLOOCouODhOOCtw0KK+ODn+ODpOODouODiCzjgqLjg4TjgrMNCivjg5/jg6Tjgr8s44Kz44Km44K4DQor44Of44Ok44Km44OBLOODnuOCteOCrQ0KK+ODn+ODpOOCpuODgSzjgqTjg4Hjg63jgqYNCivjg5/jg6Tjgrbjg68s44Ki44Kt44OpDQor44Of44Ok44K244OvLOOCv+OCq+OCtw0KK+ODn+ODqOODgCzjgr/jgqvjg5LjgrUNCivjg5/jgr7jg5bjg4Es44Kx44Oz44K4DQor44Of44K+44K/LOOCv+OCseOCqg0KK+ODgeODkCzjg5Ljg63jg5LjgrUNCivjg5/jgrrjg4/jgrcs44Oe44Kz44OIDQor44Of44K644Oe44OBLOOCu+OCpOOCuA0KK+ODn+OCuuOCv+ODiyzjgrXjg4jjgrcNCivjg5/jgrrjgr/jg4ss44OE44Oo44K3DQor44Of44K644K/44OLLOODkuODreODpuOCrQ0KK+ODouODgeOCuuOCrSzjg5/jg47jg6sNCivjg6Ljg6rjg6Ljg4gs44OK44OK44KzDQor44Oi44Oq44K/44OLLOOCv+OCq+OCtw0KK+ODouODquOCvyzjg4jjg6jjg5LjgrMNCivjg6Ljg6rjgr8s44K/44Kr44K3DQor44Oi44Oq44Ov44KtLOOCt+ODs+OCpOODgeODreOCpg0KK+OCquOCr+OCpCzjgr/jgrHjg5LjgrMNCivjg6Ljg6os44K/44Kx44OfDQor44Oi44OqLOOCv+OCq+ODpuOCrQ0KK+ODoOOCs+ODpOODnizjg5Ljg63jg6bjgq0NCivjg6Djg6njg4Ys44K344Oz44Kk44OBDQor44Og44OI44KmLOOCq+ODhOOCrQ0KK+ODiuOCrOOCpCzjg5/jg4Tjg5Ljg60NCivjg4rjgqzjg44s44Of44OE44OI44K3DQor44OK44Ks44Kq44KrLOOCv+OCq+ODkuODrQ0KK+ODiuOCrOOCuyzjgqvjg4Tjg58NCivjg4rjgqzjgr8s44OS44Ot44Om44KtDQor44OK44Ks44K/LOODouODiOOCrQ0KK+ODiuOCrOODryzjgrfjg7PjgqTjg4ENCivjg4rjgqvjg57jg6ss44Oo44K344KtDQor44OK44Kr44Og44OpLOOCouOCreODqQ0KK+ODiuOCq+ODoOODqSzjg4jjg6LjgrMNCivjgqLjg5ks44Oo44Km44Kk44OB44Ot44KmDQor44OK44Kr44Og44OpLOODiOOCt+ODpA0KK+ODiuOCq+ODoOODqSzjgqLjgq3jg6kNCivjg4rjgqvjgrfjg54s44OS44K144Oo44K3DQor44OK44Kr44K344KqLOODkuODreODpuOCrQ0KK+ODiuOCqyzjg47jg6rjgrMNCivjg4rjg5/jgq0s44OO44Oq44Kr44K6DQor44OK44Oz44OWLOODkuODreOCt+OCsg0KK+ODpOODnuOCsOODgSzjgrfjg7PjgrgNCivjg4vjgqTjg58s44K344Ky44OV44OfDQor44OL44K344OALOODkuODreODqOOCtw0KK+ODi+OCt+ODgCzjgqjjgqTjgrgNCivjg4vjgrfjg4As44Oe44K144Ki44KtDQor44OL44K344OALOOCueOCueODoA0KK+ODi+OCt+OCr+ODnCzjgqLjgq3jg5Ljg60NCivjg4vjgrfjg6Djg6ks44K/44Kr44Ki44KtDQor44OL44K344Og44OpLOODhOODqOOCtw0KK+ODi+OCt+OCqizjg57jgrXjg4gNCivjg4vjgrfjgqos44K344Oz44K4DQor44OL44K344Ok44OeLOOCv+OCq+OCtw0KK+ODpOOCrOODryzjgrHjgqTjgrgNCivjg4vjg4Pjgr8s44OS44Ot44OfDQor44OO44OZ44Kq44KrLOOCouOCreODmw0KK+ODjuOCuOODqizjg6jjgrfjg47jg5YNCivjg47jg6Djg6ks44OG44OE44OkDQor44OO44OK44KrLOOCq+ODhOOCtw0KK+OCquODkOODiizjg5/jg47jg6sNCivjgqrjg4HjgqLjgqQs44OI44K344Om44KtDQor44Kq44OB44Of44K6LOOCv+OCq+OCtw0KK+OCquODgSzjg5/jg4Tjg47jg6oNCivjgqrjg4Djgqrjgqrjg4/jg6ks44K344Oz44K0DQor44Kq44OALOODkuODreOCq+OCug0KK+OCquOCrOOCvyzjg57jgrXjgq0NCivjgqrjgqzjg68s44Oe44K144OI44K3DQor44Kq44Ks44OvLOOCqOODhOOCsw0KK+OCquOCsOODqSzjg4rjgqrjg6bjgq0NCivjgqrjgqrjg5Ljg6ks44OO44OW44Om44KtDQor44Kq44Kq44OS44OpLOOCpOODgeODreOCpg0KK+OCquOCquOCpOOCtyzjgqLjgq3jg6kNCivjgqrjgqrjgqTjgrcs44Oe44Kz44OIDQor44Kq44KtLOOCq+ODpg0KK+OCquOCquOCr+ODnCzjgqvjgrrjgrMNCivjgqrjgqrjg44s44Kx44Kk44KzDQor44Kq44Kq44OM44OeLOOCt+OCsuODjuODlg0KK+OCquOCquODjOODnizjg4rjg6vjgrcNCivjgqrjgqrjgr/jgq0s44Oe44K144OS44OHDQor44Kq44Kq44K/LOODiOOCquODqw0KK+OCquOCquOCvyzjg6jjgrfjg4rjgqwNCivjgqrjgqrjgr8s44Kz44Km44Kk44OBDQor44Kq44OILOODnuOCteOCuuODnw0KK+OCquOCquODhOODnCzjg5Ljg63jg5Xjg58NCivjgqrjgqrjg6Tjgq4s44Oe44K144OS44OtDQor44Kq44Kq44Ok44OeLOOCouODhOOCtw0KK+OCquOCpOOCqCzjgqvjgrrjg6QNCivjgqrjgrjjg54s44Ki44Kt44OpDQor44Kq44Kr44OZLOOCpOODgeODreOCpg0KK+OCquOCq+ODgCzjg4jjgqrjg6sNCivjgqrjgqvjg6Ljg4gs44Oe44K144KtDQor44Kq44Kr44ONLOOCv+OCq+OCtw0KK+OCquOCq+ODjizjg5Ljg4fjgqoNCivjgqrjgqvjg44s44Oe44K144KzDQor44Kq44Kr44K244KtLOODj+ODq+ODkuOCsw0KK+ODr+OCv+ODiuODmSzjg57jgrXjg4jjgrcNCivjgqrjgq/jg4As44Ki44OE44OS44OtDQor44Kq44Kv44OOLOOCq+ODhOOCtw0KK+OCquODiuODpCzjgqvjgrrjgrMNCivjgqrjg44s44Kt44Oo44K3DQor44Kq44OOLOOCt+ODs+ODpA0KK+OCquOCquODjizjg6bjgr/jgqsNCivjgqrjgrXjg4rjgqQs44Kt44Oo44Ki44KtDQor44Kq44K244KtLOODkuODh+OCqg0KK+OCteOCpOODiOOCpizjg6jjgrfjg58NCivjgrXjgqTjg4jjgqYs44K444Ol44OzDQor44K144K4LOODpOOCueODkuODhw0KK+OCteOCuCzjgqvjgrrjgqoNCivjgrXjgqvjgqQs44Kr44K644OS44KzDQor44K144Kr44KkLOODiOODouOCueOCsQ0KK+OCteOCq+OCr+ODqSzjgr/jgqvjg5Ljg60NCivjgrXjgqvjgqbjgqgs44Ok44K544Om44KtDQor44K144K144OZLOODnuOCs+ODiA0KK+OCteOCteOCrSzjg5Ljg4fjgqvjgroNCivjg4rjg5/jgq0s44OS44Ot44K3DQor44K144K/44KxLOOCq+ODhOODkuODrQ0KK+OCteOCv+OCsSzjg6/jgq0NCivjgrXjg4jjgqYs44K344Ol44Km44Kk44OBDQor44K144OI44KmLOOCv+OCseOCtw0KK+OCteODiOOCpizjg4rjgqrjgq0NCivjgrXjg4jjgqYs44Om44Km44K+44KmDQor44K144OI44KmLOOCt+OCsuOCrQ0KK+OCteODiOOCpizjg5Ljg63jgrcNCivjgrXjg6/jg4As44OP44K444OhDQor44K744Kt44Kw44OBLOODkuODreOCouOCrQ0KK+OCu+OCreODouODiCzjg4jjgrfjg6bjgq0NCivjgrvjgq3jg40s44Kt44Kk44OBDQor44K744Kt44Kq44KrLOODnuODouODqw0KK+OCu+OCreODpCzjg5Ljg63jgqLjgq0NCivjgrvjgq0s44K444Ol44Oz44Kk44OB44OtDQor44K744Oz44K/LOODjuODquOCouOCrQ0KK+OCt+ODkOOCvyzjgrXjg4jjgrcNCivjgrfjgqTjg4os44OV44Of44OP44OrDQor44K344Kk44OkLOODkuODh+OCrQ0KK+OCt+ODnuODkOODpOOCtyzjg57jg6Ljg6sNCivjgrfjg57jg4As44K344Oz44Kk44OB44Ot44KmDQor44K344Oe44OALOODn+ODgeODiOOCtw0KK+OCt+ODnuODoOODqSzjgqLjgq3jg5Ljg4gNCivjgrfjg5/jgros44OS44OH44OI44K3DQor44K344Of44K6LOOCpOOCv+ODqw0KK+OCt+ODouODoOODqSzjgqvjg4TjgqLjgq0NCivjgrfjg47jg4As44Kz44Km44K4DQor44K344OO44OP44OpLOODouODiOODpuOCrQ0KK+OCt+OCquOCtuODryzjg47jg5bjg6bjgq0NCivjgrfjg6njgqTjgrcs44Om44Km44K4DQor44K344Op44K144KtLOODqOOCpuOCsw0KK+OCt+ODqeODiOODqizjg5Ljg4fjgrgNCivjgrfjgrXjgqQs44Oe44K144OS44OtDQor44K344On44Km44OALOOCseOCpOOCueOCsQ0KK+OCveOCpizjg4rjgqrjgq0NCivjgr3jg47jg5ks44OI44Kq44OrDQor44K544OJ44KmLOOCt+ODpeODs+OCpOODgQ0KK+OCueODieOCpizjgrXjg4jjgrMNCivjgrnjgq7jgqbjg6ks44OK44Kq44KtDQor44K544Ku44Ok44OeLOODquODp+OCpuOCpOODgQ0KK+OCueOCruODpOODnizjg4jjg6LjgrgNCivjgrnjg5/jg4As44OS44Ot44KtDQor44K544Of44Kr44OvLOODkuODiOOCtw0KK+OCueOCuuOCrSzjg5/jg43jgqvjgroNCivjgrnjgrrjgq0s44OS44Ot44K3DQor44K544K644KtLOOCouODhOOCtw0KK+OCueOCuuOCrSzjg4jjgrfjg4rjg6oNCivjgrnjgrrjgq0s44Oo44K344Om44KtDQor44K544K644KtLOODpOOCueOCvg0KK+OCueOCuuOCrSzjg4/jgrjjg6ENCivjgrnjgrrjgq0s44Kr44K644Ki44KtDQor44Ob44K944Kr44OvLOODpuODqg0KK+OCv+ODluOCtyzjgqTjgq/jgr8NCivjgr/jg4Hjgrbjg68s44OO44Oq44OV44OfDQor44K/44OALOOCv+OCq+OCouOCrQ0KK+OCv+ODgCzjg5Ljg63jg4jjgrcNCivjgr/jgqvjgr8s44Om44Km44K544KxDQor44K/44Kr44Ks44KtLOODkuODh+OCq+OCug0KK+ODpOODnuOCtuOCrSzjg4rjgqrjgq0NCivjgr/jgqvjg4/jgrcs44Oo44K344OE44KwDQor44K/44Kr44OP44K3LOODkuODreOCrQ0KK+OCv+OCq+ODj+OCtyzjg57jgrXjg6TjgrkNCivjgr/jgqvjg44s44K/44Kr44OS44OtDQor44K/44Kr44K144KtLOOCv+OCq+OCtw0KK+OCv+OCq+OCuSzjgqvjgrrjg6gNCivjgr/jgqvjg4jjg6os44Kz44Km44K4DQor44K/44Kr44Ok44OeLOODnuOCteODnw0KK+OCv+OCq+ODpOODnizjgrfjgrLjg6sNCivjgr/jgqvjg6Tjg54s44Om44Km44K4DQor44K/44Kr44OkLOODqOOCt+OCq+OCug0KK+OCv+OCseODgCzjgr/jgqjjgrMNCivjgr/jgrHjg4As44OS44Ot44Om44KtDQor44Oe44OE44Kq44KrLOODqOOCt+ODkuODrQ0KK+OCv+OCseOCpCzjg47jg5bjg5LjgrMNCivjgr/jgrHjgqbjg4Es44OI44Oi44Kq44KtDQor44K/44Kx44Km44OBLOODjuODquODiOOCtw0KK+OCv+OCsSzjgrHjgqTjgrMNCivjgr/jgq3jg5/jg6Qs44OI44Oi44OS44OtDQor44K/44Oe44K/44OLLOOCq+OCuuOCouOCrQ0KK+OCv+ODoOODqSzjg6jjgrfjg5Ljg60NCivjgr/jg6Djg6ks44Kx44Oz44K4DQor44K/44OK44KrLOOCq+OCuuODkuOCtQ0KK+OCv+ODiuOCqyzjg4jjg6Ljg6TjgrkNCivjgr/jg4rjgqss44Ki44Ok44KzDQor44K/44OK44KrLOODjuODquODkuODrQ0KK+OCv+ODi+ODouODiCzjgrfjg7PjgqTjg4ENCivjgr/jg4vjg6Tjg54s44Ki44Kt44OS44KzDQor44K/44Oz44OOLOOCquOCteODoA0KK+OCv+ODjizjg5LjgrXjgqoNCivjg4bjg6njgrbjg68s44Ki44Kt44OpDQor44OI44Kv44K344KyLOOCteODiOODqw0KK+OCtOODiOOCpizjg4rjgqrjgq0NCivjg4jjg5/jg4rjgqws44OS44Ot44OS44K1DQor44OI44Oz44K344On44KmLOODkuODh+ODpuOCrQ0KK+ODhOODnOOCpCzjgrfjg6fjgqbjgqTjg4ENCivjg4Tjg5zjgr8s44K344On44Km44K4DQor44OE44K444Og44OpLOODiuOCquOCrQ0KK+ODnuODhOODoOODqSzjgqLjgq3jg6kNCivjg4Tjgqvjg4As44OS44OH44KtDQor44OE44ON44Oo44K3LOOCteODiOODnw0KK+ODhOODq+OCquOCqyzjg57jgrXjg6QNCivjg4Tjg6ss44Oo44K344KqDQor44Km44OB44OALOODkuODh+ODpuOCrQ0KK+OCpuOCqOODgCzjgr/jg6Ljg4QNCivjgqbjg6HjgrXjgq0s44Kt44Oo44K3DQor44Km44Op44Kr44OvLOODpuOCpuOCuA0KK+OCpuODqeOCq+ODryzjgqvjgrrjgrcNCivjg6/jg4As44K444Ol44OzDQor44Ov44Kr44OQ44Ok44K3LOOCseODs+OCuA0KK+ODr+OCq+ODnuODhCzjg6jjgrfjgqvjgroNCivjg6/jgr/jg4rjg5ks44Ki44OE44KzDQor44Ov44K/44OK44OZLOOCv+OCq+OCtw0KK+ODr+OCv+ODqizjgrPjgqbjgrgNCivjg6Tjg5ks44Kz44Km44Kk44OBDQor44Ok44OP44KuLOOCt+ODs+OCuA0KK+ODpOODnuODgCzjgqvjgrrjg5Ljg60NCivjg6Tjg57jg4As44Kr44K644OS44OtDQor44Ok44Oe44Kz44K3LOODnuOCteODpuOCrQ0KK+ODpOODnuODouODiCzjgr3jgqbjgqTjg4ENCivjg6Tjg57jg6Ljg4gs44Ki44OE44K3DQor44Ok44Oe44Oi44OILOODqOOCpuOCpOODgQ0KK+ODpOODnuODouODiCzjgrXjg4ENCivjg6Tjg57jg6Ljg4gs44Oe44K144OfDQor44Ok44Oe44Km44OBLOODiOOCquODqw0KK+ODpOODnuODjizjg5Ljg63jg5Xjg58NCivjg6Tjg57jgqrjgqss44OI44Oi44K/44KrDQor44Ok44Oe44K344K/LOODiOOCt+ODkuODhw0KK+ODpOODnuOCpuODgSzjgr/jgrHjgrcNCivjg6Tjg57jgrbjgq0s44OS44Ot44Oe44K1DQor44Ok44Oe44K244KtLOODpuOCq+ODqg0KK+ODpOODiuOCruOCt+ODnizjg57jgrnjg58NCivjg6Tjg57jg6Ljg4gs44Of44Kr44KzDQor44Ok44OOLOOCv+OCq+ODkuOCsw0KK+ODpOOCtuOCrSzjgr/jgrHjgrcNCivjg6jjgrQs44Ok44K544OP44OrDQor44Oo44Kz44KkLOOCq+ODhOODnuOCtQ0KK+ODqOOCs+ODn+OCvizjg4jjgrfjgq0NCivjg6jjgrPjgr8s44Om44Km44K4DQor44Oo44Kz44K/LOODkuOCteOCqg0KK+ODqOOCs+OCvyzjg6bjgqbjgrMNCivjg6jjgrfjg4As44K344Oz44Kk44OB44Ot44KmDQor44Oo44K344OALOODnuODgeOCsw0KK+ODqOOCt+ODleOCtSzjgqTjgq/jg5Xjg58NCivjg6jjgrfjg4/jg6ks44OI44Oi44Oe44K1DQor44Oo44K344Kk44KoLOODj+OCuOODoQ0KK+ODqOOCt+OCq+ODryzjg4HjgqgNCivjg6jjgrfjgqvjg68s44Of44OE44OS44OtDQor44Oo44K344KqLOODpuOCpuOCuA0KK+ODpuOCouOCtSzjg57jgrXjg6jjgrcNCivjg6bjgq0s44Ki44Kt44OpDQor44Ki44OA44OBLOODiOOCt+ODpuOCrQ0KK+OCquOCquODi+OCtyzjgqvjgrrjgqoNCivjgqrjgqrjgr8s44Of44Ov44KzDQor44Ki44K144OOLOODn+ODgeOCsw0KK+ODi+OCt+ODoOODqSzjg5/jg4Tjg6jjgrcNCivjg6Tjg57jg4As44OS44Ot44OO44OqDQor44K144KkLOOCr+ODi+OCqg0KK+ODn+ODpOODouODiCzjgqvjgrrjgqoNCivjgrnjgrrjgq0s44Kr44K644OS44KzDQor44OV44Kv44KkLOOCr+ODi+ODpA0KK+OCquOCr+ODgCzjg5LjgrXjgrMNCivjgrXjgqTjg4jjgqYs44K/44Kr44KqDQor44OV44Or44OkLOOCq+ODhOODnw0KK+ODouODiOODpOODnizjg4rjgqrjg5Ljg60NCivjg6jjgrfjgrbjgq0s44Om44Km44Kk44OBDQor44OK44Kr44Og44OpLOOCouODhOODreOCpg0KK+ODiOOCreODryzjgrfjg6XjgqbjgqTjg4ENCivjgqTjg4rjg4As44Oe44K144OE44OKDQor44OI44Kt44OvLOODjuODquODpuOCrQ0KK+ODqOOCt+ODgCzjgr/jgqvjg6bjgq0NCivjgr/jgqvjg44s44Kx44Kk44KzDQor44Km44Ko44OALOODiOODouOCsw0KK+ODhOODgeODpCzjg6bjgqbjgrMNCivjgrfjg6Ljgqvjg68s44OV44Of44OS44KzDQor44Oe44OE44KkLOOCq+ODhOODnw0KK+OCueOCrOODpCzjg6jjgrfjgqoNCivjg5/jg47jgrDjg4Es44Ok44K544KzDQor44Km44Ko44OALOODkuOCq+ODqw0KK+OCpOODjizjg4jjg6LjgrgNCivjg57jgqjjg4As44Oe44Kz44OIDQor44OE44Oc44K/LOODjuODquOCqg0KK+ODqOOCt+ODnyzjgqTjgq/jgqoNCivjgqTjg4Hjgqvjg68s44K344Ky44OS44OtDQor44Ob44OqLOODkuODh+ODpA0KK+ODj+ODpOOCtyzjg6bjgr/jgqsNCivjgrfjg5Djgr8s44Kk44Kv44KzDQor44Kz44OQ44Ok44K3LOODnuOCueODkuOCsw0KK+OCquOCquOCr+ODnCzjgr/jgrHjgrcNCivjgqTjg6/jgr8s44OO44OW44Om44KtDQor44OV44K444K/LOODnuOCteODkuODrQ0KK+OCreOCv+ODoOODqSzjgqvjgrrjgqoNCivjgq/jg63jgq0s44Kx44Kk44KzDQor44Ok44Oe44Oi44OILOOCv+OCq+OCtw0KK+ODpOODnuODkOOCvyzjg6bjgq3jgrMNCivjgrXjgqTjg4jjgqYs44K344Ol44Km44Kk44OBDQor44OV44K444Ov44OpLOOCv+ODgOOCtw0KK+OCpOODiOOCpizjgqvjgrrjg4gNCivjgqTjgqTjgrEs44OI44Kq44OrDQor44K144Og44Kr44OvLOOCouOCreODjuODqg0KK+OCouOCuuODnizjg57jgrXjgq0NCivjgqLjgqrjgq0s44Ki44OE44K3DQor44OV44K444K/LOODhOODjeOCqg0KK+ODn+ODqOOCtyzjg4jjgrfjgqvjgroNCivjgrvjgq3jg6Tjg54s44Oo44K344KqDQor44OG44Op44OALOODhuODq+ODkuOCtQ0KK+OCqOODs+ODiSzjgr/jgrHjgrcNCivjgqvjgq3jg6Ljg4gs44Kx44Oz44K444Ot44KmDQor44OV44Or44OkLOOCpOODr+OCqg0KK+ODnuOCreODoOODqSzjgr/jgrHjgqoNCivjgrPjg7Pjg44s44OS44Ot44K3DQor44K544Ku44K144KtLOODiOOCt+ODpuOCrQ0KK+ODqOOCt+ODgCzjgrfjgrLjgqoNCivjg4/jgq7jg6/jg6ks44OS44Ot44K3DQor44Ok44K244KtLOODpuOCpuOCuA0KK+ODi+ODjuODn+ODpCzjgqvjgrrjgqoNCivjgrPjgrXjgqss44OS44Ot44Ok44K5DQor44K144OOLOOCt+ODs+OCtA0KK+OCteOCpOODiOOCpizjg4DjgqTjgrnjgrENCivjgrfjg6Ljgrss44K/44Kr44Oo44K3DQor44K/44Kr44OP44K3LOOCq+OCuuODkuODiA0KK+OCv+ODhOOCquOCqyzjg57jgrXjgq0NCivjgr/jg5Djgr8s44Oo44K344K/44KrDQor44OK44Kq44KkLOODnuOCteOCsw0KK+ODiuOCrOOCvyzjg57jgrXjgqoNCivjg4vjgrfjgqrjgqss44K344Ky44OrDQor44Oe44OE44Kr44OvLOOCouODhOOCtw0KK+ODn+OCuuODjizjg6bjgqbjgrMNCivjg4jjgq/jg4rjgqws44Kx44Kk44KzDQor44Og44Op44Kr44OfLOODkuODreOCrQ0KK+ODpOOCueOCq+ODryzjg4jjgrfjg47jg6oNCivjg6Tjg57jgrDjg4Es44Om44Kt44KqDQor44Oo44Kz44Km44KoLOOCv+ODgOOCtw0KK+OCouOCuuODnizjg47jg5zjg6sNCivjgqTjg4rjg4As44Of44OE44Om44KtDQor44Kk44K344KkLOODjuODnOODqw0KK+OCpOODnuODi+OCtyzjgr/jgrHjgqoNCivjgqrjgqvjg44s44Kr44ON44Of44OEDQor44Kt44K3LOODiOOCt+OCsw0KK+OCr+ODnOOCvyzjg57jgrXjg47jg6oNCivjgrPjg5/jg4rjg58s44Oe44Om44OfDQor44Ki44Kk44Ok44OeLOOCt+ODp+OCpuOCuOODreOCpg0KK+OCteODjizjg4Hjgqvjg6kNCivjgr/jgq3jgqzjg68s44K344Ky44Oo44K3DQor44Kz44Oz44OOLOODkuODreODpOOCuQ0KK+OCu+ODs+ODgOOCpCzjgr/jgqvjgrcNCivjg4vjg6/jg44s44OS44OH44K544KxDQor44K3LOODiuOCquODqOOCtw0KK+OCq+ODiOOCpizjgqvjgrrjg4rjg6oNCivjgqLjgqvjgrXjgqss44Kv44OL44KqDQor44Kq44Oz44K644KrLOODkuODreOCtw0KK+OCs+OCrCzjgrPjgqbjgqTjg4ENCivjg4/jg6Tjgqvjg68s44OI44Oi44OfDQor44OP44K744Ks44OvLOODnuOCteODqOOCtw0KK+ODleODq+OCq+ODryzjgr/jgrHjgrcNCivjg5Xjgrjjgqvjg4ks44Om44Km44K4DQor44OI44OO44Kr44OvLOOCv+OCseOCtw0KK+ODnuODhOOCqizjg6jjgrfjgqoNCivjgq3jg5/jgrrjgqss44Oe44K144OO44OqDQor44Kq44OBLOODnuOCs+ODiA0KK+OCpOODgeOCs+ODj+ODqSzjg57jgrXjg6TjgrkNCivjgqTjgrHjg4As44Ki44Kt44KzDQor44Ki44Op44K/44KxLOOCpOOCr+OCqg0KK+OCpOOCseODgCzjg4jjgq3jgqoNCivjgqTjg4jjgqYs44Oo44Km44Kk44OBDQor44Kk44Kx44OALOOCqOODhA0KK+OCpOOCpOODgCzjg57jgrXjg4gNCivjgqrjgqrjgq/jg54s44Kr44K644KoDQor44Kv44K144OQLOODnuOCteOCrQ0KK+OCs+ODkOODpOOCtyzjgrXjg6jjgrMNCivjgrTjg4jjgqYs44Kr44K644OkDQor44K544K644KtLOODouODiOODjuODqg0KK+OCu+OCreODjSzjg5Ljg63jgrcNCivjgr/jgqvjg4As44OI44K344Om44KtDQor44Kz44Oz44OJLOODqOOCpuOCueOCsQ0KK+OCv+OCseODpOODnizjgrHjgqTjgrfjg63jgqYNCivjgr/jgqvjgqTjg4Es44Kq44K144OgDQor44K944OALOOCseODs+OCuA0KK+OCv+ODjizjg57jgrPjg4gNCivjgrfjg47jgrbjgq0s44K144OI44K3DQor44OP44Op44OALOOCouODpA0KK+OCr+ODieOCpizjgqvjg4TjgrMNCivjg4Tjg47jg4As44OK44Kq44KzDQor44OV44Or44Kr44OvLOODiOOCt+OCouOCrQ0KK+ODouODquOCvyzjg57jgrXjg6bjgq0NCivjg6Tjg57jg6Ljg4gs44OI44Kq44OrDQor44Ok44Oe44K344K/LOODqOOCt+ODj+ODqw0KK+ODpuOCq+ODryzjg6jjgrfjgqoNCivjg6jjgrfjg4As44Ko44Kk44KzDQor44OP44Ok44K3LOODiOOCt+OCv+OCqw0KK+OCv+ODs+ODjizjgqjjgqTjgqTjg4ENCivjgr/jgqvjg4/jgrcs44Oe44Kz44OIDQor44OK44Oq44Ki44KkLOODqOOCt+ODjuODqg0KK+OCv+OCq+ODoOODqSzjgqLjgq3jgqoNCivjgr/jg7Pjg44s44OG44OE44KqDQor44Kz44OQ44Ok44K3LOOCs+OCpuOCpOODgQ0KK+OCtOODiOOCpizjg4jjgqrjg6sNCivjgrTjgqbjg4As44Kt44On44Km44KzDQor44OK44Kr44K344OeLOODn+ODhOOCqg0KK+ODm+OCt+ODjizjg5Xjg5/jgr/jg4ANCivjg6/jgrMs44OK44Kq44KtDQor44K544K644KtLOOCt+OCsuOCqg0KK+ODqOOCt+ODnuODhCzjg57jgrXjgq/jg4sNCivjg4rjg5/jgqrjgqss44K344Oz44K4DQor44Ok44Oe44Kw44OBLOODkuODreOCq+OCug0KK+OCpOOCt+ODkOOCtyzjg57jgrPjg4gNCivjgqTjgrfjg4As44K744Oz44OkDQor44Km44OB44Ok44OeLOOCu+OCpOOCuA0KK+OCqOODs+ODiSzjgrfjgrLjg6sNCivjg4rjgqvjg44s44Oe44K144OV44OfDQor44Kk44Oe44KkLOOCq+OCuuOCqg0KK+OCquOCteODiuOCpCzjgqLjg4TjgrcNCivjgrXjgqvjg6Ljg4gs44Kt44Oo44K3DQor44K344Kq44OfLOODgeOCq+OCtw0KK+OCt+ODnuOCtuOCrSzjg4rjgqrjgq0NCivjg4bjg6vjg6Qs44OI44K344OkDQor44OK44Kr44K/44OLLOODiuOCquOCrQ0KK+ODj+OCruODr+ODqSzjgq3jg6jjgqvjgroNCivjg5Ljgqzjgrcs44K344On44Km44KzDQor44Ob44Oq44Km44OBLOODqOOCt+OCqg0KK+ODn+OCvuODreOCrizjg4rjgqrjgq0NCivjg6Ljg6os44K/44Oi44OEDQor44Kk44OO44Km44KoLOOCv+OCseODkuOCsw0KK+OCt+ODgCzjg5/jg4Hjg6gNCivjg6Tjg57jg6Ljg4gs44Of44OB44KzDQor44Ok44Oe44Oi44OILOODkuODh+OCouOCrQ0KK+OCquOCquOCv+OCrSzjgqvjgrrjg6QNCivjg5Xjgrgs44K144OK44KoDQor44Ki44Kt44Oi44OILOODnuODouODqw0KK+OCpOOCpOOCuOODnizjgqLjgq3jgrMNCivjgqrjgrDjg54s44Om44Of44KzDQor44K144OI44KmLOOCv+OCq+OCqg0KK+ODhOODgeODpCzjg6jjgrfjg5Ljg60NCivjgrXjgqTjg4jjgqYs44Kr44K644Oo44K3DQor44OP44OpLOOCu+OCpOOCpOODgeODreOCpg0KK+ODleOCuOODnuOCrSzjgrfjg7Pjg6QNCivjg6Djg63jgr8s44Of44OE44Oe44K1DQor44Oi44OqLOODiOOCquODqw0KK+ODn+OCvuOCsOODgSzjg4jjgrfjg6bjgq0NCivjgqTjgrHjg4/jgr8s44OS44Ot44Om44KtDQor44Kq44Ks44OvLOODkuODreOCv+OCqw0KK+OCpuOCqOODjizjg57jgrXjg4jjgrcNCivjgr/jg4rjgqss44Kr44K644OS44OtDQor44Kz44OQ44Ok44K3LOODnuOCteOCq+OCug0KK+OCr+ODreOCuSzjg6TjgrnjgrgNCivjgq3jgr/jgqzjg68s44OS44Ot44K3DQor44K344OO44OfLOODnuOCteODpuOCrQ0KK+ODj+OCuyzjg6bjgqbjgr7jgqYNCivjg4bjg6vjg4zjg54s44Oo44Km44KzDQor44Kt44Kv44OBLOOCteODiOOCtw0KK+ODj+OCt+ODouODiCzjg47jg6rjg6bjgq0NCivjgqrjgqrjgqvjg68s44K344Oz44OIDQor44Kq44Kq44OL44K3LOOCveOCpuOCpOODgQ0KK+OCouODmSzjg57jgrXjg5Ljg4gNCivjgqLjg4Djg4Es44OS44OH44KtDQor44Ki44OA44OBLOODnuOCteODiA0KK+OCouODgOODgSzjg4jjgrfjg6bjgq0NCivjgqLjgrQs44Kr44Kq44OqDQor44Ki44Kk44OP44OpLOOCouOCreODkuOCsw0KK+OCouOCpOODj+ODqSzjg5Ljg4fjgqoNCivjgqLjgqTjgrbjg68s44K444Ol44Oz44Kk44OBDQor44Ki44Kr44Oe44OELOOCv+ODhOOCqg0KK+OCouOCq+ODnizjg4jjg6Ljg58NCivjgqLjgqvjgrss44Oe44K144Om44KtDQor44Ki44Kr44Ok44OeLOOCt+ODs+OCsuODsw0KK+ODleOCr+OCt+ODnizjg4jjg6Ljg44NCivjgqLjgq3jg5As44OE44OI44OgDQor44Ki44Kt44OOLOODj+ODq+OCrQ0KK+OCouOCreOCt+OCqyzjg6bjgqbjgrgNCivjg4rjg6Hjgq0s44OK44Kq44OfDQor44Ki44Kt44K644KtLOOCt+ODs+OCpOODgQ0KK+OCouODnuODgCzjg6bjgq3jgqoNCivjgqLjg57jg44s44OI44Kq44OrDQor44Ki44Of44OOLOODjuODluODj+ODqw0KK+OCouODs+ODmSzjg6TjgrnjgrcNCivjgqLjg7Pjg4njgqYs44OS44Ot44OI44K3DQor44Ki44Oz44K244KkLOOCv+OCq+ODqOOCtw0KK+OCouODs+OCtuOCpCzjg5Ljg63jgrcNCivjgqLjgqrjgq0s44K144OI44K3DQor44Ki44Kq44Ok44KuLOOCv+OCq+OCqg0KK+OCouOCquODpOOCrizjg5Ljg63jg6bjgq0NCivjgqLjgqrjg6Tjgq4s44OS44K144K3DQor44Ki44Op44Kr44OvLOOCv+OCpOOCueOCsQ0KK+OCouODqeOCq+ODryzjg57jgrXjg6bjgq0NCivjgqLjg6njgq0s44OI44K344Om44KtDQor44Ki44Op44Ok44K5LOODkuODiOOCtw0KK+OCouODqSzjgqLjgq3jgqoNCivjgqLjg6rjgr8s44Kt44On44Km44KzDQor44Ki44K144OALOOCr+ODi+OCqg0KK+OCouOCteODgCzjg5Ljg63jgqLjgq0NCivjgqLjgrXjgqvjg68s44OO44Oq44KoDQor44Ki44K144Kv44OpLOODiOODouODpuOCrQ0KK+ODiuOCq+OCteODiCzjgqLjgq3jg6kNCivjgqLjgrXjg44s44Oo44K344OS44OtDQor44Ki44K144OqLOOCq+OCuuOCrQ0KK+OCouODhOODnyzjgqLjgq3jg6jjgrcNCivjgqLjg6/jgqss44Kr44OE44OfDQor44OQ44OQLOOCq+OCuuODkuODrQ0KK+ODkOODsyzjgrHjg7Pjgr7jgqYNCivjg5Djg7Ms44Ov44K/44OrDQor44OQ44OzLOOCs+OCpuOCv+ODreOCpg0KK+ODgeODp+OCpuOCtSzjg57jgrXjgrcNCivjg4DjgqTjg4ks44Kx44Kk44K344OzDQor44OA44Kk44Oi44OzLOODiuOCquODkuOCsw0KK+ODh+ODoOODqSzjg6jjgrfjg4gNCivjg4njgqQs44K/44Kr44K3DQor44Ko44OT44OM44OeLOOCouOCseODnw0KK+OCqOOCsOODgSzjgrjjg6Xjg7MNCivjgqjjg4/jg6ks44Kr44K644KqDQor44Ko44OK44OfLOODiuODhOOCsw0KK+OCqOODiOOCpizjg6jjgrfjg4rjg6sNCivjgqTjg6/jgrXjgq0s44Kr44K644KqDQor44Ko44K244KtLOODpuOCpuOCuA0KK+ODleOCuOOCqOODgCzjgrjjg6Xjg7MNCivjg5Xjgrjjgqgs44Kz44Km44Kk44OBDQor44OV44K444Ks44KtLOODqOOCt+ODgeOCqw0KK+ODleOCuOOCpCzjg4jjgrfjg6bjgq0NCivjg5XjgrjjgqQs44Ki44Kt44OpDQor44OV44K444KkLOOCuOODpeODs+OCpOODgQ0KK+ODleOCuOOCpCzjg5/jg6bjgq0NCivjg5XjgrjjgqQs44K344Ky44OO44OqDQor44OV44K444Kr44OvLOOCt+ODs+OCpOODgQ0KK+ODleOCuOODouODqizjg4jjg6Ljg44NCivjg5Xjgrjjg6Ljg4gs44K344On44Km44K0DQor44OV44K444Oi44OILOOCt+ODjg0KK+ODleOCuOODjizjgr/jgqvjgrcNCivjg5Xjgrjjgqrjgqss44Ok44K544K3DQor44Kq44Kw44OpLOOCouODpOOCsw0KK+ODleOCuOOCvyzjg57jgrXjg4gNCivjg5Xjgrjjgr8s44K144OI44OrDQor44OV44K444K/LOODpuOCreOCqg0KK+ODleOCuOOCvyzjgrfjg6fjgqbjgrgNCivjg5Xjgrjjg6/jg6ks44OS44Ot44K3DQor44OV44Kr44OALOOCouODhOOCtw0KK+ODleOCq+OCqizjg5/jg4Tjg5Ljg60NCivjg5Xjgqvjgqos44Of44K144KtDQor44OV44Kr44K7LA0KK+ODleOCr+ODgSzjg6jjgrfjg5Ljg60NCivjg5Xjgq/jg4As44Om44Km44KzDQor44OV44Kv44OALOODleODn+ODkuOCsw0KK+ODnuODhOOCq+ODryzjg5Ljg4fjgqoNCivjg5Xjgq/jg4As44Of44KrDQor44OV44Kv44OALOODpuOCreOCsw0KK+ODleOCr+ODgCzjgrHjg7PjgrgNCivjg5Xjgq/jg4/jg6ks44Om44Kt44KqDQor44OV44Kv44KkLOODkuODreOCtw0KK+ODleOCr+OCpCzjgrjjg6Xjg7PjgqTjg4ENCivjg5Xjgq/jgqrjgqss44K344Oz44K0DQor44K344KsLOODiuOCquODiA0KK+ODleOCr+OCt+ODnizjgqLjg4TjgrcNCivjg5Xjgq/jgrfjg54s44OB44Kr44KzDQor44OV44Kv44K344OeLOODiuOCquOCrQ0KK+OCquOCquODjizjg4rjgqrjgq0NCivjg5Xjg4rjg4Qs44OI44K344Om44KtDQor44K044Km44OALOODqOODquOCsw0KK+OCtOOCpuODgCzjg5Ljg4fjgqLjgq0NCivjgrTjgqYs44Kr44Kk44Ot44KmDQor44Kz44Kw44OsLOOCreODs+ODpA0KK+OCtOODiOOCpizjgr/jgqvjgrcNCivjgrTjg4jjgqYs44Om44Kt44OoDQor44OP44KsLOODquODp+OCpuOCpOODgQ0KK+ODj+OCruODr+ODqSzjgq3jgq/jgqoNCivjg4/jg57jg4As44Ki44Kt44KqDQor44Oe44Ko44OALOOCseODs+OCpOODgQ0KK+ODj+ODnuODj+OCvyzjg47jg5zjg6sNCivjg4/jg57jg44s44OO44OW44OS44OtDQor44OP44OK44OW44K1LOODquODpeOCpuOCpOODgeODreOCpg0KK+ODj+ODiuOCvyzjg6jjgrfjgrgNCivjg4/jg4rjg5/jg4Qs44Oo44K344K/44KrDQor44OP44Oz44OALOOCueODn+ODiA0KK+ODj+ODqeODgCzjgqLjg6TjgrMNCivjg4/jg6njg4As44OV44Of44KqDQor44OP44Op44OALOOCuOODpeODs+OCpOODgQ0KK+ODj+ODqeODgCzjg57jgrXjg47jg6oNCivjg4/jg6ks44Oe44K144Om44KtDQor44OP44OpLOODn+ODpuOCrQ0KK+ODj+OCu+OCrOODryzjg57jgrPjg4gNCivjg4/jgrfjgrDjg4Es44Kk44K144KqDQor44OP44K344Oi44OILOODnuOCteODiOOCtw0KK+ODj+OCt+ODouODiCzjg47jg6rjgq0NCivjg4/jgr/jgrHjg6Tjg54s44K144OI44K3DQor44OP44K/44OK44KrLOOCreODqOOCtw0KK+ODj+ODhOOCt+ODnizjgrHjg7MNCivjg4/jg4Pjg4jjg6os44Oo44K344OS44K1DQor44OP44OD44OI44OqLOODhOODjeODkuOCtQ0KK+ODj+ODg+ODiOODqizjg57jgrXjgrMNCivjg4/jg4Pjg4jjg6os44OV44Of44KqDQor44OP44OD44OI44OqLOODpuOCreODkuOCsw0KK+ODj+ODg+ODiOODqizjg6jjgrfjg47jg6oNCivjg4/jg6Tjgqvjg68s44Ki44Kt44OpDQor44OP44Ok44K344OALOODnuOCteODpA0KK+OCq+ODs+ODgCzjgrHjg7PjgrgNCivjg4/jg6Tjgrcs44Kz44Km44K4DQor44OP44Ok44K3LOODhOODqOOCtw0KK+ODj+ODpOOCtyzjg5Ljg63jgrcNCivjg4/jg6Tjgrcs44Kr44OE44OfDQor44OI44OT44Kr44OvLOODn+ODpuOCrQ0KK+ODkuOCsuOCvyzjg6jjgqbjgqTjg4ENCivjg5LjgrDjg4Es44Of44OE44OS44OtDQor44OS44Kw44OBLOODpuOCpuOCsw0KK+ODkuOCuOOCq+ODryzjg6jjgrfjg47jg6oNCivjg5LjgqvjgqQs44Oe44OJ44KrDQor44OS44OK44K/LOOCuOODpeODsw0KK+ODkuODjizjgrfjg6fjgqbjgqTjg4ENCivjg5Ljg44s44K/44Kr44Om44KtDQor44OS44Op44KuLOODpOOCueOCtw0KK+ODqOODouODgCzjgqvjgrrjg4gNCivjg5Ljg6njg44s44Oe44K144OO44OWDQor44OS44Op44OOLOODkuODreODpuOCrQ0KK+ODkuODqeOCteODryzjgqvjgrrjg5Ljg60NCivjg5Ljg6njgr8s44Oe44K144OS44OtDQor44Ki44K144OOLOODkuODreOCtw0KK+ODkuODqeOCvyzjg5LjgrXjgqoNCivjg5Ljg6njg4Tjgqss44K/44Kx44K3DQor44OS44Ot44Kr44OvLOODleODn+OCouOCrQ0KK+ODkuODreODiuOCqyzjgqvjgrrjg5LjgrUNCivjg5Ljg63jgrss44OS44K144Om44KtDQor44K/44K344OtLOOCreODn+OCsw0KK+ODkuODreOCuyzjg57jgrPjg4gNCivjg5Ljgrfjg4zjg54s44OS44Ot44OO44OWDQor44Kk44Ov44Oi44OILOOCuOODpeODsw0KK+ODkuOCpuODqSzjg5Ljg4jjgrcNCivjgrnjgq7jg6Ljg4gs44K744Kk44Kk44OBDQor44Ob44Oz44OeLOODpOOCueODpuOCrQ0KK+ODm+ODs+ODnizjg4Tjg6jjgrcNCivjg5vjg7Pjg54s44K/44Kk44OpDQor44Ob44Oz44OeLOOCv+ODhOODreOCpg0KK+ODm+ODquOCq+ODryzjgrjjg6Xjg7PjgqTjg4ENCivjg5vjg6rjgqos44Kr44OE44Oo44K3DQor44Ob44OqLOOCq+OCuuOCqg0KK+ODm+ODqizjgqLjg4TjgrcNCivjg5vjg6os44Kz44Km44Kk44OBDQor44Ob44K344OOLOOCt+ODs+OCuA0KK+ODm+OCt+ODjizjgqLjgq3jgrMNCivjg5vjgrfjg44s44OV44OI44K3DQor44Ob44K3LOODkuODreOCsw0KK+ODm+OCvSzjgqvjgrrjg58NCivjg5vjgr/jg4Ys44Om44KrDQor44Kk44OB44Kr44OvLOODpuODn+OCsw0KK+OCpOODgeOCq+ODryzjgrXjg4jjgrcNCivjgqTjg4Hjgq0s44K/44Kx44K3DQor44Kk44OB44OO44K7LOOCouODqg0KK+OCpOODgCzjg4rjgqrjgq0NCivjgqTjg4fjgqQs44Oe44K144Kr44K6DQor44Kk44Ks44Op44K3LOODpuOCpuOCuA0KK+OCpOOCsOODgSzjgrTjgqYNCivjgqTjgqTjg4As44Ko44Kk44K244OW44Ot44KmDQor44Kk44Kk44OALOODleOCuOOCqg0KK+OCpOOCpOOCuOODnizjg5Ljg63jg6bjgq0NCivjgqTjgqTjgrjjg54s44Kr44K644OO44OqDQor44Kk44Kk44Og44OpLOODqOOCt+ODjuODlg0KK+OCpOOCpOODjizjg5Ljg4fjgq0NCivjgqTjgqTjgrrjgqss44OS44Ot44K3DQor44Kk44Kk44K644KrLOOCq+ODhOODkuOCsw0KK+ODj+ODq+OCvyzjg4jjgrfjgrMNCivjgqTjgrHjg4As44OK44Kq44OS44OtDQor44K544K644KtLOODiOOCquODqw0KK+OCpOOCseODgCzjgq/jg4vjg5Ljg60NCivjgqTjgr3jg5ks44Kz44Km44K4DQor44Kk44Kx44Ok44OeLOOCueOCruOCqg0KK+OCpOOCr+OCvyzjg4jjgrfjgqLjgq0NCivjgqTjg57jgqTjgrrjg58s44OB44K644KzDQor44Oi44Oq44K344K/LOOCt+OCsuOCrQ0KK+OCpOODnuOCpCzjgr/jg4DjgrcNCivjgqTjg57jg6Djg6ks44Oe44OK44OWDQor44Kk44Oe44Og44OpLOODjuODquODpuOCrQ0KK+OCpOODiuODnyzjgrHjg7Pjg6QNCivjgqTjg47jgqbjgqgs44Ok44K544OS44OHDQor44Kk44OO44Km44KoLOODkuODreOCtw0KK+OCpOODjuOCpuOCqCzjg5Ljg63jgrcNCivjgqTjg47jgqbjgqgs44OS44Ot44K/44KrDQor44Kk44OO44Km44KoLOODn+ODhOOCsw0KK+OCpOODjOOCpCzjg6bjgq3jg4jjgrcNCivjgqTjgrfjg4As44Oe44OK44OWDQor44Kk44K344OALOODiOOCt+ODkuODrQ0KK+OCpOOCt+ODgCzjg6bjgr/jgqsNCivjgqTjgrfjgrDjg60s44Oe44OqDQor44Kk44K344Kw44OtLOODkuODreOCtw0KK+OCpOOCt+ODj+ODqSzjgrjjg6Xjg7PjgqTjg4ENCivjgqTjgrfjgqQs44Kr44Kq44OrDQor44Kk44K344KkLOOCseOCpOOCpOODgQ0KK+OCpOOCt+OCpCzjgrPjgqbjgrgNCivjg6bjgq3jg57jgrUs44Oe44K144OI44K3DQor44Kk44K344Kr44OvLOOCv+OCq+OCtw0KK+OCpOOCt+OCq+ODryzjg6jjgqbjgrMNCivjgqTjgrfjgq/jg6ks44Om44K/44KrDQor44Kk44K344Oi44OqLOODkuODreOCouOCrQ0KK+OCpOOCt+ODouODiCzjg6rjgqgNCivjgqTjgrfjg6Ljg4gs44K144OB44KzDQor44Kk44K344Kq44KrLOODpuOCqw0KK+OCpOOCt+OCquOCqyzjg47jg5bjgqoNCivjgqTjgrfjg6/jgr8s44OK44Kq44OS44K1DQor44Kr44OzLOODqOOCpuOCpOODgeODreOCpg0KK+OCpOOCt+OCtuOCqyzjgqvjg6jjgrMNCivjgqTjgr3jgqzjgqQs44K/44Kr44OS44OtDQor44Kk44K/44OQ44K3LOOCt+ODs+OCpOODgQ0KK+OCpOOCv+ODkOOCtyzjgrfjgrLjgq0NCivjgrXjgq7jg6Qs44OS44OH44Ki44KtDQor44Kk44OI44KmLOODhuODhOODpA0KK+OCpOODiOOCpizjgqLjgrHjg58NCivjgqTjg4jjgqYs44OO44K+44OgDQor44Kk44OI44KmLOODiuOCquODqOOCtw0KK+OCpOODiOOCpizjgqvjgrrjgrfjgrINCivjgqTjg4jjgqYs44OK44Kq44Om44KtDQor44Kk44OI44KmLOOCv+OCq+OCtw0KK+OCteOCq+OCpCzjgrPjgqbjgqTjg4ENCivjgqTjg4jjgqYs44Kr44K644Om44KtDQor44Kk44Ov44KkLOOCq+OCquODqw0KK+OCt+ODnuODoOODqSzjg5XjgrXjg4HjgqsNCivjgqTjg6/jgqQs44Kt44On44Km44KzDQor44Kr44Ov44OK44KrLOOCq+OCuuODnw0KK+OCpOODr+OCr+ODnCzjgr/jgqvjg6bjgq0NCivjgqTjg6/jg6Ljg4gs44K144Ok44KrDQor44Kk44Ov44Oi44OILOODkuODh+OCouOCrQ0KK+OCv+OCseODgCzjgrXjg4HjgrMNCivjgqTjg6/jg6Djg6ks44OS44Ot44Om44KtDQor44Kk44Ov44OK44KsLOODkuODh+OCqg0KK+OCpOODr+OCqizjgrPjgqbjgqTjg4ENCivjgqTjg6/jgrXjgq0s44K/44OE44OS44KzDQor44Kk44Ov44K144KtLOODiOODqeODkuOCsw0KK+OCu+OCrOODryzjg57jgrXjgr/jgqsNCivjgqTjg6/jgrfjg60s44Oo44K344OS44K1DQor44Kk44K644OfLOODnuOCs+ODiA0KK+OCq+OCqOODquODpOODnizjg4rjgqrjgq0NCivjgqvjgqzjg58s44Kk44Kv44KqDQor44Kr44Ks44OfLOOCt+OCsuODqOOCtw0KK+OCq+OCuOOCv+ODiyzjgqvjgrrjg5LjgrMNCivjg6Tjg57jg6Ljg4gs44Ko44Kk44Kk44OBDQor44Kr44Kt44OM44OeLOODkuODreOCouOCrQ0KK+OCq+OCryzjg5Ljg63jg6bjgq0NCivjgqvjg57jg4As44Oe44Kz44OIDQor44Kk44OK44Ks44KtLOODnuOCteOCqA0KK+OCq+ODnuODouODiCzjgr/jgqjjgrMNCivjgqvjg57jgr/jg4ss44OK44Kq44OV44OfDQor44Kr44Oe44K/LOODiOODouOCsw0KK+ODpOODnuODgCzjgqjjgqTjgrgNCivjgqvjg6Hjg4As44Ki44Kt44KzDQor44Kr44Oh44OkLOODkuODh+OCrQ0KK+OCq+ODnyzjg57jgrPjg4gNCivjgqvjg5/jgqos44Oe44OK44OfDQor44Kr44Of44OkLOODnuOCteODjuODqg0KK+OCq+ODouODiCzjg6jjg6rjgrMNCivjgqvjg4rjg4As44Oe44K144K/44KrDQor44Kr44OK44KkLOOCreODp+OCpuOCsw0KK+OCq+ODiuOCpCzjg6rjgqjjgrMNCivjgqvjg4rjgrbjg68s44K144OA44Kk44OBDQor44Kr44Oz44OALOOCv+OCq+ODkuODrQ0KK+OCq+ODjeOCpOODgSzjgqLjgq3jgqoNCivjgqvjg43jgrMs44OS44Ot44OW44OfDQor44Kr44ON44KzLOODnuOCueOCqg0KK+OCq+ODjeOCsyzjgrfjg6XjgqbjgrgNCivjgqvjg43jgrMs44K/44Kx44OS44KzDQor44Kr44ON44KzLOODpOOCqA0KK+OCq+ODjeOCsyzjg5LjgrXjgrcNCivjgqvjg43jg57jg6ss44Ki44OE44K3DQor44Kr44Oq44OkLOODqOOCt+ODjuODlg0KK+OCq+ODq+ODmSzjgq3jg6fjgqbjgrgNCivjgqvjgrfjg54s44OS44Ot44Om44KtDQor44Kr44K344Ov44KuLOODqOOCt+ODpuOCrQ0KK+OCq+OCt+ODr+OCrizjg5Ljg63jgrcNCivjgqvjgrnjg6Qs44Kx44Kk44K0DQor44Kr44K544OkLOOCt+ODp+OCpuOCsw0KK+OCq+OCueODpCzjgr/jgqvjgrcNCivjgqvjgr/jg44s44Kx44Oz44Kk44OBDQor44K344Op44KtLOOCq+ODhOOCqg0KK+OCq+OCv+OCquOCqyzjg6jjgqbjgqTjg4Hjg63jgqYNCivjgqvjgr/jgqrjgqss44Ki44OE44K3DQor44Kr44K/44Ok44OeLA0KK+OCq+ODiOOCpizjgr/jg4bjgqoNCivjgqvjg4jjgqYs44OS44Ot44K3DQor44Kr44OI44KmLOODkuODreOCsw0KK+OCq+ODiOOCpizjg5Ljg63jg6QNCivjgqvjg4jjgqYs44K/44Kx44K3DQor44K044OI44KmLOODkuODreOCq+OCug0KK+OCq+ODhOODpCzjg5Ljg63jgrcNCivjgqvjg6/jg4As44Of44OB44KqDQor44Kr44Ov44OALOOCteODgeOCsw0KK+OCq+ODr+OCsOODgSzjgrXjg4jjgrcNCivjgqvjg6/jg4/jg6ks44K744Kk44Kk44OB44Ot44KmDQor44Kr44Ov44OP44OpLOODkuODreOCouOCrQ0KK+OCq+ODr+ODj+OCvyzjg5Ljg63jg6bjgq0NCivjgqvjg6/jgqQs44K444Ol44Oz44Kk44OBDQor44Kr44Ov44KkLOOCq+ODqOOCsw0KK+OCq+ODr+OCpCzjg5/jg5sNCivjgqvjg6/jgqvjg58s44K/44Kx44K3DQor44Kr44Ov44Kt44K/LOODiOODouOCouOCrQ0KK+OCq+ODr+OCreOCvyzjg6TjgrnjgrMNCivjgqvjg6/jg6Djg6ks44Om44Kt44Oe44K1DQor44Kr44Ov44Og44OpLOODpuOCrQ0KK+OCq+ODr+ODoOODqSzjg57jgrXjg6bjgq0NCivjgqvjg6/jgr7jgqgs44Of44OKDQor44OV44K/44Kv44OBLOOCv+ODgOOCtw0KK+OCreODgCzjg6Tjgrnjg5Ljg60NCivjgq3jg4As44Oo44K344OV44OfDQor44Kt44OJLOOCouOCreOCqg0KK+OCreODj+ODqSzjgqvjg4Tjg4jjgrcNCivjgq3jgq/jg4Es44Kz44Km44K4DQor44Kt44Kv44OBLOOCouOCpOOCsw0KK+OCreOCr+OCvyzjgqTjgrXjgqoNCivjgq3jg6Ljg4gs44Kr44K644Oe44K1DQor44Kt44Og44OpLOODn+ODjuODqw0KK+OCreODoOODqSzjg4rjg5vjg58NCivjgq3jg6Djg6ks44K344Ol44Oz44Kk44OBDQor44Kt44Og44OpLOOCueODn+ODkuODrQ0KK+ODnuODhOODouODiCzjgr/jgq/jg63jgqYNCivjgq3jg6Djg6ks44OI44K344KqDQor44Kt44Og44OpLOOCuOODpeODs+OCsw0KK+OCquOCq+OCtuOCrSzjgr/jgrHjgqoNCivjgq3jg6Djg6ks44Om44KrDQor44Kt44Og44OpLOOCouODhOOCtw0KK+OCreODjuOCt+OCvyzjgrHjgqTjgrMNCivjgq3jgrcs44Kt44Of44OS44KzDQor44Kt44K5LOOCuOODpeODs+OCsw0KK+OCreOCv+OCq+OCvCzjg47jg5bjgq0NCivjgq3jgr/jg6Djg6ks44Ki44Kt44KqDQor44Kt44Km44OBLOODiuOCquODiA0KK+OCreOCpuODgSzjgr/jgqvjgr7jgqYNCivjgq3jg6jjgr8s44OA44Kk44K544KxDQor44Kz44OQ44Ok44K3LOODnuOCteODj+ODqw0KK+OCs+ODkOODpOOCtyzjgrHjg7PjgrgNCivjgrPjg5Djg6Tjgrcs44Of44Oo44KzDQor44Kz44OQ44Ok44K3LOODqOOCt+ODpuOCrQ0KK+OCs+ODkOODpOOCtyzjgr/jgqvjgrcNCivjgrPjg5Djg6Tjgrcs44OS44OH44Ki44KtDQor44Kz44OQ44Ok44K3LOODpuOCpuOCpOODgQ0KK+OCs+ODkOODpOOCtyzjg6jjgrfjgqoNCivjgrPjg5Djg6Tjgrcs44OS44Ot44OS44OHDQor44OS44Ot44K7LOODj+ODq+OCqg0KK+OCs+ODh+ODqSzjgqLjgq3jg5Ljg60NCivjgrPjgqzjgqQs44OS44K144K/44KrDQor44Kz44Kw44OsLOOCq+OCuuOCqg0KK+ODouODquOCvyzjg5/jg4Hjg5LjgrMNCivjgrPjg6Ljg4gs44Oo44Km44K544KxDQor44Kz44Oz44OOLOOCouOCreODkuODrQ0KK+OCs+OCteOCqyzjg6jjgrfjg6bjgq0NCivjgrPjgqTjgrEs44Kt44Oo44K3DQor44Kz44Kk44KxLOODqOOCpuOCpOODgQ0KK+OCs+OCpOOCtyzjgqLjgq3jgqoNCivjgrPjgrjjg54s44Kr44K644K/44KrDQor44Kz44K444OeLOODhuODhA0KK+OCs+OCr+ODmyzjgqvjg4Tjg6QNCivjgrPjgq/jg57jgqQs44Of44Ko44KzDQor44Kz44Oe44Ks44K/LOODnuOCs+ODiA0KK+OCs+ODnuOCrSzjgqvjgrrjg6bjgq0NCivjgrPjg57jg4Qs44Oo44Km44Kk44OBDQor44Kz44Oe44OELOOCouODhOOCtw0KK+OCs+ODn+ODjSzjgqvjg4Tjg47jg6oNCivjgrPjg5/jg6Tjg54s44Oo44K344OO44OWDQor44Kz44Oi44Kq44KrLOODleODn+OCqg0KK+OCs+ODouODqizjgrfjgrLjg47jg6oNCivjgrPjg7Pjg4ks44OS44Ot44K3DQor44Kz44Oz44OJLOODn+OCreOCqg0KK+OCs+ODs+ODiSzjg6jjgrfjgr7jgqYNCivjgrPjg7Pjg4ks44K/44Kr44Om44KtDQor44Kz44Oz44OJ44KmLOOCv+ODhOODiA0KK+OCs+ODs+ODjizjg4bjg4TjgqoNCivjgrPjgrnjgq4s44Oo44Km44Kk44OBDQor44Kz44Km44OALOODiOOCt+ODpuOCrQ0KK+OCs+ODpOODiuOCrizjg47jg5bjg5LjgrMNCivjgq/jg5zjgr8s44OS44Ot44Om44KtDQor44Kv44Oc44K/LOODiuOCquOCrQ0KK+OCr+ODnCzjgr/jgqvjg6bjgq0NCivjgq/jg4njgqYs44K044KmDQor44Kv44KsLOOCt+OCsuODqw0KK+OCr+OCuOODnizjgqjjg6oNCivjgq/jg57jg4As44OS44Ot44K3DQor44Kv44Oe44KtLOODnuOCrQ0KK+OCr+ODnuOCr+ODqSzjgqvjg4Tjg4gNCivjgq/jg57jg6Ljg4gs44Ki44Kt44OS44KzDQor44Kv44Oi44Kr44OvLOODkuODreODjuODqg0KK+OCr+ODqeOCt+ODnizjgrPjgqbjgqTjg4ENCivjgq/jg6rjg4/jg6ks44Kz44Km44K4DQor44Kv44Oq44OP44OpLOODpuODn+OCsw0KK+OCr+ODquODoOODqSzjgrfjg6XjgqbjgrgNCivjgq/jg6rjgrks44OS44Ot44K3DQor44Kv44Oq44Ok44OeLOODpuOCreOCqA0KK+OCr+ODquODpOODnizjgrjjg6Xjg7PjgqTjg4ENCivjgq/jg63jg4As44Ki44Kt44OpDQor44Kv44Ot44Kr44OvLOODkuODreOCtw0KK+OCr+ODreOCrSzjg47jg5bjg6QNCivjgq/jg63jgrXjgq0s44OO44OW44Ki44KtDQor44Kv44Ot44K5LOODkuODreOCtw0KK+OCr+OCt+ODgCzjg6/jgr/jg6sNCivjgq/jgrnjg4As44Oo44K344KzDQor44Kv44Ov44OQ44OpLOOCpOODgeODreOCpg0KK+OCpuODgeODgCzjgrHjgqTjgqTjg4ENCivjg57jgqjjg4As44Ok44K544OS44KzDQor44OL44OvLOOCt+OCsuODn+ODhA0KK+ODnuOCqOODkuODqSzjg57jgrXjg4gNCivjg57jgqjjgqvjg68s44OS44OH44K/44KrDQor44Oe44Kt44Og44OpLOODkuODreODn+ODhA0KK+ODnuOCreODjizjg6bjgqbjgrgNCivjg57jgq3jg44s44Oe44OqDQor44Oo44Km44Kz44K/LOODn+ODgeODpOOCuQ0KK+ODnuODq+ODpOODnizjgr/jg4DjgrcNCivjg57jgrnjg4As44Of44Kt44KqDQor44Oe44K544OALOODhuODq+OCouOCrQ0KK+ODnuOCueODkuODrSzjgq3jg58NCivjg57jgrnjg6Tjg54s44K/44Kv44K4DQor44Oe44OE44OQ44OpLOOCs+OCpuOCuA0KK+ODnuODhOODkOODqSzjg6Tjgrnjg4rjg6oNCivjg57jg4Tjg4DjgqTjg6ks44Oe44K144OIDQor44Oe44OE44OALOOCt+OCsuOCqg0KK+OCteOCteODouODiCzjgrXjg6bjg6oNCivjg57jg4Tjg4As44OI44K344OfDQor44Oe44OE44OV44K1LOOCq+ODhOOCuA0KK+ODnuODhOOCpCzjg4jjgqrjg6sNCivjg57jg4TjgqQs44K444Ol44Oz44Kk44OBDQor44Oe44OE44KtLOOCouOCreODkuOCsw0KK+OCq+ODjuOCpizjg5Ljg63jg6bjgq0NCivjg57jg4Tjg6Ljg4gs44Om44Km44Kk44OBDQor44Oe44OE44Oi44OILOODiOOCt+ODpuOCrQ0KK+ODnuODhOODouODiCzjg5XjgrjjgqoNCivjg4/jgrfjg6Ljg4gs44K344On44Km44K4DQor44Oe44OE44Og44OpLOOCreODi+ODgQ0KK+ODnuODhOODoOODqSzjg5Ljg63jg6bjgq0NCivjg57jg4Tjg4rjg58s44OS44Ot44Om44KtDQor44Oe44OE44OK44OfLOODpuOCreOCqg0KK+ODgeODkCzjg4bjg4Tjg6QNCivjg57jg4Tjgrfjg5As44Kz44Km44Kk44OBDQor44Oe44OE44K344K/LOODkuODreOCtw0KK+ODnuODhOOCt+OCvyzjgqjjgqTjgqTjg4ENCivjg57jg4Tjgqbjg6ks44Kk44OB44Ot44KmDQor44Oe44OE44K244KtLOOCv+ODgOOCtw0KK+OCpOODnuOCpCzjg57jgrXjg6bjgq0NCivjg57jg6bjg6Tjg54s44Ki44OE44K3DQor44Oh44OzLOODnuOCteODiA0KK+ODn+ODgeOCrOODnyzjg47jg6rjgqoNCivjg5/jg4/jg6ks44OP44Or44KzDQor44Of44KtLOOCouODhOOCtw0KK+ODn+ODouODqizjg5Ljg63jgrcNCivjg5/jg4rjg5/jgrDjg4Es44Kr44OK44OhDQor44Of44OK44K644KtLOODiuOCquODpuOCrQ0KK+ODn+ODjeODoOODqSzjg6bjgqvjg6oNCivjg5/jgrfjg4os44Kr44K644OS44OtDQor44Of44OE44KkLOOCv+OCseODj+ODqw0KK+ODn+OCpuODqSzjg6jjgqbjgqTjg4ENCivjg5/jgqbjg6ks44Kx44Oz44Kk44OBDQor44Og44Op44Kr44OfLOODnuOCteODj+ODqw0KK+ODn+ODryzjgrfjgrLjg6bjgq0NCivjg5/jg6Tjgqzjg68s44Oe44K144KqDQor44Of44Ok44KuLOODn+ODgeOCsw0KK+ODn+ODpOODj+ODqSzjg4jjgrfjgqoNCivjg5/jg6Tjg4/jgrcs44Kt44On44Km44KzDQor44Of44Ok44Kr44OvLOODnuOCteODiOOCtw0KK+ODn+ODpOOCrSzjg57jgrXjgrrjg58NCivjg5/jg6Tjg6Ljg4gs44K744Kk44K4DQor44Of44Ok44Oi44OILOODkuODreOCtw0KK+ODn+ODpOODouODiCzjg57jgrXjg5Ljg60NCivjg5/jg6TjgrXjgqss44OK44Kq44KtDQor44Of44Ok44K/44KxLOOCt+OCsuODnw0KK+ODn+ODpOOCvyzjg4jjgrfjg5Ljg60NCivjg5/jg6Tjgr8s44Om44Km44K4DQor44Of44Ok44K/LOODnuOCteODn+ODgQ0KK+OCr+ODreODgCzjgrHjgqTjgrMNCivjg5/jg6jjgrcs44OK44Kq44KzDQor44Of44K644Kz44K3LOODnuOCreOCqg0KK+ODn+OCuuOCs+OCtyzjg4jjgrfjgqoNCivjg5/jgrrjg44s44K/44OE44OkDQor44Of44K644OOLOODjuODluODj+ODqw0KK+ODn+OCuuOCv+ODiyzjgrfjg7PjgrgNCivjg6Ljg6os44K344On44Km44K4DQor44Oi44OqLOODjuODquOCsw0KK+ODouODquOCq+ODryzjgqLjgq3jgrMNCivjg6Ljg6rjgq0s44Ok44K544OS44OtDQor44Oi44Oq44K344K/LOODqOOCt+ODnw0KK+ODouODquOCvyzjgr/jg4DjgrcNCivjg6Ljg6rjgr8s44Kr44K644OS44OtDQor44Oi44Oq44Ok44OeLOODiOOCt+OCqg0KK+ODouODquOCvuODjizjg4Tjg6jjgrcNCivjg6Ljg6os44K144OI44OrDQor44Oi44OqLOOCq+ODhOODiOODnw0KK+ODouODqizjg6TjgrnjgqoNCivjg6Ljg6os44OS44Ot44OO44OqDQor44Oi44Ot44K644OfLOODjuODnOODqw0KK+OCpOODjuODj+ODiizjgqvjgrrjgqoNCivjgrPjgrjjg54s44K344Oz44K0DQor44Og44Kr44KkLOOCv+ODhOODnw0KK+ODoOOCq+OCpCzjgrXjg4HjgqoNCivjg6Djg6njgqQs44OB44OK44OEDQor44Og44Op44Kr44OfLOODiOOCquODqw0KK+ODoOODqeOCq+ODnyzjg4Hjg4/jg6sNCivjg6Djg6njg57jg4Qs44Oe44K144Kr44K6DQor44OL44OvLOOCq+ODhOODkuODrQ0KK+ODoOODqeOCvyzjgrXjg4jjgrcNCivjg6Djg6njgr8s44Kk44OB44Ot44KmDQor44Kq44Kq44OOLOOCv+OCq+OCtw0KK+ODoOODqeODpOODnizjg4Hjg4/jg6sNCivjg6Djg4jjgqYs44OS44Ot44OkDQor44Og44OI44KmLOOCv+OCq+OCtw0KK+ODoOODiOOCpizjgqLjg57jg40NCivjg6Djg4Tjgrfjgqss44Ko44Kk44Kk44OBDQor44OK44Ks44KkLOODkuODreOCtw0KK+ODiuOCrOOCpCzjgqvjg4Tjg6bjgq0NCivjg4rjgqzjg6Ljg4gs44Kx44Oz44Kk44OBDQor44Ki44Op44KkLOOCv+OCseODiOOCtw0KK+ODiuOCrOOCqizjg6Tjgrnjg4rjg6oNCivjg4rjgqzjgrXjg68s44Ki44OE44K3DQor44OK44Ks44K144OvLOOCq+OCuuODiA0KK+ODiuOCrOODpOODnizjgqLjgq3jg5Ljg60NCivjg4rjgqTjg4jjgqYs44OV44K144OO44OWDQor44OK44Kk44OI44KmLOOCq+ODhOOCqg0KK+ODiuOCq+ODkOODpOOCtyzjgqvjgrrjg5LjgrUNCivjg4rjgqvjg4Djg4Ys44Kz44Km44Kk44OBDQor44OK44Kr44Ks44KtLOODnuOCteODjuODqg0KK+ODiuOCrOOCqCzjgr/jgqvjg6bjgq0NCivjg4rjgqvjgqzjg68s44OG44Or44K4DQor44OK44Kr44Ks44OvLOODiOOCt+ODpuOCrQ0KK+ODiuOCq+OCtOODoSzjg6jjgrfjg4rjg6oNCivjg4rjgqvjg5Ljg6ks44Om44K/44KrDQor44OK44Kr44KkLOOCqOODn+OCsw0KK+ODiuOCq+OCuOODnizjgqvjg4Tjg4jjg6INCivjg4rjgqvjgrjjg54s44Of44Ko44KzDQor44OK44Kr44K444OeLOODiuOCquODpA0KK+ODiuOCq+OCuOODnizjgqjjg6oNCivjg4rjgqvjgrjjg54s44OE44ON44Ki44KtDQor44OK44Kr44K444OeLOOCseOCpOOCpOODgQ0KK+ODiuOCq+OCuOODnizjg4rjgqrjg5Ljg4cNCivjg4rjgqvjg57jgr8s44OO44Oq44OS44OtDQor44OK44Kr44Of44OBLOOCt+ODpeODs+OCpOODgeODreOCpg0KK+ODiuOCq+ODoOODqSzjg57jgrXjgq0NCivjg4rjgqvjg6Djg6ks44OI44K344Ki44KtDQor44OK44Kr44Og44OpLOODnuOCs+ODiA0KK+ODiuOCq+ODoOODqSzjg4bjg6vjg5Ljg60NCivjg4rjgqvjg6Djg6ks44K344Oz44K4DQor44OK44Kr44Og44OpLOODj+OCuOODoQ0KK+ODiuOCq+ODoOODqSzjg47jg6rjgqLjgq0NCivjg4rjgqvjg6Djg6ks44OS44Ot44Om44KtDQor44OK44Kr44Og44OpLOOCq+OCuuODkuOCsw0KK+ODiuOCq+ODoOODqSzjg57jgrXjg6bjgq0NCivjg4rjgqvjg6Djg6ks44OK44Kq44KtDQor44OK44Kr44OL44K3LOODiOOCt+OCouOCrQ0KK+OCquOCquODi+OCtyzjg57jgrXjg47jg6oNCivjg4rjgqvjg4vjgrcs44OI44K344Om44KtDQor44OK44Kr44OL44K3LOODjuODluODpOOCuQ0KK+ODiuOCq+ODjizjgq3jg6jjgr/jgqsNCivjgqrjgqvjgrbjg68s44Kr44Oo44KzDQor44OK44Kr44OOLOODjuOCvuODnw0KK+ODiuOCq+ODjizjg6jjgrfjg5Xjg58NCivjg4rjgqvjg44s44Oi44Ko44KzDQor44OK44Kr44Kq44KrLOODhuODhOODpA0KK+ODiuOCq+OCqizjg5Xjg5/jgrMNCivjg4rjgqvjgqos44Ko44Kk44K4DQor44OK44Kr44K7LOOCs+OCpuOCtw0KK+ODiuOCq+OCveOCrizjg57jgrXjg4jjg58NCivjg4rjgqvjgr8s44K344Ky44KzDQor44OK44Kr44OE44KrLOOCv+OCq+OCtw0KK+ODiuOCq+ODhOOCqyzjg57jgrPjg4gNCivjg4rjgqvjg6Tjg54s44OS44OH44KtDQor44OK44Kr44Ok44OeLOOCouODhOOCtw0KK+ODiuOCq+ODpOODnizjgr/jg4Tjg6QNCivjg4rjgqvjg6Tjg54s44Kz44Km44OY44KkDQor44OK44Kr44Ok44OeLOOCq+ODhOODkuOCsw0KK+ODiuOCq+OCtuODryzjg5/jg4TjgrANCivjg4rjg5/jgq0s44Kv44OL44KqDQor44OK44Op44K344OeLOODnuOCteOCouOCrQ0KK+ODiuODqSzjgr/jgrHjg5LjgrMNCivjgq/jg4njgqYs44OS44K144K3DQor44OK44OE44OOLOODn+ODgeODj+ODqw0KK+ODiuODhOODpOODnizjg6bjgqbjgrMNCivjgqjjg4jjgqYs44OS44Ot44K3DQor44OL44OY44KkLOOCv+OCq+OCtw0KK+OCquOCr+ODjizjgrXjg6bjg6oNCivjg57jgqjjg5vjg6os44OS44Ot44OfDQor44OL44K344OALOODkuODiOOCtw0KK+ODi+OCt+OCsOODgSzjgr/jg4TjgqoNCivjg6Ljg6os44Om44Kt44KzDQor44OL44K344Kr44OvLOODnuOCteOCtw0KK+ODi+OCt+OCr+ODqSzjgrfjgrLjg6sNCivjg4vjgrfjg6Ljg4gs44Oe44K144KtDQor44OL44K344KqLOODiOOCt+ODkuOCsw0KK+ODi+OCt+ODr+OCrSzjgrHjgqTjgrMNCivjg4vjgrcs44Oe44K144OrDQor44OL44OvLOODnuOCteOCrQ0KK+ODjuODluODnuOCtSzjg5/jgrXjg4gNCivjg47jg4As44Oi44OI44OS44KzDQor44OO44Kw44OBLOOCv+OCq+OCtw0KK+ODjuOCsOODgSzjgrHjg7MNCivjg47jg5vjg6os44OS44OH44Om44KtDQor44OO44K/44OLLOODnuOCteOCv+OCsQ0KK+ODjuODnizjgrXjg4jjgrcNCivjg47jg5/jg6Tjg54s44OI44K344Ot44KmDQor44OO44Oi44OILOODiOOCt+OCouOCrQ0KK+OCv+ODs+OCtuODsyzjg5/jg4HjgqoNCivjgqrjgqrjgqvjg68s44Kr44K644OS44KzDQor44OO44OO44Ok44OeLOODnuOCteOCrQ0KK+ODjuODquOCq+ODjSzjg57jgrXjg6sNCivjg47jg60s44K744Kk44Kk44OBDQor44OOLOOCt+ODs+OCpOODgQ0KK+OCquODkOODiizjg5Ljg63jgrcNCivjgqrjg5Pjg4rjgr8s44Ki44Kt44OS44KzDQor44Kq44OB44Ki44KkLOODqOOCt+ODjuODqg0KK+OCt+ODnuODoOODqSzjg5Ljg63jgrcNCivjgqrjg4Djg40s44Oo44K344Kr44K6DQor44Kq44Ks44OvLOODiuOCquODnw0KK+OCquOCsOODqSzjg5Ljg4fjg4jjgrcNCivjgqrjgrDjg6ks44K744Kk44K4DQor44Kq44Kw44OpLOOCt+ODs+OCueOCsQ0KK+OCquOCquOCsOODrSzjgqTjg6/jgqoNCivjgqrjgqrjg5Djg6Tjgrcs44Kx44Kk44K+44KmDQor44Kq44Kq44OQ44Ok44K3LOODpOOCueODpuOCrQ0KK+OCquOCquODkCzjgqjjg6rjgrMNCivjgqrjg4Es44K344Oz44K0DQor44Kq44Kq44OHLOODiOOCt+ODkuOCsw0KK+OCquOCquODm+ODqizjg47jg6rjgqoNCivjgqrjg5ss44Kz44K544KxDQor44Kq44Kq44Kk44K3LOODouODiOOCpOODgQ0KK+OCquOCrSzjg6jjgrfjg6bjgq0NCivjgqrjgqrjgq/jg5ws44Oe44K144OS44OtDQor44Kq44Kq44Kv44OcLOODnuOCteOCr+ODiw0KK+OCquOCquODn+ODgSzjgr/jgrHjg47jg6oNCivjgqrjg6Djg6ks44OE44ON44Ki44KtDQor44Kq44Kq44OL44K3LOOCpOOCteOCqg0KK+OCquODjizjgrPjgqbjgqTjg4Hjg63jgqYNCivjgqrjg6njgqQs44K544K544OgDQor44Kq44K144KtLOOCteODiOOCtw0KK+OCquOCquOCteODryzjgr3jgqbjgqTjg4Hjg63jgqYNCivjgqrjgqrjgrXjg68s44K/44OA44K3DQor44Kq44Kq44K144OvLOODquODpeOCpuOCuA0KK+OCquOCquOCv+ODiyzjgrHjg7PjgrgNCivjgqrjgqrjgr8s44OK44Kq44KtDQor44Kq44Kq44OI44OiLOOCouOCreOCqg0KK+OCquOCtuOCrSzjgrPjgqbjgrgNCivjgqrjgqrjg4Tjgqss44K/44Kx44K3DQor44Kq44Kq44OE44KrLOODiOOCt+ODreOCpg0KK+OCquOCquODhOOCrSzjg4bjg4Tjg6QNCivjgqrjgqrjg6Qs44Oe44K144OS44OtDQor44Kq44OS44OjLOOCr+ODi+ODkuOCsw0KK+OCquOCquODpCzjgrnjgrDjg6sNCivjgqrjgqvjg4As44OE44Kw44KqDQor44Kq44Kr44OALOODqOOCt+ODkuODrQ0KK+OCquOCq+ODgCzjg4jjgrfjg5Ljg60NCivjgqrjgqvjg4As44K344Oz44Kk44OBDQor44Kq44Kr44OP44OpLOODkuODreOCrQ0KK+OCquOCq+ODouODiCzjg6jjgrfjgqoNCivjgq/jgrXjg5As44OS44Ot44K3DQor44Kq44Kr44Og44OpLOODnuOCteOCq+OCug0KK+OCquOCq+ODoOODqSzjg57jgrXjgq0NCivjgqrjgqvjg44s44OS44Ot44K3DQor44OI44OT44K/LOOCt+ODpeOCpuODmOOCpA0KK+ODm+OCveOCq+ODryzjgrPjgqbjgrgNCivjgqbjgqjjg4As44OI44Oo44Kr44K6DQor44Kz44K744KtLOODpuODnw0KK+OCv+OCtuODryzjgrfjg6Xjg7PjgrgNCivjg6Tjg57jgrbjgq0s44Oo44K344Kr44K6DQor44Ko44Kw44OBLOODkuODreODpuOCrQ0KK+ODouODgeODgCzjgrnjgrnjg6ANCivjgqLjgq3jg6Ljg4gs44Kt44Ko44KkDQor44OL44K3LOOCouODhOOCrQ0KK+OCpOODnuOCpOOCtyzjgrfjgrLjg4jjgrcNCivjgr/jgqvjg6Tjgrks44OO44OW44Oo44K3DQor44OP44K/LOODnuOCteODpuOCrQ0KK+ODleOCuOOCteODryzjgqLjgq3jg6kNCivjg6Djg4jjgqYs44OS44K144K3DQor44Oi44K/44KkLOOCt+ODs+OCpOODgQ0KK+OCv+ODgCzjgr/jgqvjg6bjgq0NCivjgrPjgqTjgrrjg58s44Kr44K644Oo44K3DQor44OE44Oc44Kv44OpLOOCs+OCpuOCvuOCpg0KK+ODkuODqeODkOODpOOCtyzjg5Ljg63jgrgNCivjg4Tjgrjjgqvjg68s44OS44Ot44Kr44K6DQor44Of44OE44Kk44K3LOOCu+OCpOOCpOODgQ0KK+ODpOODnuOCt+OCvyzjgrHjg7PjgrgNCivjg57jg6vjgqrjgqss44OO44OW44K/44KrDQor44OV44Kr44KqLOODiOOCquODqw0KK+ODhOODoOODqSzjgqvjg4rjgrMNCivjg57jg6bjg58s44OI44K344KoDQor44Ki44Op44Kr44OvLOODn+ODieODqg0KK+OCquODleODgSzjgrjjg6Xjg7MNCivjgrXjgrXjg6Ljg6os44Om44K/44KrDQor44K144OI44KmLOOCouOCreODqQ0KK+OCv+OCq+OCrizjg57jgrPjg4gNCivjgr/jg4rjgqss44Oe44K144Of44OEDQor44OE44Oc44K0LOODleODn+ODkuOCsw0KK+ODiOODquOCteODryzjg5Ljg63jg6bjgq0NCivjg4rjgqvjgrDjgq0s44Kx44Kk44K0DQor44OP44K744Ks44OvLOODiOODouODpuOCrQ0KK+ODj+ODpOOCtyzjgrPjgqbjgrgNCivjg5Ljg6njg6Tjg54s44K344Ky44OrDQor44OV44Kv44K344OeLOODiOOCt+OCrQ0KK+ODnuODhOOCt+ODnizjgqvjgrrjg5Ljg60NCivjg6jjgrfjgqQs44OS44OH44KtDQor44Kk44K344KkLOODjuODquOCsw0KK+OCpOODnuOCpCzjg5/jg6bjgq0NCivjg4rjgqvjg4Tjgrgs44Om44Kt44KoDQor44Ob44Kk44OALOODhOODjeOCqg0KK+OCteODr+ODj+OCvyzjg5/jg4Tjg6sNCivjgr/jg4/jg6ks44K344On44Km44K4DQor44K/44Kr44OP44K3LOODn+ODjeODnuOCtQ0KK+OCueOCuuOCrSzjg5Ljg4fjgqLjgq0NCivjg6jjgrPjg6Tjg54s44Kx44Oz44K4DQor44Kk44K344Kr44OvLOOCseODs+OCuA0KK+OCouOCteODjizjg6jjgrfjgr/jgqsNCivjgqvjg43jgrMs44K344Ol44Km44K4DQor44Kv44Ot44K7LOODqOOCpuOCueOCsQ0KK+OCteOCq+OCreODkOODqSzjgqLjg6njgr8NCivjgqvjgrXjg54s44Kx44Kk44KzDQor44K544Ku44Ok44OeLOODqOOCt+ODnuOCtQ0KK+OCueODgCzjg4bjg4Tjg6QNCivjgr/jg4rjgqss44Ki44OkDQor44OE44Oc44KkLOOCqOODhOOCsw0KK+ODj+OCt+ODouODiCzjg4HjgqjjgrMNCivjg5Xjgq/jg4Es44K144OI44OfDQor44Ki44Op44KkLOODiOODouOCsw0KK+OCv+ODiuOCqyzjgrHjg7PjgrgNCivjg6Tjgrfjg54s44OK44Kq44Om44KtDQor44Kr44Ov44Oe44K/LOOCv+OCseODjuODqg0KK+OCueODs+ODgCzjgqLjg4Tjg6QNCivjg5/jgrrjgr/jg4ss44Of44OO44OrDQor44Ok44Oe44Kz44K3LOODjuODquODpuOCrQ0KK+OCouODnuOCrOODpCzjg6bjg6Hjg44NCivjgqLjg6njgq0s44OS44K144OoDQor44Kk44Oe44KkLOODiOOCt+ODj+ODqw0KK+OCpOODnuOCtuOCrSzjgr/jgqvjg5LjgrUNCivjgq3jg6Djg6ks44Kr44OE44OS44OHDQor44K544Ku44Ok44OeLOOCpOOCteOCqg0KK+OCueOCuuOCrSzjg4DjgqTjgrnjgrENCivjg4Tjg6ss44Of44OO44OrDQor44OP44Kz44K244KtLOOCouOCreODqQ0KK+OCv+OCreOCtuODryzjg4Tjg6jjgrcNCivjgqTjg4jjgqYs44Kr44K644OO44OWDQor44Oe44K544OALOODqOOCt+ODjuODqg0KK+ODhOODkOOCrSzjg4HjgqLjgq0NCivjg5/jgrnjg58s44OB44Kr44KzDQor44Ok44Kk44K/LOODnuOCrQ0KK+OCq+ODr+ODhCzjg5Ljg4jjgrcNCivjg4Tjgqvjg4As44K/44Kx44OS44KzDQor44OK44Kr44Oi44OILOODleODn+OCsw0KK+ODleODiuODk+OCrSzjgrXjg4rjgqgNCivjg6jjgrfjgrbjg68s44Kt44On44Km44KzDQor44OI44Km44OeLOODqOOCpuOCsw0KK+OCu+OCrSzjg57jg6oNCivjg6Djg6njgr8s44OK44Kq44KtDQor44Kr44K/44Ok44OeLOODnuOCteODkuODrQ0KK+OCreODiSzjgrfjg6XjgqbjgrgNCivjgrPjg5Djg6Tjgrcs44Kz44Km44K4DQor44K344OO44Of44OkLOODiOODouOCq+OCug0KK+OCv+ODiuOCqyzjgqvjgrrjg6bjgq0NCivjg4/jg6ks44Oo44K344OO44OqDQor44Oi44Oq44K/44OLLOOCt+ODp+OCpuODmOOCpA0KK+OCpOODgeODjuOCuyzjgqvjgrrjg6bjgq0NCivjg5Xjgrjjg6Ljg4gs44Kr44OE44Om44KtDQor44Km44Ko44OOLOOCs+OCpuOCuA0KK+OCt+OCt+ODiSzjg4jjgrfjg47jg6oNCivjg5/jgqbjg6ks44K544K544OgDQor44Km44OB44OALOODq+ODn+OCsw0KK+ODieOCpCzjgrPjgqbjgqTjg4ENCivjgr3jgrnjg58s44OI44K344Om44KtDQor44Oo44K344OALOODnuOCteODpuOCrQ0KK+OCv+OCq+ODj+OCtyzjg4jjgrfjgqoNCivjg6Tjg57jgrDjg4Es44OK44Ko44KzDQor44K144K1LOODpuOCreOCsw0KK+ODj+OCu+OCrOODryzjgqvjgqrjg6oNCivjgqLjg4Tjgr8s44Oo44K344KqDQor44Kk44OB44Kr44OvLOODnuOCteOCouOCrQ0KK+OCpuODjizjgrXjg4jjg58NCivjgqrjgqzjg68s44Om44Kt44KzDQor44Kq44OALOODkuODreOCq+OCug0KK+OCv+OCq+OCteOCrSzjg57jgq3jgrMNCivjgr/jgqvjg4/jgrcs44OE44Oo44K3DQor44K/44OALOOCv+ODgOOCtw0KK+OCv+ODiuOCqyzjg5Ljg63jgrcNCivjg4jjgq/jg4rjgqws44OS44Ot44K3DQor44OI44Of44K/LOOCuOODpeODs+OCsw0KK+ODiuOCpOODiOOCpizjg6rjgqgNCivjg4/jg6njg4As44Ko44Of44KzDQor44OS44Op44Kr44OvLOODiOODouOCsw0KK+ODleODiuODouODiCzjg5Ljg63jgr/jgqsNCivjg4njg5Djgrcs44Om44KtDQor44Of44Km44OpLOODgeOCsw0KK+ODqOOCt+ODgCzjg5Ljg63jgqLjgq0NCivjgqrjgqrjgr/jgrEs44K444Ol44Oz44K4DQor44Kv44Op44K/LOODpOOCueODkuODrQ0KK+OCr+ODquOCvyzjgrXjg4jjgrcNCivjg4Djg7Ms44Oe44Kz44OIDQor44Oi44Oq44K344OeLOOCt+ODs+OCuA0KK+ODqOOCt+ODgCzjg6jjgqbjgrgNCivjg6/jgqvjg5Djg6Tjgrcs44Om44Of44KzDQor44Ki44Ky44Oe44OELOODkuODreODn+ODgQ0KK+OCpOOCt+OCsOODrSzjgrPjgrnjgrENCivjgqvjg4jjgqYs44Kr44K644OS44OtDQor44K144Kk44OI44KmLOOCt+ODs+OCpOODgQ0KK+ODiuOCpOODiOOCpizjg5/jg4Hjg6gNCivjg5/jg6Tjg57jgqgs44OI44K344OkDQor44Kr44OJ44Ov44KtLOOCouODhOOCtw0KK+ODleOCr+ODouODiCzjg5/jgq3jgqoNCivjg4vjgrfjg4/jg6ks44Ki44Kt44OpDQor44Kq44Kr44Ok44OeLOOCq+OCuuODiuODqg0KK+OCquOCq+ODpOOCuSzjg5/jgqjjgrMNCivjgq/jg63jgqvjg68s44OI44Kq44OrDQor44Kq44Kt44K/LOODqOOCt+ODkuOCtQ0KK+OCquOCr+ODn+ODpCzjg57jgrXjgqvjgroNCivjgqrjgq/jg6Djg6ks44OA44KkDQor44Kq44OO44OALOODiuODq+ODnw0KK+OCquODjuODh+ODqSzjg5Ljg4jjgrcNCivjgqrjg44s44OP44Or44Om44KtDQor44Kq44OOLOODiuOCquODleODnw0KK+OCquODjizjg6jjgrfjg5Xjg58NCivjg57jg4TjgqQs44OG44Or44KqDQor44Kq44K944Ko44Ks44OvLOODpOOCueODiuODqg0KK+OCquOCtuOCrSzjg47jg5bjg6bjgq0NCivjgqrjgrzjgq0s44OS44Ot44Om44KtDQor44K/44Kr44OOLOOCpOOCteOCqg0KK+ODquODp+OCpuOCq+OCpCzjg6jjgrfjgq0NCivjgrXjgrLjgrXjgqss44Oq44Ol44Km44Kk44OBDQor44K144Ku44OkLOOCreODp+OCpuOCpOODgQ0KK+OCteOCpOOCvyzjg57jgrXjg5Ljg60NCivjgrXjgqTjg4jjgqYs44Ki44Kt44Of44OEDQor44K144Kk44OI44KmLOOCtOODreOCpg0KK+OCteOCpOODiOOCpizjg5Ljg63jg6bjgq0NCivjgrXjgqTjg4jjgqYs44OE44ON44KqDQor44K144Kk44OI44KmLOODquOCqw0KK+OCteOCq+OCsOODgSzjg5Ljg4fjgqLjgq0NCivjgrXjgqvjgqQs44OS44Ot44OfDQor44K344Oe44OALOODkuODreOCtw0KK+OCteOCq+OCreODkOODqSzjgqTjg4Tjg63jgqYNCivjgrXjgqvjg6Ljg4gs44Kx44Oz44K4DQor44K144Kr44Oi44OILOODnuOCteOCrQ0KK+OCteOCq+ODouODiCzjg6Djg43jg5Ljg60NCivjgrXjgqvjg6os44OO44OW44OS44OtDQor44K144Kr44K/LOOCteODiOODqw0KK+OCteOCr+ODnizjgrfjg7PjgrgNCivjgrXjgq/jg6njgqQs44K/44Kr44OO44OWDQor44K144Kv44Op44KkLOOCv+OCq+OCtw0KK+OCteOCr+ODqeOCpCzjg6jjgrfjg5Ljg60NCivjgrXjg7Pjg47jgqbjg57jg6ss44Om44Kt44KqDQor44K144OOLOODpuOCv+OCqw0KK+OCteOCteODmSzjgr/jg4Tjg63jgqYNCivjgrXjgrXjgq0s44K344Oz44K0DQor44K144K144KtLOODiOODouODkuODrQ0KK+OCteOCteOCrSzjgr/jgrHjgrcNCivjgrXjgrXjgq0s44OK44Kq44OIDQor44Oo44K344OALOODkuODreOCtw0KK+OCteODiOOCpizjg6jjgrfjg5LjgrMNCivjgrXjg4jjgqYs44Kr44K644OO44OqDQor44K144OI44KmLOOCv+OCq+ODjuODqg0KK+OCteODiOOCpizjg4/jg6Tjg4gNCivjgrXjg4jjgqYs44Ok44K544OS44KzDQor44K144OI44KmLOODqOOCt+ODpuOCrQ0KK+OCteODiOOCpizjg6jjgrfjg4gNCivjgrXjg4jjgqYs44Ki44Kt44KqDQor44K144OI44KmLOODnuOCteOCsw0KK+OCteODiOOCpizjg4jjg6LjgrMNCivjgrXjg4jjgqYs44Om44Km44Kk44OBDQor44K144OI44KmLOODgeOCouOCrQ0KK+OCteODiOOCpizjgqvjgrrjg6QNCivjgrXjg4jjgqYs44Oe44K144OfDQor44K144OI44KmLOOCteODiOOCtw0KK+OCteODr+OCpOODhyzjg6bjgqbjgqTjg4ENCivjgrXjg6/jgqQs44Kz44Km44Kk44OB44Ot44KmDQor44K144Ok44OK44KuLOODnuODqg0KK+OCu+OCrOODryzjg6jjgrfjg5Ljg60NCivjgrvjgqTjg5/jg6Qs44OS44Ot44K3DQor44K744Kk44Ok44OeLOOCt+OCsuOCrQ0KK+OCu+OCreOCq+ODryzjgqLjgq3jg6kNCivjgrvjgq0s44Kz44Km44K4DQor44K744KtLOOCv+OCseOCtw0KK+OCu+ODs+ODgCzjg5Ljg63jgr/jgqsNCivjgrvjg7PjgrTjgq8s44Kt44On44Km44KzDQor44K744OOLOODiOOCt+OCouOCrQ0KK+OCu+OCt+ODoizjgrPjgqbjgrgNCivjgrvjgr/jgqss44Kx44KkDQor44K544KsLOODquODp+OCpuOCpOODgQ0KK+ODn+ODiuODnyzjg6TjgrnjgrcNCivjgrfjg5Djgr8s44OB44Ki44KtDQor44K344OW44OkLOODkuODreODn+ODgQ0KK+OCt+ODluODpCzjg4Tjg6jjgrcNCivjgrfjg5bjg6Qs44Oe44K144OO44OqDQor44K344Kk44OOLOODkuODreOCsw0KK+OCt+OCq+OCvyzjgr/jgqvjg5Ljg60NCivjgrfjgq3jg5Ys44OS44Ot44K3DQor44K344Oe44OALOODnuOCteODkuODrQ0KK+OCt+ODnuODgCzjg5Ljg63jgrcNCivjgrfjg57jgqzjg58s44OI44K344Ki44KtDQor44K344Oe44Oi44OqLOODnuOCteODkuOCsw0KK+OCt+ODnuODoOODqSzjg6bjgq3jg47jg6oNCivjgrfjg57jgrbjgq0s44Kz44KmDQor44K344Oe44K244KtLOOCv+OCq+OCouOCrQ0KK+OCt+ODn+OCuizjgqjjgqTjgr7jgqYNCivjgrfjg5/jgros44Oq44KoDQor44K344Of44K6LOODkuODreOCtw0KK+OCt+ODouODgCzjgrHjgqTjg5/jg7MNCivjgrfjg6Ljg5Ljg6ks44Kz44Km44K/44Ot44KmDQor44K344OO44OP44OpLOOCouOCreODkuODrQ0KK+OCt+ODjuODj+ODqSzjg57jg4rjg5YNCivjgrfjg47jgrbjgq0s44OO44OW44KzDQor44K344OO44K244KtLOODkuODreOCrQ0KK+OCt+ODs+ODnSzjgqvjgrnjg58NCivjgrfjg7Pjgr/jg4ss44Om44Km44K4DQor44Kq44Kq44Kt44OJLOOCveODiOODkuODrQ0KK+OCt+OCquODjOODnizjgq3jg6jjg58NCivjgrfjgqrjgr8s44Kv44OL44Ki44KtDQor44K344Kq44OkLOODnuOCteODkuODrQ0KK+OCt+OCquOCtuODryzjgqTjgrXjgqoNCivjgrfjg6njgqQs44K344Ky44KtDQor44K344Op44K144KtLOODkuODreOCtw0KK+OCt+ODqeODiOODqizjg57jgrXjg4jjgrcNCivjgrfjg6njg4jjg6os44K/44Kr44OS44OtDQor44K344Ot44KtLOODkuODiOOCtw0KK+OCt+ODreOCt+OCvyzjgrfjgrLjgq0NCivjgqvjgrfjg54s44Oo44K344KqDQor44K344Ol44KmLOOCtOOCpOODgQ0KK+OCpOODnuOCpCzjg5Ljg4fjg4/jg6sNCivjgr3jgqjjg4As44OS44Ot44KzDQor44K944KsLOOCpOOCuuODqw0KK+OCveODryzjgqvjgrrjg4rjg6oNCivjgrnjg4As44Kz44Km44Kk44OBDQor44K544OALOODnuOCteODqw0KK+OCueODgCzjg4rjgqrjgq0NCivjgrnjgqjjg4As44OO44Oq44Oo44K3DQor44K544Ko44Oi44OqLOOCteOCreOCsw0KK+OCueOCqOOCquOCqyzjgrfjg6fjgqbjgqTjg4ENCivjgrnjgqzjg6/jg6ks44K344Oz44K4DQor44K544Ky44OOLOODpOOCueODkuODrQ0KK+OCueOCruODouODiCzjg6TjgrnjgqoNCivjgrnjgq7jgr8s44Om44Km44Kk44OB44OtDQor44K544Ku44Ok44OeLOODn+ODhOOCqg0KK+OCueOCruODpOODnizjgrHjgqTjgqTjg4Hjg63jgqYNCivjgrnjgq7jg6Tjg54s44Ko44Kk44K4DQor44K544Of44OI44OiLOODjuODnOODqw0KK+OCueODnyzjg6bjgq0NCivjgrnjg4rjgqws44OS44OH44Om44KtDQor44K544K244KtLOODhuODhOODpA0KK+OCueOCuuOCrSzjg4bjg6vjg58NCivjgrnjgrrjgq0s44Ki44Kt44OpDQor44K544K644KtLOODpOOCueOCtw0KK+OCueOCuuOCrSzjg6bjgq3jgqoNCivjgrnjgrrjgq0s44K344OO44OWDQor44K544K644KtLOOCt+ODs+OCpOODgQ0KK+OCueOCuuOCrSzjg4jjgrfjg6QNCivjgrnjgrrjgq0s44OS44Ot44K3DQor44K544K644KtLOOCq+OCuuOCouOCrQ0KK+OCueOCuuOCrSzjgrHjgqTjgrgNCivjgqrjgqrjg4vjgrcs44Oe44K144OP44OrDQor44K544K644KtLOODjuODluOCqg0KK+OCueOCuuOCrSzjg47jg6rjg6bjgq0NCivjgrnjgrrjgq0s44Oq44On44Km44K544KxDQor44K/44OcLOOCt+ODsw0KK+OCv+ODluODgSzjgr/jg4Tjg6QNCivjgr/jg5bjgrUs44OI44K344OV44OfDQor44K/44OB44Kr44OvLOODpOOCueODpuOCrQ0KK+ODkuODqeOCrSzjg6bjgqbjgqTjg4ENCivjgr/jgqzjgqQs44Ok44K544K3DQor44K/44Ks44OvLOODn+ODmw0KK+OCv+OCrCzjg47jg5bjgr/jgqsNCivjgr/jgrDjg4Es44Of44K144KqDQor44K/44Kw44OBLOOCt+ODsw0KK+OCv+OCsOODgSzjg5/jg4rjgrMNCivjgr/jgqvjg5Djgr/jgrEs44Oo44Km44Kk44OBDQor44K/44Kr44KuLOOCseODs+OCv+ODreOCpg0KK+OCv+OCq+ODj+ODqSzjg4jjgrfjg6QNCivjgr/jgqvjg4/jgrcs44OI44K344Om44KtDQor44K/44Kr44OP44K3LOODkuODreOCtw0KK+OCv+OCq+ODj+OCtyzjgrvjgqTjgqTjg4ENCivjgr/jgqvjg4/jgrcs44Oo44K344OS44K1DQor44K/44Kr44OP44K3LOODj+ODq+OCteODgA0KK+OCv+OCq+ODj+OCtyzjg57jgrXjgrMNCivjgr/jgqvjg4/jgrcs44Oe44K144Om44KtDQor44K/44Kr44OP44K3LOODkuODh+OCqg0KK+OCv+OCq+ODj+OCtyzjgqvjgrrjgrfjgrINCivjgr/jgqvjg4/jgrcs44OO44Oq44OS44KzDQor44K/44Kr44OP44K3LOODiOODqOODnw0KK+OCv+OCq+ODj+OCtyzjg5/jg47jg6sNCivjgr/jgqvjgqTjgrcs44OI44Oi44Ki44KtDQor44Kz44OQ44Ok44K3LOOCq+OCuuODkuODrQ0KK+OCv+OCq+ODnyzjg5/jg47jg6sNCivjgr/jgqvjg6Djg6ks44K344Ot44KmDQor44K/44Kr44OK44K3LOODqOOCt+ODjuODqg0KK+ODj+OCu+OCrOODryzjg5Ljg63jg6bjgq0NCivjgr/jgqvjg44s44Kt44On44Km44KzDQor44K/44Kr44Kq44KrLOOCv+OCq+OCrQ0KK+OCv+OCq+OCquOCqyzjg47jg5bjg6bjgq0NCivjgr/jgqvjgr/jg4ss44Ki44Kt44OpDQor44K/44Kr44OE44K4LOOCq+ODhOOCuA0KK+OCv+OCq+ODhOOCqyzjgq3jg6jjgrcNCivjgr/jgqvjg4Qs44Oe44K144OfDQor44K/44Kr44Ok44OeLOOCt+ODs+OCpOODgQ0KK+OCv+OCq+ODpOODnizjg4jjgqrjg6sNCivjgr/jgqvjg6Tjg54s44Ok44K544K3DQor44K/44Kx44OALOOCs+OCpuOCpOODgQ0KK+OCv+OCseODgCzjg6Tjgrnjg47jg6oNCivjgr/jgrHjg4As44K/44Kr44Kr44K6DQor44K/44Kx44OALOODiuOCquODkuODiA0KK+OCv+OCseODouODiCzjg47jgr7jg58NCivjgr/jgrHjg6Ljg4gs44Kr44OE44K3DQor44K/44Kx44Km44OBLOOCv+OCq+OCsw0KK+OCv+OCseOCpuODgSzjg5Ljg63jgqvjgroNCivjgr/jgrHjgqbjg4Es44Om44Km44Kk44OBDQor44K/44Kx44Km44OBLOODiOOCquODqw0KK+OCv+OCreODouODiCzjgr/jgqvjg5Ljg60NCivjgr/jg57jg4Es44OS44Ot44K3DQor44K/44Og44OpLOODiOOCt+ODkuODrQ0KK+OCv+ODiuODmSzjg4TjgqvjgrUNCivjgr/jg4rjgqss44Kx44Kk44KzDQor44K/44OK44KrLOODiuOCruOCtQ0KK+OCv+ODiuOCqyzjgr/jgqvjg6bjgq0NCivjgr/jg4rjgqss44Oe44KtDQor44K/44OK44KrLOODkuODreODleODnw0KK+OCv+ODiuOCqyzjgq/jg4vjg5LjgrMNCivjgr/jg4rjgqss44Kr44Kq44OqDQor44K/44Oz44OALOODn+OCreOCsw0KK+OCv+ODi+ODgCzjgq3jg5/jg5sNCivjgr/jg4vjgqzjg68s44Oo44K344K/44KrDQor44K/44OL44Og44OpLOODqOOCt+ODiuODqg0KK+OCv+ODiyzjg5Ljg63jg5bjg58NCivjgr/jgrfjg60s44Om44Kt44KqDQor44OS44Op44K144KrLOODjuODluODpuOCrQ0KK+OCv+ODr+ODgCzjgqjjgqTjgqjjg4QNCivjgr/jg6/jg6ks44K344Oz44K4DQor44OG44Op44OALOODiOODqOODkuOCtQ0KK+ODhuODqeOCteOCrSzjg5Ljg63jg6bjgq0NCivjg4bjg6njgrfjg54s44OS44OH44KzDQor44Kz44OQ44Ok44K3LOOCv+OCpOOCvuOCpg0KK+ODhuODqeOCpuODgSzjg6Tjgrnjg5/jg4QNCivjg6/jgr/jg4rjg5ks44K344Oz44Kk44OBDQor44OI44Kt44OI44OiLOODnuOCteODjuODqg0KK+ODiOOCr+ODgCzjgr/jgqvjg6bjgq0NCivjgrXjgq/jg6njgq4s44OO44Oq44OS44K1DQor44OI44Of44Oi44OILOODnuOCteODkuOCsw0KK+ODiOODn+OCvyzjg5Ljg4fjgqoNCivjg4jjg6Ljg58s44OS44Ot44Of44OEDQor44OI44Oz44Kw44KmLOODnuOCteOCtw0KK+ODiOODquOCpuODnyzjg5Ljg63jgrnjgrENCivjg4jjg6jjg4As44Kr44OE44OS44K1DQor44OI44Oo44K144OILOODkuODreOCtw0KK+ODiOODqOOCt+ODnizjg4bjg4Tjg6QNCivjg4Tjg4Hjg4As44K444Ol44OzDQor44OE44OB44Oi44OILOODnuOCs+ODiA0KK+ODhOODgeODpCzjg6HjgrDjg58NCivjg4Tjg4As44K/44OE44Ot44KmDQor44OE44OALOODpuOCqw0KK+ODhOOCuOODouODiCzjg6bjgq3jgqoNCivjg4Tjgrgs44OO44Oq44KqDQor44OE44K4LOODkuODreOCtw0KK+ODhOOCq+OCtOOCtyzjg4jjgrfjgqvjgroNCivjg4Tjgqvjg6Ljg4gs44Kx44Kk44K4DQor44OE44Kt44OA44OGLOODkuODreOCtw0KK+ODouODquOCvyzjgrPjgqbjgr7jgqYNCivjg4Tjg6vjgr8s44K344OO44OWDQor44OE44K344OeLOODiOODouOCouOCrQ0KK+ODhOOCtyzjg4jjgrfjg5LjgrMNCivjg4Tjg4Tjg58s44K544Of44OIDQor44OE44Ok44OeLOODpOOCueOCrQ0KK+OCpuODgeODgCzjg6bjgq3jgqoNCivjgqbjg4Hjg4As44Oo44Km44KzDQor44Km44OB44Ok44OeLOOCv+OCseOCtw0KK+OCpuODgCzjg6bjgqvjg6oNCivjgqbjgqjjg4As44K144Kq44OqDQor44Km44Ko44OALOODkuODreOCtw0KK+ODhOOCq+ODouODiCzjg4Hjgqjjg58NCivjgqbjgqjjg4As44OS44OH44KqDQor44Kt44Kt44On44KmLOODqOOCt+OCv+OCqw0KK+OCpuOCqOODgCzjgqTjgq/jgqgNCivjgqbjgqjjgrDjg6os44OI44Kq44OrDQor44Km44Ko44OP44OpLOODkuODreODpuOCrQ0KK+OCpuOCqOODnuODhCzjgqvjg4Tjg6QNCivjgrXjg4jjgqYs44Kr44K644OS44KzDQor44Km44Ko44OOLOODkuODh+OCv+OCqw0KK+OCpuOCqOODjizjg6jjgrfjgrMNCivjgqbjgqjjg44s44OS44Ot44Om44KtDQor44Km44Ko44OOLOOCt+OCsuOCrQ0KK+OCpuOCqOODjizjg5Ljg4fjgq0NCivjgqbjgqjjg6Tjg54s44OS44Ot44OO44OqDQor44Km44Oh44OALOOCq+ODiuOCpg0KK+OCpuODoeOCq+ODryzjgqvjg6gNCivjg4rjgqzjgr8s44OO44Oq44KzDQor44Km44Op44K0LOODiOODqOODkuODrQ0KK+OCpuODq+OCt+OCtuOCqyzjg6bjgq3jgqoNCivjgr/jgqvjg4/jgrcs44K344On44Km44Kk44OBDQor44Km44OE44OO44Of44OkLOOCt+ODs+ODmuOCpA0KK+ODr+ODgCzjgqvjgrrjg5Ljg60NCivjg6/jg4As44Of44Kt44KoDQor44Ov44OALOOCt+OCuuOCqg0KK+ODr+OCq+ODkOODpOOCtyzjg6bjg5/jgrMNCivjg6/jgqvjg5Djg6Tjgrcs44Kr44K644OS44KzDQor44Ov44Kr44Oe44OELOOCq+OCuuOCrQ0KK+ODr+OCq+ODnuODhCzjgrPjgqbjgrgNCivjg6/jgq3jg6Ljg4gs44OK44Oq44OIDQor44Ov44Kv44KkLOOCt+ODpeOCpuOCuA0KK+OCpOODiOOCpCzjg6jjgrfjg5LjgrUNCivjg6/jgr/jg5ks44Kr44OE44OkDQor44Ov44K/44OZLOODiuOCquOCv+OCqw0KK+ODr+OCv+ODiuODmSzjgrfjg6Xjg7PjgqTjg4ENCivjg6/jgr/jg4rjg5ks44OS44Ot44K3DQor44Ov44K/44OK44OZLOOCv+ODgOOCtw0KK+ODr+OCv+ODiuODmSzjgqjjgqTjgqTjg4ENCivjg6/jgr/jg4rjg5ks44OS44OH44OI44K3DQor44Ov44K/44OK44OZLOODkuODreODpuOCrQ0KK+ODr+OCv+ODiuODmSzjg5Ljg63jg6bjgq0NCivjg6/jgr/jg4zjgq0s44Oe44K144OrDQor44Ok44OW44K344K/LOODn+ODieODqg0KK+ODpOODluOCvyzjg5/jg4Tjg6jjgrcNCivjg6Tjg5bjgqbjg4Es44K344On44Km44OY44KkDQor44Ok44K444OeLOODqOOCpuOCsw0KK+ODpOOCr+OCt+OCuCzjg5Xjg5/jg5Ljg60NCivjg6Tjg57jg4As44Om44Kt44KzDQor44Ok44Oe44OALOODkuODreOCqA0KK+ODpOODnuODgCzjg5LjgrUNCivjg6Tjg57jg4As44Ki44Kt44OO44OWDQor44Ok44Oe44OALOOCouOCreOCqg0KK+ODpOODnuODgCzjgqjjgqTjgrnjgrENCivjg6Tjg57jgqzjg58s44OS44Ot44OV44OfDQor44Ok44Oe44Kw44OBLOOCuOODreOCpg0KK+ODpOODnuOCsOODgSzjgrPjgqbjgrgNCivjg6Tjg57jgqvjg68s44K344OzDQor44Ok44Oe44Kz44K3LOOCv+OCq+OCtw0KK+ODpOODnuODouODiCzjgqLjgq3jg5Ljg60NCivjg6Tjg57jg6Ljg4gs44Kx44KkDQor44Ok44Oe44Oi44OILOODnuOCteODn+ODgQ0KK+ODpOODnuODouODiCzjg5Ljg63jg6bjgq0NCivjg6Tjg57jg6Ljg4gs44Ko44Kk44K4DQor44Ok44Oe44Oi44OILOODkuODreODleODnw0KK+ODpOODnuODouODiCzjg57jgrXjg47jg6oNCivjg6Tjg57jg6Ljg4gs44Oe44K144OI44K3DQor44Kr44Ov44Kw44OBLOOCouOCreODqQ0KK+ODpOODnuODoOODrSzjg5Ljg63jg5/jg4ENCivjgqTjg6/jgr8s44K/44Kx44K3DQor44Ok44Oe44Kq44KrLOOCq+OCuuODkuODrQ0KK+ODpOODnuOCteOCrSzjg5Ljg4fjgq/jg4sNCivjg6Tjg57jgrfjgr8s44OS44Ot44K3DQor44Ok44Oe44K344K/LOODhOODiOODoA0KK+ODpOODnuOCt+OCvyzjg4jjgrfjgqLjgq0NCivjg6Tjg57jgrfjgr8s44Ki44Kt44KzDQor44Ok44Oe44K344K/LOODkuODreODpuOCrQ0KK+ODpOODnuOCt+OCvyzjgqvjgrrjg5Ljg4cNCivjg6Tjg57jgrfjgr8s44Kr44OE44Om44KtDQor44Ok44Oe44K344K/LOOCouOCreODqQ0KK+ODpOODnuOCtuOCrSzjg5Ljg63jg6bjgq0NCivjg6Tjg57jgrbjgq0s44Kr44Kq44OrDQor44Ok44Oe44K244KtLOOCs+OCpuOCuA0KK+ODpOODiuOCrOODryzjg57jgrXjg5Ljg60NCivjgr/jgqvjgqrjgqss44OS44Kr44OrDQor44Ok44OK44K7LOODquODp+OCpuOCpOODgQ0KK+ODpOODjizjg4jjg6Ljg6bjgq0NCivjg6Tjgqos44Ko44Oq44KzDQor44Ok44K544OALOODiOOCt+ODleODnw0KK+ODpOOCueOCq+ODryzjg5Ljg4jjg58NCivjg6jjgqzjgqQs44Kz44Km44Kk44OBDQor44Oo44Kz44Ks44OvLOOCu+OCpOOCuA0KK+ODqOOCs+OCteODryzjg57jgrXjg6bjgq0NCivjg6jjgrPjgr8s44Of44OK44KzDQor44Oo44Kz44K/LOODpOOCueOCtw0KK+ODqOOCs+OCpuODgSzjg4Tjg4jjg6ANCivjg4rjgqvjg6Tjg54s44Ki44OE44K3DQor44Oo44Kz44Ok44OeLOODj+ODq+ODkuOCsw0KK+ODqOOCs+ODpOODnizjg57jgrXjgqoNCivjg6jjg43jg4/jg6ks44OI44K344Om44KtDQor44Oo44ON44Og44OpLOOCv+ODgOOCtw0KK+ODqOOCt+ODgCzjg57jgrXjg4jjgrcNCivjg5/jg6Tjg6Djg6ks44OE44OI44OgDQor44Oo44K344OALOOCreODn+OCouOCrQ0KK+ODqOOCt+ODgCzjg57jgrXjgqvjg4QNCivjg4rjgqss44Oo44K344OS44OtDQor44Oo44K344Og44OpLOODqOOCpuOCpOODgQ0KK+ODqOOCt+ODoOODqSzjg5Ljg63jg58NCivjg4zjg57jgqos44Of44ON44KqDQor44Oo44K344K244KtLOOCqOOCpOOCuA0KK+ODiuOCq+ODoOODqSzjgrHjg7PjgrgNCivjg6bjgqLjgrUs44Oq44On44Km44K/DQor44Om44KyLOOCv+OCq+ODkuODrQ0KK+ODpuOCq+ODryzjg6jjgrfjgr/jgqsNCivjg57jg4Tjg4As44Oo44K344OE44KwDQor44Ki44OZLOODpOOCueODkuODrQ0KK+ODj+OCu+OCrOODryzjgqvjg4Tjg57jgrUNCivjg4/jgrfjg6Ljg4gs44OS44OI44K3DQor44OS44Op44OE44KrLOOCv+ODouODhA0KK+ODm+OCt+OCq+ODryzjg5/jg47jg6sNCivjg5vjgr3jg6Qs44K344On44Km44K4DQor44Kk44K344OP44OpLOOCv+OCq+OCtw0KK+OCpOODr+OCrSzjgr/jg4Hjg4/jg6sNCivjgqvjg43jg4As44Kz44Km44K4DQor44Kt44Og44OpLOOCv+OCseOCtw0KK+OCs+ODs+ODjizjg57jgrPjg4gNCivjg57jg4Tjg4As44Oo44K344OS44K1DQor44Of44Ok44K344K/LOOCt+OCsuODiOODog0KK+OCteOCq+ODouODiCzjg57jg6oNCivjg47jg6Djg6ks44K344Oz44Kk44OBDQor44Kq44Kq44OQ44Ok44K3LOOCqOODhOOCsw0KK+OCteOCpOODiOOCpizjg6bjgq3jgqgNCivjgrXjgrXjgqzjg68s44Om44Km44KzDQor44K144OI44KmLOODpOODqOOCpA0KK+OCt+OCrCzjg57jgrXjg5/jg4QNCivjgrfjg47jg4/jg6ks44Oe44K144K3DQor44K344On44KmLOODoeOCsOODnw0KK+OCv+OCseOCrOODryzjg5/jgqjjgrMNCivjgr/jg4Tjg58s44Om44K/44KrDQor44OI44Of44KoLOODjuODquODkuOCsw0KK+ODr+OCv+ODiuODmSzjg57jg6Ljg6sNCivjg6Tjg57jg4As44Om44Km44Kk44OBDQor44Ok44Oe44OALOODiOODn+ODkuODrQ0KK+ODpOODnuODouODiCzjgr/jgrHjgrcNCivjg6Tjg57jgrbjgq0s44Oe44K144KqDQor44Kz44Oe44OE44K244KtLOODgeOCouOCrQ0KK+ODleODgeODgCzjg57jgrXjg5LjgrMNCivjgr/jg4rjgqss44Kr44K644Om44KtDQor44OP44Ok44K3LOOCteODm+ODqg0KK+ODiuOCrOOCvyzjgrvjgqTjgqTjg4ENCivjg5Djg5As44Oe44Kz44OIDQor44Ki44Kr44OeLOOCv+OCq+OCtw0KK+OCq+OCtuODnizjgqvjgrrjgrfjgrINCivjg6Ljg6os44OS44Ot44Ki44KtDQor44Kk44Kx44OALOODhOODqOOCtw0KK+ODr+OCv+ODiuODmSzjgqvjg4Tjg4gNCivjg5/jg54s44OV44Of44KqDQor44Ki44Oz44OJ44KmLOODiOODouODkuODrQ0KK+ODnuOCqOOCvuODjizjg5/jg4Tjg5Ljg60NCivjgqrjgr/jgqss44Kz44Km44Kk44OBDQor44OP44Ok44K3LOODnuOCteODkuODrQ0KK+OCpuOCqOODjizjgqvjgrrjgr/jgqsNCivjg4Tjg47jg4As44Kx44Kk44Kk44OBDQor44K544OJ44KmLOOCv+OCq+ODiOOCtw0KK+OCteOCq+ODouODiCzjg5/jg4TjgqLjgq0NCivjgr/jg4rjgqss44Oi44Oq44K344KyDQor44Kz44OI44Km44OALOODpuOCreODjuODqg0KK+OCq+ODq+ODmSzjg5Xjg5/jg5Ljg60NCivjgrXjgqTjg4jjgqYs44OG44Or44Oo44K3DQor44OS44Op44OOLOODkuODreOCsw0KK+OCteODiOOCpizjg5Ljg63jg57jgrUNCivjg4rjgqvjg6Tjg54s44Kx44Oz44Kk44OBDQor44OO44OALOODpuODquOCsw0KK+ODnizjg6Tjgrnjg5Ljg60NCivjgrfjg4rjgqzjg68s44OB44Kr44OpDQor44OK44Ks44Ok44K5LOOCs+OCpuOCuA0KK+OCouOCquOCrSzjgrPjgqbjgrgNCivjg4rjgqvjgr8s44OP44Ok44OIDQor44Of44Kv44Oq44OkLOODhuODq+ODpuOCrQ0KK+ODnuODq+ODpOODnizjg5Ljg4fjg4jjgrcNCivjgqjjg4Hjgrzjg7Ms44OS44K144K3DQor44OK44Kr44OL44K3LOOCt+ODp+OCpuOCpOODgQ0KK+ODj+OCruOCqizjg4jjg6Ljg5LjgrMNCivjgr/jg6Djg6ks44Oe44K144Ki44KtDQor44K/44Kw44OBLOODqOOCt+ODiOOCtw0KK+OCquOCtuODryzjgqrjgrXjg6ANCivjg6TjgqrjgqTjgr8s44OI44K344OS44OtDQor44Ki44K144OOLOODjuODquODpOOCuQ0KK+OCr+OCteODjizjg4bjg6vjg5Ljg60NCivjg4/jg57jg4As44Oe44K144K4DQor44Kk44Oq44Ok44OeLOODj+ODiuOCsw0KK+ODoOODqeOCvyzjg4rjgqrjg6QNCivjgqLjgrXjg44s44Oo44Km44K4DQor44K/44Kr44OOLOOCseODs+OCpOODgQ0KK+ODpOODnuOCsOODgSzjgqLjgq3jg4jjgrcNCivjg6Djg6njgqvjg58s44OO44Oq44OS44OtDQor44K/44OK44KrLOOCq+ODhOOCuA0KK+OCv+OCq+OCquOCqyzjgrjjg6Xjg7PjgqTjg4ENCivjgrnjgrrjgq0s44Of44K144ObDQor44Of44ON44Ku44K3LOODiuOCquODpA0KK+OCouODmSzjg47jg6rjgqLjgq0NCivjgqLjg5ks44Of44K644ObDQor44Ki44OZLOOCt+ODpeODs+OCuA0KK+OCouODmSzjg5Ljg4fjgq0NCivjgqLjgqzjg4Tjg54s44Ki44Kt44OpDQor44Ki44Kk44K244OvLOOCv+OCq+OCtw0KK+OCouOCq+OCpOOCsSzjgrjjg6Xjg7PjgrMNCivjgqLjgq3jg6Ljg4gs44Oo44K344OO44OWDQor44Ki44Kt44K/44OkLOODpuOCreOCqg0KK+OCouOCreODpOODnizjg4jjgrfjg6bjgq0NCivjgqLjgq/jg4Qs44K344Ky44KtDQor44Ki44Oe44OOLOOCv+ODgOOCq+ODhA0KK+OCouODnuODjizjgqLjg4Tjg47jg6oNCivjgqLjg57jg44s44OV44Of44KoDQor44Ki44Oh44Of44OkLOOCq+OCuuODnw0KK+OCouODs+ODieOCpizjg57jgrXjg5Ljg60NCivjgqLjg7Pjg4njgqYs44OG44Oz44K744KkDQor44Ki44Oz44K244KkLOODpuOCpuOCuA0KK+OCouOCquOCrSzjg6rjg4TjgrMNCivjgqLjgqrjgq0s44K/44Kr44Om44KtDQor44Ki44Kq44KtLOOCteODgOODj+ODqw0KK+OCouODqeOCpCzjg4/jg6vjg5Ljg4gNCivjgqLjg6njgq0s44Oo44Km44Kk44OBDQor44Ki44Op44KtLOOCt+OCsuODn+ODhA0KK+OCouODqeODpCzjg6jjgrfjgr/jgqsNCivjgqLjg6rjg6jjgrcs44OI44Oi44OO44OWDQor44Ki44K144OS44OKLOODqOOCpuOCpOODgQ0KK+OCouOCteOCpCzjg4rjg6rjg4gNCivjgqLjgrXjg58s44OS44Ot44Om44KtDQor44Ki44K144OE44KxLOOCq+OCuuODpuOCrQ0KK+OCouOCvSzjgq/jg4vjgqvjgroNCivjgqLjgrrjg54s44Oe44Kz44OIDQor44Ki44K644OeLOOCteODiOOCsw0KK+ODkOODkCzjgrnjg5/jgrMNCivjg5Djg5As44OI44Oi44KzDQor44Kr44KsLOODqOOCt+OCrQ0KK+ODkOODkCzjg6bjgqbjgrnjgrENCivjg5Djg7Ms44Om44KrDQor44OT44Or44Kr44OvLOODrOOCpOOCsw0KK+ODnOOCpizjg5Xjgq/jgqoNCivjg4DjgqTjgrQs44K344Ol44Oz44K544KxDQor44OA44Kk44K044KvLOOCuOODpeODs+OCpOODgQ0KK+ODieODkOOCtyzjg4jjgqrjg6sNCivjgqjjg5PjgrXjg68s44OS44Ot44K3DQor44Ko44OP44OpLOODkuODreODiOOCtw0KK+ODleODgeOCrOODnyzjg6rjg6Xjgqbjgr/jg63jgqYNCivjg5Xjgrjjg5Djg6Tjgrcs44OS44Ot44K3DQor44OV44K444Ko44OALOODquODp+OCpuOCpOODgQ0KK+ODleOCuOOCpCzjgrvjgqTjgrQNCivjg5XjgrjjgqQs44K344Oz44K4DQor44OV44K444KkLOODqOOCt+ODjuODqg0KK+ODleOCuOOCpCzjg57jgrXjg6QNCivjg5XjgrjjgqQs44OS44OH44Ki44KtDQor44K144Kr44Oi44OILOOCt+ODpeOCpuODmOOCpA0KK+OCreOCv+ODgCzjgqjjgqTjgqTjg4ENCivjg5XjgrjjgqQs44Kr44Kq44OrDQor44OV44K444KkLOOCt+ODs+OCpOODgQ0KK+ODleOCuOOCpCzjgr/jg4Tjg6QNCivjg5Xjgrjjgqvjg68s44Kr44K644OS44KzDQor44OV44K444Oi44OqLOOCreODp+OCpuOCsw0KK+ODleOCuOODouODiCzjg5Ljg63jgrcNCivjg5Xjgrjjg44s44K744Kk44K4DQor44OV44K444K144OvLOODkuODreOCv+OCqw0KK+ODleOCuOOCvyzjg4jjgrfjg6QNCivjg5Xjgrjjgr8s44OS44Ot44K3DQor44OV44K444K/LOOCseOCpOOCuA0KK+OCr+OCueODouODiCzjg5Ljg63jg5Xjg58NCivjg5Xjgrjjg6/jg6ks44OS44Ot44K3DQor44OV44K444Ov44OpLOOCseOCpA0KK+ODleOCuOODr+ODqSzjg57jgrPjg4gNCivjg5Xjgrjjg6/jg6ks44OS44Ot44OgDQor44OV44K444Ov44OpLOODiOOCt+OCrQ0KK+ODleOCq+ODnOODqizjg5Ljg4fjgqoNCivjg5Xjgqvjg58s44K144OK44KoDQor44OV44Kr44OfLOODkuOCteOCsw0KK+ODleOCr+ODgCzjg6bjgqbjgrMNCivjg5Xjgq/jg4As44K144OI44OfDQor44OV44Kv44OALOOCuOODpeODsw0KK+ODleOCr+ODgCzjg6bjgqsNCivjg5Xjgq/jgqQs44OO44Oq44OB44KrDQor44OV44Kv44KkLOODiOODouOCuA0KK+ODleOCr+ODiuOCrCzjgrHjg7PjgrgNCivjg5Xjgq/jg4rjgqws44Oe44K144Ok44K5DQor44OV44Kv44Kq44KrLOODn+ODjuODqw0KK+ODleOCr+OCquOCqyzjgqTjgrXjgqoNCivjg5Xjgq/jgrcs44Ok44K544OO44OqDQor44OV44Kv44K344OeLOODiOOCt+ODpuOCrQ0KK+ODleOCr+ODiOODoSzjgrvjgqTjgrgNCivjg5Xjgq/jg6Tjg54s44Kr44OE44OS44OIDQor44OV44OK44OQ44K3LOODiOOCquODqw0KK+ODleODq+ODjizjgqLjgq3jg6kNCivjg5Xjg6vjg6Qs44OI44K344Om44KtDQor44OV44Or44OkLOODkuODreODpuOCrQ0KK+ODleODq+ODpOODnizjg5/jg47jg6sNCivjg5Xjgr/jg5As44Om44Of44KzDQor44Ki44OK44OfLOODkuOCteODjuODqg0KK+ODleOCv+ODnyzjg5XjgrjjgqoNCivjg5Xjgr/jg6Djg6ks44OI44Oi44KzDQor44Ks44OJLOODkuOCteOCtw0KK+OCtOOCpizjg6rjg6fjgqbjgrMNCivjgrTjgqbjg4As44K344OzDQor44K044KrLOOCv+ODhOODpA0KK+OCtOODiOOCpizjg4jjgrfjgr/jgqsNCivjgrTjg4jjgqYs44K344OO44OWDQor44OP44OWLOOCt+ODp+OCpuOCuA0KK+ODj+OCrCzjgqLjg4TjgrcNCivjg4/jgq4s44Kx44Oz44K4DQor44OP44OeLOOCv+ODgOODkuODrQ0KK+ODj+ODnuODgCzjg57jgrXjg6sNCivjg4/jg57jg44s44Kq44K144OgDQor44OP44Oe44OOLOOCv+ODhOODpA0KK+ODj+ODnuOCt+ODnizjg6bjg58NCivjg4/jg57jgrfjg54s44K144OA44Of44OEDQor44OP44OK44KkLOODhuODhOOCqg0KK+ODj+ODqSzjgr/jg4Tjgq0NCivjgqrjgr8s44Kz44Km44Kk44OBDQor44OP44Op44OALOODiuOCquOCrQ0KK+ODj+ODqeOCsyzjgr/jg4Tjg5Ljg60NCivjg4/jgrss44Om44K/44KrDQor44OP44K744Ks44OvLOODkuODreOCtw0KK+ODj+OCu+OCrOODryzjgrfjg6fjgqbjgrgNCivjg4/jgrfjg6Ljg4gs44K144OI44K3DQor44OP44K344Oi44OILOOCu+ODhOOCqg0KK+ODj+OCt+ODouODiCzjgqLjgrHjg58NCivjg4/jgrfjgrrjg6Es44Oe44K144KtDQor44OP44K344K644OhLOODiuOCquOCrQ0KK+ODj+OCvyzjgrfjg7PjgqTjg4ENCivjg4/jgr8s44Oo44K344OS44KzDQor44OP44K/LOOCv+OCseODkuOCsw0KK+ODj+OCv+ODjizjgq3jg6fjgqbjgrMNCivjg4/jgr/jg44s44Ok44K544Om44KtDQor44OP44K/44OOLOODqOOCt+ODkuODrQ0KK+ODhOODgCzjg5Ljg63jgrMNCivjg4/jg6Tjgqvjg68s44Oo44K344OO44OqDQor44OP44Ok44OOLOOCq+ODiuOCsw0KK+ODj+ODpOOCtyzjgrXjgqrjg6oNCivjg4/jg6Tjgrcs44K544K544OgDQor44OP44Ok44K3LOODjuODluODpuOCrQ0KK+ODj+ODpOOCtyzjg5Ljg63jg6bjgq0NCivjg4/jg6Tjgrcs44OI44K344Ot44KmDQor44OP44Ok44K344K/44OLLOOCouOCreODqQ0KK+ODkuOCrOOCt+ODjizjgq3jg5/jgr/jgrENCivjg5LjgrDjg4Es44Kr44K644OS44KzDQor44OS44Kw44OBLOOCt+ODs+OCpOODgeODreOCpg0KK+ODkuODoeODjizjg6TjgrnjgrcNCivjg5Ljg6njg5Djg6Tjgrcs44Om44Km44KzDQor44OS44Op44KkLOODpuOCpuOCpOODgQ0KK+ODkuODqeOCq+ODryzjg5Ljg63jgrcNCivjg5Ljg6njgq0s44OS44Ot44K3DQor44OS44Op44OOLOOCu+OCpOODquODp+OCpg0KK+OCouOCquOCrSzjg5/jg4HjgrMNCivjg5Ljg6njgqrjgqss44Oe44K144OkDQor44OS44Op44K144KrLOODkuODreODpuOCrQ0KK+ODkuODqeODpOODnizjg6jjgrfjg47jg6oNCivjg5Ljg63jg4/jgr8s44Om44Km44Kk44OB44OtDQor44Oe44Ko44Kr44OvLOODpOOCueODkuODrQ0KK+ODkuODreOCuyzjg57jg4rjg5YNCivjg5Ljg63jgrss44OS44Ot44Oo44K3DQor44OS44Ot44K/LOODnuOCteODjuODlg0KK+ODkuODreODr+OCv+ODqizjgr/jgqvjg5Ljg60NCivjg5Ljg63jg5/jg4Qs44OS44Ot44K3DQor44OS44Km44OpLOODnuODouODqw0KK+ODm+ODnCzjgr/jgqTjgrnjgrENCivjg5vjgq/jg6ks44Oe44Kz44OIDQor44Ob44Oz44OALOOCpOOCteOCqg0KK+ODm+ODs+ODgCzjg6jjgqbjgrMNCivjgrnjgrrjgq0s44OS44OH44KtDQor44Ob44Oz44K044KmLOOCq+OCuuOCv+OCqw0KK+ODm+ODquOCsOODgSzjgq3jgqTjg4Hjg63jgqYNCivjg5vjg6rjgqQs44Kt44OL44OBDQor44Ob44Oq44Kr44OvLOODhuODq+OCqg0KK+ODm+OCt+ODjizjg6Tjgrnjg5Ljg60NCivjg5vjgr3jgqvjg68s44OS44OH44Om44KtDQor44Ob44K944OfLOODkuODreOCouOCrQ0KK+ODm+ODg+OCvyzjgqvjgrrjgqLjgq0NCivjgqTjg5bjgqss44OO44OW44Of44OBDQor44Kk44OW44KtLOODkuODh+ODpuOCrQ0KK+OCpOODgeOCq+ODryzjg5Ljg63jgrcNCivjgqTjg4Hjg6Djg6ks44Kt44Of44KoDQor44Kk44OALOOCq+ODiuODoQ0KK+OCpOODgCzjg4Hjg4/jg6sNCivjgqTjg4cs44Ok44K544OS44OHDQor44Kk44OHLOOCreODqOOCv+OCqw0KK+OCpOODhyzjg4rjgqrjg6bjgq0NCivjgqTjg4fjgr8s44K/44Kr44K3DQor44Kk44Ks44Op44K3LOOCseOCpOOCsw0KK+OCpOOCrOODqeOCtyzjg6bjgq3jg6QNCivjgqTjgrIs44K144OE44KtDQor44Kk44Kk44OALOOCt+ODp+OCpuOCvuOCpg0KK+OCpOOCpOODgCzjgr/jgqvjg6bjgq0NCivjgqTjgqTjg4As44K/44Oe44OfDQor44Kk44Kk44OALOODqOOCt+ODkuOCtQ0KK+OCpOOCpOODj+ODqSzjg5Ljg63jgrcNCivjgqTjgqTjgrjjg54s44K/44Kx44K3DQor44Kk44Kx44OALOOCq+ODhOODpA0KK+OCpOOCseODgCzjg57jgrXjgqLjgq0NCivjgqTjgrPjg54s44OO44OW44Oe44K1DQor44Kk44Oe44KkLOOCreODqOODkuODiA0KK+OCpOODnuOCpCzjg57jgrPjg4gNCivjgr/jg4rjgqss44Kt44On44Km44KzDQor44Kk44Oe44Og44OpLOOCs+OCpuOCpOODgQ0KK+OCpOODnuODiuODqizjgr/jg4Tjg6QNCivjgqTjg57jgrzjgq0s44K444Ol44Oz44K4DQor44Kk44OK44OALOODnuODpuODnw0KK+OCpOODiuODnuOCuSzjg5Ljg63jgrcNCivjgqTjg47jgqbjgqgs44OS44Ot44Om44KtDQor44Kk44OHLOODnuOCteODkuODrQ0KK+OCpOODrOOCpCzjg57jgrXjg6sNCivjgqTjgrfjg4/jg6ks44Of44OE44OfDQor44Kk44K344OP44OpLOODn+ODpuOCrQ0KK+OCpOOCt+ODj+ODqSzjg4rjgqrjgq0NCivjgqTjgrfjg4/jg6ks44K544K544OgDQor44Kk44K344OP44OpLOOCuOODpeODs+OCpOODgQ0KK+OCpOOCt+OCpCzjgr/jgqvjg6bjgq0NCivjgqTjgrfjgqQs44OI44Oi44Om44KtDQor44Kk44K344Kr44OvLOODpuOCpuOCuA0KK+OCpOOCt+OCq+ODryzjg4rjgqrjg5Xjg58NCivjgqTjgrfjg6Djg6ks44OS44Ot44Om44KtDQor44Kk44K344Ov44K/44OqLOODnuOCueODnw0KK+OCpOOCt+OCtuOCrSzjg47jg6rjg6jjgrcNCivjgqTjgrfjgrrjgqss44OK44Kq44OI44KvDQor44Kk44K944OOLOODn+ODhOODiOOCtw0KK+OCpOOCveODpOODnizjg5/jg4Tjg47jg5YNCivjgqTjgrnjg4As44K344Ky44KqDQor44Kk44K/44Kv44OpLOODnuOCteODkuODrQ0KK+OCpOODiOOCpizjg57jgrXjg5Ljg60NCivjgqTjg4jjgqYs44OS44Ot44OV44OfDQor44Kk44OI44KmLOODqOOCt+ODnuOCtQ0KK+OCpOODiOOCpizjg4/jg6vjgqoNCivjg57jg4TjgqQs44K/44Kx44OS44KzDQor44Kk44OI44KmLOOCv+OCseODkuOCsw0KK+OCpOODiOOCpizjg57jgrXjg4HjgqsNCivjgqTjg4jjgqYs44Oe44K144OS44KzDQor44Kk44Ov44Kr44OfLOODhOODiOODoA0KK+OCpOODr+OCtSzjg4jjgrfjg58NCivjgqTjg6/jgrXjgq0s44Om44Km44K4DQor44Kk44Ov44K144KtLOODiuOCquODpuOCrQ0KK+OCpOODr+OCt+OCvyzjg5/jg4Hjgr/jgqsNCivjgqTjgrrjg58s44OI44Kq44OrDQor44Kk44OI44KmLOOCouODhOOCtw0KK+OCpOOCuuODnyzjg4jjg5jjgqQNCivjgqTjgrrjg5/jgrXjg68s44K744Kk44K4DQor44K444Oz44OOLOODpOOCueOCtw0KK+ODn+ODiSzjg6rjg6XjgqbjgrgNCivjgqvjgqws44Ki44Kx44OfDQor44Kr44Ks44OfLOODleOCteOCqg0KK+OCq+OCsuODpOODnizjg5LjgrXjg4rjgqwNCivjgqvjgqQs44OS44OI44K3DQor44Kr44Kk44OALOOCs+OCpuOCuA0KK+OCq+OCpOOCuizjgr/jgrHjg5Ljg4gNCivjgqvjgrjjgr8s44K4DQor44Kr44Kx44OSLOOCouOCseODnw0KK+OCq+OCreODouODiCzjg4jjg6Ljg5Ljg60NCivjgqvjgq3jg4zjg54s44K144OB44KzDQor44Kr44Kt44OM44OeLOOCt+OCuuOCqw0KK+OCq+ODnuOCvyzjg4jjgrfjgqgNCivjgqvjg57jgr8s44Kx44Oz44Kk44OBDQor44Kr44Of44Kw44OBLOODn+OCqOOCsw0KK+OCq+ODn+ODoOODqSzjg6jjgrfjgqoNCivjgqvjg43jgrMs44Oe44K144OO44OqDQor44Kr44OK44Oe44OrLOOCuA0KK+OCq+ODiuOCtuODryzjg57jg6Ljg6sNCivjgqvjg7Pjg5ks44K/44Kr44OS44OtDQor44Kr44Oz44OALOOCs+OCpuOCvuOCpg0KK+OCq+ODjeODj+ODqSzjgrHjg7MNCivjgrTjg4jjgqYs44K344Ky44Kr44K6DQor44Kr44ON44KzLOOCv+OCseOCtw0KK+OCq+ODjeOCsyzjg6Tjgrnjg4rjgqoNCivjgqvjg43jgrMs44Ki44Kt44OpDQor44Kr44ON44KzLOODkuODh+ODiOOCtw0KK+OCq+ODjeOCsyzjg5Ljg63jg5Xjg58NCivjgqvjg43jg5/jg4Qs44OS44Ot44Of44OEDQor44Kr44ON44Og44OpLOOCq+OCuuOCqg0KK+OCq+ODjeOCvyzjgrPjgqbjgqTjg4ENCivjgr/jg4rjgqss44Oe44K144Oo44K3DQor44Oo44ON44Oi44OBLOODiuOCquOCtw0KK+OCq+ODs+ODjizjg6Tjgrnjg57jgrUNCivjgqvjgrXjgqQs44Om44Kr44OqDQor44Kr44K344OeLOOCs+OCpuOCuOODreOCpg0KK+OCv+OCq+OCrizjg5Ljg4fjgq0NCivjgq3jgr/jg6Djg6ks44Oe44K144OfDQor44Kr44K/44Kq44KrLOODpOOCueODpuOCrQ0KK+OCq+OCv+OCquOCqyzjgqvjgrrjg5LjgrMNCivjgqvjgr/jgqrjgqss44K344Ky44Om44KtDQor44Kr44K/44K7LOODpOOCueODiuODqg0KK+OCq+OCv+ODpOODnizjg5/jg4HjgrMNCivjgqvjgr/jg6Tjg54s44OK44Kq44Om44KtDQor44Kr44K/44Ok44OeLOODpuOCpuOCsw0KK+OCq+OCv+ODpOODnizjgq3jg6fjgqbjgrMNCivjgqvjg4jjgqYs44Ok44K544OS44OtDQor44Kr44OI44KmLOODkuODreOCouOCrQ0KK+OCq+ODiOOCpizjgrfjg7PjgqTjg4ENCivjgqvjg4jjgqYs44OE44OI44OgDQor44Kr44OI44KmLOODkuODreODpuOCrQ0KK+OCq+ODiOOCpizjg4jjgrfjg5Ljg60NCivjgqvjg4jjgqYs44Oo44K344OfDQor44Kr44OI44KmLOODpuOCpuOCuA0KK+OCq+ODiOOCpizjg4Tjg4jjg6ANCivjgr3jg6Hjg6Qs44K444Ol44Oz44KzDQor44Kr44Ov44OQ44K/LOODnuOCs+ODiA0KK+OCq+ODr+OCsOODgSzjg57jgrXjgqTjg4ENCivjgqvjg6/jgrDjg4Es44K344Oz44OkDQor44K/44Oe44Ks44OvLOOCs+OCpuOCpOODgeODreOCpg0KK+OCq+ODr+ODj+ODqSzjg5LjgrXjgrcNCivjgqvjg6/jg4/jg6ks44K444Ol44Oz44K4DQor44Kr44Ov44OS44OILOOCq+ODhOODkuOCtQ0KK+OCq+ODr+OCpCzjg47jg6rjg5LjgrUNCivjgqvjg6/jgqQs44OO44Oq44KzDQor44OP44Ku44Ov44OpLOOCt+OCsuOCrQ0KK+ODiuODq+OCsSzjgr/jgqvjgrcNCivjgqvjg6/jgrXjgq0s44Oo44K344OS44OtDQor44Kr44Ov44K344OeLOODpuOCq+ODqg0KK+OCq+ODr+OCt+ODnizjg6bjgq3jgrMNCivjgqvjg6/jgr8s44Om44K/44KrDQor44Kr44Ok44OeLOODkuODreOCq+OCug0KK+OCq+OCtuODnuODhOODqizjg5Ljg63jgrMNCivjgq3jg4ks44K/44Kr44OV44OfDQor44Kt44Ks44OfLOODnuODiuODlg0KK+OCreOCtOOCtyzjg5LjgrXjg6QNCivjg6Ljg6rjgrXjg68s44Kt44Oo44K3DQor44Kt44Kv44OBLOODn+ODhOOCsA0KK+OCreOCr+ODgSzjgq3jgqTjg4ENCivjgq3jgq/jg4Es44OO44Oq44KqDQor44Kt44Kv44OpLOOCq+ODhOODnw0KK+OCreODoOODqSzjg4Tjg43jgqoNCivjgq3jg6Djg6ks44OS44Ot44KtDQor44Kt44Og44OpLOOCouOCseODnw0KK+OCreODoOODqSzjg4jjg6Ljg5LjgrUNCivjgq3jg6Djg6ks44Kr44OE44OO44OqDQor44Kt44Og44OpLOOCseOCpOOCpOODgQ0KK+OCreODoOODqSzjg57jgrXjgq0NCivjgq3jg6Djg6ks44Oe44K144Om44KtDQor44Kt44Og44OpLOOCseODs+OCpOODgQ0KK+OCreODoOODqSzjg47jg6rjgrMNCivjgq3jg6Djg6ks44K344Oz44Kt44OBDQor44Kt44OO44K344K/LOOCv+OCpOOCsw0KK+OCreODjuOCt+OCvyzjg4jjgrfjg5LjgrMNCivjgq3jg47jgrfjgr8s44Ok44K544OS44OtDQor44Kt44K344OZLOODkuODreOCrQ0KK+OCreOCt+ODgCzjg6jjgrfjg47jg6oNCivjgq3jgrfjg6Ljg4gs44K/44Kx44K3DQor44Kt44K344Oi44OILOOCv+ODhOODpA0KK+OCreOCvyzjgr/jgqvjg5/jg4ENCivjgq3jgr/jgqLjgq0s44OS44Ot44Om44KtDQor44Kt44K/44OALOODkuODreODpuOCrQ0KK+OCreOCv+OCrOODryzjg4jjgrfjg6bjgq0NCivjgq3jgr/jg5vjg6os44OS44Ot44Om44KtDQor44Kt44K/44K444OeLOOCv+ODhOODpA0KK+OCreOCv+ODoOODqSzjg5Ljg63jgrcNCivjgrPjg5Djg6Tjgrcs44K344Ky44Oo44K3DQor44Kz44OQ44Ok44K3LOOCq+OCuuODkuODrQ0KK+OCs+ODkOODpOOCtyzjg4Hjg5Xjg6YNCivjgrPjg5Djg6Tjgrcs44Ok44K544Om44KtDQor44K344Op44KkLOODgOOCpOOCueOCsQ0KK+OCs+ODkOODpOOCtyzjg5Ljg63jg6bjgq0NCivjgrPjg5Djg6Tjgrcs44K344Oz44Kk44OBDQor44Kz44OQ44Ok44K3LOODiOOCt+ODpA0KK+OCs+ODkOODpOOCtyzjg4jjgrfjgq0NCivjgrPjg5Djg6Tjgrcs44OK44Kq44OV44OfDQor44Kz44OA44OeLOODkuODreODpuOCrQ0KK+OCs+OCruOCvyzjgrHjgqTjgqTjg4ENCivjgrPjgrDjg6ws44Oo44K344Kr44K6DQor44Kz44OP44K3LOODjuODquOCt+OCsg0KK+OCs+OCtCzjgr/jgqvjg5Ljg4cNCivjgrPjg7Pjg44s44Oo44KmDQor44Kz44Oz44OOLOOCreODs+ODpA0KK+OCs+ODs+ODjizjg6Tjgrnjg5Ljg60NCivjgrPjg7Pjg47jgrks44OS44Ot44Kr44K6DQor44Kz44Kk44OHLOOCs+OCpuOCuA0KK+OCs+ODnuODhOODkOODqSzjg5Ljg4fjg4jjgrcNCivjgrPjg5/jg6Qs44Kq44K144OgDQor44Kz44Of44Ok44OeLOODqOOCt+ODkuODrQ0KK+OCs+ODouODgCzjgr/jgqvjgrcNCivjgrPjg7Pjg4ks44Kr44K644Oe44K1DQor44Kz44Oz44OJLOODnuOCteODiA0KK+OCs+ODs+ODiSzjg5Ljg4jjgrcNCivjgrPjg7Pjg4ks44Kr44OE44OkDQor44Kz44Oz44OJLOOCq+OCuuODiOOCtw0KK+OCs+ODi+OCtyzjgqLjgq3jg47jg6oNCivjgrPjgrUs44Oe44K144OIDQor44Kz44K544KuLOOCseODs+OCpOODgeODrQ0KK+OCs+OCv+OCrSzjg57jgrXjg6bjgq0NCivjgrPjgr/jg4ss44Kx44Kk44Kk44OBDQor44Kz44Ok44OeLOODn+OCrQ0KK+OCs+ODpOODnizjg5Ljg63jg58NCivjgrPjg6Tjg54s44Kr44OE44OS44KzDQor44Kz44K244OvLOODnuOCteODjuODqg0KK+OCs+OCuuODqyzjg6jjgrfjgqLjgq0NCivjgq/jg5zjgr8s44OS44Ot44K3DQor44Kv44Oc44K/LOOCuOODpeODs+OCsw0KK+OCr+ODnOODpCzjg4jjg6LjgrMNCivjgq/jg4njgqYs44K444Ol44OzDQor44K744OO44KqLOODkuODiOOCtw0KK+OCr+ODnuOCrOOCpCzjgqvjgrrjg47jg6oNCivjgq/jg6njg4njg58s44Kt44Oo44OV44OfDQor44Kv44Op44Oi44OILOODjuODquODpuOCrQ0KK+OCr+ODqeODiOODnyzjgrHjgqTjgrnjgrENCivjgq/jg6rjg44s44Ok44K544OS44OtDQor44Kv44Oq44OkLOODpuOCpuOCpOODgQ0KK+OCr+ODreODgCzjg5Ljg63jgrcNCivjgq/jg63jgqvjg68s44Of44OE44Ki44KtDQor44Kv44K144Kr44OvLOODjuODluODn+ODhA0KK+OCr+OCteODjizjgrXjg4jjgrcNCivjgq/jg6/jg5Djg6ks44OI44K344OS44OtDQor44Kv44Ov44OOLOODpOOCueODkuODrQ0KK+ODqOOCt+ODgCzjgrXjg4jjg6sNCivjgq/jgrrjg44s44OS44Ot44Kr44K6DQor44Oe44OB44OALOODkuODreOCtw0KK+ODnuOCqOODgCzjgrHjg7PjgqTjg4ENCivjg57jgqjjgqvjg68s44Of44ON44Kr44K6DQor44Kq44Kq44K/44OLLOOCv+ODgOOCt+OCsg0KK+ODnuOCrSzjgr/jgq/jg6QNCivjg57jgq3jg44s44OI44K344KqDQor44Oe44Or44Kq44KrLOODpOOCueODkuODrQ0KK+ODnuODq+ODpOODnizjgrjjg6Xjg7PjgrPjgqYNCivjg57jg6vjg6Tjg54s44OO44Oq44OS44OtDQor44Oe44Or44Ok44OeLOODn+ODjuODqw0KK+ODnuOCteOCpCzjgrfjg7PjgrQNCivjg57jgrXjgq0s44OS44OH44OoDQor44Oe44K7LOOCv+OCq+OCtw0KK+ODnuOCueODgCzjg6bjgr/jgqsNCivjg57jg4jjg5As44K/44Kr44OI44K3DQor44Oe44OI44OQLOOCr+ODi+ODkuOCsw0KK+ODnuODhOODkOODqSzjgr/jgqvjgqLjgq0NCivjg57jg4TjgqQs44OS44K144K3DQor44Oe44OE44KkLOODpOOCueODkuODrQ0KK+ODnuODhOOCq+ODryzjgrvjgqTjgqTjg4ENCivjg57jg4Tjg6Ljg6os44K344On44Km44K+DQor44Oe44OE44Oi44OILOOCv+OCq+OCtw0KK+ODnuODhOODouODiCzjg57jgrXjg6jjgrcNCivjg57jg4Tjg6Ljg4gs44K344Ky44OrDQor44Oe44OE44Oi44OILOOCuOODpeODs+OCsw0KK+ODnuODhOODouODiCzjgr/jgrHjgrcNCivjg57jg4Tjg6Ljg4gs44OI44Kq44OrDQor44Oe44OE44Oi44OILOOCteODgOOCqg0KK+ODnuODhOOCqizjgqvjgrrjg6jjgrcNCivjg57jg4Tjgqrjgqss44K/44Kx44OI44K3DQor44Oe44OE44K344OeLOOCv+OCq+ODkuODrQ0KK+ODiuOCq+ODi+ODryzjg4jjgrfjg63jgqYNCivjg57jg4Tjg6Tjg54s44K444Ol44OzDQor44Oe44OE44Ok44OeLOOCuOODpeODs+OCuA0KK+ODnuODhOOCtuODryzjg5Ljg4fjg6gNCivjg5/jg6Djg6ks44K344Ol44Oz44Kk44OBDQor44Of44OL44Ol44KmLOOCs+OCpuOCpOODgQ0KK+ODn+OCvyzjg57jg4rjg5YNCivjg5/jgr8s44OS44Ot44Kr44K6DQor44Of44K/44Og44OpLOOCuOODpeODsw0KK+ODn+ODhOODgCzjgqrjgrXjg6ANCivjg5/jg4Tjg4As44K444Ol44Oz44Kk44OBDQor44Of44OE44Oe44K/LOODqOOCt+ODjuODqg0KK+ODn+ODhOOCquOCqyzjgqLjg6TjgrMNCivjg5/jgqbjg6ks44Kt44On44Km44KzDQor44Of44Km44OpLOODn+ODieODqg0KK+ODn+ODr+OCvyzjg4rjgqrjgq0NCivjg4rjgqzjgrss44K/44Kr44K3DQor44Of44Ok44KxLOOCouOCreOCqg0KK+ODn+ODpOOCsSzjg6bjgqvjg6oNCivjg5/jg6Tjg54s44K744Kk44K4DQor44Of44Ok44Oi44OILOODhuODhOOCqg0KK+ODn+ODpOODouODiCzjg5Ljg4jjg58NCivjg5/jg6Tjg4rjgqws44Oe44K144Kr44OEDQor44Of44Ok44K244KtLOODouODiOODleODnw0KK+ODn+OCuuODkCzjg5Ljg63jgrcNCivjg5/jgrrjg4zjg54s44Kr44OE44OfDQor44Of44K644K144KtLOODn+ODrw0KK+ODn+OCuuOCvyzjg47jg6rjgqLjgq0NCivjg6Ljg4Hjgrrjgq0s44K344Ol44Km44Kk44OBDQor44Oi44OB44K644KtLOOCouODhOOCrQ0KK+ODouODgeOCuuOCrSzjg4Hjgqvjg6kNCivjg6Ljgq4s44OS44Ot44K3DQor44Oi44Oi44K7LOODhOODqOOCtw0KK+ODkuODqeODjizjgqLjgq3jg5Ljg4cNCivjg6Ljg6os44Om44Km44KtDQor44Oi44OqLOODnuOCteODpuOCrQ0KK+ODouODqizjg57jgrXjg6bjgq0NCivjg6Ljg6os44K344Ky44KqDQor44Oi44Oq44Kr44OvLOOCt+ODs+OCuA0KK+ODpOOCruOCt+OCvyzjgqTjgrXjgqoNCivjg6Ljg6rjg6Ljg4gs44Kz44Km44Kk44OB44Ot44KmDQor44Oi44Oq44Oi44OILOOCs+OCpuOCuA0KK+ODnuODhOODgCzjgrHjg7PjgrgNCivjg6Ljg6rjgqrjgqss44Ki44Kt44OS44KzDQor44Oi44Oq44K344K/LOODquOCqA0KK+ODouODquOCvyzjgq/jg4vjg5Ljg60NCivjg6Ljg6rjgr8s44Kt44Oo44Ko44KkDQor44Kr44ON44KzLOOCq+OCuuOCouOCrQ0KK+ODouODquOCvyzjg57jgrXjg6bjgq0NCivjg6Ljg6rjg6/jgq0s44OO44OW44Om44KtDQor44Oi44Ot44OJ44OfLOODqOOCpuOCpOODgQ0KK+ODouODiOODj+OCtyzjg6jjgrfjg5Ljg4cNCivjg6Ljg4jjgrjjg54s44OG44OE44KqDQor44Oi44OI44KtLOOCseOCpOOCsw0KK+ODouODqizjg5/jg68NCivjgqbjgrnjgqQs44Kr44Kq44OrDQor44Og44Op44Kr44OfLOOCv+OCseOCqg0KK+ODoOODqeOCq+ODnyzjg4DjgqTjgrvjgqQNCivjg6Djg6njgqvjg58s44OS44OH44K3DQor44Og44Op44Kr44OfLOODkuODiOOCtw0KK+ODoOODqeOCvyzjg6jjgrfjgqoNCivjg6Djg6njgr8s44Kt44Oo44OS44KzDQor44Og44Op44Ok44OeLOOCteODiOOCtw0KK+ODoOODiOOCpizjg6jjgrfjg5Ljg60NCivjg4rjg4DjgrDjg4Es44K544Of44OIDQor44OK44Ks44OP44K3LOOCpOOCteOCqg0KK+ODiuOCrOOCpCzjg57jgrXjg5Ljg60NCivjg4rjgqzjg6Djg6ks44Oe44Kz44OIDQor44OK44Ks44KqLOODnuOCteODnw0KK+ODiuOCrOOCt+ODnizjg5/jg4Hjg47jg6oNCivjg4rjgqzjgrfjg54s44Of44Oo44KzDQor44OK44Ks44K/LOODiuOCquODqg0KK+ODiuOCrOOCvyzjg47jg5zjg6sNCivjg4rjgqzjg4Tjgqss44OO44Oq44Om44KtDQor44OK44Ks44Ok44OeLOOCteODiuOCqA0KK+OCpuODgeODgCzjgr/jgqvjg5Ljg4cNCivjgqbjg4Hjgr7jg44s44K/44Kr44K3DQor44OK44Kr44OALOODiOOCt+ODpA0KK+ODiuOCq+OCrOODryzjg6Tjgrnjg5Ljg60NCivjg4rjgqvjgqzjg68s44Om44Kt44OS44OtDQor44OK44Kr44Ks44OvLOODgeODj+ODqw0KK+ODiuOCq+OCrOODryzjg4rjgqrjg6bjgq0NCivjg4rjgqvjgrjjg54s44Kz44Km44Kk44OB44Ot44KmDQor44OK44Kr44K444OeLOODkuODreOCouOCrQ0KK+ODiuOCq+OCuOODnizjgq3jg6fjgqbjgrMNCivjg4rjgqvjg5/jg4Es44Oq44Ol44Km44Kk44OBDQor44OK44Kr44Oi44OILOODpOOCueODiOODog0KK+ODiuOCq+ODouODiCzjg5Ljg63jgrcNCivjg4rjgqvjg6Djg6ks44OS44Ot44K3DQor44OK44Kr44Og44OpLOODpuODn+OCsw0KK+ODiuOCq+ODoOODqSzjg5Ljg63jgrcNCivjgqLjgq3jg6Tjg54s44K/44Kr44K4DQor44OK44Kr44Og44OpLOODkuODh+ODiA0KK+ODiuOCq+ODoOODqSzjg4Tjg4jjg6ANCivjg4rjgqvjg6Djg6ks44K/44Kr44KzDQor44OK44Kr44Og44OpLOODpuOCreOCsw0KK+ODiuOCq+ODoOODqSzjg6jjgrfjg5LjgrMNCivjg4rjgqvjg6Djg6ks44K744Kk44K4DQor44OK44Kr44Og44OpLOODpuOCpuOCpOODgQ0KK+ODiuOCq+ODoOODqSzjg5Ljg63jg58NCivjg4rjgqvjg6Djg6ks44K144OI44K3DQor44OK44Kr44OOLOOCv+OCq+OCtw0KK+ODiuOCq+ODjizjgrHjgqTjgrgNCivjg4rjgqvjgrfjg54s44OO44Oq44KqDQor44OK44Kr44OE44OcLOODnuOCteODkuOCsw0KK+ODiuOCq+ODhOOCqyzjg4bjg4Tjg63jgqYNCivjg4rjgqvjg6Tjg54s44Oe44Kz44OIDQor44OK44Kr44Ok44OeLOODnuOCteODkuOCsw0KK+ODiuOCq+OCtuODryzjgqrjgrXjg6ANCivjg4rjgqrjg4Tjgqss44Ki44Kt44KzDQor44OK44Op44OP44OpLOOCteODiOOCtw0KK+ODiuODq+OCt+ODnizjg57jgrXjgrMNCivjg4rjg4jjg6os44OS44Ot44K/44KrDQor44OL44Kk44K444OeLOODpuOCqw0KK+ODi+OCpOODpCzjg6rjgqsNCivjg4vjgrcs44OI44K344OS44K1DQor44OL44K3LOODnuOCteODkuODrQ0KK+ODi+OCt+ODlizjgqLjg6TjgrMNCivjg4vjgrfjg4As44K/44OE44OkDQor44OL44K344OP44OpLOOCv+OCq+OCouOCrQ0KK+ODi+OCt+OCq+ODryzjg57jgrXjgrMNCivjgr/jg4rjgqss44Kk44K144KqDQor44OL44K344Kr44OvLOODnuOCteODiA0KK+ODi+OCt+ODouODiCzjg5Ljg4fjgqLjgq0NCivjg4vjgrfjg6Ljg4gs44OK44Kq44KzDQor44OL44K344Og44OpLOOCv+OCq+OCtw0KK+ODi+OCt+ODoOODqSzjgrPjgqbjgr7jgqYNCivjg4vjgrfjg44s44Kx44Oz44K4DQor44OL44K344OOLOOCt+ODs+ODpA0KK+ODi+OCt+OCquOCqyzjg57jgrXjg47jg5YNCivjg4vjgrfjgrbjgq0s44Kx44Oz44K4DQor44OL44K344K244OvLOODgOOCpOOCueOCsQ0KK+ODi+ODryzjg6Ljg6rjg6jjgrcNCivjg47jg5Ys44Of44OO44OrDQor44OO44Ks44Kk44OILOODjuODluODpuOCrQ0KK+ODjuOCsOODgSzjg6jjgqbjgrMNCivjg47jgrgs44OS44Ot44Om44KtDQor44OO44K444OeLOODjuODquOCqg0KK+ODjuODoOODqSzjgqLjgq3jgrMNCivjg47jg6Djg6ks44K344Oz44Kk44OBDQor44OO44OK44KrLOODpuOCreODjuODqg0KK+ODiuOCq+OCuOODnizjg4Hjg5Xjg6YNCivjg47jgrbjgq0s44Of44Kt44KqDQor44OO44K244KtLOODqOOCt+ODpuOCrQ0KK+ODjOODryzjgr/jgrHjgrcNCivjgqrjg4Es44K/44Kr44K3DQor44Kq44OB44Ki44KkLOODiOOCt+ODpuOCrQ0KK+OCquODgCzjgqLjg4TjgrcNCivjgqrjgqzjgrXjg6/jg6ks44Oo44K344Om44KtDQor44Kq44Ks44K144Ov44OpLOODiOODn+OCqg0KK+OCquOCrOOCvyzjgqvjgrrjg4/jg6sNCivjgqrjgqzjg68s44Kx44Oz44Kk44OBDQor44Kq44Ku44OP44OpLOODkuODreOCrQ0KK+OCquOCquODj+ODqSzjgqvjg4Tjg58NCivjgqrjgqrjg5As44Om44Of44KzDQor44Kq44Kq44OQLOOCqOOCpOOCuA0KK+ODnuODhOODgCzjgrfjgrLjg6bjgq0NCivjgqrjgqrjgqgs44Om44Km44K4DQor44Kq44Kq44Ks44KtLOOCq+OCuuODkuODrQ0KK+OCt+ODp+OCpuOCuOODnizjg4jjgrfjg5Ljg4cNCivjgqrjg4/jg54s44OS44Ot44Om44KtDQor44Kq44Kq44OP44K3LOOCseOCpOOCsw0KK+OCquOCruODjizjgrfjgrLjgq0NCivjgqrjgqrjgqvjg68s44Kz44Km44Kk44OBDQor44Kq44Kq44Kr44Ov44OpLOODnuODiuODlg0KK+OCquOCrSzjg57jgrXjg5LjgrMNCivjg43jg6Ljg4gs44K444Ol44OzDQor44Kq44Kq44Kv44OcLOODjuODluODpuOCrQ0KK+OCquOCquOCr+ODqSzjg4jjg6Ljg5LjgrMNCivjgqrjg54s44OI44Oi44OS44K1DQor44Kq44Kq44Of44KrLOODhuODhOOCtw0KK+OCquOCquODouODqizjg5Ljg4fjg58NCivjgqrjgqrjg6Ljg6os44OS44Ot44Ki44KtDQor44Ov44K/44OK44OZLOOCq+OCuuOCouOCrQ0KK+OCquOCquODi+OCtyzjg5/jg4Tjg6sNCivjgqrjgqrjg4vjgrcs44Oe44K144OS44OHDQor44Kq44OOLOOCteODiuOCqA0KK+OCquODjizjgrjjg6Xjg7PjgrMNCivjgqrjgqrjg4zjg54s44Oe44K144KqDQor44Kq44K344OeLOOCv+OCq+ODpuOCrQ0KK+OCquOCt+ODnizjg57jgrXjgrcNCivjgqrjgqrjgr8s44Oe44K144Om44KtDQor44Kq44Kq44K/LOODouODiOOCpA0KK+OCquOCquOCvyzjgqvjgqrjg6sNCivjgqrjgqrjgr/jgqss44OI44K344Ki44KtDQor44Kq44Kq44K/44KxLOOCteOCqOOCsw0KK+OCquOCquOCv+OCsSzjg5Ljg4fjg5Xjg58NCivjgqrjgqrjgr/jg4ss44Kv44OL44KqDQor44Kq44Kq44OE44OcLOOCouODhOODpuOCrQ0KK+OCquOCquODhOOCqyzjg4bjg4TjgqoNCivjgqrjgqrjg4Tjgqss44OI44K344OS44KzDQor44Kq44Kq44OE44KtLOOCpOOCuuODnw0KK+OCteOCs+ODgCzjgrfjg6XjgqbjgqTjg4ENCivjgqrjgqrjg68s44K144OI44K3DQor44Kq44Kq44OkLOOCuOODpeODs+OCu+OCpA0KK+OCquOCpOOCq+ODryzjg57jgrXjgq0NCivjgqrjgqvjg5ks44Oe44OK44OWDQor44Kz44OQ44Ok44K3LOOCveOCpg0KK+OCquOCq+ODgCzjg6Tjgrnjg5/jg4QNCivjgqrjgqvjg4As44OG44OE44K4DQor44Kq44Kr44OALOODhuODhOODpA0KK+OCquOCq+ODouODiCzjg5Ljg4fjgqLjgq0NCivjgqrjgqvjg6Ljg4gs44OS44OH44OO44OWDQor44Oh44OpLOODkuODreODpuOCrQ0KK+OCquOCq+ODjizjgqvjgrrjg47jg6oNCivjgqrjgqvjgrbjgq0s44Kr44K644Om44KtDQor44Kq44Kt44K/LOOCteODiOOCsw0KK+OCquOCr+ODgCzjgqjjgqTjgqTjg4Hjg63jgqYNCivjgqrjgq/jg4zjgq0s44Oe44K144Kr44K6DQor44Kq44Oz44OALOODgeOCuuOCsw0KK+OCquODs+ODgCzjg5Ljg6njgr/jgqsNCivjgqbjg4Tjg58s44Oe44K144OS44OtDQor44Kq44Kq44OOLOOCv+OCq+OCtw0KK+OCquOCquODjizjg6bjgq3jg5Ljg60NCivjgqvjg6/jg6Ljg4gs44OS44OH44Om44KtDQor44Kr44OJLOOCr+ODi+ODkuODrQ0KK+OCquOCt+ODnizjgrfjg63jgqYNCivjgqrjgqrjgrnjg58s44Ki44Kt44OpDQor44Kq44Kq44K/LOOCq+OCuuODpuOCrQ0KK+OCquODquOCpCzjgrfjg6Xjg7PjgrgNCivjgqrjg6rjgr8s44K344Ol44Km44Kk44OBDQor44Kq44Kq44K144KrLOODiOODqOODkuODhw0KK+OCquOCveODjuOCpCzjg6bjgq3jgqoNCivjgqrjgrbjgrUs44Om44Kt44OO44OWDQor44Kq44K244OvLOOCv+ODhOOCuA0KK+OCquOCtuODryzjg4rjgqrjg47jg6oNCivjgqrjgrbjg68s44Ok44K544OS44OtDQor44K344Op44OI44OqLOOCuOODpeODsw0KK+OCquOCvuODjSzjgqLjgq3jgqoNCivjgrXjg44s44OS44Ot44OS44K1DQor44K144Kk44OI44KmLOODnuOCteODnw0KK+OCteOCpOODiOOCpizjg4rjgqrjgq0NCivjgrXjgqTjg4jjgqYs44Of44Ko44KzDQor44K144Kk44OI44KmLOOCseOCpOOCuA0KK+OCteOCpOODiOOCpizjg4HjgqvjgrMNCivjgrXjgqvjgqQs44OS44Ot44OfDQor44K144Kr44KkLOOCseODs+OCuA0KK+OCteOCq+OCpCzjg57jgrPjg4gNCivjgrXjgqvjgq3jg5Djg6ks44Of44OE44Ki44KtDQor44K144Kr44Oi44OILOODrOOCpOOCsw0KK+OCteOCq+ODouODiCzjg6jjgrfjgqoNCivjgrXjgqvjg6Ljg4gs44OI44Oi44KzDQor44K144Kr44Oi44OILOOCuOODpeODs+ODmuOCpA0KK+OCteOCq+ODouODiCzjgqvjgqrjg6sNCivjgrXjgqvjg6Djg6ks44Kx44Oz44K4DQor44K144Kr44ONLOOCs+OCpuOCuA0KK+OCteOCq+OCvyzjg57jgrXjg5LjgrMNCivjgrXjgqvjgr8s44Oe44K144OS44OtDQor44Ki44Kv44K/44Ks44OvLOODnuOCteODkuODrQ0KK+OCteOCr+ODqeOCpCzjg57jgrXjg4gNCivjgrXjgq/jg6njgqQs44Or44Oq44KzDQor44Oe44OE44OQ44OpLOODquODp+OCpuOCsw0KK+OCteOCr+ODqeOCpCzjgrXjg4jjg6sNCivjgrXjg4rjgq4s44Oo44K344KtDQor44K144OOLOODpuOCreOCsw0KK+OCquOCquOCrOOCrSzjg4Hjg5Ljg60NCivjgrXjgrXjgq0s44OV44Of44OS44OtDQor44K144K144KtLOODiOOCquODqw0KK+OCteOCteOCrSzjg5Ljg4fjg6bjgq0NCivjgrXjgrXjgq0s44Kk44Kv44OV44OfDQor44K144K144KtLOODiuOCrOODnuOCtQ0KK+OCteOCteOCrSzjg4jjg6LjgrMNCivjgrXjgr/jgrEs44K/44Kr44Om44KtDQor44Kz44OA44OeLOODnuOCteODkuODrQ0KK+OCteODiOOCpizjg4jjgqrjg6sNCivjgrXjg4jjgqYs44OV44K444KqDQor44K144OI44KmLOODkuODh+ODj+ODqw0KK+OCteODiOOCpizjg57jg6Ljg6sNCivjgrXjg4jjgqYs44Oe44Om44OfDQor44K144OI44KmLOOCt+ODreOCpg0KK+OCteODiOOCpizjgrHjg7PjgrgNCivjgrXjg4jjgqYs44OS44OH44OO44OqDQor44K144OI44KmLOOCseOCpOOCpOODgQ0KK+OCteODiOOCpizjgqLjgq3jg5Ljg60NCivjgrXjg4jjgqYs44OS44OH44KtDQor44K144Kr44KkLOOCseODs+OCuA0KK+OCteODr+ODgCzjgrPjgqbjgr/jg63jgqYNCivjgrvjgqzjg68s44K144OI44OrDQor44K744Kk44OOLOOCt+ODp+OCpuOCuA0KK+OCu+OCrSzjg4Tjg4jjg6ANCivjgrvjgq3jg4ks44K344Oz44K4DQor44K744Kt44OOLOODjuODquODkuODrQ0KK+OCu+OCqizjgr/jgqvjg6bjgq0NCivjgrvjg6rjgqvjg68s44Kq44K144OgDQor44K344OQ44K144KtLOODkuODreODjuODqg0KK+OCt+OCrCzjgqvjg4rjg58NCivjgrfjgrLjg6ss44Oo44K344KzDQor44K344Oe44OALOOCouODhOOCtw0KK+OCt+ODnuODgCzjg5/jg4TjgqgNCivjgrfjg57jg4As44Oe44Kz44OIDQor44K344Oe44OALOOCq+OCquODqw0KK+OCt+ODnuODouODiCzjg5/jg4Tjg6TjgrkNCivjgrfjg57jg6Djg6ks44K/44OE44OkDQor44K344Oe44OOLOOCv+OCq+OCtw0KK+OCt+ODn+OCuizjgr/jgqvjgqLjgq0NCivjgrfjg5/jgros44OI44K344OS44OtDQor44K344Of44K6LOOCv+ODgOOCtw0KK+OCt+ODn+OCuizjg4Tjg4jjg6ANCivjgrfjg5/jgros44Kz44Km44K444Ot44KmDQor44K344Of44K6LOOCteODiOODqw0KK+OCt+ODn+OCuizjg5/jgrrjgq0NCivjgrfjg6Ljg4As44OS44Ot44Om44KtDQor44K344Oi44Ks44KtLOOCseODs+ODpA0KK+OCt+ODouODj+OCvyzjg5Ljg63jg6bjgq0NCivjgrfjg6Ljg6Djg6ks44OO44OW44OS44OtDQor44K344Oi44Kq44KrLOODiOOCt+OCouOCrQ0KK+OCt+ODoOODqSzjgrfjg6fjgqbjgqTjg4ENCivjg6Tjgqjjgqzjgrcs44Ki44OE44KzDQor44K344OO44K244KtLOOCouODhOOCtw0KK+ODj+OCruODr+ODqSzjg5Ljg4fjgqoNCivjgrfjgqrjg4As44Oe44K144OS44OIDQor44K344Kq44K/LOODkuOCteODqOOCtw0KK+OCt+OCquOCtuODryzjgrHjg7PjgqTjg4ENCivjgrfjg6njgqQs44K/44Kx44K3DQor44K344Op44Kk44K3LOODiOODouODkuOCtQ0KK+OCt+ODp+OCpuODgCzjgrHjg7PjgrgNCivjgrfjg6XjgqYs44OI44Oi44KzDQor44K944Oh44OkLOODnuOCteOCtw0KK+OCueODgCzjgq/jg5/jgrMNCivjgrnjgqgs44OS44OH44KqDQor44K544Ko44K/LOODkuODh+OCqg0KK+OCt+ODluOCpOODgSzjg5Ljg4fjg6bjgq0NCivjgrnjgqzjg44s44OS44Ot44Om44KtDQor44K544Ks44Ov44OpLOODkuOCteOCv+OCqw0KK+OCueOCruOCqCzjgqvjg4Tjg4jjgrcNCivjgrnjgq7jg57jgrUs44Kx44Kk44K/DQor44K544Ku44Oi44OqLOODjuODluODpuOCrQ0KK+OCueOCruODouODiCzjg4jjgqrjg6sNCivjgrnjgq7jgrXjgq0s44Oo44Km44KzDQor44K544Ku44Km44OpLOODpuOCreOCqg0KK+OCueOCruOCpuODqSzjgrjjg6Xjg7PjgqTjg4ENCivjg5/jgrrjgqrjg4Es44K/44Kr44K3DQor44K544Ku44Ok44OeLOODnuOCteODpA0KK+OCueOCruODpOODnizjg57jg4rjg5YNCivjgrnjgq7jg6Tjg54s44Kx44OzDQor44K544Ku44Ok44OeLOOCv+OCseOCtw0KK+OCueODnyzjg57jgrXjg6Ljg4gNCivjgr/jg5njgqQs44Oo44K344OO44OqDQor44K544OK44OfLOODkuODreOCsw0KK+OCueOCteODryzjgqrjgrXjg6ANCivjgrnjgrrjgq0s44Ki44Kt44KzDQor44K544K644KtLOOCqOOCpOOCuA0KK+OCueOCuuOCrSzjg5Ljg4fjg6bjgq0NCivjgrnjgrrjgq0s44OS44Ot44Ki44KtDQor44K544K644KtLOOCq+ODiuOCsw0KK+OCueOCuuOCrSzjgqvjg4rjgrMNCivjgrnjgrrjgq0s44Kr44K644Oo44K3DQor44K544K644KtLOOCseODs+OCvw0KK+OCueOCuuOCrSzjgrPjgqbjgrgNCivjgrnjgrrjgq0s44Oe44K144OO44OqDQor44K544K644KtLOODiuODquODnuOCtQ0KK+OCv+ODmSzjg6rjg6XjgqbjgqTjg4Hjg63jgqYNCivjgr/jg4Hjg4/jg6ks44K/44Kr44K3DQor44K/44KyLOODiOOCt+OCrQ0KK+OCv+OCsOODgSzjg6/jgr/jg6sNCivjg4rjgqvjgr8s44Ov44K/44OrDQor44K/44Kw44OBLOOCt+ODsw0KK+OCv+OCuOODnizjgqLjgq3jg6kNCivjgr/jgrjjg54s44Oe44Kz44OIDQor44K/44Kr44OALOOCs+OCpuOCpOODgQ0KK+OCv+OCq+OCruODryzjg5/jg4Tjg5Ljg60NCivjgr/jgqvjg4/jgrcs44Kr44K644Oo44K3DQor44K/44Kr44OP44K3LOODkuODreODpOOCuQ0KK+OCv+OCq+ODj+OCtyzjgqvjgrrjg47jg6oNCivjgr/jgqvjg4/jgrcs44Of44OE44OI44K3DQor44K/44Kr44Kv44OpLOOCs+OCpuOCuA0KK+OCv+OCq+OCr+ODqSzjg6Tjgrnjg57jgrUNCivjgr/jgqvjg4/jgrcs44Ok44OS44OtDQor44K/44Kr44OP44K3LOOCouOCreODleODnw0KK+OCv+OCq+ODj+OCtyzjgqrjgrXjg6ANCivjgr/jgqvjg4/jgrcs44Om44Km44K4DQor44K/44Kr44OP44K3LOODkuODreODpuOCrQ0KK+OCv+OCq+ODj+OCtyzjg4TjgqvjgrUNCivjgr/jgqvjg4/jgrcs44K344Oz44Kk44OBDQor44K/44Kr44OP44K3LOODpuOCpuOCsw0KK+OCv+OCq+ODj+OCtyzjg57jgrPjg4gNCivjgr/jgqvjg4/jgrcs44OS44OH44KtDQor44K/44Kr44Kv44OpLOODhOODiOODoA0KK+OCv+OCq+ODn+ODpCzjgr/jg57jg58NCivjgr/jgqvjgrXjgrQs44Kv44OL44OS44KzDQor44K/44Kr44K144KtLOODnuOCteODiA0KK+OCv+OCq+OCuyzjg57jgrXjg5Ljg4gNCivjgr/jgqvjg4Tjgqss44K344Oz44Kk44OBDQor44K/44Kr44Ok44OK44KuLOOCt+OCsuODqw0KK+OCv+OCq+ODpOODiuOCrizjg6Tjgqjjgq3jg4ENCivjgr/jgrHjg4Es44OS44OH44Ki44KtDQor44K/44Kx44OALOODkuODreOCtw0KK+OCv+OCseODgCzjgqTjg4Tjg5Ljg4gNCivjgr/jgrHjgqzjg58s44Kr44OE44OfDQor44K/44Kx44OS44K1LOODnuOCs+ODiA0KK+OCv+OCseOCpCzjg47jg5bjgqoNCivjgr/jgrHjgqQs44K/44OA44Om44KtDQor44K/44Kx44Kr44OvLOOCv+OCseODkuOCsw0KK+OCv+OCseODoOODqSzjg4jjgrfjg5Ljg4cNCivjgr/jgrHjg4rjgqss44OI44K344OS44OtDQor44Kk44Oe44KkLOODqOOCpuOCpOODgQ0KK+OCv+OCseOCteOCsyzjg6jjgqbjgqTjg4ENCivjgr/jgrHjgrfjg54s44Kr44OE44K344Ot44KmDQor44K/44Kx44Km44OBLOODkuODreODiOOCtw0KK+ODkuODgOOCqyzjg4jjgqrjg6sNCivjgr/jgq3jg6Ljg4gs44Of44OJ44OqDQor44K/44Kt44K244OvLOOCreOCr+ODnw0KK+OCv+ODnuOCpCzjg57jgrXjg6sNCivjgr/jg6Djg6ks44K344On44Km44Kk44OBDQor44K/44OK44OZLOOCqOOCpOOCuA0KK+OCv+ODiuODmSzjg6jjgqbjg5jjgqQNCivjgr/jg4rjgqss44Ki44Kt44OIDQor44K/44OK44KrLOOCpOOCteODoA0KK+OCv+ODiuOCqyzjg5/jg4njg6oNCivjgr/jg4rjgqss44Oo44K344OK44OqDQor44K/44OK44KrLOODpOOCueOCuA0KK+OCv+ODiuOCqyzjgr/jgqvjgrcNCivjgr/jg4rjgqss44Ki44Oq44OS44OIDQor44K/44OK44KrLOOCt+ODs+OCtA0KK+OCv+ODiuOCqyzjgrfjg6XjgqbjgqTjg4ENCivjgr/jg4rjgqss44OS44Ot44Om44KtDQor44K/44OK44KrLOOCv+OCq+OCtw0KK+OCteODjizjg5Ljg63jg5Xjg58NCivjgr/jg4ss44Ko44Kk44Kk44OB44Ot44KmDQor44K/44OL44Og44OpLOODqOOCt+ODleODnw0KK+OCv+ODi+ODpOODnizjg4DjgqTjgrnjgrENCivjgr/jgrXjgqss44Ok44K544Oe44K1DQor44Kr44OI44KmLOOCqOOCpOOCuA0KK+ODhuODqeODgCzjg6jjgrfjg6bjgq0NCivjg4bjg6njg57jgqgs44Oe44KtDQor44OG44Op44OL44K3LOODjuODluODpuOCrQ0KK+ODhuODqeODi+OCtyzjg5Ljg63jg5/jg4QNCivjg4bjg6njgr7jg44s44Kr44Kq44OqDQor44OI44OT44K/LOODnuOCteODnw0KK+OCpOOCuuODn+OCteODryzjg5Ljg4fjgq0NCivjg4jjg4As44K144OI44K3DQor44OI44Kw44OBLOOCv+OCseOCtw0KK+ODiOODnuODhCzjg4jjg6LjgqLjgq0NCivjgqLjgq3jg6Djg6ks44OO44OW44Om44KtDQor44OI44Kt44K/44KxLOOCv+OCseOCtw0KK+ODiOOCr+ODnuOCuSzjgqLjgq3jg5Ljg60NCivjg4jjgq/jgr/jgrEs44Ki44Kt44OS44KzDQor44OI44Oe44KtLOOCq+OCuuODpA0KK+ODiOODn+OCpCzjg57jgrXjg5Ljg60NCivjg4jjg5/jgr8s44Kt44Of44KqDQor44OI44Of44Ok44OeLOODnuOCteODiA0KK+ODiOODouODgCzjgq/jg5/jgrMNCivjg4jjg6Ljg4rjgqws44Oe44K144OO44OqDQor44OI44K144KrLOODiuOCquODiA0KK+ODiOODg+ODiOODqizjgqLjgq3jg5LjgrMNCivjg57jg4Tjgqos44Oo44K344Om44KtDQor44OI44Oo44OALOODqOOCt+ODpuOCrQ0KK+ODhOODnOOCpCzjgqLjgq3jg6kNCivjgqvjg4jjgqYs44OI44K344OS44OtDQor44OE44OB44OkLOOCq+OCuuOCtw0KK+ODhOODgCzjgrfjg7PjgrQNCivjg4Tjgrgs44Oe44K144OS44KzDQor44OE44K4LOODqOOCpuOCpOODgQ0KK+ODhOOCuOODjizjg6jjgqbjgrnjgrENCivjg4TjgqvjgrPjgrcs44Ki44Kt44OpDQor44OE44Kr44Oi44OILOOCt+OCsuODkuODrQ0KK+ODhOOCq+OCtuOCrSzjg5Xjg5/jg5Ljg60NCivjg4Tjgq3jgqLjgrcs44Ki44Kt44OpDQor44OE44Kt44K244OvLOOCs+OCpuOCuA0KK+ODhOODn+OCvyzjgqjjgqTjgqTjg4ENCivjgqjjg7Pjg4ks44K/44OA44OS44KzDQor44OE44OILOODiOOCt+ODkuODrQ0KK+ODhOODoOODqSzjg6jjgrfjgqoNCivjg4Tjg43jgqvjg68s44K944OO44K544KxDQor44OE44Or44Kq44KrLOODqOOCt+ODkuOCsw0KK+ODhOODq+OCvyzjg47jg6rjgrMNCivjg4Tjg6vjgr8s44Oi44OI44Om44KtDQor44OE44Or44K/LOOCv+ODhOODpuOCrQ0KK+ODhOODhOODnyzjgrfjg6Xjg7Pjg6QNCivjg4Tjg4Tjg58s44Kr44OE44OfDQor44OE44Ov44KzLOODpuOCqw0KK+ODhOODpOODnizjgq3jg6jjg5XjgrUNCivjgqbjg4Hjg4As44K344On44Km44KzDQor44Km44OB44OALOODnuOCteODkuODrQ0KK+OCpuODgeODgCzjgrvjg4TjgrMNCivjgqbjg4Hjg6Tjg54s44K344Oz44K0DQor44Km44OB44Ok44OeLOODkuODh+OCqg0KK+OCpuODiSzjgq3jg6jjg58NCivjgqbjgqjjg4As44OP44Or44KtDQor44Km44Ko44OALOODqOOCpuOCueOCsQ0KK+ODnuODhOODoOODqSzjg4DjgqTjgrjjg63jgqYNCivjgqbjgqjjg4As44Ki44Kx44OfDQor44Km44Ko44OALOOCouOCreOCqg0KK+OCpuOCqOODnuODhCzjg5Ljg4fjgqoNCivjgqbjgqjjg44s44OS44Ot44OfDQor44Km44Ko44OOLOOCuOODpeODs+OCuA0KK+OCpOOCt+ODgCzjgqvjgrrjg5LjgrMNCivjgqbjg6Hjg4As44Kz44Km44K744KkDQor44Km44Oh44Ks44KtLOOCr+ODi+OCsw0KK+OCpuODjizjg57jg6Ljg6sNCivjgqbjg6njg4/jgrcsDQor44K344Of44K6LOOCteODiOOCtw0KK+OCqOOCrOOCt+ODqSzjgr/jg4DjgrcNCivjgrnjgqjjgqvjg40s44OG44Or44Om44KtDQor44Km44OELOODiOOCquODqw0KK+OCpuODhOODj+OCtyzjg4jjgrfjg5Ljg60NCivjgqbjg4Tjg58s44Kx44Kk44Kk44OBDQor44Ov44OALOODhOODjeODleODnw0KK+ODr+ODgCzjgr/jg4Tjg58NCivjgq3jgr/jg6/jgq0s44K744Kk44KtDQor44Ov44K344K6LOODj+ODq+ODiuOCrA0KK+ODr+OCv+ODmSzjg5Xjg5/jg6gNCivjg6/jgr/jg4rjg5ks44OS44Ot44K3DQor44Ov44K/44OK44OZLOODnuOCteODpA0KK+ODr+OCv+ODiuODmSzjgrXjg4jjg58NCivjg6/jgr/jg4rjg5ks44K344Oz44Kk44OBDQor44Ov44K/44OK44OZLOOCv+OCq+OCtw0KK+ODr+OCv+ODiuODmSzjg4Tjg4jjg6ANCivjg6/jgr/jg4rjg5ks44Oo44K344Ki44KtDQor44Ov44K/44OK44OZLOODhOODjeOCqg0KK+ODr+OCv+ODiuODmSzjg57jgrXjg6gNCivjg6/jgr/jg4rjg5ks44Ko44Kk44K4DQor44Ov44K/44OK44OZLOODkuODreOCsw0KK+ODr+OCv+ODiuODmSzjg5Ljg63jg6bjgq0NCivjg6/jgr/jg4rjg5ks44Kr44OE44K3DQor44Ov44K/44OK44OZLOODpuOCpuOCuOODreOCpg0KK+ODr+OCv+ODiuODmSzjg6TjgrnjgqoNCivjgqjjg4/jg6ks44Ki44OE44K3DQor44Ov44K/44OK44OZLOODkuODh+OCouOCrQ0KK+ODr+OCv+ODqeOCpCzjgrjjg63jgqYNCivjg6Tjgqjjgqzjgrcs44Kq44K144OgDQor44Ok44OP44KuLOOCt+ODjuODlg0KK+ODpOODnuODgCzjgrfjg6XjgqbjgqTjg4ENCivjg6Tjg57jg4As44K/44Kx44K3DQor44Ok44Oe44OALOODqOOCpuOCuA0KK+OCs+ODs+ODiSzjg4jjgrfjg6QNCivjg6Tjg57jg4As44Ki44OE44K3DQor44Ok44Oe44OALOOCquOCteODoA0KK+ODpOODnuODgCzjg5/jgq0NCivjg6Tjg57jg4As44Ki44Kt44OS44OtDQor44Ko44OO44Oi44OILOODkuODreOCtw0KK+OCteOCpOODiOOCpizjg5Ljg63jg6bjgq0NCivjg6Tjg57jgrDjg4Es44Kt44Oz44OkDQor44OV44K444K/LOODnuOCteODiOOCtw0KK+ODpOODnuOCsOODgSzjgrXjg4jjgrMNCivjg6Tjg57jgrDjg4Es44Ok44K544OS44OtDQor44Ko44K244KtLOODkuODiOOCtw0KK+ODpOODnuOCsOODgSzjgrXjg4jjg6sNCivjg6Tjg57jg6Ljg4gs44K144OI44K3DQor44Ok44Oe44Oi44OILOODiOOCquODqw0KK+ODpOODnuODouODiCzjg6TjgrnjgrcNCivjg6Tjg57jg6Ljg4gs44K/44Kx44K3DQor44Ok44Oe44Oi44OILOOCs+OCpuOCpOODgQ0KK+ODpOODnuODouODiCzjgrPjgqbjgq0NCivjg6Tjg57jg6Ljg4gs44OI44K344Om44KtDQor44Ok44Oe44Oi44OILOODnuOCteODqw0KK+ODpOODnuODiuOCqyzjg5Ljg63jgrcNCivjg6Tjg57jg40s44Of44OB44OrDQor44Ok44Oe44OO44Kv44OBLOOCteODiOOCtw0KK+ODpOODnuOCteOCrSzjgr/jgqvjgrcNCivjg6Tjg57jgrfjgr8s44Oe44K144Kr44K6DQor44Ok44Oe44K344K/LOODkuODreOCrQ0KK+ODpOODnuOCt+OCvyzjgrHjgqTjgqTjg4Hjg63jgqYNCivjg6Tjg57jgrfjgr8s44Kz44Km44KtDQor44Ok44Oe44K344K/LOOCt+OCsuODnw0KK+OCt+OCteOCpCzjg57jgrXjg6bjgq0NCivjg6Tjg57jgrfjgr8s44OI44K344OS44OtDQor44Ok44Oe44Km44OBLOODiOOCt+ODpuOCrQ0KK+ODpOODnuOCpuODgSzjg57jgrPjg4gNCivjg6Tjg57jgrbjgq0s44OS44OH44KqDQor44Ok44Oe44K244KtLOOCv+ODgOOCtw0KK+ODpOODnuOCtuOCrSzjg6Djg4Tjg58NCivjg6Tjg4rjgq7jg6Ljg4gs44K/44Kx44K3DQor44Ok44OOLOODquODp+OCpuOCuA0KK+ODpOODjizjg5Ljg63jgq0NCivjg6Tjgrfjg60s44Ok44K544K3DQor44Ok44K244OvLOODnuOCs+ODiA0KK+ODqOODgCzjgrfjg6Xjg7PjgrnjgrENCivjg6jjgq4s44OV44Of44Om44KtDQor44Oo44Kz44KkLOOCs+OCpuOCuA0KK+ODqOOCs+ODpOODnizjgrHjg7Pjgrfjg6fjgqYNCivjg6jjg43jgrbjgq0s44OV44OI44K3DQor44Oo44K344OALOOCuOODpeODsw0KK+ODqOOCt+ODgCzjg6rjgqjjgrMNCivjg6jjgrfjg4As44Kr44K644Oo44K3DQor44Oo44K344OALOOCuOODpeODs+OCsw0KK+OCqOODk+ODiizjgrvjgqTjgqTjg4ENCivjg6jjgrfjg4As44K/44OA44K3DQor44Oo44K344OALOOCv+ODhOOCqg0KK+ODqOOCt+OCpOOCsSzjg6Tjgrnjg47jg6oNCivjg6jjgrfjg6Djg6ks44Of44OE44Om44KtDQor44Oo44K344Og44OpLOOCteODiOODqw0KK+ODqOOCt+ODjizjgrfjg7PjgqTjg4ENCivjg6jjgrfjgqos44OO44Oc44OrDQor44Oo44K344K/44KxLOOCt+OCsuODqOOCtw0KK+ODpuOCouOCtSzjg4bjg4TjgrgNCivjgqrjgqrjg6/jg4As44K344On44Km44K4DQor44Ko44Kw44OBLOOCteODiOODqw0KK+OCquOCtuODryzjgqvjg4Tjg6bjgq0NCivjgrXjg4jjgqYs44Of44OE44Ki44KtDQor44K344Oz44K/44OLLOOCv+OCseODnw0KK+OCueOCruOCv+ODiyzjg6jjgrfjg5LjgrMNCivjgr/jgqvjg4/jgrcs44Kk44K644OfDQor44K/44Kt44K244OvLOODiuOCquOCrQ0KK+ODn+ODqOODgCzjgrHjg7PjgrgNCivjg6Tjg57jg4As44Kt44Oo44K3DQor44Ok44OP44KuLOOCteODiOOCtw0KK+OCreODpCzjgr/jg4DjgrcNCivjg5/jgrvjgq0s44OO44Oq44Kr44K6DQor44Ko44OO44Oi44OILOOCseODs+OCv+ODreOCpg0KK+OCteOCr+ODqeODgCzjg57jgrXjgq0NCivjgrXjgrXjgq0s44OO44OW44Om44KtDQor44OQ44OQLOOCv+OCseOCqg0KK+OCouODnCzjgqvjgqrjg6oNCivjgqLjg4Djg4Es44Kz44Km44OY44KkDQor44Ki44Kr44K144KrLOODnuOCteODkuODrQ0KK+OCouODnuOCteOCrSzjg5Ljg4fjg4gNCivjgqLjgqrjgq0s44Kr44Oz44K4DQor44Ki44K844Ks44OfLOOCt+OCsuOCq+OCug0KK+OCqOODieODjizjg5Xjg5/jg5Ljg60NCivjg4njgqQs44Kr44K644KqDQor44OV44K444KkLOODiOODouODkuODiA0KK+ODleOCuOOCpCzjgrXjg6bjg6oNCivjg5Xjgrjjg6Ljg4gs44OS44Ot44KtDQor44OV44K444Oi44OILOOCv+OCseOCtw0KK+ODleOCr+ODj+ODqSzjg47jg5bjg6bjgq0NCivjg5Xjgq/jgqrjgqss44OG44OE44OkDQor44OV44Kv44K344OeLOOCseODs+OCpOODgQ0KK+ODleOCteODpOODnizjgrPjgqbjgqTjg4ENCivjgrTjg4jjgqYs44Oo44K344OS44OtDQor44OP44Oe44OZLOOCqOOCpOOCuA0KK+ODj+ODiuODgCzjgrHjgqTjgrnjgrENCivjg4/jgrfjg6Ljg4gs44Oo44K344OS44OtDQor44OS44OTLOOCteOCq+OCqA0KK+ODkuODqeODhOOCqyzjgqvjgrrjg6bjgq0NCivjgqTjgqvjg6os44K/44Kr44Om44KtDQor44Kk44Kv44K/LOOCouOCreODkuOCsw0KK+OCpOODnuOCpCzjg4bjg4TjgrcNCivjgqTjgrfjg4/jg6ks44Ok44K544OS44OtDQor44Kk44K944OALOOCs+OCpuOCpOODgQ0KK+OCpOOCveOCtuOCrSzjg6jjgrfjgr/jgqsNCivjgrjjg7PjgrDjgqYs44Oo44K344Ki44KtDQor44OK44KkLOODn+ODjuODqw0KK+OCuOODp+OCpuODi+OCtyzjgqrjgrXjg58NCivjgqvjgrjjg4/jg6ks44Oo44K344Ki44KtDQor44Kr44Oe44K/LOOCv+ODhOODpA0KK+OCq+ODoeOCpCzjgqLjgq3jg6kNCivjgqvjg5/jg6Tjg54s44OG44OE44OkDQor44Kr44OI44KmLOOCv+ODhOOCuA0KK+OCq+ODiOOCpizjg4jjgrfjg6bjgq0NCivjgqjjg58s44OS44OH44Ki44KtDQor44Kr44Ov44Oi44OqLOODnuODouODqw0KK+OCreODoOODqSzjg6jjgrfjg5Ljg60NCivjgq3jg6Djg6ks44Kr44K644KqDQor44Kt44K344OZLOOCr+ODi+ODkuOCsw0KK+OCreOCt+OCq+ODryzjgqvjgrrjg6jjgrcNCivjgq3jgr/jgqzjg68s44K344Oz44Kk44OBDQor44Kt44K/44OK44KrLOODoeOCsOODnw0KK+OCs+ODkOODpOOCtyzjg57jgrXjg6bjgq0NCivjgrPjg5Djg6Tjgrcs44Ky44OzDQor44Kz44Kk44KxLOODiOOCpuOCvw0KK+OCs+OCpOOCuuODnyzjgqvjgrrjg6QNCivjgrPjgrjjg54s44K/44Kr44OS44K1DQor44Kz44OL44K3LOOCreODqOOCq+OCug0KK+OCs+ODpOODnizjgr/jgq/jg6QNCivjgq/jg4njgqYs44Kr44K644OkDQor44Kv44Oe44K144KtLOODqOOCt+OCouOCrQ0KK+OCr+ODreODgCzjg5Ljg63jgqvjgroNCivjgq/jgrXjgqss44K344Oz44K0DQor44Ko44Oz44OJLOOCseODs+OCuA0KK+ODnuOCqOOCq+ODryzjg57jgrXjg5Ljg60NCivjg57jg6vjgr8s44OS44OH44KtDQor44Oe44OE44K344K/LOOCt+ODs+OCtA0KK+ODn+OCr+ODiyzjg4jjg5/jgqoNCivjgqjjg7Pjg4ks44Oo44K344OO44OqDQor44Of44ONLOODpOOCueOCv+OCqw0KK+ODn+OCpuODqSzjgrfjg6XjgqbjgqTjg4ENCivjg5/jgr7jgrDjg4Es44K344On44Km44K4DQor44Ob44OzLOODqOOCt+OCouOCrQ0KK+ODn+OCuuOCt+ODnizjgrfjgrLjg6sNCivjgqjjg4As44K/44Kr44K3DQor44OK44Ks44KqLOOCouODhOOCtw0KK+ODiuOCq+ODoOODqSzjg4jjgqrjg6sNCivjg4rjgqvjg4vjgrcs44Om44Km44K4DQor44OK44Kr44OOLOODqOOCpuOCsw0KK+ODiuOCq+OCqizjgqvjg4Tjg6QNCivjg43jg6Ljg4gs44Oe44K144Om44KtDQor44OL44K344Kr44OvLOOCs+OCpuOCuA0KK+ODi+OCt+ODr+OCrSzjgrHjg7PjgqTjg4ENCivjg47jg4As44K/44Kr44KzDQor44OO44Kw44OBLOODn+ODiOOCtw0KK+OCquODgeOCouOCpCzjgrPjgqbjgrgNCivjgqrjgqrjg4/jgrcs44Ok44K544Oo44K3DQor44Kq44OOLOOCv+OCr+OCuA0KK+OCqOODnyzjg5Ljg4fjgqoNCivjgqrjgq/jg6Djg6ks44Oe44K144OS44OtDQor44Kq44Kv44OOLOODkuODh+ODn+ODhA0KK+OCqOODs+ODiSzjg6jjgrfjgr/jg4ANCivjgqrjgqrjg4vjgrcs44Ki44Kt44OpDQor44Kq44K244KtLOOCr+ODi+ODj+ODqw0KK+OCteOCqOOCrSzjg47jg6rjg6bjgq0NCivjgrXjgqzjg68s44OO44Oc44OrDQor44K144Kv44OeLOODnuOCteODmw0KK+OCteODiOOCpizjgrfjgrLjgqLjgq0NCivjgrXjg4jjgqYs44Of44OE44OS44OtDQor44K144OvLOOCreODqOOCv+OCqw0KK+OCu+OCrOODryzjgrPjgqbjgrgNCivjgrvjgq0s44Om44Kt44KqDQor44K744Oz44OALOOCseODs+OCuA0KK+OCt+ODluODpCzjgrfjg6XjgqbjgqTjg4ENCivjgrfjg5/jgros44Oo44K344OP44OrDQor44K344Oz44OH44OzLOOCouOCreODqOOCtw0KK+OCt+OCquOCvyzjg5Ljg4jjgrcNCivjgrfjg6Xjgq/jgr/jg4ss44OI44K344KqDQor44K544Ok44OeLOODkuODreOCsw0KK+OCueOCuuODoOODqSzjgqTjgrXjgqoNCivjgr/jgqvjgqrjgqss44Oo44K344Om44KtDQor44K/44Kx44Km44OBLOOCq+ODhOODjuODqg0KK+OCv+OCseOCpuODgSzjgqvjgrrjgrcNCivjgr/jg57jgqQs44Oe44K144OS44OtDQor44K/44OzLOOCq+OCuuODkuODrQ0KK+OCv+ODiuOCqyzjgrHjg7PjgrQNCivjgqjjg4jjgqYs44OG44Or44Ki44KtDQor44K/44OL44OS44OpLOOCq+OCuuODkuODrQ0KK+OCv+ODi+ODpOODnizjgq3jgq/jgqoNCivjgr/jgqrjgqss44K344Ky44KtDQor44K/44K344OeLOODnuOCteODpuOCrQ0KK+OCv+OCtuODryzjg5/jgq3jgqoNCivjg4jjgq3jgr8s44Kr44OE44Oo44K3DQor44OI44Of44K/LOOCt+OCsuOCrQ0KK+ODiOODn+OCvyzjgrHjg7PjgrgNCivjg4jjg5/jgr8s44Ki44Kt44KqDQor44OE44K444OZLOODkuODreOCsw0KK+ODhOOCuOOCq+ODryzjgrHjg7PjgqTjg4ENCivjgqjjg7Pjg4ks44K444Ol44Oz44KzDQor44Of44Ok44K244KtLOODnuOCreOCsw0KK+ODr+ODgCzjg6jjgrfjgr/jgqsNCivjg6/jgr/jg4rjg5ks44OS44Ot44OfDQor44Ok44Oe44OALOODiuOCquODpA0KK+ODpOODnuODgCzjgr/jg4DjgrcNCivjg6Tjg57jg4As44K144Ok44KrDQor44Ok44Oe44Kw44OBLOODjuODquOCqg0KK+ODpOODnuODouODiCzjgr/jgqvjgrMNCivjg6Tjg57jgqrjgqss44Kr44OE44OO44OqDQor44Ok44Oe44K344K/LOODjuODluOCqg0KK+ODpOODnuOCt+OCvyzjgqvjgrrjg5LjgrUNCivjg6Tjg57jgr7jgqgs44OS44Ot44Oe44K1DQor44Ok44KqLOODpOOCueODj+ODqw0KK+ODpOOCueODgCzjgrXjg4jjgrcNCivjg6jjg4Tjgr/jg4ss44Oo44K344KqDQor44Oo44K344OP44OpLOODkuODh+OCqg0KK+ODqOOCs+OCpuODqSzjg57jgrXjgqoNCivjg5Ljg6njgrss44K344Ky44KqDQor44Oe44OE44KkLOOCpOODgeOCv+ODreOCpg0KK+OCs+ODkOODpOOCtyzjgqvjgrrjg5LjgrUNCivjgrnjgrrjgq0s44K/44Kx44K3DQor44Kr44OI44KmLOODiOOCt+OCr+ODiw0KK+OCr+ODi+ODiOODoizjg47jg5bjg6bjgq0NCivjgqjjg7Pjg4ks44K044KmDQor44Kk44OI44KmLOOCteODiOODqw0KK+OCquOCq+OCtuOCrSzjg5Ljg4fjgqoNCivjg5Ljg63jg4/jgrcs44Ok44K544KqDQor44K144Kr44KtLOODqOOCpuOCsw0KK+ODn+OCrSzjg4jjgq3jgrMNCivjgq/jg57jgq0s44Oe44K144KqDQor44K/44Ok44OeLOODhuODhOOCqg0KK+OCquOCquODr+OCrSzjgq3jg4/jg4ENCivjg5/jg6fjgqbjg4njgqYs44Oe44K144OIDQor44Kr44OI44KmLOODkuODreODqOOCtw0KK+ODkOODkCzjg5/jgq3jgqoNCivjgqvjg43jgrMs44OP44Or44OS44KzDQor44Kz44Kw44OsLOODkuODreOCouOCrQ0KK+OCv+OCseODgCzjg6jjgrfjg47jg6oNCivjgqTjg4Hjg6Djg6ks44Oe44Oi44OrDQor44Kk44OI44KmLOODjuODnOODqw0KK+OCpuOCqOODj+ODnizjg5/jg47jg6sNCivjg4rjgqvjgqQs44Kz44Km44K4DQor44Kz44OQ44Ok44K3LOODnuOCteOCqg0KK+OCt+ODnuODgCzjg57jg4rjgqoNCivjg6HjgrDjg60s44K344Ky44OrDQor44Ok44Oe44OkLOODkuODreOCtw0KK+ODleOCuOOCvyzjg5/jg4TjgrANCivjg57jg4jjg5As44OB44OS44OtDQor44Kk44OI44KmLOODouODiOOCq+OCug0KK+ODiuOCq+OCpCzjgrfjgrrjgqoNCivjgqrjgqvjg4As44Oe44K144OS44OIDQor44OO44Oi44OILOODiOOCt+OCrQ0KK+ODiuOCrOOCt+ODnizjg6jjgqbjgrgNCivjg6jjg43jgqvjg68s44K/44Oi44OEDQor44Ov44K/44OK44OZLOODiOOCquODqw0KK+ODoOODqeODnuODhCzjg4jjg6Ljg4HjgqsNCivjgq3jgr/jg4ss44Om44Km44Kk44OB44OtDQor44Of44Kr44OfLOODkuODreOCtw0KK+OCouODgOODgSzjg5/jg4TjgqoNCivjgqTjg47jgqbjgqgs44Oe44K144Ki44KtDQor44Kq44Kr44OALOOCv+OCq+OCouOCrQ0KK+OCq+ODr+OCt+ODnizjg4bjg4TjgqoNCivjgrvjgq0s44Ki44Kt44OpDQor44K/44Kr44OP44K3LOODqOOCt+OCuA0KK+ODr+OCv+ODiuODmSzjg57jgrXjg6sNCivjgq/jg6rjg4/jg6ks44OB44OP44OrDQor44Ov44K/44OK44OZLOOCseOCpOOCueOCsQ0KK+ODleOCuOOCq+OCvyzjg5/jg4TjgqoNCivjg6jjgrfjg4gs44OO44Oq44KqDQor44Kr44Ov44K7LOOCquOCteODoA0KK+OCv+ODiuOCqyzjg57jgrPjg4gNCivjgqTjg57jgqQs44Kx44Oz44K4DQor44Kz44Og44OtLOODpuOCreODiOOCtw0KK+ODnuOCqOODgCzjgqjjgqTjgrQNCivjgrPjgqTjgrEs44Kq44K144OgDQor44Ov44K/44OK44OZLOODn+ODgeOCouOCrQ0KK+OCs+ODs+ODiSzjg5LjgrXjg4jjgrcNCivjgqTjgrfjgqQs44OS44K144OkDQor44Of44K344OeLOOCv+OCq+OCtw0KK+OCs+ODkOODpOOCtyzjg6jjgrfjgqvjgroNCivjg6Tjg57jgrfjgr8s44Kx44Oz44K4DQor44K/44OK44KrLOODquODp+OCpuOCvuOCpg0KK+ODpOODnuODgCzjg57jgrXjg4jjgrcNCivjgqvjg5/jg6Qs44Of44OB44Ok44K5DQor44Ok44Oe44Oi44OILOODquOCreOCqg0KK+OCt+OCquOCtuOCrSzjg4jjgqrjg6sNCivjg4rjgqvjg6Djg6ks44OB44Kr44K3DQor44K/44Kx44Oi44OILOOCteODgeOCqg0KK+ODgOOCseODpOODnizjg5Ljg63jg6bjgq0NCivjgqLjg6njgqvjg68s44K844Oz44K4DQor44Oo44Kz44K/LOODnuOCteODpuOCrQ0KK+ODiuOCq+ODoOODqSzjgqvjgrrjg5LjgrMNCivjgqLjg6njgqvjg68s44OI44K344KqDQor44Kq44Kq44Of44OBLOODnuOCs+ODiA0KK+ODnuODhOOCrSzjgqjjgqTjgq0NCivjgq/jgrfjg5Pjgq0s44K544Kx44OS44OHDQor44OL44OD44K/LOODhuODq+ODkuOCsw0KK+ODhOODnOOCpuODgSzjg5/jgq3jgqoNCivjgrXjgqTjg4jjgqYs44OS44Ot44Om44KtDQor44K/44Kx44Og44OpLOODiOOCt+ODkuODrQ0KK+OCv+ODiuODmSzjgqvjgrrjgqoNCivjg57jgqjjg4As44Oi44OI44Kv44OLDQor44K544Ks44OP44OpLOODhuODhOOCqg0KK+OCq+ODjeOCsyzjgrfjg6fjgqbjgrgNCivjg6Tjg57jgqbjg4Es44Oe44K144OS44KzDQor44Kr44Of44K244OvLOODkuODreODleODnw0KK+OCs+OCrCzjg4jjgq/jg5Ljg60NCivjg4Tjg6vjgrXjgq0s44K544OK44KqDQor44OS44Ks44K3LOODleODn+ODkuODrQ0KK+OCpOOCt+ODgCzjg6Tjgrnjg5Ljg60NCivjg4rjgqvjgqzjg68s44OP44Or44KqDQor44OG44Op44K344OeLOODkuOCteODj+ODqw0KK+OCreOCv+ODoOODqSzjgrfjg6Xjg7PjgrgNCivjg4/jg4Pjg4jjg6os44OS44OH44OfDQor44K144K144KtLOODqOOCt+ODkuODrQ0KK+ODm+OCqyzjgrHjg7Pjgr/jg63jgqYNCivjg47jg6Djg6ks44OG44Or44KqDQor44OP44Ok44OOLOOCq+OCuuOCqg0KK+OCouODs+OCtuOCpCzjgrfjg7PjgqTjg4ENCivjg5Xjg6vjg44s44Kt44Oo44OS44OHDQor44OL44K344Ov44KtLOOCr+ODiw0KK+ODj+OCu+OCrOODryzjg57jgrXjgqoNCivjgqTjg6/jgr8s44K/44Kr44Om44KtDQor44OI44OALOODkuODreOCouOCrQ0KK+ODiuOCq+ODoOODqSzjg57jgrXjg4gNCivjg5Xjg6vjgqTjgrcs44Oe44K544OfDQor44OK44Kr44Og44OpLOODleOCuOOCqg0KK+ODiuOCq+OCrOODryzjg5Ljg4fjgqoNCivjg4rjgqvjg54s44K/44OE44OkDQor44K544Ks44Ov44OpLOODnuOCueOCsw0KK+ODnuODhOODouODiCzjg4Tjg4jjg6ANCivjg4/jgrfjg6Ljg4gs44Oo44Km44K/44Ot44KmDQor44OK44Kr44OELOODpOOCueOCq+OCug0KK+OCteODiOOCpuODqizjgqLjgq3jg6kNCivjgqTjgq3jgr8s44Om44Kt44OO44OWDQor44Kt44Kv44OBLOOCv+OCseOCtw0KK+OCueODiCzjg57jgrXjg58NCivjgrfjg5Djgr8s44OS44K144OO44OqDQor44OK44Kk44OI44KmLOOCs+OCpuOCuA0KK+ODouODqizjgqvjgrrjgrMNCivjgqTjg4jjgqQs44Ki44Kt44OpDQor44Kk44OI44KmLOOCseODs+OCuA0KK+ODnuODhOOCtuOCrSzjg57jgrXjg47jg6oNCivjgqbjgqjjg44s44Of44OE44OO44OqDQor44Kr44K/44Kq44KrLOOCreODqOOCq+OCug0KK+ODkOODs+ODieOCpizjgr/jg4TjgqoNCivjgrXjgqTjg4jjgqYs44K444Ol44Oz44K4DQor44Kk44Ov44KkLOOCt+OCsuODqw0KK+OCt+ODouODpOODnizjg5/jg47jg6sNCivjgqLjgqvjg57jg6ss44Kq44K144OgDQor44K044OI44KmLOODj+OCuOODoQ0KK+ODnuODhOODgCzjgrnjgrnjg6ANCivjg43jgqzjg58s44OI44K344KqDQor44Ok44Oe44K344K/LOODnuOCteOCquODnw0KK+ODqOODjeODpOODnizjg6rjg6Xjgqbjg5jjgqQNCivjgqTjgrfjg6Tjg54s44OS44K144KqDQor44Ki44OZ44Kr44OvLOODrOOCpOOCuA0KK+OCpOODnuODoOODqSzjgrfjgrLjg6sNCivjgqTjg6/jg4rjgqws44Of44OO44OrDQor44Km44Ko44OALOOCr+ODi+ODkuOCsw0KK+ODleOCuOOCq+ODryzjg6bjgq3jgqoNCivjgr/jg6Djg6ks44Oo44K344OS44K1DQor44Kr44K344KkLOODnuOCteODiA0KK+ODqOODjeODgCzjg57jgrXjgqoNCivjg6jjgrPjg4Qs44Ki44Kt44KqDQor44Ki44K144KqLOODpuOCpuOCuA0KK+OCv+ODiuOCqyzjgrHjgqTjgrgNCivjgr/jg4rjgqss44K/44OA44OfDQor44Ok44K344KtLOODpOOCueODpuOCrQ0KK+OCq+OCpOOCrOOCpCzjgr/jgrHjgrcNCivjgr3jgqzjg5ks44Om44Kt44KqDQor44OV44Or44Kr44OvLOOCseODs+OCuA0KK+OCq+ODr+OCpuODgSzjg6bjgqbjgqTjg4ENCivjg5XjgrjjgqQs44OO44Oq44Om44KtDQor44Kk44Kx44OO44OkLOOCv+ODhOOCqg0KK+OCquODgSzjg47jg6rjgqoNCivjg4rjgqvjg6Ljg4gs44OK44Kq44OP44OrDQor44Ov44Kr44OQ44Ok44K3LOODj+ODrOOCqg0KK+OCouODqeOCrSzjg5Xjg5/jgqoNCivjg6Tjg5ks44OS44OH44KqDQor44K/44Kr44OP44K3LOODpOOCueODkuODrQ0KK+OCt+ODkOODjizjg5/jg4TjgqoNCivjgr/jgqzjgrfjg6ks44OI44K344KqDQor44K544Of44K/LOODhuODhOODpA0KK+OCteODiOOCpizjgrPjgqbjgrjjg63jgqYNCivjg4Hjg44s44K344Ky44OIDQor44Ok44Oe44OALOODpOOCueODkuODrQ0KK+OCpOOCrOODqeOCtyzjg47jg6rjg6jjgrcNCivjgqTjgrHjgqzjg58s44Kx44Oz44Kk44OBDQor44OV44OK44OALOOCv+OCq+ODpuOCrQ0KK+OCpOODjuOCpuOCqCzjgr/jgqvjg6jjgrcNCivjg4vjgrfjg6Tjg54s44OS44Ot44K3DQor44Kk44K344OP44OpLOODiOOCt+OCv+OCqw0KK+OCueOCuuOCrSzjgr/jgqTjg4ENCivjgrPjg6Ljg6rjg6Qs44Kr44K644KqDQor44OB44Ol44Km44K0LOODkuODreOCtw0KK+OCs+ODkOODpOOCtyzjgqrjgrXjg6ANCivjg5/jg6Tjg6Ljg4gs44OE44OI44OgDQor44OK44Kr44K/LOOCv+OCq+ODpuOCrQ0KK+OCpOODquOCv+ODiyzjgr/jgq/jgqoNCivjgqrjgqzjg68s44Om44Kt44OBDQor44Kq44ONLOOCseODs+OCuA0KK+OCs+ODnuODhCzjg57jgrXjgqLjgq0NCivjg5/jg47jg68s44OS44Ot44K3DQor44OV44K444Kr44OvLOODiuOCquODiA0KK+OCq+ODr+OCsOODgSzjg6Tjgrnjg5Ljg60NCivjg4Hjg5As44OI44K344OS44KzDQor44OK44Kr44OL44K3LOOCteODgOOCqg0KK+OCteOCr+ODnizjg5Ljg4jjgrcNCivjgr/jgrHjg57jgrUs44OI44K344Om44KtDQor44K744KtLOODqOOCpuOCpOODgQ0KK+OCteOCpOODiOOCpizjg5Xjg5/jgqoNCivjg5Xjgrjjg6Ljg4gs44Ok44K544KqDQor44Kq44Kw44OqLOOCv+ODhOOCuA0KK+OCpOOCt+ODkOOCtyzjgq3jg6jjgrcNCivjgqLjgrbjg58s44K344Ky44OrDQor44Kq44Ks44K144Ov44OpLOODiuOCquOCpOODgQ0KK+OCteOCpOODiOOCpizjg5Ljg63jgrcNCivjgr/jg4rjg5ks44Kx44Oz44K4DQor44Oi44Oq44Ok44OeLOOCt+ODpeOCpuODmOOCpA0KK+OCreOCv+OCtuODryzjg5Ljg4fjg4jjgrcNCivjgqvjg4rjgrbjg68s44Kr44OE44KqDQor44OP44Op44OALOODnuOCteODiA0KK+OCquOCr+ODpOODnizjgrXjg4jjgrcNCivjgrfjg5/jgros44K744Kk44K4DQor44Kk44OO44Oe44K/LOODpuOCreOCqg0KK+ODleODq+OCteODryzjgrvjgqTjgq0NCivjgr/jgrHjgqbjg4Es44K344Ot44KmDQor44Kq44Kq44OOLOODhOODiOODoA0KK+ODouODreOCquOCqyzjgrHjg7PjgrgNCivjgrfjg47jgrbjgq0s44OV44Of44Ki44KtDQor44OO44Kw44OBLOOCt+OCsuOCouOCrQ0KK+OCt+ODnuODgCzjgrPjgqbjgrgNCivjgqvjg6/jgrXjgq0s44Om44K/44KrDQor44Kq44Kq44Kr44OvLOODnuOCs+ODiA0KK+OCteODoeOCt+ODnizjg57jgrXjg5Ljg60NCivjg5vjgr3jgrjjg54s44Kr44K644OS44KzDQor44Ov44K/44OK44OZLOODiOODn+OCqg0KK+OCq+ODr+ODiuODnyzjg57jgrXjgqLjgq0NCivjgq/jgrXjg44s44Kx44Kk44K144KvDQor44OE44OB44K/LOODiOODouOCouOCrQ0KK+OCquOCquODj+OCtyzjgrPjgqbjgrgNCivjg47jg4As44Of44Kt44KqDQor44Ov44K/44OK44OZLOODkuOCteOCqg0KK+ODqOOCt+OCv+OCsSzjg6Tjgrnjg5Ljg60NCivjg5Xjgq/jgrfjg54s44Ki44Kt44OpDQor44Kk44Ov44OkLOOCv+OCq+OCqg0KK+OCteOCq+ODouODiCzjg6Ljg4jjg4/jg6sNCivjgq/jg5zjgr8s44K344On44Km44K4DQor44Kk44K944Ok44OeLOOCs+OCpuOCpOODgQ0KK+OCquOCquODjizjg5/jg4TjgqLjgq0NCivjgqLjg5ks44K/44OE44KqDQor44Kq44OA44Ov44OpLOODn+ODgeOCqg0KK+OCreOCpuODgSzjgrHjg7PjgrgNCivjgqTjgrfjgqvjg68s44OI44K344OV44OfDQor44Oo44K344OALOOCv+ODhOOCqg0KK+ODgeODo+ODkOOCv+OCsSzjg57jgrXjg5Xjg58NCivjgrXjgqvjgqQs44Oo44K344KqDQor44Kq44Kq44K/LOODqOOCpuOCuA0KK+ODiuOCq+ODjizjg57jgrXjg58NCivjg4/jg4As44K/44Kr44K3DQor44OK44Kr44Ok44OeLOOCuOODpeODs+OCuA0KK+OCteOCq+OCsOODgSzjgrHjg7PjgrgNCivjg4rjgqzjgrfjg54s44Ok44K544KqDQor44K144Ks44OpLOODiOOCt+ODkuODrQ0KK+OCq+ODr+ODjizjgr/jg4Djg6jjgrcNCivjgqvjg43jgrMs44Kk44K144KqDQor44OK44Kr44OALOODn+ODhOODqw0KK+OCouODnuODjizjgr/jgqvjgrcNCivjg6Tjgrbjgq0s44K344Ol44Km44K4DQor44OS44Op44Ku44OOLOOCq+OCuuOCqg0KK+OCv+ODkOOCvyzjgqTjg4HjgqoNCivjgq/jg4vjg6bjgq0s44Ok44K544OS44OtDQor44Kq44Kv44Km44OBLOODkuODreODjuODqg0KK+OCueOCruODouODiCzjg5Ljg4fjgrgNCivjg4rjgqvjg6Djg6ks44Oq44On44Km44K4DQor44K544Ku44K144KtLOODr+OCv+ODqw0KK+ODpOODnuOCt+OCvyzjgr/jgqvjg4bjg6sNCivjg47jg6Djg6ks44Kr44K644OfDQor44K344Oe44OALOODn+ODhOODqw0KK+ODleOCr+ODgCzjgqvjgrrjg47jg6oNCivjgrXjg4jjgqYs44OS44OH44KqDQor44Kq44Kv44Oc44OqLOODkuODreOCtw0KK+ODqOOCs+OCq+ODryzjg57jgrXjg58NCivjg4fjg7Pjg4As44Kt44Oo44K3DQor44OV44Kv44OK44KsLOOCueOCueODoA0KK+OCv+OCq+OCt+ODnizjg5/jg4Tjgq4NCivjgqvjg4jjgqYs44OG44OE44KqDQor44Kk44K344Kw44OtLOOCouOCreODjuODqg0KK+OCpOOCseODmSzjgq/jg4vjg6bjgq0NCivjgqrjgqrjg4Tjgqss44K544K544OgDQor44K344Of44K6LOODqOOCt+ODjuODqg0KK+OCueOCuuOCrSzjgr/jgqvjgqoNCivjg4Tjg6Qs44Oe44Kz44OIDQor44Km44OB44OALOODnuOCteOCv+OCqw0KK+OCquODgSzjgrHjg7PjgqTjg4ENCivjgqLjg6rjgqws44K/44Kx44K3DQor44OK44Kr44K344OeLOOCq+ODhOOCuA0KK+ODnuOCteOCrSzjg57jg4Tjg58NCivjg4rjgqvjgrfjg54s44Oe44K144KqDQor44Ki44K144OP44OpLOODnuOCteODqOOCtw0KK+OCtOODiOOCpizjg5LjgrXjgqoNCivjgqbjgqjjg57jg4Qs44OS44Ot44K3DQor44K144Kt44Oi44OqLOODqOOCt+OCouOCrQ0KK+ODqOOCt+ODgCzjg4Tjg4jjg6ANCivjg5Xjgrjjgr8s44Ok44K544Oo44K3DQor44Ok44Ku44K344K/LOODiOOCt+OCqg0KK+ODoOODreODleOCtyzjg57jgrXjg5Ljg60NCivjgqvjg6Hjg4As44Ko44Kk44Kk44OBDQor44Kk44Kr44OvLOODkuODreOCv+ODgA0KK+ODpOODnuOCtuOCrSzjg5Ljg63jgrcNCivjg4Tjg6vjg4/jgrcs44Oe44Kz44OIDQor44Of44OO44K344OeLOODjuODquOCqg0KK+OCreOCt+ODouODiCzjg57jgrPjg4gNCivjgr/jgrHjgrfjgr8s44Oe44K144K3DQor44OK44Kr44K/LOOCt+ODs+OCpOODgQ0KK+OCqOODs+ODiSzjgq3jg6jjgrcNCivjg6Ljg6rjg6Qs44Kx44Kk44Oh44KkDQor44Kv44Oc44K/LOOCueODn+OCqg0KK+ODiuOCquODj+ODqSzjg5Ljg63jgrcNCivjgq/jgrIs44Kx44Oz44K4DQor44Kr44K144OOLOODnuOCteODj+ODqw0KK+OCpOOCpOODoOODqSzjgr/jgqvjgrcNCivjgqrjgqrjgr8s44Oe44K144Om44KtDQor44K/44Kx44KzLOODkuODreODleODnw0KK+ODoOODqeOCs+OCtyzjg4jjgrfjgqoNCivjg6jjgrfjg4As44Kx44Oz44K4DQor44Ki44K144OOLOODqOOCt+OCouOCrQ0KK+ODqOOCt+ODgCzjg57jgrXjg4jjgrcNCivjg4/jg6Tjgrcs44OG44OE44Ot44KmDQor44K544K644KtLOOCv+ODhOODpA0KK+OCquODgCzjg6rjg6fjgqbjgqTjg4ENCivjg6Tjg57jgqbjg4Es44Kt44Oo44K3DQor44Kr44Ov44Kr44OfLOODhOODjeOCqg0KK+OCpuOCueODgCzjgrPjgqbjgrgNCivjgrXjg4jjgqYs44K344Oz44Kk44OBDQor44Kv44Op44K344OeLOOCt+ODs+OCuA0KK+ODnuOCuyzjg47jg5zjg6sNCivjgrPjg7Pjg44s44OS44Ot44K3DQor44Oe44OE44K244OvLOOCouOCreODqQ0KK+OCt+ODnuODgCzjgrfjg6XjgqbjgqTjg4ENCivjg6Tjg57jg6Ljg4gs44Oo44K344OO44OqDQor44Kq44Kq44Kv44OcLOOCseODs+OCuA0KK+OCquOCsOODqSzjgqvjgrrjg47jg6oNCivjgrXjgq/jg54s44Ko44Kk44K4DQor44OO44Kw44OBLOODkuODreODjuODqg0KK+ODkuODiuOCvyzjgrPjgqbjgqTjg4ENCivjg5XjgrjjgqQs44K344Ol44Oz44Kk44OBDQor44K544Ku44Oi44OILOODnuOCteOCtw0KK+ODhOOCq+ODj+ODqSzjgrTjg63jgqYNCivjg5/jg4Tjg4rjgqws44Oe44K144Ki44KtDQor44OK44Kr44Og44OpLOODnuOCteODqOOCtw0KK+ODpOOCuOODnizjgr/jgrHjgrcNCivjgqvjg5/jgr8s44K544K544OgDQor44OS44KsLOOCuOODpeODs+OCrQ0KK+ODn+ODiuOCrOODryzjg6jjgrfjg4bjg6sNCivjg4jjg58s44K/44Kr44KqDQor44K144Kr44Kt44OQ44OpLOODkuODreOCtw0KK+OCq+OCr+OCvyzjgqLjgq3jg5Ljg60NCivjg4Tjg4Hjg6Qs44OS44OH44Om44KtDQor44Og44Op44K/LOOCseODsw0KK+OCv+ODiuODmSzjgqLjgq3jg6kNCivjgrfjg6Ljg4As44Oo44K344OO44OqDQor44OE44Kr44Oi44OILOOCr+ODqeOCuA0KK+ODj+ODiuODj+OCvyzjg5Ljg4fjgqoNCivjgqvjg7Pjg4As44K344Oz44K4DQor44Kr44Ov44OALOODpuOCreOCqg0KK+ODqOOCt+OCpCzjg4Tjg43jgqoNCivjgq/jg6njg6Qs44Kt44OY44KkDQor44OG44Op44K344OeLOODkuODh+ODpuOCrQ0KK+OCreOCv+OCrOODryzjg6jjgrfjgqoNCivjgqTjg4cs44OI44K344OS44OtDQor44OE44OrLOODkuOCteOCqg0KK+OCpuODhOODjuODn+ODpCzjg4jjgrfjgqvjgroNCivjg4rjgqvjgrbjg68s44Oe44K144OS44OIDQor44OS44OALOODqOOCt+ODjuODlg0KK+ODm+OCveOCq+ODryzjg5Ljg4fjgrgNCivjg4HjgrDjgrUs44K744Kk44K4DQor44K944Km44OkLOODkuODreODnw0KK+ODpOODnuOCsOODgSzjgrPjgqbjg5jjgqQNCivjgrXjgqvjg4Ys44OV44Of44KqDQor44Ki44Ov44K/LOOCt+OCsuODqw0KK+ODr+OCq+ODkOODpOOCtyzjgqvjgrrjg5LjgrMNCivjgqjjg7Pjgrjjg6Xjgqbjgrgs44Oe44Kz44OIDQor44OO44Kw44OBLOOCs+OCpuOCpOODgQ0KK+OCq+ODr+ODoOODqSzjg57jgrXjgqoNCivjg6Ljg6rjg6Ljg4gs44Of44Kt44KqDQor44Oo44ON44OP44OKLOOCv+ODgOODkuODrQ0KK+OCuOODgCzjgqLjgq3jgqoNCivjgqbjgqjjg4As44Kx44Oz44K4DQor44K344OO44OP44OpLOOCpOOCteODoA0KK+OCv+OCq+ODpOODnizjg57jgrXjgqvjgroNCivjg6Tjg57jg6Djg60s44Oe44K144OO44OWDQor44Ov44KtLOOCuOODpeODs+OCsw0KK+OCouODnuODjizjg57jg4TjgqoNCivjg5vjgr3jgqvjg68s44OI44K344KqDQor44OI44Km44K044KmLOODkuODreODkuOCtQ0KK+ODiuOCqyzjg4jjg5/jgqoNCivjg47jg4As44K/44Kr44OO44OqDQor44Ok44Oe44K344K/LOODgeOCqOOCsw0KK+ODiuOCq+OCuOODnizjg5Ljg63jgrcNCivjg4rjgqzjgqrjgqss44Kz44Km44K4DQor44K344OW44OkLOODqOOCt+OCq+OCug0KK+OCu+ODquOCtuODryzjgrPjgqbjgr7jgqYNCivjg5Xjgrjjg6Ljg6os44K744Kk44K4DQor44OV44Kv44OALOOCv+ODhOODkuODrQ0KK+ODleOCuOOCvyzjgr/jgqvjg5LjgrUNCivjg6Tjg57jgrgs44OS44OH44Ki44KtDQor44Kz44OQ44Ok44K3LOOCpOOCuuODnw0KK+OCs+ODkOODpOOCtyzjgq3jg6jjgrcNCivjgrfjgrfjgq/jg6ks44Oo44K344Ki44KtDQor44Kz44Kw44OsLOODnuOCteODj+ODqw0KK+ODouODqizjg6jjgqbjgqTjg4ENCivjg4rjgqvjg6Djg6ks44OO44Oq44K/44KrDQor44Kk44Kk44K444OeLOODjuODquODpuOCrQ0KK+OCreOCv+OCrOODryzjg6jjgrfjg4bjg6sNCivjgr/jg6Djg6ks44K/44OA44Oo44K3DQor44OK44Ks44K344OeLOODpOOCueOCqA0KK+OCqOODjuOCrSzjgqTjgrrjg58NCivjgrXjg4jjgqYs44Oo44K344OO44OWDQor44Oe44OE44Oi44OILOODqOOCt+OCqg0KK+OCpuOCqOODgCzjg5Ljg63jgqoNCivjg5/jgrrjgr/jg4ss44Ki44Kt44OpDQor44Ki44Kr44K3LOOCv+ODhOOCqg0KK+ODiuOCq+ODouODiCzjgqrjgrXjg6ANCivjg4rjgqvjg6Tjg54s44OS44Ot44OO44OWDQor44OV44K444KkLOODpOOCueODkuODrQ0KK+ODiuOCq+ODpOODnizjgrfjg6fjgqbjgqTjg4ENCivjg6jjg43jg5/jg4Qs44OG44OE44KqDQor44K/44Kr44K7LOODiOOCt+OCqg0KK+ODr+OCv+ODiuODmSzjg5Ljg4jjgrcNCivjg5Xjgqvjgrbjg68s44OI44K344OO44OWDQor44Kr44Ky44Km44OpLOODnuOCteODnw0KK+OCt+ODs+ODieOCpizjgqvjg4TjgrgNCivjgrfjg5/jgros44K/44OE44OfDQor44K144Kr44K344K/LOODqOOCt+ODjg0KK+ODn+ODpOODoOODqSzjg4jjgqrjg6sNCivjgr/jg4rjgqss44Oe44K144OI44K3DQor44K/44Kr44Kk44K3LOOCueOCueODoA0KK+OCpOOCt+OCrOOCrSzjgrHjg7PjgrgNCivjgr/jgqvjg4As44Oo44K344Kr44K6DQor44K/44OG44Kk44K3LOOCq+OCuuODiuOCqw0KK+OCteOCq+OCvyzjg5Ljg4fjgqoNCivjg6jjgrPjg4/jgr8s44OI44K344OS44KzDQor44Kv44OkLOOCv+ODouODhA0KK+ODqOOCt+ODgCzjg57jgrXjg5Ljg4cNCivjgq3jgr/jg4As44OP44Or44KqDQor44Oo44K344OALOOCt+ODs+OCuOODreOCpg0KK+OCs+ODkOODpOOCtyzjgqvjgrrjg58NCivjg4rjg6rjgr8s44Of44OE44Oo44K3DQor44Kk44OM44KkLOODnuOCteODqOOCtw0KK+ODpOOCueOCq+ODryzjg5Xjg5/jgqoNCivjg47jgrDjg4Es44K544OK44KqDQor44K344On44Km44OALOOCpOODgeOCvuOCpg0KK+ODpOODnuODgCzjg4bjg6vjg5LjgrUNCivjg6/jgq/jg4As44OE44OI44OgDQor44Ki44OZLOOCteODgOODkuODrQ0KK+OCv+OCseOCq+ODryzjgr/jgqvjgqoNCivjgrXjg4jjgqYs44OS44OH44KtDQor44OP44OK44Kq44KrLOODqOOCt+OCqg0KK+OCquOCquODjizjg5Ljg4fjgqoNCivjgr/jg4rjgqss44Kx44Oz44K+44KmDQor44OE44OO44OALOOCouOCreOCqg0KK+ODiuODnuOCqCzjgrHjg7PjgrgNCivjgr/jgqvjg4/jgrcs44K/44OA44OS44K1DQor44OK44Kr44K444OeLOOCt+OCsuODqw0KK+ODiuOCq+ODoOODqSzjgq3jg5/jgrMNCivjgqbjg6rjgqYs44OP44Or44K/44KxDQor44OV44K444Kk44OvLOODleODn+ODkuOCsw0KK+OCteOCteOCrSzjgr/jgqvjgrcNCivjgq3jg6Djg6ks44Om44K/44KrDQor44K/44Kr44KuLOOCt+ODpeOCpuOCpOODgQ0KK+OCq+OCv+ODpOODnizjg5Ljg63jg4gNCivjgqTjgrDjg4Es44Kq44K144OgDQor44Ki44OZLOODhuODq+OCqg0KK+OCueOCuuOCrSzjgr/jgqvjg5Ljg60NCivjg5Ljg6ks44Kr44K644OS44OtDQor44OK44K044K3LOODkuODh+OCouOCrQ0KK+OCouODgOODgSzjgrHjg7PjgrgNCivjg6Djg6njg6Tjg54s44Oe44Oi44OrDQor44Kv44OL44Kr44K/LOOCueOCueODoA0KK+ODnuODhOOCpCzjg57jgrPjg4gNCivjgrPjgqTjg4cs44Of44OE44KqDQor44OS44Ot44K/LOODkuODreODpOOCuQ0KK+ODiOODn+ODiuOCqyzjg6jjgrfjgqoNCivjg6/jgq3jgr8s44OV44K444KqDQor44Km44Oh44Og44OpLOOCt+ODp+OCpuOCuA0KK+ODleOCsSzjg6jjgqbjgqTjg4ENCivjgqbjgqjjg57jg4Qs44Kr44OE44OfDQor44Oe44OE44K244KtLOODpOOCueODkuODrQ0KK+ODiuOCq+ODjizjg4Tjg6Ljg6sNCivjgrPjg4Djgqss44K/44Kx44KqDQor44OS44Ot44K/44OLLOOCseODs+OCuA0KK+OCv+OCq+ODj+OCtyzjgrPjgqbjgqTjg4ENCivjgrXjg44s44K444Ol44Oz44Kk44OB44OtDQor44K344Of44K6LOODqOOCt+OCq+OCug0KK+OCq+ODs+OCtuOCrSzjg4bjg6vjg6jjgrcNCivjgqrjgqrjgrXjgq8s44Kr44K644KqDQor44Ov44K344OALOODnuOCteODkuODhw0KK+OCr+ODi+ODouODiCzjg6Tjgrnjg57jgrUNCivjgrfjg63jgqvjg68s44Oe44Kz44OIDQor44Kr44Ov44OP44OpLOOCseODs+OCpOODgQ0KK+OCquOCqyzjg4Tjg43jgqvjgroNCivjgrPjg6Ljg6os44Oo44K344Ki44KtDQor44OP44Ok44K3LOOCt+OCsuOCouOCrQ0KK+OCq+ODjeOCsyzjgqTjgq/jgqoNCivjgqvjg4njgqTjgrEs44OK44Kq44Of44OBDQor44Kq44Kr44Og44OpLOOCuOODpeODs+OCpOODgQ0KK+OCquOCq+ODoOODrSzjgrjjg6Xjg7PjgqTjg4Hjg60NCivjgr/jg5bjg4Es44OK44Kq44KzDQor44Ok44Oe44Oi44OILOOCouOCreODjuODqg0KK+OCquOCquOCtSzjgr/jgqvjgrcNCivjgqTjg6rjgqgs44K344Oz44Kk44OB44Ot44KmDQor44K/44Kr44OPLOOCq+OCuuODkuOCsw0KK+OCv+OCpOODqSzjg4/jg6vjgqoNCivjg5/jg4rjg58s44Ok44K544Oe44K1DQor44Kk44Kx44OALOOCt+OCsuODqw0KK+OCouOCquOCrSzjg5Xjg5/jgqoNCivjg6Tjg57jgqbjg4Es44K4DQor44Oo44K344OP44OpLOODnuOCteODleODnw0KK+OCteOCteOCrSzjgqLjgq3jg5Ljg4gNCivjg5/jgrrjgr/jg4ss44OI44K344Kk44OBDQor44OS44Op44OOLOOCq+ODhOODpuOCrQ0KK+ODiuOCrOOCvyzjgqLjgq3jg6kNCivjgqvjgr/jg6Tjg54s44Kx44KkDQor44Kq44OALOODquODp+OCpuOCuA0KK+OCqOODjuODouODiCzjg6bjgqbjgq0NCivjgr/jgrHjg4rjgqss44K144Kr44KoDQor44Oe44OE44K244KtLOODkuODreOCtw0KK+ODnuODhOODkOODqSzjgrPjgqbjgrgNCivjg6Tjg57jgrfjgr8s44K744OE44KzDQor44Oh44Kw44OtLOODkuODreODqOOCtw0KK+OCquOCtuOCrSzjg5Ljg4fjg6bjgq0NCivjgqrjgqrjgqzjg58s44Kz44Km44Kk44OBDQor44Kq44Oe44KoLOOCt+ODs+OCpOODgQ0KK+OCreODgCzjgqvjg7PjgrgNCivjgqbjgqjjg44s44Kq44K144OgDQor44Kq44Kr44OALOOCq+ODhOODpuOCrQ0KK+OCq+ODiuOCteOCrSzjg4jjg5/jgqoNCivjg6Tjgqvjg5ks44OS44Ot44Om44KtDQor44OK44Og44OpLOODpuODn+OCsw0KK+OCpOOCpOOCuOODnizjg6Ljg4jjgqLjgq0NCivjgrXjgrXjgq0s44OO44OW44Om44KtDQor44Oi44OB44K644KtLOODqOOCt+ODjuODlg0KK+ODluODs+ODpCzjg4jjgrfjgqoNCivjgqrjgqvjg44s44Ok44K544KqDQor44K/44Kx44Km44OBLOOCteODiOOCtw0KK+OCpuOCqOODjizjg4jjgqrjg6sNCivjg5Xjgrjjg6Ljg4gs44OS44OH44OIDQor44Kr44Ov44Kw44OBLOODn+ODhOODj+ODqw0KK+OCv+OCreODouODiCzjg57jgrXjg47jg6oNCivjgqvjgr/jgqrjgqss44K344Ky44OrDQor44Kv44K144Kr44OvLOODiuOCquOCrQ0KK+OCouOCteOCpCzjg5Ljg4jjgrcNCivjg6Ljg6os44Ko44Kk44Kk44OBDQor44Kv44OcLOODqOOCt+OCr+ODiw0KK+OCouODs+ODieOCpizjgqTjg4Hjg63jgqYNCivjgqbjg6njg6Tjg54s44Kq44K144OgDQor44Kv44Oq44K/LOODqOOCt+OCqg0KK+OCpOODjuOCpuOCqCzjgr/jgrHjgrcNCivjgqvjg43jgqvjg68s44OS44OH44KqDQor44Km44Ko44Oi44OILOODquODp+OCpuOCvuOCpg0KK+ODiuOCq+OCqizjgrHjg7PjgqTjg4ENCivjgqrjgqvjg6Ljg4gs44OP44Or44KqDQor44OL44K344Og44OpLOOCreODqOOCtw0KK+ODpOODgCzjgqvjgrrjgqrjg58NCivjgq3jg4ks44Kq44K144OgDQor44Kq44Kr44OQ44Ok44K3LOODn+ODhOODkuODrQ0KK+OCq+ODr+OCt+ODnizjgrjjg6Xjg7Pjgr7jgqYNCivjg4/jgrfjgq0s44K/44Kr44Of44OBDQor44Of44Ok44Oi44OILOOCpOODgeODreOCpg0KK+ODiuOCq+OCqizjgr/jgqvjg5LjgrMNCivjg57jg4Tjgqrjgqss44Om44Kt44KqDQor44OS44OT44OOLOODkuODreODnw0KK+ODi+OCt+OCq+ODryzjgqvjgqrjg6sNCivjgqvjg5bjgr8s44Kx44Oz44K4DQor44Ov44K/44OK44OZLOOCreODqOOCtw0KK+ODpOODnuODjizjgrPjgqbjgqTjg4ENCivjgrXjgqTjg4jjgqYs44K344Ky44Of44OEDQor44K544K644KtLOODpuOCpuOCuA0KK+OCr+ODr+ODj+ODqSzjgrXjg4jjgrcNCivjg6Ljg6rjgr8s44OI44K344OS44OtDQor44OV44K444KkLOOCueODn+ODqOOCtw0KK+ODiuOCrOOCt+ODnizjg4Tjg43jg6bjgq0NCivjgqTjg4rjg6Djg6ks44Oe44K144OS44OtDQor44Kq44K244OvLOODkuODiOOCtw0KK+OCv+OCreODouODiCzjgq/jg4vjgqoNCivjg5/jg6Tjgrfjgr8s44OS44K144K3DQor44Oi44Km44OqLOODnuOCteODpuOCrQ0KK+OCpOODjuOCpuOCqCzjg5/jg4TjgqoNCivjg4rjgqzjg44s44Oi44OI44Ki44KtDQor44OP44Op44OILOODqOOCt+OCqg0KK+ODnuODn+ODpCzjg4jjgrfjgqvjgroNCivjg5Ljgqzjgrfjg5Djgr8s44OS44OH44KqDQor44OL44K344K/44OLLOOCteODiOOCtw0KK+OCv+OCq+OCryzjg47jg5bjg6bjgq0NCivjg4/jg4rjg4As44Of44OO44OrDQor44Ki44K144OOLOODn+ODgeOCqg0KK+ODkOODkCzjg5Ljg63jgrcNCivjgqTjg4jjgqYs44K344Oz44Kt44OBDQor44Kk44Kk44OALOOCseODs+OCtw0KK+OCs+ODj+ODpOOCq+ODryzjgr/jgrHjg5LjgrMNCivjg5Xjgrjjg6/jg6ks44Kr44OE44OfDQor44K344Ol44Kv44OqLOODpOOCueODkuOCsw0KK+ODpuOCv+ODiyzjgrHjg7MNCivjg6Djg43jgqvjg68s44Kk44Kv44KzDQor44Kr44Oz44OOLOODnuOCteODkuODrQ0KK+ODi+ODiCzjgqvjg4Tjg58NCivjgr/jg6Djg6ks44Oo44K344Ki44KtDQor44OK44Kr44K344OeLOOCteODiOOCtw0KK+OCquOCquOCvyzjg4HjgqvjgrMNCivjgqTjg47jgqbjgqgs44Oo44K344KzDQor44Kv44Oe44Oe44OrLOOCseODs+OCuA0KK+OCv+ODiuOCqyzjgrfjgrLjg6sNCivjg57jgqjjg4As44Oe44K144Ki44KtDQor44Ki44OfLOODjuODluOCqg0KK+ODn+ODiuODiCzjgqLjgq3jg6kNCivjg4vjgrfjg4As44Kr44K644KqDQor44Kk44K344OP44OpLOOCteODluODreOCpg0KK+ODiuOCq+OCt+ODnizjg4jjgrfjgqoNCivjgqTjgq/jgr8s44Ok44K544OS44K1DQor44Kq44KtLOOCv+ODgOOCqg0KK+OCq+OCrOODryzjgrfjg6XjgqbjgqTjg4Hjg63jgqYNCivjg5Ljg6njgqvjg68s44OI44K344KqDQor44Ok44Oe44K244KtLOODiOOCt+ODjuODqg0KK+OCr+ODnuOCrOOCpCzjgrPjgqbjgrjjg63jgqYNCivjgr/jgrfjg60s44Of44OE44K344KyDQor44K144OOLOODkuODh+ODnuOCtQ0KK+ODn+ODieODquOCq+ODryzjg5Xjg5/jg5LjgrMNCivjg4rjgqvjg6Djg6ks44Oe44K144OO44OqDQor44Oo44K344OfLOODkuODreOCsw0KK+OCpOODiuODnyzjg5Ljg4fjg4gNCivjg6/jgr/jg4rjg5ks44Kt44Oo44K3DQor44Kz44KsLOODiOODouODkuODhw0KK+OCueOCrOODr+ODqSzjg6Tjgrnjg5Ljg60NCivjgr/jgrHjgqbjg4Es44Oo44Km44Kk44OBDQor44Ko44OALOODqOOCt+ODreOCpg0KK+OCouODs+ODieOCpizjg5Ljg63jgqoNCivjgr/jg6vjgqQs44Om44K/44KrDQor44K044OI44KmLOODkuODreOCtw0KK+OCt+ODouOCrOOCrSzjgrfjgrLjg6sNCivjg4rjgqzjgr8s44Om44Kt44KqDQor44Ob44K344Kr44OvLOOCuOODpeODs+OCpOODgQ0KK+OCs+ODn+ODiuODnyzjg57jgrXjgqoNCivjgqvjgqws44Oo44KmDQor44OP44K844Kr44OvLOODjuODluOCqg0KK+ODgeODkCzjgrfjgrrjgqsNCivjgqbjg6njg44s44K144OI44K3DQor44Kz44Oz44OOLOODiOOCt+OCrQ0KK+OCs+ODkOODpOOCtyzjgqvjgrrjg6jjgrcNCivjg6Ljg6Ljgrss44Om44Km44KzDQor44OE44KyLOOCuOODpeODs+OCuA0KK+ODpOOCueOCs+ODgSzjg6Tjgrnjgr/jgqsNCivjg5vjgr3jgrbjg68s44K344On44Km44Kk44OBDQor44K544Ku44Ok44OeLOOCq+ODhOODpuOCrQ0KK+OCouODmSzjgr/jgrHjg6bjgq0NCivjgr/jg4rjgqss44OO44OW44Om44KtDQor44K744Kk44KxLOODpOOCueODkuODrQ0KK+ODhOOCsizjg57jgrXjg47jg5YNCivjg6/jgqvjg5Djg6Tjgrcs44Ki44Kt44KqDQor44Kq44Kq44Kv44OcLOOCv+OCq+OCqg0KK+OCquOCq+ODmSzjg5Xjg5/jgqoNCivjgqTjg6/jgqQs44OS44K144KqDQor44K/44OK44KrLOODhuODq+ODpuOCrQ0KK+ODpOODnuODouODiCzjg5/jg4TjgqoNCivjgr/jgqvjg6Tjg54s44OK44Kq44KtDQor44K/44K444OeLOODkuODh+ODjuODqg0KK+OCq+OCuuOCt+ODrSzjg57jgrXjg4/jg6sNCivjgrPjgqTjg4cs44K/44Kr44K3DQor44Kr44OiLOOCv+ODhOODjuODqg0KK+OCreOCv+OCuOODnizjg6jjgrfjg6bjgq0NCivjg4/jg57jg44s44K344Ky44OrDQor44Kk44Kk44Ok44OeLOODiOOCt+ODpuOCrQ0KK+ODpOODnuOCt+OCvyzjgrfjg6fjgqbjgqTjg4ENCivjgq3jgr8s44K344Ky44Om44KtDQor44Kk44K344K/44OLLOOCteODiOOCtw0KK+OCr+OCuOODoSzjgrXjg4DjgqoNCivjgq3jgrfjgqvjg68s44Kr44K644KqDQor44OK44Ks44OOLOODnuOCteODkuODrQ0KK+ODqOODoOODqSzjgr/jg4Djg47jg6oNCivjg4rjgqvjgrfjg54s44OI44K344Om44KtDQor44Oi44OqLOOCqOOCpOOCuA0KK+ODpOODnuOCuCzjg6jjgrfjgqvjgroNCivjgqrjgrzjgq0s44Oe44K144K/44KrDQor44Kk44OK44OALOODpOOCueOCtw0KK+ODj+ODpOOCuyzjgr/jgqvjgrcNCivjg5vjg7Pjg50s44K544K544OgDQor44Kq44Kq44OkLOOCq+ODs+OCuA0KK+OCreOCv+ODoOODqSzjgr/jgqvjgrcNCivjg4jjgrfjg7Ms44K144OI44OrDQor44K/44Kx44KkLOODpOOCueODleODnw0KK+OCquOCq+ODpOODnizjg47jg5bjgqoNCivjgqTjgrfjgrrjgqss44Kz44Km44K/44Ot44KmDQor44OP44K/LOODiOOCt+OCouOCrQ0KK+OCueOCrOODj+ODqSzjg6bjgqbjgrgNCivjgqTjg6/jg58s44Ok44K544KqDQor44Om44Oi44OILOODkuODh+OCqg0KK+OCreOCv+OCrOODryzjg6bjgr/jgqsNCivjgqTjg4/jg6ks44Om44Km44K+44KmDQor44OO44Og44OpLOOCpOODgeODreOCpg0KK+ODn+ODpOOCteOCqyzjgrHjg7PjgrgNCivjg6jjgrfjg4As44OI44Oi44Oo44K3DQor44OV44Kr44OALOOCv+OCq+OCtw0KK+ODleOCuOODr+ODqSzjgqvjgrrjg5/jg4QNCivjgq3jg4gs44OI44K344Ki44KtDQor44Km44Ko44Oi44OqLOOCpOOCteOCqg0KK+ODpOODnuOCq+ODryzjg57jgrXjg58NCivjgq/jg63jg4As44Of44OB44OtDQor44Kq44Kq44OE44KrLOODkuODreOCtw0KK+OCpuOCqOODgCzjg6bjgqbjgrgNCivjgr3jg44s44Of44Kt44KqDQor44OA44KkLOODiOODouODn+ODgQ0KK+OCt+ODs+OCvuOCpizjg5Ljg63jgqvjgroNCivjgqbjgqjjg4As44Om44K/44KrDQor44Ov44Kr44Of44OkLOOCq+OCuuODnw0KK+OCq+ODoOODqSzjg5Xjg5/jg4TjgrANCivjg5Xjg6vjgr/jg4ss44K/44Kr44Oe44K1DQor44Kr44OE44Km44OpLOOCq+ODhOODnw0KK+OCr+ODnuOCpCzjgrvjgqTjgrgNCivjg5Djg5As44OP44Or44OE44KwDQor44Kr44ON44OI44OiLOOCv+ODhOODnw0KK+ODoOODqeODj+OCtyzjg4jjgqrjg6sNCivjg4njgqQs44K/44Kr44K3DQor44OK44Of44Kr44OvLOOCt+OCsuODj+ODqw0KK+OCv+OCq+OCquOCqyzjgrHjg7PjgrgNCivjg57jg4Tjg6Ljg4gs44Oq44Ol44Km44Kk44OB44Ot44KmDQor44Ov44K/44OK44OZLOODqOOCvg0KK+OCv+ODgCzjg57jgrXjg5Ljg60NCivjgqLjg6rjg54s44Oo44K344OG44OrDQor44OK44Ks44OOLOODiOOCt+ODjuODqg0KK+ODpOODjizjg4bjg6vjg6bjgq0NCivjgqTjgrXjgqss44Om44Kt44OS44OtDQor44Kk44OI44KmLOODiOOCr+OCpOODgQ0KK+ODpOODnuOCtuOCrSzjgrnjg5/jgqoNCivjgq/jg44s44Kr44K644KqDQor44K344OQLOOCseODs+OCuA0KK+OCreODoOODqSzjgqLjgq3jg6kNCivjgrnjg5/jg4As44Kr44K644KqDQor44Oi44OI44Ks44Kk44OILOODkuODreOCq+OCug0KK+ODi+ODryzjgrfjgrLjgrMNCivjgr/jgrHjgqbjg4Es44Om44Km44K4DQor44K/44Og44OpLOOCq+OCuuODqOOCtw0KK+ODnOOCpuOCvyzjgrHjgqTjgrnjgrENCivjgqvjg4njg6Qs44Om44Km44K0DQor44OP44Op44OALOODqOOCt+ODjuODlg0KK+ODn+ODhOOCpOOCtyzjg5Ljg63jgrcNCivjgqTjg47jgqbjgqgs44Kx44Kk44K544KxDQor44Og44Op44OP44K3LOODnuOCs+ODiA0KK+ODi+OCt+OCq+ODryzjgrfjg7PjgqTjg4ENCivjg57jgrnjg4As44Kz44Km44K4DQor44Kq44Kq44K/LOOCr+ODi+OCqg0KK+ODleOCr+OCpCzjg57jgrXjgqoNCivjgqvjgrLjg6Tjg54s44Kx44Oz44K4DQor44OK44Ks44OE44KrLOOCv+ODgOODpuOCrQ0KK+OCr+OCteODjizjgrfjgrLjgqoNCivjgrPjgrjjg54s44OS44Ot44Om44KtDQor44Kv44Op44K/LOOCv+ODgOOCtw0KK+OCv+OCseOCpuODgSzjgrHjg7PjgqTjg4Hjg60NCivjgqTjgrHjg4As44Ki44OE44KqDQor44K/44Kr44OOLOODpuOCv+OCqw0KK+OCr+ODqeODpCzjgrfjg7PjgqTjg4ENCivjgqrjg44s44OE44OI44OgDQor44OK44Kr44OALOOCuOODpeODs+OCvuOCpg0KK+ODiOOCr+ODouODiCzjgr/jgqvjgqLjgq0NCivjgqrjgqrjg4/jgrcs44OI44K344OV44OfDQor44Ok44Oe44OALOOCouOCreODqQ0KK+ODj+ODs+ODgCzjg4bjg4TjgqoNCivjgqTjgrfjg4/jg6ks44K744Kk44K4DQor44Oo44K344OP44OpLOOCteODiOOCtw0KK+OCv+ODhuOCpOOCtyzjg4jjgrfjg5LjgrMNCivjgqTjg4jjgqYs44K344OV44OfDQor44K144OI44KmLOOCv+OCq+OCqg0KK+OCquOCquOCr+ODqSzjgrfjg6fjgqbjgrjjg63jgqYNCivjg4rjgqvjgrnjgrgs44Oo44Km44Kk44OBDQor44K/44Kk44OpLOODkuODreOCtw0KK+OCreODkuODqSzjg4/jg6vjg5LjgrMNCivjg4rjgqvjgrjjg54s44OS44OH44OE44ONDQor44Ok44Oe44K244KtLOODiOOCreOCqg0KK+ODiOODk+OCvyzjgqLjgq3jg6kNCivjg4rjgqvjgrbjg68s44OP44Or44KqDQor44OL44K344OP44OpLOOCq+OCuuOCqg0KK+ODoeOCsOODrSzjgrjjg6Xjg7PjgrgNCivjg57jg6vjg6Tjg54s44Kz44Km44K+44KmDQor44Kt44Kv44OBLOODkuOCteODjuODqg0KK+OCouOCquOCrSzjg6jjgrfjg58NCivjgq3jg4Pjgr/jgqss44K/44Of44KqDQor44Ok44K544KkLOODpuOCreOCsw0KK+OCpOODgeODnuODqyzjg6jjgrfjgqLjgq0NCivjg6Tjg57jgrbjgq0s44OI44K344Om44KtDQor44K544Ks44OP44OpLOOCuOODpeODs+OCpOODgQ0KK+ODiOODn+ODiuOCrCzjg6jjgrfjg5LjgrMNCivjg4Hjgq7jg6os44Ko44Kk44K444Ot44KmDQor44Kq44Kq44OQLOODpuODquOCsw0KK+ODnuODhOOCpCzjg5Xjgq/jg58NCivjg5Ljg6njg6Tjg54s44Oe44K144OS44OtDQor44Ok44Oe44Og44OpLOODn+ODhOODjuODlg0KK+OCquOCquODhyzjg57jgrXjg58NCivjg6jjgrfjg4rjgqws44OB44Kr44KoDQor44Kz44K444OeLOOCv+OCseODjuODqg0KK+ODiOODn+ODiuOCrCzjg4HjgqjjgrMNCivjgrXjgqws44OG44OE44OkDQor44OP44OpLOODpuOCpuOCuOODreOCpg0KK+ODiOODn+ODqOOCtyzjgr/jgqvjgrcNCivjg6jjgrfjg4As44K944OO44KoDQor44OS44Op44OQ44Ok44K3LOODkuODreOCq+OCug0KK+ODnuODhOODiSzjg5Ljg4fjgqoNCivjgqTjg57jg5Xjgq8s44Om44Km44K3DQor44Kt44Oo44K7LOOCt+ODs+ODpA0KK+ODj+ODiuODluOCtSzjgrnjgrnjg6ANCivjg4Hjg5As44OI44K344OO44OqDQor44Ok44Oe44K244KtLOODquODpeOCpuOCuA0KK+ODiuOCq+ODj+ODqSzjgrHjg7PjgrgNCivjgqrjg44s44Kz44Km44OY44KkDQor44Km44Ko44Oe44OELOOCq+ODqOOCsw0KK+OCouOCreODpOODnizjg57jgrXjgqLjgq0NCivjg4jjgr/jg4ss44Oo44Km44Kk44OBDQor44Oo44ON44OALOODnuOCteODkuODrQ0KK+ODleODq+OCr+OCtSzjgrXjgqvjgqgNCivjg5Ljg63jg6Qs44OO44Oq44OS44OtDQor44Oo44K344OALOOCt+ODs+OCteOCrw0KK+OCq+ODjeOCsyzjgrfjgrLjg6sNCivjg4rjgqzjgr8s44Oe44K144OP44OrDQor44Kk44OZLOOCt+ODs+OCuA0KK+OCu+OCreODjSzjg57jgrXjg6bjgq0NCivjgqrjgqvjg4As44Oe44K144OP44OrDQor44Kr44OK44KkLOOCq+ODs+OCu+OCpA0KK+OCteODiOOCpizjg5Ljg4jjgrcNCivjgrXjgqvjgq3jg5Djg6ks44Oo44K344KqDQor44Kk44Oe44KkLOODn+ODj+ODqw0KK+ODkuODoeOCuCzjgrfjg7Pjgr7jgqYNCivjgqrjgq7jg4/jg6ks44Oe44K144Oo44K3DQor44K/44Kx44Og44OpLOOCv+OCq+ODjuODqg0KK+ODiOOCquODpOODnizjgr/jgqvjgrcNCivjgq3jgr/jg4/jg6ks44K/44Kr44OS44K1DQor44Kq44Kq44K144KrLOOCq+ODhOODkuOCsw0KK+OCquOCquOCs+OCpuODgSzjgqvjgrrjg57jgrUNCivjgr/jgqvjgqos44OO44Oq44KzDQor44Km44OJLOODiOOCt+ODreOCpg0KK+OCpuODjizjgq3jg7PjgrQNCivjg5Xjgrjjgq0s44OS44Ot44OfDQor44K144OI44KmLOODiOOCt+OCqg0KK+OCpOOCveOCrOOCpCzjg57jgrXjg58NCivjgqvjg6njgrXjgq0s44Oo44K344KqDQor44Ok44Oe44OALOOCv+ODouODhA0KK+ODr+ODgCzjgqjjg4TjgqoNCivjgrfjg5Djgr8s44OI44K344KqDQor44K344Kq44K244KtLOOCv+ODhOOCqg0KK+OCt+OCrCzjg5/jg4Tjg47jg5YNCivjgq/jg6rjgr8s44Of44OB44KqDQor44OP44K344Oi44OILOODqOOCt+ODreOCpg0KK+ODqOOCt+ODoOODqSzjgr/jgqvjgrcNCivjg5/jg6Tjgrbjgq0s44OS44Ot44OO44OqDQor44Kt44K/44Ks44OvLOOCreODj+ODgeODreOCpg0KK+OCquODgOOCsSzjg4Hjgqvjg6kNCivjgrnjgrrjgq0s44Ki44Kt44OpDQor44Ok44Oe44Kk44K3LOOCreODqOOCouOCrQ0KK+OCquOCvOOCrSzjg5Ljg63jgrcNCivjgr/jgqvjgqQs44K144OI44OfDQor44Kr44ON44KzLOOCseODs+OCuA0KK+ODj+ODqeODgCzjg5Ljg4fjg6bjgq0NCivjgrfjg57jg4As44Kx44Oz44K144KvDQor44Ok44OK44KuLOOCv+OCseOCqg0KK+OCueOCuuOCrSzjgr/jgqvjg5Ljg4gNCivjgr/jgqvjg4/jgrcs44Ok44K544KqDQor44Kq44Kw44Oq44Ok44OeLOODiOOCquODqw0KK+ODr+OCv+ODiuODmSzjg47jg5bjg6bjgq0NCivjg6Tjg57jg6Djg6ks44Kx44Oz44K4DQor44K/44Kr44OP44K3LOOCv+ODgOODkuODhw0KK+OCt+OCquOCuOODnizjgqvjgqrjg6sNCivjg4Tjg6vjgqrjgqss44OI44Kq44OrDQor44Kk44OI44KmLOODiOOCt+ODn+ODgQ0KK+ODnuODhOOCpuODqSzjgrvjgqTjgq0NCivjg6Tjg57jg6Ljg4gs44K/44Kr44KqDQor44Kv44Oe44OfLOODpuOCpuOCvuOCpg0KK+OCseODs+ODqOOCtyzjgr/jgqvjgrcNCivjg6Tjg57jgqvjgrIs44Oo44K344Ki44KtDQor44K044OI44KmLOODkuODreOCqg0KK+OCv+OCseOCpuODgSzjg57jgrXjg4jjgrcNCivjg4/jg6Tjgrcs44Kr44K644Om44KtDQor44Kk44K344OQ44K3LOODiOOCt+ODpuOCrQ0KK+OCpOODiizjg6rjg6fjgqYNCivjgqTjg47jgqbjgqgs44K/44Kr44Om44KtDQor44OL44K344Kr44OvLOODkuODh+OCqg0KK+ODj+ODs+ODgCzjgq3jg6jjgrgNCivjgr/jg4bjg5Djg6Tjgrcs44Kr44K644Oo44K3DQor44Kq44K344OeLOOCr+ODi+ODkuOCsw0KK+OCt+ODkOOCvyzjg4/jg6vjgq0NCivjg5/jgqbjg6ks44Ki44OE44K3DQor44Kz44Kr44K0LOOCq+OCuuODjuODqg0KK+OCpOOCpOODgCzjg6bjgr/jgqsNCivjgr/jgrHjgrnjgqgs44Kr44K644OfDQor44Kk44Ks44Op44K3LOODhuODhOODpA0KK+ODnuOCueODpOODnizjg6jjgrfjgqoNCivjgrXjgq/jg6Tjg54s44Kr44K644KqDQor44K144Kv44Op44KkLOOCseODsw0KK+OCv+ODnuODqizjg57jgrXjgqoNCivjgqTjg57jg4vjgrcs44Of44OO44OrDQor44Kq44Ks44OvLOODnuOCteODkuODiA0KK+ODj+OCruODr+ODqSzjgq3jg6jjgrcNCivjgqrjgqrjgq/jg4ss44OS44OH44OS44KzDQor44Kk44Kx44OALOOCu+OCpOOCpOODgQ0KK+ODnuOCqOOCuOODnizjgqLjgq3jg6kNCivjgqTjg6/jgqQs44Kr44OE44OfDQor44Ok44Oe44OALOODnuOCteOCrQ0KK+OCueODgCzjg57jgrXjg4gNCivjg4jjgq3jg68s44Kq44K144OgDQor44OP44Ok44K3LOODpuOCpuOCpOODgQ0KK+OCv+OCseODouODiCzjgqvjgrrjgqoNCivjgqvjg7Pjg5Djg6Tjgrcs44Oe44K144KqDQor44OI44K244OvLOODhOODiOODoA0KK+OCv+ODhuODjizjgrfjg7PjgrQNCivjgqvjg7Pjg5ks44Kx44Kk44KzDQor44Kq44Kv44OALOODqOOCt+ODiA0KK+OCv+ODouODiCzjg4jjg5/jgqoNCivjg4rjgqzjgqQs44OO44OW44K/44KrDQor44Kq44K244OvLOOCt+ODs+OCpOODgQ0KK+OCteODiOOCpizjg6Tjgrnjg4rjg6oNCivjgrPjg7Pjg4ks44Ki44Kt44KqDQor44ON44Ku44K3LOOCv+ODgOOCtw0KK+OCv+ODiuOCqyzjg4bjg4TjgqoNCivjgrPjg6Djg60s44Oq44On44Km44Kk44OBDQor44Oo44K344OALOODiOODqOODleODnw0KK+OCpOOCpOOCuOODnizjg5Ljg63jg58NCivjg4vjgqTjg5vjg6os44Kr44K644KqDQor44Kz44Oi44Oq44OkLOODqOOCt+OCv+OCqw0KK+OCt+ODs+ODieOCpizjg5Ljg4fjgrrjg58NCivjg6Tjg44s44Oo44Km44Kk44OBDQor44K/44OK44KrLOODnuOCteODiOOCtw0KK+ODj+OCruOCv+ODiyzjg63jgq/jg63jgqYNCivjgrPjgrnjgq4s44OA44Kk44Kt44OBDQor44Kk44OZLOODjuODquOCqg0KK+OCq+ODiuOCtuODryzjg5Ljg63jgrcNCivjgr/jg4As44K/44OA44OS44K1DQor44OK44Ks44K/LOODquODpeOCpuOCueOCsQ0KK+OCq+ODnuODgCzjg5Ljg63jgrcNCivjgr/jgqvjg4/jgrcs44Oo44K344KqDQor44Kq44Kk44OHLOODnuOCs+ODiA0KK+OCv+OCq+OCr+ODqSzjg5Ljg63jgrcNCivjg6Tjgrnjg57jg4Qs44K544K544OgDQor44Oe44OrLOODqOOCt+ODkuOCtQ0KK+OCr+ODnOOCvyzjg47jg5zjg6sNCivjgr/jg5Djgr8s44Kx44Kk44Kk44OBDQor44Oi44Oq44K/LOODjuODquOCqg0KK+OCr+ODi+ODiOODoizjg4Tjg43jgrgNCivjgqLjgrXjg4zjg54s44OS44Ot44Kr44K6DQor44Ob44K344OKLOODpOOCueOCqg0KK+ODjuOCtuODryzjg4/jg6vjg5LjgrUNCivjg57jg4Tjg6Djg6ks44K344Oz44Kk44OBDQor44OS44Op44Kr44K/LOOCq+OCuuOCqg0KK+ODkuODqeODnizjg4/jg6vjgqoNCivjgrfjg5/jgros44K/44Kr44K3DQor44Oo44Kz44Kr44OvLOODr+OCv+ODqw0KK+OCreOCr+ODgSzjgqLjg4TjgrcNCivjgq/jg63jgrXjg68s44Kk44K144OgDQor44K/44Kx44Km44OBLOODhuODhOOCqg0KK+ODkuODqeOCrCzjg6jjgqbjgrgNCivjgrXjgqTjg4jjgqYs44OO44Oq44KqDQor44Km44OB44Oc44OqLOOCs+OCpuOCpOODgQ0KK+OCpOODiuODoOODqSzjg6jjgrfjg4/jg6sNCivjgqrjgrXjg4As44K/44Kr44K3DQor44K544Ku44Ok44OeLOOCv+OCq+ODiOOCtw0KK+OCpOODnuOCuizjg6Tjgrnjgr/jg4ANCivjgqbjg6njg44s44Oe44K144Oo44K3DQor44Oi44OB44K644KtLOOCq+OCuuOCqg0KK+OCueOCrOODryzjgrfjgrLjg6sNCivjgqTjgrHjg4As44OI44K344KqDQor44K/44OK44KrLOODj+ODq+OCqg0KK+OCteOCpOODiOOCpizjgr/jg4TjgrgNCivjg5Xjgrjjgr8s44OI44K344Of44OBDQor44Of44Ok44ONLOODhOODiOODoA0KK+OCq+ODnuODgCzjg5/jg47jg6sNCivjg43jgq7jgrcs44Oo44K344OO44OqDQor44Kq44Kv44Ks44OvLOODpuOCreOCqg0KK+ODj+ODpOOCtyzjg5LjgrXjgrcNCivjg5Djg5As44OO44OW44OS44KzDQor44Ok44Oe44Oi44OILOODhOODiOODoA0KK+OCqOODs+ODiSzjg47jg5zjg6sNCivjgr3jg6Hjg6Qs44Kq44K144OgDQor44Ki44Op44KkLOODqOOCt+ODpuOCrQ0KK+OCouODmSzjgqLjgq3jg6kNCivjg4Hjg5As44K/44OE44KqDQor44K/44Kr44Ok44OeLOODn+ODjuODqw0KK+ODpOODnuOCrSzjg6bjgqbjgrgNCivjgr/jgrHjgqbjg4Es44K344Ky44OV44K1DQor44K/44Kx44OZLOOCv+OCq+OCqg0KK+OCouODgOODgSzjg6jjgrfjgqLjgq0NCivjgr/jgqvjgrfjg54s44Ki44Kt44OpDQor44Oo44Kz44Ok44OeLOODjuODquODiuOCqg0KK+OCt+ODqeOCpOODgSzjg57jgrXjg6sNCivjgq/jg4njgqYs44K344Ky44KqDQor44K544K644KtLOOCreODqOOCtw0KK+OCv+OCq+OCt+ODnizjgr/jgqvjgrcNCivjg6Tjg57jgqzjgr8s44Of44OO44OrDQor44Oo44K344OALOOCv+OCr+OCqg0KK+ODn+ODpOOCq+ODryzjgrHjg7PjgrgNCivjgrXjgrXjgq0s44Og44OE44OfDQor44Kk44OH44Km44OpLOOCq+OCuuOCsw0KK+OCv+ODiuOCqyzjg5Ljg63jgrcNCivjgqTjg4jjgqYs44Ki44OE44OS44KzDQor44Kq44Kq44OELOOCv+OCseOCtw0KK+ODleOCqOOCrSzjg4jjgrfjgqvjgroNCivjgrfjg6Ljg5XjgrUs44Ki44OE44K3DQor44Of44Ok44Kr44OvLOODnuOCteOCv+OCqw0KK+ODj+OCt+ODouODiCzjgr/jgqvjgrcNCivjg6Tjg57jgr7jgqgs44Kz44Km44K4DQor44OL44Kk44Kv44OpLOODjuODluOCqg0KK+ODr+OCv+ODiuODmSzjg4jjgrfjg47jg6oNCivjg6Djg63jg5Xjgrcs44Kr44OKDQor44Kr44Oz44OALOOCq+ODhOODnuOCtQ0KK+OCr+ODieOCpizjgrHjgqTjgrMNCivjgr/jgqvjg4/jg6ks44Ov44K/44OrDQor44Kq44Kr44OALOOCseOCpOOCuA0KK+ODieOCpCzjgrXjg4jjg6sNCivjgr/jg4rjg5ks44Oe44Oi44OrDQor44Kz44Og44OtLOOCseODs+OCpOODgQ0KK+ODouODquODpOODnizjg5Xjg5/jgrMNCivjgqLjg6njg57jgq0s44OO44OW44KqDQor44Kz44K344OZLOOCq+OCuuODrQ0KK+OCteODjizjg47jg5bjg5Ljg60NCivjgqrjgqvjg4As44Oo44K344Oe44K1DQor44OV44K444Ov44OpLOOCreODp+OCpuOCsw0KK+ODnuODhOOCqizjgqvjgrrjg58NCivjgr/jg4rjgqss44Of44ON44KqDQor44Kt44OP44OpLOODiuOCquOCrQ0KK+ODi+OCt+ODj+OCvyzjg6bjgqYNCivjg4vjgrfjg6/jgq0s44Oo44K344K/44KrDQor44Kq44Kr44K244KtLOODkuODreOCq+OCug0KK+ODleOCuOODr+ODqSzjgqrjgrXjg6ANCivjg6Tjgrnjg4As44Om44Kr44KzDQor44Kq44KrLOOCreODp+OCpg0KK+ODm+OCveODjizjgrfjgrLjgqoNCivjgqLjgqvjgrcs44K/44Kv44OeDQor44OK44Kr44KkLOOCs+OCpuOCpOODgQ0KK+ODpOOCueODgCzjgq3jgq/jgrgNCivjg4bjg6njg6Djg6ks44OV44Of44K/44KrDQor44Kv44Oc44K/LOODqOOCt+ODpuOCrQ0KK+OCs+ODi+OCtyzjgrfjgrLjg58NCivjg47jg6Djg6ks44Ki44Kt44OpDQor44Kk44OO44K7LOOCr+ODi+OCsw0KK+ODr+OCv+ODiuODmSzjg6Tjgrnjg5LjgrMNCivjg4vjgrfjgqos44Kr44K644OS44K1DQor44Oi44Of44KtLOOCs+OCueOCsQ0KK+OCueODiuODgCzjg5Ljg63jgr/jgqsNCivjgr/jgrHjgqbjg4Es44K144OB44KzDQor44Ki44Kt44K7LOODkuODreOCtw0KK+OCt+OCquOCvyzjg6jjgrfjg5LjgrMNCivjgq3jg4ks44Oo44K344Ki44KtDQor44Kk44K344Ov44K/44OqLOODiOOCt+OCqg0KK+OCt+ODqeOCrOODnyzjgr/jgqvjg5Ljg60NCivjgqbjg4Hjg4rjgqws44OS44OH44OkDQor44K/44OK44KrLOOCt+ODs+OCpOODgeODreOCpg0KK+OCr+ODreOCteOCrSzjg4bjg4TjgqoNCivjgqrjg4jjgrcs44Om44Km44Kk44OBDQor44K144OI44KmLOODnuOCteOCqg0KK+OCueOCuuOCrSzjg57jgrXjg6bjgq0NCivjg5Ljg63jgr8s44K144Kk44K4DQor44Ok44OO44Kr44OvLOOCuOODpeODs+OCpOODgQ0KK+OCteOCq+ODouODiCzjg57jg6Ljg6sNCivjgrPjg6Djg60s44Oe44K144OIDQor44Kk44Oe44K/LOODqOOCpuOCpOODgQ0KK+ODm+OCveODpCzjgqvjgrrjgr/jgqsNCivjg4bjg6njgrXjgqss44Oe44K144Om44KtDQor44Ob44Oz44OeLOOCq+OCuuOCqA0KK+OCq+OCueOCrCzjg5Ljg63jgrfjgrINCivjg57jg4Tjg4DjgqTjg6ks44Ko44Kk44K4DQor44Kr44Ov44Kr44OfLOOCt+ODpeOCpuOCuA0KK+ODjeOCtOODrSzjgrfjg7PjgrgNCivjg5Xjgq/jg4As44Ko44Kk44K+44KmDQor44K544K644KtLOODkuODreOCtw0KK+ODiOODnuODhCzjg6jjgrfjgrgNCivjgqTjg44s44K/44OE44Ot44KmDQor44K544K644KtLOOCuOODpeODs+OCuA0KK+OCouOCteOCpCzjgqvjgrrjgqoNCivjg4/jg6ks44K/44Kr44OO44OqDQor44Ob44K3LOOCr+ODi+OCq+ODhA0KK+ODiuODq+OCq+ODryzjgqvjgrrjg47jg6oNCivjgqrjg4As44K/44Kr44Ki44KtDQor44Kq44OQ44OKLOOCt+OCsuODpOOCuQ0KK+OCv+ODi+OCtuODryzjg57jgrXjg5Ljg60NCivjg5Xjgrjjgqrjgqss44K/44Kr44K3DQor44K044OI44KmLOOCv+OCq+OCuA0KK+OCs+ODrOODiuOCrCzjg4jjgrfjgqLjgq0NCivjgr/jgqvjg4/jgrcs44OA44Kk44K544KxDQor44K/44Kr44OpLOODn+ODhOODj+ODqw0KK+OCquOCquOCr+ODryzjgq3jg6jjgrcNCivjgr/jg4rjgqss44OS44OH44Kr44K6DQor44K144OI44KmLOODjuODquOCqg0KK+OCt+ODnuODjOOCrSzjgrHjg7MNCivjgr3jg40s44OS44Ot44K3DQor44K/44OK44KrLOOCq+OCuuOCqg0KK+ODleOCuOODoOODqSzjgrPjgqbjgrgNCivjgrTjg4jjgqYs44K344Oz44K4DQor44OP44K344Oi44OILOODpOOCueOCv+OCqw0KK+ODkuODq+ODnizjgqLjgq3jg6kNCivjg5vjgrfjg5As44OS44OH44OoDQor44Kr44Oh44Ov44OqLOODkuODreODnw0KK+OCquOCr+OCpCzjg5Ljg63jgrcNCivjg5LjgrXjg6Ljg4gs44Kq44K144OgDQor44K544K644KtLOOCreODqOOCtw0KK+ODkuODqeOCteODryzjg6jjgrfjgr/jgqsNCivjgq3jgr/jg4cs44OO44Oq44Ki44KtDQor44OV44Kv44OALOOCq+OCuuODkuOCtQ0KK+OCt+OCquOCtuOCrSzjgrHjgqTjgrgNCivjg6Djg4jjgqYs44Om44K/44KrDQor44OL44K344Kq44KrLOOCteODluODreOCpg0KK+ODhOODnOODjizjg5Ljg63jg5LjgrUNCivjg4rjg4Tjgqbjg6Es44OI44K344Oe44K1DQor44K/44OL44Ks44KtLOODkuODreOCouOCrQ0KK+OCquOCquOCueOCrCzjgqvjgrrjgqoNCivjgqbjg4Hjg4As44OS44OH44KqDQor44Kr44OI44KmLOOCqOOCpOOCuA0KK+OCteOCteOCrSzjg5Ljg4fjgqoNCivjgqvjgrfjg54s44OO44Oq44KqDQor44Ki44Kr44K144KrLOOCq+OCuuOCqg0KK+OCq+ODr+OCq+ODnyzjg6jjgqbjgqTjg4ENCivjgrfjg4ks44K/44OE44OkDQor44Ok44Oe44Km44OBLOODqOOCt+ODkuODhw0KK+OCq+ODjizjg6bjgr/jgqsNCivjg4/jg6ks44Kk44Kv44KqDQor44Oe44OE44OQ44OpLOOCseODs+OCuA0KK+ODhuODqeOCq+ODiSzjgqvjgrrjg5Ljg60NCivjgrfjgqrjgr8s44Oo44K344OO44OqDQor44Kq44Kr44OALOODkuODiOOCtw0KK+OCr+ODreODgCzjg6rjg6fjgqYNCivjg6Ljg6rjg6Ljg4gs44OV44K444KqDQor44K744KtLOODkuODreOCtw0KK+OCueOCuuOCrSzjgqLjgq3jg6kNCivjgr/jgrHjgq/jgrUs44OS44Ot44K3DQor44K/44Ks44K344OpLOODjuODluOCqg0KK+OCs+ODkOODpOOCtyzjgqrjgrXjg6ANCivjgrXjgqjjgq0s44Kx44Kk44K4DQor44K/44OE44K244OvLOOCreODn+OCouOCrQ0KK+OCteOCpOODiOOCpizjg5Ljg4jjgrcNCivjg5Xjg6vjgqvjg68s44Kt44Oo44K3DQor44K/44Og44OpLOODleODn+ODiA0KK+ODhOODquODpCzjg57jg4HjgqoNCivjgrXjgqvjgrDjg4Es44OV44Of44OI44K3DQor44OV44Kv44K344OeLOODqOOCpuOCpOODgQ0KK+OCquOCquOCq+ODryzjg5Ljg63jgrcNCivjg5Xjgrjjgr8s44K344Ol44Oz44K544KxDQor44Kr44Ov44Kw44OBLOOCq+ODhOODjuODqg0KK+ODiOOCreOCquOCqyzjg4bjg6vjgqoNCivjg4rjgqvjg44s44OI44Of44KqDQor44Kk44OO44Km44KoLOODnuOCteODpuOCrQ0KK+OCr+ODi+ODiOOCtyzjgr/jgq/jg63jgqYNCivjgrXjgqvjgr8s44Kz44Km44Kk44OBDQor44Oi44Oq44Kr44OvLOODhOODjeOCqg0KK+ODjuOCsOODgSzjg5Ljg63jgrcNCivjgq/jg5zjgr8s44Og44OE44OfDQor44OK44Kr44Kq44KrLOOCv+ODhOOCqg0KK+ODjuODleOCuCzjgrHjgqTjgrgNCivjg6Ljgqzjg6os44Ko44Kk44K4DQor44Oe44Ko44K244KtLOOCpOOCteOCqg0KK+OCquOCquODhOOCqyzjgrfjgrLjg6jjgrcNCivjg5/jgrrjgr8s44Kx44Oz44OO44K544KxDQor44K544Ku44Ok44OeLOODqOOCt+ODkuOCtQ0KK+OCq+OCrOODryzjg6jjgrfjgr/jgqsNCivjg4vjgrfjg4/jg6ks44Oo44K344OV44OfDQor44OG44K644KrLOOCt+ODs+OCpOODgQ0KK+OCt+OCquODnyzjg5/jg4TjgqoNCivjgqrjgqrjg4/jg6ks44K/44OA44Ki44KtDQor44Ki44K144Kv44OpLOOCouOCreODkuODrQ0KK+OCt+ODnuODgCzjg4bjg4Tjg6QNCivjgrfjg57jgqvjg68s44K544K544OgDQor44OP44K344Oi44OILOODkuODiOOCtw0KK+OCpuOCuizjgrfjgrrjgqoNCivjgr/jgqvjgq/jg68s44Oe44K144OO44OWDQor44Of44OB44K/LOOCt+ODpeODs+OCpOODgQ0KK+OCpuOCqOODgCzjgqbjgqTjg6oNCivjgrfjgqws44K/44Kr44OE44KwDQor44Kk44Kx44OfLOODn+ODhOOCsA0KK+ODouODqizjg57jgrXjgqLjgq0NCivjgqvjgrfjg6Ljg4gs44Oe44K544OfDQor44Kk44K344OP44OpLOODgeOCqOOCsw0KK+OCq+ODjeOCsyzjg4HjgqjjgrMNCivjgr/jgqvjg4/jgrcs44OI44K344KqDQor44Oi44OI44KkLOODnuOCteOCqg0KK+OCs+OCv+OCsSzjg5/jg4HjgqoNCivjgqvjgrXjgqQs44K544Ko44KzDQor44Kr44OI44KmLOODjuODquOCsw0KK+OCs+OCr+ODnCzjgrHjgqTjgrMNCivjg6/jgqvjg6Tjg54s44K344Ky44OkDQor44K144OK44OALOODnuOCteODkuOCsw0KK+OCteOCq+OCvyzjg4jjg5/jg6jjgrcNCivjg47jg6Djg6ks44Of44OE44KqDQor44OP44Ok44Kr44OvLOOCq+OCuuODnw0KK+ODn+ODpOOCtuOCrSzjgrfjgrLjgqoNCivjgqrjg4vjg4Tjgqss44Kx44Oz44K4DQor44Kk44OHLOOCquOCteODoA0KK+ODiuOCrOOCteOCsyzjgr/jgqvjg47jg6oNCivjgqTjg4jjgqYs44Of44OB44K/44KrDQor44Kr44ON44K/44KxLOODhuODq+OCouOCrQ0KK+OCr+ODnOOCvyzjgq3jg6jjg6bjgq0NCivjgqLjg6rjg54s44Kx44Kk44KzDQor44Ov44Kr44KqLOODkuODreOCtw0KK+OCpOOCt+OCtuOCqyzjgr/jgqvjg6bjgq0NCivjgqrjgr8s44K844Oz44OP44OB44Ot44KmDQor44K144Kr44Oi44OILOOCseOCpOOCtA0KK+OCquOCquODm+ODqizjg6bjgq3jgqoNCivjgrfjg7Pjgr/jg4ss44OI44K344Ki44KtDQor44Km44OB44Ok44OeLOOCv+OCq+OCtw0KK+ODkuODqeOCvyzjg5/jg4rjgrMNCivjgqLjg6rjgr7jg44s44K144OI44KzDQor44Kk44OI44KmLOOCv+OCq+OCtw0KK+OCouOCquODpOOCrizjg57jgrXjgqLjgq0NCivjg4rjgqvjg6Djg6ks44K144OA44KqDQor44Kk44Kk44OALOODn+ODgeOCqg0KK+ODiuOCt+OCrSzjgqvjgqrjg6sNCivjg6Djg6njgrss44Kr44K644KqDQor44Oe44OE44KqLOOCseOCpOOCtA0KK+OCteODiOOCpizjgrfjg63jgqYNCivjgqLjgrXjg4zjg54s44K344Oz44Kk44OB44Ot44KmDQor44OV44K/44OfLOODpOOCueODnuOCtQ0KK+ODleODiuODiCzjgq/jg4vjg58NCivjg5Xjgrjjgr8s44Om44Of44KzDQor44OV44Or44Kr44OvLOOCv+OCseOCqg0KK+ODleODiuODj+OCtyzjg5LjgrXjg6QNCivjg5bjg4jjgqYs44OS44Ot44Om44KtDQor44Kr44OO44KmLOOCq+ODhOODkuODrQ0KK+OCquOCreODhCzjg5Ljg63jgr/jgqsNCivjgr/jgqvjgq7jg68s44Kk44K144OgDQor44Ob44K344OOLOODgeOCqOOCsw0KK+ODi+OCt+OCuOODnizjgq/jg4vjg5Ljg60NCivjgqvjg57jgr8s44OB44Ki44KtDQor44OE44K444Oi44OILOODiOOCt+OCpOODgQ0KK+ODj+ODiuODgCzjgrfjg7PjgrgNCivjg5Ljg63jgrss44Oe44K144KqDQor44OL44K344OALOODkuODiOOCtw0KK+OCpuOCqOOCrSzjg4jjgrfjgqvjgroNCivjg6jjgrfjg44s44Kt44Oo44KqDQor44Kt44K/44Og44OpLOOCu+OCpOOCpOODgQ0KK+OCt+ODn+OCuizjg5/jg4HjgrMNCivjgqTjgrfjgrbjgq0s44OS44K144K3DQor44OP44Ok44K3LOODn+ODhOODjuODlg0KK+OCreOCr+ODgSzjg5Ljg4fjg5Xjg58NCivjgqrjgqvjg4ks44OE44Kw44KqDQor44Kz44Og44OpLOOCt+OCsuODqw0KK+ODj+OCt+ODouODiCzjg4Tjg4jjg6ANCivjg4rjgqvjg4Tjgqss44K/44Kx44K3DQor44Kq44Kq44Kk44K3LOODnuOCueODqOOCtw0KK+OCr+ODreODgCzjg57jgrXjg6jjgrcNCivjg4rjgqvjgqQs44Oe44K144OfDQor44Kt44K/44K244OvLOODjuODquOCouOCrQ0KK+OCreOCt+ODgCzjgrfjgrLjg6sNCivjgqvjg4rjg57jg6ss44Oe44Kz44OIDQor44Ki44Op44KkLOOCt+OCuuOCqg0KK+ODleOCv+ODhOOCrizjg4/jg6vjgqoNCivjgq3jgq/jg4Es44OI44K344KqDQor44Kk44Kk44OALOODpOOCueOCtw0KK+ODiuOCq+OCqCzjgqLjgq3jgqoNCivjg5Ljg6njg57jg4Qs44Of44OO44OrDQor44OL44K344Kq44KrLOOCuOODpeODs+OCvuOCpg0KK+OCteODiOOCpizjgrHjgqTjgq0NCivjg6Ljg6os44OP44Or44KqDQor44Ob44K344OOLOOCpOOCteOCqg0KK+ODpOODnuOCsOODgSzjg47jg5bjg5Ljg60NCivjgqbjgrnjgqQs44Oo44Km44Kk44OBDQor44Oe44OE44OQ44OpLOOCqOOCpOOCpOODgQ0KK+OCouODquOCteOCqyzjg57jgrXjgq0NCivjg4vjgrfjgqos44Ko44Kk44K4DQor44Kt44OALOODhuODhOOCqg0KK+ODpOODjizjg6bjgqbjgqTjg4ENCivjgqvjg4jjgqYs44Kx44Oz44K/DQor44Ov44K/44OK44OZLOODgeODkuODrQ0KK+ODj+ODpOOCtyzjg6TjgrnjgqoNCivjg6/jgr/jg5ks44Oo44Km44Kk44OBDQor44Ov44K/44OK44OZLOODnuOCteOCqg0KK+ODpuOCsOODgSzjg5Ljg63jgrMNCivjg6Tjg57jg6Ljg4gs44OS44K144K3DQor44K144Kk44OI44KmLOODleODn+OCqg0KK+OCq+OCpOOCuizjgrHjg7PjgqTjg4ENCivjg5vjgrfjg44s44OS44OH44KqDQor44K344OO44OP44OpLOODjuODluODkuODrQ0KK+OCquOCquODjOODnizjg57jg6Ljg6sNCivjg5/jg68s44K/44Kx44K3DQor44Ob44Oq44Og44KtLOODqOOCt+ODng0KK+OCpOOCt+OCv+ODhizjgrfjg7PjgqTjg4Hjg63jgqYNCivjg5/jg5Xjg40s44Kt44Oo44K3DQor44Oi44Of44KtLOODnuOCs+ODiA0KK+ODj+OCu+OCrOODryzjg4bjg6vjgqoNCivjgrnjgq7jg6Tjg54s44K344Ol44Oz44K4DQor44OE44Kv44OALOOCv+ODgOOCtw0KK+OCouODgOODgSzjg5Xjg5/jg47jg6oNCivjg4fjgrbjg68s44K/44OA44Oo44K3DQor44Kq44K/LOOCreODqOOCtw0KK+OCteODiOOCpizjgqLjgq3jg6kNCivjgrvjgq3jgrDjg4Es44Of44OE44OO44OqDQor44Kz44Kv44OW44OzLOODqOOCt+OCrQ0KK+ODm+OCt+ODiizjg6bjgq3jg5Xjg58NCivjgqbjg6njg44s44Kz44Km44Kk44OBDQor44K/44Kx44Og44OpLOODpOOCueODkuODrQ0KK+ODiOOCr+ODiuOCrCzjg5Ljg4jjgrcNCivjgq/jg6rjg4/jg6ks44OS44OH44OIDQor44Kq44Kv44Og44OpLOOCuOODpeODs+OCpOODgQ0KK+OCteOCpOODiOOCpizjgrfjg7PjgqTjg4Hjg63jgqYNCivjg57jg4Tjgrfjgr8s44Kx44Kk44K+44KmDQor44K/44Kx44OALOODn+ODgeOCsw0KK+ODi+OCt+OCrSzjg6Ljg4jjg6jjgrcNCivjgqbjg6Hjg4As44K144Kr44KoDQor44Ob44Oz44OALOOCpOOCr+OCqg0KK+OCq+ODoizjgqvjgrrjgqbjg58NCivjgqbjgrfjg4As44OE44Oo44K3DQor44K144Kk44OI44KmLOODkuODreODhOOCsA0KK+ODj+OCueODgCzjg57jgrnjgqoNCivjg5/jgqvjg68s44Oo44Km44KzDQor44Km44OB44OALOOCr+ODi+ODkuOCsw0KK+ODi+OCt+OCtuOCrSzjgrfjg6fjgqbjgqTjg4ENCivjgqTjgqzjg6njgrcs44K344On44Km44K4DQor44Ov44K/44OK44OZLOOCouOCteOCsw0KK+OCt+ODnuODoOODqSzjgrPjgqbjgrgNCivjgqvjg4jjgqYs44OO44Oq44KzDQor44Kr44Ov44OZLOOCt+ODp+OCpuOCsw0KK+OCteOCq+ODouODiCzjg6jjgqbjgrgNCivjg6Ljg6rjgrfjgr8s44Oi44OI44Oo44K3DQor44K544Ks44OP44OpLOODquODp+OCpg0KK+ODiOODn+ODpOODnizjgqvjg4Tjg5LjgrMNCivjg5Xjgq/jg4As44OE44Oo44K3DQor44Kq44OI44K244KtLOOCouODhOODkuOCsw0KK+ODleOCuOODouODqizjgr/jgqvjgqoNCivjgrPjg6Ljg6os44Kt44Oo44Om44KtDQor44OV44Kv44OK44KsLOODnuOCteOCouOCrQ0KK+ODn+ODpOODj+ODqSzjgqvjg4Tjg47jg6oNCivjgrjjg7Pjg44s44Of44OE44KqDQor44Kt44Og44OpLOOCqOOCpOOCsw0KK+OCpOODiuOCrOOCrSzjg6bjgq3jgrMNCivjg6Ljg6os44OO44Oq44KqDQor44Ov44K/44OK44OZLOOCq+ODhOODjuODqg0KK+ODhOOCuOODouODiCzjgqLjgq3jgqoNCivjg6Ljg7Pjgrzjg7Ms44OS44Ot44Om44KtDQor44OK44Og44OpLA0KK+ODpOODnuODouODiCzjgqjjg6rjgrMNCivjg4/jgrfjg6Ljg4gs44OS44Ot44KtDQor44Ki44Op44KkLOODpOOCueODjuODqg0KK+ODleOCuOOCpCzjg5Ljg63jgrcNCivjg6/jgr/jg4rjg5ks44OG44OEDQor44OP44K744Ks44OvLOODiOODqOOCq+OCug0KK+OCt+OCsuODpOOCuSzjgqjjgqTjgqTjg4ENCivjg6Tjg57jg47jgqQs44K/44Kv44OeDQor44Kz44OQ44Ok44K3LOODnuOCteODqw0KK+ODiuOCrOOCpCzjg6jjgrfjgqLjgq0NCivjgrXjg68s44OO44OW44KqDQor44Oe44OE44Oo44K3LOODn+ODgeOCqg0KK+OCteOCpOODiOOCpizjgqvjgqrjg6sNCivjgqvjg47jgqYs44OS44Ot44Ki44KtDQor44Km44K344K044OhLOODpOOCueOCqg0KK+OCpOOCt+OCpCzjgrPjgqbjgrgNCivjgqbjgrnjgq0s44Kk44K644OrDQor44K544OJ44KmLOODqOOCt+OCqg0KK+OCq+OCuOODpOODnizjgr/jgqvjgq3jg58NCivjgqrjgqrjg5As44OS44OH44KtDQor44K544OvLOODleODn+OCqg0KK+OCpOODr+OCvyzjg6Tjgrnjg4gNCivjg4jjgqYs44OP44K444OhDQor44Kq44Kk44Kr44OvLOODkuODiOOCtw0KK+ODkuODqeOCpCzjgqjjgqTjgrMNCivjgr/jgqvjgrfjg54s44OI44K344KqDQor44OV44Of44OOLOODkuODreOCtw0KK+OCquOCq+OCtuOCrSzjg47jg6rjgqoNCivjgrfjg6njgq0s44Oe44K144OE44ONDQor44K/44Kx44Oi44OILOODpuOCpuOCuA0KK+ODnuODhOODouODiCzjg47jg6rjg5LjgrMNCivjg57jg4Tjg5Djg6ks44OS44Ot44K3DQor44Ko44OT44OP44OpLOOCs+OCpuOCuA0KK+ODleOCuOODjizjg6TjgrnjgqoNCivjg5Xjgqvjg6Qs44Oe44K144OS44OtDQor44Ob44K344OOLOOCv+OCq+OCtw0KK+OCq+OCv+ODpOODnizjgrXjg4HjgrMNCivjgqLjg6njgqvjg68s44Oe44K144Om44KtDQor44K/44Kr44OOLOOCq+OCuuOCqg0KK+OCr+ODreODgCzjg6Tjgrnjg5Ljg60NCivjgqTjg4jjgqYs44K444Ol44Oz44KzDQor44Kz44K244KkLOODn+ODhOODqw0KK+OCpuOCqOODpOODnizjgq3jg6jjgrcNCivjg4/jg4Pjg4jjg6os44OI44K344KtDQor44OL44K344Og44OpLOODiOOCt+OCv+OCqw0KK+ODleODq+OCq+ODryzjgr/jgqvjgqoNCivjg6Tjgrfjgq0s44K344Ky44KtDQor44Ob44OJ44Ok44OeLOODkuODh+OCqg0KK+OCqOODiOOCpizjg4jjg6Ljg5LjgrMNCivjg6Tjg57jg6Ljg4gs44Oe44K144OI44K3DQor44K744Kt44Kw44OBLOOCpOOCteODoA0KK+OCv+ODiuODmSzjg5Ljg4fjg4jjgrcNCivjgr/jgrHjg4As44OI44K344Om44KtDQor44K344Oz44K/44OLLOOCq+OCv+OCtw0KK+OCr+ODnOOCvyzjgq3jg6jjgrcNCivjgrnjgq7jgqrjgqss44K144OI44OfDQor44Ok44Oe44K244KtLOOCteODgOODjuODqg0KK+OCteOCpOODiOOCpizjg5Ljg4fjgq0NCivjgqbjgqjjg44s44OI44K344K/44KxDQor44K344Oe44Oi44OILOOCs+OCueOCsQ0KK+OCreOCv+ODjizjg57jgrXjg58NCivjgqTjgqTjgrrjgqss44Oq44On44Km44KzDQor44Kk44K644OfLOOCreODp+OCpuOCuA0KK+ODj+ODqeODgCzjgr/jgqvjg6bjgq0NCivjgqrjg4HjgqLjgqQs44K144OI44K3DQor44Ok44Oe44Km44OBLOOCouOCreODkuODrQ0KK+OCqOOCsOODgSzjg5Ljg4fjg4Tjg40NCivjg4/jgq7jg6/jg6ks44K/44Kx44K3DQor44K/44Kr44KuLOOCv+OCseODjuODqg0KK+OCquOCr+ODouODiCzjg57jg4rjg5YNCivjg57jg4Tjgrbjgq0s44Oq44On44Km44Kk44OBDQor44Kk44OB44Og44OpLOODpuODquOCsw0KK+ODn+ODpOOCteOCqyzjg4jjg6LjgrMNCivjg5/jg6Tjgr8s44K744Kk44Kk44OBDQor44OK44Ks44KqLOOCt+ODp+OCpuOCreODgQ0KK+OCpOODr+OCqizjg57jgrXjgrcNCivjg5Xjgqvjgrbjg68s44K344Ky44OrDQor44K/44Og44OpLOODnuOCteOCqg0KK+OCreODquODpeOCpizjgr/jg4DjgqoNCivjg57jg4Tjgrbjgq0s44Oo44K344KqDQor44Kr44OI44KmLOODhuODq+ODn+ODhA0KK+ODn+OCvyzjg4rjgqrjg4gNCivjgqTjgrfjgqQs44Kk44K144OgDQor44Kq44Kr44Oi44OILOODhuODhOOCqg0KK+OCpuOCqOOCquOCqyzjg47jg5bjgqoNCivjgq3jg6fjgqbjg44s44Oe44K144OIDQor44Kr44ON44KzLOODpuOCpuOCvuOCpg0KK+OCteOCr+ODqeOCpCzjgq3jg6fjgqbjgrMNCivjg6/jgqvjg5Djg6Tjgrcs44OI44K344OS44OHDQor44Ov44K/44OK44OZLOODqOOCt+ODkuODrQ0KK+OCouOCteOCpCzjg4vjgrnjgrENCivjgqvjg4njg44s44Om44Km44K4DQor44Ok44Oe44K244KtLOODiOODqOODkuODrQ0KK+OCouODr+ODjizjg4jjgrfjg6bjgq0NCivjgqrjgqzjg68s44K/44Kr44OO44OqDQor44K844Oz44KxLOODiOOCt+OCqg0KK+ODleOCr+ODouODiCzjg4jjg6Ljg5LjgrMNCivjgqrjg4ks44Kr44K644OO44OqDQor44Oi44Oq44Oi44OILOOCv+OCq+OCqg0KK+ODiOOCpuODnOOCpizjgqvjgrrjg58NCivjgqvjgr/jg6Tjg54s44Oe44K144K3DQor44OK44Ks44Oe44OELOOCv+OCq+OCouOCrQ0KK+ODr+OCv+ODmSzjg6jjgrfjg58NCivjgqTjgrfjgq0s44Om44KmDQor44Kk44OK44Ks44OvLOODpuOCpuOCsw0KK+ODiuOCq+ODjizjgr/jgqvjg4/jg6sNCivjg4vjgrfjg6Tjg54s44Ok44K544Oo44K3DQor44K344Oi44OALOODn+ODqOOCsw0KK+OCt+OCsuOCvyzjgr/jgqvjgqoNCivjg57jg4Tjg6Ljg4gs44OS44Ot44K344KyDQor44Kr44K/44Ok44OeLOODpuOCpg0KK+OCveODjizjgqvjg4Tjg58NCivjgqTjgrvjgq0s44Om44Kt44KqDQor44Kk44OI44KmLOODqOOCt+OCq+OCug0KK+OCu+OCreODjSzjg57jgrXjgqoNCivjg6Djg6njg6Tjg54s44OV44K444KqDQor44Oe44Or44Ok44OeLOOCseOCpOOCuA0KK+OCr+ODreOCteODryzjg6jjgrfjg5Xjg58NCivjgrnjg58s44OI44Kq44OrDQor44OO44Kw44OBLOODpuOCpuOCuA0KK+OCteODiOOCpuODnyzjg5Ljg4fjgq0NCivjgqrjgqrjgqvjg68s44OE44Kw44OS44OIDQor44OK44Kr44OOLOODkuODh+ODjuODqg0KK+OCquOCquOCpOOCtyzjgrgNCivjg4/jg5Ys44Ki44Kt44OpDQor44Km44OB44OALOODjuODquODnuOCtQ0KK+ODn+OCrSzjg5Xjg5/jg47jg5YNCivjgrnjgrrjgq0s44OE44ON44Om44KtDQor44Kr44K144OP44OpLOOCpOOCuuODnw0KK+OCquOCquOCr+ODnCzjgqvjgrrjg4/jg6sNCivjgqvjgr/jgqvjg58s44OO44Oq44Kr44K6DQor44K/44Kr44OP44K3LOODiOOCt+ODkuOCsw0KK+OCpOOCt+OCq+ODryzjgqvjgrrjg6QNCivjgr/jgqvjg4jjg6os44K/44Kr44KqDQor44K/44OL44Kw44OBLOOCt+ODs+OCuA0KK+OCu+OCrSzjg6bjgq3jg57jgrUNCivjgq/jg5zjgr8s44Oe44K144OIDQor44Ki44OZ44Kr44OvLOODoOODhOOCqg0KK+ODleOCuOODnuOCrSzjgr/jgrHjgrcNCivjgqvjgr/jg6Tjg54s44Oe44K144Om44KtDQor44Kz44Ok44OeLOOCseODs+OCuA0KK+ODj+OCt+ODouODiCzjgqLjgrHjg58NCivjgrnjg58s44Of44OB44KqDQor44OL44K344Kr44OvLOODkuODreOCtw0KK+OCteODr+ODnizjgqLjg6TjgrMNCivjg4/jgrfjg6Ljg4gs44Om44Km44KzDQor44OK44Kr44K/LOODpOOCueODnuOCtQ0KK+OCpuODgeODpOODnizjg5Ljg63jgrcNCivjgrXjgrXjgq0s44Oe44OqDQor44Ki44K144OP44OpLOODn+ODhOODkuODrQ0KK+ODi+ODg+OCvyzjg5Xjg5/jgrMNCivjg4Djg7Ms44Or44Oq44KzDQor44K544Ku44K/LOODhuODhOOCtw0KK+ODpOODnuODouODiCzjgrfjg7PjgqTjg4ENCivjgqrjg5Xjg4Es44Of44KtDQor44Kz44OQ44Ok44K3LOODn+ODr+OCsw0KK+ODn+ODqOOCtyzjgrPjgqbjgq3jg4ENCivjgqTjgrfjg4As44OS44OH44OS44KzDQor44Kq44OL44KtLOODjuODnOODqw0KK+OCr+ODquODj+ODqSzjgr/jg5/jgqoNCivjgrfjg6njgqQs44OE44Kr44K1DQor44K144Kr44OL44K3LOOCseODs+OCpOODgQ0KK+OCquODgCzjg5LjgrXjgrcNCivjgqvjg57jgrks44Kx44Oz44K+44KmDQor44OK44Kr44Ks44OvLOODnuOCteODqOOCtw0KK+OCq+OCt+ODouODiCzjgq3jg6fjgqbjgqTjg4ENCivjg5Djg7Pjg4njgqYs44Om44K644OrDQor44OV44K/44OfLOODnuOCteOCtw0KK+ODpOODnuOCt+OCvyzjgr/jgqvjgrcNCivjg4/jg6Tjgrcs44Om44Km44K4DQor44Kr44Ky44Ok44OeLOODn+ODjuODqw0KK+OCouOCueODnizjg47jg5bjgqoNCivjgrfjg6Ljg6Djg6ks44Om44Km44Kk44OBDQor44Ok44Oe44Kw44OBLOOCv+ODgOOCtw0KK+ODpOODnuODiCzjg5Ljg63jgrcNCivjgrXjg4jjgqYs44K344Ky44OrDQor44Oe44OE44OA44Kk44OpLOOCq+OCuuODpA0KK+ODnuODhOODoOODqSzjg4jjgrfjg5/jg4ENCivjgrPjg7Pjg44s44Oo44K344OkDQor44Kq44Kq44OP44K3LOODpOOCteODluODreOCpg0KK+OCreOCr+OCvyzjgrfjgrLjgq0NCivjg6jjgrfjgqrjgqss44OS44Ot44K3DQor44K144OOLOODqOOCt+OCqg0KK+OCv+ODiuOCqyzjg6bjgq3jg47jg6oNCivjgrXjgrXjgq0s44K544K544OgDQor44Kr44Ov44Kw44OBLOOCouODhOOCtw0KK+ODpOODnuOCt+OCvyzjgr/jg4TjgqoNCivjgr/jgrHjg6Djg6ks44OV44Of44KqDQor44OV44Kv44OBLOOCq+OCuuOCqA0KK+ODnuODiuOCqyzjg4jjg5/jgqgNCivjgqLjg6njgq0s44K/44Kr44OO44OWDQor44OS44Op44OOLOODqOOCt+OCq+OCug0KK+ODiuOCq+ODoOODqSzjg4Tjg4jjg6ANCivjg4/jgrfjg6Ljg4gs44OI44K344Kr44OEDQor44Kr44OI44KmLOOCpOOCr+OCsw0KK+ODj+ODnuOCq+ODryzjgq/jg4vjgqoNCivjg4/jg6Tjgrcs44Kx44Kk44KzDQor44Kk44OI44KmLOOCseODs+OCpOODgQ0KK+OCueOCuuOCrSzjgqTjg4Hjg63jgqYNCivjgr/jgrHjgqbjg4Es44Kr44K644OS44KzDQor44OL44K3LOOCs+OCpuOCpOODgQ0KK+OCpOODr+ODm+ODqizjg4jjgrfjg57jgrUNCivjgqTjg57jgqQs44Kv44Of44KzDQor44Oi44Oq44OOLOOCv+OCq+OCtw0KK+ODi+OCt+ODj+ODqSzjgrHjgqQNCivjgq3jg6rjg6Qs44OS44K144OIDQor44K144OI44KmLOODiOODqOOCsw0KK+ODm+OCveODgCzjg5LjgrXjgrMNCivjgr/jgqvjg4/jgrcs44K/44OA44K3DQor44OK44Kr44K444OeLOOCt+OCsuODqw0KK+ODpOOCueODj+ODqSzjg4rjg6vjg6bjgq0NCivjgq/jg63jgqTjg68s44K/44Kr44K3DQor44Kr44OiLOODkuODreOCtw0KK+OCouOCq+ODnuODhCzjgq/jg4vjgqLjgq0NCivjgq3jgr/jg6Djg6ks44Oe44Om44OfDQor44OL44K344OALOODpuOCreOCsw0KK+OCquOCq+ODgCzjgrfjg7PjgqTjg4ENCivjgrXjgrXjgq0s44OI44K344Om44KtDQor44K/44Kr44OP44K3LOODkuODreOCtw0KK+OCt+ODn+OCuizjgqTjgrXjg6ANCivjgqjjg7Pjg4ks44K344Oz44K544KxDQor44Km44OA44Ks44OvLOODhuODq+OCqg0KK+OCt+ODn+OCuizjg47jg6rjg5Xjg58NCivjgqLjgqrjg6Tjgq4s44K744Kk44K+44KmDQor44OP44K344Oi44OILOOCq+OCuuOCqg0KK+OCv+OCseOCpuODgSzjg5Ljg4fjgqLjg4QNCivjgqLjg6njgqQs44Ok44K544K3DQor44Kk44K344K444OeLOOCpOOCteOCqg0KK+OCs+OCrOODjSzjg5Ljg4fjgqoNCivjgrXjg6/jgrfjg54s44K344Oz44Kk44OBDQor44K/44Kr44Ok44OK44KuLOODn+ODjuODqw0KK+ODnuOCteODgCzjg5Ljg63jg5/jg4ENCivjgrfjg5/jgros44Ki44Kt44OS44OHDQor44Kq44OO44OH44OpLOOCv+OCq+OCqg0KK+OCv+ODiuOCqyzjg5/jg4Tjg6sNCivjg47jg6Djg6ks44OO44OW44KqDQor44Oo44K344OALOODkuODreOCtw0KK+ODqOOCt+ODgCzjg4jjgrfjgrnjgrENCivjgrXjgr/jgrEs44K344Oz44K4DQor44K144Kk44OI44KmLOODnuODouODqw0KK+ODn+ODpOOCrizjg5Ljg63jgrcNCivjgr/jgqvjgrfjg54s44Kx44Kk44K4DQor44Kr44OQ44OkLOODkuODreODleODnw0KK+OCpOOCt+OCtuOCrSzjgrfjg7PjgqTjg4ENCivjgqvjgqzjg6Qs44Oo44Km44Kk44OBDQor44Kz44K/44OLLOOCv+OCr+ODouODqg0KK+OCs+OCueODgCzjg6TjgrnjgqLjgq0NCivjgqTjgrjjg6os44Om44K/44KrDQor44Oe44Or44Ok44OeLOOCv+ODn+ODpA0KK+OCq+ODiuOCpCzjg6jjgrfjgqoNCivjg6Tjgq4s44Of44OE44KwDQor44OV44K444OOLOOCteODiOOCtw0KK+OCs+ODh+ODqSzjg57jgrXjg4gNCivjgrnjgq7jgqos44Oe44K144Om44KtDQor44K544Ks44OP44OpLOOCs+OCpuOCpOODgQ0KK+OCteOCpOODiOOCpizjg5/jg4Tjg6TjgrkNCivjgqrjgqss44OP44Or44Ok44K5DQor44Kk44K344Oe44OrLOOCquOCteODoA0KK+ODn+ODpOOCtuOCrSzjgrPjgqbjgr7jgqYNCivjg4/jg57jg44s44Of44OB44KqDQor44Kz44K/44K444OeLOODqOOCt+ODjuODqg0KK+OCv+OCq+OCt+ODnizjgqLjgrHjg5Xjg58NCivjg4Tjgqvjg4As44K744Kk44Kk44OBDQor44OK44Kr44Og44OpLOOCq+ODhOODleODnw0KK+OCv+OCseODgCzjg57jgrXjg47jg6oNCivjg6Tjgrnjg6Djg60s44OP44Or44OS44KzDQor44OK44Kr44Og44OpLOODkuODreOCtw0KK+ODleOCuOOCt+ODnizjgrfjgrLjg57jgrUNCivjgqrjgqvjg4As44K/44Kx44K3DQor44Ki44OkLOODn+ODhOODnuODqw0KK+ODiuOCq+ODoOODqSzjg5/jg4Tjg57jg6sNCivjgr/jgqvjg4/jgrcs44K/44Kx44OS44OtDQor44K544Ks44OP44OpLOOCt+OCsuOCv+ODgA0KK+ODpuOCouOCtSzjgrHjg7PjgrgNCivjgqTjgrfjgqQs44Og44ON44Oo44K3DQor44Kq44Kq44Kv44OcLOODkuODreODiOOCtw0KK+OCquOCteODryzjg57jgrXjgr/jgrENCivjg6Tjg57jg6Ljg4gs44Of44Kt44KqDQor44Kk44Oe44Kk44K644OfLOOCq+OCuuODkuOCsw0KK+OCquOCq+ODgCzjg6jjgrfjg5Ljg60NCivjg4rjgqvjg6Djg6ks44Kv44OL44KqDQor44K/44OK44KrLOOCreODqOOCtw0KK+ODiuOCq+ODjizjgr/jgq/jgqoNCivjgqrjgqrjg6Ljg6os44Kr44K644OS44KzDQor44Ok44Oe44Oi44OILOOCq+OCuuOCqg0KK+ODiuOCrOOCpCzjg6bjgq3jg57jgrUNCivjgrPjg5Djg6Tjgrcs44Oo44K344OP44OrDQor44OS44Kt44OBLOODkuOCteOCtw0KK+ODpOODnuODgCzjg4jjgrfjgqoNCivjg4Tjgqvjg6Ljg4gs44OE44OI44OgDQor44Kk44OO44Km44KoLOODnuOCteODiA0KK+OCpOODjuOCpuOCqCzjgqLjgq3jg6kNCivjgrnjg5/jgqvjg68s44Kr44Kq44OrDQor44OV44Kv44OALOOCuOODpeODs+OCpOODgQ0KK+ODpOODnuODouODiCzjgrvjg4TjgrMNCivjgrXjgqTjg4jjgqYs44Om44Km44KzDQor44Kr44Oz44OQLOODqOOCt+ODn+ODhA0KK+OCteODqeOCpCzjg57jgrXjgqLjgq0NCivjgrXjgqvjgq0s44K344On44Km44K4DQor44Ok44K544KkLOOCv+OCq+OCtw0KK+OCq+ODn+ODoOODqSzjgr/jgqvjgrcNCivjgrvjg5ks44Oo44K344K/44KrDQor44Oo44K344OALOODiOOCt+OCq+OCug0KK+ODiuOCrOOCuyzjgr/jg4DjgrcNCivjg5Xjgq/jg4Es44Kk44K644OfDQor44OV44Kv44OALOOCuA0KK+ODjuODiuOCqyzjg47jg5bjg5LjgrMNCivjgqTjg57jg4As44Oe44K144OS44OtDQor44OL44K344Kr44OvLOODnuOCueOCsw0KK+OCs+ODpOODjizjg5Ljg4fjgqoNCivjg4rjgqvjgrbjg68s44Ki44Kt44KqDQor44Kq44Ks44OvLOOCv+OCq+OCtw0KK+ODiuOCq+ODpOODnizjg4/jg6vjg5LjgrUNCivjg4zjg47jgqvjg68s44Kx44Kk44KzDQor44K944ONLOODleODn+OCqg0KK+ODn+OCvuOCsOODgSzjg6bjgq3jgqoNCivjgrPjg5Djg6Tjgrcs44Kk44Ov44KqDQor44Oo44K344Oe44OELOODnuOCteOCqg0KK+OCquOCquODj+ODqSzjg57jgrXjgqrjg58NCivjg6Tjg57jg4As44K344Oz44K4DQor44Of44OO44Kw44OBLOODqOOCt+ODjuODqg0KK+OCt+ODs+ODoeODsyzjgr/jgqvjg5Xjg58NCivjg47jgrss44Oe44K144KqDQor44Kk44Ov44OP44K3LOODquODp+OCpuOCpOODgQ0KK+OCouOCq+OCpCzjgr/jgrHjgrcNCivjg4Tjgr/jg6Ljg4gs44Oe44K144OP44OrDQor44OK44Kr44Oi44OILOODn+ODjuODqw0KK+OCr+ODgOODiuODnyzjg57jgrXjg6bjgq0NCivjgqTjg4Hjg4As44K/44Kr44K3DQor44Ok44OOLOOCqOOCpOOCuA0KK+ODnuODhOOCrSzjgq3jg5/jgqoNCivjgrXjgrXjgq0s44Oo44K344K344KyDQor44OV44Or44OOLOOCq+OCquODqw0KK+ODleOCuOOCvyzjgqLjgq3jg6kNCivjgqTjg47jgqbjgqgs44Of44OJ44OqDQor44K/44OkLOODn+ODhOODpOOCuQ0KK+ODn+ODpOOCtuODryzjgr/jg63jgqYNCivjg6/jgr/jg4rjg5ks44Oo44Km44KzDQor44Ki44Kv44ONLOODiOOCt+ODreOCpg0KK+ODm+OCt+ODjizjgrfjg7PjgqTjg4ENCivjg6jjgrfjg4As44Kr44K644KqDQor44Km44Ko44Og44OpLOODjuODnOODqw0KK+OCq+ODn+ODpCzjgrHjg7PjgrgNCivjgrnjgrrjgq0s44K/44Kx44K3DQor44Ki44Oz44OJ44KmLOOCv+OCq+ODj+ODqw0KK+ODiOODqOOCpOOCuuODnyzjg4jjgrfjgqoNCivjgq/jg6/jg4os44OO44Oq44KzDQor44OL44Kk44OfLOOCq+ODhOOCtw0KK+ODn+OCpuODqSzjgqrjgrXjg6ANCivjg47jg6Djg6ks44Ki44Kt44OpDQor44Kq44Kr44OALOOCuOODpeODsw0KK+OCouOCteODjOODnizjgqvjgrrjg5Ljg60NCivjgrXjgrXjgqos44OS44OH44Om44KtDQor44Kk44OK44Ks44KtLOODnuOCteODiA0KK+OCueOCrOODr+ODqSzjgrXjg4jjgrcNCivjgrfjg6fjgqbjgrgs44K/44Kx44K144OADQor44K/44Ks44OvLOODn+ODjuODqw0KK+OCveOCrCzjg47jg5bjg4jjg6INCivjgrfjg6fjgqbjg68s44Kt44Oo44OfDQor44Oe44OE44Kr44OvLOODkuODreODpuOCrQ0KK+OCt+ODouODoOODqSzjg6bjgqbjgrgNCivjg6/jgr/jg4rjg5ks44OK44Kq44Om44KtDQor44Kz44OQ44Ok44K3LOOCt+ODs+OCuA0KK+OCpOOCpOODgCzjgrPjgqbjgqTjg4ENCivjg5Xjgq/jg6Ljg4gs44Kx44Oz44Kk44OBDQor44Og44Op44Ok44OeLOODkuODreOCrQ0KK+ODm+ODqizjg57jgrXjgqLjgq0NCivjg6Tjg57jg44s44OS44OH44KqDQor44OL44K344Ov44KtLOODqOOCpuOCuA0KK+ODnuODhOOCqizjg57jgrXjg4oNCivjgqrjgqvjg6Ljg4gs44Oe44Kz44OIDQor44Kq44Kq44K144KtLOOCseODs+OCpOODgQ0KK+OCpuODoeODouODiCzjg4rjgqrjg5Xjg58NCivjgqrjgqvjg6Djg6ks44Ki44K/44OrDQor44Kz44Kk44KxLOOCs+OCpuOCu+OCpA0KK+OCquOCquOCv+ODiyzjg57jgrXjgqLjgq0NCivjgqvjgr/jgqrjgqss44Oe44K144KtDQor44Kq44Kr44OALOOCt+ODgeODreOCpg0KK+ODleOCr+OCt+ODnizjg6jjgrfjgqoNCivjgqjjg4Djg4rjgqss44Ok44K544OO44OqDQor44K544K644KtLOOCt+OCsuODqw0KK+OCpOODgeOCq+ODryzjgrvjgqTjgqTjg4ENCivjgq/jg63jgqvjg68s44Kt44Oo44K3DQor44K144OI44KmLOOCreODqOODkuOCtQ0KK+OCquOCquOCteODryzjgqvjgrrjg5LjgrMNCivjg6Ljg4Hjgrrjgq0s44K544Ko44OS44OtDQor44Ok44Oe44K344K/LOOCseOCpOOCpOODgeODreOCpg0KK+OCpOODgeOCq+ODryzjgr/jgqvjgrcNCivjg5Xjgqvjgrbjg68s44Kr44K644ObDQor44Kv44Oc44K/LOODjuODluOCqg0KK+ODi+OCt+ODoOODqSzjgrPjgqbjgrgNCivjg43jgq7jgrcs44OS44K144Om44KtDQor44Kz44Oz44OJLOOCseODs+OCuA0KK+ODleODq+ODpCzjg5/jg4Tjgq4NCivjgrPjg5Djg6Tjgrcs44K/44OE44KqDQor44K/44Og44OpLOODkuODreODkuOCsw0KK+ODn+ODhOODj+OCtyzjg4DjgqTjg4/jg4Hjg63jgqYNCivjgq/jg57jgrbjg68s44Kr44OE44OfDQor44Ok44Oe44OALOODqOOCt+OCqg0KK+ODkuODreODhCzjgqvjgrrjg5/jg4QNCivjgqvjg43jg4As44Om44K/44KrDQor44Ki44K9LOODpuOCreOCqg0KK+OCqOODk+ODj+ODqSzjgq3jgqTjg4ENCivjg6TjgrnjgqQs44Kv44OL44KqDQor44K544OJ44KmLOODkuODreOCsw0KK+ODpOODj+OCvyzjg57jgrXjg47jg6oNCivjgrXjgqvjgqQs44OI44Oi44OS44OtDQor44K144KsLOODqOOCt+OCqg0KK+ODpOODnuOCtuOCrSzjgqjjg5/jgrMNCivjg4rjgqvjg6Djg6ks44Oo44Km44KzDQor44Kk44K244OvLOODkuODreODgeOCqw0KK+OCouODqeOCpCzjgrHjg7PjgqTjg4ENCivjgqbjg5bjgqvjgr8s44K144OA44OfDQor44Ov44K/44OM44KtLOOCv+ODgOODpuOCrQ0KK+ODkuOCt+OCvyzjg47jg5zjg6sNCivjgqvjg4jjgqYs44Om44Km44KzDQor44Ok44Oe44ONLOODqOOCt+ODiA0KK+ODpOODnuOCt+OCvyzjg5Ljg63jgrcNCivjg47jg6Djg6ks44Oo44K344Ot44KmDQor44Ok44OK44KkLOODnuOCteODpuOCrQ0KK+ODoOODqeOCq+ODnyzjg57jgrXjg5/jg4ENCivjgqLjgqrjgq0s44Ki44Kt44OpDQor44Ok44K344OtLOOCueOCueODoA0KK+OCouOCteODnizjg57jgrXjg5Ljg60NCivjgqrjgq/jg4As44OV44Of44KqDQor44Kk44K344OQ44K3LOODpuOCpuOCuA0KK+ODn+ODiuODn+ODhyzjg5Ljg4fjgqLjgq0NCivjgqTjg4zjgrrjgqss44Kz44Km44OY44KkDQor44OI44Kt44OvLOODqOOCt+ODj+ODqw0KK+ODn+OCpuODqSzjg6Tjgrnjg47jg5YNCivjg57jg5bjg4Es44OI44K344OP44OrDQor44Kq44OQ44OpLOODkuODreODpuOCrQ0KK+ODnuODhOOCrSzjg5Ljg63jgrcNCivjgqjjgrDjg4Es44Kx44Oz44Kk44OBDQor44Kq44Kq44OfLOOCv+OCseOCtw0KK+ODr+OCv+ODiuODmSzjgr/jgrHjgrcNCivjgqLjg6njgqvjg68s44K344Oz44K4DQor44K544Ks44OOLOOCouOCreODqQ0KK+ODpOOCueOCpCzjgrPjgqbjg5jjgqQNCivjg5/jg6Tjg6Ljg4gs44OS44Ot44Ok44K5DQor44OV44K444Ku44OvLOOCs+OCpuOCpOODgQ0KK+OCreOCv+OCrOODryzjg5/jgq3jgqoNCivjgr/jg4vjgrDjg4Es44Of44OE44OrDQor44Kz44K444OeLOODqOOCt+OCouOCrQ0KK+OCouODnuOCq+ODryzjg6bjgr/jgqsNCivjgqrjgqrjg4zjgq0s44Om44K/44KrDQor44K/44OK44OZLOOCs+OCpuOCuA0KK+ODnuODq+ODj+OCtyzjgqTjgrXjgqoNCivjg6Tjg4njg6Qs44K444Ol44Oz44Kk44OBDQor44Kq44Kq44Ks44KvLOODqOOCt+ODkuODrQ0KK+OCteOCq+OCvyzjgrPjgqbjg5jjgqQNCivjg4/jg6ks44OS44OH44OfDQor44K/44Kr44KuLOODkuODh+OCqg0KK+OCouOCpOODj+ODqSzjgqLjgq3jg6kNCivjgqrjgqrjgr8s44OI44Kq44OrDQor44Ki44Kt44Ok44OeLOODqOOCt+ODkuODrQ0KK+OCt+ODn+OCuizjgr/jgqvjgqoNCivjgrPjg5Djg6Tjgrcs44Kq44K144OV44OfDQor44OP44K/44Oi44OILOOCseODs+OCuA0KK+OCpuOCueODgCzjgr/jgqvjg47jg5YNCivjgr/jgqvjg4/jgrcs44Kr44K644KqDQor44OK44Kr44Ks44OvLOODhuODhOOCqg0KK+ODnuODhOODkOODqSzjg4/jg6vjgqoNCivjgq/jg4zjgq4s44Om44K/44KrDQor44Kq44Ks44OvLOODqOOCt+OCqg0KK+ODhOOCuCzjgqvjgrrjgr/jgqsNCivjgqvjg6/jgqQs44Kx44Kk44Kk44OB44Ot44KmDQor44K544Ks44Ov44OpLOOCt+ODpeOCpuOCpOODgQ0KK+ODoOODiOOCpizjgqvjgrrjgqoNCivjgqrjg5Djg6ks44Ok44K544OI44K3DQor44Kr44OI44KmLOOCv+OCq+ODpuOCrQ0KK+OCq+ODluODqeOCrSzjg6bjgq3jgqoNCivjg6/jgqvjgr/jg5ks44OE44OI44OgDQor44Kq44Ks44OvLOOCs+OCpuOCt+ODreOCpg0KK+OCpOODr+OCteOCrSzjg5Ljg63jg6bjgq0NCivjg4rjg6rjgr8s44Kq44K144OgDQor44Ki44Kt44Ok44OeLOOCv+OCq+OCtw0KK+ODn+ODhOOCpCzjgrHjgqTjgqTjg4ENCivjgqjjg7Pjg4ks44Om44K/44KrDQor44Oo44ON44K/LOOCouOCreOCqg0KK+OCouOCquOCpCzjgq3jg6jjgrcNCivjgqrjgqvjg6Ljg4gs44Oo44K344OS44K1DQor44Kq44Kq44OE44KrLOOCt+ODs+OCpOODgQ0KK+ODleOCr+ODouODqizjgrXjgqvjgqgNCivjg4bjgrfjg54s44Kr44K644Oe44K1DQor44OP44OeLOODkuODh+OCrQ0KK+ODqOOCt+ODgCzjg4/jgrjjg6ENCivjgqvjg6/jg5ks44Oo44K344OP44OrDQor44K/44OK44KrLOODpOOCueODjuODqg0KK+OCv+OCq+ODj+OCtyzjgq3jg6fjgqbjgqTjg4ENCivjgr/jg4rjg5ks44OV44Of44Ki44KtDQor44Ki44K9LOODkuODreOCpOODgQ0KK+OCv+OCq+ODgCzjg5Ljg63jgrcNCivjg5/jg6Tjg44s44OI44K344KqDQor44Km44Ko44K644OfLOODkuODiOOCtw0KK+OCpOODgeOCq+ODryzjg6TjgrnjgqLjgq0NCivjgqLjgrXjg68s44OI44Oi44OV44OfDQor44Kk44OK44Oi44OILOOCq+OCuuOCqg0KK+ODouODquODpCzjg5Ljg4jjgrcNCivjg4rjgqvjgr/jg4ss44Kx44OzDQor44Of44Ok44Oi44OILOOCpOODgeOCvuOCpg0KK+ODn+OCr+ODiyzjgqjjgqTjgqTjg4ENCivjgq3jgr/jg6Djg6ks44K/44OA44Oe44K1DQor44Ok44K/44OZLOODnuOCteODkuODhw0KK+ODiuOCrOOCq+ODryzjg6rjg6fjgqbjgqTjg4ENCivjg6Tjg4os44Kr44K644KqDQor44K144Kv44OeLOODn+ODhOODqw0KK+OCouODqeOCpCzjg4jjgrfjgqoNCivjgrfjg57jg4As44OK44Kq44KzDQor44OG44K644KrLOOCt+ODpeODs+OCpOODgQ0KK+OCpuOCqOODjizjgrfjg6Xjg7PjgqTjg4ENCivjgrXjgqTjg4jjgqYs44OS44Ot44Om44KtDQor44Kq44Kq44Kv44Ov44OALOODnuODiuODlg0KK+ODqOOCs+ODpOODnizjg6jjgrfjgqrjg58NCivjg6/jgr/jg4rjg5ks44Oo44Km44Kk44OBDQor44OL44K344Og44OpLOOCouOCreODjuODqg0KK+OCv+OCq+ODnuODhCzjgrPjgqbjgqTjg4ENCivjg4vjgrfjg6Djg6ks44K/44OE44OeDQor44Kk44OB44KtLOODkuODreOCtw0KK+OCpOODr+OCt+OCvyzjg47jg5bjg4Tjg4oNCivjgqrjg44s44OI44K344KqDQor44OL44K344KtLOOCv+ODhOOCqg0KK+OCteODryzjgqvjgrrjgqoNCivjgr/jgqvjg58s44Kq44K144OgDQor44Ok44K544OV44KvLOOCseODs+OCuA0KK+OCquOCquOCvyzjg5Ljg63jgrcNCivjgqrjgqvjg6Ljg4gs44OS44Ot44Oe44K1DQor44K144Kr44KkLOODpOOCueOCqg0KK+ODleOCuOODouODiCzjg4jjgq3jgqoNCivjg57jg4Tjg6Ljg4gs44K344Ky44OO44OqDQor44Kq44Kq44Ok44OWLOOCq+OCuuODpA0KK+ODi+OCt+ODoOODqSzjgrfjg6XjgqbjgqTjg4ENCivjg5vjg6rjgqbjg4Es44Kx44Kk44Kk44OBDQor44Kk44K344Oi44OILOOCt+ODpeOCpuOCpOODgQ0KK+ODnuODhOODouODiCzjg4rjg6rjgqoNCivjgr/jgrHjgqbjg4Es44K344Oz44Kk44OB44Ot44KmDQor44Oi44OI44Ok44OeLOOCs+OCpuOCt+ODreOCpg0KK+ODqOOCt+ODiuOCrCzjgrPjgqbjgrgNCivjg5Xjg6vjgqvjg68s44Of44OB44KqDQor44K/44OL44Kw44OBLOODqOOCt+OCqg0KK+OCv+OCseOCs+OCtyzjg57jgrXjg4jjgrcNCivjg4Tjg6Djg6ks44Kz44Km44K744KkDQor44Kq44OOLOOCt+OCsuOCqg0KK+OCquOCq+ODouODiCzjgrXjg4jjgrcNCivjg5Xjg6vjgr8s44Oe44K144OS44OtDQor44OL44K344OOLOOCveOCpuOCpOODgeODreOCpg0KK+ODn+OCuuOCv+ODiyzjg5Ljg63jg6bjgq0NCivjgrPjg6Tjg54s44OS44K144K3DQor44Kt44Kv44OBLOOCseODs+OCpOODgQ0KK+OCquOCquOCs+OCpuODgSzjg57jgrXjgqLjgq0NCivjgqvjg6/jgr8s44K/44Kr44K3DQor44Kv44OP44OpLOODqOOCt+ODpuOCrQ0KK+ODleODq+ODj+OCtyzjgrPjgqbjgr7jgqYNCivjgr/jgqvjg6jjgrcs44OV44Of44OI44OoDQor44Kr44K5LOODjuODluODpuOCrQ0KK+OCouODn+ODouODiCzjgrnjgrnjg6ANCivjg6Djg43jg4jjgqYs44OI44K344KqDQor44Oe44OE44Oi44OILOOCueOCueODoA0KK+OCv+OCq+ODiuOCtyzjg57jgrXjgqLjgq0NCivjgqLjgq3jgr8s44OI44K344KqDQor44K/44Kr44OP44K3LOODpOOCueODn+ODgQ0KK+ODiuOCrOOCpCzjgr/jgqvjgrcNCivjg6jjgrfjg4As44OE44Kr44K1DQor44Oe44OE44Oi44OILOODpOOCueOCouOCrQ0KK+ODiOOCr+ODgCzjg5/jg4HjgqoNCivjg5Ljg6njgqQs44OO44K+44OgDQor44Kq44Kv44K344OeLOOCv+OCq+OCtw0KK+ODnuOCt+OCvyzjgrfjgrLjgqoNCivjg6Tjg57jg4As44Kt44Of44OS44OtDQor44K144Kv44Op44KkLOODiOODouOCqg0KK+OCv+OCreOCtuODryzjgrXjg4jjgrcNCivjg57jgrnjgrMs44Om44Km44K4DQor44K344Oz44Kr44OvLOODkuODreOCqA0KK+OCquOCquOCv+ODiyzjgr/jg4Djg5Ljg60NCivjgqvjg6/jg44s44Oo44K344Of44OEDQor44Ki44Op44Kr44OvLOODhuODhOOCqg0KK+OCouODgOODgSzjgr/jgqvjg6bjgq0NCivjgqbjg4Hjg4As44Kx44Oz44K4DQor44Kz44OP44OpLOODiOOCt+ODkuOCsw0KK+OCquOCquODj+OCtyzjgqvjgrrjg5LjgrMNCivjgqvjg6Hjgqrjgqss44Oo44K344KqDQor44Of44Og44OpLOODiOODn+OCqg0KK+OCpOOCrSzjg6jjgr4NCivjgqLjgrfjgrrjgqss44OS44Ot44K3DQor44Ok44Oe44Oi44OILOODkuODreODjuODqg0KK+ODqOOCt+ODgCzjgqrjgrXjg6ANCivjg4/jg6njgqrjgqss44Kr44OE44Ok44K5DQor44Km44Or44Ov44K3LOODkuODreOCtw0KK+OCquODs+ODgCzjgrHjg7PjgrgNCivjgqTjg7Pjg4ks44Oe44K144KqDQor44K/44Kx44OK44KrLOODnuOCteODiOOCtw0KK+ODleOCuOOCteODryzjg57jg6Ljg6sNCivjgqrjgqrjg6Ljg6os44Oe44K144Om44KtDQor44OK44Kr44Og44OpLOODkuODreOCtw0KK+OCt+ODp+OCpuOCuCzjg6jjgrfjg47jg6oNCivjgq3jgr/jgrjjg54s44Oo44K344Ki44KtDQor44Kk44OI44KmLOOCouOCreODqQ0KK+ODkuODqeOCqizjgqvjgrrjgr/jgqsNCivjgrnjg5/jg6Ljg4gs44OO44OW44OkDQor44OK44Kr44K/44OLLOODkuODreOCtw0KK+OCouODqeOCt+ODnizjg6bjgq3jgqoNCivjgqvjgr/jg6Tjg54s44Om44Kt44OO44OWDQor44Km44Ko44OALOODnuOCteODkuODrQ0KK+ODleOCuOODouODiCzjg5Ljg63jg5Xjg58NCivjg6Tjg57jg4/jgr8s44Oq44Ol44Km44K4DQor44Kq44Kq44K/44OLLOODhOODiOODoA0KK+OCpOOCpOODjOODnizjg6jjgrfjg5Ljg60NCivjg4rjgqzjgrXjg68s44Oo44K344Ot44KmDQor44Ok44K544OALOOCt+ODpeOCpuOCuA0KK+ODleOCr+OCt+ODnizjg6rjg6fjgqbjgqTjg4ENCivjgrXjgqvjgq3jg5Djg6ks44Ki44Ok44KzDQor44Kr44OI44KmLOOCv+OCq+OCtw0KK+ODqOOCs+OCtuODryzjg5Xjg5/jgr/jgqsNCivjgqvjg4njg44s44Kr44K644OfDQor44Ok44Oe44Kq44KrLOOCreODqOOCtw0KK+OCq+ODn+OCv+ODiyzjg5Ljg63jgq0NCivjgqvjg4jjgqYs44Ko44OE44Ot44KmDQor44OO44Oi44OILOODiOOCt+OCq+OCug0KK+OCueOCruODouODiCzjgrvjgqTjgqTjg4ENCivjg5Xjgrjjg44s44Kz44Km44K4DQor44Kk44OO44Km44KoLOOCt+ODp+OCpuOCuA0KK+ODj+OCuyzjg57jgrXjgqvjg4QNCivjg6Ljg6os44Ko44Op44OWDQor44Kr44Ov44OQ44K/LOODkuODh+OCqg0KK+OCq+ODr+OCvuOCqCzjgrfjg6fjgqbjgqTjg4ENCivjg4/jgrfjg6Ljg4gs44OA44Kk44K344OzDQor44OS44Ot44Oe44K1LOODpOOCueODkuODrQ0KK+OCreOCt+ODouODiCzjgq/jg4vjgqoNCivjg5Ljg6njg4Tjgqss44Of44OO44OrDQor44Km44Ko44OALOODqOOCt+ODpuOCrQ0KK+OCouODqeOCpCzjg4jjgrfjg5LjgrMNCivjgqTjgqTjg4As44Oe44K144Om44KtDQor44OS44Ot44K344OeLOOCt+ODp+OCpuOCvuOCpg0KK+OCpOOCteOCqyzjgqvjg4Tjg5Ljg60NCivjgrnjgrrjgq0s44Oo44K344KqDQor44Kv44Op44Oi44OBLOOCv+OCq+OCqg0KK+OCteOCpOODiOOCpizjg57jgrXjgqoNCivjgrnjgrrjgq0s44Of44OE44KwDQor44OV44Kr44OkLOODhuODhOOCuA0KK+OCteOCq+OCpCzjg4jjgrfjg63jgqYNCivjgqrjgqrjg6/jg4As44OI44K344KqDQor44Kr44Oh44OkLOOCq+ODhOODnw0KK+OCr+OCteOCpuODqSzjg4jjgrfjgqoNCivjg6/jg4As44Kr44K644KqDQor44K044OI44KmLOOCreODp+OCpuOCpOODgQ0KK+ODkuODqeODleOCryzjgqLjgq3jg6kNCivjg6Ljg63jg6Qs44OS44OH44OI44K3DQor44Kk44Kx44OALOOCteODgOODpuOCrQ0KK+ODnuOCueODgCzjg57jgrXjg4/jg6sNCivjg5/jgrrjg44s44OI44K344K/44KrDQor44OP44Ok44K3LOOCreODqOODiOOCtw0KK+OCouOCquOCrSzjg4jjgrfjg5LjgrMNCivjgrPjg5Djg6os44Oe44K144Om44KtDQor44Of44K144OvLOOCteODluODreOCpg0KK+OCv+OCq+OCrizjg4bjg4TjgqoNCivjgqjjg7Pjg4ks44Kx44Oz44Kk44OBDQor44K544Ks44K144OvLOOCu+OCpOOCuA0KK+OCquODquODj+ODqSzjg4jjg6jjg58NCivjg57jg4Tjg4rjgqws44K/44Kr44OV44OfDQor44Kr44K144KkLOOCreODqOOCouOCrQ0KK+OCu+ODoOODqSzjgr/jgqvjgrcNCivjgrXjgq/jg6njgqQs44K/44Kr44Ki44KtDQor44OG44Op44Kr44OJLOODqOOCt+ODpuOCrQ0KK+ODleOCuOOCvyzjg6TjgrnjgqLjgq0NCivjgqvjg6/jg47jg5ks44Kr44Kk44OBDQor44Ki44Kq44OQLOODnuOCteODqw0KK+ODoOODqeODouODiCzjg6bjgq3jg6jjgrcNCivjg4Tjg5zjgqbjg4Es44K/44Kr44K3DQor44OV44Or44K344On44KmLOODleOCuOOCqg0KK+OCt+ODkOODpOODnizjg5Xjg5/jgqoNCivjg6Tjg57jg6Ljg4gs44K/44Kr44OS44OtDQor44Km44OB44OALOODkuODreODleODnw0KK+ODnuOCqOOCtuODryzjg4jjg5/jgqoNCivjgrPjg6Djg6ks44Ki44Kt44OO44OWDQor44Ok44Oe44K144KtLOODqOOCt+OCuA0KK+OCpuOCt+OCrSzjgqvjgrrjg58NCivjg57jg4Hjg6Tjg54s44K344On44Km44K4DQor44OV44K444OM44KtLOOCueOCueODoA0KK+ODiuOCq+ODoOODqSzjg57jg4Tjg58NCivjgq/jgrnjg6Ljg4gs44OG44Or44KqDQor44K544K644KtLOODqOOCt+OCqg0KK+OCpuOCqOODpOODnizjg4jjgrfjg6bjgq0NCivjgrPjgqTjgrEs44OS44Ot44K3DQor44OP44K744Ks44OvLOODn+ODhOOCouOCrQ0KK+ODleODq+OCq+ODryzjg6Tjgrnjg5Ljg60NCivjg6Tjg57jg4As44Ki44Kt44KqDQor44Om44OP44Op44KuLOODn+ODhOODqOOCtw0KK+OCquOCt+ODnizjg47jg6rjg6bjgq0NCivjgr3jg40s44Oe44K144OS44OtDQor44OI44Km44OeLOOCteODgeODkuODrQ0KK+OCv+OCq+ODj+OCtyzjgrfjgrrjgqoNCivjgqvjgrHjg4/jgr8s44Oe44K144KqDQor44Kk44K344KkLOOCt+OCsuODqw0KK+OCteODiOOCpizjg47jg6rjg6bjgq0NCivjg6Djg6njg6Tjg54s44Kx44Oz44K4DQor44Ob44Oq44Kw44OBLOODnuOCs+ODiA0KK+ODiuOCq+OCtuODiCzjg5Ljg63jgrcNCivjgrXjg4jjgqYs44Oe44Kz44OIDQor44Kr44ON44KzLOODquODpeOCpuOCvuOCpg0KK+OCq+OCt+ODnizjg4jjgrfjg47jg5YNCivjg4jjgrDjg4Es44OS44Ot44OgDQor44Kz44Of44Ok44OeLOOCreODn+OCouOCreODqQ0KK+ODpOODnuOCquOCqyzjg6jjgrfjg47jg5YNCivjgr/jgqvjg4/jgrcs44Kx44Kk44Kk44OBDQor44Oi44Oq44K/LOOCseOCpOOCpOODgQ0KK+ODqOOCs+OCpCzjg6jjgrfjg47jg5YNCivjg5Ljg6njgqQs44Kx44Kk44Kk44OBDQor44K344Kk44OQ44K3LOODnuOCteOCv+OCsQ0KK+OCq+ODjeOCsyzjg57jgrXjg5Xjg58NCivjg4rjgqvjg40s44OO44OW44OP44OrDQor44K744Kt44Kw44OBLOODhuODhOOCqg0KK+ODn+ODouODqizjgr/jgqvjg5LjgrMNCivjgq3jgq/jg4Es44Oe44K144K/44KrDQor44Ok44Oe44Oi44OILOOCq+ODhOOCuA0KK+OCouODqeOCq+ODryzjgr/jgqvjgqoNCivjg4jjg6Ljgq/jg4ss44Oe44K144KtDQor44OI44Of44K/LOODjuODquOCq+OCug0KK+OCv+OCq+ODj+OCtyzjgrfjg6Xjgqbjg5jjgqQNCivjg4jjgqzjgrcs44OO44OW44KqDQor44Kr44Ov44Og44OpLOODiOOCt+ODkuODrQ0KK+ODleOCr+ODiuOCrCzjgrHjgqTjgrgNCivjg57jgq3jgr8s44OI44Kv44OfDQor44K144OOLOODn+ODjuODqw0KK+OCteODiOODoOODqSzjgrHjgqTjgrgNCivjgrXjgqvjg44s44K444Ol44Oz44OkDQor44OE44OB44OP44K3LOOCt+OCsuOCouOCrQ0KK+OCpuOCqOODjizjgrHjg7Pjgr7jgqYNCivjg4rjgqvjgqzjg68s44OS44OH44Ki44KtDQor44OI44Kv44OK44KsLOOCseODs+OCuA0KK+OCpOODiOOCpizjgqvjgrrjgqoNCivjg5LjgrXjg57jg4Qs44OI44Oo44OI44K3DQor44Kq44Kq44OE44KrLOOCq+ODoeOCqg0KK+OCq+ODr+ODouODiCzjgrfjgrLjgq0NCivjg47jg6Djg6ks44Oo44K344Kk44OBDQor44Kr44OO44KmLOODpuOCv+OCqw0KK+OCpuOCqOOCteOCqyzjg6bjgqbjgrgNCivjg5Xjgrjjg6/jg6ks44OS44Op44KqDQor44Kq44Ks44OvLOODnuOCteODiA0KK+OCr+ODqeOCvyzjg4jjg6Ljg5Xjg58NCivjg4/jg4rjgr3jg4gs44OI44Oo44OV44OfDQor44OL44K344Kr44OvLOOCv+OCq+ODqOOCtw0KK+OCqOODk+OCuSzjg5Ljg4fjgqoNCivjg6Tjgrnjg47jg6os44Oo44K344OP44OrDQor44K144Kr44KkLOOCv+OCseOCtw0KK+ODnuOCqOODgCzjg6jjgrfjgqLjgq0NCivjg5Xjgq/jg4As44K344Ky44K/44KrDQor44Ok44Oe44Oi44OILOODnuOCteOCuuODnw0KK+OCt+OCquOCvyzjg6Tjgrnjg57jgrUNCivjg6Djg6njgqvjg58s44OI44Oi44OoDQor44Kk44Kv44OfLOOCv+OCq+OCtw0KK+ODiuOCq+OCrizjg6bjg58NCivjg4jjgq/jg57jg4Qs44K/44Kr44KqDQor44K/44OL44KkLOODiOOCt+ODpuOCrQ0KK+OCquOCquODpOODnizjgrHjg7PjgrgNCivjgr/jg44s44K/44Kr44OB44ObDQor44Kq44Kq44K/LOODkuODreODjuODlg0KK+OCr+ODnuODjizjgqLjgq3jgqoNCivjgrXjg6/jgrDjg4Es44Oe44K144Kv44OLDQor44Ki44K144OOLOOCq+OCuuOCqg0KK+OCteOCq+OCsOODgSzjg47jg6rjg6bjgq0NCivjg6/jgr/jg4rjg5ks44OE44OI44OgDQor44Kr44OI44KmLOOCq+OCuuOCqg0KK+ODnuOCqOOCq+ODryzjgr/jgqvjgrcNCivjg57jg4Tjg6Ljg4gs44Kr44K644KqDQor44Oe44OE44Oi44OILOODiOOCt+OCqg0KK+ODpOODnuODiuOCqyzjgqjjgqTjgrgNCivjgrPjg5Djg6Tjgrcs44Kz44Km44K4DQor44OV44K444K/LOOCv+ODhOOCqg0KK+ODpOOCrizjg57jgrXjg58NCivjgqTjg6/jgqQs44Oe44K144K/44KrDQor44OV44Kv44K344OeLOODkuODh+ODnw0KK+ODleODq+OCq+ODryzjgrPjgqbjgqTjg4ENCivjgqrjgqzjgr8s44Oe44K144OO44OqDQor44K544K644KtLOOCv+ODgOODkuOCsw0KK+OCt+OCq+ODnizjgr/jgqvjgrcNCivjgq3jgrfjg6Ljg4gs44K344Ol44Oz44Kk44OBDQor44Kz44Ot44KuLOOCq+ODhOODnw0KK+ODleOCv+ODnyzjgq3jg6jjgrcNCivjg6Tjgrfjg60s44OI44K344KqDQor44OP44Oq44Kk44KxLOODqOOCt+ODj+ODqw0KK+OCt+ODoOODqSzjgqLjg6rjg57jgrUNCivjg4rjgqzjgq/jg6ks44Kk44OB44Ot44KmDQor44Of44OK44OfLOOCs+OCpuOCuA0KK+ODiOOCr+ODiuOCrCzjgq3jg6jjgrcNCivjgr/jg4rjgqss44OV44Kv44OgDQor44OG44Op44K144KtLOOCt+ODreOCpg0KK+OCq+ODiOOCpizjg4jjgqrjg6sNCivjg5/jgrrjg44s44Oo44K344Ki44KtDQor44K/44Oi44OILOODkuODiOOCtw0KK+OCpuODgeODgCzjg5Ljg63jgqvjgroNCivjgr/jgrHjgqTjg4Es44Oo44K344Om44KtDQor44OS44OT44OOLOODkuODreOCtw0KK+OCs+ODkOODpOOCtyzjg6rjg6fjgqbjg5jjgqQNCivjg6/jgr/jg4rjg5ks44OS44Ot44K/44OADQor44OV44Kr44OALOODnuOCteODkuODrQ0KK+OCpOOCt+OCv+ODiyzjgqvjgrrjg5LjgrUNCivjgqTjg4cs44Oo44K344Om44KtDQor44OL44Kk44K144OILOODnuOCteODpuOCrQ0KK+OCueODiuODj+ODqSzjgrfjg6fjgqbjgrgNCivjgrfjg5/jgros44Oe44K144KqDQor44Kr44OI44KmLOODjuODquODpuOCrQ0KK+ODiuOCpOODiOOCpizjgrjjg6Xjg7PjgrgNCivjgrPjgqTjgrEs44OI44Km44K544KxDQor44Kt44K/44Og44OpLOODiOODqOODkuOCsw0KK+OCq+OCrOODryzjg4jjgrfjg6bjgq0NCivjgqTjgrHjg4As44K/44Kr44K3DQor44Kr44OO44KmLOOCv+OCq+OCtw0KK+OCquOCq+ODouODiCzjgr3jgqbjgrgNCivjgrPjg5Djg6Tjgrcs44K144OA44OS44OtDQor44Kk44K344KkLOODnuOCteODkuODrQ0KK+OCteOCqOOCrSzjg57jgrnjg6bjgq0NCivjgrXjg6/jg4As44K/44Kr44K3DQor44K044OI44KmLOODjuODluODpuOCrQ0KK+OCquODjizjg57jgrXjg5Ljg60NCivjg5Xjg4rjgqrjgqss44Oe44K144Ki44KtDQor44K344Oz44OkLOODnuOCteOCq+OCug0KK+ODm+ODs+OCtuODryzjg5Ljgqvjg6sNCivjg6Tjg57jgqbjg4Es44K344Ky44K4DQor44Kk44K344OOLOODhOODiOODoA0KK+OCpOOCquOCryzjg5Ljg4fjg4jjgrcNCivjgqLjg6njgq0s44Oo44Km44KzDQor44OV44K444Ov44KtLOODn+ODjuODqw0KK+OCpOODgeODoOODqSzjg57jgrXjgq0NCivjg4/jg6Tjgrcs44Oo44K344K144OADQor44Oi44OqLOOCv+OCr+OCuA0KK+OCreODoOODqSzjgrfjgrLjg6sNCivjg6bjgq3jg5Xjgq0s44Oe44K144OS44K1DQor44OP44Ku44Oi44OILOOCpOODr+OCqg0KK+ODj+OCt+ODouODiCzjg5Ljg4fjgqoNCivjgq3jgr/jg6Tjg54s44Oo44K344OG44OrDQor44OV44K444Oi44OqLOOCseODs+OCuA0KK+OCquOCr+ODjizjgqrjgrXjg6ANCivjg6Tjg57jg4As44Of44OE44KqDQor44K/44K0LOOCv+OCq+OCtw0KK+OCouOCteOCpCzjg6jjgrfjg5Ljg60NCivjg6Ljg6rjg44s44OS44Ot44K3DQor44Of44OK44KkLOOCseOCpOOCsw0KK+ODouODquOCteODryzjg4jjg6jjgrMNCivjg4rjg6rjgrXjg68s44OV44Of44KzDQor44Oi44Oq44Oi44OILOODnuOCteODqw0KK+OCs+ODkOODpOOCtyzjg6jjgrfjg47jg6oNCivjgrfjg57jg4As44OS44OH44KtDQor44K544K644KtLOODn+OCteOCsw0KK+ODleOCr+ODgCzjgrHjgqQNCivjgqLjg6njgqQs44Ki44Kt44OO44OWDQor44K/44OL44Ok44OeLOOCt+ODpeOCpuOCpOODgQ0KK+OCquOCq+ODouODiCzjg57jg4TjgqoNCivjg4DjgqTjg6Ljg7Ms44Of44OO44OrDQor44OP44Ok44K3LOODqOOCt+ODiuOCqg0KK+OCpOOCt+ODgCzjg5Xjgq/jgqoNCivjg5Ljg63jgrXjg68s44Oo44K344Of44OBDQor44Oo44K344Kq44KrLOODnuOCteOCuuODnw0KK+ODnuODhOODouODiCzjgrfjg7PjgqTjg4ENCivjg4rjgqvjgrjjg54s44K144Kr44KoDQor44Kt44K/LOOCteODiuOCqA0KK+ODi+OCt+ODoOODqSzjgrfjgrLjgqvjgroNCivjg4/jg4Pjg4jjg6os44OS44OH44KqDQor44Ok44Oe44Oi44OILOOCq+OCuuOCqg0KK+OCpOODiOOCpizjgqLjgq3jg6kNCivjgq3jgr/jg6Djg6ks44Oe44K544OfDQor44K/44OK44KrLOODiOODn+OCqg0KK+OCpOOCquOCrSzjg4jjg5/jg6TjgrkNCivjgqvjg57jgr8s44Kz44Km44K4DQor44K344Of44K6LOODkuODreOCtw0KK+ODnuOCueOCquOCqyzjg5Ljg4fjgqoNCivjgrXjg6/jg4As44K344On44Km44KzDQor44OK44Kr44Kk44K3LOOCv+OCseODpuOCrQ0KK+ODr+OCv+ODiuODmSzjg57jgrXjg5Ljg60NCivjg6jjgrfjgrbjg68s44Ki44Kt44KqDQor44K144K144Kq44KrLOODjuODquOCouOCrQ0KK+ODpOODnuOCsOODgSzjg4jjgrfjgqoNCivjgqTjg57jg5Xjgq8s44K/44OA44K3DQor44Kr44Of44OkLOODiOODn+OCqA0KK+ODr+OCtSzjg5Ljg4fjgqoNCivjgq3jgq/jg4Es44Ki44Kt44OS44KzDQor44Km44Kr44KkLOODn+OCreOCqg0KK+OCpOODr+ODnizjgrvjgqTjgqTjg4ENCivjg4Tjgrgs44OW44Oz44K4DQor44K/44Kx44OALOOCteODgOODhOOCsA0KK+OCu+ODiOOCrOODryzjgrfjgrLjg4jjgrcNCivjgrPjgrfjg6Djg6ks44Oe44K144K3DQor44Ov44K/44OK44OZLOOCuOODpeODs+OCpOODgQ0KK+OCpuOCteODnyzjg5/jg4Tjg47jg5YNCivjgqrjgqvjg4As44OI44K344OS44KzDQor44OV44K444Ov44OpLOOCt+ODp+OCpuOCuA0KK+OCq+ODiOOCpizjg6Tjgrnjg6bjgq0NCivjgqTjgrfjg4/jg6ks44Oe44K144OrDQor44OS44OK44K/LOOCreODp+OCpuODmOOCpA0KK+OCpuOCqOOCueOCrizjgrfjgrLjg5Ljg60NCivjgrfjg5Djgr8s44OO44OW44Kr44K6DQor44Kq44Kv44OALOODnuOCteODqw0KK+OCueODiuODpOODnizjg6jjgrfjgqoNCivjgqTjg57jgqQs44Ki44Kt44OS44KzDQor44OK44Kr44Og44OpLOODjuODluOCqg0KK+ODiuOCq+ODouODqizjgrPjgqbjgrgNCivjg5XjgqvjgrXjg68s44Og44ON44OS44K1DQor44Of44K644K/LOOCt+ODs+OCpOODgQ0KK+OCquODjizjgqvjgrrjgrcNCivjgrXjgqTjg4jjgqYs44OS44Ot44K3DQor44K344Ol44OJ44KmLOODn+ODjuODqw0KK+ODleOCr+OCpCzjgr/jg4Tjg5LjgrMNCivjg47jg4As44Kr44OK44KoDQor44Kq44Kq44OOLOODj+ODq+OCrQ0KK+OCs+OCrOODnyzjg6jjgrfjg57jgrUNCivjg5/jgq0s44Oe44K144Om44KtDQor44Kk44Kx44OALOODleODn+OCqg0KK+ODleOCuOODouODqizjg4jjgrfjg5LjgrMNCivjgr/jgqvjg4As44Kr44K644KqDQor44Kk44Kx44OALOODjuODluOCvuOCpg0KK+OCpOODiOOCpizjg47jg5bjgr/jgqsNCivjg6/jgr/jg4rjg5ks44Kr44K644OS44OtDQor44K144Ov44OALOODnuOCteODleODnw0KK+ODnuOCqOOCuOODnizjg57jgrPjg4gNCivjgqTjg4rjg6Djg6ks44K544K544OgDQor44OK44Kr44Og44OpLOODkuODreOCtw0KK+ODiuOCq+OCuOODnizjgrfjg47jg5YNCivjgqTjg6/jg54s44Oo44K344Om44KtDQor44Ov44Kr44OE44KtLOODkuODh+OCrQ0KK+ODj+OCu+OCrOODryzjg6jjgrfjg63jgqYNCivjgqTjg47jgqbjgqgs44K/44Kr44K3DQor44Kr44K144OP44OpLOOCs+OCpuOCuA0KK+ODi+OCt+ODpOODnizjg57jgrXjg5Ljg60NCivjgrnjg4njgqYs44K444Ol44Oz44Kk44OBDQor44Kq44Kr44OZLOODiOOCt+ODkuODrQ0KK+ODleOCr+ODkCzjgrHjg7PjgrgNCivjg57jg4Tjg4rjgqws44Ok44K544KqDQor44K144Kr44KkLOODkuODreODkuOCsw0KK+ODleOCuOOCvyzjg6bjgq3jgqoNCivjg4rjgqvjg6Tjg54s44K/44Kr44Ok44K5DQor44Oo44ON44OALOOCseODs+OCvuOCpg0KK+OCr+ODnuOCvyzjgrPjgqbjgqTjg4ENCivjgrPjg6Tjg54s44OS44Ot44Om44KtDQor44Oo44ON44Ok44OeLOOCv+OCseOCtw0KK+ODleOCuOOCq+ODryzjgrHjg7PjgrgNCivjg4/jg6rjgqzjg6Qs44OS44Ot44Ki44KtDQor44OP44K744Ks44OvLOOCq+OCuuODkuODiA0KK+ODqOOCt+ODgCzjgr/jg4DjgrcNCivjgq/jgrnjg47jgq0s44Oo44K344OV44OfDQor44K/44Kr44OP44K3LOOCteODgeOCsw0KK+ODiuOCrOOCvyzjgrfjg7PjgrgNCivjgr3jg47jgq/jg6ks44OS44Ot44K3DQor44Oe44K544Oi44OILOODqOOCt+OCqg0KK+OCquOCruODj+ODqSzjg5Ljg63jgrcNCivjg6jjgrfjg4As44Oe44OK44OWDQor44K/44OK44KrLOODnuOCteODkuOCsw0KK+OCqOODgCzjgrvjgqTjgqTjg4ENCivjg4rjgqss44K/44Oi44OEDQor44Kk44Kk44K644KrLOODjuODnOODqw0KK+ODhuODqeODi+OCtyzjg57jgrXjg47jg5YNCivjg5Xjgq/jgqQs44K744Kk44K4DQor44OH44Og44OpLOOCq+OCuuODkuOCsw0KK+OCteOCqOOCrSzjgrfjgrLjg4/jg6sNCivjgqbjg4Hjg4As44OS44OH44OO44OqDQor44K344Kk44OKLOODjuODluOCqg0KK+ODleODq+ODpCzjg6jjgrfjg4/jg6sNCivjg4rjgqzjgq/jg5ws44Kq44K144OgDQor44OG44Op44Km44OBLOODkuODh+OCouOCrQ0KK+OCquOCquOCv+OCqyzjg57jgrXjgqLjgq0NCivjg5Xjgrjjg6jjgrcs44OI44Kq44OrDQor44K144Kk44OI44KmLOODnuOCteOCqg0KK+OCr+ODreOCteODryzjg5XjgrXjgqgNCivjgqTjgrfjgqvjg68s44Kx44Oz44K944KmDQor44Oo44K344OOLOOCv+OCq+OCtw0KK+OCs+ODn+ODpCzjgqvjgrrjg6jjgrcNCivjg6Tjg57jgqzjgr8s44OI44K344KqDQor44OE44OkLOOCq+OCquODqw0KK+ODi+OCt+ODjizjg47jg6rjg6bjgq0NCivjgqbjg4Hjg4As44OS44K144KqDQor44Ov44K/44OK44OZLOOCq+OCuuODn+ODgQ0KK+ODouODquOCvyzjg47jg5zjg6sNCivjgrPjgrfjg4As44Kz44Km44K+44KmDQor44OS44Ot44K7LOODquODp+OCpuODmOOCpA0KK+ODqOOCt+ODoOODqSzjgqvjg4Tjg4jjgrcNCivjg5/jgqbjg6ks44Oo44K344Kr44K6DQor44Kz44Kk44K644OfLOODkuODh+ODjuODlg0KK+ODhuODqeOCqizjg5/jg4Tjg5Ljg60NCivjgrvjgqzjg68s44Of44OB44KqDQor44Kr44Kk44K644KrLOOCouOCreODqQ0KK+ODleOCr+ODnuOCuSzjgrnjgrrjg6gNCivjgqTjg4jjgqbjgros44K4DQor44K744Kt44Ks44OfLOODkuODreOCtw0KK+ODleOCuCzjgqTjgrrjg58NCivjg6jjgrfjg6Djg6ks44Kt44Oo44K4DQor44OV44Or44Oi44OILOODqOOCt+ODpuOCrQ0KK+OCv+OCreOCvyzjg57jg4rjg5YNCivjgqrjgqvjg4As44OS44Ot44OS44K1DQor44K/44Kr44OP44K3LOOCouOCreODqQ0KK+OCv+ODi+ODleOCuCzjg57jgrXjgqLjgq0NCivjgqTjg57jgqrjgqss44Kr44K644OS44OtDQor44Ov44K/44OK44OZLOOCseODs+OCuA0KK+ODpOODnuODouODiCzjgqvjgqrjg6sNCivjg6jjg4As44Ok44K544KqDQor44OV44Kr44Ok44OeLOODkuODreOCtw0KK+ODpOODnuOCsOODgSzjg5LjgrXjgqoNCivjgrXjg44s44Kt44OfDQor44K/44Kr44OP44K3LOODpuODqg0KK+ODnuODhOODouODiCzjgq3jg6jjgrcNCivjg6Tjg44s44OS44K144K3DQor44Ki44Kt44OQLOOCq+OCuuODqOOCtw0KK+ODn+ODieODquOCq+ODryzjg5Ljg63jg5/jg4QNCivjgr/jgqvjgrcs44Of44Oo44KzDQor44OV44Or44Kr44OvLOODn+ODjuODqw0KK+ODkuOCreOCvyzjgqjjgqTjgrgNCivjgqrjgrbjgq0s44Oo44K344Ki44KtDQor44Ki44Kq44KtLOOCt+OCsuOCquODnw0KK+OCteOCqOOCsOOCtSzjg57jgrXjg5Ljg60NCivjg5Xjgrjjg6Ljg4gs44OS44Ot44K3DQor44Kz44OL44K3LOODpuOCpuOCuA0KK+OCquOCquODi+OCtyzjgrfjg6Xjg7PjgrnjgrENCivjg5LjgrDjg4Es44OV44K444KtDQor44Kv44Oc44K/LOOCuOODpeODs+OCpOODgQ0KK+ODpOODnuOCsOODgSzjgrfjg63jgqYNCivjg5Xjg6vjgqvjg68s44Oe44K144OIDQor44OK44Oq44K/LOOCpOODgeODreOCpg0KK+OCv+ODiuOCqyzjg5XjgrXjgqTjg4ENCivjg4/jgr/jgrHjg6Tjg54s44OG44OE44KqDQor44Of44Ok44Oi44OILOODn+OCteOCqg0KK+ODjuOCtuOCrSzjg6Tjgrnjg4/jg6sNCivjg4/jgrvjgqzjg68s44OB44On44Km44K344Ot44KmDQor44K344Op44Kr44OvLOODqOOCt+ODkuOCsw0KK+OCouOCpOODgCzjgrPjgqbjg5jjgqQNCivjg5Ljg63jgqvjg68s44OS44Ot44K3DQor44Oq44Ol44Km44Kr44OvLOODhOODqOODoA0KK+ODpOODnuOCsOODgSzjg57jgrnjg58NCivjgq/jg6rjgrXjgq0s44OS44OH44KqDQor44Oi44Oq44Oi44OILOODqOOCt+ODn+ODgQ0KK+OCr+ODnOOCvyzjg57jgrXjgqLjgq0NCivjgq/jg57jgrXjgrMs44Oi44Oq44K344KyDQor44Ki44OA44OBLOOCseODs+OCvw0KK+OCs+ODs+ODjizjg5Ljg63jgqLjgq0NCivjg6Tjg57jg6Ljg4gs44Ko44OE44KzDQor44Kk44Ov44KkLOODquODp+OCpuOCvw0KK+OCquOCquODj+ODqSzjg5Ljg4fjgqoNCivjgqTjgrfjg4/jg6ks44OI44Oi44OO44OqDQor44Ki44Kq44KtLOOCv+OCseOCtw0KK+ODouODqizjg6jjg6rjgrMNCivjg63jg4Pjg53jg7Pjgq4s44Oe44K144Ki44KtDQor44Kr44OI44KmLOOCs+OCpuOCpOODgQ0KK+OCteODiOOCpizjg6TjgrnjgqoNCivjg57jgqjjgr7jg44s44Ko44Kk44K444Ot44KmDQor44OV44K444Oi44OILOODkuODh+ODjuODlg0KK+OCv+ODi+ODoOODqSzjg5Ljg63jgrcNCivjg4rjgqvjg4vjgrcs44Om44K/44KrDQor44K/44Kr44OP44K3LOOCt+ODs+OCuA0KK+ODiuOCq+OCpCzjgqvjgrrjg58NCivjgr/jgqvjg4/jgrcs44K/44Kx44OV44OfDQor44K344OiLOODpuOCpuOCpOODgeODrQ0KK+OCt+ODkOOCvyzjgqTjgrXjg6ANCivjg5Xjg6vjg5/jg4Es44Oo44K344KqDQor44K/44Kx44OALOOCouOCreODqQ0KK+ODleOCuOOCvyzjg5Ljg63jgrcNCivjgqvjgq7jg6Tjg54s44OG44OE44OkDQor44Ov44OBLOODnuOCteODjuODqg0KK+ODleOCuOOCvyzjg5Ljg4jjgrcNCivjgrPjg7Pjg4ks44K344Ky44OO44OqDQor44Oe44OE44Oi44OILOOCv+OCq+OCtw0KK+ODleOCr+OCpCzjg5Ljg4fjg6bjgq0NCivjgrnjgqzjg6/jg6ks44Kz44Km44K444On44KmDQor44OV44Kr44Ok44OeLOOCouOCreODqQ0KK+OCpOODnuOCpCzjg57jgrXjgr/jgqsNCivjgrXjg4jjgqYs44Kv44OL44OS44KzDQor44Kr44OK44K244OvLOOCq+OCuuOCqg0KK+ODleODgeOCtuOCrSzjgqrjgrXjg6ANCivjg4Tjgqvjg4As44K344On44Km44Kk44OBDQor44Kk44K344K244KtLOOCv+OCq+ODpuOCrQ0KK+ODiOOCr+ODqSzjg5/jgq3jgqoNCivjg4jjg47jgrXjgq0s44Oi44OI44Oo44K3DQor44K/44Kr44KtLOODkuODh+OCqg0KK+ODleOCuOOCvyzjg5Ljg63jg6bjgq0NCivjg4rjgqzjgrss44Os44Kk44KzDQor44K/44OK44KrLOODkuODreODpuOCrQ0KK+OCv+ODhOODnyzjg6jjgrfjgqLjgq0NCivjg6Tjg57jg6Ljg4gs44Om44Km44Kk44OBDQor44OV44Kv44K/LOOCv+OCq+ODiuOCqg0KK+OCr+ODr+ODj+ODqSzjg6jjgrfjg6bjgq0NCivjg5Xjgrjjgr8s44Ko44Kk44K+44KmDQor44Kk44OK44Kv44OeLOODiOOCt+OCsw0KK+ODn+OCteOCqizjgrPjgqbjgr7jgqYNCivjg4rjgqvjgrfjgr8s44Oe44Kz44OIDQor44Kq44Kv44Ok44OeLOODpuOCpuOCuA0KK+ODiuOCrOOCqCzjgqvjgrrjg5Ljg60NCivjg4rjgqzjgqQs44K344On44Km44K0DQor44Ok44Oe44K244KtLOODnuOCteODqw0KK+OCt+ODqeOCpOOCtyzjgrfjg6fjgqbjgqTjg4ENCivjgqbjgqjjg4As44K344Ky44OrDQor44Kq44K444OeLOODkuODreOCouOCrQ0KK+ODkuODreOCuyzjg57jgrXjg47jg5YNCivjg5Ljg6njg44s44Oe44K144OrDQor44OV44Or44K/LOOCv+OCq+OCqg0KK+OCs+ODjOODnizjgqvjgqrjg6sNCivjgr/jgqvjg6Tjg54s44OI44Oi44OP44OrDQor44Ki44K144K344K/LOODnuOCteODleODnw0KK+ODqOODhOODj+OCtyzjg5Ljg63jgrcNCivjg4Tjg4Hjg6Qs44K/44Kr44OfDQor44Kq44Kq44OL44K3LOOCpOOCteOCqg0KK+ODpOODnuOCsOODgSzjgrfjg6fjgqbjgrgNCivjgrfjgrrjg44s44Kk44K144OgDQor44OP44K344OZLOODquODp+OCpuOCpOODgQ0KK+ODm+ODquOCpCzjg5/jg6jjgrcNCivjg4rjgqzjgqrjgqss44OO44Oq44KzDQor44Kv44Oq44K/LOOCt+ODp+OCpuODmOOCpA0KK+OCreODkCzjgrXjg4rjgqgNCivjgqTjg4As44Oe44OB44KzDQor44OV44Kv44OI44OfLOOCq+OCuuODnw0KK+OCs+ODkOODpOOCtyzjg47jg5zjg6sNCivjgqTjg6os44Kx44Oz44Kk44OBDQor44K144K/LOODnuOCueOCsA0KK+ODnuODq+ODpOODnizjg5Ljg63jg5Xjg58NCivjgqLjgqrjg6Tjg54s44K344Ky44OrDQor44K344Oz44OJ44KmLOODpOOCueOCqg0KK+OCouOCpOOCq+ODryzjgq3jg6fjgqbjgrgNCivjgrXjgqvjg47jgqbjgqgs44Kx44Oz44Kk44OBDQor44OV44K444Oe44KtLOOCv+ODgOOCouOCrQ0KK+OCq+ODr+ODj+ODqSzjg57jgrPjg4gNCivjg6Djg6njgr8s44OS44OH44Om44KtDQor44Oo44K344OALOODpuOCpuOCpOODgQ0KK+OCpOOCv+OCr+ODqSzjg4bjg4Tjg6QNCivjgrjjgr7jg5Djg6ks44Oo44KmDQor44K/44OK44KrLOODiOOCt+OCqg0KK+OCq+OCuOODr+ODqSzjgrfjg6XjgqbjgqTjg4ENCivjgr/jg4rjgqss44Kq44K144OgDQor44OP44K544Kk44KxLOOCt+ODpeOCpuOCuA0KK+ODiOOCpuODnizjg6bjg5/jgrMNCivjgqvjg6/jgq3jgr8s44Ki44Kt44OpDQor44Oe44OE44Oi44OILOODpOOCueODkuOCsw0KK+ODj+OCu+OCrOODryzjg5/jg4TjgqoNCivjg5XjgrjjgqQs44OI44Kq44OrDQor44OO44Og44OpLOODn+ODgeOCv+OCqw0KK+ODqOOCpuOCs+OCvyzjg5Ljg4fjgqoNCivjgqvjg4rjgrbjg68s44Kz44Km44K+44KmDQor44Oe44K544Ok44OeLOOCt+ODs+OCpOODgQ0KK+OCq+ODjuOCpizjg5Ljg63jgrcNCivjg5Xjg4rjg6Tjg54s44Ko44OE44KqDQor44Ok44Oe44K344K/LOOCreODgeODkuOCsw0KK+OCteODiOOCpizjg57jgrXjgqvjgroNCivjgqvjg6Hjg6Ljg4gs44Oo44K344OV44OfDQor44Kk44OI44KmLOOCreODqOOCtw0KK+OCquOCr+ODoOODqSzjgrfjgrLjgqoNCivjg5XjgrjjgqQs44OG44Or44KqDQor44Kt44OP44OpLOOCv+OCq+OCtw0KK+ODjuODoOODqSzjg6rjgrXjgq8NCivjgqLjgq/jgr/jgqzjg68s44OE44OI44OgDQor44Kk44K344OALOOCr+ODi+OCqg0KK+OCpuODoeODj+ODqSzjgrfjgrLjg6sNCivjgqrjgqrjgq4s44OK44Kq44Om44KtDQor44Kz44Oz44OJLOODj+ODq+OCqg0KK+OCv+OCseODgCzjgrHjgqTjgrMNCivjg57jg4TjgqQs44OV44Of44Ko44KkDQor44Kr44Of44Kq44KrLOODnuOCteODqw0KK+OCq+ODouOCt+OCvyzjg5Ljg63jg58NCivjg6Tjg4rjgq7jgrXjg68s44K/44Kx44OS44OtDQor44K/44Kx44Km44OBLOODnuODouODqw0KK+ODouODs+ODnizjg5/jg47jg6sNCivjgqTjgqTjg4As44Kr44OK44KoDQor44OP44K744Ks44OvLOODiOOCt+OCuA0KK+ODiuOCrOODm+ODqizjg5Ljg63jgrcNCivjg6Ljg6rjgqrjgqss44K/44OA44OO44OqDQor44OL44K344Ok44OeLOOCouOCreOCqg0KK+ODpOODnuODouODiCzjg6TjgrnjgqoNCivjgqTjgrfjg4As44OI44K344KqDQor44OV44Or44OJLOODnuOCteOCqg0KK+OCq+ODs+ODgCzjg57jgrXjgqLjgq0NCivjgqTjgrfjg4As44K344Ky44OrDQor44K144Kk44OI44KmLOOCv+OCq+ODkuODrQ0KK+OCreODoOODqSzjg5Ljg4jjgrcNCivjgqTjg6/jg58s44Ok44K544OO44OWDQor44Oi44OqLOOCt+ODpeOCpuOCpOODgQ0KK+OCv+OCq+ODpOODnizjgrfjg6fjgqbjgr7jgqYNCivjg4/jg6TjgrfjgrDjg4Es44Ki44Kt44OS44KzDQor44K144Kk44OI44KmLOODpOOCueOCqg0KK+OCt+ODkOOCv+OCrSzjgq/jg4vjgqLjgq0NCivjgqrjgq7jg4/jg6ks44Oo44K344OP44OrDQor44Kr44OI44KmLOOCpOOCteODnw0KK+ODleOCr+ODiCzjg4rjgqrjg6QNCivjgqrjg4As44OS44OH44Ki44KtDQor44K144OI44KmLOODnuOCteODkuODrQ0KK+ODiuOCq+ODoOODqSzjg6bjgr/jgqsNCivjg4/jg57jg4As44K/44Kr44OS44OtDQor44Kq44Ks44K144Ov44OpLOODhuODhOODpA0KK+ODoOODqeOCrSzjgqvjgrrjg5LjgrMNCivjgqrjgqrjg4/jgrcs44Ki44Kt44OS44OIDQor44K/44Kr44OOLOOCv+OCq+OCtw0KK+ODiuOCq+OCtuODryzjgqvjgrrjg4jjgrcNCivjg5/jg6Tjgrgs44Ki44Kt44OS44OtDQor44K544Ko44OK44KsLOODpOOCueOCqg0KK+OCv+OCv+OCrSzjgqLjgq3jg6kNCivjg6jjgrfjg4As44Kk44Ov44KqDQor44Ki44Kq44KtLOODkuODh+OCtw0KK+OCueOCruODoOODqSzjgqvjgqrjg6sNCivjgqTjg4jjgqYs44Oe44K144OI44K3DQor44K/44Kr44OP44K3LOOCt+ODs+OCpOODgQ0KK+OCueOCuuOCrSzjgqTjgrXjg6ANCivjgqvjgr/jg6Tjg54s44OI44K344OS44KzDQor44K144Kk44OI44KmLOODnuOCteOCtw0KK+OCv+OCuOODnizjg5Ljg63jgrcNCivjgqLjg5ks44Oo44Km44Kk44OB44Ot44KmDQor44OK44Kr44K444OeLOOCt+OCsuOCrQ0KK+ODpOODnuOCsOODgSzjg57jgrPjg4gNCivjg6/jgq3jgrbjgqss44Oe44K144OS44KzDQor44K144KzLOOCteODgOODiA0KK+OCquOCquODhOOCqyzjg4jjg6Ljg5Ljg60NCivjg4Tjgqvjg6Ljg4gs44K544K544OgDQor44Kk44OO44Km44KoLOODleODn+OCqg0KK+ODiuOCrOOCqizjg4jjgqrjg6sNCivjgqbjg6njg5As44Oe44K144KqDQor44Kz44K444OeLOODpOOCueODkuODrQ0KK+OCv+OCseODgCzjg6bjgqbjgrgNCivjgqLjgqrjg44s44K444Oz44Kk44OBDQor44Kk44K644Kr44OvLOODjuODluOCqg0KK+OCr+ODieOCpizjgqvjgrrjgqLjgq0NCivjg4rjgqvjg6Djg6ks44OI44K344Om44KtDQor44Oe44OE44KqLOODnuOCteODleODnw0KK+OCpOODiuOCrOOCrSzjgrfjg7PjgqTjg4ENCivjg4vjgrfjg6Ljg4gs44K344On44Km44Kk44OBDQor44Kk44OO44Km44KoLOODkuODiOOCtw0KK+OCquODjuODh+ODqSzjg4bjg4Tjg6QNCivjgqTjgrfjgrbjgqss44OI44K344OS44KzDQor44OP44Ku44Ov44OpLOOCseODs+OCvuOCpg0KK+ODleODq+OCvyzjg57jgrXjg6sNCivjgqbjgqjjgrjjg54s44OI44Of44KqDQor44OM44Oe44K/LOOCt+ODpeOCpuOCpOODgQ0KK+OCqOODs+ODiSzjg57jgrXjg5Ljg60NCivjgqvjgqzjg6Tjg54s44K344Oz44OkDQor44Om44Oq44Oi44OILOODkuODiOOCtw0KK+ODleODgSzjgr/jg4DjgqoNCivjg5Xjgrjjgqrjgq0s44OS44Ot44OO44OWDQor44K144Kk44OI44KmLOODnuOCteODiOOCtw0KK+ODnuODhOODouODiCzjg5/jg4TjgqLjgq0NCivjg5Ljg63jgrss44Oo44K344Kr44OEDQor44OQ44OQLOOCuOODpeODs+OCpOODgeODrQ0KK+OCs+ODkOODpOOCtyzjg5Ljg63jg6bjgq0NCivjgrnjgrrjgq0s44Oe44K144OfDQor44OK44Kr44Ok44OeLOOCq+OCuuOCqg0KK+OCreOCtyzjg5Ljg63jgrcNCivjgqLjgrXjg44s44Oe44K144Kr44K6DQor44Ko44Oz44OJLOOCouOCreOCqg0KK+OCpOOCt+ODkOOCtyzjg4DjgqTjgrQNCivjgqvjgqTjg4As44Of44OE44KqDQor44Kk44Kx44K444OeLOODkuODh+OCouOCrQ0KK+ODj+ODqeODgCzjg4jjgrfjgqoNCivjg4/jg57jg44s44Kz44OO44OgDQor44Kr44Ov44KkLOODn+ODgeODqw0KK+ODr+ODgCzjg4jjgrfjg57jgrUNCivjgrXjg4jjgqYs44OS44Ot44K3DQor44K/44OK44KrLOOCu+OCpOOCuA0KK+OCouOCr+ODhCzjg6jjgrfjg47jg6oNCivjgqTjg4jjgqYs44Kt44Oo44OfDQor44Ki44Oz44OJ44KmLOOCpOODr+OCuA0KK+OCouOCpOOCtuODryzjg5Xjg4jjgrcNCivjgq/jg5zjgr8s44Kt44Oo44K3DQor44OV44Kr44Km44OfLOOCteODiOOCtw0KK+OCt+ODn+OCuizjg5Ljg4jjgrcNCivjgr/jgqvjg4/jgrcs44K144OI44K3DQor44OK44Of44KtLOODhuODhOODreOCpg0KK+ODjuOCtuODryzjg6TjgrnjgrcNCivjgrPjgqTjgr/jg5Djgrcs44Kt44Oo44OS44OtDQor44K/44OG44Kk44K3LOODkuODreODnw0KK+OCq+ODr+OCq+ODnyzjgqvjgrrjgqoNCivjgrPjg5Djg6Tjgrcs44Kr44K644OO44OqDQor44Kq44OO44K644KrLOODkuODh+OCqg0KK+OCv+OCsOODgSzjg5/jg4TjgrANCivjgr/jgqvjg4/jgrcs44Oe44K144Ki44KtDQor44K144OI44KmLOODpOOCueODkuODrQ0KK+OCr+ODr+ODj+ODqSzjgrfjg63jgqYNCivjgrvjg4gs44K144OI44K3DQor44K044KxLOODkuODh+OCrQ0KK+ODqOOCt+ODoOODqSzjgq3jg6jjgrcNCivjgr/jgqvjg6Tjg54s44OO44OW44Om44KtDQor44K144K144KtLOODpuOCreOCqg0KK+OCq+ODjuOCpizjgrfjgrLjgq0NCivjgr/jgqvjg4/jgrcs44K344Ky44OP44OrDQor44OK44Ks44Kq44KrLOODiOODouODpuOCrQ0KK+OCueOCuuOCrSzjg5Ljg4fjgq0NCivjg6Tjg57jgrDjg4Es44Ki44Kt44OpDQor44Oi44OqLOOCteODiOODqw0KK+OCueOCuuOCrSzjgqTjg4TjgqoNCivjgqbjgqjjg6Djg6ks44Oe44K144OI44K3DQor44Ok44OW44OP44OpLOODn+ODhOODqOOCtw0KK+OCt+ODqeOCpOOCtyzjgqvjgrrjgq0NCivjgq3jgq/jgr8s44Oe44K144OO44OWDQor44OK44Kr44KkLOODn+ODhOODjuODqg0KK+OCr+ODqeODouODiCzjg6bjgr/jgqsNCivjgrnjg5/jg6jjgrcs44OS44OH44KqDQor44K/44Kr44KuLOODkuODreODkuOCtQ0KK+OCt+ODp+OCpuOCuCzjg47jg6rjgqoNCivjgqrjgrXjg4As44Oe44K144Om44KtDQor44Ki44K144OOLOOCteODiOOCtw0KK+OCpOODr+OCtSzjgq3jg6jjgrcNCivjg5Djg5As44Om44K/44KrDQor44OS44Ot44K/LOOCteODiOODqw0KK+ODleOCuOODouODiCzjg5/jgrXjgrMNCivjgrXjg44s44Oe44K144OrDQor44Oi44OI44KtLOODpOOCueODpuOCrQ0KK+OCpOODiOOCpizjg57jgrXjg47jg6oNCivjgqbjgrHjgqzjg68s44OV44Of44KqDQor44Km44Oh44OQ44Ok44K3LOOCpOOCteOCqg0KK+OCpOODiuODiOODnyzjgqvjgrrjg6jjgrcNCivjgr/jgqvjg6Tjg4rjgq4s44Oe44K144Ki44KtDQor44OP44OpLOOCpOOCteOCqg0KK+ODiuOCq+ODj+ODqSzjg5bjg7Pjg63jgqYNCivjgrXjgqTjgr/jgrEs44K744Kk44K4DQor44Kr44K344Ok44OeLOODkuODreOCtw0KK+OCteOCq+OCpCzjg4jjg6Ljg6bjgq0NCivjgqTjg4jjgqYs44OO44Oq44Kr44OEDQor44OK44Kr44Og44OpLOODqOOCt+ODjuODlg0KK+OCquOCquODjuOCrizjgr/jgrHjgrcNCivjgqTjgqvjg58s44Om44K/44KrDQor44K/44Kr44OP44K3LOOCt+ODs+OCpOODgQ0KK+OCt+OCpOODiizjg4jjg5/jgqoNCivjgr/jg57jg47jgqQs44K344On44Km44Kk44OBDQor44Kv44OcLOODkuODh+OCouOCrQ0KK+OCreODoOODqSzjgr/jgqvjgrcNCivjg5vjg4Pjgr8s44OS44OI44K3DQor44Ob44Kr44OqLOOCv+OCq+ODpuOCrQ0KK+OCteODiOOCpizjgqLjgq3jgqoNCivjg5vjgrfjg44s44K344Ol44Km44Kk44OBDQor44Kr44OW44Op44KuLOODiOOCt+ODkuODrQ0KK+OCquOCteODgCzjg4jjgrfjg5Xjg58NCivjgrnjgqjjg5Ljg60s44K/44Kr44KqDQor44Og44Op44Kr44OvLOODqOOCt+ODnw0KK+OCpOODr+OCteOCrSzjgrHjg7PjgrgNCivjg6Tjg57jg6Djg6ks44K344Oz44K4DQor44Oi44Oq44K/LOOCv+ODhOOCqg0KK+OCpOOCseODgCzjg6jjgrfjg47jg6oNCivjg6Tjgqbjg4Es44OS44Ot44K3DQor44Ok44Oe44K344K/LOOCq+OCuuODkuODhw0KK+ODr+OCv+ODiuODmSzjg5Ljg63jgrcNCivjgqLjg4rjg7Ms44Ko44OE44K4DQor44OL44K344OOLOOCv+ODhOODreOCpg0KK+OCs+OCt+ODn+OCuizjg6TjgrnjgqoNCivjgr/jgqvjg4/jgrcs44Kr44K644KqDQor44Ko44Ks44OvLOODiOOCt+OCqg0KK+ODpOODnuOCtuOCrSzjgr/jg4Tjg5Ljg60NCivjgqTjg57jgrzjgq0s44Oo44K344OV44OmDQor44K544K644KtLOODkuODh+OCrQ0KK+ODi+OCt+ODj+ODqSzjg6bjgqbjgqTjg4ENCivjgqrjgqvjg5ks44Kk44K144OgDQor44K144Kr44KkLOODnuOCteODkuODrQ0KK+OCv+ODgCzjg4jjgrfjgqoNCivjgrnjgqjjg6jjgrcs44Of44Kt44KqDQor44OP44Ok44K3LOOCpOOCv+ODqw0KK+OCv+OCq+ODj+OCtyzjgrHjg7PjgrgNCivjgrPjgqLjgrcs44OP44K444OhDQor44Oi44Oq44Kr44OvLOOCqOOCpOOCtw0KK+OCq+ODiOOCpizjg6Tjgrnjgq/jg4sNCivjg57jgqjjg5As44Oe44K144OS44OtDQor44Ok44OOLOOCv+ODhOOCqg0KK+OCpOODiOOCpizjg6jjgrfjg4/jg6sNCivjg4rjgqvjgqQs44OS44Ot44K3DQor44Kq44OA44Ku44OqLOOCq+OCuuOCqg0KK+OCqOODs+ODiSzjg4bjg4TjgqoNCivjgr/jgrHjgqQs44Ok44K544Om44KtDQor44OK44Kr44K/44OLLOODn+ODgeODjuODqg0KK+OCpOODr+OCteOCrSzjg4jjg6Ljg5Ljg60NCivjgqvjg6njgqvjgrUs44Ki44Kt44OS44OtDQor44Ki44K144OOLOOCseODs+OCpOODgQ0KK+OCpOODr+ODluODgSzjg57jgrXjg6sNCivjg4/jg7Pjg4As44OI44Kq44OrDQor44OG44Op44KqLOODqOOCt+ODpuOCrQ0KK+OCv+OCseOCpCzjg6jjgrfjg6Ljg4gNCivjg4/jgrfjg6Ljg4gs44Oo44K344OfDQor44Of44Ok44K144KrLOODhOODiOODoA0KK+ODhuODqeODgCzjgqTjg4Hjg63jgqYNCivjgrXjgqvjgr8s44Ok44K544Om44KtDQor44OK44Ks44OkLOOCq+ODhOODnw0KK+ODj+OCt+ODouODiCzjgrHjg7PjgrgNCivjgqrjgqrjgq/jg6ks44OE44OI44OgDQor44OK44Kr44K144KtLOODn+ODhOOCsA0KK+OCreODquODj+ODqSzjg4jjgrfjg6bjgq0NCivjgqLjg6njgqQs44K344Ol44Oz44K4DQor44Kk44Ov44OOLOODkuODreODpuOCrQ0KK+ODj+ODg+ODiOODqizjg5Ljg63jg47jg6oNCivjgrnjgrrjgq0s44OI44Kq44OrDQor44OL44K344OP44OpLOODkuODreOCtw0KK+OCteOCteOCrSzjgrfjgrrjgqoNCivjg4/jg4rjg5XjgrUs44OE44OI44OgDQor44OO44OJ44OOLOOCv+ODhOODpuOCrQ0KK+OCq+ODr+ODkOOCvyzjgq/jg4vjgqoNCivjgrfjg5/jgros44Oo44K344OK44KqDQor44OK44Ks44K344OeLOODhOOCsOODkuOCsw0KK+ODouODqizjgqvjgrrjgqoNCivjgrfjg5/jgros44K344Ky44Ki44KtDQor44OS44K144Ok44K5LOOCseOCpOOCvuOCpg0KK+OCq+OCv+OCpuODqSzjgrfjgrLjg6bjgq0NCivjgr/jgrHjg6Djg6ks44Ki44Kt44Of44OEDQor44Kk44Oe44OL44K3LOODnuOCteODiA0KK+OCquOCq+ODgCzjgqLjgq3jg5LjgrMNCivjg4rjgqvjgqgs44Kq44K144OgDQor44K344Ot44OOLOOCuOODpeODs+OCpOODgQ0KK+ODqOOCs+ODpOODnizjg47jg5bjgqoNCivjgqrjgqvjgrbjg68s44Oe44K144OS44KzDQor44Kr44OfLOODjuODquODiOOCtw0KK+OCr+ODnuODmSzjg57jgrXjgqoNCivjgrfjg5/jgros44K/44OE44Ot44KmDQor44Ok44OK44Ku44K144OvLOOCt+ODp+OCpuOCpOODgQ0KK+ODnuOCreODjizjg6bjgqbjgrgNCivjgrXjg68s44Ov44K/44OrDQor44Km44K344Ot44OALOOCr+ODi+OCqg0KK+ODnuODgeODgCzjg4TjgqvjgrUNCivjgrPjg5Djg6Tjgrcs44K/44Kr44KqDQor44K344Ky44Og44OpLOODiOOCt+ODj+ODqw0KK+ODkuOCsOODgSzjgr/jgqvjgrcNCivjgqTjgqTjg4zjg54s44Oe44K144Om44KtDQor44Kk44K644OfLOODn+ODjuODqw0KK+ODj+ODpOOCtyzjg5Ljg63jg4jjgrcNCivjg6Tjgq4s44OB44OP44OrDQor44Kq44Kq44Kr44Ov44OpLOOCreODqOOCv+OCsQ0KK+ODleOCr+OCquOCuCzjgqrjgrXjg6ANCivjgqbjgqzjgrjjg7Ms44Oe44K144OfDQor44K/44OK44OZLOOCt+ODsw0KK+OCtOOCt+ODnizjg57jgrXjg5Ljg4cNCivjgqLjg7Pjg4njgqYs44OS44Ot44K3DQor44Kq44OA44OeLOODpuOCreOCqg0KK+OCquOCq+OCtuOCrSzjgqTjg6/jgqoNCivjgqTjgrfjgqvjg68s44OV44Of44Om44KtDQor44Og44Op44Ok44OeLOODnuOCteOCsw0KK+ODj+ODpOOCteOCqyzjgrHjgqTjgrgNCivjg4rjgqvjgrjjg54s44K/44KvDQor44K/44Kx44Oi44OILOODqOOCt+ODnw0KK+OCreOCv+OCuOODnizjgrjjg6Xjg7PjgrMNCivjg5/jgqvjg58s44OK44OfDQor44Ov44Op44K344OKLOOCuOODpeODs+ODpA0KK+OCreODoOODqSzjgrfjg7MNCivjgqrjgrbjg68s44Oo44K344Kr44K6DQor44Ok44Oe44Og44OpLOODkuODiOOCtw0KK+ODqOOCt+ODgCzjgrfjgrLjgq0NCivjgr/jg4Hjg5Djg4os44K/44Kv44Ot44KmDQor44Oe44OE44Oi44OILOODjuODquODjuOCueOCsQ0KK+ODn+OCt+ODnizjg5Ljg4fjgqLjgq0NCivjgrvjgq0s44OS44Ot44K3DQor44K/44Kr44OP44K3LOODpOOCueODkuOCtQ0KK+OCquOCquOCpOOCsSzjg57jgrXjgrcNCivjg5Xjgrjjg6Ljg4gs44K344Ol44Km44K4DQor44Oo44K344Og44OpLOODjuODluODkuOCsw0KK+OCs+ODkOODpOOCtyzjg6HjgqTjgrgNCivjgqrjgqrjgqzjg58s44Oo44K344Om44KtDQor44Kr44KkLOOCt+ODp+OCpuOCv+ODreOCpg0KK+OCq+OCqOODhCzjg57jgrXjg4/jg6sNCivjg6Ljg63jgqQs44K/44Kr44OS44OtDQor44Of44K644OOLOOCpOOCr+OCqg0KK+OCquOCquODhOOCqyzjgqLjgq3jg5LjgrMNCivjgqrjgqrjgr8s44Kr44Kq44OrDQor44K744Kt44ONLOODquODpeOCpuOCuA0KK+ODn+ODpOOCsOODgSzjgqvjgrrjgr/jgqsNCivjg6jjg43jg4As44OK44Ob44KzDQor44Ob44Oq44Km44OBLOODnuOCteOCsw0KK+OCqOOCsOODgSzjgqvjg4Tjg58NCivjgqbjgrfjg63jg57jg4Qs44Kr44K644OfDQor44Kk44Kk44OALOODpuOCreODkuODrQ0KK+ODqOOCt+ODgCzjg6jjgrfjg58NCivjg4rjgqvjgrss44Ki44Kt44KqDQor44K544K644KtLOODpuOCpuOCsw0KK+OCquOCpOOCq+ODryzjgqjjgqTjgrMNCivjgqvjg6/jg5ks44K144OE44KzDQor44K/44OL44K244OvLOOCv+OCq+OCqg0KK+OCq+ODjeOCsyzjg4/jg6vjg6gNCivjg5Xjgrjjgqrjgqss44Kx44Kk44KzDQor44Og44Op44Kq44KrLOODhOODqOOCtw0KK+OCpuODjOODnizjgrHjgqTjgrMNCivjg5/jg6TjgrEs44OV44Kt44KzDQor44OK44Kr44Og44OpLOODgeOCouOCrQ0KK+OCquOCquODryzjg57jgrXjg4/jg6sNCivjg43jg6Ljg4gs44Kk44OB44Ot44KmDQor44OL44K344Og44OpLOODiOODouODkuOCtQ0KK+OCv+ODhOODnyzjgqTjg6/jgqoNCivjgrXjg4jjgqYs44Ki44Kt44KqDQor44K544OO44OP44OpLOODiOOCt+ODkuOCsw0KK+OCouOCueODnizjgq3jg6jjgqvjgroNCivjgr/jgqvjg5As44OO44OW44Ki44KtDQor44Oo44K344Og44OpLOOCteODiOOCtw0KK+OCouODmSzjg4rjgqrjg4gNCivjgq3jgq/jg4Es44Kx44Kk44K4DQor44OK44Kr44Og44OpLOOCq+OCuuODnuOCtQ0KK+ODj+ODoOODqSzjg4Tjg4jjg6ANCivjgrnjgrrjgq0s44OO44OW44OS44OIDQor44Kr44Ov44Og44OpLOODiOOCt+ODpA0KK+ODkuODk+ODjizjg5LjgrXjgqgNCivjgq3jgr/jg4As44Oe44K144OS44OtDQor44K144OI44KmLOODhOODjeOCqg0KK+OCq+ODiOOCpizjgqvjgrrjgqoNCivjgqTjg4jjgqYs44Om44Km44K4DQor44OV44Kv44OI44OfLOODnuOCteODqw0KK+ODoOODreOCuuODnyzjg57jgrXjg5Ljg60NCivjg6Tjg57jg4rjgqss44K444Ol44Oz44Kk44OBDQor44Kq44Kr44OALOOCseODs+OCpOODgQ0KK+ODiOOCpuOCtOOCpizjgr/jgrHjgrcNCivjg4rjg6rjgr8s44K/44Kr44K3DQor44Kk44Kx44K244KtLOOCv+OCseOCtw0KK+OCq+ODr+ODkOOCvyzjgrfjg63jgqYNCivjg57jg4Tjgqrjgqss44OO44OW44KqDQor44OK44Kr44OALOODkuODreOCtw0KK+OCteODiOOCpizjgrfjg7Pjg6QNCivjgr/jgrHjgrbjg68s44Oo44K344OS44OtDQor44Ok44OK44Ks44OvLOODkuODreOCtw0KK+ODpOODnuOCteOCrSzjg47jg6rjg6bjgq0NCivjgrfjgqzjgq0s44OO44Oq44Ki44KtDQor44Om44OfLOOCv+OCseOCtw0KK+OCquOCtuOCrSzjg4Tjg4jjg6ANCivjg4rjgqzjgrfjg54s44K/44Kk44K544KxDQor44Ok44OW44Km44OBLOODkuOCteOCqg0KK+ODm+OCveODpCzjg5LjgrXjgrcNCivjg4vjgrfjgrbjg68s44K944Km44K4DQor44OP44Ok44OfLOODqOOCt+OCqg0KK+ODj+OCu+OCrOODryzjg4rjgqrjg58NCivjgqvjg6/jgrXjgq0s44Kr44OE44OS44KzDQor44OI44Oo44Kk44K644OfLOOCv+OCq+ODpuOCrQ0KK+OCquOCr+ODoOODqSzjg57jgrXjg4gNCivjg6Tjg57jg4As44OO44OW44OS44OtDQor44OL44OvLOOCqOOCpOODkuOCsw0KK+ODi+OCt+OCtuOCrSzjg5Ljg63jgrcNCivjgrnjgq7jg6Ljg4gs44K344Ky44OrDQor44Kq44Kq44K144OvLOODiOODouODiuOCqg0KK+ODiOODgCzjg4jjgrfjgqLjgq0NCivjg4rjgqvjg44s44Oo44K344Kr44OEDQor44Of44Km44OpLOODkuOCteOCtw0KK+ODpOODnuOCtuOCrSzjg4rjgqrjg6bjgq0NCivjgrXjgqvjg6Ljg4gs44OS44Op44KvDQor44Ok44Oe44OALOODn+ODgeOCsw0KK+OCpOODjuOCpuOCqCzjgqvjg6jjgrMNCivjg6TjgrnjgqQs44Oe44K144OoDQor44Oe44OE44OALOODpuODnw0KK+OCq+OCv+OCquOCqyzjgqLjgrHjg58NCivjgrnjgrrjgq0s44Kx44Kk44KzDQor44OP44Ok44K3LOOCseOCpOOCsw0KK+ODj+ODnuODnuODhCzjg6TjgrnjgrMNCivjg4/jg57jg44s44Ko44OqDQor44Of44K644K/44OLLOODn+ODqOOCsw0KK+OCueODn+OCvyzjg6Ljg4jjg4HjgqsNCivjg4/jg6Tjgrcs44Oe44Kt44KzDQor44OI44Kv44OK44KsLOODpuODn+OCsw0KK+OCq+ODiOOCpizjg47jg5bjgrMNCivjg57jg4Tjgqbjg6ks44Of44Ko44KzDQor44OS44Oj44Kv44OKLOODkuODh+OCsw0KK+OCouODs+OCtuOCpCzjg6jjgqbjgrMNCivjg5Xjgqvjg57jg4Es44K544Of44KqDQor44Of44K144KtLOOCv+OCseOCtw0KK+ODouODgeOCuuOCrSzjg4jjg6jjg5LjgrMNCivjgqLjgqrjg6Tjgq4s44Ki44Kt44OpDQor44K/44Kr44OP44K3LOODpuOCreODkuODhw0KK+OCreOCuyzjgqLjgq3jg6kNCivjgqbjgqjjg6Ljg6os44K344Ky44OrDQor44Ki44K644OeLOODn+OCqOOCsw0KK+OCquODgOOCr+ODqSzjg5Ljg63jg5/jg4ENCivjgr/jg4rjgqss44OS44K144KqDQor44OI44Kk44K/44OLLOOCq+ODhOODreOCpg0KK+ODpOODnuOCtuOCrSzjgrHjg7PjgqTjg4ENCivjg4/jgrfjg6Ljg4gs44K/44Kr44K3DQor44Oe44OE44Of44OkLOODnuOCteODkuOCsw0KK+ODleOCt+ODnyzjg4Hjgqvjg4gNCivjgq3jg6fjgqbjg6Tjg54s44OG44Or44KqDQor44Oo44K344OALOOCseOCpOOCsw0KK+OCpuODq+OCt+ODiSzjgqLjg4TjgrMNCivjgrvjgqos44Of44Ko44KzDQor44Of44OK44Kr44OvLOODhOOCreOCsw0KK+ODleOCuOODjizjgqvjgrrjg6bjgq0NCivjg5Ljg63jgr8s44K/44Kr44K3DQor44Kq44Kq44K/LOODqOOCt+ODnw0KK+OCquOCquOCrCzjg57jgrXjg47jg6oNCivjg4rjgqzjg4/jg54s44K/44OE44KqDQor44K444Oz44OOLOODpOOCueOCrQ0KK+OCpOODgeOCq+ODryzjg4/jgrjjg6ENCivjg4/jg6Tjgrcs44K/44OA44K3DQor44OP44K/44OkLOODiOOCt+ODpuOCrQ0KK+ODm+ODquOCs+OCtyzjg47jg5bjg5LjgrMNCivjgqvjg4ss44Ki44Kt44KqDQor44Ob44Oz44OALOODouODiOODkuOCtQ0KK+ODhOODgeODpCzjg4jjg5/jgqoNCivjgr/jg57jg4Ys44Of44OE44OrDQor44Om44Kr44OvLOOCqOOCpOOCuA0KK+OCteOCq+OCpCzjg6bjgqbjgrgNCivjg5/jg6Tjgrgs44Om44Km44Kk44OBDQor44K/44Og44OpLOODkuODiOOCtw0KK+OCq+ODr+OCsOODgSzjg5Ljg4fjg57jg6sNCivjgrXjg44s44Oe44K144Kr44K6DQor44OK44Kr44Og44OpLOODpuOCpuOCpOODgQ0KK+OCs+ODkOODpOOCtyzjg6bjgq3jgqoNCivjgqTjg4As44Kk44OB44Ot44KmDQor44K744Kt44Oi44OILOODqOOCt+ODkuODrQ0KK+OCq+ODr+ODnuOCvyzjgqvjgrrjgqoNCivjgq/jg5ws44OS44Ot44K3DQor44K/44Kr44OOLOODpOOCueODkuODrQ0KK+ODr+OCv+ODiuODmSzjg6Tjg6jjgqQNCivjgqTjgqvjg6vjgq4s44Of44OO44OrDQor44K144OI44KmLOOCv+ODgOOCtw0KK+ODkuODgOOCqyzjg6jjgrfjg5LjgrMNCivjg6jjgrfjgqQs44Kz44Km44K+44KmDQor44K344Oe44Og44OpLOOCqOOCpOODrQ0KK+OCquODkyzjg4jjgrfjgqoNCivjg4rjgqvjgrjjg54s44OI44Kv44OO44OWDQor44Ob44K344OOLOODjuODnOODqw0KK+OCq+ODr+ODouODiCzjgrjjg6Xjg7PjgrgNCivjg4vjgrfjg4As44Ok44K544OS44OHDQor44K344Of44K6LOODnuOCteOCouOCrQ0KK+OCv+ODoOODqSzjgrjjg6Xjg7MNCivjg4jjg6jjgrfjg54s44Oo44K344Of44OEDQor44Ko44Oz44OJLOOCv+OCq+OCqg0KK+OCquOCrOODryzjg4rjg4TjgqLjgq0NCivjgq3jgr/jg4/jg6ks44OV44Of44KqDQor44Kq44Kw44OLLOOCseODs+OCuA0KK+OCquODluODgSzjgrHjgqTjgr7jgqYNCivjg5/jg6jjgrcs44Kr44K644KqDQor44Kk44Kx44OOLOOCt+ODs+OCpOODgQ0KK+OCpuOCqOODnuODhCzjgqvjg4TjgqLjgq0NCivjg5Xjgq/jgrbjg4gs44Oq44Ol44Km44Kk44OBDQor44Ki44Kq44KtLOOCv+OCq+OCtw0KK+OCteODoeOCuOODnizjgrXjg4HjgqoNCivjgq3jg4njg54s44Kx44Oz44K4DQor44Kz44OA44Kk44OpLOOCreOCr+OCqg0KK+ODkuOCsOODgSzjgr/jg4TjgqoNCivjg57jgqjjgrfjg60s44Kr44K644OS44OtDQor44K/44OK44KrLOOCu+OCpOOCuA0KK+ODiuOCq+OCrOODryzjg6jjgqbjgrnjgrENCivjgqTjg47jgqbjgqgs44Ok44K544OS44OHDQor44OI44Oq44KmLOODnuOCteOCouOCrQ0KK+ODnuODq+ODpOODnizjg4rjgqrjgq0NCivjg57jg4Tjgqbjg6ks44Kx44Oz44K4DQor44K/44Oh44OB44KrLOOCq+OCquODqw0KK+OCteOCteOCrSzjgq3jg6fjgqbjgrMNCivjgqrjgqrjgr/jgq0s44K344Oz44K544KxDQor44Kq44Ks44OvLOODnuOCs+ODiA0KK+ODnuODhOODnyzjg57jgrnjgqgNCivjgqLjg6rjg57jg4Qs44K344Ky44KqDQor44Kz44Op44KvLOODpuOCpuOCvuOCpg0KK+ODn+ODpOOCt+OCvyzjg5/jg47jg6sNCivjgqrjgrrjg4Es44Of44OE44KqDQor44K144Kr44Kt44OQ44OpLOOCv+OCq+OCsw0KK+OCteODiOOCpizjgqLjgq3jg6kNCivjg5Ljg63jgrss44OI44Oi44KzDQor44OE44OB44OALOODiOOCt+OCouOCrQ0KK+ODj+OCt+ODqSzjg4Hjg6gNCivjg5Xjg63jg6Ljg4gs44Of44OO44OrDQor44Kz44K144KrLOOCouOCreODkuODrQ0KK+OCv+OCseOCpOODgSzjg6jjgqbjgqTjg4ENCivjg4bjg6njg4As44Oo44K344Kr44K6DQor44Kz44Kk44OHLOODkuODh+OCrQ0KK+OCteOCpOODiOOCpizjgrfjg6fjgqbjgqTjg4ENCivjg5/jg6Tjg4rjgqws44OO44Oq44OS44KzDQor44OL44K344Og44OpLOOCt+ODs+ODpA0KK+OCv+ODiuOCqyzjg6bjgqbjgr7jgqYNCiss44Om44Of44KzDQor44Om44Kv44OS44OtLOODrOOCpOOCsw0KK+ODqOOCt+ODr+ODqSzjgrjjg6Xjg7MNCivjgqLjgqrjgq0s44Or44Of44KzDQor44K/44OG44Kk44K3LOODpuODquOCsw0KK+OCv+OCseODgCzjg4jjg5/jgrMNCivjg6Tjgrnjg4As44OV44K444KzDQor44Ki44Kq44KtLOODkuODh+ODpuOCrQ0KK+ODqOOCt+ODgCzjg4rjgqrjgrMNCivjgqLjg4Djg4Es44Ki44Kt44KzDQor44OO44Kw44OBLOODqOOCt+ODjuODlg0KK+ODr+OCv+ODiuODmSzjgrfjgrLjg6bjgq0NCivjgr/jgrHjg4jjg58s44Kz44Km44Kk44OBDQor44Kv44Oq44Ov44KtLOODnuOCteOCrQ0KK+OCreOCv+OCuuODoSzjg6Ljg4jjg5LjgrMNCivjgqrjgrXjg4As44OI44K344KqDQor44Ki44K344Ks44KkLOODqOOCt+OCv+OCqw0KK+OCteOCq+OCt+OCvyzjgq3jg6jjgrcNCivjg4Tjg4Hjg4As44K344Ol44Oz44Kk44OBDQor44Kq44Kr44OALOODn+ODgeOCqg0KK+OCv+ODiuOCqyzjg5Ljg4fjg4HjgqsNCivjgqrjgqrjgr/jgrTjgrcs44Kz44Km44K+44KmDQor44Kv44Ot44K144KrLOOCqOOCpOOCuA0KK+OCueOCtuOCrSzjgqLjg4TjgrcNCivjgqvjg43jg5/jg4Qs44OS44Ot44Om44KtDQor44Oe44OILOOCq+OCuuODpuOCrQ0KK+ODiOODqOODleOCryzjg57jgrXjgqoNCivjgqLjg6njgqQs44OS44Ot44Kr44K6DQor44OV44K444Kr44OvLOODjuODluOCouOCrQ0KK+ODqOOCs+OCqizjgr/jgqvjg6jjgrcNCivjgqLjg57jg44s44OP44Or44KqDQor44Kq44Kq44OOLOOCv+OCq+ODleODnw0KK+OCueOCuuOCrSzjgqLjgq3jg6jjgrcNCivjgqvjg4jjgqYs44Oe44K144Om44KtDQor44K144Kk44OI44KmLOODn+ODhOOCqg0KK+OCquOCpizjgqvjg4Tjg58NCivjg5/jg6Tjgrbjgq0s44Kk44K144KqDQor44Kt44OkLOODleODn+OCv+ODng0KK+ODleOCuOOCvyzjgqvjgrrjg5LjgrMNCivjg6DjgqvjgqQs44Oo44Km44Kk44OBDQor44Oe44OE44Oi44OILOOCq+OCquODqw0KK+OCq+ODr+OCpCzjg6bjgq3jgqoNCivjg57jg4Tjg6Ljg4gs44Kt44Oo44K/44KrDQor44K/44Kx44Km44OBLOODquODp+OCpuOCuA0KK+OCs+OCuOODnizjg5Ljg4fjgqoNCivjg4/jgrvjgqzjg68s44K/44OE44KqDQor44Kz44KsLOODpOOCueOCqg0KK+ODpOODnuODgCzjgrPjgqbjgqTjg4ENCivjgqrjgqrjgr8s44Of44OO44OrDQor44Ok44Oe44Oi44OILOOCt+ODs+OCueOCsQ0KK+OCteOCr+ODqeODouODiCzjg5Xjgrjjg4gNCivjg6Tjg4rjgq7jgrXjg68s44Kv44OL44KqDQor44OV44Kv44KkLOOCs+OCpuOCuA0KK+OCq+ODiOOCpizjgqvjgrrjg58NCivjgqTjg6/jgr8s44Ok44K544Om44KtDQor44OV44K444Oi44OILOOCv+ODgOODleOCtQ0KK+OCreODjuOCt+OCvyzjgqLjgq3jg5LjgrMNCivjg6Tjg57jg4As44K444Ot44KmDQor44Kv44Op44Oe44KoLOOCs+OCpuOCuA0KK+OCr+ODqeOCvyzjgr/jgqvjgrcNCivjg6jjgrPjgqQs44OV44Of44OI44K3DQor44Kz44OQ44Ok44K3LOODkuODh+ODpA0KK+OCq+ODiOOCpizjg6Ljg6rjg6jjgrcNCivjg57jgrnjgqQs44OS44OI44K3DQor44Km44Op44K/LOODhuODq+OCouOCrQ0KK+OCv+OCq+ODj+OCtyzjg57jgrXjg5Ljg60NCivjgqbjgrfjgrTjg6Es44Oe44K144K/44KrDQor44OP44Op44KkLOOCt+ODs+OCuA0KK+OCpuODgOOCrOODryzjg4jjgrfjg63jgqYNCivjgr/jgqvjgq4s44Kr44K644Om44KtDQor44Of44Ok44K244KtLOOCteODiOODnw0KK+ODpOODnuODoOODqSzjg57jgrXjg5Ljg60NCivjg6Tjg57jgq7jgrcs44Oq44Ol44Km44Kk44OBDQor44Kz44Oe44OELOODqOOCt+OCv+OCqw0KK+ODj+ODnuOCsOODgSzjg6bjgqsNCivjg6Ljg6os44OS44Ot44Kr44K6DQor44Ok44Oe44OALOODpOOCueODjuODqg0KK+OCq+OCrOODryzjg5/jg4HjgqoNCivjgq3jgq/jg4Es44OV44Of44KtDQor44Kv44K4LOODpOOCueOCtw0KK+OCpOODiOOCpizjg5LjgrXjgqLjgq0NCivjgqvjg6/jgrDjg4Es44Oo44K344Kr44K6DQor44Ki44Op44KtLOOCt+ODs+OCueOCsQ0KK+OCquOCq+ODmSzjg5Ljg63jg58NCivjgrPjg5zjg6os44K344Oz44Kk44OBDQor44Kq44OBLOOCquOCteODoA0KK+ODnuODq+OCqizjg4/jgrjjg6ENCivjgrXjg4jjgqYs44K344Ol44Oz44K544KxDQor44K/44OK44KrLOODkuODh+ODjuODqg0KK+ODnuODhOODpOODnizjg4jjgrfjgqoNCivjgqrjgqrjg4Tjgqss44Kv44OL44KqDQor44Ok44Oe44Oi44OILOOCseODs+OCuA0KK+ODleOCuOOCqizjg5/jg4TjgqgNCivjg47jg6Djg6ks44OS44K144K/44KrDQor44OS44Ot44K7LOODjuODquODqOOCtw0KK+OCouODs+OCtuOCpCzjgrfjgrLjg47jg6oNCivjgqrjgqrjg4Tjg5ws44Of44OB44OtDQor44K144Kk44OI44KmLOODquODpeOCpuOCuA0KK+OCpOODiOOCpizjgrXjg4jjgrcNCivjg6/jg6njgrXjg68s44Kt44Kv44KqDQor44Ki44Op44Kr44OvLOODpOOCueODiuODqg0KK+OCtOODnyzjgrjjg6Xjg7MNCivjgqjjg7Pjg4ks44K144OB44KqDQor44Oo44K344OALOODnuOCteODj+ODqw0KK+OCpuODgeODgCzjg5Ljg4fjgqoNCivjgqLjgrXjgqTjg40s44OG44OE44OkDQor44Kq44K344OeLOOCt+OCsuOCqg0KK+OCv+ODiuOCqyzjgr/jg4TjgqoNCivjgqrjgqrjgrMs44Oe44K144Ot44KmDQor44Kk44K644OELOODiuOCquODqw0KK+ODj+ODpOOCtyzjg57jgrXjg6bjgq0NCivjg5Xjgrjjgq0s44OI44Kq44OrDQor44K344Kq44Kr44KkLOOCq+OCuuODkuOCsw0KK+ODiuOCrOODleODgSzjgq3jg6jjg4TjgrANCivjg57jg4Tjg6Ljg4gs44K/44Kk44Kk44OBDQor44Kr44OI44KmLOODkuODreOCtw0KK+ODr+OCv+ODiuODmSzjgrHjgqTjgrgNCivjg4/jg57jgrDjg4Es44Oq44Ol44Km44Kk44OBDQor44Kr44ON44KzLOODpuOCv+OCqw0KK+OCteODiOOCpizjg4jjgrfjgqoNCivjgqrjgqrjgqQs44Oe44K144KtDQor44OP44Ok44K3LOOCu+OCpOOCuA0KK+OCreODn+ODhOOCqyzjg57jgrXjgqoNCivjg5Xjgq/jg4As44Oe44Oi44OrDQor44OK44Kr44Og44OpLOOCv+ODgOOCtw0KK+ODpOODkOOCtyzjgrHjg7PjgrgNCivjgrPjg5Djg6Tjgrcs44K/44Kr44Om44KtDQor44OI44Kv44OALOODiOODouOCq+OCug0KK+OCv+OCq+ODj+OCtyzjgqvjg4Tjg5Ljg60NCivjgqTjg4jjgqYs44Of44OE44KqDQor44OO44Kw44OBLOODqOOCpuOCpOODgeODreOCpg0KK+OCq+ODr+ODiizjg47jg6rjgqoNCivjg4rjgqvjg44s44OE44Ok44KzDQor44Ok44Oe44OALOODnuOCteOCsw0KK+ODkuODqeODnuODhCzjgr3jgqbjgr/jg63jgqYNCivjgqLjg6njgqQs44OI44K344Om44KtDQor44Oo44K344OOLOOCq+OCquODqg0KK+ODj+ODnuODgCzjgqvjgrrjgqoNCivjgqrjgqrjgr8s44OI44K344OS44KzDQor44K344OQ44K/LOODnuOCueOCouOCrQ0KK+ODr+OCq+ODpOODnizjgqLjgq3jg5Ljg60NCivjg5vjgrcs44Kt44Oo44K3DQor44Of44OvLOODnuOCteOCqg0KK+OCv+ODiuOCqyzjg6bjgqbjgrgNCivjgqvjg4rjg6Qs44OO44Oq44OS44KzDQor44K/44Kx44OK44KrLOOCuOODsw0KK+OCteODiOOCpizjg4jjgrfjg6bjgq0NCivjg5/jgrrjgrfjg54s44OI44Oo44Km44Kk44OBDQor44OG44Op44OALOOCt+OCsuODqw0KK+ODouODquODpCzjgr/jg4Djg6bjgq0NCivjgrnjgq7jg6Tjg54s44Oi44OI44OP44OrDQor44Km44OfLOODj+ODq+OCqg0KK+OCreOCsOODgSzjg6jjgqbjgqTjg4Hjg63jgqYNCivjgqbjg6vjg6/jgrcs44K/44Kx44K3DQor44OS44Op44Oe44OELOODn+ODgeOCquOCrQ0KK+OCpOOCuuODjyzjg4/jg6vjgqoNCivjgqTjg4jjgqYs44Oe44Kz44OIDQor44K144OI44KmLOODnuOCueOCqg0KK+OCt+OCsuODjuODlizjgrHjg7PjgrgNCivjg6jjgrfjg6Ljg4gs44Kr44K644KqDQor44K344OQ44K/LOODhOODqOOCtw0KK+ODleODiuOCs+OCtyzjgqTjg4Hjgr7jgqYNCivjgrnjg4rjg4As44Ok44K544K444Ot44KmDQorLOODpOOCueOCqg0KK+OCreOCr+ODnizjg4rjgqrjg5LjgrMNCivjgrnjg4gs44K144OI44K3DQor44OL44K344K244OvLOODkuODh+OCqg0KK+OCs+ODkOODpOOCtyzjg5/jg4TjgrMNCivjgqvjg6/jgrTjgqgs44Oe44K144OS44KzDQor44Kk44K444OeLOODleODn+OCqg0KK+ODi+OCt+OCqizjg5Ljg63jgrcNCivjg4vjgrfjg6Tjg54s44OO44OW44Om44KtDQor44K144Kk44OI44KmLOODqOOCt+OCouOCrQ0KK+OCq+ODieODr+OCrSzjg5Ljg63jg58NCivjg5Ljg63jgrss44K/44Kr44KqDQor44K/44Kw44OBLOOCv+OCq+ODqOOCtw0KK+OCv+OCq+ODgCzjg4jjgrfjg4/jg6sNCivjg6/jgr/jg4rjg5ks44Kx44Oz44K4DQor44Kr44OI44KmLOOCt+OCsuOCouOCrQ0KK+ODiuOCq+ODj+ODqSzjgq/jg4vjgqoNCivjgqTjgrfjgq/jg5ws44Oq44Ol44Km44Kk44OBDQor44Ok44Oe44OALOODqOOCt+OCqg0KK+ODr+OCq+ODnuODhCzjgrPjgqbjgrgNCivjgqvjg6/jgrfjg54s44OS44Ot44Om44KtDQor44Kr44K/44Oi44OILOOCseODs+OCuA0KK+OCv+OCq+ODpOODnizjgq3jg5/jg5LjgrMNCivjg4Tjg4Hjg4As44K/44OE44K3DQor44K/44OB44OQ44OKLOODkuODh+OCqg0KK+OCs+ODkOODpOOCtyzjgqLjgq3jg6kNCivjg4Tjg4As44OI44K344Om44KtDQor44Oi44Oq44Kr44OvLOODpuOCreOCqg0KK+OCquOCr+ODjizjg6jjgrfjgqoNCivjgqTjg57jgqQs44Oe44Oi44OrDQor44Og44Op44KqLOOCv+ODgOOCtw0KK+OCt+ODouODoOODqSzjgrjjg63jgqYNCivjgqjjg7Pjg4ks44OI44K344OO44OWDQor44Ob44K344Kv44OeLOODnuOCteODj+ODqw0KK+OCq+ODr+OCuyzjgrfjg7PjgrXjgq8NCivjg57jg4Hjg4As44Og44ON44K3DQor44Kz44OQ44Ok44K3LOOCv+ODhOOCqg0KK+ODj+ODgCzjg5Ljg63jgrcNCivjg4Tjgq/jg4As44Oe44K144OP44OrDQor44OL44K344Kr44OvLOOCt+ODp+OCpg0KK+ODm+ODs+ODgCzjg5Ljg63jg58NCivjg6/jgrfjgqrjgqss44OI44K344OS44OtDQor44Og44Ot44KkLOODqOOCpg0KK+ODpOOCueODgCzjg57jgrXjgrcNCivjg6jjgrfjg4As44OS44Ot44Om44KtDQor44Ob44OqLOOCouODhOOCsw0KK+OCs+OCpuODgCzjgrPjgqbjgqjjgqQNCivjgqvjg57jg4As44Ko44Kk44K4DQor44Km44Ko44Og44OpLOODkuODreODnw0KK+ODnuODhOODkOODqSzjgqvjgrrjg6QNCivjg5/jg4rjg4jjgrDjg4Es44K344Ky44OrDQor44Kv44Ks44OG44OzLOODpOOCueOCtw0KK+OCpOODr+OCuyzjg47jg5bjg5Ljg60NCivjg4/jg6Tjgrcs44Of44OE44OS44OtDQor44Kk44Kv44OK44OfLOOCt+ODs+OCuA0KK+OCpOODiOOCpizjgr/jgqvjgrcNCivjgrPjg6Tjg54s44OS44Ot44Of44OBDQor44Kq44OI44Oe44OrLOODqOOCt+ODkuODiA0KK+ODiuOCrOOCpCzjg6Ljg4jjg4/jg6sNCivjgqTjg4jjgqYs44Oe44Kz44OIDQor44Kk44Oe44KkLOOCv+ODhOODqw0KK+ODnuOCueODgCzjgr/jgqvjg5Ljg60NCivjgqvjg6/jg5ks44Oq44On44Km44K/DQor44K144OI44KmLOOCseOCpOOCuA0KK+OCteOCsyzjg57jgrXjg4/jg6sNCivjg6DjgqvjgqQs44K444Ol44Oz44Kk44OBDQor44Kq44K344OeLOOCr+OCueOCv+OCqw0KK+ODhOODgeODpCzjgqTjgrrjg58NCivjg4/jg6TjgrfjgrDjg4Es44OI44K344Ki44KtDQor44K144OI44KmLOOCu+OCpOOCpOODgQ0KK+ODoOODqeOCteODiCzjg6bjgq3jg5LjgrMNCivjg4/jg6vjg6Tjg54s44Oe44K144KqDQor44K344Ky44Oi44OqLOOCt+ODpeODs+OCpOODgQ0KK+ODleODiuOCrSzjg5LjgrXjgqoNCivjg6/jg4As44Kk44Kv44OIDQor44OE44Oc44KrLOOCt+ODs+OCueOCsQ0KK+ODiOODgCzjgrjjg6Xjg7PjgqTjg4Hjg60NCivjg6Tjg57jg6Djg6ks44K/44OA44Ki44KtDQor44Kk44K344Kw44OtLOOCt+ODs+OCpOODgQ0KK+ODleODiuODj+OCtyzjg6bjgq0NCivjgrnjgrrjgq0s44Oo44K344KqDQor44Oo44K344OALOOCreODn+ODkuODrQ0KK+ODr+OCv+ODiuODmSzjg4Tjgq7jgqoNCivjg4rjgqvjg4vjgrcs44K/44Kr44Of44OEDQor44Ok44Oe44Oi44OILOOCuOODpeODs+OCuA0KK+OCpOOCt+OCq+ODryzjg57jgrXjg6bjgq0NCivjgr/jgrHjgqbjg4Es44Kz44Km44Kk44OBDQor44Kq44Kv44OOLOOCteODiOOCtw0KK+ODgOODhizjgrjjg6Xjg7MNCivjgr/jg5ks44Oe44K144OI44K3DQor44Ok44KuLOODquODp+OCpuOCpOODgQ0KK+ODqOOCt+ODgCzjgqvjgrrjgqoNCivjg5Xjg6vjgr8s44K/44Kr44Om44KtDQor44Kr44Ov44Kw44OBLOODquODpeOCpuOCv+ODreOCpg0KK+ODj+OCueOCsyzjg6jjgrfjg47jg6oNCivjg4rjgqzjg5/jg40s44K344Ol44Oz44K4DQor44K/44Kx44K344K/LOOCteODiOOCtw0KK+OCouOCq+OCqizjgqvjgrrjg6bjgq0NCivjg6/jgq3jg6Ljg4gs44K/44Kr44K3DQor44K/44K144KrLOOCseODs+OCuA0KK+ODiuOCq+OCt+ODnizjg6Tjgrnjg6jjgrcNCivjgr/jgrHjg4rjgqss44OS44Ot44Ki44KtDQor44Ok44Oe44K344K/LOODiuOCquODkuOCsw0KK+OCr+ODnOOCqCzjg4bjg6vjgqoNCivjgqrjgrDjgrcs44K344On44Km44Kk44OBDQor44Ki44K144KrLOOCt+OCsuODiOOCtw0KK+OCqOOCsOODgSzjg5Ljg63jg6jjgrcNCivjgqrjgqrjgrXjgq0s44Oe44Kz44OIDQor44Kq44Kv44OALOOCq+OCuuOCqg0KK+OCquOCr+ODoOODqSzjgqvjgrrjg60NCivjgqvjg4rjg57jg6ss44Oo44K344OS44KzDQor44Kt44OO44K344K/LOOCquOCteODoA0KK+OCteOCteOCrSzjgq3jg6jjg5Ljg4cNCivjgr/jgqvjg44s44K/44OE44KqDQor44OP44K344OALOOCt+OCsuODqw0KK+ODm+OCtyzjg6bjgqbjgrnjgrENCivjg5/jgrrjg44s44Kr44OE44OS44KzDQor44Of44OE44OP44K3LOOCv+ODhOODpA0KK+ODouODiOODj+OCtyzjg57jgrXjgrcNCivjg6Tjg57jg4As44OG44OE44K4DQor44OK44Ks44OOLOODnuOCteODpuOCrQ0KK+OCpOOCt+OCpCzjg6bjgq3jg5Ljg60NCivjgqvjg6Hjg4As44Kr44Kq44OrDQor44Kt44OP44K/LOOCv+OCseODkuODhw0KK+OCs+ODkOODpOOCtyzjgqrjgrXjg6ANCivjgrfjg6njg5Xjg40s44K/44Kr44Oo44K3DQor44OK44OE44OP44OpLOODkuODreOCouOCrQ0KK+ODi+OCt+ODj+ODqSzjg6Tjgrnjg5LjgrUNCivjg4/jgrfjg5As44K/44Kv44KqDQor44OS44K344OM44OeLOODkuODreODleODnw0KK+ODkuODk+ODpCzjgrfjg7Pjgr/jg63jgqYNCivjg5/jg6Qs44OS44OH44OP44OrDQor44Og44Op44Kr44OfLOODleODn+OCqg0KK+ODoOODqeOCvyzjg4/jgrjjg6ENCivjg6/jgr/jg4rjg5ks44K344On44Km44Kk44OBDQor44Kq44Kq44OL44K3LOODkuODreOCouOCrQ0KK+OCv+OCseOCt+OCvyzjg5Ljg63jgrcNCivjg4Tjg5Djgq3jg6Ljg4gs44Ok44K544K3DQor44OP44Oe44Kq44KrLOOCv+OCseOCqg0KK+ODn+OCuuODjizjg4jjg6jjgr/jgqsNCivjgqLjg5ks44OS44Ot44OfDQor44Ki44Op44Kk44K3LOODnuOCteODnw0KK+OCteODiOOCpizjg57jgrXjgqLjgq0NCivjgrXjg6/jg44s44K744Kk44K244OW44Ot44KmDQor44K344Oi44K444On44KmLOOCv+ODgOODnw0KK+OCv+OCq+ODgCzjgqvjgrrjg5Ljg4cNCivjg4rjgqzjgr8s44Ok44K544OS44OtDQor44OL44K344OP44K/LOODnuOCteODleODnw0KK+ODj+ODpOOCtyzjgr3jgqbjgqTjg4ENCivjg5vjgr3jgqvjg68s44Ki44Kt44OpDQor44Ki44Kq44KtLOODn+OCreODiOOCtw0KK+ODqOOCt+ODgCzjg5Ljg63jg4jjgrcNCivjg6/jgr/jg4rjg5ks44K/44Kr44KqDQor44Kk44Ov44K144OvLOOCv+OCq+ODj+ODqw0KK+ODjuOCuyzjgrnjgqjjgqoNCivjg5Ljg6njgrfjgr8s44OS44Ot44Ok44K5DQor44Oo44K344K244OvLOODkuODh+OCqg0KK+ODoOODiOOCpizjgrHjgqTjgr7jgqYNCivjg5/jg6/jgqbjg6ks44OS44OH44Ki44KtDQor44Kt44Kv44OBLOODj+OCuOODoQ0KK+OCqOOCvuOCqCzjg5Ljg63jg58NCivjgqTjgrfjgqvjg68s44K/44Kx44K3DQor44Kk44OB44Kr44OvLOOCv+OCq+OCtw0KK+ODj+ODqeODgCzjg6jjgrfjgr/jgqsNCivjg6Djg6njgr8s44Oo44K344OIDQor44Kk44OI44KmLOODn+OCreOCqg0KK+ODm+OCt+ODiizjgrHjgqTjg6QNCivjg4jjgq/jg4As44OO44Oq44KqDQor44K/44Kw44OqLOOCq+OCuuODqOOCtw0KK+OCteOCteOCrSzjg4jjg6Ljg6bjgq0NCivjgr/jg57jg6ss44OP44Or44KqDQor44OL44K344OP44K3LOOCt+OCsuOCqg0KK+OCuOODhOOCq+ODryzjgqvjgrrjg5LjgrMNCivjgrnjgrrjgq0s44K144Kk44OBDQor44Kq44Kq44OL44K3LOOCreODn+OCsw0KK+ODiuOCrOOCteOCrSzjg6bjgqbjgrMNCivjgqTjgqTjg4As44OS44OH44OfDQor44K/44Kr44OOLOODnuOCteODkuODrQ0KK+ODkuOCteODjizjg4jjgrfjg4TjgrANCivjgqTjg47jgqbjgqgs44OS44OH44KtDQor44Kk44K344Kv44OpLOODnuOCteODpuOCrQ0KK+OCouOCreODpOODnizjgrPjgqbjgrgNCivjgqTjg4Hjgqvjg68s44K744Oz44OqDQor44Kt44Ks44OvLOOCs+OCpuOCpOODgQ0KK+OCteOCpOODiOOCpizjg5Ljg63jg6bjgq0NCivjg6jjg4As44Of44Kt44KqDQor44Ki44Op44KtLOODpuOCpuOCuA0KK+OCueOCruODj+ODqSzjg5Ljg4fjg5LjgrUNCivjgqvjg6/jgrDjg4Es44OG44Kk44K4DQor44Of44OkLOODnuOCteODkuOCsw0KK+OCpOOCseOCqizjg5Ljg63jg6bjgq0NCivjgrXjgq/jg6njgqQs44OV44K444KqDQor44Kz44K344OOLOODqOOCpuOCueOCsQ0KK+OCreOCr+OCq+ODryzjgqvjgrrjgqoNCivjg6bjgqLjgrUs44K/44Kr44K3DQor44K544K644KtLOODpuOCpuOCuA0KK+ODnuOCueODgCzjgrfjg7Pjgr/jg63jgqYNCivjgqLjg6njgqQs44Ok44K544KqDQor44Kk44Kx44OALOODiOOCt+OCqg0KK+OCreOCuSzjgqLjgq3jg6kNCivjgqbjgrfjg6Tjg54s44Os44KkDQor44Kr44Oe44K/LOOCqOODhOOCtw0KK+OCpuOCteODnyzjgq3jg6jjgrcNCivjg4rjgqvjg44s44K/44Kx44K3DQor44Kr44Kt44Kr44OvLOOCuOODpeODs+OCpOODgQ0KK+OCreOCuOODnizjg5Ljg63jg6bjgq0NCivjg6DjgqvjgqQs44Oe44K144Oo44K3DQor44OK44Ks44Ok44OeLOODnuOCteOCsw0KK+ODj+ODg+ODiOODqizjg57jgrXjgqoNCivjg5/jgrfjg54s44OE44Oo44K3DQor44K044OI44KmLOOCr+ODi+ODiOOCtw0KK+OCpOODiOOCpizjg5Ljg63jg6bjgq0NCivjgqrjgqzjgr8s44Kr44Oo44KzDQor44Kv44K144OQLOODj+ODq+ODpuOCrQ0KK+ODhuODqeOCqCzjg5LjgrXjg4gNCivjg5vjg7Pjg4As44OO44Oq44KqDQor44Ki44Kv44K/44Ks44OvLOODn+ODjuODqw0KK+ODn+ODpOOCs+OCtyzjg6TjgrnjgqgNCivjg5Xjgq/jgrfjg54s44Kx44Kk44K544KxDQor44K344OO44K644KrLOODiOODouOCsw0KK+OCquOCquOCv+OCrSzjgrfjg6fjgqbjgrgNCivjg4rjgqzjg57jg4Qs44K744Kk44Kk44OB44Ot44KmDQor44Ki44Op44KkLOODnuOCteODqw0KK+ODnuODhOODgCzjgrXjg4Hjg6gNCivjg5Xjgrjjgr8s44Ki44OE44OfDQor44Kr44Of44Kw44OBLOODkuODreOCouOCrQ0KK+OCq+ODiOOCpizjg5Ljg4jjgrcNCivjg6Tjg57jgrbjgq0s44K/44Kx44OO44OqDQor44Km44Oh44K/44OLLOOCouODhOOCsw0KK+ODiuODq+OCuyzjgrjjg6Xjg7PjgrMNCivjgq/jg5ws44Kv44OL44KqDQor44Kv44Op44K/LOODkuODreODpuOCrQ0KK+OCs+ODs+ODiSzjg4bjg6vjgqoNCivjgr/jgrHjgqbjg4Es44Of44Kt44OkDQor44Kk44OO44Km44KoLOODjuODquOCqg0KK+OCv+OCq+ODgCzjg6jjgrfjgqvjgroNCivjgqLjgq/jg4Qs44Kr44OE44Om44KtDQor44OI44Oq44KkLOODkuODreODnw0KK+ODouODquOCquOCqyzjg6bjg5/jgrMNCivjgqvjgq/jgr/jg4ss44Oe44OK44OWDQor44K/44Kx44Kk44OBLOODgeOCqOOCsw0KK+OCv+OCpCzjgrHjgqTjgrMNCivjg4Tjg4Hjg6Qs44Oe44K144OV44OfDQor44Oe44K544OALOODnuOCteOCv+OCqw0KK+OCq+ODs+ODgCzjg5LjgrXjgqoNCivjg6Tjg57jgqbjg6ks44Ok44K544Oo44K3DQor44Kt44OO44K344K/LOOCt+OCsuODn+ODhA0KK+ODm+OCteOCqyzjgq/jg4vjgqoNCivjg57jg6vjgqrjgqss44OS44OH44Om44KtDQor44Kr44Oe44K/LOODkuODreOCtw0KK+ODj+OCv+ODiuOCqyzjg57jgrXjg58NCivjgq/jg63jg48s44Oo44Km44KzDQor44OI44OE44KrLOODqOOCpuOCsw0KK+OCpOOCt+OCpCzjg5Xjg6gNCivjg6Ljg6rjgr8s44Oe44OBDQor44Ob44Oz44OeLOOCt+OCsuODqw0KK+OCouODqeOCq+OCrSzjg6jjgrfjg4jjg6INCivjgr/jgrEs44K/44Kx44OS44KzDQor44Kk44K644OP44OpLOODiuOCquOCq+OCug0KK+ODkuOCteODiOODnyzjgr/jg63jgqYNCivjgrnjgrrjgq0s44Oo44K344OS44OtDQor44OL44K344OK44KrLOODkuOCteODjuODqg0KK+ODn+OCuuODjizjgrPjgqbjgr7jgqYNCivjg6Ljg6rjg6Djg6ks44Ki44Kt44OpDQor44K/44Kr44OP44K3LOODiOOCt+OCq+OCug0KK+OCt+OCsuODiOODoSzjg6jjgrfjgqLjgq0NCivjgrXjg4jjgqYs44Om44Km44K4DQor44Oe44Ko44Kr44OvLOODnuOCteODnw0KK+ODqOOCt+OCpCzjg4jjgrfjg47jg6oNCivjg5vjgr3jg6Qs44OS44OH44OS44KzDQor44K144Kr44Oi44OILOOCq+OCuuOCqg0KK+OCs+OCpOOCuuODnyzjgrfjgrLjg58NCivjg4vjgrcs44Ok44K544OV44OfDQor44Kr44ON44KzLOOCouOCreODqQ0KK+OCueODn+OCr+ODqSzjgrfjg6fjgqbjg5jjgqQNCivjg6jjgrPjgqos44K/44Kr44KqDQor44K144K144KtLOOCq+OCuuOCqg0KK+ODj+ODpOOCtyzjgqLjgq3jg6kNCivjgr/jg4rjgqss44Kt44Oo44K3DQor44Ki44Kt44Ok44OeLOODiOODn+OCqg0KK+OCteOCpOOCuSzjg6jjgrfjgqvjgroNCivjg47jgqzjg58s44K744Kk44K4DQor44OI44Oo44K344OeLOOCt+ODpeOCpuOCpOODgeODreOCpg0KK+OCt+ODsyzjgr/jgqvjgrcNCivjg5Xjgq3jg44s44Oi44Oq44Oo44K3DQor44Kk44Kx44OALOOCq+OCuuOCreODgQ0KK+OCquODgOODr+ODqSzjg6rjg4QNCivjgr/jgqvjg4/jgrcs44OI44K344Kr44OEDQor44Kx44Kk44OeLOOCuOODpeODsw0KK+OCt+ODn+OCuizjgrPjgqbjgrgNCivjgqTjg57jgqTjgrrjg58s44OI44Oi44K4DQor44Oi44Oq44K/LOODpuODn+OCsw0KK+ODouODqizjg6Tjgrnjg58NCivjg57jgqjjgqvjg68s44Ok44K544Kr44K6DQor44Ok44OK44Ku44OALOOCueOCueODoA0KK+ODoOODqeODouODiCzjg5Ljg63jgrcNCivjgrnjgrrjgq0s44OS44Ot44K3DQor44Ob44K944KoLOODnuOCteODkuOCsw0KK+OCpOOCt+OCr+ODqSzjgrvjgqTjgrgNCivjg5Ljg63jgqvjg68s44Om44Km44K4DQor44Kr44Op44K344OeLOOCv+OCq+OCtw0KK+ODnuODgeODgCzjgrfjg7PjgqTjg4ENCivjg6Ljg6rjg6Tjg54s44OS44K144OO44OqDQor44K/44Kx44Og44OpLOODhuODhOOCvuOCpg0KK+ODhOOCq+ODouODiCzjgqLjgq3jg5Xjg58NCivjg6Tjg57jgrDjg4Es44OS44Ot44OS44OIDQor44K944Oh44OkLOOCouOCreOCqg0KK+ODiuOCq+OCtOODoSzjg5Ljg4fjgqoNCivjgqTjg6/jg4rjgqws44Kx44Kk44K544KxDQor44K744Kt44OkLOOCseODs+OCuA0KK+ODhuODqeOCpCzjgqvjgrrjg5Ljg60NCivjgr/jg4rjgqss44OS44OH44KqDQor44K744Kt44OkLOOCuOODpeODs+ODreOCpg0KK+OCteOCr+ODqeOCpCzjgqjjg5/jgrMNCivjgqTjgr3jg5ks44Oe44OE44K/44Ot44KmDQor44Oe44OE44Kq44KrLOOCv+OCq+ODkuOCsw0KK+OCpOODgSzjg57jgrXjg47jg6oNCivjg6Tjg57jg6Ljg4gs44K344Ot44KmDQor44OH44Kw44OBLOOCv+OCq+ODiOOCtw0KK+ODkuODqeODnuODhCzjg6jjgrfjgqoNCivjg5/jgrrjg44s44Kk44K144OgDQor44OI44Of44OK44KsLOODnuOCteODkuODrQ0KK+OCv+OCq+OCt+ODnizjg5Ljg4jjgrcNCivjg47jgqzjg58s44OS44Ot44K3DQor44Kq44Kq44OELOODkuODreODleODnw0KK+OCs+ODkOODpOOCtyzjgrHjg7PjgqTjg4ENCivjg4bjg6njg4As44OI44K344Kr44K6DQor44K144Kk44OI44KmLOOCv+ODhOODpA0KK+OCouOCteODjizjgr/jgqvjg6QNCivjgrfjg6Ljg6Djg6ks44OO44Oq44OI44K3DQor44Kq44Kq44Kk44K3LOODjuODquODqOOCtw0KK+OCv+ODiuOCqyzjg4Tjg43jgqoNCivjg57jg4Tjg6Ljg4gs44Kt44Oo44K3DQor44OS44Op44Oe44OELOOCt+OCsuODqw0KK+OCv+OCseOCpuODgSzjg5/jg47jg6sNCivjgrfjgrLjg4/jg6ks44OG44Or44Oe44K1DQor44Kq44Kr44Oi44OILOODj+OCuOODoQ0KK+ODoOODqeODpOODnizjg6Ljg4jjgrMNCivjgrPjg57jg4Tjg5Djg6ks44K344K644KqDQor44Ko44OQ44K/LOOCseODs+OCuA0KK+OCquOCquOCvyzjgrTjg63jgqYNCivjg4bjg6njgqos44OS44Ot44Om44KtDQor44Kq44Kq44K144OvLOODnuOCteODqw0KK+OCq+ODr+OCt+ODnizjgr/jg4Tjg58NCivjgqLjg6njgqQs44Oe44K144K3DQor44OP44K344K644OhLOOCouOCreODqQ0KK+ODn+OCuuOCt+ODnizjgrPjgqbjgrgNCivjg5Ljg6njg57jg4Qs44Ko44OE44KqDQor44Kq44Kv44Og44OpLOODqOOCt+OCsw0KK+ODn+OCuuODiuOCqyzjgrPjgqbjgrcNCivjg5vjg6rjgqbjg4Es44K344Ol44Km44Kk44OBDQor44K/44Kt44Oi44OILOODiOOCt+OCqg0KK+ODpOOCueODkCzjgrPjgqbjgrgNCivjgq3jgr/jg44s44Oi44OI44OO44OWDQor44OL44K344OALOODpuOCreOCqg0KK+OCpOOCt+OCq+ODryzjg4jjgrfjg58NCivjgqrjgqrjg5As44OS44K144KqDQor44Kr44K344Ov44KuLOOCq+OCuuODpuOCrQ0KK+OCteODiOOCpizjgqrjgrXjg6ANCivjg57jg4Tjg4As44Ki44Kt44KqDQor44Kz44Og44OtLOODiuOCquOCrQ0KK+ODoOODqeOCvyzjg5Ljg4fjg6bjgq0NCivjgrXjgrXjgqzjg68s44Kr44K644KqDQor44K144K/44KxLOODj+ODq+ODiOOCtw0KK+OCr+ODr+ODjizjg5LjgrXjgqoNCivjgrTjg4jjgqYs44Kr44OE44OfDQor44OV44K444KkLOOCt+ODs+OCpOODgQ0KK+ODn+OCuuOCs+OCtyzjgrHjg7PjgqTjg4ENCivjg5Xjgrjjg57jgq0s44Kr44K644OkDQor44Kk44OH44K/LOODkuODiOOCtw0KK+ODiuOCq+ODhOOCqyzjgr/jgqvjgrcNCivjgqbjg7Pjg44s44K/44Kx44OfDQor44K544K644KtLOOCq+OCuuODkuODrQ0KK+ODj+ODnizjg5Ljg63jgrcNCivjg4jjg5/jgr8s44K/44Kr44KqDQor44K/44OL44OELOODpuOCpuOCtA0KK+OCueOCuuOCrSzjg57jgrXjg5/jg4ENCivjgqrjgq/jg6Djg6ks44OB44Oo44K4DQor44OV44Kv44K344OeLOOCq+OCuuODkuOCsw0KK+OCquOCquODj+OCtyzjg5Ljgqvjg6sNCivjg6Tjg57jgrfjgr8s44K/44Kr44KqDQor44Kr44Ov44OfLOOCu+OCpOOCpOODgQ0KK+ODj+ODq+OCvyzjgrHjg7PjgqTjg4Hjg60NCivjg5/jg6Tjg6Ljg4gs44OS44Ot44K3DQor44OE44K444K/LOODpuOCpuOCsw0KK+OCpOODnuODoOODqSzjg57jgrXjgqoNCivjgrXjg4jjgqYs44K144OW44Ot44KmDQor44OK44Kr44K444OeLOODpuOCreOCsw0KK+OCt+OCpOODjizjgrfjgrLjgqoNCivjgrTjg4jjgqYs44Of44OO44OrDQor44Kr44OI44KmLOODouODiOODj+ODqw0KK+ODiuOCrOOCpCzjg4HjgqjjgrMNCivjgqbjg4Hjg44s44Ki44OE44K3DQor44Ko44Kk44K444OeLOOCquOCteODoA0KK+ODpOODnuODiuOCqyzjgrPjgqbjgrgNCivjg4rjgqvjg6Djg6ks44OO44OW44KqDQor44K544K644KtLOODpOOCueODpuOCrQ0KK+OCu+ODoOODqSzjg6rjg6XjgqbjgqTjg4ENCivjg4rjgqvjgqzjg68s44Kr44OE44OS44OtDQor44K/44OkLOOCv+OCq+OCtw0KK+ODoOODqeOCq+ODnyzjg5Ljg63jg47jg6oNCivjgqTjgrfjgqvjg68s44Kz44Km44Kk44OBDQor44K744Kt44Kw44OBLOOCt+ODp+OCpuOCpOODgeODreOCpg0KK+OCquOCquODjizjg6jjgrfjg6bjgq0NCivjgqrjgqTjgqvjg68s44OI44K344OkDQor44Kk44Ov44KkLOOCr+ODi+ODpOOCuQ0KK+OCouOCteODkizjgrHjg7PjgrgNCivjgrTjg4jjgqYs44Kr44Kq44OrDQor44Kr44ON44K/44KxLOOCq+ODiuODoQ0KK+OCpuOCqOODnuODhCzjg4jjgrfjg47jg6oNCivjg5Xjgq/jgrfjg54s44OS44Ot44K4DQor44OV44Kv44OALOOCv+OCq+ODpuOCrQ0KK+OCueOCuuOCrSzjgq3jg6fjgqbjgrMNCivjgqrjgrDjg6ks44Om44Kt44OS44KzDQor44OS44Op44OHLOODjuODluOCq+OCug0KK+OCquOCt+OCsizjgr/jgqTjg4ENCivjg57jg4Tjg6Ljg4gs44Ko44Oq44KzDQor44K144K144KtLOOCqOODhOOCqg0KK+OCtOODs+ODgCzjg57jgrXjg6sNCivjg57jg4Tjgqrjgqss44K744Kk44K4DQor44Km44Oh44K244OvLOODnuOCteODhOOCsA0KK+ODi+OCt+OCqizjgqvjgrrjg4rjg6oNCivjgrPjgrjjg54s44Om44Km44K+44KmDQor44K/44OL44Kw44OBLOODqOOCt+ODhOOCsA0KK+OCquOCquOCruOCuSzjg5Ljg63jgrcNCivjgrXjg4Djg5LjgrUs44Kz44Km44Kk44OBDQor44OV44K444Ov44OpLOODouODquOCqg0KK+ODj+ODg+ODiOODqizjg4rjgqrjg6bjgq0NCivjgqvjg57jgr8s44OI44K344KqDQor44OI44OQLOODnuOCs+ODiA0KK+ODpOODnuODgCzjgr/jg4Djg5Ljg60NCivjg6Tjg57jg6Ljg4gs44Of44Kt44KqDQor44K/44Kx44Km44OBLOOCv+OCseOCtw0KK+OCouODqeOCrSzjg5Ljg4fjg5Xjg58NCivjg4vjgrfjgqos44K744OE44KzDQor44Oi44Oq44Km44OBLOOCteODiuOCqA0KK+OCpOODr+OCvyzjg5Ljg4fjgqLjgq0NCivjgrXjgrXjgq0s44Oe44K144Ot44KmDQor44Oe44Ko44Ks44OvLOODpOOCueODhOOCsA0KK+ODleOCr+ODi+OCtyzjgqvjgrrjg47jg5YNCivjgqbjgqjjg4As44OI44Oi44OoDQor44Ok44Oe44Ku44K3LOODnuOCs+ODiA0KK+OCquODjizjgrHjg7PjgrgNCivjg5Xjgrjjgr8s44OV44Kv44Kt44OBDQor44Kt44K/44Og44OpLOODqOOCt+ODn+ODhA0KK+ODqOOCt+ODj+ODqSzjg6bjg6rjgrMNCivjgqTjg6/jgrXjg68s44K/44Kv44OfDQor44Kz44Oe44OELOOCv+ODhOODqOOCtw0KK+OCv+ODi+ODoOODqSzjg5Ljg63jgqLjgq0NCivjgrPjgrXjgqss44OS44K144K/44KxDQor44K/44K344OeLOODnuOCteODpuOCrQ0KK+ODi+OCt+OCquOCqyzjgqvjg4Tjg6bjgq0NCivjgrnjgrrjgq0s44OI44K344KqDQor44K044OI44KmLOODpOOCueODkuODqQ0KK+OCq+ODr+ODj+ODqSzjgrjjg6Xjg7PjgqTjg4ENCivjgr/jgrjjg54s44K344On44Km44K4DQor44Kr44Oz44OOLOOCouOCreOCqg0KK+OCq+OCv+OCt+ODnizjgrfjg7Pjg6QNCivjg4/jgrfjg6Ljg4gs44Of44K544K6DQor44OK44Kr44OALOODkuODreOCtw0KK+OCq+OCteODj+ODqSzjgrvjgqTjgqTjg4ENCivjg4bjg6njg6Ljg4gs44K/44Kr44Ki44KtDQor44Ov44Kr44Oe44OELOODnuODiuODnw0KK+OCpOODiOOCpizjg4jjgrfjg4TjgrANCivjg6/jg4As44OS44OH44OfDQor44K/44Oz44K4LOODkuODreOCouOCrQ0KK+OCquOCquODhOOCqyzjg6HjgrDjg58NCivjg4Tjgrjjg6Ljg4gs44Kx44Kk44Kk44OBDQor44K744Oq44K244OvLOODjuODluODj+ODqw0KK+ODiOODjuOCteOCrSzjg5Xjg5/jgqgNCivjgr/jgqvjgq4s44Of44OB44KzDQor44Kq44OV44OBLOOCq+ODhOODiuODqg0KK+OCouODnuODjizjg5/jg4HjgqoNCivjg4rjgqvjg6Djg6ks44Ki44Kt44OpDQor44K/44OQ44K/LOODpuOCpuOCuA0KK+ODiOODqOOCuuODnyzjg57jgrXjgqLjgq0NCivjgrfjg6Xjgq/jg6Qs44Oo44K344Ot44KmDQor44K/44Kr44OOLOOCt+ODs+OCpOODgQ0KK+ODoOODqeOCq+ODnyzjg5Ljg4jjgrcNCivjgqTjgrfjgrrjgqss44OO44OW44Oo44K3DQor44Kk44Kk44K644KrLOODiOOCt+ODkuOCsw0KK+OCt+ODqeOCpCzjgqLjgq3jg6kNCivjg5Xjgq/jg4/jg6ks44K544Ko44OP44OrDQor44Kk44OK44Ks44KtLOODhuODhOOCqg0KK+ODkuODqeOCt+ODnizjg5Ljg4jjgrcNCivjg4Tjgrjjg5Djg6Tjgrcs44Ki44OE44K3DQor44Oe44OE44KqLOODnuOCteODnw0KK+ODpOODnuODouODiCzjg57jg4rjg5YNCivjg6Ljg6rjg44s44K/44Kr44KqDQor44K/44K444OeLOODiOOCt+OCqg0KK+ODjuOCtuOCrSzjgrjjg6Xjg7MNCivjgqLjg4Djg4Es44OO44OW44K/44KrDQor44K/44Kr44OkLOOCv+OCq+OCtw0KK+OCquODjizjg57jgrXjgqoNCivjg57jg4Tjg6Ljg4gs44Kr44OE44Ki44KtDQor44OP44K344Oi44OILOOCq+OCuuODkuODhw0KK+OCq+ODjizjg6TjgrnjgrcNCivjgr/jgrHjg4As44OV44Of44KzDQor44Kt44Oq44OP44OpLOOCseOCpOOCsw0KK+OCv+ODiuOCqyzjg6Tjgrnjg5LjgrMNCivjg4jjg6rjgqQs44Ki44Kt44OO44OWDQor44OK44Kr44K344OeLOODnuOCteOCqg0KK+OCu+OCueODnyzjgrjjg6Xjg7MNCivjg57jgqjjg47jgr3jg44s44Kr44K644OK44OqDQor44K044OI44KmLOOCt+ODs+OCuA0KK+ODm+ODqizjg6bjgq3jg6jjgrcNCivjgr/jgqvjgqTjg6ks44Kt44On44Km44Kk44OBDQor44K/44OL44OALOOCouOCreODkuODrQ0KK+ODleODq+ODieOCpCzjgrfjg6XjgqbjgqTjg4Hjg63jgqYNCivjgqrjgqrjgq7jg6Qs44Oe44K144OK44KqDQor44OK44Kr44K444OeLOODjuODluODqOOCtw0KK+ODm+ODquOCq+ODryzjgqvjgrrjg5Ljg60NCivjgrnjgrrjgq0s44Oe44Kz44OIDQor44Ki44Kq44KtLOODjuODluODpuOCrQ0KK+OCquOCr+ODj+OCvyzjg57jgrXjg5Ljg60NCivjgq/jg6/jg5Djg6ks44Om44Km44K544KxDQor44Kr44Oz44OALOODkuODreODn+ODhA0KK+OCueOCruODouODiCzjg6rjg6fjgqYNCivjg6Tjg57jg6Ljg4gs44OS44OH44Ki44KtDQor44Kr44ON44KzLOODnuOCteODqw0KK+ODiuODquOCvyzjg6Ljg4jjg6bjgq0NCivjg4vjgrfjgqos44K/44Kx44OS44OtDQor44Kk44Kr44OqLOODj+ODq+OCqg0KK+ODleODq+OCq+ODryzjgrHjg7PjgqTjg4ENCivjgqLjg6njgqQs44K744Kk44K4DQor44Kv44K644Kr44OfLOODkuODreOCtw0KK+OCtOODiOOCpizjgrfjg6XjgqbjgqTjg4ENCivjg6Tjg57jg4/jg6ks44Oe44K544OfDQor44Ok44Oe44OALOOCt+OCsuODqw0KK+OCpOOCuCzjg4jjgrfjg63jgqYNCivjgq/jg6njg6Ljg4Es44Of44Kt44KqDQor44OV44K444Ov44OpLOODkuODh+OCueOCrg0KK+OCv+OCseODgCzjgrXjg4jjgrcNCivjgr/jgqvjg47jgrss44Ko44OE44KqDQor44OI44Oi44Og44OpLOOCt+OCsuODleODnw0KK+OCteODiOOCpizjg4/jgrjjg6ENCivjgrXjgqvjgq3jg5Djg6ks44Oe44K144Om44KtDQor44Of44Ok44K244KtLOODpuOCpuOCuA0KK+ODqOOCt+ODgCzjgrfjg6XjgqbjgqTjg4ENCivjgr/jg4rjgqss44Oo44K344OS44KzDQor44K044OI44KmLOODn+ODgeOCqg0KK+ODi+OCt+ODgCzjgrHjgqTjgqTjg4ENCivjg4rjgqvjgrfjg54s44Of44OE44OS44OtDQor44Kt44Og44OpLOOCt+OCsuODpuOCrQ0KK+OCpOODjuOCpuOCqCzjg57jgrXjg4jjgrcNCivjgqrjgrfjg54s44K/44Kx44K3DQor44Kq44Kq44OkLOODnuODouODqw0KK+ODn+ODpOODouODiCzjg57jgrXjg47jg6oNCivjg6Tjg57jgrfjgr8s44Kq44K144OgDQor44K/44OK44KrLOODnuOCueODnw0KK+ODouODqizjgqLjg4TjgrcNCivjg4rjg6vjg58s44Kq44K144OgDQor44K044OI44KmLOODgOOCpOOCuOODreOCpg0KK+ODpOODnuODgeOCqyzjgqLjgq3jg6kNCivjgrXjgrXjgq0s44Oe44K144OS44OIDQor44Kt44K344OALOODn+ODgeOCqg0KK+OCquOCquODpOODnizjg6jjgqbjgrnjgrENCivjgrfjgqTjg44s44Kr44OE44OkDQor44Kk44K644Of44K144OvLOODqOOCt+ODiOODog0KK+OCq+ODn+ODoOODqSzjg4DjgqTjg4ENCivjgrXjgqvjgqQs44Kx44Oz44Kk44OBDQor44K044OI44KmLOOCq+OCuuOCqg0KK+OCq+ODiOOCpizjgq3jgqTjg4Hjg63jgqYNCivjgr/jgqvjg4/jgrcs44Kz44Km44K4DQor44Kv44OOLOOCv+ODhOODkuOCsw0KK+OCpOODr+ODluODgSzjg57jgrXjg4TjgrANCivjg5vjg7Pjg5Ys44Oe44K144OV44OfDQor44Oi44Oq44K/LOOCuOODpeODsw0KK+OCu+OCreODpCzjgrMNCivjg4zjg57jgr8s44Kr44K644OkDQor44K044OI44KmLOODoeOCpOOCteOCpA0KK+ODnuODiuODmSzjg57jgrXjg6sNCivjgqTjg57jgq3jgr8s44K344On44Km44K4DQor44Kz44OA44KrLOOCseODs+OCuA0KK+ODqOOCt+ODgCzjgr/jgrHjg5LjgrUNCivjgrXjg4jjgqYs44K/44Kx44K3DQor44Kv44K544OfLOOCq+OCuuODpuOCrQ0KK+ODj+OCruODr+ODqSzjg4jjgrfjgqvjgroNCivjg5Xjg6vjgrss44OG44Or44OS44KzDQor44Og44Op44K/LOOCt+ODp+OCpuOCsw0KK+OCquOCr+ODoOODqSzjg57jgrXjg5LjgrMNCivjgr/jg4vjgqzjg58s44K/44Kk44OBDQor44OK44Kr44Og44OpLOOCt+ODs+OCuA0KK+OCs+OCpOOCuuODnyzjg57jgrXjg5LjgrMNCivjgrnjg4njgqYs44OS44Ot44K3DQor44Kk44OHLOODhuODhOODpA0KK+OCt+ODouODjizjgqvjgrrjg5Ljg60NCivjgr/jgqvjgq4s44Oo44K344Ki44KtDQor44K144Kr44KkLOOCouODhOOCtw0KK+OCpOODjuOCpuOCqCzjgqvjgrrjgqoNCivjg5Xjg6vjgr8s44Of44OB44OO44OWDQor44Ki44K144KkLOOCreODqOOCtw0KK+ODleOCq+OCteODryzjgq/jg4vjg5LjgrMNCivjgrTjgqvjgqTjg4Es44Kz44Km44K4DQor44Kq44Kq44OE44KrLOODpOOCueODjuODqg0KK+OCteODiOOCpizjgrXjg4jjgrcNCivjgqTjg47jgqbjgqgs44K344Ky44OrDQor44K/44Kx44OALOODnuOCteODpuOCrQ0KK+ODnuOCueODgCzjg6jjgrfjg5LjgrMNCivjg6Tjg57jg6Ljg4gs44OO44Oc44OrDQor44Kq44Kq44OP44OpLOODnuODiuODlg0KK+ODleODiuODhCzjgqvjgrrjg5LjgrMNCivjgrPjg6Tjg54s44K444Ol44Oz44K+44KmDQor44Ok44Oe44K244KtLOODiOOCt+ODkuODrQ0KK+OCv+OCuOODqizjg5/jg43jg4/jg6sNCivjgrXjg4jjgqYs44OE44Oo44K3DQor44OK44Ks44K344OeLOOCuOODreOCpg0KK+ODhOODgCzjgr/jgqvjgrcNCivjg4rjgqzjgqos44OI44Oi44OfDQor44Kq44Kq44K544KuLOODkuODreODpuOCrQ0KK+OCpOODiOOCpizjg4jjg6Ljg4rjg6oNCivjgr/jg57jgqQs44Om44K/44KrDQor44Of44Ok44K344K/LOODqOOCpuOCpOODgeODreOCpg0KK+ODn+OCt+ODnizjg6jjgrfjg5Ljg60NCivjg5vjg6rjgqQs44OK44Kq44Ki44KtDQor44K044OI44KmLOODnuOCs+ODiA0KK+ODpOOCqizjgrjjg6Xjg7PjgqTjg4ENCivjg5Ljgrjjg6Qs44K/44OE44OkDQor44Ob44Oq44KkLOODkuODh+OCuA0KK+OCv+OCseODgCzjgr/jgqvjg6jjgrcNCivjg6Tjgrnjg4rjgqws44Kr44OE44OfDQor44Ok44Oe44K244KtLOODkuODh+ODkuODiA0KK+ODpOODjizjgqLjgq3jg6kNCivjgrfjg6/jgq8s44Of44OO44OrDQor44Kr44Of44OOLOOCouOCreODqQ0KK+ODiuOCq+OCuOODnizjgr/jgqTjgrjjg63jgqYNCivjg57jgrnjg4As44Kv44OL44OS44KzDQor44Kq44OV44OBLOOCuOODreOCpg0KK+ODleOCr+OCtuOCrSzjg6zjgqTjgrMNCivjgqTjgr/jgqzjgq0s44K344Ky44KtDQor44K344OiLOODgeOCqA0KK+ODleOCr+OCpCzjg47jg5bjgqLjgq0NCivjgqTjg5Ms44K444Oz44Kk44OBDQor44Kz44Og44Kr44KkLOOCreODqOODnw0KK+ODleOCuOOCqCzjg47jg5bjg6bjgq0NCivjg57jg4Tjgq0s44Kr44K644OS44KzDQor44Kz44OQ44Ok44K3LOOCq+OCuuODqOOCtw0KK+OCtOOCpuODgSzjgqvjgrrjg4jjgrcNCivjg4/jgrvjgqzjg68s44Kx44OzDQor44Kr44Ov44K044KoLOODiOODouODleODnw0KK+ODiuOCrOOCteODryzjgr/jgqTjgrvjgqQNCivjg6Tjg57jgrfjgr8s44K144Kr44KoDQor44Kk44K344K244KtLOOCt+ODs+OCpOODgeODreOCpg0KK+OCquODgCzjg5/jg4Hjg5Ljg60NCivjgrfjg7Pjg4njgqYs44K/44Kr44Ki44KtDQor44K344Oi44K144KzLOODj+ODq+ODkuOCtQ0KK+ODhOODhOODnyzjgq3jg6jjgrcNCivjgq3jgr/jgqrjgqss44Kr44K644OS44KzDQor44Kt44K/44K244OvLOOCs+OCpuOCuA0KK+ODiuOCq+OCquOCqyzjgqjjgqTjgrgNCivjgqTjgrfjg5Djgrcs44Of44Om44KtDQor44OP44K344Kw44OBLOODn+ODr+OCsw0KK+ODr+OCv+ODiuODmSzjgqLjgq3jg5Ljg60NCivjgqrjgqrjg5As44Kr44OK44OhDQor44OP44OpLOOCq+OCuuODpA0KK+OCt+ODn+OCuizjgrPjg5/jg4oNCivjgqTjgrbjg68s44Oo44K344OS44KzDQor44Oo44K344Ok44OeLOOCouOCreODqQ0KK+OCueOCruODouODiCzjg5Ljg63jg6bjgq0NCivjgrPjg57jg4Qs44Kz44Km44Kk44OBDQor44OY44Oz44OfLOOCs+OCpuOCvuOCpg0KK+ODleOCq+ODgCzjg47jg6rjg5Xjg58NCivjgrPjg5Djg6Tjgrcs44Oo44K344OS44K1DQor44K544Ku44Oi44OILOOCseODs+OCuA0KK+ODqOOCs+ODpOODnizjg4Tjg4jjg6ANCivjgr/jg4rjgqss44OO44Oq44OS44KzDQor44Of44Ok44K/44OLLOOCteODiOODqw0KK+ODj+OCu+OCrOODryzjgqLjg4TjgrcNCivjgq3jgr/jgqzjg68s44K/44Kr44Ki44KtDQor44OV44Kv44Kq44KrLOODkuODreODpuOCrQ0KK+OCquODoOODqSzjgrXjg4jjg6sNCivjgqTjgrDjg4Es44Oe44Kz44OIDQor44OP44Ok44K3LOODnuODquOCsw0KK+ODkuODqeOCpCzjgqvjgqjjgrMNCivjgqrjgqrjg6Ljg6os44Os44Kk44KzDQor44Kq44Ku44OOLOOCpOODgeODreOCpg0KK+OCv+ODoOODqSzjg5/jg4TjgqoNCivjgr/jgrHjg4As44OS44OH44Ki44KtDQor44Of44Ok44OK44KsLOOCs+OCpuOCpOODgeODreOCpg0KK+ODkuODqeOCpCzjg47jg6rjg57jgrUNCivjg4vjgrfjg6Djg6ks44OS44Ot44Om44KtDQor44OP44OW44OBLOODkuODh+OCq+OCug0KK+OCquOCquOCr+ODqSzjg6jjgrfjgqLjgq0NCivjg4/jg4Pjgr8s44Ko44Kk44K4DQor44Kk44Kz44OeLOODkuODreODpuOCrQ0KK+OCouOCteODkuODiizjgr/jgqvjgrcNCivjgqvjg47jgqYs44K344Oz44K0DQor44OK44Kr44OL44K3LOOCt+ODpeOCpuOCuA0KK+ODn+ODpOOCtuOCrSzjg5Ljg63jg6ANCivjgqTjg4Hjgqvjg4ks44OI44Oo44Ki44KtDQor44OK44Ks44K144OvLOOCouOCreODjuODlg0KK+ODj+ODnuOCsOODgSzjg4/jg6vjgqoNCivjg6Tjgrfjg60s44OS44Ot44OO44OqDQor44Og44Op44KqLOODnuOCrQ0KK+OCquOCquOCruODnuODgSzjgqLjgq3jg6kNCivjgrfjg63jgr8s44Oe44K144Om44KtDQor44OG44K344OeLOODn+ODhOOCqg0KK+OCq+ODr+OCteOCrSzjg6Tjgrnjg6bjgq0NCivjg6Tjg57jg4As44Kq44K144OgDQor44Ob44Oz44OALOODnuOCteODkuODhw0KK+OCq+ODjeOCsyzjgrfjgrLjg6sNCivjg57jg4Tjgrfjg54s44OS44Ot44K644OfDQor44Kz44Of44OkLOOCs+OCpuOCuA0KK+ODr+ODgCzjg4Tjg6jjgrcNCivjg6jjgrfjg4As44K/44Kr44K3DQor44Oi44Oq44K144KtLOODpuOCpuOCuA0KK+OCpOODnuODkuOCrOOCtyzjg5Ljg4fjgqoNCivjgq/jg6njg6Ljg4Es44Ov44K/44OrDQor44Om44Kr44OvLOOCteODiOOCtw0KK+ODhuODqeOCqizjgrjjg63jgqYNCivjgrPjg7Pjg4ks44Oe44KtDQor44K144Kk44OI44KmLOODnuOCteODpuOCrQ0KK+ODqOOCt+ODiuOCrCzjg5Ljg63jgrcNCivjg6bjgqLjgrUs44OP44Or44Om44KtDQor44K744Oz44KsLOODqOOCt+OCqg0KK+ODi+OCt+OCsOODgSzjg4jjgrfjgqLjgq0NCivjgqbjgqjjg4As44OK44Kq44KtDQor44Ok44Oe44Kq44KrLOODiOOCt+OCqg0KK+ODpOODnuODouODiCzjgqvjgrrjgqoNCivjg5Xjgrjjgqvjg68s44OI44K344K/44KxDQor44Kq44Kw44OpLOOCv+OCq+OCtw0KK+OCq+ODr+ODjizjg5Ljg4fjgqoNCivjgqvjg43jgrrjgqss44OS44Ot44Ki44KtDQor44Kq44Kr44Oi44OILOODpuOCpuOCueOCsQ0KK+OCq+ODr+ODhOOCrSzjgqvjgrrjgqoNCivjgrnjgqjjg6jjgrcs44K/44OE44OkDQor44Kr44Ov44OZLOOCt+OCsuODpuOCrQ0KK+OCv+OCq+ODj+OCtyzjgr/jgqvjg6bjgq0NCivjg6Ljg6os44K344Oz44K544KxDQor44K544Ku44Ok44OeLOODhuODhOOCuA0KK+ODnuOCqOODpOODnizjgq3jg6jjgrcNCivjgrPjg6Hjgr/jg4ss44Om44Km44K4DQor44OV44K444Ov44OpLOOCreODqOOCtw0KK+OCouODh+OCrOODryzjg5Ljg63jg6bjgq0NCivjg4jjg5/jgrbjg68s44Kq44K144OgDQor44OK44Kr44K/LOODnuOCteOCouOCrQ0KK+OCv+ODgeODkOODiuOCrSzjg4/jg6vjgqLjgq0NCivjgrPjg4Djg54s44K344On44Km44K0DQor44OP44OK44KkLOODgeODmw0KK+ODgeODjuODjSzjgqvjgrrjgqoNCivjgrfjg5/jgros44Kz44Km44Kk44OBDQor44K/44Kt44K244OvLOODnuOCteODiA0KK+OCr+ODieOCpizjgrHjg7PjgrgNCivjg6Ljg6rjgqrjgqss44Oe44K144Kr44K6DQor44Kr44ON44OS44OpLOOCouOCreOCqg0KK+OCteODiOOCpizjg5Ljg63jg47jg5YNCivjg6Tjg5Djg4os44OI44K344KqDQor44K144Kr44K644OhLOODkuODreODpuOCrQ0KK+ODj+OCt+ODouODiCzjgq3jg6gNCivjg6jjg47jg6Ljg4gs44OS44OH44KtDQor44OQ44Oz44K344On44KmLOOCr+ODi+OCqg0KK+ODleODgeOCqCzjgqvjgrrjgqoNCivjgrnjgrrjgq0s44Kk44Kv44KqDQor44K544K644KtLOODpuOCreODjuODqg0KK+OCs+ODkOODpOOCtyzjgqvjgrrjg5Ljg60NCivjgqvjg4jjgqYs44K/44Kr44OE44KwDQor44Kv44K544OALOOCq+OCuuOCpOODgQ0KK+ODn+ODpOOCv+OCsSzjg6jjgrfjg5Ljg60NCivjgrXjg44s44OS44OH44K4DQor44Oe44Or44K/LOODiOOCt+OCouOCrQ0KK+ODnuOCreOCvyzjg57jg6rjgrMNCivjgqvjgrfjg6/jgq4s44OP44K444OhDQor44K/44OLLOODqOOCt+ODnw0KK+OCouODquODpOOCuSzjgqjjg4TjgqoNCivjgqvjg4jjgqYs44K344Ol44Km44K4DQor44K/44OK44KrLOODnuOCteODkuODiA0KK+ODhOOCuOOCvyzjg5Ljg63jgrcNCivjgqrjgqrjgqzjg6/jg6ks44K/44OA44KqDQor44Og44Op44K144OvLOODiOOCt+ODkuODrQ0KK+OCu+OCreODouODiCzjg5LjgrXjgrcNCivjg4Tjgrjjg6Ljg4gs44OS44K144OIDQor44K344Kq44K/44OLLOODqOOCpuOCpOODgeODreOCpg0KK+ODn+ODryzjg4jjgrfjgqoNCivjg4rjgqzjgrXjgqss44K744Kk44K4DQor44Kz44Kk44OHLOOCouOCreODqQ0KK+OCquOCsOODqSzjg4Tjg4jjg6ANCivjg4Tjg4Tjg58s44K/44Kr44OO44OqDQor44OV44Kr44OfLOOCuOODpeODs+OCpOODgQ0KK+ODqOOCt+ODgCzjgr/jgqvjgrcNCivjg6Ljg63jg5vjgrcs44K544K544OgDQor44K344Kq44OOLOOCv+ODgOODkuODhw0KK+ODpOODnuOCsOODgSzjg47jg5bjg5/jg4ENCivjg57jg5/jg6Qs44OE44Kr44K1DQor44K144Kk44OI44KmLOOCt+OCsuODpuOCrQ0KK+OCouOCreODpOODnizjgq3jg6jjgrcNCivjgqLjg4Djg4Es44Kr44K644OS44OtDQor44Kr44Ov44OOLOODiOOCt+ODn+ODhA0KK+ODiuOCq+ODoOODqSzjgqLjgq3jg5Ljg60NCivjg6Tjg57jgrDjg4Es44OI44K344KtDQor44K144Kv44OeLOODkuODh+ODnw0KK+ODouODgeOCuuOCrSzjg6jjgrfjgr/jgqsNCivjg6/jgr/jg4rjg5ks44Oo44Km44K4DQor44Kz44OQ44Ok44K3LOOCu+OCpOOCuA0KK+OCreOCtyzjg5/jg6zjgqQNCivjg4/jg6TjgrXjgqss44Of44OB44OoDQor44Kz44OV44K4LOODnuOCteODjuODlg0KK+OCteOCpOODiOOCpizjgqLjgq3jgrMNCivjg47jg6Djg6ks44K344Ol44Oz44K4DQor44Oe44OE44KkLOODpuOCreOCqg0KK+ODj+ODpOOCt+ODgCzjg57jgrXjgqgNCivjgqrjgqzjg68s44K/44Kr44K3DQor44Ob44Oz44OALOOCv+OCq+OCtw0KK+OCs+OCtuODryzjg6jjgrfjg6Ljg4gNCivjgrXjgrXjgq0s44OS44OH44Ki44KtDQor44Ov44OALOOCreODqOOCtw0KK+ODpOODnuODr+OCrSzjgr/jg58NCivjg5XjgrjjgqQs44OP44Or44OoDQor44K/44Kt44K244OvLOODpOOCueODkuOCsw0KK+OCteODiOOCpizjgrPjgqbjgrgNCivjg5/jgqvjg58s44K144OI44K3DQor44Of44OvLOODjuODnOODqw0KK+OCquODgSzjg5Ljg63jgrcNCivjg5Xjgrjjgr8s44Kx44Kk44K4DQor44OK44Ks44K/LOOCpOODgeODreOCpg0KK+OCr+ODnOOCvyzjg6jjgqbjgrMNCivjgqLjgqrjgqzjgq0s44Ky44OzDQor44Kr44Oq44Ok44OJLOODiuOCquOCsw0KK+ODn+ODj+OCtyzjgrfjg7PjgqTjg4ENCivjg6Djg6njg57jg4Qs44OB44Ko44KzDQor44Kr44K/44Ok44OeLOOCquOCteODoA0KK+ODpOODnuOCtuOCrSzjg4jjgrfjg5LjgrMNCivjgqrjgqrjgq7jgr0s44Kt44Oo44K/44KrDQor44OQ44OQLOODnuOCteOCq+OCug0KK+ODn+OCt+ODnizjg57jgrXjg5LjgrMNCivjg6Tjg44s44Kq44K144OgDQor44OK44Kr44K444OeLOOCouOCreODkuOCsw0KK+OCv+OCseOCt+OCvyzjgq3jg6fjgqbjgrMNCivjg4rjgqvjg44s44Of44OO44OrDQor44K/44Kr44OOLOODpuOCrQ0KK+OCq+ODr+ODgCzjgqvjgrrjg57jgrUNCivjgr/jgrjjg54s44Kz44Km44K/44Ot44KmDQor44Oi44OB44K644KtLOOCreODqOOCtw0KK+OCreODoOODqSzjgqvjg4Tjg58NCivjgqLjgq3jg5ss44OI44Of44Oi44OIDQor44Ok44Oe44Oi44OILOOCouOCrQ0KK+OCq+ODr+OCuyzjg6bjgr/jgqsNCivjgrXjgrUs44OS44K144KqDQor44OO44K7LOOCq+OCuuODiuODqg0KK+ODkuODqeOCvyzjg4rjgqrjgq0NCivjgrPjg5Djg6Tjgrcs44K344Ol44Km44Kk44OBDQor44Ki44Ks44OvLOODpuOCpuOCueOCsQ0KK+ODhuODqeODouODiCzjg5Ljg63jg5Xjg58NCivjgqrjgrbjgq0s44K144Kr44KoDQor44Oi44OqLOOCreODp+OCpuOCsw0KK+OCpuODhCzjg5Ljg4jjgrcNCivjg6/jgqvjg57jg4Qs44OI44K344K144OADQor44Kk44Oe44KkLOODleODn+OCsw0KK+OCr+ODnCzjgr/jgqvjg5Ljg60NCivjgr/jgqvjg44s44K444Ol44Oz44K4DQor44OS44OT44OOLOODkuODh+OCqg0KK+OCueOCuuOCrSzjg4/jg6vjgq0NCivjgr/jg4rjgqss44K/44Kr44OP44OrDQor44K144Kr44Oi44OqLOOCq+ODqOOCsw0KK+OCv+OCreOCtuODryzjg4bjg4QNCivjg6jjgrfjgqvjg68s44K/44Ko44KzDQor44OI44Oo44OALOODquODpeOCpuOCpOODgQ0KK+OCpuODqeOCt+ODnizjg6bjgqbjgrgNCivjgrPjg7Pjg44s44Oi44OI44OS44OtDQor44OG44Op44Kr44OvLOOCv+OCseODiuOCrA0KK+OCs+ODkOODpOOCtyzjgqLjgq3jg5LjgrMNCivjgq3jg6Djg6ks44K/44Kr44KzDQor44Kr44Of44KqLOODrOOCpA0KK+OCr+ODrOODkOODpOOCtyzjgq3jg6jjg58NCivjgqvjg43jg4As44OS44Ot44KzDQor44Kr44Ov44Oi44OILOOCs+OCpuODmOOCpA0KK+OCpOODnuODoOODqSzjg6jjgrfjg5Ljg60NCivjgrPjg4/jgq7jgrbjg68s44Of44OO44OrDQor44K344OO44K244KtLOOCt+ODpeOCpuOCpOODgeODreOCpg0KK+ODoeOCsOODrSzjgrXjg4jjgrcNCivjgq/jg4vjgrXjg4As44Oe44K144OP44OrDQor44Oi44OqLOOCreODqA0KK+OCq+ODr+OCruOCtyzjgr/jgqvjg6bjgq0NCivjgqrjgqrjgrnjgqws44Kr44Ko44OHDQor44K544OALOODkuODreOCtw0KK+ODiuOCq+ODoOODqSzjgq3jg6jjgqvjgroNCivjgqTjgrfjgrMs44K444Ol44OzDQor44K544K644KtLOODiuOCquODpA0KK+OCreOCr+ODgSzjgqvjgrrjg5LjgrMNCivjgqrjgq7jgr8s44Ki44Kt44OpDQor44K/44Kr44Ok44OeLOOCv+OCq+ODiOODqQ0KK+ODiuOCq+OCt+ODnizjgq3jg6jjgrcNCivjg4Tjgrjjg6Ljg4gs44OS44Ot44K3DQor44OP44Ok44OeLOOCr+ODi+ODkuODrQ0KK+OCpOOCv+OCrOOCrSzjg57jgrXjgqLjgq0NCivjg6Tjg57jg6Ljg4gs44OS44Ot44Ki44KtDQor44Ki44OA44OBLOODkuODreOCtw0KK+OCreOCv+ODnyzjg5Ljg63jg5Ljg4cNCivjgr/jg57jgq0s44Of44OB44KqDQor44Oe44Ko44OALOODpuOCpuOCuA0KK+OCouODgOODgSzjgrfjg6fjgqbjgr7jgqYNCivjgr/jg57jg4As44Kw44Oz44K4DQor44Oi44Oq44Kw44OBLOODpuOCpuOCuA0KK+ODqOOCt+ODiuOCrCzjg47jg6rjgrMNCivjg57jgqjjg4As44K/44Ko44KzDQor44Ov44K/44OK44OZLOOCv+ODnuOCrQ0KK+OCv+OCq+ODj+OCtyzjg6jjg6rjgr/jgqsNCivjgqTjgrfjgrMs44OG44OE44Ot44KmDQor44Kq44K444OeLOOCq+ODhOOCuA0KK+OCt+ODkOODpOODnizjg6jjgrfjgqLjgq0NCivjgrfjg5As44K/44Kx44OS44KzDQor44OI44Oi44OOLOOCseODs+OCpOODgQ0KK+OCueODnyzjg57jgrXjg5Xjg58NCivjg5/jg4Tjg4rjgqws44Ki44Kt44KzDQor44Km44Op44OOLOODnuOCteOCrQ0KK+ODqOOCs+OCuuOCqyzjgrXjg4jjgrcNCivjg5Xjgrjjgqvjg68s44OP44Or44OS44OtDQor44Kr44OW44Op44KuLOODnuOCteODpuOCrQ0KK+ODqOOCt+ODgCzjg6bjgr/jgqsNCivjgrXjgqTjg4jjgqYs44Oo44K344Ki44KtDQor44Ok44OOLOOCv+OCq+ODkuOCtQ0KK+ODqOOCs+OCvyzjg4rjgqrjg58NCivjg4rjgqvjg6Djg6ks44Ki44OE44K3DQor44OK44Of44K144OILOODnuOCteOCq+OCug0KK+ODjeOCruOCtyzjgrHjgqTjgr7jgqYNCivjgq3jg44s44OO44Oc44OrDQor44OK44Kr44K444OeLOOCouOCreODqQ0KK+ODhOODhOODnyzjgrfjg6XjgqbjgqTjg4ENCivjgrPjgqbjg4As44Ok44K544OS44KzDQor44Ob44OqLOODn+ODpuOCrQ0KK+OCs+ODs+ODjizjgqvjgrrjg6QNCivjg6/jg4As44Om44Of44KzDQor44Oe44OE44OK44KsLOOCteODgOOCqg0KK+ODi+OCt+ODoOODqSzjg4jjgrfjg6bjgq0NCivjgqTjgqQs44Ok44K544OS44OtDQor44Ok44K544KkLOODiuOCquOCrQ0KK+OCs+ODkOODpOOCtyzjgrfjg6XjgqbjgqTjg4ENCivjg6Tjg57jgrXjgq0s44Oe44K144OS44OtDQor44K544K644KtLOODpOOCueODpuOCrQ0KK+OCpOODr+OCvyzjg4/jg6vjg5LjgrMNCivjgrfjgrLjg6Ljg6os44K/44Kr44K3DQor44Kk44Oe44Og44OpLOODjuODluOCv+OCqw0KK+ODhOOCq+ODouODiCzjgqLjgq3jg6gNCivjgqTjg4jjgqYs44K344Oz44K544KkDQor44Kv44OcLOOCuOODreOCpg0KK+OCteODiuOCqCzjgqvjgrrjg57jgrUNCivjgrPjg4Djg54s44Ki44Kt44KqDQor44Kk44OI44KmLOOCq+ODhOOCtw0KK+OCouOCr+ODhCzjg6jjgqbjgrMNCivjgqLjgr/jg6njgrcs44Of44Ko44KzDQor44K/44Kw44OqLOOCuOODpeODs+OCsw0KK+ODjizjgr/jg4Tjg6QNCivjgqLjgqvjg57jg4Qs44Kx44Oz44K444Ot44KmDQor44Ki44K144OOLOOCseODs+OCuA0KK+ODiuOCq+OCrOODryzjg57jgrXjgqLjgq0NCivjgqvjg6/jgrfjg54s44Ki44K144KzDQor44K144OI44KmLOODkuODh+OCqg0KK+OCquOCsOODqSzjgrvjgqTjgrgNCivjgqTjgrfjg5Djgrcs44OS44Ot44Om44KtDQor44Oe44OE44Kq44KrLOOCv+OCq+ODqOOCtw0KK+OCv+OCreOCtuODryzjg57jgrXjg6jjgrcNCivjgqTjgr/jgq/jg6ks44K144OI44K3DQor44Ob44Oz44K044KmLOODqOOCt+OCq+OCug0KK+ODiuOCrOODpOOCuSzjgr/jgqvjg6bjgq0NCivjgqbjg4Hjg4As44OS44Ot44K3DQor44Ok44Oe44K344K/LOODhOODjeOCqg0KK+OCpOOCt+OCsOODrSzjg5Ljg63jgrcNCivjg6Ljg6os44OI44Oo44OS44KzDQor44K/44OK44KrLOOCs+OCpuOCpOODgQ0KK+ODkuOCsOODgSzjgrfjgrLjg4gNCivjgq3jg4gs44K344Oz44Kk44OBDQor44K/44OK44KrLOOCq+OCuuODpuOCrQ0KK+OCueOCuuOCrSzjgqvjgrrjg5Ljg60NCivjgrnjgqzjgqQs44Kx44Oz44K4DQor44Oo44ON44K244OvLOODqOOCt+OCq+OCug0KK+OCouODqeOCq+ODryzjg6rjg6XjgqbjgrgNCivjgqTjg47jg4As44Ok44K544OS44K1DQor44Kr44OI44KmLOODnuOCteOCqg0KK+OCq+OCsuODpOODnizjg57jgrXjgrcNCivjg5/jg6Tjg6/jgq0s44OI44K344OS44KzDQor44Of44OB44Ok44OeLOOCv+ODgOODpOOCuQ0KK+ODouODqizjg4jjgrfjgqLjgq0NCivjg6Ljg6rjgrXjg68s44K344Oz44Kk44OB44Ot44KmDQor44OL44K344Og44OpLOOCq+ODhOODpuOCrQ0KK+OCteOCpOODiOOCpizjg6Tjgrnjg47jg6oNCivjg6Tjg57jg6Ljg4gs44Oo44Km44K544KxDQor44Oe44OE44Km44OpLOODqOOCt+OCouOCrQ0KK+ODj+OCu+OCrOODryzjg4Tjg4jjg6ANCivjgqbjg4Hjg4As44K444Ol44Oz44Kk44OBDQor44Ok44K544OALOOCs+OCpuOCpOODgQ0KK+OCpOOCt+ODgCzjg4jjgqrjg6sNCivjg6Ljg6rjg44s44Kr44OE44Oe44K1DQor44Kt44K/44Ok44OeLOODqOOCt+ODkuODrQ0KK+OCteOCq+ODouODiCzjg6jjgrfjg47jg6oNCivjgr3jgqbjg5/jg6Qs44OS44Ot44Om44KtDQor44Kt44Kv44OBLOOCt+ODs+OCpOODgQ0KK+OCt+ODluOCpCzjgrPjgqbjgrgNCivjg4jjg5/jgr8s44Ki44OE44K3DQor44Oi44OqLOOCs+OCpuOCuA0KK+ODpOODnuOCsOODgSzjgrjjg6Xjg7PjgrgNCivjgq3jgr/jg6Tjg54s44Oo44K344OS44OtDQor44Oe44Oz44Oi44OILOOCouOCreODqQ0KK+OCv+ODiuOCqyzjg6bjgr/jgqsNCivjg6Ljg6os44Kr44K644OS44OtDQor44Kk44K/44Kv44OpLOOCpOOCteODoA0KK+OCpOODgeODn+ODpCzjg57jgrXjgrcNCivjg4vjgrfjg6Tjg54s44Kr44OE44K4DQor44Ov44K/44OK44OZLOODkuODreOCtw0KK+ODj+ODs+OCrOOCpCzjg4/jg6vjgqoNCivjg4rjgqzjg44s44Kx44Kk44Kk44OB44Ot44KmDQor44K344OQLOOCseODs+OCuA0KK+OCs+OCuOODnizjgrnjgrnjg6ANCivjgr/jgr/jg44s44K144OI44K3DQor44Kr44Ov44OQ44K/LOODnuOCteODkuOCsw0KK+OCv+OCseODgCzjgr/jg63jgqYNCivjgqrjg6Djg6ks44Kk44Kv44Ot44KmDQor44K144KzLOODkuODreOCtw0KK+OCpOOCt+ODj+ODqSzjg5/jg47jg6sNCivjgqTjg4Hjg47jgrss44K544K544OgDQor44Kt44K344OALOODqOOCt+ODnw0KK+ODn+OCq+ODnyzjgrjjg6Xjg7MNCivjg4/jg6Tjgrcs44K/44Kv44K4DQor44K144K144KtLOOCouODpuODnw0KK+ODqOODjeODn+ODhCzjgqvjgrrjg4rjg6oNCivjgrvjgq3jg40s44Oo44K344OK44OqDQor44Kk44Oe44OL44K3LOOCreODqOOCv+ODgA0KK+OCouOCquOCrSzjgr/jg4DjgrcNCivjgrnjgq7jg6Tjg54s44Kk44K144KqDQor44OK44Kr44Oi44OqLOODqOOCt+ODleODnw0KK+OCt+ODnuODgCzjg57jgrXjg5LjgrMNCivjg57jgrnjg4As44OV44K144KqDQor44OE44Oc44KkLOODkuODreOCtw0KK+OCu+OCreODpCzjgrnjgrnjg6ANCivjgq3jgrjjg54s44OO44Oq44KqDQor44Oo44K344K644OfLOODkuODh+OCv+OCqw0KK+ODpOODiuOCruODgOODhizjgrfjg7Pjg6QNCivjgrfjgrLjg57jg4Qs44OP44Or44Ok44K5DQor44Kk44OO44Km44KoLOODiuOCquOCrQ0KK+OCv+OCseOCpuODgSzjgrHjgqTjgrMNCivjgr/jg4rjgqss44K/44Kx44K3DQor44OS44Ks44K3LOOCt+ODpeOCpuOCuA0KK+OCv+OCq+OCvyzjg4rjgqrjg5Ljg60NCivjg4rjgqvjgqQs44OE44Ku44KqDQor44OP44K744Ks44OvLOOCuOODpeODs+OCpOODgQ0KK+OCv+ODiyzjgr/jgqvjgrcNCivjgrPjg5Djg6Tjgrcs44Of44Kt44OI44OoDQor44K/44Kr44OP44K3LOOCouOCteOCsw0KK+OCouODmSzjg57jgrXjg4gNCivjgrPjg5Djg6Tjgrcs44Oo44K344K+44KmDQor44Kq44OOLOOCpOOCr+ODpA0KK+OCv+OCq+ODj+OCtyzjg6bjgq3jg5Ljg60NCivjgq/jg63jg4As44Ki44OE44K3DQor44Ov44K/44OK44OZLOODkuODreOCtw0KK+OCouODmSzjgrfjg7PjgrgNCivjgqTjg47jgqbjgqgs44Oo44Km44KzDQor44Ko44Oz44OJLOODqOOCt+OCqg0KK+ODjuODjuOCt+OCvyzjgrfjgrLjg5Xjg58NCivjgqvjg4rjgqQs44Kv44Of44KzDQor44Kz44K/44KtLOOCuA0KK+OCv+OCq+ODj+OCtyzjg6jjgqbjgrMNCivjgrfjgrLjg6Tjg54s44OI44Of44KqDQor44OV44Kr44OALOOCouOCreOCqg0KK+OCt+OCquOCuCzjgqvjg4Tjg6bjgq0NCivjg6Ljg6rjg6Qs44OV44Of44OS44OtDQor44Kq44Kq44OE44KrLOODnuOCteODpA0KK+OCouODmSzjg57jgrXjgr/jgqsNCivjg5Ljg6njgqQs44K/44Kr44Om44KtDQor44Og44Op44Oe44OELOOCuOODpeODsw0KK+ODn+OCuuOCvyzjg57jgrXjg58NCivjg5vjg6rjgqgs44Kr44K644Om44KtDQor44OS44Kr44K1LOODnuOCteOCv+OCqw0KK+OCquOCt+OCv+ODiyzjg57jgrPjg4gNCivjgrPjg5Djg6Tjgrcs44Kr44OE44OfDQor44Kv44Op44OP44K3LOODkuODh+ODpuOCrQ0KK+ODkuODqeODkOODqyzjgr/jgrHjgqoNCivjg5Xjgrjjgqjjg4As44Oe44Kz44OIDQor44OI44K244OvLOOCq+ODhOODnw0KK+ODpOODiuOCuyzjgrfjgrLjg6sNCivjgq/jg5zjgr8s44Oo44K344KqDQor44Oe44Of44OkLOODnuOCteOCrQ0KK+ODpuODj+ODqeOCrizjg57jgrXjg58NCivjg4Hjg6fjgqbjg4rjg7Ms44Oo44K344Oe44OtDQor44Of44Oo44K3LOODiOOCquODqw0KK+ODjuOCuOODnizjg6jjgrfjg47jg6oNCivjg6Ljg6rjgrXjgq0s44Oe44Kz44OIDQor44Kz44Ok44OeLOODiOOCt+OCouOCrQ0KK+OCq+ODiOOCpizjg5Ljg63jgq0NCivjgq3jg47jgrfjgr8s44Ok44OB44OoDQor44Kr44Ov44Og44OtLOOCteODiOOCtw0KK+ODouODqizjgrHjgqTjgqTjg4ENCivjg5Ljg6njgrfjgr8s44K144OA44KtDQor44Kr44Ov44K344OeLOODquODp+OCpg0KK+ODleODq+OCq+ODryzjgqLjgq3jg4gNCivjgqTjg7Pjg4fjg7Ms44Oe44K144OS44KzDQor44Ok44Oe44OALOODpOOCueODpuOCrQ0KK+ODhOOCr+ODgCzjg5/jg47jg6sNCivjgqTjg6/jgrXjgq0s44Oe44K144OS44OIDQor44Kq44Oe44KoLOOCquOCteODoA0KK+OCueOCuuOCrSzjg57jgrXjg6bjgq0NCivjg4/jg6ks44Oe44K144OS44KzDQor44K144Kr44KkLOOCv+ODhOODoOODjQ0KK+ODouODquODpCzjgqvjgrrjg57jgrUNCivjg5/jg6Tjg6Ljg4gs44OI44K344OS44OtDQor44K344Ky44K/LOODnuOCteODkuODrQ0KK+OCpOOCt+OCq+ODryzjg5Ljg4fjg47jg6oNCivjgr/jgrbjgq0s44K144OA44OgDQor44K544Ko44OS44OtLOODoOODjeODpA0KK+OCq+ODjeODgCzjgrPjgqbjgqTjg4ENCivjgrnjgqjjg5Ljg60s44K444Ol44Oz44Kk44OBDQor44K144K144KtLOODquODpeOCpuOCteOCrw0KK+ODkuODpOODnizjgr/jg4Tjg4/jg6sNCivjgq3jg4njgrDjg4Es44Oo44K344OS44OtDQor44K344Oe44OALOODiOOCt+ODpuOCrQ0KK+ODn+ODpOOCsSzjg5Ljg4jjg58NCivjg6Ljg6os44K444Ot44KmDQor44K344Op44Kr44OvLOOCs+OCpuOCuA0KK+ODr+OCq+ODkOODpOOCtyzjgrfjg7PjgqTjg4Hjg63jgqYNCivjg6Tjg57jgrfjgr8s44Kr44K644KqDQor44Ki44Oe44OOLOOCuOODpeODs+OCuA0KK+OCv+OCseOCpOODgSzjg5Ljg63jgr/jgqsNCivjgrfjg7Ms44Kx44Kk44KzDQor44Kr44K144OP44OpLOODhuODhOODpA0KK+OCv+ODiuOCqyzjgrHjgqTjgrcNCivjgqrjgq/jg4As44Ki44Kt44OpDQor44Kr44OI44KmLOODiOODouOCsw0KK+OCq+ODr+OCteOCrSzjg57jgrXjgrMNCivjgqvjg4jjgqYs44Kr44K644KqDQor44Kk44OB44K7LOODnuOCteOCouOCrQ0KK+OCreOCv+OCrOODryzjgrLjg7Pjg5jjgqQNCivjg6TjgrnjgqQs44Oo44K344OO44OWDQor44Ko44OALOODiOODn+OCq+OCug0KK+ODj+ODpOOCtyzjgr/jg4TjgrgNCivjg4rjgqzjgqQs44K144OI44K3DQor44OI44OO44Og44OpLOODnuOCteODjuODqg0KK+OCv+ODiuOCqyzjg47jg5bjg6bjgq0NCivjgq/jg6rjg5Djg6Tjgrcs44Oo44K344OO44OqDQor44Kt44Og44OpLOOCq+ODhOOCsw0KK+ODj+OCvOOCrSzjg47jg5bjg6bjgq0NCivjgqLjg7Pjg44s44Ki44OE44K3DQor44K/44Kr44Oo44K3LOODqOOCt+OCteODiA0KK+OCouODs+OCtuOCpCzjgrfjg6fjgqbjgrjjg63jgqYNCivjgr/jgqvjg4/jgrcs44Kq44K144OgDQor44OP44Op44OOLOODhOODjeOCqg0KK+ODiuOCq+OCrOODryzjgqvjg4Tjg6jjgrcNCivjg4vjgrfjgqvjg68s44Om44Kt44KqDQor44K344OW44OkLOOCq+OCuuODkuODrQ0KK+OCq+ODiOOCpizjg47jg5bjg5Ljg60NCivjgqLjg4Djg4Es44OI44K344OS44OtDQor44K144Kv44Op44KkLOODpOOCueOCv+OCqw0KK+OCr+OCteODjizjg4jjgrfjg5Ljg60NCivjg5/jg4rjg5/jgr7jg44s44Of44OO44OrDQor44OE44K444Og44OpLOOCouOCreODiOOCtw0KK+ODpOODnuODgCzjgqTjgrXjg6ANCivjgqvjg4Tjgrfjg54s44K344Ky44OfDQor44Kz44Ok44OK44KrLOODkuODreODpuOCrQ0KK+OCv+ODkOOCvyzjgqLjgq3jg6kNCivjgqLjg4Djg4Es44Oo44K344OS44OtDQor44OS44Ot44OOLOOCu+OCpOOCpOODgQ0KK+ODhOOCtuOCrSzjg5Ljg63jgqLjgq0NCivjgr/jg4Hjg5Djg4os44K344Ky44Ki44KtDQor44OZ44OD44K344OnLOOCq+OCuuODnw0KK+ODnuODhOOCt+OCvyzjg4Hjg6Xjgqbjgr7jgqYNCivjgr/jg4vjgrDjg4Es44Kx44Oz44K344Ol44KmDQor44OK44Kr44OI44OiLOODoOODhOODnw0KK+ODi+OCt+ODoOODqSzjg5Ljg63jgrcNCivjg5/jgqbjg6ks44Oe44Kz44OIDQor44Kz44Oz44OJLOOCquOCteODoA0KK+ODnuODhOOCpCzjg57jgrXjgq0NCivjg57jg4Tjg6Ljg4gs44OS44Ot44Kr44K6DQor44Ob44Oq44KkLOODkuODreOCtw0KK+ODnuOCueODouODiCzjg4Tjg4jjg6ANCivjg4rjgqvjgrjjg54s44OB44Kr44K3DQor44Kt44Og44OpLOOCseODs+OCpOODgQ0KK+ODn+ODryzjg5Ljg63jg6bjgq0NCivjgqTjgrfjg5Djgrcs44Ok44K544K3DQor44Ko44Kw44OBLOODjuODquODkuOCtQ0KK+OCpOODiuODleOCryzjgrjjg6Xjg7MNCivjg6/jgr/jg4zjgq0s44Ok44K544OS44OtDQor44OS44Kw44OBLOODqOOCt+ODkuOCsw0KK+OCpOOCseODjizjgq3jgq/jgqoNCivjgqbjg6Hjg4/jg6ks44Oe44OK44OWDQor44OO44K244OvLOOCv+ODgOOCtw0KK+OCpOODnuOCpCzjg57jgrXjgq0NCivjgr/jgqvjg4/jgrcs44Kr44OE44K4DQor44Kk44Kk44OALOODj+ODq+ODkuOCtQ0KK+ODleOCuOOCq+ODryzjgqvjgqrjg6sNCivjg4vjgrfjgqgs44K/44OA44OS44KzDQor44Kz44K544KyLOODkuODreOCtw0KK+OCquOCquOCvyzjgrjjg6Xjg7PjgrMNCivjg47jgrgs44Kv44OL44OS44KzDQor44Kz44Oc44OqLOODn+OCreOCqg0KK+OCueOCruODpOODnizjg6jjgrfjgqLjgq0NCivjgqvjg6/jgr8s44OG44OE44OS44KzDQor44K144Oh44K344OeLOODn+ODjeOCqg0KK+OCs+ODpOODnizjgq3jg6jjgr/jgqsNCivjgqjjg7PjgqvjgqQs44K/44Kr44K3DQor44Kz44Oi44OALOODhOODiOODoA0KK+OCquOCrOODryzjgrPjgqbjgqTjg4ENCivjg6Tjg57jg6Djg6ks44Kr44K644Oe44K1DQor44Ko44OO44Oi44OILOODrOOCpOOCuA0KK+OCv+OCq+ODgCzjg5LjgrXjgr/jg4ANCivjg4rjgqvjg5/jgr4s44Om44Of44KzDQor44Kq44Kr44Og44OpLOODkuODreOCtw0KK+OCq+ODn+ODkOODpOOCtyzjgrvjgqTjgrgNCivjg5Xjgrjjg6Ljg6os44Of44Kt44KqDQor44Kv44Ot44OALOOCt+ODs+OCpOODgQ0KK+OCteODiOOCpizjg6jjg6rjgqgNCivjg6jjgrfjg6Djg6ks44K/44Kt44KqDQor44Oi44K/44KkLOOCv+OCr+OCuA0KK+ODoOODqeOCvyzjg4jjgqrjg6sNCivjg5/jg68s44OK44Kq44OIDQor44Kk44OP44OpLOOCqOODnw0KK+OCpOODnuOCpCzjgr/jgqvjgrcNCivjg5Ljg44s44Kr44K644KqDQor44Oe44OE44Oi44OILOOCv+OCq+OCtw0KK+OCu+ODiCzjg6jjgqbjgrgNCivjgq/jg57jgqzjgqQs44Ok44K544OS44OtDQor44Ok44Oe44OALOODqOOCt+OCqg0KK+ODr+OCv+ODiuODmSzjg6bjgqbjgrMNCivjg6TjgrXjgqss44OS44Ot44K3DQor44K144OI44KmLOOCouOCreODkuODrQ0KK+ODn+ODpOOCv+OCsSzjg5Ljg63jg47jg5YNCivjg57jg4Tjgqbjg6ks44OS44OI44K3DQor44Oe44OE44K344K/LOODnuOCs+ODiA0KK+OCpuODqeODmSzjgqTjgrXjg6ANCivjgrfjgqzjgq0s44Oe44K144Oo44K3DQor44OG44Op44OALOODqOOCt+ODkuODiA0KK+OCpOODr+ODouODiCzjg6jjgrfjgqLjgq0NCivjgqTjg47jgqbjgqgs44K444Ot44KmDQor44Oi44OB44K644KtLOODpuOCreOCqg0KK+ODqOOCt+OCuuODnyzjgqjjgqTjgqTjg4ENCivjg5/jgqbjg6ks44Of44OE44OrDQor44Of44K644OOLOOCv+OCq+ODpuOCrQ0KK+ODqOOCt+OCpCzjgrjjg6Xjg7PjgqTjg4ENCivjg5Xjg6vjgqQs44Oo44K344OS44OtDQor44OP44Ok44K3LOOCt+OCsuOCouOCrQ0KK+OCt+ODqeOCpOOCtyzjg5Ljg4fjgqoNCivjgrnjgqzjg6/jg6ks44K/44OE44KqDQor44OK44Kr44KkLOOCseOCpOOCpOODgQ0KK+ODjuODleOCuCzjg6jjgrfjg4/jg6sNCivjgrXjg4jjgqYs44OS44Ot44Kr44K6DQor44Kv44Ot44OALOOCreOCpOODgQ0KK+OCpOOCseODgCzjgr/jgqvjgrcNCivjgrXjgqws44Kx44Kk44K3DQor44Of44Ok44Kr44OvLOOCpOOCr+ODkuOCtQ0KK+ODr+ODqeOCt+ODiizjgrfjgrLjg6sNCivjgq3jgr/jgqzjg68s44OO44OW44Om44KtDQor44Kk44Oe44KkLOODleODn+OCouOCrQ0KK+ODn+OCteOCrSzjg5Ljg63jg47jg5YNCivjgqTjgrfjg4As44K/44Kx44K3DQor44Oq44Kv44OpLOODkuODh+OCouOCrQ0KK+OCt+ODp+OCpuOCuCzjgrPjgqbjgqTjg4Hjg63jgqYNCivjg5Xjgq/jg4rjgqws44Oo44K344Kr44K6DQor44Kv44Ot44KtLOOCv+OCq+OCqg0KK+ODnuOCv+OCrSzjgrfjg6fjgqbjgrbjg7MNCivjgrvjgq3jg40s44Oe44K144OP44OrDQor44Ok44Oe44K344K/LOODn+ODhOODkuODrQ0KK+OCv+ODiuOCqyzjg6jjgrfjgqLjgq0NCivjgqrjgqrjg4/jg54s44Oe44K144OS44OtDQor44Kq44Kq44OE44OcLOODqOOCt+OCouOCrQ0KK+OCv+OCpCzjg5LjgrXjg4/jg6sNCivjg4Tjg6vjg6Qs44Oe44K144OO44OqDQor44Oo44K344OALOODqOOCpuOCpOODgQ0KK+ODnuOCueODn+ODhCzjgr/jgqvjgrcNCivjgqvjgrnjg6Qs44K344Ky44KqDQor44Oo44K344OALOODn+ODjuODqw0KK+OCq+ODr+ODoOODqSzjg5Ljg4fjgq0NCivjg4/jg6Tjgrcs44Kv44OL44OS44KzDQor44Kv44OL44Oi44OILOODnuOCteODpuOCrQ0KK+OCouODqeOCq+ODryzjg5Ljg4rjgrMNCivjg4rjgqvjg6Djg6ks44Oe44K144OO44OqDQor44Kk44K344Kw44OtLOOCu+OCpOOCuA0KK+ODj+ODpOODnyzjgqvjg4Tjg5LjgrMNCivjg5/jg4rjg5/jgr7jg44s44Kt44Oz44K4DQor44K144Kr44K/LOODn+ODjuODqw0KK+OCq+ODr+ODouODiCzjg5Xjg5/jgqvjgroNCivjg6Djg6njgqrjgqss44Ok44K544OO44OqDQor44Kk44OI44KmLOODqOOCt+OCqg0KK+ODr+OCv+ODiuODmSzjg5/jg4HjgqoNCivjg47jg6Djg6ks44Oe44K144Kr44K6DQor44K144OI44KmLOODj+ODq+ODig0KK+ODr+OCv+ODiuODmSzjg5Ljg63jgrcNCivjgrPjg5Djg6Tjgrcs44Oe44K144Kr44OEDQor44OM44Or44KtLOODkuODh+ODkuOCsw0KK+ODqOOCt+ODgCzjg6jjgqbjgqTjg4ENCivjgrXjgqTjg4jjgqYs44OS44Ot44K3DQor44OS44Op44KkLOODqOOCt+ODpuOCrQ0KK+OCreODoOODqSzjgr/jgqvjgrcNCivjgqrjgq8s44Ot44KmDQor44OP44Ok44K144KrLOODpOOCueOCsw0KK+OCouOCteODjizjgrHjg7PjgrgNCivjg5XjgrjjgrXjgq0s44K344Oz44OkDQor44Ki44Kt44Oi44OILOODquOCqw0KK+OCt+ODnuODgCzjg57jgrXjgqgNCivjg5/jgrrjgqvjg58s44Oe44K144OP44OrDQor44OK44Kr44Ks44OvLOODiOOCquODqw0KK+OCteODiOOCpizjg4bjg4Tjg6QNCivjgrPjg5Djgrfjg6os44Kx44Oz44K4DQor44Ki44Op44KtLOODqOOCt+OCqg0KK+OCueOCuuOCrSzjg4rjgqrjg4jjgrcNCivjg4vjgrfjg4cs44K744OEDQor44Kq44OB44Ki44KkLOODqOOCt+ODkuOCtQ0KK+ODjuODiuOCqyzjgr/jgqvjgrcNCivjg6TjgrnjgqQs44Oq44Ol44Km44K4DQor44Kz44OP44K/LOOCseODs+OCpOODgQ0KK+ODn+ODjuOCt+ODnizjgqLjg4TjgqoNCivjg4bjg6njgrfjg54s44Kt44Of44OS44KzDQor44Ok44Kv44OvLOODqOOCt+OCqg0KK+OCueOCrOODr+ODqSzjg5/jg4HjgqoNCivjg5/jg4Tjg4/jgrcs44OG44OE44Ot44KmDQor44OO44Og44OpLOODjuODquOCsw0KK+ODgeODp+OCpizjgqLjgrrjg58NCivjgrXjg4jjgqYs44Oq44On44Km44KzDQor44K344K644OP44OpLOODrOOCpOOCsw0KK+ODj+ODpOOCt+OCq+ODryzjgrHjg7PjgrgNCivjg4vjg68s44Oo44K344KqDQor44Of44Ko44OOLOOCseODs+OCpOODgQ0KK+OCt+ODnuODgCzjg5Ljg4fjg4gNCivjg4rjgqvjg6Djg6ks44OI44K344KqDQor44OS44Op44OOLOODquODp+OCpuOCpOODgQ0KK+ODpOODnuODiOODpCzjgqvjgrrjg5LjgrMNCivjg4Tjg47jg4As44Ok44K544OO44OqDQor44Kz44OQ44Ok44K3LOODjuODluOCouOCrQ0KK+OCteOCq+OCr+ODqSzjgq3jg6fjgqbjgrMNCivjg57jg4Tjg4As44Oe44K144Ki44KtDQor44Kk44Oe44Og44OpLOOCu+OCpOOCtw0KK+ODpOOCruODj+OCtyzjg4rjgqrjgrMNCivjgqrjgq7jg44s44OS44Ot44KqDQor44K/44OK44KrLOODqOOCt+ODnuOCtQ0KK+ODkuOCrCzjg6jjgrfjgqvjgroNCivjgrXjgrMs44OE44OI44OgDQor44K/44K244KtLOOCv+ODouODhA0KK+OCpOOCpOODgCzjg57jgrXjg4/jg6sNCivjgqTjgqTjg4As44Oq44On44Km44K544KxDQor44Oe44OE44Kw44OeLOOCt+OCsuODmw0KK+ODoOODqeOCvyzjgrHjg7MNCivjg6Tjgrnjg6Ljg4gs44Oe44Kz44OIDQor44K344Of44K6LOODkuODreOCtw0KK+ODr+OCr+OCpCzjg6jjgrfjgr/jgqsNCivjgr/jgqvjg4/jgrcs44Oo44K344KqDQor44Kt44K/44KkLOODiOOCt+ODkuOCsw0KK+OCouODgOODgSzjgrfjg6fjgqbjgqTjg4Hjg63jgqYNCivjg4/jg4rjg5bjg4Es44OP44K444OhDQor44K144OI44KmLOOCr+ODi+ODkuODrQ0KK+OCouODqeOCpCzjg4jjgrfjg5LjgrMNCivjgr/jgrHjg4rjgqss44K144OI44K3DQor44Kr44KkLOODn+ODm+OCsw0KK+OCouOCq+ODgCzjgrfjgrrjgqoNCivjgq/jg4vjgrnjgqgs44OS44Ot44Ki44KtDQor44Oe44Ko44Kr44OvLOOCouOCreODqQ0KK+ODn+ODiuODnyzjg5/jg4TjgrcNCivjgr/jgq3jgqzjg58s44OS44OH44Om44KtDQor44Oe44OE44KkLOODnuOCs+ODiA0KK+OCt+ODqeOCpCzjg57jgrXjg5/jg4ENCivjgr/jgrHjg6jjgrcs44K744Kk44OO44K544KxDQor44K/44Kr44OALOOCreODqOOCv+OCqw0KK+OCv+OCq+OCrizjgr/jgqvjg5LjgrMNCivjgq/jg4njgqYs44Kt44Oo44K/44KrDQor44K344Oe44OALOODjuODluOCsw0KK+OCq+ODiOOCpizjgqvjgrrjgqoNCivjgrfjgq7jg6fjgqYs44OS44OH44Ki44KtDQor44OS44Ot44OOLOOCveOCquOCuOODow0KK+OCreODjuOCt+OCvyzjg6jjgrfjgqgNCivjgrfjg5/jgros44K344On44Km44K+44KmDQor44K344Og44OpLOODkuODreOCouOCrQ0KK+OCr+OCteOCq+ODqizjg5/jg5sNCivjgqvjg6vjg5ks44OI44K344OP44OrDQor44Oe44OE44Oi44OILOODiuOCquODpuOCrQ0KK+OCt+ODnuODoOODqSzjg4jjg57jgrUNCivjgqvjg4Tjgqvjg68s44K/44Kr44KqDQor44Kk44K6LOOCpOOCteOCqg0KK+OCteOCr+ODqeODouODiCzjgqTjg4TjgrgNCivjg6Ljg6rjgr8s44K444Ot44KmDQor44K/44OK44OZLOOCr+ODi+OCpOODgQ0KK+ODj+ODg+ODiOODqizjg5Xjg5/jg4gNCivjg6rjg6XjgqbjgrQs44K344Ol44Oz44Kk44OBDQor44Kq44Oe44OE44K244OvLOODnuOCteODj+ODqw0KK+OCquODiOODryzjg6bjgq3jg6jjgrcNCivjgrPjg4Djg54s44K744Kk44Kk44OBDQor44Kr44Ok44K344OeLOODpuOCpuOCuA0KK+OCs+ODkOODpOOCtyzjgrfjgrLjg6sNCivjgq/jg4vjgqjjg4As44Oe44Kt44KqDQor44Kz44KmLOOCq+OCuuODiuODqg0KK+ODi+OCt+ODpOODnizjg5Ljg4jjg58NCivjg6/jg4As44OS44Ot44OkDQor44OL44K344Oi44OILOOCv+OCq+OCtw0KK+OCteOCpOODiOOCpizjgqvjg4Tjg47jg6oNCivjg4jjgrfjg54s44Oo44Km44Kk44OBDQor44Kq44Kq44OE44KrLOODm+OCs+OCrw0KK+OCquODjizjg57jgrXjg6sNCivjgrnjgrrjgq0s44K/44Kr44K3DQor44K144Kv44Op44KkLOOCv+OCq+OCtw0KK+OCquOCvOOCrSzjgr/jgqvjgrcNCivjgqrjgqvjg4As44Oe44K144Of44OEDQor44Kq44Ks44OvLOODkuODreOCtw0KK+OCpOOCseOCrOODnyzjg5Ljg4fjg4jjgrcNCivjgrPjg57jg4Qs44K/44Kr44OO44OqDQor44Oo44K344KkLOODqOOCt+OCouOCrQ0KK+ODkuODqeODjizjgrfjg6fjgqbjgqTjg4ENCivjgr/jgqvjgrnjgqss44OS44Ot44K3DQor44OP44K344Oi44OILOODpOOCueODpuOCrQ0KK+OCr+ODr+OCqCzjgq3jgq/jgqoNCivjgqvjg43jg57jg4Qs44Kr44ON44OS44OHDQor44Oe44OE44KqLOOCseOCpOOCpOODgQ0KK+OCpOODiSzjgr/jgqvjg5LjgrMNCivjgqTjg44s44K444Ol44Oz44Kk44OBDQor44K144Kk44OI44KmLOOCv+OCseOCtw0KK+OCq+ODn+ODpOODnizjgrPjgqbjgrgNCivjgrPjgrfjg6Ljg4gs44Kz44Km44Kk44OBDQor44Kq44Kq44Ks44Ov44OpLOODqOOCt+ODjuODlg0KK+OCv+OCq+ODj+OCtyzjg57jgrPjg4gNCivjg4rjgqzjg57jg4Qs44K344Oz44Kk44OBDQor44K544K644KtLOOCtOODreOCpg0KK+ODhuODqeOCqizjg6jjgqbjgrgNCivjg5vjg6rjgrEs44Kr44Kq44OrDQor44K544K644KtLOOCv+OCq+OCtw0KK+OCquOCrOODryzjgrPjgqbjgqTjg4ENCivjg5/jg6Tjg6Ljg4gs44OO44OW44KqDQor44Kq44Kq44K544OfLOODkuODreODpuOCrQ0KK+OCpOODr+ODluODgSzjg47jg5bjg6TjgrkNCivjg57jg4Tjgqbjg6ks44K/44OE44KqDQor44K144Ov44OBLOODgeOCq+OCqg0KK+ODhuODqeODgCzjgrvjg4TjgrMNCivjgqTjg5Djg6Tjgrcs44Om44K/44KrDQor44Kk44Ov44K7LOOCuOODpeODs+OCpOODgeODrQ0KK+OCquOCrOODryzjgrvjgqTjgrgNCivjgqLjgr0s44Ok44K544OI44OiDQor44OV44Kv44Oi44OILOOCteODpuODqg0KK+OCpOODhyzjg5Xjg5/jgr/jgqsNCivjgqvjg6/jgrXjgq0s44OG44OE44K4DQor44OP44Or44OKLOODnuOCteODjuODqg0KK+OCv+OCuOODnizjg6bjgq3jg5Xjg58NCivjgqvjg4rjg6Tjg54s44Oo44Km44K4DQor44K/44OK44KrLOODr+OCv+ODqw0KK+ODnuODhOOCtuOCrSzjg57jgrXjgqoNCivjgqTjg47jgrXjgqss44Kz44Km44K4DQor44Kq44K344Ok44OeLOODqOOCt+ODkuOCtQ0KK+OCv+OCseOCpuODgSzjgr/jgqvjgrcNCivjgrXjgrXjgqrjgqss44OI44K344Om44KtDQor44Kz44Oi44OqLOODnuOCteOCouOCrQ0KK+OCv+OCuOODnizjg5Ljg63jgqLjgq0NCivjgqTjgrHjgqzjg58s44Kx44Oz44K4DQor44Ok44Oe44Kw44OBLOODnuOCteOCouOCrQ0KK+OCq+ODr+OCq+ODnyzjgrfjgrLjgq0NCivjgqTjgrvjgq0s44Ko44Kk44K544KxDQor44K/44Kx44OALOODkuODh+ODpuOCrQ0KK+OCv+OCq+ODpOOCuSzjg57jg4rjg5YNCivjgqvjg6Hjg4As44K/44Kx44OI44K3DQor44OV44K444OOLOODnuOCs+ODiA0KK+ODn+OCteOCrSzjg6Tjgrnjg47jg6oNCivjg4rjgqvjg6Djg6ks44OI44K344Ki44KtDQor44Kq44Ks44OvLOOCs+OCpuOCuA0KK+ODiuOCq+OCtuODryzjg5Ljg4fjg4jjgrcNCivjgrvjgq0s44Ok44K544Kv44OLDQor44Oo44K344Kr44OvLOOCv+OCr+ODpA0KK+OCv+OCrOODryzjgr/jgqvjgrcNCivjg5/jgr/jg4ss44OI44K344OS44KzDQor44K544Ko44K/LOOCouOCreODkuODiA0KK+OCpOODjOOCpCzjgrHjg7MNCivjgqrjgrXjg4As44K144OI44K3DQor44OV44Or44Kr44OvLOOCq+ODhOOCqg0KK+OCueOCuuOCrSzjg57jgrPjg4gNCivjgq3jgr/jg6Djg6ks44Oq44On44Km44K544KxDQor44Kz44Oe44OELOODkuODreOCv+OCqw0KK+OCouOCteODgCzjg6jjgqbjgqTjg4Hjg63jgqYNCivjgqvjg7Pjgrbjgq0s44Ok44K544Oe44K1DQor44Km44K544KkLOODqOOCt+ODleODnw0KK+ODleODq+ODpCzjg4jjgrfjg5LjgrMNCivjg6jjgrHjg6Djg6ks44OV44Of44Oo44K3DQor44Oo44Kz44KoLOODqOOCt+OCrQ0KK+OCouOCq+OCpOODryzjg4jjgrfjg5LjgrMNCivjg5Xjgq/jgrfjg54s44OS44Ot44Ok44K5DQor44Ok44K444OeLOODpOOCueOCtw0KK+ODj+ODqSzjg5/jg6bjgq0NCivjgq3jgrfjg4As44Om44Km44K+44KmDQor44Kv44OcLOODn+ODhOODqw0KK+OCq+OCv+OCruODqizjg6Tjgrnjg47jg6oNCivjgqTjg4HjgqQs44OV44Of44OkDQor44Oe44OE44KtLOODiOOCt+OCouOCrQ0KK+ODr+OCseODmSzjgrHjg7PjgrgNCivjg57jg6vjg6Tjg54s44OS44OH44KqDQor44OE44OQ44KtLOOCt+OCsuODqw0KK+OCteODjizjg5Ljg63jgrcNCivjg5/jg6Tjg6Ljg4gs44Oe44K144OI44K3DQor44OV44Kv44Ok44OeLOODnuOCteOCouOCrQ0KK+OCpuOCqOODoOODqSzjg57jgrXjg6sNCivjgq/jg6/jgqvjg4ks44Oq44KtDQor44Kv44OL44Oe44OELOODnuOCteODqw0KK+OCq+OCv+OCquOCqyzjg47jg6rjg6bjgq0NCivjg4jjg5/jgr8s44Kr44K644OO44OqDQor44OK44Kr44Og44OpLOOCouODhOODkuOCsw0KK+OCr+ODieOCpizjg6jjgrfjg4bjg6sNCivjgqrjg5bjg4Es44OG44Or44OS44KzDQor44Oo44K344Kr44OvLOODiOOCquODqw0KK+OCq+OCsuODpOODnizjg57jgrPjg4gNCivjg4jjg4As44Kx44Kk44Kk44OBDQor44K/44Kr44OP44OpLOOCteODiOOCtw0KK+ODnuODhOOCt+OCvyzjgrfjg7PjgrgNCivjgrPjg4DjgqTjg6ks44OS44OH44K3DQor44K344Oz44Kr44KkLOODouODiOOCqg0KK+ODhuODqeODgCzjg57jgrXjg5Ljg4gNCivjgqvjg6/jgq3jgr8s44OP44K444OhDQor44Of44Km44OpLOOCteODiuOCqA0KK+OCouODmSzjg5Ljg4jjgrcNCivjg4vjgrfjgqvjg68s44Om44Kt44OS44OtDQor44Ob44K944OALOOCpOODr+OCqg0KK+ODnuOCueODgCzjg6jjgrfjgqoNCivjgqvjgrbjg54s44K/44Kx44K3DQor44Ki44Op44Oe44KtLOOCq+OCuuOCqg0KK+ODr+OCv+ODjOOCrSzjg5/jg4Tjgq4NCivjgrXjgqvjg6Ljg4gs44OE44Oo44K3DQor44Ki44Oe44Ks44OfLOOCt+ODsw0KK+OCs+ODs+ODjizjgqTjgrXjgqoNCivjgqrjgq/jg4As44Oo44K344OO44OqDQor44Kq44OP44KvLOODn+ODhOOCqg0KK+ODiuOCq+ODoOODqSzjg6jjgrfjg5Xjg58NCivjg4rjgqvjg6Djg6ks44Om44Km44Kk44OBDQor44Km44K344Ok44OeLOODpuOCreOCqg0KK+ODpOOCt+OCrSzjgqLjgqTjgqTjg4Hjg63jgqYNCivjgq3jg47jgrss44K344Ol44Oz44Kk44OBDQor44Ov44Kr44Ok44OeLOOCs+OCpuOCpOODgQ0KK+OCpOODnuOCpCzjg57jgrXjg6bjgq0NCivjg57jgqjjg4As44Kt44Oo44K3DQor44Oe44OE44K344K/LOOCqOOCpOOCuA0KK+ODkuODqeOCsOODgSzjg5Ljg63jgrcNCivjg6/jg4As44Ki44OE44KzDQor44Ov44K/44OK44OZLOOCveOCpuOCpOODgQ0KK+ODnuODhOOCpCzjgrfjg7PjgqTjg4ENCivjg57jg4Tjg6Ljg4gs44Of44Kt44KqDQor44OK44Kr44Og44OpLOOCuOODpeODs+OCpOODgeODrQ0KK+OCv+OCreOCvyzjg6jjgrfjg4gNCivjg57jgrnjg4As44OI44Oi44KzDQor44Of44Ok44Km44OBLOODnuODpuODnw0KK+OCt+ODoOODqSzjgrXjgqvjgqgNCivjg57jg4TjgqQs44K/44Kt44KzDQor44OP44Op44OP44K/LOODiOODn+OCv+ODreOCpg0KK+ODkuOCteOCv+ODiyzjgqLjg4TjgrcNCivjgqvjgqzjg58s44Oe44K144OE44KwDQor44Oo44K344Og44OpLOODpuOCpuOCuA0KK+OCquOCquODhOOCqyzjgrHjgqTjgrQNCivjgr/jg4rjgqss44K344Oz44Kk44OBDQor44OS44Op44OOLOOCt+ODpeOCpg0KK+OCv+OCseOCueOCqCzjg4bjg4Tjg6QNCivjg4vjgrfjg44s44Oo44K344Om44KtDQor44Kq44Kq44OE44KrLOODoeOCsOODnw0KK+OCquODgCzjgrfjg7PjgrgNCivjgrfjg5/jgros44Om44K/44KrDQor44OP44Oe44Oi44OILOOCv+OCq+ODqOOCtw0KK+ODn+ODpOODnuOCqCzjg57jgrXjg4rjg6oNCivjg4rjgqzjgrfjg54s44Ko44Kk44K4DQor44Of44OE44OhLOOCs+OCpuOCuA0KK+OCq+OCtOOCv+ODiyzjg6jjgrfjgqvjgroNCivjg6jjgrPjg6Tjg54s44K/44Kr44OV44OfDQor44K144Kr44K/LOOCseODs+OCuA0KK+OCquOCpOOCr+ODnCzjgqLjgq3jg5Ljg4cNCivjgq/jg6njg6Ljg4Es44OS44Ot44OkDQor44Ki44Oz44K244KkLOODnuOCteODpuOCrQ0KK+ODleOCr+OCt+ODnizjg6rjgqgNCivjg4rjgqvjg6Djg6ks44OS44OI44OfDQor44Kk44OI44KkLOODpuODquOCsw0KK+ODm+OCt+ODjizjg5/jg4HjgrMNCivjgrPjgqTjg4cs44OS44Ot44OS44KzDQor44Kq44K244KtLOOCuOODpeODsw0KK+OCu+OCuOODoizjg57jgrXjg5/jg4ENCivjgrnjg4njgqYs44Oe44K144Of44OEDQor44Kr44K444Ov44OpLOODn+ODieODqg0KK+OCueOCuuOCrSzjgqvjg4Tjg5Ljg60NCivjg5vjgrfjg44s44OP44Or44KzDQor44OK44Kr44Og44OpLOODqOOCt+OCouOCrQ0KK+ODouODquOCvyzjgqLjgq3jgqvjgroNCivjg6Tjg57jgrbjgq0s44OI44K344OS44KzDQor44Kq44Kv44Ks44OvLOODnuOCteODkuOCsw0KK+ODiuOCrOODj+ODnizjg5Ljg63jg6bjgq0NCivjg6jjgrfjg6Djg6ks44Ki44Kt44Of44OEDQor44Oe44OE44OALOOCv+OCq+ODiOOCtw0KK+ODm+OCq+OCvuODjizjgqLjg4Tjg5LjgrUNCivjgqLjg5ks44OI44K344OE44KwDQor44OK44Ks44KkLOOCs+OCpuOCuA0KK+ODiOOCrOOCtyzjg4jjgrfjg5Ljg4gNCivjg6Tjgrbjgq0s44OG44Kk44K+44KmDQor44Ok44Oe44Km44OBLOODkuODh+OCrQ0KK+ODn+OCteOCrSzjg4rjgqrjgq0NCivjg6jjgrfjg4As44K344Oz44K4DQor44OK44Kr44Oi44OILOOCt+OCsuODqw0KK+OCt+ODjuODj+ODqSzjg4Tjg43jgqvjgroNCivjg4rjgqvjg4vjgrcs44Ki44Kt44OpDQor44Ok44K444OeLOOCreODqOOCtw0KK+ODiOODqOODleOCryzjg6bjgqbjgrgNCivjgr/jgqvjgrfjg54s44Kr44OE44K4DQor44OV44K344OL44K3LOOCreODn+OCqA0KK+ODoOOCq+OCpCzjg4bjg4Tjg6QNCivjg4vjgrfjg6Djg6ks44OS44Ot44Om44K3DQor44Kr44Ov44OQ44K/LOOCteODiOOCtw0KK+ODoOOCq+OCqOODgCzjgrXjg4jjg6sNCivjgrfjgrvjgq0s44Kk44OD44K344OzDQor44Kr44K/44Kq44KrLOODqOOCt+ODkuODhw0KK+ODiuOCpOODiOOCpizjg5Ljg63jgq0NCivjg5/jg4gs44Ok44K544OIDQor44Kq44Kq44OL44K3LOODiOOCt+ODreOCpg0KK+ODqOOCs+ODpOODnizjgr/jgqvjgrcNCivjg4rjgqvjg6Djg6ks44K/44OE44Ki44KtDQor44Kk44K244OvLOODkuOCteODjuODqg0KK+OCv+ODi+OCrOODryzjg4jjg5/jgqgNCivjgrnjgq7jgr8s44Om44KrDQor44Kq44K344K/LOODnuOCteODpuOCrQ0KK+OCt+ODnuODgCzjg4jjg6LjgrMNCivjg6Tjg57jg6Djg6ks44Kz44Km44Kk44OBDQor44OV44Kv44Kq44KrLOODnuOCteOCtw0KK+ODpOODiuODqizjg5Ljg63jgqLjgq0NCivjgrnjgrrjgq0s44K344Oz44K4DQor44K144Kr44KkLOOCteODiOODqw0KK+ODpOODnuODgCzjg6bjgq3jg5Ljg60NCivjg6Tjg57jgrPjgrcs44K344Ky44OrDQor44OO44Oi44OILOODiOOCt+ODpuOCrQ0KK+OCv+OCseOCt+OCvyzjg6Ljg4jjgq0NCivjg5/jg47jg4As44K344Ky44Om44KtDQor44Ki44K144KkLOOCt+ODmw0KK+ODoOODjeODpOOCuSzjg5Ljg4fjg6bjgq0NCivjgqvjg6/jg4vjgrcs44Oe44Kz44OIDQor44K144Kr44Kw44OBLOODpOOCueODkuOCtQ0KK+ODpOODnuOCtuOCrSzjg4jjgrfjg5LjgrMNCivjgqLjgrXjgqrjgqss44OS44OH44OO44OWDQor44Kt44OO44K344K/LOODn+OCreOCvuOCpg0KK+ODn+ODnizjgq3jg6jjg58NCivjg5Xjgq/jg6Ljg6rjgr8s44K344Ky44KqDQor44Kr44K444Ok44OeLOODqOOCt+OCsw0KK+ODpOODnuOCtuOCrSzjgrjjg6Xjg7PjgqTjg4ENCivjgrXjg4jjgqYs44OI44K344OkDQor44Kr44Ov44OZLOODn+ODhOODkuOCsw0KK+ODnuODq+ODpOODnizjg47jg5bjg6jjgrcNCivjgqrjgqzjg6njg40s44OO44OW44KzDQor44OJ44KkLOODpuOCpuOCvuOCpg0KK+OCv+ODiuOCqyzjg5/jg4TjgqoNCivjgqrjgq7jgrfjg54s44Kq44K144OgDQor44Kk44OO44Km44KoLOODkuODreODpuOCrQ0KK+ODleODq+ODpCzjg5Ljg63jg47jg6oNCivjg5Xjgq/jgqQs44OE44Oo44K3DQor44Oe44K544OALOOCv+OCq+ODkuODrQ0KK+ODm+ODs+ODgCzjg6bjg5/jgrMNCivjg4rjgqvjg4vjgrcs44OK44Kq44K/44KrDQor44Of44Ok44Oe44KoLOODiuOCquODkuOCsw0KK+OCquOCq+ODjizjg5Ljg4fjgqoNCivjg5Djg5As44Oo44Km44Kk44OB44Ot44KmDQor44OA44Kx44Ok44OeLOOCteOCr+OCsw0KK+ODpOODnuOCsOODgSzjg6TjgrnjgqoNCivjg4/jg6Tjgrcs44OI44K344Ot44KmDQor44OI44Of44K644KrLOODpOOCueODkuODrQ0KK+ODiuOCq+ODi+OCtyzjg4/jg6vjg5LjgrUNCivjgqLjg5ks44OP44K444OhDQor44Ki44Kq44Ok44KuLOODkuODreOCsw0KK+ODhuODqeODr+OCrSzjgq3jg6jjgrMNCivjgqvjgr/jgq7jg6os44OO44Oc44OrDQor44OK44Kr44Ks44OvLOODnuOCteOCqg0KK+OCs+ODkOODpOOCtyzjgqvjgrrjg5Ljg60NCivjgqbjgqjjg4As44OS44Ot44OfDQor44OV44K444Ov44OpLOOCouOCreODkuODrQ0KK+ODj+ODpOOCteOCqyzjgr/jg4Tjg58NCivjgq3jg6Djg6ks44OS44Ot44K3DQor44K044OI44KmLOODnuOCteODkuODrQ0KK+OCt+ODoOODqSzjgrHjgqTjgr7jgqYNCivjgrvjgq0s44OI44K344Kr44K6DQor44Ki44Kk44K244OvLOOCouOCreOCqg0KK+ODjuODoOODqSzjgrPjgrnjgrENCivjgqvjg7Pjg4As44K344Ol44Km44K4DQor44Km44Op44KkLOODnuOCueODnw0KK+ODouODiOODpOODnizjg6jjgrfjg4/jg6sNCivjgqvjg5/jg6Djg6ks44OG44OE44KqDQor44OS44Op44KkLOODnuOCteODpuOCrQ0KK+OCouODqeOCpCzjg4jjg6Ljg4rjg6oNCivjgrXjgqTjg4jjgqYs44Oo44Km44Kk44OBDQor44Oe44Kt44OP44OpLOODnuOCteOCtw0KK+OCquOCquODr+OCryzjgqrjgrXjg6ANCivjg6Ljg4Hjgrrjgq0s44Oe44K144OS44OtDQor44OP44Oz44Ks44KkLOODqOOCt+ODkuODrQ0KK+OCpOODjuOCpuOCqCzjgqvjgrrjg5Ljg4gNCivjg4rjgqzjgqTjgrcs44Kr44OE44OfDQor44OL44K344Oi44OILOOCouOCreODqQ0KK+ODhOODgeODpCzjgrfjg6fjgqbjgqTjg4ENCivjg57jg4Tjg6Ljg4gs44K/44Kr44K3DQor44Ob44OzLOOCt+ODp+OCpuOCtA0KK+OCpOODr+OCpCzjgr/jg4Tjg6QNCivjgq/jg5ws44Oe44K144KqDQor44OP44Kz44KkLOODnuOCteOCqg0KK+ODr+OCv+ODiuODmSzjg47jg6rjgqoNCivjgrnjgq7jgr8s44OI44K344Of44OEDQor44OK44Kr44Og44OpLOOCq+OCuuODkuODrQ0KK+OCq+ODqeOCteOCrSzjgrPjgqbjgqTjg4ENCivjg47jg6rjg57jg4Qs44Of44OE44OS44KzDQor44Kv44K544Oi44OILOOCv+OCq+ODqOOCtw0KK+ODi+OCt+ODoOODqSzjgrXjg4jjgrcNCivjgrPjgrnjgrIs44Oe44K144OKDQor44OV44Kv44Of44OELOODpOOCueODnw0KK+ODpOODnuOCsOODgSzjgrXjg5bjg63jgqYNCivjgqTjgrfjgrDjg60s44Kr44K644OfDQor44OI44Kv44OALOODiuOCquODpA0KK+OCouODquODiOODnyzjgrjjg4Tjg63jgqYNCivjg5Ljg6Tjg54s44K344Oz44Kk44OBDQor44OS44Ot44K7LOODnuOCteODiOOCtw0KK+ODi+OCt+ODgCzjg4jjgqrjg6sNCivjg4/jg4Pjg4jjg6os44Oo44K344OfDQor44OS44Op44OQ44Ok44K3LOOCseODs+OCpOODgQ0KK+ODj+ODqeOCt+ODnizjgqjjgqTjgrgNCivjg4/jg6ks44K/44Of44KqDQor44OP44Oe44OOLOOCq+OCuuODpuOCrQ0KK+ODj+ODnuODgCzjg57jgrXjg4jjgrcNCivjg4/jgrfjg6Ljg4gs44Kr44OE44OS44KzDQor44OP44Ok44K3LOODkuOCteOCuA0KK+ODkuOCsOODgSzjg57jgrXjg58NCivjg5Ljg6njg44s44Om44K/44KrDQor44Ob44Oz44OeLOODnuOCteODj+ODqw0KK+ODj+ODq+ODnuOCtyzjg6jjgrfjg57jgrUNCivjg4/jgrfjg6Ljg4gs44Ok44K544KqDQor44OS44OALOOCv+OCq+OCtw0KK+ODkuODqeOCueOCqyzjg4Hjg6fjgqbjgrgNCivjg4/jgq7jg6/jg6ks44Kz44Km44Kk44OBDQor44OP44Oe44OALOOCreODn+OCqA0KK+ODj+OCt+ODouODiCzjg5/jg4Hjg4/jg6sNCivjg5vjg7Pjg54s44Of44Oo44K3DQor44Ob44Kr44OqLOODpOOCueODkuODrQ0KK+ODj+ODqeODgCzjg5/jg4HjgrMNCivjg4/jg6Tjgrcs44Kx44Oz44K4DQor44Ob44Oq44OZLOOCq+OCuuOCqg0KK+ODj+OCt+ODouODiCzjg57jgrXjgqoNCivjg4/jgrvjgqzjg68s44K/44OA44Kr44K6DQor44OS44Ot44OZLOODn+OCreOCqg0KK+ODj+OCt+ODouODiCzjgqvjgrrjg58NCivjg5Ljg6njg44s44Oe44K144Om44KtDQor44OP44K344Oi44OILOOCseODsw0KK+ODkuOCuOOCq+OCvyzjg4Tjgq7jgqgNCivjgqrjgqrjg4zjg54s44Kk44K144KqDQor44OP44OW44OELOODkuODreODpuOCrQ0KK+ODkuODgOOCqyzjgqvjgrrjg5Ljg60NCivjg4/jgrfjg6Ljg4gs44Kt44Oz44OkDQor44OP44Oe44OOLOODiuOCquOCrQ0KK+ODkuOCt+ODjOODnizjg47jg5bjg6bjgq0NCivjg4/jg6ks44Oo44K344OfDQor44OP44OK44KtLOOCt+ODs+OCpOODgeODreOCpg0KK+ODj+ODqSzjgrHjg7PjgrgNCivjg4/jgqws44K/44Kx44KqDQor44OP44OK44OALOODnuOCteODjuODqg0KK+ODkuODqeODpOODiuOCrizjg47jg5bjgr/jgqsNCivjg5vjg6rjgqvjg68s44Of44OE44OO44OqDQor44Ob44Oq44Kr44OvLOOCseODsw0KK+ODj+OCt+ODouODiCzjgqLjgq3jgrMNCivjg4/jgr8s44OI44K344OS44KzDQor44OS44Op44KkLOOCuOODpeODsw0KK+ODj+ODqeOCsOODgSzjg6Tjgrnjg57jgrUNCivjg5Ljg6njgqos44Om44Km44Kk44OBDQor44OP44K344K644OhLOOCq+ODs+OCvw0KK+ODhOOCuCzjg57jg4rjg5YNCivjgrXjgq/jg6njgrbjg68s44OS44OH44OI44K3DQor44Ki44OZLOOCs+OCpuOCpOODgQ0KK+OCouODmSzjg57jgrXjg5Ljg60NCivjgqLjg5ks44OS44Ot44K/DQor44Ki44OZLOOCs+OCpuOCuA0KK+OCouODmSzjgqrjgrXjg6ANCivjgqLjg5ks44K/44Kr44KqDQor44Ki44Kr44KuLOODpOOCueODkuODiA0KK+OCquOCq+ODouODiCzjgrfjgrrjgqoNCivjgqjjg7Pjg4ks44Of44OB44KzDQor44Ki44Kr44Kk44K3LOODhOODjeODj+ODqw0KK+ODi+OCt+ODiizjg57jgrPjg4gNCivjgqLjgq3jg6Ljg4gs44OI44K344KqDQor44Ki44Kt44K644KtLOODnuOCteODiOOCtw0KK+ODkuODqeODkOODpOOCtyzjgrfjgrLjg57jgrUNCivjgqLjg6Hjg5/jg6Qs44Ki44Kt44OpDQor44Ki44Of44OOLOOCouOCreODkuODrQ0KK+OCouODiuODnyzjg57jgrXjgqvjgroNCivjgqLjg4rjgrbjg68s44Kr44Kq44OrDQor44Ki44Oz44OJ44KmLOODpuOCpuOCvuOCpg0KK+OCouODs+ODieOCpizjg5Ljg63jgq0NCivjgqLjgqrjg6Tjg54s44Oe44K144KtDQor44Ki44Kq44Ok44OeLOOCs+OCpuOCuA0KK+OCouOCquODpOODnizjgrfjg7PjgqTjg4ENCivjgqLjg6njgqQs44Kz44Km44Kk44OBDQor44Ki44Op44KkLOODnuOCteOCtw0KK+OCouODqeOCpCzjg57jgrPjg4gNCivjgqLjg6njgqQs44K/44Oe44KqDQor44Ki44Op44KkLOODnuOCteODpOOCuQ0KK+OCouODqeOCrSzjg5/jg6bjgq0NCivjgrnjgqzjg6/jg6ks44OI44Oi44OfDQor44Ki44K144OSLOOCt+OCsuODqw0KK+OCouOCteOCr+ODqSzjgr/jgqvjgrcNCivjgqLjgrXjg58s44OV44Of44OI44K3DQor44Ki44K144Og44OpLOOCq+ODhOODnw0KK+ODpOODnuOCt+ODiizjgqvjgrrjgqoNCivjgqLjgrXjg6os44Oe44K144KzDQor44Ki44K144K6LOODiOODouOCsw0KK+OCouODhOODnyzjg6jjgrfjg6bjgq0NCivjg5Djg7Ms44OS44Ot44Ok44K5DQor44OZ44OD44K344OnLOOCseOCpOOCpOODgQ0KK+ODgeODkCzjgqLjgrMNCivjg4Hjgqvjgq3jg6gs44OK44Kq44OS44K1DQor44OB44Og44OpLOOCv+ODn+OCqA0KK+ODieODkOOCtyzjgr/jgrHjgqoNCivjgqjjg5Djgrcs44K344On44Km44OY44KkDQor44Ko44OT44OP44OpLOODqOOCt+ODleODnw0KK+OCqOOCrOODnyzjg6bjgq3jgqoNCivjgqjjgrDjg4Es44Om44Kt44K/44KrDQor44Ko44Kw44OBLOOCteODiOOCtw0KK+OCqOOCuOODqizjgrnjgrDjg6sNCivjgqjjg7Pjg4ks44Oe44Om44OfDQor44Ko44Oz44OJLOOCv+ODhOOCqg0KK+OCqOODjuODouODiCzjg6jjgrfjg4TjgrANCivjg5Xjg4Hjg44s44OI44Kq44OrDQor44OV44K444KkLOOCquOCteODoA0KK+ODleOCuOOCpCzjg4bjg4QNCivjgqTjgrfjgqQs44K444Ol44OzDQor44Og44Op44Ok44OeLOODiOOCt+ODkuOCtQ0KK+ODleOCuOOCq+OCvyzjgr/jg4Tjg6QNCivjg5Xjgrjjgqvjg68s44Kr44K644OI44OiDQor44OV44K444Oe44OrLOODkuOCteODiA0KK+ODleOCuOODouODiCzjgq/jg4vjg5Ljg60NCivjg5Xjgrjjg6Ljg4gs44K/44OA44Oo44K3DQor44OV44K444Oi44OILOODiOOCt+OCq+OCug0KK+ODleOCuOODjizjg6Tjgrnjg4jjg6INCivjg5Xjgrjjgqos44OI44K344Ki44KtDQor44OV44K444K144KrLOOCteODiOOCtw0KK+ODleOCuOOCteODryzjg47jg6rjgqoNCivjg5XjgrjjgrXjg68s44K/44Kr44OS44OtDQor44OV44K444K/LOODnuOCteODpuOCrQ0KK+ODleOCuOOCvyzjg57jgrXjg6bjgq0NCivjg5Xjgrjjg6/jg6ks44OI44Kq44OrDQor44OV44K444Ov44OpLOODnuOCteODpuOCrQ0KK+ODleOCuOODr+ODqSzjgrfjg7Pjgrfjg6fjgqYNCivjg5Xjgqvjg4As44OV44Of44OS44OtDQor44OV44Kr44Ks44OvLOOCouODhOODkuODrQ0KK+ODleOCq+ODjizjgrHjgqQNCivjg5Xjgqvjg68s44K744Kk44K4DQor44OV44Kr44OkLOODiOOCt+OCq+OCug0KK+ODleOCq+OCtuODryzjg5Ljg4jjgrcNCivjg5Xjgq/jg4As44Kz44Km44K4DQor44OV44Kv44KkLOODkuODreOCtw0KK+ODleOCr+ODouODiCzjg5Ljg63jgr/jgqsNCivjg5Xjgq/jg6Ljg4gs44OS44Ot44Ki44KtDQor44OV44Kv44Oi44OILOODnuOCteODkuOCsw0KK+ODleOCr+ODouODiCzjgrnjgrnjg6ANCivjg5Xjgq/jgrfjg54s44OS44Ot44Om44KtDQor44OV44Kv44OI44OfLOODquODpeOCpuOCteOCrw0KK+ODleODiuOCrSzjgrfjg7PjgrgNCivjg5Xjg6vjgrXjg68s44K/44Ot44KmDQor44Ki44OT44KzLOODnuOCteODpuOCrQ0KK+ODleOCuyzjg47jg6rjgqoNCivjg5Xjgrvjgqzjg68s44Oo44K344OK44KqDQor44OV44K344OfLOODiuOCquODkuOCtQ0KK+OCruODnizjgqvjgrrjg6jjgrcNCivjgrTjg58s44Oe44Kz44OIDQor44K044OI44KmLOODjuODquOCsw0KK+OCtOODiOOCpizjg4jjg6LjgqLjgq0NCivjgrTjg4jjgqYs44OS44K144OO44OqDQor44Kw44Oz44K4LOODn+ODqA0KK+ODj+OCruODr+ODqSzjg6jjgrfjgrMNCivjg4/jgq7jg6/jg6ks44Kk44OB44Ot44KmDQor44OP44Kk44OOLOODkuOCteODqOOCtw0KK+ODj+OCq+ODnuODgCzjg47jg6rjg6bjgq0NCivjg4/jg57jg4As44Om44KtDQor44OP44Oe44OALOODpuOCreOCqg0KK+ODj+ODnuOCsOODgSzjgrHjg7PjgrgNCivjg4/jg6ks44K344Oz44Kk44OBDQor44OP44OpLOOCreODqOOCv+OCqw0KK+ODj+ODqSzjgq/jg4vjg5LjgrMNCivjg4/jg6ks44Oe44K144OK44OqDQor44OP44Op44OALOODnuOCueODnw0KK+ODj+ODqeODgCzjg5/jg4rjgrMNCivjg4/jg6njg4As44OO44Oq44KzDQor44OP44Op44KzLOOCv+OCq+ODkuODrQ0KK+ODj+ODq+ODiizjgr/jgqvjgqLjgq0NCivjg4/jgrvjgqzjg68s44K/44Kv44OkDQor44Kq44K344OeLOOCouOCreODqQ0KK+ODj+OCt+ODouODiCzjgr/jgqvjgrcNCivjg4/jgr/jg44s44Kr44K644OS44OtDQor44OP44K/44K244OvLOOCq+OCuuODn+ODgQ0KK+ODj+ODiCzjg57jgrXjgrcNCivjg4/jg4Tjg58s44Ki44K644K1DQor44OP44OD44OI44OqLOODiOODouODpuOCrQ0KK+ODj+ODpOOCq+ODryzjg4jjgrfjg5Ljg60NCivjg4/jg6Tjgqvjg68s44Ki44OE44Ot44KmDQor44OP44Ok44Kr44OvLOODiOOCt+ODkuOCsw0KK+ODj+ODpOODjizjgqLjg4TjgrcNCivjg4/jg6Tjgrss44K344Oz44K0DQor44OP44Ok44K3LOOCv+OCq+ODj+ODqw0KK+ODj+ODpOOCtyzjgqvjgqrjg6oNCivjg4/jg6Tjgrcs44Oo44K344OS44OtDQor44OP44Ok44K3LOOCseOCpOOCuA0KK+ODj+ODpOOCtyzjgrvjgqTjgr8NCivjgqTjg6Ljg4gs44Oe44K144Oo44K3DQor44OP44Ok44OELOODkuODreOCtw0KK+ODkuOCrOOCrSzjg5Ljg4fjgqLjgq0NCivjg5Ljgqzjgrcs44K544Of44KzDQor44OS44OOLOOCseODs+OCuA0KK+ODkuODqeODkOODpOOCtyzjg4rjgqrjg4gNCivjg5Ljg6njg44s44Kr44K644OS44OtDQor44OS44Op44OOLOOCseOCpOOCpOODgQ0KK+ODkuODqeOCquOCqyzjg57jg6bjg58NCivjg4/jg6njgrXjgq0s44K/44OE44OkDQor44OS44Op44OGLOODkuODh+OCqg0KK+ODkuODqeODpOODnizjg4jjgqrjg6sNCivjg5Ljg63jgqgs44Oo44K344Kr44K6DQor44OS44Ot44Kr44OvLOOCt+ODpeOCpuOCpOODgQ0KK+ODkuODreOCuyzjg5Ljg4fjgr/jgqsNCivjg5Ljg63jgrcs44OO44OW44KzDQor44OS44K144Og44ONLOOCseOCpOOCsw0KK+ODm+ODs+ODgCzjgrPjgqbjgqTjg4ENCivjg5vjg6rjgqvjg68s44OO44Oq44Ki44KtDQor44Ob44Oq44Kz44K3LOOCt+ODs+OCpOODgQ0KK+ODm+ODquOCs+OCtyzjg5Ljg63jg6bjgq0NCivjg5vjgrcs44Om44Kt44KqDQor44Ob44K344KzLOODnuOCteODkuODrQ0KK+ODkuODqeOCteODryzjgrXjg4Djg6bjgq0NCivjg5vjgr3jgqQs44K344Oz44Kk44OBDQor44OS44On44Km44OJ44KmLOOCv+OCq+OCtw0KK+ODkuODp+OCpuODieOCpizjg6bjgqbjgrnjgrENCivjgqTjg5ks44K344Oz44Kk44OBDQor44Kk44OB44Kr44OvLOODnuOCteODkuODrQ0KK+OCpOODgeOCq+ODryzjg57jgrXjg6sNCivjgqTjg4Hjgqvjg68s44Om44OfDQor44Kk44OB44OO44Of44OkLOODn+ODhOODqw0KK+OCpOODhyzjg5/jg4Tjg6bjgq0NCivjgqTjg4cs44Om44OqDQor44Kk44Ks44Op44K3LOODpOOCueODpuOCrQ0KK+OCpOOCrOODryzjgq3jg6jjgrcNCivjgqTjgrDjg4Es44K344Oz44OkDQor44Kk44Kk44OALOOCt+ODpeOCpuOCpOODgQ0KK+OCpOOCpOODgCzjg5Ljg63jgrcNCivjgqTjgqTjgrjjg54s44Kz44Km44Kk44OBDQor44Kk44Kk44OE44KrLOODjuODluOCqg0KK+OCpOOCpOOCuuOCqyzjgqvjgrrjg47jg6oNCivjgqTjgqTjgrrjgqss44Ki44Oq44K1DQor44Kk44Kr44Op44K3LOODiOODouOCrQ0KK+OCpOOCseODgCzjg4rjgqrjgq0NCivjgqTjgrHjg4As44Oe44K144OV44OfDQor44Kk44Kx44OALOOCuOODpeODsw0KK+OCpOOCseODgCzjg5Ljg4fjg4gNCivjgqTjgrHjg4rjgqws44OS44Ot44KqDQor44Of44OE44Oi44OILOODkuODreOCv+OCqw0KK+OCpOOCseODpOODnizjg5Ljg63jg6bjgq0NCivjgqTjgrHjgrYs44OS44OI44K3DQor44Kk44Kx44K244KtLOOCquOCteODoA0KK+OCpOOCr+OCvyzjg4bjg6vjg6bjgq0NCivjgqTjg57jgqQs44Oo44K344OO44OqDQor44Kk44Oe44Kk44K644OfLOODjuODquODkuODrQ0KK+OCpOODnuODoOODqSzjg5Ljg63jg6bjgq0NCivjgqTjg57jg6Djg6ks44Ko44Kk44OqDQor44Kk44Oe44OL44K3LOODiOODouODkuODrQ0KK+OCpOODiuOCrOOCrSzjgqvjgqrjg6oNCivjgqTjg4rjgqzjgq0s44Kr44OE44Om44KtDQor44Kk44OK44Ks44OvLOOCv+ODhOODpA0KK+OCpOODiuODmyzjg57jgrXjg6sNCivjgqTjg4rjg58s44OS44Ot44Of44OBDQor44Kk44OK44OE44KwLOODn+OCteOCqg0KK+OCpOODiuODqOOCtyzjgr/jg4TjgqoNCivjgqTjg44s44Kr44K644OIDQor44Kk44OO44Kq44KrLOOCt+ODs+ODpA0KK+OCpOODjuOCpuOCqCzjgr/jgqvjg6bjgq0NCivjgqTjg47jgqbjgqgs44K/44Kx44K3DQor44Kk44OO44Km44KoLOODkuODh+OCq+OCug0KK+OCpOODjuOCpuOCqCzjgr/jgqvjgrcNCivjgqTjg47jgqbjgqgs44K/44Kr44Ki44KtDQor44Kk44OO44Km44KoLOODpuOCpuOCpOODgQ0KK+OCpOODjuOCpuOCqCzjgq3jgq/jgqoNCivjgqTjg6rjgrXjg68s44Ki44Kt44OS44KzDQor44Kk44K7LOODpuOCreOCqg0KK+OCpOOCu+OCrSzjgqvjg4Tjg6QNCivjgqTjgrfjg4As44Ok44K544OO44OqDQor44Kk44K344OALOODhOODqOOCtw0KK+OCquOCq+ODgCzjg4/jg6vjg58NCivjgqTjgrfjgqQs44Ko44Kk44K4DQor44Ok44Oe44OALOODkuODreODluODnw0KK+OCueOCruODj+ODqSzjg5Ljg63jgr/jgqsNCivjgqTjgrfjgqvjg68s44Kr44OE44OpDQor44Kk44K344Kr44OvLOODnuOCteOCsw0KK+OCpOOCt+OCq+ODryzjg57jgrXjg58NCivjgqTjgrfjg57jg6ss44OO44Oq44KzDQor44Kk44K344Oi44OILOOCv+ODhOOCqg0KK+OCpOOCt+ODouODiCzjg57jgrXjg5Ljg60NCivjgqTjgrfjg6Ljg4gs44Kx44Oz44K4DQor44Kk44K344OOLOOCq+OCr+OCpOODgeODreOCpg0KK+OCpOOCt+ODhOOCqyzjgrXjg4jjgrcNCivjgqTjgrfjg6/jgr8s44K/44Kv44OkDQor44Kk44K344Ov44K/LOODpuOCpuOCuA0KK+ODkuODqeODkOODpOOCtyzjgqjjgqTjgrgNCivjgqTjgrfjgrbjgq0s44Oi44OI44OO44OqDQor44Kk44K344K644KrLOODiOOCquODqw0KK+OCpOOCveODgCzjgr/jgrHjgrcNCivjg4jjgqrjgqss44OI44K344Om44KtDQor44Kv44Oq44OP44OpLOOCseOCpOOCuA0KK+OCpOODiOOCpizjgrHjg7PjgqTjg4ENCivjgqTjg4jjgqYs44Oo44K344Ki44KtDQor44Kk44OI44KmLOOCqOODhOOCrQ0KK+OCpOODiOOCpizjg6jjgqbjgrgNCivjgqTjg4jjgqYs44K144OI44K3DQor44Kk44OB44Ok44OK44KuLOOCt+OCsuODkuODiA0KK+OCpOODiOOCpizjg4Tjg43jg5Ljg60NCivjg4rjgqzjgr8s44Kr44OE44OfDQor44Kk44OI44KmLOOCv+OCq+ODj+ODqw0KK+OCq+ODn+OCq+ODryzjgr/jg4Djg5/jg4QNCivjgqTjg6/jgqQs44OO44Oc44OrDQor44Kk44Ov44Kr44OvLOODhuODq+ODkuOCtQ0KK+OCpOODr+ODnyzjg4jjgrfjg5LjgrMNCivjgqTjg6/jg58s44K/44Kr44K3DQor44Kk44Ov44Oi44OILOODiOODouOCsw0KK+OCpOODr+ODiuOCrCzjg57jgrXjg5Ljg60NCivjgqTjg6/jgrXjgq0s44Kx44Kk44KzDQor44Kk44Ov44K144KtLOODleODn+OCq+OCug0KK+OCpOODr+OCuyzjg5Ljg63jg6bjgq0NCivjgqTjg6/jgrfjgr8s44Kq44K144OgDQor44Kk44Ov44K/LOOCs+OCpuOCu+OCpA0KK+OCpOODr+OCvyzjgrXjg4jjgrcNCivjgqTjg6/jgr/jg4Ys44OS44OH44KtDQor44Kk44K644OfLOODn+ODrw0KK+OCuOODs+ODjizjgr/jgqvjg6TjgrkNCivjgqvjgqzjg68s44OS44OH44KqDQor44Kr44Kk44OM44OeLOODjuODluOCqg0KK+OCq+OCuOOCvyzjgr/jgqvjg5/jg4ENCivjgqvjgrHjgqzjg68s44Kr44K644K/44KrDQor44Kr44Kt44OM44OeLOODiuOCquOCrQ0KK+OCq+ODnuODgCzjgr/jgqvjg5Ljg60NCivjgqvjg57jgr8s44OS44Ot44KtDQor44Kr44Oh44K/44OLLOOCr+ODi+OCouOCrQ0KK+OCq+ODnyzjg57jgrXjg47jg6oNCivjgqvjg5/jg6Djg6ks44Oe44K144K3DQor44Kr44Of44Ok44OeLOODnuOCteODpuOCrQ0KK+OCq+ODiuOCpuODgSzjgr/jgqvjg6bjgq0NCivjgr/jgrHjgqbjg4Es44Of44KtDQor44Kr44ON44KzLOODpOOCueODjuODlg0KK+OCq+ODjeOCsyzjg6Tjgrnjgq0NCivjgqvjg7Pjg4zjgq0s44K744Kk44Kk44OBDQor44Kr44OO44KmLOOCreODqOOCr+ODiw0KK+OCq+ODqeODj+OCtyzjg5Ljg63jgqLjgq0NCivjgqvjgrXjgqQs44Of44OO44OrDQor44OO44Og44OpLOOCqOODn+OCsw0KK+OCq+OCteOCpCzjg6Ljg6LjgrMNCivjgqvjgrss44K444Ol44Oz44Kk44OBDQor44Kr44K344Kv44OpLOODqOOCt+ODreOCpg0KK+OCq+OCt+ODoOODqSzjgrXjg4jjgrcNCivjgqvjgrfjg6/jgq4s44Kr44Oo44KzDQor44Kr44K/44OOLOODhuODq+ODkuOCtQ0KK+OCq+OCv+OCquOCqyzjg6TjgrnjgrcNCivjgqvjg4jjgqYs44Kq44K144OgDQor44Kr44OI44KmLOODiuOCquOCrQ0KK+OCq+ODiOOCpizjgrHjgqQNCivjgqvjg4jjgqYs44Oe44K144OP44OrDQor44Kr44OI44KmLOOCv+OCq+OCouOCrQ0KK+OCq+ODiOOCpizjgr/jgqvjgrcNCivjgqvjg4jjgqbjgqrjgqss44Om44Kr44OqDQor44Kr44OE44KkLOOCuA0KK+OCq+ODhOODnuOCvyzjg5/jg47jg6sNCivjgqvjg6/jg5Djgr8s44K/44Kr44KqDQor44Kr44Ov44OB44OkLOODiOOCt+OCouOCrQ0KK+OCq+ODr+ODgCzjg6rjgrvjgqQNCivjgqvjg6/jg4As44OS44Ot44Om44KtDQor44Kk44Oq44K144OvLOODleODn+OCqg0KK+OCq+ODr+OCpCzjg5/jg68NCivjgqvjg6/jgqvjg58s44Kx44Oz44K4DQor44Kr44Ov44Kr44OfLOODn+ODjuODqw0KK+OCq+ODr+ODnyzjgqLjgq3jg6kNCivjgqvjg6/jg6Djg6ks44Kx44Oz44K4DQor44Kk44K344KkLOODpOOCueOCrQ0KK+OCq+ODr+ODjizjg57jgrXjg5Ljg60NCivjgqvjg6/jg6Djg6ks44Kt44Oo44OS44OtDQor44Kr44Ov44K144KtLOODjuODluODpuOCrQ0KK+OCq+ODr+OCuyzjg4rjgqrjgq0NCivjgqvjg6/jgrss44OS44Ot44K3DQor44Kr44Ov44K7LOOCqOOCpOOCuA0KK+OCq+ODr+OCt+ODnizjgqjjgqTjgrMNCivjgqvjg6/jgr/jg4ss44Kv44OL44OS44KzDQor44Kx44Kk44OALOODnuOCteOCouOCrQ0KK+OCreODgCzjgrfjgrLjgrMNCivjgq3jg4Djg4Es44K344Ky44KqDQor44Kt44OP44OpLOODiOODouOCqA0KK+OCreOCr+OCq+ODryzjg6bjgqvjg6oNCivjgq3jg6Ljg4gs44Oe44K144OS44OHDQor44Kt44Og44OpLOOCseODs+OCpOODgQ0KK+OCq+ODnuOCvyzjg5Ljg63jg6bjgq0NCivjgqTjgq/jg58s44Oe44Om44OfDQor44Kt44OO44K344K/LOOCt+OCsuOCq+OCug0KK+OCreODjuOCpuODgSzjg57jgq0NCivjgq3jgrcs44K/44Kv44K3DQor44Kt44K344Oi44OILOOCq+OCuuODkuODrQ0KK+OCreOCpuODgSzjg4jjg6jjgqLjgq0NCivjgrPjg5As44OS44Ot44Om44KtDQor44Oi44OqLOODkuODh+OCrQ0KK+OCs+ODkOODpOOCq+ODryzjgr/jgrHjgrcNCivjgq/jg5zjgr8s44OS44OI44K3DQor44Kz44OQ44Ok44K3LOODhuODhOODpA0KK+OCquOCquOCq+ODryzjgrfjg7MNCivjgrPjg5Djg6Tjgrcs44OG44OE44K4DQor44Kz44OQ44Ok44K3LOOCreODqOODjuODqg0KK+OCs+ODnuOCvyzjgqjjgqTjgr/jg4QNCivjgrPjg5Djg6Tjgrcs44Kr44OE44OfDQor44Kz44OQ44Ok44K3LOOCq+ODhOODpuOCrQ0KK+OCs+ODkOODpOOCtyzjgqvjgrrjg5LjgrMNCivjgrPjg4Djg54s44Ok44K544K3DQor44Kz44Ko44K4LOODhOODiOODoA0KK+OCs+OCsOODgSzjgrHjg7PjgrgNCivjgrPjg4/jgr8s44OI44K344OS44KzDQor44Kz44OS44OpLOOCreODn+OCqg0KK+ODiuOCq+OCrOODryzjg6rjgqjjgrMNCivjgrPjg6Tjg54s44Ki44Kt44OpDQor44Kz44Kk44OHLOODqOOCt+ODreOCpg0KK+OCs+OCpOODhyzjgrjjg6Xjg7MNCivjgrPjgqTjgrEs44K344Ky44OrDQor44Kz44Kk44K644OfLOODouODiOOCsw0KK+OCs+OCuOODnizjgr/jgq/jg6QNCivjgrPjgrHjgrDjg4Es44Ok44K544Oe44K1DQor44Kz44Kv44OcLOODqOOCpuOCsw0KK+OCs+ODnuODhCzjgr/jgqvjgrMNCivjgrPjg57jg4Qs44Om44Of44KzDQor44Kz44Of44OkLOODqOOCpuOCuA0KK+OCs+ODs+ODiSzjgqvjgrrjg4jjgrcNCivjgrPjg7Pjg4ks44Ki44Kt44OpDQor44Kz44Oz44OJLOODn+OCqA0KK+OCs+ODs+ODiSzjgr/jgqvjg6bjgq0NCivjgrPjg7Pjg4ks44K/44OE44KqDQor44Kz44OL44K3LOOCv+OCq+OCsw0KK+OCs+OCteOCqyzjg57jgrXjg5Ljg60NCivjgrPjgrvjgq0s44OI44K344OS44KzDQor44Kz44K344Kk44K3LOOCv+ODhOODpA0KK+OCs+OCt+OCqizjg57jgrXjg4jjgrcNCivjgrPjgrnjgrIs44OI44K344Ki44KtDQor44Kz44Km44OkLOODnuOCteODjuODqg0KK+OCs+ODpOODnizjgqvjgrrjgrcNCivjgrPjg6Tjg54s44Kq44K144OgDQor44K/44Kx44OBLOOCt+ODpeOCpuOCvuOCpg0KK+OCr+ODnCzjg4jjgrfjg6QNCivjgq/jg5ws44OE44OI44OgDQor44Kv44OcLOODleODn+OCrQ0KK+OCr+OCrOOCpCzjgr/jgqvjg6bjgq0NCivjgqTjgqvjg6njgrcs44Kr44K644OS44OtDQor44Kv44Oe44K244OvLOODjuODluOCsw0KK+OCr+ODi+ODn+ODhCzjg5LjgrXjg6jjgrcNCivjgq/jg44s44K744Kk44K3DQor44Ob44K344OOLOODiOOCt+ODpA0KK+OCr+ODqeOCt+OCsizjgrPjgqbjgrgNCivjgq/jg6rjg4/jg6ks44Of44KrDQor44OK44Kr44Ks44OvLOOCt+ODp+OCpuOCpOODgQ0KK+ODpOODiuOCruODgCzjg6bjgq3jgqoNCivjgq/jg6rjg6Tjg54s44OS44OH44Ki44KtDQor44Kv44Ot44Kr44OvLOODkuODh+ODpuOCrQ0KK+OCr+OCteOCq+ODryzjgrHjgqTjgqTjg4ENCivjgq/jgrXjg4rjgq4s44Kq44K144OgDQor44Kv44K144OOLOODkuODh+ODkuOCsw0KK+OCr+OCuyzjgrXjg4jjg6sNCivjgq/jgrfjg4As44OB44KoDQor44Kv44K544OALOOCs+OCpuOCpOODgeODreOCpg0KK+OCr+OCueOCrSzjg4HjgqjjgrMNCivjgq/jgrnjg58s44Om44K/44KrDQor44Oe44Ko44OALOOCv+ODhOODpA0KK+ODnuOCqOODgCzjgqLjgq3jgqoNCivjg57jgqjjgqvjg68s44OS44Ot44KzDQor44Oe44Ko44Kr44OvLOOCv+OCq+OCqg0KK+ODnuOCrOODquODleODgSzjg6jjgrfjgqoNCivjg57jgq3jg44s44OB44OS44OtDQor44Oe44Kt44OOLOOCseODs+OCuA0KK+ODnuODiuODmSzjg57jgrXjg6gNCivjgqLjgqzjg4Tjg54s44K/44OE44Om44KtDQor44Oe44Or44KqLOOCt+OCsuODqw0KK+ODnuODq+OCvyzjg4rjgqrjgq0NCivjg57jg6vjg6Tjg54s44Om44KrDQor44Oe44Or44Ok44OeLOODnuOCs+ODiA0KK+ODnuODq+ODpOODnizjgr/jgqvjg5Ljg60NCivjg57jg6vjg6Tjg54s44Om44Km44K4DQor44Oe44K544OALOODhuODq+ODn+ODhA0KK+ODnuOCueODgCzjg4jjgrfjg6QNCivjgqvjg7Pjg5Djg6ks44Kk44K644OfDQor44Oe44OE44OQ44OpLOODkuODreOCtw0KK+ODiuOCq+ODoOODqSzjg4Hjg4jjgrsNCivjg57jg4Tjg4As44Kv44OL44OO44OqDQor44Oe44OE44OALOODnuOCteODpuOCrQ0KK+ODnuODhOOCpCzjg5Ljg63jg6bjgq0NCivjg57jg4TjgqQs44Oo44K344OO44OqDQor44Oe44OE44KkLOOCt+ODpeOCpuOCpOODgeODreOCpg0KK+ODnuODhOOCpCzjg4Hjg6jjgrMNCivjg57jg4Tjg6Ljg4gs44Ki44OE44K3DQor44Oe44OE44Oi44OILOOCseODs+OCuA0KK+ODnuODhOODouODiCzjg57jgrXjgqvjg4QNCivjg57jg4Tjg6Ljg4gs44K344Oz44OkDQor44Oe44OE44Kq44KrLOODn+ODmw0KK+ODiuODq+OCuyzjg6rjg6XjgqbjgrgNCivjg57jg4Tjg6Qs44OO44OW44OS44KzDQor44Oh44K244OvLOODkuODiOOCtw0KK+ODn+OCruOCvyzjg57jg6bjg58NCivjg5/jgqvjg58s44K344On44Km44K4DQor44Of44Og44OpLOOCq+OCuuODpA0KK+ODpOODiuOCrizjgrPjgqbjgqTjg4ENCivjg5/jg4rjgqvjgr8s44Oe44K144Om44KtDQor44Of44ONLOODnuOCteODpOOCuQ0KK+ODn+ODjSzjg6TjgrnjgqjjgqQNCivjg5/jg47jg68s44Kt44Oo44KoDQor44Of44K144OvLOODnuOCreOCsw0KK+ODn+OCteODryzjgr/jgqvjg5Ljg60NCivjg5/jgrfjg54s44OE44Oo44K3DQor44Of44K/44Og44OpLOODiOODouODkuODrQ0KK+ODn+ODiCzjg47jg5bjgqoNCivjg5/jg4Tjg5Ljg6ks44Oe44Oq44KzDQor44Of44OE44Kk44K3LOODnuOCteODleODnw0KK+ODn+ODhOODiuODqizjgr/jgqvjgqgNCivjg5/jgqbjg6ks44OS44Ot44Kr44K6DQor44Of44Ok44OZLOOCseODs+OCuA0KK+ODn+ODpOOCuOODnizjgrfjgrLjgq0NCivjg5/jg6Tjg6Ljg4gs44K344Ky44OrDQor44Of44Ok44Oi44OILOODiOODouODnw0KK+ODn+ODpOOCteOCqyzjg6bjgqbjgqTjg4Hjg60NCivjg5/jg6TjgrXjgqss44Kx44Oz44Kk44OB44OtDQor44Of44Ok44K344K/LOODkuODreOCqw0KK+ODn+ODpOOCt+OCvyzjgrjjg6Xjg7PjgrMNCivjg5/jg6Tjgrbjgq0s44OO44Oq44K344KyDQor44Of44Ok44K244OvLOOCq+ODhOODnw0KK+ODn+ODpOOCtuODryzjgr/jgqvjg6bjgq0NCivjg5/jgr7jg4/jgrcs44K/44Kx44OS44KzDQor44K144Kr44KkLOODkuODreOCtw0KK+ODn+OCuuODjizjg5Ljg63jgqLjgq0NCivjg5/jgrrjgqrjg4Es44K/44Kr44KqDQor44Of44K644K344OeLOOCseODs+OCuA0KK+ODn+OCuuOCvyzjgrHjg7PjgrgNCivjg6Ljg4Hjg4/jg6ks44Kv44OLDQor44Oi44OB44K644KtLOOCs+OCpuOCpOODgQ0KK+ODouODouOCuyzjgrfjg6XjgqbjgqTjg4ENCivjg6Ljg6os44OS44Ot44KtDQor44Oi44OqLOOCouOCreODkuODrQ0KK+ODouODqizjg4HjgqgNCivjg6Ljg6os44OP44K644KtDQor44Oi44OqLOODkuODh+OCrQ0KK+ODouODqizjg57jg6Ljg6sNCivjg6Ljg6rjgqvjg68s44Oe44K144OoDQor44Oi44Oq44Oi44OILOODpOOCueODkuODrQ0KK+ODouODquODouODiCzjgrPjgqbjgqTjg4ENCivjg6Ljg6rjg6Ljg4gs44Oe44OK44OWDQor44Oi44Oq44Og44OpLOOCt+ODs+OCpOODgQ0KK+ODouODquODjizjgqvjgrrjg58NCivjg6Ljg6rjgrXjg68s44Kv44OL44Kr44K6DQor44K344Oe44Kq44KrLOOCquOCteODoA0KK+ODouODquOCt+OCvyzjg6bjgqsNCivjg6Ljg6rjg6Tjg54s44OS44Ot44KzDQor44Oi44Ot44Kq44KrLOODn+ODhOODkuODrQ0KK+ODouODreODiOODnyzjg4rjgqrjgq0NCivjg6Ljg4jjgq0s44K/44OA44OI44K3DQor44Oi44OI44OOLOOCq+ODhOODpuOCrQ0KK+ODouODiOOCv+OCqyzjg5Ljg4fjgq0NCivjg6DjgrDjg6vjg54s44K/44Kv44K4DQor44Og44Kr44KkLOODqOOCt+ODnw0KK+OCouODs+ODieOCpizjgqTjg6/jgqoNCivjg4/jg40s44Kz44Km44KtDQor44Og44Op44Kr44OfLOODiOOCt+OCq+OCug0KK+ODoOODqeODnuODhCzjg4Tjg4jjg6ANCivjg6Djg6njgrfjgrIs44Kr44K644Om44KtDQor44K344Oi44Og44OpLOOCuOODpeODsw0KK+ODoOODqeOCvyzjg57jgrPjg4gNCivjg5/jg6fjgqbjgqws44K/44Kr44Om44KtDQor44OK44Ks44OP44OpLOODkuODreOCtw0KK+OCpOODiOOCpizjgqvjg4Tjg58NCivjg4rjgqzjgqQs44Kx44Kk44K/DQor44OK44Ks44KkLOODiOOCquODqw0KK+OCpOODr+ODiCzjg6jjgrfjgq0NCivjgr/jgrHjgrfjgrIs44OB44Ob44KzDQor44OK44Ks44KqLOOCouOCreODkuODrQ0KK+ODiuOCrOOCqizjg5/jg4Hjg47jg6oNCivjg4rjgqzjgqos44Kk44K144KoDQor44OV44Kv44OE44KrLOOCseOCpOOCsw0KK+ODiuOCrOOCteODryzjg5Ljg4fjgq0NCivjg4rjgqzjgrXjg68s44Ok44K544OS44OtDQor44OK44Ks44K7LOOCueOCueODoA0KK+ODiuOCrOOCt+ODnizjgqLjgq3jgqoNCivjg4rjgqzjgr/jg4ss44OV44Of44OS44KzDQor44OK44Ks44Ov44KtLOODkuODreODpOOCuQ0KK+ODiuOCrOODpOODnizjg57jgrXjg5Ljg4cNCivjg4rjgrTjg6Qs44Oi44Oq44KqDQor44OK44Kk44OI44KmLOODjuODluODpuOCrQ0KK+ODiuOCpOODiOOCpizjgrXjg4Djg5/jg4QNCivjg4rjgqvjg4As44K/44Kv44OkDQor44OK44Kr44Ks44KtLOODkuODreOCouOCrQ0KK+ODiuOCq+OCrOODryzjg4bjg6vjg47jg5YNCivjg4rjgqvjgqzjg68s44OI44K344OS44OtDQor44OK44Kr44Ks44OvLOODpOOCueODkuODrQ0KK+ODiuOCq+OCrOODryzjg57jgrXjgrcNCivjg4rjgqvjgrjjg54s44OI44Kq44OrDQor44Ob44Oq44Km44OBLOODiOODqOOCuA0KK+ODiuOCq+ODj+ODqSzjgqvjgrrjg5Ljg4gNCivjg4rjgqvjgrjjg54s44Kr44K644Om44KtDQor44OK44Kr44K444OeLOOCs+OCpuOCuA0KK+OCreOCr+OCvyzjg5/jgqsNCivjg4rjgqvjgrjjg54s44OI44K344Ki44KtDQor44OK44Kr44Oe44OrLOODiOOCt+OCsw0KK+ODiuOCq+ODoOODqSzjg6jjgrcNCivjg4rjgqvjg6Djg6ks44Oe44Kz44OIDQor44OK44Kr44Og44OpLOODgeOCqA0KK+ODiuOCq+ODoOODqSzjg47jg6rjgrMNCivjg4rjgqvjg6Djg6ks44K/44Kr44KqDQor44OK44Kr44Og44OpLOOCv+OCq+OCtw0KK+ODiuOCq+ODoOODqSzjg6rjg6XjgqbjgqTjg4ENCivjg4rjgqvjg6Djg6ks44K344Ky44Kr44K6DQor44OP44OD44OI44OqLOODnuODiuODlg0KK+ODiuOCq+ODoOODqSzjgrXjg5bjg63jgqYNCivjg4rjgqvjg6Djg6ks44OI44Kq44OrDQor44OK44Kr44Og44OpLOOCv+ODhOOCuA0KK+ODn+ODpOODouODiCzjgqTjgrrjg6sNCivjg4rjgqvjg4vjgrcs44OS44OH44OIDQor44OK44Kr44OL44K3LOOCueODiuOCqg0KK+ODiuOCq+ODjizjg6jjgrfjgqLjgq0NCivjg4rjgqvjg44s44OB44Om44KtDQor44OK44Kr44OOLOODpOOCueODkuODhw0KK+ODiuOCq+ODjizjgqrjgrXjg6ANCivjg4rjgqvjg44s44OE44Kr44K1DQor44OK44Kr44OOLOOCseOCpA0KK+ODiuOCq+ODjizjg6jjgrfjg47jg5YNCivjg4rjgqvjgqos44K/44Kr44OS44OtDQor44OK44Kr44Kq44KrLOODnuOCteOCq+ODhA0KK+ODiuOCq+OCt+ODnizjgrfjg7PjgqTjg4ENCivjg4rjgqvjgrfjg54s44Kr44K644OK44OqDQor44K344OK44OALOOCouOCreODqQ0KK+ODiuOCq+OCvyzjgqvjgrrjg4rjg6oNCivjg4rjgqvjg6Qs44K/44Kv44K4DQor44K144Kk44Kr44OvLOODkuODiOOCtw0KK+ODj+OCu+OCrOODryzjg5Ljg63jgrcNCivjg4rjgqvjgrbjg68s44Oe44OfDQor44OK44Oe44OELOODnuODnw0KK+ODiuODquOCvyzjgr/jgq/jgrgNCivjg4rjgrnjg44s44K/44Kr44Ki44KtDQor44ON44Oi44OILOODn+ODjeOCouOCrQ0KK+ODjeOCquOCpCzjg57jgrPjg4gNCivjg43jgros44OK44Kq44KtDQor44OL44Kk44Og44OpLOOCq+OCuuODnuOCtQ0KK+ODi+OCpOODpOODnizjg4HjgqvjgrINCivjg4vjgqTjg6Tjg54s44OS44Ot44K3DQor44OL44OO44Of44OkLOODkuODreOCtw0KK+ODi+ODjuODn+ODpCzjgqvjgrrjgqLjgq0NCivjg4vjgrcs44K/44Kr44KqDQor44OL44K344OALOODnuOCteODjuODqg0KK+ODi+OCt+ODgCzjg57jgrXjgrcNCivjg4vjgrfjg4njg44s44Oo44K344OO44OqDQor44OL44K344Kr44OvLOOCouOCreODqQ0KK+ODi+OCt+OCreODiSzjgqLjgq3jg5LjgrMNCivjg4vjgrfjg6Djg6ks44Ki44Kt44OpDQor44OL44K344OKLOODgOOCpOOCpOODhA0KK+ODi+OCt+OCqizjgrjjg6Xjg7PjgrgNCivjgqTjg47jgqbjgqgs44Kr44K644OI44K3DQor44OL44K344K244OvLOOCv+OCq+OCouOCrQ0KK+ODi+OCt+OCuuOCqyzjg4jjgrfjg6QNCivjg4vjg4Pjgr8s44OS44OI44OfDQor44OO44OALOODr+OCq+OCsw0KK+ODjuODoOODqSzjgrXjg4jjgrcNCivjg47jg47jg6Djg6ks44OS44Ot44Om44KtDQor44OO44Oq44OP44K3LOOCpOOCteOCqg0KK+ODkuODjizjgqvjgrrjg6bjgq0NCivjg47jgrbjgq0s44K344OzDQor44OO44K244OvLOODnuOCteODkuODrQ0KK+ODjOODnuODjizjg47jg5bjgrMNCivjgqrjg5Pjgrss44OS44Ot44KtDQor44Kq44Oc44Kr44K/LOOCseODs+OCueOCsQ0KK+OCquODgSzjgqLjgq3jg5Ljg60NCivjg4/jgrvjgqzjg68s44Of44OE44Ki44KtDQor44Oe44OK44OZLOODkuODreODpuOCrQ0KK+OCquODgCzjgqvjg4Tjg58NCivjgqrjg4As44K344Oz44K544KxDQor44Kq44OALOODkuODh+ODkuODrQ0KK+OCquODgCzjgrjjg6Xjg7PjgrMNCivjgqrjg4Djgq/jg6ks44Ku44OnDQor44Kq44Ks44K/LOODkuODiOOCtw0KK+OCquOCrOODryzjg4jjgrfjg5LjgrMNCivjgqLjg5ks44Oo44Km44K544KxDQor44Kq44Kw44OBLOOCs+OCpuOCrQ0KK+OCquOCsOODnizjg57jgrXjg6jjgrcNCivjgqrjgrDjg6ks44K/44Oe44KtDQor44Kq44Kw44OpLOODkuODh+OCqg0KK+ODoOOCteOCtyzjg5/jg4Tjg6sNCivjgqrjgrDjg6ks44Oe44K144OS44KzDQor44Kq44Kw44OqLOODnuOCs+ODiA0KK+OCquOCquODkCzjgrHjg7PjgrgNCivjgqrjgqrjg4/jgrcs44Oo44Km44Kk44OBDQor44Kq44Kq44KkLOODkuODreOCq+OCug0KK+OCquOCquOCpOOCqCzjgrHjg7PjgrgNCivjgqrjgqrjgq/jg5ws44OP44Or44K3DQor44Kq44Kq44Kv44OeLOOCpOOCteODoA0KK+OCquOCquOCr+ODnizjg5Ljg63jgrcNCivjgqrjg44s44Kr44OE44OfDQor44Kq44Kq44OM44OeLOOCq+ODqOOCsw0KK+OCv+OCq+OCuyzjg6jjgrfjg5Ljg4cNCivjgqrjgqrjgrXjg68s44OS44OH44KtDQor44Kq44Kq44K144OvLOODkuODreOCtw0KK+OCquOCquOCteODryzjgrHjg7PjgrgNCivjgqrjgqrjgrXjg68s44K944Km44K544KxDQor44Kq44K344OeLOODnuODquOCsw0KK+OCquOCt+ODnizjg5Ljg63jgqoNCivjgqrjgrfjg54s44Of44OE44OS44OtDQor44Kq44Kq44K/LOOCt+ODs+OCuA0KK+OCquOCquOCv+OCqyzjg5Ljg63jg6bjgq0NCivjgqrjgqrjgr/jgq0s44K/44Kx44K3DQor44Kq44Kq44K/44OLLOODqOOCpuOCuA0KK+OCquOCquODhOOCqyzjg5Ljg63jg47jg5YNCivjgqrjgqrjg4Tjgqss44OG44OE44KqDQor44Kq44Kq44OvLOODnuOCs+ODiA0KK+OCquOCquODr+ODgCzjg5Ljg63jg47jg6oNCivjgqrjgqrjg6Tjg54s44OS44OI44K3DQor44Kq44K+44ONLOODjuODluODpuOCrQ0KK+OCquOCqyzjg6TjgrnjgrcNCivjgqrjgqss44OS44Ot44Ki44KtDQor44Kq44KrLOOCq+OCuuOCt+OCsg0KK+OCquOCqyzjgr/jgqvjg47jg6oNCivjgqrjgqvjg4As44K/44Kr44Oo44K3DQor44Kq44Kr44OALOODkuODiOOCtw0KK+OCquOCq+ODgCzjg57jgrXjg6bjgq0NCivjgqrjgqvjg4As44OI44Oo44Ki44KtDQor44Kq44Kr44OJ44OhLOOCreODqOOCq+ODhA0KK+OCquOCq+ODouODiCzjg6TjgrnjgrcNCivjgqrjgqvjg6Ljg4gs44Kz44Km44K4DQor44Kq44Kr44Oi44OILOODkuODreOCtw0KK+OCquOCq+ODoOODqSzjg6rjgqsNCivjgqrjgqvjg44s44Ki44Kt44OpDQor44Kq44Kr44OO44OkLOODn+ODhOODqw0KK+OCquOCq+OCqizjg6TjgrnjgrgNCivjgqrjgqvjgrbjgq0s44OS44OH44KqDQor44Kq44KtLOODkuODreODpuOCrQ0KK+OCquOCreODouODiCzjg57jgrXjg5LjgrMNCivjgqrjgq/jg6Djg6ks44OI44Oi44KzDQor44Kq44Kv44Og44OpLOODpuOCreODkuOCsw0KK+OCquOCr+ODjizjgqLjgqQNCivjgqrjg57jgr8s44Ki44Kt44Oo44K3DQor44Kq44OL44KtLOODkuODreODpuOCrQ0KK+OCquODi+ODhOOCqyzjg57jgrXjgqLjgq0NCivjgqrjg47jg4fjg6ks44Ki44Kt44OpDQor44Kq44OO44K244OvLOODkuODh+ODhOOCsA0KK+OCquOCquODi+OCtyzjgrHjg7MNCivjgqrjgqrjg4vjgrcs44Kv44OL44Oo44K3DQor44Kq44Kq44OE44KrLOODiuOCquODkuOCtQ0KK+OCquOCteODgCzjg4jjg6Ljg47jg5YNCivjgqrjgrXjgq0s44K/44Kr44K3DQor44Kq44K144OK44OfLOOCt+OCuuODqOOCtw0KK+OCquODpOODnuODgCzjg6Tjgrnjg47jg6oNCivjgqrjgrbjg68s44Kz44Km44K444Ot44KmDQor44Kq44K244OvLOOCt+ODreOCpg0KK+OCquOCtuODryzjg6Tjgrnjg47jg6oNCivjgrXjgqjjgrDjgrUs44Ok44K544OO44OqDQor44K144Ko44KtLOODqOOCt+ODkuODrQ0KK+ODiuOCq+OCuOODnizjgr/jgrHjgrcNCivjgrXjgqTjgr8s44OB44Ko44KzDQor44Kq44Ks44OvLOODpOOCueODj+ODqw0KK+OCteOCpOODiOOCpizjgqvjgrrjg5LjgrUNCivjgrXjgqTjg4jjgqYs44K/44Kr44OS44KzDQor44K144Kk44OI44KmLOODqOOCt+ODjuODqg0KK+OCteOCq+OCpCzjg6rjg6fjgqbjgrgNCivjgrXjgqvjgqQs44OS44OH44OO44OqDQor44K144Kr44KkLOOCseOCpOOCuA0KK+OCteOCq+OCpCzjgr/jgrHjgrcNCivjgrXjgqvjgqQs44K/44KvDQor44K144Kr44KkLOOCt+ODp+OCpuOCtA0KK+OCteOCq+OCpOODqizjg5Ljg63jg6bjgq0NCivjgrXjgqvjgq0s44Kt44On44Km44KzDQor44K144Kr44OeLOODnuOCteODjuODqg0KK+OCteOCq+ODnuOCrSzjg57jgrXjg4jjg6INCivjgrXjgqvjg6Ljg4gs44Oe44K144OI44K3DQor44K144Kr44Oi44OILOOCteODiOODqw0KK+OCteOCq+ODouODiCzjgrfjg6XjgqbjgqTjg4ENCivjgrXjgqvjgr8s44K/44Kr44K3DQor44K144Kr44Km44KoLOOCv+OCq+ODpuOCrQ0KK+OCteOCq+OCuuODoSzjgr/jgq/jg58NCivjg4rjgqvjg44s44OI44Oi44OS44OtDQor44K144Kv44OeLOODqOOCt+ODkuOCsw0KK+OCteODs+ODnOODs+ODnuODhCzjgqvjgrrjg5Ljg60NCivjgrXjg44s44K/44Kx44K3DQor44K144OOLOODiOOCt+ODleODnw0KK+OCteOCteOCrOODryzjg6bjgr/jgqsNCivjgrXjgrXjgq0s44Om44Oq44KzDQor44K144K144KtLOODpOOCueODpuOCrQ0KK+OCteOCteOCrSzjgqvjgrrjg6jjgrcNCivjgrXjgrXjgq0s44Kz44Km44K4DQor44K144K144K244OvLOODiOOCt+ODpuOCrQ0KK+OCteODiOOCpizjg6TjgrnjgrcNCivjgrXjg4jjgqYs44Kr44OE44OS44OIDQor44K144OI44KmLOODqOOCt+OCv+OCqw0KK+OCteODiOOCpizjgr/jgqvjg6bjgq0NCivjgrXjg4jjgqYs44OO44OW44K/44KrDQor44K144OI44KmLOODpuOCpuOCueOCsQ0KK+OCteODiOOCpizjg5Ljg4fjg6bjgq0NCivjgrXjg4jjgqYs44K144OI44K3DQor44K144OI44KmLOOCquOCteODoA0KK+OCteODiOOCpizjg57jg6bjg58NCivjgrXjg4jjgqYs44OO44OW44KqDQor44K144OI44KmLOODkuODh+ODjuODqg0KK+OCteODhOODnizjg5/jg6/jgrMNCivjgrXjg6/jgrDjg4Es44OK44Kq44OIDQor44K144Ov44KkLOODn+ODgeODkuODrQ0KK+OCteODr+ODqeOCrizjg6TjgrnjgqoNCivjgrXjg6/jgr/jg4ss44Kv44OL44KqDQor44K744Kk44K/LOOCouODhOOCtw0KK+OCu+OCrSzjg57jgrXjg57jg60NCivjgrvjgq0s44OO44OW44OS44OtDQor44K744KtLOODjuODquODpOOCuQ0KK+OCu+OCreODj+ODqSzjgqLjgq3jg6kNCivjgrvjgq3jg40s44Om44Km44K544KxDQor44K744Kt44ONLOODkuODreODpuOCrQ0KK+OCt+ODqeOCpOOCtyzjg57jgrXjg5Ljg60NCivjgrvjg7Pjgqws44OO44OW44KqDQor44K744OOLOODjuODquODpuOCrQ0KK+OCu+OCt+ODoizjgrfjg6XjgqbjgqTjg4ENCivjgrvjg4gs44K/44OE44KqDQor44K744OI44Kw44OBLOOCv+ODhOODpA0KK+ODhuODq+ODpCzjg6bjgqbjgqTjg4ENCivjgrfjgqTjg5As44Oq44KrDQor44K344OQ44OOLOODiOODouODpuOCrQ0KK+OCt+ODkOOCteOCrSzjgqTjgq/jgrMNCivjgrfjg5Djgr8s44OG44OE44Ot44KmDQor44K344OW44K144OvLOODnuOCteODleODnw0KK+OCt+ODluOCteODryzjg6jjgrfjg5Ljg60NCivjgrfjg4Es44OA44Kk44Ko44KkDQor44K344OB44K/LOOCv+OCq+ODpuOCrQ0KK+OCt+OCsuODkuOCtSzjg4jjgqrjg6sNCivjgrfjgrLjgrXjg68s44Of44Om44KtDQor44Og44Op44K/LOODquODpeOCpuOCv+ODreOCpg0KK+OCt+ODnuOCuizjgr/jgqvjg4TjgrANCivjgrfjg57jgros44K/44OE44K3DQor44Kt44K344OALOOCv+OCq+OCtw0KK+OCt+ODn+OCuizjg5/jg4HjgqoNCivjgrfjg5/jgros44Ko44Kk44Kk44OBDQor44K344Of44K6LOODkuODreOCtw0KK+OCt+ODn+OCuizjg4/jg6Tjg4jjgrcNCivjgrfjg5/jgros44Kv44Oz44K4DQor44K344Of44K6LOOCseOCpOOCsw0KK+OCt+ODn+OCuizjg5Ljg63jgrfjgrINCivjg5/jg6TjgrPjgrcs44OI44K344OS44OtDQor44K344Oi44Of44OBLOODnuODquOCsw0KK+ODiuOCq+ODkOODpOOCtyzjgqvjgqrjg6sNCivjgrfjg6LjgqrjgrUs44K/44Kx44K3DQor44K344Oi44OE44K4LOOCt+ODs+OCuA0KK+OCt+ODiuODgCzjg4HjgqvjgrcNCivjgrfjg4rjgqzjg68s44OO44OW44KqDQor44K344Oz44Oi44OILOODnuOCteODkuODrQ0KK+OCt+ODjizjg6jjgrfjg47jg6oNCivjgrfjg47jg4As44Oq44Ol44Km44K/44Ot44KmDQor44K344OO44OALOODj+ODhOOCqA0KK+OCt+ODjuOCtuOCrSzjgrfjg6fjgqbjgrgNCivjgrfjgqrjgr/jg4ss44OG44OE44OS44OtDQor44K344Kq44OkLOODhOOCq+OCtQ0KK+OCt+ODqeODmSzjgqTjg4PjgrvjgqQNCivjgrfjg6njgqzjgq0s44Oo44K344OP44OrDQor44K344Op44KkLOOCq+OCuuODkuOCsw0KK+OCt+ODqeOCpOOCtyzjgqjjg4Tjg5Ljg60NCivjgrfjg6njgqTjgrcs44OS44Ot44K3DQor44K344Op44KtLOOCq+OCuuODkuODrQ0KK+OCt+OCuuOCvyzjgrHjgqTjgrMNCivjgrfjg6fjgqbjgrgs44Kx44Kk44K/DQor44K944OO44OALOODn+ODieODqg0KK+OCueODieOCpizjg6Ljg4jjg6bjgq0NCivjgrnjgqjjg4As44K744Kk44KzDQor44K544Ko44OE44KwLOOCv+OCq+OCtw0KK+OCueOCrOOCvyzjg6TjgrnjgrnjgrENCivjgrnjgqzjg6/jg6ks44Oo44K344Ki44KtDQor44K544Ku44OOLOODqOOCt+ODjuODlg0KK+OCueOCruOCteOCrSzjg6bjgqbjgrgNCivjgrnjgq7jgrfjg54s44Oe44K144OrDQor44OK44Ks44KkLOODnuODquOCsw0KK+OCueOCruODpOODnizjg4jjgrfjg5Ljg60NCivjgrnjg58s44Kr44OE44OS44OtDQor44K544Of44K/44OLLOOCt+ODs+OCpOODgQ0KK+OCueOCteOCrSzjg5Ljg63jg6bjgq0NCivjgrnjgrnjgq0s44Kz44Km44Kk44OBDQor44K544Ok44OeLOODiOODouODjuODqg0KK+OCueOCuuOCrSzjg5/jg4HjgqoNCivjgrnjgrrjgq0s44Kx44Oz44Kk44OBDQor44K544K644KtLOOCs+OCpuOCpOODgQ0KK+OCv+OCuOODnizjgrXjg4jjgq0NCivjgrnjgrrjgq0s44K/44Kv44OkDQor44K544K644KtLOODpOOCueOCsw0KK+OCueOCuuOCrSzjg6bjgr/jgqsNCivjgrnjgrrjgq0s44Ki44Kt44KzDQor44K544K644KtLOOCouODhOOCtw0KK+OCueOCuuOCrSzjg5Ljg4fjg4jjg6INCivjgrnjgrrjgq0s44OS44OH44OI44K3DQor44K544K644KtLOODkuODh+ODiOOCtw0KK+OCueOCuuOCrSzjg5Ljg63jgq0NCivjgrfjg6Xjgq/jg6Qs44K444Ol44Oz44Kk44OBDQor44K/44OB44OQ44OKLOOCq+ODqA0KK+OCv+ODgeODpOODnizjgrPjgqbjgqTjg4ENCivjgr/jg4njgrPjg60s44Oe44K144Ki44KtDQor44K/44Ks44OvLOODnuOCteODkuODiA0KK+OCv+OCsOODgSzjg6Ljg4jjgqvjgroNCivjgr/jgrDjg4Es44OK44Kq44Om44KtDQor44K/44Kw44OBLOODjuODluODkuOCtQ0KK+OCv+OCpCzjg47jg6rjgqoNCivjgr/jgrjjg54s44K144OB44KoDQor44K/44Kr44OALOOCteODiOODqw0KK+OCv+OCq+ODgCzjgrfjgrLjg47jg5YNCivjgr/jgqvjgq4s44K544K544OgDQor44Of44Ok44Oi44OILOOCv+OCq+OCtw0KK+OCv+OCq+ODj+ODnizjg4bjg4TjgqoNCivjgr/jgqvjg4/jgrcs44Ok44K544Ki44KtDQor44K/44Kr44OP44K3LOODnuOCteODjuODqg0KK+OCv+OCq+ODj+OCtyzjg4Tjg4jjg6ANCivjgr/jgqvjg4/jgrcs44Oe44K144Om44KtDQor44K/44Kr44OP44K3LOODnuOCs+ODiA0KK+OCv+OCq+ODj+OCtyzjgrHjg7Pjg6rjg6XjgqYNCivjgr/jgqvjg4/jgrcs44OI44K344OS44K1DQor44K/44Kr44OP44K3LOODpOOCueOCtw0KK+OCv+OCq+ODj+OCtyzjg5Ljg63jg6bjgq0NCivjgr/jgqvjg4/jgrcs44Ok44K544OO44OqDQor44K/44Kr44OP44K3LOODkuODreOCtw0KK+OCv+OCq+ODj+OCtyzjg6Ljg4jjg6TjgrkNCivjgr/jgqvjg4/jgrcs44Om44Kt44KoDQor44K/44Kr44OP44K3LOODpOOCueOCsw0KK+OCv+OCq+ODj+OCtyzjgr/jgqvjgrcNCivjgr/jgqvjg4/jgrcs44Oo44K344OS44K1DQor44K/44Kr44OP44K3LOODiOOCt+ODpuOCrQ0KK+OCv+OCq+ODj+OCtyzjgrXjg4jjgrMNCivjgr/jgqvjg4/jgrcs44OS44OH44KtDQor44K/44Kr44OP44K3LOOCpOODgeODreOCpg0KK+OCv+OCq+ODj+OCtyzjg47jg5bjgqLjgq0NCivjgr/jgqvjg4/jgrcs44Of44OE44OrDQor44K/44Kr44OK44K3LOOCt+ODsw0KK+OCv+OCq+ODjizjgqvjg4Tjg47jg6oNCivjgr/jgqvjgqrjgqss44OG44OE44OkDQor44K/44Kr44K7LOOCt+OCsuOCrQ0KK+OCv+OCq+OCt+ODiizjgrPjgqbjgrvjgqQNCivjgr/jgqvjgrfjg4os44OA44Kk44K144KvDQor44K/44Kr44K/LOODkuODreOCouOCrQ0KK+OCv+OCq+ODpOODnizjg5Ljg63jg6bjgq0NCivjgr/jgqvjg6Tjg4rjgq4s44K444Ol44OzDQor44K/44Kx44OQ44Ok44K3LOOCq+ODhOODnw0KK+ODn+OCq+ODnyzjgrHjgqTjgrnjgrENCivjgr/jgrHjgqQs44Oe44Kz44OIDQor44K/44Kx44KtLOODnuOCt+ODpeOCpg0KK+OCv+OCseODouODqizjg47jg5bjg5LjgrMNCivjgr/jgrHjg6Djg6ks44Kq44K144OgDQor44K/44Kx44Km44OBLOOCseODsw0KK+OCv+OCseODpCzjgrfjg6fjgqbjgqTjg4ENCivjgr/jgrHjg6Tjg54s44OI44K344Ki44KtDQor44K/44Kt44Kw44OBLOODiOOCt+OCq+OCug0KK+OCv+OCreOCt+OCvyzjg4jjgrfjg6bjgq0NCivjgr/jgq3jgrbjg68s44Ki44Kt44OpDQor44K/44Oe44KkLOOCt+OCsuODqw0KK+OCv+ODn+ODpCzjgqLjgq3jgrMNCivjgr/jg6Djg6ks44Oo44Km44K544KxDQor44K/44OK44OZLOODkuODreODpuOCrQ0KK+OCv+ODiuODj+OCtyzjg6jjgrfjg6bjgq0NCivjgr/jg4rjgqss44K344Ky44OIDQor44K/44OK44KrLOODkuODh+ODjuODqg0KK+OCv+ODiuOCqyzjg5Ljg63jg6bjgq0NCivjgr/jg4rjgqss44OS44Ot44KtDQor44K/44OK44KrLOODpuOCreOCsw0KK+OCv+ODiuOCqyzjg5Ljg63jgrMNCivjgr/jg4rjgqss44K444Ol44Oz44Kk44OBDQor44K/44OK44KrLOOCt+ODsw0KK+OCv+ODiuOCqyzjg57jgrXjgqvjgroNCivjgr/jg4rjgqss44K444Ol44Oz44KzDQor44Kz44OA44OeLOODqOOCt+ODkuOCsw0KK+OCv+ODiuOCqyzjgqLjgrXjgqoNCivjgr/jg4rjgqss44OO44Oq44Ki44KtDQor44K/44OK44KrLOOCteODiOOCtw0KK+OCv+ODiuOCqyzjgqrjgrXjg6ANCivjgr/jg4rjg6Djg6ks44K144OI44K3DQor44K/44Oz44OQLOOCq+OCuuODiuODqg0KK+OCv+ODi+OCsOODgSzjgrHjgqTjgrgNCivjgr/jg4vjgrDjg4Es44K444Ol44Oz44KzDQor44K/44OL44KkLOOCsuODsw0KK+OCv+ODi+ODoOODqSzjg4jjg6Ljg47jg6oNCivjgr/jg4vjg6/jgq0s44Kq44K144OgDQor44K/44Or44KkLOOCt+ODp+OCpuOCuA0KK+OCv+OCteOCrSzjgqvjgrrjg6bjgq0NCivjgr/jgrfjg60s44Oe44K144OkDQor44K/44OG44Kk44K3LOODiuOCquODpA0KK+OCv+OCpuODgSzjg6rjg6fjgqbjgrMNCivjgr/jgqbjg6ks44OS44Ot44Ki44KtDQor44OG44Op44OALOODqOOCt+OCqg0KK+OCteODiOOCpizjgqLjgq3jg6kNCivjg4bjg6njg4vjgrcs44Oi44Oq44Om44KtDQor44OG44Op44K344K/LOODkuODreOCtw0KK+ODhuODq+OCreODiizjgqLjgq3jg6gNCivjg4jjg5ks44Ko44Oq44KzDQor44OI44Km44K044KmLOOCv+OCq+ODj+ODqw0KK+ODiOOCsOODgSzjgqjjgqTjgrgNCivjg4jjgrgs44Kr44OE44OO44OqDQor44OI44Of44OK44KsLOODnuOCteODiA0KK+ODiOODn+ODiuOCrCzjg6Tjgrnjg57jgrUNCivjg4jjg5/jgqrjgqss44OK44Kq44KtDQor44OI44Of44K/LOOCueOCsOODqw0KK+ODiOODn+ODpOODnizjg5Ljg63jgr/jgqsNCivjg4jjg43jgqzjg68s44Ki44Kt44OpDQor44OI44K344OK44OqLOOCuOODpeODs+OCsw0KK+ODiOODqOODgCzjgrPjgqbjgrgNCivjg4jjg6jjg4As44Kr44OE44OkDQor44OI44Oo44OALOODnuOCteODkuOCsw0KK+OCquOCquODouODqizjg6jjgqbjgqTjg4Hjg63jgqYNCivjg4jjgrrjgqss44OS44OH44KqDQor44Ok44Oe44Kr44OvLOODquODpeOCpuODmOOCpA0KK+ODhOODnOOCpCzjgrjjg6Xjg7PjgrMNCivjg4Tjg4Hjg4/jgrcs44Kr44OE44OfDQor44OE44OB44OOLOODn+ODjuODqw0KK+ODhOODgeODpCzjg6jjgrfjg5Ljg60NCivjg57jgq0s44OS44OH44OO44OqDQor44OE44OALOODn+ODhOODjuODlg0KK+ODhOOCrOODryzjgrHjg7PjgrgNCivjg4Tjgrgs44K144OI44K3DQor44OE44K4LOODiOODqOOCq+OCug0KK+ODhOOCuCzjg5Ljg63jgrcNCivjg4Tjgqvjg4As44OS44Ot44Om44KtDQor44OE44Kr44Oi44OILOOCreODqOOCtw0KK+ODhOODoOODqSzjgr/jgqvjg6bjgq0NCivjg4Tjg4rjgrfjg54s44Om44Kt44KqDQor44Kq44Kv44Ok44OeLOODnuODouODqw0KK+ODhOODjuODgCzjgrXjg4Djg4/jg6sNCivjg4Tjg47jgqzjgqQs44Ok44K544OO44OqDQor44OE44K344OeLOODjuODnOODqw0KK+ODhOODhOODnyzjg5Ljg63jgrcNCivjg4Tjgrrjgq0s44Kr44OE44OfDQor44OE44Or44Kq44KrLOODkuODh+ODiA0KK+OCpuODgeODgCzjg5LjgrXjgrcNCivjgqbjg4Hjg4As44Oe44K144OrDQor44Km44OB44OALOODnuOCteODleODnw0KK+OCpuODgeODgCzjg6TjgrnjgrcNCivjgqbjg4Hjg44s44Ki44Kt44OS44KzDQor44Km44OB44OO44Kv44OpLOODoeOCsOODnw0KK+OCpuODgeODpOODnizjg5/jg4Hjg4/jg6sNCivjgqbjg4Hjg6Tjg54s44K/44Kr44OO44OqDQor44Km44OB44Ok44OeLOODjuODluODkuODrQ0KK+OCpuODgCzjgrHjgqTjgrgNCivjgqbjgqjjg4As44K344Ky44OrDQor44Km44Ko44OALOODiuODhOOCsw0KK+OCpuOCqOODgCzjg6jjgrfjg4gNCivjgqbjgqjjg4As44OI44K344OP44OrDQor44Km44Ko44OP44OpLOOCt+OCsuODqw0KK+OCpuOCqOODj+ODqSzjg57jgrXjgqoNCivjgqbjgqjjg4/jg6ks44K344Oz44K4DQor44Km44Ko44K444OeLOODkuODreODpuOCrQ0KK+OCpuOCqOOCrSzjgqjjg6rjgrMNCivjgqbjgqjjg6Djg6ks44Kv44OL44OS44OtDQor44Km44Ko44OOLOOCv+OCq+ODkuODhw0KK+OCpuOCqOODjizjg4jjgq/jg5Ljg60NCivjgqbjgqjjg44s44Om44Km44K4DQor44Km44Ko44Ok44OeLOODqOOCt+OCsw0KK+OCpuOCpCzjgrHjgqTjgrnjgrENCivjgqbjg6Hjg4As44K344On44Km44Kk44OBDQor44Km44Oh44OALOOCouODhOOCtw0KK+OCpuODoeODgCzjg4Hjg4/jg6sNCivjgqbjg6Hjg4As44Kx44Oz44K4DQor44Km44Oh44OP44OpLOODnuOCs+ODiA0KK+OCpuODoeOCq+ODryzjg57jgrXjg47jg6oNCivjgqbjg6vjgrfjg4Djg4ss44Oe44K144Om44KtDQor44Kk44OO44Km44KoLOOCv+OCseOCtw0KK+OCpuOCteODnyzjg6bjgqbjgrMNCivjgqbjgrfjg57jg6ss44K/44OE44OS44OtDQor44Km44K344Ok44OeLOOCq+ODhOODpuOCrQ0KK+OCpuOCueOCpCzjgrPjgqbjg5jjgqQNCivjgqbjgrnjgqQs44Kq44K144OgDQor44Km44OE44OfLOOCuOODreOCpg0KK+OCteOCteOCrOODryzjgqvjgrrjgqLjgq0NCivjgr3jg6Hjg6Qs44Kx44Oz44K4DQor44Ov44OALOODnuOCteOCqg0KK+ODr+ODgCzjg57jgrXjg6jjgrcNCivjg6/jg4As44Oo44K344Ki44KtDQor44K/44OO44Km44KoLOODpuOCpuOCpOODgQ0KK+ODr+OCt+ODgCzjg5Ljg4fjgqLjgq0NCivjg6/jgr/jgqQs44Of44OB44Ki44KtDQor44Ov44K/44OK44OZLOODnuOCteODpuOCrQ0KK+ODr+OCv+ODiuODmSzjgqLjgq3jgqoNCivjg6/jgr/jg4rjg5ks44Kr44K644OS44K1DQor44Ov44K/44OK44OZLOOCteODiOOCtw0KK+ODr+OCv+ODiuODmSzjg5Ljg4fjgq0NCivjg6/jgr/jg4rjg5ks44OI44Kq44OrDQor44Ov44K/44OK44OZLOODkuODreODpuOCrQ0KK+ODr+OCv+ODiuODmSzjgqLjgq3jg6kNCivjg6Tjgq4s44Kr44K644KqDQor44Ok44K0LOODnuOCteODkuOCsw0KK+ODpOODj+OCrizjg4rjgqrjg5Xjg58NCivjg6Tjgq/jgrcs44Kq44K144OgDQor44Ok44Oe44OALOODrOOCpOOCrQ0KK+ODpOODnuODgCzjgr/jgqvjgrcNCivjg6Tjg57jg4As44OI44Of44Ok44K5DQor44Ok44Oe44OALOODiOOCt+ODkuODrQ0KK+ODpOODnuODgCzjg4jjgrfjgqoNCivjg6Tjg57jg4As44Oo44K344KqDQor44Ok44Oe44OALOODpuOCqw0KK+ODpOODnuOCrOOCvyzjgr/jgrHjgrcNCivjg6Tjg57jgq7jgrcs44Oe44K144KoDQor44OP44OqLOODnuOCteODpuOCrQ0KK+ODpOODnuOCsOODgSzjgqvjg4TjgrcNCivjg6Tjg57jgrDjg4Es44OI44Oi44Kr44K6DQor44Ok44Oe44Kw44OBLOODiOODouODnw0KK+OCouOCquODhOOCqyzjg6jjgrfjgrXjg4gNCivjg6Tjg57jgrDjg4Es44Oe44K144OO44OqDQor44Ok44Oe44K4LOODn+ODgeOCqg0KK+ODpOODnuODouODiCzjg5Ljg63jg47jg6oNCivjg6Tjg57jg6Ljg4gs44K444Ol44Oz44Kk44OBDQor44Ok44Oe44Oi44OILOOCseODs+OCuOODreOCpg0KK+ODpOODnuODouODiCzjgqvjgrrjg5Ljg60NCivjg6Tjg57jg6Ljg4gs44OS44Ot44OV44OfDQor44Ok44Oe44Oi44OILOOCv+OCq+ODpuOCrQ0KK+ODpOODnuODouODiCzjgqLjgq3jg5Ljg4cNCivjg6Tjg57jg6Ljg4gs44OI44K344OO44OqDQor44Ok44Oe44Oi44OILOOCqOOCpOOCuA0KK+ODpOODnuODouODiCzjg57jg4rjg5YNCivjg6Tjg57jg6Ljg4gs44OI44K344Om44KtDQor44Ok44Oe44Oi44OILOODiuOCquODleODnw0KK+ODpOODnuODoOODqSzjg4jjg6LjgqvjgroNCivjg6Tjg57jg4rjgqss44Om44K/44KrDQor44Ok44Oe44K344OKLOOCt+ODs+OCuA0KK+ODpOODnuOCt+OCvyzjg6bjgq3jg5Ljg60NCivjg6Tjg57jgrfjgr8s44Oq44Oz44K444OlDQor44Ok44Oe44K344K/LOOCseODs+OCuA0KK+ODpOODnuOCt+OCvyzjg5Ljg4jjgrcNCivjg6Tjg57jg4Ys44Kx44KkDQor44Ok44Oe44Km44OBLOOCouOCreODqQ0KK+ODpOODnuOCtuOCrSzjg6bjgq3jg5LjgrUNCivjg6Tjg57jgrbjgq0s44OO44Oc44OrDQor44Ok44Oe44K244KtLOODkuODiOOCtw0KK+ODpOODiuOCrizjgqvjgrrjgqoNCivjg6Tjg4rjgq7jg4As44Kz44Km44Kk44OB44Ot44KmDQor44Ok44OK44Ku44OALOODn+ODmw0KK+ODpOODiuOCpCzjgrXjg4jjgrcNCivjg6Tjg4rjgqss44K/44OA44K3DQor44Ok44K544OALOODnuOCteODnw0KK+ODpOOCueODgCzjgqTjg6/jgqoNCivjg6Tjgrnjg4As44K744Kt44KzDQor44Ok44K544Oi44OILOOCq+OCuuODpA0KK+ODpOODhOOCqyzjg4rjgqrjgq0NCivjg6Tjgrbjg68s44Of44K644ObDQor44Oo44OALOODhuODhOODpA0KK+ODqOODieOCrOODryzjg47jg6rjgqoNCivjg6jjg4As44OS44Ot44OO44OqDQor44Oo44Kz44OP44K/LOODkuODreODpA0KK+ODqOOCs+ODpOODnizjgqTjg6/jgqoNCivjg6jjgrPjg6Tjg54s44K344Ky44OrDQor44Oo44Oi44OqLOOCouOCreODqOOCtw0KK+ODqOODjeODouODgSzjg6jjgrfjg4TjgrANCivjg6jjg63jgrrjg6Qs44OK44Kq44OS44K1DQor44Oo44K344OALOOCv+ODhOOCvuOCpg0KK+ODqOOCt+ODgCzjgr/jgqvjgrcNCivjg6jjgrfjg4As44OO44Oq44KqDQor44OV44K444K144KtLOOCs+OCpuOCpOODgQ0KK+ODqOOCt+ODgCzjg5Ljg4jjgrcNCivjg6jjgrfjg4As44OG44OE44KqDQor44Oo44K344Oe44OELOODgeODj+ODqw0KK+ODqOOCt+ODouODiCzjg6bjgqbjgrnjgrENCivjg6jjgrfjg6Djg6ks44Kr44OE44OkDQor44Kk44K344OQ44K3LOOCv+ODgOOCtw0KK+ODqOOCt+ODjizjgr/jg4Tjg6QNCivjgr/jgqvjg44s44Kx44Kk44K0DQor44Om44OP44K3LOOCt+ODp+OCpuOCsw0KK+OCqOODgOODkuODrSzjg5/jg4njg6oNCivjg4/jg6njg4As44Oe44K144Om44KtDQor44OP44Ok44K144KrLOODquODpeOCpuOCu+OCpA0KK+OCpOODiuOCrOOCrSzjg57jgrXjgq0NCivjgqTjg47jgqbjgqgs44K144OI44K3DQor44Kk44K344OP44OpLOOCv+OCq+OCtw0KK+OCs+OCuOODnizjg6Tjgrnjg5LjgrUNCivjgrPjgrnjgq4s44K344Oz44K0DQor44Kv44Oc44K/LOODiuODq+ODnw0KK+ODouODqizjgr/jgqvjgrcNCivjg4rjgqvjg5Djg6Tjgrcs44OK44Kq44OS44K1DQor44ON44Oi44OILOOCv+OCq+OCtw0KK+ODi+ODjuODn+ODpCzjgrHjgqQNCivjgqrjgqzjg68s44Oh44Kw44OfDQor44Kq44Kq44K/44OLLOODnuOCteOCsw0KK+OCu+OCrSzjgq/jg58NCivjgrfjg5bjgr/jg4ss44OE44OI44OgDQor44K344Oz44OILOODkuODreODpuOCrQ0KK+OCveODluOCqCzjg5Ljg4jjgrcNCivjgr/jgqvjg4/jgrcs44K/44Kx44K3DQor44K/44Kr44K7LOODnuODn+OCsw0KK+ODiOODqOODgCzjg5Ljg63jg5Ljg4cNCivjgqbjgqjjg4As44K344Oz44K/44Ot44KmDQor44Ok44Oe44Oi44OILOODpOOCueODpuOCrQ0KK+ODpOODnuOCuuODnyzjg5Ljg63jgrcNCivjg6jjgrfjg4As44Kz44Km44K4DQor44Ki44K144Kr44KkLOODiuODq+ODiOOCtw0KK+ODleOCr+OCvyzjgqvjgrrjg58NCivjgqvjg6/jgrXjgq0s44Kr44K644KqDQor44OS44Ot44K7LOODqOOCt+OCq+OCug0KK+OCq+OCteODj+ODqSzjgrvjg4TjgrMNCivjgqrjgrbjg68s44Kx44Kk44Kk44OBDQor44Kr44OI44KmLOOCseOCpOOCpOODgQ0KK+ODiuOCq+ODoOODqSzjgrvjgqTjgqjjgqQNCivjgr/jgrDjg4Es44OS44Ot44OgDQor44Ki44OA44OBLOODquODp+OCpuOCu+OCpA0KK+OCouOCq+OCtyzjg6jjgrfjg5LjgrUNCivjgqLjgq3jg6Tjg54s44Ko44OfDQor44Ki44Kq44KtLOOCt+ODp+OCpuOCuA0KK+OCouODqeOCrSzjg4jjg6Ljgr/jgrENCivjgqLjgrXjg5Is44OV44Of44OO44OqDQor44Ki44K144OOLOODiOOCt+ODkuOCsw0KK+OCouODr+ODjizjgqrjgrXjg6ANCivjgqLjg6/jg44s44K444Ol44Oz44K444Ot44KmDQor44OJ44Km44K4LOODiuOCquODpuOCrQ0KK+ODieOCpuOCvuODjizjgrvjgqTjg6QNCivjg5Xjg4Hjgqvjg58s44Kr44OE44Ot44KmDQor44OV44K444KkLOOCseODs+OCuA0KK+ODleOCuOOCpCzjgrPjgqbjgqTjg4ENCivjg5XjgrjjgqTjgqgs44OO44OW44OkDQor44Kz44OvLOOCt+ODpeODs+OCpOODgQ0KK+ODleOCuOOCt+ODrSzjg57jgrXjgqoNCivjg5Xjgrjjgr8s44Oo44Km44KzDQor44OV44K444K/LOODkuODreODpuOCrQ0KK+ODleOCuOODr+ODqSzjgrPjgqbjgrgNCivjg5Xjgq/jg4As44OK44Kq44Om44KtDQor44OV44Kv44OALOOCv+ODhOOCqg0KK+ODleOCr+ODgCzjgrHjg7MNCivjgrXjgqTjg4jjgqYs44Kq44K144OfDQor44OV44Kv44Ok44OeLOOCuOODpeODs+OCpOODgQ0KK+ODleODq+ODj+OCvyzjgrPjgqbjgrgNCivjgrTjg4jjgqYs44OS44Ot44Kr44K6DQor44OP44Og44OtLOOCquOCteODoA0KK+ODj+OCuyzjgr/jgq/jg5LjgrUNCivjg4/jgrfjg6Ljg4gs44Oe44K144OS44OtDQor44OP44K344Oi44OILOOCuOODpeODs+OCpOODgQ0KK+ODj+ODg+ODiOODqizjgrjjg6Xjg7MNCivjg4/jg6Tjgrcs44Kr44OE44OS44KzDQor44OP44Ok44K3LOODiOOCt+OCouOCrQ0KK+ODj+ODpOOCtyzjg57jgrXjgqvjgroNCivjg4/jg6Tjgrcs44K344Ky44Of44OEDQor44OP44Ok44K3LOODoeOCpA0KK+ODj+ODpOOCtyzjg57jgrXjg4TjgrANCivjg5Ljg5Ms44OS44Ot44Om44KtDQor44OS44Kw44OeLOOCv+OCr+ODpA0KK+ODkuODqeOCpCzjg5Ljg63jgr/jgqsNCivjg5Ljg6njgqvjg68s44OE44ON44OI44OiDQor44OS44Op44OOLOOCq+OCuuODkuOCsw0KK+ODkuODreODiuOCqyzjg5/jg47jg6sNCivjg5vjg6rjgrDjg4Es44OO44OW44Ki44KtDQor44Ob44K144KrLOOCteODiOOCtw0KK+ODm+OCveODpCzjgrvjgqTjgrgNCivjgqTjg4HjgqQs44K344Ky44Om44KtDQor44Kk44OB44Kr44OvLOODouODiOODkuODrQ0KK+OCpOOCsOODnizjgqjjgqTjgqTjg4ENCivjgqTjgqTjgrXjgqss44Oe44Om44OfDQor44Kk44Kr44OvLOOCpOODr+OCqg0KK+OCpOOCseODgCzjgqLjg6bjgrMNCivjgqTjgrHjg4As44Kk44Kv44K444Ot44KmDQor44Kk44Kx44Ks44OfLOODnuODouODqw0KK+OCpOODjuOCpuOCqCzjgrfjg63jgqYNCivjgqTjg47jgqbjgqgs44OS44K144Ki44KtDQor44Kz44OQ44Ok44K3LOODiOOCr+OCuOODreOCpg0KK+OCpOOCt+ODkOOCtyzjg6Tjgrnjg5LjgrUNCivjgqTjgrfjg4As44Oo44K344Om44KtDQor44Kk44K344Oe44OrLOODn+ODrw0KK+OCpOOCt+OCuuOCqyzjg4jjgrfjg6bjgq0NCivjgqTjgr0s44OS44OH44Ki44KtDQor44Kk44OI44KmLOODkuODh+OCouOCrQ0KK+OCpOODiOOCpizjgqLjgq3jg5LjgrMNCivjgqTjg4jjgqYs44Oe44K144OS44OtDQor44Kk44OI44KmLOOCteODr+OCsw0KK+OCpOODiOOCpizjg4bjg4Tjg6QNCivjgqTjg4jjgqYs44Oo44K344Of44ONDQor44Kk44OI44KmLOOCseODs+OCpOODgQ0KK+OCpOODr+OCvyzjgrXjg4jjgrcNCivjgqvjg6rjg6Qs44K744Kk44Kk44OBDQor44Ks44K144KtLOOCt+OCsuOCqg0KK+OCq+OCrCzjgqvjgrrjg5LjgrUNCivjgqvjgrLjg6Tjg54s44OE44Oo44K3DQor44Kr44K444OK44OfLOOCv+OCq+ODpuOCrQ0KK+OCq+ODn+ODkuODqeOCvyzjg5Ljg63jg6bjgq0NCivjgqvjg4rjg6Ljg6os44K/44OE44OkDQor44Kr44ON44KzLOODhuODq+OCqg0KK+OCq+ODjeOCsyzjg6jjgrfjgqoNCivjgqvjg4vjg68s44Ki44Kt44OpDQor44Kr44K144OeLOODjuODquODnuOCtQ0KK+OCq+OCuyzjg5Ljg63jg6bjgq0NCivjgqvjgrfjg6Djg6ks44OV44Of44OI44K3DQor44Kr44K/44Kq44KrLOOCseODs+OCuA0KK+OCq+ODiOOCpizjgrjjg6Xjg7PjgrMNCivjgqvjg4jjgqYs44Kx44Kk44K4DQor44Kr44OI44KmLOOCs+OCpuOCvw0KK+OCq+ODiOOCpizjgqLjgq3jg5LjgrMNCivjgqvjg4jjgqYs44OO44OW44OS44OHDQor44Kr44Ov44OBLOOCseOCpOOCsw0KK+OCq+ODr+OCsOODgSzjg4HjgrXjg4gNCivjgqvjg6/jg44s44Of44OE44KqDQor44Kr44Ov44K344OeLOODhuODhOOCuA0KK+OCreOCr+ODgSzjg4jjg6LjgqLjgq0NCivjgq3jg6Ljg4gs44Oo44K344OS44OtDQor44Kt44Og44OpLOOCq+ODhOODpA0KK+OCreODjuOCt+OCvyzjg4bjg4QNCivjgq3jgrfjg4/jg6ks44OE44Kw44Ki44KtDQor44Kt44K344Kr44OvLOODkuODh+ODpuOCrQ0KK+OCreOCvyzjg6rjgqgNCivjgq3jgr/jgqzjg68s44Of44OB44OP44OrDQor44Kt44K/44OOLOODquOCqOOCsw0KK+OCreOCv+ODpOODnizjgrvjgqTjgrMNCivjgq3jg6jjgqrjgqss44Oe44K144OoDQor44Kt44Oo44K7LOODhOOCq+OCtQ0KK+OCs+ODkOODqizjgr/jg4bjgq0NCivjgrPjg5Djg6Tjgrcs44Kr44Kq44OrDQor44Kz44OQ44Ok44K3LOOCs+OCpuOCv+ODreOCpg0KK+OCs+ODnOODqizjgr/jg57jg58NCivjgrPjgqTjg68s44K/44Kx44K3DQor44Kz44K444OeLOODleODn+ODqA0KK+ODj+OCt+ODouODiCzjgrPjgqbjgqTjg4ENCivjgrPjg5/jg6Tjg54s44K/44Kr44OS44OtDQor44Kz44Oz44OJLOODiOODouODpuOCrQ0KK+OCs+ODs+ODiSzjg47jg6rjgrMNCivjgrPjg7Pjg4ks44Oo44Km44K544KxDQor44Kz44K344Kr44OvLOOCouOCreODleODnw0KK+OCs+ODhuOCrOODryzjgrHjg7PjgrgNCivjgrPjg68s44OO44OW44Om44KtDQor44Kv44Oc44K/LOOCt+ODp+OCpuOCpOODgQ0KK+OCr+ODnOOCvyzjg5Ljg63jg6bjgq0NCivjgq/jg4njgqYs44OP44Ok44OIDQor44Kv44KsLOODqOOCt+ODkuODrQ0KK+ODouODqizjg6bjgq3jg5Ljg60NCivjgq/jg4vjgr/jgrEs44OP44K444OhDQor44Kv44Op44Kr44KxLOODkuODreOCq+OCug0KK+OCr+ODqizjg57jgrXjg5Ljg4gNCivjgq/jgrXjg5Xjgqss44K344OO44OWDQor44Kv44Ov44OQ44OpLOODiOOCquODqw0KK+ODnuODgeODgCzjg5Ljg63jg6bjgq0NCivjg57jg6vjg6Tjg54s44Om44KtDQor44K/44Kx44Km44OBLOOCouOCreOCqg0KK+ODnuODhOODkCzjgqLjg4TjgrcNCivjg57jg4Tjg5Djg6ks44K/44Kx44OtDQor44Oe44OE44OA44Kk44OpLOODnuOCrQ0KK+ODnuODhOODouODiCzjg6jjg6rjgrMNCivjg57jg4Tjg6Ljg4gs44Oo44K344Ki44KtDQor44Oe44OE44OK44KsLOODn+ODmw0KK+ODnuODhOOCqizjg57jgrXjg6QNCivjg57jg4Tjgqos44OO44Oq44Om44KtDQor44Oe44OE44KqLOOCt+ODs+ODpA0KK+ODn+OCr+ODiyzjg6TjgrnjgrcNCivjg5/jg4rjgqzjg68s44Ov44K/44OrDQor44Of44OK44Ks44OvLOOCt+OCsuODqw0KK+ODn+ODjuODhizjg4jjg6LjgqLjgq0NCivjg5/jgr8s44Oo44K344Kv44OLDQor44Of44OI44OhLOOCv+OCseOCtw0KK+ODn+ODhOODpOODnizjgrfjg6XjgqbjgqTjg4ENCivjg5/jg6Tjg4Es44K/44Kr44OV44OfDQor44Of44Ok44K4LOOCs+OCpuOCuA0KK+ODn+ODpOOCuOODnizjg5/jg4TjgqoNCivjg5/jg6Tjgr8s44Kx44Kk44KzDQor44Of44Ok44K244KtLOOCreODqOOCouOCrQ0KK+ODn+ODpOOCtuOCrSzjg57jgrPjg4gNCivjg5/jg6Tjgrbjg4gs44Oo44K344OK44OqDQor44Of44Ok44K244OvLOODkuODreOCrQ0KK+ODn+OCvuOCsOODgSzjg6Ljg4jjgrMNCivjg5/jgrrjgqQs44Oe44K144Oo44K3DQor44Oi44Oz44OOLOOCqOOCpOOCuA0KK+ODouODqizjg5/jg4Tjg5Ljg60NCivjg6Ljg6os44OO44Oq44K544OfDQor44Oi44Oq44K/LOOCr+ODq+ODnw0KK+ODouODquOCvyzjg4jjgrfjgqLjgq0NCivjg6Ljg6rjg6Tjg54s44Oe44Oq44KzDQor44Og44Op44Kr44OfLOODquODpeOCpuOCpOODgQ0KK+ODoOODqeOCq+ODnyzjgrPjgqbjgqTjg4Hjg63jgqYNCivjg6Djg6njgqvjg58s44Of44OO44OrDQor44Og44Op44Oe44OELOOCt+ODs+OCueOCsQ0KK+ODoOODreOCvuODjizjg5Ljg63jgqLjgq0NCivjg4rjgqzjg5bjg4Es44OS44Ot44K3DQor44OK44Ks44OOLOODn+ODhOODqw0KK+ODiuOCrOOCuyzjg6rjg6XjgqbjgqTjg4ENCivjg4rjgqzjgr/jg4ss44K344ObDQor44OK44K044OkLOODkuODreOCouOCrQ0KK+ODiuOCq+OCrOODryzjgqvjgqrjg6oNCivjg4rjgqvjg5/jg4Es44K344On44KmDQor44OK44Kr44Og44OpLOOCuOODpeODs+OCpOODgeODrQ0KK+ODiuOCq+ODoOODqSzjg57jgrXjg47jg6oNCivjg4rjgqvjg44s44OS44Ot44K3DQor44OK44Kr44K344OeLOODkuODreODjuODqg0KK+ODi+OCt+ODgCzjgrjjg6Xjg7MNCivjg4vjgrfjg4/jg6ks44Ki44OE44OIDQor44OL44K344Og44OpLOOCt+ODs+ODpA0KK+ODi+OCt+OCquOCqyzjgqvjgrrjg5LjgrMNCivjg47jgrDjg4Es44OO44Oc44OrDQor44OO44K7LOODnuOCteOCuuODnw0KK+OCquODkOOCvyzjg6bjgqbjgrgNCivjgqrjg4HjgqLjgqQs44Kk44Kv44KzDQor44Kq44OB44Ki44KkLOODkuODh+ODkuOCsw0KK+OCquOCrOODryzjgr/jgqvjgrcNCivjgqrjgqzjg68s44Oe44K144OIDQor44Kq44Ks44OvLOOCv+ODn+ODpA0KK+OCquOCrOODryzjgqvjg4Tjg4jjgrcNCivjgqrjgq7jg44s44Oe44Om44OfDQor44Kq44Kw44OpLOOCv+OCq+OCouOCrQ0KK+OCs+ODs+ODiSzjg6Tjgrnjg6bjgq0NCivjgqrjgqrjgqgs44Oe44K144Of44OBDQor44Kq44Kq44Ks44KtLOOCuOODreOCpg0KK+OCquOCquODi+OCtyzjg47jg6rjgqLjgq0NCivjgqrjgqrjg44s44Oe44K144Of44OBDQor44Kq44Kq44K/LOODkuODreOCtw0KK+OCquOCt+ODrSzjgqvjgrrjgrfjgrINCivjgqrjgqrjgr8s44K/44Kr44K3DQor44Kq44Kq44K/44K344OtLOODkuODh+OCrQ0KK+OCquOCquODhCzjg57jgrXjgqvjgroNCivjgqrjgqrjg4Qs44Oh44Kw44OfDQor44Kq44Kq44Ok44KuLOOCqOOCpOOCuA0KK+OCquOCquODpOODnizjg4Hjg4/jg6sNCivjgqrjgqvjg6Ljg4gs44OS44Ot44OW44OfDQor44Kq44Kr44Ok44OeLOODn+ODhOODqOODqg0KK+OCquOCseOCv+ODiyzjgr/jg4TjgrMNCivjgqrjgq/jg6Tjg54s44Kv44Of44KzDQor44Kq44OO44OH44OpLOODkuODh+ODiOOCtw0KK+OCquOCtuODryzjg5/jg47jg6sNCivjgrXjgqTjg4jjgqYs44Kr44K644OS44OHDQor44K144Kk44OI44KmLOODhuODq+OCqg0KK+OCteOCpOODiOOCpizjgr/jgqvjg47jg5YNCivjgrXjgqvjgrDjg4Es44OS44Ot44Kr44K6DQor44K144Kr44OK44KrLOODouODiOODoA0KK+OCteOCq+ODi+ODryzjg6jjg6rjgrMNCivjgrXjgqvjgqbjg4Es44OI44K344K/44KrDQor44K144Kv44Op44KkLOODhOODiOODoA0KK+OCteOCr+ODqeOCpCzjg57jgrXjg6bjgq0NCivjgrXjg44s44K/44Kv44OkDQor44K144K144KtLOODnuOCteODnw0KK+OCteOCteOCrSzjgqjjg6oNCivjgrXjgrXjgq0s44Oq44KoDQor44K144K144OeLOODnuOCteOCq+OCug0KK+OCteODiOOCpizjgr/jgrHjg6QNCivjgrXjg4jjgqYs44OS44Ot44Om44KtDQor44K144OI44KmLOOCv+OCq+OCtw0KK+OCteODiOOCpizjg5/jg68NCivjg4vjgrfjg57jgr8s44OG44OE44KqDQor44K144Ov44OALOODnuOCteODkuOCtQ0KK+OCu+ODs+ODkCzjg6bjgqbjgqTjg4ENCivjgrvjg4gs44Oo44K344OO44OqDQor44K344OW44OkLOODpuOCreOCqg0KK+OCt+OCpCzjg5/jgrXjgrMNCivjgrfjg57jg4As44Kz44Km44OY44KkDQor44K344Oe44OALOODn+OCqA0KK+OCquOCq+ODouODiCzjg57jgrXjg4jjgrcNCivjgrfjg4rjgqzjg68s44K144OB44KoDQor44K344Oz44Kr44OvLOODkuOCteODpA0KK+OCt+ODs+OCreODpeOCpizjg57jgrXjg6bjgq0NCivjgrfjg47jg4As44OG44Or44KoDQor44K344OO44OP44OpLOOCu+OCpOOCpOODgQ0KK+OCouOCteOCq+ODryzjgqvjgqrjg6sNCivjgrfjgqrjg4/jg6ks44Oe44K144OIDQor44K344Ot44K/LOOCq+ODhOODkuODrQ0KK+OCueOCruODouODiCzjgqvjgrrjg5Ljg4cNCivjgrnjgq7jg6Tjg54s44Kt44Oo44K/44KrDQor44K544Kw44OBLOODjuODluOCsw0KK+ODouODreODiOODnyzjg4/jg6vjgrMNCivjgrnjgrrjgq0s44Oe44K144OV44OfDQor44K/44Kw44OBLOOCouOCreOCqg0KK+OCv+OCsOODgSzjg6bjgqbjgrgNCivjgr/jg4/jg6ks44OS44Ot44Om44KtDQor44K/44Kr44KuLOODqOOCt+OCqg0KK+OCv+OCq+ODj+OCtyzjgqvjgrrjgqoNCivjgr/jgqvjgqQs44Kx44Oz44K4DQor44K/44Kr44Ok44OeLOOCq+OCuuOCsw0KK+OCv+OCsSzjg4rjgqrjgq0NCivjgr/jgrHjg5Djg6Tjgrcs44Oq44Ol44Km44K4DQor44K/44Kx44Kr44OvLOOCuOODpeODs+OCsw0KK+OCv+OCseOCpuODgSzjgqvjg5vjg6sNCivjg6/jgr/jg4rjg5ks44Kz44Km44K4DQor44K/44Kx44Km44OBLOODkuODh+OCrQ0KK+OCv+ODn+ODpCzjg57jgrXjgqvjgroNCivjgr/jg6Djg6ks44OS44Ot44K3DQor44K/44OK44OZLOODnuOCteODkuODrQ0KK+OCv+ODiuOCqyzjgrHjgqTjgrMNCivjgr/jg4rjgqss44OO44OW44KzDQor44K/44OK44KrLOODhOODqOOCtw0KK+OCv+ODi+OCsOODgSzjgqLjg4TjgrcNCivjgr/jg4vjgrDjg4Es44Kr44K644OS44OtDQor44K/44OL44Og44OpLOOCv+ODhOOCqg0KK+OCv+ODjuOCpuOCqCzjgqLjgq3jg5Ljg60NCivjgr/jg6vjgrXjg68s44Ki44Kt44KzDQor44K/44K344OtLOODiOOCt+ODj+ODqw0KK+ODhuODqeODgCzjg6bjgq3jg5LjgrMNCivjg4jjgqbjgqws44OS44OH44Of44ONDQor44OI44Ks44K3LOOCt+OCsuOCqg0KK+ODiOOCpuOCtOOCpizjgrfjg7Pjg6QNCivjg4jjgq/jg4rjgqws44Ki44Ok44KzDQor44OI44Oi44OOLOOCq+OCuuODnw0KK+ODiOODqOODgCzjg6jjgqbjgrjjg63jgqYNCivjg4Tjg4Hjg6Qs44OS44Ot44Ki44KtDQor44OE44Kr44OP44OpLOODjuODluODkuODrQ0KK+OCpuODqeOCteOCrSzjg6bjgqbjgrgNCivjg6/jg4As44OI44Oi44Ok44K5DQor44Ov44OALOODrOOCpOOCsw0KK+ODr+OCv+ODiuODmSzjg57jgrXjg4jjgrcNCivjg6/jgr/jg4rjg5ks44OV44Of44KqDQor44Ok44Ku44OM44OeLOOCseOCpOOCsw0KK+ODpOODnuODgCzjg4jjgrfjgqLjgq0NCivjg6Tjg57jg4As44OS44K144K3DQor44Ok44Oe44OALOOCseOCpOOCuA0KK+ODpOODnuODouODiCzjg57jgrXjgqLjgq0NCivjg6Tjg57jg6Ljg4gs44OS44OH44OIDQor44Ok44Oe44Oi44OILOOCv+ODhOODpA0KK+ODpOODnuODouODiCzjg6bjgq3jg5Ljg60NCivjg6Tjg57jg4rjgqss44OB44OS44OtDQor44Ok44Oe44OK44KrLOOCq+OCquODqw0KK+ODpOODnuOCt+OCvyzjg57jgrXjg5Ljg60NCivjg5LjgrDjg4Es44K444Ol44Oz44K4DQor44Ok44Oe44K244KtLOODleODn+ODjg0KK+ODpOODiuOCrizjg5Ljg63jgrcNCivjg6Tjgrnjg4As44OO44OW44Om44KtDQor44Ok44K544KoLOODiOOCt+ODpA0KK+ODqOOCs+OCqCzjg47jg5bjgqLjgq0NCivjg6jjgrPjg6Tjg54s44Oq44Ko44KzDQor44Oo44ON44OP44OpLOOCs+OCpuOCpOODgQ0KK+ODqOODjeODn+ODhCzjg57jgrPjg4gNCivjg6jjg6rjg57jg4Qs44OI44Oi44KzDQor44Oo44K344OALOODleODn+ODkuODrQ0KK+ODqOOCt+ODjizjg5/jg4Tjg5Ljg60NCivjg6jjgrfjgr/jgq0s44Kq44K144OgDQor44Om44Kr44OvLOOCuOODpeODs+ODpA0KK+ODpuODqizjg4jjg6LjgqoNCivjg6Ljg6os44K/44Kr44OS44K1DQor44K144K144KtLOOCq+ODhOODkuOCsw0KK+OCt+ODqeODj+ODnizjgr/jgrHjg5Ljg60NCivjg4bjg7Pjg5Hjgq8s44Om44Km44Kk44OB44OtDQor44Km44OB44OALOODiuOCquODpA0KK+ODpOODnuOCpuODqSzjg4jjgqrjg6sNCivjg57jg4TjgrDjg54s44OV44Of44KzDQor44Ki44OZLOODkuODreODpuOCrQ0KK+OCouODmSzjgqvjg4Tjg58NCivjgqLjg5ks44Kr44K644KqDQor44Ki44OZLOODiuOCquOCouOCrQ0KK+OCouODgOODgSzjg4rjg4rjgqoNCivjgqLjgqTjg4/jg6ks44OE44Oo44K3DQor44Ki44K444OeLOODpOOCueOCouOCrQ0KK+OCouOCq+OCteOCqyzjg4jjgqrjg6sNCivjgqLjgq3jg6Ljg4gs44Kz44Km44K+44KmDQor44Ki44Kt44Ok44OeLOOCv+OCq+OCtw0KK+OCouOCreODpOODnizjgr/jg4Tjg6QNCivjgqLjgq/jg40s44OS44Ot44K3DQor44Ki44Oe44OOLOODnuODiuODlg0KK+OCouODnuODjizjg4HjgqLjgq0NCivjgqLjg6Hjg5/jg6Qs44Oe44K144OE44KwDQor44Ki44Oz44OJ44KmLOODn+OCrQ0KK+OCouODs+ODieOCpizjg5/jg68NCivjgqLjg7Pjg4njgqYs44Kr44K644KqDQor44Ki44Oz44K444KtLOODpuOCpuOCsw0KK+OCouODs+ODmuOCpOOCuCzjgrfjg6Xjg7PjgqTjg4ENCivjgqLjgqrjgq0s44Oo44K344KzDQor44Ki44Kq44KtLOOCt+OCsuODj+ODqw0KK+OCouOCquOCrSzjg6bjgq3jgrMNCivjgqLjgqrjgq0s44K444Ol44OzDQor44Ki44Kq44KtLOODiOOCt+OCouOCrQ0KK+ODj+ODqeOCt+ODnizjg6rjgqsNCivjgqLjgqrjgq0s44OE44OI44OgDQor44Ki44Kq44KtLOODiuOCquODkuOCtQ0KK+OCouOCquODpOOCrizjgr/jgqvjg6bjgq0NCivjgqLjgqrjg6Tjg54s44Oo44Km44Kk44OBDQor44Ki44Kq44Ok44OeLOOCseOCpOOCueOCsQ0KK+OCouODqeOCpCzjgrPjgqbjgqTjg4ENCivjgqLjg6njgq0s44Oe44Kz44OIDQor44Ki44Op44KtLOOCq+ODhOOCuA0KK+OCouODqeOCvyzjg5/jgq0NCivjgqLjg6njg6Qs44K344Oz44Kk44OBDQor44Kz44OQ44Ok44Kr44OvLOODpOOCueODkuODrQ0KK+OCouODquOCvyzjg4rjg6vjg5Ljg4gNCivjgqLjgrXjg5As44Oo44K344Om44KtDQor44Ki44K144KrLOODiOODouODgeOCqw0KK+OCouOCteOCr+ODqSzjgr/jg4TjgqoNCivjgqLjgrXjg44s44K344Ol44Km44K4DQor44Ki44K144OOLOODiOODouOCouOCrQ0KK+OCouOCt+ODmSzjg57jgrXjg5LjgrMNCivjgqLjg6/jg5/jg6Qs44OS44Ot44Om44KtDQor44Ki44K244OfLOODhOODiOODoA0KK+OCouOCvOODpOODiuOCrizjg5Ljg63jg58NCivjgqLjgrrjg54s44Oq44KoDQor44Ki44K644OeLOOCv+OCq+ODpuOCrQ0KK+OCouOCuuODnizjg4rjgqrjg6bjgq0NCivjg5Djg5As44Oo44K344Kr44K6DQor44OQ44OQLOOCq+ODhOODpuOCrQ0KK+ODkOODkCzjg4DjgqTjgrnjgrENCivjg5Djg4rjgqss44Kr44K644OkDQor44K144K/44KxLOOCseOCpOOCsw0KK+ODgeODkCzjg6Ljg4jjg4/jg6sNCivjg4Hjgq7jg6ks44OO44OW44OS44KzDQor44OB44OP44OpLOOCv+OCq+ODleODnw0KK+ODgeOCq+OCpCzjgqLjg4TjgrcNCivjg4Hjg6Xjgqbjg54s44K/44Kx44K3DQor44OA44KkLOODnuOCteODkuODrQ0KK+ODgOOCpOOCqizjg5Ljg4fjgq0NCivjg4Djg4Ys44OS44Ot44K3DQor44OH44Kw44OBLOOCs+OCpuOCuA0KK+ODh+ODryzjgqjjg5/jgrMNCivjg4njgqQs44K/44Kk44K+44KmDQor44Ko44OT44K144OvLOODkuODreODn+ODhA0KK+ODiuOCq+ODoOODqSzjgr/jgqvjgrMNCivjgqjjgqTjg6Ljg6os44OP44Or44OfDQor44Ko44Oz44OJLOODiuOCquOCrQ0KK+OCqOODs+ODiSzjgr/jgqvjgqoNCivjgqjjg47jg6Ljg4gs44Kx44Kk44KzDQor44OV44K444KkLOODkuODreOCq+OCug0KK+ODleOCuOOCpCzjgrHjg7PjgqTjg4Hjg60NCivjg5XjgrjjgqQs44K/44OE44OO44OqDQor44OV44K444KkLOODn+ODhOODqOOCtw0KK+ODleOCuOOCpCzjg4jjgrfjgqLjgq0NCivjg5Xjgrjjgqvjg68s44K344OO44OWDQor44OV44K444Oi44OqLOOCouOCreOCsw0KK+OCouOCquOCrSzjgqLjgq3jg6kNCivjg5Xjgrjjg6Ljg4gs44OK44Kq44OkDQor44OV44K444Kq44KrLOODhuODhOODreOCpg0KK+ODleOCuOOCvyzjg6Tjgrnjg5LjgrUNCivjg5Xjgrjjgr8s44Og44OE44KqDQor44OV44Kr44KqLOOCt+ODs+OCpOODgQ0KK+ODleOCr+ODgCzjgqvjg4Tjg5LjgrMNCivjg5Xjgq/jg4As44OS44Ot44K3DQor44OV44Kv44KkLOODkuODh+OCqg0KK+ODleOCr+OCpCzjgrPjgqbjgrgNCivjg5Xjgq/jg6Ljg4gs44OS44OH44K/44KrDQor44OV44Kv44K344OeLOODkuODh+ODjuODlg0KK+ODleOCr+OCt+ODnizjg47jg5bjgrMNCivjg5Ljg44s44K144OBDQor44OV44Kv44K244OvLOOCreODp+OCpuOCsw0KK+ODleOCr+OCtuODryzjg5/jgq3jgrMNCivjg5Xjg4rjg4As44Om44Km44KzDQor44OV44Or44OA44OGLOOCseOCpOOCsw0KK+ODleODq+ODpCzjgrHjgqTjgrnjgrENCivjg5Xjgr/jg6Djg6ks44Of44Kt44OkDQor44OK44Kr44Og44OpLOODouODiOODkuOCtQ0KK+OCtOODiOOCpizjgrfjgrLjgq0NCivjgrTjg4jjgqYs44Kr44K644OkDQor44K044OI44KmLOOCq+OCpOODgeODreOCpg0KK+OCtOODiOOCpizjg6jjgqbjgrMNCivjg4/jg5As44Oo44Km44KzDQor44OP44OB44Ok44OeLOODnuOCteODnw0KK+ODj+OCruODr+ODqSzjgrfjg7MNCivjg4/jg57jg5ks44K/44Kr44Om44KtDQor44OP44Oe44OALOODqOOCt+ODnw0KK+ODj+ODnuODgCzjgr/jgqvjg5Ljg4cNCivjg57jgqjjgqrjgqss44OS44OI44K3DQor44OP44OK44OfLOODpOOCueODkuODhw0KK+ODj+ODiuOCquOCqyzjgqLjgq3jgrMNCivjgrvjgrbjgqQs44OK44Kq44KtDQor44OP44OpLOODquODp+OCpuOCuA0KK+OCteODiOOCpizjgrvjgqTjgrQNCivjg4/jg6ks44Ki44OE44K3DQor44OP44Op44OALOODiuODhOODnw0KK+ODj+ODqeODgCzjgqjjgqTjgqTjg4ENCivjg4/jg6njg4As44Kr44K644OS44KzDQor44OP44Op44OALOODnuOCteOCouOCrQ0KK+ODj+ODqeODgCzjg5/jg4Tjg47jg6oNCivjg4/jg6rjg54s44OK44Kq44KtDQor44Ob44Oz44OeLOODjuODluOCouOCrQ0KK+ODj+ODq+ODpOODnizjgrfjgrLjg6sNCivjg4/jgrss44Oo44Km44Kk44OBDQor44OP44K744Ks44OvLOOCv+ODhOOCqg0KK+ODj+OCu+OCrOODryzjg6Tjg6jjgqQNCivjg4/jgrvjgqzjg68s44Kx44Oz44K/44Ot44KmDQor44OP44K744Ks44OvLOOCouOCreODkuOCsw0KK+ODj+OCt+OCsOODgSzjg5Ljg4jjgrcNCivjg4/jgrfjg6Ljg4gs44Kr44OE44KzDQor44OP44K344Oi44OILOOCq+OCuuODpA0KK+ODj+OCt+OCuuODoSzjgrPjgqbjgr/jg63jgqYNCivjg4/jgrfjgrrjg6Es44Of44OvDQor44OP44K344K644OhLOOCt+ODpeODs+OCueOCsQ0KK+ODj+OCvyzjgrfjg7PjgqTjg4Hjg63jgqYNCivjg4/jgr/jg44s44OB44Kr44OpDQor44OP44K/44OOLOOCq+OCuuODiOODog0KK+ODj+ODiOODqizjg4rjgqrjgq0NCivjg4/jg4Pjg4jjg6os44K/44Kx44K3DQor44OP44OD44OI44OqLOODqOOCpuOCpOODgQ0KK+ODj+ODg+ODiOODqizjgqLjgq3jg5LjgrMNCivjg4/jg4Pjg4jjg6os44Om44KtDQor44OP44OD44OI44OqLOOCteODiOOCtw0KK+ODj+ODg+ODiOODqizjg57jgrXjgq0NCivjg4/jg4Pjg4jjg6os44Ov44K/44OrDQor44OP44Ok44Kr44OvLOOCseOCpOOCsw0KK+ODj+ODpOOCq+ODryzjg4rjgqrjg58NCivjg4/jg6Tjg58s44K544Of44OS44OIDQor44OP44Ok44K3LOODkuODh+OCouOCrQ0KK+ODj+ODpOOCtyzjg6bjg5/jgrMNCivjg4/jg6Tjgrcs44Oe44K144K/44KrDQor44OP44Ok44K3LOODnuODpuODnw0KK+ODj+ODpOOCtyzjg6Tjgrnjg5Ljg60NCivjgrXjgrXjgr/jg4ss44Ki44Kt44OpDQor44OP44Ok44K3LOODnuOCteODjuODqg0KK+ODj+OCtuODnizjgrvjgqTjgqTjg4ENCivjg5jjg7Pjg58s44Kr44OK44KzDQor44OS44OTLOODiOODouODnw0KK+ODkuODgOOCqyzjg4jjgqbjgrMNCivjg5Ljg4Djgqss44Om44Km44KzDQor44OS44OA44KrLOOCv+ODreOCpg0KK+ODkuOCqOODgCzjg5/jg4HjgqvjgroNCivjg5Ljgqzjgq0s44K344On44Km44K4DQor44OS44Ks44K3LOODqOOCt+ODkuOCtQ0KK+ODkuOCpOODieODoSzjg5Ljg63jg5/jg4ENCivjg5Ljgrjjgq/jg60s44K744Kk44Kk44OBDQor44OV44Kv44KkLOOCpOOCteOCqg0KK+ODkuODnizjg6jjgrfjgq0NCivjg5Ljgqrjgq0s44OI44Km44Oh44KkDQor44OS44Op44KkLOODnuODqg0KK+ODn+OCrSzjg57jgrXjg6bjgq0NCivjg5Ljg6njg44s44OV44Kt44OoDQor44OS44Op44OOLOOCq+OCuuODkuODrQ0KK+ODkuODqeOCvyzjgrfjg63jgqYNCivjg5Ljg6njg4Tjgqss44OV44Of44Kr44K6DQor44Ob44OALOODkuODreOCrQ0KK+ODkuODqeODpOODnizjg4rjgqrjgrMNCivjg5Ljg63jg5ks44Kt44Kv44OfDQor44OS44Ot44KkLOODnuOCteODkuODrQ0KK+ODkuODreOCteODryzjg57jgrXjg5Ljg60NCivjg5Ljg63jgrXjg68s44OK44Kq44KzDQor44OS44Ot44K544KoLOOCuOODpeODs+OCsw0KK+ODkuODreOCvyzjgqrjgrXjg6ANCivjg4/jg6Tjg54s44Om44Km44KzDQor44OS44Ot44Ov44K/44OqLOOCteODpuODqg0KK+ODkuOCteODouODiCzjg5/jgqvjgrMNCivjg5LjgrXjg44s44Oo44K344Ki44KtDQor44OS44K144Om44KtLOODpuOCq+ODqg0KK+ODkuOCt+ODgCzjg5Ljg63jgrcNCivjg5Ljgrfjgr/jg4ss44Ok44K544K3DQor44Ov44OALOODleODn+OCqA0KK+ODkuODpOODnizjg47jg5bjg5LjgrMNCivjgqLjg6rjgq/jg6ks44Om44K/44KrDQor44Ob44Oz44OALOODn+ODjuODqw0KK+ODm+ODs+ODgCzjgrHjgqTjgrnjgrENCivjg5vjg7PjgrTjgqYs44Oe44K144OIDQor44Ob44Oz44OeLOODpuOCpuOCpOODgQ0KK+ODm+ODs+ODnizjgqLjgq3jg47jg5YNCivjg57jg4Tjg6Ljg4gs44Kx44Oz44K/DQor44Ob44OqLOODnuODiuODlg0KK+ODm+ODqizjgqLjgq3jg4gNCivjg5vjg6rjg5ks44OI44K344Om44KtDQor44Ob44Oq44KoLOOCouOCreODjuODqg0KK+ODm+ODquOCqCzjg57jgrXjg5LjgrMNCivjg5vjg6rjgqgs44K/44OA44K3DQor44Ob44Oq44Km44OBLOODqOOCt+ODleODnw0KK+ODm+OCt+ODkCzjg4jjgqrjg6sNCivjg5vjgrfjgqvjg68s44OS44OH44KqDQor44Kr44OI44KmLOODiuOCquOCrQ0KK+ODm+OCt+ODiizjgrPjgqbjgqTjg4ENCivjg5vjg6os44OO44Oq44Om44KtDQor44Ob44K344OOLOOCv+OCq+OCtw0KK+ODm+OCveODgCzjg47jg5bjgqoNCivjg5vjg4Pjgr8s44K144Kq44OqDQor44Ob44OB44OJLOOCv+OCq+ODpA0KK+OCpOODluOCqyzjg6jjgrfjg4bjg6sNCivjgqTjg4Hjgqvjg68s44OS44OI44K3DQor44Kk44OB44Kr44OvLOODnuODquOCsw0KK+OCpOODgeODnuOCuSzjg4Tjg4jjg6ANCivjgqTjg4Hjg47jgrss44Kr44OE44OfDQor44Kk44OHLOODnuOCteODkuOCsw0KK+OCpOOCrOODqeOCtyzjg57jgrXjg4gNCivjgqTjgqzjgr8s44Ko44Kk44Kk44OB44Ot44KmDQor44Kk44KkLOODpuODquOCsw0KK+OCpOOCpOODgCzjg57jgrXjg6jjgrcNCivjgqTjgqTjg4As44Oe44K144Om44KtDQor44Kk44Kk44OALOOCt+ODs+OCuA0KK+OCpOOCpOODjizjgqTjg4Hjg63jgqYNCivjgqTjgqTjg6jjg6os44Of44OB44OP44OrDQor44Kk44Kk44K644KrLOODnuOCs+ODiA0KK+OCpOOCq+ODq+OCrizjgqvjg4Tjg6QNCivjgqTjgqvjg68s44Kx44Kk44K544KxDQor44Kk44Kx44OBLOODnuODnw0KK+OCpOOCseODgCzjgrPjgqbjgqTjg4Hjg63jgqYNCivjgqTjgrHjg4As44Oi44OI44OP44OrDQor44Kk44Kx44OALOOCv+OCq+OCsw0KK+OCpOOCseODgCzjgr/jgqvjg6bjgq0NCivjgqTjgrHjgqzjg58s44OI44Oi44OS44OtDQor44Kk44Kx44K444OqLOOCq+OCuuODpA0KK+OCpOOCseOCv+OCrSzjgq/jg4vjgqrjg58NCivjgqTjgq/jg6Ljg4gs44K344OzDQor44Kk44Oe44KkLOOCv+OCseOCtw0KK+OCpOODnuOCpCzjg6zjgqTjgrMNCivjg5vjgr3jgqQs44Kx44Oz44K/44Ot44KmDQor44Kk44Oe44KkLOOCteODluODreOCpg0KK+OCpOODnuODi+OCtyzjgr/jgrHjgrcNCivjgqTjg4rjg4As44OP44K444OhDQor44Kk44OK44Ks44KtLOODnuODiuODlg0KK+OCpOODiuOCsizjgrHjg7PjgqTjg4ENCivjg4/jgrbjg54s44OS44K144Oi44OIDQor44Kk44OOLOOCuOODpeODsw0KK+OCpOODjuODnuOCvyzjgrHjgqTjgr/jg63jgqYNCivjgqTjg47jgqbjgqgs44Oq44KoDQor44Ok44K544Kr44OvLOOCv+OCq+ODkuODiA0KK+ODj+ODqyzjg4jjgqrjg6sNCivjgqTjg47jgqbjgqgs44OG44Or44KqDQor44Kk44OO44Km44KoLOODhOODiOODoA0KK+OCpOODjuOCpuOCqCzjg5Xjg5/jg47jg6oNCivjgqTjg47jgqbjgqgs44OS44Ot44OS44K1DQor44Kk44Kq44KtLOODnuOCteODn+ODgQ0KK+OCpOODquOCqCzjg47jg5bjg6bjgq0NCivjgqTjgrXjgqss44OI44Kq44OrDQor44Kk44K144KrLOODr+OCv+ODqw0KK+OCquOCquODouODqizjgrHjg7PjgqTjg4Hjg60NCivjgqTjgrfjg5Djgrcs44Oe44OK44OWDQor44Kk44K344OALOOCseOCpOOCpOODgQ0KK+OCpOOCt+ODgCzjgqbjg6njg6kNCivjgqTjgrfjg4/jg6ks44Oo44K344OIDQor44Kk44K344OP44OpLOODj+ODq+OCqg0KK+ODkuODqeODiCzjg5Ljg4fjgqoNCivjgqTjgrfjgqQs44Kx44Kk44K444Ot44KmDQor44Kk44K344KkLOODn+OCreOCqg0KK+OCpOOCt+OCpCzjgqLjg4TjgrcNCivjgqTjgrfjgqQs44OP44Or44KqDQor44Kk44K344KkLOOCseOCpOOCuA0KK+OCpOOCt+OCpCzjg57jgrXjgrMNCivjg4/jg43jgqTjgrcs44K344Oz44K544KxDQor44Kk44K344KkLOODpOOCueOCtw0KK+OCpOOCt+OCq+ODryzjg6jjgqbjgrMNCivjgqTjgrfjgqvjg68s44Oo44Km44K544KxDQor44Kk44K344Kr44OvLOODqOOCt+ODkuOCsw0KK+OCpOOCt+OCq+ODryzjg6bjgqsNCivjgqTjgrfjgqvjg68s44OO44Oq44KzDQor44Kk44K344Kq44KrLOODqOOCt+ODpuOCrQ0KK+OCpOOCt+ODhOOCqyzjg4jjgrfjg6bjgq0NCivjgqTjgrfjg6/jgr8s44Ki44Oq44OS44OtDQor44Kk44K344K244KrLOOCs+OCpuOCuA0KK+OCpOOCt+OCtuOCqyzjgqjjgqTjgqTjg4ENCivjgqTjgrfjgrbjgq0s44Kz44Km44K4DQor44Kk44K344K644KtLOODiuOCquODiA0KK+OCpOOCvSzjgrfjgrLjg5Ljg4gNCivjgqTjgr3jgqzjgqQs44Om44Km44KzDQor44Kk44K/44OQLOODpuOCpuOCuA0KK+OCpOODiOOCpizjgqTjg47jg6oNCivjgqTjg4jjgqYs44Oe44K144OS44OtDQor44Kk44OI44KmLOODnuOCteODkuODrQ0KK+OCpOODiOOCpizjg5Djg7MNCivjgqTjg4jjgqYs44K144OI44K3DQor44Kk44OI44KmLOOCouODhOOCtw0KK+ODkuODgOOCqyzjg5Ljg4fjg4TjgrANCivjgqTjg4jjgqYs44Oe44K144OS44OtDQor44Kk44OI44KmLOODpuOCrQ0KK+ODi+OCtyzjgrfjg7PjgqTjg4ENCivjgqTjg6/jg4Djg6ws44Oo44K344OO44OqDQor44Kk44Ov44OP44K3LOODpuOCpuOCsw0KK+OCpOODr+OCrSzjg5/jgrrjg5sNCivjgqTjg6/jg6Ljg4gs44Oo44K344OO44OqDQor44Kk44Ov44K144KtLOODjuODluOCq+OCug0KK+ODkuODqeODhOOCqyzjg5Ljg63jgrcNCivjgqTjg6/jgrXjgq0s44OS44Ot44Om44KtDQor44Kk44Ov44K144KtLOODnuOCteODpuOCrQ0KK+OCpOODr+OCteOCrSzjg5Ljg63jg6bjgq0NCivjgrjjg7PjgrDjgqYs44K144OI44KzDQor44Kk44Ov44K344KyLOODnuOCs+ODiA0KK+OCpOODr+OCvyzjg5Ljg63jgrcNCivjgrjjg7PjgrDjgqYs44Oo44K344OO44OqDQor44K0LOODpOOCueOCq+OCug0KK+OCq+OCrCzjgqvjg4Tjg6QNCivjgqvjgqzjg5Ys44K344Oz44K444Ot44KmDQor44Kr44Ku44Ok44OeLOODkuODh+OCqg0KK+OCq+OCpCzjg6bjgqbjgr7jgqYNCivjgqvjgqTjg4As44OO44Oq44Om44KtDQor44Kr44Kk44OALOODjuODquODnuOCtQ0KK+OCq+ODnuODgSzjg5Ljg63jg6bjgq0NCivjgqvjg57jg4As44Oe44K144KzDQor44Kr44Oe44Ob44OqLOODiOODouODkuOCsw0KK+OCq+ODnuOCvyzjgrPjgqbjgqTjg4Hjg63jgqYNCivjgqvjg6Hjg4As44Oe44Om44OfDQor44Kr44Oh44KkLOODleODn+ODkuOCsw0KK+OCq+ODn+ODjizjgr/jgrHjgrcNCivjgqvjg5/jg44s44OS44OI44K3DQor44Kr44Of44OI44OOLOODquODpeOCpuOCuA0KK+OCq+ODn+ODpCzjg47jg5bjg6bjgq0NCivjgqvjg5/jg6Qs44OB44Ki44KtDQor44Kr44Of44Ok44OeLOOCseODs+OCrg0KK+OCq+ODouODsyzjg5Ljg4fjgq0NCivjgqvjg6Ljg7Ms44Ko44Kk44K/44Ot44KmDQor44Kr44OzLOODiOODouODjuODqg0KK+OCq+ODiuOCpCzjg47jg6rjgrMNCivjgqvjg4rjgqQs44K544Of44KzDQor44Kr44OK44K4LOODnuOCteODpuOCrQ0KK+OCq+ODiuOCquOCqyzjgr/jg5/jgqoNCivjgqvjg4rjgrbjg68s44Kr44OE44OS44K1DQor44Kr44Oz44OZLOOCteOCquODqg0KK+OCq+ODs+ODgCzjg6Tjgrnjgr/jgqsNCivjgqvjg7Pjg4As44OB44KoDQor44Kr44ON44KtLOOCqOOCpOOCueOCsQ0KK+OCq+ODjeOCreODqCzjg5Ljg63jg4gNCivjgqvjg43jgrMs44OS44Ot44Om44KtDQor44Kr44ON44K344K/LOOCq+OCuuODkuODrQ0KK+OCq+ODjeODpOOCuSzjg4rjgqrjg6QNCivjgqvjg47jgqYs44K344Oz44K4DQor44Kr44OO44KmLOOCv+OCseOCtw0KK+OCq+ODs+OCuuOCpCzjgr/jg5/jg6bjgq0NCivjgqvjgrXjg4/jg6ks44OK44OK44KzDQor44Kr44K144OP44OpLOODkuODh+ODkuOCtQ0KK+OCq+OCteOCpCzjgqjjgqTjgqTjg4ENCivjgqvjgrXjg57jg4Qs44Kv44OL44OI44K3DQor44Kr44K144OiLOOCseODs+OCpOODgeODrQ0KK+OCv+ODnuOCv+ODiyzjgrfjg54NCivjgqvjgrfjg6/jgq4s44Om44Oq44OfDQor44Kr44K344Ov44Kw44OpLOODkuODh+ODpuOCrQ0KK+OCq+OCv+ODgCzjgrXjg4HjgrMNCivjgqvjgr/jgqrjgqss44OK44Kq44KtDQor44Ob44K3LOODkuODreODiA0KK+OCq+OCv+OCquOCqyzjgrfjg6XjgqbjgrgNCivjgqvjg4jjgqYs44OS44Ot44KtDQor44Kr44OI44KmLOODpOOCueODpuOCrQ0KK+OCq+ODiOOCpizjg6Ljg6rjg5Ljg60NCivjgqvjg4jjgqYs44K344Oz44Kk44OBDQor44Kr44OI44KmLOODquODp+OCpuOCvw0KK+OCq+ODiOOCpizjgrHjgqTjgrMNCivjgqvjg4jjgqYs44OG44Or44OS44KzDQor44Kr44OI44KmLOOCuOODpeODs+OCsw0KK+OCq+ODiOOCpizjg5/jg4Hjg6QNCivjgqvjg4jjg44s44Kt44Oo44K3DQor44Kr44OE44Og44OpLOODkuODh+OCrQ0KK+OCq+ODr+ODkOOCvyzjgqTjg4Hjg63jgqYNCivjgqvjg6/jgrTjgqgs44Ki44Kt44OpDQor44Kr44Ov44Kw44OBLOOCs+OCpuOCuA0KK+OCq+ODr+ODj+ODqSzjg57jgrnjg58NCivjgqvjgrfjg6Djg6ks44Om44Km44KzDQor44Kr44Ov44KkLOODiuOCquODnw0KK+OCq+ODr+OCpCzjg5Ljg63jg6bjgq0NCivjgqvjg6/jg6Ljg4gs44Oe44OK44OWDQor44Kr44Ov44Og44OpLOOCteODiOODqw0KK+OCq+ODr+ODoOODqSzjgrfjg6XjgqbjgrgNCivjgqvjg6/jg4os44Om44Kt44OS44OIDQor44Kr44Ov44OKLOODnuOCteOCq+OCug0KK+OCq+ODr+ODiuODnyzjg5Ljg4fjg5LjgrMNCivjgqvjg6/jg44s44K344Oz44K4DQor44Kr44Ov44K7LOOCuOODpeODs+OCpOODgeODrQ0KK+ODj+ODqeODgCzjgrfjg6XjgqbjgrPjgqYNCivjgqvjg6/jgrfjg54s44OO44OW44KzDQor44Kr44K244OfLOODiuOCquODiA0KK+OCq+OCuuOCteODryzjg6Tjgrnjg5Ljg60NCivjgq3jg5Djg6Tjgrcs44Om44Km44Kk44OBDQor44Kt44OALOOCv+OCseOCtw0KK+OCreODj+ODqSzjg6jjgrfjg5LjgrMNCivjgq3jgq/jg4Es44OS44Ot44K3DQor44Kt44Kv44OBLOOCpOODgeODreOCpg0KK+OCteOCpOODiOOCpizjgrHjg7PjgrgNCivjgq3jgq/jgqQs44OE44Oo44K3DQor44Kt44Oi44OILOODqOOCpuOCsw0KK+OCreODoOODqSzjg47jg5bjg6bjgq0NCivjgq3jg6Djg6ks44OE44Oo44K3DQor44Kt44Og44OpLOODiOOCt+ODhOOCsA0KK+OCreODoOODqSzjgr/jgqvjg5LjgrUNCivjgq3jg6Djg6ks44OP44Or44OfDQor44Kt44OOLOOCq+OCuuODnuOCtQ0KK+OCreODquODjizjgqvjgrrjg6QNCivjgq3jgrXjg4zjgq0s44Oe44Kz44OIDQor44Kt44K3LOODnuOCteOCrQ0KK+OCreOCtyzjg4rjgqrjgq0NCivjgq3jgrfjg4As44K144OI44K3DQor44Kt44K344Kr44OvLOOCt+ODsw0KK+ODkuODqeODhizjgrfjg7PjgrgNCivjgq3jgrfjg4rjg58s44Ok44K544Oe44K1DQor44Kt44K9LOODqOOCt+OCqg0KK+OCreOCvyzjg5Ljg4fjgqLjgq0NCivjgq3jgr/jgqzjg68s44OK44Kq44OfDQor44Kt44K/44K444OeLOODkuODreODpuOCrQ0KK+OCreOCv+OCuOODnizjgrvjgqTjgqsNCivjgq3jgr/jg6Djg6ks44OO44Oq44KzDQor44Kt44K/44OOLOODiOOCt+ODpuOCrQ0KK+OCreOCv+OCtuOCrSzjgr/jg4DjgrcNCivjgq3jgr/jgrbjg68s44K/44OE44K3DQor44Kt44Oo44OP44OpLOODhOODiOODoA0KK+ODj+OCt+ODouODiCzjgqrjgrXjg6ANCivjg47jgrbjgq0s44OV44Of44Kt44OoDQor44Kz44OQ44Ok44K3LOODleODn+OCqg0KK+OCs+ODkOODpOOCtyzjg57jgrXjg6bjgq0NCivjgrPjg5Djg6Tjgrcs44OK44Kq44KtDQor44Kz44OQ44Ok44K3LOOCv+OCq+ODj+ODqw0KK+OCs+ODkOODpOOCtyzjgrHjg7PjgrgNCivjgrPjg5Djg6Tjgrcs44Ki44OE44K3DQor44Kz44OQ44Ok44K3LOOCqOOCpOOCuA0KK+OCs+ODkOODpOOCtyzjgrXjg4HjgrMNCivjgrPjg5Djg6Tjgrcs44K344On44Km44K4DQor44Kz44OQ44Ok44K3LOODiOODouODkuODrQ0KK+OCs+OCpuODgSzjg6bjgq0NCivjgrPjg4Djg54s44Ok44K544OS44OtDQor44Kz44KsLOOCouOCreODkuODrQ0KK+ODiOOCpuODieOCpizjgrfjg6XjgqbjgqTjg4ENCivjgrPjg4/jg6ks44OK44Kq44K544OfDQor44Kz44OSLOODj+ODq+ODnw0KK+OCs+ODs+ODjizjg5Ljg63jg5Xjg58NCivjgrPjgqTjgrEs44OI44Kq44OrDQor44Kz44Kk44OvLOODiOODouODpuOCrQ0KK+OCs+OCpOOCuuODnyzjgrfjg6XjgqbjgrQNCivjgrPjgrjjgqss44Of44Ko44KzDQor44Kz44K444OeLOODiuOCrOOCqg0KK+OCs+OCuOODnizjg6rjg4HjgrMNCivjgrPjgrjjg54s44Kr44K644OS44KzDQor44Kz44K444OeLOOCteODiOOCtw0KK+OCs+ODnuODhOODkOODqSzjg6rjg6Xjgqbjgr8NCivjgrPjg5/jg6Qs44Kt44Oo44K3DQor44Kz44Oi44OALOOCouOCreODqOOCtw0KK+OCs+ODoOODrSzjg4jjgrfjg6bjgq0NCivjgrPjg7Pjg4ks44OK44OE44OfDQor44Kz44Oz44OJLOOCseODs+OCuA0KK+OCs+ODs+ODiSzjgrHjg7PjgqTjg4ENCivjgrPjgrXjgrEs44Kz44Km44Kk44OBDQor44Kz44K7LOOCv+OCq+OCtw0KK+OCs+OCueOCrizjgr/jgrHjgrcNCivjgrPjgrrjgqss44Ok44K544OO44OqDQor44Kv44OcLOODj+ODq+ODnw0KK+OCr+ODnCzjgr/jgrHjg5Ljg60NCivjgq/jg5ws44OK44Kq44KtDQor44Kv44OcLOOCt+OCsuOCqg0KK+OCr+ODnCzjg5Ljg63jgrcNCivjgq/jg4njgqYs44Oe44OqDQor44Kv44OJ44KmLOOCu+OCpOOCpOODgQ0KK+OCr+ODieOCpizjg57jgrXjgq0NCivjgq/jg57jgqvjg68s44Kx44Oz44K4DQor44Kv44Oe44Kv44OpLOOCseODs+OCpOODgQ0KK+OCr+ODnuOCt+ODrSzjgrvjgqTjgqTjg4ENCivjgq/jg57jgr8s44K344Ot44KmDQor44Kv44OL44Oi44OILOOCuOODpeODs+OCuA0KK+OCr+ODqeODouODgSzjgrfjg6XjgqbjgqTjg4ENCivjgq/jg6njgrfjg54s44OS44Ot44K3DQor44Kv44Oq44OP44OpLOOCq+OCuuODkuODrQ0KK+ODkuODqeOCpCzjgrPjgqbjgrgNCivjgq/jg6rjg4/jg6ks44Oo44K344Om44KtDQor44Kv44Oq44OP44OpLOOCq+ODhOODqA0KK+OCr+ODquODj+ODqSzjg6bjgqbjgrgNCivjgq/jg6rjg4/jg6ks44OG44OE44KqDQor44Kv44Oq44OP44K3LOODn+ODhOODjuODlg0KK+OCr+ODquOCuSzjg6jjgqbjgrMNCivjgq/jg63jg4As44Ki44OE44K3DQor44Kv44Ot44OALOODkuODreODpuOCrQ0KK+OCr+ODreOCrSzjgr/jgqvjg5Ljg60NCivjgq/jg63jgq0s44OI44Oi44KzDQor44Kv44Ot44KtLOOCqOOCpOOCuA0KK+OCr+ODreODoSzjg57jgrPjg4gNCivjgq/jg63jgrXjg68s44Ko44Kk44K444Ot44KmDQor44Kv44Or44Of44OkLOOCs+OCpuOCrQ0KK+OCr+OCteODpOODiuOCrizjg57jgrXjg4jjgrcNCivjgq/jgrnjg47jgrss44OK44Kq44Kq44OfDQor44Kv44Ov44OP44OpLOOCt+ODs+OCuA0KK+ODnuODgeODgCzjg6jjgqbjgrMNCivjg57jg4Djg6njg6Es44OI44K344K/44KrDQor44Oe44Ko44OALOOCteODiOOCtw0KK+ODnuOCqOODgCzjgrXjg4jjg6sNCivjg57jgqjjg4As44K344Oz44Kk44OB44Ot44KmDQor44Oe44Ko44Ks44OvLOODleODn+ODkuODhw0KK+ODnuOCqOODj+ODqSzjgq7jg7PjgrgNCivjg57jgqjjgq3jgr8s44Kr44K644KzDQor44Oe44Kt44OOLOOCv+OCq+ODkuODrQ0KK+OCt+ODluOCv+ODiyzjgrPjgqbjgrgNCivjg57jg4rjg5ks44Oo44K344OO44OqDQor44Oe44Or44Ok44OeLOOCouOCreODqQ0KK+ODnuODq+ODpOODnizjg5Ljg63jg6bjgq0NCivjg57jg6vjg6Tjg54s44Kx44Kk44Kk44OBDQor44Oe44K144Kq44KrLOOCv+OCq+OCtw0KK+ODnuOCueODluODgSzjg6jjgrfjg47jg6oNCivjg57jgrnjg4As44Om44Km44KzDQor44Oe44K544OALOODqOOCt+ODj+ODqw0KK+ODnuOCueODgCzjgr/jgqvjg4jjgrcNCivjg57jgrnjg4As44K/44Kv44OkDQor44Oe44K544OALOODkuODreOCq+OCug0KK+ODnuOCueODgCzjg5Ljg63jgq0NCivjg57jg4Tjg5As44OO44K+44OfDQor44OP44OpLOOCseODs+OCuA0KK+ODnuODhOODgCzjgrHjg7PjgrgNCivjg57jg4Tjg4As44OA44Kk44K544KxDQor44Oe44OE44OV44K4LOOCouOCreOCqg0KK+ODnuODhOODleOCuCzjgqvjgrrjg4rjg6oNCivjgr/jg4Hjgq/jgqQs44Of44KtDQor44Oe44OE44KkLOOCt+ODs+OCuA0KK+ODnuODhOOCq+ODryzjgr/jgqvjg5Ljg60NCivjg57jg4Tjg57jg6ss44K344Ol44Km44K144KvDQor44Oe44OE44Oi44OILOOCouOCreOCqg0KK+ODnuODhOODouODiCzjgqvjgrrjg47jg6oNCivjg57jg4Tjg6Ljg4gs44Ki44Kt44OS44KzDQor44Oe44OE44Oi44OILOODjuODquOCsw0KK+ODnuODhOODouODiCzjg5Ljg63jgrcNCivjg57jg4Tjg6Ljg4gs44OE44OI44OgDQor44K344Kq44OQ44OpLOOCt+ODs+OCpOODgQ0KK+ODnuODhOODoOODqSzjgrfjg6Xjg7PjgqTjg4ENCivjg57jg4Tjg6Djg6ks44Oo44K344OO44OqDQor44Oe44OE44OK44KsLOODpuOCreOCsw0KK+ODnuODhOODiuOCrCzjg57jgrXjg5Ljg60NCivjg57jg4Tjg4rjg58s44Oo44K344KzDQor44Oe44OE44KqLOODiOOCt+ODpA0KK+ODnuODhOOCqizjg4jjg6Ljg5Ljg60NCivjg57jg4Tjgqrjgqss44Ko44Kk44KzDQor44OP44Ok44K344OALOOCq+OCuuODkuODrQ0KK+ODnuODhOOCquOCqyzjgrvjgqTjgqTjg4ENCivjgqLjgrzjg6Tjg4rjgq4s44K744Kk44K4DQor44Oe44OE44Kq44KrLOOCt+ODs+OCtA0KK+ODnuODhOOCquOCqyzjg5Ljg63jgqLjgq0NCivjg57jg4Tjgrss44K/44Kr44Om44KtDQor44Oe44OE44K344OeLOOCseODs+OCuA0KK+ODnuODhOOCt+OCvyzjgrPjgqbjgrgNCivjg57jg4Tjgr/jg4ss44K344Oz44K4DQor44Oe44OE44Ov44KrLOOCteODiOOCtw0KK+ODnuODhOODpOODnizjgqLjgq3jg6kNCivjg57jg4Tjgrbjgq0s44Kt44Kv44KqDQor44Oe44OE44OK44KsLOODnuOCs+ODiA0KK+ODm+ODs+ODiizjgq3jg6/jg6ANCivjg6Hjgqvjgr8s44Kx44Oz44K4DQor44Of44Kr44K444OqLOOCreODp+OCpuOCsw0KK+ODn+OCq+ODnyzjgrfjg7PjgrnjgrENCivjg5/jgqvjg58s44OS44OH44KqDQor44Of44KtLOODnuOCteODpuOCrQ0KK+ODn+ODn+OCvyzjg5/jg4Hjg60NCivjg5/jg4rjgq/jg4Es44OV44Of44OP44OrDQor44Of44OK44OfLOOCteODiOOCtw0KK+ODn+ODiuODnyzjg4jjg6Ljg6bjgq0NCivjg5/jg4rjg58s44Ki44Kt44OpDQor44Of44OK44OILOOCt+ODp+OCpuOCuA0KK+ODn+ODjSzjg6jjgrfjgr/jgqsNCivjg5/jg40s44Ki44OE44K3DQor44Of44K344OeLOOCs+OCpuOCuA0KK+ODn+OCt+ODnizjgqrjgrXjg6ANCivjg5/jgr3jg44s44OS44Ot44OS44K1DQor44Of44K/44Og44OpLOODnuOCteODiOOCtw0KK+ODn+OCv+ODs+ODgCzjgrHjg7PjgqTjg4ENCivjg5/jg4Tjg5ws44Oo44K344Kr44K6DQor44Of44OE44Oc44K3LOODiOOCt+ODkuODrQ0KK+ODj+OCueODoOODqSzjg4jjgrfjg5Xjg58NCivjg5/jg4Tjg4/jgrcs44OS44Ot44Of44OEDQor44K344OK44OALOODkuODreODpuOCrQ0KK+ODn+ODhOODnizjgqvjgrrjg5Ljg4gNCivjg5/jg6Tjg4/jg6ks44K444OE44OkDQor44Of44Ok44OP44OpLOODkuODh+ODj+ODqw0KK+ODn+ODpOOCpCzjg5/jgqjjgrMNCivjg5/jg6Tjgrjjg54s44Om44Kr44KzDQor44Of44Ok44Oi44OILOOCq+OCuuODiuODqg0KK+ODn+ODpOODouODiCzjg5Ljg4fjg47jg6oNCivjg5/jg6Tjgrfjgr8s44OS44Ot44Om44KtDQor44Of44Ok44K/LOODkuODreODpuOCrQ0KK+ODn+ODpOOCvyzjgqvjgqrjg6sNCivjg5/jg6Tjgqbjg4Es44Kx44Oz44K4DQor44Of44Ok44Km44OBLOOCquOCteODoA0KK+ODn+ODpOOCpuODqSzjgr/jgrHjg5LjgrUNCivjg5/jg6Tjgrbjgq0s44K/44Kx44K3DQor44OP44K344Kw44OBLOOCt+OCsuOCrQ0KK+ODn+ODpOOCtuODryzjgrPjgqbjgrgNCivjg5/jg6Tjgrbjg68s44Ki44Kt44KqDQor44Of44Ok44K6LOODpOOCueODkuODiA0KK+ODn+OCvuOCq+ODnyzjgrjjg6Xjg7PjgqTjg4ENCivjg5/jgrrjg44s44OG44OE44OS44KzDQor44Of44K644OOLOODiOOCt+ODpuOCrQ0KK+ODn+OCuuOCv+ODiyzjg47jg5bjg6bjgq0NCivjg6Ljg4Hjg4As44Ki44Kt44OS44OtDQor44Oi44OB44K644KtLOOCouOCreOCqg0KK+ODouODgeOCuuOCrSzjgrjjg63jgqYNCivjg5/jg6jjgrcs44K/44Kr44K3DQor44Oi44OqLOODnuOCteOCrQ0KK+ODouODqizjg57jgrXjgrcNCivjg6Ljg6os44OA44Kk44Kk44OBDQor44Oi44OqLOODnuOCteODpuOCrQ0KK+ODouODqizjg4bjg4Tjg6QNCivjg6Ljg6os44OS44Ot44Kr44K6DQor44Oi44OqLOODhOODjeOCouOCrQ0KK+ODouODqizjgqTjgrrjg58NCivjg6Ljg6os44OS44Ot44Kr44K6DQor44Oi44Oq44Kw44OBLOODkuODreOCrQ0KK+ODouODquOCq+ODryzjgrPjgqbjgrgNCivjg6Ljg6rjg4rjgqws44Oe44K144K3DQor44Oi44Oq44K144KtLOOCouOCseODnw0KK+ODouODquOCvyzjg6jjgqbjgqTjg4ENCivjg6Ljg6rjgr8s44Ko44Kk44K4DQor44Oi44Oq44OkLOODoOODhOOCqg0KK+ODouODquODpOODnizjg5Ljg4fjgqoNCivjg6Ljg4bjgq4s44Of44OE44OS44OtDQor44Oi44OI44KtLOOCr+ODi+ODkuODrQ0KK+ODj+OCruODr+ODqSzjg47jg5bjg6jjgrcNCivjg6DjgqvjgqTjg4As44K344KzDQor44Og44ON44OS44OtLOODkuODh+ODpuOCrQ0KK+ODoOODjeOCq+OCvyzjgqvjgrrjg6jjgrcNCivjg6Djg6njgqvjg58s44OE44Oo44K3DQor44Og44Op44Kr44OfLOODpOOCueODkuODrQ0KK+ODoOODqeOCq+ODnyzjg6TjgrnjgqoNCivjg6Djg6njgrPjgrcs44OS44Ot44KzDQor44Og44Op44Oe44OELOODnuOCteODiA0KK+ODoOODqeODjOOCrSzjgrHjgqTjgrgNCivjg6Djg6njgr8s44Om44Kt44Oi44OIDQor44Og44Op44K/LOODnuOCteOCrQ0KK+ODoOODqeOCvyzjgrvjgqTjgrgNCivjg6Djg6njg6Tjg54s44Oo44K344OP44OrDQor44Ok44Oe44K344K/LOOCouOCreODkuODrQ0KK+ODoOODreOCvyzjg5Ljg63jgqvjgroNCivjg5/jg6fjgqbjgrjjg7Ms44Of44OB44KqDQor44OK44Ks44KkLOODjuODquOCsw0KK+ODiuOCrOODjOODnizjg6bjgq3jgqoNCivjg4rjgqzjgqos44Ko44OqDQor44OK44Ks44Kq44KrLOODn+ODmw0KK+ODiuOCrOOCteODryzjgqvjgqrjg6sNCivjg4rjgqzjgrfjg54s44K/44Kr44K3DQor44OK44Ks44K344OeLOODqOOCt+OCq+OCug0KK+ODiuOCrOOCvyzjg6jjgrfjg6TjgrkNCivjg4rjgqzjgr8s44OB44Ko44KzDQor44OP44K744Ks44OvLOODkuODreOCouOCrQ0KK+OCpOOCrOODqeOCtyzjgqvjgrrjg5Ljg60NCivjg4rjgqzjg6Tjg54s44Kx44Oz44K4DQor44OK44Ks44Oo44K3LOODnuOCteOCq+ODhA0KK+ODiuOCpOODiOOCpizjg57jgrXjgq0NCivjg4rjgqvjg5Djg6Tjgrcs44Oe44K144OO44OqDQor44OK44Kr44Ks44OvLOOCt+ODs+OCpOODgQ0KK+ODiuOCq+OCtOODoSzjgrXjg4jjgrcNCivjg4rjgqvjgrfjg54s44OI44K344Ki44KtDQor44OK44Kr44K444OeLOODpOOCueODnuOCtQ0KK+ODiuOCq+OCuOODnizjg6bjgqbjgrMNCivjg4rjgqvjgrjjg54s44OG44Or44OfDQor44OK44Kr44K444OeLOOCr+ODqeODiA0KK+ODiuOCq+OCuOODnizjg6bjgqbjgrgNCivjg4rjgqvjgq/jgq0s44K344Oz44Kk44OB44Ot44KmDQor44OK44Kr44Oe44OrLOODquOCqw0KK+ODiuOCq+ODn+ODgSzjg5/jgqsNCivjg4rjgqvjg6Ljg4gs44Om44Kt44OS44OtDQor44OK44Kr44Oi44OILOODkuODreOCq+OCug0KK+ODiuOCq+ODouODiCzjg5Ljg63jg6bjgq0NCivjg6/jgr/jg4rjg5ks44OS44Ot44OV44OfDQor44OK44Kr44Og44OpLOODnuOCteODiuODqg0KK+ODiuOCq+ODoOODqSzjgrfjg7PjgqTjg4Hjg63jgqYNCivjg4rjgqvjg6Djg6ks44K744Kk44K4DQor44OK44Kr44Og44OpLOOCq+OCuuODjuODqg0KK+ODiuOCq+ODoOODqSzjg6bjgqbjgrgNCivjg4rjgqvjg6Djg6ks44OG44Or44Om44KtDQor44OP44Ku44Ov44OpLOOCteODiOOCsw0KK+ODiuOCq+ODoOODqSzjg57jgq3jgrMNCivjg4rjgqvjg6Djg6ks44OS44OH44Om44KtDQor44OK44Kr44Og44OpLOODhuODhOODpA0KK+ODiuOCq+ODoOODqSzjgrHjg7Pjgr8NCivjg4rjgqvjg44s44Ok44K544K3DQor44OK44Kr44KqLOODpuOCpuOCsw0KK+ODiuOCq+OCqizjg5Ljg63jg6bjgq0NCivjg4rjgqvjgqrjgqss44OI44Oi44Om44KtDQor44OK44Kr44K344OeLOOCteODiOOCtw0KK+ODi+OCt+OCuOODnizjgr/jgqvjgrcNCivjg4rjgqvjg6Qs44Ov44K/44OrDQor44OK44Kr44Ok44OeLOODkuODreOCtw0KK+ODiuOCq+OCtuODiCzjgqvjg4TjgqLjgq0NCivjg4rjg57jgr/jg6Es44Oe44Oi44OrDQor44OK44Oh44OpLOODouODquODkuODiA0KK+ODiuODiuODnyzjgr/jg4Djg4jjgrcNCivjg4rjg7Pjg5As44K/44Kr44KqDQor44OK44OzLOOCseOCpOOCueOCsQ0KK+ODiuODs+ODnSzjgqLjgq3jg6kNCivjg4rjg6njg5Ys44OS44OH44KtDQor44OK44Oq44OP44OpLOODkuODreODnw0KK+ODiuODquODiOODnyzjg4rjgqrjgq0NCivjg4rjg6vjgrfjg54s44Oe44Kz44OIDQor44OK44K544Kr44OvLOOCuOODpeODs+ODpA0KK+ODiuODiOODqizjgrHjg7Pjg6QNCivjg43jgq7jgrcs44Ko44Of44KzDQor44ON44Oi44OILOOCpOOCuuODnw0KK+ODi+OCqOODgCzjg4jjgqrjg6sNCivjg4vjgqTjgrjjg54s44Oe44Kz44OIDQor44OL44Kk44Kv44OpLOODnuOCteODqw0KK+ODi+OCpOODhOODnizjgrHjg7PjgrgNCivjg4vjgqTjgrbjg68s44Oo44K344OO44OqDQor44OL44K344OALOODkuODreODkuODiA0KK+ODi+OCt+ODgCzjgr/jgrHjgrcNCivjg4vjgrfjg4As44Ko44Kk44K4DQor44OL44K344OALOODkuODh+ODiA0KK+ODkuODgOOCqyzjg6bjgq3jg57jgrUNCivjg4vjgrfjg4As44Ok44K544KqDQor44OL44K344Kr44OJLOOCouODhOOCtw0KK+ODi+OCt+OCq+ODryzjgqjjgqTjgrjjg6UNCivjg4vjgrfjgqvjg68s44OI44Oi44Ki44KtDQor44OL44K344Kr44OvLOODnuOCteODjuODlg0KK+ODi+OCt+ODouODiCzjg5Ljg4fjg6QNCivjg4vjgrfjg6Djg6ks44Oe44K144OO44OqDQor44OL44K344OKLOOCreODqOOCtw0KK+ODi+OCt+ODjizjg5Ljg63jgqvjgroNCivjg4vjgrfjgr8s44Of44KtDQor44OV44Kr44OfLOOCq+OCuuODqA0KK+ODi+OCt+ODr+OCrSzjgr/jgrHjg5LjgrMNCivjg4vjgrfjg6Tjg54s44Kr44OE44K3DQor44OL44K344Ok44OeLOODkuODiOOCtw0KK+ODi+OCt+OCtuODryzjg6jjgrfjg5Ljg60NCivjg4vjg4Pjgr8s44OS44Ot44Oo44K3DQor44OL44Ov44K/LOODm+OCuuODnw0KK+ODi+ODr+ODpOODnizjg4HjgroNCivjg47jgqLjg58s44Kv44OL44KzDQor44OO44Oc44Oq44K/44OGLOODnuODiuODlg0KK+ODjuODgCzjgr/jgqvjg6bjgq0NCivjg47jgqzjg68s44OS44Ot44OkDQor44OO44Kw44OBLOODiOODouOCouOCrQ0KK+ODjuOCsOODgSzjgr/jgqvjgrcNCivjg47jgrjjg6os44OS44Ot44Om44KtDQor44OO44Oi44OILOODpuOCpuOCsw0KK+ODjuODoOODqSzjg5/jgq3jgrMNCivjg4/jg6TjgrXjgqss44Kr44K644OS44OtDQor44OO44Og44OpLOODnuOCteODkuODrQ0KK+ODjuODiCzjgr3jg47jg58NCivjg47jgrbjgq0s44OI44K344OkDQor44Kz44K144KrLOODpOOCueOCtw0KK+OCquODkOODiizjgqLjg6TjgrMNCivjgqrjg4Es44Oe44K144OG44OrDQor44Kq44OALOODj+ODq+ODjuODlg0KK+OCquOCrOOCteODr+ODqSzjgqvjgrrjg4bjg6sNCivjgqrjgqzjgr8s44OS44Ot44Ok44K5DQor44Kv44KtLOODpuOCv+OCqw0KK+OCquOCq+ODgCzjg5Ljg63jgqLjgq0NCivjgqrjgqzjg68s44OS44Ot44Om44KtDQor44Kq44Ks44OvLOODnuOCteODpuOCrQ0KK+OCquOCrOODryzjg6Tjgrnjg47jg6oNCivjgqrjgq7jg4/jg6ks44Kr44K644OI44K3DQor44Kq44Ku44OOLOOCs+OCpuOCpOODgQ0KK+OCquODlizjg5/jgqsNCivjgqrjgqrjg4/jg6ks44K/44OA44OS44KzDQor44OP44Oe44Oi44OILOODpOOCueOCsw0KK+OCquOCquODj+ODqSzjg6bjgqbjgrgNCivjgqrjg4/jgrcs44K144OI44K3DQor44Kq44Kq44Kr44OvLOODnuOCteODiA0KK+OCquOCquOCr+ODnCzjg57jgrXjgqLjgq0NCivjgqrjgqrjg5/jg6Qs44K744Kk44K4DQor44Kq44Kq44Oi44OqLOODhuODhOODpA0KK+OCquODoOODqSzjg6rjg6fjgqbjgqTjg4ENCivjgqrjgqrjg4vjgrcs44Oe44K144K/44KrDQor44Kq44Kq44OOLOODkuODreODpOOCuQ0KK+OCquOCquODjOOCrSzjgqvjgrrjgqoNCivjgqrjgqrjgrXjgq0s44K144OI44K3DQor44Kq44Kq44K144KtLOODpuOCpuOCsw0KK+OCquOCquOCteODryzjgrfjg63jgqYNCivjgqrjgrfjg54s44K/44Kx44K3DQor44Kq44K344OeLOOCv+OCq+OCqg0KK+OCquOCt+ODnizjg4Tjg4jjg6ANCivjgqrjgqrjgr8s44Ok44K544KqDQor44Kq44Kq44K/LOODjuODluODkuODrQ0KK+OCquOCquOCvyzjg5/jgqsNCivjgqrjgqrjgr8s44OS44Ot44K3DQor44Ki44Oz44OJ44KmLOOCseODs+OCpOODgQ0KK+OCquOCv+OCqyzjgr/jgqvjgqLjgq0NCivjgqrjgqrjgr/jgq0s44OV44OI44K3DQor44Kq44Kq44K/44OLLOOCq+OCuuODkuOCsw0KK+OCquOCquOCv+ODiyzjg47jg6rjg5LjgrUNCivjgqrjgqrjgr/jg4ss44Oe44K144Kr44K6DQor44OP44Ok44K3LOODpuOCreOCsw0KK+OCquOCquODhOODnCzjgr/jgrHjg5LjgrUNCivjgqrjgqrjg4Tjgqss44Oo44K344OO44OqDQor44Kq44Kq44OE44KrLOOCqOOCpOOCrQ0KK+OCquOCquODhOOCqyzjgqLjg4TjgrcNCivjg4/jg6Tjgrcs44Ko44Of44KzDQor44Kq44Kq44OE44OrLOODn+ODgeOCqA0KK+OCquODleODgSzjg4jjgrfjgrMNCivjgqrjgqrjg68s44K/44Kx44K3DQor44Kq44Kq44OkLOODoOODjeOCqg0KK+OCquOCuOOCqizjg5Xjg5/jg47jg5YNCivjgqrjgqss44Oe44K144OI44K3DQor44Kq44Kr44OZLOOCouODpuODoA0KK+OCquOCq+ODgCzjg57jgrXjgq0NCivjgqrjgqvjg4As44K/44Kr44OkDQor44Kq44Kr44OALOODiOOCquODqw0KK+OCquOCq+ODgCzjg5Ljg63jg6bjgq0NCivjgqrjgqvjg6Ljg4gs44K/44Kr44Om44KtDQor44Kq44Kr44Oi44OILOODpuOCpg0KK+OCquOCq+ODouODiCzjg4jjg6Ljg6bjgq0NCivjgqrjgqvjg6Djg6ks44OS44Ot44Kv44OLDQor44Kq44Kr44Og44OpLOOCseOCpOOCpOODgQ0KK+OCquOCq+OCtuOCrSzjg5Ljg63jg4jjgrcNCivjgqrjgqvjgrbjgq0s44Kz44Km44K/44Ot44KmDQor44Kq44Kt44OOLOOCq+OCquODqw0KK+OCquOCr+ODgCzjg4/jgrjjg6ENCivjgqrjgq/jg4As44Oe44K144OO44OqDQor44Kq44Kv44Ks44OvLOOCuOODpeODs+OCpOODgQ0KK+ODj+OCruODj+ODqSzjgrHjg7PjgrgNCivjgqrjgq/jgqbjg4Es44Og44ON44K3DQor44Kq44Kq44OfLOOCouODpOOCsw0KK+OCquODoOODqSzjg5Ljg4jjgrcNCivjgqrjg7Pjg4As44Kr44K644OS44OtDQor44Kq44Kq44OOLOODpuOCv+OCqw0KK+OCquOCquODjizjg5Ljg6fjgqbjgr7jgqYNCivjgqrjgqrjg44s44Of44OO44OrDQor44Kq44Kq44OOLOOCt+ODpeODs+OCueOCsQ0KK+OCquODjuODh+ODqSzjg57jgrXjg5LjgrMNCivjgqrjg47jg4fjg6ks44Oo44K344OO44OqDQor44Kq44OO44OH44OpLOODiOOCt+OCqg0KK+OCquODjuODoOODqSzjg5/jg47jg6sNCivjgqrjg47jgrbjg68s44K344Oz44OkDQor44Kq44Kq44OM44KtLOODhuODhOODreOCpg0KK+OCquODjizjgr/jgqvjgqLjgq0NCivjgqrjgqrjg6Tjg54s44OS44OI44K3DQor44Kq44Oq44OJLOODkuODh+OCouOCrQ0KK+OCquODquOCt+OCreODgCzjgrPjgqbjgqTjg4ENCivjgqrjgqrjgrXjgqss44K/44OA44KqDQor44Kq44Ok44OeLOOCv+OCpOODgQ0KK+OCquOCtuOCrSzjgr/jg4Tjg6QNCivjgqrjgrbjgq0s44Oo44K344Oe44K1DQor44Kq44K244OvLOODpuOCpuOCueOCsQ0KK+OCs+OCtuODryzjg5Ljg63jgrcNCivjgqrjgrbjg68s44Oe44K144OP44OrDQor44Kq44K244OvLOOCv+OCseOCtw0KK+ODj+OCv+ODiuOCqyzjg5/jg4Tjg5Ljg60NCivjgrXjgqjjgq0s44Oq44On44Km44KzDQor44K144Kk44OALOODouODouOCsw0KK+OCteOCpOOCsOOCtSzjg5Ljg63jgrcNCivjg4/jg7Pjg4As44K/44Kx44K3DQor44K144Kk44OI44KmLOODpOOCueODiOODog0KK+OCteOCpOODiOOCpizjg57jgrXjg5LjgrUNCivjgrXjgqTjg4jjgqYs44K344Ky44OS44OIDQor44K144Kr44OBLOODnuOCteOCqg0KK+OCteOCq+OCsOODgSzjgrPjgqbjgrgNCivjgrXjgqvjgqQs44Of44OO44OrDQor44K144Kr44KkLOOCs+OCpuOCvuOCpg0KK+ODkuODqeODjizjgqLjgq3jg5Ljg60NCivjgrXjgqvjgqQs44Ki44Kt44OpDQor44K144Kr44KkLOODkuODreODnw0KK+OCteOCq+OCpCzjg5/jgq3jgqoNCivjgrXjgqvjgqQs44OK44Kq44KtDQor44K144Kr44Oi44OILOOCv+OCq+OCtw0KK+OCteOCq+ODouODiCzjg6Tjgrnjg5Ljg60NCivjg5Ljg63jgrss44Oo44K344Ki44KtDQor44K144Kr44Oi44OILOODqOOCpuOCreODgQ0KK+OCteOCq+OCvyzjg4jjg6LjgrgNCivjgq3jgrfjg4As44OS44Ot44Ki44KtDQor44K144KzLOOCouOCq+OCtw0KK+OCteOCr+ODnizjg57jgrXjg6sNCivjgrXjgq/jg6njg5As44Ko44OfDQor44K144Kv44Op44KkLOODj+ODq+ODnw0KK+OCteOCr+ODqeODpOODnizjg5Ljg63jgrcNCivjgrXjg6Hjgrfjg54s44Kr44K644Oo44K3DQor44K144Oz44OZLOODnuOCs+ODiA0KK+OCteODq+ODr+OCv+ODqizjg57jgrXjgq0NCivjg4/jgrvjgqzjg68s44Oe44K144OIDQor44K144K144KoLOODiuOCquOCrQ0KK+OCteOCteODj+ODqSzjg6rjg6fjgqbjgrgNCivjgrXjgrXjgq0s44K/44Kr44Oe44K1DQor44K144K144KtLOOCv+OCq+OCtw0KK+OCteOCteOCrSzjg6bjgr/jgqsNCivjgrXjgrXjgq0s44Om44Kt44KzDQor44OP44OT44OtLOODpuOCv+OCqw0KK+OCteOCteOCqizjgqvjgrrjgrfjgrINCivjgrXjgrXjgqrjgqss44OI44Oi44KzDQor44K144K144K/44OLLOODqOOCt+ODnw0KK+OCteOCvyzjg4jjg6Ljg58NCivjgrXjgr/jgrEs44OI44K344KtDQor44K144OI44KmLOOCuOODpeODsw0KK+ODm+OCt+ODjizjgrHjgqTjgrgNCivjgrXjg4jjgqYs44Oe44K144OP44OrDQor44OP44OD44OI44OqLOOCt+ODs+ODpA0KK+OCteODiOOCpizjg4jjgqrjg6sNCivjgrXjg4jjgqYs44K344Ky44KtDQor44K144OI44KmLOODpuOCreOCv+OCqw0KK+OCteODiOOCpizjg6rjg6fjgqbjgqTjg4ENCivjgrXjg4jjgqYs44K/44OE44KtDQor44K144OI44KmLOOCseOCpOOCuA0KK+OCteODiOOCpizjg57jg6rjgqoNCivjgrXjg4jjgqYs44OI44K344Ki44KtDQor44K144OI44KmLOOCseOCpOOCpOODgQ0KK+ODkuODqeODjizjg5Ljg63jgqLjgq0NCivjgrXjg4jjgqYs44OS44Ot44Om44KtDQor44K144OI44KmLOODpOOCueODjuODqg0KK+OCteODr+ODgCzjgrHjgqTjgqTjg4ENCivjgrXjg6/jg4As44Kz44Km44OY44KkDQor44K144Ov44OV44K4LOOCv+OCq+ODkuODrQ0KK+OCteODr+OCrSzjgrPjgqbjg5jjgqQNCivjgrXjg6/jg6Djg6ks44OS44Ot44K3DQor44K744Ks44OvLOOCt+ODs+OCv+ODreOCpg0KK+OCu+OCrOODryzjgqvjgrrjgq0NCivjgrvjgq0s44Oq44OE44KzDQor44K744KtLOOCv+OCpOODgQ0KK+OCu+OCreOCsOODgSzjg5LjgrXjgrcNCivjgrvjgq3jg40s44Kr44K644Ki44KtDQor44K744Kt44ONLOOCq+ODhOODnw0KK+ODkuODqeODjizjgqjjgqTjgqTjg4ENCivjgrvjg7PjgrTjgq8s44Ok44K544K3DQor44K744KqLOODkuODreOCtw0KK+OCu+ODqSzjgr/jg4DjgrcNCivjgrvjg6ks44OS44Ot44Kr44OEDQor44K344OQ44OP44OpLOOCq+OCuuODjg0KK+OCt+ODkOOCvyzjgqvjgrrjg5LjgrMNCivjgrfjg5Djgr8s44OI44Oi44OS44OtDQor44OP44K744Ks44OvLOODiOODouODn+ODhA0KK+OCt+ODkOOCvyzjg6bjgr/jgqsNCivjgrfjg5Djgr8s44Oe44K144K/44KxDQor44K344OQ44K/LOODnuOCteODpuOCrQ0KK+OCt+ODkOOCtuOCrSzjg57jgrXjgrMNCivjgrfjg5bjgr/jg4ss44OI44Oi44OP44OrDQor44K344OW44OkLOODiOODouOCq+ODhA0KK+OCt+ODgeODkuODp+OCpizjgq3jg5/jgqLjgq0NCivjgrfjgq0s44Oe44K144OrDQor44K344Kt44K344OeLOOCv+OCseOCtw0KK+OCt+ODnizjgqLjgq3jgrMNCivjgrfjg54s44Kz44K544KxDQor44K344Oe44OALOOCq+ODhOODkuODrQ0KK+OCt+ODnuODjOOCrSzjgr/jgqvjgrcNCivjgrfjg57jgqrjgqss44Ok44K544K/44KrDQor44K344Oe44K344K/LOODiuOCquODkuODrQ0KK+OCt+ODnuOCuizjgrHjgqTjgqTjg4ENCivjgrfjg5/jgros44OS44OH44KtDQor44K344Of44K6LOOCseOCpOOCueOCsQ0KK+ODj+OCu+OCrOODryzjg4HjgqjjgrMNCivjgrfjg5/jgros44Oe44K144KqDQor44K344Of44K6LOODpuODquOCsw0KK+OCt+ODn+OCuizjgqvjgrrjg5LjgrUNCivjgrfjg6LjgqzjgqQs44OI44K344KzDQor44K344Oi44Kr44Ov44OZLOOCouOCreODkuODrQ0KK+OCt+ODouOCquOCqyzjgqLjgq3jg5Ljg60NCivjgrfjg6LjgrXjgqss44OS44OH44Om44KtDQor44K344Oi44Ok44OeLOODhuODhOODpA0KK+OCt+ODs+ODnOODqizjg5Ljg63jgqgNCivjgrfjg47jg4/jg6ks44OK44Kq44K/44KrDQor44K344OO44OP44OpLOODkuOCteODiOOCtw0KK+OCt+ODjuOCtuOCrSzjg5Ljg63jgrcNCivjgrfjg47jgrbjgq0s44Oo44K344KzDQor44K344OO44K644KrLOOCseODs+OCpOODgQ0KK+OCt+ODs+ODpCzjg5Ljg4fjgrMNCivjgrfjgqrjgr8s44K444Ol44Oz44Kt44OBDQor44K344Kq44K/44OLLOOCseODs+OCuA0KK+OCt+OCquODpCzjg4jjgqrjg6sNCivjgrfjg6njg4/jg54s44Of44OB44OS44K1DQor44K344Op44KkLOODn+OCqw0KK+OCt+ODqeOCpOOCtyzjg5/jgrUNCivjgrfjg6njgqTjgrcs44Ok44K544OS44OIDQor44K344Op44Kk44K3LOODhOODiOODoA0KK+OCt+ODqeOCrSzjgrHjgqTjgrnjgrENCivjgrfjg6njgrXjgq0s44Kr44K644Om44KtDQor44K344On44Km44OK44K0LOOCv+OCq+OCt+OCsg0KK+OCquOCquODpOODnizjg5/jgqsNCivjgrfjg6Xjg4jjgqYs44OS44Ot44KtDQor44K344Oi44Kk44K6LOODqOODquODiA0KK+OCveOCqOODgCzjgr/jgq/jg58NCivjg5vjg6rjg44s44OS44Ot44Kr44OEDQor44K944OI44K444OeLOODleODiOOCtw0KK+OCueODgCzjg6HjgqTjgrjjg63jgqYNCivjgrnjg4As44Kz44Km44KzDQor44K544OJ44KmLOODkuODh+ODkuODiA0KK+OCueOCrCzjg4/jgrjjg6ENCivjgrnjgqzjg4zjg54s44OS44Ot44Kr44K6DQor44K544Ks44Ov44OpLOOCseOCpA0KK+OCueOCruODkOODpOOCtyzjg57jgrXjg4jjgrcNCivjgrnjgq7jg6Ljg4gs44Of44KrDQor44K544Ku44Oi44OILOODjuODluOCsw0KK+OCueOCruODoOODqSzjg47jg6rjg5LjgrMNCivjgrnjgq7jg44s44K144OI44OrDQor44K544Ku44K144KtLOOCt+ODs+OCpOODgQ0KK+OCueOCruOCteODryzjgr/jgqvjgqoNCivjgrnjgq7jgr8s44K/44Kr44Om44KtDQor44OP44Ok44K3LOOCv+ODnw0KK+OCueOCruOCpuODqSzjg4jjgqrjg6sNCivjgrnjgq7jg6Tjg54s44OI44K344OkDQor44K544Ku44Ok44OeLOOCt+ODs+OCuA0KK+OCueOCtCzjg6TjgrnjgqoNCivjgrnjgqTjgr8s44Oo44K344OS44K1DQor44K544Of44OALOOCouODhOOCtw0KK+OCueODn+OCq+ODryzjgrXjg4jjgrcNCivjgrnjg4rjgqws44OI44Kq44OrDQor44K544OO44OP44OpLOODnuOCteODnw0KK+OCueOCuuOCrSzjgqLjgq3jg6kNCivjgrnjgrrjgq0s44OI44Oi44Om44KtDQor44K544K644KtLOODqOOCt+ODpuOCrQ0KK+OCueOCuuOCrSzjg57jgrXjg5Xjg58NCivjgrnjgrrjgq0s44K344On44Km44K0DQor44K544K644KtLOOCv+OCseODkuODrQ0KK+OCueOCuuOCrSzjg6jjgrfjg47jg6oNCivjgrnjgrrjgq0s44Kr44K644OVDQor44K544K644KtLOOCouOCreOCsw0KK+OCueOCuuOCrSzjgqvjg4Tjg5LjgrMNCivjgrnjgrrjgq0s44K344Ky44OrDQor44Ok44Oe44Kr44OvLOOCv+ODhOOCqg0KK+OCueOCuuOCrSzjgqLjgrXjgrMNCivjgrnjgrrjgq0s44Ki44Kt44OS44KzDQor44OP44KsLOODkuODreOCq+OCug0KK+OCueOCuuOCrSzjgqTjgrXjg4gNCivjgrnjgrrjgq0s44Kr44Kq44OqDQor44K544K644OOLOOCq+ODhOODleODnw0KK+OCt+ODpeODiOOCpizjgq/jg4vjg5Ljg4cNCivjgr/jg5Djg6ks44Oe44KzDQor44K/44OALOODnuOCteODqw0KK+ODj+ODquOCrOOCpCzjgr/jgqvjg47jg5YNCivjgr/jg4As44Oe44K144Om44KtDQor44K/44Ks44K344OpLOODn+ODiuOCsw0KK+OCv+OCsOODgSzjg5/jg6bjgq0NCivjgr/jgrDjg4Es44OO44OW44Ki44KtDQor44K/44K444OeLOOCt+ODs+OCuA0KK+OCv+OCuOODnizjgrfjg7PjgrgNCivjg5vjg4Pjgr8s44K344Ol44Oz44Kk44OBDQor44K/44Kr44OALOODiOODouODjuODqg0KK+OCv+OCq+OCrizjg4jjgrfjgqvjgroNCivjgr/jgqvjgq4s44Oo44Km44Kk44OBDQor44K/44Kr44KuLOODpuOCpuOCsw0KK+OCv+OCq+ODj+OCtyzjgqjjgqTjgrMNCivjg4/jgrfjgrDjg4Es44OS44Ot44Ki44KtDQor44K/44Kr44OP44K3LOODkuODreOCtw0KK+OCv+OCq+ODj+OCtyzjg4rjgqrjg58NCivjgr/jgqvjg4/jgrcs44OS44Ot44Of44OBDQor44K/44Kr44OP44K3LOOCq+ODhOODiOOCtw0KK+OCv+OCq+ODj+OCtyzjgqvjgrrjgrMNCivjgr/jgqvjg4/jgrcs44Kr44K644KqDQor44K/44Kr44OP44K3LOODiOODouODkuODrQ0KK+ODj+OCu+OCrOODryzjg4bjg6vjgqoNCivjgr/jgqvjg4/jgrcs44Kx44Oz44K/44Ot44KmDQor44K/44Kr44OP44K3LOODkuODh+ODjuODqg0KK+OCv+OCq+ODj+OCtyzjgqvjg4Tjg58NCivjgr/jgqvjg4/jgrcs44K344Oz44Kk44OBDQor44K/44Kr44OP44K3LOODqOOCt+ODn+ODhA0KK+OCv+OCq+ODj+OCtyzjgqvjgrrjg5Ljg60NCivjgr/jgqvjg4/jgrcs44Kk44OB44K/44Ot44KmDQor44K/44Kr44OP44K3LOOCouODhOODjuODqg0KK+OCv+OCq+ODj+OCtyzjgrHjg7PjgqTjg4ENCivjgr/jgqvjg4/jgrcs44OV44K144OS44KzDQor44Kq44Kq44OfLOOCseODs+OCuA0KK+OCv+OCq+ODkuODqSzjg5/jg47jg6sNCivjgr/jgqvjgqQs44Oo44K344OI44OiDQor44K/44Kr44Of44OkLOOCs+OCpuOCuA0KK+OCv+OCq+ODiuOCtyzjg6rjg5sNCivjgr/jgqvjg44s44Of44Kt44KzDQor44K/44Kr44OOLOODqOOCt+ODkuODrQ0KK+OCv+OCq+ODjizjgr/jg57jg6gNCivjgr/jgqvjg44s44Oo44K344OS44OIDQor44K/44Kr44OOLOOCouOCreODkuODrQ0KK+ODj+ODpOOCq+ODryzjg6Ljg4jjg5Ljg60NCivjgr/jgqvjgrfjg54s44K/44OA44K3DQor44K/44Kr44K5LOOCq+ODhOODjuODqg0KK+OCv+OCq+ODiOOCpuODqizjg5Ljg4fjg5LjgrMNCivjgr/jgqvjg4jjg6os44OV44K144OfDQor44K/44Kr44OkLOODjuODquOCouOCrQ0KK+OCv+OCsSzjgqLjgq3jg5Ljg60NCivjgr/jgrHjg4As44K744Kk44K4DQor44K/44Kx44OALOOCpOOCuuODnw0KK+ODm+ODqizjgrPjgqbjgr7jgqYNCivjgr/jgrHjg4As44K344Oz44Kk44OBDQor44K/44Kx44OP44OpLOODkuOCq+ODqw0KK+OCv+OCseOCpCzjgrfjg7PjgqTjg4ENCivjgr/jgrHjg6Ljg4gs44Ki44KtDQor44K/44Kx44Oi44OILOOCouOCreOCueOCsQ0KK+OCv+OCseODiuOCqyzjgrHjg7PjgqTjg4ENCivjg4/jg6Tjgrcs44Oe44K144OS44KzDQor44K/44Kr44KuLOODnuOCteOCrQ0KK+OCv+OCseODiOODnyzjg57jgrXjg47jg6oNCivjgr/jgrHjgqbjg4Es44Of44ObDQor44K/44Kx44Km44OBLOODn+ODhOOCqg0KK+OCv+OCseOCpuODgSzjg47jg5bjg6jjgrcNCivjgr/jgrHjg6Tjgrks44Os44Kk44K4DQor44K/44Kx44K244OvLOODquODp+OCpuOCuA0KK+OCv+OCreODkCzjgrXjg4jjgrcNCivjgr/jgq/jg5ws44K/44Kr44OO44OqDQor44OP44OL44Ol44KmLOODhOODqOOCtw0KK+OCv+ODnuODqOODqizjg6bjgqbjgrMNCivjgr/jg6Ljg4Qs44Om44Km44K/DQor44K/44Og44OpLOODkuODreODpuOCrQ0KK+OCv+ODoOODqSzjgqLjgrHjg58NCivjgr/jg6Djg6ks44Ki44Kt44OpDQor44K/44OK44OZLOODpOOCueODjuODqg0KK+OCv+ODiuODmSzjg5Ljg4fjg5LjgrMNCivjgr/jg4rjgqss44OS44Ot44Om44KtDQor44K/44OK44KrLOODqOOCt+ODpuOCrQ0KK+OCv+ODiuOCqyzjgrPjgqbjgqTjg4ENCivjgr/jg4rjgqss44Ki44OE44K3DQor44K/44Kx44OALOODqOOCt+OCsw0KK+OCv+ODiuOCqyzjgr/jg4DjgrcNCivjg4/jgrvjgqzjg68s44Oe44K144OrDQor44K/44OK44KrLOODkuODh+ODpuOCrQ0KK+OCv+ODiuOCqyzjgr/jgqvjg6jjgrcNCivjgr/jg4rjgqss44Oe44OK44OWDQor44K/44OK44KrLOOCq+ODhOOCrQ0KK+OCv+ODiuOCqyzjg57jgrPjg4gNCivjgr/jg4rjgqss44Om44Km44KzDQor44K/44OK44KrLOOCs+OCpuOCpOODgQ0KK+OCv+ODiuOCqyzjg6jjgrfjgqoNCivjgr/jg4rjgqss44OI44Kq44OrDQor44K/44OLLOODkuODreOCsw0KK+ODn+OCv+ODiyzjg5jjgqTjgrQNCivjgr/jg4vjgrDjg4Es44OS44OH44Ki44KtDQor44OP44OD44OI44OqLOODkuODreOCsw0KK+OCv+ODi+OCsOODgSzjgrHjg7PjgqTjg4ENCivjgr/jg4vjgrDjg4Es44Om44Km44KzDQor44K/44OL44Kw44OBLOOCq+ODhOODkuOCsw0KK+OCv+ODi+OCq+ODryzjgrHjg7PjgrcNCivjgr/jgrXjgqss44Oe44Kz44OIDQor44K/44K344OeLOOCseOCpOOCueOCsQ0KK+OCv+ODhuOCq+ODryzjg57jgrXjg6sNCivjgr/jg4bjg44s44Kz44Km44K4DQor44OG44Op44K444OeLOODj+OCuOODoQ0KK+ODhuODqeODnuOCqCzjgrvjgqTjgqTjg4Hjg63jgqYNCivjg4bjg6njgrXjg68s44Oe44Kz44OIDQor44OG44Op44Ok44OeLOODn+ODqOOCsw0KK+ODhuOCt+ODnizjgqjjg4Tjg57jgrUNCivjg4jjg4As44Oi44OI44Om44KtDQor44OI44OI44OfLOOCv+OCseODkuOCsw0KK+ODiOOCquODpOODnizjg6bjgq3jg5LjgrMNCivjg4jjgq3jg68s44OB44Ko44KzDQor44OV44Kv44Ok44OeLOOCseODs+OCuA0KK+ODiOOCr+OCtuODryzjg57jgrXjg6sNCivjg4jjg5/jg4rjgqws44Kz44Km44K4DQor44OI44Of44K/LOODkuODh+OCtw0KK+ODiOODn+ODpOODnizjgqvjgrrjg47jg6oNCivjgrXjg6/jg6Djg6ks44K/44OE44OfDQor44OI44Oq44K044KoLOOCteODgOODpuOCrQ0KK+ODiOODquOCv+ODiyzjg5Ljg4fjg47jg6oNCivjg4jjgrXjgqss44K344Ol44Km44K4DQor44OE44Oc44KkLOODnuOCteODkuOCsw0KK+ODkuODqeODkOODpOOCtyzjg4jjg6Ljg4rjg6oNCivjg4Tjg4Hjg4As44OS44Ot44Om44KtDQor44OE44OB44K/44OLLOODkuODh+OCrQ0KK+ODhOODgeODpCzjgrfjgrLjg4gNCivjg4Tjg4As44OS44Ot44K3DQor44OE44OALOOCouODhOODqOOCtw0KK+ODhOOCuCzjg5Ljg63jgrcNCivjg4TjgrjjgqQs44Kr44K644KqDQor44OE44K444Og44OpLOODiuODq+ODiA0KK+ODhOOCuOODoOODqSzjgr/jgqvjgrcNCivjg4Tjgrjjg44s44K344Ol44Km44Kk44OBDQor44OE44K444K144OvLOODpuODnw0KK+ODhOOCq+ODgCzjgr/jgqTjgr7jgqYNCivjg4Tjgqvjg4/jg6ks44OG44OE44KqDQor44OE44Kr44Oi44OILOODpOOCueOCrQ0KK+ODhOOCq+ODouODiCzjg6jjgrfjg58NCivjg4Tjgqvjg6Ljg4gs44Kx44Oz44K/44Ot44KmDQor44OE44ON44OALOODnuOCteODkuODrQ0KK+ODhOODjuODgCzjgr/jgrHjgrcNCivjg4Tjg47jg4As44Kx44Oz44Kk44OB44OtDQor44OE44Or44Oe44OrLOOCv+OCq+OCtw0KK+ODhOOCteOCqyzjgrHjg7MNCivjg4Tjg4TjgqQs44K/44Kr44K344KyDQor44OE44OE44OfLOODnuOCteODjuODqg0KK+ODhOODhOODnyzjg57jgrXjg4/jg6sNCivjg4Tjg4Tjg5/jg4/jg6ks44K/44Kr44KqDQor44Km44OB44OALOODnuOCs+ODiA0KK+OCpuODgeODgCzjgrXjg4Djg6bjgq0NCivjg4/jg6Tjgrcs44K/44Kr44Om44KtDQor44Km44OB44OALOOCv+ODhOODpA0KK+OCpuODgeODjizjgrXjg4jjgrcNCivjgqbjg4Hjg6Tjg54s44Ki44Ok44OODQor44Km44OA44Ks44OvLOOCt+ODs+OCpOODgQ0KK+OCpuOCqOODgCzjg5Ljg63jg6bjgq0NCivjgqbjgqjjg4As44Kx44Oz44K4DQor44Km44Ko44OALOOCv+OCseOCtw0KK+ODjeOCuizjg4jjgrfjgqLjgq0NCivjgqbjgqjjg6Djg6ks44K144OI44K3DQor44Km44Ko44Og44OpLOOCt+ODp+OCpuOCvw0KK+OCpuOCqOODoOODqSzjgrHjg7PjgqTjg4ENCivjgqbjgqjjg44s44K344Oz44OkDQor44Km44Ko44OOLOODiOODouODleODnw0KK+OCpuOCqOOCteODryzjg4jjgrfjg5Ljg60NCivjgqbjgqjjg4Tjg5ws44Oo44K344K/44KrDQor44Km44Ko44OE44KtLOODqOOCt+ODhuODqw0KK+OCpuOCseODjizjg6bjgqbjgrnjgrENCivjgqbjg57jg4/jgrcs44OS44OH44OV44OfDQor44Km44Oh44OALOODpOOCueOCv+OCqw0KK+OCpuODoeODoOODqSzjgqvjgqrjg6sNCivjgqbjg5/jg4As44Kz44Km44Kt44OBDQor44Km44Kq44K644OfLOOCteODs+ODmuOCpA0KK+OCpuODqeOCvyzjgrvjg7Pjgr8NCivjgqbjgrfjgq/jgrUs44OI44K344Om44KtDQor44Km44K544OK44OfLOOCuOODpeODsw0KK+ODr+ODgCzjgrjjg6Xjg7PjgqTjg4ENCivjg6/jg4As44Kr44Kq44OqDQor44Ov44OALOODn+OCrQ0KK+ODr+ODgCzjg5/jg4Tjg47jg6oNCivjg6/jgqvjgrss44K144OI44Oo44K3DQor44Ov44KtLOOCv+ODgOOCtw0KK+ODr+OCv+ODiuODmSzjgr/jgrHjgrcNCivjg6/jgr/jg4rjg5ks44OI44Oi44Ki44KtDQor44Ov44K/44OK44OZLOODqOOCt+ODkuOCtQ0KK+ODr+OCv+ODiuODmSzjg4bjgqTjgrgNCivjg6/jgr/jg4rjg5ks44Oo44K344KtDQor44Ov44K/44OK44OZLOODqOOCt+ODpuOCrQ0KK+ODr+OCv+ODiuODmSzjgqvjgrrjg4gNCivjg6/jgr/jg4zjgq0s44Oo44K344OS44K1DQor44Ov44K/44OM44KtLOODkuODh+OCqg0KK+ODr+OCv+ODqizjg5Ljg63jg5/jg4QNCivjg4/jgrfjgrDjg4Es44K444Ol44Oz44OkDQor44Ok44OWLOOCs+OCpuOCuA0KK+ODpOOCruODjOODnizjg5/jg4TjgqLjgq0NCivjg6Tjgrjjg54s44OK44Kq44KtDQor44Ok44Oe44OALOOCt+OCsuODleODnw0KK+ODpOODnuODgCzjg6jjgrfjgr/jgqsNCivjg6Tjg57jg4As44Om44Km44K544KxDQor44Ok44Oe44OALOODpuOCpuOCsw0KK+ODpOODnuODgCzjgqLjgq3jgqLjg4QNCivjg6Tjg57jg4As44Ki44Kt44OpDQor44Ok44Oe44OALOODgeOCqA0KK+ODpOODnuODgCzjg5Ljg63jgrMNCivjg6Tjg57jg4As44Kr44K644OfDQor44Ok44Oe44OALOODnuOCteODqOOCtw0KK+ODkuOCteODjizjg6rjgqsNCivjg6Tjg57jg4As44K144OI44K3DQor44Ok44Oe44OALOOCteODpOOCqw0KK+ODpOODnuODleOCuCzjgr/jg4Tjg6QNCivjg6Tjg57jgq7jg68s44Ok44K544OS44KzDQor44Ok44Oe44Kw44OBLOODpOOCueODkuODrQ0KK+ODpOODnuOCsOODgSzjg6jjgrfjg5Ljg60NCivjg6Tjg57jgrDjg4Es44OO44Oq44Om44KtDQor44Ok44Oe44Kw44OBLOODpuOCpA0KK+ODpOODnuOCsOODgSzjgqTjgrXjgqoNCivjg6Tjg57jgrDjg4Es44OG44OE44OkDQor44Ok44Oe44Kw44OBLOOCv+OCseODj+ODqw0KK+ODpOODnuOCsOODgSzjgqLjgq3jg6kNCivjg6Tjg57jgrDjg4Es44K/44Kr44OS44OtDQor44Ok44Oe44Kr44OvLOODpuOCreOCsw0KK+ODpOODnuODouODiCzjg5Ljg63jgrcNCivjg6Tjg57jg6Ljg4gs44Kr44OK44KzDQor44Of44K644K/44OLLOOCreODn+OCqg0KK+ODpOODnuODouODiCzjg5/jg4njg6oNCivjg6Tjg57jg6Ljg4gs44Of44OE44OS44OtDQor44Ok44Oe44Oi44OILOODqOODjuOCueOCsQ0KK+ODpOODnuODouODiCzjg4rjgqrjg4gNCivjg6Tjg57jg6Ljg4gs44K/44Kr44K3DQor44Ok44Oe44Oi44OILOOCq+ODhOOCuA0KK+ODpOODnuODouODiCzjgqvjgroNCivjg6Tjg57jg6Ljg4gs44Kr44K644Ki44KtDQor44Ok44Oe44Oi44OILOODkuODiuOCsw0KK+ODpOODnuODouODiCzjgrfjg7PjgqTjg4ENCivjg6Tjg57jg40s44Oe44Kz44OIDQor44Ok44Oe44ONLOODpOOCueODkuOCtQ0KK+ODpOODnuOCt+OCvyzjg4jjgrfjgqoNCivjg6Tjg57jgrfjgr8s44Kr44K644OS44K1DQor44OP44Oz44OALOOCpOOCteOCqg0KK+ODpOODnuOCpuODgSzjg6jjgrfjg6QNCivjg6Tjg57jgqbjg4Es44K344Oz44Kk44OB44Ot44KmDQor44Ok44Oe44Km44OpLOOCv+OCq+OCtw0KK+ODpOODnuOCtuOCrSzjg5Ljg63jg4gNCivjg6Tjg57jgrbjgq0s44Kr44K644Oo44K3DQor44Ok44Oe44K244KtLOOCseODs+OCpOODgQ0KK+OCv+ODoOODqSzjg57jgrXjg4jjgrcNCivjg6Tjg57jgrbjgq0s44K144OI44K3DQor44Ok44Oe44K244KtLOOCv+OCq+OCqg0KK+ODpOODnuOCvuOCqCzjgr/jgqvjgrcNCivjg6Tjg4rjgq7jgrXjg68s44Om44Of44KzDQor44Ok44OOLOOCv+OCseOCtw0KK+ODpOOCueODgCzjg5Ljg4fjgq0NCivjg6Tjgrnjg4/jg6ks44Kx44Kk44KzDQor44Kz44K344Oi44OILOODouODiA0KK+ODj+OCruODr+ODqSzjg5/jgq3jgqoNCivjg6jjgrPjgr8s44OG44Or44OS44K1DQor44Oo44Kz44Ok44OeLOOCv+OCseOCtw0KK+ODqOODouODgCzjgqLjgq3jg6kNCivjg6jjg4rjgqws44K144OI44K3DQor44Oo44ON44OALOODkuODreOCv+OCsQ0KK+ODqOODjeODpOODnizjgrXjg4Hjg6gNCivjg6jjg43jgrbjg68s44Ko44OqDQor44Oo44ON44K244OvLOODiOODouODkuOCtQ0KK+ODqOOCt+ODgCzjg57jg6bjg58NCivjg6jjgrfjg4As44OG44Or44Ok44K5DQor44Oo44K344OALOOCq+ODhOODkuODrQ0KK+ODqOOCt+ODgCzjg57jgrXjg4gNCivjg6jjgrfjg4As44Ki44Kt44OS44K1DQor44Oo44K344OALOOCteODgeOCsw0KK+ODqOOCt+ODgCzjgrHjg7PjgrQNCivjg6jjgrfjg4As44Kt44Oo44OS44OIDQor44Oo44K344Kw44OBLOODjuODluOCsw0KK+ODqOOCt+OCpCzjg6bjgq3jgqoNCivjg6jjgrfjgqTjgrEs44Kt44Oo44Om44KtDQor44Oo44K344Oe44OELOOCseODs+OCv+ODreOCpg0KK+ODqOOCt+ODjizjg5LjgrXjg6jjgrcNCivjg6jjgrfjg44s44K344Ky44KqDQor44Oo44K344K244OvLOOCquOCteODoA0KK+ODqOODhOOCv+ODiyzjg5/jg4Tjg5Ljg60NCivjg6bjgq3jgrbjg40s44K744Kk44K4DQor44Om44Ok44OeLOODqOOCt+ODkuOCtQ0KK+OCuuOCtyzjg6bjgq3jgqoNCivjgqLjg6njgqQs44Oe44K144OIDQor44OV44K444KtLOODpuOCpuOCpOODgQ0KK+ODkuODqeODjizjgrfjgrLjg6sNCivjgqvjg6Hjg6Tjg54s44OS44OH44OO44OWDQor44Kz44K444OeLOOCq+OCuuOCqg0KK+ODiuOCq+OCqizjg6HjgrDjg58NCivjgqTjg6/jgqvjg68s44K944Km44K/44Ot44KmDQor44OE44OB44OkLOOCv+ODhOODpA0KK+OCpOOCuOODrSzjgrPjgqbjgrgNCivjgq/jg4njgqYs44OI44Oi44KzDQor44OK44Ks44K344OeLOOCq+OCuuODkuODiA0KK+ODj+OCt+OCsOODgSzjgqvjg4Tjg6bjgq0NCivjg4Tjg4Hjg6Qs44Kx44Kk44KzDQor44Kk44K344Oe44OELOODkuODreODpOOCuQ0KK+ODj+ODqeODgCzjg5Ljg63jgr/jgqsNCivjg5/jgrrjg44s44OV44Of44KqDQor44Ob44K344OOLOODj+ODq+OCqg0KK+OCouODmSzjgrfjgrLjg47jg6oNCivjgqLjg5ks44K/44Kr44KzDQor44Ki44OZLOODpuOCv+OCqw0KK+OCouODmSzjgqjjgqTjgqTjg4ENCivjgqLjg5bjgqvjg68s44Of44K1DQor44Ki44OA44OBLOOCseODs+OCv+ODreOCpg0KK+OCouOCpOOCtuODryzjgq3jg6rjgrMNCivjgqLjgrjjg60s44Oe44K144Om44KtDQor44Ki44Kr44KkLOODiOOCt+OCouOCrQ0KK+OCv+ODouODiCzjg5/jgq3jgqoNCivjgqLjgqvjgqTjgrcs44Ko44Kk44OBDQor44Ki44Kr44K3LOODnuODpuODnw0KK+OCouOCreOCpOOCsSzjg6Tjgrnjg5Ljg60NCivjgqLjgq3jgr8s44OO44Oq44OB44KrDQor44Ki44Kt44Ok44OeLOODoOODhOODnw0KK+OCouODnuOCrOOCpCzjg5Ljg4fjg5Xjg58NCivjgqLjg57jgqzjgr8s44K/44Kr44K3DQor44Ki44Oe44OOLOODn+ODmw0KK+OCouODoeODn+ODpCzjgqvjg4Tjg58NCivjgqLjg7Pjg4njgqYs44Kr44K644OS44OtDQor44Ki44Oz44OJ44KmLOOCv+OCq+ODpuOCrQ0KK+OCouODs+ODieOCpizjg4DjgqTjgrQNCivjgqLjg7Pjg4njgqYs44K344Oz44K0DQor44Ki44Oz44K244KkLOODnuOCteODkuODhw0KK+OCouOCquOCrSzjg57jgrXjg4jjgrcNCivjgqLjgqrjgq0s44Ki44Kt44OV44OfDQor44Ki44Kq44Ok44KuLOOCouODhOODiA0KK+OCouOCquODpOODnizjg6bjgqbjgrMNCivjgqLjg6njgqQs44Oe44K144K3DQor44Ki44Op44KkLOODiOODouODiuODqg0KK+OCouODqeOCrSzjg4jjgrfjg5/jg4QNCivjgqLjg6njg6Qs44OS44Ot44Ki44KtDQor44Ki44Oq44OeLOOCt+ODs+OCpOODgQ0KK+OCouODquOCv+OCsSzjgrvjgqTjgrgNCivjgqLjgrXjg4As44K/44Kx44KqDQor44Ki44K144OSLOODpuOCpuOCuA0KK+OCouOCteODjizjgrjjg6Xjg7PjgrMNCivjgqLjgrfjg4As44K144OI44K3DQor44Ki44K344Kr44OvLOOCteODiOOCtw0KK+ODkOODkCzjg6Tjgrnjg6bjgq0NCivjg5Djg5As44K/44Kr44OP44OrDQor44OQ44OQLOOCseODs+OCuA0KK+ODgeODkCzjgrjjg6Xjg7PjgrMNCivjgrTjg4jjgqYs44Oe44K144OS44KzDQor44OB44On44KmLOOCqOOCpOOCuA0KK+ODgOOCpOODiSzjg6bjgqbjgrMNCivjg4njgqLjgqQs44Kz44Km44K4DQor44OJ44KkLOODiOODouODkuODrQ0KK+ODm+OCveOCpCzjgr/jgq/jgrgNCivjg4njgqQs44Kk44K144KqDQor44OJ44KkLOOCseODs+OCpOODgQ0KK+OCqOOCrOOCt+ODqSzjg5Ljg4fjgr/jgqsNCivjgqjjgrDjg4Es44Ok44K544OS44OtDQor44Ko44OQ44OpLOODhOODiOODoA0KK+OCqOODs+ODiSzjgrfjg7PjgqTjg4ENCivjgqjjg7Pjg4ks44K144OI44K3DQor44Ki44Oe44OqLOOCseODs+OCuA0KK+OCqOODjuODouODiCzjgq3jg6jjg58NCivjgqjjg47jg6Ljg4gs44Oe44K144OfDQor44Ko44OO44Oi44OILOOCouOCreODqQ0KK+OCqOODjuODouODiCzjg4Hjgqvjg6kNCivjgqjjgrbjgq0s44Kr44K644OS44OIDQor44OV44K444OP44OpLOODnuOCteODj+ODqw0KK+ODleOCuOOCpCzjgr/jgqvjgrcNCivjg5XjgrjjgqQs44K144OE44KtDQor44OS44Or44Kr44OvLOOCseODsw0KK+ODleOCuOOCpCzjg57jgrXjg5LjgrMNCivjg5XjgrjjgrXjg68s44OP44Or44OfDQor44OV44K444K144OvLOODkuODreODpuOCrQ0KK+ODkuOCtCzjgqvjg4Tjg6bjgq0NCivjg5Xjgrjjgr8s44OE44Oo44K3DQor44OV44K444K/LOOCv+OCq+OCtw0KK+ODleOCuOODr+ODqSzjg4jjgqrjg6sNCivjg5Xjgqvjg58s44Ok44K544Om44KtDQor44OV44Kr44K244OvLOOCv+OCseOCtw0KK+ODj+OCu+OCrOODryzjg6jjgqbjgrnjgrENCivjg5Xjgq/jg4As44K444Ol44Oz44KzDQor44OV44Kv44Oi44OILOODn+ODhOOCqg0KK+ODleOCr+ODoOODrSzjgr/jgqvjgrcNCivjg5Xjgq/jg60s44Ok44K544KzDQor44OV44Kv44K3LOODkuODreODnw0KK+ODleOCr+OCt+ODnizjgr/jgqvjg58NCivjg5Xjgq/jgrfjg54s44K344Oz44Kk44OBDQor44OP44Ku44Ov44OpLOODiOOCt+OCqg0KK+ODleOCr+OCt+ODnizjgqLjgq3jg6kNCivjg5Xjg4rjgq0s44OK44Kq44KtDQor44OV44OK44Kv44OcLOODleODn+OCqg0KK+ODj+ODqeODgCzjg5/jg47jg6sNCivjg5Xjg6vjg4/jgr8s44Oi44OI44OV44OfDQor44OV44Or44Kr44OvLOODnuODgeOCsw0KK+ODleODq+ODouODiCzjgr/jgqvjgrcNCivjg5Xjg6vjg6Qs44OI44Oi44OkDQor44OV44K344OfLOODkuODreODnw0KK+OCtOOCpuODgCzjg5/jgq3jgqoNCivjgqTjg6rjgqgs44K344Oz44K4DQor44Kk44K344OP44OpLOOCouOCreODqQ0KK+OCpOODgeOCq+ODryzjg57jgrXjg6bjgq0NCivjgqTjg5As44Oe44OfDQor44Kk44Ov44K144KtLOOCteOCqOOCsw0KK+OCpOODjuOCpuOCqCzjgqLjg6TjgrMNCivjgqTjgqTjg6Ljg6os44Oe44K144OS44OtDQor44Kk44OP44OpLOOCu+OCpOOCuA0KK+OCpOODr+ODoOODqSzjgrfjg6fjgqbjgr8NCivjgqTjg4rjgqzjgq0s44Om44Kt44KqDQor44Kk44K344K444OeLOOCq+OCuuODkuODrQ0KK+OCpOODiOOCpizjgrfjg63jgqYNCivjgrTjg7Pjg4njgqYs44K344Ol44Km44K4DQor44K044OI44KmLOOCueODn+ODrA0KK+OCpOOCt+OCq+ODryzjg57jgrXjg5LjgrMNCivjgqTjg4jjgqYs44Oe44K144OO44OWDQor44Kk44K744KtLOODquOCsw0KK+OCtOODiOOCpizjg5Ljg63jg6bjgq0NCivjg4/jg4As44OS44OH44Ki44KtDQor44OP44Ku44Ov44OpLOODn+ODr+OCsw0KK+ODj+OCruODr+ODqSzjg4jjg6LjgrMNCivjg4/jgqTjgrjjg54s44Ki44Kk44KzDQor44OP44Oe44OALOODkuODreOCtw0KK+ODj+ODnuODjizjg5Ljg63jg4TjgrANCivjg4/jg57jgqrjgqss44Kz44K544KxDQor44OP44OK44OJLOODn+ODjuODqw0KK+ODj+ODiuOCvyzjg4bjg4Tjg6QNCivjg4/jg6ks44OI44Oi44OS44KzDQor44OP44OpLOODpuOCpuOCuA0KK+ODj+ODqSzjgr/jgrHjgrcNCivjg4/jg6ks44Kt44On44Km44KzDQor44OP44Op44OALOOCt+ODsw0KK+ODj+ODqeODgCzjgr/jgrHjgrcNCivjg4/jg6njg4As44Ki44Kt44OS44OIDQor44K544K644KtLOOCv+OCseODrQ0KK+ODj+ODqeOCrCzjgr/jg4Tjg6QNCivjg4/jg6njg58s44Kx44Oz44K/44Ot44KmDQor44OP44Op44Ok44OeLOODjuODluODkuOCsw0KK+ODj+ODqeOCvuODjizjg47jg5bjg5Ljg60NCivjg4/jgrvjg5ks44K/44Kv44K4DQor44Kr44ON44KzLOODiOODouOCouOCrQ0KK+ODhOODgeODgCzjg6jjgqbjgqTjg4ENCivjg4/jgrfjg6Ljg4gs44Oq44KoDQor44OP44K344Oi44OILOODleODn+ODkuODrQ0KK+ODj+OCt+ODouODiCzjgqvjg4rjgqgNCivjg4/jgrfjg6Ljg4gs44K144OI44K3DQor44OP44K344Oi44OILOOCv+OCq+OCouOCrQ0KK+ODj+OCt+ODouODiCzjg5Ljg4fjgq0NCivjg4/jgrfjg6Ljg4gs44OS44OH44KtDQor44OP44K344Oi44OILOODqOOCt+ODkuOCsw0KK+ODj+OCvyzjgrHjgqTjgrMNCivjg4/jg4Pjg4jjg6os44OS44OH44Ki44KtDQor44OP44OD44OI44OqLOODnuOCs+ODiA0KK+ODj+ODg+ODiOODqizjgrvjgqTjgrgNCivjg4/jg6Tjgqvjg68s44Kt44Oo44K3DQor44OP44Ok44Kr44OvLOODkuODh+ODj+ODqw0KK+ODj+ODpOOCteOCqyzjg6jjgrfjgqvjgroNCivjg4/jg6TjgrXjgq0s44K744Kk44K0DQor44OP44Ok44K3LOODiOOCt+ODkuOCsw0KK+ODj+ODpOOCtyzjgr/jgqvjg6jjgrcNCivjg4/jg6Tjgrcs44K/44Kr44OK44OqDQor44OP44Ok44K3LOODpOOCueOCrQ0KK+ODj+ODpOOCtyzjgqLjgq3jg6kNCivjg4/jg6Tjgrfjg4As44Kx44Oz44K+44KmDQor44OS44OTLOOCq+OCuuODjuODlg0KK+ODkuOCrOOCtyzjg6Tjgrnjg5Ljg60NCivjg5Ljgqzjgrcs44Kr44K644KqDQor44OS44Kw44OBLOOCs+OCpuOCpOODgeODreOCpg0KK+ODkuOCuOOCq+OCvyzjgrHjg7PjgrgNCivjg5Ljgrjjg6Qs44Oo44K344KqDQor44OS44OK44KsLOOCv+OCseOCtw0KK+ODkuODqeOCq+ODryzjg5Ljg4fjgqLjgq0NCivjg5Ljg6njg44s44OS44Ot44KzDQor44OS44Op44OOLOOCpOOCv+ODqw0KK+ODkuODqeODjizjgr/jg4DjgqoNCivjg5Ljg6njgqos44K/44Kr44OS44OIDQor44OS44Op44K344OeLOODiuOCquOCrQ0KK+ODkuODqeODpOODnizjg4jjgrfjg63jgqYNCivjg5Ljg6njg6Tjgrks44OS44OI44K3DQor44OS44Oq44KtLOOCseODs+OCpOODgeODrQ0KK+ODkuODreODnuOCtSzjg6/jgr/jg6sNCivjg5Ljg63jg6Ljg4gs44K344Oz44K4DQor44OS44Ot44Kq44KrLOODnuODiuODlg0KK+ODkuODreOCuyzjg6bjg5/jgrMNCivjg5Ljg63jgrss44Oe44OE44K/44Ot44KmDQor44Km44Oh44OALOODquODp+OCpuOCpOODgQ0KK+ODm+ODs+ODgCzjgrXjg4rjgqgNCivjg5vjg7Pjg4ks44K/44Kx44K3DQor44Ob44Oq44Oi44OILOODpOOCueODpuOCrQ0KK+ODm+ODquODjizjgqvjgrrjgrfjgrINCivjg5vjg6rjgqbjg4Es44K/44Kr44ONDQor44Ob44K144KrLOOCouOCreOCsw0KK+ODm+OCt+ODjizjg57jgrPjg4gNCivjg5vjgrfjg6Tjg54s44Of44Ku44OV44OfDQor44Ob44K944Kr44OvLOODhuODhOODpA0KK+ODm+OCveOCq+ODryzjg6jjgrfjg5Ljg60NCivjg5vjgr3jgqvjg68s44K344Ky44KqDQor44Ob44K944OkLOODkuODreOCtw0KK+OCpOODkOODqeOCrSzjg47jg5bjgqoNCivjgqTjg4Hjg4/jg6ks44OS44K144Of44OEDQor44Kk44OB44OP44OpLOOCv+OCq+OCtw0KK+OCpOODgeODj+ODqSzjg47jg5bjgrMNCivjgqTjg4Hjgqvjg68s44Kx44Oz44Kk44OBDQor44Kk44OB44OO44K7LOOCteODiOOCtw0KK+OCpOODgCzjgr/jgrHjgrcNCivjgqTjg4fjgrDjg4Es44Kr44K644OS44OIDQor44Kk44OJLOODnuOCteOCtw0KK+OCpOOCrOODqeOCtyzjgqvjg4Tjg47jg5YNCivjgqTjgqzjg6njgrcs44Om44Kt44OS44KzDQor44Kk44Ks44Op44K3LOODkuODreOCtw0KK+OCpOOCpOODgCzjg5Ljg63jgqoNCivjgqTjgqTjg4As44Kr44OE44OI44K3DQor44Kk44Kk44K444OeLOOCs+OCpuOCuA0KK+OCpOOCseODgCzjg6rjg6fjgqYNCivjgqTjgrHjg4As44OI44Oi44OfDQor44Kk44Kx44OALOODiOODouODnw0KK+OCpOOCseODgCzjg6jjgqbjgrMNCivjgqTjg57jgqQs44Kz44Km44KtDQor44Kk44Oe44Kk44K644OfLOOCseOCpOOCsw0KK+OCpOODnuOCpOOCuuODnyzjg5/jg68NCivjgqTjg57jg6Djg6ks44Kq44K144OgDQor44Kk44Oe44Og44OpLOODn+ODjuODqw0KK+OCpOODouODsyzjgqvjgrrjg6bjgq0NCivjgqTjg4rjg4As44Oe44K544OfDQor44Kk44OK44Ks44KtLOOCq+OCuuODpA0KK+OCpOODiuOCrOOCrSzjg5/jg4Tjg6QNCivjgqTjg4rjg6Djg6ks44K/44Kr44K3DQor44Kk44OK44Og44OpLOODiOODouODjuODqg0KK+OCpOODjizjgrvjgqTjgqTjg4Hjg63jgqYNCivjgqTjg47jgqvjg68s44Ki44K544KzDQor44Kk44OO44Oe44K/LOOCq+OCuuODkuODiA0KK+OCpOODjuOCpuOCqCzjg5Ljg63jgqvjgroNCivjgqTjg47jgqbjgqgs44K144OI44K3DQor44Kk44OO44Km44KoLOOCt+ODmw0KK+OCpOODjuOCpuOCqCzjg6Tjgrnjg5Ljg60NCivjgqTjg47jgqbjgqgs44Om44Km44K4DQor44Kk44OO44Km44KoLOODpuOCpuOCvw0KK+OCpOODjuOCpuOCqCzjgrPjgqbjgqTjg4Hjg63jgqYNCivjgqTjg4zjgqQs44K344Oz44Kk44OB44Ot44KmDQor44Kk44OM44K344OeLOODnuODpuODnw0KK+OCpOODquOCqCzjg57jgrXjg47jg6oNCivjgqTjgrXjgqss44K344Ky44OrDQor44Kk44K344OQLOODgeODkuODrQ0KK+OCpOOCt+ODkOOCtyzjg4DjgqTjgrnjgrENCivjgqTjgrfjg5Djgrcs44OS44OH44KtDQor44Kk44K344OALOODkuODreODn+ODhA0KK+OCpOOCt+ODgCzjg5Ljg63jgrcNCivjgqTjgrfjg4As44Kr44OE44OS44OtDQor44Kk44K344OALOOCseOCpOOCpOODgQ0KK+OCpOOCt+OCrOODnyzjgrPjgqbjgqTjg4ENCivjgqTjgrfjgrDjg60s44Kz44Km44K4DQor44Kk44K344OP44OpLOODnuODquOCsw0KK+OCpOOCt+OCpCzjg57jgrXjg5Ljg60NCivjgqTjgrfjgqQs44OK44Kq44OfDQor44Kk44K344KkLOODjuODnOODqw0KK+OCpOOCt+OCpCzjgrvjg4TjgrMNCivjgqTjgrfjgqQs44K/44OA44K3DQor44Kk44K344KkLOOCv+OCq+ODj+ODqw0KK+OCpOOCt+OCq+ODryzjg4jjgrfjgqoNCivjgqTjgrfjg57jg6ss44OE44Oo44K3DQor44Kr44Ov44K6LOODqOOCpuOCpOODgQ0KK+OCpOOCt+OCuuOCqyzjg6bjgq3jgqoNCivjgqTjgr/jg6Qs44OO44Oq44OS44K1DQor44Kk44Kk44OALOOCouOCreODkuODrQ0KK+OCpOODiOOCpizjg5Ljg63jg5/jg4ENCivjgqTjg4jjgqYs44OS44Ot44K3DQor44Kk44OI44KmLOOCpOOCr+OCqg0KK+OCpOODiOOCpizjgqvjgrrjg6QNCivjgqTjg4jjgqYs44K344On44Km44KzDQor44Kk44OI44KmLOOCq+OCuuODkuODrQ0KK+OCpOODiOOCpizjgrjjg6Xjg7MNCivjgqTjg4jjgqYs44Oe44Kz44OIDQor44Kk44OI44KmLOOCquOCteODoA0KK+OCpOODiOOCpizjg6jjgrfjg57jgrUNCivjgqTjg4jjgqYs44Oe44K144Om44KtDQor44Kk44OI44KmLOODnuOCteODnw0KK+OCpOODiOOCpizjg5Ljg63jgqLjgq0NCivjgqTjg4jjgqYs44K/44Oe44KtDQor44Kk44OI44KmLOOCreODqOOCv+OCqw0KK+OCpOODiOOCpizjg57jgrXjg5Xjg58NCivjgqTjg4jjgqYs44OS44Ot44Kr44K6DQor44Kk44OI44KmLOODpuOCreOCqg0KK+OCpOODiOOCpizjgqjjgqTjgrgNCivjgqTjg4jjgqYs44Of44Ob44KzDQor44Kk44Ov44KkLOOCv+OCq+ODpuOCrQ0KK+OCpOODr+OCpCzjgqvjgrrjgrfjgrINCivjgqTjg6/jg58s44Kt44Oo44K3DQor44Kk44Ov44Og44OpLOODqOOCt+OCv+OCqw0KK+OCpOODr+ODiuOCrCzjg4rjgqrjgrMNCivjgqTjg6/jgqos44Kr44K644Ki44KtDQor44Kk44Ov44K144KtLOODquODpeOCpuOCsw0KK+OCpOODr+OCvyzjgq3jg6jjgrMNCivjgqTjg6/jgr8s44Of44OE44OS44OtDQor44Kk44Ov44K/LOOCt+ODs+OCuA0KK+OCpOOCuuODnyzjg47jgr7jg6ANCivjgrjjg7Pjg5As44OE44ON44OO44OqDQor44OO44Km44OBLOODquOCqA0KK+ODqeOCryzjg6jjgrfjg47jg6oNCivjgqvjgqzjg58s44OS44Ot44K3DQor44Kr44Ks44OvLOOCseOCpOOCvw0KK+OCq+OCsuODpOODnizjgr/jg57jgq0NCivjgqvjgqQs44K444Ol44OzDQor44Kr44K444Oi44OILOOCv+OCr+ODpA0KK+OCq+OCuOODr+ODqSzjgrvjgqTjgrgNCivjgq/jg6rjg4/jg6ks44Ko44Kk44K4DQor44Kr44Kt44Og44OpLOOCuOODpeODsw0KK+OCq+OCreODjuOCrSzjgr/jgqvjgqLjgq0NCivjgqvjgq3jgqbjg4Es44OS44Ot44Om44KtDQor44Kr44Kt44K244KtLOOCs+OCpuOCuA0KK+OCq+OCsyzjg4jjgrfjg5LjgrMNCivjgqvjg6Hjgrfjg54s44OA44Kk44K544KxDQor44Kr44Of44Ko44K5LOOCqOOCpOOCpOODgQ0KK+OCq+ODn+OCr+ODqSzjg5Ljg63jgrcNCivjgqvjg5/jg6Djg6ks44Kz44Km44Kk44OB44Ot44KmDQor44Kr44Of44K/44KtLOODnuOCteOCuA0KK+OCq+ODn+ODqOOCt+OCq+ODryzjg57jgrXjg6bjgq0NCivjgqvjg7Ms44K/44Kv44OkDQor44Kr44OK44KkLOODiOOCt+OCq+OCug0KK+OCq+ODs+ODkOODpOOCtyzjgqTjg4Hjg63jgqYNCivjgqvjg7Pjg4As44Oo44K344OS44OIDQor44Kr44ON44KzLOOCv+OCq+ODpuOCrQ0KK+OCq+ODjeOCsyzjg6Tjgrnjg6bjgq0NCivjgqvjg43jgr8s44K/44Kr44K3DQor44Kr44OO44KmLOODnuODpuODnw0KK+OCq+ODquODjizjg5Ljg63jgrcNCivjgqvjgrXjg58s44Kr44OK44KoDQor44Kr44K144OK44OfLOOCv+OCq+ODiA0KK+OCq+OCuyzjg57jg6Ljg6sNCivjgqvjgrnjgqws44OS44Ot44K3DQor44Kr44K544OkLOODnuOCteODiuODqg0KK+OCq+OCv+OCquOCqyzjg47jg6rjgrMNCivjgqvjg4jjgqYs44OK44Kq44KzDQor44Kr44OI44KmLOODkuODreOCtw0KK+OCq+ODiOOCpizjg57jgrXjg6bjgq0NCivjgqvjg4jjgqYs44OO44Oq44Ki44KtDQor44Kr44OI44KmLOOCv+ODgOOCouOCrQ0KK+OCq+ODiOOCpizjgrHjg7PjgrgNCivjgqvjg4jjgqYs44Kx44Oz44K4DQor44Kr44OI44KmLOOCv+OCq+ODpuOCrQ0KK+OCq+ODiOOCpizjgqLjgq3jg5Ljg4gNCivjgqvjg4jjgqYs44K444Ot44KmDQor44Kr44OE44Oe44K/LOOCr+ODnw0KK+OCq+ODhOODqSzjg57jgrXjgq0NCivjgqvjg6/jg5ks44Oo44K344Om44KtDQor44Kr44Ov44OALOOCv+OCseOCtw0KK+OCq+ODr+OCsOODgSzjg5Ljg4fjgq0NCivjgrXjgqTjg4jjgqYs44OS44OH44K/44KrDQor44Kr44Ov44Kw44OBLOOCpOOCr+OCsw0KK+OCq+ODr+ODj+OCvyzjgqvjgqrjg6oNCivjgqvjg6/jgqvjg58s44Kr44K644Oo44K3DQor44Kr44Ov44Kr44OfLOOCseODs+OCpOODgQ0KK+ODpOOCuOODnizjg5/jg4Tjg6gNCivjgqvjg6/jg6Ljg4gs44OE44Oo44K3DQor44Kr44Ov44Og44OpLOODkuODh+OCouOCrQ0KK+OCq+ODr+ODoOODqSzjg5Ljg63jgrcNCivjgqvjg6/jg6Djg6ks44K444Ol44Oz44Kk44OBDQor44Kr44Ov44Og44OpLOODnuODqg0KK+OCq+ODr+ODjizjg57jgrXjg5LjgrMNCivjgqvjg6/jg44s44Oe44K144Kr44OEDQor44Kr44Ov44K144KtLOOCt+OCsuODpuOCrQ0KK+OCq+ODr+OCuyzjgrHjg7PjgrgNCivjgqvjg6/jgrfjg54s44OI44K344OkDQor44Kr44Ov44K344OeLOODqOOCt+ODj+ODqw0KK+OCq+ODr+OCt+ODnizjg5Ljg4fjgq0NCivjgqvjg6/jgrfjg54s44Ok44K544OO44OWDQor44Kt44OALOODn+ODjuODqw0KK+OCreOCr+ODgSzjgqvjgrrjg6QNCivjgq3jgq/jg4Es44K/44Kr44OS44OHDQor44Ok44Oe44Oi44OILOODpOOCueODkuODrQ0KK+OCouOCreODqOOCtyzjg6Tjgrnjg5Ljg60NCivjgq3jgq/jg4Es44Oe44Oi44OrDQor44Kt44Kv44OBLOOCv+ODhOODpA0KK+OCreOCr+ODgSzjg5/jg4Tjg6sNCivjgq3jgq/jg4Es44Ki44Kt44KzDQor44Kt44Og44OpLOODleODn+ODkuOCsw0KK+OCreODoOODqSzjg57jgrXjg5LjgrMNCivjgq3jg6Djg6ks44Ki44Kt44OS44KzDQor44Kt44Og44OpLOOCouODhOOCtw0KK+OCreODoOODqSzjg5Ljg63jgrcNCivjgq3jg6Djg6ks44Oe44K144KtDQor44Kt44Og44OpLOODn+ODjuODqw0KK+OCq+ODiOOCpizjgrfjg6fjgqbjgrgNCivjgq3jg4rjgrss44Om44Km44K4DQor44Kt44ONLOODnuOCteOCsw0KK+OCreODjizjgqLjgq0NCivjgq3jg44s44Kr44K644OS44OtDQor44Kt44OO44K344K/LOOCseOCpOOCvw0KK+OCreODqSzjg6jjgqbjgrMNCivjgq3jgrfjg6Ljg4gs44OI44Kq44OrDQor44Kt44K/44OQ44K/44KxLOOCouOCreOCqg0KK+OCreOCv+ODkOOCv+OCsSzjgr/jgqvjg5LjgrMNCivjgq3jgr/jgqzjg68s44Kq44K144OgDQor44Kt44K/44Ks44OvLOODgeOCq+OCsw0KK+OCreOCv+ODoOODqSzjg5Ljg63jgqLjgq0NCivjgr/jgqvjg4/jgrcs44Oh44Kw44OfDQor44Kt44K/44Ok44OeLOOCqOOCpOOCuA0KK+OCreODqOODiuODqizjg5Ljg63jgrcNCivjgrPjg5Djg6Tjgrcs44Kt44Oo44K3DQor44Kz44OQ44Ok44K3LOODiOOCt+ODkuODrQ0KK+OCs+ODkOODpOOCtyzjgqLjgq3jgrMNCivjgrPjg5Djg6Tjgrcs44K/44Kr44K3DQor44Kz44OQ44Ok44K3LOODkuODreOCtw0KK+OCs+ODkOODpOOCtyzjg5Ljg63jgqLjgq0NCivjgrPjg5Djg6Tjgrcs44OK44Kq44KtDQor44Kk44OI44KmLOOCt+ODs+OCuA0KK+OCs+ODs+ODjizjg6jjgqbjgqTjg4ENCivjgrPjg7Pjg44s44K/44Kr44Of44OEDQor44Kz44Oz44OOLOODkuODreOCtw0KK+OCs+ODs+ODjizjgqvjgrrjgqLjgq0NCivjgrPjgqTjgrEs44OI44Oi44OV44OfDQor44Kz44K444OeLOODr+OCv+ODqw0KK+OCs+OCr+OCt+ODp+OCpizjg57jgrXjg6sNCivjgrPjg57jgq0s44Kr44K644OkDQor44Oe44Kr44OZLOOCteODluODreOCpg0KK+OCs+ODnuODhCzjgr/jgrHjgrcNCivjgrPjg57jg4Qs44OS44Ot44KoDQor44Kz44Oz44OJLOOCt+ODsw0KK+OCs+ODs+ODiSzjgr/jgq/jg58NCivjgrPjg7Pjg4ks44Oe44K144Om44KtDQor44Kz44K344OQLOODn+OCrQ0KK+ODqOOCs+OCqCzjg6Tjgrnjg47jg6oNCivjgrPjg4bjgqzjg68s44Oe44K144OO44OqDQor44Kz44Oz44OOLOOCq+OCuuOCouOCrQ0KK+OCs+ODpOODnizjg6zjgqTjgrMNCivjgrPjg6Tjg54s44Oi44OI44Kv44OLDQor44Kz44Ok44OeLOODkuODreOCv+OCqw0KK+OCs+OCtuOCuSzjg4jjgrfjg47jg6oNCivjgq/jg4HjgqTjgrcs44Kr44K644OI44K3DQor44Kv44Ku44Of44OkLOODquODpeOCpuOCueOCsQ0KK+OCr+OCuOODqeOCpCzjgqLjg4TjgrcNCivjgq/jg57jg47jg5/jg4ks44OS44Ot44K3DQor44Kv44Oe44K244KtLOODiOODouOCrQ0KK+OCr+ODrOODnuODhCzjgr/jgqvjg5Ljg4cNCivjgq/jg6rjgq0s44Oe44K144Om44KtDQor44Kv44Oq44Ok44OeLOODiOOCt+ODreOCpg0KK+OCr+ODquODpOODnizjg5Ljg63jgrcNCivjgq/jg63jg5ks44OK44Kq44OIDQor44Kv44Ot44K144OvLOODiOODouOCouOCrQ0KK+OCr+ODreOCteODryzjg6Tjgrnjg6bjgq0NCivjgq/jg6rjg6XjgqYs44Oo44K344KoDQor44Kv44K144OOLOOCq+ODhOODpuOCrQ0KK+OCr+ODr+ODj+ODqSzjgrjjg6Xjg7MNCivjgq/jgrrjg44s44Oo44K344K/44KrDQor44Kt44Ol44Km44OALOOCv+OCr+ODpA0KK+ODnuODluODgSzjgrHjg7PjgqTjg4ENCivjg57jg4Hjgr8s44Oe44K144KtDQor44Oe44Ko44OALOODqOOCpuOCpOODgQ0KK+ODnuOCqOOCpOOCqCzjgqLjgq3jg5Xjg58NCivjg57jgqjjgqvjg68s44OB44Ki44KtDQor44Oe44Oe44OALOODkuODreOCtw0KK+ODnuODiuODmSzjg5Ljg63jgr/jgqsNCivjg57jg4rjg5ks44Kr44K644KqDQor44Oe44Or44Kk44OBLOODnuOCteODpuOCrQ0KK+ODnuODq+OCv+ODiyzjgr/jgqvjg5Ljg4cNCivjg57jg6vjg6Tjg54s44K/44Kr44KzDQor44Oe44K144Kq44KrLOOCv+OCq+ODpuOCrQ0KK+ODnuOCueODgCzjgr/jg4Tjg58NCivjg57jgrnjg4As44OE44Oo44K3DQor44Oe44K544OALOODqOOCt+ODluODnw0KK+ODnuOCueODgCzjg6bjgq3jgrMNCivjg57jgrnjg4As44OS44Ot44Kr44K6DQor44Oe44OE44OQ44OpLOOCs+OCpuOCvuOCpg0KK+ODnuODhOODgCzjgqvjg4Tjg6QNCivjg57jg4Tjg4As44OS44Ot44Om44KtDQor44Oe44OE44OA44Kk44OpLOODiOOCt+ODleODnw0KK+ODnuODhOOCqOODgCzjgqLjg6bjg58NCivjg57jg4TjgqQs44OS44OH44K3DQor44Oe44OE44KkLOODkuODreOCrQ0KK+ODnuODhOODouODiCzjg47jg5bjgqoNCivjg57jg4Tjg6Ljg4gs44K744Kk44Kk44OBDQor44Oe44OE44Oi44OILOOCq+OCuuODkuODrQ0KK+ODnuODhOODouODiCzjgq3jg6jjgqvjgroNCivjg57jg4Tjg6Ljg4gs44Kt44On44Km44KzDQor44Oe44OE44Oi44OILOODqOOCt+OCrQ0KK+ODnuODhOODouODiCzjg4rjg6rjgqLjgq0NCivjg57jg4Tjg6Ljg4gs44Ki44Kt44OO44OqDQor44Oe44OE44Oi44OILOOCseODsw0KK+ODnuODhOODouODiCzjg4jjgrfjgqvjgroNCivjg57jg4Tjg6Ljg4gs44Kx44OzDQor44Oe44OE44Oi44OILOODgOOCpA0KK+ODiuOCq+ODoOODqSzjg5Ljg63jg6bjgq0NCivjg57jg4Tjg6Djg6ks44Kv44OfDQor44Oe44OE44OK44KsLOOCseODs+OCuOODreOCpg0KK+ODnuODhOODjizjgqvjgrrjg4gNCivjg57jg4Tjgqos44Oq44Ol44Km44Kk44OBDQor44Oe44OE44KqLOOCv+OCq+OCqg0KK+ODnuODhOOCquOCqyzjgr/jgrHjgrcNCivjg57jg4Tjgqrjgqss44Kr44K644OO44OqDQor44Oe44OE44Kq44KrLOOCv+ODgOOCouOCrQ0KK+ODnuODhOOCquOCqyzjg5Ljg63jgrcNCivjg57jg4Tjgqrjgqss44Ki44OE44K3DQor44Oe44OE44K344OeLOOCreODn+OCqg0KK+ODnuODhOOCv+ODiyzjgqLjg6QNCivjg57jg4Tjg6Tjg54s44Kz44Km44K/44Ot44KmDQor44Of44OB44Oi44OILOODnuODpuODnw0KK+ODn+OCqOOCrSzjgr/jgq/jg63jgqYNCivjg5/jgqvjg58s44Kr44K644OfDQor44Of44Kr44OfLOODqOOCt+OCv+OCqw0KK+ODn+ODiuOCrOODryzjg4Tjg6jjgrcNCivjg5/jg4rjgqvjg68s44K344On44Km44KzDQor44Of44K344OeLOOCq+OCuuODnw0KK+ODn+OCt+ODnizjgrfjg47jg5YNCivjg5/jgrfjg54s44OS44Ot44Ki44KtDQor44Of44K/44OBLOOCs+OCpuOCuA0KK+ODn+ODhOODgCzjg4rjgqrjgq0NCivjg5/jg4Tjg4/jgrcs44K444Ol44OzDQor44Of44OE44KkLOODkuODreOCtw0KK+ODn+ODhOODouODiCzjgq3jg6jjg58NCivjg5/jgqbjg6ks44Kt44On44Km44K4DQor44Of44Km44OpLOODnuOCteODkuODrQ0KK+ODn+ODpOODmSzjgqLjgq3jg6kNCivjg5/jg6Tjg4Es44Oe44K144Om44KtDQor44Of44Ok44K444OeLOOCouOCreODjuODqg0KK+ODkOODsyzjg57jg4rjg5YNCivjg5/jg6Tjg6Ljg4gs44OI44K344Ki44KtDQor44Oo44Kz44KoLOOCs+OCpuOCvuOCpg0KK+ODn+ODpOOCteOCqyzjgrHjgqTjgqTjg4ENCivjg5/jg6Tjgr8s44OS44Ot44Om44KtDQor44Of44Ok44K/LOOCq+OCuuOCqg0KK+ODn+ODpOOCpuODgSzjg57jgrXjg5Ljg60NCivjgqbjg4Hjg6Tjg54s44Of44Kt44KzDQor44K144Kr44KkLOODquODp+OCpuOCueOCsQ0KK+ODn+ODpOOCtuODryzjg4jjgrfjgqLjgq0NCivjg5/jgr7jg5bjg4Es44Ko44Kk44KzDQor44Of44K+44Kw44OBLOOCouOCreODqQ0KK+ODn+OCvuOCsOODgSzjgqTjgrrjg58NCivjg5/jgrrjg6Ljg4gs44Ki44OE44OS44KzDQor44Of44K644OOLOODnuOCteODqOOCtw0KK+ODn+OCuuODjizjg57jgrXjg6bjgq0NCivjg5/jgrrjg44s44Om44Km44K4DQor44Of44K644K344OeLOODpuOCreOCqg0KK+ODn+OCuuOCvyzjg6bjgr/jgqsNCivjg5/jgrrjgr/jg4ss44OS44K144OIDQor44Oi44KuLOOCq+OCuuODjuODqg0KK+ODouOCrizjg6Ljg6bjg6sNCivjg6Ljgq4s44OS44Ot44K3DQor44Oi44Oi44K7LOODgOOCpOOCueOCsQ0KK+ODouODs+ODnizjg6bjgqbjgrgNCivjg6Ljg6os44Os44Kk44KzDQor44Oi44OqLOOCseOCpOOCueOCsQ0KK+ODouODqizjgrHjg7PjgqTjg4ENCivjg6Ljg6os44Oe44K144OS44OtDQor44Oi44OqLOODquOCqw0KK+ODouODqizjg4Tjg4jjg6ANCivjg6Ljg6rjg6Ljg4gs44Om44Kt44OS44OtDQor44Oi44Oq44OOLOODqOOCpuOCueOCsQ0KK+ODqOOCt+ODgCzjg4rjgqrjg5Xjg58NCivjg6Ljg6rjgr8s44OS44OH44OO44OWDQor44Oi44Oq44K/LOOCq+OCuuODkuOCtQ0KK+ODouODquOCvyzjgqvjg4Tjg58NCivjg6Ljg6rjgr8s44Oo44K344OkDQor44Oi44Oq44K/LOOCt+OCsuOCqg0KK+ODouODquODr+OCrSzjgr/jgq/jgqoNCivjg6Ljg60s44Oo44K344Ot44KmDQor44Oi44K/44KkLOODkuODreOCtw0KK+ODouODiOODkOODpOOCtyzjgrXjg4jjg6sNCivjg6Ljg4jjg4/jgrcs44K344Ky44Oe44K1DQor44Oi44OI44Ok44OeLOODnuOCteODjuODqg0KK+ODouODiOOCtuODryzjg6bjgqbjgrgNCivjg6Djgqvjg68s44Kk44OE44KzDQor44Og44OK44Kr44K/LOODleODn+OCsw0KK+ODoOODqeOCq+ODnyzjg5Ljg63jgqLjgq0NCivjg6Djg6njgqvjg58s44Oo44K344KtDQor44Og44Op44Kr44OfLOODkuODreODpuOCrQ0KK+ODoOODqeOCq+ODnyzjg6TjgrnjgrMNCivjg6Djg6njgqvjg58s44Ki44Kt44OS44K1DQor44Og44Op44Kr44OvLOODnuOCteOCsw0KK+ODoOODqeODiuOCqyzjg57jg6bjgrMNCivjg6Djg6njgr8s44OI44Oi44OO44OqDQor44Og44Op44K/LOODkuODreOCrQ0KK+ODoOODqeODpOODnizjgrHjg7PjgrgNCivjg6Djg6njg6Tjg54s44OS44Ot44K3DQor44Og44Ot44OP44K3LOOCs+OCpuOCuA0KK+ODoOODiOOCpizjgqvjgqrjg6sNCivjg6Djg4jjgqYs44Ki44Kt44KzDQor44OK44OQLOODkuODreODpuOCrQ0KK+ODiuOCrOOCpCzjg57jgrXjg6sNCivjg4rjgqzjgqQs44OK44Kq44Ki44KtDQor44OK44Ks44OOLOOCq+ODhOODpA0KK+ODiuOCrOODjizjgr/jg57jg58NCivjg4rjgqzjgqos44Ok44K544OS44OtDQor44Ok44Oe44Oi44OILOOCq+OCuuODkuODrQ0KK+ODiuOCrOOCquOCsSzjgrXjg4jjgrcNCivjg4rjgqzjgqrjgrUs44Ki44Kt44OS44OtDQor44OK44Ks44K344OeLOOCq+ODhOODpA0KK+ODiuOCrOOCt+ODnizjgq/jg58NCivjg4rjgqzjgr8s44Of44KtDQor44Kq44Kq44OQLOOCteODiOOCtw0KK+ODiuOCrOOCvyzjgrfjg7PjgrgNCivjg4rjgqzjgr8s44K344On44Km44OY44KkDQor44OK44Ks44K/44OLLOODhOODqOOCtw0KK+ODiuOCpOODiOOCpizjg6Tjgrnjg47jg6oNCivjg4rjgqvjg4Es44Oo44K344OP44OrDQor44OK44Kr44OALOODqOOCt+ODpuOCrQ0KK+ODiuOCq+ODgOOCpCzjg6bjgqbjgqTjg4ENCivjg4rjgqvjgqzjg68s44OK44Kq44Om44KtDQor44OK44Kr44Ks44OvLOODqOOCt+ODpuOCrQ0KK+ODiuOCq+OCrOODryzjgqLjg4TjgrcNCivjg4rjgqvjgqzjg68s44OS44Ot44Om44KtDQor44OK44Kr44OP44OpLOOCuOODpeODsw0KK+ODiuOCq+OCpCzjgrHjgqTjgqTjg4ENCivjg4rjgqvjgqQs44K344OODQor44OK44Kr44K444OeLOOCv+OCq+OCtw0KK+ODiuOCq+OCuOODnizjgrPjgqbjgrgNCivjg4rjgqvjg6Djg6ks44K344Ol44Km44K0DQor44OK44Kr44Og44OpLOODnuOCteODpuOCrQ0KK+OCreODn+ODkuODqSzjg5/jgqsNCivjgqTjg4jjgqYs44K/44Kr44OS44K1DQor44OK44Kr44Og44OpLOOCs+OCpuOCuA0KK+ODiuOCq+ODoOODqSzjgr/jg4Tjg6QNCivjg4rjgqvjg6Djg6ks44Kr44K644Om44KtDQor44OK44Kr44Og44OpLOODj+OCuOODoQ0KK+ODiuOCq+ODoOODqSzjg57jgrXjgqLjgq0NCivjg4rjgqvjg6Djg6ks44OS44Ot44KtDQor44OK44Kr44Og44OpLOODn+OCrQ0KK+ODiuOCq+ODoOODqSzjg4jjg6LjgqoNCivjg4rjgqvjg4vjgrcs44Kk44K644OrDQor44OK44Kr44OL44K3LOOCv+OCq+ODkuODrQ0KK+ODiuOCq+ODjizjg6bjgqbjgrMNCivjg4rjgqvjg44s44Ok44K544Ki44KtDQor44OK44Kr44OOLOODhuODhOODpA0KK+ODiuOCq+ODjizjgqvjgrrjg47jg6oNCivjg4rjgqvjg44s44Ki44OE44K3DQor44OK44Kr44KqLOOCouOCreOCsw0KK+ODiuOCq+OCteOCryzjgrfjg6fjgqbjgr/jg4QNCivjg4rjgqvjgrss44OS44Ot44K/44KrDQor44OK44Kr44K/LOOCr+ODq+ODnw0KK+ODiuOCq+OCvyzjg5Ljg63jg58NCivjg4rjgqvjgr8s44Ok44K544OS44OtDQor44OK44Kr44K/44KxLOOCv+OCr+OCqg0KK+ODiuOCq+ODpOODnizjg5Xjg5/jgqoNCivjg4rjg5/jgq0s44Kx44Kk44K3DQor44OK44OK44K144OvLOODiuODn+OCuA0KK+ODiuODs+ODkCzjg4DjgqTjgrnjgrENCivjg4rjg7Pjg6Ljgq8s44Ko44Of44KzDQor44ON44Oi44OILOODiuODhOOCsw0KK+ODjeODouODiCzjg5/jg4TjgqLjgq0NCivjg4vjgqQs44Oo44K344KzDQor44OL44Kk44OHLOODkuODh+ODhOOCsA0KK+ODi+OCpOOCr+ODqSzjg5Ljg4fjg6QNCivjg4vjgqTjgrrjg54s44K/44Kk44OB44Ot44KmDQor44OL44Kr44OfLOOCouOCreODqQ0KK+ODi+OCt+ODkOODpOOCtyzjg57jgrXjg5LjgrMNCivjg4vjgrfjg4As44Oo44K344OkDQor44OL44K344OP44OpLOOCt+OCreOCsw0KK+ODi+OCt+ODj+ODqSzjgrXjg4jjgrcNCivjg4vjgrfjgqvjg68s44K/44Kr44OS44OtDQor44OL44K344Kr44K8LOOCq+OCuuODjuODqg0KK+ODi+OCt+ODn+ODpCzjgrXjg4jjgrcNCivjg4vjgrfjg6Djg6ks44K344Oz44Kk44OBDQor44OL44K344Og44OpLOOCreODr+ODoA0KK+ODi+OCt+ODpOODnizjg5Ljg4jjgrcNCivjg4vjgrfjg6Tjg54s44Oi44OI44Ki44KtDQor44OL44OD44K/LOOCq+ODhOOCouOCrQ0KK+ODi+ODryzjgq3jg6jjgrcNCivjg4jjgqbjgrTjgqYs44Oe44OK44OWDQor44OL44OvLOOCq+ODhOODpA0KK+ODjuODluODj+ODqSzjgrPjgqbjgrgNCivjgqrjgqzjg68s44Om44Km44KzDQor44OO44Ks44OfLOOCquOCteODoA0KK+ODjuOCrOODnyzjgrjjg6Xjg7PjgqTjg4ENCivjg47jg6Ljg4gs44Of44KrDQor44OO44Og44OpLOODnuODiuODlg0KK+ODjuODoOODqSzjgr/jgqvjg5Ljg60NCivjg47jgr7jgqgs44OP44K444OhDQor44OM44Oe44K/LOODhuODhA0KK+OCquODgOOCuOODnizjgqjjg6oNCivjgqrjgqrjgqzjgqjjg6os44OI44Kq44OrDQor44Kq44Ks44K/LOODkuODh+OCrQ0KK+OCquOCrOODryzjgrfjgrLjg6sNCivjgqrjgqzjg68s44K/44Kx44KqDQor44Kq44Kq44KuLOOCv+OCseOCtw0KK+OCquOCruOCr+ODnCzjg6jjgqbjgrjjg63jgqYNCivjgqrjgrQs44OI44Oi44KtDQor44Kq44Kw44OpLOODkuODreODpuOCrQ0KK+OCquOCquODkCzjg4jjg6Ljg5Ljg60NCivjgqrjgqrjg5Djg6Tjgrcs44Oo44Oq44KzDQor44Kq44Kq44KoLOODqOOCpuOCpOODgQ0KK+OCquOCquOCrOODnizjgrPjgqbjgqTjg4ENCivjgqrjg4/jgrcs44OK44Kq44KtDQor44Kq44Kq44Kk44K3LOOCseODs+OCuA0KK+OCquOCquOCq+ODryzjg6Tjgrnjg5LjgrMNCivjgqrjgqrjgq3jg4ks44Oe44K144KqDQor44Kq44Kq44Kv44OcLOODkuODreODpuOCrQ0KK+OCquOCquOCr+ODnCzjg5Ljg63jg5Xjg58NCivjgqrjgqrjgq/jg54s44Oe44Kz44OIDQor44Kq44OeLOODnuODouODqw0KK+OCquODnuOCqCzjg6Djg4Tjg63jgqYNCivjgqrjg57jgqgs44K/44Kr44K3DQor44Kq44Kq44Oi44OqLOODiOODouODkuODrQ0KK+OCquOCquODouODqizjg5/jg4Tjg6jjgrcNCivjgqrjgqrjg6Ljg6os44OK44Kq44KtDQor44Kq44Kq44Oi44OqLOODkuODreOCrQ0KK+OCquOCquODouODqizjg57jgrXjg6TjgrkNCivjgqrjgqrjg6Ljg4gs44Of44OE44OrDQor44Kq44Kq44OL44K3LOOCouOCpOOCsw0KK+OCquOCquODi+OCtyzjgrHjg7PjgrgNCivjgqrjgqrjg4vjgrcs44Oe44K144OG44OrDQor44Kq44OOLOOCouOCreODqQ0KK+OCquOCquODjOODnizjg5Ljg63jgq0NCivjgqrjgqrjgrXjgqss44Oq44K1DQor44Kq44Kq44K144OvLOOCv+OCq+ODkuODrQ0KK+OCquOCquOCteODryzjgrnjg5/jgrMNCivjgqrjgrfjg54s44K/44Kr44K3DQor44Kq44K344OtLOOCt+ODs+OCpOODgQ0KK+OCquOCquOCvyzjgqLjgrXjgrMNCivjgqrjgqrjgr8s44Ki44OE44KqDQor44Kq44Kq44K/LOODkuODh+ODpuOCrQ0KK+OCquOCquOCvyzjg57jgrXjg58NCivjgqrjgqrjgr8s44Og44ON44Ok44K5DQor44Kq44Kq44K/LOOCt+ODs+OCpOODgeODreOCpg0KK+OCquOCquOCv+ODiyzjg6Tjgrnjg5Ljg60NCivjgqrjgqrjg4Qs44OS44Ot44Om44KtDQor44Kq44Kq44OE44KrLOOCv+OCq+OCtw0KK+OCquOCquODhOOCrSzjgqLjgq3jg5Ljg60NCivjgqrjgqTjgqvjg68s44Of44OB44KqDQor44Kq44KrLOODqOOCt+ODkuOCtQ0KK+OCquOCqyzjg5Ljg4fjgq0NCivjgqrjgqss44OV44Of44KzDQor44Kq44Kr44OALOODn+OCrQ0KK+OCquOCq+ODgCzjg6TjgrnjgrcNCivjgqrjgqvjg4As44Om44Km44Kk44OBDQor44Kq44Kr44OALOOCteODiOODqw0KK+OCquOCq+OCsOODgSzjg47jg5bjg5Ljg60NCivjgqrjgqvjgqQs44Om44K/44KrDQor44Kq44Kr44Oe44OELOOCv+OCq+ODkuODrQ0KK+OCquOCq+ODouODiCzjg6jjgrfjgqLjgq0NCivjgqrjgqvjg6Ljg4gs44Ko44Kk44Kk44OBDQor44Kq44Kr44Oi44OILOODkuODh+OCqg0KK+OCquOCq+ODouODiCzjg57jgrXjg5bjg58NCivjgqrjgqvjg6Ljg4gs44Oe44K144OS44OtDQor44Kq44Kr44Oi44OILOODn+ODgeODj+ODqw0KK+OCquOCq+ODouODiCzjg47jg6rjgqoNCivjgqrjgqvjg44s44OI44Oi44OS44OtDQor44Kq44Kr44K244KtLOODpuOCreODiA0KK+OCquOCreODouODiCzjgqjjg4TjgrMNCivjgqrjgq/jg44s44Oo44K344K/44OfDQor44Kq44Kv44Ok44OeLOODpOOCueOCqg0KK+OCquOCquODnyzjgrfjgrLjg6sNCivjgqrjgqrjg44s44OK44Kq44KtDQor44Kq44Kq44OOLOODkuODreODleODnw0KK+OCquOCquODjizjg5Ljg63jgrcNCivjgqrjgqrjg47jgrss44K444Ol44Oz44KzDQor44Kq44OO44K244KtLOOCv+OCq+OCtw0KK+OCquODquOCqCzjg6jjgrfjgrMNCivjgqrjgrbjgq0s44Oe44K144KzDQor44OI44Kv44Of44OkLOODhuODhOODpA0KK+OCteOCpOODgSzjgqvjgqrjg6oNCivjgrXjgqTjg4jjgqYs44K344Oz44Kk44OBDQor44K144Kk44OI44KmLOODkuODiOOCrQ0KK+OCteOCpOODiOOCpizjg5Ljg4fjgqLjgq0NCivjgrXjgqTjg4jjgqYs44OS44Ot44K/44KrDQor44K144Kk44OI44KmLOODpuOCv+OCqw0KK+OCteOCpOODiOOCpizjg6Tjgrnjg5LjgrMNCivjgrXjgqTjg4jjgqYs44K/44Kk44K3DQor44K144Kk44OI44KmLOOCq+OCquODqw0KK+ODj+OCq+ODnuODgCzjgqvjg6gNCivjgrXjgqvjgrDjg4Es44Kz44Km44K4DQor44K144Kr44KkLOODnuODquOCsw0KK+OCteOCq+OCreODkOODqSzjgr/jgqvjgqoNCivjgrXjgqvjgq3jg6Ljg4gs44Oo44K344KoDQor44K144Kr44Oi44OILOOCqOOCpOOCuA0KK+OCteOCq+ODouODiCzjgqjjg6oNCivjgrXjgqvjg6Ljg4gs44OS44OH44OS44OtDQor44K144Kr44Oi44OILOOCpOOCuuODnw0KK+OCteOCq+ODouODiCzjgrHjgqTjgqTjg4ENCivjg5/jgr/jg4ss44Kx44Oz44Kk44OBDQor44K144Kr44Km44OBLOOCr+ODi+ODkuOCsw0KK+OCteOCreODouODiCzjg57jgrXjg5LjgrMNCivjgrXjgq/jg54s44Of44OE44OrDQor44K144Kv44Op44KkLOODouODiOODjuODqg0KK+OCteODjizjg6rjgq3jg6QNCivjgrXjg44s44Oq44Ol44Km44Kk44OBDQor44K144OOLOOCt+ODpeOCpuOCvuOCpg0KK+OCteOCteODgCzjgrfjg6Xjg7PjgrnjgrENCivjgrXjgrXjg4/jg6ks44K544K544OgDQor44K144K144KtLOOCv+OCq+ODkuODiA0KK+OCteOCteOCrSzjg4jjgrfjg5LjgrMNCivjgrXjgrXjgq0s44Ok44K544OV44OfDQor44OI44OA44OLLOODhOODqOOCtw0KK+OCteOCteOCrSzjgrvjgqTjgrgNCivjgrXjgr/jgrEs44OE44ON44OO44OqDQor44K144OI44KmLOODpOOCueODkuODrQ0KK+OCteODiOOCpizjgrfjg7PjgrQNCivjgrXjg4jjgqYs44OS44K144OP44OrDQor44K144OI44KmLOODpuOCpuOCpOODgQ0KK+OCteODiOOCpizjg6jjgrfjgqLjgq0NCivjgrXjg4jjgqYs44K/44Kr44Kr44K6DQor44K144OI44KmLOODquOCqOOCsw0KK+OCteODiOOCpizjg4jjgqrjg6sNCivjgrXjg4jjgqYs44Om44Km44Kk44OBDQor44K144OI44KmLOODj+ODq+OCqg0KK+OCteODiOOCpizjgrfjg7PjgqTjg4Hjg63jgqYNCivjgrXjg4jjgqYs44OO44Oc44OrDQor44K144OI44KmLOOCs+OCpuOCuA0KK+OCteODiOOCpizjg4DjgqTjgrnjgrENCivjgrXjg4jjgqYs44Ki44Kt44OpDQor44K144OI44KmLOOCseOCpOOCv+ODreOCpg0KK+OCteODiOOCpizjg4jjg6LjgrMNCivjgrXjg4jjgqYs44K444Ol44Oz44K4DQor44K144OI44KmLOODiOODouOCrQ0KK+OCteODr+ODgCzjgrHjgqTjgr/jg63jgqYNCivjgrXjg6/jg4As44Oe44KzDQor44K144Ov44OALOODn+ODgeODqA0KK+OCpOODr+OCvyzjg57jg6bjg58NCivjgrXjg6/jgqQs44OI44K344OS44KzDQor44K144Ov44KkLOOCveOCpuOCpOODgeODreOCpg0KK+OCteODpOODjizjgqTjgq/jg6QNCivjgrvjgq0s44K/44Kx44K3DQor44K744Kt44Kw44OBLOODnuOCteODqOOCtw0KK+OCu+OCreOCsOODgSzjg5/jgqsNCivjgrvjgq3jgrDjg4Es44Ki44Kt44OpDQor44K744Kt44ONLOOCouOCreODkuODrQ0KK+OCu+OCreODjizjgr/jgqvjgrcNCivjgrvjg7Pjg4os44OI44K344Of44OEDQor44K744Oq44K244OvLOODkuODreODpuOCrQ0KK+OCu+ODiCzjgqvjg4Tjg6QNCivjgrfjg5Djgr8s44Kz44Km44Kk44OBDQor44K344OQ44K/LOODnuOCteODkuODhw0KK+OCt+ODkOOCvyzjgrHjgqTjgrnjgrENCivjgrfjg5Djgr/jg4ss44K144OI44K3DQor44K344OW44K/44OLLOOCreODp+OCpuOCsw0KK+OCt+OCrCzjgrXjg4jjg6sNCivjgrfjgrLjg47jg5Ys44Kr44K644Oo44K3DQor44K344OeLOODn+OCreOCsw0KK+OCt+ODnuODgCzjg6zjgqTjgrjjg63jgqYNCivjgrfjg57jg4As44K144OI44KzDQor44K344Oe44Og44OpLOODqOOCt+ODn+ODhA0KK+OCt+ODn+OCuizjgr/jgrHjgqvjgroNCivjgrfjg5/jgros44K144OA44Of44OBDQor44K344Oi44OQ44Ok44K3LOOCreODqOOCtw0KK+OCt+ODouOCrOODryzjgrPjgqbjgrgNCivjgrfjg6Ljg5LjgrTjgrcs44OG44OE44OS44K1DQor44K344Oi44Kk44OHLOOCv+OCpOOCtw0KK+OCt+ODiuODgCzjgqvjg4Tjg58NCivjgrfjg43jgqQs44Om44KrDQor44K344Oz44Ks44KkLOOCv+ODgOOCtw0KK+OCt+ODjuODgCzjgrPjgqbjgrgNCivjgrfjg47jg4/jg6ks44K/44Kr44OS44OtDQor44K344OO44K244KtLOODiOODouODqOOCtw0KK+OCt+OCquODpCzjgr/jgq/jg6QNCivjgrfjg6njg4/jg54s44K/44Ot44KmDQor44K344Op44Kk44K3LOODpuOCpuOCpOODgQ0KK+OCt+ODqeOCpOOCtyzjgr/jgqvjgrcNCivjgrfjgr/jg6ks44K/44Kx44K3DQor44K344On44Km44K4LOODkuODreODpuOCrQ0KK+OCt+ODp+OCpuOCuCzjgrfjg7MNCivjg57jgrnjg6Tjg54s44Oe44K144OS44OHDQor44K344Ol44OI44KmLOODpuODn+OCsw0KK+OCveOCqOODgCzjg5Ljg4fjgqvjgroNCivjgr3jg40s44OS44OH44KtDQor44K944ON44OALOOCv+OCr+OCqg0KK+OCveODjuODmSzjg57jgrXjg5Ljg60NCivjgr3jg47jg5ks44Oe44K144K3DQor44K944Op44OOLOODn+ODmw0KK+OCueODgCzjg4rjgqrjg5Ljg60NCivjgrnjgqzjgqQs44OO44Oq44Om44KtDQor44K544Ks44Ov44OpLOOCu+OCpOODng0KK+OCueOCruODouODiCzjgr/jgqvjg5Ljg60NCivjgrnjgq7jg6Ljg4gs44K/44Kr44Oe44K1DQor44K544Ku44Km44OpLOODqOOCt+ODjuODqg0KK+OCueOCruODpOODnizjg57jgrXjg5Ljg60NCivjgrnjgq7jg6Tjg54s44OS44OH44Oe44K1DQor44K544Ku44Ok44OeLOODrOOCpOOCsw0KK+OCueOCuOODo+OCryzjgr/jgqvjg6TjgrkNCivjgrnjgqss44OI44Kq44OrDQor44K544Kx44Ks44OvLOODkuODreODpuOCrQ0KK+OCueODn+ODiuOCrCzjgq3jg5/jgrMNCivjgrnjg5/jgqrjgqss44OI44Oi44OkDQor44K544OK44Ok44OeLOOCseODs+OCpOODgQ0KK+OCueOCuuOCrSzjg57jgrXjg6QNCivjgrnjgrrjgq0s44OS44Ot44K3DQor44Kk44K344KkLOODpOOCueODkuOCsw0KK+OCueOCuuOCrSzjgrfjgrLjg6sNCivjgrnjgrrjgq0s44K/44Kr44Om44KtDQor44K544K644KtLOODkuODh+ODkuODrQ0KK+ODpOODnuOCt+ODrSzjg5Ljg4fjgq0NCivjgrnjgrrjgq0s44OS44Ot44K3DQor44K544K644KtLA0KK+OCueOCuuOCrSzjgqvjg4Tjg6bjgq0NCivjgrnjgrrjgq0s44Kr44K644OO44OqDQor44K544K644KtLOOCs+OCpuOCpOODgQ0KK+OCv+ODkOOCsyzjgq/jg5/jgrMNCivjgr/jg5Djgr8s44Oe44K144KtDQor44OK44Kr44K444OeLOODhuODq+ODpuOCrQ0KK+OCv+ODkOOCvyzjg6jjgrfjg4TjgrANCivjgr/jg4Hjg5Djg4os44OI44K344Om44KtDQor44K/44Ks44OfLOOCv+OCpOOCu+OCpA0KK+ODnuODnuODgCzjgrHjg7PjgrgNCivjgr/jgqzjg68s44Oe44Kz44OIDQor44K/44K444OeLOODouODiOODkuODrQ0KK+OCv+OCq+ODkOODpOOCtyzjg6bjgq0NCivjgr/jgqvjg4As44OI44Oi44OoDQor44K/44Kr44OALOOCv+OCq+ODkuODrQ0KK+OCv+OCq+OCrizjgqjjg58NCivjgr/jgqvjgq4s44OA44Kk44K544KxDQor44K/44Kr44OP44K3LOOCt+ODs+ODpA0KK+OCv+OCq+ODj+OCtyzjg6bjgq3jgqoNCivjgr/jgqvjg4/jgrcs44OS44Ot44KtDQor44K/44Kr44OP44K3LOODkuODreOCsw0KK+OCv+OCq+ODj+OCtyzjgqTjgrrjg6sNCivjgr/jgqvjg4/jgrcs44Oe44K144KtDQor44K/44Kr44OP44K3LOODn+OCt+ODp+OCpg0KK+ODr+OCv+ODiuODmSzjg57jgq0NCivjgr/jgqvjg4/jgrcs44Ok44K544K3DQor44K/44Kr44OP44K3LOODpuOCv+OCqw0KK+OCv+OCq+ODj+OCtyzjgrPjgqbjg5jjgqQNCivjgr/jgqvjg4/jgrcs44Oe44K144OV44OfDQor44K/44Kr44KkLOODkuODh+OCrQ0KK+OCv+OCq+OCr+ODqSzjgrHjg7PjgrnjgrENCivjgr/jgqvjgq/jg6ks44K344ObDQor44K/44Kr44Oe44OBLOOCq+ODhOODjuODqg0KK+OCv+OCq+ODnuODhCzjgqLjgq3jg6jjgrcNCivjg57jg4Tjg4rjgqws44Ok44K544OS44OtDQor44K/44Kr44Oi44OILOODqOOCt+OCrQ0KK+OCv+OCq+ODoOODqSzjg47jg5bjgqvjg4QNCivjgr/jgqvjgqrjgqss44K044KmDQor44K/44Kr44K544KuLOODj+ODq+OCsw0KK+OCv+OCq+ODpCzjg5Ljg4fjgqLjgq0NCivjgr/jgqvjg6Tjg54s44OS44Ot44Om44KtDQor44Kt44K/44OP44OpLOOCseODs+OCpOODgQ0KK+OCv+OCseODgCzjgq/jg4vjg5Ljg4cNCivjgr/jgrHjg4As44Oe44K144OS44OtDQor44K/44Kx44OP44OKLOODnuOCteOCq+ODhA0KK+OCv+OCseODnuODhCzjg57jgrXjg58NCivjgr/jgrHjgqrjgqss44Of44OO44OrDQor44Kk44K344Kr44OvLOODouODiOODleODnw0KK+OCv+OCseOCt+OCvyzjg4rjgqrjgq0NCivjgr/jgrHjgr/jg4ss44OO44OW44Om44KtDQor44K/44Kx44Km44OBLOOCteODiOOCtw0KK+OCv+OCseOCpuODgSzjgrXjg4jjgrcNCivjgr/jgrHjg6Tjg54s44K/44Kx44K3DQor44K/44Kx44K244OvLOOCreODqOOCuA0KK+OCv+OCreOCtuODryzjg4Tjg4jjg6ANCivjgr/jgq3jgrbjg68s44OB44Kr44OpDQor44K/44Oe44KkLOODiOODouODpuOCrQ0KK+OCv+ODiuODj+OCtyzjg47jg5bjg6bjgq0NCivjgr/jg4rjgqss44Kx44Oz44K/44Ot44KmDQor44K/44OK44KrLOOCs+OCueOCsQ0KK+OCv+ODiuOCqyzjg5Ljg63jg6bjgq0NCivjgr/jg4rjgqss44OS44Ot44K3DQor44K/44OK44KrLOOCseOCpOOCsw0KK+OCv+ODiuOCqyzjg6Ljg4jjgq0NCivjgr/jg4rjgqss44K744Kk44K4DQor44K/44OK44KrLOOCq+OCuuODkuODiA0KK+OCv+ODiuOCqyzjg6bjgqbjgrMNCivjgr/jg4rjgqss44Ko44Kk44Kk44OBDQor44K/44OK44KrLOOCqOOCpOOCuA0KK+OCv+ODiuOCqyzjg4Tjg43jg5Ljg60NCivjgr/jg4rjgqss44Oe44K144OS44OtDQor44K/44OK44KrLOODjuODquODkuODrQ0KK+OCv+ODiuOCqyzjgqvjgrrjg4rjgqoNCivjgr/jg4rjgqss44OO44Oc44OrDQor44Kk44K344OALOOCseODs+ODpA0KK+OCv+ODiuOCqyzjgqvjgrrjgqoNCivjgr/jg4vjgrDjg4Es44K344Ky44OrDQor44K/44OL44Kw44OBLOOCseODs+OCpOODgQ0KK+OCv+ODi+OCpCzjg6bjg6rjgrMNCivjgr/jg4vjg6Djg6ks44Of44OB44OoDQor44K/44OL44Kq44KrLOODiOODouOCsw0KK+OCv+ODs+ODjizjg6bjgq3jgqoNCivjgr/jg4zjg54s44Oe44Oi44OrDQor44Oo44Kz44Ok44OeLOODr+OCv+ODqw0KK+OCv+OCt+ODrSzjgqLjgq3jg6kNCivjgr/jgrfjg60s44Kx44Oz44Kk44OBDQor44K/44OGLOODkuODh+ODiA0KK+OCv+OCpuODqSzjg57jgrPjg4gNCivjgr/jgr7jgqgs44Om44Km44KzDQor44K/44K644KxLOODnuOCs+ODiA0KK+ODhuODs+ODoizjgqvjg6jjgrMNCivjg4bjg6njg4As44OB44Ko44KzDQor44OG44Op44Oi44OILOOCqOOCpOOCuA0KK+ODhuODqeOCquOCqyzjgrHjgqQNCivjg4bjgrrjgqss44OS44Ot44Om44KtDQor44OI44Kw44OBLOOCuOODpeODs+OCsw0KK+ODiOOCpuODnizjgrPjgqbjgqTjg4ENCivjg4jjgqbjg54s44OS44Ot44Ok44K5DQor44OI44Kq44Ok44OeLOOCq+OCuuODpuOCrQ0KK+ODiOOCreOCquOCqyzjgr/jgqvjgrfjgrINCivjgr/jg4vjg6Tjg54s44OS44OH44Ki44KtDQor44Of44Km44OpLOOCveOCpuOCpOODgQ0KK+ODiOOCr+ODqSzjgqvjgrrjgqoNCivjg4jjgq/jg6Tjg54s44OS44Ot44OkDQor44OI44Of44Kk44K3LOOCr+ODi+ODkuOCsw0KK+ODiOODn+OCq+ODryzjg47jg6rjgrMNCivjg4jjg5/jg4rjgqws44Ki44OE44K3DQor44OI44Of44K/LOODleODn+OCqA0KK+ODiOODn+OCvyzjg6Ljg4jjg6jjgrcNCivjgqrjgqrjg6Ljg6os44Oe44K144Om44KtDQor44OI44Oi44K/LOODkuODh+ODkuOCsw0KK+ODiOODouODjizjgrHjgqTjgrgNCivjg4jjg6rjgqvjgqQs44OK44Kq44KtDQor44OI44Oq44Km44OfLOODqOOCt+ODjuODlg0KK+ODiOODhOOCqyzjgqLjg6TjgrMNCivjg4jjg6jjg4As44Kx44Kk44Kk44OBDQor44OI44Oo44OALOODn+OCreODkuODrQ0KK+ODiOODqOOCquOCqyzjgr/jgq/jg47jg5YNCivjg4Tjg4Hjg4As44Kz44Km44K4DQor44OE44OALOOCs+OCpuOCpOODgQ0KK+ODhOOCuOOCv+ODiyzjg57jgrXjg4TjgrANCivjg4Tjgqvjg6Ljg4gs44Oo44K344OG44OrDQor44OE44Kr44Oi44OILOODkuODreOCouOCrQ0KK+ODhOOCq+ODr+OCrSzjg57jgrXjgr/jgqsNCivjg4Tjg6vjg57jgq0s44Oo44Km44KzDQor44Kk44OB44OQ44Oz44Ks44K7LOODpuOCreOCsw0KK+OCteOCq+OCpCzjg5/jg5vjgrMNCivjgqbjg4Hjg4As44Kr44K644OS44OtDQor44Kr44OK44Kq44KrLOOCs+OCpuODmOOCpA0KK+OCpuODgeODgCzjgr/jg4Tjg6QNCivjgqbjg4Hjgqbjg58s44OK44Kq44OS44KzDQor44Km44OB44Ok44OeLOODleODn+OCv+OCqw0KK+OCpuODgeODpOODnizjg6bjgq0NCivjgqbjg4As44Ki44OE44KzDQor44Km44OA44Ks44OvLOOCv+ODreOCpg0KK+OCquOCt+ODnizjgqLjg4TjgrMNCivjgqbjgqjjg4As44Ko44Kk44KrDQor44Km44Ko44OALOODqOOCt+ODn+ODhA0KK+OCpuOCqOODj+ODqSzjg5Ljg4fjg6bjgq0NCivjgqbjgqjjg6Djg6ks44Oe44K144KtDQor44Km44Ko44OOLOOCquOCteODoA0KK+OCpuOCqOODjizjg5Ljg63jg47jg6oNCivjgqbjgqjjgrnjgq4s44Oe44K144OfDQor44Km44Ko44OE44KtLOOCv+OCpOODgQ0KK+OCpuOCq+ODryzjg57jgrXjg5Ljg4cNCivjgqbjg57jgrrjg6Es44K344Oz44OkDQor44Km44Oh44OP44OpLOODiOOCt+OCqg0KK+OCpuODoeODoOODqSzjg5Ljg63jg5Xjg58NCivjgqbjg6Hjgrbjg68s44OS44Ot44K3DQor44Km44OOLOODkuODreOCtw0KK+OCpuODjizjg5LjgrXjg6QNCivjgqbjg6njg6Ljg4gs44Kx44KkDQor44Km44Or44OeLOODnuOCteODleODnw0KK+OCpuOCt+ODkCzjg5/jg47jg6sNCivjg4rjgqzjgr8s44Oq44Ol44Km44K/DQor44Km44K344Kw44K1LOODiOOCt+OCouOCrQ0KK+ODj+OCu+OCrOODryzjg6jjgrfjgqLjgq0NCivjgrXjgqvjg57jgq0s44Om44OqDQor44Km44Ov44OZLOODnuOCteODpuOCrQ0KK+ODr+ODgCzjgqLjgq3jgrMNCivjg6/jgqvjgqos44Kx44Kk44K4DQor44Ov44Kr44KqLOODrOOCpOOCsw0KK+ODr+OCreOCvyzjg6jjgqbjgrMNCivjgqTjg47jg57jgr8s44OS44Ot44OfDQor44Ov44Kv44KkLOODnuOCteODpA0KK+ODr+OCt+OCtuODryzjgrHjgqTjgrMNCivjg6/jgrfjgrrjgqss44Kz44Km44K4DQor44Ov44K/44OZLOODnuOCteODiOOCtw0KK+ODr+OCv+ODiuODmSzjg47jg6rjg6bjgq0NCivjg6/jgr/jg4rjg5ks44Kr44K644OS44OtDQor44Ov44K/44OK44OZLOOCt+OCsuODqw0KK+ODr+OCv+ODiuODmSzjgr/jgqvjgqoNCivjg6/jgr/jg4rjg5ks44OE44Oo44K3DQor44Ov44K/44OK44OZLOODiOODouODpuOCrQ0KK+ODr+OCv+ODiuODmSzjg4DjgqTjg4ENCivjg6/jgr/jg4rjg5ks44OS44OH44KtDQor44Ov44K/44OK44OZLOODkuODreOCq+OCug0KK+ODr+OCv+ODiuODmSzjg5Ljg63jg58NCivjg4jjg6jjgr8s44OS44OI44K3DQor44Ov44K/44OqLOOCseOCpOOCsw0KK+ODiOODn+ODpOOCuSzjg4jjgrfjg5LjgrUNCivjg6Tjgqjjgqzjgq0s44Oo44K344Ki44KtDQor44Ok44KuLOODn+ODqOOCsw0KK+ODpOOCrizjg6jjgrfjg57jgrUNCivjg6Tjgq7jg4zjg54s44OA44Kk44K544KxDQor44Ok44KvLOOCouOCreODiA0KK+ODpOODnuODgCzjgqvjgrrjg5LjgrMNCivjg6Tjg57jg4As44Oe44KtDQor44Ok44Oe44OALOODqOOCpuOCsw0KK+ODpOODnuOCruOCtyzjgqLjg4TjgrcNCivjg6Tjg57jgrDjg4Es44Kz44Km44Kk44OBDQor44Ok44Oe44Kw44OBLOODiOOCt+ODpuOCrQ0KK+ODpOODnuOCsOODgSzjgqvjgqrjg6sNCivjg6Tjg57jgrDjg4Es44Ki44Kt44OpDQor44Ok44Oe44Kz44K3LOODgOOCpOOCueOCsQ0KK+ODpOODnuODouODiCzjg57jgrXjg5Ljg60NCivjg6Tjg57jg6Ljg4gs44Kx44Oz44K4DQor44Ok44Oe44Oi44OILOOCv+OCseOCqg0KK+ODpOODnuODouODiCzjgrvjgqTjgqTjg4ENCivjg6Tjg57jg6Ljg4gs44K344Ol44Km44K4DQor44K/44OB44OQ44OKLOODnuOCteODiOOCtw0KK+ODpOODnuODouODiCzjgrjjg6Xjg7MNCivjg6Tjg57jg6Ljg4gs44Kx44Oz44Kk44OBDQor44OP44Op44K/44OLLOODiOODouOCsw0KK+ODpOODnuODiuOCqyzjgr/jgqvjgrcNCivjg6Tjg57jg40s44Oo44K344OV44OfDQor44Ok44Oe44K344K/LOOCouOCreODkuOCsw0KK+ODpOODnuOCt+OCvyzjg5Ljg63jgrcNCivjg6Tjg57jgrfjgr8s44OK44Kq44KzDQor44Ok44Oe44K/44OLLOOCv+OCq+OCtw0KK+ODpOODnuOCpuODgSzjg4jjg6LjgrMNCivjg6Tjg57jgrbjgq0s44Ki44Kt44OpDQor44Ok44OKLOODkuODreOCouOCrQ0KK+ODpOODiuODmSzjg5Ljg63jgq0NCivjg6Tjg4rjgqzjg68s44Oq44On44KmDQor44Ok44OK44KuLOODiOOCt+OCouOCrQ0KK+ODpOODiuOCruODgCzjg6rjg6XjgqbjgqTjg4ENCivjg6TjgrXjgqss44Kr44K644OS44OHDQor44Ok44K544OALOODnuOCteODn+ODhA0KK+ODpOOCueODleOCryzjg6bjgr/jgqsNCivjg6Tjgrnjgqvjg68s44Kt44Oo44Kr44K6DQor44Oo44Kz44K144OvLOOCv+OCr+ODpA0KK+ODqOOCs+OCvyzjg5Ljg63jgrcNCivjg6jjgrPjgr8s44Kr44K644OS44OtDQor44OP44Op44OALOOCs+OCueOCsQ0KK+ODqOOCs+OCpuODgSzjg57jgrXjg5Ljg60NCivjg6jjgrPjgqbjg4Es44K344Oz44K544KxDQor44Oo44Kz44Ok44OeLOODnuOCs+ODiA0KK+ODqOOCs+ODpOODnizjgqvjgrrjg47jg5YNCivjg6jjg43jg4As44OK44Kq44KtDQor44Oo44ON44OOLOODiuOCquODnw0KK+OCq+OCteODj+ODqSzjgrXjg4jjg58NCivjg6jjgrfjg4As44OS44OH44KqDQor44Oo44K344OALOOCuOODpeODsw0KK+ODqOOCt+ODgCzjg5Ljg63jgrcNCivjg6jjgrfjg4As44OK44Kq44OIDQor44Oo44K344OALOODkuODreOCtw0KK+ODqOOCt+ODieODoSzjgrfjgrrjgqsNCivjg6jjgrfjg4/jg6ks44K/44Kr44OS44OtDQor44Oo44K344KkLOOCteODiOODqw0KK+ODqOOCt+OCpCzjg57jgrPjg4gNCivjg6jjgrfjgqvjg68s44K344Kq44OqDQor44Oo44K344OfLOOCv+OCpOOCrQ0KK+ODqOOCt+ODjizjg5Xjg5/jgqoNCivjg6jjgrfjg44s44Ok44K544K3DQor44Oo44K344OOLOODiOODouOCsw0KK+ODqOOCt+OCquOCqyzjgrHjg7PjgqTjg4ENCivjg6jjgrfjgqrjgqss44Kz44Km44Kk44OB44Ot44KmDQor44Oo44K344K/44KxLOOCv+ODgOOCtw0KK+ODqOOCt+OCtuODryzjg4jjgrfjgqvjg4QNCivjg6bjgrrjg4/jg6ks44Kz44Km44K4DQor44K844Oz44KyLOOCq+OCuuOCv+OCqw0KK+OCuuOCtyzjg5/jgqoNCivjgrTjg58s44OS44Ot44KtDQor44K044OI44KmLOODkuODreOCtw0KK+OCpOOCseODgCzjgr/jgrHjg4/jg6sNCivjgqTjg54s44Oe44K144OS44OtDQor44Ki44OZLOODnuODiuODlg0KK+OCq+ODiOOCpizjgrfjgrLjg6sNCivjgqvjg6/jg5Djgr8s44K344Ky44OrDQor44Kz44OQ44Ok44K3LOODpuOCreODkuOCsw0KK+OCs+ODs+ODiSzjgq/jg4vjg6Djg40NCivjgq/jg5ws44Oe44K144OS44KzDQor44Kv44Op44Oi44OBLOODqOOCpuOCsw0KK+ODnuODq+ODpOODnizjg6jjgrfjgqLjgq0NCivjg6Ljg6rjgqvjgq8s44Om44Kt44KqDQor44Og44Op44Kq44KrLOODkuODreODpuOCrQ0KK+ODiuOCrOOCt+ODnizjg6jjgqbjgrMNCivjg4rjgqss44OI44K344OkDQor44OK44Kr44OP44OpLOOCv+OCr+ODpA0KK+ODiuOCq+ODoOODqSzjg4Tjg6jjgrcNCivjg4rjgqvjgrss44OI44OfDQor44OK44Oq44K/LOODkuOCteOCqA0KK+ODi+OCt+ODoOODqSzjgqjjg5/jgrMNCivjg47jg4rjgqss44OS44OH44OK44KqDQor44Kq44Ks44OvLOODqOOCt+OCqg0KK+OCquOCsOODqSzjg4jjgqrjg6sNCivjgqrjgqrjg58s44Oe44Kz44OIDQor44Kq44Kr44OOLOODnuOCteODpA0KK+OCt+ODnuODgCzjgrjjg6Xjg7PjgrgNCivjgrfjg5/jgros44Kr44K644OO44K344OzDQor44K344Og44OpLOODkuODh+ODpuOCrQ0KK+OCv+OCq+ODj+OCtyzjg5/jg4Tjg57jgrUNCivjgr/jgqvjg57jg4Qs44Kx44Oz44Kk44OBDQor44Km44Ko44OALOODoOODhOOCqg0KK+OCpuOCuCzjgrTjgqYNCivjgqbjg4Tjg58s44K344Ol44Km44Kk44OBDQor44Ki44OZLOODqOOCpuOCpOODgQ0KK+OCs+ODs+ODiSzjgr/jgqvjgrcNCivjgr/jgqvjg47jgqbjg4Es44Kx44Oz44K144KvDQor44Kk44OO44Km44KoLOODoOODjeODkuODrQ0KK+ODiuOCq+ODj+ODqSzjg5Ljg4jjgrcNCivjgqLjg4Djg4Es44Om44K/44KrDQor44OK44Kr44OOLOODkuODreOCrQ0KK+OCouOCpOODkCzjg47jg6rjgqLjgq0NCivjgqLjgqTjg5As44K/44Kx44K3DQor44Ki44Kk44OQLOOCteODiOOCtw0KK+OCouOCpOODgCzjg57jgrXjg5Ljg60NCivjgqLjgqTjg4/jg6ks44Ki44OE44K3DQor44Ki44Kr44Kk44K3LOODnuOCteOCquODnw0KK+OCouOCq+OCpOODryzjg6jjgrfjg5Ljg60NCivjgqLjgqvjgqrjgq4s44OI44K344OS44OHDQor44Ki44Kt44K/LOODhOODqOOCtw0KK+OCouODnuODjizjg4rjgqrjgrMNCivjgqLjgqrjgq0s44OS44Ot44KzDQor44Ki44Kq44KtLOODpuOCreOCsw0KK+OCouOCquODjOODnizjg5Ljg4jjgrcNCivjgqLjgqrjg6Tjgq4s44Ko44Kk44K4DQor44Ki44Op44KtLOOCouOCreODqQ0KK+OCouODquODnuODgSzjg4jjgrfjg47jg5YNCivjgqLjg6rjgr8s44OS44OH44Ki44KtDQor44Ki44K144OALOODhuODhOODpA0KK+OCouOCteOCqOODgCzjgr/jgqvjg5Ljg60NCivjgqLjgrXjg4/jg6ks44Oo44K344OP44OrDQor44Ki44K144Kr44OvLOOCq+OCuuODkuOCsw0KK+OCouOCteODouODiCzjg4Tjg4jjg6ANCivjgqLjgrXjg44s44Om44K/44KrDQor44Ki44K/44Kw44OBLOODkuODreOCtw0KK+OCouODpOOCrSzjg4/jg6vjgrMNCivjg5Djg5As44K344Ol44Oz44K544KxDQor44OQ44OQLOOCq+OCquODqw0KK+ODkOODkCzjg4rjg4rjgrMNCivjg5Djg7Ms44K/44Kx44K3DQor44OA44Kk44Kz44KvLOODn+ODgeODqA0KK+ODgOODhizjgrfjgrLjg5LjgrMNCivjgrXjg44s44K444Ol44Oz44Kk44OBDQor44Of44OE44Kq44KrLOOCt+OCsuOCrQ0KK+ODh+ODs+ODgCzjgqvjgrrjg5LjgrMNCivjg4njgqQs44Ko44OfDQor44Ko44Oz44OJLOODiOODouODkuOCsw0KK+OCqOODs+ODiSzjg6jjgqbjgqTjg4Hjg63jgqYNCivjgqjjgrbjg68s44OK44Oq44OS44OHDQor44OV44K444KoLOOCv+OCseODleODnw0KK+ODleOCuOOCpCzjgqvjgrrjg5Ljg60NCivjg5XjgrjjgqQs44Oe44K144Ki44KtDQor44OV44K444Oe44KtLOODnuOCteOCq+ODhA0KK+ODleOCuOODouODiCzjg5/jg68NCivjg5Xjgrjjg6Ljg4gs44Of44Kt44KqDQor44OV44K444Og44OtLOOCs+OCpuOCuA0KK+ODouODreOCuuODnyzjgqvjg7PjgrgNCivjg5XjgrjjgrXjg68s44Kx44Oz44K4DQor44OV44K444K/LOODkuODreODpuOCrQ0KK+ODleOCq+OCuyzjgr/jg4Tjg6QNCivjg5Xjgq/jg4As44K344K744KkDQor44OV44Kv44OJ44OhLOOCv+OCq+OCtw0KK+ODleOCr+OCpCzjg5LjgrXjgrcNCivjg5Xjgq/jg4rjgqws44OV44Of44OS44K1DQor44OV44Kv44K344OeLOODkuODh+OCqg0KK+ODleOCr+OCtuODryzjg57jg6rjgqsNCivjg5Xjg6vjg5Djg6Tjgrcs44Ki44Kt44OpDQor44OV44Or44Kr44OvLOODkuODh+OCrQ0KK+ODleODq+OCq+ODryzjgqLjgrHjg58NCivjgrTjgqYs44OP44OKDQor44K044Oe44OrLOOCueOCueODoA0KK+OCtOODiOOCpizjgrfjg6fjgqYNCivjgrTjg4jjgqYs44K/44OE44OkDQor44K044OI44KmLOODgeOCuuOCqw0KK+ODjuODouODiCzjgqvjgqrjg6sNCivjg4/jgq7jg6/jg6ks44Oq44Ol44Km44K/DQor44OP44Kk44Ok44OeLOOCreODp+OCpuOCsw0KK+ODj+ODnizjgqvjgrrjg5/jg4ENCivjg4/jg57jg4Es44K344Ol44Km44Kk44OBDQor44OP44Oe44OALOODiuOCquODkuOCtQ0KK+ODj+ODnuOCv+ODiyzjgrfjgrLjgqoNCivjg4/jg4rjgqQs44Ok44K544OS44OIDQor44OP44OK44K/LOODkuODqeOCrw0KK+ODj+ODjeOCuCzjg5Ljg63jgrMNCivjg4/jg7Pjgrbjg68s44Oe44K144OS44KzDQor44OP44OpLOODn+ODmw0KK+ODj+ODqSzjgrfjg7PjgrgNCivjg4/jg6njg4As44Kr44K644OS44OHDQor44OP44Op44OALOOCreODqOOCtw0KK+ODj+OCu+OCrOODryzjg6bjgr/jgqsNCivjg4/jgrvjgqzjg68s44OK44Kq44KzDQor44OP44K744Ks44OvLOODhuODhOODpA0KK+ODj+OCt+OCsOODgSzjg57jgrXjg6jjgrcNCivjg4/jgrfjg6Ljg4gs44Ok44K544Om44KtDQor44K044OI44KmLOOCseOCpA0KK+OCq+OCuOODr+ODqSzjg6jjgrfjgrMNCivjg4/jgrnjg58s44OE44Kw44OO44OqDQor44Kr44K/44Ok44OK44KuLOOCqOOCpOOCpOODgQ0KK+ODj+OCv+OCseODpOODnizjgrfjg7PjgqTjg4ENCivjg6Djg6njgqQs44Of44OE44Om44KtDQor44OP44K/44OLLOODquODpeOCpuOCpOODgQ0KK+ODj+ODg+ODiOODqizjg6Tjgrnjg47jg5YNCivjg4/jg4Pjg4jjg6os44K/44Kr44Om44KtDQor44OP44Ok44K3LOOCv+OCq+ODpuOCrQ0KK+OCquOCquOCueODnyzjg57jgrXjgrMNCivjg4/jg6Tjgrcs44Kr44K644OK44OqDQor44OP44Ok44K3LOODqOOCt+ODjuODlg0KK+ODj+ODpOOCt+ODgCzjgrXjgq0NCivjg5Ljgqws44K/44Kx44KqDQor44OS44Ks44K3LOODquODpeOCpuOCueOCsQ0KK+ODkuOCrOOCt+ODgCzjgrfjg6XjgqbjgqTjg4ENCivjg4jjg6jjg4As44Om44Km44Kk44OB44OtDQor44OS44OOLOOCv+OCseODkuOCsw0KK+ODkuODqSzjg4bjg4Tjg6QNCivjg5Ljg6njg6Ljg4gs44K444Ol44Oz44KzDQor44OS44Op44KqLOODnuOCteODiA0KK+ODkuODqeOCqizjg57jgrXjg6bjgq0NCivjg5Ljg6njgr8s44OK44Kq44OfDQor44OS44Op44Ok44OeLOOCv+OCseOCtw0KK+ODkuODreOCpCzjgr/jgqvjgrcNCivjg5Ljg63jgqvjg68s44OO44Oq44Kr44K6DQor44OS44Ot44Kr44OvLOODqOOCv+ODreOCpg0KK+ODkuODreODnuOCuSzjgqvjgrrjg6bjgq0NCivjg5Ljg63jgrss44Of44OE44OrDQor44OS44Ot44K7LOOCv+OCq+OCqg0KK+ODkuOCt+ODpCzjgrXjg4jjgrcNCivjg5vjgqbjgrfjg6fjgqYs44Ki44Kt44KzDQor44Ob44Oz44OALOODn+ODm+OCsw0KK+ODj+ODpOOCtyzjg47jgr7jg6ANCivjg5vjg7Pjg54s44K/44Kx44K3DQor44Ob44Oq44Kw44OBLOODhuODq+OCqg0KK+ODm+ODquOCpCzjg5Ljg63jg58NCivjg5vjgrcs44Ki44Kt44OS44KzDQor44Ob44K944KkLOOCq+ODhOODpA0KK+ODm+OCveODnyzjg6TjgrnjgqoNCivjg5vjg4Pjgr8s44Oe44K144OS44OHDQor44OV44Kv44Ot44KkLOOCseODs+OCuA0KK+ODleODq+ODpCzjgqLjgq3jg5Ljg4gNCivjgqTjg5bjgqss44K944Km44Kk44OBDQor44Kk44OB44OQLOOCv+OCq+OCtw0KK+OCpOODgeODj+ODqSzjg5Ljg63jgrcNCivjgqTjg4Hjgqvjg68s44OS44Ot44K3DQor44Kk44OB44Og44OpLOOCuOODpeODs+OCpOODgeODrQ0KK+OCpOODgeODjuOCu+OCrSzjg4jjgrfjg5Ljg60NCivjgqTjgqTjg4As44OI44K344OkDQor44Kk44Kk44OALOOCuOODpeODs+OCsw0KK+OCpOOCpOOCuOODnizjg6jjgqbjgrMNCivjgrfjg47jg4/jg6ks44OP44K444OhDQor44Kk44Kx44OALOODquOCqA0KK+OCpOOCseODgCzjg6bjgq0NCivjgqTjgrHjg4As44Om44K/44KrDQor44Kk44Kx44OALOODqOOCpuOCsw0KK+OCpOOCseOCtuODryzjgqvjgrrjgr/jgqsNCivjgqTjg57jgqQs44Oe44Om44OfDQor44Kk44Oe44KkLOOCseOCpOOCvw0KK+OCpOODnuOCpCzjgq/jg4vjg5LjgrMNCivjgqTjg57jgq0s44Of44OO44OrDQor44Kk44Oe44Og44OpLOOCseODs+OCueOCsQ0KK+OCpOODouODiCzjgrfjg6fjgqbjgqTjg4ENCivjgqLjg5ks44Oo44K344Ok44K5DQor44Kk44OK44OALOODpuOCreOCsw0KK+OCpOODjuOCpuOCqCzjg4jjg6Ljg5Ljg60NCivjgqTjg47jgqbjgqgs44K/44Kr44K3DQor44Kk44OO44Km44KoLOODnuOCteODkuOCsw0KK+OCpOODjuOCpuOCqCzjgqvjgrrjgqoNCivjgqTjg6rjgqgs44Oo44K344OS44KzDQor44OE44Or44Kq44KrLOODkuODiOOCtw0KK+OCquOCquODj+OCtyzjg5LjgrXjg4jjgrcNCivjgqTjgrfjg4As44Om44Km44K4DQor44Kk44K344OALOOCseODs+OCuA0KK+OCpOOCt+ODgCzjgrPjgqbjgrgNCivjgqTjgrfjg4As44OP44K444OhDQor44Kk44K344Kw44OtLOODqOOCt+OCrQ0KK+OCpOOCt+ODj+ODqSzjgrfjgrLjgqoNCivjgqTjgrfjg4/jg6ks44K444Ol44Oz44KzDQor44Kk44K344KkLOODn+ODhOODkuOCsw0KK+OCpOOCt+OCq+ODryzjg57jgrXjg47jg6oNCivjgqTjgrfjgqvjg68s44Ki44Kt44OpDQor44Kk44K344Ov44K/LOODnuOCteODjuODqg0KK+OCpOODiOOCpizjgr/jgqvjgrcNCivjgqTjg4jjgqYs44Ki44Kt44KzDQor44Kk44OI44Ok44OeLOODiOOCt+OCqg0KK+OCpOODhOOCrSzjgqvjgrrjg5Ljg60NCivjgqTjg6/jgq0s44Kz44Km44K/44Ot44KmDQor44Kk44Ov44K144KtLOOCv+OCseOCtw0KK+OCpOOCuuODhCzjg6bjgqbjgrgNCivjgrjjg5Ys44Ko44Of44KzDQor44Kr44OJ44KkLOODhuODq+ODpOOCuQ0KK+OCouODgOODgSzjgrHjg7PjgrgNCivjgqvjgqQs44K/44Kr44Om44KtDQor44Kr44Kk44K7LOODkuODreOCouOCrQ0KK+OCq+OCpOOCuuOCqyzjg5Ljg63jgrMNCivjgqvjgrjjg6/jg6ks44OS44Ot44K3DQor44Kr44KtLOOCq+ODhOODiOOCtw0KK+OCq+OCreODnyzjgrPjgqbjgrgNCivjgrnjgq7jgr8s44Os44Kk44KtDQor44Kr44Kv44K/44OLLOODpOOCueOCsw0KK+OCq+ODn+ODkOODpOOCtyzjgqvjg4Tjg5LjgrMNCivjgqvjg5/jgqzjgq0s44OO44Oq44OS44OHDQor44Kr44Of44OkLOOCteODiOOCtw0KK+OCq+ODouODgCzjgrPjgqbjgqTjg4ENCivjgqvjg6Ljg4gs44K/44Oi44OEDQor44Kr44Oz44OQ44Ok44K3LOODouODiOODkuODrQ0KK+OCq+ODjeOCsyzjgrfjg7PjgrQNCivjgqvjg43jgrMs44Of44OE44OkDQor44Kr44ON44KzLOOCr+ODi+ODkuOCsw0KK+OCq+ODjeOCsyzjg5/jg4TjgqoNCivjgqvjg4vjgrXjg68s44K/44OE44OkDQor44Kr44OrLOOCv+OCq+ODpuOCrQ0KK+OCq+OCt+ODr+OCrizjg4bjg4Tjg6QNCivjgqvjgrnjg58s44Oo44Km44Kk44OB44Ot44KmDQor44Kr44K/44Ku44OqLOODiuOCquODpuOCrQ0KK+OCq+ODiOOCpizjg5/jg4Tjg5Ljg60NCivjgqvjg4jjgqYs44Ki44OE44K3DQor44Kr44OI44KmLOODpuOCpuOCsw0KK+OCq+ODiOOCpizjg47jg5bjgqoNCivjgqvjg4jjgqYs44K/44OE44Ot44KmDQor44K/44Kw44OBLOOCuOODpeODs+OCsw0KK+OCq+ODiOOCpizjgrHjg7PjgrgNCivjgqvjg4jjgqYs44Kz44KmDQor44Kr44OI44KmLOOCt+ODs+OCpOODgQ0KK+OCq+ODhOODqSzjgqLjgq3jg6kNCivjgr3jgrQs44Kx44OzDQor44Kr44Ov44OS44OILOODnuOCs+ODiA0KK+OCq+ODr+OCpCzjg6rjgqjjgrMNCivjgqvjg6/jgqvjg58s44Kz44Km44K4DQor44Kr44Ov44OfLOOCt+OCsuODqw0KK+OCq+ODr+ODoOODqSzjgrfjg7PjgrgNCivjgqvjg6/jg6Djg6ks44OG44Or44KtDQor44Kr44Ov44K144KtLOODkuODreOCtw0KK+OCq+ODr+OCteOCrSzjg4jjg6LjgqvjgroNCivjgqvjg6/jgqbjg4Es44Oe44K144Ki44KtDQor44Kr44OE44KtLOOCouOCreODiOODog0KK+OCreODgCzjg5jjgqTjgrgNCivjgq3jg4njgrPjg60s44OS44Ot44K3DQor44Oi44OqLOOCseODs+OCuA0KK+OCreOCr+ODgSzjg57jgrPjg4gNCivjgq3jgq/jgqzjg68s44Of44KoDQor44Kt44Og44OpLOODn+ODhOODkuODrQ0KK+OCreODoOODqSzjgrXjg4jjg6sNCivjgq3jg6Djg6ks44K/44Kx44K3DQor44Kt44Og44OpLOOCv+OCr+ODnw0KK+OCreODjuOCt+OCvyzjg4jjg6jjgq0NCivjgq3jg47jgrfjgr8s44Oo44K344Ki44KtDQor44Kt44OO44K344K/LOODqOOCt+ODj+ODqw0KK+OCreODjuOCt+OCvyzjg6bjgqvjg6oNCivjgq3jgrfjg4As44Om44Kt44KzDQor44Kt44K344Kr44OvLOODnuOCteODkuOCsw0KK+OCreOCvyzjg4jjgrfjgqoNCivjgq3jgr/jgrDjg4Es44Kx44Kk44K544KxDQor44Ki44Oe44OOLOODn+ODgeODqA0KK+OCreOCv+ODoOODqSzjg57jg4rjg5YNCivjgq3jgr/jg6Tjg54s44OB44OS44OtDQor44Kz44OQ44Ok44K3LOODiuOCquODiA0KK+OCs+ODkOODpOOCtyzjg6Ljg4jjg47jg6oNCivjgrPjg5Djg6Tjgrcs44OS44Ot44Om44KtDQor44Kz44OQ44Ok44K3LOODpOOCueODhuODqw0KK+OCs+ODkOODpOOCtyzjg4jjg6LjgqLjgq0NCivjgrPjg5Djg6Tjgrcs44K444Ol44Oz44K4DQor44Ki44Oh44K344K/LOODiuOCquOCrQ0KK+OCs+ODkOODpOOCtyzjgrPjgqbjgqTjg4ENCivjgrPjg5Djg6Tjgrcs44OS44Ot44OfDQor44Kz44OQ44Ok44K3LOOCseODs+OCuA0KK+OCs+ODkOODpOOCtyzjgq3jg6jjgr/jgqsNCivjgrPjg5Djg6Tjgrcs44Oe44Om44OfDQor44Kz44OQ44Ok44K3LOODgOOCpOOCueOCsQ0KK+OCs+ODkOODpOOCtyzjgr/jgqvjg5Ljg60NCivjgqrjg4As44Oe44K144OS44KzDQor44Kz44Oc44OqLOODkuODh+ODnw0KK+OCs+ODgOOCpOODqSzjg47jg5bjg5Ljg60NCivjgrPjg4Djg54s44K744Kk44K4DQor44Kr44Ov44Kw44OBLOOCouODhOOCtw0KK+OCs+ODgOODhizjg5/jg4Tjg6sNCivjgrPjgqws44OO44Oq44Om44KtDQor44Kz44KsLOOCouOCreODqQ0KK+OCs+OCrOODjeODnuODqyzjg57jgrXjg58NCivjgrPjg4/jg6ks44OI44Oi44OK44OqDQor44Kz44Km44OALOOCseODs+OCpOODgQ0KK+OCs+ODs+ODjizjg57jg4rjg5YNCivjgrPjgrbjgqQs44Kz44Km44Kk44OBDQor44Kz44Kk44KxLOOCouOCreOCqg0KK+OCs+OCpOOCuuODnyzjg57jgrXjgqoNCivjgrPjgrjjg54s44Ok44K544OtDQor44Kz44K444OeLOOCseODsw0KK+OCs+ODnuODhCzjgr/jgqvjgrcNCivjgrPjg6Ljg6os44Oo44K344K/44KrDQor44Kz44Oz44OJLOODiOODouODjuODqg0KK+OCs+ODs+ODiSzjgqTjgrXjg6ANCivjgrPjg7Pjgr8s44Kx44Oz44Kk44OBDQor44Kz44K/44KrLOODn+ODhOODjuODqg0KK+OCs+OCv+OCsSzjg57jgrXjgq0NCivjgrPjg6Tjg54s44OI44Km44Ot44KvDQor44Kv44OcLOODkuODreOCtw0KK+OCr+ODnOOCrSzjgqTjgq/jgrMNCivjgq/jg5zjgr8s44Oo44Km44Kk44OBDQor44Kv44KsLOOCv+ODhOOCuA0KK+OCr+ODnuOCrOOCpCzjg6Tjgrnjg4rjg6oNCivjgq/jg4vjg6Ljg6os44Oo44Km44Kk44OBDQor44Kv44Op44Oi44OILOOCuOODpeODsw0KK+OCr+ODqeOCteODryzjgqLjg4TjgrcNCivjgq/jg6njgrfjg4os44Kr44OE44OS44OIDQor44Kv44Op44K/LOOCteODiOOCtw0KK+OCr+ODquODouODiCzjgr/jgrHjgqoNCivjgq/jg6rjgr8s44Oo44K344Oe44K1DQor44Kv44Ot44OALOODiOOCt+OCq+OCug0KK+OCr+ODreODgCzjg5Ljg4fjgqLjgq0NCivjgq/jg63jgqvjg68s44K344Oz44K0DQor44Kv44Ot44KtLOODhOODqOOCtw0KK+OCr+ODreOCteOCrSzjg6rjg6fjgqbjgqTjg4ENCivjgq/jg63jgrXjg68s44OS44Ot44Om44KtDQor44Kv44Oq44Ol44KmLOOCseODs+OCuA0KK+OCr+ODr+OCvyzjg57jgrXjg5LjgrMNCivjgq/jgrrjg58s44K/44Kr44OS44OtDQor44Oe44OW44OBLOOCv+OCr+ODnw0KK+ODnuOCqOODgCzjg6Tjgrnjg5Ljg60NCivjg57jgqjjg4As44Kx44Kk44K3DQor44Oe44Ko44Ks44OvLOOCouOCreODkuOCsw0KK+ODnuOCqOOCq+ODryzjg6Tjgrnjg4jjgrcNCivjg57jgq3jgqos44K744Kk44Kk44OBDQor44Oe44Oh44OP44OpLOOCouOCreODkuODrQ0KK+ODnuOCteODgCzjg5Ljg63jg6bjgq0NCivjg57jgrnjg4As44Oo44Km44K544KxDQor44Oe44K544OALOODkuODreOCtw0KK+ODnuOCueODgCzjgr/jgqvjgrcNCivjg57jgrnjg4As44OI44Oi44KzDQor44Oe44K544Ok44OeLOODquODhOOCsw0KK+ODnuODhOODgCzjg6Djg4Tjg58NCivjg57jg4Tjg4As44OK44Kq44OfDQor44Oe44OE44Ko44OALOODhOODqOOCtw0KK+ODnuODhOOCpCzjgr/jgqvjg57jgrUNCivjg57jg4Tjg6Ljg4gs44Kx44Oz44K/44Ot44KmDQor44Oe44OE44Oi44OILOOCseOCpOOCuA0KK+ODnuODhOODouODiCzjgrvjgqTjgqTjg4ENCivjg57jg4Tjg6Ljg4gs44Om44Km44Kk44OBDQor44Oe44OE44Oi44OILOOCt+ODpeOCpuOCpOODgQ0KK+ODnuODhOODouODiCzjg6jjgqbjgr/jg63jgqYNCivjg57jg4Tjg4rjgqws44Oe44K144Om44KtDQor44Oe44OE44OOLOODpOOCueODkuOCsw0KK+ODnuODhOODjizjgrfjg7PjgqTjg4ENCivjg57jg4Tjgqrjgqss44Of44OB44KzDQor44Oe44Om44OfLOOCouOCreODqQ0KK+ODoeOCq+OCvyzjg5Ljg63jgq0NCivjg6Hjg6ks44Kz44Km44K4DQor44Of44K/44OLLOOCv+ODreOCpg0KK+ODn+OCv+ODiyzjg5/jg4Hjg5Ljg4gNCivjg5/jg4gs44Om44Of44KzDQor44Of44Ok44Ks44OfLOOCt+OCsuODkuOCtQ0KK+OCpOOCquOCrSzjg57jgrXjgqLjgq0NCivjg5/jg6Tjg6Ljg4gs44Ki44Kt44OS44OtDQor44Of44Ok44Og44OpLOODiOODouODpuOCrQ0KK+ODn+ODpOODjizjgr/jgqvjgqLjgq0NCivjg5/jg6Tjgqbjg4Es44Oe44K144OP44OrDQor44Of44Ok44K244KtLOODnuOCteOCq+ODhA0KK+ODouODgeOCuuOCrSzjg6bjgq0NCivjg6Ljg6LjgqQs44OS44OH44Oe44K1DQor44Oi44OqLOODpuOCqw0KK+ODouODqizjgq/jg5/jgrMNCivjg6Ljg6rjg6Ljg4gs44Oo44Km44Kk44OBDQor44Oi44Oq44Oi44OILOODoOODhOOCsw0KK+ODouODquOCquOCqyzjgrHjg7PjgrgNCivjg6Ljg6rjgrXjg68s44OI44Oi44OS44OtDQor44Oi44Oq44K/LOOCq+OCuuODqOOCtw0KK+ODouODquOCvyzjg5Ljg63jg47jg5YNCivjg6Ljg6rjgr8s44Ki44Kt44OS44KzDQor44Oi44Oq44K/LOOCt+ODs+ODpA0KK+ODouODquODpOODnizjgr/jgqvjgrcNCivjg6Ljg6rjg6Tjg54s44K/44OE44OS44KzDQor44Oi44OG44KuLOODiOOCquODqw0KK+ODoOODqeOCq+ODnyzjg57jgrXjgqLjgq0NCivjgqLjgrXjg44s44Kx44Oz44K0DQor44Ki44Om44Kr44OvLOOCteODiOOCtw0KK+ODoOODqeOCqizjg4DjgqTjgrnjgrENCivjg6Djg6njgqrjgqss44K344Ky44OrDQor44Og44Op44K/LOODiOODouOCq+OCug0KK+ODoOOCt+OCouOCsSzjgqjjg5/jgrMNCivjg6Djgr8s44OS44K144K3DQor44OK44OZ44KkLOODnuOCteODkuODrQ0KK+ODiuOCrOOCpCzjgrPjgqbjgqTjg4ENCivjg4rjgqzjgqQs44Oe44K144KzDQor44OK44Ks44Of44ONLOOCteODpuODqg0KK+ODiuOCrOOCteODryzjgr/jg4DjgrcNCivjg4rjgqzjgr8s44OG44OE44KqDQor44OK44Ks44Ok44OeLOODhuODhOODpA0KK+ODiuOCsOODqSzjg6bjg5/jgrMNCivjg4rjgqTjg4jjgqYs44OS44Ot44K3DQor44OK44Kr44Ks44OvLOODquODpeOCpuOCuA0KK+ODiuOCq+OCrOODryzjg6bjg5/jgrMNCivjg4rjgqvjgqzjg68s44Ok44K544K3DQor44OK44Kr44Ks44OvLOODnuOCteODkuODrQ0KK+ODiuOCq+ODj+ODqSzjgr/jgqvjgrMNCivjg4rjgqvjgqQs44K344Ky44OrDQor44OK44Kr44KkLOOCv+OCq+ODkuODrQ0KK+ODiuOCq+OCuOODnizjg4jjgqrjg6sNCivjg4rjgqvjgrjjg54s44Om44Of44KzDQor44OK44Kr44K444OeLOOCq+ODhOODpA0KK+OCteODr+ODgCzjg5/jgqjjgrMNCivjg4rjgqvjg6Djg6ks44Ki44Kt44OO44OWDQor44OQ44Oz44OQLOODhuODhOODpA0KK+ODiuOCq+ODoOODqSzjg5Ljg4fjg5Ljg4gNCivjg4rjgqvjg6Djg6ks44Kz44Km44Kk44OBDQor44OK44Kr44Og44OpLOODnuOCteODjuODqg0KK+ODiuOCq+ODoOODqSzjgqvjgrrjgqoNCivjg4rjgqvjg6Djg6ks44Oe44OqDQor44OK44Kr44Og44OpLOOCv+OCseOCtw0KK+ODiuOCq+ODoOODqSzjgqLjgq3jg5Ljg60NCivjg4rjgqvjg44s44OV44Of44KzDQor44OK44Kr44OOLOODkuODreOCq+OCug0KK+ODiuOCq+OCqizjg47jg5bjg6bjgq0NCivjg4rjgqvjgrfjg54s44Ok44K544OS44OtDQor44OK44Kr44K/LOOCs+OCpuOCpOODgQ0KK+ODiuOCq+OCvyzjgqLjgq3jgrMNCivjg4rjgqvjg6Tjg54s44OK44Kq44Ok44K5DQor44OK44Kr44Ok44OeLOODkuODreODleODnw0KK+ODiuOCq+ODpOODnizjgqLjgq3jg5Ljg60NCivjg4rjgqvjg6Tjg54s44Kx44Kk44KzDQor44OK44Kr44K244OvLOOCq+ODhOODpA0KK+ODiuOCq+OCtuODryzjgrHjgqTjgrnjgrENCivjg4rjgqzjgqrjgqss44Om44K/44KrDQor44OK44OK44K344OjLOODqOOCt+ODkuODrQ0KK+ODiuODquOCvyzjg4Tjg6jjgrcNCivjg4rjg6rjgr8s44Oe44Kz44OIDQor44OK44K5LOOCv+OCseOCtw0KK+ODiuOCueOCvyzjg5Ljg63jgrcNCivjg4vjgrcs44Kr44ON44OO44OWDQor44OL44K344OALOODjuODluODpuOCrQ0KK+ODi+OCt+ODoOODqSzjgrXjg4HjgqoNCivjg57jgrXjg4As44K/44Kx44OS44KzDQor44OL44K344Og44OpLOODiOODouOCsw0KK+ODi+OCt+ODoOODqSzjg57jgrXjg6bjgq0NCivjg4vjgrfjgqos44Oo44K344K/44OADQor44OL44K344Ok44OeLOODn+ODiuOCsw0KK+ODi+ODg+OCvyzjgqvjgqrjg6oNCivjg47jgqzjg58s44Ok44K544OS44OtDQor44OO44OK44KrLOOCv+OCq+ODkuODrQ0KK+ODjuOCuyzjg5Ljg4fjgqoNCivjg47jgr/jg5ks44K344Oz44K0DQor44OO44OILOOCuOODpeODs+OCpOODgQ0KK+ODjuODhizjg5Ljg63jgq0NCivjg4zjgq/jgqQs44Oe44K144OS44OtDQor44Kq44OBLOOCouOCreODkuOCsw0KK+OCquODgeOCouOCpCzjg4jjgrfjg6bjgq0NCivjgqrjg4As44Oo44K344Kr44K6DQor44Kq44Ks44K144Ov44OpLOODpuOCpuOCuA0KK+OCquOCrOODryzjg6jjgqbjgrgNCivjgqrjgqzjg68s44Kz44Km44K4DQor44Kq44Ks44OvLOODnuOCteODkuOCsw0KK+OCquOCrOODryzjg57jgrXjg6QNCivjgqrjgqzjg68s44OK44Kq44K/44KxDQor44Kq44Ks44OvLOODiOODouODnw0KK+OCquOCruODjizjg57jgrPjg4gNCivjgqrjgqrjg5As44Oe44K144OS44OHDQor44K/44Kt44Of44OkLOODpuOCreOCqg0KK+OCquOCquODj+OCtyzjgr/jg4Djg6bjgq0NCivjgqrjgqrjg4/jgrcs44K/44Kv44Of44OzDQor44Kq44Kq44KkLOODgeOCteODiA0KK+OCquOCquOCq+ODryzjgqjjg58NCivjgqrjgqrjg6Ljg6os44K444Ol44Oz44KrDQor44Kq44Og44OpLOODnuODpg0KK+OCquODiuOCq+ODj+ODqSzjgr/jgrHjg4TjgrANCivjgqrjgqrjg4vjgrcs44Oo44K344OO44OqDQor44Kq44OOLOOCouOCreOCsw0KK+OCquOCquOCquOCqyzjgr/jgqvjgrcNCivjgqrjgrfjg54s44OO44OWDQor44Kq44K344OeLOOCseODs+OCpOODgQ0KK+OCpOOCseODnuODhCzjgr/jgqvjgrMNCivjgqrjgqrjgr8s44K/44Kx44K3DQor44Kq44Kq44K/LOOCv+OCq+OCtw0KK+OCquOCquOCvyzjgrXjg4HjgrMNCivjgqrjgqrjgr8s44K/44Of44KzDQor44OV44Kv44OALOODn+OCqA0KK+OCquOCvOOCrSzjgrHjgqTjgqTjg4ENCivjgqrjgqTjg4As44OS44OI44K3DQor44Kq44Kk44K4LOOCr+ODi+ODkuODrQ0KK+OCquOCq+ODgCzjgrfjg7PjgrgNCivjgrnjgq7jg6Ljg4gs44K/44Kr44Om44KtDQor44Kq44Kr44K244KtLOODpOOCueODkuODrQ0KK+OCquOCq+OCtuOCrSzjg6TjgrnjgrcNCivjgqrjgqvjgrbjg68s44OS44OI44K3DQor44Kq44Kv44OALOODhuODhOODpA0KK+OCquOCr+ODgCzjg57jgrXjgq0NCivjgqrjgq/jg6Djg6ks44K344Ky44OrDQor44Kq44Kv44Og44OpLOODkuODh+ODkuODiA0KK+OCquOCr+ODjizjgrPjgqbjgr/jg63jgqYNCivjgqrjgq/jg6Tjg54s44Ki44Kt44OS44OtDQor44Kq44OOLOODiuOCquODnw0KK+OCquOCquODjOOCrSzjg5Ljg4fjg47jg6oNCivjgqrjgqrjg4/jgrcs44OI44K344KqDQor44OI44Kq44OkLOODnuOCteODkuODrQ0KK+OCquODiOOCsOODrSzjg47jg5bjg6bjgq0NCivjgrXjgqTjgrTjgqYs44K/44Kx44OS44OtDQor44K144Kk44OI44KmLOODqOOCt+OCv+ODreOCpg0KK+OCteOCpOODiOOCpizjgqLjgq3jg5LjgrUNCivjgrXjgqTjg4jjgqYs44OV44Of44OS44KzDQor44K144Kk44OI44KmLOODkuODreOCrQ0KK+OCteOCpOODiOOCpizjg5Ljg63jgrcNCivjgrXjgqTjg4jjgqYs44K444Ol44OzDQor44K144Kk44OI44KmLOOCq+ODs+OCuA0KK+OCteOCq+OCqOODgOODiyzjg5/jgqsNCivjgrXjgqvjgqQs44OO44OW44Ok44K5DQor44K144Kr44KkLOODiOOCr+OCuOODreOCpg0KK+OCteOCq+OCvyzjg4Tjg6jjgrcNCivjgrXjgqvjgr8s44Kr44K644OS44KzDQor44K144Kv44OeLOOCv+OCq+ODkuODrQ0KK+OCteOCr+ODqeODkOODpOOCtyzjgqLjg4TjgrcNCivjgrXjgq/jg6njgqQs44Oe44OE44KqDQor44K144Kv44K/LOODqOOCt+OCouOCrQ0KK+OCteOCteOCrSzjg57jgrXjgqvjgroNCivjgrXjgrXjgq0s44Ki44Kt44OpDQor44K144K144KtLOOCteODgeOCsw0KK+OCteOCteOCrSzjg6jjgrfjg6bjgq0NCivjgrXjgrXjg6Es44Oo44Km44Kk44OBDQor44K144OI44KmLOOCq+OCuuODjuODqg0KK+OCteODiOOCpizjg57jgrXjg5LjgrMNCivjgrXjg4jjgqYs44Oo44K344OS44OtDQor44K144OI44KmLOODqOOCt+ODreOCpg0KK+OCteODiOOCpizjg4/jgrjjg6ENCivjgrXjg4jjgqYs44OS44Ot44OfDQor44K144OI44KmLOODkuODreOCtw0KK+OCteODiOOCpizjgrPjgqbjgrgNCivjgrXjg4jjgqYs44K344On44Km44K4DQor44K144OI44KmLOODpOOCqA0KK+OCteODiOOCpizjgq/jg5/jgrMNCivjgrXjg4jjgqYs44OS44Ot44Ok44K5DQor44K144OI44KmLOODquOCqA0KK+OCteODr+ODgCzjgr/jgqvjg40NCivjgrXjg6/jg4/jgrcs44K/44OE44Om44KtDQor44K144Ov44OOLOOCq+OCuuODkuODrQ0KK+OCu+OCsOODgSzjgrfjg6Xjgqbjg5jjgqQNCivjgrvjgq0s44OI44Oi44KzDQor44K744Kt44Kw44OBLOODqOOCt+ODkuODrQ0KK+OCu+OCreOCsOODgSzjgrXjg4jjgrcNCivjgrfjg5As44Kr44Kq44OqDQor44K344OQ44K/LOOCouODpOOCsw0KK+OCt+ODkOOCvyzjg57jgrXjg4/jg6sNCivjgrfjg5bjg6Qs44K/44Kr44K3DQor44K344Oe44OALOOCt+ODpeOCpuOCuA0KK+OCt+ODn+OCuizjgqvjg4Tjg6bjgq0NCivjgqTjgrfjgqvjg68s44K/44Kr44Om44KtDQor44K344Of44K6LOODiOODouODkuODrQ0KK+OCt+ODn+OCuizjgqvjg4Tjg6bjgq0NCivjgrfjg5/jgros44Kx44Oz44K4DQor44K344Of44K6LOOCseODs+OCv+ODreOCpg0KK+ODleOCuOOCqOODgCzjgrPjgqbjgqTjg4Hjg63jgqYNCivjgrfjg6Ljg6Tjg57jg4As44K344Oz44Kk44OBDQor44K344OK44Ks44OvLOODiOODouODkuODhw0KK+OCt+ODs+ODpCzjg5/jg4Tjg47jg6oNCivjgrfjgqrjg58s44K344Oz44K4DQor44K344Kq44OELOOCq+ODhOODkuOCsw0KK+OCu+OCreOCsOODgSzjg4jjgqrjg6sNCivjg4Tjg47jg4As44K/44Kr44K3DQor44K344Op44K144KrLOOCouODhOOCqg0KK+OCt+ODreOCt+OCvyzjg5Ljg63jg6bjgq0NCivjgrfjgr/jg6ks44OS44K144K3DQor44K344On44KmLOOCuOODpeODs+OCpOODgQ0KK+OCueOCrOODr+ODqSzjg5/jg5sNCivjgrnjgqzjg6/jg6ks44K144OI44K3DQor44K544Ku44Oi44OILOOCt+ODp+OCpuOCpOODgQ0KK+OCueOCruOCvyzjg4jjg6LjgqvjgroNCivjgrnjgq7jgr8s44Oe44K144Oo44OqDQor44K544Ku44K/LOOCq+ODhOODkuOCsw0KK+OCueOCruOCpuODqSzjgrXjg4jjgrMNCivjgrnjgq7jgqbjg6ks44OI44Oo44OS44K1DQor44K544Ku44Ok44OeLOODn+OCuuODmw0KK+OCpOOCseOCvuOCqCzjg57jgrXjg4jjgrcNCivjgrnjgq7jg6Tjg54s44OS44Ot44Ki44KtDQor44K544KrLOODiOODouODpuOCrQ0KK+OCueOCseOCrOODryzjg47jg5bjg6jjgrcNCivjgrnjg5/jg47jgqbjgqgs44OS44OH44KtDQor44K544Of44Oo44K3LOOCv+ODjeOCq+OCug0KK+OCueODn+ODqOOCtyzjg4jjgrfjg5/jg4QNCivjgrnjg4rjg58s44OS44Ot44Om44KtDQor44K544K644KtLOODpOODgeODqA0KK+OCueOCuuOCrSzjg57jg6Ljg6sNCivjgrnjgrrjgq0s44Ki44Kt44OS44OtDQor44K544K644KtLOOCouOCreODqQ0KK+OCueOCuuOCrSzjg5Ljg63jgqLjgq0NCivjgrnjgrrjgq0s44Kk44OD44Oa44KkDQor44K544K644KtLOODnuOCteODiA0KK+OCueOCuuOCrSzjg47jg5bjgqLjgq0NCivjgrfjg6fjgqbjgrgs44K344K6DQor44K344On44KmLOOCt+ODp+OCpuOCv+ODreOCpg0KK+OCv+ODkOOCvyzjgr3jgqbjgqTjg4Hjg63jgqYNCivjgr/jg4As44OI44K344KqDQor44K/44OJ44Kz44OtLOODkuODh+ODpuOCrQ0KK+OCv+OCrOODnyzjgrPjgqbjgrgNCivjgr/jgrDjg4Es44K/44Kr44K3DQor44K/44Kw44OBLOODkuODreOCouOCrQ0KK+OCv+OCpCzjg57jgrXjg4bjg6sNCivjgr/jgqTjg6ks44Ki44OE44K3DQor44K/44Kk44K1LOODn+ODhOODkuODrQ0KK+OCv+OCuOODnizjgq3jg6jjgrcNCivjgr/jgqvjg4As44K/44OA44OK44KqDQor44K/44Kr44OALOOCqOODhOODreOCpg0KK+OCv+OCq+OCrizjg4bjg4Tjg63jgqYNCivjgr/jgqvjg4/jgrcs44Ki44OE44OkDQor44K/44Kr44OP44K3LOODkuODreOCtw0KK+OCv+OCq+ODj+OCtyzjg4jjgqrjg6sNCivjgr/jgqvjg4/jgrcs44OK44Kq44KtDQor44K/44Kr44OP44K3LOOCteODiOOCtw0KK+OCv+OCq+ODj+OCtyzjg6bjgqbjgrgNCivjgr/jgqvjg4/jgrcs44OI44K344KqDQor44K/44Kr44OP44K3LOODpuOCpuOCueOCsQ0KK+OCv+OCq+ODj+OCtyzjg4rjgqrjgq0NCivjgr/jgqvjg4/jgrcs44Oo44K344OV44OfDQor44K/44Kr44KkLOOCt+ODjuODlg0KK+OCv+OCq+ODjizjgqvjg7PjgrMNCivjgr/jgqvjgrfjg54s44OK44Kq44OkDQor44K/44Kr44Ok44OeLOODkuODh+ODhOOCsA0KK+OCv+OCseODgCzjgqvjgrrjg6jjgrcNCivjgr/jgrHjgqTjg4Es44Kx44Kk44K544KxDQor44K/44Kx44Oe44K1LOOCseODs+OCpOODgQ0KK+OCv+OCseODoOODqSzjgrfjg5sNCivjgr/jgrHjg6Djg6ks44K344Ol44Oz44K544KxDQor44K/44Kx44OK44KrLOODiuOCquODiA0KK+OCv+OCseOCt+OCvyzjgrfjg6fjgqbjgr7jgqYNCivjgr/jgrHjgqbjg4Es44Ki44OE44OIDQor44K/44Kx44Km44OBLOODkuODiOOCtw0KK+OCv+OCseOCpuODgSzjgqjjgqTjgqTjg4Hjg63jgqYNCivjgr/jgq3jgqvjg68s44Ki44OE44K3DQor44K/44Kt44Kt44K/LOOCv+OCq+OCtw0KK+OCv+OCreOCtuODryzjg5Ljg4fjg4gNCivjgr/jgrMs44Oo44K344KtDQor44K/44Kr44OOLOODouODiOODpuOCrQ0KK+OCv+ODnuOCrOODryzjg5Ljg63jg6bjgq0NCivjgr/jg57jgq0s44Kq44K144OgDQor44K/44Og44OpLOOCq+OCuuOCv+OCqw0KK+OCv+ODiuODmSzjg5Ljg63jg47jg5YNCivjgr/jg4rjg5ks44OV44Of44KqDQor44K/44OK44KrLOOCreODp+OCpuODmOOCpA0KK+OCv+ODiuOCqyzjgq3jg6fjgqbjgrMNCivjgr/jg4rjgqss44Of44ObDQor44K/44OK44KrLOODqOOCt+ODkuOCtQ0KK+OCv+ODiuOCqyzjg6jjgqbjgrMNCivjgr/jg4rjgqss44Oe44K144Oo44K3DQor44K/44OLLOOCq+OCuuODiuODqg0KK+OCv+ODi+OCsOODgSzjg47jg5bjg5Ljg60NCivjgr/jg4vjgrfjg6fjgqYs44K344Oz44K0DQor44K/44OG44Ok44OeLOODqOOCt+ODleODnw0KK+OCv+ODhOODnyzjg57jgrnjg58NCivjgr/jgqbjg6ks44K/44Kr44OI44K3DQor44K/44K244OvLOODiOODouODpuOCrQ0KK+OCv+OCuuOCsSzjgrvjgqTjgqTjg4ENCivjg4bjg6njg4As44Kx44Kk44KzDQor44OI44Km44OeLOOCq+OCuuODkuODrQ0KK+ODiOOCquODpOODnizjgqvjgrrjg5Ljg60NCivjg4jjg6Hjgqrjgq8s44Ki44Kt44KqDQor44OI44Of44Kk44KoLOODj+ODpOODiA0KK+ODleOCv+ODhOOCrizjg5Ljg63jgrcNCivjg4jjg6Ljg4jjgrcs44Kx44Oz44K4DQor44OI44ON44Ks44OvLOOCouOCreOCsw0KK+OCquOCr+ODoOODqSzjg47jg6rjg5LjgrMNCivjg4jjgrfjgrfjgrIs44OS44Ot44K3DQor44OI44Oo44OALOOCq+OCuuODiuODqg0KK+ODiOODqOODiuOCqyzjg57jgrXjg6QNCivjg4Tjg5Djgq0s44OG44OE44OkDQor44OE44OB44Oi44OILOODleODn+OCqg0KK+ODhOODgCzjgrXjg4jjgrcNCivjg4Tjg4As44Kr44OoDQor44OE44OALOODiOOCt+OCqA0KK+ODhOOCuOOCpCzjg4jjg6Ljgr/jgqsNCivjg4Tjgrjjg6Djg6ks44OO44Oq44KzDQor44OE44Kr44OP44OpLOODiOOCt+ODreOCpg0KK+ODhOODjuODgCzjgrfjg6fjgqbjgrgNCivjg4Tjg6vjgq4s44OP44Or44OS44KzDQor44OE44Or44K/LOODhuODq+ODkuOCsw0KK+ODhOOCt+ODnizjgq3jg4zjg6gNCivjg4Tjg4TjgqQs44OS44Ot44Om44KtDQor44OE44OB44OALOOCq+ODhOODpuOCrQ0KK+OCpuODgeODgCzjgrXjg4jjg6sNCivjgqbjg4Hjg4As44K/44Kv44K4DQor44Km44OB44Kv44OpLOOCv+OCseOCtw0KK+OCpuODgeOCv+ODiyzjgqvjg4TjgrMNCivjgqbjgqjjg4As44K144Kt44KzDQor44Km44Ko44OALOODgeOCqA0KK+OCpuOCqOODgCzjgqzjgq8NCivjgqbjgqjjg4As44Ki44Kt44OO44OqDQor44Km44Ko44Og44OpLOODkuODreOCsw0KK+OCpuOCqOODjizjg5Ljg63jgrcNCivjgqbjgqjjg4Tjgq0s44Oe44KtDQor44Kk44KxLOODnuOCteODqw0KK+OCpuODoeODgCzjg5/jg5sNCivjgqbjg6Hjg6Djg6ks44OK44OE44KzDQor44Km44OO44KtLOODjuODluODkuOCsw0KK+OCpuODqeOCt+OCvyzjg4jjg6LjgrMNCivjgqbjg6njgr8s44OI44Oi44Om44KtDQor44Km44K344KqLOODqOOCt+OCqg0KK+OCpuOCv+OCrOODryzjg4bjg4Tjg6QNCivjg6/jg4As44OI44Oi44KzDQor44Ov44OALOOCouOCreODkuODiA0KK+ODr+ODgCzjg5Ljg63jgr/jg4QNCivjg6/jg4As44Oe44K144OS44OtDQor44Ov44Ks44OE44OeLOOCt+ODp+OCpuOCpOODgQ0KK+ODr+OCq+ODnuODhCzjg6bjgqbjgrgNCivjg6/jgq3jgr8s44OS44Ot44Ki44KtDQor44Ov44KzLOODkuODreOCq+OCug0KK+ODr+ODquOCq+OCvyzjg4rjgqrjg6bjgq0NCivjg6/jgrfjgros44K344On44KmDQor44Ov44K/44OK44OZLOOCt+ODpeODs+OCuA0KK+ODr+OCv+ODiuODmSzjg6jjgrfjg6bjgq0NCivjg6/jgr/jg4rjg5ks44OI44K344KqDQor44Ov44K/44OK44OZLOOCrOOCrw0KK+ODr+OCv+ODiuODmSzjg5Ljg63jg5Xjg58NCivjgqrjg6Djg6ks44OS44Ot44OS44OHDQor44Ov44K/44OK44OZLOOCs+OCpuOCu+OCpA0KK+ODr+OCv+ODiuODmSzjg4rjgqrjgrMNCivjg6/jgr/jg4rjg5ks44Oq44Ol44Km44Kk44OBDQor44Ov44K/44OK44OZLOODhuODhOODreOCpg0KK+ODpOOCrizjg4jjg6Ljg58NCivjg6Tjgq4s44Om44Km44KzDQor44Ok44Oe44OALOOCv+OCq+ODiA0KK+ODpOODnuODgCzjg47jg6rjg4jjgrcNCivjg6Tjg57jg4As44OS44OH44OV44OfDQor44Ok44Oe44OALOOCt+OCsuOCqg0KK+ODpOODnuODgCzjgr/jgrHjg5Ljg60NCivjg6Tjg57jg5Xjgq8s44OS44OH44KqDQor44Ok44Oe44Kw44OBLOODnuODquOCsw0KK+ODpOODnuOCsOODgSzjg6jjgqbjgrgNCivjg6Tjg57jgrDjg4Es44Oo44Km44KzDQor44Ok44Oe44Kw44OBLOODkuODreOCq+OCug0KK+ODpOODnuOCuCzjg4jjgqrjg6sNCivjg6Tjg57jgqvjg68s44Kz44Km44K4DQor44Ok44Oe44Oi44OILOOCv+OCq+ODjuODqg0KK+ODpOODnuODouODiCzjgrHjg7PjgqTjg4ENCivjg6Tjg57jg6Ljg4gs44Of44OE44K+44KmDQor44Ok44Oe44Oi44OILOODpuOCreOCsw0KK+ODpOODnuODouODiCzjg5Ljg63jg6TjgrkNCivjg6Tjg57jg6Ljg4gs44Kz44Km44K4DQor44Ok44Oe44Oi44OILOODnuOCteOCrQ0KK+ODpOODnuODouODiCzjg6bjgqbjgrgNCivjg6Tjg57jg6Ljg4gs44Om44K/44KrDQor44Ok44Oe44OKLOOCu+OCpOOCpOODgeODreOCpg0KK+ODpOODnuOCteOCrSzjgqvjg4Tjg58NCivjg6Tjg57jgrfjgr8s44OO44Oq44OI44K3DQor44Ok44Oe44K344K/LOODiOOCquODqw0KK+ODpOODnuOCtuOCrSzjg5Ljg63jgrcNCivjg6Tjg4rjgq4s44Oq44On44KmDQor44Ok44OOLOOCseODs+OCv+ODreOCpg0KK+ODpOOCt+ODrSzjgr/jgrHjgrcNCivjg6TjgrnjgqQs44OV44OI44K3DQor44Ok44K544Og44OtLOOCv+OCq+OCtw0KK+ODpOOCueOCpuOCuCzjg6jjgrfjg6bjgq0NCivjg6jjgrPjgqgs44OS44OH44OO44OqDQor44Oo44Kz44KkLOODnuODpA0KK+ODqOOCs+ODn+OCvizjgq3jg6jjgrfjgrINCivjg6jjgrPjg6Tjg54s44Oe44K144OS44KzDQor44Oo44ON44K244OvLOOCq+OCuuODkuOCsw0KK+ODqOOCt+ODgCzjgrHjg7Pjg6QNCivjg6jjgrfjg4As44OO44OW44OS44OtDQor44Oo44K344OALOOCq+ODhOODpA0KK+ODqOOCt+ODgCzjgqvjgrrjgqLjgq0NCivjg6jjgrfjg4As44OI44Oi44OfDQor44Oo44K344KkLOOCt+OCsuODiA0KK+ODqOOCt+ODoOODqSzjg4bjg6vjgqvjgroNCivjg6jjgrfjg6Tjg54s44Ko44Kk44K4DQor44Oo44K344K244OvLOOCteODgeOCsw0KK+ODleOCuOOCt+ODnizjgrHjg7Pjgr/jg63jgqYNCivjg6bjgqLjgrUs44Kx44KkDQor44Om44KtLOOCu+ODhOOCsw0KK+ODpuOCrSzjgqLjgq3jg6gNCivjg6bjgqQs44OA44Kk44K544KxDQor44Ki44OA44OBLOODiuOCquOCv+OCsQ0KK+ODkOODsyzjgr/jgqvjgrcNCivjg5Xjg6vjgqQs44Oo44K344OO44OqDQor44OP44K744Ks44OvLOODj+OCuOODoQ0KK+ODkuODqeOCq+ODryzjg57jg4rjg5YNCivjgqTjg4jjgqYs44OI44K344OS44KzDQor44Kk44Ov44K144KtLOODquODp+OCpuOCuA0KK+OCq+ODiOOCpizjgrHjg7PjgrgNCivjgqvjg6/jg4/jg6ks44Oo44K344Of44OEDQor44Oe44Ko44OP44OpLOOCquOCteODoA0KK+ODnuODhOOCv+ODiyzjgrfjgrLjgqoNCivjg6Ljg6rjgqTjg4Es44Ko44Kk44K444Ot44KmDQor44OL44K344Km44OBLOODjuODluODpuOCrQ0KK+ODleOCuOODnuOCrSzjgr/jgqTjgr7jgqYNCivjgqrjgqrjg4/jg6ks44K/44Kr44K3DQor44K144OK44OALOODkuODh+OCouOCrQ0KK+OCveODjSzjg4Tjg4jjg6ANCivjg4jjg47jg6Djg6ks44Oo44K344Om44KtDQor44K344Of44K6LOOCseOCpA0KK+ODn+OCt+ODnizjg57jg6rjgrMNCivjg5Xjgrjjgr8s44K/44Ot44KmDQor44OV44K444K/LOODkuODh+OCrQ0KK+ODleOCuOOCvyzjg6jjgqYNCivjg5Xjgrjjg6/jg6ks44Kz44Km44K444Ot44KmDQor44OV44K444Ol44KmLOOCt+ODs+OCpOODgQ0KK+ODleOCq+ODgCzjgr/jgq/jg6QNCivjg5Xjgq/jg4As44Om44K/44KrDQor44OV44Kv44OS44K1LOODiuOCquOCv+OCqw0KK+ODleOCr+OCtuODiCzjgqLjg6QNCivjg5Xjgq/jgrbjg68s44K/44Kr44K3DQor44OV44Or44K144OvLOOCreODj+ODqw0KK+ODj+OCrOODryzjgr/jgqvjgrcNCivjg4/jgq4s44OS44Ot44K/44KrDQor44OP44Op44OALOODn+ODhOODqw0KK+ODj+ODqeODgCzjg47jg5bjg5Ljg60NCivjg4/jg6njg4As44Oe44KtDQor44OP44Op44Oe44KtLOODiuOCquOCsw0KK+ODj+OCu+OCrOODryzjg6rjgqgNCivjg4/jgrvjgqzjg68s44OS44OH44Ki44KtDQor44OP44K344KqLOODpuOCqw0KK+ODj+OCueODnyzjg5Ljg63jgrcNCivjg4/jgrnjg58s44Kx44Oz44Kk44OB44OtDQor44OP44OD44OI44OqLOODqOODquOCsw0KK+OCpOOCt+OCq+ODryzjg5bjg7Pjg5rjgqQNCivjg4/jg6Tjgrcs44K/44Kr44KzDQor44OS44Op44OOLOOCv+OCr+ODpA0KK+ODkuODqeODjizjgqvjgrrjgqLjgq0NCivjg5Ljg6njg44s44OI44K344Ki44KtDQor44OS44Ot44OZLOODkuODh+OCrQ0KK+OCt+ODjuODgCzjgrHjg7PjgrgNCivjg5LjgrXjg4As44K/44Kr44Om44KtDQor44ObLOOCv+OCseOCtw0KK+ODm+ODs+OCtOOCpizjg4bjg6vjg5LjgrMNCivjg5vjgrcs44Of44OB44KzDQor44Ob44K344OOLOODnuOCteOCrQ0KK+ODm+OCveOCq+ODryzjg5Ljg63jgqvjgroNCivjg5vjgr3jg44s44Om44OfDQor44Kr44OI44KmLOODqOOCt+ODreOCpg0KK+OCpOOCrizjg6jjgqbjgrMNCivjgqTjgrHjg4As44OI44K344Om44KtDQor44Kk44Kv44OtLOODjuODquODkuODrQ0KK+OCpOODnuOCpCzjgqvjgrrjg6jjgrcNCivjgqTjg4rjg4As44Kz44Km44OY44KkDQor44Kk44OO44Kw44OBLOOCv+OCq+ODpuOCrQ0KK+OCpOOCt+OCsOODrSzjg4TjgrDjgqvjgroNCivjgqTjgrfjgqvjg68s44OS44Ot44KtDQor44Kk44K344Kr44OvLOOCseODs+OCuA0KK+OCpOOCt+OCtuOCrSzjg6bjgqvjg6oNCivjgqTjgrfjgrzjgq0s44Oo44K344OIDQor44Kk44OI44KmLOODhuODhOODpA0KK+OCpOODiOOCpizjg57jgrXjg6jjgrcNCivjgqTjg4jjgqYs44OK44Kq44KtDQor44Kk44OI44KmLOODqOOCt+ODnw0KK+OCpOODnuOCrOODryzjgrHjgqQNCivjgqTjgrbjg68s44Kz44Km44K4DQor44Kk44K644OfLOOCt+ODp+OCpuOCuA0KK+OCpOOCuuODn+ODgOODhizjg47jg6rjg4jjgrcNCivjgqvjg5bjg6njgq4s44Kr44Kq44OqDQor44Kr44Of44Ok44OeLOODiOOCquODqw0KK+OCq+ODiuODpOODnizjgrPjgqbjgrgNCivjgqvjg4rjgrbjg68s44K444Ot44KmDQor44Kr44Oz44OQ44OpLOOCq+ODhOODqOOCtw0KK+OCq+ODs+ODgCzjg6bjgqbjgrMNCivjgqvjg7Pjg4As44Of44K544Oe44OrDQor44Kr44ON44KzLOODiuODquODiOODog0KK+OCq+OCt+ODoOODqSzjg5Ljg63jgrcNCivjgqvjgr/jgq7jg6os44K344Oz44K544KxDQor44Kr44OI44KmLOODkuODreODjuODqg0KK+OCq+ODiOOCpizjg47jg5bjg5LjgrUNCivjgqvjg6/jg4As44OP44Or44OfDQor44Kr44Ov44K544OfLOODqOOCpuOCsw0KK+OCreODiSzjgrfjg6Xjg7PjgqTjg4ENCivjgq3jgq/jg4Es44OO44OW44OS44OtDQor44Kt44Oi44OILOOCv+OCr+ODpA0KK+OCreODoOODqSzjgrHjg7Pjgr8NCivjgq3jg7Pjg4ks44Of44OB44OP44OrDQor44Kt44K/44Og44OpLOODn+ODmw0KK+OCreOCv+ODjizjgrXjg4DjgqoNCivjgq3jgr/jg6/jgr/jgrss44K544K544OgDQor44Kt44OD44K/LOODpOOCueOCsw0KK+OCreODpOODnizjgrvjgqTjgrgNCivjgq3jg6jjgr8s44OS44Ot44Om44KtDQor44Kz44OQ44Ok44K3LOOCuOODpeODs+OCuA0KK+OCs+ODkOODpOOCtyzjg6jjgqbjgrMNCivjgrPjgqws44Ki44OE44OkDQor44Kz44OP44OpLOOCv+OCq+ODpuOCrQ0KK+OCs+OCuOODiizjgrHjg7MNCivjgrPjg7Pjg44s44Kx44Kk44K0DQor44Kz44K644KrLOODnuOCteOCrQ0KK+OCs+OCpOODhyzjgrfjg7PjgrgNCivjgrPjg57jg4Qs44Oq44Ol44Km44K544KxDQor44Kz44Of44OK44OILOOCt+ODpeOCpuOCuA0KK+OCs+ODouODqizjgrXjg4jjgrMNCivjgrPjg7Pjg4ks44OS44Ot44OS44KzDQor44Kz44OL44K3LOODjuODquOCsw0KK+OCr+ODnOODpOODnizjgr/jg4DjgqLjgq0NCivjgq/jg57jgqzjgqQs44Oq44On44Km44K4DQor44Kv44Oe44K/LOOCv+OCq+OCsw0KK+OCr+ODquODj+ODqSzjgr/jgrHjgrcNCivjgq/jg6rjg4/jg6ks44Kx44Kk44KzDQor44Kv44Oq44K/LOOCteODiOOCtw0KK+OCr+OCteODjizjg5Ljg63jg5Xjg58NCivjgq/jgrfjg4As44Ki44Kt44OS44KzDQor44Oe44Ko44OALOODpuOCrQ0KK+ODnuOCrSzjgrHjgqTjgrnjgrENCivjg57jgq3jgr8s44K344Oz44K4DQor44Oe44Or44Ok44OeLOODhOODjeOCqg0KK+ODnuOCueODgCzjg4DjgqTjg4ENCivjg57jg4Tjg5Djg6ks44OB44Kr44OpDQor44Oe44OE44OQ44OpLOODkuODh+ODiOOCtw0KK+ODnuODhOOCpCzjgrHjgqTjgrMNCivjg57jg4Tjg6Ljg4gs44Oe44K144Om44KtDQor44Oe44OE44Og44OpLOOCt+ODs+OCv+ODreOCpg0KK+ODnuODhOOCqizjgqvjgrrjg5Ljg60NCivjg5/jgqvjg58s44Of44OE44KqDQor44Of44KtLOOCv+OCq+OCouOCrQ0KK+ODn+ODjuOCpuODqSzjgrvjgqTjgrgNCivjg5/jgrfjg54s44Kx44Oz44Kk44OBDQor44Of44OE44OK44KsLOODqOOCt+ODpuOCrQ0KK+ODn+OCpuODqSzjg57jgrXjg47jg6oNCivjg5/jg68s44K/44Kr44OO44OWDQor44Of44Ok44KqLOODpOOCueODj+ODqw0KK+ODn+ODpOOCvyzjgqvjg4rjgqYNCivjg5/jgrrjgr/jg4ss44Kr44K644OS44KzDQor44Of44K644K/44OLLOODkuODh+ODjuODlg0KK+ODouODgeOCuuOCrSzjg5/jg4Tjg6sNCivjg6Ljg4Hjgrrjgq0s44Kv44Of44KzDQor44Oi44OB44K644KtLOODjuODluODpuOCrQ0KK+ODouOCrizjg5Ljg63jgrcNCivjg6Ljg6os44K144OI44OrDQor44Oi44OqLOOCv+ODgOODkuOCsw0KK+ODouODqizjgr/jg4Djg6bjgq0NCivjg6Ljg6os44OI44Oi44OS44K1DQor44Oi44OqLOODiOOCt+OCrQ0KK+ODouODquODpOODnizjg4jjgrfjgqoNCivjg6Ljg63jgqrjgqss44Om44KtDQor44Oi44OI44OQLOODgOOCpOOCteOCrw0KK+ODoOODjeODiCzjgqvjg4Tjg57jgrUNCivjg6Djg6njgqQs44Oo44K344KzDQor44Og44Op44Kq44KrLOOCseODsw0KK+ODoOODreOCpCzjg5Ljg4fjg5Ljg60NCivjg4rjgqzjg5Xjgrgs44Kt44Of44OS44OIDQor44OK44Ks44KkLOOCouOCreODqQ0KK+ODiuOCpOODiOOCpizjg6bjgq3jgrMNCivjg4rjgqTjg4jjgqYs44K/44Ot44KmDQor44OK44Kr44Ks44OvLOODn+ODjuODqw0KK+ODiuOCq+ODj+ODqSzjg5/jg6TjgrMNCivjg4rjgqvjgrjjg54s44Om44K/44KrDQor44OK44Kr44K444OeLOODnuOCteODkuOCsw0KK+ODiuOCq+ODoOODqSzjgr/jgrHjgrcNCivjg4rjgqvjg6Djg6ks44OS44Ot44K3DQor44OK44Kr44Og44OpLOOCouODpA0KK+ODiuOCq+ODoOODqSzjgqLjgq3jg6kNCivjg4rjgqvjg6Djg6ks44Ki44Kt44OpDQor44OK44Kr44Og44OpLOOCouODhOOCtw0KK+ODiuOCq+ODoOODqSzjg5LjgrXjg4gNCivjg6Tjg57jg4As44K/44Kr44K3DQor44OK44Kr44KqLOOCqOOCpOOCuA0KK+ODiuOCq+ODhOOCq+OCtSzjgq3jg6jjgrcNCivjg4rjgqvjg6Tjg54s44Oe44OqDQor44OK44Og44OpLOODoOODjeODpuOCrQ0KK+ODiuOCueODjizjg4rjgqrjgq0NCivjg4vjgqTjgrzjgq0s44OI44K344OP44OrDQor44OL44K344Kr44OvLOOCs+OCpuOCvuOCpg0KK+ODi+OCt+OCreOCquODqizjg6jjgrfjgqLjgq0NCivjg4vjgrfjgrbjg68s44Kr44OE44OO44OqDQor44OO44Ki44KtLOODqOOCpuOCsw0KK+ODjuODgCzjgrHjg7Pjgr/jg63jgqYNCivjg47jg4As44Om44Km44KzDQor44OO44Kw44OBLOODkuOCteOCtw0KK+ODjuODoOODqSzjg5Ljg4fjgq0NCivjgqrjg4HjgqLjgqQs44Kz44K544KxDQor44Oi44OqLOODnuODquOCsw0KK+OCquOCrOOCteODr+ODqSzjg5/jg4Tjg5LjgrUNCivjgqrjgqzjgrXjg6/jg6ks44K/44OE44K3DQor44Kq44Ks44OvLOODquODp+OCpuOCsw0KK+OCquOCrOODryzjgr/jgqvjg5Ljg60NCivjgqrjgqzjg68s44Ok44K544OS44K1DQor44Kq44Kw44OpLOODleODn+ODjuODqg0KK+OCquOCsOODqSzjg57jgrXjgq0NCivjgqrjgqrjgqTjgrcs44OS44Ot44OkDQor44Kq44Kq44Kr44OvLOODiOOCt+OCouOCrQ0KK+OCquOCquOCq+ODryzjgrjjg6Xjg7PjgrMNCivjgqrjgqvjgrws44OK44Kq44KtDQor44Kq44KtLOODhuODhOODpA0KK+OCquODoOODqSzjgqLjg4TjgrcNCivjgqrjgqrjgrnjg58s44Oe44K144OS44OtDQor44Kq44Kq44K/LOODleODn+ODkuOCsw0KK+OCquOCquOCv+OCsSzjg4bjg4TjgrgNCivjgqrjgqrjgr/jg4ss44Kx44OzDQor44Kq44Kq44Ok44OeLOOCseODs+OCuA0KK+OCquOCvOOCrSzjg5Ljg63jgrcNCivjgqrjgqvjg6Ljg4gs44K444Ol44OzDQor44Kq44Kr44Og44OpLOOCs+OCpuOCt+ODsw0KK+OCquOCq+ODoOODqSzjg57jg6Ljg6sNCivjgqrjgq/jg6Djg6ks44Oe44OK44OfDQor44Kq44Oz44OALOODjuODquODkuOCsw0KK+OCquODjuODh+ODqSzjg47jg6rjg6bjgq0NCivjgqrjg6Tjg5ks44K/44Kr44OO44OqDQor44K144KsLOODiOOCt+OCouOCrQ0KK+OCteOCpOODiOOCpizjg6bjgqbjgrMNCivjgrXjgqvjgqQs44K144OK44KoDQor44Kk44KuLOOCouOCreODjuODqg0KK+OCteOCq+ODouODiCzjg5LjgrXjg40NCivjgrXjgqvjg6Ljg4gs44Oo44K344OS44OtDQor44K144Kr44OE44KuLOOCq+OCuuOCqg0KK+OCteOCq+OCpuOCqCzjgrHjg7PjgrgNCivjgrXjgq/jg54s44Oe44Oq44KzDQor44K144Kv44OpLOOCqOOCpOOCrQ0KK+OCteODiuODgCzjg6jjgrfjg5Ljg60NCivjgrXjgrXjgq0s44K/44Kx44KqDQor44K144K144KtLOODiuOCquODpA0KK+OCteODiOOCpizjgqvjg4Tjg6bjgq0NCivjgrXjg4jjgqYs44K/44Kr44OS44OtDQor44K144OI44KmLOODiOOCt+OCouOCrQ0KK+OCteODiOOCpizjgrfjg6XjgqbjgqTjg4ENCivjgrXjg4jjgqYs44OS44OH44OS44K1DQor44K144OI44KmLOOCq+ODhOODkuODrQ0KK+OCteODiOOCpizjgq3jg6fjgqbjgrMNCivjgrXjg4jjgqYs44Ok44K544OS44OIDQor44K144OI44KmLOOCq+OCuuODkuODhw0KK+OCteODiOOCpizjgrXjg4jjg58NCivjgrvjgqTjgrEs44Oe44K144OO44OqDQor44K744KtLOODqOOCpuOCpOODgQ0KK+OCu+OCrSzjg4bjg4Tjg6QNCivjgrvjgq0s44OG44OEDQor44K744Kt44Kw44OBLOOCv+OCseOCtw0KK+OCu+OCvyzjg4jjgrfjgqoNCivjgrfjg7PjgqzjgqQs44Ki44Kt44KzDQor44K344OQ44K/LOODqOOCt+OCsw0KK+OCt+ODkOOCvyzjg6bjgq3jg47jg6oNCivjgrfjg5bjgq0s44K444Ot44KmDQor44K344Ky44OI44OfLOOCq+OCuuODn+ODhA0KK+OCt+OCrCzjg5Ljg63jgrcNCivjgrfjgqTjg5As44Of44KrDQor44K344Oe44OALOOCpOODgeODreOCpg0KK+OCt+ODnuOCq+ODryzjgrfjgrLjg6sNCivjgrfjg5/jgros44K544K544OgDQor44K344Of44K6LOOCv+OCq+ODhOODig0KK+OCt+ODn+OCuizjgqrjgrXjg6ANCivjgrfjg5/jgros44K/44Kr44K3DQor44K344Oi44Og44OpLOOCv+OCq+OCtw0KK+OCt+ODouODoOODqSzjgqLjgq3jg6kNCivjgrfjgqrjgrjjg6os44OS44Ot44K3DQor44K344Kq44K244OvLOOCouODpOOCsw0KK+OCt+ODqeOCpCzjg6bjgqbjgrMNCivjgrfjg6njgqvjg68s44OV44Of44KoDQor44K944Oe44OzLOOCuOODsw0KK+OCveOCpuODpCzjg57jgrXjg4gNCivjgr3jg47jg4As44Oe44Om44OfDQor44K544OALOODiOODouODj+ODqw0KK+OCueOCrOODjizjgrHjg7PjgqTjg4ENCivjgrnjgqzjg4zjg54s44K144OI44K3DQor44K544Ks44OvLOOCu+OCpOOCpOODgQ0KK+OCueOCruOCpuODqSzjgq3jg6fjgqbjgrnjgrENCivjgrnjgq7jg6Tjg54s44OI44Oi44OS44OtDQor44K544K644KtLOOCseODsw0KK+OCueOCuuOCrSzjgrPjgqbjgrgNCivjgrnjgrrjgq0s44Ki44OE44K3DQor44K544K644KtLOOCt+ODs+OCpOODgeODreOCpg0KK+OCt+ODp+OCpuOCuCzjg4bjg4Tjg6QNCivjgr/jgrDjg4Es44Kr44OE44OkDQor44K/44Kk44OpLOOCv+ODgOODiA0KK+OCv+OCuOODnizjg6rjgqgNCivjgr/jgqvjg4As44K/44Kr44OO44OqDQor44Kq44Kr44Ok44OeLOOCouOCteOCsw0KK+OCv+OCq+OCruOCtyzjg5/jgqvjgrMNCivjgr/jgqvjg4/jgrcs44K344Oz44Kk44OB44Ot44KmDQor44K/44Kr44OP44K3LOODpOOCueOCtw0KK+OCv+OCq+ODj+OCtyzjg57jgrXjg6jjgrcNCivjgr/jgqvjg4/jgrcs44OI44Kq44OrDQor44K/44Kr44OP44K3LOOCreODp+OCpuOCsw0KK+OCv+OCq+OCrSzjg6jjgqbjgqTjg4ENCivjgr/jgqvjgqrjgqss44K/44Kv44OkDQor44K/44Kr44Kq44KrLOODkuODreODpuOCrQ0KK+OCpOODnuOCpOOCuuODnyzjg6jjgrfjgqoNCivjgr/jgqvjgrXjg68s44K/44Kr44K3DQor44K/44Kr44K5LOODhOODqOOCtw0KK+OCv+OCseOCpCzjgrvjg4TjgrMNCivjgr/jgrHjg4rjgqss44K/44Kx44K3DQor44K/44Kx44K244KtLOODqOOCt+OCsw0KK+OCv+ODnuOCpOOCtyzjg5Ljg4fjgqLjgq0NCivjgr/jg57jgq0s44K344Ky44OrDQor44K/44OK44KrLOOCouOCreODqQ0KK+OCv+ODi+OCsOODgSzjg4rjgqrjgq0NCivjgr/jgqbjg4Es44OS44Ot44OK44KqDQor44OG44Op44Of44OELOODgOOCpOOCueOCsQ0KK+ODiOODgCzjg57jg6QNCivjg4jjg5/jg4rjgqws44K344Oz44Kk44OB44Ot44KmDQor44OI44Of44K/LOOCouOCreODqA0KK+ODiOODs+OCsOOCpizjg5Ljg4fjg4jjgrcNCivjg4Tjg43jgqvjg68s44OS44Ot44OV44OfDQor44OE44OE44KkLOOCq+ODhOODqOOCtw0KK+OCpuODgeODgCzjgr/jgrHjgrcNCivjgqbjg4Hjg4/jgrcs44K/44Kv44KqDQor44Km44Ko44OALOODnuOCteODkuOCsw0KK+OCpOODiOOCpizjg6jjgqbjgqTjg4ENCivjgqbjgqjjg4As44OS44Ot44K3DQor44Km44Ko44OP44OpLOODkuODh+OCouOCrQ0KK+ODleOCuOOCvyzjgrfjg5sNCivjgqbjg6Hjg4As44OG44OE44OkDQor44Km44Oh44OP44OpLOODpOODqOOCpA0KK+OCpuODqeODmSzjg5LjgrXjgrMNCivjg6/jgr/jg5ks44Ok44K544K3DQor44Ok44Ks44K144KtLOOCueODn+OCqw0KK+ODpOOCruODouODiCzjg5Ljg63jgrcNCivjg6Tjgrjjg54s44Kr44OE44OfDQor44Ok44Oe44OALOODn+ODgeOCsw0KK+ODpOODnuODgCzjgr/jgqvjgrcNCivjg6Tjg57jg4As44Of44Kr44KzDQor44Ok44Oe44Kw44OBLOOCteODiOOCsw0KK+ODpOODnuOCsOODgSzjg4jjg6LjgrMNCivjg6Tjg57jg6Ljg4gs44Ok44K544OS44OtDQor44Ok44Oe44Oi44OILOODpOOCueODkuODrQ0KK+ODpOODnuODouODiCzjg4rjgqrjgq0NCivjg6Tjg57jg6Ljg4gs44Kz44Km44K4DQor44Ok44Oe44ONLOOCq+OCuuODkuODrQ0KK+ODpOODnuOCteOCrSzjg4/jg6vjg47jg6oNCivjg6Tjg57jgrfjgr8s44Kr44K644KtDQor44Ok44Oe44K244KtLOODnuOCteODpuOCrQ0KK+ODpOODnuOCteOCrSzjg4jjgrfjg6QNCivjg6Tjg4rjgqzjg68s44K/44Kx44K3DQor44Ok44OK44Ku44OALOODpOOCueOCqg0KK+OCquODjizjg5Ljg4fjg47jg5YNCivjg6Tjg4rjgq7jgrXjg68s44Ok44K544K3DQor44Ok44K244KtLOODiuOCquOCrQ0KK+ODpOOCtuODryzjgrvjgqTjgrgNCivjg6jjgrPjg6Tjg54s44OS44Ot44KzDQor44Oo44Kz44Ok44OeLOOCv+OCseOCtw0KK+ODqOODoizjgq3jg6fjgqbjgrgNCivjg6jjgrfjg4As44OS44OH44KqDQor44Oo44K344OALOODpuOCpuOCuA0KK+ODqOOCt+ODgCzjg4/jg6vjg5LjgrMNCivjg6jjgrfjg4/jg6ks44Ki44Om44OfDQor44Oo44K344OP44OpLOODnuOCteODkuODhw0KK+ODqOOCt+ODouODqizjgr/jgqvjgrcNCivjgrzjg4Pjg4Qs44OS44OH44OoDQor44Ki44OZLOODqOOCt+OCv+ODgA0KK+OCouODgOODgSzjgrPjgqbjgrgNCivjgqLjgqTjgqvjg68s44OS44Ot44OV44OfDQor44Ki44Kr44KoLOODn+ODgeOCsw0KK+OCouODs+ODieOCpizjg57jgq0NCivjgqLjgrXjg58s44Of44K1DQor44Kk44Oe44OK44KrLOODj+ODq+ODqA0KK+ODmeODg+ODlyzjg6bjgqbjgrnjgrENCivjg5njg4Pjg5cs44OS44Ot44Ki44KtDQor44OB44Kr44OP44OpLOOCquOCteODoA0KK+ODleOCuOOCpCzjg5/jg4Tjg4jjgrcNCivjg5XjgrjjgrXjgq0s44K/44Kr44Om44KtDQor44OV44Kv44K344OeLOOCouOCuuOCtQ0KK+OCr+ODreODgCzjg4jjgrfjg58NCivjg6Ljg6os44Oe44K144OS44OHDQor44Ov44K/44OK44OZLOOCv+OCq+OCqA0KK+OCr+ODreODgCzjgqLjgrXjgrMNCivjg5/jg6Tjgqbjg4Es44K444Ol44Oz44KzDQor44Kk44OI44KmLOOCreOCr+OCsw0KK+OCpOOCpOODgCzjg57jg6bjg58NCivjgqvjg6/jg44s44Oe44KkDQor44Ki44Kk44Km44OpLOODiOOCt+OCqg0KK+ODjuOCtuOCrSzjg4bjg6vjgqLjgq0NCivjg5Pjgr/jg4ss44Ki44Ok44OfDQor44K/44OL44Ki44KkLOODgOOCpOOCueOCsQ0KK+OCouOCquOCrSzjgrjjg6Xjg7PjgqTjg4ENCivjgqrjgq0s44Kt44K144KvDQor44Ki44Kq44KtLOOCq+OCuuODpuOCrQ0KK+OCouOCquODpOOCrizjgrHjg7Pjgr8NCivjgqLjgqvjg4vjgrcs44OK44Kq44OS44OtDQor44Ki44K144KqLOODnuOCteODkuOCsw0KK+OCouOCteOCr+ODqSzjgqvjgqgNCivjgqLjgrfjgrbjg68s44Kr44K644KtDQor44Ki44K/44KvLOODkuODreOCtw0KK+OCouODgOODgSzjg6bjgqbjgrMNCivjgqTjg4jjgqYs44Om44OqDQor44K344Oe44Oi44OILOOCouODiOODoA0KK+OCteOCpOODiOOCpizjg57jgrXjg6sNCivjgrfjg47jg4/jg6ks44Kr44OE44OfDQor44Kq44Kr44OOLOODkuODh+OCsw0KK+OCquOCq+ODouODiCzjg5Ljg63jgrcNCivjg5Ljg6njgqvjg68s44Oo44K044Ot44KmDQor44K544Ks44OM44OeLOODiOODouODn+ODgQ0KK+OCouODiuOCtuODryzjg5/jg47jg6sNCivjgqLjg6njgqQs44OI44K344Kr44K6DQor44Ki44Op44KkLOOCreODs+ODpA0KK+OCouODqeOCq+ODryzjg6bjg5/jgrMNCivjgqLjg6njgqvjg40s44Ki44Kt44KzDQor44Ki44Op44KtLOOCt+OCsuODjuODqg0KK+OCouODs+ODieOCpizjg5Ljg63jg5LjgrUNCivjgqTjgqbjg4Es44Oe44Kz44OIDQor44Kk44Kx44OALOODpOOCueODkuODrQ0KK+OCpOOCseODpCzjg57jgrXjgq0NCivjgqTjgrfjgqvjg68s44OS44Ot44K3DQor44Kk44K344Kr44OvLOODnuOCteODnw0KK+OCpOOCt+OCq+ODryzjg5Ljg63jgrcNCivjgqTjgrfjgqvjg68s44Kz44Km44Kk44OBDQor44Kk44K344Ks44KtLOODkuODreOCtw0KK+OCpOOCt+OCsOODrSzjgqvjgqrjg6sNCivjgqTjgrfjg4/jg6ks44Oe44K144KtDQor44Kk44K944Og44OpLOOCr+ODn+OCsw0KK+OCpOOCv+OCrOOCrSzjgq3jg6jjg58NCivjgqTjgqTjg4As44K344Ot44KmDQor44Kk44OB44Kr44OvLOOCveODqA0KK+OCpOODgeOCq+ODryzjg6jjgrfjg4jjgrcNCivjgqTjg4cs44Kk44K/44OrDQor44Kk44OI44KmLOODkuODreODleODnw0KK+OCpOODjOOCpCzjg57jgq3jg4gNCivjgqTjg47jgqbjgqgs44OO44OW44OS44OtDQor44Kk44Oe44OL44K3LOODoOODjeOCv+OCqw0KK+OCpOODnuODj+ODpOOCtyzjgrfjg7PjgqTjg4ENCivjgqTjg6/jgrXjgq0s44Oe44K144OE44KwDQor44Kk44Ov44K144KtLOODnuODpuODnw0KK+OCpOODr+ODouODiCzjgrHjgqTjgqTjg4ENCivjgqbjgqjjg44s44Ko44Kk44K4DQor44Km44Ko44OOLOOCq+OCuuODjuODqg0KK+OCpuODgeOCpOOCsSzjg6jjgrfjgqLjgq0NCivjgqbjg4Hjg6Tjg54s44Oo44K344K/44KrDQor44Km44Oh44OALOOCt+ODpeOCpuOCuA0KK+OCpuODoeODoOODqSzjgrXjg6gNCivjgqbjg6Hjg6Ljg4gs44OB44Ob44KzDQor44Km44Or44K344OQ44OpLOODqOOCt+ODkuOCsw0KK+OCqOOCsOODnizjgqjjg6oNCivjgqjjg6ks44OK44Kq44OkDQor44Kq44Km44K144KrLOODnuOCteOCv+OCqw0KK+OCquOCquOCq+ODryzjg57jgrXjg5/jg4QNCivjgqrjgqrjgrXjg68s44Oe44K144OS44KzDQor44Kq44K344OeLOODqOOCt+OCv+OCqw0KK+OCquOCt+ODnizjg57jg4rjg5YNCivjgqrjgqrjgrnjgqws44K/44OE44OS44KzDQor44Kq44Kq44K/44OLLOODkuODh+OCrQ0KK+OCquOCquODhCzjg57jgrXjg5Xjg58NCivjgqrjgqrjg4Tjgqss44K/44OA44OS44K1DQor44Kq44ONLOODnuOCteODpuOCrQ0KK+OCquOCquODjizjgqLjgq3jg6kNCivjgqrjgqrjg4/jgrcs44Kx44Oz44Kk44OBDQor44Kq44Kq44OP44K3LOOCseODs+OCtA0KK+OCquOCquODkOODpOOCtyzjgrfjg7PjgrgNCivjgqrjgqrjg6jjgrcs44K/44Kr44Om44KtDQor44Kq44Kr44Oi44OILOOCv+ODgOODpuOCrQ0KK+OCquOCrOOCteODr+ODqSzjg6jjgrfjgrMNCivjgqrjgqzjg68s44OS44OH44OO44OqDQor44Kq44Kv44K/44OLLOOCtOOCpg0KK+OCquOCr+ODoOODqSzjg6bjgqbjgrMNCivjgqrjgrDjg6ks44OS44Ot44KzDQor44Kk44Kk44Kr44OvLOOCseODs+OCpOODgeODrQ0KK+OCquOCsOODqSzjgrXjg4jjgrcNCivjgqrjgrbjg68s44K/44Kr44OO44OqDQor44Kq44K244OvLOODkuODh+ODkuOCsw0KK+OCquOCquODjizjg6Tjgrnjg47jg6oNCivjgqvjgq3jg6Ljg4gs44Os44Kk44KzDQor44Kr44Kt44Oi44OILOODkuODreOCtw0KK+OCq+OCsuODpOODnizjg4jjg6Ljg58NCivjgqTjgrfjgqvjg68s44OS44Ot44K3DQor44Kr44K944OqLOODpOOCueODkuODiA0KK+OCq+ODhOODnyzjg4rjgqrjgq0NCivjgqvjg4jjgqYs44OK44Kq44KzDQor44Kr44OI44KmLOODjuODquOCsw0KK+OCq+ODiOOCpizjgrfjgrLjg47jg6oNCivjgqvjg4jjgqYs44OA44Kk44K544KxDQor44Kr44OI44KmLOOCseOCpOOCuA0KK+OCseOCuuOCqyzjgqLjgq3jg6kNCivjgqvjg4njg6/jgq0s44Of44OE44K344Ot44KmDQor44Kr44ON44KzLOOCouOCreODkuODrQ0KK+OCq+ODjuOCpizjg47jg6rjgrMNCivjgqvjg5/jg6Tjg54s44OS44Ot44Kr44K6DQor44Kr44Ov44K344OeLOODkuODreODpuOCrQ0KK+OCq+ODr+OCuyzjgrXjg4jjg6sNCivjgqvjg6/jg44s44Kr44K644KtDQor44Kr44Ov44Oi44OILOODnuOCteOCv+OCqw0KK+OCq+ODr+ODouODiCzjgrfjg7MNCivjgqvjg6/jgrss44OK44Kq44KtDQor44Kr44Oz44OALOODkuODh+ODiOOCtw0KK+OCreOCr+ODgSzjg5LjgrXjg6bjgq0NCivjgq3jgq/jg4Es44Ki44Kt44KzDQor44Kt44Kv44OBLOODjuODluOCqg0KK+OCreOCv+OCouODqeOCtyzjg57jgqTjgrMNCivjgq3jgr/jgqrjgqss44Of44Om44KtDQor44Kt44K/44K444OeLOOCouOCreODkuODrQ0KK+OCreOCv+ODoOODqSzjgr/jgrHjg58NCivjgq3jgr/jg6Djg6ks44Ki44OE44K3DQor44Kt44OG44OpLOOCteODiOOCtw0KK+OCreODjuOCt+OCvyzjgrjjg6Xjg7PjgrMNCivjgq3jg6Djg6ks44K/44Kr44OS44OtDQor44Kt44Oq44KmLOOCv+OCseOCtw0KK+OCr+OCteOCq+ODmSzjg57jgqjjgrMNCivjgq/jg5zjgr8s44Kz44K544KxDQor44Kv44Oe44Ks44KkLOOCseODs+OCuOODreOCpg0KK+OCr+ODnuODjizjgrXjg6oNCivjgq/jg6rjg4/jg6ks44Oe44K144OIDQor44Kv44Or44K344OeLOOCouOCreODqOOCtw0KK+ODiuOCq+OCrOODryzjg4HjgqsNCivjgrPjgqTjg4cs44OS44OH44KtDQor44Kz44Oz44OOLOODnuOCteOCtw0KK+OCs+ODouODiCzjg6bjgqbjgrMNCivjgrPjgqws44Kv44OL44OP44OrDQor44Kz44K444OeLOOCv+OCpOOCuA0KK+OCs+ODi+OCtyzjgqvjg6jjgrMNCivjgrPjg5Djg6Tjgrcs44K744Kk44KmDQor44Kz44Oe44OELOOCseOCpOOCpOODgQ0KK+OCs+ODn+ODpCzjgrfjg7Pjg6QNCivjgrPjg7Pjg4ks44K144OI44K3DQor44Kz44Oz44OJLOODhOODiOODoA0KK+OCtOODiOOCpizjg4DjgqTjgrnjgrENCivjgrXjgqTjg4jjgqYs44K/44OE44OkDQor44K144Kk44OI44KmLOOCs+OCpuOCuA0KK+OCteOCpOODiOOCpizjg5Ljg4fjgq0NCivjgrXjgqvjg6Ljg4gs44K/44Kx44KqDQor44K144Kv44OeLOODiOOCt+OCq+OCug0KK+OCt+ODn+OCuizjg4rjgqrjgq0NCivjgrXjg4Djg4Hjgqss44Kx44Kk44K444OlDQor44K144OILOOCteODqOOCsw0KK+OCteODiOOCpizjgrjjg6Xjg7MNCivjgrXjg4jjgqYs44OS44OI44OfDQor44K144OI44KmLOODn+OCqw0KK+OCteODiOOCpizjgqvjg4Tjg6bjgq0NCivjgrXjg6/jg4As44K444Ol44Oz44K4DQor44Kk44K944OvLOODnuOCteODkuOCsw0KK+OCt+ODoizjgr/jgqvjgqLjgq0NCivjgrfjg6XjgqYs44Oe44K144OkDQor44K344Kq44Kr44OvLOOCouODpOODjg0KK+OCt+OCquOCtuODryzjg57jgrXjg5LjgrMNCivjgrfjgqvjgqbjg4Es44Of44OE44OrDQor44K344K644OqLOOCv+OCseOCtw0KK+OCt+ODjizjg4bjg4TjgrgNCivjgrfjg47jgrbjgq0s44K444Ol44Oz44K444Ot44KmDQor44K344OO44OALOODnuOCueODnw0KK+OCt+ODjuODgCzjg6bjgq3jgrMNCivjgrfjg5Djgrbjgq0s44Ki44Kt44OS44OIDQor44K344OQ44K/LOOCteOCquODqg0KK+OCt+ODnuODoOODqSzjg47jg5zjg6sNCivjgrfjg5/jgros44Of44Oe44KzDQor44K344Of44K6LOODpuOCpuOCuA0KK+OCt+ODn+OCuizjgrXjg4jjgrcNCivjgrfjg5/jgros44K344Oz44Kk44OB44Ot44KmDQor44K/44Kt44K/44OLLOODpuOCpuOCpOODgQ0KK+OCt+ODqeODjizjgr/jgqvjg6bjgq0NCivjgrnjgqjjg5Ljg60s44Kx44OzDQor44K544Ks44KkLOODn+OCreOCqg0KK+OCueOCrOODqOOCtyzjgrHjg7PjgrgNCivjgrnjgqzjg6/jg6ks44K344Ky44OV44OfDQor44K544Ku44Km44OpLOODjuODquOCouOCrQ0KK+OCueOCruOCt+ODnizjgrfjg6Xjg7PjgrnjgrENCivjgrnjgq7jg6Ljg4gs44OS44K144K3DQor44K544K644Kr44OvLOODqOOCt+OCqA0KK+OCueODgCzjgqLjgq3jg6jjgrcNCivjgrnjg5/jgqvjg68s44Kr44OE44Ki44KtDQor44K544Of44OOLOOCs+OCpuOCuA0KK+OCu+OCreOCsOODgSzjgrfjgrLjg58NCivjgr3jgqjjgrjjg54s44Ok44K544OK44OqDQor44K/44Kq44KrLOOCv+ODgOOCtw0KK+OCv+OCq+OCrSzjgq3jg6fjgqbjgrMNCivjgr/jgqvjgrfjg54s44K344Oz44Kk44OBDQor44K/44Kr44K7LOOCreODqOOCv+OCqw0KK+OCv+OCq+ODj+OCtyzjgqvjg4Tjg6QNCivjgr/jgqvjg4/jgrcs44K/44OE44OkDQor44K/44Kr44OP44K3LOOCqOOCpOOCpOODgQ0KK+OCv+OCreOCv+ODiyzjg4rjg4oNCivjgr/jgrHjgqbjg4Es44OS44Ot44OW44OfDQor44K/44Kx44OALOOCv+ODgOODpuOCrQ0KK+OCv+OCseODgCzjgrHjgqTjgqTjg4ENCivjgr/jgrHjg4As44Kk44Kv44OS44KzDQor44K/44Kx44Og44OpLOODiuOCquODkuOCtQ0KK+OCv+OCtCzjg57jgrXjgrMNCivjgr/jgq3jgrbjg68s44OB44Kr44KzDQor44K/44OK44KrLOODqOOCpuOCsw0KK+OCv+ODiuOCqyzjg6rjg6fjgqbjgrnjgrENCivjgr/jg4rjgqss44Kx44Oz44K4DQor44Kk44Ov44OOLOOCq+OCuuOCt+OCsg0KK+OCv+ODiuOCqyzjg5Ljg63jgrcNCivjgr/jg4vjgqgs44K144OA44Oo44K3DQor44K/44OL44Kw44OBLOOCq+OCuuOCqA0KK+OCv+ODi+OCsOODgSzjgrgNCivjgr/jg4vjg57jg4Qs44OS44Ot44K3DQor44K/44OQ44K/LOODn+ODr+OCsw0KK+OCv+ODnuOCrSzjgr/jg4Tjg6QNCivjgqTjgrvjg6Ljg4gsDQor44K/44Of44OkLOOCouOCrQ0KK+ODgeODo+ODouODiCzjg5XjgrXjgrcNCivjg4Hjg44s44Oo44Km44Kk44OB44Ot44KmDQor44OE44Kr44Oi44OILOODqOOCpuOCsw0KK+ODhOODgeODj+OCtyzjg6Djg43jg5Ljg60NCivjg4bjg6njgrXjg68s44K/44OE44OkDQor44OILOODn+ODgeOCsw0KK+ODleOCr+OCt+ODnizjg4rjgqrjgrcNCivjg4jjg5As44Kt44On44Km44KzDQor44OI44Of44Oo44K3LOODkuODiOOCrQ0KK+ODiOODoOODrSzjg4rjg4Tjg5LjgrMNCivjg4jjg6jjgrfjg54s44K444Ol44Oz44Kk44OBDQor44OI44Oq44Ok44OeLOODiuOCquODpuOCrQ0KK+ODiuOCpOODiOOCpizjg5Ljg63jg6bjgq0NCivjgqTjg4cs44Of44OB44Kr44K6DQor44OP44K/LOODleOCteOCqg0KK+ODiuOCq+OCrOOCrSzjg5/jgq0NCivjg4rjgqvjgqzjg68s44K/44Kr44KzDQor44OK44Kr44K244OvLOODqOOCt+OCsw0KK+ODiuOCq+ODhyzjgrfjg6fjgqbjgrMNCivjg4rjgqvjg4/jg6ks44Ki44OE44K3DQor44K/44Kx44Km44OBLOOCq+ODhOODkuOCtQ0KK+ODiuOCq+ODoOODqSzjgrXjg4jjgrcNCivjg4rjgqvjg6Djg6ks44K/44Kx44K3DQor44OK44K5LOODkuODreOCtw0KK+ODi+OCpOODoOODqSzjg4jjgrfjg5Ljg60NCivjg4vjgrfjgqrjgqss44OS44OH44Ki44KtDQor44OL44K344Kr44OvLOOCouOCreODqQ0KK+ODi+OCt+OCtuODryzjgrfjgrLjg6sNCivjg4vjgrfjg4gs44Ok44K544KzDQor44OL44K344OOLOOCs+OCpuOCuA0KK+ODi+OCt+ODj+ODqSzjg4rjgqrjgq0NCivjg4vjgrfjg6Djg6ks44Kv44OL44Oi44OqDQor44ON44Oi44OILOOCteODgeODqA0KK+ODjuOCsOODgSzjgqjjg58NCivjg47jgrDjg4Es44Oe44K144OkDQor44OO44K444OqLOODqOOCt+ODiuOCqg0KK+ODjuOCuOODqizjgr/jgqvjg5Ljg60NCivjg47jg6Djg6ks44Kr44K644OS44KzDQor44OP44OD44K/LOOCouOCreOCsw0KK+ODj+OCt+ODkCzjg4HjgqvjgrMNCivjg4/jgrfjg6Ljg4gs44Om44KrDQor44OP44K344Oi44OILOOCpOODgeODreOCpg0KK+OCpOODjuOCpuOCqCzjgq3jg6jjgrcNCivjg4/jgrfjg6Ljg4gs44K/44Kr44KzDQor44OP44K744Ks44OvLOOCseODs+OCpOODgQ0KK+ODj+OCvyzjgqvjgrrjgq0NCivjg4/jgr8s44Oo44K344Kr44OEDQor44OP44K/44OOLOODnuOCpOOCsw0KK+ODj+ODpOOCtyzjg5Ljg63jg6bjgq0NCivjg4/jg6Tjgrcs44Kv44Of44KzDQor44OP44Op44OALOODiOODouOCsw0KK+ODj+ODqeODgCzjgrHjg7PjgqTjg4ENCivjg5Djg5As44OS44Ot44OV44OfDQor44OQ44OQLOOCouOCueOCqw0KK+ODkuOCsOODgSzjg47jg5bjg5LjgrMNCivjg5LjgrDjg4Es44Kt44On44Km44KzDQor44OS44K144KtLOOCtOOCpuOCuA0KK+ODkuOCuOODqizjgqjjg6oNCivjg5Ljg6njg6Tjg54s44K/44Kr44Om44KtDQor44OV44Kv44OALOODnuODpuODnw0KK+ODleOCuOOCpCzjg5Ljg63jg5Xjg58NCivjgrnjgqzjgqQs44K144OI44OfDQor44OV44K444K/LOOCq+OCuuODpA0KK+ODleOCuOOCvyzjg6bjgq3jgrMNCivjg5Xjgrjjgr8s44OO44OW44KzDQor44OV44K444K/44OLLOOCteODiOOCtw0KK+ODleOCuOODiuODnyzjgrfjgrLjg6bjgq0NCivjg5Xjgrjjg44s44K/44OE44Om44KtDQor44OO44OO44Og44OpLOOCq+ODhOOCuA0KK+ODleOCuyzjgr/jg4bjg6sNCivjgrnjgq7jg6Ljg4gs44Oo44Km44Kk44OB44Ot44KmDQor44Ob44K944Kr44OvLOOCv+ODhOOCqg0KK+ODm+ODquOCpuODgSzjg4rjgqrjg58NCivjg5vjg6rjgqvjg68s44OS44Ot44Ki44KtDQor44Oe44Kt44OOLOOCpOOCr+OCsw0KK+ODnuOCreODjizjg47jg6rjg5LjgrMNCivjg57jgrfjgrMs44OI44K344OS44KzDQor44Oe44K544OALOOCq+OCuuODpA0KK+ODnuOCueODluODgSzjgr/jgqvjgrcNCivjg57jgrnjg5bjg4Es44Ki44Kt44OS44OtDQor44Oe44OE44KkLOODnuOCreOCsw0KK+ODnuODhOOCtuODryzjg57jgrXjg4gNCivjg4jjg5/jg4rjgqws44K/44Kr44K3DQor44Oe44OE44OK44KsLOODqOOCt+OCsw0KK+ODnuODhOODiuOCrCzjg6bjgq0NCivjgrnjgrrjgq0s44Ok44K544K4DQor44Oe44OE44Og44OpLOOCseOCpOOCpOODgQ0KK+ODnuODhOODouODiCzjg5Ljg4fjg5Xjg58NCivjg57jg4Tjg6Ljg4gs44OI44Oi44OS44K1DQor44Oe44OE44Ok44OeLOODjuODquOCsw0KK+ODnuODhOODpOODnizjgrPjgqbjgrgNCivjg57jg4Tjg6Tjg54s44OG44OE44OkDQor44Oe44OE44Oo44K3LOOCouOCreOCsw0KK+ODnuODjizjgrvjgqTjgrgNCivjg57jg6vjgqrjgqss44OI44K344Ok44K5DQor44Of44Kr44OfLOODqOOCpuOCsw0KK+ODn+OCrSzjg5Ljg63jgq0NCivjg5/jgr7jgrDjg4Es44Oe44K144OfDQor44Of44K/LOODn+ODjuODqw0KK+ODn+ODjSzjg4HjgqLjgq0NCivjg5/jg43jgqos44K144OI44OrDQor44K144OI44KmLOOCq+ODhOODjuODqg0KK+OCpOOCr+OCvyzjgqLjg6QNCivjg5/jg6Tjgrbjgq0s44OS44OH44KtDQor44K/44Kr44Ku44OvLOOCt+OCsuODqw0KK+ODn+ODqOOCtyzjg6jjgqbjgrMNCivjg6DjgqvjgqQs44Of44OE44K/44KrDQor44Og44Op44Kr44OfLOODnuOCteOCouOCrQ0KK+OCpOOCt+ODgCzjg4TjgqvjgrUNCivjg6Djg6njgqvjg58s44K144OI44K3DQor44Og44Op44Kr44OfLOOCq+OCuuOCv+OCqw0KK+ODoOODqeODpOODnizjgrPjgqbjgrgNCivjg6Djg6njg6Tjg54s44Oe44Kz44OIDQor44Og44Ot44KkLOODnuOCteOCv+OCqw0KK+ODouOCv+OCpCzjgqvjgrrjg57jgrUNCivjg6Ljg4jjgq0s44Kr44K644OkDQor44Oi44OI44Og44OpLOOCs+OCpuOCuA0KK+ODouODqizjgqvjg4Tjg5Ljg60NCivjgqvjgrss44Ki44Kt44Oo44K3DQor44Oi44Oq44K344K/LOOCq+OCuuODkuODrQ0KK+ODouODquOCvyzjg4rjgqrjgq0NCivjg6Ljg63jg4jjg58s44OS44OH44OO44OWDQor44Oi44Ot44OP44K3LOODpuOCreOCsw0KK+OCq+ODr+ODouODiCzjg5Ljg63jg47jg6oNCivjg6TjgrDjg4Es44OG44Or44OS44KzDQor44Ok44K444OeLOODiuOCquOCsw0KK+ODpOOCueOCq+ODryzjg5Ljg63jgrcNCivjg6Tjgrnjg4As44Oe44K144OS44OIDQor44Ok44OE44K644KrLOODnuODquOCsw0KK+ODpOODiuOCruOCteODryzjg6bjgq0NCivjg6Tjg57jgrDjg4Es44Kt44Oz44OkDQor44Ok44Oe44K144KtLOOCv+OCq+ODpA0KK+ODpOODnuOCtuOCrSzjg5Ljg63jg6bjgq0NCivjg6Tjg57jgrbjgq0s44Oo44K344KzDQor44Ok44Oe44K244KtLOOCu+OCpOOCuOODreOCpg0KK+ODpOODnuODgCzjgrHjg7Pjgr/jg63jgqYNCivjg6Tjg57jg4As44OK44Kq44KtDQor44Ok44Oe44OALOOCv+OCq+ODjuODqg0KK+ODpOODnuODiuOCqyzjgrfjg6XjgqbjgqTjg4ENCivjgq/jg6rjg4/jg6ks44Oe44K144KtDQor44Ok44Oe44Oi44OILOODnuOCteOCsw0KK+ODpOODnuODouODiCzjgrfjg7Pjgr/jg63jgqYNCivjg6Tjg57jg6Ljg4gs44Ok44K544K3DQor44Oe44OE44KqLOODnuOCueODnw0KK+ODqOOCrizjg4Hjg4jjgrsNCivjg6jjgrPjg6Tjg54s44OS44OH44KtDQor44Oo44Kz44Ok44OeLOODqOOCpuOCsw0KK+ODqOOCt+OCq+ODryzjg4rjgqrjg5Ljg4cNCivjg6jjgrfjgqvjg68s44Oo44K344KzDQor44Oo44K344OALOOCs+OCpuOCuA0KK+ODr+OCr+OCpCzjg4bjg4Tjg6QNCivjg6/jgr/jg4rjg5ks44Kx44Oz44K/44Ot44KmDQor44Ov44K/44OK44OZLOOCt+ODmw0KK+ODr+OCv+ODiuODmSzjg6jjgrfjg5Ljg4gNCivjg6/jgr/jg4rjg5ks44Oe44OK44OWDQor44OP44Ok44K3LOOCv+OCq+OCtw0KK+ODpOODnuODgCzjg47jg5bjg6QNCivjg6/jgqvjg5Djg6Tjgrcs44K144OI44K3DQor44Kk44Ov44Og44OpLOODjuODquODnuOCtQ0KK+ODr+OCv+ODiuODmSzjg47jg5zjg6sNCivjgq/jg6/jgrfjg54s44K544Kw44OrDQor44Kq44OQ44K/LOOCteODiOODnw0KK+OCouODiuOCtuODryzjg5Ljgqvjg6sNCivjg6Tjgq4s44Kz44K544KxDQor44Ki44Kr44KqLOODiOODouOCq+OCug0KK+OCt+ODn+OCuizjg4rjg4TjgrMNCivjgrXjgqvjg6Ljg4gs44OS44OH44OO44OWDQor44Ki44Kq44KtLOOCt+OCsuOCouOCrQ0KK+OCouOCuuODnizjgrPjgqbjgqTjg4ENCivjgqTjgqTjg4As44Ko44OKDQor44Kk44Kx44Km44OBLOODoeODkOOCqA0KK+OCpOOCt+OCq+ODryzjg4bjg4TjgqoNCivjgqTjgr3jgqzjgqQs44Oe44Kz44OIDQor44Kk44OI44KmLOOCv+ODgOODkuODrQ0KK+OCpOODkCzjgqLjgrrjgrUNCivjgqTjg6/jg6Ljg4gs44K344Oz44K4DQor44Km44Ko44K144KrLOOCv+OCseODkuODrQ0KK+OCpuOCqOODjizjg57jg6Ljg6sNCivjgqbjgqjjg5Ljg6ks44Kx44Oz44K0DQor44Km44OB44Ok44OeLOOCseODs+OCuA0KK+OCpuODoeODiuOCpCzjgrnjgrnjg6ANCivjgqjjg6Djg6ks44K/44Kr44OS44OtDQor44Kq44Kt44K/LOOCuOODpeODs+OCpOODgQ0KK+OCquOCquOCr+ODnCzjg5Ljg63jgrcNCivjgqrjgqrjgr/jg4ss44Ki44OkDQor44Kq44Kq44OELOODkuODreOCsw0KK+OCquOCquODhOOCqyzjg6jjgrfjg58NCivjgqrjgqvjgrfjg60s44K344Ot44KmDQor44Kq44OALOOCouODhOOCtw0KK+OCquODjizjg5Ljg63jg58NCivjgqvjg4jjgqYs44Oo44K344Om44KtDQor44Kr44ON44OS44K1LOODiuOCquOCsw0KK+OCq+ODn+ODpCzjgqrjgrXjg6ANCivjgqvjg6/jgqQs44K/44Kv44Oo44K3DQor44Kr44Ov44Kq44KrLOODkuODh+OCrQ0KK+OCreOCv+ODjizjgrjjg6Xjg7PjgqTjg4ENCivjgq3jg5bjgrcs44OE44OYDQor44Kt44Og44OpLOODnuOCteOCv+OCqw0KK+OCreODoOODqSzjg57jgrXjgrMNCivjgq/jgrXjgqss44K144OI44OfDQor44Kv44OQLOOCv+OCq+OCtw0KK+OCr+ODnOOCvyzjgrfjg63jgqYNCivjgq/jg63jgqTjg68s44K344Oz44K4DQor44Kv44Ov44OQ44OpLOOCqOOCpOOCuA0KK+OCs+OCpOOCsSzjgrnjg5/jgqoNCivjgrPjgqTjgr/jg5Djgrcs44OE44Kr44K1DQor44Kz44Km44OALOODkuODh+OCqg0KK+OCs+OCpuODgCzjg57jgrXjgr/jgrENCivjgrPjgrfjg6Djg6ks44Ki44OE44K3DQor44Kz44Ok44OK44KuLOODkuOCteOCsw0KK+ODj+ODiOODqizjg6bjgqbjgrMNCivjgrXjgqvjgqbjgqgs44K144OvDQor44Ki44OZLOOCs+OCpuOCpOODgQ0KK+OCteODiOOCpizjg6Tjgrnjg5/jg4QNCivjgrXjg4jjgqYs44Oe44Om44OfDQor44K144OI44KmLOODqOOCt+OCqg0KK+OCt+ODnuODgCzjg6rjgqgNCivjgqTjg57jgqQs44Kr44OE44Ki44KtDQor44K544Ks44OM44OeLOODgeODqA0KK+OCu+OCrSzjgqLjgq3jg5Ljg60NCivjgrvjg44s44K/44Kr44Ok44K5DQor44Ki44OZLOODnuOCteODj+ODqw0KK+OCv+OCq+OCueOCrCzjg57jg6bjg58NCivjgr/jgqvjgrnjgq4s44OO44OW44KzDQor44K/44Kr44OP44K3LOODiOODouODnw0KK+OCv+OCq+ODj+OCtyzjgrHjg7Pjgr/jg63jgqYNCivjgr/jgqvjg4/jgrcs44Ki44Kt44OS44OIDQor44K/44Kr44OP44K3LOOCs+OCpuOCuA0KK+OCv+OCq+ODj+OCtyzjg5LjgrXjg58NCivjgr/jgq3jg6Ljg4gs44Om44Km44K/DQor44K/44Kv44OcLOODqOOCt+ODpuOCrQ0KK+OCv+OCseOCpuODgSzjg4jjg6LjgrMNCivjgr/jgrHjg4rjgqss44Om44Kt44OS44KzDQor44K/44OK44KrLOODouODiOOCpOODgQ0KK+OCv+ODiuOCqyzjg4Hjgrrjg6sNCivjgr/jg5Djgr8s44Kr44OE44Om44KtDQor44K/44Of44OkLOOCv+OCseOCtw0KK+OCv+ODoOODqSzjg6zjgqTjgrMNCivjg4Hjg6Xjgqbjg54s44OS44Ot44K/44KrDQor44Ob44Oz44K044KmLOODpuOCpuOCsw0KK+ODiuOCq+OCqizjg47jg5bjgqLjgq0NCivjg4rjgqvjgqzjg68s44Kz44Km44Kk44OBDQor44OK44Kr44K+44OOLOODkuODh+ODjuODqg0KK+ODiuOCq+ODjizjg5/jg4Tjg5Ljg60NCivjg4vjg4Pjgr8s44OP44OKDQor44OL44OvLOODquODp+OCpuOCpOODgQ0KK+ODjuOCuCzjg5Ljg63jgqLjgq0NCivjg4/jgrbjg44s44K/44Kr44K3DQor44OP44K344Oi44OILOODiOOCquODqw0KK+ODj+OCt+ODouODiCzjg6bjgqbjgrMNCivjg4/jg6Tjgrcs44OB44Kq44OqDQor44OP44Ok44K3LOODiOOCpuOCsw0KK+ODj+ODqeOCsOODgSzjgr/jgqvjgrcNCivjg4/jg6vjgrDjg4Es44OI44K344KqDQor44OS44Op44OHLOOCpOOCteODoA0KK+ODkuODqeODjizjg57jgrXjgr/jgqsNCivjg5Ljg6njg6Tjg54s44Om44KtDQor44OV44Kr44K244OvLOODkuODreODnw0KK+ODleOCr+ODnuOCuSzjgqvjg6gNCivjg5Xjgq/jg6Ljg6os44Oe44K144OrDQor44OV44K444Kr44OvLOOCt+OCsuODqw0KK+ODm+OCt+ODjizjg47jg6rjgrMNCivjg5vjgr3jg44s44Ki44Kt44OS44OIDQor44Oe44OE44Kq44KrLOODqOOCt+ODiuODqg0KK+ODnuODhOODoOODqSzjg4rjg5/jgrMNCivjg5/jgrrjgqvjg58s44OG44OE44Ot44KmDQor44Of44OE44KkLOOCv+OCpOOCueOCsQ0KK+ODn+ODjuOCq+ODnyzjg4jjgrfjg6bjgq0NCivjg5/jg6Tjg6Ljg4gs44K/44OE44K3DQor44Og44Op44Kr44OfLOOCseOCpOOCsw0KK+ODpOOCvyzjg4rjgqrjgrMNCivjg6Tjg4rjgq7jgr8s44Of44OO44OrDQor44Ok44Oe44Kw44OBLOOCs+OCpuOCuA0KK+ODpOODnuOCt+OCvyzjg5/jg4HjgqoNCivjg6Tjg57jg6Ljg4gs44Om44Km44Kk44OB44OtDQor44Oo44K344K/44KxLOODkuODh+ODjuODqg0KK+ODqOOCt+ODoOODqSzjgqjjg6oNCivjg5LjgrDjg4Es44K/44Kx44K3DQor44OP44K344Oi44OILOOCouODhOOCtw0KK+ODr+OCv+ODiuODmSzjg6bjgq0NCivjgqLjgq3jg5As44K/44Kx44OS44KzDQor44Ki44Kt44Oi44OILOODn+ODhOODqA0KK+OCouODnuODpCzjg57jgrXjg6sNCivjgqLjg7Pjg4njgqYs44OG44OE44Ot44KmDQor44Ki44Oz44K244OvLOODjuODluODkuODrQ0KK+OCouOCteODj+OCvyzjgqvjgrrjg5Ljg4gNCivjg5Djg5As44Of44OB44OS44OIDQor44OZ44OD44K344OnLOODhuODq+ODkuODiA0KK+ODgeOCq+ODouODiCzjgrXjgqrjg6oNCivjg4Hjg6fjgqYs44OA44Kk44K544KxDQor44OV44K444OS44OpLOODn+ODr+OCsw0KK+ODleOCuOOCpCzjgrHjgqTjgrMNCivjg5Xjgrjjgr/jg4ss44Oo44K344Kr44OEDQor44OV44Kr44OALOODnuOCteOCouOCrQ0KK+ODleODq+ODgOODhizjg4rjgqrjgq0NCivjg5Xjg6vjg6Tjg54s44OS44Ot44Om44KtDQor44K044Km44OALOOCreODqOODjuODlg0KK+OCs+OCpOOCsSzjg6jjgrfjg6bjgq0NCivjg4/jgqvjg57jg4As44Kz44Km44K+44KmDQor44OP44K744Ks44OvLOOCv+OCq+OCqg0KK+ODj+OCt+ODouODiCzjgrPjgqbjgqTjg4ENCivjg4/jg4Pjgr8s44Kx44Oz44Kk44OBDQor44OP44OD44OI44OqLOOCv+OCq+ODkuODrQ0KK+ODj+ODpOOCq+ODryzjg5Ljg63jgq0NCivjg4/jg6Tjgqvjg68s44OK44Or44OE44KwDQor44OS44OM44OeLOOCv+OCr+ODpA0KK+ODkuODreOCrSzjg4jjg6Ljg5Ljg4cNCivjg5vjg6rjg47jgqbjg4Es44Om44Km44K4DQor44Ob44K944OOLOOCouODhOOCsw0KK+ODleOCuOOCquOCqyzjg5Ljg4fjgq0NCivjg5Xjg6vjgr8s44OK44Or44KtDQor44OV44K144OOLOOCseODsw0KK+ODleOCt+ODnyzjgqrjgrXjg6ANCivjgqTjgr/jg4ks44OS44OI44K3DQor44Kk44OALOODnuOCteODkuODrQ0KK+OCpOODj+ODqSzjgrHjgqQNCivjgqTjgqTjg4As44K/44Kr44OS44OtDQor44Kk44OK44Ok44OeLOODkuODreOCq+OCug0KK+OCpOODjizjgrjjg6Xjg7PjgqTjg4ENCivjgqTjg47jgqbjgqgs44Oh44Kw44OfDQor44Kk44K344OALOODqOOCt+ODhOOCsA0KK+OCpOOCt+ODouODiCzjg6Tjgrnjg6jjgrcNCivjgqTjgrfjg68s44Of44OE44OrDQor44Kk44K344Ov44K/44OqLOODkuODreOCq+ODhA0KK+OCpOOCv+OCr+ODqSzjg4rjg5vjgrMNCivjgqTjg4jjgqYs44K/44Kr44OS44OtDQor44Kk44OI44KmLOOCt+ODpeOCpuOCpOODgQ0KK+OCpOODr+OCpCzjg4rjg4rjgrMNCivjgqTjgrbjg68sDQor44K444OWLOOCueOCsOODqw0KK+OCq+ODkOODpOODnizjg57jgrXjgq0NCivjgqvjgqQs44Om44Km44KzDQor44Kr44Kt44OM44OeLOOCuOODpeODsw0KK+OCq+OCreOCtuOCrSzjg57jgrXjgq0NCivjgqvjgq/jg4As44K344Ol44Km44K544KxDQor44Kr44OK44Ks44OvLOOCt+ODsw0KK+OCq+ODs+ODmSzjgr/jgrHjgqoNCivjgqvjg7Pjg4As44Ok44K544OS44OIDQor44Kr44K144OALOODn+ODgeOCv+OCqw0KK+OCq+ODr+OCpCzjg4jjg6LjgrMNCivjgrXjgrXjgq0s44Kk44Kv44KoDQor44Kr44Ov44K7LOOCteODmw0KK+OCreODouODiCzjg5/jgq3jg40NCivjgq3jgr/jg4/jg6ks44OO44OW44KqDQor44Kt44K/44Og44OpLOODqOOCt+OCqg0KK+OCs+ODkOODpOOCtyzjg5Ljg63jgqgNCivjgrPjg5bjgrEs44Om44Km44KzDQor44Kz44Kk44K644OfLOOCq+ODiuOCsw0KK+OCs+ODn+ODpOODnizjg57jg6rjgrMNCivjgrPjg7Pjg47jgqvjgrrjg5Ljg60s44Ok44K544OS44OIDQor44Kz44K344Kr44OvLOOCv+OCq+ODpuOCrQ0KK+OCs+ODs+ODjizjgrPjgqbjgqTjg4ENCivjgq/jg5ws44Oe44K144OO44OWDQor44Kv44Oc44Kr44OvLOODiuODhOOCrQ0KK+OCr+ODieOCpizjg4jjg6LjgqsNCivjgq/jg6rjg4/jg6ks44Kr44OE44Kk44OBDQor44Kv44Ot44KuLOOCteOCqOOCsw0KK+ODnuODgeODgCzjg4/jg6vjg58NCivjg57jgrjjg54s44Ok44K544KzDQor44Kk44K344K6LOODjuODquODpuOCrQ0KK+ODnuOCq+ODmSzjg5Ljg63jg6gNCivjg57jg6vjg6Tjg54s44OS44OH44Ki44KtDQor44Oe44K544OALOOCq+ODqA0KK+ODnuODhOOCrOOCteOCrSzjgqLjgq3jg6kNCivjg57jg4TjgqQs44K/44Kx44K3DQor44Oe44OE44KkLOOCteOCquODqg0KK+ODnuODhOODouODiCzjgrHjg7PjgrgNCivjg57jg6/jgr/jg6os44Kr44Oz44K4DQor44Of44OB44Oi44OILOODiOOCt+ODkuODrQ0KK+ODn+OCrSzjgrnjg5/jgrMNCivjg5/jg4Tjg54s44K/44Kr44OO44OqDQor44Of44Km44OpLOOCseOCpOOCtA0KK+ODn+ODryzjg57jgrPjg4gNCivjg5/jg6Tjg6Ljg4gs44Kr44OE44OS44K1DQor44Of44Ok44Oi44OILOODpOOCueODjuODlg0KK+ODn+ODpOODouODiCzjgr/jgrHjg47jg5YNCivjg5/jg6Tjgr8s44Oe44K144K3DQor44Og44Op44Kr44OfLOODiOOCquODqw0KK+OCv+ODj+ODqSzjg47jg6rjgrMNCivjg5/jgrrjgr/jg4ss44OI44Oi44KrDQor44Oi44OqLOODpuOCrQ0KK+ODouODquOCsOODgSzjg57jgrXjg5LjgrMNCivjg6Ljg6rjgqvjg68s44OS44Ot44K3DQor44Oi44Oq44Oi44OILOOCq+OCuuODnw0KK+ODouODquOCvyzjg6zjgqTjgrMNCivjg6Djg6njgqvjg58s44K/44OE44OS44KzDQor44Ki44OH44Ks44OvLOOCouOCpA0KK+ODiuOCrOOCteOCqyzjg5Ljgqvjg6sNCivjg4rjgqzjgr8s44K444Ol44OqDQor44OK44Ks44K/LOOCq+ODhOODjuODlg0KK+OCpOOCtuODryzjgqvjgqrjg6oNCivjg4rjgqvjg5/jg40s44Oe44Oi44OrDQor44OK44Kr44Og44OpLOODkuODreODjuODqg0KK+ODiuOCq+ODoOODqSzjgr/jg4Tjg6QNCivjgqTjg6Ljg4gs44Kz44Km44Kk44OB44Ot44KmDQor44OK44Kr44Og44OpLOOCv+OCseOCtw0KK+ODiuOCq+OCqizjg6bjgqbjgrgNCivjg4rjgqvjg6Tjg54s44Km44K344OzDQor44OK44Kr44K244OvLOOCreODqOOCtw0KK+ODiuODn+OCrSzjg4/jg6vjg6jjgrcNCivjg4vjgqTjg58s44Ki44Kt44OS44OtDQor44OL44Kk44K844KtLOOCq+OCquODqg0KK+ODi+OCt+ODhyzjg5Ljg4fjgqLjgq0NCivjg4vjg68s44OS44OH44KtDQor44OO44OZLOODn+OCtQ0KK+OCquOCquOCvyzjgrfjgrLjgqLjgq0NCivjgqrjgqzjg68s44Oe44K144Oo44K3DQor44Kq44Kw44K5LOODpuOCpuOCueOCsQ0KK+OCquOCquODouODiCzjgrfjg6fjgqbjgrgNCivjgqrjgrfjg54s44K/44Kr44OO44OqDQor44Kq44Kq44K/LOOCseODs+OCpOODgQ0KK+OCquOCquODpCzjg5Ljg5/jgrMNCivjgqTjgrfjgqvjg68s44Oo44KmDQor44Kq44Kr44OALOOCv+OCseOCtw0KK+OCquOCryzjg5Xjg5/jg6bjgq0NCivjgqrjgq/jg4As44Oe44K144KtDQor44Kq44K344Kv44OcLOOCseODs+OCpOODgQ0KK+OCquOCvOOCrSzjgqvjg4Tjg5LjgrMNCivjg6njgqQs44Om44Km44K4DQor44Kk44OI44KmLOODiOODouODpA0KK+OCteOCpOOCrSzjg5Ljg63jgrcNCivjgrXjgqTjg4jjgqYs44K/44OE44OkDQor44Oo44K344OALOODn+ODgeODpOOCuQ0KK+OCteOCsyzjgrfjgrLjg5/jg4QNCivjgrXjgrXjgrjjg54s44K444Ol44Oz44OkDQor44K144K144KtLOODpuOCreOCsw0KK+OCteODiOOCpizjg4TjgrDjg5Ljg4cNCivjgqTjg6/jg6Ljg4gs44Kr44K644OS44KzDQor44K144OI44KmLOODgeOCqOOCsw0KK+OCteODr+ODgCzjg5Ljg4fjg6TjgrkNCivjgrvjgq3jgqvjg68s44Kk44K644OfDQor44K744Kt44ONLOODn+ODhOOCqg0KK+OCt+ODkOOCvyzjg4rjgqrjgq0NCivjgrfjgrLjg4/jg6ks44K344Oz44OkDQor44K344Oe44Kq44KrLOOCouOCreODkuOCsw0KK+OCt+ODn+OCuizjgqvjgrrjg5Ljg60NCivjgrfjg6Is44Oe44K144Ki44KtDQor44K344Oi44Og44OpLOOCv+OCq+OCtw0KK+OCt+ODoOODqSzjgr/jgqvjg5LjgrUNCivjgr3jg6Hjg6Qs44Ki44Kt44OS44KzDQor44K544Ko44Oo44K3LOOCseODs+OCpOODgQ0KK+OCueOCuuOCrSzjg5Ljg4fjg6bjgq0NCivjgrnjgrrjgq0s44OK44Kq44KtDQor44K/44Kr44OALOOCpOODgeODreOCpg0KK+OCv+OCq+ODj+OCtywNCivjgr/jgqvjgrss44Oe44OK44OWDQor44K/44Kx44OALOOCouOCreODqQ0KK+OCv+OCseOCpCzjg5LjgrXjg6jjgrcNCivjgr/jgrHjg6Ljg4gs44OP44K444OhDQor44K/44Oe44KkLOODiOOCt+ODkuOCsw0KK+OCv+ODoOODqSzjgr/jgqvjg6bjgq0NCivjgr/jg6Djg6ks44K144OI44OrDQor44Kk44K344Kr44OvLOODkuODiOOCtw0KK+OCv+ODiuOCqyzjgrPjgqbjgqTjg4Hjg63jgqYNCivjgr/jg4rjgqss44Oe44K144OS44OtDQor44K/44OL44Kw44OBLOOCv+OCseODjuODqg0KK+OCv+ODi+OCsOODgSzjg5Ljg63jgr/jgqsNCivjgr/jg4vjgrDjg4Es44Kx44Oz44K4DQor44K/44OL44Kw44OBLOOCseODsw0KK+OCpOOCt+ODgCzjgqLjg4TjgrcNCivjgr/jg4vjgrfjgr8s44OV44Of44OODQor44OG44Op44OL44K3LOODhOODqOOCtw0KK+ODiOOCquODpOODnizjgq3jg6fjgqbjgrMNCivjg4jjg5/jgr8s44Of44OvDQor44OI44ON44Ks44OvLOOCv+OCrw0KK+ODiOODqOODgCzjg47jg6rjgrMNCivjg4jjg6jjgr8s44K344Ol44Km44K4DQor44OE44OB44OkLOODqOOCt+OCsw0KK+OCpOOCt+OCq+ODryzjg4rjgqrjgq0NCivjg4Tjg6Djg6ks44OI44K344Ki44KtDQor44OE44OO44Kr44OvLOODqOOCt+ODnw0KK+OCpuODgeODgCzjg5Ljg4jjgrcNCivjgqbjgrXjg58s44K/44Kx44K3DQor44Ov44K444OeLOODquOCsw0KK+ODr+OCv+ODiuODmSzjg57jgq0NCivjg6/jgr/jg4rjg5ks44Oo44Km44Kk44OBDQor44Ov44K/44OK44OZLOODpOODqOOCpA0KK+ODpOOCrizjgrHjgqTjgqTjg4ENCivjg6Tjgq4s44Kt44On44Km44KzDQor44Ok44Kv44OvLOODkuODreODleODnw0KK+ODpOODnuODgCzjg5Ljg63jgq0NCivjg6Tjg57jg4As44K/44Kr44Om44KtDQor44Ok44Oe44Kw44OBLOODiOOCt+ODpuOCrQ0KK+ODpOODnuODjuOCr+ODgSzjg57jgrXjgrMNCivjg6Tjg57jgrfjgr8s44Kz44Km44Kk44OBDQor44Ok44Oe44K344K/LOODiuOCquODpuOCrQ0KK+ODpOODnuOCtuOCrSzjg5Ljg4fjg6bjgq0NCivjg6Tjg57jgrbjgq0s44Om44K/44KrDQor44Ok44OK44Ks44OvLOOCv+ODhOODreOCpg0KK+ODpOOCueODgCzjg4jjg6jjgqLjgq0NCivjg6Tjgrnjgqgs44OI44Oi44Om44KtDQor44Kk44K944Ks44KkLOOCv+ODgOODjuODlg0KK+ODpOOCv+OCrOOCpCzjgqjjg6oNCivjg6jjgrfjg4As44Oq44On44Km44KzDQor44K/44Kr44OP44K3LOODnuOCteOCrQ0KK+OCquOCq+ODgCzjgrfjg6XjgqbjgqTjg4ENCivjgqLjgqrjgq0s44Oe44K144OrDQor44Ki44Kt44OQLOOCouOCreOCsw0KK+OCouODmSzjgqLjgq3jgrMNCivjgqLjg57jg44s44Oe44K144KqDQor44Ki44Oq44Oi44OILOOCt+ODpeOCpuOCuA0KK+OCouODs+ODieOCpizjg6bjgq0NCivjgqTjgqvjg68s44K/44Kk44OY44KkDQor44Kk44K344KkLOODjuODquODkuODrQ0KK+OCpOOCt+OCq+ODryzjg4rjgqrjgrMNCivjgqTjgrfjgrrjgqss44Om44OfDQor44Kk44K344OQ44K3LOOCt+ODpeODs+OCueOCsQ0KK+OCpOOCt+ODouODiCzjg6rjg6fjgqbjgrnjgrENCivjgqTjg4cs44K144OI44KzDQor44Kk44OB44OO44K7LOOCteODiOOCtw0KK+OCpOODiuODgCzjg57jg4rjg5YNCivjgqTjg4zjgqQs44Ok44K544OoDQor44Kk44OO44Km44KoLOODnuODn+OCsw0KK+OCpOODpOODnizjgrPjgqbjgrgNCivjgqTjg6/jgrXjgq0s44Of44K644Oe44K1DQor44Kk44Ov44OeLOOCq+OCuuOCsw0KK+OCpOODr+ODnuODhCzjgqrjgrXjg4rjgqoNCivjgqbjgqjjg4As44OS44Ot44KzDQor44Km44Ko44OOLOODkuODreOCrQ0KK+OCpuODgeODgCzjgr/jgqvjgqoNCivjgqbjg4ks44Kx44Oz44K4DQor44Km44Oh44OP44OpLOOCv+OCq+OCtw0KK+OCqOOCsOODgSzjg4jjg5/jgrXjg5YNCivjgqjjg47jgq0s44Oo44K344KzDQor44Ko44Oi44OILOODn+ODhOODouODiA0KK+OCqOODouODqizjgrvjgqTjg6QNCivjg4rjgqvjgqzjg68s44OK44Kq44Ki44KtDQor44Kq44Kq44K/LOODkuODh+ODpuOCrQ0KK+OCquOCrOOCvyzjg6TjgrnjgrcNCivjgqrjgqzjg68s44OO44OW44K/44KrDQor44Kq44Ks44OvLOODrOOCpOOCsw0KK+OCquOCr+OCpCzjgr/jgq/jgrgNCivjgqrjgq/jg6Djg6ks44Oi44OI44KzDQor44Kq44Kq44K/44OLLOODhuODq+OCouOCrQ0KK+OCquODhOODiOODoizjg6bjgq3jgrMNCivjgqrjg4vjgrbjg68s44K344Ky44KtDQor44Kq44OOLOODjuODquOCouOCrQ0KK+OCquODkOODiizjgrvjgqTjgqTjg4Hjg63jgqYNCivjgqrjg57jgqzjg6os44Oe44K144OkDQor44Kr44Kt44K244OvLOODhuODhOODkuODrQ0KK+OCq+OCseODkizjgqjjg6rjgrMNCivjgqvjgrXjg4/jg6ks44Oe44OJ44KrDQor44Kr44K4LOOCquOCteODoA0KK+OCq+OCuOOCvyzjgr/jgqvjgqoNCivjgqvjgrjjgr8s44K/44Kr44KqDQor44Kr44K444Ok44OeLOODn+ODjuODqw0KK+OCq+ODiOOCpizjg6jjgrfjg47jg5YNCivjgqvjg4rjg4As44Kx44KkDQor44Kr44ON44KzLOODjuODluOCq+ODhA0KK+OCq+ODjeOCsyzjg6rjg6fjgqbjgr8NCivjgqTjgr/jg44s44Kx44Oz44K544KxDQor44OK44Ks44OE44OeLOOCt+ODpeOCpuODmOOCpA0KK+OCq+ODjuOCpizjgrvjgqTjgrgNCivjgqvjg57jgqgs44OK44Kq44KtDQor44Kr44Ov44KkLOODhuODhOOCqg0KK+OCq+ODr+ODnuOCvyzjg5Ljg63jgq0NCivjgqvjg7Pjg44s44Oe44Kk44KzDQor44Kt44Km44OBLOOCpOOCuuODnw0KK+OCreOCtyzjg6jjgqbjgrMNCivjgq3jgr/jgqzjg68s44OI44Oi44OO44OWDQor44Kt44OO44K344K/LOODiuODquODiOOCtw0KK+OCreODp+OCpuOCrOOCryzjg57jgrPjg4gNCivjgq/jg5ws44OI44Oi44OO44OqDQor44Kv44Oc44K/LOOCv+OCr+ODpA0KK+OCr+ODnOOCvyzjgrfjg7Pjg5rjgqQNCivjgq/jg6rjg4/jg6ks44Oq44KoDQor44Kv44Oq44Ok44OeLOOCseOCpOOCsw0KK+OCpOOCt+OCrOOCrSzjg4jjgrfjg5XjgrUNCivjgq/jg63jgqQs44Kk44OE44Ot44KmDQor44Kz44Km44K144KtLOOCs+OCpuOCpOODgQ0KK+OCs+OCpuODgCzjgqLjg4TjgrcNCivjgrPjg5Djg6Tjgrcs44OO44OW44Ki44KtDQor44Kz44OQ44Ok44K3LOODhuODhOODpA0KK+OCs+ODkOODpOOCtyzjg6bjgqbjgrnjgrENCivjgrPjg5Djg6Tjgrcs44Kz44Km44K4DQor44Kk44OO44Km44KoLOODjuODluOCouOCrQ0KK+OCteOCpOODmyzjg4rjg6vjg5Ljg60NCivjgrXjgqvjgqzjg68s44Oo44Km44OY44KkDQor44Kr44Ov44Og44OpLOODpuOCv+OCqw0KK+OCteOCteOCquOCqyzjg6jjgqbjgrMNCivjgrXjgrXjgq0s44OO44Oc44OrDQor44K144OI44KmLOODjuODquOCq+OCug0KK+OCteODiOOCpizjg57jg4rjg5YNCivjgrXjg4rjg4As44Kq44K144OgDQor44K144Or44Ok44OeLOOCseODs+OCpOODgQ0KK+OCt+OCquODhCzjgqjjgqTjgrnjgrENCivjgrfjgqrjg47jg6Qs44K344OO44OWDQor44K344Kq44Ok44OeLOODjuODnOODqw0KK+OCt+OCruODj+ODqSzjg5Ljg63jg6bjgq0NCivjgrfjgrfjg4ks44Kv44OL44KqDQor44K344OO44K244KtLOOCq+OCuuODkuODiA0KK+OCt+ODkOOCvyzjg5/jg47jg6sNCivjgrfjg5/jgrosDQor44K344On44Km44OOLOOCt+ODs+OCpOODgQ0KK+OCt+ODqeOCrSzjg5Ljg63jg6bjgq0NCivjgrnjgq7jgqrjgqss44Of44OE44Kr44K6DQor44K544Ku44OP44OpLOOCreODqOOCt+OCsg0KK+OCueOCuuOCrSzjg5LjgrXjg4bjg6sNCivjgrnjgrrjgq0s44K344Ky44Om44KtDQor44K544Of44Ok44OeLOOCu+OCpOOCuA0KK+OCu+ODg+OCvyzjg57jgrXjgq0NCivjgqTjgrfjg6/jgr8s44OA44Kk44K444OlDQor44K744Oz44K044KvLOODn+ODjuODqw0KK+OCv+OCq+OCquOCqyzjg6bjg58NCivjgr/jgqvjgrbjg68s44K/44Kr44K344KyDQor44K/44Kr44OP44K3LOOCouODpOOCsw0KK+OCv+OCq+ODoOODqSzjgr/jgqvjg6bjgq0NCivjgr/jgq3jg4gs44OS44OH44KtDQor44K/44OK44KrLOOCq+OCug0KK+OCv+ODiuOCqyzjgqLjgq3jgrMNCivjgqTjg4jjgqYs44K444Ol44Oz44K4DQor44K/44OK44OZLOOCseODs+OCuA0KK+OCv+ODi+OCsOODgSzjg57jg4rjg5YNCivjg4Hjg6Pjg6/jg7Pjg6Qs44Oo44K344OP44OrDQor44OG44Op44K144KrLOODkuODreOCrQ0KK+ODiOOCs+ODrSzjgrjjg6Xjg7PjgqTjg4ENCivjg4rjgqvjgqQs44K/44Kr44K3DQor44OK44Kr44KqLOOCt+ODs+OCuA0KK+ODiuOCrOOCquOCqyzjg5/jg5sNCivjg4rjgqvjgqzjg68s44Oi44OI44Ki44KtDQor44OK44Kr44K444OeLOOCueODkuODgQ0KK+ODiuOCrOOCuyzjgr/jg4Tjg6QNCivjg4rjgqvjg44s44K744Kk44K/DQor44OK44Kr44OOLOOCuA0KK+ODiuOCrOODjizjg6bjgqbjgrMNCivjgqTjgrHjg4As44Ki44Kt44KzDQor44OK44Kr44Og44OpLOODnuODquOCsw0KK+ODiuOCq+ODpOODnizjgqvjg4Tjg4jjgrcNCivjg4vjgqos44K444Ol44Oz44Kk44OBDQor44OL44K344KqLOODjuODquOCsw0KK+ODi+OCt+OCq+OCpCzjg4jjgrfjg5/jg4QNCivjg4vjgrfjgrbjgqss44Oo44K344KzDQor44OL44K344OALOODgOOCpOOCueOCsQ0KK+ODi+OCt+ODgCzjgr/jgqvjgrcNCivjgqTjgqTjgrjjg54s44Oe44K144KtDQor44OL44K344OP44OpLOOCq+OCuuODpuOCrQ0KK+ODi+OCt+ODoOODqSzjgqvjgrrjg6QNCivjg43jg63jg6Es44OS44Ot44K3DQor44OO44K444OeLOOCteODjeODkuODrQ0KK+ODjuODiuOCqyzjg4DjgqTjgrnjgrENCivjg4/jgrfjg5As44OO44Oq44Kr44K6DQor44OP44OB44OkLOOCv+OCq+ODkuODrQ0KK+ODj+ODg+ODiOODqizjgrMNCivjgqTjgqTjg4As44OS44Ot44Om44KtDQor44OP44OWLOODnuOCs+ODiA0KK+ODj+ODpOOCq+ODryzjg4bjg4Tjg63jgqYNCivjg4/jg6Tjgrcs44OK44Kq44KzDQor44OP44Ok44K344OeLOODkuODh+OCtw0KK+ODj+ODqSzjgr/jgq/jg58NCivjg5Ljgqzjgrfjg4As44Oe44K144OrDQor44K744Kt44Kw44OBLOOCreODp+OCpuOCpOODgQ0KK+ODkuODqeOCpCzjgqvjgqrjg6oNCivjg5Ljg63jgrnjgqgs44OS44Ot44Om44KtDQor44OS44Ot44OP44K/LOOCv+OCr+ODpA0KK+ODleOCr+OCt+ODnizjg5/jg4TjgqoNCivjg5Xjgrjjgqos44OG44Oz44Oa44KkDQor44OV44K444K/LOODpuOCpuOCpOODgeODreOCpg0KK+ODleOCuOODnuOCrSzjg6bjgq3jg5LjgrMNCivjg5Xjgrjjg6/jg6ks44OI44Kq44OrDQor44OV44Or44Kk44OBLOODpuOCpuOCueOCsQ0KK+ODm+OCteOCqyzjgr/jgrHjgrcNCivjg5vjgrfjg44s44Kz44Km44K4DQor44Ob44OqLOODpuOCreOCsw0KK+ODm+ODquODouODiCzjg6bjgqbjgrgNCivjg5vjg7Pjg54s44Om44Kt44OO44OWDQor44Oe44Ko44Kr44OvLOOCv+OCseODj+ODqw0KK+ODnuOCqOODgCzjgr/jgqvjg5Ljg4gNCivjg57jgqjjg4As44Of44Kt44KqDQor44Oe44Ko44OALOOCv+ODhOODpA0KK+ODnuOCteOCpCzjgq/jg58NCivjg57jg4TjgqQs44OS44OH44OO44OWDQor44Oe44OE44K244OvLOODgeOCq+ODqQ0KK+ODnuODhOODgCzjgr/jgqvjg6bjgq0NCivjg57jg4Tjg4jjg6Is44Oe44K144OK44KqDQor44Oe44OE44OK44KsLOOCseODs+OCuA0KK+ODnuODhOODouODiCzjg6jjgqbjgrnjgrENCivjg5/jgrrjgrDjg4Es44OI44Oi44K/44KrDQor44Of44Ok44Oi44OILOODnuODpuODnw0KK+ODn+ODpOODouODiCzjg6TjgrnjgrgNCivjg6Djg6njgqvjg58s44Kr44K644OS44OHDQor44Og44Op44Kr44OfLOODnuOCteODkuODrQ0KK+ODoOODqeODiuOCqyzjgrXjg4jjgrcNCivjg6Ljg4Hjgrrjgq0s44K/44Kv44OkDQor44Oi44OI44Kv44OpLOODiOODouOCsw0KK+ODouODqizjgq/jg4vjgqvjgroNCivjg6Ljg6rjg6Qs44Ob44Oe44OsDQor44Ok44K544KkLOOCv+OCpOOCsuODsw0KK+ODpOOCueODgCzjg5/jgq3jgrMNCivjg6Tjgrnjg4As44Kt44Oo44OS44OIDQor44Ok44K/LOOCq+OCuuODkuODrQ0KK+ODpOOCv+OCrSzjg47jg5bjgqoNCivjg6Tjg4Es44OV44Of44OS44KzDQor44Ok44OOLOODkuODreOCtw0KK+ODpOODnuOCpOOCuuODnyzjg6jjgrfjgqLjgq0NCivjg6Tjg57jgqrjgqss44Oe44K144KtDQor44Ok44Oe44Kw44OBLOODpOOCueODkuODrQ0KK+ODpOODnuOCsOODgSzjg6jjgrfjg47jg6oNCivjg6Tjg57jgrbjgq0s44Ki44Kt44KqDQor44Ok44Oe44K244KtLOODiuODig0KK+ODpOODnuOCt+OCvyzjg57jgqTjgrMNCivjg6Tjg57jg6Ljg4gs44Kx44OzDQor44Oo44Kz44K844KtLOOCv+OCpOODgQ0KK+ODqOOCt+ODgCzjg4rjgqrjg4gNCivjg6jjgrfjg44s44Ok44K544KqDQor44Oo44K344OfLOOCv+OCq+OCtw0KK+ODqOODgCzjgr/jgqvjg5Ljg60NCivjg6jjg4As44OS44Ot44Ki44KtDQor44Ot44K4LOODleODn+OCouOCrQ0KK+ODr+ODgCzjg57jg58NCivjg6/jgr/jg4rjg5ks44Om44Kt44KqDQor44Ov44K/44OK44OZLOODkuODh+OCrQ0KK+ODr+OCv+ODiuODmSzjgqvjgrrjgqoNCivjg6/jgr/jg5ks44K/44Kr44K3DQor44Kr44OO44KmLOOCv+OCq+ODiOOCtw0KK+ODi+ODg+OCvyzjgqrjgrXjg6ANCivjgqLjgqrjgq0s44K344Ol44KmDQor44Ki44Kq44KtLOODj+ODiuOCsw0KK+OCouOCquODpOODnizjg57jgrXjgqLjgq0NCivjgqLjgqrjg6Tjg54s44OM44KkDQor44Ki44Kt44OQLOOCseOCpOOCpOODgQ0KK+OCouOCteODgCzjg57jg6rjgrMNCivjgqLjg4Djg4Es44OI44Oi44OfDQor44Ki44OA44OBLOODpuOCpuOCsw0KK+OCouODiOODmSzjg4/jg6vjg4gNCivjgqLjg5ks44Kr44OE44OS44KzDQor44Ki44OZLOODjuODluOCqg0KK+OCouODmSzjg57jg6bjg58NCivjgqLjg57jg44s44Oe44KtDQor44Ki44Oe44OOLOOCuOODpeODs+OCpOODgeODrQ0KK+OCouODqeOCq+ODryzjg6rjg6fjgqbjgrnjgrENCivjgqLjg6rjgr8s44Oo44Km44OY44KkDQor44Ki44Oq44OI44OiLOODkuODreOCtw0KK+OCouODs+OCtuOCpCzjg5Ljg4fjgqLjgq0NCivjgqTjg4jjgqYs44Oo44Km44K4DQor44Ki44Oz44OJ44KmLOODquOCqOOCsw0KK+OCpOOCrOODqeOCtyzjg5/jgqrjgrMNCivjgqTjgrHjg4As44Kk44K644OfDQor44K/44Kr44OP44K3LOOCouODhOOCqg0KK+OCpOOCt+ODkOOCtyzjgr/jg4DjgrcNCivjgqTjgrfjg6Djg6ks44Om44Of44KzDQor44Kk44K344Oi44OILOODnuODquOCsw0KK+OCpOODgeOCpCzjgrHjgqTjgrMNCivjgqTjg4Hjgqvjg68s44OS44Ot44OIDQor44Kk44OB44Kr44OvLOODnuOCreOCsw0KK+OCpOODgeODjuOCuyzjgq3jg6jjgrcNCivjgqTjg4jjgqYs44Ki44Kt44OS44OtDQor44Kk44OI44KmLOODnuOCteODqw0KK+OCpOODiOOCpizjg6rjgrUNCivjgqTjg4rjgqrjgqss44Oe44K144OV44OfDQor44Kk44OK44OQLOODkuODreOCv+OCsQ0KK+OCpOODjOOCuuOCqyzjg57jg6bjg58NCivjgqTjg47jgqbjgqgs44OS44OH44Kq44OfDQor44Kk44OO44Kr44OvLOOCt+ODpeODs+OCueOCsQ0KK+OCpOODnuOCpCzjgr/jgrHjgrcNCivjgqTjg57jgrfjg6Xjgq8s44Oq44On44KmDQor44Kk44Ov44KkLOODiOODouODkuOCsw0KK+OCpOODr+OCt+ODnizjgrfjg6XjgqbjgqTjg4ENCivjgqbjgqjjgr7jg44s44Oh44Kw44OfDQor44Km44Ko44OALOOCv+OCq+ODkuODrQ0KK+OCpuOCqOODj+ODqSzjgr/jgqvjg6bjgq0NCivjgqbjgqjjg4/jg6ks44Oi44OI44KzDQor44Kr44Kt44K/LOOCseODsw0KK+OCpuOCteODnyzjg5Ljgrjjg6oNCivjgqbjg4Hjg4As44OS44Ot44KtDQor44Km44OB44OALOOCouODpOOCsw0KK+OCpuODgeODnOODqizjg5/jgrXjg4gNCivjgqbjg6HjgqzjgqQs44Kr44K644KoDQor44Km44Oh44OELOOCouOCreODkuOCsw0KK+OCpuODoeODjizjgr/jgrHjgrcNCivjgqbjg6njgqvjg68s44Om44KtDQor44Km44Op44OZLOOCt+OCsuODkuOCtQ0KK+OCqOOCsOODgSzjgr/jg4DjgrcNCivjgqjjgrrjg58s44Kk44Kv44OoDQor44Ko44OO44Oi44OILOOCv+ODreOCpg0KK+OCpOODnuODi+OCtyzjg5Ljg63jg6bjgq0NCivjgqjjg47jg6Ljg4gs44OV44Of44KzDQor44Ko44Oz44OJLOODqOOCt+OCrQ0KK+OCquOCpOOCq+ODryzjg57jgrXjgq0NCivjgqrjgqTjgqvjg68s44Om44Kt44OV44OfDQor44Kq44Kq44KkLOODqOOCpuOCuA0KK+OCquOCquOCpOOCtyzjg57jgrXjg4/jg6sNCivjgqrjgqrjgr8s44OV44Of44Kr44K6DQor44Kq44Kq44OE44KrLOOCt+ODs+OCueOCsQ0KK+OCquOCquODi+OCtyzjgqvjg4TjgqLjgq0NCivjgqrjgqrjg4vjgrcs44Of44OB44KoDQor44Kq44Kr44OALOODpOOCueOCqg0KK+OCquOCq+ODgCzjg57jgrXjg6sNCivjgqrjgqvjg44s44Om44KtDQor44Kq44Kr44OZLOODqOOCt+ODkuODrQ0KK+OCquOCq+ODmSzjg5Ljg4fjgqLjgq0NCivjgqrjgqvjg6Djg6ks44Oq44On44KmDQor44Kq44Kr44Oi44OILOODn+OCrQ0KK+OCquOCq+ODouODiCzjg5/jg6bjgq0NCivjgqrjgqzjg68s44K/44Ko44KzDQor44Kq44Ks44OvLOODiOOCquODqw0KK+OCquOCr+ODgCzjgrHjg7MNCivjgqrjgq/jg4As44OG44OE44OkDQor44Kq44K244KtLOODnuODn+OCsw0KK+OCquODjizjg4rjgqrjgrMNCivjgqrjgqrjg6Tjg54s44K/44Kr44K3DQor44Kr44Kk44K644KrLOODiOOCt+ODleODnw0KK+OCq+OCrOODnyzjgqjjg6rjgqsNCivjgqvjgq3jgr8s44Kr44Kq44OrDQor44Kr44KvLOOCs+OCpuOCuA0KK+OCq+OCteOCpCzjg6bjgq3jg47jg6oNCivjgqvjgrjjgqQs44Ki44Kr44ONDQor44Kr44K444K/LOODiuOCquODpA0KK+OCq+OCv+OCqCzjg6bjgqbjgrjjg7MNCivjgqvjgr/jg6Tjg54s44Of44OE44KzDQor44Kr44OELOODiOOCquODqw0KK+OCq+ODiOOCpizjgr/jgq8NCivjgqvjg4jjgqYs44OA44Kk44K544KxDQor44Kr44OfLOOCouODhOOCsw0KK+OCq+ODjeOCsyzjgq/jg4vjg5Ljg4gNCivjgqvjg57jg4As44Kr44K644OS44OtDQor44Kr44OfLOODqOOCt+ODhuODqw0KK+OCq+ODn+ODkuOCtSzjg6bjgqbjgrgNCivjgqvjg5/jg6Ljg4gs44Kr44Kq44OqDQor44Kr44Of44OkLOOCq+OCuuOCqg0KK+OCq+ODn+ODpOODnizjg57jgq0NCivjgqvjg6/jgqvjg58s44Oe44K544OfDQor44Kr44Ov44K144KtLOODkuODiOOCtw0KK+OCq+ODr+OCuyzjg5Ljg63jgqvjgroNCivjgqvjg6/jg4/jgr8s44K/44Kx44OB44KrDQor44Kr44Ov44OP44OpLOOCuOODpeODs+OCsw0KK+OCq+ODr+ODoOODqSzjgqvjgrrjg5Ljg60NCivjgqvjg6/jg6Ljg4gs44Kx44Kk44K544KxDQor44Kr44Ov44Oi44OILOODkuODreOCtw0KK+OCq+ODr+ODouODiCzjg5/jg4HjgqoNCivjgqvjg7Pjg4As44K/44Kx44K3DQor44Kt44Kv44OBLOOCqOODqg0KK+OCreOCv+OCrOODryzjg57jgrXjg5bjg58NCivjgq3jgr/jg4rjgqws44K144Kr44KoDQor44Kt44K/44OOLOOCt+ODs+OCtA0KK+OCreOCv+ODoOODqSzjgr/jg4Tjg6QNCivjgq3jgr/jg6Ljg4gs44OE44OI44OgDQor44Kt44OO44KoLOODkuODreOCtw0KK+OCreODluOCuyzjgr/jgqvjgqgNCivjgq3jg6Djg6ks44K444Ol44Oz44Kk44OBDQor44Kt44Og44OpLOODiOODouOCrQ0KK+OCreODouODiCzjg5Ljg4fjg6bjgq0NCivjgq3jg6Ljg4gs44Om44OqDQor44Ku44On44Km44OWLOODkuODreOCsw0KK+OCr+ODiyzjg5/jg5sNCivjgq/jg4vjg57jgrUs44Of44Ko44KzDQor44Kv44Oe44K144KrLOOCv+OCpOOCu+ODhA0KK+OCr+ODqeOCt+OCsizjgqLjgq3jgqoNCivjgq/jg6rjg4/jg6ks44K/44Kx44K3DQor44Kz44Kk44KxLOODoeOCsOODnw0KK+OCs+OCpOOCseODgCzjgr/jg4Tjg63jgqYNCivjgrPjgqTjgrrjg58s44OS44Ot44K3DQor44Kz44Kk44OM44OeLOODn+ODgeOCsw0KK+OCs+ODhOOCqyzjgqvjgrrjgqLjgq0NCivjgrPjgqws44K344Ky44KtDQor44Kz44K344Oi44OILOODkuODreODn+ODhA0KK+OCs+ODgOODnizjgr/jgqTjg4Hjg63jgqYNCivjgrPjg4Djg54s44Oe44K144Kr44K6DQor44K044OI44KmLOOCouODquODqOOCtw0KK+OCs+ODi+OCtyzjg4jjg6LjgrMNCivjgrPjg5Djg6Tjgrcs44Oo44K344K4DQor44Kz44OQ44Ok44K3LOODnuOCteOCrQ0KK+OCs+ODkOODpOOCtyzjg6Tjgrnjgr/jgqsNCivjgrPjg5Djg6Tjgrcs44OS44OH44OS44OIDQor44Kz44Oe44KtLOOCv+ODhOODpA0KK+OCs+ODnuODkCzjgqvjgrrjg47jg6oNCivjgrPjg5/jg6Qs44Kr44OE44OS44KzDQor44Kz44Ok44OeLOODnuOCteODjuODqg0KK+OCs+ODpOODnizjg6Tjgrnjg47jg6oNCivjgrXjgqTjgq0s44OI44Oi44OS44K1DQor44K144Kk44K044KmLOODn+ODr+OCsw0KK+OCteOCpOODiOOCpizjgrHjg7PjgrgNCivjgrXjgqTjg4jjgqYs44OG44OE44KqDQor44K144Kk44OI44KmLOOCpOOCteODoA0KK+OCpOOCrOODqeOCtyzjgrfjg6fjgqbjgrQNCivjgrXjgqjjgrDjgrUs44OK44OfDQor44K144Kr44KkLOOCouOCreODqQ0KK+OCteOCq+OCrOODnyzjgqTjg4Hjg63jgqYNCivjgrXjgqvjg40s44OA44Kk44KtDQor44K144Kr44Oi44OILOODiOODouODjuODqg0KK+OCteOCq+ODouODiCzjg57jgrPjg4gNCivjgrXjgq/jg6njgqQs44OS44Ot44OfDQor44K144Kv44Op44OALOODquODp+OCpuOCuA0KK+OCteOCs+ODsyzjg57jgrXjg5Ljg60NCivjgrXjgrXjgq0s44OK44OK44KoDQor44K144K144OP44OpLOODr+OCq+OCsw0KK+OCteODiOOCpizjgrLjg7MNCivjgrXjg4jjgqYs44K444Ol44Oz44Kk44OBDQor44K144OI44KmLOOCseODs+OCtA0KK+OCteODiOOCpizjg4rjgqrjg4gNCivjgrXjg44s44OS44OH44Ki44KtDQor44K144OvLOOCseODs+OCtA0KK+OCt+ODluODpCzjgr/jg4DjgrcNCivjgrfjg5bjg6Qs44OS44OH44KqDQor44K344Oe44OALOODnuODiuOCqA0KK+OCt+ODnuODgCzjg5Ljg4fjgr/jgrENCivjgrfjg57jg4As44Ok44Oo44KkDQor44K344Of44K6LOODpuOCreOCqg0KK+OCt+ODn+OCuizjg4DjgqTjgrnjgrENCivjgrfjg5/jgros44OS44OH44KtDQor44K344Of44K6LOOCouOCreODjg0KK+OCt+ODn+OCuizjg4rjgqrjg6bjgq0NCivjgqTjg47jgqbjgqgs44Kx44Kk44K544KxDQor44K344OiLOOCteODiOOCtw0KK+OCt+ODp+OCpuODgCzjgrfjgrLjg47jg6oNCivjgrjjg7Pjg44s44Oe44Kz44OIDQor44K444Oz44OOLOODquODpeOCpuOCuA0KK+OCt+ODs+ODnuODgSzjgr/jgrHjgrcNCivjgrnjgq7jgqQs44Oe44K144OK44KqDQor44K544Ku44Kq44KrLOOCv+OCq+ODkuOCsw0KK+OCueOCruODouODiCzjg5/jg4Hjg47jg6oNCivjgrnjgrrjgq0s44Kr44K644OS44OpDQor44K544K644KtLOODgOOCpOOCueOCsQ0KK+OCueOCuuOCrSzjgqvjgrrjg5Ljg60NCivjgrnjgrrjgq0s44OS44Ot44K344KyDQor44K544K644KtLOODpuOCpuOCpOODgeODreOCpg0KK+OCu+OCqizjg47jg6rjgrMNCivjgrvjgq0s44K944KmDQor44Kk44K344OP44OeLOOCseODs+ODiA0KK+OCveODjuODgCzjgrPjgqbjgr/jg63jgqYNCivjgr/jgqQs44Oo44K344Ki44KtDQor44K/44Kr44Kk44OvLOOCreODqOOCtw0KK+OCv+OCq+OCrizjg6bjgqbjgrgNCivjgr/jgqvjg4/jgrcs44Oe44Kt44KzDQor44K/44Kr44OP44K3LOODjuODluODpuOCrQ0KK+OCv+OCq+ODj+OCtyzjg57jgq3jgrMNCivjgr/jgqvjg4/jgrcs44K/44Kx44K3DQor44K/44Kr44OP44K3LOOCouOCreODkuOCsw0KK+OCv+OCq+ODoOOCryzjgrHjg7PjgrcNCivjgr/jgrDjg4Es44OS44Ot44KzDQor44K/44Kx44Km44OBLOODqOOCt+OCsw0KK+OCv+OCseOCq+ODryzjg57jgrXjgrcNCivjgr/jgrHjg68s44K344Oz44K4DQor44K/44OA44Oe44OELOODkuODh+OCrQ0KK+OCv+OCv+ODqSzjgrPjgqbjgrgNCivjgr/jg4rjgqss44K/44Kr44K3DQor44K/44OL44Oi44OILOODpuOCpuOCuA0KK+OCv+ODjeODoOODqSzjgqLjgq3jg5Xjg58NCivjgr/jg4/jg6ks44K144OI44K3DQor44K/44Og44OpLOODkuODreOCtw0KK+ODgOODsyzjgr/jgqvjg6bjgq0NCivjgqTjgqTjg4As44Og44ON44OO44OqDQor44OB44OQLOOCqOOCpOOCueOCsQ0KK+ODgeODp+OCpuODiOOCryzjg5Ljg4fjg6bjgq0NCivjg4Tjgqvjg4/jg6ks44OS44Ot44Om44KtDQor44OE44OE44OfLOODnuOCs+ODiA0KK+ODhOODouODqizjg57jg6rjgrMNCivjg4bjg6njgrfjgr8s44Om44Km44Kk44OB44Ot44KmDQor44OJ44KkLOODpuOCv+OCqw0KK+ODieOCpCzjg6jjgrfjgqgNCivjg4njgqQs44Oo44Km44Kk44OBDQor44OI44K344OeLOOCs+OCpuODmOOCpA0KK+ODiuOCpOODiOOCpizjgrPjgqbjgrgNCivjg4rjgqvjgqQs44Oe44K144OS44OtDQor44OK44Kr44KkLOOCt+ODpeOCpuODmOOCpA0KK+ODiuOCq+OCqizjgq3jg5vjgrMNCivjg4rjgqvjgqzjg68s44OB44Ki44KtDQor44OK44Ks44K144KtLOOCq+OCquODqg0KK+ODiuOCq+OCuOODnizjgr/jgqvjg5Xjg58NCivjg4rjgqvjgrjjg54s44OO44K+44OgDQor44OK44Kr44K344OeLOOCteODiuOCqA0KK+ODiuOCq+ODgCzjgq3jg6jjgrMNCivjg4rjgqvjg4/jg6ks44Of44OK44KzDQor44OK44Kr44Og44OpLOOCuOODpeODs+OCvuOCpg0KK+ODiuOCq+ODoOODqSzjgrfjg6Xjgqbjgr/jg63jgqYNCivjg4rjgqvjg6Djg6ks44Om44OqDQor44OK44Kr44Og44OpLOOCveOCpuOCpOODgeODreOCpg0KK+ODiuOCq+ODoOODqSzjg5/jg4Tjg5Ljg60NCivjg4rjgqvjg6Djg6ks44Kr44OE44OS44KzDQor44OK44Kr44Og44OpLOODkuODh+ODpA0KK+ODm+OCt+ODjizjg4jjgrfjg4/jg6sNCivjg4rjgqvjg6Ljg4gs44Ki44Kt44KzDQor44Kk44Kx44OALOODnuOCteOCv+OCqw0KK+ODiuOCq+ODouODqizjg4jjgqrjg6sNCivjg4rjgqzjg6jjgrcs44K/44Kr44Oe44K1DQor44OK44OH44OP44OpLOODkuODreOCtw0KK+ODiuODiuODouODqizjg4Tjg4jjg6ANCivjg4rjg6njgrXjgqss44OS44Ot44K3DQor44OK44Oz44OQLOODpuOCrQ0KK+ODi+OCtyzjg4Tjg43jgqLjgq0NCivjg4vjgrfjgqvjg68s44OS44OH44Ki44KtDQor44OL44K344OALOOCseODs+OCtw0KK+ODi+OCt+ODoOODqSzjg6bjgq0NCivjg47jgrDjg4Es44K144OI44K3DQor44OO44OALOOCseODs+OCpOODgQ0KK+ODjuODiuODnyzjgrnjgrDjg6sNCivjg47jg47jgqTjg4Hjg6Qs44Oe44K544KqDQor44OO44Og44OpLOODiOODouODkuOCsw0KK+ODjuODouODiCzjg6bjgqbjgqTjg4ENCivjg4/jgqzjg6Qs44OK44Kq44Om44KtDQor44OP44Ku44Ov44OpLOODpOOCueODpuOCrQ0KK+ODj+OCryzjg4jjg6Ljg5Ljg4gNCivjg4/jgrcs44K/44Kr44K3DQor44OP44K344K644OhLOODpuOCpuOCsw0KK+ODj+OCt+ODkCzjg57jgrPjg4gNCivjg4/jgrvjg5ks44K/44Kr44Oe44K1DQor44OP44K/LOODnuOCteODn+ODgQ0KK+ODj+OCv+OCqCzjg5/jgq3jg4gNCivjg4/jgr/jg44s44Ki44Kt44Oo44K3DQor44OP44OB44OOLOOCueOCueODoA0KK+ODj+ODg+ODiOODqizjg6bjgqYNCivjg4/jg6Tjgrcs44Os44Kk44KzDQor44OP44Ok44K344OALOOCouOCreODqQ0KK+ODj+ODpOODleODjSzjg6jjgrfjgqLjgq0NCivjg4/jg6ks44K/44OE44K4DQor44OP44Op44OALOOCr+ODn+OCsw0KK+ODj+ODqeODgCzjg57jgrXjgrMNCivjgqTjg47jgrDjg4Es44Kr44OE44OV44OfDQor44OP44Op44OALOOCv+OCq+ODpuOCrQ0KK+ODkuOCrOOCt+ODpOODnizjg6jjgqbjgrMNCivjg5LjgrDjg4Es44OS44OH44KtDQor44OS44K0LOODkuODreOCtw0KK+ODkuODgOODjizjg4jjg6Ljg6QNCivjg5Ljg57jgq0s44OI44Oi44OO44OqDQor44Kv44Op44K344KyLOOCq+OCuuODpuOCrQ0KK+OCpOOCt+ODj+ODqSzjg6zjgqTjgrMNCivjg5Ljg6njgr8s44K344Ky44KqDQor44OS44Ot44K144OvLOODpuOCreOCsw0KK+ODkuODreOCvyzjgrHjgqTjgrMNCivjg5XjgqvjgrXjg68s44Of44Kt44KzDQor44OV44Kr44K244OvLOODquOCqA0KK+ODleOCq+OCtuODryzjgr/jgqvjgrcNCivjg5Xjgq/jg6Djg60s44Oe44K144OI44OiDQor44OV44K444KkLOODhuODhOODpA0KK+OCpOODiOOCpizjgrHjgqTjgrMNCivjg5XjgrjjgqQs44Of44Kq44KzDQor44OV44K444OK44KsLOOCseOCpOOCuA0KK+ODleOCuOODiuOCrCzjg5Xjg5/jgrMNCivjg5Xjgrjjg6/jg6ks44OO44Oq44OS44OtDQor44OV44K444Ov44OpLOODquOCqA0KK+ODleOCuOODr+ODqSzjg4rjgqrjg6bjgq0NCivjg5Xjgr/jg4Tjgq4s44OE44Oo44K3DQor44OV44K/44OE44Oi44OqLOOCt+OCuuOCqw0KK+ODleODq+ODj+OCvyzjg47jg5bjgqLjgq0NCivjg5Xjg6vjg6Qs44Oe44Oq44KzDQor44OY44Oz44OfLOODnuOCteODqw0KK+ODm+OCtyzjg57jgqTjgrMNCivjg5vjgrfjg44s44Kr44OE44Ki44KtDQor44Ob44OqLOOCreODn+ODkuODrQ0KK+ODm+ODquOCqCzjgrfjg7PjgrgNCivjg5vjg6rjgqrjgqss44Ki44OE44KzDQor44Ob44Oq44Kr44OvLOODiOODouODkuODrQ0KK+ODnuOCqOODleODjSzjg4rjg5/jgrMNCivjg57jgq3jg44s44Ok44K544OO44OqDQor44Oe44K544OALOOCquOCr+ODiA0KK+ODnuODhOOCpuODqSzjgr/jgrHjgrcNCivjg57jg4Tjgrfjgr8s44Ki44Kt44K3DQor44Oe44OE44Oi44OILOODkuODh+OCv+OCqw0KK+OCpOOCsOODgSzjgr/jgqvjg5Ljg60NCivjg57jg4Tjg6Tjg54s44Oe44K144OS44OtDQor44Oe44OK44OZLOODgeODjg0KK+ODnuODq+ODpOODnizjg4rjgqrjg6bjgq0NCivjg5/jgqbjg6ks44Of44OB44OrDQor44Of44KtLOOCv+OCq+ODpuOCrQ0KK+ODn+ODhOODj+OCtyzjgqjjgqTjgqTjg4ENCivjg5/jg4Tjg5ks44Oe44K144OIDQor44Of44OI44OZLOODkuOCteODpA0KK+ODgeODp+OCpuODiOOCryzjgr/jg57jgq0NCivjgqTjgrHjg5Xjgrgs44OO44OW44Oo44K3DQor44Of44Ok44K244KtLOODnuOCteODj+ODqw0KK+ODn+ODpOOCtuOCrSzjgqLjgq3jg6kNCivjg5/jg6Tjgrfjgr8s44Oo44Km44KzDQor44Of44Ok44K/LOOCv+OCq+OCtw0KK+ODoOOCs+OCpuODpOODnizjg5/jg4Hjg5Ljg4cNCivjg6Djg6njgqQs44Of44ObDQor44Og44Op44Kr44OfLOODnuODnw0KK+ODoOODqeOCq+ODnyzjg5/jg4TjgqLjgq0NCivjg6Djg6njgr8s44OI44Oi44Om44KtDQor44Og44Op44Oe44OELOODnuOCteODpuOCrQ0KK+ODouODiOOCrSzjgrjjg6Xjg7Pjgr8NCivjg6Ljg4jjg6jjgrcs44K744Kk44Kk44OBDQor44Oi44Of44Ok44OeLOOCqOOCpOOCuA0KK+ODouODqizjgr/jgqvjgrcNCivjg6Ljg6os44K/44Kx44OkDQor44Oi44Oq44Km44KoLOODqOOCt+OCv+OCqw0KK+OCpOODjuOCpuOCqCzjgqLjgq3jg47jg6oNCivjg6Ljg6rjgqbjg4Es44K344Oz44K/44Ot44KmDQor44Oi44Oq44K/LOODpuOCpuOCrQ0KK+ODpOOCruOCteODryzjgqvjgrrjg58NCivjg6Tjgrfjg54s44Kz44Km44K4DQor44Ok44K544OALOODleODn+ODkuOCsw0KK+ODpOODjizjg5/jgq0NCivjg6Tjg44s44K/44OA44K/44KrDQor44Ok44Oe44Kw44OBLOOCuOODpeODsw0KK+ODpOODnuOCteOCrSzjg5Xjg5/jg5LjgrMNCivjg6Tjg57jgrbjgq0s44OO44OW44OS44KzDQor44Ok44Oe44K344K/LOOCseOCpOOCuA0KK+ODpOODnuOCt+OCvyzjgqLjg4TjgrcNCivjg6Tjg57jg4As44K/44OE44KqDQor44Ok44Oe44OKLOOCq+ODig0KK+ODpOODnuODn+ODgSzjgrHjgqTjgrnjgrENCivjgqTjg4rjgqss44Ky44Oz44K/DQor44Ok44Oe44Oi44OILOOCs+OCpuOCuA0KK+ODpOODnuODouODiCzjgr/jgq/jg6QNCivjg6Tjg57jg6Ljg4gs44OS44OH44KqDQor44Ok44Oe44Oi44OILOODoOODjeOCv+OCqw0KK+ODpuODkCzjg6bjgr/jgqsNCivjg6jjgrPjgr/jg4ss44Oe44Kz44OIDQor44Oo44Kz44Ok44OeLOODqOOCt+OCqg0KK+ODqOOCt+ODgCzjgqvjgrrjg5Ljg60NCivjg6jjgrfjg4As44OI44K344Kr44K6DQor44Kk44Ov44K144KtLOODiOOCt+OCq+OCug0KK+ODqOOCt+ODgCzjg6rjg6fjgqYNCivjg6jjg4As44Ko44OfDQor44Ov44Kr44Oe44OELOODn+ODgeOCqA0KK+ODr+OCtSzjg6rjg6fjgqbjgrMNCivjg6/jg4As44Kr44Kq44OrDQor44Ov44K/44OK44OZLOOCseOCpOOCvuOCpg0KK+OCpOODr+OCr+ODqSzjgqjjgqTjgqTjg4ENCivjg6/jgr/jg4rjg5ks44OS44OH44Om44KtDQor44Ov44K/44OK44OZLOOCq+OCuuODn+ODjQ0KK+ODr+OCv+ODiuODmSzjgrfjg6fjgqbjgr/jg63jgqYNCivjg6/jgr/jg4rjg5ks44Om44KtDQor44Ov44K/44OK44OZLOOCt+OCsuODqw0KK+ODr+OCv+ODiuODmSzjg5Ljg63jg6bjgq0NCivjg6/jgr/jg4rjg5ks44Kt44Oo44Kr44K6DQor44Ov44K/44OK44OZLOODiOOCt+OCqA0KK+OCquOCquOCpCzjg47jg5bjg5Ljg60NCivjgqTjgqTjg4As44Om44Kt44KzDQor44Og44Kr44KkLOOCv+OCq+OCtw0KK+ODleODn+ODj+ODqSzjgqvjgqrjg6oNCivjgqvjg6/jgrTjgqgs44Oe44K144OP44OrDQor44Kv44Ot44Kr44OvLOODkuODreODnw0KK+OCs+OCpuODgCzjgrXjg4jjg6sNCivjg5Xjgrjjgr8s44Om44Km44KzDQor44Kz44OQ44Ok44K3LOOCv+OCseOCtw0KK+ODj+ODnuODoOODqSzjgqvjg6gNCivjgqTjg6/jgrss44Ok44K544OS44OtDQor44K/44Kx44OALOODnuOCteODqw0KK+OCquOCrOODryzjg5Ljg63jgqLjgq0NCivjg5/jgrrjgr8s44K144OI44OrDQor44Kk44Kk44OALOOCouODhOOCtw0KK+OCouOCpOODj+ODqSzjg6TjgrnjgrMNCivjgqLjgqrjgqYs44OI44K344KtDQor44Ki44Kq44KtLOOCt+ODs+OCs+OCpg0KK+OCouOCquODkCzjg5Ljg63jg6jjgrcNCivjgqLjgq3jg6Ljg4gs44K544K544OgDQor44Ki44K144KkLOODpuOCpuOCsw0KK+OCpOOCt+ODpOODnizjgrfjg6Xjg7PjgrnjgrENCivjgqLjgrXjgqos44Ko44Of44KzDQor44Ki44K144OALOODiOOCt+OCrQ0KK+OCouOCteODgCzjgrHjg7Pjgr/jg63jgqYNCivjgqLjgrXjg44s44OV44K444KqDQor44Ki44K144OOLOODiOODouODkuOCsw0KK+OCouOCtuODnyzjg4jjgrfjg6bjgq0NCivjgqLjgrnjg54s44K344Ol44Km44OY44KkDQor44Ki44K944KmLOODpuOCqw0KK+OCouODgOODgSzjgq3jg6fjgqbjgqTjg4ENCivjgqLjg4jjg58s44OO44Oq44OS44OtDQor44Ki44OK44OfLOODpOOCueODkuOCtQ0KK+OCouODmSzjg57jgrXjgqrjg58NCivjgqLjg5ks44Oe44Kz44OIDQor44Ki44OZLOODnuOCs+ODiA0KK+OCouODnuODjizjg57jgrXjg4jjgrcNCivjgqLjg6Tjg5ks44K/44Ot44KmDQor44K/44Kx44Kt44K/LOODnuODiuODlg0KK+OCouODqeOCpCzjg57jgq0NCivjgqTjg4Tjg44s44Of44Kt44KqDQor44Ki44Oq44Kr44OvLOODqOOCt+ODjuODlg0KK+OCouODquOCvyzjgrPjgqbjgqTjg4ENCivjgqLjg7Pjgrjjg6Us44OE44Oo44K3DQor44Ki44Oz44OJ44KmLOODnuOCteOCrQ0KK+OCouODs+ODieOCpizjg6rjg6Xjgqbjgr8NCivjgqTjg4Hjg47jgrss44Kz44K644KoDQor44Kk44Kk44OM44OeLOODkuODreODpuOCrQ0KK+OCpOOCpuOCqCzjg6jjgrfjgqLjgq0NCivjgqTjgqzjg6njgrcs44Ki44Kt44KzDQor44Kk44Kx44Km44OBLOOCquODquOCqw0KK+OCpOOCseOCrOODnyzjg5/jg47jg6sNCivjgqTjgrHjg4As44K/44Kx44K3DQor44Kk44Oq44K/LOODpOOCueOCouOCrQ0KK+OCpOOCseODgCzjgrfjg6XjgqbjgqTjg4ENCivjgqTjgrHjg4As44K344On44Km44Kk44OBDQor44Kk44Kx44OALOOCuOODreOCpg0KK+OCpOOCt+OCpCzjgrjjg6Xjg7PjgqTjg4ENCivjgqTjgrfjgqQs44OI44Oi44KzDQor44Kk44K344KkLOODiuOCquODnw0KK+OCpOOCt+OCquOCqyzjgrfjg7PjgqTjg4ENCivjgqTjg57jgqQs44K/44Kx44K3DQor44Kk44K344Kr44OvLOODquODp+OCpuODmOOCpA0KK+OCpOOCt+OCq+ODryzjg4jjg6Ljg47jg5YNCivjgqTjgrfjgrDjg60s44Om44Kt44OS44OtDQor44Kk44K344OALOOCv+ODhOODpuOCrQ0KK+OCpOOCu+OCrSzjgr/jgrHjgrcNCivjgqTjg4Hjgq0s44Oe44K144OIDQor44Kk44OB44OO44K7LOODiOODouODkuODrQ0KK+OCpOODgeODjuODn+ODpCzjg5Xjg5/jgr/jgrENCivjgqTjg4jjgqYs44K344Oz44Kk44OBDQor44Kk44OI44KmLOODjuODquOCsw0KK+OCpOODiuODgCzjg6jjgrfjgr/jgqsNCivjgqTjg4rjg5As44K744Kk44Kk44OB44Ot44KmDQor44Kk44OP44OpLOOCreODqOOCv+OCqw0KK+OCpOODjuOCpuOCqCzjgqrjgrXjg6ANCivjgqTjg47jgqbjgqgs44OO44Oq44KzDQor44Kk44OO44Km44KoLOODiOODouODpuOCrQ0KK+OCpOODnuOCpOOCuuODnyzjgqLjg4TjgrcNCivjgqTjg54s44K144OI44KzDQor44Kk44Oe44OALOODn+OCqg0KK+OCpOODnuOCuizjg4Tjg6jjgrcNCivjgqTjg57jg6Djg6ks44Of44OE44OI44K3DQor44Kk44Oq44K/44OLLOOCv+OCr+OCuA0KK+OCpOODr+OCrSzjgr/jg4Tjg6QNCivjgqTjg6/jgrXjgq0s44Oe44OqDQor44Kk44Ov44K144KtLOODnuODig0KK+OCpOODr+OCueOCrizjg5/jgqsNCivjgqTjg6/jg4/jgrcs44Kk44OB44Ot44KmDQor44Kk44Ov44OW44OBLOODiuODmw0KK+OCpOODr+ODm+ODqizjgqLjgq3jg5LjgrMNCivjgqbjgqjjg4As44OO44OW44KoDQor44Km44Ko44Oe44OELOOCv+OCq+OCtw0KK+OCpuOCueOCpCzjg4jjg6LjgqTjg4ENCivjgqbjgrnjgqQs44Oe44K144OS44OtDQor44Km44OB44OALOOCq+OCquODqg0KK+OCpuODhOODnyzjg57jgq3jgrMNCivjgqbjg6Hjg4As44OS44OH44OO44OWDQor44Km44Op44OOLOODpOOCueODkuODrQ0KK+OCqOOCrOODryzjgr/jgrHjgrcNCivjgqjjgrbjgq0s44Ki44OE44KzDQor44Ko44OI44KmLOOCseODs+OCuA0KK+OCqOODjuODouODiCzjg4/jg6vjg5Ljg6kNCivjgqjjg47jg6Ljg4gs44Ki44Kt44OpDQor44Ko44OeLOOCouOCreOCsw0KK+OCqOODs+ODiSzjg5LjgrXjg47jg6oNCivjgqjjg7Pjg4ks44Oo44K344Oe44K1DQor44Kq44Kk44K/44OLLOODpuOCrQ0KK+OCquOCpizjg6jjgrfjg5Ljg60NCivjgqrjgqrjgqQs44Kr44Kq44OrDQor44Kq44Kq44KoLOOCouOCreODkuODrQ0KK+OCquOCrSzjgqLjg6QNCivjgqrjgqrjgq/jg5ws44OV44Of44OO44OqDQor44Kq44Kq44K144OvLOOCpOOCteOCqg0KK+OCquOCquOCteODryzjg5LjgrXjgrcNCivjgqTjg6/jgq3jg6os44Ov44K/44OrDQor44Kq44Kq44K544OfLOODouODiOODkuOCsw0KK+OCquOCquOCvyzjg5/jg4Tjg5Ljg60NCivjgqrjgqrjgr8s44K/44Kr44K3DQor44Kq44Kq44OE44KrLOOCouOCreODjuODqg0KK+OCquOCquODhOOCqyzjgrPjgqbjgqTjg4ENCivjgqrjgqrjg4Tjgqss44OI44Oi44OS44OtDQor44Kq44Kq44OE44KtLOOCuOODpeODsw0KK+OCquODiuOCqyzjg4DjgqTjgrnjgrENCivjgqrjgqrjg4vjgrcs44Oo44Km44KzDQor44Kq44Kq44OcLOODnuOCteOCsw0KK+OCquODnizjgq3jg6jjgrcNCivjgqrjg6Djg6ks44K344OO44OWDQor44Kq44Og44OpLOOCr+ODnw0KK+OCpOOCt+OCpCzjg4rjgqrjgrMNCivjgqrjgqrjg6Ljg6os44Oo44K344OS44OtDQor44Kq44Kq44Oi44OqLOODkuODreOCq+OCug0KK+OCquOCquODouODqizjg47jg5bjg5LjgrUNCivjgqrjgqrjg6/jg4As44K/44Kr44OV44OfDQor44Kq44Kr44KkLOODrOOCpA0KK+OCquOCq+OCtuOCrSzjg4jjg6Ljg5/jg4ENCivjgqrjgqvjgrbjgq0s44Kr44K644OS44OIDQor44Kk44Kx44OALOOCouOCreOCqg0KK+OCquOCq+ODjizjgqjjgqTjgqTjg4ENCivjgqrjgqvjg5ks44Km44Op44OpDQor44Kq44Kr44Oi44OILOOCqOODhOOCsw0KK+OCquOCrOODryzjg6bjgqbjgrMNCivjgqrjgqzjg68s44Ki44Kt44OpDQor44Kq44Ks44OvLOODquODp+OCpuOCpOODgQ0KK+OCquOCrOODryzjgq3jg6jjg44NCivjgqrjgqrjgqzjg6/jg6ks44Kv44OL44OP44OrDQor44Kq44Kv44OP44OpLOOCteODiOOCtw0KK+OCquOCr+ODpOODnizjg57jgrMNCivjgqrjgrDjg6ks44Ok44K544OP44OrDQor44Kt44K/44Og44OpLOODnuODquOCsw0KK+OCquOCtuODryzjgrfjgrLjg5/jg4QNCivjgqrjg4Es44Oi44OI44OS44OtDQor44Kq44OOLOOCv+OCq+OCtw0KK+OCquOCquODjizjg4HjgqsNCivjgqrjg47jg4fjg6ks44Kx44Oz44K3DQor44Kq44OQ44K/LOOCq+ODhOODqOOCtw0KK+OCquOCquODpOODnizjg4Hjgrrjg6sNCivjgqrjg7Pjgr8s44Oh44Kw44OfDQor44Kk44Ov44K/LOOCv+OCseOCtw0KK+OCq+OCpOODluOCrSzjg6bjg58NCivjgqvjgq3jg6Ljg4gs44Oe44OB44KzDQor44Kr44K244Kw44OBLOODnuOCteODjuODqg0KK+OCq+OCteOCtuOCrSzjg6jjgrfjg5Ljg60NCivjgqvjgrgs44K144Kq44OqDQor44Kr44K444Og44OpLOODj+ODq+ODig0KK+OCq+OCt+ODr+OCpCzjg47jg6rjgrMNCivjgqvjgrfjg6/jg5Djg6ks44OK44Kq44OkDQor44Kr44K/44Kv44OpLOODqOOCt+ODpuOCrQ0KK+OCq+OCv+ODpOODnizjg57jgqTjgrMNCivjgqvjg4Tjg44s44K/44Kr44OO44OqDQor44Kr44OJLOODgeOCqOOCsw0KK+OCq+ODiOOCpizjg47jg5bjg6bjgq0NCivjgqTjgr3jg44s44Of44OJ44OqDQor44Kr44OI44KmLOOCv+OCq+OCtw0KK+OCq+ODiOOCpizjgrfjg5sNCivjgqvjg4jjgqYs44Ki44Kt44Oo44K3DQor44Kr44OI44OqLOOCseODs+OCuA0KK+OCq+ODiuOCteOCqyzjg6Ljg4jjg5Ljg60NCivjgqvjg4rjgrbjg68s44Of44OB44KzDQor44Kr44OK44Ok44OeLOOCq+ODiuOCsw0KK+OCq+ODjeOCsyzjg6bjgq3jgqoNCivjgqvjg43jgrMs44OI44Oi44KzDQor44Kr44ON44OALOODouODiOOCrQ0KK+OCrOODnyzjg5Ljg63jgrcNCivjgqvjg6Hjgqrjgqss44Oe44OK44OfDQor44Kr44Op44K144OvLOOCouOCreODhuODqw0KK+OCq+ODqeOCt+ODnizjgq3jg6jjg5Xjg58NCivjgqvjg6vjgqTjgrcs44Kk44K644OfDQor44Kr44Ov44KkLOODiuOCquODpuOCrQ0KK+OCq+ODr+OCpCzjgr/jgqvjgqrjg58NCivjgqvjg6/jgqvjg58s44Oe44K144OfDQor44Kr44Ov44Kr44OfLOOCseODs+OCvw0KK+OCq+ODr+OCuizjgqLjg4TjgrcNCivjgqvjg6/jg4rjgqss44Ko44Kk44K544KxDQor44Kr44Ov44OOLOOCv+OCq+OCtw0KK+OCq+ODr+ODkOOCvyzjg4rjgqrjg6QNCivjgqvjg6/jg5ks44K344ObDQor44Kr44Ov44OfLOOCt+ODs+OCuA0KK+OCq+ODs+ODkOOCtyzjg5/jg4HjgrMNCivjgqvjg7Pjg5Djg6ks44Ki44OE44K3DQor44Kt44K344KkLOODpOOCueOCqA0KK+OCreOCt+ODgCzjgqLjgq3jg5Ljg60NCivjgq3jgr/jgqzjg68s44Oe44K144KtDQor44Kt44K/44K344OtLOOCq+OCuuODqOOCtw0KK+OCreOCv+ODj+ODqSzjg6jjgrfjgqvjgroNCivjgq3jgr/jg6Djg6ks44Oo44Km44Kk44OBDQor44Kt44OJLOODgeOCqOOCsw0KK+OCreODjuOCt+OCvyzjg6/jgqvjgrMNCivjgqjjg4As44Ko44KkDQor44Kt44Og44OpLOODiuODhOOCsw0KK+OCreODoOODqSzjgrfjgrLjg6sNCivjgq3jg6Djg6ks44Ki44OE44K3DQor44Kt44Oo44OK44KsLOODjuODquODn+ODhA0KK+OCreODqOODn+ODpCzjgr/jgqvjgqoNCivjgq3jg6rjg6Qs44Oe44K144KtDQor44Kk44OI44KmLOODiOODouODpA0KK+OCr+OCt+ODgCzjgq3jg6fjgqbjgrMNCivjgq/jgrjjg6njgqrjgqss44OA44Kk44KtDQor44Kv44OL44Oi44OILOOCv+OCseODiOOCtw0KK+OCr+ODjOOCrizjg4jjgqrjg6sNCivjgq/jg5ws44Ki44OE44K3DQor44Kv44Oc44K144OvLOODnuOCteOCrQ0KK+OCr+ODnOOCvyzjgr/jgqvjg5Ljg60NCivjgq/jg6Hjg44s44OO44OW44KqDQor44Kk44K344Kw44OtLOOCv+ODreOCpg0KK+OCr+ODqSzjg4jjg6LjgqLjgq0NCivjgq/jg6njgrXjg68s44OV44Of44OP44OrDQor44Kv44Op44K/LOODquODp+OCpuOCsw0KK+OCr+ODreOCq+ODryzjgr/jgqvjg5LjgrUNCivjgq/jg63jgrks44Oe44Of44KzDQor44Kv44Ot44Ok44OK44KuLOOCteODs+OCt+ODreOCpg0KK+OCpOODiuODiOODnyzjg4DjgqTjgrnjgrENCivjgrPjgqTjgrEs44Oe44Om44KzDQor44Kz44Kk44KxLOODr+OCv+ODqw0KK+OCs+OCpOOCt+OCq+ODryzjg5Ljg4fjg6bjgq0NCivjgrPjgqTjgrrjg58s44OG44Or44OfDQor44Kz44Kk44K644OfLOODjuODquODnuOCtQ0KK+OCs+OCpOODhyzjg57jg4njgqsNCivjgrPjgrrjg54s44Oe44Kk44KzDQor44Kz44Oz44OOLOOCouODhOOCsw0KK+OCs+ODpOODnizjg4DjgqTjgq0NCivjgrPjg6os44K/44Kr44OS44OHDQor44Kr44OE44Kr44OvLOOCu+OCpOOCpOODgeODreOCpg0KK+OCs+OCrOODjizjgqLjgq3jg5Xjg58NCivjgrPjgrfjgqQs44OI44Oi44OS44OtDQor44Kz44K344Oe44OrLOODgOOCpOODiOOCrw0KK+OCs+OCueOCrizjg57jgrXjgrcNCivjgrPjgrvjgq0s44Oe44OK44OWDQor44Kz44K/44OLLOODpOOCpOODgQ0KK+OCs+ODgOODnizjgrvjg7PjgrgNCivjgrPjg4vjgrcs44K/44Of44KzDQor44Kz44OL44K3LOOCv+ODgOOCtw0KK+OCs+ODkCzjg4jjg6Ljgq0NCivjgrPjg5Djgr/jgrEs44Kx44Kk44Kk44OBDQor44Kz44OQ44Ok44K3LOOCouOCreOCsw0KK+OCs+ODkOODpOOCtyzjg6Tjgrnjg6bjgq0NCivjgrPjg5Djg6Tjgrcs44Oo44Km44K4DQor44Kz44OQ44Ok44K3LOODnuOCteODpA0KK+OCs+ODkOODpOOCtyzjg6jjgrfjgqoNCivjg4rjgqvjg6Djg6ks44Oo44Km44OY44KkDQor44Kz44OQ44Ok44K3LOODkuODreOCsw0KK+OCs+ODnOODqizjgq/jg4vjg5LjgrMNCivjgrPjg57jg4Qs44OE44Oo44K3DQor44Kz44Ok44OeLOODhOOCruOCqg0KK+OCs+ODs+ODjizjgr/jgqvjgrMNCivjgrXjgqTjg4jjgqYs44OI44Oi44KoDQor44K144Kk44OI44KmLOOCouODhOOCsw0KK+OCteOCpOODiOOCpizjg5Ljg63jg6bjgq0NCivjgrXjgqTjg4jjgqYs44OS44Ot44Om44KtDQor44Kk44OI44KmLOODleOCreOCsw0KK+OCteOCq+OCpCzjg4Hjg5Ljg60NCivjgrXjgqvjgqQs44Kt44Oo44K3DQor44K144Kr44KkLOODn+ODjeOCqg0KK+OCteOCq+OCreODkOODqSzjg4jjgrfjgq0NCivjgrXjgqvjgrDjg4Es44Kk44OB44Ot44KmDQor44Kk44Ov44K144KtLOODrOOCpOOCsw0KK+OCteOCq+ODouODiCzjg47jg6rjgqoNCivjgrXjgqvjg6Ljg4gs44Oo44Km44K4DQor44K144Kr44Oi44OILOOCuOODpeODs+OCsw0KK+OCteOCteOCrSzjgqvjg4Tjg4jjgrcNCivjgrXjgrXjgq0s44Kz44K144KvDQor44K144K144KtLOOCuOODpeODs+OCsw0KK+OCteOCteOCrSzjg6zjg4oNCivjgqTjg57jg4/jgrcs44OS44Ot44OfDQor44K144OE44OfLOOCv+OCq+ODpuOCrQ0KK+OCteODiOOCpizjgrfjg7PjgqTjg4Hjg63jgqYNCivjgrXjg4jjgqYs44Om44Km44K4DQor44K144OI44KmLOODiOODouOCr+ODiw0KK+OCteODiOOCpizjg57jg6rjgrMNCivjgrXjg4jjgqYs44Kz44Km44KtDQor44K144OI44KmLOODpuODn+OCsw0KK+OCteODjizjgrfjg44NCivjgqTjgrfjgrDjg60s44OS44OH44K/44KrDQor44K144Ov44Ok44OK44KuLOODn+ODhOODkuODrQ0KK+OCt+OCquOCvyzjgrHjgqTjgrnjgrENCivjgrfjgq0s44Om44Km44KzDQor44K344Ky44Kq44KrLOODrOOCpA0KK+OCt+OCsuOCvyzjg57jg6Ljg6sNCivjgrfjgrfjg4ks44Oq44KrDQor44K344OK44OALOODqOOCt+OCsw0KK+OCpOODhyzjg6jjgrfjg5Xjg58NCivjgrfjg5Djgr8s44Oo44Km44KzDQor44K344OQ44K/LOOCouODquODkuODiA0KK+OCt+ODkOOCvyzjg6rjg6fjgqYNCivjgrfjg5Djgr8s44K344Ol44Km44Kk44OBDQor44K344Oe44K6LOODouODiuODnw0KK+OCt+ODnuODgCzjg6jjgrfjgrXjg4ANCivjgrfjg57jgros44OE44ON44KqDQor44K344Of44K6LOODkuODh+OCv+ODgA0KK+OCt+ODn+OCuizjgq/jg4vjgqgNCivjgrfjg6Ljg4/jgrcs44OS44Ot44OO44OWDQor44K344Oi44Ok44OeLOOCq+OCquODqg0KK+OCuOODp+OCpizjgr/jgqvjgrcNCivjgqTjg4jjgqYs44Kt44On44Km44KzDQor44K544Ks44K/LOODjuODluOCqA0KK+OCueOCrOODpCzjgqLjgq3jg5Ljg60NCivjgrnjgq7jgr8s44K/44Kr44OS44OtDQor44K544Ku44OK44KrLOOCqOOCpOOCuA0KK+OCueOCruODouODiCzjg5Xjg5/jgqoNCivjgrnjgq7jg6Tjg54s44Kr44K644OKDQor44K544Ku44Ok44OeLOODpuOCpuOCuA0KK+OCueOCruODpOODnizjg4jjgqrjg6sNCivjgrnjgrLjg44s44K044KmDQor44K544K644KtLOOCs+OCpuOCuA0KK+OCueOCuuOCrSzjg57jgrXjg5Ljg60NCivjgrnjgrrjgq0s44OS44OH44Ki44KtDQor44K544K644KtLOOCs+OCpuOCuA0KK+OCueOCuuOCrSzjg6bjgqbjgrMNCivjgqTjg6/jgrXjgq0s44OI44Oi44OV44OfDQor44K544K644KtLOODqOOCpuOCsw0KK+OCueOCuuOCrSzjgrPjgqbjgrgNCivjgqTjg4Hjgqvjg68s44Oq44KrDQor44K744KtLOODnuOCteODqOOCtw0KK+OCu+OCreOCsOODgSzjgrHjgqTjgrMNCivjgrvjgq3jg6Qs44Kx44Oz44K4DQor44K744KzLOOCseODs+OCv+ODreOCpg0KK+OCu+ODqSzjg5Ljg63jg6bjgq0NCivjgr3jgqws44Om44KrDQor44K944KsLOOCqOOCpOOCsw0KK+OCpOODiOOCpizjgqLjgq3jg6kNCivjgqvjg5/jg6Qs44Kr44K544OfDQor44K944Oz44KvLOODiOOCt+OCq+OCug0KK+OCv+OCq+OCrSzjg6bjg5/jgrMNCivjgr/jgqvjgq4s44Oo44K344OP44OrDQor44K/44Kr44K144KtLOODpOOCueOCqg0KK+OCpOOCseODgCzjg5Ljg4jjgrcNCivjgr/jgqvjgrfjg54s44Ok44K544OS44OIDQor44K/44Kr44OOLOOCseODs+OCpOODgQ0KK+OCv+OCq+ODjizjg5Ljg4fjgq0NCivjgr/jgqvjg44s44Oe44Kt44KzDQor44K/44Kr44OOLOODiuOCquODkuODrQ0KK+OCv+OCq+ODjizjg6jjgrfjg5LjgrUNCivjgr/jgqvjg4/jgrcs44Oo44K344KqDQor44K/44Kr44OP44K3LOOCs+OCpuODmOOCpA0KK+OCv+OCq+ODj+OCtyzjgrPjgqbjgqTjg4Hjg63jgqYNCivjgr/jgqvjg4/jgrcs44Ks44KvDQor44K/44Kr44OP44K3LOOCq+ODig0KK+OCv+OCq+ODj+OCtyzjgr/jgqvjg47jg6oNCivjgr/jgqvjg57jg4Qs44OS44Ot44K3DQor44K/44Ks44OfLOODkuODiOOCtw0KK+OCv+OCq+ODn+OCtuODryzjg6rjg6Xjgqbjgq0NCivjgr/jgqvjg6njg4As44K344Oz44Kk44OBDQor44K/44Kt44Kr44OvLOOCqOODn+OCsw0KK+OCv+OCreOCtuODryzjgqTjg6/jgqoNCivjgqTjgqTjg44s44Om44OfDQor44K/44Kx44KkLOODqOOCt+ODkuODrQ0KK+OCv+OCseOCpuODgSzjgrfjg7PjgqTjg4Hjg63jgqYNCivjgr/jgrHjgqbjg4Es44K/44Kr44Kt44OoDQor44K/44Kx44Kt44K/LOODnuOCrQ0KK+OCv+OCseODiuOCqyzjg5Xjg5/jgqoNCivjgr/jgrHjg47jgqbjg4Es44Oq44On44Km44K4DQor44K/44Kx44OP44OKLOODleODnw0KK+OCpOODiOOCpizjg4jjgq/jgrMNCivjgr/jgrHjg6Ljg4gs44Oe44K144OrDQor44K/44Kx44Oi44OILOOCq+OCuuODkuOCsw0KK+OCv+OCtCzjgrnjgrnjg6ANCivjgr/jgrXjgqss44Oo44K344OO44OWDQor44K/44K444OeLOODkuODreOCq+OCug0KK+OCv+OCt+ODrSzjg6jjgrfjgrMNCivjgr/jgrfjg60s44K044KmDQor44K/44K/44OpLOOCteODiuOCqA0KK+OCv+ODgeODkOODiizjgqLjg6TjgrMNCivjgqTjg4Hjg6Djg6ks44K144OI44K3DQor44K/44OG44Kk44K3LOODpuOCrQ0KK+OCv+ODhuODjizjg5LjgrXjgrcNCivjgr/jg4bjg44s44OA44Kk44K+DQor44K/44OK44KrLOOCseODs+OCpOODgeODrQ0KK+OCv+ODiuOCqyzjg57jgrXjg5Ljg60NCivjgr/jg4rjgqss44OK44Kq44KzDQor44K/44OK44KrLOODiOOCquODqw0KK+OCv+ODiuOCqyzjgq3jg6fjgqbjgrMNCivjgr/jg4rjgqss44Ok44K544K3DQor44K/44OK44KrLOODqOOCpuOCsw0KK+OCrOODnyzjg57jgrPjg4gNCivjgr/jg4rjg58s44OE44ON44KqDQor44K/44OLLOODnuODnw0KK+OCv+ODi+OCsOODgSzjg6bjg5/jgrMNCivjg4rjgqvjgqrjgqss44Om44KtDQor44K/44OL44K244OvLOODqOOCt+ODjuODqg0KK+OCv+ODi+ODgCzjg47jg5bjg6bjgq0NCivjgr/jg4vjg6Ljg4gs44Ki44Kt44OfDQor44K/44OO44Kq44KrLOODn+OCqOOCsw0KK+OCv+ODkOOCvyzjg57jgrXjgq0NCivjgr/jg4/jg6ks44Of44Kr44KzDQor44K/44Og44OpLOODpuOCreODkuODrQ0KK+ODgeOCq+OCtuODryzjg47jg6rjg5Ljg4gNCivjg4Hjg44s44K/44Kr44OO44OWDQor44OB44OP44OpLOODkuOCteODjg0KK+ODgeODpeOCpizjgrXjg6TjgqsNCivjg4Hjg6Xjgqbjg54s44Kx44Kk44Kk44OBDQor44OE44Kr44OALOODkuODh+OCv+OCsQ0KK+ODhOOCq+ODouODiCzjg47jg5bjgr/jgqsNCivjg4Tjgqvjg6Ljg4gs44Om44K/44KrDQor44OE44OALOODiOODouODjuODqg0KK+ODhOODgeODgCzjg57jgrXjgqoNCivjg4Tjg4Hjg6Qs44K744Os44OKDQor44OE44OB44OkLOOCouOCrQ0KK+ODhOODjeOCrSzjgq/jg5/jgrMNCivjg4fjg5/jgrss44K/44Kr44K3DQor44OG44Op44Kq44KrLOOCq+ODiuOCsw0KK+OCpOOCuuODnyzjgqLjg4TjgrcNCivjg4jjgqYs44K744Kk44K4DQor44OI44K4LOODnuOCteOCsw0KK+ODiOOCt+OCquOCqyzjg5/jgrnjgroNCivjg4jjg4As44OP44OK44KoDQor44OI44OT44OK44KkLOOCouOCreOCsw0KK+ODiOODouOCpCzjg5/jg43jgq0NCivjg4jjg6Tjg54s44Ki44Kk44KzDQor44OI44Oo44K344OeLOOCs+OCpuOCpOODgQ0KK+ODiOODqOODgCzjgr/jgq/jg6QNCivjg4jjg6jjg4/jg54s44OI44K344KqDQor44OK44Ks44KoLOOCseODs+OCuA0KK+ODiuOCrOOCqCzjgrfjg5sNCivjg4rjgqvjgqos44OI44Oi44OS44OHDQor44OK44Kr44KqLOOCseODs+OCv+ODreOCpg0KK+ODiuOCq+OCuOODnizjg4jjg6LjgrMNCivjg4rjgqvjgrjjg54s44Oo44K344K/44KrDQor44OK44Kr44K444OeLOODhOODqOOCtw0KK+ODiuOCrOOCt+ODnizjg57jg6oNCivjg4rjgqzjgrss44Kz44Km44Kk44OB44Ot44KmDQor44OK44Kr44K+44OOLOOCuOODpeODs+OCsw0KK+ODiuOCq+OCvyzjgqLjgrXjgrMNCivjg4rjgqzjgr8s44Oo44K344OS44KzDQor44OK44Ks44OILOODnuODquOCsw0KK+ODiuOCq+ODi+OCtyzjgrLjg7MNCivjg4rjgqvjg44s44Oo44K344KzDQor44OK44Ks44OOLOODkuODreOCrQ0KK+ODiuOCrOODjizjgr/jgqvjgrcNCivjg4rjgqzjg44s44OG44OE44OkDQor44OK44Ks44OP44OpLOODqOOCt+ODpuOCrQ0KK+ODiuOCq+ODkuOCrOOCtyzjg6HjgrDjg58NCivjg4rjgqvjg6Djg6ks44Kt44OV44OfDQor44Kk44OM44K644KrLOODiOODouOCq+OCug0KK+ODiuOCq+ODoOODqSzjg5Xjg5/jgq0NCivjg4rjgqvjg6Djg6ks44OS44OI44K3DQor44OK44Kr44Og44OpLOODn+ODmw0KK+ODiuOCq+ODoOODqSzjg57jgrXjgqvjg4QNCivjg4rjgqvjg6Qs44Om44K/44KrDQor44OK44Kr44OkLOOCseOCpA0KK+ODiuODqeOCteOCrSzjg47jg5bjg4rjg6oNCivjg4rjg6rjgr8s44Oq44Ol44Km44K/DQor44OK44Oq44K/LOODqOOCt+OCsw0KK+ODi+OCpOODgCzjg4jjg6LjgqLjgq0NCivjg4vjgrfjgqvjg68s44Kk44Ov44KqDQor44OL44K344Og44OpLOODgeOCruODqg0KK+ODi+OCt+ODoOODqSzjgr/jgqTjgqTjg4ENCivjg4vjgrfjg6Djg6ks44Kr44OE44OfDQor44OL44K344Ok44OeLOODiOOCquODqw0KK+ODi+OCt+ODpOODnizjg47jg6rjg57jgrUNCivjg4vjg6Djg6ks44OS44Ot44Om44KtDQor44OL44OvLOODpuOCreOCqA0KK+ODjOODnuOCvyzjg4rjgqrjgrMNCivjg4zjg57jgr8s44K/44Kr44OS44OtDQor44OM44Oe44OALOODhOODqOOCtw0KK+ODjeOCruOCtyzjgqTjgrXjgqoNCivjg47jgrbjgq0s44K/44Kr44OK44KqDQor44OO44Ks44OfLOODpuOCqw0KK+ODjuODgCzjgr/jg4Tjg6QNCivjg47jg4/jg6ks44OE44Oo44K3DQor44OO44OW44OP44OpLOODpuOCpuOCsw0KK+ODj+OCrCzjg57jgrXjg4gNCivjg4/jgq7jg6/jg6ks44K/44OA44Kr44K6DQor44OP44Ku44Ov44OpLOOCq+ODhOODqQ0KK+ODj+OCt+OCuuODoSzjgr/jgqvjgrcNCivjg4/jgrfjg6Ljg4gs44K/44Kr44Om44KtDQor44OP44K344Oi44OILOOCveODqOOCqw0KK+ODj+OCt+ODouODiCzjgqLjgq3jg6kNCivjg4/jgrvjgqzjg68s44Oe44Kz44OIDQor44OP44K744Ks44OvLOODnuODpuODnw0KK+ODj+OCu+OCrOODryzjgqvjgrrjgr/jgqsNCivjg4/jgrvjg5ks44Oo44Km44OY44KkDQor44OP44K/LOODnuOCteODkuODrQ0KK+ODj+OCv+OCseODpOODnizjg4/jgrrjgq0NCivjg4/jgr/jg4rjgqss44Kk44Kv44K+44KmDQor44OP44K/44OOLOOCouODhOODqA0KK+ODj+ODg+ODiOODqizjgqLjgq3jg6jjgrcNCivjg4/jg4rjgrbjgq0s44K/44OE44OkDQor44OP44OK44OW44K1LOOCquOCteODoA0KK+ODj+ODiuODoOODqSzjgrTjgqYNCivjg5Djg5As44Ki44Kt44KzDQor44OP44Oe44K144KtLOODqOOCt+ODpuOCrQ0KK+ODj+ODnuODgCzjg4TjgrDjgq0NCivjg4/jg6Tjgrcs44Oe44OK44OWDQor44OP44Ok44K3LOOCv+OCseODkuODrQ0KK+ODj+ODpOOCtyzjg57jgrPjg4gNCivjg4/jg6Tjgrcs44Oq44On44KmDQor44OP44OpLOODnuOCteODkuODhw0KK+ODj+ODqeOCt+ODnizjgqrjgrXjg6ANCivjg4/jg6njg4As44OK44Kq44OkDQor44OP44Op44OALOODquOCqA0KK+ODj+ODq+OCv+ODiyzjgr/jgqvjg5Ljg60NCivjg5Ljgqzjgrfjg44s44Oe44KtDQor44OS44Ks44K344Ok44OeLOODpuOCpg0KK+ODkuOCsOODgSzjgrfjgrLjg5/jg4QNCivjgqTjgrfjg4/jg6ks44K/44Kx44Oo44K3DQor44OS44K444Kr44K/LOODkuODreOCouOCrQ0KK+ODkuODkyzjgr/jg4Tjg4gNCivjg5Ljg6fjgqbjgqgs44OI44Oi44OS44OtDQor44OS44Op44KkLOODkuODh+ODjuODqg0KK+ODkuODqeOCq+ODryzjgrjjg6Xjg7Pjg6QNCivjg5Ljg6njgq8s44K344Ky44KtDQor44OS44Op44K144OvLOOCseODs+OCuA0KK+OCpOODjuODj+ODqSzjgr/jgq/jg5Ljg60NCivjg5Ljg6njgr8s44Kv44OL44OE44KwDQor44OS44Op44OM44OeLOOCq+OCuuOCqg0KK+ODkuODqeODjizjgr/jg63jgqYNCivjg5Ljg6njg6Tjg54s44K344Ky44OrDQor44OS44Ot44Km44OBLOODrOOCpA0KK+ODkuODreOCquOCqyzjg6bjgqvjgrMNCivjg5Ljg63jgqvjg68s44Kx44Oz44K/44Ot44KmDQor44OV44Kv44KkLOODnuOCteOCrQ0KK+ODleOCr+ODgCzjgr/jgqvjg5Ljg60NCivjg5Xjgq/jg4As44K544K544OgDQor44Kz44OqLOOCreODp+OCpuOCsw0KK+ODleOCuOOCpCzjgrjjg6Xjg7PjgqTjg4ENCivjg5XjgrjjgqQs44OA44Kk44K+DQor44Kk44OHLOODgeOCqOOCsw0KK+ODleOCuOOCpCzjg5Ljg63jgqvjgroNCivjg5Xjgrjjgqos44K/44Kr44Om44KtDQor44OV44K444Kq44KrLOOCseODs+OCpOODgQ0KK+ODleOCuOOCr+ODqSzjgq3jgq/jgrMNCivjg5XjgrjjgrXjg68s44Kz44Km44K4DQor44OV44K444K144OvLOOCseODs+OCv+ODreOCpg0KK+ODleOCuOOCt+OCsizjgrHjgqTjgqTjg4ENCivjg5Xjgrjjgr8s44Kx44Oz44Kk44OBDQor44Kk44OO44Km44KoLOODjuODquOCqg0KK+ODleOCuOODiCzjg6bjgqsNCivjg5Xjgrjjg4rjgqws44OK44Ks44Oe44K1DQor44OV44K444Ov44OpLOODiOODouODj+ODqw0KK+ODleOCuOODr+ODqSzjg4jjgrfjgq0NCivjg5Xjgrss44Kr44Kq44OrDQor44OV44Or44Kr44OvLOODnuOCteODn+ODhA0KK+ODleODq+OCq+ODryzjg6bjgqbjgqTjg4ENCivjgqTjgrfjgqQs44OA44Kk44K544KxDQor44OV44Or44K144OvLOODkuODreOCrQ0KK+ODleODq+OCvyzjgrPjgqbjgqTjg4ENCivjg5Xjg6vjgr8s44Oo44K344Ki44KtDQor44OV44Or44K/LOODiuOCquOCsw0KK+ODleODryzjg5/jgqoNCivjg5vjgrcs44Oe44Om44OfDQor44Ob44K944OALOOCseOCpOOCueOCsQ0KK+OCpOOCt+OCpCzjg5Ljg63jg5/jg4ENCivjg5vjg6rjgqvjg68s44OK44Kq44KzDQor44Ob44Oq44Kz44K3LOODkuODreOCouOCrQ0KK+ODm+ODs+ODgCzjg47jg5zjg6sNCivjg57jgqjjgqvjg68s44Or44OfDQor44Oe44Ko44OALOODn+ODiuOCsw0KK+ODnuOCqOODgCzjgr/jg63jgqYNCivjg57jgqjjg4As44K/44Kr44K3DQor44Oe44Ko44OOLOOCteODiOOCtw0KK+ODnuOCrSzjg4rjg58NCivjg57jgq3jgr7jg44s44K144Ok44KrDQor44Oe44Kt44K/LOOCq+ODhOODpuOCrQ0KK+ODnuOCreODjizjg6Djg43jgq0NCivjg57jgrXjgq0s44Om44K644OrDQor44Oe44K544K244KtLOODqOOCt+OCsw0KK+ODnuOCueODgCzjg6bjgqbjgrnjgrENCivjg57jgrnjg5bjg4Es44Kr44K644OS44OtDQor44Oe44OB44OALOODn+ODpuOCrQ0KK+ODnuODhOOCpuODqSzjgqjjg6rjgrMNCivjg57jg4Tjgqvjg68s44Oi44OI44OoDQor44Oe44OE44K244KtLOODgOOCpOOCueOCsQ0KK+ODnuODhOOCtuOCrSzjg57jgq0NCivjg57jg4Tjgrfjgr8s44Kz44K644KoDQor44Oe44OE44K344OeLOODkuODh+OCqg0KK+ODnuODhOODgCzjgrfjgrLjg6bjgq0NCivjg57jg4Tjg4As44K/44Kr44K3DQor44Oe44OE44OALOOCouODpuODnw0KK+ODnuODhOODiuOCrCzjgr/jgqvjgrcNCivjg57jg4Tjg4rjg58s44Kz44Km44K4DQor44Oe44OE44OQ44OpLOODjuODquODleODnw0KK+ODnuODhOODkOODqSzjgrXjg4jjg58NCivjg57jg4Tjg5/jg6Qs44Kx44Oz44Kk44OBDQor44Oe44OE44Oi44OILOODnuOCs+ODiA0KK+ODnuODhOODouODiCzjgqvjgrrjg5Ljg4cNCivjg57jg4Tjg6Ljg4gs44K/44Kx44OV44OfDQor44Oe44OE44Oi44OILOODpuOCpuOCueOCsQ0KK+ODnuODhOODouODiCzjg5Ljg63jgrMNCivjg57jg4Tjg6Tjg54s44OB44K644KzDQor44Oe44OK44OZLOODquODp+OCpuOCueOCsQ0KK+ODnuODq+ODpOODnizjg57jgrXjgq0NCivjg57jg6vjg6Tjg54s44OS44Ot44KtDQor44Of44Km44OpLOODpOOCueODn+ODhA0KK+ODn+OCr+ODiyzjg5Xjg5/jg4rjg6oNCivjg5/jgrrjgqvjg58s44OS44OH44KtDQor44Of44OE44OP44K3LOODjuODquODqOOCtw0KK+ODn+ODiuODiCzjg5Ljg63jg6bjgq0NCivjg5/jg4rjg58s44K/44Kr44Om44KtDQor44Of44OV44ONLOODqOOCt+ODkuODrQ0KK+ODn+ODpOOCrOODryzjg57jgrXjgrcNCivjg5/jg6TjgrXjgqss44K344OO44OWDQor44Of44Ok44K244OvLOOCuOODpeODsw0KK+ODoOODqeOCqizjg57jgrXjgrMNCivjg6Djg6njgqvjg58s44Oe44K144OfDQor44Og44Op44K/LOOCseODs+OCueOCsQ0KK+ODoOODqeODnuODhCzjg47jg5bjg6bjgq0NCivjg6Djg6njg6Tjg54s44OI44K344KqDQor44Og44Op44Ok44OeLOOCq+OCuuOCouOCrQ0KK+ODoeOCsOODrSzjg4jjg6Ljg5LjgrMNCivjg6Ljg4Hjgrrjgq0s44Kz44Km44Kk44OBDQor44Oi44OI44Oo44K3LOODnuOCs+ODiA0KK+ODouODouOCuizjg6bjgq3jgrMNCivjg6Ljg6os44Oe44K144KtDQor44Oi44OqLOODpOOCueOCv+OCqw0KK+ODouODqizjg5/jg5sNCivjg6Ljg6os44K/44Oe44OoDQor44Oi44Oq44K/LOOCseODs+OCuA0KK+ODouODquOCvyzjgrHjg7PjgqTjg4Hjg60NCivjg6Ljg6rjg44s44Of44OB44KqDQor44Oi44Oq44Oi44OILOOCv+OCq+OCtw0KK+ODouODquODouODiCzjg6bjgq3jgrMNCivjg6Ljg6rjg6Tjg54s44Kr44K644Om44KtDQor44Oi44Oq44Ov44KtLOODleODn+OCouOCrQ0KK+ODpOOCrizjgrHjgqTjgrnjgrENCivjg6Tjgq4s44Om44K/44KrDQor44Ok44Kv44K344K4LOOCquOCteODoA0KK+ODpOOCsyzjg4Tjg6jjgrcNCivjg6Tjgrbjg68s44Kx44Oz44Kk44OBDQor44Ok44K544OeLOOCseODs+OCuOODreOCpg0KK+ODpOODiOOCtCzjgqLjgqQNCivjgqzjg7Ms44OP44OK44KoDQor44Ok44OK44OWLOOCteODiOOCtw0KK+ODpOODjizjgrfjg6XjgqbjgrPjgqYNCivjg6Tjg5bjgr8s44OS44Ot44K3DQor44Ok44Oe44Km44OBLOODpuOCreOCsw0KK+ODpOODnuOCpuODgSzjg5/jg4Tjg4/jg6sNCivjg6Tjg57jgrDjg4Es44Oq44On44KmDQor44Ok44Oe44Kw44OBLOODpOOCueODnuOCtQ0KK+ODpOODnuOCsOODgSzjg4rjgqrjgrMNCivjgrjjg4DjgqQs44OS44Ot44Ki44KtDQor44Ok44Oe44Kw44OBLOOCqOOCpOOCvw0KK+ODpOODnuOCsOODgSzjgrvjgqTjgrMNCivjg6Tjg57jgrDjg4Es44Kz44Km44K4DQor44Ok44Oe44K144KtLOODpOOCueODkuODrQ0KK+ODpOODnuOCteOCrSzjgrjjg6Xjg7MNCivjg6Tjg57jgrbjgq0s44Ki44OE44OkDQor44Ok44Oe44K344K/LOOCq+OCuuODkuODrQ0KK+ODpOODnuOCt+OCvyzjg57jgrXjg4gNCivjg6Tjg57jgrfjgr8s44K/44Kv44OkDQor44Ok44Oe44OALOOCv+OCq+OCtw0KK+ODpOODnuODgCzjg6TjgrnjgqoNCivjg6Tjg57jg4As44K/44OE44K4DQor44Ok44Oe44OALOODpOOCueODkuOCtQ0KK+ODpOODnuODgCzjgq3jg6fjgqbjgrMNCivjg6Tjg57jg4jjg6Qs44Oe44Oq44KzDQor44Ok44Oe44OK44KrLOODkuODleODnw0KK+ODpOODnuODiuOCtyzjgrjjg6Xjg7MNCivjg6Tjg57jg4vjgrcs44OK44Kq44KtDQor44Ok44Oe44Oi44OILOODgeOCqw0KK+ODpOODnuODouODiCzjgqvjgrrjg6QNCivjg6Tjg57jg6Ljg4gs44Oq44KrDQor44Ok44Oe44Oi44OILOODnuODiuODnw0KK+ODpOODnuODouODiCzjg6jjgqbjgrnjgrENCivjg6Tjg57jg6Ljg4gs44K/44OE44OkDQor44Oo44Kz44K/LOODiOODouODleODnw0KK+ODqOOCs+OCvyzjgrfjgrLjg6bjgq0NCivjg6jjgrPjgr8s44Kr44OoDQor44Oo44Kz44OGLOOCu+OCpOOCpOODgeODreOCpg0KK+ODqOOCt+OCquOCqyzjgr/jgqvjgrcNCivjg6jjgrfjgqrjgqss44Ki44OE44K3DQor44Oo44K344Kq44KrLOODkuODh+ODiA0KK+ODqOOCt+OCq+ODryzjgr/jgq/jg6QNCivjg6jjgrfjgqvjg68s44Oq44On44Km44Kk44OBDQor44Oo44K344OALOODnuOCteODpuOCrQ0KK+ODqOOCt+ODgCzjgrjjg6Xjg7PjgrMNCivjg6jjgrfjg4As44Ki44Kr44ONDQor44Oo44K344OOLOODn+ODjuODqw0KK+ODqOOCt+ODnyzjg57jgrXjg6bjgq0NCivjg6jjgrfjg6Djg6ks44Kv44OL44OS44KzDQor44Oo44OALOODjuODquODkuOCtQ0KK+ODqOODjeOCtuODryzjgqLjg6njgr8NCivjg6rjg6Xjgqbjg4gs44Kx44KkDQor44Ov44Kr44OE44KtLOOCt+ODs+OCueOCsQ0KK+ODr+OCreOCtuOCqyzjgrfjg7Pjg6QNCivjg6/jgq3jgr8s44Om44Km44K544KxDQor44Ov44Kt44K/LOODiOOCquODqw0KK+ODr+OCreODouODiCzjgrfjg6fjgqbjgrMNCivjg6/jg4As44K/44Kr44K3DQor44Ov44OALOOCouOCreOCsw0KK+ODr+OCv+OCuyzjg4DjgqQNCivjg6/jgr/jg4rjg5ks44Ok44K544OP44OrDQor44Ov44K/44OK44OZLOOCveOCpg0KK+ODr+OCv+ODiuODmSzjg5Ljg63jg6bjgq0NCivjg6/jgr/jg4rjg5ks44OK44Kq44KzDQor44Ov44K/44OK44OZLOODqOOCt+OCv+OCqw0KK+OCreODjuOCt+OCvyzjg6bjgqbjgrMNCivjgqLjgqrjgq0s44Oo44K344OS44KzDQor44Ok44OK44Ku44OP44OpLOOCreODqOOCtw0KK+OCouODnuOCsyzjg6jjgrfjgqoNCivjgrPjg7Pjg4njgqYs44K344Kq44OqDQor44K344Op44Kr44OvLOODqOOCpuOCsw0KK+OCs+ODpOODnizjgr/jgqvjg6bjgq0NCivjgrPjg7Pjg4ks44Oe44Kz44OIDQor44Oi44OqLOODiOOCt+OCqg0KK+OCquOCquODjizjg5Ljg4fjg6jjgrcNCivjg57jg44s44Ki44KtDQor44OK44Ks44OOLOOCueODn+OCsw0KK+OCteODiOOCpizjgqjjg6oNCivjg5/jg6Tjgrbjgq0s44Ki44OkDQor44Kq44Ks44OvLOOCouOCreODqQ0KK+OCreODoOODqSzjg5Ljg4fjg4jjgrcNCivjg6jjgrPjgqos44Kx44Oz44K4DQor44Km44OB44Og44OpLOODgeODiuODhA0KK+OCtOOCt+ODnizjg6rjg6XjgqbjgqTjg4ENCivjgrXjgqjjgq0s44Of44KtDQor44OK44Kr44K444OeLOODkuODreODnw0KK+OCpOODr+ODnyzjg5/jg5sNCivjgqjjgrIs44Os44KkDQor44Km44Oh44K+44OOLOOCq+OCquODqg0KK+OCteOCr+ODqeOCpCzjg57jg58NCivjg6/jgr/jg4rjg5ks44Oe44OkDQor44OK44Ks44KkLOOCt+ODp+OCpuOCtA0KK+OCquOCveOCrOODnyzjgqLjg4Tjg5LjgrMNCivjgq/jg63jgqvjg68s44Oe44K144Oo44K3DQor44K/44Kr44K544KrLOODqOOCt+OCq+OCug0KK+OCquODkOOCvyzjg57jgrXjg5LjgrMNCivjgrfjg6njgqQs44Om44K/44KrDQor44Oe44OE44Km44OpLOODnuOCs+ODiA0KK+ODiuOCq+OCtuODryzjg6jjgrfjg5LjgrUNCivjg57jg4TjgqQs44Om44Km44Kk44OBDQor44Kz44K744KtLOOCs+OCpuOCv+ODreOCpg0KK+ODhOOCq+ODgCzjg47jg6rjg6bjgq0NCivjg4bjg6njgq/jg6ks44Oo44Km44K4DQor44OL44OY44KkLOOCreODqOOCtw0KK+OCq+ODr+ODoOODqSzjgr/jgqvjg6bjgq0NCivjg5LjgrQs44Oe44K144Om44KtDQor44Kz44OQ44Ok44K3LOOCreODqOODjuODqg0KK+ODleODq+OCvyzjgr/jgqvjg6bjgq0NCivjg6Ljg4Hjgrrjgq0s44OS44Ot44Om44KtDQor44Kq44Kr44OALOOCv+ODhOOCtw0KK+OCteOCpOODiOOCpizjg6bjgq3jgrMNCivjgqvjg6/jg4/jg6ks44Om44KtDQor44K544K644Kr44KxLOOCv+OCr+ODpA0KK+OCpOODiOOCpizjgqLjg4TjgrMNCivjgqTjgrfjgrrjgqss44OS44K144OIDQor44K/44OZ44KkLOODpOOCueODnuOCtQ0KK+OCtOODiOOCpizjgqLjgq3jg5Ljg60NCivjgrfjg6LjgrXjgqss44OI44Kq44OrDQor44Kr44Ov44KkLOOCq+OCuuODng0KK+ODr+OCv+ODiuODmSzjg6jjgrfjgqvjgroNCivjgrnjgrrjgq0s44Kk44OE44OV44OfDQor44Oe44OE44Ok44OeLOODkuODreOCtw0KK+ODj+ODqSzjg6rjg6fjgqbjg5jjgqQNCivjg4Tjg5Djgq0s44K744Kk44Kk44OB44Ot44KmDQor44Ok44K544KkLOOCv+OCq+ODpuOCrQ0KK+OCs+ODkOODpOOCtyzjgrHjg7Pjgr/jg63jgqYNCivjgqrjgqvjg5ks44K144Om44OqDQor44Kq44Ks44OvLOOCt+ODp+OCpuOCsw0KK+ODpOODnuOCsOODgSzjgrXjg4jjgrcNCivjg5Xjgrjjgqvjg68s44Kx44Oz44K4DQor44Kk44OK44Ks44KtLOODkuODh+ODiOOCtw0KK+ODgeOCvizjg4jjgrfjg5LjgrMNCivjg4/jg4rjg4As44K444Ol44Oz44OkDQor44Kq44Kq44KzLOODouODiOOCouOCrQ0KK+OCquOCquOCr+ODqSzjgrnjg5/jg5Ljg60NCivjg57jg4Tjgqos44OE44OI44OgDQor44Ko44Oz44OJLOODnuODquOCsw0KK+ODm+ODquODmSzjg6Ljg4jjgrgNCivjgqvjg4Qs44OG44OE44OS44OtDQor44Kq44K/44KrLOODnuOCteODjuODlg0KK+OCv+OCq+ODj+OCtyzjg4jjgrfjg6QNCivjg6Djg6njg6Tjg54s44Om44Km44KzDQor44Oo44K344Kq44KrLOOCteODpuODqg0KK+OCq+OCpCzjg6jjgrfjgqgNCivjgr/jgqvjg4/jgrcs44Ov44Kr44KzDQor44Kw44Oz44KyLOOCv+ODnuODqA0KK+ODpOODjizjgr/jgqQNCivjg4/jg6Tjgrcs44Ki44Ok44KzDQor44Of44Km44OpLOODnuODiuODnw0KK+OCouOCquODpOOCrizjg5Ljg63jgr/jgqsNCivjgr/jgqvjg4As44OI44Kv44OS44KzDQor44OM44Oe44K/LOOCseODs+OCuA0KK+OCq+OCv+OCquOCqyzjgqvjgqrjg6sNCivjgrfjg5/jgros44K144OB44KzDQor44K344Of44K6LOODpuOCpuOCsw0KK+ODnuODhOODoOODqSzjgr/jg63jgqYNCivjgqrjg6rjg4gs44K144OI44K3DQor44Kz44K/44OLLOODleODn+ODkuOCsw0KK+OCquOCquODj+OCtyzjg6rjg6fjgqYNCivjgqvjg7Pjgrvjgq0s44Kx44Kk44KzDQor44Kt44K/44Og44OpLOOCs+OCpuOCv+ODreOCpg0KK+OCteOCr+OCvyzjgrfjg7PjgqTjg4Hjg63jgqYNCivjg6jjgrfjg4As44K/44Kr44K3DQor44Kz44OP44OpLOODiOOCquODqw0KK+OCpOODj+ODqSzjgrHjgqTjgrMNCivjg4Tjgrjjgqbjg6ks44Kr44K644OS44OtDQor44OK44Kr44Og44OpLOODhOODqOOCtw0KK+OCouOCquOCrSzjgqLjgq3jgrMNCivjgqLjgqrjg6Tjg54s44OA44Kk44K544KxDQor44Ki44Kr44Kk44KxLOODkuODreODnw0KK+OCouOCq+ODhCzjgrjjg6Xjg7MNCivjgqLjgq3jg4/jg6ks44K344Ol44Oz44K544KxDQor44Ki44Kt44Oi44OILOODnuODqg0KK+OCouOCteOCr+ODqSzjgr/jgqvjgrcNCivjgqLjgrXjg44s44Oq44On44KmDQor44Ki44OT44OrLOOCouOCpOOCsw0KK+OCouODmSzjg47jg6rjgr/jgqsNCivjgqLjg5ks44Om44KtDQor44Ki44OZLOOCv+OCr+ODpA0KK+OCouODmeOCq+ODryzjg4jjg6LjgrMNCivjgqLjg6njgqQs44OO44Oq44OS44OIDQor44Ki44Op44KkLOODnuOCteODiOOCtw0KK+OCouODqeOCq+ODryzjg5Ljg63jgq0NCivjgqLjg6njgq0s44K/44Kr44Ki44KtDQor44Ki44Op44KtLOODkuODreOCtw0KK+OCouODquOCqCzjg57jgrXjg5Xjg58NCivjgqLjg7Pjg4njgqYs44Kx44Oz44K/44Ot44KmDQor44Kk44Kk44OALOOCuOODpeODs+OCpOODgQ0KK+OCpOOCseODgCzjgrfjg6Xjg7PjgrnjgrENCivjgqTjgrHjg4As44K/44Kx44K3DQor44Kk44Kx44OALOODiuOCquOCrQ0KK+OCpOOCt+OCpCzjg47jg5bjg6TjgrkNCivjgqTjgrfjgqQs44OP44Ok44OIDQor44Kk44K344Ks44KtLOODn+ODpOOCsw0KK+OCpOOCt+OCq+ODryzjg6bjgq0NCivjgqTjgrfjgqvjg68s44Om44Of44KzDQor44Kk44K344K244OvLOODhuODq+OCrQ0KK+OCpOOCt+OCuuODnyzjgrfjg6Xjgqbjg5jjgqQNCivjgqTjgrfjgrzjgq0s44OA44Kk44K544KxDQor44Kk44K344OALOODpuOCpuOCuA0KK+OCpOOCt+ODgCzjg6zjgqTjgrMNCivjgqTjgrfjg4As44Oo44K344K/44KrDQor44Kk44K344OFLOOCv+OCq+OCtw0KK+OCpOOCt+ODj+ODqSzjg5Xjg5/jg4rjgqoNCivjgqTjgrfjg57jg6ss44K344Ol44Km44Kk44OBDQor44Kk44K/44OLLOOCv+OCq+OCtw0KK+OCpOOCv+ODj+ODqSzjg5LjgrXjg4TjgrANCivjgqTjg4Hjg54s44OK44Kq44OIDQor44Kk44OI44KmLOODpuOCpuOCsw0KK+OCpOODiOOCpizjg6bjgqbjgqTjg4Hjg63jgqYNCivjgqTjg4jjgqYs44OS44Ot44Kr44K6DQor44Kk44OI44KmLOOCouOCreOCsw0KK+OCpOODiOOCpizjgrfjgrrjgrMNCivjgqTjg4jjgqYs44Kq44KtDQor44Kk44OI44KmLOODhOODqOOCtw0KK+OCpOODiOOCpizjg5Ljg63jg6bjgq0NCivjgqTjg4rjgqzjgq0s44K344Ky44KtDQor44Kk44OK44OfLOODrOOCqg0KK+OCpOODjizjg5/jgq0NCivjgqTjg47jgqbjgqgs44Oe44K144KtDQor44Kk44OO44Km44KoLOOCv+OCq+OCtw0KK+OCpOODnuOCqizjgrjjg6Xjg7Pjg5rjgqQNCivjgqTjg57jg4As44Kx44Oz44Kk44OBDQor44Kk44Ov44Kr44OfLOODpuOCpuOCueOCsQ0KK+OCpOODr+OCr+ODqSzjg6bjgr/jgqsNCivjgqTjg6/jgrbjgq0s44OS44Ot44K/44KrDQor44Kk44Ov44K/LOOCs+OCpuOCuA0KK+OCpOODr+ODouODiCzjg5Ljg63jgq0NCivjgqbjgqjjgrnjgq4s44K444Ol44Oz44KzDQor44Km44Ko44OALOODnuOCteODpA0KK+OCpuOCqOOCv+OCqyzjgrfjg6fjgqbjgrgNCivjgqbjgqjjg4Es44Oe44OqDQor44Km44Ko44OOLOOCseODs+OCuA0KK+ODkuODquODpeOCpizjgrPjgqbjgrgNCivjgqbjgqjjg6Djg6ks44Oe44K144OS44OtDQor44Km44OB44OALOOCouODpA0KK+OCpuODgeODgCzjgq3jgqTjg4ENCivjgqbjg4Hjg4/jgrcs44K044KmDQor44Km44OB44Ok44OeLOODrOODnw0KK+OCpuODoeODj+ODqSzjg4rjg4TjgrMNCivjgqbjg6rjgr/jg4ss44Oe44K544OfDQor44Kq44Kk44Kr44OvLOOCseODs+OCv+ODreOCpg0KK+OCquOCquOCpCzjg4jjg6Ljg6bjgq0NCivjgqrjgqrjgqQs44Kr44Oo44KzDQor44Kq44Kq44Kk44K3LOODnuOCteODkuOCsw0KK+OCquOCpuODgSzjgrHjg7Pjgrfjg7MNCivjgqrjgqrjgqgs44OA44Kk44K544KxDQor44Kq44Kq44Kq44KrLOODnuOCteODkuODrQ0KK+OCquOCquOCq+ODryzjg57jgrXjg6QNCivjgqrjgqrjgq/jg5ws44Oq44On44KmDQor44Kq44Kq44Kv44OeLOODjuODquODkuODrQ0KK+OCquOCquOCvyzjg47jg5bjg5Ljg60NCivjgqrjgqrjgr/jg4ss44K344K644KrDQor44Kq44Kq44OELOODgeOCqA0KK+OCquOCquODhCzjg4bjg4Tjg6QNCivjgqrjgqrjg4Tjgqss44K444Ol44OzDQor44Kq44Kq44OE44KrLOODhuODq+ODkuODrQ0KK+OCquOCquODhOOCqyzjgqLjgq3jg6kNCivjgqrjgqrjg4Tjgqss44Kx44KkDQor44Kq44Kq44OE44OcLOODnuOCteODn+ODhA0KK+OCquOCquODj+OCvyzjgqLjgq3jgrMNCivjgqrjgqrjg57jgrUs44K/44OE44KqDQor44Kq44Kq44OkLOOCseOCpOOCuA0KK+OCquOCquODpOODnizjgr/jgqTjgrnjgrENCivjgqrjgqss44K/44Ot44KmDQor44Kq44Kr44K444OeLOODn+ODhOODjuODlg0KK+OCquOCq+ODgCzjgr/jg4Tjg6QNCivjgqrjgqvjg4As44OB44OS44OtDQor44Kq44Kr44OALOODjuODquODqOOCtw0KK+OCquOCq+ODgCzjgrXjg4jjgrcNCivjgqrjgqvjg4As44Or44OfDQor44Kq44Kr44OP44K/LOOCv+ODhOODpA0KK+OCquOCq+ODmSzjg6Tjgrnjg57jgrUNCivjgqrjgqvjg6Ljg4gs44OS44K144K3DQor44Kq44Kr44Oi44OILOODqOOCt+ODjuODqg0KK+OCquOCq+ODouODiCzjg5Ljg4fjgq0NCivjgqrjgqzjg68s44Kx44Kk44KzDQor44Kq44Ks44OvLOODgOOCpOOCueOCsQ0KK+OCquOCr+ODgCzjgrPjgqbjg5jjgqQNCivjgqrjgq/jg4gs44K144OBDQor44Kq44Kv44OK44KrLOOCu+OCpOOCtw0KK+OCquOCsOODqSzjgr/jg63jgqYNCivjgqrjgrbjgq0s44OO44OW44Ki44KtDQor44Kq44K144OALOODkuODreOCtw0KK+OCquOCtuODryzjg5Ljg63jg58NCivjgqrjgrjjg54s44Oe44Kz44OIDQor44Kq44K444OeLOODnuOCteOCtw0KK+OCquODkOODqSzjg6bjg6rjgrMNCivjgqvjgqTjg4jjgqYs44K/44Kr44K3DQor44Kr44Kt44Kv44OpLOODnuOCteODpuOCrQ0KK+OCq+OCreODouODiCzjg4bjg4Tjg6QNCivjgqvjgq8s44Kz44Km44K4DQor44Kr44Ky44Ok44OeLOOCv+ODgOODkuOCtQ0KK+OCq+OCuOODiuOCrCzjg6bjgr/jgqsNCivjgqvjgrfjg54s44Oo44K344OS44KzDQor44Kr44K/44Kq44KrLOOCv+OCq+ODkuODrQ0KK+OCq+OCv+OCruODqizjg4rjg4TjgrMNCivjgqvjgr/jg6Tjg54s44Oe44OS44OIDQor44Kr44OJLOODpuODn+OCsw0KK+OCq+ODiOOCpizjg6rjg4TjgrMNCivjgqvjg4jjgqYs44Oq44On44KmDQor44Kr44OI44KmLOODleODnw0KK+OCq+ODiOOCpizjg6zjgqTjgrMNCivjgqvjg4jjgqYs44K544Of44OsDQor44Kr44OI44KmLOODkuODreOCtw0KK+OCq+ODiOOCpizjg4bjg4Tjg6QNCivjgqvjg4jjgqYs44K144OI44K3DQor44Kr44OI44KmLOODr+OCv+ODqw0KK+OCq+ODiOOCpizjgrPjgqbjgqTjg4Hjg63jgqYNCivjgqvjg4rjg6Ljg4gs44Ki44Kt44KzDQor44Kr44OK44OkLOOCt+ODs+ODpA0KK+OCq+ODjeOCsyzjg6jjgrfjgqvjgroNCivjgqvjg43jg6Ljg6os44Om44KmDQor44Kr44OvLOODqOOCt+OCq+OCug0KK+OCq+ODr+OCpCzjgrPjgqbjgrgNCivjgqvjg6/jgqQs44OP44Or44KzDQor44Kr44Ov44Kr44OfLOODnuOCteOCquODnw0KK+OCq+ODr+OCsOODgSzjg4HjgqvjgrMNCivjgqvjg6/jgrDjg4Es44K344Ol44Oz44K544KxDQor44Kr44Ov44Kw44OBLOODiOOCt+ODkuOCsw0KK+OCq+ODr+OCsOODgSzjg5Ljg63jgq0NCivjgqvjg6/jgrDjg4Es44K544K544OgDQor44Kr44Ov44K044Kk44K3LOOCv+OCq+ODpuOCrQ0KK+OCq+ODr+OCt+ODnizjgrTjg63jgqYNCivjgqvjg6/jg4os44K/44Kx44K3DQor44Kr44Ov44OO44OZLOODpuOCreOCsw0KK+OCq+ODs+ODjizjg6Tjgrnjg47jg5YNCivjgq3jgq/jg4Es44OO44K+44OfDQor44Kt44K3LOODrOOCpOOCsw0KK+OCreOCt+ODouODiCzjgr/jgrHjgrcNCivjgq3jgrfjg60s44Ok44K544K3DQor44Kt44K/44KqLOOCt+ODsw0KK+OCreOCv+ODj+ODnizjgr/jgrHjg47jg6oNCivjgq3jgr/jg6Djg6ks44Oo44K344OO44OqDQor44Kt44OJ44Kz44OtLOOCouODhOOCtw0KK+OCreODoOODqSzjgrPjgqbjgqTjg4ENCivjgq3jg6Djg6ks44Oe44Kz44OIDQor44Kt44Og44OpLOOCouOCpOOCsw0KK+OCreODquOCouOCsSzjgqjjgqTjgrXjgq8NCivjgq/jgq3jg6Ljg4gs44OI44K344KtDQor44Kv44OcLOOCr+ODi+ODpuOCrQ0KK+OCr+ODnOOCvyzjg57jg6bjg58NCivjgq/jg57jgq/jg6ks44Oq44KrDQor44Kv44Oe44OALOODpuOCpuOCueOCsQ0KK+OCr+ODnuODouODiCzjg5Ljg63jgqLjgq0NCivjgq/jg6Es44Oe44K144OS44OIDQor44Kv44Op44OkLOOCs+OCpuODmOOCpA0KK+OCr+ODquODr+OCrSzjg57jgq3jgrMNCivjgq/jg6/jg5Djg6ks44Om44Kr44OqDQor44K044KmLOODhuODq+OCqg0KK+OCs+OCpOOCsSzjgrXjg4jjg6sNCivjgrPjgqTjgrEs44Os44Kq44OKDQor44Kz44K144KrLOODoOODhOODnw0KK+OCs+OCpuODgCzjgqLjg6TjgrMNCivjgrPjgqws44Kz44Km44Kk44OBDQor44Kz44Kv44OcLOODouODouOCqA0KK+OCs+OCr+ODqSzjg6rjgqgNCivjgrPjgrQs44Oq44Ol44Km44K4DQor44Kz44K144KtLOODquODp+OCpuOCueOCsQ0KK+OCs+OCuOODnizjg5Ljg63jgrMNCivjgrPjg4fjg6ks44Kr44K644OIDQor44K044OI44KmLOODgOOCpOOCueOCsQ0KK+OCtOODiOOCpizjgrHjgqTjgrMNCivjgrTjg4jjgqYs44Kr44K644OO44OqDQor44Kz44OP44K/LOODgeODqOODnw0KK+OCs+ODkOODpOOCtyzjg4jjgqrjg6sNCivjgrPjg5Djg6Tjgrcs44OK44Ob44KzDQor44Kz44Oe44OE44OQ44OpLOODn+ODmw0KK+OCs+ODn+ODpCzjg4jjgq/jgrMNCivjgrPjg5/jg6Tjg54s44Oe44K144Oo44K3DQor44Kz44Ok44OK44KuLOOCt+ODs+ODpA0KK+OCs+ODpOODnizjgr/jgqvjgrMNCivjgrPjg7Pjg4ks44OO44OW44KrDQor44Kz44Oz44OOLOODjuODluODmw0KK+OCteOCpOODiOOCpizjg5Ljg63jg5Ljg4cNCivjgrXjgqTjg4jjgqYs44K344Ky44OrDQor44K144Kk44OI44KmLOOCseODs+OCpOODgQ0KK+OCteOCpOODiOOCpizjgrHjg7PjgrQNCivjgrXjgqTjg4jjgqYs44Ki44KkDQor44K144Kr44KkLOODquODp+OCpuOCueOCsQ0KK+OCteOCq+ODjizjg6bjgq3jgrMNCivjgrXjgqvjg6Ljg4gs44Ov44K/44OrDQor44K144Kr44Oi44OILOODgeOCq+ODqQ0KK+OCteOCr+ODqeOCpCzjg57jgrXjg5Xjg58NCivjgrXjgrXjgq0s44Oo44K344KzDQor44K144K144KtLOOCv+OCseODpuOCrQ0KK+OCteOCteOCrSzjg6bjgq3jgqoNCivjgrXjgrXjgq0s44K144KtDQor44K144K144KtLOODpOOCueODkuODrQ0KK+OCteOCteODjizjgqLjgqvjgq4NCivjgrXjg4Djg6Ljg4gs44Ky44Oz44Kz44KmDQor44K144OI44KmLOODkuODreOCrQ0KK+OCteODiOOCpizjg6bjgqbjgqTjg4Hjg60NCivjgrXjg4jjgqYs44K/44Kr44K3DQor44K144OI44KmLOOCv+OCq+ODkuODrQ0KK+OCteODiOOCpizjg4jjg6LjgrMNCivjgrXjg4rjg4As44Oe44K144Om44KtDQor44K144ON44K344KyLOODiOOCt+ODjuODlg0KK+OCteODjizjgqvjgrrjg5LjgrMNCivjgrfjgrLjg4jjg58s44K144OI44KzDQor44K344OO44OP44OpLOODouODquODkuOCsw0KK+OCt+ODkOOCq+ODryzjgrHjg7Pjgrjjg63jgqYNCivjgrfjg5Djg44s44Oq44On44KmDQor44K344Oe44OALOOCv+OCseOCtw0KK+OCt+ODnuODgCzjgr/jg4Tjg63jgqYNCivjgrfjg5/jgros44K/44Kr44KqDQor44K344Og44OpLOOCv+OCq+ODjuODqg0KK+OCt+ODoOODqSzjgr/jgrHjgrcNCivjgrfjg6Ljgqvjg68s44OI44Oi44OkDQor44K344Oi44OV44K4LOODjuODluODkuOCsw0KK+OCt+ODouODpOODnizjg5Ljg4fjgqvjgroNCivjgrfjg6fjgqYs44OS44Ot44Om44KtDQor44K344Op44KkLOODquOCqA0KK+OCt+ODqeOCrCzjgrPjgqbjgrgNCivjgrfjg6njgqvjg68s44Ok44K544KzDQor44K344Op44K5LOODn+ODpuOCrQ0KK+OCt+ODryzjgrHjg7PjgqTjg4ENCivjgrfjg7PjgrEs44OK44Kk44K344OzDQor44K344Oz44OJ44KmLOODiOODouOCq+OCug0KK+OCueOCrOODj+ODqSzjg5Ljg63jgqvjgroNCivjgrnjgq7jgqbjg4Es44K344On44Km44K/44Ot44KmDQor44K544Ku44Km44OpLOODgeOCouOCrQ0KK+OCueOCruOCteODryzjg6jjgqbjgrMNCivjgrnjgq7jg4/jg6ks44OS44Ot44OO44OWDQor44K544Ku44Oi44OILOODhuODq+ODpuOCrQ0KK+OCueOCruODpOODnizjgr/jg4Tjg6QNCivjgrnjgrrjgq0s44Oe44K144Om44KtDQor44K544K644KtLOOCt+ODs+OCpOODgQ0KK+OCueOCuuOCrSzjgr/jgqTjgrnjgrENCivjgrnjgrrjgq0s44Oe44Kz44OIDQor44K544K644KtLOODnuOCteODpA0KK+OCueOCuuOCrSzjg6rjg6Xjgqbjgr8NCivjgrnjgrrjgq0s44OO44Oq44KzDQor44K544K644KtLOODn+OCq+OCsw0KK+OCueODgCzjg6rjg7Pjg6QNCivjgrnjg4gs44OG44OE44OkDQor44K544Of44OALOOCouOCreODkuODrQ0KK+OCu+OCrSzjgqLjg4Tjg4rjg6oNCivjgrvjgq0s44Kr44K644KtDQor44K744Oz44OALOODpuOCreOCsw0KK+OCveODoeODn+ODpCzjg4HjgqgNCivjgr3jg6Qs44OS44Ot44KtDQor44OA44Kk44Oe44OrLOOCouOCreODqQ0KK+OCv+OCq+OCqizjg4/jg4rjgqgNCivjgr/jgqvjgq4s44Kr44OoDQor44K/44Kr44K244OvLOODgOODsw0KK+OCv+OCq+OCuyzjgrHjg7PjgrgNCivjgr/jgqvjg40s44K144OI44K3DQor44K/44Kr44OP44K3LOOCuOODpeODs+OCsw0KK+OCv+OCq+ODj+OCtyzjgr/jgqvjgrcNCivjgr/jgqvjg4/jgrcs44OS44Ot44OK44KqDQor44K/44Kr44OP44K3LOODkuODreODpuOCrQ0KK+OCv+OCq+ODj+OCtyzjg57jg4rjg5YNCivjgr/jgqvjg6Tjg54s44Om44Kt44KqDQor44K/44Kt44Km44OBLOODquOCqA0KK+OCv+OCreOCq+ODryzjgqLjgq3jg6kNCivjgr/jgq3jgrDjg4Es44Kx44Oz44K/44Ot44KmDQor44K/44Kt44K244OvLOOCteODiOOCtw0KK+OCv+OCreOCtuODryzjgrPjgqbjgrjjg63jgqYNCivjgr/jgq3jgrbjg68s44OB44OS44OtDQor44K/44Kt44K/LOOCouOCreODqQ0KK+OCv+OCsOODgSzjgrHjg7Pjgr/jg63jgqYNCivjgr/jgrHjgqQs44Kv44OL44KqDQor44K/44Kx44Km44OBLOOCt+ODs+OCtA0KK+OCv+OCseODgCzjg6bjgqbjgqTjg4Hjg60NCivjgr/jgrHjg4/jg6ks44Oo44Km44KzDQor44K/44OG44OOLOODiuOCquOCv+OCqw0KK+OCv+ODiuOCqyzjg4DjgqTjgrnjgrENCivjgr/jg4rjgqss44K544K544OgDQor44K/44OK44KrLOOCouOCreODqQ0KK+OCv+ODiuOCqyzjg4rjgqoNCivjgr/jg4rjgqss44K744Kk44K4DQor44K/44OK44KrLOODiOOCquODqw0KK+OCv+ODiuOCqyzjg4rjgqrjgrMNCivjgr/jg4rjgqss44Ko44Oq44KzDQor44K/44OK44KrLOODn+ODhOOCqA0KK+OCv+ODiuODmSzjgrfjg7PjgqTjg4Hjg63jgqYNCivjgr/jg4ss44OB44Kr44OoDQor44K/44OL44Kr44OvLOODqOOCt+ODhOOCsA0KK+OCv+ODi+ODiuOCqyzjg5Ljg63jgr/jgqsNCivjgr/jg4vjg6Ljg4gs44OB44K644OrDQor44K/44OM44OeLOODleODn+ODkuOCsw0KK+OCv+ODkOOCvyzjgrjjg6Xjg7MNCivjgr/jg5Djgr8s44KzDQor44K/44OQ44K/LOODqOOCpuOCueOCsQ0KK+OCv+ODkOOCvyzjgrHjgqTjgr/jg63jgqYNCivjgr/jg6Djg6ks44Kz44Km44Kk44OBDQor44K/44Or44KtLOODpuOCrQ0KK+OCv+ODs+OCuCzjgq3jg6jjg47jg6oNCivjg4Hjg5As44Kr44K644Om44KtDQor44OB44OQLOODkuODreOCq+OCug0KK+ODhOOCq+ODgCzjg6rjgqgNCivjg4Tjgq3jg6Ljg4gs44Ki44OE44K3DQor44OE44K4LOODkuODreOCtw0KK+ODhOODgCzjgq3jg5/jg5LjgrMNCivjg4Tjg4Hjg6Ljg4gs44K344Oz44K0DQor44OE44OE44OfLOODiOODouOCsw0KK+ODhOODhOODnyzjgrjjg6Xjg7PjgqTjg4ENCivjg4Tjg5zjgr8s44Oe44K144OkDQor44OG44KkLOODr+OCq+ODnw0KK+ODhuODqeOCq+ODiSzjg5/jg4TjgqLjgq0NCivjg5/jg47jgqbjg6ks44Oe44OK44OWDQor44OG44Or44KkLOODnuODqg0KK+ODieOCpCzjgrPjgqbjgr/jg63jgqYNCivjg4jjgqYs44Oe44Kt44KzDQor44OI44Km44Kr44Kk44Oq44OzLOODpuODnw0KK+ODieOCpuODoeODsyzjgqjjg4TjgrMNCivjg4jjgqbjgqvjgqQs44Kr44Kq44OqDQor44OI44Kv44OK44KsLOOCreODn+OCv+OCqw0KK+ODiOOCr+ODpOODnizjgr/jgqTjgqwNCivjg4jjgrfjg54s44Of44Ov44KzDQor44OJ44Km44OBLOODiOODouODpuOCrQ0KK+ODiOODjuOCpCzjgqLjgq3jgrMNCivjg4jjg47jg6Djg6ks44Oq44Ko44KzDQor44OI44Of44K/LOOCr+ODi+OCqg0KK+ODiOODouODjizjg5Ljg4fjgqvjgroNCivjg4jjg6rjgqQs44Oe44Oi44OrDQor44OK44Ks44KkLOODiOODouODjuODqg0KK+ODiuOCq+OCrOODryzjgqTjgq/jg54NCivjg4rjgqvjgqzjg68s44Oo44K344OO44OqDQor44OK44Kr44Ks44OvLOODgOOCpOOCueOCsQ0KK+ODiuOCq+OCtuODiCzjg6Ljg4jjg47jg5YNCivjg4rjgqvjgrfjg54s44OB44Kr44KzDQor44OK44Ks44K/LOODpuOCqw0KK+ODiuOCq+ODjizjgqvjg4oNCivjg4rjgqzjg44s44Oq44On44Km44K/DQor44OK44Ks44OOLOODquODp+OCpg0KK+ODiuOCq+ODoOODqSzjg6jjgqbjgrMNCivjg4rjgqvjg6Djg6ks44K144OI44K3DQor44OK44Kr44Og44OpLOOCv+OCseOCtw0KK+ODiuOCq+ODoOODqSzjg4bjg4Tjg6QNCivjg4rjgqvjg6Ljg6os44OI44Kv44KzDQor44OK44Kr44Ok44OeLOODiOODouODkuODrQ0KK+ODiuODq+OCuyzjgr/jgqvjgrcNCivjg4rjg7PjgrQs44Oe44K144KtDQor44OK44Oz44OQLOOCseODsw0KK+ODiuODs+ODkCzjgrPjgqbjgrgNCivjg4vjgqTjg58s44Kz44Km44OY44KkDQor44OL44K344KqLOODqOOCpuOCuA0KK+ODi+OCt+OCquOCqyzjgrfjg7PjgqTjg4ENCivjg4vjgrfjgqrjgqss44OI44Oi44KzDQor44OL44K344K144KrLOODnuODnw0KK+ODi+OCt+OCtuOCrSzjgr/jgq/jg54NCivjg4vjgrfjgrbjg68s44OK44Kq44KtDQor44OL44K344OOLOOCteODiOOCtw0KK+ODjOODnuOCv+OCrSzjg6Ljg4jjgq0NCivjg43jgq7jgrcs44Oq44KrDQor44ON44Ok44OeLOOCv+OCseOCtw0KK+ODjuODgCzjg4HjgqLjgq0NCivjg47jgrDjg4Es44OO44Oq44KzDQor44OO44Kw44OBLOODqOOCpuOCueOCsQ0KK+ODjuOCsOODgSzjgrHjgqTjgrgNCivjg47jgrDjg4Es44K344Oz44Kt44OBDQor44OO44K244KtLOODgOOCpOOCueOCsQ0KK+ODjuODgCzjg5Ljg63jgrMNCivjg47jg5zjg6os44Oo44K344OS44OtDQor44OO44Og44OpLOOCt+ODpeOCpuOCpOODgQ0KK+ODjuODoOODqSzjg5/jgrXjgrMNCivjg47jg6Djg6ks44Kx44Oz44K4DQor44OP44Ku44Ov44OpLOOCt+ODp+OCpuOCv+ODreOCpg0KK+ODj+OCt+OCsOODgSzjg4jjgrfjg5Ljg60NCivjg4/jgrfjg6Ljg4gs44K/44Kr44OV44OfDQor44Oe44KtLOOCq+OCuuODiA0KK+ODj+OCu+OCrOODryzjgr/jgrHjgqoNCivjg4/jgrvjgqzjg68s44Kq44K144OgDQor44OP44OALOOCouODpOOCsw0KK+ODj+ODg+ODiOODqizjg6bjgqbjgqTjg4ENCivjg4/jg4Pjg4jjg6os44Oe44Om44KzDQor44OQ44OQLOODnuOCteOCrQ0KK+ODkOODkCzjgrHjg7PjgrgNCivjg5Djg5As44K344Oz44Kk44OB44Ot44KmDQor44OQ44OQLOODquOCq+OCsw0KK+ODj+ODnuODgCzjgq/jg5/jgrMNCivjg4/jg57jg4As44OA44Kk44K4DQor44OP44Oe44OALOODquOCtQ0KK+ODj+ODnuODgCzjg5Xjg5/jg5Ljg60NCivjg4/jg57jg44s44Oe44K144Om44KtDQor44OP44Ok44K3LOOCouOCreODjuODqg0KK+ODkuOCsOODgSzjgrPjgqbjgq0NCivjg5LjgrXjg4Tjg40s44Oe44Kz44OIDQor44OS44K344OM44OeLOOCouODhOOCtw0KK+ODk+ODp+OCpuODieOCpizjg5Ljg63jgrMNCivjg5Ljg6njgqQs44Oe44K144Kr44K6DQor44OS44Op44Kq44KrLOODn+OCrQ0KK+ODkuODqeOCq+ODryzjg4jjg6Ljg5Ljg60NCivjg5Ljg6njgrXjg68s44K/44Kv44K4DQor44OS44Op44K344OeLOOCuOODreOCpg0KK+ODkuODqeOCvyzjg57jg5/jgrMNCivjg5Ljg6njg44s44Ok44Oo44KkDQor44OS44Or44OeLOODpuOCpuOCpOODgQ0KK+ODkuODreOCuyzjg5Ljg4fjgq0NCivjg5Ljg63jgrss44Kr44OE44Oo44K3DQor44OS44Ot44K/LOODkuODreOCtw0KK+ODleOCr+OCpCzjgqLjgrrjgrUNCivjg5Xjgq/jg4As44K/44Kr44K3DQor44OV44Kv44OQLOOCq+ODiuODoQ0KK+ODleOCr+ODoOODqSzjg6bjg5/jgrMNCivjg5Xjgq/jg6Ljg4gs44OA44Kk44K544KxDQor44OV44K444KkLOOCseODsw0KK+ODleOCuOOCpCzjg6bjgq0NCivjg5XjgrjjgqQs44Of44OvDQor44OV44K444Ko44OALOODkuOCteOCq+OCug0KK+ODleOCuOOCvyzjg5Ljg4fjgqvjgroNCivjg5Xjgrjjgr8s44Om44Kt44KzDQor44OV44K444OELOOCv+OCseOCtw0KK+ODleOCuOODjizjgr/jgqvjg5sNCivjg5Xjgrjjg6Ljg4gs44K144OI44KzDQor44OV44K444Ov44OpLOOCv+OCr+ODiA0KK+ODleOCuOODr+ODqSzjg6rjg4oNCivjg5Xjgrjjg6/jg6ks44Kv44OfDQor44OV44Or44Kr44OvLOODquODp+OCpg0KK+ODmyzjg57jgrXjg47jg6oNCivjg5vjgrfjg44s44Og44ON44OI44OiDQor44Ob44K944Kr44OvLOODhuODq+ODkuOCsw0KK+ODm+ODquOCq+ODryzjgrfjg6XjgqbjgrgNCivjg5vjg7PjgrTjgqYs44Oo44K344Ki44KtDQor44Oe44Ko44OALOOCouODhOOCtw0KK+ODnuOCquOCqyzjg4Tjg4jjg6ANCivjg57jgrnjg5bjg4Es44OE44Oo44K3DQor44Oe44K544Of44OELOOCreODp+OCpuODmOOCpA0KK+ODnuODhOOCpCzjgrHjg7Pjgr/jg63jgqYNCivjg57jg4Tjgqos44OS44OH44OO44OqDQor44Oe44OE44Kq44KrLOOCreODp+OCpuOCueOCsQ0KK+ODnuODhOOCquOCqyzjgrXjg4HjgrMNCivjg57jg4Tjg4As44Oq44On44KmDQor44Oe44OE44OQ44OpLOOCouOCreOCsw0KK+ODr+OCv+ODiuODmSzjg4DjgqTjgrnjgrENCivjg57jg4Tjg6Tjg54s44K/44Kx44K3DQor44Oe44OE44Ok44OeLOODn+ODhOODhuODqw0KK+ODnuODhOODpOODnizjg6jjgrfjgq0NCivjg57jg4jjg5As44OI44Oi44OS44OtDQor44Of44Km44OpLOODnuOCteOCrQ0KK+ODn+ODhOOCrizjgr/jgrHjgrcNCivjg5/jg4gs44K344Ol44Km44Kk44OBDQor44Of44OO44Km44OpLOODpOOCueODkuOCtQ0KK+ODn+ODpCzjgqLjgq3jg6kNCivjg5/jg6TjgrEs44OS44OH44Oe44K1DQor44Of44Ok44K344K/LOOCouOCpA0KK+ODn+ODpOOCt+OCvyzjg6bjgq3jgqoNCivjg5/jg6Tjgr8s44Ki44Kt44OS44OtDQor44Of44Ok44Oi44OILOOCv+ODhOODpA0KK+ODn+ODpOODouODiCzjgq/jg4vjgrMNCivjg5/jg6Tjg6Ljg4gs44Oe44K144OS44OtDQor44Og44Kv44OALOODiOODouOCouODqg0KK+ODoOOCt+OCqyzjg6bjgq3jgrMNCivjg6Djg4jjgqYs44Ki44Kt44OpDQor44Og44Op44Kr44OfLOODpuOCqw0KK+ODoOODqeOCq+ODnyzjgqvjg4rjgrMNCivjg6Djg6njgqvjg58s44K/44OE44OS44OtDQor44Og44Op44Kr44OfLOODkuODh+ODhOOCsA0KK+ODoOODqeOCv+ODiyzjg6Ljg4jjg5Ljg60NCivjg6Djg6njg57jg4Qs44Oe44K144KzDQor44Og44Op44Ok44OeLOODqOOCt+OCouOCrQ0KK+ODouODgeOCuuOCrSzjg4jjgrfjg5LjgrMNCivjg6Ljg6rjgrDjg4Es44Of44K144OIDQor44Oi44Oq44K/LOODnuODnw0KK+ODouODquODkOODpOOCtyzjgrPjgqbjg6HjgqQNCivjg6Ljg63jg4gs44OS44Ot44K/44OEDQor44Ok44Ko44Ks44K3LOODkuODh+ODpuOCrQ0KK+ODpOOCquODpOODnizjgrLjg7Pjgr8NCivjg6Tjgqzjg58s44Oo44K344OS44OtDQor44Ok44KuLOOCseOCpOOCuA0KK+ODpOOCsOODqSzjgrfjg7PjgrgNCivjg6TjgrnjgrPjg4Es44OO44Oc44OrDQor44Ok44K544OALOODpuOCpuOCueOCsQ0KK+ODpOOCueODgCzjg47jg6rjgrMNCivjg6Tjg57jgrDjg4Es44Om44Km44K544KxDQor44Ok44Oe44Kw44OBLOOCt+ODp+OCpuOCt+ODsw0KK+ODpOODnuODgCzjg6/jgqTjgrHjg7MNCivjg6Tjg57jg4As44Of44K644ObDQor44Ok44Oe44OALOOCouOCreODqQ0KK+ODpOODnuODn+ODgSzjgqvjg4Tjg6bjgq0NCivjg6Tjg57jg6Ljg4gs44K444Ol44Oz44KzDQor44Ok44Oe44Oi44OILOODkuODreODnw0KK+ODpuOCrSzjg57jg5/jgrMNCivjg6bjg5/jg5As44Kx44Kk44Kk44OBDQor44Om44OpLOOCseODs+OCpOODgQ0KK+ODqOOCs+OCueOCqyzjg4/jg6vjg47jg5YNCivjg6jjgrPjgr8s44Ki44KkDQor44Oo44Kz44Ok44OeLOOCouODpOOCsw0KK+ODqOOCt+OCquOCqyzjg4rjgqrjgrMNCivjg6jjgrfjgqrjgqss44Kr44K644OS44OtDQor44Oo44K344K244OvLOODpuOCpuOCsw0KK+ODqOOCt+ODgCzjg5/jg4Tjg6sNCivjg6jjgrfjg4As44Ki44Kr44OqDQor44Oo44K344OALOOCv+OCq+OCtw0KK+ODqOOCt+ODjizjgqvjgrrjg58NCivjg6jjgrfjg6Djg6ks44Om44Km44KzDQor44Oq44Ol44KmLOOCqOOCpOOCuA0KK+ODreOCryzjgqLjgq3jgrMNCivjgrXjgqvjg6Ljg4gs44Kx44Kk44KzDQor44Ov44K/44OK44OZLOODrOOCpOODig0KK+ODr+OCv+ODiuODmSzjg6bjg5XjgrMNCivjg6/jgr/jg4rjg5ks44Om44KmDQor44Ov44K/44OK44OZLOOCv+OCq+OCsw0KK+ODr+OCv+ODiuODmSzjg6Tjg6jjgqQNCivjg6/jg6njg5Ms44OS44Ot44OO44OqDQor44OO44K244OvLOODpuOCpuOCsw0KK+OCr+ODnCzjg6TjgrnjgrMNCivjg6jjgrfjg6Ljg4gs44KzDQor44Ok44Oe44Oi44OILOOCv+OCq+OCtw0KK+ODpOODnuODouODiCzjgr/jgqvjgrcNCivjg5Ljg63jgrXjg68s44Oq44KoDQor44Of44OS44OpLOODquODp+OCpuODmOOCpA0KK+OCquOCquODjizjg5Ljg63jg6bjgq0NCivjgqrjg4As44Kr44K644OS44KzDQor44Kq44Kq44OQ44K/44KxLOODn+ODm+OCsw0KK+OCq+ODieOCqCzjgqLjgqQNCivjg4vjgrfjg4As44OI44Oo44OS44OtDQor44Oe44OE44Oi44OILOODqOOCt+OCouOCrQ0KK+ODn+OCruOCvyzjg57jg4oNCivjg5/jg6Tjg6Ljg6os44Of44KqDQor44Ok44Oe44K344K/LOODnuODieOCqw0KK+ODpOODnuODgCzjgrfjg7PjgrQNCivjg47jg6rjg4jjg58s44OB44KoDQor44Kk44Kx44OALOODpuOCpuOCueOCsQ0KK+ODouODquOCvyzjg6rjg6fjgqbjgrgNCivjgr/jgrHjgqbjg4Es44Oq44On44KmDQor44Of44K/LOODqOOCt+ODjuODqg0KK+OCpOODjOOCpCzjgrHjg7MNCivjg4jjgqYs44OO44Oq44Om44KtDQor44Oe44Kt44OOLOODnuODqg0KK+ODiuODhOODoSzjgrfjg7Pjg6QNCivjgqrjg47jg4fjg6ks44Kv44OL44OS44OtDQor44Kq44Kq44K/LOODn+OCreOCsw0KK+OCpuODq+OCt+OCteOCsyzjg6rjg4TjgrMNCivjgrXjgqvjgq3jg5Djg6ks44K344Ky44OO44OqDQor44Ki44Kq44KtLOOCqOOCpOOCueOCsQ0KK+OCouOCquOCrSzjg4rjgqrjg4gNCivjgqLjgqrjgq0s44Om44Km44KzDQor44Ki44Kr44Ks44OvLOODouODiOOCsw0KK+OCouOCq+ODhOOCqyzjgqvjgrrjg5Ljg4gNCivjgqLjgqvjg5vjg6os44Kx44Kk44K444Ot44KmDQor44Ki44Kt44Ok44OeLOOCq+OCuuODkuODrQ0KK+OCouOCteOCpCzjg4bjg6vjg58NCivjgqLjgrXjgqQs44K344Oz44Oa44KkDQor44Ki44K144Kq44KrLOOCseODs+OCuA0KK+OCouOCteODjOODnizjgqLjg6QNCivjgqLjgr0s44OK44Kq44OV44OfDQor44Ki44K/44KxLOODiOOCt+OCrQ0KK+OCouODgOODgSzjgrfjg7PjgrQNCivjgqLjg5ks44K/44Kr44Of44OBDQor44Ki44OZLOODjuODluODpOOCuQ0KK+OCouODmSzjg6bjgq3jgqgNCivjgqLjg6njgqQs44OE44Oo44K3DQor44Ki44Oq44OeLOODiOODouOCsw0KK+OCpOOCpOOCuuOCqyzjg4DjgqTjgrnjgrENCivjgqTjgqzjg6njgrcs44Om44K/44KrDQor44Kk44Kx44OALOOCs+OCuuOCqA0KK+OCpOOCseODgCzjgrHjg7Pjgr/jg63jgqYNCivjgqTjgrHjg4/jgr8s44OS44Ot44KtDQor44Kk44K244OvLOODgeODj+ODqw0KK+OCpOOCt+OCpCzjg6TjgrnjgrcNCivjgqTjgrfjgqvjg68s44Oq44On44Km44KzDQor44Kk44K344Kw44OtLOOCouOCreODkuODrQ0KK+OCpOOCt+ODgCzjgrPjgqbjgr/jg63jgqYNCivjgqTjgrfjg4As44K/44OE44KqDQor44Kk44K344OQ44K3LOODiOOCt+ODpuOCrQ0KK+OCpOOCt+ODj+ODqSzjgr/jgqvjg5Ljg60NCivjgqTjgrfjg6Ljg4gs44Oe44Om44KzDQor44Kk44K944OP44K/LOOCouOCteOCsw0KK+OCpOOCv+ODnyzjgr/jgqvjgqLjgq0NCivjgqTjg4Hjgqvjg68s44OK44Or44K/44KrDQor44Kk44OD44K344KtLOOCv+ODhOODpA0KK+OCpOODhyzjg4rjg6vjg58NCivjgqTjg4cs44Kz44Km44K4DQor44Kk44OI44KmLOODnuODpuODnw0KK+OCpOODiOOCpizjgrjjg6Xjg7Pjg5rjgqQNCivjgqTjg4jjgqYs44Oe44K144KqDQor44Kk44OI44KmLOODiuODhOOCsw0KK+OCpOODiOOCpizjg57jgqQNCivjgqTjg47jgqbjgqgs44Oe44Kz44OIDQor44Kk44OO44Km44KoLOODqOOCpuOCueOCsQ0KK+OCpOODjuOCpuOCqCzjg4rjgqrjgq0NCivjgqTjg47jgqbjgqgs44Kr44OE44KtDQor44Kk44OO44Kv44OBLOODjuODquODpuOCrQ0KK+OCpOODnuOCpCzjg6rjg5sNCivjgqTjg57jgq3jg6Xjgqbjg6zjgqQs44Os44Kk44KzDQor44Kk44Oe44K844KtLOOCr+ODn+OCsw0KK+OCpOODnuODoOODqSzjg57jgrnjg58NCivjgqTjg57jg6Djg6ks44Kx44Oz44Kk44OB44OtDQor44Kk44Ov44KkLOOCteODiOODqw0KK+OCpOODr+OCpCzjgr/jgqvjgrcNCivjgqTjg6/jgrXjgq0s44OI44Oi44KzDQor44Kk44Ov44K7LOOCueOCueODoA0KK+OCpOODr+OCvyzjgrPjgqbjgrgNCivjgqTjg6/jg4cs44Kx44Oz44K/44Ot44KmDQor44Kk44Ov44Og44OpLOODnuOCteODkuODiA0KK+OCpuOCqOODgCzjg5Xjg5/jgqoNCivjgqbjgqjjg44s44Oe44K144OV44OfDQor44Km44Ko44OOLOOCt+ODs+OCuA0KK+OCpuOCq+OCpCzjg5Ljg63jgq0NCivjgqbjgrXjg58s44Oe44Oq44KzDQor44Km44OB44Km44OfLOODquOCqOOCsw0KK+OCpuODgeODpOODnizjg57jgrXjg5Xjg58NCivjgqbjg6njg4/jg6ks44K/44Kk44K4DQor44Ko44KuLOOCv+OCq+ODkuOCsw0KK+OCqOOCuOODqizjg5Ljg63jgrcNCivjgqjjg47jgq3jg4ks44Oo44Oq44KzDQor44Ko44Oi44OqLOOCpOODhOOCrQ0KK+OCqOODs+ODiSzjg4/jgrjjg6ENCivjgqrjgqrjgqQs44OK44OE44KzDQor44Kq44Kq44Kk44KxLOODiOODouOCq+OCug0KK+OCquODleODqSzjg4DjgqTjgrnjgrENCivjgqrjgqrjgqvjg68s44Oo44K344KzDQor44Kq44Kt44K/LOODpuOCreODjuODqg0KK+OCquOCquOCteODryzjg57jgrXjg6bjgq0NCivjgqrjgqrjgr8s44OI44Oi44KzDQor44Kq44Kq44K/LOOCouOCreODiuOCqg0KK+OCquOCquOCvyzjg6jjgqbjg5jjgqQNCivjgqrjgqrjgr/jg4ss44K/44Kr44Ki44KtDQor44Kq44Kq44K/44OLLOODpuOCreODkuODhw0KK+OCquOCquODhOOCqyzjg6Ljg4jjgqQNCivjgqrjgqrjg4Tjgqss44Oo44K344OO44OqDQor44Kq44Kq44OE44KrLOODgOOCpOOCuOODreOCpg0KK+OCquOCquODhOOCrSzjgrXjg4jjg6sNCivjgqrjg4ks44K/44Kv44OfDQor44Kq44OI44Oz44OZLOOCv+ODhOODpA0KK+OCquODjizjg57jgrXjg5LjgrMNCivjgqrjg44s44OS44Ot44K3DQor44Kq44Kq44OP44K3LOOCv+ODhOODpA0KK+OCquOCquODj+OCvyzjgqLjgq3jg6kNCivjgqrjgqrjg5/jg4Es44Of44ObDQor44Kq44Kq44Ok44OeLOODn+OCreODkuODiA0KK+OCquOCq+OCtuOCrSzjgr/jg4Tjg5Xjg58NCivjgqrjgqvjgrjjg54s44Of44OK44KzDQor44Kq44Kr44OALOOCq+OCuuODkuODrQ0KK+OCquOCq+ODgCzjgr/jgq/jg54NCivjgqrjgqvjg6Ljg4gs44K/44Kx44K3DQor44Kq44Kr44Oi44OILOODgOOCpOOCueOCsQ0KK+OCquOCrOODryzjgrjjg6Xjg7MNCivjgqrjgq7jgr8s44OI44K344OV44OfDQor44Kq44Kv44Kv44OcLOOCv+OCq+OCtw0KK+OCquODgeOCouOCpCzjg4jjg6Ljg47jg6oNCivjgqrjg57jgr8s44Kx44OzDQor44Kr44K1LOODpuOCreOCsw0KK+OCq+OCt+ODryzjg4DjgqTjgrnjgrENCivjgqvjg4jjgqYs44Kz44Km44OY44KkDQor44Kr44OI44KmLOOCv+ODgOOCtw0KK+OCq+ODiuOCpCzjgrHjg7PjgqTjg4ENCivjgqvjg4rjg6Tjg54s44OA44Kk44K544KxDQor44Kr44ON44KzLOODleODn+ODpA0KK+OCq+ODjeODhOOCrSzjgrjjg6Xjg7Pjg6QNCivjgqvjg43jg57jg6ss44Ki44K644K1DQor44Kr44OZ44Km44OBLOODiuOCquODiA0KK+OCq+ODn+ODoOODqSzjgqvjgqrjg6oNCivjgqvjg5/jg6Qs44K144OB44KzDQor44Kr44Of44OkLOOCs+OCpuOCpOODgeODreOCpg0KK+OCq+ODr+OCpCzjg6bjg5/jgrMNCivjgqvjg6/jgqQs44OS44Ot44K3DQor44Kr44Ov44Kr44OfLOODqeOCpA0KK+OCq+ODr+OCteOCrSzjg6Tjgrnjg5Ljg60NCivjgqvjg6/jgrXjgq0s44OG44OE44Ki44KtDQor44Kr44Ov44K144KtLOODkuODreOCrQ0KK+OCq+ODr+OCt+ODnizjgr/jgqvjgqoNCivjgqvjg6/jgr8s44Kx44Kk44Kk44OBDQor44Kr44Ov44Oe44K/LOOCs+OCpuOCvw0KK+OCq+ODr+ODouODiCzjgrHjgqTjgrnjgrENCivjgq3jgrfjg6Ljg4gs44Ki44Kt44Oo44K3DQor44Kt44K344OtLOOCseOCpOOCvw0KK+OCreODgCzjgqjjgqTjgrnjgrENCivjgq3jgr/jgqrjgqss44K444Ol44OzDQor44Kt44K/44OOLOODnuOCteODkuOCsw0KK+OCreOCv+ODj+ODqSzjgr3jgqbjg5jjgqQNCivjgq3jgr/jg6Djg6ks44K/44Ot44KmDQor44Kt44K/44Oi44OILOODn+ODmw0KK+OCreODoOODqSzjgr/jgrHjg5Ljg60NCivjgq3jg6Djg6ks44OV44Of44OIDQor44Kt44Oi44OILOOCseOCpOOCsw0KK+OCreODsyzjg6jjgrfjg6bjgq0NCivjgq/jgrfjg6Tjg54s44Ki44Kt44OoDQor44Kv44OJ44KmLOODiOODouODjuODqg0KK+OCr+ODieOCpizjgrfjg6Xjg7PjgrnjgrENCivjgq/jg6Hjgqbjg4Es44Kx44Oz44K4DQor44Kv44Op44K344KyLOOCs+OCpuOCuA0KK+OCr+ODqeODgSzjgqvjgrrjg5Ljg60NCivjgq/jg6njg4rjgqss44K/44Kx44K3DQor44Kv44Oq44OP44OpLOODqOOCpuOCueOCsQ0KK+OCr+ODreOCrSzjg57jgrXjgq0NCivjgq/jg63jgrXjgqss44Oo44Km44KzDQor44Kv44Ov44OP44OpLOOCt+ODjg0KK+ODpuOCqCzjgqvjg4Tjg47jg6oNCivjgrPjgqTjgrrjg58s44K344Oz44OkDQor44Kz44Km44K444OeLOODqOOCt+ODkuOCsw0KK+OCs+OCpuODgCzjgqvjg4Tjg6bjgq0NCivjgrPjg7Pjg44s44Kx44Oz44Kk44OBDQor44Kz44KsLOOCt+ODp+OCpuOCpOODgQ0KK+OCs+OCrCzjgr/jgq/jgrgNCivjgrPjgq/jg5bjg7Ms44OB44Kr44KzDQor44Kz44K144KrLOOCouOCreOCsw0KK+OCs+ODg+ODhizjg57jgqTjgrMNCivjg4/jgr/jg4rjgqss44K/44Kr44K3DQor44Kz44OQ44Ok44K3LOODpuOCqw0KK+OCs+ODkOODpOOCtyzjg5Ljg4fjgq0NCivjgrPjg5Djg6Tjgrcs44Ki44Oz44OKDQor44Kz44OQ44Ok44K3LOODjuODquOCouOCrQ0KK+OCs+ODkOODpOOCtyzjgq3jg5/jg5LjgrMNCivjgrPjg57jg4Qs44K344Oz44K544KxDQor44Kz44Oe44OE44OQ44OpLOODleODnw0KK+OCs+ODoeODgOODiyzjg4bjg4Tjg63jgqYNCivjgrXjgqTjgq0s44Ki44OE44K3DQor44K144Kk44OI44KmLOOCseODs+OCpOODgQ0KK+OCteOCq+OCpCzjg5Ljg63jgqLjgq0NCivjgrXjgqvjgrDjg4Es44K/44Ot44KmDQor44K144Kv44OeLOODpuOCreOCsw0KK+OCteOCsyzjg57jg6QNCivjgrXjgrXjgqQs44OK44Kq44OkDQor44K144K144KqLOOCq+OCuuOCreODnw0KK+OCteOCteOCrSzjg4/jg4rjgrMNCivjgrXjgrXjgq0s44Oe44K144KqDQor44K144OI44KmLOOCq+ODhOODkuOCsw0KK+OCteODiOOCpizjgqvjgrrjg6bjgq0NCivjgrXjg4jjgqYs44OS44Ot44OS44OIDQor44K144OI44KmLOODnuOCteOCrQ0KK+OCteODiOOCpizjg5/jgq0NCivjgrXjg4jjgqYs44Oe44K144KzDQor44K144OI44KmLOODn+OCrQ0KK+OCteODiOOCpizjg47jg5bjg6bjgq0NCivjgrXjg4jjgqYs44Oq44On44Km44K144KvDQor44K144OOLOODnuOCteOCsw0KK+OCteODjizjg4rjgq7jgrUNCivjgrXjg4/jg6ks44K/44Kr44OV44OfDQor44K144Or44Ok44OeLOOCv+OCq+ODpuOCrQ0KK+OCteODr+OCsOODgSzjgqLjg6QNCivjgrfjgqQs44Ko44OfDQor44K344Kq44K244KtLOODkuODh+OCouOCrQ0KK+OCt+OCquODgCzjgqjjgqTjgrgNCivjgrfjgq0s44Oe44K144OrDQor44K344OALOODqOOCt+ODkuODrQ0KK+OCt+ODjuODj+ODqSzjg5Ljg4jjgrcNCivjgrfjg47jg4/jg6ks44OS44K144K3DQor44K344OW44K144OvLOODqOOCpuOCueOCsQ0KK+OCt+ODnuODgCzjg6rjg6Xjgqbjgr8NCivjgrfjg57jg4As44Of44Ob44KzDQor44K344Oe44OALOOCseODs+OCv+ODreOCpg0KK+OCt+ODn+OCuizjgr/jg4TjgqoNCivjgrfjg5/jgros44Ov44K/44OrDQor44K344Of44K6LOODiOODouOCsw0KK+OCt+ODn+OCuizjgrXjg4jjgrMNCivjgrfjg5/jgros44K444Ol44Oz44Kk44OBDQor44K344Of44K6LOOCuOODreOCpg0KK+OCt+ODoizjgq3jg4zjgqgNCivjgrfjg6Ljgrbjgq0s44K/44OE44OS44KzDQor44K344Oi44K444OeLOOCqOOCpOOCpOODgeODreOCpg0KK+OCt+ODouODhCzjgr/jgqvjg5Ljg60NCivjgrfjg6Ljg44s44Ki44Kt44OS44KzDQor44K344Oi44OkLOODqOODquOCsw0KK+OCt+ODqeOCuSzjgrfjg7PjgrQNCivjgrnjgq7jgqbjg6ks44Oe44K144OO44OWDQor44K544Ku44Km44OpLOODiOOCt+ODreOCpg0KK+OCueOCuuOCrSzjg4jjg6Ljg58NCivjgrnjgrrjgq0s44Ko44Oq44KzDQor44K544K644KtLOODpuOCpuOCueOCsQ0KK+OCueOCuuOCrSzjg6jjgrfjg47jg6oNCivjgrnjgrrjgq0s44Oo44K344KtDQor44K544OILOOCteODiOOCtw0KK+OCueODiuODgCzjgrXjg4jjgrcNCivjgrnjg6Tjg54s44OA44Kk44K544KxDQor44K744KqLOOCq+OCquODqg0KK+OCu+OCrSzjgrPjgqbjg5jjgqQNCivjgrvjgq3jg40s44Of44OE44OrDQor44K744Kt44OQLOODnuOCrQ0KK+OCu+ODiCzjgrHjgqTjgrgNCivjgrvjg7PjgrTjgq8s44OO44Oq44OS44K1DQor44K744Oz44OALOODpuOCpuOCsw0KK+OCu+ODs+ODkCzjg5/jgrrjg5sNCivjgr3jg6Hjg6Qs44Kx44Kk44K0DQor44K/44Kr44KuLOODkuODh+OCrQ0KK+OCv+OCq+OCrizjgqLjgqQNCivjgr/jgqvjgq4s44OO44Oq44Om44KtDQor44K/44Kr44K7LOODqOOCpuOCpOODgeODreOCpg0KK+OCv+OCq+ODgCzjg6jjgqbjgrnjgrENCivjgr/jgqvjg4/jgrcs44Ok44K544Om44KtDQor44K/44Kr44OP44K3LOODqOOCt+ODjuODqg0KK+OCv+OCq+ODj+OCtyzjgr/jgqvjg47jg6oNCivjgr/jgqvjg4/jgrcs44Oe44K144OIDQor44K/44Kr44OP44K3LOODn+OCqw0KK+OCv+OCq+ODj+OCtyzjg6Tjgrnjg5Ljg60NCivjgr/jgqvjg5/jgrbjg68s44Kz44K644KoDQor44K/44Kt44K244OvLOOCseOCpOOCvuOCpg0KK+OCv+OCsOODgSzjgq3jg6fjgqbjgrMNCivjgr/jgrHjgrfjgr8s44Kx44OzDQor44K/44Kx44OALOOCq+OCuuODng0KK+OCv+OCseODgCzjg6bjgqbjgrgNCivjgr/jgrHjg4As44Kz44Km44K4DQor44K/44Kx44OK44KrLOOCv+OCq+ODkuODrQ0KK+OCv+OCseODj+ODqSzjg5/jgq3jgrMNCivjgr/jgrHjg6Tjg54s44Of44OE44OrDQor44K/44K4LOODn+OCqw0KK+OCv+ODgCzjg6jjgrfjgr/jgqsNCivjg4Djg4Ys44Kv44Of44KzDQor44K/44OK44KrLOODgeOCq+ODleODnw0KK+OCv+ODiuOCqyzjg47jg6rjg5LjgrMNCivjgr/jg4rjgqss44K/44Kv44OK44KsDQor44K/44OK44KrLOOCv+OCq+ODpuOCrQ0KK+OCv+ODiuOCqyzjgr/jgqvjg6bjgq0NCivjgr/jg4vjgrDjg4Es44K/44Kr44OO44OqDQor44K/44OL44Kz44K3LOOCseODs+OCv+ODreOCpg0KK+OCv+ODi+ODjizjgr/jgqvjgqLjgq0NCivjgr/jg5bjgq0s44K/44Ot44KmDQor44K/44OW44OBLOODqOOCt+ODkuODiA0KK+OCv+ODnuOCquOCrSzjg57jgrXjg6jjgrcNCivjgr/jg57jgqzjg68s44OI44Oi44KzDQor44K/44Og44OpLOOCseOCpOOCsw0KK+OCv+ODoeODjuODqizjg6jjgqbjg5jjgqQNCivjgr/jg7Pjg44s44Ko44OqDQor44K/44Oz44OcLOOCouOCreODkuOCsw0KK+ODgeODgCzjgqvjg4Tjg5LjgrUNCivjg4Hjg43jg7Ms44Om44KtDQor44OE44Ks44ON44K244OvLOODjuODluODpuOCrQ0KK+ODhOOCq+ODj+ODqSzjg5/jgrrjg5sNCivjg4Tjg4Hjg6Qs44Oe44Om44OfDQor44OE44OB44OkLOODqOOCpuOCueOCsQ0KK+ODhOODgeODpCzjg6Tjgrnjg6bjgq0NCivjg4Tjgrrjgq0s44Oe44OfDQor44OE44K644Op44OP44OpLOOCteODgeOCsw0KK+ODhOODjeODqOOCtyzjg4bjg6vjg47jg5YNCivjg4Tjg5zjgqbjg4Es44Ki44Kt44OV44OfDQor44OE44Or44K344OeLOODquOCqA0KK+ODh+OCsOODgSzjgr/jgq/jg6QNCivjg4bjgrrjgqss44Of44OE44OO44OWDQor44OG44Op44Kr44OvLOOCv+OCq+OCtw0KK+ODhuODqeOCsOODgSzjg6Djg43jg47jg6oNCivjg4bjg6njgrfjg54s44Kx44Oz44K4DQor44OG44Op44OALOODqOOCt+OCrQ0KK+ODiOOCrOOCtyzjg4DjgqTjgrnjgrENCivjg4jjgq/jg6Djg6ks44Kz44Km44Kk44OBDQor44OI44K244OvLOODpuOCpuOCsw0KK+ODiOODk+OCquOCqyzjgr/jgrHjgrcNCivjg4jjg57jg6rjg44s44K444Ol44Oz44KzDQor44OI44Of44KkLOOCuOODpeODs+OCsw0KK+ODiOODn+OCtuODryzjgqLjg6QNCivjg4jjg5/jgr8s44K/44Kk44OBDQor44OI44Of44K/LOODpuOCpuOCvw0KK+ODiOODn+ODiuOCrCzjg6jjgqbjgrMNCivjg4jjg6jjg4As44K944Km44K/44Ot44KmDQor44OI44Op44K/44OLLOODnuOCteOCsw0KK+ODiuOCpOODiOOCpizjgr/jgqvjgqoNCivjg4rjgqzjgqQs44OB44KoDQor44OK44Ks44KkLOOCuOODpeODs+OCsw0KK+ODiuOCq+OCpOOCsSzjgrfjg7PjgrQNCivjg4rjgqvjgqbjgqgs44OA44Kk44K544KxDQor44OK44Ks44KqLOODquODp+OCpuOCsw0KK+ODiuOCq+OCs+OCuCzjgrXjg6TjgqsNCivjg4rjgqzjgrXjgqss44Kz44Km44K4DQor44OK44Kr44K444OeLOODpuOCreOCsw0KK+ODiuOCq+OCuOODnizjg57jg6oNCivjg4rjgqzjgr8s44Kr44OE44OkDQor44OK44Ks44K/LOOCouODhOODkuOCtQ0KK+ODiuOCrOOCvyzjg4rjgqrjgq0NCivjg4rjgqvjg4Tjg6ss44OS44Ot44Ki44KtDQor44OK44Ks44OOLOODpOOCueOCqg0KK+ODiuOCq+ODoOODqSzjgrXjg4jjg6sNCivjg4rjgqvjg6Djg6ks44OS44Ot44K3DQor44OK44Kr44Og44OpLOOCr+ODn+OCsw0KK+ODiuOCq+ODoOODqSzjg5Ljg63jgrcNCivjg4rjgqvjg6Djg6ks44Om44KrDQor44OK44Kr44Og44OpLOODnuOCteOCouOCrQ0KK+ODiuOCq+ODoOODqSzjgqjjgqTjgrgNCivjg4rjg4Tjg4/jg6ks44K144Ok44KrDQor44OK44Oq44K144OALOOCt+ODs+OCueOCsQ0KK+ODiuODs+ODlizjg47jg5bjg6bjgq0NCivjg4vjgqvjgqTjg4njgqYs44OI44Oi44OkDQor44OL44K3LOOCveOCpuOCpOODgeODreOCpg0KK+ODi+OCtyzjg4rjgqrjg6bjgq0NCivjg4vjgrfjgqos44OI44K344OkDQor44OL44K344Kr44OvLOOCseODs+OCuA0KK+ODi+OCt+OCr+ODqSzjgrXjg4jjgrMNCivjg4vjgrfjgrbjg68s44Kk44K144OgDQor44OL44K344K244OvLOOCqOODquODig0KK+ODi+OCt+ODgCzjgrfjg7PjgqTjg4ENCivjg4vjgrfjg4As44Oq44On44Km44OY44Kk44K/DQor44OL44K344Ok44OeLOODkuOCteODjuODqg0KK+ODjOODjuODpCzjgrfjgrLjgqoNCivjg4zjg57jgrbjgq0s44Om44Kt44KqDQor44OM44Oe44K/LOOCv+OCseOCtw0KK+ODjuODieODnyzjg6rjg4oNCivjg47jg58s44Oe44K144KtDQor44OO44Kw44OBLOOCq+OCuuODqOOCtw0KK+ODjuOCuOODnizjg4bjg6vjgqLjgq0NCivjg47jgrjjg6os44OI44K344Om44KtDQor44OO44OALOODn+OCreOCsw0KK+ODjuODgCzjg6bjgq3jgrMNCivjg47jg6Djg6ks44K344Oz44OY44KkDQor44OO44Og44OpLOOCq+OCuuOCqA0KK+ODjuODoOODqSzjgqvjgrrjgqoNCivjg4/jgrPjgrfjg54s44Ov44K/44OrDQor44OP44K344Oi44OILOODquODp+OCpg0KK+ODj+OCt+ODouODiCzjgrHjgqQNCivjg4/jgrvjgqzjg68s44Kx44Oz44K/44Ot44KmDQor44OP44K/44Kx44Ok44OeLOODpuODleOCsw0KK+ODj+ODg+OCvyzjg6bjg5INCivjg4/jg4Pjg4jjg6os44K144OI44OfDQor44OP44OK44KkLOOCv+OCseODj+ODqw0KK+ODj+ODiuODgCzjgrHjgqTjgrnjgrENCivjg4/jg57jgrDjg4Es44Kx44OzDQor44OP44Oe44OALOODnuODiuODnw0KK+ODj+ODnuODgCzjgrHjgqTjgrMNCivjg4/jg57jg44s44K/44Kr44Om44KtDQor44OP44Ok44Kr44OvLOODpuOCrQ0KK+ODj+ODpOOCtyzjg4bjg4TjgqoNCivjg4/jg6Tjgrcs44OI44Oi44OK44KsDQor44OP44Ok44K3LOOCseODs+OCv+ODreOCpg0KK+ODj+ODqSzjg4HjgqvjgrMNCivjg4/jg6ks44Ok44K544Ki44KtDQor44OP44Op44OALOODn+OCqA0KK+ODkuOCqOOCq+OCvyzjgrXjg4jjgrMNCivjg5LjgqzjgrUs44Ki44OE44K3DQor44OS44Ks44OfLOOCu+OCpOOCuA0KK+ODkuOCreODjizjg4bjg4TjgrgNCivjg5Ljg4As44K/44Kr44K3DQor44OS44OA44KrLOOCt+ODsw0KK+ODkuODh+OCt+ODnizjg5/jgq3jgrMNCivjgrXjgqvjgqQs44K444Ol44Oz44OkDQor44OS44Op44KkLOODj+ODpOODiA0KK+ODkuODqeOCpOODryzjgqjjg4TjgrMNCivjg5Ljg6njgr8s44OS44OH44KtDQor44OS44Op44OQ44Ok44K3LOODiuOCquODpuOCrQ0KK+ODkuODreOCuyzjgqLjg6TjgrMNCivjg5Xjgqvjgqos44Of44Om44KtDQor44OV44Kv44KkLOODkuODh+ODkuOCsw0KK+ODleOCr+OCtuOCrSzjg5/jg6zjgqQNCivjg5Xjgq/jg4As44Oo44Km44OY44KkDQor44OV44Kv44OALOODpOOCueODkuODrQ0KK+ODleOCr+ODgCzjg57jgrXjg6sNCivjg5Xjgq/jg4As44K444Ol44Oz44Kk44OBDQor44OV44Kv44OP44OpLOODpuOCreOCsw0KK+ODleOCr+ODoOODrSzjg5Ljg63jg5Xjg58NCivjg5Xjgrjjgqbjg6ks44Ki44OkDQor44OV44K444Kq44KrLOOCs+OCpuOCpOODgeODreOCpg0KK+ODleOCuOOCquOCqyzjg57jg6QNCivjg5Xjgrjjgr8s44K344Ky44OrDQor44OV44K444Oi44OILOODpuOCq+ODqg0KK+ODleOCuOODouODiCzjgqjjg6rjgrMNCivjg5Xjgrjjg6/jg6ks44Ki44Kt44OS44OtDQor44OV44K/44Og44OsLOOCpOOCteOCqg0KK+ODleODq+OCteODryzjgqTjg4Hjg63jgqYNCivjg5Xjg6vjgr8s44OS44K144KqDQor44OV44Or44OkLOODkuODh+OCqg0KK+ODm+OCs+ODqSzjg57jg4TjgqoNCivjg5vjgrfjg44s44K544Of44KqDQor44Ob44K344OOLOOCv+ODouODhA0KK+ODm+OCveODjizjg5Ljg63jg5/jg4ENCivjg5vjg6os44OI44K3DQor44Ob44Oq44Km44OBLOOCqOODhOOCqg0KK+ODm+ODquOCquOCqyzjg6TjgrnjgqoNCivjg5vjg6rjgrDjg4Es44K444Ol44Oz44Kk44OBDQor44Ob44Oz44OeLOOCpOOCteOCqg0KK+ODnuOCqOOCq+ODryzjg4jjg6Ljg6bjgq0NCivjg57jgqjjgrjjg54s44Kz44Km44K4DQor44Oe44Ko44OALOODiOOCt+ODkuODrQ0KK+ODnuOCqOODj+ODqSzjg4jjgrfjg5LjgrMNCivjg57jgq0s44K344Ky44OO44OqDQor44Oe44Kt44OOLOOCv+OCseOCqg0KK+ODnuOCueOCpCzjg5Ljg63jgrcNCivjg57jgrnjg4As44Kt44Oo44K3DQor44Oe44K544OALOODnuOCteODn+ODhA0KK+ODnuODhOOCpCzjgqvjg7PjgrgNCivjgq/jg57jgqzjgqQs44Kr44OE44OS44KzDQor44Kr44ON44KzLOODquODp+OCpuOCuA0KK+OCs+ODn+ODpCzjg47jg5zjg6sNCivjgrPjgqzjgqTjg4gs44Of44OB44KzDQor44Kr44Oz44OQ44Ok44K3LOODhuODq+ODnuOCtQ0KK+OCreODjuOCt+OCvyzjg4/jg6vjg5LjgrMNCivjgq3jgq/jg4Es44Of44OO44OrDQor44Kz44Oe44OQLOODpuOCv+OCqw0KK+OCs+OCr+ODlizjg5/jg4TjgrMNCivjgrPjg5Djg6Tjgrcs44OS44Ot44K3DQor44Kz44OQ44Ok44K3LOODhuODq+OCqg0KK+OCreODhOOCv+OCqyzjg4Hjg6XjgqbjgrHjg7MNCivjg57jg4Tjgqos44K/44Kr44Om44KtDQor44Kr44Ov44KkLOODnuODiuODlg0KK+OCr+ODquODj+ODqSzjg4jjgqrjg6sNCivjgqvjg4njg44s44OS44Ot44Oo44K3DQor44Kr44Of44Kv44OcLOOCseODs+OCuA0KK+OCq+ODr+OCsOODgSzjgr/jgqvjgrcNCivjgqvjg57jgr8s44Oe44K144Oi44OIDQor44Kr44Oz44OALOOCq+OCuuODnw0KK+OCq+ODs+ODgCzjg5/jg4TjgqoNCivjgrPjgrfjg6Djg6ks44OI44K344Om44KtDQor44Oe44OE44KqLOOCreODqOOCtw0KK+OCr+OCteOCrSzjgrjjg6Xjg7PjgrgNCivjgqvjg6Ljg4/jg6ks44Oe44K144OV44OfDQor44Kr44K144K444OeLOODiOOCt+ODnuOCtQ0KK+ODnuODhOOCrSzjg6jjgrfjgqvjgroNCivjgqvjg5/jgq/jg6ks44OE44ON44KqDQor44Kv44Oq44OP44OpLOODjuODluOCouOCrQ0KK+ODiuOCq+ODgSzjgq3jg6jjgrcNCivjgqvjgqzjg68s44K344Oz44Kk44OBDQor44Kz44OQ44Ok44K3LOOCu+OCpOOCuA0KK+OCq+ODs+ODjizjg4jjgrfjgqoNCivjg57jg4Tjgrfjgr8s44OV44Of44KqDQor44Kr44K344Ov44OALOOCquOCteODoA0KK+OCs+ODs+ODjizjgqvjgrrjgqoNCivjgrPjgrnjgq4s44Oo44K344OfDQor44Kz44Oi44OqLOODiOOCt+ODreOCpg0KK+OCq+ODr+ODjizjg6bjgq3jgqoNCivjgq3jgr/jg6Djg6ks44K/44Kx44OS44KzDQor44Kr44K444OeLOODhuODhOODpA0KK+OCq+ODiOOCpizjg5Ljg4fjgqoNCivjgrPjg6Tjg44s44Om44Kt44KqDQor44Kr44OE44Oe44K/LOODiOOCt+OCq+OCug0KK+OCr+ODr+ODgCzjgrHjgqTjgrgNCivjgrPjgr/jg4ss44Ok44Oe44OIDQor44Kr44K444Km44OBLOODjuODluOCsw0KK+OCs+ODs+ODiSzjgr/jgqvjgrcNCivjgrPjg7Pjg4ks44Oo44K344Kr44K6DQor44Oe44OE44OK44OfLOOCt+ODs+ODpA0KK+OCq+OCrOODpOODnizjg57jgrXjg4/jg6sNCivjgqvjg43jgrMs44Ok44K544OS44KzDQor44Kz44Ok44OeLOODpOOCueODj+ODqw0KK+OCreODhOOCq+ODryzjgrPjgqbjgrvjgqQNCivjgqvjgrfjgq/jg6ks44Kr44Oz44K4DQor44Kv44Ot44KtLOODqOOCt+ODpuOCrQ0KK+OCs+OCpOOCuuODnyzjgrfjg6Xjgqbjg5jjgqQNCivjgq/jgrws44Of44Kt44KqDQor44Kr44Ov44Kr44OfLOOCseOCpOOCsw0KK+OCq+ODnyzjgrXjg4HjgqoNCivjgq3jg6Djg6ks44OI44Kq44OrDQor44Oe44OE44OOLOOCq+OCuuODkuOCtQ0KK+OCreOCr+OCvyzjgqrjgrXjg6ANCivjgq/jg57jg4As44Oe44K144Ki44KtDQor44Kv44OL44OP44OpLOOCt+ODpeODs+OCpOODgQ0KK+OCs+OCuOODnizjg6bjgr/jgqsNCivjgq/jg6rjg4/jg6ks44Oe44K144OO44OqDQor44Oo44ON44Kv44OpLOODqOOCt+OCv+ODnw0KK+OCs+ODkOODpOOCtyzjg4Tjg43jgqoNCivjgrPjg5Djg6Tjgrcs44OG44OE44KqDQor44Kz44K444On44KmLOOCteODiuOCqA0KK+OCreODoOODqSzjgrjjg6Xjg7PjgqTjg4ENCivjgrPjg5Djg6Tjgrcs44Oe44K144Ki44KtDQor44Kz44Oz44OJLOODjuODluOCq+OCug0KK+OCq+ODr+OCpCzjg4jjgrfjgqvjg4QNCivjgq/jg57jg4/jg6ks44Kx44Oz44K4DQor44Kt44K7LOODn+ODgeODpOOCuQ0KK+OCq+OCt+OCr+ODnizjgrHjg7Pjgr7jgqYNCivjgqvjgrMs44K444Ol44Oz44Kk44OBDQor44Kk44K344Ks44KkLOODqOOCt+OCouOCrQ0KK+OCq+ODn+OCsOODgSzjgr/jg4DjgrcNCivjgq/jg6Ljg4As44OI44K344KqDQor44Kz44Oe44OELOOCt+ODp+OCpuOCpOODgQ0KK+OCq+ODjeODgCzjg5/jg4TjgqoNCivjgq3jgq/jg4Es44Oo44K344OS44K1DQor44Kz44K/44OLLOODqOOCt+ODpuOCrQ0KK+OCs+ODkOODpOOCtyzjg6Tjgrnjg4gNCivjgqvjg6/jgrDjg4Es44Oo44K344KqDQor44Kr44ON44KzLOODkuODreOCouOCrQ0KK+OCq+ODoizjg6jjgrfjgqLjgq0NCivjgqvjg6/jg6Djg6ks44Ko44Kk44K4DQor44Kv44Oe44OOLOODnuOCteODpuOCrQ0KK+OCs+ODkOODpOOCtyzjg6jjgrfjgqgNCivjgq3jg6Djg6ks44Kr44K644OS44K1DQor44Kt44K344Oi44OILOODkuODreODkuOCtQ0KK+OCreODoOODqSzjgq3jgrfjgqoNCivjgqvjg5/jgrDjg4Es44OG44OE44OkDQor44Kt44Og44OpLOODnuOCteODj+ODgQ0KK+OCs+ODkOODpOOCtyzjgrfjg6Xjg7PjgrgNCivjgqvjg4njgq/jg6ks44Kr44OK44KzDQor44Kt44K/44Og44OpLOODkuODh+ODqA0KK+OCq+ODhOOCrSzjg5LjgrXjgrcNCivjgqvjg7Pjgrbjgq0s44Oe44K144OO44OWDQor44Kr44K/44Ku44OqLOOCpOOCr+ODnw0KK+OCs+ODkOODpOOCtyzjg47jg5bjgrMNCivjgrPjg57jg4Tjgrbjgq0s44Kz44Km44K+44KmDQor44Kt44K/LOODkuODreODjuODqg0KK+OCq+ODhOODj+ODqSzjgrfjg6XjgqYNCivjgrPjgrDjg6ws44Ki44Kt44KoDQor44Kz44K444OeLOOCouODhOOCtw0KK+OCs+ODoeODgCzjg5LjgrXjgrcNCivjgrPjg4vjgrcs44Kx44Oz44Kk44OBDQor44Kv44Ov44OP44OpLOODpOOCueODnuOCtQ0KK+OCs+ODpOODnizjg5Ljg4fjgqLjgq0NCivjg57jg4Tjg6Ljg4gs44OO44Oq44Om44KtDQor44Kr44K444Oi44OILOODqOOCt+OCouOCrQ0KK+OCr+ODnuOCtuODryzjgqvjg4Tjg58NCivjgq3jg6Djg6ks44OI44K344KqDQor44Kz44OQ44K344Ks44OvLOODkuODiOOCtw0KK+OCq+ODn+ODpCzjg6bjgqYNCivjg57jg4Tjg6Ljg4gs44K344On44Km44K4DQor44Kz44OP44K3LOOCqOOCpOOCvuOCpg0KK+OCs+ODgOODnizjgrzjg7PjgqTjg4ENCivjgqvjg6/jgqvjg58s44Kr44K644OfDQor44Oe44OE44Oi44OILOODj+ODq+OCqg0KK+OCq+OCpOODiSzjg5/jg5sNCivjgq3jg6Djg6ks44OI44K344KqDQor44Kv44K0LOOCreODqOODnw0KK+ODnuODhOODouODiCzjg6jjgrfjg6bjgq0NCivjg57jg4Tjg6Tjg54s44Oq44On44Km44K544KxDQor44Oe44Or44Ok44OeLOOCteODgeOCsw0KK+OCs+ODs+ODjizjgq3jg6jjgrcNCivjgq/jg63jgq0s44K444Ol44OzDQor44Kz44Of44OkLOODquODp+OCpuOCsw0KK+OCreODoOODqSzjg4rjgqrjg6bjgq0NCivjgq3jg44s44Of44KiDQor44Kz44Oe44OELOODpuOCrQ0KK+OCq+ODjeODgeOCqyzjg6rjg6fjgqbjgrnjgrENCivjgqvjg4rjgr/jg4ss44Oq44KoDQor44Kz44OQ44Ok44K3LOODqOOCt+ODreOCpg0KK+OCreOCv+ODpOODnizjgqvjg4rjgrMNCivjgqvjgrgs44OS44Ot44KzDQor44Kr44Ov44K344OeLOODiuOCquOCrQ0KK+OCreODoOODqSzjg57jgq3jgrMNCivjgrPjg5Djg6ks44K/44Kv44OeDQor44Kt44K/44Ks44OvLOODiuOCquOCv+OCqw0KK+ODnuODq+ODpOODnizjg4rjg5vjgrMNCivjgqvjg6Ljg7Ms44Oe44K144K3DQor44Of44Km44OpLOOCv+OCq+OCtw0KK+ODn+OCt+ODnizjgqvjg4Tjg5Ljg60NCivjg5/jgrnjgq4s44OI44Oi44Ki44KtDQor44Of44K644K/LOOCuOODpeODs+OCsw0KK+ODn+OCuuODouODiCzjg4rjg6vjgq0NCivjg5/jgr7jgrDjg4Es44Oe44K144KzDQor44Of44K644KrLOODpuOCv+OCqw0KK+ODn+ODiuODnyzjgr/jgrHjg6sNCivjg5/jg4rjg5/jgr/jg4ss44Oe44K144OIDQor44Of44ON44K/LOODpuOCreOCsw0KK+ODn+ODpOOCpCzjgrPjgqbjgr8NCivjg5/jg6Tjgqrjgqss44Kx44Oz44Ot44KmDQor44Of44Ok44K244KtLOODnuODpuODnw0KK+ODn+ODpOOCtuOCrSzjgrjjg6Xjg6oNCivjg5/jg6Tjg4/jg6ks44K/44OE44OS44KzDQor44Of44Oo44K3LOOCouOCreODjuODlg0KK+ODoOODqeOCq+ODnyzjg57jgrXjg5Ljg4cNCivjg6Djg6njgq0s44Ki44OE44KzDQor44Og44Op44K/LOOCseODs+OCuA0KK+ODoOODqeOCvyzjg5/jg4Hjg6QNCivjg6Djg6njgr8s44Oh44Kw44OfDQor44Og44Op44Ok44OeLOODnuOCteOCsw0KK+ODouODiOODjizjg6Tjgrnjg57jgrUNCivjg6Ljg6os44OI44K344Om44KtDQor44Oi44OqLOODiuOCqg0KK+ODouODquOCvyzjg5Ljg4fjg4jjg6INCivjg6Ljg6rjgr8s44Oq44KoDQor44Oi44Oq44Ok44OeLOOCouODhOOCtw0KK+ODouODquODpOODnizjgqvjgqrjg6oNCivjg6Tjgrbjg68s44Kr44K644KzDQor44Ok44K444OeLOODiOODouODkuODrQ0KK+ODpOODiuOCruODgCzjgqjjg6rjgrMNCivjg6Tjg57jgqzjgr8s44Kx44Kk44Kk44OBDQor44Ok44Oe44Kr44OvLOOCt+ODs+ODpA0KK+ODpOODnuOCsOODgSzjgrXjg4jjg58NCivjg6Tjg57jgrDjg4Es44Om44KtDQor44Ok44Oe44Kw44OBLOOCv+ODgOODpuOCrQ0KK+ODpOODnuOCteOCrSzjg57jgrXjgq0NCivjg6Tjg57jgrbjgq0s44Kx44OzDQor44Ok44Oe44K344K/LOOCt+ODpeOCr+ODmw0KK+ODpOODnuODgCzjg6jjgrfjgqLjgq0NCivjg6Tjg57jg4As44Kx44Oz44Kk44OBDQor44Ok44Oe44OALOOCt+ODpeODsw0KK+ODpOODnuODiuOCqyzjg57jgrXjgrcNCivjg6Tjg57jg40s44K344Oz44K0DQor44Ok44Oe44Oi44OILOODpOOCueODjuODqg0KK+ODpOODnuODouODiCzjgqvjgrrjg5Ljg60NCivjg6Tjg57jg6Ljg4gs44OS44OH44Om44KtDQor44Om44Kr44OvLOOCteODiOOCtw0KK+ODpuOCtizjgqLjgq3jgrMNCivjg6bjgr/jg4ss44Oq44KoDQor44Om44K/44OLLOODgOOCpOOCueOCsQ0KK+ODqOOCtCzjg4jjg6Ljg47jg6oNCivjg6jjgrPjg5zjg6os44Oe44K144K/44KxDQor44Oo44K344Kq44KrLOOCv+ODgOOCouOCrQ0KK+ODqOOCt+OCq+ODryzjg5Ljg63jg58NCivjg6jjgrfjg4As44OS44Ot44K/44KrDQor44Oo44K344OALOOCreODp+OCpuOCsw0KK+ODqOOCt+ODouODiCzjg6Ljg4jjgqoNCivjg6jjg43jg4As44Om44Of44KzDQor44Ov44Kr44K144OkLOOCt+OCuuOCqw0KK+ODr+OCv+ODiuODmSzjgrjjg6Xjg7PjgqTjg4Hjg60NCivjg6/jgr/jg4rjg5ks44Ok44K544OS44OtDQor44Of44OE44Ok44OeLOODnuOCteODnw0KK+ODkuODqeOCquOCqyzjg6rjgrUNCivjgqvjg7Pjg44s44Kr44OE44OIDQor44Ov44KzLOODquOCqA0KK+OCouOCquOCrSzjg6/jgr/jg6sNCivjgqLjgqvjgqos44Oe44K144OO44OqDQor44Ki44Kr44KuLOODquODp+OCpuODmOOCpA0KK+OCouOCq+OCtyzjg5Ljg63jgrMNCivjgqLjgqvjg4Tjgqss44Ok44K544Om44KtDQor44Ki44Kr44OP44ONLOODkuODreOCouOCrQ0KK+OCouOCq+ODm+ODqizjg6bjgqbjgrMNCivjgqLjgq3jg6Ljg4gs44OB44KoDQor44Ki44Kt44Ok44OeLOODn+ODmw0KK+OCouOCteOCpCzjg57jgrXjgqvjgroNCivjgqLjgrXjg44s44Ok44K544OS44OtDQor44Ki44K144OSLOOCouOCteOCsw0KK+OCouOCteODmSzjgqvjg6gNCivjgqLjg4/jg6zjg7Ms44OA44Kk44K544KxDQor44Ki44OZLOODiOOCt+ODkuOCsw0KK+OCouODmSzjgqvjgqrjg6sNCivjgqLjg5ks44OS44Ot44OV44OfDQor44Ki44Oe44OOLOODnuOCteODnw0KK+OCouODoeODouODqizjgqLjg6rjgrUNCivjgqLjg6njgqQs44OS44OH44KqDQor44Ki44Op44KkLOOCqOODhOOCsw0KK+OCouODqeOCpCzjgqvjg4Tjg5Ljg60NCivjgqLjg6njgr/jg4ss44K144OE44KtDQor44Ki44Oq44OK44KrLOODiOODouODkuODrQ0KK+OCpOOCpOOCtCzjg47jg6rjgqLjgq0NCivjgqTjgqTjg4As44Oe44Om44OfDQor44Kk44Kx44OALOODqOOCt+OCv+OCqw0KK+OCpOOCs+OCrCzjgqjjg5/jgrMNCivjgqTjgrfjgqQs44Kr44Kq44OqDQor44Kk44K344Kq44KrLOOCv+OCq+OCtw0KK+OCpOOCt+OCtuOCqyzjg6bjgq3jgqgNCivjgqTjgrfjgrjjg54s44Of44KqDQor44Kk44K344OALOODpuOCpA0KK+OCpOOCt+ODiSzjg6bjgq3jgrMNCivjgqTjgrfjg44s44K/44Kr44KqDQor44Kk44K344Oe44OW44K3LOOCouOCreODkuODiA0KK+OCpOOCu+ODqizjgqrjg4jjg5LjgrMNCivjgqTjgr3jg5ks44OP44Or44KrDQor44Kk44K/44OLLOOCv+OCq+OCouOCrQ0KK+OCpOOCuuODjizjg5/jg4Tjg5Ljg60NCivjgqTjg4fjg44s44Oo44Km44OY44KkDQor44Kk44OI44KmLOODqOOCpuOCsw0KK+OCpOODiOOCpizjg5/jg4Tjgr/jgqsNCivjgqTjg4jjgqYs44Oo44K344Ki44KtDQor44Kk44OI44KmLOODpuOCq+ODqg0KK+OCpOODiOOCpizjg57jg4oNCivjgqTjg4jjgqYs44K/44Kx44K3DQor44Kk44OI44Ok44OeLOOCouODhOOCtw0KK+OCpOODiizjgqLjgq3jg6kNCivjgqTjg4rjgrXjgq0s44Ok44K544OO44OqDQor44Kk44OK44OQLOODqOOCpuOCueOCsQ0KK+OCpOODiuODkCzjgr/jg4DjgrcNCivjgqTjg47jgqbjgqgs44K/44Kx44K3DQor44Kk44OO44Km44KoLOODjuODluOCv+OCqw0KK+OCpOODjuOCpuOCqCzjg57jg6rjgrMNCivjgqTjg5ks44Kt44On44Km44KzDQor44Kk44Oe44KkLOODpuOCreOCqA0KK+OCpOODnuOCquOCqyzjgrfjg6Xjgqbjg5jjgqQNCivjgqTjg57jg6Djg6ks44Oe44K144K3DQor44Kk44Ov44K/LOOCv+OCseODkuODrQ0KK+OCpOODr+OCvyzjg6jjgrfjg5Ljg60NCivjgqTjg6/jgr8s44Kq44K144OgDQor44Kk44Ov44OfLOODpuOCpuOCsw0KK+OCpOODr+ODouODiCzjgrHjg7PjgqTjg4Hjg60NCivjgqbjgqjjg4As44Os44Kk44KzDQor44Km44Ko44OOLOOCteODqQ0KK+OCpuOCqOODj+ODqSzjgr/jgqvjg47jg6oNCivjgqbjgqvjgqQs44OS44K144OK44KsDQor44Km44OA44Ks44OvLOODpuOCpuOCpOODgQ0KK+OCpuODgeODpOODnizjg5Ljg63jg57jgrUNCivjgqbjg4Tjg58s44OS44Ot44Om44KtDQor44Km44OE44OfLOODnuODquOCsw0KK+OCpuODjizjg57jgrPjg4gNCivjgqjjgqzjgrfjg6ks44K344Ol44Oz44K544KxDQor44Ko44OI44KmLOODkuODreOCrQ0KK+OCqOODiOODnyzjg5Ljg4fjg58NCivjgqjjg7Pjg4ks44Oh44Kw44OfDQor44Ko44Oz44OJLOODkuODreOCrQ0KK+OCquOCq+ODiSzjgr/jgqvjg5LjgrUNCivjgqrjgqrjgq/jg6ks44OS44Ot44KzDQor44Kq44Kq44K144KrLOOCv+ODhuOCrQ0KK+OCquOCquOCteOCqyzjgrPjgqbjgr/jg63jgqYNCivjgqrjgqrjgrXjg68s44K144OBDQor44Kq44Kq44K544OfLOOCteODiOOCsw0KK+OCquOCvyzjg4HjgqjjgrMNCivjgqrjgqrjgr/jg4ss44Oe44Kz44OIDQor44Kq44Kq44OL44K3LOODnuOCteODkuODrQ0KK+OCquOCquODi+OCtyzjg5/jg4Tjg6sNCivjgqrjgqrjg4vjgrcs44Og44K144K3DQor44Kq44Kq44OL44K3LOODnuOCteOCqg0KK+OCquOCquODjizjg4rjg5vjgrMNCivjgqrjgqrjg44s44Of44Kr44KzDQor44Kq44OOLOODqOOCpuOCsw0KK+OCquODnuODhCzjg6jjgqbjgrnjgrENCivjgqrjg6Djg6ks44OI44Oi44KzDQor44Kq44Kq44OkLOODpuOCreOCqA0KK+OCquOCqyzjg47jg6rjg5Ljg4gNCivjgqrjgqvjgqQs44Kx44Oz44Kk44OBDQor44Kq44Kr44Km44OBLOODiOODouODjuODqg0KK+OCquOCq+ODgCzjg6bjgqbjgq0NCivjgqrjgqvjg4As44Oe44Oq44KzDQor44Kq44Kr44OOLOODpOOCueODleODnw0KK+OCquOCq+ODoOODqSzjgqLjgqvjg6oNCivjgqrjgqvjg6Ljg4gs44K944KmDQor44Kq44Ks44OvLOOCpOOCuuODnw0KK+OCquOCrOODryzjgrPjgrrjgqgNCivjgqrjgqzjg68s44Kt44Oz44OkDQor44Kq44Ks44OvLOODn+ODgeOCsw0KK+OCquOCrOODryzjgr/jgq/jg6QNCivjgqrjgqzjg68s44Om44Of44KzDQor44Kq44Ku44OOLOOCqOODquOCsw0KK+OCquOCryzjgrXjg6TjgqsNCivjgqrjgq/jgqvjg68s44OS44Ot44Ki44KtDQor44Kq44Kv44OALOOCouOCreOCqg0KK+OCquOCr+ODoOODqSzjgrXjg4jjgrMNCivjgqrjgrbjgq0s44K/44Kr44Om44KtDQor44Kq44K444OeLOOCv+OCq+OCtw0KK+OCquOCvOOCrSzjgrHjgqTjgqTjg4ENCivjgqrjg4As44OS44Ot44Om44KtDQor44Kq44OALOOCouODhOOCsw0KK+OCquODgeOCouOCpCzjg4rjgqrjgq0NCivjgqrjg4jjgqzjg68s44Oq44On44Km44KzDQor44Kq44OOLOODn+OCuuOCrQ0KK+OCquOCquODj+ODqSzjgrHjgqTjgrMNCivjgqvjgqTjgrjjg54s44Kx44Oz44K/DQor44Kr44Ks44OvLOODiOODouODn+ODhA0KK+OCq+OCreOCqizjgr/jgqvjg6QNCivjgqvjgrHjg5Is44OI44Oi44OfDQor44Kr44K144KkLOODiuOCquOCsw0KK+OCq+OCteODnyzjg6jjgrfjg5Xjg58NCivjgqvjgrjjgr8s44Kx44Kk44Kk44OBDQor44Kr44K444K/44OLLOODnuOCteODiuODqg0KK+OCq+OCt+ODnizjg6Tjgrnjg5Ljg60NCivjgqvjgrfjg54s44Om44Km44KzDQor44Kr44K444Oi44OILOOCouODpOOCsw0KK+OCq+OCueOCrCzjgrXjg4rjgrMNCivjgqvjgrss44Os44Kk44KzDQor44Kr44K/44Ku44OqLOOCq+OCuuOCt+OCsg0KK+OCq+OCv+ODpOODnizjg6rjg6fjgqbjgrMNCivjgqvjgr/jg6Tjg54s44Om44Km44K4DQor44Kr44OI44KmLOODkuODiOOCtw0KK+OCq+ODiOOCpizjgq/jg4vjgqLjgq0NCivjgqvjg4jjgqYs44Kx44Oz44Kk44OB44OtDQor44Kr44OK44K244OvLOODkuODreOCq+OCug0KK+OCq+ODjeODn+ODhCzjg4jjg6Ljg47jg6oNCivjgqvjg47jgqYs44Om44Kt44KoDQor44Kr44Oe44K/LOODkuODreOCv+OCqw0KK+OCq+ODn+OCtuOCrSzjg57jgrXjg4jjgrcNCivjgqvjg58s44Oo44Km44Kk44OBDQor44Kr44Oh44K/44KrLOOCv+OCpOOCueOCsQ0KK+OCq+ODoizjgrHjg7Pjg6QNCivjgqvjg6/jgqQs44OI44Oi44Kr44K6DQor44Kr44Ov44KkLOOCuOODpeODqg0KK+OCq+ODr+OCq+ODnyzjgr/jgqvjgrcNCivjgqvjg6/jgqvjg58s44Of44KqDQor44Kr44Ov44Kw44OBLOOCouODpuODnw0KK+OCq+ODr+OCsOODgSzjgqvjgrrjg5Ljg4cNCivjgqvjg6/jgrDjg4Es44K144OI44K3DQor44Kr44Ov44K144KtLOOCuOODsw0KK+OCq+ODr+OCteOCrSzjg4rjgqrjgq0NCivjgqvjg6/jg4rjg58s44Ki44Kt44KzDQor44Kr44Ov44ONLOOCq+ODiuOCsw0KK+OCq+ODr+ODkOOCvyzjgqLjg6bjg58NCivjgqvjg6/jg6Djg6ks44Oi44KmDQor44Kr44Ov44Oi44OILOODpuOCpg0KK+OCq+ODs+ODgCzjg5/jg4njg6oNCivjgqvjg7Pjg4As44OK44Kq44K3DQor44Kr44Oz44OOLOODnuOCteOCsw0KK+OCreOCt+ODouODiCzjgrHjg7Pjgr/jg63jgqYNCivjgq3jgr/jgqzjg68s44K/44Kx44K3DQor44Kt44K/44OP44OpLOODiOODouODj+ODqw0KK+OCreOCv+ODoOODqSzjgrfjg6fjgqYNCivjgq3jgr/jg6Djg6ks44K344Oz44K0DQor44Kt44OM44OkLOODiOOCt+ODnw0KK+OCreODjuOCt+OCvyzjg4bjg4QNCivjgq3jg4/jg6ks44K/44OE44OkDQor44Kt44Og44OpLOODqOOCt+OCq+OCug0KK+OCreODoOODqSzjg57jgrXjg5Ljg60NCivjgq3jg6Djg6ks44Ki44Kt44Oo44K3DQor44Kt44Og44OpLOOCuOODpeODsw0KK+OCreODqOOCt+ODnizjg4/jg6vjg58NCivjgq3jg6jjgrrjgqss44Om44KtDQor44Kt44OpLOOCv+OCq+OCtw0KK+OCreODquOCteOCsyzjg4bjg4Pjg5rjgqQNCivjgq3jg7Ms44K144Om44OqDQor44Kt44OzLOODiuOCquOCsw0KK+OCr+ODi+OCqOODgCzjgqvjgrrjgqLjgq0NCivjgq/jg5ws44K044KmDQor44Kv44Oe44OOLOOCv+OCseODiA0KK+OCr+ODqeOCvyzjgqLjgq3jg5Ljg60NCivjgq/jg6njg4/jgrcs44K/44Kr44Ki44KtDQor44Kv44OsLOODiOOCquODqw0KK+OCr+ODreOCpCzjg6jjgrfjgr/jgqsNCivjgq/jg63jgq0s44Om44Km44KzDQor44Kv44Ov44OOLOODkuODreOCv+OCqw0KK+OCtOOCpizjgrXjgqgNCivjgrTjgqbjg4As44K/44Kx44OS44OtDQor44Kz44KsLOOCseOCpA0KK+OCs+OCr+OCt+ODp+OCpizjg4Tjg6jjgrcNCivjgrPjgrXjgqss44K344Ol44Km44Kk44OB44Ot44KmDQor44Kz44K444OeLOODquODp+OCpuOCueOCsQ0KK+OCs+OCvuODjizjgqLjgqTjg68NCivjgrPjg4Djg54s44Kk44Kv44KqDQor44Kz44OG44OpLOOCreODn+ODkuODrQ0KK+OCs+ODh+ODqSzjgrfjg7Pjgr/jg63jgqYNCivjgrTjg4jjgqYs44K/44OA44OO44OqDQor44K044OI44KmLOODkuODreOCsw0KK+OCs+ODi+OCtyzjg5/jgrXjgq0NCivjgrPjg4vjgrcs44Oo44Km44KzDQor44Kz44OL44K3LOODiOODouODpA0KK+OCs+ODkOODpOOCtyzjg4rjg4TjgrMNCivjgrPjg5Djg6Tjgrcs44Kz44Km44K4DQor44Kz44OQ44Ok44K3LOODgeOCqA0KK+OCs+ODkOODpOOCtyzjg4Tjg6jjgrcNCivjgrPjg5bjgrss44OS44OH44Om44KtDQor44Kz44Oe44KtLOODkuODreODiuOCqg0KK+OCs+ODnuOCtuODryzjgr/jgqvjg57jgrUNCivjgrPjg57jg4Tjg5Djg6ks44OI44Oi44OS44K1DQor44Kz44Ok44OeLOOCpOODgeODreOCpg0KK+OCs+ODs+ODiSzjg5Ljg63jgrMNCivjgrXjgqTjgq0s44Kr44Kq44OrDQor44K144KkLOOCq+OCuuODpA0KK+OCteOCpOODiOOCpizjgq3jg6fjgqbjgrMNCivjgrXjgqTjg4jjgqYs44Kz44Km44Kk44OBDQor44K144Kk44OI44KmLOODhuODq+ODkuOCtQ0KK+OCteOCpOODiOOCpizjg4/jgrjjg6ENCivjgrXjgqTjg4jjgqYs44OS44Ot44OfDQor44K144Kk44OI44KmLOODleODn+OCsw0KK+OCteOCpOODiOOCpizjg5Ljg4jjgrcNCivjgrXjgqTjg4jjgqYs44Oe44Kt44KzDQor44K144Kr44KkLOOCv+OCq+ODpuOCrQ0KK+OCteOCq+ODnyzjgr/jgqvjgrcNCivjgrXjgqvjg6Ljg4gs44Kz44Km44K4DQor44K144Kr44Oi44OILOODkuODh+OCrQ0KK+OCteOCq+ODouODiCzjg57jgrXjg6jjgrcNCivjgrXjgqvjg6Ljg4gs44OK44OK44KzDQor44K144Kr44Oi44OILOODqOOCpuOCpOODgeODreOCpg0KK+OCteOCr+ODqeOCpCzjgrXjg4Djg6jjgrcNCivjgrXjgq/jg6njgq4s44OK44Ob44KzDQor44K144K144KtLOODnuOCteOCrQ0KK+OCteOCteOCrSzjg6bjg5/jgqgNCivjgrXjg4jjgqYs44OV44Kv44K/44Ot44KmDQor44K144OI44KmLOOCt+ODpeOCpuOCteOCrw0KK+OCteODiOOCpizjgr/jgqvjgrcNCivjgrXjg4jjgqYs44Ki44KtDQor44K144OI44KmLOOCseODs+OCpOODgeODrQ0KK+OCteODiOOCpizjgqvjgrrjg5/jg4ENCivjgrXjg4jjgqYs44Om44OfDQor44K144OI44KmLOODquODp+OCpuOCueOCsQ0KK+OCteODjizjg4jjgqrjg6sNCivjgrXjg44s44Oq44On44Km44K544KxDQor44K144Ov44K144KtLOOCv+OCq+OCtw0KK+OCteODr+ODgCzjg5Ljg63jgrMNCivjgrXjg7Pjg5rjgqQs44K144OI44OrDQor44K344Kq44K644KrLOOCouODhOOCtw0KK+OCt+ODjizjgqvjgrrjg47jg6oNCivjgrfjg5Djgr8s44Kr44K644K/44KrDQor44K344OeLOOCuOODpeODsw0KK+OCt+ODnuODjizjg4jjgrfjgqLjgq0NCivjgrfjg5/jgros44Oo44K344KzDQor44K344Of44K6LOODnuODnw0KK+OCt+ODouOCq+ODryzjg6jjgrfjgqrjg58NCivjgrfjg6Ljg6Djg6ks44Ko44Kk44OWDQor44K344Ol44Kv44OqLOODnuODiuODnw0KK+OCt+ODp+OCpuOCuOODnizjgr/jg4TjgqoNCivjgrfjg6fjgqbjg4As44Kv44OfDQor44K344Op44Kk44K3LOODjuODquOCq+OCug0KK+OCt+ODqeOCq+OCvyzjgrjjg6Xjg7MNCivjgrfjg6njgrXjgq0s44Oi44Oi44KzDQor44K344Ot44K/LOODnuOCteODkuODrQ0KK+OCuOODs+OCsOOCpuOCuCzjgrfjgrLjgqvjgroNCivjgrfjg7Pjgr/jg4ss44Kx44Oz44K/DQor44K344Oz44OcLOODjuODluODpuOCrQ0KK+OCuOODs+ODnCzjg6Ljg4jjg4/jg6sNCivjgrfjg7Pjg6Djg6ks44OS44OH44OI44K3DQor44K544Ks44KkLOODhOODiOODoA0KK+OCueOCruODouODiCzjg5/jg5sNCivjgrnjgq7jg6Ljg6os44OS44Ot44KzDQor44K544Ku44Ok44OeLOOCv+OCq+ODjQ0KK+OCueOCruODpOODnizjgrjjg6Xjg7MNCivjgrnjgq7jg6Tjg54s44K/44Kv44OeDQor44K544K644KtLOOCreOCr+OCsw0KK+OCu+OCrOODryzjgrjjg6Xjg7MNCivjgrvjgq0s44Kx44Oz44K4DQor44K744Kt44ONLOODkuODreOCtw0KK+OCu+OCreODouODiCzjgqvjg4TjgqLjgq0NCivjgrvjg4gs44Ki44OE44K3DQor44K744OpLOOCq+OCuuODqOOCtw0KK+OCveODh+ODpOODnizjgr3jg6njgrMNCivjgr3jg47jgqQs44OG44Or44KoDQor44K/44Kk44OpLOODnuOCteOCtw0KK+OCv+OCq+OCrSzjg5/jg4Hjg6sNCivjgr/jgqvjg4/jgrcs44Os44KkDQor44K/44Kr44OP44K3LOODn+ODjeOCsw0KK+OCv+OCq+ODj+OCtyzjg4jjg6LjgqoNCivjgr/jgqvjg4/jg54s44Kz44Km44KtDQor44K/44Kr44Of44OkLOODgeODj+ODqw0KK+OCv+OCq+ODpOODiuOCrizjgqvjgrrjg5LjgrMNCivjgr/jgqvjg6Tjg54s44K144OI44K3DQor44K/44Kw44OBLOODr+OCv+ODqw0KK+OCv+OCseOCpuODgSzjgqLjg4TjgrcNCivjgr/jgrHjgrbjgq0s44Oe44Om44KzDQor44K/44Kx44K344K/LOOCteODiOODnw0KK+OCv+OCseODouODiCzjg5Ljg63jg4jjg6INCivjgr/jg4As44Ki44OE44KzDQor44K/44OB44Kr44OvLOODnuOCs+ODiA0KK+OCv+ODgeODkOODiizjg4rjgqrjg4gNCivjgr/jg4Tjgqzjg68s44OI44Oi44KzDQor44K/44OK44KrLOODpOOCueODjuODqg0KK+OCv+ODiuOCqyzjgqLjgq3jg6gNCivjgr/jg4rjgqss44Oe44K144K/44KrDQor44K/44OK44KrLOOCs+OCpuOCueOCsQ0KK+OCv+ODiuOCqyzjgrXjg4HjgqgNCivjgr/jg4rjgqss44K344On44Km44OY44KkDQor44K/44OK44OZLOODjuODquOCsw0KK+OCv+ODi+OCsOODgSzjgr/jgrHjgrcNCivjgr/jg4vjg6/jgq0s44OS44Ot44OV44OfDQor44K/44OQ44K/LOODqOOCt+ODkuOCtQ0KK+OCv+ODj+ODqSzjgrHjg7PjgrgNCivjgr/jg57jgq0s44OK44Kq44KzDQor44K/44Oe44Og44OpLOODnuOCs+ODiA0KK+OCv+ODq+ODnyzjg5Ljg63jg58NCivjgr/jg7Pjg5Djg6ks44Oq44On44Km44KzDQor44OB44Kr44OELOODhuODhOODkuOCsw0KK+ODgeODkCzjgqvjg5vjg6oNCivjg4Hjg6fjgqYs44Oq44On44Km44K/DQor44OE44Kr44OALOODhuODhOODpA0KK+ODhOOCq+ODouODiCzjgrXjg4HjgqsNCivjg4Tjgrjjg6Ljg4gs44Of44KtDQor44OE44OB44OALOOCseOCpOOCsw0KK+ODhOODgeODpCzjgr/jgqvjgqLjgq0NCivjg4Tjg4Hjg6Qs44OB44Kr44OpDQor44OE44OE44OfLOOCteODiOOCtw0KK+ODhOODnOOCr+ODqSzjgr/jgq/jg6QNCivjg4Tjg6Djg6ks44OI44Oi44KoDQor44OG44K344OeLOOCouOCreOCsw0KK+ODhuODqeOCteOCrSzjg57jgrXjg5Ljg4gNCivjg4bjg6njgrXjgq0s44Kv44OfDQor44OG44Op44OALOOCv+OCseODj+ODqw0KK+ODieOCpCzjg4jjg6LjgrMNCivjg4njgqQs44OO44OW44K/44KrDQor44OI44KmLOODkuODreOCsw0KK+ODiOOCreOCvyzjgrfjg7PjgqTjg4Hjg63jgqYNCivjg4jjgq3jg4gs44Oq44On44Km44K544KxDQor44OI44Kv44OALOOCqOODnw0KK+ODiOOCt+OCuuODnyzjg57jg5sNCivjg4jjg4As44K344Ol44Oz44K544KxDQor44OI44Oo44OALOODkuODreOCouOCrQ0KK+ODiuOCpOODiOOCpizjg6rjg6fjgqbjgr8NCivjg4rjgqvjgqQs44Oe44K144OI44K3DQor44OK44Kr44KqLOOCouOCreODkuOCsw0KK+ODiuOCrOOCqizjgqjjg6rjgrMNCivjg4rjgqvjgqzjg68s44OI44Oi44OfDQor44OK44Ks44K144KrLOODn+ODgeOCsw0KK+ODiuOCq+OCteOCqyzjg6Tjgrnjg5Ljg60NCivjg4rjgqzjgrXjgq0s44Om44Km44Kk44OB44OtDQor44OK44Kr44K244OvLOODpuOCpuODmOOCpA0KK+ODiuOCq+OCtuODryzjg6jjgqbjgrMNCivjg4rjgqvjgrfjg54s44Om44Km44OkDQor44OK44Kr44K444OeLOOCqOODn+OCsw0KK+ODiuOCq+OCt+ODnizjgqLjgq3jg5Ljg60NCivjg4rjgqvjgrjjg54s44K344Ol44Km44K/44Ot44KmDQor44OK44Kr44K444OeLOODquODp+OCpuOCueOCsQ0KK+ODiuOCq+ODgCzjgqvjg6jjgrMNCivjg4rjgqvjg4As44Ki44Ok44KzDQor44OK44Ks44OE44KrLOOCpOOCteOCqg0KK+ODiuOCq+ODiCzjgrfjg6XjgqbjgrgNCivjg4rjgqvjg4vjgrcs44Of44OJ44OqDQor44OK44Kr44OL44K3LOOCueOCueODoA0KK+ODiuOCq+ODi+OCtyzjgqTjgr/jg6sNCivjg4rjgqzjg57jg4Qs44Oe44K144OS44OtDQor44OK44Kr44Og44OpLOOCt+OCsuODiOOCtw0KK+ODiuOCq+ODoOODqSzjgq3jg6fjgqbjgrMNCivjg4rjgqvjg6Djg6ks44Ki44Ok44KzDQor44OK44Kr44Og44OpLOODnuODpg0KK+ODiuOCq+ODoOODqSzjgrHjgqTjgrMNCivjg4rjgqvjg6Djg6ks44OK44Kq44KzDQor44OK44Kr44Og44OpLOODkuODreOCq+OCug0KK+ODiuOCq+ODoOODqSzjgrXjg6TjgrMNCivjg4rjgqvjg6Ljg6os44OG44OE44OkDQor44OK44Kr44OkLOODpuOCpuOCuA0KK+ODiuOCq+ODpOODnizjgr/jgrHjgrcNCivjg4rjgrks44Kz44Km44K4DQor44OK44Oq44OI44OfLOOCt+ODs+OCv+ODreOCpg0KK+ODiuODs+ODlizjg4jjg6Ljg6QNCivjg4vjgqTjg58s44Ok44K544K/44KrDQor44OL44K344Kr44OvLOOCveODjuOCsw0KK+ODi+OCt+ODjizjg6bjgqsNCivjg4vjgrfjg6Tjg54s44K/44Kr44OS44OtDQor44OM44Kr44OALOODqOOCt+OCsw0KK+ODjOODnuOCvyzjg6bjgqbjgqTjg4ENCivjg4zjg57jgr8s44K144OI44K3DQor44OO44Ks44OfLOOCteODiOOCtw0KK+ODjuOCrizjgqLjg6TjgrMNCivjg47jgq/jgqos44Kr44Kq44OqDQor44OO44Kw44OBLOOCv+OCq+ODpuOCrQ0KK+ODjuOCtuOCrSzjg4rjg4Tjg40NCivjg47jgrgs44Om44KtDQor44OO44OeLOODrOOCpOOCsw0KK+ODjuODoOODqSzjg57jgrXjgqoNCivjg47jg6Djg6ks44Om44Km44Kk44OBDQor44OQ44Kz44K3LOOCt+ODs+OCtA0KK+ODj+OCt+ODouODiCzjg4rjgqrjgrMNCivjg4/jgrnjg4zjg54s44OB44KoDQor44OP44K7LOODqOOCpuOCpOODgQ0KK+ODj+OCu+OCrOODryzjg5Ljg63jgrcNCivjg4/jgr/jgqzjg68s44K444Ol44Oz44KzDQor44OP44K/44Kx44Ok44OeLOODpuOCpuOCsw0KK+ODj+OCv+ODjizjg6jjgqbjgrMNCivjg4/jg4rjgqQs44Oq44KrDQor44OP44Oe44K144KtLOODnuOCs+ODiA0KK+ODj+ODnuODgCzjg5Ljg63jgr/jgqsNCivjg4/jg57jg4cs44K/44Kr44K3DQor44OP44Ok44Kr44OvLOOCouOCrQ0KK+ODj+ODpOOCtyzjgqLjg6QNCivjg4/jg6Tjgrcs44K144OI44KzDQor44OP44Ok44K3LOOCteODiOOCtw0KK+ODj+ODpOOCtyzjgrjjg6Xjg7MNCivjg4/jg6Tjgrcs44Oo44Km44KzDQor44OP44Ok44K3LOOCueOCueODoA0KK+ODj+ODqSzjg4jjg6Ljg5LjgrUNCivjg4/jg6njgrfjg4os44OO44OW44KtDQor44OP44Op44OALOOCouODhOOCtw0KK+ODj+ODqeODgCzjg5/jg4njg6oNCivjg4/jg6vjg4os44K344Ol44Km44K544KxDQor44OS44Kt44K/LOODkuODh+ODiA0KK+ODkuODgOOCpCzjg57jg6bjg58NCivjg5Ljg6njgqQs44Kt44On44Km44KzDQor44OS44Op44KkLOODpuOCpuOCueOCsQ0KK+ODkuODqeOCpCzjgqjjg6rjgrMNCivjg5Ljg6njgqTjg68s44Kv44Of44KzDQor44OS44Op44KqLOODkuODh+OCq+OCug0KK+ODkuODqeOCq+ODryzjg57jgq0NCivjg5Ljg6njgr8s44Oo44K344Ki44KtDQor44OS44Op44Oe44OELOOCv+OCq+OCqg0KK+ODkuODreOCqCzjgqLjg4TjgrcNCivjg5Ljg63jgrss44OS44OH44OO44OqDQor44OV44Kr44K244OvLOODkuODh+ODpuOCrQ0KK+ODleOCq+ODm+ODqizjg47jg6rjg5Ljg60NCivjg5Xjgq/jgrfjg54s44Oe44Kt44KqDQor44OV44Kv44OALOODkuODreODpuOCrQ0KK+ODleOCr+ODgCzjg5Ljg63jg5Xjg58NCivjg5Xjgq/jg4As44K144Ok44KrDQor44OV44K444KkLOODquOCqOOCsw0KK+ODleOCuOOCq+ODryzjgqvjgrrjg58NCivjg5Xjgrjjgr8s44Kx44Oz44K4DQor44OV44K444K/LOODnuOCteOCqg0KK+ODleOCuOOCvyzjg6jjgrfjg63jgqYNCivjg5Xjgrjjg6Djg6ks44OI44Oi44Om44KtDQor44OV44K444Og44OpLOOCouOCreOCsw0KK+ODleOCuOODouODiCzjgrfjg6fjgqbjg5jjgqQNCivjg5Xjgrjjg6Ljg4gs44Oq44Ol44Km44OY44KkDQor44OV44K444Ov44OpLOOCseOCpOOCteOCrw0KK+ODleOCuOODr+ODqSzjgrXjg4jjgrcNCivjg5Xjgr/jgqvjgr8s44K444Ot44KmDQor44OV44OK44KkLOOCteODgeOCsw0KK+ODleODq+OCq+ODryzjg5Ljg63jgrMNCivjg5Xjg6vjgqvjg68s44K444Ol44Oz44Kk44OBDQor44OV44Or44Oe44K/LOODiOODouODpA0KK+ODm+OCtyzjg6bjgq0NCivjg5vjgrfjgqbjg6ks44OS44Ot44K3DQor44Ob44K344OtLOOCpOODhOODnw0KK+ODm+OCveODgCzjgrfjg6Xjg7PjgrQNCivjg5vjg6os44OO44OW44OS44OHDQor44Ob44OqLOODpuOCrQ0KK+ODm+ODquOCqCzjg47jg5bjg4gNCivjg5vjg6rjgrDjg4Es44OO44K+44OgDQor44Ob44Oz44OKLOOCq+OCquODqw0KK+ODm+ODs+ODnCzjg5Ljg63jg6bjgq0NCivjg57jgqjjgqvjg68s44Of44OvDQor44Oe44Ko44OALOOCs+OCueOCsQ0KK+ODnuOCqOODgCzjgr/jgqvjgrcNCivjg57jgqjjg4As44Ko44OE44KzDQor44Oe44Kt44Km44OBLOOCseOCpOOCuA0KK+ODnuOCreODjizjgrfjg6fjgqbjgrMNCivjg57jgq3jg6Ljg4gs44OI44Oi44OO44OqDQor44Oe44K144OI44Km44OfLOODnuOCpOOCsw0KK+ODnuOCueOCpCzjg6jjgqbjgrnjgrENCivjg57jgrnjg4As44Oe44K144Om44KtDQor44Oe44K544OALOODn+ODmw0KK+ODnuODhOOCpCzjg5/jgqoNCivjg57jg4Tjgqbjg6ks44Kr44K644OS44K1DQor44Oe44OE44Kq44KrLOOCouOCreODkuODrQ0KK+ODnuODhOOCquOCqyzjg4jjg6LjgrMNCivjg57jg4Tjgqrjgqss44Oe44Om44OfDQor44Oe44OE44Kq44KrLOODgOOCpOOCueOCsQ0KK+ODnuODhOOCq+OCsizjg5LjgrXjgqoNCivjg57jg4Tjgrfjgr8s44K144OI44K3DQor44Oe44OE44OK44KsLOODr+OCv+ODqw0KK+ODnuODhOODkOODqSzjg47jgr7jg58NCivjg57jg4Tjg5Djg6ks44Ki44Kt44KzDQor44Oe44OE44Oi44OILOODkuODreODn+ODhA0KK+ODnuODhOODouODiCzjg5vjgq/jg4gNCivjg57jg4Tjg6Tjg54s44Oe44Kk44KzDQor44Of44Km44OpLOODquODp+OCpg0KK+ODn+OCpuODqSzjgqLjg4TjgrcNCivjg5/jgqbjg6ks44Ki44OE44K3DQor44Of44Km44OpLOOCreODqOODnuOCtQ0KK+ODn+OCrSzjg6bjgqbjgrgNCivjg5/jgrrjgqvjg68s44OS44Ot44Om44KtDQor44Of44K644K/44OLLOODpuOCreOCsw0KK+ODn+OCuuODjizjg6bjgqbjgrvjgqQNCivjg5/jgr3jg44s44K/44OA44Oe44K1DQor44Of44K+44OP44K/LOODgeOCqA0KK+ODn+ODiuOCrOODryzjg57jg4HjgrMNCivjg5/jg4rjgqzjg68s44Ki44OkDQor44Of44OK44OfLOODkuODreODpuOCrQ0KK+ODn+ODiuODnyzjgr/jgqvjgrcNCivjg5/jg4rjg5/jgqvjgr8s44K/44Kr44OO44OWDQor44Of44OK44Of44Og44OpLOODkuODh+OCrQ0KK+ODn+ODj+ODqSzjg57jgrXjgq0NCivjg5/jg6Djg6ks44Of44Kt44KzDQor44Of44Ok44KkLOODjuODluOCouOCrQ0KK+ODn+ODpOOCtuOCrSzjgqLjg4TjgrcNCivjg5/jg6Tjgrbjg68s44OK44Kq44OkDQor44Of44Ok44K244OvLOOCouOCreODqQ0KK+ODn+ODpOODoOODqSzjgqvjgqrjg6oNCivjg5/jg6Tjg6Djg6ks44Ki44OkDQor44Of44Ok44Oi44OILOODpuOCpuODmOOCpA0KK+ODn+ODpOODouODiCzjg57jgrXjg6QNCivjg5/jg6jjgrcs44OE44Kr44K1DQor44Og44ON44Og44OpLOODgeOCq+ODleODnw0KK+ODoOODqeOCq+OCvyzjg4jjg6Ljg6bjgq0NCivjg6Djg6njgrrjg58s44Of44OE44OO44OqDQor44Og44Op44K/LOOCr+ODn+OCsw0KK+ODoOODqeOCvyzjg57jgq0NCivjg6Djg6njg6Ljg4gs44Kr44K644OO44OWDQor44Og44Op44Ok44OeLOODiuOCqg0KK+ODouODqizjg4rjgqrjgrMNCivjg6Ljg6os44Kr44OE44Oe44K1DQor44Oi44OqLOOCouODhOODkuOCsw0KK+ODouODqizjgq/jg5/jgrMNCivjg6Ljg6os44Of44KtDQor44Oi44Oq44Km44OBLOODjuODquOCsw0KK+ODouODquOCt+OCvyzjg6bjgqbjgqTjg4Hjg60NCivjg6Ljg6rjgr/jg4ss44Kr44K644OIDQor44Oi44Oq44Oi44OILOOCsuODsw0KK+ODouODquODpOODnizjgrPjgqbjgrgNCivjg6Ljg63jgqgs44OS44Ot44Kr44K6DQor44Ok44K0LOODn+ODjuODqw0KK+ODpOOCueOCrOOCrSzjg4jjg6Ljg5Xjg58NCivjg6Tjgrnjg4As44Ki44Ok44KzDQor44Ok44K544Oi44OILOOCouODhOOCtw0KK+ODpOODhOODiuODnyzjgqLjgq3jgqoNCivjg6Tjg4rjgq7jgrXjg68s44Kx44Kk44K544KxDQor44Ok44OK44Ku44OP44OpLOOCt+ODs+OCueOCsQ0KK+ODpOODluODiuOCqyzjgr/jgqTjgrcNCivjg6Tjg57jgqbjg4Es44K/44Kr44Om44KtDQor44Ok44Oe44Kq44KrLOOCv+ODgOOCtw0KK+ODpOODnuOCquOCqyzjg4rjgqrjg6QNCivjg6Tjg57jgqrjgq0s44OS44Ot44Om44KtDQor44Ok44Oe44Ks44K/LOODnuOCs+ODiA0KK+ODpOODnuOCsOODgSzjgrfjg7PjgqTjg4ENCivjg6Tjg57jgrDjg4Es44OS44Ot44KzDQor44Ok44Oe44K344K/LOODnuODieOCqw0KK+ODpOODnuOCt+OCvyzjg4HjgqgNCivjg6Tjg57jg4As44OB44KoDQor44Ok44Oe44OALOOCuOODpeODs+OCuA0KK+ODpOODnuODgCzjg47jg5bjgrMNCivjg6Tjg57jg4As44Ki44OkDQor44Ok44Oe44OALOODnuOCreOCsw0KK+ODpOODnuODiuOCqyzjg6HjgrDjg58NCivjg6Tjg57jg6Djg6ks44Kk44OD44K744KkDQor44Ok44Oe44Og44OtLOOCq+ODiuOCsw0KK+ODpOODnuODouODiCzjgrPjgqbjg5jjgqQNCivjg6Tjg57jg6Ljg4gs44OG44Or44OS44KzDQor44Ok44Oe44Oi44OILOODnuOCteODpuOCrQ0KK+ODpOODnuODouODiCzjg5/jg4Tjg6jjgrcNCivjg6Tjg57jg6Ljg4gs44Of44OO44OrDQor44Ok44Oe44Oi44OILOOCt+ODjuODlg0KK+ODpOODnuODouODiCzjg4jjgqrjg6sNCivjg6Tjg57jg6Ljg4gs44Ki44K544KrDQor44Ok44Oe44Oi44OILOODr+OCv+ODqw0KK+ODpuOCouOCtSzjgq/jg5/jgrMNCivjg6bjgq0s44OK44Kq44KzDQor44Om44Oq44Ok44OeLOODjuODquODkuODrQ0KK+ODqOOCs+OCvyzjgqLjg4Tjg5LjgrUNCivjg6jjgrPjg4/jg54s44OI44K344Om44KtDQor44Oo44Kz44Ok44OeLOOCouODpuODnw0KK+ODqOOCs+ODpOODnizjgqvjgrrjgq0NCivjg6jjgrfjgqrjgqss44Kt44On44Km44KzDQor44Oo44K344Kq44KrLOODnuOCpOOCsw0KK+ODqOOCt+OCquOCqyzjg57jg6rjgrMNCivjg6jjgrfjg4As44K/44Kr44OI44K3DQor44Oo44K344OALOODiuOCquOCsw0KK+ODqOOCt+ODgCzjg4rjgqrjgrMNCivjg6jjgrfjg4As44Oe44Oq44KoDQor44Oo44K344OALOODpuOCpuOCuA0KK+ODqOOCt+ODgCzjg6bjgqbjgrgNCivjg6jjgrfjg44s44Om44KrDQor44Oo44K344OS44OtLOODpuODnw0KK+ODqOOCt+ODnuODhCzjg4jjgqrjg6sNCivjg6jjgrfjg6Djg6ks44OA44Kk44K544KxDQor44Oo44K344Og44OpLOOCq+OCuuODleODnw0KK+ODr+OCq+ODnuODhCzjg5Ljg63jg6QNCivjg6/jgq3jgr8s44Kr44K644KqDQor44Ov44Kt44K/LOOCseODs+OCt+ODreOCpg0KK+ODr+OCt+OCqizjg6jjgrfjgqLjgq0NCivjg6/jgrfjgrbjg68s44OB44Ki44KtDQor44Ov44OALOOCpOOCteODoA0KK+ODr+ODgCzjg4jjgrfjgqoNCivjg6/jg4As44Kk44K144KqDQor44Ov44OALOOCv+OCseOCtw0KK+ODr+ODgCzjgqvjg4TjgqgNCivjg6/jgr/jg4rjg5ks44Kr44K644K344OzDQor44Ov44K/44OK44OZLOODiOOCr+OCuA0KK+ODr+OCv+ODiuODmSzjg5Ljg63jgrcNCivjg6/jgr/jg4rjg5ks44Kt44Oo44Kq44OfDQor44Ov44K/44OK44OZLOODqOOCt+ODkuODrQ0KK+ODr+OCv+ODiuODmSzjg6jjg6rjg5/jg4QNCivjg6/jgr/jg4rjg5ks44Kx44Kk44K4DQor44Ok44Oe44Kw44OBLOODouODiOOCuA0KK+OCueOCuuOCrSzjgrjjg63jgqYNCivjgrXjgrXjg44s44K544K544OgDQor44Kr44ON44KzLOOCv+OCseOCtw0KK+OCr+ODnOOCvyzjg6zjgqTjgrMNCivjgrPjgrnjgrHjgqzjg68s44Oe44K144OK44KqDQor44Kr44OK44KkLOOCteODluODreOCpg0KK+OCq+ODiOOCpizjgrPjgqbjgqTjg4ENCivjgrPjg4Djg54s44K/44Kr44OS44KzDQor44Kz44OQ44Ok44K3LOODiOOCt+ODkuODrQ0KK+OCs+OCuOODnizjg4jjgqrjg6sNCivjgqvjg6Hjg6Tjg54s44Kr44K644OS44KzDQor44Kv44Op44OQ44Ok44K3LOODjuODluOCqg0KK+OCq+ODs+ODgCzjgqvjgrrjg6bjgq0NCivjgrPjg7Pjg44s44K444Ol44Oz44K4DQor44Kr44Ov44K344OeLOODnuOCteODiuODqg0KK+OCq+ODr+OCq+ODnyzjgrPjgqbjgrgNCivjgqvjg4rjgqss44Kr44Kv44K/44Ot44KmDQor44Kr44Ov44Og44OpLOODkuODreOCpuODnw0KK+OCreODoOODqSzjgrfjg6Xjg7PjgqTjg4ENCivjgqvjgrnjgqws44OS44Ot44K3DQor44Kz44K444OeLOODouODiOODqOOCtw0KK+OCq+ODr+ODjizjgrPjgqbjgqTjg4ENCivjgqvjg6/jg4os44Oo44K344Oe44K1DQor44Kz44K644OeLOOCv+OCseOCtw0KK+OCq+ODr+OCteOCrSzjg57jgrXjgqLjgq0NCivjgqvjgr/jg44s44Oe44K144Ki44KtDQor44Kr44K/44OALOOCouOCreOCqg0KK+OCreOCr+ODgSzjg57jgrXjgqrjg58NCivjgqvjg5/jgqbjg6ks44Kr44K644OS44OHDQor44Kr44ON44OALOODhuODhOOCqg0KK+OCs+ODs+ODjizjg6TjgrnjgqoNCivjgqvjg6/jg6Ljg4gs44K344Ky44OfDQor44Kr44OQ44OkLOODkuODreOCtw0KK+OCs+ODluOCr+ODrSzjgrHjg7Pjgq3jg4ENCivjgq/jg57jgqzjgqQs44Om44Km44K4DQor44Kz44Oz44OOLOODkuODh+OCrQ0KK+OCs+ODpOODnizjgrfjg6fjgqbjgqTjg4ENCivjgq3jgr/jgrfjg60s44OS44OI44K3DQor44Kz44OA44OeLOOCv+OCseOCtw0KK+OCq+ODiOOCpizjgqjjgqTjgqTjg4ENCivjgq3jg6Djg6ks44OI44K344OP44OrDQor44Kz44Kk44OHLOOCpOOCteOCqg0KK+OCr+ODpOODnizjgr/jgrHjgrcNCivjgq3jg6rjg4/jg6ks44Oi44Oq44OS44OtDQor44Kr44OoLOODnuOCteOCv+ODgA0KK+OCq+ODjeOCsyzjg4jjgrfjgqoNCivjgrPjg4/jg6ks44Kk44Ov44KqDQor44Kr44OI44KmLOODpuOCreOCqg0KK+OCs+OCpCzjgrvjgqTjgqTjg4Hjg63jgqYNCivjgqvjg6Tjg54s44Kk44K144KqDQor44Kz44Kk44KxLOOCr+ODi+ODkuOCsw0KK+OCs+OCuOODnizjgqLjgq3jg4gNCivjgrPjg57jg4Qs44Oe44K144K4DQor44Kt44K/44Og44OpLOODjuODquODqOOCtw0KK+OCreOCv+ODr+OCrSzjgrzjg7PjgqTjg4Hjg60NCivjgqvjgrXjgrjjg54s44OS44Ot44OV44OfDQor44Kt44Og44OpLOODhuODhOODreOCpg0KK+OCq+ODn+OCsOODgSzjgrXjg4HjgqoNCivjgqvjg4jjgqYs44OV44K444KqDQor44Kr44Ov44Og44OpLOODiOOCt+ODkuODiA0KK+OCq+ODieOCvyzjg47jg5bjgr/jgqsNCivjgqrjgqrjgr/jgrEs44K344Ky44OrDQor44Kr44OI44KmLOODiOODouODnw0KK+OCreODjizjg47jg5bjg5LjgrUNCivjgqvjg58s44Oe44K144OfDQor44Kt44Kv44OBLOODnuOCteODpuOCrQ0KK+OCq+OCreOCpuODgSzjg5Ljg63jg5LjgrUNCivjgrPjgrjjg54s44Oe44K144OfDQor44Kr44K/44Kq44KrLOOCt+ODpeODs+OCueOCsQ0KK+OCr+ODnOOCvyzjg5Ljg63jg6bjgq0NCivjgq3jgr/jgrbjg68s44Oe44K144Ki44KtDQor44Kz44Of44ONLOODouODiOODpuOCrQ0KK+OCr+ODnCzjgr/jgqvjg6bjgq0NCivjgq3jgr/jgrrjg6Es44Kr44K644OI44K3DQor44Kz44OQ44Ok44K3LOOCq+ODhOOCqg0KK+OCq+ODr+OCsOODgSzjg6jjgrfjg5LjgrMNCivjgrHjgqzjgrXjg68s44OS44K144K3DQor44Kz44Km44OBLOODn+ODgeOCqg0KK+OCs+ODpOODnizjg4jjgqrjg6sNCivjgqvjg6/jgq3jgr8s44K/44Kr44OS44OHDQor44Kr44Ov44Of44OELOOCt+ODp+OCpuOCvuOCpg0KK+OCq+OCv+ODkuODqSzjgqLjg4TjgqoNCivjgqvjg6/jgq7jgrcs44OS44Ot44K3DQor44Kz44Oz44OJLOODqOOCt+ODn+ODhA0KK+OCreODoOODqSzjgqLjgq3jg5LjgrMNCivjgq/jg5zjg6Tjg54s44K344Oz44K/44Ot44KmDQor44Kv44Oe44Oi44OILOODnuOCteOCrQ0KK+OCq+ODr+OCvyzjg5Xjg5/jg6gNCivjgq/jg4vjg47jg5Ys44Ok44K544KqDQor44Kr44Oe44OALOOCv+OCq+OCtw0KK+OCq+OCryzjgqrjgrXjg6ANCivjgqvjg43jgrMs44Kq44K144OgDQor44Kz44OQ44Ok44K3LOOCouOCreODqQ0KK+OCq+OCt+OCqizjgrHjg7PjgrgNCivjgqvjg4rjgqTjg68s44Kx44Kk44K4DQor44Kx44Oz44Oi44OBLOOCv+ODgOOCtw0KK+OCreOCr+ODgSzjgqrjgrXjg6ANCivjgqvjgrbjg54s44Ok44K544Ki44KtDQor44Kz44Oe44OE44Oi44OILOOCqOOCpOOCsw0KK+OCs+ODs+ODiSzjgqvjg4Tjg5LjgrMNCivjgq3jgq/jgrfjg54s44Kr44OE44Oe44K1DQor44Kz44OQ44Ok44K3LOOCu+OCpOOCsw0KK+OCr+ODnuOCrOOCpCzjg57jgrXjg4jjgrcNCivjgqvjg4jjgqYs44Kr44K644OS44KzDQor44Oe44Or44OQ44Ok44K3LOOCv+OCq+OCtw0KK+ODoOODiOOCpizjgqvjg4Tjg58NCivjg5/jgr/jg4ss44K/44Kx44K3DQor44Of44OvLOODnuOCteOCtw0KK+OCt+ODn+OCuizjg4Tjg4jjg6ANCivjg5/jgrrjg44s44OI44K344KqDQor44Oe44OB44OALOOCq+OCuuOCqg0KK+ODnuODhOOCpCzjgqvjgrrjgr/jg58NCivjg5/jgqbjg6ks44Oq44Ol44Km44Kk44OBDQor44OS44OOLOODquODp+OCpuOCpOODgQ0KK+ODoOODqeOCq+ODnyzjg57jgrXjg5Ljg60NCivjg5/jg6Tjg44s44OS44Ot44Om44KtDQor44Oe44Or44KkLOODnuOCteODjuODqg0KK+ODoOODqeOCteOCrSzjg4jjgrfjgqoNCivjg57jgrXjgqss44OS44OH44OO44OqDQor44Of44ON44K/LOOCv+OCseODnw0KK+ODnuODhOODiuOCrCzjg6bjgr/jgqsNCivjg5/jg4rjgqzjg68s44K744Kk44K4DQor44Of44Ok44KxLOODiuOCquOCouOCrQ0KK+ODnuODhOODouODiCzjgrHjg7PjgqTjg4ENCivjg5/jgrXjg68s44OI44K344Om44KtDQor44Oe44Ko44OALOOCs+OCpuOCvuOCpg0KK+OCpuODgOOCrOODryzjg4jjgrfjgqvjg4QNCivjg5/jg6Tjg4/jg6ks44Kz44Km44K4DQor44Og44Op44KkLOOCt+ODp+OCpuOCuA0KK+ODnuODhOODouODqizjgrfjgrLjgq0NCivjg57jgrXjgq0s44Kt44Kv44KqDQor44Of44Km44OpLOOCqOOCpOOCuA0KK+ODouODiOODn+ODpCzjgq3jg6jjgrcNCivjg6Djg6njgqvjg58s44OS44Ot44OV44OfDQor44Oe44OI44OQLOODnuOCteOCouOCrQ0KK+ODn+OCpuODqSzjg4jjgrfjgqoNCivjg57jg4Tjgqvjg68s44Kr44K644OS44OtDQor44Of44K644K/44OLLOODiuOCquODkuOCsw0KK+ODn+ODpOODjizjg57jgrXjg6bjgq0NCivjg57jg4Tjg4As44OV44K144OB44KrDQor44Of44K5LOOCouOCreODqQ0KK+ODnuODhOODpOODnizjg4jjgrfjgqgNCivjg5/jg6Tjg6Ljg4gs44K/44OA44Ki44OEDQor44Of44K644OOLOODleODn+OCqg0KK+ODnuODq+ODpOODnizjgrvjgqTjgrgNCivjg57jg6vjgrMs44Of44OB44K/44KrDQor44Oi44OB44OALOODiOOCquODqw0KK+ODouODiOODj+OCtyzjg57jg6Ljg6sNCivjg5/jgrrjg6Qs44Kz44Km44K4DQor44Of44Ok44K244KtLOODn+ODgeODnuOCtQ0KK+ODn+ODpOOCrOODryzjg5/jg4Tjg6sNCivjg6Djg6njgrfjg54s44K/44OA44KqDQor44Oe44K544K144KzLOOCu+OCpOOCpOODgQ0KK+ODouODqizjgqTjg4Hjg63jgqYNCivjg6Ljg6rjgr8s44Kr44K644KqDQor44Of44OK44OfLOODqOOCt+OCouOCrQ0KK+ODn+ODpOOCrSzjg57jgrXjgqoNCivjg6Ljg6rjg6Tjg54s44Kx44Oz44K4DQor44Of44K644K/LOODqOOCt+OCqg0KK+ODnuODhOOCpCzjg5/jg4TjgrANCivjg57jg4Tjgqos44Oe44K144OoDQor44Oe44OE44K344K/LOODpuOCv+OCqw0KK+OCs+ODkOODpOOCtyzjgqvjg4Tjg58NCivjg6Djgqvjgqgs44Oe44K144K4DQor44Oi44Oq44KkLOOCruODp+OCuA0KK+ODouODquOCvyzjgr/jgqTjgr7jgqYNCivjg6DjgqvjgqQs44Oe44K144KqDQor44Oe44OE44KqLOODiOOCreODrw0KK+ODoOODqeODpOODnizjg6jjgrfjg5LjgrMNCivjg57jg4Tjg6Ljg4gs44OI44K344KqDQor44Of44Ok44K144OILOODn+ODjuODqw0KK+ODn+ODpOOCtuODryzjg6jjgrfjgqoNCivjg6Ljg6rjg6Djg6ks44K/44Kr44K3DQor44Og44Op44OOLOODkuODh+OCqg0KK+ODnuOCueODgCzjg5/jg47jg6sNCivjg6Djg6njgr8s44OO44OW44KqDQor44Of44Ok44K144KrLOOCseODs+OCuA0KK+ODouODiOODkOODpOOCtyzjg57jgrXjg5/jg4QNCivjg5/jgrrjg44s44Om44Oq44KzDQor44Oi44Oi44KkLOODqOOCt+OCqg0KK+ODnuODhOODgCzjg4jjgq/jgqoNCivjgrnjgqzjg6/jg6ks44OK44Kq44KoDQor44Oe44OE44OQ44OpLOODnuOCs+ODiA0KK+ODnuODhOODouODiCzjg5/jg47jg6sNCivjg5/jg6Tjg4/jg6ks44Ki44OE44Oo44K3DQor44Og44Op44Kk44K3LOODnuODouODqw0KK+ODnuODhOODoOODqSzjg57jg6Ljg6sNCivjg5/jg6jjgrcs44OG44OE44Oo44K3DQor44Oi44Oq44Oi44OILOOCq+OCuuOCqg0KK+ODn+OCuuOCv+ODiyzjgr/jgrHjgrcNCivjg57jg4Tjg5As44Ki44OE44K3DQor44Oe44OE44KkLOOCq+ODsw0KK+ODoOODqeOCq+ODnyzjgqvjgrrjgqoNCivjg6Ljg6rjgr8s44K344Ky44OP44OrDQor44Og44Op44K/LOOCt+OCsuOCqg0KK+ODnuOCteOCrSzjg5Ljg63jgrcNCivjg5/jg6Tjgrbjgq0s44Oo44K344KtDQor44Oe44OE44OQ44OpLOOCt+ODs+OCpOODgQ0KK+ODoOODqeODnuODhCzjgqLjg4TjgrcNCivjg6Ljg6os44OO44OW44Om44KtDQor44Oi44Oq44Og44OpLOODnuOCteOCq+OCug0KK+OCueODryzjg6jjgrfjg58NCivjgrPjg6/jgr/jg6os44OK44Kq44KtDQor44Oe44OE44K244KtLOODqOOCt+ODjuODlg0KK+ODnuODg+OCteOCrSzjg57jgrXjg5Ljg60NCivjg5/jgr/jgq8s44Kx44Kk44K+44KmDQor44Oe44OE44Kr44OvLOOCteODiOOCtw0KK+ODouOCrizjgrfjgrMNCivjg57jg5bjg4Es44Kt44Oo44K3DQor44Oe44OE44Oi44OILOODiOOCt+ODreOCpg0KK+ODouODqizjg6rjg6fjgqbjgqTjg4ENCivjg57jg4Tjgqbjg6ks44Kr44K644OK44OqDQor44Oe44Ko44OALOOCouOCreOCqg0KK+ODnuOCueODgCzjg5Ljg63jgrcNCivjg57jgqjjg4vjgrcs44OS44Ot44K3DQor44Oe44Or44Ok44OeLOODiuOCquODpA0KK+ODnuODhOODgCzjgr/jgqvjgqoNCivjg57jgq0s44OI44K344OS44KzDQor44Oi44Km44KoLOOCt+ODs+OCpOODgeODreOCpg0KK+ODoOODqeOCpCzjg4jjg6jjg58NCivjg57jg4TjgqQs44Kv44OL44OS44KzDQor44Oi44Oq44K/LOODnuOCteODqw0KK+ODnuOCqOODgCzjgr/jgqvjg5bjg58NCivjg6Djg6njgqbjg4Es44Kk44K144OgDQor44Of44OE44Ok44K5LOOCouOCreODqQ0KK+ODouODqizjgrHjg7PjgrgNCivjg57jg4Tjg4As44K144OI44K3DQor44Oe44OE44KqLOODnuOCteODleODnw0KK+ODnuODq+ODpOODnizjgqLjgq3jgqoNCivjg57jg4Tjgqzjgqgs44K344Ky44OS44OtDQor44Kr44Of44Kv44OpLOOCs+OCpuOCpOODgQ0KK+ODn+ODieODquOCq+ODryzjg6bjgqbjgrjjg63jgqYNCivjg57jgrnjg4As44K344Ky44OO44OWDQor44Of44OG44OpLOODpOOCueOCqg0KK+ODnuODhOODiuOCrCzjgqLjgq3jg6kNCivjg6Ljg6rjgqrjgqss44Oo44K344OfDQor44Of44K944KqLOOCqOODhOOCqg0KK+ODoOODqeODpOODnizjgqvjg4Tjg6jjgrcNCivjg6Ljg6rjg6Ljg4gs44K344Ky44OrDQor44Oi44OqLOODhOODiOODoA0KK+ODnuOCueODgCzjg5Ljg63jgr/jgqsNCivjg5/jg6Tjg6Ljg4gs44Kr44OE44Oe44K1DQor44Og44Op44K/LOODqOOCt+ODhuODqw0KK+ODn+ODiuODn+OCteODryzjgqvjgrrjg5Ljg60NCivjg57jgrfjg54s44K544Of44OS44OtDQor44Oi44Oq44Kw44OBLOODqOOCt+OCouOCrQ0KK+ODnuODhOOCpCzjgr/jgqvjgrcNCivjg57jgqjjgqvjg68s44OS44OI44K3DQor44Oi44OB44K644KtLOOCuOODpeODsw0KK+ODnuOCueODgCzjgrfjg7Pjgq3jg4ENCivjg57jg4Tjg6Ljg4gs44K444Ol44Oz44K+44KmDQor44Oi44Oq44OK44KsLOOCq+OCuuODjuODqg0KK+ODnuOCueODgCzjg5Ljg63jgr/jg58NCivjg5/jgqbjg6ks44Kv44OL44KqDQor44Oe44OE44OOLOOCv+ODgOOCqg0KK+ODnuODhOOCquOCqyzjg6jjgrfjg4bjg6sNCivjg57jg4HjgqQs44Kz44Km44Kk44OBDQor44Of44K644K/44OLLOODiOOCt+OCqg0KK+ODnuODhOODouODiCzjg6jjgrfjg47jg6oNCivjg57jgrXjgq0s44OS44OH44OIDQor44Oe44OE44Oi44OILOOCv+OCseOCtw0KK+ODn+ODhOODpCzjg5Ljg4fjg6TjgrkNCivjg5/jgrrjg44s44K444Ot44KmDQor44Oe44Ko44OALOODleODn+OCqg0KK+ODoOODqeODnuODhCzjgrHjg7PjgrgNCivjg6DjgrXjgrfjg44s44Ki44Kt44OpDQor44Oe44Ko44OP44K/LOODnuOCteODkuOCsw0KK+ODnuODhOOCtuODryzjg6jjgrfjgqoNCivjg5/jg4TjgqQs44Oo44K344Kr44K6DQor44Oi44Oi44OALOODn+ODhOOCq+OCug0KK+ODnuODhOOCqizjgqvjg4Tjg58NCivjg5/jg68s44K344Ol44Km44K4DQor44Og44Op44Kr44OfLOODhuODhOODpA0KK+ODn+OCq+ODnyzjg4/jg6vjgq0NCivjg4zjgqvjgrbjg68s44K344Oz44K4DQor44OK44Kr44Og44OpLOOCt+OCuuOCqA0KK+ODi+OCt+ODoOODqSzjgq/jg4vjg5LjgrMNCivjg4vjg4Pjgr8s44Kx44Oz44K4DQor44OK44Ks44OE44OmLOODiOOCreODpOOCuQ0KK+ODi+OCpOODjizjg5Ljg63jgrcNCivjgr/jg5bjg4Es44Kx44Oz44K4DQor44OL44K344OOLOOCteODluODreOCpg0KK+ODjOOCq+OCvyzjgr/jg6Ljg4QNCivjg4vjgrfjg6Djg6ks44OS44K144KqDQor44OK44Ks44OOLOOCv+OCq+ODpuOCrQ0KK+ODiuOCq+OCrOODryzjg6jjgrfjgqLjgq0NCivjg4vjgrfjg6Tjg54s44OS44Ot44K3DQor44OK44Kr44K444OeLOODnuOCteODkuODrQ0KK+ODi+OCt+ODgCzjg5/jg4TjgqoNCivjg4rjgqvjg6Djg6ks44OV44Of44KqDQor44OO44Og44OpLOODpuOCreOCqg0KK+ODiuOCq+ODouODiCzjg47jg6rjgqLjgq0NCivjg4rjgqvjgqzjg68s44Kr44K644K/44OfDQor44OK44Or44K144OvLOODhOODjeOCqg0KK+ODiuOCpOODiOOCpizjgr/jgrHjgqoNCivjg47jg5ks44Oo44K344OS44OHDQor44OL44K344OKLOODpOOCueODjuODqg0KK+ODjuODoOODqSzjgr/jg4DjgrcNCivjg4rjgqvjg6Djg6ks44K344Oz44K444Ot44KmDQor44OL44Kr44Kk44OJ44KmLOODqOOCt+ODpOOCuQ0KK+ODiuOCq+ODgCzjgr/jg4TjgqoNCivjg4vjgrfjg4os44Kt44Of44OS44OIDQor44OK44Oq44K/LOODiOOCt+OCqg0KK+ODjuOCsOODgSzjg6jjgrfjg5Ljg60NCivjg47jg6Qs44Kz44Km44KtDQor44OK44Ks44KkLOODnuOCteODiA0KK+ODiuOCq+ODoOODqSzjgq3jg6jjgrcNCivjg4vjgqTjgrrjg54s44K/44Kr44OfDQor44OK44Kr44Ks44OfLOOCt+ODpeOCpuOCpOODgQ0KK+ODiuOCrOOCvyzjgq3jgrfjgqoNCivjg4vjgrfjgrbjg68s44OP44OE44KoDQor44OO44K7LOOCuOODpeOCpuODreOCpg0KK+ODiuOCrOOCpCzjg6bjgq3jgqoNCivjg4vjgrfjgrbjg68s44Oe44K144KqDQor44OK44Kr44OP44K/LOOCq+OCuuODiOOCtw0KK+ODiuOCq+OCuOODnizjg5Ljg63jgrcNCivjg4rjgqvjg4As44Oe44OE44KqDQor44OO44OK44KrLOODnuOCteOCrQ0KK+ODiuOCq+OCrOODryzjg57jgrXjgqLjgq0NCivjg4rjgqvjgrfjg54s44K/44Of44KqDQor44OK44Kr44Oi44OILOODnuOCteODqw0KK+ODi+OCt+OCquOCqyzjg5Ljg63jgrcNCivjg4vjgrfjg57jgqgs44K344Oz44K/44Ot44KmDQor44OK44Kr44Og44OpLOODnuOCteOCqg0KK+ODiuOCq+ODi+OCtyzjgqvjgrrjgqoNCivjg47jg4As44Og44OE44OkDQor44OK44Kr44Og44OpLOOCouOCreODkuOCsw0KK+ODiuOCq+OCtuODryzjg6rjg6fjgqbjgqTjg4ENCivjg4vjgrfjg4As44Oo44K344Ot44KmDQor44OL44K344OALOOCv+ODgOODpuOCrQ0KK+ODi+OCpCzjg6rjg6fjgqbjgrgNCivjg6Tjg57jg6Ljg4gs44OS44OI44K3DQor44OK44Kr44Km44OBLOODpOOCueOCqg0KK+ODiuOCq+OCuOODnizjgqvjgrrjgr/jgqsNCivjg4rjgqvjg6Djg6ks44Oe44K144OfDQor44OO44Og44OpLOOCr+ODi+ODkuOCsw0KK+ODi+OCt+ODoOODqSzjg6Tjgrnjg5Ljg60NCivjg47jg4rjgqss44K/44OA44OS44KzDQor44OL44K344Og44OpLOODiOOCt+ODkuODhw0KK+ODi+OCt+OCqizjgq3jg6jjgrcNCivjg4rjgqzjgqos44Kt44Oo44K3DQor44OL44Kk44OfLOOCseODs+OCuA0KK+ODiuOCq+ODoOODqSzjg5Ljg4fjg6bjgq0NCivjg43jgrrjgqss44Oo44K344OO44OqDQor44OK44Kr44Og44OpLOODpuOCreODiOOCtw0KK+ODiuOCq+OCtuODiCzjg4bjg4Tjg6QNCivjgqLjgrXjg44s44K444Ol44OzDQor44OO44Ks44OfLOOCr+ODi+ODkuODrQ0KK+ODiuOCq+OCuOODnizjgqvjgrrjg5LjgrMNCivjg4rjgqTjg4jjgqYs44Kr44K644Ki44KtDQor44OK44Kr44Og44OpLOODqOOCt+ODjuODqg0KK+ODiuOCq+ODi+OCtyzjgq3jg6jjgqLjgq0NCivjg4rjgqvjg4As44K/44Of44KqDQor44OK44Ks44K144OvLOOCv+OCq+OCtw0KK+ODiuOCrOODjizjgqvjgrrjg6bjgq0NCivjg4vjg4Pjgr8s44Om44K/44KrDQor44OK44Oz44OQLOODn+ODhOODkuODrQ0KK+ODjuOCuuOCqCzjgq/jg4vjg5/jg4QNCivjg4rjgqzjg58s44OS44Ot44K3DQor44OK44Ks44KkLOOCuOODpeODs+OCpOODgQ0KK+ODiuOCq+ODj+ODqSzjg5/jgrrjg5sNCivjg4rjgqvjgrjjg54s44K/44Kx44Oo44K3DQor44OK44Kr44K444OeLOOCq+ODhOOCqg0KK+ODi+OCt+ODgCzjgqLjgq3jg5LjgrMNCivjg4rjgqrjgqQs44K344OB44Ot44KmDQor44OK44OZ44K344OeLOODqOOCt+ODnuOCtQ0KK+ODiuOCq+ODjizjgrfjg6fjgqbjgqTjg4ENCivjg4rjgqvjg6Djg6ks44OP44Or44KqDQor44OO44OALOODn+ODhOODqOOCtw0KK+ODiuOCq+OCuyzjg4jjgrfjgqLjgq0NCivjg4rjgqvjgrjjg54s44Of44OE44K344KyDQor44OK44Ks44K144OvLOOCv+ODgOOCtw0KK+ODi+ODmOOCpCzjg5/jg4Tjg6gNCivjg4rjgqzjgqQs44Oq44On44Km44K544KxDQor44OK44Kr44K344OeLOOCv+OCq+OCqg0KK+ODiuOCq+OCqizjgrvjgqQNCivjg4rjgqvjgqzjg68s44OO44OW44KqDQor44OK44Kk44OI44KmLOOCs+OCpuOCpOODgeODreOCpg0KK+ODjuOCuOODnizjg6bjgqbjgrnjgrENCivjg4rjgqzjg44s44Om44Kt44KqDQor44OL44K344OALOOCq+OCuuOCqg0KK+ODiuOCq+ODgCzjgq3jg6jjgrcNCivjg4rjgqvjg4/jg6ks44K/44Kr44OO44K544KxDQor44OK44Kr44K444OeLOODoOODjeOCv+OCqw0KK+ODjeODouODiCzjgq3jg6jjgrcNCivjg4rjgqvjg6Djg6ks44Kx44Oz44K4DQor44OK44Ks44OI44OiLOODnuOCteODnw0KK+ODiuOCq+ODoOODqSzjg5Ljg4jjg58NCivjg4rjgqvjg6Tjg54s44Oo44K344KqDQor44OK44Kr44Og44OpLOODm+OCuuODnw0KK+ODiuOCq+ODoOODqSzjg5Xjg5/jg47jg6oNCivjg47jgrjjg54s44OG44OE44Ot44KmDQor44OK44Ks44OV44OBLOODpOOCueODrQ0KK+ODiuOCq+ODjizjgrTjgqTjg4ENCivjg4vjgrfjg6Tjg54s44K344Oz44Kk44OBDQor44OK44Kr44Og44OpLOODnuOCteODpuOCrQ0KK+ODiuOCrOOCt+ODnizjg4rjgqrjgrgNCivjg4vjg68s44Om44K/44KrDQor44OK44Kr44OOLOODpOOCueOCouOCrQ0KK+OCquODi+OCtuODryzjg6bjgq3jgqoNCivjgqrjgrfjgqvjgr8s44Oe44K144KqDQor44Kq44KrLOOCq+ODhOODkuODrQ0KK+OCquOCr+ODpOODnizjg47jg5zjg6sNCivjgqrjgq0s44K544Of44KqDQor44Kq44Kr44Of44OkLOOCseODs+OCuA0KK+OCquOCsOODqSzjg57jgrXjgq0NCivjgqrjgqrjg4cs44Oe44K144OO44OqDQor44Kq44OO44OALOODnuOCteODkuOCsw0KK+OCquOCquODi+OCtyzjg57jgrXjgq0NCivjgqrjgq/jg4As44Kt44On44Km44Kk44OB44Ot44KmDQor44Kq44Kv44OALOODiOOCt+OCqg0KK+OCquOCrOODryzjgrPjgqbjgrgNCivjgqrjg44s44Oe44K144KqDQor44Kq44Kq44K544OfLOOCs+OCpuOCuA0KK+OCquOCquODhOOCqyzjgr/jgqvjgrcNCivjgqrjgqrjg4jjg6Is44Oe44K144Ki44KtDQor44Kq44Kr44K244KtLOODpuOCpuOCuA0KK+OCquOCquODj+OCtyzjg5Ljg63jgrcNCivjgqrjgq7jg44s44OV44Of44KqDQor44Kq44K144OALOOCt+OCuuOCouOCrQ0KK+OCquOCquODkCzjg5LjgrXjgrcNCivjgqrjgrfjg54s44Ki44Ok44KzDQor44Kq44Kq44Kr44OvLOOCq+OCuuODpA0KK+OCquOCq+ODouODiCzjg5Ljg63jgrcNCivjgqrjgqzjg68s44OI44Kq44OrDQor44Kq44OOLOOCreODqOODiA0KK+OCquOCq+ODjizjg4jjgqrjg6sNCivjgqrjgrbjg68s44Om44Kt44Oe44K1DQor44Kq44OP44KvLOODkuODreOCtw0KK+OCquOCt+OCv+ODiyzjgr/jgqvjgrcNCivjgqrjgrbjg68s44OS44Ot44K3DQor44Kq44Kq44OP44K3LOOCv+OCq+ODjuODlg0KK+OCquOCquODj+OCvyzjgrPjgqbjg4jjgq8NCivjgqrjg47jg4fjg6ks44Of44OkDQor44Kq44OOLOODleODn+OCqg0KK+OCquOCquOCquOCqyzjg5XjgrjjgrMNCivjgqrjgqrjg44s44Oo44K344OO44OqDQor44Kq44Kq44OP44K3LOODpuOCv+OCqw0KK+OCquOCquOCvyzjgr/jgqvjgrcNCivjgqrjgqrjg6Ljg6os44Kx44Oz44K/44Ot44KmDQor44Kq44K344OeLOOCsw0KK+OCquOCq+ODouODiCzjgrPjgqbjgqTjg4ENCivjg5Ljg63jgrss44OI44Oi44Om44KtDQor44Kq44Kq44Of44K6LOODpOOCueOCqg0KK+OCquOCquODjizjg5/jg4TjgqoNCivjgqrjg4HjgqLjgqQs44Oe44K144OS44K1DQor44Kq44Kr44OZLOOCv+OCpA0KK+OCquOCquOCv+ODiyzjgqLjgq3jg5Ljg60NCivjgqrjgq/jg44s44K344Ky44KqDQor44Kq44Kq44K544KsLOOCseODs+OCpOODgQ0KK+OCquOCquODjuOCrSzjgqvjgqrjg6sNCivjgqrjgqrjgqTjgrcs44K4DQor44Kq44Kr44OALOODouODiOODhOOCsA0KK+OCquOCquODn+ODpCzjg6bjgq3jg5Ljg60NCivjgrXjgr/jgrEs44OE44ON44KqDQor44Kq44OA44KuLOODj+ODgeODreOCpg0KK+OCquOCquOCvyzjgrXjg4jjg6sNCivjgqrjg5Xjg4Es44K/44OA44Oo44K3DQor44Kq44Kq44Kr44OvLOOCq+OCquODqw0KK+OCquOCq+ODiSzjgrXjg4jjg6sNCivjgqrjgqrjgrXjg68s44OS44OH44KtDQor44Kq44Ku44K144OvLOODpuOCreODkuODrQ0KK+OCquOCq+ODmSzjgqLjg4TjgrcNCivjgqrjg4jjg6jjgrcs44OS44OH44KqDQor44Kq44Ks44OvLOOCv+ODhOODreOCpg0KK+OCquODquOCrOOCtSzjg6Tjgrnjgr/jgrENCivjgqrjgqrjg5As44Om44Kt44KzDQor44Kq44OQ44K/LOOCv+OCq+OCtw0KK+OCquOCquODjizjgr/jgqvjg6jjgrcNCivjgqrjgqrjgrXjgqss44Oe44K144OkDQor44Kq44Kq44Of44ONLOOCseODs+OCvuOCpg0KK+OCquOCquOCvyzjg6jjgrfjg5LjgrMNCivjgqTjg47jgqbjgqgs44Ki44Kt44KqDQor44Kq44Kq44Kz44K3LOOCt+OCsuOCrQ0KK+OCquOCtuODryzjg5Ljg4fjgqoNCivjgqrjgqvjg5ks44Kx44Kk44Kk44OBDQor44Kq44Kq44Oc44OpLOOCqOOCpOOCuOODreOCpg0KK+OCquOCquOCvyzjgrjjg6fjgqbjgqTjg4Hjg63jgqYNCivjgqrjgrbjgq0s44K444Ol44Oz44Kk44OBDQor44Kq44Kv44OALOODpOOCueODkuODrQ0KK+OCquOCtuODryzjg4bjg6vjgqLjgq0NCivjgqrjgqvjg4As44K544K544OgDQor44Kq44Kq44OE44KrLOOCs+OCpuOCuA0KK+OCquODjuODh+ODqSzjgrPjgqbjgqTjg4ENCivjgqrjgrfjgqos44K/44OA44K344KyDQor44Kq44OA44K344OeLOOCv+ODgOOCtw0KK+OCquOCtuOCrSzjgrfjgrLjg6sNCivjg57jgqjjg4As44Of44OE44KqDQor44Kq44KtLOODnuOCteOCqg0KK+OCquODjuODgCzjg4jjgq3jgqgNCivjgqrjg4rjgq4s44Ki44Kt44OpDQor44Kq44Kv44OALOODqOOCt+OCreODqA0KK+OCquOCquODkuODqSzjgrvjg4TjgrgNCivjgqrjg47jgrbjg68s44OI44K344OS44KzDQor44Kq44Ku44OP44OpLOOCr+ODi+OCouOCrQ0KK+OCquOCquOCr+ODnizjgqvjgrrjgqoNCivjgqrjgqrjg4/jg6ks44OO44OW44OS44OtDQor44Kq44KtLOOCq+ODhOOCueOCsQ0KK+OCquOCrOODryzjgr/jg4Tjg6QNCivjgqrjgqrjg6Qs44OS44OH44ObDQor44Kq44Kq44K144OvLOOCteODluODreOCpg0KK+OCquOCquODj+ODqSzjg5Ljg63jg6jjgrcNCivjgqrjg4As44K/44Kr44KzDQor44Kq44K244OvLOODn+ODhOOCqg0KK+OCquOCrOOCvyzjg6rjg6fjgqbjgrnjgrENCivjgqrjgqvjg44s44Ki44Kt44KzDQor44Kq44Kq44Kk44K3LOOCt+ODng0KK+OCquODiuOCpCzjg5Ljg63jg6bjgq0NCivjgqrjgqrjg4Tjgqss44K444Ol44Oz44KzDQor44Kq44Kq44OE44KrLOODhuODhOOCqg0KK+OCquOCpOODhyzjg6jjgrfjgqLjgq0NCivjgqrjgq3jg6Tjg54s44Kr44K644KzDQor44Kq44Kw44K3LOOCouOCseODnw0KK+OCquODgCzjg6TjgrnjgrcNCivjgqrjgqvjg5Djg6Tjgrcs44K/44OA44OS44OtDQor44Kq44Kq44K/44OLLOOCuOODpeODs+OCuA0KK+OCquOCquODhOOCrSzjgqLjg6bjg58NCivjgqrjgqvjg4As44OS44Ot44K3DQor44Kq44Kq44K544OfLOODgeODj+ODqw0KK+OCquOCquOCpOOCrOODryzjgr/jgqvjg4/jg6sNCivjgqrjgqvjg4As44K544K544OgDQor44Kq44K244OvLOOCq+OCuuODkuOCsw0KK+OCquOCquOCv+ODiyzjg4bjg4Tjg63jgqYNCivjgqrjgrbjgq0s44OS44Ot44Om44KtDQor44Kq44Kq44K/LOODnuOCteOCsw0KK+ODpOODiuOCruODpCzjg6bjgqvjg6oNCivjg4rjgqvjgr/jg4ss44K344Oz44Kk44OBDQor44Kz44OQ44Ok44K3LOODkuODh+OCtw0KK+ODn+OCr+ODiyzjg6jjgrfjg5Ljg60NCivjgrnjgrrjgq0s44K444Ol44Oz44Kk44OBDQor44OP44OA44OOLOODpuOCreODnuOCtQ0KK+ODn+ODpOODnizjgqvjgqrjg6oNCivjgr/jgqvjg4/jgrcs44Oe44K144OIDQor44K344Op44Kq44Ks44OvLOODqeOCpOOCvw0KK+ODiuOCq+ODoOODqSzjgqLjgr3jgqsNCivjg57jg4Tjgrbjgq0s44Kt44Kk44OB44Ot44KmDQor44Ok44Oe44K344K/LOOCv+OCq+ODqOOCtw0KK+OCt+ODouODpOODnizjgrfjgrLjg6sNCivjg5Xjgr/jg6Djg6ks44OO44OW44Om44KtDQor44Kv44OvLOOCv+OCq+OCtw0KK+ODiuOCq+ODoOODqSzjg4jjgrfjg5/jg4QNCivjg6jjgrPjg6Tjg54s44OS44Ot44Ki44KtDQor44OS44Or44OeLOODpuOCreOCsw0KK+OCv+ODgeOCq+ODryzjg4rjgqrjg58NCivjg6/jgqvjg5Djg6Tjgrcs44OG44Or44OfDQor44K/44Kr44OP44K/LOODiOODog0KK+OCouODmSzjgqjjg5/jgrMNCivjgrvjgq0s44Oq44Ol44Km44K0DQor44Ok44Oe44K244KtLOODkuODiOOCtw0KK+ODpOODnuODjSzjg6jjgrfjg5Ljg60NCivjgr/jgrbjg68s44K444Ol44Oz44K4DQor44Kr44K444Kr44OvLOOCouOCteOCsw0KK+OCteODiOOCpizjg57jgrXjg5Ljg60NCivjgqvjg6/jgqbjg4Es44Oe44Oq44KoDQor44Kq44Kq44Ok44OeLOODjuODluOCsw0KK+OCt+ODs+ODn+ODp+OCpizjgrjjg6Xjg7PjgrMNCivjgr/jg4Hjg6/jg4As44OK44Kq44OfDQor44Kq44Kq44Kv44OcLOODhuODhOODpA0KK+ODiOOCpuOCtOOCpizjg5Ljg63jg6bjgq0NCivjg4rjgqzjgq/jg6ks44K/44Kr44OP44OrDQor44Kk44OI44KmLOOCseODs+OCveOCpg0KK+ODpOODnuOCtuOCrSzjgrvjgqQNCivjgqvjgrbjg54s44OP44Or44Om44KtDQor44Kr44Oz44OQ44Ok44K3LOODkuODh+OCqg0KK+OCteOCteODjizjg6HjgqTjgrMNCivjgqvjg6/jgrfjg54s44Of44Om44KtDQor44K344Oz44Kw44KmLOODjuODquOCouOCrQ0KK+OCs+OCpOOCuuODnyzjgr/jgq/jg6QNCivjgqvjg43jgrMs44Oo44K344OfDQor44Kz44OQ44Ok44K3LOOCueOCqOODhOOCsA0KK+OCq+ODouOCt+OCvyzjgrfjg6XjgqbjgqTjg4ENCivjgr/jg6Djg6ks44K144OB44OoDQor44OP44K744Ks44OvLOOCv+OCq+OCtw0KK+OCr+ODquODj+ODqSzjg5Ljg63jg5Xjg58NCivjgqvjg4rjgqrjgqss44OS44Ot44K3DQor44Kz44OQ44Ok44K3LOODpuOCreOCv+OCqw0KK+ODkuOCpOOCtyzjgr/jgqvjg6bjgq0NCivjg4vjg5jjgqQs44Kk44Kv44KzDQor44Oe44Or44K/LOODiuOCquOCsw0KK+ODiOOCquODpOODnizjg4rjg58NCivjgrvjgq3jgrbjg68s44OB44KrDQor44Ki44Oq44OeLOODpOODqOOCpA0KK+OCr+ODquODj+ODqSzjg4jjg6LjgqgNCivjgrnjg5/jg44s44Of44OO44OrDQor44Oo44K344OALOODkuODh+OCrQ0KK+OCreODjuOCt+OCvyzjg4jjg6LjgrMNCivjgqrjg4HjgqLjgqQs44Of44Om44KtDQor44Km44Oe44Ok44OP44OpLOODpOOCueODnw0KK+ODm+OCveOCq+ODryzjg5Ljg63jgrMNCivjg5Xjgqvjgqzjg68s44K344Oz44K4DQor44Kr44Ov44Og44OpLOOCqOOCpOOCvuOCpg0KK+ODnuODhOOCpCzjgrHjgqTjgrMNCivjg6jjgrfjg6Ljg4gs44K/44Kr44OS44OtDQor44Km44OK44Kr44OfLOODiOODouOCsw0KK+OCq+ODjeODnuODhCzjgrXjgq3jgrMNCivjgqvjg6/jgqvjg58s44Oe44Kz44OIDQor44OI44Oo44OALOODkuODh+OCqg0KK+ODpOODjizjgqLjgq3jg5LjgrMNCivjgrvjgq0s44K/44Kr44Ki44KtDQor44OK44Kr44OL44K3LOODkuODiOOCtw0KK+ODj+OCt+ODouODiCzjgqLjgq0NCivjg5Xjgqvjg6Qs44Kv44OL44Ki44KtDQor44Of44Ok44Oi44OILOODkuODh+OCr+ODiw0KK+OCv+OCseODgCzjg4jjgrfjg5Xjg58NCivjg5/jg6Tjgrbjg68s44Of44Kt44KqDQor44Kk44Kx44OALOOCq+OCuuODkuOCsw0KK+OCquOCt+ODnizjg5Ljg63jgrcNCivjg4rjgqvjg6Djg6ks44Ko44Oq44KzDQor44K044OI44KmLOODpuOCpuOCpOODgeODreOCpg0KK+OCpuOCt+OCtOODoSzjg5Ljg63jgrcNCivjgq/jg6/jg6Tjg54s44OS44Ot44Ki44KtDQor44OE44Kr44OALOODgeODj+ODqw0KK+ODoOODqeOCvyzjg4HjgqvjgqoNCivjgrXjg4jjgqYs44Oo44K344K/44KrDQor44Kv44Ot44OALOOCq+OCquODqg0KK+OCueOCruODouODiCzjgq/jg4vjgqoNCivjg6Tjgrnjg4As44Kz44Km44Kk44OBDQor44Kt44Km44OBLOOCteODiOOCtw0KK+OCseODieOCpuOCpOODsyzjgrjjg6Xjg7PjgqTjg4ENCivjgr/jg4rjgqss44OB44KrDQor44OK44Kr44Og44OpLOODkuODreOCouOCrQ0KK+OCr+ODquODj+ODqSzjg4jjg6jjg5LjgrMNCivjgr/jgq3jgrbjg68s44Kr44K644OO44OqDQor44Km44Ko44OALOODkuODh+OCouOCrQ0KK+OCs+ODmSzjg5Ljg4fjgqLjgq0NCivjg47jgrDjg4Es44OV44Of44KqDQor44Kz44Oz44OOLOODiOODouODkuOCsw0KK+ODiOODn+OCvyzjgqvjg4rjg6ENCivjgqrjgqrjgr8s44Om44Kt44KzDQor44Oe44KtLOODkuOCq+ODqw0KK+OCouODnuODjizjgrHjg7PjgqTjg4Hjg60NCivjgrPjg5/jg40s44Ki44Kt44OS44OtDQor44K144OI44KmLOODiOODouODpA0KK+OCpOODnuODhyzjg6bjgqbjgrgNCivjg57jg4Tjg4rjgqws44K/44OE44OkDQor44K544K644KtLOOCv+OCseOCtw0KK+ODnuODhOOCqizjgqvjgqgNCivjgrXjgqTjg4jjgqYs44Kt44On44Km44Kk44OBDQor44Oo44K344K244OvLOODr+OCv+ODqw0KK+OCpuODpOODnizjgrHjgqTjgrMNCivjgqLjg7Pjg4njgqYs44Oe44K144OS44KzDQor44K544K644KtLOOCteODiOOCtw0KK+ODqOOCt+ODgCzjgqvjgrrjg4jjgrcNCivjgqvjg6/jg4As44Ko44Of44KzDQor44OV44Kv44OALOOCseOCpA0KK+ODouODquOCt+ODnizjg57jgrXjgrcNCivjg4Tjg4Hjg4As44OI44Kq44OrDQor44K144Kr44KkLOODn+ODgeODpOOCuQ0KK+ODhOOCq+ODgCzjgqLjg4TjgrcNCivjg4/jg4Pjg4jjg6os44OS44Ot44K3DQor44K/44Og44OpLOOCs+OCpuOCuA0KK+ODr+OCv+ODiuODmSzjg4rjgqrjgq0NCivjgrPjgrnjgq4s44K/44Kr44Ki44KtDQor44OS44Op44K/LOOCseOCpOOCvw0KK+OCueOCruODpOODnizjg6jjgrfjg6bjgq0NCivjg6Ljg6rjgqvjg68s44Oi44OI44OP44OrDQor44Kr44OJ44K/LOOCouOCreODkuODrQ0KK+OCteODjizjg5Ljg63jgrcNCivjgqrjgrbjgq0s44OG44OE44KqDQor44Oo44Kz44Oe44OELOOCq+ODhOODkuOCtQ0KK+OCv+ODiuOCqyzjg6bjg5/jgrMNCivjgqTjgrfjgrXjgqss44Kz44Km44Kk44OB44Ot44KmDQor44Kk44K344K244OvLOODpuOCuuOCrQ0KK+OCs+ODkOODpOOCtyzjgrjjg6Xjg7MNCivjg6jjgrfjg4As44OI44Oi44Ki44KtDQor44Kt44Og44OpLOODquOCqOOCsw0KK+OCquOCquODhOOCqyzjgr/jgrHjg6sNCivjgqLjg4Djg4Es44K/44Kr44K3DQor44Ki44Kr44K144KrLOOCt+ODp+OCpuOCuA0KK+ODn+ODpOODouODiCzjg5/jg4njg6oNCivjgqTjg4Hjg6Djg6ks44Kr44Kq44OqDQor44Kq44K344K/LOODjuODluODpuOCrQ0KK+ODm+ODs+ODgCzjgqrjgrXjg6ANCivjgqvjg6Tjg4zjg54s44Kz44Km44K4DQor44OO44K244KtLOODpuOCpuOCuA0KK+OCq+ODieODr+OCrSzjg5XjgrjjgqgNCivjgqrjgrgs44Ok44K544OS44OtDQor44K/44Kw44OBLOODpOOCueODhOODjQ0KK+OCv+OCseOCpOOCtyzjgqLjgq3jg4gNCivjg5Ljg6njgqQs44K344Oz44K4DQor44Kr44OK44K244OvLOOCuOODpeODs+OCpOODgQ0KK+ODleODq+OCq+ODryzjgqjjg6rjgqsNCivjg6Ljg6rjg4rjgqss44Oe44K144OoDQor44Ki44Op44KkLOODiOOCt+OCouOCrQ0KK+OCv+ODiuOCqyzjg6jjgrfjg47jg6oNCivjgrfjg5/jgros44Oo44K344Om44KtDQor44Kk44OB44OP44OpLOODnuOCteODqw0KK+OCreOCv+ODjuODj+ODqSzjg5Ljg4fjg5Ljg60NCivjgq3jgr/jgqos44OI44Oi44OS44OIDQor44Oi44Oq44Oi44OILOODkuODh+OCrQ0KK+OCreOCv+ODoOODqSzjg6rjgqvjgrMNCivjgrXjgrXjgrbjg68s44K/44Kx44K3DQor44Oe44OE44Kq44KrLOODiuOCquOCsw0KK+OCs+OCpuODqSzjgr/jgqvjg5Ljg60NCivjg5/jg68s44OS44Ot44KzDQor44Oo44K344Kq44KrLOODkuODreOCsw0KK+ODm+ODqizjg6bjg5/jgrMNCivjgrXjgqTjg4jjgqYs44Oo44K344OS44OIDQor44OK44Ks44K7LOODkuODh+ODj+ODqw0KK+ODouODquOCt+ODnizjg5Ljg63jgqsNCivjgqrjg6/jg6os44Oe44Kt44KzDQor44K/44OK44KrLOODn+OCrQ0KK+ODhuODqeODoOODqSzjg4jjgrfjg57jgrUNCivjgrPjg5Djg6Tjgrcs44Kt44On44Km44K+44KmDQor44K144Kk44OI44KmLOODkuODreODjuODqg0KK+OCreODoOODqSzjgr/jgrHjgrcNCivjg4/jgrfjg6Ljg4gs44Oo44K344OS44K1DQor44OK44Kr44Ks44OvLOODhuODhOODpA0KK+ODiuOCq+ODoOODqSzjg57jgrXjgqrjgq0NCivjg4/jgq7jg6/jg6ks44Kv44OL44OS44KzDQor44OL44K344Kr44OvLOODiOODouODnw0KK+OCreOCv+OCuOODnizjgrPjgqbjgqTjg4ENCivjgr/jgqvjgqbjg6ks44Ok44K544KqDQor44Ki44K144OALOODkuODh+ODqA0KK+OCreOCv+OCuuODoSzjgqLjg6njgr8NCivjg43jg6Ljg4gs44Ov44Kr44KzDQor44K/44OK44KrLOODnuOCteODkuOCsw0KK+OCv+ODiuOCqyzjgqvjgrrjg5Ljg60NCivjgqLjg4Djg4Es44Kr44K644OS44KzDQor44OP44OpLOODnuOCteODpuOCrQ0KK+OCouOCq+ODnuODhCzjgrHjg7PjgrQNCivjgqTjg57jg6Djg6ks44Ki44OE44K3DQor44Og44Op44Ok44OeLOODqOOCpuOCuA0KK+OCv+OCseOCpuODgSzjgr/jgqvjg6bjgq0NCivjgrrjgrcs44Ok44K544KqDQor44Kz44OQ44Ok44K3LOOCq+ODmw0KK+ODpOODnuOCtuOCrSzjgqLjg4TjgrMNCivjg4/jg57jgrDjg4Es44K944Km44Kk44OBDQor44Kr44Ky44Ok44OeLOODkuODreODpuOCrQ0KK+OCq+ODiuODouODqizjg5Ljg4fjgq0NCivjgqvjg4jjg6os44OE44Oo44K3DQor44Ki44Op44KkLOOCt+ODp+OCpuODmOOCpA0KK+ODn+ODpOOCvyzjg57jg6rjgrMNCivjgrnjgrrjgq0s44Ko44Of44KzDQor44OP44Or44K/LOODkuODh+ODpA0KK+ODiuOCq+OCtuODryzjgr/jgqvjgrcNCivjgrnjgqws44Oe44K144Om44KtDQor44Oe44Ko44OH44OpLOODhuODq+ODpuOCrQ0KK+OCouODqeODnuOCrSzjgqLjg4TjgrcNCivjgq3jgr/jg44s44K/44OE44OkDQor44Oo44K344OOLOOCt+OCsuODn+ODhA0KK+ODn+OCr+ODquODpCzjg6jjgqbjgrMNCivjgqrjgq/jg47jgq4s44Kx44Oz44K4DQor44K144Kv44Op44KkLOODqOOCt+OCq+ODhA0KK+OCs+ODs+ODiSzjg4rjgqoNCivjgrnjgrrjgq0s44OO44Oq44KzDQor44Kv44Oq44OP44OpLOOCr+ODn+OCsw0KK+ODoOOCs+OCpuOCsOODgSzjg57jgq0NCivjg5XjgrjjgqQs44Ki44Kt44OS44OtDQor44Kr44KyLOODpuOCpuOCsw0KK+ODnuOCqOODgCzjg47jg5bjg6QNCivjg4rjgqzjg5vjg6os44Om44Kt44KzDQor44OE44K4LOODouODouOCsw0KK+OCreODoOODqSzjgrfjg7Pjgr/jg63jgqYNCivjg57jg4Tjgqos44Kz44Km44Kk44OBDQor44K/44OG44OOLOODjuODquODqOOCtw0KK+OCreODoOODqSzjg57jgrPjg4gNCivjgrnjgrbjgq0s44K/44OE44OkDQor44Kk44Ov44K144KtLOODn+ODpOODkw0KK+OCteODiOOCpizjg6bjg6oNCivjg4vjg4Pjgr8s44OA44Kk44Kr44OzDQor44K/44OK44KrLOODnuODqg0KK+OCt+ODnuODgCzjgqLjgqvjg40NCivjgr/jg4vjgrDjg4Es44OO44Oq44KzDQor44Ob44Oz44OALOOCueODiuOCqg0KK+ODiuOCq+OCv+ODiyzjgr/jgqvjgrcNCivjg5/jg6Tjgrjjg54s44K344Ol44OzDQor44Kv44Kt44Ok44OeLOOCs+OCpuOCuA0KK+OCu+OCreODjSzjg6rjg6fjgqbjgr/jg63jgqYNCivjg6jjgrfjg4/jg6ks44K144OI44OrDQor44OS44Op44K/LOODnuOCteOCq+OCug0KK+ODiuOCrOOCteODryzjg4jjgrfjgqoNCivjg4rjgqvjgqzjgq0s44Kx44Kk44KzDQor44Kv44Ot44Kr44OvLOODpOOCueODpuOCrQ0KK+OCq+OCseOCv+ODqizjgrHjg7Pjgrjjg63jgqYNCivjgqTjg4jjgqYs44Kr44Oo44KzDQor44Oe44Ko44Kr44OvLOOCuOODpeODs+OCuA0KK+ODnuODhOODgCzjgqLjgq3jgqoNCivjgq/jg6/jg4/jg6ks44Oe44Kz44OIDQor44Kk44Kk44K644KrLOODr+OCq+OCsw0KK+ODnuOCuOODnizjg5Ljg4fjg6bjgq0NCivjg6Djg6njgr8s44OI44Oi44KzDQor44Ki44Kt44Kk44KxLOODpuOCpuOCpOODgQ0KK+ODiuODn+OCrSzjg4bjg4Tjg6QNCivjg6jjgrfjg44s44Of44Kt44KzDQor44K544K644KtLOODpuOCrQ0KK+OCv+ODoOODqSzjg5/jg4njg6oNCivjgqvjg6Hjg4As44K344Oz44OkDQor44OL44K3LOODpOOCueOCtw0KK+OCpOODiuOCquOCqyzjgrHjg7PjgrgNCivjgqTjg6/jgrXjgq0s44Om44Km44K4DQor44Kr44Oz44OALOODiuODnw0KK+OCv+ODgCzjgqjjgqTjgq0NCivjgqbjg4Qs44OI44Oi44Ki44KtDQor44K344Oe44OALOODnuOCteOCqg0KK+ODqOOCt+ODgCzjg5Ljg63jg6bjgq0NCivjgqrjgq/jgqzjg68s44Oo44K344OV44OfDQor44K544K644KtLOOCseOCpOOCsw0KK+OCv+ODs+ODnSzjg5/jg43jgrMNCivjg6/jg4As44OK44Kq44KzDQor44Km44Or44K344OP44OpLOOCqOOCpOOCueOCsQ0KK+OCpOOCpOOCqizjgr/jg63jgqYNCivjg4vjgqTjg4/jg6ks44Kt44On44Km44KzDQor44Kq44Og44OpLOOCv+OCr+ODpA0KK+OCpOODjuOCpuOCqCzjgrzjg7Pjgrjjg63jgqYNCivjg6Ljg6rjg4rjgqws44OI44K344OS44OtDQor44K144OOLOODkuODreOCtw0KK+ODiuOCq+OCv+ODiyzjg57jgrXjg6TjgrkNCivjgqLjg5ks44Oe44K144OK44KqDQor44Km44OB44OALOOCseODs+OCuA0KK+ODkuODreOCvyzjg6bjgqbjgrXjgq8NCivjgqTjg6/jgq/jg6ks44Kr44Kk44K444Ot44KmDQor44Kk44K344Kq44KrLOODkuODh+OCouOCrQ0KK+ODiOOCreOCvyzjg4rjg4TjgrMNCivjgq3jg47jgrfjgr8s44OK44Kq44K544KxDQor44Of44K644OOLOOCouOCpOOCsw0KK+ODpOOCueOCqCzjg57jgrXjg58NCivjgqTjg6/jg6Ljg4gs44K144OI44OrDQor44Ok44Oe44K4LOODpuOCq+ODqg0KK+OCs+OCteOCpCzjg6bjgqbjgrMNCivjgq/jg5ws44OI44K344KoDQor44OB44OQLOODkuOCq+ODqw0KK+ODpOODhOOCv+ODiyzjgqLjg4TjgrcNCivjgqTjgqzjg6njgrcs44K/44Kr44K644OfDQor44Ki44Op44Kr44OvLOOCouOCq+ODjQ0KK+ODhuODqeOCteOCrSzjg6Ljg4jjgqLjgq0NCivjgrvjgrTjgqgs44K144OI44KzDQor44OI44Kv44K344OeLOODnuOCteOCsw0KK+ODkOODs+ODieOCpizjgrfjg6fjgqbjgrMNCivjgr/jgq3jgrbjg68s44Kx44Oz44K4DQor44Of44K644K144KtLOOCseODs+OCv+ODreOCpg0KK+OCv+OCreOCsOODgSzjgrHjgqQNCivjg5Ljgqrjgq0s44Oe44K144K3DQor44OK44Kr44KkLOOCouODhOODnw0KK+OCquOCpOOCq+ODryzjg6zjgqTjgrMNCivjg57jg4Tjg6Djg6ks44OB44Kw44K1DQor44Ko44Oz44OJLOODqOOCt+OCqg0KK+OCv+OCuOODnizjgrXjg4jjgrMNCivjg6Tjg57jgrbjgq0s44Ko44Kk44K4DQor44K744OO44KqLOOCs+OCpuOCuA0KK+ODj+ODqeODgCzjg4jjgrfjg57jgrUNCivjg5Xjgq/jgqQs44OI44Oi44KrDQor44Oe44OE44Km44OpLOOCseOCpA0KK+OCq+ODr+ODoOODqSzjg6bjgqbjgqTjg4ENCivjg4bjg6njg6Ljg4gs44K/44Kr44Of44OBDQor44OP44Ku44Ov44OpLOOCv+OCr+ODnw0KK+ODiuOCq+OCt+ODnizjgqjjg5/jgrMNCivjgq3jg47jgrfjgr8s44Of44OB44KqDQor44Ki44Op44KkLOODgeOCuuODqw0KK+ODoOODqeODpOODnizjgrjjg6Xjg7PjgrMNCivjgrXjgqjjgrDjgrUs44OI44Oi44OfDQor44K/44OK44KrLOODn+ODhOOCsw0KK+ODnuOCqOODgCzjgqrjgrXjg6ANCivjg5/jg6Tjgrbjgq0s44Kr44K644OfDQor44Kk44Kx44OZLOOCouOCreODqQ0KK+OCr+ODr+ODkOODqSzjgr/jgqvjg47jg6oNCivjg6jjg4As44K/44Kr44KqDQor44K/44OB44OQ44OKLOODpOOCueOCouOCrQ0KK+ODpOODnuOCsOODgSzjg6jjgrfjgqLjgq0NCivjgqTjgrfjg4/jg6ks44Kx44Kk44KzDQor44K/44Kt44K244OvLOODnuOCteOCouOCrQ0KK+ODkuODqeODjizjg6jjgrfjg5bjg58NCivjgqvjg6/jgrXjgq0s44K/44Kr44Oo44K3DQor44Ok44Oe44Oi44OILOODkuOCteODiOOCtw0KK+OCouODqeOCuyzjgqLjg4TjgrcNCivjg6Tjg4rjgq7jgrXjg68s44Oe44K144OO44OWDQor44K344Kq44OkLOOCouOCreOCqA0KK+OCteODiOOCpizjgrPjgqbjgqTjg4Hjg63jgqYNCivjgqvjg4jjgqYs44OS44OI44OfDQor44Kq44OOLOODqOOCt+OCv+OCqw0KK+OCreOCv+ODj+ODnizjg6Tjgrnjg57jgrUNCivjgrTjg4jjgqYs44OO44Oq44KzDQor44OL44OO44Of44OkLOODnuODpuODnw0KK+OCpuOCueOCpCzjg4jjg6Ljg47jg6oNCivjg5/jgrrjgrfjg54s44K/44Kx44OrDQor44K544OJ44KmLOODnuOCs+ODiA0KK+OCpOOCseODgCzjgqLjgq3jgrMNCivjg4rjgqvjg5Ljgqzjgrcs44Ki44Oq44K344KyDQor44Kv44Oq44Oi44OILOODreODr+ODqw0KK+ODiOODgCzjg5Ljg63jgr/jgqsNCivjg4/jgqvjg57jgr8s44Ki44OE44OO44OWDQor44K/44OL44Kw44OBLOODj+ODq+ODnw0KK+OCpOODnuOCvOOCrSzjgqTjgq/jgrMNCivjg5vjg6rjgqos44Oe44Om44OfDQor44Kr44K544KsLOODhOODqOOCtw0KK+OCq+ODr+OCuyzjg4rjgqrjgrMNCivjgrXjg4jjgqYs44OS44Ot44OfDQor44K/44Kr44OK44K3LOODjuODluOCouOCrQ0KK+ODnuODhOOCt+OCvyzjgr/jgqvjgrcNCivjg6TjgrDjg4Es44OS44OH44KtDQor44Kr44ON44KzLOOCq+OCuuODpuOCrQ0KK+ODkuODgOOCqyzjg5/jgqoNCivjgrXjg4PjgrUs44K/44Kk44OBDQor44K944KsLOOCv+OCr+ODpA0KK+OCueOCruOCpuODqSzjgrHjg7Pjgr/jg63jgqYNCivjgrXjg4jjgqYs44Ki44Of44KzDQor44K/44OL44OQ44Ok44K3LOOCteODgeOCsw0KK+ODi+OCt+OCquOCqyzjgr/jgqvjgrcNCivjg4jjg6Ljg4rjgqws44OK44Kq44KtDQor44Kq44Kq44OP44K3LOODkuODh+OCrQ0KK+ODiuOCrOOCt+ODnizjgrvjgqTjgr8NCivjgr/jg4vjgqzjgq0s44K744Kk44KzDQor44Kz44Km44OALOOCs+ODn+ODig0KK+OCreODqOODjizjgrXjg4jjgrcNCivjg6Tjg57jgqvjg68s44OI44K344KqDQor44OK44Kr44K444OeLOODkuODreOCtw0KK+ODouODhuOCrizjgrPjgqbjgrgNCivjgqrjgqrjg4zjg54s44Om44K/44KrDQor44K144OI44KmLOOCt+OCsuOCqg0KK+ODleODq+OCpOOCqCzjg6jjgrfjgrMNCivjgqLjgqTjg6Ljg4gs44Oi44OI44OV44OfDQor44Oo44Kz44KqLOOCr+ODi+OCqg0KK+ODi+OCt+OCq+ODryzjgrHjg7PjgrgNCivjg5Pjg4jjgqYs44Oo44K344OK44KsDQor44Kt44K/44Og44OpLOOCt+ODs+ODpA0KK+ODpOODnuOCq+ODryzjgrXjg4Djg4/jg6sNCivjg4jjg5/jgr8s44K/44Kx44K3DQor44OE44OB44OALOODkuODh+ODiA0KK+OCpOOCt+OCsOODrSzjg6rjgqgNCivjg57jg4Tjgqos44OI44Kq44OrDQor44Km44Ko44Oi44OILOOCs+OCpuOCpOODgeODreOCpg0KK+OCpOOCpOODgCzjg5/jgq3jgrMNCivjgrnjgrrjgq0s44K344Ky44OS44OtDQor44K/44Og44OpLOOCq+OCuuODqOOCtw0KK+OCquOCr+ODgCzjg47jg5zjg6sNCivjg5vjg6os44Oo44K344OfDQor44Kv44K144OE44KwLOODpOOCueOCtw0KK+ODpOODnuODgCzjg57jgrXjg4rjgqoNCivjgqLjgrXjg4/jg6ks44K/44Kr44OS44OtDQor44OI44Kv44OALOODnuODs+ODiuODqg0KK+OCpOODh+OCvyzjg6jjgrfjg5Ljg60NCivjgqTjg4jjgqYs44OG44Or44Of44OBDQor44K144OI44KmLOOCreOCpOODgeODreOCpg0KK+ODhOOCuOOCteODryzjgrHjgqQNCivjgqrjg44s44Kz44Km44K4DQor44Kk44Ov44OeLOODjuODluOCouOCrQ0KK+ODgOOCpOOCtOOCryzjgrjjg6Xjg7PjgqTjg4ENCivjg6Tjg57jg6Djg6ks44Oo44K344Kr44K6DQor44OP44K744Ks44OvLOODiOOCt+OCq+OCug0KK+OCpOOCrizjgr/jgqvjg5Ljg60NCivjg57jgqvjg5ks44Oe44K144Kr44OEDQor44Kq44Kr44Oi44OILOOCq+ODhOOCqg0KK+OCquOCquODj+ODqSzjg6bjgq3jg4rjgqoNCivjgrvjgq3jg6Tjg54s44Kr44K644KqDQor44Kt44K/44K444OeLOODkuODreOCouOCrQ0KK+ODiOODquOCpuODnyzjg57jgrXjg5Ljg60NCivjg5/jg6Tjgrbjgq0s44K/44OG44KqDQor44Km44KkLOODqOOCt+ODkuODiA0KK+OCr+ODqeODouODgSzjgqvjgrrjg5Ljg60NCivjgrfjgqrjg4zjg54s44OS44OH44OI44K3DQor44Op44Kk44K/LOOCpOOCr+OCqg0KK+OCt+ODouOCs+OCpuODmSzjg47jg5bjgqvjgroNCivjgrXjg6/jg44s44OG44Or44KqDQor44K144Kr44OL44K3LOODpuOCpuOCuA0KK+OCteOCteOCrSzjg4jjgrfjgqoNCivjgrvjgqTjg44s44Kx44Kk44K+44KmDQor44K544K644KtLOOCouOCreODqOOCtw0KK+OCteOCq+ODouODiCzjg4jjgrfjgqoNCivjgrnjgrrjgq0s44K344Ot44KmDQor44K144Ov44OOLOOCq+ODhOODpA0KK+OCt+OCrCzjg4bjg4Tjg6QNCivjgrTjg4jjgqYs44OI44Kv44Oe44K1DQor44K544OALOOCuOODpeODs+OCuA0KK+OCueOCuuOCrSzjg6jjgrfjgrMNCivjgrXjgqvjgq3jg5Djg6ks44OI44K344KqDQor44K144OI44KmLOOCseODs+OCuA0KK+OCteOCq+OCsOODgSzjg6jjgrfjg47jg6oNCivjgrnjgq7jgrXjgq0s44Of44OE44Kv44OLDQor44K544Ko44KtLOOCv+OCq+OCtw0KK+OCueOCuuOCrSzjg47jg5bjgqLjgq0NCivjgrfjg5Djgr8s44Kz44OI44K4DQor44K544Ku44Ok44OeLOOCv+ODgOOCqg0KK+OCteOCq+OCpCzjg57jgrXjg6bjgq0NCivjgrfjg5/jgros44K/44OA44K3DQor44K544Ku44Oi44OILOODiOOCt+OCqg0KK+OCteODiOOCpizjgr/jgq/jgrgNCivjgrvjgq0s44Kq44K144OgDQor44K144Kv44Op44KkLOODj+ODq+ODpuOCrQ0KK+OCu+OCreOCsOODgSzjgrPjgrnjgrENCivjgrXjg4jjgqYs44Ko44Kk44K4DQor44K544K644KtLOODpuOCpuODjuOCueOCsQ0KK+OCteOCpOODiOOCpizjgr/jg4DjgqoNCivjgrvjgq3jg40s44OI44Oo44OV44OfDQor44K544K644KtLOODhOODiOODoA0KK+OCpOOCpOODgCzjgq3jg6jjgr/jgqsNCivjgrnjgrrjgq0s44OS44Ot44K3DQor44K144K144KtLOODn+ODhOOCqg0KK+OCueOCqOODiuOCrCzjg4jjgrfjgqoNCivjgrXjgqvjg6Ljg4gs44OS44OH44Ki44KtDQor44K144Kk44OI44KmLOODnuOCteODnw0KK+OCueOCrOOCqizjg4bjg4TjgrgNCivjgrfjg57jgros44Of44OO44OrDQor44K144Kk44OI44KmLOODleODn+OCqg0KK+OCt+ODjuOCtuOCrSzjgqLjgq3jg6kNCivjgrnjgrrjgq0s44Oo44K344Om44KtDQor44K544OK44KsLOOCseODsw0KK+OCteODiOOCpizjgqrjgrXjg6ANCivjgrnjgrrjgq0s44Kx44Kk44K/44Ot44KmDQor44K744Kt44ONLOOCteODgOODjuODqg0KK+OCteOCteOCrSzjg4jjgrfjgqoNCivjgrXjg6/jg4As44Ki44Kt44OpDQor44K144Kk44OI44KmLOOCq+OCuuOCqg0KK+OCt+ODouOCvuODjizjgr/jg4Djg5LjgrMNCivjgrnjgqgs44K/44Kr44K3DQor44K144OJ44OI44OiLOOCouOCreODqQ0KK+OCu+OCreODjSzjgrHjg7PjgrnjgrENCivjgrXjg4jjgqYs44K144OI44K3DQor44K144Oz44K0LOODqOOCt+ODjuODlg0KK+OCueODieOCpizjgq/jg4vjgqLjgq0NCivjgr3jg47jg4As44OK44Kq44OfDQor44K344OeLOODn+ODjuODqw0KK+OCteODiOOCpizjg6jjg43jgr7jgqYNCivjgrXjg4jjgqYs44OI44Of44KqDQor44K344OW44OkLOOCq+OCuuOCouOCrQ0KK+OCteODiOOCpizjgqvjgrrjgqoNCivjgrXjg4jjgqYs44OG44Or44OS44KzDQor44K144Kr44K/LOODqOODjeOCqg0KK+OCteOCpOODiOOCpizjgqrjgrXjg6ANCivjgrnjg6/jgq0s44K/44Kr44K3DQor44K944OqLOOCv+OCseOCuA0KK+OCteOCq+ODouODiCzjgrfjg6Xjg7PjgqTjg4ENCivjgrfjg6njgqTjgrcs44Oe44K144OI44K3DQor44K544K644KtLOOCouOCreOCqg0KK+OCt+ODnuODgCzjg4jjgrfjgqoNCivjgrnjgrrjgq0s44Oe44K144OS44OtDQor44K544K644KtLOODqOOCt+OCqg0KK+OCteODiOOCpizjg4/jgrjjg6ENCivjgrnjgrrjgq0s44Kt44Oo44K3DQor44K144OI44KmLOODhOODiOODoA0KK+OCt+OCsuODnuODhCzjgq3jg6jjgrcNCivjgrXjgqzjg6ks44K/44Kr44OI44K3DQor44K144Kk44OI44KmLOODpuOCreOCqg0KK+OCt+ODs+OCsOOCpizjgr/jgqvjgqoNCivjgrnjgqzjg4zjg54s44OG44Or44OO44OWDQor44K944KsLOOCv+OCseOCtw0KK+OCteOCteOCrSzjg47jg5bjg6bjgq0NCivjgrXjg4jjgqYs44K344Ky44OrDQor44K144Ov44OALOODhuODhOOCqg0KK+OCveODnizjgqrjgrXjg6ANCivjgrfjg5Djgr8s44K/44Kx44KqDQor44K144OI44KmLOODn+ODgeOCsw0KK+OCteODiOOCpizjgq3jg6jjgrcNCivjgrfjg57jg4As44OS44OH44KqDQor44K144K144KtLOODjuODluOCqg0KK+OCteODiOOCpizjgrHjg7PjgrgNCivjgrXjgqTjg4jjgqYs44K344Ky44OrDQor44K344Oi44OHLOODkuODh+OCrQ0KK+OCteOCteOCrSzjg4jjgrfjgqoNCivjgrXjg4jjgqYs44Oo44KmDQor44K144OI44KmLOODkuOCteOCqg0KK+OCteODr+ODgCzjgrfjg7PjgqTjg4ENCivjgrfjg63jgrXjgq0s44Oo44Km44Kk44OBDQor44K344OQ44KkLOOCueOCueODoA0KK+OCteOCpOODiOOCpizjg5/jg4HjgqoNCivjgrnjgrrjgq0s44OI44K344KqDQor44K944Ks44OZLOOCpOOCteOCqg0KK+OCu+OCrOODryzjg4Hjg5Ljg60NCivjgrfjg5/jgros44Of44OO44OrDQor44K544K644KtLOODqOOCpuOCuOODreOCpg0KK+OCt+ODreODpOODnizjg6jjgrfjg5LjgrMNCivjgrfjgqTjg4os44Oo44K344KqDQor44K144Ok44OeLOODnuODouODqw0KK+OCteOCq+ODouODiCzjg57jgrPjg4gNCivjgrXjg4jjgqYs44OS44Ot44K3DQor44K544K644KtLOOCv+ODgOODqOOCtw0KK+OCueOCuuOCrSzjg4bjg4Tjg63jgqYNCivjgrXjgrXjgrss44Kr44OE44Om44KtDQor44K144Kv44Op44KkLOODnuOCteOCrQ0KK+OCt+ODnuODgCzjgrvjgqTjgrgNCivjgrXjg4jjgqYs44Kr44OE44OS44OtDQor44K344Oi44OOLOODqOOCpuOCueOCsQ0KK+OCueOCuuOCrSzjg6jjgrfjg4rjg6oNCivjgrnjgq7jg6Ljg4gs44Oe44K144KqDQor44K344Of44K6LOOCv+OCseOCqg0KK+OCteODjizjg6jjgrfjg47jg5YNCivjgrnjgrrjgq0s44Kz44Km44OY44KkDQor44K344Oe44OALOOCq+OCuuODkuOCsw0KK+OCueOCuuOCrSzjg4/jg6vjg5LjgrUNCivjgrnjgq7jg5Xjgrgs44OS44OI44K3DQor44K144Kr44KkLOOCt+ODs+OCpOODgQ0KK+OCteOCq+OCsOODgSzjgqjjgqTjgrgNCivjgrnjgqzjg6/jg6ks44OA44Kk44K144KvDQor44K344OO44K644KrLOOCuOODpeODs+OCpOODgQ0KK+OCt+OCrCzjg5/jg4TjgqoNCivjgrXjgqvjgqzjg58s44OI44Oo44OeDQor44K544K644KtLOOCq+OCuuODpuOCrQ0KK+OCueOCruODjizjg5Ljg4fjgqoNCivjgrnjgq7jgqbjg6ks44K544K544OgDQor44K344Of44K6LOOCq+OCuuODnw0KK+OCueOCuuOCrSzjgr/jgrHjgrfjgrINCivjgrXjgrXjgrMs44K744Kk44K+44KmDQor44K744KtLOODpuOCreODqOOCtw0KK+OCteODiOOCpizjgr/jg4TjgrgNCivjgrfjg54s44OS44Ot44K3DQor44K544K644KtLOOCreODqOODhuODqw0KK+OCteOCq+ODouODiCzjg6jjgrfjgqvjgroNCivjgrXjgrXjgq0s44OS44Ot44K3DQor44K344Oe44OALOOCpOOCveOCuA0KK+OCteOCpOODiOOCpizjgr/jg4Djg5LjgrUNCivjgrfjgqrjgr8s44OI44Oo44KqDQor44K344Kq44OALOOCpOOCteODoA0KK+OCueODgCzjgqjjgqTjgrgNCivjgrfjgqTjg4os44Kx44Oz44K+44KmDQor44K344Kq44OO44OkLOODhuODhOOCqg0KK+OCteOCpOOCt+ODp+OCpizjg6Tjgrnjg5Ljg60NCivjgr3jgqTjg4As44Ko44Kk44Kk44OBDQor44K944OeLOOCq+ODs+OCuA0KK+OCteODiOOCpizjg5Ljg63jgrcNCivjgrXjg4jjgqYs44K/44Kx44Of44OBDQor44K344Kq44OQ44OpLOOCreODqOOCqA0KK+OCteOCteOCquOCqyzjg6jjgrfjgr/jgqsNCivjgrXjgrXjgq0s44Of44OE44OO44OWDQor44K744OILOODleODn+OCqg0KK+OCt+ODpeODieOCpizjgr/jgqvjgqoNCivjgrXjgqvjg6Ljg4gs44OS44Ot44K3DQor44K144Kv44OeLOOCv+OCq+OCtw0KK+OCt+ODjuOCtuODryzjg4Tjg6jjgrcNCivjgrfjgqrjg5Djg6ks44OS44Ot44Om44KtDQor44K144Kv44Op44KkLOODpuOCuuODqw0KK+OCteODiOOCpizjg6HjgrDjg6ANCivjgrXjgq/jg6njgqQs44OI44K344KqDQor44K144K144OZLOODkuODreOCtw0KK+OCteODiOOCpizjg6rjg6Xjgqbjgr7jgqYNCivjgrnjgq7jgqbjg6ks44Om44Km44K+44KmDQor44K144Kr44KkLOODnuOCteOCqg0KK+OCveODnizjg47jg5bjgqoNCivjgr3jgqbjg6Qs44K744Kk44K4DQor44K944ON44Kr44OELOOCouOCreODqQ0KK+OCu+OCreODjSzjgr/jgrHjgqoNCivjgrnjgrrjgq0s44OO44Oq44KqDQor44K744Kt44ONLOODiOOCt+ODhOOCsA0KK+OCteOCq+OCreODkOODqSzjgqvjgrrjg4jjgrcNCivjgrfjg6Ljgqvjg6/jg5ks44Kx44OzDQor44K144Ov44Og44OpLOODiuODq+ODnw0KK+OCu+OCrSzjgrjjg6Xjg7PjgqTjg4ENCivjgrnjgrrjgq0s44Kz44K644KoDQor44K144Kr44Oe44KtLOODkuODh+OCouOCrQ0KK+OCteOCrOODryzjg4jjgrfjg5LjgrUNCivjgrnjgq7jg6Tjg54s44K/44Kx44Om44KtDQor44K544Ku44Oi44OILOOCsw0KK+OCu+OCqizjg6bjgqbjgrgNCivjgrXjgqTjg4jjgqYs44K/44Kr44K3DQor44K144Kr44KkLOODn+OCreOCqg0KK+OCteOCr+ODqeOCpCzjgr/jg4Djg5Ljg60NCivjgrvjgq3jg40s44Oe44K144OO44OqDQor44K144OI44KmLOODj+ODhOODnw0KK+OCt+ODn+OCuizjgr/jgqvjgrcNCivjgrfjg5/jgros44OI44K344KqDQor44K144Kk44OI44KmLOODnuOCteOCqg0KK+OCteOCr+ODqeOCpCzjg57jgrXjgqLjgq0NCivjgrnjgq7jg6Tjg54s44Ok44K544KqDQor44K344K644KrLOODkuOCteODiuOCqg0KK+OCt+ODqeOCq+ODryzjgqLjgq3jg6kNCivjgrXjgqTjg4jjgqYs44Om44K644OrDQor44K144Kt44Oi44OqLOOCpOODr+OCqg0KK+OCteODiOOCpizjg4bjg4TjgqoNCivjgrvjgq3jgrDjg4Es44Kq44Kt44OI44K3DQor44K744Kt44ONLOODjuODquOCsw0KK+OCt+ODkOOCvyzjgrPjgqbjgrjjg63jgqYNCivjgrnjgrrjgq0s44K/44Kr44OS44OtDQor44K144Kk44OI44KmLOODkuOCteOCqg0KK+OCteODiOOCpizjg47jg6rjgqoNCivjgrvjgq3jg40s44Kq44K144OgDQor44K144Kr44KkLOODj+ODq+ODkuOCsw0KK+OCteOCteOCqizjgrfjg7PjgrgNCivjgrnjg4njgqYs44Oe44Kz44OIDQor44Oi44OqLOOCt+ODp+OCpuOCuA0KK+OCt+ODn+OCuizjgqjjgqTjgr7jgqYNCivjgrXjg4jjgqYs44OG44Or44KqDQor44K544K644KtLOOCpOOCteOCqg0KK+OCt+ODoOODqSzjg5Ljg63jg4jjgrcNCivjgrfjg5DjgrXjgq0s44OS44Ot44K3DQor44K544Ks44Oe44K/LOOCq+OCuuOCqg0KK+OCueOCuuOCrSzjg5Ljg63jgrcNCivjgrfjgqrjg47jg6Qs44Kt44Oo44Kr44K6DQor44K/44Kr44OP44K3LOODiOOCt+ODreOCpg0KK+ODhOOCreODpOODnizjgq3jgq/jgqoNCivjg4Tjg47jg4As44Oo44K344KtDQor44K/44Kr44OP44K3LOODiuOCquODiA0KK+ODiOOCr+OCtuODryzjg6Ljg6rjg4/jg6sNCivjgr/jgrDjg4Es44Oe44K144KqDQor44K/44Kr44KuLOODkuODh+OCqg0KK+OCv+OCq+ODjizjg4bjg6vjg5/jg4QNCivjgr/jg4/jg6ks44Kt44Oo44Kr44K6DQor44OI44Oo44K144OvLOOCs+OCpuOCpOODgQ0KK+ODiOODqOODnuOCuSzjgrHjgqTjgqTjg4ENCivjgr/jgqvjg4/jgrcs44Oe44K144OO44OWDQor44K/44Kx44Km44OBLOODhuOCpOOCuA0KK+OCv+OCreOCpOOCtyzjg6rjg6fjgqbjgrgNCivjgr/jgqvjgqTjgrcs44K344Ky44KqDQor44K/44Kr44K144KtLOOCseODs+OCuA0KK+OCv+ODi+OCrOODryzjg5Ljg63jg6bjgq0NCivjgr/jgqvjg4/jgrcs44Oe44K144OI44K3DQor44K/44OK44OP44K3LOOCs+OCpuOCuA0KK+OCv+ODnuOCrSzjg5Ljg63jgrcNCivjg4jjg5As44Oe44K144K3DQor44K/44OQ44K/LOOCv+OCq+OCtw0KK+ODhOOCuCzjgr/jgqvjgqoNCivjgr/jg4rjgqss44Ki44OE44K3DQor44K/44Kr44OP44K3LOODnuOCteODjuODqg0KK+ODiOOCr+ODiuOCrCzjgq3jg5/jgqoNCivjgr/jgrDjg4Es44Oe44K144KqDQor44K/44Kt44K244OvLOOCq+ODhOOCt+OCsg0KK+ODiOODnyzjgr/jg43jg57jgrUNCivjg4Tjgrgs44Kx44Kk44KzDQor44Km44OB44OALOODiOOCt+OCqg0KK+OCv+ODiuOCqyzjgqTjg6/jgqoNCivjg4Tjg43jg6jjgrcs44OO44Oq44Kr44K6DQor44K/44Kr44OOLOODoOODjeOCqg0KK+OCv+OCq+ODj+OCtyzjg6bjgq3jg4ENCivjgr/jgqvjg6Tjg4rjgq4s44Oo44Km44Kk44OBDQor44K/44Kx44OALOOCseOCpOOCueOCsQ0KK+OCv+ODnCzjg6bjgr/jgqsNCivjgr/jg4rjgqss44Kr44K644KqDQor44K/44Kx44Km44OBLOODnuOCteOCrQ0KK+OCv+OCq+ODpOOCuSzjg4jjg6jjg58NCivjg4Tjg4Hjg6Qs44Om44OP44OEDQor44OI44Kv44OK44KsLOOCseODs+OCuA0KK+ODhOODgeODgCzjg4rjgqrjgqvjgr8NCivjg4Tjg5zjgqQs44Ko44Kk44Ko44OEDQor44K/44Kr44OP44K3LOODnuOCteOCt+OCsg0KK+ODhOOCq+ODouODiCzjgrXjg4Djg6ANCivjgr/jg4rjgqss44K344Ky44OrDQor44OI44Oi44OE44ONLOOCueOCueODoA0KK+ODgeOCuCzjg4jjgrfjg4/jg6sNCivjgrXjg4jjgqYs44K744Kk44K4DQor44K/44Kr44K/LOODhOODjeOCqg0KK+ODiOODj+OCvyzjg6jjgrfjg58NCivjgr/jgqvjg4/jgrcs44Of44OO44OrDQor44K/44Kr44OP44OeLOODqOOCt+OCouOCrQ0KK+ODhuODqeOCteODryzjg4rjgqrjgrMNCivjgr/jgqvjg5Djg6Tjgrcs44K344On44Km44K4DQor44OG44Op44OALOOCt+ODpeOCpuOCuA0KK+ODhOOCq+ODgCzjgrvjgqTjgrgNCivjgr/jg4rjgqss44OS44OH44KqDQor44OI44Oq44Oe44OrLOOCv+ODn+OCqg0KK+ODhOODgeODgCzjg57jg6Ljg6sNCivjgr/jgq3jg6Ljg4gs44OI44K344OS44KzDQor44K/44Kt44KkLOODkuODh+OCouOCrQ0KK+OCv+ODjeODgCzjgrHjg7PjgrgNCivjgr/jg6Djg6ks44Oo44K344OO44OqDQor44K/44OJ44Kz44OtLOODkuOCteOCqg0KK+OCv+OCq+OCqizjg57jgrnjg58NCivjgr/jg4rjgqss44OS44Kr44OrDQor44K/44Kr44OP44K3LOODj+ODhOOCqg0KK+OCv+OCq+ODj+OCtyzjgrfjgrLjg6bjgq0NCivjgr/jgqvjg4/jgrcs44OV44K444KqDQor44OI44Of44K/LOODiOOCquODqw0KK+OCv+OCq+ODj+OCtyzjgqLjg4Tjg47jg6oNCivjgr/jg4vjgrDjg4Es44Of44OB44Ki44KtDQor44K/44OK44KrLOODpuOCpuOCvuOCpg0KK+ODhOODnOOCpCzjg5Ljg63jg58NCivjgr/jgrHjgqbjg4Es44Ob44OW44OzDQor44OE44OALOODiOODqOOCtw0KK+OCv+OCseODgCzjg57jgrXjg6bjgq0NCivjgr/jgrHjgqQs44K344Ky44KqDQor44OE44K444Kr44OvLOODpuOCpuOCpOODgQ0KK+OCv+OCseODoOODqSzjgrvjgqTjgrjjg6UNCivjgr/jgq0s44Oe44K144Ki44KtDQor44K/44Kr44OALOODnuOCteOCouOCrQ0KK+OCv+OCreOCtuODryzjgrfjgrLjg6sNCivjgr/jg4rjgqss44Oe44K144K4DQor44K/44OL44Og44OpLOOCv+OCseODqOOCtw0KK+ODqOOCt+OCtuODryzjg57jgrXjg4/jg6sNCivjg4Tjg43jgqvjg68s44K/44Ot44KmDQor44K/44OK44KrLOODkuODreOCtw0KK+OCv+OCq+ODgCzjgqvjg4TjgqoNCivjg4Tjg6ss44Ki44Kt44OpDQor44K/44OLLOODnuOCteODkuODrQ0KK+OCv+OCsOODgSzjgqTjgrXjgqoNCivjgr/jg4rjgqss44K444Ol44Oz44K+44KmDQor44K/44OL44Kw44OBLOOCq+OCuuODkuODrQ0KK+OCv+ODiuOCqyzjg47jg6rjg5/jg4QNCivjg4Tjgrgs44Om44Km44Kk44OBDQor44K/44OK44KrLOOCq+ODhOODnw0KK+ODhOODpuOCrSzjg5LjgrXjgqoNCivjgr/jg57jg6ss44Oe44K144OfDQor44OE44OB44OkLOOCseOCpOOCuA0KK+ODhOODq+OCquOCqyzjg47jg5bjgqoNCivjgr/jgqvjg4/jgrcs44OG44OE44KqDQor44K/44Kr44OP44K3LOODn+ODhOOCsw0KK+ODiOOCpuODleOCr+OCuCzjg4jjgrfjgqoNCivjgr/jg4rjgqss44Kq44Kt44OE44KwDQor44K/44Kr44KuLOOCreODp+OCpuOCsw0KK+OCv+OCq+ODj+OCtyzjg6jjgrfjg5LjgrUNCivjgr/jg4vjgrDjg4Es44Oq44On44Km44K4DQor44OI44Oo44OALOODkuODiOOCtw0KK+OCv+OCq+OCrizjgr/jgrHjgrcNCivjgr/jgrHjgqQs44K344Ky44OrDQor44OE44OALOODleODn+OCqg0KK+ODhOODjeODkuODrSzjgrjjg6Xjg7PjgrgNCivjgr/jgq3jgrbjg68s44OI44K344KqDQor44K/44OB44OQ44OKLOOCtOOCpOODgQ0KK+OCv+OCq+ODj+OCtyzjgqvjg4Tjg6bjgq0NCivjgr/jg4vjgrDjg4Es44Kz44K544KxDQor44K/44Kx44OALOOCq+OCuuODiA0KK+ODhOODgeODpCzjgrHjg7PjgqTjg4ENCivjgr/jgqvjg4/jgrcs44OI44K344Ki44KtDQor44K/44OO44Km44KoLOODkuOCs+OCteODluODreOCpg0KK+OCv+OCq+ODkOOCv+OCsSzjg57jgrXjg47jg5YNCivjgr/jgqvjg4/jgrcs44Oe44K/44K144OW44Ot44KmDQor44OV44OK44KtLOODhuODq+ODpOOCuQ0KK+OCv+OCseODgCzjgqvjg4Tjg57jgrUNCivjg4jjgq/jg4rjgqws44K/44OEDQor44Ki44K144KkLOODpuOCpuOCuA0KK+OCv+OCq+ODj+OCtyzjg5/jgq3jgrMNCivjgr/jgqvjg4/jgrcs44OO44Oq44KqDQor44K/44Ks44OvLOOCt+ODp+OCpuOCpOODgQ0KK+OCv+ODiuOCqyzjg47jg5bjg6bjgq0NCivjgr/jg4Hjgqvjg68s44K/44Kx44K3DQor44K/44Kw44OBLOOCq+OCuuODqOOCtw0KK+OCv+OCq+OCteOCrSzjgqLjgq3jg6kNCivjgr/jg57jgqrjgq0s44K344K644KqDQor44K/44OK44KrLOOCu+OCpOOCpOODgeODreOCpg0KK+OCv+OCq+ODjizjgrfjg7MNCivjgr/jgrHjgqbjg4Es44K344Ky44OrDQor44OE44OALOOCu+ODs+OCuA0KK+OCv+OCq+ODiuODnyzjg57jgrXjg6sNCivjg4Tjgq3jg4rjg68s44Oo44K344OK44KqDQor44OI44Of44Oi44OqLOOCueOCueODoA0KK+OCv+OCseODgCzjg4jjgqrjg6sNCivjg4jjgqzjgrcs44OG44OE44OS44KzDQor44OE44K644KtLOOCt+OCsuODiOOCtw0KK+ODiOODk+OCvyzjg47jg5bjgqLjgq0NCivjg4jjg6Ljg4rjgqws44OE44ON44Kr44K6DQor44OE44OE44KkLOOCt+OCsuOCouOCrQ0KK+OCv+OCq+OCrizjgrjjg6Xjg7PjgrgNCivjgr/jg4vjgrDjg4Es44Kr44K644OI44K3DQor44K/44Kr44OOLOODiOOCt+ODkuODrQ0KK+OCv+ODiuOCqyzjgrXjg4jjgrcNCivjg4jjg57jg4Tjg6os44K344Ot44KmDQor44K/44Kr44KuLOOCpOODhOOCqg0KK+OCv+OCq+OCt+ODnizjg5Xjg5/jgqoNCivjgr/jg4/jg6ks44Oo44K344Ki44KtDQor44K/44OK44KrLOOCq+OCuuOCsw0KK+OCv+OCq+ODgCzjg6jjgrfjgqoNCivjg4jjg6rjgqQs44Of44OE44Om44KtDQor44K/44Kx44OZLOODjuODluODpuOCrQ0KK+ODhOOCq+ODouODiCzjgqLjgq3jgqoNCivjgr/jg6Djg6ks44OO44OW44OS44OtDQor44OI44Of44OK44KsLOOCteOCq+OCqA0KK+OCv+OCq+OCpOODryzjgrXjg4jjgrcNCivjgr/jg5Djgr8s44Kx44Oz44K4DQor44K/44Kr44OP44K3LOOCr+ODi+OCqg0KK+ODhuODs+ODneOCpuODquODsyzjgr3jgqbjgqTjg4ENCivjg4bjg6njgqbjg4Es44K144OA44Om44KtDQor44K/44Kr44OP44K3LOOCreODqOOCtw0KK+OCv+OCq+OCuyzjg4Hjgqvjg6kNCivjgr/jgrHjg6Djg6ks44Oi44OI44KkDQor44K/44Og44Kr44KkLOODleODn+OCqg0KK+OCv+OCq+ODj+OCtyzjg6bjgqbjgrgNCivjgr/jgrHjg4Qs44Kr44OE44K4DQor44K/44OO44Kq44KrLOOCueOCueODoA0KK+OCv+OCq+ODj+OCtyzjgr/jg4DjgrcNCivjg4jjgqrjg6Tjg54s44Kt44Oo44OO44OWDQor44K/44Kx44Km44OBLOOCouODhOOCtw0KK+OCv+OCq+ODj+OCtyzjg57jgrXjgqoNCivjgqbjgrfjgqos44Om44K644OrDQor44Km44K544KuLOOCq+OCuuODkuODrQ0KK+OCpuODgeODpOODnizjg6jjgqbjgqTjg4ENCivjgqbjg6Hjg4As44Kr44K644K544KxDQor44Km44Kx44Oi44OqLOODnuOCteODig0KK+OCpuODgeODgCzjg5/jg4Hjg6QNCivjgqbjgqjjg4As44OS44K144KqDQor44Km44OB44OALOOCseOCpOOCuA0KK+OCpuODhOOCrSzjg4bjg4TjgqoNCivjgqbjgqjjg4As44Of44Kt44OS44KzDQor44Km44OB44OALOODkuODh+OCrQ0KK+OCpuOCqOODj+ODqSzjgrfjg6XjgqYNCivjgqbjgqjjg6Djg6ks44OO44OW44OkDQor44Km44OB44OALOOCteODgOODpuOCrQ0KK+OCpuODgeODoOODqSzjgrHjgqTjgqTjg4ENCivjgqbjg4Hjg4As44Kx44Oz44K544KxDQor44Km44OB44OALOOCseOCpOOCpOODgQ0KK+OCpuOCqOOCrSzjgqLjgq3jgrMNCivjgqbjgqvjgrgs44Oe44K144OG44OrDQor44Km44OB44OALOODnuOCteOCouOCrQ0KK+OCpuOCqOODoOODqSzjg5Ljg4fjgqoNCivjgqbjgrfjgqos44OI44Kv44K4DQor44Km44Oh44Og44OpLOODiOOCt+OCqg0KK+OCpuODoeOCt+ODnizjg6rjgq3jg4TjgrANCivjgqbjgrPjg7Ms44Kr44Kq44OrDQor44Km44OB44Kk44KxLOOCuOODpeODs+OCpOODgQ0KK+OCpuODq+OCt+ODjizjgr/jgqvjgqLjgq0NCivjgqbjg4Hjg4rjgrcs44OY44Kk44K/DQor44Km44Kw44K1LOODnuOCteODpuOCrQ0KK+OCpuODjizjg4jjgrfjg5Ljg4cNCivjgqbjgqjjgq0s44Of44OO44OrDQor44Km44Ko44Oi44OILOOCseODsw0KK+OCpuOCqOODoOODqSzjg6bjgq3jgqoNCivjgqbjgqjjg4/jg6ks44OS44Ot44K3DQor44Km44Ko44OALOOCt+ODs+ODmuOCpA0KK+ODr+OCv+ODiuODmSzjg5LjgrXjg6bjgq0NCivjg6/jgr/jg4rjg5ks44Kr44OE44OfDQor44Ov44K/44OK44OZLOOCreODs+ODpA0KK+ODr+OCq+ODoOODqSzjg6Tjgrnjg60NCivjg6/jgr/jg4rjg5ks44OS44OH44K4DQor44Ov44K/44OK44OZLOODqOOCt+OCv+OCqw0KK+ODr+OCv+ODiuODmSzjg5Ljg63jg4/jg6sNCivjg6/jgr/jg4rjg5ks44Kr44OE44OK44OqDQor44Ov44K/44OK44OZLOODkuODh+OCqg0KK+ODr+OCv+ODiuODmSzjgqvjg4Tjg5LjgrMNCivjg6/jgr/jg4rjg5ks44Ok44K544Ki44KtDQor44Ov44K/44OK44OZLOOCv+ODgOOCtw0KK+ODr+OCreOCvyzjgrPjgqbjg6HjgqQNCivjg6/jgr/jg4rjg5ks44OI44Kt44KqDQor44Ov44K/44OK44OZLOOCs+ODs+OCtOOCpg0KK+ODr+OCv+ODiuODmSzjgqLjgq3jg6kNCivjg6/jgr/jg4rjg5ks44Kq44K144OgDQor44Ov44K/44OK44OZLOOCseODs+OCuA0KK+ODr+OCv+ODiuODmSzjgrnjg5/jgr/jg4ANCivjg6/jg4As44Ok44K544K3DQor44Ov44K/44OK44OZLOOCv+ODhOODkuOCsw0KK+ODr+ODgCzjgr/jgrHjg5/jg4QNCivjg6/jg4As44Ob44Oe44OsDQor44Ov44K/44OK44OZLOODnuOCteOCouOCrQ0KK+ODr+OCv+ODiuODmSzjgqLjgq3jg6kNCivjg6/jgr/jg4rjg5ks44K344Ky44Ki44KtDQor44Ov44Kr44OQ44Ok44K3LOODn+ODjeOCqg0KK+ODr+OCv+ODiuODmSzjg5LjgrXjgqoNCivjgqrjgqrjgr8s44Oe44Kz44OIDQor44OV44K444Ov44OpLOOCueODn+OCouOCrQ0KK+OCs+OCpOOCsSzjg5/jg4HjgqoNCivjgqvjgr/jgqrjgqss44OG44OE44OkDQor44OS44Ot44K344KyLOOCreODqOOCtw0KK+OCt+ODs+OCtuODryzjg5Ljg63jgrcNCivjg5/jgrrjgqvjg58s44Oe44K144Of44OEDQor44OK44Kr44K444OeLOOCseOCpOOCpOODgQ0KK+ODleOCr+OCt+ODnizjgrfjgrLjgq0NCivjg4rjgqss44OS44Ot44K3DQor44OS44Op44Ok44OeLOODnuOCteOCsw0KK+ODi+ODr+ODpOODnizjgqvjg4TjgrgNCivjgrfjg5/jgros44K944Km44K444Ot44KmDQor44OV44Or44K144OvLOODhOODqOOCtw0KK+OCteOCr+ODqeOCpCzjg5/jgrrjg5sNCivjgr/jgrHjg4rjgqss44Ki44OE44OO44OWDQor44K544Ku44Km44OpLOOCq+ODqOOCsw0KK+OCq+ODiOOCpizjgrHjg7PjgrgNCivjg5vjgrfjgqvjg68s44Oe44K144KqDQor44Kq44Ks44OvLOOCpOOCteOCqg0KK+OCq+OCt+ODr+OCrizjgrMNCivjgrXjgqvjgqQs44OS44Ot44KzDQor44Oi44OqLOODj+ODq+OCqg0KK+ODm+ODs+ODnCzjg47jg5bjg6bjgq0NCivjgqTjgqTjgrjjg54s44Oo44K344Ki44KtDQor44Kz44K444OeLOOCv+OCq+OCqg0KK+OCv+OCq+ODj+OCtyzjg47jg5zjg6sNCivjg4/jgr8s44K344On44Km44K544KxDQor44Kq44Ks44OvLOOCouOCreODjuODqg0KK+ODhOODgeODpCzjgqvjg4Tjg6QNCivjgrPjg6Tjg54s44Kk44K144KqDQor44OV44Or44OfLOODhuODhOOCqg0KK+OCr+ODoSzjg4Tjg43jgqoNCivjgq/jg6njgr8s44K744OE44KqDQor44Km44K344K444OeLOODnuOCteOCq+OCug0KK+OCqOODkOODiCzjgqvjg4Tjg47jg6oNCivjgrXjg4jjgqYs44OO44OW44Om44KtDQor44Og44K344OjLOODiuOCquODkuOCsw0KK+ODpuOCouOCtSzjg57jg6Ljg6sNCivjgq3jgq/jg4Es44OK44Kq44KtDQor44Oe44OE44OQ44Ok44K3LOODhuODq+ODqOOCtw0KK+ODnuODhOOCpCzjgqLjgq3jg6kNCivjgr/jgrHjg6Djg6ks44OS44Ot44K3DQor44OG44Op44K344OeLOODqOOCpuOCueOCsQ0KK+OCr+ODqSzjg5Ljg4fjgq/jg4sNCivjg57jg4TjgqQs44Oo44K344KqDQor44Km44Ko44OALOOCpOOCteOCqg0KK+ODj+ODpOOCtyzjgrfjg7PjgqTjg4ENCivjgqvjg6/jg4os44OA44Kk44K444Ot44KmDQor44OP44Ok44K3LOOCq+OCuuOCqg0KK+ODh+ODouODiCzjg57jgrXjg5Ljg60NCivjgrfjg5bjgq0s44K/44Kx44K3DQor44OP44OeLOOCv+ODhOOCqg0KK+OCqOODs+ODiSzjgrPjgqbjgrbjg5bjg63jgqYNCivjg5/jg6Tjg6Ljg4gs44K/44Kr44OS44K1DQor44Oe44OE44OALOODkuODreOCtw0KK+ODpOODnuODouODiCzjg4jjg6LjgrMNCivjg6Djg6njgqvjg58s44K344Ky44KqDQor44Kq44Kr44OALOODgOOCpOOCreODgQ0KK+ODr+OCv+ODiuODmSzjgqvjgrrjg6bjgq0NCivjgqTjg6/jgrXjgq0s44Ki44Kt44OoDQor44Oo44K344OALOOCueODn+ODpuOCrQ0KK+OCquOCquODouODqizjg57jgrXjg47jg6oNCivjg5/jgrrjgr/jg4ss44OS44K144KoDQor44K544Ku44Km44OpLOOCq+OCuuOCqg0KK+ODjuODiuOCqyzjg5/jg4Tjgr/jgqsNCivjg6/jgr/jg4rjg5ks44Kk44K144OgDQor44K144Kk44OI44KmLOOCv+OCseOCqg0KK+OCquOCquOCq+ODr+ODqSzjgrLjg7Pjgr/jg63jgqYNCivjgqvjg4njgqTjgrEs44K/44Kx44K/44OADQor44Oe44OE44Oi44OILOODjuODquOCq+OCug0KK+ODiuOCqyzjgr/jgqvjgqoNCivjgqvjg4jjgqYs44Kx44Oz44K+44KmDQor44Kr44Ov44Kk44K3LOODpuOCpuOCsw0KK+ODiuOCrOOCteODryzjg4Tjg4jjg6ANCivjgrnjg6Tjg54s44Kv44Oz44Ot44KmDQor44Kv44Oe44K344OtLOODkuODreOCtw0KK+OCv+OCq+ODkOODpOOCtyzjg5Ljg4fjgqoNCivjgrPjg7Pjg4ks44Kx44Oz44K+44KmDQor44Kk44OK44OQLOOCteODiOODqw0KK+OCs+ODkOODpOOCtyzjg4jjgrfjg5Ljg60NCivjg6Tjg57jgrDjg4Es44Of44Kr44KzDQor44K544K644KtLOODpuOCpuOCuA0KK+OCouOCreODpOODnizjg6bjgr/jgqsNCivjgr/jgqvjg4As44Ki44Kt44OpDQor44K144Ov44KkLOODnuOCteODkuOCsw0KK+ODiuOCq+OCvyzjgq3jg6jjg6bjgq0NCivjgqTjgr/jg5As44Om44Km44Kk44OBDQor44Kv44OL44Ku44K/LOODqOOCpuOCpOODgQ0KK+ODpOODnuODgCzjg6jjgqbjgrMNCivjg6Tjg57jg4As44Om44Km44KzDQor44K/44Kr44OP44K3LOODqOOCpuOCpOODgeODreOCpg0KK+OCpuODoeODoOODqSzjg47jg6rjg5LjgrMNCivjgrPjg5Djg6Tjgrcs44OO44OW44Ki44KtDQor44Kr44ON44Of44OELOOCv+ODgOOCqg0KK+OCreODiSzjg57jgrXjgrcNCivjgqvjg43jgq0s44K/44OA44KqDQor44Kz44Og44OpLOODnuOCteODkuODrQ0KK+ODleOCuOODouODqizjgrHjg7PjgqTjg4ENCivjg6Tjg57jgrfjgr8s44OG44Or44K/44KxDQor44Kv44Oq44Ok44OeLOODnuOCteODkuODrQ0KK+ODiOOCtuODryzjgr/jgqvjgrcNCivjgqTjgrfjgqQs44OB44Kr44OI44K3DQor44K/44Kr44OP44K3LOODqOOCpuOCpOODgQ0KK+OCv+ODiuOCqyzjgqvjgrrjg58NCivjgqTjgrfjgrbjgq0s44OG44OE44KqDQor44OP44Op44OALOODnuOCteODkuODrQ0KK+ODiOOCr+ODkuOCtSzjgrfjgrLjg6TjgrkNCivjgqTjgrfjg6Djg6ks44K/44OA44OS44OtDQor44Km44Ko44OALOOCv+OCq+OCtw0KK+OCquODleODgSzjgq/jg4vjg5Ljg60NCivjg6Tjg4Tjg6vjgq4s44Of44OE44KqDQor44Of44OK44OILOODnuODpuODnw0KK+ODqOOCt+ODgCzjg57jgrXjg5Ljg60NCivjg5/jg4rjg58s44Ok44K544KqDQor44Kq44KrLOOCouOCreOCqg0KK+OCpOODgeOCq+ODryzjgqvjgrrjgqoNCivjgqrjgqrjgq/jg5ws44OS44OH44KtDQor44Kk44K344OALOODkuODreODpuOCrQ0KK+ODiOODn+OCvyzjgqTjgrXjgqoNCivjg5Ljg6njgqrjgqss44OS44Ot44OS44K1DQor44Kr44OI44KmLOODkuODh+OCqg0KK+OCquODoOODqSzjg6Djg4TjgqoNCivjgqrjgrXjgrjjg54s44OI44K344OkDQor44OV44OK44Kz44K3LOOCu+ODhOOCqg0KK+OCs+OCpuODgCzjg5Ljg4fjgqLjgq0NCivjgqLjgrXjgqrjgqss44K/44OE44KqDQor44Kr44K544KsLOOCouOCseODnw0KK+ODouODouODj+ODqSzjg5bjg7PjgqTjg4ENCivjgqbjgqjjg6Djg6ks44OI44K344OS44OHDQor44Kq44OQ44K/LOOCq+OCuuOCsw0KK+OCquODjuODgCzjg6bjgq3jgqoNCivjg5/jg6Tjgrfjgr8s44Kr44Oz44K4DQor44Ob44K944OkLOODpOOCueOCqg0KK+ODpOOCt+ODrSzjg6bjgq3jgqoNCivjg6/jgr/jg4rjg5ks44Ki44OE44K3DQor44Kt44Og44OpLOODiOOCreODgQ0KK+OCq+ODn+OCuOODp+OCpizjg5LjgrXjgqgNCivjgrXjg4jjgqYs44Oo44K344Kq44KtDQor44Oe44OE44K344OeLOOCouOCreODqQ0KK+OCq+OCv+ODpOODnizjg6jjgqbjgrMNCivjg5Ljg6njg44s44K044OY44KkDQor44OK44Kr44Op44KkLOODgOOCpOOCueOCsQ0KK+ODqOOCs+ODpOODnizjg5LjgrXjgqoNCivjgqrjgqrjgqzjg40s44OI44Oi44OS44OtDQor44Kt44Og44OpLOODnuOCs+ODiA0KK+ODjuOCtuOCtSzjg6jjgrfjg47jg6oNCivjg6Ljg6rjg44s44Kr44K644K344KyDQor44Ko44OB44K044OkLOODn+ODgeODkuOCsw0KK+ODleOCr+OCt+ODnizjg5Ljg4fjgqoNCivjgqTjg4jjgqYs44Oe44K144Om44KtDQor44Kk44Kx44OALOODpuOCreOCsw0KK+ODiOOCr+ODiuOCrCzjg6rjgqgNCivjgq3jg6Ljg4gs44Ki44Kk44KzDQor44Kq44K344OALOOCteODiOOCsw0KK+ODj+OCt+ODouODiCzjg47jg6rjgqvjgroNCivjg47jgrDjg4Es44OI44K344OO44OqDQor44Of44Ok44OZLOOCq+OCuuODiA0KK+OCr+ODr+ODj+ODqSzjg6TjgrnjgqgNCivjgq3jg6Djg6ks44OS44Ot44OfDQor44Kq44OALOOCq+OCuuODpuOCrQ0KK+OCouOCpOOCtuODryzjgr/jg5/jgqoNCivjgqbjgqjjg44s44Kr44OE44KqDQor44Oe44OE44OQ44OpLOODjuODquODpuOCrQ0KK+OCv+ODnuOCpCzjgqvjgrrjg5/jg4ENCivjgrfjg6njgqQs44Oo44K344KqDQor44Kq44Kq44OP44K3LOOCs+OCpuOCuA0KK+OCv+ODn+ODpCzjg5Xjg5/jg6QNCivjg4/jg6njg4As44Oo44K344KzDQor44Km44K544KkLOOCv+OCq+OCtw0KK+OCs+ODqizjgrPjgqbjgqTjg4Hjg63jgqYNCivjg47jg4As44K344Ky44OS44KzDQor44OK44Of44KtLOODnuOCteODiA0KK+ODiuOCq+OCqizjg57jgrXjg5/jg4QNCivjgqvjg4njg6Qs44Ki44Kt44OpDQor44Kq44OOLOODiOOCt+ODkuODhw0KK+OCt+ODluOCq+ODryzjgrfjg7PjgqTjg4ENCivjgqTjg6/jgrXjg68s44Oe44OK44OWDQor44K/44OW44K7LOOCpOODgeODreOCpg0KK+OCquOCteODryzjgr/jgqvjg6jjgrcNCivjg4rjgqvjg4DjgqQs44Kx44Oz44K4DQor44Ko44Ks44K344OpLOODkuODreODpuOCrQ0KK+OCteOCteOCrSzjgqvjg4TjgqoNCivjg5Xjgq/jg4Es44Kr44K644OS44KzDQor44Oo44K344Ok44K5LOOCtOOCpg0KK+ODr+OCv+ODiuODmSzjgrPjgrXjg4gNCivjgqbjgqjjg44s44Os44Kk44KzDQor44Ko44OI44KmLOODnuOCteODjuODqg0KK+ODqOOCt+ODgCzjg57jgrXjgqoNCivjgr/jgrHjgqQs44Om44Km44Kk44OBDQor44OP44Ok44K3LOODkuOCteOCtw0KK+ODnuOCv+OCrSzjgrfjg7PjgrQNCivjg6Ljg6rjg6Ljg4gs44Kk44OB44Ot44KmDQor44Kk44OP44OpLOOCseODs+OCuA0KK+ODhOOCq+ODj+ODqSzjg4bjg6vjgqoNCivjgqvjg47jgqYs44OI44Oi44KzDQor44Og44ON44Om44KtLOODkuODh+ODnuOCtQ0KK+OCquOCquODhOODnCzjg6jjgrfjgr/jgqsNCivjg6Tjg57jg6Ljg6os44Kr44OE44KqDQor44Ki44Oz44OJ44KmLOOCu+OCpOOCrQ0KK+ODpOODnuOCtuOCrSzjg6jjgrfjgqLjgq0NCivjgr/jgq3jg6Ljg4gs44Oo44Km44Kk44OBDQor44K/44Kx44Og44OpLOODiuOCquOCq+OCug0KK+ODoOODqeOCq+ODnyzjg57jgrPjg4gNCivjgr/jgqvjgr8s44OO44Oq44KqDQor44OS44Ot44K7LOODhOOCv+ODkuODrQ0KK+ODpOOCr+ODryzjgr/jgqvjgrcNCivjgrfjg7PjgrDjg6rjg6fjgqYs44Oo44Km44KzDQor44K/44OBLOODnuOCteOCtw0KK+OCteODiOOCpizjgqvjgrrjgqoNCivjg6Tjg57jg6Ljg4gs44Oe44K144OS44OtDQor44K544OJ44KmLOOCt+ODp+OCpuOCsw0KK+ODm+ODs+ODnizjg5Ljg63jgq0NCivjgqrjgqrjg4Tjg5ws44OI44K344KqDQor44Kr44K244OeLOODn+ODhOODkuODrQ0KK+OCouOCrOODryzjg5/jg5vjgrMNCivjgqTjg47jgqbjgqgs44Oq44Ol44Km44Kk44OBDQor44Ki44Op44KkLOODnuOCteODgQ0KK+OCpuOCqOODoOODqSzjg6bjgr/jgqsNCivjg4vjgrfjgq/jg6ks44Oe44K144OS44OtDQor44Of44Ok44K244KtLOODqOOCt+OCq+OCug0KK+ODleOCr+ODgCzjg6Ljg6rjg57jgrUNCivjg4Tjg6rjg6Qs44K/44OA44KqDQor44K/44OK44KrLOODkuODreOCq+OCug0KK+OCquOCrOODryzjgrPjgqbjgrgNCivjgrnjgrrjgq0s44Of44OO44OrDQor44OP44Oe44Kw44OBLOOCv+OCr+OCuA0KK+OCq+ODoeODgCzjgqvjg4Tjg6QNCivjg6Ljg6Ljg4/jg6ks44OS44OH44KqDQor44OS44Op44KqLOOCv+OCq+OCsw0KK+OCv+OCq+ODgCzjg4rjgqrjg6bjgq0NCivjgqTjgrHjg4As44Oo44K344OS44OtDQor44K544K644KtLOOCouOCreODqQ0KK+OCv+OCq+ODj+OCtyzjgqvjgrrjg6jjgrcNCivjgr/jg4rjgqss44K444Ot44KmDQor44K744OpLOOCv+OCpOODgQ0KK+OCv+OCseODoOODqSzjg4jjgrfjgqLjgq0NCivjg5vjg6rjgq3jg6os44Oe44Oi44OrDQor44Kk44Kx44OALOODn+ODjuODqw0KK+OCouODqeOCrSzjgrvjgq3jg40NCivjgqrjgqrjg4Tjgqss44Kr44K644Kk44OB44Ot44KmDQor44Kv44OL44Oe44OELOOCu+OCpOOCtuODluODreOCpg0KK+OCpuOCt+ODkCzjgr/jgqvjgrcNCivjg4/jg6Tjgrcs44Oe44K144OIDQor44Kk44K344KkLOODn+OCreOCqg0KK+OCq+ODgCzjgqLjgq3jg6kNCivjg6Tjgq4s44K/44OA44KqDQor44OS44Op44KkLOOCs+OCpuOCpOODgeODreOCpg0KK+OCr+ODreOCuyzjg5Ljg63jgrcNCivjgqrjgqvjg5ks44Kk44K144OgDQor44Kr44ON44KzLOODiOOCt+ODpuOCrQ0KK+OCs+OCuOODnizjgrXjg4jjg6sNCivjg4vjgrfjg6jjg6os44Of44OO44OrDQor44OK44Kr44K444On44KmLOOCuOODreOCpg0KK+ODj+OCt+OCr+ODqSzjg4Tjg4jjg6ANCivjgr/jgqvjg4/jgrcs44K/44OE44KqDQor44Km44Ko44Kv44K1LOODjuODluOCouOCrQ0KK+OCt+ODkOOCvyzjg5Ljg63jgrcNCivjgr/jgqvjg4/jgrcs44OG44Or44KqDQor44Kk44OK44OQLOOCq+OCuuODiA0KK+OCuOODpeODs+OCpOODgeODrSzjgqLjgq3jg47jg6oNCivjg4/jg6Tjgqvjg68s44OS44OH44KqDQor44Kk44OI44KmLOOCv+OCseOCtw0KK+OCreODouODiCzjg57jgrXjg4TjgrANCivjgqTjg4As44OS44Ot44K3DQor44Ob44Km44K444On44KmLOOCq+ODhOODkuOCsw0KK+ODm+ODquOCpCzjg4Tjg43jgqoNCivjgqvjgqTjgrss44Ki44OE44K3DQor44OP44K344Oi44OILOODpOOCueOCouOCrQ0KK+OCueOCuuOCrSzjg5Ljg4jjgrcNCivjgqvjg43jgrXjgqss44Oo44K344KqDQor44Ok44Oe44Kw44OBLOODpuOCpuOCuA0KK+OCueOCuuOCrSzjg57jgrXjgqvjgroNCivjgrnjg4njgqYs44Oe44K144OS44KzDQor44Kq44Kq44OQLOODn+ODm+OCsw0KK+ODoOODqeOCvyzjg4jjgrfjgrMNCivjgqLjgq3jg6Tjg54s44Oe44K144K3DQor44Ki44K544OeLOOCv+OCseOCqg0KK+OCq+ODr+OCuOODqizjg5Ljg4fjgqoNCivjg57jg4Tjg6Ljg4gs44Kt44On44Km44K4DQor44K344Ot44Ok44OeLOOCsw0KK+ODleOCuOOCpCzjgqLjg4TjgrMNCivjgrTjg4jjgqYs44OA44Kk44K544KxDQor44K/44OL44Ki44KkLOODpOOCueODnuOCtQ0KK+OCq+ODhOODnOODqizjg57jgq0NCivjg5LjgqLjg4Ys44Kv44Of44KzDQor44OG44Op44KkLOOCouOCreOCsw0KK+ODj+ODs+ODgCzjg57jgrXjgrMNCivjg5/jgrfjg54s44OS44Ot44OfDQor44K/44Kr44K344OeLOOCq+OCuuODnw0KK+ODnuODhOODgCzjgqLjgq3jg6kNCivjgrPjg7Pjg4ks44OO44Oq44KzDQor44Kk44K/44OkLOOCseODs+OCuA0KK+ODnuODhOODouODiCzjg4rjgqrjgr/jgrENCivjgqTjgqTjg6Tjg54s44OS44OH44KqDQor44K444OD44OILOOCq+ODhOODkuODrQ0KK+OCr+ODnOOCvyzjgrXjg4HjgrMNCivjgqTjgrfjgrDjg60s44Ko44Kk44K4DQor44Oi44OqLOOCpuODhOODnw0KK+OCq+ODs+ODjizjgrXjg4HjgrMNCivjgqTjg4jjgqYs44K744Kk44K4DQor44Oo44K344OALOODquODpeOCpuOCuA0KK+ODnuODq+ODpOODnizjgq/jg4vjgqoNCivjgrXjg4jjgqYs44OK44ObDQor44Kz44Km44OALOODqOOCpuOCuA0KK+ODr+OCv+ODiyzjg57jg6Ljg6sNCivjgrXjgrss44Kk44Kv44KqDQor44K944OI44Ok44OeLOOCq+ODhOODjuODqg0KK+ODm+ODs+ODgCzjg4bjg6vjgq/jg4sNCivjgqTjg4zjgqQs44Om44K/44KrDQor44K544K644KtLOODqOOCt+ODjuODqg0KK+OCs+ODi+OCtyzjg6jjgrfjg47jg5YNCivjgrnjgq7jgqQs44Om44Kt44OS44K1DQor44Ki44Op44KtLOODjuODluOCqg0KK+ODkuODqeOCquOCqyzjg6TjgrnjgrcNCivjgqrjgqrjg4Tjgqss44Og44OE44KqDQor44Kr44OI44KmLOOCt+OCsuOCqg0KK+OCt+OCquODjizjg5Ljg63jgrcNCivjgqvjgr/jg6Tjg54s44OS44Ot44OO44OqDQor44OV44OB44Kr44OfLOOCv+OCseODkuOCsw0KK+ODkuODqeOCrSzjgr/jg6Ljg4QNCivjgqTjg6/jgrXjgq0s44Kt44Of44KqDQor44Ko44OO44KtLOOCuOODpeODsw0KK+OCpOODr+OCvyzjgrvjgqTjgqTjg4ENCivjgrfjg6Xjg4jjgqYs44K/44OA44K3DQor44OI44Kq44Ok44OeLOODnuODhOODjuODqg0KK+OCs+OCpOODhyzjgrjjg6Xjg7Pjgrbjg5bjg60NCivjgr/jg4rjg5ks44Om44Km44K444Ot44KmDQor44Ok44Oe44Oi44OILOOCt+ODpeODs+OCpOODgQ0KK+OCq+OCpOODj+ODhCzjgrvjgqTjgrcNCivjgqLjg6njgqQs44Kr44OE44K4DQor44Km44Ko44OALOODpuOCpuOCvuOCpg0KK+OCr+ODqeOCquOCqyzjgr3jgqbjgqTjg4Hjg63jgqYNCivjgrPjg5Djg6Tjgrcs44Ko44OE44OS44OtDQor44K/44Oh44OB44KrLOOCv+ODhuOCqg0KK+ODqOOCt+ODgCzjgrfjgrrjgqoNCivjg57jg4Tjg6Ljg4gs44K344Ky44OrDQor44K144Kr44K344K/LOOCq+ODjeOCqg0KK+ODr+ODgCzjg4jjgrfjgqLjgq0NCivjgqTjg4jjgqYs44Ok44K544KqDQor44Oo44K344OALOOCq+ODhOOCuA0KK+ODqOODjeODgCzjg4jjgrfjg5Ljg4cNCivjgqrjg6Djg6ks44Oe44K144OfDQor44K/44Kr44KuLOOCt+ODgeODreOCpg0KK+OCpuODgeODpOODnizjgqLjgq3jgrMNCivjgqvjgrfjg6/jgq4s44Kx44Kk44KzDQor44OL44K344OALOOCu+ODhOOCqg0KK+OCquOCt+OCqyzjgr/jgrHjgqoNCivjgqjjgrjjg54s44OI44Oi44OO44OqDQor44Kq44KrLOOCseODs+OCpOODgQ0KK+ODqOOCt+ODgCzjg6TjgrnjgqgNCivjgqTjg57jgqQs44Ok44K544K344Ot44KmDQor44Ok44Oe44Of44OBLOODiOODouOCsw0KK+OCouOCpOODouODjizjgqvjg4TjgqoNCivjg5Ljg44s44Oi44OI44KzDQor44K/44Kr44OP44K3LOODn+OCteOCsw0KK+ODqOOCs+OCvyzjgqjjgqTjgrMNCivjgqTjg47jgqYs44K/44Ko44KzDQor44Oo44K344OALOODkuODreOCsw0KK+ODqOOCt+OCquOCqyzjgqLjgq3jgrMNCivjgqbjg6Hjgrbjg68s44Km44Kt44KzDQor44OG44Op44KqLOODkuODreODkuOCtQ0KK+OCq+ODr+ODj+ODqSzjg4/jg6vjgqoNCivjg4/jgrvjgqzjg68s44Of44OO44OrDQor44Kt44K3LOODhuODq+OCsw0KK+ODj+OCt+OCuuODoSzjg5/jg4Tjg5Ljg60NCivjg6jjgrfjg4As44Oh44Kw44OfDQor44Of44ON44OV44K4LOODiuOCquOCsw0KK+ODm+ODs+ODgCzjg6bjg58NCivjgr/jgqvjgrXjg68s44Of44Om44KtDQor44Kq44Kq44OP44K3LOODqOOCpuOCsw0KK+OCq+OCrOODryzjg4HjgqsNCivjg4vjgrfjg4As44Oe44OqDQor44Kk44K/44Ks44KtLOOCouOCreOCsw0KK+OCouOCreODpOODnizjg47jg6rjg5Ljg60NCivjgqrjg4Hjg6os44Ok44K544OS44OtDQor44OO44K244OvLOOCs+OCpuOCuA0KK+OCteOCpOODiOOCpizjgrHjg7PjgrgNCivjgq3jg6Djg6ks44OB44KoDQor44Ki44OZLOODiuOCquODiA0KK+OCr+OCueODjuOCrSzjg4jjg6LjgrMNCivjg4/jg6Tjgrcs44Ok44K544OS44OtDQor44Kq44Kq44KkLOODiuOCquODnw0KK+OCq+ODn+OCquOCqyzjg4/jg6vjg6jjgrcNCivjgqLjgq3jg6Tjg54s44Kk44K144KqDQor44Ki44Oq44K/LOOCq+ODhOODnw0KK+OCreOCv+ODoOODqSzjg5/jg4Hjg6bjgq0NCivjg57jgrnjg6Djg6ks44K/44Kr44OO44OqDQor44Kq44Kq44K144OvLOOCseODsw0KK+OCq+ODr+OCpCzjg5/jg47jg6sNCivjgqTjgr/jgqzjgq0s44OS44OH44KqDQor44Oi44OqLOOCv+OCq+OCqg0KK+OCouOCquOCrSzjg5/jgq3jgqoNCivjg5Xjgrjjgrfjg60s44Kz44Km44K4DQor44K344Of44K6LOODouODiOOCt+OCsg0KK+ODoOODqeOCq+ODnyzjg5/jg6jjgrcNCivjg4rjgqvjgrjjg54s44OG44OE44KqDQor44Oi44KuLOOCouOCreOCqg0KK+ODn+OCpuODqSzjgqvjgrrjgqoNCivjgr/jgqvjg57jg4Qs44Kx44Oz44K4DQor44K/44Kr44OALOOCt+ODp+OCpuOCpOODgQ0KK+OCs+ODs+ODiSzjg57jgrXjgrMNCivjg4rjgqvjgrjjg54s44OS44OI44K3DQor44ON44Os44KkLOODkuODreOCtw0KK+OCpuOCt+OCryzjgqrjgrXjg6ANCivjgq3jgr/jgrbjg68s44KzDQor44K144OD44K1LOODjuODluODkuODrQ0KK+OCpOODg+OCt+OCrSzjg6jjgrfjg5Ljg60NCivjgqvjg6/jg44s44OO44Oq44OE44KwDQor44Kk44K344OP44OpLOODleODn+OCv+OCqw0KK+OCq+ODoeOCquOCqyzjgr/jg4DjgqoNCivjgq3jgqbjg4Es44OO44Oq44Kr44K6DQor44OK44Ks44KkLOODkuODiOOCtw0KK+ODjuOCsOODgSzjg5/jg4HjgqoNCivjgqrjgrfjgr8s44K/44Kr44KqDQor44Oo44K344Og44OpLOODiOOCt+ODn+ODgQ0KK+OCouOCq+ODm+ODqizjg5/jg4Tjg47jg5YNCivjg57jg6vjg4rjgqws44Oo44K344OE44KwDQor44Oo44K344OOLOOCs+OCpuOCv+ODreOCpg0KK+ODpOODjizjg6jjgrfjg5Ljg60NCivjg6Tjg57jgrDjg4Es44Oe44K144OS44OHDQor44Ok44Oe44Kw44OBLOOCq+ODhOODiOOCtw0KK+OCu+ODs+ODieODgCzjg57jgrXjg6sNCivjg6Tjgrnjg4As44Ki44Kt44OpDQor44Oo44Kz44KoLOOCuOODpeODs+OCpOODgQ0KK+ODpOODnuOCt+OCvyzjgrvjgqTjgrbjg5bjg63jgqYNCivjg6jjgrfjg4As44OI44Of44K+44KmDQor44Ok44Oe44K344K/LOOCueOCueODoA0KK+ODpOOCueOCpCzjgqvjgrrjgqoNCivjg6Tjg57jgqrjgqss44Kt44On44Km44K544KxDQor44Oo44Kz44K7LOODiOODouOCt+OCsg0KK+ODpOODnuOCsOODgSzjgrHjg7PjgrgNCivjg6Tjg4/jgq4s44Ok44K544OP44OrDQor44Ok44Oe44Kq44KrLOODkuODreODnuODqw0KK+ODqOODhOODpCzjg4jjgqrjg6sNCivjg6Tjg57jg6Ljg4gs44K444Ol44Oz44KzDQor44Oo44K344Kr44OvLOODiOOCt+ODreOCpg0KK+ODpOODnuOCt+OCvyzjgrfjg6fjgqbjgrgNCivjg6Tjg57jgqrjgqss44OS44Ot44KzDQor44Oo44ON44Of44OELOOCu+OCpOOCuA0KK+ODqOOCt+ODgCzjgrHjg7PjgqTjg4ENCivjg6Tjg57jgrbjgq0s44OG44OE44KqDQor44Ok44Oe44Oi44OILOODkuOCq+ODqw0KK+ODpOODnuOCsOODgSzjg5/jg47jg6sNCivjg6Tjg57jgqbjg4Es44K144Kr44KoDQor44Oo44K344K244OvLOOCq+ODhOODnw0KK+ODqOOCt+OCquOCqyzjgqvjg4Tjg5Ljg4gNCivjg6Tjg57jg6Ljg4gs44OO44OW44KqDQor44Ok44Oe44Kq44KrLOODn+ODgeODiOOCtw0KK+ODpOODnuOCtuOCrSzjgqLjgq3jg6kNCivjg6jjgrfjg6Djg6ks44Oe44K144OS44KzDQor44Ok44K544OALOOCs+OCpuOCuA0KK+ODpOODnuOCt+OCvyzjgrvjgqTjgqTjg4ENCivjg6Tjg4As44K344Oz44OkDQor44Oo44K344OALOOCpOODgeODreOCpg0KK+ODpOODnuODouODiCzjg4Tjg4jjg6ANCivjg6Tjg57jg4As44K044Ot44KmDQor44Oo44ON44OALOOCq+OCquODqw0KK+ODqOOCt+ODgCzjg57jgrXjg5Ljg60NCivjg6Tjg57jg4As44Kv44K544KqDQor44Ok44Oe44Kw44OBLOOCv+OCq+ODleODnw0KK+ODpOODnuOCsOODgSzjg5Xjg5/jg5Ljg60NCivjg6Tjg57jg6Ljg4gs44K/44Kr44KzDQor44Oo44K344OALOOCueOCueODoA0KK+ODpOODnuOCt+OCvyzjgrfjg6fjgqbjgr7jgqYNCivjg6Tjg7Pjg5ks44Ki44OE44OS44OtDQor44Ok44Oe44Kw44OBLOODjuODquODqOOCtw0KK+ODpOODnuODouODiCzjgrjjg6Xjg7PjgrgNCivjg6Tjg57jg40s44Kz44Km44K444Ot44KmDQor44Ok44Oe44K144KtLOOCseODs+OCv+ODreOCpg0KK+ODpOOCueOCquOCqyzjg6bjgq3jgqoNCivjg6Tjg57jg4As44Ko44Kk44K+44KmDQor44Oo44K344K244OvLOOCuOODreOCpg0KK+ODpOOCuOODnizjgqLjgq3jg6kNCivjg6Tjg4rjgqQs44OG44OE44KqDQor44Ok44Oe44K244KtLOOCq+OCuuOCqg0KK+ODpOODnuOCpuODgSzjg5Xjgq/jg5/jg4ENCivjg6Tjg57jgrbjgq0s44K544K544OgDQor44Oo44K344OOLOOCv+ODhOODpuOCrQ0KK+ODpOODnuOCq+OCsizjgr/jg4Djg47jg5YNCivjg6Tjgq4s44K444OE44OO44OqDQor44Ok44K544OALOODnuOCteOCqg0KK+ODpOODnuODpCzjg47jg5bjgqoNCivjgr/jgqvjgrDjg4Es44OO44Oc44OrDQor44Oo44K344OALOODkuODreOCtw0KK+ODqOOCt+ODjizjgrPjgqbjgrgNCivjg6Tjg57jg6Djg6ks44K444Ol44Oz44Kk44OBDQor44Ok44KuLOOCq+ODhOODjuODqg0KK+ODpOODnuODgCzjgrPjgrnjgrENCivjg6bjgqvjg68s44Oe44K144OI44K3DQor44Ok44Oe44Oi44OILOOCuOODp+OCpuOCuA0KK+ODpOODnuOCv+ODiyzjg5Ljg63jg4TjgrANCivjg6Tjg57jg6Djg60s44Oo44K344Kr44ONDQor44Oo44K344OALOODiOOCt+ODkuOCsw0KK+ODqOOCs+OCq+ODryzjg4jjg6Ljg6jjgrcNCivjg6Tjg57jgrbjgq0s44Kz44Km44Kk44OBDQor44Ok44Oe44Oi44OILOOCv+OCseOCqg0KK+ODqOOCt+ODjizjgq3jg6jjgrcNCivjg6Tjg57jg40s44Oo44ON44K/44KrDQor44Ok44K544OK44KsLOOCouOCreODkuODrQ0KK+ODpOODiuOCqyzjgrHjgqTjgqTjg4ENCivjg6Tjg57jg40s44OG44OE44KqDQor44Ok44Oe44Km44OBLOODqOOCt+ODpuOCrQ0KK+ODpOODnuOCsOODgSzjg6bjgqbjgrgNCivjg6Tjg57jg6/jgq0s44K344On44Km44K/44Ot44KmDQor44Ok44Oe44Kr44OvLOOCuOODpeODs+OCpOODgQ0KK+ODpOODnuODgCzjgqvjgrrjg58NCivjg6jjgrPjg6Tjg54s44K344On44Km44K/44Ot44KmDQor44Ok44Oe44Oi44OILOODpOOCveODnw0KK+ODpOODnuOCsOODgSzjg47jg5zjg6sNCivjg6Tjg57jgrDjg4Es44K/44Kr44Oo44K3DQor44Oo44K344OALOOCv+OCq+OCqg0KK+ODpOODnuODiuOCqyzjgqvjgrrjg58NCivjg6Tjg57jg6Ljg4gs44K/44OA44OP44OrDQor44Oo44K344OALOOCv+OCq+OCqg0KK+ODpOODnuODgCzjgrXjg4jjg6sNCivjg6Tjg57jgqrjgqss44Oo44K344OI44OiDQor44Oo44Kz44Ok44OeLOODnuOCteODkuOCtQ0KK+ODpOODnuOCteOCrSzjg47jg6rjgqoNCivjg6Tjg57jg6Ljg4gs44Kr44OE44OS44KzDQor44Ok44Oe44Kr44OvLOODnuOCteODqOOCtw0KK+ODpOOCpuODgSzjgr/jg4Djg6jjgrcNCivjg6jjgrfjg4/jg6ks44Kr44OE44K4DQor44Oo44Kz44Of44K+LOOCt+OCsuODqw0KK+ODpOODnuODouODiCzjgrfjg6Xjgqbjgr7jgqYNCivjg6Tjg57jg6Ljg4gs44OG44Or44KqDQor44Ok44Oe44Oi44OILOOCqOOCpOOCpOODgeODreOCpg0KK+ODqOOCt+ODgCzjg57jgrXjg5Ljg60NCivjg6jjgrfjg4As44OV44Of44OS44OtDQor44Ok44K544KkLOODn+ODjuODqw0KK+ODpOODnuOCsOODgSzjgrfjgrLjg6sNCivjg6Tjg57jg6Ljg4gs44Ki44Kt44OpDQor44Oo44Kz44K/LOOCqOOCpOOCpOODgQ0KK+ODqOOCt+ODgCzjg6bjgr/jgqsNCivjg6jjgrPjg6Tjg54s44OS44OH44KtDQor44Ok44K544KkLOOCq+OCuuODouODiA0KK+ODpOODnuOCteOCrSzjgqvjgrrjg5Ljg60NCivjg6jjgrfjgqrjgqss44OO44OW44KqDQor44Oo44K344OALOOCt+ODpeODs+ODreOCrw0KK+ODpOODnuODgCzjgqvjg4Tjg5Ljg60NCivjg6Tjg57jg6Ljg4gs44Oo44Km44K4DQor44Oo44K344OALOOCu+OCpOOCvuOCpg0KK+ODpOODnuOCtuOCrSzjgrvjgqTjgrfjg63jgqYNCivjg6Tjg57jg40s44OK44Kq44K4DQor44Om44K/44OLLOOCueOCueODoA0KK+ODqOODjeOCtuODryzjg6jjgrfjg5Ljg60NCivjg6jjgrfjg44s44OA44Kk44K544KxDQor44Oo44K344OALOOCv+OCseOCqg0KK+ODqOOCt+ODouODqizjg5LjgrXjg4jjg6gNCivjg6jjgrfjg6/jg6ks44K/44Kx44K3DQor44Ok44Oe44OALOODiOOCt+OCrQ0KK+ODqOOCt+ODgCzjg4jjgrfjgqvjgroNCivjg6jjgrfjg4As44Og44OE44KqDQor44Ok44Oe44Oi44OILOODouODquODkuOCsw0KK+OCs+OCuOODnizjgq/jg4vjgqvjg4QNCivjgqrjg44s44K344Ky44KqDQor44Oe44Ko44Kr44OvLOOCs+OCpuOCv+ODreOCpg0KK+OCs+ODs+ODjizjg47jg5bjg6bjgq0NCivjg57jgq3jgrss44Kt44Oo44K3DQor44OO44Og44OpLOODnuOCteOCv+OCqw0KK+ODpOOCueODj+ODqSzjg57jgrXjg5LjgrMNCivjg4rjgqzjgrfjg54s44Ki44OE44Oo44K3DQor44Kt44K/44OP44K3LOODnuOCteOCqg0KK+ODhOODqyzjgq3jg6jjg5/jg4ENCivjg4Tjgq/jg4As44Of44OB44KqDQor44OG44Op44Km44OBLOOCv+OCseOCtw0KK+ODpOODnuODgCzjgrXjg4jjg6sNCivjgrvjg7Pjg5As44K544K544OgDQor44K144Ko44KtLOODjuODquOCqg0KK+OCquOCq+ODgCzjgrfjg6fjgqbjgqTjg4ENCivjg5/jg6Tjgqbjg4Es44OS44K144KqDQor44Kz44Oz44OJLOODiOOCt+OCqg0KK+ODleOCreOCouOCsizjg6TjgrnjgqoNCivjgqTjgrfjgqvjg68s44OB44Oo44K/44KxDQor44Kk44Ov44Oi44OILOODnuOCteOCqg0KK+OCr+ODnCzjgrjjg6Xjg7PjgqTjg4Hjg60NCivjgr/jg4rjgqss44OS44Ot44Kr44OEDQor44Ov44OALOODjuODquOCqg0KK+OCpOODr+OCqizjg4Tjg43jg47jg6oNCivjgq/jg57jgqzjgqQs44K/44Kr44OS44OtDQor44K544K644KtLOODkuODreODleODnw0KK+OCv+OCq+ODoOODqSzjg5Ljg63jgrcNCivjg4vjgrfjgqbjg6ks44K744Kk44Kk44OB44Ot44KmDQor44Of44OE44K4LOODnuOCteOCtw0KK+OCv+OCreOCreOCvyzjgqLjgq3jg6kNCivjgqrjgqbjg4Es44Kx44Oz44K4DQor44Kz44OeLOOCouOCreOCqg0KK+ODnuOCueODgCzjgrHjg7PjgrgNCivjgqvjg4jjgqYs44OI44K344Ot44KmDQor44Kk44Kk44K644KrLOOCq+OCuuODkuOCsw0KK+ODnuODq+ODpOODnizjg47jg5bjgqLjgq0NCivjg4jjgrfjgr/jg4ss44OI44Kq44OrDQor44OP44OK44OW44OBLOODnuOCteODkuODrQ0KK+OCpOODnuOCpCzjg57jgrXjgr7jgqYNCivjgqrjgqvjg5Ljg60s44OE44ON44KqDQor44Kt44Og44OpLOODiOOCt+ODkuOCsw0KK+OCv+OCuOODnizjg57jgrXjg4/jg6sNCivjgqvjg7Pjg4As44OE44Op44Om44KtDQor44OJ44KkLOOCquOCteODoA0KK+OCouODqeOCrOOCrSzjg6Tjgrnjg47jg5YNCivjgq3jg6Xjgqbjgr3jgrjjg7Ms44Kx44Oz44K544KxDQor44K/44Kx44Km44OBLOODhOODjeODqA0KK+OCpuODjOODnizjg5Ljg4fjg4rjg6oNCivjg6Tjg57jgrDjg4Es44Oo44K344K/44KrDQor44Oo44Oi44OqLOODouODiOODkuOCtQ0KK+OCt+ODnuOCtuOCrSzjgq/jg4vjg5LjgrMNCivjg4jjgq/jg6Qs44OI44K344KqDQor44Ok44Oe44OALOOCouOCreODqQ0KK+ODleOCq+ODpCzjgrfjgrLjgqoNCivjgqjjgrDjg4Es44OP44Or44KqDQor44K144OOLOODkuODh+ODjuODlg0KK+ODiOOCr+ODjizjgqLjgq3jg6kNCivjgqrjgqrjg4jjg6Is44K144OA44OgDQor44K344Op44Kq44Ks44OvLOODkuODreOCtw0KK+ODkuODqeODjizjgr/jgqTjgq0NCivjgqrjg4As44Om44Km44K4DQor44K/44OK44KrLOODquODp+OCpuOCvuOCpg0KK+ODleOCuOOCvyzjgqLjgq3jg6kNCivjgqLjg6njgqQs44Ki44Kt44OS44OHDQor44OV44K444K/LOODpuOCpuOCuA0KK+ODiuOCq+OCrOODryzjg5Ljg63jg6bjgq0NCivjg4rjgqvjg4vjgrcs44Kr44K644K344KyDQor44OP44OpLOOCouOCreODkuODrQ0KK+ODgeODkCzjg4jjgrfjgrMNCivjgqTjgrfjg6/jgr8s44OI44K344OS44K1DQor44Ok44Kw44OBLOOCv+OCseODkuODrQ0KK+ODhuOCuOODnizjgqvjgrrjgqoNCivjgr/jg4Tjgr8s44K344Ky44OrDQor44Kv44K144KrLOOCv+OCseOCtw0KK+ODleODq+OCvyzjgr/jgrHjg4/jg6sNCivjgrTjg4jjgqYs44Oe44K144OO44OWDQor44Kq44OA44Ku44OqLOOCv+ODgOOCtw0KK+OCr+ODnuOCrOOCpCzjgr/jgrHjg6sNCivjg6Djg6njgqvjg58s44Of44K644ObDQor44Of44Og44OpLOODnuOCteOCqg0KK+ODqOOCs+OCpCzjgq/jg4vjg5LjgrMNCivjgqTjg4rjgrIs44OI44Oi44Om44KtDQor44Ki44Oh44Of44OkLOODn+ODhOOCqg0KK+OCpOODjuOCpuOCqCzjgrXjg4DjgqoNCivjg4zjg57jgr8s44K444Oz44Kk44OBDQor44K144Kr44Oi44OILOOCtOODmOOCpA0KK+ODkuODqeODnuODhCzjgrXjg4DjgqoNCivjg4rjg6rjgr8s44Kr44Kq44OrDQor44OE44ON44OfLOOCpOODgeODreOCpg0KK+OCv+OCq+OCt+ODnizjg5XjgrXjg5LjgrMNCivjg5/jgrks44Kr44K644OfDQor44K144Kt44Ok44OeLOODqOOCt+ODkuOCsw0KK+ODleOCuOODr+ODqSzjgr/jg4DjgrcNCivjg4jjg5/jgr8s44Oe44K144OS44OtDQor44OE44OK44Ov44KtLOODn+ODjeOCqg0KK+ODj+OCu+OCrOODryzjgr/jgrHjgrcNCivjg5Xjgq/jgrbjg68s44Om44Km44K+44KmDQor44K044Ko44KxLOOCouOCreODqQ0KK+ODiuOCqyzjg57jgrXjg5Ljg60NCivjgqjjg5Djg4gs44Kx44Kk44KzDQor44Kz44OQ44Ok44K3LOOCt+ODs+OCpOODgeODreOCpg0KK+ODkuODqeODhOOCqyzjgq3jg6jjgrcNCivjgrXjg4jjgqYs44OO44OW44KqDQor44Kk44OO44Km44KoLOOCouOCreODqQ0KK+ODj+OCueODjOODnizjg57jgrXjgqoNCivjg5Xjg6vjg4/jgr8s44Ki44K144KzDQor44Km44Ko44OOLOOCouODhOOCtw0KK+OCv+OCseODiuOCqyzjg57jgrXjg5Ljg60NCivjgq/jg4vjgr/jgrEs44Oo44K344KqDQor44OS44Op44K/LOODpuOCpuOCsw0KK+ODj+OCu+OCrOODryzjgrLjg7MNCivjg5Xjgq/jg4/jg6ks44Ki44OE44K3DQor44OV44OK44Kw44OBLOODiOOCquODqw0KK+OCouODnuODjizjg47jg6rjgrMNCivjgqrjgqrjg44s44Of44K644OO44OqDQor44K544OvLOODjuODquOCsw0KK+ODjuOCrOODnyzjg5/jgqsNCivjgqbjg6Hjg44s44Ok44K544Om44KtDQor44Kk44Kx44OOLOODpuOCpuOCsw0KK+ODiuOCq+OCuOODnizjg4/jg4rjgrMNCivjgqTjgrfjgqQs44Kt44On44Km44KzDQor44K144Kk44OI44KmLOODiOODouOCsw0KK+OCv+ODiuOCqyzjgqvjgrrjg6bjgq0NCivjgr/jg4bjgqTjgrcs44OI44K344Kr44K6DQor44K544K644KtLOODqOOCt+ODkuOCsw0KK+OCreODjuOCt+OCvyzjg5Ljgqvjg6sNCivjgqrjgqrjgrXjg68s44Oo44K344OS44OtDQor44Kk44OHLOOCteOCreOCsw0KK+OCquOCrOODryzjgrfjg5sNCivjgqjjg47jg6Ljg4gs44Ov44Kt44KzDQor44Kq44K244OvLOODn+OCuuODmw0KK+ODj+OCv+OCseODpOODnizjg4jjg6Ljg5Ljg60NCivjgqTjgqTjg4As44Of44OE44Ki44KtDQor44K344OO44K244KtLOOCuOODpeODs+OCpOODgQ0KK+OCquOCq+ODgCzjg6rjgqjjgrMNCivjgr/jgqvjg54s44Oe44K144K3DQor44Ok44KuLOODkuODreODpuOCrQ0KK+OCteOCq+OCpCzjg57jgrXjg6gNCivjgrfjg5/jgros44Kz44Km44K4DQor44Ob44Oq44Kr44OvLOODqOOCpuOCsw0KK+ODiuOCrOOCqizjgrPjgqbjg5jjgqQNCivjg5Ljg6njgqTjgrcs44Oe44OqDQor44K144Ks44OvLOOCv+ODouODhA0KK+ODj+ODqeODgCzjg57jgrXjg58NCivjgr/jgqvjg4/jgrcs44Oq44Ol44Km44Kk44OBDQor44K/44OBLOODnuOCteODqA0KK+ODkuOCqCzjgq3jg5/jgqoNCivjgr/jg4As44Of44OK44KzDQor44Oo44K344Oi44OILOODkuODreOCsw0KK+ODouODgeOCuuOCrSzjg4Hjg5Ljg60NCivjgr/jg4rjgqss44Kz44Km44K4DQor44K/44Kw44OBLOODnuODpuODnw0KK+OCteODiOOCpizjgqTjgq/jgqoNCivjgrXjgqvjgrfjgr8s44Om44Kt44KoDQor44Kr44Ov44K344OeLOODnuODpuODnw0KK+ODm+ODquOCsOODgSzjgqvjgqrjg6oNCivjg5Xjgq/jg54s44K544Of44K/44KrDQor44Kr44Ov44K/44OLLOOCouOCreODqQ0KK+OCuOODk+OCrSzjgqrjgrXjg6ANCivjgrXjgqTjg4jjgqYs44Of44OE44OrDQor44K344Kq44OELOOCpOOCteOCqg0KK+ODiOODkOOCvyzjg47jg6rjgqvjgroNCivjg6Tjg57jg6Ljg4gs44Oe44K144OS44KzDQor44Kq44OV44OBLOODkuODreODn+ODgQ0KK+OCt+ODjuODj+ODqSzjg47jg5bjgqoNCivjg6Tjg57jgqvjg68s44Kr44K644K/44OADQor44K/44Og44OpLOODiOOCt+OCqg0KK+ODj+OCv+OCseODpOODnizjgr/jgqvjgrMNCivjgr/jg4rjgqss44OS44Kr44OrDQor44Kr44OK44K244OvLOODkuODh+OCouOCrQ0KK+OCv+OCq+ODj+OCtyzjgqjjg6rjgrMNCivjg5Xjgrjjg6Djg6ks44Of44OK44KzDQor44OK44Ks44K344OeLOODqOOCt+ODpuOCrQ0KK+OCreODjuOCt+OCvyzjg4jjgq3jgrMNCivjgrPjg7Pjg4ks44Oe44OfDQor44Ki44Oz44OZLOODnuODiuODnw0KK+OCteOCpOODiOOCpizjgqTjgrrjg58NCivjgqLjgrXjg4As44Of44KtDQor44Kt44OO44K344K/LOODleODn+OCqA0KK+OCq+ODieODpCzjgqLjgq3jgrMNCivjgqbjgqjjg4As44OI44Kq44OrDQor44K144Kk44OI44KmLOODouODiw0KK+OCv+OCq+ODj+OCtyzjg57jgrXjg5Ljg60NCivjgqTjgrfjgrbjgq0s44K344Oi44OzDQor44Kq44K244OvLOODhuODq+ODkuOCtQ0KK+ODj+ODpOOCtyzjgqrjgrXjg6ANCivjg6Tjgqzjg68s44Of44OB44KqDQor44K/44Kr44OP44K3LOOCv+ODn+OCqg0KK+ODiOODn+ODpOODnizjg6jjgrfjgqLjgq0NCivjgqLjg4Djg4Es44Om44Km44K+44KmDQor44Ki44Kr44Kk44OvLOOCt+ODp+OCpuOCueOCsQ0KK+OCq+OCrOODpCzjg6bjgq3jg47jg5YNCivjgqLjg6njgqQs44K144Kq44OqDQor44Kq44K344Kt44OqLOOCv+OCq+OCtw0KK+ODpOODnuODoOODqSzjgqjjgqTjgrgNCivjgr/jgqvjg6Tjg54s44OI44K344Om44KtDQor44Oo44Kz44Ok44OeLOOCquOCteODoA0KK+ODkOODsyzjg4TjgrDjgqoNCivjgqTjgrrjg58s44Oo44K344OO44OqDQor44Of44K644OOLOOCv+ODgOOCqg0KK+ODluODs+ODpCzjg5/jg47jg6sNCivjg4bjg6njgqrjgqss44K344On44Km44K4DQor44Of44Ok44K344K/LOODn+ODjuODqw0KK+OCouOCteODnizjgrHjgqTjgrMNCivjgrXjgrXjgq0s44OG44OE44KqDQor44OL44K344KqLOODqOODquODiA0KK+ODleODq+ODpCzjg4bjg4TjgqoNCivjgqTjg57jg4As44OS44OH44Om44KtDQor44Kk44K344OP44OpLOOCpOOCr+OCqA0KK+ODj+OCt+ODouODiCzjg5/jgq3jgqoNCivjg57jg6vjg6Tjg54s44OI44Oi44Om44KtDQor44Kr44K4LOOCq+OCuuOCv+OCqw0KK+OCq+ODjeOCsyzjg4/jg4rjgrMNCivjg4rjgqvjg4As44OO44Oq44OS44OIDQor44OB44K244OvLOODiuODmw0KK+OCteODryzjgqLjgrXjgrMNCivjg4jjgqzjg6Es44Of44Ov44KzDQor44Oo44K344OALOOCsuODsw0KK+OCquOCquODjizjg5Ljg63jgrMNCivjg6TjgrMs44Oe44K144OS44KzDQor44Kk44K344Kr44OvLOOCouOCreODjuODqg0KK+OCs+ODiOODgCzjg5Ljg63jgrMNCivjgrXjgqzjg68s44Kr44K644OeDQor44OO44Kw44OBLOOCq+OCuuODnuOCtQ0KK+ODh+ODs+ODnCzjg5Ljg63jg5Xjg58NCivjg4/jg6vjgq0s44Ki44Kt44OS44KzDQor44Kk44ONLOOCt+ODp+OCpuOCqOOCpA0KK+OCquOCquODjizjgq/jg4vjgqoNCivjgqvjg43jg4As44K/44OE44OS44KzDQor44OO44Kw44OBLOOCouOCreODqQ0KK+OCquOCquODkCzjg5Ljg63jg5/jg4QNCivjgqrjgr8s44OI44Kv44Kk44OB44Ot44KmDQor44K344Oi44Oe44KtLOODpOOCueOCqg0KK+ODr+OCv+ODkuOCrSzjg6bjgqbjgrMNCivjg6Tjg57jg6Ljg4gs44Oe44OqDQor44OV44K444Og44OpLOODnuODquOCsw0KK+OCveOCpuODn+ODpCzjgrHjg7PjgrgNCivjgrfjg54s44Kv44OfDQor44K144K144KtLOOCv+OCq+ODpuOCrQ0KK+OCq+OCrOODryzjg6zjgqTjgrMNCivjgr/jgrHjgqbjg4Es44Kv44Of44KzDQor44K144Kk44KtLOODn+ODqOOCsw0KK+OCpOODiOOCpizjg47jg6rjgrMNCivjgq3jg6Djg6ks44Oo44Km44K4DQor44K/44OQ44K/LOOCv+OCq+ODkuODrQ0KK+OCr+ODoSzjg4jjg6jjgqLjgq0NCivjgr/jgqvjg4As44Oe44Oq44KzDQor44K/44Og44OpLOODn+OCqA0KK+OCv+OCq+ODnuODhCzjg57jgq3jgrMNCivjgrfjg63jgrfjgr8s44K344Ol44Km44K144KvDQor44Kr44OI44KmLOODiOODouODpuOCrQ0KK+OCouODr+OCpCzjg4jjgrfjg47jg6oNCivjg5vjgrXjgqss44OO44Oq44KzDQor44K/44OK44KrLOODq+ODnw0KK+ODn+ODkuODqSzjgrfjg6XjgqbjgrXjgq8NCivjgrXjg4jjgqYs44Kx44Kk44KzDQor44Kq44K244OvLOODpuOCreOCqg0KK+OCueOCuuOCrSzjgrHjg7PjgrgNCivjg5/jg6Tjgrbjgq0s44Oq44Ol44Km44K+44KmDQor44Oi44Oq44K/44OLLOODpuOCq+ODqg0KK+OCpOODr+OCsOODrSzjg4Tjg4jjg6ANCivjgqbjgqjjg54s44K344On44Km44KzDQor44OV44Kr44K/LOODgeOCqw0KK+ODkuODreOCuyzjgqLjgq3jgrMNCivjgqrjgqvjg4As44OS44Ot44OfDQor44Kr44OI44KmLOOCouODquOCqw0KK+ODnuOCrSzjgrXjg6bjg6oNCivjg47jg4As44OI44Oi44Kr44K6DQor44Kv44OcLOOCreODp+OCpuOCsw0KK+ODi+OCt+OCreOCquODqizjg4Tjgq7jgqoNCivjg6Tjg44s44K444Ol44Oz44KzDQor44Kr44Ov44Og44Kz44KmLOODiuOCquOCrQ0KK+ODpOOCueODoOODqSzjg5/jg6jjgrMNCivjg4jjg4vjgrcs44OI44Oi44KzDQor44Ok44Oe44Oi44OILOODkuOCq+ODqw0KK+OCt+ODouODgCzjg4DjgqTjgrnjgrENCivjgqrjgqrjgr/jg4ss44Kv44OL44KqDQor44Kq44OO44K144OILOODj+ODsw0KK+OCq+ODiuOCtuODryzjg5Ljg63jgqLjgq0NCivjgqrjgqvjg6Ljg4gs44Of44Ov44KzDQor44K144Kk44OI44KmLOODn+ODiuOCsw0KK+OCq+OCt+ODr+ODkOODqSzjg47jg5bjgrMNCivjgr/jgqvjg4/jgrcs44Oe44K144OO44OWDQor44K144Kk44OI44KmLOODnuODiuODlg0KK+ODnuODhOODgCzjg6jjgrfjgqLjgq0NCivjgr/jg4Hjgrbjgq0s44Ov44Kr44KzDQor44Kz44Oz44OJLOODiOODouOCsw0KK+OCt+ODn+OCuizjg4DjgqTjgrnjgrENCivjg4rjgqzjgqrjgqss44Kr44Kq44OqDQor44OK44Kr44Ks44OvLOOCouODhOOCtw0KK+OCv+OCq+ODiCzjg5Ljg63jg6bjgq0NCivjgq3jg6Djg6ks44K/44Kr44K3DQor44OK44Or44K7LOOCreODqOODnw0KK+OCquOCsOODnizjgqvjgqgNCivjgr/jgqvjg4/jgrcs44Of44OK44KoDQor44Kt44Kv44OBLOOCu+OCpOOCsw0KK+OCteODiOOCpizjg4/jgrjjg6ENCivjgqjjg7Pjg4ks44Oe44Oq44KzDQor44K/44Og44OpLOODiOODouODjuODqg0KK+ODpOODnuODouODiCzjgrPjgqbjgrgNCivjgqLjgrXjgqQs44Oo44K344OS44OtDQor44Oi44OqLOOCquOCteODoA0KK+OCv+OCq+OCt+ODrSzjg6HjgrDjg58NCivjgqrjgqss44K144Kk44KrDQor44Kr44OI44KmLOODiOOCt+ODpA0KK+OCpOOCsOODgSzjgrXjg4HjgrMNCivjgr/jg4rjgqss44Kt44On44Km44KzDQor44Oo44K344OALOOCs+OCpuOCuA0KK+OCouOCreODouODiCzjg57jg4njgqsNCivjg4vjgrfjgqQs44K444Ol44Oz44K4DQor44Ov44K344Kq44KrLOOCs+OCpuOCuA0KK+OCpOODjOODnuODqyzjg5Ljg63jgrgNCivjg5vjgrcs44K344K644KrDQor44Oo44ON44Ok44OeLOODnuOCteODjuODlg0KK+OCr+ODreODmSzjg6bjgqbjgqTjg4ENCivjgqTjgrfjgqQs44OS44K144KoDQor44OS44Kw44OBLOOCuOODpeODs+OCpOODgQ0KK+ODiuOCq+ODgCzjgr/jgqvjg4/jg6sNCivjgqrjg47jg4fjg6ks44OK44Kq44KzDQor44OI44OALOODiOOCt+ODpuOCrQ0KK+ODnuOCqOODgCzjg5Ljg63jgrMNCivjg4rjgqzjgqQs44Om44Kt44KzDQor44Kz44OM44K/LOODkuOCteODqOOCtw0KK+OCt+ODkOOCteOCrSzjgqvjg4Tjg4jjgrcNCivjgqbjgqvjgqQs44Ki44Kt44KrDQor44K544K644KtLOODgeODj+ODqw0KK+ODkuODqeOCrSzjg47jg5bjgrMNCivjg4rjgqvjg6Djg6ks44Om44Km44KzDQor44Ok44Oe44OALOODnuOCteODnw0KK+OCq+ODieOCr+ODqSzjg57jgrXjgrcNCivjgr/jgqvjgrXjgq0s44Kz44Km44K4DQor44OK44Kr44K/LOOCreODqOODnw0KK+OCv+ODi+OCq+ODryzjg5vjgrrjgqgNCivjg4vjgrfjg6Djg6ks44Oe44K144OkDQor44Of44OK44OfLOOCouODpOODnw0KK+OCquOCquODjOOCrSzjg5/jg47jg6sNCivjgrXjg4jjgqYs44OS44Ot44K3DQor44K/44Kr44OP44K3LOOCv+OCq+OCqg0KK+ODkuODgCzjgqrjgrXjg6ANCivjgrXjgq/jg54s44K344OeDQor44OL44Ko44OALOOCv+OCq+OCtw0KK+ODqOOCs+OCpCzjg6zjg58NCivjg6jjg43jgq/jg6ks44K/44Kx44KqDQor44OQ44Oz44OQLOODquOCqA0KK+ODpOODnuODgCzjgqLjgq3jg5Ljg4cNCivjgqTjg57jg6Djg6ks44Or44Oq44KzDQor44Kk44Kx44OALOODgeOCouOCrQ0KK+ODiuOCq+ODoOODqSzjg5/jg4rjgrMNCivjgrnjg4njgqYs44Oq44KoDQor44OK44Kr44K944ONLOOCq+OCquODqg0KK+OCquOCquOCteODryzjg4HjgqvjgrMNCivjgrXjg4jjgqYs44K344OB44Ot44KmDQor44Ko44Kk44OJ44OhLOODpuOCrQ0KK+OCpOOCrOODqeOCtyzjg5/jgqsNCivjgr/jg6Qs44K/44Kr44KzDQor44Kq44Kq44OS44OpLOODqOOCt+OCsw0KK+OCteOCq+ODouODiCzjgrXjg4jjgrcNCivjgrnjgq7jg6Ljg4gs44Kz44Km44K4DQor44Kr44OI44KmLOODn+ODiuOCsw0KK+ODqOOCt+OCpCzjgr/jg4Djg5Ljg60NCivjgqTjg6/jg6Qs44Oo44Km44KzDQor44Kt44OO44K344K/LOOCreODp+OCpuOCsw0KK+OCueOCruOCteODryzjgqvjgrrjg6gNCivjg6/jg4As44Of44Oo44KzDQor44Of44Ok44K344K/LOOCqOODn+OCsw0KK+OCpuOCqOODjizjg47jg5bjgrMNCivjgqrjgqrjgr/jgq0s44Om44Of44KzDQor44Kk44K344OQ44K3LOOCreODp+OCpuOCsw0KK+OCpOODr+OCt+OCvyzjg57jgrXjgqoNCivjgqTjgrfjgqvjg68s44OS44OH44OS44KzDQor44Kt44K3LOOCv+ODhuOCqg0KK+ODnuODq+ODpOODnizjg5LjgrXjgqoNCivjg5vjg7Pjg54s44K/44Kr44KqDQor44Kv44K544Oi44OILOOCpOOCteOCqg0KK+OCpOODnuODjizjgq3jg5/jg5Ljg4cNCivjgqrjgqrjg4vjgrcs44K744Kk44K+44KmDQor44Ok44Oe44OALOOCt+ODp+OCpg0KK+ODleOCuOOCquOCqyzjg4jjg6njgqoNCivjg4/jg4rjg4As44Ok44K544Kr44K6DQor44K344OQ44K/LOOCouOCteOCqg0KK+ODn+ODpOOCt+OCvyzjg6bjgq3jgqoNCivjgqvjgrXjg4/jg6ks44Oe44K144KqDQor44Kq44Kq44Ok44KxLOODj+ODq+OCqg0KK+OCpOODnuOCpCzjgq/jg4vjgqoNCivjgrPjgrvjgq0s44Oe44Oq44KzDQor44Kq44Kq44K/LOODjuODnOODqw0KK+ODnuODgeOCpCzjgqvjgrrjg5Ljg60NCivjgq3jgq/jg4Es44K744OE44KqDQor44OS44Kw44OBLOOCq+OCuuOCqA0KK+ODn+ODiuODqOOCtyzjgrjjg6Xjg7PjgrgNCivjgrnjgrrjgq0s44OS44Ot44Kr44K6DQor44OK44Oz44OQLOODiuOCquOCrQ0KK+OCquOCquODi+OCtyzjg4DjgqTjgrXjgq8NCivjg4/jg6Tjgrfjg4As44K/44Kr44OI44K3DQor44K/44OK44KrLOODkuODh+ODkuODrQ0KK+OCq+ODjeOCsyzjgqvjgrrjg47jg6oNCivjg4Tjg4Hjg6Qs44OI44Oi44Om44KtDQor44Kk44Kk44OALOOCqOODhOOCqg0KK+ODleODq+ODpCzjgqvjgrrjgqoNCivjg4rjgqvjg6Djg6ks44Of44OE44KwDQor44OP44Or44OP44OpLOOCv+OCq+OCtw0KK+ODm+ODquOCqCzjg6jjg6rjgrfjgrINCivjgqrjgqrjgr8s44K/44Kx44K3DQor44K544K644KtLOODpOOCueODhOOCsA0KK+OCquODiCzjg57jgrXjg4jjgrcNCivjg4rjgqvjgqzjg68s44Oe44Om44OfDQor44Kr44Ov44K344OeLOODqOOCpuODmOOCpA0KK+ODhuODqeODouODiCzjg6bjgqbjgrjjg63jgqYNCivjgq3jg6Djg6ks44Ki44Kt44OpDQor44Oo44OJ44OK44OvLOODpuOCq+ODqg0KK+OCs+ODgOOCpOODqSzjg5Ljg4fjgqLjgq0NCivjgqvjgq/jg6njgqQs44Oo44Km44KzDQor44Kq44Kw44OqLOODkuODreODqOOCtw0KK+ODj+OCvyzjgrHjg7PjgrgNCivjg57jg4Tjg6Ljg6os44Kr44K644KqDQor44Oo44K344Kq44KrLOOCu+OCpOOCuA0KK+OCt+OCsuOCvyzjg5/jg4HjgqLjgq0NCivjgqvjg6/jgrDjg4Es44OI44Oi44OS44OtDQor44Kr44ON44KzLOODnuOCteOCqg0KK+OCouOCteODkizjgr/jg4DjgqLjgq0NCivjg6/jgr/jg4rjg5ks44Kz44Km44K4DQor44Ki44Oq44Ok44OeLOODhOOCsOOCqg0KK+ODhOOCuOOCvyzjgr/jg4TjgqoNCivjg6jjgrfjg4/jgrcs44OS44OH44KqDQor44Of44K344OeLOOCu+OCpOOCtw0KK+OCteODiOOCpizjgqvjg4TjgrgNCivjgqvjg43jg57jg6ss44Ko44OE44OS44OtDQor44Kr44ON44KzLOODpOOCueOCtw0KK+OCqOOCuOODnizjg5Ljg63jgqLjgq0NCivjg5/jg4Tjgq/jg4Es44K444Ol44OzDQor44Oi44OqLOOCreODn+OCqg0KK+OCquODgSzjgrvjgqTjgqTjg4ENCivjg57jgqjjgqvjg68s44Kr44K644KqDQor44K/44OK44KrLOODnuOCteODjuODqg0KK+OCquODquOCrOOCtSzjg57jg4Tjg47jg6oNCivjgrPjgrvjgq0s44Kr44Kq44OrDQor44OS44Op44Ok44OeLOOCv+ODgOOCtw0KK+OCs+ODnOODqizjgqjjg4Tjg6jjgrcNCivjg4rjgqvjgqbjgqgs44K/44OE44KqDQor44K544OI44KmLOODnuOCteOCqg0KK+OCtOODiOOCpizjgq3jg6jjg5LjgrMNCivjg4Tjgqvjg6Ljg4gs44OS44Ot44Of44OBDQor44Ko44OT44OP44OpLOODqOOCt+OCouOCrQ0KK+ODouODquODjizjg5Ljg4fjg47jg6oNCivjgrnjgrrjgq0s44Oe44K144Ki44KtDQor44Oo44K344OALOODnuOCs+ODiA0KK+OCpOODnuOCpCzjg57jgrXjgq0NCivjg5Ljg44s44Og44ON44K/44KrDQor44Oo44K344OALOODn+ODig0KK+OCquODi+OCuuOCqyzjgrnjg5/jgr/jg4ANCivjgr/jgqvjgq4s44Oe44K144OS44KzDQor44Kq44Og44OpLOOCq+ODhOODkuODiA0KK+OCpuODgeODpOODnizjgqjjg4TjgrMNCivjgq/jg63jgqvjg68s44Oo44K344OO44OWDQor44Ok44Oe44K344K/LOOCv+OCreOCqg0KK+ODi+OCt+ODgCzjg5LjgrXjgqgNCivjgqvjgrfjg6/jgq4s44OS44Ot44K3DQor44Kr44ON44KzLOODpuOCreOCsw0KK+OCr+ODnuODgCzjg5/jgq3jgqoNCivjgrPjgrjjg54s44OK44Kq44K644OfDQor44K344Op44KkLOODhuODhOODkuOCsw0KK+ODleODq+OCq+ODryzjg6rjgqgNCivjg6DjgrfjgqYs44K/44OA44Ki44KtDQor44Oo44K344OOLOODiOOCt+OCqg0KK+OCueOCruOCpuODqSzjgrvjgqTjgqTjg4ENCivjg5XjgrjjgrXjg68s44Oe44OqDQor44K144OI44KmLOOCouOCreODkuODrQ0KK+OCqOOCtuOCrSzjgr/jgqvjg6bjgq0NCivjg6Djg6njgqvjg58s44K/44Kr44KqDQor44OL44Ov44Ok44OeLOODnuODhOODouODqg0KK+ODpOOCueODjizjg5/jgqsNCivjg4njgqbjg4As44OI44Oi44OS44KzDQor44Kr44K444KkLOODouODiuODnw0KK+OCv+ODiuOCqyzjg6jjgqbjgrMNCivjg57jg4Tjg4rjg6os44Kk44K144KqDQor44Kq44Kq44OQ44Ok44K3LOOCs+OCpuOCreODgQ0KK+OCv+OCq+ODj+OCtyzjgr/jgq/jg6QNCivjg57jg4Tjg6Djg6ks44Ok44K544Oe44K1DQor44Kz44Oi44OqLOODnuOCreOCsw0KK+ODjuOCvuOCqCzjgqvjgrrjgqgNCivjgqrjg44s44Kt44Oo44OfDQor44Kr44Oz44OOLOOCs+OCuuOCqA0KK+OCteODiOOCpizjgrHjgqTjgrMNCivjg47jg4rjgqss44Ov44Kr44KzDQor44Kr44Ov44OP44OpLOODpuODnw0KK+ODiuOCq+ODoOODqSzjg57jg6bjg58NCivjg6Tjg57jgrfjgr8s44OI44K344Kr44K6DQor44Kz44Km44Kk44OBLOODouODouOCqA0KK+OCpOOCv+ODpCzjg5Ljg4fjgqoNCivjg6Tjg54s44OV44Of44KzDQor44Ok44Oe44Oi44OILOOCveOCpuOCpOODgeODreOCpg0KK+OCr+ODqeOCvyzjg6TjgrnjgrMNCivjgqvjg6/jgros44Kk44K/44OrDQor44Of44Kr44OfLOOCs+OCpuOCpOODgQ0KK+OCv+OCreOCrOODryzjg6jjgrfjgqvjgroNCivjgr/jg4rjgqss44OS44Ot44Ki44KtDQor44Of44Ok44K/LOOCv+OCq+ODhuODqwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9wZXJmL2RhdGEvY29sbGF0aW9uL1Rlc3ROYW1lc19Lb3JlYW4udHh0IGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3BlcmYvZGF0YS9jb2xsYXRpb24vVGVzdE5hbWVzX0tvcmVhbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ3YTM4NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9wZXJmL2RhdGEvY29sbGF0aW9uL1Rlc3ROYW1lc19Lb3JlYW4udHh0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9wZXJmL2RhdGEvY29sbGF0aW9uL1Rlc3ROYW1lc19MYXRpbi50eHQgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvcGVyZi9kYXRhL2NvbGxhdGlvbi9UZXN0TmFtZXNfTGF0aW4udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4NTdlZmEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvcGVyZi9kYXRhL2NvbGxhdGlvbi9UZXN0TmFtZXNfTGF0aW4udHh0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9wZXJmL2RhdGEvY29sbGF0aW9uL1Rlc3ROYW1lc19TZXJiaWFuU0gudHh0IGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3BlcmYvZGF0YS9jb2xsYXRpb24vVGVzdE5hbWVzX1NlcmJpYW5TSC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2M5ZTY2MAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9wZXJmL2RhdGEvY29sbGF0aW9uL1Rlc3ROYW1lc19TZXJiaWFuU0gudHh0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9wZXJmL2RhdGEvY29sbGF0aW9uL1Rlc3ROYW1lc19TZXJiaWFuU1IudHh0IGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3BlcmYvZGF0YS9jb2xsYXRpb24vVGVzdE5hbWVzX1NlcmJpYW5TUi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWZjOWE0OAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9wZXJmL2RhdGEvY29sbGF0aW9uL1Rlc3ROYW1lc19TZXJiaWFuU1IudHh0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9wZXJmL2RhdGEvY29sbGF0aW9uL1Rlc3ROYW1lc19TaW1wbGlmaWVkX0NoaW5lc2UudHh0IGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3BlcmYvZGF0YS9jb2xsYXRpb24vVGVzdE5hbWVzX1NpbXBsaWZpZWRfQ2hpbmVzZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDRlNjQ3ZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9wZXJmL2RhdGEvY29sbGF0aW9uL1Rlc3ROYW1lc19TaW1wbGlmaWVkX0NoaW5lc2UudHh0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9wZXJmL2RhdGEvY29sbGF0aW9uL1Rlc3ROYW1lc19UaGFpLnR4dCBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9wZXJmL2RhdGEvY29sbGF0aW9uL1Rlc3ROYW1lc19UaGFpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OWEyZmVkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3BlcmYvZGF0YS9jb2xsYXRpb24vVGVzdE5hbWVzX1RoYWkudHh0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9wZXJmL25vcm1wZXJmLnBsIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3BlcmYvbm9ybXBlcmYucGwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMzM3NTJhMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9wZXJmL25vcm1wZXJmLnBsCkBAIC0wLDAgKzEsMTMgQEAKKyMvKioKKyMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIyAqIENvcHlyaWdodCAoQykgMjAwMi0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisjICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIyAqCisjICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3BlcmYvbm9ybXBlcmYucGwsdiAkCisjICogJERhdGU6IDIwMDIvMTIvMTggMDM6NTY6NDAgJAorIyAqICRSZXZpc2lvbjogMS4yICQKKyMgKgorIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjICovCisjIS91c3IvbG9jYWwvYmluL3Blcmx1c2Ugc3RyaWN0OyMgQXNzdW1lIHdlIGFyZSBydW5uaW5nIHdpdGhpbiB0aGUgaWN1NGogcm9vdCBkaXJlY3Rvcnl1c2UgbGliICdzcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvcGVyZic7dXNlIERhdGFzZXQ7Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSMgVGVzdCBjbGFzc215ICRURVNUQ0xBU1MgPSAnY29tLmlibS5pY3UuZGV2LnRlc3QucGVyZi5Ob3JtYWxpemVyUGVyZm9ybWFuY2VUZXN0JzsjIE1ldGhvZHMgdG8gYmUgdGVzdGVkLiAgRWFjaCBwYWlyIHJlcHJlc2VudHMgYSB0ZXN0IG1ldGhvZCBhbmQjIGEgYmFzZWxpbmUgbWV0aG9kIHdoaWNoIGlzIHVzZWQgZm9yIGNvbXBhcmlzb24ubXkgQE1FVEhPRFMgID0gKFsnVGVzdElDVV9ORkNfTkZDX1RleHQnLCAgJ1Rlc3RKREtfTkZDX05GQ19UZXh0J10sICAgICAgICAgICAgICAgIFsnVGVzdElDVV9ORkNfTkZEX1RleHQnLCAgJ1Rlc3RKREtfTkZDX05GRF9UZXh0J10sICAgICAgICAgICAgICAgIFsnVGVzdElDVV9ORkNfT3JpZ19UZXh0JywgJ1Rlc3RKS0RfTkZDX09yaWdfVGV4dCddLAkJCQlbJ1Rlc3RJQ1VfTkZEX05GQ19UZXh0JywgICdUZXN0SkRLX05GRF9ORkNfVGV4dCddLCAgICAgICAgICAgICAgICBbJ1Rlc3RJQ1VfTkZEX05GRF9UZXh0JywgICdUZXN0SkRLX05GRF9ORkRfVGV4dCddLCAgICAgICAgICAgICAgICBbJ1Rlc3RJQ1VfTkZEX09yaWdfVGV4dCcsICdUZXN0SkRLX05GRF9PcmlnX1RleHQnXSwgICAgICAgICAgICAgICAgKTsjIFBhdHRlcm5zIHdoaWNoIGRlZmluZSB0aGUgc2V0IG9mIGNoYXJhY3RlcnMgdXNlZCBmb3IgdGVzdGluZy5teSAkU09VUkNFRElSID0iYzpcXHdvcmtcXERldklDVVxcaWN1XFxzb3VyY2VcXHRlc3RcXHBlcmZcXG5vcm1wZXJmXFx0ZXh0XFwiO215IEBPUFRJT05TID0gKCMgICAgICAgICAgICAgICAgICAgICAgc3JjIHRleHQgICAgICAgICAgCSAgc3JjIGVuY29kaW5nICBtb2RlICAgICAgICAgICAgICAgICAgICAgIFsgImFyYWJpYy50eHQiLCAgICAgICAgICAgICAgICAgIlVURi04IiwgImIiXSwgICAgICAgICAgICAgICAgICAgIFsgImZyZW5jaC50eHQiLCAgICAgICAgICAgICAgICAgIlVURi04IiwgImIiXSwgICAgICAgICAgICAgICAgICAgIFsgImdyZWVrLnR4dCIsICAgICAgICAgICAgICAgICAgIlVURi04IiwgImIiXSwgICAgICAgICAgICAgICAgICAgIFsgImhlYnJldy50eHQiLCAgICAgICAgICAgICAgICAgIlVURi04IiwgImIiXSwgICAgICAgICAgICAgICAgICAgIFsgImhpbmRpLnR4dCIgLCAgICAgICAgICAgICAgICAgIlVURi04IiwgImIiXSwgICAgICAgICAgICAgICAgICAgIFsgImphcGFuZXNlLnR4dCIsICAgICAgICAgICAgICAgIlVURi04IiwgImIiXSwgICAgICAgICAgICAgICAgICAgIFsgImtvcmVhbi50eHQiLCAgICAgICAgICAgICAgICAgIlVURi04IiwgImIiXSwgICAgICAgICAgICAgICAgICAgIFsgInMtY2hpbmVzZS50eHQiLCAgICAgICAgICAgICAgIlVURi04IiwgImIiXSwgICAgICAgICAgICAgICAgICAgIFsgImZyZW5jaC50eHQiLCAgICAgICAgICAgICAgICAgIlVURi04IiwgImIiXSwgICAgICAgICAgICAgICAgICAgIFsgImdyZWVrLnR4dCIsICAgICAgICAgICAgICAgICAgIlVURi04IiwgImIiXSwgICAgICAgICAgICAgICAgICAgIFsgImhlYnJldy50eHQiLCAgICAgICAgICAgICAgICAgIlVURi04IiwgImIiXSwgICAgICAgICAgICAgICAgICAgIFsgImhpbmRpLnR4dCIgLCAgICAgICAgICAgICAgICAgIlVURi04IiwgImIiXSwgICAgICAgICAgICAgICAgICAgIFsgImphcGFuZXNlLnR4dCIsICAgICAgICAgICAgICAgIlVURi04IiwgImIiXSwgICAgICAgICAgICAgICAgICAgIFsgImtvcmVhbi50eHQiLCAgICAgICAgICAgICAgICAgIlVURi04IiwgImIiXSwgICAgICAgICAgICAgICAgICAgIFsgInMtY2hpbmVzZS50eHQiLCAgICAgICAgICAgICAgIlVURi04IiwgImIiXSwgICAgICAgICAgICAgICAgICAgIFsgImFyYWJpYy5odG1sIiwgICAgICAgICAgICAgICAgIlVURi04IiwgImIiXSwJCQkJCVsgImN6ZWNoLmh0bWwiLCAgICAgICAgICAgICAgICAgIlVURi04IiwgImIiXSwJCQkJCVsgImRhbmlzaC5odG1sIiwgICAgICAgICAgICAgICAgIlVURi04IiwgImIiXSwJCQkJCVsgImVuZ2xpc2guaHRtbCIsICAgICAgICAgICAgICAgIlVURi04IiwgImIiXSwJCQkJCVsgImVzcGVyYW50by5odG1sIiwgICAgICAgICAgICAgIlVURi04IiwgImIiXSwJCQkJCVsgImZyZW5jaC5odG1sIiwgICAgICAgICAgICAgICAgIlVURi04IiwgImIiXSwJCQkJCVsgImdlb3JnaWFuLmh0bWwiLCAgICAgICAgICAgICAgIlVURi04IiwgImIiXSwJCQkJCVsgImdlcm1hbi5odG1sIiwgICAgICAgICAgICAgICAgIlVURi04IiwgImIiXSwJCQkJCVsgImdyZWVrLmh0bWwiLCAgICAgICAgICAgICAgICAgIlVURi04IiwgImIiXSwJCQkJCVsgImhlYnJldy5odG1sIiwgICAgICAgICAgICAgICAgIlVURi04IiwgImIiXSwJCQkJCVsgImhpbmRpLmh0bWwiLCAgICAgICAgICAgICAgICAgIlVURi04IiwgImIiXSwJCQkJCVsgImljZWxhbmRpYy5odG1sIiwgICAgICAgICAgICAgIlVURi04IiwgImIiXSwJCQkJCVsgImludGVybGluZ3VhLmh0bWwiLCAgICAgICAgICAgIlVURi04IiwgImIiXSwJCQkJCVsgIml0YWxpYW4uaHRtbCIsICAgICAgICAgICAgICAgIlVURi04IiwgImIiXSwJCQkJCVsgImphcGFuZXNlLmh0bWwiLCAgICAgICAgICAgICAgIlVURi04IiwgImIiXSwJCQkJCVsgImtvcmVhbi5odG1sIiwgICAgICAgICAgICAgICAgIlVURi04IiwgImIiXSwJCQkJCVsgImxpdGh1YW5pYW4uaHRtbCIsICAgICAgICAgICAgIlVURi04IiwgImIiXSwJCQkJCVsgIm1hbHRlc2UuaHRtbCIsICAgICAgICAgICAgICAgIlVURi04IiwgImIiXSwJCQkJCVsgInBlcnNpYW4uaHRtbCIsICAgICAgICAgICAgICAgIlVURi04IiwgImIiXSwJCQkJCVsgInBvbGlzaC5odG1sIiwgICAgICAgICAgICAgICAgIlVURi04IiwgImIiXSwJCQkJCVsgInBvcnR1Z3Vlc2UuaHRtbCIsICAgICAgICAgICAgIlVURi04IiwgImIiXSwJCQkJCVsgInJvbWFuaWFuLmh0bWwiLCAgICAgICAgICAgICAgIlVURi04IiwgImIiXSwJCQkJCVsgInJ1c3NpYW4uaHRtbCIsICAgICAgICAgICAgICAgIlVURi04IiwgImIiXSwJCQkJCVsgInMtY2hpbmVzZS5odG1sIiwgICAgICAgICAgICAgIlVURi04IiwgImIiXSwJCQkJCVsgInNwYW5pc2guaHRtbCIsICAgICAgICAgICAgICAgIlVURi04IiwgImIiXSwJCQkJCVsgInN3ZWRpc2guaHRtbCIsICAgICAgICAgICAgICAgIlVURi04IiwgImIiXSwJCQkJCVsgInQtY2hpbmVzZS5odG1sIiwgICAgICAgICAgICAgIlVURi04IiwgImIiXSwJCQkJCVsgIndlbHNoLmh0bWwiLCAgICAgICAgICAgICAgICAgIlVURi04IiwgImIiXSwJCQkJCVsgIlRlc3ROYW1lc19Bc2lhbi50eHQiLCAgICAgICAgIlVURi04IiwgImwiXSwJCQkJCVsgIlRlc3ROYW1lc19DaGluZXNlLnR4dCIsICAgICAgIlVURi04IiwgImwiXSwJCQkJCVsgIlRlc3ROYW1lc19KYXBhbmVzZS50eHQiLCAgICAgIlVURi04IiwgImwiXSwJCQkJCVsgIlRlc3ROYW1lc19KYXBhbmVzZV9oLnR4dCIsICAgIlVURi04IiwgImwiXSwJCQkJCVsgIlRlc3ROYW1lc19KYXBhbmVzZV9rLnR4dCIsICAgIlVURi04IiwgImwiXSwJCQkJCVsgIlRlc3ROYW1lc19Lb3JlYW4udHh0IiwgICAgICAgIlVURi04IiwgImwiXSwJCQkJCVsgIlRlc3ROYW1lc19MYXRpbi50eHQiLCAgICAgICAgIlVURi04IiwgImwiXSwJCQkJCVsgIlRlc3ROYW1lc19TZXJiaWFuU0gudHh0IiwgICAgIlVURi04IiwgImwiXSwJCQkJCVsgIlRlc3ROYW1lc19TZXJiaWFuU1IudHh0IiwgICAgIlVURi04IiwgImwiXSwJCQkJCVsgIlRlc3ROYW1lc19UaGFpLnR4dCIsICAgICAgICAgIlVURi04IiwgImwiXSwJCQkJCVsgIlRlc3RuYW1lc19SdXNzaWFuLnR4dCIsICAgICAgIlVURi04IiwgImwiXSwgICAgICAgICAgICAgICApO215ICRDQUxJQlJBVEUgPSAyOyAjIGR1cmF0aW9uIGluIHNlY29uZHMgZm9yIGluaXRpYWwgY2FsaWJyYXRpb25teSAkRFVSQVRJT04gPSAxMDsgIyBkdXJhdGlvbiBpbiBzZWNvbmRzIGZvciBlYWNoIHBhc3NteSAkTlVNUEFTU0VTID0gNDsgIyBudW1iZXIgb2YgcGFzc2VzLiAgSWYgPiAxIHRoZW4gdGhlIGZpcnN0IHBhc3MgICAgICAgICAgICAgICAgICAgIyBpcyBkaXNjYXJkZWQgYXMgYSBKSVQgd2FybS11cCBwYXNzLm15ICRUQUJMRUFUVFIgPSAnQk9SREVSPSIxIiBDRUxMUEFERElORz0iNCIgQ0VMTFNQQUNJTkc9IjAiJztteSAkUExVU19NSU5VUyA9ICImcGx1c21uOyI7aWYgKCROVU1QQVNTRVMgPCAzKSB7ICAgIGRpZSAiTmVlZCBhdCBsZWFzdCAzIHBhc3Nlcy4gIE9uZSBpcyBkaXNjYXJkZWQgKEpJVCB3YXJtdXApIGFuZCBuZWVkIHR3byB0byBoYXZlIDEgZGVncmVlIG9mIGZyZWVkb20gKHQgZGlzdHJpYnV0aW9uKS4iO31teSAkT1VUOyAjIHNlZSBvdXQoKW1haW4oKTsjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIyAuLi5zdWIgbWFpbiB7ICAgIG15ICRkYXRlID0gbG9jYWx0aW1lOyAgICBteSAkdGl0bGUgPSAiSUNVNEpOSSBQZXJmb3JtYW5jZSBUZXN0ICRkYXRlIjsgICAgbXkgJGh0bWwgPSAkZGF0ZTsgICAgJGh0bWwgPX4gcy86Ly9nOyAjICc6JyBpbGxlZ2FsICAgICRodG1sID1+IHMvXHMqXGQrJC8vOyAjIGRlbGV0ZSB5ZWFyICAgICRodG1sID1+IHMvXlx3K1xzKi8vOyAjIGRlbGV0ZSBkb3cgICAgJGh0bWwgPSAicGVyZiAkaHRtbC5odG1sIjsgICAgb3BlbihIVE1MLCI+JGh0bWwiKSBvciBkaWUgIkNhbid0IHdyaXRlIHRvICRodG1sOiAkISI7ICAgIHByaW50IEhUTUwgPDxFT0Y7PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIiAgICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9zdHJpY3QuZHRkIj48SFRNTD4gICA8SEVBRD4gICAgICA8VElUTEU+JHRpdGxlPC9USVRMRT4gICA8L0hFQUQ+ICAgPEJPRFk+RU9GICAgIHByaW50IEhUTUwgIjxIMT4kdGl0bGU8L0gxPlxuIjsgICAgcHJpbnQgSFRNTCAiPEgyPiRURVNUQ0xBU1M8L0gyPlxuIjsgICAgbXkgJHJhdyA9ICIiOyAgICBmb3IgbXkgJG1ldGhvZFBhaXIgKEBNRVRIT0RTKSB7ICAgICAgICBteSAkdGVzdE1ldGhvZCA9ICRtZXRob2RQYWlyLT5bMF07ICAgICAgICBteSAkYmFzZWxpbmVNZXRob2QgPSAkbWV0aG9kUGFpci0+WzFdOyAgICAgICAgcHJpbnQgSFRNTCAiPFA+PFRBQkxFICRUQUJMRUFUVFI+PFRSPjxURD5cbiI7ICAgICAgICBwcmludCBIVE1MICI8UD48Qj4kdGVzdE1ldGhvZCB2cy4gJGJhc2VsaW5lTWV0aG9kPC9CPjwvUD5cbiI7ICAgICAgICAgICAgICAgIHByaW50IEhUTUwgIjxQPjxUQUJMRSAkVEFCTEVBVFRSIEJHQ09MT1I9XCIjQ0NGRkZGXCI+XG4iOyAgICAgICAgcHJpbnQgSFRNTCAiPFRSPjxURD5PcHRpb25zPC9URD48VEQ+JHRlc3RNZXRob2Q8L1REPiI7ICAgICAgICBwcmludCBIVE1MICI8VEQ+JGJhc2VsaW5lTWV0aG9kPC9URD48VEQ+UmF0aW88L1REPjwvVFI+XG4iOyAgICAgICAgJE9VVCA9ICcnOyAgICAgICAgZm9yIG15ICRwYXQgKEBPUFRJT05TKSB7ICAgICAgICAgICAgcHJpbnQgSFRNTCAiPFRSPjxURD5AJHBhdFswXSwgQCRwYXRbMl08L1REPlxuIjsgICAgICAgICAgICBvdXQoIjxQPjxUQUJMRSAkVEFCTEVBVFRSIFdJRFRIPVwiMTAwJVwiPiIpOyAgICAgICAgICAgICMgbWVhc3VyZSB0aGUgdGVzdCBtZXRob2QgICAgICAgICAgICBvdXQoIjxUUj48VEQ+Iik7ICAgICAgICAgICAgcHJpbnQgIlxuJHRlc3RNZXRob2QgW0AkcGF0XVxuIjsgICAgICAgICAgICBteSAkdCA9IG1lYXN1cmUyKCR0ZXN0TWV0aG9kLCAkcGF0LCAtJERVUkFUSU9OKTsgICAgICAgICAgICBvdXQoIjwvVEQ+PC9UUj4iKTsgICAgICAgICAgICBwcmludCBIVE1MICI8VEQ+IiwgZm9ybWF0U2Vjb25kcyg0LCAkdC0+Z2V0TWVhbigpLCAkdC0+Z2V0RXJyb3IpOyAgICAgICAgICAgIHByaW50IEhUTUwgIi9ldmVudDwvVEQ+XG4iOyAgICAgICAgICAgICMgbWVhc3VyZSBiYXNlbGluZSBtZXRob2QgICAgICAgICAgICBvdXQoIjxUUj48VEQ+Iik7ICAgICAgICAgICAgcHJpbnQgIlxuQmVnaW4gJGJhc2VsaW5lTWV0aG9kIFtAJHBhdF1cbiI7ICAgICAgICAgICAgbXkgJGIgPSBtZWFzdXJlMigkYmFzZWxpbmVNZXRob2QsICRwYXQsIC0kRFVSQVRJT04pOyAgICAgICAgICAgIG91dCgiPC9URD48L1RSPiIpOyAgICAgICAgICAgIHByaW50IEhUTUwgIjxURD4iLCBmb3JtYXRTZWNvbmRzKDQsICRiLT5nZXRNZWFuKCksICR0LT5nZXRFcnJvcik7ICAgICAgICAgICAgcHJpbnQgSFRNTCAiL2V2ZW50PC9URD5cbiI7ICAgICAgICAgICAgb3V0KCI8L1RBQkxFPjwvUD4iKTsgICAgICAgICAgICAjIG91dHB1dCByYXRpbyAgICAgICAgICAgIG15ICRyID0gJHQtPmRpdmlkZSgkYik7ICAgICAgICAgICAgcHJpbnQgSFRNTCAiPFREPjxCPiIsIGZvcm1hdFBlcmNlbnQoMywgJHItPmdldE1lYW4oKSwgJHItPmdldEVycm9yKTsgICAgICAgICAgICBwcmludCBIVE1MICI8L0I+PC9URD48L1RSPlxuIjsgICAgICAgIH0gICAgICAgIHByaW50IEhUTUwgIjwvVEFCTEU+PC9QPlxuIjsgICAgICAgIHByaW50IEhUTUwgIjxQPlJhdyBkYXRhOjwvUD5cbiI7ICAgICAgICBwcmludCBIVE1MICRPVVQ7ICAgICAgICBwcmludCBIVE1MICI8L1RBQkxFPjwvUD5cbiI7ICAgIH0gICAgcHJpbnQgSFRNTCA8PEVPRjsgICA8L0JPRFk+PC9IVE1MPkVPRiAgICBjbG9zZShIVE1MKSBvciBkaWUgIkNhbid0IGNsb3NlICRodG1sOiAkISI7fSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0jIEFwcGVuZCB0ZXh0IHRvIHRoZSBnbG9iYWwgdmFyaWFibGUgJE9VVHN1YiBvdXQgeyAgICAkT1VUIC49IGpvaW4oJycsIEBfKTt9Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSMgQXBwZW5kIHRleHQgdG8gdGhlIGdsb2JhbCB2YXJpYWJsZSAkT1VUc3ViIG91dGxuIHsgICAgJE9VVCAuPSBqb2luKCcnLCBAXykgLiAiXG4iO30jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIyBNZWFzdXJlIGEgZ2l2ZW4gdGVzdCBtZXRob2Qgd2l0aCBhIGdpdmUgdGVzdCBwYXR0ZXJuIHVzaW5nIHRoZSMgZ2xvYmFsIHJ1biBwYXJhbWV0ZXJzLiMjIEBwYXJhbSB0aGUgbWV0aG9kIHRvIHJ1biMgQHBhcmFtIHRoZSBwYXR0ZXJuIGRlZmluaW5nIGNoYXJhY3RlcnMgdG8gdGVzdCMgQHBhcmFtIGlmID4wIHRoZW4gdGhlIG51bWJlciBvZiBpdGVyYXRpb25zIHBlciBwYXNzLiAgSWYgPDAgdGhlbiMgICAgICAgIChuZWdhdGl2ZSBvZikgdGhlIG51bWJlciBvZiBzZWNvbmRzIHBlciBwYXNzLiMjIEByZXR1cm4gYSBEYXRhc2V0IG9iamVjdCwgc2NhbGVkIGJ5IGl0ZXJhdGlvbnMgcGVyIHBhc3MgYW5kIyAgICAgICAgIGV2ZW50cyBwZXIgaXRlcmF0aW9uLCB0byBnaXZlIHRpbWUgcGVyIGV2ZW50I3N1YiBtZWFzdXJlMiB7ICAgIG15IEBkYXRhID0gbWVhc3VyZTEoQF8pOyAgICBteSAkaXRlclBlclBhc3MgPSBzaGlmdChAZGF0YSk7ICAgIG15ICRldmVudFBlckl0ZXIgPSBzaGlmdChAZGF0YSk7ICAgIHNoaWZ0KEBkYXRhKSBpZiAoQGRhdGEgPiAxKTsgIyBkaXNjYXJkIGZpcnN0IHJ1biAgICBteSAkZHMgPSBEYXRhc2V0LT5uZXcoQGRhdGEpOyAgICAkZHMtPnNldFNjYWxlKDEuMGUtMyAvICgkaXRlclBlclBhc3MgKiAkZXZlbnRQZXJJdGVyKSk7ICAgICRkczt9Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSMgTWVhc3VyZSBhIGdpdmVuIHRlc3QgbWV0aG9kIHdpdGggYSBnaXZlIHRlc3QgcGF0dGVybiB1c2luZyB0aGUjIGdsb2JhbCBydW4gcGFyYW1ldGVycy4jIyBAcGFyYW0gdGhlIG1ldGhvZCB0byBydW4jIEBwYXJhbSB0aGUgcGF0dGVybiBkZWZpbmluZyBjaGFyYWN0ZXJzIHRvIHRlc3QjIEBwYXJhbSBpZiA+MCB0aGVuIHRoZSBudW1iZXIgb2YgaXRlcmF0aW9ucyBwZXIgcGFzcy4gIElmIDwwIHRoZW4jICAgICAgICAobmVnYXRpdmUgb2YpIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBwZXIgcGFzcy4jIyBAcmV0dXJuIGFycmF5IG9mOiMgICAgICAgICBbMF0gaXRlcmF0aW9ucyBwZXIgcGFzcyMgICAgICAgICBbMV0gZXZlbnRzIHBlciBpdGVyYXRpb24jICAgICAgICAgWzIuLl0gbXMgcmVwb3J0ZWQgZm9yIGVhY2ggcGFzcywgaW4gb3JkZXIjc3ViIG1lYXN1cmUxIHsgICAgbXkgJG1ldGhvZCA9IHNoaWZ0OyAgICBteSAkcGF0ID0gc2hpZnQ7ICAgIG15ICRpdGVyQ291bnQgPSBzaGlmdDsgIyBhY3R1YWxseSBtaWdodCBiZSAtc2Vjb25kcy9wYXNzICAgIG91dCgiPFA+TWVhc3VyaW5nICRtZXRob2QgZm9yIGlucHV0IGZpbGUgQCRwYXRbMF0gaW4gQCRwYXRbMl0gLCAiKTsgICAgaWYgKCRpdGVyQ291bnQgPiAwKSB7ICAgICAgICBvdXQoIiRpdGVyQ291bnQgaXRlcmF0aW9ucy9wYXNzLCAkTlVNUEFTU0VTIHBhc3NlczwvUD5cbiIpOyAgICB9IGVsc2UgeyAgICAgICAgb3V0KC0kaXRlckNvdW50LCAiIHNlY29uZHMvcGFzcywgJE5VTVBBU1NFUyBwYXNzZXM8L1A+XG4iKTsgICAgfSAgICAjIGlzICRpdGVyQ291bnQgYWN0dWFsbHkgLXNlY29uZHM/ICAgIGlmICgkaXRlckNvdW50IDwgMCkgeyAgICAgICAgIyBjYWxpYnJhdGU6IGVzdGltYXRlIG1zL2l0ZXJhdGlvbiAgICAgICAgcHJpbnQgIkNhbGlicmF0aW5nLi4uIjsgICAgICAgIG15IEB0ID0gY2FsbEphdmEoJG1ldGhvZCwgJHBhdCwgLSRDQUxJQlJBVEUpOyAgICAgICAgcHJpbnQgImRvbmUuXG4iOyAgICAgICAgbXkgQGRhdGEgPSBzcGxpdCgvXHMrLywgJHRbMF0tPlsyXSk7ICAgICAgICBteSAkdGltZVBlckl0ZXIgPSAxLjBlLTMgKiAkZGF0YVswXSAvICRkYXRhWzJdOyAgICAgICAgICAgICMgZGV0ZXJtaW5lIGl0ZXJhdGlvbnMvcGFzcyAgICAgICAgJGl0ZXJDb3VudCA9IGludCgtJGl0ZXJDb3VudCAvICR0aW1lUGVySXRlciArIDAuNSk7ICAgICAgICBvdXQoIjxQPkNhbGlicmF0aW9uIHBhc3MgKCRDQUxJQlJBVEUgc2VjKTogIik7ICAgICAgICBvdXQoIiRkYXRhWzBdIG1zLCAiKTsgICAgICAgIG91dCgiJGRhdGFbMl0gaXRlcmF0aW9ucyA9ICIpOyAgICAgICAgb3V0KGZvcm1hdFNlY29uZHMoNCwgJHRpbWVQZXJJdGVyKSwgIi9pdGVyYXRpb248QlI+XG4iKTsgICAgfSAgICAgICAgIyBydW4gcGFzc2VzICAgIHByaW50ICJNZWFzdXJpbmcgJGl0ZXJDb3VudCBpdGVyYXRpb25zIHggJE5VTVBBU1NFUyBwYXNzZXMuLi4iOyAgICBteSBAdCA9IGNhbGxKYXZhKCRtZXRob2QsICRwYXQsICIkaXRlckNvdW50ICIgeCAkTlVNUEFTU0VTKTsgICAgcHJpbnQgImRvbmUuXG4iOyAgICBteSBAbXMgPSAoKTsgICAgbXkgQGI7ICMgc2NyYXRjaCAgICBmb3IgbXkgJGEgKEB0KSB7ICAgICAgICAjICRhLT5bMF06IG1ldGhvZCBuYW1lLCBjb3JyZXNwb25kcyB0byAkbWV0aG9kICAgICAgICAjICRhLT5bMV06ICdiZWdpbicgZGF0YSwgPT0gJGl0ZXJDb3VudCAgICAgICAgIyAkYS0+WzJdOiAnZW5kJyBkYXRhLCBvZiB0aGUgZm9ybSA8bXM+IDxldmVudHNQZXJJdGVyPiAgICAgICAgIyAkYS0+WzMuLi5dOiBnYyBtZXNzYWdlcyBmcm9tIEpWTSBkdXJpbmcgcGFzcyAgICAgICAgQGIgPSBzcGxpdCgvXHMrLywgJGEtPlsyXSk7ICAgICAgICBwdXNoKEBtcywgJGJbMF0pOyAgICB9ICAgIG15ICRldmVudHNQZXJJdGVyID0gJGJbMV07ICAgIG91dCgiSXRlcmF0aW9ucyBwZXIgcGFzczogJGl0ZXJDb3VudDxCUj5cbiIpOyAgICBvdXQoIkV2ZW50cyBwZXIgaXRlcmF0aW9uOiAkZXZlbnRzUGVySXRlcjxCUj5cbiIpOyAgICBteSBAbXNfc3RyID0gQG1zOyAgICAkbXNfc3RyWzBdIC49ICIgKGRpc2NhcmRlZCkiIGlmIChAbXNfc3RyID4gMSk7ICAgIG91dCgiUmF3IHRpbWVzIChtcy9wYXNzKTogIiwgam9pbigiLCAiLCBAbXNfc3RyKSwgIjxCUj5cbiIpOyAgICAoJGl0ZXJDb3VudCwgJGV2ZW50c1Blckl0ZXIsIEBtcyk7fSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0jIEludm9rZSBqYXZhIHRvIHJ1biAkVEVTVENMQVNTLCBwYXNzaW5nIGl0IHRoZSBnaXZlbiBwYXJhbWV0ZXJzLiMjIEBwYXJhbSB0aGUgbWV0aG9kIHRvIHJ1biMgQHBhcmFtIHRoZSBudW1iZXIgb2YgaXRlcmF0aW9ucywgb3IgaWYgbmVnYXRpdmUsIHRoZSBkdXJhdGlvbiMgICAgICAgIGluIHNlY29uZHMuICBJZiBtb3JlIHRoYW4gb24gcGFzcyBpcyBkZXNpcmVkLCBwYXNzIGluIyAgICAgICAgYSBzdHJpbmcsIGUuZy4sICIxMDAgMTAwIDEwMCIuIyBAcGFyYW0gdGhlIHBhdHRlcm4gZGVmaW5pbmcgY2hhcmFjdGVycyB0byB0ZXN0IyMgQHJldHVybiBhbiBhcnJheSBvZiByZXN1bHRzLiAgRWFjaCByZXN1bHQgaXMgYW4gYXJyYXkgUkVGIyAgICAgICAgIGRlc2NyaWJpbmcgb25lIHBhc3MuICBUaGUgYXJyYXkgUkVGIGNvbnRhaW5zOiMgICAgICAgICAtPlswXTogVGhlIG1ldGhvZCBuYW1lIGFzIHJlcG9ydGVkIyAgICAgICAgIC0+WzFdOiBUaGUgcGFyYW1zIG9uIHRoZSAnPSA8bWV0aD4gYmVnaW4gLi4uJyBsaW5lIyAgICAgICAgIC0+WzJdOiBUaGUgcGFyYW1zIG9uIHRoZSAnPSA8bWV0aD4gZW5kIC4uLicgbGluZSMgICAgICAgICAtPlszLi5dOiBHQyBtZXNzYWdlcyBmcm9tIHRoZSBKVk0sIGlmIGFueSNzdWIgY2FsbEphdmEgeyAgICBteSAkbWV0aG9kID0gc2hpZnQ7ICAgIG15ICRwYXQgPSBzaGlmdDsgICAgbXkgJG4gPSBzaGlmdDsgICAgbXkgJGZpbGVOYW1lID0gJFNPVVJDRURJUiAuIEAkcGF0WzBdIDsgICAgIG15ICRjbWQgPSAiYzpcXGoyc2RrMS40LjBcXGJpblxcamF2YSAtY2xhc3NwYXRoIDtjbGFzc2VzOyAkVEVTVENMQVNTICRtZXRob2QgJG4gLWYgJGZpbGVOYW1lIC1lIEAkcGF0WzFdIC1AJHBhdFsyXSI7ICAgIHByaW50ICJbJGNtZF1cbiI7ICMgZm9yIGRlYnVnZ2luZyAgICBvcGVuKFBJUEUsICIkY21kfCIpIG9yIGRpZSAiQ2FuJ3QgcnVuIFwiJGNtZFwiIjsgICAgbXkgQG91dDsgICAgd2hpbGUgKDxQSVBFPikgeyAgICAgICAgcHVzaChAb3V0LCAkXyk7ICAgIH0gICAgY2xvc2UoUElQRSkgb3IgZGllICJKYXZhIGZhaWxlZDogXCIkY21kXCIiOyAgICBAb3V0ID0gZ3JlcCghL15cIy8sIEBvdXQpOyAgIyBmaWx0ZXIgb3V0IGNvbW1lbnRzICAgICNwcmludCAiWyIsIGpvaW4oIlxuIiwgQG91dCksICJdXG4iOyAgICBteSBAcmVzdWx0czsgICAgbXkgJG1ldGhvZCA9ICcnOyAgICBteSAkZGF0YSA9IFtdOyAgICBmb3JlYWNoIChAb3V0KSB7ICAgICAgICBuZXh0IHVubGVzcyAoL1xTLyk7ICAgICAgICBpZiAoL149XHMqKFx3KylccyooXHcrKVxzKiguKikvKSB7ICAgICAgICAgICAgbXkgKCRtLCAkc3RhdGUsICRkKSA9ICgkMSwgJDIsICQzKTsgICAgICAgICAgICAjcHJpbnQgIiRfID0+IFtbJG0gJHN0YXRlICRkYXRhXV1cbiI7ICAgICAgICAgICAgaWYgKCRzdGF0ZSBlcSAnYmVnaW4nKSB7ICAgICAgICAgICAgICAgIGRpZSAiJG1ldGhvZCB3YXMgYmVndW4gYnV0IG5vdCBmaW5pc2hlZCIgaWYgKCRtZXRob2QpOyAgICAgICAgICAgICAgICAkbWV0aG9kID0gJG07ICAgICAgICAgICAgICAgIHB1c2goQCRkYXRhLCAkZCk7ICAgICAgICAgICAgICAgIHB1c2goQCRkYXRhLCAnJyk7ICMgcGxhY2Vob2xkZXIgZm9yIGVuZCBkYXRhICAgICAgICAgICAgfSBlbHNpZiAoJHN0YXRlIGVxICdlbmQnKSB7ICAgICAgICAgICAgICAgIGlmICgkbSBuZSAkbWV0aG9kKSB7ICAgICAgICAgICAgICAgICAgICBkaWUgIiRtZXRob2QgZW5kIGRvZXMgbm90IG1hdGNoOiAkXyI7ICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgJGRhdGEtPlsxXSA9ICRkOyAjIGluc2VydCBlbmQgZGF0YSBhdCBbMV0gICAgICAgICAgICAgICAgI3ByaW50ICIjJG1ldGhvZDoiLCBqb2luKCI7IixAJGRhdGEpLCAiXG4iOyAgICAgICAgICAgICAgICB1bnNoaWZ0KEAkZGF0YSwgJG1ldGhvZCk7ICMgYWRkIG1ldGhvZCB0byBzdGFydCAgICAgICAgICAgICAgICBwdXNoKEByZXN1bHRzLCAkZGF0YSk7ICAgICAgICAgICAgICAgICRtZXRob2QgPSAnJzsgICAgICAgICAgICAgICAgJGRhdGEgPSBbXTsgICAgICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICBkaWUgIkNhbid0IHBhcnNlOiAkXyI7ICAgICAgICAgICAgfSAgICAgICAgfSAgICAgICAgZWxzaWYgKC9eXFsvKSB7ICAgICAgICAgICAgaWYgKCRtZXRob2QpIHsgICAgICAgICAgICAgICAgcHVzaChAJGRhdGEsICRfKTsgICAgICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAjIGlnbm9yZSBleHRyYW5lb3VzIEdDIG5vdGljZXMgICAgICAgICAgICB9ICAgICAgICB9ICAgICAgICBlbHNlIHsgICAgICAgICAgICBkaWUgIkNhbid0IHBhcnNlOiAkXyI7ICAgICAgICB9ICAgIH0gICAgZGllICIkbWV0aG9kIHdhcyBiZWd1biBidXQgbm90IGZpbmlzaGVkIiBpZiAoJG1ldGhvZCk7ICAgIEByZXN1bHRzO30jfCMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0jfCMgRm9ybWF0IGEgY29uZmlkZW5jZSBpbnRlcnZhbCwgYXMgZ2l2ZW4gYnkgYSBEYXRhc2V0LiAgT3V0cHV0IGlzIGFzI3wjIGFzIGZvbGxvd3M6I3wjICAgMjQxLjIzIC0gMjQxLjk4ID0+IDI0MS41ICsvLSAwLjMjfCMgICAyNDEuMiAtIDI0My44ID0+IDI0MiArLy0gMSN8IyAgIDIxMS4wIC0gMjQxLjAgPT4gMjI2ICsvLSAxNSBvcj8gMjMwICsvLSAyMCN8IyAgIDIyMC4zIC0gMjM0LjMgPT4gMjI3ICsvLSA3I3wjICAgMjIwLjMgLSAzMDAuMyA9PiAyNjAgKy8tIDQwI3wjICAgMjIwLjMgLSAxMDAwID0+IDYxMCArLy0gMzkwIG9yPyA2MDAgKy8tIDQwMCN8IyAgIDAuMDIyIC0gMC4wMjQgPT4gMC4wMjMgKy8tIDAuMDAxI3wjICAgMC4wMjIgLSAwLjAzMiA9PiAwLjAyNyArLy0gMC4wMDUjfCMgICAwLjAyMiAtIDEuMDAwID0+IDAuNSArLy0gMC41I3wjIEluIG90aGVyIHdvcmRzLCB0YWtlIG9uZSBzaWduaWZpY2FudCBkaWdpdCBvZiB0aGUgZXJyb3IgdmFsdWUgYW5kI3wjIGRpc3BsYXkgdGhlIG1lYW4gdG8gdGhlIHNhbWUgcHJlY2lzaW9uLiN8c3ViIGZvcm1hdERhdGFzZXQgeyN8ICAgIG15ICRkcyA9IHNoaWZ0OyN8ICAgIG15ICRsb3dlciA9ICRkcy0+Z2V0TWVhbigpIC0gJGRzLT5nZXRFcnJvcigpOyN8ICAgIG15ICR1cHBlciA9ICRkcy0+Z2V0TWVhbigpICsgJGRzLT5nZXRFcnJvcigpOyN8ICAgIG15ICRzY2FsZSA9IDA7I3wgICAgIyBGaW5kIGhvdyBtYW55IGluaXRpYWwgZGlnaXRzIGFyZSB0aGUgc2FtZSN8ICAgIHdoaWxlICgkbG93ZXIgPCAxIHx8I3wgICAgICAgICAgIGludCgkbG93ZXIpID09IGludCgkdXBwZXIpKSB7I3wgICAgICAgICRsb3dlciAqPSAxMDsjfCAgICAgICAgJHVwcGVyICo9IDEwOyN8ICAgICAgICAkc2NhbGUrKzsjfCAgICB9I3wgICAgd2hpbGUgKCRsb3dlciA+PSAxMCAmJiN8ICAgICAgICAgICBpbnQoJGxvd2VyKSA9PSBpbnQoJHVwcGVyKSkgeyN8ICAgICAgICAkbG93ZXIgLz0gMTA7I3wgICAgICAgICR1cHBlciAvPSAxMDsjfCAgICAgICAgJHNjYWxlLS07I3wgICAgfSN8fSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0jIEZvcm1hdCBhIG51bWJlciwgb3B0aW9uYWxseSB3aXRoIGEgKy8tIGRlbHRhLCB0byBuIHNpZ25pZmljYW50IyBkaWdpdHMuIyMgQHBhcmFtIHNpZ25pZmljYW50IGRpZ2l0LCBhIHZhbHVlID49IDEjIEBwYXJhbSBtdWx0aXBsaWVyIyBAcGFyYW0gdGltZSBpbiBzZWNvbmRzIHRvIGJlIGZvcm1hdHRlZCMgQG9wdGlvbmFsIGRlbHRhIGluIHNlY29uZHMjIyBAcmV0dXJuIHN0cmluZyBvZiB0aGUgZm9ybSAiMjMiIG9yICIyMyArLy0gMTAiLiNzdWIgZm9ybWF0TnVtYmVyIHsgICAgbXkgJHNpZ2RpZyA9IHNoaWZ0OyAgICBteSAkbXVsdCA9IHNoaWZ0OyAgICBteSAkYSA9IHNoaWZ0OyAgICBteSAkZGVsdGEgPSBzaGlmdDsgIyBtYXkgYmUgdW5kZWYgICAgICAgIG15ICRyZXN1bHQgPSBmb3JtYXRTaWdEaWcoJHNpZ2RpZywgJGEqJG11bHQpOyAgICBpZiAoZGVmaW5lZCgkZGVsdGEpKSB7ICAgICAgICBteSAkZCA9IGZvcm1hdFNpZ0RpZygkc2lnZGlnLCAkZGVsdGEqJG11bHQpOyAgICAgICAgIyByZXN0cmljdCBQUkVDSVNJT04gb2YgZGVsdGEgdG8gdGhhdCBvZiBtYWluIG51bWJlciAgICAgICAgaWYgKCRyZXN1bHQgPX4gL1wuKFxkKykvKSB7ICAgICAgICAgICAgIyBUT0RPIG1ha2UgdGhpcyB3b3JrIGZvciB2YWx1ZXMgd2l0aCBhbGwgc2lnbmlmaWNhbnQgICAgICAgICAgICAjIGRpZ2l0cyB0byB0aGUgbGVmdCBvZiB0aGUgZGVjaW1hbCwgZS5nLiwgMTIzNDAwMC4gICAgICAgICAgICAjIFRPRE8gdGhlIG90aGVyIHRoaW5nIHdyb25nIHdpdGggdGhpcyBpcyB0aGF0IGl0ICAgICAgICAgICAgIyBpc24ndCByb3VuZGluZyB0aGUgJGRlbHRhIHByb3Blcmx5LiAgSGF2ZSB0byBwdXQgICAgICAgICAgICAjIHRoaXMgbG9naWMgaW50byBmb3JtYXRTaWdEaWcoKS4gICAgICAgICAgICBteSAkeCA9IGxlbmd0aCgkMSk7ICAgICAgICAgICAgJGQgPX4gcy9cLihcZHskeH0pXGQrLy4kMS87ICAgICAgICB9ICAgICAgICAkcmVzdWx0IC49ICIgJFBMVVNfTUlOVVMgIiAuICRkOyAgICB9ICAgICRyZXN1bHQ7fSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0jIEZvcm1hdCBhIHRpbWUsIG9wdGlvbmFsbHkgd2l0aCBhICsvLSBkZWx0YSwgdG8gbiBzaWduaWZpY2FudCMgZGlnaXRzLiMjIEBwYXJhbSBzaWduaWZpY2FudCBkaWdpdCwgYSB2YWx1ZSA+PSAxIyBAcGFyYW0gdGltZSBpbiBzZWNvbmRzIHRvIGJlIGZvcm1hdHRlZCMgQG9wdGlvbmFsIGRlbHRhIGluIHNlY29uZHMjIyBAcmV0dXJuIHN0cmluZyBvZiB0aGUgZm9ybSAiMjMgbXMiIG9yICIyMyArLy0gMTAgbXMiLiNzdWIgZm9ybWF0U2Vjb25kcyB7ICAgIG15ICRzaWdkaWcgPSBzaGlmdDsgICAgbXkgJGEgPSBzaGlmdDsgICAgbXkgJGRlbHRhID0gc2hpZnQ7ICMgbWF5IGJlIHVuZGVmICAgIG15IEBNVUxUID0gKDEgICAsIDFlMywgIDFlNiwgIDFlOSk7ICAgIG15IEBTVUZGID0gKCdzJyAsICdtcycsICd1cycsICducycpOyAgICAjIERldGVybWluZSBvdXIgc2NhbGUgICAgbXkgJGkgPSAwOyAgICArKyRpIHdoaWxlICgkYSokTVVMVFskaV0gPCAxICYmICRpIDwgQE1VTFQpOyAgICAgICAgZm9ybWF0TnVtYmVyKCRzaWdkaWcsICRNVUxUWyRpXSwgJGEsICRkZWx0YSkgLiAnICcgLiAkU1VGRlskaV07fSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0jIEZvcm1hdCBhIHBlcmNlbnRhZ2UsIG9wdGlvbmFsbHkgd2l0aCBhICsvLSBkZWx0YSwgdG8gbiBzaWduaWZpY2FudCMgZGlnaXRzLiMjIEBwYXJhbSBzaWduaWZpY2FudCBkaWdpdCwgYSB2YWx1ZSA+PSAxIyBAcGFyYW0gdmFsdWUgdG8gYmUgZm9ybWF0dGVkLCBhcyBhIGZyYWN0aW9uLCBlLmcuIDAuNSBmb3IgNTAlIyBAb3B0aW9uYWwgZGVsdGEsIGFzIGEgZnJhY3Rpb24jIyBAcmV0dXJuIHN0cmluZyBvZiB0aGUgZm9ybSAiMjMgJSIgb3IgIjIzICsvLSAxMCAlIi4jc3ViIGZvcm1hdFBlcmNlbnQgeyAgICBteSAkc2lnZGlnID0gc2hpZnQ7ICAgIG15ICRhID0gc2hpZnQ7ICAgIG15ICRkZWx0YSA9IHNoaWZ0OyAjIG1heSBiZSB1bmRlZiAgICAgICAgZm9ybWF0TnVtYmVyKCRzaWdkaWcsIDEwMCwgJGEsICRkZWx0YSkgLiAnICUnO30jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIyBGb3JtYXQgYSBudW1iZXIgdG8gbiBzaWduaWZpY2FudCBkaWdpdHMgd2l0aG91dCB1c2luZyBleHBvbmVudGlhbCMgbm90YXRpb24uIyMgQHBhcmFtIHNpZ25pZmljYW50IGRpZ2l0LCBhIHZhbHVlID49IDEjIEBwYXJhbSBudW1iZXIgdG8gYmUgZm9ybWF0dGVkIyMgQHJldHVybiBzdHJpbmcgb2YgdGhlIGZvcm0gIjEyMzQiICIxMi4zNCIgb3IgIjAuMDAxMjM0Ii4gIElmIyAgICAgICAgIG51bWJlciB3YXMgbmVnYXRpdmUsIHByZWZpeGVkIGJ5ICctJy4jc3ViIGZvcm1hdFNpZ0RpZyB7ICAgIG15ICRuID0gc2hpZnQoKSAtIDE7ICAgIG15ICRhID0gc2hpZnQ7ICAgIGxvY2FsICRfID0gc3ByaW50ZigiJS4ke259ZSIsICRhKTsgICAgbXkgJHNpZ24gPSAocy9eLS8vKSA/ICctJyA6ICcnOyAgICBteSAkYV9lOyAgICBteSAkcmVzdWx0OyAgICBpZiAoL14oXGQpXC4oXGQrKWUoWy0rXVxkKykkLykgeyAgICAgICAgbXkgKCRkLCAkZG4sICRlKSA9ICgkMSwgJDIsICQzKTsgICAgICAgICRhX2UgPSAkZTsgICAgICAgICRkIC49ICRkbjsgICAgICAgICRlKys7ICAgICAgICAkZCAuPSAnMCcgd2hpbGUgKCRlID4gbGVuZ3RoKCRkKSk7ICAgICAgICB3aGlsZSAoJGUgPCAxKSB7ICAgICAgICAgICAgJGUrKzsgICAgICAgICAgICAkZCA9ICcwJyAuICRkOyAgICAgICAgfSAgICAgICAgaWYgKCRlID09IGxlbmd0aCgkZCkpIHsgICAgICAgICAgICAkcmVzdWx0ID0gJHNpZ24gLiAkZDsgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgJHJlc3VsdCA9ICRzaWduIC4gc3Vic3RyKCRkLCAwLCAkZSkgLiAnLicgLiBzdWJzdHIoJGQsICRlKTsgICAgICAgIH0gICAgfSBlbHNlIHsgICAgICAgIGRpZSAiQ2FuJ3QgcGFyc2UgJF8iOyAgICB9ICAgICRyZXN1bHQ7fSNlb2YKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvcGVyZi9wZXJmLnBsIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3BlcmYvcGVyZi5wbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44YjVjMDRhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3BlcmYvcGVyZi5wbApAQCAtMCwwICsxLDQ4MSBAQAorIy8qKgorIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyMgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjICoKKyMgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvcGVyZi9BdHRpYy9wZXJmLnBsLHYgJAorIyAqICREYXRlOiAyMDAyLzEyLzE4IDAzOjU2OjQwICQKKyMgKiAkUmV2aXNpb246IDEuMyAkCisjICoKKyMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIyAqLworCisjIS91c3IvbG9jYWwvYmluL3BlcmwKKwordXNlIHN0cmljdDsKKworIyBBc3N1bWUgd2UgYXJlIHJ1bm5pbmcgd2l0aGluIHRoZSBpY3U0aiByb290IGRpcmVjdG9yeQordXNlIGxpYiAnc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3BlcmYnOworCit1c2UgRGF0YXNldDsKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUZXN0IGNsYXNzCitteSAkVEVTVENMQVNTID0gJ2NvbS5pYm0uaWN1LmRldi50ZXN0LnBlcmYuVW5pY29kZVNldFBlcmYnOworCisjIE1ldGhvZHMgdG8gYmUgdGVzdGVkLiAgRWFjaCBwYWlyIHJlcHJlc2VudHMgYSB0ZXN0IG1ldGhvZCBhbmQKKyMgYSBiYXNlbGluZSBtZXRob2Qgd2hpY2ggaXMgdXNlZCBmb3IgY29tcGFyaXNvbi4KK215IEBNRVRIT0RTICA9IChbJ1VuaWNvZGVTZXRBZGQnLCAnSGFzaFNldEFkZCddLAorICAgICAgICAgICAgICAgIFsnVW5pY29kZVNldENvbnRhaW5zJywgJ0hhc2hTZXRDb250YWlucyddLAorICAgICAgICAgICAgICAgIFsnVW5pY29kZVNldEl0ZXJhdGUnLCAnSGFzaFNldEl0ZXJhdGUnXSk7CisKKyMgUGF0dGVybnMgd2hpY2ggZGVmaW5lIHRoZSBzZXQgb2YgY2hhcmFjdGVycyB1c2VkIGZvciB0ZXN0aW5nLgorbXkgQFBBVFRFUk5TID0gKCdbOkx0Ol0nLCAnWzpDbjpdJyk7CisKK215ICRDQUxJQlJBVEUgPSAyOyAjIGR1cmF0aW9uIGluIHNlY29uZHMgZm9yIGluaXRpYWwgY2FsaWJyYXRpb24KK215ICREVVJBVElPTiA9IDEwOyAjIGR1cmF0aW9uIGluIHNlY29uZHMgZm9yIGVhY2ggcGFzcworbXkgJE5VTVBBU1NFUyA9IDQ7ICMgbnVtYmVyIG9mIHBhc3Nlcy4gIElmID4gMSB0aGVuIHRoZSBmaXJzdCBwYXNzCisgICAgICAgICAgICAgICAgICAgIyBpcyBkaXNjYXJkZWQgYXMgYSBKSVQgd2FybS11cCBwYXNzLgorCitteSAkVEFCTEVBVFRSID0gJ0JPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjQiIENFTExTUEFDSU5HPSIwIic7CisKK215ICRQTFVTX01JTlVTID0gIiZwbHVzbW47IjsKKworaWYgKCROVU1QQVNTRVMgPCAzKSB7CisgICAgZGllICJOZWVkIGF0IGxlYXN0IDMgcGFzc2VzLiAgT25lIGlzIGRpc2NhcmRlZCAoSklUIHdhcm11cCkgYW5kIG5lZWQgdHdvIHRvIGhhdmUgMSBkZWdyZWUgb2YgZnJlZWRvbSAodCBkaXN0cmlidXRpb24pLiI7Cit9CisKK215ICRPVVQ7ICMgc2VlIG91dCgpCisKK21haW4oKTsKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyAuLi4KK3N1YiBtYWluIHsKKyAgICBteSAkZGF0ZSA9IGxvY2FsdGltZTsKKyAgICBteSAkdGl0bGUgPSAiSUNVNEogUGVyZm9ybWFuY2UgVGVzdCAkZGF0ZSI7CisKKyAgICBteSAkaHRtbCA9ICRkYXRlOworICAgICRodG1sID1+IHMvOi8vZzsgIyAnOicgaWxsZWdhbAorICAgICRodG1sID1+IHMvXHMqXGQrJC8vOyAjIGRlbGV0ZSB5ZWFyCisgICAgJGh0bWwgPX4gcy9eXHcrXHMqLy87ICMgZGVsZXRlIGRvdworICAgICRodG1sID0gInBlcmYgJGh0bWwuaHRtbCI7CisKKyAgICBvcGVuKEhUTUwsIj4kaHRtbCIpIG9yIGRpZSAiQ2FuJ3Qgd3JpdGUgdG8gJGh0bWw6ICQhIjsKKworICAgIHByaW50IEhUTUwgPDxFT0Y7Cis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iCisgICAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCI+Cis8SFRNTD4KKyAgIDxIRUFEPgorICAgICAgPFRJVExFPiR0aXRsZTwvVElUTEU+CisgICA8L0hFQUQ+CisgICA8Qk9EWT4KK0VPRgorICAgIHByaW50IEhUTUwgIjxIMT4kdGl0bGU8L0gxPlxuIjsKKworICAgIHByaW50IEhUTUwgIjxIMj4kVEVTVENMQVNTPC9IMj5cbiI7CisKKyAgICBteSAkcmF3ID0gIiI7CisKKyAgICBmb3IgbXkgJG1ldGhvZFBhaXIgKEBNRVRIT0RTKSB7CisKKyAgICAgICAgbXkgJHRlc3RNZXRob2QgPSAkbWV0aG9kUGFpci0+WzBdOworICAgICAgICBteSAkYmFzZWxpbmVNZXRob2QgPSAkbWV0aG9kUGFpci0+WzFdOworCisgICAgICAgIHByaW50IEhUTUwgIjxQPjxUQUJMRSAkVEFCTEVBVFRSPjxUUj48VEQ+XG4iOworICAgICAgICBwcmludCBIVE1MICI8UD48Qj4kdGVzdE1ldGhvZCB2cy4gJGJhc2VsaW5lTWV0aG9kPC9CPjwvUD5cbiI7CisgICAgICAgIAorICAgICAgICBwcmludCBIVE1MICI8UD48VEFCTEUgJFRBQkxFQVRUUiBCR0NPTE9SPVwiI0NDRkZGRlwiPlxuIjsKKyAgICAgICAgcHJpbnQgSFRNTCAiPFRSPjxURD5QYXR0ZXJuPC9URD48VEQ+JHRlc3RNZXRob2Q8L1REPiI7CisgICAgICAgIHByaW50IEhUTUwgIjxURD4kYmFzZWxpbmVNZXRob2Q8L1REPjxURD5SYXRpbzwvVEQ+PC9UUj5cbiI7CisKKyAgICAgICAgJE9VVCA9ICcnOworCisgICAgICAgIGZvciBteSAkcGF0IChAUEFUVEVSTlMpIHsKKyAgICAgICAgICAgIHByaW50IEhUTUwgIjxUUj48VEQ+JHBhdDwvVEQ+XG4iOworCisgICAgICAgICAgICBvdXQoIjxQPjxUQUJMRSAkVEFCTEVBVFRSIFdJRFRIPVwiMTAwJVwiPiIpOworCisgICAgICAgICAgICAjIG1lYXN1cmUgdGhlIHRlc3QgbWV0aG9kCisgICAgICAgICAgICBvdXQoIjxUUj48VEQ+Iik7CisgICAgICAgICAgICBwcmludCAiXG4kdGVzdE1ldGhvZCAkcGF0XG4iOworICAgICAgICAgICAgbXkgJHQgPSBtZWFzdXJlMigkdGVzdE1ldGhvZCwgJHBhdCwgLSREVVJBVElPTik7CisgICAgICAgICAgICBvdXQoIjwvVEQ+PC9UUj4iKTsKKyAgICAgICAgICAgIHByaW50IEhUTUwgIjxURD4iLCBmb3JtYXRTZWNvbmRzKDQsICR0LT5nZXRNZWFuKCksICR0LT5nZXRFcnJvcik7CisgICAgICAgICAgICBwcmludCBIVE1MICIvZXZlbnQ8L1REPlxuIjsKKworICAgICAgICAgICAgIyBtZWFzdXJlIGJhc2VsaW5lIG1ldGhvZAorICAgICAgICAgICAgb3V0KCI8VFI+PFREPiIpOworICAgICAgICAgICAgcHJpbnQgIlxuQmVnaW4gJGJhc2VsaW5lTWV0aG9kICRwYXRcbiI7CisgICAgICAgICAgICBteSAkYiA9IG1lYXN1cmUyKCRiYXNlbGluZU1ldGhvZCwgJHBhdCwgLSREVVJBVElPTik7CisgICAgICAgICAgICBvdXQoIjwvVEQ+PC9UUj4iKTsKKyAgICAgICAgICAgIHByaW50IEhUTUwgIjxURD4iLCBmb3JtYXRTZWNvbmRzKDQsICRiLT5nZXRNZWFuKCksICR0LT5nZXRFcnJvcik7CisgICAgICAgICAgICBwcmludCBIVE1MICIvZXZlbnQ8L1REPlxuIjsKKworICAgICAgICAgICAgb3V0KCI8L1RBQkxFPjwvUD4iKTsKKworICAgICAgICAgICAgIyBvdXRwdXQgcmF0aW8KKyAgICAgICAgICAgIG15ICRyID0gJHQtPmRpdmlkZSgkYik7CisgICAgICAgICAgICBwcmludCBIVE1MICI8VEQ+PEI+IiwgZm9ybWF0UGVyY2VudCgzLCAkci0+Z2V0TWVhbigpLCAkci0+Z2V0RXJyb3IpOworICAgICAgICAgICAgcHJpbnQgSFRNTCAiPC9CPjwvVEQ+PC9UUj5cbiI7CisgICAgICAgIH0KKworICAgICAgICBwcmludCBIVE1MICI8L1RBQkxFPjwvUD5cbiI7CisKKyAgICAgICAgcHJpbnQgSFRNTCAiPFA+UmF3IGRhdGE6PC9QPlxuIjsKKyAgICAgICAgcHJpbnQgSFRNTCAkT1VUOworICAgICAgICBwcmludCBIVE1MICI8L1RBQkxFPjwvUD5cbiI7CisgICAgfQorCisgICAgcHJpbnQgSFRNTCA8PEVPRjsKKyAgIDwvQk9EWT4KKzwvSFRNTD4KK0VPRgorICAgIGNsb3NlKEhUTUwpIG9yIGRpZSAiQ2FuJ3QgY2xvc2UgJGh0bWw6ICQhIjsKK30KKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBBcHBlbmQgdGV4dCB0byB0aGUgZ2xvYmFsIHZhcmlhYmxlICRPVVQKK3N1YiBvdXQgeworICAgICRPVVQgLj0gam9pbignJywgQF8pOworfQorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEFwcGVuZCB0ZXh0IHRvIHRoZSBnbG9iYWwgdmFyaWFibGUgJE9VVAorc3ViIG91dGxuIHsKKyAgICAkT1VUIC49IGpvaW4oJycsIEBfKSAuICJcbiI7Cit9CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgTWVhc3VyZSBhIGdpdmVuIHRlc3QgbWV0aG9kIHdpdGggYSBnaXZlIHRlc3QgcGF0dGVybiB1c2luZyB0aGUKKyMgZ2xvYmFsIHJ1biBwYXJhbWV0ZXJzLgorIworIyBAcGFyYW0gdGhlIG1ldGhvZCB0byBydW4KKyMgQHBhcmFtIHRoZSBwYXR0ZXJuIGRlZmluaW5nIGNoYXJhY3RlcnMgdG8gdGVzdAorIyBAcGFyYW0gaWYgPjAgdGhlbiB0aGUgbnVtYmVyIG9mIGl0ZXJhdGlvbnMgcGVyIHBhc3MuICBJZiA8MCB0aGVuCisjICAgICAgICAobmVnYXRpdmUgb2YpIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBwZXIgcGFzcy4KKyMKKyMgQHJldHVybiBhIERhdGFzZXQgb2JqZWN0LCBzY2FsZWQgYnkgaXRlcmF0aW9ucyBwZXIgcGFzcyBhbmQKKyMgICAgICAgICBldmVudHMgcGVyIGl0ZXJhdGlvbiwgdG8gZ2l2ZSB0aW1lIHBlciBldmVudAorIworc3ViIG1lYXN1cmUyIHsKKyAgICBteSBAZGF0YSA9IG1lYXN1cmUxKEBfKTsKKyAgICBteSAkaXRlclBlclBhc3MgPSBzaGlmdChAZGF0YSk7CisgICAgbXkgJGV2ZW50UGVySXRlciA9IHNoaWZ0KEBkYXRhKTsKKworICAgIHNoaWZ0KEBkYXRhKSBpZiAoQGRhdGEgPiAxKTsgIyBkaXNjYXJkIGZpcnN0IHJ1bgorCisgICAgbXkgJGRzID0gRGF0YXNldC0+bmV3KEBkYXRhKTsKKyAgICAkZHMtPnNldFNjYWxlKDEuMGUtMyAvICgkaXRlclBlclBhc3MgKiAkZXZlbnRQZXJJdGVyKSk7CisgICAgJGRzOworfQorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIE1lYXN1cmUgYSBnaXZlbiB0ZXN0IG1ldGhvZCB3aXRoIGEgZ2l2ZSB0ZXN0IHBhdHRlcm4gdXNpbmcgdGhlCisjIGdsb2JhbCBydW4gcGFyYW1ldGVycy4KKyMKKyMgQHBhcmFtIHRoZSBtZXRob2QgdG8gcnVuCisjIEBwYXJhbSB0aGUgcGF0dGVybiBkZWZpbmluZyBjaGFyYWN0ZXJzIHRvIHRlc3QKKyMgQHBhcmFtIGlmID4wIHRoZW4gdGhlIG51bWJlciBvZiBpdGVyYXRpb25zIHBlciBwYXNzLiAgSWYgPDAgdGhlbgorIyAgICAgICAgKG5lZ2F0aXZlIG9mKSB0aGUgbnVtYmVyIG9mIHNlY29uZHMgcGVyIHBhc3MuCisjCisjIEByZXR1cm4gYXJyYXkgb2Y6CisjICAgICAgICAgWzBdIGl0ZXJhdGlvbnMgcGVyIHBhc3MKKyMgICAgICAgICBbMV0gZXZlbnRzIHBlciBpdGVyYXRpb24KKyMgICAgICAgICBbMi4uXSBtcyByZXBvcnRlZCBmb3IgZWFjaCBwYXNzLCBpbiBvcmRlcgorIworc3ViIG1lYXN1cmUxIHsKKyAgICBteSAkbWV0aG9kID0gc2hpZnQ7CisgICAgbXkgJHBhdCA9IHNoaWZ0OworICAgIG15ICRpdGVyQ291bnQgPSBzaGlmdDsgIyBhY3R1YWxseSBtaWdodCBiZSAtc2Vjb25kcy9wYXNzCisKKyAgICBvdXQoIjxQPk1lYXN1cmluZyAkbWV0aG9kIHVzaW5nICRwYXQsICIpOworICAgIGlmICgkaXRlckNvdW50ID4gMCkgeworICAgICAgICBvdXQoIiRpdGVyQ291bnQgaXRlcmF0aW9ucy9wYXNzLCAkTlVNUEFTU0VTIHBhc3NlczwvUD5cbiIpOworICAgIH0gZWxzZSB7CisgICAgICAgIG91dCgtJGl0ZXJDb3VudCwgIiBzZWNvbmRzL3Bhc3MsICROVU1QQVNTRVMgcGFzc2VzPC9QPlxuIik7CisgICAgfQorCisgICAgIyBpcyAkaXRlckNvdW50IGFjdHVhbGx5IC1zZWNvbmRzPworICAgIGlmICgkaXRlckNvdW50IDwgMCkgeworCisgICAgICAgICMgY2FsaWJyYXRlOiBlc3RpbWF0ZSBtcy9pdGVyYXRpb24KKyAgICAgICAgcHJpbnQgIkNhbGlicmF0aW5nLi4uIjsKKyAgICAgICAgbXkgQHQgPSBjYWxsSmF2YSgkbWV0aG9kLCAkcGF0LCAtJENBTElCUkFURSk7CisgICAgICAgIHByaW50ICJkb25lLlxuIjsKKworICAgICAgICBteSBAZGF0YSA9IHNwbGl0KC9ccysvLCAkdFswXS0+WzJdKTsKKyAgICAgICAgbXkgJHRpbWVQZXJJdGVyID0gMS4wZS0zICogJGRhdGFbMF0gLyAkZGF0YVsyXTsKKyAgICAKKyAgICAgICAgIyBkZXRlcm1pbmUgaXRlcmF0aW9ucy9wYXNzCisgICAgICAgICRpdGVyQ291bnQgPSBpbnQoLSRpdGVyQ291bnQgLyAkdGltZVBlckl0ZXIgKyAwLjUpOworCisgICAgICAgIG91dCgiPFA+Q2FsaWJyYXRpb24gcGFzcyAoJENBTElCUkFURSBzZWMpOiAiKTsKKyAgICAgICAgb3V0KCIkZGF0YVswXSBtcywgIik7CisgICAgICAgIG91dCgiJGRhdGFbMl0gaXRlcmF0aW9ucyA9ICIpOworICAgICAgICBvdXQoZm9ybWF0U2Vjb25kcyg0LCAkdGltZVBlckl0ZXIpLCAiL2l0ZXJhdGlvbjxCUj5cbiIpOworICAgIH0KKyAgICAKKyAgICAjIHJ1biBwYXNzZXMKKyAgICBwcmludCAiTWVhc3VyaW5nICRpdGVyQ291bnQgaXRlcmF0aW9ucyB4ICROVU1QQVNTRVMgcGFzc2VzLi4uIjsKKyAgICBteSBAdCA9IGNhbGxKYXZhKCRtZXRob2QsICRwYXQsICIkaXRlckNvdW50ICIgeCAkTlVNUEFTU0VTKTsKKyAgICBwcmludCAiZG9uZS5cbiI7CisgICAgbXkgQG1zID0gKCk7CisgICAgbXkgQGI7ICMgc2NyYXRjaAorICAgIGZvciBteSAkYSAoQHQpIHsKKyAgICAgICAgIyAkYS0+WzBdOiBtZXRob2QgbmFtZSwgY29ycmVzcG9uZHMgdG8gJG1ldGhvZAorICAgICAgICAjICRhLT5bMV06ICdiZWdpbicgZGF0YSwgPT0gJGl0ZXJDb3VudAorICAgICAgICAjICRhLT5bMl06ICdlbmQnIGRhdGEsIG9mIHRoZSBmb3JtIDxtcz4gPGV2ZW50c1Blckl0ZXI+CisgICAgICAgICMgJGEtPlszLi4uXTogZ2MgbWVzc2FnZXMgZnJvbSBKVk0gZHVyaW5nIHBhc3MKKyAgICAgICAgQGIgPSBzcGxpdCgvXHMrLywgJGEtPlsyXSk7CisgICAgICAgIHB1c2goQG1zLCAkYlswXSk7CisgICAgfQorICAgIG15ICRldmVudHNQZXJJdGVyID0gJGJbMV07CisKKyAgICBvdXQoIkl0ZXJhdGlvbnMgcGVyIHBhc3M6ICRpdGVyQ291bnQ8QlI+XG4iKTsKKyAgICBvdXQoIkV2ZW50cyBwZXIgaXRlcmF0aW9uOiAkZXZlbnRzUGVySXRlcjxCUj5cbiIpOworCisgICAgbXkgQG1zX3N0ciA9IEBtczsKKyAgICAkbXNfc3RyWzBdIC49ICIgKGRpc2NhcmRlZCkiIGlmIChAbXNfc3RyID4gMSk7CisgICAgb3V0KCJSYXcgdGltZXMgKG1zL3Bhc3MpOiAiLCBqb2luKCIsICIsIEBtc19zdHIpLCAiPEJSPlxuIik7CisKKyAgICAoJGl0ZXJDb3VudCwgJGV2ZW50c1Blckl0ZXIsIEBtcyk7Cit9CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgSW52b2tlIGphdmEgdG8gcnVuICRURVNUQ0xBU1MsIHBhc3NpbmcgaXQgdGhlIGdpdmVuIHBhcmFtZXRlcnMuCisjCisjIEBwYXJhbSB0aGUgbWV0aG9kIHRvIHJ1bgorIyBAcGFyYW0gdGhlIG51bWJlciBvZiBpdGVyYXRpb25zLCBvciBpZiBuZWdhdGl2ZSwgdGhlIGR1cmF0aW9uCisjICAgICAgICBpbiBzZWNvbmRzLiAgSWYgbW9yZSB0aGFuIG9uIHBhc3MgaXMgZGVzaXJlZCwgcGFzcyBpbgorIyAgICAgICAgYSBzdHJpbmcsIGUuZy4sICIxMDAgMTAwIDEwMCIuCisjIEBwYXJhbSB0aGUgcGF0dGVybiBkZWZpbmluZyBjaGFyYWN0ZXJzIHRvIHRlc3QKKyMKKyMgQHJldHVybiBhbiBhcnJheSBvZiByZXN1bHRzLiAgRWFjaCByZXN1bHQgaXMgYW4gYXJyYXkgUkVGCisjICAgICAgICAgZGVzY3JpYmluZyBvbmUgcGFzcy4gIFRoZSBhcnJheSBSRUYgY29udGFpbnM6CisjICAgICAgICAgLT5bMF06IFRoZSBtZXRob2QgbmFtZSBhcyByZXBvcnRlZAorIyAgICAgICAgIC0+WzFdOiBUaGUgcGFyYW1zIG9uIHRoZSAnPSA8bWV0aD4gYmVnaW4gLi4uJyBsaW5lCisjICAgICAgICAgLT5bMl06IFRoZSBwYXJhbXMgb24gdGhlICc9IDxtZXRoPiBlbmQgLi4uJyBsaW5lCisjICAgICAgICAgLT5bMy4uXTogR0MgbWVzc2FnZXMgZnJvbSB0aGUgSlZNLCBpZiBhbnkKKyMKK3N1YiBjYWxsSmF2YSB7CisgICAgbXkgJG1ldGhvZCA9IHNoaWZ0OworICAgIG15ICRwYXQgPSBzaGlmdDsKKyAgICBteSAkbiA9IHNoaWZ0OworCisgICAgbXkgJGNtZCA9ICJqYXZhIC1jcCBjbGFzc2VzICRURVNUQ0xBU1MgJG1ldGhvZCAkbiAkcGF0IjsKKyAgICAjIHByaW50ICJbJGNtZF1cbiI7ICMgZm9yIGRlYnVnZ2luZworICAgIG9wZW4oUElQRSwgIiRjbWR8Iikgb3IgZGllICJDYW4ndCBydW4gXCIkY21kXCIiOworICAgIG15IEBvdXQ7CisgICAgd2hpbGUgKDxQSVBFPikgeworICAgICAgICBwdXNoKEBvdXQsICRfKTsKKyAgICB9CisgICAgY2xvc2UoUElQRSkgb3IgZGllICJKYXZhIGZhaWxlZDogXCIkY21kXCIiOworCisgICAgQG91dCA9IGdyZXAoIS9eXCMvLCBAb3V0KTsgICMgZmlsdGVyIG91dCBjb21tZW50cworCisgICAgI3ByaW50ICJbIiwgam9pbigiXG4iLCBAb3V0KSwgIl1cbiI7CisKKyAgICBteSBAcmVzdWx0czsKKyAgICBteSAkbWV0aG9kID0gJyc7CisgICAgbXkgJGRhdGEgPSBbXTsKKyAgICBmb3JlYWNoIChAb3V0KSB7CisgICAgICAgIG5leHQgdW5sZXNzICgvXFMvKTsKKworICAgICAgICBpZiAoL149XHMqKFx3KylccyooXHcrKVxzKiguKikvKSB7CisgICAgICAgICAgICBteSAoJG0sICRzdGF0ZSwgJGQpID0gKCQxLCAkMiwgJDMpOworICAgICAgICAgICAgI3ByaW50ICIkXyA9PiBbWyRtICRzdGF0ZSAkZGF0YV1dXG4iOworICAgICAgICAgICAgaWYgKCRzdGF0ZSBlcSAnYmVnaW4nKSB7CisgICAgICAgICAgICAgICAgZGllICIkbWV0aG9kIHdhcyBiZWd1biBidXQgbm90IGZpbmlzaGVkIiBpZiAoJG1ldGhvZCk7CisgICAgICAgICAgICAgICAgJG1ldGhvZCA9ICRtOworICAgICAgICAgICAgICAgIHB1c2goQCRkYXRhLCAkZCk7CisgICAgICAgICAgICAgICAgcHVzaChAJGRhdGEsICcnKTsgIyBwbGFjZWhvbGRlciBmb3IgZW5kIGRhdGEKKyAgICAgICAgICAgIH0gZWxzaWYgKCRzdGF0ZSBlcSAnZW5kJykgeworICAgICAgICAgICAgICAgIGlmICgkbSBuZSAkbWV0aG9kKSB7CisgICAgICAgICAgICAgICAgICAgIGRpZSAiJG1ldGhvZCBlbmQgZG9lcyBub3QgbWF0Y2g6ICRfIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgJGRhdGEtPlsxXSA9ICRkOyAjIGluc2VydCBlbmQgZGF0YSBhdCBbMV0KKyAgICAgICAgICAgICAgICAjcHJpbnQgIiMkbWV0aG9kOiIsIGpvaW4oIjsiLEAkZGF0YSksICJcbiI7CisgICAgICAgICAgICAgICAgdW5zaGlmdChAJGRhdGEsICRtZXRob2QpOyAjIGFkZCBtZXRob2QgdG8gc3RhcnQKKyAgICAgICAgICAgICAgICBwdXNoKEByZXN1bHRzLCAkZGF0YSk7CisgICAgICAgICAgICAgICAgJG1ldGhvZCA9ICcnOworICAgICAgICAgICAgICAgICRkYXRhID0gW107CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpZSAiQ2FuJ3QgcGFyc2U6ICRfIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGVsc2lmICgvXlxbLykgeworICAgICAgICAgICAgaWYgKCRtZXRob2QpIHsKKyAgICAgICAgICAgICAgICBwdXNoKEAkZGF0YSwgJF8pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAjIGlnbm9yZSBleHRyYW5lb3VzIEdDIG5vdGljZXMKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZGllICJDYW4ndCBwYXJzZTogJF8iOworICAgICAgICB9CisgICAgfQorCisgICAgZGllICIkbWV0aG9kIHdhcyBiZWd1biBidXQgbm90IGZpbmlzaGVkIiBpZiAoJG1ldGhvZCk7CisKKyAgICBAcmVzdWx0czsKK30KKworI3wjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjfCMgRm9ybWF0IGEgY29uZmlkZW5jZSBpbnRlcnZhbCwgYXMgZ2l2ZW4gYnkgYSBEYXRhc2V0LiAgT3V0cHV0IGlzIGFzCisjfCMgYXMgZm9sbG93czoKKyN8IyAgIDI0MS4yMyAtIDI0MS45OCA9PiAyNDEuNSArLy0gMC4zCisjfCMgICAyNDEuMiAtIDI0My44ID0+IDI0MiArLy0gMQorI3wjICAgMjExLjAgLSAyNDEuMCA9PiAyMjYgKy8tIDE1IG9yPyAyMzAgKy8tIDIwCisjfCMgICAyMjAuMyAtIDIzNC4zID0+IDIyNyArLy0gNworI3wjICAgMjIwLjMgLSAzMDAuMyA9PiAyNjAgKy8tIDQwCisjfCMgICAyMjAuMyAtIDEwMDAgPT4gNjEwICsvLSAzOTAgb3I/IDYwMCArLy0gNDAwCisjfCMgICAwLjAyMiAtIDAuMDI0ID0+IDAuMDIzICsvLSAwLjAwMQorI3wjICAgMC4wMjIgLSAwLjAzMiA9PiAwLjAyNyArLy0gMC4wMDUKKyN8IyAgIDAuMDIyIC0gMS4wMDAgPT4gMC41ICsvLSAwLjUKKyN8IyBJbiBvdGhlciB3b3JkcywgdGFrZSBvbmUgc2lnbmlmaWNhbnQgZGlnaXQgb2YgdGhlIGVycm9yIHZhbHVlIGFuZAorI3wjIGRpc3BsYXkgdGhlIG1lYW4gdG8gdGhlIHNhbWUgcHJlY2lzaW9uLgorI3xzdWIgZm9ybWF0RGF0YXNldCB7CisjfCAgICBteSAkZHMgPSBzaGlmdDsKKyN8ICAgIG15ICRsb3dlciA9ICRkcy0+Z2V0TWVhbigpIC0gJGRzLT5nZXRFcnJvcigpOworI3wgICAgbXkgJHVwcGVyID0gJGRzLT5nZXRNZWFuKCkgKyAkZHMtPmdldEVycm9yKCk7CisjfCAgICBteSAkc2NhbGUgPSAwOworI3wgICAgIyBGaW5kIGhvdyBtYW55IGluaXRpYWwgZGlnaXRzIGFyZSB0aGUgc2FtZQorI3wgICAgd2hpbGUgKCRsb3dlciA8IDEgfHwKKyN8ICAgICAgICAgICBpbnQoJGxvd2VyKSA9PSBpbnQoJHVwcGVyKSkgeworI3wgICAgICAgICRsb3dlciAqPSAxMDsKKyN8ICAgICAgICAkdXBwZXIgKj0gMTA7CisjfCAgICAgICAgJHNjYWxlKys7CisjfCAgICB9CisjfCAgICB3aGlsZSAoJGxvd2VyID49IDEwICYmCisjfCAgICAgICAgICAgaW50KCRsb3dlcikgPT0gaW50KCR1cHBlcikpIHsKKyN8ICAgICAgICAkbG93ZXIgLz0gMTA7CisjfCAgICAgICAgJHVwcGVyIC89IDEwOworI3wgICAgICAgICRzY2FsZS0tOworI3wgICAgfQorI3x9CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRm9ybWF0IGEgbnVtYmVyLCBvcHRpb25hbGx5IHdpdGggYSArLy0gZGVsdGEsIHRvIG4gc2lnbmlmaWNhbnQKKyMgZGlnaXRzLgorIworIyBAcGFyYW0gc2lnbmlmaWNhbnQgZGlnaXQsIGEgdmFsdWUgPj0gMQorIyBAcGFyYW0gbXVsdGlwbGllcgorIyBAcGFyYW0gdGltZSBpbiBzZWNvbmRzIHRvIGJlIGZvcm1hdHRlZAorIyBAb3B0aW9uYWwgZGVsdGEgaW4gc2Vjb25kcworIworIyBAcmV0dXJuIHN0cmluZyBvZiB0aGUgZm9ybSAiMjMiIG9yICIyMyArLy0gMTAiLgorIworc3ViIGZvcm1hdE51bWJlciB7CisgICAgbXkgJHNpZ2RpZyA9IHNoaWZ0OworICAgIG15ICRtdWx0ID0gc2hpZnQ7CisgICAgbXkgJGEgPSBzaGlmdDsKKyAgICBteSAkZGVsdGEgPSBzaGlmdDsgIyBtYXkgYmUgdW5kZWYKKyAgICAKKyAgICBteSAkcmVzdWx0ID0gZm9ybWF0U2lnRGlnKCRzaWdkaWcsICRhKiRtdWx0KTsKKyAgICBpZiAoZGVmaW5lZCgkZGVsdGEpKSB7CisgICAgICAgIG15ICRkID0gZm9ybWF0U2lnRGlnKCRzaWdkaWcsICRkZWx0YSokbXVsdCk7CisgICAgICAgICMgcmVzdHJpY3QgUFJFQ0lTSU9OIG9mIGRlbHRhIHRvIHRoYXQgb2YgbWFpbiBudW1iZXIKKyAgICAgICAgaWYgKCRyZXN1bHQgPX4gL1wuKFxkKykvKSB7CisgICAgICAgICAgICAjIFRPRE8gbWFrZSB0aGlzIHdvcmsgZm9yIHZhbHVlcyB3aXRoIGFsbCBzaWduaWZpY2FudAorICAgICAgICAgICAgIyBkaWdpdHMgdG8gdGhlIGxlZnQgb2YgdGhlIGRlY2ltYWwsIGUuZy4sIDEyMzQwMDAuCisKKyAgICAgICAgICAgICMgVE9ETyB0aGUgb3RoZXIgdGhpbmcgd3Jvbmcgd2l0aCB0aGlzIGlzIHRoYXQgaXQKKyAgICAgICAgICAgICMgaXNuJ3Qgcm91bmRpbmcgdGhlICRkZWx0YSBwcm9wZXJseS4gIEhhdmUgdG8gcHV0CisgICAgICAgICAgICAjIHRoaXMgbG9naWMgaW50byBmb3JtYXRTaWdEaWcoKS4KKyAgICAgICAgICAgIG15ICR4ID0gbGVuZ3RoKCQxKTsKKyAgICAgICAgICAgICRkID1+IHMvXC4oXGR7JHh9KVxkKy8uJDEvOworICAgICAgICB9CisgICAgICAgICRyZXN1bHQgLj0gIiAkUExVU19NSU5VUyAiIC4gJGQ7CisgICAgfQorICAgICRyZXN1bHQ7Cit9CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRm9ybWF0IGEgdGltZSwgb3B0aW9uYWxseSB3aXRoIGEgKy8tIGRlbHRhLCB0byBuIHNpZ25pZmljYW50CisjIGRpZ2l0cy4KKyMKKyMgQHBhcmFtIHNpZ25pZmljYW50IGRpZ2l0LCBhIHZhbHVlID49IDEKKyMgQHBhcmFtIHRpbWUgaW4gc2Vjb25kcyB0byBiZSBmb3JtYXR0ZWQKKyMgQG9wdGlvbmFsIGRlbHRhIGluIHNlY29uZHMKKyMKKyMgQHJldHVybiBzdHJpbmcgb2YgdGhlIGZvcm0gIjIzIG1zIiBvciAiMjMgKy8tIDEwIG1zIi4KKyMKK3N1YiBmb3JtYXRTZWNvbmRzIHsKKyAgICBteSAkc2lnZGlnID0gc2hpZnQ7CisgICAgbXkgJGEgPSBzaGlmdDsKKyAgICBteSAkZGVsdGEgPSBzaGlmdDsgIyBtYXkgYmUgdW5kZWYKKworICAgIG15IEBNVUxUID0gKDEgICAsIDFlMywgIDFlNiwgIDFlOSk7CisgICAgbXkgQFNVRkYgPSAoJ3MnICwgJ21zJywgJ3VzJywgJ25zJyk7CisKKyAgICAjIERldGVybWluZSBvdXIgc2NhbGUKKyAgICBteSAkaSA9IDA7CisgICAgKyskaSB3aGlsZSAoJGEqJE1VTFRbJGldIDwgMSAmJiAkaSA8IEBNVUxUKTsKKyAgICAKKyAgICBmb3JtYXROdW1iZXIoJHNpZ2RpZywgJE1VTFRbJGldLCAkYSwgJGRlbHRhKSAuICcgJyAuICRTVUZGWyRpXTsKK30KKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBGb3JtYXQgYSBwZXJjZW50YWdlLCBvcHRpb25hbGx5IHdpdGggYSArLy0gZGVsdGEsIHRvIG4gc2lnbmlmaWNhbnQKKyMgZGlnaXRzLgorIworIyBAcGFyYW0gc2lnbmlmaWNhbnQgZGlnaXQsIGEgdmFsdWUgPj0gMQorIyBAcGFyYW0gdmFsdWUgdG8gYmUgZm9ybWF0dGVkLCBhcyBhIGZyYWN0aW9uLCBlLmcuIDAuNSBmb3IgNTAlCisjIEBvcHRpb25hbCBkZWx0YSwgYXMgYSBmcmFjdGlvbgorIworIyBAcmV0dXJuIHN0cmluZyBvZiB0aGUgZm9ybSAiMjMgJSIgb3IgIjIzICsvLSAxMCAlIi4KKyMKK3N1YiBmb3JtYXRQZXJjZW50IHsKKyAgICBteSAkc2lnZGlnID0gc2hpZnQ7CisgICAgbXkgJGEgPSBzaGlmdDsKKyAgICBteSAkZGVsdGEgPSBzaGlmdDsgIyBtYXkgYmUgdW5kZWYKKyAgICAKKyAgICBmb3JtYXROdW1iZXIoJHNpZ2RpZywgMTAwLCAkYSwgJGRlbHRhKSAuICcgJSc7Cit9CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRm9ybWF0IGEgbnVtYmVyIHRvIG4gc2lnbmlmaWNhbnQgZGlnaXRzIHdpdGhvdXQgdXNpbmcgZXhwb25lbnRpYWwKKyMgbm90YXRpb24uCisjCisjIEBwYXJhbSBzaWduaWZpY2FudCBkaWdpdCwgYSB2YWx1ZSA+PSAxCisjIEBwYXJhbSBudW1iZXIgdG8gYmUgZm9ybWF0dGVkCisjCisjIEByZXR1cm4gc3RyaW5nIG9mIHRoZSBmb3JtICIxMjM0IiAiMTIuMzQiIG9yICIwLjAwMTIzNCIuICBJZgorIyAgICAgICAgIG51bWJlciB3YXMgbmVnYXRpdmUsIHByZWZpeGVkIGJ5ICctJy4KKyMKK3N1YiBmb3JtYXRTaWdEaWcgeworICAgIG15ICRuID0gc2hpZnQoKSAtIDE7CisgICAgbXkgJGEgPSBzaGlmdDsKKworICAgIGxvY2FsICRfID0gc3ByaW50ZigiJS4ke259ZSIsICRhKTsKKyAgICBteSAkc2lnbiA9IChzL14tLy8pID8gJy0nIDogJyc7CisKKyAgICBteSAkYV9lOworICAgIG15ICRyZXN1bHQ7CisgICAgaWYgKC9eKFxkKVwuKFxkKyllKFstK11cZCspJC8pIHsKKyAgICAgICAgbXkgKCRkLCAkZG4sICRlKSA9ICgkMSwgJDIsICQzKTsKKyAgICAgICAgJGFfZSA9ICRlOworICAgICAgICAkZCAuPSAkZG47CisgICAgICAgICRlKys7CisgICAgICAgICRkIC49ICcwJyB3aGlsZSAoJGUgPiBsZW5ndGgoJGQpKTsKKyAgICAgICAgd2hpbGUgKCRlIDwgMSkgeworICAgICAgICAgICAgJGUrKzsKKyAgICAgICAgICAgICRkID0gJzAnIC4gJGQ7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCRlID09IGxlbmd0aCgkZCkpIHsKKyAgICAgICAgICAgICRyZXN1bHQgPSAkc2lnbiAuICRkOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgJHJlc3VsdCA9ICRzaWduIC4gc3Vic3RyKCRkLCAwLCAkZSkgLiAnLicgLiBzdWJzdHIoJGQsICRlKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGRpZSAiQ2FuJ3QgcGFyc2UgJF8iOworICAgIH0KKyAgICAkcmVzdWx0OworfQorCisjZW9mCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvcGVyZi91Y2hhcmFjdGVycGVyZi5wbCBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9wZXJmL3VjaGFyYWN0ZXJwZXJmLnBsCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjRhZjE5YjQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvcGVyZi91Y2hhcmFjdGVycGVyZi5wbApAQCAtMCwwICsxLDQ5NSBAQAorIy8qKgorIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyMgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjICoKKyMgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvcGVyZi91Y2hhcmFjdGVycGVyZi5wbCx2ICQKKyMgKiAkRGF0ZTogMjAwMi8xMi8xOCAwMzo1Njo0MCAkCisjICogJFJldmlzaW9uOiAxLjIgJAorIyAqCisjICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyMgKi8KKworIyEvdXNyL2xvY2FsL2Jpbi9wZXJsCisKK3VzZSBzdHJpY3Q7CisKKyMgQXNzdW1lIHdlIGFyZSBydW5uaW5nIHdpdGhpbiB0aGUgaWN1NGogcm9vdCBkaXJlY3RvcnkKK3VzZSBsaWIgJ3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9wZXJmJzsKKwordXNlIERhdGFzZXQ7CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVGVzdCBjbGFzcworbXkgJFRFU1RDTEFTUyA9ICdjb20uaWJtLmljdS5kZXYudGVzdC5wZXJmLlVDaGFyYWN0ZXJQZXJmJzsKKworIyBNZXRob2RzIHRvIGJlIHRlc3RlZC4gIEVhY2ggcGFpciByZXByZXNlbnRzIGEgdGVzdCBtZXRob2QgYW5kCisjIGEgYmFzZWxpbmUgbWV0aG9kIHdoaWNoIGlzIHVzZWQgZm9yIGNvbXBhcmlzb24uCitteSBATUVUSE9EUyAgPSAoWydEaWdpdCcsICdKREtEaWdpdCddLAorICAgICAgICAgICAgICAgIFsnR2V0TnVtZXJpY1ZhbHVlJywgJ0pES0dldE51bWVyaWNWYWx1ZSddLAorICAgICAgICAgICAgICAgIFsnR2V0VHlwZScsICdKREtHZXRUeXBlJ10sCisgICAgICAgICAgICAgICAgWydJc0RlZmluZWQnLCAnSkRLSXNEZWZpbmVkJ10sCisgICAgICAgICAgICAgICAgWydJc0RpZ2l0JywgJ0pES0lzRGlnaXQnXSwKKyAgICAgICAgICAgICAgICBbJ0lzSWRlbnRpZmllcklnbm9yYWJsZScsICdKREtJc0lkZW50aWZpZXJJZ25vcmFibGUnXSwKKyAgICAgICAgICAgICAgICBbJ0lzSVNPQ29udHJvbCcsICdKREtJc0lTT0NvbnRyb2wnXSwKKyAgICAgICAgICAgICAgICBbJ0lzTGV0dGVyJywgJ0pES0lzTGV0dGVyJ10sCisgICAgICAgICAgICAgICAgWydJc0xldHRlck9yRGlnaXQnLCAnSkRLSXNMZXR0ZXJPckRpZ2l0J10sCisgICAgICAgICAgICAgICAgWydJc0xvd2VyQ2FzZScsICdKREtJc0xvd2VyQ2FzZSddLAorICAgICAgICAgICAgICAgIFsnSXNTcGFjZUNoYXInLCAnSkRLSXNTcGFjZUNoYXInXSwKKyAgICAgICAgICAgICAgICBbJ0lzVGl0bGVDYXNlJywgJ0pES0lzVGl0bGVDYXNlJ10sCisgICAgICAgICAgICAgICAgWydJc1VuaWNvZGVJZGVudGlmaWVyUGFydCcsICdKREtJc1VuaWNvZGVJZGVudGlmaWVyUGFydCddLAorICAgICAgICAgICAgICAgIFsnSXNVbmljb2RlSWRlbnRpZmllclN0YXJ0JywgJ0pES0lzVW5pY29kZUlkZW50aWZpZXJTdGFydCddLAorICAgICAgICAgICAgICAgIFsnSXNVcHBlckNhc2UnLCAnSkRLSXNVcHBlckNhc2UnXSwKKyAgICAgICAgICAgICAgICBbJ0lzV2hpdGVTcGFjZScsICdKREtJc1doaXRlU3BhY2UnXSwKKyAgICAgICAgICAgICAgICk7CisKKyMgUGF0dGVybnMgd2hpY2ggZGVmaW5lIHRoZSBzZXQgb2YgY2hhcmFjdGVycyB1c2VkIGZvciB0ZXN0aW5nLgorbXkgQFBBVFRFUk5TID0gKCcwIGZmZmYnKTsKKworbXkgJENBTElCUkFURSA9IDI7ICMgZHVyYXRpb24gaW4gc2Vjb25kcyBmb3IgaW5pdGlhbCBjYWxpYnJhdGlvbgorbXkgJERVUkFUSU9OID0gMTA7ICMgZHVyYXRpb24gaW4gc2Vjb25kcyBmb3IgZWFjaCBwYXNzCitteSAkTlVNUEFTU0VTID0gNDsgIyBudW1iZXIgb2YgcGFzc2VzLiAgSWYgPiAxIHRoZW4gdGhlIGZpcnN0IHBhc3MKKyAgICAgICAgICAgICAgICAgICAjIGlzIGRpc2NhcmRlZCBhcyBhIEpJVCB3YXJtLXVwIHBhc3MuCisKK215ICRUQUJMRUFUVFIgPSAnQk9SREVSPSIxIiBDRUxMUEFERElORz0iNCIgQ0VMTFNQQUNJTkc9IjAiJzsKKworbXkgJFBMVVNfTUlOVVMgPSAiJnBsdXNtbjsiOworCitpZiAoJE5VTVBBU1NFUyA8IDMpIHsKKyAgICBkaWUgIk5lZWQgYXQgbGVhc3QgMyBwYXNzZXMuICBPbmUgaXMgZGlzY2FyZGVkIChKSVQgd2FybXVwKSBhbmQgbmVlZCB0d28gdG8gaGF2ZSAxIGRlZ3JlZSBvZiBmcmVlZG9tICh0IGRpc3RyaWJ1dGlvbikuIjsKK30KKworbXkgJE9VVDsgIyBzZWUgb3V0KCkKKworbWFpbigpOworCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIC4uLgorc3ViIG1haW4geworICAgIG15ICRkYXRlID0gbG9jYWx0aW1lOworICAgIG15ICR0aXRsZSA9ICJJQ1U0SiBQZXJmb3JtYW5jZSBUZXN0ICRkYXRlIjsKKworICAgIG15ICRodG1sID0gJGRhdGU7CisgICAgJGh0bWwgPX4gcy86Ly9nOyAjICc6JyBpbGxlZ2FsCisgICAgJGh0bWwgPX4gcy9ccypcZCskLy87ICMgZGVsZXRlIHllYXIKKyAgICAkaHRtbCA9fiBzL15cdytccyovLzsgIyBkZWxldGUgZG93CisgICAgJGh0bWwgPSAicGVyZiAkaHRtbC5odG1sIjsKKworICAgIG9wZW4oSFRNTCwiPiRodG1sIikgb3IgZGllICJDYW4ndCB3cml0ZSB0byAkaHRtbDogJCEiOworCisgICAgcHJpbnQgSFRNTCA8PEVPRjsKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiIKKyAgICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9zdHJpY3QuZHRkIj4KKzxIVE1MPgorICAgPEhFQUQ+CisgICAgICA8VElUTEU+JHRpdGxlPC9USVRMRT4KKyAgIDwvSEVBRD4KKyAgIDxCT0RZPgorRU9GCisgICAgcHJpbnQgSFRNTCAiPEgxPiR0aXRsZTwvSDE+XG4iOworCisgICAgcHJpbnQgSFRNTCAiPEgyPiRURVNUQ0xBU1M8L0gyPlxuIjsKKworICAgIG15ICRyYXcgPSAiIjsKKworICAgIGZvciBteSAkbWV0aG9kUGFpciAoQE1FVEhPRFMpIHsKKworICAgICAgICBteSAkdGVzdE1ldGhvZCA9ICRtZXRob2RQYWlyLT5bMF07CisgICAgICAgIG15ICRiYXNlbGluZU1ldGhvZCA9ICRtZXRob2RQYWlyLT5bMV07CisKKyAgICAgICAgcHJpbnQgSFRNTCAiPFA+PFRBQkxFICRUQUJMRUFUVFI+PFRSPjxURD5cbiI7CisgICAgICAgIHByaW50IEhUTUwgIjxQPjxCPiR0ZXN0TWV0aG9kIHZzLiAkYmFzZWxpbmVNZXRob2Q8L0I+PC9QPlxuIjsKKyAgICAgICAgCisgICAgICAgIHByaW50IEhUTUwgIjxQPjxUQUJMRSAkVEFCTEVBVFRSIEJHQ09MT1I9XCIjQ0NGRkZGXCI+XG4iOworICAgICAgICBwcmludCBIVE1MICI8VFI+PFREPlBhdHRlcm48L1REPjxURD4kdGVzdE1ldGhvZDwvVEQ+IjsKKyAgICAgICAgcHJpbnQgSFRNTCAiPFREPiRiYXNlbGluZU1ldGhvZDwvVEQ+PFREPlJhdGlvPC9URD48L1RSPlxuIjsKKworICAgICAgICAkT1VUID0gJyc7CisKKyAgICAgICAgZm9yIG15ICRwYXQgKEBQQVRURVJOUykgeworICAgICAgICAgICAgcHJpbnQgSFRNTCAiPFRSPjxURD4kcGF0PC9URD5cbiI7CisKKyAgICAgICAgICAgIG91dCgiPFA+PFRBQkxFICRUQUJMRUFUVFIgV0lEVEg9XCIxMDAlXCI+Iik7CisKKyAgICAgICAgICAgICMgbWVhc3VyZSB0aGUgdGVzdCBtZXRob2QKKyAgICAgICAgICAgIG91dCgiPFRSPjxURD4iKTsKKyAgICAgICAgICAgIHByaW50ICJcbiR0ZXN0TWV0aG9kICRwYXRcbiI7CisgICAgICAgICAgICBteSAkdCA9IG1lYXN1cmUyKCR0ZXN0TWV0aG9kLCAkcGF0LCAtJERVUkFUSU9OKTsKKyAgICAgICAgICAgIG91dCgiPC9URD48L1RSPiIpOworICAgICAgICAgICAgcHJpbnQgSFRNTCAiPFREPiIsIGZvcm1hdFNlY29uZHMoNCwgJHQtPmdldE1lYW4oKSwgJHQtPmdldEVycm9yKTsKKyAgICAgICAgICAgIHByaW50IEhUTUwgIi9ldmVudDwvVEQ+XG4iOworCisgICAgICAgICAgICAjIG1lYXN1cmUgYmFzZWxpbmUgbWV0aG9kCisgICAgICAgICAgICBvdXQoIjxUUj48VEQ+Iik7CisgICAgICAgICAgICBwcmludCAiXG5CZWdpbiAkYmFzZWxpbmVNZXRob2QgJHBhdFxuIjsKKyAgICAgICAgICAgIG15ICRiID0gbWVhc3VyZTIoJGJhc2VsaW5lTWV0aG9kLCAkcGF0LCAtJERVUkFUSU9OKTsKKyAgICAgICAgICAgIG91dCgiPC9URD48L1RSPiIpOworICAgICAgICAgICAgcHJpbnQgSFRNTCAiPFREPiIsIGZvcm1hdFNlY29uZHMoNCwgJGItPmdldE1lYW4oKSwgJHQtPmdldEVycm9yKTsKKyAgICAgICAgICAgIHByaW50IEhUTUwgIi9ldmVudDwvVEQ+XG4iOworCisgICAgICAgICAgICBvdXQoIjwvVEFCTEU+PC9QPiIpOworCisgICAgICAgICAgICAjIG91dHB1dCByYXRpbworICAgICAgICAgICAgbXkgJHIgPSAkdC0+ZGl2aWRlKCRiKTsKKyAgICAgICAgICAgIHByaW50IEhUTUwgIjxURD48Qj4iLCBmb3JtYXRQZXJjZW50KDMsICRyLT5nZXRNZWFuKCksICRyLT5nZXRFcnJvcik7CisgICAgICAgICAgICBwcmludCBIVE1MICI8L0I+PC9URD48L1RSPlxuIjsKKyAgICAgICAgfQorCisgICAgICAgIHByaW50IEhUTUwgIjwvVEFCTEU+PC9QPlxuIjsKKworICAgICAgICBwcmludCBIVE1MICI8UD5SYXcgZGF0YTo8L1A+XG4iOworICAgICAgICBwcmludCBIVE1MICRPVVQ7CisgICAgICAgIHByaW50IEhUTUwgIjwvVEFCTEU+PC9QPlxuIjsKKyAgICB9CisKKyAgICBwcmludCBIVE1MIDw8RU9GOworICAgPC9CT0RZPgorPC9IVE1MPgorRU9GCisgICAgY2xvc2UoSFRNTCkgb3IgZGllICJDYW4ndCBjbG9zZSAkaHRtbDogJCEiOworfQorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEFwcGVuZCB0ZXh0IHRvIHRoZSBnbG9iYWwgdmFyaWFibGUgJE9VVAorc3ViIG91dCB7CisgICAgJE9VVCAuPSBqb2luKCcnLCBAXyk7Cit9CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQXBwZW5kIHRleHQgdG8gdGhlIGdsb2JhbCB2YXJpYWJsZSAkT1VUCitzdWIgb3V0bG4geworICAgICRPVVQgLj0gam9pbignJywgQF8pIC4gIlxuIjsKK30KKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBNZWFzdXJlIGEgZ2l2ZW4gdGVzdCBtZXRob2Qgd2l0aCBhIGdpdmUgdGVzdCBwYXR0ZXJuIHVzaW5nIHRoZQorIyBnbG9iYWwgcnVuIHBhcmFtZXRlcnMuCisjCisjIEBwYXJhbSB0aGUgbWV0aG9kIHRvIHJ1bgorIyBAcGFyYW0gdGhlIHBhdHRlcm4gZGVmaW5pbmcgY2hhcmFjdGVycyB0byB0ZXN0CisjIEBwYXJhbSBpZiA+MCB0aGVuIHRoZSBudW1iZXIgb2YgaXRlcmF0aW9ucyBwZXIgcGFzcy4gIElmIDwwIHRoZW4KKyMgICAgICAgIChuZWdhdGl2ZSBvZikgdGhlIG51bWJlciBvZiBzZWNvbmRzIHBlciBwYXNzLgorIworIyBAcmV0dXJuIGEgRGF0YXNldCBvYmplY3QsIHNjYWxlZCBieSBpdGVyYXRpb25zIHBlciBwYXNzIGFuZAorIyAgICAgICAgIGV2ZW50cyBwZXIgaXRlcmF0aW9uLCB0byBnaXZlIHRpbWUgcGVyIGV2ZW50CisjCitzdWIgbWVhc3VyZTIgeworICAgIG15IEBkYXRhID0gbWVhc3VyZTEoQF8pOworICAgIG15ICRpdGVyUGVyUGFzcyA9IHNoaWZ0KEBkYXRhKTsKKyAgICBteSAkZXZlbnRQZXJJdGVyID0gc2hpZnQoQGRhdGEpOworCisgICAgc2hpZnQoQGRhdGEpIGlmIChAZGF0YSA+IDEpOyAjIGRpc2NhcmQgZmlyc3QgcnVuCisKKyAgICBteSAkZHMgPSBEYXRhc2V0LT5uZXcoQGRhdGEpOworICAgICRkcy0+c2V0U2NhbGUoMS4wZS0zIC8gKCRpdGVyUGVyUGFzcyAqICRldmVudFBlckl0ZXIpKTsKKyAgICAkZHM7Cit9CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgTWVhc3VyZSBhIGdpdmVuIHRlc3QgbWV0aG9kIHdpdGggYSBnaXZlIHRlc3QgcGF0dGVybiB1c2luZyB0aGUKKyMgZ2xvYmFsIHJ1biBwYXJhbWV0ZXJzLgorIworIyBAcGFyYW0gdGhlIG1ldGhvZCB0byBydW4KKyMgQHBhcmFtIHRoZSBwYXR0ZXJuIGRlZmluaW5nIGNoYXJhY3RlcnMgdG8gdGVzdAorIyBAcGFyYW0gaWYgPjAgdGhlbiB0aGUgbnVtYmVyIG9mIGl0ZXJhdGlvbnMgcGVyIHBhc3MuICBJZiA8MCB0aGVuCisjICAgICAgICAobmVnYXRpdmUgb2YpIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBwZXIgcGFzcy4KKyMKKyMgQHJldHVybiBhcnJheSBvZjoKKyMgICAgICAgICBbMF0gaXRlcmF0aW9ucyBwZXIgcGFzcworIyAgICAgICAgIFsxXSBldmVudHMgcGVyIGl0ZXJhdGlvbgorIyAgICAgICAgIFsyLi5dIG1zIHJlcG9ydGVkIGZvciBlYWNoIHBhc3MsIGluIG9yZGVyCisjCitzdWIgbWVhc3VyZTEgeworICAgIG15ICRtZXRob2QgPSBzaGlmdDsKKyAgICBteSAkcGF0ID0gc2hpZnQ7CisgICAgbXkgJGl0ZXJDb3VudCA9IHNoaWZ0OyAjIGFjdHVhbGx5IG1pZ2h0IGJlIC1zZWNvbmRzL3Bhc3MKKworICAgIG91dCgiPFA+TWVhc3VyaW5nICRtZXRob2QgdXNpbmcgJHBhdCwgIik7CisgICAgaWYgKCRpdGVyQ291bnQgPiAwKSB7CisgICAgICAgIG91dCgiJGl0ZXJDb3VudCBpdGVyYXRpb25zL3Bhc3MsICROVU1QQVNTRVMgcGFzc2VzPC9QPlxuIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgb3V0KC0kaXRlckNvdW50LCAiIHNlY29uZHMvcGFzcywgJE5VTVBBU1NFUyBwYXNzZXM8L1A+XG4iKTsKKyAgICB9CisKKyAgICAjIGlzICRpdGVyQ291bnQgYWN0dWFsbHkgLXNlY29uZHM/CisgICAgaWYgKCRpdGVyQ291bnQgPCAwKSB7CisKKyAgICAgICAgIyBjYWxpYnJhdGU6IGVzdGltYXRlIG1zL2l0ZXJhdGlvbgorICAgICAgICBwcmludCAiQ2FsaWJyYXRpbmcuLi4iOworICAgICAgICBteSBAdCA9IGNhbGxKYXZhKCRtZXRob2QsICRwYXQsIC0kQ0FMSUJSQVRFKTsKKyAgICAgICAgcHJpbnQgImRvbmUuXG4iOworCisgICAgICAgIG15IEBkYXRhID0gc3BsaXQoL1xzKy8sICR0WzBdLT5bMl0pOworICAgICAgICBteSAkdGltZVBlckl0ZXIgPSAxLjBlLTMgKiAkZGF0YVswXSAvICRkYXRhWzJdOworICAgIAorICAgICAgICAjIGRldGVybWluZSBpdGVyYXRpb25zL3Bhc3MKKyAgICAgICAgJGl0ZXJDb3VudCA9IGludCgtJGl0ZXJDb3VudCAvICR0aW1lUGVySXRlciArIDAuNSk7CisKKyAgICAgICAgb3V0KCI8UD5DYWxpYnJhdGlvbiBwYXNzICgkQ0FMSUJSQVRFIHNlYyk6ICIpOworICAgICAgICBvdXQoIiRkYXRhWzBdIG1zLCAiKTsKKyAgICAgICAgb3V0KCIkZGF0YVsyXSBpdGVyYXRpb25zID0gIik7CisgICAgICAgIG91dChmb3JtYXRTZWNvbmRzKDQsICR0aW1lUGVySXRlciksICIvaXRlcmF0aW9uPEJSPlxuIik7CisgICAgfQorICAgIAorICAgICMgcnVuIHBhc3NlcworICAgIHByaW50ICJNZWFzdXJpbmcgJGl0ZXJDb3VudCBpdGVyYXRpb25zIHggJE5VTVBBU1NFUyBwYXNzZXMuLi4iOworICAgIG15IEB0ID0gY2FsbEphdmEoJG1ldGhvZCwgJHBhdCwgIiRpdGVyQ291bnQgIiB4ICROVU1QQVNTRVMpOworICAgIHByaW50ICJkb25lLlxuIjsKKyAgICBteSBAbXMgPSAoKTsKKyAgICBteSBAYjsgIyBzY3JhdGNoCisgICAgZm9yIG15ICRhIChAdCkgeworICAgICAgICAjICRhLT5bMF06IG1ldGhvZCBuYW1lLCBjb3JyZXNwb25kcyB0byAkbWV0aG9kCisgICAgICAgICMgJGEtPlsxXTogJ2JlZ2luJyBkYXRhLCA9PSAkaXRlckNvdW50CisgICAgICAgICMgJGEtPlsyXTogJ2VuZCcgZGF0YSwgb2YgdGhlIGZvcm0gPG1zPiA8ZXZlbnRzUGVySXRlcj4KKyAgICAgICAgIyAkYS0+WzMuLi5dOiBnYyBtZXNzYWdlcyBmcm9tIEpWTSBkdXJpbmcgcGFzcworICAgICAgICBAYiA9IHNwbGl0KC9ccysvLCAkYS0+WzJdKTsKKyAgICAgICAgcHVzaChAbXMsICRiWzBdKTsKKyAgICB9CisgICAgbXkgJGV2ZW50c1Blckl0ZXIgPSAkYlsxXTsKKworICAgIG91dCgiSXRlcmF0aW9ucyBwZXIgcGFzczogJGl0ZXJDb3VudDxCUj5cbiIpOworICAgIG91dCgiRXZlbnRzIHBlciBpdGVyYXRpb246ICRldmVudHNQZXJJdGVyPEJSPlxuIik7CisKKyAgICBteSBAbXNfc3RyID0gQG1zOworICAgICRtc19zdHJbMF0gLj0gIiAoZGlzY2FyZGVkKSIgaWYgKEBtc19zdHIgPiAxKTsKKyAgICBvdXQoIlJhdyB0aW1lcyAobXMvcGFzcyk6ICIsIGpvaW4oIiwgIiwgQG1zX3N0ciksICI8QlI+XG4iKTsKKworICAgICgkaXRlckNvdW50LCAkZXZlbnRzUGVySXRlciwgQG1zKTsKK30KKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBJbnZva2UgamF2YSB0byBydW4gJFRFU1RDTEFTUywgcGFzc2luZyBpdCB0aGUgZ2l2ZW4gcGFyYW1ldGVycy4KKyMKKyMgQHBhcmFtIHRoZSBtZXRob2QgdG8gcnVuCisjIEBwYXJhbSB0aGUgbnVtYmVyIG9mIGl0ZXJhdGlvbnMsIG9yIGlmIG5lZ2F0aXZlLCB0aGUgZHVyYXRpb24KKyMgICAgICAgIGluIHNlY29uZHMuICBJZiBtb3JlIHRoYW4gb24gcGFzcyBpcyBkZXNpcmVkLCBwYXNzIGluCisjICAgICAgICBhIHN0cmluZywgZS5nLiwgIjEwMCAxMDAgMTAwIi4KKyMgQHBhcmFtIHRoZSBwYXR0ZXJuIGRlZmluaW5nIGNoYXJhY3RlcnMgdG8gdGVzdCwgdmFsdWVzIGluIGhleCBkaWdpdHMgd2l0aG91dCAweAorIworIyBAcmV0dXJuIGFuIGFycmF5IG9mIHJlc3VsdHMuICBFYWNoIHJlc3VsdCBpcyBhbiBhcnJheSBSRUYKKyMgICAgICAgICBkZXNjcmliaW5nIG9uZSBwYXNzLiAgVGhlIGFycmF5IFJFRiBjb250YWluczoKKyMgICAgICAgICAtPlswXTogVGhlIG1ldGhvZCBuYW1lIGFzIHJlcG9ydGVkCisjICAgICAgICAgLT5bMV06IFRoZSBwYXJhbXMgb24gdGhlICc9IDxtZXRoPiBiZWdpbiAuLi4nIGxpbmUKKyMgICAgICAgICAtPlsyXTogVGhlIHBhcmFtcyBvbiB0aGUgJz0gPG1ldGg+IGVuZCAuLi4nIGxpbmUKKyMgICAgICAgICAtPlszLi5dOiBHQyBtZXNzYWdlcyBmcm9tIHRoZSBKVk0sIGlmIGFueQorIworc3ViIGNhbGxKYXZhIHsKKyAgICBteSAkbWV0aG9kID0gc2hpZnQ7CisgICAgbXkgJHBhdCA9IHNoaWZ0OworICAgIG15ICRuID0gc2hpZnQ7CisKKyAgICBteSAkY21kID0gImphdmEgLWNwIGNsYXNzZXMgJFRFU1RDTEFTUyAkbWV0aG9kICRuIC0gJHBhdCI7CisgICAgcHJpbnQgIlskY21kXVxuIjsgIyBmb3IgZGVidWdnaW5nCisgICAgb3BlbihQSVBFLCAiJGNtZHwiKSBvciBkaWUgIkNhbid0IHJ1biBcIiRjbWRcIiI7CisgICAgbXkgQG91dDsKKyAgICB3aGlsZSAoPFBJUEU+KSB7CisgICAgICAgIHB1c2goQG91dCwgJF8pOworICAgIH0KKyAgICBjbG9zZShQSVBFKSBvciBkaWUgIkphdmEgZmFpbGVkOiBcIiRjbWRcIiI7CisKKyAgICBAb3V0ID0gZ3JlcCghL15cIy8sIEBvdXQpOyAgIyBmaWx0ZXIgb3V0IGNvbW1lbnRzCisKKyAgICAjcHJpbnQgIlsiLCBqb2luKCJcbiIsIEBvdXQpLCAiXVxuIjsKKworICAgIG15IEByZXN1bHRzOworICAgIG15ICRtZXRob2QgPSAnJzsKKyAgICBteSAkZGF0YSA9IFtdOworICAgIGZvcmVhY2ggKEBvdXQpIHsKKyAgICAgICAgbmV4dCB1bmxlc3MgKC9cUy8pOworCisgICAgICAgIGlmICgvXj1ccyooXHcrKVxzKihcdyspXHMqKC4qKS8pIHsKKyAgICAgICAgICAgIG15ICgkbSwgJHN0YXRlLCAkZCkgPSAoJDEsICQyLCAkMyk7CisgICAgICAgICAgICAjcHJpbnQgIiRfID0+IFtbJG0gJHN0YXRlICRkYXRhXV1cbiI7CisgICAgICAgICAgICBpZiAoJHN0YXRlIGVxICdiZWdpbicpIHsKKyAgICAgICAgICAgICAgICBkaWUgIiRtZXRob2Qgd2FzIGJlZ3VuIGJ1dCBub3QgZmluaXNoZWQiIGlmICgkbWV0aG9kKTsKKyAgICAgICAgICAgICAgICAkbWV0aG9kID0gJG07CisgICAgICAgICAgICAgICAgcHVzaChAJGRhdGEsICRkKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkZGF0YSwgJycpOyAjIHBsYWNlaG9sZGVyIGZvciBlbmQgZGF0YQorICAgICAgICAgICAgfSBlbHNpZiAoJHN0YXRlIGVxICdlbmQnKSB7CisgICAgICAgICAgICAgICAgaWYgKCRtIG5lICRtZXRob2QpIHsKKyAgICAgICAgICAgICAgICAgICAgZGllICIkbWV0aG9kIGVuZCBkb2VzIG5vdCBtYXRjaDogJF8iOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAkZGF0YS0+WzFdID0gJGQ7ICMgaW5zZXJ0IGVuZCBkYXRhIGF0IFsxXQorICAgICAgICAgICAgICAgICNwcmludCAiIyRtZXRob2Q6Iiwgam9pbigiOyIsQCRkYXRhKSwgIlxuIjsKKyAgICAgICAgICAgICAgICB1bnNoaWZ0KEAkZGF0YSwgJG1ldGhvZCk7ICMgYWRkIG1ldGhvZCB0byBzdGFydAorICAgICAgICAgICAgICAgIHB1c2goQHJlc3VsdHMsICRkYXRhKTsKKyAgICAgICAgICAgICAgICAkbWV0aG9kID0gJyc7CisgICAgICAgICAgICAgICAgJGRhdGEgPSBbXTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGllICJDYW4ndCBwYXJzZTogJF8iOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZWxzaWYgKC9eXFsvKSB7CisgICAgICAgICAgICBpZiAoJG1ldGhvZCkgeworICAgICAgICAgICAgICAgIHB1c2goQCRkYXRhLCAkXyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICMgaWdub3JlIGV4dHJhbmVvdXMgR0Mgbm90aWNlcworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBkaWUgIkNhbid0IHBhcnNlOiAkXyI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBkaWUgIiRtZXRob2Qgd2FzIGJlZ3VuIGJ1dCBub3QgZmluaXNoZWQiIGlmICgkbWV0aG9kKTsKKworICAgIEByZXN1bHRzOworfQorCisjfCMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyN8IyBGb3JtYXQgYSBjb25maWRlbmNlIGludGVydmFsLCBhcyBnaXZlbiBieSBhIERhdGFzZXQuICBPdXRwdXQgaXMgYXMKKyN8IyBhcyBmb2xsb3dzOgorI3wjICAgMjQxLjIzIC0gMjQxLjk4ID0+IDI0MS41ICsvLSAwLjMKKyN8IyAgIDI0MS4yIC0gMjQzLjggPT4gMjQyICsvLSAxCisjfCMgICAyMTEuMCAtIDI0MS4wID0+IDIyNiArLy0gMTUgb3I/IDIzMCArLy0gMjAKKyN8IyAgIDIyMC4zIC0gMjM0LjMgPT4gMjI3ICsvLSA3CisjfCMgICAyMjAuMyAtIDMwMC4zID0+IDI2MCArLy0gNDAKKyN8IyAgIDIyMC4zIC0gMTAwMCA9PiA2MTAgKy8tIDM5MCBvcj8gNjAwICsvLSA0MDAKKyN8IyAgIDAuMDIyIC0gMC4wMjQgPT4gMC4wMjMgKy8tIDAuMDAxCisjfCMgICAwLjAyMiAtIDAuMDMyID0+IDAuMDI3ICsvLSAwLjAwNQorI3wjICAgMC4wMjIgLSAxLjAwMCA9PiAwLjUgKy8tIDAuNQorI3wjIEluIG90aGVyIHdvcmRzLCB0YWtlIG9uZSBzaWduaWZpY2FudCBkaWdpdCBvZiB0aGUgZXJyb3IgdmFsdWUgYW5kCisjfCMgZGlzcGxheSB0aGUgbWVhbiB0byB0aGUgc2FtZSBwcmVjaXNpb24uCisjfHN1YiBmb3JtYXREYXRhc2V0IHsKKyN8ICAgIG15ICRkcyA9IHNoaWZ0OworI3wgICAgbXkgJGxvd2VyID0gJGRzLT5nZXRNZWFuKCkgLSAkZHMtPmdldEVycm9yKCk7CisjfCAgICBteSAkdXBwZXIgPSAkZHMtPmdldE1lYW4oKSArICRkcy0+Z2V0RXJyb3IoKTsKKyN8ICAgIG15ICRzY2FsZSA9IDA7CisjfCAgICAjIEZpbmQgaG93IG1hbnkgaW5pdGlhbCBkaWdpdHMgYXJlIHRoZSBzYW1lCisjfCAgICB3aGlsZSAoJGxvd2VyIDwgMSB8fAorI3wgICAgICAgICAgIGludCgkbG93ZXIpID09IGludCgkdXBwZXIpKSB7CisjfCAgICAgICAgJGxvd2VyICo9IDEwOworI3wgICAgICAgICR1cHBlciAqPSAxMDsKKyN8ICAgICAgICAkc2NhbGUrKzsKKyN8ICAgIH0KKyN8ICAgIHdoaWxlICgkbG93ZXIgPj0gMTAgJiYKKyN8ICAgICAgICAgICBpbnQoJGxvd2VyKSA9PSBpbnQoJHVwcGVyKSkgeworI3wgICAgICAgICRsb3dlciAvPSAxMDsKKyN8ICAgICAgICAkdXBwZXIgLz0gMTA7CisjfCAgICAgICAgJHNjYWxlLS07CisjfCAgICB9CisjfH0KKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBGb3JtYXQgYSBudW1iZXIsIG9wdGlvbmFsbHkgd2l0aCBhICsvLSBkZWx0YSwgdG8gbiBzaWduaWZpY2FudAorIyBkaWdpdHMuCisjCisjIEBwYXJhbSBzaWduaWZpY2FudCBkaWdpdCwgYSB2YWx1ZSA+PSAxCisjIEBwYXJhbSBtdWx0aXBsaWVyCisjIEBwYXJhbSB0aW1lIGluIHNlY29uZHMgdG8gYmUgZm9ybWF0dGVkCisjIEBvcHRpb25hbCBkZWx0YSBpbiBzZWNvbmRzCisjCisjIEByZXR1cm4gc3RyaW5nIG9mIHRoZSBmb3JtICIyMyIgb3IgIjIzICsvLSAxMCIuCisjCitzdWIgZm9ybWF0TnVtYmVyIHsKKyAgICBteSAkc2lnZGlnID0gc2hpZnQ7CisgICAgbXkgJG11bHQgPSBzaGlmdDsKKyAgICBteSAkYSA9IHNoaWZ0OworICAgIG15ICRkZWx0YSA9IHNoaWZ0OyAjIG1heSBiZSB1bmRlZgorICAgIAorICAgIG15ICRyZXN1bHQgPSBmb3JtYXRTaWdEaWcoJHNpZ2RpZywgJGEqJG11bHQpOworICAgIGlmIChkZWZpbmVkKCRkZWx0YSkpIHsKKyAgICAgICAgbXkgJGQgPSBmb3JtYXRTaWdEaWcoJHNpZ2RpZywgJGRlbHRhKiRtdWx0KTsKKyAgICAgICAgIyByZXN0cmljdCBQUkVDSVNJT04gb2YgZGVsdGEgdG8gdGhhdCBvZiBtYWluIG51bWJlcgorICAgICAgICBpZiAoJHJlc3VsdCA9fiAvXC4oXGQrKS8pIHsKKyAgICAgICAgICAgICMgVE9ETyBtYWtlIHRoaXMgd29yayBmb3IgdmFsdWVzIHdpdGggYWxsIHNpZ25pZmljYW50CisgICAgICAgICAgICAjIGRpZ2l0cyB0byB0aGUgbGVmdCBvZiB0aGUgZGVjaW1hbCwgZS5nLiwgMTIzNDAwMC4KKworICAgICAgICAgICAgIyBUT0RPIHRoZSBvdGhlciB0aGluZyB3cm9uZyB3aXRoIHRoaXMgaXMgdGhhdCBpdAorICAgICAgICAgICAgIyBpc24ndCByb3VuZGluZyB0aGUgJGRlbHRhIHByb3Blcmx5LiAgSGF2ZSB0byBwdXQKKyAgICAgICAgICAgICMgdGhpcyBsb2dpYyBpbnRvIGZvcm1hdFNpZ0RpZygpLgorICAgICAgICAgICAgbXkgJHggPSBsZW5ndGgoJDEpOworICAgICAgICAgICAgJGQgPX4gcy9cLihcZHskeH0pXGQrLy4kMS87CisgICAgICAgIH0KKyAgICAgICAgJHJlc3VsdCAuPSAiICRQTFVTX01JTlVTICIgLiAkZDsKKyAgICB9CisgICAgJHJlc3VsdDsKK30KKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBGb3JtYXQgYSB0aW1lLCBvcHRpb25hbGx5IHdpdGggYSArLy0gZGVsdGEsIHRvIG4gc2lnbmlmaWNhbnQKKyMgZGlnaXRzLgorIworIyBAcGFyYW0gc2lnbmlmaWNhbnQgZGlnaXQsIGEgdmFsdWUgPj0gMQorIyBAcGFyYW0gdGltZSBpbiBzZWNvbmRzIHRvIGJlIGZvcm1hdHRlZAorIyBAb3B0aW9uYWwgZGVsdGEgaW4gc2Vjb25kcworIworIyBAcmV0dXJuIHN0cmluZyBvZiB0aGUgZm9ybSAiMjMgbXMiIG9yICIyMyArLy0gMTAgbXMiLgorIworc3ViIGZvcm1hdFNlY29uZHMgeworICAgIG15ICRzaWdkaWcgPSBzaGlmdDsKKyAgICBteSAkYSA9IHNoaWZ0OworICAgIG15ICRkZWx0YSA9IHNoaWZ0OyAjIG1heSBiZSB1bmRlZgorCisgICAgbXkgQE1VTFQgPSAoMSAgICwgMWUzLCAgMWU2LCAgMWU5KTsKKyAgICBteSBAU1VGRiA9ICgncycgLCAnbXMnLCAndXMnLCAnbnMnKTsKKworICAgICMgRGV0ZXJtaW5lIG91ciBzY2FsZQorICAgIG15ICRpID0gMDsKKyAgICArKyRpIHdoaWxlICgkYSokTVVMVFskaV0gPCAxICYmICRpIDwgQE1VTFQpOworICAgIAorICAgIGZvcm1hdE51bWJlcigkc2lnZGlnLCAkTVVMVFskaV0sICRhLCAkZGVsdGEpIC4gJyAnIC4gJFNVRkZbJGldOworfQorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEZvcm1hdCBhIHBlcmNlbnRhZ2UsIG9wdGlvbmFsbHkgd2l0aCBhICsvLSBkZWx0YSwgdG8gbiBzaWduaWZpY2FudAorIyBkaWdpdHMuCisjCisjIEBwYXJhbSBzaWduaWZpY2FudCBkaWdpdCwgYSB2YWx1ZSA+PSAxCisjIEBwYXJhbSB2YWx1ZSB0byBiZSBmb3JtYXR0ZWQsIGFzIGEgZnJhY3Rpb24sIGUuZy4gMC41IGZvciA1MCUKKyMgQG9wdGlvbmFsIGRlbHRhLCBhcyBhIGZyYWN0aW9uCisjCisjIEByZXR1cm4gc3RyaW5nIG9mIHRoZSBmb3JtICIyMyAlIiBvciAiMjMgKy8tIDEwICUiLgorIworc3ViIGZvcm1hdFBlcmNlbnQgeworICAgIG15ICRzaWdkaWcgPSBzaGlmdDsKKyAgICBteSAkYSA9IHNoaWZ0OworICAgIG15ICRkZWx0YSA9IHNoaWZ0OyAjIG1heSBiZSB1bmRlZgorICAgIAorICAgIGZvcm1hdE51bWJlcigkc2lnZGlnLCAxMDAsICRhLCAkZGVsdGEpIC4gJyAlJzsKK30KKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBGb3JtYXQgYSBudW1iZXIgdG8gbiBzaWduaWZpY2FudCBkaWdpdHMgd2l0aG91dCB1c2luZyBleHBvbmVudGlhbAorIyBub3RhdGlvbi4KKyMKKyMgQHBhcmFtIHNpZ25pZmljYW50IGRpZ2l0LCBhIHZhbHVlID49IDEKKyMgQHBhcmFtIG51bWJlciB0byBiZSBmb3JtYXR0ZWQKKyMKKyMgQHJldHVybiBzdHJpbmcgb2YgdGhlIGZvcm0gIjEyMzQiICIxMi4zNCIgb3IgIjAuMDAxMjM0Ii4gIElmCisjICAgICAgICAgbnVtYmVyIHdhcyBuZWdhdGl2ZSwgcHJlZml4ZWQgYnkgJy0nLgorIworc3ViIGZvcm1hdFNpZ0RpZyB7CisgICAgbXkgJG4gPSBzaGlmdCgpIC0gMTsKKyAgICBteSAkYSA9IHNoaWZ0OworCisgICAgbG9jYWwgJF8gPSBzcHJpbnRmKCIlLiR7bn1lIiwgJGEpOworICAgIG15ICRzaWduID0gKHMvXi0vLykgPyAnLScgOiAnJzsKKworICAgIG15ICRhX2U7CisgICAgbXkgJHJlc3VsdDsKKyAgICBpZiAoL14oXGQpXC4oXGQrKWUoWy0rXVxkKykkLykgeworICAgICAgICBteSAoJGQsICRkbiwgJGUpID0gKCQxLCAkMiwgJDMpOworICAgICAgICAkYV9lID0gJGU7CisgICAgICAgICRkIC49ICRkbjsKKyAgICAgICAgJGUrKzsKKyAgICAgICAgJGQgLj0gJzAnIHdoaWxlICgkZSA+IGxlbmd0aCgkZCkpOworICAgICAgICB3aGlsZSAoJGUgPCAxKSB7CisgICAgICAgICAgICAkZSsrOworICAgICAgICAgICAgJGQgPSAnMCcgLiAkZDsKKyAgICAgICAgfQorICAgICAgICBpZiAoJGUgPT0gbGVuZ3RoKCRkKSkgeworICAgICAgICAgICAgJHJlc3VsdCA9ICRzaWduIC4gJGQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAkcmVzdWx0ID0gJHNpZ24gLiBzdWJzdHIoJGQsIDAsICRlKSAuICcuJyAuIHN1YnN0cigkZCwgJGUpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgZGllICJDYW4ndCBwYXJzZSAkXyI7CisgICAgfQorICAgICRyZXN1bHQ7Cit9CisKKyNlb2YKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9yYmJpL0JyZWFrSXRlcmF0b3JSdWxlc19lbl9VU19URVNULmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvcmJiaS9CcmVha0l0ZXJhdG9yUnVsZXNfZW5fVVNfVEVTVC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmYzMmQzNmIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvcmJiaS9CcmVha0l0ZXJhdG9yUnVsZXNfZW5fVVNfVEVTVC5qYXZhCkBAIC0wLDAgKzEsMjIyIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvcmJiaS9CcmVha0l0ZXJhdG9yUnVsZXNfZW5fVVNfVEVTVC5qYXZhLHYgJAorICogJERhdGU6IDIwMDIvMDIvMTYgMDM6MDU6MTQgJAorICogJFJldmlzaW9uOiAxLjggJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0LnJiYmk7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworaW1wb3J0IGphdmEubmV0LlVSTDsKKworLyoqCisgKiBUaGlzIHJlc291cmNlIGJ1bmRsZSBpcyBpbmNsdWRlZCBmb3IgdGVzdGluZyBhbmQgZGVtb25zdHJhdGlvbiBwdXJwb3NlcyBvbmx5LgorICogSXQgYXBwbGllcyB0aGUgZGljdGlvbmFyeS1iYXNlZCBhbGdvcml0aG0gdG8gRW5nbGlzaCB0ZXh0IHRoYXQgaGFzIGhhZCBhbGwgdGhlCisgKiBzcGFjZXMgcmVtb3ZlZC4gIE9uY2Ugd2UgaGF2ZSBnb29kIHRlc3QgY2FzZXMgZm9yIFRoYWksIHdlIHdpbGwgcmVwbGFjZSB0aGlzCisgKiB3aXRoIGdvb2QgcmVzb3VyY2UgZGF0YSAoYW5kIGEgZ29vZCBkaWN0aW9uYXJ5IGZpbGUpIGZvciBUaGFpCisgKi8KK3B1YmxpYyBjbGFzcyBCcmVha0l0ZXJhdG9yUnVsZXNfZW5fVVNfVEVTVCBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgVVJMIHVybCA9CisgICAgICAgIEJyZWFrSXRlcmF0b3JSdWxlc19lbl9VU19URVNULmNsYXNzLmdldFJlc291cmNlKCIvY29tL2libS9kYXRhL21pc2MvZW5nbGlzaC5kaWN0Iik7CisKKyAgICBwdWJsaWMgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsKKyAgICAgICAgcmV0dXJuIGNvbnRlbnRzOworICAgIH0KKworICAgIHN0YXRpYyBmaW5hbCBPYmplY3RbXVtdIGNvbnRlbnRzID0geworICAgICAgICAvLyBuYW1lcyBvZiBjbGFzc2VzIHRvIGluc3RhbnRpYXRlIGZvciB0aGUgZGlmZmVyZW50IGtpbmRzIG9mIGJyZWFrCisgICAgICAgIC8vIGl0ZXJhdG9yLiAgTm90aWNlIHdlJ3JlIG5vdyB1c2luZyBEaWN0aW9uYXJ5QmFzZWRCcmVha0l0ZXJhdG9yCisgICAgICAgIC8vIGZvciB3b3JkIGFuZCBsaW5lIGJyZWFraW5nLgorICAgICAgICB7ICJCcmVha0l0ZXJhdG9yQ2xhc3NlcyIsCisgICAgICAgICAgICBuZXcgU3RyaW5nW10geyAiUnVsZUJhc2VkQnJlYWtJdGVyYXRvciIsICAgICAgICAgICAvLyBjaGFyYWN0ZXItYnJlYWsgaXRlcmF0b3IgY2xhc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJEaWN0aW9uYXJ5QmFzZWRCcmVha0l0ZXJhdG9yIiwgICAgIC8vIHdvcmQtYnJlYWsgaXRlcmF0b3IgY2xhc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJEaWN0aW9uYXJ5QmFzZWRCcmVha0l0ZXJhdG9yIiwgICAgIC8vIGxpbmUtYnJlYWsgaXRlcmF0b3IgY2xhc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIiB9ICAgICAgICAgIC8vIHNlbnRlbmNlLWJyZWFrIGl0ZXJhdG9yIGNsYXNzCisgICAgICAgIH0sCisKKyAgICAgICAgLy8gVGhlc2UgYXJlIHRoZSBzYW1lIHdvcmQtYnJlYWtpbmcgcnVsZXMgYXMgYXJlIHNwZWNpZmllZCBpbiB0aGUgZGVmYXVsdAorICAgICAgICAvLyByZXNvdXJjZSwgZXhjZXB0IHRoYXQgdGhlIExhdGluIGxldHRlcnMsIGFwb3N0cm9waGUsIGFuZCBoeXBoZW4gYXJlCisgICAgICAgIC8vIHNwZWNpZmllZCBhcyBkaWN0aW9uYXJ5IGNoYXJhY3RlcnMKKyAgICAgICAgeyAiV29yZEJyZWFrUnVsZXMiLAorICAgICAgICAgICAgLy8gaWdub3JlIG5vbi1zcGFjaW5nIG1hcmtzLCBlbmNsb3NpbmcgbWFya3MsIGFuZCBmb3JtYXQgY2hhcmFjdGVycywKKyAgICAgICAgICAgIC8vIGFsbCBvZiB3aGljaCBzaG91bGQgbm90IGluZmx1ZW5jZSB0aGUgYWxnb3JpdGhtCisgICAgICAgICAgICAiJF9pZ25vcmVfPVtbOk1uOl1bOk1lOl1bOkNmOl1dOyIKKworICAgICAgICAgICAgLy8gbG93ZXIgYW5kIHVwcGVyIGNhc2UgUm9tYW4gbGV0dGVycywgYXBvc3Ryb3BoeSBhbmQgZGFzaCBhcmUKKyAgICAgICAgICAgIC8vIGluIHRoZSBFbmdsaXNoIGRpY3Rpb25hcnkKKyAgICAgICAgICAgICsgIiRfZGljdGlvbmFyeV89W2EtekEtWlxcJ1xcLV07IgorCisgICAgICAgICAgICAvLyBIaW5kaSBwaHJhc2Ugc2VwYXJhdG9yLCBrYW5qaSwga2F0YWthbmEsIGhpcmFnYW5hLCBDSksgZGlhY3JpdGljYWxzLAorICAgICAgICAgICAgLy8gb3RoZXIgbGV0dGVycywgYW5kIGRpZ2l0cworICAgICAgICAgICAgKyAiJGRhbmRhPVtcdTA5NjRcdTA5NjVdOyIKKyAgICAgICAgICAgICsgIiRrYW5qaT1bXHUzMDA1XHU0ZTAwLVx1OWZhNVx1ZjkwMC1cdWZhMmRdOyIKKyAgICAgICAgICAgICsgIiRrYXRhPVtcdTMwOTktXHUzMDljXHUzMGExLVx1MzBmZV07IgorICAgICAgICAgICAgKyAiJGhpcmE9W1x1MzA0MS1cdTMwOWVcdTMwZmNdOyIKKyAgICAgICAgICAgICsgIiRsZXQ9W1tbOkw6XVs6TWM6XV0tWyRrYW5qaSRrYXRhJGhpcmFdXTsiCisgICAgICAgICAgICArICIkZGd0PVs6TjpdOyIKKworICAgICAgICAgICAgLy8gcHVuY3R1YXRpb24gdGhhdCBjYW4gb2NjdXIgaW4gdGhlIG1pZGRsZSBvZiBhIHdvcmQ6IGN1cnJlbnRseQorICAgICAgICAgICAgLy8gZGFzaGVzLCBhcG9zdHJvcGhlcywgYW5kIHF1b3RhdGlvbiBtYXJrcworICAgICAgICAgICAgKyAiJG1pZF93b3JkPVtbOlBkOl1cdTAwYWRcdTIwMjdcXFwiXFxcJ107IgorCisgICAgICAgICAgICAvLyBwdW5jdHVhdGlvbiB0aGF0IGNhbiBvY2N1ciBpbiB0aGUgbWlkZGxlIG9mIGEgbnVtYmVyOiBjdXJyZW50bHkKKyAgICAgICAgICAgIC8vIGFwb3N0cm9waGVzLCBxb3V0YXRpb24gbWFya3MsIHBlcmlvZHMsIGNvbW1hcywgYW5kIHRoZSBBcmFiaWMKKyAgICAgICAgICAgIC8vIGRlY2ltYWwgcG9pbnQKKyAgICAgICAgICAgICsgIiRtaWRfbnVtPVtcXFwiXFxcJ1xcLFx1MDY2YlxcLl07IgorCisgICAgICAgICAgICAvLyBwdW5jdHVhdGlvbiB0aGF0IGNhbiBvY2N1ciBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbnVtYmVyOiBjdXJyZW50bHkKKyAgICAgICAgICAgIC8vIHRoZSBwZXJpb2QsIHRoZSBudW1iZXIgc2lnbiwgYW5kIGFsbCBjdXJyZW5jeSBzeW1ib2xzIGV4Y2VwdCB0aGUgY2VudHMgc2lnbgorICAgICAgICAgICAgKyAiJHByZV9udW09W1tbOlNjOl0tW1x1MDBhMl1dXFwjXFwuXTsiCisKKyAgICAgICAgICAgIC8vIHB1bmN0dWF0aW9uIHRoYXQgY2FuIG9jY3VyIGF0IHRoZSBlbmQgb2YgYSBudW1iZXI6IGN1cnJlbnRseQorICAgICAgICAgICAgLy8gdGhlIHBlcmNlbnQsIHBlci10aG91c2FuZCwgcGVyLXRlbi10aG91c2FuZCwgYW5kIEFyYWJpYyBwZXJjZW50CisgICAgICAgICAgICAvLyBzaWducywgdGhlIGNlbnRzIHNpZ24sIGFuZCB0aGUgYW1wZXJzYW5kCisgICAgICAgICAgICArICIkcG9zdF9udW09W1xcJVxcJlx1MDBhMlx1MDY2YVx1MjAzMFx1MjAzMV07IgorCisgICAgICAgICAgICAvLyBsaW5lIHNlcGFyYXRvcnM6IGN1cnJlbnRseSBMRiwgRkYsIFBTLCBhbmQgTFMKKyAgICAgICAgICAgICsgIiRscz1bXG5cdTAwMGNcdTIwMjhcdTIwMjldOyIKKworICAgICAgICAgICAgLy8gd2hpdGVzcGFjZTogYWxsIHNwYWNlIHNlcGFyYXRvcnMgYW5kIHRoZSB0YWIgY2hhcmFjdGVyCisgICAgICAgICAgICArICIkd3M9W1s6WnM6XVx0XTsiCisKKyAgICAgICAgICAgIC8vIGEgd29yZCBpcyBhIHNlcXVlbmNlIG9mIGxldHRlcnMgdGhhdCBtYXkgY29udGFpbiBpbnRlcm5hbAorICAgICAgICAgICAgLy8gcHVuY3R1YXRpb24sIGFzIGxvbmcgYXMgaXQgYmVnaW5zIGFuZCBlbmRzIHdpdGggYSBsZXR0ZXIgYW5kCisgICAgICAgICAgICAvLyBuZXZlciBjb250YWlucyB0d28gcHVuY3R1YXRpb24gbWFya3MgaW4gYSByb3cKKyAgICAgICAgICAgICsgIiR3b3JkPSgkbGV0KygkbWlkX3dvcmQkbGV0KykqJGRhbmRhPyk7IgorCisgICAgICAgICAgICAvLyBhIG51bWJlciBpcyBhIHNlcXVlbmNlIG9mIGRpZ2l0cyB0aGF0IG1heSBjb250YWluIGludGVybmFsCisgICAgICAgICAgICAvLyBwdW5jdHVhdGlvbiwgYXMgbG9uZyBhcyBpdCBiZWdpbnMgYW5kIGVuZHMgd2l0aCBhIGRpZ2l0IGFuZAorICAgICAgICAgICAgLy8gbmV2ZXIgY29udGFpbnMgdHdvIHB1bmN0dWF0aW9uIG1hcmtzIGluIGEgcm93LgorICAgICAgICAgICAgKyAiJG51bWJlcj0oJGRndCsoJG1pZF9udW0kZGd0KykqKTsiCisKKyAgICAgICAgICAgIC8vIGJyZWFrIGFmdGVyIGV2ZXJ5IGNoYXJhY3Rlciwgd2l0aCB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbnMKKyAgICAgICAgICAgIC8vICh0aGlzIHdpbGwgY2F1c2UgcHVuY3R1YXRpb24gbWFya3MgdGhhdCBhcmVuJ3QgY29uc2lkZXJlZAorICAgICAgICAgICAgLy8gcGFydCBvZiB3b3JkcyBvciBudW1iZXJzIHRvIGJlIHRyZWF0ZWQgYXMgd29yZHMgdW50byB0aGVtc2VsdmVzKQorICAgICAgICAgICAgKyAiLjsiCisKKyAgICAgICAgICAgIC8vIGtlZXAgdG9nZXRoZXIgYW55IHNlcXVlbmNlIG9mIGNvbnRpZ3VvdXMgd29yZHMgYW5kIG51bWJlcnMKKyAgICAgICAgICAgIC8vIChpbmNsdWRpbmcganVzdCBvbmUgb2YgZWl0aGVyKSwgcGx1cyBhbiBvcHRpb25hbCB0cmFpbGluZworICAgICAgICAgICAgLy8gbnVtYmVyLXN1ZmZpeCBjaGFyYWN0ZXIKKyAgICAgICAgICAgICsgIiR3b3JkPygkbnVtYmVyJHdvcmQpKigkbnVtYmVyJHBvc3RfbnVtPyk/OyIKKworICAgICAgICAgICAgLy8ga2VlcCB0b2dldGhlciBhbmQgc2VxdWVuY2Ugb2YgY29udGlndW91cyB3b3JkcyBhbmQgbnVtYmVycworICAgICAgICAgICAgLy8gdGhhdCBzdGFydHMgd2l0aCBhIG51bWJlci1wcmVmaXggY2hhcmFjdGVyIGFuZCBhIG51bWJlciwKKyAgICAgICAgICAgIC8vIGFuZCBtYXkgZW5kIHdpdGggYSBudW1iZXItc3VmZml4IGNoYXJhY3RlcgorICAgICAgICAgICAgKyAiJHByZV9udW0oJG51bWJlciR3b3JkKSooJG51bWJlciRwb3N0X251bT8pPzsiCisKKyAgICAgICAgICAgIC8vIGtlZXAgdG9nZXRoZXIgcnVucyBvZiB3aGl0ZXNwYWNlIChvcHRpb25hbGx5IHdpdGggYSBzaW5nbGUgdHJhaWxpbmcKKyAgICAgICAgICAgIC8vIGxpbmUgc2VwYXJhdG9yIG9yIENSTEYgc2VxdWVuY2UpCisgICAgICAgICAgICArICIkd3MqXHI/JGxzPzsiCisKKyAgICAgICAgICAgIC8vIGtlZXAgdG9nZXRoZXIgcnVucyBvZiBLYXRha2FuYQorICAgICAgICAgICAgKyAiJGthdGEqOyIKKworICAgICAgICAgICAgLy8ga2VlcCB0b2dldGhlciBydW5zIG9mIEhpcmFnYW5hCisgICAgICAgICAgICArICIkaGlyYSo7IgorCisgICAgICAgICAgICAvLyBrZWVwIHRvZ2V0aGVyIHJ1bnMgb2YgS2FuamkKKyAgICAgICAgICAgICsgIiRrYW5qaSo7In0sCisKKyAgICAgICAgLy8gVGhlc2UgYXJlIHRoZSBzYW1lIGxpbmUtYnJlYWtpbmcgcnVsZXMgYXMgYXJlIHNwZWNpZmllZCBpbiB0aGUgZGVmYXVsdAorICAgICAgICAvLyByZXNvdXJjZSwgZXhjZXB0IHRoYXQgdGhlIExhdGluIGxldHRlcnMsIGFwb3N0cm9waGUsIGFuZCBoeXBoZW4gYXJlCisgICAgICAgIC8vIHNwZWNpZmllZCBhcyBkaWN0aW9uYXJ5IGNoYXJhY3RlcnMKKyAgICAgICAgeyAiTGluZUJyZWFrUnVsZXMiLAorICAgICAgICAgICAgLy8gaWdub3JlIG5vbi1zcGFjaW5nIG1hcmtzLCBlbmNsb3NpbmcgbWFya3MsIGFuZCBmb3JtYXQgY2hhcmFjdGVycworICAgICAgICAgICAgIiRfaWdub3JlXz1bWzpNbjpdWzpNZTpdWzpDZjpdXTsiCisKKyAgICAgICAgICAgIC8vIGxvd2VyIGFuZCB1cHBlciBjYXNlIFJvbWFuIGxldHRlcnMsIGFwb3N0cm9waHkgYW5kIGRhc2gKKyAgICAgICAgICAgIC8vIGFyZSBpbiB0aGUgRW5nbGlzaCBkaWN0aW9uYXJ5CisgICAgICAgICAgICArICIkX2RpY3Rpb25hcnlfPVthLXpBLVpcXCdcXC1dOyIKKworICAgICAgICAgICAgLy8gSGluZGkgcGhyYXNlIHNlcGFyYXRvcnMKKyAgICAgICAgICAgICsgIiRkYW5kYT1bXHUwOTY0XHUwOTY1XTsiCisKKyAgICAgICAgICAgIC8vIGNoYXJhY3RlcnMgdGhhdCBhbHdheXMgY2F1c2UgYSBicmVhazogRVRYLCB0YWIsIExGLCBGRiwgTFMsIGFuZCBQUworICAgICAgICAgICAgKyAiJGJyZWFrPVtcdTAwMDNcdFxuXGZcdTIwMjhcdTIwMjldOyIKKworICAgICAgICAgICAgLy8gY2hhcmFjdGVycyB0aGF0IGFsd2F5cyBwcmV2ZW50IGEgYnJlYWs6IHRoZSBub24tYnJlYWtpbmcgc3BhY2UKKyAgICAgICAgICAgIC8vIGFuZCBzaW1pbGFyIGNoYXJhY3RlcnMKKyAgICAgICAgICAgICsgIiRuYnNwPVtcdTAwYTBcdTIwMDdcdTIwMTFcdWZlZmZdOyIKKworICAgICAgICAgICAgLy8gd2hpdGVzcGFjZTogc3BhY2Ugc2VwYXJhdG9ycyBhbmQgY29udHJvbCBjaGFyYWN0ZXJzLCBleGNlcHQgZm9yCisgICAgICAgICAgICAvLyBDUiBhbmQgdGhlIG90aGVyIGNoYXJhY3RlcnMgbWVudGlvbmVkIGFib3ZlCisgICAgICAgICAgICArICIkc3BhY2U9W1tbOlpzOl1bOkNjOl1dLVskbmJzcCRicmVha1xyXV07IgorCisgICAgICAgICAgICAvLyBkYXNoZXM6IGRhc2ggcHVuY3R1YXRpb24gYW5kIHRoZSBkaXNjcmV0aW9uYXJ5IGh5cGhlbiwgZXhjZXB0IGZvcgorICAgICAgICAgICAgLy8gbm9uLWJyZWFraW5nIGh5cGhlbnMKKyAgICAgICAgICAgICsgIiRkYXNoPVtbWzpQZDpdXHUwMGFkXS1bJG5ic3BdXTsiCisKKyAgICAgICAgICAgIC8vIGNoYXJhY3RlcnMgdGhhdCBzdGljayB0byBhIHdvcmQgaWYgdGhleSBwcmVjZWRlIGl0OiBjdXJyZW5jeSBzeW1ib2xzCisgICAgICAgICAgICAvLyAoZXhjZXB0IHRoZSBjZW50cyBzaWduKSBhbmQgc3RhcnRpbmcgcHVuY3R1YXRpb24KKyAgICAgICAgICAgICsgIiRwcmVfd29yZD1bW1s6U2M6XS1bXHUwMGEyXV1bOlBzOl1cXFwiXFxcJ107IgorCisgICAgICAgICAgICAvLyBjaGFyYWN0ZXJzIHRoYXQgc3RpY2sgdG8gYSB3b3JkIGlmIHRoZXkgZm9sbG93IGl0OiBlbmRpbmcgcHVuY3R1YXRpb24sCisgICAgICAgICAgICAvLyBvdGhlciBwdW5jdHVhdGlvbiB0aGF0IHVzdWFsbHkgb2NjdXJzIGF0IHRoZSBlbmQgb2YgYSBzZW50ZW5jZSwKKyAgICAgICAgICAgIC8vIHNtYWxsIEthbmEgY2hhcmFjdGVycywgc29tZSBDSksgZGlhY3JpdGljcywgZXRjLgorICAgICAgICAgICAgKyAiJHBvc3Rfd29yZD1bWzpQZTpdXFwhXFxcIlxcXCdcXCVcXC5cXCxcXDpcXDtcXD9cdTAwYTJcdTAwYjBcdTA2NmFcdTIwMzAtXHUyMDM0IgorICAgICAgICAgICAgICAgICAgICArICJcdTIxMDNcdTIxMDVcdTIxMDlcdTMwMDFcdTMwMDJcdTMwMDVcdTMwNDFcdTMwNDNcdTMwNDVcdTMwNDdcdTMwNDlcdTMwNjMiCisgICAgICAgICAgICAgICAgICAgICsgIlx1MzA4M1x1MzA4NVx1MzA4N1x1MzA4ZVx1MzA5OS1cdTMwOWVcdTMwYTFcdTMwYTNcdTMwYTVcdTMwYTdcdTMwYTkiCisgICAgICAgICAgICAgICAgICAgICsgIlx1MzBjM1x1MzBlM1x1MzBlNVx1MzBlN1x1MzBlZVx1MzBmNVx1MzBmNlx1MzBmYy1cdTMwZmVcdWZmMDFcdWZmMGMiCisgICAgICAgICAgICAgICAgICAgICsgIlx1ZmYwZVx1ZmYxZl07IgorCisgICAgICAgICAgICAvLyBLYW5qaTogYWN0dWFsbHkgaW5jbHVkZXMgYm90aCBLYW5qaSBhbmQgS2FuYSwgZXhjZXB0IGZvciBzbWFsbCBLYW5hIGFuZAorICAgICAgICAgICAgLy8gQ0pLIGRpYWNyaXRpY3MKKyAgICAgICAgICAgICsgIiRrYW5qaT1bW1x1NGUwMC1cdTlmYTVcdWY5MDAtXHVmYTJkXHUzMDQxLVx1MzA5NFx1MzBhMS1cdTMwZmFdLVskcG9zdF93b3JkJF9pZ25vcmVfXV07IgorCisgICAgICAgICAgICAvLyBkaWdpdHMKKyAgICAgICAgICAgICsgIiRkaWdpdD1bWzpOZDpdWzpObzpdXTsiCisKKyAgICAgICAgICAgIC8vIHB1bmN0dWF0aW9uIHRoYXQgY2FuIG9jY3VyIGluIHRoZSBtaWRkbGUgb2YgYSBudW1iZXI6IHBlcmlvZHMgYW5kIGNvbW1hcworICAgICAgICAgICAgKyAiJG1pZF9udW09W1xcLlxcLF07IgorCisgICAgICAgICAgICAvLyBldmVyeXRoaW5nIG5vdCBtZW50aW9uZWQgYWJvdmUsIHBsdXMgdGhlIHF1b3RlIG1hcmtzICh3aGljaCBhcmUgYm90aAorICAgICAgICAgICAgLy8gPHByZS13b3JkPiwgPHBvc3Qtd29yZD4sIGFuZCA8Y2hhcj4pCisgICAgICAgICAgICArICIkY2hhcj1bXiRicmVhayRzcGFjZSRkYXNoJGthbmppJG5ic3AkX2lnbm9yZV8kcHJlX3dvcmQkcG9zdF93b3JkJG1pZF9udW0kZGFuZGFcclxcXCJcXFwnXTsiCisKKyAgICAgICAgICAgIC8vIGEgIm51bWJlciIgaXMgYSBydW4gb2YgcHJlZml4IGNoYXJhY3RlcnMgYW5kIGRhc2hlcywgZm9sbG93ZWQgYnkgb25lIG9yCisgICAgICAgICAgICAvLyBtb3JlIGRpZ2l0cyB3aXRoIGlzb2xhdGVkIG51bWJlci1wdW5jdHVhdGlvbiBjaGFyYWN0ZXJzIGludGVyc3BlcnNlZAorICAgICAgICAgICAgKyAiJG51bWJlcj0oWyRwcmVfd29yZCRkYXNoXSokZGlnaXQrKCRtaWRfbnVtJGRpZ2l0KykqKTsiCisKKyAgICAgICAgICAgIC8vIHRoZSBiYXNpYyBjb3JlIG9mIGEgd29yZCBjYW4gYmUgZWl0aGVyIGEgIm51bWJlciIgYXMgZGVmaW5lZCBhYm92ZSwgYSBzaW5nbGUKKyAgICAgICAgICAgIC8vICJLYW5qaSIgY2hhcmFjdGVyLCBvciBhIHJ1biBvZiBhbnkgbnVtYmVyIG9mIG5vdC1leHBsaWNpdGx5LW1lbnRpb25lZAorICAgICAgICAgICAgLy8gY2hhcmFjdGVycyAodGhpcyBpbmNsdWRlcyBMYXRpbiBsZXR0ZXJzKQorICAgICAgICAgICAgKyAiJHdvcmRfY29yZT0oWyRwcmVfd29yZCRjaGFyXSp8JGthbmppfCRudW1iZXIpOyIKKworICAgICAgICAgICAgLy8gYSB3b3JkIG1heSBlbmQgd2l0aCBhbiBvcHRpb25hbCBzdWZmaXggdGhhdCBiZSBlaXRoZXIgYSBydW4gb2Ygb25lIG9yCisgICAgICAgICAgICAvLyBtb3JlIGRhc2hlcyBvciBhIHJ1biBvZiB3b3JkLXN1ZmZpeCBjaGFyYWN0ZXJzLCBmb2xsb3dlZCBieSBhbiBvcHRpb25hbAorICAgICAgICAgICAgLy8gcnVuIG9mIHdoaXRlc3BhY2UKKyAgICAgICAgICAgICsgIiR3b3JkX3N1ZmZpeD0oKCRkYXNoK3wkcG9zdF93b3JkKikkc3BhY2UqKTsiCisKKyAgICAgICAgICAgIC8vIGEgd29yZCwgdGh1cywgaXMgYW4gb3B0aW9uYWwgcnVuIG9mIHdvcmQtcHJlZml4IGNoYXJhY3RlcnMsIGZvbGxvd2VkIGJ5CisgICAgICAgICAgICAvLyBhIHdvcmQgY29yZSBhbmQgYSB3b3JkIHN1ZmZpeCAodGhlIHN5bnRheCBvZiA8d29yZC1jb3JlPiBhbmQgPHdvcmQtc3VmZml4PgorICAgICAgICAgICAgLy8gYWN0dWFsbHkgYWxsb3dzIGVpdGhlciBvZiB0aGVtIHRvIG1hdGNoIHRoZSBlbXB0eSBzdHJpbmcsIHB1dHRpbmcgYSBicmVhaworICAgICAgICAgICAgLy8gYmV0d2VlbiB0aGluZ3MgbGlrZSAiKSgiIG9yICJhYWEoYWFhIgorICAgICAgICAgICAgKyAiJHdvcmQ9KCRwcmVfd29yZCokd29yZF9jb3JlJHdvcmRfc3VmZml4KTsiCisKKyAgICAgICAgICAgIC8vIGZpbmFsbHksIHRoZSBydWxlIHRoYXQgZG9lcyB0aGUgd29yazogS2VlcCB0b2dldGhlciBhbnkgcnVuIG9mIHdvcmRzIHRoYXQKKyAgICAgICAgICAgIC8vIGFyZSBqb2luZWQgYnkgcnVucyBvZiBvbmUgb2YgbW9yZSBub24tc3BhY2luZyBtYXJrLiAgQWxzbyBrZWVwIGEgdHJhaWxpbmcKKyAgICAgICAgICAgIC8vIGxpbmUtYnJlYWsgY2hhcmFjdGVyIG9yIENSTEYgY29tYmluYXRpb24gd2l0aCB0aGUgd29yZC4gIChsaW5lIHNlcGFyYXRvcnMKKyAgICAgICAgICAgIC8vICJ3aW4iIG92ZXIgbmJzcCdzKQorICAgICAgICAgICAgKyAiJHdvcmQoJG5ic3ArJHdvcmQpKlxyPyRicmVhaz87IiB9LAorCisgICAgICAgIC8vIHRoZXNlIHR3byByZXNvdXJjZXMgc3BlY2lmeSB0aGUgcGF0aG5hbWVzIG9mIHRoZSBkaWN0aW9uYXJ5IGZpbGVzIHRvCisgICAgICAgIC8vIHVzZSBmb3Igd29yZCBicmVha2luZyBhbmQgbGluZSBicmVha2luZy4gIEJvdGggY3VycmVudGx5IHJlZmVyIHRvCisgICAgICAgIC8vIGEgZmlsZSBjYWxsZWQgZW5nbGlzaC5kaWN0IHBsYWNlZCBpbiBjb20uaWJtLmljdS5pbXBsLmRhdGEKKyAgICAgICAgLy8gc29tZXdoZXJlIGluIHRoZSBjbGFzcyBwYXRoLiAgSXQncyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0CisgICAgICAgIC8vIGVuZ2xpc2guZGljdCB3YXMgY3JlYXRlZCBmb3IgdGVzdGluZyBwdXJwb3NlcyBvbmx5LCBhbmQgZG9lc24ndAorICAgICAgICAvLyBjb21lIGFueXdoZXJlIGNsb3NlIHRvIGJlaW5nIGFuIGV4aGF1c3RpdmUgZGljdGlvbmFyeSBvZiBFbmdsaXNoCisgICAgICAgIC8vIHdvcmRzIChiYXNpY2FsbHksIGl0IGNvbnRhaW5zIGFsbCB0aGUgd29yZHMgaW4gdGhlIERlY2xhcmF0aW9uIG9mCisgICAgICAgIC8vIEluZGVwZW5kZW5jZSwgYW5kIHRoZSBSZXZpc2VkIFN0YW5kYXJkIFZlcnNpb24gb2YgdGhlIGJvb2sgb2YgR2VuZXNpcywKKyAgICAgICAgLy8gcGx1cyBhIGZldyBvdGhlciB3b3JkcyB0aHJvd24gaW4gdG8gc2hvdyBtb3JlIGludGVyZXN0aW5nIGNhc2VzKS4KKyAgICAgICAgLy8geyAiV29yZEJyZWFrRGljdGlvbmFyeSIsICJjb21cXGlibVxcdGV4dFxccmVzb3VyY2VzXFxlbmdsaXNoLmRpY3QiIH0sCisgICAgICAgIC8vIHsgIkxpbmVCcmVha0RpY3Rpb25hcnkiLCAiY29tXFxpYm1cXHRleHRcXHJlc291cmNlc1xcZW5nbGlzaC5kaWN0IiB9CisgICAgICAgIHsgIldvcmRCcmVha0RpY3Rpb25hcnkiLCB1cmwgfSwKKyAgICAgICAgeyAiTGluZUJyZWFrRGljdGlvbmFyeSIsIHVybCB9CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9yYmJpL0JyZWFrSXRlcmF0b3JUZXN0LmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvcmJiaS9CcmVha0l0ZXJhdG9yVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjQ1Njg0YWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvcmJiaS9CcmVha0l0ZXJhdG9yVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTQyMyBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3JiYmkvQnJlYWtJdGVyYXRvclRlc3QuamF2YSx2ICQKKyAqICREYXRlOiAyMDAyLzExLzIyIDAwOjI0OjMxICQKKyAqICRSZXZpc2lvbjogMS4xMCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3QucmJiaTsKKworaW1wb3J0IGNvbS5pYm0uaWN1LmRldi50ZXN0Lio7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC5CcmVha0l0ZXJhdG9yOworaW1wb3J0IGphdmEudGV4dC5DaGFyYWN0ZXJJdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnRleHQuU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKK2ltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOworaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKK2ltcG9ydCBqYXZhLmlvLio7CisKK3B1YmxpYyBjbGFzcyBCcmVha0l0ZXJhdG9yVGVzdCBleHRlbmRzIFRlc3RGbXdrCit7CisgICAgcHJpdmF0ZSBCcmVha0l0ZXJhdG9yIGNoYXJhY3RlckJyZWFrOworICAgIHByaXZhdGUgQnJlYWtJdGVyYXRvciB3b3JkQnJlYWs7CisgICAgcHJpdmF0ZSBCcmVha0l0ZXJhdG9yIGxpbmVCcmVhazsKKyAgICBwcml2YXRlIEJyZWFrSXRlcmF0b3Igc2VudGVuY2VCcmVhazsKKyAgICBwcml2YXRlIEJyZWFrSXRlcmF0b3IgdGl0bGVCcmVhazsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBuZXcgQnJlYWtJdGVyYXRvclRlc3QoKS5ydW4oYXJncyk7CisgICAgfQorCisgICAgcHVibGljIEJyZWFrSXRlcmF0b3JUZXN0KCkKKyAgICB7CisgICAgICAgIGNoYXJhY3RlckJyZWFrID0gQnJlYWtJdGVyYXRvci5nZXRDaGFyYWN0ZXJJbnN0YW5jZSgpOworICAgICAgICB3b3JkQnJlYWsgPSBCcmVha0l0ZXJhdG9yLmdldFdvcmRJbnN0YW5jZSgpOworICAgICAgICBsaW5lQnJlYWsgPSBCcmVha0l0ZXJhdG9yLmdldExpbmVJbnN0YW5jZSgpOworICAgICAgICAvL2xvZ2xuKCJDcmVhdGluZyBzZW50ZW5jZSBpdGVyYXRvci4uLiIpOworICAgICAgICBzZW50ZW5jZUJyZWFrID0gQnJlYWtJdGVyYXRvci5nZXRTZW50ZW5jZUluc3RhbmNlKCk7CisgICAgICAgIC8vbG9nbG4oIkZpbmlzaGVkIGNyZWF0aW5nIHNlbnRlbmNlIGl0ZXJhdG9yLi4uIik7CisgICAgICAgIHRpdGxlQnJlYWsgPSBCcmVha0l0ZXJhdG9yLmdldFRpdGxlSW5zdGFuY2UoKTsKKyAgICB9CisKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBnZW5lcmFsIHRlc3Qgc3Vicm91dGluZXMKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgIHByaXZhdGUgdm9pZCBnZW5lcmFsSXRlcmF0b3JUZXN0KEJyZWFrSXRlcmF0b3IgYmksIFZlY3RvciBleHBlY3RlZFJlc3VsdCkgeworICAgICAgICBTdHJpbmdCdWZmZXIgYnVmZmVyID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBTdHJpbmcgdGV4dDsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBleHBlY3RlZFJlc3VsdC5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgdGV4dCA9IChTdHJpbmcpZXhwZWN0ZWRSZXN1bHQuZWxlbWVudEF0KGkpOworICAgICAgICAgICAgYnVmZmVyLmFwcGVuZCh0ZXh0KTsKKyAgICAgICAgfQorICAgICAgICB0ZXh0ID0gYnVmZmVyLnRvU3RyaW5nKCk7CisKKyAgICAgICAgYmkuc2V0VGV4dCh0ZXh0KTsKKworICAgICAgICBWZWN0b3IgbmV4dFJlc3VsdHMgPSBfdGVzdEZpcnN0QW5kTmV4dChiaSwgdGV4dCk7CisgICAgICAgIFZlY3RvciBwcmV2aW91c1Jlc3VsdHMgPSBfdGVzdExhc3RBbmRQcmV2aW91cyhiaSwgdGV4dCk7CisKKyAgICAgICAgbG9nbG4oImNvbXBhcmluZyBmb3J3YXJkIGFuZCBiYWNrd2FyZC4uLiIpOworICAgICAgICBpbnQgZXJycyA9IGdldEVycm9yQ291bnQoKTsKKyAgICAgICAgY29tcGFyZUZyYWdtZW50TGlzdHMoImZvcndhcmQgaXRlcmF0aW9uIiwgImJhY2t3YXJkIGl0ZXJhdGlvbiIsIG5leHRSZXN1bHRzLAorICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNSZXN1bHRzKTsKKyAgICAgICAgaWYgKGdldEVycm9yQ291bnQoKSA9PSBlcnJzKSB7CisgICAgICAgICAgICBsb2dsbigiY29tcGFyaW5nIGV4cGVjdGVkIGFuZCBhY3R1YWwuLi4iKTsKKyAgICAgICAgICAgIGNvbXBhcmVGcmFnbWVudExpc3RzKCJleHBlY3RlZCByZXN1bHQiLCAiYWN0dWFsIHJlc3VsdCIsIGV4cGVjdGVkUmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRSZXN1bHRzKTsKKyAgICAgICAgfQorCisgICAgICAgIGludFtdIGJvdW5kYXJpZXMgPSBuZXcgaW50W2V4cGVjdGVkUmVzdWx0LnNpemUoKSArIDNdOworICAgICAgICBib3VuZGFyaWVzWzBdID0gQnJlYWtJdGVyYXRvci5ET05FOworICAgICAgICBib3VuZGFyaWVzWzFdID0gMDsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBleHBlY3RlZFJlc3VsdC5zaXplKCk7IGkrKykKKyAgICAgICAgICAgIGJvdW5kYXJpZXNbaSArIDJdID0gYm91bmRhcmllc1tpICsgMV0gKyAoKFN0cmluZylleHBlY3RlZFJlc3VsdC5lbGVtZW50QXQoaSkpLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCgpOworICAgICAgICBib3VuZGFyaWVzW2JvdW5kYXJpZXMubGVuZ3RoIC0gMV0gPSBCcmVha0l0ZXJhdG9yLkRPTkU7CisKKyAgICAgICAgX3Rlc3RGb2xsb3dpbmcoYmksIHRleHQsIGJvdW5kYXJpZXMpOworICAgICAgICBfdGVzdFByZWNlZGluZyhiaSwgdGV4dCwgYm91bmRhcmllcyk7CisgICAgICAgIF90ZXN0SXNCb3VuZGFyeShiaSwgdGV4dCwgYm91bmRhcmllcyk7CisKKyAgICAgICAgZG9NdWx0aXBsZVNlbGVjdGlvblRlc3QoYmksIHRleHQpOworICAgIH0KKworICAgIHByaXZhdGUgVmVjdG9yIF90ZXN0Rmlyc3RBbmROZXh0KEJyZWFrSXRlcmF0b3IgYmksIFN0cmluZyB0ZXh0KSB7CisgICAgICAgIGludCBwID0gYmkuZmlyc3QoKTsKKyAgICAgICAgaW50IGxhc3RQID0gcDsKKyAgICAgICAgVmVjdG9yIHJlc3VsdCA9IG5ldyBWZWN0b3IoKTsKKworICAgICAgICBpZiAocCAhPSAwKQorICAgICAgICAgICAgZXJybG4oImZpcnN0KCkgcmV0dXJuZWQgIiArIHAgKyAiIGluc3RlYWQgb2YgMCIpOworICAgICAgICB3aGlsZSAocCAhPSBCcmVha0l0ZXJhdG9yLkRPTkUpIHsKKyAgICAgICAgICAgIHAgPSBiaS5uZXh0KCk7CisgICAgICAgICAgICBpZiAocCAhPSBCcmVha0l0ZXJhdG9yLkRPTkUpIHsKKyAgICAgICAgICAgICAgICBpZiAocCA8PSBsYXN0UCkKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIm5leHQoKSBmYWlsZWQgdG8gbW92ZSBmb3J3YXJkOiBuZXh0KCkgb24gcG9zaXRpb24gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBsYXN0UCArICIgeWllbGRlZCAiICsgcCk7CisKKyAgICAgICAgICAgICAgICByZXN1bHQuYWRkRWxlbWVudCh0ZXh0LnN1YnN0cmluZyhsYXN0UCwgcCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGxhc3RQICE9IHRleHQubGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJuZXh0KCkgcmV0dXJuZWQgRE9ORSBwcmVtYXR1cmVseTogb2Zmc2V0IHdhcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGxhc3RQICsgIiBpbnN0ZWFkIG9mICIgKyB0ZXh0Lmxlbmd0aCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxhc3RQID0gcDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHByaXZhdGUgVmVjdG9yIF90ZXN0TGFzdEFuZFByZXZpb3VzKEJyZWFrSXRlcmF0b3IgYmksIFN0cmluZyB0ZXh0KSB7CisgICAgICAgIGludCBwID0gYmkubGFzdCgpOworICAgICAgICBpbnQgbGFzdFAgPSBwOworICAgICAgICBWZWN0b3IgcmVzdWx0ID0gbmV3IFZlY3RvcigpOworCisgICAgICAgIGlmIChwICE9IHRleHQubGVuZ3RoKCkpCisgICAgICAgICAgICBlcnJsbigibGFzdCgpIHJldHVybmVkICIgKyBwICsgIiBpbnN0ZWFkIG9mICIgKyB0ZXh0Lmxlbmd0aCgpKTsKKyAgICAgICAgd2hpbGUgKHAgIT0gQnJlYWtJdGVyYXRvci5ET05FKSB7CisgICAgICAgICAgICBwID0gYmkucHJldmlvdXMoKTsKKyAgICAgICAgICAgIGlmIChwICE9IEJyZWFrSXRlcmF0b3IuRE9ORSkgeworICAgICAgICAgICAgICAgIGlmIChwID49IGxhc3RQKQorICAgICAgICAgICAgICAgICAgICBlcnJsbigicHJldmlvdXMoKSBmYWlsZWQgdG8gbW92ZSBiYWNrd2FyZDogcHJldmlvdXMoKSBvbiBwb3NpdGlvbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGxhc3RQICsgIiB5aWVsZGVkICIgKyBwKTsKKworICAgICAgICAgICAgICAgIHJlc3VsdC5pbnNlcnRFbGVtZW50QXQodGV4dC5zdWJzdHJpbmcocCwgbGFzdFApLCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChsYXN0UCAhPSAwKQorICAgICAgICAgICAgICAgICAgICBlcnJsbigicHJldmlvdXMoKSByZXR1cm5lZCBET05FIHByZW1hdHVyZWx5OiBvZmZzZXQgd2FzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgbGFzdFAgKyAiIGluc3RlYWQgb2YgMCIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbGFzdFAgPSBwOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGNvbXBhcmVGcmFnbWVudExpc3RzKFN0cmluZyBmMU5hbWUsIFN0cmluZyBmMk5hbWUsIFZlY3RvciBmMSwgVmVjdG9yIGYyKSB7CisgICAgICAgIGludCBwMSA9IDA7CisgICAgICAgIGludCBwMiA9IDA7CisgICAgICAgIFN0cmluZyBzMTsKKyAgICAgICAgU3RyaW5nIHMyOworICAgICAgICBpbnQgdDEgPSAwOworICAgICAgICBpbnQgdDIgPSAwOworCisgICAgICAgIHdoaWxlIChwMSA8IGYxLnNpemUoKSAmJiBwMiA8IGYyLnNpemUoKSkgeworICAgICAgICAgICAgczEgPSAoU3RyaW5nKWYxLmVsZW1lbnRBdChwMSk7CisgICAgICAgICAgICBzMiA9IChTdHJpbmcpZjIuZWxlbWVudEF0KHAyKTsKKyAgICAgICAgICAgIHQxICs9IHMxLmxlbmd0aCgpOworICAgICAgICAgICAgdDIgKz0gczIubGVuZ3RoKCk7CisKKyAgICAgICAgICAgIGlmIChzMS5lcXVhbHMoczIpKSB7CisgICAgICAgICAgICAgICAgZGVidWdMb2dsbigiICAgPiIgKyBzMSArICI8Iik7CisgICAgICAgICAgICAgICAgKytwMTsKKyAgICAgICAgICAgICAgICArK3AyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaW50IHRlbXBUMSA9IHQxOworICAgICAgICAgICAgICAgIGludCB0ZW1wVDIgPSB0MjsKKyAgICAgICAgICAgICAgICBpbnQgdGVtcFAxID0gcDE7CisgICAgICAgICAgICAgICAgaW50IHRlbXBQMiA9IHAyOworCisgICAgICAgICAgICAgICAgd2hpbGUgKHRlbXBUMSAhPSB0ZW1wVDIgJiYgdGVtcFAxIDwgZjEuc2l6ZSgpICYmIHRlbXBQMiA8IGYyLnNpemUoKSkgeworICAgICAgICAgICAgICAgICAgICB3aGlsZSAodGVtcFQxIDwgdGVtcFQyICYmIHRlbXBQMSA8IGYxLnNpemUoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGVtcFQxICs9ICgoU3RyaW5nKWYxLmVsZW1lbnRBdCh0ZW1wUDEpKS5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrdGVtcFAxOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0ZW1wVDIgPCB0ZW1wVDEgJiYgdGVtcFAyIDwgZjIuc2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wVDIgKz0gKChTdHJpbmcpZjIuZWxlbWVudEF0KHRlbXBQMikpLmxlbmd0aCgpOworICAgICAgICAgICAgICAgICAgICAgICAgKyt0ZW1wUDI7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbG9nbG4oIioqKiAiICsgZjFOYW1lICsgIiBoYXM6Iik7CisgICAgICAgICAgICAgICAgd2hpbGUgKHAxIDw9IHRlbXBQMSAmJiBwMSA8IGYxLnNpemUoKSkgeworICAgICAgICAgICAgICAgICAgICBzMSA9IChTdHJpbmcpZjEuZWxlbWVudEF0KHAxKTsKKyAgICAgICAgICAgICAgICAgICAgdDEgKz0gczEubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgICAgIGRlYnVnTG9nbG4oIiAqKiogPiIgKyBzMSArICI8Iik7CisgICAgICAgICAgICAgICAgICAgICsrcDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGxvZ2xuKCIqKioqKiAiICsgZjJOYW1lICsgIiBoYXM6Iik7CisgICAgICAgICAgICAgICAgd2hpbGUgKHAyIDw9IHRlbXBQMiAmJiBwMiA8IGYyLnNpemUoKSkgeworICAgICAgICAgICAgICAgICAgICBzMiA9IChTdHJpbmcpZjIuZWxlbWVudEF0KHAyKTsKKyAgICAgICAgICAgICAgICAgICAgdDIgKz0gczIubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgICAgIGRlYnVnTG9nbG4oIiAqKioqKiA+IiArIHMyICsgIjwiKTsKKyAgICAgICAgICAgICAgICAgICAgKytwMjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZXJybG4oIkRpc2NyZXBhbmN5IGJldHdlZW4gIiArIGYxTmFtZSArICIgYW5kICIgKyBmMk5hbWUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIF90ZXN0Rm9sbG93aW5nKEJyZWFrSXRlcmF0b3IgYmksIFN0cmluZyB0ZXh0LCBpbnRbXSBib3VuZGFyaWVzKSB7CisgICAgICAgIGxvZ2xuKCJ0ZXN0Rm9sbG93aW5nKCk6Iik7CisgICAgICAgIGludCBwID0gMjsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gdGV4dC5sZW5ndGgoKTsgaSsrKSB7CisgICAgICAgICAgICBpZiAoaSA9PSBib3VuZGFyaWVzW3BdKQorICAgICAgICAgICAgICAgICsrcDsKKworICAgICAgICAgICAgaW50IGIgPSBiaS5mb2xsb3dpbmcoaSk7CisgICAgICAgICAgICBsb2dsbigiYmkuZm9sbG93aW5nKCIgKyBpICsgIikgLT4gIiArIGIpOworICAgICAgICAgICAgaWYgKGIgIT0gYm91bmRhcmllc1twXSkKKyAgICAgICAgICAgICAgICBlcnJsbigiV3JvbmcgcmVzdWx0IGZyb20gZm9sbG93aW5nKCkgZm9yICIgKyBpICsgIjogZXhwZWN0ZWQgIiArIGJvdW5kYXJpZXNbcF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiLCBnb3QgIiArIGIpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIF90ZXN0UHJlY2VkaW5nKEJyZWFrSXRlcmF0b3IgYmksIFN0cmluZyB0ZXh0LCBpbnRbXSBib3VuZGFyaWVzKSB7CisgICAgICAgIGxvZ2xuKCJ0ZXN0UHJlY2VkaW5nKCk6Iik7CisgICAgICAgIGludCBwID0gMDsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gdGV4dC5sZW5ndGgoKTsgaSsrKSB7CisgICAgICAgICAgICBpbnQgYiA9IGJpLnByZWNlZGluZyhpKTsKKyAgICAgICAgICAgIGxvZ2xuKCJiaS5wcmVjZWRpbmcoIiArIGkgKyAiKSAtPiAiICsgYik7CisgICAgICAgICAgICBpZiAoYiAhPSBib3VuZGFyaWVzW3BdKQorICAgICAgICAgICAgICAgIGVycmxuKCJXcm9uZyByZXN1bHQgZnJvbSBwcmVjZWRpbmcoKSBmb3IgIiArIGkgKyAiOiBleHBlY3RlZCAiICsgYm91bmRhcmllc1twXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIsIGdvdCAiICsgYik7CisKKyAgICAgICAgICAgIGlmIChpID09IGJvdW5kYXJpZXNbcCArIDFdKQorICAgICAgICAgICAgICAgICsrcDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBfdGVzdElzQm91bmRhcnkoQnJlYWtJdGVyYXRvciBiaSwgU3RyaW5nIHRleHQsIGludFtdIGJvdW5kYXJpZXMpIHsKKyAgICAgICAgbG9nbG4oInRlc3RJc0JvdW5kYXJ5KCk6Iik7CisgICAgICAgIGludCBwID0gMTsKKyAgICAgICAgYm9vbGVhbiBpc0I7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IHRleHQubGVuZ3RoKCk7IGkrKykgeworICAgICAgICAgICAgaXNCID0gYmkuaXNCb3VuZGFyeShpKTsKKyAgICAgICAgICAgIGxvZ2xuKCJiaS5pc0JvdW5kYXJ5KCIgKyBpICsgIikgLT4gIiArIGlzQik7CisKKyAgICAgICAgICAgIGlmIChpID09IGJvdW5kYXJpZXNbcF0pIHsKKyAgICAgICAgICAgICAgICBpZiAoIWlzQikKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIldyb25nIHJlc3VsdCBmcm9tIGlzQm91bmRhcnkoKSBmb3IgIiArIGkgKyAiOiBleHBlY3RlZCB0cnVlLCBnb3QgZmFsc2UiKTsKKyAgICAgICAgICAgICAgICArK3A7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNCKQorICAgICAgICAgICAgICAgICAgICBlcnJsbigiV3JvbmcgcmVzdWx0IGZyb20gaXNCb3VuZGFyeSgpIGZvciAiICsgaSArICI6IGV4cGVjdGVkIGZhbHNlLCBnb3QgdHJ1ZSIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGRvTXVsdGlwbGVTZWxlY3Rpb25UZXN0KEJyZWFrSXRlcmF0b3IgaXRlcmF0b3IsIFN0cmluZyB0ZXN0VGV4dCkKKyAgICB7CisgICAgICAgIGxvZ2xuKCJNdWx0aXBsZSBzZWxlY3Rpb24gdGVzdC4uLiIpOworICAgICAgICBCcmVha0l0ZXJhdG9yIHRlc3RJdGVyYXRvciA9IChCcmVha0l0ZXJhdG9yKWl0ZXJhdG9yLmNsb25lKCk7CisgICAgICAgIGludCBvZmZzZXQgPSBpdGVyYXRvci5maXJzdCgpOworICAgICAgICBpbnQgdGVzdE9mZnNldDsKKyAgICAgICAgaW50IGNvdW50ID0gMDsKKworICAgICAgICBkbyB7CisgICAgICAgICAgICB0ZXN0T2Zmc2V0ID0gdGVzdEl0ZXJhdG9yLmZpcnN0KCk7CisgICAgICAgICAgICB0ZXN0T2Zmc2V0ID0gdGVzdEl0ZXJhdG9yLm5leHQoY291bnQpOworICAgICAgICAgICAgbG9nbG4oIm5leHQoIiArIGNvdW50ICsgIikgLT4gIiArIHRlc3RPZmZzZXQpOworICAgICAgICAgICAgaWYgKG9mZnNldCAhPSB0ZXN0T2Zmc2V0KQorICAgICAgICAgICAgICAgIGVycmxuKCJuZXh0KG4pIGFuZCBuZXh0KCkgbm90IHJldHVybmluZyBjb25zaXN0ZW50IHJlc3VsdHM6IGZvciBzdGVwICIgKyBjb3VudCArICIsIG5leHQobikgcmV0dXJuZWQgIiArIHRlc3RPZmZzZXQgKyAiIGFuZCBuZXh0KCkgaGFkICIgKyBvZmZzZXQpOworCisgICAgICAgICAgICBpZiAob2Zmc2V0ICE9IEJyZWFrSXRlcmF0b3IuRE9ORSkgeworICAgICAgICAgICAgICAgIGNvdW50Kys7CisgICAgICAgICAgICAgICAgb2Zmc2V0ID0gaXRlcmF0b3IubmV4dCgpOworICAgICAgICAgICAgfQorICAgICAgICB9IHdoaWxlIChvZmZzZXQgIT0gQnJlYWtJdGVyYXRvci5ET05FKTsKKworICAgICAgICAvLyBub3cgZG8gaXQgYmFja3dhcmRzLi4uCisgICAgICAgIG9mZnNldCA9IGl0ZXJhdG9yLmxhc3QoKTsKKyAgICAgICAgY291bnQgPSAwOworCisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIHRlc3RPZmZzZXQgPSB0ZXN0SXRlcmF0b3IubGFzdCgpOworICAgICAgICAgICAgdGVzdE9mZnNldCA9IHRlc3RJdGVyYXRvci5uZXh0KGNvdW50KTsKKyAgICAgICAgICAgIGxvZ2xuKCJuZXh0KCIgKyBjb3VudCArICIpIC0+ICIgKyB0ZXN0T2Zmc2V0KTsKKyAgICAgICAgICAgIGlmIChvZmZzZXQgIT0gdGVzdE9mZnNldCkKKyAgICAgICAgICAgICAgICBlcnJsbigibmV4dChuKSBhbmQgbmV4dCgpIG5vdCByZXR1cm5pbmcgY29uc2lzdGVudCByZXN1bHRzOiBmb3Igc3RlcCAiICsgY291bnQgKyAiLCBuZXh0KG4pIHJldHVybmVkICIgKyB0ZXN0T2Zmc2V0ICsgIiBhbmQgbmV4dCgpIGhhZCAiICsgb2Zmc2V0KTsKKworICAgICAgICAgICAgaWYgKG9mZnNldCAhPSBCcmVha0l0ZXJhdG9yLkRPTkUpIHsKKyAgICAgICAgICAgICAgICBjb3VudC0tOworICAgICAgICAgICAgICAgIG9mZnNldCA9IGl0ZXJhdG9yLnByZXZpb3VzKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gd2hpbGUgKG9mZnNldCAhPSBCcmVha0l0ZXJhdG9yLkRPTkUpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBkb0JyZWFrSW52YXJpYW50VGVzdChCcmVha0l0ZXJhdG9yIHRiLCBTdHJpbmcgdGVzdENoYXJzKQorICAgIHsKKyAgICAgICAgU3RyaW5nQnVmZmVyIHdvcmsgPSBuZXcgU3RyaW5nQnVmZmVyKCJhYWEiKTsKKy8vICAgICAgICBpbnQgZXJyb3JDb3VudCA9IDA7CisKKyAgICAgICAgLy8gYSBicmVhayBzaG91bGQgYWx3YXlzIG9jY3VyIGFmdGVyIENSICh1bmxlc3MgZm9sbG93ZWQgYnkgTEYpLCBMRiwgUFMsIGFuZCBMUywKKyAgICAgICAgLy8gdW5sZXNzIHRoZXkncmUgZm9sbG93ZWQgYnkgYSBub24tc3BhY2luZyBtYXJrIG9yIGEgZm9ybWF0IGNoYXJhY3RlcgorICAgICAgICBTdHJpbmcgYnJlYWtzID0gIlxyXG5cdTIwMjlcdTIwMjgiOworCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYnJlYWtzLmxlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgICAgIHdvcmsuc2V0Q2hhckF0KDEsIGJyZWFrcy5jaGFyQXQoaSkpOworICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCB0ZXN0Q2hhcnMubGVuZ3RoKCk7IGorKykgeworICAgICAgICAgICAgICAgIHdvcmsuc2V0Q2hhckF0KDAsIHRlc3RDaGFycy5jaGFyQXQoaikpOworICAgICAgICAgICAgICAgIGZvciAoaW50IGsgPSAwOyBrIDwgdGVzdENoYXJzLmxlbmd0aCgpOyBrKyspIHsKKyAgICAgICAgICAgICAgICAgICAgY2hhciBjID0gdGVzdENoYXJzLmNoYXJBdChrKTsKKworICAgICAgICAgICAgICAgICAgICAvLyBpZiBhIGNyIGlzIGZvbGxvd2VkIGJ5IGxmLCBwcywgbHMgb3IgZXR4LCBkb24ndCBkbyB0aGUgY2hlY2sgKHRoYXQncworICAgICAgICAgICAgICAgICAgICAvLyBub3Qgc3VwcG9zZWQgdG8gd29yaykKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdvcmsuY2hhckF0KDEpID09ICdccicgJiYgKGMgPT0gJ1xuJyB8fCBjID09ICdcdTIwMjknCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgYyA9PSAnXHUyMDI4JyB8fCBjID09ICdcdTAwMDMnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgICAgIHdvcmsuc2V0Q2hhckF0KDIsIGMpOworICAgICAgICAgICAgICAgICAgICB0Yi5zZXRUZXh0KHdvcmsudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gc2VlbjIgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgbCA9IHRiLmZpcnN0KCk7IGwgIT0gQnJlYWtJdGVyYXRvci5ET05FOyBsID0gdGIubmV4dCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9PSAyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZW4yID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoIXNlZW4yKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbigiTm8gYnJlYWsgYmV0d2VlbiBVKyIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKChpbnQpKHdvcmsuY2hhckF0KDEpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiBhbmQgVSsiICsgSW50ZWdlci50b0hleFN0cmluZygoaW50KSh3b3JrLmNoYXJBdCgyKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBkb090aGVySW52YXJpYW50VGVzdChCcmVha0l0ZXJhdG9yIHRiLCBTdHJpbmcgdGVzdENoYXJzKQorICAgIHsKKyAgICAgICAgU3RyaW5nQnVmZmVyIHdvcmsgPSBuZXcgU3RyaW5nQnVmZmVyKCJhXHJcbmEiKTsKKyAgICAgICAgaW50IGVycm9yQ291bnQgPSAwOworCisgICAgICAgIC8vIGEgYnJlYWsgc2hvdWxkIG5ldmVyIG9jY3VyIGJldHdlZW4gQ1IgYW5kIExGCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGVzdENoYXJzLmxlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgICAgIHdvcmsuc2V0Q2hhckF0KDAsIHRlc3RDaGFycy5jaGFyQXQoaSkpOworICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCB0ZXN0Q2hhcnMubGVuZ3RoKCk7IGorKykgeworICAgICAgICAgICAgICAgIHdvcmsuc2V0Q2hhckF0KDMsIHRlc3RDaGFycy5jaGFyQXQoaikpOworICAgICAgICAgICAgICAgIHRiLnNldFRleHQod29yay50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBrID0gdGIuZmlyc3QoKTsgayAhPSBCcmVha0l0ZXJhdG9yLkRPTkU7IGsgPSB0Yi5uZXh0KCkpCisgICAgICAgICAgICAgICAgICAgIGlmIChrID09IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycmxuKCJCcmVhayBiZXR3ZWVuIENSIGFuZCBMRiBpbiBzdHJpbmcgVSsiICsgSW50ZWdlci50b0hleFN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkod29yay5jaGFyQXQoMCkpKSArICIsIFUrZCBVK2EgVSsiICsgSW50ZWdlci50b0hleFN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkod29yay5jaGFyQXQoMykpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJvckNvdW50Kys7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3JDb3VudCA+PSA3NSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIGEgYnJlYWsgc2hvdWxkIG5ldmVyIG9jY3VyIGJlZm9yZSBhIG5vbi1zcGFjaW5nIG1hcmssIHVubGVzcyBpdCdzIHByZWNlZGVkCisgICAgICAgIC8vIGJ5IGEgbGluZSB0ZXJtaW5hdG9yCisgICAgICAgIHdvcmsuc2V0TGVuZ3RoKDApOworICAgICAgICB3b3JrLmFwcGVuZCgiYWFhYSIpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRlc3RDaGFycy5sZW5ndGgoKTsgaSsrKSB7CisgICAgICAgICAgICBjaGFyIGMgPSB0ZXN0Q2hhcnMuY2hhckF0KGkpOworICAgICAgICAgICAgaWYgKGMgPT0gJ1xuJyB8fCBjID09ICdccicgfHwgYyA9PSAnXHUyMDI5JyB8fCBjID09ICdcdTIwMjgnIHx8IGMgPT0gJ1x1MDAwMycpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB3b3JrLnNldENoYXJBdCgxLCBjKTsKKyAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgdGVzdENoYXJzLmxlbmd0aCgpOyBqKyspIHsKKyAgICAgICAgICAgICAgICBjID0gdGVzdENoYXJzLmNoYXJBdChqKTsKKyAgICAgICAgICAgICAgICBpZiAoQ2hhcmFjdGVyLmdldFR5cGUoYykgIT0gQ2hhcmFjdGVyLk5PTl9TUEFDSU5HX01BUksgJiYgQ2hhcmFjdGVyLmdldFR5cGUoYykKKyAgICAgICAgICAgICAgICAgICAgICAgICE9IENoYXJhY3Rlci5FTkNMT1NJTkdfTUFSSykKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgd29yay5zZXRDaGFyQXQoMiwgYyk7CisgICAgICAgICAgICAgICAgdGIuc2V0VGV4dCh3b3JrLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIGZvciAoaW50IGsgPSB0Yi5maXJzdCgpOyBrICE9IEJyZWFrSXRlcmF0b3IuRE9ORTsgayA9IHRiLm5leHQoKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGsgPT0gMikgeworICAgICAgICAgICAgICAgICAgICAgICAgZXJybG4oIkJyZWFrIGJldHdlZW4gVSsiICsgSW50ZWdlci50b0hleFN0cmluZygoaW50KSh3b3JrLmNoYXJBdCgxKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiBhbmQgVSsiICsgSW50ZWdlci50b0hleFN0cmluZygoaW50KSh3b3JrLmNoYXJBdCgyKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yQ291bnQrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnJvckNvdW50ID49IDc1KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgZGVidWdMb2dsbihTdHJpbmcgcykgeworICAgICAgICBmaW5hbCBTdHJpbmcgemVyb3MgPSAiMDAwMCI7CisgICAgICAgIFN0cmluZyB0ZW1wOworICAgICAgICBTdHJpbmdCdWZmZXIgb3V0ID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHMubGVuZ3RoKCk7IGkrKykgeworICAgICAgICAgICAgY2hhciBjID0gcy5jaGFyQXQoaSk7CisgICAgICAgICAgICBpZiAoYyA+PSAnICcgJiYgYyA8ICdcdTAwN2YnKQorICAgICAgICAgICAgICAgIG91dC5hcHBlbmQoYyk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBvdXQuYXBwZW5kKCJcXHUiKTsKKyAgICAgICAgICAgICAgICB0ZW1wID0gSW50ZWdlci50b0hleFN0cmluZygoaW50KWMpOworICAgICAgICAgICAgICAgIG91dC5hcHBlbmQoemVyb3Muc3Vic3RyaW5nKDAsIDQgLSB0ZW1wLmxlbmd0aCgpKSk7CisgICAgICAgICAgICAgICAgb3V0LmFwcGVuZCh0ZW1wKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBsb2dsbihvdXQudG9TdHJpbmcoKSk7CisgICAgfQorCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gdGVzdHMKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RXb3JkQnJlYWsoKSB7CisgICAgICAgIFZlY3RvciB3b3JkU2VsZWN0aW9uRGF0YSA9IG5ldyBWZWN0b3IoKTsKKworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIxMiwzNCIpOworCisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUwMEEyIik7IC8vY2VudCBzaWduCisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MDBBMyIpOyAvL3BvdW5kIHNpZ24KKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUwMEE0Iik7IC8vY3VycmVuY3kgc2lnbgorICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTAwQTUiKTsgLy95ZW4gc2lnbgorICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJhbHBoYS1iZXRhLWdhbW1hIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIi4iKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJCYWRnZXMiKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiPyIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIkJBREdFUyIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIhIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIj8iKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiISIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIldlIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiZG9uJ3QiKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJuZWVkIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgibm8iKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJTVElOS0lORyIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIkJBREdFUyIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIhIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIiEiKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiISIpOworCisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIjAxMi41NjYsNSIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIjEyMy4zNDM0LDkwMCIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIjEwMDAsMjMzLDQ1Ni4wMDAiKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIxLDIzLjMyMiUiKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIxMjMuMTIyMiIpOworCisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUwMDI0MTIzLDAwMC4yMCIpOworCisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiMTc5LjAxXHUwMDI1Iik7CisKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiSGVsbG8iKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiLCIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoImhvdyIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoImFyZSIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoInlvdSIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlgiKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiICIpOworCisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIk5vdyIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcciIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJpcyIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcbiIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJ0aGUiKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHJcbiIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJ0aW1lIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlxuIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlxyIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoImZvciIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcciIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcciIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJhbGwiKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiICIpOworCisgICAgICAgIGdlbmVyYWxJdGVyYXRvclRlc3Qod29yZEJyZWFrLCB3b3JkU2VsZWN0aW9uRGF0YSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQGJ1ZyA0MDk3Nzc5CisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEJ1ZzQwOTc3NzkoKSB7CisgICAgICAgIFZlY3RvciB3b3JkU2VsZWN0aW9uRGF0YSA9IG5ldyBWZWN0b3IoKTsKKworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJhYVx1MDMwMGEiKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiICIpOworCisgICAgICAgIGdlbmVyYWxJdGVyYXRvclRlc3Qod29yZEJyZWFrLCB3b3JkU2VsZWN0aW9uRGF0YSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQGJ1ZyA0MDk4NDY3CisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEJ1ZzQwOTg0NjdXb3JkcygpIHsKKyAgICAgICAgVmVjdG9yIHdvcmRTZWxlY3Rpb25EYXRhID0gbmV3IFZlY3RvcigpOworCisgICAgICAgIC8vIFdoYXQgZm9sbG93cyBpcyBhIHN0cmluZyBvZiBLb3JlYW4gY2hhcmFjdGVycyAoSSBmb3VuZCBpdCBpbiB0aGUgWWVsbG93IFBhZ2VzCisgICAgICAgIC8vIGFkIGZvciB0aGUgS29yZWFuIFByZXNieXRlcmlhbiBDaHVyY2ggb2YgU2FuIEZyYW5jaXNjbywgYW5kIEkgaG9wZSBJIHRyYW5zY3JpYmVkCisgICAgICAgIC8vIGl0IGNvcnJlY3RseSksIGZpcnN0IGFzIHByZWNvbXBvc2VkIHN5bGxhYmxlcywgYW5kIHRoZW4gYXMgY29uam9pbmluZyBqYW1vLgorICAgICAgICAvLyBCb3RoIHNlcXVlbmNlcyBzaG91bGQgYmUgc2VtYW50aWNhbGx5IGlkZW50aWNhbCBhbmQgYnJlYWsgdGhlIHNhbWUgd2F5LgorICAgICAgICAvLyBwcmVjb21wb3NlZCBzeWxsYWJsZXMuLi4KKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHVjMGMxXHVkNTZkIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHVkNTVjXHVjNzc4Iik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHVjNWYwXHVkNTY5Iik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHVjN2E1XHViODVjXHVhZDUwXHVkNjhjIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgICAgLy8gY29uam9pbmluZyBqYW1vLi4uCisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MTEwOVx1MTE2MVx1MTFiY1x1MTExMlx1MTE2MVx1MTFiYyIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MTExMlx1MTE2MVx1MTFhYlx1MTEwYlx1MTE3NVx1MTFhYiIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MTEwYlx1MTE2N1x1MTFhYlx1MTExMlx1MTE2MVx1MTFiOCIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MTEwY1x1MTE2MVx1MTFiY1x1MTEwNVx1MTE2OVx1MTEwMFx1MTE2ZFx1MTExMlx1MTE2YyIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIgIik7CisKKyAgICAgICAgZ2VuZXJhbEl0ZXJhdG9yVGVzdCh3b3JkQnJlYWssIHdvcmRTZWxlY3Rpb25EYXRhKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAYnVnIDQxMTc1NTQKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0QnVnNDExNzU1NFdvcmRzKCkgeworICAgICAgICBWZWN0b3Igd29yZFNlbGVjdGlvbkRhdGEgPSBuZXcgVmVjdG9yKCk7CisKKyAgICAgICAgLy8gdGhpcyBpcyBhIHRlc3QgZm9yIGJ1ZyAjNDExNzU1NDogdGhlIGlkZW9ncmFwaGljIGl0ZXJhdGlvbiBtYXJrIChVKzMwMDUpIHNob3VsZAorICAgICAgICAvLyBjb3VudCBhcyBhIEthbmppIGNoYXJhY3RlciBmb3IgdGhlIHB1cnBvc2VzIG9mIHdvcmQgYnJlYWtpbmcKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiYWJjIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1NGUwMVx1NGUwMlx1MzAwNVx1NGUwM1x1NGUwMyIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJhYmMiKTsKKworICAgICAgICBnZW5lcmFsSXRlcmF0b3JUZXN0KHdvcmRCcmVhaywgd29yZFNlbGVjdGlvbkRhdGEpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RTZW50ZW5jZUJyZWFrKCkgeworICAgICAgICBWZWN0b3Igc2VudGVuY2VTZWxlY3Rpb25EYXRhID0gbmV3IFZlY3RvcigpOworCisgICAgICAgIHNlbnRlbmNlU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJUaGlzIGlzIGEgc2ltcGxlIHNhbXBsZSBzZW50ZW5jZS4gIik7CisgICAgICAgIHNlbnRlbmNlU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIoVGhpcyBpcyBpdC4pICIpOworICAgICAgICBzZW50ZW5jZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiVGhpcyBpcyBhIHNpbXBsZSBzYW1wbGUgc2VudGVuY2UuICIpOworICAgICAgICBzZW50ZW5jZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXCJUaGlzIGlzblwndCBpdC5cIiAiKTsKKyAgICAgICAgc2VudGVuY2VTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIkhpISAiKTsKKyAgICAgICAgc2VudGVuY2VTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlRoaXMgaXMgYSBzaW1wbGUgc2FtcGxlIHNlbnRlbmNlLiAiKTsKKyAgICAgICAgc2VudGVuY2VTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIkl0IGRvZXMgbm90IGhhdmUgdG8gbWFrZSBhbnkgc2Vuc2UgYXMgeW91IGNhbiBzZWUuICIpOworICAgICAgICBzZW50ZW5jZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiTmVsIG1lenpvIGRlbCBjYW1taW4gZGkgbm9zdHJhIHZpdGEsIG1pIHJpdHJvdmFpIGluIHVuYSBzZWx2YSBvc2N1cmEuICIpOworICAgICAgICBzZW50ZW5jZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiQ2hlIGxhIGRyaXR0YSB2aWEgYXZlbyBzbWFycml0YS4gIik7CisgICAgICAgIHNlbnRlbmNlU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJIZSBzYWlkLCB0aGF0IEkgc2FpZCwgdGhhdCB5b3Ugc2FpZCEhICIpOworCisgICAgICAgIHNlbnRlbmNlU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJEb24ndCByb2NrIHRoZSBib2F0Llx1MjAyOSIpOworCisgICAgICAgIHNlbnRlbmNlU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJCZWNhdXNlIEkgYW0gdGhlIGRhZGR5LCB0aGF0IGlzIHdoeS4gIik7CisgICAgICAgIHNlbnRlbmNlU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJOb3Qgb24gbXkgdGltZSAoZWwgdGltby4pISAiKTsKKworICAgICAgICBzZW50ZW5jZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiU28gd2hhdCEhXHUyMDI5Iik7CisKKyAgICAgICAgc2VudGVuY2VTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlwiQnV0IG5vdyxcIiBoZSBzYWlkLCBcIkkga25vdyFcIiAiKTsKKyAgICAgICAgc2VudGVuY2VTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIkhhcnJpcyB0aHVtYmVkIGRvd24gc2V2ZXJhbCwgaW5jbHVkaW5nIFwiQXdheSBXZSBHb1wiICh3aGljaCBiZWNhbWUgdGhlIGh1Z2Ugc3VjY2VzcyBPa2xhaG9tYSEpLiAiKTsKKyAgICAgICAgc2VudGVuY2VTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIk9uZSBzcGVjaWVzLCBCLiBhbnRocmFjaXMsIGlzIGhpZ2hseSB2aXJ1bGVudC5cbiIpOworICAgICAgICBzZW50ZW5jZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiV29sZiBzYWlkIGFib3V0IFNvdW5kZXI6XCJCZWF1dGlmdWxseSB0aG91Z2h0LW91dCBhbmQgZGlyZWN0ZWQuXCIgIik7CisgICAgICAgIHNlbnRlbmNlU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJIYXZlIHlvdSBldmVyIHNhaWQsIFwiVGhpcyBpcyB3aGVyZSBcdEkgc2hhbGwgbGl2ZVwiPyAiKTsKKyAgICAgICAgc2VudGVuY2VTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIkhlIGFuc3dlcmVkLCBcIllvdSBtYXkgbm90IVwiICIpOworICAgICAgICBzZW50ZW5jZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiQW5vdGhlciBwb3B1bGFyIHNheWluZyBpczogXCJIb3cgZG8geW91IGRvP1wiLiAiKTsKKyAgICAgICAgc2VudGVuY2VTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIllldCBhbm90aGVyIHBvcHVsYXIgc2F5aW5nIGlzOiBcJ0lcJ20gZmluZSB0aGFua3MuXCcgIik7CisgICAgICAgIHNlbnRlbmNlU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJXaGF0IGlzIHRoZSBwcm9wZXIgdXNlIG9mIHRoZSBhYmJyZXZpYXRpb24gcHAuPyAiKTsKKyAgICAgICAgc2VudGVuY2VTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlllcywgSSBhbSBkZWZpbmF0ZWxseSAxMlwiIHRhbGwhISIpOworCisgICAgICAgIGdlbmVyYWxJdGVyYXRvclRlc3Qoc2VudGVuY2VCcmVhaywgc2VudGVuY2VTZWxlY3Rpb25EYXRhKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAYnVnIDQxMTM4MzUKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0QnVnNDExMzgzNSgpIHsKKyAgICAgICAgVmVjdG9yIHNlbnRlbmNlU2VsZWN0aW9uRGF0YSA9IG5ldyBWZWN0b3IoKTsKKworICAgICAgICAvLyB0ZXN0IGZvciBidWcgIzQxMTM4MzU6IFxuIGFuZCBcciBjb3VudCBhcyBzcGFjZXMsIG5vdCBhcyBwYXJhZ3JhcGggYnJlYWtzCisgICAgICAgIHNlbnRlbmNlU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJOb3dccmlzXG50aGVcclxudGltZVxuXHJmb3JcclxyYWxsXHUyMDI5Iik7CisKKyAgICAgICAgZ2VuZXJhbEl0ZXJhdG9yVGVzdChzZW50ZW5jZUJyZWFrLCBzZW50ZW5jZVNlbGVjdGlvbkRhdGEpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEBidWcgNDExMTMzOAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RCdWc0MTExMzM4KCkgeworICAgICAgICBWZWN0b3Igc2VudGVuY2VTZWxlY3Rpb25EYXRhID0gbmV3IFZlY3RvcigpOworCisgICAgICAgIC8vIHRlc3QgZm9yIGJ1ZyAjNDExMTMzODogRG9uJ3QgYnJlYWsgc2VudGVuY2VzIGF0IHRoZSBib3VuZGFyeSBiZXR3ZWVuIENKSworICAgICAgICAvLyBhbmQgb3RoZXIgbGV0dGVycworICAgICAgICBzZW50ZW5jZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHU1NDg3XHU2N2ZmXHVlNTkxXHU1MDE3XHU2MWIzXHU2MGExXHU5NTEwXHU4MTY1OlwiSkFWQVx1ODIxYyIKKyAgICAgICAgICAgICAgICArICJcdTgxNjVcdTdmYzhcdTUxY2VcdTMwNmQsXHUyNDk0XHU1NmQ4XHU0ZWMwXHU2MGIxXHU4NTYwXHU1MWJhIgorICAgICAgICAgICAgICAgICsgIlx1NjExZFx1NTdiNlx1MjUxMFx1NWQ0NlwiLlx1MjAyOSIpOworICAgICAgICBzZW50ZW5jZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHU1NDg3XHU2N2ZmXHVlNTkxXHU1MDE3XHU2MWIzXHU2MGExXHU5NTEwXHU4MTY1XHU5ZGU4IgorICAgICAgICAgICAgICAgICsgIlx1OTdlNEpBVkFcdTgyMWNcdTgxNjVcdTdmYzhcdTUxY2VcdTMwNmRcdWUzMGJcdTI0OTRcdTU2ZDhcdTRlYzAiCisgICAgICAgICAgICAgICAgKyAiXHU2MGIxXHU4NTYwXHU1MWJhXHU2MTFkXHU1N2I2XHUyNTEwXHU1ZDQ2XHU5N2U1XHU3NzUxXHUyMDI5Iik7CisgICAgICAgIHNlbnRlbmNlU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTU0ODdcdTY3ZmZcdWU1OTFcdTUwMTdcdTYxYjNcdTYwYTFcdTk1MTBcdTgxNjVcdTlkZThcdTk3ZTQiCisgICAgICAgICAgICAgICAgKyAiXHU2NDcwXHU4NzkwSkFWQVx1ODIxY1x1ODE2NVx1N2ZjOFx1NTFjZVx1MzA2ZFx1ZTMwYlx1MjQ5NFx1NTZkOCIKKyAgICAgICAgICAgICAgICArICJcdTRlYzBcdTYwYjFcdTg1NjBcdTUxYmFcdTYxMWRcdTU3YjZcdTI1MTBcdTVkNDZcdTk3ZTVcdTc3NTFcdTIwMjkiKTsKKyAgICAgICAgc2VudGVuY2VTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIkhlIHNhaWQsIFwiSSBjYW4gZ28gdGhlcmUuXCJcdTIwMjkiKTsKKworICAgICAgICBnZW5lcmFsSXRlcmF0b3JUZXN0KHNlbnRlbmNlQnJlYWssIHNlbnRlbmNlU2VsZWN0aW9uRGF0YSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQGJ1ZyA0MTE3NTU0CisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEJ1ZzQxMTc1NTRTZW50ZW5jZXMoKSB7CisgICAgICAgIFZlY3RvciBzZW50ZW5jZVNlbGVjdGlvbkRhdGEgPSBuZXcgVmVjdG9yKCk7CisKKyAgICAgICAgLy8gVHJlYXQgZnVsbHdpZHRoIHZhcmlhbnRzIG9mIC4hPyB0aGUgc2FtZSBhcyB0aGVpcgorICAgICAgICAvLyBub3JtYWwgY291bnRlcnBhcnRzCisgICAgICAgIHNlbnRlbmNlU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJJIGtub3cgSSdtIHJpZ2h0XHVmZjBlICIpOworICAgICAgICBzZW50ZW5jZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiUmlnaHRcdWZmMWYgIik7CisgICAgICAgIHNlbnRlbmNlU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJSaWdodFx1ZmYwMSAiKTsKKworICAgICAgICAvLyBEb24ndCBicmVhayBzZW50ZW5jZXMgYXQgYm91bmRhcnkgYmV0d2VlbiBDSksgYW5kIGRpZ2l0cworICAgICAgICBzZW50ZW5jZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHU1NDg3XHU2N2ZmXHVlNTkxXHU1MDE3XHU2MWIzXHU2MGExXHU5NTEwXHU4MTY1XHU5ZGU4IgorICAgICAgICAgICAgICAgICsgIlx1OTdlNDg4ODhcdTgyMWNcdTgxNjVcdTdmYzhcdTUxY2VcdTMwNmRcdWUzMGJcdTI0OTRcdTU2ZDhcdTRlYzAiCisgICAgICAgICAgICAgICAgKyAiXHU2MGIxXHU4NTYwXHU1MWJhXHU2MTFkXHU1N2I2XHUyNTEwXHU1ZDQ2XHU5N2U1XHU3NzUxXHUyMDI5Iik7CisKKyAgICAgICAgLy8gQnJlYWsgc2VudGVuY2UgYmV0d2VlbiBhIHNlbnRlbmNlIHRlcm1pbmF0b3IgYW5kCisgICAgICAgIC8vIG9wZW5pbmcgcHVuY3R1YXRpb24KKyAgICAgICAgc2VudGVuY2VTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIm5vPyIpOworICAgICAgICBzZW50ZW5jZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiKHllcykiKTsKKworICAgICAgICBnZW5lcmFsSXRlcmF0b3JUZXN0KHNlbnRlbmNlQnJlYWssIHNlbnRlbmNlU2VsZWN0aW9uRGF0YSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQGJ1ZyA0MTU4MzgxCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEJ1ZzQxNTgzODEoKSB7CisgICAgICAgIFZlY3RvciBzZW50ZW5jZVNlbGVjdGlvbkRhdGEgPSBuZXcgVmVjdG9yKCk7CisKKyAgICAgICAgLy8gRG9uJ3QgYnJlYWsgc2VudGVuY2UgYWZ0ZXIgcGVyaW9kIGlmIGl0IGlzbid0IGZvbGxvd2VkIGJ5IGEgc3BhY2UKKyAgICAgICAgc2VudGVuY2VTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlRlc3QgPGNvZGU+RmxhZ3MuRmxhZzwvY29kZT4gY2xhc3MuICAiKTsKKyAgICAgICAgc2VudGVuY2VTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIkFub3RoZXIgdGVzdC5cdTIwMjkiKTsKKworICAgICAgICAvLyBObyBicmVha3Mgd2hlbiB0aGVyZSBhcmUgbm8gdGVybWluYXRvcnMgYXJvdW5kCisgICAgICAgIHNlbnRlbmNlU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCI8UD5Qcm92aWRlcyBhIHNldCBvZiAiCisgICAgICAgICAgICAgICAgKyAiJnF1b3Q7bGlnaHR3ZWlnaHQmcXVvdDsgKGFsbC1qYXZhPEZPTlQgU0laRT1cIi0yXCI+PFNVUD5UTSIKKyAgICAgICAgICAgICAgICArICI8L1NVUD48L0ZPTlQ+IGxhbmd1YWdlKSBjb21wb25lbnRzIHRoYXQsICIKKyAgICAgICAgICAgICAgICArICJ0byB0aGUgbWF4aW11bSBkZWdyZWUgcG9zc2libGUsIHdvcmsgdGhlIHNhbWUgb24gYWxsIHBsYXRmb3Jtcy4gICIpOworICAgICAgICBzZW50ZW5jZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiQW5vdGhlciB0ZXN0Llx1MjAyOSIpOworCisgICAgICAgIGdlbmVyYWxJdGVyYXRvclRlc3Qoc2VudGVuY2VCcmVhaywgc2VudGVuY2VTZWxlY3Rpb25EYXRhKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAYnVnIDQxNDMwNzEKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0QnVnNDE0MzA3MSgpIHsKKyAgICAgICAgVmVjdG9yIHNlbnRlbmNlU2VsZWN0aW9uRGF0YSA9IG5ldyBWZWN0b3IoKTsKKworICAgICAgICAvLyBNYWtlIHN1cmUgc2VudGVuY2VzIHRoYXQgZW5kIHdpdGggZGlnaXRzIHdvcmsgcmlnaHQKKyAgICAgICAgc2VudGVuY2VTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlRvZGF5IGlzIHRoZSAyN3RoIG9mIE1heSwgMTk5OC4gICIpOworICAgICAgICBzZW50ZW5jZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiVG9tb3Jyb3cgd2lsbCBiZSAyOCBNYXkgMTk5OC4gICIpOworICAgICAgICBzZW50ZW5jZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiVGhlIGRheSBhZnRlciB3aWxsIGJlIHRoZSAzMHRoLlx1MjAyOSIpOworCisgICAgICAgIGdlbmVyYWxJdGVyYXRvclRlc3Qoc2VudGVuY2VCcmVhaywgc2VudGVuY2VTZWxlY3Rpb25EYXRhKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAYnVnIDQxNTI0MTYKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0QnVnNDE1MjQxNigpIHsKKyAgICAgICAgVmVjdG9yIHNlbnRlbmNlU2VsZWN0aW9uRGF0YSA9IG5ldyBWZWN0b3IoKTsKKworICAgICAgICAvLyBNYWtlIHN1cmUgc2VudGVuY2VzIGVuZGluZyB3aXRoIGEgY2FwaXRhbCBsZXR0ZXIgYXJlIHRyZWF0ZWQgY29ycmVjdGx5CisgICAgICAgIHNlbnRlbmNlU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJUaGUgdHlwZSBvZiBhbGwgcHJpbWl0aXZlICIKKyAgICAgICAgICAgICAgICArICI8Y29kZT5ib29sZWFuPC9jb2RlPiB2YWx1ZXMgYWNjZXNzZWQgaW4gdGhlIHRhcmdldCBWTS4gICIpOworICAgICAgICBzZW50ZW5jZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiQ2FsbHMgdG8geHh4IHdpbGwgcmV0dXJuIGFuICIKKyAgICAgICAgICAgICAgICArICJpbXBsZW1lbnRvciBvZiB0aGlzIGludGVyZmFjZS5cdTIwMjkiKTsKKworICAgICAgICBnZW5lcmFsSXRlcmF0b3JUZXN0KHNlbnRlbmNlQnJlYWssIHNlbnRlbmNlU2VsZWN0aW9uRGF0YSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQGJ1ZyA0MTUyMTE3CisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEJ1ZzQxNTIxMTcoKSB7CisgICAgICAgIFZlY3RvciBzZW50ZW5jZVNlbGVjdGlvbkRhdGEgPSBuZXcgVmVjdG9yKCk7CisKKyAgICAgICAgLy8gTWFrZSBzdXJlIHNlbnRlbmNlIGJyZWFraW5nIGlzIGhhbmRsaW5nIHB1bmN0dWF0aW9uIGNvcnJlY3RseQorICAgICAgICAvLyBbQ09VTEQgTk9UIFJFUFJPRFVDRSBUSElTIEJVRywgQlVUIFRFU1QgSVMgSEVSRSBUTyBNQUtFIFNVUkUKKyAgICAgICAgLy8gSVQgRE9FU04nVCBDUk9QIFVQXQorICAgICAgICBzZW50ZW5jZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiQ29uc3RydWN0cyBhIHJhbmRvbWx5IGdlbmVyYXRlZCAiCisgICAgICAgICAgICAgICAgKyAiQmlnSW50ZWdlciwgdW5pZm9ybWx5IGRpc3RyaWJ1dGVkIG92ZXIgdGhlIHJhbmdlIDx0dD4wPC90dD4gIgorICAgICAgICAgICAgICAgICsgInRvIDx0dD4oMjxzdXA+bnVtQml0czwvc3VwPiAtIDEpPC90dD4sIGluY2x1c2l2ZS4gICIpOworICAgICAgICBzZW50ZW5jZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiVGhlIHVuaWZvcm1pdHkgb2YgdGhlIGRpc3RyaWJ1dGlvbiAiCisgICAgICAgICAgICAgICAgKyAiYXNzdW1lcyB0aGF0IGEgZmFpciBzb3VyY2Ugb2YgcmFuZG9tIGJpdHMgaXMgcHJvdmlkZWQgaW4gIgorICAgICAgICAgICAgICAgICsgIjx0dD5ybmQ8L3R0Pi4gICIpOworICAgICAgICBzZW50ZW5jZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiTm90ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgYWx3YXlzICIKKyAgICAgICAgICAgICAgICArICJjb25zdHJ1Y3RzIGEgbm9uLW5lZ2F0aXZlIEJpZ0ludGVnZXIuXHUyMDI5Iik7CisKKyAgICAgICAgZ2VuZXJhbEl0ZXJhdG9yVGVzdChzZW50ZW5jZUJyZWFrLCBzZW50ZW5jZVNlbGVjdGlvbkRhdGEpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RMaW5lQnJlYWsoKSB7CisgICAgICAgIFZlY3RvciBsaW5lU2VsZWN0aW9uRGF0YSA9IG5ldyBWZWN0b3IoKTsKKworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJNdWx0aS0iKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiTGV2ZWwgIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoImV4YW1wbGUgIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIm9mICIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJhICIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJzZW1pLSIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJpZGlvdGljICIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJub24tIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoInNlbnNpY2FsICIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIobm9uLSIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJpbXBvcnRhbnQpICIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJzZW50ZW5jZS4gIik7CisKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiSGkgICIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJIZWxsbyAiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiSG93XG4iKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiYXJlXHIiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgieW91XHUyMDI4Iik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoImZpbmUuXHQiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiZ29vZC4gICIpOworCisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIk5vd1xyIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoImlzXG4iKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgidGhlXHJcbiIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJ0aW1lXG4iKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHIiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiZm9yXHIiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHIiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiYWxsIik7CisKKyAgICAgICAgZ2VuZXJhbEl0ZXJhdG9yVGVzdChsaW5lQnJlYWssIGxpbmVTZWxlY3Rpb25EYXRhKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAYnVnIDQwNjgxMzMKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0QnVnNDA2ODEzMygpIHsKKyAgICAgICAgVmVjdG9yIGxpbmVTZWxlY3Rpb25EYXRhID0gbmV3IFZlY3RvcigpOworCisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1OTZmNiIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTRlMDBcdTMwMDIiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHU0ZThjXHUzMDAxIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1NGUwOVx1MzAwMlx1MzAwMSIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTU2ZGJcdTMwMDFcdTMwMDJcdTMwMDEiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHU0ZTk0LCIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTUxNmQuIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1NGUwMy5cdTMwMDEsXHUzMDAyIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1NTE2YiIpOworCisgICAgICAgIGdlbmVyYWxJdGVyYXRvclRlc3QobGluZUJyZWFrLCBsaW5lU2VsZWN0aW9uRGF0YSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQGJ1ZyA0MDg2MDUyCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEJ1ZzQwODYwNTIoKSB7CisgICAgICAgIFZlY3RvciBsaW5lU2VsZWN0aW9uRGF0YSA9IG5ldyBWZWN0b3IoKTsKKworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJmb29cdTAwYTBiYXIgIik7CisvLyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiZm9vXHVmZWZmYmFyIik7CisKKyAgICAgICAgZ2VuZXJhbEl0ZXJhdG9yVGVzdChsaW5lQnJlYWssIGxpbmVTZWxlY3Rpb25EYXRhKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAYnVnIDQwOTc5MjAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0QnVnNDA5NzkyMCgpIHsKKyAgICAgICAgVmVjdG9yIGxpbmVTZWxlY3Rpb25EYXRhID0gbmV3IFZlY3RvcigpOworCisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoImRvZywiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiY2F0LCIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJtb3VzZSAiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiKG9uZSkiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiKHR3bylcbiIpOworCisgICAgICAgIGdlbmVyYWxJdGVyYXRvclRlc3QobGluZUJyZWFrLCBsaW5lU2VsZWN0aW9uRGF0YSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQGJ1ZyA0MDM1MjY2CisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEJ1ZzQwMzUyNjYoKSB7CisgICAgICAgIFZlY3RvciBsaW5lU2VsZWN0aW9uRGF0YSA9IG5ldyBWZWN0b3IoKTsKKworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJUaGUgIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoImJhbGFuY2UgIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoImlzICIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIkLTIzLDQ1Ni43OCwgIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIm5vdCAiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiLSQzMiw0NTYuNzghXG4iKTsKKworICAgICAgICBnZW5lcmFsSXRlcmF0b3JUZXN0KGxpbmVCcmVhaywgbGluZVNlbGVjdGlvbkRhdGEpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEBidWcgNDA5ODQ2NworICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RCdWc0MDk4NDY3TGluZXMoKSB7CisgICAgICAgIFZlY3RvciBsaW5lU2VsZWN0aW9uRGF0YSA9IG5ldyBWZWN0b3IoKTsKKworICAgICAgICAvLyBXaGF0IGZvbGxvd3MgaXMgYSBzdHJpbmcgb2YgS29yZWFuIGNoYXJhY3RlcnMgKEkgZm91bmQgaXQgaW4gdGhlIFllbGxvdyBQYWdlcworICAgICAgICAvLyBhZCBmb3IgdGhlIEtvcmVhbiBQcmVzYnl0ZXJpYW4gQ2h1cmNoIG9mIFNhbiBGcmFuY2lzY28sIGFuZCBJIGhvcGUgSSB0cmFuc2NyaWJlZAorICAgICAgICAvLyBpdCBjb3JyZWN0bHkpLCBmaXJzdCBhcyBwcmVjb21wb3NlZCBzeWxsYWJsZXMsIGFuZCB0aGVuIGFzIGNvbmpvaW5pbmcgamFtby4KKyAgICAgICAgLy8gQm90aCBzZXF1ZW5jZXMgc2hvdWxkIGJlIHNlbWFudGljYWxseSBpZGVudGljYWwgYW5kIGJyZWFrIHRoZSBzYW1lIHdheS4KKyAgICAgICAgLy8gcHJlY29tcG9zZWQgc3lsbGFibGVzLi4uCisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1YzBjMVx1ZDU2ZCAiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHVkNTVjXHVjNzc4ICIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdWM1ZjBcdWQ1NjkgIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1YzdhNVx1Yjg1Y1x1YWQ1MFx1ZDY4YyAiKTsKKyAgICAgICAgLy8gY29uam9pbmluZyBqYW1vLi4uCisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MTEwOVx1MTE2MVx1MTFiY1x1MTExMlx1MTE2MVx1MTFiYyAiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUxMTEyXHUxMTYxXHUxMWFiXHUxMTBiXHUxMTc1XHUxMWFiICIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTExMGJcdTExNjdcdTExYWJcdTExMTJcdTExNjFcdTExYjggIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MTEwY1x1MTE2MVx1MTFiY1x1MTEwNVx1MTE2OVx1MTEwMFx1MTE2ZFx1MTExMlx1MTE2YyIpOworCisgICAgICAgIGdlbmVyYWxJdGVyYXRvclRlc3QobGluZUJyZWFrLCBsaW5lU2VsZWN0aW9uRGF0YSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdFRoYWlMaW5lQnJlYWsoKSB7CisgICAgICAgIFZlY3RvciBsaW5lU2VsZWN0aW9uRGF0YSA9IG5ldyBWZWN0b3IoKTsKKworICAgICAgICAvLyBcdTBlMmYtLSB0aGUgVGhhaSBwYWl5YW5ub2kgY2hhcmFjdGVyLS0gaXNuJ3QgYSBsZXR0ZXIuICBJdCdzIGEgc3ltYm9sIHRoYXQKKyAgICAgICAgLy8gcmVwcmVzZW50cyBlbGlkZWQgbGV0dGVycyBhdCB0aGUgZW5kIG9mIGEgbG9uZyB3b3JkLiAgSXQgc2hvdWxkIGJlIGJvdW5kIHRvCisgICAgICAgIC8vIHRoZSBlbmQgb2YgdGhlIHdvcmQgYW5kIG5vdCB0cmVhdGVkIGFzIGFuIGluZGVwZW5kZW50IHB1bmN0dWF0aW9uIG1hcmsuCisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MGUyYVx1MGUxNlx1MGUzMlx1MGUxOVx1MGUzNVx1MGUyZiIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTBlMDhcdTBlMzAiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUwZTIzXHUwZTMwXHUwZTE0XHUwZTIxIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MGU0MFx1MGUwOFx1MGU0OVx1MGUzMiIpOworLy8gICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MGUyYlx1MGUxOVx1MGU0OVx1MGUzMiIpOworLy8gICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MGUxN1x1MGUzNVx1MGU0OCIpOworLy8gSSB0aGluayB0aGUgYWJvdmUgdHdvIGxpbmVzIGFyZSB0aGUgcHJlZmVycmVkIHJlYWRpbmcgb2YgdGhpcyB0ZXh0LCBidXQgb3VyIGN1cnJlbnQKKy8vIGRpY3Rpb25hcnkgeWllbGRzIHRoZSBmb2xsb3dpbmc6CitsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTBlMmJcdTBlMTZcdTBlNDlcdTBlMzJcdTBlMTdcdTBlMzVcdTBlNDgiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUwZTJkXHUwZTJkXHUwZTAxIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MGUyMVx1MGUzMiIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTBlNDBcdTBlMjNcdTBlNDhcdTBlMDciKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUwZTIzXHUwZTMwXHUwZTFhXHUwZTMyXHUwZTIyIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MGUyZFx1MGUyMlx1MGU0OFx1MGUzMlx1MGUwNyIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTBlNDBcdTBlMTVcdTBlNDdcdTBlMjEiKTsKKworICAgICAgICAvLyB0aGUgb25lIHRpbWUgd2hlcmUgdGhlIHBhaXlhbm5vaSBvY2N1cnMgc29tZXdoZXJlIG90aGVyIHRoYW4gYXQgdGhlIGVuZAorICAgICAgICAvLyBvZiBhIHdvcmQgaXMgaW4gdGhlIFRoYWkgYWJicmV2YXRpb24gZm9yICJldGMuIiwgd2hpY2ggYm90aCBiZWdpbnMgYW5kCisgICAgICAgIC8vIGVuZHMgd2l0aCBhIHBhaXlhbm5vaQorICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTBlMmZcdTBlMjVcdTBlMmYiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUwZTE3XHUwZTM1XHUwZTQ4Iik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MGUxOVx1MGUzMVx1MGU0OVx1MGUxOSIpOworCisgICAgICAgIGdlbmVyYWxJdGVyYXRvclRlc3QoQnJlYWtJdGVyYXRvci5nZXRMaW5lSW5zdGFuY2UobmV3IExvY2FsZSgidGgiLCAiIiwgIiIpKSwKKyAgICAgICAgICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdE1peGVkVGhhaUxpbmVCcmVhaygpIHsKKyAgICAgICAgVmVjdG9yIGxpbmVTZWxlY3Rpb25EYXRhID0gbmV3IFZlY3RvcigpOworCisgICAgICAgIC8vIEFyYWJpYyBudW1lcmFscyBzaG91bGQgYWx3YXlzIGJlIHNlcGFyYXRlZCBmcm9tIHN1cnJvdW5kaW5nIFRoYWkgdGV4dAorLyoKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUwZTA0XHUwZTQ4XHUwZTMyIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MGU0MFx1MGUwN1x1MGUzNFx1MGUxOSIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTBlMWFcdTBlMzJcdTBlMTciKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUwZTQxXHUwZTE1XHUwZTMwIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MGUyM1x1MGUzMFx1MGUxNFx1MGUzMVx1MGUxYSIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIzOSIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTBlMWFcdTBlMzJcdTBlMTcgIik7CisKKyAgICAgICAgLy8gd29yZHMgaW4gbm9uLVRoYWkgc2NyaXB0cyBzaG91bGQgYWx3YXlzIGJlIHNlcGFyYXRlZCBmcm9tIHN1cnJvdW5kaW5nIFRoYWkgdGV4dAorICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTBlMTdcdTBlMTQiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUwZTJhXHUwZTJkXHUwZTFhIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIkphdmEiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUwZTFhXHUwZTE5Iik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MGU0MFx1MGUwNFx1MGUyM1x1MGUzN1x1MGU0OFx1MGUyZFx1MGUwNyIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTBlNDRcdTBlMmRcdTBlMWFcdTBlMzVcdTBlNDBcdTBlMmRcdTBlNDdcdTBlMjEgIik7CisKKyAgICAgICAgLy8gVGhhaSBudW1lcmFscyBzaG91bGQgYWx3YXlzIGJlIHNlcGFyYXRlZCBmcm9tIHRoZSB0ZXh0IHN1cnJvdW5kaW5nIHRoZW0KKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUwZTA0XHUwZTQ4XHUwZTMyIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MGU0MFx1MGUwN1x1MGUzNFx1MGUxOSIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTBlMWFcdTBlMzJcdTBlMTciKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUwZTQxXHUwZTE1XHUwZTMwIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MGUyM1x1MGUzMFx1MGUxNFx1MGUzMVx1MGUxYSIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTBlNTNcdTBlNTkiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUwZTFhXHUwZTMyXHUwZTE3ICIpOworCisgICAgICAgIC8vIFRoYWkgdGV4dCBzaG91bGQgaW50ZXJhY3QgY29ycmVjdGx5IHdpdGggcHVuY3R1YXRpb24gYW5kIHN5bWJvbHMKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUwZTQ0XHUwZTJkXHUwZTFhXHUwZTM1XHUwZTQwXHUwZTJkXHUwZTQ3XHUwZTIxIik7CisvLyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiKFx1MGUxYlx1MGUyM1x1MGUzMFx1MGU0MFx1MGUxN1x1MGUyOCIpOworLy8gICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MGU0NFx1MGUxN1x1MGUyMikiKTsKKy8vIEkgdGhpbmsgdGhlIGFib3ZlIGxpbmVzIHJlcHJlc2VudCB0aGUgcHJlZmVycmVkIHJlYWRpbmcgZm9yIHRoaXMgdGV4dCwgYnV0IG91ciBjdXJyZW50CisvLyBkaWN0aW9uYXJ5IGZpbGUgeWllbGRzIHRoZSBmb2xsb3dpbmc6CitsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIoXHUwZTFiXHUwZTIzXHUwZTMwXHUwZTQwXHUwZTE3XHUwZTI4XHUwZTQ0XHUwZTE3XHUwZTIyKSIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTBlMDhcdTBlMzNcdTBlMDFcdTBlMzFcdTBlMTQiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUwZTQwXHUwZTFiXHUwZTM0XHUwZTE0Iik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MGUxNVx1MGUzMVx1MGUyN1wiIik7CisqLworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTBlMmVcdTBlMzJcdTBlMjNcdTBlNGNcdTBlMTRcdTBlMTRcdTBlMzRcdTBlMmFcdTBlMDFcdTBlNGNcIiIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTBlMjNcdTBlMzhcdTBlNDhcdTBlMTkiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUwZTQzXHUwZTJiXHUwZTIxXHUwZTQ4Iik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MGU0MFx1MGUxNFx1MGUzN1x1MGUyZFx1MGUxOVx1MGUyMVx1MGUzNC4iKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUwZTIyLiIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTBlMTlcdTBlMzVcdTBlNDkiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUwZTIzXHUwZTMyXHUwZTA0XHUwZTMyIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIiQyMDAiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUwZTQwXHUwZTE3XHUwZTQ4XHUwZTMyIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MGUxOVx1MGUzMVx1MGU0OVx1MGUxOSAiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiKFwiXHUwZTJlXHUwZTMyXHUwZTIzXHUwZTRjXHUwZTE0XHUwZTE0XHUwZTM0XHUwZTJhXHUwZTAxXHUwZTRjXCIpLiIpOworCisgICAgICAgIGdlbmVyYWxJdGVyYXRvclRlc3QoQnJlYWtJdGVyYXRvci5nZXRMaW5lSW5zdGFuY2UobmV3IExvY2FsZSgidGgiLCAiIiwgIiIpKSwKKyAgICAgICAgICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdE1haXlhbW9rKCkgeworICAgICAgICBWZWN0b3IgbGluZVNlbGVjdGlvbkRhdGEgPSBuZXcgVmVjdG9yKCk7CisKKyAgICAgICAgLy8gdGhlIFRoYWkgbWFpeWFtb2sgY2hhcmFjdGVyIGlzIGEgc2hvcnRoYW5kIHN5bWJvbCB0aGF0IG1lYW5zICJyZXBlYXQgdGhlIHByZXZpb3VzCisgICAgICAgIC8vIHdvcmQiLiAgSW5zdGVhZCBvZiBhcHBlYXJpbmcgYXMgYSB3b3JkIHVudG8gaXRzZWxmLCBob3dldmVyLCBpdCdzIGtlcHQgdG9nZXRoZXIKKyAgICAgICAgLy8gd2l0aCB0aGUgd29yZCBiZWZvcmUgaXQKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUwZTQ0XHUwZTFiXHUwZTQ2Iik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MGUyMVx1MGUzMlx1MGU0NiIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTBlMjNcdTBlMzBcdTBlMmJcdTBlMjdcdTBlNDhcdTBlMzJcdTBlMDciKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUwZTAxXHUwZTIzXHUwZTM4XHUwZTA3XHUwZTQwXHUwZTE3XHUwZTFlIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MGU0MVx1MGUyNVx1MGUzMCIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTBlNDBcdTBlMDNcdTBlMzVcdTBlMjJcdTBlMDciKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUwZTQzXHUwZTJiXHUwZTIxXHUwZTQ4Iik7CisKKyAgICAgICAgZ2VuZXJhbEl0ZXJhdG9yVGVzdChCcmVha0l0ZXJhdG9yLmdldExpbmVJbnN0YW5jZShuZXcgTG9jYWxlKCJ0aCIsICIiLCAiIikpLAorICAgICAgICAgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAYnVnIDQxMTc1NTQKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0QnVnNDExNzU1NExpbmVzKCkgeworICAgICAgICBWZWN0b3IgbGluZVNlbGVjdGlvbkRhdGEgPSBuZXcgVmVjdG9yKCk7CisKKyAgICAgICAgLy8gRnVsbHdpZHRoIC4hPyBzaG91bGQgYmUgdHJlYXRlZCBhcyBwb3N0SndyZAorICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTRlMDFcdWZmMGUiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHU0ZTAyXHVmZjAxIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1NGUwM1x1ZmYxZiIpOworCisgICAgICAgIGdlbmVyYWxJdGVyYXRvclRlc3QobGluZUJyZWFrLCBsaW5lU2VsZWN0aW9uRGF0YSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdExldHRlcnNBbmREaWdpdHMoKSB7CisgICAgICAgIC8vIGEgY2hhcmFjdGVyIHNlcXVlbmNlIHN1Y2ggYXMgIlgxMSIgb3IgIjMwRjMiIG9yICJuYXRpdmUyYXNjaWkiIHNob3VsZAorICAgICAgICAvLyBiZSBrZXB0IHRvZ2V0aGVyIGFzIGEgc2luZ2xlIHdvcmQKKyAgICAgICAgVmVjdG9yIGxpbmVTZWxlY3Rpb25EYXRhID0gbmV3IFZlY3RvcigpOworCisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlgxMSAiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiMzBGMyAiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgibmF0aXZlMmFzY2lpIik7CisKKyAgICAgICAgZ2VuZXJhbEl0ZXJhdG9yVGVzdChsaW5lQnJlYWssIGxpbmVTZWxlY3Rpb25EYXRhKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAYnVnIDQyMTc3MDMKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0QnVnNDIxNzcwMygpIHsKKyAgICAgICAgVmVjdG9yIGxpbmVTZWxlY3Rpb25EYXRhID0gbmV3IFZlY3RvcigpOworCisgICAgICAgIC8vIFRoZXJlIHNob3VsZG4ndCBiZSBhIGxpbmUgYnJlYWsgYmV0d2VlbiBzZW50ZW5jZS1lbmRpbmcgcHVuY3R1YXRpb24KKyAgICAgICAgLy8gYW5kIGEgY2xvc2luZyBxdW90ZQorICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJIZSAiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgic2FpZCAiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXCJHbyFcIiAgIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIkkgIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIndlbnQuICAiKTsKKworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJIYXNodGFibGUkRW51bWVyYXRpb24gIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoImdldFRleHQoKS4iKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiZ2V0SW5kZXgoKSIpOworCisgICAgICAgIGdlbmVyYWxJdGVyYXRvclRlc3QobGluZUJyZWFrLCBsaW5lU2VsZWN0aW9uRGF0YSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIGdyYXZlUyA9ICJTXHUwMzAwIjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgYWN1dGVCZWxvd0kgPSAiaVx1MDMxNyI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIGFjdXRlRSA9ICJlXHUwMzAxIjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgY2lyY3VtZmxleEEgPSAiYVx1MDMwMiI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIHRpbGRlRSA9ICJlXHUwMzAzIjsKKworICAgIHB1YmxpYyB2b2lkIFRlc3RDaGFyYWN0ZXJCcmVhaygpIHsKKyAgICAgICAgVmVjdG9yIGNoYXJhY3RlclNlbGVjdGlvbkRhdGEgPSBuZXcgVmVjdG9yKCk7CisKKyAgICAgICAgY2hhcmFjdGVyU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KGdyYXZlUyk7CisgICAgICAgIGNoYXJhY3RlclNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudChhY3V0ZUJlbG93SSk7CisgICAgICAgIGNoYXJhY3RlclNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgibSIpOworICAgICAgICBjaGFyYWN0ZXJTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoInAiKTsKKyAgICAgICAgY2hhcmFjdGVyU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJsIik7CisgICAgICAgIGNoYXJhY3RlclNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudChhY3V0ZUUpOworICAgICAgICBjaGFyYWN0ZXJTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgICAgY2hhcmFjdGVyU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJzIik7CisgICAgICAgIGNoYXJhY3RlclNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudChjaXJjdW1mbGV4QSk7CisgICAgICAgIGNoYXJhY3RlclNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgibSIpOworICAgICAgICBjaGFyYWN0ZXJTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoInAiKTsKKyAgICAgICAgY2hhcmFjdGVyU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJsIik7CisgICAgICAgIGNoYXJhY3RlclNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCh0aWxkZUUpOworICAgICAgICBjaGFyYWN0ZXJTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIi4iKTsKKyAgICAgICAgY2hhcmFjdGVyU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJ3Iik7CisgICAgICAgIGNoYXJhY3RlclNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudChjaXJjdW1mbGV4QSk7CisgICAgICAgIGNoYXJhY3RlclNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgidyIpOworICAgICAgICBjaGFyYWN0ZXJTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoImEiKTsKKyAgICAgICAgY2hhcmFjdGVyU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJmIik7CisgICAgICAgIGNoYXJhY3RlclNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgicSIpOworICAgICAgICBjaGFyYWN0ZXJTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlxuIik7CisgICAgICAgIGNoYXJhY3RlclNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHIiKTsKKyAgICAgICAgY2hhcmFjdGVyU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcclxuIik7CisgICAgICAgIGNoYXJhY3RlclNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXG4iKTsKKworICAgICAgICBnZW5lcmFsSXRlcmF0b3JUZXN0KGNoYXJhY3RlckJyZWFrLCBjaGFyYWN0ZXJTZWxlY3Rpb25EYXRhKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAYnVnIDQwOTg0NjcKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0QnVnNDA5ODQ2N0NoYXJhY3RlcnMoKSB7CisgICAgICAgIFZlY3RvciBjaGFyYWN0ZXJTZWxlY3Rpb25EYXRhID0gbmV3IFZlY3RvcigpOworCisgICAgICAgIC8vIFdoYXQgZm9sbG93cyBpcyBhIHN0cmluZyBvZiBLb3JlYW4gY2hhcmFjdGVycyAoSSBmb3VuZCBpdCBpbiB0aGUgWWVsbG93IFBhZ2VzCisgICAgICAgIC8vIGFkIGZvciB0aGUgS29yZWFuIFByZXNieXRlcmlhbiBDaHVyY2ggb2YgU2FuIEZyYW5jaXNjbywgYW5kIEkgaG9wZSBJIHRyYW5zY3JpYmVkCisgICAgICAgIC8vIGl0IGNvcnJlY3RseSksIGZpcnN0IGFzIHByZWNvbXBvc2VkIHN5bGxhYmxlcywgYW5kIHRoZW4gYXMgY29uam9pbmluZyBqYW1vLgorICAgICAgICAvLyBCb3RoIHNlcXVlbmNlcyBzaG91bGQgYmUgc2VtYW50aWNhbGx5IGlkZW50aWNhbCBhbmQgYnJlYWsgdGhlIHNhbWUgd2F5LgorICAgICAgICAvLyBwcmVjb21wb3NlZCBzeWxsYWJsZXMuLi4KKyAgICAgICAgY2hhcmFjdGVyU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdWMwYzEiKTsKKyAgICAgICAgY2hhcmFjdGVyU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdWQ1NmQiKTsKKyAgICAgICAgY2hhcmFjdGVyU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICAgIGNoYXJhY3RlclNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHVkNTVjIik7CisgICAgICAgIGNoYXJhY3RlclNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHVjNzc4Iik7CisgICAgICAgIGNoYXJhY3RlclNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgICBjaGFyYWN0ZXJTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1YzVmMCIpOworICAgICAgICBjaGFyYWN0ZXJTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1ZDU2OSIpOworICAgICAgICBjaGFyYWN0ZXJTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgICAgY2hhcmFjdGVyU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdWM3YTUiKTsKKyAgICAgICAgY2hhcmFjdGVyU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdWI4NWMiKTsKKyAgICAgICAgY2hhcmFjdGVyU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdWFkNTAiKTsKKyAgICAgICAgY2hhcmFjdGVyU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdWQ2OGMiKTsKKyAgICAgICAgY2hhcmFjdGVyU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICAgIC8vIGNvbmpvaW5pbmcgamFtby4uLgorICAgICAgICBjaGFyYWN0ZXJTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MTEwOVx1MTE2MVx1MTFiYyIpOworICAgICAgICBjaGFyYWN0ZXJTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MTExMlx1MTE2MVx1MTFiYyIpOworICAgICAgICBjaGFyYWN0ZXJTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgICAgY2hhcmFjdGVyU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTExMTJcdTExNjFcdTExYWIiKTsKKyAgICAgICAgY2hhcmFjdGVyU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTExMGJcdTExNzVcdTExYWIiKTsKKyAgICAgICAgY2hhcmFjdGVyU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICAgIGNoYXJhY3RlclNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUxMTBiXHUxMTY3XHUxMWFiIik7CisgICAgICAgIGNoYXJhY3RlclNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUxMTEyXHUxMTYxXHUxMWI4Iik7CisgICAgICAgIGNoYXJhY3RlclNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgICBjaGFyYWN0ZXJTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MTEwY1x1MTE2MVx1MTFiYyIpOworICAgICAgICBjaGFyYWN0ZXJTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MTEwNVx1MTE2OSIpOworICAgICAgICBjaGFyYWN0ZXJTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MTEwMFx1MTE2ZCIpOworICAgICAgICBjaGFyYWN0ZXJTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MTExMlx1MTE2YyIpOworCisgICAgICAgIGdlbmVyYWxJdGVyYXRvclRlc3QoY2hhcmFjdGVyQnJlYWssIGNoYXJhY3RlclNlbGVjdGlvbkRhdGEpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RUaXRsZUJyZWFrKCkKKyAgICB7CisgICAgICAgIFZlY3RvciB0aXRsZURhdGEgPSBuZXcgVmVjdG9yKCk7CisgICAgICAgIHRpdGxlRGF0YS5hZGRFbGVtZW50KCIgICAiKTsKKyAgICAgICAgdGl0bGVEYXRhLmFkZEVsZW1lbnQoIlRoaXMgIik7CisgICAgICAgIHRpdGxlRGF0YS5hZGRFbGVtZW50KCJpcyAiKTsKKyAgICAgICAgdGl0bGVEYXRhLmFkZEVsZW1lbnQoImEgIik7CisgICAgICAgIHRpdGxlRGF0YS5hZGRFbGVtZW50KCJzaW1wbGUgIik7CisgICAgICAgIHRpdGxlRGF0YS5hZGRFbGVtZW50KCJzYW1wbGUgIik7CisgICAgICAgIHRpdGxlRGF0YS5hZGRFbGVtZW50KCJzZW50ZW5jZS4gIik7CisgICAgICAgIHRpdGxlRGF0YS5hZGRFbGVtZW50KCJUaGlzICIpOworCisgICAgICAgIGdlbmVyYWxJdGVyYXRvclRlc3QodGl0bGVCcmVhaywgdGl0bGVEYXRhKTsKKyAgICB9CisKKworCisgICAgLyoKKyAgICAgKiBAYnVnIDQxNTMwNzIKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0QnVnNDE1MzA3MigpIHsKKyAgICAgICAgQnJlYWtJdGVyYXRvciBpdGVyID0gQnJlYWtJdGVyYXRvci5nZXRXb3JkSW5zdGFuY2UoKTsKKyAgICAgICAgU3RyaW5nIHN0ciA9ICIuLi5IZWxsbywgV29ybGQhLi4uIjsKKyAgICAgICAgaW50IGJlZ2luID0gMzsKKyAgICAgICAgaW50IGVuZCA9IHN0ci5sZW5ndGgoKSAtIDM7CisgICAgICAgIC8vIG5vdCB1c2VkIGJvb2xlYW4gZ290RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIGJvb2xlYW4gZHVtbXk7CisKKyAgICAgICAgaXRlci5zZXRUZXh0KG5ldyBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvcihzdHIsIGJlZ2luLCBlbmQsIGJlZ2luKSk7CisgICAgICAgIGZvciAoaW50IGluZGV4ID0gLTE7IGluZGV4IDwgYmVnaW4gKyAxOyArK2luZGV4KSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGR1bW15ID0gaXRlci5pc0JvdW5kYXJ5KGluZGV4KTsKKyAgICAgICAgICAgICAgICBpZiAoaW5kZXggPCBiZWdpbikKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIkRpZG4ndCBnZXQgZXhjZXB0aW9uIHdpdGggb2Zmc2V0ID0gIiArIGluZGV4ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgYW5kIGJlZ2luIGluZGV4ID0gIiArIGJlZ2luKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIGlmIChpbmRleCA+PSBiZWdpbikKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIkdvdCBleGNlcHRpb24gd2l0aCBvZmZzZXQgPSAiICsgaW5kZXggKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBhbmQgYmVnaW4gaW5kZXggPSAiICsgYmVnaW4pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdEJ1ZzQxNDYxNzVTZW50ZW5jZXMoKSB7CisgICAgICAgIFZlY3RvciBzZW50ZW5jZVNlbGVjdGlvbkRhdGEgPSBuZXcgVmVjdG9yKCk7CisKKyAgICAgICAgLy8gYnJlYWsgYmV0d2VlbiBwZXJpb2RzIGFuZCBvcGVuaW5nIHB1bmN0dWF0aW9uIGV2ZW4gd2hlbiB0aGVyZSdzIG5vCisgICAgICAgIC8vIGludGVydmVuaW5nIHNwYWNlCisgICAgICAgIHNlbnRlbmNlU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJlbmQuIik7CisgICAgICAgIHNlbnRlbmNlU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIoVGhpcyBpc1x1MjAyOSIpOworCisgICAgICAgIC8vIHRyZWF0IHRoZSBmdWxsd2lkdGggcGVyaW9kIGFzIGFuIHVuYW1iaWd1b3VzIHNlbnRlbmNlIHRlcm1pbmF0b3IKKyAgICAgICAgc2VudGVuY2VTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1N2Q0Mlx1MzA4Zlx1MzA4YVx1ZmYwZSIpOworICAgICAgICBzZW50ZW5jZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUzMDBjXHUzMDUzXHUzMDhjXHUzMDZmIik7CisKKyAgICAgICAgZ2VuZXJhbEl0ZXJhdG9yVGVzdChzZW50ZW5jZUJyZWFrLCBzZW50ZW5jZVNlbGVjdGlvbkRhdGEpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RCdWc0MTQ2MTc1TGluZXMoKSB7CisgICAgICAgIFZlY3RvciBsaW5lU2VsZWN0aW9uRGF0YSA9IG5ldyBWZWN0b3IoKTsKKworICAgICAgICAvLyB0aGUgZnVsbHdpZHRoIGNvbW1hIHNob3VsZCBzdGljayB0byB0aGUgcHJlY2VkaW5nIEphcGFuZXNlIGNoYXJhY3RlcgorICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTdkNDJcdWZmMGMiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUzMDhmIik7CisKKyAgICAgICAgZ2VuZXJhbEl0ZXJhdG9yVGVzdChsaW5lQnJlYWssIGxpbmVTZWxlY3Rpb25EYXRhKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0QnVnNDIxNDM2NygpIHsKKyAgICAgICAgVmVjdG9yIHdvcmRTZWxlY3Rpb25EYXRhID0gbmV3IFZlY3RvcigpOworCisgICAgICAgIC8vIHRoZSBoaXJhZ2FuYSBhbmQga2F0YWthbmEgaXRlcmF0aW9uIG1hcmtzIGFuZCB0aGUgbG9uZyB2b3dlbCBtYXJrCisgICAgICAgIC8vIGFyZSBub3QgYmVpbmcgdHJlYXRlZCBjb3JyZWN0bHkgYnkgdGhlIHdvcmQtYnJlYWsgaXRlcmF0b3IKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUzMDQyXHUzMDQ0XHUzMDlkXHUzMDQyXHUzMDllXHUzMDQyXHUzMGZjXHUzMDQyIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MzBhMlx1MzBhNFx1MzBmZFx1MzBhMlx1MzBmZVx1MzBhMlx1MzBmY1x1MzBhMiIpOworCisgICAgICAgIGdlbmVyYWxJdGVyYXRvclRlc3Qod29yZEJyZWFrLCB3b3JkU2VsZWN0aW9uRGF0YSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIGNhbm5lZFRlc3RDaGFycworICAgICAgICA9ICJcdTAwMDBcdTAwMDFcdTAwMDJcdTAwMDNcdTAwMDQgIVwiIyQlJigpKy0wMTIzNDw9PkFCQ0RFW11eX2BhYmNkZXt9fFx1MDBhMFx1MDBhMiIKKyAgICAgICAgKyAiXHUwMGEzXHUwMGE0XHUwMGE1XHUwMGE2XHUwMGE3XHUwMGE4XHUwMGE5XHUwMGFiXHUwMGFkXHUwMGFlXHUwMGFmXHUwMGIwXHUwMGIyXHUwMGIzIgorICAgICAgICArICJcdTAwYjRcdTAwYjlcdTAwYmJcdTAwYmNcdTAwYmRcdTAyYjBcdTAyYjFcdTAyYjJcdTAyYjNcdTAyYjRcdTAzMDBcdTAzMDFcdTAzMDJcdTAzMDMiCisgICAgICAgICsgIlx1MDMwNFx1MDVkMFx1MDVkMVx1MDVkMlx1MDVkM1x1MDVkNFx1MDkwM1x1MDkzZVx1MDkzZlx1MDk0MFx1MDk0OVx1MGYzYVx1MGYzYlx1MjAwMCIKKyAgICAgICAgKyAiXHUyMDAxXHUyMDAyXHUyMDBjXHUyMDBkXHUyMDBlXHUyMDBmXHUyMDEwXHUyMDExXHUyMDEyXHUyMDI4XHUyMDI5XHUyMDJhXHUyMDNlXHUyMDNmIgorICAgICAgICArICJcdTIwNDBcdTIwZGRcdTIwZGVcdTIwZGZcdTIwZTBcdTIxNjBcdTIxNjFcdTIxNjJcdTIxNjNcdTIxNjQiOworCisgICAgcHVibGljIHZvaWQgVGVzdFNlbnRlbmNlSW52YXJpYW50cygpCisgICAgeworICAgICAgICBCcmVha0l0ZXJhdG9yIGUgPSBCcmVha0l0ZXJhdG9yLmdldFNlbnRlbmNlSW5zdGFuY2UoKTsKKyAgICAgICAgZG9PdGhlckludmFyaWFudFRlc3QoZSwgY2FubmVkVGVzdENoYXJzICsgIi4sXHUzMDAxXHUzMDAyXHUzMDQxXHUzMDQyXHUzMDQzXHVmZWZmIik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdFdvcmRJbnZhcmlhbnRzKCkKKyAgICB7CisgICAgICAgIEJyZWFrSXRlcmF0b3IgZSA9IEJyZWFrSXRlcmF0b3IuZ2V0V29yZEluc3RhbmNlKCk7CisgICAgICAgIGRvQnJlYWtJbnZhcmlhbnRUZXN0KGUsIGNhbm5lZFRlc3RDaGFycyArICJcJywuXHUzMDQxXHUzMDQyXHUzMDQzXHUzMDliXHUzMDljXHUzMGExXHUzMGEyIgorICAgICAgICAgICAgKyAiXHUzMGEzXHU0ZTAwXHU0ZTAxXHU0ZTAyIik7CisgICAgICAgIGRvT3RoZXJJbnZhcmlhbnRUZXN0KGUsIGNhbm5lZFRlc3RDaGFycyArICJcJywuXHUzMDQxXHUzMDQyXHUzMDQzXHUzMDliXHUzMDljXHUzMGExXHUzMGEyIgorICAgICAgICAgICAgKyAiXHUzMGEzXHU0ZTAwXHU0ZTAxXHU0ZTAyIik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdExpbmVJbnZhcmlhbnRzKCkKKyAgICB7CisgICAgICAgIEJyZWFrSXRlcmF0b3IgZSA9IEJyZWFrSXRlcmF0b3IuZ2V0TGluZUluc3RhbmNlKCk7CisgICAgICAgIFN0cmluZyB0ZXN0Q2hhcnMgPSBjYW5uZWRUZXN0Q2hhcnMgKyAiLiw7Olx1MzAwMVx1MzAwMlx1MzA0MVx1MzA0Mlx1MzA0M1x1MzA0NFx1MzA0NSIKKyAgICAgICAgICAgICsgIlx1MzBhM1x1NGUwMFx1NGUwMVx1NGUwMiI7CisgICAgICAgIGRvQnJlYWtJbnZhcmlhbnRUZXN0KGUsIHRlc3RDaGFycyk7CisgICAgICAgIGRvT3RoZXJJbnZhcmlhbnRUZXN0KGUsIHRlc3RDaGFycyk7CisKKyAgICAgICAgaW50IGVycm9yQ291bnQgPSAwOworCisgICAgICAgIC8vIGluIGFkZGl0aW9uIHRvIHRoZSBvdGhlciBpbnZhcmlhbnRzLCBhIGxpbmUtYnJlYWsgaXRlcmF0b3Igc2hvdWxkIG1ha2Ugc3VyZSB0aGF0OgorICAgICAgICAvLyBpdCBkb2Vzbid0IGJyZWFrIGFyb3VuZCB0aGUgbm9uLWJyZWFraW5nIGNoYXJhY3RlcnMKKyAgICAgICAgU3RyaW5nIG5vQnJlYWsgPSAiXHUwMGEwXHUyMDA3XHUyMDExXHVmZWZmIjsKKyAgICAgICAgU3RyaW5nQnVmZmVyIHdvcmsgPSBuZXcgU3RyaW5nQnVmZmVyKCJhYWEiKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0ZXN0Q2hhcnMubGVuZ3RoKCk7IGkrKykgeworICAgICAgICAgICAgY2hhciBjID0gdGVzdENoYXJzLmNoYXJBdChpKTsKKyAgICAgICAgICAgIGlmIChjID09ICdccicgfHwgYyA9PSAnXG4nIHx8IGMgPT0gJ1x1MjAyOScgfHwgYyA9PSAnXHUyMDI4JyB8fCBjID09ICdcdTAwMDMnKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgd29yay5zZXRDaGFyQXQoMCwgYyk7CisgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG5vQnJlYWsubGVuZ3RoKCk7IGorKykgeworICAgICAgICAgICAgICAgIHdvcmsuc2V0Q2hhckF0KDEsIG5vQnJlYWsuY2hhckF0KGopKTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBrID0gMDsgayA8IHRlc3RDaGFycy5sZW5ndGgoKTsgaysrKSB7CisgICAgICAgICAgICAgICAgICAgIHdvcmsuc2V0Q2hhckF0KDIsIHRlc3RDaGFycy5jaGFyQXQoaykpOworICAgICAgICAgICAgICAgICAgICBlLnNldFRleHQod29yay50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgbCA9IGUuZmlyc3QoKTsgbCAhPSBCcmVha0l0ZXJhdG9yLkRPTkU7IGwgPSBlLm5leHQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsID09IDEgfHwgbCA9PSAyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJybG4oIkdvdCBicmVhayBiZXR3ZWVuIFUrIiArIEludGVnZXIudG9IZXhTdHJpbmcoKGludCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3b3JrLmNoYXJBdChsIC0gMSkpKSArICIgYW5kIFUrIiArIEludGVnZXIudG9IZXhTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KSh3b3JrLmNoYXJBdChsKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvckNvdW50Kys7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yQ291bnQgPj0gNzUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBpdCBkb2VzIGJyZWFrIGFmdGVyIGRhc2hlcyAodW5sZXNzIHRoZXkncmUgZm9sbG93ZWQgYnkgYSBkaWdpdCwgYSBub24tc3BhY2luZyBtYXJrLAorICAgICAgICAvLyBhIGN1cnJlbmN5IHN5bWJvbCwgYSBzcGFjZSwgYSBmb3JtYXQtY29udHJvbCBjaGFyYWN0ZXIsIGEgcmVndWxhciBjb250cm9sIGNoYXJhY3RlciwKKyAgICAgICAgLy8gYSBsaW5lIG9yIHBhcmFncmFwaCBzZXBhcmF0b3IsIG9yIGFub3RoZXIgZGFzaCkKKyAgICAgICAgU3RyaW5nIGRhc2hlcyA9ICItXHUwMGFkXHUyMDEwXHUyMDEyXHUyMDEzXHUyMDE0IjsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0ZXN0Q2hhcnMubGVuZ3RoKCk7IGkrKykgeworICAgICAgICAgICAgd29yay5zZXRDaGFyQXQoMCwgdGVzdENoYXJzLmNoYXJBdChpKSk7CisgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGRhc2hlcy5sZW5ndGgoKTsgaisrKSB7CisgICAgICAgICAgICAgICAgd29yay5zZXRDaGFyQXQoMSwgZGFzaGVzLmNoYXJBdChqKSk7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgayA9IDA7IGsgPCB0ZXN0Q2hhcnMubGVuZ3RoKCk7IGsrKykgeworICAgICAgICAgICAgICAgICAgICBjaGFyIGMgPSB0ZXN0Q2hhcnMuY2hhckF0KGspOworICAgICAgICAgICAgICAgICAgICBpZiAoQ2hhcmFjdGVyLmdldFR5cGUoYykgPT0gQ2hhcmFjdGVyLkRFQ0lNQUxfRElHSVRfTlVNQkVSIHx8CisgICAgICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXIuZ2V0VHlwZShjKSA9PSBDaGFyYWN0ZXIuT1RIRVJfTlVNQkVSIHx8CisgICAgICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXIuZ2V0VHlwZShjKSA9PSBDaGFyYWN0ZXIuTk9OX1NQQUNJTkdfTUFSSyB8fAorICAgICAgICAgICAgICAgICAgICAgICAgQ2hhcmFjdGVyLmdldFR5cGUoYykgPT0gQ2hhcmFjdGVyLkVOQ0xPU0lOR19NQVJLIHx8CisgICAgICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXIuZ2V0VHlwZShjKSA9PSBDaGFyYWN0ZXIuQ1VSUkVOQ1lfU1lNQk9MIHx8CisgICAgICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXIuZ2V0VHlwZShjKSA9PSBDaGFyYWN0ZXIuREFTSF9QVU5DVFVBVElPTiB8fAorICAgICAgICAgICAgICAgICAgICAgICAgQ2hhcmFjdGVyLmdldFR5cGUoYykgPT0gQ2hhcmFjdGVyLlNQQUNFX1NFUEFSQVRPUiB8fAorICAgICAgICAgICAgICAgICAgICAgICAgQ2hhcmFjdGVyLmdldFR5cGUoYykgPT0gQ2hhcmFjdGVyLkZPUk1BVCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgQ2hhcmFjdGVyLmdldFR5cGUoYykgPT0gQ2hhcmFjdGVyLkNPTlRST0wgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPT0gJ1xuJyB8fCBjID09ICdccicgfHwgYyA9PSAnXHUyMDI4JyB8fCBjID09ICdcdTIwMjknIHx8CisgICAgICAgICAgICAgICAgICAgICAgICBjID09ICdcdTAwMDMnIHx8IGMgPT0gJ1x1MjAwNycgfHwgYyA9PSAnXHUyMDExJyB8fAorICAgICAgICAgICAgICAgICAgICAgICAgYyA9PSAnXHVmZWZmJykKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB3b3JrLnNldENoYXJBdCgyLCBjKTsKKyAgICAgICAgICAgICAgICAgICAgZS5zZXRUZXh0KHdvcmsudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gc2F3MiA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBsID0gZS5maXJzdCgpOyBsICE9IEJyZWFrSXRlcmF0b3IuRE9ORTsgbCA9IGUubmV4dCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPT0gMikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXcyID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFzYXcyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbigiRGlkbid0IGdldCBicmVhayBiZXR3ZWVuIFUrIiArIEludGVnZXIudG9IZXhTdHJpbmcoKGludCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3b3JrLmNoYXJBdCgxKSkpICsgIiBhbmQgVSsiICsgSW50ZWdlci50b0hleFN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKHdvcmsuY2hhckF0KDIpKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JDb3VudCsrOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yQ291bnQgPj0gNzUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdENoYXJhY3RlckludmFyaWFudHMoKQorICAgIHsKKyAgICAgICAgQnJlYWtJdGVyYXRvciBlID0gQnJlYWtJdGVyYXRvci5nZXRDaGFyYWN0ZXJJbnN0YW5jZSgpOworICAgICAgICBkb0JyZWFrSW52YXJpYW50VGVzdChlLCBjYW5uZWRUZXN0Q2hhcnMgKyAiXHUxMTAwXHUxMTAxXHUxMTAyXHUxMTYwXHUxMTYxXHUxMTYyXHUxMWE4IgorICAgICAgICAgICAgKyAiXHUxMWE5XHUxMWFhIik7CisgICAgICAgIGRvT3RoZXJJbnZhcmlhbnRUZXN0KGUsIGNhbm5lZFRlc3RDaGFycyArICJcdTExMDBcdTExMDFcdTExMDJcdTExNjBcdTExNjFcdTExNjJcdTExYTgiCisgICAgICAgICAgICArICJcdTExYTlcdTExYWEiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0RW1wdHlTdHJpbmcoKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHRleHQgPSAiIjsKKyAgICAgICAgVmVjdG9yIHggPSBuZXcgVmVjdG9yKCk7CisgICAgICAgIHguYWRkRWxlbWVudCh0ZXh0KTsKKworICAgICAgICBnZW5lcmFsSXRlcmF0b3JUZXN0KGxpbmVCcmVhaywgeCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdEdldEF2YWlsYWJsZUxvY2FsZXMoKQorICAgIHsKKyAgICAgICAgTG9jYWxlW10gbG9jTGlzdCA9IEJyZWFrSXRlcmF0b3IuZ2V0QXZhaWxhYmxlTG9jYWxlcygpOworCisgICAgICAgIGlmIChsb2NMaXN0Lmxlbmd0aCA9PSAwKQorICAgICAgICAgICAgZXJybG4oImdldEF2YWlsYWJsZUxvY2FsZXMoKSByZXR1cm5lZCBhbiBlbXB0eSBsaXN0ISIpOworICAgICAgICAvLyBJIGhhdmUgbm8gaWRlYSBob3cgdG8gdGVzdCB0aGlzIGZ1bmN0aW9uLi4uCisgICAgfQorCisgICAgLyoqCisgICAgICogQGJ1ZyA0MDk1MzIyCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEphcGFuZXNlTGluZUJyZWFrKCkKKyAgICB7CisgICAgICAgIFN0cmluZ0J1ZmZlciB0ZXN0U3RyaW5nID0gbmV3IFN0cmluZ0J1ZmZlcigiXHU0ZTAweFx1NGU4YyIpOworICAgICAgICBTdHJpbmcgcHJlY2VkaW5nQ2hhcnMgPSAiKFt7XHUwMGFiJFx1MDBhNVx1MDBhM1x1MDBhNFx1MjAxOFx1MjAxYVx1MjAxY1x1MjAxZVx1MjAxYlx1MjAxZiI7CisgICAgICAgIFN0cmluZyBmb2xsb3dpbmdDaGFycyA9ICIpXX1cdTAwYmIhJSwuXHUzMDAxXHUzMDAyXHUzMDYzXHUzMDgzXHUzMDg1XHUzMDg3XHUzMGMzXHUzMGUzXHUzMGU1XHUzMGU3XHUzMGZjOjtcdTMwOWJcdTMwOWNcdTMwMDVcdTMwOWRcdTMwOWVcdTMwZmRcdTMwZmVcdTIwMTlcdTIwMWRcdTAwYjBcdTIwMzJcdTIwMzNcdTIwMzRcdTIwMzBcdTIwMzFcdTIxMDNcdTIxMDlcdTAwYTJcdTAzMDBcdTAzMDFcdTAzMDIiOworICAgICAgICBCcmVha0l0ZXJhdG9yIGl0ZXIgPSBCcmVha0l0ZXJhdG9yLmdldExpbmVJbnN0YW5jZShMb2NhbGUuSkFQQU4pOworCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcHJlY2VkaW5nQ2hhcnMubGVuZ3RoKCk7IGkrKykgeworICAgICAgICAgICAgdGVzdFN0cmluZy5zZXRDaGFyQXQoMSwgcHJlY2VkaW5nQ2hhcnMuY2hhckF0KGkpKTsKKyAgICAgICAgICAgIGl0ZXIuc2V0VGV4dCh0ZXN0U3RyaW5nLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgaW50IGogPSBpdGVyLmZpcnN0KCk7CisgICAgICAgICAgICBpZiAoaiAhPSAwKQorICAgICAgICAgICAgICAgIGVycmxuKCJqYSBsaW5lIGJyZWFrIGZhaWx1cmU6IGZhaWxlZCB0byBzdGFydCBhdCAwIik7CisgICAgICAgICAgICBqID0gaXRlci5uZXh0KCk7CisgICAgICAgICAgICBpZiAoaiAhPSAxKQorICAgICAgICAgICAgICAgIGVycmxuKCJqYSBsaW5lIGJyZWFrIGZhaWx1cmU6IGZhaWxlZCB0byBzdG9wIGJlZm9yZSAnIiArIHByZWNlZGluZ0NoYXJzLmNoYXJBdChpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIicgKCIgKyAoKGludCkocHJlY2VkaW5nQ2hhcnMuY2hhckF0KGkpKSkgKyAiKSIpOworICAgICAgICAgICAgaiA9IGl0ZXIubmV4dCgpOworICAgICAgICAgICAgaWYgKGogIT0gMykKKyAgICAgICAgICAgICAgICBlcnJsbigiamEgbGluZSBicmVhayBmYWlsdXJlOiBmYWlsZWQgdG8gc2tpcCBwb3NpdGlvbiBhZnRlciAnIiArIHByZWNlZGluZ0NoYXJzLmNoYXJBdChpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIicgKCIgKyAoKGludCkocHJlY2VkaW5nQ2hhcnMuY2hhckF0KGkpKSkgKyAiKSIpOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmb2xsb3dpbmdDaGFycy5sZW5ndGgoKTsgaSsrKSB7CisgICAgICAgICAgICB0ZXN0U3RyaW5nLnNldENoYXJBdCgxLCBmb2xsb3dpbmdDaGFycy5jaGFyQXQoaSkpOworICAgICAgICAgICAgaXRlci5zZXRUZXh0KHRlc3RTdHJpbmcudG9TdHJpbmcoKSk7CisgICAgICAgICAgICBpbnQgaiA9IGl0ZXIuZmlyc3QoKTsKKyAgICAgICAgICAgIGlmIChqICE9IDApCisgICAgICAgICAgICAgICAgZXJybG4oImphIGxpbmUgYnJlYWsgZmFpbHVyZTogZmFpbGVkIHRvIHN0YXJ0IGF0IDAiKTsKKyAgICAgICAgICAgIGogPSBpdGVyLm5leHQoKTsKKyAgICAgICAgICAgIGlmIChqICE9IDIpCisgICAgICAgICAgICAgICAgZXJybG4oImphIGxpbmUgYnJlYWsgZmFpbHVyZTogZmFpbGVkIHRvIHNraXAgcG9zaXRpb24gYmVmb3JlICciICsgZm9sbG93aW5nQ2hhcnMuY2hhckF0KGkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiJyAoIiArICgoaW50KShmb2xsb3dpbmdDaGFycy5jaGFyQXQoaSkpKSArICIpIik7CisgICAgICAgICAgICBqID0gaXRlci5uZXh0KCk7CisgICAgICAgICAgICBpZiAoaiAhPSAzKQorICAgICAgICAgICAgICAgIGVycmxuKCJqYSBsaW5lIGJyZWFrIGZhaWx1cmU6IGZhaWxlZCB0byBzdG9wIGFmdGVyICciICsgZm9sbG93aW5nQ2hhcnMuY2hhckF0KGkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiJyAoIiArICgoaW50KShmb2xsb3dpbmdDaGFycy5jaGFyQXQoaSkpKSArICIpIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAYnVnIDQwNjgxMzcKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0RW5kQmVoYXZpb3IoKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHRlc3RTdHJpbmcgPSAiYm9vLiI7CisgICAgICAgIEJyZWFrSXRlcmF0b3Igd2IgPSBCcmVha0l0ZXJhdG9yLmdldFdvcmRJbnN0YW5jZSgpOworICAgICAgICB3Yi5zZXRUZXh0KHRlc3RTdHJpbmcpOworCisgICAgICAgIGlmICh3Yi5maXJzdCgpICE9IDApCisgICAgICAgICAgICBlcnJsbigiRGlkbid0IGdldCBicmVhayBhdCBiZWdpbm5pbmcgb2Ygc3RyaW5nLiIpOworICAgICAgICBpZiAod2IubmV4dCgpICE9IDMpCisgICAgICAgICAgICBlcnJsbigiRGlkbid0IGdldCBicmVhayBiZWZvcmUgcGVyaW9kIGluIFwiYm9vLlwiIik7CisgICAgICAgIGlmICh3Yi5jdXJyZW50KCkgIT0gNCAmJiB3Yi5uZXh0KCkgIT0gNCkKKyAgICAgICAgICAgIGVycmxuKCJEaWRuJ3QgZ2V0IGJyZWFrIGF0IGVuZCBvZiBzdHJpbmcuIik7CisgICAgfQorCisgICAgLy8gVGhlIEZvbGxvd2luZyB0d28gdGVzdHMgYXJlIHBvcnRlZCBmcm9tIElDVTRDIDEuOC4xIFtSaWNoYXJkL0dDTF0KKyAgICAvKioKKyAgICAgKiBQb3J0IEZyb206ICAgSUNVNEMgdjEuOC4xIDogdGV4dGJvdW5kcyA6IEludGxUZXN0VGV4dEJvdW5kYXJ5CisgICAgICogU291cmNlIEZpbGU6ICRJQ1U0Q1Jvb3Qvc291cmNlL3Rlc3QvaW50bHRlc3QvaXR0eHRiZC5jcHAKKyAgICAgKiovCisgICAgLyoqCisgICAgICogdGVzdCBtZXRob2RzIHByZWNlZGluZywgZm9sbG93aW5nIGFuZCBpc0JvdW5kYXJ5CisgICAgICoqLworICAgIHB1YmxpYyB2b2lkIFRlc3RQcmVjZWRpbmcoKSB7CisgICAgICAgIFN0cmluZyB3b3JkczMgPSAiYWFhIGJiYiBjY2MiOworICAgICAgICBCcmVha0l0ZXJhdG9yIGUgPSBCcmVha0l0ZXJhdG9yLmdldFdvcmRJbnN0YW5jZShMb2NhbGUuZ2V0RGVmYXVsdCgpKTsKKyAgICAgICAgZS5zZXRUZXh0KCB3b3JkczMgKTsKKyAgICAgICAgZS5maXJzdCgpOworICAgICAgICBpbnQgcDEgPSBlLm5leHQoKTsKKyAgICAgICAgaW50IHAyID0gZS5uZXh0KCk7CisgICAgICAgIGludCBwMyA9IGUubmV4dCgpOworICAgICAgICBpbnQgcDQgPSBlLm5leHQoKTsKKworICAgICAgICBpbnQgZiA9IGUuZm9sbG93aW5nKHAyKzEpOworICAgICAgICBpbnQgcCA9IGUucHJlY2VkaW5nKHAyKzEpOworICAgICAgICBpZiAoZiE9cDMpCisgICAgICAgICAgICBlcnJsbigiSW50bFRlc3RUZXh0Qm91bmRhcnk6OlRlc3RQcmVjZWRpbmc6IGYhPXAzIik7CisgICAgICAgIGlmIChwIT1wMikKKyAgICAgICAgICAgIGVycmxuKCJJbnRsVGVzdFRleHRCb3VuZGFyeTo6VGVzdFByZWNlZGluZzogcCE9cDIiKTsKKworICAgICAgICBpZiAocDErMSE9cDIpCisgICAgICAgICAgICBlcnJsbigiSW50bFRlc3RUZXh0Qm91bmRhcnk6OlRlc3RQcmVjZWRpbmc6IHAxKzEhPXAyIik7CisKKyAgICAgICAgaWYgKHAzKzEhPXA0KQorICAgICAgICAgICAgZXJybG4oIkludGxUZXN0VGV4dEJvdW5kYXJ5OjpUZXN0UHJlY2VkaW5nOiBwMysxIT1wNCIpOworCisgICAgICAgIGlmICghZS5pc0JvdW5kYXJ5KHAyKSB8fCBlLmlzQm91bmRhcnkocDIrMSkgfHwgIWUuaXNCb3VuZGFyeShwMykpCisgICAgICAgIHsKKyAgICAgICAgICAgIGVycmxuKCJJbnRsVGVzdFRleHRCb3VuZGFyeTo6VGVzdFByZWNlZGluZzogaXNCb3VuZGFyeSBlcnIiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3QgVGhhaSB3b3JkIGJyZWFrIHVzaW5nIGdlbmVyYWxJdGVyYXRvclRlc3QoKQorICAgICAqKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0VGhhaVdvcmRCcmVhaygpIHsKKyAgICAgICAgVmVjdG9yIHRoYWlXb3JkU2VsZWN0aW9uID0gbmV3IFZlY3RvcigpOworCisgICAgICAgIHRoYWlXb3JkU2VsZWN0aW9uLmFkZEVsZW1lbnQoIlx1MEUxQVx1MEUxNyIpOyAvLzIKKyAgICAgICAgdGhhaVdvcmRTZWxlY3Rpb24uYWRkRWxlbWVudCgiXHUwRTE3XHUwRTM1XHUwRTQ4Iik7IC8vNQorICAgICAgICB0aGFpV29yZFNlbGVjdGlvbi5hZGRFbGVtZW50KCJcdTBFNTEiKTsgLy82CisgICAgICAgIHRoYWlXb3JkU2VsZWN0aW9uLmFkZEVsZW1lbnQoIlx1MEUxRVx1MEUzMlx1MEUyMlx1MEUzOCIpOyAvLzEwCisgICAgICAgIHRoYWlXb3JkU2VsZWN0aW9uLmFkZEVsZW1lbnQoIlx1MEU0NFx1MEUwQlx1MEU0Mlx1MEUwNFx1MEUyNVx1MEUxOSIpOyAvLzE2CisgICAgICAgIHRoYWlXb3JkU2VsZWN0aW9uLmFkZEVsZW1lbnQoIlxyXG4iKTsgLy8xOAorCisgICAgICAgIC8vIFRoaXMgaXMgdGhlIGNvcnJlY3QgcmVzdWx0CisgICAgICAgIC8vdGhhaVdvcmRTZWxlY3Rpb24uYWRkRWxlbWVudCgoIlx1MEU0Mlx1MEUxNFx1MEU0Mlx1MEUyM1x1MEUxOFx1MEUzNSIpKTsgLy8yNAorICAgICAgICAvL3RoYWlXb3JkU2VsZWN0aW9uLmFkZEVsZW1lbnQoKCJcdTBFMkRcdTBFMzJcdTBFMjhcdTBFMzFcdTBFMjIiKSk7IC8vMjkKKworICAgICAgICAvLyBhbmQgdGhpcyBpcyB3aGF0IHRoZSBkaWN0aW9uYXJ5IGRvZXMuLi4KKyAgICAgICAgdGhhaVdvcmRTZWxlY3Rpb24uYWRkRWxlbWVudCgiXHUwRTQyXHUwRTE0Iik7IC8vIDIwCisgICAgICAgIHRoYWlXb3JkU2VsZWN0aW9uLmFkZEVsZW1lbnQoIlx1MEU0Mlx1MEUyM1x1MEUxOFx1MEUzNVx1MEUyRFx1MEUzMlx1MEUyOFx1MEUzMVx1MEUyMiIpOyAvLzI5CisKKyAgICAgICAgdGhhaVdvcmRTZWxlY3Rpb24uYWRkRWxlbWVudCgiXHUwRTJEXHUwRTIyXHUwRTM5XHUwRTQ4Iik7IC8vMzMKKworICAgICAgICAvLyBUaGlzIGlzIHRoZSBjb3JyZWN0IHJlc3VsdAorICAgICAgICAvL3RoYWlXb3JkU2VsZWN0aW9uLmFkZEVsZW1lbnQoIlx1MEUxN1x1MEU0OFx1MEUzMlx1MEUyMSIpOyAvLzM3CisgICAgICAgIC8vdGhhaVdvcmRTZWxlY3Rpb24uYWRkRWxlbWVudCgiXHUwRTAxXHUwRTI1XHUwRTMyXHUwRTA3Iik7IC8vNDEKKworICAgICAgICAvLyBhbmQgdGhpcyBpcyB3aGF0IHRoZSBkaWN0aW9uYXJ5IGRvZXMKKyAgICAgICAgdGhhaVdvcmRTZWxlY3Rpb24uYWRkRWxlbWVudCgiXHUwRTE3XHUwRTQ4XHUwRTMyXHUwRTIxXHUwRTAxXHUwRTI1XHUwRTMyXHUwRTA3Iik7IC8vNDEKKworICAgICAgICB0aGFpV29yZFNlbGVjdGlvbi5hZGRFbGVtZW50KCJcdTBFMTdcdTBFMzhcdTBFNDhcdTBFMDciKTsgLy80NQorICAgICAgICB0aGFpV29yZFNlbGVjdGlvbi5hZGRFbGVtZW50KCJcdTBFNDNcdTBFMkJcdTBFMERcdTBFNDgiKTsgLy80OQorICAgICAgICB0aGFpV29yZFNlbGVjdGlvbi5hZGRFbGVtZW50KCJcdTBFNDNcdTBFMTkiKTsgLy81MQorCisgICAgICAgIC8vIFRoaXMgaXMgdGhlIGNvcnJlY3QgcmVzdWx0CisgICAgICAgIC8vdGhhaVdvcmRTZWxlY3Rpb24uYWRkRWxlbWVudCgiXHUwRTQxXHUwRTA0XHUwRTE5XHUwRTBCXHUwRTMxXHUwRTJBIik7IC8vNTcKKyAgICAgICAgLy90aGFpV29yZFNlbGVjdGlvbi5hZGRFbGVtZW50KCJcdTBFMDFcdTBFMzFcdTBFMUEiKTsgLy82MAorCisgICAgICAgIC8vIGFuZCB0aGlzIGlzIHdoYXQgdGhlIGRpY3Rpb25hcnkgZG9lcworICAgICAgICB0aGFpV29yZFNlbGVjdGlvbi5hZGRFbGVtZW50KCJcdTBFNDFcdTBFMDRcdTBFMTkiKTsgLy8gNTQKKyAgICAgICAgdGhhaVdvcmRTZWxlY3Rpb24uYWRkRWxlbWVudCgiXHUwRTBCXHUwRTMxXHUwRTJBXHUwRTAxXHUwRTMxXHUwRTFBIik7IC8vNjAKKworICAgICAgICB0aGFpV29yZFNlbGVjdGlvbi5hZGRFbGVtZW50KCJcdTBFMjVcdTBFMzhcdTBFMDciKTsgLy82MworCisgICAgICAgIC8vIFRoaXMgaXMgdGhlIGNvcnJlY3QgcmVzdWx0CisgICAgICAgIC8vdGhhaVdvcmRTZWxlY3Rpb24uYWRkRWxlbWVudCgiXHUwRTQwXHUwRTJFXHUwRTE5XHUwRTIzXHUwRTM1Iik7IC8vNjgKKyAgICAgICAgLy90aGFpV29yZFNlbGVjdGlvbi5hZGRFbGVtZW50KCJcdTBFMEFcdTBFMzJcdTBFMjciKTsgLy83MQorICAgICAgICAvL3RoYWlXb3JkU2VsZWN0aW9uLmFkZEVsZW1lbnQoIlx1MEU0NFx1MEUyM1x1MEU0OCIpOyAvLzc0CisgICAgICAgIC8vdGhhaVdvcmRTZWxlY3Rpb24uYWRkRWxlbWVudCgiXHUwRTQxXHUwRTI1XHUwRTMwIik7IC8vNzcKKworICAgICAgICAvLyBhbmQgdGhpcyBpcyB3aGF0IHRoZSBkaWN0aW9uYXJ5IGRvZXMKKyAgICAgICAgdGhhaVdvcmRTZWxlY3Rpb24uYWRkRWxlbWVudCgiXHUwRTQwXHUwRTJFIik7IC8vIDY1CisgICAgICAgIHRoYWlXb3JkU2VsZWN0aW9uLmFkZEVsZW1lbnQoIlx1MEUxOVx1MEUyM1x1MEUzNVx1MEUwQVx1MEUzMlx1MEUyN1x1MEU0NFx1MEUyM1x1MEU0OFx1MEU0MVx1MEUyNVx1MEUzMCIpOyAvLzc3CisKKyAgICAgICAgQnJlYWtJdGVyYXRvciBlID0gQnJlYWtJdGVyYXRvci5nZXRXb3JkSW5zdGFuY2UobmV3IExvY2FsZSgidGgiLCIiLCIiKSk7CisKKyAgICAgICAgZ2VuZXJhbEl0ZXJhdG9yVGVzdChlLCB0aGFpV29yZFNlbGVjdGlvbik7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvcmJiaS9SQkJJQVBJVGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3JiYmkvUkJCSUFQSVRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5kNThhZTgyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3JiYmkvUkJCSUFQSVRlc3QuamF2YQpAQCAtMCwwICsxLDQ2MCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICAgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3JiYmkvUkJCSUFQSVRlc3QuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNToxNSAkIAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKKy8qKiAKKyAqIFBvcnQgRnJvbTogICBJQ1U0QyB2MS44LjEgOiByYmJpIDogUkJCSUFQSVRlc3QKKyAqIFNvdXJjZSBGaWxlOiAkSUNVNENSb290L3NvdXJjZS90ZXN0L2ludGx0ZXN0L3JiYmlhcHRzLmNwcAorICoqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0LnJiYmk7CisKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0LlJ1bGVCYXNlZEJyZWFrSXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKK2ltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOworaW1wb3J0IGphdmEuaW8uKjsKK2ltcG9ydCBqYXZhLnRleHQuQ2hhcmFjdGVySXRlcmF0b3I7CitpbXBvcnQgamF2YS50ZXh0LlN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yOworCisvKioKKyAqIEFQSSBUZXN0IHRoZSBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIGNsYXNzCisgKi8KK3B1YmxpYyBjbGFzcyBSQkJJQVBJVGVzdCBleHRlbmRzIGNvbS5pYm0uaWN1LmRldi50ZXN0LlRlc3RGbXdrIHsKKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgbmV3IFJCQklBUElUZXN0KCkucnVuKGFyZ3MpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBUZXN0cyBjbG9uZSgpIGFuZCBlcXVhbHMoKSBtZXRob2RzIG9mIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IgICAgICAgICAKKyAgICAgKiovCisgICAgcHVibGljIHZvaWQgVGVzdENsb25lRXF1YWxzKCkgeworICAgICAgICBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIGJpMSA9IChSdWxlQmFzZWRCcmVha0l0ZXJhdG9yKSBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yLmdldENoYXJhY3Rlckluc3RhbmNlKExvY2FsZS5nZXREZWZhdWx0KCkpOyAKKyAgICAgICAgUnVsZUJhc2VkQnJlYWtJdGVyYXRvciBiaWVxdWFsID0gKFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IpIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IuZ2V0Q2hhcmFjdGVySW5zdGFuY2UoTG9jYWxlLmdldERlZmF1bHQoKSk7IAorICAgICAgICBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIGJpMyA9IChSdWxlQmFzZWRCcmVha0l0ZXJhdG9yKSBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yLmdldENoYXJhY3Rlckluc3RhbmNlKExvY2FsZS5nZXREZWZhdWx0KCkpOyAKKyAgICAgICAgUnVsZUJhc2VkQnJlYWtJdGVyYXRvciBiaTIgPSAoUnVsZUJhc2VkQnJlYWtJdGVyYXRvcikgUnVsZUJhc2VkQnJlYWtJdGVyYXRvci5nZXRXb3JkSW5zdGFuY2UoTG9jYWxlLmdldERlZmF1bHQoKSk7IAorCisgICAgICAgIFN0cmluZyB0ZXN0U3RyaW5nID0gIlRlc3Rpbmcgd29yZCBicmVhayBpdGVyYXRvcnMncyBjbG9uZSgpIGFuZCBlcXVhbHMoKSI7CisgICAgICAgIGJpMS5zZXRUZXh0KHRlc3RTdHJpbmcpOworICAgICAgICBiaTIuc2V0VGV4dCh0ZXN0U3RyaW5nKTsKKyAgICAgICAgYmllcXVhbC5zZXRUZXh0KHRlc3RTdHJpbmcpOworICAgICAgICAKKyAgICAgICAgYmkzLnNldFRleHQoImhlbGxvIik7CisgICAgICAgIGxvZ2xuKCJUZXN0aW5nIGVxdWFscygpIik7CisgICAgICAgIGxvZ2xuKCJUZXN0aW5nID09IGFuZCAhPSIpOworICAgICAgICBpZiAoIWJpMS5lcXVhbHMoYmllcXVhbCkgfHwgYmkxLmVxdWFscyhiaTIpIHx8IGJpMS5lcXVhbHMoYmkzKSkKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjoxIFJCQkkncyA9PSBhbmQgIS0gb3BlcmF0b3IgZmFpbGVkLiIpOworICAgICAgICBpZiAoYmkyLmVxdWFscyhiaWVxdWFsKSB8fCBiaTIuZXF1YWxzKGJpMSkgfHwgYmllcXVhbC5lcXVhbHMoYmkzKSkKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjoyIFJCQkkncyA9PSBhbmQgIT0gb3BlcmF0b3IgIGZhaWxlZC4iKTsKKyAgICAgICAgbG9nbG4oIlRlc3RpbmcgY2xvbmUoKSIpOworICAgICAgICBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIGJpMWNsb25lID0gKFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IpIGJpMS5jbG9uZSgpOworICAgICAgICBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIGJpMmNsb25lID0gKFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IpIGJpMi5jbG9uZSgpOworICAgICAgICBpZiAoIWJpMWNsb25lLmVxdWFscyhiaTEpCisgICAgICAgICAgICB8fCAhYmkxY2xvbmUuZXF1YWxzKGJpZXF1YWwpCisgICAgICAgICAgICB8fCBiaTFjbG9uZS5lcXVhbHMoYmkzKQorICAgICAgICAgICAgfHwgYmkxY2xvbmUuZXF1YWxzKGJpMikpCisgICAgICAgICAgICBlcnJsbigiRVJST1I6MSBSQkJJJ3MgY2xvbmUoKSBtZXRob2QgZmFpbGVkIik7CisKKyAgICAgICAgaWYgKGJpMmNsb25lLmVxdWFscyhiaTEpCisgICAgICAgICAgICB8fCBiaTJjbG9uZS5lcXVhbHMoYmllcXVhbCkKKyAgICAgICAgICAgIHx8IGJpMmNsb25lLmVxdWFscyhiaTMpCisgICAgICAgICAgICB8fCAhYmkyY2xvbmUuZXF1YWxzKGJpMikpCisgICAgICAgICAgICBlcnJsbigiRVJST1I6MiBSQkJJJ3MgY2xvbmUoKSBtZXRob2QgZmFpbGVkIik7CisKKyAgICAgICAgaWYgKCFiaTEuZ2V0VGV4dCgpLmVxdWFscyhiaTFjbG9uZS5nZXRUZXh0KCkpCisgICAgICAgICAgICB8fCAhYmkyY2xvbmUuZ2V0VGV4dCgpLmVxdWFscyhiaTIuZ2V0VGV4dCgpKQorICAgICAgICAgICAgfHwgYmkyY2xvbmUuZXF1YWxzKGJpMWNsb25lKSkKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogUkJCSSdzIGNsb25lKCkgbWV0aG9kIGZhaWxlZCIpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBUZXN0cyB0b1N0cmluZygpIG1ldGhvZCBvZiBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yCisgICAgICoqLworICAgIHB1YmxpYyB2b2lkIFRlc3RUb1N0cmluZygpIHsKKyAgICAgICAgUnVsZUJhc2VkQnJlYWtJdGVyYXRvciBiaTEgPSAoUnVsZUJhc2VkQnJlYWtJdGVyYXRvcikgUnVsZUJhc2VkQnJlYWtJdGVyYXRvci5nZXRDaGFyYWN0ZXJJbnN0YW5jZShMb2NhbGUuZ2V0RGVmYXVsdCgpKTsgCisgICAgICAgIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IgYmkyID0gKFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IpIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IuZ2V0V29yZEluc3RhbmNlKExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgICAgICBsb2dsbigiVGVzdGluZyB0b1N0cmluZygpIik7CisgICAgICAgIGJpMS5zZXRUZXh0KCJIZWxsbyB0aGVyZSIpOworICAgICAgICBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIGJpMyA9IChSdWxlQmFzZWRCcmVha0l0ZXJhdG9yKSBiaTEuY2xvbmUoKTsKKyAgICAgICAgU3RyaW5nIHRlbXAgPSBiaTEudG9TdHJpbmcoKTsKKyAgICAgICAgU3RyaW5nIHRlbXAyID0gYmkyLnRvU3RyaW5nKCk7CisgICAgICAgIFN0cmluZyB0ZW1wMyA9IGJpMy50b1N0cmluZygpOworICAgICAgICBpZiAodGVtcDIuZXF1YWxzKHRlbXAzKSB8fCB0ZW1wLmVxdWFscyh0ZW1wMikgfHwgIXRlbXAuZXF1YWxzKHRlbXAzKSkKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogZXJyb3IgaW4gdG9TdHJpbmcoKSBtZXRob2QiKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogVGVzdHMgdGhlIG1ldGhvZCBoYXNoQ29kZSgpIG9mIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IKKyAgICAgKiovCisgICAgcHVibGljIHZvaWQgVGVzdEhhc2hDb2RlKCkgeworICAgICAgICBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIGJpMSA9IChSdWxlQmFzZWRCcmVha0l0ZXJhdG9yKSBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yLmdldENoYXJhY3Rlckluc3RhbmNlKExvY2FsZS5nZXREZWZhdWx0KCkpOyAKKyAgICAgICAgUnVsZUJhc2VkQnJlYWtJdGVyYXRvciBiaTMgPSAoUnVsZUJhc2VkQnJlYWtJdGVyYXRvcikgUnVsZUJhc2VkQnJlYWtJdGVyYXRvci5nZXRDaGFyYWN0ZXJJbnN0YW5jZShMb2NhbGUuZ2V0RGVmYXVsdCgpKTsgCisgICAgICAgIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IgYmkyID0gKFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IpIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IuZ2V0V29yZEluc3RhbmNlKExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgICAgICBsb2dsbigiVGVzdGluZyBoYXNoQ29kZSgpIik7CisgICAgICAgIGJpMS5zZXRUZXh0KCJIYXNoIGNvZGUiKTsKKyAgICAgICAgYmkyLnNldFRleHQoIkhhc2ggY29kZSIpOworICAgICAgICBiaTMuc2V0VGV4dCgiSGFzaCBjb2RlIik7CisgICAgICAgIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IgYmkxY2xvbmUgPSAoUnVsZUJhc2VkQnJlYWtJdGVyYXRvcikgYmkxLmNsb25lKCk7CisgICAgICAgIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IgYmkyY2xvbmUgPSAoUnVsZUJhc2VkQnJlYWtJdGVyYXRvcikgYmkyLmNsb25lKCk7CisgICAgICAgIGlmIChiaTEuaGFzaENvZGUoKSAhPSBiaTFjbG9uZS5oYXNoQ29kZSgpCisgICAgICAgICAgICB8fCBiaTEuaGFzaENvZGUoKSAhPSBiaTMuaGFzaENvZGUoKQorICAgICAgICAgICAgfHwgYmkxY2xvbmUuaGFzaENvZGUoKSAhPSBiaTMuaGFzaENvZGUoKQorICAgICAgICAgICAgfHwgYmkyLmhhc2hDb2RlKCkgIT0gYmkyY2xvbmUuaGFzaENvZGUoKSkKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogaWRlbnRpY2FsIG9iamVjdHMgaGF2ZSBkaWZmZXJlbnQgaGFzaGNvZGVzIik7CisgICAgICAgIAorICAgICAgICBpZiAoYmkxLmhhc2hDb2RlKCkgPT0gYmkyLmhhc2hDb2RlKCkKKyAgICAgICAgICAgIHx8IGJpMi5oYXNoQ29kZSgpID09IGJpMy5oYXNoQ29kZSgpCisgICAgICAgICAgICB8fCBiaTFjbG9uZS5oYXNoQ29kZSgpID09IGJpMmNsb25lLmhhc2hDb2RlKCkKKyAgICAgICAgICAgIHx8IGJpMWNsb25lLmhhc2hDb2RlKCkgPT0gYmkyLmhhc2hDb2RlKCkpCisgICAgICAgICAgICBlcnJsbigiRVJST1I6IGRpZmZlcmVudCBvYmplY3RzIGhhdmUgc2FtZSBoYXNoY29kZXMiKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICAqIFRlc3RzIHRoZSBtZXRob2RzIGdldFRleHQoKSBhbmQgc2V0VGV4dCgpIG9mIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IKKyAgICAgICoqLworICAgIHB1YmxpYyB2b2lkIFRlc3RHZXRTZXRUZXh0KCkgeworICAgICAgICBsb2dsbigiVGVzdGluZyBnZXRUZXh0IHNldFRleHQgIik7CisgICAgICAgIFN0cmluZyBzdHIxID0gImZpcnN0IHN0cmluZy4iOworICAgICAgICBTdHJpbmcgc3RyMiA9ICJTZWNvbmQgc3RyaW5nLiI7CisgICAgICAgIC8vUnVsZUJhc2VkQnJlYWtJdGVyYXRvciBjaGFySXRlcjEgPSAoUnVsZUJhc2VkQnJlYWtJdGVyYXRvcikgUnVsZUJhc2VkQnJlYWtJdGVyYXRvci5nZXRDaGFyYWN0ZXJJbnN0YW5jZShMb2NhbGUuZ2V0RGVmYXVsdCgpKTsgCisgICAgICAgIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3Igd29yZEl0ZXIxID0gKFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IpIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IuZ2V0V29yZEluc3RhbmNlKExvY2FsZS5nZXREZWZhdWx0KCkpOyAKKyAgICAgICAgQ2hhcmFjdGVySXRlcmF0b3IgdGV4dDEgPSBuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3Ioc3RyMSk7CisgICAgICAgIC8vQ2hhcmFjdGVySXRlcmF0b3IgdGV4dDFDbG9uZSA9IChDaGFyYWN0ZXJJdGVyYXRvcikgdGV4dDEuY2xvbmUoKTsKKyAgICAgICAgLy9DaGFyYWN0ZXJJdGVyYXRvciB0ZXh0MiA9IG5ldyBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvcihzdHIyKTsKKyAgICAgICAgd29yZEl0ZXIxLnNldFRleHQoc3RyMSk7CisgICAgICAgIGlmICghd29yZEl0ZXIxLmdldFRleHQoKS5lcXVhbHModGV4dDEpKQorICAgICAgICAgICAgZXJybG4oIkVSUk9SOjEgZXJyb3IgaW4gc2V0VGV4dCBvciBnZXRUZXh0ICIpOworICAgICAgICBpZiAod29yZEl0ZXIxLmN1cnJlbnQoKSAhPSAwKQorICAgICAgICAgICAgZXJybG4oIkVSUk9SOjEgc2V0VGV4dCBkaWQgbm90IHNldCB0aGUgaXRlcmF0aW9uIHBvc2l0aW9uIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHRleHQsIGl0IGlzIgorICAgICAgICAgICAgICAgICAgICsgd29yZEl0ZXIxLmN1cnJlbnQoKSArICJcbiIpOyAKKyAgICAgICAgd29yZEl0ZXIxLm5leHQoMik7CisgICAgICAgIHdvcmRJdGVyMS5zZXRUZXh0KHN0cjIpOworICAgICAgICBpZiAod29yZEl0ZXIxLmN1cnJlbnQoKSAhPSAwKQorICAgICAgICAgICAgZXJybG4oIkVSUk9SOjIgc2V0VGV4dCBkaWQgbm90IHJlc2V0IHRoZSBpdGVyYXRpb24gcG9zaXRpb24gdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgdGV4dCwgaXQgaXMiCisgICAgICAgICAgICAgICAgICAgICsgd29yZEl0ZXIxLmN1cnJlbnQoKSArICJcbiIpOyAKKyAgICAgICAgLy9JQ1U0SiBoYXMgcmVtb3ZlIHRoZSBtZXRob2QgYWRvcHRUZXh0CisgICAgICAgIC8qCisgICAgICAgIGNoYXJJdGVyMS5hZG9wdFRleHQodGV4dDFDbG9uZSk7CisgICAgICAgIGlmICh3b3JkSXRlcjEuZ2V0VGV4dCgpID09IGNoYXJJdGVyMS5nZXRUZXh0KCkKKyAgICAgICAgICAgIHx8IHdvcmRJdGVyMS5nZXRUZXh0KCkgIT0gdGV4dDIKKyAgICAgICAgICAgIHx8IGNoYXJJdGVyMS5nZXRUZXh0KCkgIT0gdGV4dDEpCisgICAgICAgICAgICBlcnJsbigoVW5pY29kZVN0cmluZykgIkVSUk9SOjIgZXJyb3IgaXMgZ2V0VGV4dCBvciBzZXRUZXh0KCkiKTsKKyAgICAgICAgCisgICAgICAgIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IgcmIgPSAoUnVsZUJhc2VkQnJlYWtJdGVyYXRvcikgd29yZEl0ZXIxLmNsb25lKCk7CisgICAgICAgIHJiLmFkb3B0VGV4dCh0ZXh0MSk7CisgICAgICAgIGlmIChyYi5nZXRUZXh0KCkgIT0gdGV4dDEpCisgICAgICAgICAgICBlcnJsbigoVW5pY29kZVN0cmluZykgIkVSUk9SOjEgZXJyb3IgaW4gYWRvcHRUZXh0ICIpOworICAgICAgICByYi5hZG9wdFRleHQodGV4dDIpOworICAgICAgICBpZiAocmIuZ2V0VGV4dCgpICE9IHRleHQyKQorICAgICAgICAgICAgZXJybG4oKFVuaWNvZGVTdHJpbmcpICJFUlJPUjoyIGVycm9yIGluIGFkb3B0VGV4dCAiKTsKKyAgICAgICAgKi8KKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICAqIFRlc3RpbmcgdGhlIG1ldGhvZHMgZmlyc3QoKSwgbmV4dCgpLCBuZXh0KGludCkgYW5kIGZvbGxvd2luZygpIG9mIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IKKyAgICAgICoqLworICAgIHB1YmxpYyB2b2lkIFRlc3RGaXJzdE5leHRGb2xsb3dpbmcoKSB7CisgICAgICAgIGludCBwLCBxOworICAgICAgICBTdHJpbmcgdGVzdFN0cmluZyA9ICJUaGlzIGlzIGEgd29yZCBicmVhay4gSXNuJ3QgaXQ/IDIuMjUiOworICAgICAgICBsb2dsbigiVGVzdGluZyBmaXJzdCgpIGFuZCBuZXh0KCksIGZvbGxvd2luZygpIHdpdGggY3VzdG9tIHJ1bGVzIik7CisgICAgICAgIGxvZ2xuKCJ0ZXN0aW5nIHdvcmQgaXRlcmF0b3IgLSBzdHJpbmcgOi0gXCIiICsgdGVzdFN0cmluZyArICJcIlxuIik7CisgICAgICAgIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3Igd29yZEl0ZXIxID0gKFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IpIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IuZ2V0V29yZEluc3RhbmNlKExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgICAgICB3b3JkSXRlcjEuc2V0VGV4dCh0ZXN0U3RyaW5nKTsKKyAgICAgICAgcCA9IHdvcmRJdGVyMS5maXJzdCgpOworICAgICAgICBpZiAocCAhPSAwKQorICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBmaXJzdCgpIHJldHVybmVkIiArIHAgKyAiaW5zdGVhZCBvZiAwIik7CisgICAgICAgIHEgPSB3b3JkSXRlcjEubmV4dCg5KTsKKyAgICAgICAgZG9UZXN0KHRlc3RTdHJpbmcsIHAsIHEsIDIwLCAiVGhpcyBpcyBhIHdvcmQgYnJlYWsiKTsKKyAgICAgICAgcCA9IHE7CisgICAgICAgIHEgPSB3b3JkSXRlcjEubmV4dCgpOworICAgICAgICBkb1Rlc3QodGVzdFN0cmluZywgcCwgcSwgMjEsICIuIik7CisgICAgICAgIHAgPSBxOworICAgICAgICBxID0gd29yZEl0ZXIxLm5leHQoMyk7CisgICAgICAgIGRvVGVzdCh0ZXN0U3RyaW5nLCBwLCBxLCAyOCwgIiBJc24ndCAiKTsKKyAgICAgICAgcCA9IHE7CisgICAgICAgIHEgPSB3b3JkSXRlcjEubmV4dCgyKTsKKyAgICAgICAgZG9UZXN0KHRlc3RTdHJpbmcsIHAsIHEsIDMxLCAiaXQ/Iik7CisgICAgICAgIHEgPSB3b3JkSXRlcjEuZm9sbG93aW5nKDIpOworICAgICAgICBkb1Rlc3QodGVzdFN0cmluZywgMiwgcSwgNCwgImlzIik7CisgICAgICAgIHEgPSB3b3JkSXRlcjEuZm9sbG93aW5nKDIyKTsKKyAgICAgICAgZG9UZXN0KHRlc3RTdHJpbmcsIDIyLCBxLCAyNywgIklzbid0Iik7CisgICAgICAgIHdvcmRJdGVyMS5sYXN0KCk7CisgICAgICAgIHAgPSB3b3JkSXRlcjEubmV4dCgpOworICAgICAgICBxID0gd29yZEl0ZXIxLmZvbGxvd2luZyh3b3JkSXRlcjEubGFzdCgpKTsKKyAgICAgICAgaWYgKHAgIT0gUnVsZUJhc2VkQnJlYWtJdGVyYXRvci5ET05FIHx8IHEgIT0gUnVsZUJhc2VkQnJlYWtJdGVyYXRvci5ET05FKQorICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBuZXh0KCkvZm9sbG93aW5nKCkgYXQgbGFzdCBwb3NpdGlvbiByZXR1cm5lZCAjIgorICAgICAgICAgICAgICAgICAgICArIHAgKyAiIGFuZCAiICsgcSArICIgaW5zdGVhZCBvZiIgKyB0ZXN0U3RyaW5nLmxlbmd0aCgpICsgIlxuIik7IAorICAgICAgICBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIGNoYXJJdGVyMSA9IChSdWxlQmFzZWRCcmVha0l0ZXJhdG9yKSBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yLmdldENoYXJhY3Rlckluc3RhbmNlKExvY2FsZS5nZXREZWZhdWx0KCkpOyAKKyAgICAgICAgdGVzdFN0cmluZyA9ICJXcml0ZSBoaW5kaSBoZXJlLiBcdTA5MmRcdTA5M2VcdTA5MzBcdTA5MjQgXHUwOTM4XHUwOTQxXHUwOTAyXHUwOTI2XHUwOTMwIFx1MDkzOVx1MDk0Y1x1MDk2NCI7IAorICAgICAgICBsb2dsbigidGVzdGluZyBjaGFyIGl0ZXIgLSBzdHJpbmc6LSBcIiIgKyB0ZXN0U3RyaW5nICsgIlwiIik7CisgICAgICAgIGNoYXJJdGVyMS5zZXRUZXh0KHRlc3RTdHJpbmcpOworICAgICAgICBwID0gY2hhckl0ZXIxLmZpcnN0KCk7CisgICAgICAgIGlmIChwICE9IDApCisgICAgICAgICAgICBlcnJsbigiRVJST1I6IGZpcnN0KCkgcmV0dXJuZWQiICsgcCArICJpbnN0ZWFkIG9mIDAiKTsKKyAgICAgICAgcSA9IGNoYXJJdGVyMS5uZXh0KCk7CisgICAgICAgIGRvVGVzdCh0ZXN0U3RyaW5nLCBwLCBxLCAxLCAiVyIpOworICAgICAgICBwID0gcTsKKyAgICAgICAgcSA9IGNoYXJJdGVyMS5uZXh0KDQpOworICAgICAgICBkb1Rlc3QodGVzdFN0cmluZywgcCwgcSwgNSwgInJpdGUiKTsKKyAgICAgICAgcCA9IHE7CisgICAgICAgIHEgPSBjaGFySXRlcjEubmV4dCgxMik7CisgICAgICAgIGRvVGVzdCh0ZXN0U3RyaW5nLCBwLCBxLCAxNywgIiBoaW5kaSBoZXJlLiIpOworICAgICAgICBwID0gcTsKKyAgICAgICAgcSA9IGNoYXJJdGVyMS5uZXh0KC02KTsKKyAgICAgICAgZG9UZXN0KHRlc3RTdHJpbmcsIHAsIHEsIDExLCAiIGhlcmUuIik7CisgICAgICAgIHAgPSBxOworICAgICAgICBxID0gY2hhckl0ZXIxLm5leHQoNik7CisgICAgICAgIGRvVGVzdCh0ZXN0U3RyaW5nLCBwLCBxLCAxNywgIiBoZXJlLiIpOworICAgICAgICAvLyBoaW5kaSBzdGFydHMgaGVyZQorICAgICAgICBwID0gcTsKKyAgICAgICAgcSA9IGNoYXJJdGVyMS5uZXh0KDQpOworICAgICAgICBkb1Rlc3QodGVzdFN0cmluZywgcCwgcSwgMjIsICIgXHUwOTJkXHUwOTNlXHUwOTMwXHUwOTI0Iik7CisgICAgICAgIHAgPSBxOworICAgICAgICBxID0gY2hhckl0ZXIxLm5leHQoMik7CisgICAgICAgIGRvVGVzdCh0ZXN0U3RyaW5nLCBwLCBxLCAyNiwgIiBcdTA5MzhcdTA5NDFcdTA5MDIiKTsKKworICAgICAgICBxID0gY2hhckl0ZXIxLmZvbGxvd2luZygyNCk7CisgICAgICAgIGRvVGVzdCh0ZXN0U3RyaW5nLCAyNCwgcSwgMjYsICJcdTA5NDFcdTA5MDIiKTsKKyAgICAgICAgcSA9IGNoYXJJdGVyMS5mb2xsb3dpbmcoMjApOworICAgICAgICBkb1Rlc3QodGVzdFN0cmluZywgMjAsIHEsIDIxLCAiXHUwOTMwIik7CisgICAgICAgIHAgPSBjaGFySXRlcjEuZm9sbG93aW5nKGNoYXJJdGVyMS5sYXN0KCkpOworICAgICAgICBxID0gY2hhckl0ZXIxLm5leHQoY2hhckl0ZXIxLmxhc3QoKSk7CisgICAgICAgIGlmIChwICE9IFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IuRE9ORSB8fCBxICE9IFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IuRE9ORSkKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogZm9sbG93aW5nKCkvbmV4dCgpIGF0IGxhc3QgcG9zaXRpb24gcmV0dXJuZWQgIyIKKyAgICAgICAgICAgICAgICAgICAgKyBwICsgIiBhbmQgIiArIHEgKyAiIGluc3RlYWQgb2YiICsgdGVzdFN0cmluZy5sZW5ndGgoKSk7IAorICAgICAgICB0ZXN0U3RyaW5nID0gIkhlbGxvISBob3cgYXJlIHlvdT8gSSdhbSBmaW5lLiBUaGFua3lvdS4gSG93IGFyZSB5b3UgZG9pbmc/IFRoaXNcbiBjb3N0cyAkMjAsMDAsMDAwLiI7IAorICAgICAgICBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIHNlbnRJdGVyMSA9IChSdWxlQmFzZWRCcmVha0l0ZXJhdG9yKSBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yLmdldFNlbnRlbmNlSW5zdGFuY2UoTG9jYWxlLmdldERlZmF1bHQoKSk7IAorICAgICAgICBsb2dsbigidGVzdGluZyBzZW50ZW5jZSBpdGVyIC0gU3RyaW5nOi0gXCIiICsgdGVzdFN0cmluZyArICJcIiIpOworICAgICAgICBzZW50SXRlcjEuc2V0VGV4dCh0ZXN0U3RyaW5nKTsKKyAgICAgICAgcCA9IHNlbnRJdGVyMS5maXJzdCgpOworICAgICAgICBpZiAocCAhPSAwKQorICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBmaXJzdCgpIHJldHVybmVkIiArIHAgKyAiaW5zdGVhZCBvZiAwIik7CisgICAgICAgIHEgPSBzZW50SXRlcjEubmV4dCgpOworICAgICAgICBkb1Rlc3QodGVzdFN0cmluZywgcCwgcSwgNywgIkhlbGxvISAiKTsKKyAgICAgICAgcCA9IHE7CisgICAgICAgIHEgPSBzZW50SXRlcjEubmV4dCgyKTsKKyAgICAgICAgZG9UZXN0KHRlc3RTdHJpbmcsIHAsIHEsIDMxLCAiaG93IGFyZSB5b3U/IEknYW0gZmluZS4gIik7CisgICAgICAgIHAgPSBxOworICAgICAgICBxID0gc2VudEl0ZXIxLm5leHQoLTIpOworICAgICAgICBkb1Rlc3QodGVzdFN0cmluZywgcCwgcSwgNywgImhvdyBhcmUgeW91PyBJJ2FtIGZpbmUuICIpOworICAgICAgICBwID0gcTsKKyAgICAgICAgcSA9IHNlbnRJdGVyMS5uZXh0KDQpOworICAgICAgICBkb1Rlc3QodGVzdFN0cmluZywgcCwgcSwgNjAsICJob3cgYXJlIHlvdT8gSSdhbSBmaW5lLiBUaGFua3lvdS4gSG93IGFyZSB5b3UgZG9pbmc/ICIpOworICAgICAgICBwID0gcTsKKyAgICAgICAgcSA9IHNlbnRJdGVyMS5uZXh0KCk7CisgICAgICAgIGRvVGVzdCh0ZXN0U3RyaW5nLCBwLCBxLCA4MywgIlRoaXNcbiBjb3N0cyAkMjAsMDAsMDAwLiIpOworICAgICAgICBxID0gc2VudEl0ZXIxLmZvbGxvd2luZygxKTsKKyAgICAgICAgZG9UZXN0KHRlc3RTdHJpbmcsIDEsIHEsIDcsICJlbGxvISAiKTsKKyAgICAgICAgcSA9IHNlbnRJdGVyMS5mb2xsb3dpbmcoMTApOworICAgICAgICBkb1Rlc3QodGVzdFN0cmluZywgMTAsIHEsIDIwLCAiIGFyZSB5b3U/ICIpOworICAgICAgICBxID0gc2VudEl0ZXIxLmZvbGxvd2luZygyMCk7CisgICAgICAgIGRvVGVzdCh0ZXN0U3RyaW5nLCAyMCwgcSwgMzEsICJJJ2FtIGZpbmUuICIpOworICAgICAgICBwID0gc2VudEl0ZXIxLmZvbGxvd2luZyhzZW50SXRlcjEubGFzdCgpKTsKKyAgICAgICAgcSA9IHNlbnRJdGVyMS5uZXh0KHNlbnRJdGVyMS5sYXN0KCkpOworICAgICAgICBpZiAocCAhPSBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yLkRPTkUgfHwgcSAhPSBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yLkRPTkUpCisgICAgICAgICAgICBlcnJsbigiRVJST1I6IGZvbGxvd2luZygpL25leHQoKSBhdCBsYXN0IHBvc2l0aW9uIHJldHVybmVkICMiCisgICAgICAgICAgICAgICAgICAgICsgcCArICIgYW5kICIgKyBxICsgIiBpbnN0ZWFkIG9mIiArIHRlc3RTdHJpbmcubGVuZ3RoKCkpOyAKKyAgICAgICAgdGVzdFN0cmluZyA9ICJIZWxsbyEgaG93XHJcbiAoYXJlKVxyIHlvdT8gSSdhbSBmaW5lLSBUaGFua3lvdS4gZm9vXHUwMGEwYmFyIEhvdywgYXJlLCB5b3U/IFRoaXMsIGNvc3RzICQyMCwwMCwwMDAuIjsgCisgICAgICAgIGxvZ2xuKCIoVW5pY29kZVN0cmluZyl0ZXN0aW5nIGxpbmUgaXRlciAtIFN0cmluZzotIFwiIiArIHRlc3RTdHJpbmcgKyAiXCIiKTsKKyAgICAgICAgUnVsZUJhc2VkQnJlYWtJdGVyYXRvciBsaW5lSXRlcjEgPSAoUnVsZUJhc2VkQnJlYWtJdGVyYXRvcikgUnVsZUJhc2VkQnJlYWtJdGVyYXRvci5nZXRMaW5lSW5zdGFuY2UoTG9jYWxlLmdldERlZmF1bHQoKSk7IAorICAgICAgICBsaW5lSXRlcjEuc2V0VGV4dCh0ZXN0U3RyaW5nKTsKKyAgICAgICAgcCA9IGxpbmVJdGVyMS5maXJzdCgpOworICAgICAgICBpZiAocCAhPSAwKQorICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBmaXJzdCgpIHJldHVybmVkIiArIHAgKyAiaW5zdGVhZCBvZiAwIik7CisgICAgICAgIHEgPSBsaW5lSXRlcjEubmV4dCgpOworICAgICAgICBkb1Rlc3QodGVzdFN0cmluZywgcCwgcSwgNywgIkhlbGxvISAiKTsKKyAgICAgICAgcCA9IHE7CisgICAgICAgIHAgPSBxOworICAgICAgICBxID0gbGluZUl0ZXIxLm5leHQoNCk7CisgICAgICAgIGRvVGVzdCh0ZXN0U3RyaW5nLCBwLCBxLCAyMCwgImhvd1xyXG4gKGFyZSlcciAiKTsKKyAgICAgICAgcCA9IHE7CisgICAgICAgIHEgPSBsaW5lSXRlcjEubmV4dCgtNCk7CisgICAgICAgIGRvVGVzdCh0ZXN0U3RyaW5nLCBwLCBxLCA3LCAiaG93XHJcbiAoYXJlKVxyICIpOworICAgICAgICBwID0gcTsKKyAgICAgICAgcSA9IGxpbmVJdGVyMS5uZXh0KDYpOworICAgICAgICBkb1Rlc3QodGVzdFN0cmluZywgcCwgcSwgMzAsICJob3dcclxuIChhcmUpXHIgeW91PyBJJ2FtICIpOworICAgICAgICBwID0gcTsKKyAgICAgICAgcSA9IGxpbmVJdGVyMS5uZXh0KCk7CisgICAgICAgIGRvVGVzdCh0ZXN0U3RyaW5nLCBwLCBxLCAzNiwgImZpbmUtICIpOworICAgICAgICBwID0gcTsKKyAgICAgICAgcSA9IGxpbmVJdGVyMS5uZXh0KDIpOworICAgICAgICBkb1Rlc3QodGVzdFN0cmluZywgcCwgcSwgNTQsICJUaGFua3lvdS4gZm9vXHUwMGEwYmFyICIpOworICAgICAgICBxID0gbGluZUl0ZXIxLmZvbGxvd2luZyg2MCk7CisgICAgICAgIGRvVGVzdCh0ZXN0U3RyaW5nLCA2MCwgcSwgNjQsICJyZSwgIik7CisgICAgICAgIHEgPSBsaW5lSXRlcjEuZm9sbG93aW5nKDEpOworICAgICAgICBkb1Rlc3QodGVzdFN0cmluZywgMSwgcSwgNywgImVsbG8hICIpOworICAgICAgICBxID0gbGluZUl0ZXIxLmZvbGxvd2luZygxMCk7CisgICAgICAgIGRvVGVzdCh0ZXN0U3RyaW5nLCAxMCwgcSwgMTIsICJcclxuIik7CisgICAgICAgIHEgPSBsaW5lSXRlcjEuZm9sbG93aW5nKDIwKTsKKyAgICAgICAgZG9UZXN0KHRlc3RTdHJpbmcsIDIwLCBxLCAyNSwgInlvdT8gIik7CisgICAgICAgIHAgPSBsaW5lSXRlcjEuZm9sbG93aW5nKGxpbmVJdGVyMS5sYXN0KCkpOworICAgICAgICBxID0gbGluZUl0ZXIxLm5leHQobGluZUl0ZXIxLmxhc3QoKSk7CisgICAgICAgIGlmIChwICE9IFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IuRE9ORSB8fCBxICE9IFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IuRE9ORSkKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogZm9sbG93aW5nKCkvbmV4dCgpIGF0IGxhc3QgcG9zaXRpb24gcmV0dXJuZWQgIyIKKyAgICAgICAgICAgICAgICAgICAgKyBwICsgIiBhbmQgIiArIHEgKyAiIGluc3RlYWQgb2YiICsgdGVzdFN0cmluZy5sZW5ndGgoKSk7IAorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBUZXN0aW5nIHRoZSBtZXRob2RzIGxhc3R0KCksIHByZXZpb3VzKCksIGFuZCBwcmVjZWRpbmcoKSBvZiBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yCisgICAgICoqLworICAgIHB1YmxpYyB2b2lkIFRlc3RMYXN0UHJldmlvdXNQcmVjZWRpbmcoKSB7CisgICAgICAgIGludCBwLCBxOworICAgICAgICBTdHJpbmcgdGVzdFN0cmluZyA9ICJUaGlzIGlzIGEgd29yZCBicmVhay4gSXNuJ3QgaXQ/IDIuMjUgZG9sbGFycyI7CisgICAgICAgIGxvZ2xuKCJUZXN0aW5nIGxhc3QoKSxwcmV2aW91cygpLCBwcmVjZWRpbmcoKSB3aXRoIGN1c3RvbSBydWxlcyIpOworICAgICAgICBsb2dsbigidGVzdGluZyB3b3JkIGl0ZXJhdGlvbiBmb3Igc3RyaW5nIFwiIiArIHRlc3RTdHJpbmcgKyAiXCIiKTsKKyAgICAgICAgUnVsZUJhc2VkQnJlYWtJdGVyYXRvciB3b3JkSXRlcjEgPSAoUnVsZUJhc2VkQnJlYWtJdGVyYXRvcikgUnVsZUJhc2VkQnJlYWtJdGVyYXRvci5nZXRXb3JkSW5zdGFuY2UoTG9jYWxlLmdldERlZmF1bHQoKSk7IAorICAgICAgICB3b3JkSXRlcjEuc2V0VGV4dCh0ZXN0U3RyaW5nKTsKKyAgICAgICAgcCA9IHdvcmRJdGVyMS5sYXN0KCk7CisgICAgICAgIGlmIChwICE9IHRlc3RTdHJpbmcubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogZmlyc3QoKSByZXR1cm5lZCIgKyBwICsgImluc3RlYWQgb2YiICsgdGVzdFN0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIH0KKyAgICAgICAgcSA9IHdvcmRJdGVyMS5wcmV2aW91cygpOworICAgICAgICBkb1Rlc3QodGVzdFN0cmluZywgcCwgcSwgMzcsICJkb2xsYXJzIik7CisgICAgICAgIHAgPSBxOworICAgICAgICBxID0gd29yZEl0ZXIxLnByZXZpb3VzKCk7CisgICAgICAgIGRvVGVzdCh0ZXN0U3RyaW5nLCBwLCBxLCAzNiwgIiAiKTsKKyAgICAgICAgcSA9IHdvcmRJdGVyMS5wcmVjZWRpbmcoMjUpOworICAgICAgICBkb1Rlc3QodGVzdFN0cmluZywgMjUsIHEsIDIyLCAiSXNuIik7CisgICAgICAgIHAgPSBxOworICAgICAgICBxID0gd29yZEl0ZXIxLnByZXZpb3VzKCk7CisgICAgICAgIGRvVGVzdCh0ZXN0U3RyaW5nLCBwLCBxLCAyMSwgIiAiKTsKKyAgICAgICAgcSA9IHdvcmRJdGVyMS5wcmVjZWRpbmcoMjApOworICAgICAgICBkb1Rlc3QodGVzdFN0cmluZywgMjAsIHEsIDE1LCAiYnJlYWsiKTsKKyAgICAgICAgcCA9IHdvcmRJdGVyMS5wcmVjZWRpbmcod29yZEl0ZXIxLmZpcnN0KCkpOworICAgICAgICBpZiAocCAhPSBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yLkRPTkUpCisgICAgICAgICAgICBlcnJsbigiRVJST1I6IHByZWNlZGluZygpICBhdCBzdGFydGluZyBwb3NpdGlvbiByZXR1cm5lZCAjIiArIHAgKyAiIGluc3RlYWQgb2YgMCIpOworICAgICAgICB0ZXN0U3RyaW5nID0gIldyaXRlIGhpbmRpIGhlcmUuIFx1MDkyZFx1MDkzZVx1MDkzMFx1MDkyNCBcdTA5MzhcdTA5NDFcdTA5MDJcdTA5MjZcdTA5MzAgXHUwOTM5XHUwOTRjXHUwOTY0IjsgCisgICAgICAgIGxvZ2xuKCJ0ZXN0aW5nIGNoYXJhY3RlciBpdGVyYXRpb24gZm9yIHN0cmluZyBcIiAiICsgdGVzdFN0cmluZyArICJcIiBcbiIpOworICAgICAgICBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIGNoYXJJdGVyMSA9IChSdWxlQmFzZWRCcmVha0l0ZXJhdG9yKSBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yLmdldENoYXJhY3Rlckluc3RhbmNlKExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgICAgICBjaGFySXRlcjEuc2V0VGV4dCh0ZXN0U3RyaW5nKTsKKyAgICAgICAgcCA9IGNoYXJJdGVyMS5sYXN0KCk7CisgICAgICAgIGlmIChwICE9IHRlc3RTdHJpbmcubGVuZ3RoKCkpCisgICAgICAgICAgICBlcnJsbigiRVJST1I6IGZpcnN0KCkgcmV0dXJuZWQiICsgcCArICJpbnN0ZWFkIG9mIiArIHRlc3RTdHJpbmcubGVuZ3RoKCkpOworICAgICAgICBxID0gY2hhckl0ZXIxLnByZXZpb3VzKCk7CisgICAgICAgIGRvVGVzdCh0ZXN0U3RyaW5nLCBwLCBxLCAzMSwgIlx1MDk2NCIpOworICAgICAgICBwID0gcTsKKyAgICAgICAgcSA9IGNoYXJJdGVyMS5wcmV2aW91cygpOworICAgICAgICBkb1Rlc3QodGVzdFN0cmluZywgcCwgcSwgMjksICJcdTA5MzlcdTA5NGMiKTsKKyAgICAgICAgcSA9IGNoYXJJdGVyMS5wcmVjZWRpbmcoMjYpOworICAgICAgICBkb1Rlc3QodGVzdFN0cmluZywgMjYsIHEsIDIzLCAiXHUwOTM4XHUwOTQxXHUwOTAyIik7CisgICAgICAgIHEgPSBjaGFySXRlcjEucHJlY2VkaW5nKDE2KTsKKyAgICAgICAgZG9UZXN0KHRlc3RTdHJpbmcsIDE2LCBxLCAxNSwgImUiKTsKKyAgICAgICAgcCA9IHE7CisgICAgICAgIHEgPSBjaGFySXRlcjEucHJldmlvdXMoKTsKKyAgICAgICAgZG9UZXN0KHRlc3RTdHJpbmcsIHAsIHEsIDE0LCAiciIpOworICAgICAgICBjaGFySXRlcjEuZmlyc3QoKTsKKyAgICAgICAgcCA9IGNoYXJJdGVyMS5wcmV2aW91cygpOworICAgICAgICBxID0gY2hhckl0ZXIxLnByZWNlZGluZyhjaGFySXRlcjEuZmlyc3QoKSk7CisgICAgICAgIGlmIChwICE9IFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IuRE9ORSB8fCBxICE9IFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IuRE9ORSkKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogcHJldmlvdXMoKS9wcmVjZWRpbmcoKSBhdCBzdGFydGluZyBwb3NpdGlvbiByZXR1cm5lZCAjIgorICAgICAgICAgICAgICAgICAgICArIHAgKyAiIGFuZCAiICsgcSArICIgaW5zdGVhZCBvZiAwXG4iKTsgCisgICAgICAgIHRlc3RTdHJpbmcgPSAiSGVsbG8hIGhvdyBhcmUgeW91PyBJJ2FtIGZpbmUuIFRoYW5reW91LiBIb3cgYXJlIHlvdSBkb2luZz8gVGhpc1xuIGNvc3RzICQyMCwwMCwwMDAuIjsgCisgICAgICAgIGxvZ2xuKCJ0ZXN0aW5nIHNlbnRlbmNlIGl0ZXIgLSBTdHJpbmc6LSBcIiIgKyB0ZXN0U3RyaW5nICsgIlwiIik7CisgICAgICAgIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3Igc2VudEl0ZXIxID0gKFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IpIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IuZ2V0U2VudGVuY2VJbnN0YW5jZShMb2NhbGUuZ2V0RGVmYXVsdCgpKTsgCisgICAgICAgIHNlbnRJdGVyMS5zZXRUZXh0KHRlc3RTdHJpbmcpOworICAgICAgICBwID0gc2VudEl0ZXIxLmxhc3QoKTsKKyAgICAgICAgaWYgKHAgIT0gdGVzdFN0cmluZy5sZW5ndGgoKSkKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogbGFzdCgpIHJldHVybmVkIiArIHAgKyAiaW5zdGVhZCBvZiAiICsgdGVzdFN0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIHEgPSBzZW50SXRlcjEucHJldmlvdXMoKTsKKyAgICAgICAgZG9UZXN0KHRlc3RTdHJpbmcsIHAsIHEsIDYwLCAiVGhpc1xuIGNvc3RzICQyMCwwMCwwMDAuIik7CisgICAgICAgIHAgPSBxOworICAgICAgICBxID0gc2VudEl0ZXIxLnByZXZpb3VzKCk7CisgICAgICAgIGRvVGVzdCh0ZXN0U3RyaW5nLCBwLCBxLCA0MSwgIkhvdyBhcmUgeW91IGRvaW5nPyAiKTsKKyAgICAgICAgcSA9IHNlbnRJdGVyMS5wcmVjZWRpbmcoNDApOworICAgICAgICBkb1Rlc3QodGVzdFN0cmluZywgNDAsIHEsIDMxLCAiVGhhbmt5b3UuIik7CisgICAgICAgIHEgPSBzZW50SXRlcjEucHJlY2VkaW5nKDI1KTsKKyAgICAgICAgZG9UZXN0KHRlc3RTdHJpbmcsIDI1LCBxLCAyMCwgIkknYW0gIik7CisgICAgICAgIHNlbnRJdGVyMS5maXJzdCgpOworICAgICAgICBwID0gc2VudEl0ZXIxLnByZXZpb3VzKCk7CisgICAgICAgIHEgPSBzZW50SXRlcjEucHJlY2VkaW5nKHNlbnRJdGVyMS5maXJzdCgpKTsKKyAgICAgICAgaWYgKHAgIT0gUnVsZUJhc2VkQnJlYWtJdGVyYXRvci5ET05FIHx8IHEgIT0gUnVsZUJhc2VkQnJlYWtJdGVyYXRvci5ET05FKQorICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBwcmV2aW91cygpL3ByZWNlZGluZygpIGF0IHN0YXJ0aW5nIHBvc2l0aW9uIHJldHVybmVkICMiCisgICAgICAgICAgICAgICAgICAgICsgcCArICIgYW5kICIgKyBxICsgIiBpbnN0ZWFkIG9mIDBcbiIpOyAKKyAgICAgICAgdGVzdFN0cmluZyA9ICJIZWxsbyEgaG93IGFyZSB5b3U/IEknYW0gZmluZS4gVGhhbmt5b3UuIEhvdyBhcmUgeW91IGRvaW5nPyBUaGlzXG4gY29zdHMgJDIwLDAwLDAwMC4iOyAKKyAgICAgICAgbG9nbG4oInRlc3RpbmcgbGluZSBpdGVyIC0gU3RyaW5nOi0gXCIiICsgdGVzdFN0cmluZyArICJcIiIpOworICAgICAgICBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIGxpbmVJdGVyMSA9IChSdWxlQmFzZWRCcmVha0l0ZXJhdG9yKSBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yLmdldExpbmVJbnN0YW5jZShMb2NhbGUuZ2V0RGVmYXVsdCgpKTsKKyAgICAgICAgbGluZUl0ZXIxLnNldFRleHQodGVzdFN0cmluZyk7CisgICAgICAgIHAgPSBsaW5lSXRlcjEubGFzdCgpOworICAgICAgICBpZiAocCAhPSB0ZXN0U3RyaW5nLmxlbmd0aCgpKQorICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBsYXN0KCkgcmV0dXJuZWQiICsgcCArICJpbnN0ZWFkIG9mICIgKyB0ZXN0U3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgcSA9IGxpbmVJdGVyMS5wcmV2aW91cygpOworICAgICAgICBkb1Rlc3QodGVzdFN0cmluZywgcCwgcSwgNzIsICIkMjAsMDAsMDAwLiIpOworICAgICAgICBwID0gcTsKKyAgICAgICAgcSA9IGxpbmVJdGVyMS5wcmV2aW91cygpOworICAgICAgICBkb1Rlc3QodGVzdFN0cmluZywgcCwgcSwgNjYsICJjb3N0cyAiKTsKKyAgICAgICAgcSA9IGxpbmVJdGVyMS5wcmVjZWRpbmcoNDApOworICAgICAgICBkb1Rlc3QodGVzdFN0cmluZywgNDAsIHEsIDMxLCAiVGhhbmt5b3UuIik7CisgICAgICAgIHEgPSBsaW5lSXRlcjEucHJlY2VkaW5nKDI1KTsKKyAgICAgICAgZG9UZXN0KHRlc3RTdHJpbmcsIDI1LCBxLCAyMCwgIkknYW0gIik7CisgICAgICAgIGxpbmVJdGVyMS5maXJzdCgpOworICAgICAgICBwID0gbGluZUl0ZXIxLnByZXZpb3VzKCk7CisgICAgICAgIHEgPSBsaW5lSXRlcjEucHJlY2VkaW5nKHNlbnRJdGVyMS5maXJzdCgpKTsKKyAgICAgICAgaWYgKHAgIT0gUnVsZUJhc2VkQnJlYWtJdGVyYXRvci5ET05FIHx8IHEgIT0gUnVsZUJhc2VkQnJlYWtJdGVyYXRvci5ET05FKQorICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBwcmV2aW91cygpL3ByZWNlZGluZygpIGF0IHN0YXJ0aW5nIHBvc2l0aW9uIHJldHVybmVkICMiCisgICAgICAgICAgICAgICAgICAgICsgcCArICIgYW5kICIgKyBxICsgIiBpbnN0ZWFkIG9mIDBcbiIpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBUZXN0cyB0aGUgbWV0aG9kIElzQm91bmRhcnkoKSBvZiBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yCisgICAgICoqLworICAgIHB1YmxpYyB2b2lkIFRlc3RJc0JvdW5kYXJ5KCkgeworICAgICAgICBTdHJpbmcgdGVzdFN0cmluZzEgPSAiV3JpdGUgaGVyZS4gXHUwOTJkXHUwOTNlXHUwOTMwXHUwOTI0IFx1MDkzOFx1MDk0MVx1MDkwMlx1MDkyNlx1MDkzMCBcdTA5MzlcdTA5NGNcdTA5NjQiOworICAgICAgICBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIGNoYXJJdGVyMSA9IChSdWxlQmFzZWRCcmVha0l0ZXJhdG9yKSBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yLmdldENoYXJhY3Rlckluc3RhbmNlKExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgICAgICBjaGFySXRlcjEuc2V0VGV4dCh0ZXN0U3RyaW5nMSk7CisgICAgICAgIGludCBib3VuZHMxW10gPSB7MCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTQsIDE1LCAxNiwgMTcsIDIwLCAyMSwgMjIsIDIzLCAyNSwgMjZ9OworICAgICAgICBkb0JvdW5kYXJ5VGVzdChjaGFySXRlcjEsIHRlc3RTdHJpbmcxLCBib3VuZHMxKTsKKyAgICAgICAgUnVsZUJhc2VkQnJlYWtJdGVyYXRvciB3b3JkSXRlcjIgPSAoUnVsZUJhc2VkQnJlYWtJdGVyYXRvcikgUnVsZUJhc2VkQnJlYWtJdGVyYXRvci5nZXRXb3JkSW5zdGFuY2UoTG9jYWxlLmdldERlZmF1bHQoKSk7CisgICAgICAgIHdvcmRJdGVyMi5zZXRUZXh0KHRlc3RTdHJpbmcxKTsKKyAgICAgICAgaW50IGJvdW5kczJbXSA9IHswLCA1LCA2LCAxMCwgMTEsIDEyLCAxNiwgMTcsIDIyLCAyMywgMjZ9OworICAgICAgICBkb0JvdW5kYXJ5VGVzdCh3b3JkSXRlcjIsIHRlc3RTdHJpbmcxLCBib3VuZHMyKTsKKyAgICB9CisgICAgCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvL0ludGVybmFsIHN1YnJvdXRpbmVzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvKiBJbnRlcm5hbCBzdWJyb3V0aW5lIHVzZWQgYnkgVGVzdElzQm91bmRhcnkoKSAqLyAKKyAgICBwdWJsaWMgdm9pZCBkb0JvdW5kYXJ5VGVzdChSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIGJpLCBTdHJpbmcgdGV4dCwgaW50W10gYm91bmRhcmllcykgeworICAgICAgICBsb2dsbigidGVzdElzQm91bmRhcnkoKToiKTsKKyAgICAgICAgaW50IHAgPSAwOworICAgICAgICBib29sZWFuIGlzQjsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0ZXh0Lmxlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgICAgIGlzQiA9IGJpLmlzQm91bmRhcnkoaSk7CisgICAgICAgICAgICBsb2dsbigiYmkuaXNCb3VuZGFyeSgiICsgaSArICIpIC0+ICIgKyBpc0IpOworICAgICAgICAgICAgaWYgKGkgPT0gYm91bmRhcmllc1twXSkgeworICAgICAgICAgICAgICAgIGlmICghaXNCKQorICAgICAgICAgICAgICAgICAgICBlcnJsbigiV3JvbmcgcmVzdWx0IGZyb20gaXNCb3VuZGFyeSgpIGZvciAiICsgaSArICI6IGV4cGVjdGVkIHRydWUsIGdvdCBmYWxzZSIpOworICAgICAgICAgICAgICAgIHArKzsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGlzQikKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIldyb25nIHJlc3VsdCBmcm9tIGlzQm91bmRhcnkoKSBmb3IgIiArIGkgKyAiOiBleHBlY3RlZCBmYWxzZSwgZ290IHRydWUiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKkludGVybmFsIHN1YnJvdXRpbmUgdXNlZCBmb3IgY29tcGFyaXNpb24gb2YgZXhwZWN0ZWQgYW5kIGFjcXVpcmVkIHJlc3VsdHMgKi8KKyAgICBwdWJsaWMgdm9pZCBkb1Rlc3QoU3RyaW5nIHRlc3RTdHJpbmcsIGludCBzdGFydCwgaW50IGdvdG9mZnNldCwgaW50IGV4cGVjdGVkT2Zmc2V0LCBTdHJpbmcgZXhwZWN0ZWRTdHJpbmcpIHsKKyAgICAgICAgU3RyaW5nIHNlbGVjdGVkOworICAgICAgICBTdHJpbmcgZXhwZWN0ZWQgPSBleHBlY3RlZFN0cmluZzsKKyAgICAgICAgaWYgKGdvdG9mZnNldCAhPSBleHBlY3RlZE9mZnNldCkKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjoqKioqcmV0dXJuZWQgIyIgKyBnb3RvZmZzZXQgKyAiIGluc3RlYWQgb2YgIyIgKyBleHBlY3RlZE9mZnNldCk7CisgICAgICAgIGlmIChzdGFydCA8PSBnb3RvZmZzZXQpIHsKKyAgICAgICAgICAgIHNlbGVjdGVkID0gdGVzdFN0cmluZy5zdWJzdHJpbmcoc3RhcnQsIGdvdG9mZnNldCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzZWxlY3RlZCA9IHRlc3RTdHJpbmcuc3Vic3RyaW5nKGdvdG9mZnNldCwgc3RhcnQpOworICAgICAgICB9CisgICAgICAgIGlmICghc2VsZWN0ZWQuZXF1YWxzKGV4cGVjdGVkKSkKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjoqKioqc2VsZWN0ZWQgXCIiICsgc2VsZWN0ZWQgKyAiXCIgaW5zdGVhZCBvZiBcIiIgKyBleHBlY3RlZCArICJcIiIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBsb2dsbigiKioqKnNlbGVjdGVkIFwiIiArIHNlbGVjdGVkICsgIlwiIik7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9yYmJpL1JCQklUZXN0LmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvcmJiaS9SQkJJVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjRjMGRiOTIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvcmJiaS9SQkJJVGVzdC5qYXZhCkBAIC0wLDAgKzEsOTUyIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvcmJiaS9SQkJJVGVzdC5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzAyLzE2IDAzOjA1OjE1ICQgCisgKiAkUmV2aXNpb246IDEuMyAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3QucmJiaTsKKyAKKy8vUmVncmVzc2lvbiB0ZXN0aW5nIG9mIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYudGVzdC4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuUnVsZUJhc2VkQnJlYWtJdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7CitpbXBvcnQgamF2YS5pby4qOyAgCisKK3B1YmxpYyBjbGFzcyBSQkJJVGVzdCBleHRlbmRzIFRlc3RGbXdrIAoreyAgCisgIHByaXZhdGUgUnVsZUJhc2VkQnJlYWtJdGVyYXRvciBjaGFyYWN0ZXJCcmVhazsKKyAgcHJpdmF0ZSBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIHdvcmRCcmVhazsKKyAgcHJpdmF0ZSBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIGxpbmVCcmVhazsKKyAgcHJpdmF0ZSBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIHNlbnRlbmNlQnJlYWs7CisgICAgCisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworICAgIG5ldyBSQkJJVGVzdCgpLnJ1bihhcmdzKTsKKyAgfQorCisgIHB1YmxpYyBSQkJJVGVzdCgpIHsgCisgIH0KKyAgCisgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgaGFsZk5BID0gIlx1MDkyOFx1MDk0ZFx1MjAwZCI7ICAvKmhhbGZmb3JtIE5BID0gZGV2YW5pZ2lyaSBOQSArIHZpcmFtYShzdXByZXNzZXMgaW5oZXJlbnQgdm93ZWwpKyB6ZXJvIHdpZHRoIGpvaW5lciAqLyAgCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBoYWxmU0EgID0gIlx1MDkzOFx1MDk0ZFx1MjAwZCI7IAorICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgaGFsZkNIQSA9ICJcdTA5MWFcdTA5NGRcdTIwMGQiOyAKKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIGhhbGZLQSAgPSAiXHUwOTE1XHUwOTRkXHUyMDBkIjsgCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBkZWFkVEEgID0gIlx1MDkyNFx1MDk0ZCI7CisKKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIGRlYWRSQSAgID0gIlx1MDkzMFx1MDk0ZCI7ICAvKmRlYWRmb3JtIFJBID0gZGV2YW5hZ2FyaSBSQSArIHZpcmFtYSovCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBkZWFkUEhBICA9ICJcdTA5MmJcdTA5NGQiOyAgLypkZWFkZm9ybSBQSEEgPSBkZXZhbmFnYXJpIFBIQSArIHZpcmFtYSovCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBkZWFkVFRIQSA9ICJcdTA5MjBcdTA5NGQiOyAKKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIGRlYWRQQSAgID0gIlx1MDkyYVx1MDk0ZCI7IAorICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgZGVhZFNBICAgPSAiXHUwOTM4XHUwOTRkIjsgICAvKmRldmFuYWdhcmkgdmlzYXJnYSBsb29rcyBsaWtlIGEgZW5nbGlzaCBjb2xvbiovCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyB2aXNhcmdhICA9ICJcdTA5MDMiOworCisKKyAgLy90ZXN0cyBkZWZhdWx0IHJ1bGVzIGJhc2VkIGNoYXJhY3RlciBpdGVyYXRpb24KKyAgcHVibGljIHZvaWQgVGVzdERlZmF1bHRSdWxlQmFzZWRDaGFyYWN0ZXJJdGVyYXRpb24oKXsKKyAgICAgIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IgcmJiaT0oUnVsZUJhc2VkQnJlYWtJdGVyYXRvcilSdWxlQmFzZWRCcmVha0l0ZXJhdG9yLmdldENoYXJhY3Rlckluc3RhbmNlKCk7CisgICAgICBsb2dsbigiVGVzdGluZyB0aGUgUkJCSSBmb3IgY2hhcmFjdGVyIGl0ZXJhdGlvbiBieSB1c2luZyBkZWZhdWx0IHJ1bGVzIik7CisgICAgICAvL2ZldGNoIHRoZSBydWxlcyB1c2VkIHRvIGNyZWF0ZSB0aGUgYWJvdmUgUnVsZUJhc2VkQnJlYWtJdGVyYXRvcgorICAgICAgU3RyaW5nIGRlZmF1bHRSdWxlcz1yYmJpLnRvU3RyaW5nKCk7CisgICAgICAKKyAgICAgIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IgY2hhckl0ZXJEZWZhdWx0PW51bGw7CisgICAgICB0cnl7CisgICAgICBjaGFySXRlckRlZmF1bHQgICA9IG5ldyBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yKGRlZmF1bHRSdWxlcyk7IAorICAgICAgfWNhdGNoKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpYWUpeworICAgICAgICAgIGVycmxuKCJFUlJPUjogZmFpbGVkIGNvbnN0cnVjdGlvbiBpbiBUZXN0RGVmYXVsdFJ1bGVCYXNlZENoYXJhY3Rlckl0ZXJhdGlvbigpIisgaWFlLnRvU3RyaW5nKCkpOworICAgICAgfQorCisgICAgICBWZWN0b3IgY2hhcmRhdGEgPSBuZXcgVmVjdG9yKCk7CisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJIIik7CisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJlIik7CisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJsIik7CisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJsIik7CisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJvIik7CisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJlXHUwMzAxIik7ICAgICAgICAgICAgICAgICAgIC8vYWN1dGVFCisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCImIik7CisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJlXHUwMzAzIik7ICAgICAgICAgICAgICAgICAgIC8vdGlsZGFFCisgICAgICAvL2RldmFuYWdpcmkgY2hhcmFjdGVycyBmb3IgSGluZGkgc3VwcG9ydAorICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHUwOTA2Iik7ICAgICAgICAgICAgICAgICAgICAvL2RldmFuYWdpcmkgQUEKKyAgICAgIC8vY2hhcmRhdGEuYWRkRWxlbWVudCgiXHUwOTNlXHUwOTAxIik7ICAgICAgICAgICAgICAvL2RldmFuYWdpcmkgdm93ZWxzaWduIEFBKyBjaGFuZHJhYmluZGh1CisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcdTA5MTZcdTA5NDciKTsgICAgICAgICAgICAgIC8vZGV2YW5hZ2lyaSBLSEErdm93ZWxzaWduIEUKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MDkzOFx1MDk0MVx1MDkwMiIpOyAgICAgICAgLy9kZXZhbmFnaXJpIFNBK3Zvd2Vsc2lnbiBVICsgYW51c3ZhcmEoYmluZHUpCisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcdTA5MjYiKTsgICAgICAgICAgICAgICAgICAgIC8vZGV2YW5hZ2lyaSBjb25zb25hbnQgREEKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MDkzMCIpOyAgICAgICAgICAgICAgICAgICAgLy9kZXZhbmFnaXJpIGNvbnNvbmFudCBSQQorICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHUwOTM5XHUwOTRjIik7ICAgICAgICAgICAgICAvL2RldmFuYWdpcmkgSEErdm93ZWwgc2lnbiBBSQorICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHUwOTY0Iik7ICAgICAgICAgICAgICAgICAgICAvL2RldmFuYWdpcmkgZGFuZGEKKyAgICAgIC8vZW5kIGhpbmRpIGNoYXJhY3RlcnMgICAgICAKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIkFcdTAzMDIiKTsgICAgICAgICAgICAgICAgICAgLy8gY2lyY3VtZmxleEEgCisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJpXHUwMzAxIik7ICAgICAgICAgICAgICAgICAgIC8vIGFjdXRlQmVsb3dJICAgCisgICAgICAvLyBjb25qb2luaW5nIGphbW8uLi4gCisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcdTExMDlcdTExNjFcdTExYmMiKTsKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MTExMlx1MTE2MVx1MTFiYyIpOworICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXG4iKTsKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlxyXG4iKTsgICAgICAgICAgICAgICAgICAgICAgLy8ga2VlcCBDUkxGIHNlcXVlbmNlcyB0b2dldGhlciAgCisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJTXHUwMzAwIik7ICAgICAgICAgICAgICAgICAgIC8vZ3JhdmVTCisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJpXHUwMzAxIik7ICAgICAgICAgICAgICAgICAgIC8vIGFjdXRlQmVsb3dJCisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCIhIik7CisKKyAgICAgICAvLyBXaGF0IGZvbGxvd3MgaXMgYSBzdHJpbmcgb2YgS29yZWFuIGNoYXJhY3RlcnMgKEkgZm91bmQgaXQgaW4gdGhlIFllbGxvdyBQYWdlcworICAgICAgLy8gYWQgZm9yIHRoZSBLb3JlYW4gUHJlc2J5dGVyaWFuIENodXJjaCBvZiBTYW4gRnJhbmNpc2NvLCBhbmQgSSBob3BlIEkgdHJhbnNjcmliZWQKKyAgICAgIC8vIGl0IGNvcnJlY3RseSksIGZpcnN0IGFzIHByZWNvbXBvc2VkIHN5bGxhYmxlcywgYW5kIHRoZW4gYXMgY29uam9pbmluZyBqYW1vLgorICAgICAgLy8gQm90aCBzZXF1ZW5jZXMgc2hvdWxkIGJlIHNlbWFudGljYWxseSBpZGVudGljYWwgYW5kIGJyZWFrIHRoZSBzYW1lIHdheS4KKyAgICAgIC8vIHByZWNvbXBvc2VkIHN5bGxhYmxlcy4uLgorICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHVjMGMxIik7CisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcdWQ1NmQiKTsKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1ZDU1YyIpOworICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHVjNzc4Iik7CisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcdWM1ZjAiKTsKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1ZDU2OSIpOworICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHVjN2E1Iik7CisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcdWI4NWMiKTsKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1YWQ1MCIpOworICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHVkNjhjIik7CisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICAgLy8gY29uam9pbmluZyBqYW1vLi4uCisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcdTExMDlcdTExNjFcdTExYmMiKTsKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MTExMlx1MTE2MVx1MTFiYyIpOworICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHUxMTEyXHUxMTYxXHUxMWFiIik7CisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcdTExMGJcdTExNzVcdTExYWIiKTsKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MTEwYlx1MTE2N1x1MTFhYiIpOworICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHUxMTEyXHUxMTYxXHUxMWI4Iik7CisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcdTExMGNcdTExNjFcdTExYmMiKTsKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MTEwNVx1MTE2OSIpOworICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHUxMTAwXHUxMTZkIik7CisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcdTExMTJcdTExNmMiKTsKKworICAgICAgLy9UZXN0aW5nIHRoZSBCcmVha0l0ZXJhdG9yIGZvciBkZXZhbmFnYXJpIHNjcmlwdAorICAgICAgLy9kZXZhbmFnYXJpIGNoYXJhY3RlcnMgZm9yIEhpbmRpIHN1cHBvcnQKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MDkwNiIpOyAgICAgICAgICAgICAgICAgICAgLy9kZXZhbmFnYXJpIEFBCisgICAgICAvL2hpbmRpIGNoYXJhY3RlciBicmVhayBzaG91bGQgbWFrZSBzdXJlIHRoYXQgaXQgCisgICAgICAvLyBkb2Vzbid0IGJyZWFrIGluLWJldHdlZW4gYSB2b3dlbHNpZ24gYW5kIGEgY2hhbmRyYWJpbmR1CisgICAgLy8gIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MDkzZVx1MDkwMSIpOyAgICAgICAgICAgICAgLy9kZXZhbmFnYXJpIHZvd2Vsc2lnbiBBQSsgY2hhbmRyYWJpbmR1CisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcdTA5MTZcdTA5NDciKTsgICAgICAgICAgICAgIC8vZGV2YW5hZ2FyaSBLSEErdm93ZWxzaWduIEUKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MDkzOFx1MDk0MVx1MDkwMiIpOyAgICAgICAgLy9kZXZhbmFnYXJpIFNBK3Zvd2Vsc2lnbiBVICsgYW51c3ZhcmEoYmluZHUpCisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcdTA5MjYiKTsgICAgICAgICAgICAgICAgICAgIC8vZGV2YW5hZ2FyaSBjb25zb25hbnQgREEKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MDkzMCIpOyAgICAgICAgICAgICAgICAgICAgLy9kZXZhbmFnYXJpIGNvbnNvbmFudCBSQQorICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHUwOTM5XHUwOTRjIik7ICAgICAgICAgICAgICAvL2RldmFuYWdhcmkgY29uc29uYW50IEhBK2RlcGVuZGVudCB2b3dlbCBzaWduIEFJCisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcdTA5NjQiKTsgICAgICAgICAgICAgICAgICAgIC8vZGV2YW5hZ2FyaSBkYW5kYQorICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHUwOTUwIik7ICAgICAgICAgICAgICAgICAgICAvL2RldmFuYWdhcmkgT00gCisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcdTA5MTVcdTA5NDMiKTsgICAgICAgICAgICAgIC8vZGV2YW5hZ2FyaSBLQStkZXBlbmRlbnQgdm93ZWwgUkktPktSSQorCisgICAgICAvL2RlcGVuZGVudCBoYWxmLWZvcm1zCisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KGhhbGZTQSsgIlx1MDkyNCIpOyAgICAgICAgICAgICAvL2hhbGZTQStiYXNlIGNvbnNvbmFudCBUQS0+U1RBCisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KGhhbGZTQSsgIlx1MDkyNSIpOyAgICAgICAgICAgICAvL2hhbGZTQStiYXNlIGNvbnNvbmFudCBUSEEtPlNUSEEKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoaGFsZlNBKyAiXHUwOTJlIik7ICAgICAgICAgICAgIC8vaGFsZlNBK2Jhc2UgY29uc29uYW50IE1BLT5TTUEKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoaGFsZkNIQSsgIlx1MDkxYiIpOyAgICAgICAgICAgIC8vaGFsZkNIQStiYXNlIGNvbnNvbmFudCBDSEhBLT5DSEhIQQorICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudChoYWxmTkErICJcdTA5MTciKTsgICAgICAgICAgICAgLy9oYWxmTkErYmFzZSBjb25zb25hbnQgR0EtPk5HQQorICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHUwOTJhXHUwOTRkXHUyMDBkXHUwOTJmIik7ICAgLy9oYWxmUEEoUEErdmlyYW1hK3plcm93aWR0aGpvaW5lcitiYXNlIGNvbnNvbmFudCBZQS0+UFlBCisKKworICAgICAgLy9jb25zb25hbnQgUkEgcnVsZXMgLS0tLS0tLS0tLQorICAgICAgLy9pZiB0aGUgZGVhZCBjb25zb25hbnQgUkEgcHJlY2VkZXMgZWl0aGVyIGEgY29uc29uYW50IG9yIGFuIGluZGVwZW5kZW50IHZvd2VsLAorICAgICAgLy90aGVuIGl0IGlzIHJlcGxhY2VkIGJ5IGl0cyBzdXBlcnNjcmlwdCBub24tc3BhY2luZyBtYXJrCisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KGRlYWRSQSsgIlx1MDkxNSIpOyAgICAgICAgICAgICAvL2RlYWRSQStkZXZhbmFnYXJpIGNvbnNvbmFudCBLQS0+S0Erc3VwZXJSQSAKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoZGVhZFJBKyAiXHUwOTIzIik7ICAgICAgICAgICAgIC8vZGVhZFJBK2RldmFuYWdhcmkgY29uc29uYW50IE5OQS0+Tk5BK3N1cGVyUkEKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoZGVhZFJBKyAiXHUwOTE3Iik7ICAgICAgICAgICAgIC8vZGVhZFJBK2RldmFuYWdhcmkgY29uc29uYW50IEdBLT5HQStzdXBlclJBCisgICAvLyAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoZGVhZFJBKyAiXHUwOTYwIik7ICAgICAgICAgICAvL2RlYWRSQStkZXZhbmFnYXJpIGNvc29uYW50IFJSSS0+UlJJK3N1cGVyUkEKKyAgICAgIAorICAgICAgLy9pZiBhbnkgZGVhZCBjb25zb25hbnQob3RoZXIgdGhhbiBkZWFkIFJBKXByZWNlZGVzIHRoZSBjb25zb25hbnQgUkEsIHRoZW4KKyAgICAgIC8vaXQgaXMgcmVwbGFjZWQgd2l0aCBpdHMgbm9taW5hbCBmb3JtYSBuZCBSQSBpcyByZXBsYWNlZCBieSB0aGUgc3Vic2NyaXB0IG5vbi1zcGFjaW5nIG1hcmsuCisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KGRlYWRQSEErICJcdTA5MzAiKTsgICAgICAgICAgICAvL2RlYWRQSEErZGV2YW5hZ2FyaSBjb25zb25hbnQgUkEtPlBIQStzdWJSQQorICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudChkZWFkUEErICJcdTA5MzAiKTsgICAgICAgICAgICAgLy9kZWFkUEErZGV2YW5hZ2FyaSBjb25zb25hbnQgUkEtPlBBK3N1YlJBCisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KGRlYWRUVEhBKyAiXHUwOTMwIik7ICAgICAgICAgICAvL2RlYWRUVEhBK2RldmFuYWdhcmkgY29uc29uYW50IFJBLT5UVEhBK3N1YlJBCisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KGRlYWRUQSsgIlx1MDkzMCIpOyAgICAgICAgICAgICAvL2RlYWRUQStSQS0+VFJBIAorICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHUwOTM2XHUwOTRkXHUwOTMwIik7ICAgICAgICAgLy9kZWFkU0hBKFNIQSt2aXJhbWEpK1JBLT5TSFJBIAorCisgICAgICAvL2Nvbmp1Y3QgbGlnYXR1cmVzCisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcdTA5MTVcdTA5NGRcdTA5MzciKTsgICAgICAgICAvL2RlYWRLQShLQSt2aXJhbWEpIGZvbGxvd2VkIGJ5IFNTSEEgd3JhcHMgdXAgaW50byBhIHNpbmdsZSBjaGFyYWN0ZXIgS1NTSEEKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoZGVhZFRBKyAiXHUwOTI0Iik7ICAgICAgICAgICAgICAvL2RlYWRUQStUQSB3cmFwcyB1cCBpbnRvIGdseXBoIFRUSEEKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MDkyNlx1MDk0ZFx1MDkzNSIpOyAgICAgICAgIC8vZGVhZERBKERBK3ZpcmFtYSkrVkEgd3JhcHMgdXAgaW50byBEVkEKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MDkxY1x1MDk0ZFx1MDkxZSIpOyAgICAgICAgIC8vZGVhZEpBKEpBK3ZpcmFtYSkrTllBIHdyYXBzIHVwIGludG8gSk5ZQQorICAgICAKKworCisgICAgICBnZW5lcmFsSXRlcmF0b3JUZXN0KGNoYXJJdGVyRGVmYXVsdCwgY2hhcmRhdGEpOworCisgIH0KKworICBwdWJsaWMgdm9pZCBUZXN0RGVmYXVsdFJ1bGVCYXNlZFdvcmRJdGVyYXRpb24oKXsKKyAgICAgIGxvZ2xuKCJUZXN0aW5nIHRoZSBSQkJJIGZvciB3b3JkIGl0ZXJhdGlvbiB1c2luZyBkZWZhdWx0IHJ1bGVzIik7CisgICAgICBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIHJiYmk9KFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IpUnVsZUJhc2VkQnJlYWtJdGVyYXRvci5nZXRXb3JkSW5zdGFuY2UoKTsKKyAgICAgIC8vZmV0Y2ggdGhlIHJ1bGVzIHVzZWQgdG8gY3JlYXRlIHRoZSBhYm92ZSBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yCisgICAgICBTdHJpbmcgZGVmYXVsdFJ1bGVzPXJiYmkudG9TdHJpbmcoKTsKKyAgICAgIAorICAgICAgUnVsZUJhc2VkQnJlYWtJdGVyYXRvciB3b3JkSXRlckRlZmF1bHQ9bnVsbDsKKyAgICAgIHRyeXsKKyAgICAgIHdvcmRJdGVyRGVmYXVsdCAgID0gbmV3IFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IoZGVmYXVsdFJ1bGVzKTsgCisgICAgICB9Y2F0Y2goSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlhZSl7CisgICAgICAgICAgZXJybG4oIkVSUk9SOiBmYWlsZWQgY29uc3RydWN0aW9uIGluIFRlc3REZWZhdWx0UnVsZUJhc2VkV29yZEl0ZXJhdGlvbigpIC0tIGN1c3RvbSBydWxlcyIrIGlhZS50b1N0cmluZygpKTsKKyAgICAgIH0KKworICAgICAgVmVjdG9yIHdvcmRkYXRhID0gbmV3IFZlY3RvcigpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCAoIldyaXRlIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50ICgiICIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCAoIndvcmRydWxlcyIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCAoIi4iKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoImFscGhhLWJldGEtZ2FtbWEiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiAiKTsgICAgICAKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlx1MDkyZlx1MDkzOSIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiXHUwOTM5XHUwOTNmIiArIGhhbGZOQSArICJcdTA5MjZcdTA5NDAiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlx1MDkzOVx1MDk0OCIpOworICAgICAgLy8gIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlx1MDk2NCIpOyAgIC8vZGFuZGEgZm9sbG93ZWQgYnkgYSBzcGFjZQorICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiXHUwOTA1XHUwOTNlXHUwOTJhIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJcdTA5MzhcdTA5M2ZcdTA5MTZcdTA5NGJcdTA5MTdcdTA5NDciKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIj8iKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlx1MDk2OFx1MDk2Ni5cdTA5NjlcdTA5NmYiKTsgICAgICAgICAgICAvL2hpbmRpIG51bWJlcnMKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlx1MDk2N1x1MDk2Nlx1MDk2Ni5cdTA5NjZcdTA5NjYlIik7ICAgICAvL3Bvc3RudW1lcmljCisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJcdTIwYThcdTA5NjcsXHUwOTY3XHUwOTY2XHUwOTY2Llx1MDk2Nlx1MDk2NiIpOyAvL3ByZS1udW1iZXIgSW5kaWEgY3VycmVuY3kgc3ltYm9sIFJzLlx1MjBhRAorICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiXHUwOTA1XHUwOTJlXHUwOTFjIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJcbiIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudChoYWxmU0ErIlx1MDkzNVx1MDkyNFx1MDkwMiIrZGVhZFRBKyJcdTA5MzAiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlxyIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJJdCdzIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIkMzAuMTAiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiAiKTsgIAorICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiXHUwMEEyIik7IC8vY2VudCBzaWduCisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJcdTAwQTMiKTsgLy9wb3VuZCBzaWduCisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJcdTAwQTQiKTsgLy9jdXJyZW5jeSBzaWduCisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJcdTAwQTUiKTsgLy95ZW4gc2lnbgorICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiYWxwaGEtYmV0YS1nYW1tYSIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiQmFkZ2VzIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCI/Iik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJCQURHRVMiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiEiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIjEwMDAsMjMzLDQ1Ni4wMDAiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIjEsMjMuMzIyJSIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiMTIzLjEyMjIiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlx1MDAyNDEyMywwMDAuMjAiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIjE3OS4wMVx1MDAyNSIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiWCIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiTm93Iik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJcciIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiaXMiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlxuIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJ0aGUiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlxyXG4iKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoInRpbWUiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlx1YzVmMFx1ZDU2OSIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiXHVjN2E1XHViODVjXHVhZDUwXHVkNjhjIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICAvLyBjb25qb2luaW5nIGphbW8uLi4KKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlx1MTEwOVx1MTE2MVx1MTFiY1x1MTExMlx1MTE2MVx1MTFiYyIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiXHUxMTEyXHUxMTYxXHUxMWFiXHUxMTBiXHUxMTc1XHUxMWFiIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJIZWxsbyIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiLCIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiaG93Iik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJhcmUiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoInlvdSIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiICIpOworCisgICAgICAvL1Rlc3RpbmcgdGhlIEJyZWFrSXRlcmF0b3IgZm9yIGRldmFuYWdhcmkgc2NyaXB0CisgICAgICAvL2hpbmRpCisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJcdTA5MTdcdTA5MmEtXHUwOTM2XHUwOTJhIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIhIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJcdTA5MmZcdTA5MzkiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlx1MDkzOVx1MDkzZiIgKyBoYWxmTkEgKyAiXHUwOTI2XHUwOTQwIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJcdTA5MzlcdTA5NDgiKTsKKyAgICAgIC8vZGFuZGEgaXMgc2ltaWxhciB0byBmdWxsIHN0b3AuIGRhbmRhIGlzIGEgaGluZGkgcGhyYXNlIHNlcGVyYXRvcgorICAgICAgLy9NYWtlIHN1cmUgaXQgYnJlYWtzIGJlZm9yZSBkYW5kYSBhbmQgYWZ0ZXIgZGFuZGEgd2hlbiBpdCBpcyBmb2xsb3dlZCBieSBhIHNwYWNlCisgICAgICAvL3dvcmRkYXRhLmFkZEVsZW1lbnQoIlx1MDk2NCIpOyAgIC8vZmFpbHMgaGVyZSBkb2Vzbid0IGJyZWFrIGF0IGRhbmRhCisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJcdTA5MDVcdTA5M2VcdTA5MmEiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlx1MDkzOFx1MDkzZlx1MDkxNlx1MDk0Ylx1MDkxN1x1MDk0NyIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiPyIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiXG4iKTsgCisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCI6Iik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KGRlYWRQQSsiXHUwOTMwXHUwOTNlXHUwOTJmIit2aXNhcmdhKTsgICAgLy9ubyBicmVhayBiZWZvcmUgdmlzYXJnYQorICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiICIpOworCisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJcdTA5MzUiICsgZGVhZFJBKyAiXHUwOTM3XHUwOTNlIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJcclxuIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KGRlYWRQQSsgIlx1MDkzMFx1MDkxNVx1MDkzZVx1MDkzNiIpOyAgICAgLy9kZWFkUEErUkErS0Erdm93ZWwgQUErU0hBIC0+IHByYWthc2gKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiwiKTsgCisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJcdTA5MjRcdTA5NDFcdTA5MmVcdTA5M2VcdTA5MzBcdTA5NGIiKTsgCisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJcdTA5MmVcdTA5M2YiKyBkZWFkVEErICJcdTA5MzAiKTsgICAgICAgLy9NQSt2b3dlbCBJKyBkZWFkVEEgKyBSQSAKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlx1MDkxNVx1MDkzZSIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiXHUwOTJhIisgZGVhZFRBICsgIlx1MDkzMCIpOyAgICAgICAgICAgIC8vUEEgKyBkZWFkVEEgKyBSQQorICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiXHUwOTJhXHUwOTVkXHUwOTRiIik7CisgICAgICAvLyB3b3JkZGF0YS5hZGRFbGVtZW50KCJcdTA5NjQiKTsgLy9mYWlscyBoZXJlIGRvZXNuJ3QgYnJlYWsgYXQgZGFuZGEKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoZGVhZFNBICsgZGVhZFRBICsgIlx1MDkzMFx1MDkzZiIpOyAgICAgICAvL2RlYWRTQStkZWFkVEErUkErdm93ZWwgSS0+c3RocmkKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIi4iKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlx1MDk2OFx1MDk2Ni5cdTA5NjlcdTA5NmYiKTsgICAgICAgICAgICAvL2hpbmRpIG51bWJlcnMKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlx1MDk2N1x1MDk2Nlx1MDk2Ni5cdTA5NjZcdTA5NjYlIik7ICAgICAvL3Bvc3RudW1lcmljCisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJcdTIwYThcdTA5NjcsXHUwOTY3XHUwOTY2XHUwOTY2Llx1MDk2Nlx1MDk2NiIpOyAvL3ByZS1udW1iZXIgSW5kaWEgY3VycmVuY3kgc3ltYm9sIFJzLlx1MjBhRAorICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiXHUwOTA1XHUwOTJlXHUwOTFjIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJcbiIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudChoYWxmU0EgKyAiXHUwOTM1XHUwOTI0XHUwOTAyIiArZGVhZFRBKyAiXHUwOTMwIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJcciIpOworCisgICAgICBnZW5lcmFsSXRlcmF0b3JUZXN0KHdvcmRJdGVyRGVmYXVsdCwgd29yZGRhdGEpOworICB9CisgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBrUGFyYWdyYXBoU2VwYXJhdG9yID0gIlx1MjAyOSI7CisgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBrTGluZVNlcGFyYXRvciAgICAgID0gIlx1MjAyOCI7CisKKyAgcHVibGljIHZvaWQgVGVzdERlZmF1bHRSdWxlQmFzZWRTZW50ZW5jZUl0ZXJhdGlvbigpeworICAgICAgbG9nbG4oIlRlc3RpbmcgdGhlIFJCQkkgZm9yIHNlbnRlbmNlIGl0ZXJhdGlvbiB1c2luZyBkZWZhdWx0IHJ1bGVzIik7CisgICAgICBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIHJiYmk9KFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IpUnVsZUJhc2VkQnJlYWtJdGVyYXRvci5nZXRTZW50ZW5jZUluc3RhbmNlKCk7CisgICAgICAvL2ZldGNoIHRoZSBydWxlcyB1c2VkIHRvIGNyZWF0ZSB0aGUgYWJvdmUgUnVsZUJhc2VkQnJlYWtJdGVyYXRvcgorICAgICAgU3RyaW5nIGRlZmF1bHRSdWxlcz1yYmJpLnRvU3RyaW5nKCk7CisgICAgICBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIHNlbnRJdGVyRGVmYXVsdD1udWxsOworICAgICAgdHJ5eworICAgICAgc2VudEl0ZXJEZWZhdWx0ICAgPSBuZXcgUnVsZUJhc2VkQnJlYWtJdGVyYXRvcihkZWZhdWx0UnVsZXMpOyAKKyAgICAgIH1jYXRjaChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWFlKXsKKyAgICAgICAgICBlcnJsbigiRVJST1I6IGZhaWxlZCBjb25zdHJ1Y3Rpb24gaW4gVGVzdERlZmF1bHRSdWxlQmFzZWRTZW50ZW5jZUl0ZXJhdGlvbigpIiArIGlhZS50b1N0cmluZygpKTsKKyAgICAgIH0KKworICAgICAgVmVjdG9yIHNlbnRkYXRhID0gbmV3IFZlY3RvcigpOworICAgICAgc2VudGRhdGEuYWRkRWxlbWVudCgiKFRoaXMgaXMgaXQuKSAiKTsKKyAgICAgIHNlbnRkYXRhLmFkZEVsZW1lbnQoIlRlc3RpbmcgdGhlIHNlbnRlbmNlIGl0ZXJhdG9yLiAiKTsKKyAgICAgIHNlbnRkYXRhLmFkZEVsZW1lbnQoIlwiVGhpcyBpc25cJ3QgaXQuXCIgIik7CisgICAgICBzZW50ZGF0YS5hZGRFbGVtZW50KCJIaSEgIik7CisgICAgICBzZW50ZGF0YS5hZGRFbGVtZW50KCJUaGlzIGlzIGEgc2ltcGxlIHNhbXBsZSBzZW50ZW5jZS4gIik7CisgICAgICBzZW50ZGF0YS5hZGRFbGVtZW50KCIoVGhpcyBpcyBpdC4pICIpOworICAgICAgc2VudGRhdGEuYWRkRWxlbWVudCgiVGhpcyBpcyBhIHNpbXBsZSBzYW1wbGUgc2VudGVuY2UuICIpOworICAgICAgc2VudGRhdGEuYWRkRWxlbWVudCgiXCJUaGlzIGlzblwndCBpdC5cIiAiKTsKKyAgICAgIHNlbnRkYXRhLmFkZEVsZW1lbnQoIkhpISAiKTsKKyAgICAgIHNlbnRkYXRhLmFkZEVsZW1lbnQoIlRoaXMgaXMgYSBzaW1wbGUgc2FtcGxlIHNlbnRlbmNlLiAiKTsKKyAgICAgIHNlbnRkYXRhLmFkZEVsZW1lbnQoIkl0IGRvZXMgbm90IGhhdmUgdG8gbWFrZSBhbnkgc2Vuc2UgYXMgeW91IGNhbiBzZWUuICIpOworICAgICAgc2VudGRhdGEuYWRkRWxlbWVudCgiTmVsIG1lenpvIGRlbCBjYW1taW4gZGkgbm9zdHJhIHZpdGEsIG1pIHJpdHJvdmFpIGluIHVuYSBzZWx2YSBvc2N1cmEuICIpOworICAgICAgc2VudGRhdGEuYWRkRWxlbWVudCgiQ2hlIGxhIGRyaXR0YSB2aWEgYXZlbyBzbWFycml0YS4gIik7CisgICAgICBzZW50ZGF0YS5hZGRFbGVtZW50KCJIZSBzYWlkLCB0aGF0IEkgc2FpZCwgdGhhdCB5b3Ugc2FpZCEhICIpOworICAgICAgc2VudGRhdGEuYWRkRWxlbWVudCgiRG9uJ3Qgcm9jayB0aGUgYm9hdC4iICsga1BhcmFncmFwaFNlcGFyYXRvcik7CisgICAgICBzZW50ZGF0YS5hZGRFbGVtZW50KCJCZWNhdXNlIEkgYW0gdGhlIGRhZGR5LCB0aGF0IGlzIHdoeS4gIik7CisgICAgICBzZW50ZGF0YS5hZGRFbGVtZW50KCJOb3Qgb24gbXkgdGltZSAoZWwgdGltby4pISAiKTsKKyAgICAgIHNlbnRkYXRhLmFkZEVsZW1lbnQoIlNvIHdoYXQhISIgKyBrUGFyYWdyYXBoU2VwYXJhdG9yKTsKKyAgICAgIHNlbnRkYXRhLmFkZEVsZW1lbnQoIlwiQnV0IG5vdyxcIiBoZSBzYWlkLCBcIkkga25vdyFcIiAiKTsKKyAgICAgIHNlbnRkYXRhLmFkZEVsZW1lbnQoIkhhcnJpcyB0aHVtYmVkIGRvd24gc2V2ZXJhbCwgaW5jbHVkaW5nIFwiQXdheSBXZSBHb1wiICh3aGljaCBiZWNhbWUgdGhlIGh1Z2Ugc3VjY2VzcyBPa2xhaG9tYSEpLiAiKTsKKyAgICAgIHNlbnRkYXRhLmFkZEVsZW1lbnQoIk9uZSBzcGVjaWVzLCBCLiBhbnRocmFjaXMsIGlzIGhpZ2hseSB2aXJ1bGVudC5cbiIpOworICAgICAgc2VudGRhdGEuYWRkRWxlbWVudCgiV29sZiBzYWlkIGFib3V0IFNvdW5kZXI6XCJCZWF1dGlmdWxseSB0aG91Z2h0LW91dCBhbmQgZGlyZWN0ZWQuXCIgIik7CisgICAgICBzZW50ZGF0YS5hZGRFbGVtZW50KCJIYXZlIHlvdSBldmVyIHNhaWQsIFwiVGhpcyBpcyB3aGVyZVx0SSBzaGFsbCBsaXZlXCI/ICIpOworICAgICAgc2VudGRhdGEuYWRkRWxlbWVudCgiSGUgYW5zd2VyZWQsIFwiWW91IG1heSBub3QhXCIgIik7CisgICAgICBzZW50ZGF0YS5hZGRFbGVtZW50KCJBbm90aGVyIHBvcHVsYXIgc2F5aW5nIGlzOiBcIkhvdyBkbyB5b3UgZG8/XCIuICIpOworICAgICAgc2VudGRhdGEuYWRkRWxlbWVudCgiWWV0IGFub3RoZXIgcG9wdWxhciBzYXlpbmcgaXM6IFwnSVwnbSBmaW5lIHRoYW5rcy5cJyAiKTsKKyAgICAgIHNlbnRkYXRhLmFkZEVsZW1lbnQoIldoYXQgaXMgdGhlIHByb3BlciB1c2Ugb2YgdGhlIGFiYnJldmlhdGlvbiBwcC4/ICIpOworICAgICAgc2VudGRhdGEuYWRkRWxlbWVudCgiWWVzLCBJIGFtIGRlZmluYXRlbGx5IDEyXCIgdGFsbCEhIik7CisgICAgICBzZW50ZGF0YS5hZGRFbGVtZW50KCJOb3dccmlzXG50aGVcclxudGltZVxuXHJmb3JcclxyYWxsXHUyMDI5Iik7CisgICAgICAvLyBEb24ndCBicmVhayBzZW50ZW5jZXMgYXQgdGhlIGJvdW5kYXJ5IGJldHdlZW4gQ0pLCisgICAgICAvLyBhbmQgb3RoZXIgbGV0dGVycworICAgICAgc2VudGRhdGEuYWRkRWxlbWVudCgiXHU1NDg3XHU2N2ZmXHVlNTkxXHU1MDE3XHU2MWIzXHU2MGExXHU5NTEwXHU4MTY1OlwiSkFWQVx1ODIxYyIKKyAgICAgICAgICAgICAgICArICJcdTgxNjVcdTdmYzhcdTUxY2VcdTMwNmQsXHUyNDk0XHU1NmQ4XHU0ZWMwXHU2MGIxXHU4NTYwXHU1MWJhIgorICAgICAgICAgICAgICAgICsgIlx1NjExZFx1NTdiNlx1MjUxMFx1NWQ0NlwiLlx1MjAyOSIpOworICAgICAgc2VudGRhdGEuYWRkRWxlbWVudCgiXHU1NDg3XHU2N2ZmXHVlNTkxXHU1MDE3XHU2MWIzXHU2MGExXHU5NTEwXHU4MTY1XHU5ZGU4IgorICAgICAgICAgICAgICAgICsgIlx1OTdlNEpBVkFcdTgyMWNcdTgxNjVcdTdmYzhcdTUxY2VcdTMwNmRcdWUzMGJcdTI0OTRcdTU2ZDhcdTRlYzAiCisgICAgICAgICAgICAgICAgKyAiXHU2MGIxXHU4NTYwXHU1MWJhXHU2MTFkXHU1N2I2XHUyNTEwXHU1ZDQ2XHU5N2U1XHU3NzUxXHUyMDI5Iik7CisgICAgICBzZW50ZGF0YS5hZGRFbGVtZW50KCJcdTU0ODdcdTY3ZmZcdWU1OTFcdTUwMTdcdTYxYjNcdTYwYTFcdTk1MTBcdTgxNjVcdTlkZThcdTk3ZTQiCisgICAgICAgICAgICAgICAgKyAiXHU2NDcwXHU4NzkwSkFWQVx1ODIxY1x1ODE2NVx1N2ZjOFx1NTFjZVx1MzA2ZFx1ZTMwYlx1MjQ5NFx1NTZkOCIKKyAgICAgICAgICAgICAgICArICJcdTRlYzBcdTYwYjFcdTg1NjBcdTUxYmFcdTYxMWRcdTU3YjZcdTI1MTBcdTVkNDZcdTk3ZTVcdTc3NTFcdTIwMjkiKTsKKyAgICAgIHNlbnRkYXRhLmFkZEVsZW1lbnQoIkhlIHNhaWQsIFwiSSBjYW4gZ28gdGhlcmUuXCJcdTIwMjkiKTsKKyAgICAgIC8vIFRyZWF0IGZ1bGx3aWR0aCB2YXJpYW50cyBvZiAuIT8gdGhlIHNhbWUgYXMgdGhlaXIKKyAgICAgIC8vIG5vcm1hbCBjb3VudGVycGFydHMKKyAgICAgIHNlbnRkYXRhLmFkZEVsZW1lbnQoIkkga25vdyBJJ20gcmlnaHRcdWZmMGUgIik7CisgICAgICBzZW50ZGF0YS5hZGRFbGVtZW50KCJSaWdodFx1ZmYxZiAiKTsKKyAgICAgIHNlbnRkYXRhLmFkZEVsZW1lbnQoIlJpZ2h0XHVmZjAxICIpOworCisgICAgICAvLyBEb24ndCBicmVhayBzZW50ZW5jZXMgYXQgYm91bmRhcnkgYmV0d2VlbiBDSksgYW5kIGRpZ2l0cworICAgICAgc2VudGRhdGEuYWRkRWxlbWVudCgiXHU1NDg3XHU2N2ZmXHVlNTkxXHU1MDE3XHU2MWIzXHU2MGExXHU5NTEwXHU4MTY1XHU5ZGU4IgorICAgICAgICAgICAgICAgICsgIlx1OTdlNDg4ODhcdTgyMWNcdTgxNjVcdTdmYzhcdTUxY2VcdTMwNmRcdWUzMGJcdTI0OTRcdTU2ZDhcdTRlYzAiCisgICAgICAgICAgICAgICAgKyAiXHU2MGIxXHU4NTYwXHU1MWJhXHU2MTFkXHU1N2I2XHUyNTEwXHU1ZDQ2XHU5N2U1XHU3NzUxXHUyMDI5Iik7CisKKyAgICAgIC8vIEJyZWFrIHNlbnRlbmNlIGJldHdlZW4gYSBzZW50ZW5jZSB0ZXJtaW5hdG9yIGFuZAorICAgICAgLy8gb3BlbmluZyBwdW5jdHVhdGlvbgorICAgICAgc2VudGRhdGEuYWRkRWxlbWVudCgiSG93IGRvIHlvdSBkbz8iKTsKKyAgICAgIHNlbnRkYXRhLmFkZEVsZW1lbnQoIihmaW5lKS4iKTsKKyAgICAgIC8vc2VudGVuY2UgYnJlYWtzIGZvciBoaW5kaQorICAgICAgLy9tYWtlIHN1cmUgdGhlcmUgaXMgc2VudGVuY2UgYnJlYWsgYWZ0ZXIgPyxkYW5kYShoaW5kaSBwaHJhc2Ugc2VwYXJhdG9yKSxmdWxsc3RvcCBmb2xsb3dlZCBieSBzcGFjZSBhbmQgbm8gYnJlYWsgYWZ0ZXIgXG4gXHIgCisgICAgICBzZW50ZGF0YS5hZGRFbGVtZW50KCJcdTA5MjhcdTA5MmUiK2hhbGZTQSsiXHUwOTI0XHUwOTQ3ICIgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICJcdTA5MzBcdTA5MmVcdTA5NDdcdTA5MzYsICIgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIlx1MDkwNVx1MDkzZVx1MDkyYSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiXHUwOTE1XHUwOTQ4XHUwOTM4XHUwOTQ3ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiXHUwOTM5XHUwOTQ4PyIpOyAgIAorICAgICAgc2VudGRhdGEuYWRkRWxlbWVudCgiXHUwOTJlXHUwOTQ4IFx1MDkwNSIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgaGFsZkNIQQorICAgICAgICAgICAgICAgICAgICAgICAgKyAiXHUwOTFiXHUwOTNlIFx1MDkzOVx1MDk0Mlx1MDkwMVx1MDk2NCAiKTsgICAKKyAgICAgIHNlbnRkYXRhLmFkZEVsZW1lbnQoIlx1MDkwNVx1MDkzZVx1MDkyYVxyXG4gXHUwOTE1XHUwOTQ4XHUwOTM4XHUwOTQ3IFx1MDkzOVx1MDk0OD8iKTsgICAKKyAgICAgIHNlbnRkYXRhLmFkZEVsZW1lbnQoIlx1MDkzNVx1MDkzOSAiCisgICAgICAgICAgICAgICAgICAgICAgICsgaGFsZktBCisgICAgICAgICAgICAgICAgICAgICAgICsgIlx1MDkyZlx1MDkzZVxuIFx1MDkzOVx1MDk0OD8iKTsgICAKKyAgICAgIHNlbnRkYXRhLmFkZEVsZW1lbnQoIlx1MDkyZlx1MDkzOSBcdTA5MDVcdTA5M2VcdTA5MmUgXHUwOTM5XHUwOTQ4LiAiKTsgICAKKyAgICAgIHNlbnRkYXRhLmFkZEVsZW1lbnQoIlx1MDkyZlx1MDkzOSBtZWFucyBcInRoaXNcIi4gIik7IAorICAgICAgc2VudGRhdGEuYWRkRWxlbWVudCgiXCJcdTA5MmFcdTA5NWRcdTA5M2VcdTA5MDhcIiBtZWFuaW5nIFwiZWR1Y2F0aW9uXCIgb3IgXCJzdHVkaWVzXCIuICIpOworICAgICAgc2VudGRhdGEuYWRkRWxlbWVudCgiXHUwOTA1XHUwOTNlXHUwOTFjIiAKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIigiK2hhbGZTQSsiXHUwOTM1XHUwOTI0XHUwOTAyIgorICAgICAgICAgICAgICAgICAgICAgICAgKyBkZWFkVEEKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIlx1MDkzMCAiCisgICAgICAgICAgICAgICAgICAgICAgICArICJcdTA5MjZcdTA5M2ZcdTA5MzVcdTA5M2VcdTA5MzgpICIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIlx1MDkzOVx1MDk0OFx1MDk2NCAiKTsKKyAgICAgIHNlbnRkYXRhLmFkZEVsZW1lbnQoIkxldCdzIGVuZCBoZXJlLiAiKTsKKyAgICAgIGdlbmVyYWxJdGVyYXRvclRlc3Qoc2VudEl0ZXJEZWZhdWx0LCBzZW50ZGF0YSk7CisgIH0KKyAgIAorICBwdWJsaWMgdm9pZCBUZXN0RGVmYXVsdFJ1bGVCYXNlZExpbmVJdGVyYXRpb24oKXsKKyAgICAgbG9nbG4oIlRlc3RpbmcgdGhlIFJCQkkgZm9yIGxpbmUgaXRlcmF0aW9uIHVzaW5nIGRlZmF1bHQgcnVsZXMiKTsKKyAgICAgUnVsZUJhc2VkQnJlYWtJdGVyYXRvciByYmJpPShSdWxlQmFzZWRCcmVha0l0ZXJhdG9yKVJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IuZ2V0TGluZUluc3RhbmNlKCk7CisgICAgIC8vZmV0Y2ggdGhlIHJ1bGVzIHVzZWQgdG8gY3JlYXRlIHRoZSBhYm92ZSBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yCisgICAgIFN0cmluZyBkZWZhdWx0UnVsZXM9cmJiaS50b1N0cmluZygpOworICAgICBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIGxpbmVJdGVyRGVmYXVsdD1udWxsOworICAgICB0cnl7CisgICAgIGxpbmVJdGVyRGVmYXVsdCAgID0gbmV3IFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IoZGVmYXVsdFJ1bGVzKTsgCisgICAgIH1jYXRjaChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWFlKXsKKyAgICAgICAgIGVycmxuKCJFUlJPUjogZmFpbGVkIGNvbnN0cnVjdGlvbiBpbiBUZXN0RGVmYXVsdFJ1bGVCYXNlZExpbmVJdGVyYXRpb24oKSIgKyBpYWUudG9TdHJpbmcoKSk7CisgICAgIH0KKworICAgICBWZWN0b3IgbGluZWRhdGEgPSBuZXcgVmVjdG9yKCk7CisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoIk11bHRpLSIpOworICAgICBsaW5lZGF0YS5hZGRFbGVtZW50KCJMZXZlbCAiKTsKKyAgICAgbGluZWRhdGEuYWRkRWxlbWVudCgiZXhhbXBsZSAiKTsKKyAgICAgbGluZWRhdGEuYWRkRWxlbWVudCgib2YgIik7CisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoImEgIik7CisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoInNlbWktIik7CisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoImlkaW90aWMgIik7CisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoIm5vbi0iKTsKKyAgICAgbGluZWRhdGEuYWRkRWxlbWVudCgic2Vuc2ljYWwgIik7CisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoIihub24tIik7CisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoImltcG9ydGFudCkgIik7CisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoInNlbnRlbmNlLiAiKTsKKworICAgICBsaW5lZGF0YS5hZGRFbGVtZW50KCJIaSAgIik7CisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoIkhlbGxvICIpOworICAgICBsaW5lZGF0YS5hZGRFbGVtZW50KCJIb3dcbiIpOworICAgICBsaW5lZGF0YS5hZGRFbGVtZW50KCJhcmVcciIpOworICAgICBsaW5lZGF0YS5hZGRFbGVtZW50KCJ5b3UiICsga0xpbmVTZXBhcmF0b3IpOworICAgICBsaW5lZGF0YS5hZGRFbGVtZW50KCJmaW5lLlx0Iik7CisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoImdvb2QuICAiKTsKKworICAgICBsaW5lZGF0YS5hZGRFbGVtZW50KCJOb3dcciIpOworICAgICBsaW5lZGF0YS5hZGRFbGVtZW50KCJpc1xuIik7CisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoInRoZVxyXG4iKTsKKyAgICAgbGluZWRhdGEuYWRkRWxlbWVudCgidGltZVxuIik7CisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoIlxyIik7CisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoImZvclxyIik7CisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoIlxyIik7CisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoImFsbCIpOworCisgICAgLy8gdG8gdGVzdCBmb3IgYnVnICM0MDY4MTMzCisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoIlx1OTZmNiIpOworICAgICBsaW5lZGF0YS5hZGRFbGVtZW50KCJcdTRlMDBcdTMwMDIiKTsKKyAgICAgbGluZWRhdGEuYWRkRWxlbWVudCgiXHU0ZThjXHUzMDAxIik7CisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoIlx1NGUwOVx1MzAwMlx1MzAwMSIpOworICAgICBsaW5lZGF0YS5hZGRFbGVtZW50KCJcdTU2ZGJcdTMwMDFcdTMwMDJcdTMwMDEiKTsKKyAgICAgbGluZWRhdGEuYWRkRWxlbWVudCgiXHU0ZTk0LCIpOworICAgICBsaW5lZGF0YS5hZGRFbGVtZW50KCJcdTUxNmQuIik7CisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoIlx1NGUwMy5cdTMwMDEsXHUzMDAyIik7CisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoIlx1NTE2YiIpOworCisgICAgLy8gdG8gdGVzdCBmb3IgYnVnICM0MDg2MDUyCisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoImZvb1x1MDBhMGJhciAiKTsKKyAgICAvLyBsaW5lZGF0YS5hZGRFbGVtZW50KCJmb29cdWZlZmZiYXIiKTsKKworICAgIC8vIHRvIHRlc3QgZm9yIGJ1ZyAjNDA5NzkyMAorICAgICBsaW5lZGF0YS5hZGRFbGVtZW50KCJkb2csIik7CisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoImNhdCwiKTsKKyAgICAgbGluZWRhdGEuYWRkRWxlbWVudCgibW91c2UgIik7CisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoIihvbmUpIik7CisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoIih0d28pXG4iKTsKKworICAgIC8vIHRvIHRlc3QgZm9yIGJ1ZyAjNDAzNTI2NgorICAgICBsaW5lZGF0YS5hZGRFbGVtZW50KCJUaGUgIik7CisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoImJhbGFuY2UgIik7CisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoImlzICIpOworICAgICBsaW5lZGF0YS5hZGRFbGVtZW50KCIkLTIzLDQ1Ni43OCwgIik7CisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoIm5vdCAiKTsKKyAgICAgbGluZWRhdGEuYWRkRWxlbWVudCgiLSQzMiw0NTYuNzghXG4iKTsKKworICAgIC8vIHRvIHRlc3QgZm9yIGJ1ZyAjNDA5ODQ2NworICAgIC8vIFdoYXQgZm9sbG93cyBpcyBhIHN0cmluZyBvZiBLb3JlYW4gY2hhcmFjdGVycyAoSSBmb3VuZCBpdCBpbiB0aGUgWWVsbG93IFBhZ2VzCisgICAgLy8gYWQgZm9yIHRoZSBLb3JlYW4gUHJlc2J5dGVyaWFuIENodXJjaCBvZiBTYW4gRnJhbmNpc2NvLCBhbmQgSSBob3BlIEkgdHJhbnNjcmliZWQKKyAgICAvLyBpdCBjb3JyZWN0bHkpLCBmaXJzdCBhcyBwcmVjb21wb3NlZCBzeWxsYWJsZXMsIGFuZCB0aGVuIGFzIGNvbmpvaW5pbmcgamFtby4KKyAgICAvLyBCb3RoIHNlcXVlbmNlcyBzaG91bGQgYmUgc2VtYW50aWNhbGx5IGlkZW50aWNhbCBhbmQgYnJlYWsgdGhlIHNhbWUgd2F5LgorICAgIC8vIHByZWNvbXBvc2VkIHN5bGxhYmxlcy4uLgorICAgICBsaW5lZGF0YS5hZGRFbGVtZW50KCJcdWMwYzFcdWQ1NmQgIik7CisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoIlx1ZDU1Y1x1Yzc3OCAiKTsKKyAgICAgbGluZWRhdGEuYWRkRWxlbWVudCgiXHVjNWYwXHVkNTY5ICIpOworICAgICBsaW5lZGF0YS5hZGRFbGVtZW50KCJcdWM3YTVcdWI4NWNcdWFkNTBcdWQ2OGMgIik7CisgICAgLy8gY29uam9pbmluZyBqYW1vLi4uCisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoIlx1MTEwOVx1MTE2MVx1MTFiY1x1MTExMlx1MTE2MVx1MTFiYyAiKTsKKyAgICAgbGluZWRhdGEuYWRkRWxlbWVudCgiXHUxMTEyXHUxMTYxXHUxMWFiXHUxMTBiXHUxMTc1XHUxMWFiICIpOworICAgICBsaW5lZGF0YS5hZGRFbGVtZW50KCJcdTExMGJcdTExNjdcdTExYWJcdTExMTJcdTExNjFcdTExYjggIik7CisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoIlx1MTEwY1x1MTE2MVx1MTFiY1x1MTEwNVx1MTE2OVx1MTEwMFx1MTE2ZFx1MTExMlx1MTE2YyIpOworCisgICAgLy8gdG8gdGVzdCBmb3IgYnVnICM0MTE3NTU0OiBGdWxsd2lkdGggLiE/IHNob3VsZCBiZSB0cmVhdGVkIGFzIHBvc3RKd3JkCisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoIlx1NGUwMVx1ZmYwZSIpOworICAgICBsaW5lZGF0YS5hZGRFbGVtZW50KCJcdTRlMDJcdWZmMDEiKTsKKyAgICAgbGluZWRhdGEuYWRkRWxlbWVudCgiXHU0ZTAzXHVmZjFmIik7CisgICAgIGdlbmVyYWxJdGVyYXRvclRlc3QobGluZUl0ZXJEZWZhdWx0LCBsaW5lZGF0YSk7CisKKworICB9CisgIHB1YmxpYyB2b2lkIFRlc3RDdXN0b21SdWxlQmFzZWRMaW5lSXRlcmF0b3IoKXsKKworICAgIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IgcmJiaT0oUnVsZUJhc2VkQnJlYWtJdGVyYXRvcilSdWxlQmFzZWRCcmVha0l0ZXJhdG9yLmdldExpbmVJbnN0YW5jZSgpOworICAgIC8vZmV0Y2ggdGhlIHJ1bGVzIHVzZWQgdG8gY3JlYXRlIHRoZSBhYm92ZSBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yCisgICAgU3RyaW5nIHJ1bGVzPS8vIiRfaWdub3JlXz1bZV07IiAgKyAvLyBbbGl1XSBOb3Qgc3VyZSB3aGF0IHRoZSBpbnRlbnRpb24gd2FzIGhlcmUuCisgICAgICAgIC8vIEl0J3MgaWxsZWdhbCB0byByZWRlZmluZSB2YXJpYWJsZXMsIGFsc28sIHdoeSBwcmVwZW5kIHRoZSBpZ25vcmUgZGVmaW5pdGlvbiAtLQorICAgICAgICAvLyBldmVuIGlmIGl0J3MgbGVnYWwgdG8gcmVkZWZpbmUgdmFyaWFibGVzLCB0aGUgcHJlcGVuZGVkIGRlZmluaXRpb24gd2lsbCBqdXN0CisgICAgICAgIC8vIGdldCBvdmVycmlkZGVuLgorICAgICAgICAgICAgICAgICByYmJpLnRvU3RyaW5nKCk7CisgICAgUnVsZUJhc2VkQnJlYWtJdGVyYXRvciBsaW5lSXRlcj1udWxsOworICAgIHRyeXsKKyAgICAgbGluZUl0ZXIgICA9IG5ldyBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yKHJ1bGVzKTsgCisgICAgICAgfWNhdGNoKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpYWUpeworICAgICAgICAgZXJybG4oIkVSUk9SOiBmYWlsZWQgY29uc3RydWN0aW9uIGluIFRlc3RDdXN0b21SdWxlQmFzZWRMaW5lSXRlcmF0b3IoKSAtLSBjdXN0b20gcnVsZXNcbiIgKyBpYWUudG9TdHJpbmcoKSk7CisgICAgICAgfQorICAgIFZlY3RvciBsaW5lZGF0YT1uZXcgVmVjdG9yKCk7CisgICAgbGluZWRhdGEuYWRkRWxlbWVudCgiU0xoZWxsbyEgIik7CisgICAgbGluZWRhdGEuYWRkRWxlbWVudCgiSG93ICIpOworICAgIGdlbmVyYWxJdGVyYXRvclRlc3QobGluZUl0ZXIsIGxpbmVkYXRhKTsKKyAgfQorICAKKyAgLy90ZXN0cyB0aGUgYmVoYXZpb3VyIG9mIGNoYXJhY3RlciBpdGVyYXRpb24gb2YgUkJCSSB3aXRoIGN1c3RvbSBydWxlcworICBwdWJsaWMgdm9pZCBUZXN0Q3VzdG9tUnVsZUJhc2VkQ2hhcmFjdGVySXRlcmF0aW9uKCl7CisgICAgICBsb2dsbigiVGVzdGluZyB0aGUgUkJCSSBieSB1c2luZyBjdXN0b20gcnVsZXMgZm9yIGNoYXJhY3RlciBpdGVyYXRpb24iKTsKKworICAgICAgU3RyaW5nIGNydWxlczI9IiRfaWdub3JlXz1bZV07IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgLy9pZ25vcmUgdGhlIGNoYXJhY3RlciAiZSIKKyAgICAgICAgICAgICAgICAgICAgICIuOyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgCisgICAgICAgICAgICAgICAgICAgICAiJGRldlZvd2VsU2lnbj1bXHUwOTNlLVx1MDk0Y1x1MDk2Mlx1MDk2M107IiAgICsgIC8vZGV2YW5hZ2lyaSB2b3dlbCA9IFx1MDkzZSB0cCBcdTA5NGMgYW5kIFx1MDk2Mi5cdTA5NjMKKyAgICAgICAgICAgICAgICAgICAgICIkZGV2Q29uc29uYW50PVtcdTA5MTUtXHUwOTM5XTsiICAgICAgICAgICAgICAgKyAgLy9kZXZhbmFnaXJpIGNvbnNvbmFudCA9IFx1MDkxNSB0byBcdTA5MzkKKyAgICAgICAgICAgICAgICAgICAgICIkZGV2Q29uc29uYW50JGRldlZvd2VsU2lnbjsiIDsgICAgICAgICAgICAgICAgLy9icmVhayBhdCBhbGwgcGxhY2VzIGV4Y2VwdCB0aGUgIGZvbGxvd2luZyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2RldmFuYWdpcmkgY29uc29uYW50cysgZGV2YW5hZ2lyaSB2b3dlbHNpZ24KKyAgICAgIAorICAgICAgUnVsZUJhc2VkQnJlYWtJdGVyYXRvciBjaGFySXRlclJ1bGVzPW51bGw7CisgICAgICB0cnl7CisgICAgICBjaGFySXRlclJ1bGVzICAgPSBuZXcgUnVsZUJhc2VkQnJlYWtJdGVyYXRvcihjcnVsZXMyKTsgCisgICAgICB9Y2F0Y2goSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlhZSl7CisgICAgICAgICAgZXJybG4oIkVSUk9SOiBmYWlsZWQgY29uc3RydWN0aW9uIGluIFRlc3RDdXN0b21CYXNlZENoYXJhY3Rlckl0ZXJhdGlvbigpLS0gY3VzdG9tIHJ1bGVzIiArIGlhZS50b1N0cmluZygpKTsKKyAgICAgIH0KKworICAgICAgVmVjdG9yIGNoYXJkYXRhID0gbmV3IFZlY3RvcigpOworICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiSGUiKTsgICAgICAgICAgICAgIC8vaWdub3JlcyAnZScKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoImwiKTsgICAgICAgICAgICAgICAgCisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJsIik7CisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJvZSIpOyAgICAgICAgICAgICAgLy9pZ25vcmVzICdlJyBoZW5jZSB3cmFwcyBpdCBpbnRvICdvJyBpbnN0ZWFkIG9mIHdyYXBwaW5nIHdpdGgKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MDMwMSIpOyAgICAgICAgICAvLydcdTAzMDEnIHRvIGZvcm0gJ2FjdXRlRSAnCisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCImZSIpOyAgICAgICAgICAgICAgLy9pZ25vcmVzICdlJyBoZW5jZSB3cmFwcyBpdCBpbnRvICcmJyBpbnN0ZWFkIG9mIHdyYXBwaW5nIHdpdGgKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MDMwMyIpOyAgICAgICAgICAvLydcdTAzMDMgdG8gZm9ybSAndGlsZGFFJworICAgICAgLy9kZXZhbmFnaXJpIGNoYXJhY3RlcnMgCisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcdTA5MDYiKTsgICAgICAgICAgLy9kZXZhbmFnaXJpIEFBCisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcdTA5M2UiKTsgICAgICAgICAgLy9kZXZhbmFnaXJpIHZvd2Vsc2lnbiBBQTotLWJyZWFrcyBhdCBcdTA5MDEgd2hpY2ggaXMgZGV2YW5hZ2lyaSAKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MDkwMSIpOyAgICAgICAgICAvL2NoYW5kcmEgYmluZGh1IHNpbmNlIGl0IGlzIG5vdCBtZW50aW9uZWQgaW4gdGhlIHJ1bGVzCisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcdTA5MTZcdTA5NDciKTsgICAgLy9kZXZhbmFnaXJpIEtIQSt2b3dlbHNpZ24gRQorICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHUwOTM4XHUwOTQxIik7ICAgIC8vZGV2YW5hZ2lyaSBTQSt2b3dlbHNpZ24gVSA6IC0gYnJlYWtzIGF0CisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcdTA5MDIiKTsgICAgICAgICAgLy9cdTA5MDIgZGV2YW5hZ2lyaSBhbnVzdmFyYSBzaW5jZSBpdCBpcyBub3QgbWVudGlvbmVkIGluIHRoZSBydWxlcworICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHUwOTI2Iik7ICAgICAgICAgIC8vZGV2YW5hZ2lyaSBjb25zb25hbnQgREEKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MDkzMCIpOyAgICAgICAgICAvL2RldmFuYWdpcmkgY29uc29uYW50IFJBCisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcdTA5MzlcdTA5NGMiKTsgICAgLy9kZXZhbmFnaXJpIEhBK3Zvd2VsIHNpZ24gQUkKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MDk2NCIpOyAgICAgICAgICAvL2RldmFuYWdpcmkgZGFuZGEKKyAgICAgIC8vIGRldmFuYWdpcmkgY2hyYWN0ZXJzIGVuZAorICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiQSIpOyAgICAgICAgICAgICAgIC8vYnJlYWtzIGluIGJldHdlZW4gc2luY2UgaXQgaXMgbm90IG1lbnRpb25lZCBpbiB0aGUgcnVsZXMKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MDMwMiIpOyAgICAgICAgICAvKiBjaXJjdW1mbGV4QSAqLyAgICAKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoImkiKTsgICAgICAgICAgICAgICAvL2JyZWFrcyBpbiBiZXR3ZWVuIHNpbmNlIG5vdCBtZW50aW9uZWQgaW4gdGhlIHJ1bGVzCisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcdTAzMDEiKTsgICAgICAgICAgLyogYWN1dGVCZWxvd0kgKi8gIAorICAgICAgLy9SdWxlcyBkb24ndCBzdXBwb3J0IGNvbmpvaW5pbmcgamFtby4uLi4KKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MTEwOSIpOyAgICAgICAgICAvL2JyZWFrIGF0IGV2ZXJ5IGNoYXJhY3RlciBzaW5jZSBydWxlcworICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHUxMTYxIik7ICAgICAgICAgIC8vZG9uJ3Qgc3VwcG9ydCBjb25qb2luaW5nIGphbW8KKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MTFiYyIpOworICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHUxMTEyIik7CisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcdTExNjEiKTsKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MTFiYyIpOworICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXG4iKTsKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlxyIik7ICAgICAgICAgICAgIC8vZG9lc24ndCBrZWVwIENSTEdGIHRvZ2V0aGVyIHNpbmNlIHJ1bGVzIGRvIG5vdCBtZW50aW9uIGl0CisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcbiIpOworICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiUyIpOyAgICAgICAgICAgICAgLy9ncmF2ZVMKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MDMwMCIpOyAgICAgICAgIC8vYnJlYWtzIGluIGJldHdlZW4gc2luY2UgaXQgaXMgbm90IG1lbnRpb25lZCBpbiB0aGUgcnVsZXMKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoImkiKTsgICAgICAgICAgICAgIC8vYWN1dGVCZWxvd0kKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MDMwMSIpOyAgICAgICAgIC8vYnJlYWtzIGluIGJldHdlZW4gc2luY2UgaXQgaXMgbm90IG1lbnRpb25lZCBpbiB0aGUgcnVsZXMKKworICAgICAgZ2VuZXJhbEl0ZXJhdG9yVGVzdChjaGFySXRlclJ1bGVzLCBjaGFyZGF0YSk7CisKKyAgfSAgICAKKyAgLy90ZXN0cyBjdXN0b20gcnVsZXMgYmFzZWQgd29yZCBpdGVyYXRpb24KKyAgcHVibGljIHZvaWQgVGVzdEN1c3RvbVJ1bGVCYXNlZFdvcmRJdGVyYXRpb24oKXsKKyAgICAgIGxvZ2xuKCJUZXN0aW5nIHRoZSBSQkJJIGJ5IHVzaW5nIGN1c3RvbSBydWxlcyBmb3Igd29yZCBpdGVyYXRpb24iKTsKKyAgICAgIFN0cmluZyB3cnVsZXMxPSIkX2lnbm9yZV89W1s6TW46XVs6TWU6XVs6Q2Y6XV07IiAgICAgICAgICsgLy8gaWdub3JlIG5vbi1zcGFjaW5nIG1hcmtzLCBlbmNsb3NpbmcgbWFya3MsIGFuZCBmb3JtYXQgY2hhcmFjdGVycywKKyAgICAgICAgICAgICAgICAgICAgICAiJGRhbmRhPVtcdTA5NjRcdTA5NjVdOyIgICAgICAgICAgICAgICAgKyAvLyBIaW5kaSBQaHJhc2Ugc2VwZXJhdG9yCisgICAgICAgICAgICAgICAgICAgICAgIiRsZXQ9W1s6TDpdWzpNYzpdXTsiICAgICAgICAgICAgICAgICAgICsgLy8gdXBwZXJjYXNlKEx1KSwgbG93ZXJjYXNlKExsKSwgdGl0bGVjYXNlKEx0KSwgbW9kaWZpZXIoTG0pIGxldHRlcnMsIE1jLWNvbWJpbmluZyBzcGFjZSBtYXJrCisgICAgICAgICAgICAgICAgICAgICAgIiRtaWRfd29yZD1bWzpQZDpdXFxcIlxcXCdcXC5dOyIgICAgICAgICsgLy8gZGFzaGVzLCBxdW90YXRpb24sIGFwb3N0cmFwaGVzLCBwZXJpb2QKKyAgICAgICAgICAgICAgICAgICAgICAiJGxzPVtcblx1MDAwY1x1MjAyOFx1MjAyOV07IiAgICAgICAgICAgKyAvLyBsaW5lIHNlcGFyYXRvcnM6ICBMRiwgRkYsIFBTLCBhbmQgTFMKKyAgICAgICAgICAgICAgICAgICAgICAiJHdzPVtbOlpzOl1cdF07IiAgICAgICAgICAgICAgICAgICAgICAgKyAvLyBhbGwgc3BhY2Ugc2VwYXJhdG9ycyBhbmQgdGhlIHRhYiBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAiJHdvcmQ9KCgkbGV0KygkbWlkX3dvcmQkbGV0KykqKSk7IiAgKyAgCisgICAgICAgICAgICAgICAgICAgICAgIi47IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAvLyBicmVhayBhZnRlciBldmVyeSBjaGFyYWN0ZXIsIHdpdGggdGhlIGZvbGxvd2luZyBleGNlcHRpb25zCisgICAgICAgICAgICAgICAgICAgICAgIiR3b3JkOyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIAorICAgICAgICAgICAgICAgICAgICAgICIkd3MqXHIkbHMkZGFuZGE/OyIgOworCisgICAgICBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIHdvcmRJdGVyUnVsZXM9bnVsbDsKKyAgICAgIHRyeXsKKyAgICAgIHdvcmRJdGVyUnVsZXMgICA9IG5ldyBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yKHdydWxlczEpOyAKKyAgICAgIH1jYXRjaChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWFlKXsKKyAgICAgICAgICBlcnJsbigiRVJST1I6IGZhaWxlZCBjb25zdHJ1Y3Rpb24gaW4gVGVzdEN1c3RvbVJ1bGVCYXNlZFdvcmRJdGVyYXRpb24oKSAtLSBjdXN0b20gcnVsZXMiICsgaWFlLnRvU3RyaW5nKCkpOworICAgICAgfQorCisgICAgICBWZWN0b3Igd29yZGRhdGEgPSBuZXcgVmVjdG9yKCk7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJXcml0ZSIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgid29yZHJ1bGVzIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIuIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICAvL3BsYXkgd2l0aCBoaW5kaQorICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiXHUwOTJmXHUwOTM5Iik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJcdTA5MzlcdTA5M2YiICsgaGFsZk5BICsgIlx1MDkyNlx1MDk0MCIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiXHUwOTM5XHUwOTQ4Iik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJcdTA5NjQiKTsgICAvL0RhbmRhIGlzIHNpbWlsYXIgdG8gZnVsbCBzdG9wLiBEYW5kYSBmb2xsb3dlZCBieSBhIHNwYWNlCisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJcdTA5MDVcdTA5M2VcdTA5MmEiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlx1MDkzOFx1MDkzZlx1MDkxNlx1MDk0Ylx1MDkxN1x1MDk0NyIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiPyIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiSXQncyIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiJCIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiMyIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiMCIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiLiIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiMSIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiMCIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgLy8gd29yZGRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgZ2VuZXJhbEl0ZXJhdG9yVGVzdCh3b3JkSXRlclJ1bGVzLCB3b3JkZGF0YSk7IAorICB9IAorICAvL2FkZHMgZXh0cmEgcnVsZXMgdG8gZGVhbCB3aXRoIGFiYnJldmF0aW9ucyhsaW1pdGVkKSBhbmQgdGVzdCB0aGUgd29yZCBJdGVyYXRpb24KKyAgcHVibGljIHZvaWQgVGVzdEFiYnJSdWxlQmFzZWRXb3JkSXRlcmF0aW9uKCl7CisgICAgICBsb2dsbigiVGVzdGluZyB0aGUgUkJCSSBmb3Igd29yZCBpdGVyYXRpb24gYnkgYWRkaW5nIHJ1bGVzIHRvIHN1cHBvcnQgYWJicmV2aWF0aW9uIik7CisgICAgICBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIHJiID0oUnVsZUJhc2VkQnJlYWtJdGVyYXRvcilSdWxlQmFzZWRCcmVha0l0ZXJhdG9yLmdldFdvcmRJbnN0YW5jZSgpOworICAgICAgCisgICAgICBTdHJpbmcgd3J1bGVzMj0iJGFiYnI9KChNci4pfChNcnMuKXwoTXMuKXwoRHIuKXwoVS5TLikpOyIgKyAvLyBhYmJyZXZpYXRpb25zLiAKKyAgICAgICAgICAgICAgICAgICAgIHJiLnRvU3RyaW5nKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICAgICIoJGFiYnIkd3MpKiR3b3JkOyI7CisgICAgICBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIHdvcmRJdGVyPW51bGw7CisgICAgICB0cnl7CisgICAgICB3b3JkSXRlciAgID0gbmV3IFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3Iod3J1bGVzMik7IAorICAgICAgfWNhdGNoKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpYWUpeworICAgICAgICAgIGVycmxuKCJFUlJPUjogZmFpbGVkIGNvbnN0cnVjdGlvbiBpbiBUZXN0QWJiclJ1bGVCYXNlZFdvcmRJdGVyYXRpb24oKSAtLWN1c3RvbSBydWxlcyIgKyBpYWUudG9TdHJpbmcoKSk7CisgICAgICB9CisgICAgICBWZWN0b3Igd29yZGRhdGEgPSBuZXcgVmVjdG9yKCk7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJNci4gR2VvcmdlIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJpcyIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiZnJvbSIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiVS5TLiBOYXZ5Iik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIuIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJIaXMiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlxuIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJmcmllbmQiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlx0Iik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJEci4gU3RldmVuIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJtYXJyaWVkIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJNcy4gQmVubmV0aCIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiISIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiTXJzLiBKb2huc29uIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJcclxuIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJwYWlkIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIkMiw0MDAuMDAiKTsKKyAgICAgIGdlbmVyYWxJdGVyYXRvclRlc3Qod29yZEl0ZXIsIHdvcmRkYXRhKTsgCisgIH0gCisgICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAgLy8gZ2VuZXJhbCB0ZXN0IHN1YnJvdXRpbmVzCisgICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgIHByaXZhdGUgdm9pZCBnZW5lcmFsSXRlcmF0b3JUZXN0KFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IgcmJiaSwgVmVjdG9yIGV4cGVjdGVkUmVzdWx0KXsKKyAgICAgICAgIFN0cmluZ0J1ZmZlciBidWZmZXIgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgICBTdHJpbmcgdGV4dDsKKyAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZXhwZWN0ZWRSZXN1bHQuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgICB0ZXh0ID0gKFN0cmluZylleHBlY3RlZFJlc3VsdC5lbGVtZW50QXQoaSk7CisgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZCh0ZXh0KTsKKyAgICAgICAgIH0KKyAgICAgICAgIHRleHQgPSBidWZmZXIudG9TdHJpbmcoKTsKKworICAgICAgICAgcmJiaS5zZXRUZXh0KHRleHQpOworCisgICAgICAgICBWZWN0b3IgbmV4dFJlc3VsdHMgPSBfdGVzdEZpcnN0QW5kTmV4dChyYmJpLCB0ZXh0KTsKKyAgICAgICAgIFZlY3RvciBwcmV2aW91c1Jlc3VsdHMgPSBfdGVzdExhc3RBbmRQcmV2aW91cyhyYmJpLCB0ZXh0KTsKKworICAgICAgICAgbG9nbG4oImNvbXBhcmluZyBmb3J3YXJkIGFuZCBiYWNrd2FyZC4uLiIpOworICAgICAgICAgaW50IGVycnMgPSBnZXRFcnJvckNvdW50KCk7CisgICAgICAgICBjb21wYXJlRnJhZ21lbnRMaXN0cygiZm9yd2FyZCBpdGVyYXRpb24iLCAiYmFja3dhcmQgaXRlcmF0aW9uIiwgbmV4dFJlc3VsdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNSZXN1bHRzKTsKKyAgICAgICAgIGlmIChnZXRFcnJvckNvdW50KCkgPT0gZXJycykgeworICAgICAgICAgICAgIGxvZ2xuKCJjb21wYXJpbmcgZXhwZWN0ZWQgYW5kIGFjdHVhbC4uLiIpOworICAgICAgICAgICAgIGNvbXBhcmVGcmFnbWVudExpc3RzKCJleHBlY3RlZCByZXN1bHQiLCAiYWN0dWFsIHJlc3VsdCIsIGV4cGVjdGVkUmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0UmVzdWx0cyk7CisgICAgICAgICB9CisKKyAgICAgICAgaW50W10gYm91bmRhcmllcyA9IG5ldyBpbnRbZXhwZWN0ZWRSZXN1bHQuc2l6ZSgpICsgM107CisgICAgICAgIGJvdW5kYXJpZXNbMF0gPSBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yLkRPTkU7CisgICAgICAgIGJvdW5kYXJpZXNbMV0gPSAwOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGV4cGVjdGVkUmVzdWx0LnNpemUoKTsgaSsrKQorICAgICAgICAgYm91bmRhcmllc1tpICsgMl0gPSBib3VuZGFyaWVzW2kgKyAxXSArICgoU3RyaW5nKWV4cGVjdGVkUmVzdWx0LmVsZW1lbnRBdChpKSkubGVuZ3RoKCk7CisgICAgICAKKyAgICAgICAgYm91bmRhcmllc1tib3VuZGFyaWVzLmxlbmd0aCAtIDFdID0gUnVsZUJhc2VkQnJlYWtJdGVyYXRvci5ET05FOworICAgICAgCisgICAgICAgIF90ZXN0Rm9sbG93aW5nKHJiYmksIHRleHQsIGJvdW5kYXJpZXMpOworICAgICAgICBfdGVzdFByZWNlZGluZyhyYmJpLCB0ZXh0LCBib3VuZGFyaWVzKTsKKyAgICAgICAgX3Rlc3RJc0JvdW5kYXJ5KHJiYmksIHRleHQsIGJvdW5kYXJpZXMpOworCisgICAgICAgIGRvTXVsdGlwbGVTZWxlY3Rpb25UZXN0KHJiYmksIHRleHQpOworICAgICB9CisKKyAgICAgcHJpdmF0ZSBWZWN0b3IgX3Rlc3RGaXJzdEFuZE5leHQoUnVsZUJhc2VkQnJlYWtJdGVyYXRvciByYmJpLCBTdHJpbmcgdGV4dCkgeworICAgICAgICAgaW50IHAgPSByYmJpLmZpcnN0KCk7CisgICAgICAgICBpbnQgbGFzdFAgPSBwOworICAgICAgICAgVmVjdG9yIHJlc3VsdCA9IG5ldyBWZWN0b3IoKTsKKworICAgICAgICAgaWYgKHAgIT0gMCkKKyAgICAgICAgICAgICBlcnJsbigiZmlyc3QoKSByZXR1cm5lZCAiICsgcCArICIgaW5zdGVhZCBvZiAwIik7CisgICAgICAgICB3aGlsZSAocCAhPSBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yLkRPTkUpIHsKKyAgICAgICAgICAgICBwID0gcmJiaS5uZXh0KCk7CisgICAgICAgICAgICAgaWYgKHAgIT0gUnVsZUJhc2VkQnJlYWtJdGVyYXRvci5ET05FKSB7CisgICAgICAgICAgICAgICAgIGlmIChwIDw9IGxhc3RQKQorICAgICAgICAgICAgICAgICAgICAgZXJybG4oIm5leHQoKSBmYWlsZWQgdG8gbW92ZSBmb3J3YXJkOiBuZXh0KCkgb24gcG9zaXRpb24gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgbGFzdFAgKyAiIHlpZWxkZWQgIiArIHApOworCisgICAgICAgICAgICAgICAgIHJlc3VsdC5hZGRFbGVtZW50KHRleHQuc3Vic3RyaW5nKGxhc3RQLCBwKSk7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICBpZiAobGFzdFAgIT0gdGV4dC5sZW5ndGgoKSkKKyAgICAgICAgICAgICAgICAgICAgIGVycmxuKCJuZXh0KCkgcmV0dXJuZWQgRE9ORSBwcmVtYXR1cmVseTogb2Zmc2V0IHdhcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBsYXN0UCArICIgaW5zdGVhZCBvZiAiICsgdGV4dC5sZW5ndGgoKSk7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIGxhc3RQID0gcDsKKyAgICAgICAgIH0KKyAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgIH0KKworICAgICBwcml2YXRlIFZlY3RvciBfdGVzdExhc3RBbmRQcmV2aW91cyhSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIHJiYmksIFN0cmluZyB0ZXh0KSB7CisgICAgICAgICBpbnQgcCA9IHJiYmkubGFzdCgpOworICAgICAgICAgaW50IGxhc3RQID0gcDsKKyAgICAgICAgIFZlY3RvciByZXN1bHQgPSBuZXcgVmVjdG9yKCk7CisKKyAgICAgICAgIGlmIChwICE9IHRleHQubGVuZ3RoKCkpCisgICAgICAgICAgICAgZXJybG4oImxhc3QoKSByZXR1cm5lZCAiICsgcCArICIgaW5zdGVhZCBvZiAiICsgdGV4dC5sZW5ndGgoKSk7CisgICAgICAgICB3aGlsZSAocCAhPSBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yLkRPTkUpIHsKKyAgICAgICAgICAgICBwID0gcmJiaS5wcmV2aW91cygpOworICAgICAgICAgICAgIGlmIChwICE9IFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IuRE9ORSkgeworICAgICAgICAgICAgICAgICBpZiAocCA+PSBsYXN0UCkKKyAgICAgICAgICAgICAgICAgICAgIGVycmxuKCJwcmV2aW91cygpIGZhaWxlZCB0byBtb3ZlIGJhY2t3YXJkOiBwcmV2aW91cygpIG9uIHBvc2l0aW9uICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGxhc3RQICsgIiB5aWVsZGVkICIgKyBwKTsKKworICAgICAgICAgICAgICAgICByZXN1bHQuaW5zZXJ0RWxlbWVudEF0KHRleHQuc3Vic3RyaW5nKHAsIGxhc3RQKSwgMCk7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICBpZiAobGFzdFAgIT0gMCkKKyAgICAgICAgICAgICAgICAgICAgIGVycmxuKCJwcmV2aW91cygpIHJldHVybmVkIERPTkUgcHJlbWF0dXJlbHk6IG9mZnNldCB3YXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgbGFzdFAgKyAiIGluc3RlYWQgb2YgMCIpOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBsYXN0UCA9IHA7CisgICAgICAgICB9CisgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICB9CisKKyAgICAgcHJpdmF0ZSB2b2lkIGNvbXBhcmVGcmFnbWVudExpc3RzKFN0cmluZyBmMU5hbWUsIFN0cmluZyBmMk5hbWUsIFZlY3RvciBmMSwgVmVjdG9yIGYyKSB7CisgICAgICAgICBpbnQgcDEgPSAwOworICAgICAgICAgaW50IHAyID0gMDsKKyAgICAgICAgIFN0cmluZyBzMTsKKyAgICAgICAgIFN0cmluZyBzMjsKKyAgICAgICAgIGludCB0MSA9IDA7CisgICAgICAgICBpbnQgdDIgPSAwOworCisgICAgICAgICB3aGlsZSAocDEgPCBmMS5zaXplKCkgJiYgcDIgPCBmMi5zaXplKCkpIHsKKyAgICAgICAgICAgICBzMSA9IChTdHJpbmcpZjEuZWxlbWVudEF0KHAxKTsKKyAgICAgICAgICAgICBzMiA9IChTdHJpbmcpZjIuZWxlbWVudEF0KHAyKTsKKyAgICAgICAgICAgICB0MSArPSBzMS5sZW5ndGgoKTsKKyAgICAgICAgICAgICB0MiArPSBzMi5sZW5ndGgoKTsKKworICAgICAgICAgICAgIGlmIChzMS5lcXVhbHMoczIpKSB7CisgICAgICAgICAgICAgICAgIGRlYnVnTG9nbG4oIiAgID4iICsgczEgKyAiPCIpOworICAgICAgICAgICAgICAgICArK3AxOworICAgICAgICAgICAgICAgICArK3AyOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgaW50IHRlbXBUMSA9IHQxOworICAgICAgICAgICAgICAgICBpbnQgdGVtcFQyID0gdDI7CisgICAgICAgICAgICAgICAgIGludCB0ZW1wUDEgPSBwMTsKKyAgICAgICAgICAgICAgICAgaW50IHRlbXBQMiA9IHAyOworCisgICAgICAgICAgICAgICAgIHdoaWxlICh0ZW1wVDEgIT0gdGVtcFQyICYmIHRlbXBQMSA8IGYxLnNpemUoKSAmJiB0ZW1wUDIgPCBmMi5zaXplKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0ZW1wVDEgPCB0ZW1wVDIgJiYgdGVtcFAxIDwgZjEuc2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcFQxICs9ICgoU3RyaW5nKWYxLmVsZW1lbnRBdCh0ZW1wUDEpKS5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICArK3RlbXBQMTsKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0ZW1wVDIgPCB0ZW1wVDEgJiYgdGVtcFAyIDwgZjIuc2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcFQyICs9ICgoU3RyaW5nKWYyLmVsZW1lbnRBdCh0ZW1wUDIpKS5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICArK3RlbXBQMjsKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICBsb2dsbigiKioqICIgKyBmMU5hbWUgKyAiIGhhczoiKTsKKyAgICAgICAgICAgICAgICAgd2hpbGUgKHAxIDw9IHRlbXBQMSAmJiBwMSA8IGYxLnNpemUoKSkgeworICAgICAgICAgICAgICAgICAgICAgczEgPSAoU3RyaW5nKWYxLmVsZW1lbnRBdChwMSk7CisgICAgICAgICAgICAgICAgICAgICB0MSArPSBzMS5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICAgICAgIGRlYnVnTG9nbG4oIiAqKiogPiIgKyBzMSArICI8Iik7CisgICAgICAgICAgICAgICAgICAgICArK3AxOworICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIGxvZ2xuKCIqKioqKiAiICsgZjJOYW1lICsgIiBoYXM6Iik7CisgICAgICAgICAgICAgICAgIHdoaWxlIChwMiA8PSB0ZW1wUDIgJiYgcDIgPCBmMi5zaXplKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgIHMyID0gKFN0cmluZylmMi5lbGVtZW50QXQocDIpOworICAgICAgICAgICAgICAgICAgICAgdDIgKz0gczIubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgICAgICBkZWJ1Z0xvZ2xuKCIgKioqKiogPiIgKyBzMiArICI8Iik7CisgICAgICAgICAgICAgICAgICAgICArK3AyOworICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIGVycmxuKCJEaXNjcmVwYW5jeSBiZXR3ZWVuICIgKyBmMU5hbWUgKyAiIGFuZCAiICsgZjJOYW1lKTsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBfdGVzdEZvbGxvd2luZyhSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIHJiYmksIFN0cmluZyB0ZXh0LCBpbnRbXSBib3VuZGFyaWVzKSB7CisgICAgICAgbG9nbG4oInRlc3RGb2xsb3dpbmcoKToiKTsKKyAgICAgICBpbnQgcCA9IDI7CisgICAgICAgZm9yKGludCBpID0gMDsgaSA8PSB0ZXh0Lmxlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgICAgaWYgKGkgPT0gYm91bmRhcmllc1twXSkKKyAgICAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgaW50IGIgPSByYmJpLmZvbGxvd2luZyhpKTsKKyAgICAgICAgICAgbG9nbG4oInJiYmkuZm9sbG93aW5nKCIgKyBpICsgIikgLT4gIiArIGIpOworICAgICAgICAgICBpZiAoYiAhPSBib3VuZGFyaWVzW3BdKQorICAgICAgICAgICAgICAgZXJybG4oIldyb25nIHJlc3VsdCBmcm9tIGZvbGxvd2luZygpIGZvciAiICsgaSArICI6IGV4cGVjdGVkICIgKyBib3VuZGFyaWVzW3BdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiLCBnb3QgIiArIGIpOworICAgICAgIH0KKyAgIH0KKworICAgcHJpdmF0ZSB2b2lkIF90ZXN0UHJlY2VkaW5nKFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IgcmJiaSwgU3RyaW5nIHRleHQsIGludFtdIGJvdW5kYXJpZXMpIHsKKyAgICAgICBsb2dsbigidGVzdFByZWNlZGluZygpOiIpOworICAgICAgIGludCBwID0gMDsKKyAgICAgICBmb3IoaW50IGkgPSAwOyBpIDw9IHRleHQubGVuZ3RoKCk7IGkrKykgeworICAgICAgICAgICBpbnQgYiA9IHJiYmkucHJlY2VkaW5nKGkpOworICAgICAgICAgICBsb2dsbigicmJiaS5wcmVjZWRpbmcoIiArIGkgKyAiKSAtPiAiICsgYik7CisgICAgICAgICAgIGlmIChiICE9IGJvdW5kYXJpZXNbcF0pCisgICAgICAgICAgICAgICBlcnJsbigiV3JvbmcgcmVzdWx0IGZyb20gcHJlY2VkaW5nKCkgZm9yICIgKyBpICsgIjogZXhwZWN0ZWQgIiArIGJvdW5kYXJpZXNbcF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiwgZ290ICIgKyBiKTsKKyAgICAgICAgICAgaWYgKGkgPT0gYm91bmRhcmllc1twICsgMV0pCisgICAgICAgICAgICAgICArK3A7CisgICAgICAgfQorICAgfQorCisgICBwcml2YXRlIHZvaWQgX3Rlc3RJc0JvdW5kYXJ5KFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IgcmJiaSwgU3RyaW5nIHRleHQsIGludFtdIGJvdW5kYXJpZXMpIHsKKyAgICAgICBsb2dsbigidGVzdElzQm91bmRhcnkoKToiKTsKKyAgICAgICBpbnQgcCA9IDE7CisgICAgICAgYm9vbGVhbiBpc0I7CisgICAgICAgZm9yKGludCBpID0gMDsgaSA8PSB0ZXh0Lmxlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgICAgaXNCID0gcmJiaS5pc0JvdW5kYXJ5KGkpOworICAgICAgICAgICBsb2dsbigicmJiaS5pc0JvdW5kYXJ5KCIgKyBpICsgIikgLT4gIiArIGlzQik7CisgICAgICAgICAgIGlmKGkgPT0gYm91bmRhcmllc1twXSkgeworICAgICAgICAgICAgICAgaWYgKCFpc0IpCisgICAgICAgICAgICAgICAgICAgZXJybG4oIldyb25nIHJlc3VsdCBmcm9tIGlzQm91bmRhcnkoKSBmb3IgIiArIGkgKyAiOiBleHBlY3RlZCB0cnVlLCBnb3QgZmFsc2UiKTsKKyAgICAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgfQorICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgIGlmKGlzQikKKyAgICAgICAgICAgICAgICAgICBlcnJsbigiV3JvbmcgcmVzdWx0IGZyb20gaXNCb3VuZGFyeSgpIGZvciAiICsgaSArICI6IGV4cGVjdGVkIGZhbHNlLCBnb3QgdHJ1ZSIpOworICAgICAgICAgICB9CisgICAgICAgfQorICAgfQorICAgcHJpdmF0ZSB2b2lkIGRvTXVsdGlwbGVTZWxlY3Rpb25UZXN0KFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IgaXRlcmF0b3IsIFN0cmluZyB0ZXN0VGV4dCkKKyAgIHsKKyAgICAgICBsb2dsbigiTXVsdGlwbGUgc2VsZWN0aW9uIHRlc3QuLi4iKTsKKyAgICAgICBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIHRlc3RJdGVyYXRvciA9IChSdWxlQmFzZWRCcmVha0l0ZXJhdG9yKWl0ZXJhdG9yLmNsb25lKCk7CisgICAgICAgaW50IG9mZnNldCA9IGl0ZXJhdG9yLmZpcnN0KCk7CisgICAgICAgaW50IHRlc3RPZmZzZXQ7CisgICAgICAgaW50IGNvdW50ID0gMDsKKworICAgICAgIGRvIHsKKyAgICAgICAgICAgdGVzdE9mZnNldCA9IHRlc3RJdGVyYXRvci5maXJzdCgpOworICAgICAgICAgICB0ZXN0T2Zmc2V0ID0gdGVzdEl0ZXJhdG9yLm5leHQoY291bnQpOworICAgICAgICAgICBsb2dsbigibmV4dCgiICsgY291bnQgKyAiKSAtPiAiICsgdGVzdE9mZnNldCk7CisgICAgICAgICAgIGlmIChvZmZzZXQgIT0gdGVzdE9mZnNldCkKKyAgICAgICAgICAgICAgIGVycmxuKCJuZXh0KG4pIGFuZCBuZXh0KCkgbm90IHJldHVybmluZyBjb25zaXN0ZW50IHJlc3VsdHM6IGZvciBzdGVwICIgKyBjb3VudCArICIsIG5leHQobikgcmV0dXJuZWQgIiArIHRlc3RPZmZzZXQgKyAiIGFuZCBuZXh0KCkgaGFkICIgKyBvZmZzZXQpOworCisgICAgICAgICAgIGlmIChvZmZzZXQgIT0gUnVsZUJhc2VkQnJlYWtJdGVyYXRvci5ET05FKSB7CisgICAgICAgICAgICAgICBjb3VudCsrOworICAgICAgICAgICAgICAgb2Zmc2V0ID0gaXRlcmF0b3IubmV4dCgpOworICAgICAgICAgICB9CisgICAgICAgfSB3aGlsZSAob2Zmc2V0ICE9IFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IuRE9ORSk7CisKKyAgICAgICAvLyBub3cgZG8gaXQgYmFja3dhcmRzLi4uCisgICAgICAgb2Zmc2V0ID0gaXRlcmF0b3IubGFzdCgpOworICAgICAgIGNvdW50ID0gMDsKKworICAgICAgIGRvIHsKKyAgICAgICAgICAgdGVzdE9mZnNldCA9IHRlc3RJdGVyYXRvci5sYXN0KCk7CisgICAgICAgICAgIHRlc3RPZmZzZXQgPSB0ZXN0SXRlcmF0b3IubmV4dChjb3VudCk7CisgICAgICAgICAgIGxvZ2xuKCJuZXh0KCIgKyBjb3VudCArICIpIC0+ICIgKyB0ZXN0T2Zmc2V0KTsKKyAgICAgICAgICAgaWYgKG9mZnNldCAhPSB0ZXN0T2Zmc2V0KQorICAgICAgICAgICAgICAgZXJybG4oIm5leHQobikgYW5kIG5leHQoKSBub3QgcmV0dXJuaW5nIGNvbnNpc3RlbnQgcmVzdWx0czogZm9yIHN0ZXAgIiArIGNvdW50ICsgIiwgbmV4dChuKSByZXR1cm5lZCAiICsgdGVzdE9mZnNldCArICIgYW5kIG5leHQoKSBoYWQgIiArIG9mZnNldCk7CisKKyAgICAgICAgICAgaWYgKG9mZnNldCAhPSBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yLkRPTkUpIHsKKyAgICAgICAgICAgICAgIGNvdW50LS07CisgICAgICAgICAgICAgICBvZmZzZXQgPSBpdGVyYXRvci5wcmV2aW91cygpOworICAgICAgICAgICB9CisgICAgICAgfSB3aGlsZSAob2Zmc2V0ICE9IFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IuRE9ORSk7CisgICB9CisKKyAgIHByaXZhdGUgdm9pZCBkZWJ1Z0xvZ2xuKFN0cmluZyBzKSB7CisgICAgICAgIGZpbmFsIFN0cmluZyB6ZXJvcyA9ICIwMDAwIjsKKyAgICAgICAgU3RyaW5nIHRlbXA7CisgICAgICAgIFN0cmluZ0J1ZmZlciBvdXQgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcy5sZW5ndGgoKTsgaSsrKSB7CisgICAgICAgICAgICBjaGFyIGMgPSBzLmNoYXJBdChpKTsKKyAgICAgICAgICAgIGlmIChjID49ICcgJyAmJiBjIDwgJ1x1MDA3ZicpCisgICAgICAgICAgICAgICAgb3V0LmFwcGVuZChjKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIG91dC5hcHBlbmQoIlxcdSIpOworICAgICAgICAgICAgICAgIHRlbXAgPSBJbnRlZ2VyLnRvSGV4U3RyaW5nKChpbnQpYyk7CisgICAgICAgICAgICAgICAgb3V0LmFwcGVuZCh6ZXJvcy5zdWJzdHJpbmcoMCwgNCAtIHRlbXAubGVuZ3RoKCkpKTsKKyAgICAgICAgICAgICAgICBvdXQuYXBwZW5kKHRlbXApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgICBsb2dsbihvdXQudG9TdHJpbmcoKSk7CisgICAgfQorICAKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9yYmJpL1NpbXBsZUJJVGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3JiYmkvU2ltcGxlQklUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMGMxZjJkMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9yYmJpL1NpbXBsZUJJVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTc3IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvcmJiaS9TaW1wbGVCSVRlc3QuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNToxNiAkIAorICogJFJldmlzaW9uOiAxLjYgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0LnJiYmk7CisKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuQnJlYWtJdGVyYXRvcjsKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYudGVzdC5UZXN0Rm13azsKKworcHVibGljIGNsYXNzIFNpbXBsZUJJVGVzdCBleHRlbmRzIFRlc3RGbXdreworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIHRlc3RUZXh0ID0KKy8vICAgICAgICAiVGhlIHJhaW4gaW4gU3BhaW4gc3RheXMgbWFpbmx5IG9uIHRoZSBwbGFpbi4gIFRoZSBwbGFpbnMgaW4gU3BhaW4gYXJlIG1haW5seSBwYWluZWQgd2l0aCByYWluLiI7CisvLyJvbmUtdHdvIG5vdy0tICBIYWghICBZb3Ugb3dlIG1lIGV4YWN0bHkgJDEsMzQ1LjY3Li4uICBQYXkgdXAsIGh1aD8gIEJ5IHRoZSB3YXksIHdoeSBkb24ndCBJIHNlbmQgeW91IG15IHJlXHUwMzAxc3VtZVx1MDMwMT8gIFRoaXMgaXMgYSBsaW5lXHJcbmJyZWFrLiI7CisvLyJub3dpc3RoZXRpbWVmb3JhbGxnb29kbWVuLi4uICB0b2NvbWV0b3RoZWhlbHBvZnRoZWlyY291bnRyeSI7CisiV2hlbiwgaW4gdGhlIGNvdXJzZSBvZiBodW1hbiBldmVudHMsIGl0IGJlY29tZXMgbmVjZXNzYXJ5IGZvciBvbmUgcGVvcGxlIHRvIGRpc3NvbHZlIHRoZSBwb2xpdGljYWwgYm9uZHMgd2hpY2ggaGF2ZSAiCisvLyJXaGVuLGludGhlY291cnNlb2ZodW1hbmV2ZW50cyxpdGJlY29tZXNuZWNlc3Nhcnlmb3JvbmVwZW9wbGV0b2Rpc3NvbHZldGhlcG9saXRpY2FsYm9uZHN3aGljaGhhdmUiCisrICJjb25uZWN0ZWR0aGVtd2l0aGFub3RoZXIsYW5kdG9hc3N1bWVhbW9uZ3RoZXBvd2Vyc29mdGhlZWFydGgsdGhlc2VwYXJhdGVhbmRlcXVhbHN0YXRpb250b3doaWNodGhlbGF3cyIKKysgIm9mbmF0dXJlYW5kb2ZuYXR1cmUnc0dvZGVudGl0bGV0aGVtLGFkZWNlbnRyZXNwZWN0dG90aGVvcGluaW9uc29mbWFua2luZHJlcXVpcmVzdGhhdHRoZXlzaG91bGRkZWNsYXJldGhlIgorKyAiY2F1c2Vzd2hpY2hpbXBlbHRoZW10b3RoZXNlcGFyYXRpb25cbiIKKysgIldlaG9sZHRoZXNldHJ1dGhzdG9iZXNlbGYtZXZpZGVudCx0aGF0YWxsbWVuYXJlY3JlYXRlZGVxdWFsLHRoYXR0aGV5YXJlZW5kb3dlZGJ5dGhlaXJDcmVhdG9yd2l0aGNlcnRhaW4iCisrICJ1bmFsaWVuYWJsZXJpZ2h0cyx0aGF0YW1vbmd0aGVzZWFyZWxpZmUsbGliZXJ0eWFuZHRoZXB1cnN1aXRvZmhhcHBpbmVzcy5UaGF0dG9zZWN1cmV0aGVzZXJpZ2h0cyxnb3Zlcm5tZW50c2FyZSIKKysgImluc3RpdHV0ZWRhbW9uZ21lbixkZXJpdmluZ3RoZWlyanVzdHBvd2Vyc2Zyb210aGVjb25zZW50b2Z0aGVnb3Zlcm5lZC5UaGF0d2hlbmV2ZXJhbnlmb3Jtb2Znb3Zlcm5tZW50IgorKyAiYmVjb21lc2Rlc3RydWN0aXZldG90aGVzZWVuZHMsaXRpc3RoZXJpZ2h0b2Z0aGVwZW9wbGV0b2FsdGVyb3J0b2Fib2xpc2hpdCxhbmR0b2luc3RpdHV0ZW5ld2dvdmVybm1lbnQsbGF5aW5nIgorKyAiaXRzZm91bmRhdGlvbm9uc3VjaHByaW5jaXBsZXNhbmRvcmdhbml6aW5naXRzcG93ZXJzaW5zdWNoZm9ybSxhc3RvdGhlbXNoYWxsc2VlbW1vc3RsaWtlbHl0b2VmZmVjdHRoZWlyc2FmZXR5IgorKyAiYW5kaGFwcGluZXNzLlBydWRlbmNlLGluZGVlZCx3aWxsZGljdGF0ZXRoYXRnb3Zlcm5tZW50c2xvbmdlc3RhYmxpc2hlZHNob3VsZG5vdGJlY2hhbmdlZGZvcmxpZ2h0YW5kdHJhbnNpZW50IgorKyAiY2F1c2VzO2FuZGFjY29yZGluZ2x5YWxsZXhwZXJpZW5jZWhhdGhzaG93bnRoYXRtYW5raW5kYXJlbW9yZWRpc3Bvc2VkdG9zdWZmZXIsd2hpbGVldmlsc2FyZXN1ZmZlcmFibGUsdGhhbiIKKysgInRvcmlnaHR0aGVtc2VsdmVzYnlhYm9saXNoaW5ndGhlZm9ybXN0b3doaWNodGhleWFyZWFjY3VzdG9tZWQuQnV0d2hlbmFsb25ndHJhaW5vZmFidXNlc2FuZHVzdXJwYXRpb25zLCIKKysgInB1cnN1aW5naW52YXJpYWJseXRoZXNhbWVvYmplY3RldmluY2VzYWRlc2lnbnRvcmVkdWNldGhlbXVuZGVyYWJzb2x1dGVkZXNwb3Rpc20saXRpc3RoZWlycmlnaHQsaXRpc3RoZWlyZHV0eSwiCisrICJ0b3Rocm93b2Zmc3VjaGdvdmVybm1lbnQsYW5kdG9wcm92aWRlbmV3Z3VhcmRzZm9ydGhlaXJmdXR1cmVzZWN1cml0eS4tLVN1Y2hoYXNiZWVudGhlcGF0aWVudHN1ZmZlcmFuY2VvZiIKKysgInRoZXNlY29sb25pZXM7YW5kc3VjaGlzbm93dGhlbmVjZXNzaXR5d2hpY2hjb25zdHJhaW5zdGhlbXRvYWx0ZXJ0aGVpcmZvcm1lcnN5c3RlbXNvZmdvdmVybm1lbnQuVGhlaGlzdG9yeSIKKysgIm9mdGhlcHJlc2VudEtpbmdvZkdyZWF0QnJpdGFpbmlzYWhpc3RvcnlvZnJlcGVhdGVkaW5qdXJpZXNhbmR1c3VycGF0aW9ucyxhbGxoYXZpbmdpbmRpcmVjdG9iamVjdHRoZSIKKysgImVzdGFibGlzaG1lbnRvZmFuYWJzb2x1dGV0eXJhbm55b3ZlcnRoZXNlc3RhdGVzLlRvcHJvdmV0aGlzLGxldGZhY3RzYmVzdWJtaXR0ZWR0b2FjYW5kaWR3b3JsZC5cbiIKKysgIkhlaGFzcmVmdXNlZGhpc2Fzc2VudHRvbGF3cyx0aGVtb3N0d2hvbGVzb21lYW5kbmVjZXNzYXJ5Zm9ydGhlcHVibGljZ29vZC5cbiIKKysgIkhlaGFzZm9yYmlkZGVuaGlzZ292ZXJub3JzdG9wYXNzbGF3c29maW1tZWRpYXRlYW5kcHJlc3NpbmdpbXBvcnRhbmNlLHVubGVzc3N1c3BlbmRlZGludGhlaXJvcGVyYXRpb250aWxsIgorKyAiaGlzYXNzZW50c2hvdWxkYmVvYnRhaW5lZDthbmR3aGVuc29zdXNwZW5kZWQsaGVoYXN1dHRlcmx5bmVnbGVjdGVkdG9hdHRlbmR0b3RoZW0uXG4iCisrICJIZWhhc3JlZnVzZWR0b3Bhc3NvdGhlcmxhd3Nmb3J0aGVhY2NvbW1vZGF0aW9ub2ZsYXJnZWRpc3RyaWN0c29mcGVvcGxlLHVubGVzc3Rob3NlcGVvcGxld291bGRyZWxpbnF1aXNoIgorKyAidGhlcmlnaHRvZnJlcHJlc2VudGF0aW9uaW50aGVsZWdpc2xhdHVyZSxhcmlnaHRpbmVzdGltYWJsZXRvdGhlbWFuZGZvcm1pZGFibGV0b3R5cmFudHNvbmx5LlxuIgorKyAiSGVoYXNjYWxsZWR0b2dldGhlcmxlZ2lzbGF0aXZlYm9kaWVzYXRwbGFjZXN1bnVzdWFsLHVuY29tZm9ydGFibGUsYW5kZGlzdGFudGZyb210aGVkZXBvc2l0b3J5b2Z0aGVpcnB1YmxpYyIKKysgInJlY29yZHMsZm9ydGhlc29sZXB1cnBvc2VvZmZhdGlndWluZ3RoZW1pbnRvY29tcGxpYW5jZXdpdGhoaXNtZWFzdXJlcy5cbiIKKysgIkhlaGFzZGlzc29sdmVkcmVwcmVzZW50YXRpdmVob3VzZXNyZXBlYXRlZGx5LGZvcm9wcG9zaW5nd2l0aG1hbmx5ZmlybW5lc3NoaXNpbnZhc2lvbnNvbnRoZXJpZ2h0c29mdGhlcGVvcGxlLlxuIgorKyAiSGVoYXNyZWZ1c2VkZm9yYWxvbmd0aW1lLGFmdGVyc3VjaGRpc3NvbHV0aW9ucyx0b2NhdXNlb3RoZXJzdG9iZWVsZWN0ZWQ7d2hlcmVieXRoZWxlZ2lzbGF0aXZlcG93ZXJzLCIKKysgImluY2FwYWJsZW9mYW5uaWhpbGF0aW9uLGhhdmVyZXR1cm5lZHRvdGhlcGVvcGxlYXRsYXJnZWZvcnRoZWlyZXhlcmNpc2U7dGhlc3RhdGVyZW1haW5pbmdpbnRoZW1lYW50aW1lZXhwb3NlZCIKKysgInRvYWxsdGhlZGFuZ2Vyc29maW52YXNpb25mcm9td2l0aG91dCxhbmRjb252dWxzaW9uc3dpdGhpbi5cbiIKKysgIkhlaGFzZW5kZWF2b3JlZHRvcHJldmVudHRoZXBvcHVsYXRpb25vZnRoZXNlc3RhdGVzO2ZvcnRoYXRwdXJwb3Nlb2JzdHJ1Y3Rpbmd0aGVsYXdzZm9ybmF0dXJhbGl6YXRpb25vZiIKKysgImZvcmVpZ25lcnM7cmVmdXNpbmd0b3Bhc3NvdGhlcnN0b2VuY291cmFnZXRoZWlybWlncmF0aW9uaGl0aGVyLGFuZHJhaXNpbmd0aGVjb25kaXRpb25zb2ZuZXdhcHByb3ByaWF0aW9uc29mIgorKyAibGFuZHMuXG4iCisrICJIZWhhc29ic3RydWN0ZWR0aGVhZG1pbmlzdHJhdGlvbm9manVzdGljZSxieXJlZnVzaW5naGlzYXNzZW50dG9sYXdzZm9yZXN0YWJsaXNoaW5nanVkaWNpYXJ5cG93ZXJzLlxuIgorKyAiSGVoYXNtYWRlanVkZ2VzZGVwZW5kZW50b25oaXN3aWxsYWxvbmUsZm9ydGhldGVudXJlb2Z0aGVpcm9mZmljZXMsYW5kdGhlYW1vdW50YW5kcGF5bWVudG9mdGhlaXJzYWxhcmllcy5cbiIKKysgIkhlaGFzZXJlY3RlZGFtdWx0aXR1ZGVvZm5ld29mZmljZXMsYW5kc2VudGhpdGhlcnN3YXJtc29mb2ZmaWNlcnN0b2hhcmFzc291cnBlb3BsZSxhbmRlYXRvdXR0aGVpciIKKysgInN1YnN0YW5jZS5cbiIKKysgIkhlaGFza2VwdGFtb25ndXMsaW50aW1lc29mcGVhY2Usc3RhbmRpbmdhcm1pZXN3aXRob3V0dGhlY29uc2VudG9mb3VybGVnaXNsYXR1cmUuXG4iCisrICJIZWhhc2FmZmVjdGVkdG9yZW5kZXJ0aGVtaWxpdGFyeWluZGVwZW5kZW50b2ZhbmRzdXBlcmlvcnRvY2l2aWxwb3dlci5cbiIKKysgIkhlaGFzY29tYmluZWR3aXRob3RoZXJzdG9zdWJqZWN0dXN0b2FqdXJpc2RpY3Rpb25mb3JlaWdudG9vdXJjb25zdGl0dXRpb24sYW5kdW5hY2tub3dsZWRnZWRieW91cmxhd3M7IgorKyAiZ2l2aW5naGlzYXNzZW50dG90aGVpcmFjdHNvZnByZXRlbmRlZGxlZ2lzbGF0aW9uOlxuIgorKyAiRm9ycXVhcnRlcmluZ2xhcmdlYm9kaWVzb2Zhcm1lZHRyb29wc2Ftb25ndXM6XG4iCisrICJGb3Jwcm90ZWN0aW5ndGhlbSxieW1vY2t0cmlhbCxmcm9tcHVuaXNobWVudGZvcmFueW11cmRlcnN3aGljaHRoZXlzaG91bGRjb21taXRvbnRoZWluaGFiaXRhbnRzb2Z0aGVzZSIKKysgInN0YXRlczpcbiIKKysgIkZvcmN1dHRpbmdvZmZvdXJ0cmFkZXdpdGhhbGxwYXJ0c29mdGhld29ybGQ6XG4iCisrICJGb3JpbXBvc2luZ3RheGVzb251c3dpdGhvdXRvdXJjb25zZW50OlxuIgorKyAiRm9yZGVwcml2aW5ndXNpbm1hbnljYXNlcyxvZnRoZWJlbmVmaXRzb2Z0cmlhbGJ5anVyeTpcbiIKKysgIkZvcnRyYW5zcG9ydGluZ3VzYmV5b25kc2Vhc3RvYmV0cmllZGZvcnByZXRlbmRlZG9mZmVuc2VzOlxuIgorKyAiRm9yYWJvbGlzaGluZ3RoZWZyZWVzeXN0ZW1vZkVuZ2xpc2hsYXdzaW5hbmVpZ2hib3Jpbmdwcm92aW5jZSxlc3RhYmxpc2hpbmd0aGVyZWluYW5hcmJpdHJhcnlnb3Zlcm5tZW50LGFuZCIKKysgImVubGFyZ2luZ2l0c2JvdW5kYXJpZXNzb2FzdG9yZW5kZXJpdGF0b25jZWFuZXhhbXBsZWFuZGZpdGluc3RydW1lbnRmb3JpbnRyb2R1Y2luZ3RoZXNhbWVhYnNvbHV0ZXJ1bGVpbnRoZXNlIgorKyAiY29sb25pZXM6XG4iCisrICJGb3J0YWtpbmdhd2F5b3VyY2hhcnRlcnMsYWJvbGlzaGluZ291cm1vc3R2YWx1YWJsZWxhd3MsYW5kYWx0ZXJpbmdmdW5kYW1lbnRhbGx5dGhlZm9ybXNvZm91cmdvdmVybm1lbnRzOlxuIgorKyAiRm9yc3VzcGVuZGluZ291cm93bmxlZ2lzbGF0dXJlcyxhbmRkZWNsYXJpbmd0aGVtc2VsdmVzaW52ZXN0ZWR3aXRocG93ZXJ0b2xlZ2lzbGF0ZWZvcnVzaW5hbGxjYXNlc3doYXRzb2V2ZXIuXG4iCisrICJIZWhhc2FiZGljYXRlZGdvdmVybm1lbnRoZXJlLGJ5ZGVjbGFyaW5ndXNvdXRvZmhpc3Byb3RlY3Rpb25hbmR3YWdpbmd3YXJhZ2FpbnN0dXMuXG4iCisrICJIZWhhc3BsdW5kZXJlZG91cnNlYXMscmF2YWdlZG91cmNvYXN0cyxidXJuZWRvdXJ0b3ducyxhbmRkZXN0cm95ZWR0aGVsaXZlc29mb3VycGVvcGxlLlxuIgorKyAiSGVpc2F0dGhpc3RpbWV0cmFuc3BvcnRpbmdsYXJnZWFybWllc29mZm9yZWlnbm1lcmNlbmFyaWVzdG9jb21wbGV0ZXRoZXdvcmtzb2ZkZWF0aCxkZXNvbGF0aW9uYW5kdHlyYW5ueSwiCisrICJhbHJlYWR5YmVndW53aXRoY2lyY3Vtc3RhbmNlc29mY3J1ZWx0eWFuZHBlcmZpZHlzY2FyY2VseXBhcmFsbGVsZWRpbnRoZW1vc3RiYXJiYXJvdXNhZ2VzLGFuZHRvdGFseXVud29ydGgiCisrICJ0aGVoZWFkb2ZhY2l2aWxpemVkbmF0aW9uLlxuIgorKyAiSGVoYXNjb25zdHJhaW5lZG91cmZlbGxvd2NpdGl6ZW5zdGFrZW5jYXB0aXZlb250aGVoaWdoc2Vhc3RvYmVhcmFybXNhZ2FpbnN0dGhlaXJjb3VudHJ5LHRvYmVjb21ldGhlIgorKyAiZXhlY3V0aW9uZXJzb2Z0aGVpcmZyaWVuZHNhbmRicmV0aHJlbixvcnRvZmFsbHRoZW1zZWx2ZXNieXRoZWlyaGFuZHMuXG4iCisrICJIZWhhc2V4Y2l0ZWRkb21lc3RpY2luc3VycmVjdGlvbnNhbW9uZ3N0dXMsYW5kaGFzZW5kZWF2b3JlZHRvYnJpbmdvbnRoZWluaGFiaXRhbnRzb2ZvdXJmcm9udGllcnMsdGhlIgorKyAibWVyY2lsZXNzSW5kaWFuc2F2YWdlcyx3aG9zZWtub3ducnVsZW9md2FyZmFyZSxpc3VuZGlzdGluZ3Vpc2hlZGRlc3RydWN0aW9ub2ZhbGxhZ2VzLHNleGVzYW5kY29uZGl0aW9ucy5cbiIKKysgIkluZXZlcnlzdGFnZW9mdGhlc2VvcHByZXNzaW9uc3dlaGF2ZXBldGl0aW9uZWRmb3JyZWRyZXNzaW50aGVtb3N0aHVtYmxldGVybXM6b3VycmVwZWF0ZWRwZXRpdGlvbnNoYXZlIgorKyAiYmVlbmFuc3dlcmVkb25seWJ5cmVwZWF0ZWRpbmp1cnkuQXByaW5jZSx3aG9zZWNoYXJhY3RlcmlzdGh1c21hcmtlZGJ5ZXZlcnlhY3R3aGljaG1heWRlZmluZWF0eXJhbnQsaXMiCisrICJ1bmZpdHRvYmV0aGVydWxlcm9mYWZyZWVwZW9wbGUuXG4iCisrICJOb3JoYXZld2ViZWVud2FudGluZ2luYXR0ZW50aW9udG9vdXJCcml0aXNoYnJldGhyZW4uV2VoYXZld2FybmVkdGhlbWZyb210aW1ldG90aW1lb2ZhdHRlbXB0c2J5dGhlaXIiCisrICJsZWdpc2xhdHVyZXRvZXh0ZW5kYW51bndhcnJhbnRhYmxlanVyaXNkaWN0aW9ub3ZlcnVzLldlaGF2ZXJlbWluZGVkdGhlbW9mdGhlY2lyY3Vtc3RhbmNlc29mb3VyZW1pZ3JhdGlvbiIKKysgImFuZHNldHRsZW1lbnRoZXJlLldlaGF2ZWFwcGVhbGVkdG90aGVpcm5hdGl2ZWp1c3RpY2VhbmRtYWduYW5pbWl0eSxhbmR3ZWhhdmVjb25qdXJlZHRoZW1ieXRoZXRpZXNvZm91ciIKKysgImNvbW1vbmtpbmRyZWR0b2Rpc2F2b3d0aGVzZXVzdXJwYXRpb25zLHdoaWNoLHdvdWxkaW5ldml0YWJseWludGVycnVwdG91cmNvbm5lY3Rpb25zYW5kY29ycmVzcG9uZGVuY2UuV2UiCisrICJtdXN0LHRoZXJlZm9yZSxhY3F1aWVzY2VpbnRoZW5lY2Vzc2l0eSx3aGljaGRlbm91bmNlc291cnNlcGFyYXRpb24sYW5kaG9sZHRoZW0sYXN3ZWhvbGR0aGVyZXN0b2ZtYW5raW5kLCIKKysgImVuZW1pZXNpbndhcixpbnBlYWNlZnJpZW5kcy5cbiIKKysgIldlLHRoZXJlZm9yZSx0aGVyZXByZXNlbnRhdGl2ZXNvZnRoZVVuaXRlZFN0YXRlc29mQW1lcmljYSxpbkdlbmVyYWxDb25ncmVzcyxhc3NlbWJsZWQsYXBwZWFsaW5ndG90aGUiCisrICJTdXByZW1lSnVkZ2VvZnRoZXdvcmxkZm9ydGhlcmVjdGl0dWRlb2ZvdXJpbnRlbnRpb25zLGRvLGludGhlbmFtZSxhbmRieXRoZWF1dGhvcml0eW9mdGhlZ29vZHBlb3BsZW9mIgorKyAidGhlc2Vjb2xvbmllcyxzb2xlbW5seXB1Ymxpc2hhbmRkZWNsYXJlLHRoYXR0aGVzZXVuaXRlZGNvbG9uaWVzYXJlLGFuZG9mcmlnaHRvdWdodHRvYmVmcmVlYW5kaW5kZXBlbmRlbnQiCisrICJzdGF0ZXM7dGhhdHRoZXlhcmVhYnNvbHZlZGZyb21hbGxhbGxlZ2lhbmNldG90aGVCcml0aXNoQ3Jvd24sYW5kdGhhdGFsbHBvbGl0aWNhbGNvbm5lY3Rpb25iZXR3ZWVudGhlbWFuZHRoZSIKKysgInN0YXRlb2ZHcmVhdEJyaXRhaW4saXNhbmRvdWdodHRvYmV0b3RhbGx5ZGlzc29sdmVkO2FuZHRoYXRhc2ZyZWVhbmRpbmRlcGVuZGVudHN0YXRlcyx0aGV5aGF2ZWZ1bGxwb3dlcnRvIgorKyAibGV2ZXl3YXIsY29uY2x1ZGVwZWFjZSxjb250cmFjdGFsbGlhbmNlcyxlc3RhYmxpc2hjb21tZXJjZSxhbmR0b2RvYWxsb3RoZXJhY3RzYW5kdGhpbmdzd2hpY2hpbmRlcGVuZGVudCIKKysgInN0YXRlc21heW9mcmlnaHRkby5BbmRmb3J0aGVzdXBwb3J0b2Z0aGlzZGVjbGFyYXRpb24sd2l0aGFmaXJtcmVsaWFuY2VvbnRoZXByb3RlY3Rpb25vZkRpdmluZVByb3ZpZGVuY2Usd2UiCisrICJtdXR1YWxseXBsZWRnZXRvZWFjaG90aGVyb3VybGl2ZXMsb3VyZm9ydHVuZXNhbmRvdXJzYWNyZWRob25vci5cbiI7CisKKwlwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkJbmV3IFNpbXBsZUJJVGVzdCgpLnJ1bihhcmdzKTsKKwl9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0V29yZEJyZWFrKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIEJyZWFrSXRlcmF0b3Igd29yZEJyZWFrID0gQnJlYWtJdGVyYXRvci5nZXRXb3JkSW5zdGFuY2UobmV3IExvY2FsZSgiZW4iLCAiVVMiLCAiVEVTVCIpKTsKKyAgICAgICAgaW50IGJyZWFrcyA9IGRvVGVzdCh3b3JkQnJlYWspOworICAgICAgICBsb2dsbihTdHJpbmcudmFsdWVPZihicmVha3MpKTsKKwl9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0TGluZUJyZWFrKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIEJyZWFrSXRlcmF0b3IgbGluZUJyZWFrID0gQnJlYWtJdGVyYXRvci5nZXRMaW5lSW5zdGFuY2UobmV3IExvY2FsZSgiZW4iLCAiVVMiLCAiVEVTVCIpKTsKKyAgICAgICAgaW50IGJyZWFrcyA9IGRvVGVzdChsaW5lQnJlYWspOworICAgICAgICBsb2dsbihTdHJpbmcudmFsdWVPZihicmVha3MpKTsKKwl9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0U2VudGVuY2VCcmVhaygpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBCcmVha0l0ZXJhdG9yIHNlbnRlbmNlQnJlYWsgPSBCcmVha0l0ZXJhdG9yLmdldFNlbnRlbmNlSW5zdGFuY2UobmV3IExvY2FsZSgiZW4iLCAiVVMiLCAiVEVTVCIpKTsKKyAgICAgICAgaW50IGJyZWFrcyA9IGRvVGVzdChzZW50ZW5jZUJyZWFrKTsKKyAgICAgICAgbG9nbG4oU3RyaW5nLnZhbHVlT2YoYnJlYWtzKSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBpbnQgZG9UZXN0KEJyZWFrSXRlcmF0b3IgYmkpIHsKKyAgICAgICAgLy8gZm9yd2FyZAorICAgICAgICBiaS5zZXRUZXh0KHRlc3RUZXh0KTsKKyAgICAgICAgaW50IHAgPSBiaS5maXJzdCgpOworICAgICAgICBpbnQgbGFzdFAgPSBwOworICAgICAgICBTdHJpbmcgZnJhZ21lbnQ7CisgICAgICAgIGludCBicmVha3MgPSAwOworICAgICAgICBsb2dsbigiRm9yd2FyZC4uLiIpOworICAgICAgICB3aGlsZSAocCAhPSBCcmVha0l0ZXJhdG9yLkRPTkUpIHsKKyAgICAgICAgICAgIHAgPSBiaS5uZXh0KCk7CisgICAgICAgICAgICBpZiAocCAhPSBCcmVha0l0ZXJhdG9yLkRPTkUpIHsKKyAgICAgICAgICAgICAgICBmcmFnbWVudCA9IHRlc3RUZXh0LnN1YnN0cmluZyhsYXN0UCwgcCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGZyYWdtZW50ID0gdGVzdFRleHQuc3Vic3RyaW5nKGxhc3RQKTsKKwkJCX0KKyAgICAgICAgICAgIGRlYnVnUHJpbnRsbigiOiA+IiArIGZyYWdtZW50ICsgIjwiKTsKKyAgICAgICAgICAgICsrYnJlYWtzOworICAgICAgICAgICAgbGFzdFAgPSBwOworICAgICAgICB9CisgICAgICAgIHJldHVybiBicmVha3M7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGRlYnVnUHJpbnRsbihTdHJpbmcgcykgeworICAgICAgICBmaW5hbCBTdHJpbmcgemVyb3MgPSAiMDAwMCI7CisgICAgICAgIFN0cmluZyB0ZW1wOworICAgICAgICBTdHJpbmdCdWZmZXIgb3V0ID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHMubGVuZ3RoKCk7IGkrKykgeworICAgICAgICAgICAgY2hhciBjID0gcy5jaGFyQXQoaSk7CisgICAgICAgICAgICBpZiAoYyA+PSAnICcgJiYgYyA8ICdcdTAwN2YnKQorICAgICAgICAgICAgICAgIG91dC5hcHBlbmQoYyk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBvdXQuYXBwZW5kKCJcXHUiKTsKKyAgICAgICAgICAgICAgICB0ZW1wID0gSW50ZWdlci50b0hleFN0cmluZygoaW50KWMpOworICAgICAgICAgICAgICAgIG91dC5hcHBlbmQoemVyb3Muc3Vic3RyaW5nKDAsIDQgLSB0ZW1wLmxlbmd0aCgpKSk7CisgICAgICAgICAgICAgICAgb3V0LmFwcGVuZCh0ZW1wKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBsb2dsbihvdXQudG9TdHJpbmcoKSk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGRlYnVnUHJpbnRsbjIoU3RyaW5nIHMpIHsKKyAgICAgICAgU3RyaW5nQnVmZmVyIG91dCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzLmxlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgICAgIGNoYXIgYyA9IHMuY2hhckF0KGkpOworICAgICAgICAgICAgaWYgKGMgPj0gJ1x1MDEwMCcpCisgICAgICAgICAgICAgICAgb3V0LmFwcGVuZCgiPCIgKyAoKGludCljIC0gMHgxMDApICsgIj4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBvdXQuYXBwZW5kKGMpOworICAgICAgICB9CisgICAgICAgIGxvZ2xuKG91dC50b1N0cmluZygpKTsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9yYmJpL3BhY2thZ2UuaHRtbCBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9yYmJpL3BhY2thZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45MmYxYjc1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3JiYmkvcGFja2FnZS5odG1sCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8IS0tICBDb3B5cmlnaHQgKEMpIDIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kCisgIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKworICAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvcmJiaS9wYWNrYWdlLmh0bWwsdiAkCisgICRSZXZpc2lvbjogMS4xICQKKyAgJERhdGU6IDIwMDAvMDMvMTUgMjE6MzU6NDkgJAorLS0+Cis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSI+CitUZXN0cyBmb3IgdGhlIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IuCis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3NhbXBsZS9Nb2R1bGVUZXN0U2FtcGxlLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3Qvc2FtcGxlL01vZHVsZVRlc3RTYW1wbGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NGMwNzE4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3NhbXBsZS9Nb2R1bGVUZXN0U2FtcGxlLmphdmEKQEAgLTAsMCArMSwxNTAgQEAKKy8qKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMS0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3Qvc2FtcGxlL01vZHVsZVRlc3RTYW1wbGUuamF2YSx2ICQKKyAqICREYXRlOiAyMDAyLzA4LzEzIDIyOjAwOjU4ICQKKyAqICRSZXZpc2lvbjogMS4yICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0LnNhbXBsZTsKKworaW1wb3J0IGNvbS5pYm0uaWN1LmRldi50ZXN0Lk1vZHVsZVRlc3Q7CitpbXBvcnQgY29tLmlibS5pY3UuZGV2LnRlc3QuVGVzdERhdGFNb2R1bGU7CitpbXBvcnQgY29tLmlibS5pY3UuZGV2LnRlc3QuVGVzdERhdGFNb2R1bGUuRGF0YU1hcDsKKworcHVibGljIGNsYXNzIE1vZHVsZVRlc3RTYW1wbGUgZXh0ZW5kcyBNb2R1bGVUZXN0IHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwluZXcgTW9kdWxlVGVzdFNhbXBsZSgpLnJ1bihhcmdzKTsKKyAgICB9CisKKyAgICAvLyBzdGFuZGFyZCBsb29wLCBzZXR0aW5ncyBhbmQgY2FzZXMKKyAgICBwdWJsaWMgdm9pZCBUZXN0MDEoKSB7CisJd2hpbGUgKG5leHRTZXR0aW5ncygpKSB7CisJICAgIGxvZ2xuKCItLS0tLS0tLSIpOworCSAgICBsb2dsbigiU3RyaW5nOiAiICsgc2V0dGluZ3MuZ2V0U3RyaW5nKCJhU3RyaW5nIikpOworCSAgICBpZiAoc2V0dGluZ3MuaXNEZWZpbmVkKCJhbkludCIpKSB7CisJCWxvZ2xuKCJJbnQ6ICIgKyBzZXR0aW5ncy5nZXRJbnQoImFuSW50IikpOworCSAgICB9CisJICAgIGxvZ2xuKCJCb29sZWFuOiAiICsgc2V0dGluZ3MuZ2V0Qm9vbGVhbigiYUJvb2xlYW4iKSk7CisKKwkgICAgd2hpbGUgKG5leHRDYXNlKCkpIHsKKwkJbG9nbG4oIiAgLS0tLSIpOworCQlsb2dsbigiICBTdHJpbmdBcnJheTogIiArIHByaW50QXJyYXkodGVzdGNhc2UuZ2V0U3RyaW5nQXJyYXkoImFTdHJpbmdBcnJheSIpKSk7CisJCWxvZ2xuKCIgIEludEFycmF5OiAiICsgcHJpbnRBcnJheSh0ZXN0Y2FzZS5nZXRJbnRBcnJheSgiYW5JbnRBcnJheSIpKSk7CisJCWxvZ2xuKCIgIEJvb2xlYW5BcnJheTogIiArIHByaW50QXJyYXkodGVzdGNhc2UuZ2V0Qm9vbGVhbkFycmF5KCJhQm9vbGVhbkFycmF5IikpKTsKKwkgICAgfQorCX0KKyAgICB9CisKKyAgICAvLyBsb29wIHdpdGgganVzdCBjYXNlcworICAgIHB1YmxpYyB2b2lkIFRlc3QwMigpIHsKKwl3aGlsZSAobmV4dENhc2UoKSkgeworCSAgICBsb2dsbigiLS0tLSIpOworCSAgICBsb2dsbigiU3RyaW5nOiAiICsgdGVzdGNhc2UuZ2V0U3RyaW5nKCJhU3RyaW5nIikpOworCSAgICBsb2dsbigiSW50OiAiICsgdGVzdGNhc2UuZ2V0SW50KCJhbkludCIpKTsKKwkgICAgbG9nbG4oIkJvb2xlYW46ICIgKyB0ZXN0Y2FzZS5nZXRCb29sZWFuKCJhQm9vbGVhbiIpKTsKKwl9CisgICAgfQorCisgICAgLy8gbm8gY2FzZXMsIGp1c3QgdXNlcyBpbmZvIGZvciB0ZXN0CisgICAgcHVibGljIHZvaWQgVGVzdDAzKCkgeworCURhdGFNYXAgaW5mbyA9IHRlc3RJbmZvKCk7CisJaWYgKGluZm8gIT0gbnVsbCkgeworCSAgICBsb2dsbihpbmZvLmdldFN0cmluZyhUZXN0RGF0YU1vZHVsZS5ERVNDUklQVElPTikpOyAvLyBzdGFuZGFyZAorCSAgICBsb2dsbihpbmZvLmdldFN0cmluZygiRXh0cmEiKSk7IC8vIHRlc3Qtc3BlY2lmaWMKKwl9CisgICAgfQorCisgICAgLy8gbm8gZGF0YSwgTW9kdWxlVGVzdCBzaG91bGQgbm90IGFsbG93IHRoaXMgdG8gZXhlY3V0ZSBieSBkZWZhdWx0CisgICAgcHVibGljIHZvaWQgVGVzdDA0KCkgeworCWVycmxuKCJUZXN0MDQgc2hvdWxkIG5vdCBleGVjdXRlISIpOworICAgIH0KKworICAgIC8vIHNwZWNpYWwgb3ZlcnJpZGUgb2YgdmFsaWRhdGVNZXRob2QgYWxsb3dzIFRlc3QwNSAKKyAgICAvLyB0byBleGVjdXRlIGV2ZW4gdGhvdWdoIGl0IGhhcyBubyBkYXRhIGluIHRoZSBtb2R1bGUKKyAgICBwcm90ZWN0ZWQgYm9vbGVhbiB2YWxpZGF0ZU1ldGhvZChTdHJpbmcgbWV0aG9kTmFtZSkgeworCXJldHVybiBtZXRob2ROYW1lLmVxdWFscygiVGVzdDA1IikgPyB0cnVlIDogc3VwZXIudmFsaWRhdGVNZXRob2QobWV0aG9kTmFtZSk7CisgICAgfQorCisgICAgLy8gbm8gZGF0YSwgYnV0IG92ZXJyaWRlIG9mIHZhbGlkYXRlTWV0aG9kIGFsbG93cyBpdCB0byBleGVjdXRlCisgICAgcHVibGljIHZvaWQgVGVzdDA1KCkgeworCWxvZ2xuKCJUZXN0MDUgZXhlY3V0ZWQuIik7CisgICAgfQorCisgICAgLy8gVGhlIHRlc3QgZGF0YSBjb250YWlucyBhbiBlcnJvciBpbiB0aGUgdGhpcmQgY2FzZS4gIFdoZW4gZ2V0SW50KCJEYXRhIikgaXMKKyAgICAvLyBleGVjdXRlZCB0aGUgZXJyb3IgaXMgbG9nZ2VkIGFuZCBpdGVyYXRpb24gc3RvcHMuCisgICAgcHVibGljIHZvaWQgVGVzdDA2KCkgeworCXdoaWxlIChuZXh0Q2FzZSgpKSB7CisJICAgIGxvZ2xuKCItLS0tIik7CisJICAgIGxvZ2xuKCJpc0dvb2Q6ICIgKyB0ZXN0Y2FzZS5nZXRTdHJpbmcoIklzR29vZCIpKTsKKwkgICAgbG9nbG4oIiAgRGF0YTogIiArIHRlc3RjYXNlLmdldEludCgiRGF0YSIpKTsKKwl9CisgICAgfQorCisgICAgLy8gVGhlIHRlc3QgdXNpbmcgdGhlIGRhdGEgcmVwb3J0cyBhbiBlcnJvciwgd2hpY2ggYWxzbyBhdXRvbWF0aWNhbGx5IHN0b3BzIGl0ZXJhdGlvbi4KKyAgICBwdWJsaWMgdm9pZCBUZXN0MDcoKSB7CisJd2hpbGUgKG5leHRTZXR0aW5ncygpKSB7CisJICAgIGludCB2YWx1ZSA9IHNldHRpbmdzLmdldEludCgiVmFsdWUiKTsKKwkgICAgd2hpbGUgKG5leHRDYXNlKCkpIHsKKwkJaW50IGZhY3RvciA9IHRlc3RjYXNlLmdldEludCgiRmFjdG9yIik7CisJCWZsb2F0IHJlc3VsdCA9IChmbG9hdCl2YWx1ZSAvIGZhY3RvcjsKKwkJaWYgKHJlc3VsdCAhPSAoaW50KXJlc3VsdCkgeworCQkgICAgZXJybG4oInRoZSBudW1iZXIgJyIgKyBmYWN0b3IgKyAiJyBpcyBub3QgYSBmYWN0b3Igb2YgdGhlIG51bWJlciAnIiArIHZhbHVlICsgIiciKTsKKwkJfSBlbHNlIHsKKwkJICAgIGxvZ2xuKCInIiArIGZhY3RvciArICInIGlzIGEgZmFjdG9yIG9mICciICsgdmFsdWUgKyAiJyIpOworCQl9CisJICAgIH0KKwl9CisgICAgfQorCisgICAgLy8gVGhlIG51bWJlciBvZiBkYXRhIGVsZW1lbnRzIGlzIGluY29ycmVjdAorICAgIHB1YmxpYyB2b2lkIFRlc3QwOCgpIHsKKwl3aGlsZSAobmV4dENhc2UoKSkgeworCSAgICBpbnQgb25lID0gdGVzdGNhc2UuZ2V0SW50KCJPbmUiKTsKKwkgICAgaW50IHR3byA9IHRlc3RjYXNlLmdldEludCgiVHdvIik7CisJICAgIGludCB0aHJlZSA9IHRlc3RjYXNlLmdldEludCgiVGhyZWUiKTsKKwkgICAgbG9nbG4oImdvdDogIiArIG9uZSArICIsICIgKyB0d28gKyAiLCAiICsgdGhyZWUpOworCX0KKyAgICB9CisKKyAgICAvLyB1dGlsaXR5IHByaW50IGZ1bmN0aW9ucyB0byBkaXNwbGF5IHRoZSBkYXRhIGZyb20gdGhlIHJlc291cmNlCisgICAgU3RyaW5nIHByaW50QXJyYXkoU3RyaW5nW10gYSkgeworCVN0cmluZ0J1ZmZlciBidWYgPSBuZXcgU3RyaW5nQnVmZmVyKCJTdHJpbmdbXSB7Iik7CisJZm9yIChpbnQgaSA9IDA7IGkgPCBhLmxlbmd0aDsgKytpKSB7CisJICAgIGlmIChpICE9IDApIHsKKwkJYnVmLmFwcGVuZCgiLCIpOworCSAgICB9CisJICAgIGJ1Zi5hcHBlbmQoIiAiICsgYVtpXSk7CisJfQorCWJ1Zi5hcHBlbmQoIiB9Iik7CisJcmV0dXJuIGJ1Zi50b1N0cmluZygpOworICAgIH0KKworICAgIFN0cmluZyBwcmludEFycmF5KGludFtdIGEpIHsKKwlTdHJpbmdCdWZmZXIgYnVmID0gbmV3IFN0cmluZ0J1ZmZlcigiaW50W10geyIpOworCWZvciAoaW50IGkgPSAwOyBpIDwgYS5sZW5ndGg7ICsraSkgeworCSAgICBpZiAoaSAhPSAwKSB7CisJCWJ1Zi5hcHBlbmQoIiwiKTsKKwkgICAgfQorCSAgICBidWYuYXBwZW5kKCIgIiArIGFbaV0pOworCX0KKwlidWYuYXBwZW5kKCIgfSIpOworCXJldHVybiBidWYudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICBTdHJpbmcgcHJpbnRBcnJheShib29sZWFuW10gYSkgeworCVN0cmluZ0J1ZmZlciBidWYgPSBuZXcgU3RyaW5nQnVmZmVyKCJib29sZWFuW10geyIpOworCWZvciAoaW50IGkgPSAwOyBpIDwgYS5sZW5ndGg7ICsraSkgeworCSAgICBpZiAoaSAhPSAwKSB7CisJCWJ1Zi5hcHBlbmQoIiwiKTsKKwkgICAgfQorCSAgICBidWYuYXBwZW5kKCIgIiArIGFbaV0pOworCX0KKwlidWYuYXBwZW5kKCIgfSIpOworCXJldHVybiBidWYudG9TdHJpbmcoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3Qvc2FtcGxlL01vZHVsZVRlc3RTYW1wbGVEYXRhLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3Qvc2FtcGxlL01vZHVsZVRlc3RTYW1wbGVEYXRhLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2QwYjYzZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9zYW1wbGUvTW9kdWxlVGVzdFNhbXBsZURhdGEuamF2YQpAQCAtMCwwICsxLDE2MiBAQAorLyoqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9zYW1wbGUvTW9kdWxlVGVzdFNhbXBsZURhdGEuamF2YSx2ICQKKyAqICREYXRlOiAyMDAyLzA4LzEzIDIyOjAwOjU4ICQKKyAqICRSZXZpc2lvbjogMS4zICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0LnNhbXBsZTsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKKy8qKgorICogVGhpcyBpcyBzYW1wbGUgZGF0YSBmb3IgTW9kdWxlVGVzdFNhbXBsZSwgd2hpY2ggaXMgYW4gaWxsdXN0cmF0aW9uCisgKiBvZiBhIHN1YmNsYXNzIG9mIE1vZHVsZVRlc3QuICBUaGlzIGRhdGEgaXMgaW4gYSBmb3JtYXQgd2hpY2gKKyAqIGlzIHVuZGVyc3Rvb2QgYnkgUmVzb3VyY2VNb2R1bGUsIHdoaWNoIGZvciBzaW1wbGljaXR5IGV4cGVjdHMKKyAqIGFsbCBkYXRhLCBpbmNsdWRpbmcgbnVtZXJpYyBhbmQgYm9vbGVhbiBkYXRhLCB0byBiZSByZXByZXNlbnRlZAorICogYnkgU3RyaW5ncy4KKyAqLworcHVibGljIGNsYXNzIE1vZHVsZVRlc3RTYW1wbGVEYXRhIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKyAgICBwdWJsaWMgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsKKwlyZXR1cm4gY29udGVudHM7CisgICAgfQorCisgICAgT2JqZWN0W11bXSBjb250ZW50cyA9IHsKKwl7ICJJbmZvIiwgbmV3IE9iamVjdFtdW10geworCSAgICB7ICJEZXNjcmlwdGlvbiIsICJUaGlzIGlzIGEgc2FtcGxlIHRlc3QgbW9kdWxlIHRoYXQgaWxsdXN0cmF0ZXMgTW9kdWxlVGVzdCAiICsKKwkgICAgICAiYW5kIHVzZXMgZGF0YSBmb3JtYXR0ZWQgZm9yIFJlc291cmNlTW9kdWxlLiIgfSwKKwkgICAgeyAiSGVhZGVycyIsIG5ldyBTdHJpbmdbXSB7CisJCSJhU3RyaW5nQXJyYXkiLCAiYW5JbnRBcnJheSIsICJhQm9vbGVhbkFycmF5IgorCSAgICB9fSwKKwl9fSwKKwkKKworCXsgIlRlc3REYXRhIiwgbmV3IE9iamVjdFtdW10geworCSAgICB7ICJUZXN0MDEiLCBuZXcgT2JqZWN0W11bXSB7CisJCXsgIkluZm8iLCBuZXcgT2JqZWN0W11bXSB7CisJCSAgICB7ICJEZXNjcmlwdGlvbiIsICJBIHR5cGljYWwgdGVzdCB1c2luZyBib3RoIHNldHRpbmdzIGFuZCBjYXNlcy4iIH0sCisJCSAgICB7ICJMb25nX0Rlc2NyaXB0aW9uIiwgIkl0IGRvZXMgbm90IGRlZmluZWQgaXRzIG93biBoZWFkZXJzLCBidXQgaW5zdGVhZCAiICsKKwkJICAgICAgInVzZXMgdGhlIGRlZmF1bHQgaGVhZGVycyBkZWZpbmVkIGZvciB0aGUgbW9kdWxlLiAgIiArCisJCSAgICAgICJUaGVyZSBhcmUgdHdvIHNldHMgb2Ygc2V0dGluZ3MgYW5kIHRocmVlIGNhc2VzLiIgfSwKKwkJfX0sCisJCXsgIlNldHRpbmdzIiwgbmV3IE9iamVjdFtdIHsKKyAgICAgICAgICAgIG5ldyBPYmplY3RbXVtdCisJCSAgICB7eyAiYVN0cmluZyIsICJ0aGlzIGlzIGEgc3RyaW5nIiB9LAorCQkgICAgIHsgImFuSW50IiwgIjQzIiB9LAorCQkgICAgIHsgImFCb29sZWFuIiwgImZhbHNlIiB9fSwKKwkJICAgIG5ldyBPYmplY3RbXVtdIAorICAgICAgICAgICAge3sgImFTdHJpbmciLCAidGhpcyBpcyBhbm90aGVyIHN0cmluZyIgfSwKKwkJICAgICB7ICJhQm9vbGVhbiIsICJ0cnVlIiB9fQorCQl9fSwKKwkJeyAiQ2FzZXMiLCBuZXcgT2JqZWN0W10geworICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsKKyAgICAJCSAgICBuZXcgU3RyaW5nW10geyAib25lIiwgInR3byIsICJ0aHJlZSIgfSwKKyAgICAJCSAgICBuZXcgU3RyaW5nW10geyAiMjQiLCAiNDgiLCAiNzIiIH0sCisgICAgCQkgICAgbmV3IFN0cmluZ1tdIHsgInRydWUiLCAiZmFsc2UiLCAidHJ1ZSIgfQorICAgIAkJfSwKKyAgICAJCW5ldyBPYmplY3RbXSB7IAorICAgICAgICAgICAgICAgIG5ldyBTdHJpbmdbXSB7ICJmb3VyIiwgImZpdmUiLCAic2l4IiB9LAorICAgIAkJICAgIG5ldyBTdHJpbmdbXSB7ICItMSIsICItNSIsICItMTAiIH0sCisgICAgCQkgICAgbmV3IFN0cmluZ1tdIHsgInRydWUiLCAiZmFsc2UiLCAiZmFsc2UiIH0KKyAgICAJCX0sCisgICAgCQluZXcgT2JqZWN0W10geyAKKyAgICAgICAgICAgICAgICBuZXcgU3RyaW5nW10geyAiYmFnZWwiLCAicGVhbnV0cyIsICJjYXJyb3QiIH0sCisgICAgCQkgICAgbmV3IFN0cmluZ1tdIHsgIjAiLCAiMDAwMDEiLCAiMTAxMDEiIH0sCisgICAgCQkgICAgbmV3IFN0cmluZ1tdIHsgImZhbHNlIiwgImZhbHNlIiwgIkZhbHNlIiB9CisgICAgICAgICAgICB9LAorCQl9fQorCSAgICB9fSwKKworCSAgICB7ICJUZXN0MDIiLCBuZXcgT2JqZWN0W11bXSB7CisJCXsgIkluZm8iLCBuZXcgT2JqZWN0W11bXSB7CisJCSAgICB7ICJEZXNjcmlwdGlvbiIsICJBIHR5cGljYWwgdGVzdCB0aGF0IHVzZXMgY2FzZXMgYnV0IG5vdCBzZXR0aW5ncy4iIH0sCisJCSAgICB7ICJMb25nX0Rlc2NyaXB0aW9uIiwgIkl0IGRlZmluZXMgaXRzIG93biBoZWFkZXJzLiIgfSwKKwkJICAgIHsgIkhlYWRlcnMiLCBuZXcgU3RyaW5nW10geworCQkJImFTdHJpbmciLCAiYW5JbnQiLCAiYUJvb2xlYW4iCisJCSAgICB9fSwKKwkJfX0sCisJCXsgIkNhc2VzIiwgbmV3IE9iamVjdFtdIHsKKwkJICAgIG5ldyBPYmplY3RbXSB7ICJTdXBlcnN0cmluZyIsICI0MiIsICJ0cnVlIiB9LAorCQkgICAgbmV3IE9iamVjdFtdIHsgIlVuZGVyZG9nIiwgIjEyIiwgImZhbHNlIiB9LAorCQkgICAgbmV3IE9iamVjdFtdIHsgIlNjb29ieURvbyIsICI3IiwgIlRyVWUiIH0KKwkJfX0KKwkgICAgfX0sCisKKwkgICAgeyAiVGVzdDAzIiwgbmV3IE9iamVjdFtdW10geworCQl7ICJJbmZvIiwgbmV3IE9iamVjdFtdW10geworCQkgICAgeyAiRGVzY3JpcHRpb24iLCAiQSB0eXBpY2FsIHRlc3QgdGhhdCB1c2VzIGp1c3QgdGhlIGluZm8sIG5vIGNhc2VzIG9yIHNldHRpbmdzLiIgfSwKKwkJICAgIHsgIkV4dHJhIiwgIlRoaXMgaXMgc29tZSBleHRyYSBpbmZvcm1hdGlvbi4iIH0KKwkJfX0sCisJICAgIH19LAorCisJICAgIC8vIG5vIFRlc3QwNCBkYXRhCisJICAgIC8vIFRlc3QwNCBzaG91bGQgY2F1c2UgYW4gZXhjZXB0aW9uIHRvIGJlIHRocm93biBzaW5jZSBNb2R1bGVUZXN0U2FtcGxlIGRvZXMgbm90CisJICAgIC8vIHNwZWNpZnkgdGhhdCBpdCBpcyBvayBmb3IgaXQgdG8gaGF2ZSBubyBkYXRhLgorCisJICAgIC8vIG5vIFRlc3QwNSBkYXRhCisJICAgIC8vIFRlc3QwNSBzaG91bGQganVzdCBsb2cgdGhpcyBmYWN0LCBzaW5jZSBNb2R1bGVUZXN0U2FtcGxlIGluZGljYXRlcyB0aGF0IGl0IGlzCisJICAgIC8vIG9rIGZvciBUZXN0MDUgdG8gaGF2ZSBubyBkYXRhIGluIGl0cyBvdmVycmlkZSBvZiB2YWxpZGF0ZU1ldGhvZC4KKworCSAgICB7ICJUZXN0MDYiLCBuZXcgT2JqZWN0W11bXSB7CisJCXsgIkluZm8iLCBuZXcgT2JqZWN0W11bXSB7CisJCSAgICB7ICJEZXNjcmlwdGlvbiIsICJBIHRlc3QgdGhhdCBoYXMgYmFkIGRhdGEuIiB9LAorCQkgICAgeyAiTG9uZ19EZXNjcmlwdGlvbiIsICJUaGlzIGlsbHVzdHJhdGVzIGhvdyBhIGRhdGEgZXJyb3Igd2lsbCBhdXRvbWF0aWNhbGx5ICIgKworCQkgICAgICAidGVybWluYXRlIHRoZSBzZXR0aW5ncyBhbmQgY2FzZXMgbG9vcC4iIH0sCisJCSAgICB7ICJIZWFkZXJzIiwgbmV3IFN0cmluZ1tdIHsKKwkJCSJJc0dvb2QiLCAiRGF0YSIsCisJCSAgICB9fSwKKwkJfX0sCisJCXsgIkNhc2VzIiwgbmV3IE9iamVjdFtdIHsKKwkJICAgIG5ldyBPYmplY3RbXSB7ICJHb29kIiwgIjIzIiB9LAorCQkgICAgbmV3IE9iamVjdFtdIHsgIkdvb2QiLCAiLTEyMyIgfSwKKwkJICAgIG5ldyBPYmplY3RbXSB7ICJCYWQiLCAiV2hvb3BzIiB9LAorCQkgICAgbmV3IE9iamVjdFtdIHsgIk5vdCBFeGVjdXRlZCIsICIzNSIgfSwKKwkJfX0sCisJICAgIH19LAorCisJICAgIHsgIlRlc3QwNyIsIG5ldyBPYmplY3RbXVtdIHsKKwkJeyAiSW5mbyIsIG5ldyBPYmplY3RbXVtdIHsKKwkJICAgIHsgIkRlc2NyaXB0aW9uIiwgIkEgdGVzdCB0aGF0IGZhaWxzIHdpdGggYSBjZXJ0YWluIGNvbWJpbmF0aW9uIG9mIHNldHRpbmdzIGFuZCBjYXNlLiIgfSwKKwkJICAgIHsgIkxvbmdfRGVzY3JpcHRpb24iLCAiVGhpcyBpbGx1c3RyYXRlcyBob3cgYSB0ZXN0IGVycm9yIHdpbGwgYXV0b21hdGljYWxseSAiICsKKwkJICAgICAgInRlcm1pbmF0ZSB0aGUgc2V0dGluZ3MgYW5kIGNhc2VzIGxvb3AuICBTZXR0aW5ncyBkYXRhIGlzIHZhbHVlcywgdGhlIGNhc2UgIiArCisJCSAgICAgICJkYXRhIGlzIGZhY3RvcnMuICBUaGUgdGhpcmQgZmFjdG9yIGlzIG5vdCBhIGZhY3RvciBvZiB0aGUgc2Vjb25kIHZhbHVlLiAgIiArCisJCSAgICAgICJUaGUgdGVzdCB3aWxsIGxvZyBhbiBlcnJvciwgd2hpY2ggd2lsbCBhdXRvbWF0aWNhbGx5IHN0b3AgdGhlIGxvb3AuIiB9LAorCQkgICAgeyAiSGVhZGVycyIsIG5ldyBTdHJpbmdbXSB7CisJCQkiRmFjdG9yIiwKKwkJICAgIH19LAorCQl9fSwKKwkJeyAiU2V0dGluZ3MiICwgbmV3IE9iamVjdFtdIHsKKwkJICAgIG5ldyBPYmplY3RbXVtdIHt7ICJWYWx1ZSIsICIyMTAiIH19LAorCQkgICAgbmV3IE9iamVjdFtdW10ge3sgIlZhbHVlIiwgIjQyMCIgfX0sCisJCSAgICBuZXcgT2JqZWN0W11bXSB7eyAiVmFsdWUiLCAiNDIiIH19LAorCQkgICAgbmV3IE9iamVjdFtdW10ge3sgIlZhbHVlIiwgIk5vdCByZWFjaGVkLiIgfX0KKwkJfX0sCisJCXsgIkNhc2VzIiwgbmV3IE9iamVjdFtdIHsKKwkJICAgIG5ldyBPYmplY3RbXSB7ICIyIiB9LAorCQkgICAgbmV3IE9iamVjdFtdIHsgIjMiIH0sCisJCSAgICBuZXcgT2JqZWN0W10geyAiNSIgfSwKKwkJICAgIG5ldyBPYmplY3RbXSB7ICI3IiB9LAorCQl9fSwKKwkgICAgfX0sCisKKwkgICAgeyAiVGVzdDA4IiwgbmV3IE9iamVjdFtdW10geworCQl7ICJJbmZvIiwgbmV3IE9iamVjdFtdW10geworCQkgICAgeyAiRGVzY3JpcHRpb24iLCAiQSB0ZXN0IHdpdGggZGF0YSBtaXNzaW5nIGZyb20gYSB0ZXN0IGNhc2UuIiB9LAorCQkgICAgeyAiSGVhZGVycyIsIG5ldyBTdHJpbmdbXSB7CisJCQkiT25lIiwgIlR3byIsICJUaHJlZSIKKwkJICAgIH19LAorCQl9fSwKKwkJeyAiQ2FzZXMiLCBuZXcgT2JqZWN0W10geworCQkgICAgbmV3IE9iamVjdFtdIHsgIjEiLCAiMiIsICIzIiB9LAorCQkgICAgbmV3IE9iamVjdFtdIHsgIjQiLCAiNSIgfSwgLy8gdG9vIHNob3J0CisJCSAgICBuZXcgT2JqZWN0W10geyAiNiIsICI3IiwgIjgiIH0sCisJCX19LAorCSAgICB9fSwKKwl9fSwKKyAgICB9OworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3NlYXJjaC9TZWFyY2hUZXN0LmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3Qvc2VhcmNoL1NlYXJjaFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43MTY1N2U4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3NlYXJjaC9TZWFyY2hUZXN0LmphdmEKQEAgLTAsMCArMSwxOTI0IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgICAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICRTb3VyY2U6IAorICogJERhdGU6IAorICogJFJldmlzaW9uOiAKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCisvKiogCisgKiBQb3J0IEZyb206ICAgSUNVNEMgdjIuMSA6IGNvbGxhdGUvU3RyaW5nU2VhcmNoVGVzdAorICogU291cmNlIEZpbGU6ICRJQ1U0Q1Jvb3Qvc291cmNlL3Rlc3QvaW50bHRlc3Qvc3JjaHRlc3QuY3BwCisgKiovCisKK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3Quc2VhcmNoOworCitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKK2ltcG9ydCBqYXZhLnRleHQuU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3I7CitpbXBvcnQgY29tLmlibS5pY3UuZGV2LnRlc3QuKjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0Lio7CisKK3B1YmxpYyBjbGFzcyBTZWFyY2hUZXN0IGV4dGVuZHMgVGVzdEZtd2sgeworICAgIAorICAgIC8vaW5uZXIgY2xhc3MKKyAgICBzdGF0aWMgY2xhc3MgU2VhcmNoRGF0YSB7CisgICAgICAgIFNlYXJjaERhdGEoU3RyaW5nIHRleHQsIFN0cmluZyBwYXR0ZXJuLCBTdHJpbmcgY29sbCwgaW50IHN0cmVuZ3RoLCBTdHJpbmcgYnJlYWtlciwKKyAgICAgICAgICAgICAgICAgICBpbnRbXSBvZmZzZXQsIGludFtdIHNpemUpIHsKKyAgICAgICAgICAgIHRoaXMudGV4dCA9IHRleHQ7CisgICAgICAgICAgICB0aGlzLnBhdHRlcm4gPSBwYXR0ZXJuOworICAgICAgICAgICAgdGhpcy5jb2xsYXRvciA9IGNvbGw7CisgICAgICAgICAgICB0aGlzLnN0cmVuZ3RoID0gc3RyZW5ndGg7CisgICAgICAgICAgICB0aGlzLmJyZWFrZXIgPSBicmVha2VyOworICAgICAgICAgICAgdGhpcy5vZmZzZXQgPSBvZmZzZXQ7CisgICAgICAgICAgICB0aGlzLnNpemUgPSBzaXplOworICAgICAgICB9CisgICAgICAgIFN0cmluZyAgICAgICAgICAgICAgdGV4dDsKKyAgICAgICAgU3RyaW5nICAgICAgICAgICAgICBwYXR0ZXJuOworICAgICAgICBTdHJpbmcgICAgICAgICAgICAgIGNvbGxhdG9yOworICAgICAgICBpbnQgICAgICAgICAgICAgICAgIHN0cmVuZ3RoOworICAgICAgICBTdHJpbmcgICAgICAgICAgICAgIGJyZWFrZXI7CisgICAgICAgIGludFtdICAgICAgICAgICAgICAgb2Zmc2V0OworICAgICAgICBpbnRbXSAgICAgICAgICAgICAgIHNpemU7CisgICAgfTsKKyAgICAKKyAgICBSdWxlQmFzZWRDb2xsYXRvciBtX2VuX3VzXzsgCisgICAgUnVsZUJhc2VkQ29sbGF0b3IgbV9mcl9mcl87CisgICAgUnVsZUJhc2VkQ29sbGF0b3IgbV9kZV87CisgICAgUnVsZUJhc2VkQ29sbGF0b3IgbV9lc187IAorICAgIEJyZWFrSXRlcmF0b3IgICAgIG1fZW5fd29yZGJyZWFrZXJfID0gQnJlYWtJdGVyYXRvci5nZXRXb3JkSW5zdGFuY2UoKTsKKyAgICBCcmVha0l0ZXJhdG9yICAgICBtX2VuX2NoYXJhY3RlcmJyZWFrZXJfID0gQnJlYWtJdGVyYXRvci5nZXRDaGFyYWN0ZXJJbnN0YW5jZSgpOworICAgIAorICAgIHN0YXRpYyBTZWFyY2hEYXRhW10gQkFTSUMgPSB7CisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJ4eHh4eHh4eHh4eHh4eHh4eHh4eCIsICAgICAgICAgICJmaXNoZXIiLCAgICAgICBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdIHstMX0sICAgICAgICAgICAgbmV3IGludFtdezB9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoInNpbGx5IHNwcmluZyBzdHJpbmciLCAgICAgICAgICAgInN0cmluZyIsICAgICAgIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W117MTMsIC0xfSwgICAgICAgICBuZXcgaW50W117Nn0pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YSgic2lsbHkgc3ByaW5nIHN0cmluZyBzdHJpbmciLCAgICAic3RyaW5nIiwgICAgICAgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXXsxMywgMjAsIC0xfSwgICAgIG5ldyBpbnRbXXs2LCA2fSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJzaWxseSBzdHJpbmcgc3ByaW5nIHN0cmluZyIsICAgICJzdHJpbmciLCAgICAgICBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdezYsIDIwLCAtMX0sICAgICAgbmV3IGludFtdezYsIDZ9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoInN0cmluZyBzcHJpbmcgc3RyaW5nIiwgICAgICAgICAgInN0cmluZyIsICAgICAgIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W117MCwgMTQsIC0xfSwgICAgICBuZXcgaW50W117NiwgNn0pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YSgiU2NvdHQgR2FueW8iLCAgICAgICAgICAgICAgICAgICAiYyIsICAgICAgICAgICAgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXXsxLCAtMX0sICAgICAgICAgIG5ldyBpbnRbXXsxfSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJTY290dCBHYW55byIsICAgICAgICAgICAgICAgICAgICIgIiwgICAgICAgICAgICBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdezUsIC0xfSwgICAgICAgICAgbmV3IGludFtdezF9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoIlx1MDMwMFx1MDMyNSIsICAgICAgICAgICAgICAgICAgIlx1MDMwMCIsICAgICAgIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W117LTF9LCAgICAgICAgICAgICBuZXcgaW50W117MH0pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YSgiYVx1MDMwMFx1MDMyNSIsICAgICAgICAgICAgICAgICAiXHUwMzAwIiwgICAgICAgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXXstMX0sICAgICAgICAgICAgIG5ldyBpbnRbXXswfSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJhXHUwMzAwXHUwMzI1IiwgICAgICAgICAgICAgICAgICJcdTAzMDBcdTAzMjUiLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdezEsIC0xfSwgICAgICAgICAgbmV3IGludFtdezJ9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoImFcdTAzMDBiIiwgICAgICAgICAgICAgICAgICAgICAgIlx1MDMwMCIsICAgICAgIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W117MSwgLTF9LCAgICAgICAgICBuZXcgaW50W117MX0pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YSgiXHUwMGM5IiwgICAgICAgICAgICAgICAgICAgICAgICAiZSIsICAgICAgICAgICAgbnVsbCwgQ29sbGF0b3IuUFJJTUFSWSwgIG51bGwsIG5ldyBpbnRbXXswLCAtMX0sICAgICAgICAgIG5ldyBpbnRbXXsxfSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKG51bGwsICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsICAgICAgICAgICBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdey0xfSwgICAgICAgICAgICAgbmV3IGludFtdezB9KQorICAgIH07CisgICAgCisgICAgU2VhcmNoRGF0YSBCUkVBS0lURVJBVE9SRVhBQ1RbXSA9IHsKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoImZveHkgZm94IiwgImZveCIsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCAiY2hhcmFjdGVyYnJlYWtlciIsIG5ldyBpbnRbXSB7MCwgNSwgLTF9LCBuZXcgaW50W10gezMsIDN9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoImZveHkgZm94IiwgImZveCIsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCAid29yZGJyZWFrZXIiLCBuZXcgaW50W10gezUsIC0xfSwgbmV3IGludFtdIHszfSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJUaGlzIGlzIGEgdG9lIFRcdTAwRjZuZSIsICJ0b2UiLCAiZGUiLCBDb2xsYXRvci5QUklNQVJZLCAiY2hhcmFjdGVyYnJlYWtlciIsIG5ldyBpbnRbXSB7MTAsIDE0LCAtMX0sIG5ldyBpbnRbXSB7MywgMn0pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YSgiVGhpcyBpcyBhIHRvZSBUXHUwMEY2bmUiLCAidG9lIiwgImRlIiwgQ29sbGF0b3IuUFJJTUFSWSwgIndvcmRicmVha2VyIiwgbmV3IGludFtdIHsxMCwgLTF9LCBuZXcgaW50W10gezN9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoIkNoYW5uZWwsIGFub3RoZXIgY2hhbm5lbCwgbW9yZSBjaGFubmVscywgYW5kIG9uZSBsYXN0IENoYW5uZWwiLCAiQ2hhbm5lbCIsICJlcyIsIENvbGxhdG9yLlRFUlRJQVJZLCAKKyAgICAgICAgICAgICAid29yZGJyZWFrZXIiLCBuZXcgaW50W10gezAsIDU0LCAtMX0sIG5ldyBpbnRbXSB7NywgN30pLAorICAgICAgICAvKiBqaXR0ZXJidWcgMTc0NSAqLworICAgICAgICBuZXcgU2VhcmNoRGF0YSgidGVzdGluZyB0aGF0IFx1MDBlOSBkb2VzIG5vdCBtYXRjaCBlIiwgImUiLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgCisgICAgICAgICAgICAiY2hhcmFjdGVyYnJlYWtlciIsIG5ldyBpbnRbXSB7MSwgMTcsIDMwLCAtMX0sIG5ldyBpbnRbXSB7MSwgMSwgMX0pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YSgidGVzdGluZyB0aGF0IHN0cmluZyBhYlx1MDBlOWNkIGRvZXMgbm90IG1hdGNoIGUiLCAiZSIsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCAKKyAgICAgICAgICAgICJjaGFyYWN0ZXJicmVha2VyIiwgbmV3IGludFtdIHsxLCAyOCwgNDEsIC0xfSwgbmV3IGludFtdIHsxLCAxLCAxfSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJcdTAwYzkiLCAiZSIsICJmciIsIENvbGxhdG9yLlBSSU1BUlksICAiY2hhcmFjdGVyYnJlYWtlciIsIG5ldyBpbnRbXXswLCAtMX0sIG5ldyBpbnRbXXsxfSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKG51bGwsIG51bGwsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W10gey0xfSwgbmV3IGludFtdIHswfSkKKyAgICB9OworICAgIAorICAgIFNlYXJjaERhdGEgQlJFQUtJVEVSQVRPUkNBTk9OSUNBTFtdID0geworICAgICAgICBuZXcgU2VhcmNoRGF0YSgiZm94eSBmb3giLCAiZm94IiwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksICJjaGFyYWN0ZXJicmVha2VyIiwgbmV3IGludFtdIHswLCA1LCAtMX0sIG5ldyBpbnRbXSB7MywgM30pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YSgiZm94eSBmb3giLCAiZm94IiwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksICJ3b3JkYnJlYWtlciIsIG5ldyBpbnRbXSB7NSwgLTF9LCBuZXcgaW50W10gezN9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoIlRoaXMgaXMgYSB0b2UgVFx1MDBGNm5lIiwgInRvZSIsICJkZSIsIENvbGxhdG9yLlBSSU1BUlksICJjaGFyYWN0ZXJicmVha2VyIiwgbmV3IGludFtdIHsxMCwgMTQsIC0xfSwgbmV3IGludFtdIHszLCAyfSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJUaGlzIGlzIGEgdG9lIFRcdTAwRjZuZSIsICJ0b2UiLCAiZGUiLCBDb2xsYXRvci5QUklNQVJZLCAid29yZGJyZWFrZXIiLCBuZXcgaW50W10gezEwLCAtMX0sIG5ldyBpbnRbXSB7M30pLCAKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoIkNoYW5uZWwsIGFub3RoZXIgY2hhbm5lbCwgbW9yZSBjaGFubmVscywgYW5kIG9uZSBsYXN0IENoYW5uZWwiLCAiQ2hhbm5lbCIsICJlcyIsIENvbGxhdG9yLlRFUlRJQVJZLCAid29yZGJyZWFrZXIiLCAKKyAgICAgICAgICAgICAgICAgICAgICAgbmV3IGludFtdIHswLCA1NCwgLTF9LCBuZXcgaW50W10gezcsIDd9KSwKKyAgICAgICAgLyogaml0dGVyYnVnIDE3NDUgKi8KKyAgICAgICAgbmV3IFNlYXJjaERhdGEoInRlc3RpbmcgdGhhdCBcdTAwZTkgZG9lcyBub3QgbWF0Y2ggZSIsICJlIiwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIAorICAgICAgICAgICAgImNoYXJhY3RlcmJyZWFrZXIiLCBuZXcgaW50W10gezEsIDE3LCAzMCwgLTF9LCBuZXcgaW50W10gezEsIDEsIDF9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoInRlc3RpbmcgdGhhdCBzdHJpbmcgYWJcdTAwZTljZCBkb2VzIG5vdCBtYXRjaCBlIiwgImUiLCBudWxsLCAKKyAgICAgICAgICAgICBDb2xsYXRvci5URVJUSUFSWSwgImNoYXJhY3RlcmJyZWFrZXIiLCBuZXcgaW50W10gezEsIDI4LCA0MSwgLTF9LCBuZXcgaW50W10gezEsIDEsIDF9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoIlx1MDBjOSIsICJlIiwgImZyIiwgQ29sbGF0b3IuUFJJTUFSWSwgICJjaGFyYWN0ZXJicmVha2VyIiwgbmV3IGludFtdezAsIC0xfSwgbmV3IGludFtdezF9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEobnVsbCwgbnVsbCwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7LTF9LCBuZXcgaW50W10gezB9KQorICAgIH07CisgICAgCisgICAgU2VhcmNoRGF0YSBCQVNJQ0NBTk9OSUNBTFtdID0geworICAgICAgICBuZXcgU2VhcmNoRGF0YSgieHh4eHh4eHh4eHh4eHh4eHh4eHgiLCAiZmlzaGVyIiwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7LTF9LCBuZXcgaW50IFtdIHswfSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJzaWxseSBzcHJpbmcgc3RyaW5nIiwgInN0cmluZyIsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W10gezEzLCAtMX0sIG5ldyBpbnRbXSB7Nn0pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YSgic2lsbHkgc3ByaW5nIHN0cmluZyBzdHJpbmciLCAic3RyaW5nIiwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7MTMsIDIwLCAtMX0sIG5ldyBpbnRbXSB7NiwgNn0pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YSgic2lsbHkgc3RyaW5nIHNwcmluZyBzdHJpbmciLCAic3RyaW5nIiwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7NiwgMjAsIC0xfSwgbmV3IGludFtdIHs2LCA2fSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJzdHJpbmcgc3ByaW5nIHN0cmluZyIsICJzdHJpbmciLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdIHswLCAxNCwgLTF9LCBuZXcgaW50W10gezYsIDZ9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoIlNjb3R0IEdhbnlvIiwgImMiLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdIHsxLCAtMX0sIG5ldyBpbnRbXSB7MX0pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YSgiU2NvdHQgR2FueW8iLCAiICIsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W10gezUsIC0xfSwgbmV3IGludFtdIHsxfSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJcdTAzMDBcdTAzMjUiLCAiXHUwMzAwIiwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnQgW10gezAsIC0xfSwgbmV3IGludFtdIHsyfSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJhXHUwMzAwXHUwMzI1IiwgIlx1MDMwMCIsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50IFtdIHsxLCAtMX0sIG5ldyBpbnRbXSB7Mn0pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YSgiYVx1MDMwMFx1MDMyNSIsICJcdTAzMDBcdTAzMjUiLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdIHsxLCAtMX0sIG5ldyBpbnRbXXsyfSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJhXHUwMzAwYiIsICJcdTAzMDAiLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdezEsIC0xfSwgbmV3IGludFtdIHsxfSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJhXHUwMzAwXHUwMzI1YiIsICJcdTAzMDBiIiwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7MSwgLTF9LCBuZXcgaW50W10gezN9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoIlx1MDMyNVx1MDMwMEFcdTAzMjVcdTAzMDAiLCAiXHUwMzAwQVx1MDMwMCIsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W10gezAsIC0xfSwgbmV3IGludFtdIHs1fSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJcdTAzMjVcdTAzMDBBXHUwMzI1XHUwMzAwIiwgIlx1MDMyNUFcdTAzMjUiLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdIHswLCAtMX0sIG5ldyBpbnRbXSB7NX0pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YSgiYVx1MDMwMFx1MDMyNWJcdTAzMDBcdTAzMjVjIFx1MDMyNWJcdTAzMDAgXHUwMzAwYlx1MDMyNSIsICJcdTAzMDBiXHUwMzI1IiwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIAorICAgICAgICAgICAgbmV3IGludFtdIHsxLCAxMiwgLTF9LCBuZXcgaW50W10gezUsIDN9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEobnVsbCwgbnVsbCwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7LTF9LCBuZXcgaW50W117MH0pCisgICAgfTsKKworICAgIFNlYXJjaERhdGEgQ09MTEFUT1JbXSA9IHsKKyAgICAgICAgLyogZW5nbGlzaCAqLworICAgICAgICBuZXcgU2VhcmNoRGF0YSgiZm94IGZweCIsICJmb3giLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdIHswLCAtMX0sIG5ldyBpbnRbXSB7M30pLCAKKyAgICAgICAgLyogdGFpbG9yZWQgKi8KKyAgICAgICAgbmV3IFNlYXJjaERhdGEoImZveCBmcHgiLCAiZm94IiwgbnVsbCwgQ29sbGF0b3IuUFJJTUFSWSwgbnVsbCwgbmV3IGludFtdIHswLCA0LCAtMX0sIG5ldyBpbnRbXSB7MywgM30pLCAKKyAgICAgICAgbmV3IFNlYXJjaERhdGEobnVsbCwgbnVsbCwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7LTF9LCBuZXcgaW50W10gezB9KQorICAgIH07CisgICAgCisgICAgU3RyaW5nIFRFU1RDT0xMQVRPUlJVTEUgPSAiJiBvLE8gOyBwLFAiOworICAgIFN0cmluZyBFWFRSQUNPTExBVElPTlJVTEUgPSAiICYgYWUgOyBcdTAwZTQgJiBBRSA7IFx1MDBjNCAmIG9lIDsgXHUwMGY2ICYgT0UgOyBcdTAwZDYgJiB1ZSA7IFx1MDBmYyAmIFVFIDsgXHUwMGRjIjsKKworICAgIAorICAgIFNlYXJjaERhdGEgQ09MTEFUT1JDQU5PTklDQUxbXSA9IHsKKyAgICAgICAgLyogZW5nbGlzaCAqLworICAgICAgICBuZXcgU2VhcmNoRGF0YSgiZm94IGZweCIsICJmb3giLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdIHswLCAtMX0sIG5ldyBpbnRbXSB7M30pLCAKKyAgICAgICAgLyogdGFpbG9yZWQgKi8KKyAgICAgICAgbmV3IFNlYXJjaERhdGEoImZveCBmcHgiLCAiZm94IiwgbnVsbCwgQ29sbGF0b3IuUFJJTUFSWSwgbnVsbCwgbmV3IGludFtdIHswLCA0LCAtMX0sIG5ldyBpbnRbXSB7MywgM30pLCAKKyAgICAgICAgbmV3IFNlYXJjaERhdGEobnVsbCwgbnVsbCwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7LTF9LCBuZXcgaW50W10gezB9KQorICAgIH07CisKKyAgICBTZWFyY2hEYXRhIENPTVBPU0lURUJPVU5EQVJJRVNbXSA9IHsKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoIlx1MDBDMCIsICJBIiwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7MCwgLTF9LCBuZXcgaW50W10gezF9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoIkFcdTAwQzBDIiwgIkEiLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdICB7MCwgMSwgLTF9LCBuZXcgaW50W10gIHsxLCAxfSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJcdTAwQzBBIiwgIkEiLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdIHswLCAxLCAtMX0sIG5ldyBpbnRbXSB7MSwgMX0pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YSgiQlx1MDBDMCIsICJBIiwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7MSwgLTF9LCBuZXcgaW50W10gezF9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoIlx1MDBDMEIiLCAiQSIsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W10gezAsIC0xfSwgbmV3IGludFtdIHsxfSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJcdTAwQzAiLCAiXHUwMzAwIiwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7MCwgLTF9LCBuZXcgaW50W10gezF9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoIlx1MDMwMFx1MDBDMCIsICJcdTAzMDAiLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdIHswLCAxLCAtMX0sIG5ldyBpbnRbXSB7MSwgMX0pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YSgiXHUwMEMwXHUwMzAwIiwgIlx1MDMwMCIsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W10gey0xfSwgbmV3IGludFtdIHswfSksCisgICAgICAgIC8qIEEgKyAwMzBBICsgMDMwMSAqLworICAgICAgICBuZXcgU2VhcmNoRGF0YSgiXHUwMUZBIiwgIlx1MDFGQSIsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W10gezAsIC0xfSwgbmV3IGludFtdIHsxfSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJcdTAxRkEiLCAiXHUwMzBBIiwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7LTF9LCBuZXcgaW50W10gezB9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoIlx1MDFGQSIsICJBXHUwMzBBIiwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7LTF9LCBuZXcgaW50W10gezB9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoIlx1MDFGQSIsICJcdTAzMEFBIiwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7LTF9LCBuZXcgaW50W10gezB9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoIlx1MDFGQSIsICJcdTAzMDEiLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdIHstMX0sIG5ldyBpbnRbXSB7MH0pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YSgiXHUwMUZBIiwgIkFcdTAzMDEiLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdIHstMX0sIG5ldyBpbnRbXSB7MH0pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YSgiXHUwMUZBIiwgIlx1MDMwMUEiLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdIHstMX0sIG5ldyBpbnRbXSB7MH0pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YSgiXHUwMUZBIiwgIlx1MDMwQVx1MDMwMSIsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W10gezAsIC0xfSwgbmV3IGludFtdIHsxfSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJBXHUwMUZBIiwgIkFcdTAzMEEiLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdIHstMX0sIG5ldyBpbnRbXSB7MH0pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YSgiXHUwMUZBQSIsICJcdTAzMDFBIiwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7LTF9LCBuZXcgaW50W10gezB9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoIlx1MEY3MyIsICJcdTBGNzMiLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdIHswLCAtMX0sIG5ldyBpbnRbXSB7MX0pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YSgiXHUwRjczIiwgIlx1MEY3MSIsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W10gey0xfSwgbmV3IGludFtdIHswfSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJcdTBGNzMiLCAiXHUwRjcyIiwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7LTF9LCBuZXcgaW50W10gezB9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoIlx1MEY3MyIsICJcdTBGNzFcdTBGNzIiLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdIHswLCAtMX0sIG5ldyBpbnRbXSB7MX0pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YSgiQVx1MEY3MyIsICJBXHUwRjcxIiwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7LTF9LCBuZXcgaW50W10gezB9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoIlx1MEY3M0EiLCAiXHUwRjcyQSIsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W10gey0xfSwgbmV3IGludFtdIHswfSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKG51bGwsIG51bGwsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W10gey0xfSwgbmV3IGludFtdIHswfSkKKyAgICB9OworCisgICAgU2VhcmNoRGF0YSBDT01QT1NJVEVCT1VOREFSSUVTQ0FOT05JQ0FMW10gPSB7CisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJcdTAwQzAiLCAiQSIsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W10gezAsIC0xfSwgbmV3IGludFtdIHsxfSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJBXHUwMEMwQyIsICJBIiwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7MCwgMSwgLTF9LCBuZXcgaW50W10gezEsIDF9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoIlx1MDBDMEEiLCAiQSIsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W10gezAsIDEsIC0xfSwgbmV3IGludFtdIHsxLCAxfSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJCXHUwMEMwIiwgIkEiLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdIHsxLCAtMX0sIG5ldyBpbnRbXSB7MX0pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YSgiXHUwMEMwQiIsICJBIiwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7MCwgLTF9LCBuZXcgaW50W10gezF9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoIlx1MDBDMCIsICJcdTAzMDAiLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdIHswLCAtMX0sIG5ldyBpbnRbXSB7MX0pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YSgiXHUwMzAwXHUwMEMwIiwgIlx1MDMwMCIsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W10gezAsIDEsIC0xfSwgbmV3IGludFtdIHsxLCAxfSksCisgICAgICAgIC8qIFx1MDMwMCBibG9ja2VkIGJ5IFx1MDMwMCAqLworICAgICAgICBuZXcgU2VhcmNoRGF0YSgiXHUwMEMwXHUwMzAwIiwgIlx1MDMwMCIsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W10gezAsIC0xfSwgbmV3IGludFtdIHsyfSksCisgICAgICAgIC8qIEEgKyAwMzBBICsgMDMwMSAqLworICAgICAgICBuZXcgU2VhcmNoRGF0YSgiXHUwMUZBIiwgIlx1MDFGQSIsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W10gezAsIC0xfSwgbmV3IGludFtdIHsxfSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJcdTAxRkEiLCAiXHUwMzBBIiwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7MCwgLTF9LCBuZXcgaW50W10gezF9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoIlx1MDFGQSIsICJBXHUwMzBBIiwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7MCwgLTF9LCBuZXcgaW50W10gezF9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoIlx1MDFGQSIsICJcdTAzMEFBIiwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7LTF9LCBuZXcgaW50W10gezB9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoIlx1MDFGQSIsICJcdTAzMDEiLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdIHswLCAtMX0sIG5ldyBpbnRbXSB7MX0pLAorICAgICAgICAvKiBibG9ja2VkIGFjY2VudCAqLworICAgICAgICBuZXcgU2VhcmNoRGF0YSgiXHUwMUZBIiwgIkFcdTAzMDEiLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdIHstMX0sIG5ldyBpbnRbXSB7MH0pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YSgiXHUwMUZBIiwgIlx1MDMwMUEiLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdIHstMX0sIG5ldyBpbnRbXSB7MH0pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YSgiXHUwMUZBIiwgIlx1MDMwQVx1MDMwMSIsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W10gezAsIC0xfSwgbmV3IGludFtdIHsxfSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJBXHUwMUZBIiwgIkFcdTAzMEEiLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdIHsxLCAtMX0sIG5ldyBpbnRbXSB7MX0pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YSgiXHUwMUZBQSIsICJcdTAzMDFBIiwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7MCwgLTF9LCBuZXcgaW50W10gezJ9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoIlx1MEY3MyIsICJcdTBGNzMiLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdIHswLCAtMX0sIG5ldyBpbnRbXSB7MX0pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YSgiXHUwRjczIiwgIlx1MEY3MSIsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W10gezAsIC0xfSwgbmV3IGludFtdIHsxfSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJcdTBGNzMiLCAiXHUwRjcyIiwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7MCwgLTF9LCBuZXcgaW50W10gezF9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoIlx1MEY3MyIsICJcdTBGNzFcdTBGNzIiLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdIHswLCAtMX0sIG5ldyBpbnRbXSB7MX0pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YSgiQVx1MEY3MyIsICJBXHUwRjcxIiwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7MCwgLTF9LCBuZXcgaW50W10gezJ9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoIlx1MEY3M0EiLCAiXHUwRjcyQSIsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W10gezAsIC0xfSwgbmV3IGludFtdIHsyfSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJcdTAxRkEgQVx1MDMwMVx1MDMwQSBBXHUwMzBBXHUwMzAxIEFcdTAzMEEgXHUwMUZBIiwgIkFcdTAzMEEiLCAKKyAgICAgICAgICAgIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W10gezAsIDYsIDEwLCAxMywgLTF9LCBuZXcgaW50W10gezEsIDMsIDIsIDF9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEobnVsbCwgbnVsbCwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7LTF9LCBuZXcgaW50W10gezB9KQorICAgIH07CisKKyAgICBTZWFyY2hEYXRhIFNVUFBMRU1FTlRBUllbXSA9IHsKKyAgICAgICAgLyogMDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5ICovCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJhYmMgXHVEODAwXHVEQzAwIFx1RDgwMFx1REMwMSBcdUQ4MDFcdURDMDAgXHVEODAwXHVEQzAwYWJjIGFiY1x1RDgwMFx1REMwMCBcdUQ4MDBcdUQ4MDBcdURDMDAgXHVEODAwXHVEQzAwXHVEQzAwIiwgCisgICAgICAgICAgICAiXHVEODAwXHVEQzAwIiwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7NCwgMTMsIDIyLCAyNiwgMjksIC0xfSwgbmV3IGludFtdIHsyLCAyLCAyLCAyLCAyfSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKG51bGwsIG51bGwsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W10gey0xfSwgbmV3IGludFtdIHswfSkKKyAgICB9OworCisgICAgU3RyaW5nIENPTlRSQUNUSU9OUlVMRSA9ICImeiA9IGFiL2MgPCBBQiA8IFhcdTAzMDAgPCBBQkMgPCBYXHUwMzAwXHUwMzE1IjsKKyAgICAKKyAgICBTZWFyY2hEYXRhIENPTlRSQUNUSU9OW10gPSB7CisgICAgICAgIC8qIGNvbW1vbiBkaXNjb250aWd1b3VzICovCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJBXHUwMzAwXHUwMzE1IiwgIlx1MDMwMCIsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W10gey0xfSwgbmV3IGludFtdIHswfSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJBXHUwMzAwXHUwMzE1IiwgIlx1MDMwMFx1MDMxNSIsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W10gezEsIC0xfSwgbmV3IGludFtdIHsyfSksCisgICAgICAgIC8qIGNvbnRyYWN0aW9uIHByZWZpeCAqLworICAgICAgICBuZXcgU2VhcmNoRGF0YSgiQUJcdTAzMTVDIiwgIkEiLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdIHstMX0sIG5ldyBpbnRbXSB7MH0pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YSgiQUJcdTAzMTVDIiwgIkFCIiwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7MCwgLTF9LCBuZXcgaW50W10gezJ9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoIkFCXHUwMzE1QyIsICJcdTAzMTUiLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdIHsyLCAtMX0sIG5ldyBpbnRbXSB7MX0pLAorICAgICAgICAvKiBkaXNjb250aWd1b3VzIHByb2JsZW0gaGVyZSBmb3IgYmFja3dhcmRzIGl0ZXJhdGlvbi4gCisgICAgICAgIGFjY2VudHMgbm90IGZvdW5kIGJlY2F1c2UgZGlzY29udGlndW91cyBzdG9yZXMgYWxsIGluZm9ybWF0aW9uICovCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJYXHUwMzAwXHUwMzE5XHUwMzE1IiwgIlx1MDMxOSIsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W10gey0xfSwgbmV3IGludFtdIHswfSksCisgICAgICAgICAvKiBlbmRzIG5vdCB3aXRoIGEgY29udHJhY3Rpb24gY2hhcmFjdGVyICovCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJYXHUwMzE1XHUwMzAwRCIsICJcdTAzMDBcdTAzMTUiLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdIHstMX0sIG5ldyBpbnRbXSB7MH0pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YSgiWFx1MDMxNVx1MDMwMEQiLCAiWFx1MDMwMFx1MDMxNSIsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W10gezAsIC0xfSwgbmV3IGludFtdIHszfSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJYXHUwMzAwXHUwMzFBXHUwMzE1RCIsICJYXHUwMzAwIiwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7LTF9LCBuZXcgaW50W10gezB9KSwKKyAgICAgICAgLyogYmxvY2tlZCBkaXNjb250aWd1b3VzICovCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJYXHUwMzAwXHUwMzFBXHUwMzE1RCIsICJcdTAzMUFcdTAzMTVEIiwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7LTF9LCBuZXcgaW50W10gezB9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoImFiIiwgInoiLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdIHswLCAtMX0sIG5ldyBpbnRbXSB7Mn0pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YShudWxsLCBudWxsLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdIHstMX0sIG5ldyBpbnRbXSB7MH0pCisgICAgfTsKKyAgICAKKyAgICBTZWFyY2hEYXRhIENPTlRSQUNUSU9OQ0FOT05JQ0FMW10gPSB7CisgICAgICAgIC8qIGNvbW1vbiBkaXNjb250aWd1b3VzICovCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJBXHUwMzAwXHUwMzE1IiwgIlx1MDMwMCIsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W10gezEsIC0xfSwgbmV3IGludFtdIHsyfSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJBXHUwMzAwXHUwMzE1IiwgIlx1MDMwMFx1MDMxNSIsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W10gezEsIC0xfSwgbmV3IGludFtdIHsyfSksCisgICAgICAgIC8qIGNvbnRyYWN0aW9uIHByZWZpeCAqLworICAgICAgICBuZXcgU2VhcmNoRGF0YSgiQUJcdTAzMTVDIiwgIkEiLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdIHstMX0sIG5ldyBpbnRbXSB7MH0pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YSgiQUJcdTAzMTVDIiwgIkFCIiwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7MCwgLTF9LCBuZXcgaW50W10gezJ9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoIkFCXHUwMzE1QyIsICJcdTAzMTUiLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdIHsyLCAtMX0sIG5ldyBpbnRbXSB7MX0pLAorICAgICAgICAvKiBkaXNjb250aWd1b3VzIHByb2JsZW0gaGVyZSBmb3IgYmFja3dhcmRzIGl0ZXJhdGlvbi4gCisgICAgICAgIGZvcndhcmRzIGdpdmVzIDAsIDQgYnV0IGJhY2t3YXJkcyBnaXZlIDEsIDMgKi8KKyAgICAgICAgLyogeyJYXHUwMzAwXHUwMzE5XHUwMzE1IiwgIlx1MDMxOSIsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCB7MCwgLTF9LCAKKyAgICAgICAgezR9fSwgKi8KKyAgICAgICAgCisgICAgICAgICAvKiBlbmRzIG5vdCB3aXRoIGEgY29udHJhY3Rpb24gY2hhcmFjdGVyICovCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJYXHUwMzE1XHUwMzAwRCIsICJcdTAzMDBcdTAzMTUiLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdIHstMX0sIG5ldyBpbnRbXSB7MH0pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YSgiWFx1MDMxNVx1MDMwMEQiLCAiWFx1MDMwMFx1MDMxNSIsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCAKKyAgICAgICAgICAgIG5ldyBpbnRbXSB7MCwgLTF9LCBuZXcgaW50W10gezN9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoIlhcdTAzMDBcdTAzMUFcdTAzMTVEIiwgIlhcdTAzMDAiLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgCisgICAgICAgICAgICBuZXcgaW50W10gezAsIC0xfSwgbmV3IGludFtdIHs0fSksCisgICAgICAgIC8qIGJsb2NrZWQgZGlzY29udGlndW91cyAqLworICAgICAgICBuZXcgU2VhcmNoRGF0YSgiWFx1MDMwMFx1MDMxQVx1MDMxNUQiLCAiXHUwMzFBXHUwMzE1RCIsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCAKKyAgICAgICAgICAgIG5ldyBpbnRbXSB7MSwgLTF9LCBuZXcgaW50W10gezR9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoImFiIiwgInoiLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdIHswLCAtMX0sIG5ldyBpbnRbXSB7Mn0pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YShudWxsLCBudWxsLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdIHstMX0sIG5ldyBpbnRbXSB7MH0pCisgICAgfTsKKyAgICAKKyAgICBTZWFyY2hEYXRhIE1BVENIW10gPSB7CisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJhIGJ1c3kgYmVlIGlzIGEgdmVyeSBidXN5IGJlZWVlIiwgImJlZSIsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCAKKyAgICAgICAgbmV3IGludFtdIHs3LCAyNiwgLTF9LCBuZXcgaW50W10gezMsIDN9KSwKKyAgICAgICAgLyogMDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwICovCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJhIGJ1c3kgYmVlIGlzIGEgdmVyeSBidXN5IGJlZWVlIHdpdGggbm8gYmVlIGxpZmUiLCAiYmVlIiwgbnVsbCwgCisgICAgICAgICAgICBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdIHs3LCAyNiwgNDAsIC0xfSwgbmV3IGludFtdIHszLCAzLCAzfSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKG51bGwsIG51bGwsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W10gey0xfSwgbmV3IGludFtdIHswfSkKKyAgICB9OworICAgIAorICAgIFN0cmluZyBJR05PUkFCTEVSVUxFID0gIiZhID0gXHUwMzAwIjsKKyAgICAKKyAgICBTZWFyY2hEYXRhIElHTk9SQUJMRVtdID0geworICAgICAgICBuZXcgU2VhcmNoRGF0YSgiXHUwMzE1XHUwMzAwIFx1MDMxNVx1MDMwMFx1MDMxNSAiLCAiXHUwMzAwIiwgbnVsbCwgQ29sbGF0b3IuUFJJTUFSWSwgbnVsbCwgCisgICAgICAgICAgICBuZXcgaW50W10gezAsIDMsIC0xfSwgbmV3IGludFtdIHsyLCAzfSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKG51bGwsIG51bGwsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W10gey0xfSwgbmV3IGludFtdIHswfSkKKyAgICB9OworICAgIAorICAgIFNlYXJjaERhdGEgTk9STUNBTk9OSUNBTFtdID0geworICAgICAgICBuZXcgU2VhcmNoRGF0YSgiXHUwMzAwXHUwMzI1IiwgIlx1MDMwMCIsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W10gezAsIC0xfSwgbmV3IGludFtdIHsyfSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJcdTAzMDBcdTAzMjUiLCAiXHUwMzI1IiwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7MCwgLTF9LCBuZXcgaW50W10gezJ9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoImFcdTAzMDBcdTAzMjUiLCAiXHUwMzI1XHUwMzAwIiwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7MSwgLTF9LCAKKyAgICAgICAgICAgIG5ldyBpbnRbXSB7Mn0pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YSgiYVx1MDMwMFx1MDMyNSIsICJcdTAzMDBcdTAzMjUiLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdIHsxLCAtMX0sIAorICAgICAgICAgICAgbmV3IGludFtdIHsyfSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJhXHUwMzAwXHUwMzI1IiwgIlx1MDMyNSIsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W10gezEsIC0xfSwgbmV3IGludFtdIHsyfSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJhXHUwMzAwXHUwMzI1IiwgIlx1MDMwMCIsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W10gezEsIC0xfSwgbmV3IGludFtdIHsyfSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKG51bGwsIG51bGwsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W10gey0xfSwgbmV3IGludFtdIHswfSkKKyAgICB9OworICAgIAorICAgIFNlYXJjaERhdGEgTk9STUVYQUNUW10gPSB7CisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJhXHUwMzAwXHUwMzI1IiwgIlx1MDMyNVx1MDMwMCIsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W10gezEsIC0xfSwgbmV3IGludFtdIHsyfSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKG51bGwsIG51bGwsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W10gey0xfSwgbmV3IGludFtdIHswfSkKKyAgICB9OworCisgICAgU2VhcmNoRGF0YSBOT05OT1JNRVhBQ1RbXSA9IHsKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoImFcdTAzMDBcdTAzMjUiLCAiXHUwMzI1XHUwMzAwIiwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7LTF9LCBuZXcgaW50W10gezB9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEobnVsbCwgbnVsbCwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7LTF9LCBuZXcgaW50W10gezB9KQorICAgIH07CisgICAgCisgICAgU2VhcmNoRGF0YSBPVkVSTEFQW10gPSB7CisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJhYmFiYWJhYiIsICJhYmFiIiwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7MCwgMiwgNCwgLTF9LCBuZXcgaW50W10gezQsIDQsIDR9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEobnVsbCwgbnVsbCwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7LTF9LCBuZXcgaW50W10gezB9KQorICAgIH07CisgICAgCisgICAgU2VhcmNoRGF0YSBOT05PVkVSTEFQW10gPSB7CisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJhYmFiYWJhYiIsICJhYmFiIiwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7MCwgNCwgLTF9LCBuZXcgaW50W10gezQsIDR9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEobnVsbCwgbnVsbCwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7LTF9LCBuZXcgaW50W10gezB9KQorICAgIH07CisgICAgCisgICAgU2VhcmNoRGF0YSBPVkVSTEFQQ0FOT05JQ0FMW10gPSB7CisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJhYmFiYWJhYiIsICJhYmFiIiwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7MCwgMiwgNCwgLTF9LCAKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBpbnRbXSB7NCwgNCwgNH0pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YShudWxsLCBudWxsLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdIHstMX0sIG5ldyBpbnRbXSB7MH0pCisgICAgfTsKKyAgICAKKyAgICBTZWFyY2hEYXRhIE5PTk9WRVJMQVBDQU5PTklDQUxbXSA9IHsKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoImFiYWJhYmFiIiwgImFiYWIiLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdIHswLCA0LCAtMX0sIG5ldyBpbnRbXSB7NCwgNH0pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YShudWxsLCBudWxsLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdIHstMX0sIG5ldyBpbnRbXSB7MH0pCisgICAgfTsKKyAgICAKKyAgICBTZWFyY2hEYXRhIFBBVFRFUk5DQU5PTklDQUxbXSA9IHsKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoIlRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBmb3hlcyIsICJ0aGUiLCBudWxsLCAKKyAgICAgICAgICAgICAgICAgICAgICAgQ29sbGF0b3IuUFJJTUFSWSwgbnVsbCwgbmV3IGludFtdIHswLCAzMSwgLTF9LCBuZXcgaW50W10gezMsIDN9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoIlRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBmb3hlcyIsICJmb3giLCBudWxsLCAKKyAgICAgICAgICAgICAgICAgICAgICAgQ29sbGF0b3IuUFJJTUFSWSwgbnVsbCwgbmV3IGludFtdIHsxNiwgNDAsIC0xfSwgbmV3IGludFtdIHszLCAzfSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKG51bGwsIG51bGwsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W10gey0xfSwgbmV3IGludFtdIHswfSkKKyAgICB9OworICAgIAorICAgIFNlYXJjaERhdGEgUEFUVEVSTltdID0geworICAgICAgICBuZXcgU2VhcmNoRGF0YSgiVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGZveGVzIiwgInRoZSIsIG51bGwsIAorICAgICAgICAgICAgICAgICAgICAgICBDb2xsYXRvci5QUklNQVJZLCBudWxsLCBuZXcgaW50W10gezAsIDMxLCAtMX0sIG5ldyBpbnRbXSB7MywgM30pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YSgiVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGZveGVzIiwgImZveCIsIG51bGwsIAorICAgICAgICAgICAgICAgICAgICAgICBDb2xsYXRvci5QUklNQVJZLCBudWxsLCBuZXcgaW50W10gezE2LCA0MCwgLTF9LCBuZXcgaW50W10gezMsIDN9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEobnVsbCwgbnVsbCwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7LTF9LCBuZXcgaW50W10gezB9KQorICAgIH07CisgICAgCisgICAgU2VhcmNoRGF0YSBTVFJFTkdUSFtdID0geworICAgICAgICAvKjAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OSovCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZm94ZXMiLCAiZm94IiwgImVuIiwgCisgICAgICAgICAgICAgICAgICAgICAgIENvbGxhdG9yLlBSSU1BUlksIG51bGwsIG5ldyBpbnRbXSB7MTYsIDQwLCAtMX0sIG5ldyBpbnRbXSB7MywgM30pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YSgiVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGZveGVzIiwgImZveCIsICJlbiIsIAorICAgICAgICAgICAgICAgICAgICAgICBDb2xsYXRvci5QUklNQVJZLCAid29yZGJyZWFrZXIiLCBuZXcgaW50W10gezE2LCAtMX0sIG5ldyBpbnRbXSB7M30pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YSgiYmxhY2tiaXJkcyBQYXQgcFx1MDBFOWNoXHUwMEU5IHBcdTAwRUFjaGUgcFx1MDBFOWNoZXIgcFx1MDBFQWNoZXIgVG9kIFRcdTAwRjZuZSBibGFjayBUb2Z1IGJsYWNrYmlyZHMgVG9uIFBBVCB0b2Vob2xkIGJsYWNrYmlyZCBibGFjay1iaXJkIHBhdCB0b2UgYmlnIFRvZSIsCisgICAgICAgICAgICAgICAgICAgICAgICJwZWNoZSIsICJmciIsIENvbGxhdG9yLlBSSU1BUlksIG51bGwsIG5ldyBpbnRbXSB7MTUsIDIxLCAyNywgMzQsIC0xfSwgbmV3IGludFtdIHs1LCA1LCA1LCA1fSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJUaGlzIGlzIGEgdG9lIFRcdTAwRjZuZSIsICJ0b2UiLCAiZGUiLCBDb2xsYXRvci5QUklNQVJZLCBudWxsLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBpbnRbXSB7MTAsIDE0LCAtMX0sIG5ldyBpbnRbXSB7MywgMn0pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YSgiQSBjaGFubmVsLCBhbm90aGVyIENIQU5ORUwsIG1vcmUgQ2hhbm5lbHMsIGFuZCBvbmUgbGFzdCBjaGFubmVsLi4uIiwgImNoYW5uZWwiLCAiZXMiLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbGxhdG9yLlBSSU1BUlksIG51bGwsIG5ldyBpbnRbXSB7MiwgMTksIDMzLCA1NiwgLTF9LCBuZXcgaW50W10gezcsIDcsIDcsIDd9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEobnVsbCwgbnVsbCwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7LTF9LCBuZXcgaW50W10gezB9KQorICAgIH07CisgICAgCisgICAgU2VhcmNoRGF0YSBTVFJFTkdUSENBTk9OSUNBTFtdID0geworICAgICAgICAvKjAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OSAqLworICAgICAgICBuZXcgU2VhcmNoRGF0YSgiVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGZveGVzIiwgImZveCIsICJlbiIsIAorICAgICAgICAgICAgICAgICAgICAgICBDb2xsYXRvci5QUklNQVJZLCBudWxsLCBuZXcgaW50W10gezE2LCA0MCwgLTF9LCBuZXcgaW50W10gezMsIDN9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoIlRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBmb3hlcyIsICJmb3giLCAiZW4iLCAKKyAgICAgICAgICAgICAgICAgICAgICAgQ29sbGF0b3IuUFJJTUFSWSwgIndvcmRicmVha2VyIiwgbmV3IGludFtdIHsxNiwgLTF9LCBuZXcgaW50W10gezN9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoImJsYWNrYmlyZHMgUGF0IHBcdTAwRTljaFx1MDBFOSBwXHUwMEVBY2hlIHBcdTAwRTljaGVyIHBcdTAwRUFjaGVyIFRvZCBUXHUwMEY2bmUgYmxhY2sgVG9mdSBibGFja2JpcmRzIFRvbiBQQVQgdG9laG9sZCBibGFja2JpcmQgYmxhY2stYmlyZCBwYXQgdG9lIGJpZyBUb2UiLAorICAgICAgICAgICAgICAgICAgICAgICAicGVjaGUiLCAiZnIiLCBDb2xsYXRvci5QUklNQVJZLCBudWxsLCBuZXcgaW50W10gezE1LCAyMSwgMjcsIDM0LCAtMX0sIG5ldyBpbnRbXSB7NSwgNSwgNSwgNX0pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YSgiVGhpcyBpcyBhIHRvZSBUXHUwMEY2bmUiLCAidG9lIiwgImRlIiwgQ29sbGF0b3IuUFJJTUFSWSwgbnVsbCwgCisgICAgICAgICAgICAgICAgICAgICAgIG5ldyBpbnRbXSB7MTAsIDE0LCAtMX0sIG5ldyBpbnRbXSB7MywgMn0pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YSgiQSBjaGFubmVsLCBhbm90aGVyIENIQU5ORUwsIG1vcmUgQ2hhbm5lbHMsIGFuZCBvbmUgbGFzdCBjaGFubmVsLi4uIiwgImNoYW5uZWwiLCAiZXMiLCAKKyAgICAgICAgICAgICAgICAgICAgICAgQ29sbGF0b3IuUFJJTUFSWSwgbnVsbCwgbmV3IGludFtdezIsIDE5LCAzMywgNTYsIC0xfSwgbmV3IGludFtdIHs3LCA3LCA3LCA3fSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKG51bGwsIG51bGwsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W10gey0xfSwgbmV3IGludFtdezB9KQorICAgIH07CisgICAgCisgICAgU2VhcmNoRGF0YSBTVVBQTEVNRU5UQVJZQ0FOT05JQ0FMW10gPSB7CisgICAgICAgIC8qMDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5ICovCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJhYmMgXHVEODAwXHVEQzAwIFx1RDgwMFx1REMwMSBcdUQ4MDFcdURDMDAgXHVEODAwXHVEQzAwYWJjIGFiY1x1RDgwMFx1REMwMCBcdUQ4MDBcdUQ4MDBcdURDMDAgXHVEODAwXHVEQzAwXHVEQzAwIiwgCisgICAgICAgICAgICAgICAgICAgICAgICJcdUQ4MDBcdURDMDAiLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdIHs0LCAxMywgMjIsIDI2LCAyOSwgLTF9LCAKKyAgICAgICAgICAgICAgICAgICAgICAgbmV3IGludFtdIHsyLCAyLCAyLCAyLCAyfSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKG51bGwsIG51bGwsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W10gey0xfSwgbmV3IGludFtdIHswfSkKKyAgICB9OworICAgIAorICAgIHN0YXRpYyBTZWFyY2hEYXRhIFZBUklBQkxFW10gPSB7CisgICAgICAgIC8qMDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5Ki8KKyAgICAgICAgbmV3IFNlYXJjaERhdGEoImJsYWNrYmlyZHMgYmxhY2sgYmxhY2tiaXJkcyBibGFja2JpcmQgYmxhY2stYmlyZCIsICJibGFja2JpcmQiLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgICBudWxsLCAKKyAgICAgICAgbmV3IGludFtdIHswLCAxNywgMjgsIDM4LCAtMX0sIG5ldyBpbnRbXSB7OSwgOSwgOSwgMTB9KSwKKyAgICAgICAgCisgICAgICAgIC8qIHRvIHNlZSB0aGF0IGl0IGRvZXNuJ3QgZ28gaW50byBhbiBpbmZpbml0ZSBsb29wIGlmIHRoZSBzdGFydCBvZiB0ZXh0CisgICAgICAgIGlzIGEgaWdub3JhYmxlIGNoYXJhY3RlciAqLworICAgICAgICBuZXcgU2VhcmNoRGF0YSgiIG9uIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdvIiwgICAgICAgIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCAgIG51bGwsIAorICAgICAgICAgICAgICAgICAgICAgICBuZXcgaW50W10gey0xfSwgbmV3IGludFtdezB9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IiwgICAgICAgICAgICAgICAgICAgICAgICIgICAiLCAgICAgICBudWxsLCBDb2xsYXRvci5QUklNQVJZLCAgICBudWxsLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBpbnRbXXswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgLTF9LCAKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBpbnRbXSB7MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0pLAorICAgICAgICAKKyAgICAgICAgLyogdGVzdGluZyB0aWdodGVzdCBtYXRjaCAqLyAKKyAgICAgICAgbmV3IFNlYXJjaERhdGEoIiBhYmMgIGEgYmMgICBhYiBjICAgIGEgIGJjICAgICBhYiAgYyIsICAgICAgICAgICAgICJhYmMiLCAgICAgICBudWxsLCBDb2xsYXRvci5RVUFURVJOQVJZLCBudWxsLCAKKyAgICAgICAgICAgICAgICAgICAgICAgbmV3IGludFtdezEsIC0xfSwgbmV3IGludFtdIHszfSksCisgICAgICAgIC8qMDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5ICovCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCIgYWJjICBhIGJjICAgYWIgYyAgICBhICBiYyAgICAgYWIgIGMiLCAgICAgICAgICAgICAiYWJjIiwgICAgICAgbnVsbCwgQ29sbGF0b3IuU0VDT05EQVJZLCAgbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgbmV3IGludFtdIHsxLCA2LCAxMywgMjEsIDMxLCAtMX0sIG5ldyBpbnRbXSB7MywgNCwgNCwgNSwgNX0pLAorICAgIAorICAgICAgICAvKiB0b3RhbGx5IGlnbm9yYWJsZSB0ZXh0ICovCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCIgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLSIsICAgICAgICAgICAgICAgICAgICAgICAiYWJjIiwgICAgICAgbnVsbCwgQ29sbGF0b3IuU0VDT05EQVJZLCAgbnVsbCwgCisgICAgICAgICAgICAgICAgICAgICAgIG5ldyBpbnRbXSB7LTF9LCBuZXcgaW50W10gezB9KSwKKyAgICAgICAgbmV3IFNlYXJjaERhdGEobnVsbCwgbnVsbCwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7LTF9LCBuZXcgaW50W10gezB9KQorICAgIH07CisgICAgCisgICAgc3RhdGljIFNlYXJjaERhdGEgVEVYVENBTk9OSUNBTFtdID0geworICAgICAgICBuZXcgU2VhcmNoRGF0YSgidGhlIGZveHkgYnJvd24gZm94IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZveCIsICAgICAgIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCAgIG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgIG5ldyBpbnRbXSB7NCwgMTUsIC0xfSwgbmV3IGludFtdIHszLCAzfSksCisgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJ0aGUgcXVpY2sgYnJvd24gZm94IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm94IiwgICAgICAgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksICAgbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgbmV3IGludFtdIHsxNiwgLTF9LCBuZXcgaW50W117M30pLAorICAgICAgICBuZXcgU2VhcmNoRGF0YShudWxsLCBudWxsLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSxudWxsLCBuZXcgaW50W10gey0xfSwgbmV3IGludFtdIHswfSkKKyAgICB9OworICAgIAorICAgIC8qKgorICAgICAqIENvbnN0cnVjdG9yCisgICAgICovCisgICAgcHVibGljIFNlYXJjaFRlc3QoKQorICAgIHsKKyAgICAgICAgbV9lbl91c18gPSAoUnVsZUJhc2VkQ29sbGF0b3IpQ29sbGF0b3IuZ2V0SW5zdGFuY2UoTG9jYWxlLlVTKTsgCisgICAgICAgIG1fZnJfZnJfID0gKFJ1bGVCYXNlZENvbGxhdG9yKUNvbGxhdG9yLmdldEluc3RhbmNlKExvY2FsZS5GUkFOQ0UpOworICAgICAgICBtX2RlXyA9IChSdWxlQmFzZWRDb2xsYXRvcilDb2xsYXRvci5nZXRJbnN0YW5jZShuZXcgTG9jYWxlKCJkZSIsICJERSIpKTsKKyAgICAgICAgbV9lc18gPSAoUnVsZUJhc2VkQ29sbGF0b3IpQ29sbGF0b3IuZ2V0SW5zdGFuY2UobmV3IExvY2FsZSgiZXMiLCAiRVMiKSk7IAorICAgICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFN0cmluZyBydWxlcyA9IG1fZGVfLmdldFJ1bGVzKCkgKyBFWFRSQUNPTExBVElPTlJVTEU7CisgICAgICAgICAgICBtX2RlXyA9IG5ldyBSdWxlQmFzZWRDb2xsYXRvcihydWxlcyk7CisgICAgICAgICAgICBydWxlcyA9IG1fZXNfLmdldFJ1bGVzKCkgKyBFWFRSQUNPTExBVElPTlJVTEU7CisgICAgICAgICAgICBtX2VzXyA9IG5ldyBSdWxlQmFzZWRDb2xsYXRvcihydWxlcyk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiRXJyb3IgY3JlYXRpbmcgbW9kaWZpZWQgR2VybWFuIGFuZCBTcGFuaXNoIGNvbGxhdG9ycyIpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBuZXcgU2VhcmNoVGVzdCgpLnJ1bihhcmdzKTsKKyAgICAgICAgLy8gbmV3IFNlYXJjaFRlc3QoKS5UZXN0Q29udHJhY3Rpb24oKTsKKyAgICB9CisgICAgCisgICAgUnVsZUJhc2VkQ29sbGF0b3IgZ2V0Q29sbGF0b3IoU3RyaW5nIGNvbGxhdG9yKSB7CisgICAgICAgIGlmIChjb2xsYXRvciA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gbV9lbl91c187CisgICAgICAgIH0gaWYgKGNvbGxhdG9yLmVxdWFscygiZnIiKSkgeworICAgICAgICAgICAgcmV0dXJuIG1fZnJfZnJfOworICAgICAgICB9IGVsc2UgaWYgKGNvbGxhdG9yLmVxdWFscygiZGUiKSkgeworICAgICAgICAgICAgcmV0dXJuIG1fZGVfOworICAgICAgICB9IGVsc2UgaWYgKGNvbGxhdG9yLmVxdWFscygiZXMiKSkgeworICAgICAgICAgICAgcmV0dXJuIG1fZXNfOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIG1fZW5fdXNfOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIEJyZWFrSXRlcmF0b3IgZ2V0QnJlYWtJdGVyYXRvcihTdHJpbmcgYnJlYWtlcikgeworICAgICAgICBpZiAoYnJlYWtlciA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfSBpZiAoYnJlYWtlci5lcXVhbHMoIndvcmRicmVha2VyIikpIHsKKyAgICAgICAgICAgIHJldHVybiBtX2VuX3dvcmRicmVha2VyXzsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBtX2VuX2NoYXJhY3RlcmJyZWFrZXJfOworICAgICAgICB9CisgICAgfQorCisgICAgYm9vbGVhbiBhc3NlcnRDYW5vbmljYWxFcXVhbChTZWFyY2hEYXRhIHNlYXJjaCkgeworICAgICAgICBDb2xsYXRvciAgICAgIGNvbGxhdG9yID0gZ2V0Q29sbGF0b3Ioc2VhcmNoLmNvbGxhdG9yKTsKKyAgICAgICAgQnJlYWtJdGVyYXRvciBicmVha2VyICA9IGdldEJyZWFrSXRlcmF0b3Ioc2VhcmNoLmJyZWFrZXIpOworICAgICAgICBTdHJpbmdTZWFyY2ggIHN0cnNyY2g7IAorICAgICAgICAKKyAgICAgICAgU3RyaW5nIHRleHQgPSBzZWFyY2gudGV4dDsKKyAgICAgICAgU3RyaW5nICBwYXR0ZXJuID0gc2VhcmNoLnBhdHRlcm47CisgICAgCisgICAgICAgIGlmIChicmVha2VyICE9IG51bGwpIHsKKyAgICAgICAgICAgIGJyZWFrZXIuc2V0VGV4dCh0ZXh0KTsKKyAgICAgICAgfQorICAgICAgICBjb2xsYXRvci5zZXRTdHJlbmd0aChzZWFyY2guc3RyZW5ndGgpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgc3Ryc3JjaCA9IG5ldyBTdHJpbmdTZWFyY2gocGF0dGVybiwgbmV3IFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yKHRleHQpLCAoUnVsZUJhc2VkQ29sbGF0b3IpY29sbGF0b3IsIGJyZWFrZXIpOworICAgICAgICAgICAgc3Ryc3JjaC5zZXRDYW5vbmljYWwodHJ1ZSk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiRXJyb3Igb3BlbmluZyBzdHJpbmcgc2VhcmNoIiArIGUuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSAgIAorICAgICAgICAKKyAgICAgICAgaWYgKCFhc3NlcnRFcXVhbFdpdGhTdHJpbmdTZWFyY2goc3Ryc3JjaCwgc2VhcmNoKSkgeworICAgICAgICAgICAgY29sbGF0b3Iuc2V0U3RyZW5ndGgoQ29sbGF0b3IuVEVSVElBUlkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGNvbGxhdG9yLnNldFN0cmVuZ3RoKENvbGxhdG9yLlRFUlRJQVJZKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIGJvb2xlYW4gYXNzZXJ0RXF1YWwoU2VhcmNoRGF0YSBzZWFyY2gpIHsKKyAgICAgICAgQ29sbGF0b3IgICAgICBjb2xsYXRvciA9IGdldENvbGxhdG9yKHNlYXJjaC5jb2xsYXRvcik7CisgICAgICAgIEJyZWFrSXRlcmF0b3IgYnJlYWtlciAgPSBnZXRCcmVha0l0ZXJhdG9yKHNlYXJjaC5icmVha2VyKTsKKyAgICAgICAgU3RyaW5nU2VhcmNoICBzdHJzcmNoOyAKKyAgICAgICAgCisgICAgICAgIFN0cmluZyB0ZXh0ID0gc2VhcmNoLnRleHQ7CisgICAgICAgIFN0cmluZyAgcGF0dGVybiA9IHNlYXJjaC5wYXR0ZXJuOworICAgIAorICAgICAgICBpZiAoYnJlYWtlciAhPSBudWxsKSB7CisgICAgICAgICAgICBicmVha2VyLnNldFRleHQodGV4dCk7CisgICAgICAgIH0KKyAgICAgICAgY29sbGF0b3Iuc2V0U3RyZW5ndGgoc2VhcmNoLnN0cmVuZ3RoKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHN0cnNyY2ggPSBuZXcgU3RyaW5nU2VhcmNoKHBhdHRlcm4sIG5ldyBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvcih0ZXh0KSwgKFJ1bGVCYXNlZENvbGxhdG9yKWNvbGxhdG9yLCBicmVha2VyKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJFcnJvciBvcGVuaW5nIHN0cmluZyBzZWFyY2ggIiArIGUuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKCFhc3NlcnRFcXVhbFdpdGhTdHJpbmdTZWFyY2goc3Ryc3JjaCwgc2VhcmNoKSkgeworICAgICAgICAgICAgY29sbGF0b3Iuc2V0U3RyZW5ndGgoQ29sbGF0b3IuVEVSVElBUlkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGNvbGxhdG9yLnNldFN0cmVuZ3RoKENvbGxhdG9yLlRFUlRJQVJZKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIGJvb2xlYW4gYXNzZXJ0RXF1YWxXaXRoQXR0cmlidXRlKFNlYXJjaERhdGEgc2VhcmNoLCBib29sZWFuIGNhbm9uaWNhbCwgYm9vbGVhbiBvdmVybGFwKSB7CisgICAgICAgIENvbGxhdG9yICAgICAgY29sbGF0b3IgPSBnZXRDb2xsYXRvcihzZWFyY2guY29sbGF0b3IpOworICAgICAgICBCcmVha0l0ZXJhdG9yIGJyZWFrZXIgID0gZ2V0QnJlYWtJdGVyYXRvcihzZWFyY2guYnJlYWtlcik7CisgICAgICAgIFN0cmluZ1NlYXJjaCAgc3Ryc3JjaDsgCisgICAgICAgIAorICAgICAgICBTdHJpbmcgdGV4dCA9IHNlYXJjaC50ZXh0OworICAgICAgICBTdHJpbmcgIHBhdHRlcm4gPSBzZWFyY2gucGF0dGVybjsKKyAgICAKKyAgICAgICAgaWYgKGJyZWFrZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgYnJlYWtlci5zZXRUZXh0KHRleHQpOworICAgICAgICB9CisgICAgICAgIGNvbGxhdG9yLnNldFN0cmVuZ3RoKHNlYXJjaC5zdHJlbmd0aCk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBzdHJzcmNoID0gbmV3IFN0cmluZ1NlYXJjaChwYXR0ZXJuLCBuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IodGV4dCksIChSdWxlQmFzZWRDb2xsYXRvciljb2xsYXRvciwgYnJlYWtlcik7CisgICAgICAgICAgICBzdHJzcmNoLnNldENhbm9uaWNhbChjYW5vbmljYWwpOworICAgICAgICAgICAgc3Ryc3JjaC5zZXRPdmVybGFwcGluZyhvdmVybGFwKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJFcnJvciBvcGVuaW5nIHN0cmluZyBzZWFyY2ggIiArIGUuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKCFhc3NlcnRFcXVhbFdpdGhTdHJpbmdTZWFyY2goc3Ryc3JjaCwgc2VhcmNoKSkgeworICAgICAgICAgICAgY29sbGF0b3Iuc2V0U3RyZW5ndGgoQ29sbGF0b3IuVEVSVElBUlkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGNvbGxhdG9yLnNldFN0cmVuZ3RoKENvbGxhdG9yLlRFUlRJQVJZKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIGJvb2xlYW4gYXNzZXJ0RXF1YWxXaXRoU3RyaW5nU2VhcmNoKFN0cmluZ1NlYXJjaCBzdHJzcmNoLCBTZWFyY2hEYXRhIHNlYXJjaCkgeworICAgICAgICBpbnQgICAgICAgICAgIGNvdW50ICAgICAgID0gMDsKKyAgICAgICAgaW50ICAgbWF0Y2hpbmRleCAgPSBzZWFyY2gub2Zmc2V0W2NvdW50XTsKKyAgICAgICAgU3RyaW5nIG1hdGNodGV4dDsKKyAgICAgICAgCisgICAgICAgIGlmIChzdHJzcmNoLmdldE1hdGNoU3RhcnQoKSAhPSBTZWFyY2hJdGVyYXRvci5ET05FIHx8CisgICAgICAgICAgICBzdHJzcmNoLmdldE1hdGNoTGVuZ3RoKCkgIT0gMCkgeworICAgICAgICAgICAgZXJybG4oIkVycm9yIHdpdGggdGhlIGluaXRpYWxpemF0aW9uIG9mIG1hdGNoIHN0YXJ0IGFuZCBsZW5ndGgiKTsKKyAgICAgICAgfQorICAgICAgICAvLyBzdGFydCBvZiBmb2xsb3dpbmcgbWF0Y2hlcyAKKyAgICAgICAgd2hpbGUgKG1hdGNoaW5kZXggPj0gMCkgeworICAgICAgICAgICAgaW50IG1hdGNobGVuZ3RoID0gc2VhcmNoLnNpemVbY291bnRdOworICAgICAgICAgICAgc3Ryc3JjaC5uZXh0KCk7CisgICAgICAgICAgICAvL2ludCB4ID0gc3Ryc3JjaC5nZXRNYXRjaFN0YXJ0KCk7CisgICAgICAgICAgICBpZiAobWF0Y2hpbmRleCAhPSBzdHJzcmNoLmdldE1hdGNoU3RhcnQoKSB8fCAKKyAgICAgICAgICAgICAgICBtYXRjaGxlbmd0aCAhPSBzdHJzcmNoLmdldE1hdGNoTGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiVGV4dDogIiArIHNlYXJjaC50ZXh0KTsKKyAgICAgICAgICAgICAgICBlcnJsbigiUGF0dGVybjogIiArIHN0cnNyY2guZ2V0UGF0dGVybigpKTsKKyAgICAgICAgICAgICAgICBlcnJsbigiRXJyb3IgZm9sbG93aW5nIG1hdGNoIGZvdW5kIGF0ICIgKyBzdHJzcmNoLmdldE1hdGNoU3RhcnQoKSArICIsICIgKyBzdHJzcmNoLmdldE1hdGNoTGVuZ3RoKCkpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvdW50ICsrOworICAgICAgICAgICAgCisgICAgICAgICAgICBtYXRjaHRleHQgPSBzdHJzcmNoLmdldE1hdGNoZWRUZXh0KCk7CisgICAgICAgICAgICBTdHJpbmcgdGFyZ2V0VGV4dCA9IHNlYXJjaC50ZXh0OworICAgICAgICAgICAgaWYgKG1hdGNobGVuZ3RoID4gMCAmJgorICAgICAgICAgICAgICAgIHRhcmdldFRleHQuc3Vic3RyaW5nKG1hdGNoaW5kZXgsIG1hdGNoaW5kZXggKyBtYXRjaGxlbmd0aCkuY29tcGFyZVRvKG1hdGNodGV4dCkgIT0gMCkgeworICAgICAgICAgICAgICAgIGVycmxuKCJFcnJvciBnZXR0aW5nIGZvbGxvd2luZyBtYXRjaGVkIHRleHQiKTsKKyAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgIG1hdGNoaW5kZXggPSBzZWFyY2gub2Zmc2V0W2NvdW50XTsKKyAgICAgICAgfQorICAgICAgICBzdHJzcmNoLm5leHQoKTsKKyAgICAgICAgaWYgKHN0cnNyY2guZ2V0TWF0Y2hTdGFydCgpICE9IFNlYXJjaEl0ZXJhdG9yLkRPTkUgfHwKKyAgICAgICAgICAgIHN0cnNyY2guZ2V0TWF0Y2hMZW5ndGgoKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIlRleHQ6ICIgKyBzZWFyY2gudGV4dCk7CisgICAgICAgICAgICAgICAgZXJybG4oIlBhdHRlcm46ICIgKyBzdHJzcmNoLmdldFBhdHRlcm4oKSk7CisgICAgICAgICAgICAgICAgZXJybG4oIkVycm9yIGZvbGxvd2luZyBtYXRjaCBmb3VuZCBhdCAiICsgc3Ryc3JjaC5nZXRNYXRjaFN0YXJ0KCkgKyAiLCAiICsgc3Ryc3JjaC5nZXRNYXRjaExlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgLy8gc3RhcnQgb2YgcHJlY2VkaW5nIG1hdGNoZXMgCisgICAgICAgIGNvdW50ID0gY291bnQgPT0gMCA/IDAgOiBjb3VudCAtIDE7CisgICAgICAgIG1hdGNoaW5kZXggPSBzZWFyY2gub2Zmc2V0W2NvdW50XTsKKyAgICAgICAgd2hpbGUgKG1hdGNoaW5kZXggPj0gMCkgeworICAgICAgICAgICAgaW50IG1hdGNobGVuZ3RoID0gc2VhcmNoLnNpemVbY291bnRdOworICAgICAgICAgICAgc3Ryc3JjaC5wcmV2aW91cygpOworICAgICAgICAgICAgaWYgKG1hdGNoaW5kZXggIT0gc3Ryc3JjaC5nZXRNYXRjaFN0YXJ0KCkgfHwgCisgICAgICAgICAgICAgICAgbWF0Y2hsZW5ndGggIT0gc3Ryc3JjaC5nZXRNYXRjaExlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIlRleHQ6ICIgKyBzZWFyY2gudGV4dCk7CisgICAgICAgICAgICAgICAgZXJybG4oIlBhdHRlcm46ICIgKyBzdHJzcmNoLmdldFBhdHRlcm4oKSk7CisgICAgICAgICAgICAgICAgZXJybG4oIkVycm9yIGZvbGxvd2luZyBtYXRjaCBmb3VuZCBhdCAiICsgc3Ryc3JjaC5nZXRNYXRjaFN0YXJ0KCkgKyAiLCAiICsgc3Ryc3JjaC5nZXRNYXRjaExlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1hdGNodGV4dCA9IHN0cnNyY2guZ2V0TWF0Y2hlZFRleHQoKTsKKyAgICAgICAgICAgIFN0cmluZyB0YXJnZXRUZXh0ID0gc2VhcmNoLnRleHQ7CisgICAgICAgICAgICBpZiAobWF0Y2hsZW5ndGggPiAwICYmIAorICAgICAgICAgICAgICAgIHRhcmdldFRleHQuc3Vic3RyaW5nKG1hdGNoaW5kZXgsIG1hdGNoaW5kZXggKyBtYXRjaGxlbmd0aCkuY29tcGFyZVRvKG1hdGNodGV4dCkgIT0gMCkgeworICAgICAgICAgICAgICAgIGVycmxuKCJFcnJvciBnZXR0aW5nIGZvbGxvd2luZyBtYXRjaGVkIHRleHQiKTsKKyAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgIG1hdGNoaW5kZXggPSBjb3VudCA+IDAgPyBzZWFyY2gub2Zmc2V0W2NvdW50IC0gMV0gOiAtMTsKKyAgICAgICAgICAgIGNvdW50IC0tOworICAgICAgICB9CisgICAgICAgIHN0cnNyY2gucHJldmlvdXMoKTsKKyAgICAgICAgaWYgKHN0cnNyY2guZ2V0TWF0Y2hTdGFydCgpICE9IFNlYXJjaEl0ZXJhdG9yLkRPTkUgfHwKKyAgICAgICAgICAgIHN0cnNyY2guZ2V0TWF0Y2hMZW5ndGgoKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIlRleHQ6ICIgKyBzZWFyY2gudGV4dCk7CisgICAgICAgICAgICAgICAgZXJybG4oIlBhdHRlcm46ICIgKyBzdHJzcmNoLmdldFBhdHRlcm4oKSk7CisgICAgICAgICAgICAgICAgZXJybG4oIkVycm9yIGZvbGxvd2luZyBtYXRjaCBmb3VuZCBhdCAiICsgc3Ryc3JjaC5nZXRNYXRjaFN0YXJ0KCkgKyAiLCAiICsgc3Ryc3JjaC5nZXRNYXRjaExlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RDb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBTdHJpbmcgcGF0dGVybiA9ICJwYXR0ZXJuIjsKKyAgICAgICAgU3RyaW5nIHRleHQgPSAidGV4dCI7CisgICAgICAgIFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yIHRleHRpdGVyID0gbmV3IFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yKHRleHQpOworICAgICAgICBDb2xsYXRvciBkZWZhdWx0Y29sbGF0b3IgPSBDb2xsYXRvci5nZXRJbnN0YW5jZSgpOworICAgICAgICBCcmVha0l0ZXJhdG9yIGJyZWFrZXIgPSBCcmVha0l0ZXJhdG9yLmdldENoYXJhY3Rlckluc3RhbmNlKCk7CisgICAgICAgIGJyZWFrZXIuc2V0VGV4dCh0ZXh0KTsKKyAgICAgICAgU3RyaW5nU2VhcmNoIHNlYXJjaCA9IG5ldyBTdHJpbmdTZWFyY2gocGF0dGVybiwgdGV4dCk7CisgICAgICAgIGlmICghc2VhcmNoLmdldFBhdHRlcm4oKS5lcXVhbHMocGF0dGVybikKKyAgICAgICAgICAgIHx8ICFzZWFyY2guZ2V0VGFyZ2V0KCkuZXF1YWxzKHRleHRpdGVyKSAKKyAgICAgICAgICAgIHx8ICFzZWFyY2guZ2V0Q29sbGF0b3IoKS5lcXVhbHMoZGVmYXVsdGNvbGxhdG9yKQorICAgICAgICAgICAgfHwgIXNlYXJjaC5nZXRCcmVha0l0ZXJhdG9yKCkuZXF1YWxzKGJyZWFrZXIpKSB7CisgICAgICAgICAgICBlcnJsbigiU3RyaW5nU2VhcmNoKFN0cmluZywgU3RyaW5nKSBlcnJvciIpOworICAgICAgICB9CisgICAgICAgIHNlYXJjaCA9IG5ldyBTdHJpbmdTZWFyY2gocGF0dGVybiwgdGV4dGl0ZXIsIG1fZnJfZnJfKTsKKyAgICAgICAgaWYgKCFzZWFyY2guZ2V0UGF0dGVybigpLmVxdWFscyhwYXR0ZXJuKQorICAgICAgICAgICAgfHwgIXNlYXJjaC5nZXRUYXJnZXQoKS5lcXVhbHModGV4dGl0ZXIpIAorICAgICAgICAgICAgfHwgIXNlYXJjaC5nZXRDb2xsYXRvcigpLmVxdWFscyhtX2ZyX2ZyXykKKyAgICAgICAgICAgIHx8ICFzZWFyY2guZ2V0QnJlYWtJdGVyYXRvcigpLmVxdWFscyhicmVha2VyKSkgeworICAgICAgICAgICAgZXJybG4oIlN0cmluZ1NlYXJjaChTdHJpbmcsIFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yLCAiCisgICAgICAgICAgICAgICAgICArICJSdWxlQmFzZWRDb2xsYXRvcikgZXJyb3IiKTsKKyAgICAgICAgfQorICAgICAgICBMb2NhbGUgZGUgPSBuZXcgTG9jYWxlKCJkZSIsICJERSIpOworICAgICAgICBicmVha2VyID0gQnJlYWtJdGVyYXRvci5nZXRDaGFyYWN0ZXJJbnN0YW5jZShkZSk7CisgICAgICAgIGJyZWFrZXIuc2V0VGV4dCh0ZXh0KTsKKyAgICAgICAgc2VhcmNoID0gbmV3IFN0cmluZ1NlYXJjaChwYXR0ZXJuLCB0ZXh0aXRlciwgZGUpOworICAgICAgICBpZiAoIXNlYXJjaC5nZXRQYXR0ZXJuKCkuZXF1YWxzKHBhdHRlcm4pCisgICAgICAgICAgICB8fCAhc2VhcmNoLmdldFRhcmdldCgpLmVxdWFscyh0ZXh0aXRlcikgCisgICAgICAgICAgICB8fCAhc2VhcmNoLmdldENvbGxhdG9yKCkuZXF1YWxzKENvbGxhdG9yLmdldEluc3RhbmNlKGRlKSkKKyAgICAgICAgICAgIHx8ICFzZWFyY2guZ2V0QnJlYWtJdGVyYXRvcigpLmVxdWFscyhicmVha2VyKSkgeworICAgICAgICAgICAgZXJybG4oIlN0cmluZ1NlYXJjaChTdHJpbmcsIFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yLCBMb2NhbGUpICIKKyAgICAgICAgICAgICAgICAgICsgImVycm9yIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHNlYXJjaCA9IG5ldyBTdHJpbmdTZWFyY2gocGF0dGVybiwgdGV4dGl0ZXIsIG1fZnJfZnJfLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2VuX3dvcmRicmVha2VyXyk7CisgICAgICAgIGlmICghc2VhcmNoLmdldFBhdHRlcm4oKS5lcXVhbHMocGF0dGVybikKKyAgICAgICAgICAgIHx8ICFzZWFyY2guZ2V0VGFyZ2V0KCkuZXF1YWxzKHRleHRpdGVyKSAKKyAgICAgICAgICAgIHx8ICFzZWFyY2guZ2V0Q29sbGF0b3IoKS5lcXVhbHMobV9mcl9mcl8pCisgICAgICAgICAgICB8fCAhc2VhcmNoLmdldEJyZWFrSXRlcmF0b3IoKS5lcXVhbHMobV9lbl93b3JkYnJlYWtlcl8pKSB7CisgICAgICAgICAgICBlcnJsbigiU3RyaW5nU2VhcmNoKFN0cmluZywgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IsIExvY2FsZSkgIgorICAgICAgICAgICAgICAgICAgKyAiZXJyb3IiKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0QmFzaWMoKSB7CisgICAgICAgIGludCBjb3VudCA9IDA7CisgICAgICAgIHdoaWxlIChCQVNJQ1tjb3VudF0udGV4dCAhPSBudWxsKSB7CisgICAgICAgICAgICBpZiAoIWFzc2VydEVxdWFsKEJBU0lDW2NvdW50XSkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRXJyb3IgYXQgdGVzdCBudW1iZXIgIiArIGNvdW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvdW50ICsrOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RCcmVha0l0ZXJhdG9yKCkgeworICAgICAgICAKKyAgICAgICAgU3RyaW5nIHRleHQgPSBCUkVBS0lURVJBVE9SRVhBQ1RbMF0udGV4dDsKKyAgICAgICAgU3RyaW5nIHBhdHRlcm4gPSBCUkVBS0lURVJBVE9SRVhBQ1RbMF0ucGF0dGVybjsKKyAgICAgICAgU3RyaW5nU2VhcmNoIHN0cnNyY2ggPSBudWxsOworICAgICAgICB0cnkgeworICAgICAgICAgICAgc3Ryc3JjaCA9IG5ldyBTdHJpbmdTZWFyY2gocGF0dGVybiwgbmV3IFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yKHRleHQpLCBtX2VuX3VzXywgbnVsbCk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiRXJyb3Igb3BlbmluZyBzdHJpbmcgc2VhcmNoIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHN0cnNyY2guc2V0QnJlYWtJdGVyYXRvcihudWxsKTsKKyAgICAgICAgaWYgKHN0cnNyY2guZ2V0QnJlYWtJdGVyYXRvcigpICE9IG51bGwpIHsKKyAgICAgICAgICAgIGVycmxuKCJFcnJvciB1c2VhcmNoX2dldEJyZWFrSXRlcmF0b3IgcmV0dXJuZWQgd3Jvbmcgb2JqZWN0Iik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHN0cnNyY2guc2V0QnJlYWtJdGVyYXRvcihtX2VuX2NoYXJhY3RlcmJyZWFrZXJfKTsKKyAgICAgICAgaWYgKCFzdHJzcmNoLmdldEJyZWFrSXRlcmF0b3IoKS5lcXVhbHMobV9lbl9jaGFyYWN0ZXJicmVha2VyXykpIHsKKyAgICAgICAgICAgIGVycmxuKCJFcnJvciB1c2VhcmNoX2dldEJyZWFrSXRlcmF0b3IgcmV0dXJuZWQgd3Jvbmcgb2JqZWN0Iik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHN0cnNyY2guc2V0QnJlYWtJdGVyYXRvcihtX2VuX3dvcmRicmVha2VyXyk7CisgICAgICAgIGlmICghc3Ryc3JjaC5nZXRCcmVha0l0ZXJhdG9yKCkuZXF1YWxzKG1fZW5fd29yZGJyZWFrZXJfKSkgeworICAgICAgICAgICAgZXJybG4oIkVycm9yIHVzZWFyY2hfZ2V0QnJlYWtJdGVyYXRvciByZXR1cm5lZCB3cm9uZyBvYmplY3QiKTsKKyAgICAgICAgfQorICAgIAorICAgICAgICBpbnQgY291bnQgPSAwOworICAgICAgICB3aGlsZSAoY291bnQgPCA0KSB7CisgICAgICAgICAgICAvLyBzcGVjaWFsIHB1cnBvc2VzIGZvciB0ZXN0cyBudW1iZXJzIDAtMworICAgICAgICAgICAgU2VhcmNoRGF0YSAgICAgICAgc2VhcmNoICAgPSBCUkVBS0lURVJBVE9SRVhBQ1RbY291bnRdOyAgICAgCisgICAgICAgICAgICBSdWxlQmFzZWRDb2xsYXRvciBjb2xsYXRvciA9IGdldENvbGxhdG9yKHNlYXJjaC5jb2xsYXRvcik7CisgICAgICAgICAgICBCcmVha0l0ZXJhdG9yICAgICBicmVha2VyICA9IGdldEJyZWFrSXRlcmF0b3Ioc2VhcmNoLmJyZWFrZXIpOworICAgICAgICAgICAgICAgICAgLy9TdHJpbmdTZWFyY2ggICAgICBzdHJzcmNoOyAKKyAgICAgICAgCisgICAgICAgICAgICB0ZXh0ID0gc2VhcmNoLnRleHQ7CisgICAgICAgICAgICBwYXR0ZXJuID0gc2VhcmNoLnBhdHRlcm47IAorICAgICAgICAgICAgaWYgKGJyZWFrZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGJyZWFrZXIuc2V0VGV4dCh0ZXh0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbGxhdG9yLnNldFN0cmVuZ3RoKHNlYXJjaC5zdHJlbmd0aCk7CisgICAgICAgICAgICBzdHJzcmNoID0gbmV3IFN0cmluZ1NlYXJjaChwYXR0ZXJuLCBuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IodGV4dCksIGNvbGxhdG9yLCBicmVha2VyKTsKKyAgICAgICAgICAgIGlmIChzdHJzcmNoLmdldEJyZWFrSXRlcmF0b3IoKSAhPSBicmVha2VyKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkVycm9yIHNldHRpbmcgYnJlYWsgaXRlcmF0b3IiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghYXNzZXJ0RXF1YWxXaXRoU3RyaW5nU2VhcmNoKHN0cnNyY2gsIHNlYXJjaCkpIHsKKyAgICAgICAgICAgICAgICBjb2xsYXRvci5zZXRTdHJlbmd0aChDb2xsYXRvci5URVJUSUFSWSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzZWFyY2ggICA9IEJSRUFLSVRFUkFUT1JFWEFDVFtjb3VudCArIDFdOworICAgICAgICAgICAgYnJlYWtlciAgPSBnZXRCcmVha0l0ZXJhdG9yKHNlYXJjaC5icmVha2VyKTsKKyAgICAgICAgICAgIGlmIChicmVha2VyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBicmVha2VyLnNldFRleHQodGV4dCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdHJzcmNoLnNldEJyZWFrSXRlcmF0b3IoYnJlYWtlcik7CisgICAgICAgICAgICBpZiAoc3Ryc3JjaC5nZXRCcmVha0l0ZXJhdG9yKCkgIT0gYnJlYWtlcikgeworICAgICAgICAgICAgICAgIGVycmxuKCJFcnJvciBzZXR0aW5nIGJyZWFrIGl0ZXJhdG9yIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdHJzcmNoLnJlc2V0KCk7CisgICAgICAgICAgICBpZiAoIWFzc2VydEVxdWFsV2l0aFN0cmluZ1NlYXJjaChzdHJzcmNoLCBzZWFyY2gpKSB7CisgICAgICAgICAgICAgICAgIGVycmxuKCJFcnJvciBhdCB0ZXN0IG51bWJlciAiICsgY291bnQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY291bnQgKz0gMjsKKyAgICAgICAgfQorICAgICAgICBjb3VudCA9IDA7CisgICAgICAgIHdoaWxlIChCUkVBS0lURVJBVE9SRVhBQ1RbY291bnRdLnRleHQgIT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKCFhc3NlcnRFcXVhbChCUkVBS0lURVJBVE9SRVhBQ1RbY291bnRdKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJFcnJvciBhdCB0ZXN0IG51bWJlciAiICsgY291bnQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgIGNvdW50Kys7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdEJyZWFrSXRlcmF0b3JDYW5vbmljYWwoKSB7CisgICAgICAgIGludCAgICAgICAgY291bnQgID0gMDsKKyAgICAgICAgd2hpbGUgKGNvdW50IDwgNCkgeworICAgICAgICAgICAgLy8gc3BlY2lhbCBwdXJwb3NlcyBmb3IgdGVzdHMgbnVtYmVycyAwLTMKKyAgICAgICAgICAgIFNlYXJjaERhdGEgICAgIHNlYXJjaCAgID0gQlJFQUtJVEVSQVRPUkNBTk9OSUNBTFtjb3VudF07ICAgICAKKyAgICAgICAgCisgICAgICAgICAgICBTdHJpbmcgdGV4dCA9IHNlYXJjaC50ZXh0OworICAgICAgICAgICAgU3RyaW5nIHBhdHRlcm4gPSBzZWFyY2gucGF0dGVybjsKKyAgICAgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yIGNvbGxhdG9yID0gZ2V0Q29sbGF0b3Ioc2VhcmNoLmNvbGxhdG9yKTsKKyAgICAgICAgICAgIGNvbGxhdG9yLnNldFN0cmVuZ3RoKHNlYXJjaC5zdHJlbmd0aCk7CisgICAgCisgICAgICAgICAgICBCcmVha0l0ZXJhdG9yIGJyZWFrZXIgPSBnZXRCcmVha0l0ZXJhdG9yKHNlYXJjaC5icmVha2VyKTsKKyAgICAgICAgICAgIFN0cmluZ1NlYXJjaCAgc3Ryc3JjaCA9IG51bGw7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHN0cnNyY2ggPSBuZXcgU3RyaW5nU2VhcmNoKHBhdHRlcm4sIG5ldyBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvcih0ZXh0KSwgY29sbGF0b3IsIGJyZWFrZXIpOworICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRXJyb3IgY3JlYXRpbmcgc3RyaW5nIHNlYXJjaCBkYXRhIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3Ryc3JjaC5zZXRDYW5vbmljYWwodHJ1ZSk7CisgICAgICAgICAgICBpZiAoIXN0cnNyY2guZ2V0QnJlYWtJdGVyYXRvcigpLmVxdWFscyhicmVha2VyKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJFcnJvciBzZXR0aW5nIGJyZWFrIGl0ZXJhdG9yIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFhc3NlcnRFcXVhbFdpdGhTdHJpbmdTZWFyY2goc3Ryc3JjaCwgc2VhcmNoKSkgeworICAgICAgICAgICAgICAgIGNvbGxhdG9yLnNldFN0cmVuZ3RoKENvbGxhdG9yLlRFUlRJQVJZKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzZWFyY2ggID0gQlJFQUtJVEVSQVRPUkVYQUNUW2NvdW50ICsgMV07CisgICAgICAgICAgICBicmVha2VyID0gZ2V0QnJlYWtJdGVyYXRvcihzZWFyY2guYnJlYWtlcik7CisgICAgICAgICAgICBicmVha2VyLnNldFRleHQoc3Ryc3JjaC5nZXRUYXJnZXQoKSk7CisgICAgICAgICAgICBzdHJzcmNoLnNldEJyZWFrSXRlcmF0b3IoYnJlYWtlcik7CisgICAgICAgICAgICBpZiAoIXN0cnNyY2guZ2V0QnJlYWtJdGVyYXRvcigpLmVxdWFscyhicmVha2VyKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJFcnJvciBzZXR0aW5nIGJyZWFrIGl0ZXJhdG9yIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3Ryc3JjaC5yZXNldCgpOworICAgICAgICAgICAgc3Ryc3JjaC5zZXRDYW5vbmljYWwodHJ1ZSk7CisgICAgICAgICAgICBpZiAoIWFzc2VydEVxdWFsV2l0aFN0cmluZ1NlYXJjaChzdHJzcmNoLCBzZWFyY2gpKSB7CisgICAgICAgICAgICAgICAgIGVycmxuKCJFcnJvciBhdCB0ZXN0IG51bWJlciAiICsgY291bnQpOworICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb3VudCArPSAyOworICAgICAgICB9CisgICAgICAgIGNvdW50ID0gMDsKKyAgICAgICAgd2hpbGUgKEJSRUFLSVRFUkFUT1JDQU5PTklDQUxbY291bnRdLnRleHQgIT0gbnVsbCkgeworICAgICAgICAgICAgIGlmICghYXNzZXJ0RXF1YWwoQlJFQUtJVEVSQVRPUkNBTk9OSUNBTFtjb3VudF0pKSB7CisgICAgICAgICAgICAgICAgIGVycmxuKCJFcnJvciBhdCB0ZXN0IG51bWJlciAiICsgY291bnQpOworICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIGNvdW50Kys7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdENhbm9uaWNhbCgpIHsKKyAgICAgICAgaW50IGNvdW50ID0gMDsKKyAgICAgICAgd2hpbGUgKEJBU0lDQ0FOT05JQ0FMW2NvdW50XS50ZXh0ICE9IG51bGwpIHsKKyAgICAgICAgCWlmICghYXNzZXJ0Q2Fub25pY2FsRXF1YWwoQkFTSUNDQU5PTklDQUxbY291bnRdKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJFcnJvciBhdCB0ZXN0IG51bWJlciAiICsgY291bnQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY291bnQgKys7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdENvbGxhdG9yKCkgeworICAgICAgICAvLyB0ZXN0IGNvbGxhdG9yIHRoYXQgdGhpbmtzICJvIiBhbmQgInAiIGFyZSB0aGUgc2FtZSB0aGluZworICAgICAgICBTdHJpbmcgdGV4dCA9IENPTExBVE9SWzBdLnRleHQ7CisgICAgICAgIFN0cmluZyBwYXR0ZXJuICA9IENPTExBVE9SWzBdLnBhdHRlcm47CisgICAgICAgIFN0cmluZ1NlYXJjaCBzdHJzcmNoID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHN0cnNyY2ggPSBuZXcgU3RyaW5nU2VhcmNoKHBhdHRlcm4sIG5ldyBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvcih0ZXh0KSwgbV9lbl91c18sIG51bGwpOyAgICAKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJFcnJvciBvcGVuaW5nIHN0cmluZyBzZWFyY2ggIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFhc3NlcnRFcXVhbFdpdGhTdHJpbmdTZWFyY2goc3Ryc3JjaCwgQ09MTEFUT1JbMF0pKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgU3RyaW5nIHJ1bGVzID0gVEVTVENPTExBVE9SUlVMRTsKKyAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IgdGFpbG9yZWQgPSBudWxsOworICAgICAgICB0cnkgeworICAgICAgICAgICAgdGFpbG9yZWQgPSBuZXcgUnVsZUJhc2VkQ29sbGF0b3IocnVsZXMpOworICAgICAgICAgICAgdGFpbG9yZWQuc2V0U3RyZW5ndGgoQ09MTEFUT1JbMV0uc3RyZW5ndGgpOyAKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJFcnJvciBvcGVuaW5nIHJ1bGUgYmFzZWQgY29sbGF0b3IgIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgc3Ryc3JjaC5zZXRDb2xsYXRvcih0YWlsb3JlZCk7CisgICAgICAgIGlmICghc3Ryc3JjaC5nZXRDb2xsYXRvcigpLmVxdWFscyh0YWlsb3JlZCkpIHsKKyAgICAgICAgICAgIGVycmxuKCJFcnJvciBzZXR0aW5nIHJ1bGUgYmFzZWQgY29sbGF0b3IiKTsKKyAgICAgICAgfQorICAgICAgICBzdHJzcmNoLnJlc2V0KCk7CisgICAgICAgIGlmICghYXNzZXJ0RXF1YWxXaXRoU3RyaW5nU2VhcmNoKHN0cnNyY2gsIENPTExBVE9SWzFdKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9IAorICAgICAgICBzdHJzcmNoLnNldENvbGxhdG9yKG1fZW5fdXNfKTsKKyAgICAgICAgc3Ryc3JjaC5yZXNldCgpOworICAgICAgICBpZiAoIXN0cnNyY2guZ2V0Q29sbGF0b3IoKS5lcXVhbHMobV9lbl91c18pKSB7CisgICAgICAgICAgICBlcnJsbigiRXJyb3Igc2V0dGluZyBydWxlIGJhc2VkIGNvbGxhdG9yIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFhc3NlcnRFcXVhbFdpdGhTdHJpbmdTZWFyY2goc3Ryc3JjaCwgQ09MTEFUT1JbMF0pKSB7CisgICAgICAgICAgIGVycmxuKCJFcnJvciBzZWFyY2hpbmcgY29sbGF0b3IgdGVzdCIpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RDb2xsYXRvckNhbm9uaWNhbCgpIHsKKyAgICAgICAgLyogdGVzdCBjb2xsYXRvciB0aGF0IHRoaW5rcyAibyIgYW5kICJwIiBhcmUgdGhlIHNhbWUgdGhpbmcgKi8KKyAgICAgICAgU3RyaW5nIHRleHQgPSBDT0xMQVRPUkNBTk9OSUNBTFswXS50ZXh0OworICAgICAgICBTdHJpbmcgcGF0dGVybiA9IENPTExBVE9SQ0FOT05JQ0FMWzBdLnBhdHRlcm47CisgICAgCisgICAgICAgIFN0cmluZ1NlYXJjaCBzdHJzcmNoID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHN0cnNyY2ggPSBuZXcgU3RyaW5nU2VhcmNoKHBhdHRlcm4sIG5ldyBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvcih0ZXh0KSwgbV9lbl91c18sIG51bGwpOworICAgICAgICAgICAgc3Ryc3JjaC5zZXRDYW5vbmljYWwodHJ1ZSk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiRXJyb3Igb3BlbmluZyBzdHJpbmcgc2VhcmNoICIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoIWFzc2VydEVxdWFsV2l0aFN0cmluZ1NlYXJjaChzdHJzcmNoLCBDT0xMQVRPUkNBTk9OSUNBTFswXSkpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIAorICAgICAgICBTdHJpbmcgcnVsZXMgPSBURVNUQ09MTEFUT1JSVUxFOworICAgICAgICBSdWxlQmFzZWRDb2xsYXRvciB0YWlsb3JlZCA9IG51bGw7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB0YWlsb3JlZCA9IG5ldyBSdWxlQmFzZWRDb2xsYXRvcihydWxlcyk7CisgICAgICAgICAgICB0YWlsb3JlZC5zZXRTdHJlbmd0aChDT0xMQVRPUkNBTk9OSUNBTFsxXS5zdHJlbmd0aCk7CisgICAgICAgICAgICB0YWlsb3JlZC5zZXREZWNvbXBvc2l0aW9uKENvbGxhdG9yLkNBTk9OSUNBTF9ERUNPTVBPU0lUSU9OKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJFcnJvciBvcGVuaW5nIHJ1bGUgYmFzZWQgY29sbGF0b3IgIik7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgc3Ryc3JjaC5zZXRDb2xsYXRvcih0YWlsb3JlZCk7CisgICAgICAgIGlmICghc3Ryc3JjaC5nZXRDb2xsYXRvcigpLmVxdWFscyh0YWlsb3JlZCkpIHsKKyAgICAgICAgICAgIGVycmxuKCJFcnJvciBzZXR0aW5nIHJ1bGUgYmFzZWQgY29sbGF0b3IiKTsKKyAgICAgICAgfQorICAgICAgICBzdHJzcmNoLnJlc2V0KCk7CisgICAgICAgIHN0cnNyY2guc2V0Q2Fub25pY2FsKHRydWUpOworICAgICAgICBpZiAoIWFzc2VydEVxdWFsV2l0aFN0cmluZ1NlYXJjaChzdHJzcmNoLCBDT0xMQVRPUkNBTk9OSUNBTFsxXSkpIHsKKyAgICAgICAgfQorICAgICAgICBzdHJzcmNoLnNldENvbGxhdG9yKG1fZW5fdXNfKTsKKyAgICAgICAgc3Ryc3JjaC5yZXNldCgpOworICAgICAgICBpZiAoIXN0cnNyY2guZ2V0Q29sbGF0b3IoKS5lcXVhbHMobV9lbl91c18pKSB7CisgICAgICAgICAgICBlcnJsbigiRXJyb3Igc2V0dGluZyBydWxlIGJhc2VkIGNvbGxhdG9yIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFhc3NlcnRFcXVhbFdpdGhTdHJpbmdTZWFyY2goc3Ryc3JjaCwgQ09MTEFUT1JDQU5PTklDQUxbMF0pKSB7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdENvbXBvc2l0ZUJvdW5kYXJpZXMoKSB7CisgICAgICAgIGludCBjb3VudCA9IDA7CisgICAgICAgIHdoaWxlIChDT01QT1NJVEVCT1VOREFSSUVTW2NvdW50XS50ZXh0ICE9IG51bGwpIHsgCisgICAgICAgICAgICAvLyBsb2dsbigiY29tcG9zaXRlICIgKyBjb3VudCk7CisgICAgICAgICAgICBpZiAoIWFzc2VydEVxdWFsKENPTVBPU0lURUJPVU5EQVJJRVNbY291bnRdKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJFcnJvciBhdCB0ZXN0IG51bWJlciAiICsgY291bnQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY291bnQrKzsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0Q29tcG9zaXRlQm91bmRhcmllc0Nhbm9uaWNhbCgpIHsKKyAgICAgICAgaW50IGNvdW50ID0gMDsKKyAgICAgICAgd2hpbGUgKENPTVBPU0lURUJPVU5EQVJJRVNDQU5PTklDQUxbY291bnRdLnRleHQgIT0gbnVsbCkgeyAKKyAgICAgICAgICAgIC8vIGxvZ2xuKCJjb21wb3NpdGUgIiArIGNvdW50KTsKKyAgICAgICAgICAgIGlmICghYXNzZXJ0Q2Fub25pY2FsRXF1YWwoQ09NUE9TSVRFQk9VTkRBUklFU0NBTk9OSUNBTFtjb3VudF0pKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkVycm9yIGF0IHRlc3QgbnVtYmVyICIgKyBjb3VudCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb3VudCsrOworICAgICAgICB9IAorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0Q29udHJhY3Rpb24oKSB7CisgICAgICAgIFN0cmluZyBydWxlcyA9IENPTlRSQUNUSU9OUlVMRTsKKyAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IgY29sbGF0b3IgPSBudWxsOworICAgICAgICB0cnkgeworICAgICAgICAgICAgY29sbGF0b3IgPSBuZXcgUnVsZUJhc2VkQ29sbGF0b3IocnVsZXMpOyAKKyAgICAgICAgICAgIGNvbGxhdG9yLnNldFN0cmVuZ3RoKENvbGxhdG9yLlRFUlRJQVJZKTsKKyAgICAgICAgICAgIGNvbGxhdG9yLnNldERlY29tcG9zaXRpb24oQ29sbGF0b3IuQ0FOT05JQ0FMX0RFQ09NUE9TSVRJT04pOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkVycm9yIG9wZW5pbmcgY29sbGF0b3IgIik7CisgICAgICAgIH0KKyAgICAgICAgU3RyaW5nIHRleHQgPSAidGV4dCI7CisgICAgICAgIFN0cmluZyBwYXR0ZXJuID0gInBhdHRlcm4iOworICAgICAgICBTdHJpbmdTZWFyY2ggc3Ryc3JjaCA9IG51bGw7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBzdHJzcmNoID0gbmV3IFN0cmluZ1NlYXJjaChwYXR0ZXJuLCBuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IodGV4dCksIGNvbGxhdG9yLCBudWxsKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJFcnJvciBvcGVuaW5nIHN0cmluZyBzZWFyY2ggIik7CisgICAgICAgIH0gICAKKyAgICAgICAgCisgICAgICAgIGludCBjb3VudCA9IDA7CisgICAgICAgIHdoaWxlIChDT05UUkFDVElPTltjb3VudF0udGV4dCAhPSBudWxsKSB7CisgICAgICAgICAgICB0ZXh0ID0gQ09OVFJBQ1RJT05bY291bnRdLnRleHQ7CisgICAgICAgICAgICBwYXR0ZXJuID0gQ09OVFJBQ1RJT05bY291bnRdLnBhdHRlcm47CisgICAgICAgICAgICBzdHJzcmNoLnNldFRhcmdldChuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IodGV4dCkpOworICAgICAgICAgICAgc3Ryc3JjaC5zZXRQYXR0ZXJuKHBhdHRlcm4pOworICAgICAgICAgICAgaWYgKCFhc3NlcnRFcXVhbFdpdGhTdHJpbmdTZWFyY2goc3Ryc3JjaCwgQ09OVFJBQ1RJT05bY291bnRdKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJFcnJvciBhdCB0ZXN0IG51bWJlciAiICsgY291bnQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY291bnQrKzsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0Q29udHJhY3Rpb25DYW5vbmljYWwoKSB7CisgICAgICAgIFN0cmluZyBydWxlcyA9IENPTlRSQUNUSU9OUlVMRTsKKyAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IgY29sbGF0b3IgPSBudWxsOworICAgICAgICB0cnkgeworICAgICAgICAgICAgY29sbGF0b3IgPSBuZXcgUnVsZUJhc2VkQ29sbGF0b3IocnVsZXMpOworICAgICAgICAgICAgY29sbGF0b3Iuc2V0U3RyZW5ndGgoQ29sbGF0b3IuVEVSVElBUlkpOworICAgICAgICAgICAgY29sbGF0b3Iuc2V0RGVjb21wb3NpdGlvbihDb2xsYXRvci5DQU5PTklDQUxfREVDT01QT1NJVElPTik7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiRXJyb3Igb3BlbmluZyBjb2xsYXRvciAiKTsKKyAgICAgICAgfQorICAgICAgICBTdHJpbmcgdGV4dCA9ICJ0ZXh0IjsKKyAgICAgICAgU3RyaW5nIHBhdHRlcm4gPSAicGF0dGVybiI7CisgICAgICAgIFN0cmluZ1NlYXJjaCBzdHJzcmNoID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHN0cnNyY2ggPSBuZXcgU3RyaW5nU2VhcmNoKHBhdHRlcm4sIG5ldyBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvcih0ZXh0KSwgY29sbGF0b3IsIG51bGwpOworICAgICAgICAgICAgc3Ryc3JjaC5zZXRDYW5vbmljYWwodHJ1ZSk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiRXJyb3Igb3BlbmluZyBzdHJpbmcgc2VhcmNoIik7CisgICAgICAgIH0gICAKKyAgICAgICAgCisgICAgICAgIGludCBjb3VudCA9IDA7CisgICAgICAgIHdoaWxlIChDT05UUkFDVElPTkNBTk9OSUNBTFtjb3VudF0udGV4dCAhPSBudWxsKSB7CisgICAgICAgICAgICB0ZXh0ID0gQ09OVFJBQ1RJT05DQU5PTklDQUxbY291bnRdLnRleHQ7CisgICAgICAgICAgICBwYXR0ZXJuID0gQ09OVFJBQ1RJT05DQU5PTklDQUxbY291bnRdLnBhdHRlcm47CisgICAgICAgICAgICBzdHJzcmNoLnNldFRhcmdldChuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IodGV4dCkpOworICAgICAgICAgICAgc3Ryc3JjaC5zZXRQYXR0ZXJuKHBhdHRlcm4pOworICAgICAgICAgICAgaWYgKCFhc3NlcnRFcXVhbFdpdGhTdHJpbmdTZWFyY2goc3Ryc3JjaCwgQ09OVFJBQ1RJT05DQU5PTklDQUxbY291bnRdKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJFcnJvciBhdCB0ZXN0IG51bWJlciAiICsgY291bnQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY291bnQrKzsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0R2V0TWF0Y2goKSB7CisgICAgICAgIFNlYXJjaERhdGEgc2VhcmNoID0gTUFUQ0hbMF07CisgICAgICAgIFN0cmluZyB0ZXh0ID0gc2VhcmNoLnRleHQ7CisgICAgICAgIFN0cmluZyBwYXR0ZXJuID0gc2VhcmNoLnBhdHRlcm47CisgICAgCisgICAgICAgIFN0cmluZ1NlYXJjaCBzdHJzcmNoID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHN0cnNyY2ggPSBuZXcgU3RyaW5nU2VhcmNoKHBhdHRlcm4sIG5ldyBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvcih0ZXh0KSwgbV9lbl91c18sIG51bGwpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkVycm9yIG9wZW5pbmcgc3RyaW5nIHNlYXJjaCAiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaW50ICAgICAgICAgICBjb3VudCAgICAgID0gMDsKKyAgICAgICAgaW50ICAgbWF0Y2hpbmRleCA9IHNlYXJjaC5vZmZzZXRbY291bnRdOworICAgICAgICBTdHJpbmcgbWF0Y2h0ZXh0OworICAgICAgICB3aGlsZSAobWF0Y2hpbmRleCA+PSAwKSB7CisgICAgICAgICAgICBpbnQgbWF0Y2hsZW5ndGggPSBzZWFyY2guc2l6ZVtjb3VudF07CisgICAgICAgICAgICBzdHJzcmNoLm5leHQoKTsKKyAgICAgICAgICAgIGlmIChtYXRjaGluZGV4ICE9IHN0cnNyY2guZ2V0TWF0Y2hTdGFydCgpIHx8IAorICAgICAgICAgICAgICAgIG1hdGNobGVuZ3RoICE9IHN0cnNyY2guZ2V0TWF0Y2hMZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJUZXh0OiAiICsgc2VhcmNoLnRleHQpOworICAgICAgICAgICAgICAgIGVycmxuKCJQYXR0ZXJuOiAiICsgc3Ryc3JjaC5nZXRQYXR0ZXJuKCkpOworICAgICAgICAgICAgICAgIGVycmxuKCJFcnJvciBtYXRjaCBmb3VuZCBhdCAiICsgc3Ryc3JjaC5nZXRNYXRjaFN0YXJ0KCkgKyAiLCAiICsgc3Ryc3JjaC5nZXRNYXRjaExlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb3VudCsrOworICAgICAgICAgICAgCisgICAgICAgICAgICBtYXRjaHRleHQgPSBzdHJzcmNoLmdldE1hdGNoZWRUZXh0KCk7CisgICAgICAgICAgICBpZiAobWF0Y2h0ZXh0Lmxlbmd0aCgpICE9IG1hdGNobGVuZ3RoKXsKKyAgICAgICAgICAgICAgICBlcnJsbigiRXJyb3IgZ2V0dGluZyBtYXRjaCB0ZXh0Iik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtYXRjaGluZGV4ID0gc2VhcmNoLm9mZnNldFtjb3VudF07CisgICAgICAgIH0KKyAgICAgICAgc3Ryc3JjaC5uZXh0KCk7CisgICAgICAgIGlmIChzdHJzcmNoLmdldE1hdGNoU3RhcnQoKSAgIT0gU3RyaW5nU2VhcmNoLkRPTkUgfHwgCisgICAgICAgICAgICBzdHJzcmNoLmdldE1hdGNoTGVuZ3RoKCkgIT0gMCkgeworICAgICAgICAgICAgZXJybG4oIkVycm9yIGVuZCBvZiBtYXRjaCBub3QgZm91bmQiKTsKKyAgICAgICAgfQorICAgICAgICBtYXRjaHRleHQgPSBzdHJzcmNoLmdldE1hdGNoZWRUZXh0KCk7CisgICAgICAgIGlmIChtYXRjaHRleHQgIT0gbnVsbCkgeworICAgICAgICAgICAgZXJybG4oIkVycm9yIGdldHRpbmcgbnVsbCBtYXRjaGVzIik7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdEdldFNldEF0dHJpYnV0ZSgpIHsKKyAgICAgICAgU3RyaW5nICBwYXR0ZXJuID0gInBhdHRlcm4iOworICAgICAgICBTdHJpbmcgIHRleHQgPSAidGV4dCI7CisgICAgICAgIFN0cmluZ1NlYXJjaCAgc3Ryc3JjaCA9IG51bGw7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBzdHJzcmNoID0gbmV3IFN0cmluZ1NlYXJjaChwYXR0ZXJuLCBuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IodGV4dCksIG1fZW5fdXNfLCBudWxsKTsgCisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiRXJyb3Igb3BlbmluZyBzZWFyY2giKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIAorICAgICAgICBpZiAoc3Ryc3JjaC5pc092ZXJsYXBwaW5nKCkpIHsKKyAgICAgICAgICAgIGVycmxuKCJFcnJvciBkZWZhdWx0IG92ZXJsYXBpbmcgc2hvdWxkIGJlIGZhbHNlIik7CisgICAgICAgIH0KKyAgICAgICAgc3Ryc3JjaC5zZXRPdmVybGFwcGluZyh0cnVlKTsKKyAgICAgICAgaWYgKCFzdHJzcmNoLmlzT3ZlcmxhcHBpbmcoKSkgeworICAgICAgICAgICAgZXJybG4oIkVycm9yIHNldHRpbmcgb3ZlcmxhcCB0cnVlIik7CisgICAgICAgIH0KKyAgICAgICAgc3Ryc3JjaC5zZXRPdmVybGFwcGluZyhmYWxzZSk7CisgICAgICAgIGlmIChzdHJzcmNoLmlzT3ZlcmxhcHBpbmcoKSkgeworICAgICAgICAgICAgZXJybG4oIkVycm9yIHNldHRpbmcgb3ZlcmxhcCBmYWxzZSIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzdHJzcmNoLnNldENhbm9uaWNhbCh0cnVlKTsKKyAgICAgICAgaWYgKCFzdHJzcmNoLmlzQ2Fub25pY2FsKCkpIHsKKyAgICAgICAgICAgIGVycmxuKCJFcnJvciBzZXR0aW5nIGNhbm9uaWNhbCBtYXRjaCB0cnVlIik7CisgICAgICAgIH0KKyAgICAgICAgc3Ryc3JjaC5zZXRDYW5vbmljYWwoZmFsc2UpOworICAgICAgICBpZiAoc3Ryc3JjaC5pc0Nhbm9uaWNhbCgpKSB7CisgICAgICAgICAgICBlcnJsbigiRXJyb3Igc2V0dGluZyBjYW5vbmljYWwgbWF0Y2ggZmFsc2UiKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdEdldFNldE9mZnNldCgpIHsKKyAgICAgICAgU3RyaW5nICBwYXR0ZXJuID0gIjEyMzQ1Njc4OTAxMjM0NTYiOworICAgICAgICBTdHJpbmcgIHRleHQgID0gIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyIjsKKyAgICAgICAgU3RyaW5nU2VhcmNoICBzdHJzcmNoID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHN0cnNyY2ggPSBuZXcgU3RyaW5nU2VhcmNoKHBhdHRlcm4sIG5ldyBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvcih0ZXh0KSwgbV9lbl91c18sIG51bGwpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkVycm9yIG9wZW5pbmcgc2VhcmNoIik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLyogdGVzdGluZyBvdXQgb2YgYm91bmRzIGVycm9yICovCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBzdHJzcmNoLnNldEluZGV4KC0xKTsKKyAgICAgICAgICAgIGVycmxuKCJFcnJvciBleHBlY3Rpbmcgc2V0IG9mZnNldCBlcnJvciIpOworICAgICAgICB9IGNhdGNoIChJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIGUpIHt9CisgICAgICAgIAorICAgICAgICB0cnkgeworICAgICAgICAgICAgc3Ryc3JjaC5zZXRJbmRleCgxMjgpOworICAgICAgICAgICAgZXJybG4oIkVycm9yIGV4cGVjdGluZyBzZXQgb2Zmc2V0IGVycm9yIik7CisgICAgICAgIH0gY2F0Y2ggKEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gZSkge30KKyAgICAgICAgCisgICAgICAgIGludCBpbmRleCAgID0gMDsKKyAgICAgICAgd2hpbGUgKEJBU0lDW2luZGV4XS50ZXh0ICE9IG51bGwpIHsKKyAgICAgICAgICAgIFNlYXJjaERhdGEgIHNlYXJjaCAgICAgID0gQkFTSUNbaW5kZXggKytdOworICAgICAgICAKKyAgICAgICAgICAgIHRleHQgPXNlYXJjaC50ZXh0OworICAgICAgICAgICAgcGF0dGVybiA9IHNlYXJjaC5wYXR0ZXJuOworICAgICAgICAgICAgc3Ryc3JjaC5zZXRUYXJnZXQobmV3IFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yKHRleHQpKTsKKyAgICAgICAgICAgIHN0cnNyY2guc2V0UGF0dGVybihwYXR0ZXJuKTsKKyAgICAgICAgICAgIHN0cnNyY2guZ2V0Q29sbGF0b3IoKS5zZXRTdHJlbmd0aChzZWFyY2guc3RyZW5ndGgpOworICAgICAgICAgICAgc3Ryc3JjaC5yZXNldCgpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpbnQgY291bnQgPSAwOworICAgICAgICAgICAgaW50IG1hdGNoaW5kZXggID0gc2VhcmNoLm9mZnNldFtjb3VudF07CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHdoaWxlIChtYXRjaGluZGV4ID49IDApIHsKKyAgICAgICAgICAgICAgICBpbnQgbWF0Y2hsZW5ndGggPSBzZWFyY2guc2l6ZVtjb3VudF07CisgICAgICAgICAgICAgICAgc3Ryc3JjaC5uZXh0KCk7CisgICAgICAgICAgICAgICAgaWYgKG1hdGNoaW5kZXggIT0gc3Ryc3JjaC5nZXRNYXRjaFN0YXJ0KCkgfHwgCisgICAgICAgICAgICAgICAgICAgIG1hdGNobGVuZ3RoICE9IHN0cnNyY2guZ2V0TWF0Y2hMZW5ndGgoKSkgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigiVGV4dDogIiArIHRleHQpOworICAgICAgICAgICAgICAgICAgICBlcnJsbigiUGF0dGVybjogIiArIHN0cnNyY2guZ2V0UGF0dGVybigpKTsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIkVycm9yIG1hdGNoIGZvdW5kIGF0ICIgKyBzdHJzcmNoLmdldE1hdGNoU3RhcnQoKSArICIsICIgKyBzdHJzcmNoLmdldE1hdGNoTGVuZ3RoKCkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1hdGNoaW5kZXggPSBzZWFyY2gub2Zmc2V0W2NvdW50ICsgMV0gPT0gLTEgPyAtMSA6IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2gub2Zmc2V0W2NvdW50ICsgMl07CisgICAgICAgICAgICAgICAgaWYgKHNlYXJjaC5vZmZzZXRbY291bnQgKyAxXSAhPSAtMSkgeworICAgICAgICAgICAgICAgICAgICBzdHJzcmNoLnNldEluZGV4KHNlYXJjaC5vZmZzZXRbY291bnQgKyAxXSArIDEpOworICAgICAgICAgICAgICAgICAgICBpZiAoc3Ryc3JjaC5nZXRJbmRleCgpICE9IHNlYXJjaC5vZmZzZXRbY291bnQgKyAxXSArIDEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycmxuKCJFcnJvciBzZXR0aW5nIG9mZnNldFxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY291bnQgKz0gMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0cnNyY2gubmV4dCgpOworICAgICAgICAgICAgaWYgKHN0cnNyY2guZ2V0TWF0Y2hTdGFydCgpICE9IFN0cmluZ1NlYXJjaC5ET05FKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIlRleHQ6ICIgKyB0ZXh0KTsKKyAgICAgICAgICAgICAgICBlcnJsbigiUGF0dGVybjogIiArIHN0cnNyY2guZ2V0UGF0dGVybigpKTsKKyAgICAgICAgICAgICAgICBlcnJsbigiRXJyb3IgbWF0Y2ggZm91bmQgYXQgIiArIHN0cnNyY2guZ2V0TWF0Y2hTdGFydCgpICsgIiwgIiArIHN0cnNyY2guZ2V0TWF0Y2hMZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHN0cnNyY2guZ2V0Q29sbGF0b3IoKS5zZXRTdHJlbmd0aChDb2xsYXRvci5URVJUSUFSWSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RHZXRTZXRPZmZzZXRDYW5vbmljYWwoKSB7CisgICAgICAgIAorICAgICAgICBTdHJpbmcgIHRleHQgPSAidGV4dCI7CisgICAgICAgIFN0cmluZyAgcGF0dGVybiA9ICJwYXR0ZXJuIjsKKyAgICAgICAgU3RyaW5nU2VhcmNoICBzdHJzcmNoID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHN0cnNyY2ggPSBuZXcgU3RyaW5nU2VhcmNoKHBhdHRlcm4sIG5ldyBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvcih0ZXh0KSwgbV9lbl91c18sIG51bGwpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkZhaWwgdG8gb3BlbiBTdHJpbmdTZWFyY2ghIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgc3Ryc3JjaC5zZXRDYW5vbmljYWwodHJ1ZSk7CisgICAgICAgIC8qIHRlc3Rpbmcgb3V0IG9mIGJvdW5kcyBlcnJvciAqLworICAgICAgICB0cnkgeworICAgICAgICAgICAgc3Ryc3JjaC5zZXRJbmRleCgtMSk7CisgICAgICAgICAgICBlcnJsbigiRXJyb3IgZXhwZWN0aW5nIHNldCBvZmZzZXQgZXJyb3IiKTsKKyAgICAgICAgfSBjYXRjaCAoSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiBlKSB7fQorICAgICAgICB0cnkgeworICAgICAgICAgICAgc3Ryc3JjaC5zZXRJbmRleCgxMjgpOworICAgICAgICAgICAgZXJybG4oIkVycm9yIGV4cGVjdGluZyBzZXQgb2Zmc2V0IGVycm9yIik7CisgICAgICAgIH0gY2F0Y2ggKEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gZSkge30KKyAgICAgICAgCisgICAgICAgIGludCAgIGluZGV4ICAgPSAwOworICAgICAgICB3aGlsZSAoQkFTSUNDQU5PTklDQUxbaW5kZXhdLnRleHQgIT0gbnVsbCkgeworICAgICAgICAgICAgU2VhcmNoRGF0YSAgc2VhcmNoICAgICAgPSBCQVNJQ0NBTk9OSUNBTFtpbmRleCArK107CisgICAgICAgICAgICBpZiAoQkFTSUNDQU5PTklDQUxbaW5kZXhdLnRleHQgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIC8vIHNraXAgdGhlIGxhc3Qgb25lIAorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICB0ZXh0ID0gc2VhcmNoLnRleHQ7CisgICAgICAgICAgICBwYXR0ZXJuID0gc2VhcmNoLnBhdHRlcm47CisgICAgICAgICAgICBzdHJzcmNoLnNldFRhcmdldChuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IodGV4dCkpOworICAgICAgICAgICAgc3Ryc3JjaC5zZXRQYXR0ZXJuKHBhdHRlcm4pOworICAgICAgICAgICAgaW50ICAgICAgICAgY291bnQgICAgICAgPSAwOworICAgICAgICAgICAgaW50IG1hdGNoaW5kZXggID0gc2VhcmNoLm9mZnNldFtjb3VudF07CisgICAgICAgICAgICB3aGlsZSAobWF0Y2hpbmRleCA+PSAwKSB7CisgICAgICAgICAgICAgICAgaW50IG1hdGNobGVuZ3RoID0gc2VhcmNoLnNpemVbY291bnRdOworICAgICAgICAgICAgICAgIHN0cnNyY2gubmV4dCgpOworICAgICAgICAgICAgICAgIGlmIChtYXRjaGluZGV4ICE9IHN0cnNyY2guZ2V0TWF0Y2hTdGFydCgpIHx8IAorICAgICAgICAgICAgICAgICAgICBtYXRjaGxlbmd0aCAhPSBzdHJzcmNoLmdldE1hdGNoTGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIlRleHQ6ICIgKyB0ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIlBhdHRlcm46ICIgKyBzdHJzcmNoLmdldFBhdHRlcm4oKSk7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJFcnJvciBtYXRjaCBmb3VuZCBhdCAiICsgc3Ryc3JjaC5nZXRNYXRjaFN0YXJ0KCkgKyAiLCAiICsgc3Ryc3JjaC5nZXRNYXRjaExlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtYXRjaGluZGV4ID0gc2VhcmNoLm9mZnNldFtjb3VudCArIDFdID09IC0xID8gLTEgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoLm9mZnNldFtjb3VudCArIDJdOworICAgICAgICAgICAgICAgIGlmIChzZWFyY2gub2Zmc2V0W2NvdW50ICsgMV0gIT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgc3Ryc3JjaC5zZXRJbmRleChzZWFyY2gub2Zmc2V0W2NvdW50ICsgMV0gKyAxKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0cnNyY2guZ2V0SW5kZXgoKSAhPSBzZWFyY2gub2Zmc2V0W2NvdW50ICsgMV0gKyAxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbigiRXJyb3Igc2V0dGluZyBvZmZzZXQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBjb3VudCArPSAyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3Ryc3JjaC5uZXh0KCk7CisgICAgICAgICAgICBpZiAoc3Ryc3JjaC5nZXRNYXRjaFN0YXJ0KCkgIT0gU3RyaW5nU2VhcmNoLkRPTkUpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiVGV4dDogIiArIHRleHQpOworICAgICAgICAgICAgICAgIGVycmxuKCJQYXR0ZXJuOiAlcyIgKyBzdHJzcmNoLmdldFBhdHRlcm4oKSk7CisgICAgICAgICAgICAgICAgZXJybG4oIkVycm9yIG1hdGNoIGZvdW5kIGF0ICIgKyBzdHJzcmNoLmdldE1hdGNoU3RhcnQoKSArICIsICIgKyBzdHJzcmNoLmdldE1hdGNoTGVuZ3RoKCkpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBzdHJzcmNoLmdldENvbGxhdG9yKCkuc2V0U3RyZW5ndGgoQ29sbGF0b3IuVEVSVElBUlkpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0SWdub3JhYmxlKCkgeworICAgICAgICBTdHJpbmcgcnVsZXMgPSBJR05PUkFCTEVSVUxFOworICAgICAgICBpbnQgICAgICAgIGNvdW50ICA9IDA7CisgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yIGNvbGxhdG9yID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNvbGxhdG9yID0gbmV3IFJ1bGVCYXNlZENvbGxhdG9yKHJ1bGVzKTsKKyAgICAgICAgICAgIGNvbGxhdG9yLnNldFN0cmVuZ3RoKElHTk9SQUJMRVtjb3VudF0uc3RyZW5ndGgpOworICAgICAgICAgICAgY29sbGF0b3Iuc2V0RGVjb21wb3NpdGlvbihDb2xsYXRvci5DQU5PTklDQUxfREVDT01QT1NJVElPTik7ICAKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJFcnJvciBvcGVuaW5nIGNvbGxhdG9yICIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIFN0cmluZyBwYXR0ZXJuID0gInBhdHRlcm4iOworICAgICAgICBTdHJpbmcgdGV4dCA9ICJ0ZXh0IjsKKyAgICAgICAgU3RyaW5nU2VhcmNoIHN0cnNyY2ggPSBudWxsOworICAgICAgICB0cnkgeworICAgICAgICAgICAgc3Ryc3JjaCA9IG5ldyBTdHJpbmdTZWFyY2gocGF0dGVybiwgbmV3IFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yKHRleHQpLCBjb2xsYXRvciwgbnVsbCk7IAorICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkVycm9yIG9wZW5pbmcgc3RyaW5nIHNlYXJjaCAiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgd2hpbGUgKElHTk9SQUJMRVtjb3VudF0udGV4dCAhPSBudWxsKSB7CisgICAgICAgICAgICB0ZXh0ID0gSUdOT1JBQkxFW2NvdW50XS50ZXh0OworICAgICAgICAgICAgcGF0dGVybiA9IElHTk9SQUJMRVtjb3VudF0ucGF0dGVybjsKKyAgICAgICAgICAgIHN0cnNyY2guc2V0VGFyZ2V0KG5ldyBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvcih0ZXh0KSk7CisgICAgICAgICAgICBzdHJzcmNoLnNldFBhdHRlcm4ocGF0dGVybik7CisgICAgICAgICAgICBpZiAoIWFzc2VydEVxdWFsV2l0aFN0cmluZ1NlYXJjaChzdHJzcmNoLCBJR05PUkFCTEVbY291bnRdKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJFcnJvciBhdCB0ZXN0IG51bWJlciAiICsgY291bnQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY291bnQrKzsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0SW5pdGlhbGl6YXRpb24oKSB7CisgICAgICAgIFN0cmluZyAgcGF0dGVybjsKKyAgICAgICAgU3RyaW5nICB0ZXh0OworICAgICAgICBTdHJpbmcgIHRlbXAgPSAiYSI7CisgICAgICAgIFN0cmluZ1NlYXJjaCAgcmVzdWx0OworICAgIAorICAgICAgICAvKiBzaW1wbGUgdGVzdCBvbiB0aGUgcGF0dGVybiBjZSBjb25zdHJ1Y3Rpb24gKi8KKyAgICAgICAgcGF0dGVybiA9IHRlbXAgKyB0ZW1wOworICAgICAgICB0ZXh0ID0gdGVtcCArIHRlbXAgKyB0ZW1wOworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmVzdWx0ID0gbmV3IFN0cmluZ1NlYXJjaChwYXR0ZXJuLCBuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IodGV4dCksIG1fZW5fdXNfLCBudWxsKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJFcnJvciBvcGVuaW5nIHNlYXJjaCAiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLyogdGVzdGluZyBpZiBhbiBleHRyZW1lbHkgbGFyZ2UgcGF0dGVybiB3aWxsIGZhaWwgdGhlIGluaXRpYWxpemF0aW9uICovCisgICAgICAgIHBhdHRlcm4gPSAiIjsKKyAgICAgICAgZm9yIChpbnQgY291bnQgPSAwOyBjb3VudCA8IDUxMjsgY291bnQgKyspIHsKKyAgICAgICAgICAgIHBhdHRlcm4gKz0gdGVtcDsKKyAgICAgICAgfQorICAgICAgICB0cnkgeworICAgICAgICAgICAgcmVzdWx0ID0gbmV3IFN0cmluZ1NlYXJjaChwYXR0ZXJuLCBuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IodGV4dCksIG1fZW5fdXNfLCBudWxsKTsKKyAgICAgICAgICAgIGxvZ2xuKCJwYXR0ZXJuOiIgKyByZXN1bHQuZ2V0UGF0dGVybigpKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJGYWlsOiBhbiBleHRyZW1lbHkgbGFyZ2UgcGF0dGVybiB3aWxsIGZhaWwgdGhlIGluaXRpYWxpemF0aW9uIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJlc3VsdCAhPSByZXN1bHQpIHsKKyAgICAgICAgICAgIGVycmxuKCJFcnJvcjogc3RyaW5nIHNlYXJjaCBvYmplY3QgZXhwZWN0ZWQgdG8gbWF0Y2ggaXRzZWxmIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3ROb3JtQ2Fub25pY2FsKCkgeworICAgICAgICBtX2VuX3VzXy5zZXREZWNvbXBvc2l0aW9uKENvbGxhdG9yLkNBTk9OSUNBTF9ERUNPTVBPU0lUSU9OKTsKKyAgICAgICAgaW50IGNvdW50ID0gMDsKKyAgICAgICAgd2hpbGUgKE5PUk1DQU5PTklDQUxbY291bnRdLnRleHQgIT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKCFhc3NlcnRDYW5vbmljYWxFcXVhbChOT1JNQ0FOT05JQ0FMW2NvdW50XSkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRXJyb3IgYXQgdGVzdCBudW1iZXIgIiArIGNvdW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvdW50Kys7CisgICAgICAgIH0KKyAgICAgICAgbV9lbl91c18uc2V0RGVjb21wb3NpdGlvbihDb2xsYXRvci5OT19ERUNPTVBPU0lUSU9OKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdE5vcm1FeGFjdCgpIHsKKyAgICAgICAgaW50IGNvdW50ID0gMDsKKyAgICAgICAgbV9lbl91c18uc2V0RGVjb21wb3NpdGlvbihDb2xsYXRvci5DQU5PTklDQUxfREVDT01QT1NJVElPTik7CisgICAgICAgIHdoaWxlIChCQVNJQ1tjb3VudF0udGV4dCAhPSBudWxsKSB7CisgICAgICAgICAgICBpZiAoIWFzc2VydEVxdWFsKEJBU0lDW2NvdW50XSkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRXJyb3IgYXQgdGVzdCBudW1iZXIgIiArIGNvdW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvdW50Kys7CisgICAgICAgIH0KKyAgICAgICAgY291bnQgPSAwOworICAgICAgICB3aGlsZSAoTk9STUVYQUNUW2NvdW50XS50ZXh0ICE9IG51bGwpIHsKKyAgICAgICAgICAgIGlmICghYXNzZXJ0RXF1YWwoTk9STUVYQUNUW2NvdW50XSkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRXJyb3IgYXQgdGVzdCBudW1iZXIgIiArIGNvdW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvdW50Kys7CisgICAgICAgIH0KKyAgICAgICAgbV9lbl91c18uc2V0RGVjb21wb3NpdGlvbihDb2xsYXRvci5OT19ERUNPTVBPU0lUSU9OKTsKKyAgICAgICAgY291bnQgPSAwOworICAgICAgICB3aGlsZSAoTk9OTk9STUVYQUNUW2NvdW50XS50ZXh0ICE9IG51bGwpIHsKKyAgICAgICAgICAgIGlmICghYXNzZXJ0RXF1YWwoTk9OTk9STUVYQUNUW2NvdW50XSkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRXJyb3IgYXQgdGVzdCBudW1iZXIgIiArIGNvdW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvdW50Kys7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdE9wZW5DbG9zZSgpIHsKKyAgICAgICAgU3RyaW5nU2VhcmNoICAgICAgICAgICAgcmVzdWx0OworICAgICAgICBCcmVha0l0ZXJhdG9yICAgICAgICAgICBicmVha2l0ZXIgPSBtX2VuX3dvcmRicmVha2VyXzsKKyAgICAgICAgU3RyaW5nICAgICAgICAgICBwYXR0ZXJuID0gIiI7CisgICAgICAgIFN0cmluZyAgICAgICAgICAgdGV4dCA9ICIiOworICAgICAgICBTdHJpbmcgICAgICAgICAgIHRlbXAgID0gImEiOworICAgICAgICBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvciAgY2hhcml0ZXI9IG5ldyBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvcih0ZXh0KTsKKyAgICAKKyAgICAgICAgLyogdGVzdGluZyBudWxsIGFyZ3VtZW50cyAqLworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmVzdWx0ID0gbmV3IFN0cmluZ1NlYXJjaChwYXR0ZXJuLCBuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IodGV4dCksIG51bGwsIG51bGwpOworICAgICAgICAgICAgZXJybG4oIkVycm9yOiBudWxsIGFyZ3VtZW50cyBzaG91bGQgcHJvZHVjZSBhbiBlcnJvciIpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkge30KKyAgICAKKyAgICAgICAgY2hhcml0ZXIuc2V0VGV4dCh0ZXh0KTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBTdHJpbmdTZWFyY2gocGF0dGVybiwgY2hhcml0ZXIsIG51bGwsIG51bGwpOworICAgICAgICAgICAgZXJybG4oIkVycm9yOiBudWxsIGFyZ3VtZW50cyBzaG91bGQgcHJvZHVjZSBhbiBlcnJvciIpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkge30KKyAgICAgICAgCisgICAgICAgIHRleHQgID0gU3RyaW5nLnZhbHVlT2YoMHgxKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBTdHJpbmdTZWFyY2gocGF0dGVybiwgbmV3IFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yKHRleHQpLCBudWxsLCBudWxsKTsKKyAgICAgICAgICAgIGVycmxuKCJFcnJvcjogRW1wdHkgcGF0dGVybiBzaG91bGQgcHJvZHVjZSBhbiBlcnJvciIpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICB9CisgICAgCisgICAgICAgIGNoYXJpdGVyLnNldFRleHQodGV4dCk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXN1bHQgPSBuZXcgU3RyaW5nU2VhcmNoKHBhdHRlcm4sIGNoYXJpdGVyLCBudWxsLCBudWxsKTsKKyAgICAgICAgICAgIGVycmxuKCJFcnJvcjogRW1wdHkgcGF0dGVybiBzaG91bGQgcHJvZHVjZSBhbiBlcnJvciIpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkge30KKyAgICAKKyAgICAgICAgdGV4dCA9ICIiOworICAgICAgICBwYXR0ZXJuID10ZW1wOworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmVzdWx0ID0gbmV3IFN0cmluZ1NlYXJjaChwYXR0ZXJuLCBuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IodGV4dCksIG51bGwsIG51bGwpOworICAgICAgICAgICAgZXJybG4oIkVycm9yOiBFbXB0eSB0ZXh0IHNob3VsZCBwcm9kdWNlIGFuIGVycm9yIik7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7fQorICAgICAgICAKKyAgICAgICAgY2hhcml0ZXIuc2V0VGV4dCh0ZXh0KTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBTdHJpbmdTZWFyY2gocGF0dGVybiwgY2hhcml0ZXIsIG51bGwsIG51bGwpOworICAgICAgICAgICAgZXJybG4oIkVycm9yOiBFbXB0eSB0ZXh0IHNob3VsZCBwcm9kdWNlIGFuIGVycm9yIik7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7fQorICAgIAorICAgICAgICB0ZXh0ICs9IHRlbXA7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXN1bHQgPSBuZXcgU3RyaW5nU2VhcmNoKHBhdHRlcm4sIG5ldyBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvcih0ZXh0KSwgbnVsbCwgbnVsbCk7CisgICAgICAgICAgICBlcnJsbigiRXJyb3I6IG51bGwgYXJndW1lbnRzIHNob3VsZCBwcm9kdWNlIGFuIGVycm9yIik7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7fQorICAgIAorICAgICAgICBjaGFyaXRlci5zZXRUZXh0KHRleHQpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmVzdWx0ID0gbmV3IFN0cmluZ1NlYXJjaChwYXR0ZXJuLCBjaGFyaXRlciwgbnVsbCwgbnVsbCk7CisgICAgICAgICAgICBlcnJsbigiRXJyb3I6IG51bGwgYXJndW1lbnRzIHNob3VsZCBwcm9kdWNlIGFuIGVycm9yIik7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7fQorICAgICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBTdHJpbmdTZWFyY2gocGF0dGVybiwgbmV3IFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yKHRleHQpLCBtX2VuX3VzXywgbnVsbCk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiRXJyb3I6IG51bGwgYnJlYWsgaXRlcmF0b3IgaXMgdmFsaWQgZm9yIG9wZW5pbmcgc2VhcmNoIik7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBTdHJpbmdTZWFyY2gocGF0dGVybiwgY2hhcml0ZXIsIG1fZW5fdXNfLCBudWxsKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJFcnJvcjogbnVsbCBicmVhayBpdGVyYXRvciBpcyB2YWxpZCBmb3Igb3BlbmluZyBzZWFyY2giKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBTdHJpbmdTZWFyY2gocGF0dGVybiwgbmV3IFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yKHRleHQpLCBMb2NhbGUuRU5HTElTSCk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiRXJyb3I6IG51bGwgYnJlYWsgaXRlcmF0b3IgaXMgdmFsaWQgZm9yIG9wZW5pbmcgc2VhcmNoIik7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBTdHJpbmdTZWFyY2gocGF0dGVybiwgY2hhcml0ZXIsIExvY2FsZS5FTkdMSVNIKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJFcnJvcjogbnVsbCBicmVhayBpdGVyYXRvciBpcyB2YWxpZCBmb3Igb3BlbmluZyBzZWFyY2giKTsKKyAgICAgICAgfQorICAgIAorICAgICAgICB0cnkgeworICAgICAgICAgICAgcmVzdWx0ID0gbmV3IFN0cmluZ1NlYXJjaChwYXR0ZXJuLCBuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IodGV4dCksIG1fZW5fdXNfLCBicmVha2l0ZXIpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkVycm9yOiBCcmVhayBpdGVyYXRvciBpcyB2YWxpZCBmb3Igb3BlbmluZyBzZWFyY2giKTsKKyAgICAgICAgfQorICAgIAorICAgICAgICB0cnkgeworICAgICAgICAgICAgcmVzdWx0ID0gbmV3IFN0cmluZ1NlYXJjaChwYXR0ZXJuLCBjaGFyaXRlciwgbV9lbl91c18sIG51bGwpOworICAgICAgICAgICAgbG9nbG4oInBhdHRlcm46IiArIHJlc3VsdC5nZXRQYXR0ZXJuKCkpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkVycm9yOiBCcmVhayBpdGVyYXRvciBpcyB2YWxpZCBmb3Igb3BlbmluZyBzZWFyY2giKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RPdmVybGFwKCkgeworICAgICAgICBpbnQgY291bnQgPSAwOworICAgICAgICB3aGlsZSAoT1ZFUkxBUFtjb3VudF0udGV4dCAhPSBudWxsKSB7CisgICAgICAgICAgICBpZiAoIWFzc2VydEVxdWFsV2l0aEF0dHJpYnV0ZShPVkVSTEFQW2NvdW50XSwgZmFsc2UsIHRydWUpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkVycm9yIGF0IG92ZXJsYXAgdGVzdCBudW1iZXIgIiArIGNvdW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvdW50Kys7CisgICAgICAgIH0gICAgCisgICAgICAgIGNvdW50ID0gMDsKKyAgICAgICAgd2hpbGUgKE5PTk9WRVJMQVBbY291bnRdLnRleHQgIT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKCFhc3NlcnRFcXVhbChOT05PVkVSTEFQW2NvdW50XSkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRXJyb3IgYXQgbm9uIG92ZXJsYXAgdGVzdCBudW1iZXIgIiArIGNvdW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvdW50Kys7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgY291bnQgPSAwOworICAgICAgICB3aGlsZSAoY291bnQgPCAxKSB7CisgICAgICAgICAgICBTZWFyY2hEYXRhIHNlYXJjaCA9IChPVkVSTEFQW2NvdW50XSk7ICAgICAKKyAgICAgICAgICAgIFN0cmluZyB0ZXh0ID0gc2VhcmNoLnRleHQ7CisgICAgICAgICAgICBTdHJpbmcgcGF0dGVybiA9IHNlYXJjaC5wYXR0ZXJuOworICAgIAorICAgICAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IgY29sbGF0b3IgPSBnZXRDb2xsYXRvcihzZWFyY2guY29sbGF0b3IpOworICAgICAgICAgICAgU3RyaW5nU2VhcmNoIHN0cnNyY2ggPSBudWxsOyAgIAorICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBzdHJzcmNoICA9IG5ldyBTdHJpbmdTZWFyY2gocGF0dGVybiwgbmV3IFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yKHRleHQpLCBjb2xsYXRvciwgbnVsbCk7CisgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJlcnJvciBvcGVuIFN0cmluZ1NlYXJjaCIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgc3Ryc3JjaC5zZXRPdmVybGFwcGluZyh0cnVlKTsKKyAgICAgICAgICAgIGlmICghc3Ryc3JjaC5pc092ZXJsYXBwaW5nKCkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRXJyb3Igc2V0dGluZyBvdmVybGFwIG9wdGlvbiIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFhc3NlcnRFcXVhbFdpdGhTdHJpbmdTZWFyY2goc3Ryc3JjaCwgc2VhcmNoKSkgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgc2VhcmNoID0gTk9OT1ZFUkxBUFtjb3VudF07CisgICAgICAgICAgICBzdHJzcmNoLnNldE92ZXJsYXBwaW5nKGZhbHNlKTsKKyAgICAgICAgICAgIGlmIChzdHJzcmNoLmlzT3ZlcmxhcHBpbmcoKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJFcnJvciBzZXR0aW5nIG92ZXJsYXAgb3B0aW9uIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdHJzcmNoLnJlc2V0KCk7CisgICAgICAgICAgICBpZiAoIWFzc2VydEVxdWFsV2l0aFN0cmluZ1NlYXJjaChzdHJzcmNoLCBzZWFyY2gpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkVycm9yIGF0IHRlc3QgbnVtYmVyICIgKyBjb3VudCk7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgY291bnQgKys7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0T3ZlcmxhcENhbm9uaWNhbCgpIHsKKyAgICAgICAgaW50IGNvdW50ID0gMDsKKyAgICAgICAgd2hpbGUgKE9WRVJMQVBDQU5PTklDQUxbY291bnRdLnRleHQgIT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKCFhc3NlcnRFcXVhbFdpdGhBdHRyaWJ1dGUoT1ZFUkxBUENBTk9OSUNBTFtjb3VudF0sIHRydWUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRXJyb3IgYXQgb3ZlcmxhcCB0ZXN0IG51bWJlciAlZCIgKyBjb3VudCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb3VudCArKzsKKyAgICAgICAgfSAgICAKKyAgICAgICAgY291bnQgPSAwOworICAgICAgICB3aGlsZSAoTk9OT1ZFUkxBUFtjb3VudF0udGV4dCAhPSBudWxsKSB7CisgICAgICAgICAgICBpZiAoIWFzc2VydENhbm9uaWNhbEVxdWFsKE5PTk9WRVJMQVBDQU5PTklDQUxbY291bnRdKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJFcnJvciBhdCBub24gb3ZlcmxhcCB0ZXN0IG51bWJlciAlZCIgKyBjb3VudCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb3VudCArKzsKKyAgICAgICAgfQorICAgIAorICAgICAgICBjb3VudCA9IDA7CisgICAgICAgIHdoaWxlIChjb3VudCA8IDEpIHsKKyAgICAgICAgICAgICAgICAgLyogVUNoYXIgICAgICAgdGVtcFsxMjhdOworICAgICAgICAgICAgY29uc3QgU2VhcmNoRGF0YSAqc2VhcmNoID0gJihPVkVSTEFQQ0FOT05JQ0FMW2NvdW50XSk7ICAgICAKKyAgICAgICAgICAgICAgICAgIFVFcnJvckNvZGUgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsqLworICAgICAgICAgICAgU2VhcmNoRGF0YSBzZWFyY2ggPSBPVkVSTEFQQ0FOT05JQ0FMW2NvdW50XTsKKyAgICAgICAgCisgICAgICAgICAgICAvKnVfdW5lc2NhcGUoc2VhcmNoLnRleHQsIHRlbXAsIDEyOCk7CisgICAgICAgICAgICBVbmljb2RlU3RyaW5nIHRleHQ7CisgICAgICAgICAgICB0ZXh0LnNldFRvKHRlbXAsIHVfc3RybGVuKHRlbXApKTsKKyAgICAgICAgICAgIHVfdW5lc2NhcGUoc2VhcmNoLnBhdHRlcm4sIHRlbXAsIDEyOCk7CisgICAgICAgICAgICBVbmljb2RlU3RyaW5nIHBhdHRlcm47CisgICAgICAgICAgICBwYXR0ZXJuLnNldFRvKHRlbXAsIHVfc3RybGVuKHRlbXApKTsqLworICAgICAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IgY29sbGF0b3IgPSBnZXRDb2xsYXRvcihzZWFyY2guY29sbGF0b3IpOworICAgICAgICAgICAgU3RyaW5nU2VhcmNoIHN0cnNyY2ggPSBuZXcgU3RyaW5nU2VhcmNoKHNlYXJjaC5wYXR0ZXJuLCBuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3Ioc2VhcmNoLnRleHQpLCBjb2xsYXRvciwgbnVsbCk7CisgICAgICAgICAgICBzdHJzcmNoLnNldENhbm9uaWNhbCh0cnVlKTsKKyAgICAgICAgICAgIHN0cnNyY2guc2V0T3ZlcmxhcHBpbmcodHJ1ZSk7CisgICAgICAgICAgICBpZiAoc3Ryc3JjaC5pc092ZXJsYXBwaW5nKCkgIT0gdHJ1ZSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJFcnJvciBzZXR0aW5nIG92ZXJsYXAgb3B0aW9uIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIWFzc2VydEVxdWFsV2l0aFN0cmluZ1NlYXJjaChzdHJzcmNoLCBzZWFyY2gpKSB7CisgICAgICAgICAgICAgICAgc3Ryc3JjaCA9IG51bGw7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc2VhcmNoID0gTk9OT1ZFUkxBUENBTk9OSUNBTFtjb3VudF07CisgICAgICAgICAgICBzdHJzcmNoLnNldE92ZXJsYXBwaW5nKGZhbHNlKTsKKyAgICAgICAgICAgIGlmIChzdHJzcmNoLmlzT3ZlcmxhcHBpbmcoKSAhPSBmYWxzZSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJFcnJvciBzZXR0aW5nIG92ZXJsYXAgb3B0aW9uIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdHJzcmNoLnJlc2V0KCk7CisgICAgICAgICAgICBpZiAoIWFzc2VydEVxdWFsV2l0aFN0cmluZ1NlYXJjaChzdHJzcmNoLCBzZWFyY2gpKSB7CisgICAgICAgICAgICAgICAgc3Ryc3JjaCA9IG51bGw7CisgICAgICAgICAgICAgICAgZXJybG4oIkVycm9yIGF0IHRlc3QgbnVtYmVyICVkIiArIGNvdW50KTsKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgCisgICAgICAgICAgICBjb3VudCArKzsKKyAgICAgICAgICAgIHN0cnNyY2ggPSBudWxsOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RQYXR0ZXJuKCkgeyAgCisgICAgICAgIG1fZW5fdXNfLnNldFN0cmVuZ3RoKFBBVFRFUk5bMF0uc3RyZW5ndGgpOworICAgICAgICBTdHJpbmdTZWFyY2ggc3Ryc3JjaCA9IG5ldyBTdHJpbmdTZWFyY2goUEFUVEVSTlswXS5wYXR0ZXJuLCBuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IoUEFUVEVSTlswXS50ZXh0KSwgbV9lbl91c18sIG51bGwpOworICAgICAgICAKKyAgICAgICAgLyppZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKKyAgICAgICAgICAgIGVycmxuKCJFcnJvciBvcGVuaW5nIHN0cmluZyBzZWFyY2ggJXMiLCB1X2Vycm9yTmFtZShzdGF0dXMpKTsKKyAgICAgICAgICAgIG1fZW5fdXNfLnNldFN0cmVuZ3RoKGdldEVDb2xsYXRpb25TdHJlbmd0aChVQ09MX1RFUlRJQVJZKSk7CisgICAgICAgICAgICBpZiAoc3Ryc3JjaCAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZGVsZXRlIHN0cnNyY2g7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0qLworICAgICAgICAKKyAgICAgICAgaWYgKHN0cnNyY2guZ2V0UGF0dGVybigpICE9IFBBVFRFUk5bMF0ucGF0dGVybikgeworICAgICAgICAgICAgZXJybG4oIkVycm9yIHNldHRpbmcgcGF0dGVybiIpOworICAgICAgICB9CisgICAgICAgIGlmICghYXNzZXJ0RXF1YWxXaXRoU3RyaW5nU2VhcmNoKHN0cnNyY2gsIFBBVFRFUk5bMF0pKSB7CisgICAgICAgICAgICBtX2VuX3VzXy5zZXRTdHJlbmd0aChDb2xsYXRvci5URVJUSUFSWSk7CisgICAgICAgICAgICBpZiAoc3Ryc3JjaCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgc3Ryc3JjaCA9IG51bGw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgc3Ryc3JjaC5zZXRQYXR0ZXJuKFBBVFRFUk5bMV0ucGF0dGVybik7CisgICAgICAgIGlmIChQQVRURVJOWzFdLnBhdHRlcm4gIT0gc3Ryc3JjaC5nZXRQYXR0ZXJuKCkpIHsKKyAgICAgICAgICAgIGVycmxuKCJFcnJvciBzZXR0aW5nIHBhdHRlcm4iKTsKKyAgICAgICAgICAgIG1fZW5fdXNfLnNldFN0cmVuZ3RoKENvbGxhdG9yLlRFUlRJQVJZKTsKKyAgICAgICAgICAgIGlmIChzdHJzcmNoICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBzdHJzcmNoID0gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBzdHJzcmNoLnJlc2V0KCk7CisgICAgCisgICAgICAgIGlmICghYXNzZXJ0RXF1YWxXaXRoU3RyaW5nU2VhcmNoKHN0cnNyY2gsIFBBVFRFUk5bMV0pKSB7CisgICAgICAgICAgICBtX2VuX3VzXy5zZXRTdHJlbmd0aChDb2xsYXRvci5URVJUSUFSWSk7CisgICAgICAgICAgICBpZiAoc3Ryc3JjaCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgc3Ryc3JjaCA9IG51bGw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgc3Ryc3JjaC5zZXRQYXR0ZXJuKFBBVFRFUk5bMF0ucGF0dGVybik7CisgICAgICAgIGlmIChQQVRURVJOWzBdLnBhdHRlcm4gIT0gc3Ryc3JjaC5nZXRQYXR0ZXJuKCkpIHsKKyAgICAgICAgICAgIGVycmxuKCJFcnJvciBzZXR0aW5nIHBhdHRlcm4iKTsKKyAgICAgICAgICAgIG1fZW5fdXNfLnNldFN0cmVuZ3RoKENvbGxhdG9yLlRFUlRJQVJZKTsKKyAgICAgICAgICAgIGlmIChzdHJzcmNoICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBzdHJzcmNoID0gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAgc3Ryc3JjaC5yZXNldCgpOworICAgICAgIAorICAgICAgICBpZiAoIWFzc2VydEVxdWFsV2l0aFN0cmluZ1NlYXJjaChzdHJzcmNoLCBQQVRURVJOWzBdKSkgeworICAgICAgICAgICAgbV9lbl91c18uc2V0U3RyZW5ndGgoQ29sbGF0b3IuVEVSVElBUlkpOworICAgICAgICAgICAgaWYgKHN0cnNyY2ggIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHN0cnNyY2ggPSBudWxsOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIC8qIGVub3Jtb3VzIHBhdHRlcm4gc2l6ZSB0byBzZWUgaWYgdGhpcyBjcmFzaGVzICovCisgICAgICAgIFN0cmluZyBwYXR0ZXJuID0gIiI7CisgICAgICAgIGZvciAoaW50IHRlbXBsZW5ndGggPSAwOyB0ZW1wbGVuZ3RoICE9IDUxMjsgdGVtcGxlbmd0aCArKykgeworICAgICAgICAgICAgcGF0dGVybiArPSAweDYxOworICAgICAgICB9CisgICAgICAgIHRyeXsKKyAgICAgICAgICAgIHN0cnNyY2guc2V0UGF0dGVybihwYXR0ZXJuKTsKKyAgICAgICAgfWNhdGNoKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiRXJyb3Igc2V0dGluZyBwYXR0ZXJuIHdpdGggc2l6ZSA1MTIiKTsKKyAgICAgICAgfQorICAgIAorICAgICAgICBtX2VuX3VzXy5zZXRTdHJlbmd0aChDb2xsYXRvci5URVJUSUFSWSk7CisgICAgICAgIGlmIChzdHJzcmNoICE9IG51bGwpIHsKKyAgICAgICAgICAgIHN0cnNyY2ggPSBudWxsOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RQYXR0ZXJuQ2Fub25pY2FsKCkgeworICAgICAgICAvL1N0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yIHRleHQgPSBuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IoUEFUVEVSTkNBTk9OSUNBTFswXS50ZXh0KTsKKyAgICAgICAgbV9lbl91c18uc2V0U3RyZW5ndGgoUEFUVEVSTkNBTk9OSUNBTFswXS5zdHJlbmd0aCk7CisgICAgICAgIFN0cmluZ1NlYXJjaCBzdHJzcmNoID0gbmV3IFN0cmluZ1NlYXJjaChQQVRURVJOQ0FOT05JQ0FMWzBdLnBhdHRlcm4sIG5ldyBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvcihQQVRURVJOQ0FOT05JQ0FMWzBdLnRleHQpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZW5fdXNfLCBudWxsKTsKKyAgICAgICAgc3Ryc3JjaC5zZXRDYW5vbmljYWwodHJ1ZSk7CisgICAgICAgIAorICAgICAgICBpZiAoUEFUVEVSTkNBTk9OSUNBTFswXS5wYXR0ZXJuICE9IHN0cnNyY2guZ2V0UGF0dGVybigpKSB7CisgICAgICAgICAgICBlcnJsbigiRXJyb3Igc2V0dGluZyBwYXR0ZXJuIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFhc3NlcnRFcXVhbFdpdGhTdHJpbmdTZWFyY2goc3Ryc3JjaCwgUEFUVEVSTkNBTk9OSUNBTFswXSkpIHsKKyAgICAgICAgICAgIG1fZW5fdXNfLnNldFN0cmVuZ3RoKENvbGxhdG9yLlRFUlRJQVJZKTsKKyAgICAgICAgICAgIHN0cnNyY2ggPSBudWxsOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgCisgICAgICAgIHN0cnNyY2guc2V0UGF0dGVybihQQVRURVJOQ0FOT05JQ0FMWzFdLnBhdHRlcm4pOworICAgICAgICBpZiAoUEFUVEVSTkNBTk9OSUNBTFsxXS5wYXR0ZXJuICE9IHN0cnNyY2guZ2V0UGF0dGVybigpKSB7CisgICAgICAgICAgICBlcnJsbigiRXJyb3Igc2V0dGluZyBwYXR0ZXJuIik7CisgICAgICAgICAgICBtX2VuX3VzXy5zZXRTdHJlbmd0aChDb2xsYXRvci5URVJUSUFSWSk7CisgICAgICAgICAgICBzdHJzcmNoID0gbnVsbDsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBzdHJzcmNoLnJlc2V0KCk7CisgICAgICAgIHN0cnNyY2guc2V0Q2Fub25pY2FsKHRydWUpOworICAgICAgICAKKyAgICAgICAgaWYgKCFhc3NlcnRFcXVhbFdpdGhTdHJpbmdTZWFyY2goc3Ryc3JjaCwgUEFUVEVSTkNBTk9OSUNBTFsxXSkpIHsKKyAgICAgICAgICAgIG1fZW5fdXNfLnNldFN0cmVuZ3RoKENvbGxhdG9yLlRFUlRJQVJZKTsKKyAgICAgICAgICAgIHN0cnNyY2ggPSBudWxsOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgc3Ryc3JjaC5zZXRQYXR0ZXJuKFBBVFRFUk5DQU5PTklDQUxbMF0ucGF0dGVybik7CisgICAgICAgIGlmIChQQVRURVJOQ0FOT05JQ0FMWzBdLnBhdHRlcm4gIT0gc3Ryc3JjaC5nZXRQYXR0ZXJuKCkpIHsKKyAgICAgICAgICAgIGVycmxuKCJFcnJvciBzZXR0aW5nIHBhdHRlcm4iKTsKKyAgICAgICAgICAgIG1fZW5fdXNfLnNldFN0cmVuZ3RoKENvbGxhdG9yLlRFUlRJQVJZKTsKKyAgICAgICAgICAgIHN0cnNyY2ggPSBudWxsOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzdHJzcmNoLnJlc2V0KCk7CisgICAgICAgIHN0cnNyY2guc2V0Q2Fub25pY2FsKHRydWUpOworICAgICAgICBpZiAoIWFzc2VydEVxdWFsV2l0aFN0cmluZ1NlYXJjaChzdHJzcmNoLCBQQVRURVJOQ0FOT05JQ0FMWzBdKSkgeworICAgICAgICAgICAgbV9lbl91c18uc2V0U3RyZW5ndGgoQ29sbGF0b3IuVEVSVElBUlkpOworICAgICAgICAgICAgc3Ryc3JjaCA9IG51bGw7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdFJlc2V0KCkgeworICAgICAgICBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvciB0ZXh0ID0gbmV3IFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yKCJmaXNoIGZpc2giKTsKKyAgICAgICAgU3RyaW5nIHBhdHRlcm4gPSAicyI7CisgICAgICAgIAorICAgICAgICBTdHJpbmdTZWFyY2ggIHN0cnNyY2ggPSBuZXcgU3RyaW5nU2VhcmNoKHBhdHRlcm4sIHRleHQsIG1fZW5fdXNfLCBudWxsKTsgCisgICAgICAgIHN0cnNyY2guc2V0T3ZlcmxhcHBpbmcodHJ1ZSk7CisgICAgICAgIHN0cnNyY2guc2V0Q2Fub25pY2FsKHRydWUpOworICAgICAgICBzdHJzcmNoLnNldEluZGV4KDkpOworICAgICAgICBzdHJzcmNoLnJlc2V0KCk7CisgICAgICAgIGlmIChzdHJzcmNoLmlzQ2Fub25pY2FsKCkgfHwgc3Ryc3JjaC5pc092ZXJsYXBwaW5nKCkgfHwKKyAgICAgICAgICAgIHN0cnNyY2guZ2V0SW5kZXgoKSAhPSAwIHx8IHN0cnNyY2guZ2V0TWF0Y2hMZW5ndGgoKSAhPSAwIHx8CisgICAgICAgICAgICBzdHJzcmNoLmdldE1hdGNoU3RhcnQoKSAhPSBTZWFyY2hJdGVyYXRvci5ET05FKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkVycm9yIHJlc2V0dGluZyBzdHJpbmcgc2VhcmNoIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHN0cnNyY2gucHJldmlvdXMoKTsKKyAgICAgICAgaWYgKHN0cnNyY2guZ2V0TWF0Y2hTdGFydCgpICE9IDcgfHwgc3Ryc3JjaC5nZXRNYXRjaExlbmd0aCgpICE9IDEpIHsKKyAgICAgICAgICAgIGVycmxuKCJFcnJvciByZXNldHRpbmcgc3RyaW5nIHNlYXJjaFxuIik7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdFNldE1hdGNoKCkgeworICAgICAgICBpbnQgY291bnQgPSAwOworICAgICAgICB3aGlsZSAoTUFUQ0hbY291bnRdLnRleHQgIT0gbnVsbCkgeworICAgICAgICAgICAgU2VhcmNoRGF0YSAgICAgc2VhcmNoID0gTUFUQ0hbY291bnRdOworICAgICAgICAgICAgU3RyaW5nU2VhcmNoIHN0cnNyY2ggPSBuZXcgU3RyaW5nU2VhcmNoKHNlYXJjaC5wYXR0ZXJuLCBuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3Ioc2VhcmNoLnRleHQpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2VuX3VzXywgbnVsbCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGludCBzaXplID0gMDsKKyAgICAgICAgICAgIHdoaWxlIChzZWFyY2gub2Zmc2V0W3NpemVdICE9IC0xKSB7CisgICAgICAgICAgICAgICAgc2l6ZSArKzsKKyAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgIGlmIChzdHJzcmNoLmZpcnN0KCkgIT0gc2VhcmNoLm9mZnNldFswXSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJFcnJvciBnZXR0aW5nIGZpcnN0IG1hdGNoIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc3Ryc3JjaC5sYXN0KCkgIT0gc2VhcmNoLm9mZnNldFtzaXplIC0xXSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJFcnJvciBnZXR0aW5nIGxhc3QgbWF0Y2giKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaW50IGluZGV4ID0gMDsKKyAgICAgICAgICAgIHdoaWxlIChpbmRleCA8IHNpemUpIHsKKyAgICAgICAgICAgICAgICBpZiAoaW5kZXggKyAyIDwgc2l6ZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoc3Ryc3JjaC5mb2xsb3dpbmcoc2VhcmNoLm9mZnNldFtpbmRleCArIDJdIC0gMSkgIT0gc2VhcmNoLm9mZnNldFtpbmRleCArIDJdKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbigiRXJyb3IgZ2V0dGluZyBmb2xsb3dpbmcgbWF0Y2ggYXQgaW5kZXggIiArIChzZWFyY2gub2Zmc2V0W2luZGV4ICsgMl0tMSkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChpbmRleCArIDEgPCBzaXplKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChzdHJzcmNoLnByZWNlZGluZyhzZWFyY2gub2Zmc2V0W2luZGV4ICsgMV0gKyBzZWFyY2guc2l6ZVtpbmRleCArIDFdICsgMSkgIT0gc2VhcmNoLm9mZnNldFtpbmRleCArIDFdKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbigiRXJyb3IgZ2V0dGluZyBwcmVjZWVkaW5nIG1hdGNoIGF0IGluZGV4ICIgKyAoc2VhcmNoLm9mZnNldFtpbmRleCArIDFdICsgMSkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGluZGV4ICs9IDI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChzdHJzcmNoLmZvbGxvd2luZyhzZWFyY2gudGV4dC5sZW5ndGgoKSkgIT0gU2VhcmNoSXRlcmF0b3IuRE9ORSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJFcnJvciBleHBlY3Rpbmcgb3V0IG9mIGJvdW5kcyBtYXRjaCIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHN0cnNyY2gucHJlY2VkaW5nKDApICE9IFNlYXJjaEl0ZXJhdG9yLkRPTkUpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRXJyb3IgZXhwZWN0aW5nIG91dCBvZiBib3VuZHMgbWF0Y2giKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvdW50ICsrOworICAgICAgICAgICAgc3Ryc3JjaCA9IG51bGw7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdFN0cmVuZ3RoKCkgeyAgIAorICAgICAgICBpbnQgY291bnQgPSAwOworICAgICAgICB3aGlsZSAoU1RSRU5HVEhbY291bnRdLnRleHQgIT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKGNvdW50ID09IDMpIGNvdW50ICsrOworICAgICAgICAgICAgaWYgKCFhc3NlcnRFcXVhbChTVFJFTkdUSFtjb3VudF0pKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkVycm9yIGF0IHRlc3QgbnVtYmVyICIgKyBjb3VudCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb3VudCArKzsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0U3RyZW5ndGhDYW5vbmljYWwoKSB7CisgICAgICAgIGludCBjb3VudCA9IDA7CisgICAgICAgIHdoaWxlIChTVFJFTkdUSENBTk9OSUNBTFtjb3VudF0udGV4dCAhPSBudWxsKSB7CisgICAgICAgICAgICBpZiAoY291bnQgPT0gMykgY291bnQgKys7CisgICAgICAgICAgICBpZiAoIWFzc2VydENhbm9uaWNhbEVxdWFsKFNUUkVOR1RIQ0FOT05JQ0FMW2NvdW50XSkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRXJyb3IgYXQgdGVzdCBudW1iZXIiICsgY291bnQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY291bnQgKys7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdFN1cHBsZW1lbnRhcnkoKSB7CisgICAgICAgIGludCBjb3VudCA9IDA7CisgICAgICAgIHdoaWxlIChTVVBQTEVNRU5UQVJZW2NvdW50XS50ZXh0ICE9IG51bGwpIHsKKyAgICAgICAgICAgIGlmICghYXNzZXJ0RXF1YWwoU1VQUExFTUVOVEFSWVtjb3VudF0pKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkVycm9yIGF0IHRlc3QgbnVtYmVyIiArIGNvdW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvdW50ICsrOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RTdXBwbGVtZW50YXJ5Q2Fub25pY2FsKCkgeworICAgICAgICBpbnQgY291bnQgPSAwOworICAgICAgICB3aGlsZSAoU1VQUExFTUVOVEFSWUNBTk9OSUNBTFtjb3VudF0udGV4dCAhPSBudWxsKSB7CisgICAgICAgICAgICBpZiAoIWFzc2VydENhbm9uaWNhbEVxdWFsKFNVUFBMRU1FTlRBUllDQU5PTklDQUxbY291bnRdKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJFcnJvciBhdCB0ZXN0IG51bWJlciIgKyBjb3VudCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb3VudCArKzsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RUZXh0KCkgeworICAgICAgICBTZWFyY2hEYXRhIFRFWFRbXSA9IHsKKyAgICAgICAgICAgIG5ldyBTZWFyY2hEYXRhKCJ0aGUgZm94eSBicm93biBmb3giLCAiZm94IiwgbnVsbCwgQ29sbGF0b3IuVEVSVElBUlksIG51bGwsIG5ldyBpbnRbXSB7NCwgMTUsIC0xfSwgbmV3IGludFtdIHszLCAzfSksCisgICAgICAgICAgICBuZXcgU2VhcmNoRGF0YSgidGhlIHF1aWNrIGJyb3duIGZveCIsICJmb3giLCBudWxsLCBDb2xsYXRvci5URVJUSUFSWSwgbnVsbCwgbmV3IGludFtdIHsxNiwgLTF9LCBuZXcgaW50W10gezN9KSwKKyAgICAgICAgICAgIG5ldyBTZWFyY2hEYXRhKG51bGwsIG51bGwsIG51bGwsIENvbGxhdG9yLlRFUlRJQVJZLCBudWxsLCBuZXcgaW50W10gey0xfSwgbmV3IGludFtdezB9KQorICAgICAgICB9OworICAgICAgICBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvciB0ID0gbmV3IFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yKFRFWFRbMF0udGV4dCk7CisgICAgICAgIFN0cmluZ1NlYXJjaCBzdHJzcmNoID0gbmV3IFN0cmluZ1NlYXJjaChURVhUWzBdLnBhdHRlcm4sIHQsIG1fZW5fdXNfLCBudWxsKTsKKyAgICAgICAgCisgICAgICAgIGlmICghdC5lcXVhbHMoc3Ryc3JjaC5nZXRUYXJnZXQoKSkpIHsKKyAgICAgICAgICAgIGVycmxuKCJFcnJvciBzZXR0aW5nIHRleHQiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWFzc2VydEVxdWFsV2l0aFN0cmluZ1NlYXJjaChzdHJzcmNoLCBURVhUWzBdKSkgeworICAgICAgICAgICAgZXJybG4oIkVycm9yIGF0IGFzc2VydEVxdWFsV2l0aFN0cmluZ1NlYXJjaCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgCisgICAgICAgIHQgPSBuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IoVEVYVFsxXS50ZXh0KTsKKyAgICAgICAgc3Ryc3JjaC5zZXRUYXJnZXQodCk7CisgICAgICAgIGlmICghdC5lcXVhbHMoc3Ryc3JjaC5nZXRUYXJnZXQoKSkpIHsKKyAgICAgICAgICAgIGVycmxuKCJFcnJvciBzZXR0aW5nIHRleHQiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKCFhc3NlcnRFcXVhbFdpdGhTdHJpbmdTZWFyY2goc3Ryc3JjaCwgVEVYVFsxXSkpIHsKKyAgICAgICAgICAgIGVycmxuKCJFcnJvciBhdCBhc3NlcnRFcXVhbFdpdGhTdHJpbmdTZWFyY2giKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0VGV4dENhbm9uaWNhbCgpIHsKKyAgICAgICAgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IgdCA9IG5ldyBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvcihURVhUQ0FOT05JQ0FMWzBdLnRleHQpOworICAgICAgICBTdHJpbmdTZWFyY2ggc3Ryc3JjaCA9IG5ldyBTdHJpbmdTZWFyY2goVEVYVENBTk9OSUNBTFswXS5wYXR0ZXJuLCB0LCBtX2VuX3VzXywgbnVsbCk7CisgICAgICAgIHN0cnNyY2guc2V0Q2Fub25pY2FsKHRydWUpOworICAgICAgICAKKyAgICAgICAgaWYgKCF0LmVxdWFscyhzdHJzcmNoLmdldFRhcmdldCgpKSkgeworICAgICAgICAgICAgZXJybG4oIkVycm9yIHNldHRpbmcgdGV4dCIpOworICAgICAgICB9CisgICAgICAgIGlmICghYXNzZXJ0RXF1YWxXaXRoU3RyaW5nU2VhcmNoKHN0cnNyY2gsIFRFWFRDQU5PTklDQUxbMF0pKSB7CisgICAgICAgICAgICBzdHJzcmNoID0gbnVsbDsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHQgPSBuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IoVEVYVENBTk9OSUNBTFsxXS50ZXh0KTsKKyAgICAgICAgc3Ryc3JjaC5zZXRUYXJnZXQodCk7CisgICAgICAgIGlmICghdC5lcXVhbHMoc3Ryc3JjaC5nZXRUYXJnZXQoKSkpIHsKKyAgICAgICAgICAgIGVycmxuKCJFcnJvciBzZXR0aW5nIHRleHQiKTsKKyAgICAgICAgICAgIHN0cnNyY2ggPSBudWxsOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoIWFzc2VydEVxdWFsV2l0aFN0cmluZ1NlYXJjaChzdHJzcmNoLCBURVhUQ0FOT05JQ0FMWzFdKSkgeworICAgICAgICAgICAgc3Ryc3JjaCA9IG51bGw7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB0ID0gbmV3IFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yKFRFWFRDQU5PTklDQUxbMF0udGV4dCk7CisgICAgICAgIHN0cnNyY2guc2V0VGFyZ2V0KHQpOworICAgICAgICBpZiAoIXQuZXF1YWxzKHN0cnNyY2guZ2V0VGFyZ2V0KCkpKSB7CisgICAgICAgICAgICBlcnJsbigiRXJyb3Igc2V0dGluZyB0ZXh0Iik7CisgICAgICAgICAgICBzdHJzcmNoID0gbnVsbDsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKCFhc3NlcnRFcXVhbFdpdGhTdHJpbmdTZWFyY2goc3Ryc3JjaCwgVEVYVENBTk9OSUNBTFswXSkpIHsKKyAgICAgICAgICAgIGVycmxuKCJFcnJvciBhdCBhc3NlcnRFcXVhbFdpdGhTdHJpbmdTZWFyY2giKTsKKyAgICAgICAgICAgIHN0cnNyY2ggPSBudWxsOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9ICAgIAorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0VmFyaWFibGUoKSB7CisgICAgICAgIGludCBjb3VudCA9IDA7CisgICAgICAgIG1fZW5fdXNfLnNldEFsdGVybmF0ZUhhbmRsaW5nU2hpZnRlZCh0cnVlKTsKKyAgICAgICAgd2hpbGUgKFZBUklBQkxFW2NvdW50XS50ZXh0ICE9IG51bGwpIHsKKyAgICAgICAgICAgIC8vIGxvZ2xuKCJ2YXJpYWJsZSIgKyBjb3VudCk7CisgICAgICAgICAgICBpZiAoIWFzc2VydEVxdWFsKFZBUklBQkxFW2NvdW50XSkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRXJyb3IgYXQgdGVzdCBudW1iZXIgIiArIGNvdW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvdW50ICsrOworICAgICAgICB9CisgICAgICAgIG1fZW5fdXNfLnNldEFsdGVybmF0ZUhhbmRsaW5nU2hpZnRlZChmYWxzZSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RWYXJpYWJsZUNhbm9uaWNhbCgpIHsKKyAgICAgICAgaW50IGNvdW50ID0gMDsKKyAgICAgICAgbV9lbl91c18uc2V0QWx0ZXJuYXRlSGFuZGxpbmdTaGlmdGVkKHRydWUpOworICAgICAgICB3aGlsZSAoVkFSSUFCTEVbY291bnRdLnRleHQgIT0gbnVsbCkgeworICAgICAgICAgICAgLy8gbG9nbG4oInZhcmlhYmxlICIgKyBjb3VudCk7CisgICAgICAgICAgICBpZiAoIWFzc2VydENhbm9uaWNhbEVxdWFsKFZBUklBQkxFW2NvdW50XSkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRXJyb3IgYXQgdGVzdCBudW1iZXIgIiArIGNvdW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvdW50ICsrOworICAgICAgICB9CisgICAgICAgIG1fZW5fdXNfLnNldEFsdGVybmF0ZUhhbmRsaW5nU2hpZnRlZChmYWxzZSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RTdWJDbGFzcygpCisgICAgeworICAgICAgICBjbGFzcyBUZXN0U2VhcmNoIGV4dGVuZHMgU2VhcmNoSXRlcmF0b3IKKyAgICAgICAgeworICAgICAgICAgICAgU3RyaW5nIHBhdHRlcm47CisgICAgICAgICAgICBTdHJpbmcgdGV4dDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgVGVzdFNlYXJjaChTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvciB0YXJnZXQsIEJyZWFrSXRlcmF0b3IgYnJlYWtlciwKKyAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHBhdHRlcm4pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3VwZXIodGFyZ2V0LCBicmVha2VyKTsKKyAgICAgICAgICAgICAgICB0aGlzLnBhdHRlcm4gPSBwYXR0ZXJuOworICAgICAgICAgICAgICAgIFN0cmluZ0J1ZmZlciBidWZmZXIgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgICAgICAgICAgd2hpbGUgKHRhcmdldFRleHQuZ2V0SW5kZXgoKSAhPSB0YXJnZXRUZXh0LmdldEVuZEluZGV4KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZCh0YXJnZXRUZXh0LmN1cnJlbnQoKSk7CisgICAgICAgICAgICAgICAgICAgIHRhcmdldFRleHQubmV4dCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB0ZXh0ID0gYnVmZmVyLnRvU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgdGFyZ2V0VGV4dC5zZXRJbmRleCh0YXJnZXRUZXh0LmdldEJlZ2luSW5kZXgoKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwcm90ZWN0ZWQgaW50IGhhbmRsZU5leHQoaW50IHN0YXJ0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGludCBtYXRjaCA9IHRleHQuaW5kZXhPZihwYXR0ZXJuLCBzdGFydCk7CisgICAgICAgICAgICAgICAgaWYgKG1hdGNoIDwgMCkgeworICAgICAgICAgICAgICAgICAgICB0YXJnZXRUZXh0Lmxhc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERPTkU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRhcmdldFRleHQuc2V0SW5kZXgobWF0Y2gpOworICAgICAgICAgICAgICAgIHNldE1hdGNoTGVuZ3RoKHBhdHRlcm4ubGVuZ3RoKCkpOworICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHByb3RlY3RlZCBpbnQgaGFuZGxlUHJldmlvdXMoaW50IHN0YXJ0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGludCBtYXRjaCA9IHRleHQubGFzdEluZGV4T2YocGF0dGVybiwgc3RhcnQgLSAxKTsKKyAgICAgICAgICAgICAgICBpZiAobWF0Y2ggPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIHRhcmdldFRleHQuc2V0SW5kZXgoMCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBET05FOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB0YXJnZXRUZXh0LnNldEluZGV4KG1hdGNoKTsKKyAgICAgICAgICAgICAgICBzZXRNYXRjaExlbmd0aChwYXR0ZXJuLmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2g7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHB1YmxpYyBpbnQgZ2V0SW5kZXgoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGludCByZXN1bHQgPSB0YXJnZXRUZXh0LmdldEluZGV4KCk7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA8IDAgfHwgcmVzdWx0ID49IHRleHQubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERPTkU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFRlc3RTZWFyY2ggc2VhcmNoID0gbmV3IFRlc3RTZWFyY2goCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yKCJhYmMgYWJjZCBhYmMiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsLCAiYWJjIik7CisgICAgICAgIGludCBleHBlY3RlZFtdID0gezAsIDQsIDl9OworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGV4cGVjdGVkLmxlbmd0aDsgaSArKykgeworICAgICAgICAgICAgaWYgKHNlYXJjaC5uZXh0KCkgIT0gZXhwZWN0ZWRbaV0pIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRXJyb3IgZ2V0dGluZyBuZXh0IG1hdGNoIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc2VhcmNoLmdldE1hdGNoTGVuZ3RoKCkgIT0gc2VhcmNoLnBhdHRlcm4ubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRXJyb3IgZ2V0dGluZyBuZXh0IG1hdGNoIGxlbmd0aCIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChzZWFyY2gubmV4dCgpICE9IFNlYXJjaEl0ZXJhdG9yLkRPTkUpIHsKKyAgICAgICAgICAgIGVycmxuKCJFcnJvciBzaG91bGQgaGF2ZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGl0ZXJhdGlvbiIpOworICAgICAgICB9CisgICAgICAgIGZvciAoaW50IGkgPSBleHBlY3RlZC5sZW5ndGggLSAxOyBpID49IDA7IGkgLS0pIHsKKyAgICAgICAgICAgIGlmIChzZWFyY2gucHJldmlvdXMoKSAhPSBleHBlY3RlZFtpXSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJFcnJvciBnZXR0aW5nIG5leHQgbWF0Y2giKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzZWFyY2guZ2V0TWF0Y2hMZW5ndGgoKSAhPSBzZWFyY2gucGF0dGVybi5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJFcnJvciBnZXR0aW5nIG5leHQgbWF0Y2ggbGVuZ3RoIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNlYXJjaC5wcmV2aW91cygpICE9IFNlYXJjaEl0ZXJhdG9yLkRPTkUpIHsKKyAgICAgICAgICAgIGVycmxuKCJFcnJvciBzaG91bGQgaGF2ZSByZWFjaGVkIHRoZSBzdGFydCBvZiB0aGUgaXRlcmF0aW9uIik7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3NlYXJjaC9wYWNrYWdlLmh0bWwgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3Qvc2VhcmNoL3BhY2thZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wZmFkMmUyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3NlYXJjaC9wYWNrYWdlLmh0bWwKQEAgLTAsMCArMSwxNSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzwhLS0gIENvcHlyaWdodCAoQykgMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQKKyAgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorCisgICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9zZWFyY2gvcGFja2FnZS5odG1sLHYgJAorICAkUmV2aXNpb246IDEuMSAkCisgICREYXRlOiAyMDAwLzAzLzE1IDIxOjM1OjUwICQKKy0tPgorPC9oZWFkPgorPGJvZHkgYmdjb2xvcj0id2hpdGUiPgorVGVzdHMgZm9yIHRoZSBpbnRlcm5hdGlvbmFsIHNlYXJjaCBjbGFzc2VzLgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC9zaGFwaW5nL0FyYWJpY1NoYXBpbmdSZWdUZXN0LmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3Qvc2hhcGluZy9BcmFiaWNTaGFwaW5nUmVnVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjAyYmExNzcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3Qvc2hhcGluZy9BcmFiaWNTaGFwaW5nUmVnVGVzdC5qYXZhCkBAIC0wLDAgKzEsNDg2IEBACisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgIENvcHlyaWdodCAoQykgMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworKiAgIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudGVzdC5zaGFwaW5nOworCitpbXBvcnQgY29tLmlibS5pY3UuZGV2LnRlc3QuVGVzdEZtd2s7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC5BcmFiaWNTaGFwaW5nOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuQXJhYmljU2hhcGluZ0V4Y2VwdGlvbjsKKworLyoqCisgKiBSZWdyZXNzaW9uIHRlc3QgZm9yIEFyYWJpYyBzaGFwaW5nLgorICovCitwdWJsaWMgY2xhc3MgQXJhYmljU2hhcGluZ1JlZ1Rlc3QgZXh0ZW5kcyBUZXN0Rm13ayB7CisKKyAgICAvKiBjb25zdGFudHMgY29waWVkIGZyb20gQXJhYmljU2hhcGluZyBmb3IgY29udmVuaWVuY2UgKi8KKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IExFTkdUSF9HUk9XX1NIUklOSyA9IDA7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTEVOR1RIX0ZJWEVEX1NQQUNFU19ORUFSID0gMTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBMRU5HVEhfRklYRURfU1BBQ0VTX0FUX0VORCA9IDI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTEVOR1RIX0ZJWEVEX1NQQUNFU19BVF9CRUdJTk5JTkcgPSAzOworCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVEVYVF9ESVJFQ1RJT05fTE9HSUNBTCA9IDA7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVEVYVF9ESVJFQ1RJT05fVklTVUFMX0xUUiA9IDQ7CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBMRVRURVJTX05PT1AgPSAwOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IExFVFRFUlNfU0hBUEUgPSA4OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IExFVFRFUlNfU0hBUEVfVEFTSEtFRUxfSVNPTEFURUQgPSAweDE4OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IExFVFRFUlNfVU5TSEFQRSA9IDB4MTA7CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBESUdJVFNfTk9PUCA9IDA7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRElHSVRTX0VOMkFOID0gMHgyMDsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBESUdJVFNfQU4yRU4gPSAweDQwOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERJR0lUU19FTjJBTl9JTklUX0xSID0gMHg2MDsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBESUdJVFNfRU4yQU5fSU5JVF9BTCA9IDB4ODA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IERJR0lUU19SRVNFUlZFRCA9IDB4YTA7CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBESUdJVF9UWVBFX0FOID0gMDsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBESUdJVF9UWVBFX0FOX0VYVEVOREVEID0gMHgxMDA7CisKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFRlc3REYXRhIHsKKyAgICAgICAgcHVibGljIGludCB0eXBlOworICAgICAgICBwdWJsaWMgU3RyaW5nIHNvdXJjZTsKKyAgICAgICAgcHVibGljIGludCBmbGFnczsKKyAgICAgICAgcHVibGljIFN0cmluZyByZXN1bHQ7CisgICAgICAgIHB1YmxpYyBpbnQgbGVuZ3RoOworICAgICAgICBwdWJsaWMgQ2xhc3MgZXJyb3I7CisKKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1RBTkRBUkQgPSAwOworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBQUkVGTElHSFQgPSAxOworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBFUlJPUiA9IDI7CisKKyAgICAgICAgcHVibGljIHN0YXRpYyBUZXN0RGF0YSBzdGFuZGFyZChTdHJpbmcgc291cmNlLCBpbnQgZmxhZ3MsIFN0cmluZyByZXN1bHQpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgVGVzdERhdGEoU1RBTkRBUkQsIHNvdXJjZSwgZmxhZ3MsIHJlc3VsdCwgMCwgbnVsbCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHB1YmxpYyBzdGF0aWMgVGVzdERhdGEgcHJlZmxpZ2h0KFN0cmluZyBzb3VyY2UsIGludCBmbGFncywgaW50IGxlbmd0aCkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBUZXN0RGF0YShQUkVGTElHSFQsIHNvdXJjZSwgZmxhZ3MsIG51bGwsIGxlbmd0aCwgbnVsbCk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgc3RhdGljIFRlc3REYXRhIGVycm9yKFN0cmluZyBzb3VyY2UsIGludCBmbGFncywgQ2xhc3MgZXJyb3IpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgVGVzdERhdGEoRVJST1IsIHNvdXJjZSwgZmxhZ3MsIG51bGwsIDAsIGVycm9yKTsKKyAgICAgICAgfQorCisgICAgICAgIHByaXZhdGUgVGVzdERhdGEoaW50IHR5cGUsIFN0cmluZyBzb3VyY2UsIGludCBmbGFncywgU3RyaW5nIHJlc3VsdCwgaW50IGxlbmd0aCwgQ2xhc3MgZXJyb3IpIHsKKyAgICAgICAgICAgIHRoaXMudHlwZSA9IHR5cGU7CisgICAgICAgICAgICB0aGlzLnNvdXJjZSA9IHNvdXJjZTsKKyAgICAgICAgICAgIHRoaXMuZmxhZ3MgPSBmbGFnczsKKyAgICAgICAgICAgIHRoaXMucmVzdWx0ID0gcmVzdWx0OworICAgICAgICAgICAgdGhpcy5sZW5ndGggPSBsZW5ndGg7CisgICAgICAgICAgICB0aGlzLmVycm9yID0gZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmdbXSB0eXBlbmFtZXMgPSB7ICJzdGFuZGFyZCIsICJwcmVmbGlnaHQiLCAiZXJyb3IiIH07CisKKyAgICAgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgICAgIFN0cmluZ0J1ZmZlciBidWYgPSBuZXcgU3RyaW5nQnVmZmVyKHN1cGVyLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgYnVmLmFwcGVuZCgiW1xuIik7CisgICAgICAgICAgICBidWYuYXBwZW5kKHR5cGVuYW1lc1t0eXBlXSk7CisgICAgICAgICAgICBidWYuYXBwZW5kKCIsXG4iKTsKKyAgICAgICAgICAgIGlmIChzb3VyY2UgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIm51bGwiKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgnIicpOworICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoZXNjYXBlZFN0cmluZyhzb3VyY2UpKTsKKyAgICAgICAgICAgICAgICBidWYuYXBwZW5kKCciJyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBidWYuYXBwZW5kKCIsXG4iKTsKKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQoSW50ZWdlci50b0hleFN0cmluZyhmbGFncykpOworICAgICAgICAgICAgYnVmLmFwcGVuZCgiLFxuIik7CisgICAgICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBidWYuYXBwZW5kKCJudWxsIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoJyInKTsKKyAgICAgICAgICAgICAgICBidWYuYXBwZW5kKGVzY2FwZWRTdHJpbmcocmVzdWx0KSk7CisgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgnIicpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnVmLmFwcGVuZCgiLFxuIik7CisgICAgICAgICAgICBidWYuYXBwZW5kKGxlbmd0aCk7CisgICAgICAgICAgICBidWYuYXBwZW5kKCIsXG4iKTsKKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQoZXJyb3IpOworICAgICAgICAgICAgYnVmLmFwcGVuZCgnXScpOworICAgICAgICAgICAgcmV0dXJuIGJ1Zi50b1N0cmluZygpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIGxhbUFsZWZTcGVjaWFsVkxUUiA9CisgICAgICAgICJcdTAwMjBcdTA2NDZcdTA2MjJcdTA2NDRcdTA2MjdcdTAwMjAiICsKKyAgICAgCSJcdTA2NDZcdTA2MjNcdTA2NEVcdTA2NDRcdTA2MjdcdTAwMjAiICsKKyAgICAgCSJcdTA2NDZcdTA2MjdcdTA2NzBcdTA2NDRcdTA2MjdcdTAwMjAiICsKKyAgICAgCSJcdTA2NDZcdTA2MjJcdTA2NTNcdTA2NDRcdTA2MjdcdTAwMjAiICsKKyAgICAgCSJcdTA2NDZcdTA2MjVcdTA2NTVcdTA2NDRcdTA2MjdcdTAwMjAiICsKKyAgICAgCSJcdTA2NDZcdTA2MjJcdTA2NTRcdTA2NDRcdTA2MjdcdTAwMjAiICsKKyAgICAgCSJcdUZFRkNcdTA2MzkiOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIHRhc2hrZWVsU3BlY2lhbFZMVFIgPSAKKyAgICAgICAgIlx1MDY0QVx1MDYyOFx1MDYzMVx1MDYzOVx1MDAyMCIgKworICAgICAgICAiXHUwNjRBXHUwNjI4XHUwNjUxXHUwNjMxXHUwNjRFXHUwNjM5XHUwMDIwIiArCisgICAgICAgICJcdTA2NENcdTA2NEFcdTA2MjhcdTA2MzFcdTA2NEZcdTA2MzlcdTAwMjAiICsKKyAgICAgICAgIlx1MDYyOFx1MDY3MFx1MDYzMVx1MDY3MFx1MDYzOVx1MDAyMCIgKworICAgICAgICAiXHUwNjI4XHUwNjUzXHUwNjMxXHUwNjUzXHUwNjM5XHUwMDIwIiArCisgICAgICAgICJcdTA2MjhcdTA2NTRcdTA2MzFcdTA2NTRcdTA2MzlcdTAwMjAiICsKKyAgICAgICAgIlx1MDYyOFx1MDY1NVx1MDYzMVx1MDY1NVx1MDYzOVx1MDAyMCI7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgbG9naWNhbFVuc2hhcGUgPSAKKyAgICAgICAgIlx1MDAyMFx1MDAyMFx1MDAyMFx1RkU4RFx1RkVGNVx1MDAyMFx1RkVFNVx1MDAyMFx1RkU4RFx1RkVGN1x1MDAyMCIgKworICAgICAgICAiXHVGRUQ3XHVGRUZDXHUwMDIwXHVGRUUxXHUwMDIwXHVGRThEXHVGRURGXHVGRUNDXHVGRUFFXHVGRTkxXHVGRUY0IiArCisgICAgICAgICJcdUZFOTRcdTAwMjBcdUZFOERcdUZFREZcdUZFQTRcdUZFQUVcdUZFOTNcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjAiOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIG51bVNvdXJjZSA9CisgICAgICAgICJcdTAwMzEiICsgIC8qIGVuOjEgKi8KKyAgICAgICAgIlx1MDYyNyIgKyAgLyogYXJhYmljOmFsZWYgKi8KKyAgICAgICAgIlx1MDAzMiIgKyAgLyogZW46MiAqLworICAgICAgICAiXHUwNmYzIiArICAvKiBhbjozICovCisgICAgICAgICJcdTAwNjEiICsgIC8qIGxhdGluOmEgKi8KKyAgICAgICAgIlx1MDAzNCI7ICAgLyogZW46NCAqLworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgVGVzdERhdGFbXSBzdGFuZGFyZFRlc3RzID0geworICAgICAgICAvKiBsYW0gYWxlZiBzcGVjaWFsIHZpc3VhbCBsdHIgKi8KKyAgICAgICAgVGVzdERhdGEuc3RhbmRhcmQobGFtQWxlZlNwZWNpYWxWTFRSLAorICAgICAgICAgICAgICAgICAgICAgICAgICBMRVRURVJTX1NIQVBFIHwgVEVYVF9ESVJFQ1RJT05fVklTVUFMX0xUUiB8IExFTkdUSF9GSVhFRF9TUEFDRVNfTkVBUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MDAyMFx1ZmVlNVx1MDAyMFx1ZmVmNVx1ZmU4ZFx1MDAyMCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVmZWU1XHUwMDIwXHVmZTc2XHVmZWY3XHVmZThkXHUwMDIwIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWZlZTVcdTAwMjBcdTA2NzBcdWZlZmJcdWZlOGRcdTAwMjAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1ZmVlNVx1MDAyMFx1MDY1M1x1ZmVmNVx1ZmU4ZFx1MDAyMCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVmZWU1XHUwMDIwXHUwNjU1XHVmZWY5XHVmZThkXHUwMDIwIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWZlZTVcdTAwMjBcdTA2NTRcdWZlZjVcdWZlOGRcdTAwMjAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1ZmVmY1x1ZmVjYiIpLAorICAgICAgICBUZXN0RGF0YS5zdGFuZGFyZChsYW1BbGVmU3BlY2lhbFZMVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIExFVFRFUlNfU0hBUEUgfCBURVhUX0RJUkVDVElPTl9WSVNVQUxfTFRSIHwgTEVOR1RIX0ZJWEVEX1NQQUNFU19BVF9FTkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTAwMjBcdWZlZTVcdWZlZjVcdWZlOGRcdTAwMjBcdWZlZTUiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1ZmU3Nlx1ZmVmN1x1ZmU4ZFx1MDAyMFx1ZmVlNVx1MDY3MCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVmZWZiXHVmZThkXHUwMDIwXHVmZWU1XHUwNjUzXHVmZWY1IiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWZlOGRcdTAwMjBcdWZlZTVcdTA2NTVcdWZlZjlcdWZlOGQiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MDAyMFx1ZmVlNVx1MDY1NFx1ZmVmNVx1ZmU4ZFx1MDAyMCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVmZWZjXHVmZWNiXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTAwMjBcdTAwMjAiKSwKKyAgICAgICAgVGVzdERhdGEuc3RhbmRhcmQobGFtQWxlZlNwZWNpYWxWTFRSLAorICAgICAgICAgICAgICAgICAgICAgICAgICBMRVRURVJTX1NIQVBFIHwgVEVYVF9ESVJFQ1RJT05fVklTVUFMX0xUUiB8IExFTkdUSF9GSVhFRF9TUEFDRVNfQVRfQkVHSU5OSU5HLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTAwMjBcdWZlZTVcdWZlZjVcdWZlOGRcdTAwMjBcdWZlZTUiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1ZmU3Nlx1ZmVmN1x1ZmU4ZFx1MDAyMFx1ZmVlNVx1MDY3MCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVmZWZiXHVmZThkXHUwMDIwXHVmZWU1XHUwNjUzXHVmZWY1IiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWZlOGRcdTAwMjBcdWZlZTVcdTA2NTVcdWZlZjlcdWZlOGQiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MDAyMFx1ZmVlNVx1MDY1NFx1ZmVmNVx1ZmU4ZFx1MDAyMCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVmZWZjXHVmZWNiIiksCisgICAgICAgIFRlc3REYXRhLnN0YW5kYXJkKGxhbUFsZWZTcGVjaWFsVkxUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTEVUVEVSU19TSEFQRSB8IFRFWFRfRElSRUNUSU9OX1ZJU1VBTF9MVFIgfCBMRU5HVEhfR1JPV19TSFJJTkssCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTAwMjBcdWZlZTVcdWZlZjVcdWZlOGRcdTAwMjBcdWZlZTUiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1ZmU3Nlx1ZmVmN1x1ZmU4ZFx1MDAyMFx1ZmVlNVx1MDY3MCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVmZWZiXHVmZThkXHUwMDIwXHVmZWU1XHUwNjUzXHVmZWY1IiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWZlOGRcdTAwMjBcdWZlZTVcdTA2NTVcdWZlZjlcdWZlOGQiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MDAyMFx1ZmVlNVx1MDY1NFx1ZmVmNVx1ZmU4ZFx1MDAyMCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVmZWZjXHVmZWNiIiksCisKKyAgICAgICAgLyogVEFTSEtFRUwgKi8KKyAgICAgICAgVGVzdERhdGEuc3RhbmRhcmQobGFtQWxlZlNwZWNpYWxWTFRSLAorICAgICAgICAgICAgICAgICAgICAgICAgICBMRVRURVJTX1NIQVBFX1RBU0hLRUVMX0lTT0xBVEVEIHwgVEVYVF9ESVJFQ1RJT05fVklTVUFMX0xUUiB8IExFTkdUSF9GSVhFRF9TUEFDRVNfTkVBUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MDAyMFx1ZmVlNVx1MDAyMFx1ZmVmNVx1ZmU4ZFx1MDAyMCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVmZWU1XHUwMDIwXHVmZTc2XHVmZWY3XHVmZThkXHUwMDIwIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWZlZTVcdTAwMjBcdTA2NzBcdWZlZmJcdWZlOGRcdTAwMjAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1ZmVlNVx1MDAyMFx1MDY1M1x1ZmVmNVx1ZmU4ZFx1MDAyMCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVmZWU1XHUwMDIwXHUwNjU1XHVmZWY5XHVmZThkXHUwMDIwIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWZlZTVcdTAwMjBcdTA2NTRcdWZlZjVcdWZlOGRcdTAwMjAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1ZmVmY1x1ZmVjYiIpLAorICAgICAgICBUZXN0RGF0YS5zdGFuZGFyZChsYW1BbGVmU3BlY2lhbFZMVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIExFVFRFUlNfU0hBUEVfVEFTSEtFRUxfSVNPTEFURUQgfCBURVhUX0RJUkVDVElPTl9WSVNVQUxfTFRSIHwgTEVOR1RIX0ZJWEVEX1NQQUNFU19BVF9FTkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTAwMjBcdWZlZTVcdWZlZjVcdWZlOGRcdTAwMjBcdWZlZTUiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1ZmU3Nlx1ZmVmN1x1ZmU4ZFx1MDAyMFx1ZmVlNVx1MDY3MCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVmZWZiXHVmZThkXHUwMDIwXHVmZWU1XHUwNjUzXHVmZWY1IiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWZlOGRcdTAwMjBcdWZlZTVcdTA2NTVcdWZlZjlcdWZlOGQiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MDAyMFx1ZmVlNVx1MDY1NFx1ZmVmNVx1ZmU4ZFx1MDAyMCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVmZWZjXHVmZWNiXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTAwMjBcdTAwMjAiKSwKKyAgICAgICAgVGVzdERhdGEuc3RhbmRhcmQobGFtQWxlZlNwZWNpYWxWTFRSLAorICAgICAgICAgICAgICAgICAgICAgICAgICBMRVRURVJTX1NIQVBFX1RBU0hLRUVMX0lTT0xBVEVEIHwgVEVYVF9ESVJFQ1RJT05fVklTVUFMX0xUUiB8IExFTkdUSF9GSVhFRF9TUEFDRVNfQVRfQkVHSU5OSU5HLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTAwMjBcdWZlZTVcdWZlZjVcdWZlOGRcdTAwMjBcdWZlZTUiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1ZmU3Nlx1ZmVmN1x1ZmU4ZFx1MDAyMFx1ZmVlNVx1MDY3MCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVmZWZiXHVmZThkXHUwMDIwXHVmZWU1XHUwNjUzXHVmZWY1IiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWZlOGRcdTAwMjBcdWZlZTVcdTA2NTVcdWZlZjlcdWZlOGQiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MDAyMFx1ZmVlNVx1MDY1NFx1ZmVmNVx1ZmU4ZFx1MDAyMCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVmZWZjXHVmZWNiIiksCisgICAgICAgIFRlc3REYXRhLnN0YW5kYXJkKGxhbUFsZWZTcGVjaWFsVkxUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTEVUVEVSU19TSEFQRV9UQVNIS0VFTF9JU09MQVRFRCB8IFRFWFRfRElSRUNUSU9OX1ZJU1VBTF9MVFIgfCBMRU5HVEhfR1JPV19TSFJJTkssCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTAwMjBcdWZlZTVcdWZlZjVcdWZlOGRcdTAwMjBcdWZlZTUiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1ZmU3Nlx1ZmVmN1x1ZmU4ZFx1MDAyMFx1ZmVlNVx1MDY3MCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVmZWZiXHVmZThkXHUwMDIwXHVmZWU1XHUwNjUzXHVmZWY1IiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWZlOGRcdTAwMjBcdWZlZTVcdTA2NTVcdWZlZjlcdWZlOGQiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MDAyMFx1ZmVlNVx1MDY1NFx1ZmVmNVx1ZmU4ZFx1MDAyMCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVmZWZjXHVmZWNiIiksCisKKyAgICAgICAgLyogdGFzaGtlZWwgc3BlY2lhbCB2aXN1YWwgbHRyICovCisgICAgICAgIFRlc3REYXRhLnN0YW5kYXJkKHRhc2hrZWVsU3BlY2lhbFZMVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIExFVFRFUlNfU0hBUEUgfCBURVhUX0RJUkVDVElPTl9WSVNVQUxfTFRSIHwgTEVOR1RIX0ZJWEVEX1NQQUNFU19ORUFSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVmZWYyXHVmZTkxXHVmZWFlXHVmZWNiXHUwMDIwIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWZlZjJcdWZlOTFcdWZlN2NcdWZlYWVcdWZlNzdcdWZlY2JcdTAwMjAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1ZmU3Mlx1ZmVmMlx1ZmU5MVx1ZmVhZVx1ZmU3OVx1ZmVjYlx1MDAyMCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVmZThmXHUwNjcwXHVmZWFlXHUwNjcwXHVmZWNiXHUwMDIwIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWZlOGZcdTA2NTNcdWZlYWVcdTA2NTNcdWZlY2JcdTAwMjAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1ZmU4Zlx1MDY1NFx1ZmVhZVx1MDY1NFx1ZmVjYlx1MDAyMCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVmZThmXHUwNjU1XHVmZWFlXHUwNjU1XHVmZWNiXHUwMDIwIiksCisKKyAgICAgICAgVGVzdERhdGEuc3RhbmRhcmQodGFzaGtlZWxTcGVjaWFsVkxUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTEVUVEVSU19TSEFQRV9UQVNIS0VFTF9JU09MQVRFRCB8IFRFWFRfRElSRUNUSU9OX1ZJU1VBTF9MVFIgfCBMRU5HVEhfRklYRURfU1BBQ0VTX05FQVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWZlZjJcdWZlOTFcdWZlYWVcdWZlY2JcdTAwMjAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1ZmVmMlx1ZmU5MVx1ZmU3Y1x1ZmVhZVx1ZmU3Nlx1ZmVjYlx1MDAyMCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVmZTcyXHVmZWYyXHVmZTkxXHVmZWFlXHVmZTc4XHVmZWNiXHUwMDIwIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWZlOGZcdTA2NzBcdWZlYWVcdTA2NzBcdWZlY2JcdTAwMjAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1ZmU4Zlx1MDY1M1x1ZmVhZVx1MDY1M1x1ZmVjYlx1MDAyMCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVmZThmXHUwNjU0XHVmZWFlXHUwNjU0XHVmZWNiXHUwMDIwIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWZlOGZcdTA2NTVcdWZlYWVcdTA2NTVcdWZlY2JcdTAwMjAiKSwKKworICAgICAgICAvKiBsb2dpY2FsIHVuc2hhcGUgKi8KKyAgICAgICAgVGVzdERhdGEuc3RhbmRhcmQobG9naWNhbFVuc2hhcGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIExFVFRFUlNfVU5TSEFQRSB8IFRFWFRfRElSRUNUSU9OX0xPR0lDQUwgfCBMRU5HVEhfRklYRURfU1BBQ0VTX05FQVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTAwMjBcdTAwMjBcdTAwMjBcdTA2MjdcdTA2NDRcdTA2MjJcdTA2NDZcdTAwMjBcdTA2MjdcdTA2NDRcdTA2MjNcdTA2NDJcdTA2NDRcdTA2MjciICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MDY0NVx1MDAyMFx1MDYyN1x1MDY0NFx1MDYzOVx1MDYzMVx1MDYyOFx1MDY0YVx1MDYyOVx1MDAyMFx1MDYyN1x1MDY0NFx1MDYyZFx1MDYzMSIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUwNjI5XHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwIiksCisgICAgICAgIFRlc3REYXRhLnN0YW5kYXJkKGxvZ2ljYWxVbnNoYXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBMRVRURVJTX1VOU0hBUEUgfCBURVhUX0RJUkVDVElPTl9MT0dJQ0FMIHwgTEVOR1RIX0ZJWEVEX1NQQUNFU19BVF9FTkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTAwMjBcdTAwMjBcdTAwMjBcdTA2MjdcdTA2NDRcdTA2MjJcdTAwMjBcdTA2NDZcdTAwMjBcdTA2MjdcdTA2NDRcdTA2MjNcdTAwMjBcdTA2NDIiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MDY0NFx1MDYyN1x1MDAyMFx1MDY0NVx1MDAyMFx1MDYyN1x1MDY0NFx1MDYzOVx1MDYzMVx1MDYyOFx1MDY0YVx1MDYyOVx1MDAyMFx1MDYyNyIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUwNjQ0XHUwNjJkXHUwNjMxXHUwNjI5XHUwMDIwIiksCisgICAgICAgIFRlc3REYXRhLnN0YW5kYXJkKGxvZ2ljYWxVbnNoYXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBMRVRURVJTX1VOU0hBUEUgfCBURVhUX0RJUkVDVElPTl9MT0dJQ0FMIHwgTEVOR1RIX0ZJWEVEX1NQQUNFU19BVF9CRUdJTk5JTkcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTA2MjdcdTA2NDRcdTA2MjJcdTAwMjBcdTA2NDZcdTAwMjBcdTA2MjdcdTA2NDRcdTA2MjNcdTAwMjBcdTA2NDJcdTA2NDRcdTA2MjdcdTAwMjAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MDY0NVx1MDAyMFx1MDYyN1x1MDY0NFx1MDYzOVx1MDYzMVx1MDYyOFx1MDY0YVx1MDYyOVx1MDAyMFx1MDYyN1x1MDY0NFx1MDYyZFx1MDYzMSIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUwNjI5XHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwIiksCisgICAgICAgIFRlc3REYXRhLnN0YW5kYXJkKGxvZ2ljYWxVbnNoYXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBMRVRURVJTX1VOU0hBUEUgfCBURVhUX0RJUkVDVElPTl9MT0dJQ0FMIHwgTEVOR1RIX0dST1dfU0hSSU5LLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUwMDIwXHUwMDIwXHUwMDIwXHUwNjI3XHUwNjQ0XHUwNjIyXHUwMDIwXHUwNjQ2XHUwMDIwXHUwNjI3XHUwNjQ0XHUwNjIzXHUwMDIwXHUwNjQyIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTA2NDRcdTA2MjdcdTAwMjBcdTA2NDVcdTAwMjBcdTA2MjdcdTA2NDRcdTA2MzlcdTA2MzFcdTA2MjhcdTA2NGFcdTA2MjlcdTAwMjBcdTA2MjciICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MDY0NFx1MDYyZFx1MDYzMVx1MDYyOVx1MDAyMFx1MDAyMFx1MDAyMFx1MDAyMCIpLAorCisgICAgICAgIC8qIG51bWJlcnMgKi8KKyAgICAgICAgVGVzdERhdGEuc3RhbmRhcmQobnVtU291cmNlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRElHSVRTX0VOMkFOIHwgRElHSVRfVFlQRV9BTiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTA2NjFcdTA2MjdcdTA2NjJcdTA2ZjNcdTAwNjFcdTA2NjQiKSwKKyAgICAgICAgVGVzdERhdGEuc3RhbmRhcmQobnVtU291cmNlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRElHSVRTX0FOMkVOIHwgRElHSVRfVFlQRV9BTl9FWFRFTkRFRCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTAwMzFcdTA2MjdcdTAwMzJcdTAwMzNcdTAwNjFcdTAwMzQiKSwKKyAgICAgICAgVGVzdERhdGEuc3RhbmRhcmQobnVtU291cmNlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRElHSVRTX0VOMkFOX0lOSVRfTFIgfCBESUdJVF9UWVBFX0FOLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MDAzMVx1MDYyN1x1MDY2Mlx1MDZmM1x1MDA2MVx1MDAzNCIpLAorICAgICAgICBUZXN0RGF0YS5zdGFuZGFyZChudW1Tb3VyY2UsIAorICAgICAgICAgICAgICAgICAgICAgICAgICBESUdJVFNfRU4yQU5fSU5JVF9BTCB8IERJR0lUX1RZUEVfQU5fRVhURU5ERUQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUwNmYxXHUwNjI3XHUwNmYyXHUwNmYzXHUwMDYxXHUwMDM0IiksCisgICAgICAgIFRlc3REYXRhLnN0YW5kYXJkKG51bVNvdXJjZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgIERJR0lUU19FTjJBTl9JTklUX0xSIHwgRElHSVRfVFlQRV9BTiB8IFRFWFRfRElSRUNUSU9OX1ZJU1VBTF9MVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTA2NjFcdTA2MjdcdTAwMzJcdTA2ZjNcdTAwNjFcdTAwMzQiKSwKKyAgICAgICAgVGVzdERhdGEuc3RhbmRhcmQobnVtU291cmNlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRElHSVRTX0VOMkFOX0lOSVRfQUwgfCBESUdJVF9UWVBFX0FOX0VYVEVOREVEIHwgVEVYVF9ESVJFQ1RJT05fVklTVUFMX0xUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MDZmMVx1MDYyN1x1MDAzMlx1MDZmM1x1MDA2MVx1MDZmNCIpLAorCisgICAgICAgIC8qIG5vLW9wICovCisgICAgICAgIFRlc3REYXRhLnN0YW5kYXJkKG51bVNvdXJjZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG51bVNvdXJjZSksCisgICAgfTsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFRlc3REYXRhW10gcHJlZmxpZ2h0VGVzdHMgPSB7CisgICAgICAgIC8qIHByZWZsaWdodCAqLworICAgICAgICBUZXN0RGF0YS5wcmVmbGlnaHQoIlx1MDY0NFx1MDYyNyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBMRVRURVJTX1NIQVBFIHwgTEVOR1RIX0dST1dfU0hSSU5LLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgMSksCisKKyAgICAgICAgVGVzdERhdGEucHJlZmxpZ2h0KCJcdTA2NDRcdTA2MjdcdTAwMzEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRElHSVRTX0VOMkFOIHwgRElHSVRfVFlQRV9BTl9FWFRFTkRFRCB8IExFTkdUSF9HUk9XX1NIUklOSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDMpLAorCisgICAgICAgIFRlc3REYXRhLnByZWZsaWdodCgiXHUwNjQ0XHUwNjQ0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIExFVFRFUlNfU0hBUEUgfCBMRU5HVEhfR1JPV19TSFJJTkssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAyKSwKKworICAgICAgICBUZXN0RGF0YS5wcmVmbGlnaHQoIlx1ZmVmNyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBMRVRURVJTX1VOU0hBUEUgfCBMRU5HVEhfR1JPV19TSFJJTkssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAyKSwKKyAgICB9OworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgVGVzdERhdGFbXSBlcnJvclRlc3RzID0geworICAgICAgICAvKiBiYWQgZGF0YSAqLworICAgICAgICBUZXN0RGF0YS5lcnJvcigiXHUwMDIwXHVmZWY3XHUwNjQ0XHUwMDIwIiwKKyAgICAgICAgICAgICAgICAgICAgICAgTEVUVEVSU19VTlNIQVBFIHwgTEVOR1RIX0ZJWEVEX1NQQUNFU19ORUFSLAorICAgICAgICAgICAgICAgICAgICAgICBBcmFiaWNTaGFwaW5nRXhjZXB0aW9uLmNsYXNzKSwKKworICAgICAgICBUZXN0RGF0YS5lcnJvcigiXHUwMDIwXHVmZWY3IiwKKyAgICAgICAgICAgICAgICAgICAgICAgTEVUVEVSU19VTlNIQVBFIHwgTEVOR1RIX0ZJWEVEX1NQQUNFU19BVF9FTkQsCisgICAgICAgICAgICAgICAgICAgICAgIEFyYWJpY1NoYXBpbmdFeGNlcHRpb24uY2xhc3MpLAorCisgICAgICAgIFRlc3REYXRhLmVycm9yKCJcdWZlZjdcdTAwMjAiLAorICAgICAgICAgICAgICAgICAgICAgICBMRVRURVJTX1VOU0hBUEUgfCBMRU5HVEhfRklYRURfU1BBQ0VTX0FUX0JFR0lOTklORywKKyAgICAgICAgICAgICAgICAgICAgICAgQXJhYmljU2hhcGluZ0V4Y2VwdGlvbi5jbGFzcyksCisKKyAgICAgICAgLyogYmFkIG9wdGlvbnMgKi8KKyAgICAgICAgVGVzdERhdGEuZXJyb3IoIlx1ZmVmNyIsCisgICAgICAgICAgICAgICAgICAgICAgIDB4ZmZmZmZmZmYsCisgICAgICAgICAgICAgICAgICAgICAgIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbi5jbGFzcyksCisgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBUZXN0RGF0YS5lcnJvcigiXHVmZWY3IiwKKyAgICAgICAgICAgICAgICAgICAgICAgTEVUVEVSU19VTlNIQVBFIHwgTEVOR1RIX0dST1dfU0hSSU5LLAorICAgICAgICAgICAgICAgICAgICAgICBBcmFiaWNTaGFwaW5nRXhjZXB0aW9uLmNsYXNzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIFRlc3REYXRhLmVycm9yKG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgIExFVFRFUlNfVU5TSEFQRSB8IExFTkdUSF9GSVhFRF9TUEFDRVNfQVRfRU5ELAorICAgICAgICAgICAgICAgICAgICAgICBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24uY2xhc3MpLAorICAgIH07CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0U3RhbmRhcmQoKSB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc3RhbmRhcmRUZXN0cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgVGVzdERhdGEgdGVzdCA9IHN0YW5kYXJkVGVzdHNbaV07CisKKyAgICAgICAgICAgIEV4Y2VwdGlvbiBleCA9IG51bGw7CisgICAgICAgICAgICBTdHJpbmcgcmVzdWx0ID0gbnVsbDsKKyAgICAgICAgICAgIEFyYWJpY1NoYXBpbmcgc2hhcGVyID0gbnVsbDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBzaGFwZXIgPSBuZXcgQXJhYmljU2hhcGluZyh0ZXN0LmZsYWdzKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBzaGFwZXIuc2hhcGUodGVzdC5zb3VyY2UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgZXggPSBlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIXRlc3QucmVzdWx0LmVxdWFscyhyZXN1bHQpKSB7CisgICAgICAgICAgICAgICAgcmVwb3J0VGVzdEZhaWx1cmUoaSwgdGVzdCwgc2hhcGVyLCByZXN1bHQsIGV4KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCB0ZXN0UHJlZmxpZ2h0KCkgeworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHByZWZsaWdodFRlc3RzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBUZXN0RGF0YSB0ZXN0ID0gcHJlZmxpZ2h0VGVzdHNbaV07CisKKyAgICAgICAgICAgIEV4Y2VwdGlvbiBleCA9IG51bGw7CisgICAgICAgICAgICBjaGFyIHNyY1tdID0gbnVsbDsKKyAgICAgICAgICAgIGludCBsZW4gPSAwOworICAgICAgICAgICAgQXJhYmljU2hhcGluZyBzaGFwZXIgPSBudWxsOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAodGVzdC5zb3VyY2UgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHNyYyA9IHRlc3Quc291cmNlLnRvQ2hhckFycmF5KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgc2hhcGVyID0gbmV3IEFyYWJpY1NoYXBpbmcodGVzdC5mbGFncyk7CisgICAgICAgICAgICAgICAgbGVuID0gc2hhcGVyLnNoYXBlKHNyYywgMCwgc3JjLmxlbmd0aCwgbnVsbCwgMCwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBleCA9IGU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICh0ZXN0Lmxlbmd0aCAhPSBsZW4pIHsKKyAgICAgICAgICAgICAgICByZXBvcnRUZXN0RmFpbHVyZShpLCB0ZXN0LCBzaGFwZXIsIHRlc3Quc291cmNlLCBleCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgdGVzdEVycm9yKCkgeyAgICAgICAgICAgIAorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGVycm9yVGVzdHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIFRlc3REYXRhIHRlc3QgPSBlcnJvclRlc3RzW2ldOworCisgICAgICAgICAgICBFeGNlcHRpb24gZXggPSBudWxsOworICAgICAgICAgICAgY2hhciBzcmNbXSA9IG51bGw7CisgICAgICAgICAgICBpbnQgbGVuID0gMDsKKyAgICAgICAgICAgIEFyYWJpY1NoYXBpbmcgc2hhcGVyID0gbnVsbDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHRlc3Quc291cmNlICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBzcmMgPSB0ZXN0LnNvdXJjZS50b0NoYXJBcnJheSgpOworICAgICAgICAgICAgICAgIGxlbiA9IHNyYy5sZW5ndGg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgc2hhcGVyID0gbmV3IEFyYWJpY1NoYXBpbmcodGVzdC5mbGFncyk7CisgICAgICAgICAgICAgICAgc2hhcGVyLnNoYXBlKHNyYywgMCwgbGVuKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIGV4ID0gZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCF0ZXN0LmVycm9yLmlzSW5zdGFuY2UoZXgpKSB7CisgICAgICAgICAgICAgICAgcmVwb3J0VGVzdEZhaWx1cmUoaSwgdGVzdCwgc2hhcGVyLCB0ZXN0LnNvdXJjZSwgZXgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIHRlc3RFcXVhbHMoKQorICAgIHsKKyAgICAgICAgQXJhYmljU2hhcGluZyBhczEgPSBuZXcgQXJhYmljU2hhcGluZyhMRVRURVJTX1NIQVBFIHwgVEVYVF9ESVJFQ1RJT05fVklTVUFMX0xUUiB8IExFTkdUSF9GSVhFRF9TUEFDRVNfTkVBUik7CisgICAgICAgIEFyYWJpY1NoYXBpbmcgYXMyID0gbmV3IEFyYWJpY1NoYXBpbmcoTEVUVEVSU19TSEFQRSB8IFRFWFRfRElSRUNUSU9OX1ZJU1VBTF9MVFIgfCBMRU5HVEhfRklYRURfU1BBQ0VTX05FQVIpOworICAgICAgICBBcmFiaWNTaGFwaW5nIGFzMyA9IG5ldyBBcmFiaWNTaGFwaW5nKExFVFRFUlNfVU5TSEFQRSB8IFRFWFRfRElSRUNUSU9OX0xPR0lDQUwgfCBMRU5HVEhfRklYRURfU1BBQ0VTX0FUX0JFR0lOTklORyk7CisgICAgICAgIAorICAgICAgICBpZiAoISBhczEuZXF1YWxzKGFzMSkpIHsKKyAgICAgICAgICAgIGVycigiYXMxOiAiICsgYXMxICsgIiBkb2VzIG5vdCBlcXVhbCBpdHNlbGYhXG4iKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKCEgYXMxLmVxdWFscyhhczIpKSB7CisgICAgICAgICAgICBlcnIoImFzMTogIiArIGFzMSArICIsIGFzMjogIiArIGFzMiArICIgYXJlIG5vdCBlcXVhbCwgYnV0IHNob3VsZCBiZS5cbiIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoYXMxLmVxdWFscyhhczMpKSB7CisgICAgICAgICAgICBlcnIoImFzMTogIiArIGFzMSArICIsIGFzMzogIiArIGFzMyArICIgYXJlIGVxdWFsIGJ1dCBzaG91bGQgbm90IGJlLlxuIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCByZXBvcnRUZXN0RmFpbHVyZShpbnQgaW5kZXgsIFRlc3REYXRhIHRlc3QsIEFyYWJpY1NoYXBpbmcgc2hhcGVyLCBTdHJpbmcgcmVzdWx0LCBFeGNlcHRpb24gZXJyb3IpIHsKKyAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgYnVmLmFwcGVuZCgiKioqIHRlc3QgZmFpbHVyZSAqKipcbiIpOworICAgICAgICBidWYuYXBwZW5kKCJpbmRleDogIiArIGluZGV4ICsgIlxuIik7CisgICAgICAgIGJ1Zi5hcHBlbmQoInRlc3Q6ICIgKyB0ZXN0ICsgIlxuIik7CisgICAgICAgIGJ1Zi5hcHBlbmQoInNoYXBlcjogIiArIHNoYXBlciArICJcbiIpOworICAgICAgICBidWYuYXBwZW5kKCJyZXN1bHQ6ICIgKyBlc2NhcGVkU3RyaW5nKHJlc3VsdCkgKyAiXG4iKTsKKyAgICAgICAgYnVmLmFwcGVuZCgiZXJyb3I6ICIgKyBlcnJvciArICJcbiIpOworCisgICAgICAgIGlmIChyZXN1bHQgIT0gbnVsbCAmJiB0ZXN0LnJlc3VsdCAhPSBudWxsICYmICF0ZXN0LnJlc3VsdC5lcXVhbHMocmVzdWx0KSkgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNYXRoLm1heCh0ZXN0LnJlc3VsdC5sZW5ndGgoKSwgcmVzdWx0Lmxlbmd0aCgpKTsgKytpKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHRlbXAgPSBJbnRlZ2VyLnRvU3RyaW5nKGkpOworICAgICAgICAgICAgICAgIGlmICh0ZW1wLmxlbmd0aCgpIDwgMikgeworICAgICAgICAgICAgICAgICAgICB0ZW1wID0gIiAiLmNvbmNhdCh0ZW1wKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2hhciB0cmcgPSBpIDwgdGVzdC5yZXN1bHQubGVuZ3RoKCkgPyB0ZXN0LnJlc3VsdC5jaGFyQXQoaSkgOiAnXHVmZmZmJzsKKyAgICAgICAgICAgICAgICBjaGFyIHJlcyA9IGkgPCByZXN1bHQubGVuZ3RoKCkgPyByZXN1bHQuY2hhckF0KGkpIDogJ1x1ZmZmZic7CisKKyAgICAgICAgICAgICAgICBidWYuYXBwZW5kKCJbIiArIHRlbXAgKyAiXSAiKTsKKyAgICAgICAgICAgICAgICBidWYuYXBwZW5kKGVzY2FwZWRTdHJpbmcoIiIgKyB0cmcpICsgIiAiKTsKKyAgICAgICAgICAgICAgICBidWYuYXBwZW5kKGVzY2FwZWRTdHJpbmcoIiIgKyByZXMpICsgIiAiKTsKKyAgICAgICAgICAgICAgICBpZiAodHJnICE9IHJlcykgeworICAgICAgICAgICAgICAgICAgICBidWYuYXBwZW5kKCIqKioiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgiXG4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlcnIoYnVmLnRvU3RyaW5nKCkpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBlc2NhcGVkU3RyaW5nKFN0cmluZyBzdHIpIHsKKyAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZiA9IG5ldyBTdHJpbmdCdWZmZXIoc3RyLmxlbmd0aCgpICogNik7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc3RyLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgIGNoYXIgY2ggPSBzdHIuY2hhckF0KGkpOworICAgICAgICAgICAgYnVmLmFwcGVuZCgiXFx1Iik7CisgICAgICAgICAgICBpZiAoY2ggPCAweDEwMDApIHsKKyAgICAgICAgICAgICAgICBidWYuYXBwZW5kKCcwJyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY2ggPCAweDAxMDApIHsKKyAgICAgICAgICAgICAgICBidWYuYXBwZW5kKCcwJyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY2ggPCAweDAwMTApIHsKKyAgICAgICAgICAgICAgICBidWYuYXBwZW5kKCcwJyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBidWYuYXBwZW5kKEludGVnZXIudG9IZXhTdHJpbmcoY2gpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYnVmLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgbmV3IEFyYWJpY1NoYXBpbmdSZWdUZXN0KCkucnVuKGFyZ3MpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGUpOworICAgICAgICB9CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3Qvc2hhcGluZy9BcmFiaWNTaGFwaW5nVGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3NoYXBpbmcvQXJhYmljU2hhcGluZ1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wMjczMzVjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3NoYXBpbmcvQXJhYmljU2hhcGluZ1Rlc3QuamF2YQpAQCAtMCwwICsxLDI4NiBAQAorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICBDb3B5cmlnaHQgKEMpIDIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyogICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3Quc2hhcGluZzsKKworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuQXJhYmljU2hhcGluZzsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0LkFyYWJpY1NoYXBpbmdFeGNlcHRpb247CisKKy8qKgorICogSW50ZXJhY3RpdmUgdGVzdCBmb3IgQXJhYmljIHNoYXBpbmcuCisgKiBJbnZva2UgZnJvbSBhIGNvbW1hbmQgbGluZSBwYXNzaW5nIGFyZ3MgYW5kIHN0cmluZ3MuICBVc2UgJy1oZWxwJyB0byBzZWUgZGVzY3JpcHRpb24gb2YgYXJndW1lbnRzLgorICovCitwdWJsaWMgY2xhc3MgQXJhYmljU2hhcGluZ1Rlc3QgeworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDT1BZID0gMDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSU5QTEFDRSA9IDE7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNUUklORyA9IDI7CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIGludCB0ZXN0dHlwZSA9IENPUFk7CisgICAgICAgIGludCBvcHRpb25zID0gMDsKKyAgICAgICAgaW50IHNzID0gMDsKKyAgICAgICAgaW50IHNsID0gLTE7CisgICAgICAgIGludCBkcyA9IDA7CisgICAgICAgIGludCBkbCA9IC0xOworICAgICAgICBTdHJpbmcgdGV4dCA9ICIkMjIuNCB0ZXN0IDEyMyBcdWZlZjZcdTA2NDRcdTA2MjIgNDU2IFx1MDY2NFx1MDY2NVx1MDY2NiEiOworCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgU3RyaW5nIGFyZyA9IGFyZ3NbaV07CisgICAgICAgICAgICBpZiAoYXJnLmNoYXJBdCgwKSA9PSAnLScpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgb3B0ID0gYXJnLnN1YnN0cmluZygxKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgdmFsID0gb3B0OworICAgICAgICAgICAgICAgIGludCBpbmRleCA9IGFyZy5pbmRleE9mKCc6Jyk7CisgICAgICAgICAgICAgICAgaWYgKGluZGV4ICE9IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIG9wdCA9IG9wdC5zdWJzdHJpbmcoMCwgTWF0aC5taW4oaW5kZXgsIDMpKTsKKyAgICAgICAgICAgICAgICAgICAgdmFsID0gYXJnLnN1YnN0cmluZyhpbmRleCArIDEpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAob3B0LmVxdWFsc0lnbm9yZUNhc2UoImxlbiIpKSB7CisgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgJj0gfkFyYWJpY1NoYXBpbmcuTEVOR1RIX01BU0s7CisgICAgICAgICAgICAgICAgICAgIGlmICh2YWwuZXF1YWxzSWdub3JlQ2FzZSgiZ3MiKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyB8PSBBcmFiaWNTaGFwaW5nLkxFTkdUSF9HUk9XX1NIUklOSzsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWwuZXF1YWxzSWdub3JlQ2FzZSgic24iKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyB8PSBBcmFiaWNTaGFwaW5nLkxFTkdUSF9GSVhFRF9TUEFDRVNfTkVBUjsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWwuZXF1YWxzSWdub3JlQ2FzZSgic2UiKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyB8PSBBcmFiaWNTaGFwaW5nLkxFTkdUSF9GSVhFRF9TUEFDRVNfQVRfRU5EOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbC5lcXVhbHNJZ25vcmVDYXNlKCJzYiIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zIHw9IEFyYWJpY1NoYXBpbmcuTEVOR1RIX0ZJWEVEX1NQQUNFU19BVF9CRUdJTk5JTkc7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd1ZhbEVycm9yKG9wdCwgdmFsKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAob3B0LmVxdWFsc0lnbm9yZUNhc2UoImRpciIpKSB7CisgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgJj0gfkFyYWJpY1NoYXBpbmcuVEVYVF9ESVJFQ1RJT05fTUFTSzsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZhbC5lcXVhbHNJZ25vcmVDYXNlKCJsb2ciKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyB8PSBBcmFiaWNTaGFwaW5nLlRFWFRfRElSRUNUSU9OX0xPR0lDQUw7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsLmVxdWFsc0lnbm9yZUNhc2UoInZpcyIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zIHw9IEFyYWJpY1NoYXBpbmcuVEVYVF9ESVJFQ1RJT05fVklTVUFMX0xUUjsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93VmFsRXJyb3Iob3B0LCB2YWwpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChvcHQuZXF1YWxzSWdub3JlQ2FzZSgibGV0IikpIHsKKyAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyAmPSB+QXJhYmljU2hhcGluZy5MRVRURVJTX01BU0s7CisgICAgICAgICAgICAgICAgICAgIGlmICh2YWwuZXF1YWxzSWdub3JlQ2FzZSgibm8iKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyB8PSBBcmFiaWNTaGFwaW5nLkxFVFRFUlNfTk9PUDsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWwuZXF1YWxzSWdub3JlQ2FzZSgic2giKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyB8PSBBcmFiaWNTaGFwaW5nLkxFVFRFUlNfU0hBUEU7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsLmVxdWFsc0lnbm9yZUNhc2UoInVuIikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgfD0gQXJhYmljU2hhcGluZy5MRVRURVJTX1VOU0hBUEU7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsLmVxdWFsc0lnbm9yZUNhc2UoInRhIikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgfD0gQXJhYmljU2hhcGluZy5MRVRURVJTX1NIQVBFX1RBU0hLRUVMX0lTT0xBVEVEOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dWYWxFcnJvcihvcHQsIHZhbCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG9wdC5lcXVhbHNJZ25vcmVDYXNlKCJkaWciKSkgeworICAgICAgICAgICAgICAgICAgICBvcHRpb25zICY9IH5BcmFiaWNTaGFwaW5nLkRJR0lUU19NQVNLOworICAgICAgICAgICAgICAgICAgICBpZiAodmFsLmVxdWFsc0lnbm9yZUNhc2UoIm5vIikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgfD0gQXJhYmljU2hhcGluZy5ESUdJVFNfTk9PUDsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWwuZXF1YWxzSWdub3JlQ2FzZSgiZWEiKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyB8PSBBcmFiaWNTaGFwaW5nLkRJR0lUU19FTjJBTjsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWwuZXF1YWxzSWdub3JlQ2FzZSgiYWUiKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyB8PSBBcmFiaWNTaGFwaW5nLkRJR0lUU19BTjJFTjsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWwuZXF1YWxzSWdub3JlQ2FzZSgibHIiKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyB8PSBBcmFiaWNTaGFwaW5nLkRJR0lUU19FTjJBTl9JTklUX0xSOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbC5lcXVhbHNJZ25vcmVDYXNlKCJhbCIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zIHw9IEFyYWJpY1NoYXBpbmcuRElHSVRTX0VOMkFOX0lOSVRfQUw7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd1ZhbEVycm9yKG9wdCwgdmFsKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAob3B0LmVxdWFsc0lnbm9yZUNhc2UoInR5cCIpKSB7CisgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgJj0gfkFyYWJpY1NoYXBpbmcuRElHSVRfVFlQRV9NQVNLOworICAgICAgICAgICAgICAgICAgICBpZiAodmFsLmVxdWFsc0lnbm9yZUNhc2UoImFuIikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgfD0gQXJhYmljU2hhcGluZy5ESUdJVF9UWVBFX0FOOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbC5lcXVhbHNJZ25vcmVDYXNlKCJleCIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zIHw9IEFyYWJpY1NoYXBpbmcuRElHSVRfVFlQRV9BTl9FWFRFTkRFRDsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93VmFsRXJyb3Iob3B0LCB2YWwpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChvcHQuZXF1YWxzSWdub3JlQ2FzZSgiZHN0IikpIHsKKyAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRzID0gSW50ZWdlci5wYXJzZUludCh2YWwpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dWYWxFcnJvcihvcHQsIHZhbCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG9wdC5lcXVhbHNJZ25vcmVDYXNlKCJkbG4iKSkgeworICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgZGwgPSBJbnRlZ2VyLnBhcnNlSW50KHZhbCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd1ZhbEVycm9yKG9wdCwgdmFsKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAob3B0LmVxdWFsc0lnbm9yZUNhc2UoInNzdCIpKSB7CisgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzcyA9IEludGVnZXIucGFyc2VJbnQodmFsKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93VmFsRXJyb3Iob3B0LCB2YWwpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChvcHQuZXF1YWxzSWdub3JlQ2FzZSgic2xuIikpIHsKKyAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNsID0gSW50ZWdlci5wYXJzZUludCh2YWwpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dWYWxFcnJvcihvcHQsIHZhbCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG9wdC5lcXVhbHNJZ25vcmVDYXNlKCJ0ZXMiKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAodmFsLmVxdWFsc0lnbm9yZUNhc2UoImNwIikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3R0eXBlID0gQ09QWTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWwuZXF1YWxzSWdub3JlQ2FzZSgiaXAiKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHR5cGUgPSBJTlBMQUNFOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbC5lcXVhbHNJZ25vcmVDYXNlKCJzdCIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0dHlwZSA9IFNUUklORzsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93VmFsRXJyb3Iob3B0LCB2YWwpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChvcHQuZXF1YWxzSWdub3JlQ2FzZSgiaGVscCIpKSB7CisgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbih1c2FnZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3dPcHRFcnJvcihvcHQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gYXNzdW1lIHRleHQKKyAgICAgICAgICAgICAgICB0ZXh0ID0gcGFyc2VUZXh0KGFyZyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoc2wgPCAwKSB7CisgICAgICAgICAgICBzbCA9IHRleHQubGVuZ3RoKCkgLSBzczsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigic2wgZGVmYXVsdGluZyB0byAiICsgc2wpOworICAgICAgICB9CisgICAgICAgIGlmIChkbCA8IDApIHsKKyAgICAgICAgICAgIGRsID0gMiAqIHNsOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJkbCBkZWZhdWx0aW5nIHRvICIgKyBkbCk7CisgICAgICAgIH0KKworICAgICAgICBBcmFiaWNTaGFwaW5nIHNoYXBlciA9IG5ldyBBcmFiaWNTaGFwaW5nKG9wdGlvbnMpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oInNoYXBlcjogIiArIHNoYXBlcik7CisKKyAgICAgICAgY2hhcltdIHNyYyA9IHRleHQudG9DaGFyQXJyYXkoKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIgaW5wdXQ6ICciICsgZXNjYXBlZFRleHQoc3JjLCBzcywgc2wpICsgIiciKTsKKyAgICAgICAgaWYgKHRlc3R0eXBlICE9IFNUUklORykgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJzdGFydDogIiArIHNzICsgIiBsZW5ndGg6ICIgKyBzbCArICIgdG90YWwgbGVuZ3RoOiAiICsgc3JjLmxlbmd0aCk7CisgICAgICAgIH0KKworICAgICAgICBpbnQgcmVzdWx0ID0gLTE7CisgICAgICAgIGNoYXJbXSBkZXN0ID0gbnVsbDsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgc3dpdGNoICh0ZXN0dHlwZSkgeworICAgICAgICAgICAgY2FzZSBDT1BZOgorICAgICAgICAgICAgICAgIGRlc3QgPSBuZXcgY2hhcltkcyArIGRsXTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBzaGFwZXIuc2hhcGUoc3JjLCBzcywgc2wsIGRlc3QsIGRzLCBkbCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgSU5QTEFDRToKKyAgICAgICAgICAgICAgICBzaGFwZXIuc2hhcGUoc3JjLCBzcywgc2wpOworICAgICAgICAgICAgICAgIGRzID0gc3M7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2w7CisgICAgICAgICAgICAgICAgZGVzdCA9IHNyYzsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBTVFJJTkc6CisgICAgICAgICAgICAgICAgZGVzdCA9IHNoYXBlci5zaGFwZSh0ZXh0KS50b0NoYXJBcnJheSgpOworICAgICAgICAgICAgICAgIGRzID0gMDsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBkZXN0Lmxlbmd0aDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJvdXRwdXQ6ICciICsgZXNjYXBlZFRleHQoZGVzdCwgZHMsIHJlc3VsdCkgKyAiJyIpOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJsZW5ndGg6ICIgKyByZXN1bHQpOworICAgICAgICAgICAgaWYgKGRzICE9IDAgfHwgcmVzdWx0ICE9IGRlc3QubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJmdWxsIG91dHB1dDogJyIgKyBlc2NhcGVkVGV4dChkZXN0LCAwLCBkZXN0Lmxlbmd0aCkgKyAiJyIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhdGNoIChBcmFiaWNTaGFwaW5nRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQ2F1Z2h0IEFyYWJpY1NoYXBpbmdFeGNlcHRpb24iKTsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihlKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQ2F1Z2h0IEV4Y2VwdGlvbiIpOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGUpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCB0aHJvd09wdEVycm9yKFN0cmluZyBvcHQpIHsKKyAgICAgICAgdGhyb3dVc2FnZUVycm9yKCJ1bmtub3duIG9wdGlvbjogIiArIG9wdCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCB0aHJvd1ZhbEVycm9yKFN0cmluZyBvcHQsIFN0cmluZyB2YWwpIHsKKyAgICAgICAgdGhyb3dVc2FnZUVycm9yKCJ1bmtub3duIHZhbHVlOiAiICsgdmFsICsgIiBmb3Igb3B0aW9uOiAiICsgb3B0KTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIHRocm93VXNhZ2VFcnJvcihTdHJpbmcgbWVzc2FnZSkgeworICAgICAgICBTdHJpbmdCdWZmZXIgYnVmID0gbmV3IFN0cmluZ0J1ZmZlcigiKioqIHVzYWdlIGVycm9yICoqKlxuIik7CisgICAgICAgIGJ1Zi5hcHBlbmQobWVzc2FnZSk7CisgICAgICAgIGJ1Zi5hcHBlbmQoIlxuIik7CisgICAgICAgIGJ1Zi5hcHBlbmQodXNhZ2UpOworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYnVmLnRvU3RyaW5nKCkpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyB1c2FnZSA9IAorICAgICAgICAiVXNhZ2U6IFtvcHRpb25dKiBbdGV4dF1cbiIgKworICAgICAgICAiICB3aGVyZSBvcHRpb24gaXMgaW4gdGhlIGZvcm1hdCAnLW9wdFs6dmFsXSdcbiIgKworICAgICAgICAiICBvcHRpb25zIGFyZTpcbiIgKworICAgICAgICAiICAgIC1sZW46W2dzfHNufHNlfHNiXSAgICAobGVuZ3RoOiBncm93L3Nocmluaywgc3BhY2VzIG5lYXIsIHNwYWNlcyBlbmQsIHNwYWNlcyBiZWdpbm5pbmcpXG4iICsKKyAgICAgICAgIiAgICAtZGlyOltsb2d8dmlzXSAgICAgICAgKGRpcmVjdGlvbjogbG9naWNhbCwgdmlzdWFsKVxuIiArCisgICAgICAgICIgICAgLWxldDpbbm98c2h8dW58dGFdICAgIChsZXR0ZXJzOiBub29wLCBzaGFwZSwgdW5zaGFwZSwgdGFzaGtlZWwpXG4iICsKKyAgICAgICAgLy8gIiAgICAtbGV0Oltub3xzaHx1bl0gICAgICAgKGxldHRlcnM6IG5vb3AsIHNoYXBlLCB1bnNoYXBlKVxuIiArCisgICAgICAgICIgICAgLWRpZzpbbm98ZWF8YWV8bHJ8YWxdIChkaWdpdHM6IG5vb3AsIGVuMmFuLCBhbjJlbiwgZW4yYW5fbHIsIGVuMmFuX2FsKVxuIiArCisgICAgICAgICIgICAgLXR5cDpbYW58ZXhdICAgICAgICAgIChkaWdpdCB0eXBlOiBhcmFiaWMsIGFyYWJpYyBleHRlbmRlZClcbiIgKworICAgICAgICAiICAgIC1kc3Q6IyAgICAgICAgICAgICAgICAoZGVzdCBzdGFydDogW2ludGVnZXJdKVxuIiArCisgICAgICAgICIgICAgLWRsbjojICAgICAgICAgICAgICAgIChkZXN0IGxlbmd0aCAobWF4IHNpemUpOiBbaW50ZWdlcl0pXG4iICsKKyAgICAgICAgIiAgICAtc3N0OiMgICAgICAgICAgICAgICAgKHNvdXJjZSBzdGFydDogW2ludGVnZXJdKVxuIiArCisgICAgICAgICIgICAgLXNsbjojICAgICAgICAgICAgICAgIChzb3VyY2UgbGVuZ3RoOiBbaW50ZWdlcl0pXG4iICsKKyAgICAgICAgIiAgICAtdGVzOltjcHxpcHxzdF0gICAgICAgKHRlc3QgdHlwZTogY29weSwgaW4gcGxhY2UsIHN0cmluZylcbiIgKworICAgICAgICAiICAgIC1oZWxwICAgICAgICAgICAgICAgICAocHJpbnQgdGhpcyBoZWxwIG1lc3NhZ2UpXG4iICsKKyAgICAgICAgIiAgdGV4dCBjYW4gY29udGFpbiB1bmljb2RlIGVzY2FwZSB2YWx1ZXMgaW4gdGhlIGZvcm1hdCAnXFx1WFhYWCcgb25seVxuIjsKKyAgICAgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGVzY2FwZWRUZXh0KGNoYXJbXSB0ZXh0LCBpbnQgc3RhcnQsIGludCBsZW5ndGgpIHsKKyAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IHN0YXJ0LCBlID0gc3RhcnQgKyBsZW5ndGg7IGkgPCBlOyArK2kpIHsKKyAgICAgICAgICAgIGNoYXIgY2ggPSB0ZXh0W2ldOworICAgICAgICAgICAgaWYgKGNoIDwgMHgyMCB8fCBjaCA+IDB4N2UpIHsKKyAgICAgICAgICAgICAgICBidWYuYXBwZW5kKCJcXHUiKTsKKyAgICAgICAgICAgICAgICBpZiAoY2ggPCAweDEwMDApIHsKKyAgICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgnMCcpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoY2ggPCAweDEwMCkgeworICAgICAgICAgICAgICAgICAgICBidWYuYXBwZW5kKCcwJyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChjaCA8IDB4MTApIHsKKyAgICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgnMCcpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBidWYuYXBwZW5kKEludGVnZXIudG9IZXhTdHJpbmcoY2gpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgYnVmLmFwcGVuZChjaCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGJ1Zi50b1N0cmluZygpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBwYXJzZVRleHQoU3RyaW5nIHRleHQpIHsKKyAgICAgICAgLy8gcHJvY2VzcyB1bmljb2RlIGVzY2FwZXMgKG9ubHkpCisgICAgICAgIFN0cmluZ0J1ZmZlciBidWYgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIGNoYXJbXSBjaGFycyA9IHRleHQudG9DaGFyQXJyYXkoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjaGFycy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgY2hhciBjaCA9IGNoYXJzW2ldOworICAgICAgICAgICAgaWYgKGNoID09ICdcXCcpIHsKKyAgICAgICAgICAgICAgICBpZiAoKGkgPCBjaGFycy5sZW5ndGggLSAxKSAmJgorICAgICAgICAgICAgICAgICAgICAoY2hhcnNbaSsxXSA9PSAndScpKSB7CisgICAgICAgICAgICAgICAgICAgIGludCB2YWwgPSBJbnRlZ2VyLnBhcnNlSW50KHRleHQuc3Vic3RyaW5nKGkrMiwgaSs2KSwgMTYpOworICAgICAgICAgICAgICAgICAgICBidWYuYXBwZW5kKChjaGFyKXZhbCk7CisgICAgICAgICAgICAgICAgICAgIGkgKz0gNTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBidWYuYXBwZW5kKCdcXCcpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgYnVmLmFwcGVuZChjaCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGJ1Zi50b1N0cmluZygpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC90aW1lem9uZS9UaW1lWm9uZUJvdW5kYXJ5VGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3RpbWV6b25lL1RpbWVab25lQm91bmRhcnlUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYWM5ODA4ZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC90aW1lem9uZS9UaW1lWm9uZUJvdW5kYXJ5VGVzdC5qYXZhCkBAIC0wLDAgKzEsNzE1IEBACisvKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3RpbWV6b25lL1RpbWVab25lQm91bmRhcnlUZXN0LmphdmEsdiAkCisgKiAkRGF0ZTogMjAwMi8wOC8xMyAyMjowNDozOSAkCisgKiAkUmV2aXNpb246IDEuNiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudGVzdC50aW1lem9uZTsKK2ltcG9ydCBjb20uaWJtLmljdS5sYW5nLio7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuKjsKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYudGVzdC4qOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworCisvKioKKyAqIEEgdGVzdCB3aGljaCBkaXNjb3ZlcnMgdGhlIGJvdW5kYXJpZXMgb2YgRFNUIHByb2dyYW1tYXRpY2FsbHkgYW5kIHZlcmlmaWVzCisgKiB0aGF0IHRoZXkgYXJlIGNvcnJlY3QuCisgKi8KK3B1YmxpYyBjbGFzcyBUaW1lWm9uZUJvdW5kYXJ5VGVzdCBleHRlbmRzIFRlc3RGbXdrCit7CisgICAgc3RhdGljIGZpbmFsIGludCBPTkVfU0VDT05EID0gMTAwMDsKKyAgICBzdGF0aWMgZmluYWwgaW50IE9ORV9NSU5VVEUgPSA2MCpPTkVfU0VDT05EOworICAgIHN0YXRpYyBmaW5hbCBpbnQgT05FX0hPVVIgPSA2MCpPTkVfTUlOVVRFOworICAgIHN0YXRpYyBmaW5hbCBsb25nIE9ORV9EQVkgPSAyNCpPTkVfSE9VUjsKKyAgICBzdGF0aWMgZmluYWwgbG9uZyBPTkVfWUVBUiA9IChsb25nKSgzNjUuMjUgKiBPTkVfREFZKTsKKyAgICBzdGF0aWMgZmluYWwgbG9uZyBTSVhfTU9OVEhTID0gT05FX1lFQVIgLyAyOworCisgICAgc3RhdGljIGZpbmFsIGludCBNT05USF9MRU5HVEhbXSA9IHszMSwyOSwzMSwzMCwzMSwzMCwzMSwzMSwzMCwzMSwzMCwzMX07CisKKyAgICAvLyBUaGVzZSB2YWx1ZXMgYXJlIGVtcGlyaWNhbGx5IGRldGVybWluZWQgdG8gYmUgY29ycmVjdAorICAgIHN0YXRpYyBmaW5hbCBsb25nIFBTVF8xOTk3X0JFRyAgPSA4NjAzMjA4MDAwMDBMOworICAgIHN0YXRpYyBmaW5hbCBsb25nIFBTVF8xOTk3X0VORCAgPSA4Nzc4NTY0MDAwMDBMOworCisgICAgLy8gTWluaW11bSBpbnRlcnZhbCBmb3IgYmluYXJ5IHNlYXJjaGVzIGluIG1zOyBzaG91bGQgYmUgbm8gbGFyZ2VyCisgICAgLy8gdGhhbiAxMDAwLgorICAgIHN0YXRpYyBmaW5hbCBsb25nIElOVEVSVkFMID0gMTA7IC8vIE1pbGxpc2Vjb25kcworCisgICAgLy8gWzNKYW4wMSBMaXVdIFVwZGF0ZWQgZm9yIDIwMDBmIGRhdGEKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIEFVU1RSQUxJQSA9ICJBdXN0cmFsaWEvQWRlbGFpZGUiOworICAgIHN0YXRpYyBmaW5hbCBsb25nIEFVU1RSQUxJQV8xOTk3X0JFRyA9IDg3Nzc5NzAwMDAwMEw7CisgICAgc3RhdGljIGZpbmFsIGxvbmcgQVVTVFJBTElBXzE5OTdfRU5EID0gODU5NjUzMDAwMDAwTDsKKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgbmV3IFRpbWVab25lQm91bmRhcnlUZXN0KCkucnVuKGFyZ3MpOworICAgIH0KKworICAgIC8qKgorICAgICAqIERhdGUudG9TdHJpbmcoKS5zdWJzdHJpbmcoKSBCb3VuZGFyeSBUZXN0CisgICAgICogTG9vayBmb3IgYSBEU1QgY2hhbmdlb3ZlciB0byBvY2N1ciB3aXRoaW4gNiBtb250aHMgb2YgdGhlIGdpdmVuIERhdGUuCisgICAgICogVGhlIGluaXRpYWwgRGF0ZS50b1N0cmluZygpIHNob3VsZCB5aWVsZCBhIHN0cmluZyBjb250YWluaW5nIHRoZQorICAgICAqIHN0YXJ0TW9kZSBhcyBhIFNVQlNUUklORy4gIFRoZSBib3VuZGFyeSB3aWxsIGJlIHRlc3RlZCB0byBiZQorICAgICAqIGF0IHRoZSBleHBlY3RlZEJvdW5kYXJ5IHZhbHVlLgorICAgICAqLworICAgIHZvaWQgZmluZERheWxpZ2h0Qm91bmRhcnlVc2luZ0RhdGUoRGF0ZSBkLCBTdHJpbmcgc3RhcnRNb2RlLCBsb25nIGV4cGVjdGVkQm91bmRhcnkpCisgICAgeworICAgICAgICAvLyBHaXZlbiBhIGRhdGUgd2l0aCBhIHllYXIgc3RhcnQsIGZpbmQgdGhlIERheWxpZ2h0IG9uc2V0CisgICAgICAgIC8vIGFuZCBlbmQuICBUaGUgZ2l2ZW4gZGF0ZSBzaG91bGQgYmUgMS8xL3h4IGluIHNvbWUgeWVhci4KKworICAgICAgICBpZiAoZC50b1N0cmluZygpLmluZGV4T2Yoc3RhcnRNb2RlKSA9PSAtMSkKKyAgICAgICAgeworICAgICAgICAgICAgbG9nbG4oIkVycm9yOiAiICsgc3RhcnRNb2RlICsgIiBub3QgcHJlc2VudCBpbiAiICsgZCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBVc2UgYSBiaW5hcnkgc2VhcmNoLCBhc3N1bWluZyB0aGF0IHdlIGhhdmUgYSBTdGFuZGFyZAorICAgICAgICAvLyB0aW1lIGF0IHRoZSBtaWRwb2ludC4KKyAgICAgICAgbG9uZyBtaW4gPSBkLmdldFRpbWUoKTsKKyAgICAgICAgbG9uZyBtYXggPSBtaW4gKyBTSVhfTU9OVEhTOworCisgICAgICAgIHdoaWxlICgobWF4IC0gbWluKSA+ICBJTlRFUlZBTCkKKyAgICAgICAgeworICAgICAgICAgICAgbG9uZyBtaWQgPSAobWluICsgbWF4KSA+PiAxOworICAgICAgICAgICAgU3RyaW5nIHMgPSBuZXcgRGF0ZShtaWQpLnRvU3RyaW5nKCk7CisgICAgICAgICAgICAvLyBsb2dsbihzKTsKKyAgICAgICAgICAgIGlmIChzLmluZGV4T2Yoc3RhcnRNb2RlKSAhPSAtMSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtaW4gPSBtaWQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbWF4ID0gbWlkOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgbG9nbG4oIkRhdGUgQmVmb3JlOiAiICsgc2hvd0RhdGUobWluKSk7CisgICAgICAgIGxvZ2xuKCJEYXRlIEFmdGVyOiAgIiArIHNob3dEYXRlKG1heCkpOworICAgICAgICBsb25nIG1pbmRlbHRhID0gZXhwZWN0ZWRCb3VuZGFyeSAtIG1pbjsKKyAgICAgICAgLy8gbm90IHVzZWQgbG9uZyBtYXhkZWx0YSA9IG1heCAtIGV4cGVjdGVkQm91bmRhcnk7CisgICAgICAgIGlmIChtaW5kZWx0YSA+PSAwICYmIG1pbmRlbHRhIDw9IElOVEVSVkFMICYmCisgICAgICAgICAgICBtaW5kZWx0YSA+PSAwICYmIG1pbmRlbHRhIDw9IElOVEVSVkFMKQorICAgICAgICAgICAgbG9nbG4oIlBBU1M6IEV4cGVjdGVkIGJvdW5kYXJ5IGF0ICIgKyBleHBlY3RlZEJvdW5kYXJ5KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZXJybG4oIkZBSUw6IEV4cGVjdGVkIGJvdW5kYXJ5IGF0ICIgKyBleHBlY3RlZEJvdW5kYXJ5KTsKKyAgICB9CisKKyAgICAvLyBUaGlzIHRlc3QgY2Fubm90IGJlIGNvbXBpbGVkIHVudGlsIHRoZSBpbkRheWxpZ2h0VGltZSgpIG1ldGhvZCBvZiBHcmVnb3JpYW5DYWxlbmRhcgorICAgIC8vIGJlY29tZXMgcHVibGljLgorICAgIC8vICAgIHN0YXRpYyB2b2lkIGZpbmREYXlsaWdodEJvdW5kYXJ5VXNpbmdDYWxlbmRhcihEYXRlIGQsIGJvb2xlYW4gc3RhcnRzSW5EU1QpCisgICAgLy8gICAgeworICAgIC8vICAvLyBHaXZlbiBhIGRhdGUgd2l0aCBhIHllYXIgc3RhcnQsIGZpbmQgdGhlIERheWxpZ2h0IG9uc2V0CisgICAgLy8gIC8vIGFuZCBlbmQuICBUaGUgZ2l2ZW4gZGF0ZSBzaG91bGQgYmUgMS8xL3h4IGluIHNvbWUgeWVhci4KKyAgICAvLworICAgIC8vICBHcmVnb3JpYW5DYWxlbmRhciBjYWwgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoKTsKKyAgICAvLyAgY2FsLnNldFRpbWUoZCk7CisgICAgLy8gIGlmIChjYWwuaW5EYXlsaWdodFRpbWUoKSAhPSBzdGFydHNJbkRTVCkKKyAgICAvLyAgeworICAgIC8vICAgICAgbG9nbG4oIkVycm9yOiBpbkRheWxpZ2h0VGltZSgiICsgZCArICIpICE9ICIgKyBzdGFydHNJbkRTVCk7CisgICAgLy8gIH0KKyAgICAvLworICAgIC8vICAvLyBVc2UgYSBiaW5hcnkgc2VhcmNoLCBhc3N1bWluZyB0aGF0IHdlIGhhdmUgYSBTdGFuZGFyZAorICAgIC8vICAvLyB0aW1lIGF0IHRoZSBtaWRwb2ludC4KKyAgICAvLyAgbG9uZyBtaW4gPSBkLmdldFRpbWUoKTsKKyAgICAvLyAgbG9uZyBtYXggPSBtaW4gKyAobG9uZykoMzY1LjI1IC8gMiAqIDI0KjYwKjYwKjEwMDApOworICAgIC8vCisgICAgLy8gIHdoaWxlICgobWF4IC0gbWluKSA+ICBJTlRFUlZBTCkKKyAgICAvLyAgeworICAgIC8vICAgICAgbG9uZyBtaWQgPSAobWluICsgbWF4KSA+PiAxOworICAgIC8vICAgICAgY2FsLnNldFRpbWUobmV3IERhdGUobWlkKSk7CisgICAgLy8gICAgICBpZiAoY2FsLmluRGF5bGlnaHRUaW1lKCkgPT0gc3RhcnRzSW5EU1QpCisgICAgLy8gICAgICB7CisgICAgLy8gICAgICBtaW4gPSBtaWQ7CisgICAgLy8gICAgICB9CisgICAgLy8gICAgICBlbHNlCisgICAgLy8gICAgICB7CisgICAgLy8gICAgICBtYXggPSBtaWQ7CisgICAgLy8gICAgICB9CisgICAgLy8gIH0KKyAgICAvLworICAgIC8vICBsb2dsbigiQ2FsZW5kYXIgQmVmb3JlOiAiICsgc2hvd0RhdGUobWluKSk7CisgICAgLy8gIGxvZ2xuKCJDYWxlbmRhciBBZnRlcjogICIgKyBzaG93RGF0ZShtYXgpKTsKKyAgICAvLyAgICB9CisKKyAgICB2b2lkIGZpbmREYXlsaWdodEJvdW5kYXJ5VXNpbmdUaW1lWm9uZShEYXRlIGQsIGJvb2xlYW4gc3RhcnRzSW5EU1QsIGxvbmcgZXhwZWN0ZWRCb3VuZGFyeSkKKyAgICB7CisgICAgICAgIGZpbmREYXlsaWdodEJvdW5kYXJ5VXNpbmdUaW1lWm9uZShkLCBzdGFydHNJbkRTVCwgZXhwZWN0ZWRCb3VuZGFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVab25lLmdldERlZmF1bHQoKSk7CisgICAgfQorCisgICAgdm9pZCBmaW5kRGF5bGlnaHRCb3VuZGFyeVVzaW5nVGltZVpvbmUoRGF0ZSBkLCBib29sZWFuIHN0YXJ0c0luRFNULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZXhwZWN0ZWRCb3VuZGFyeSwgVGltZVpvbmUgdHopCisgICAgeworICAgICAgICAvLyBHaXZlbiBhIGRhdGUgd2l0aCBhIHllYXIgc3RhcnQsIGZpbmQgdGhlIERheWxpZ2h0IG9uc2V0CisgICAgICAgIC8vIGFuZCBlbmQuICBUaGUgZ2l2ZW4gZGF0ZSBzaG91bGQgYmUgMS8xL3h4IGluIHNvbWUgeWVhci4KKworICAgICAgICAvLyBVc2UgYSBiaW5hcnkgc2VhcmNoLCBhc3N1bWluZyB0aGF0IHdlIGhhdmUgYSBTdGFuZGFyZAorICAgICAgICAvLyB0aW1lIGF0IHRoZSBtaWRwb2ludC4KKyAgICAgICAgbG9uZyBtaW4gPSBkLmdldFRpbWUoKTsKKyAgICAgICAgbG9uZyBtYXggPSBtaW4gKyBTSVhfTU9OVEhTOworCisgICAgICAgIGlmICh0ei5pbkRheWxpZ2h0VGltZShkKSAhPSBzdGFydHNJbkRTVCkKKyAgICAgICAgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6ICIgKyB0ei5nZXRJRCgpICsgIiBpbkRheWxpZ2h0VGltZSgiICsKKyAgICAgICAgICAgICAgICAgIGQgKyAiKSAhPSAiICsgc3RhcnRzSW5EU1QpOworICAgICAgICAgICAgc3RhcnRzSW5EU1QgPSAhc3RhcnRzSW5EU1Q7IC8vIEZsaXAgb3ZlcjsgZmluZCB0aGUgYXBwYXJlbnQgdmFsdWUKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0ei5pbkRheWxpZ2h0VGltZShuZXcgRGF0ZShtYXgpKSA9PSBzdGFydHNJbkRTVCkKKyAgICAgICAgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6ICIgKyB0ei5nZXRJRCgpICsgIiBpbkRheWxpZ2h0VGltZSgiICsKKyAgICAgICAgICAgICAgICAgIChuZXcgRGF0ZShtYXgpKSArICIpICE9ICIgKyAoIXN0YXJ0c0luRFNUKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB3aGlsZSAoKG1heCAtIG1pbikgPiAgSU5URVJWQUwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxvbmcgbWlkID0gKG1pbiArIG1heCkgPj4gMTsKKyAgICAgICAgICAgIGJvb2xlYW4gaXNJbiA9IHR6LmluRGF5bGlnaHRUaW1lKG5ldyBEYXRlKG1pZCkpOworICAgICAgICAgICAgaWYgKGlzSW4gPT0gc3RhcnRzSW5EU1QpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbWluID0gbWlkOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1heCA9IG1pZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGxvZ2xuKHR6LmdldElEKCkgKyAiIEJlZm9yZTogIiArIHNob3dEYXRlKG1pbiwgdHopKTsKKyAgICAgICAgbG9nbG4odHouZ2V0SUQoKSArICIgQWZ0ZXI6ICAiICsgc2hvd0RhdGUobWF4LCB0eikpOworCisgICAgICAgIGxvbmcgbWluZGVsdGEgPSBleHBlY3RlZEJvdW5kYXJ5IC0gbWluOworICAgICAgICAvLyBub3QgdXNlZCBsb25nIG1heGRlbHRhID0gbWF4IC0gZXhwZWN0ZWRCb3VuZGFyeTsgCisgICAgICAgIERhdGVGb3JtYXQgZm10ID0gRGF0ZUZvcm1hdC5nZXREYXRlVGltZUluc3RhbmNlKERhdGVGb3JtYXQuTE9ORywgRGF0ZUZvcm1hdC5MT05HKTsKKyAgICAgICAgZm10LnNldFRpbWVab25lKHR6KTsKKyAgICAgICAgaWYgKG1pbmRlbHRhID49IDAgJiYgbWluZGVsdGEgPD0gSU5URVJWQUwgJiYKKyAgICAgICAgICAgIG1pbmRlbHRhID49IDAgJiYgbWluZGVsdGEgPD0gSU5URVJWQUwpCisgICAgICAgICAgICBsb2dsbigiUEFTUzogRXhwZWN0ZWQgYm91bmRhcnkgYXQgIiArIGV4cGVjdGVkQm91bmRhcnkgKyAiID0gIiArIGZtdC5mb3JtYXQobmV3IERhdGUoZXhwZWN0ZWRCb3VuZGFyeSkpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZXJybG4oIkZBSUw6IEV4cGVjdGVkIGJvdW5kYXJ5IGF0ICIgKyBleHBlY3RlZEJvdW5kYXJ5ICsgIiA9ICIgKyBmbXQuZm9ybWF0KG5ldyBEYXRlKGV4cGVjdGVkQm91bmRhcnkpKSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIHNob3dEYXRlKGxvbmcgbCkKKyAgICB7CisgICAgICAgIHJldHVybiBzaG93RGF0ZShuZXcgRGF0ZShsKSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIHNob3dEYXRlKERhdGUgZCkKKyAgICB7CisgICAgICAgIGphdmEudXRpbC5DYWxlbmRhciBjYWwgPSBqYXZhLnV0aWwuQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTsKKyAgICAgICAgY2FsLnNldFRpbWUoZCk7CisgICAgICAgIHJldHVybiAiIiArIChjYWwuZ2V0KENhbGVuZGFyLllFQVIpIC0gMTkwMCkgKyAiLyIgKyAKKyAgICAgICAgICAgICAgIHNob3dOTihjYWwuZ2V0KENhbGVuZGFyLk1PTlRIKSArIDEpICsgIi8iICsgCisgICAgICAgICAgICAgICBzaG93Tk4oY2FsLmdldChDYWxlbmRhci5EQVlfT0ZfTU9OVEgpKSArICIgIiArIAorICAgICAgICAgICAgICAgc2hvd05OKGNhbC5nZXQoQ2FsZW5kYXIuSE9VUl9PRl9EQVkpKSArICI6IiAKKyAgICAgICAgICAgICAgICsgc2hvd05OKGNhbC5nZXQoQ2FsZW5kYXIuTUlOVVRFKSkgKyAiIFwiIiArIGQgKyAiXCIgPSAiICsKKyAgICAgICAgICAgICAgIGQuZ2V0VGltZSgpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBzaG93RGF0ZShsb25nIGwsIFRpbWVab25lIHopCisgICAgeworICAgICAgICByZXR1cm4gc2hvd0RhdGUobmV3IERhdGUobCksIHopOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBzaG93RGF0ZShEYXRlIGQsIFRpbWVab25lIHpvbmUpCisgICAgeworICAgICAgICBEYXRlRm9ybWF0IGZtdCA9IERhdGVGb3JtYXQuZ2V0RGF0ZVRpbWVJbnN0YW5jZShEYXRlRm9ybWF0LkxPTkcsIERhdGVGb3JtYXQuTE9ORyk7CisgICAgICAgIGZtdC5zZXRUaW1lWm9uZSh6b25lKTsKKyAgICAgICAgamF2YS51dGlsLkNhbGVuZGFyIGNhbCA9IGphdmEudXRpbC5DYWxlbmRhci5nZXRJbnN0YW5jZSgpOworICAgICAgICBjYWwuc2V0VGltZShkKTsKKyAgICAgICAgcmV0dXJuICIiICsgKGNhbC5nZXQoQ2FsZW5kYXIuWUVBUikgLSAxOTAwKSArICIvIiArIAorICAgICAgICAgICAgICAgc2hvd05OKGNhbC5nZXQoQ2FsZW5kYXIuTU9OVEgpICsgMSkgKyAiLyIgKyAKKyAgICAgICAgICAgICAgIHNob3dOTihjYWwuZ2V0KENhbGVuZGFyLkRBWV9PRl9NT05USCkpICsgIiAiICsgCisgICAgICAgICAgICAgICBzaG93Tk4oY2FsLmdldChDYWxlbmRhci5IT1VSX09GX0RBWSkpICsgIjoiICsgCisgICAgICAgICAgICAgICBzaG93Tk4oY2FsLmdldChDYWxlbmRhci5NSU5VVEUpKSArICIgXCIiICsgZCArICJcIiA9ICIgKworICAgICAgICAgICAgICAgZm10LmZvcm1hdChkKSArICIgPSAiICsgZC5nZXRUaW1lKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIHNob3dOTihpbnQgbikKKyAgICB7CisgICAgICAgIHJldHVybiAoKG4gPCAxMCkgPyAiMCIgOiAiIikgKyBuOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdpdmVuIGEgZGF0ZSwgYSBUaW1lWm9uZSwgYW5kIGV4cGVjdGVkIHZhbHVlcyBmb3IgaW5EYXlsaWdodFRpbWUsCisgICAgICogdXNlRGF5bGlnaHRUaW1lLCB6b25lIGFuZCBEU1Qgb2Zmc2V0LCB2ZXJpZnkgdGhhdCB0aGlzIGlzIHRoZSBjYXNlLgorICAgICAqLworICAgIHZvaWQgdmVyaWZ5RFNUKERhdGUgZCwgVGltZVpvbmUgdGltZV96b25lLAorICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gZXhwVXNlRGF5bGlnaHRUaW1lLCBib29sZWFuIGV4cEluRGF5bGlnaHRUaW1lLAorICAgICAgICAgICAgICAgICAgIGludCBleHBab25lT2Zmc2V0LCBpbnQgZXhwRFNUT2Zmc2V0KQorICAgIHsKKyAgICAgICAgbG9nbG4oIi0tIFZlcmlmeWluZyB0aW1lICIgKyBkICsKKyAgICAgICAgICAgICAgIiBpbiB6b25lICIgKyB0aW1lX3pvbmUuZ2V0SUQoKSk7CisKKyAgICAgICAgaWYgKHRpbWVfem9uZS5pbkRheWxpZ2h0VGltZShkKSA9PSBleHBJbkRheWxpZ2h0VGltZSkKKyAgICAgICAgICAgIGxvZ2xuKCJQQVNTOiBpbkRheWxpZ2h0VGltZSA9ICIgKyB0aW1lX3pvbmUuaW5EYXlsaWdodFRpbWUoZCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBlcnJsbigiRkFJTDogaW5EYXlsaWdodFRpbWUgPSAiICsgdGltZV96b25lLmluRGF5bGlnaHRUaW1lKGQpKTsKKworICAgICAgICBpZiAodGltZV96b25lLnVzZURheWxpZ2h0VGltZSgpID09IGV4cFVzZURheWxpZ2h0VGltZSkKKyAgICAgICAgICAgIGxvZ2xuKCJQQVNTOiB1c2VEYXlsaWdodFRpbWUgPSAiICsgdGltZV96b25lLnVzZURheWxpZ2h0VGltZSgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZXJybG4oIkZBSUw6IHVzZURheWxpZ2h0VGltZSA9ICIgKyB0aW1lX3pvbmUudXNlRGF5bGlnaHRUaW1lKCkpOworCisgICAgICAgIGlmICh0aW1lX3pvbmUuZ2V0UmF3T2Zmc2V0KCkgPT0gZXhwWm9uZU9mZnNldCkKKyAgICAgICAgICAgIGxvZ2xuKCJQQVNTOiBnZXRSYXdPZmZzZXQoKSA9ICIgKyBleHBab25lT2Zmc2V0Lyhkb3VibGUpT05FX0hPVVIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBlcnJsbigiRkFJTDogZ2V0UmF3T2Zmc2V0KCkgPSAiICsgdGltZV96b25lLmdldFJhd09mZnNldCgpLyhkb3VibGUpT05FX0hPVVIgKworICAgICAgICAgICAgICAgICAgIjsgZXhwZWN0ZWQgIiArIGV4cFpvbmVPZmZzZXQvKGRvdWJsZSlPTkVfSE9VUik7CisKKyAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIgZ2MgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIodGltZV96b25lKTsKKyAgICAgICAgZ2Muc2V0VGltZShkKTsKKyAgICAgICAgaW50IG9mZnNldCA9IHRpbWVfem9uZS5nZXRPZmZzZXQoZ2MuZ2V0KGdjLkVSQSksIGdjLmdldChnYy5ZRUFSKSwgZ2MuZ2V0KGdjLk1PTlRIKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2MuZ2V0KGdjLkRBWV9PRl9NT05USCksIGdjLmdldChnYy5EQVlfT0ZfV0VFSyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZ2MuZ2V0KGdjLkhPVVJfT0ZfREFZKSAqIDYwICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYy5nZXQoZ2MuTUlOVVRFKSkgKiA2MCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYy5nZXQoZ2MuU0VDT05EKSkgKiAxMDAwICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2MuZ2V0KGdjLk1JTExJU0VDT05EKSk7CisgICAgICAgIGlmIChvZmZzZXQgPT0gZXhwRFNUT2Zmc2V0KQorICAgICAgICAgICAgbG9nbG4oIlBBU1M6IGdldE9mZnNldCgpID0gIiArIG9mZnNldC8oZG91YmxlKU9ORV9IT1VSKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZXJybG4oIkZBSUw6IGdldE9mZnNldCgpID0gIiArIG9mZnNldC8oZG91YmxlKU9ORV9IT1VSICsKKyAgICAgICAgICAgICAgICAgICI7IGV4cGVjdGVkICIgKyBleHBEU1RPZmZzZXQvKGRvdWJsZSlPTkVfSE9VUik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdEJvdW5kYXJpZXMoKQorICAgIHsKKyAgICAgICAgVGltZVpvbmUgcHN0ID0gVGltZVpvbmUuZ2V0VGltZVpvbmUoIlBTVCIpOworICAgICAgICBUaW1lWm9uZSBzYXZlID0gVGltZVpvbmUuZ2V0RGVmYXVsdCgpOworICAgICAgICBqYXZhLnV0aWwuQ2FsZW5kYXIgdGVtcGNhbCA9IGphdmEudXRpbC5DYWxlbmRhci5nZXRJbnN0YW5jZSgpOworICAgICAgICB0ZW1wY2FsLmNsZWFyKCk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBUaW1lWm9uZS5zZXREZWZhdWx0KHBzdCk7CisKKyAgICAgICAgICAgIC8vIERTVCBjaGFuZ2VvdmVyIGZvciBQU1QgaXMgNC82LzE5OTcgYXQgMiBob3VycyBwYXN0IG1pZG5pZ2h0CisgICAgICAgICAgICB0ZW1wY2FsLnNldCgxOTk3LCBDYWxlbmRhci5BUFJJTCwgNik7CisgICAgICAgICAgICBEYXRlIGQgPSB0ZW1wY2FsLmdldFRpbWUoKTsKKworICAgICAgICAgICAgLy8gaSBpcyBtaW51dGVzIHBhc3QgbWlkbmlnaHQgc3RhbmRhcmQgdGltZQorICAgICAgICAgICAgZm9yIChpbnQgaT02MDsgaTw9MTgwOyBpKz0xNSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBib29sZWFuIGluRFNUID0gKGkgPj0gMTIwKTsKKyAgICAgICAgICAgICAgICBEYXRlIGUgPSB0ZW1wY2FsLmdldFRpbWUoKTsKKyAgICAgICAgICAgICAgICBlLnNldFRpbWUoZC5nZXRUaW1lKCkgKyBpKjYwKjEwMDApOworICAgICAgICAgICAgICAgIHZlcmlmeURTVChlLCBwc3QsIHRydWUsIGluRFNULCAtOCpPTkVfSE9VUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW5EU1QgPyAtNypPTkVfSE9VUiA6IC04Kk9ORV9IT1VSKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIFRpbWVab25lLnNldERlZmF1bHQoc2F2ZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAodHJ1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gVGhpcyBvbmx5IHdvcmtzIGluIFBTVC9QRFQKKyAgICAgICAgICAgIFRpbWVab25lLnNldERlZmF1bHQoVGltZVpvbmUuZ2V0VGltZVpvbmUoIlBTVCIpKTsKKyAgICAgICAgICAgIGxvZ2xuKCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Iik7CisgICAgICAgICAgICB0ZW1wY2FsLnNldCgxOTk3LCAwLCAxKTsKKyAgICAgICAgICAgIGZpbmREYXlsaWdodEJvdW5kYXJ5VXNpbmdEYXRlKHRlbXBjYWwuZ2V0VGltZSgpLCAiUFNUIiwgUFNUXzE5OTdfQkVHKTsKKyAgICAgICAgICAgIGxvZ2xuKCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Iik7CisgICAgICAgICAgICB0ZW1wY2FsLnNldCgxOTk3LCA2LCAxKTsKKyAgICAgICAgICAgIGZpbmREYXlsaWdodEJvdW5kYXJ5VXNpbmdEYXRlKHRlbXBjYWwuZ2V0VGltZSgpLCAiUERUIiwgUFNUXzE5OTdfRU5EKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vICBpZiAodHJ1ZSkKKyAgICAgICAgLy8gIHsKKyAgICAgICAgLy8gICAgICBsb2dsbigiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpOworICAgICAgICAvLyAgICAgIGZpbmREYXlsaWdodEJvdW5kYXJ5VXNpbmdDYWxlbmRhcihuZXcgRGF0ZSg5NywwLDEpLCBmYWxzZSk7CisgICAgICAgIC8vICAgICAgbG9nbG4oIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKTsKKyAgICAgICAgLy8gICAgICBmaW5kRGF5bGlnaHRCb3VuZGFyeVVzaW5nQ2FsZW5kYXIobmV3IERhdGUoOTcsNiwxKSwgdHJ1ZSk7CisgICAgICAgIC8vICB9CisKKyAgICAgICAgaWYgKHRydWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFNvdXRoZXJuIGhlbWlzcGhlcmUgdGVzdAorICAgICAgICAgICAgbG9nbG4oIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKTsKKyAgICAgICAgICAgIFRpbWVab25lIHogPSBUaW1lWm9uZS5nZXRUaW1lWm9uZShBVVNUUkFMSUEpOworICAgICAgICAgICAgdGVtcGNhbC5zZXQoMTk5NywgMCwgMSk7CisgICAgICAgICAgICBmaW5kRGF5bGlnaHRCb3VuZGFyeVVzaW5nVGltZVpvbmUodGVtcGNhbC5nZXRUaW1lKCksIHRydWUsIEFVU1RSQUxJQV8xOTk3X0VORCwgeik7CisgICAgICAgICAgICBsb2dsbigiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpOworICAgICAgICAgICAgdGVtcGNhbC5zZXQoMTk5NywgNiwgMSk7CisgICAgICAgICAgICBmaW5kRGF5bGlnaHRCb3VuZGFyeVVzaW5nVGltZVpvbmUodGVtcGNhbC5nZXRUaW1lKCksIGZhbHNlLCBBVVNUUkFMSUFfMTk5N19CRUcsIHopOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRydWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxvZ2xuKCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Iik7CisgICAgICAgICAgICB0ZW1wY2FsLnNldCgxOTk3LCAwLCAxKTsKKyAgICAgICAgICAgIGZpbmREYXlsaWdodEJvdW5kYXJ5VXNpbmdUaW1lWm9uZSh0ZW1wY2FsLmdldFRpbWUoKSwgZmFsc2UsIFBTVF8xOTk3X0JFRyk7CisgICAgICAgICAgICBsb2dsbigiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpOworICAgICAgICAgICAgdGVtcGNhbC5zZXQoMTk5NywgNiwgMSk7CisgICAgICAgICAgICBmaW5kRGF5bGlnaHRCb3VuZGFyeVVzaW5nVGltZVpvbmUodGVtcGNhbC5nZXRUaW1lKCksIHRydWUsIFBTVF8xOTk3X0VORCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBUaGlzIGp1c3Qgc2hvd3MgdGhlIG9mZnNldCBmb3IgQXByaWwgNC03IGluIDE5OTcuICBUaGlzIGlzIHJlZHVuZGFudAorICAgICAgICAvLyB3aXRoIGEgdGVzdCBhYm92ZSwgc28gd2UgZGlzYWJsZSBpdC4KKyAgICAgICAgaWYgKGZhbHNlKQorICAgICAgICB7CisgICAgICAgICAgICBUaW1lWm9uZSB6ID0gVGltZVpvbmUuZ2V0RGVmYXVsdCgpOworICAgICAgICAgICAgdGVtcGNhbC5zZXQoMTk5NywgMywgNCk7CisgICAgICAgICAgICBsb2dsbih6LmdldE9mZnNldCgxLCA5NywgMywgNCwgNiwgMCkgKyAiICIgKyB0ZW1wY2FsLmdldFRpbWUoKSk7CisgICAgICAgICAgICB0ZW1wY2FsLnNldCgxOTk3LCAzLCA1KTsKKyAgICAgICAgICAgIGxvZ2xuKHouZ2V0T2Zmc2V0KDEsIDk3LCAzLCA1LCA3LCAwKSArICIgIiArIHRlbXBjYWwuZ2V0VGltZSgpKTsKKyAgICAgICAgICAgIHRlbXBjYWwuc2V0KDE5OTcsIDMsIDYpOworICAgICAgICAgICAgbG9nbG4oei5nZXRPZmZzZXQoMSwgOTcsIDMsIDYsIDEsIDApICsgIiAiICsgdGVtcGNhbC5nZXRUaW1lKCkpOworICAgICAgICAgICAgdGVtcGNhbC5zZXQoMTk5NywgMywgNyk7CisgICAgICAgICAgICBsb2dsbih6LmdldE9mZnNldCgxLCA5NywgMywgNywgMiwgMCkgKyAiICIgKyB0ZW1wY2FsLmdldFRpbWUoKSk7CisgICAgICAgIH0KKyAgICB9CisKKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIENhbid0IGRvIGFueSBvZiB0aGVzZSB3aXRob3V0IGEgcHVibGljIGluRGF5bGlnaHRUaW1lIGluIEdDCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworICAgIC8vICAgIHN0YXRpYyBHcmVnb3JpYW5DYWxlbmRhciBjYWwgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoKTsKKyAgICAvLworICAgIC8vICAgIHN0YXRpYyB2b2lkIF90ZXN0VXNpbmdCaW5hcnlTZWFyY2goRGF0ZSBkLCBib29sZWFuIHN0YXJ0c0luRFNUKQorICAgIC8vICAgIHsKKyAgICAvLyAgLy8gR2l2ZW4gYSBkYXRlIHdpdGggYSB5ZWFyIHN0YXJ0LCBmaW5kIHRoZSBEYXlsaWdodCBvbnNldAorICAgIC8vICAvLyBhbmQgZW5kLiAgVGhlIGdpdmVuIGRhdGUgc2hvdWxkIGJlIDEvMS94eCBpbiBzb21lIHllYXIuCisgICAgLy8KKyAgICAvLyAgLy8gVXNlIGEgYmluYXJ5IHNlYXJjaCwgYXNzdW1pbmcgdGhhdCB3ZSBoYXZlIGEgU3RhbmRhcmQKKyAgICAvLyAgLy8gdGltZSBhdCB0aGUgbWlkcG9pbnQuCisgICAgLy8gIGxvbmcgbWluID0gZC5nZXRUaW1lKCk7CisgICAgLy8gIGxvbmcgbWF4ID0gbWluICsgKGxvbmcpKDM2NS4yNSAvIDIgKiBPTkVfREFZKTsKKyAgICAvLworICAgIC8vICAvLyBGaXJzdCBjaGVjayB0aGUgbWF4CisgICAgLy8gIGNhbC5zZXRUaW1lKG5ldyBEYXRlKG1heCkpOworICAgIC8vICBpZiAoY2FsLmluRGF5bGlnaHRUaW1lKCkgPT0gc3RhcnRzSW5EU1QpCisgICAgLy8gIHsKKyAgICAvLyAgICAgIGxvZ2xuKCJFcnJvcjogaW5EYXlsaWdodFRpbWUoIiArIChuZXcgRGF0ZShtYXgpKSArICIpICE9ICIgKyAoIXN0YXJ0c0luRFNUKSk7CisgICAgLy8gIH0KKyAgICAvLworICAgIC8vICBjYWwuc2V0VGltZShkKTsKKyAgICAvLyAgaWYgKGNhbC5pbkRheWxpZ2h0VGltZSgpICE9IHN0YXJ0c0luRFNUKQorICAgIC8vICB7CisgICAgLy8gICAgICBsb2dsbigiRXJyb3I6IGluRGF5bGlnaHRUaW1lKCIgKyBkICsgIikgIT0gIiArIHN0YXJ0c0luRFNUKTsKKyAgICAvLyAgfQorICAgIC8vCisgICAgLy8gIHdoaWxlICgobWF4IC0gbWluKSA+ICBJTlRFUlZBTCkKKyAgICAvLyAgeworICAgIC8vICAgICAgbG9uZyBtaWQgPSAobWluICsgbWF4KSA+PiAxOworICAgIC8vICAgICAgY2FsLnNldFRpbWUobmV3IERhdGUobWlkKSk7CisgICAgLy8gICAgICBpZiAoY2FsLmluRGF5bGlnaHRUaW1lKCkgPT0gc3RhcnRzSW5EU1QpCisgICAgLy8gICAgICB7CisgICAgLy8gICAgICBtaW4gPSBtaWQ7CisgICAgLy8gICAgICB9CisgICAgLy8gICAgICBlbHNlCisgICAgLy8gICAgICB7CisgICAgLy8gICAgICBtYXggPSBtaWQ7CisgICAgLy8gICAgICB9CisgICAgLy8gIH0KKyAgICAvLworICAgIC8vICBsb2dsbigiQmluYXJ5IFNlYXJjaCBCZWZvcmU6ICIgKyBzaG93RGF0ZShtaW4pKTsKKyAgICAvLyAgbG9nbG4oIkJpbmFyeSBTZWFyY2ggQWZ0ZXI6ICAiICsgc2hvd0RhdGUobWF4KSk7CisgICAgLy8gICAgfQorICAgIC8vCisgICAgLy8gICAgc3RhdGljIHZvaWQgX3Rlc3RVc2luZ01pbGxpcyhEYXRlIGQsIGJvb2xlYW4gc3RhcnRzSW5EU1QpCisgICAgLy8gICAgeworICAgIC8vICBsb25nIG1pbGxpcyA9IGQuZ2V0VGltZSgpOworICAgIC8vICBsb25nIG1heCA9IG1pbGxpcyArIChsb25nKSgzNzAgKiBPTkVfREFZKTsgLy8gQSB5ZWFyIHBsdXMgZXh0cmEKKyAgICAvLworICAgIC8vICBib29sZWFuIGxhc3REU1QgPSBzdGFydHNJbkRTVDsKKyAgICAvLyAgd2hpbGUgKG1pbGxpcyA8IG1heCkKKyAgICAvLyAgeworICAgIC8vICAgICAgY2FsLnNldFRpbWUobmV3IERhdGUobWlsbGlzKSk7CisgICAgLy8gICAgICBib29sZWFuIGluRGF5bGlnaHQgPSBjYWwuaW5EYXlsaWdodFRpbWUoKTsKKyAgICAvLworICAgIC8vICAgICAgaWYgKGluRGF5bGlnaHQgIT0gbGFzdERTVCkKKyAgICAvLyAgICAgIHsKKyAgICAvLyAgICAgIGxvZ2xuKCJTd2l0Y2ggIiArIChpbkRheWxpZ2h0ID8gImludG8iIDogIm91dCBvZiIpCisgICAgLy8gICAgICAgICAgICAgICAgICsgIiBEU1QgYXQgIiArIChuZXcgRGF0ZShtaWxsaXMpKSk7CisgICAgLy8gICAgICBsYXN0RFNUID0gaW5EYXlsaWdodDsKKyAgICAvLyAgICAgIH0KKyAgICAvLworICAgIC8vICAgICAgbWlsbGlzICs9IDE1Kk9ORV9NSU5VVEU7CisgICAgLy8gIH0KKyAgICAvLyAgICB9CisgICAgLy8KKyAgICAvLyAgICBzdGF0aWMgdm9pZCBfdGVzdFVzaW5nRmllbGRzKGludCB5LCBib29sZWFuIHN0YXJ0c0luRFNUKQorICAgIC8vICAgIHsKKyAgICAvLyAgYm9vbGVhbiBsYXN0RFNUID0gc3RhcnRzSW5EU1Q7CisgICAgLy8gIGZvciAoaW50IG0gPSAwOyBtIDwgMTI7ICsrbSkKKyAgICAvLyAgeworICAgIC8vICAgICAgZm9yIChpbnQgZCA9IDE7IGQgPD0gTU9OVEhfTEVOR1RIW21dOyArK2QpCisgICAgLy8gICAgICB7CisgICAgLy8gICAgICBmb3IgKGludCBoID0gMDsgaCA8IDI0OyArK2gpCisgICAgLy8gICAgICB7CisgICAgLy8gICAgICAgICAgZm9yIChpbnQgbWluID0gMDsgbWluIDwgNjA7IG1pbiArPSAxNSkKKyAgICAvLyAgICAgICAgICB7CisgICAgLy8gICAgICAgICAgY2FsLmNsZWFyKCk7CisgICAgLy8gICAgICAgICAgY2FsLnNldCh5LCBtLCBkLCBoLCBtaW4pOworICAgIC8vICAgICAgICAgIGJvb2xlYW4gaW5EYXlsaWdodCA9IGNhbC5pbkRheWxpZ2h0VGltZSgpOworICAgIC8vICAgICAgICAgIGlmIChpbkRheWxpZ2h0ICE9IGxhc3REU1QpCisgICAgLy8gICAgICAgICAgeworICAgIC8vICAgICAgICAgICAgICBsYXN0RFNUID0gaW5EYXlsaWdodDsKKyAgICAvLyAgICAgICAgICAgICAgbG9nKCJTd2l0Y2ggIiArIChsYXN0RFNUID8gImludG8iIDogIm91dCBvZiIpCisgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICsgIiBEU1QgYXQgIiArIHkgKyAiLyIgKyAobSsxKSArICIvIiArIGQKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgKyAiICIgKyBzaG93Tk4oaCkgKyAiOiIgKyBzaG93Tk4obWluKSk7CisgICAgLy8gICAgICAgICAgICAgIGxvZ2xuKCIgIiArIGNhbC5nZXRUaW1lKCkpOworICAgIC8vCisgICAgLy8gICAgICAgICAgICAgIGNhbC5zZXQoeSwgbSwgZCwgaC0xLCA0NSk7CisgICAgLy8gICAgICAgICAgICAgIGxvZygiQmVmb3JlID0gIgorICAgIC8vKyB5ICsgIi8iICsgKG0rMSkgKyAiLyIgKyBkCisgICAgLy8rICIgIiArIHNob3dOTihoLTEpICsgIjoiICsgc2hvd05OKDQ1KSk7CisgICAgLy8gICAgICAgICAgICAgIGxvZ2xuKCIgIiArIGNhbC5nZXRUaW1lKCkpOworICAgIC8vICAgICAgICAgIH0KKyAgICAvLyAgICAgICAgICB9CisgICAgLy8gICAgICB9CisgICAgLy8gICAgICB9CisgICAgLy8gIH0KKyAgICAvLyAgICB9CisgICAgLy8KKyAgICAvLyAgICBwdWJsaWMgdm9pZCBUZXN0MSgpCisgICAgLy8gICAgeworICAgIC8vICBsb2dsbihMb2NhbGUuZ2V0RGVmYXVsdCgpLmdldERpc3BsYXlOYW1lKCkpOworICAgIC8vICBsb2dsbihUaW1lWm9uZS5nZXREZWZhdWx0KCkuZ2V0SUQoKSk7CisgICAgLy8gIGxvZ2xuKG5ldyBEYXRlKDApKTsKKyAgICAvLworICAgIC8vICBpZiAodHJ1ZSkKKyAgICAvLyAgeworICAgIC8vICAgICAgbG9nbG4oIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKTsKKyAgICAvLyAgICAgIF90ZXN0VXNpbmdCaW5hcnlTZWFyY2gobmV3IERhdGUoOTcsMCwxKSwgZmFsc2UpOworICAgIC8vICAgICAgbG9nbG4oIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKTsKKyAgICAvLyAgICAgIF90ZXN0VXNpbmdCaW5hcnlTZWFyY2gobmV3IERhdGUoOTcsNiwxKSwgdHJ1ZSk7CisgICAgLy8gIH0KKyAgICAvLworICAgIC8vICBpZiAodHJ1ZSkKKyAgICAvLyAgeworICAgIC8vICAgICAgbG9nbG4oIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKTsKKyAgICAvLyAgICAgIGxvZ2xuKCJTdGVwcGluZyB1c2luZyBtaWxsaXMiKTsKKyAgICAvLyAgICAgIF90ZXN0VXNpbmdNaWxsaXMobmV3IERhdGUoOTcsMCwxKSwgZmFsc2UpOworICAgIC8vICB9CisgICAgLy8KKyAgICAvLyAgaWYgKHRydWUpCisgICAgLy8gIHsKKyAgICAvLyAgICAgIGxvZ2xuKCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Iik7CisgICAgLy8gICAgICBsb2dsbigiU3RlcHBpbmcgdXNpbmcgZmllbGRzIik7CisgICAgLy8gICAgICBfdGVzdFVzaW5nRmllbGRzKDE5OTcsIGZhbHNlKTsKKyAgICAvLyAgfQorICAgIC8vCisgICAgLy8gIGlmIChmYWxzZSkKKyAgICAvLyAgeworICAgIC8vICAgICAgY2FsLmNsZWFyKCk7CisgICAgLy8gICAgICBjYWwuc2V0KDE5OTcsIDMsIDUsIDEwLCAwKTsKKyAgICAvLyAgICAgIC8vICBjYWwuaW5EYXlsaWdodFRpbWUoKTsKKyAgICAvLyAgICAgIGxvZ2xuKCJEYXRlID0gIiArIGNhbC5nZXRUaW1lKCkpOworICAgIC8vICAgICAgbG9nbG4oIk1pbGxpcyA9ICIgKyBjYWwuZ2V0VGltZSgpLmdldFRpbWUoKS8zNjAwMDAwKTsKKyAgICAvLyAgfQorICAgIC8vICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgdm9pZCBfdGVzdFVzaW5nQmluYXJ5U2VhcmNoKFNpbXBsZVRpbWVab25lIHR6LCBEYXRlIGQsIGxvbmcgZXhwZWN0ZWRCb3VuZGFyeSkKKyAgICB7CisgICAgICAgIC8vIEdpdmVuIGEgZGF0ZSB3aXRoIGEgeWVhciBzdGFydCwgZmluZCB0aGUgRGF5bGlnaHQgb25zZXQKKyAgICAgICAgLy8gYW5kIGVuZC4gIFRoZSBnaXZlbiBkYXRlIHNob3VsZCBiZSAxLzEveHggaW4gc29tZSB5ZWFyLgorCisgICAgICAgIC8vIFVzZSBhIGJpbmFyeSBzZWFyY2gsIGFzc3VtaW5nIHRoYXQgd2UgaGF2ZSBhIFN0YW5kYXJkCisgICAgICAgIC8vIHRpbWUgYXQgdGhlIG1pZHBvaW50LgorICAgICAgICBsb25nIG1pbiA9IGQuZ2V0VGltZSgpOworICAgICAgICBsb25nIG1heCA9IG1pbiArIChsb25nKSgzNjUuMjUgLyAyICogT05FX0RBWSk7CisKKyAgICAgICAgLy8gRmlyc3QgY2hlY2sgdGhlIGJvdW5kYXJpZXMKKyAgICAgICAgYm9vbGVhbiBzdGFydHNJbkRTVCA9IHR6LmluRGF5bGlnaHRUaW1lKGQpOworCisgICAgICAgIGlmICh0ei5pbkRheWxpZ2h0VGltZShuZXcgRGF0ZShtYXgpKSA9PSBzdGFydHNJbkRTVCkKKyAgICAgICAgeworICAgICAgICAgICAgbG9nbG4oIkVycm9yOiBpbkRheWxpZ2h0VGltZSgiICsgKG5ldyBEYXRlKG1heCkpICsgIikgIT0gIiArICghc3RhcnRzSW5EU1QpKTsKKyAgICAgICAgfQorCisgICAgICAgIHdoaWxlICgobWF4IC0gbWluKSA+ICBJTlRFUlZBTCkKKyAgICAgICAgeworICAgICAgICAgICAgbG9uZyBtaWQgPSAobWluICsgbWF4KSA+PiAxOworICAgICAgICAgICAgaWYgKHR6LmluRGF5bGlnaHRUaW1lKG5ldyBEYXRlKG1pZCkpID09IHN0YXJ0c0luRFNUKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1pbiA9IG1pZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtYXggPSBtaWQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBsb2dsbigiQmluYXJ5IFNlYXJjaCBCZWZvcmU6ICIgKyBzaG93RGF0ZShtaW4pKTsKKyAgICAgICAgbG9nbG4oIkJpbmFyeSBTZWFyY2ggQWZ0ZXI6ICAiICsgc2hvd0RhdGUobWF4KSk7CisKKyAgICAgICAgbG9uZyBtaW5kZWx0YSA9IGV4cGVjdGVkQm91bmRhcnkgLSBtaW47CisgICAgICAgIC8vIG5vdCB1c2VkIGxvbmcgbWF4ZGVsdGEgPSBtYXggLSBleHBlY3RlZEJvdW5kYXJ5OworICAgICAgICBpZiAobWluZGVsdGEgPj0gMCAmJiBtaW5kZWx0YSA8PSBJTlRFUlZBTCAmJgorICAgICAgICAgICAgbWluZGVsdGEgPj0gMCAmJiBtaW5kZWx0YSA8PSBJTlRFUlZBTCkKKyAgICAgICAgICAgIGxvZ2xuKCJQQVNTOiBFeHBlY3RlZCBib3VuZGFyeSBhdCAiICsgZXhwZWN0ZWRCb3VuZGFyeSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBFeHBlY3RlZCBib3VuZGFyeSBhdCAiICsgZXhwZWN0ZWRCb3VuZGFyeSk7CisgICAgfQorCisgICAgLyoKKyAgICAgIHN0YXRpYyB2b2lkIF90ZXN0VXNpbmdNaWxsaXMoRGF0ZSBkLCBib29sZWFuIHN0YXJ0c0luRFNUKQorICAgICAgeworICAgICAgbG9uZyBtaWxsaXMgPSBkLmdldFRpbWUoKTsKKyAgICAgIGxvbmcgbWF4ID0gbWlsbGlzICsgKGxvbmcpKDM3MCAqIE9ORV9EQVkpOyAvLyBBIHllYXIgcGx1cyBleHRyYQorCisgICAgICBib29sZWFuIGxhc3REU1QgPSBzdGFydHNJbkRTVDsKKyAgICAgIHdoaWxlIChtaWxsaXMgPCBtYXgpCisgICAgICB7CisgICAgICBjYWwuc2V0VGltZShuZXcgRGF0ZShtaWxsaXMpKTsKKyAgICAgIGJvb2xlYW4gaW5EYXlsaWdodCA9IGNhbC5pbkRheWxpZ2h0VGltZSgpOworCisgICAgICBpZiAoaW5EYXlsaWdodCAhPSBsYXN0RFNUKQorICAgICAgeworICAgICAgbG9nbG4oIlN3aXRjaCAiICsgKGluRGF5bGlnaHQgPyAiaW50byIgOiAib3V0IG9mIikKKyAgICAgICsgIiBEU1QgYXQgIiArIChuZXcgRGF0ZShtaWxsaXMpKSk7CisgICAgICBsYXN0RFNUID0gaW5EYXlsaWdodDsKKyAgICAgIH0KKworICAgICAgbWlsbGlzICs9IDE1Kk9ORV9NSU5VVEU7CisgICAgICB9CisgICAgICB9CisgICAgICAqLworCisgICAgLyoqCisgICAgICogVGVzdCBuZXcgcnVsZSBmb3JtYXRzLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3ROZXdSdWxlcygpCisgICAgeworICAgICAgICAvL2xvZ2xuKExvY2FsZS5nZXREZWZhdWx0KCkuZ2V0RGlzcGxheU5hbWUoKSk7CisgICAgICAgIC8vbG9nbG4oVGltZVpvbmUuZ2V0RGVmYXVsdCgpLmdldElEKCkpOworICAgICAgICAvL2xvZ2xuKG5ldyBEYXRlKDApKTsKKworICAgICAgICBpZiAodHJ1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gRG9lc24ndCBtYXR0ZXIgd2hhdCB0aGUgZGVmYXVsdCBUaW1lWm9uZSBpcyBoZXJlLCBzaW5jZSB3ZQorICAgICAgICAgICAgLy8gYXJlIGNyZWF0aW5nIG91ciBvd24gVGltZVpvbmUgb2JqZWN0cy4KKworICAgICAgICAgICAgU2ltcGxlVGltZVpvbmUgdHo7CisgICAgICAgICAgICBqYXZhLnV0aWwuQ2FsZW5kYXIgdGVtcGNhbCA9IGphdmEudXRpbC5DYWxlbmRhci5nZXRJbnN0YW5jZSgpOworICAgICAgICAgICAgdGVtcGNhbC5jbGVhcigpOworCisgICAgICAgICAgICBsb2dsbigiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iKTsKKyAgICAgICAgICAgIGxvZ2xuKCJBdWcgMm5kVHVlcyAuLiBNYXIgMTUiKTsKKyAgICAgICAgICAgIHR6ID0gbmV3IFNpbXBsZVRpbWVab25lKC04Kk9ORV9IT1VSLCAiVGVzdF8xIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGVuZGFyLkFVR1VTVCwgMiwgQ2FsZW5kYXIuVFVFU0RBWSwgMipPTkVfSE9VUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGVuZGFyLk1BUkNILCAxNSwgMCwgMipPTkVfSE9VUik7CisgICAgICAgICAgICAvL2xvZ2xuKHR6LnRvU3RyaW5nKCkpOworICAgICAgICAgICAgbG9nbG4oIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKTsKKyAgICAgICAgICAgIHRlbXBjYWwuc2V0KDE5OTcsIDAsIDEpOworICAgICAgICAgICAgX3Rlc3RVc2luZ0JpbmFyeVNlYXJjaCh0eiwgdGVtcGNhbC5nZXRUaW1lKCksIDg1ODQxNjQwMDAwMEwpOworICAgICAgICAgICAgbG9nbG4oIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKTsKKyAgICAgICAgICAgIHRlbXBjYWwuc2V0KDE5OTcsIDYsIDEpOworICAgICAgICAgICAgX3Rlc3RVc2luZ0JpbmFyeVNlYXJjaCh0eiwgdGVtcGNhbC5nZXRUaW1lKCksIDg3MTM4MDAwMDAwMEwpOworCisgICAgICAgICAgICBsb2dsbigiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iKTsKKyAgICAgICAgICAgIGxvZ2xuKCJBcHIgV2VkPj0xNCAuLiBTZXAgU3VuPD0yMCIpOworICAgICAgICAgICAgdHogPSBuZXcgU2ltcGxlVGltZVpvbmUoLTgqT05FX0hPVVIsICJUZXN0XzIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsZW5kYXIuQVBSSUwsIDE0LCAtQ2FsZW5kYXIuV0VETkVTREFZLCAyKk9ORV9IT1VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsZW5kYXIuU0VQVEVNQkVSLCAtMjAsIC1DYWxlbmRhci5TVU5EQVksIDIqT05FX0hPVVIpOworICAgICAgICAgICAgLy9sb2dsbih0ei50b1N0cmluZygpKTsKKyAgICAgICAgICAgIGxvZ2xuKCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Iik7CisgICAgICAgICAgICB0ZW1wY2FsLnNldCgxOTk3LCAwLCAxKTsKKyAgICAgICAgICAgIF90ZXN0VXNpbmdCaW5hcnlTZWFyY2godHosIHRlbXBjYWwuZ2V0VGltZSgpLCA4NjExODQ4MDAwMDBMKTsKKyAgICAgICAgICAgIGxvZ2xuKCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Iik7CisgICAgICAgICAgICB0ZW1wY2FsLnNldCgxOTk3LCA2LCAxKTsKKyAgICAgICAgICAgIF90ZXN0VXNpbmdCaW5hcnlTZWFyY2godHosIHRlbXBjYWwuZ2V0VGltZSgpLCA4NzQyMjc2MDAwMDBMKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAgaWYgKHRydWUpCisgICAgICAgICAgeworICAgICAgICAgIGxvZ2xuKCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Iik7CisgICAgICAgICAgbG9nbG4oIlN0ZXBwaW5nIHVzaW5nIG1pbGxpcyIpOworICAgICAgICAgIF90ZXN0VXNpbmdNaWxsaXMobmV3IERhdGUoOTcsMCwxKSwgZmFsc2UpOworICAgICAgICAgIH0KKworICAgICAgICAgIGlmICh0cnVlKQorICAgICAgICAgIHsKKyAgICAgICAgICBsb2dsbigiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpOworICAgICAgICAgIGxvZ2xuKCJTdGVwcGluZyB1c2luZyBmaWVsZHMiKTsKKyAgICAgICAgICBfdGVzdFVzaW5nRmllbGRzKDE5OTcsIGZhbHNlKTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBpZiAoZmFsc2UpCisgICAgICAgICAgeworICAgICAgICAgIGNhbC5jbGVhcigpOworICAgICAgICAgIGNhbC5zZXQoMTk5NywgMywgNSwgMTAsIDApOworICAgICAgICAgIC8vICAgIGNhbC5pbkRheWxpZ2h0VGltZSgpOworICAgICAgICAgIGxvZ2xuKCJEYXRlID0gIiArIGNhbC5nZXRUaW1lKCkpOworICAgICAgICAgIGxvZ2xuKCJNaWxsaXMgPSAiICsgY2FsLmdldFRpbWUoKS5nZXRUaW1lKCkvMzYwMDAwMCk7CisgICAgICAgICAgfQorICAgICAgICAgICovCisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gTG9uZyBCdWcKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8vcHVibGljIHZvaWQgVGVzdDMoKQorICAgIC8veworICAgIC8vICAgIGZpbmREYXlsaWdodEJvdW5kYXJ5VXNpbmdUaW1lWm9uZShuZXcgRGF0ZSg5Nyw2LDEpLCB0cnVlKTsKKyAgICAvL30KKworICAgIC8qKgorICAgICAqIEZpbmQgYm91bmRhcmllcyBieSBzdGVwcGluZy4KKyAgICAgKi8KKyAgICB2b2lkIGZpbmRCb3VuZGFyaWVzU3RlcHdpc2UoaW50IHllYXIsIGxvbmcgaW50ZXJ2YWwsIFRpbWVab25lIHosIGludCBleHBlY3RlZENoYW5nZXMpCisgICAgeworICAgICAgICBqYXZhLnV0aWwuQ2FsZW5kYXIgdGVtcGNhbCA9IGphdmEudXRpbC5DYWxlbmRhci5nZXRJbnN0YW5jZSgpOworICAgICAgICB0ZW1wY2FsLmNsZWFyKCk7CisgICAgICAgIHRlbXBjYWwuc2V0KHllYXIsIENhbGVuZGFyLkpBTlVBUlksIDEpOworICAgICAgICBEYXRlIGQgPSB0ZW1wY2FsLmdldFRpbWUoKTsKKyAgICAgICAgbG9uZyB0aW1lID0gZC5nZXRUaW1lKCk7IC8vIG1zCisgICAgICAgIGxvbmcgbGltaXQgPSB0aW1lICsgT05FX1lFQVIgKyBPTkVfREFZOworICAgICAgICBib29sZWFuIGxhc3RTdGF0ZSA9IHouaW5EYXlsaWdodFRpbWUoZCk7CisgICAgICAgIGludCBjaGFuZ2VzID0gMDsKKyAgICAgICAgbG9nbG4oIi0tIFpvbmUgIiArIHouZ2V0SUQoKSArICIgc3RhcnRzIGluICIgKyB5ZWFyICsgIiB3aXRoIERTVCA9ICIgKyBsYXN0U3RhdGUpOworICAgICAgICBsb2dsbigidXNlRGF5bGlnaHRUaW1lID0gIiArIHoudXNlRGF5bGlnaHRUaW1lKCkpOworICAgICAgICB3aGlsZSAodGltZSA8IGxpbWl0KQorICAgICAgICB7CisgICAgICAgICAgICBkLnNldFRpbWUodGltZSk7CisgICAgICAgICAgICBib29sZWFuIHN0YXRlID0gei5pbkRheWxpZ2h0VGltZShkKTsKKyAgICAgICAgICAgIGlmIChzdGF0ZSAhPSBsYXN0U3RhdGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbG9nbG4oKHN0YXRlID8gIkVudHJ5ICIgOiAiRXhpdCAiKSArCisgICAgICAgICAgICAgICAgICAgICAgImF0ICIgKyBkKTsKKyAgICAgICAgICAgICAgICBsYXN0U3RhdGUgPSBzdGF0ZTsKKyAgICAgICAgICAgICAgICArK2NoYW5nZXM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0aW1lICs9IGludGVydmFsOworICAgICAgICB9CisgICAgICAgIGlmIChjaGFuZ2VzID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbGFzdFN0YXRlICYmICF6LnVzZURheWxpZ2h0VGltZSgpKSBsb2dsbigiTm8gRFNUIik7CisgICAgICAgICAgICBlbHNlIGVycmxuKCJGQUlMOiBEU1QgYWxsIHllYXIsIG9yIG5vIERTVCB3aXRoIHRydWUgdXNlRGF5bGlnaHRUaW1lIik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoY2hhbmdlcyAhPSAyKQorICAgICAgICB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogIiArIGNoYW5nZXMgKyAiIGNoYW5nZXMgc2Vlbjsgc2hvdWxkIHNlZSAwIG9yIDIiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICghei51c2VEYXlsaWdodFRpbWUoKSkKKyAgICAgICAgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IHVzZURheWxpZ2h0VGltZSBmYWxzZSBidXQgMiBjaGFuZ2VzIHNlZW4iKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY2hhbmdlcyAhPSBleHBlY3RlZENoYW5nZXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiAiICsgY2hhbmdlcyArICIgY2hhbmdlcyBzZWVuOyBleHBlY3RlZCAiICsgZXhwZWN0ZWRDaGFuZ2VzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RTdGVwd2lzZSgpCisgICAgeworICAgICAgICBmaW5kQm91bmRhcmllc1N0ZXB3aXNlKDE5OTcsIE9ORV9EQVksIFRpbWVab25lLmdldFRpbWVab25lKCJFU1QiKSwgMik7CisgICAgICAgIGZpbmRCb3VuZGFyaWVzU3RlcHdpc2UoMTk5NywgT05FX0RBWSwgVGltZVpvbmUuZ2V0VGltZVpvbmUoIkFDVCIpLCAyKTsgLy8gVXBkYXRlZCAzSmFuMDEKKyAgICAgICAgZmluZEJvdW5kYXJpZXNTdGVwd2lzZSgxOTk3LCBPTkVfREFZLCBUaW1lWm9uZS5nZXRUaW1lWm9uZSgiQW1lcmljYS9QaG9lbml4IiksIDApOyAvLyBBZGRlZCAzSmFuMDEKKyAgICAgICAgZmluZEJvdW5kYXJpZXNTdGVwd2lzZSgxOTk3LCBPTkVfREFZLCBUaW1lWm9uZS5nZXRUaW1lWm9uZShBVVNUUkFMSUEpLCAyKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvdGltZXpvbmUvVGltZVpvbmVSZWdyZXNzaW9uLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvdGltZXpvbmUvVGltZVpvbmVSZWdyZXNzaW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYTZlZjc2YQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC90aW1lem9uZS9UaW1lWm9uZVJlZ3Jlc3Npb24uamF2YQpAQCAtMCwwICsxLDk2NSBAQAorLyoqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC90aW1lem9uZS9UaW1lWm9uZVJlZ3Jlc3Npb24uamF2YSx2ICQKKyAqICREYXRlOiAyMDAyLzA4LzEzIDIyOjA0OjM5ICQKKyAqICRSZXZpc2lvbjogMS44ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKKy8qKgorICogQHRlc3QgMS4xOCA5OS8wOS8yMQorICogQGJ1ZyA0MDUyOTY3IDQwNzMyMDkgNDA3MzIxNSA0MDg0OTMzIDQwOTY5NTIgNDEwOTMxNCA0MTI2Njc4IDQxNTE0MDYgNDE1MTQyOQorICogQGJ1ZyA0MTU0NTI1IDQxNTQ1MzcgNDE1NDU0MiA0MTU0NjUwIDQxNTk5MjIgNDE2MjU5MyA0MTczNjA0IDQxNzY2ODYgNDE4NDIyOSA0MjA4OTYwCisgKi8KKworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudGVzdC50aW1lem9uZTsKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLio7CitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGNvbS5pYm0uaWN1LmxhbmcuKjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0Lio7CitpbXBvcnQgY29tLmlibS5pY3UuZGV2LnRlc3QuKjsKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworCitwdWJsaWMgY2xhc3MgVGltZVpvbmVSZWdyZXNzaW9uIGV4dGVuZHMgVGVzdEZtd2sgeworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIG5ldyBUaW1lWm9uZVJlZ3Jlc3Npb24oKS5ydW4oYXJncyk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdDQwNTI5NjcoKSB7CisgICAgICAgIGxvZ2xuKCIqKiogQ0hFQ0sgVElNRVpPTkUgQUdBSU5TVCBIT1NUIE9TIFNFVFRJTkcgKioqIik7CisJU3RyaW5nIGlkID0gVGltZVpvbmUuZ2V0RGVmYXVsdCgpLmdldElEKCk7CisgICAgICAgIGxvZ2xuKCJ1c2VyLnRpbWV6b25lOiAiICsgU3lzdGVtLmdldFByb3BlcnR5KCJ1c2VyLnRpbWV6b25lIiwgIjxub3Qgc2V0PiIpKTsKKwlsb2dsbigiVGltZVpvbmUuZ2V0RGVmYXVsdCgpLmdldElEKCk6ICIgKyBpZCk7CisgICAgICAgIGxvZ2xuKG5ldyBEYXRlKCkudG9TdHJpbmcoKSk7CisgICAgICAgIGxvZ2xuKCIqKiogVEhFIFJFU1VMVFMgT0YgVEhJUyBURVNUIE1VU1QgQkUgVkVSSUZJRUQgTUFOVUFMTFkgKioqIik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdDQwNzMyMDkoKSB7CisgICAgICAgIFRpbWVab25lIHoxID0gVGltZVpvbmUuZ2V0VGltZVpvbmUoIlBTVCIpOworICAgICAgICBUaW1lWm9uZSB6MiA9IFRpbWVab25lLmdldFRpbWVab25lKCJQU1QiKTsKKyAgICAgICAgaWYgKHoxID09IHoyKSBlcnJsbigiRmFpbDogVGltZVpvbmUgc2hvdWxkIHJldHVybiBjbG9uZXMiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0NDA3MzIxNSgpIHsKKyAgICAgICAgU2ltcGxlVGltZVpvbmUgeiA9IChTaW1wbGVUaW1lWm9uZSkgVGltZVpvbmUuZ2V0VGltZVpvbmUoIkdNVCIpOworICAgICAgICBpZiAoei51c2VEYXlsaWdodFRpbWUoKSkKKyAgICAgICAgICAgIGVycmxuKCJGYWlsOiBGaXggdGVzdCB0byBzdGFydCB3aXRoIG5vbi1EU1Qgem9uZSIpOworICAgICAgICB6LnNldFN0YXJ0UnVsZShDYWxlbmRhci5GRUJSVUFSWSwgMSwgQ2FsZW5kYXIuU1VOREFZLCAwKTsKKyAgICAgICAgei5zZXRFbmRSdWxlKENhbGVuZGFyLk1BUkNILCAtMSwgQ2FsZW5kYXIuU1VOREFZLCAwKTsKKyAgICAgICAgaWYgKCF6LnVzZURheWxpZ2h0VGltZSgpKQorICAgICAgICAgICAgZXJybG4oIkZhaWw6IERTVCBub3QgYWN0aXZlIik7CisgICAgICAgIGphdmEudXRpbC5DYWxlbmRhciB0ZW1wY2FsID0gamF2YS51dGlsLkNhbGVuZGFyLmdldEluc3RhbmNlKCk7CisgICAgICAgIHRlbXBjYWwuY2xlYXIoKTsKKyAgICAgICAgdGVtcGNhbC5zZXQoMTk5NywgQ2FsZW5kYXIuSkFOVUFSWSwgMzEpOworICAgICAgICBEYXRlIGQxID0gdGVtcGNhbC5nZXRUaW1lKCk7CisgICAgICAgIHRlbXBjYWwuc2V0KDE5OTcsIENhbGVuZGFyLk1BUkNILCAxKTsKKyAgICAgICAgRGF0ZSBkMiA9IHRlbXBjYWwuZ2V0VGltZSgpOworICAgICAgICB0ZW1wY2FsLnNldCgxOTk3LCBDYWxlbmRhci5NQVJDSCwgMzEpOworICAgICAgICBEYXRlIGQzID0gdGVtcGNhbC5nZXRUaW1lKCk7CisgICAgICAgIGlmICh6LmluRGF5bGlnaHRUaW1lKGQxKSB8fCAhei5pbkRheWxpZ2h0VGltZShkMikgfHwKKyAgICAgICAgICAgIHouaW5EYXlsaWdodFRpbWUoZDMpKSB7CisgICAgICAgICAgICBlcnJsbigiRmFpbDogRFNUIG5vdCB3b3JraW5nIGFzIGV4cGVjdGVkIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaGUgZXhwZWN0ZWQgYmVoYXZpb3Igb2YgVGltZVpvbmUgYXJvdW5kIHRoZSBib3VuZGFyaWVzIGlzOgorICAgICAqIChBc3N1bWUgdHJhbnNpdGlvbiB0aW1lIG9mIDI6MDAgQU0pCisgICAgICogICAgZGF5IG9mIG9uc2V0IDE6NTkgQU0gU1REICA9IGRpc3BsYXkgbmFtZSAxOjU5IEFNIFNUCisgICAgICogICAgICAgICAgICAgICAgIDI6MDAgQU0gU1REICA9IGRpc3BsYXkgbmFtZSAzOjAwIEFNIERUCisgICAgICogICAgZGF5IG9mIGVuZCAgIDA6NTkgQU0gU1REICA9IGRpc3BsYXkgbmFtZSAxOjU5IEFNIERUCisgICAgICogICAgICAgICAgICAgICAgIDE6MDAgQU0gU1REICA9IGRpc3BsYXkgbmFtZSAxOjAwIEFNIFNUCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQwODQ5MzMoKSB7CisgICAgICAgIFRpbWVab25lIHR6ID0gVGltZVpvbmUuZ2V0VGltZVpvbmUoIlBTVCIpOworCisgICAgICAgIGxvbmcgb2Zmc2V0MSA9IHR6LmdldE9mZnNldCgxLAorICAgICAgICAgICAgMTk5NywgQ2FsZW5kYXIuT0NUT0JFUiwgMjYsIENhbGVuZGFyLlNVTkRBWSwgKDIqNjAqNjAqMTAwMCkpOworICAgICAgICBsb25nIG9mZnNldDIgPSB0ei5nZXRPZmZzZXQoMSwKKyAgICAgICAgICAgIDE5OTcsIENhbGVuZGFyLk9DVE9CRVIsIDI2LCBDYWxlbmRhci5TVU5EQVksICgyKjYwKjYwKjEwMDApLTEpOworCisgICAgICAgIGxvbmcgb2Zmc2V0MyA9IHR6LmdldE9mZnNldCgxLAorICAgICAgICAgICAgMTk5NywgQ2FsZW5kYXIuT0NUT0JFUiwgMjYsIENhbGVuZGFyLlNVTkRBWSwgKDEqNjAqNjAqMTAwMCkpOworICAgICAgICBsb25nIG9mZnNldDQgPSB0ei5nZXRPZmZzZXQoMSwKKyAgICAgICAgICAgIDE5OTcsIENhbGVuZGFyLk9DVE9CRVIsIDI2LCBDYWxlbmRhci5TVU5EQVksICgxKjYwKjYwKjEwMDApLTEpOworCisgICAgICAgIC8qCisgICAgICAgICAqICBUaGUgZm9sbG93aW5nIHdhcyBhZGRlZCBqdXN0IGZvciBjb25zaXN0ZW5jeS4gIEl0IHNob3dzIHRoYXQgZ29pbmcgKnRvKiBEYXlsaWdodAorICAgICAgICAgKiAgU2F2aW5ncyBUaW1lIChQRFQpIGRvZXMgd29yayBhdCAyYW0uCisgICAgICAgICAqLworCisgICAgICAgIGxvbmcgb2Zmc2V0NSA9IHR6LmdldE9mZnNldCgxLAorICAgICAgICAgICAgMTk5NywgQ2FsZW5kYXIuQVBSSUwsIDYsIENhbGVuZGFyLlNVTkRBWSwgKDIqNjAqNjAqMTAwMCkpOworICAgICAgICBsb25nIG9mZnNldDYgPSB0ei5nZXRPZmZzZXQoMSwKKyAgICAgICAgICAgIDE5OTcsIENhbGVuZGFyLkFQUklMLCA2LCBDYWxlbmRhci5TVU5EQVksICgyKjYwKjYwKjEwMDApLTEpOworCisgICAgICAgIGxvbmcgb2Zmc2V0NyA9IHR6LmdldE9mZnNldCgxLAorICAgICAgICAgICAgMTk5NywgQ2FsZW5kYXIuQVBSSUwsIDYsIENhbGVuZGFyLlNVTkRBWSwgKDEqNjAqNjAqMTAwMCkpOworICAgICAgICBsb25nIG9mZnNldDggPSB0ei5nZXRPZmZzZXQoMSwKKyAgICAgICAgICAgIDE5OTcsIENhbGVuZGFyLkFQUklMLCA2LCBDYWxlbmRhci5TVU5EQVksICgxKjYwKjYwKjEwMDApLTEpOworCisgICAgICAgIGxvbmcgU1RvZmZzZXQgPSAtOCAqIDYwKjYwKjEwMDBMOworICAgICAgICBsb25nIERUb2Zmc2V0ID0gLTcgKiA2MCo2MCoxMDAwTDsKKyAgICAgICAgaWYgKG9mZnNldDEgIT0gU1RvZmZzZXQgfHwgb2Zmc2V0MiAhPSBTVG9mZnNldCB8fAorICAgICAgICAgICAgb2Zmc2V0MyAhPSBTVG9mZnNldCB8fCBvZmZzZXQ0ICE9IERUb2Zmc2V0IHx8CisgICAgICAgICAgICBvZmZzZXQ1ICE9IERUb2Zmc2V0IHx8IG9mZnNldDYgIT0gU1RvZmZzZXQgfHwKKyAgICAgICAgICAgIG9mZnNldDcgIT0gU1RvZmZzZXQgfHwgb2Zmc2V0OCAhPSBTVG9mZnNldCkKKyAgICAgICAgICAgIGVycmxuKCJGYWlsOiBUaW1lWm9uZSBtaXNiZWhhdmluZyIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MDk2OTUyKCkgeworICAgICAgICBTdHJpbmdbXSBaT05FUyA9IHsgIkdNVCIsICJNRVQiLCAiSVNUIiB9OworICAgICAgICBib29sZWFuIHBhc3MgPSB0cnVlOworICAgICAgICB0cnkgeworICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPFpPTkVTLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgVGltZVpvbmUgem9uZSA9IFRpbWVab25lLmdldFRpbWVab25lKFpPTkVTW2ldKTsKKyAgICAgICAgICAgICAgICBpZiAoIXpvbmUuZ2V0SUQoKS5lcXVhbHMoWk9ORVNbaV0pKQorICAgICAgICAgICAgICAgICAgICBlcnJsbigiRmFpbDogVGVzdCBicm9rZW47IHpvbmVzIG5vdCBpbnN0YW50aWF0aW5nIik7CisKKyAgICAgICAgICAgICAgICBCeXRlQXJyYXlPdXRwdXRTdHJlYW0gYmFvczsKKyAgICAgICAgICAgICAgICBPYmplY3RPdXRwdXRTdHJlYW0gb3N0cmVhbSA9CisgICAgICAgICAgICAgICAgICAgIG5ldyBPYmplY3RPdXRwdXRTdHJlYW0oYmFvcyA9IG5ldyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCeXRlQXJyYXlPdXRwdXRTdHJlYW0oKSk7CisgICAgICAgICAgICAgICAgb3N0cmVhbS53cml0ZU9iamVjdCh6b25lKTsKKyAgICAgICAgICAgICAgICBvc3RyZWFtLmNsb3NlKCk7CisgICAgICAgICAgICAgICAgYmFvcy5jbG9zZSgpOworICAgICAgICAgICAgICAgIE9iamVjdElucHV0U3RyZWFtIGlzdHJlYW0gPQorICAgICAgICAgICAgICAgICAgICBuZXcgT2JqZWN0SW5wdXRTdHJlYW0obmV3IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnl0ZUFycmF5SW5wdXRTdHJlYW0oYmFvcy50b0J5dGVBcnJheSgpKSk7CisgICAgICAgICAgICAgICAgVGltZVpvbmUgZnJhbmtlblpvbmUgPSAoVGltZVpvbmUpIGlzdHJlYW0ucmVhZE9iamVjdCgpOworICAgICAgICAgICAgICAgIC8vbG9nbG4oIlpvbmU6ICAgICAgICAiICsgem9uZSk7CisgICAgICAgICAgICAgICAgLy9sb2dsbigiRnJhbmtlblpvbmU6ICIgKyBmcmFua2VuWm9uZSk7CisgICAgICAgICAgICAgICAgaWYgKCF6b25lLmVxdWFscyhmcmFua2VuWm9uZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgbG9nbG4oIlRpbWVab25lICIgKyB6b25lLmdldElEKCkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiIG5vdCBlcXVhbCB0byBzZXJpYWxpemVkL2Rlc2VyaWFsaXplZCBvbmUiKTsKKyAgICAgICAgICAgICAgICAgICAgcGFzcyA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghcGFzcykgZXJybG4oIkZhaWw6IFRpbWVab25lIHNlcmlhbGl6YXRpb24vZXF1YWxpdHkgYnVnIik7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJGYWlsOiAiICsgZSk7CisgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChDbGFzc05vdEZvdW5kRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJGYWlsOiAiICsgZSk7CisgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdDQxMDkzMTQoKSB7CisgICAgICAgIEdyZWdvcmlhbkNhbGVuZGFyIHRlc3RDYWwgPSAoR3JlZ29yaWFuQ2FsZW5kYXIpQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTsgCisgICAgICAgIFRpbWVab25lIFBTVCA9IFRpbWVab25lLmdldFRpbWVab25lKCJQU1QiKTsKKyAgICAgICAgamF2YS51dGlsLkNhbGVuZGFyIHRlbXBjYWwgPSBqYXZhLnV0aWwuQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTsKKyAgICAgICAgdGVtcGNhbC5jbGVhcigpOworICAgICAgICB0ZW1wY2FsLnNldCgxOTk4LENhbGVuZGFyLkFQUklMLDQsMjIsMCk7CisgICAgICAgIERhdGUgZDEgPSB0ZW1wY2FsLmdldFRpbWUoKTsKKyAgICAgICAgdGVtcGNhbC5zZXQoMTk5OCxDYWxlbmRhci5BUFJJTCw1LDYsMCk7CisgICAgICAgIERhdGUgZDIgPSB0ZW1wY2FsLmdldFRpbWUoKTsKKyAgICAgICAgdGVtcGNhbC5zZXQoMTk5OCxDYWxlbmRhci5PQ1RPQkVSLDI0LDIyLDApOworICAgICAgICBEYXRlIGQzID0gdGVtcGNhbC5nZXRUaW1lKCk7CisgICAgICAgIHRlbXBjYWwuc2V0KDE5OTgsQ2FsZW5kYXIuT0NUT0JFUiwyNSw2LDApOworICAgICAgICBEYXRlIGQ0ID0gdGVtcGNhbC5nZXRUaW1lKCk7CisgICAgICAgIE9iamVjdFtdIHRlc3REYXRhID0geworICAgICAgICAgICAgUFNULCBkMSwgZDIsCisgICAgICAgICAgICBQU1QsIGQzLCBkNCwKKyAgICAgICAgfTsKKyAgICAgICAgYm9vbGVhbiBwYXNzPXRydWU7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTx0ZXN0RGF0YS5sZW5ndGg7IGkrPTMpIHsKKyAgICAgICAgICAgIHRlc3RDYWwuc2V0VGltZVpvbmUoKFRpbWVab25lKSB0ZXN0RGF0YVtpXSk7CisgICAgICAgICAgICBsb25nIHQgPSAoKERhdGUpdGVzdERhdGFbaSsxXSkuZ2V0VGltZSgpOworICAgICAgICAgICAgRGF0ZSBlbmQgPSAoRGF0ZSkgdGVzdERhdGFbaSsyXTsKKyAgICAgICAgICAgIHdoaWxlICh0IDwgZW5kLmdldFRpbWUoKSkgeyAKKyAgICAgICAgICAgICAgICB0ZXN0Q2FsLnNldFRpbWUobmV3IERhdGUodCkpOworICAgICAgICAgICAgICAgIGlmICghY2hlY2tDYWxlbmRhcjMxNCh0ZXN0Q2FsLCAoVGltZVpvbmUpIHRlc3REYXRhW2ldKSkKKyAgICAgICAgICAgICAgICAgICAgcGFzcyA9IGZhbHNlOworICAgICAgICAgICAgICAgIHQgKz0gNjAqNjAqMTAwMEw7CisgICAgICAgICAgICB9IAorICAgICAgICB9CisgICAgICAgIGlmICghcGFzcykgZXJybG4oIkZhaWw6IFRaIEFQSSBpbmNvbnNpc3RlbnQiKTsKKyAgICB9IAorCisgICAgYm9vbGVhbiBjaGVja0NhbGVuZGFyMzE0KEdyZWdvcmlhbkNhbGVuZGFyIHRlc3RDYWwsIFRpbWVab25lIHRlc3RUWikgeyAKKyAgICAgICAgLy8gR3JlZ29yaWFuQ2FsZW5kYXIgdGVzdENhbCA9IChHcmVnb3JpYW5DYWxlbmRhcilhQ2FsLmNsb25lKCk7IAorCisgICAgICAgIGZpbmFsIGludCBPTkVfREFZID0gMjQqNjAqNjAqMTAwMDsKKworICAgICAgICBpbnQgdHpPZmZzZXQsIHR6UmF3T2Zmc2V0OyAKKyAgICAgICAgRmxvYXQgdHpPZmZzZXRGbG9hdCx0elJhd09mZnNldEZsb2F0OyAKKyAgICAgICAgLy8gSGVyZSBpcyB3aGVyZSB0aGUgdXNlciBtYWRlIGFuIGVycm9yLiAgVGhleSB3ZXJlIHBhc3NpbmcgaW4gdGhlIHZhbHVlIG9mCisgICAgICAgIC8vIHRoZSBNSUxMU0VDT05EIGZpZWxkOyB5b3UgbmVlZCB0byBwYXNzIGluIHRoZSBtaWxsaXMgaW4gdGhlIGRheSBpbiBTVEFOREFSRAorICAgICAgICAvLyB0aW1lLgorICAgICAgICBpbnQgbWlsbGlzID0gdGVzdENhbC5nZXQoQ2FsZW5kYXIuTUlMTElTRUNPTkQpICsKKyAgICAgICAgICAgIDEwMDAgKiAodGVzdENhbC5nZXQoQ2FsZW5kYXIuU0VDT05EKSArCisgICAgICAgICAgICAgICAgICAgIDYwICogKHRlc3RDYWwuZ2V0KENhbGVuZGFyLk1JTlVURSkgKworICAgICAgICAgICAgICAgICAgICAgICAgICA2MCAqICh0ZXN0Q2FsLmdldChDYWxlbmRhci5IT1VSX09GX0RBWSkpKSkgLQorICAgICAgICAgICAgdGVzdENhbC5nZXQoQ2FsZW5kYXIuRFNUX09GRlNFVCk7CisKKyAgICAgICAgLyogRml4IHVwIG1pbGxpcyB0byBiZSBpbiByYW5nZS4gIEFTU1VNRSBUSEFUIFdFIEFSRSBOT1QgQVQgVEhFCisgICAgICAgICAqIEJFR0lOTklORyBPUiBFTkQgT0YgQSBNT05USC4gIFdlIG11c3QgYWRkIHRoaXMgY29kZSBiZWNhdXNlCisgICAgICAgICAqIGdldE9mZnNldCgpIGhhcyBiZWVuIGNoYW5nZWQgdG8gYmUgbW9yZSBzdHJpY3QgYWJvdXQgdGhlIHBhcmFtZXRlcnMKKyAgICAgICAgICogaXQgcmVjZWl2ZXMgLS0gaXQgdHVybnMgb3V0IHRoYXQgdGhpcyB0ZXN0IHdhcyBwYXNzaW5nIGluIGlsbGVnYWwKKyAgICAgICAgICogdmFsdWVzLiAqLworICAgICAgICBpbnQgZGF0ZSA9IHRlc3RDYWwuZ2V0KENhbGVuZGFyLkRBVEUpOworICAgICAgICBpbnQgZG93ICA9IHRlc3RDYWwuZ2V0KENhbGVuZGFyLkRBWV9PRl9XRUVLKTsKKyAgICAgICAgd2hpbGUgKG1pbGxpcyA8IDApIHsKKyAgICAgICAgICAgIG1pbGxpcyArPSBPTkVfREFZOworICAgICAgICAgICAgLS1kYXRlOworICAgICAgICAgICAgZG93ID0gQ2FsZW5kYXIuU1VOREFZICsgKChkb3cgLSBDYWxlbmRhci5TVU5EQVkgKyA2KSAlIDcpOworICAgICAgICB9CisgICAgICAgIHdoaWxlIChtaWxsaXMgPj0gT05FX0RBWSkgeworICAgICAgICAgICAgbWlsbGlzIC09IE9ORV9EQVk7CisgICAgICAgICAgICArK2RhdGU7CisgICAgICAgICAgICBkb3cgPSBDYWxlbmRhci5TVU5EQVkgKyAoKGRvdyAtIENhbGVuZGFyLlNVTkRBWSArIDEpICUgNyk7CisgICAgICAgIH0KKworICAgICAgICB0ek9mZnNldCA9IHRlc3RUWi5nZXRPZmZzZXQodGVzdENhbC5nZXQoQ2FsZW5kYXIuRVJBKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0Q2FsLmdldChDYWxlbmRhci5ZRUFSKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0Q2FsLmdldChDYWxlbmRhci5NT05USCksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3csIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlsbGlzKTsgCisgICAgICAgIHR6UmF3T2Zmc2V0ID0gdGVzdFRaLmdldFJhd09mZnNldCgpOyAKKyAgICAgICAgdHpPZmZzZXRGbG9hdCA9IG5ldyBGbG9hdCgoZmxvYXQpdHpPZmZzZXQvKGZsb2F0KTM2MDAwMDApOyAKKyAgICAgICAgdHpSYXdPZmZzZXRGbG9hdCA9IG5ldyBGbG9hdCgoZmxvYXQpdHpSYXdPZmZzZXQvKGZsb2F0KTM2MDAwMDApOyAKKworICAgICAgICBEYXRlIHRlc3REYXRlID0gdGVzdENhbC5nZXRUaW1lKCk7IAorCisgICAgICAgIGJvb2xlYW4gaW5EYXlsaWdodFRpbWUgPSB0ZXN0VFouaW5EYXlsaWdodFRpbWUodGVzdERhdGUpOyAKKyAgICAgICAgU2ltcGxlRGF0ZUZvcm1hdCBzZGYgPSBuZXcgU2ltcGxlRGF0ZUZvcm1hdCgiTU0vZGQveXl5eSBISDptbSIpOyAKKyAgICAgICAgc2RmLnNldENhbGVuZGFyKHRlc3RDYWwpOyAKKyAgICAgICAgU3RyaW5nIGluRGF5bGlnaHRUaW1lU3RyaW5nOyAKKworICAgICAgICBib29sZWFuIHBhc3NlZDsgCisKKyAgICAgICAgaWYgKGluRGF5bGlnaHRUaW1lKSAKKyAgICAgICAgeyAKKyAgICAgICAgICAgIGluRGF5bGlnaHRUaW1lU3RyaW5nID0gIiBEU1QgIjsgCisgICAgICAgICAgICBwYXNzZWQgPSAodHpPZmZzZXQgPT0gKHR6UmF3T2Zmc2V0ICsgMzYwMDAwMCkpOworICAgICAgICB9IAorICAgICAgICBlbHNlIAorICAgICAgICB7IAorICAgICAgICAgICAgaW5EYXlsaWdodFRpbWVTdHJpbmcgPSAiICAgICAiOyAKKyAgICAgICAgICAgIHBhc3NlZCA9ICh0ek9mZnNldCA9PSB0elJhd09mZnNldCk7CisgICAgICAgIH0gCisKKyAgICAgICAgU3RyaW5nIG91dHB1dCA9IHRlc3RUWi5nZXRJRCgpICsgIiAiICsgc2RmLmZvcm1hdCh0ZXN0RGF0ZSkgKworICAgICAgICAgICAgIiBPZmZzZXQoIiArIHR6T2Zmc2V0RmxvYXQgKyAiKSIgKworICAgICAgICAgICAgIiBSYXdPZmZzZXQoIiArIHR6UmF3T2Zmc2V0RmxvYXQgKyAiKSIgKyAKKyAgICAgICAgICAgICIgIiArIG1pbGxpcy8oZmxvYXQpMzYwMDAwMCArICIgIiArCisgICAgICAgICAgICBpbkRheWxpZ2h0VGltZVN0cmluZzsgCisKKyAgICAgICAgaWYgKHBhc3NlZCkgCisgICAgICAgICAgICBvdXRwdXQgKz0gIiAgICAgIjsgCisgICAgICAgIGVsc2UgCisgICAgICAgICAgICBvdXRwdXQgKz0gIkVSUk9SIjsgCisKKyAgICAgICAgaWYgKHBhc3NlZCkgbG9nbG4ob3V0cHV0KTsgZWxzZSBlcnJsbihvdXRwdXQpOworICAgICAgICByZXR1cm4gcGFzc2VkOworICAgIH0gCisKKyAgICAvKioKKyAgICAgKiBDQU5OT1QgUkVQUk9EVURFCisgICAgICoKKyAgICAgKiBZZXQgYW5vdGhlciBfYWxsZWdlZF8gYnVnIGluIFRpbWVab25lLmdldE9mZnNldCgpLCBhIG1ldGhvZCB0aGF0IG5ldmVyCisgICAgICogc2hvdWxkIGhhdmUgYmVlbiBtYWRlIHB1YmxpYy4gIEl0J3Mgc2ltcGx5IHRvbyBoYXJkIHRvIHVzZSBjb3JyZWN0bHkuCisgICAgICoKKyAgICAgKiBUaGUgb3JpZ2luYWwgdGVzdCBjb2RlIGZhaWxlZCB0byBkbyB0aGUgZm9sbG93aW5nOgorICAgICAqICgxKSBDYWxsIENhbGVuZGFyLnNldFRpbWUoKSBiZWZvcmUgZ2V0dGluZyB0aGUgZmllbGRzIQorICAgICAqICgyKSBVc2UgdGhlIHJpZ2h0IG1pbGxpcyAoYXMgdXN1YWwpIGZvciBnZXRPZmZzZXQoKTsgdGhleSB3ZXJlIHBhc3NpbmcKKyAgICAgKiAgICAgaW4gdGhlIE1JTExJUyBmaWVsZCwgaW5zdGVhZCBvZiB0aGUgU1RBTkRBUkQgTUlMTElTIElOIERBWS4KKyAgICAgKiBXaGVuIHlvdSBmaXggdGhlc2UgdHdvIHByb2JsZW1zLCB0aGUgdGVzdCBwYXNzZXMsIGFzIGV4cGVjdGVkLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTI2Njc4KCkgeworCS8vIE5vdGU6IHRoaXMgdGVzdCBkZXBlbmRzIG9uIHRoZSBQU1QgdGltZSB6b25lLgorCVRpbWVab25lIGluaXRpYWxab25lID0gVGltZVpvbmUuZ2V0RGVmYXVsdCgpOworICAgICAgICBDYWxlbmRhciBjYWwgPSBDYWxlbmRhci5nZXRJbnN0YW5jZSgpOworICAgICAgICBUaW1lWm9uZSB0eiA9IFRpbWVab25lLmdldFRpbWVab25lKCJQU1QiKTsKKwlUaW1lWm9uZS5zZXREZWZhdWx0KHR6KTsKKyAgICAgICAgY2FsLnNldFRpbWVab25lKHR6KTsKKworICAgICAgICBqYXZhLnV0aWwuQ2FsZW5kYXIgdGVtcGNhbCA9IGphdmEudXRpbC5DYWxlbmRhci5nZXRJbnN0YW5jZSgpOworICAgICAgICB0ZW1wY2FsLmNsZWFyKCk7CisgICAgICAgIHRlbXBjYWwuc2V0KDE5OTgsIENhbGVuZGFyLkFQUklMLCA1LCAxMCwgMCk7CisgICAgICAgIERhdGUgZHQgPSB0ZW1wY2FsLmdldFRpbWUoKTsKKwkvLyB0aGUgZHQgdmFsdWUgaXMgbG9jYWwgdGltZSBpbiBQU1QuCisgICAgICAgIGlmICghdHouaW5EYXlsaWdodFRpbWUoZHQpKQorICAgICAgICAgICAgZXJybG4oIldlJ3JlIG5vdCBpbiBEYXlsaWdodCBTYXZpbmdzIFRpbWUgYW5kIHdlIHNob3VsZCBiZS5cbiIpOworCisgICAgICAgIGNhbC5zZXRUaW1lKGR0KTsKKyAgICAgICAgaW50IGVyYSA9IGNhbC5nZXQoQ2FsZW5kYXIuRVJBKTsKKyAgICAgICAgaW50IHllYXIgPSBjYWwuZ2V0KENhbGVuZGFyLllFQVIpOworICAgICAgICBpbnQgbW9udGggPSBjYWwuZ2V0KENhbGVuZGFyLk1PTlRIKTsKKyAgICAgICAgaW50IGRheSA9IGNhbC5nZXQoQ2FsZW5kYXIuREFURSk7CisgICAgICAgIGludCBkYXlPZldlZWsgPSBjYWwuZ2V0KENhbGVuZGFyLkRBWV9PRl9XRUVLKTsKKyAgICAgICAgaW50IG1pbGxpcyA9IGNhbC5nZXQoQ2FsZW5kYXIuTUlMTElTRUNPTkQpICsKKyAgICAgICAgICAgIChjYWwuZ2V0KENhbGVuZGFyLlNFQ09ORCkgKworICAgICAgICAgICAgIChjYWwuZ2V0KENhbGVuZGFyLk1JTlVURSkgKworICAgICAgICAgICAgICAoY2FsLmdldChDYWxlbmRhci5IT1VSKSAqIDYwKSAqIDYwKSAqIDEwMDApIC0KKyAgICAgICAgICAgIGNhbC5nZXQoQ2FsZW5kYXIuRFNUX09GRlNFVCk7CisKKyAgICAgICAgbG9uZyBvZmZzZXQgPSB0ei5nZXRPZmZzZXQoZXJhLCB5ZWFyLCBtb250aCwgZGF5LCBkYXlPZldlZWssIG1pbGxpcyk7CisgICAgICAgIGxvbmcgcmF3X29mZnNldCA9IHR6LmdldFJhd09mZnNldCgpOworICAgICAgICBpZiAob2Zmc2V0ID09IHJhd19vZmZzZXQpCisgICAgICAgICAgICBlcnJsbigiT2Zmc2V0cyBzaG91bGQgbm90IG1hdGNoIHdoZW4gaW4gRFNUIik7CisKKwkvLyByZXN0b3JlIHRoZSBpbml0aWFsIHRpbWUgem9uZSBzbyB0aGF0IHRoaXMgdGVzdCBjYXNlCisJLy8gZG9lc24ndCBhZmZlY3QgdGhlIG90aGVycy4KKwlUaW1lWm9uZS5zZXREZWZhdWx0KGluaXRpYWxab25lKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogVGltZVpvbmUuZ2V0QXZhaWxhYmxlSURzKGludCkgdGhyb3dzIGV4Y2VwdGlvbiBmb3IgY2VydGFpbiB2YWx1ZXMsCisgICAgICogZHVlIHRvIGEgZmF1bHR5IGNvbnN0YW50IGluIFRpbWVab25lLmphdmEuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQxNTE0MDYoKSB7CisgICAgICAgIGludCBtYXggPSAwOworICAgICAgICBmb3IgKGludCBoPS0yODsgaDw9MzA7ICsraCkgeworICAgICAgICAgICAgLy8gaCBpcyBpbiBoYWxmLWhvdXJzIGZyb20gR01UOyByYXdvZmZzZXQgaXMgaW4gbWlsbGlzCisgICAgICAgICAgICBpbnQgcmF3b2Zmc2V0ID0gaCAqIDE4MDAwMDA7CisgICAgICAgICAgICBpbnQgaGggPSAoaDwwKSA/IC1oIDogaDsKKyAgICAgICAgICAgIFN0cmluZyBobmFtZSA9ICgoaDwwKSA/ICJHTVQtIiA6ICJHTVQrIikgKworICAgICAgICAgICAgICAgICgoaGgvMiA8IDEwKSA/ICIwIiA6ICIiKSArCisgICAgICAgICAgICAgICAgKGhoLzIpICsgJzonICsKKyAgICAgICAgICAgICAgICAoKGhoJTI9PTApID8gIjAwIiA6ICIzMCIpOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBTdHJpbmdbXSBpZHMgPSBUaW1lWm9uZS5nZXRBdmFpbGFibGVJRHMocmF3b2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBpZiAoaWRzLmxlbmd0aCA+IG1heCkgbWF4ID0gaWRzLmxlbmd0aDsKKyAgICAgICAgICAgICAgICBsb2dsbihobmFtZSArICcgJyArIGlkcy5sZW5ndGggKworICAgICAgICAgICAgICAgICAgICAgICgoaWRzLmxlbmd0aCA+IDApID8gKCIgZS5nLiAiICsgaWRzWzBdKSA6ICIiKSk7CisgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIGVycmxuKGhuYW1lICsgJyAnICsgIkZhaWw6ICIgKyBlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBsb2dsbigiTWF4aW11bSB6b25lcyBwZXIgb2Zmc2V0ID0gIiArIG1heCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdDQxNTE0MjkoKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBUaW1lWm9uZSB0eiA9IFRpbWVab25lLmdldFRpbWVab25lKCJHTVQiKTsKKyAgICAgICAgICAgIFN0cmluZyBuYW1lID0gdHouZ2V0RGlzcGxheU5hbWUodHJ1ZSwgSW50ZWdlci5NQVhfVkFMVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgICAgICAgICAgbmFtZSA9IG51bGw7CisgICAgICAgICAgICBlcnJsbigiSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIG5vdCB0aHJvd24gYnkgVGltZVpvbmUuZ2V0RGlzcGxheU5hbWUoKSIpOworICAgICAgICB9IGNhdGNoKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCIiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFNpbXBsZVRpbWVab25lIGFjY2VwdHMgaWxsZWdhbCBEU1Qgc2F2aW5ncyB2YWx1ZXMuICBUaGVzZSB2YWx1ZXMKKyAgICAgKiBtdXN0IGJlIG5vbi16ZXJvLiAgVGhlcmUgaXMgbm8gdXBwZXIgbGltaXQgYXQgdGhpcyB0aW1lLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTU0NTI1KCkgeworICAgICAgICBmaW5hbCBpbnQgR09PRCA9IDEsIEJBRCA9IDA7CisgICAgICAgIGludFtdIERBVEEgPSB7CisgICAgICAgICAgICAxLCBHT09ELAorICAgICAgICAgICAgMCwgQkFELAorICAgICAgICAgICAgLTEsIEJBRCwKKyAgICAgICAgICAgIDYwKjYwKjEwMDAsIEdPT0QsCisgICAgICAgICAgICBJbnRlZ2VyLk1JTl9WQUxVRSwgQkFELAorICAgICAgICAgICAgLy8gSW50ZWdlci5NQVhfVkFMVUUsID8sIC8vIG5vIHVwcGVyIGxpbWl0IG9uIERTVCBzYXZpbmdzIGF0IHRoaXMgdGltZQorICAgICAgICB9OworICAgICAgICBmb3IgKGludCBpPTA7IGk8REFUQS5sZW5ndGg7IGkrPTIpIHsKKyAgICAgICAgICAgIGludCBzYXZpbmdzID0gREFUQVtpXTsKKyAgICAgICAgICAgIGJvb2xlYW4gdmFsaWQgPSBEQVRBW2krMV0gPT0gR09PRDsKKyAgICAgICAgICAgIFN0cmluZyBtZXRob2QgPSBudWxsOworICAgICAgICAgICAgZm9yIChpbnQgaj0wOyBqPDI7ICsraikgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaikgeworICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2QgPSAiY29uc3RydWN0b3IiOworICAgICAgICAgICAgICAgICAgICAgICAgU2ltcGxlVGltZVpvbmUgeiA9IG5ldyBTaW1wbGVUaW1lWm9uZSgwLCAiaWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGVuZGFyLkpBTlVBUlksIDEsIDAsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsZW5kYXIuTUFSQ0gsIDEsIDAsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2aW5ncyk7IC8vIDwtIHdoYXQgd2UncmUgaW50ZXJlc3RlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCA9ICJzZXREU1RTYXZpbmdzKCkiOworICAgICAgICAgICAgICAgICAgICAgICAgeiA9IG5ldyBTaW1wbGVUaW1lWm9uZSgwLCAiR01UIik7CisgICAgICAgICAgICAgICAgICAgICAgICB6LnNldERTVFNhdmluZ3Moc2F2aW5ncyk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAodmFsaWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2xuKCJQYXNzOiBEU1Qgc2F2aW5ncyBvZiAiICsgc2F2aW5ncyArICIgYWNjZXB0ZWQgYnkgIiArIG1ldGhvZCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbigiRmFpbDogRFNUIHNhdmluZ3Mgb2YgIiArIHNhdmluZ3MgKyAiIGFjY2VwdGVkIGJ5ICIgKyBtZXRob2QpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZhbGlkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbigiRmFpbDogRFNUIHNhdmluZ3Mgb2YgIiArIHNhdmluZ3MgKyAiIHRvICIgKyBtZXRob2QgKyAiIGdhdmUgIiArIGUpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgbG9nbG4oIlBhc3M6IERTVCBzYXZpbmdzIG9mICIgKyBzYXZpbmdzICsgIiB0byAiICsgbWV0aG9kICsgIiBnYXZlICIgKyBlKTsKKyAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFNpbXBsZVRpbWVab25lLmhhc1NhbWVSdWxlcygpIGRvZXNuJ3Qgd29yayBmb3Igem9uZXMgd2l0aCBubyBEU1QKKyAgICAgKiBhbmQgZGlmZmVyZW50IERTVCBwYXJhbWV0ZXJzLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTU0NTM3KCkgeworICAgICAgICAvLyB0ejEgYW5kIHR6MiBoYXZlIG5vIERTVCBhbmQgZGlmZmVyZW50IHJ1bGUgcGFyYW1ldGVycworICAgICAgICBTaW1wbGVUaW1lWm9uZSB0ejEgPSBuZXcgU2ltcGxlVGltZVpvbmUoMCwgIjEiLCAwLCAwLCAwLCAwLCAyLCAwLCAwLCAwKTsKKyAgICAgICAgU2ltcGxlVGltZVpvbmUgdHoyID0gbmV3IFNpbXBsZVRpbWVab25lKDAsICIyIiwgMSwgMCwgMCwgMCwgMywgMCwgMCwgMCk7CisgICAgICAgIC8vIHR6YSBhbmQgdHpBIGhhdmUgdGhlIHNhbWUgcnVsZSBwYXJhbXMKKyAgICAgICAgU2ltcGxlVGltZVpvbmUgdHphID0gbmV3IFNpbXBsZVRpbWVab25lKDAsICJhIiwgMCwgMSwgMCwgMCwgMywgMiwgMCwgMCk7CisgICAgICAgIFNpbXBsZVRpbWVab25lIHR6QSA9IG5ldyBTaW1wbGVUaW1lWm9uZSgwLCAiQSIsIDAsIDEsIDAsIDAsIDMsIDIsIDAsIDApOworICAgICAgICAvLyB0emIgZGlmZmVycyBmcm9tIHR6YQorICAgICAgICBTaW1wbGVUaW1lWm9uZSB0emIgPSBuZXcgU2ltcGxlVGltZVpvbmUoMCwgImIiLCAwLCAxLCAwLCAwLCAzLCAxLCAwLCAwKTsKKyAgICAgICAgaWYgKHR6MS51c2VEYXlsaWdodFRpbWUoKSB8fCB0ejIudXNlRGF5bGlnaHRUaW1lKCkgfHwKKyAgICAgICAgICAgICF0emEudXNlRGF5bGlnaHRUaW1lKCkgfHwgIXR6QS51c2VEYXlsaWdodFRpbWUoKSB8fAorICAgICAgICAgICAgIXR6Yi51c2VEYXlsaWdodFRpbWUoKSkgeworICAgICAgICAgICAgZXJybG4oIlRlc3QgaXMgYnJva2VuIC0tIHJld3JpdGUgaXQiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIXR6YS5oYXNTYW1lUnVsZXModHpBKSB8fCB0emEuaGFzU2FtZVJ1bGVzKHR6YikpIHsKKyAgICAgICAgICAgIGVycmxuKCJGYWlsOiBoYXNTYW1lUnVsZXMoKSBicm9rZW4gZm9yIHpvbmVzIHdpdGggcnVsZXMiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIXR6MS5oYXNTYW1lUnVsZXModHoyKSkgeworICAgICAgICAgICAgZXJybG4oIkZhaWw6IGhhc1NhbWVSdWxlcygpIHJldHVybnMgZmFsc2UgZm9yIHpvbmVzIHdpdGhvdXQgcnVsZXMiKTsKKyAgICAgICAgICAgIGVycmxuKCJ6b25lIDEgPSAiICsgdHoxKTsKKyAgICAgICAgICAgIGVycmxuKCJ6b25lIDIgPSAiICsgdHoyKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFNpbXBsZVRpbWVab25lIGNvbnN0cnVjdG9ycywgc2V0U3RhcnRSdWxlKCksIGFuZCBzZXRFbmRSdWxlKCkgZG9uJ3QKKyAgICAgKiBjaGVjayBmb3Igb3V0LW9mLXJhbmdlIGFyZ3VtZW50cy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDE1NDU0MigpIHsKKyAgICAgICAgZmluYWwgaW50IEdPT0QgPSAxOworICAgICAgICBmaW5hbCBpbnQgQkFEICA9IDA7CisKKyAgICAgICAgZmluYWwgaW50IEdPT0RfTU9OVEggICAgICAgPSBDYWxlbmRhci5KQU5VQVJZOworICAgICAgICBmaW5hbCBpbnQgR09PRF9EQVkgICAgICAgICA9IDE7CisgICAgICAgIGZpbmFsIGludCBHT09EX0RBWV9PRl9XRUVLID0gQ2FsZW5kYXIuU1VOREFZOworICAgICAgICBmaW5hbCBpbnQgR09PRF9USU1FICAgICAgICA9IDA7CisKKyAgICAgICAgaW50W10gREFUQSA9IHsKKyAgICAgICAgICAgIEdPT0QsIEludGVnZXIuTUlOX1ZBTFVFLCAgICAwLCAgSW50ZWdlci5NQVhfVkFMVUUsICAgSW50ZWdlci5NSU5fVkFMVUUsCisgICAgICAgICAgICBHT09ELCBDYWxlbmRhci5KQU5VQVJZLCAgICAtNSwgIENhbGVuZGFyLlNVTkRBWSwgICAgIDAsCisgICAgICAgICAgICBHT09ELCBDYWxlbmRhci5ERUNFTUJFUiwgICAgNSwgIENhbGVuZGFyLlNBVFVSREFZLCAgIDI0KjYwKjYwKjEwMDAtMSwKKyAgICAgICAgICAgIEJBRCwgIENhbGVuZGFyLkRFQ0VNQkVSLCAgICA1LCAgQ2FsZW5kYXIuU0FUVVJEQVksICAgMjQqNjAqNjAqMTAwMCwKKyAgICAgICAgICAgIEJBRCwgIENhbGVuZGFyLkRFQ0VNQkVSLCAgICA1LCAgQ2FsZW5kYXIuU0FUVVJEQVksICAtMSwKKyAgICAgICAgICAgIEJBRCwgIENhbGVuZGFyLkpBTlVBUlksICAgIC02LCAgQ2FsZW5kYXIuU1VOREFZLCAgICAgMCwKKyAgICAgICAgICAgIEJBRCwgIENhbGVuZGFyLkRFQ0VNQkVSLCAgICA2LCAgQ2FsZW5kYXIuU0FUVVJEQVksICAgMjQqNjAqNjAqMTAwMCwKKyAgICAgICAgICAgIEdPT0QsIENhbGVuZGFyLkRFQ0VNQkVSLCAgICAxLCAgMCwgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIEdPT0QsIENhbGVuZGFyLkRFQ0VNQkVSLCAgIDMxLCAgMCwgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIEJBRCwgIENhbGVuZGFyLkFQUklMLCAgICAgIDMxLCAgMCwgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIEJBRCwgIENhbGVuZGFyLkRFQ0VNQkVSLCAgIDMyLCAgMCwgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIEJBRCwgIENhbGVuZGFyLkpBTlVBUlktMSwgICAxLCAgQ2FsZW5kYXIuU1VOREFZLCAgICAgMCwKKyAgICAgICAgICAgIEJBRCwgIENhbGVuZGFyLkRFQ0VNQkVSKzEsICAxLCAgQ2FsZW5kYXIuU1VOREFZLCAgICAgMCwKKyAgICAgICAgICAgIEdPT0QsIENhbGVuZGFyLkRFQ0VNQkVSLCAgIDMxLCAtQ2FsZW5kYXIuU1VOREFZLCAgICAgMCwKKyAgICAgICAgICAgIEdPT0QsIENhbGVuZGFyLkRFQ0VNQkVSLCAgIDMxLCAtQ2FsZW5kYXIuU0FUVVJEQVksICAgMCwKKyAgICAgICAgICAgIEJBRCwgIENhbGVuZGFyLkRFQ0VNQkVSLCAgIDMyLCAtQ2FsZW5kYXIuU0FUVVJEQVksICAgMCwKKyAgICAgICAgICAgIEJBRCwgIENhbGVuZGFyLkRFQ0VNQkVSLCAgLTMyLCAtQ2FsZW5kYXIuU0FUVVJEQVksICAgMCwKKyAgICAgICAgICAgIEJBRCwgIENhbGVuZGFyLkRFQ0VNQkVSLCAgIDMxLCAtQ2FsZW5kYXIuU0FUVVJEQVktMSwgMCwKKyAgICAgICAgfTsKKyAgICAgICAgU2ltcGxlVGltZVpvbmUgem9uZSA9IG5ldyBTaW1wbGVUaW1lWm9uZSgwLCAiWiIpOworICAgICAgICBmb3IgKGludCBpPTA7IGk8REFUQS5sZW5ndGg7IGkrPTUpIHsKKyAgICAgICAgICAgIGJvb2xlYW4gc2hvdWxkQmVHb29kID0gKERBVEFbaV0gPT0gR09PRCk7CisgICAgICAgICAgICBpbnQgbW9udGggICAgID0gREFUQVtpKzFdOworICAgICAgICAgICAgaW50IGRheSAgICAgICA9IERBVEFbaSsyXTsKKyAgICAgICAgICAgIGludCBkYXlPZldlZWsgPSBEQVRBW2krM107CisgICAgICAgICAgICBpbnQgdGltZSAgICAgID0gREFUQVtpKzRdOworCisgICAgICAgICAgICBFeGNlcHRpb24gZXggPSBudWxsOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICB6b25lLnNldFN0YXJ0UnVsZShtb250aCwgZGF5LCBkYXlPZldlZWssIHRpbWUpOworICAgICAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBleCA9IGU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoKGV4ID09IG51bGwpICE9IHNob3VsZEJlR29vZCkgeworICAgICAgICAgICAgICAgIGVycmxuKCJzZXRTdGFydFJ1bGUobW9udGg9IiArIG1vbnRoICsgIiwgZGF5PSIgKyBkYXkgKworICAgICAgICAgICAgICAgICAgICAgICIsIGRheU9mV2Vlaz0iICsgZGF5T2ZXZWVrICsgIiwgdGltZT0iICsgdGltZSArCisgICAgICAgICAgICAgICAgICAgICAgKHNob3VsZEJlR29vZCA/ICgiKSBzaG91bGQgd29yayBidXQgdGhyb3dzICIgKyBleCkKKyAgICAgICAgICAgICAgICAgICAgICAgOiAiKSBzaG91bGQgZmFpbCBidXQgZG9lc24ndCIpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZXggPSBudWxsOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICB6b25lLnNldEVuZFJ1bGUobW9udGgsIGRheSwgZGF5T2ZXZWVrLCB0aW1lKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgZXggPSBlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKChleCA9PSBudWxsKSAhPSBzaG91bGRCZUdvb2QpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigic2V0RW5kUnVsZShtb250aD0iICsgbW9udGggKyAiLCBkYXk9IiArIGRheSArCisgICAgICAgICAgICAgICAgICAgICAgIiwgZGF5T2ZXZWVrPSIgKyBkYXlPZldlZWsgKyAiLCB0aW1lPSIgKyB0aW1lICsKKyAgICAgICAgICAgICAgICAgICAgICAoc2hvdWxkQmVHb29kID8gKCIpIHNob3VsZCB3b3JrIGJ1dCB0aHJvd3MgIiArIGV4KQorICAgICAgICAgICAgICAgICAgICAgICA6ICIpIHNob3VsZCBmYWlsIGJ1dCBkb2Vzbid0IikpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBleCA9IG51bGw7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIFNpbXBsZVRpbWVab25lIHRlbXAgPSBuZXcgU2ltcGxlVGltZVpvbmUoMCwgIloiLAorICAgICAgICAgICAgICAgICAgICAgICAgbW9udGgsIGRheSwgZGF5T2ZXZWVrLCB0aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgR09PRF9NT05USCwgR09PRF9EQVksIEdPT0RfREFZX09GX1dFRUssIEdPT0RfVElNRSk7CisgICAgICAgICAgICAgICAgdGVtcCA9IG51bGw7CisgICAgICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIGV4ID0gZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgoZXggPT0gbnVsbCkgIT0gc2hvdWxkQmVHb29kKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIlNpbXBsZVRpbWVab25lKG1vbnRoPSIgKyBtb250aCArICIsIGRheT0iICsgZGF5ICsKKyAgICAgICAgICAgICAgICAgICAgICAiLCBkYXlPZldlZWs9IiArIGRheU9mV2VlayArICIsIHRpbWU9IiArIHRpbWUgKworICAgICAgICAgICAgICAgICAgICAgIChzaG91bGRCZUdvb2QgPyAoIiwgPGVuZD4pIHNob3VsZCB3b3JrIGJ1dCB0aHJvd3MgIiArIGV4KQorICAgICAgICAgICAgICAgICAgICAgICA6ICIsIDxlbmQ+KSBzaG91bGQgZmFpbCBidXQgZG9lc24ndCIpKTsKKyAgICAgICAgICAgIH0gICAgICAgICAgICAKKworICAgICAgICAgICAgZXggPSBudWxsOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBTaW1wbGVUaW1lWm9uZSB0ZW1wID0gbmV3IFNpbXBsZVRpbWVab25lKDAsICJaIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdPT0RfTU9OVEgsIEdPT0RfREFZLCBHT09EX0RBWV9PRl9XRUVLLCBHT09EX1RJTUUsCisgICAgICAgICAgICAgICAgICAgICAgICBtb250aCwgZGF5LCBkYXlPZldlZWssIHRpbWUpOworICAgICAgICAgICAgICAgIHRlbXAgPSBudWxsOworICAgICAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBleCA9IGU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoKGV4ID09IG51bGwpICE9IHNob3VsZEJlR29vZCkgeworICAgICAgICAgICAgICAgIGVycmxuKCJTaW1wbGVUaW1lWm9uZSg8c3RhcnQ+LCBtb250aD0iICsgbW9udGggKyAiLCBkYXk9IiArIGRheSArCisgICAgICAgICAgICAgICAgICAgICAgIiwgZGF5T2ZXZWVrPSIgKyBkYXlPZldlZWsgKyAiLCB0aW1lPSIgKyB0aW1lICsKKyAgICAgICAgICAgICAgICAgICAgICAoc2hvdWxkQmVHb29kID8gKCIpIHNob3VsZCB3b3JrIGJ1dCB0aHJvd3MgIiArIGV4KQorICAgICAgICAgICAgICAgICAgICAgICA6ICIpIHNob3VsZCBmYWlsIGJ1dCBkb2Vzbid0IikpOworICAgICAgICAgICAgfSAgICAgICAgICAgIAorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogU2ltcGxlVGltZVpvbmUuZ2V0T2Zmc2V0IGFjY2VwdHMgaWxsZWdhbCBhcmd1bWVudHMuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQxNTQ2NTAoKSB7CisgICAgICAgIGZpbmFsIGludCBHT09EPTEsIEJBRD0wOworICAgICAgICBmaW5hbCBpbnQgR09PRF9FUkE9R3JlZ29yaWFuQ2FsZW5kYXIuQUQsIEdPT0RfWUVBUj0xOTk4LCBHT09EX01PTlRIPUNhbGVuZGFyLkFVR1VTVDsKKyAgICAgICAgZmluYWwgaW50IEdPT0RfREFZPTIsIEdPT0RfRE9XPUNhbGVuZGFyLlNVTkRBWSwgR09PRF9USU1FPTE2KjM2MDAwMDA7CisgICAgICAgIGludFtdIERBVEEgPSB7CisgICAgICAgICAgICBHT09ELCBHT09EX0VSQSwgR09PRF9ZRUFSLCBHT09EX01PTlRILCBHT09EX0RBWSwgR09PRF9ET1csIEdPT0RfVElNRSwKKworICAgICAgICAgICAgR09PRCwgR3JlZ29yaWFuQ2FsZW5kYXIuQkMsIEdPT0RfWUVBUiwgR09PRF9NT05USCwgR09PRF9EQVksIEdPT0RfRE9XLCBHT09EX1RJTUUsCisgICAgICAgICAgICBHT09ELCBHcmVnb3JpYW5DYWxlbmRhci5BRCwgR09PRF9ZRUFSLCBHT09EX01PTlRILCBHT09EX0RBWSwgR09PRF9ET1csIEdPT0RfVElNRSwKKyAgICAgICAgICAgIEJBRCwgIEdyZWdvcmlhbkNhbGVuZGFyLkJDLTEsIEdPT0RfWUVBUiwgR09PRF9NT05USCwgR09PRF9EQVksIEdPT0RfRE9XLCBHT09EX1RJTUUsCisgICAgICAgICAgICBCQUQsICBHcmVnb3JpYW5DYWxlbmRhci5BRCsxLCBHT09EX1lFQVIsIEdPT0RfTU9OVEgsIEdPT0RfREFZLCBHT09EX0RPVywgR09PRF9USU1FLAorCisgICAgICAgICAgICBHT09ELCBHT09EX0VSQSwgR09PRF9ZRUFSLCBDYWxlbmRhci5KQU5VQVJZLCBHT09EX0RBWSwgR09PRF9ET1csIEdPT0RfVElNRSwKKyAgICAgICAgICAgIEdPT0QsIEdPT0RfRVJBLCBHT09EX1lFQVIsIENhbGVuZGFyLkRFQ0VNQkVSLCBHT09EX0RBWSwgR09PRF9ET1csIEdPT0RfVElNRSwKKyAgICAgICAgICAgIEJBRCwgIEdPT0RfRVJBLCBHT09EX1lFQVIsIENhbGVuZGFyLkpBTlVBUlktMSwgR09PRF9EQVksIEdPT0RfRE9XLCBHT09EX1RJTUUsCisgICAgICAgICAgICBCQUQsICBHT09EX0VSQSwgR09PRF9ZRUFSLCBDYWxlbmRhci5ERUNFTUJFUisxLCBHT09EX0RBWSwgR09PRF9ET1csIEdPT0RfVElNRSwKKyAgICAgICAgICAgIAorICAgICAgICAgICAgR09PRCwgR09PRF9FUkEsIEdPT0RfWUVBUiwgQ2FsZW5kYXIuSkFOVUFSWSwgMSwgR09PRF9ET1csIEdPT0RfVElNRSwKKyAgICAgICAgICAgIEdPT0QsIEdPT0RfRVJBLCBHT09EX1lFQVIsIENhbGVuZGFyLkpBTlVBUlksIDMxLCBHT09EX0RPVywgR09PRF9USU1FLAorICAgICAgICAgICAgQkFELCAgR09PRF9FUkEsIEdPT0RfWUVBUiwgQ2FsZW5kYXIuSkFOVUFSWSwgMCwgR09PRF9ET1csIEdPT0RfVElNRSwKKyAgICAgICAgICAgIEJBRCwgIEdPT0RfRVJBLCBHT09EX1lFQVIsIENhbGVuZGFyLkpBTlVBUlksIDMyLCBHT09EX0RPVywgR09PRF9USU1FLAorCisgICAgICAgICAgICBHT09ELCBHT09EX0VSQSwgR09PRF9ZRUFSLCBHT09EX01PTlRILCBHT09EX0RBWSwgQ2FsZW5kYXIuU1VOREFZLCBHT09EX1RJTUUsCisgICAgICAgICAgICBHT09ELCBHT09EX0VSQSwgR09PRF9ZRUFSLCBHT09EX01PTlRILCBHT09EX0RBWSwgQ2FsZW5kYXIuU0FUVVJEQVksIEdPT0RfVElNRSwKKyAgICAgICAgICAgIEJBRCwgIEdPT0RfRVJBLCBHT09EX1lFQVIsIEdPT0RfTU9OVEgsIEdPT0RfREFZLCBDYWxlbmRhci5TVU5EQVktMSwgR09PRF9USU1FLAorICAgICAgICAgICAgQkFELCAgR09PRF9FUkEsIEdPT0RfWUVBUiwgR09PRF9NT05USCwgR09PRF9EQVksIENhbGVuZGFyLlNBVFVSREFZKzEsIEdPT0RfVElNRSwKKworICAgICAgICAgICAgR09PRCwgR09PRF9FUkEsIEdPT0RfWUVBUiwgR09PRF9NT05USCwgR09PRF9EQVksIEdPT0RfRE9XLCAwLAorICAgICAgICAgICAgR09PRCwgR09PRF9FUkEsIEdPT0RfWUVBUiwgR09PRF9NT05USCwgR09PRF9EQVksIEdPT0RfRE9XLCAyNCozNjAwMDAwLTEsCisgICAgICAgICAgICBCQUQsICBHT09EX0VSQSwgR09PRF9ZRUFSLCBHT09EX01PTlRILCBHT09EX0RBWSwgR09PRF9ET1csIC0xLAorICAgICAgICAgICAgQkFELCAgR09PRF9FUkEsIEdPT0RfWUVBUiwgR09PRF9NT05USCwgR09PRF9EQVksIEdPT0RfRE9XLCAyNCozNjAwMDAwLAorICAgICAgICB9OworCisgICAgICAgIFRpbWVab25lIHR6ID0gVGltZVpvbmUuZ2V0RGVmYXVsdCgpOworICAgICAgICBmb3IgKGludCBpPTA7IGk8REFUQS5sZW5ndGg7IGkrPTcpIHsKKyAgICAgICAgICAgIGJvb2xlYW4gZ29vZCA9IERBVEFbaV0gPT0gR09PRDsKKyAgICAgICAgICAgIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlID0gbnVsbDsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgaW50IG9mZnNldCA9IHR6LmdldE9mZnNldChEQVRBW2krMV0sIERBVEFbaSsyXSwgREFUQVtpKzNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFUQVtpKzRdLCBEQVRBW2krNV0sIERBVEFbaSs2XSk7IAorICAgICAgICAgICAgICAgIG9mZnNldCA9IDA7CisgICAgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgICAgIGUgPSBleDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChnb29kICE9IChlID09IG51bGwpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZhaWw6IGdldE9mZnNldCgiICsKKyAgICAgICAgICAgICAgICAgICAgICBEQVRBW2krMV0gKyAiLCAiICsgREFUQVtpKzJdICsgIiwgIiArIERBVEFbaSszXSArICIsICIgKworICAgICAgICAgICAgICAgICAgICAgIERBVEFbaSs0XSArICIsICIgKyBEQVRBW2krNV0gKyAiLCAiICsgREFUQVtpKzZdICsKKyAgICAgICAgICAgICAgICAgICAgICAoZ29vZCA/ICgiKSB0aHJldyAiICsgZSkgOiAiKSBhY2NlcHRzIGludmFsaWQgYXJncyIpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFRpbWVab25lIGNvbnN0cnVjdG9ycyBhbGxvdyBudWxsIElEcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDE1OTkyMigpIHsKKyAgICAgICAgVGltZVpvbmUgeiA9IG51bGw7CisKKyAgICAgICAgLy8gVGltZVpvbmUgQVBJLiAgT25seSBoYXNTYW1lUnVsZXMoKSBhbmQgc2V0RGVmYXVsdCgpIHNob3VsZAorICAgICAgICAvLyBhbGxvdyBudWxsLgorICAgICAgICB0cnkgeworICAgICAgICAgICAgeiA9IFRpbWVab25lLmdldFRpbWVab25lKG51bGwpOworICAgICAgICAgICAgZXJybG4oIkZBSUw6IE51bGwgYWxsb3dlZCBpbiBnZXRUaW1lWm9uZSIpOworICAgICAgICB9IGNhdGNoIChOdWxsUG9pbnRlckV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCIiKTsKKyAgICAgICAgfQorICAgICAgICB6ID0gVGltZVpvbmUuZ2V0VGltZVpvbmUoIkdNVCIpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgei5nZXREaXNwbGF5TmFtZShmYWxzZSwgVGltZVpvbmUuU0hPUlQsIG51bGwpOworICAgICAgICAgICAgZXJybG4oIkZBSUw6IE51bGwgYWxsb3dlZCBpbiBnZXREaXNwbGF5TmFtZSgzKSIpOworICAgICAgICB9IGNhdGNoIChOdWxsUG9pbnRlckV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCIiKTsKKyAgICAgICAgfQorICAgICAgICB0cnkgeworICAgICAgICAgICAgei5nZXREaXNwbGF5TmFtZShudWxsKTsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBOdWxsIGFsbG93ZWQgaW4gZ2V0RGlzcGxheU5hbWUoMSkiKTsKKyAgICAgICAgfSBjYXRjaCAoTnVsbFBvaW50ZXJFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludCgiIik7CisgICAgICAgIH0KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGlmICh6Lmhhc1NhbWVSdWxlcyhudWxsKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBoYXNTYW1lUnVsZXMgcmV0dXJuZWQgdHJ1ZSIpOworICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNoIChOdWxsUG9pbnRlckV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogTnVsbCBOT1QgYWxsb3dlZCBpbiBoYXNTYW1lUnVsZXMiKTsKKyAgICAgICAgfQorICAgICAgICB0cnkgeworICAgICAgICAgICAgei5pbkRheWxpZ2h0VGltZShudWxsKTsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBOdWxsIGFsbG93ZWQgaW4gaW5EYXlsaWdodFRpbWUiKTsKKyAgICAgICAgfSBjYXRjaCAoTnVsbFBvaW50ZXJFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludCgiIik7CisgICAgICAgIH0KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHouc2V0SUQobnVsbCk7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogTnVsbCBhbGxvd2VkIGluIHNldElEIik7CisgICAgICAgIH0gY2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIiIpOworICAgICAgICB9CisKKyAgICAgICAgVGltZVpvbmUgc2F2ZSA9IFRpbWVab25lLmdldERlZmF1bHQoKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFRpbWVab25lLnNldERlZmF1bHQobnVsbCk7CisgICAgICAgIH0gY2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBOdWxsIE5PVCBhbGxvd2VkIGluIHNldERlZmF1bHQiKTsKKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIFRpbWVab25lLnNldERlZmF1bHQoc2F2ZSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBTaW1wbGVUaW1lWm9uZSBBUEkKKyAgICAgICAgU2ltcGxlVGltZVpvbmUgcyA9IG51bGw7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBzID0gbmV3IFNpbXBsZVRpbWVab25lKDAsIG51bGwpOworICAgICAgICAgICAgZXJybG4oIkZBSUw6IE51bGwgYWxsb3dlZCBpbiBTaW1wbGVUaW1lWm9uZSgyKSIpOworICAgICAgICB9IGNhdGNoIChOdWxsUG9pbnRlckV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCIiKTsKKyAgICAgICAgfQorICAgICAgICB0cnkgeworICAgICAgICAgICAgcyA9IG5ldyBTaW1wbGVUaW1lWm9uZSgwLCBudWxsLCAwLCAxLCAwLCAwLCAwLCAxLCAwLCAwKTsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBOdWxsIGFsbG93ZWQgaW4gU2ltcGxlVGltZVpvbmUoMTApIik7CisgICAgICAgIH0gY2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIiIpOworICAgICAgICB9CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBzID0gbmV3IFNpbXBsZVRpbWVab25lKDAsIG51bGwsIDAsIDEsIDAsIDAsIDAsIDEsIDAsIDAsIDEwMDApOworICAgICAgICAgICAgZXJybG4oIkZBSUw6IE51bGwgYWxsb3dlZCBpbiBTaW1wbGVUaW1lWm9uZSgxMSkiKTsKKyAgICAgICAgfSBjYXRjaCAoTnVsbFBvaW50ZXJFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludCgiIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaW1lWm9uZSBicm9rZW4gYXQgbWlkbmlnaHQuICBUaGUgVGltZVpvbmUgY29kZSBmYWlscyB0byBoYW5kbGUKKyAgICAgKiB0cmFuc2l0aW9ucyBhdCBtaWRuaWdodCBjb3JyZWN0bHkuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQxNjI1OTMoKSB7CisgICAgICAgIFNpbXBsZURhdGVGb3JtYXQgZm10ID0gbmV3IFNpbXBsZURhdGVGb3JtYXQoInoiLCBMb2NhbGUuVVMpOworICAgICAgICBmaW5hbCBpbnQgT05FX0hPVVIgPSA2MCo2MCoxMDAwOworCVRpbWVab25lIGluaXRpYWxab25lID0gVGltZVpvbmUuZ2V0RGVmYXVsdCgpOworICAgICAgICBTaW1wbGVEYXRlRm9ybWF0IHNkZiA9IG5ldyBTaW1wbGVEYXRlRm9ybWF0KCJNTU0gZGQgeXl5eSBISDptbSB6Iik7IAorCisgICAgICAgIFNpbXBsZVRpbWVab25lIGFzdW5jaW9uID0gbmV3IFNpbXBsZVRpbWVab25lKC00Kk9ORV9IT1VSLCAiQW1lcmljYS9Bc3VuY2lvbiIgLypQWSVzVCovLAorICAgICAgICAgICAgQ2FsZW5kYXIuT0NUT0JFUiwgMSwgMCAvKkRPTSovLCAwKk9ORV9IT1VSLAorICAgICAgICAgICAgQ2FsZW5kYXIuTUFSQ0gsIDEsIDAgLypET00qLywgMCpPTkVfSE9VUiwgMSpPTkVfSE9VUik7CisKKyAgICAgICAgLyogWm9uZQorICAgICAgICAgKiBTdGFydGluZyB0aW1lCisgICAgICAgICAqIFRyYW5zaXRpb24gZXhwZWN0ZWQgYmV0d2VlbiBzdGFydCsxSCBhbmQgc3RhcnQrMkgKKyAgICAgICAgICovCisgICAgICAgIE9iamVjdFtdIERBVEEgPSB7CisgICAgICAgICAgICBuZXcgU2ltcGxlVGltZVpvbmUoMipPTkVfSE9VUiwgIkFzaWEvRGFtYXNjdXMiIC8qRUUlc1QqLywKKyAgICAgICAgICAgICAgICBDYWxlbmRhci5BUFJJTCwgMSwgMCAvKkRPTSovLCAwKk9ORV9IT1VSLAorICAgICAgICAgICAgICAgIENhbGVuZGFyLk9DVE9CRVIsIDEsIDAgLypET00qLywgMCpPTkVfSE9VUiwgMSpPTkVfSE9VUiksCisgICAgICAgICAgICBuZXcgaW50W10gezk4LCBDYWxlbmRhci5TRVBURU1CRVIsIDMwLCAyMiwgMH0sCisgICAgICAgICAgICBCb29sZWFuLlRSVUUsCisKKyAgICAgICAgICAgIGFzdW5jaW9uLAorICAgICAgICAgICAgbmV3IGludFtdIHsxMDAsIENhbGVuZGFyLkZFQlJVQVJZLCAyOCwgMjIsIDB9LAorICAgICAgICAgICAgQm9vbGVhbi5GQUxTRSwKKworICAgICAgICAgICAgYXN1bmNpb24sCisgICAgICAgICAgICBuZXcgaW50W10gezEwMCwgQ2FsZW5kYXIuRkVCUlVBUlksIDI5LCAyMiwgMH0sCisgICAgICAgICAgICBCb29sZWFuLlRSVUUsCisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICBTdHJpbmdbXSB6b25lID0gbmV3IFN0cmluZ1s0XTsKKyAgICAgICAgCisgICAgICAgIGZvciAoaW50IGo9MDsgajxEQVRBLmxlbmd0aDsgais9MykgeworICAgICAgICAgICAgVGltZVpvbmUgdHogPSAoVGltZVpvbmUpREFUQVtqXTsKKyAgICAgICAgICAgIFRpbWVab25lLnNldERlZmF1bHQodHopOworICAgICAgICAgICAgZm10LnNldFRpbWVab25lKHR6KTsKKyAgICAgICAgICAgIHNkZi5zZXRUaW1lWm9uZSh0eik7CisKKyAgICAgICAgICAgIC8vIE11c3QgY29uc3RydWN0IHRoZSBEYXRlIG9iamVjdCBBRlRFUiBzZXR0aW5nIHRoZSBkZWZhdWx0IHpvbmUKKyAgICAgICAgICAgIGludFtdIHAgPSAoaW50W10pREFUQVtqKzFdOworICAgICAgICAgICAgamF2YS51dGlsLkNhbGVuZGFyIHRlbXBjYWwgPSBqYXZhLnV0aWwuQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTsKKyAgICAgICAgICAgIHRlbXBjYWwuY2xlYXIoKTsKKyAgICAgICAgICAgIHRlbXBjYWwuc2V0KHBbMF0gKyAxOTAwLCBwWzFdLCBwWzJdLCBwWzNdLCBwWzRdKTsKKyAgICAgICAgICAgIERhdGUgZCA9IHRlbXBjYWwuZ2V0VGltZSgpOworICAgICAgICAgICAgYm9vbGVhbiB0cmFuc2l0aW9uRXhwZWN0ZWQgPSAoKEJvb2xlYW4pREFUQVtqKzJdKS5ib29sZWFuVmFsdWUoKTsKKworICAgICAgICAgICAgbG9nbG4odHouZ2V0SUQoKSArICI6Iik7CisgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8NDsgKytpKSB7CisgICAgICAgICAgICAgICAgem9uZVtpXSA9IGZtdC5mb3JtYXQoZCk7CisgICAgICAgICAgICAgICAgbG9nbG4oIiIgKyBpICsgIjogIiArIHNkZi5mb3JtYXQoZCkgKyAiID0+ICIgKyB6b25lW2ldKTsKKyAgICAgICAgICAgICAgICBkID0gbmV3IERhdGUoZC5nZXRUaW1lKCkgKyBPTkVfSE9VUik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoem9uZVswXS5lcXVhbHMoem9uZVsxXSkgJiYKKyAgICAgICAgICAgICAgICAoem9uZVsxXS5lcXVhbHMoem9uZVsyXSkgIT0gdHJhbnNpdGlvbkV4cGVjdGVkKSAmJgorICAgICAgICAgICAgICAgIHpvbmVbMl0uZXF1YWxzKHpvbmVbM10pKSB7CisgICAgICAgICAgICAgICAgbG9nbG4oIk9rOiB0cmFuc2l0aW9uICIgKyB0cmFuc2l0aW9uRXhwZWN0ZWQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRmFpbDogYm91bmRhcnkgdHJhbnNpdGlvbiBpbmNvcnJlY3QiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisJLy8gcmVzdG9yZSB0aGUgaW5pdGlhbCB0aW1lIHpvbmUgc28gdGhhdCB0aGlzIHRlc3QgY2FzZQorCS8vIGRvZXNuJ3QgYWZmZWN0IHRoZSBvdGhlcnMuCisJVGltZVpvbmUuc2V0RGVmYXVsdChpbml0aWFsWm9uZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGltZVpvbmUgYnJva2VuIGluIGxhc3QgaG91ciBvZiB5ZWFyCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQxNzM2MDQoKSB7CisgICAgICAgIFNpbXBsZVRpbWVab25lIHBzdCA9IChTaW1wbGVUaW1lWm9uZSlUaW1lWm9uZS5nZXRUaW1lWm9uZSgiUFNUIik7CisgICAgICAgIGludCBvMjIgPSBwc3QuZ2V0T2Zmc2V0KDEsIDE5OTgsIDExLCAzMSwgQ2FsZW5kYXIuVEhVUlNEQVksIDIyKjYwKjYwKjEwMDApOworICAgICAgICBpbnQgbzIzID0gcHN0LmdldE9mZnNldCgxLCAxOTk4LCAxMSwgMzEsIENhbGVuZGFyLlRIVVJTREFZLCAyMyo2MCo2MCoxMDAwKTsKKyAgICAgICAgaW50IG8wMCA9IHBzdC5nZXRPZmZzZXQoMSwgMTk5OSwgMCwgMSwgQ2FsZW5kYXIuRlJJREFZLCAwKTsKKyAgICAgICAgaWYgKG8yMiAhPSBvMjMgfHwgbzIyICE9IG8wMCkgeworICAgICAgICAgICAgZXJybG4oIk9mZnNldHMgc2hvdWxkIGJlIHRoZSBzYW1lIChmb3IgUFNUKSwgYnV0IGdvdDogIiArCisgICAgICAgICAgICAgICAgICAiMTIvMzEgMjI6MDAgIiArIG8yMiArCisgICAgICAgICAgICAgICAgICAiLCAxMi8zMSAyMzowMCAiICsgbzIzICsKKyAgICAgICAgICAgICAgICAgICIsIDAxLzAxIDAwOjAwICIgKyBvMDApOworICAgICAgICB9CisKKyAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIgY2FsID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKCk7CisgICAgICAgIGNhbC5zZXRUaW1lWm9uZShwc3QpOworICAgICAgICBjYWwuY2xlYXIoKTsKKyAgICAgICAgY2FsLnNldCgxOTk4LCBDYWxlbmRhci5KQU5VQVJZLCAxKTsKKyAgICAgICAgaW50IGxhc3REU1QgPSBjYWwuZ2V0KENhbGVuZGFyLkRTVF9PRkZTRVQpOworICAgICAgICBpbnQgdHJhbnNpdGlvbnMgPSAwOworICAgICAgICBpbnQgZGVsdGEgPSA1OworICAgICAgICB3aGlsZSAoY2FsLmdldChDYWxlbmRhci5ZRUFSKSA8IDIwMDApIHsKKyAgICAgICAgICAgIGNhbC5hZGQoQ2FsZW5kYXIuTUlOVVRFLCBkZWx0YSk7CisgICAgICAgICAgICBpZiAoY2FsLmdldChDYWxlbmRhci5EU1RfT0ZGU0VUKSAhPSBsYXN0RFNUKSB7CisgICAgICAgICAgICAgICAgKyt0cmFuc2l0aW9uczsKKyAgICAgICAgICAgICAgICBDYWxlbmRhciB0ID0gKENhbGVuZGFyKWNhbC5jbG9uZSgpOworICAgICAgICAgICAgICAgIHQuYWRkKENhbGVuZGFyLk1JTlVURSwgLWRlbHRhKTsKKyAgICAgICAgICAgICAgICBsb2dsbih0LmdldFRpbWUoKSArICIgICIgKyB0LmdldChDYWxlbmRhci5EU1RfT0ZGU0VUKSk7CisgICAgICAgICAgICAgICAgbG9nbG4oY2FsLmdldFRpbWUoKSArICIgICIgKyAobGFzdERTVD1jYWwuZ2V0KENhbGVuZGFyLkRTVF9PRkZTRVQpKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRyYW5zaXRpb25zICE9IDQpIHsKKyAgICAgICAgICAgIGVycmxuKCJTYXcgIiArIHRyYW5zaXRpb25zICsgIiB0cmFuc2l0aW9uczsgc2hvdWxkIGhhdmUgc2VlbiA0Iik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBnZXREaXNwbGF5TmFtZSBkb2Vzbid0IHdvcmsgd2l0aCB1bnVzdWFsIHNhdmluZ3Mvb2Zmc2V0cy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDE3NjY4NigpIHsKKyAgICAgICAgLy8gQ29uc3RydWN0IGEgem9uZSB0aGF0IGRvZXMgbm90IG9ic2VydmUgRFNUIGJ1dAorICAgICAgICAvLyB0aGF0IGRvZXMgaGF2ZSBhIERTVCBzYXZpbmdzICh3aGljaCBzaG91bGQgYmUgaWdub3JlZCkuCisgICAgICAgIGludCBvZmZzZXQgPSA5MCAqIDYwMDAwOyAvLyAxOjMwCisgICAgICAgIFNpbXBsZVRpbWVab25lIHoxID0gbmV3IFNpbXBsZVRpbWVab25lKG9mZnNldCwgIl9zdGRfem9uZV8iKTsKKyAgICAgICAgejEuc2V0RFNUU2F2aW5ncyg0NSAqIDYwMDAwKTsgLy8gMDo0NQorCisgICAgICAgIC8vIENvbnN0cnVjdCBhIHpvbmUgdGhhdCBvYnNlcnZlcyBEU1QgZm9yIHRoZSBmaXJzdCA2IG1vbnRocy4KKyAgICAgICAgU2ltcGxlVGltZVpvbmUgejIgPSBuZXcgU2ltcGxlVGltZVpvbmUob2Zmc2V0LCAiX2RzdF96b25lXyIpOworICAgICAgICB6Mi5zZXREU1RTYXZpbmdzKDQ1ICogNjAwMDApOyAvLyAwOjQ1CisgICAgICAgIHoyLnNldFN0YXJ0UnVsZShDYWxlbmRhci5KQU5VQVJZLCAxLCAwKTsKKyAgICAgICAgejIuc2V0RW5kUnVsZShDYWxlbmRhci5KVUxZLCAxLCAwKTsKKworICAgICAgICAvLyBBbHNvIGNoZWNrIERhdGVGb3JtYXQKKyAgICAgICAgRGF0ZUZvcm1hdCBmbXQxID0gbmV3IFNpbXBsZURhdGVGb3JtYXQoInoiKTsKKyAgICAgICAgZm10MS5zZXRUaW1lWm9uZSh6MSk7IC8vIEZvcm1hdCB1c2VzIHN0YW5kYXJkIHpvbmUKKyAgICAgICAgRGF0ZUZvcm1hdCBmbXQyID0gbmV3IFNpbXBsZURhdGVGb3JtYXQoInoiKTsKKyAgICAgICAgZm10Mi5zZXRUaW1lWm9uZSh6Mik7IC8vIEZvcm1hdCB1c2VzIERTVCB6b25lCisgICAgICAgIGphdmEudXRpbC5DYWxlbmRhciB0ZW1wY2FsID0gamF2YS51dGlsLkNhbGVuZGFyLmdldEluc3RhbmNlKCk7CisgICAgICAgIHRlbXBjYWwuY2xlYXIoKTsKKyAgICAgICAgdGVtcGNhbC5zZXQoMTk3MCwgQ2FsZW5kYXIuRkVCUlVBUlksIDEpOworICAgICAgICBEYXRlIGRzdCA9IHRlbXBjYWwuZ2V0VGltZSgpOyAvLyBUaW1lIGluIERTVAorICAgICAgICB0ZW1wY2FsLnNldCgxOTcwLCBDYWxlbmRhci5BVUdVU1QsIDEpOworICAgICAgICBEYXRlIHN0ZCA9IHRlbXBjYWwuZ2V0VGltZSgpOyAvLyBUaW1lIGluIHN0YW5kYXJkCisKKyAgICAgICAgLy8gRGVzY3JpcHRpb24sIFJlc3VsdCwgRXhwZWN0ZWQgUmVzdWx0CisgICAgICAgIFN0cmluZ1tdIERBVEEgPSB7CisgICAgICAgICAgICAiZ2V0RGlzcGxheU5hbWUoZmFsc2UsIFNIT1JUKS9zdGQgem9uZSIsCisgICAgICAgICAgICB6MS5nZXREaXNwbGF5TmFtZShmYWxzZSwgVGltZVpvbmUuU0hPUlQpLCAiR01UKzAxOjMwIiwKKyAgICAgICAgICAgICJnZXREaXNwbGF5TmFtZShmYWxzZSwgTE9ORykvc3RkIHpvbmUiLAorICAgICAgICAgICAgejEuZ2V0RGlzcGxheU5hbWUoZmFsc2UsIFRpbWVab25lLkxPTkcgKSwgIkdNVCswMTozMCIsCisgICAgICAgICAgICAiZ2V0RGlzcGxheU5hbWUodHJ1ZSwgU0hPUlQpL3N0ZCB6b25lIiwKKyAgICAgICAgICAgIHoxLmdldERpc3BsYXlOYW1lKHRydWUsIFRpbWVab25lLlNIT1JUKSwgIkdNVCswMTozMCIsCisgICAgICAgICAgICAiZ2V0RGlzcGxheU5hbWUodHJ1ZSwgTE9ORykvc3RkIHpvbmUiLAorICAgICAgICAgICAgejEuZ2V0RGlzcGxheU5hbWUodHJ1ZSwgVGltZVpvbmUuTE9ORyApLCAiR01UKzAxOjMwIiwKKyAgICAgICAgICAgICJnZXREaXNwbGF5TmFtZShmYWxzZSwgU0hPUlQpL2RzdCB6b25lIiwKKyAgICAgICAgICAgIHoyLmdldERpc3BsYXlOYW1lKGZhbHNlLCBUaW1lWm9uZS5TSE9SVCksICJHTVQrMDE6MzAiLAorICAgICAgICAgICAgImdldERpc3BsYXlOYW1lKGZhbHNlLCBMT05HKS9kc3Qgem9uZSIsCisgICAgICAgICAgICB6Mi5nZXREaXNwbGF5TmFtZShmYWxzZSwgVGltZVpvbmUuTE9ORyApLCAiR01UKzAxOjMwIiwKKyAgICAgICAgICAgICJnZXREaXNwbGF5TmFtZSh0cnVlLCBTSE9SVCkvZHN0IHpvbmUiLAorICAgICAgICAgICAgejIuZ2V0RGlzcGxheU5hbWUodHJ1ZSwgVGltZVpvbmUuU0hPUlQpLCAiR01UKzAyOjE1IiwKKyAgICAgICAgICAgICJnZXREaXNwbGF5TmFtZSh0cnVlLCBMT05HKS9kc3Qgem9uZSIsCisgICAgICAgICAgICB6Mi5nZXREaXNwbGF5TmFtZSh0cnVlLCBUaW1lWm9uZS5MT05HICksICJHTVQrMDI6MTUiLAorICAgICAgICAgICAgIkRhdGVGb3JtYXQuZm9ybWF0KHN0ZCkvc3RkIHpvbmUiLCBmbXQxLmZvcm1hdChzdGQpLCAiR01UKzAxOjMwIiwKKyAgICAgICAgICAgICJEYXRlRm9ybWF0LmZvcm1hdChkc3QpL3N0ZCB6b25lIiwgZm10MS5mb3JtYXQoZHN0KSwgIkdNVCswMTozMCIsCisgICAgICAgICAgICAiRGF0ZUZvcm1hdC5mb3JtYXQoc3RkKS9kc3Qgem9uZSIsIGZtdDIuZm9ybWF0KHN0ZCksICJHTVQrMDE6MzAiLAorICAgICAgICAgICAgIkRhdGVGb3JtYXQuZm9ybWF0KGRzdCkvZHN0IHpvbmUiLCBmbXQyLmZvcm1hdChkc3QpLCAiR01UKzAyOjE1IiwKKyAgICAgICAgfTsKKworICAgICAgICBmb3IgKGludCBpPTA7IGk8REFUQS5sZW5ndGg7IGkrPTMpIHsKKyAgICAgICAgICAgIGlmICghREFUQVtpKzFdLmVxdWFscyhEQVRBW2krMl0pKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6ICIgKyBEQVRBW2ldICsgIiAtPiAiICsgREFUQVtpKzFdICsgIiwgZXhwICIgKyBEQVRBW2krMl0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogU2ltcGxlVGltZVpvbmUgYWxsb3dzIGludmFsaWQgRE9NIHZhbHVlcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDE4NDIyOSgpIHsKKyAgICAgICAgU2ltcGxlVGltZVpvbmUgem9uZSA9IG51bGw7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB6b25lID0gbmV3IFNpbXBsZVRpbWVab25lKDAsICJBIiwgMCwgLTEsIDAsIDAsIDAsIDAsIDAsIDApOworICAgICAgICAgICAgZXJybG4oIkZhaWxlZC4gTm8gZXhjZXB0aW9uIGhhcyBiZWVuIHRocm93biBmb3IgRE9NIC0xIHN0YXJ0RGF5Iik7CisgICAgICAgIH0gY2F0Y2goSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGxvZ2xuKCIoYSkgIiArIGUuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgfQorICAgICAgICB0cnkgeworICAgICAgICAgICAgem9uZSA9IG5ldyBTaW1wbGVUaW1lWm9uZSgwLCAiQSIsIDAsIDAsIDAsIDAsIDAsIC0xLCAwLCAwKTsKKyAgICAgICAgICAgIGVycmxuKCJGYWlsZWQuIE5vIGV4Y2VwdGlvbiBoYXMgYmVlbiB0aHJvd24gZm9yIERPTSAtMSBlbmREYXkiKTsKKyAgICAgICAgfSBjYXRjaChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgbG9nbG4oIihiKSAiICsgZS5nZXRNZXNzYWdlKCkpOworICAgICAgICB9CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB6b25lID0gbmV3IFNpbXBsZVRpbWVab25lKDAsICJBIiwgMCwgLTEsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMDApOworICAgICAgICAgICAgZXJybG4oIkZhaWxlZC4gTm8gZXhjZXB0aW9uIGhhcyBiZWVuIHRocm93biBmb3IgRE9NIC0xIHN0YXJ0RGF5ICtzYXZpbmdzIik7CisgICAgICAgIH0gY2F0Y2goSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGxvZ2xuKCIoYykgIiArIGUuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgfQorICAgICAgICB0cnkgeworICAgICAgICAgICAgem9uZSA9IG5ldyBTaW1wbGVUaW1lWm9uZSgwLCAiQSIsIDAsIDAsIDAsIDAsIDAsIC0xLCAwLCAwLCAxMDAwKTsKKyAgICAgICAgICAgIGVycmxuKCJGYWlsZWQuIE5vIGV4Y2VwdGlvbiBoYXMgYmVlbiB0aHJvd24gZm9yIERPTSAtMSBlbmREYXkgK3NhdmluZ3MiKTsKKyAgICAgICAgfSBjYXRjaChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgbG9nbG4oIihkKSAiICsgZS5nZXRNZXNzYWdlKCkpOworICAgICAgICB9CisgICAgICAgIC8vIE1ha2UgYSB2YWxpZCBjb25zdHJ1Y3RvciBjYWxsIGZvciBzdWJzZXF1ZW50IHRlc3RzLgorICAgICAgICB6b25lID0gbmV3IFNpbXBsZVRpbWVab25lKDAsICJBIiwgMCwgMSwgMCwgMCwgMCwgMSwgMCwgMCk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB6b25lLnNldFN0YXJ0UnVsZSgwLCAtMSwgMCwgMCk7CisgICAgICAgICAgICBlcnJsbigiRmFpbGVkLiBObyBleGNlcHRpb24gaGFzIGJlZW4gdGhyb3duIGZvciBET00gLTEgc2V0U3RhcnRSdWxlICtzYXZpbmdzIik7CisgICAgICAgIH0gY2F0Y2goSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGxvZ2xuKCIoZSkgIiArIGUuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgfQorICAgICAgICB0cnkgeworICAgICAgICAgICAgem9uZS5zZXRTdGFydFJ1bGUoMCwgLTEsIDApOworICAgICAgICAgICAgZXJybG4oIkZhaWxlZC4gTm8gZXhjZXB0aW9uIGhhcyBiZWVuIHRocm93biBmb3IgRE9NIC0xIHNldFN0YXJ0UnVsZSIpOworICAgICAgICB9IGNhdGNoKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBsb2dsbigiKGYpICIgKyBlLmdldE1lc3NhZ2UoKSk7CisgICAgICAgIH0KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHpvbmUuc2V0RW5kUnVsZSgwLCAtMSwgMCwgMCk7CisgICAgICAgICAgICBlcnJsbigiRmFpbGVkLiBObyBleGNlcHRpb24gaGFzIGJlZW4gdGhyb3duIGZvciBET00gLTEgc2V0RW5kUnVsZSArc2F2aW5ncyIpOworICAgICAgICB9IGNhdGNoKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBsb2dsbigiKGcpICIgKyBlLmdldE1lc3NhZ2UoKSk7CisgICAgICAgIH0KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHpvbmUuc2V0RW5kUnVsZSgwLCAtMSwgMCk7CisgICAgICAgICAgICBlcnJsbigiRmFpbGVkLiBObyBleGNlcHRpb24gaGFzIGJlZW4gdGhyb3duIGZvciBET00gLTEgc2V0RW5kUnVsZSIpOworICAgICAgICB9IGNhdGNoKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBsb2dsbigiKGgpICIgKyBlLmdldE1lc3NhZ2UoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTaW1wbGVUaW1lWm9uZS5nZXRPZmZzZXQoKSB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHdoZW4gdG8gZ2V0CisgICAgICogb2YgMi8yOS8xOTk2IChsZWFwIGRheSkuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQyMDg5NjAgKCkgeworCVNpbXBsZVRpbWVab25lIHR6ID0gKFNpbXBsZVRpbWVab25lKVRpbWVab25lLmdldFRpbWVab25lKCJQU1QiKTsKKwl0cnkgeworCSAgICBpbnQgb2Zmc2V0ID0gdHouZ2V0T2Zmc2V0KEdyZWdvcmlhbkNhbGVuZGFyLkFELCAxOTk2LCBDYWxlbmRhci5GRUJSVUFSWSwgMjksIAorCQkJCSAgICAgIENhbGVuZGFyLlRIVVJTREFZLCAwKTsKKyAgICAgICAgb2Zmc2V0ID0gMDsKKwl9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworCSAgICBlcnJsbigiRkFJTEVEOiB0byBnZXQgVGltZVpvbmUuZ2V0T2Zmc2V0KDIvMjkvOTYpIik7CisJfQorCXRyeSB7CisJICAgIGludCBvZmZzZXQgPSB0ei5nZXRPZmZzZXQoR3JlZ29yaWFuQ2FsZW5kYXIuQUQsIDE5OTcsIENhbGVuZGFyLkZFQlJVQVJZLCAyOSwgCisJCQkJICAgICAgQ2FsZW5kYXIuVEhVUlNEQVksIDApOworCSAgICBvZmZzZXQgPSAwOworCSAgICBlcnJsbigiRkFJTEVEOiBUaW1lWm9uZS5nZXRPZmZzZXQoMi8yOS85NykgZXhwZWN0ZWQgdG8gdGhyb3cgRXhjZXB0aW9uLiIpOworCX0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7CisJICAgIGxvZ2xuKCJnb3QgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIik7CisJfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3QgdG8gc2VlIGlmIERhdGVGb3JtYXQgdW5kZXJzdGFuZHMgem9uZSBlcXVpdmFsZW5jeSBncm91cHMuICBJdAorICAgICAqIG1pZ2h0IHNlZW0gdGhhdCB0aGlzIHNob3VsZCBiZSBhIERhdGVGb3JtYXQgdGVzdCwgYnV0IGl0J3MgcmVhbGx5IGEKKyAgICAgKiBUaW1lWm9uZSB0ZXN0IC0tIHRoZSBjaGFuZ2VzIHRvIERhdGVGb3JtYXQgYXJlIG1pbm9yLgorICAgICAqCisgICAgICogV2UgdXNlIHR3byBrbm93biwgc3RhYmxlIHpvbmVzIHRoYXQgc2hvdWxkbid0IGNoYW5nZSBtdWNoIG92ZXIgdGltZQorICAgICAqIC0tIEFtZXJpY2EvVmFuY291dmVyIGFuZCBBbWVyaWNhL0xvc19BbmdlbGVzLiAgSG93ZXZlciwgdGhleSBNQVkKKyAgICAgKiBjaGFuZ2UgYXQgc29tZSBwb2ludCAtLSBpZiB0aGF0IGhhcHBlbnMsIHJlcGxhY2UgdGhlbSB3aXRoIGFueSB0d28KKyAgICAgKiB6b25lcyBpbiBhbiBlcXVpdmFsZW5jeSBncm91cCB3aGVyZSBvbmUgem9uZSBoYXMgbG9jYWxpemVkIG5hbWUKKyAgICAgKiBkYXRhLCBhbmQgdGhlIG90aGVyIGRvZXNuJ3QsIGluIHNvbWUgbG9jYWxlLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RKNDQ5KCkgeworICAgICAgICAvLyBub3QgdXNlZCBTdHJpbmcgc3RyOworCisgICAgICAgIC8vIE1vZGlmeSB0aGUgZm9sbG93aW5nIHRocmVlIGFzIG5lY2Vzc2FyeS4gIFRoZSB0d28gSURzIG11c3QKKyAgICAgICAgLy8gc3BlY2lmeSB0d28gem9uZXMgaW4gdGhlIHNhbWUgZXF1aXZhbGVuY3kgZ3JvdXAuICBPbmUgbXVzdCBoYXZlCisgICAgICAgIC8vIGxvY2FsZSBkYXRhIGluICdsb2MnOyB0aGUgb3RoZXIgbXVzdCBub3QuCisgICAgICAgIFN0cmluZyBpZFdpdGhMb2NhbGVEYXRhID0gIkFtZXJpY2EvTG9zX0FuZ2VsZXMiOworICAgICAgICBTdHJpbmcgaWRXaXRob3V0TG9jYWxlRGF0YSA9ICJBbWVyaWNhL1ZhbmNvdXZlciI7CisgICAgICAgIExvY2FsZSBsb2MgPSBuZXcgTG9jYWxlKCJlbiIsICIiLCAiIik7CisKKyAgICAgICAgVGltZVpvbmUgem9uZVdpdGggPSBUaW1lWm9uZS5nZXRUaW1lWm9uZShpZFdpdGhMb2NhbGVEYXRhKTsKKyAgICAgICAgVGltZVpvbmUgem9uZVdpdGhvdXQgPSBUaW1lWm9uZS5nZXRUaW1lWm9uZShpZFdpdGhvdXRMb2NhbGVEYXRhKTsKKyAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGdvdCB2YWxpZCB6b25lcworICAgICAgICBpZiAoISh6b25lV2l0aC5nZXRJRCgpLmVxdWFscyhpZFdpdGhMb2NhbGVEYXRhKSAmJgorICAgICAgICAgICAgICB6b25lV2l0aG91dC5nZXRJRCgpLmVxdWFscyhpZFdpdGhvdXRMb2NhbGVEYXRhKSkpIHsKKyAgICAgICAgICAgIGVycmxuKCJGYWlsOiBVbmFibGUgdG8gY3JlYXRlIHpvbmVzIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBHcmVnb3JpYW5DYWxlbmRhciBjYWxXaXRoID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKHpvbmVXaXRoKTsKKyAgICAgICAgICAgIEdyZWdvcmlhbkNhbGVuZGFyIGNhbFdpdGhvdXQgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoem9uZVdpdGhvdXQpOworICAgICAgICAgICAgU2ltcGxlRGF0ZUZvcm1hdCBmbXQgPQorICAgICAgICAgICAgICAgIG5ldyBTaW1wbGVEYXRlRm9ybWF0KCJNTU0gZCB5eXl5IGhoOm1tIGEgenp6IiwgbG9jKTsKKyAgICAgICAgICAgIERhdGUgZGF0ZSA9IG5ldyBEYXRlKDBMKTsKKyAgICAgICAgICAgIGZtdC5zZXRDYWxlbmRhcihjYWxXaXRoKTsKKyAgICAgICAgICAgIFN0cmluZyBzdHJXaXRoID0gZm10LmZvcm1hdChkYXRlKTsKKyAgICAgICAgICAgIGZtdC5zZXRDYWxlbmRhcihjYWxXaXRob3V0KTsKKyAgICAgICAgICAgIFN0cmluZyBzdHJXaXRob3V0ID0gZm10LmZvcm1hdChkYXRlKTsKKyAgICAgICAgICAgIGlmIChzdHJXaXRoLmVxdWFscyhzdHJXaXRob3V0KSkgeworICAgICAgICAgICAgICAgIGxvZ2xuKCJPazogIiArIGlkV2l0aExvY2FsZURhdGEgKyAiIC0+ICIgKworICAgICAgICAgICAgICAgICAgICAgIHN0cldpdGggKyAiOyAiICsgaWRXaXRob3V0TG9jYWxlRGF0YSArICIgLT4gIiArCisgICAgICAgICAgICAgICAgICAgICAgc3RyV2l0aG91dCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiAiICsgaWRXaXRoTG9jYWxlRGF0YSArICIgLT4gIiArCisgICAgICAgICAgICAgICAgICAgICAgc3RyV2l0aCArICI7ICIgKyBpZFdpdGhvdXRMb2NhbGVEYXRhICsgIiAtPiAiICsKKyAgICAgICAgICAgICAgICAgICAgICBzdHJXaXRob3V0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworLy9lb2YKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC90aW1lem9uZS9UaW1lWm9uZVRlc3QuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC90aW1lem9uZS9UaW1lWm9uZVRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41OWFhMDVlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3RpbWV6b25lL1RpbWVab25lVGVzdC5qYXZhCkBAIC0wLDAgKzEsNzk2IEBACisvKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3RpbWV6b25lL1RpbWVab25lVGVzdC5qYXZhLHYgJAorICogJERhdGU6IDIwMDIvMTIvMDMgMjM6MTU6MDUgJAorICogJFJldmlzaW9uOiAxLjExICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKKy8qKgorICogQHRlc3QgMS4yMiA5OS8wOS8yMQorICogQGJ1ZyA0MDI4MDA2IDQwNDQwMTMgNDA5NjY5NCA0MTA3Mjc2IDQxMDc1NzAgNDExMjg2OSA0MTMwODg1CisgKiBAc3VtbWFyeSB0ZXN0IFRpbWVab25lCisgKiBAYnVpbGQgVGltZVpvbmVUZXN0CisgKi8KKworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudGVzdC50aW1lem9uZTsKKworaW1wb3J0IGNvbS5pYm0uaWN1LmRldi50ZXN0Lio7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5JQ1VMb2NhbGVEYXRhOworaW1wb3J0IGNvbS5pYm0uaWN1LmxhbmcuKjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0Lio7CitpbXBvcnQgY29tLmlibS5pY3UudXRpbC4qOworCitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworaW1wb3J0IGphdmEudXRpbC5SZXNvdXJjZUJ1bmRsZTsKKworcHVibGljIGNsYXNzIFRpbWVab25lVGVzdCBleHRlbmRzIFRlc3RGbXdrCit7CisgICAgc3RhdGljIGZpbmFsIGludCBtaWxsaXNQZXJIb3VyID0gMzYwMDAwMDsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBuZXcgVGltZVpvbmVUZXN0KCkucnVuKGFyZ3MpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEJ1ZyA0MTMwODg1CisgICAgICogQ2VydGFpbiBzaG9ydCB6b25lIElEcywgdXNlZCBzaW5jZSAxLjEueCwgYXJlIGluY29ycmVjdC4KKyAgICAgKiAgCisgICAgICogVGhlIHdvcnN0IG9mIHRoZXNlIGlzOgorICAgICAqCisgICAgICogIkNBVCIgKENlbnRyYWwgQWZyaWNhbiBUaW1lKSBzaG91bGQgYmUgR01UKzI6MDAsIGJ1dCBpbnN0ZWFkIHJldHVybnMgYQorICAgICAqIHpvbmUgYXQgR01ULTE6MDAuIFRoZSB6b25lIGF0IEdNVC0xOjAwIHNob3VsZCBiZSBjYWxsZWQgRUdULCBDVlQsIEVHU1QsCisgICAgICogb3IgQVpPU1QsIGRlcGVuZGluZyBvbiB3aGljaCB6b25lIGlzIG1lYW50LCBidXQgaW4gbm8gY2FzZSBpcyBpdCBDQVQuCisgICAgICoKKyAgICAgKiBPdGhlciB3cm9uZyB6b25lIElEczoKKyAgICAgKgorICAgICAqIEVDVCAoRXVyb3BlYW4gQ2VudHJhbCBUaW1lKSBHTVQrMTowMDogRUNUIGlzIEVjdWFkb3IgVGltZSwKKyAgICAgKiBHTVQtNTowMC4gRXVyb3BlYW4gQ2VudHJhbCB0aW1lIGlzIGFiYnJldmlhdGVkIENFU1QuCisgICAgICoKKyAgICAgKiBTU1QgKFNvbG9tb24gSXNsYW5kIFRpbWUpIEdNVCsxMTowMC4gU1NUIGlzIGFjdHVhbGx5IFNhbW9hIFN0YW5kYXJkIFRpbWUsCisgICAgICogR01ULTExOjAwLiBTb2xvbW9uIElzbGFuZCB0aW1lIGlzIFNCVC4KKyAgICAgKgorICAgICAqIE5TVCAoTmV3IFplYWxhbmQgVGltZSkgR01UKzEyOjAwLiBOU1QgaXMgdGhlIGFiYnJldmlhdGlvbiBmb3IKKyAgICAgKiBOZXdmb3VuZGxhbmQgU3RhbmRhcmQgVGltZSwgR01ULTM6MzAuIE5ldyBaZWFsYW5kZXJzIHVzZSBOWlNULgorICAgICAqCisgICAgICogQVNUIChBbGFza2EgU3RhbmRhcmQgVGltZSkgR01ULTk6MDAuIFtUaGlzIGhhcyBhbHJlYWR5IGJlZW4gbm90ZWQgaW4KKyAgICAgKiBhbm90aGVyIGJ1Zy5dIEl0IHNob3VsZCBiZSAiQUtTVCIuIEFTVCBpcyBBdGxhbnRpYyBTdGFuZGFyZCBUaW1lLAorICAgICAqIEdNVC00OjAwLgorICAgICAqCisgICAgICogUE5UIChQaG9lbml4IFRpbWUpIEdNVC03OjAwLiBQTlQgdXN1YWxseSBtZWFucyBQaXRjYWlybiBUaW1lLAorICAgICAqIEdNVC04OjMwLiBUaGVyZSBpcyBubyBzdGFuZGFyZCBhYmJyZXZpYXRpb24gZm9yIFBob2VuaXggdGltZSwgYXMgZGlzdGluY3QKKyAgICAgKiBmcm9tIE1TVCB3aXRoIGRheWxpZ2h0IHNhdmluZ3MuCisgICAgICoKKyAgICAgKiBJbiBhZGRpdGlvbiB0byB0aGVzZSBwcm9ibGVtcywgYSBudW1iZXIgb2Ygem9uZXMgYXJlIEZBS0UuIFRoYXQgaXMsIHRoZXkKKyAgICAgKiBkb24ndCBtYXRjaCB3aGF0IHBlb3BsZSB1c2UgaW4gdGhlIHJlYWwgd29ybGQuCisgICAgICoKKyAgICAgKiBGQUtFIHpvbmVzOgorICAgICAqCisgICAgICogRUVUIChzaG91bGQgYmUgRUVTVCkKKyAgICAgKiBBUlQgKHNob3VsZCBiZSBFRVNUKQorICAgICAqIE1FVCAoc2hvdWxkIGJlIElSU1QpCisgICAgICogTkVUIChzaG91bGQgYmUgQU1TVCkKKyAgICAgKiBQTFQgKHNob3VsZCBiZSBQS1QpCisgICAgICogQlNUIChzaG91bGQgYmUgQkRUKQorICAgICAqIFZTVCAoc2hvdWxkIGJlIElDVCkKKyAgICAgKiBDVFQgKHNob3VsZCBiZSBDU1QpICsKKyAgICAgKiBBQ1QgKHNob3VsZCBiZSBDU1QpICsKKyAgICAgKiBBRVQgKHNob3VsZCBiZSBFU1QpICsKKyAgICAgKiBNSVQgKHNob3VsZCBiZSBXU1QpICsKKyAgICAgKiBJRVQgKHNob3VsZCBiZSBFU1QpICsKKyAgICAgKiBQUlQgKHNob3VsZCBiZSBBU1QpICsKKyAgICAgKiBDTlQgKHNob3VsZCBiZSBOU1QpCisgICAgICogQUdUIChzaG91bGQgYmUgQVJTVCkKKyAgICAgKiBCRVQgKHNob3VsZCBiZSBFU1QpICsKKyAgICAgKgorICAgICAqICsgQSB6b25lIHdpdGggdGhlIGNvcnJlY3QgbmFtZSBhbHJlYWR5IGV4aXN0cyBhbmQgbWVhbnMgc29tZXRoaW5nCisgICAgICogZWxzZS4gRS5nLiwgRVNUIHVzdWFsbHkgaW5kaWNhdGVzIHRoZSBVUyBFYXN0ZXJuIHpvbmUsIHNvIGl0IGNhbm5vdCBiZQorICAgICAqIHVzZWQgZm9yIEJyYXppbCAoQkVUKS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0U2hvcnRab25lSURzKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgICAgWm9uZURlc2NyaXB0b3JbXSBKREtfMTE2X1JFRkVSRU5DRV9MSVNUID0geworICAgICAgICAgICAgbmV3IFpvbmVEZXNjcmlwdG9yKCJNSVQiLCAtNjYwLCBmYWxzZSksCisgICAgICAgICAgICBuZXcgWm9uZURlc2NyaXB0b3IoIkhTVCIsIC02MDAsIGZhbHNlKSwKKyAgICAgICAgICAgIG5ldyBab25lRGVzY3JpcHRvcigiQVNUIiwgLTU0MCwgdHJ1ZSksCisgICAgICAgICAgICBuZXcgWm9uZURlc2NyaXB0b3IoIlBTVCIsIC00ODAsIHRydWUpLAorICAgICAgICAgICAgbmV3IFpvbmVEZXNjcmlwdG9yKCJQTlQiLCAtNDIwLCBmYWxzZSksCisgICAgICAgICAgICBuZXcgWm9uZURlc2NyaXB0b3IoIk1TVCIsIC00MjAsIHRydWUpLAorICAgICAgICAgICAgbmV3IFpvbmVEZXNjcmlwdG9yKCJDU1QiLCAtMzYwLCB0cnVlKSwKKyAgICAgICAgICAgIG5ldyBab25lRGVzY3JpcHRvcigiSUVUIiwgLTMwMCwgZmFsc2UpLAorICAgICAgICAgICAgbmV3IFpvbmVEZXNjcmlwdG9yKCJFU1QiLCAtMzAwLCB0cnVlKSwKKyAgICAgICAgICAgIG5ldyBab25lRGVzY3JpcHRvcigiUFJUIiwgLTI0MCwgZmFsc2UpLAorICAgICAgICAgICAgbmV3IFpvbmVEZXNjcmlwdG9yKCJDTlQiLCAtMjEwLCB0cnVlKSwKKyAgICAgICAgICAgIG5ldyBab25lRGVzY3JpcHRvcigiQUdUIiwgLTE4MCwgZmFsc2UpLAorICAgICAgICAgICAgbmV3IFpvbmVEZXNjcmlwdG9yKCJCRVQiLCAtMTgwLCB0cnVlKSwKKyAgICAgICAgICAgIC8vIG5ldyBab25lRGVzY3JpcHRvcigiQ0FUIiwgLTYwLCBmYWxzZSksIC8vIFdyb25nOgorICAgICAgICAgICAgLy8gQXMgb2YgYnVnIDQxMzA4ODUsIGZpeCBDQVQgKENlbnRyYWwgQWZyaWNhKQorICAgICAgICAgICAgbmV3IFpvbmVEZXNjcmlwdG9yKCJDQVQiLCAxMjAsIGZhbHNlKSwgLy8gQWZyaWNhL0hhcmFyZQorICAgICAgICAgICAgbmV3IFpvbmVEZXNjcmlwdG9yKCJHTVQiLCAwLCBmYWxzZSksCisgICAgICAgICAgICBuZXcgWm9uZURlc2NyaXB0b3IoIlVUQyIsIDAsIGZhbHNlKSwKKyAgICAgICAgICAgIG5ldyBab25lRGVzY3JpcHRvcigiRUNUIiwgNjAsIHRydWUpLAorICAgICAgICAgICAgbmV3IFpvbmVEZXNjcmlwdG9yKCJBUlQiLCAxMjAsIHRydWUpLAorICAgICAgICAgICAgbmV3IFpvbmVEZXNjcmlwdG9yKCJFRVQiLCAxMjAsIHRydWUpLAorICAgICAgICAgICAgbmV3IFpvbmVEZXNjcmlwdG9yKCJFQVQiLCAxODAsIGZhbHNlKSwKKyAgICAgICAgICAgIC8vIG5ldyBab25lRGVzY3JpcHRvcigiTUVUIiwgMjEwLCB0cnVlKSwKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBzdGFuZGFyZCBVbml4IHpvbmUsIHNvIGRvbid0IHJlbWFwIGl0IC0gTGl1IDNKYW4wMQorICAgICAgICAgICAgLy8gbmV3IFpvbmVEZXNjcmlwdG9yKCJORVQiLCAyNDAsIGZhbHNlKTsKKyAgICAgICAgICAgIC8vIEFzIG9mIGJ1ZyA0MTkxMTY0LCBmaXggTkVUCisgICAgICAgICAgICBuZXcgWm9uZURlc2NyaXB0b3IoIk5FVCIsIDI0MCwgdHJ1ZSksCisgICAgICAgICAgICBuZXcgWm9uZURlc2NyaXB0b3IoIlBMVCIsIDMwMCwgdHJ1ZSksIC8vIExpdSAzRGVjMDIsIFBha2lzdGFuIHVzZXMgRFNUIGFzIG9mIDIwMDIKKyAgICAgICAgICAgIG5ldyBab25lRGVzY3JpcHRvcigiSVNUIiwgMzMwLCBmYWxzZSksCisgICAgICAgICAgICBuZXcgWm9uZURlc2NyaXB0b3IoIkJTVCIsIDM2MCwgZmFsc2UpLAorICAgICAgICAgICAgbmV3IFpvbmVEZXNjcmlwdG9yKCJWU1QiLCA0MjAsIGZhbHNlKSwKKyAgICAgICAgICAgIG5ldyBab25lRGVzY3JpcHRvcigiQ1RUIiwgNDgwLCB0cnVlKSwgLy8gUmV2aXNlZCBMaXUgM0phbjAxLCBzdGQtPmRzdAorICAgICAgICAgICAgbmV3IFpvbmVEZXNjcmlwdG9yKCJKU1QiLCA1NDAsIGZhbHNlKSwKKyAgICAgICAgICAgIG5ldyBab25lRGVzY3JpcHRvcigiQUNUIiwgNTcwLCB0cnVlKSwgLy8gUmV2aXNlZCBMaXUgM0phbjAxLCBzdGQtPmRzdAorICAgICAgICAgICAgbmV3IFpvbmVEZXNjcmlwdG9yKCJBRVQiLCA2MDAsIHRydWUpLAorICAgICAgICAgICAgbmV3IFpvbmVEZXNjcmlwdG9yKCJTU1QiLCA2NjAsIGZhbHNlKSwKKyAgICAgICAgICAgIC8vIG5ldyBab25lRGVzY3JpcHRvcigiTlNUIiwgNzIwLCBmYWxzZSksCisgICAgICAgICAgICAvLyBBcyBvZiBidWcgNDEzMDg4NSwgZml4IE5TVCAoTmV3IFplYWxhbmQpCisgICAgICAgICAgICBuZXcgWm9uZURlc2NyaXB0b3IoIk5TVCIsIDcyMCwgdHJ1ZSksIC8vIFBhY2lmaWMvQXVja2xhbmQKKworICAgICAgICAgICAgLy8gWzNKYW4wMSBMaXVdIFRocmVlIG9mIHRoZXNlIHpvbmVzIGhhdmUgYmVlbiB1cGRhdGVkLgorICAgICAgICAgICAgLy8gVGhlIENUVCBhbmQgQUNUIHpvbmVzIGp1c3QgcmVtYXAgdG8gQXNpYS9TaGFuZ2hhaQorICAgICAgICAgICAgLy8gYW5kIEF1c3RyYWxpYS9EYXJ3aW4uICBTaW5jZSB0aG9zZSB6b25lcyBoYXZlIGNoYW5nZWQsCisgICAgICAgICAgICAvLyBJIGhhdmUgdXBkYXRlZCB0aGUgdGFibGUuICBUaGUgTUVUIHpvbmUgdXNlZCB0byBiZSBtYXBwZWQKKyAgICAgICAgICAgIC8vIHRvIEFzaWEvVGVocmFuIGJ1dCBzaW5jZSBNRVQgaXMgYSBzdGFuZGFyZCBVbml4IHpvbmUgbmFtZWQKKyAgICAgICAgICAgIC8vIGluIHRoZSBzb3VyY2UgZGF0YSB3ZSBubyBsb25nZXIgZG8gdGhpcyBpbiBpY3Ugb3IgaWN1NGouCisgICAgICAgIH07CisKKyAgICAgICAgSGFzaHRhYmxlIGhhc2ggPSBuZXcgSGFzaHRhYmxlKCk7CisKKyAgICAgICAgU3RyaW5nW10gaWRzID0gVGltZVpvbmUuZ2V0QXZhaWxhYmxlSURzKCk7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxpZHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIFN0cmluZyBpZCA9IGlkc1tpXTsKKyAgICAgICAgICAgIGlmIChpZC5sZW5ndGgoKSA9PSAzKSB7CisgICAgICAgICAgICAgICAgaGFzaC5wdXQoaWQsIG5ldyBab25lRGVzY3JpcHRvcihUaW1lWm9uZS5nZXRUaW1lWm9uZShpZCkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZvciAoaW50IGk9MDsgaTxKREtfMTE2X1JFRkVSRU5DRV9MSVNULmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBab25lRGVzY3JpcHRvciByZWZlcmVuY2Vab25lID0gSkRLXzExNl9SRUZFUkVOQ0VfTElTVFtpXTsKKyAgICAgICAgICAgIFpvbmVEZXNjcmlwdG9yIGN1cnJlbnRab25lID0gKFpvbmVEZXNjcmlwdG9yKWhhc2guZ2V0KHJlZmVyZW5jZVpvbmUuZ2V0SUQoKSk7CisgICAgICAgICAgICBpZiAocmVmZXJlbmNlWm9uZS5lcXVhbHMoY3VycmVudFpvbmUpKSB7CisgICAgICAgICAgICAgICAgbG9nbG4oIm9rICIgKyByZWZlcmVuY2Vab25lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGVycmxuKCJGYWlsOiBFeHBlY3RlZCAiICsgcmVmZXJlbmNlWm9uZSArCisgICAgICAgICAgICAgICAgICAgICAgIjsgZ290ICIgKyBjdXJyZW50Wm9uZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBIGRlc2NyaXB0b3IgZm9yIGEgem9uZTsgdXNlZCB0byByZWdyZXNzIHRoZSBzaG9ydCB6b25lIElEcy4KKyAgICAgKi8KKyAgICBzdGF0aWMgY2xhc3MgWm9uZURlc2NyaXB0b3IgeworICAgICAgICBTdHJpbmcgaWQ7CisgICAgICAgIGludCBvZmZzZXQ7IC8vIEluIG1pbnV0ZXMKKyAgICAgICAgYm9vbGVhbiBkYXlsaWdodDsKKworICAgICAgICBab25lRGVzY3JpcHRvcihUaW1lWm9uZSB6b25lKSB7CisgICAgICAgICAgICB0aGlzLmlkID0gem9uZS5nZXRJRCgpOworICAgICAgICAgICAgdGhpcy5vZmZzZXQgPSB6b25lLmdldFJhd09mZnNldCgpIC8gNjAwMDA7CisgICAgICAgICAgICB0aGlzLmRheWxpZ2h0ID0gem9uZS51c2VEYXlsaWdodFRpbWUoKTsKKyAgICAgICAgfQorCisgICAgICAgIFpvbmVEZXNjcmlwdG9yKFN0cmluZyBpZCwgaW50IG9mZnNldCwgYm9vbGVhbiBkYXlsaWdodCkgeworICAgICAgICAgICAgdGhpcy5pZCA9IGlkOworICAgICAgICAgICAgdGhpcy5vZmZzZXQgPSBvZmZzZXQ7CisgICAgICAgICAgICB0aGlzLmRheWxpZ2h0ID0gZGF5bGlnaHQ7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgU3RyaW5nIGdldElEKCkgeyByZXR1cm4gaWQ7IH0KKworICAgICAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG8pIHsKKyAgICAgICAgICAgIFpvbmVEZXNjcmlwdG9yIHRoYXQgPSAoWm9uZURlc2NyaXB0b3IpbzsKKyAgICAgICAgICAgIHJldHVybiB0aGF0ICE9IG51bGwgJiYKKyAgICAgICAgICAgICAgICBpZC5lcXVhbHModGhhdC5pZCkgJiYKKyAgICAgICAgICAgICAgICBvZmZzZXQgPT0gdGhhdC5vZmZzZXQgJiYKKyAgICAgICAgICAgICAgICBkYXlsaWdodCA9PSB0aGF0LmRheWxpZ2h0OworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgICAgIGludCBtaW4gPSBvZmZzZXQ7CisgICAgICAgICAgICBjaGFyIHNpZ24gPSAnKyc7CisgICAgICAgICAgICBpZiAobWluIDwgMCkgeyBzaWduID0gJy0nOyBtaW4gPSAtbWluOyB9CisKKyAgICAgICAgICAgIHJldHVybiAiWm9uZVtcIiIgKyBpZCArICJcIiwgR01UIiArIHNpZ24gKyAobWluLzYwKSArICc6JyArCisgICAgICAgICAgICAgICAgKG1pbiU2MDwxMD8iMCI6IiIpICsgKG1pbiU2MCkgKyAiLCAiICsKKyAgICAgICAgICAgICAgICAoZGF5bGlnaHQgPyAiRGF5bGlnaHQiIDogIlN0YW5kYXJkIikgKyAiXSI7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgc3RhdGljIGludCBjb21wYXJlKE9iamVjdCBvMSwgT2JqZWN0IG8yKSB7CisgICAgICAgICAgICBab25lRGVzY3JpcHRvciBpMSA9IChab25lRGVzY3JpcHRvcilvMTsKKyAgICAgICAgICAgIFpvbmVEZXNjcmlwdG9yIGkyID0gKFpvbmVEZXNjcmlwdG9yKW8yOworICAgICAgICAgICAgaWYgKGkxLm9mZnNldCA+IGkyLm9mZnNldCkgcmV0dXJuIDE7CisgICAgICAgICAgICBpZiAoaTEub2Zmc2V0IDwgaTIub2Zmc2V0KSByZXR1cm4gLTE7CisgICAgICAgICAgICBpZiAoaTEuZGF5bGlnaHQgJiYgIWkyLmRheWxpZ2h0KSByZXR1cm4gMTsKKyAgICAgICAgICAgIGlmICghaTEuZGF5bGlnaHQgJiYgaTIuZGF5bGlnaHQpIHJldHVybiAtMTsKKyAgICAgICAgICAgIHJldHVybiBpMS5pZC5jb21wYXJlVG8oaTIuaWQpOworICAgICAgICB9CisgICAgfQorCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBFWFBFQ1RFRF9DVVNUT01fSUQgPSAiQ3VzdG9tIjsKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIGZvcm1hdE1pbnV0ZXMoaW50IG1pbikgeworICAgICAgICBjaGFyIHNpZ24gPSAnKyc7CisgICAgICAgIGlmIChtaW4gPCAwKSB7IHNpZ24gPSAnLSc7IG1pbiA9IC1taW47IH0KKyAgICAgICAgaW50IGggPSBtaW4vNjA7CisgICAgICAgIG1pbiA9IG1pbiU2MDsKKyAgICAgICAgcmV0dXJuICIiICsgc2lnbiArIGggKyAiOiIgKyAoKG1pbjwxMCkgPyAiMCIgOiAiIikgKyBtaW47CisgICAgfQorICAgIC8qKgorICAgICAqIEFzIHBhcnQgb2YgdGhlIFZNIGZpeCAoc2VlIENDQyBhcHByb3ZlZCBSRkUgNDAyODAwNiwgYnVnCisgICAgICogNDA0NDAxMyksIFRpbWVab25lLmdldFRpbWVab25lKCkgaGFzIGJlZW4gbW9kaWZpZWQgdG8gcmVjb2duaXplCisgICAgICogZ2VuZXJpYyBJRHMgb2YgdGhlIGZvcm0gR01UWystXWhoOm1tLCBHTVRbKy1daGhtbSwgYW5kCisgICAgICogR01UWystXWhoLiAgVGVzdCB0aGlzIGJlaGF2aW9yIGhlcmUuCisgICAgICoKKyAgICAgKiBCdWcgNDA0NDAxMworICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RDdXN0b21QYXJzZSgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBPYmplY3RbXSBEQVRBID0geworICAgICAgICAgICAgLy8gSUQgICAgICAgIEV4cGVjdGVkIG9mZnNldCBpbiBtaW51dGVzCisgICAgICAgICAgICAiR01UIiwgICAgICAgbnVsbCwKKyAgICAgICAgICAgICJHTVQwIiwgICAgICBudWxsLAorICAgICAgICAgICAgIkdNVCswIiwgICAgIG5ldyBJbnRlZ2VyKDApLAorICAgICAgICAgICAgIkdNVCsxIiwgICAgIG5ldyBJbnRlZ2VyKDYwKSwKKyAgICAgICAgICAgICJHTVQtMDAzMCIsICBuZXcgSW50ZWdlcigtMzApLAorICAgICAgICAgICAgIkdNVCsxNTo5OSIsIG5ldyBJbnRlZ2VyKDE1KjYwKzk5KSwKKyAgICAgICAgICAgICJHTVQrIiwgICAgICBudWxsLAorICAgICAgICAgICAgIkdNVC0iLCAgICAgIG51bGwsCisgICAgICAgICAgICAiR01UKzA6IiwgICAgbnVsbCwKKyAgICAgICAgICAgICJHTVQtOiIsICAgICBudWxsLAorICAgICAgICAgICAgIkdNVCswMDEwIiwgIG5ldyBJbnRlZ2VyKDEwKSwgLy8gSW50ZXJwcmV0IHRoaXMgYXMgMDA6MTAKKyAgICAgICAgICAgICJHTVQtMTAiLCAgICBuZXcgSW50ZWdlcigtMTAqNjApLAorICAgICAgICAgICAgIkdNVCszMCIsICAgIG5ldyBJbnRlZ2VyKDMwKSwKKyAgICAgICAgICAgICJHTVQtMzozMCIsICBuZXcgSW50ZWdlcigtKDMqNjArMzApKSwKKyAgICAgICAgICAgICJHTVQtMjMwIiwgICBuZXcgSW50ZWdlcigtKDIqNjArMzApKSwKKyAgICAgICAgfTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPERBVEEubGVuZ3RoOyBpKz0yKSB7CisgICAgICAgICAgICBTdHJpbmcgaWQgPSAoU3RyaW5nKURBVEFbaV07CisgICAgICAgICAgICBJbnRlZ2VyIGV4cCA9IChJbnRlZ2VyKURBVEFbaSsxXTsKKyAgICAgICAgICAgIFRpbWVab25lIHpvbmUgPSBUaW1lWm9uZS5nZXRUaW1lWm9uZShpZCk7CisgICAgICAgICAgICBpZiAoem9uZS5nZXRJRCgpLmVxdWFscygiR01UIikpIHsKKyAgICAgICAgICAgICAgICBsb2dsbihpZCArICIgLT4gZ2VuZXJpYyBHTVQiKTsKKyAgICAgICAgICAgICAgICAvLyBXaGVuIFRpbWVab25lLmdldFRpbWVab25lKCkgY2FuJ3QgcGFyc2UgdGhlIGlkLCBpdAorICAgICAgICAgICAgICAgIC8vIHJldHVybnMgR01UIC0tIGEgZHViaW91cyBwcmFjdGljZSwgYnV0IHJlcXVpcmVkIGZvcgorICAgICAgICAgICAgICAgIC8vIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCisgICAgICAgICAgICAgICAgaWYgKGV4cCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oIkV4cGVjdGVkIG9mZnNldCBvZiAiICsgZm9ybWF0TWludXRlcyhleHAuaW50VmFsdWUoKSkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgZm9yICIgKyBpZCArICIsIGdvdCBwYXJzZSBmYWlsdXJlIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaW50IGlvZmZzZXQgPSB6b25lLmdldFJhd09mZnNldCgpLzYwMDAwOworICAgICAgICAgICAgICAgIFN0cmluZyBvZmZzZXQgPSBmb3JtYXRNaW51dGVzKGlvZmZzZXQpOworICAgICAgICAgICAgICAgIGxvZ2xuKGlkICsgIiAtPiAiICsgem9uZS5nZXRJRCgpICsgIiBHTVQiICsgb2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBpZiAoZXhwID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigiRXhwZWN0ZWQgcGFyc2UgZmFpbHVyZSBmb3IgIiArIGlkICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCBnb3Qgb2Zmc2V0IG9mICIgKyBvZmZzZXQgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIsIGlkICIgKyB6b25lLmdldElEKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChpb2Zmc2V0ICE9IGV4cC5pbnRWYWx1ZSgpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgIXpvbmUuZ2V0SUQoKS5lcXVhbHMoRVhQRUNURURfQ1VTVE9NX0lEKSkgeworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCJFeHBlY3RlZCBvZmZzZXQgb2YgIiArIGZvcm1hdE1pbnV0ZXMoZXhwLmludFZhbHVlKCkpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCBpZCBDdXN0b20sIGZvciAiICsgaWQgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIsIGdvdCBvZmZzZXQgb2YgIiArIG9mZnNldCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiwgaWQgIiArIHpvbmUuZ2V0SUQoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdCB0aGUgYmFzaWMgZnVuY3Rpb25hbGl0eSBvZiB0aGUgZ2V0RGlzcGxheU5hbWUoKSBBUEkuCisgICAgICoKKyAgICAgKiBCdWcgNDExMjg2OQorICAgICAqIEJ1ZyA0MDI4MDA2CisgICAgICoKKyAgICAgKiBTZWUgYWxzbyBBUEkgY2hhbmdlIHJlcXVlc3QgQTQxLgorICAgICAqCisgICAgICogNC8yMS85OCAtIG1ha2Ugc21hcnRlciwgc28gdGhlIHRlc3Qgd29ya3MgaWYgdGhlIGV4dCByZXNvdXJjZXMKKyAgICAgKiBhcmUgcHJlc2VudCBvciBub3QuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdERpc3BsYXlOYW1lKCkgeworICAgICAgICBUaW1lWm9uZSB6b25lID0gVGltZVpvbmUuZ2V0VGltZVpvbmUoIlBTVCIpOworICAgICAgICBTdHJpbmcgbmFtZSA9IHpvbmUuZ2V0RGlzcGxheU5hbWUoTG9jYWxlLkVOR0xJU0gpOworICAgICAgICBsb2dsbigiUFNULT4iICsgbmFtZSk7CisgICAgICAgIGlmICghbmFtZS5lcXVhbHMoIlBhY2lmaWMgU3RhbmRhcmQgVGltZSIpKQorICAgICAgICAgICAgZXJybG4oIkZhaWw6IEV4cGVjdGVkIFwiUGFjaWZpYyBTdGFuZGFyZCBUaW1lXCIsIGdvdCAiICsgbmFtZSArCisgICAgICAgICAgICAgICAgICAiIGZvciAiICsgem9uZSk7CisKKyAgICAgICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAgICAvLyBUSEUgRk9MTE9XSU5HIExJTkVTIE1VU1QgQkUgVVBEQVRFRCBJRiBUSEUgTE9DQUxFIERBVEEgQ0hBTkdFUworICAgICAgICAvLyBUSEUgRk9MTE9XSU5HIExJTkVTIE1VU1QgQkUgVVBEQVRFRCBJRiBUSEUgTE9DQUxFIERBVEEgQ0hBTkdFUworICAgICAgICAvLyBUSEUgRk9MTE9XSU5HIExJTkVTIE1VU1QgQkUgVVBEQVRFRCBJRiBUSEUgTE9DQUxFIERBVEEgQ0hBTkdFUworICAgICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICAgIE9iamVjdFtdIERBVEEgPSB7CisgICAgICAgICAgICBuZXcgQm9vbGVhbihmYWxzZSksIG5ldyBJbnRlZ2VyKFRpbWVab25lLlNIT1JUKSwgIlBTVCIsCisgICAgICAgICAgICBuZXcgQm9vbGVhbih0cnVlKSwgIG5ldyBJbnRlZ2VyKFRpbWVab25lLlNIT1JUKSwgIlBEVCIsCisgICAgICAgICAgICBuZXcgQm9vbGVhbihmYWxzZSksIG5ldyBJbnRlZ2VyKFRpbWVab25lLkxPTkcpLCAgIlBhY2lmaWMgU3RhbmRhcmQgVGltZSIsCisgICAgICAgICAgICBuZXcgQm9vbGVhbih0cnVlKSwgIG5ldyBJbnRlZ2VyKFRpbWVab25lLkxPTkcpLCAgIlBhY2lmaWMgRGF5bGlnaHQgVGltZSIsCisgICAgICAgIH07CisKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPERBVEEubGVuZ3RoOyBpKz0zKSB7CisgICAgICAgICAgICBuYW1lID0gem9uZS5nZXREaXNwbGF5TmFtZSgoKEJvb2xlYW4pREFUQVtpXSkuYm9vbGVhblZhbHVlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEludGVnZXIpREFUQVtpKzFdKS5pbnRWYWx1ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYWxlLkVOR0xJU0gpOworICAgICAgICAgICAgaWYgKCFuYW1lLmVxdWFscyhEQVRBW2krMl0pKQorICAgICAgICAgICAgICAgIGVycmxuKCJGYWlsOiBFeHBlY3RlZCAiICsgREFUQVtpKzJdICsgIjsgZ290ICIgKyBuYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHdlIGRvbid0IGRpc3BsYXkgdGhlIERTVCBuYW1lIGJ5IGNvbnN0cnVjdGluZyBhIGZha2UKKyAgICAgICAgLy8gUFNUIHpvbmUgdGhhdCBoYXMgRFNUIGFsbCB5ZWFyIGxvbmcuCisgICAgICAgIFNpbXBsZVRpbWVab25lIHpvbmUyID0gbmV3IFNpbXBsZVRpbWVab25lKDAsICJQU1QiKTsKKyAgICAgICAgem9uZTIuc2V0U3RhcnRSdWxlKENhbGVuZGFyLkpBTlVBUlksIDEsIDApOworICAgICAgICB6b25lMi5zZXRFbmRSdWxlKENhbGVuZGFyLkRFQ0VNQkVSLCAzMSwgMCk7CisgICAgICAgIGxvZ2xuKCJNb2RpZmllZCBQU1QgaW5EYXlsaWdodFRpbWUtPiIgKyB6b25lMi5pbkRheWxpZ2h0VGltZShuZXcgRGF0ZSgpKSk7CisgICAgICAgIG5hbWUgPSB6b25lMi5nZXREaXNwbGF5TmFtZShMb2NhbGUuRU5HTElTSCk7CisgICAgICAgIGxvZ2xuKCJNb2RpZmllZCBQU1QtPiIgKyBuYW1lKTsKKyAgICAgICAgaWYgKCFuYW1lLmVxdWFscygiUGFjaWZpYyBTdGFuZGFyZCBUaW1lIikpCisgICAgICAgICAgICBlcnJsbigiRmFpbDogRXhwZWN0ZWQgXCJQYWNpZmljIFN0YW5kYXJkIFRpbWVcIiIpOworCisgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBnZXQgdGhlIGRlZmF1bHQgZGlzcGxheSBmb3JtYXQgZm9yIExvY2FsZXMKKyAgICAgICAgLy8gd2l0aCBubyBkaXNwbGF5IG5hbWUgZGF0YS4KKyAgICAgICAgTG9jYWxlIHpoX0NOID0gTG9jYWxlLlNJTVBMSUZJRURfQ0hJTkVTRTsKKyAgICAgICAgbmFtZSA9IHpvbmUuZ2V0RGlzcGxheU5hbWUoemhfQ04pOworICAgICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICAgIC8vIFRIRSBGT0xMT1dJTkcgTElORSBNVVNUIEJFIFVQREFURUQgSUYgVEhFIExPQ0FMRSBEQVRBIENIQU5HRVMKKyAgICAgICAgLy8gVEhFIEZPTExPV0lORyBMSU5FIE1VU1QgQkUgVVBEQVRFRCBJRiBUSEUgTE9DQUxFIERBVEEgQ0hBTkdFUworICAgICAgICAvLyBUSEUgRk9MTE9XSU5HIExJTkUgTVVTVCBCRSBVUERBVEVEIElGIFRIRSBMT0NBTEUgREFUQSBDSEFOR0VTCisgICAgICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgICAgbG9nbG4oIlBTVCh6aF9DTiktPiIgKyBuYW1lKTsKKworICAgICAgICAvLyBOb3cgYmUgc21hcnQgLS0gY2hlY2sgdG8gc2VlIGlmIHpoIHJlc291cmNlIGlzIGV2ZW4gcHJlc2VudC4KKyAgICAgICAgLy8gSWYgbm90LCB3ZSBleHBlY3QgdGhlIGVuIGZhbGxiYWNrIGJlaGF2aW9yLgorCisJCS8vIGluIGljdTRqIDIuMSB3ZSBrbm93IHdlIGhhdmUgdGhlIHpoX0NOIGxvY2FsZSBkYXRhLCB0aG91Z2ggaXQncyBpbmNvbXBsZXRlCisJCS8qCisgICAgICAgIFJlc291cmNlQnVuZGxlIGVuUkIgPSBJQ1VMb2NhbGVEYXRhLmdldFJlc291cmNlQnVuZGxlKCJEYXRlRm9ybWF0Wm9uZURhdGEiLCBMb2NhbGUuRU5HTElTSCk7CisgICAgICAgIFJlc291cmNlQnVuZGxlIHpoUkIgPSBJQ1VMb2NhbGVEYXRhLmdldFJlc291cmNlQnVuZGxlKCJEYXRlRm9ybWF0Wm9uZURhdGEiLCB6aF9DTik7CisgICAgICAgIGJvb2xlYW4gbm9aSCA9IGVuUkIgPT0gemhSQjsKKworICAgICAgICBpZiAobm9aSCkgeworICAgICAgICAgICAgbG9nbG4oIldhcm5pbmc6IE5vdCB0ZXN0aW5nIHRoZSB6aF9DTiBiZWhhdmlvciBiZWNhdXNlIHJlc291cmNlIGlzIGFic2VudCIpOworICAgICAgICAgICAgaWYgKCFuYW1lLmVxdWFscygiUGFjaWZpYyBTdGFuZGFyZCBUaW1lIikpCisgICAgICAgICAgICAgICAgZXJybG4oIkZhaWw6IEV4cGVjdGVkIFBhY2lmaWMgU3RhbmRhcmQgVGltZSIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgCisJCSovCisJCWlmICghbmFtZS5lcXVhbHMoIlBhY2lmaWMgU3RhbmRhcmQgVGltZSIpICYmCisJCQkhbmFtZS5lcXVhbHMoIkdNVC0wODowMCIpICYmCisJCQkhbmFtZS5lcXVhbHMoIkdNVC04OjAwIikgJiYKKwkJCSFuYW1lLmVxdWFscygiR01ULTA4MDAiKSAmJgorCQkJIW5hbWUuZXF1YWxzKCJHTVQtODAwIikpIHsKKworICAgICAgICAgICAgZXJybG4oIkZhaWw6IEV4cGVjdGVkIEdNVC0wODowMCBvciBzb21ldGhpbmcgc2ltaWxhciIpOworICAgICAgICAgICAgZXJybG4oIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiIpOworICAgICAgICAgICAgZXJybG4oIlRIRSBBQk9WRSBGQUlMVVJFIE1BWSBKVVNUIE1FQU4gVEhFIExPQ0FMRSBEQVRBIEhBUyBDSEFOR0VEIik7CisgICAgICAgICAgICBlcnJsbigiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIE5vdyB0cnkgYSBub24tZXhpc3RlbnQgem9uZQorICAgICAgICB6b25lMiA9IG5ldyBTaW1wbGVUaW1lWm9uZSg5MCo2MCoxMDAwLCAieHl6enkiKTsKKyAgICAgICAgbmFtZSA9IHpvbmUyLmdldERpc3BsYXlOYW1lKExvY2FsZS5FTkdMSVNIKTsKKyAgICAgICAgbG9nbG4oIkdNVCs5MG1pbi0+IiArIG5hbWUpOworICAgICAgICBpZiAoIW5hbWUuZXF1YWxzKCJHTVQrMDE6MzAiKSAmJgorICAgICAgICAgICAgIW5hbWUuZXF1YWxzKCJHTVQrMTozMCIpICYmCisgICAgICAgICAgICAhbmFtZS5lcXVhbHMoIkdNVCswMTMwIikgJiYKKyAgICAgICAgICAgICFuYW1lLmVxdWFscygiR01UKzEzMCIpKQorICAgICAgICAgICAgZXJybG4oIkZhaWw6IEV4cGVjdGVkIEdNVCswMTozMCBvciBzb21ldGhpbmcgc2ltaWxhciIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RHZW5lcmljQVBJKCkgeworICAgICAgICBTdHJpbmcgaWQgPSAiTmV3R01UIjsKKyAgICAgICAgaW50IG9mZnNldCA9IDEyMzQ1OworCisgICAgICAgIFNpbXBsZVRpbWVab25lIHpvbmUgPSBuZXcgU2ltcGxlVGltZVpvbmUob2Zmc2V0LCBpZCk7CisgICAgICAgIGlmICh6b25lLnVzZURheWxpZ2h0VGltZSgpKSBlcnJsbigiRkFJTDogdXNlRGF5bGlnaHRUaW1lIHNob3VsZCByZXR1cm4gZmFsc2UiKTsKKworICAgICAgICBUaW1lWm9uZSB6b25lY2xvbmUgPSAoVGltZVpvbmUpem9uZS5jbG9uZSgpOworICAgICAgICBpZiAoIXpvbmVjbG9uZS5lcXVhbHMoem9uZSkpIGVycmxuKCJGQUlMOiBjbG9uZSBvciBvcGVyYXRvcj09IGZhaWxlZCIpOworICAgICAgICB6b25lY2xvbmUuc2V0SUQoImFiYyIpOworICAgICAgICBpZiAoem9uZWNsb25lLmVxdWFscyh6b25lKSkgZXJybG4oIkZBSUw6IGNsb25lIG9yIG9wZXJhdG9yIT0gZmFpbGVkIik7CisgICAgICAgIC8vIGRlbGV0ZSB6b25lY2xvbmU7CisKKyAgICAgICAgem9uZWNsb25lID0gKFRpbWVab25lKXpvbmUuY2xvbmUoKTsKKyAgICAgICAgaWYgKCF6b25lY2xvbmUuZXF1YWxzKHpvbmUpKSBlcnJsbigiRkFJTDogY2xvbmUgb3Igb3BlcmF0b3I9PSBmYWlsZWQiKTsKKyAgICAgICAgem9uZWNsb25lLnNldFJhd09mZnNldCg0NTY3OCk7CisgICAgICAgIGlmICh6b25lY2xvbmUuZXF1YWxzKHpvbmUpKSBlcnJsbigiRkFJTDogY2xvbmUgb3Igb3BlcmF0b3IhPSBmYWlsZWQiKTsKKworICAgICAgICAvLyBDKysgb25seQorICAgICAgICAvKgorICAgICAgICAgIFNpbXBsZVRpbWVab25lIGNvcHkoKnpvbmUpOworICAgICAgICAgIGlmICghKGNvcHkgPT0gKnpvbmUpKSBlcnJsbigiRkFJTDogY29weSBjb25zdHJ1Y3RvciBvciBvcGVyYXRvcj09IGZhaWxlZCIpOworICAgICAgICAgIGNvcHkgPSAqKFNpbXBsZVRpbWVab25lKil6b25lY2xvbmU7CisgICAgICAgICAgaWYgKCEoY29weSA9PSAqem9uZWNsb25lKSkgZXJybG4oIkZBSUw6IGFzc2lnbm1lbnQgb3BlcmF0b3Igb3Igb3BlcmF0b3I9PSBmYWlsZWQiKTsKKyAgICAgICAgICAqLworCisgICAgICAgIFRpbWVab25lIHNhdmVEZWZhdWx0ID0gVGltZVpvbmUuZ2V0RGVmYXVsdCgpOworICAgICAgICBUaW1lWm9uZS5zZXREZWZhdWx0KHpvbmUpOworICAgICAgICBUaW1lWm9uZSBkZWZhdWx0em9uZSA9IFRpbWVab25lLmdldERlZmF1bHQoKTsKKyAgICAgICAgaWYgKGRlZmF1bHR6b25lID09IHpvbmUpIGVycmxuKCJGQUlMOiBEZWZhdWx0IG9iamVjdCBpcyBpZGVudGljYWwsIG5vdCBjbG9uZSIpOworICAgICAgICBpZiAoIWRlZmF1bHR6b25lLmVxdWFscyh6b25lKSkgZXJybG4oIkZBSUw6IERlZmF1bHQgb2JqZWN0IGlzIG5vdCBlcXVhbCIpOworICAgICAgICBUaW1lWm9uZS5zZXREZWZhdWx0KHNhdmVEZWZhdWx0KTsKKyAgICAgICAgLy8gZGVsZXRlIGRlZmF1bHR6b25lOworICAgICAgICAvLyBkZWxldGUgem9uZWNsb25lOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RSdWxlQVBJKCkKKyAgICB7CisgICAgICAgIC8vIEVycm9yQ29kZSBzdGF0dXMgPSBaRVJPX0VSUk9SOworCisgICAgICAgIGludCBvZmZzZXQgPSAoaW50KSg2MCo2MCoxMDAwKjEuNzUpOyAvLyBQaWNrIGEgd2VpcmQgb2Zmc2V0CisgICAgICAgIFNpbXBsZVRpbWVab25lIHpvbmUgPSBuZXcgU2ltcGxlVGltZVpvbmUob2Zmc2V0LCAiVGVzdFpvbmUiKTsKKyAgICAgICAgaWYgKHpvbmUudXNlRGF5bGlnaHRUaW1lKCkpIGVycmxuKCJGQUlMOiB1c2VEYXlsaWdodFRpbWUgc2hvdWxkIHJldHVybiBmYWxzZSIpOworCisgICAgICAgIC8vIEVzdGFibGlzaCBvdXIgZXhwZWN0ZWQgdHJhbnNpdGlvbiB0aW1lcy4gIERvIHRoaXMgd2l0aCBhIG5vbi1EU1QKKyAgICAgICAgLy8gY2FsZW5kYXIgd2l0aCB0aGUgKGFib3ZlKSBkZWNsYXJlZCBsb2NhbCBvZmZzZXQuCisgICAgICAgIEdyZWdvcmlhbkNhbGVuZGFyIGdjID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKHpvbmUpOworICAgICAgICBnYy5jbGVhcigpOworICAgICAgICBnYy5zZXQoMTk5MCwgQ2FsZW5kYXIuTUFSQ0gsIDEpOworICAgICAgICBsb25nIG1hcmNoT25lU3RkID0gZ2MuZ2V0VGltZSgpLmdldFRpbWUoKTsgLy8gTG9jYWwgU3RkIHRpbWUgbWlkbmlnaHQKKyAgICAgICAgZ2MuY2xlYXIoKTsKKyAgICAgICAgZ2Muc2V0KDE5OTAsIENhbGVuZGFyLkpVTFksIDEpOworICAgICAgICBsb25nIGp1bHlPbmVTdGQgPSBnYy5nZXRUaW1lKCkuZ2V0VGltZSgpOyAvLyBMb2NhbCBTdGQgdGltZSBtaWRuaWdodAorCisgICAgICAgIC8vIFN0YXJ0aW5nIGFuZCBlbmRpbmcgaG91cnMsIFdBTEwgVElNRQorICAgICAgICBpbnQgc3RhcnRIb3VyID0gKGludCkoMi4yNSAqIDM2MDAwMDApOworICAgICAgICBpbnQgZW5kSG91ciAgID0gKGludCkoMy41ICAqIDM2MDAwMDApOworCisgICAgICAgIHpvbmUuc2V0U3RhcnRSdWxlKENhbGVuZGFyLk1BUkNILCAxLCAwLCBzdGFydEhvdXIpOworICAgICAgICB6b25lLnNldEVuZFJ1bGUgIChDYWxlbmRhci5KVUxZLCAgMSwgMCwgZW5kSG91cik7CisKKyAgICAgICAgZ2MgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoem9uZSk7CisgICAgICAgIC8vIGlmIChmYWlsdXJlKHN0YXR1cywgIm5ldyBHcmVnb3JpYW5DYWxlbmRhciIpKSByZXR1cm47CisKKyAgICAgICAgbG9uZyBtYXJjaE9uZSA9IG1hcmNoT25lU3RkICsgc3RhcnRIb3VyOworICAgICAgICBsb25nIGp1bHlPbmUgPSBqdWx5T25lU3RkICsgZW5kSG91ciAtIDM2MDAwMDA7IC8vIEFkanVzdCBmcm9tIHdhbGwgdG8gU3RkIHRpbWUKKworICAgICAgICBsb25nIGV4cE1hcmNoT25lID0gNjM2MjUxNDAwMDAwTDsKKyAgICAgICAgaWYgKG1hcmNoT25lICE9IGV4cE1hcmNoT25lKQorICAgICAgICB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogRXhwZWN0ZWQgc3RhcnQgY29tcHV0ZWQgYXMgIiArIG1hcmNoT25lICsKKyAgICAgICAgICAgICAgICAgICIgPSAiICsgbmV3IERhdGUobWFyY2hPbmUpKTsKKyAgICAgICAgICAgIGxvZ2xuKCIgICAgICBTaG91bGQgYmUgICAgICAgICAgICAgICAgICAiICsgZXhwTWFyY2hPbmUgKworICAgICAgICAgICAgICAgICAgIiA9ICIgKyBuZXcgRGF0ZShleHBNYXJjaE9uZSkpOworICAgICAgICB9CisKKyAgICAgICAgbG9uZyBleHBKdWx5T25lID0gNjQ2NzkzMTAwMDAwTDsKKyAgICAgICAgaWYgKGp1bHlPbmUgIT0gZXhwSnVseU9uZSkKKyAgICAgICAgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IEV4cGVjdGVkIHN0YXJ0IGNvbXB1dGVkIGFzICIgKyBqdWx5T25lICsKKyAgICAgICAgICAgICAgICAgICIgPSAiICsgbmV3IERhdGUoanVseU9uZSkpOworICAgICAgICAgICAgbG9nbG4oIiAgICAgIFNob3VsZCBiZSAgICAgICAgICAgICAgICAgICIgKyBleHBKdWx5T25lICsKKyAgICAgICAgICAgICAgICAgICIgPSAiICsgbmV3IERhdGUoZXhwSnVseU9uZSkpOworICAgICAgICB9CisKKyAgICAgICAgQ2FsZW5kYXIgY2FsMSA9IENhbGVuZGFyLmdldEluc3RhbmNlKCk7CisgICAgICAgIGNhbDEuc2V0KDE5OTAsIENhbGVuZGFyLkpBTlVBUlksIDEpOworICAgICAgICBDYWxlbmRhciBjYWwyID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTsKKyAgICAgICAgY2FsMi5zZXQoMTk5MCwgQ2FsZW5kYXIuSlVORSwgMSk7CisgICAgICAgIF90ZXN0VXNpbmdCaW5hcnlTZWFyY2goem9uZSwgY2FsMS5nZXRUaW1lSW5NaWxsaXMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWwyLmdldFRpbWVJbk1pbGxpcygpLCBtYXJjaE9uZSk7CisgICAgICAgIGNhbDEuc2V0KDE5OTAsIENhbGVuZGFyLkpVTkUsIDEpOworICAgICAgICBjYWwyLnNldCgxOTkwLCBDYWxlbmRhci5ERUNFTUJFUiwgMzEpOworICAgICAgICBfdGVzdFVzaW5nQmluYXJ5U2VhcmNoKHpvbmUsIGNhbDEuZ2V0VGltZUluTWlsbGlzKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsMi5nZXRUaW1lSW5NaWxsaXMoKSwganVseU9uZSk7CisKKyAgICAgICAgaWYgKHpvbmUuaW5EYXlsaWdodFRpbWUobmV3IERhdGUobWFyY2hPbmUgLSAxMDAwKSkgfHwKKyAgICAgICAgICAgICF6b25lLmluRGF5bGlnaHRUaW1lKG5ldyBEYXRlKG1hcmNoT25lKSkpCisgICAgICAgICAgICBlcnJsbigiRkFJTDogU3RhcnQgcnVsZSBicm9rZW4iKTsKKyAgICAgICAgaWYgKCF6b25lLmluRGF5bGlnaHRUaW1lKG5ldyBEYXRlKGp1bHlPbmUgLSAxMDAwKSkgfHwKKyAgICAgICAgICAgIHpvbmUuaW5EYXlsaWdodFRpbWUobmV3IERhdGUoanVseU9uZSkpKQorICAgICAgICAgICAgZXJybG4oIkZBSUw6IEVuZCBydWxlIGJyb2tlbiIpOworCisgICAgICAgIHpvbmUuc2V0U3RhcnRZZWFyKDE5OTEpOworICAgICAgICBpZiAoem9uZS5pbkRheWxpZ2h0VGltZShuZXcgRGF0ZShtYXJjaE9uZSkpIHx8CisgICAgICAgICAgICB6b25lLmluRGF5bGlnaHRUaW1lKG5ldyBEYXRlKGp1bHlPbmUgLSAxMDAwKSkpCisgICAgICAgICAgICBlcnJsbigiRkFJTDogU3RhcnQgeWVhciBicm9rZW4iKTsKKworICAgICAgICAvLyBmYWlsdXJlKHN0YXR1cywgIlRlc3RSdWxlQVBJIik7CisgICAgICAgIC8vIGRlbGV0ZSBnYzsKKyAgICAgICAgLy8gZGVsZXRlIHpvbmU7CisgICAgfQorCisgICAgdm9pZCBfdGVzdFVzaW5nQmluYXJ5U2VhcmNoKFNpbXBsZVRpbWVab25lIHR6LCBsb25nIG1pbiwgbG9uZyBtYXgsIGxvbmcgZXhwZWN0ZWRCb3VuZGFyeSkKKyAgICB7CisgICAgICAgIC8vIEVycm9yQ29kZSBzdGF0dXMgPSBaRVJPX0VSUk9SOworICAgICAgICBib29sZWFuIHN0YXJ0c0luRFNUID0gdHouaW5EYXlsaWdodFRpbWUobmV3IERhdGUobWluKSk7CisgICAgICAgIC8vIGlmIChmYWlsdXJlKHN0YXR1cywgIlNpbXBsZVRpbWVab25lOjppbkRheWxpZ2h0VGltZSIpKSByZXR1cm47CisgICAgICAgIGlmICh0ei5pbkRheWxpZ2h0VGltZShuZXcgRGF0ZShtYXgpKSA9PSBzdGFydHNJbkRTVCkgeworICAgICAgICAgICAgbG9nbG4oIkVycm9yOiBpbkRheWxpZ2h0VGltZSgiICsgbmV3IERhdGUobWF4KSArICIpICE9ICIgKyAoIXN0YXJ0c0luRFNUKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLy8gaWYgKGZhaWx1cmUoc3RhdHVzLCAiU2ltcGxlVGltZVpvbmU6OmluRGF5bGlnaHRUaW1lIikpIHJldHVybjsKKyAgICAgICAgd2hpbGUgKChtYXggLSBtaW4pID4gSU5URVJWQUwpIHsKKyAgICAgICAgICAgIGxvbmcgbWlkID0gKG1pbiArIG1heCkgLyAyOworICAgICAgICAgICAgaWYgKHR6LmluRGF5bGlnaHRUaW1lKG5ldyBEYXRlKG1pZCkpID09IHN0YXJ0c0luRFNUKSB7CisgICAgICAgICAgICAgICAgbWluID0gbWlkOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbWF4ID0gbWlkOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gaWYgKGZhaWx1cmUoc3RhdHVzLCAiU2ltcGxlVGltZVpvbmU6OmluRGF5bGlnaHRUaW1lIikpIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBsb2dsbigiQmluYXJ5IFNlYXJjaCBCZWZvcmU6ICIgKyBtaW4gKyAiID0gIiArIG5ldyBEYXRlKG1pbikpOworICAgICAgICBsb2dsbigiQmluYXJ5IFNlYXJjaCBBZnRlcjogICIgKyBtYXggKyAiID0gIiArIG5ldyBEYXRlKG1heCkpOworICAgICAgICBsb25nIG1pbmRlbHRhID0gZXhwZWN0ZWRCb3VuZGFyeSAtIG1pbjsKKyAgICAgICAgLy8gbm90IHVzZWQgbG9uZyBtYXhkZWx0YSA9IG1heCAtIGV4cGVjdGVkQm91bmRhcnk7CisgICAgICAgIGlmIChtaW5kZWx0YSA+PSAwICYmCisgICAgICAgICAgICBtaW5kZWx0YSA8PSBJTlRFUlZBTCAmJgorICAgICAgICAgICAgbWluZGVsdGEgPj0gMCAmJgorICAgICAgICAgICAgbWluZGVsdGEgPD0gSU5URVJWQUwpCisgICAgICAgICAgICBsb2dsbigiUEFTUzogRXhwZWN0ZWQgYmRyeTogICIgKyBleHBlY3RlZEJvdW5kYXJ5ICsgIiA9ICIgKyBuZXcgRGF0ZShleHBlY3RlZEJvdW5kYXJ5KSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBFeHBlY3RlZCBiZHJ5OiAgIiArIGV4cGVjdGVkQm91bmRhcnkgKyAiID0gIiArIG5ldyBEYXRlKGV4cGVjdGVkQm91bmRhcnkpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgZmluYWwgaW50IElOVEVSVkFMID0gMTAwOworCisgICAgLy8gQnVnIDAwNjsgdmVyaWZ5IHRoZSBvZmZzZXQgZm9yIGEgc3BlY2lmaWMgem9uZS4KKyAgICBwdWJsaWMgdm9pZCBUZXN0UFJUT2Zmc2V0KCkKKyAgICB7CisgICAgICAgIFRpbWVab25lIHR6ID0gVGltZVpvbmUuZ2V0VGltZVpvbmUoICJQUlQiICk7CisgICAgICAgIGlmKCB0eiA9PSBudWxsICkgeworICAgICAgICAgICAgZXJybG4oICJGQUlMOiBUaW1lWm9uZShQUlQpIGlzIG51bGwiICk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZXsKKyAgICAgICAgICAgIGlmICh0ei5nZXRSYXdPZmZzZXQoKSAhPSAoLTQqbWlsbGlzUGVySG91cikpCisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6IE9mZnNldCBmb3IgUFJUIHNob3VsZCBiZSAtNCwgZ290ICIgKworICAgICAgICAgICAgICAgICAgICAgIHR6LmdldFJhd09mZnNldCgpIC8gKGRvdWJsZSltaWxsaXNQZXJIb3VyKTsKKyAgICAgICAgfQorCisgICAgfQorCisgICAgLy8gVGVzdCB2YXJpb3VzIGNhbGxzCisgICAgcHVibGljIHZvaWQgVGVzdFZhcmlvdXNBUEk1MTgoKQorICAgIHsKKyAgICAgICAgVGltZVpvbmUgdGltZV96b25lID0gVGltZVpvbmUuZ2V0VGltZVpvbmUoIlBTVCIpOworICAgICAgICBDYWxlbmRhciBjYWwgPSBDYWxlbmRhci5nZXRJbnN0YW5jZSgpOworICAgICAgICBjYWwuc2V0KDE5OTcsIENhbGVuZGFyLkFQUklMLCAzMCk7CisgICAgICAgIERhdGUgZCA9IGNhbC5nZXRUaW1lKCk7CisKKyAgICAgICAgbG9nbG4oIlRoZSB0aW1lem9uZSBpcyAiICsgdGltZV96b25lLmdldElEKCkpOworCisgICAgICAgIGlmICh0aW1lX3pvbmUuaW5EYXlsaWdodFRpbWUoZCkgIT0gdHJ1ZSkKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBpbkRheWxpZ2h0VGltZSByZXR1cm5lZCBmYWxzZSIpOworCisgICAgICAgIGlmICh0aW1lX3pvbmUudXNlRGF5bGlnaHRUaW1lKCkgIT0gdHJ1ZSkKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiB1c2VEYXlsaWdodFRpbWUgcmV0dXJuZWQgZmFsc2UiKTsKKworICAgICAgICBpZiAodGltZV96b25lLmdldFJhd09mZnNldCgpICE9IC04Km1pbGxpc1BlckhvdXIpCisgICAgICAgICAgICBlcnJsbiggIkZBSUw6IGdldFJhd09mZnNldCByZXR1cm5lZCB3cm9uZyB2YWx1ZSIpOworCisgICAgICAgIEdyZWdvcmlhbkNhbGVuZGFyIGdjID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKCk7CisgICAgICAgIGdjLnNldFRpbWUoZCk7CisgICAgICAgIGlmICh0aW1lX3pvbmUuZ2V0T2Zmc2V0KGdjLkFELCBnYy5nZXQoZ2MuWUVBUiksIGdjLmdldChnYy5NT05USCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdjLmdldChnYy5EQVlfT0ZfTU9OVEgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYy5nZXQoZ2MuREFZX09GX1dFRUspLCAwKQorICAgICAgICAgICAgIT0gLTcqbWlsbGlzUGVySG91cikKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBnZXRPZmZzZXQgcmV0dXJuZWQgd3JvbmcgdmFsdWUiKTsKKyAgICB9CisKKyAgICAvLyBUZXN0IGdldEF2YWlsYWJsZUlEIEFQSQorICAgIHB1YmxpYyB2b2lkIFRlc3RHZXRBdmFpbGFibGVJRHM5MTMoKQorICAgIHsKKyAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZiA9IG5ldyBTdHJpbmdCdWZmZXIoIlRpbWVab25lLmdldEF2YWlsYWJsZUlEcygpID0geyAiKTsKKyAgICAgICAgU3RyaW5nW10gcyA9IFRpbWVab25lLmdldEF2YWlsYWJsZUlEcygpOworICAgICAgICBmb3IgKGludCBpPTA7IGk8cy5sZW5ndGg7ICsraSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGkgPiAwKSBidWYuYXBwZW5kKCIsICIpOworICAgICAgICAgICAgYnVmLmFwcGVuZChzW2ldKTsKKyAgICAgICAgfQorICAgICAgICBidWYuYXBwZW5kKCIgfTsiKTsKKyAgICAgICAgbG9nbG4oYnVmLnRvU3RyaW5nKCkpOworCisgICAgICAgIGJ1Zi5zZXRMZW5ndGgoMCk7CisgICAgICAgIGJ1Zi5hcHBlbmQoIlRpbWVab25lLmdldEF2YWlsYWJsZUlEcyhHTVQrMDI6MDApID0geyAiKTsKKyAgICAgICAgcyA9IFRpbWVab25lLmdldEF2YWlsYWJsZUlEcygrMiAqIDYwICogNjAgKiAxMDAwKTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPHMubGVuZ3RoOyArK2kpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChpID4gMCkgYnVmLmFwcGVuZCgiLCAiKTsKKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQoc1tpXSk7CisgICAgICAgIH0KKyAgICAgICAgYnVmLmFwcGVuZCgiIH07Iik7CisgICAgICAgIGxvZ2xuKGJ1Zi50b1N0cmluZygpKTsKKworICAgICAgICBUaW1lWm9uZSB0eiA9IFRpbWVab25lLmdldFRpbWVab25lKCJQU1QiKTsKKyAgICAgICAgaWYgKHR6ICE9IG51bGwpCisgICAgICAgICAgICBsb2dsbigiZ2V0VGltZVpvbmUoUFNUKSA9ICIgKyB0ei5nZXRJRCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZXJybG4oIkZBSUw6IGdldFRpbWVab25lKFBTVCkgPSBudWxsIik7CisKKyAgICAgICAgdHogPSBUaW1lWm9uZS5nZXRUaW1lWm9uZSgiQW1lcmljYS9Mb3NfQW5nZWxlcyIpOworICAgICAgICBpZiAodHogIT0gbnVsbCkKKyAgICAgICAgICAgIGxvZ2xuKCJnZXRUaW1lWm9uZShBbWVyaWNhL0xvc19BbmdlbGVzKSA9ICIgKyB0ei5nZXRJRCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZXJybG4oIkZBSUw6IGdldFRpbWVab25lKFBTVCkgPSBudWxsIik7CisKKyAgICAgICAgLy8gQnVnIDQwOTY2OTQKKyAgICAgICAgdHogPSBUaW1lWm9uZS5nZXRUaW1lWm9uZSgiTk9OX0VYSVNURU5UIik7CisgICAgICAgIGlmICh0eiA9PSBudWxsKQorICAgICAgICAgICAgZXJybG4oIkZBSUw6IGdldFRpbWVab25lKE5PTl9FWElTVEVOVCkgPSBudWxsIik7CisgICAgICAgIGVsc2UgaWYgKCF0ei5nZXRJRCgpLmVxdWFscygiR01UIikpCisgICAgICAgICAgICBlcnJsbigiRkFJTDogZ2V0VGltZVpvbmUoTk9OX0VYSVNURU5UKSA9ICIgKyB0ei5nZXRJRCgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBCdWcgNDEwNzI3NgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3REU1RTYXZpbmdzKCkgeworICAgICAgICAvLyBJdCBtaWdodCBiZSBiZXR0ZXIgdG8gZmluZCBhIHdheSB0byBpbnRlZ3JhdGUgdGhpcyB0ZXN0IGludG8gdGhlIG1haW4gVGltZVpvbmUKKyAgICAgICAgLy8gdGVzdHMgYWJvdmUsIGJ1dCBJIGRvbid0IGhhdmUgdGltZSB0byBmaWd1cmUgb3V0IGhvdyB0byBkbyB0aGlzIChvciBpZiBpdCdzCisgICAgICAgIC8vIGV2ZW4gcmVhbGx5IGEgZ29vZCBpZGVhKS4gIExldCdzIGNvbnNpZGVyIHRoYXQgYSBmdXR1cmUuICAtLXJ0ZyAxLzI3Lzk4CisgICAgICAgIFNpbXBsZVRpbWVab25lIHR6ID0gbmV3IFNpbXBsZVRpbWVab25lKC01ICogbWlsbGlzUGVySG91ciwgImRzdFNhdmluZ3NUZXN0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsZW5kYXIuTUFSQ0gsIDEsIDAsIDAsIENhbGVuZGFyLlNFUFRFTUJFUiwgMSwgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoMC41ICogbWlsbGlzUGVySG91cikpOworCisgICAgICAgIGlmICh0ei5nZXRSYXdPZmZzZXQoKSAhPSAtNSAqIG1pbGxpc1BlckhvdXIpCisgICAgICAgICAgICBlcnJsbigiR290IGJhY2sgYSByYXcgb2Zmc2V0IG9mICIgKyAodHouZ2V0UmF3T2Zmc2V0KCkgLyBtaWxsaXNQZXJIb3VyKSArCisgICAgICAgICAgICAgICAgICAiIGhvdXJzIGluc3RlYWQgb2YgLTUgaG91cnMuIik7CisgICAgICAgIGlmICghdHoudXNlRGF5bGlnaHRUaW1lKCkpCisgICAgICAgICAgICBlcnJsbigiVGVzdCB0aW1lIHpvbmUgc2hvdWxkIHVzZSBEU1QgYnV0IGNsYWltcyBpdCBkb2Vzbid0LiIpOworICAgICAgICBpZiAodHouZ2V0RFNUU2F2aW5ncygpICE9IDAuNSAqIG1pbGxpc1BlckhvdXIpCisgICAgICAgICAgICBlcnJsbigiU2V0IERTVCBvZmZzZXQgdG8gMC41IGhvdXIsIGJ1dCBnb3QgYmFjayAiICsgKHR6LmdldERTVFNhdmluZ3MoKSAvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbGxpc1BlckhvdXIpICsgIiBob3VycyBpbnN0ZWFkLiIpOworCisgICAgICAgIGludCBvZmZzZXQgPSB0ei5nZXRPZmZzZXQoR3JlZ29yaWFuQ2FsZW5kYXIuQUQsIDE5OTgsIENhbGVuZGFyLkpBTlVBUlksIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsZW5kYXIuVEhVUlNEQVksIDEwICogbWlsbGlzUGVySG91cik7CisgICAgICAgIGlmIChvZmZzZXQgIT0gLTUgKiBtaWxsaXNQZXJIb3VyKQorICAgICAgICAgICAgZXJybG4oIlRoZSBvZmZzZXQgZm9yIDEwIEFNLCAxLzEvOTggc2hvdWxkIGhhdmUgYmVlbiAtNSBob3VycywgYnV0IHdlIGdvdCAiCisgICAgICAgICAgICAgICAgICArIChvZmZzZXQgLyBtaWxsaXNQZXJIb3VyKSArICIgaG91cnMuIik7CisKKyAgICAgICAgb2Zmc2V0ID0gdHouZ2V0T2Zmc2V0KEdyZWdvcmlhbkNhbGVuZGFyLkFELCAxOTk4LCBDYWxlbmRhci5KVU5FLCAxLCBDYWxlbmRhci5NT05EQVksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMCAqIG1pbGxpc1BlckhvdXIpOworICAgICAgICBpZiAob2Zmc2V0ICE9IC00LjUgKiBtaWxsaXNQZXJIb3VyKQorICAgICAgICAgICAgZXJybG4oIlRoZSBvZmZzZXQgZm9yIDEwIEFNLCA2LzEvOTggc2hvdWxkIGhhdmUgYmVlbiAtNC41IGhvdXJzLCBidXQgd2UgZ290ICIKKyAgICAgICAgICAgICAgICAgICsgKG9mZnNldCAvIG1pbGxpc1BlckhvdXIpICsgIiBob3Vycy4iKTsKKworICAgICAgICB0ei5zZXREU1RTYXZpbmdzKG1pbGxpc1BlckhvdXIpOworICAgICAgICBvZmZzZXQgPSB0ei5nZXRPZmZzZXQoR3JlZ29yaWFuQ2FsZW5kYXIuQUQsIDE5OTgsIENhbGVuZGFyLkpBTlVBUlksIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxlbmRhci5USFVSU0RBWSwgMTAgKiBtaWxsaXNQZXJIb3VyKTsKKyAgICAgICAgaWYgKG9mZnNldCAhPSAtNSAqIG1pbGxpc1BlckhvdXIpCisgICAgICAgICAgICBlcnJsbigiVGhlIG9mZnNldCBmb3IgMTAgQU0sIDEvMS85OCBzaG91bGQgaGF2ZSBiZWVuIC01IGhvdXJzLCBidXQgd2UgZ290ICIKKyAgICAgICAgICAgICAgICAgICsgKG9mZnNldCAvIG1pbGxpc1BlckhvdXIpICsgIiBob3Vycy4iKTsKKworICAgICAgICBvZmZzZXQgPSB0ei5nZXRPZmZzZXQoR3JlZ29yaWFuQ2FsZW5kYXIuQUQsIDE5OTgsIENhbGVuZGFyLkpVTkUsIDEsIENhbGVuZGFyLk1PTkRBWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwICogbWlsbGlzUGVySG91cik7CisgICAgICAgIGlmIChvZmZzZXQgIT0gLTQgKiBtaWxsaXNQZXJIb3VyKQorICAgICAgICAgICAgZXJybG4oIlRoZSBvZmZzZXQgZm9yIDEwIEFNLCA2LzEvOTggKHdpdGggYSAxLWhvdXIgRFNUIG9mZnNldCkgc2hvdWxkIGhhdmUgYmVlbiAtNCBob3VycywgYnV0IHdlIGdvdCAiCisgICAgICAgICAgICAgICAgICArIChvZmZzZXQgLyBtaWxsaXNQZXJIb3VyKSArICIgaG91cnMuIik7CisgICAgfQorCisgICAgLyoqCisgICAgICogQnVnIDQxMDc1NzAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0QWx0ZXJuYXRlUnVsZXMoKSB7CisgICAgICAgIC8vIExpa2UgVGVzdERTVFNhdmluZ3MsIHRoaXMgdGVzdCBzaG91bGQgcHJvYmFibHkgYmUgaW50ZWdyYXRlZCBzb21laG93IHdpdGggdGhlIG1haW4KKyAgICAgICAgLy8gdGVzdCBhdCB0aGUgdG9wIG9mIHRoaXMgY2xhc3MsIGJ1dCBJIGRpZG4ndCBoYXZlIHRpbWUgdG8gZmlndXJlIG91dCBob3cgdG8gZG8gdGhhdC4KKyAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgLS1ydGcgMS8yOC85OAorCisgICAgICAgIFNpbXBsZVRpbWVab25lIHR6ID0gbmV3IFNpbXBsZVRpbWVab25lKC01ICogbWlsbGlzUGVySG91ciwgImFsdGVybmF0ZVJ1bGVUZXN0Iik7CisKKyAgICAgICAgLy8gdGVzdCB0aGUgZGF5LW9mLW1vbnRoIEFQSQorICAgICAgICB0ei5zZXRTdGFydFJ1bGUoQ2FsZW5kYXIuTUFSQ0gsIDEwLCAxMiAqIG1pbGxpc1BlckhvdXIpOworICAgICAgICB0ei5zZXRFbmRSdWxlKENhbGVuZGFyLk9DVE9CRVIsIDIwLCAxMiAqIG1pbGxpc1BlckhvdXIpOworCisgICAgICAgIGludCBvZmZzZXQgPSB0ei5nZXRPZmZzZXQoR3JlZ29yaWFuQ2FsZW5kYXIuQUQsIDE5OTgsIENhbGVuZGFyLk1BUkNILCA1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGVuZGFyLlRIVVJTREFZLCAxMCAqIG1pbGxpc1BlckhvdXIpOworICAgICAgICBpZiAob2Zmc2V0ICE9IC01ICogbWlsbGlzUGVySG91cikKKyAgICAgICAgICAgIGVycmxuKCJUaGUgb2Zmc2V0IGZvciAxMEFNLCAzLzUvOTggc2hvdWxkIGhhdmUgYmVlbiAtNSBob3VycywgYnV0IHdlIGdvdCAiCisgICAgICAgICAgICAgICAgICArIChvZmZzZXQgLyBtaWxsaXNQZXJIb3VyKSArICIgaG91cnMuIik7CisKKyAgICAgICAgb2Zmc2V0ID0gdHouZ2V0T2Zmc2V0KEdyZWdvcmlhbkNhbGVuZGFyLkFELCAxOTk4LCBDYWxlbmRhci5NQVJDSCwgMTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxlbmRhci5TVU5EQVksIDEwICogbWlsbGlzUGVySG91cik7CisgICAgICAgIGlmIChvZmZzZXQgIT0gLTQgKiBtaWxsaXNQZXJIb3VyKQorICAgICAgICAgICAgZXJybG4oIlRoZSBvZmZzZXQgZm9yIDEwQU0sIDMvMTUvOTggc2hvdWxkIGhhdmUgYmVlbiAtNCBob3VycywgYnV0IHdlIGdvdCAiCisgICAgICAgICAgICAgICAgICArIChvZmZzZXQgLyBtaWxsaXNQZXJIb3VyKSArICIgaG91cnMuIik7CisKKyAgICAgICAgb2Zmc2V0ID0gdHouZ2V0T2Zmc2V0KEdyZWdvcmlhbkNhbGVuZGFyLkFELCAxOTk4LCBDYWxlbmRhci5PQ1RPQkVSLCAxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGVuZGFyLlRIVVJTREFZLCAxMCAqIG1pbGxpc1BlckhvdXIpOworICAgICAgICBpZiAob2Zmc2V0ICE9IC00ICogbWlsbGlzUGVySG91cikKKyAgICAgICAgICAgIGVycmxuKCJUaGUgb2Zmc2V0IGZvciAxMEFNLCAxMC8xNS85OCBzaG91bGQgaGF2ZSBiZWVuIC00IGhvdXJzLCBidXQgd2UgZ290ICIKKyAgICAgICAgICAgICAgICAgICsgKG9mZnNldCAvIG1pbGxpc1BlckhvdXIpICsgIiBob3Vycy4iKTsKKworICAgICAgICBvZmZzZXQgPSB0ei5nZXRPZmZzZXQoR3JlZ29yaWFuQ2FsZW5kYXIuQUQsIDE5OTgsIENhbGVuZGFyLk9DVE9CRVIsIDI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsZW5kYXIuU1VOREFZLCAxMCAqIG1pbGxpc1BlckhvdXIpOworICAgICAgICBpZiAob2Zmc2V0ICE9IC01ICogbWlsbGlzUGVySG91cikKKyAgICAgICAgICAgIGVycmxuKCJUaGUgb2Zmc2V0IGZvciAxMEFNLCAxMC8yNS85OCBzaG91bGQgaGF2ZSBiZWVuIC01IGhvdXJzLCBidXQgd2UgZ290ICIKKyAgICAgICAgICAgICAgICAgICsgKG9mZnNldCAvIG1pbGxpc1BlckhvdXIpICsgIiBob3Vycy4iKTsKKworICAgICAgICAvLyB0ZXN0IHRoZSBkYXktb2Ytd2Vlay1hZnRlci1kYXktaW4tbW9udGggQVBJCisgICAgICAgIHR6LnNldFN0YXJ0UnVsZShDYWxlbmRhci5NQVJDSCwgMTAsIENhbGVuZGFyLkZSSURBWSwgMTIgKiBtaWxsaXNQZXJIb3VyLCB0cnVlKTsKKyAgICAgICAgdHouc2V0RW5kUnVsZShDYWxlbmRhci5PQ1RPQkVSLCAyMCwgQ2FsZW5kYXIuRlJJREFZLCAxMiAqIG1pbGxpc1BlckhvdXIsIGZhbHNlKTsKKworICAgICAgICBvZmZzZXQgPSB0ei5nZXRPZmZzZXQoR3JlZ29yaWFuQ2FsZW5kYXIuQUQsIDE5OTgsIENhbGVuZGFyLk1BUkNILCAxMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGVuZGFyLldFRE5FU0RBWSwgMTAgKiBtaWxsaXNQZXJIb3VyKTsKKyAgICAgICAgaWYgKG9mZnNldCAhPSAtNSAqIG1pbGxpc1BlckhvdXIpCisgICAgICAgICAgICBlcnJsbigiVGhlIG9mZnNldCBmb3IgMTBBTSwgMy8xMS85OCBzaG91bGQgaGF2ZSBiZWVuIC01IGhvdXJzLCBidXQgd2UgZ290ICIKKyAgICAgICAgICAgICAgICAgICsgKG9mZnNldCAvIG1pbGxpc1BlckhvdXIpICsgIiBob3Vycy4iKTsKKworICAgICAgICBvZmZzZXQgPSB0ei5nZXRPZmZzZXQoR3JlZ29yaWFuQ2FsZW5kYXIuQUQsIDE5OTgsIENhbGVuZGFyLk1BUkNILCAxNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGVuZGFyLlNBVFVSREFZLCAxMCAqIG1pbGxpc1BlckhvdXIpOworICAgICAgICBpZiAob2Zmc2V0ICE9IC00ICogbWlsbGlzUGVySG91cikKKyAgICAgICAgICAgIGVycmxuKCJUaGUgb2Zmc2V0IGZvciAxMEFNLCAzLzE0Lzk4IHNob3VsZCBoYXZlIGJlZW4gLTQgaG91cnMsIGJ1dCB3ZSBnb3QgIgorICAgICAgICAgICAgICAgICAgKyAob2Zmc2V0IC8gbWlsbGlzUGVySG91cikgKyAiIGhvdXJzLiIpOworCisgICAgICAgIG9mZnNldCA9IHR6LmdldE9mZnNldChHcmVnb3JpYW5DYWxlbmRhci5BRCwgMTk5OCwgQ2FsZW5kYXIuT0NUT0JFUiwgMTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxlbmRhci5USFVSU0RBWSwgMTAgKiBtaWxsaXNQZXJIb3VyKTsKKyAgICAgICAgaWYgKG9mZnNldCAhPSAtNCAqIG1pbGxpc1BlckhvdXIpCisgICAgICAgICAgICBlcnJsbigiVGhlIG9mZnNldCBmb3IgMTBBTSwgMTAvMTUvOTggc2hvdWxkIGhhdmUgYmVlbiAtNCBob3VycywgYnV0IHdlIGdvdCAiCisgICAgICAgICAgICAgICAgICArIChvZmZzZXQgLyBtaWxsaXNQZXJIb3VyKSArICIgaG91cnMuIik7CisKKyAgICAgICAgb2Zmc2V0ID0gdHouZ2V0T2Zmc2V0KEdyZWdvcmlhbkNhbGVuZGFyLkFELCAxOTk4LCBDYWxlbmRhci5PQ1RPQkVSLCAxNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGVuZGFyLlNBVFVSREFZLCAxMCAqIG1pbGxpc1BlckhvdXIpOworICAgICAgICBpZiAob2Zmc2V0ICE9IC01ICogbWlsbGlzUGVySG91cikKKyAgICAgICAgICAgIGVycmxuKCJUaGUgb2Zmc2V0IGZvciAxMEFNLCAxMC8xNy85OCBzaG91bGQgaGF2ZSBiZWVuIC01IGhvdXJzLCBidXQgd2UgZ290ICIKKyAgICAgICAgICAgICAgICAgICsgKG9mZnNldCAvIG1pbGxpc1BlckhvdXIpICsgIiBob3Vycy4iKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0RXF1aXZhbGVuY3lHcm91cHMoKSB7CisgICAgICAgIFN0cmluZyBpZCA9ICJBbWVyaWNhL0xvc19BbmdlbGVzIjsKKyAgICAgICAgaW50IG4gPSBUaW1lWm9uZS5jb3VudEVxdWl2YWxlbnRJRHMoaWQpOworICAgICAgICBpZiAobiA8IDIpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBjb3VudEVxdWl2YWxlbnRJRHMoIiArIGlkICsgIikgcmV0dXJuZWQgIiArIG4gKworICAgICAgICAgICAgICAgICAgIiwgZXhwZWN0ZWQgPj0gMiIpOworICAgICAgICB9CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxuOyArK2kpIHsKKyAgICAgICAgICAgIFN0cmluZyBzID0gVGltZVpvbmUuZ2V0RXF1aXZhbGVudElEKGlkLCBpKTsKKyAgICAgICAgICAgIGlmIChzLmxlbmd0aCgpID09IDApIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogZ2V0RXF1aXZhbGVudElEKCIgKyBpZCArICIsICIgKyBpICsKKyAgICAgICAgICAgICAgICAgICAgICAiKSByZXR1cm5lZCBcIiIgKyBzICsgIlwiLCBleHBlY3RlZCB2YWxpZCBJRCIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBsb2dsbigiIiArIGkgKyAiOiIgKyBzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RDb3VudHJpZXMoKSB7CisgICAgICAgIC8vIE1ha2Ugc3VyZSBBbWVyaWNhL0xvc19BbmdlbGVzIGlzIGluIHRoZSAiVVMiIGdyb3VwLCBhbmQKKyAgICAgICAgLy8gQXNpYS9Ub2t5byBpc24ndC4gIFZpY2UgdmVyc2EgZm9yIHRoZSAiSlAiIGdyb3VwLgorCisgICAgICAgIFN0cmluZ1tdIHMgPSBUaW1lWm9uZS5nZXRBdmFpbGFibGVJRHMoIlVTIik7CisgICAgICAgIGJvb2xlYW4gbGEgPSBmYWxzZSwgdG9reW8gPSBmYWxzZTsKKyAgICAgICAgU3RyaW5nIGxhWm9uZSA9ICJBbWVyaWNhL0xvc19BbmdlbGVzIiwgdG9reW9ab25lID0gIkFzaWEvVG9reW8iOworCisgICAgICAgIGZvciAoaW50IGk9MDsgaTxzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBpZiAoc1tpXS5lcXVhbHMobGFab25lKSkgeworICAgICAgICAgICAgICAgIGxhID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzW2ldLmVxdWFscyh0b2t5b1pvbmUpKSB7CisgICAgICAgICAgICAgICAgdG9reW8gPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICghbGEgfHwgdG9reW8pIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiAiICsgbGFab25lICsgIiBpbiBVUyA9ICIgKyBsYSk7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogIiArIHRva3lvWm9uZSArICIgaW4gVVMgPSAiICsgdG9reW8pOworICAgICAgICB9CisKKyAgICAgICAgcyA9IFRpbWVab25lLmdldEF2YWlsYWJsZUlEcygiSlAiKTsKKyAgICAgICAgbGEgPSBmYWxzZTsgdG9reW8gPSBmYWxzZTsKKworICAgICAgICBmb3IgKGludCBpPTA7IGk8cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgaWYgKHNbaV0uZXF1YWxzKGxhWm9uZSkpIHsKKyAgICAgICAgICAgICAgICBsYSA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc1tpXS5lcXVhbHModG9reW9ab25lKSkgeworICAgICAgICAgICAgICAgIHRva3lvID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAobGEgfHwgIXRva3lvKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogIiArIGxhWm9uZSArICIgaW4gSlAgPSAiICsgbGEpOworICAgICAgICAgICAgZXJybG4oIkZBSUw6ICIgKyB0b2t5b1pvbmUgKyAiIGluIEpQID0gIiArIHRva3lvKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy9lb2YKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC90cmFuc2xpdC9Db21wb3VuZFRyYW5zbGl0ZXJhdG9yVGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3RyYW5zbGl0L0NvbXBvdW5kVHJhbnNsaXRlcmF0b3JUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYzQ0NzE3YgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC90cmFuc2xpdC9Db21wb3VuZFRyYW5zbGl0ZXJhdG9yVGVzdC5qYXZhCkBAIC0wLDAgKzEsMjg4IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvdHJhbnNsaXQvQ29tcG91bmRUcmFuc2xpdGVyYXRvclRlc3QuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8yNSAyMjo0Mzo1NyAkIAorICogJFJldmlzaW9uOiAxLjYgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0LnRyYW5zbGl0OworaW1wb3J0IGNvbS5pYm0uaWN1LmxhbmcuKjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0Lio7CitpbXBvcnQgY29tLmlibS5pY3UuZGV2LnRlc3QuKjsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLlV0aWxpdHk7CitpbXBvcnQgamF2YS50ZXh0Lio7CitpbXBvcnQgamF2YS51dGlsLio7CisKKworLyoqCisgKiBAdGVzdAorICogQHN1bW1hcnkgR2VuZXJhbCB0ZXN0IG9mIENvbXBvdW5kVHJhbnNsaXRlcmF0b3IKKyAqLworcHVibGljIGNsYXNzIENvbXBvdW5kVHJhbnNsaXRlcmF0b3JUZXN0IGV4dGVuZHMgVGVzdEZtd2sgeworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIG5ldyBDb21wb3VuZFRyYW5zbGl0ZXJhdG9yVGVzdCgpLnJ1bihhcmdzKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0Q29uc3RydWN0aW9uKCl7CisgICAgICAgIGxvZ2xuKCJUZXN0aW5nIHRoZSBjb25zdHJ1Y3Rpb24gb2YgdGhlIGNvbXBvdW5kIFRyYW5zbGl0ZXJhdG9yIik7CisgICAgICAgIFN0cmluZyBuYW1lc1tdPXsiR3JlZWstTGF0aW4iLCAiTGF0aW4tRGV2YW5hZ2FyaSIsICJEZXZhbmFnYXJpLUxhdGluIiwgIkxhdGluLUdyZWVrIn07CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQxPW51bGw7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQyPW51bGw7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQzPW51bGw7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQ0PW51bGw7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHQxPVRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKG5hbWVzWzBdKTsKKyAgICAgICAgICAgIHQyPVRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKG5hbWVzWzFdKTsKKyAgICAgICAgICAgIHQzPVRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKG5hbWVzWzJdKTsKKyAgICAgICAgICAgIHQ0PVRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKG5hbWVzWzNdKTsKKyAgICAgICAgfWNhdGNoKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IFRyYW5zbGl0ZXJhdG9yIGNvbnN0cnVjdGlvbiBmYWlsZWQiKTsKKyAgICAgICAgICAgIHRocm93IGV4OworICAgICAgICB9CisgIAorICAgICAgICBUcmFuc2xpdGVyYXRvcltdIHRyYW5zYXJyYXkxPXt0MX07CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yW10gdHJhbnNhcnJheTI9e3QxLCB0NH07CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yW10gdHJhbnNhcnJheTM9e3Q0LCB0MSwgdDJ9OworICAgICAgICBUcmFuc2xpdGVyYXRvcltdIHRyYW5zYXJyYXk0PXt0MSwgdDIsIHQzLCB0NH07CisKKyAgICAgICAgVHJhbnNsaXRlcmF0b3JbXVtdIHRyYW5zYXJyYXk9e3RyYW5zYXJyYXkxLCB0cmFuc2FycmF5MiwgdHJhbnNhcnJheTMsIHRyYW5zYXJyYXk0fTsgCisgICAgICAgIGZpbmFsIFN0cmluZyBJRHNbXT17CisgICAgICAgICAgICBuYW1lc1swXSwgCisgICAgICAgICAgICBuYW1lc1swXSsiOyIrbmFtZXNbM10sIAorICAgICAgICAgICAgbmFtZXNbM10rIjsiK25hbWVzWzFdKyI7IituYW1lc1syXSwgCisgICAgICAgICAgICBuYW1lc1swXSsiOyIrbmFtZXNbMV0rIjsiK25hbWVzWzJdKyI7IituYW1lc1szXSAKKyAgICAgICAgfTsKKworICAgCisgICAgICAgIGZvcihpbnQgaT0wOyBpPDQ7IGkrKyl7CisgICAgICAgICAgICB0cnl7CisgICAgICAgICAgICAgICAgQ29tcG91bmRUcmFuc2xpdGVyYXRvciBjcGR0cmFucz1uZXcgQ29tcG91bmRUcmFuc2xpdGVyYXRvcihJRHNbaV0pOworICAgICAgICAgICAgICAgIGNwZHRyYW5zID0gbnVsbDsKKyAgICAgICAgICAgIH1jYXRjaChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZXgxKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6IGNvbnN0cnVjdGlvbiB1c2luZyBDb21wb3VuZFRyYW5zbGl0ZXJhdG9yKFN0cmluZyBJRCkgZmFpbGVkIGZvciAiICsgSURzW2ldKTsKKyAgICAgICAgICAgICAgICB0aHJvdyBleDE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRyeXsKKyAgICAgICAgICAgICAgICBDb21wb3VuZFRyYW5zbGl0ZXJhdG9yIGNwZHRyYW5zPW5ldyBDb21wb3VuZFRyYW5zbGl0ZXJhdG9yKElEc1tpXSwgVHJhbnNsaXRlcmF0b3IuRk9SV0FSRCk7CisgICAgICAgICAgICAgICAgY3BkdHJhbnMgPSBudWxsOworICAgICAgICAgICAgfWNhdGNoKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBleDIpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogY29uc3RydWN0aW9uIHVzaW5nIENvbXBvdW5kVHJhbnNsaXRlcmF0b3IoU3RyaW5nIElELCBpbnQgZGlyZWN0aW9uPUZPUldBUkQpIGZhaWxlZCBmb3IgIiArIElEc1tpXSk7CisgICAgICAgICAgICAgICAgdGhyb3cgZXgyOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0cnl7CisgICAgICAgICAgICAgICAgQ29tcG91bmRUcmFuc2xpdGVyYXRvciBjcGR0cmFucz1uZXcgQ29tcG91bmRUcmFuc2xpdGVyYXRvcihJRHNbaV0sIFRyYW5zbGl0ZXJhdG9yLlJFVkVSU0UpOworICAgICAgICAgICAgICAgIGNwZHRyYW5zID0gbnVsbDsKKyAgICAgICAgICAgIH1jYXRjaChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZXgzKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6IGNvbnN0cnVjdGlvbiB1c2luZyBDb21wb3VuZFRyYW5zbGl0ZXJhdG9yKFN0cmluZyBJRCwgaW50IGRpcmVjdGlvbj1SRVZFUlNFKSBmYWlsZWQgZm9yICIgKyBJRHNbaV0pOworICAgICAgICAgICAgICAgIHRocm93IGV4MzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdHJ5eworICAgICAgICAgICAgICAgIENvbXBvdW5kVHJhbnNsaXRlcmF0b3IgY3BkdHJhbnM9bmV3IENvbXBvdW5kVHJhbnNsaXRlcmF0b3IoSURzW2ldLCBUcmFuc2xpdGVyYXRvci5GT1JXQVJELCBudWxsKTsKKyAgICAgICAgICAgICAgICBjcGR0cmFucyA9IG51bGw7CisgICAgICAgICAgICB9Y2F0Y2goSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGV4NCkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBjb25zdHJ1Y3Rpb24gdXNpbmcgQ29tcG91bmRUcmFuc2xpdGVyYXRvcihTdHJpbmcgSUQsIGludCBkaXJlY3Rpb249Rk9SV0FSRCwiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICJVbmljb2RlRmlsdGVyIGFkb3B0ZWRGaWx0ZXI9MCkgZmFpbGVkIGZvciAiICsgSURzW2ldKTsKKyAgICAgICAgICAgICAgICB0aHJvdyBleDQ7CisgICAgICAgICAgICB9CisgIAorICAgICAgIAorICAgICAgICAgICAgdHJ5eworICAgICAgICAgICAgICAgIENvbXBvdW5kVHJhbnNsaXRlcmF0b3IgY3BkdHJhbnMyPW5ldyBDb21wb3VuZFRyYW5zbGl0ZXJhdG9yKHRyYW5zYXJyYXlbaV0sIG51bGwpOworICAgICAgICAgICAgICAgIGNwZHRyYW5zMiA9IG51bGw7CisgICAgICAgICAgICB9Y2F0Y2goSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGV4NSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBDb25zdHJ1Y3Rpb24gdXNpbmcgQ29tcG91bmRUcmFuc2xpdGVyYXRvcihUcmFuc2xpdGVyYXRvciB0cmFuc2xpdGVyYXRvcnNbXSwiICsKKyAgICAgICAgICAgICAgICAgICAgICAgIlVuaWNvZGVGaWx0ZXIgYWRvcHRlZEZpbHRlciA9IDApICBmYWlsZWQiKTsKKyAgICAgICAgICAgICAgICB0aHJvdyBleDU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIAorICAgICAgICB9CisgICAKKyAgICB9CisgCisgICAgcHVibGljIHZvaWQgVGVzdEdldFRyYW5zbGl0ZXJhdG9yKCl7CisgICAgICAgIGxvZ2xuKCJUZXN0aW5nIHRoZSBnZXRUcmFuc2xpdGVyYXRvcigpIEFQSSBvZiBDb21wb3VuZFRyYW5zbGl0ZXJhdG9yIik7CisgICAgICAgIFN0cmluZyBJRD0iTGF0aW4tR3JlZWs7R3JlZWstTGF0aW47TGF0aW4tRGV2YW5hZ2FyaTtEZXZhbmFnYXJpLUxhdGluO0xhdGluLUN5cmlsbGljO0N5cmlsbGljLUxhdGluO0FueS1IZXg7SGV4LUFueSI7CisgICAgICAgIENvbXBvdW5kVHJhbnNsaXRlcmF0b3IgY3QxPW51bGw7CisgICAgICAgIHRyeXsKKyAgICAgICAgICAgIGN0MT1uZXcgQ29tcG91bmRUcmFuc2xpdGVyYXRvcihJRCk7CisgICAgICAgIH1jYXRjaChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWFlKSB7CisgICAgICAgICAgICBlcnJsbigiQ29tcG91bmRUcmFuc2xpdGVyYXRvciBjb25zdHJ1Y3Rpb24gZmFpbGVkIGZvciBJRD0iICsgSUQpOworICAgICAgICAgICAgdGhyb3cgaWFlOworICAgICAgICAgfQorICAgICAgICBpbnQgY291bnQ9Y3QxLmdldENvdW50KCk7CisgICAgICAgIFN0cmluZyBhcnJheVtdPXNwbGl0KElELCAnOycpOworICAgICAgICBpZiAoY291bnQgIT0gYXJyYXkubGVuZ3RoKSB7CisgICAgICAgICAgICBlcnJsbigiRXJyb3I6IGdldENvdW50KCkgZmFpbGVkLiBFeHBlY3RlZDoiICsgYXJyYXkubGVuZ3RoICsgIiBnb3Q6IiArIGNvdW50KTsKKyAgICAgICAgfQorICAgICAgICBmb3IoaW50IGk9MDsgaSA8IGNvdW50OyBpKyspeworICAgICAgICAgICAgU3RyaW5nIGNoaWxkPSBjdDEuZ2V0VHJhbnNsaXRlcmF0b3IoaSkuZ2V0SUQoKTsKKyAgICAgICAgICAgIGlmKCFjaGlsZC5lcXVhbHMoYXJyYXlbaV0pKXsKKyAgICAgICAgICAgICAgICBlcnJsbigiRXJyb3IgZ2V0VHJhbnNsaXRlcmF0b3IoKSBmYWlsZWQ6IEV4cGVjdGVkLT4iICsgYXJyYXlbaV0gKyAiIEdvdC0+IiArIGNoaWxkKTsKKyAgICAgICAgICAgIH1lbHNlIHsKKyAgICAgICAgICAgICAgICBsb2dsbigiT0s6IGdldFRyYW5zbGl0ZXJhdG9yKCkgcGFzc2VkOiBFeHBlY3RlZC0+IiArIGFycmF5W2ldICsgIiBHb3QtPiIgKyBjaGlsZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAKKyAgICB9CisgCisgICAgICAgCisgICAgcHVibGljIHZvaWQgVGVzdFRyYW5zbGl0ZXJhdGUoKXsKKyAgICAgICAgbG9nbG4oIlRlc3RpbmcgdGhlIGhhbmRsZVRyYW5zbGl0ZXJhdGUoKSBBUEkgb2YgQ29tcG91bmRUcmFuc2xpdGVyYXRvciIpOworICAgICAgICBDb21wb3VuZFRyYW5zbGl0ZXJhdG9yIGN0MT1udWxsOworICAgICAgICB0cnl7CisgICAgICAgICAgICBjdDE9bmV3IENvbXBvdW5kVHJhbnNsaXRlcmF0b3IoIkFueS1IZXg7SGV4LUFueSIpOworICAgICAgICB9Y2F0Y2goSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlhZSl7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogY29uc3RydWN0aW9uIHVzaW5nIENvbXBvdW5kVHJhbnNsaXRlcmF0b3IoU3RyaW5nIElEKSBmYWlsZWQgZm9yICIgKyAiQW55LUhleDtIZXgtQW55Iik7CisgICAgICAgICAgICB0aHJvdyBpYWU7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgU3RyaW5nIHM9ImFiY2FiYyI7CisgICAgICAgIGV4cGVjdChjdDEsIHMsIHMpOworICAgICAgICBUcmFuc2xpdGVyYXRvci5Qb3NpdGlvbiBpbmRleCA9IG5ldyBUcmFuc2xpdGVyYXRvci5Qb3NpdGlvbigpOworICAgICAgICBSZXBsYWNlYWJsZVN0cmluZyByc291cmNlMj1uZXcgUmVwbGFjZWFibGVTdHJpbmcocyk7CisgICAgICAgIFN0cmluZyBleHBlY3RlZFJlc3VsdD1zOworICAgICAgICBjdDEudHJhbnNsaXRlcmF0ZShyc291cmNlMiwgaW5kZXgpOworICAgICAgICBjdDEuZmluaXNoVHJhbnNsaXRlcmF0aW9uKHJzb3VyY2UyLCBpbmRleCk7CisgICAgICAgIFN0cmluZyByZXN1bHQ9cnNvdXJjZTIudG9TdHJpbmcoKTsKKyAgICAgICAgZXhwZWN0QXV4KGN0MS5nZXRJRCgpICsgIjpSZXBsYWNlYWJsZVN0cmluZywgaW5kZXgoMCwwLDAsMCkiLCBzICsgIi0+IiArIHJzb3VyY2UyLCByZXN1bHQuZXF1YWxzKGV4cGVjdGVkUmVzdWx0KSwgZXhwZWN0ZWRSZXN1bHQpOworICAgICAKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IuUG9zaXRpb24gaW5kZXgyID0gbmV3IFRyYW5zbGl0ZXJhdG9yLlBvc2l0aW9uKDEsMywyLDMpOworICAgICAgICBSZXBsYWNlYWJsZVN0cmluZyByc291cmNlMz1uZXcgUmVwbGFjZWFibGVTdHJpbmcocyk7CisgICAgICAgIGN0MS50cmFuc2xpdGVyYXRlKHJzb3VyY2UzLCBpbmRleDIpOyAKKyAgICAgICAgY3QxLmZpbmlzaFRyYW5zbGl0ZXJhdGlvbihyc291cmNlMywgaW5kZXgyKTsKKyAgICAgICAgcmVzdWx0PXJzb3VyY2UzLnRvU3RyaW5nKCk7CisgICAgICAgIGV4cGVjdEF1eChjdDEuZ2V0SUQoKSArICI6U3RyaW5nLCBpbmRleDIoMSwyLDIsMykiLCBzICsgIi0+IiArIHJzb3VyY2UzLCByZXN1bHQuZXF1YWxzKGV4cGVjdGVkUmVzdWx0KSwgZXhwZWN0ZWRSZXN1bHQpOworCisgICAgICAgCisgICAgICAgIFN0cmluZyBEYXRhW109eworICAgICAgICAgICAgIC8vSUQsIGlucHV0IHN0cmluZywgdHJhbnNsaXRlcmF0ZWQgc3RyaW5nCisgICAgICAgICAgICAgIkFueS1IZXg7SGV4LUFueTtBbnktSGV4IiwgICAgICJoZWxsbyIsICAiXFx1MDA2OFxcdTAwNjVcXHUwMDZDXFx1MDA2Q1xcdTAwNkYiLCAKKyAgICAgICAgICAgICAiQW55LUhleDtIZXgtQW55IiwgICAgICAgICAgICAgICAgICJoZWxsbyEgSG93IGFyZSB5b3U/IiwgICJoZWxsbyEgSG93IGFyZSB5b3U/IiwKKyAgICAgICAgICAgICAiRGV2YW5hZ2FyaS1MYXRpbjtMYXRpbi1EZXZhbmFnYXJpIiwgICAgICAgIlx1MDkyRFx1MDk0OCdcdTA5MzAnXHUwOTM1IiwgICJcdTA5MkRcdTA5NDhcdTA5MzBcdTA5MzUiLCAvLyBxdW90ZXMgbG9zdAorICAgICAgICAgICAgICJMYXRpbi1DeXJpbGxpYztDeXJpbGxpYy1MYXRpbiIsICAgICAgICAgICAiYSdiJ2snZCdlJ2YnZydoJ2knaidTaGNoJ3NoY2gnemgnaCIsICJhJ2InaydkJ2UnZidnJ2gnaSdqJ1NoY2gnc2hjaCd6aCdoIiwKKyAgICAgICAgICAgICAiTGF0aW4tR3JlZWs7R3JlZWstTGF0aW4iLCAgICAgICAgICAgICAgICAgIkFCR2FiZ0FLTE1OIiwgIkFCR2FiZ0FLTE1OIiwKKyAgICAgICAgICAgICAvLyJMYXRpbi1BcmFiaWM7QXJhYmljLUxhdGluIiwgICAgICAgICAgICAgICAiQWQncidhJ2InaSdrJ2RoJ2RkJ2doIiwgIkFkcmFiaWtkaGRkZ2giLAorICAgICAgICAgICAgICJIaXJhZ2FuYS1LYXRha2FuYSIsICAgICAgICAgICAgICAgICAgICAgICAiXHUzMDQxXHUzMDhmXHUzMDk5XHUzMDZlXHUzMDRiXHUzMDkyXHUzMDk5IiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTMwQTFcdTMwZjdcdTMwY2VcdTMwYWJcdTMwZmEiLCAgCisgICAgICAgICAgICAgIkhpcmFnYW5hLUthdGFrYW5hO0thdGFrYW5hLUhpcmFnYW5hIiwgICAgICJcdTMwNDFcdTMwOGZcdTMwOTlcdTMwNmVcdTMwNGJcdTMwNTEiLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MzA0MVx1MzA4Zlx1MzA5OVx1MzA2ZVx1MzA0Ylx1MzA1MSIsCisgICAgICAgICAgICAgIkthdGFrYW5hLUhpcmFnYW5hO0hpcmFnYW5hLUthdGFrYW5hIiwgICAgICJcdTMwQTFcdTMwZjdcdTMwY2VcdTMwZjVcdTMwZjYiLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MzBBMVx1MzBmN1x1MzBjZVx1MzBhYlx1MzBiMSIsICAKKyAgICAgICAgICAgICAiTGF0aW4tS2F0YWthbmE7S2F0YWthbmEtTGF0aW4iLCAgICAgICAgICAgICAgICAgICAidmF2aXZ1dmV2b2h1eml6dXpvbmludW5hc2VzdXplenUiLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhdml2dXZldm9odXppenV6b25pbnVuYXNlc3V6ZXp1IiwgIAorICAgICAgICB9OworICAgICAgICBDb21wb3VuZFRyYW5zbGl0ZXJhdG9yIGN0Mj1udWxsOworICAgICAgICBmb3IoaW50IGk9MDsgaTxEYXRhLmxlbmd0aDsgaSs9Myl7CisgICAgICAgICAgICB0cnl7CisgICAgICAgICAgICAgICAgY3QyPW5ldyBDb21wb3VuZFRyYW5zbGl0ZXJhdG9yKERhdGFbaSswXSk7CisgICAgICAgICAgICB9Y2F0Y2goSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlhZTIpeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBDb21wb3VuZFRyYW5zbGl0ZXJhdG9yIGNvbnN0cnVjdGlvbiBmYWlsZWQgZm9yICIgKyBEYXRhW2krMF0pOworICAgICAgICAgICAgICAgIHRocm93IGlhZTI7CisgICAgICAgICAgICB9CisgICAgICAgIGV4cGVjdChjdDIsIERhdGFbaSsxXSwgRGF0YVtpKzJdKTsKKyAgICAgICAgfQorICAgCisgICAgfQorIAorCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gU3VwcG9ydCBtZXRob2RzCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAgLyoqCisgICAgICogU3BsaXRzIGEgc3RyaW5nLAorICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nW10gc3BsaXQoU3RyaW5nIHMsIGNoYXIgZGl2aWRlcikgeworICAgICAgCisJLy8gc2VlIGhvdyBtYW55IHRoZXJlIGFyZQorICAgICAgICBpbnQgY291bnQgPSAxOworCWZvciAoaW50IGkgPSAwOyBpIDwgcy5sZW5ndGgoKTsgKytpKSB7CisJICAgaWYgKHMuY2hhckF0KGkpID09IGRpdmlkZXIpICsrY291bnQ7CisJfQorCSAgICAKKwkvLyBtYWtlIGFuIGFycmF5IHdpdGggdGhlbQorCVN0cmluZ1tdIHJlc3VsdCA9IG5ldyBTdHJpbmdbY291bnRdOworCWludCBsYXN0ID0gMDsKKwlpbnQgY3VycmVudCA9IDA7CisJaW50IGk7CisJZm9yIChpID0gMDsgaSA8IHMubGVuZ3RoKCk7ICsraSkgeworCSAgICBpZiAocy5jaGFyQXQoaSkgPT0gZGl2aWRlcikgeworCSAgICAgICAgcmVzdWx0W2N1cnJlbnQrK10gPSBzLnN1YnN0cmluZyhsYXN0LGkpOworCSAgICAgICAgbGFzdCA9IGkrMTsKKwkgICAgfQorCX0KKwlyZXN1bHRbY3VycmVudCsrXSA9IHMuc3Vic3RyaW5nKGxhc3QsaSk7CisJcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgZXhwZWN0KENvbXBvdW5kVHJhbnNsaXRlcmF0b3IgdCwgU3RyaW5nIHNvdXJjZSwgU3RyaW5nIGV4cGVjdGVkUmVzdWx0KSB7CisgICAgICAgIFN0cmluZyByZXN1bHQgPSB0LnRyYW5zbGl0ZXJhdGUoc291cmNlKTsKKyAgICAgICAgZXhwZWN0QXV4KHQuZ2V0SUQoKSArICI6U3RyaW5nIiwgc291cmNlLCByZXN1bHQsIGV4cGVjdGVkUmVzdWx0KTsKKworICAgICAgICBSZXBsYWNlYWJsZVN0cmluZyByc291cmNlID0gbmV3IFJlcGxhY2VhYmxlU3RyaW5nKHNvdXJjZSk7CisgICAgICAgIHQudHJhbnNsaXRlcmF0ZShyc291cmNlKTsKKyAgICAgICAgcmVzdWx0ID0gcnNvdXJjZS50b1N0cmluZygpOworICAgICAgICBleHBlY3RBdXgodC5nZXRJRCgpICsgIjpSZXBsYWNlYWJsZSIsIHNvdXJjZSwgcmVzdWx0LCBleHBlY3RlZFJlc3VsdCk7CisKKyAgICAgICAgLy8gVGVzdCBrZXlib2FyZCAoaW5jcmVtZW50YWwpIHRyYW5zbGl0ZXJhdGlvbiAtLSB0aGlzIHJlc3VsdAorICAgICAgICAvLyBtdXN0IGJlIHRoZSBzYW1lIGFmdGVyIHdlIGZpbmFsaXplIChzZWUgYmVsb3cpLgorICAgICAgICByc291cmNlLnJlcGxhY2UoMCwgcnNvdXJjZS5sZW5ndGgoKSwgIiIpOworICAgICAgICBUcmFuc2xpdGVyYXRvci5Qb3NpdGlvbiBpbmRleCA9IG5ldyBUcmFuc2xpdGVyYXRvci5Qb3NpdGlvbigpOworICAgICAgICBTdHJpbmdCdWZmZXIgbG9nID0gbmV3IFN0cmluZ0J1ZmZlcigpOworCisgICAgICAgIGZvciAoaW50IGk9MDsgaTxzb3VyY2UubGVuZ3RoKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKGkgIT0gMCkgeworICAgICAgICAgICAgICAgIGxvZy5hcHBlbmQoIiArICIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbG9nLmFwcGVuZChzb3VyY2UuY2hhckF0KGkpKS5hcHBlbmQoIiAtPiAiKTsKKyAgICAgICAgICAgIHQudHJhbnNsaXRlcmF0ZShyc291cmNlLCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcudmFsdWVPZihzb3VyY2UuY2hhckF0KGkpKSk7CisgICAgICAgICAgICAvLyBBcHBlbmQgdGhlIHN0cmluZyBidWZmZXIgd2l0aCBhIHZlcnRpY2FsIGJhciAnfCcgd2hlcmUKKyAgICAgICAgICAgIC8vIHRoZSBjb21taXR0ZWQgaW5kZXggaXMuCisgICAgICAgICAgICBTdHJpbmcgcyA9IHJzb3VyY2UudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIGxvZy5hcHBlbmQocy5zdWJzdHJpbmcoMCwgaW5kZXguc3RhcnQpKS4KKyAgICAgICAgICAgICAgICBhcHBlbmQoJ3wnKS4KKyAgICAgICAgICAgICAgICBhcHBlbmQocy5zdWJzdHJpbmcoaW5kZXguc3RhcnQpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gQXMgYSBmaW5hbCBzdGVwIGluIGtleWJvYXJkIHRyYW5zbGl0ZXJhdGlvbiwgd2UgbXVzdCBjYWxsCisgICAgICAgIC8vIHRyYW5zbGl0ZXJhdGUgdG8gZmluaXNoIG9mZiBhbnkgcGVuZGluZyBwYXJ0aWFsIG1hdGNoZXMgdGhhdAorICAgICAgICAvLyB3ZXJlIHdhaXRpbmcgZm9yIG1vcmUgaW5wdXQuCisgICAgICAgIHQuZmluaXNoVHJhbnNsaXRlcmF0aW9uKHJzb3VyY2UsIGluZGV4KTsKKyAgICAgICAgcmVzdWx0ID0gcnNvdXJjZS50b1N0cmluZygpOworICAgICAgICBsb2cuYXBwZW5kKCIgPT4gIikuYXBwZW5kKHJzb3VyY2UudG9TdHJpbmcoKSk7CisgICAgICAgIGV4cGVjdEF1eCh0LmdldElEKCkgKyAiOktleWJvYXJkIiwgbG9nLnRvU3RyaW5nKCksCisgICAgICAgICAgICAgICAgIHJlc3VsdC5lcXVhbHMoZXhwZWN0ZWRSZXN1bHQpLAorICAgICAgICAgICAgICAgICBleHBlY3RlZFJlc3VsdCk7CisKKyAgICB9CisgICAgcHJpdmF0ZSB2b2lkIGV4cGVjdEF1eChTdHJpbmcgdGFnLCBTdHJpbmcgc291cmNlLAorICAgICAgICAgICAgICAgICAgU3RyaW5nIHJlc3VsdCwgU3RyaW5nIGV4cGVjdGVkUmVzdWx0KSB7CisgICAgICAgIGV4cGVjdEF1eCh0YWcsIHNvdXJjZSArICIgLT4gIiArIHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgcmVzdWx0LmVxdWFscyhleHBlY3RlZFJlc3VsdCksCisgICAgICAgICAgICAgICAgIGV4cGVjdGVkUmVzdWx0KTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgZXhwZWN0QXV4KFN0cmluZyB0YWcsIFN0cmluZyBzdW1tYXJ5LCBib29sZWFuIHBhc3MsIFN0cmluZyBleHBlY3RlZFJlc3VsdCkgeworICAgICAgICBpZiAocGFzcykgeworICAgICAgICAgICAgbG9nbG4oIigiICsgdGFnICsgIikgIiArIFV0aWxpdHkuZXNjYXBlKHN1bW1hcnkpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiAoIiArIHRhZysgIikgIgorICAgICAgICAgICAgICAgICsgVXRpbGl0eS5lc2NhcGUoc3VtbWFyeSkKKyAgICAgICAgICAgICAgICArICIsIGV4cGVjdGVkICIgKyBVdGlsaXR5LmVzY2FwZShleHBlY3RlZFJlc3VsdCkpOworICAgICAgICB9CisgICAgfSAgCit9CisKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC90cmFuc2xpdC9FcnJvclRlc3QuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC90cmFuc2xpdC9FcnJvclRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44NzdjYmZkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3RyYW5zbGl0L0Vycm9yVGVzdC5qYXZhCkBAIC0wLDAgKzEsMjI3IEBACisvKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3RyYW5zbGl0L0Vycm9yVGVzdC5qYXZhLHYgJAorICogJERhdGU6IDIwMDIvMDgvMTMgMjI6MDc6NTggJAorICogJFJldmlzaW9uOiAxLjUgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3QudHJhbnNsaXQ7CitpbXBvcnQgY29tLmlibS5pY3UuZGV2LnRlc3QuKjsKK2ltcG9ydCBjb20uaWJtLmljdS5sYW5nLio7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC4qOworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuVXRpbGl0eTsKK2ltcG9ydCBqYXZhLmlvLio7CitpbXBvcnQgamF2YS50ZXh0LlBhcnNlRXhjZXB0aW9uOworCisvKioKKyAqIEB0ZXN0CisgKiBAc3VtbWFyeSBFcnJvciBjb25kaXRpb24gdGVzdCBvZiBUcmFuc2xpdGVyYXRvcgorICovCitwdWJsaWMgY2xhc3MgRXJyb3JUZXN0IGV4dGVuZHMgVGVzdEZtd2sgeworICAgIAorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBuZXcgRXJyb3JUZXN0KCkucnVuKGFyZ3MpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RUcmFuc2xpdGVyYXRvckVycm9ycygpIHsKKyAgICAgICAgU3RyaW5nIHRyYW5zPSJMYXRpbi1HcmVlayI7CisgICAgICAgIFN0cmluZyBib2d1c0lEPSJMQVRJTkdSRUVLLUdSRUVLTEFUSU4iOworICAgICAgICBTdHJpbmcgbmV3SUQ9IkJvZ3VzLUxhdGluIjsKKyAgICAgICAgU3RyaW5nIG5ld0lEUnVsZXM9Inp6eiA+IFo7IGYgPD4gcGgiOworICAgICAgICBTdHJpbmcgYm9ndXNSdWxlcz0iYSB9IFtiLWcgbS1wICI7CisgICAgICAgIFJlcGxhY2VhYmxlU3RyaW5nIHRlc3RTdHJpbmc9IG5ldyBSZXBsYWNlYWJsZVN0cmluZygiQSBxdWljayBmb3gganVtcGVkIG92ZXIgdGhlIGxhenkgZG9nLiIpOworICAgICAgICBTdHJpbmcgaW5zZXJ0U3RyaW5nPSJjYXRzIGFuZCBkb2dzIjsKKyAgICAgICAgaW50IHN0b3BwZWRBdCA9IDAsIGxlbjsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IuUG9zaXRpb24gcG9zID0gbmV3IFRyYW5zbGl0ZXJhdG9yLlBvc2l0aW9uKCk7CisKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgdD0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UodHJhbnMsIFRyYW5zbGl0ZXJhdG9yLkZPUldBUkQpOworICAgICAgICBpZih0PT1udWxsKXsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBjb25zdHJ1Y3Rpb24gb2YgTGF0aW4tR3JlZWsiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBsZW4gPSB0ZXN0U3RyaW5nLmxlbmd0aCgpOworICAgICAgICBzdG9wcGVkQXQgPSB0LnRyYW5zbGl0ZXJhdGUodGVzdFN0cmluZywgMCwgMTAwKTsKKyAgICAgICAgaWYgKHN0b3BwZWRBdCAhPSAtMSkgeworICAgICAgICAgICBlcnJsbigiRkFJTDogT3V0IG9mIGJvdW5kcyBjaGVjayBmYWlsZWQgKDEpLiIpOworICAgICAgICB9IGVsc2UgaWYgKHRlc3RTdHJpbmcubGVuZ3RoKCkgIT0gbGVuKSB7CisgICAgICAgICAgIHRlc3RTdHJpbmc9IG5ldyBSZXBsYWNlYWJsZVN0cmluZygiQSBxdWljayBmb3gganVtcGVkIG92ZXIgdGhlIGxhenkgZG9nLiIpOyAgICAgICAgCisgICAgICAgICAgIGVycmxuKCJGQUlMOiBUcmFuc2xpdGVyYXRlIGZhaWxzIGFuZCB0aGUgdGFyZ2V0IHN0cmluZyB3YXMgbW9kaWZpZWQuIik7CisgICAgICAgIH0KKyAgICAgICAgc3RvcHBlZEF0ID0gdC50cmFuc2xpdGVyYXRlKHRlc3RTdHJpbmcsIDEwMCwgdGVzdFN0cmluZy5sZW5ndGgoKS0xKTsKKyAgICAgICAgaWYgKHN0b3BwZWRBdCAhPSAtMSkgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IE91dCBvZiBib3VuZHMgY2hlY2sgZmFpbGVkICgyKS4iKTsKKyAgICAgICAgfSBlbHNlIGlmICh0ZXN0U3RyaW5nLmxlbmd0aCgpICE9IGxlbikgeworICAgICAgICAgICAgdGVzdFN0cmluZz1uZXcgUmVwbGFjZWFibGVTdHJpbmcoIkEgcXVpY2sgZm94IGp1bXBlZCBvdmVyIHRoZSBsYXp5IGRvZy4iKTsgICAgICAgIAorICAgICAgICAgICAgZXJybG4oIkZBSUw6IFRyYW5zbGl0ZXJhdGUgZmFpbHMgYW5kIHRoZSB0YXJnZXQgc3RyaW5nIHdhcyBtb2RpZmllZC4iKTsKKwl9CisgICAgICAgIHBvcy5zdGFydCA9IDEwMDsKKyAgICAgICAgcG9zLmxpbWl0ID0gdGVzdFN0cmluZy5sZW5ndGgoKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHQudHJhbnNsaXRlcmF0ZSh0ZXN0U3RyaW5nLCBwb3MpOworICAgICAgICAgICAgZXJybG4oIkZBSUw6IFN0YXJ0IG9mZnNldCBpcyBvdXQgb2YgYm91bmRzLCBlcnJvciBub3QgcmVwb3J0ZWQuIik7CisgICAgICAgIH0gY2F0Y2goSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKwkgICAgbG9nbG4oIlN0YXJ0IG9mZnNldCBpcyBvdXQgb2YgYm91bmRzIGFuZCBkZXRlY3RlZC4iKTsKKyAgICAgICAgfQorICAgICAgICBwb3MubGltaXQgPSAxMDA7CisgICAgICAgIHBvcy5zdGFydCA9IDA7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHQudHJhbnNsaXRlcmF0ZSh0ZXN0U3RyaW5nLCBwb3MgKTsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBMaW1pdCBvZmZzZXQgaXMgb3V0IG9mIGJvdW5kcywgZXJyb3Igbm90IHJlcG9ydGVkLlxuIik7CisgICAgICAgIH0gY2F0Y2goSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKwkgICAgbG9nbG4oIlN0YXJ0IG9mZnNldCBpcyBvdXQgb2YgYm91bmRzIGFuZCBkZXRlY3RlZC4iKTsKKyAgICAgICAgfQorICAgICAgICBsZW4gPSBwb3MuY29udGV4dExpbWl0ID0gdGVzdFN0cmluZy5sZW5ndGgoKTsKKyAgICAgICAgcG9zLmNvbnRleHRTdGFydCA9IDA7CisgICAgICAgIHBvcy5saW1pdCA9IGxlbiAtIDE7CisgICAgICAgIHBvcy5zdGFydCA9IDU7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB0LnRyYW5zbGl0ZXJhdGUodGVzdFN0cmluZywgcG9zLCBpbnNlcnRTdHJpbmcpOworICAgICAgICAgICAgaWYgKGxlbiA9PSBwb3MubGltaXQpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogVGVzdCBpbnNlcnRpb24gd2l0aCBzdHJpbmc6IHRoZSB0cmFuc2xpdGVyYXRpb24gcG9zaXRpb24gbGltaXQgZGlkbid0IGNoYW5nZSBhcyBleHBlY3RlZC4iKTsKKwkgICAgfQorICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkluc2VydGlvbiB0ZXN0IHdpdGggc3RyaW5nIGZhaWxlZCBmb3Igc29tZSByZWFzb24uIik7CisJfQorICAgICAgICBwb3MuY29udGV4dFN0YXJ0ID0gMDsKKyAgICAgICAgcG9zLmNvbnRleHRMaW1pdCA9IHRlc3RTdHJpbmcubGVuZ3RoKCk7CisgICAgICAgIHBvcy5saW1pdCA9IHRlc3RTdHJpbmcubGVuZ3RoKCkgLTE7CisgICAgICAgIHBvcy5zdGFydCA9IDU7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB0LnRyYW5zbGl0ZXJhdGUodGVzdFN0cmluZywgcG9zLCAweDAwNjEpOworICAgICAgICAgICAgaWYgKGxlbiA9PSBwb3MubGltaXQpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogVGVzdCBpbnNlcnRpb24gd2l0aCBjaGFyYWN0ZXI6IHRoZSB0cmFuc2xpdGVyYXRpb24gcG9zaXRpb24gbGltaXQgZGlkbid0IGNoYW5nZSBhcyBleHBlY3RlZC4iKTsKKwkgICAgfQorICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IEluc2VydGlvbiB0ZXN0IHdpdGggVVRGLTE2IGNvZGUgcG9pbnQgZmFpbGVkIGZvciBzb21lIHJlYXNvbi4iKTsKKwl9CisgICAgICAgIGxlbiA9IHBvcy5saW1pdCA9IHRlc3RTdHJpbmcubGVuZ3RoKCk7CisgICAgICAgIHBvcy5jb250ZXh0U3RhcnQgPSAwOworICAgICAgICBwb3MuY29udGV4dExpbWl0ID0gdGVzdFN0cmluZy5sZW5ndGgoKSAtIDE7CisgICAgICAgIHBvcy5zdGFydCA9IDU7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB0LnRyYW5zbGl0ZXJhdGUodGVzdFN0cmluZywgcG9zLCBpbnNlcnRTdHJpbmcpOworICAgICAgICAgICAgZXJybG4oIkZBSUw6IE91dCBvZiBib3VuZHMgY2hlY2sgZmFpbGVkICgzKS4iKTsKKyAgICAgICAgICAgIGlmICh0ZXN0U3RyaW5nLmxlbmd0aCgpICE9IGxlbikgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBUaGUgaW5wdXQgc3RyaW5nIHdhcyBtb2RpZmllZCB0aG91Z2ggdGhlIG9mZnNldHMgd2VyZSBvdXQgb2YgYm91bmRzLiIpOworCSAgICB9CisgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBsb2dsbigiSW5zZXJ0aW9uIHRlc3Qgd2l0aCBvdXQgb2YgYm91bmRzIGluZGV4ZXMuIik7CisJfQorICAgICAgICBUcmFuc2xpdGVyYXRvciB0MSA9IG51bGw7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB0MT0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoYm9ndXNJRCwgVHJhbnNsaXRlcmF0b3IuRk9SV0FSRCk7CisgICAgICAgICAgICBpZih0MSE9bnVsbCkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBjb25zdHJ1Y3Rpb24gb2YgYm9ndXMgSUQgXCJMQVRJTkdSRUVLLUdSRUVLTEFUSU5cIiIpOyAKKwkgICAgfQorCX0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7IH0KKworICAgICAgICAvL3RyeSB7IC8vIHVubmVlZGVkIC0gRXhjZXB0aW9uIGNhbm5vdCBiZSB0aHJvd24KKyAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQyID0gbmV3IFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yKG5ld0lELCBuZXdJRFJ1bGVzKTsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgVHJhbnNsaXRlcmF0b3IgdDMgPSB0Mi5nZXRJbnZlcnNlKCk7CisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6IFRoZSBuZXdJRCB0cmFuc2xpdGVyYXRvciB3YXMgbm90IHJlZ2lzdGVyZWQgc28gY3JlYXRlSW52ZXJzZSBzaG91bGQgZmFpbC4iKTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsgfQorICAgICAgICAvL30gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7IH0KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQ0ID0gVHJhbnNsaXRlcmF0b3IuY3JlYXRlRnJvbVJ1bGVzKG5ld0lELCBib2d1c1J1bGVzLCBUcmFuc2xpdGVyYXRvci5GT1JXQVJEKTsKKyAgICAgICAgICAgIGlmICh0NCAhPSBudWxsICkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBUaGUgcnVsZXMgaXMgbWFsZm9ybWVkIGJ1dCBlcnJvciB3YXMgbm90IHJlcG9ydGVkLiIpOyAKKwkgICAgfQorCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7IH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0VW5pY29kZVNldEVycm9ycygpIHsKKyAgICAgICAgU3RyaW5nIGJhZFBhdHRlcm49IltbOkw6XS1bMHgwMzAwLTB4MDQwMF0iOworICAgICAgICBVbmljb2RlU2V0IHNldCA9IG5ldyBVbmljb2RlU2V0KCk7CisgICAgICAgIFN0cmluZyByZXN1bHQ7CisKKyAgICAgICAgaWYgKCFzZXQuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogVGhlIGRlZmF1bHQgY3RvciBvZiBVbmljb2RlU2V0IGNyZWF0ZWQgYSBub24tZW1wdHkgb2JqZWN0LiIpOworICAgICAgICB9CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBzZXQuYXBwbHlQYXR0ZXJuKGJhZFBhdHRlcm4pOworICAgICAgICAgICAgZXJybG4oIkZBSUw6IEFwcGxpZWQgYSBiYWQgcGF0dGVybiB0byB0aGUgVW5pY29kZVNldCBvYmplY3Qgb2theS4iKTsKKyAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGxvZ2xuKCJUZXN0IGFwcGx5aW5nIHdpdGggdGhlIGJhZCBwYXR0ZXJuLiIpOworCX0KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFVuaWNvZGVTZXQgc2V0MSA9IG5ldyBVbmljb2RlU2V0KGJhZFBhdHRlcm4pOworICAgICAgICAgICAgZXJybG4oIkZBSUw6IENyZWF0ZWQgYSBVbmljb2RlU2V0IGJhc2VkIG9uIGJhZCBwYXR0ZXJucy4iKTsKKwl9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgbG9nbG4oIlRlc3QgY29uc3RydWN0aW5nIHdpdGggdGhlIGJhZCBwYXR0ZXJuLiIpOworCX0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0VW5pVG9IZXhFcnJvcnMoKSB7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQgPSBudWxsOworICAgICAgICB0cnkgeworICAgICAgICAgICAgdCA9IG5ldyBVbmljb2RlVG9IZXhUcmFuc2xpdGVyYXRvcigiIiwgdHJ1ZSwgbnVsbCk7CisgICAgICAgICAgICBpZiAodCAhPSBudWxsKSB7ICAgIAorICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBDcmVhdGVkIGEgVW5pY29kZVRvSGV4VHJhbnNsaXRlcmF0b3Igd2l0aCBhbiBlbXB0eSBwYXR0ZXJuLiIpOworCSAgICB9CisJfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsgfQorICAgICAgICB0cnkgeworICAgICAgICAgICAgdCA9IG5ldyBVbmljb2RlVG9IZXhUcmFuc2xpdGVyYXRvcigiXFx4IiwgdHJ1ZSwgbnVsbCk7CisJICAgIGlmICh0ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogQ3JlYXRlZCBhIFVuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yIHdpdGggYSBiYWQgcGF0dGVybi4iKTsKKwkgICAgfQorCX0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7IH0KKyAgICAgICAgdCA9IG5ldyBVbmljb2RlVG9IZXhUcmFuc2xpdGVyYXRvcigpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgKChVbmljb2RlVG9IZXhUcmFuc2xpdGVyYXRvcil0KS5hcHBseVBhdHRlcm4oIlxceCIpOworICAgICAgICAgICAgZXJybG4oIkZBSUw6IFVuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yOjphcHBseVBhdHRlcm4gc3VjY2VlZGVkIHdpdGggYSBiYWQgcGF0dGVybi4iKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RSQlRFcnJvcnMoKSB7CisKKyAgICAgICAgU3RyaW5nIHJ1bGVzPSJhYj55IjsKKyAgICAgICAgU3RyaW5nIGlkPSJNeVJhbmRvbS1ZUmV2ZXJzZSI7CisgICAgICAgIFN0cmluZyBnb29kUGF0dGVybj0iW1s6TDpdJltcXHUwMDAwLVxcdUZGRkZdXSI7IC8qIGFsbCBCTVAgbGV0dGVycyAqLworICAgICAgICBVbmljb2RlU2V0IHNldCA9IG51bGw7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBzZXQgPSBuZXcgVW5pY29kZVNldChnb29kUGF0dGVybik7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yIHQgPSBuZXcgUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3IoaWQsIHJ1bGVzLCBUcmFuc2xpdGVyYXRvci5SRVZFUlNFLCBzZXQpOworICAgICAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yLnJlZ2lzdGVyQ2xhc3MoaWQsIHQuZ2V0Q2xhc3MoKSwgbnVsbCk7CisgICAgICAgICAgICAgICAgVHJhbnNsaXRlcmF0b3IudW5yZWdpc3RlcihpZCk7ICAKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBUcmFuc2xpdGVyYXRvciB0MT0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoaWQsIFRyYW5zbGl0ZXJhdG9yLlJFVkVSU0UpOworICAgICAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogY29uc3RydWN0aW9uIG9mIHVucmVnaXN0ZXJlZCBJRCBzaG91bGQgaGF2ZSBmYWlsZWQuIik7CisJICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeyB9CisgICAgICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6IFdhcyBub3QgYWJsZSB0byBjcmVhdGUgYSBnb29kIFJCVCB0byB0ZXN0IHJlZ2lzdHJhdGlvbi4iKTsKKwkgICAgfQorICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IFdhcyBub3QgYWJsZSB0byBjcmVhdGUgYSBnb29kIFVuaWNvZGVTZXQgYmFzZWQgb24gdmFsaWQgcGF0dGVybnMuIik7CisgICAgICAgICAgICByZXR1cm47CisJfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RIZXhUb1VuaUVycm9ycygpIHsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgdCA9IG51bGw7CisgICAgICAgIC8vdHJ5IHsgLy8gdW5uZWVkZWQgLSBleGNlcHRpb24gY2Fubm90IGJlIHRocm93bgorICAgICAgICAgICAgdCA9IG5ldyBIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvcigiIiwgbnVsbCk7CisgICAgICAgIC8vfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgLy8gICAgZXJybG4oIkZBSUw6IENvdWxkIG5vdCBjcmVhdGUgYSBIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvciB3aXRoIGFuIGVtcHR5IHBhdHRlcm4uIik7CisgICAgICAgIC8vfQorICAgICAgICB0cnkgeworICAgICAgICAgICAgdCA9IG5ldyBIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvcigiXFx4IiwgbnVsbCk7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogQ3JlYXRlZCBhIEhleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yIHdpdGggYSBiYWQgcGF0dGVybi4iKTsKKwl9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeyB9CisKKyAgICAgICAgdCA9IG5ldyBIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvcigpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgKChIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvcil0KS5hcHBseVBhdHRlcm4oIlxceCIpOworICAgICAgICAgICAgZXJybG4oIkZBSUw6IEhleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yOjphcHBseVBhdHRlcm4gc3VjY2VlZGVkIHdpdGggYSBiYWQgcGF0dGVybi4iKTsKKwl9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeyB9CisgICAgfQorfQorCisKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC90cmFuc2xpdC9IZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvclRlc3QuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC90cmFuc2xpdC9IZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvclRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5kYWEzZGM2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3RyYW5zbGl0L0hleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yVGVzdC5qYXZhCkBAIC0wLDAgKzEsMjY5IEBACisKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC90cmFuc2xpdC9BdHRpYy9IZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvclRlc3QuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wOC8yOCAxNjo0NToxOCAkIAorICogJFJldmlzaW9uOiAxLjYgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0LnRyYW5zbGl0OworaW1wb3J0IGNvbS5pYm0uaWN1LmxhbmcuKjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0Lio7CitpbXBvcnQgY29tLmlibS5pY3UuZGV2LnRlc3QuKjsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLlV0aWxpdHk7CitpbXBvcnQgamF2YS50ZXh0Lio7CitpbXBvcnQgamF2YS51dGlsLio7CisKKworLyoqCisgKiBAdGVzdAorICogQHN1bW1hcnkgR2VuZXJhbCB0ZXN0IG9mIEhleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yCisgKi8KK3B1YmxpYyBjbGFzcyBIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvclRlc3QgZXh0ZW5kcyBUZXN0Rm13ayB7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgbmV3IEhleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yVGVzdCgpLnJ1bihhcmdzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAqIFVzZWQgYnkgVGVzdENvbnN0cnVjdGlvbigpIGFuZCBUZXN0VHJhbnNsaXRlcmF0ZS4KKyAgICAqLworICAgIFVuaWNvZGVGaWx0ZXIgSGV4RmlsdGVyPW5ldyBVbmljb2RlRmlsdGVyKCkgeworICAgICAgICBwdWJsaWMgYm9vbGVhbiBjb250YWlucyhpbnQgYykgeworICAgICAgICAgICAgaWYoYyA9PSAweDAwNjEgfHwgYyA9PSAweDAwNjMgKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgU3RyaW5nIHRvUGF0dGVybihib29sZWFuIGVzY2FwZVVucHJpbnRhYmxlKSB7CisgICAgICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIH0KKyAgICAgICAgcHVibGljIGJvb2xlYW4gbWF0Y2hlc0luZGV4VmFsdWUoaW50IHYpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgdm9pZCBhZGRNYXRjaFNldFRvKFVuaWNvZGVTZXQgdG9VbmlvblRvKSB7fQorICAgIH07CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0Q29uc3RydWN0aW9uKCl7CisgICAgICAgIGxvZ2xuKCJUZXN0aW5nIHRoZSBjb25zdHJ1Y3Rpb24gSGV4VG9Vbmljb2RlVHJhbnNsaXRlcmF0b3IoKSIpOworICAgICAgICBIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvciB0cmFuczE9bmV3IEhleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yKCk7CisgICAgICAgCisKKyAgICAgICAgbG9nbG4oIlRlc3RpbmcgdGhlIGNvc250cnVjdGlvbiBIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvcihwYXR0ZXJuKSIpOworICAgICAgICBTdHJpbmcgcGF0dGVybj0iXFxcXFUrMDAwMGFiYyI7CisgICAgICAgIHRyeXsKKyAgICAgICAgICAgIHRyYW5zMT1uZXcgSGV4VG9Vbmljb2RlVHJhbnNsaXRlcmF0b3IocGF0dGVybik7CisgICAgICAgIH1jYXRjaChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZXgyKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogSGV4VG9Vbmljb2RlVHJhbnNsaXRlcmF0b3IgY29uc3RydWN0aW9uIGZhaWxlZCB3aXRoIHBhdHRlcm49IiArIHBhdHRlcm4gKyAiIEV4Y2VwdGlvbj0gIiArIGV4Mi50b1N0cmluZygpKTsKKyAgICAgICAgfQorCisgICAgICAgIGxvZ2xuKCJUZXN0aW5nIHRoZSBjb3NudHJ1Y3Rpb24gSGV4VG9Vbmljb2RlVHJhbnNsaXRlcmF0b3IocGF0dGVybikgd2l0aCBpbGxlZ2FsIHBhdHRlcm4iKTsKKyAgICAgICAgU3RyaW5nIHBhdHRlcm4yPSJcXFgrIjsKKyAgICAgICAgdHJ5eworICAgICAgICAgICAgdHJhbnMxPW5ldyBIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvcihwYXR0ZXJuMik7CisgICAgICAgIH1jYXRjaChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZXgzKSB7CisgICAgICAgICAgICBsb2dsbigiT0s6IGNvbnN0cnVjdGlvbiB3aXRoIElsbGVnYWwgcGF0dGVybiBoYW5kbGVkIGNvcnJlY3RseSIpOworICAgICAgICB9ICAKKyAgICAgICAgCisgICAgICAgIGxvZ2xuKCJUZXN0aW5nIHRoZSBjb25zdHJ1Y3Rpb24gSGV4VG9Vbmljb2RlVHJhbnNsaXRlcmF0b3IocGF0dGVybiwgYWRvcHRlZEZpbHRlcj1udWxsKSIpOworICAgICAgICB0cnl7CisgICAgICAgICAgICB0cmFuczE9bmV3IEhleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yKHBhdHRlcm4sIG51bGwpOworICAgICAgICB9Y2F0Y2goSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGV4NCkgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IEhleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yKHBhdHRlcm4sIGFkb3B0ZWRGaWx0ZXI9bnVsbCkgY29uc3RydWN0aW9uIGZhaWxlZC4gRXhjZXB0aW9uPSAiICsgZXg0LnRvU3RyaW5nKCkpOworICAgICAgICB9CisKKyAgICAgICAgbG9nbG4oIlRlc3RpbmcgdGhlIGNvbnN0cnVjdGlvbiBIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvcihwYXR0ZXJuLCBhZG9wdGVkRmlsdGVyKSIpOworICAgICAgICB0cnl7CisgICAgICAgICAgICB0cmFuczE9bmV3IEhleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yKHBhdHRlcm4sIEhleEZpbHRlcik7CisgICAgICAgIH1jYXRjaChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZXg0KSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogSGV4VG9Vbmljb2RlVHJhbnNsaXRlcmF0b3IocGF0dGVybiwgYWRvcHRlZEZpbHRlcikgY29uc3RydWN0aW9uIGZhaWxlZC4gRXhjZXB0aW9uPSAiICsgZXg0LnRvU3RyaW5nKCkpOworICAgICAgICB9CisKKyAgICB9CisgICAgcHVibGljIHZvaWQgVGVzdFBhdHRlcm4oKXsKKyAgICAgICAgbG9nbG4oIlRlc3RpbmcgdGhlIGFwcGx5UGF0dGVybigpIGFuZCB0b1BhdHRlcm4oKSBBUEkgb2YgSGV4VG9Vbmljb2RlVHJhbnNsaXRlcmF0b3IiKTsKKyAgICAgICAgLypkZWZhdWx0IHRyYW5zbGl0ZXJhdG9yIGhhcyBwYXR0ZXJuIFxcdTAwMDAqLworICAgICAgICBIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvciB0cmFuc2RlZmF1bHQ9bmV3IEhleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yKCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgIFN0cmluZyBkZWZhdWx0cGF0dGVybj10cmFuc2RlZmF1bHQudG9QYXR0ZXJuKCk7CisgICAgICAgIFN0cmluZyBwYXR0ZXJuMT0iXFxcXFUrMDAwMCI7CisgICAgICAgIAorICAgICAgICBIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvciB0cmFuczE9bnVsbDsKKyAgICAgICAgdHJ5eworICAgICAgICAgICAgdHJhbnMxPW5ldyBIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvcihwYXR0ZXJuMSwgbnVsbCk7CisgICAgICAgIH1jYXRjaChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZXgxKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogSGV4VG9Vbmljb2RlVHJhbnNsaXRlcmF0b3IgY29uc3RydWN0aW9uIGZhaWxlZCB3aXRoIHBhdHRlcm4gPSIgKyBwYXR0ZXJuMSArCisgICAgICAgICAgICAgICAgICAgIkV4Y2VwdGlvbjoiICsgZXgxLnRvU3RyaW5nKCkpOworICAgICAgICB9CisKKyAgICAgICAgLyp0ZXN0IHRvUGF0dGVybigpICovCisgICAgICAgIGlmKHRyYW5zZGVmYXVsdC50b1BhdHRlcm4oKS5lcXVhbHModHJhbnMxLnRvUGF0dGVybigpKSA9PSB0cnVlIHx8CisgICAgICAgICAgICB0cmFuc2RlZmF1bHQudG9QYXR0ZXJuKCkuZXF1YWxzKCJcXFxcdTAwMDA7XFxcXFUwMDAwO3UrMDAwMDtVKzAwMDAiKSAhPSB0cnVlIHx8CisgICAgICAgICAgICB0cmFuczEudG9QYXR0ZXJuKCkuZXF1YWxzKHBhdHRlcm4xKSAhPSB0cnVlICl7CisgICAgICAgICAgICBlcnJsbigiRXJyb3I6IHRvUGF0dGVybigpIGZhaWxlZCIpOworICAgICAgICB9CisKKyAgICAgICAgLyphcHBseSBwYXR0ZXJucyBmb3IgdHJhbnNkZWZhdWx0Ki8KKyAgICAgICAgU3RyaW5nIHN0cj0iYWJLZiI7CisgICAgICAgIGV4cGVjdFBhdHRlcm4odHJhbnNkZWZhdWx0LCAgcGF0dGVybjEsICJcXFUrMDA2MVxcVSswMDYyXFxVKzAwNEJcXFUrMDA2NiIsIHN0cik7CisgICAgICAgIGV4cGVjdFBhdHRlcm4odHJhbnNkZWZhdWx0LCAgIlxcVSMjMDAsIiwgIlU2MSxVNjIsVTRCLFU2NiwiLCBzdHIpOworICAgICAgICBleHBlY3RQYXR0ZXJuKHRyYW5zZGVmYXVsdCwgZGVmYXVsdHBhdHRlcm4sICJcXHUwMDYxXFx1MDA2MlxcdTAwNEJcXHUwMDY2Iiwgc3RyKTsKKyAgICAgICAgZXhwZWN0UGF0dGVybih0cmFuczEsICJcXHVuaTAwMDAiLCAidW5pMDA2MXVuaTAwNjJ1bmkwMDRCdW5pMDA2NiIsIHN0cik7CisgICAgICAgIGV4cGVjdFBhdHRlcm4odHJhbnMxLCAiXFxcXFMtMDAwMC1FIiwgIlxcUy0wMDYxLUVcXFMtMDA2Mi1FXFxTLTAwNEItRVxcUy0wMDY2LUUiLCBzdHIpOworICAgICAgICAKKyAgICAgICAgZXhwZWN0UGF0dGVybih0cmFuczEsICJcXFxcUy0wMDAwLUUiLCAiXFxTLTAwNjEtRVxcUy0wMDYyLUVcXFMtMDA0Qi1FXFxTLTAwNjYtRSIsICBzdHIpOworICAgICAgICBleHBlY3RQYXR0ZXJuKHRyYW5zMSwgIlxcdSMjMDAwMCIsICJcXHUjIzAwNjFcXHUjIzAwNjIiLCAiRkFJTCIpOworICAgICAgICBleHBlY3RQYXR0ZXJuKHRyYW5zMSwgIlxcKjAwMDAiLCAgIiowMDYxKjAwNjIqMDA0QiowMDY2IiwgIHN0cik7IAorICAgICAgICBleHBlY3RQYXR0ZXJuKHRyYW5zMSwgIlxcdSMjIyMiLCAiXFx1IyMwMDYxXFx1IyMwMDYyIiwgIkZBSUwiKTsKKyAgCisKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0U2ltcGxlVHJhbnNsaXRlcmF0ZSgpeyAKKyAgICAgICAgU3RyaW5nIHBhdHRlcm4xPSJcXFxcVSswMDAwIjsKKyAgICAgICAgSGV4VG9Vbmljb2RlVHJhbnNsaXRlcmF0b3IgdHJhbnMxPW51bGw7CisgICAgICAgIHRyeXsKKyAgICAgICAgICAgIHRyYW5zMT1uZXcgSGV4VG9Vbmljb2RlVHJhbnNsaXRlcmF0b3IocGF0dGVybjEsIG51bGwpOworICAgICAgICB9Y2F0Y2goSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlhZSl7CisgICAgICAgICAgICBlcnJsbigiSGV4VG9Vbmljb2RlVHJhbnNsaXRlcmF0b3IocGF0dGVybjEsIG51bGwpIGNvbnN0cnVjdGlvbiBmYWlsZWQgd2l0aCBwYXR0ZXJuID0iIAorICAgICAgICAgICAgICAgICAgKyBwYXR0ZXJuMSArICJFeGNlcHRpb246IiArIGlhZS50b1N0cmluZygpKTsKKyAgICAgICAgfQorICAgICAgICBTdHJpbmcgc291cmNlPSJIZVxcVSswMDZDXFxVKzAwNkNcXFUrMDA2RiI7CisgICAgICAgIFN0cmluZyBleHBlY3RlZD0iSGVsbG8iOworCisgICAgICAgIGV4cGVjdFRyYW5zbGl0KHRyYW5zMSwgIjpSZXBsYWNlYWJsZSAiLCBzb3VyY2UsICAxLCBzb3VyY2UubGVuZ3RoKCksIDIsIGV4cGVjdGVkKTsgCisgICAgICAgIGV4cGVjdCh0cmFuczEsICIiLCAiXFxVKzAwNDhcXFUrMDA2NVxcVSswMDZDXFxVKzAwNkNcXFUrMDA2RiIsIGV4cGVjdGVkKTsKKworICAgICAgICBIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvciB0cmFuc2RlZmF1bHQ9bmV3IEhleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yKCk7CisgICAgICAgIAorICAgICAgICBIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvciB0cmFuczI9bnVsbDsKKyAgICAgICAgdHJ5eworICAgICAgICAgICAgdHJhbnMyPW5ldyBIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvcih0cmFuc2RlZmF1bHQudG9QYXR0ZXJuKCksIEhleEZpbHRlcik7CisgICAgICAgIH1jYXRjaChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZXgyKXsKKyAgICAgICAgICAgIGVycmxuKCJIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvcihwYXR0ZXJuMSwgSGV4RmlsdGVyKSBjb25zdHJ1Y3Rpb24gZmFpbGVkIHdpdGggcGF0dGVybiA9IiAKKyAgICAgICAgICAgICAgICAgICsgcGF0dGVybjEgKyAiRXhjZXB0aW9uOiIgKyBleDIudG9TdHJpbmcoKSk7CisgICAgICAgIH0KKyAgICAgICAgZXhwZWN0KHRyYW5zMiwgIndpdGggRmlsdGVyKDB4MDA2MSwgMHgwMDYzKSAiLCAiXHUwMDYxXHUwMDYyXHUwMDYzIiwgICAiXHUwMDYxYlx1MDA2MyIpOworICAgIH0KKyAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RUcmFuc2xpdGVyYXRlKCl7CisgICAgICAgIFN0cmluZyBEYXRhW109eworICAgICAgICAgICAgLy9wYXR0ZXJuLCBzb3VyY2UsIGluZGV4LmNvbnRleHRTdGFydCwgaW5kZXguY29udGV4dExpbWl0LCBpbmRleC5zdGFydCwgZXhwZWN0ZWRSZXN1bHQsCisgICAgICAgLy8gICAgICJVKyMjMDAiLCAgICAiYWJVKzYzIiwgIjEiLCAiNyIsICIyIiwgICJhYmMiLCAKKyAgICAgICAgICAgICJcXFxcdTAwMDAiLCAiYVxcdTAwNjJjIiwgIjEiLCAiNyIsICIxIiwgICJhYmMiLCAKKyAgICAgICAgICAgICJVbmkwMDAwIiwgICAiYWJVbmkwMDYzIiwgIjEiLCAiOSIsICIyIiwgICJhYmMiLCAKKyAgICAgICAgICAgICJVWzAwMDBdIiwgICAiaGVVWzAwNkNdVVswMDZDXW8iLCAiMCIsICIxNiIsICIyIiwgImhlbGxvIiwgCisgICAgICAgLy8gICAgICJwcmVmaXgtMDAwMC1zdWZmaXgiLCAiYXByZWZpeC0wMDYyLXN1ZmZpeHByZWZpeC0wMDYzLXN1ZmZpeCIsICIxIiwgIjM5IiwgIjEiLCAiYWJjIiwgCisgICAgICAgICAgICAiKiMjMDAqIiwgICAgImhlbGwqNkYqKjc0Kio2OCoqNjUqcmUiLCAgIjEiLCAiMjAiLCAiNCIsICJoZWxsb3RoZXJlIiwgCisKKyAgICAgICAgfTsKKyAgICAgICAgSGV4VG9Vbmljb2RlVHJhbnNsaXRlcmF0b3IgdHJhbnMxPW51bGw7CisgICAgICAgIGZvcihpbnQgaT0wOyBpPERhdGEubGVuZ3RoOyBpKz02KXsKKyAgICAgICAgICAgIHRyeXsKKyAgICAgICAgICAgICAgICB0cmFuczE9bmV3IEhleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yKERhdGFbaSswXSwgbnVsbCk7CisgICAgICAgICAgICB9Y2F0Y2goSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGV4MSl7CisgICAgICAgICAgICAgICAgZXJybG4oIkhleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yKHBhdHRlcm4xLCBudWxsKSBjb25zdHJ1Y3Rpb24gZmFpbGVkIHdpdGggcGF0dGVybiA9IiAKKyAgICAgICAgICAgICAgICAgICAgICsgRGF0YVtpKzBdICsgIkV4Y2VwdGlvbjoiICsgZXgxLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZXhwZWN0VHJhbnNsaXQodHJhbnMxLCAiIiwgRGF0YVtpKzFdLCBJbnRlZ2VyLnBhcnNlSW50KERhdGFbaSsyXSksIAorICAgICAgICAgICAgICAgICAgICAgICBJbnRlZ2VyLnBhcnNlSW50KERhdGFbaSszXSksIEludGVnZXIucGFyc2VJbnQoRGF0YVtpKzRdKSwgRGF0YVtpKzVdICk7CisgICAgICAgICAgICBleHBlY3QodHJhbnMxLCAiIiwgRGF0YVtpKzFdLCBEYXRhW2krNV0pOworICAgICAgICB9CisgICAgfQorICAgICAgICAKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBTdXBwb3J0IG1ldGhvZHMKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgIHByaXZhdGUgdm9pZCBleHBlY3RUcmFuc2xpdChIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvciB0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZSwgU3RyaW5nIHNvdXJjZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGFydCwgaW50IGxpbWl0LCBpbnQgY3Vyc29yLCAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBleHBlY3RlZFJlc3VsdCl7CisgICAgCisKKyAgICAgICAgUmVwbGFjZWFibGVTdHJpbmcgcnNvdXJjZSA9IG5ldyBSZXBsYWNlYWJsZVN0cmluZyhzb3VyY2UpOworICAgICAgICBUcmFuc2xpdGVyYXRvci5Qb3NpdGlvbiBpbmRleCA9IG5ldyBUcmFuc2xpdGVyYXRvci5Qb3NpdGlvbihzdGFydCwgbGltaXQsIGN1cnNvciwgbGltaXQpOworICAgICAgICB0LnRyYW5zbGl0ZXJhdGUocnNvdXJjZSwgaW5kZXgpOworICAgICAgICB0LmZpbmlzaFRyYW5zbGl0ZXJhdGlvbihyc291cmNlLCBpbmRleCk7CisgICAgICAgIFN0cmluZyByZXN1bHQ9cnNvdXJjZS50b1N0cmluZygpOworICAgICAgICBleHBlY3RBdXgodC5nZXRJRCgpICsgIjprZXlib2FyZCAiICsgbWVzc2FnZSwgc291cmNlICsgIi0+IiArIHJlc3VsdCwgcmVzdWx0LmVxdWFscyhleHBlY3RlZFJlc3VsdCksIGV4cGVjdGVkUmVzdWx0KTsKKyAgICB9CisgICAgcHJpdmF0ZSB2b2lkIGV4cGVjdFBhdHRlcm4oSGV4VG9Vbmljb2RlVHJhbnNsaXRlcmF0b3IgdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBwYXR0ZXJuLCBTdHJpbmcgc291cmNlLCBTdHJpbmcgZXhwZWN0ZWRSZXN1bHQpeworCisgICAgICAgIHRyeXsKKyAgICAgICAgICAgIHQuYXBwbHlQYXR0ZXJuKHBhdHRlcm4pOworICAgICAgICB9Y2F0Y2goSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlhZSl7CisgICAgICAgICAgICBpZihleHBlY3RlZFJlc3VsdC5lcXVhbHMoIkZBSUwiKSl7CisgICAgICAgICAgICAgICAgbG9nbG4oIk9LOiBjYWxsaW5nIGFwcGx5UGF0dGVybigpIHdpdGggaWxsZWdhbCBwYXR0ZXJuIGZhaWxlZCBhcyBleHBlY3RlZC4iICsgaWFlLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgfSBlbHNleworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBhcHBseVBhdHRlcm4oKSBmYWlsZWQgd2l0aCBwYXR0ZXJuID0iICsgcGF0dGVybiArICItLS0+IiArIGlhZS50b1N0cmluZygpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZighZXhwZWN0ZWRSZXN1bHQuZXF1YWxzKCJGQUlMIikpeworICAgICAgICAgICAgaWYoIXQudG9QYXR0ZXJuKCkuZXF1YWxzKHBhdHRlcm4pKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6IGFwcGx5UGF0dGVybiBvciB0b1BhdHRlbiBmYWlsZWQuICBFeHBlY3RlZDogIiArIHBhdHRlcm4gKyAiR290OiAiICsgdC50b1BhdHRlcm4oKSk7CisgICAgICAgICAgICB9ZWxzZXsKKyAgICAgICAgICAgICAgICBsb2dsbigiT0s6IGFwcGx5UGF0dGVybiBwYXNzZWQuIFRlc3RpbmcgdHJhbnNsaXRlcmF0aW9uIik7CisgICAgICAgICAgICAgICAgZXhwZWN0KHQsICIgd2l0aCBwYXR0ZXJuICIrcGF0dGVybiwgc291cmNlLCBleHBlY3RlZFJlc3VsdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcHJpdmF0ZSB2b2lkIGV4cGVjdChIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvciB0LCAgU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBzb3VyY2UsIFN0cmluZyBleHBlY3RlZFJlc3VsdCkgeworICAgIAorICAgICAgICBTdHJpbmcgcmVzdWx0PXQudHJhbnNsaXRlcmF0ZShzb3VyY2UpOworICAgICAgICBleHBlY3RBdXgodC5nZXRJRCgpICsgIjpTdHJpbmcgIiArIG1lc3NhZ2UsIHNvdXJjZSArICItPiIgKyByZXN1bHQsIHJlc3VsdC5lcXVhbHMoZXhwZWN0ZWRSZXN1bHQpLCBleHBlY3RlZFJlc3VsdCk7CisKKyAgICAgICAgUmVwbGFjZWFibGVTdHJpbmcgcnNvdXJjZSA9IG5ldyBSZXBsYWNlYWJsZVN0cmluZyhzb3VyY2UpOworICAgICAgICB0LnRyYW5zbGl0ZXJhdGUocnNvdXJjZSk7CisgICAgICAgIHJlc3VsdCA9IHJzb3VyY2UudG9TdHJpbmcoKTsKKyAgICAgICAgZXhwZWN0QXV4KHQuZ2V0SUQoKSArICI6UmVwbGFjZWFibGUiICsgbWVzc2FnZSwgc291cmNlICsgIi0+IiArIHJlc3VsdCwgcmVzdWx0LmVxdWFscyhleHBlY3RlZFJlc3VsdCksIGV4cGVjdGVkUmVzdWx0KTsKKworICAgICAgICAvLyBUZXN0IGtleWJvYXJkIChpbmNyZW1lbnRhbCkgdHJhbnNsaXRlcmF0aW9uIC0tIHRoaXMgcmVzdWx0CisgICAgICAgIC8vIG11c3QgYmUgdGhlIHNhbWUgYWZ0ZXIgd2UgZmluYWxpemUgKHNlZSBiZWxvdykuCisgICAgICAgIHJzb3VyY2UucmVwbGFjZSgwLCByc291cmNlLmxlbmd0aCgpLCAiIik7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yLlBvc2l0aW9uIGluZGV4ID0gbmV3IFRyYW5zbGl0ZXJhdG9yLlBvc2l0aW9uKCk7CisgICAgICAgIFN0cmluZ0J1ZmZlciBsb2cgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPHNvdXJjZS5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAoaSAhPSAwKSB7CisgICAgICAgICAgICAgICAgbG9nLmFwcGVuZCgiICsgIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsb2cuYXBwZW5kKHNvdXJjZS5jaGFyQXQoaSkpLmFwcGVuZCgiIC0+ICIpOworICAgICAgICAgICAgdC50cmFuc2xpdGVyYXRlKHJzb3VyY2UsIGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZy52YWx1ZU9mKHNvdXJjZS5jaGFyQXQoaSkpKTsKKyAgICAgICAgICAgIC8vIEFwcGVuZCB0aGUgc3RyaW5nIGJ1ZmZlciB3aXRoIGEgdmVydGljYWwgYmFyICd8JyB3aGVyZQorICAgICAgICAgICAgLy8gdGhlIGNvbW1pdHRlZCBpbmRleCBpcy4KKyAgICAgICAgICAgIFN0cmluZyBzID0gcnNvdXJjZS50b1N0cmluZygpOworICAgICAgICAgICAgbG9nLmFwcGVuZChzLnN1YnN0cmluZygwLCBpbmRleC5zdGFydCkpLgorICAgICAgICAgICAgICAgIGFwcGVuZCgnfCcpLgorICAgICAgICAgICAgICAgIGFwcGVuZChzLnN1YnN0cmluZyhpbmRleC5zdGFydCkpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBBcyBhIGZpbmFsIHN0ZXAgaW4ga2V5Ym9hcmQgdHJhbnNsaXRlcmF0aW9uLCB3ZSBtdXN0IGNhbGwKKyAgICAgICAgLy8gdHJhbnNsaXRlcmF0ZSB0byBmaW5pc2ggb2ZmIGFueSBwZW5kaW5nIHBhcnRpYWwgbWF0Y2hlcyB0aGF0CisgICAgICAgIC8vIHdlcmUgd2FpdGluZyBmb3IgbW9yZSBpbnB1dC4KKyAgICAgICAgdC5maW5pc2hUcmFuc2xpdGVyYXRpb24ocnNvdXJjZSwgaW5kZXgpOworICAgICAgICByZXN1bHQgPSByc291cmNlLnRvU3RyaW5nKCk7CisgICAgICAgIGxvZy5hcHBlbmQoIiA9PiAiKS5hcHBlbmQocnNvdXJjZS50b1N0cmluZygpKTsKKyAgICAgICAgZXhwZWN0QXV4KHQuZ2V0SUQoKSArICI6S2V5Ym9hcmQiLCBsb2cudG9TdHJpbmcoKSArICJcbiIgKyBzb3VyY2UgKyAiIC0+ICIgKyByZXN1bHQsIHJlc3VsdC5lcXVhbHMoZXhwZWN0ZWRSZXN1bHQpLCBleHBlY3RlZFJlc3VsdCk7CisKKyAgICB9CisgICAgcHJpdmF0ZSB2b2lkIGV4cGVjdEF1eChTdHJpbmcgdGFnLCBTdHJpbmcgc3VtbWFyeSwgYm9vbGVhbiBwYXNzLCAgU3RyaW5nIGV4cGVjdGVkUmVzdWx0KSB7CisgICAgICAgIGlmIChwYXNzKSB7CisgICAgICAgICAgICBsb2dsbigiKCIgKyB0YWcgKyAiKSAiICsgVXRpbGl0eS5lc2NhcGUoc3VtbWFyeSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6ICgiICsgdGFnKyAiKSAiCisgICAgICAgICAgICAgICAgKyBVdGlsaXR5LmVzY2FwZShzdW1tYXJ5KQorICAgICAgICAgICAgICAgICsgIiwgZXhwZWN0ZWQgIiArIFV0aWxpdHkuZXNjYXBlKGV4cGVjdGVkUmVzdWx0KSk7CisgICAgICAgIH0KKyAgICB9ICAKK30KKworCisKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC90cmFuc2xpdC9KYW1vVGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3RyYW5zbGl0L0phbW9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYzNmMzZhMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC90cmFuc2xpdC9KYW1vVGVzdC5qYXZhCkBAIC0wLDAgKzEsNDk0IEBACisvKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3RyYW5zbGl0L0phbW9UZXN0LmphdmEsdiAkCisgKiAkRGF0ZTogMjAwMi8wOC8xMyAyMjowNzo1OCAkCisgKiAkUmV2aXNpb246IDEuMTQgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3QudHJhbnNsaXQ7CitpbXBvcnQgY29tLmlibS5pY3UubGFuZy4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuKjsKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYudGVzdC4qOworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuVXRpbGl0eTsKK2ltcG9ydCBqYXZhLnRleHQuKjsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworLyoqCisgKiBAdGVzdAorICogQHN1bW1hcnkgVGVzdCB0aGUgTGF0aW4tSmFtbyB0cmFuc2xpdGVyYXRvcgorICovCitwdWJsaWMgY2xhc3MgSmFtb1Rlc3QgZXh0ZW5kcyBUcmFuc2xpdGVyYXRvclRlc3QgeworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciBTRVAgPSAnXCcnOworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIG5ldyBKYW1vVGVzdCgpLnJ1bihhcmdzKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0SmFtbygpIHsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgbGF0aW5KYW1vID0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoIkxhdGluLUphbW8iKTsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgamFtb0xhdGluID0gbGF0aW5KYW1vLmdldEludmVyc2UoKTsKKworICAgICAgICBTdHJpbmdbXSBDQVNFID0geworICAgICAgICAgICAgLy8gQ29sdW1uIDEgaXMgdGhlIGxhdGluIHRleHQgTDEgdG8gYmUgZmVkIHRvIExhdGluLUphbW8KKyAgICAgICAgICAgIC8vIHRvIHlpZWxkIG91dHB1dCBKLgorCisgICAgICAgICAgICAvLyBDb2x1bW4gMiBpcyBleHBlY3RlZCB2YWx1ZSBvZiBKLiAgSiBpcyBmZWQgdG8KKyAgICAgICAgICAgIC8vIEphbW8tTGF0aW4gdG8geWllbGQgb3V0cHV0IEwyLgorCisgICAgICAgICAgICAvLyBDb2x1bW4gMyBpcyBleHBlY3RlZCB2YWx1ZSBvZiBMMi4gIElmIHRoZSBleHBlY3RlZAorICAgICAgICAgICAgLy8gdmFsdWUgb2YgTDIgaXMgTDEsIHRoZW4gTDIgaXMgbnVsbC4KKyAgICAgICAgICAgICJiYWIiLCAiKEJpKShBKShCZikiLCBudWxsLAorICAgICAgICAgICAgImJhYmIiLCAiKEJpKShBKShCZikoQmkpKEVVKSIsICJiYWIiK1NFUCsiYmV1IiwKKyAgICAgICAgICAgICJiYWJiYmEiLCAiKEJpKShBKShCZikoQkIpKEEpIiwgbnVsbCwKKyAgICAgICAgICAgICJiYWdnIiwgIihCaSkoQSkoR0dmKSIsIG51bGwsCisgICAgICAgICAgICAiYmFnZ2dhIiwgIihCaSkoQSkoR0dmKShHaSkoQSkiLCBudWxsLAorICAgICAgICAgICAgImJhZyIrU0VQKyJnZ2EiLCAiKEJpKShBKShHZikoR0dpKShBKSIsIG51bGwsCisgICAgICAgICAgICAia2Fic2EiLCAiKEtpKShBKShCZikoU2kpKEEpIiwgbnVsbCwKKyAgICAgICAgICAgICJrYWJza2EiLCAiKEtpKShBKShCUykoS2kpKEEpIiwgbnVsbCwKKyAgICAgICAgICAgICJnYWJzYmthIiwgIihHaSkoQSkoQlMpKEJpKShFVSkoS2kpKEEpIiwgImdhYnNiZXVrYSIsIC8vIG5vdCAoS2YpCisgICAgICAgICAgICAiZ2dhIiwgIihHR2kpKEEpIiwgbnVsbCwKKyAgICAgICAgICAgICJic2EiLCAiKEJpKShFVSkoU2kpKEEpIiwgImJldXNhIiwKKyAgICAgICAgICAgICJhZ2ciLCAiKElFVU5HKShBKShHR2YpIiwgbnVsbCwKKyAgICAgICAgICAgICJhZ2dhIiwgIihJRVVORykoQSkoR0dpKShBKSIsIG51bGwsCisgICAgICAgICAgICAibGEiLCAiKFIpKEEpIiwgInJhIiwKKyAgICAgICAgICAgICJicyIsICIoQmkpKEVVKShTZikiLCAiYmV1cyIsCisgICAgICAgICAgICAia2FsZ2dhIiwgIihLaSkoQSkoTCkoR0dpKShBKSIsIG51bGwsCisKKyAgICAgICAgICAgIC8vICdyJyBpbiBhIGZpbmFsIHBvc2l0aW9uIGlzIHRyZWF0ZWQgbGlrZSAnbCcKKyAgICAgICAgICAgICJrYXJrYSIsICIoS2kpKEEpKEwpKEtpKShBKSIsICJrYWxrYSIsCisgICAgICAgIH07CisKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPENBU0UubGVuZ3RoOyBpKz0zKSB7CisgICAgICAgICAgICBTdHJpbmcgamFtbyA9IG5hbWVUb0phbW8oQ0FTRVtpKzFdKTsKKyAgICAgICAgICAgIGlmIChDQVNFW2krMl0gPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGV4cGVjdChsYXRpbkphbW8sIENBU0VbaV0sIGphbW8sIGphbW9MYXRpbik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBjYXNlIHdoZXJlIHJvdW5kLXRyaXAgaXMgZXhwZWN0ZWQgdG8gZmFpbAorICAgICAgICAgICAgICAgIGV4cGVjdChsYXRpbkphbW8sIENBU0VbaV0sIGphbW8pOworICAgICAgICAgICAgICAgIGV4cGVjdChqYW1vTGF0aW4sIGphbW8sIENBU0VbaSsyXSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaGVzZSBhcmUgcHJvYmxlbXMgdHVybmVkIHVwIGJ5IHRoZSBIYW5ndWwtSmFtbztKYW1vLUxhdGluCisgICAgICogcm91bmQgdHJpcCB0ZXN0LgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RSb3VuZFRyaXAoKSB7CisgICAgICAgIFN0cmluZyBIQU5HVUxbXSA9IHsgIlx1QUMwM1x1QzJGOCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1QzU0NFx1QzVCNCJ9OworICAgICAgICAKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgbGF0aW5KYW1vID0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoIkxhdGluLUphbW8iKTsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgamFtb0xhdGluID0gbGF0aW5KYW1vLmdldEludmVyc2UoKTsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgamFtb0hhbmd1bCA9IFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKCJORkMiKTsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgaGFuZ3VsSmFtbyA9IFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKCJORkQiKTsKKworICAgICAgICBTdHJpbmdCdWZmZXIgYnVmID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBmb3IgKGludCBpPTA7IGk8SEFOR1VMLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBTdHJpbmcgaGFuZ3VsID0gSEFOR1VMW2ldOworICAgICAgICAgICAgU3RyaW5nIGphbW8gPSBoYW5ndWxKYW1vLnRyYW5zbGl0ZXJhdGUoaGFuZ3VsKTsKKyAgICAgICAgICAgIFN0cmluZyBsYXRpbiA9IGphbW9MYXRpbi50cmFuc2xpdGVyYXRlKGphbW8pOworICAgICAgICAgICAgU3RyaW5nIGphbW8yID0gbGF0aW5KYW1vLnRyYW5zbGl0ZXJhdGUobGF0aW4pOworICAgICAgICAgICAgU3RyaW5nIGhhbmd1bDIgPSBqYW1vSGFuZ3VsLnRyYW5zbGl0ZXJhdGUoamFtbzIpOworICAgICAgICAgICAgYnVmLnNldExlbmd0aCgwKTsKKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQoaGFuZ3VsICsgIiA9PiAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgamFtb1RvTmFtZShqYW1vKSArICIgPT4gIiArCisgICAgICAgICAgICAgICAgICAgICAgIGxhdGluICsgIiA9PiAiICsgamFtb1RvTmFtZShqYW1vMikKKyAgICAgICAgICAgICAgICAgICAgICAgKyAiID0+ICIgKyBoYW5ndWwyCisgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICBpZiAoIWhhbmd1bC5lcXVhbHMoaGFuZ3VsMikpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogIiArIFV0aWxpdHkuZXNjYXBlKGJ1Zi50b1N0cmluZygpKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGxvZ2xuKFV0aWxpdHkuZXNjYXBlKGJ1Zi50b1N0cmluZygpKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXN0IHZhcmlvdXMgc3RlcC1hdC1hLXRpbWUgdHJhbnNmb3JtYXRpb24gb2YgaGFuZ3VsIHRvIGphbW8gdG8KKyAgICAgKiBsYXRpbiBhbmQgYmFjay4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0UGllY2VtZWFsKCkgeworICAgICAgICBTdHJpbmcgaGFuZ3VsID0gIlx1QkMwRiI7CisgICAgICAgIFN0cmluZyBqYW1vID0gbmFtZVRvSmFtbygiKE1pKShJKShDZikiKTsKKyAgICAgICAgU3RyaW5nIGxhdGluID0gIm1pYyI7CisKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgdCA9IG51bGw7CisKKyAgICAgICAgdCA9IFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKCJORkQiKTsgLy8gd2FzIEhhbmd1bC1KYW1vCisgICAgICAgIGV4cGVjdCh0LCBoYW5ndWwsIGphbW8pOworCisgICAgICAgIHQgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgiTkZDIik7IC8vIHdhcyBKYW1vLUhhbmd1bAorICAgICAgICBleHBlY3QodCwgamFtbywgaGFuZ3VsKTsKKworICAgICAgICB0ID0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoIkxhdGluLUphbW8iKTsKKyAgICAgICAgZXhwZWN0KHQsIGxhdGluLCBqYW1vKTsKKworICAgICAgICB0ID0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoIkphbW8tTGF0aW4iKTsKKyAgICAgICAgZXhwZWN0KHQsIGphbW8sIGxhdGluKTsKKworICAgICAgICB0ID0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoIkhhbmd1bC1MYXRpbiIpOworICAgICAgICBleHBlY3QodCwgaGFuZ3VsLCBsYXRpbik7CisKKyAgICAgICAgdCA9IFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKCJMYXRpbi1IYW5ndWwiKTsKKyAgICAgICAgZXhwZWN0KHQsIGxhdGluLCBoYW5ndWwpOworCisgICAgICAgIHQgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgiSGFuZ3VsLUxhdGluOyBMYXRpbi1KYW1vIik7CisgICAgICAgIGV4cGVjdCh0LCBoYW5ndWwsIGphbW8pOworCisgICAgICAgIHQgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgiSmFtby1MYXRpbjsgTGF0aW4tSGFuZ3VsIik7CisgICAgICAgIGV4cGVjdCh0LCBqYW1vLCBoYW5ndWwpOworCisgICAgICAgIHQgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgiSGFuZ3VsLUxhdGluOyBMYXRpbi1IYW5ndWwiKTsKKyAgICAgICAgZXhwZWN0KHQsIGhhbmd1bCwgaGFuZ3VsKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0UmVhbFRleHQoKSB7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIGxhdGluSmFtbyA9IFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKCJMYXRpbi1KYW1vIik7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIGphbW9MYXRpbiA9IGxhdGluSmFtby5nZXRJbnZlcnNlKCk7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIGphbW9IYW5ndWwgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgiTkZDIik7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIGhhbmd1bEphbW8gPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgiTkZEIik7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHJ0ID0gbmV3IENvbXBvdW5kVHJhbnNsaXRlcmF0b3IobmV3IFRyYW5zbGl0ZXJhdG9yW10geworICAgICAgICAgICAgaGFuZ3VsSmFtbywgamFtb0xhdGluLCBsYXRpbkphbW8sIGphbW9IYW5ndWwgfSk7CisKKyAgICAgICAgaW50IHBvcyA9IDA7CisgICAgICAgIFN0cmluZ0J1ZmZlciBidWYgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIGludCB0b3RhbCA9IDA7CisgICAgICAgIGludCBlcnJvcnMgPSAwOworICAgICAgICB3aGlsZSAocG9zIDwgV0hBVF9JU19VTklDT0RFLmxlbmd0aCgpKSB7CisgICAgICAgICAgICBpbnQgc3BhY2UgPSBXSEFUX0lTX1VOSUNPREUuaW5kZXhPZignICcsIHBvcysxKTsKKyAgICAgICAgICAgIGlmIChzcGFjZSA8IDApIHsKKyAgICAgICAgICAgICAgICBzcGFjZSA9IFdIQVRfSVNfVU5JQ09ERS5sZW5ndGgoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChwb3MgPCBzcGFjZSkgeworICAgICAgICAgICAgICAgICsrdG90YWw7CisgICAgICAgICAgICAgICAgU3RyaW5nIGhhbmd1bCA9IFdIQVRfSVNfVU5JQ09ERS5zdWJzdHJpbmcocG9zLCBzcGFjZSk7CisgICAgICAgICAgICAgICAgU3RyaW5nIGhhbmd1bFggPSBydC50cmFuc2xpdGVyYXRlKGhhbmd1bCk7CisgICAgICAgICAgICAgICAgaWYgKCFoYW5ndWwuZXF1YWxzKGhhbmd1bFgpKSB7CisgICAgICAgICAgICAgICAgICAgICsrZXJyb3JzOworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgamFtbyA9IGhhbmd1bEphbW8udHJhbnNsaXRlcmF0ZShoYW5ndWwpOworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbGF0aW4gPSBqYW1vTGF0aW4udHJhbnNsaXRlcmF0ZShqYW1vKTsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGphbW8yID0gbGF0aW5KYW1vLnRyYW5zbGl0ZXJhdGUobGF0aW4pOworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgaGFuZ3VsMiA9IGphbW9IYW5ndWwudHJhbnNsaXRlcmF0ZShqYW1vMik7CisgICAgICAgICAgICAgICAgICAgIGlmIChoYW5ndWwuZXF1YWxzKGhhbmd1bDIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBidWYuc2V0TGVuZ3RoKDApOworICAgICAgICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgiRkFJTCAoQ29tcG91bmQgdHJhbnNsaXRlcmF0b3IgcHJvYmxlbSk6ICIpOworICAgICAgICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZChoYW5ndWwgKyAiID0+ICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYW1vVG9OYW1lKGphbW8pICsgIiA9PiAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF0aW4gKyAiID0+ICIgKyBqYW1vVG9OYW1lKGphbW8yKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgPT4gIiArIGhhbmd1bDIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOyBidXQgIiArIGhhbmd1bCArICIgPWNwZD0+ICIgKyBqYW1vVG9OYW1lKGhhbmd1bFgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbihVdGlsaXR5LmVzY2FwZShidWYudG9TdHJpbmcoKSkpOyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGphbW8uZXF1YWxzKGphbW8yKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYnVmLnNldExlbmd0aCgwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIkZBSUwgKEphbW88Pkhhbmd1bCBwcm9ibGVtKTogIik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWhhbmd1bDIuZXF1YWxzKGhhbmd1bFgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgiKFdlaXJkOiAiICsgaGFuZ3VsWCArICIgIT0gIiArIGhhbmd1bDIgKyAiKSIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZChoYW5ndWwgKyAiID0+ICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYW1vVG9OYW1lKGphbW8pICsgIiA9PiAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF0aW4gKyAiID0+ICIgKyBqYW1vVG9OYW1lKGphbW8yKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgPT4gIiArIGhhbmd1bDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycmxuKFV0aWxpdHkuZXNjYXBlKGJ1Zi50b1N0cmluZygpKSk7ICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBidWYuc2V0TGVuZ3RoKDApOworICAgICAgICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgiRkFJTDogIik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWhhbmd1bDIuZXF1YWxzKGhhbmd1bFgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgiKFdlaXJkOiAiICsgaGFuZ3VsWCArICIgIT0gIiArIGhhbmd1bDIgKyAiKSIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIEhhbmd1bC1KYW1vIGNvbnZlcnNpb24gaXMgbm90IHVzdWFsbHkgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBidWcgaGVyZSwgc28gd2UgaGlkZSBpdCBmcm9tIGRpc3BsYXkuCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBVbmNvbW1lbnQgbGluZXMgdG8gc2VlIHRoZSBIYW5ndWwuCisgICAgICAgICAgICAgICAgICAgICAgICBidWYuYXBwZW5kKC8vaGFuZ3VsICsgIiA9PiAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamFtb1RvTmFtZShqYW1vKSArICIgPT4gIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhdGluICsgIiA9PiAiICsgamFtb1RvTmFtZShqYW1vMikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8rICIgPT4gIiArIGhhbmd1bDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycmxuKFV0aWxpdHkuZXNjYXBlKGJ1Zi50b1N0cmluZygpKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwb3MgPSBzcGFjZSsxOworICAgICAgICB9CisgICAgICAgIGlmIChlcnJvcnMgIT0gMCkgeworICAgICAgICAgICAgZXJybG4oIlRlc3Qgd29yZCBmYWlsdXJlczogIiArIGVycm9ycyArICIgb3V0IG9mICIgKyB0b3RhbCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2dsbigiQWxsICIgKyB0b3RhbCArICIgdGVzdCB3b3JkcyBwYXNzZWQiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFRlc3QgdGV4dCB0YWtlbiBmcm9tIHRoZSBVbmljb2RlIHdlYiBzaXRlCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBXSEFUX0lTX1VOSUNPREUgPQorCisgICAgICAgICJcdWM3MjBcdWIyYzhcdWNmNTRcdWI0ZGNcdWM1ZDAgXHViMzAwXHVkNTc0ID8gIiArCisKKyAgICAgICAgIlx1YzViNFx1YjVhNCBcdWQ1MGNcdWI3YWJcdWQzZmMsIFx1YzViNFx1YjVhNCAiICsKKyAgICAgICAgIlx1ZDUwNFx1Yjg1Y1x1YWRmOFx1YjdhOCwgXHVjNWI0XHViNWE0IFx1YzViOFx1YzViNFx1YzVkMFx1YjNjNCAiICsKKyAgICAgICAgIlx1YzBjMVx1YWQwMFx1YzVjNlx1Yzc3NCBcdWM3MjBcdWIyYzhcdWNmNTRcdWI0ZGNcdWIyOTQgXHViYWE4XHViNGUwICIgKworICAgICAgICAiXHViYjM4XHVjNzkwXHVjNWQwIFx1YjMwMFx1ZDU3NCBcdWFjZTBcdWM3MjAgXHViYzg4XHVkNjM4XHViOTdjICIgKworICAgICAgICAiXHVjODFjXHVhY2Y1XHVkNTY5XHViMmM4XHViMmU0LiAiICsKKyAgICAgICAgCisgICAgICAgICJcdWFlMzBcdWJjZjhcdWM4MDFcdWM3M2NcdWI4NWMgXHVjZWY0XHVkNGU4XHVkMTMwXHViMjk0ICIgKworICAgICAgICAiXHVjMjJiXHVjNzkwXHViOWNjIFx1Y2M5OFx1YjlhY1x1ZDU2OVx1YjJjOFx1YjJlNC4gXHVhZTAwXHVjNzkwXHViMDk4ICIgKworICAgICAgICAiXHViMmU0XHViOTc4IFx1YmIzOFx1Yzc5MFx1YzVkMFx1YjNjNCBcdWMyMmJcdWM3OTBcdWI5N2MgIiArCisgICAgICAgICJcdWM5YzBcdWM4MTVcdWQ1NThcdWM1ZWMgIiArCisgICAgICAgICJcdWM4MDBcdWM3YTVcdWQ1NjlcdWIyYzhcdWIyZTQuIFx1YzcyMFx1YjJjOFx1Y2Y1NFx1YjRkY1x1YWMwMCAiICsKKyAgICAgICAgIlx1YWMxY1x1YmMxY1x1YjQxOFx1YWUzMCBcdWM4MDRcdWM1ZDBcdWIyOTQgXHVjNzc0XHViN2VjXHVkNTVjICIgKworICAgICAgICAiXHVjMjJiXHVjNzkwXHViOTdjIFx1YzljMFx1YzgxNVx1ZDU1OFx1YWUzMCBcdWM3MDRcdWQ1NzQgXHVjMjE4XHViYzMxICIgKworICAgICAgICAiXHVhYzAwXHVjOWMwXHVjNzU4IFx1YjJlNFx1Yjk3OCBcdWFlMzBcdWQ2MzhcdWQ2NTQgIiArCisgICAgICAgICJcdWMyZGNcdWMyYTRcdWQxNWNcdWM3NDQgIiArCisgICAgICAgICJcdWMwYWNcdWM2YTlcdWQ1ODhcdWMyYjVcdWIyYzhcdWIyZTQuIFx1YjJlOFx1Yzc3YyBcdWFlMzBcdWQ2MzhcdWQ2NTQgIiArCisgICAgICAgICJcdWJjMjlcdWJjOTVcdWM3M2NcdWI4NWNcdWIyOTQgXHViYWE4XHViNGUwIFx1YmIzOFx1Yzc5MFx1Yjk3YyAiICsKKyAgICAgICAgIlx1ZDNlY1x1ZDU2OFx1ZDU2MCBcdWMyMTggXHVjNWM2XHVjNWM4XHVjMmI1XHViMmM4XHViMmU0LiBcdWM2MDhcdWI5N2MgIiArCisgICAgICAgICJcdWI0ZTRcdWM1YjQgXHVjNzIwXHViN2ZkIFx1YzVmMFx1ZDU2OVx1YzVkMFx1YzExY1x1YjljYyAiICsKKyAgICAgICAgIlx1YmNmNFx1YjM1NFx1Yjc3Y1x1YjNjNCBcdWJhYThcdWI0ZTAgXHVhYzAxIFx1YjA5OFx1Yjc3Y1x1YmNjNCAiICsKKyAgICAgICAgIlx1YzViOFx1YzViNFx1Yjk3YyBcdWNjOThcdWI5YWNcdWQ1NThcdWI4MjRcdWJhNzQgXHVjNWVjXHViN2VjICIgKworICAgICAgICAiXHVhYzFjXHVjNzU4IFx1YjJlNFx1Yjk3OCBcdWFlMzBcdWQ2MzhcdWQ2NTQgXHViYzI5XHViYzk1XHVjNzc0ICIgKworICAgICAgICAiXHVkNTQ0XHVjNjk0XHVkNTY5XHViMmM4XHViMmU0LiBcdWM2MDFcdWM1YjRcdWM2NDAgXHVhYzE5XHVjNzQwICIgKworICAgICAgICAiXHViMmU4XHVjNzdjIFx1YzViOFx1YzViNFx1Yzc1OCBcdWFjYmRcdWM2YjBcdWIzYzQgIiArCisgICAgICAgICJcdWFjZjVcdWQxYjVcdWM4MDFcdWM3M2NcdWI4NWMgXHVjMGFjXHVjNmE5XHViNDE4XHViMjk0IFx1YmFhOFx1YjRlMCAiICsKKyAgICAgICAgIlx1YWUwMFx1Yzc5MCwgXHViYjM4XHVjN2E1IFx1YmQ4MFx1ZDYzOCBcdWJjMGYgIiArCisgICAgICAgICJcdWQxNGNcdWQwNmNcdWIyYzhcdWNlZWMgXHVhZTMwXHVkNjM4XHVjNWQwIFx1YjlkZVx1YjI5NCBcdWIyZThcdWM3N2MgIiArCisgICAgICAgICJcdWFlMzBcdWQ2MzhcdWQ2NTQgXHViYzI5XHViYzk1XHVjNzQ0IFx1YWMxNlx1YWNlMCBcdWM3ODhcdWM5YzAgIiArCisgICAgICAgICJcdWJhYmJcdWQ1NThcdWM2MDBcdWMyYjVcdWIyYzhcdWIyZTQuICIgKworICAgICAgICAKKyAgICAgICAgIlx1Yzc3NFx1YjdlY1x1ZDU1YyBcdWFlMzBcdWQ2MzhcdWQ2NTQgXHVjMmRjXHVjMmE0XHVkMTVjXHVjNzQwICIgKworICAgICAgICAiXHViNjEwXHVkNTVjIFx1YjJlNFx1Yjk3OCBcdWFlMzBcdWQ2MzhcdWQ2NTQgXHVjMmRjXHVjMmE0XHVkMTVjXHVhY2ZjICIgKworICAgICAgICAiXHVjZGE5XHViM2NjXHVkNTY5XHViMmM4XHViMmU0LiBcdWM5ODkgXHViNDUwIFx1YWMwMFx1YzljMCAiICsKKyAgICAgICAgIlx1YWUzMFx1ZDYzOFx1ZDY1NCBcdWJjMjlcdWJjOTVcdWM3NzQgXHViNDUwIFx1YWMxY1x1Yzc1OCBcdWIyZTRcdWI5NzggIiArCisgICAgICAgICJcdWJiMzhcdWM3OTBcdWM1ZDAgXHViMzAwXHVkNTc0IFx1YWMxOVx1Yzc0MCBcdWJjODhcdWQ2MzhcdWI5N2MgIiArCisgICAgICAgICJcdWMwYWNcdWM2YTlcdWQ1NThcdWFjNzBcdWIwOTggXHVhYzE5XHVjNzQwIFx1YmIzOFx1Yzc5MFx1YzVkMCAiICsKKyAgICAgICAgIlx1YjMwMFx1ZDU3NCBcdWIyZTRcdWI5NzggXHViYzg4XHVkNjM4XHViOTdjIFx1YzBhY1x1YzZhOVx1ZDU2MCBcdWMyMTggIiArCisgICAgICAgICJcdWM3ODhcdWMyYjVcdWIyYzhcdWIyZTQuIFx1YzhmY1x1YzViNFx1YzljNCBcdWJhYThcdWI0ZTAgIiArCisgICAgICAgICJcdWNlZjRcdWQ0ZThcdWQxMzAoXHVkMmI5XHVkNzg4IFx1YzExY1x1YmM4NClcdWIyOTQgXHVjMTFjXHViODVjICIgKworICAgICAgICAiXHViMmU0XHViOTc4IFx1YzVlY1x1YjdlYyBcdWFjMDBcdWM5YzAgXHVhZTMwXHVkNjM4XHVkNjU0ICIgKworICAgICAgICAiXHViYzI5XHViYzk1XHVjNzQ0IFx1YzljMFx1YzZkMFx1ZDU3NFx1YzU3YyAiICsKKyAgICAgICAgIlx1ZDU2OVx1YjJjOFx1YjJlNC4gXHVhZGY4XHViN2VjXHViMDk4LCBcdWIzNzBcdWM3NzRcdWQxMzBcdWI5N2MgIiArCisgICAgICAgICJcdWMxMWNcdWI4NWMgXHViMmU0XHViOTc4IFx1YWUzMFx1ZDYzOFx1ZDY1NCBcdWJjMjlcdWJjOTVcdWM3NzRcdWIwOTggIiArCisgICAgICAgICJcdWQ1MGNcdWI3YWJcdWQzZmMgXHVhYzA0XHVjNWQwIFx1YzgwNFx1YjJlY1x1ZDU2MCBcdWI1NGNcdWI5YzhcdWIyZTQgIiArCisgICAgICAgICJcdWFkZjggXHViMzcwXHVjNzc0XHVkMTMwXHViMjk0IFx1ZDU2ZFx1YzBjMSBcdWMxOTBcdWMwYzFcdWM3NTggIiArCisgICAgICAgICJcdWM3MDRcdWQ1ZDhcdWM3NDQgXHVhY2FhXHVhYzhjIFx1YjQyOVx1YjJjOFx1YjJlNC4gIiArCisgICAgICAgIAorICAgICAgICAiXHVjNzIwXHViMmM4XHVjZjU0XHViNGRjXHViODVjIFx1YmFhOFx1YjRlMCBcdWFjODNcdWM3NDQgIiArCisgICAgICAgICJcdWQ1NzRcdWFjYjBcdWQ1NjAgXHVjMjE4IFx1Yzc4OFx1YzJiNVx1YjJjOFx1YjJlNCEgIiArCisgICAgICAgICJcdWM3MjBcdWIyYzhcdWNmNTRcdWI0ZGNcdWIyOTQgXHVjMGFjXHVjNmE5IFx1YzkxMVx1Yzc3OCAiICsKKyAgICAgICAgIlx1ZDUwY1x1YjdhYlx1ZDNmYywgXHVkNTA0XHViODVjXHVhZGY4XHViN2E4LCBcdWM1YjhcdWM1YjRcdWM1ZDAgIiArCisgICAgICAgICJcdWFkMDBcdWFjYzRcdWM1YzZcdWM3NzQgXHViYjM4XHVjNzkwXHViOWM4XHViMmU0IFx1YWNlMFx1YzcyMFx1ZDU1YyAiICsKKyAgICAgICAgIlx1YzIyYlx1Yzc5MFx1Yjk3YyAiICsKKyAgICAgICAgIlx1YzgxY1x1YWNmNVx1ZDU2OVx1YjJjOFx1YjJlNC4gXHVjNzIwXHViMmM4XHVjZjU0XHViNGRjICIgKworICAgICAgICAiXHVkNDVjXHVjOTAwXHVjNzQwICIgKyAvLyAiQXBwbGUsIEhQLCBJQk0sIEp1c3RTeXN0ZW0sIE1pY3Jvc29mdCwgT3JhY2xlLCBTQVAsICIgKworICAgICAgICAvLyAiU3VuLCBTeWJhc2UsIFVuaXN5cyAiICsgCisgICAgICAgICJcdWJjMGYgXHVhZTMwXHVkMGMwIFx1YzVlY1x1YjdlYyAiICsKKyAgICAgICAgIlx1ZDY4Y1x1YzBhY1x1YzY0MCBcdWFjMTlcdWM3NDAgXHVjNWM1XHVhY2M0ICIgKworICAgICAgICAiXHVjMTIwXHViNDUwXHVjOGZjXHVjNzkwXHVjNWQwIFx1Yzc1OFx1ZDU3NCAiICsKKyAgICAgICAgIlx1Y2M0NFx1ZDBkZFx1YjQxOFx1YzVjOFx1YzJiNVx1YjJjOFx1YjJlNC4gXHVjNzIwXHViMmM4XHVjZjU0XHViNGRjXHViMjk0ICIgKworICAgICAgICAvLyAiWE1MLCBKYXZhLCBFQ01BU2NyaXB0KEphdmFTY3JpcHQpLCBMREFQLCBDT1JCQSAzLjAsIFdNTCAiICsKKyAgICAgICAgIlx1YjRmMVx1YWNmYyAiICsKKyAgICAgICAgIlx1YWMxOVx1Yzc3NCBcdWQ2MDRcdWM3YWMgXHViMTEwXHViOWFjIFx1YzBhY1x1YzZhOVx1YjQxOFx1YjI5NCAiICsKKyAgICAgICAgIlx1ZDQ1Y1x1YzkwMFx1YzVkMFx1YzExYyBcdWQ1NDRcdWM2OTRcdWQ1NThcdWJhNzAgXHVjNzc0XHViMjk0ICIgKyAvL0lTTy9JRUMgIiArCisgICAgICAgICIxMDY0Nlx1Yzc0NCBcdWFkNmNcdWQ2MDRcdWQ1NThcdWIyOTQgXHVhY2Y1XHVjMmRkXHVjODAxXHVjNzc4ICIgKworICAgICAgICAiXHViYzI5XHViYzk1XHVjNzg1XHViMmM4XHViMmU0LiBcdWM3NzRcdWIyOTQgXHViOWNlXHVjNzQwIFx1YzZiNFx1YzYwMSAiICsKKyAgICAgICAgIlx1Y2NiNFx1YzgxYywgXHVjNjk0XHVjOTk4IFx1YzBhY1x1YzZhOVx1YjQxOFx1YjI5NCBcdWJhYThcdWI0ZTAgIiArCisgICAgICAgICJcdWJlMGNcdWI3N2NcdWM2YjBcdWM4MDAgXHViYzBmIFx1YWUzMFx1ZDBjMCBcdWI5Y2VcdWM3NDAgIiArCisgICAgICAgICJcdWM4MWNcdWQ0ODhcdWM1ZDBcdWMxMWMgIiArCisgICAgICAgICJcdWM5YzBcdWM2ZDBcdWI0MjlcdWIyYzhcdWIyZTQuIFx1YzcyMFx1YjJjOFx1Y2Y1NFx1YjRkYyAiICsKKyAgICAgICAgIlx1ZDQ1Y1x1YzkwMFx1Yzc1OCBcdWJkODBcdWMwYzFcdWFjZmMgXHVjNzc0XHViOTdjICIgKworICAgICAgICAiXHVjOWMwXHVjNmQwXHVkNTU4XHViMjk0IFx1YjNjNFx1YWQ2Y1x1Yzc1OCBcdWFjMDBcdWM2YTlcdWMxMzFcdWM3NDAgIiArCisgICAgICAgICJcdWNkNWNcdWFkZmMgXHVjODA0IFx1YzEzOFx1YWNjNFx1YzVkMCBcdWJkODhcdWFjZTAgXHVjNzg4XHViMjk0ICIgKworICAgICAgICAiXHVhZTMwXHVjMjIwIFx1YWNiZFx1ZDVhNVx1YzVkMFx1YzExYyBcdWFjMDBcdWM3YTUgXHVjOTExXHVjNjk0XHVkNTVjICIgKworICAgICAgICAiXHViZDgwXHViZDg0XHVjNzQ0IFx1Y2MyOFx1YzljMFx1ZDU1OFx1YWNlMCBcdWM3ODhcdWMyYjVcdWIyYzhcdWIyZTQuICIgKworICAgICAgICAKKyAgICAgICAgIlx1YzcyMFx1YjJjOFx1Y2Y1NFx1YjRkY1x1Yjk3YyAiICsKKyAgICAgICAgIlx1ZDA3NFx1Yjc3Y1x1Yzc3NFx1YzViOFx1ZDJiOC1cdWMxMWNcdWJjODQgXHViNjEwXHViMjk0ICIgKworICAgICAgICAiXHViMmU0XHVjOTExLVx1YzVmMFx1YWNiMCBcdWM3NTFcdWM2YTkgXHVkNTA0XHViODVjXHVhZGY4XHViN2E4XHVhY2ZjICIgKworICAgICAgICAiXHVjNmY5IFx1YzBhY1x1Yzc3NFx1ZDJiOFx1YzVkMCBcdWQxYjVcdWQ1NjlcdWQ1NThcdWJhNzQgIiArCisgICAgICAgICJcdWI4MDhcdWFjNzBcdWMyZGMgXHViYjM4XHVjNzkwIFx1YzEzOFx1ZDJiOCBcdWMwYWNcdWM2YTlcdWM1ZDAgIiArCisgICAgICAgICJcdWM3ODhcdWM1YjRcdWMxMWMgXHVjMGMxXHViMmY5XHVkNTVjIFx1YmU0NFx1YzZhOSBcdWM4MDhcdWFjMTAgIiArCisgICAgICAgICJcdWQ2YThcdWFjZmNcdWFjMDAgIiArCisgICAgICAgICJcdWIwOThcdWQwYzBcdWIwYTlcdWIyYzhcdWIyZTQuIFx1YzcyMFx1YjJjOFx1Y2Y1NFx1YjRkY1x1Yjk3YyAiICsKKyAgICAgICAgIlx1ZDFiNVx1ZDU3NCBcdWI5YWNcdWM1ZDRcdWM5YzBcdWIyYzhcdWM1YjRcdWI5YzEgXHVjNWM2XHVjNzc0ICIgKworICAgICAgICAiXHViMmU0XHVjOTExIFx1ZDUwY1x1YjdhYlx1ZDNmYywgXHVjNWI4XHVjNWI0IFx1YmMwZiBcdWFkNmRcdWFjMDAgIiArCisgICAgICAgICJcdWFjMDRcdWM1ZDAgXHViMmU4XHVjNzdjIFx1YzE4Y1x1ZDUwNFx1ZDJiOFx1YzZlOFx1YzViNCAiICsKKyAgICAgICAgIlx1ZDUwY1x1YjdhYlx1ZDNmYyBcdWI2MTBcdWIyOTQgXHViMmU4XHVjNzdjIFx1YzZmOSAiICsKKyAgICAgICAgIlx1YzBhY1x1Yzc3NFx1ZDJiOFx1Yjk3YyBcdWJhYTlcdWQ0NWNcdWI4NWMgXHVjMGJjXHVjNzQ0IFx1YzIxOCAiICsKKyAgICAgICAgIlx1Yzc4OFx1YzJiNVx1YjJjOFx1YjJlNC4gXHVjNzc0XHViOTdjIFx1YzBhY1x1YzZhOVx1ZDU1OFx1YmE3NCAiICsKKyAgICAgICAgIlx1YjM3MFx1Yzc3NFx1ZDEzMFx1Yjk3YyBcdWMxOTBcdWMwYzEgXHVjNWM2XHVjNzc0IFx1YzVlY1x1YjdlYyAiICsKKyAgICAgICAgIlx1YzJkY1x1YzJhNFx1ZDE1Y1x1Yzc0NCBcdWQxYjVcdWQ1NzQgXHVjODA0XHVjMWExXHVkNTYwIFx1YzIxOCAiICsKKyAgICAgICAgIlx1Yzc4OFx1YzJiNVx1YjJjOFx1YjJlNC4gIiArCisgICAgICAgIAorICAgICAgICAiXHVjNzIwXHViMmM4XHVjZjU0XHViNGRjIFx1Y2Y1OFx1YzE4Y1x1YzJkY1x1YzVjNFx1YzVkMCBcdWIzMDBcdWQ1NzQgIiArCisgICAgICAgICJcdWM3MjBcdWIyYzhcdWNmNTRcdWI0ZGMgXHVjZjU4XHVjMThjXHVjMmRjXHVjNWM0XHVjNzQwICIgKworICAgICAgICAiXHViZTQ0XHVjNjAxXHViOWFjIFx1Yzg3MFx1YzljMVx1YzczY1x1Yjg1Y1x1YzExYyBcdWQ2MDRcdWIzMDAgIiArCisgICAgICAgICJcdWMxOGNcdWQ1MDRcdWQyYjhcdWM2ZThcdWM1YjQgXHVjODFjXHVkNDg4XHVhY2ZjICIgKworICAgICAgICAiXHVkNDVjXHVjOTAwXHVjNWQwXHVjMTFjIFx1ZDE0ZFx1YzJhNFx1ZDJiOFx1Yzc1OCBcdWQ0NWNcdWQ2MDRcdWM3NDQgIiArCisgICAgICAgICJcdWM5YzBcdWM4MTVcdWQ1NThcdWIyOTQgXHVjNzIwXHViMmM4XHVjZjU0XHViNGRjIFx1ZDQ1Y1x1YzkwMFx1Yzc1OCAiICsKKyAgICAgICAgIlx1YzBhY1x1YzZhOVx1Yzc0NCBcdWFjMWNcdWJjMWNcdWQ1NThcdWFjZTAgXHVkNjU1XHVjN2E1XHVkNTU4XHViYTcwICIgKworICAgICAgICAiXHVjN2E1XHViODI0XHVkNTU4XHVhZTMwIFx1YzcwNFx1ZDU3NCAiICsKKyAgICAgICAgIlx1YzEzOFx1YzZjY1x1Yzg0Y1x1YzJiNVx1YjJjOFx1YjJlNC4gXHVjZjU4XHVjMThjXHVjMmRjXHVjNWM0ICIgKworICAgICAgICAiXHViYTY0XHViYzg0XHVjMjdkXHVjNzQwIFx1Y2VmNFx1ZDRlOFx1ZDEzMFx1YzY0MCBcdWM4MTVcdWJjZjQgIiArCisgICAgICAgICJcdWNjOThcdWI5YWMgXHVjMGIwXHVjNWM1XHVjNWQwIFx1Yzg4NVx1YzBhY1x1ZDU1OFx1YWNlMCBcdWM3ODhcdWIyOTQgIiArCisgICAgICAgICJcdWFkMTFcdWJjOTRcdWM3MDRcdWQ1NWMgXHVkNjhjXHVjMGFjIFx1YmMwZiBcdWM4NzBcdWM5YzFcdWM3NTggIiArCisgICAgICAgICJcdWJjOTRcdWM3MDRcdWI5N2MgIiArCisgICAgICAgICJcdWIwOThcdWQwYzBcdWIwYzVcdWIyYzhcdWIyZTQuIFx1Y2Y1OFx1YzE4Y1x1YzJkY1x1YzVjNFx1Yzc1OCAiICsKKyAgICAgICAgIlx1YzdhY1x1YzgxNVx1Yzc0MCBcdWM4MDRcdWM4MDFcdWM3M2NcdWI4NWMgXHVkNjhjXHViZTQ0XHVjNWQwICIgKworICAgICAgICAiXHVjNzU4XHVkNTc0IFx1Y2RhOVx1YjJmOVx1YjQyOVx1YjJjOFx1YjJlNC4gXHVjNzIwXHViMmM4XHVjZjU0XHViNGRjICIgKworICAgICAgICAiXHVjZWU4XHVjMThjXHVjMmRjXHVjNWM0XHVjNWQwXHVjMTFjXHVjNzU4IFx1YmE2NFx1YmM4NFx1YzI3ZFx1Yzc0MCAiICsKKyAgICAgICAgIlx1YzgwNCBcdWMxMzhcdWFjYzQgXHVjNWI0XHViMjkwIFx1YWNmM1x1YzVkMFx1YzExY1x1YjA5OCAiICsKKyAgICAgICAgIlx1YzcyMFx1YjJjOFx1Y2Y1NFx1YjRkYyBcdWQ0NWNcdWM5MDBcdWM3NDQgXHVjOWMwXHVjNmQwXHVkNTU4XHVhY2UwICIgKworICAgICAgICAiXHVhZGY4IFx1ZDY1NVx1YzdhNVx1YWNmYyBcdWFkNmNcdWQ2MDRcdWM3NDQgIiArCisgICAgICAgICJcdWM5YzBcdWM2ZDBcdWQ1NThcdWFjZTBcdWM3OTBcdWQ1NThcdWIyOTQgXHVjODcwXHVjOWMxXHVhY2ZjICIgKworICAgICAgICAiXHVhYzFjXHVjNzc4XHVjNWQwXHVhYzhjIFx1YWMxY1x1YmMyOVx1YjQxOFx1YzViNCAiICsKKyAgICAgICAgIlx1Yzc4OFx1YzJiNVx1YjJjOFx1YjJlNC4gIiArCisgICAgICAgIAorICAgICAgICAiXHViMzU0IFx1Yzc5MFx1YzEzOFx1ZDU1YyBcdWIwYjRcdWM2YTlcdWM3NDAgXHVjNmE5XHVjNWI0XHVjOWQxLCAiICsKKyAgICAgICAgIlx1YzYwOFx1YzgxYyBcdWM3MjBcdWIyYzhcdWNmNTRcdWI0ZGMgXHVjMGFjXHVjNmE5IFx1YWMwMFx1YjJhNSAiICsKKyAgICAgICAgIlx1YzgxY1x1ZDQ4OCwgXHVhZTMwXHVjMjIwIFx1YzgxNVx1YmNmNCBcdWJjMGYgXHVhZTMwXHVkMGMwICIgKworICAgICAgICAiXHVjNzIwXHVjNmE5XHVkNTVjIFx1YzgxNVx1YmNmNFx1Yjk3YyAiICsKKyAgICAgICAgIlx1Y2MzOFx1Yzg3MFx1ZDU1OFx1YzJlZFx1YzJkY1x1YzYyNC4iOworCisgICAgLy8gVHJhbnNsaXRlcmF0b3JUZXN0IG92ZXJyaWRlCisgICAgYm9vbGVhbiBleHBlY3RBdXgoU3RyaW5nIHRhZywgU3RyaW5nIHN1bW1hcnksIGJvb2xlYW4gcGFzcywKKyAgICAgICAgICAgICAgICAgICBTdHJpbmcgZXhwZWN0ZWRSZXN1bHQpIHsKKyAgICAgICAgcmV0dXJuIHN1cGVyLmV4cGVjdEF1eCh0YWcsIGphbW9Ub05hbWUoc3VtbWFyeSksCisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzLCBqYW1vVG9OYW1lKGV4cGVjdGVkUmVzdWx0KSk7CisgICAgfQorCisgICAgLy8gVVRJTElUSUVTCisKKyAgICAvLyBOb3RlOiBUaGUgZm9sbG93aW5nIGNvdWxkIG1vcmUgZWFzaWx5IGJlIGRvbmUgd2l0aCBhIHRyYW5zbGl0ZXJhdG9yIQorICAgIHN0YXRpYyBmaW5hbCBTdHJpbmdbXSBKQU1PX05BTUVTID0geworICAgICAgICAiKEdpKSIsICJcdTExMDAiLAorICAgICAgICAiKEdHaSkiLCAiXHUxMTAxIiwKKyAgICAgICAgIihOaSkiLCAiXHUxMTAyIiwKKyAgICAgICAgIihEaSkiLCAiXHUxMTAzIiwKKyAgICAgICAgIihERCkiLCAiXHUxMTA0IiwKKyAgICAgICAgIihSKSIsICJcdTExMDUiLAorICAgICAgICAiKE1pKSIsICJcdTExMDYiLAorICAgICAgICAiKEJpKSIsICJcdTExMDciLAorICAgICAgICAiKEJCKSIsICJcdTExMDgiLAorICAgICAgICAiKFNpKSIsICJcdTExMDkiLAorICAgICAgICAiKFNTaSkiLCAiXHUxMTBBIiwKKyAgICAgICAgIihJRVVORykiLCAiXHUxMTBCIiwKKyAgICAgICAgIihKaSkiLCAiXHUxMTBDIiwKKyAgICAgICAgIihKSikiLCAiXHUxMTBEIiwKKyAgICAgICAgIihDaSkiLCAiXHUxMTBFIiwKKyAgICAgICAgIihLaSkiLCAiXHUxMTBGIiwKKyAgICAgICAgIihUaSkiLCAiXHUxMTEwIiwKKyAgICAgICAgIihQaSkiLCAiXHUxMTExIiwKKyAgICAgICAgIihIaSkiLCAiXHUxMTEyIiwKKyAgICAgICAgCisgICAgICAgICIoQSkiLCAiXHUxMTYxIiwKKyAgICAgICAgIihBRSkiLCAiXHUxMTYyIiwKKyAgICAgICAgIihZQSkiLCAiXHUxMTYzIiwKKyAgICAgICAgIihZQUUpIiwgIlx1MTE2NCIsCisgICAgICAgICIoRU8pIiwgIlx1MTE2NSIsCisgICAgICAgICIoRSkiLCAiXHUxMTY2IiwKKyAgICAgICAgIihZRU8pIiwgIlx1MTE2NyIsCisgICAgICAgICIoWUUpIiwgIlx1MTE2OCIsCisgICAgICAgICIoTykiLCAiXHUxMTY5IiwKKyAgICAgICAgIihXQSkiLCAiXHUxMTZBIiwKKyAgICAgICAgIihXQUUpIiwgIlx1MTE2QiIsCisgICAgICAgICIoT0UpIiwgIlx1MTE2QyIsCisgICAgICAgICIoWU8pIiwgIlx1MTE2RCIsCisgICAgICAgICIoVSkiLCAiXHUxMTZFIiwKKyAgICAgICAgIihXRU8pIiwgIlx1MTE2RiIsCisgICAgICAgICIoV0UpIiwgIlx1MTE3MCIsCisgICAgICAgICIoV0kpIiwgIlx1MTE3MSIsCisgICAgICAgICIoWVUpIiwgIlx1MTE3MiIsCisgICAgICAgICIoRVUpIiwgIlx1MTE3MyIsCisgICAgICAgICIoWUkpIiwgIlx1MTE3NCIsCisgICAgICAgICIoSSkiLCAiXHUxMTc1IiwKKworICAgICAgICAiKEdmKSIsICJcdTExQTgiLAorICAgICAgICAiKEdHZikiLCAiXHUxMUE5IiwKKyAgICAgICAgIihHUykiLCAiXHUxMUFBIiwKKyAgICAgICAgIihOZikiLCAiXHUxMUFCIiwKKyAgICAgICAgIihOSikiLCAiXHUxMUFDIiwKKyAgICAgICAgIihOSCkiLCAiXHUxMUFEIiwKKyAgICAgICAgIihEZikiLCAiXHUxMUFFIiwKKyAgICAgICAgIihMKSIsICJcdTExQUYiLAorICAgICAgICAiKExHKSIsICJcdTExQjAiLAorICAgICAgICAiKExNKSIsICJcdTExQjEiLAorICAgICAgICAiKExCKSIsICJcdTExQjIiLAorICAgICAgICAiKExTKSIsICJcdTExQjMiLAorICAgICAgICAiKExUKSIsICJcdTExQjQiLAorICAgICAgICAiKExQKSIsICJcdTExQjUiLAorICAgICAgICAiKExIKSIsICJcdTExQjYiLAorICAgICAgICAiKE1mKSIsICJcdTExQjciLAorICAgICAgICAiKEJmKSIsICJcdTExQjgiLAorICAgICAgICAiKEJTKSIsICJcdTExQjkiLAorICAgICAgICAiKFNmKSIsICJcdTExQkEiLAorICAgICAgICAiKFNTZikiLCAiXHUxMUJCIiwKKyAgICAgICAgIihORykiLCAiXHUxMUJDIiwKKyAgICAgICAgIihKZikiLCAiXHUxMUJEIiwKKyAgICAgICAgIihDZikiLCAiXHUxMUJFIiwKKyAgICAgICAgIihLZikiLCAiXHUxMUJGIiwKKyAgICAgICAgIihUZikiLCAiXHUxMUMwIiwKKyAgICAgICAgIihQZikiLCAiXHUxMUMxIiwKKyAgICAgICAgIihIZikiLCAiXHUxMUMyIiwKKyAgICB9OworCisgICAgc3RhdGljIEhhc2h0YWJsZSBKQU1PX1RPX05BTUU7CisgICAgc3RhdGljIEhhc2h0YWJsZSBOQU1FX1RPX0pBTU87CisKKyAgICBzdGF0aWMgeworICAgICAgICBKQU1PX1RPX05BTUUgPSBuZXcgSGFzaHRhYmxlKCk7CisgICAgICAgIE5BTUVfVE9fSkFNTyA9IG5ldyBIYXNodGFibGUoKTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPEpBTU9fTkFNRVMubGVuZ3RoOyBpKz0yKSB7CisgICAgICAgICAgICBKQU1PX1RPX05BTUUucHV0KEpBTU9fTkFNRVNbaSsxXSwgSkFNT19OQU1FU1tpXSk7CisgICAgICAgICAgICBOQU1FX1RPX0pBTU8ucHV0KEpBTU9fTkFNRVNbaV0sIEpBTU9fTkFNRVNbaSsxXSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb252ZXJ0IHNob3J0IG5hbWVzIHRvIGFjdHVhbCBqYW1vLiAgRS5nLiwgIngoTEcpeSIgcmV0dXJucworICAgICAqICJ4XHUxMUIweSIuICBTZWUgSkFNT19OQU1FUyBmb3IgdGFibGUgb2YgbmFtZXMuCisgICAgICovCisgICAgc3RhdGljIFN0cmluZyBuYW1lVG9KYW1vKFN0cmluZyBpbnB1dCkgeworICAgICAgICBTdHJpbmdCdWZmZXIgYnVmID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBmb3IgKGludCBpPTA7IGk8aW5wdXQubGVuZ3RoKCk7ICsraSkgeworICAgICAgICAgICAgY2hhciBjID0gaW5wdXQuY2hhckF0KGkpOworICAgICAgICAgICAgaWYgKGMgPT0gJygnKSB7CisgICAgICAgICAgICAgICAgaW50IGogPSBpbnB1dC5pbmRleE9mKCcpJywgaSsxKTsKKyAgICAgICAgICAgICAgICBpZiAoKGotaSkgPj0gMiAmJiAoai1pKSA8PSA2KSB7IC8vICIoQSkiLCAiKElFVU5HKSIKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGphbW8gPSAoU3RyaW5nKSBOQU1FX1RPX0pBTU8uZ2V0KGlucHV0LnN1YnN0cmluZyhpLCBqKzEpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGphbW8gIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZChqYW1vKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBqOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBidWYuYXBwZW5kKGMpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBidWYudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb252ZXJ0IGphbW8gdG8gc2hvcnQgbmFtZXMuICBFLmcuLCAieFx1MTFCMHkiIHJldHVybnMKKyAgICAgKiAieChMRyl5Ii4gIFNlZSBKQU1PX05BTUVTIGZvciB0YWJsZSBvZiBuYW1lcy4KKyAgICAgKi8KKyAgICBzdGF0aWMgU3RyaW5nIGphbW9Ub05hbWUoU3RyaW5nIGlucHV0KSB7CisgICAgICAgIFN0cmluZ0J1ZmZlciBidWYgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxpbnB1dC5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBjaGFyIGMgPSBpbnB1dC5jaGFyQXQoaSk7CisgICAgICAgICAgICBpZiAoYyA+PSAweDExMDAgJiYgYyA8PSAweDExQzIpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgbmFtZSA9IChTdHJpbmcpIEpBTU9fVE9fTkFNRS5nZXQoaW5wdXQuc3Vic3RyaW5nKGksIGkrMSkpOworICAgICAgICAgICAgICAgIGlmIChuYW1lICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZChuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnVmLmFwcGVuZChjKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYnVmLnRvU3RyaW5nKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3RyYW5zbGl0L1JlcGxhY2VhYmxlVGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3RyYW5zbGl0L1JlcGxhY2VhYmxlVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmZjNTE5YTIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvdHJhbnNsaXQvUmVwbGFjZWFibGVUZXN0LmphdmEKQEAgLTAsMCArMSwxOTUgQEAKKy8qKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMS0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvdHJhbnNsaXQvUmVwbGFjZWFibGVUZXN0LmphdmEsdiAkCisgKiAkRGF0ZTogMjAwMi8xMi8xMSAwMjowOTowOCAkCisgKiAkUmV2aXNpb246IDEuMTYgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3QudHJhbnNsaXQ7CisKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYudGVzdC4qOworaW1wb3J0IGNvbS5pYm0uaWN1LmxhbmcuKjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0Lio7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5VdGlsaXR5OworaW1wb3J0IGphdmEuaW8uKjsKK2ltcG9ydCBqYXZhLnV0aWwuQml0U2V0OworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudGV4dC5QYXJzZUV4Y2VwdGlvbjsKKworLyoqCisgKiBAdGVzdAorICogQHN1bW1hcnkgUm91bmQgdHJpcCB0ZXN0IG9mIFRyYW5zbGl0ZXJhdG9yCisgKi8KK3B1YmxpYyBjbGFzcyBSZXBsYWNlYWJsZVRlc3QgZXh0ZW5kcyBUZXN0Rm13ayB7CisJCisJcHVibGljIHN0YXRpYyBmaW5hbCBib29sZWFuIExBVEVSX1RIQU5fMl8xID0gdHJ1ZTsKKwkKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgbmV3IFJlcGxhY2VhYmxlVGVzdCgpLnJ1bihhcmdzKTsKKyAgICB9CisgIAorICAgIHB1YmxpYyB2b2lkIFRlc3QoKSB0aHJvd3MgSU9FeGNlcHRpb24sIFBhcnNlRXhjZXB0aW9uIHsKKyAgICAgICAgY2hlY2soIkxvd2VyIiwgIkFCQ0QiLCAiMTIzNCIpOworICAgICAgICBjaGVjaygiVXBwZXIiLCAiYWJjZFx1MDBERiIsICIxMjM0NTUiKTsgLy8gbXVzdCBtYXAgMDBERiB0byBTUworICAgICAgICBjaGVjaygiVGl0bGUiLCAiYUJDRCIsICIxMjM0Iik7CisgICAgICAgIGNoZWNrKCJORkMiLCAiQVx1MDMwMEVcdTAzMDAiLCAiMTMiKTsKKyAgICAgICAgY2hlY2soIk5GRCIsICJcdTAwQzBcdTAwQzgiLCAiMTEyMiIpOworICAgICAgICBpZiAoIUxBVEVSX1RIQU5fMl8xKSByZXR1cm47CisgICAgICAgIGNoZWNrKCIqKHgpID4gQSAkMSBCIiwgInd4eSIsICIxMTIyMyIpOworICAgICAgICBjaGVjaygiKih4KSh5KSA+IEEgJDIgQiAkMSBDICQyIEQiLCAid3h5eiIsICIxMTMzMjIzMzQiKTsKKyAgICAgICAgY2hlY2soIiooeCkoeSkoeikgPiBBICQzIEIgJDIgQyAkMSBEIiwgInd4eXp1IiwgIjExNDQzMzIyNSIpOworCS8vIERpc2FibGVkIGZvciAyLjQuICBUT0RPIFJldmlzaXQgaW4gMi42IG9yIGxhdGVyLgorICAgICAgICAvL2NoZWNrKCIqeCA+IGEiLCAieHl6IiwgIjIyMyIpOyAvLyBleHBlY3QgIjEyMyI/CisgICAgICAgIC8vY2hlY2soIip4ID4gYSIsICJ3eHkiLCAiMTEzIik7IC8vIGV4cGVjdCAiMTIzIj8KKyAgICAgICAgLy9jaGVjaygiKnggPiBhIiwgIlx1RkZGRnh5IiwgIl8zMyIpOyAvLyBleHBlY3QgIl8yMyI/CisgICAgICAgIC8vY2hlY2soIiooeCkgPiBBICQxIEIiLCAiXHVGRkZGeHkiLCAiX18yMjMiKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBjaGVjayhTdHJpbmcgdHJhbnNsaXRlcmF0b3JOYW1lLCBTdHJpbmcgdGVzdCwgU3RyaW5nIHNob3VsZFByb2R1Y2VTdHlsZXMpIHsKKyAgICAgICAgVGVzdFJlcGxhY2VhYmxlIHRyID0gbmV3IFRlc3RSZXBsYWNlYWJsZSh0ZXN0LCBudWxsKTsKKyAgICAgICAgU3RyaW5nIG9yaWdpbmFsID0gdHIudG9TdHJpbmcoKTsKKyAgICAgICAgCisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQ7CisgICAgICAgIGlmICh0cmFuc2xpdGVyYXRvck5hbWUuc3RhcnRzV2l0aCgiKiIpKSB7CisgICAgICAgIAl0cmFuc2xpdGVyYXRvck5hbWUgPSB0cmFuc2xpdGVyYXRvck5hbWUuc3Vic3RyaW5nKDEpOworICAgICAgICAJdCA9IFRyYW5zbGl0ZXJhdG9yLmNyZWF0ZUZyb21SdWxlcygidGVzdCIsIHRyYW5zbGl0ZXJhdG9yTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsaXRlcmF0b3IuRk9SV0FSRCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgIAl0ID0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UodHJhbnNsaXRlcmF0b3JOYW1lKTsKKyAgICAgICAgfQorICAgICAgICB0LnRyYW5zbGl0ZXJhdGUodHIpOworICAgICAgICBTdHJpbmcgbmV3U3R5bGVzID0gdHIuZ2V0U3R5bGVzKCk7CisgICAgICAgIGlmICghbmV3U3R5bGVzLmVxdWFscyhzaG91bGRQcm9kdWNlU3R5bGVzKSkgeworICAgICAgICAgICAgZXJybG4oIkZBSUwgU3R5bGVzOiAiICsgdHJhbnNsaXRlcmF0b3JOYW1lICsgIiAoICIKKyAgICAgICAgICAgICAgICArIG9yaWdpbmFsICsgIiApID0+ICIgKyB0ci50b1N0cmluZygpICsgIjsgc2hvdWxkIGJlIHsiICsgc2hvdWxkUHJvZHVjZVN0eWxlcyArICJ9ISIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbG9nbG4oIk9LOiAiICsgdHJhbnNsaXRlcmF0b3JOYW1lICsgIiAoICIgKyBvcmlnaW5hbCArICIgKSA9PiAiICsgdHIudG9TdHJpbmcoKSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmICghdHIuaGFzTWV0YURhdGEoKSB8fCB0ci5jaGFycy5oYXNNZXRhRGF0YSgpIAorICAgICAgICAgICAgfHwgdHIuc3R5bGVzLmhhc01ldGFEYXRhKCkpIHsKKyAgICAgICAgICAgIGVycmxuKCJGYWlsIGhhc01ldGFEYXRhKCkiKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKworICAgIC8qKgorICAgICAqIFRoaXMgaXMgYSB0ZXN0IGNsYXNzIHRoYXQgc2ltdWxhdGVzIHN0eWxlZCB0ZXh0LgorICAgICAqIEl0IGFzc29jaWF0ZXMgYSBzdHlsZSBudW1iZXIgKDAuLjY1NTM1KSB3aXRoIGVhY2ggY2hhcmFjdGVyLAorICAgICAqIGFuZCBtYWludGFpbnMgdGhhdCBzdHlsZSBpbiB0aGUgbm9ybWFsIGZhc2hpb246CisgICAgICogV2hlbiBzZXR0aW5nIHRleHQgZnJvbSByYXcgc3RyaW5nIG9yIGNoYXJhY3RlcnMsPGJyPgorICAgICAqIFNldCB0aGUgc3R5bGVzIHRvIHRoZSBzdHlsZSBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIHJlcGxhY2VkLjxicj4KKyAgICAgKiBJZiBubyBjaGFyYWN0ZXJzIGFyZSByZXBsYWNlZCwgdXNlIHRoZSBzdHlsZSBvZiB0aGUgcHJldmlvdXMgY2hhcmFjdGVyLjxicj4KKyAgICAgKiBJZiBhdCBzdGFydCwgdXNlIHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVyPGJyPgorICAgICAqIE90aGVyd2lzZSB1c2UgTk9fU1RZTEUuCisgICAgICovCisgICAgc3RhdGljIGNsYXNzIFRlc3RSZXBsYWNlYWJsZSBpbXBsZW1lbnRzIFJlcGxhY2VhYmxlIHsKKyAgICAgICAgUmVwbGFjZWFibGVTdHJpbmcgY2hhcnM7CisgICAgICAgIFJlcGxhY2VhYmxlU3RyaW5nIHN0eWxlczsKKyAgICAgICAgCisgICAgICAgIHN0YXRpYyBmaW5hbCBjaGFyIE5PX1NUWUxFID0gJ18nOworCisgICAgICAgIHN0YXRpYyBmaW5hbCBjaGFyIE5PX1NUWUxFX01BUksgPSAweEZGRkY7CisgICAgICAgIAorICAgICAgICBUZXN0UmVwbGFjZWFibGUgKFN0cmluZyB0ZXh0LCBTdHJpbmcgc3R5bGVzKSB7CisgICAgICAgICAgICBjaGFycyA9IG5ldyBSZXBsYWNlYWJsZVN0cmluZyh0ZXh0KTsKKyAgICAgICAgICAgIFN0cmluZ0J1ZmZlciBzID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0ZXh0Lmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3R5bGVzICE9IG51bGwgJiYgaSA8IHN0eWxlcy5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgICAgICBzLmFwcGVuZChzdHlsZXMuY2hhckF0KGkpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAodGV4dC5jaGFyQXQoaSkgPT0gTk9fU1RZTEVfTUFSSykgeworICAgICAgICAgICAgICAgICAgICAgICAgcy5hcHBlbmQoTk9fU1RZTEUpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgcy5hcHBlbmQoKGNoYXIpIChpICsgJzEnKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0aGlzLnN0eWxlcyA9IG5ldyBSZXBsYWNlYWJsZVN0cmluZyhzLnRvU3RyaW5nKCkpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwdWJsaWMgU3RyaW5nIGdldFN0eWxlcygpIHsKKyAgICAgICAgICAgIHJldHVybiBzdHlsZXMudG9TdHJpbmcoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgICAgIHJldHVybiBjaGFycy50b1N0cmluZygpICsgInsiICsgc3R5bGVzLnRvU3RyaW5nKCkgKyAifSI7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgU3RyaW5nIHN1YnN0cmluZyhpbnQgc3RhcnQsIGludCBsaW1pdCkgeworICAgICAgICAgICAgcmV0dXJuIGNoYXJzLnN1YnN0cmluZyhzdGFydCwgbGltaXQpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGludCBsZW5ndGgoKSB7CisgICAgICAgICAgICByZXR1cm4gY2hhcnMubGVuZ3RoKCk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgY2hhciBjaGFyQXQoaW50IG9mZnNldCkgeworICAgICAgICAgICAgcmV0dXJuIGNoYXJzLmNoYXJBdChvZmZzZXQpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGludCBjaGFyMzJBdChpbnQgb2Zmc2V0KSB7CisgICAgICAgICAgICByZXR1cm4gY2hhcnMuY2hhcjMyQXQob2Zmc2V0KTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIGdldENoYXJzKGludCBzcmNTdGFydCwgaW50IHNyY0xpbWl0LCBjaGFyIGRzdFtdLCBpbnQgZHN0U3RhcnQpIHsKKyAgICAgICAgICAgIGNoYXJzLmdldENoYXJzKHNyY1N0YXJ0LCBzcmNMaW1pdCwgZHN0LCBkc3RTdGFydCk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCByZXBsYWNlKGludCBzdGFydCwgaW50IGxpbWl0LCBTdHJpbmcgdGV4dCkgeworICAgICAgICAgICAgaWYgKHN1YnN0cmluZyhzdGFydCxsaW1pdCkuZXF1YWxzKHRleHQpKSByZXR1cm47IC8vIE5PIEFDVElPTiEKKyAgICAgICAgICAgIGlmIChERUJVRykgU3lzdGVtLm91dC5wcmludChVdGlsaXR5LmVzY2FwZSh0b1N0cmluZygpICsgIiAtPiByZXBsYWNlKCIgKyBzdGFydCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIsIiArIGxpbWl0ICsgIiwiICsgdGV4dCkgKyAiKSAtPiAiKTsKKyAgICAgICAgICAgIGNoYXJzLnJlcGxhY2Uoc3RhcnQsIGxpbWl0LCB0ZXh0KTsKKyAgICAgICAgICAgIGZpeFN0eWxlcyhzdGFydCwgbGltaXQsIHRleHQubGVuZ3RoKCkpOworICAgICAgICAgICAgaWYgKERFQlVHKSBTeXN0ZW0ub3V0LnByaW50bG4oVXRpbGl0eS5lc2NhcGUodG9TdHJpbmcoKSkpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwdWJsaWMgdm9pZCByZXBsYWNlKGludCBzdGFydCwgaW50IGxpbWl0LCBjaGFyW10gY2hhcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNoYXJzU3RhcnQsIGludCBjaGFyc0xlbikgeworICAgICAgICAgICAgaWYgKHN1YnN0cmluZyhzdGFydCxsaW1pdCkuZXF1YWxzKG5ldyBTdHJpbmcoY2hhcnMsIGNoYXJzU3RhcnQsIGNoYXJzTGVuLWNoYXJzU3RhcnQpKSkgcmV0dXJuOyAvLyBOTyBBQ1RJT04hCisgICAgICAgICAgICB0aGlzLmNoYXJzLnJlcGxhY2Uoc3RhcnQsIGxpbWl0LCBjaGFycywgY2hhcnNTdGFydCwgY2hhcnNMZW4pOworICAgICAgICAgICAgZml4U3R5bGVzKHN0YXJ0LCBsaW1pdCwgY2hhcnNMZW4pOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBmaXhTdHlsZXMoaW50IHN0YXJ0LCBpbnQgbGltaXQsIGludCBuZXdMZW4pIHsKKyAgICAgICAgICAgIGNoYXIgbmV3U3R5bGUgPSBOT19TVFlMRTsKKyAgICAgICAgICAgIGlmIChzdGFydCAhPSBsaW1pdCAmJiBzdHlsZXMuY2hhckF0KHN0YXJ0KSAhPSBOT19TVFlMRSkgeworICAgICAgICAgICAgICAgIG5ld1N0eWxlID0gc3R5bGVzLmNoYXJBdChzdGFydCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHN0YXJ0ID4gMCAmJiBjaGFyQXQoc3RhcnQtMSkgIT0gTk9fU1RZTEVfTUFSSykgeworICAgICAgICAgICAgICAgIG5ld1N0eWxlID0gc3R5bGVzLmNoYXJBdChzdGFydC0xKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobGltaXQgPCBzdHlsZXMubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICBuZXdTdHlsZSA9IHN0eWxlcy5jaGFyQXQobGltaXQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gZHVtYiBpbXBsZW1lbnRhdGlvbiBmb3Igbm93LgorICAgICAgICAgICAgU3RyaW5nQnVmZmVyIHMgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG5ld0xlbjsgKytpKSB7CisgICAgICAgICAgICAgICAgLy8gdGhpcyBkb2Vzbid0IHJlYWxseSBoYW5kbGUgYW4gZW1iZWRkZWQgTk9fU1RZTEVfTUFSSworICAgICAgICAgICAgICAgIC8vIGluIHRoZSBtaWRkbGUgb2YgYSBsb25nIHJ1biBvZiBjaGFyYWN0ZXJzIHJpZ2h0IC0tIGJ1dAorICAgICAgICAgICAgICAgIC8vIHRoYXQgY2FzZSBzaG91bGRuJ3QgaGFwcGVuIGFueXdheQorICAgICAgICAgICAgICAgIGlmIChjaGFyQXQoc3RhcnQraSkgPT0gTk9fU1RZTEVfTUFSSykgeworICAgICAgICAgICAgICAgICAgICBzLmFwcGVuZChOT19TVFlMRSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcy5hcHBlbmQobmV3U3R5bGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0eWxlcy5yZXBsYWNlKHN0YXJ0LCBsaW1pdCwgcy50b1N0cmluZygpKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIGNvcHkoaW50IHN0YXJ0LCBpbnQgbGltaXQsIGludCBkZXN0KSB7CisgICAgICAgICAgICBjaGFycy5jb3B5KHN0YXJ0LCBsaW1pdCwgZGVzdCk7CisgICAgICAgICAgICBzdHlsZXMuY29weShzdGFydCwgbGltaXQsIGRlc3QpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwdWJsaWMgYm9vbGVhbiBoYXNNZXRhRGF0YSgpIHsKKyAgICAgICAgCXJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGZpbmFsIGJvb2xlYW4gREVCVUcgPSBmYWxzZTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvdHJhbnNsaXQvUm91bmRUcmlwVGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3RyYW5zbGl0L1JvdW5kVHJpcFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5jYzBlMTc5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3RyYW5zbGl0L1JvdW5kVHJpcFRlc3QuamF2YQpAQCAtMCwwICsxLDE0MjkgQEAKKy8qKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMS0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvdHJhbnNsaXQvUm91bmRUcmlwVGVzdC5qYXZhLHYgJAorICogJERhdGU6IDIwMDIvMTIvMDkgMTc6MTI6MjYgJAorICogJFJldmlzaW9uOiAxLjQ5ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0LnRyYW5zbGl0OworCitpbXBvcnQgY29tLmlibS5pY3UuZGV2LnRlc3QuKjsKK2ltcG9ydCBjb20uaWJtLmljdS5sYW5nLio7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC4qOworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuVXRpbGl0eTsKK2ltcG9ydCBqYXZhLmlvLio7CitpbXBvcnQgamF2YS50ZXh0LlBhcnNlRXhjZXB0aW9uOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CisKKy8qKgorICogQHRlc3QKKyAqIEBzdW1tYXJ5IFJvdW5kIHRyaXAgdGVzdCBvZiBUcmFuc2xpdGVyYXRvcgorICovCitwdWJsaWMgY2xhc3MgUm91bmRUcmlwVGVzdCBleHRlbmRzIFRlc3RGbXdrIHsKKyAgICAKKyAgICBzdGF0aWMgZmluYWwgYm9vbGVhbiBFWFRSQV9URVNUUyA9IHRydWU7CisgICAgc3RhdGljIGZpbmFsIGJvb2xlYW4gUFJJTlRfUlVMRVMgPSB0cnVlOworICAgIAorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBuZXcgUm91bmRUcmlwVGVzdCgpLnJ1bihhcmdzKTsKKyAgICB9CisgICAgLyoKKyAgICBwdWJsaWMgdm9pZCBUZXN0U2luZ2xlKCkgdGhyb3dzIElPRXhjZXB0aW9uLCBQYXJzZUV4Y2VwdGlvbiB7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgiTGF0aW4tR3JlZWsiKTsKKyAgICAgICAgU3RyaW5nIHMgPSB0LnRyYW5zbGl0ZXJhdGUoIlx1MDEwMVx1MDA2OSIpOworICAgIH0KKyAgICAqLworICAgIAorICAgIC8qCisgICAgTm90ZTogVW5pY29kZSAzLjIgYWRkZWQgbmV3IEhpcmFnYW5hL0thdGFrYW5hIGNoYXJhY3RlcnM6CisgICAgCiszMDk1Li4zMDk2ICAgIDsgMy4yICMgICBbMl0gSElSQUdBTkEgTEVUVEVSIFNNQUxMIEtBLi5ISVJBR0FOQSBMRVRURVIgU01BTEwgS0UKKzMwOUYuLjMwQTAgICAgOyAzLjIgIyAgIFsyXSBISVJBR0FOQSBESUdSQVBIIFlPUkkuLktBVEFLQU5BLUhJUkFHQU5BIERPVUJMRSBIWVBIRU4KKzMwRkYgICAgICAgICAgOyAzLjIgIyAgICAgICBLQVRBS0FOQSBESUdSQVBIIEtPVE8KKzMxRjAuLjMxRkYgICAgOyAzLjIgIyAgWzE2XSBLQVRBS0FOQSBMRVRURVIgU01BTEwgS1UuLktBVEFLQU5BIExFVFRFUiBTTUFMTCBSTworCisgICAgV2Ugd2lsbCBub3QgYWRkIHRoZW0gdG8gdGhlIHJ1bGVzIHVudGlsIHRoZXkgYXJlIG1vcmUgc3VwcG9ydGVkIChlLmcuIGluIGZvbnRzIG9uIFdpbmRvd3MpCisgICAgQSBidWcgaGFzIGJlZW4gZmlsZWQgdG8gcmVtaW5kIHVzIHRvIGRvIHRoaXM6ICMxOTc5LgorICAgICovCisgICAgCisgICAgc3RhdGljIFN0cmluZyBLQVRBS0FOQSA9ICJbW1s6a2F0YWthbmE6XVtcdTMwQTEtXHUzMEZBXHUzMEZDXV0tW1x1MzBGRlx1MzFGMC1cdTMxRkZdXSI7CisgICAgc3RhdGljIFN0cmluZyBISVJBR0FOQSA9ICJbW1s6aGlyYWdhbmE6XVtcdTMwNDAtXHUzMDk0XV0tW1x1MzA5NS1cdTMwOTZcdTMwOUYtXHUzMEEwXV0iOworICAgIHN0YXRpYyBTdHJpbmcgTEVOR1RIID0gIltcdTMwRkNdIjsKKyAgICBzdGF0aWMgU3RyaW5nIEhBTEZXSURUSF9LQVRBS0FOQSA9ICJbXHVGRjY1LVx1RkY5RF0iOworICAgIHN0YXRpYyBTdHJpbmcgS0FUQUtBTkFfSVRFUkFUSU9OID0gIltcdTMwRkRcdTMwRkVdIjsKKyAgICBzdGF0aWMgU3RyaW5nIEhJUkFHQU5BX0lURVJBVElPTiA9ICJbXHUzMDlEXHUzMDlFXSI7CisgICAgCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBBYmJyZXZpYXRlZFVuaWNvZGVTZXRJdGVyYXRvcgorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBzdGF0aWMgY2xhc3MgQWJicmV2aWF0ZWRVbmljb2RlU2V0SXRlcmF0b3IgZXh0ZW5kcyBVbmljb2RlU2V0SXRlcmF0b3IgeworCisgICAgICAgIHByaXZhdGUgYm9vbGVhbiBhYmJyZXZpYXRlZDsKKyAgICAgICAgcHJpdmF0ZSBpbnQgcGVyUmFuZ2U7CisKKyAgICAgICAgcHVibGljIEFiYnJldmlhdGVkVW5pY29kZVNldEl0ZXJhdG9yKCkgeworICAgICAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgICAgIGFiYnJldmlhdGVkID0gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCByZXNldChVbmljb2RlU2V0IG5ld1NldCkgeworICAgICAgICAgICAgcmVzZXQobmV3U2V0LCBmYWxzZSk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCByZXNldChVbmljb2RlU2V0IG5ld1NldCwgYm9vbGVhbiBhYmIpIHsKKyAgICAgICAgICAgIHJlc2V0KG5ld1NldCwgYWJiLCAxMDApOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgcmVzZXQoVW5pY29kZVNldCBuZXdTZXQsIGJvb2xlYW4gYWJiLCBpbnQgZGVuc2l0eSkgeworICAgICAgICAgICAgc3VwZXIucmVzZXQobmV3U2V0KTsKKyAgICAgICAgICAgIGFiYnJldmlhdGVkID0gYWJiOworICAgICAgICAgICAgcGVyUmFuZ2UgPSBuZXdTZXQuZ2V0UmFuZ2VDb3VudCgpOworICAgICAgICAgICAgaWYgKHBlclJhbmdlICE9IDApIHsKKyAgICAgICAgICAgICAgICBwZXJSYW5nZSA9IGRlbnNpdHkgLyBwZXJSYW5nZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHByb3RlY3RlZCB2b2lkIGxvYWRSYW5nZShpbnQgbXlSYW5nZSkgeworICAgICAgICAgICAgc3VwZXIubG9hZFJhbmdlKG15UmFuZ2UpOworICAgICAgICAgICAgaWYgKGFiYnJldmlhdGVkICYmIChlbmRFbGVtZW50ID4gbmV4dEVsZW1lbnQgKyBwZXJSYW5nZSkpIHsKKyAgICAgICAgICAgICAgICBlbmRFbGVtZW50ID0gbmV4dEVsZW1lbnQgKyBwZXJSYW5nZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIHB1YmxpYyB2b2lkIHNob3dFbGFwc2VkKGxvbmcgc3RhcnQsIFN0cmluZyBuYW1lKSB7CisgICAgICAgIGRvdWJsZSBkdXIgPSAoU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkgLSBzdGFydCkgLyAxMDAwLjA7CisgICAgICAgIGxvZ2xuKG5hbWUgKyAiIHRvb2sgIiArIGR1ciArICIgc2Vjb25kcyIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RLYW5hKCkgdGhyb3dzIElPRXhjZXB0aW9uLCBQYXJzZUV4Y2VwdGlvbiB7CisgICAgICAgIGxvbmcgc3RhcnQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgbmV3IFRlc3QoIkthdGFrYW5hLUhpcmFnYW5hIikKKyAgICAgICAgICAudGVzdChLQVRBS0FOQSwgIlsiICsgSElSQUdBTkEgKyBMRU5HVEggKyAiXSIsICJbIiArIEhBTEZXSURUSF9LQVRBS0FOQSArIExFTkdUSCArICJdIiwgdGhpcywgbmV3IExlZ2FsKCkpOworICAgICAgICBzaG93RWxhcHNlZChzdGFydCwgIlRlc3RLYW5hIik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdEhpcmFnYW5hKCkgdGhyb3dzIElPRXhjZXB0aW9uLCBQYXJzZUV4Y2VwdGlvbiB7CisgICAgICAgIGxvbmcgc3RhcnQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgbmV3IFRlc3QoIkxhdGluLUhpcmFnYW5hIikKKyAgICAgICAgICAudGVzdCgiW2EtekEtWl0iLCBISVJBR0FOQSwgSElSQUdBTkFfSVRFUkFUSU9OLCB0aGlzLCBuZXcgTGVnYWwoKSk7CisgICAgICAgIHNob3dFbGFwc2VkKHN0YXJ0LCAiVGVzdEhpcmFnYW5hIik7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RLYXRha2FuYSgpIHRocm93cyBJT0V4Y2VwdGlvbiwgUGFyc2VFeGNlcHRpb24geworICAgICAgICBsb25nIHN0YXJ0ID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgIG5ldyBUZXN0KCJMYXRpbi1LYXRha2FuYSIpCisgICAgICAgICAgLnRlc3QoIlthLXpBLVpdIiwgS0FUQUtBTkEsICJbIiArIEtBVEFLQU5BX0lURVJBVElPTiArIEhBTEZXSURUSF9LQVRBS0FOQSArICJdIiwgdGhpcywgbmV3IExlZ2FsKCkpOworICAgICAgICBzaG93RWxhcHNlZChzdGFydCwgIlRlc3RLYXRha2FuYSIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RKYW1vKCkgdGhyb3dzIElPRXhjZXB0aW9uLCBQYXJzZUV4Y2VwdGlvbiB7CisgICAgICAgIGxvbmcgc3RhcnQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgbmV3IFRlc3QoIkxhdGluLUphbW8iKQorICAgICAgICAgICAgLnRlc3QoIlthLXpBLVpdIiwgIltcdTExMDAtXHUxMTEyIFx1MTE2MS1cdTExNzUgXHUxMUE4LVx1MTFDMl0iLCAiIiwgdGhpcywgbmV3IExlZ2FsSmFtbygpKTsKKyAgICAgICAgc2hvd0VsYXBzZWQoc3RhcnQsICJUZXN0SmFtbyIpOworICAgIH0KKworLyoKKyAgICAgICAgU0Jhc2UgPSAweEFDMDAsIExCYXNlID0gMHgxMTAwLCBWQmFzZSA9IDB4MTE2MSwgVEJhc2UgPSAweDExQTcsCisgICAgICAgIExDb3VudCA9IDE5LCBWQ291bnQgPSAyMSwgVENvdW50ID0gMjgsCisgICAgICAgIE5Db3VudCA9IFZDb3VudCAqIFRDb3VudCwgICAvLyA1ODgKKyAgICAgICAgU0NvdW50ID0gTENvdW50ICogTkNvdW50LCAgIC8vIDExMTcyCisgICAgICAgIExMaW1pdCA9IExCYXNlICsgTENvdW50LCAgICAvLyAxMTEzCisgICAgICAgIFZMaW1pdCA9IFZCYXNlICsgVkNvdW50LCAgICAvLyAxMTc2CisgICAgICAgIFRMaW1pdCA9IFRCYXNlICsgVENvdW50LCAgICAvLyAxMUMzCisgICAgICAgIFNMaW1pdCA9IFNCYXNlICsgU0NvdW50OyAgICAvLyBEN0E0CisqLworCisgICAgcHVibGljIHZvaWQgVGVzdEhhbmd1bCgpIHRocm93cyBJT0V4Y2VwdGlvbiwgUGFyc2VFeGNlcHRpb24geworICAgICAgICBsb25nIHN0YXJ0ID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgIFRlc3QgdCA9IG5ldyBUZXN0KCJMYXRpbi1IYW5ndWwiLCA1KTsKKyAgICAgICAgaWYgKGdldEluY2x1c2lvbigpIDwgMTApIHQuc2V0UGFpckxpbWl0KDEwMDApOworICAgICAgICB0LnRlc3QoIlthLXpBLVpdIiwgIltcdUFDMDAtXHVEN0E0XSIsICIiLCB0aGlzLCBuZXcgTGVnYWwoKSk7CisgICAgICAgIHNob3dFbGFwc2VkKHN0YXJ0LCAiVGVzdEhhbmd1bCIpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0U2luZ2xlKCkgeworCQlUcmFuc2xpdGVyYXRvciB0ID0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoIkxhdGluLUdyZWVrIik7CisgICAgCXQudHJhbnNsaXRlcmF0ZSgiXHUwMDYxXHUwMTAxXHUwMDY5Iik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdEdyZWVrKCkgdGhyb3dzIElPRXhjZXB0aW9uLCBQYXJzZUV4Y2VwdGlvbiB7CisgICAgICAgIGxvbmcgc3RhcnQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgbmV3IFRlc3QoIkxhdGluLUdyZWVrIiwgNTApCisgICAgICAgIC50ZXN0KCJbYS16QS1aXSIsICJbXHUwMDNCXHUwMEI3WzpHcmVlazpdLVtcdTAzRDctXHUwM0VGXV0iLCAKKyAgICAgICAgICAgICJbXHUwMEI1XHUwMzdBXHUwM0QwLVx1MDNGNV0iLCAvKiByb3VuZHRyaXAgZXhjbHVzaW9ucyAqLworICAgICAgICAgICAgdGhpcywgbmV3IExlZ2FsR3JlZWsodHJ1ZSkpOworICAgICAgICBzaG93RWxhcHNlZChzdGFydCwgIlRlc3RHcmVlayIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RHcmVla1VOR0VHTigpIHRocm93cyBJT0V4Y2VwdGlvbiwgUGFyc2VFeGNlcHRpb24geworICAgICAgICBsb25nIHN0YXJ0ID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgIG5ldyBUZXN0KCJMYXRpbi1HcmVlay9VTkdFR04iKQorICAgICAgICAgIC50ZXN0KCJbYS16QS1aXSIsICJbXHUwMDNCXHUwMEI3WzpHcmVlazpdLVtcdTAzRDctXHUwM0VGXV0iLCAKKyAgICAgICAgICAgICJbXHUwMEI1XHUwMzdBXHUwM0QwLVx1RkZGRntcdTAzOUNcdTAzQzB9XSIsIC8qIHJvdW5kdHJpcCBleGNsdXNpb25zICovCisgICAgICAgICAgICB0aGlzLCBuZXcgTGVnYWxHcmVlayhmYWxzZSkpOworICAgICAgICBzaG93RWxhcHNlZChzdGFydCwgIlRlc3RHcmVla1VOR0VHTiIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RlbCgpIHRocm93cyBJT0V4Y2VwdGlvbiwgUGFyc2VFeGNlcHRpb24geworICAgICAgICBsb25nIHN0YXJ0ID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgIG5ldyBUZXN0KCJMYXRpbi1lbCIpCisgICAgICAgICAgLnRlc3QoIlthLXpBLVpdIiwgIltcdTAwM0JcdTAwQjdbOkdyZWVrOl0tW1x1MDNENy1cdTAzRUZdXSIsIAorICAgICAgICAgICAgIltcdTAwQjVcdTAzN0FcdTAzRDAtXHVGRkZGe1x1MDM5Q1x1MDNDMH1dIiwgLyogcm91bmR0cmlwIGV4Y2x1c2lvbnMgKi8KKyAgICAgICAgICAgIHRoaXMsIG5ldyBMZWdhbEdyZWVrKGZhbHNlKSk7CisgICAgICAgIHNob3dFbGFwc2VkKHN0YXJ0LCAiVGVzdGVsIik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdEN5cmlsbGljKCkgdGhyb3dzIElPRXhjZXB0aW9uLCBQYXJzZUV4Y2VwdGlvbiB7CisgICAgICAgIGxvbmcgc3RhcnQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgbmV3IFRlc3QoIkxhdGluLUN5cmlsbGljIikKKyAgICAgICAgICAudGVzdCgiW2EtekEtWlx1MDExMFx1MDExMV0iLCAiW1x1MDQwMC1cdTA0NUZdIiwgbnVsbCwgdGhpcywgbmV3IExlZ2FsKCkpOworICAgICAgICBzaG93RWxhcHNlZChzdGFydCwgIlRlc3RDeXJpbGxpYyIpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIEFSQUJJQyA9ICJbXHUwNjBDXHUwNjFCXHUwNjFGXHUwNjIxXHUwNjI3LVx1MDYzQVx1MDY0MS1cdTA2NTVcdTA2NjAtXHUwNjZDXHUwNjdFXHUwNjg2XHUwNjk4XHUwNkE0XHUwNkFEXHUwNkFGXHUwNkNCLVx1MDZDQ1x1MDZGMC1cdTA2RjldIjsKKworICAgIHB1YmxpYyB2b2lkIFRlc3RBcmFiaWMoKSB0aHJvd3MgSU9FeGNlcHRpb24sIFBhcnNlRXhjZXB0aW9uIHsKKyAgICAgICAgbG9uZyBzdGFydCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICBuZXcgVGVzdCgiTGF0aW4tQXJhYmljIikKKyAgICAgICAgICAudGVzdCgiW2EtekEtWlx1MDJCRVx1MDJCRl0iLCBBUkFCSUMsICJbYS16QS1aXHUwMkJFXHUwMkJGXHUyMDdGXSIsIG51bGwsIHRoaXMsIG5ldyBMZWdhbCgpKTsgLy8gCisgICAgICAgIHNob3dFbGFwc2VkKHN0YXJ0LCAiVGVzdEFyYWJpYyIpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0SGVicmV3KCkgdGhyb3dzIElPRXhjZXB0aW9uLCBQYXJzZUV4Y2VwdGlvbiB7CisgICAgICAgIGxvbmcgc3RhcnQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgbmV3IFRlc3QoIkxhdGluLUhlYnJldyIpCisgICAgICAgICAgLnRlc3QoIlthLXpBLVpcdTAyQkNcdTAyQkJdIiwgIltbOmhlYnJldzpdLVtcdUZCMDAtXHVGQkZGXV0iLCAiW1x1MDVGMFx1MDVGMVx1MDVGMl0iLCB0aGlzLCBuZXcgTGVnYWxIZWJyZXcoKSk7CisgICAgICAgIHNob3dFbGFwc2VkKHN0YXJ0LCAiVGVzdEhlYnJldyIpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0VGhhaSgpIHRocm93cyBJT0V4Y2VwdGlvbiwgUGFyc2VFeGNlcHRpb24geworICAgICAgICBsb25nIHN0YXJ0ID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgIG5ldyBUZXN0KCJMYXRpbi1UaGFpIikKKyAgICAgICAgICAudGVzdCgiW2EtekEtWlx1MDE0Mlx1MUVDRFx1MDBFNlx1MDEzMVx1MDI2OF0iLCAiW1x1MEUwMS1cdTBFM0FcdTBFNDAtXHUwRTVCXSIsIG51bGwsIHRoaXMsIG5ldyBMZWdhbFRoYWkoKSk7CisgICAgICAgIHNob3dFbGFwc2VkKHN0YXJ0LCAiVGVzdFRoYWkiKTsKKyAgICB9CisgICAgCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gSW50ZXItSW5kaWMgVGVzdHMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIExlZ2FsSW5kaWMgZXh0ZW5kcyBMZWdhbHsKKyAgICAgICAgVW5pY29kZVNldCB2b3dlbFNpZ25TZXQgPSBuZXcgVW5pY29kZVNldCgpOworICAgICAgICAKKyAgICAgICAgcHVibGljIExlZ2FsSW5kaWMoKXsKKyAgICAgICAgICAgIHZvd2VsU2lnblNldC5hZGRBbGwobmV3IFVuaWNvZGVTZXQoIltcdTA5MDFcdTA5MDJcdTA5MDNcdTA5M2UtXHUwOTRjXHUwOTYyXHUwOTYzXSIpKTsJCQkJLyogRGV2YW5hZ2FyaSAqLworICAgICAgICAgICAgdm93ZWxTaWduU2V0LmFkZEFsbChuZXcgVW5pY29kZVNldCgiW1x1MDk4MVx1MDk4Mlx1MDk4M1x1MDliZS1cdTA5Y2NcdTA5ZTJcdTA5ZTNcdTA5RDddIikpOwkJCS8qIEJlbmdhbGkgKi8KKyAgICAgICAgICAgIHZvd2VsU2lnblNldC5hZGRBbGwobmV3IFVuaWNvZGVTZXQoIltcdTBhMDFcdTBhMDJcdTBhMDNcdTBhM2UtXHUwYTRjXHUwYTYyXHUwYTYzXHUwYTcwXHUwYTcxXSIpKTsJLyogR3VybXVraGkgKi8KKyAgICAgICAgICAgIHZvd2VsU2lnblNldC5hZGRBbGwobmV3IFVuaWNvZGVTZXQoIltcdTBhODFcdTBhODJcdTBhODNcdTBhYmUtXHUwYWNjXHUwYWUyXHUwYWUzXSIpKTsJCQkJLyogR3VqYXJhdGkgKi8KKyAgICAgICAgICAgIHZvd2VsU2lnblNldC5hZGRBbGwobmV3IFVuaWNvZGVTZXQoIltcdTBiMDFcdTBiMDJcdTBiMDNcdTBiM2UtXHUwYjRjXHUwYjYyXHUwYjYzXHUwYjU2XHUwYjU3XSIpKTsJLyogT3JpeWEgKi8KKyAgICAgICAgICAgIHZvd2VsU2lnblNldC5hZGRBbGwobmV3IFVuaWNvZGVTZXQoIltcdTBiODFcdTBiODJcdTBiODNcdTBiYmUtXHUwYmNjXHUwYmUyXHUwYmUzXHUwYmQ3XSIpKTsJCQkvKiBUYW1pbCAqLworICAgICAgICAgICAgdm93ZWxTaWduU2V0LmFkZEFsbChuZXcgVW5pY29kZVNldCgiW1x1MGMwMVx1MGMwMlx1MGMwM1x1MGMzZS1cdTBjNGNcdTBjNjJcdTBjNjNcdTBjNTVcdTBjNTZdIikpOwkvKiBUZWx1Z3UgKi8KKyAgICAgICAgICAgIHZvd2VsU2lnblNldC5hZGRBbGwobmV3IFVuaWNvZGVTZXQoIltcdTBjODFcdTBjODJcdTBjODNcdTBjYmUtXHUwY2NjXHUwY2UyXHUwY2UzXHUwY2Q1XHUwY2Q2XSIpKTsJLyogS2FubmFkYSAqLworICAgICAgICAgICAgdm93ZWxTaWduU2V0LmFkZEFsbChuZXcgVW5pY29kZVNldCgiW1x1MGQwMVx1MGQwMlx1MGQwM1x1MGQzZS1cdTBkNGNcdTBkNjJcdTBkNjNcdTBkNTddIikpOwkJCS8qIE1hbGF5YWxhbSAqLworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBTdHJpbmcgYXZhZ3JhaGEgPSAiXHUwOTNkXHUwYWJkXHUwYjNkIjsKKyAgICAgICAgU3RyaW5nIG51a3RhID0gIlx1MDkzY1x1MDliY1x1MGEzY1x1MGFiY1x1MGIzYyI7CisgICAgICAgIFN0cmluZyB2aXJhbWEgPSAiXHUwOTRkXHUwOWNkXHUwYTRkXHUwYWNkXHUwYjRkXHUwYmNkXHUwYzRkXHUwY2NkXHUwZDRkIjsKKyAgICAgICAgU3RyaW5nIHNhbnNrcml0U3RyZXNzU2lnbnMgPSAiXHUwOTUxXHUwOTUyXHUwOTUzXHUwOTU0IjsKKyAgICAgICAgU3RyaW5nIGNoYW5kcmFiaW5kdSA9ICJcdTA5MDFcdTA5ODFcdTBBODFcdTBiMDFcdTBjMDEiOworICAgICAgICBwdWJsaWMgYm9vbGVhbiBpcyhTdHJpbmcgc291cmNlU3RyaW5nKXsKKyAgICAgICAgICAgIGludCBjcD1zb3VyY2VTdHJpbmcuY2hhckF0KDApOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBBIHZvd2VsIHNpZ24gY2Fubm90IGJlIHRoZSBmaXJzdCBjaGFyCisgICAgICAgICAgICBpZih2b3dlbFNpZ25TZXQuY29udGFpbnMoY3ApKXsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9ZWxzZSBpZihhdmFncmFoYS5pbmRleE9mKGNwKSE9LTEpeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH1lbHNlIGlmKHZpcmFtYS5pbmRleE9mKGNwKSE9LTEpeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH1lbHNlIGlmKG51a3RhLmluZGV4T2YoY3ApIT0tMSl7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfWVsc2UgaWYoc2Fuc2tyaXRTdHJlc3NTaWducy5pbmRleE9mKGNwKSE9LTEpeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH1lbHNlIGlmKChjaGFuZHJhYmluZHUuaW5kZXhPZihjcCkhPS0xKSAmJiAKKyAgICAgICAgICAgICAgICAgICAgICAgIChzb3VyY2VTdHJpbmcubGVuZ3RoKCkgPjEgJiYgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm93ZWxTaWduU2V0LmNvbnRhaW5zKHNvdXJjZVN0cmluZy5jaGFyQXQoMSkpKSl7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgc3RhdGljIFN0cmluZyBsYXRpbkZvckluZGljID0gIltbJy4wLTlBLVphLXp+XHUwMEMwLVx1MDBDNVx1MDBDNy1cdTAwQ0ZcdTAwRDEtXHUwMEQ2XHUwMEQ5LVx1MDBERCIrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTAwRTAtXHUwMEU1XHUwMEU3LVx1MDBFRlx1MDBGMS1cdTAwRjZcdTAwRjktXHUwMEZEXHUwMEZGLVx1MDEwRiIrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTAxMTItXHUwMTI1XHUwMTI4LVx1MDEzMFx1MDEzNC1cdTAxMzdcdTAxMzktXHUwMTNFXHUwMTQzLVx1MDE0OCIrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTAxNEMtXHUwMTUxXHUwMTU0LVx1MDE2NVx1MDE2OC1cdTAxN0VcdTAxQTAtXHUwMUExXHUwMUFGLVx1MDFCMCIrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTAxQ0QtXHUwMURDXHUwMURFLVx1MDFFM1x1MDFFNi1cdTAxRURcdTAxRjBcdTAxRjQtXHUwMUY1XHUwMUY4LVx1MDFGQiIrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTAyMDAtXHUwMjFCXHUwMjFFLVx1MDIxRlx1MDIyNi1cdTAyMzNcdTAzMDMtXHUwMzA0XHUwMzA2XHUwMzE0LVx1MDMxNSIrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTAzMjVcdTA0MEVcdTA0MTlcdTA0MzlcdTA0NUVcdTA0QzEtXHUwNEMyXHUwNEQwLVx1MDREMVx1MDRENi1cdTA0RDciKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUwNEUyLVx1MDRFM1x1MDRFRS1cdTA0RUZcdTFFMDAtXHUxRTk5XHUxRUEwLVx1MUVGOVx1MUYwMVx1MUYwM1x1MUYwNSIrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTFGMDdcdTFGMDlcdTFGMEJcdTFGMERcdTFGMEZcdTFGMTFcdTFGMTNcdTFGMTVcdTFGMTlcdTFGMUJcdTFGMURcdTFGMjEiKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUxRjIzXHUxRjI1XHUxRjI3XHUxRjI5XHUxRjJCXHUxRjJEXHUxRjJGXHUxRjMxXHUxRjMzXHUxRjM1XHUxRjM3XHUxRjM5IisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MUYzQlx1MUYzRFx1MUYzRlx1MUY0MVx1MUY0M1x1MUY0NVx1MUY0OVx1MUY0Qlx1MUY0RFx1MUY1MVx1MUY1M1x1MUY1NSIrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTFGNTdcdTFGNTlcdTFGNUJcdTFGNURcdTFGNUZcdTFGNjFcdTFGNjNcdTFGNjVcdTFGNjdcdTFGNjlcdTFGNkJcdTFGNkQiKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUxRjZGXHUxRjgxXHUxRjgzXHUxRjg1XHUxRjg3XHUxRjg5XHUxRjhCXHUxRjhEXHUxRjhGXHUxRjkxXHUxRjkzXHUxRjk1IisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MUY5N1x1MUY5OVx1MUY5Qlx1MUY5RFx1MUY5Rlx1MUZBMVx1MUZBM1x1MUZBNVx1MUZBN1x1MUZBOVx1MUZBQlx1MUZBRCIrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTFGQUYtXHUxRkIxXHUxRkI4LVx1MUZCOVx1MUZEMC1cdTFGRDFcdTFGRDgtXHUxRkQ5XHUxRkUwLVx1MUZFMVx1MUZFNSIrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTFGRTgtXHUxRkU5XHUxRkVDXHUyMTJBLVx1MjEyQlx1RTA0RFx1RTA2NF0iKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLVtcdUUwMDAtXHVFMDgwIFx1MDFFMlx1MDFFM10mIFtbOmxhdGluOl1bOm1hcms6XV1dIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgcHVibGljIHZvaWQgVGVzdERldmFuYWdhcmlMYXRpbigpIHRocm93cyBJT0V4Y2VwdGlvbiwgUGFyc2VFeGNlcHRpb24geworICAgICAgICBsb25nIHN0YXJ0ID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgIG5ldyBUZXN0KCJMYXRpbi1ERVZBTkFHQVJJIiwgNTApCisgICAgICAgICAgLnRlc3QobGF0aW5Gb3JJbmRpYywgIltbOkRldmFuYWdhcmk6XVtcdTA5NGRdW1x1MDk2NFx1MDk2NV1dIiwgIltcdTA5NjVdIiwgdGhpcywgbmV3IExlZ2FsSW5kaWMoKSk7CisgICAgICAgIHNob3dFbGFwc2VkKHN0YXJ0LCAiVGVzdERldmFuYWdhcmlMYXRpbiIpOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgW11bXSBhcnJheT0gbmV3IFN0cmluZ1tdW117CisgICAgICAgIG5ldyBTdHJpbmcgW10geyAgIkJFTkdBTEktREVWQU5BR0FSSSIsCisgICAgICAgICAgICAiWzpCRU5HQUxJOl0iLCAiWzpEZXZhbmFnYXJpOl0iLCAKKyAgICAgICAgICAgICAgICAiW1x1MDk1MS1cdTA5NTRcdTA5NDMtXHUwOTQ5XHUwOTRhXHUwOTYyXHUwOTYzXHUwOTBEXHUwOTBlXHUwOTExXHUwOTEyXHUwOTI5XHUwOTMzXHUwOTM0XHUwOTM1XHUwOTNkXHUwOTUwXHUwOTU4XHUwOTU5XHUwOTVhXHUwOTViXHUwOTVlXHUwOWYwXHUwOWYxXSIsIC8qcm91bmR0cmlwIGV4Y2x1c2lvbnMqLworICAgICAgICAgICAgICAgIH0sCisgICAgICAgIG5ldyBTdHJpbmcgW10geyAgIkRFVkFOQUdBUkktQkVOR0FMSSIsCisgICAgICAgICAgICJbOkRldmFuYWdhcmk6XSIsICJbOkJFTkdBTEk6XSIsCisgICAgICAgICAgICAgICAgICAiW1x1MDk1MS1cdTA5NTRcdTA5RDdcdTA5MERcdTA5MGVcdTA5MTFcdTA5MTJcdTA5MjlcdTA5MzNcdTA5MzRcdTA5MzVcdTA5M2RcdTA5NTBcdTA5NThcdTA5NTlcdTA5NWFcdTA5NWJcdTA5NWVcdTA5ZjBcdTA5ZjFdIiwgLypyb3VuZHRyaXAgZXhjbHVzaW9ucyovCisgICAgICAgICAgICAgICAgICB9LAorCisgICAgICAgIG5ldyBTdHJpbmcgW10geyAgIkdVUk1VS0hJLURFVkFOQUdBUkkiLAorICAgICAgICAgICJbOkdVUk1VS0hJOl0iLCAiWzpEZXZhbmFnYXJpOl0iLCAKKyAgICAgICAgICAgICAgICAiW1x1MDkwMlx1MDkzNlx1MDkzM1x1MDk1MS1cdTA5NTRcdTA5MDJcdTA5MDNcdTA5NDMtXHUwOTQ5XHUwOTRhXHUwOTYyXHUwOTYzXHUwOTBCXHUwOTBDXHUwOTBEXHUwOTBlXHUwOTExXHUwOTEyXHUwOTM0XHUwOTM3XHUwOTNEXHUwOTUwXHUwOTYwXHUwOTYxXHUwYTcyXHUwYTczXHUwYTc0XSIsIC8qcm91bmR0cmlwIGV4Y2x1c2lvbnMqLworICAgICAgICAgICAgICAgIH0sCisgICAgICAgIG5ldyBTdHJpbmcgW10geyAgIkRFVkFOQUdBUkktR1VSTVVLSEkiLAorICAgICAgICAgICAiWzpEZXZhbmFnYXJpOl0iLCAiWzpHVVJNVUtISTpdIiwKKyAgICAgICAgICAgICAgICAgICJbXHUwQTAyXHUwOTQ2XHUwQTVDXHUwOTUxLVx1MDk1NFx1MEE3MFx1MEE3MVx1MDkwQlx1MDkwQ1x1MDkwRFx1MDkwZVx1MDkxMVx1MDkxMlx1MDkzNFx1MDkzN1x1MDkzRFx1MDk1MFx1MDk2MFx1MDk2MVx1MGE3Mlx1MGE3M1x1MGE3NF0iLCAvKnJvdW5kdHJpcCBleGNsdXNpb25zKi8KKyAgICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgbmV3IFN0cmluZyBbXSB7ICAiR1VKQVJBVEktREVWQU5BR0FSSSIsCisgICAgICAgICAgIls6R1VKQVJBVEk6XSIsICJbOkRldmFuYWdhcmk6XSIsIAorICAgICAgICAgICAgICAgICJbXHUwOTQ2XHUwOTRBXHUwOTYyXHUwOTYzXHUwOTUxLVx1MDk1NFx1MDk2MVx1MDkwY1x1MDkwZVx1MDkxMl0iLCAvKnJvdW5kdHJpcCBleGNsdXNpb25zKi8KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICBuZXcgU3RyaW5nIFtdIHsgICJERVZBTkFHQVJJLUdVSkFSQVRJIiwKKyAgICAgICAgICAgIls6RGV2YW5hZ2FyaTpdIiwgIls6R1VKQVJBVEk6XSIsCisgICAgICAgICAgICAgICAgICAiW1x1MDk1MS1cdTA5NTRcdTA5NjFcdTA5MGNcdTA5MGVcdTA5MTJdIiwgLypyb3VuZHRyaXAgZXhjbHVzaW9ucyovCisgICAgICAgICAgICAgICAgICB9LAorCisgICAgICAgIG5ldyBTdHJpbmcgW10geyAgIk9SSVlBLURFVkFOQUdBUkkiLAorICAgICAgICAgICJbOk9SSVlBOl0iLCAiWzpEZXZhbmFnYXJpOl0iLCAKKyAgICAgICAgICAgICAgICAiW1x1MDk0My1cdTA5NGFcdTA5NjJcdTA5NjNcdTA5NTEtXHUwOTU0XHUwOTUwXHUwOTBEXHUwOTBlXHUwOTEyXHUwOTExXHUwOTMxXHUwOTM1XSIsIC8qcm91bmR0cmlwIGV4Y2x1c2lvbnMqLworICAgICAgICAgICAgICAgIH0sCisgICAgICAgIG5ldyBTdHJpbmcgW10geyAgIkRFVkFOQUdBUkktT1JJWUEiLAorICAgICAgICAgICAiWzpEZXZhbmFnYXJpOl0iLCAiWzpPUklZQTpdIiwKKyAgICAgICAgICAgICAgICAgICJbXHUwYjVmXHUwYjU2XHUwYjU3XHUwOTUwXHUwOTBEXHUwOTBlXHUwOTEyXHUwOTExXHUwOTMxXHUwOTM1XSIsIC8qcm91bmR0cmlwIGV4Y2x1c2lvbnMqLworICAgICAgICAgICAgICAgICAgfSwKKworICAgICAgICBuZXcgU3RyaW5nIFtdIHsgICJUYW1pbC1ERVZBTkFHQVJJIiwKKyAgICAgICAgICAiWzp0YW1pbDpdIiwgIls6RGV2YW5hZ2FyaTpdIiwgCisgICAgICAgICAgICAgICAgICAiW1x1MDkwMVx1MDkzY1x1MDk0My1cdTA5NGFcdTA5NTEtXHUwOTU0XHUwOTYyXHUwOTYzXHUwOTBCXHUwOTBDXHUwOTBEXHUwOTExXHUwOTE2XHUwOTE3XHUwOTE4XHUwOTFCXHUwOTFEXHUwOTIwXHUwOTIxXHUwOTIyXHUwOTI1XHUwOTI2XHUwOTI3XHUwOTJCXHUwOTJDXHUwOTJEXHUwOTM2XHUwOTNkXHUwOTUwW1x1MDk1OC1cdTA5NjFdXSIsIC8qcm91bmR0cmlwIGV4Y2x1c2lvbnMqLworICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgbmV3IFN0cmluZyBbXSB7ICAiREVWQU5BR0FSSS1UYW1pbCIsCisgICAgICAgICAgICJbOkRldmFuYWdhcmk6XSIsICJbOnRhbWlsOl0iLAorICAgICAgICAgICAgICAgICAgIltcdTBiZDddIiwgLypyb3VuZHRyaXAgZXhjbHVzaW9ucyovCisgICAgICAgICAgICAgICAgICB9LAorCisgICAgICAgIG5ldyBTdHJpbmcgW10geyAgIlRlbHVndS1ERVZBTkFHQVJJIiwKKyAgICAgICAgICAiWzp0ZWx1Z3U6XSIsICJbOkRldmFuYWdhcmk6XSIsIAorICAgICAgICAgICAgICAgICJbXHUwOTNjXHUwOTUwXHUwOTQ1XHUwOTQ5XHUwOTUxLVx1MDk1NFx1MDk2Mlx1MDk2M1x1MDkwRFx1MDkxMVx1MDkzZFx1MDkyOVx1MDkzNFtcdTA5NTgtXHUwOTVmXV0iLCAvKnJvdW5kdHJpcCBleGNsdXNpb25zKi8KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICBuZXcgU3RyaW5nIFtdIHsgICJERVZBTkFHQVJJLVRFTFVHVSIsCisgICAgICAgICAgICJbOkRldmFuYWdhcmk6XSIsICJbOlRFTFVHVTpdIiwKKyAgICAgICAgICAgICAgICAgICJbXHUwYzU1XHUwYzU2XHUwOTUwXHUwOTBEXHUwOTExXHUwOTNkXHUwOTI5XHUwOTM0W1x1MDk1OC1cdTA5NWZdXSIsIC8qcm91bmR0cmlwIGV4Y2x1c2lvbnMqLworICAgICAgICAgICAgICAgICAgfSwKKworICAgICAgICBuZXcgU3RyaW5nIFtdIHsgICJLQU5OQURBLURFVkFOQUdBUkkiLAorICAgICAgICAgICJbOktBTk5BREE6XSIsICJbOkRldmFuYWdhcmk6XSIsIAorICAgICAgICAgICAgICAgICJbXHUwOTAxXHUwOTQ2XHUwOTNjXHUwOTUwXHUwOTQ1XHUwOTQ5XHUwOTUxLVx1MDk1NFx1MDk2Mlx1MDk2M1x1MDk1MFx1MDkwRFx1MDkxMVx1MDkzZFx1MDkyOVx1MDkzNFtcdTA5NTgtXHUwOTVmXV0iLCAvKnJvdW5kdHJpcCBleGNsdXNpb25zKi8KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICBuZXcgU3RyaW5nIFtdIHsgICJERVZBTkFHQVJJLUtBTk5BREEiLAorICAgICAgICAgICAiWzpEZXZhbmFnYXJpOl0iLCAiWzpLQU5OQURBOl0iLAorICAgICAgICAgICAgICAgICAgIltcdTBjZGVcdTBjZDVcdTBjZDZcdTA5NTBcdTA5MERcdTA5MTFcdTA5M2RcdTA5MjlcdTA5MzRbXHUwOTU4LVx1MDk1Zl1dIiwgLypyb3VuZHRyaXAgZXhjbHVzaW9ucyovIAorICAgICAgICAgICAgICAgICAgfSwKKworICAgICAgICBuZXcgU3RyaW5nIFtdIHsgICJNQUxBWUFMQU0tREVWQU5BR0FSSSIsCisgICAgICAgICAgIls6TUFMQVlBTEFNOl0iLCAiWzpEZXZhbmFnYXJpOl0iLCAKKyAgICAgICAgICAgICAgICAiW1x1MDkwMVx1MDk0YVx1MDk0Ylx1MDk0Y1x1MDkzY1x1MDk1MFx1MDk0NFx1MDk0NVx1MDk0OVx1MDk1MS1cdTA5NTRcdTA5NjJcdTA5NjNcdTA5MERcdTA5MTFcdTA5M2RcdTA5MjlcdTA5MzRbXHUwOTU4LVx1MDk1Zl1dIiwgLypyb3VuZHRyaXAgZXhjbHVzaW9ucyovCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgbmV3IFN0cmluZyBbXSB7ICAiREVWQU5BR0FSSS1NQUxBWUFMQU0iLAorICAgICAgICAgICAiWzpEZXZhbmFnYXJpOl0iLCAiWzpNQUxBWUFMQU06XSIsCisgICAgICAgICAgICAgICAgICAiW1x1MGQ0Y1x1MGQ1N1x1MDk1MFx1MDkwRFx1MDkxMVx1MDkzZFx1MDkyOVx1MDkzNFtcdTA5NTgtXHUwOTVmXV0iLCAvKnJvdW5kdHJpcCBleGNsdXNpb25zKi8KKyAgICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgbmV3IFN0cmluZyBbXSB7ICAiR1VSTVVLSEktQkVOR0FMSSIsCisgICAgICAgICAgIls6R1VSTVVLSEk6XSIsICJbOkJFTkdBTEk6XSIsICAKKyAgICAgICAgICAgICAgICAiW1x1MDk4Mlx1MDliNlx1MDllMlx1MDllM1x1MDljM1x1MDljNFx1MDlkN1x1MDk4Qlx1MDk4Q1x1MDlCN1x1MDlFMFx1MDlFMVx1MDlGMFx1MDlGMV0iLCAvKnJvdW5kdHJpcCBleGNsdXNpb25zKi8KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICBuZXcgU3RyaW5nIFtdIHsgICJCRU5HQUxJLUdVUk1VS0hJIiwKKyAgICAgICAgICAgIls6QkVOR0FMSTpdIiwgIls6R1VSTVVLSEk6XSIsCisgICAgICAgICAgICAgICAgICAiW1x1MEEwMlx1MGE1Y1x1MGE0N1x1MGE3MFx1MGE3MVx1MEEzM1x1MEEzNVx1MEE1OVx1MEE1QVx1MEE1Qlx1MEE1RVx1MEE3Mlx1MEE3M1x1MEE3NF0iLCAvKnJvdW5kdHJpcCBleGNsdXNpb25zKi8KKyAgICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgbmV3IFN0cmluZyBbXSB7ICAiR1VKQVJBVEktQkVOR0FMSSIsCisgICAgICAgICAgIls6R1VKQVJBVEk6XSIsICJbOkJFTkdBTEk6XSIsIAorICAgICAgICAgICAgICAgICJbXHUwOWQ3XHUwOWUyXHUwOWUzXHUwOThjXHUwOWUxXHUwOWYwXHUwOWYxXSIsIC8qcm91bmR0cmlwIGV4Y2x1c2lvbnMqLworICAgICAgICAgICAgICAgIH0sCisgICAgICAgIG5ldyBTdHJpbmcgW10geyAgIkJFTkdBTEktR1VKQVJBVEkiLAorICAgICAgICAgICAiWzpCRU5HQUxJOl0iLCAiWzpHVUpBUkFUSTpdIiwKKyAgICAgICAgICAgICAgICAgICJbXHUwQTgyXHUwYTgzXHUwQWM5XHUwQWM1XHUwYWM3XHUwQThEXHUwQTkxXHUwQUIzXHUwQUI1XHUwQUJEXHUwQUQwXSIsIC8qcm91bmR0cmlwIGV4Y2x1c2lvbnMqLworICAgICAgICAgICAgICAgICAgfSwKKyAKKyAgICAgICAgbmV3IFN0cmluZyBbXSB7ICAiT1JJWUEtQkVOR0FMSSIsCisgICAgICAgICAgIls6T1JJWUE6XSIsICJbOkJFTkdBTEk6XSIsIAorICAgICAgICAgICAgICAgICJbXHUwOWM0XHUwOWUyXHUwOWUzXHUwOWYwXHUwOWYxXSIsIC8qcm91bmR0cmlwIGV4Y2x1c2lvbnMqLworICAgICAgICAgICAgICAgIH0sCisgICAgICAgIG5ldyBTdHJpbmcgW10geyAgIkJFTkdBTEktT1JJWUEiLAorICAgICAgICAgICAiWzpCRU5HQUxJOl0iLCAiWzpPUklZQTpdIiwKKyAgICAgICAgICAgICAgICAgICJbXHUwYjVmXHUwYjU2XHUwYjMzXHUwYjNkXSIsIC8qcm91bmR0cmlwIGV4Y2x1c2lvbnMqLworICAgICAgICAgICAgICAgICAgfSwKKworICAgICAgICBuZXcgU3RyaW5nIFtdIHsgICJUYW1pbC1CRU5HQUxJIiwKKyAgICAgICAgICAiWzp0YW1pbDpdIiwgIls6QkVOR0FMSTpdIiwgCisgICAgICAgICAgICAgICAgICAiW1x1MDk4MVx1MDliY1x1MDljM1x1MDljNFx1MDllMlx1MDllM1x1MDlmMFx1MDlmMVx1MDk4Qlx1MDk4Q1x1MDk5Nlx1MDk5N1x1MDk5OFx1MDk5Qlx1MDk5RFx1MDlBMFx1MDlBMVx1MDlBMlx1MDlBNVx1MDlBNlx1MDlBN1x1MDlBQlx1MDlBQ1x1MDlBRFx1MDlCNlx1MDlEQ1x1MDlERFx1MDlERlx1MDlFMFx1MDlFMV0iLCAvKnJvdW5kdHJpcCBleGNsdXNpb25zKi8KKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgIG5ldyBTdHJpbmcgW10geyAgIkJFTkdBTEktVGFtaWwiLAorICAgICAgICAgICAiWzpCRU5HQUxJOl0iLCAiWzp0YW1pbDpdIiwKKyAgICAgICAgICAgICAgICAgICJbXHUwYmM2XHUwYmM3XHUwYmNhXHUwQjhFXHUwQjkyXHUwQkE5XHUwQkIxXHUwQkIzXHUwQkI0XHUwQkI1XSIsIC8qcm91bmR0cmlwIGV4Y2x1c2lvbnMqLworICAgICAgICAgICAgICAgICAgfSwKKworICAgICAgICBuZXcgU3RyaW5nIFtdIHsgICJUZWx1Z3UtQkVOR0FMSSIsCisgICAgICAgICAgIls6dGVsdWd1Ol0iLCAiWzpCRU5HQUxJOl0iLCAKKyAgICAgICAgICAgICAgICAiW1x1MDllMlx1MDllM1x1MDliY1x1MDlkN1x1MDlmMFx1MDlmMVx1MDlkY1x1MDlkZFx1MDlkZl0iLCAvKnJvdW5kdHJpcCBleGNsdXNpb25zKi8KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICBuZXcgU3RyaW5nIFtdIHsgICJCRU5HQUxJLVRFTFVHVSIsCisgICAgICAgICAgICJbOkJFTkdBTEk6XSIsICJbOlRFTFVHVTpdIiwKKyAgICAgICAgICAgICAgICAgICJbXHUwYzU1XHUwYzU2XHUwYzQ3XHUwYzQ2XHUwYzRhXHUwQzBFXHUwQzEyXHUwQzMxXHUwQzMzXHUwQzM1XSIsIC8qcm91bmR0cmlwIGV4Y2x1c2lvbnMqLworICAgICAgICAgICAgICAgICAgfSwKKworICAgICAgICBuZXcgU3RyaW5nIFtdIHsgICJLQU5OQURBLUJFTkdBTEkiLAorICAgICAgICAgICJbOktBTk5BREE6XSIsICJbOkJFTkdBTEk6XSIsIAorICAgICAgICAgICAgICAgICJbXHUwOTgxXHUwOWUyXHUwOWUzXHUwOWJjXHUwOWQ3XHUwOWYwXHUwOWYxXHUwOWRjXHUwOWRkXHUwOWRmXSIsIC8qcm91bmR0cmlwIGV4Y2x1c2lvbnMqLworICAgICAgICAgICAgICAgIH0sCisgICAgICAgIG5ldyBTdHJpbmcgW10geyAgIkJFTkdBTEktS0FOTkFEQSIsCisgICAgICAgICAgICJbOkJFTkdBTEk6XSIsICJbOktBTk5BREE6XSIsCisgICAgICAgICAgICAgICAgICAiW1x1MGNjNlx1MGNjYVx1MGNkNVx1MGNkNlx1MGNjN1x1MEM4RVx1MEM5Mlx1MENCMVx1MGNiM1x1MGNiNVx1MGNkZV0iLCAvKnJvdW5kdHJpcCBleGNsdXNpb25zKi8gCisgICAgICAgICAgICAgICAgICB9LAorCisgICAgICAgIG5ldyBTdHJpbmcgW10geyAgIk1BTEFZQUxBTS1CRU5HQUxJIiwKKyAgICAgICAgICAiWzpNQUxBWUFMQU06XSIsICJbOkJFTkdBTEk6XSIsIAorICAgICAgICAgICAgICAgICJbXHUwOTgxXHUwOWUyXHUwOWUzXHUwOWJjXHUwOWM0XHUwOWYwXHUwOWYxXHUwOWRjXHUwOWRkXHUwOWRmXSIsIC8qcm91bmR0cmlwIGV4Y2x1c2lvbnMqLworICAgICAgICAgICAgICAgIH0sCisgICAgICAgIG5ldyBTdHJpbmcgW10geyAgIkJFTkdBTEktTUFMQVlBTEFNIiwKKyAgICAgICAgICAgIls6QkVOR0FMSTpdIiwgIls6TUFMQVlBTEFNOl0iLAorICAgICAgICAgICAgICAgICAgIltcdTBkNDZcdTBkNGFcdTBkNDdcdTBkMzEtXHUwZDM1XHUwZDBlXHUwZDEyXSIsIC8qcm91bmR0cmlwIGV4Y2x1c2lvbnMqLworICAgICAgICAgICAgICAgICAgfSwKKworICAgICAgICBuZXcgU3RyaW5nIFtdIHsgICJHVUpBUkFUSS1HVVJNVUtISSIsCisgICAgICAgICAgIls6R1VKQVJBVEk6XSIsICJbOkdVUk1VS0hJOl0iLCAKKyAgICAgICAgICAgICAgICAiW1x1MEEwMlx1MGFiM1x1MGFiNlx1MEE3MFx1MGE3MVx1MGE4Mlx1MGE4M1x1MGFjM1x1MGFjNFx1MGFjNVx1MGFjOVx1MGE1Y1x1MGE3Mlx1MGE3M1x1MGE3NFx1MGE4Ylx1MGE4ZFx1MGE5MVx1MGFiZF0iLCAvKnJvdW5kdHJpcCBleGNsdXNpb25zKi8KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICBuZXcgU3RyaW5nIFtdIHsgICJHVVJNVUtISS1HVUpBUkFUSSIsCisgICAgICAgICAgICJbOkdVUk1VS0hJOl0iLCAiWzpHVUpBUkFUSTpdIiwKKyAgICAgICAgICAgICAgICAgICJbXHUwYWIzXHUwYWI2XHUwQTcwXHUwYTcxXHUwYTgyXHUwYTgzXHUwYWMzXHUwYWM0XHUwYWM1XHUwYWM5XHUwYTVjXHUwYTcyXHUwYTczXHUwYTc0XHUwYThiXHUwYThkXHUwYTkxXHUwYWI3XHUwYWJkXHUwYWQwXHUwYWUwXSIsIC8qcm91bmR0cmlwIGV4Y2x1c2lvbnMqLworICAgICAgICAgICAgICAgICAgfSwKKworICAgICAgICBuZXcgU3RyaW5nIFtdIHsgICJPUklZQS1HVVJNVUtISSIsCisgICAgICAgICAgIls6T1JJWUE6XSIsICJbOkdVUk1VS0hJOl0iLCAKKyAgICAgICAgICAgICAgICAiW1x1MEEwMlx1MGE1Y1x1MGEyMVx1MGE0N1x1MGE3MVx1MGIwMlx1MGIwM1x1MGIzM1x1MGIzNlx1MGI0M1x1MGI1Nlx1MGI1N1x1MEIwQlx1MEIwQ1x1MEIzN1x1MEIzRFx1MEI1Rlx1MEI2MFx1MEI2MVx1MGEzNVx1MGE3Mlx1MGE3M1x1MGE3NF0iLCAvKnJvdW5kdHJpcCBleGNsdXNpb25zKi8KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICBuZXcgU3RyaW5nIFtdIHsgICJHVVJNVUtISS1PUklZQSIsCisgICAgICAgICAgICJbOkdVUk1VS0hJOl0iLCAiWzpPUklZQTpdIiwKKyAgICAgICAgICAgICAgICAgICJbXHUwYTcxXHUwYjAyXHUwYjAzXHUwYjMzXHUwYjM2XHUwYjQzXHUwYjU2XHUwYjU3XHUwQjBCXHUwQjBDXHUwQjM3XHUwQjNEXHUwQjVGXHUwQjYwXHUwQjYxXSIsIC8qcm91bmR0cmlwIGV4Y2x1c2lvbnMqLworICAgICAgICAgICAgICAgICAgfSwKKworICAgICAgICBuZXcgU3RyaW5nIFtdIHsgICJUQU1JTC1HVVJNVUtISSIsCisgICAgICAgICAgIls6VEFNSUw6XSIsICJbOkdVUk1VS0hJOl0iLCAKKyAgICAgICAgICAgICAgICAiW1x1MEEwMlx1MGEzM1x1MGEzNlx1MGEzY1x1MGE3MFx1MGE3MVx1MGE0N1x1MEExNlx1MEExN1x1MEExOFx1MEExQlx1MEExRFx1MEEyMFx1MEEyMVx1MEEyMlx1MEEyNVx1MEEyNlx1MEEyN1x1MEEyQlx1MEEyQ1x1MEEyRFx1MEE1OVx1MEE1QVx1MEE1Qlx1MEE1Q1x1MEE1RVx1MEE3Mlx1MEE3M1x1MEE3NF0iLCAvKnJvdW5kdHJpcCBleGNsdXNpb25zKi8KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICBuZXcgU3RyaW5nIFtdIHsgICJHVVJNVUtISS1UQU1JTCIsCisgICAgICAgICAgICJbOkdVUk1VS0hJOl0iLCAiWzpUQU1JTDpdIiwKKyAgICAgICAgICAgICAgICAgICJbXHUwYjgyXHUwYmM2XHUwYmNhXHUwYmQ3XHUwYmI3XHUwYmIzXHUwYjgzXHUwQjhFXHUwQjkyXHUwQkE5XHUwQkIxXHUwQkI0XSIsIC8qcm91bmR0cmlwIGV4Y2x1c2lvbnMqLworICAgICAgICAgICAgICAgICAgfSwKKworICAgICAgICBuZXcgU3RyaW5nIFtdIHsgICJURUxVR1UtR1VSTVVLSEkiLAorICAgICAgICAgICJbOlRFTFVHVTpdIiwgIls6R1VSTVVLSEk6XSIsIAorICAgICAgICAgICAgICAgICJbXHUwQTAyXHUwYTMzXHUwYTM2XHUwYTNjXHUwYTcwXHUwYTcxXHUwQTU5XHUwQTVBXHUwQTVCXHUwQTVDXHUwQTVFXHUwQTcyXHUwQTczXHUwQTc0XSIsIC8qcm91bmR0cmlwIGV4Y2x1c2lvbnMqLworICAgICAgICAgICAgICAgIH0sCisgICAgICAgIG5ldyBTdHJpbmcgW10geyAgIkdVUk1VS0hJLVRFTFVHVSIsCisgICAgICAgICAgICJbOkdVUk1VS0hJOl0iLCAiWzpURUxVR1U6XSIsCisgICAgICAgICAgICAgICAgICAiW1x1MGMwMlx1MGMwM1x1MGMzM1x1MGMzNlx1MGM0NFx1MGM0M1x1MGM0Nlx1MGM0YVx1MGM1Nlx1MGM1NVx1MEMwQlx1MEMwQ1x1MEMwRVx1MEMxMlx1MEMzMVx1MEMzN1x1MEM2MFx1MEM2MV0iLCAvKnJvdW5kdHJpcCBleGNsdXNpb25zKi8KKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgIG5ldyBTdHJpbmcgW10geyAgIktBTk5BREEtR1VSTVVLSEkiLAorICAgICAgICAgICJbOktBTk5BREE6XSIsICJbOkdVUk1VS0hJOl0iLCAKKyAgICAgICAgICAgICAgICAiW1x1MEEwMlx1MGEzM1x1MGEzNlx1MGEzY1x1MGE3MFx1MGE3MVx1MEE1OVx1MEE1QVx1MEE1Qlx1MEE1Q1x1MEE1RVx1MEE3Mlx1MEE3M1x1MEE3NF0iLCAvKnJvdW5kdHJpcCBleGNsdXNpb25zKi8KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICBuZXcgU3RyaW5nIFtdIHsgICJHVVJNVUtISS1LQU5OQURBIiwKKyAgICAgICAgICAgIls6R1VSTVVLSEk6XSIsICJbOktBTk5BREE6XSIsCisgICAgICAgICAgICAgICAgICAiW1x1MGM4Mlx1MGM4M1x1MGNiM1x1MGNiNlx1MGNjNFx1MGNjM1x1MGNjNlx1MGNjYVx1MGNkNVx1MGNkNlx1MEM4Qlx1MEM4Q1x1MEM4RVx1MEM5Mlx1MENCMVx1MENCN1x1MENFMFx1MENFMV0iLCAvKnJvdW5kdHJpcCBleGNsdXNpb25zKi8KKyAgICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgbmV3IFN0cmluZyBbXSB7ICAiTUFMQVlBTEFNLUdVUk1VS0hJIiwKKyAgICAgICAgICAiWzpNQUxBWUFMQU06XSIsICJbOkdVUk1VS0hJOl0iLCAKKyAgICAgICAgICAgICAgICAiW1x1MEEwMlx1MGE0Ylx1MGE0Y1x1MGEzM1x1MGEzNlx1MGEzY1x1MGE3MFx1MGE3MVx1MEE1OVx1MEE1QVx1MEE1Qlx1MEE1Q1x1MEE1RVx1MEE3Mlx1MEE3M1x1MEE3NF0iLCAvKnJvdW5kdHJpcCBleGNsdXNpb25zKi8KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICBuZXcgU3RyaW5nIFtdIHsgICJHVVJNVUtISS1NQUxBWUFMQU0iLAorICAgICAgICAgICAiWzpHVVJNVUtISTpdIiwgIls6TUFMQVlBTEFNOl0iLAorICAgICAgICAgICAgICAgICAgIltcdTBkMDJcdTBkMDNcdTBkMzNcdTBkMzZcdTBkNDNcdTBkNDZcdTBkNGFcdTBkNGNcdTBkNTdcdTBEMEJcdTBEMENcdTBEMEVcdTBEMTJcdTBEMzFcdTBEMzRcdTBEMzdcdTBENjBcdTBENjFdIiwgLypyb3VuZHRyaXAgZXhjbHVzaW9ucyovCisgICAgICAgICAgICAgICAgICB9LAorCisgICAgICAgIG5ldyBTdHJpbmcgW10geyAgIkdVSkFSQVRJLU9SSVlBIiwKKyAgICAgICAgICAiWzpHVUpBUkFUSTpdIiwgIls6T1JJWUE6XSIsIAorICAgICAgICAgICAgICAgICJbXHUwYjU2XHUwYjU3XHUwQjBDXHUwQjVGXHUwQjYxXSIsIC8qcm91bmR0cmlwIGV4Y2x1c2lvbnMqLworICAgICAgICAgICAgICAgIH0sCisgICAgICAgIG5ldyBTdHJpbmcgW10geyAgIk9SSVlBLUdVSkFSQVRJIiwKKyAgICAgICAgICAgIls6T1JJWUE6XSIsICJbOkdVSkFSQVRJOl0iLAorICAgICAgICAgICAgICAgICAgIltcdTBBYzRcdTBBYzVcdTBBYzlcdTBBYzdcdTBBOERcdTBBOTFcdTBBQjVcdTBBZDBdIiwgLypyb3VuZHRyaXAgZXhjbHVzaW9ucyovCisgICAgICAgICAgICAgICAgICB9LAorCisgICAgICAgIG5ldyBTdHJpbmcgW10geyAgIlRBTUlMLUdVSkFSQVRJIiwKKyAgICAgICAgICAiWzpUQU1JTDpdIiwgIls6R1VKQVJBVEk6XSIsIAorICAgICAgICAgICAgICAgICJbXHUwQTgxXHUwYWJjXHUwYWMzXHUwQWM0XHUwQWM1XHUwQWM5XHUwQWM3XHUwQThCXHUwQThEXHUwQTkxXHUwQTk2XHUwQTk3XHUwQTk4XHUwQTlCXHUwQTlEXHUwQUEwXHUwQUExXHUwQUEyXHUwQUE1XHUwQUE2XHUwQUE3XHUwQUFCXHUwQUFDXHUwQUFEXHUwQUI2XHUwQUJEXHUwQUQwXHUwQUUwXSIsIC8qcm91bmR0cmlwIGV4Y2x1c2lvbnMqLworICAgICAgICAgICAgICAgIH0sCisgICAgICAgIG5ldyBTdHJpbmcgW10geyAgIkdVSkFSQVRJLVRBTUlMIiwKKyAgICAgICAgICAgIls6R1VKQVJBVEk6XSIsICJbOlRBTUlMOl0iLAorICAgICAgICAgICAgICAgICAgIltcdTBCYzZcdTBCY2FcdTBCZDdcdTBCOEVcdTBCOTJcdTBCQTlcdTBCQjFcdTBCQjRdIiwgLypyb3VuZHRyaXAgZXhjbHVzaW9ucyovCisgICAgICAgICAgICAgICAgICB9LAorCisgICAgICAgIG5ldyBTdHJpbmcgW10geyAgIlRFTFVHVS1HVUpBUkFUSSIsCisgICAgICAgICAgIls6VEVMVUdVOl0iLCAiWzpHVUpBUkFUSTpdIiwgCisgICAgICAgICAgICAgICAgIltcdTBhYmNcdTBBYzVcdTBBYzlcdTBBOERcdTBBOTFcdTBBQkRcdTBBZDBdIiwgLypyb3VuZHRyaXAgZXhjbHVzaW9ucyovCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgbmV3IFN0cmluZyBbXSB7ICAiR1VKQVJBVEktVEVMVUdVIiwKKyAgICAgICAgICAgIls6R1VKQVJBVEk6XSIsICJbOlRFTFVHVTpdIiwKKyAgICAgICAgICAgICAgICAgICJbXHUwYzQ2XHUwYzRhXHUwYzU1XHUwYzU2XHUwQzBDXHUwQzBFXHUwQzEyXHUwQzMxXHUwQzYxXSIsIC8qcm91bmR0cmlwIGV4Y2x1c2lvbnMqLworICAgICAgICAgICAgICAgICAgfSwKKworICAgICAgICBuZXcgU3RyaW5nIFtdIHsgICJLQU5OQURBLUdVSkFSQVRJIiwKKyAgICAgICAgICAiWzpLQU5OQURBOl0iLCAiWzpHVUpBUkFUSTpdIiwgCisgICAgICAgICAgICAgICAgIltcdTBBODFcdTBhYmNcdTBBYzVcdTBBYzlcdTBBOERcdTBBOTFcdTBBQkRcdTBBZDBdIiwgLypyb3VuZHRyaXAgZXhjbHVzaW9ucyovCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgbmV3IFN0cmluZyBbXSB7ICAiR1VKQVJBVEktS0FOTkFEQSIsCisgICAgICAgICAgICJbOkdVSkFSQVRJOl0iLCAiWzpLQU5OQURBOl0iLAorICAgICAgICAgICAgICAgICAgIltcdTBjYzZcdTBjY2FcdTBjZDVcdTBjZDZcdTBDOENcdTBDOEVcdTBDOTJcdTBDQjFcdTBDREVcdTBDRTFdIiwgLypyb3VuZHRyaXAgZXhjbHVzaW9ucyovCisgICAgICAgICAgICAgICAgICB9LAorCisgICAgICAgIG5ldyBTdHJpbmcgW10geyAgIk1BTEFZQUxBTS1HVUpBUkFUSSIsCisgICAgICAgICAgIls6TUFMQVlBTEFNOl0iLCAiWzpHVUpBUkFUSTpdIiwgCisgICAgICAgICAgICAgICAgIltcdTBBODFcdTBhYzRcdTBhY2JcdTBhY2NcdTBhYmNcdTBBYzVcdTBBYzlcdTBBOERcdTBBOTFcdTBBQkRcdTBBZDBdIiwgLypyb3VuZHRyaXAgZXhjbHVzaW9ucyovCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgbmV3IFN0cmluZyBbXSB7ICAiR1VKQVJBVEktTUFMQVlBTEFNIiwKKyAgICAgICAgICAgIls6R1VKQVJBVEk6XSIsICJbOk1BTEFZQUxBTTpdIiwKKyAgICAgICAgICAgICAgICAgICJbXHUwZDQ2XHUwZDRhXHUwZDRjXHUwZDU1XHUwZDU3XHUwRDBDXHUwRDBFXHUwRDEyXHUwRDMxXHUwRDM0XHUwRDYxXSIsIC8qcm91bmR0cmlwIGV4Y2x1c2lvbnMqLworICAgICAgICAgICAgICAgICAgfSwKKworICAgICAgICBuZXcgU3RyaW5nIFtdIHsgICJUQU1JTC1PUklZQSIsCisgICAgICAgICAgIls6VEFNSUw6XSIsICJbOk9SSVlBOl0iLCAKKyAgICAgICAgICAgICAgICAiW1x1MEIwMVx1MGIzY1x1MGI0M1x1MGI1Nlx1MEIwQlx1MEIwQ1x1MEIxNlx1MEIxN1x1MEIxOFx1MEIxQlx1MEIxRFx1MEIyMFx1MEIyMVx1MEIyMlx1MEIyNVx1MEIyNlx1MEIyN1x1MEIyQlx1MEIyQ1x1MEIyRFx1MEIzNlx1MEIzRFx1MEI1Q1x1MEI1RFx1MEI1Rlx1MEI2MFx1MEI2MV0iLCAvKnJvdW5kdHJpcCBleGNsdXNpb25zKi8KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICBuZXcgU3RyaW5nIFtdIHsgICJPUklZQS1UQU1JTCIsCisgICAgICAgICAgICJbOk9SSVlBOl0iLCAiWzpUQU1JTDpdIiwKKyAgICAgICAgICAgICAgICAgICJbXHUwYmM2XHUwYmNhXHUwYmM3XHUwQjhFXHUwQjkyXHUwQkE5XHUwQkIxXHUwQkI0XHUwQkI1XSIsIC8qcm91bmR0cmlwIGV4Y2x1c2lvbnMqLworICAgICAgICAgICAgICAgICAgfSwKKworICAgICAgICBuZXcgU3RyaW5nIFtdIHsgICJURUxVR1UtT1JJWUEiLAorICAgICAgICAgICJbOlRFTFVHVTpdIiwgIls6T1JJWUE6XSIsIAorICAgICAgICAgICAgICAgICJbXHUwYjNjXHUwYjU3XHUwYjU2XHUwQjNEXHUwQjVDXHUwQjVEXHUwQjVGXSIsIC8qcm91bmR0cmlwIGV4Y2x1c2lvbnMqLworICAgICAgICAgICAgICAgIH0sCisgICAgICAgIG5ldyBTdHJpbmcgW10geyAgIk9SSVlBLVRFTFVHVSIsCisgICAgICAgICAgICJbOk9SSVlBOl0iLCAiWzpURUxVR1U6XSIsCisgICAgICAgICAgICAgICAgICAiW1x1MGM0NFx1MGM0Nlx1MGM0YVx1MGM1NVx1MGM0N1x1MEMwRVx1MEMxMlx1MEMzMVx1MEMzNV0iLCAvKnJvdW5kdHJpcCBleGNsdXNpb25zKi8KKyAgICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgbmV3IFN0cmluZyBbXSB7ICAiS0FOTkFEQS1PUklZQSIsCisgICAgICAgICAgIls6S0FOTkFEQTpdIiwgIls6T1JJWUE6XSIsIAorICAgICAgICAgICAgICAgICJbXHUwQjAxXHUwYjNjXHUwYjU3XHUwQjNEXHUwQjVDXHUwQjVEXHUwQjVGXSIsIC8qcm91bmR0cmlwIGV4Y2x1c2lvbnMqLworICAgICAgICAgICAgICAgIH0sCisgICAgICAgIG5ldyBTdHJpbmcgW10geyAgIk9SSVlBLUtBTk5BREEiLAorICAgICAgICAgICAiWzpPUklZQTpdIiwgIls6S0FOTkFEQTpdIiwKKyAgICAgICAgICAgICAgICAgICJbXHUwY2M0XHUwY2M2XHUwY2NhXHUwY2Q1XHUwY2M3XHUwQzhFXHUwQzkyXHUwQ0IxXHUwQ0I1XHUwQ0RFXSIsIC8qcm91bmR0cmlwIGV4Y2x1c2lvbnMqLworICAgICAgICAgICAgICAgICAgfSwKKworICAgICAgICBuZXcgU3RyaW5nIFtdIHsgICJNQUxBWUFMQU0tT1JJWUEiLAorICAgICAgICAgICJbOk1BTEFZQUxBTTpdIiwgIls6T1JJWUE6XSIsIAorICAgICAgICAgICAgICAgICJbXHUwQjAxXHUwYjNjXHUwYjU2XHUwQjNEXHUwQjVDXHUwQjVEXHUwQjVGXSIsIC8qcm91bmR0cmlwIGV4Y2x1c2lvbnMqLworICAgICAgICAgICAgICAgIH0sCisgICAgICAgIG5ldyBTdHJpbmcgW10geyAgIk9SSVlBLU1BTEFZQUxBTSIsCisgICAgICAgICAgICJbOk9SSVlBOl0iLCAiWzpNQUxBWUFMQU06XSIsCisgICAgICAgICAgICAgICAgICAiW1x1MEQ0N1x1MEQ0Nlx1MEQ0YVx1MEQwRVx1MEQxMlx1MEQzMVx1MEQzNFx1MEQzNV0iLCAvKnJvdW5kdHJpcCBleGNsdXNpb25zKi8KKyAgICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgbmV3IFN0cmluZyBbXSB7ICAiVEVMVUdVLVRBTUlMIiwKKyAgICAgICAgICAiWzpURUxVR1U6XSIsICJbOlRBTUlMOl0iLCAKKyAgICAgICAgICAgICAgICAiW1x1MGJkN1x1MGJhOVx1MGJiNF0iLCAvKnJvdW5kdHJpcCBleGNsdXNpb25zKi8KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICBuZXcgU3RyaW5nIFtdIHsgICJUQU1JTC1URUxVR1UiLAorICAgICAgICAgICAiWzpUQU1JTDpdIiwgIls6VEVMVUdVOl0iLAorICAgICAgICAgICAgICAgICAgIltcdTBDMDFcdTBjNDNcdTBjNDRcdTBjNDZcdTBjNDdcdTBjNTVcdTBjNTZcdTBjNjZcdTBDMEJcdTBDMENcdTBDMTZcdTBDMTdcdTBDMThcdTBDMUJcdTBDMURcdTBDMjBcdTBDMjFcdTBDMjJcdTBDMjVcdTBDMjZcdTBDMjdcdTBDMkJcdTBDMkNcdTBDMkRcdTBDMzZcdTBDNjBcdTBDNjFdIiwgLypyb3VuZHRyaXAgZXhjbHVzaW9ucyovCisgICAgICAgICAgICAgICAgICB9LAorCisgICAgICAgIG5ldyBTdHJpbmcgW10geyAgIktBTk5BREEtVEFNSUwiLAorICAgICAgICAgICJbOktBTk5BREE6XSIsICJbOlRBTUlMOl0iLCAKKyAgICAgICAgICAgICAgICAiW1x1MGJkN1x1MGJjNlx1MGJhOVx1MGJiNF0iLCAvKnJvdW5kdHJpcCBleGNsdXNpb25zKi8KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICBuZXcgU3RyaW5nIFtdIHsgICJUQU1JTC1LQU5OQURBIiwKKyAgICAgICAgICAgIls6VEFNSUw6XSIsICJbOktBTk5BREE6XSIsCisgICAgICAgICAgICAgICAgICAiW1x1MGNjM1x1MGNjNFx1MGNjNlx1MGNjN1x1MGNkNVx1MGNkNlx1MEM4Qlx1MEM4Q1x1MEM5Nlx1MEM5N1x1MEM5OFx1MEM5Qlx1MEM5RFx1MENBMFx1MENBMVx1MENBMlx1MENBNVx1MENBNlx1MENBN1x1MENBQlx1MENBQ1x1MENBRFx1MENCNlx1MENERVx1MENFMFx1MENFMV0iLCAvKnJvdW5kdHJpcCBleGNsdXNpb25zKi8KKyAgICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgbmV3IFN0cmluZyBbXSB7ICAiTUFMQVlBTEFNLVRBTUlMIiwKKyAgICAgICAgICAiWzpNQUxBWUFMQU06XSIsICJbOlRBTUlMOl0iLCAKKyAgICAgICAgICAgICAgICAiW1x1MGJhOV0iLCAvKnJvdW5kdHJpcCBleGNsdXNpb25zKi8KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICBuZXcgU3RyaW5nIFtdIHsgICJUQU1JTC1NQUxBWUFMQU0iLAorICAgICAgICAgICAiWzpUQU1JTDpdIiwgIls6TUFMQVlBTEFNOl0iLAorICAgICAgICAgICAgICAgICAgIltcdTBkNDNcdTBkMTJcdTBEMEJcdTBEMENcdTBEMTZcdTBEMTdcdTBEMThcdTBEMUJcdTBEMURcdTBEMjBcdTBEMjFcdTBEMjJcdTBEMjVcdTBEMjZcdTBEMjdcdTBEMkJcdTBEMkNcdTBEMkRcdTBEMzZcdTBENjBcdTBENjFdIiwgLypyb3VuZHRyaXAgZXhjbHVzaW9ucyovCisgICAgICAgICAgICAgICAgICB9LAorCisgICAgICAgIG5ldyBTdHJpbmcgW10geyAgIktBTk5BREEtVEVMVUdVIiwKKyAgICAgICAgICAiWzpLQU5OQURBOl0iLCAiWzpURUxVR1U6XSIsIAorICAgICAgICAgICAgICAgICJbXHUwQzAxXHUwYzNmXHUwYzQ2XHUwYzQ4XHUwYzRhXSIsIC8qcm91bmR0cmlwIGV4Y2x1c2lvbnMqLworICAgICAgICAgICAgICAgIH0sCisgICAgICAgIG5ldyBTdHJpbmcgW10geyAgIlRFTFVHVS1LQU5OQURBIiwKKyAgICAgICAgICAgIls6VEVMVUdVOl0iLCAiWzpLQU5OQURBOl0iLAorICAgICAgICAgICAgICAgICAgIltcdTBjYzhcdTBjZDVcdTBjZDZcdTBDREVdIiwgLypyb3VuZHRyaXAgZXhjbHVzaW9ucyovCisgICAgICAgICAgICAgICAgICB9LAorCisgICAgICAgIG5ldyBTdHJpbmcgW10geyAgIk1BTEFZQUxBTS1URUxVR1UiLAorICAgICAgICAgICJbOk1BTEFZQUxBTTpdIiwgIls6VEVMVUdVOl0iLCAKKyAgICAgICAgICAgICAgICAiW1x1MEMwMVx1MGM0NFx1MGM0YVx1MGM0Y1x1MGM0Ylx1MGM1NVx1MGM1Nl0iLCAvKnJvdW5kdHJpcCBleGNsdXNpb25zKi8KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICBuZXcgU3RyaW5nIFtdIHsgICJURUxVR1UtTUFMQVlBTEFNIiwKKyAgICAgICAgICAgIls6VEVMVUdVOl0iLCAiWzpNQUxBWUFMQU06XSIsCisgICAgICAgICAgICAgICAgICAiW1x1MGQ0Y1x1MGQ1N1x1MEQzNF0iLCAvKnJvdW5kdHJpcCBleGNsdXNpb25zKi8KKyAgICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgbmV3IFN0cmluZyBbXSB7ICAiTUFMQVlBTEFNLUtBTk5BREEiLAorICAgICAgICAgICJbOk1BTEFZQUxBTTpdIiwgIls6S0FOTkFEQTpdIiwgCisgICAgICAgICAgICAgICAgIltcdTBjYzRcdTBjYzZcdTBjY2FcdTBjY2NcdTBjY2JcdTBjZDVcdTBjZDZcdTBjRGVdIiwgLypyb3VuZHRyaXAgZXhjbHVzaW9ucyovCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgbmV3IFN0cmluZyBbXSB7ICAiTGF0aW4tQmVuZ2FsaSIsCisgICAgICAgICAgICBsYXRpbkZvckluZGljLCAiW1s6QmVuZ2FsaTpdW1x1MDk2NFx1MDk2NV1dIiwgCisgICAgICAgICAgICAgICAiW1x1MDk2NVx1MDlmMFx1MDlmMVx1MDk2NV0iLCAvKnJvdW5kdHJpcCBleGNsdXNpb25zKi8KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICBuZXcgU3RyaW5nIFtdIHsgICJMYXRpbi1HdXJtdWtoaSIsCisgICAgICAgICAgIGxhdGluRm9ySW5kaWMsICJbWzpHdXJtdWtoaTpdW1x1MDk2NFx1MDk2NV1dIiwgCisgICAgICAgICAgICAgICAiW1x1MGEwMlx1MDk2NVx1MGE3Mlx1MGE3M1x1MGE3NF0iLCAvKnJvdW5kdHJpcCBleGNsdXNpb25zKi8KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICBuZXcgU3RyaW5nIFtdIHsgICJMYXRpbi1HdWphcmF0aSIsCisgICAgICAgICAgICBsYXRpbkZvckluZGljLCAiW1s6R3VqYXJhdGk6XVtcdTA5NjRcdTA5NjVdXSIsIAorICAgICAgICAgICAgICAgIltcdTA5NjVdIiwgLypyb3VuZHRyaXAgZXhjbHVzaW9ucyovCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgbmV3IFN0cmluZyBbXSB7ICAiTGF0aW4tT3JpeWEiLAorICAgICAgICAgICAgbGF0aW5Gb3JJbmRpYywgIltbOk9yaXlhOl1bXHUwOTY0XHUwOTY1XV0iLCAKKyAgICAgICAgICAgICAgICJbXHUwOTY1XSIsIC8qcm91bmR0cmlwIGV4Y2x1c2lvbnMqLworICAgICAgICAgICAgICAgIH0sCisgICAgICAgIG5ldyBTdHJpbmcgW10geyAgIkxhdGluLVRhbWlsIiwKKyAgICAgICAgICAgIGxhdGluRm9ySW5kaWMsICJbOlRhbWlsOl0iLCAKKyAgICAgICAgICAgICAgIG51bGwsIC8qcm91bmR0cmlwIGV4Y2x1c2lvbnMqLworICAgICAgICAgICAgICAgIH0sCisgICAgICAgIG5ldyBTdHJpbmcgW10geyAgIkxhdGluLVRlbHVndSIsCisgICAgICAgICAgICBsYXRpbkZvckluZGljLCAiWzpUZWx1Z3U6XSIsIAorICAgICAgICAgICAgICAgbnVsbCwgLypyb3VuZHRyaXAgZXhjbHVzaW9ucyovCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgbmV3IFN0cmluZyBbXSB7ICAiTGF0aW4tS2FubmFkYSIsCisgICAgICAgICAgICBsYXRpbkZvckluZGljLCAiWzpLYW5uYWRhOl0iLCAKKyAgICAgICAgICAgICAgIG51bGwsIC8qcm91bmR0cmlwIGV4Y2x1c2lvbnMqLworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICBuZXcgU3RyaW5nIFtdIHsgICJMYXRpbi1NYWxheWFsYW0iLAorICAgICAgICAgICBsYXRpbkZvckluZGljLCAiWzpNYWxheWFsYW06XSIsIAorICAgICAgICAgICAgICAgbnVsbCwgLypyb3VuZHRyaXAgZXhjbHVzaW9ucyovCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgfTsKKworICAgIHB1YmxpYyB2b2lkIFRlc3RJbnRlckluZGljKCkgdGhyb3dzIEV4Y2VwdGlvbnsKKyAgICAgICAgbG9uZyBzdGFydCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICBpbnQgbnVtID0gYXJyYXkubGVuZ3RoOworICAgICAgICBpZiAoaXNRdWljaygpKSB7CisgICAgICAgICAgICBsb2dsbigiVGVzdGluZyBvbmx5IDUgb2YgIisgYXJyYXkubGVuZ3RoKyIgU2tpcHBpbmcgcmVzdCAodXNlIC1lIGZvciBleGhhdXN0aXZlKSIpOworICAgICAgICAgICAgbnVtID0gNTsKKyAgICAgICAgfQorICAgICAgICBmb3IoaW50IGk9MDsgaTxudW07aSsrKXsKKyAgICAgICAgICAgbG9nbG4oIlRlc3RpbmcgIiArIGFycmF5W2ldWzBdICsgIiBhdCBpbmRleCAiICsgaSAgICk7CisgICAgICAgICAgIG5ldyBUZXN0KGFycmF5W2ldWzBdLCA1MCkKKyAgICAgICAgICAgICAgICAudGVzdChhcnJheVtpXVsxXSwgYXJyYXlbaV1bMl0sIAorICAgICAgICAgICAgICAgIGFycmF5W2ldWzNdLAorICAgICAgICAgICAgICAgIHRoaXMsIG5ldyBMZWdhbEluZGljKCkpOworICAgICAgICB9CisgICAgICAgIHNob3dFbGFwc2VkKHN0YXJ0LCAiVGVzdEludGVySW5kaWMiKTsKKyAgICB9CisgCisgICAgLy8tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBFbmQgSW5kaWMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgTGVnYWwgeworICAgICAgICBwdWJsaWMgYm9vbGVhbiBpcyhTdHJpbmcgc291cmNlU3RyaW5nKSB7cmV0dXJuIHRydWU7fQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIExlZ2FsSmFtbyBleHRlbmRzIExlZ2FsIHsKKyAgICAgICAgLy8gYW55IGluaXRpYWwgbXVzdCBiZSBmb2xsb3dlZCBieSBhIG1lZGlhbCAob3IgaW5pdGlhbCkKKyAgICAgICAgLy8gYW55IG1lZGlhbCBtdXN0IGZvbGxvdyBhbiBpbml0aWFsIChvciBtZWRpYWwpCisgICAgICAgIC8vIGFueSBmaW5hbCBtdXN0IGZvbGxvdyBhIG1lZGlhbCAob3IgZmluYWwpCisgICAgICAgIAorICAgICAgICBwdWJsaWMgYm9vbGVhbiBpcyhTdHJpbmcgc291cmNlU3RyaW5nKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGludCB0OworICAgICAgICAgICAgICAgIFN0cmluZyBkZWNvbXAgPSBOb3JtYWxpemVyLm5vcm1hbGl6ZShzb3VyY2VTdHJpbmcsIE5vcm1hbGl6ZXIuTkZEKTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGRlY29tcC5sZW5ndGgoKTsgKytpKSB7IC8vIGRvbid0IHdvcnJ5IGFib3V0IHN1cnJvZ2F0ZXMKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChnZXRUeXBlKGRlY29tcC5jaGFyQXQoaSkpKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBnZXRUeXBlKGRlY29tcC5jaGFyQXQoaSsxKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCAhPSAwICYmIHQgIT0gMSkgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBnZXRUeXBlKGRlY29tcC5jaGFyQXQoaS0xKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCAhPSAwICYmIHQgIT0gMSkgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBnZXRUeXBlKGRlY29tcC5jaGFyQXQoaS0xKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCAhPSAxICYmIHQgIT0gMikgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9IGNhdGNoIChTdHJpbmdJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHB1YmxpYyBpbnQgZ2V0VHlwZShjaGFyIGMpIHsKKyAgICAgICAgICAgIGlmICgnXHUxMTAwJyA8PSBjICYmIGMgPD0gJ1x1MTExMicpIHJldHVybiAwOworICAgICAgICAgICAgZWxzZSBpZiAoJ1x1MTE2MScgPD0gYyAmJiBjICA8PSAnXHUxMTc1JykgcmV0dXJuIDE7CisgICAgICAgICAgICBlbHNlIGlmICgnXHUxMUE4JyA8PSBjICYmIGMgIDw9ICdcdTExQzInKSByZXR1cm4gMjsKKyAgICAgICAgICAgIHJldHVybiAtMTsgLy8gb3RoZXIKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBzdGF0aWMgQnJlYWtJdGVyYXRvciB0aGFpQnJlYWsgPSBCcmVha0l0ZXJhdG9yLmdldFdvcmRJbnN0YW5jZShuZXcgTG9jYWxlKCJ0aCIsICJUSCIpKTsKKyAgICAvLyBhbnl0aGluZyBpcyBsZWdhbCBleGNlcHQgd29yZCBlbmRpbmcgd2l0aCBMb2dpY2FsLW9yZGVyLWV4Y2VwdGlvbgorICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgTGVnYWxUaGFpIGV4dGVuZHMgTGVnYWwgeworICAgICAgICBwdWJsaWMgYm9vbGVhbiBpcyhTdHJpbmcgc291cmNlU3RyaW5nKSB7CisgICAgICAgICAgICBpZiAoc291cmNlU3RyaW5nLmxlbmd0aCgpID09IDApIHJldHVybiB0cnVlOworICAgICAgICAgICAgY2hhciBjaCA9IHNvdXJjZVN0cmluZy5jaGFyQXQoc291cmNlU3RyaW5nLmxlbmd0aCgpIC0gMSk7IC8vIGRvbid0IHdvcnJ5IGFib3V0IHN1cnJvZ2F0ZXMuCisgICAgICAgICAgICBpZiAoVUNoYXJhY3Rlci5oYXNCaW5hcnlQcm9wZXJ0eShjaCwgVVByb3BlcnR5LkxPR0lDQUxfT1JERVJfRVhDRVBUSU9OKSkgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgCisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIGRpc2FsbG93IGFueXRoaW5nIHdpdGggYSB3b3JkYnJlYWsgYmV0d2VlbgorICAgICAgICAgICAgLyoKKyAgICAgICAgICAgIGlmIChVVEYxNi5jb3VudENvZGVQb2ludChzb3VyY2VTdHJpbmcpIDw9IDEpIHJldHVybiB0cnVlOworICAgICAgICAgICAgdGhhaUJyZWFrLnNldFRleHQoc291cmNlU3RyaW5nKTsKKyAgICAgICAgICAgIGZvciAoaW50IHBvcyA9IHRoYWlCcmVhay5maXJzdCgpOyBwb3MgIT0gQnJlYWtJdGVyYXRvci5ET05FOyBwb3MgPSB0aGFpQnJlYWsubmV4dCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKHBvcyA+IDAgJiYgcG9zIDwgc291cmNlU3RyaW5nLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiU2tpcHBpbmcgIiArIFV0aWxpdHkuZXNjYXBlKHNvdXJjZVN0cmluZykpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8vIGFueXRoaW5nIGlzIGxlZ2FsIGV4Y2VwdCB0aGF0IEZpbmFsIGxldHRlcnMgY2FuJ3QgYmUgZm9sbG93ZWQgYnkgbGV0dGVyOyBOb25GaW5hbCBtdXN0IGJlCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBMZWdhbEhlYnJldyBleHRlbmRzIExlZ2FsIHsKKyAgICAgICAgc3RhdGljIFVuaWNvZGVTZXQgRklOQUwgPSBuZXcgVW5pY29kZVNldCgiW1x1MDVEQVx1MDVERFx1MDVERlx1MDVFM1x1MDVFNV0iKTsKKyAgICAgICAgc3RhdGljIFVuaWNvZGVTZXQgTk9OX0ZJTkFMID0gbmV3IFVuaWNvZGVTZXQoIltcdTA1REJcdTA1REVcdTA1RTBcdTA1RTRcdTA1RTZdIik7CisgICAgICAgIHN0YXRpYyBVbmljb2RlU2V0IExFVFRFUiA9IG5ldyBVbmljb2RlU2V0KCJbOmxldHRlcjpdIik7CisgICAgICAgIHB1YmxpYyBib29sZWFuIGlzKFN0cmluZyBzb3VyY2VTdHJpbmcpIHsKKyAgICAgICAgICAgIGlmIChzb3VyY2VTdHJpbmcubGVuZ3RoKCkgPT0gMCkgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAvLyBkb24ndCB3b3JyeSBhYm91dCBzdXJyb2dhdGVzLgorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzb3VyY2VTdHJpbmcubGVuZ3RoKCk7ICsraSkgeworICAgICAgICAgICAgICAgIGNoYXIgY2ggPSBzb3VyY2VTdHJpbmcuY2hhckF0KGkpOworICAgICAgICAgICAgICAgIGNoYXIgbmV4dCA9IGkrMSA9PSBzb3VyY2VTdHJpbmcubGVuZ3RoKCkgPyAnXHUwMDAwJyA6IHNvdXJjZVN0cmluZy5jaGFyQXQoaSk7CisgICAgICAgICAgICAgICAgaWYgKEZJTkFMLmNvbnRhaW5zKGNoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoTEVUVEVSLmNvbnRhaW5zKG5leHQpKSByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChOT05fRklOQUwuY29udGFpbnMoY2gpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghTEVUVEVSLmNvbnRhaW5zKG5leHQpKSByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfSAgIAorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBMZWdhbEdyZWVrIGV4dGVuZHMgTGVnYWwgeworICAgICAgICAKKyAgICAgICAgYm9vbGVhbiBmdWxsOworICAgICAgICAKKyAgICAgICAgcHVibGljIExlZ2FsR3JlZWsoYm9vbGVhbiBmdWxsKSB7CisgICAgICAgICAgICB0aGlzLmZ1bGwgPSBmdWxsOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzdGF0aWMgZmluYWwgY2hhciBJT1RBX1NVQlNDUklQVCA9ICdcdTAzNDUnOworICAgICAgICBzdGF0aWMgZmluYWwgVW5pY29kZVNldCBicmVhdGhpbmcgPSBuZXcgVW5pY29kZVNldCgiW1xcdTAzMTNcXHUwMzE0J10iKTsKKyAgICAgICAgc3RhdGljIGZpbmFsIFVuaWNvZGVTZXQgdmFsaWRTZWNvbmRWb3dlbCA9IG5ldyBVbmljb2RlU2V0KCJbXFx1MDNDNVxcdTAzQjlcXHUwM0E1XFx1MDM5OV0iKTsKKyAgICAgICAgCisgICAgICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc1Zvd2VsKGNoYXIgYykgeworICAgICAgICAgICAgcmV0dXJuICJcdTAzQjFcdTAzQjVcdTAzQjdcdTAzQjlcdTAzQkZcdTAzQzVcdTAzQzlcdTAzOTFcdTAzOTVcdTAzOTdcdTAzOTlcdTAzOUZcdTAzQTVcdTAzQTkiLmluZGV4T2YoYykgPj0gMDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzUmhvKGNoYXIgYykgeworICAgICAgICAgICAgcmV0dXJuICJcdTAzQzFcdTAzQTEiLmluZGV4T2YoYykgPj0gMDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHVibGljIGJvb2xlYW4gaXMoU3RyaW5nIHNvdXJjZVN0cmluZykgeyAKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIGRlY29tcCA9IE5vcm1hbGl6ZXIubm9ybWFsaXplKHNvdXJjZVN0cmluZywgTm9ybWFsaXplci5ORkQpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIG1vZGVybiBpcyBzaW1wbGVyOiBkb24ndCBjYXJlIGFib3V0IGFueXRoaW5nIGJ1dCBhIGdyYXZlCisgICAgICAgICAgICAgICAgaWYgKCFmdWxsKSB7CisgICAgICAgICAgICAgICAgICAgIC8vaWYgKHNvdXJjZVN0cmluZy5lcXVhbHMoIlx1MDM5Q1x1MDNDMCIpKSByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZGVjb21wLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgYyA9IGRlY29tcC5jaGFyQXQoaSk7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBleGNsdWRlIGFsbCB0aGUgYWNjZW50cworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ1x1MDMxMycgfHwgYyA9PSAnXHUwMzE0JyB8fCBjID09ICdcdTAzMDAnIHx8IGMgPT0gJ1x1MDMwMicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBjID09ICdcdTAzNDInIHx8IGMgPT0gJ1x1MDM0NScKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gTGVnYWwgZnVsbCBHcmVlayBoYXMgYnJlYXRoaW5nIG1hcmtzIElGRiB0aGVyZSBpcyBhIHZvd2VsIG9yIFJITyBhdCB0aGUgc3RhcnQKKyAgICAgICAgICAgICAgICAvLyBJRiBpdCBoYXMgdGhlbSwgaXQgaGFzIGV4YWN0bHkgb25lLgorICAgICAgICAgICAgICAgIC8vIElGIGl0IHN0YXJ0cyB3aXRoIGEgUkhPLCB0aGVuIHRoZSBicmVhdGhpbmcgbWFyayBtdXN0IGNvbWUgYmVmb3JlIHRoZSBzZWNvbmQgbGV0dGVyLgorICAgICAgICAgICAgICAgIC8vIElGIGl0IHN0YXJ0cyB3aXRoIGEgdm93ZWwsIHRoZW4gaXQgbXVzdCBiZWZvcmUgdGhlIHRoaXJkIGxldHRlci4KKyAgICAgICAgICAgICAgICAvLwlpdCB3aWxsIG9ubHkgY29tZSBhZnRlciB0aGUgc2Vjb25kIGlmIG9mIHRoZSBmb3JtYXQgW3Zvd2VsXSBbbm8gaW90YSBzdWJzY3JpcHQhXSBbdXBzaWxvbiBvciBpb3RhXQorICAgICAgICAgICAgICAgIC8vIFNpbmNlIHRoZXJlIGFyZSBubyBzdXJyb2dhdGVzIGluIGdyZWVrLCBkb24ndCB3b3JyeSBhYm91dCB0aGVtCisKKyAgICAgICAgICAgICAgICBib29sZWFuIGZpcnN0SXNWb3dlbCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGJvb2xlYW4gZmlyc3RJc1JobyA9IGZhbHNlOworICAgICAgICAgICAgICAgIGJvb2xlYW4gbm9MZXR0ZXJZZXQgPSB0cnVlOworICAgICAgICAgICAgICAgIGludCBicmVhdGhpbmdDb3VudCA9IDA7CisgICAgICAgICAgICAgICAgaW50IGxldHRlckNvdW50ID0gMDsKKyAgICAgICAgICAgICAgICBpbnQgYnJlYXRoaW5nUG9zaXRpb24gPSAtMTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGRlY29tcC5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIGNoYXIgYyA9IGRlY29tcC5jaGFyQXQoaSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChVQ2hhcmFjdGVyLmlzTGV0dGVyKGMpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICArK2xldHRlckNvdW50OworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0SXNWb3dlbCAmJiAhdmFsaWRTZWNvbmRWb3dlbC5jb250YWlucyhjKSAmJiBicmVhdGhpbmdDb3VudCA9PSAwKSByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9MZXR0ZXJZZXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBub0xldHRlcllldCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0SXNWb3dlbCA9IGlzVm93ZWwoYyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RJc1JobyA9IGlzUmhvKGMpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0SXNSaG8gJiYgbGV0dGVyQ291bnQgPT0gMiAmJiBicmVhdGhpbmdDb3VudCA9PSAwKSByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gSU9UQV9TVUJTQ1JJUFQgJiYgZmlyc3RJc1Zvd2VsICYmIGJyZWF0aGluZ0NvdW50ID09IDApIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGJyZWF0aGluZy5jb250YWlucyhjKSkgeworICAgICAgICAgICAgICAgICAgICAJYnJlYXRoaW5nUG9zaXRpb24gPSBpOworICAgICAgICAgICAgICAgICAgICAgICAgKyticmVhdGhpbmdDb3VudDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoZmlyc3RJc1Zvd2VsIHx8IGZpcnN0SXNSaG8pIHJldHVybiBicmVhdGhpbmdDb3VudCA9PSAxOworICAgICAgICAgICAgICAgIHJldHVybiBicmVhdGhpbmdDb3VudCA9PSAwOworICAgICAgICAgICAgfSBjYXRjaCAoVGhyb3dhYmxlIHQpIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4odC5nZXRDbGFzcygpLmdldE5hbWUoKSArICIgIiArIHQuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBzdGF0aWMgY2xhc3MgVGVzdCB7CisgICAgCisgICAgICAgIFByaW50V3JpdGVyIG91dDsKKyAgICAKKyAgICAgICAgcHJpdmF0ZSBTdHJpbmcgdHJhbnNsaXRlcmF0b3JJRDsgCisgICAgICAgIHByaXZhdGUgaW50IGVycm9yTGltaXQgPSA1MDA7CisgICAgICAgIHByaXZhdGUgaW50IGVycm9yQ291bnQgPSAwOworICAgICAgICBwcml2YXRlIGludCBwYWlyTGltaXQgID0gMHgxMDAwMDsKKyAgICAgICAgcHJpdmF0ZSBpbnQgZGVuc2l0eSA9IDEwMDsKKyAgICAgICAgVW5pY29kZVNldCBzb3VyY2VSYW5nZTsKKyAgICAgICAgVW5pY29kZVNldCB0YXJnZXRSYW5nZTsKKyAgICAgICAgVW5pY29kZVNldCB0b1NvdXJjZTsKKyAgICAgICAgVW5pY29kZVNldCB0b1RhcmdldDsKKyAgICAgICAgVW5pY29kZVNldCByb3VuZHRyaXBFeGNsdXNpb25zOworICAgICAgICAKKyAgICAgICAgUm91bmRUcmlwVGVzdCBsb2c7CisgICAgICAgIExlZ2FsIGxlZ2FsU291cmNlOworICAgICAgICBVbmljb2RlU2V0IGJhZENoYXJhY3RlcnM7CisgICAgCisgICAgICAgIC8qCisgICAgICAgICAqIGNyZWF0ZSBhIHRlc3QgZm9yIHRoZSBnaXZlbiBzY3JpcHQgdHJhbnNsaXRlcmF0b3IuCisgICAgICAgICAqLworICAgICAgICBUZXN0KFN0cmluZyB0cmFuc2xpdGVyYXRvcklEKSB7CisgICAgICAgICAgICB0aGlzKHRyYW5zbGl0ZXJhdG9ySUQsIDEwMCk7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgVGVzdChTdHJpbmcgdHJhbnNsaXRlcmF0b3JJRCwgaW50IGRlbnMpIHsKKyAgICAgICAgICAgIHRoaXMudHJhbnNsaXRlcmF0b3JJRCA9IHRyYW5zbGl0ZXJhdG9ySUQ7CisgICAgICAgICAgICB0aGlzLmRlbnNpdHkgPSBkZW5zOworICAgICAgICB9CisgICAgCisgICAgICAgIHB1YmxpYyB2b2lkIHNldEVycm9yTGltaXQoaW50IGxpbWl0KSB7CisgICAgICAgICAgICBlcnJvckxpbWl0ID0gbGltaXQ7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgcHVibGljIHZvaWQgc2V0UGFpckxpbWl0KGludCBsaW1pdCkgeworICAgICAgICAgICAgcGFpckxpbWl0ID0gbGltaXQ7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIEFkZGVkIHRvIGRvIGJldHRlciBlcXVhbGl0eSBjaGVjay4KKyAgICAgICAgCisgICAgICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc1NhbWUoU3RyaW5nIGEsIFN0cmluZyBiKSB7CisgICAgICAgICAgICBpZiAoYS5lcXVhbHMoYikpIHJldHVybiB0cnVlOworICAgICAgICAgICAgaWYgKGEuZXF1YWxzSWdub3JlQ2FzZShiKSAmJiBpc0NhbWVsKGEpKSByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGEgPSBOb3JtYWxpemVyLm5vcm1hbGl6ZShhLCBOb3JtYWxpemVyLk5GRCk7CisgICAgICAgICAgICBiID0gTm9ybWFsaXplci5ub3JtYWxpemUoYiwgTm9ybWFsaXplci5ORkQpOworICAgICAgICAgICAgaWYgKGEuZXF1YWxzKGIpKSByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGlmIChhLmVxdWFsc0lnbm9yZUNhc2UoYikgJiYgaXNDYW1lbChhKSkgcmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8qCisgICAgICAgIHB1YmxpYyBib29sZWFuIGluY2x1ZGVzU29tZShVbmljb2RlU2V0IHNldCwgU3RyaW5nIGEpIHsKKyAgICAgICAgICAgIGludCBjcDsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYS5sZW5ndGgoKTsgaSArPSBVVEYxNi5nZXRDaGFyQ291bnQoY3ApKSB7CisgICAgICAgICAgICAgICAgY3AgPSBVVEYxNi5jaGFyQXQoYSwgaSk7CisgICAgICAgICAgICAgICAgaWYgKHNldC5jb250YWlucyhjcCkpIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgICovCisgICAgICAgIAorICAgICAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNDYW1lbChTdHJpbmcgYSkgeworICAgICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oIkNhbWVsVGVzdCIpOworICAgICAgICAgICAgLy8gc2VlIGlmIHN0cmluZyBpcyBvZiB0aGUgZm9ybSBhQjsgZS5nLiBsb3dlciwgdGhlbiB1cHBlciBvciB0aXRsZQorICAgICAgICAgICAgaW50IGNwOworICAgICAgICAgICAgYm9vbGVhbiBoYXZlTG93ZXIgPSBmYWxzZTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYS5sZW5ndGgoKTsgaSArPSBVVEYxNi5nZXRDaGFyQ291bnQoY3ApKSB7CisgICAgICAgICAgICAgICAgY3AgPSBVVEYxNi5jaGFyQXQoYSwgaSk7CisgICAgICAgICAgICAgICAgaW50IHQgPSBVQ2hhcmFjdGVyLmdldFR5cGUoY3ApOworICAgICAgICAgICAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCJcdCIgKyB0ICsgIiAiICsgSW50ZWdlci50b1N0cmluZyhjcCwxNikgKyAiICIgKyBVQ2hhcmFjdGVyLmdldE5hbWUoY3ApKTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHQpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBDaGFyYWN0ZXIuVVBQRVJDQVNFX0xFVFRFUjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXZlTG93ZXIpIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQ2hhcmFjdGVyLlRJVExFQ0FTRV9MRVRURVI6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGF2ZUxvd2VyKSByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRyb3AgdGhyb3VnaCwgc2luY2Ugc2Vjb25kIGxldHRlciBpcyBsb3dlci4KKyAgICAgICAgICAgICAgICAgICAgY2FzZSBDaGFyYWN0ZXIuTE9XRVJDQVNFX0xFVFRFUjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVMb3dlciA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiRkFMU0UiKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgc3RhdGljIGZpbmFsIFVuaWNvZGVTZXQgb2tBbnl3YXkgPSBuZXcgVW5pY29kZVNldCgiW15bOkxldHRlcjpdXSIpOworICAgICAgICBzdGF0aWMgZmluYWwgVW5pY29kZVNldCBuZXZlck9rID0gbmV3IFVuaWNvZGVTZXQoIls6T3RoZXI6XSIpOworICAgICAgCisgICAgICAgIHB1YmxpYyB2b2lkIHRlc3QoU3RyaW5nIHNvdXJjZVJhbmdlLCBTdHJpbmcgdGFyZ2V0UmFuZ2UsIAorICAgICAgICAgIFN0cmluZyByb3VuZHRyaXBFeGNsdXNpb25zLCBSb3VuZFRyaXBUZXN0IGxvZywgTGVnYWwgbGVnYWxTb3VyY2UpIAorICAgICAgICAgIHRocm93cyBqYXZhLmlvLklPRXhjZXB0aW9uLCBqYXZhLnRleHQuUGFyc2VFeGNlcHRpb24geworICAgICAgICAgICAgdGVzdChzb3VyY2VSYW5nZSwgdGFyZ2V0UmFuZ2UsIHNvdXJjZVJhbmdlLCByb3VuZHRyaXBFeGNsdXNpb25zLCBsb2csIGxlZ2FsU291cmNlKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIHRlc3QoU3RyaW5nIHNvdXJjZVJhbmdlLCBTdHJpbmcgdGFyZ2V0UmFuZ2UsIFN0cmluZyBiYWNrdG9Tb3VyY2VSYW5nZSwKKyAgICAgICAgICBTdHJpbmcgcm91bmR0cmlwRXhjbHVzaW9ucywgUm91bmRUcmlwVGVzdCBsb2csIExlZ2FsIGxlZ2FsU291cmNlKSAKKyAgICAgICAgICB0aHJvd3MgamF2YS5pby5JT0V4Y2VwdGlvbiwgamF2YS50ZXh0LlBhcnNlRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5sZWdhbFNvdXJjZSA9IGxlZ2FsU291cmNlOworICAgICAgICAgICAgdGhpcy5zb3VyY2VSYW5nZSA9IG5ldyBVbmljb2RlU2V0KHNvdXJjZVJhbmdlKTsKKyAgICAgICAgICAgIHRoaXMuc291cmNlUmFuZ2UucmVtb3ZlQWxsKG5ldmVyT2spOworICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLnRhcmdldFJhbmdlID0gbmV3IFVuaWNvZGVTZXQodGFyZ2V0UmFuZ2UpOworICAgICAgICAgICAgdGhpcy50YXJnZXRSYW5nZS5yZW1vdmVBbGwobmV2ZXJPayk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMudG9Tb3VyY2UgPSBuZXcgVW5pY29kZVNldChiYWNrdG9Tb3VyY2VSYW5nZSk7CisgICAgICAgICAgICB0aGlzLnRvU291cmNlLmFkZEFsbChva0FueXdheSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMudG9UYXJnZXQgPSBuZXcgVW5pY29kZVNldCh0YXJnZXRSYW5nZSk7CisgICAgICAgICAgICB0aGlzLnRvVGFyZ2V0LmFkZEFsbChva0FueXdheSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChyb3VuZHRyaXBFeGNsdXNpb25zICE9IG51bGwgJiYgcm91bmR0cmlwRXhjbHVzaW9ucy5sZW5ndGgoKSA+IDApIHsKKyAgICAgICAgICAgICAgICB0aGlzLnJvdW5kdHJpcEV4Y2x1c2lvbnMgPSBuZXcgVW5pY29kZVNldChyb3VuZHRyaXBFeGNsdXNpb25zKTsKKyAgICAgICAgICAgIH1lbHNleworICAgICAgICAgICAgICAgIHRoaXMucm91bmR0cmlwRXhjbHVzaW9ucyA9IG5ldyBVbmljb2RlU2V0KCk7IC8vIGVtcHR5CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRoaXMubG9nID0gbG9nOworCisgICAgICAgICAgICBsb2cubG9nbG4oVXRpbGl0eS5lc2NhcGUoIlNvdXJjZTogICIgKyB0aGlzLnNvdXJjZVJhbmdlKSk7CisgICAgICAgICAgICBsb2cubG9nbG4oVXRpbGl0eS5lc2NhcGUoIlRhcmdldDogICIgKyB0aGlzLnRhcmdldFJhbmdlKSk7CisgICAgICAgICAgICBsb2cubG9nbG4oVXRpbGl0eS5lc2NhcGUoIkV4Y2x1ZGU6ICIgKyB0aGlzLnJvdW5kdHJpcEV4Y2x1c2lvbnMpKTsKKyAgICAgICAgICAgIGlmIChsb2cuaXNRdWljaygpKSBsb2cubG9nbG4oIkFiYnJldmlhdGVkIFRlc3QiKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgYmFkQ2hhcmFjdGVycyA9IG5ldyBVbmljb2RlU2V0KCJbOm90aGVyOl0iKTsKKworICAgICAgICAgICAgLy8gbWFrZSBhIFVURi04IG91dHB1dCBmaWxlIHdlIGNhbiByZWFkIHdpdGggYSBicm93c2VyCisKKyAgICAgICAgICAgIC8vIG5vdGU6IGNoZWNrIHRoYXQgZXZlcnkgdHJhbnNsaXRlcmF0b3IgdHJhbnNsaXRlcmF0ZXMgdGhlIG51bGwgc3RyaW5nIGNvcnJlY3RseSEKKworICAgICAgICAgICAgU3RyaW5nIGxvZ0ZpbGVOYW1lID0gInRlc3RfIiArIHRyYW5zbGl0ZXJhdG9ySUQucmVwbGFjZSgnLycsICdfJykgKyAiLmh0bWwiOworCisgICAgICAgICAgICBGaWxlIGxmID0gbmV3IEZpbGUobG9nRmlsZU5hbWUpOyAKKyAgICAgICAgICAgIGxvZy5sb2dsbigiQ3JlYXRpbmcgbG9nIGZpbGUgIiArIGxmLmdldEFic29sdXRlRmlsZSgpKTsKKworICAgICAgICAgICAgb3V0ID0gbmV3IFByaW50V3JpdGVyKG5ldyBCdWZmZXJlZFdyaXRlcihuZXcgT3V0cHV0U3RyZWFtV3JpdGVyKAorICAgICAgICAgICAgICAgICAgICAgIG5ldyBGaWxlT3V0cHV0U3RyZWFtKGxvZ0ZpbGVOYW1lKSwgIlVURjgiKSwgNCoxMDI0KSk7CisgICAgICAgICAgICAvL291dC53cml0ZSgnXHVGRkVGJyk7ICAgIC8vIEJPTQorICAgICAgICAgICAgb3V0LnByaW50bG4oIjwhRE9DVFlQRSBIVE1MIFBVQkxJQyBcIi0vL1czQy8vRFREIEhUTUwgNC4wIFRyYW5zaXRpb25hbC8vRU5cIj4iKTsKKyAgICAgICAgICAgIG91dC5wcmludGxuKCI8SFRNTD48SEVBRD4iKTsKKyAgICAgICAgICAgIG91dC5wcmludGxuKCI8TUVUQSBjb250ZW50PVwidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04XCIgaHR0cC1lcXVpdj1Db250ZW50LVR5cGU+PC9IRUFEPiIpOworICAgICAgICAgICAgb3V0LnByaW50bG4oIjxCT0RZIGJnY29sb3I9JyNGRkZGRkYnIHN0eWxlPSdmb250LWZhbWlseTogQXJpYWwgVW5pY29kZSBNUyc+Iik7CisKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgdGVzdDIoKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKFRlc3RUcnVuY2F0ZWQgZSkgeworICAgICAgICAgICAgICAgIG91dC5wcmludGxuKGUuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG91dC5wcmludGxuKCI8L0JPRFk+PC9IVE1MPiIpOworICAgICAgICAgICAgb3V0LmNsb3NlKCk7CisKKyAgICAgICAgICAgIGlmIChlcnJvckNvdW50ID4gMCkgeworICAgICAgICAgICAgICAgIGxvZy5lcnJsbih0cmFuc2xpdGVyYXRvcklEICsgIiBlcnJvcnM6ICIgCisgICAgICAgICAgICAgICAgICAgICsgZXJyb3JDb3VudCArIChlcnJvckNvdW50ID4gZXJyb3JMaW1pdCA/ICIgKGF0IGxlYXN0ISkiIDogIiIpCisgICAgICAgICAgICAgICAgICAgICsgIiwgc2VlICIgKyBsZi5nZXRBYnNvbHV0ZUZpbGUoKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGxvZy5sb2dsbih0cmFuc2xpdGVyYXRvcklEICsgIiBvayIpOworICAgICAgICAgICAgICAgIG5ldyBGaWxlKGxvZ0ZpbGVOYW1lKS5kZWxldGUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gb2sgaWYgYXQgbGVhc3Qgb25lIGlzIG5vdCBlcXVhbAorICAgICAgICBwdWJsaWMgYm9vbGVhbiBjaGVja0lycmVsZXZhbnRzKFRyYW5zbGl0ZXJhdG9yIHQsIFN0cmluZyBpcnJlbGV2YW50cykgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpcnJlbGV2YW50cy5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgY2hhciBjID0gaXJyZWxldmFudHMuY2hhckF0KGkpOworICAgICAgICAgICAgICAgIFN0cmluZyBjcyA9IFVURjE2LnZhbHVlT2YoYyk7CisgICAgICAgICAgICAgICAgU3RyaW5nIHRhcmcgPSB0LnRyYW5zbGl0ZXJhdGUoY3MpOworICAgICAgICAgICAgICAgIGlmIChjcy5lcXVhbHModGFyZykpIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgdGVzdDIoKSB7CisKKyAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHNvdXJjZVRvVGFyZ2V0ID0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UodHJhbnNsaXRlcmF0b3JJRCk7CisgICAgICAgICAgICBUcmFuc2xpdGVyYXRvciB0YXJnZXRUb1NvdXJjZSA9IHNvdXJjZVRvVGFyZ2V0LmdldEludmVyc2UoKTsKKyAgICAgICAgICAgIEFiYnJldmlhdGVkVW5pY29kZVNldEl0ZXJhdG9yIHVzaSA9IG5ldyBBYmJyZXZpYXRlZFVuaWNvZGVTZXRJdGVyYXRvcigpOworICAgICAgICAgICAgQWJicmV2aWF0ZWRVbmljb2RlU2V0SXRlcmF0b3IgdXNpMiA9IG5ldyBBYmJyZXZpYXRlZFVuaWNvZGVTZXRJdGVyYXRvcigpOworICAgICAgICAgICAgCisgICAgICAgICAgICBsb2cubG9nbG4oIkNoZWNraW5nIHRoYXQgYXQgbGVhc3Qgb25lIGlycmV2YW50IGNoYXJhY3RlcnMgaXMgbm90IE5GQydlZCIpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgU3RyaW5nIGlycmVsZXZhbnRzID0gIlx1MjAwMFx1MjAwMVx1MjEyNlx1MjEyQVx1MjEyQlx1MjMyOSI7IC8vIHN0cmluZyBpcyBmcm9tIE5GQ19OTyBpbiB0aGUgVUNECisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIWNoZWNrSXJyZWxldmFudHMoc291cmNlVG9UYXJnZXQsIGlycmVsZXZhbnRzKSkgeworICAgICAgICAgICAgICAgIGxvZ0ZhaWxzKCJTb3VyY2UtVGFyZ2V0LCBNdXN0IG5vdCBORkMgZXZlcnl0aGluZyIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFjaGVja0lycmVsZXZhbnRzKHRhcmdldFRvU291cmNlLCBpcnJlbGV2YW50cykpIHsKKyAgICAgICAgICAgICAgICBsb2dGYWlscygiVGFyZ2V0LVNvdXJjZSwgaXJyZWxldmFudHMiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKEVYVFJBX1RFU1RTKSB7CisgICAgICAgICAgICAgICAgbG9nLmxvZ2xuKCJDaGVja2luZyB0aGF0IHRvUnVsZXMgd29ya3MiKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgcnVsZXMgPSAiIjsKKyAgICAgICAgICAgICAgICBUcmFuc2xpdGVyYXRvciBzb3VyY2VUb1RhcmdldDI7CisgICAgICAgICAgICAgICAgVHJhbnNsaXRlcmF0b3IgdGFyZ2V0VG9Tb3VyY2UyOworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIHJ1bGVzID0gc291cmNlVG9UYXJnZXQudG9SdWxlcyhmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZVRvVGFyZ2V0MiA9IFRyYW5zbGl0ZXJhdG9yLmNyZWF0ZUZyb21SdWxlcygiczJ0MiIsIHJ1bGVzLCBUcmFuc2xpdGVyYXRvci5GT1JXQVJEKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFBSSU5UX1JVTEVTKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiPGgzPkZvcndhcmQgUnVsZXM6PC9oMz48cD4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKFRlc3RVdGlsaXR5LnJlcGxhY2UocnVsZXMsICJcbiIsICI8YnI+XG4iKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiPC9wPiIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHJ1bGVzID0gdGFyZ2V0VG9Tb3VyY2UudG9SdWxlcyhmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIHRhcmdldFRvU291cmNlMiA9IFRyYW5zbGl0ZXJhdG9yLmNyZWF0ZUZyb21SdWxlcygidDJzMiIsIHJ1bGVzLCBUcmFuc2xpdGVyYXRvci5GT1JXQVJEKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFBSSU5UX1JVTEVTKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiPGgzPkJhY2t3YXJkIFJ1bGVzOjwvaDM+PHA+Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbihUZXN0VXRpbGl0eS5yZXBsYWNlKHJ1bGVzLCAiXG4iLCAiPGJyPlxuIikpOworICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oIjwvcD4iKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJ1bnRpbWVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiPGgzPkJyb2tlbiBSdWxlczo8L2gzPjxwPiIpOworICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbihUZXN0VXRpbGl0eS5yZXBsYWNlKHJ1bGVzLCAiXG4iLCAiPGJyPlxuIikpOworICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiPC9wPiIpOworICAgICAgICAgICAgICAgICAgICBvdXQuZmx1c2goKTsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgdXNpLnJlc2V0KHNvdXJjZVJhbmdlKTsKKyAgICAgICAgICAgICAgICB3aGlsZSAodXNpLm5leHQoKSkgeworICAgICAgICAgICAgICAgICAgICBpbnQgYyA9IHVzaS5jb2RlcG9pbnQ7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBTdHJpbmcgY3MgPSBVVEYxNi52YWx1ZU9mKGMpOworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgdGFyZyA9IHNvdXJjZVRvVGFyZ2V0LnRyYW5zbGl0ZXJhdGUoY3MpOworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgdGFyZzIgPSBzb3VyY2VUb1RhcmdldDIudHJhbnNsaXRlcmF0ZShjcyk7CisgICAgICAgICAgICAgICAgICAgIGlmICghdGFyZy5lcXVhbHModGFyZzIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2dUb1J1bGVzRmFpbHMoIlNvdXJjZS1UYXJnZXQsIHRvUnVsZXMiLCBjcywgdGFyZywgdGFyZzIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHVzaS5yZXNldCh0YXJnZXRSYW5nZSk7CisgICAgICAgICAgICAgICAgd2hpbGUgKHVzaS5uZXh0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IGMgPSB1c2kuY29kZXBvaW50OworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGNzID0gVVRGMTYudmFsdWVPZihjKTsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHRhcmcgPSB0YXJnZXRUb1NvdXJjZS50cmFuc2xpdGVyYXRlKGNzKTsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHRhcmcyID0gdGFyZ2V0VG9Tb3VyY2UyLnRyYW5zbGl0ZXJhdGUoY3MpOworICAgICAgICAgICAgICAgICAgICBpZiAoIXRhcmcuZXF1YWxzKHRhcmcyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbG9nVG9SdWxlc0ZhaWxzKCJUYXJnZXQtU291cmNlLCB0b1J1bGVzIiwgY3MsIHRhcmcsIHRhcmcyKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorCisgICAgICAgICAgICBsb2cubG9nbG4oIkNoZWNraW5nIHRoYXQgc291cmNlIGNoYXJhY3RlcnMgY29udmVydCB0byB0YXJnZXQgLSBTaW5nbGVzIik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFVuaWNvZGVTZXQgZmFpbFNvdXJjZVRhcmcgPSBuZXcgVW5pY29kZVNldCgpOworCisgICAgICAgICAgICAvKgorICAgICAgICAgICAgZm9yIChjaGFyIGMgPSAwOyBjIDwgMHhGRkZGOyArK2MpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXNvdXJjZVJhbmdlLmNvbnRhaW5zKGMpKSBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgdXNpLnJlc2V0KHNvdXJjZVJhbmdlKTsKKyAgICAgICAgICAgIHdoaWxlICh1c2kubmV4dCgpKSB7CisgICAgICAgICAgICAgICAgaW50IGMgPSB1c2kuY29kZXBvaW50OworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIFN0cmluZyBjcyA9IFVURjE2LnZhbHVlT2YoYyk7CisgICAgICAgICAgICAgICAgU3RyaW5nIHRhcmcgPSBzb3VyY2VUb1RhcmdldC50cmFuc2xpdGVyYXRlKGNzKTsKKyAgICAgICAgICAgICAgICBpZiAoIXRvVGFyZ2V0LmNvbnRhaW5zQWxsKHRhcmcpIAorICAgICAgICAgICAgICAgICAgICAgICAgfHwgYmFkQ2hhcmFjdGVycy5jb250YWluc1NvbWUodGFyZykpIHsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHRhcmdEID0gTm9ybWFsaXplci5ub3JtYWxpemUodGFyZywgTm9ybWFsaXplci5ORkQpOworICAgICAgICAgICAgICAgICAgICBpZiAoIXRvVGFyZ2V0LmNvbnRhaW5zQWxsKHRhcmdEKSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBiYWRDaGFyYWN0ZXJzLmNvbnRhaW5zU29tZSh0YXJnRCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ1dyb25nU2NyaXB0KCJTb3VyY2UtVGFyZ2V0IiwgY3MsIHRhcmcpOworICAgICAgICAgICAgICAgICAgICAgICAgZmFpbFNvdXJjZVRhcmcuYWRkKGMpOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgU3RyaW5nIGNzMiA9IE5vcm1hbGl6ZXIubm9ybWFsaXplKGNzLCBOb3JtYWxpemVyLk5GRCk7CisgICAgICAgICAgICAgICAgU3RyaW5nIHRhcmcyID0gc291cmNlVG9UYXJnZXQudHJhbnNsaXRlcmF0ZShjczIpOworICAgICAgICAgICAgICAgIGlmICghdGFyZy5lcXVhbHModGFyZzIpKSB7CisgICAgICAgICAgICAgICAgICAgIGxvZ05vdENhbm9uaWNhbCgiU291cmNlLVRhcmdldCIsIGNzLCB0YXJnLCBjczIsIHRhcmcyKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGxvZy5sb2dsbigiQ2hlY2tpbmcgdGhhdCBzb3VyY2UgY2hhcmFjdGVycyBjb252ZXJ0IHRvIHRhcmdldCAtIERvdWJsZXMiKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLyoKKyAgICAgICAgICAgIGZvciAoY2hhciBjID0gMDsgYyA8IDB4RkZGRjsgKytjKSB7IAorICAgICAgICAgICAgICAgIGlmIChUZXN0VXRpbGl0eS5pc1VuYXNzaWduZWQoYykgfHwKKyAgICAgICAgICAgICAgICAgICAgIXNvdXJjZVJhbmdlLmNvbnRhaW5zKGMpKSBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBpZiAoZmFpbFNvdXJjZVRhcmcuZ2V0KGMpKSBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICovCisgICAgICAgICAgICAKKyAgICAgICAgICAgIFVuaWNvZGVTZXQgc291cmNlUmFuZ2VNaW51c0ZhaWx1cmVzID0gbmV3IFVuaWNvZGVTZXQoc291cmNlUmFuZ2UpOworICAgICAgICAgICAgc291cmNlUmFuZ2VNaW51c0ZhaWx1cmVzLnJlbW92ZUFsbChmYWlsU291cmNlVGFyZyk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGJvb2xlYW4gcXVpY2tSdCA9IGxvZy5nZXRJbmNsdXNpb24oKSA8IDEwOworICAgICAgICAgICAgCisgICAgICAgICAgICB1c2kucmVzZXQoc291cmNlUmFuZ2VNaW51c0ZhaWx1cmVzLCBxdWlja1J0LCBkZW5zaXR5KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgd2hpbGUgKHVzaS5uZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBpbnQgYyA9IHVzaS5jb2RlcG9pbnQ7CisgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICBmb3IgKGNoYXIgZCA9IDA7IGQgPCAweEZGRkY7ICsrZCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoVGVzdFV0aWxpdHkuaXNVbmFzc2lnbmVkKGQpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAhc291cmNlUmFuZ2UuY29udGFpbnMoZCkpIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICBpZiAoZmFpbFNvdXJjZVRhcmcuZ2V0KGQpKSBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIHVzaTIucmVzZXQoc291cmNlUmFuZ2VNaW51c0ZhaWx1cmVzLCBxdWlja1J0LCBkZW5zaXR5KTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB3aGlsZSAodXNpMi5uZXh0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IGQgPSB1c2kyLmNvZGVwb2ludDsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBjcyA9IFVURjE2LnZhbHVlT2YoYykgKyBVVEYxNi52YWx1ZU9mKGQpOworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgdGFyZyA9IHNvdXJjZVRvVGFyZ2V0LnRyYW5zbGl0ZXJhdGUoY3MpOworICAgICAgICAgICAgICAgICAgICBpZiAoIXRvVGFyZ2V0LmNvbnRhaW5zQWxsKHRhcmcpIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGJhZENoYXJhY3RlcnMuY29udGFpbnNTb21lKHRhcmcpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgdGFyZ0QgPSBOb3JtYWxpemVyLm5vcm1hbGl6ZSh0YXJnLCBOb3JtYWxpemVyLk5GRCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRvVGFyZ2V0LmNvbnRhaW5zQWxsKHRhcmdEKSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgYmFkQ2hhcmFjdGVycy5jb250YWluc1NvbWUodGFyZ0QpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nV3JvbmdTY3JpcHQoIlNvdXJjZS1UYXJnZXQiLCBjcywgdGFyZyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGNzMiA9IE5vcm1hbGl6ZXIubm9ybWFsaXplKGNzLCBOb3JtYWxpemVyLk5GRCk7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyB0YXJnMiA9IHNvdXJjZVRvVGFyZ2V0LnRyYW5zbGl0ZXJhdGUoY3MyKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCF0YXJnLmVxdWFscyh0YXJnMikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ05vdENhbm9uaWNhbCgiU291cmNlLVRhcmdldCIsIGNzLCB0YXJnLCBjczIsIHRhcmcyKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbG9nLmxvZ2xuKCJDaGVja2luZyB0aGF0IHRhcmdldCBjaGFyYWN0ZXJzIGNvbnZlcnQgdG8gc291cmNlIGFuZCBiYWNrIC0gU2luZ2xlcyIpOworICAgICAgICAgICAgCisgICAgICAgICAgICBVbmljb2RlU2V0IGZhaWxUYXJnU291cmNlID0gbmV3IFVuaWNvZGVTZXQoKTsKKyAgICAgICAgICAgIFVuaWNvZGVTZXQgZmFpbFJvdW5kID0gbmV3IFVuaWNvZGVTZXQoKTsKKworICAgICAgICAgICAgLypmb3IgKGNoYXIgYyA9IDA7IGMgPCAweEZGRkY7ICsrYykgeworICAgICAgICAgICAgICAgIGlmIChUZXN0VXRpbGl0eS5pc1VuYXNzaWduZWQoYykgfHwKKyAgICAgICAgICAgICAgICAgICAgIXRhcmdldFJhbmdlLmNvbnRhaW5zKGMpKSBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB1c2kucmVzZXQodGFyZ2V0UmFuZ2UpOworICAgICAgICAgICAgd2hpbGUgKHVzaS5uZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgY3M7CisgICAgICAgICAgICAgICAgaW50IGM7CisgICAgICAgICAgICAgICAgaWYodXNpLmNvZGVwb2ludCA9PSB1c2kuSVNfU1RSSU5HKXsKKyAgICAgICAgICAgICAgICAgICAgY3MgPSB1c2kuc3RyaW5nOworICAgICAgICAgICAgICAgICAgICBjID0gVVRGMTYuY2hhckF0KGNzLDApOworICAgICAgICAgICAgICAgIH1lbHNleworICAgICAgICAgICAgICAgICAgICBjID0gdXNpLmNvZGVwb2ludDsKKyAgICAgICAgICAgICAgICAgICAgY3MgPVVURjE2LnZhbHVlT2YoYyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBTdHJpbmcgdGFyZyA9IHRhcmdldFRvU291cmNlLnRyYW5zbGl0ZXJhdGUoY3MpOworICAgICAgICAgICAgICAgIFN0cmluZyByZXZlcnNlID0gc291cmNlVG9UYXJnZXQudHJhbnNsaXRlcmF0ZSh0YXJnKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoIXRvU291cmNlLmNvbnRhaW5zQWxsKHRhcmcpIAorICAgICAgICAgICAgICAgICAgICAgICAgfHwgYmFkQ2hhcmFjdGVycy5jb250YWluc1NvbWUodGFyZykpIHsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHRhcmdEID0gTm9ybWFsaXplci5ub3JtYWxpemUodGFyZywgTm9ybWFsaXplci5ORkQpOworICAgICAgICAgICAgICAgICAgICBpZiAoIXRvU291cmNlLmNvbnRhaW5zQWxsKHRhcmdEKSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBiYWRDaGFyYWN0ZXJzLmNvbnRhaW5zU29tZSh0YXJnRCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ1dyb25nU2NyaXB0KCJUYXJnZXQtU291cmNlIiwgY3MsIHRhcmcpOworICAgICAgICAgICAgICAgICAgICAgICAgZmFpbFRhcmdTb3VyY2UuYWRkKGNzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICghaXNTYW1lKGNzLCByZXZlcnNlKSAmJiAhcm91bmR0cmlwRXhjbHVzaW9ucy5jb250YWlucyhjKQorICAgICAgICAgICAgICAgICAgICAmJiAhcm91bmR0cmlwRXhjbHVzaW9ucy5jb250YWlucyhjcykpIHsKKyAgICAgICAgICAgICAgICAgICAgbG9nUm91bmRUcmlwRmFpbHVyZShjcyx0YXJnZXRUb1NvdXJjZS5nZXRJRCgpLCB0YXJnLHNvdXJjZVRvVGFyZ2V0LmdldElEKCksIHJldmVyc2UpOworICAgICAgICAgICAgICAgICAgICBmYWlsUm91bmQuYWRkKGMpOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgU3RyaW5nIHRhcmcyID0gTm9ybWFsaXplci5ub3JtYWxpemUodGFyZywgTm9ybWFsaXplci5ORkQpOworICAgICAgICAgICAgICAgIFN0cmluZyByZXZlcnNlMiA9IHNvdXJjZVRvVGFyZ2V0LnRyYW5zbGl0ZXJhdGUodGFyZzIpOworICAgICAgICAgICAgICAgIGlmICghcmV2ZXJzZS5lcXVhbHMocmV2ZXJzZTIpKSB7CisgICAgICAgICAgICAgICAgICAgIGxvZ05vdENhbm9uaWNhbCgiVGFyZ2V0LVNvdXJjZSIsIHRhcmcsIHJldmVyc2UsIHRhcmcyLCByZXZlcnNlMik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsb2cubG9nbG4oIkNoZWNraW5nIHRoYXQgdGFyZ2V0IGNoYXJhY3RlcnMgY29udmVydCB0byBzb3VyY2UgYW5kIGJhY2sgLSBEb3VibGVzIik7CisgICAgICAgICAgICBpbnQgY291bnQgPSAwOworICAgICAgICAgICAgCisgICAgICAgICAgICBVbmljb2RlU2V0IHRhcmdldFJhbmdlTWludXNGYWlsdXJlcyA9IG5ldyBVbmljb2RlU2V0KHRhcmdldFJhbmdlKTsKKyAgICAgICAgICAgIHRhcmdldFJhbmdlTWludXNGYWlsdXJlcy5yZW1vdmVBbGwoZmFpbFRhcmdTb3VyY2UpOworICAgICAgICAgICAgdGFyZ2V0UmFuZ2VNaW51c0ZhaWx1cmVzLnJlbW92ZUFsbChmYWlsUm91bmQpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvL2NoYXJbXSBidWYgPSBuZXcgY2hhcls0XTsgLy8gbWF4aW11bSB3ZSBjYW4gaGF2ZSB3aXRoIDIgY29kZSBwb2ludHMKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICBmb3IgKGNoYXIgYyA9IDA7IGMgPCAweEZGRkY7ICsrYykgeworICAgICAgICAgICAgICAgIGlmIChUZXN0VXRpbGl0eS5pc1VuYXNzaWduZWQoYykgfHwKKyAgICAgICAgICAgICAgICAgICAgIXRhcmdldFJhbmdlLmNvbnRhaW5zKGMpKSBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIAorICAgICAgICAgICAgdXNpLnJlc2V0KHRhcmdldFJhbmdlTWludXNGYWlsdXJlcywgcXVpY2tSdCwgZGVuc2l0eSk7CisgICAgICAgICAgICAJCisgICAgICAgICAgICB3aGlsZSAodXNpLm5leHQoKSkgeworICAgICAgICAgICAgICAgIGludCBjID0gdXNpLmNvZGVwb2ludDsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoKytjb3VudCA+IHBhaXJMaW1pdCkgeworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVGVzdFRydW5jYXRlZCgiVGVzdCB0cnVuY2F0ZWQgYXQgIiArIHBhaXJMaW1pdCArICIgeCA2NGsgcGFpcnMiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbG9nLmxvZyhUZXN0VXRpbGl0eS5oZXgoYykpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgZm9yIChjaGFyIGQgPSAwOyBkIDwgMHhGRkZGOyArK2QpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFRlc3RVdGlsaXR5LmlzVW5hc3NpZ25lZChkKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgIXRhcmdldFJhbmdlLmNvbnRhaW5zKGQpKSBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgdXNpMi5yZXNldCh0YXJnZXRSYW5nZU1pbnVzRmFpbHVyZXMsIHF1aWNrUnQsIGRlbnNpdHkpOworICAgICAgICAgICAgCQorICAgICAgICAgICAgCXdoaWxlICh1c2kyLm5leHQoKSkgeworICAgICAgICAgICAgICAgICAgICBpbnQgZCA9IHVzaTIuY29kZXBvaW50OworICAgICAgICAgICAgICAgICAgICBpZiAoZCA8IDApIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGNzID0gVVRGMTYudmFsdWVPZihjKSArIFVURjE2LnZhbHVlT2YoZCk7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyB0YXJnID0gdGFyZ2V0VG9Tb3VyY2UudHJhbnNsaXRlcmF0ZShjcyk7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyByZXZlcnNlID0gc291cmNlVG9UYXJnZXQudHJhbnNsaXRlcmF0ZSh0YXJnKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmICghdG9Tb3VyY2UuY29udGFpbnNBbGwodGFyZykgLyomJiAhZmFpbFRhcmdTb3VyY2UuY29udGFpbnMoYykgJiYgIWZhaWxUYXJnU291cmNlLmNvbnRhaW5zKGQpKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBiYWRDaGFyYWN0ZXJzLmNvbnRhaW5zU29tZSh0YXJnKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHRhcmdEID0gTm9ybWFsaXplci5ub3JtYWxpemUodGFyZywgTm9ybWFsaXplci5ORkQpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0b1NvdXJjZS5jb250YWluc0FsbCh0YXJnRCkgLyomJiAhZmFpbFRhcmdTb3VyY2UuY29udGFpbnMoYykgJiYgIWZhaWxUYXJnU291cmNlLmNvbnRhaW5zKGQpKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgYmFkQ2hhcmFjdGVycy5jb250YWluc1NvbWUodGFyZ0QpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nV3JvbmdTY3JpcHQoIlRhcmdldC1Tb3VyY2UiLCBjcywgdGFyZyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1NhbWUoY3MsIHJldmVyc2UpIC8qJiYgIWZhaWxSb3VuZC5jb250YWlucyhjKSAmJiAhZmFpbFJvdW5kLmNvbnRhaW5zKGQpKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhcm91bmR0cmlwRXhjbHVzaW9ucy5jb250YWlucyhjKSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhcm91bmR0cmlwRXhjbHVzaW9ucy5jb250YWlucyhkKSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhcm91bmR0cmlwRXhjbHVzaW9ucy5jb250YWlucyhjcykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ1JvdW5kVHJpcEZhaWx1cmUoY3MsdGFyZ2V0VG9Tb3VyY2UuZ2V0SUQoKSwgdGFyZyxzb3VyY2VUb1RhcmdldC5nZXRJRCgpLCByZXZlcnNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyB0YXJnMiA9IE5vcm1hbGl6ZXIubm9ybWFsaXplKHRhcmcsIE5vcm1hbGl6ZXIuTkZEKTsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHJldmVyc2UyID0gc291cmNlVG9UYXJnZXQudHJhbnNsaXRlcmF0ZSh0YXJnMik7CisgICAgICAgICAgICAgICAgICAgIGlmICghcmV2ZXJzZS5lcXVhbHMocmV2ZXJzZTIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2dOb3RDYW5vbmljYWwoIlRhcmdldC1Tb3VyY2UiLCB0YXJnLCByZXZlcnNlLCB0YXJnMiwgcmV2ZXJzZTIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgbG9nLmxvZ2xuKCIiKTsKKyAgICAgICAgfQorCisgICAgICAgIGZpbmFsIHZvaWQgbG9nV3JvbmdTY3JpcHQoU3RyaW5nIGxhYmVsLCBTdHJpbmcgZnJvbSwgU3RyaW5nIHRvKSB7CisgICAgICAgICAgICBpZiAoKytlcnJvckNvdW50ID4gZXJyb3JMaW1pdCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBUZXN0VHJ1bmNhdGVkKCJUZXN0IHRydW5jYXRlZDsgdG9vIG1hbnkgZmFpbHVyZXMiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG91dC5wcmludGxuKCI8YnI+RmFpbCAiICsgbGFiZWwgKyAiOiBcdTIwMEUiICsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gKyAiXHUyMDBFICgiICsKKyAgICAgICAgICAgICAgICAgICAgICAgIFRlc3RVdGlsaXR5LmhleChmcm9tKSArICIpID0+IFx1MjAwRSIgKworICAgICAgICAgICAgICAgICAgICAgICAgdG8gKyAiXHUyMDBFICgiICsKKyAgICAgICAgICAgICAgICAgICAgICAgIFRlc3RVdGlsaXR5LmhleCh0bykgKyAiKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCB2b2lkIGxvZ05vdENhbm9uaWNhbChTdHJpbmcgbGFiZWwsIFN0cmluZyBmcm9tLCBTdHJpbmcgdG8sIFN0cmluZyBmcm9tQ2FuLCBTdHJpbmcgdG9DYW4pIHsKKyAgICAgICAgICAgIGlmICgrK2Vycm9yQ291bnQgPiBlcnJvckxpbWl0KSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFRlc3RUcnVuY2F0ZWQoIlRlc3QgdHJ1bmNhdGVkOyB0b28gbWFueSBmYWlsdXJlcyIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgb3V0LnByaW50bG4oIjxicj5GYWlsIChjYW4uZXF1aXYpICIgKyBsYWJlbCArICI6IFx1MjAwRSIgKworICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSArICJcdTIwMEUgKCIgKworICAgICAgICAgICAgICAgICAgICAgICAgVGVzdFV0aWxpdHkuaGV4KGZyb20pICsgIikgPT4gXHUyMDBFIiArCisgICAgICAgICAgICAgICAgICAgICAgICB0byArICJcdTIwMEUgKCIgKworICAgICAgICAgICAgICAgICAgICAgICAgVGVzdFV0aWxpdHkuaGV4KHRvKSArICIpIiArCisgICAgICAgICAgICAgICAgICAgICAgICAiIC0tIFx1MjAwRSIgKworICAgICAgICAgICAgICAgICAgICAgICAgZnJvbUNhbiArICJcdTIwMEUgKCIgKworICAgICAgICAgICAgICAgICAgICAgICAgVGVzdFV0aWxpdHkuaGV4KGZyb21DYW4pICsgIikgPT4gXHUyMDBFIiArCisgICAgICAgICAgICAgICAgICAgICAgICB0b0NhbiArICJcdTIwMEUgKCIgKworICAgICAgICAgICAgICAgICAgICAgICAgVGVzdFV0aWxpdHkuaGV4KHRvQ2FuKSArICIpIgorICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZmluYWwgdm9pZCBsb2dGYWlscyhTdHJpbmcgbGFiZWwpIHsKKyAgICAgICAgICAgIGlmICgrK2Vycm9yQ291bnQgPiBlcnJvckxpbWl0KSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFRlc3RUcnVuY2F0ZWQoIlRlc3QgdHJ1bmNhdGVkOyB0b28gbWFueSBmYWlsdXJlcyIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgb3V0LnByaW50bG4oIjxicj5GYWlsIChjYW4uZXF1aXYpIiArIGxhYmVsKTsKKyAgICAgICAgfQorCisgICAgICAgIGZpbmFsIHZvaWQgbG9nVG9SdWxlc0ZhaWxzKFN0cmluZyBsYWJlbCwgU3RyaW5nIGZyb20sIFN0cmluZyB0bywgU3RyaW5nIHRvQ2FuKSB7CisgICAgICAgICAgICBpZiAoKytlcnJvckNvdW50ID4gZXJyb3JMaW1pdCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBUZXN0VHJ1bmNhdGVkKCJUZXN0IHRydW5jYXRlZDsgdG9vIG1hbnkgZmFpbHVyZXMiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG91dC5wcmludGxuKCI8YnI+RmFpbCAoY2FuLmVxdWl2KSAiICsgbGFiZWwgKyAiOiBcdTIwMEUiICsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gKyAiXHUyMDBFICgiICsKKyAgICAgICAgICAgICAgICAgICAgICAgIFRlc3RVdGlsaXR5LmhleChmcm9tKSArICIpID0+IFx1MjAwRSIgKworICAgICAgICAgICAgICAgICAgICAgICAgdG8gKyAiXHUyMDBFICgiICsKKyAgICAgICAgICAgICAgICAgICAgICAgIFRlc3RVdGlsaXR5LmhleCh0bykgKyAiKVx1MjAwRSIgKworICAgICAgICAgICAgICAgICAgICAgICAgdG9DYW4gKyAiXHUyMDBFICgiICsKKyAgICAgICAgICAgICAgICAgICAgICAgIFRlc3RVdGlsaXR5LmhleCh0b0NhbikgKyAiKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCB2b2lkIGxvZ1JvdW5kVHJpcEZhaWx1cmUoU3RyaW5nIGZyb20sU3RyaW5nIHRvSUQsIFN0cmluZyB0byxTdHJpbmcgYmFja0lELCBTdHJpbmcgYmFjaykgeworICAgICAgICAgICAgaWYgKCFsZWdhbFNvdXJjZS5pcyhmcm9tKSkgcmV0dXJuOyAvLyBza2lwIGlsbGVnYWxzCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICgrK2Vycm9yQ291bnQgPiBlcnJvckxpbWl0KSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFRlc3RUcnVuY2F0ZWQoIlRlc3QgdHJ1bmNhdGVkOyB0b28gbWFueSBmYWlsdXJlcyIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgb3V0LnByaW50bG4oIjxicj5GYWlsIFJvdW5kdHJpcDogXHUyMDBFIiArIAorICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSArICJcdTIwMEUgKCIgKworICAgICAgICAgICAgICAgICAgICAgICAgVGVzdFV0aWxpdHkuaGV4KGZyb20pICsgIikgIit0b0lEKyI9PiBcdTIwMEUiICsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvICsgIlx1MjAwRSAoIiArCisgICAgICAgICAgICAgICAgICAgICAgICBUZXN0VXRpbGl0eS5oZXgodG8pICsgIikgIiArIGJhY2tJRCsiPT4gXHUyMDBFIiArCisgICAgICAgICAgICAgICAgICAgICAgICBiYWNrICsgIlx1MjAwRSAoIiArCisgICAgICAgICAgICAgICAgICAgICAgICBUZXN0VXRpbGl0eS5oZXgoYmFjaykgKyAiKSIgCisgICAgICAgICAgICAgICAgICAgICAgICApOworICAgICAgICB9CisKKyAgICAgICAgLyoKKyAgICAgICAgICogQ2hhcmFjdGVycyB0byBmaWx0ZXIgZm9yIHNvdXJjZS10YXJnZXQgbWFwcGluZyBjb21wbGV0ZW5lc3MKKyAgICAgICAgICogVHlwaWNhbGx5IGlzIGJhc2UgYWxwaGFiZXQsIG1pbnVzIGV4dGVuZGVkIGNoYXJhY3RlcnMKKyAgICAgICAgICogRGVmYXVsdCBpcyBBU0NJSSBsZXR0ZXJzIGZvciBMYXRpbgorICAgICAgICAgKi8KKyAgICAgICAgIC8qCisgICAgICAgIHB1YmxpYyBib29sZWFuIGlzU291cmNlKGNoYXIgYykgeworICAgICAgICAgICAgaWYgKCFzb3VyY2VSYW5nZS5jb250YWlucyhjKSkgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgKi8KKworICAgICAgICAvKgorICAgICAgICAgKiBDaGFyYWN0ZXJzIHRvIGNoZWNrIGZvciB0YXJnZXQgYmFjayB0byBzb3VyY2UgbWFwcGluZy4KKyAgICAgICAgICogVHlwaWNhbGx5IHRoZSBzYW1lIGFzIHRoZSB0YXJnZXQgc2NyaXB0LCBwbHVzIHB1bmN0dWF0aW9uCisgICAgICAgICAqLworICAgICAgICAgLyoKKyAgICAgICAgcHVibGljIGJvb2xlYW4gaXNSZWNlaXZpbmdTb3VyY2UoY2hhciBjKSB7CisgICAgICAgICAgICBpZiAoIXRhcmdldFJhbmdlLmNvbnRhaW5zKGMpKSByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAqLworICAgICAgICAvKgorICAgICAgICAgKiBDaGFyYWN0ZXJzIHRvIGZpbHRlciBmb3IgdGFyZ2V0LXNvdXJjZSBtYXBwaW5nCisgICAgICAgICAqIFR5cGljYWxseSBpcyBiYXNlIGFscGhhYmV0LCBtaW51cyBleHRlbmRlZCBjaGFyYWN0ZXJzCisgICAgICAgICAqLworICAgICAgICAgLyoKKyAgICAgICAgcHVibGljIGJvb2xlYW4gaXNUYXJnZXQoY2hhciBjKSB7CisgICAgICAgICAgICBieXRlIHNjcmlwdCA9IFRlc3RVdGlsaXR5LmdldFNjcmlwdChjKTsKKyAgICAgICAgICAgIGlmIChzY3JpcHQgIT0gdGFyZ2V0U2NyaXB0KSByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIVRlc3RVdGlsaXR5LmlzTGV0dGVyKGMpKSByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAodGFyZ2V0UmFuZ2UgIT0gbnVsbCAmJiAhdGFyZ2V0UmFuZ2UuY29udGFpbnMoYykpIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgICovCisgICAgICAgIAorICAgICAgICAvKgorICAgICAgICAgKiBDaGFyYWN0ZXJzIHRvIGNoZWNrIGZvciB0YXJnZXQtc291cmNlIG1hcHBpbmcKKyAgICAgICAgICogVHlwaWNhbGx5IHRoZSBzYW1lIGFzIHRoZSBzb3VyY2Ugc2NyaXB0LCBwbHVzIHB1bmN0dWF0aW9uCisgICAgICAgICAqLworICAgICAgICAvKgorICAgICAgICBwdWJsaWMgYm9vbGVhbiBpc1JlY2VpdmluZ1RhcmdldChjaGFyIGMpIHsKKyAgICAgICAgICAgIGJ5dGUgc2NyaXB0ID0gVGVzdFV0aWxpdHkuZ2V0U2NyaXB0KGMpOworICAgICAgICAgICAgcmV0dXJuIChzY3JpcHQgPT0gdGFyZ2V0U2NyaXB0IHx8IHNjcmlwdCA9PSBUZXN0VXRpbGl0eS5DT01NT05fU0NSSVBUKTsKKyAgICAgICAgfQorCisgICAgICAgIGZpbmFsIGJvb2xlYW4gaXNTb3VyY2UoU3RyaW5nIHMpIHsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcy5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFpc1NvdXJjZShzLmNoYXJBdChpKSkpIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgZmluYWwgYm9vbGVhbiBpc1RhcmdldChTdHJpbmcgcykgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWlzVGFyZ2V0KHMuY2hhckF0KGkpKSkgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCBib29sZWFuIGlzUmVjZWl2aW5nU291cmNlKFN0cmluZyBzKSB7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHMubGVuZ3RoKCk7ICsraSkgeworICAgICAgICAgICAgICAgIGlmICghaXNSZWNlaXZpbmdTb3VyY2Uocy5jaGFyQXQoaSkpKSByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGZpbmFsIGJvb2xlYW4gaXNSZWNlaXZpbmdUYXJnZXQoU3RyaW5nIHMpIHsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcy5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFpc1JlY2VpdmluZ1RhcmdldChzLmNoYXJBdChpKSkpIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgICovCisKKyAgICAgICAgc3RhdGljIGNsYXNzIFRlc3RUcnVuY2F0ZWQgZXh0ZW5kcyBSdW50aW1lRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIFRlc3RUcnVuY2F0ZWQoU3RyaW5nIG1zZykgeworICAgICAgICAgICAgICAgIHN1cGVyKG1zZyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKy8vICBzdGF0aWMgY2xhc3MgVGVzdEhhbmd1bCBleHRlbmRzIFRlc3QgeworLy8gICAgICBUZXN0SGFuZ3VsICgpIHsKKy8vICAgICAgICAgIHN1cGVyKCJKYW1vLUhhbmd1bCIsIFRlc3RVdGlsaXR5LkpBTU9fU0NSSVBULCBUZXN0VXRpbGl0eS5IQU5HVUxfU0NSSVBUKTsKKy8vICAgICAgfQorLy8KKy8vICAgICAgcHVibGljIGJvb2xlYW4gaXNTb3VyY2UoY2hhciBjKSB7CisvLyAgICAgICAgICBpZiAoMHgxMTEzIDw9IGMgJiYgYyA8PSAweDExNjApIHJldHVybiBmYWxzZTsKKy8vICAgICAgICAgIGlmICgweDExNzYgPD0gYyAmJiBjIDw9IDB4MTFGOSkgcmV0dXJuIGZhbHNlOworLy8gICAgICAgICAgaWYgKDB4MzEzMSA8PSBjICYmIGMgPD0gMHgzMThFKSByZXR1cm4gZmFsc2U7CisvLyAgICAgICAgICByZXR1cm4gc3VwZXIuaXNTb3VyY2UoYyk7CisvLyAgICAgIH0KKy8vICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvdHJhbnNsaXQvVGVzdFV0aWxpdHkuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC90cmFuc2xpdC9UZXN0VXRpbGl0eS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjgxZDZmMjIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvdHJhbnNsaXQvVGVzdFV0aWxpdHkuamF2YQpAQCAtMCwwICsxLDQ1MyBAQAorLyoqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC90cmFuc2xpdC9UZXN0VXRpbGl0eS5qYXZhLHYgJAorICogJERhdGU6IDIwMDIvMDgvMTMgMjI6MDc6NTcgJAorICogJFJldmlzaW9uOiAxLjEwICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0LnRyYW5zbGl0OworCitpbXBvcnQgY29tLmlibS5pY3UubGFuZy5VQ2hhcmFjdGVyOworaW1wb3J0IGNvbS5pYm0uaWN1LmxhbmcuVUNoYXJhY3RlckNhdGVnb3J5OworaW1wb3J0IGNvbS5pYm0uaWN1LmxhbmcuKjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0Lio7CisKK3B1YmxpYyBmaW5hbCBjbGFzcyBUZXN0VXRpbGl0eSB7CisKKwlwdWJsaWMgc3RhdGljIFN0cmluZyBoZXgoY2hhciBjaCkgeworCQlTdHJpbmcgZm9vID0gSW50ZWdlci50b1N0cmluZyhjaCwxNikudG9VcHBlckNhc2UoKTsKKwkJcmV0dXJuICIwMDAwIi5zdWJzdHJpbmcoMCw0LWZvby5sZW5ndGgoKSkgKyBmb287CisJfQorICAgIAorCXB1YmxpYyBzdGF0aWMgU3RyaW5nIGhleChpbnQgY2gpIHsKKwkJU3RyaW5nIGZvbyA9IEludGVnZXIudG9TdHJpbmcoY2gsMTYpLnRvVXBwZXJDYXNlKCk7CisJCXJldHVybiAiMDAwMDAwMDAiLnN1YnN0cmluZygwLDQtZm9vLmxlbmd0aCgpKSArIGZvbzsKKwl9CisgICAgCisJcHVibGljIHN0YXRpYyBTdHJpbmcgaGV4KFN0cmluZyBzKSB7CisJICByZXR1cm4gaGV4KHMsIiwiKTsKKwl9CisJCisJcHVibGljIHN0YXRpYyBTdHJpbmcgaGV4KFN0cmluZyBzLCBTdHJpbmcgc2VwKSB7CisJICBpZiAocy5sZW5ndGgoKSA9PSAwKSByZXR1cm4gIiI7CisJICBTdHJpbmcgcmVzdWx0ID0gaGV4KHMuY2hhckF0KDApKTsKKwkgIGZvciAoaW50IGkgPSAxOyBpIDwgcy5sZW5ndGgoKTsgKytpKSB7CisJICAgIHJlc3VsdCArPSBzZXA7CisJICAgIHJlc3VsdCArPSBoZXgocy5jaGFyQXQoaSkpOworCSAgfQorCSAgcmV0dXJuIHJlc3VsdDsKKwl9CisJCisJcHVibGljIHN0YXRpYyBTdHJpbmcgcmVwbGFjZShTdHJpbmcgc291cmNlLCBTdHJpbmcgdG9CZVJlcGxhY2VkLCBTdHJpbmcgcmVwbGFjZW1lbnQpIHsKKwkgICAgU3RyaW5nQnVmZmVyIHJlc3VsdHMgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisJICAgIGludCBsZW4gPSB0b0JlUmVwbGFjZWQubGVuZ3RoKCk7CisJICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc291cmNlLmxlbmd0aCgpOyArK2kpIHsKKwkgICAgICAgIGlmIChzb3VyY2UucmVnaW9uTWF0Y2hlcyhmYWxzZSwgaSwgdG9CZVJlcGxhY2VkLCAwLCBsZW4pKSB7CisJICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQocmVwbGFjZW1lbnQpOworCSAgICAgICAgICAgIGkgKz0gbGVuIC0gMTsgLy8gbWludXMgb25lLCBzaW5jZSB3ZSB3aWxsIGluY3JlbWVudAorCSAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChzb3VyY2UuY2hhckF0KGkpKTsKKwkgICAgICAgIH0KKwkgICAgfQorCSAgICByZXR1cm4gcmVzdWx0cy50b1N0cmluZygpOworCX0KKwkKKwlwdWJsaWMgc3RhdGljIFN0cmluZyByZXBsYWNlQWxsKFN0cmluZyBzb3VyY2UsIFVuaWNvZGVTZXQgc2V0LCBTdHJpbmcgcmVwbGFjZW1lbnQpIHsKKwkgICAgU3RyaW5nQnVmZmVyIHJlc3VsdHMgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisJICAgIGludCBjcDsKKwkgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzb3VyY2UubGVuZ3RoKCk7IGkgKz0gVVRGMTYuZ2V0Q2hhckNvdW50KGNwKSkgeworCSAgICAgICAgY3AgPSBVVEYxNi5jaGFyQXQoc291cmNlLGkpOworCSAgICAgICAgaWYgKHNldC5jb250YWlucyhjcCkpIHsKKwkgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXBsYWNlbWVudCk7CisJICAgICAgICB9IGVsc2UgeworCSAgICAgICAgICAgIFVURjE2LmFwcGVuZChyZXN1bHRzLCBjcCk7CisJICAgICAgICB9CisJICAgIH0KKwkgICAgcmV0dXJuIHJlc3VsdHMudG9TdHJpbmcoKTsKKwl9CisJCisgICAgLy8gQ09NTUVOVEVEIE9VVCBBTEwgVEhFIE9MRCBTQ1JJUFQgU1RVRkYKKyAgICAvKgorICAgIHB1YmxpYyBzdGF0aWMgYnl0ZSBnZXRTY3JpcHQoY2hhciBjKSB7CisgICAgICByZXR1cm4gZ2V0U2NyaXB0KGdldEJsb2NrKGMpKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHN0YXRpYyBieXRlIGdldFNjcmlwdChieXRlIGJsb2NrKSB7CisgICAgICByZXR1cm4gYmxvY2tUb1NjcmlwdFtibG9ja107CisgICAgfQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgYnl0ZSBnZXRCbG9jayhjaGFyIGMpIHsKKyAgICAgIGludCBpbmRleCA9IGMgPj4gNzsKKyAgICAgIGJ5dGUgYmxvY2sgPSBjaGFyVG9CbG9ja1tpbmRleF07CisgICAgICB3aGlsZSAoYmxvY2sgPCAwKSB7IC8vIHRha2UgY2FyZSBvZiBleGNlcHRpb25zLCBibG9ja3Mgc3BsaXQgYWNyb3NzIDEyOCBib3VuZGFyaWVzCisgICAgICAgICAgaW50W10gdHVwbGUgPSBzcGxpdFstYmxvY2stMV07CisgICAgICAgICAgaWYgKGMgPCB0dXBsZVswXSkgYmxvY2sgPSAoYnl0ZSl0dXBsZVsxXTsKKyAgICAgICAgICBlbHNlIGJsb2NrID0gKGJ5dGUpdHVwbGVbMl07CisgICAgICB9CisgICAgICByZXR1cm4gYmxvY2s7CisgICAgfQorICAgICAgICAgICAgICAgCisgICAgLy8gcmV0dXJucyBuZXh0IGxldHRlciBvZiBzY3JpcHQsIG9yIDB4RkZGRiBpZiBkb25lCisgICAgCisgICAgcHVibGljIHN0YXRpYyBjaGFyIGdldE5leHRMZXR0ZXIoY2hhciBjLCBieXRlIHNjcmlwdCkgeworICAgICAgICB3aGlsZSAoYyA8IDB4RkZGRikgeworICAgICAgICAgICAgKytjOworICAgICAgICAgICAgaWYgKGdldFNjcmlwdChjKSA9PSBzY3JpcHQgJiYgQ2hhcmFjdGVyLmlzTGV0dGVyKGMpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGM7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGM7CisgICAgfQorICAgIAorICAgIC8vIFN1cHBsZW1lbnRzIHRvIENoYXJhY3RlciBtZXRob2RzOyB0aGVzZSBtZXRob2RzIGdvIHRocm91Z2gKKyAgICAvLyBVQ2hhcmFjdGVyIGlmIHBvc3NpYmxlLiAgSWYgbm90LCB0aGV5IGZhbGwgYmFjayB0byBDaGFyYWN0ZXIuCisKKyAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNVbmFzc2lnbmVkKGNoYXIgYykgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJuIFVDaGFyYWN0ZXIuZ2V0VHlwZShjKSA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuVU5BU1NJR05FRDsKKyAgICAgICAgfSBjYXRjaCAoTnVsbFBvaW50ZXJFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludCgiIik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIENoYXJhY3Rlci5nZXRUeXBlKGMpID09IENoYXJhY3Rlci5VTkFTU0lHTkVEOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0xldHRlcihjaGFyIGMpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJldHVybiBVQ2hhcmFjdGVyLmlzTGV0dGVyKGMpOworICAgICAgICB9IGNhdGNoIChOdWxsUG9pbnRlckV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCIiKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gQ2hhcmFjdGVyLmlzTGV0dGVyKGMpOworICAgIH0KKworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgU3lzdGVtLm91dC5wcmludGxuKCJCbG9ja3M6ICIpOworICAgIGJ5dGUgbGFzdGJsb2NrID0gLTEyODsKKyAgICBmb3IgKGNoYXIgY2MgPSAwOyBjYyA8IDB4RkZGRjsgKytjYykgeworICAgICAgYnl0ZSBibG9jayA9IFRlc3RVdGlsaXR5LmdldEJsb2NrKGNjKTsKKyAgICAgIGlmIChibG9jayAhPSBsYXN0YmxvY2spIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKFRlc3RVdGlsaXR5LmhleChjYykgKyAiXHQiICsgYmxvY2spOworICAgICAgICBsYXN0YmxvY2sgPSBibG9jazsKKyAgICAgIH0KKyAgICB9CisgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CisgICAgU3lzdGVtLm91dC5wcmludGxuKCJTY3JpcHRzOiAiKTsKKyAgICBieXRlIGxhc3RTY3JpcHQgPSAtMTI4OworICAgIGZvciAoY2hhciBjYyA9IDA7IGNjIDwgMHhGRkZGOyArK2NjKSB7CisgICAgICBieXRlIHNjcmlwdCA9IFRlc3RVdGlsaXR5LmdldFNjcmlwdChjYyk7CisgICAgICBpZiAoc2NyaXB0ICE9IGxhc3RTY3JpcHQpIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKFRlc3RVdGlsaXR5LmhleChjYykgKyAiXHQiICsgc2NyaXB0KTsKKyAgICAgICAgbGFzdFNjcmlwdCA9IHNjcmlwdDsKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgICAgIAorCQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgYnl0ZSAvLyBTQ1JJUFQgQ09ERQorICAgICAgICBDT01NT05fU0NSSVBUID0gMCwKKyAgICAgICAgTEFUSU5fU0NSSVBUID0gMSwKKyAgICAgICAgR1JFRUtfU0NSSVBUID0gMiwKKyAgICAgICAgQ1lSSUxMSUNfU0NSSVBUID0gMywKKyAgICAgICAgQVJNRU5JQU5fU0NSSVBUID0gNCwKKyAgICAgICAgSEVCUkVXX1NDUklQVCA9IDUsCisgICAgICAgIEFSQUJJQ19TQ1JJUFQgPSA2LAorICAgICAgICBTWVJJQUNfU0NSSVBUID0gNywKKyAgICAgICAgVEhBQU5BX1NDUklQVCA9IDgsIAorICAgICAgICBERVZBTkFHQVJJX1NDUklQVCA9IDksCisgICAgICAgIEJFTkdBTElfU0NSSVBUID0gMTAsCisgICAgICAgIEdVUk1VS0hJX1NDUklQVCA9IDExLAorICAgICAgICBHVUpBUkFUSV9TQ1JJUFQgPSAxMiwKKyAgICAgICAgT1JJWUFfU0NSSVBUID0gMTMsCisgICAgICAgIFRBTUlMX1NDUklQVCA9IDE0LAorICAgICAgICBURUxVR1VfU0NSSVBUID0gMTUsCisgICAgICAgIEtBTk5BREFfU0NSSVBUID0gMTYsCisgICAgICAgIE1BTEFZQUxBTV9TQ1JJUFQgPSAxNywKKyAgICAgICAgU0lOSEFMQV9TQ1JJUFQgPSAxOCwKKyAgICAgICAgVEhBSV9TQ1JJUFQgPSAxOSwKKyAgICAgICAgTEFPX1NDUklQVCA9IDIwLAorICAgICAgICBUSUJFVEFOX1NDUklQVCA9IDIxLAorICAgICAgICBNWUFOTUFSX1NDUklQVCA9IDIyLAorICAgICAgICBHRU9SR0lBTl9TQ1JJUFQgPSAyMywKKyAgICAgICAgSkFNT19TQ1JJUFQgPSAyNCwKKyAgICAgICAgSEFOR1VMX1NDUklQVCA9IDI1LAorICAgICAgICBFVEhJT1BJQ19TQ1JJUFQgPSAyNiwKKyAgICAgICAgQ0hFUk9LRUVfU0NSSVBUID0gMjcsCisgICAgICAgIEFCT1JJR0lOQUxfU0NSSVBUID0gMjgsCisgICAgICAgIE9HSEFNX1NDUklQVCA9IDI5LAorICAgICAgICBSVU5JQ19TQ1JJUFQgPSAzMCwKKyAgICAgICAgS0hNRVJfU0NSSVBUID0gMzEsCisgICAgICAgIE1PTkdPTElBTl9TQ1JJUFQgPSAzMiwKKyAgICAgICAgSElSQUdBTkFfU0NSSVBUID0gMzMsCisgICAgICAgIEtBVEFLQU5BX1NDUklQVCA9IDM0LAorICAgICAgICBCT1BPTU9GT19TQ1JJUFQgPSAzNSwKKyAgICAgICAgSEFOX1NDUklQVCA9IDM2LAorICAgICAgICBZSV9TQ1JJUFQgPSAzNzsKKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGJ5dGUgLy8gYmxvY2sgY29kZQorICAgICAgICBSRVNFUlZFRF9CTE9DSyA9IDAsCisgICAgICAgIEJBU0lDX0xBVElOID0gMSwKKyAgICAgICAgTEFUSU5fMV9TVVBQTEVNRU5UID0gMiwKKyAgICAgICAgTEFUSU5fRVhURU5ERURfQSA9IDMsCisgICAgICAgIExBVElOX0VYVEVOREVEX0IgPSA0LAorICAgICAgICBJUEFfRVhURU5TSU9OUyA9IDUsCisgICAgICAgIFNQQUNJTkdfTU9ESUZJRVJfTEVUVEVSUyA9IDYsCisgICAgICAgIENPTUJJTklOR19ESUFDUklUSUNBTF9NQVJLUyA9IDcsCisgICAgICAgIEdSRUVLID0gOCwKKyAgICAgICAgQ1lSSUxMSUMgPSA5LAorICAgICAgICBBUk1FTklBTiA9IDEwLAorICAgICAgICBIRUJSRVcgPSAxMSwKKyAgICAgICAgQVJBQklDID0gMTIsCisgICAgICAgIFNZUklBQyA9IDEzLAorICAgICAgICBUSEFBTkEgPSAxNCwKKyAgICAgICAgREVWQU5BR0FSSSA9IDE1LAorICAgICAgICBCRU5HQUxJID0gMTYsCisgICAgICAgIEdVUk1VS0hJID0gMTcsCisgICAgICAgIEdVSkFSQVRJID0gMTgsCisgICAgICAgIE9SSVlBID0gMTksCisgICAgICAgIFRBTUlMID0gMjAsCisgICAgICAgIFRFTFVHVSA9IDIxLAorICAgICAgICBLQU5OQURBID0gMjIsCisgICAgICAgIE1BTEFZQUxBTSA9IDIzLAorICAgICAgICBTSU5IQUxBID0gMjQsCisgICAgICAgIFRIQUkgPSAyNSwKKyAgICAgICAgTEFPID0gMjYsCisgICAgICAgIFRJQkVUQU4gPSAyNywKKyAgICAgICAgTVlBTk1BUiA9IDI4LAorICAgICAgICBHRU9SR0lBTiA9IDI5LAorICAgICAgICBIQU5HVUxfSkFNTyA9IDMwLAorICAgICAgICBFVEhJT1BJQyA9IDMxLAorICAgICAgICBDSEVST0tFRSA9IDMyLAorICAgICAgICBVTklGSUVEX0NBTkFESUFOX0FCT1JJR0lOQUxfU1lMTEFCSUNTID0gMzMsCisgICAgICAgIE9HSEFNID0gMzQsCisgICAgICAgIFJVTklDID0gMzUsCisgICAgICAgIEtITUVSID0gMzYsCisgICAgICAgIE1PTkdPTElBTiA9IDM3LAorICAgICAgICBMQVRJTl9FWFRFTkRFRF9BRERJVElPTkFMID0gMzgsCisgICAgICAgIEdSRUVLX0VYVEVOREVEID0gMzksCisgICAgICAgIEdFTkVSQUxfUFVOQ1RVQVRJT04gPSA0MCwKKyAgICAgICAgU1VQRVJTQ1JJUFRTX0FORF9TVUJTQ1JJUFRTID0gNDEsCisgICAgICAgIENVUlJFTkNZX1NZTUJPTFMgPSA0MiwKKyAgICAgICAgQ09NQklOSU5HX01BUktTX0ZPUl9TWU1CT0xTID0gNDMsCisgICAgICAgIExFVFRFUkxJS0VfU1lNQk9MUyA9IDQ0LAorICAgICAgICBOVU1CRVJfRk9STVMgPSA0NSwKKyAgICAgICAgQVJST1dTID0gNDYsCisgICAgICAgIE1BVEhFTUFUSUNBTF9PUEVSQVRPUlMgPSA0NywKKyAgICAgICAgTUlTQ0VMTEFORU9VU19URUNITklDQUwgPSA0OCwKKyAgICAgICAgQ09OVFJPTF9QSUNUVVJFUyA9IDQ5LAorICAgICAgICBPUFRJQ0FMX0NIQVJBQ1RFUl9SRUNPR05JVElPTiA9IDUwLAorICAgICAgICBFTkNMT1NFRF9BTFBIQU5VTUVSSUNTID0gNTEsCisgICAgICAgIEJPWF9EUkFXSU5HID0gNTIsCisgICAgICAgIEJMT0NLX0VMRU1FTlRTID0gNTMsCisgICAgICAgIEdFT01FVFJJQ19TSEFQRVMgPSA1NCwKKyAgICAgICAgTUlTQ0VMTEFORU9VU19TWU1CT0xTID0gNTUsCisgICAgICAgIERJTkdCQVRTID0gNTYsCisgICAgICAgIEJSQUlMTEVfUEFUVEVSTlMgPSA1NywKKyAgICAgICAgQ0pLX1JBRElDQUxTX1NVUFBMRU1FTlQgPSA1OCwKKyAgICAgICAgS0FOR1hJX1JBRElDQUxTID0gNTksCisgICAgICAgIElERU9HUkFQSElDX0RFU0NSSVBUSU9OX0NIQVJBQ1RFUlMgPSA2MCwKKyAgICAgICAgQ0pLX1NZTUJPTFNfQU5EX1BVTkNUVUFUSU9OID0gNjEsCisgICAgICAgIEhJUkFHQU5BID0gNjIsCisgICAgICAgIEtBVEFLQU5BID0gNjMsCisgICAgICAgIEJPUE9NT0ZPID0gNjQsCisgICAgICAgIEhBTkdVTF9DT01QQVRJQklMSVRZX0pBTU8gPSA2NSwKKyAgICAgICAgS0FOQlVOID0gNjYsCisgICAgICAgIEJPUE9NT0ZPX0VYVEVOREVEID0gNjcsCisgICAgICAgIEVOQ0xPU0VEX0NKS19MRVRURVJTX0FORF9NT05USFMgPSA2OCwKKyAgICAgICAgQ0pLX0NPTVBBVElCSUxJVFkgPSA2OSwKKyAgICAgICAgQ0pLX1VOSUZJRURfSURFT0dSQVBIU19FWFRFTlNJT05fQSA9IDcwLAorICAgICAgICBDSktfVU5JRklFRF9JREVPR1JBUEhTID0gNzEsCisgICAgICAgIFlJX1NZTExBQkxFUyA9IDcyLAorICAgICAgICBZSV9SQURJQ0FMUyA9IDczLAorICAgICAgICBIQU5HVUxfU1lMTEFCTEVTID0gNzQsCisgICAgICAgIEhJR0hfU1VSUk9HQVRFUyA9IDc1LAorICAgICAgICBISUdIX1BSSVZBVEVfVVNFX1NVUlJPR0FURVMgPSA3NiwKKyAgICAgICAgTE9XX1NVUlJPR0FURVMgPSA3NywKKyAgICAgICAgUFJJVkFURV9VU0UgPSA3OCwKKyAgICAgICAgQ0pLX0NPTVBBVElCSUxJVFlfSURFT0dSQVBIUyA9IDc5LAorICAgICAgICBBTFBIQUJFVElDX1BSRVNFTlRBVElPTl9GT1JNUyA9IDgwLAorICAgICAgICBBUkFCSUNfUFJFU0VOVEFUSU9OX0ZPUk1TX0EgPSA4MSwKKyAgICAgICAgQ09NQklOSU5HX0hBTEZfTUFSS1MgPSA4MiwKKyAgICAgICAgQ0pLX0NPTVBBVElCSUxJVFlfRk9STVMgPSA4MywKKyAgICAgICAgU01BTExfRk9STV9WQVJJQU5UUyA9IDg0LAorICAgICAgICBBUkFCSUNfUFJFU0VOVEFUSU9OX0ZPUk1TX0IgPSA4NSwKKyAgICAgICAgU1BFQ0lBTFMgPSA4NiwKKyAgICAgICAgSEFMRldJRFRIX0FORF9GVUxMV0lEVEhfRk9STVMgPSA4NzsKKyAgICAgICAgCisgICAgc3RhdGljIGZpbmFsIGJ5dGVbXSBibG9ja1RvU2NyaXB0ID0geworICAgICAgICBDT01NT05fU0NSSVBULCAvLyAwLCA8UkVTRVJWRURfQkxPQ0s+CisgICAgICAgIExBVElOX1NDUklQVCwgLy8gMSwgQkFTSUNfTEFUSU4KKyAgICAgICAgTEFUSU5fU0NSSVBULCAvLyAyLCBMQVRJTl8xX1NVUFBMRU1FTlQKKyAgICAgICAgTEFUSU5fU0NSSVBULCAvLyAzLCBMQVRJTl9FWFRFTkRFRF9BCisgICAgICAgIExBVElOX1NDUklQVCwgLy8gNCwgTEFUSU5fRVhURU5ERURfQgorICAgICAgICBMQVRJTl9TQ1JJUFQsIC8vIDUsIElQQV9FWFRFTlNJT05TCisgICAgICAgIENPTU1PTl9TQ1JJUFQsIC8vIDYsIFNQQUNJTkdfTU9ESUZJRVJfTEVUVEVSUworICAgICAgICBDT01NT05fU0NSSVBULCAvLyA3LCBDT01CSU5JTkdfRElBQ1JJVElDQUxfTUFSS1MKKyAgICAgICAgR1JFRUtfU0NSSVBULCAvLyA4LCBHUkVFSworICAgICAgICBDWVJJTExJQ19TQ1JJUFQsIC8vIDksIENZUklMTElDCisgICAgICAgIEFSTUVOSUFOX1NDUklQVCwgLy8gMTAsIEFSTUVOSUFOCisgICAgICAgIEhFQlJFV19TQ1JJUFQsIC8vIDExLCBIRUJSRVcKKyAgICAgICAgQVJBQklDX1NDUklQVCwgLy8gMTIsIEFSQUJJQworICAgICAgICBTWVJJQUNfU0NSSVBULCAvLyAxMywgU1lSSUFDCisgICAgICAgIFRIQUFOQV9TQ1JJUFQsIC8vIDE0LCBUSEFBTkEKKyAgICAgICAgREVWQU5BR0FSSV9TQ1JJUFQsIC8vIDE1LCBERVZBTkFHQVJJCisgICAgICAgIEJFTkdBTElfU0NSSVBULCAvLyAxNiwgQkVOR0FMSQorICAgICAgICBHVVJNVUtISV9TQ1JJUFQsIC8vIDE3LCBHVVJNVUtISQorICAgICAgICBHVUpBUkFUSV9TQ1JJUFQsIC8vIDE4LCBHVUpBUkFUSQorICAgICAgICBPUklZQV9TQ1JJUFQsIC8vIDE5LCBPUklZQQorICAgICAgICBUQU1JTF9TQ1JJUFQsIC8vIDIwLCBUQU1JTAorICAgICAgICBURUxVR1VfU0NSSVBULCAvLyAyMSwgVEVMVUdVCisgICAgICAgIEtBTk5BREFfU0NSSVBULCAvLyAyMiwgS0FOTkFEQQorICAgICAgICBNQUxBWUFMQU1fU0NSSVBULCAvLyAyMywgTUFMQVlBTEFNCisgICAgICAgIFNJTkhBTEFfU0NSSVBULCAvLyAyNCwgU0lOSEFMQQorICAgICAgICBUSEFJX1NDUklQVCwgLy8gMjUsIFRIQUkKKyAgICAgICAgTEFPX1NDUklQVCwgLy8gMjYsIExBTworICAgICAgICBUSUJFVEFOX1NDUklQVCwgLy8gMjcsIFRJQkVUQU4KKyAgICAgICAgTVlBTk1BUl9TQ1JJUFQsIC8vIDI4LCBNWUFOTUFSCisgICAgICAgIEdFT1JHSUFOX1NDUklQVCwgLy8gMjksIEdFT1JHSUFOCisgICAgICAgIEpBTU9fU0NSSVBULCAvLyAzMCwgSEFOR1VMX0pBTU8KKyAgICAgICAgRVRISU9QSUNfU0NSSVBULCAvLyAzMSwgRVRISU9QSUMKKyAgICAgICAgQ0hFUk9LRUVfU0NSSVBULCAvLyAzMiwgQ0hFUk9LRUUKKyAgICAgICAgQUJPUklHSU5BTF9TQ1JJUFQsIC8vIDMzLCBVTklGSUVEX0NBTkFESUFOX0FCT1JJR0lOQUxfU1lMTEFCSUNTCisgICAgICAgIE9HSEFNX1NDUklQVCwgLy8gMzQsIE9HSEFNCisgICAgICAgIFJVTklDX1NDUklQVCwgLy8gMzUsIFJVTklDCisgICAgICAgIEtITUVSX1NDUklQVCwgLy8gMzYsIEtITUVSCisgICAgICAgIE1PTkdPTElBTl9TQ1JJUFQsIC8vIDM3LCBNT05HT0xJQU4KKyAgICAgICAgTEFUSU5fU0NSSVBULCAvLyAzOCwgTEFUSU5fRVhURU5ERURfQURESVRJT05BTAorICAgICAgICBHUkVFS19TQ1JJUFQsIC8vIDM5LCBHUkVFS19FWFRFTkRFRAorICAgICAgICBDT01NT05fU0NSSVBULCAvLyA0MCwgR0VORVJBTF9QVU5DVFVBVElPTgorICAgICAgICBDT01NT05fU0NSSVBULCAvLyA0MSwgU1VQRVJTQ1JJUFRTX0FORF9TVUJTQ1JJUFRTCisgICAgICAgIENPTU1PTl9TQ1JJUFQsIC8vIDQyLCBDVVJSRU5DWV9TWU1CT0xTCisgICAgICAgIENPTU1PTl9TQ1JJUFQsIC8vIDQzLCBDT01CSU5JTkdfTUFSS1NfRk9SX1NZTUJPTFMKKyAgICAgICAgQ09NTU9OX1NDUklQVCwgLy8gNDQsIExFVFRFUkxJS0VfU1lNQk9MUworICAgICAgICBDT01NT05fU0NSSVBULCAvLyA0NSwgTlVNQkVSX0ZPUk1TCisgICAgICAgIENPTU1PTl9TQ1JJUFQsIC8vIDQ2LCBBUlJPV1MKKyAgICAgICAgQ09NTU9OX1NDUklQVCwgLy8gNDcsIE1BVEhFTUFUSUNBTF9PUEVSQVRPUlMKKyAgICAgICAgQ09NTU9OX1NDUklQVCwgLy8gNDgsIE1JU0NFTExBTkVPVVNfVEVDSE5JQ0FMCisgICAgICAgIENPTU1PTl9TQ1JJUFQsIC8vIDQ5LCBDT05UUk9MX1BJQ1RVUkVTCisgICAgICAgIENPTU1PTl9TQ1JJUFQsIC8vIDUwLCBPUFRJQ0FMX0NIQVJBQ1RFUl9SRUNPR05JVElPTgorICAgICAgICBDT01NT05fU0NSSVBULCAvLyA1MSwgRU5DTE9TRURfQUxQSEFOVU1FUklDUworICAgICAgICBDT01NT05fU0NSSVBULCAvLyA1MiwgQk9YX0RSQVdJTkcKKyAgICAgICAgQ09NTU9OX1NDUklQVCwgLy8gNTMsIEJMT0NLX0VMRU1FTlRTCisgICAgICAgIENPTU1PTl9TQ1JJUFQsIC8vIDU0LCBHRU9NRVRSSUNfU0hBUEVTCisgICAgICAgIENPTU1PTl9TQ1JJUFQsIC8vIDU1LCBNSVNDRUxMQU5FT1VTX1NZTUJPTFMKKyAgICAgICAgQ09NTU9OX1NDUklQVCwgLy8gNTYsIERJTkdCQVRTCisgICAgICAgIENPTU1PTl9TQ1JJUFQsIC8vIDU3LCBCUkFJTExFX1BBVFRFUk5TCisgICAgICAgIEhBTl9TQ1JJUFQsIC8vIDU4LCBDSktfUkFESUNBTFNfU1VQUExFTUVOVAorICAgICAgICBIQU5fU0NSSVBULCAvLyA1OSwgS0FOR1hJX1JBRElDQUxTCisgICAgICAgIEhBTl9TQ1JJUFQsIC8vIDYwLCBJREVPR1JBUEhJQ19ERVNDUklQVElPTl9DSEFSQUNURVJTCisgICAgICAgIENPTU1PTl9TQ1JJUFQsIC8vIDYxLCBDSktfU1lNQk9MU19BTkRfUFVOQ1RVQVRJT04KKyAgICAgICAgSElSQUdBTkFfU0NSSVBULCAvLyA2MiwgSElSQUdBTkEKKyAgICAgICAgS0FUQUtBTkFfU0NSSVBULCAvLyA2MywgS0FUQUtBTkEKKyAgICAgICAgQk9QT01PRk9fU0NSSVBULCAvLyA2NCwgQk9QT01PRk8KKyAgICAgICAgSkFNT19TQ1JJUFQsIC8vIDY1LCBIQU5HVUxfQ09NUEFUSUJJTElUWV9KQU1PCisgICAgICAgIEhBTl9TQ1JJUFQsIC8vIDY2LCBLQU5CVU4KKyAgICAgICAgQk9QT01PRk9fU0NSSVBULCAvLyA2NywgQk9QT01PRk9fRVhURU5ERUQKKyAgICAgICAgQ09NTU9OX1NDUklQVCwgLy8gNjgsIEVOQ0xPU0VEX0NKS19MRVRURVJTX0FORF9NT05USFMKKyAgICAgICAgQ09NTU9OX1NDUklQVCwgLy8gNjksIENKS19DT01QQVRJQklMSVRZCisgICAgICAgIEhBTl9TQ1JJUFQsIC8vIDcwLCBDSktfVU5JRklFRF9JREVPR1JBUEhTX0VYVEVOU0lPTl9BCisgICAgICAgIEhBTl9TQ1JJUFQsIC8vIDcxLCBDSktfVU5JRklFRF9JREVPR1JBUEhTCisgICAgICAgIFlJX1NDUklQVCwgLy8gNzIsIFlJX1NZTExBQkxFUworICAgICAgICBZSV9TQ1JJUFQsIC8vIDczLCBZSV9SQURJQ0FMUworICAgICAgICBIQU5HVUxfU0NSSVBULCAvLyA3NCwgSEFOR1VMX1NZTExBQkxFUworICAgICAgICBDT01NT05fU0NSSVBULCAvLyA3NSwgSElHSF9TVVJST0dBVEVTCisgICAgICAgIENPTU1PTl9TQ1JJUFQsIC8vIDc2LCBISUdIX1BSSVZBVEVfVVNFX1NVUlJPR0FURVMKKyAgICAgICAgQ09NTU9OX1NDUklQVCwgLy8gNzcsIExPV19TVVJST0dBVEVTCisgICAgICAgIENPTU1PTl9TQ1JJUFQsIC8vIDc4LCBQUklWQVRFX1VTRQorICAgICAgICBIQU5fU0NSSVBULCAvLyA3OSwgQ0pLX0NPTVBBVElCSUxJVFlfSURFT0dSQVBIUworICAgICAgICBDT01NT05fU0NSSVBULCAvLyA4MCwgQUxQSEFCRVRJQ19QUkVTRU5UQVRJT05fRk9STVMKKyAgICAgICAgQVJBQklDX1NDUklQVCwgLy8gODEsIEFSQUJJQ19QUkVTRU5UQVRJT05fRk9STVNfQQorICAgICAgICBDT01NT05fU0NSSVBULCAvLyA4MiwgQ09NQklOSU5HX0hBTEZfTUFSS1MKKyAgICAgICAgQ09NTU9OX1NDUklQVCwgLy8gODMsIENKS19DT01QQVRJQklMSVRZX0ZPUk1TCisgICAgICAgIENPTU1PTl9TQ1JJUFQsIC8vIDg0LCBTTUFMTF9GT1JNX1ZBUklBTlRTCisgICAgICAgIEFSQUJJQ19TQ1JJUFQsIC8vIDg1LCBBUkFCSUNfUFJFU0VOVEFUSU9OX0ZPUk1TX0IKKyAgICAgICAgQ09NTU9OX1NDUklQVCwgLy8gODYsIFNQRUNJQUxTCisgICAgICAgIENPTU1PTl9TQ1JJUFQsIC8vIDg3LCBIQUxGV0lEVEhfQU5EX0ZVTExXSURUSF9GT1JNUworICAgICAgICBDT01NT05fU0NSSVBULCAvLyA4OCwgU1BFQ0lBTFMKKyAgICB9OworICAgICAgICAKKyAgICAvLyBjb3VsZCBiZSBmdXJ0aGVyIHJlZHVjZWQgdG8gYSBieXRlIGFycmF5LCBidXQgSSBkaWRuJ3QgYm90aGVyLgorICAgIHN0YXRpYyBmaW5hbCBpbnRbXVtdIHNwbGl0ID0geworICAgICAgICB7MHgwMjUwLCA0LCA1fSwgLy8gLTEKKyAgICAgICAgezB4MDJCMCwgNSwgNn0sIC8vIC0yCisgICAgICAgIHsweDAzNzAsIDcsIDh9LCAvLyAtMworICAgICAgICB7MHgwNTMwLCAwLCAxMH0sIC8vIC00CisgICAgICAgIHsweDA1OTAsIDEwLCAxMX0sIC8vIC01CisgICAgICAgIHsweDA3NTAsIDEzLCAwfSwgLy8gLTYKKyAgICAgICAgezB4MDdDMCwgMTQsIDB9LCAvLyAtNworICAgICAgICB7MHgxMEEwLCAyOCwgMjl9LCAvLyAtOAorICAgICAgICB7MHgxM0EwLCAwLCAzMn0sIC8vIC05CisgICAgICAgIHsweDE2QTAsIDM0LCAzNX0sIC8vIC0xMAorICAgICAgICB7MHgxOEIwLCAzNywgMH0sIC8vIC0xMQorICAgICAgICB7MHgyMDcwLCA0MCwgNDF9LCAvLyAtMTIKKyAgICAgICAgezB4MjBBMCwgNDEsIC0zMX0sIC8vIC0xMworICAgICAgICB7MHgyMTUwLCA0NCwgNDV9LCAvLyAtMTQKKyAgICAgICAgezB4MjE5MCwgNDUsIDQ2fSwgLy8gLTE1CisgICAgICAgIHsweDI0NDAsIDQ5LCAtMzJ9LCAvLyAtMTYKKyAgICAgICAgezB4MjVBMCwgNTMsIDU0fSwgLy8gLTE3CisgICAgICAgIHsweDI3QzAsIDU2LCAwfSwgLy8gLTE4CisgICAgICAgIHsweDJGRTAsIDU5LCAtMzN9LCAvLyAtMTkKKyAgICAgICAgezB4MzA0MCwgNjEsIDYyfSwgLy8gLTIwCisgICAgICAgIHsweDMwQTAsIDYyLCA2M30sIC8vIC0yMQorICAgICAgICB7MHgzMTMwLCA2NCwgNjV9LCAvLyAtMjIKKyAgICAgICAgezB4MzE5MCwgNjUsIC0zNH0sIC8vIC0yMworICAgICAgICB7MHg0REI2LCA3MCwgMH0sIC8vIC0yNAorICAgICAgICB7MHhBNDkwLCA3MiwgLTM1fSwgLy8gLTI1CisgICAgICAgIHsweEQ3QTQsIDc0LCAwfSwgLy8gLTI2CisgICAgICAgIHsweEZCNTAsIDgwLCA4MX0sIC8vIC0yNworICAgICAgICB7MHhGRTIwLCAwLCAtMzZ9LCAvLyAtMjgKKyAgICAgICAgezB4RkVGRiwgODUsIDg2fSwgLy8gLTI5CisgICAgICAgIHsweEZGRjAsIDg3LCAtMzd9LCAvLyAtMzAKKyAgICAgICAgezB4MjBEMCwgNDIsIDQzfSwgLy8gLTMxCisgICAgICAgIHsweDI0NjAsIDUwLCA1MX0sIC8vIC0zMgorICAgICAgICB7MHgyRkYwLCAwLCA2MH0sIC8vIC0zMworICAgICAgICB7MHgzMUEwLCA2NiwgLTM4fSwgLy8gLTM0CisgICAgICAgIHsweEE0RDAsIDczLCAwfSwgLy8tMzUKKyAgICAgICAgezB4RkUzMCwgODIsIC0zOX0sIC8vLTM2CisgICAgICAgIHsweEZGRkUsIDg4LCAwfSwgLy8tMzcKKyAgICAgICAgezB4MzFDMCwgNjcsIDB9LCAvLyAtMzgKKyAgICAgICAgezB4RkU1MCwgODMsIC00MH0sIC8vLTM5CisgICAgICAgIHsweEZFNzAsIDg0LCA4NX0gLy8gLTQwCisgICAgfTsKKyAgICAgICAgCisgICAgc3RhdGljIGZpbmFsIGJ5dGVbXSBjaGFyVG9CbG9jayA9IHsKKyAgICAgIDEsIDIsIDMsIDQsIC0xLCAtMiwgLTMsIDgsIDksIDksIC00LCAtNSwgMTIsIDEyLCAtNiwgLTcsCisgICAgICAwLCAwLCAxNSwgMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjcsCisgICAgICAyOCwgLTgsIDMwLCAzMCwgMzEsIDMxLCAzMSwgLTksIDMzLCAzMywgMzMsIDMzLCAzMywgLTEwLCAwLCAzNiwKKyAgICAgIDM3LCAtMTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM4LCAzOCwgMzksIDM5LAorICAgICAgLTEyLCAtMTMsIC0xNCwgLTE1LCA0NywgNDcsIDQ4LCA0OCwgLTE2LCA1MSwgNTIsIC0xNywgNTUsIDU1LCA1NiwgLTE4LAorICAgICAgNTcsIDU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OCwgNTksIC0xOSwKKyAgICAgIC0yMCwgLTIxLCAtMjIsIC0yMywgNjgsIDY4LCA2OSwgNjksIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwKKyAgICAgIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLAorICAgICAgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsCisgICAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIC0yNCwgNzEsIDcxLCA3MSwgNzEsCisgICAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwKKyAgICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLAorICAgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsCisgICAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwKKyAgICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLAorICAgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsCisgICAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwKKyAgICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLAorICAgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsCisgICAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwKKyAgICAgIDcyLCA3MiwgNzIsIDcyLCA3MiwgNzIsIDcyLCA3MiwgNzIsIC0yNSwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc0LCA3NCwgNzQsIDc0LCA3NCwgNzQsIDc0LCA3NCwKKyAgICAgIDc0LCA3NCwgNzQsIDc0LCA3NCwgNzQsIDc0LCA3NCwgNzQsIDc0LCA3NCwgNzQsIDc0LCA3NCwgNzQsIDc0LAorICAgICAgNzQsIDc0LCA3NCwgNzQsIDc0LCA3NCwgNzQsIDc0LCA3NCwgNzQsIDc0LCA3NCwgNzQsIDc0LCA3NCwgNzQsCisgICAgICA3NCwgNzQsIDc0LCA3NCwgNzQsIDc0LCA3NCwgNzQsIDc0LCA3NCwgNzQsIDc0LCA3NCwgNzQsIDc0LCA3NCwKKyAgICAgIDc0LCA3NCwgNzQsIDc0LCA3NCwgNzQsIDc0LCA3NCwgNzQsIDc0LCA3NCwgNzQsIDc0LCA3NCwgNzQsIDc0LAorICAgICAgNzQsIDc0LCA3NCwgNzQsIDc0LCA3NCwgNzQsIDc0LCA3NCwgNzQsIDc0LCA3NCwgNzQsIDc0LCA3NCwgLTI2LAorICAgICAgNzUsIDc1LCA3NSwgNzUsIDc1LCA3NSwgNzUsIDc2LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsCisgICAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwKKyAgICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LAorICAgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsCisgICAgICA3OCwgNzgsIDc5LCA3OSwgNzksIDc5LCAtMjcsIDgxLCA4MSwgODEsIDgxLCA4MSwgLTI4LCAtMjksIDg3LCAtMzAKKyAgICB9OworICAgICovCit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvdHJhbnNsaXQvVHJhbnNsaXRlcmF0b3JUZXN0LmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvdHJhbnNsaXQvVHJhbnNsaXRlcmF0b3JUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOTE2ZTBkNzEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvdHJhbnNsaXQvVHJhbnNsaXRlcmF0b3JUZXN0LmphdmEKQEAgLTAsMCArMSwyODYxIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvdHJhbnNsaXQvVHJhbnNsaXRlcmF0b3JUZXN0LmphdmEsdiAkCisgKiAkRGF0ZTogMjAwMi8wOS8wOSAxNjozMzo0MyAkCisgKiAkUmV2aXNpb246IDEuMTE3ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudGVzdC50cmFuc2xpdDsKK2ltcG9ydCBjb20uaWJtLmljdS5sYW5nLio7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC4qOworaW1wb3J0IGNvbS5pYm0uaWN1LmRldi50ZXN0Lio7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5VdGlsaXR5OworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuQ2FzZUluc2Vuc2l0aXZlU3RyaW5nOworaW1wb3J0IGphdmEudXRpbC4qOworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworICAgICAgICAgICAgICAgICAgICAgSE9XIFRPIFVTRSBUSElTIFRFU1QgRklMRQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1vci0KKyAgICAgICAgICAgICAgICAgIEhvdyBJIGRldmVsb3BlZCBvbiB0d28gcGxhdGZvcm1zCisgICAgICAgICAgICAgICAgd2l0aG91dCBsb3NpbmcgKHRvbyBtdWNoIG9mKSBteSBtaW5kCisKKworMS4gQWRkIG5ldyB0ZXN0cyBieSBjb3B5aW5nL3Bhc3RpbmcvY2hhbmdpbmcgZXhpc3RpbmcgdGVzdHMuICBPbiBKYXZhLAorICAgYW55IHB1YmxpYyB2b2lkIG1ldGhvZCBuYW1lZCBUZXN0Li4uKCkgdGFraW5nIG5vIHBhcmFtZXRlcnMgYmVjb21lcworICAgYSB0ZXN0LiAgT24gQysrLCB5b3UgbmVlZCB0byBtb2RpZnkgdGhlIGhlYWRlciBhbmQgYWRkIGEgbGluZSB0bworICAgdGhlIHJ1bkluZGV4ZWRUZXN0KCkgZGlzcGF0Y2ggbWV0aG9kLgorCisyLiBNYWtlIGxpYmVyYWwgdXNlIG9mIHRoZSBleHBlY3QoKSBtZXRob2Q7IGl0IGlzIHlvdXIgZnJpZW5kLgorCiszLiBUaGUgdGVzdHMgaW4gdGhpcyBmaWxlIGV4YWN0bHkgbWF0Y2ggdGhvc2UgaW4gYSBzaXN0ZXIgZmlsZSBvbiB0aGUKKyAgIG90aGVyIHNpZGUuICBUaGUgdHdvIGZpbGVzIGFyZToKKworICAgaWN1NGo6ICBzcmMvY29tLmlibS5pY3UuZGV2LnRlc3QvdHJhbnNsaXQvVHJhbnNsaXRlcmF0b3JUZXN0LmphdmEKKyAgIGljdTRjOiAgc291cmNlL3Rlc3QvaW50bHRlc3QvdHJhbnN0c3QuY3BwCisKKyAgICAgICAgICAgICAgICAgID09PiBUSElTIElTIFRIRSBJTVBPUlRBTlQgUEFSVCA8PT0KKworICAgV2hlbiB5b3UgYWRkIGEgdGVzdCBpbiB0aGlzIGZpbGUsIGFkZCBpdCBpbiB0cmFuc3RzdC5jcHAgdG9vLgorICAgR2l2ZSBpdCB0aGUgc2FtZSBuYW1lIGFuZCBwdXQgaXQgaW4gdGhlIHNhbWUgcmVsYXRpdmUgcGxhY2UuICBUaGlzCisgICBtYWtlcyBtYWludGVuYW5jZSBhIGxvdCBzaW1wbGVyIGZvciBhbnkgcG9vciBzb3VsIHdobyBlbmRzIHVwCisgICB0cnlpbmcgdG8gc3luY2hyb25pemUgdGhlIHRlc3RzIGJldHdlZW4gaWN1NGogYW5kIGljdTRjLgorCis0LiBJZiB5b3UgTVVTVCBlbnRlciBhIHRlc3QgdGhhdCBpcyBOT1QgcGFyYWxsZWxlZCBpbiB0aGUgc2lzdGVyIGZpbGUsCisgICB0aGVuIGFkZCBpdCBpbiB0aGUgc3BlY2lhbCBub24tbWlycm9yZWQgc2VjdGlvbi4gIFRoZXNlIGFyZQorICAgbGFiZWxlZAorCisgICAgICJpY3U0aiBPTkxZIgorCisgICBvcgorCisgICAgICJpY3U0YyBPTkxZIgorCisgICBNYWtlIHN1cmUgeW91IGRvY3VtZW50IHRoZSByZWFzb24gdGhlIHRlc3QgaXMgaGVyZSBhbmQgbm90IHRoZXJlLgorCisKK1RoYW5rIHlvdS4KK1RoZSBNYW5hZ2VtZW50CisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqCisgKiBAdGVzdAorICogQHN1bW1hcnkgR2VuZXJhbCB0ZXN0IG9mIFRyYW5zbGl0ZXJhdG9yCisgKi8KK3B1YmxpYyBjbGFzcyBUcmFuc2xpdGVyYXRvclRlc3QgZXh0ZW5kcyBUZXN0Rm13ayB7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgbmV3IFRyYW5zbGl0ZXJhdG9yVGVzdCgpLnJ1bihhcmdzKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0SW5zdGFudGlhdGlvbigpIHsKKyAgICAgICAgbG9uZyBtcyA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICBTdHJpbmcgSUQ7CisgICAgICAgIGZvciAoRW51bWVyYXRpb24gZSA9IFRyYW5zbGl0ZXJhdG9yLmdldEF2YWlsYWJsZUlEcygpOyBlLmhhc01vcmVFbGVtZW50cygpOyApIHsKKyAgICAgICAgICAgIElEID0gKFN0cmluZykgZS5uZXh0RWxlbWVudCgpOworICAgICAgICAgICAgaWYgKElELmVxdWFscygiTGF0aW4tSGFuL2RlZmluaXRpb24iKSkgeworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiXG5UT0RPOiBkaXNhYmxpbmcgTGF0aW4tSGFuL2RlZmluaXRpb24gY2hlY2sgZm9yIG5vdzogZml4IGxhdGVyIik7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBUcmFuc2xpdGVyYXRvciB0ID0gbnVsbDsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgdCA9IFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKElEKTsKKyAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgZ2V0IGEgbmV3IGluc3RhbmNlIGlmIHdlIHRyeSBhZ2FpbgorICAgICAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQyID0gbnVsbDsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRydWUgb25seSBvZiBSQlQKKyAgICAgICAgICAgICAgICBpZiAodCBpbnN0YW5jZW9mIFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yKSB7CisgICAgICAgICAgICAgICAgICAgIHQgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZShJRCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICh0ICE9IHQyKSB7CisgICAgICAgICAgICAgICAgICAgIGxvZ2xuKCJPSzogIiArIFRyYW5zbGl0ZXJhdG9yLmdldERpc3BsYXlOYW1lKElEKSArICIgKCIgKyBJRCArICIpOiAiICsgdCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6ICIgKyBJRCArICIgcmV0dXJuZWQgaWRlbnRpY2FsIGluc3RhbmNlcyIpOworICAgICAgICAgICAgICAgICAgICB0ID0gbnVsbDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogIiArIElEKTsKKyAgICAgICAgICAgICAgICB0aHJvdyBleDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIC8vIE5vdyB0ZXN0IHRvUnVsZXMKKyAgICAgICAgICAgICAgICBTdHJpbmcgcnVsZXMgPSBudWxsOworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIHJ1bGVzID0gdC50b1J1bGVzKHRydWUpOworCisgICAgICAgICAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHUgPSBUcmFuc2xpdGVyYXRvci5jcmVhdGVGcm9tUnVsZXMoIngiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGVzLCBUcmFuc2xpdGVyYXRvci5GT1JXQVJEKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZXgyKSB7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiAiICsgSUQgKyAiLnRvUnVsZXMoKSA9PiBiYWQgcnVsZXM6ICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICBydWxlcyk7CisgICAgICAgICAgICAgICAgICAgIHRocm93IGV4MjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBOb3cgdGVzdCB0aGUgZmFpbHVyZSBwYXRoCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBJRCA9ICI8Tm90IGEgdmFsaWQgVHJhbnNsaXRlcmF0b3IgSUQ+IjsKKyAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZShJRCk7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogIiArIElEICsgIiByZXR1cm5lZCAiICsgdCk7CisgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgbG9nbG4oIk9LOiBCb2d1cyBJRCBoYW5kbGVkIHByb3Blcmx5Iik7CisgICAgICAgIH0KKworICAgICAgICBtcyA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpIC0gbXM7CisgICAgICAgIGxvZ2xuKCJFbGFwc2VkIHRpbWU6ICIgKyBtcyArICIgbXMiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0U2ltcGxlUnVsZXMoKSB7CisgICAgICAgIC8qIEV4YW1wbGU6IHJ1bGVzIDEuIGFiPnh8eQorICAgICAgICAgKiAgICAgICAgICAgICAgICAyLiB5Yz56CisgICAgICAgICAqCisgICAgICAgICAqIFtdfGVhYmNkICBzdGFydCAtIG5vIG1hdGNoLCBjb3B5IGUgdG8gdHJhbmxhdGVkIGJ1ZmZlcgorICAgICAgICAgKiBbZV18YWJjZCAgbWF0Y2ggcnVsZSAxIC0gY29weSBvdXRwdXQgJiBhZGp1c3QgY3Vyc29yCisgICAgICAgICAqIFtleHx5XWNkICBtYXRjaCBydWxlIDIgLSBjb3B5IG91dHB1dCAmIGFkanVzdCBjdXJzb3IKKyAgICAgICAgICogW2V4el18ZCAgIG5vIG1hdGNoLCBjb3B5IGQgdG8gdHJhbnNsaXRlcmF0ZWQgYnVmZmVyCisgICAgICAgICAqIFtleHpkXXwgICBkb25lCisgICAgICAgICAqLworICAgICAgICBleHBlY3QoImFiPnh8eTsiICsKKyAgICAgICAgICAgICAgICJ5Yz56IiwKKyAgICAgICAgICAgICAgICJlYWJjZCIsICJleHpkIik7CisKKyAgICAgICAgLyogQW5vdGhlciBzZXQgb2YgcnVsZXM6CisgICAgICAgICAqICAgIDEuIGFiPnh8eXphY3cKKyAgICAgICAgICogICAgMi4gemE+cQorICAgICAgICAgKiAgICAzLiBxYz5yCisgICAgICAgICAqICAgIDQuIGN3Pm4KKyAgICAgICAgICoKKyAgICAgICAgICogW118YWIgICAgICAgUnVsZSAxCisgICAgICAgICAqIFt4fHl6YWN3XSAgIE5vIG1hdGNoCisgICAgICAgICAqIFt4eXx6YWN3XSAgIFJ1bGUgMgorICAgICAgICAgKiBbeHlxfGN3XSAgICBSdWxlIDQKKyAgICAgICAgICogW3h5cW5dfCAgICAgRG9uZQorICAgICAgICAgKi8KKyAgICAgICAgZXhwZWN0KCJhYj54fHl6YWN3OyIgKworICAgICAgICAgICAgICAgInphPnE7IiArCisgICAgICAgICAgICAgICAicWM+cjsiICsKKyAgICAgICAgICAgICAgICJjdz5uIiwKKyAgICAgICAgICAgICAgICJhYiIsICJ4eXFuIik7CisKKyAgICAgICAgLyogVGVzdCBjYXRlZ29yaWVzCisgICAgICAgICAqLworICAgICAgICBUcmFuc2xpdGVyYXRvciB0ID0gbmV3IFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yKCI8SUQ+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJGR1bW15PVx1RTEwMDsiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJHZvd2VsPVthZWlvdUFFSU9VXTsiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJGx1PVs6THU6XTsiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJHZvd2VsIH0gJGx1ID4gJyEnOyIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIkdm93ZWwgPiAnJic7IiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIichJyB7ICRsdSA+ICdeJzsiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJGx1ID4gJyonOyIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhPkVSUk9SIik7CisgICAgICAgIGV4cGVjdCh0LCAiYWJjZGVmZ0FCQ0RFRkdVIiwgIiZiY2QmZmchXioqIV4qJiIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3QgaW5saW5lIHNldCBzeW50YXggYW5kIHNldCB2YXJpYWJsZSBzeW50YXguCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdElubGluZVNldCgpIHsKKyAgICAgICAgZXhwZWN0KCJ7IFs6TGw6XSB9IHggPiB5OyBbOkxsOl0gPiB6OyIsICJhQWJ4cSIsICJ6QXl6eiIpOworICAgICAgICBleHBlY3QoImFbMC05XWIgPiBxcnMiLCAiMWE3YjkiLCAiMXFyczkiKTsKKworICAgICAgICBleHBlY3QoIiRkaWdpdCA9IFswLTldOyIgKworICAgICAgICAgICAgICAgIiRhbHBoYSA9IFthLXpBLVpdOyIgKworICAgICAgICAgICAgICAgIiRhbHBoYW51bWVyaWMgPSBbJGRpZ2l0ICRhbHBoYV07IiArIC8vICoqKgorICAgICAgICAgICAgICAgIiRzcGVjaWFsID0gW14kYWxwaGFudW1lcmljXTsiICsgICAgIC8vICoqKgorICAgICAgICAgICAgICAgIiRhbHBoYW51bWVyaWMgPiAnLSc7IiArCisgICAgICAgICAgICAgICAiJHNwZWNpYWwgPiAnKic7IiwKKworICAgICAgICAgICAgICAgInRoeC0xMTM4IiwgIi0tLSotLS0tIik7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlIHNvbWUgaW52ZXJzZXMgYW5kIGNvbmZpcm0gdGhhdCB0aGV5IHdvcmsuICBXZSBoYXZlIHRvIGJlCisgICAgICogY2FyZWZ1bCBob3cgd2UgZG8gdGhpcywgc2luY2UgdGhlIGludmVyc2VzIHdpbGwgbm90IGJlIHRydWUKKyAgICAgKiBpbnZlcnNlcyAtLSB3ZSBjYW4ndCB0aHJvdyBhbnkgcmFuZG9tIHN0cmluZyBhdCB0aGUgY29tcG9zaXRpb24KKyAgICAgKiBvZiB0aGUgdHJhbnNsaXRlcmF0b3JzIGFuZCBleHBlY3QgdGhlIGlkZW50aXR5IGZ1bmN0aW9uLiAgRiB4CisgICAgICogRicgIT0gSS4gIEhvd2V2ZXIsIGlmIHdlIGFyZSBjYXJlZnVsIGFib3V0IHRoZSBpbnB1dCwgd2Ugd2lsbAorICAgICAqIGdldCB0aGUgZXhwZWN0ZWQgcmVzdWx0cy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0UnVsZUJhc2VkSW52ZXJzZSgpIHsKKyAgICAgICAgU3RyaW5nIFJVTEVTID0KKyAgICAgICAgICAgICJhYmM+enl4OyIgKworICAgICAgICAgICAgImFiPnl6OyIgKworICAgICAgICAgICAgImJjPnp4OyIgKworICAgICAgICAgICAgImNhPnh5OyIgKworICAgICAgICAgICAgImE+eDsiICsKKyAgICAgICAgICAgICJiPnk7IiArCisgICAgICAgICAgICAiYz56OyIgKworCisgICAgICAgICAgICAiYWJjPHp5eDsiICsKKyAgICAgICAgICAgICJhYjx5ejsiICsKKyAgICAgICAgICAgICJiYzx6eDsiICsKKyAgICAgICAgICAgICJjYTx4eTsiICsKKyAgICAgICAgICAgICJhPHg7IiArCisgICAgICAgICAgICAiYjx5OyIgKworICAgICAgICAgICAgImM8ejsiICsKKworICAgICAgICAgICAgIiI7CisKKyAgICAgICAgU3RyaW5nW10gREFUQSA9IHsKKyAgICAgICAgICAgIC8vIENhcmVmdWwgaGVyZSAtLSByYW5kb20gc3RyaW5ncyB3aWxsIG5vdCB3b3JrLiAgSWYgd2Uga2VlcAorICAgICAgICAgICAgLy8gdGhlIGxlZnQgc2lkZSB0byB0aGUgZG9tYWluIGFuZCB0aGUgcmlnaHQgc2lkZSB0byB0aGUgcmFuZ2UKKyAgICAgICAgICAgIC8vIHdlIHdpbGwgYmUgb2theSB0aG91Z2ggKGxlZnQsIGFiYzsgcmlnaHQgeHl6KS4KKyAgICAgICAgICAgICJhIiwgIngiLAorICAgICAgICAgICAgImFiY2FjYWIiLCAienl4eHh5eSIsCisgICAgICAgICAgICAiY2FjY2IiLCAieHl6enkiLAorICAgICAgICB9OworCisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIGZ3ZCA9IG5ldyBSdWxlQmFzZWRUcmFuc2xpdGVyYXRvcigiPElEPiIsIFJVTEVTKTsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgcmV2ID0gbmV3IFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yKCI8SUQ+IiwgUlVMRVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3IuUkVWRVJTRSwgbnVsbCk7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxEQVRBLmxlbmd0aDsgaSs9MikgeworICAgICAgICAgICAgZXhwZWN0KGZ3ZCwgREFUQVtpXSwgREFUQVtpKzFdKTsKKyAgICAgICAgICAgIGV4cGVjdChyZXYsIERBVEFbaSsxXSwgREFUQVtpXSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBCYXNpYyB0ZXN0IG9mIGtleWJvYXJkLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RLZXlib2FyZCgpIHsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgdCA9IG5ldyBSdWxlQmFzZWRUcmFuc2xpdGVyYXRvcigiPElEPiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBzY2g+WTsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyJwcz55OyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArImNoPng7IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsiYT5BOyIpOworICAgICAgICBTdHJpbmcgREFUQVtdID0geworICAgICAgICAgICAgLy8gaW5zZXJ0aW9uLCBidWZmZXIKKyAgICAgICAgICAgICJhIiwgIkEiLAorICAgICAgICAgICAgInAiLCAiQXAiLAorICAgICAgICAgICAgInMiLCAiQXBzIiwKKyAgICAgICAgICAgICJjIiwgIkFwc2MiLAorICAgICAgICAgICAgImEiLCAiQXljQSIsCisgICAgICAgICAgICAicHNjaCIsICJBeWNBWSIsCisgICAgICAgICAgICBudWxsLCAiQXljQVkiLCAvLyBudWxsIG1lYW5zIGZpbmlzaEtleWJvYXJkVHJhbnNsaXRlcmF0aW9uCisgICAgICAgIH07CisKKyAgICAgICAga2V5Ym9hcmRBdXgodCwgREFUQSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQmFzaWMgdGVzdCBvZiBrZXlib2FyZCB3aXRoIGN1cnNvci4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0S2V5Ym9hcmQyKCkgeworICAgICAgICBUcmFuc2xpdGVyYXRvciB0ID0gbmV3IFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yKCI8SUQ+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieWNoPlk7IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsicHM+fHk7IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsiY2g+eDsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyJhPkE7Iik7CisgICAgICAgIFN0cmluZyBEQVRBW10gPSB7CisgICAgICAgICAgICAvLyBpbnNlcnRpb24sIGJ1ZmZlcgorICAgICAgICAgICAgImEiLCAiQSIsCisgICAgICAgICAgICAicCIsICJBcCIsCisgICAgICAgICAgICAicyIsICJBcHMiLCAvLyBtb2RpZmllZCBmb3Igcm9sbGJhY2sgLSAiQXkiLAorICAgICAgICAgICAgImMiLCAiQXBzYyIsIC8vIG1vZGlmaWVkIGZvciByb2xsYmFjayAtICJBeWMiLAorICAgICAgICAgICAgImEiLCAiQXljQSIsCisgICAgICAgICAgICAicCIsICJBeWNBcCIsCisgICAgICAgICAgICAicyIsICJBeWNBcHMiLCAvLyBtb2RpZmllZCBmb3Igcm9sbGJhY2sgLSAiQXljQXkiLAorICAgICAgICAgICAgImMiLCAiQXljQXBzYyIsIC8vIG1vZGlmaWVkIGZvciByb2xsYmFjayAtICJBeWNBeWMiLAorICAgICAgICAgICAgImgiLCAiQXljQVkiLAorICAgICAgICAgICAgbnVsbCwgIkF5Y0FZIiwgLy8gbnVsbCBtZWFucyBmaW5pc2hLZXlib2FyZFRyYW5zbGl0ZXJhdGlvbgorICAgICAgICB9OworCisgICAgICAgIGtleWJvYXJkQXV4KHQsIERBVEEpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3Qga2V5Ym9hcmQgdHJhbnNsaXRlcmF0aW9uIHdpdGggYmFjay1yZXBsYWNlbWVudC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0S2V5Ym9hcmQzKCkgeworICAgICAgICAvLyBXZSB3YW50IHRoPnogYnV0IHQ+eS4gIEZ1cnRoZXJtb3JlLCBkdXJpbmcga2V5Ym9hcmQKKyAgICAgICAgLy8gdHJhbnNsaXRlcmF0aW9uIHdlIHdhbnQgdD55IHRoZW4geWg+eiBpZiB0LCB0aGVuIGggYXJlCisgICAgICAgIC8vIHR5cGVkLgorICAgICAgICBTdHJpbmcgUlVMRVMgPQorICAgICAgICAgICAgInQ+fHk7IiArCisgICAgICAgICAgICAieWg+ejsiICsKKyAgICAgICAgICAgICIiOworCisgICAgICAgIFN0cmluZ1tdIERBVEEgPSB7CisgICAgICAgICAgICAvLyBDb2x1bW4gMTogY2hhcmFjdGVycyB0byBhZGQgdG8gYnVmZmVyIChhcyBpZiB0eXBlZCkKKyAgICAgICAgICAgIC8vIENvbHVtbiAyOiBleHBlY3RlZCBhcHBlYXJhbmNlIG9mIGJ1ZmZlciBhZnRlcgorICAgICAgICAgICAgLy8gICAgICAgICAgIGtleWJvYXJkIHhsaXRlcmF0aW9uLgorICAgICAgICAgICAgImEiLCAiYSIsCisgICAgICAgICAgICAiYiIsICJhYiIsCisgICAgICAgICAgICAidCIsICJhYnQiLCAvLyBtb2RpZmllZCBmb3Igcm9sbGJhY2sgLSAiYWJ5IiwKKyAgICAgICAgICAgICJjIiwgImFieWMiLAorICAgICAgICAgICAgInQiLCAiYWJ5Y3QiLCAvLyBtb2RpZmllZCBmb3Igcm9sbGJhY2sgLSAiYWJ5Y3kiLAorICAgICAgICAgICAgImgiLCAiYWJ5Y3oiLAorICAgICAgICAgICAgbnVsbCwgImFieWN6IiwgLy8gbnVsbCBtZWFucyBmaW5pc2hLZXlib2FyZFRyYW5zbGl0ZXJhdGlvbgorICAgICAgICB9OworCisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQgPSBuZXcgUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3IoIjxJRD4iLCBSVUxFUyk7CisgICAgICAgIGtleWJvYXJkQXV4KHQsIERBVEEpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBrZXlib2FyZEF1eChUcmFuc2xpdGVyYXRvciB0LCBTdHJpbmdbXSBEQVRBKSB7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yLlBvc2l0aW9uIGluZGV4ID0gbmV3IFRyYW5zbGl0ZXJhdG9yLlBvc2l0aW9uKCk7CisgICAgICAgIFJlcGxhY2VhYmxlU3RyaW5nIHMgPSBuZXcgUmVwbGFjZWFibGVTdHJpbmcoKTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPERBVEEubGVuZ3RoOyBpKz0yKSB7CisgICAgICAgICAgICBTdHJpbmdCdWZmZXIgbG9nOworICAgICAgICAgICAgaWYgKERBVEFbaV0gIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGxvZyA9IG5ldyBTdHJpbmdCdWZmZXIocy50b1N0cmluZygpICsgIiArICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgREFUQVtpXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiIC0+ICIpOworICAgICAgICAgICAgICAgIHQudHJhbnNsaXRlcmF0ZShzLCBpbmRleCwgREFUQVtpXSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGxvZyA9IG5ldyBTdHJpbmdCdWZmZXIocy50b1N0cmluZygpICsgIiA9PiAiKTsKKyAgICAgICAgICAgICAgICB0LmZpbmlzaFRyYW5zbGl0ZXJhdGlvbihzLCBpbmRleCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBVdGlsaXR5LmZvcm1hdElucHV0KGxvZywgcywgaW5kZXgpOworICAgICAgICAgICAgaWYgKHMudG9TdHJpbmcoKS5lcXVhbHMoREFUQVtpKzFdKSkgeworICAgICAgICAgICAgICAgIGxvZ2xuKGxvZy50b1N0cmluZygpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6ICIgKyBsb2cudG9TdHJpbmcoKSArICIsIGV4cGVjdGVkICIgKyBEQVRBW2krMV0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLy8gTGF0aW4tQXJhYmljIGhhcyBiZWVuIHRlbXBvcmFyaWx5IHJlbW92ZWQgdW50aWwgaXQgY2FuIGJlCisgICAgLy8gZG9uZSBjb3JyZWN0bHkuCisKKy8vICBwdWJsaWMgdm9pZCBUZXN0QXJhYmljKCkgeworLy8gICAgICBTdHJpbmcgREFUQVtdID0geworLy8gICAgICAgICAgIkFyYWJpYyIsCisvLyAgICAgICAgICAgICAgIlx1MDYyYVx1MDYyYVx1MDY0NVx1MDYyYVx1MDYzOSAiKworLy8gICAgICAgICAgICAgICJcdTA2MjdcdTA2NDRcdTA2NDRcdTA2M2FcdTA2MjkgIisKKy8vICAgICAgICAgICAgICAiXHUwNjI3XHUwNjQ0XHUwNjM5XHUwNjMxXHUwNjI4XHUwNjI4XHUwNjRhXHUwNjI5ICIrCisvLyAgICAgICAgICAgICAgIlx1MDYyOFx1MDYyOFx1MDY0Nlx1MDYzOFx1MDY0NSAiKworLy8gICAgICAgICAgICAgICJcdTA2NDNcdTA2MmFcdTA2MjdcdTA2MjhcdTA2MjhcdTA2NGFcdTA2MjkgIisKKy8vICAgICAgICAgICAgICAiXHUwNjJjXHUwNjQ1XHUwNjRhXHUwNjQ0XHUwNjI5IgorLy8gICAgICB9OworCisvLyAgICAgIFRyYW5zbGl0ZXJhdG9yIHQgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgiTGF0aW4tQXJhYmljIik7CisvLyAgICAgIGZvciAoaW50IGk9MDsgaTxEQVRBLmxlbmd0aDsgaSs9MikgeworLy8gICAgICAgICAgZXhwZWN0KHQsIERBVEFbaV0sIERBVEFbaSsxXSk7CisvLyAgICAgIH0KKy8vICB9CisKKyAgICAvKioKKyAgICAgKiBDb21wb3NlIHRoZSBLYW5hIHRyYW5zbGl0ZXJhdG9yIGZvcndhcmQgYW5kIHJldmVyc2UgYW5kIHRyeQorICAgICAqIHNvbWUgc3RyaW5ncyB0aGF0IHNob3VsZCBjb21lIG91dCB1bmNoYW5nZWQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdENvbXBvdW5kS2FuYSgpIHsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgdCA9IG5ldyBDb21wb3VuZFRyYW5zbGl0ZXJhdG9yKCJMYXRpbi1LYXRha2FuYTtLYXRha2FuYS1MYXRpbiIpOworICAgICAgICBleHBlY3QodCwgImFhYWFhIiwgImFhYWFhIik7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29tcG9zZSB0aGUgaGV4IHRyYW5zbGl0ZXJhdG9ycyBmb3J3YXJkIGFuZCByZXZlcnNlLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RDb21wb3VuZEhleCgpIHsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgYSA9IFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKCJBbnktSGV4Iik7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIGIgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgiSGV4LUFueSIpOworICAgICAgICBUcmFuc2xpdGVyYXRvcltdIHRyYW5zID0geyBhLCBiIH07CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIGFiID0gbmV3IENvbXBvdW5kVHJhbnNsaXRlcmF0b3IodHJhbnMpOworCisgICAgICAgIC8vIERvIHNvbWUgYmFzaWMgdGVzdHMgb2YgYgorICAgICAgICBleHBlY3QoYiwgIlxcdTAwMzBcXHUwMDMxIiwgIjAxIik7CisKKyAgICAgICAgU3RyaW5nIHMgPSAiYWJjZGUiOworICAgICAgICBleHBlY3QoYWIsIHMsIHMpOworCisgICAgICAgIHRyYW5zID0gbmV3IFRyYW5zbGl0ZXJhdG9yW10geyBiLCBhIH07CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIGJhID0gbmV3IENvbXBvdW5kVHJhbnNsaXRlcmF0b3IodHJhbnMpOworICAgICAgICBSZXBsYWNlYWJsZVN0cmluZyBzdHIgPSBuZXcgUmVwbGFjZWFibGVTdHJpbmcocyk7CisgICAgICAgIGEudHJhbnNsaXRlcmF0ZShzdHIpOworICAgICAgICBleHBlY3QoYmEsIHN0ci50b1N0cmluZygpLCBzdHIudG9TdHJpbmcoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogRG8gc29tZSBiYXNpYyB0ZXN0cyBvZiBmaWx0ZXJpbmcuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEZpbHRlcmluZygpIHsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgaGV4ID0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoIkFueS1IZXgiKTsKKyAgICAgICAgaGV4LnNldEZpbHRlcihuZXcgVW5pY29kZUZpbHRlcigpIHsKKyAgICAgICAgICAgIHB1YmxpYyBib29sZWFuIGNvbnRhaW5zKGludCBjKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGMgIT0gJ2MnOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHVibGljIFN0cmluZyB0b1BhdHRlcm4oYm9vbGVhbiBlc2NhcGVVbnByaW50YWJsZSkgeworICAgICAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHB1YmxpYyBib29sZWFuIG1hdGNoZXNJbmRleFZhbHVlKGludCB2KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHVibGljIHZvaWQgYWRkTWF0Y2hTZXRUbyhVbmljb2RlU2V0IHRvVW5pb25Ubykge30KKyAgICAgICAgfSk7CisgICAgICAgIFN0cmluZyBzID0gImFiY2RlIjsKKyAgICAgICAgU3RyaW5nIG91dCA9IGhleC50cmFuc2xpdGVyYXRlKHMpOworICAgICAgICBTdHJpbmcgZXhwID0gIlxcdTAwNjFcXHUwMDYyY1xcdTAwNjRcXHUwMDY1IjsKKyAgICAgICAgaWYgKG91dC5lcXVhbHMoZXhwKSkgeworICAgICAgICAgICAgbG9nbG4oIk9rOiAgIFwiIiArIGV4cCArICJcIiIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbG9nbG4oIkZBSUw6IFwiIiArIG91dCArICJcIiwgd2FudGVkIFwiIiArIGV4cCArICJcIiIpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdCBhbmNob3JzCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEFuY2hvcnMoKSB7CisgICAgICAgIGV4cGVjdCgiXmFiICA+IDAxIDsiICsKKyAgICAgICAgICAgICAgICIgYWIgID4gfDggOyIgKworICAgICAgICAgICAgICAgIiAgYiAgPiBrIDsiICsKKyAgICAgICAgICAgICAgICIgOHgkID4gNDUgOyIgKworICAgICAgICAgICAgICAgIiA4eCAgPiA3NyA7IiwKKworICAgICAgICAgICAgICAgImFiYWJiYWJ4YWJ4IiwKKyAgICAgICAgICAgICAgICIwMThrNzc0NSIpOworICAgICAgICBleHBlY3QoIiRzID0gW3okXSA7IiArCisgICAgICAgICAgICAgICAiJHN7YWIgICAgPiAwMSA7IiArCisgICAgICAgICAgICAgICAiICAgYWIgICAgPiB8OCA7IiArCisgICAgICAgICAgICAgICAiICAgIGIgICAgPiBrIDsiICsKKyAgICAgICAgICAgICAgICIgICA4eH0kcyA+IDQ1IDsiICsKKyAgICAgICAgICAgICAgICIgICA4eCAgICA+IDc3IDsiLAorCisgICAgICAgICAgICAgICAiYWJ6YWJhYmJhYnh6YWJ4YWJ4IiwKKyAgICAgICAgICAgICAgICIwMXowMThrNDV6MDF4NDUiKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXN0IHBhdHRlcm4gcXVvdGluZyBhbmQgZXNjYXBlIG1lY2hhbmlzbXMuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdFBhdHRlcm5RdW90aW5nKCkgeworICAgICAgICAvLyBBcnJheSBvZiAzbiBpdGVtcworICAgICAgICAvLyBFYWNoIGl0ZW0gaXMgPHJ1bGVzPiwgPGlucHV0PiwgPGV4cGVjdGVkIG91dHB1dD4KKyAgICAgICAgU3RyaW5nW10gREFUQSA9IHsKKyAgICAgICAgICAgICJcdTRFMDE+J1ttYWxlIGFkdWx0XSciLCAiXHU0RTAxIiwgIlttYWxlIGFkdWx0XSIsCisgICAgICAgIH07CisKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPERBVEEubGVuZ3RoOyBpKz0zKSB7CisgICAgICAgICAgICBsb2dsbigiUGF0dGVybjogIiArIFV0aWxpdHkuZXNjYXBlKERBVEFbaV0pKTsKKyAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQgPSBuZXcgUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3IoIjxJRD4iLCBEQVRBW2ldKTsKKyAgICAgICAgICAgIGV4cGVjdCh0LCBEQVRBW2krMV0sIERBVEFbaSsyXSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZWdyZXNzaW9uIHRlc3QgZm9yIGJ1Z3MgZm91bmQgaW4gR3JlZWsgdHJhbnNsaXRlcmF0aW9uLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RKMjc3KCkgeworICAgICAgICBUcmFuc2xpdGVyYXRvciBnbCA9IFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKCJHcmVlay1MYXRpbjsgTkZEOyBbOk06XVJlbW92ZTsgTkZDIik7CisKKyAgICAgICAgY2hhciBzaWdtYSA9IChjaGFyKTB4M0MzOworICAgICAgICBjaGFyIHVwc2lsb24gPSAoY2hhcikweDNDNTsKKyAgICAgICAgY2hhciBudSA9IChjaGFyKTB4M0JEOworICAgICAgICAvLyBub3QgdXNlZCBjaGFyIFBISSA9IChjaGFyKTB4M0E2OworICAgICAgICBjaGFyIGFscGhhID0gKGNoYXIpMHgzQjE7CisgICAgICAgIC8vIG5vdCB1c2VkIGNoYXIgb21lZ2EgPSAoY2hhcikweDNDOTsKKyAgICAgICAgLy8gbm90IHVzZWQgY2hhciBvbWljcm9uID0gKGNoYXIpMHgzQkY7CisgICAgICAgIC8vIG5vdCB1c2VkIGNoYXIgZXBzaWxvbiA9IChjaGFyKTB4M0I1OworCisgICAgICAgIC8vIHNpZ21hIHVwc2lsb24gbnUgLT4gc3luCisgICAgICAgIFN0cmluZ0J1ZmZlciBidWYgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIGJ1Zi5hcHBlbmQoc2lnbWEpLmFwcGVuZCh1cHNpbG9uKS5hcHBlbmQobnUpOworICAgICAgICBTdHJpbmcgc3luID0gYnVmLnRvU3RyaW5nKCk7CisgICAgICAgIGV4cGVjdChnbCwgc3luLCAic3luIik7CisKKyAgICAgICAgLy8gc2lnbWEgYWxwaGEgdXBzaWxvbiBudSAtPiBzYXVuCisgICAgICAgIGJ1Zi5zZXRMZW5ndGgoMCk7CisgICAgICAgIGJ1Zi5hcHBlbmQoc2lnbWEpLmFwcGVuZChhbHBoYSkuYXBwZW5kKHVwc2lsb24pLmFwcGVuZChudSk7CisgICAgICAgIFN0cmluZyBzYXluID0gYnVmLnRvU3RyaW5nKCk7CisgICAgICAgIGV4cGVjdChnbCwgc2F5biwgInNhdW4iKTsKKworICAgICAgICAvLyBBZ2FpbiwgdXNpbmcgYSBzbWFsbGVyIHJ1bGUgc2V0CisgICAgICAgIFN0cmluZyBydWxlcyA9CisgICAgICAgICAgICAgICAgICAgICIkYWxwaGEgICA9IFx1MDNCMTsiICsKKyAgICAgICAgICAgICAgICAgICAgIiRudSAgICAgID0gXHUwM0JEOyIgKworICAgICAgICAgICAgICAgICAgICAiJHNpZ21hICAgPSBcdTAzQzM7IiArCisgICAgICAgICAgICAgICAgICAgICIkeXBzaWxvbiA9IFx1MDNDNTsiICsKKyAgICAgICAgICAgICAgICAgICAgIiR2b3dlbCAgID0gW2FlaW91QUVJT1UkYWxwaGEkeXBzaWxvbl07IiArCisgICAgICAgICAgICAgICAgICAgICJzIDw+ICAgICAgICAgICAkc2lnbWE7IiArCisgICAgICAgICAgICAgICAgICAgICJhIDw+ICAgICAgICAgICAkYWxwaGE7IiArCisgICAgICAgICAgICAgICAgICAgICJ1IDw+ICAkdm93ZWwgeyAkeXBzaWxvbjsiICsKKyAgICAgICAgICAgICAgICAgICAgInkgPD4gICAgICAgICAgICR5cHNpbG9uOyIgKworICAgICAgICAgICAgICAgICAgICAibiA8PiAgICAgICAgICAgJG51OyI7CisgICAgICAgIFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yIG1pbmkgPSBuZXcgUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3IKKyAgICAgICAgICAgICgibWluaSIsIHJ1bGVzLCBUcmFuc2xpdGVyYXRvci5SRVZFUlNFLCBudWxsKTsKKyAgICAgICAgZXhwZWN0KG1pbmksIHN5biwgInN5biIpOworICAgICAgICBleHBlY3QobWluaSwgc2F5biwgInNhdW4iKTsKKworLy98ICAgIC8vIFRyYW5zbGl0ZXJhdGUgdGhlIEdyZWVrIGxvY2FsZSBkYXRhCisvL3wgICAgTG9jYWxlIGVsKCJlbCIpOworLy98ICAgIERhdGVGb3JtYXRTeW1ib2xzIHN5bXMoZWwsIHN0YXR1cyk7CisvL3wgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7IGVycmxuKCJGQUlMOiBUcmFuc2xpdGVyYXRvciBjb25zdHJ1Y3RvciBmYWlsZWQiKTsgcmV0dXJuOyB9CisvL3wgICAgaW50MzJfdCBpLCBjb3VudDsKKy8vfCAgICBjb25zdCBVbmljb2RlU3RyaW5nKiBkYXRhID0gc3ltcy5nZXRNb250aHMoY291bnQpOworLy98ICAgIGZvciAoaT0wOyBpPGNvdW50OyArK2kpIHsKKy8vfCAgICAgICAgaWYgKGRhdGFbaV0ubGVuZ3RoKCkgPT0gMCkgeworLy98ICAgICAgICAgICAgY29udGludWU7CisvL3wgICAgICAgIH0KKy8vfCAgICAgICAgVW5pY29kZVN0cmluZyBvdXQoZGF0YVtpXSk7CisvL3wgICAgICAgIGdsLT50cmFuc2xpdGVyYXRlKG91dCk7CisvL3wgICAgICAgIGJvb2xfdCBvayA9IFRSVUU7CisvL3wgICAgICAgIGlmIChkYXRhW2ldLmxlbmd0aCgpID49IDIgJiYgb3V0Lmxlbmd0aCgpID49IDIgJiYKKy8vfCAgICAgICAgICAgIHVfaXN1cHBlcihkYXRhW2ldLmNoYXJBdCgwKSkgJiYgdV9pc2xvd2VyKGRhdGFbaV0uY2hhckF0KDEpKSkgeworLy98ICAgICAgICAgICAgaWYgKCEodV9pc3VwcGVyKG91dC5jaGFyQXQoMCkpICYmIHVfaXNsb3dlcihvdXQuY2hhckF0KDEpKSkpIHsKKy8vfCAgICAgICAgICAgICAgICBvayA9IEZBTFNFOworLy98ICAgICAgICAgICAgfQorLy98ICAgICAgICB9CisvL3wgICAgICAgIGlmIChvaykgeworLy98ICAgICAgICAgICAgbG9nbG4ocHJldHRpZnkoZGF0YVtpXSArICIgLT4gIiArIG91dCkpOworLy98ICAgICAgICB9IGVsc2UgeworLy98ICAgICAgICAgICAgZXJybG4oVW5pY29kZVN0cmluZygiRkFJTDogIikgKyBwcmV0dGlmeShkYXRhW2ldICsgIiAtPiAiICsgb3V0KSk7CisvL3wgICAgICAgIH0KKy8vfCAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUHJlZml4LCBzdWZmaXggc3VwcG9ydCBpbiBoZXggdHJhbnNsaXRlcmF0b3JzCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEoyNDMoKSB7CisgICAgICAgIC8vIFRlc3QgZGVmYXVsdCBIZXgtQW55LCB3aGljaCBzaG91bGQgaGFuZGxlCisgICAgICAgIC8vIFxcdSwgXFxVLCB1KywgYW5kIFUrCisgICAgICAgIEhleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yIGhleCA9IG5ldyBIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvcigpOworICAgICAgICBleHBlY3QoaGV4LCAiXFx1MDA0MStcXFUwMDQyLHUrMDA0M3V1KzAwNDR6IiwgIkErQixDdUR6Iik7CisKKyAgICAgICAgLy8gVHJ5IGEgY3VzdG9tIEhleC1BbnkKKyAgICAgICAgLy8gXFx1WFhYWCBhbmQgJiN4WFhYWDsKKyAgICAgICAgSGV4VG9Vbmljb2RlVHJhbnNsaXRlcmF0b3IgaGV4MiA9IG5ldyBIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvcigiXFxcXHUjIyMwOyZcXCN4IyMjMFxcOyIpOworICAgICAgICBleHBlY3QoaGV4MiwgIlxcdTYxXFx1MDYyXFx1MDA2M1xcdTAwNjQ1XFx1NjZ4JiN4MzA7JiN4MDMxOyYjeDAwMzI7JiN4MDAwMzM7IiwKKyAgICAgICAgICAgICAgICJhYmNkNWZ4MDEyJiN4MDAwMzM7Iik7CisKKyAgICAgICAgLy8gVHJ5IGN1c3RvbSBBbnktSGV4IChkZWZhdWx0IGlzIHRlc3RlZCBlbHNld2hlcmUpCisgICAgICAgIFVuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yIGhleDMgPSBuZXcgVW5pY29kZVRvSGV4VHJhbnNsaXRlcmF0b3IoIiZcXCN4IyMjMDsiKTsKKyAgICAgICAgZXhwZWN0KGhleDMsICIwMTIiLCAiJiN4MzA7JiN4MzE7JiN4MzI7Iik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdEozMjkoKSB7CisKKyAgICAgICAgT2JqZWN0W10gREFUQSA9IHsKKyAgICAgICAgICAgIG5ldyBCb29sZWFuKGZhbHNlKSwgImEgPiBiOyBjID4gZCIsCisgICAgICAgICAgICBuZXcgQm9vbGVhbih0cnVlKSwgICJhID4gYjsgbm8gb3BlcmF0b3I7IGMgPiBkIiwKKyAgICAgICAgfTsKKworICAgICAgICBmb3IgKGludCBpPTA7IGk8REFUQS5sZW5ndGg7IGkrPTIpIHsKKyAgICAgICAgICAgIFN0cmluZyBlcnIgPSBudWxsOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBUcmFuc2xpdGVyYXRvciB0ID0gbmV3CisgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yKCI8SUQ+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0cmluZykgREFUQVtpKzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xpdGVyYXRvci5GT1JXQVJELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgZXJyID0gZS5nZXRNZXNzYWdlKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBib29sZWFuIGdvdEVycm9yID0gKGVyciAhPSBudWxsKTsKKyAgICAgICAgICAgIFN0cmluZyBkZXNjID0gKFN0cmluZykgREFUQVtpKzFdICsKKyAgICAgICAgICAgICAgICAoZ290RXJyb3IgPyAoIiAtPiBlcnJvcjogIiArIGVycikgOiAiIC0+IG5vIGVycm9yIik7CisgICAgICAgICAgICBpZiAoKGVyciAhPSBudWxsKSA9PSAoKEJvb2xlYW4pREFUQVtpXSkuYm9vbGVhblZhbHVlKCkpIHsKKyAgICAgICAgICAgICAgICBsb2dsbigiT2s6ICAgIiArIGRlc2MpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogIiArIGRlc2MpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdCBzZWdtZW50cyBhbmQgc2VnbWVudCByZWZlcmVuY2VzLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RTZWdtZW50cygpIHsKKyAgICAgICAgLy8gQXJyYXkgb2YgM24gaXRlbXMKKyAgICAgICAgLy8gRWFjaCBpdGVtIGlzIDxydWxlcz4sIDxpbnB1dD4sIDxleHBlY3RlZCBvdXRwdXQ+CisgICAgICAgIFN0cmluZ1tdIERBVEEgPSB7CisgICAgICAgICAgICAiKFthLXpdKSAnLicgKFswLTldKSA+ICQyICctJyAkMSIsCisgICAgICAgICAgICAiYWJjLjEyMy54eXouNDU2IiwKKyAgICAgICAgICAgICJhYjEtYzIzLnh5NC16NTYiLAorICAgICAgICB9OworCisgICAgICAgIGZvciAoaW50IGk9MDsgaTxEQVRBLmxlbmd0aDsgaSs9MykgeworICAgICAgICAgICAgbG9nbG4oIlBhdHRlcm46ICIgKyBVdGlsaXR5LmVzY2FwZShEQVRBW2ldKSk7CisgICAgICAgICAgICBUcmFuc2xpdGVyYXRvciB0ID0gbmV3IFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yKCI8SUQ+IiwgREFUQVtpXSk7CisgICAgICAgICAgICBleHBlY3QodCwgREFUQVtpKzFdLCBEQVRBW2krMl0pOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdCBjdXJzb3IgcG9zaXRpb25pbmcgb3V0c2lkZSBvZiB0aGUga2V5CisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEN1cnNvck9mZnNldCgpIHsKKyAgICAgICAgLy8gQXJyYXkgb2YgM24gaXRlbXMKKyAgICAgICAgLy8gRWFjaCBpdGVtIGlzIDxydWxlcz4sIDxpbnB1dD4sIDxleHBlY3RlZCBvdXRwdXQ+CisgICAgICAgIFN0cmluZ1tdIERBVEEgPSB7CisgICAgICAgICAgICAicHJlIHthbHBoYX0gcG9zdCA+IHwgQCBBTFBIQSA7IiArCisgICAgICAgICAgICAiZUFMUEhBID4gYmV0YSA7IiArCisgICAgICAgICAgICAicHJlIHtiZXRhfSBwb3N0ID4gQkVUQSBAQCB8IDsiICsKKyAgICAgICAgICAgICJwb3N0ID4geHl6IiwKKworICAgICAgICAgICAgInByZWFscGhhcG9zdCBwcmViZXRhcG9zdCIsCisgICAgICAgICAgICAicHJiZXRheHl6IHByZUJFVEFwb3N0IiwKKyAgICAgICAgfTsKKworICAgICAgICBmb3IgKGludCBpPTA7IGk8REFUQS5sZW5ndGg7IGkrPTMpIHsKKyAgICAgICAgICAgIGxvZ2xuKCJQYXR0ZXJuOiAiICsgVXRpbGl0eS5lc2NhcGUoREFUQVtpXSkpOworICAgICAgICAgICAgVHJhbnNsaXRlcmF0b3IgdCA9IG5ldyBSdWxlQmFzZWRUcmFuc2xpdGVyYXRvcigiPElEPiIsIERBVEFbaV0pOworICAgICAgICAgICAgZXhwZWN0KHQsIERBVEFbaSsxXSwgREFUQVtpKzJdKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3QgemVybyBsZW5ndGggYW5kID4gMSBjaGFyIGxlbmd0aCB2YXJpYWJsZSB2YWx1ZXMuICBUZXN0CisgICAgICogdXNlIG9mIHZhcmlhYmxlIHJlZnMgaW4gVW5pY29kZVNldHMuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEFyYml0cmFyeVZhcmlhYmxlVmFsdWVzKCkgeworICAgICAgICAvLyBBcnJheSBvZiAzbiBpdGVtcworICAgICAgICAvLyBFYWNoIGl0ZW0gaXMgPHJ1bGVzPiwgPGlucHV0PiwgPGV4cGVjdGVkIG91dHB1dD4KKyAgICAgICAgU3RyaW5nW10gREFUQSA9IHsKKyAgICAgICAgICAgICIkYWJlID0gYWI7IiArCisgICAgICAgICAgICAiJHBhdCA9IHhbeVldejsiICsKKyAgICAgICAgICAgICIkbGwgID0gJ2Eteic7IiArCisgICAgICAgICAgICAiJGxsWiA9IFskbGxdOyIgKworICAgICAgICAgICAgIiRsbFkgPSBbJGxsJHBhdF07IiArCisgICAgICAgICAgICAiJGVtcCA9IDsiICsKKworICAgICAgICAgICAgIiRhYmUgPiBBQkU7IiArCisgICAgICAgICAgICAiJHBhdCA+IEVORDsiICsKKyAgICAgICAgICAgICIkbGxaID4gMTsiICsKKyAgICAgICAgICAgICIkbGxZID4gMjsiICsKKyAgICAgICAgICAgICI3JGVtcCA4ID4gOTsiICsKKyAgICAgICAgICAgICIiLAorCisgICAgICAgICAgICAiYWIgeFl6eHl6IHN0WTc4IiwKKyAgICAgICAgICAgICJBQkUgRU5ERU5EIDExMjkiLAorICAgICAgICB9OworCisgICAgICAgIGZvciAoaW50IGk9MDsgaTxEQVRBLmxlbmd0aDsgaSs9MykgeworICAgICAgICAgICAgbG9nbG4oIlBhdHRlcm46ICIgKyBVdGlsaXR5LmVzY2FwZShEQVRBW2ldKSk7CisgICAgICAgICAgICBUcmFuc2xpdGVyYXRvciB0ID0gbmV3IFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yKCI8SUQ+IiwgREFUQVtpXSk7CisgICAgICAgICAgICBleHBlY3QodCwgREFUQVtpKzFdLCBEQVRBW2krMl0pOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uZmlybSB0aGF0IHRoZSBjb250ZXh0U3RhcnQsIGNvbnRleHRMaW1pdCwgc3RhcnQsIGFuZCBsaW1pdAorICAgICAqIGJlaGF2ZSBjb3JyZWN0bHkuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdFBvc2l0aW9uSGFuZGxpbmcoKSB7CisgICAgICAgIC8vIEFycmF5IG9mIDNuIGl0ZW1zCisgICAgICAgIC8vIEVhY2ggaXRlbSBpcyA8cnVsZXM+LCA8aW5wdXQ+LCA8ZXhwZWN0ZWQgb3V0cHV0PgorICAgICAgICBTdHJpbmdbXSBEQVRBID0geworICAgICAgICAgICAgImF7dH0gPiBTUyA7IHt0fWIgPiBVVSA7IHt0fSA+IFRUIDsiLAorICAgICAgICAgICAgInh0YXQgdHh0YiIsIC8vIHBvcyAwLDksMCw5CisgICAgICAgICAgICAieFRUYVNTIFRUeFVVYiIsCisKKyAgICAgICAgICAgICJhe3R9ID4gU1MgOyB7dH1iID4gVVUgOyB7dH0gPiBUVCA7IiwKKyAgICAgICAgICAgICJ4dGF0IHR4dGIiLCAvLyBwb3MgMiw5LDMsOAorICAgICAgICAgICAgInh0YVNTIFRUeFVVYiIsCisKKyAgICAgICAgICAgICJhe3R9ID4gU1MgOyB7dH1iID4gVVUgOyB7dH0gPiBUVCA7IiwKKyAgICAgICAgICAgICJ4dGF0IHR4dGIiLCAvLyBwb3MgMyw4LDMsOAorICAgICAgICAgICAgInh0YVRUIFRUeFRUYiIsCisgICAgICAgIH07CisKKyAgICAgICAgLy8gQXJyYXkgb2YgNG4gcG9zaXRpb25zIC0tIHRoZXNlIGdvIHdpdGggdGhlIERBVEEgYXJyYXkKKyAgICAgICAgLy8gVGhleSBhcmU6IGNvbnRleHRTdGFydCwgY29udGV4dExpbWl0LCBzdGFydCwgbGltaXQKKyAgICAgICAgaW50W10gUE9TID0geworICAgICAgICAgICAgMCwgOSwgMCwgOSwKKyAgICAgICAgICAgIDIsIDksIDMsIDgsCisgICAgICAgICAgICAzLCA4LCAzLCA4LAorICAgICAgICB9OworCisgICAgICAgIGludCBuID0gREFUQS5sZW5ndGgvMzsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPG47IGkrKykgeworICAgICAgICAgICAgVHJhbnNsaXRlcmF0b3IgdCA9IG5ldyBSdWxlQmFzZWRUcmFuc2xpdGVyYXRvcigiPElEPiIsIERBVEFbMyppXSk7CisgICAgICAgICAgICBUcmFuc2xpdGVyYXRvci5Qb3NpdGlvbiBwb3MgPSBuZXcgVHJhbnNsaXRlcmF0b3IuUG9zaXRpb24oCisgICAgICAgICAgICAgICAgUE9TWzQqaV0sIFBPU1s0KmkrMV0sIFBPU1s0KmkrMl0sIFBPU1s0KmkrM10pOworICAgICAgICAgICAgUmVwbGFjZWFibGVTdHJpbmcgcnNvdXJjZSA9IG5ldyBSZXBsYWNlYWJsZVN0cmluZyhEQVRBWzMqaSsxXSk7CisgICAgICAgICAgICB0LnRyYW5zbGl0ZXJhdGUocnNvdXJjZSwgcG9zKTsKKyAgICAgICAgICAgIHQuZmluaXNoVHJhbnNsaXRlcmF0aW9uKHJzb3VyY2UsIHBvcyk7CisgICAgICAgICAgICBTdHJpbmcgcmVzdWx0ID0gcnNvdXJjZS50b1N0cmluZygpOworICAgICAgICAgICAgU3RyaW5nIGV4cCA9IERBVEFbMyppKzJdOworICAgICAgICAgICAgZXhwZWN0QXV4KFV0aWxpdHkuZXNjYXBlKERBVEFbMyppXSksCisgICAgICAgICAgICAgICAgICAgICAgREFUQVszKmkrMV0sCisgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5lcXVhbHMoZXhwKSwKKyAgICAgICAgICAgICAgICAgICAgICBleHApOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdCB0aGUgSGlyYWdhbmEtS2F0YWthbmEgdHJhbnNsaXRlcmF0b3IuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEhpcmFnYW5hS2F0YWthbmEoKSB7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIGhrID0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoIkhpcmFnYW5hLUthdGFrYW5hIik7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIGtoID0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoIkthdGFrYW5hLUhpcmFnYW5hIik7CisKKyAgICAgICAgLy8gQXJyYXkgb2YgM24gaXRlbXMKKyAgICAgICAgLy8gRWFjaCBpdGVtIGlzICJoayJ8ImtoInwiYm90aCIsIDxIaXJhZ2FuYT4sIDxLYXRha2FuYT4KKyAgICAgICAgU3RyaW5nW10gREFUQSA9IHsKKyAgICAgICAgICAgICJib3RoIiwKKyAgICAgICAgICAgICJcdTMwNDJcdTMwOTBcdTMwOTlcdTMwOTJcdTMwNTAiLAorICAgICAgICAgICAgIlx1MzBBMlx1MzBGOFx1MzBGMlx1MzBCMCIsCisKKyAgICAgICAgICAgICJraCIsCisgICAgICAgICAgICAiXHUzMDdDXHUzMDUxXHUzMDYwXHUzMDQyXHUzMDkzXHUzMEZDIiwKKyAgICAgICAgICAgICJcdTMwRENcdTMwRjZcdTMwQzBcdTMwRkNcdTMwRjNcdTMwRkMiLAorICAgICAgICB9OworCisgICAgICAgIGZvciAoaW50IGk9MDsgaTxEQVRBLmxlbmd0aDsgaSs9MykgeworICAgICAgICAgICAgc3dpdGNoIChEQVRBW2ldLmNoYXJBdCgwKSkgeworICAgICAgICAgICAgY2FzZSAnaCc6IC8vIEhpcmFnYW5hLUthdGFrYW5hCisgICAgICAgICAgICAgICAgZXhwZWN0KGhrLCBEQVRBW2krMV0sIERBVEFbaSsyXSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdrJzogLy8gS2F0YWthbmEtSGlyYWdhbmEKKyAgICAgICAgICAgICAgICBleHBlY3Qoa2gsIERBVEFbaSsyXSwgREFUQVtpKzFdKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ2InOiAvLyBib3RoCisgICAgICAgICAgICAgICAgZXhwZWN0KGhrLCBEQVRBW2krMV0sIERBVEFbaSsyXSk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGtoLCBEQVRBW2krMl0sIERBVEFbaSsxXSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RDb3B5SjQ3NigpIHsKKyAgICAgICAgLy8gVGhpcyBpcyBhIEMrKy1vbmx5IGNvcHkgY29uc3RydWN0b3IgdGVzdAorICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3QgaW50ZXItSW5kaWMgdHJhbnNsaXRlcmF0b3JzLiAgVGhlc2UgYXJlIGNvbXBvc2VkLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RJbnRlckluZGljKCkgeworICAgICAgICBTdHJpbmcgSUQgPSAiRGV2YW5hZ2FyaS1HdWphcmF0aSI7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIGRnID0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoSUQpOworICAgICAgICBpZiAoZGcgPT0gbnVsbCkgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IGdldEluc3RhbmNlKCIgKyBJRCArICIpIHJldHVybmVkIG51bGwiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBTdHJpbmcgaWQgPSBkZy5nZXRJRCgpOworICAgICAgICBpZiAoIWlkLmVxdWFscyhJRCkpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBnZXRJbnN0YW5jZSgiICsgSUQgKyAiKS5nZXRJRCgpID0+ICIgKyBpZCk7CisgICAgICAgIH0KKyAgICAgICAgU3RyaW5nIGRldiA9ICJcdTA5MDFcdTA5MEJcdTA5MjUiOworICAgICAgICBTdHJpbmcgZ3VqID0gIlx1MEE4MVx1MEE4Qlx1MEFBNSI7CisgICAgICAgIGV4cGVjdChkZywgZGV2LCBndWopOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3QgZmlsdGVyIHN5bnRheCBpbiBJRHMuIChKMjMpCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEZpbHRlcklEcygpIHsKKyAgICAgICAgU3RyaW5nW10gREFUQSA9IHsKKyAgICAgICAgICAgICJbYWVpb3VdQW55LUhleCIsIC8vIElECisgICAgICAgICAgICAiW2FlaW91XUhleC1BbnkiLCAvLyBleHBlY3RlZCBpbnZlcnNlIElECisgICAgICAgICAgICAicXVpenppY2FsIiwgICAgICAvLyBzcmMKKyAgICAgICAgICAgICJxXFx1MDA3NVxcdTAwNjl6elxcdTAwNjljXFx1MDA2MWwiLCAvLyBleHBlY3RlZCBJRC50cmFuc2xpdChzcmMpCisKKyAgICAgICAgICAgICJbYWVpb3VdQW55LUhleDtbXjVdSGV4LUFueSIsCisgICAgICAgICAgICAiW141XUFueS1IZXg7W2FlaW91XUhleC1BbnkiLAorICAgICAgICAgICAgInF1aXp6aWNhbCIsCisgICAgICAgICAgICAicVxcdTAwNzVpenppY2FsIiwKKworICAgICAgICAgICAgIlthYmNdTnVsbCIsCisgICAgICAgICAgICAiW2FiY11OdWxsIiwKKyAgICAgICAgICAgICJ4eXoiLAorICAgICAgICAgICAgInh5eiIsCisgICAgICAgIH07CisKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPERBVEEubGVuZ3RoOyBpKz00KSB7CisgICAgICAgICAgICBTdHJpbmcgSUQgPSBEQVRBW2ldOworICAgICAgICAgICAgVHJhbnNsaXRlcmF0b3IgdCA9IFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKElEKTsKKyAgICAgICAgICAgIGV4cGVjdCh0LCBEQVRBW2krMl0sIERBVEFbaSszXSk7CisKKyAgICAgICAgICAgIC8vIENoZWNrIHRoZSBJRAorICAgICAgICAgICAgaWYgKCFJRC5lcXVhbHModC5nZXRJRCgpKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBnZXRJbnN0YW5jZSgiICsgSUQgKyAiKS5nZXRJRCgpID0+ICIgKworICAgICAgICAgICAgICAgICAgICAgIHQuZ2V0SUQoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIENoZWNrIHRoZSBpbnZlcnNlCisgICAgICAgICAgICBTdHJpbmcgdUlEID0gREFUQVtpKzFdOworICAgICAgICAgICAgVHJhbnNsaXRlcmF0b3IgdSA9IHQuZ2V0SW52ZXJzZSgpOworICAgICAgICAgICAgaWYgKHUgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiAiICsgSUQgKyAiLmdldEludmVyc2UoKSByZXR1cm5lZCBOVUxMIik7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCF1LmdldElEKCkuZXF1YWxzKHVJRCkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogIiArIElEICsgIi5nZXRJbnZlcnNlKCkuZ2V0SUQoKSA9PiAiICsKKyAgICAgICAgICAgICAgICAgICAgICB1LmdldElEKCkgKyAiLCBleHBlY3RlZCAiICsgdUlEKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3QgdGhlIGNhc2UgbWFwcGluZyB0cmFuc2xpdGVyYXRvcnMuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdENhc2VNYXAoKSB7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHRvVXBwZXIgPQorICAgICAgICAgICAgVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoIkFueS1VcHBlclteeHl6WFlaXSIpOworICAgICAgICBUcmFuc2xpdGVyYXRvciB0b0xvd2VyID0KKyAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKCJBbnktTG93ZXJbXnh5elhZWl0iKTsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgdG9UaXRsZSA9CisgICAgICAgICAgICBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgiQW55LVRpdGxlW154eXpYWVpdIik7CisKKyAgICAgICAgZXhwZWN0KHRvVXBwZXIsICJUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBlZCBvdmVyIHRoZSBsYXp5IGRvZ3MuIiwKKyAgICAgICAgICAgICAgICJUSEUgUVVJQ0sgQlJPV04gRk94IEpVTVBFRCBPVkVSIFRIRSBMQXp5IERPR1MuIik7CisgICAgICAgIGV4cGVjdCh0b0xvd2VyLCAiVGhlIHF1SWNrIGJyb3duIGZPWCBqVU1QRUQgT1ZFUiBUSEUgTEF6WSBkb2dzLiIsCisgICAgICAgICAgICAgICAidGhlIHF1aWNrIGJyb3duIGZvWCBqdW1wZWQgb3ZlciB0aGUgbGF6WSBkb2dzLiIpOworICAgICAgICBleHBlY3QodG9UaXRsZSwgInRoZSBxdWljayBicm93biBmb1ggY2FOJ1QganVtcCBvdmVyIHRoZSBsYVp5IGRvZ3MuIiwKKyAgICAgICAgICAgICAgICJUaGUgUXVpY2sgQnJvd24gRm9YIENhbid0IEp1bXAgT3ZlciBUaGUgTGFaeSBEb2dzLiIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3QgdGhlIG5hbWUgbWFwcGluZyB0cmFuc2xpdGVyYXRvcnMuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdE5hbWVNYXAoKSB7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHVuaTJuYW1lID0KKyAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKCJBbnktTmFtZVteYWJjXSIpOworICAgICAgICBUcmFuc2xpdGVyYXRvciBuYW1lMnVuaSA9CisgICAgICAgICAgICBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgiTmFtZS1BbnkiKTsKKworICAgICAgICBleHBlY3QodW5pMm5hbWUsICJcdTAwQTBhYmNcdTRFMDFcdTAwQjVcdTBBODFcdUZGRkRcdTAwMDRcdTAwMDlcdTAwODFcdUZGRkYiLAorICAgICAgICAgICAgICAgIlxcTntOTy1CUkVBSyBTUEFDRX1hYmNcXE57Q0pLIFVOSUZJRUQgSURFT0dSQVBILTRFMDF9XFxOe01JQ1JPIFNJR059XFxOe0dVSkFSQVRJIFNJR04gQ0FORFJBQklORFV9XFxOe1JFUExBQ0VNRU5UIENIQVJBQ1RFUn1cXE57RU5EIE9GIFRSQU5TTUlTU0lPTn1cXE57Q0hBUkFDVEVSIFRBQlVMQVRJT059XFxOezxjb250cm9sLTAwODE+fVxcTns8bm9uY2hhcmFjdGVyLUZGRkY+fSIpOworICAgICAgICBleHBlY3QobmFtZTJ1bmksICJ7XFxOIHsgTk8tQlJFQUsgU1BBQ0V9YWJjXFxOeyAgQ0pLIFVOSUZJRUQgIElERU9HUkFQSC00RTAxICB9XFxOe3hcXE57TUlDUk8gU0lHTn1cXE57R1VKQVJBVEkgU0lHTiBDQU5EUkFCSU5EVX1cXE57UkVQTEFDRU1FTlQgQ0hBUkFDVEVSfVxcTntFTkQgT0YgVFJBTlNNSVNTSU9OfVxcTntDSEFSQUNURVIgVEFCVUxBVElPTn1cXE57PGNvbnRyb2wtMDA4MT59XFxOezxub25jaGFyYWN0ZXItRkZGRj59XFxOezxjb250cm9sLTAwMDQ+fVxcTnsiLAorICAgICAgICAgICAgICAgIntcdTAwQTBhYmNcdTRFMDFcXE57eFx1MDBCNVx1MEE4MVx1RkZGRFx1MDAwNFx1MDAwOVx1MDA4MVx1RkZGRlx1MDAwNFxcTnsiKTsKKworICAgICAgICAvLyByb3VuZCB0cmlwCisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgiQW55LU5hbWU7TmFtZS1BbnkiKTsKKyAgICAgICAgCisgICAgICAgIFN0cmluZyBzID0gIntcdTAwQTBhYmNcdTRFMDFcXE57eFx1MDBCNVx1MEE4MVx1RkZGRFx1MDAwNFx1MDAwOVx1MDA4MVx1RkZGRlx1MDAwNFxcTnsiOworICAgICAgICBleHBlY3QodCwgcywgcyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdCBsaWJlcmFsaXplZCBJRCBzeW50YXguICAxMDA2YworICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RMaWJlcmFsaXplZElEKCkgeworICAgICAgICAvLyBTb21lIHRlc3QgY2FzZXMgaGF2ZSBhbiBleHBlY3RlZCBnZXRJRCgpIHZhbHVlIG9mIE5VTEwuICBUaGlzCisgICAgICAgIC8vIG1lYW5zIEkgaGF2ZSBkaXNhYmxlZCB0aGUgdGVzdCBjYXNlIGZvciBub3cuICBUaGlzIHN0dWZmIGlzCisgICAgICAgIC8vIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50LCBhbmQgSSBoYXZlbid0IGRlY2lkZWQgd2hldGhlciB0byBtYWtlCisgICAgICAgIC8vIGdldElEKCkgcmV0dXJuIGNhbm9uaWNhbCBjYXNlIHlldC4gIEl0IHdpbGwgYWxsIGdldCByZXdyaXR0ZW4KKyAgICAgICAgLy8gd2l0aCB0aGUgbW92ZSB0byBTb3VyY2UtVGFyZ2V0L1ZhcmlhbnQgSURzIGFueXdheS4gW2FsaXVdCisgICAgICAgIFN0cmluZyBEQVRBW10gPSB7CisgICAgICAgICAgICAibGF0aW4tZ3JlZWsiLCBudWxsIC8qIkxhdGluLUdyZWVrIiovLCAiY2FzZSBpbnNlbnNpdGl2aXR5IiwKKyAgICAgICAgICAgICIgIE51bGwgICIsICJOdWxsIiwgIndoaXRlc3BhY2UiLAorICAgICAgICAgICAgIiBMYXRpblthLXpdLUdyZWVrICAiLCAiW2Etel1MYXRpbi1HcmVlayIsICJpbmxpbmUgZmlsdGVyIiwKKyAgICAgICAgICAgICIgIG51bGwgIDsgbGF0aW4tZ3JlZWsgICIsIG51bGwgLyoiTnVsbDtMYXRpbi1HcmVlayIqLywgImNvbXBvdW5kIHdoaXRlc3BhY2UiLAorICAgICAgICB9OworCisgICAgICAgIGZvciAoaW50IGk9MDsgaTxEQVRBLmxlbmd0aDsgaSs9MykgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBUcmFuc2xpdGVyYXRvciB0ID0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoREFUQVtpXSk7CisgICAgICAgICAgICAgICAgaWYgKERBVEFbaSsxXSA9PSBudWxsIHx8IERBVEFbaSsxXS5lcXVhbHModC5nZXRJRCgpKSkgeworICAgICAgICAgICAgICAgICAgICBsb2dsbigiT2s6ICIgKyBEQVRBW2krMl0gKworICAgICAgICAgICAgICAgICAgICAgICAgICAiIGNyZWF0ZSBJRCBcIiIgKyBEQVRBW2ldICsgIlwiID0+IFwiIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgIHQuZ2V0SUQoKSArICJcIiIpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiAiICsgREFUQVtpKzJdICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiBjcmVhdGUgSUQgXCIiICsgREFUQVtpXSArICJcIiA9PiBcIiIgKworICAgICAgICAgICAgICAgICAgICAgICAgICB0LmdldElEKCkgKyAiXCIsIGV4cCBcIiIgKyBEQVRBW2krMV0gKyAiXCIiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiAiICsgREFUQVtpKzJdICsKKyAgICAgICAgICAgICAgICAgICAgICAiIGNyZWF0ZSBJRCBcIiIgKyBEQVRBW2ldICsgIlwiIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0Q3JlYXRlSW5zdGFuY2UoKSB7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIG15VHJhbnMgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgiTGF0aW4tSGFuZ3VsIiwgVHJhbnNsaXRlcmF0b3IuUkVWRVJTRSk7CisgICAgICAgIFN0cmluZyBuZXdJRCA9IG15VHJhbnMuZ2V0SUQoKTsKKyAgICAgICAgaWYgKCFuZXdJRC5lcXVhbHMoIkhhbmd1bC1MYXRpbiIpKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogVGVzdCBmb3IgSml0dGVyYnVnIDkxMiBUcmFuc2xpdGVyYXRvcjo6Y3JlYXRlSW5zdGFuY2UoaWQsVVRSQU5TX1JFVkVSU0UpIGZhaWxlZCIpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdCB0aGUgbm9ybWFsaXphdGlvbiB0cmFuc2xpdGVyYXRvci4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0Tm9ybWFsaXphdGlvblRyYW5zbGl0ZXJhdG9yKCkgeworICAgICAgICAvLyBUSEUgRk9MTE9XSU5HIFRXTyBUQUJMRVMgQVJFIENPUElFRCBGUk9NIGNvbS5pYm0uaWN1LmRldi50ZXN0Lm5vcm1hbGl6ZXIuQmFzaWNUZXN0CisgICAgICAgIC8vIFBMRUFTRSBLRUVQIFRIRU0gSU4gU1lOQyBXSVRIIEJhc2ljVGVzdC4KKyAgICAgICAgU3RyaW5nW11bXSBDQU5PTiA9IHsKKyAgICAgICAgICAgIC8vIElucHV0ICAgICAgICAgICAgICAgRGVjb21wb3NlZCAgICAgICAgICAgIENvbXBvc2VkCisgICAgICAgICAgICB7ImNhdCIsICAgICAgICAgICAgICAgICJjYXQiLCAgICAgICAgICAgICAgICAiY2F0IiAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7Ilx1MDBlMGFyZHZhcmsiLCAgICAgICJhXHUwMzAwYXJkdmFyayIsICAgICAiXHUwMGUwYXJkdmFyayIgICAgIH0sCisKKyAgICAgICAgICAgIHsiXHUxZTBhIiwgICAgICAgICAgICAgIkRcdTAzMDciLCAgICAgICAgICAgICJcdTFlMGEiICAgICAgICAgICAgfSwgLy8gRC1kb3RfYWJvdmUKKyAgICAgICAgICAgIHsiRFx1MDMwNyIsICAgICAgICAgICAgIkRcdTAzMDciLCAgICAgICAgICAgICJcdTFlMGEiICAgICAgICAgICAgfSwgLy8gRCBkb3RfYWJvdmUKKworICAgICAgICAgICAgeyJcdTFlMGNcdTAzMDciLCAgICAgICAiRFx1MDMyM1x1MDMwNyIsICAgICAgIlx1MWUwY1x1MDMwNyIgICAgICB9LCAvLyBELWRvdF9iZWxvdyBkb3RfYWJvdmUKKyAgICAgICAgICAgIHsiXHUxZTBhXHUwMzIzIiwgICAgICAgIkRcdTAzMjNcdTAzMDciLCAgICAgICJcdTFlMGNcdTAzMDciICAgICAgfSwgLy8gRC1kb3RfYWJvdmUgZG90X2JlbG93CisgICAgICAgICAgICB7IkRcdTAzMDdcdTAzMjMiLCAgICAgICJEXHUwMzIzXHUwMzA3IiwgICAgICAiXHUxZTBjXHUwMzA3IiAgICAgIH0sIC8vIEQgZG90X2JlbG93IGRvdF9hYm92ZQorCisgICAgICAgICAgICB7Ilx1MWUxMFx1MDMwN1x1MDMyMyIsICJEXHUwMzI3XHUwMzIzXHUwMzA3IiwiXHUxZTEwXHUwMzIzXHUwMzA3In0sIC8vIEQgZG90X2JlbG93IGNlZGlsbGEgZG90X2Fib3ZlCisgICAgICAgICAgICB7IkRcdTAzMDdcdTAzMjhcdTAzMjMiLCJEXHUwMzI4XHUwMzIzXHUwMzA3IiwiXHUxZTBjXHUwMzI4XHUwMzA3In0sIC8vIEQgZG90X2Fib3ZlIG9nb25layBkb3RfYmVsb3cKKworICAgICAgICAgICAgeyJcdTFFMTQiLCAgICAgICAgICAgICAiRVx1MDMwNFx1MDMwMCIsICAgICAgIlx1MUUxNCIgICAgICAgICAgICB9LCAvLyBFLW1hY3Jvbi1ncmF2ZQorICAgICAgICAgICAgeyJcdTAxMTJcdTAzMDAiLCAgICAgICAiRVx1MDMwNFx1MDMwMCIsICAgICAgIlx1MUUxNCIgICAgICAgICAgICB9LCAvLyBFLW1hY3JvbiArIGdyYXZlCisgICAgICAgICAgICB7Ilx1MDBjOFx1MDMwNCIsICAgICAgICJFXHUwMzAwXHUwMzA0IiwgICAgICAiXHUwMGM4XHUwMzA0IiAgICAgIH0sIC8vIEUtZ3JhdmUgKyBtYWNyb24KKworICAgICAgICAgICAgeyJcdTIxMmIiLCAgICAgICAgICAgICAiQVx1MDMwYSIsICAgICAgICAgICAgIlx1MDBjNSIgICAgICAgICAgICB9LCAvLyBhbmdzdHJvbV9zaWduCisgICAgICAgICAgICB7Ilx1MDBjNSIsICAgICAgICAgICAgICJBXHUwMzBhIiwgICAgICAgICAgICAiXHUwMGM1IiAgICAgICAgICAgIH0sIC8vIEEtcmluZworCisgICAgICAgICAgICB7Ilx1MDBmZGZmaW4iLCAgICAgICAgICJ5XHUwMzAxZmZpbiIsICAgICAgICAiXHUwMGZkZmZpbiIgICAgICAgIH0sCS8vdXBkYXRlZCB3aXRoIDMuMAorICAgICAgICAgICAgeyJcdTAwZmRcdUZCMDNuIiwgICAgICAieVx1MDMwMVx1RkIwM24iLCAgICAgIlx1MDBmZFx1RkIwM24iICAgICB9LAkvL3VwZGF0ZWQgd2l0aCAzLjAKKworICAgICAgICAgICAgeyJIZW5yeSBJViIsICAgICAgICAgICAiSGVucnkgSVYiLCAgICAgICAgICAgIkhlbnJ5IElWIiAgICAgICAgICB9LAorICAgICAgICAgICAgeyJIZW5yeSBcdTIxNjMiLCAgICAgICAiSGVucnkgXHUyMTYzIiwgICAgICAgIkhlbnJ5IFx1MjE2MyIgICAgICB9LAorCisgICAgICAgICAgICB7Ilx1MzBBQyIsICAgICAgICAgICAgICJcdTMwQUJcdTMwOTkiLCAgICAgICAiXHUzMEFDIiAgICAgICAgICAgIH0sIC8vIGdhIChLYXRha2FuYSkKKyAgICAgICAgICAgIHsiXHUzMEFCXHUzMDk5IiwgICAgICAgIlx1MzBBQlx1MzA5OSIsICAgICAgICJcdTMwQUMiICAgICAgICAgICAgfSwgLy8ga2EgKyB0ZW4KKyAgICAgICAgICAgIHsiXHVGRjc2XHVGRjlFIiwgICAgICAgIlx1RkY3Nlx1RkY5RSIsICAgICAgICJcdUZGNzZcdUZGOUUiICAgICAgfSwgLy8gaHdfa2EgKyBod190ZW4KKyAgICAgICAgICAgIHsiXHUzMEFCXHVGRjlFIiwgICAgICAgIlx1MzBBQlx1RkY5RSIsICAgICAgICJcdTMwQUJcdUZGOUUiICAgICAgfSwgLy8ga2EgKyBod190ZW4KKyAgICAgICAgICAgIHsiXHVGRjc2XHUzMDk5IiwgICAgICAgIlx1RkY3Nlx1MzA5OSIsICAgICAgICJcdUZGNzZcdTMwOTkiICAgICAgfSwgLy8gaHdfa2EgKyB0ZW4KKworICAgICAgICAgICAgeyJBXHUwMzAwXHUwMzE2IiwgICAgICAiQVx1MDMxNlx1MDMwMCIsICAgICAgIlx1MDBDMFx1MDMxNiIgICAgICB9LAorICAgICAgICB9OworCisgICAgICAgIFN0cmluZ1tdW10gQ09NUEFUID0geworICAgICAgICAgICAgLy8gSW5wdXQgICAgICAgICAgICAgICBEZWNvbXBvc2VkICAgICAgICAgICAgQ29tcG9zZWQKKyAgICAgICAgICAgIHsiXHVGQjRmIiwgICAgICAgICAgICAgIlx1MDVEMFx1MDVEQyIsICAgICAgICJcdTA1RDBcdTA1REMiICAgICAgfSwgLy8gQWxlZi1MYW1lZCB2cy4gQWxlZiwgTGFtZWQKKworICAgICAgICAgICAgeyJcdTAwZmRmZmluIiwgICAgICAgICAieVx1MDMwMWZmaW4iLCAgICAgICAgIlx1MDBmZGZmaW4iICAgICAgICB9LAkvL3VwZGF0ZWQgZm9yIDMuMAorICAgICAgICAgICAgeyJcdTAwZmRcdUZCMDNuIiwgICAgICAieVx1MDMwMWZmaW4iLCAgICAgICAgIlx1MDBmZGZmaW4iICAgICAgICB9LCAvLyBmZmkgbGlnYXR1cmUgLT4gZiArIGYgKyBpCisKKyAgICAgICAgICAgIHsiSGVucnkgSVYiLCAgICAgICAgICAgIkhlbnJ5IElWIiwgICAgICAgICAgICJIZW5yeSBJViIgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsiSGVucnkgXHUyMTYzIiwgICAgICAgIkhlbnJ5IElWIiwgICAgICAgICAgICJIZW5yeSBJViIgICAgICAgICAgfSwKKworICAgICAgICAgICAgeyJcdTMwQUMiLCAgICAgICAgICAgICAiXHUzMEFCXHUzMDk5IiwgICAgICAgIlx1MzBBQyIgICAgICAgICAgICB9LCAvLyBnYSAoS2F0YWthbmEpCisgICAgICAgICAgICB7Ilx1MzBBQlx1MzA5OSIsICAgICAgICJcdTMwQUJcdTMwOTkiLCAgICAgICAiXHUzMEFDIiAgICAgICAgICAgIH0sIC8vIGthICsgdGVuCisKKyAgICAgICAgICAgIHsiXHVGRjc2XHUzMDk5IiwgICAgICAgIlx1MzBBQlx1MzA5OSIsICAgICAgICJcdTMwQUMiICAgICAgICAgICAgfSwgLy8gaHdfa2EgKyB0ZW4KKyAgICAgICAgfTsKKworICAgICAgICBUcmFuc2xpdGVyYXRvciBORkQgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgiTkZEIik7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIE5GQyA9IFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKCJORkMiKTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPENBTk9OLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBTdHJpbmcgaW4gPSBDQU5PTltpXVswXTsKKyAgICAgICAgICAgIFN0cmluZyBleHBkID0gQ0FOT05baV1bMV07CisgICAgICAgICAgICBTdHJpbmcgZXhwYyA9IENBTk9OW2ldWzJdOworICAgICAgICAgICAgZXhwZWN0KE5GRCwgaW4sIGV4cGQpOworICAgICAgICAgICAgZXhwZWN0KE5GQywgaW4sIGV4cGMpOworICAgICAgICB9CisKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgTkZLRCA9IFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKCJORktEIik7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIE5GS0MgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgiTkZLQyIpOworICAgICAgICBmb3IgKGludCBpPTA7IGk8Q09NUEFULmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBTdHJpbmcgaW4gPSBDT01QQVRbaV1bMF07CisgICAgICAgICAgICBTdHJpbmcgZXhwa2QgPSBDT01QQVRbaV1bMV07CisgICAgICAgICAgICBTdHJpbmcgZXhwa2MgPSBDT01QQVRbaV1bMl07CisgICAgICAgICAgICBleHBlY3QoTkZLRCwgaW4sIGV4cGtkKTsKKyAgICAgICAgICAgIGV4cGVjdChORktDLCBpbiwgZXhwa2MpOworICAgICAgICB9CisKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgdCA9IFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKCJORkQ7IFt4XVJlbW92ZSIpOworICAgICAgICBleHBlY3QodCwgIlx1MDEwZHgiLCAiY1x1MDMwQyIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3QgY29tcG91bmQgUkJUIHJ1bGVzLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RDb21wb3VuZFJCVCgpIHsKKyAgICAgICAgLy8gQ2FyZWZ1bCB3aXRoIHNwYWNpbmcgYW5kICc7JyBoZXJlOiAgUGhyYXNlIHRoaXMgZXhhY3RseQorICAgICAgICAvLyBhcyB0b1J1bGVzKCkgaXMgZ29pbmcgdG8gcmV0dXJuIGl0LiAgSWYgdG9SdWxlcygpIGNoYW5nZXMKKyAgICAgICAgLy8gd2l0aCByZWdhcmQgdG8gc3BhY2luZyBvciAnOycsIHRoZW4gYWRqdXN0IHRoaXMgc3RyaW5nLgorICAgICAgICBTdHJpbmcgcnVsZSA9ICI6OkhleC1Bbnk7XG4iICsKKyAgICAgICAgICAgICAgICAgICAgICAiOjpBbnktTG93ZXI7XG4iICsKKyAgICAgICAgICAgICAgICAgICAgICAiYSA+ICcuQS4nO1xuIiArCisgICAgICAgICAgICAgICAgICAgICAgImIgPiAnLkIuJztcbiIgKworICAgICAgICAgICAgICAgICAgICAgICI6OltedF1BbnktVXBwZXI7IjsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgdCA9IFRyYW5zbGl0ZXJhdG9yLmNyZWF0ZUZyb21SdWxlcygiVGVzdCIsIHJ1bGUsIFRyYW5zbGl0ZXJhdG9yLkZPUldBUkQpOworICAgICAgICBpZiAodCA9PSBudWxsKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogY3JlYXRlRnJvbVJ1bGVzIGZhaWxlZCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGV4cGVjdCh0LCAiXHUwMDQzYXQgaW4gdGhlIGhhdCwgYmF0IG9uIHRoZSBtYXQiLAorICAgICAgICAgICAgICAgIkMuQS50IElOIHRIRSBILkEudCwgLkIuLkEudCBPTiB0SEUgTS5BLnQiKTsKKyAgICAgICAgU3RyaW5nIHIgPSB0LnRvUnVsZXModHJ1ZSk7CisgICAgICAgIGlmIChyLmVxdWFscyhydWxlKSkgeworICAgICAgICAgICAgbG9nbG4oIk9LOiB0b1J1bGVzKCkgPT4gIiArIHIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IHRvUnVsZXMoKSA9PiAiICsgciArCisgICAgICAgICAgICAgICAgICAiLCBleHBlY3RlZCAiICsgcnVsZSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBOb3cgdGVzdCB0b1J1bGVzCisgICAgICAgIHQgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgiR3JlZWstTGF0aW47IExhdGluLUN5cmlsbGljIiwgVHJhbnNsaXRlcmF0b3IuRk9SV0FSRCk7CisgICAgICAgIGlmICh0ID09IG51bGwpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBjcmVhdGVJbnN0YW5jZSBmYWlsZWQiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBTdHJpbmcgZXhwID0gIjo6R3JlZWstTGF0aW47XG46OkxhdGluLUN5cmlsbGljOyI7CisgICAgICAgIHIgPSB0LnRvUnVsZXModHJ1ZSk7CisgICAgICAgIGlmICghci5lcXVhbHMoZXhwKSkgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IHRvUnVsZXMoKSA9PiAiICsgciArCisgICAgICAgICAgICAgICAgICAiLCBleHBlY3RlZCAiICsgZXhwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvZ2xuKCJPSzogdG9SdWxlcygpID0+ICIgKyByKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFJvdW5kIHRyaXAgdGhlIHJlc3VsdCBvZiB0b1J1bGVzCisgICAgICAgIHQgPSBUcmFuc2xpdGVyYXRvci5jcmVhdGVGcm9tUnVsZXMoIlRlc3QiLCByLCBUcmFuc2xpdGVyYXRvci5GT1JXQVJEKTsKKyAgICAgICAgaWYgKHQgPT0gbnVsbCkgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IGNyZWF0ZUZyb21SdWxlcyAjMiBmYWlsZWQiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvZ2xuKCJPSzogY3JlYXRlRnJvbVJ1bGVzKCIgKyByICsgIikgc3VjY2VlZGVkIik7CisgICAgICAgIH0KKworICAgICAgICAvLyBUZXN0IHRvUnVsZXMgYWdhaW4KKyAgICAgICAgciA9IHQudG9SdWxlcyh0cnVlKTsKKyAgICAgICAgaWYgKCFyLmVxdWFscyhleHApKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogdG9SdWxlcygpID0+ICIgKyByICsKKyAgICAgICAgICAgICAgICAgICIsIGV4cGVjdGVkICIgKyBleHApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbG9nbG4oIk9LOiB0b1J1bGVzKCkgPT4gIiArIHIpOworICAgICAgICB9CisKKyAgICAgICAgLy8gVGVzdCBGb28oQmFyKSBJRHMuICBDYXJlZnVsIHdpdGggc3BhY2luZyBpbiBpZDsgbWFrZSBpdCBjb25mb3JtCisgICAgICAgIC8vIHRvIHdoYXQgdGhlIHJlZ2VuZXJhdGVkIElEIHdpbGwgbG9vayBsaWtlLgorICAgICAgICBTdHJpbmcgaWQgPSAiVXBwZXIoTG93ZXIpOyhORktDKSI7CisgICAgICAgIHQgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZShpZCwgVHJhbnNsaXRlcmF0b3IuRk9SV0FSRCk7CisgICAgICAgIGlmICh0ID09IG51bGwpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBjcmVhdGVJbnN0YW5jZSAjMiBmYWlsZWQiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAodC5nZXRJRCgpLmVxdWFscyhpZCkpIHsKKyAgICAgICAgICAgIGxvZ2xuKCJPSzogY3JlYXRlZCAiICsgaWQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IGNyZWF0ZUluc3RhbmNlKCIgKyBpZCArCisgICAgICAgICAgICAgICAgICAiKS5nZXRJRCgpID0+ICIgKyB0LmdldElEKCkpOworICAgICAgICB9CisKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgdSA9IHQuZ2V0SW52ZXJzZSgpOworICAgICAgICBpZiAodSA9PSBudWxsKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogY3JlYXRlSW52ZXJzZSBmYWlsZWQiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBleHAgPSAiTkZLQygpO0xvd2VyKFVwcGVyKSI7CisgICAgICAgIGlmICh1LmdldElEKCkuZXF1YWxzKGV4cCkpIHsKKyAgICAgICAgICAgIGxvZ2xuKCJPSzogY3JlYXRlSW52ZXJzZSgiICsgaWQgKyAiKSA9PiAiICsKKyAgICAgICAgICAgICAgICAgIHUuZ2V0SUQoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogY3JlYXRlSW52ZXJzZSgiICsgaWQgKyAiKSA9PiAiICsKKyAgICAgICAgICAgICAgICAgIHUuZ2V0SUQoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb21wb3VuZCBmaWx0ZXIgc2VtYW50aWNzIHdlcmUgb3JnaW5pYWxseSBub3QgaW1wbGVtZW50ZWQKKyAgICAgKiBjb3JyZWN0bHkuICBPcmlnaW5hbGx5LCBlYWNoIGNvbXBvbmVudCBmaWx0ZXIgZihpKSBpcyByZXBsYWNlZCBieQorICAgICAqIGYnKGkpID0gZihpKSAmJiBnLCB3aGVyZSBnIGlzIHRoZSBmaWx0ZXIgZm9yIHRoZSBjb21wb3VuZAorICAgICAqIHRyYW5zbGl0ZXJhdG9yLgorICAgICAqCisgICAgICogRnJvbSBNYXJrOgorICAgICAqCisgICAgICogU3VwcG9zZSBhbmQgSSBoYXZlIGEgdHJhbnNsaXRlcmF0b3IgWC4gSW50ZXJuYWxseSBYIGlzCisgICAgICogIkdyZWVrLUxhdGluOyBMYXRpbi1DeXJpbGxpYzsgQW55LUxvd2VyIi4gSSB1c2UgYSBmaWx0ZXIgW15BXS4KKyAgICAgKgorICAgICAqIFRoZSBjb21wb3VuZCBzaG91bGQgY29udmVydCBhbGwgZ3JlZWsgY2hhcmFjdGVycyAodGhyb3VnaCBsYXRpbikgdG8KKyAgICAgKiBjeXJpbGxpYywgdGhlbiBsb3dlcmNhc2UgdGhlIHJlc3VsdC4gVGhlIGZpbHRlciBzaG91bGQgc2F5ICJkb24ndAorICAgICAqIHRvdWNoICdBJyBpbiB0aGUgb3JpZ2luYWwiLiBCdXQgYmVjYXVzZSBhbiBpbnRlcm1lZGlhdGUgcmVzdWx0CisgICAgICogaGFwcGVucyB0byBnbyB0aHJvdWdoICJBIiwgdGhlIEdyZWVrIEFscGhhIGdldHMgaHVuZyB1cC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0Q29tcG91bmRGaWx0ZXIoKSB7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZQorICAgICAgICAgICAgKCJHcmVlay1MYXRpbjsgTGF0aW4tR3JlZWs7IExvd2VyIiwgVHJhbnNsaXRlcmF0b3IuRk9SV0FSRCk7CisgICAgICAgIHQuc2V0RmlsdGVyKG5ldyBVbmljb2RlU2V0KCJbXkFdIikpOworCisgICAgICAgIC8vIE9ubHkgdGhlICdBJyBhdCBpbmRleCAxIHNob3VsZCByZW1haW4gdW5jaGFuZ2VkCisgICAgICAgIGV4cGVjdCh0LAorICAgICAgICAgICAgICAgQ2hhcnNUb1VuaWNvZGVTdHJpbmcoIkJBXFx1MDM5QVxcdTAzOTEiKSwKKyAgICAgICAgICAgICAgIENoYXJzVG9Vbmljb2RlU3RyaW5nKCJcXHUwM2IyQVxcdTAzYmFcXHUwM2IxIikpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3QgdGhlICJSZW1vdmUiIHRyYW5zbGl0ZXJhdG9yLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RSZW1vdmUoKSB7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgiUmVtb3ZlW2FlaW91XSIpOworICAgICAgICBleHBlY3QodCwgIlRoZSBxdWljayBicm93biBmb3guIiwKKyAgICAgICAgICAgICAgICJUaCBxY2sgYnJ3biBmeC4iKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0VG9SdWxlcygpIHsKKyAgICAgICAgU3RyaW5nIFJCVCA9ICJyYnQiOworICAgICAgICBTdHJpbmcgU0VUID0gInNldCI7CisgICAgICAgIFN0cmluZ1tdIERBVEEgPSB7CisgICAgICAgICAgICBSQlQsCisgICAgICAgICAgICAiJGE9XFx1NEU2MTsgWyRhXSA+IEE7IiwKKyAgICAgICAgICAgICJbXFx1NEU2MV0gPiBBOyIsCisKKyAgICAgICAgICAgIFJCVCwKKyAgICAgICAgICAgICIkd2hpdGU9W1s6WnM6XVs6Wmw6XV07ICR3aGl0ZXthfSA+IEE7IiwKKyAgICAgICAgICAgICJbWzpaczpdWzpabDpdXXthfSA+IEE7IiwKKworICAgICAgICAgICAgU0VULAorICAgICAgICAgICAgIltbOlpzOl1bOlpsOl1dIiwKKyAgICAgICAgICAgICJbWzpaczpdWzpabDpdXSIsCisKKyAgICAgICAgICAgIFNFVCwKKyAgICAgICAgICAgICJbOlBzOl0iLAorICAgICAgICAgICAgIls6UHM6XSIsCisKKyAgICAgICAgICAgIFNFVCwKKyAgICAgICAgICAgICJbOkw6XSIsCisgICAgICAgICAgICAiWzpMOl0iLAorCisgICAgICAgICAgICBTRVQsCisgICAgICAgICAgICAiW1s6TDpdLVtBXV0iLAorICAgICAgICAgICAgIltbOkw6XS1bQV1dIiwKKworICAgICAgICAgICAgU0VULAorICAgICAgICAgICAgIlt+WzpMdTpdWzpMbDpdXSIsCisgICAgICAgICAgICAiW35bOkx1Ol1bOkxsOl1dIiwKKworICAgICAgICAgICAgU0VULAorICAgICAgICAgICAgIlt+W2Etel1dIiwKKyAgICAgICAgICAgICJbflthLXpdXSIsCisKKyAgICAgICAgICAgIFJCVCwKKyAgICAgICAgICAgICIkd2hpdGU9WzpaczpdOyAkYmxhY2s9W14kd2hpdGVdOyAkYmxhY2t7YX0gPiBBOyIsCisgICAgICAgICAgICAiW15bOlpzOl1de2F9ID4gQTsiLAorCisgICAgICAgICAgICBSQlQsCisgICAgICAgICAgICAiJGE9WzpaczpdOyAkYj1bW2Etel0tJGFdOyAkYnthfSA+IEE7IiwKKyAgICAgICAgICAgICJbW2Etel0tWzpaczpdXXthfSA+IEE7IiwKKworICAgICAgICAgICAgUkJULAorICAgICAgICAgICAgIiRhPVs6WnM6XTsgJGI9WyRhJlthLXpdXTsgJGJ7YX0gPiBBOyIsCisgICAgICAgICAgICAiW1s6WnM6XSZbYS16XV17YX0gPiBBOyIsCisKKyAgICAgICAgICAgIFJCVCwKKyAgICAgICAgICAgICIkYT1bOlpzOl07ICRiPVt4JGFdOyAkYnthfSA+IEE7IiwKKyAgICAgICAgICAgICJbeFs6WnM6XV17YX0gPiBBOyIsCisKKyAgICAgICAgICAgIFJCVCwKKyAgICAgICAgICAgICIkYWNjZW50TWludXMgPSBbIFtcXHUwMzAwLVxcdTAzNDVdICYgWzpNOl0gLSBbXFx1MDMzOF1dIDsiKworICAgICAgICAgICAgIiRtYWNyb24gPSBcXHUwMzA0IDsiKworICAgICAgICAgICAgIiRldm93ZWwgPSBbYWVpb3V5QUVJT1VZXSA7IisKKyAgICAgICAgICAgICIkaW90YXN1YiA9IFxcdTAzNDUgOyIrCisgICAgICAgICAgICAiKCRldm93ZWwgJG1hY3JvbiAkYWNjZW50TWludXMgKikgaSA+IHwgJDEgJGlvdGFzdWIgOyIsCisgICAgICAgICAgICAiKFtBRUlPVVlhZWlvdXldXFx1MDMwNFtbXFx1MDMwMC1cXHUwMzQ1XSZbOk06XS1bXFx1MDMzOF1dKilpID4gfCAkMSBcXHUwMzQ1OyIsCisgICAgICAgICAgICAKKyAgICAgICAgICAgIFJCVCwKKyAgICAgICAgICAgICIoW0FFSU9VWWFlaW91eV1cXHUwMzA0W1s6TTpdLVtcXHUwMzA0XFx1MDM0NV1dKilpID4gfCAkMSBcXHUwMzQ1OyIsCisgICAgICAgICAgICAiKFtBRUlPVVlhZWlvdXldXFx1MDMwNFtbOk06XS1bXFx1MDMwNFxcdTAzNDVdXSopaSA+IHwgJDEgXFx1MDM0NTsiLAorICAgICAgICB9OworCisgICAgICAgIGZvciAoaW50IGQ9MDsgZCA8IERBVEEubGVuZ3RoOyBkKz0zKSB7CisgICAgICAgICAgICBpZiAoREFUQVtkXSA9PSBSQlQpIHsKKyAgICAgICAgICAgICAgICAvLyBUcmFuc2xpdGVyYXRvciB0ZXN0CisgICAgICAgICAgICAgICAgVHJhbnNsaXRlcmF0b3IgdCA9IFRyYW5zbGl0ZXJhdG9yLmNyZWF0ZUZyb21SdWxlcygiSUQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFUQVtkKzFdLCBUcmFuc2xpdGVyYXRvci5GT1JXQVJEKTsKKyAgICAgICAgICAgICAgICBpZiAodCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBjcmVhdGVGcm9tUnVsZXMgZmFpbGVkIik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgU3RyaW5nIHJ1bGVzLCBlc2NhcGVkUnVsZXM7CisgICAgICAgICAgICAgICAgcnVsZXMgPSB0LnRvUnVsZXMoZmFsc2UpOworICAgICAgICAgICAgICAgIGVzY2FwZWRSdWxlcyA9IHQudG9SdWxlcyh0cnVlKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgZXhwUnVsZXMgPSBVdGlsaXR5LnVuZXNjYXBlKERBVEFbZCsyXSk7CisgICAgICAgICAgICAgICAgU3RyaW5nIGV4cEVzY2FwZWRSdWxlcyA9IERBVEFbZCsyXTsKKyAgICAgICAgICAgICAgICBpZiAocnVsZXMuZXF1YWxzKGV4cFJ1bGVzKSkgeworICAgICAgICAgICAgICAgICAgICBsb2dsbigiT2s6ICIgKyBEQVRBW2QrMV0gKworICAgICAgICAgICAgICAgICAgICAgICAgICAiID0+ICIgKyBVdGlsaXR5LmVzY2FwZShydWxlcykpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiAiICsgREFUQVtkKzFdICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiA9PiAiICsgVXRpbGl0eS5lc2NhcGUocnVsZXMgKyAiLCBleHAgIiArIGV4cFJ1bGVzKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChlc2NhcGVkUnVsZXMuZXF1YWxzKGV4cEVzY2FwZWRSdWxlcykpIHsKKyAgICAgICAgICAgICAgICAgICAgbG9nbG4oIk9rOiAiICsgREFUQVtkKzFdICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiA9PiAiICsgZXNjYXBlZFJ1bGVzKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogIiArIERBVEFbZCsxXSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICIgPT4gIiArIGVzY2FwZWRSdWxlcyArICIsIGV4cCAiICsgZXhwRXNjYXBlZFJ1bGVzKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gVW5pY29kZVNldCB0ZXN0CisgICAgICAgICAgICAgICAgU3RyaW5nIHBhdCA9IERBVEFbZCsxXTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgZXhwVG9QYXQgPSBEQVRBW2QrMl07CisgICAgICAgICAgICAgICAgVW5pY29kZVNldCBzZXQgPSBuZXcgVW5pY29kZVNldChwYXQpOworCisgICAgICAgICAgICAgICAgLy8gQWRqdXN0IHNwYWNpbmcgZXRjLiBhcyBuZWNlc3NhcnkuCisgICAgICAgICAgICAgICAgU3RyaW5nIHRvUGF0OworICAgICAgICAgICAgICAgIHRvUGF0ID0gc2V0LnRvUGF0dGVybih0cnVlKTsKKyAgICAgICAgICAgICAgICBpZiAoZXhwVG9QYXQuZXF1YWxzKHRvUGF0KSkgeworICAgICAgICAgICAgICAgICAgICBsb2dsbigiT2s6ICIgKyBwYXQgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiID0+ICIgKyB0b1BhdCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6ICIgKyBwYXQgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiID0+ICIgKyBVdGlsaXR5LmVzY2FwZSh0b1BhdCkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiLCBleHAgIiArIFV0aWxpdHkuZXNjYXBlKHBhdCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RDb250ZXh0KCkgeworICAgICAgICBUcmFuc2xpdGVyYXRvci5Qb3NpdGlvbiBwb3MgPSBuZXcgVHJhbnNsaXRlcmF0b3IuUG9zaXRpb24oMCwgMiwgMCwgMSk7IC8vIGNzIGNsIHMgbAorCisgICAgICAgIGV4cGVjdCgiZGUgPiB4OyB7ZH1lID4geTsiLAorICAgICAgICAgICAgICAgImRlIiwKKyAgICAgICAgICAgICAgICJ5ZSIsCisgICAgICAgICAgICAgICBwb3MpOworCisgICAgICAgIGV4cGVjdCgiYWJ7Y30gPiB6OyIsCisgICAgICAgICAgICAgICAieGFkYWJkYWJjeSIsCisgICAgICAgICAgICAgICAieGFkYWJkYWJ6eSIpOworICAgIH0KKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ2hhcnNUb1VuaWNvZGVTdHJpbmcoU3RyaW5nIHMpIHsKKyAgICAgICAgcmV0dXJuIFV0aWxpdHkudW5lc2NhcGUocyk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdFN1cHBsZW1lbnRhbCgpIHsKKworICAgICAgICBleHBlY3QoQ2hhcnNUb1VuaWNvZGVTdHJpbmcoIiRhPVxcVTAwMDEwMzAwOyAkcz1bXFxVMDAwMTAzMDAtXFxVMDAwMTAzMjNdOyIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImEgPiAkYTsgJHMgPiBpOyIpLAorICAgICAgICAgICAgICAgQ2hhcnNUb1VuaWNvZGVTdHJpbmcoImFiXFxVMDAwMTAzMEZ4IiksCisgICAgICAgICAgICAgICBDaGFyc1RvVW5pY29kZVN0cmluZygiXFxVMDAwMTAzMDBiaXgiKSk7CisKKyAgICAgICAgZXhwZWN0KENoYXJzVG9Vbmljb2RlU3RyaW5nKCIkYT1bYS16XFxVMDAwMTAzMDAtXFxVMDAwMTAzMjNdOyIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiRiPVtBLVpcXFUwMDAxMDQwMC1cXFUwMDAxMDQ0RF07IiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKCRhKSgkYikgPiAkMiAkMTsiKSwKKyAgICAgICAgICAgICAgIENoYXJzVG9Vbmljb2RlU3RyaW5nKCJhQlxcVTAwMDEwMzAwXFxVMDAwMTA0MDBjXFxVMDAwMTA0MDFcXFUwMDAxMDMwMUQiKSwKKyAgICAgICAgICAgICAgIENoYXJzVG9Vbmljb2RlU3RyaW5nKCJCYVxcVTAwMDEwNDAwXFxVMDAwMTAzMDBcXFUwMDAxMDQwMWNEXFxVMDAwMTAzMDEiKSk7CisKKyAgICAgICAgLy8ga3xheFxcVTAwMDEwMzAweG0KKworICAgICAgICAvLyBrfGFcXFUwMDAxMDQwMFxcVTAwMDEwMzAweG0KKyAgICAgICAgLy8ga3l8XFxVMDAwMTA0MDBcXFUwMDAxMDMwMHhtCisgICAgICAgIC8vIGt5XFxVMDAwMTA0MDB8XFxVMDAwMTAzMDB4bQorCisgICAgICAgIC8vIGt5XFxVMDAwMTA0MDB8XFxVMDAwMTAzMDBcXFUwMDAxMDQwMG0KKyAgICAgICAgLy8ga3lcXFUwMDAxMDQwMHl8XFxVMDAwMTA0MDBtCisgICAgICAgIGV4cGVjdChDaGFyc1RvVW5pY29kZVN0cmluZygiJGE9W2FcXFUwMDAxMDMwMC1cXFUwMDAxMDMyM107IiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJGEge3h9ID4gfCBAIFxcVTAwMDEwNDAwOyIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInskYX0gW15cXHUwMDAwLVxcdUZGRkZdID4geTsiKSwKKyAgICAgICAgICAgICAgIENoYXJzVG9Vbmljb2RlU3RyaW5nKCJrYXhcXFUwMDAxMDMwMHhtIiksCisgICAgICAgICAgICAgICBDaGFyc1RvVW5pY29kZVN0cmluZygia3lcXFUwMDAxMDQwMHlcXFUwMDAxMDQwMG0iKSk7CisKKyAgICAgICAgZXhwZWN0KFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKCJBbnktTmFtZSIpLAorICAgICAgICAgICAgICAgQ2hhcnNUb1VuaWNvZGVTdHJpbmcoIlxcVTAwMDEwMzMwXFxVMDAwRTAwNjFcXHUwMEEwIiksCisgICAgICAgICAgICAgICAiXFxOe0dPVEhJQyBMRVRURVIgQUhTQX1cXE57VEFHIExBVElOIFNNQUxMIExFVFRFUiBBfVxcTntOTy1CUkVBSyBTUEFDRX0iKTsKKworICAgICAgICBleHBlY3QoVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoIk5hbWUtQW55IiksCisgICAgICAgICAgICAgICAiXFxOe0dPVEhJQyBMRVRURVIgQUhTQX1cXE57VEFHIExBVElOIFNNQUxMIExFVFRFUiBBfVxcTntOTy1CUkVBSyBTUEFDRX0iLAorICAgICAgICAgICAgICAgQ2hhcnNUb1VuaWNvZGVTdHJpbmcoIlxcVTAwMDEwMzMwXFxVMDAwRTAwNjFcXHUwMEEwIikpOworCisgICAgICAgIGV4cGVjdChUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgiQW55LUhleC9Vbmljb2RlIiksCisgICAgICAgICAgICAgICBDaGFyc1RvVW5pY29kZVN0cmluZygiXFxVMDAwMTAzMzBcXFUwMDEwRkYwMFxcVTAwMEUwMDYxXFx1MDBBMCIpLAorICAgICAgICAgICAgICAgIlUrMTAzMzBVKzEwRkYwMFUrRTAwNjFVKzAwQTAiKTsKKyAgCisgICAgICAgIGV4cGVjdChUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgiQW55LUhleC9DIiksCisgICAgICAgICAgICAgICBDaGFyc1RvVW5pY29kZVN0cmluZygiXFxVMDAwMTAzMzBcXFUwMDEwRkYwMFxcVTAwMEUwMDYxXFx1MDBBMCIpLAorICAgICAgICAgICAgICAgIlxcVTAwMDEwMzMwXFxVMDAxMEZGMDBcXFUwMDBFMDA2MVxcdTAwQTAiKTsKKworICAgICAgICBleHBlY3QoVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoIkFueS1IZXgvUGVybCIpLAorICAgICAgICAgICAgICAgQ2hhcnNUb1VuaWNvZGVTdHJpbmcoIlxcVTAwMDEwMzMwXFxVMDAxMEZGMDBcXFUwMDBFMDA2MVxcdTAwQTAiKSwKKyAgICAgICAgICAgICAgICJcXHh7MTAzMzB9XFx4ezEwRkYwMH1cXHh7RTAwNjF9XFx4e0EwfSIpOworCisgICAgICAgIGV4cGVjdChUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgiQW55LUhleC9KYXZhIiksCisgICAgICAgICAgICAgICBDaGFyc1RvVW5pY29kZVN0cmluZygiXFxVMDAwMTAzMzBcXFUwMDEwRkYwMFxcVTAwMEUwMDYxXFx1MDBBMCIpLAorICAgICAgICAgICAgICAgIlxcdUQ4MDBcXHVERjMwXFx1REJGRlxcdURGMDBcXHVEQjQwXFx1REM2MVxcdTAwQTAiKTsKKworICAgICAgICBleHBlY3QoVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoIkFueS1IZXgvWE1MIiksCisgICAgICAgICAgICAgICBDaGFyc1RvVW5pY29kZVN0cmluZygiXFxVMDAwMTAzMzBcXFUwMDEwRkYwMFxcVTAwMEUwMDYxXFx1MDBBMCIpLAorICAgICAgICAgICAgICAgIiYjeDEwMzMwOyYjeDEwRkYwMDsmI3hFMDA2MTsmI3hBMDsiKTsKKworICAgICAgICBleHBlY3QoVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoIkFueS1IZXgvWE1MMTAiKSwKKyAgICAgICAgICAgICAgIENoYXJzVG9Vbmljb2RlU3RyaW5nKCJcXFUwMDAxMDMzMFxcVTAwMTBGRjAwXFxVMDAwRTAwNjFcXHUwMEEwIiksCisgICAgICAgICAgICAgICAiJiM2NjM1MjsmIzExMTM4NTY7JiM5MTc2MDE7JiMxNjA7Iik7CisKKyAgICAgICAgZXhwZWN0KFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKCJbXFxVMDAwRTAwMDAtXFxVMDAwRTBGRkZdIFJlbW92ZSIpLAorICAgICAgICAgICAgICAgQ2hhcnNUb1VuaWNvZGVTdHJpbmcoIlxcVTAwMDEwMzMwXFxVMDAxMEZGMDBcXFUwMDBFMDA2MVxcdTAwQTAiKSwKKyAgICAgICAgICAgICAgIENoYXJzVG9Vbmljb2RlU3RyaW5nKCJcXFUwMDAxMDMzMFxcVTAwMTBGRjAwXFx1MDBBMCIpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0UXVhbnRpZmllcigpIHsKKworICAgICAgICAvLyBNYWtlIHN1cmUgQCBpbiBhIHF1YW50aWZpZWQgYW50ZUNvbnRleHQgd29ya3MKKyAgICAgICAgZXhwZWN0KCJhKyB7Yn0gPiB8IEBAIGM7IEEgPiBhOyAoYSsgYykgPiAnKCcgJDEgJyknOyIsCisgICAgICAgICAgICAgICAiQUFBQUFiIiwKKyAgICAgICAgICAgICAgICJhYWEoYWFjKSIpOworCisgICAgICAgIC8vIE1ha2Ugc3VyZSBAIGluIGEgcXVhbnRpZmllZCBwb3N0Q29udGV4dCB3b3JrcworICAgICAgICBleHBlY3QoIntifSBhKyA+IGMgQEAgfDsgKGErKSA+ICcoJyAkMSAnKSc7IiwKKyAgICAgICAgICAgICAgICJiYWFhYWEiLAorICAgICAgICAgICAgICAgImNhYShhYWEpIik7CisKKyAgICAgICAgLy8gTWFrZSBzdXJlIEAgaW4gYSBxdWFudGlmaWVkIHBvc3RDb250ZXh0IHdpdGggc2VnIHJlZiB3b3JrcworICAgICAgICBleHBlY3QoInsoYil9IGErID4gJDEgQEAgfDsgKGErKSA+ICcoJyAkMSAnKSc7IiwKKyAgICAgICAgICAgICAgICJiYWFhYWEiLAorICAgICAgICAgICAgICAgImJhYShhYWEpIik7CisKKyAgICAgICAgLy8gTWFrZSBzdXJlIEAgcGFzdCBhbnRlIGNvbnRleHQgZG9lc24ndCBlbnRlciBhbnRlIGNvbnRleHQKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IuUG9zaXRpb24gcG9zID0gbmV3IFRyYW5zbGl0ZXJhdG9yLlBvc2l0aW9uKDAsIDUsIDMsIDUpOworICAgICAgICBleHBlY3QoImErIHtifSA+IHwgQEAgYzsgeCA+IHk7IChhKyBjKSA+ICcoJyAkMSAnKSc7IiwKKyAgICAgICAgICAgICAgICJ4eHhhYiIsCisgICAgICAgICAgICAgICAieHh4KGFjKSIsCisgICAgICAgICAgICAgICBwb3MpOworCisgICAgICAgIC8vIE1ha2Ugc3VyZSBAIHBhc3QgcG9zdCBjb250ZXh0IGRvZXNuJ3QgcGFzcyBsaW1pdAorICAgICAgICBUcmFuc2xpdGVyYXRvci5Qb3NpdGlvbiBwb3MyID0gbmV3IFRyYW5zbGl0ZXJhdG9yLlBvc2l0aW9uKDAsIDQsIDAsIDIpOworICAgICAgICBleHBlY3QoIntifSBhKyA+IGMgQEAgfDsgeCA+IHk7IGEgPiBBOyIsCisgICAgICAgICAgICAgICAiYmF4eCIsCisgICAgICAgICAgICAgICAiY2F4eCIsCisgICAgICAgICAgICAgICBwb3MyKTsKKworICAgICAgICAvLyBNYWtlIHN1cmUgQCBwYXN0IHBvc3QgY29udGV4dCBkb2Vzbid0IGVudGVyIHBvc3QgY29udGV4dAorICAgICAgICBleHBlY3QoIntifSBhKyA+IGMgQEAgfDsgeCA+IHk7IGEgPiBBOyIsCisgICAgICAgICAgICAgICAiYmF4eCIsCisgICAgICAgICAgICAgICAiY2F5eSIpOworCisgICAgICAgIGV4cGVjdCgiKGFiKT8gYyA+IGQ7IiwKKyAgICAgICAgICAgICAgICJjIGFiYyBhYmFiYyIsCisgICAgICAgICAgICAgICAiZCBkIGFiZCIpOworCisgICAgICAgIC8vIE5PVEU6IFRoZSAoYWIpKyB3aGVuIHJlZmVyZW5jZWQganVzdCB5aWVsZHMgYSBzaW5nbGUgImFiIiwKKyAgICAgICAgLy8gbm90IHRoZSBmdWxsIHNlcXVlbmNlIG9mIHRoZW0uICBUaGlzIGFjY29yZHMgd2l0aCBwZXJsIGJlaGF2aW9yLgorICAgICAgICBleHBlY3QoIihhYikrIHt4fSA+ICcoJyAkMSAnKSc7IiwKKyAgICAgICAgICAgICAgICJ4IGFieCBhYmFieHkiLAorICAgICAgICAgICAgICAgInggYWIoYWIpIGFiYWIoYWIpeSIpOworCisgICAgICAgIGV4cGVjdCgiYisgPiB4OyIsCisgICAgICAgICAgICAgICAiYWMgYWJjIGFiYmMgYWJiYmMiLAorICAgICAgICAgICAgICAgImFjIGF4YyBheGMgYXhjIik7CisKKyAgICAgICAgZXhwZWN0KCJbYWJjXSsgPiB4OyIsCisgICAgICAgICAgICAgICAicWFjIGFicmMgYWJiY3MgYWJ0YmJjIiwKKyAgICAgICAgICAgICAgICJxeCB4cnggeHMgeHR4Iik7CisKKyAgICAgICAgZXhwZWN0KCJxeyhhYikrfSA+IHg7IiwKKyAgICAgICAgICAgICAgICJxYSBxYWIgcWFiYSBxYWJhYmMgcWFiYSIsCisgICAgICAgICAgICAgICAicWEgcXggcXhhIHF4YyBxeGEiKTsKKworICAgICAgICBleHBlY3QoInEoYWIpKiA+IHg7IiwKKyAgICAgICAgICAgICAgICJxYSBxYWIgcWFiYSBxYWJhYmMiLAorICAgICAgICAgICAgICAgInhhIHggeGEgeGMiKTsKKworICAgICAgICAvLyBOT1RFOiBUaGUgKGFiKSsgd2hlbiByZWZlcmVuY2VkIGp1c3QgeWllbGRzIGEgc2luZ2xlICJhYiIsCisgICAgICAgIC8vIG5vdCB0aGUgZnVsbCBzZXF1ZW5jZSBvZiB0aGVtLiAgVGhpcyBhY2NvcmRzIHdpdGggcGVybCBiZWhhdmlvci4KKyAgICAgICAgZXhwZWN0KCJxKGFiKSogPiAnKCcgJDEgJyknOyIsCisgICAgICAgICAgICAgICAicWEgcWFiIHFhYmEgcWFiYWJjIiwKKyAgICAgICAgICAgICAgICIoKWEgKGFiKSAoYWIpYSAoYWIpYyIpOworCisgICAgICAgIC8vICdmb28nKyBhbmQgJ2ZvbycqIC0tIHRoZSBxdWFudGlmaWVyIHNob3VsZCBhcHBseSB0byB0aGUgZW50aXJlCisgICAgICAgIC8vIHF1b3RlZCBzdHJpbmcKKyAgICAgICAgZXhwZWN0KCInYWInKyA+IHg7IiwKKyAgICAgICAgICAgICAgICJiYiBhYiBhYmFiYiIsCisgICAgICAgICAgICAgICAiYmIgeCB4YiIpOworCisgICAgICAgIC8vICRmb28rIGFuZCAkZm9vKiAtLSB0aGUgcXVhbnRpZmllciBzaG91bGQgYXBwbHkgdG8gdGhlIGVudGlyZQorICAgICAgICAvLyB2YXJpYWJsZSByZWZlcmVuY2UKKyAgICAgICAgZXhwZWN0KCIkdmFyID0gYWI7ICR2YXIrID4geDsiLAorICAgICAgICAgICAgICAgImJiIGFiIGFiYWJiIiwKKyAgICAgICAgICAgICAgICJiYiB4IHhiIik7CisgICAgfQorCisgICAgc3RhdGljIGNsYXNzIFRlc3RGYWN0IGltcGxlbWVudHMgVHJhbnNsaXRlcmF0b3IuRmFjdG9yeSB7CisgICAgICAgIHN0YXRpYyBjbGFzcyBOYW1lYWJsZU51bGxUcmFucyBleHRlbmRzIE51bGxUcmFuc2xpdGVyYXRvciB7CisgICAgICAgICAgICBwdWJsaWMgTmFtZWFibGVOdWxsVHJhbnMoU3RyaW5nIGlkKSB7CisgICAgICAgICAgICAgICAgc2V0SUQoaWQpOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgICAgICBTdHJpbmcgaWQ7CisgICAgICAgIHB1YmxpYyBUZXN0RmFjdChTdHJpbmcgdGhlSUQpIHsKKyAgICAgICAgICAgIGlkID0gdGhlSUQ7CisgICAgICAgIH0KKyAgICAgICAgcHVibGljIFRyYW5zbGl0ZXJhdG9yIGdldEluc3RhbmNlKFN0cmluZyBpZ25vcmVkSUQpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgTmFtZWFibGVOdWxsVHJhbnMoaWQpOworICAgICAgICB9CisgICAgfTsKKworICAgIHB1YmxpYyB2b2lkIFRlc3RTVFYoKSB7CisgICAgICAgIEVudW1lcmF0aW9uIGVzID0gVHJhbnNsaXRlcmF0b3IuZ2V0QXZhaWxhYmxlU291cmNlcygpOworICAgICAgICBmb3IgKGludCBpPTA7IGVzLmhhc01vcmVFbGVtZW50cygpOyArK2kpIHsKKyAgICAgICAgICAgIFN0cmluZyBzb3VyY2UgPSAoU3RyaW5nKSBlcy5uZXh0RWxlbWVudCgpOworICAgICAgICAgICAgbG9nbG4oIiIgKyBpICsgIjogIiArIHNvdXJjZSk7CisgICAgICAgICAgICBpZiAoc291cmNlLmxlbmd0aCgpID09IDApIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogZW1wdHkgc291cmNlIik7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBFbnVtZXJhdGlvbiBldCA9IFRyYW5zbGl0ZXJhdG9yLmdldEF2YWlsYWJsZVRhcmdldHMoc291cmNlKTsKKyAgICAgICAgICAgIGZvciAoaW50IGo9MDsgZXQuaGFzTW9yZUVsZW1lbnRzKCk7ICsraikgeworICAgICAgICAgICAgICAgIFN0cmluZyB0YXJnZXQgPSAoU3RyaW5nKSBldC5uZXh0RWxlbWVudCgpOworICAgICAgICAgICAgICAgIGxvZ2xuKCIgIiArIGogKyAiOiAiICsgdGFyZ2V0KTsKKyAgICAgICAgICAgICAgICBpZiAodGFyZ2V0Lmxlbmd0aCgpID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6IGVtcHR5IHRhcmdldCIpOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgRW51bWVyYXRpb24gZXYgPSBUcmFuc2xpdGVyYXRvci5nZXRBdmFpbGFibGVWYXJpYW50cyhzb3VyY2UsIHRhcmdldCk7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaz0wOyBldi5oYXNNb3JlRWxlbWVudHMoKTsgKytrKSB7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyB2YXJpYW50ID0gKFN0cmluZykgZXYubmV4dEVsZW1lbnQoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhbnQubGVuZ3RoKCkgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbG9nbG4oIiAgIiArIGsgKyAiOiA8ZW1wdHk+Iik7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2dsbigiICAiICsgayArICI6ICIgKyB2YXJpYW50KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFRlc3QgcmVnaXN0cmF0aW9uCisgICAgICAgIFN0cmluZ1tdIElEUyA9IHsgIkZpZXJ1d2VyIiwgIlNlb3JpZGYtU3dlb3JpZSIsICJPZXdvaXItT3dlcmkvVnNpZSIgfTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPDM7ICsraSkgeworICAgICAgICAgICAgVHJhbnNsaXRlcmF0b3IucmVnaXN0ZXJGYWN0b3J5KElEU1tpXSwgbmV3IFRlc3RGYWN0KElEU1tpXSkpOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBUcmFuc2xpdGVyYXRvciB0ID0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoSURTW2ldKTsKKyAgICAgICAgICAgICAgICBpZiAodC5nZXRJRCgpLmVxdWFscyhJRFNbaV0pKSB7CisgICAgICAgICAgICAgICAgICAgIGxvZ2xuKCJPazogUmVnaXN0cmF0aW9uL2NyZWF0aW9uIHN1Y2NlZWRlZCBmb3IgSUQgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgIElEU1tpXSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6IFJlZ2lzdHJhdGlvbiBvZiBJRCAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgSURTW2ldICsgIiBjcmVhdGVzIElEICIgKyB0LmdldElEKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBUcmFuc2xpdGVyYXRvci51bnJlZ2lzdGVyKElEU1tpXSk7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgdCA9IFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKElEU1tpXSk7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBVbnJlZ2lzdHJhdGlvbiBmYWlsZWQgZm9yIElEICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICBJRFNbaV0gKyAiOyBzdGlsbCByZWNlaXZpbmcgSUQgIiArIHQuZ2V0SUQoKSk7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUyKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEdvb2Q7IHRoaXMgaXMgd2hhdCB3ZSBleHBlY3QKKyAgICAgICAgICAgICAgICAgICAgbG9nbG4oIk9rOyBVbnJlZ2lzdGVyZWQgIiArIElEU1tpXSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogUmVnaXN0cmF0aW9uL2NyZWF0aW9uIGZhaWxlZCBmb3IgSUQgIiArCisgICAgICAgICAgICAgICAgICAgICAgSURTW2ldKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3QgaW52ZXJzZSBvZiBHcmVlay1MYXRpbjsgVGl0bGUoKQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RDb21wb3VuZEludmVyc2UoKSB7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZQorICAgICAgICAgICAgKCJHcmVlay1MYXRpbjsgVGl0bGUoKSIsIFRyYW5zbGl0ZXJhdG9yLlJFVkVSU0UpOworICAgICAgICBpZiAodCA9PSBudWxsKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogY3JlYXRlSW5zdGFuY2UiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBTdHJpbmcgZXhwID0gIihUaXRsZSk7TGF0aW4tR3JlZWsiOworICAgICAgICBpZiAodC5nZXRJRCgpLmVxdWFscyhleHApKSB7CisgICAgICAgICAgICBsb2dsbigiT2s6IGludmVyc2Ugb2YgXCJHcmVlay1MYXRpbjsgVGl0bGUoKVwiIGlzIFwiIiArCisgICAgICAgICAgICAgICAgICB0LmdldElEKCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IGludmVyc2Ugb2YgXCJHcmVlay1MYXRpbjsgVGl0bGUoKVwiIGlzIFwiIiArCisgICAgICAgICAgICAgICAgICB0LmdldElEKCkgKyAiXCIsIGV4cGVjdGVkIFwiIiArIGV4cCArICJcIiIpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdCBORkQgY2hhaW5pbmcgd2l0aCBSQlQKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0TkZEQ2hhaW5SQlQoKSB7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQgPSBUcmFuc2xpdGVyYXRvci5jcmVhdGVGcm9tUnVsZXMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRFU1QiLCAiOjpORkQ7IGFhID4gUTsgYSA+IHE7IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xpdGVyYXRvci5GT1JXQVJEKTsKKyAgICAgICAgbG9nbG4odC50b1J1bGVzKHRydWUpKTsKKyAgICAgICAgZXhwZWN0KHQsICJhYSIsICJRIik7CisgICAgfQorCisgICAgLyoqCisgICAgICogSW52ZXJzZSBvZiAiTnVsbCIgc2hvdWxkIGJlICJOdWxsIi4gKEoyMSkKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0TnVsbEludmVyc2UoKSB7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgiTnVsbCIpOworICAgICAgICBUcmFuc2xpdGVyYXRvciB1ID0gdC5nZXRJbnZlcnNlKCk7CisgICAgICAgIGlmICghdS5nZXRJRCgpLmVxdWFscygiTnVsbCIpKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogSW52ZXJzZSBvZiBOdWxsIHNob3VsZCBiZSBOdWxsIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDaGVjayBJRCBvZiBpbnZlcnNlIG9mIGFsaWFzLiAoSjIyKQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RBbGlhc0ludmVyc2VJRCgpIHsKKyAgICAgICAgU3RyaW5nIElEID0gIkxhdGluLUhhbmd1bCI7IC8vIFRoaXMgc2hvdWxkIGJlIGFueSBhbGlhcyBJRCB3aXRoIGFuIGludmVyc2UKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgdCA9IFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKElEKTsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgdSA9IHQuZ2V0SW52ZXJzZSgpOworICAgICAgICBTdHJpbmcgZXhwID0gIkhhbmd1bC1MYXRpbiI7CisgICAgICAgIFN0cmluZyBnb3QgPSB1LmdldElEKCk7CisgICAgICAgIGlmICghZ290LmVxdWFscyhleHApKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogSW52ZXJzZSBvZiAiICsgSUQgKyAiIGlzICIgKyBnb3QgKworICAgICAgICAgICAgICAgICAgIiwgZXhwZWN0ZWQgIiArIGV4cCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXN0IElEcyBvZiBpbnZlcnNlcyBvZiBjb21wb3VuZCB0cmFuc2xpdGVyYXRvcnMuIChKMjApCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdENvbXBvdW5kSW52ZXJzZUlEKCkgeworICAgICAgICBTdHJpbmcgSUQgPSAiTGF0aW4tSmFtbztORkMoTkZEKSI7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZShJRCk7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHUgPSB0LmdldEludmVyc2UoKTsKKyAgICAgICAgU3RyaW5nIGV4cCA9ICJORkQoTkZDKTtKYW1vLUxhdGluIjsKKyAgICAgICAgU3RyaW5nIGdvdCA9IHUuZ2V0SUQoKTsKKyAgICAgICAgaWYgKCFnb3QuZXF1YWxzKGV4cCkpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBJbnZlcnNlIG9mICIgKyBJRCArICIgaXMgIiArIGdvdCArCisgICAgICAgICAgICAgICAgICAiLCBleHBlY3RlZCAiICsgZXhwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3QgdW5kZWZpbmVkIHZhcmlhYmxlLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RVbmRlZmluZWRWYXJpYWJsZSgpIHsKKyAgICAgICAgU3RyaW5nIHJ1bGUgPSAiJGluaXRpYWwgfSBhIDw+IFx1MTE2MTsiOworICAgICAgICB0cnkgeworICAgICAgICAgICAgVHJhbnNsaXRlcmF0b3IgdCA9IG5ldyBSdWxlQmFzZWRUcmFuc2xpdGVyYXRvcigiPElEPiIsIHJ1bGUpOworICAgICAgICAgICAgdCA9IG51bGw7CisgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBsb2dsbigiT0s6IEdvdCBleGNlcHRpb24gZm9yICIgKyBydWxlICsgIiwgYXMgZXhwZWN0ZWQ6ICIgKworICAgICAgICAgICAgICAgICAgZS5nZXRNZXNzYWdlKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGVycmxuKCJGYWlsOiBib2d1cyBydWxlICIgKyBydWxlICsgIiBjb21waWxlZCB3aXRob3V0IGVycm9yIik7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdCBlbXB0eSBjb250ZXh0LgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RFbXB0eUNvbnRleHQoKSB7CisgICAgICAgIGV4cGVjdCgiIHsgYSB9ID4gYjsiLCAieGF5IGEgIiwgInhieSBiICIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3QgY29tcG91bmQgZmlsdGVyIElEIHN5bnRheAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RDb21wb3VuZEZpbHRlcklEKCkgeworICAgICAgICBTdHJpbmdbXSBEQVRBID0geworICAgICAgICAgICAgLy8gQ29sLiAxID0gSUQgb3IgcnVsZSBzZXQgKGxhdHRlciBtdXN0IHN0YXJ0IHdpdGggIykKKworICAgICAgICAgICAgLy8gPSBjb2x1bW5zID4gMSBhcmUgbnVsbCBpZiBleHBlY3QgY29sLiAxIHRvIGJlIGlsbGVnYWwgPQorCisgICAgICAgICAgICAvLyBDb2wuIDIgPSBkaXJlY3Rpb24sICJGLi4uIiBvciAiUi4uLiIKKyAgICAgICAgICAgIC8vIENvbC4gMyA9IHNvdXJjZSBzdHJpbmcKKyAgICAgICAgICAgIC8vIENvbC4gNCA9IGV4cCByZXN1bHQKKworICAgICAgICAgICAgIlthYmNdOyBbYWJjXSIsIG51bGwsIG51bGwsIG51bGwsIC8vIG11bHRpcGxlIGZpbHRlcnMKKyAgICAgICAgICAgICJMYXRpbi1HcmVlazsgW2FiY107IiwgbnVsbCwgbnVsbCwgbnVsbCwgLy8gbWlzcGxhY2VkIGZpbHRlcgorICAgICAgICAgICAgIltiXTsgTGF0aW4tR3JlZWs7IFVwcGVyOyAoW3h5el0pIiwgIkYiLCAiYWJjIiwgImFcdTAzOTJjIiwKKyAgICAgICAgICAgICJbYl07IChMb3dlcik7IExhdGluLUdyZWVrOyBVcHBlcigpOyAoW1x1MDM5Ml0pIiwgIlIiLCAiXHUwMzkxXHUwMzkyXHUwMzkzIiwgIlx1MDM5MWJcdTAzOTMiLAorICAgICAgICAgICAgIiNcbjo6W2JdOyA6OkxhdGluLUdyZWVrOyA6OlVwcGVyOyA6OihbeHl6XSk7IiwgIkYiLCAiYWJjIiwgImFcdTAzOTJjIiwKKyAgICAgICAgICAgICIjXG46OltiXTsgOjooTG93ZXIpOyA6OkxhdGluLUdyZWVrOyA6OlVwcGVyKCk7IDo6KFtcdTAzOTJdKTsiLCAiUiIsICJcdTAzOTFcdTAzOTJcdTAzOTMiLCAiXHUwMzkxYlx1MDM5MyIsCisgICAgICAgIH07CisKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPERBVEEubGVuZ3RoOyBpKz00KSB7CisgICAgICAgICAgICBTdHJpbmcgaWQgPSBEQVRBW2ldOworICAgICAgICAgICAgaW50IGRpcmVjdGlvbiA9IChEQVRBW2krMV0gIT0gbnVsbCAmJiBEQVRBW2krMV0uY2hhckF0KDApID09ICdSJykgPworICAgICAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yLlJFVkVSU0UgOiBUcmFuc2xpdGVyYXRvci5GT1JXQVJEOworICAgICAgICAgICAgU3RyaW5nIHNvdXJjZSA9IERBVEFbaSsyXTsKKyAgICAgICAgICAgIFN0cmluZyBleHAgPSBEQVRBW2krM107CisgICAgICAgICAgICBib29sZWFuIGV4cE9rID0gKERBVEFbaSsxXSAhPSBudWxsKTsKKyAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQgPSBudWxsOworICAgICAgICAgICAgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUgPSBudWxsOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBpZiAoaWQuY2hhckF0KDApID09ICcjJykgeworICAgICAgICAgICAgICAgICAgICB0ID0gVHJhbnNsaXRlcmF0b3IuY3JlYXRlRnJvbVJ1bGVzKCJJRCIsIGlkLCBkaXJlY3Rpb24pOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHQgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZShpZCwgZGlyZWN0aW9uKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZWUpIHsKKyAgICAgICAgICAgICAgICBlID0gZWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBib29sZWFuIG9rID0gKHQgIT0gbnVsbCAmJiBlID09IG51bGwpOworICAgICAgICAgICAgaWYgKG9rID09IGV4cE9rKSB7CisgICAgICAgICAgICAgICAgbG9nbG4oIk9rOiAiICsgaWQgKyAiID0+ICIgKyB0ICsKKyAgICAgICAgICAgICAgICAgICAgICAoZSAhPSBudWxsID8gKCIsICIgKyBlLmdldE1lc3NhZ2UoKSkgOiAiIikpOworICAgICAgICAgICAgICAgIGlmIChzb3VyY2UgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBleHBlY3QodCwgc291cmNlLCBleHApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6ICIgKyBpZCArICIgPT4gIiArIHQgKworICAgICAgICAgICAgICAgICAgICAgIChlICE9IG51bGwgPyAoIiwgIiArIGUuZ2V0TWVzc2FnZSgpKSA6ICIiKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXN0IG5ldyBwcm9wZXJ0eSBzZXQgc3ludGF4CisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdFByb3BlcnR5U2V0KCkgeworICAgICAgICBleHBlY3QoImE+QTsgXFxwe0x1fT54OyBcXHB7QW55fT55OyIsICJhYmNERUYiLCAiQXl5eHh4Iik7CisgICAgICAgIGV4cGVjdCgiKC4rKT4nWycgJDEgJ10nOyIsICIgYSBzdGl0Y2ggXG4gaW4gdGltZSBcciBzYXZlcyA5IiwKKyAgICAgICAgICAgICAgICJbIGEgc3RpdGNoIF1cblsgaW4gdGltZSBdXHJbIHNhdmVzIDldIik7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdCB2YXJpb3VzIGZhaWx1cmUgcG9pbnRzIG9mIHRoZSBuZXcgMi4wIGVuZ2luZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0TmV3RW5naW5lKCkgeworICAgICAgICBUcmFuc2xpdGVyYXRvciB0ID0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoIkxhdGluLUhpcmFnYW5hIik7CisgICAgICAgIC8vIEthdGFrYW5hIHNob3VsZCBiZSB1bnRvdWNoZWQKKyAgICAgICAgZXhwZWN0KHQsICJhXHUzMDQyXHUzMEEyIiwgIlx1MzA0Mlx1MzA0Mlx1MzBBMiIpOworCisgICAgICAgIGlmICh0cnVlKSB7CisgICAgICAgICAgICAvLyBUaGlzIHRlc3Qgd2lsbCBvbmx5IHdvcmsgaWYgVHJhbnNsaXRlcmF0b3IuUk9MTEJBQ0sgaXMKKyAgICAgICAgICAgIC8vIHRydWUuICBPdGhlcndpc2UsIHRoaXMgdGVzdCB3aWxsIGZhaWwsIHJldmVhbGluZyBhCisgICAgICAgICAgICAvLyBsaW1pdGF0aW9uIG9mIGdsb2JhbCBmaWx0ZXJzIGluIGluY3JlbWVudGFsIG1vZGUuCisKKyAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yIGEgPQorICAgICAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yLmNyZWF0ZUZyb21SdWxlcygiYSIsICJhID4gQTsiLCBUcmFuc2xpdGVyYXRvci5GT1JXQVJEKTsKKyAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yIEEgPQorICAgICAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yLmNyZWF0ZUZyb21SdWxlcygiQSIsICJBID4gYjsiLCBUcmFuc2xpdGVyYXRvci5GT1JXQVJEKTsKKworICAgICAgICAgICAgVHJhbnNsaXRlcmF0b3IgYXJyYXlbXSA9IG5ldyBUcmFuc2xpdGVyYXRvcltdIHsKKyAgICAgICAgICAgICAgICBhLAorICAgICAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKCJORkQiKSwKKyAgICAgICAgICAgICAgICBBIH07CisKKyAgICAgICAgICAgIHQgPSBuZXcgQ29tcG91bmRUcmFuc2xpdGVyYXRvcihhcnJheSwgbmV3IFVuaWNvZGVTZXQoIls6TGw6XSIpKTsKKworICAgICAgICAgICAgZXhwZWN0KHQsICJhQWFBIiwgImJBYkEiKTsKKyAgICAgICAgfQorCisgICAgICAgIGV4cGVjdCgiJHNtb290aCA9IHg7ICRtYWNyb24gPSBxOyBbOl5MOl0geyAoW2FlaW91eUFFSU9VWV0gJG1hY3Jvbj8pIH0gW15hZWlvdXlBRUlPVVkkc21vb3RoJG1hY3Jvbl0gPiB8ICQxICRzbW9vdGggOyIsCisgICAgICAgICAgICAgICAiYSIsCisgICAgICAgICAgICAgICAiYXgiKTsKKworICAgICAgICBTdHJpbmcgZ3IgPQorICAgICAgICAgICAgIiRkZG90ID0gXHUwMzA4IDsiICsKKyAgICAgICAgICAgICIkbGNndm93ZWwgPSBbXHUwM2IxXHUwM2I1XHUwM2I3XHUwM2I5XHUwM2JmXHUwM2M1XHUwM2M5XSA7IiArCisgICAgICAgICAgICAiJHJvdWdoID0gXHUwMzE0IDsiICsKKyAgICAgICAgICAgICIoJGxjZ3Zvd2VsKyAkZGRvdD8pICRyb3VnaCA+IGggfCAkMSA7IiArCisgICAgICAgICAgICAiXHUwM2IxIDw+IGEgOyIgKworICAgICAgICAgICAgIiRyb3VnaCA8PiBoIDsiOworCisgICAgICAgIGV4cGVjdChnciwgIlx1MDNCMVx1MDMxNCIsICJoYSIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3QgcXVhbnRpZmllZCBzZWdtZW50IGJlaGF2aW9yLiAgV2Ugd2FudDoKKyAgICAgKiAoW2FiY10pKyA+IHggJDEgeDsgYXBwbGllZCB0byAiY2JhIiBwcm9kdWNlcyAieGF4IgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RRdWFudGlmaWVkU2VnbWVudCgpIHsKKyAgICAgICAgLy8gVGhlIG5vcm1hbCBjYXNlCisgICAgICAgIGV4cGVjdCgiKFthYmNdKykgPiB4ICQxIHg7IiwgImNiYSIsICJ4Y2JheCIpOworCisgICAgICAgIC8vIFRoZSB0cmlja3kgY2FzZTsgdGhlIHF1YW50aWZpZXIgaXMgYXJvdW5kIHRoZSBzZWdtZW50CisgICAgICAgIGV4cGVjdCgiKFthYmNdKSsgPiB4ICQxIHg7IiwgImNiYSIsICJ4YXgiKTsKKworICAgICAgICAvLyBUcmlja3kgY2FzZSBpbiByZXZlcnNlIGRpcmVjdGlvbgorICAgICAgICBleHBlY3QoIihbYWJjXSkrIHsgcSA+IHggJDEgeDsiLCAiY2JhcSIsICJjYmF4YXgiKTsKKworICAgICAgICAvLyBDaGVjayBwb3N0LWNvbnRleHQgc2VnbWVudAorICAgICAgICBleHBlY3QoIntxfSAoW2EtZF0pKyA+ICcoJyAkMSAnKSc7IiwgImRkcWNiYSIsICJkZChhKWNiYSIpOworCisgICAgICAgIC8vIFRlc3QgdG9SdWxlL3RvUGF0dGVybiBmb3Igbm9uLXF1YW50aWZpZWQgc2VnbWVudC4KKyAgICAgICAgLy8gQ2FyZWZ1bCB3aXRoIHNwYWNpbmcgaGVyZS4KKyAgICAgICAgU3RyaW5nIHIgPSAiKFthLWNdKXtxfSA+IHggJDEgeDsiOworICAgICAgICBUcmFuc2xpdGVyYXRvciB0ID0gVHJhbnNsaXRlcmF0b3IuY3JlYXRlRnJvbVJ1bGVzKCJJRCIsIHIsIFRyYW5zbGl0ZXJhdG9yLkZPUldBUkQpOworICAgICAgICBTdHJpbmcgcnIgPSB0LnRvUnVsZXModHJ1ZSk7CisgICAgICAgIGlmICghci5lcXVhbHMocnIpKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogXCIiICsgciArICJcIiB4IHRvUnVsZXMoKSA9PiBcIiIgKyByciArICJcIiIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbG9nbG4oIk9rOiBcIiIgKyByICsgIlwiIHggdG9SdWxlcygpID0+IFwiIiArIHJyICsgIlwiIik7CisgICAgICAgIH0KKworICAgICAgICAvLyBUZXN0IHRvUnVsZS90b1BhdHRlcm4gZm9yIHF1YW50aWZpZWQgc2VnbWVudC4KKyAgICAgICAgLy8gQ2FyZWZ1bCB3aXRoIHNwYWNpbmcgaGVyZS4KKyAgICAgICAgciA9ICIoW2EtY10pK3txfSA+IHggJDEgeDsiOworICAgICAgICB0ID0gVHJhbnNsaXRlcmF0b3IuY3JlYXRlRnJvbVJ1bGVzKCJJRCIsIHIsIFRyYW5zbGl0ZXJhdG9yLkZPUldBUkQpOworICAgICAgICByciA9IHQudG9SdWxlcyh0cnVlKTsKKyAgICAgICAgaWYgKCFyLmVxdWFscyhycikpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBcIiIgKyByICsgIlwiIHggdG9SdWxlcygpID0+IFwiIiArIHJyICsgIlwiIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2dsbigiT2s6IFwiIiArIHIgKyAiXCIgeCB0b1J1bGVzKCkgPT4gXCIiICsgcnIgKyAiXCIiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIFJhbSdzIHRlc3RzCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgLyogdGhpcyB0ZXN0IHBlcmZvcm1zICB0ZXN0IG9mIHJ1bGVzIGluIElTTyAxNTkxNSAqLworICAgIHB1YmxpYyB2b2lkICBUZXN0RGV2YW5hZ2FyaUxhdGluUlQoKXsKKyAgICAgICAgU3RyaW5nW10gIHNvdXJjZSA9IHsKKyAgICAgICAgICAgICJiaFx1MDEwMXJhdGEiLAorICAgICAgICAgICAgImtyYSIsCisgICAgICAgICAgICAia1x1MUU2M2EiLAorICAgICAgICAgICAgImtocmEiLAorICAgICAgICAgICAgImdyYSIsCisgICAgICAgICAgICAiXHUxRTQ1cmEiLAorICAgICAgICAgICAgImNyYSIsCisgICAgICAgICAgICAiY2hyYSIsCisgICAgICAgICAgICAialx1MDBGMWEiLAorICAgICAgICAgICAgImpocmEiLAorICAgICAgICAgICAgIlx1MDBGMXJhIiwKKyAgICAgICAgICAgICJcdTFFNkR5YSIsCisgICAgICAgICAgICAiXHUxRTZEaHJhIiwKKyAgICAgICAgICAgICJcdTFFMER5YSIsCisgICAgICAgIC8vInJcdTAzMjN5YSIsIC8vIFx1MDk1YyBpcyBub3QgdmFsaWQgaW4gRGV2YW5hZ2FyaQorICAgICAgICAgICAgIlx1MUUwRGh5YSIsCisgICAgICAgICAgICAiXHUxRTVCaHJhIiwKKyAgICAgICAgICAgICJcdTFFNDdyYSIsCisgICAgICAgICAgICAidHRhIiwKKyAgICAgICAgICAgICJ0aHJhIiwKKyAgICAgICAgICAgICJkZGEiLAorICAgICAgICAgICAgImRocmEiLAorICAgICAgICAgICAgIm5uYSIsCisgICAgICAgICAgICAicHJhIiwKKyAgICAgICAgICAgICJwaHJhIiwKKyAgICAgICAgICAgICJicmEiLAorICAgICAgICAgICAgImJocmEiLAorICAgICAgICAgICAgIm1yYSIsCisgICAgICAgICAgICAiXHUxRTQ5cmEiLAorICAgICAgICAvLyJsXHUwMzMxcmEiLAorICAgICAgICAgICAgInlyYSIsCisgICAgICAgICAgICAiXHUxRThGcmEiLAorICAgICAgICAvLyJsLSIsCisgICAgICAgICAgICAidnJhIiwKKyAgICAgICAgICAgICJcdTAxNUJyYSIsCisgICAgICAgICAgICAiXHUxRTYzcmEiLAorICAgICAgICAgICAgInNyYSIsCisgICAgICAgICAgICAiaG1hIiwKKyAgICAgICAgICAgICJcdTFFNkRcdTFFNkRhIiwKKyAgICAgICAgICAgICJcdTFFNkRcdTFFNkRoYSIsCisgICAgICAgICAgICAiXHUxRTZEaFx1MUU2RGhhIiwKKyAgICAgICAgICAgICJcdTFFMERcdTFFMERhIiwKKyAgICAgICAgICAgICJcdTFFMERcdTFFMERoYSIsCisgICAgICAgICAgICAiXHUxRTZEeWEiLAorICAgICAgICAgICAgIlx1MUU2RGh5YSIsCisgICAgICAgICAgICAiXHUxRTBEeWEiLAorICAgICAgICAgICAgIlx1MUUwRGh5YSIsCisgICAgICAgICAgICAvLyBOb3Qgcm91bmR0cmlwcGFibGUgLS0KKyAgICAgICAgICAgIC8vIFx1MDkzOVx1MDk0ZFx1MDk0ZFx1MDkyRSAgLSBobWEKKyAgICAgICAgICAgIC8vIFx1MDkzOVx1MDk0ZFx1MDkyRSAgICAgICAgIC0gaG1hCisgICAgICAgICAgICAvLyBDaGFyc1RvVW5pY29kZVN0cmluZygiaG1hIiksCisgICAgICAgICAgICAiaHlhIiwKKyAgICAgICAgICAgICJcdTAxNUJyXHUwMzI1IiwKKyAgICAgICAgICAgICJcdTAxNUJjYSIsCisgICAgICAgICAgICAiXHUwMTE1IiwKKyAgICAgICAgICAgICJzYW5cdTAzMDRqXHUwMTJCYiBzXHUwMTEzbmFndXB0YSIsCisgICAgICAgICAgICAiXHUwMTAxbmFuZCB2YWRkaXJcdTAxMDFqdSIsCisgICAgICAgIH07CisgICAgICAgIFN0cmluZ1tdICBleHBlY3RlZCA9IHsKKyAgICAgICAgICAgICJcdTA5MkRcdTA5M0VcdTA5MzBcdTA5MjQiLCAgICAvKiBiaGFcdTAzMDRyYXRhICovCisgICAgICAgICAgICAiXHUwOTE1XHUwOTREXHUwOTMwIiwgICAgICAgICAgLyoga3JhICAgICAgICAgKi8KKyAgICAgICAgICAgICJcdTA5MTVcdTA5NERcdTA5MzciLCAgICAgICAgICAvKiBrc1x1MDMyM2EgICovCisgICAgICAgICAgICAiXHUwOTE2XHUwOTREXHUwOTMwIiwgICAgICAgICAgLyoga2hyYSAgICAgICAgKi8KKyAgICAgICAgICAgICJcdTA5MTdcdTA5NERcdTA5MzAiLCAgICAgICAgICAvKiBncmEgICAgICAgICAqLworICAgICAgICAgICAgIlx1MDkxOVx1MDk0RFx1MDkzMCIsICAgICAgICAgIC8qIG5cdTAzMDdyYSAgKi8KKyAgICAgICAgICAgICJcdTA5MUFcdTA5NERcdTA5MzAiLCAgICAgICAgICAvKiBjcmEgICAgICAgICAqLworICAgICAgICAgICAgIlx1MDkxQlx1MDk0RFx1MDkzMCIsICAgICAgICAgIC8qIGNocmEgICAgICAgICovCisgICAgICAgICAgICAiXHUwOTFDXHUwOTREXHUwOTFFIiwgICAgICAgICAgLyogam5cdTAzMDNhICAqLworICAgICAgICAgICAgIlx1MDkxRFx1MDk0RFx1MDkzMCIsICAgICAgICAgIC8qIGpocmEgICAgICAgICovCisgICAgICAgICAgICAiXHUwOTFFXHUwOTREXHUwOTMwIiwgICAgICAgICAgLyogblx1MDMwM3JhICAqLworICAgICAgICAgICAgIlx1MDkxRlx1MDk0RFx1MDkyRiIsICAgICAgICAgIC8qIHRcdTAzMjN5YSAgKi8KKyAgICAgICAgICAgICJcdTA5MjBcdTA5NERcdTA5MzAiLCAgICAgICAgICAvKiB0XHUwMzIzaHJhICovCisgICAgICAgICAgICAiXHUwOTIxXHUwOTREXHUwOTJGIiwgICAgICAgICAgLyogZFx1MDMyM3lhICAqLworICAgICAgICAvLyJcdTA5NUNcdTA5NERcdTA5MkYiLCAgICAgICAgICAvKiByXHUwMzIzeWEgICovIC8vIFx1MDk1YyBpcyBub3QgdmFsaWQgaW4gRGV2YW5hZ2FyaQorICAgICAgICAgICAgIlx1MDkyMlx1MDk0RFx1MDkyRiIsICAgICAgICAgIC8qIGRcdTAzMjNoeWEgKi8KKyAgICAgICAgICAgICJcdTA5MjJcdTA5M0NcdTA5NERcdTA5MzAiLCAgICAvKiByXHUwMzIzaHJhICovCisgICAgICAgICAgICAiXHUwOTIzXHUwOTREXHUwOTMwIiwgICAgICAgICAgLyogblx1MDMyM3JhICAqLworICAgICAgICAgICAgIlx1MDkyNFx1MDk0RFx1MDkyNCIsICAgICAgICAgIC8qIHR0YSAgICAgICAgICovCisgICAgICAgICAgICAiXHUwOTI1XHUwOTREXHUwOTMwIiwgICAgICAgICAgLyogdGhyYSAgICAgICAgKi8KKyAgICAgICAgICAgICJcdTA5MjZcdTA5NERcdTA5MjYiLCAgICAgICAgICAvKiBkZGEgICAgICAgICAqLworICAgICAgICAgICAgIlx1MDkyN1x1MDk0RFx1MDkzMCIsICAgICAgICAgIC8qIGRocmEgICAgICAgICovCisgICAgICAgICAgICAiXHUwOTI4XHUwOTREXHUwOTI4IiwgICAgICAgICAgLyogbm5hICAgICAgICAgKi8KKyAgICAgICAgICAgICJcdTA5MkFcdTA5NERcdTA5MzAiLCAgICAgICAgICAvKiBwcmEgICAgICAgICAqLworICAgICAgICAgICAgIlx1MDkyQlx1MDk0RFx1MDkzMCIsICAgICAgICAgIC8qIHBocmEgICAgICAgICovCisgICAgICAgICAgICAiXHUwOTJDXHUwOTREXHUwOTMwIiwgICAgICAgICAgLyogYnJhICAgICAgICAgKi8KKyAgICAgICAgICAgICJcdTA5MkRcdTA5NERcdTA5MzAiLCAgICAgICAgICAvKiBiaHJhICAgICAgICAqLworICAgICAgICAgICAgIlx1MDkyRVx1MDk0RFx1MDkzMCIsICAgICAgICAgIC8qIG1yYSAgICAgICAgICovCisgICAgICAgICAgICAiXHUwOTI5XHUwOTREXHUwOTMwIiwgICAgICAgICAgLyogblx1MDMzMXJhICAqLworICAgICAgICAvLyJcdTA5MzRcdTA5NERcdTA5MzAiLCAgICAgICAgICAvKiBsXHUwMzMxcmEgICovCisgICAgICAgICAgICAiXHUwOTJGXHUwOTREXHUwOTMwIiwgICAgICAgICAgLyogeXJhICAgICAgICAgKi8KKyAgICAgICAgICAgICJcdTA5MkZcdTA5M0NcdTA5NERcdTA5MzAiLCAgICAvKiB5XHUwMzA3cmEgICovCisgICAgICAgIC8vImwtIiwKKyAgICAgICAgICAgICJcdTA5MzVcdTA5NERcdTA5MzAiLCAgICAgICAgICAvKiB2cmEgICAgICAgICAqLworICAgICAgICAgICAgIlx1MDkzNlx1MDk0RFx1MDkzMCIsICAgICAgICAgIC8qIHNcdTAzMDFyYSAgKi8KKyAgICAgICAgICAgICJcdTA5MzdcdTA5NERcdTA5MzAiLCAgICAgICAgICAvKiBzXHUwMzIzcmEgICovCisgICAgICAgICAgICAiXHUwOTM4XHUwOTREXHUwOTMwIiwgICAgICAgICAgLyogc3JhICAgICAgICAgKi8KKyAgICAgICAgICAgICJcdTA5MzlcdTA5NGRcdTA5MkUiLCAgICAgICAgICAvKiBobWEgICAgICAgICAqLworICAgICAgICAgICAgIlx1MDkxRlx1MDk0RFx1MDkxRiIsICAgICAgICAgIC8qIHRcdTAzMjN0XHUwMzIzYSAgKi8KKyAgICAgICAgICAgICJcdTA5MUZcdTA5NERcdTA5MjAiLCAgICAgICAgICAvKiB0XHUwMzIzdFx1MDMyM2hhICovCisgICAgICAgICAgICAiXHUwOTIwXHUwOTREXHUwOTIwIiwgICAgICAgICAgLyogdFx1MDMyM2h0XHUwMzIzaGEqLworICAgICAgICAgICAgIlx1MDkyMVx1MDk0RFx1MDkyMSIsICAgICAgICAgIC8qIGRcdTAzMjNkXHUwMzIzYSAgKi8KKyAgICAgICAgICAgICJcdTA5MjFcdTA5NERcdTA5MjIiLCAgICAgICAgICAvKiBkXHUwMzIzZFx1MDMyM2hhICovCisgICAgICAgICAgICAiXHUwOTFGXHUwOTREXHUwOTJGIiwgICAgICAgICAgLyogdFx1MDMyM3lhICAqLworICAgICAgICAgICAgIlx1MDkyMFx1MDk0RFx1MDkyRiIsICAgICAgICAgIC8qIHRcdTAzMjNoeWEgKi8KKyAgICAgICAgICAgICJcdTA5MjFcdTA5NERcdTA5MkYiLCAgICAgICAgICAvKiBkXHUwMzIzeWEgICovCisgICAgICAgICAgICAiXHUwOTIyXHUwOTREXHUwOTJGIiwgICAgICAgICAgLyogZFx1MDMyM2h5YSAqLworICAgICAgICAvLyAiaG1hIiwgICAgICAgICAgICAgICAgICAgICAgICAgLyogaG1hICAgICAgICAgKi8KKyAgICAgICAgICAgICJcdTA5MzlcdTA5NERcdTA5MkYiLCAgICAgICAgICAvKiBoeWEgICAgICAgICAqLworICAgICAgICAgICAgIlx1MDkzNlx1MDk0MyIsICAgICAgICAgICAgICAgIC8qIHNcdTAzMDFyXHUwMzI1YSAgKi8KKyAgICAgICAgICAgICJcdTA5MzZcdTA5NERcdTA5MUEiLCAgICAgICAgICAvKiBzXHUwMzAxY2EgICovCisgICAgICAgICAgICAiXHUwOTBkIiwgICAgICAgICAgICAgICAgICAgICAgLyogZVx1MDMwNiAgICAqLworICAgICAgICAgICAgIlx1MDkzOFx1MDkwMlx1MDkxQ1x1MDk0MFx1MDkyQ1x1MDk0RCBcdTA5MzhcdTA5NDdcdTA5MjhcdTA5MTdcdTA5NDFcdTA5MkFcdTA5NERcdTA5MjQiLAorICAgICAgICAgICAgIlx1MDkwNlx1MDkyOFx1MDkwMlx1MDkyNlx1MDk0RCBcdTA5MzVcdTA5MjZcdTA5NERcdTA5MjZcdTA5M0ZcdTA5MzBcdTA5M0VcdTA5MUNcdTA5NDEiLAorICAgICAgICB9OworCisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIGxhdGluVG9EZXY9VHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoIkxhdGluLURldmFuYWdhcmkiLCBUcmFuc2xpdGVyYXRvci5GT1JXQVJEICk7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIGRldlRvTGF0aW49VHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoIkRldmFuYWdhcmktTGF0aW4iLCBUcmFuc2xpdGVyYXRvci5GT1JXQVJEKTsKKworICAgICAgICBmb3IoaW50IGk9IDA7IGk8c291cmNlLmxlbmd0aDsgaSsrKXsKKyAgICAgICAgICAgIGV4cGVjdChsYXRpblRvRGV2LChzb3VyY2VbaV0pLChleHBlY3RlZFtpXSkpOworICAgICAgICAgICAgZXhwZWN0KGRldlRvTGF0aW4sKGV4cGVjdGVkW2ldKSwoc291cmNlW2ldKSk7CisgICAgICAgIH0KKworICAgIH0KKyAgICBwdWJsaWMgdm9pZCAgVGVzdFRlbHVndUxhdGluUlQoKXsKKyAgICAgICAgU3RyaW5nW10gIHNvdXJjZSA9IHsKKyAgICAgICAgICAgICJyYWdodXJcdTAxMDFtIHZpXHUwMTVCdmFuXHUwMTAxZGhhIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSYWdodXJhbSBWaXN3YW5hZGhhICAgICovCisgICAgICAgICAgICAiXHUwMTAxbmFuZCB2YWRkaXJcdTAxMDFqdSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQW5hbmQgVmFkZGlyYWp1IAkgICAgICAqLworICAgICAgICAgICAgInJcdTAxMDFqXHUwMTJCdiBrYVx1MDE1QmFyYWJcdTAxMDFkYSIsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJhamVldiBLYXNhcmFiYWRhICAgICAgKi8KKyAgICAgICAgICAgICJzYW5cdTAzMDRqXHUwMTJCdiBrYVx1MDE1QmFyYWJcdTAxMDFkYSIsICAgICAgICAgICAgICAgICAgICAgICAvKiBzYW5qZWV2IGthc2FyYWJhZGEgICAgICovCisgICAgICAgICAgICAic2FuXHUwMzA0alx1MDEyQmIgc2VuJ2d1cHRhIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc2FuamliIHNlbmd1cGF0YSAJICAqLworICAgICAgICAgICAgImFtYXJcdTAxMTNuZHJhIGhhbnVtXHUwMTAxbnVsYSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFtYXJlbmRyYSBoYW51bWFudWxhICAgKi8KKyAgICAgICAgICAgICJyYXZpIGt1bVx1MDEwMXIgdmlcdTAxNUJ2YW5cdTAxMDFkaGEiLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSYXZpIEt1bWFyIFZpc3dhbmFkaGEgICovCisgICAgICAgICAgICAiXHUwMTAxZGl0eWEga2FuZHJcdTAxMTNndWxhIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQWRpdHlhIEthbmRyZWd1bGEgICAgICAqLworICAgICAgICAgICAgIlx1MDE1QnJcdTAxMkJkaGFyIGthXHUxRTQ3XHUxRTZEYW1hXHUwMTVCZVx1MUU2RFx1MUU2RGkiLCAgICAgIC8qIFNocmlkaGFyIEthbnRhbXNldHR5ICAgKi8KKyAgICAgICAgICAgICJtXHUwMTAxZGhhdiBkZVx1MDE1QmVcdTFFNkRcdTFFNkRpIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBNYWRoYXYgRGVzZXR0eSAgICAgICAgICovCisgICAgICAgIH07CisKKyAgICAgICAgU3RyaW5nW10gIGV4cGVjdGVkID0geworICAgICAgICAgICAgIlx1MGMzMFx1MGMxOFx1MGM0MVx1MGMzMFx1MGMzZVx1MGMyZVx1MGM0ZCBcdTBjMzVcdTBjM2ZcdTBjMzZcdTBjNGRcdTBjMzVcdTBjMjhcdTBjM2VcdTBjMjciLAorICAgICAgICAgICAgIlx1MGMwNlx1MGMyOFx1MGMwMlx1MGMyNlx1MGM0ZCBcdTBDMzVcdTBDMjZcdTBDNERcdTBDMjZcdTBDM0ZcdTBDMzBcdTBDM0VcdTBDMUNcdTBDNDEiLAorICAgICAgICAgICAgIlx1MGMzMFx1MGMzZVx1MGMxY1x1MGM0MFx1MGMzNVx1MGM0ZCBcdTBjMTVcdTBjMzZcdTBjMzBcdTBjMmNcdTBjM2VcdTBjMjYiLAorICAgICAgICAgICAgIlx1MGMzOFx1MGMwMlx1MGMxY1x1MGM0MFx1MGMzNVx1MGM0ZCBcdTBjMTVcdTBjMzZcdTBjMzBcdTBjMmNcdTBjM2VcdTBjMjYiLAorICAgICAgICAgICAgIlx1MGMzOFx1MGMwMlx1MGMxY1x1MGM0MFx1MGMyY1x1MGM0ZCBcdTBjMzhcdTBjNDZcdTBjMjhcdTBjNGRcdTBjMTdcdTBjNDFcdTBjMmFcdTBjNGRcdTBjMjQiLAorICAgICAgICAgICAgIlx1MGMwNVx1MGMyZVx1MGMzMFx1MGM0N1x1MGMwMlx1MGMyNlx1MGM0ZFx1MGMzMCBcdTBjMzlcdTBjMjhcdTBjNDFcdTBjMmVcdTBjM2VcdTBjMjhcdTBjNDFcdTBjMzIiLAorICAgICAgICAgICAgIlx1MGMzMFx1MGMzNVx1MGMzZiBcdTBjMTVcdTBjNDFcdTBjMmVcdTBjM2VcdTBjMzBcdTBjNGQgXHUwYzM1XHUwYzNmXHUwYzM2XHUwYzRkXHUwYzM1XHUwYzI4XHUwYzNlXHUwYzI3IiwKKyAgICAgICAgICAgICJcdTBjMDZcdTBjMjZcdTBjM2ZcdTBjMjRcdTBjNGRcdTBjMmYgXHUwQzE1XHUwQzAyXHUwQzI2XHUwQzREXHUwQzMwXHUwQzQ3XHUwQzE3XHUwQzQxXHUwYzMyIiwKKyAgICAgICAgICAgICJcdTBjMzZcdTBjNGRcdTBjMzBcdTBjNDBcdTBDMjdcdTBDMzBcdTBDNEQgXHUwYzE1XHUwYzAyXHUwYzFmXHUwYzJlXHUwYzM2XHUwYzQ2XHUwYzFmXHUwYzRkXHUwYzFmXHUwYzNmIiwKKyAgICAgICAgICAgICJcdTBjMmVcdTBjM2VcdTBjMjdcdTBjMzVcdTBjNGQgXHUwYzI2XHUwYzQ2XHUwYzM2XHUwYzQ2XHUwYzFmXHUwYzRkXHUwYzFmXHUwYzNmIiwKKyAgICAgICAgfTsKKworCisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIGxhdGluVG9EZXY9VHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoIkxhdGluLVRlbHVndSIsIFRyYW5zbGl0ZXJhdG9yLkZPUldBUkQpOworICAgICAgICBUcmFuc2xpdGVyYXRvciBkZXZUb0xhdGluPVRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKCJUZWx1Z3UtTGF0aW4iLCBUcmFuc2xpdGVyYXRvci5GT1JXQVJEKTsKKworICAgICAgICBmb3IoaW50IGk9IDA7IGk8c291cmNlLmxlbmd0aDsgaSsrKXsKKyAgICAgICAgICAgIGV4cGVjdChsYXRpblRvRGV2LChzb3VyY2VbaV0pLChleHBlY3RlZFtpXSkpOworICAgICAgICAgICAgZXhwZWN0KGRldlRvTGF0aW4sKGV4cGVjdGVkW2ldKSwoc291cmNlW2ldKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCAgVGVzdFNhbnNrcml0TGF0aW5SVCgpeworICAgICAgICBpbnQgTUFYX0xFTiA9MTU7CisgICAgICAgIFN0cmluZ1tdICBzb3VyY2UgPSB7CisgICAgICAgICAgICAicm1rXHUxRTYzXHUwMTEzdCIsCisgICAgICAgICAgICAiXHUwMTVCclx1MDEyQm1hZCIsCisgICAgICAgICAgICAiYmhhZ2F2YWRnXHUwMTJCdFx1MDEwMSIsCisgICAgICAgICAgICAiYWRoeVx1MDEwMXlhIiwKKyAgICAgICAgICAgICJhcmp1bmEiLAorICAgICAgICAgICAgInZpXHUxRTYzXHUwMTAxZGEiLAorICAgICAgICAgICAgInlcdTAxNERnYSIsCisgICAgICAgICAgICAiZGhyXHUwMzI1dGFyXHUwMTAxXHUxRTYzXHUxRTZEcmEiLAorICAgICAgICAgICAgInV2XHUwMTAxY3JcdTAzMjUiLAorICAgICAgICAgICAgImRoYXJtYWtcdTFFNjNcdTAxMTN0clx1MDExMyIsCisgICAgICAgICAgICAia3VydWtcdTFFNjNcdTAxMTN0clx1MDExMyIsCisgICAgICAgICAgICAic2FtYXZcdTAxMTN0XHUwMTAxIiwKKyAgICAgICAgICAgICJ5dXl1dHNhdmFcdTFFMjUiLAorICAgICAgICAgICAgIm1cdTAxMDFtYWtcdTAxMDFcdTFFMjUiLAorICAgICAgICAvLyAicFx1MDEwMVx1MUU0N1x1MUUwRGF2XHUwMTAxXHUwMTVCY2FpdmEiLAorICAgICAgICAgICAgImtpbWFrdXJ2YXRhIiwKKyAgICAgICAgICAgICJzYW5cdTAzMDRqYXZhIiwKKyAgICAgICAgfTsKKyAgICAgICAgU3RyaW5nW10gIGV4cGVjdGVkID0geworICAgICAgICAgICAgIlx1MDkzMFx1MDk0RFx1MDkyRVx1MDk0RFx1MDkxNVx1MDk0RFx1MDkzN1x1MDk0N1x1MDkyNFx1MDk0RCIsCisgICAgICAgICAgICAiXHUwOTM2XHUwOTRkXHUwOTMwXHUwOTQwXHUwOTJlXHUwOTI2XHUwOTRkIiwKKyAgICAgICAgICAgICJcdTA5MmRcdTA5MTdcdTA5MzVcdTA5MjZcdTA5NGRcdTA5MTdcdTA5NDBcdTA5MjRcdTA5M2UiLAorICAgICAgICAgICAgIlx1MDkwNVx1MDkyN1x1MDk0ZFx1MDkyZlx1MDkzZVx1MDkyZiIsCisgICAgICAgICAgICAiXHUwOTA1XHUwOTMwXHUwOTRkXHUwOTFjXHUwOTQxXHUwOTI4IiwKKyAgICAgICAgICAgICJcdTA5MzVcdTA5M2ZcdTA5MzdcdTA5M2VcdTA5MjYiLAorICAgICAgICAgICAgIlx1MDkyZlx1MDk0Ylx1MDkxNyIsCisgICAgICAgICAgICAiXHUwOTI3XHUwOTQzXHUwOTI0XHUwOTMwXHUwOTNlXHUwOTM3XHUwOTRkXHUwOTFmXHUwOTRkXHUwOTMwIiwKKyAgICAgICAgICAgICJcdTA5MDlcdTA5MzVcdTA5M0VcdTA5MUFcdTA5NDMiLAorICAgICAgICAgICAgIlx1MDkyN1x1MDkzMFx1MDk0ZFx1MDkyZVx1MDkxNVx1MDk0ZFx1MDkzN1x1MDk0N1x1MDkyNFx1MDk0ZFx1MDkzMFx1MDk0NyIsCisgICAgICAgICAgICAiXHUwOTE1XHUwOTQxXHUwOTMwXHUwOTQxXHUwOTE1XHUwOTRkXHUwOTM3XHUwOTQ3XHUwOTI0XHUwOTRkXHUwOTMwXHUwOTQ3IiwKKyAgICAgICAgICAgICJcdTA5MzhcdTA5MmVcdTA5MzVcdTA5NDdcdTA5MjRcdTA5M2UiLAorICAgICAgICAgICAgIlx1MDkyZlx1MDk0MVx1MDkyZlx1MDk0MVx1MDkyNFx1MDk0ZFx1MDkzOFx1MDkzNVx1MDkwMyIsCisgICAgICAgICAgICAiXHUwOTJlXHUwOTNlXHUwOTJlXHUwOTE1XHUwOTNlXHUwOTAzIiwKKyAgICAgICAgLy8iXHUwOTJhXHUwOTNlXHUwOTIzXHUwOTRkXHUwOTIxXHUwOTM1XHUwOTNlXHUwOTM2XHUwOTRkXHUwOTFhXHUwOTQ4XHUwOTM1IiwKKyAgICAgICAgICAgICJcdTA5MTVcdTA5M2ZcdTA5MmVcdTA5MTVcdTA5NDFcdTA5MzBcdTA5NGRcdTA5MzVcdTA5MjQiLAorICAgICAgICAgICAgIlx1MDkzOFx1MDkwMlx1MDkxY1x1MDkzNSIsCisgICAgICAgIH07CisKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgbGF0aW5Ub0Rldj1UcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgiTGF0aW4tRGV2YW5hZ2FyaSIsIFRyYW5zbGl0ZXJhdG9yLkZPUldBUkQpOworICAgICAgICBUcmFuc2xpdGVyYXRvciBkZXZUb0xhdGluPVRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKCJEZXZhbmFnYXJpLUxhdGluIiwgVHJhbnNsaXRlcmF0b3IuRk9SV0FSRCk7CisgICAgICAgIGZvcihpbnQgaT0gMDsgaTxNQVhfTEVOOyBpKyspeworICAgICAgICAgICAgZXhwZWN0KGxhdGluVG9EZXYsKHNvdXJjZVtpXSksKGV4cGVjdGVkW2ldKSk7CisgICAgICAgICAgICBleHBlY3QoZGV2VG9MYXRpbiwoZXhwZWN0ZWRbaV0pLChzb3VyY2VbaV0pKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkICBUZXN0Q29tcG91bmRMYXRpblJUKCl7CisgICAgICAgIGludCBNQVhfTEVOID0xNTsKKyAgICAgICAgU3RyaW5nW10gIHNvdXJjZSA9IHsKKyAgICAgICAgICAgICJybWtcdTFFNjNcdTAxMTN0IiwKKyAgICAgICAgICAgICJcdTAxNUJyXHUwMTJCbWFkIiwKKyAgICAgICAgICAgICJiaGFnYXZhZGdcdTAxMkJ0XHUwMTAxIiwKKyAgICAgICAgICAgICJhZGh5XHUwMTAxeWEiLAorICAgICAgICAgICAgImFyanVuYSIsCisgICAgICAgICAgICAidmlcdTFFNjNcdTAxMDFkYSIsCisgICAgICAgICAgICAieVx1MDE0RGdhIiwKKyAgICAgICAgICAgICJkaHJcdTAzMjV0YXJcdTAxMDFcdTFFNjNcdTFFNkRyYSIsCisgICAgICAgICAgICAidXZcdTAxMDFjclx1MDMyNSIsCisgICAgICAgICAgICAiZGhhcm1ha1x1MUU2M1x1MDExM3RyXHUwMTEzIiwKKyAgICAgICAgICAgICJrdXJ1a1x1MUU2M1x1MDExM3RyXHUwMTEzIiwKKyAgICAgICAgICAgICJzYW1hdlx1MDExM3RcdTAxMDEiLAorICAgICAgICAgICAgInl1eXV0c2F2YVx1MUUyNSIsCisgICAgICAgICAgICAibVx1MDEwMW1ha1x1MDEwMVx1MUUyNSIsCisgICAgICAgIC8vICJwXHUwMTAxXHUxRTQ3XHUxRTBEYXZcdTAxMDFcdTAxNUJjYWl2YSIsCisgICAgICAgICAgICAia2ltYWt1cnZhdGEiLAorICAgICAgICAgICAgInNhblx1MDMwNGphdmEiCisgICAgICAgIH07CisgICAgICAgIFN0cmluZ1tdICBleHBlY3RlZCA9IHsKKyAgICAgICAgICAgICJcdTA5MzBcdTA5NERcdTA5MkVcdTA5NERcdTA5MTVcdTA5NERcdTA5MzdcdTA5NDdcdTA5MjRcdTA5NEQiLAorICAgICAgICAgICAgIlx1MDkzNlx1MDk0ZFx1MDkzMFx1MDk0MFx1MDkyZVx1MDkyNlx1MDk0ZCIsCisgICAgICAgICAgICAiXHUwOTJkXHUwOTE3XHUwOTM1XHUwOTI2XHUwOTRkXHUwOTE3XHUwOTQwXHUwOTI0XHUwOTNlIiwKKyAgICAgICAgICAgICJcdTA5MDVcdTA5MjdcdTA5NGRcdTA5MmZcdTA5M2VcdTA5MmYiLAorICAgICAgICAgICAgIlx1MDkwNVx1MDkzMFx1MDk0ZFx1MDkxY1x1MDk0MVx1MDkyOCIsCisgICAgICAgICAgICAiXHUwOTM1XHUwOTNmXHUwOTM3XHUwOTNlXHUwOTI2IiwKKyAgICAgICAgICAgICJcdTA5MmZcdTA5NGJcdTA5MTciLAorICAgICAgICAgICAgIlx1MDkyN1x1MDk0M1x1MDkyNFx1MDkzMFx1MDkzZVx1MDkzN1x1MDk0ZFx1MDkxZlx1MDk0ZFx1MDkzMCIsCisgICAgICAgICAgICAiXHUwOTA5XHUwOTM1XHUwOTNFXHUwOTFBXHUwOTQzIiwKKyAgICAgICAgICAgICJcdTA5MjdcdTA5MzBcdTA5NGRcdTA5MmVcdTA5MTVcdTA5NGRcdTA5MzdcdTA5NDdcdTA5MjRcdTA5NGRcdTA5MzBcdTA5NDciLAorICAgICAgICAgICAgIlx1MDkxNVx1MDk0MVx1MDkzMFx1MDk0MVx1MDkxNVx1MDk0ZFx1MDkzN1x1MDk0N1x1MDkyNFx1MDk0ZFx1MDkzMFx1MDk0NyIsCisgICAgICAgICAgICAiXHUwOTM4XHUwOTJlXHUwOTM1XHUwOTQ3XHUwOTI0XHUwOTNlIiwKKyAgICAgICAgICAgICJcdTA5MmZcdTA5NDFcdTA5MmZcdTA5NDFcdTA5MjRcdTA5NGRcdTA5MzhcdTA5MzVcdTA5MDMiLAorICAgICAgICAgICAgIlx1MDkyZVx1MDkzZVx1MDkyZVx1MDkxNVx1MDkzZVx1MDkwMyIsCisgICAgICAgIC8vICAiXHUwOTJhXHUwOTNlXHUwOTIzXHUwOTRkXHUwOTIxXHUwOTM1XHUwOTNlXHUwOTM2XHUwOTRkXHUwOTFhXHUwOTQ4XHUwOTM1IiwKKyAgICAgICAgICAgICJcdTA5MTVcdTA5M2ZcdTA5MmVcdTA5MTVcdTA5NDFcdTA5MzBcdTA5NGRcdTA5MzVcdTA5MjQiLAorICAgICAgICAgICAgIlx1MDkzOFx1MDkwMlx1MDkxY1x1MDkzNSIKKyAgICAgICAgfTsKKworICAgICAgICBUcmFuc2xpdGVyYXRvciBsYXRpblRvRGV2VG9MYXRpbj1UcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgiTGF0aW4tRGV2YW5hZ2FyaTtEZXZhbmFnYXJpLUxhdGluIiwgVHJhbnNsaXRlcmF0b3IuRk9SV0FSRCk7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIGRldlRvTGF0aW5Ub0Rldj1UcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgiRGV2YW5hZ2FyaS1MYXRpbjtMYXRpbi1EZXZhbmFnYXJpIiwgVHJhbnNsaXRlcmF0b3IuRk9SV0FSRCk7CisgICAgICAgIGZvcihpbnQgaT0gMDsgaTxNQVhfTEVOOyBpKyspeworICAgICAgICAgICAgZXhwZWN0KGxhdGluVG9EZXZUb0xhdGluLChzb3VyY2VbaV0pLChzb3VyY2VbaV0pKTsKKyAgICAgICAgICAgIGV4cGVjdChkZXZUb0xhdGluVG9EZXYsKGV4cGVjdGVkW2ldKSwoZXhwZWN0ZWRbaV0pKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAvKioKKyAgICAgKiBUZXN0IEd1cm11a2hpLURldmFuYWdhcmkgVGlwcGkgYW5kIEJpbmRpCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEd1cm11a2hpRGV2YW5hZ2FyaSgpeworICAgICAgICAvLyB0aGUgcnVsZSBzYXlzOgorICAgICAgICAvLyAoXHUwOTAyKSAod2hlbiBwcmVjZWRlZCBieSB2b3dlbCkgICAgICAtLS0+ICAoXHUwQTAyKQorICAgICAgICAvLyAoXHUwOTAyKSAod2hlbiBwcmVjZWRlZCBieSBjb25zb25hbnQpICAtLS0+ICAoXHUwQTcwKQorCisgICAgICAgIFVuaWNvZGVTZXQgdm93ZWwgPW5ldyBVbmljb2RlU2V0KCJbXHUwOTA1LVx1MDkwQSBcdTA5MEZcdTA5MTBcdTA5MTNcdTA5MTQgXHUwOTNlLVx1MDk0Mlx1MDk0N1x1MDk0OFx1MDk0Qlx1MDk0Q1x1MDk0RF0iKTsKKyAgICAgICAgVW5pY29kZVNldCBub25fdm93ZWwgPW5ldyBVbmljb2RlU2V0KCJbXHUwOTE1LVx1MDkyOFx1MDkyQS1cdTA5MzBdIik7CisKKyAgICAgICAgVW5pY29kZVNldEl0ZXJhdG9yIHZJdGVyID0gbmV3IFVuaWNvZGVTZXRJdGVyYXRvcih2b3dlbCk7CisgICAgICAgIFVuaWNvZGVTZXRJdGVyYXRvciBudkl0ZXIgPSBuZXcgVW5pY29kZVNldEl0ZXJhdG9yKG5vbl92b3dlbCk7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHRyYW5zID0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoIkRldmFuYWdhcmktR3VybXVraGkiKTsKKyAgICAgICAgU3RyaW5nQnVmZmVyIHNyYyA9IG5ldyBTdHJpbmdCdWZmZXIoIiBcdTA5MDIiKTsKKyAgICAgICAgU3RyaW5nQnVmZmVyIGV4cGVjdCA9IG5ldyBTdHJpbmdCdWZmZXIoIiBcdTBBMDIiKTsKKyAgICAgICAgd2hpbGUodkl0ZXIubmV4dCgpKXsKKyAgICAgICAgICAgIHNyYy5zZXRDaGFyQXQoMCwoY2hhcikgdkl0ZXIuY29kZXBvaW50KTsKKyAgICAgICAgICAgIGV4cGVjdC5zZXRDaGFyQXQoMCwoY2hhcikgKHZJdGVyLmNvZGVwb2ludCsweDAxMDApKTsKKyAgICAgICAgICAgIGV4cGVjdCh0cmFucyxzcmMudG9TdHJpbmcoKSxleHBlY3QudG9TdHJpbmcoKSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGV4cGVjdC5zZXRDaGFyQXQoMSwnXHUwQTcwJyk7CisgICAgICAgIHdoaWxlKG52SXRlci5uZXh0KCkpeworICAgICAgICAgICAgLy9zcmMuc2V0Q2hhckF0KDAsKGNoYXIpIG52SXRlci5jb2RlcG9pbnQpOworICAgICAgICAgICAgc3JjLnNldENoYXJBdCgwLChjaGFyKW52SXRlci5jb2RlcG9pbnQpOworICAgICAgICAgICAgZXhwZWN0LnNldENoYXJBdCgwLChjaGFyKSAobnZJdGVyLmNvZGVwb2ludCsweDAxMDApKTsKKyAgICAgICAgICAgIGV4cGVjdCh0cmFucyxzcmMudG9TdHJpbmcoKSxleHBlY3QudG9TdHJpbmcoKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgLyoqCisgICAgICogVGVzdCBpbnN0YW50aWF0aW9uIGZyb20gYSBsb2NhbGUuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdExvY2FsZUluc3RhbnRpYXRpb24oKSB7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgicnVfUlUtTGF0aW4iKTsKKyAgICAgICAgZXhwZWN0KHQsICJcdTA0MzAiLCAiYSIpOworCisgICAgICAgIHQgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgiZW4tZWwiKTsKKyAgICAgICAgZXhwZWN0KHQsICJhIiwgIlx1MDNCMSIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3QgdGl0bGUgY2FzZSBoYW5kbGluZyBvZiBhY2NlbnQgKHNob3VsZCBpZ25vcmUgYWNjZW50cykKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0VGl0bGVBY2NlbnRzKCkgeworICAgICAgICBUcmFuc2xpdGVyYXRvciB0ID0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoIlRpdGxlIik7CisgICAgICAgIGV4cGVjdCh0LCAiYVx1MDMwMGIgY2FuJ3QgYWJlIiwgIkFcdTAzMDBiIENhbid0IEFiZSIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEJhc2ljIHRlc3Qgb2YgYSBsb2NhbGUgcmVzb3VyY2UgYmFzZWQgcnVsZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0TG9jYWxlUmVzb3VyY2UoKSB7CisgICAgICAgIFN0cmluZyBEQVRBW10gPSB7CisgICAgICAgICAgICAvLyBpZCAgICAgICAgICAgICAgICAgICAgZnJvbSAgICAgICAgICAgICB0bworICAgICAgICAgICAgIkxhdGluLUdyZWVrL1VOR0VHTiIsICAgICJiIiwgICAgICAgICAgICAgIlx1MDNiY1x1MDNjMCIsCisgICAgICAgICAgICAiTGF0aW4tZWwiLCAgICAgICAgICAgICAgImIiLCAgICAgICAgICAgICAiXHUwM2JjXHUwM2MwIiwKKyAgICAgICAgICAgICJMYXRpbi1HcmVlayIsICAgICAgICAgICAiYiIsICAgICAgICAgICAgICJcdTAzQjIiLAorICAgICAgICAgICAgIkdyZWVrLUxhdGluL1VOR0VHTiIsICAgICJcdTAzQjIiLCAgICAgICAgInYiLAorICAgICAgICAgICAgImVsLUxhdGluIiwgICAgICAgICAgICAgICJcdTAzQjIiLCAgICAgICAgInYiLAorICAgICAgICAgICAgIkdyZWVrLUxhdGluIiwgICAgICAgICAgICJcdTAzQjIiLCAgICAgICAgImIiLAorICAgICAgICB9OworICAgICAgICBmb3IgKGludCBpPTA7IGk8REFUQS5sZW5ndGg7IGkrPTMpIHsKKyAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZShEQVRBW2ldKTsKKyAgICAgICAgICAgIGV4cGVjdCh0LCBEQVRBW2krMV0sIERBVEFbaSsyXSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBNYWtlIHN1cmUgcGFyc2UgZXJyb3JzIHJlZmVyZW5jZSB0aGUgcmlnaHQgbGluZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0UGFyc2VFcnJvcigpIHsKKyAgICAgICAgU3RyaW5nIHJ1bGUgPQorICAgICAgICAgICAgImEgPiBiO1xuIiArCisgICAgICAgICAgICAiIyBtb3JlIHN0dWZmXG4iICsKKyAgICAgICAgICAgICJkIDw8IGI7IjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQgPSBUcmFuc2xpdGVyYXRvci5jcmVhdGVGcm9tUnVsZXMoIklEIiwgcnVsZSwgVHJhbnNsaXRlcmF0b3IuRk9SV0FSRCk7CisgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBTdHJpbmcgZXJyID0gZS5nZXRNZXNzYWdlKCk7CisgICAgICAgICAgICBpZiAoZXJyLmluZGV4T2YoImQgPDwgYiIpID49IDApIHsKKyAgICAgICAgICAgICAgICBsb2dsbigiT2s6ICIgKyBlcnIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogIiArIGVycik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZXJybG4oIkZBSUw6IG5vIHN5bnRheCBlcnJvciIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIE1ha2Ugc3VyZSBzZXRzIG9uIG91dHB1dCBhcmUgZGlzYWxsb3dlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0T3V0cHV0U2V0KCkgeworICAgICAgICBTdHJpbmcgcnVsZSA9ICIkc2V0ID0gW2EtY20tbl07IGIgPiAkc2V0OyI7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQgPSBudWxsOworICAgICAgICB0cnkgeworICAgICAgICAgICAgdCA9IFRyYW5zbGl0ZXJhdG9yLmNyZWF0ZUZyb21SdWxlcygiSUQiLCBydWxlLCBUcmFuc2xpdGVyYXRvci5GT1JXQVJEKTsKKyAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGxvZ2xuKCJPazogIiArIGUuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBlcnJsbigiRkFJTDogTm8gc3ludGF4IGVycm9yIik7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdCB0aGUgdXNlIHZhcmlhYmxlIHJhbmdlIHByYWdtYSwgbWFraW5nIHN1cmUgdGhhdCB1c2Ugb2YKKyAgICAgKiB2YXJpYWJsZSByYW5nZSBjaGFyYWN0ZXJzIGlzIGRldGVjdGVkIGFuZCBmbGFnZ2VkIGFzIGFuIGVycm9yLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RWYXJpYWJsZVJhbmdlKCkgeworICAgICAgICBTdHJpbmcgcnVsZSA9ICJ1c2UgdmFyaWFibGUgcmFuZ2UgMHg3MCAweDcyOyBhID4gQTsgYiA+IEI7IHEgPiBROyI7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBUcmFuc2xpdGVyYXRvciB0ID0KKyAgICAgICAgICAgICAgICBUcmFuc2xpdGVyYXRvci5jcmVhdGVGcm9tUnVsZXMoIklEIiwgcnVsZSwgVHJhbnNsaXRlcmF0b3IuRk9SV0FSRCk7CisgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBsb2dsbigiT2s6ICIgKyBlLmdldE1lc3NhZ2UoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZXJybG4oIkZBSUw6IE5vIHN5bnRheCBlcnJvciIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3QgaW52YWxpZCBwb3N0IGNvbnRleHQgZXJyb3IgaGFuZGxpbmcKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0SW52YWxpZFBvc3RDb250ZXh0KCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgVHJhbnNsaXRlcmF0b3IgdCA9CisgICAgICAgICAgICAgICAgVHJhbnNsaXRlcmF0b3IuY3JlYXRlRnJvbVJ1bGVzKCJJRCIsICJhfWJ7Yz5kOyIsIFRyYW5zbGl0ZXJhdG9yLkZPUldBUkQpOworICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgU3RyaW5nIG1zZyA9IGUuZ2V0TWVzc2FnZSgpOworICAgICAgICAgICAgaWYgKG1zZy5pbmRleE9mKCJhfWJ7YyIpID49IDApIHsKKyAgICAgICAgICAgICAgICBsb2dsbigiT2s6ICIgKyBtc2cpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogIiArIG1zZyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZXJybG4oIkZBSUw6IE5vIHN5bnRheCBlcnJvciIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3QgSUQgZm9ybSB2YXJpYW50cworICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RJREZvcm1zKCkgeworICAgICAgICBTdHJpbmcgREFUQVtdID0geworICAgICAgICAgICAgIk5GQyIsIG51bGwsICJORkQiLAorICAgICAgICAgICAgIm5mZCIsIG51bGwsICJORkMiLCAvLyBtYWtlIHN1cmUgY2FzZSBpcyBpZ25vcmVkCisgICAgICAgICAgICAiQW55LU5GS0QiLCBudWxsLCAiQW55LU5GS0MiLAorICAgICAgICAgICAgIk51bGwiLCBudWxsLCAiTnVsbCIsCisgICAgICAgICAgICAiLW5ma2MiLCAibmZrYyIsICJORktEIiwKKyAgICAgICAgICAgICItbmZrYy8iLCAibmZrYyIsICJORktEIiwKKyAgICAgICAgICAgICJMYXRpbi1HcmVlay9VTkdFR04iLCBudWxsLCAiR3JlZWstTGF0aW4vVU5HRUdOIiwKKyAgICAgICAgICAgICJHcmVlay9VTkdFR04tTGF0aW4iLCAiR3JlZWstTGF0aW4vVU5HRUdOIiwgIkxhdGluLUdyZWVrL1VOR0VHTiIsCisgICAgICAgICAgICAiQmVuZ2FsaS1EZXZhbmFnYXJpLyIsICJCZW5nYWxpLURldmFuYWdhcmkiLCAiRGV2YW5hZ2FyaS1CZW5nYWxpIiwKKyAgICAgICAgICAgICJTb3VyY2UtIiwgbnVsbCwgbnVsbCwKKyAgICAgICAgICAgICJTb3VyY2UvVmFyaWFudC0iLCBudWxsLCBudWxsLAorICAgICAgICAgICAgIlNvdXJjZS0vVmFyaWFudCIsIG51bGwsIG51bGwsCisgICAgICAgICAgICAiL1ZhcmlhbnQiLCBudWxsLCBudWxsLAorICAgICAgICAgICAgIi9WYXJpYW50LSIsIG51bGwsIG51bGwsCisgICAgICAgICAgICAiLS9WYXJpYW50IiwgbnVsbCwgbnVsbCwKKyAgICAgICAgICAgICItLyIsIG51bGwsIG51bGwsCisgICAgICAgICAgICAiLSIsIG51bGwsIG51bGwsCisgICAgICAgICAgICAiLyIsIG51bGwsIG51bGwsCisgICAgICAgIH07CisKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPERBVEEubGVuZ3RoOyBpKz0zKSB7CisgICAgICAgICAgICBTdHJpbmcgSUQgPSBEQVRBW2ldOworICAgICAgICAgICAgU3RyaW5nIGV4cElEID0gREFUQVtpKzFdOworICAgICAgICAgICAgU3RyaW5nIGV4cEludklEID0gREFUQVtpKzJdOworICAgICAgICAgICAgYm9vbGVhbiBleHBWYWxpZCA9IChleHBJbnZJRCAhPSBudWxsKTsKKyAgICAgICAgICAgIGlmIChleHBJRCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgZXhwSUQgPSBJRDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgVHJhbnNsaXRlcmF0b3IgdCA9CisgICAgICAgICAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKElEKTsKKyAgICAgICAgICAgICAgICBUcmFuc2xpdGVyYXRvciB1ID0gdC5nZXRJbnZlcnNlKCk7CisgICAgICAgICAgICAgICAgaWYgKHQuZ2V0SUQoKS5lcXVhbHMoZXhwSUQpICYmCisgICAgICAgICAgICAgICAgICAgIHUuZ2V0SUQoKS5lcXVhbHMoZXhwSW52SUQpKSB7CisgICAgICAgICAgICAgICAgICAgIGxvZ2xuKCJPazogIiArIElEICsgIi5nZXRJbnZlcnNlKCkgPT4gIiArIGV4cEludklEKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogZ2V0SW5zdGFuY2UoIiArIElEICsgIikgPT4gIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgIHQuZ2V0SUQoKSArICIgeCBnZXRJbnZlcnNlKCkgPT4gIiArIHUuZ2V0SUQoKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICIsIGV4cGVjdGVkICIgKyBleHBJbnZJRCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWV4cFZhbGlkKSB7CisgICAgICAgICAgICAgICAgICAgIGxvZ2xuKCJPazogZ2V0SW5zdGFuY2UoIiArIElEICsgIikgPT4gIiArIGUuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogZ2V0SW5zdGFuY2UoIiArIElEICsgIikgPT4gIiArIGUuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGNoZWNrUnVsZXMoU3RyaW5nIGxhYmVsLCBUcmFuc2xpdGVyYXRvciB0MiwgU3RyaW5nIHRlc3RSdWxlc0ZvcndhcmQpIHsKKyAgICAgICAgU3RyaW5nIHJ1bGVzMiA9IHQyLnRvUnVsZXModHJ1ZSk7CisgICAgICAgIC8vcnVsZXMyID0gVGVzdFV0aWxpdHkucmVwbGFjZUFsbChydWxlczIsIG5ldyBVbmljb2RlU2V0KCJbJyAnXG5ccl0iKSwgIiIpOworICAgICAgICBydWxlczIgPSBUZXN0VXRpbGl0eS5yZXBsYWNlKHJ1bGVzMiwgIiAiLCAiIik7CisgICAgICAgIHJ1bGVzMiA9IFRlc3RVdGlsaXR5LnJlcGxhY2UocnVsZXMyLCAiXG4iLCAiIik7CisgICAgICAgIHJ1bGVzMiA9IFRlc3RVdGlsaXR5LnJlcGxhY2UocnVsZXMyLCAiXHIiLCAiIik7CisgICAgICAgIHRlc3RSdWxlc0ZvcndhcmQgPSBUZXN0VXRpbGl0eS5yZXBsYWNlKHRlc3RSdWxlc0ZvcndhcmQsICIgIiwgIiIpOworCisgICAgICAgIGlmICghcnVsZXMyLmVxdWFscyh0ZXN0UnVsZXNGb3J3YXJkKSkgeworICAgICAgICAgICAgZXJybG4obGFiZWwpOworICAgICAgICAgICAgbG9nbG4oIkdFTkVSQVRFRCBSVUxFUzogIiArIHJ1bGVzMik7CisgICAgICAgICAgICBsb2dsbigiU0hPVUxEIEJFOiAgICAgICAiICsgdGVzdFJ1bGVzRm9yd2FyZCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBNYXJrJ3MgdG9SdWxlcyB0ZXN0LgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RUb1J1bGVzTWFyaygpIHsKKworICAgICAgICBTdHJpbmcgdGVzdFJ1bGVzID0KKyAgICAgICAgICAgICI6OltbOkxhdGluOl1bOk1hcms6XV07IgorICAgICAgICAgICAgKyAiOjpORktEIChORkMpOyIKKyAgICAgICAgICAgICsgIjo6TG93ZXIgKExvd2VyKTsiCisgICAgICAgICAgICArICJhIDw+IFxcdTAzQjE7IiAvLyBhbHBoYQorICAgICAgICAgICAgKyAiOjpORktDIChORkQpOyIKKyAgICAgICAgICAgICsgIjo6VXBwZXIgKExvd2VyKTsiCisgICAgICAgICAgICArICI6Okxvd2VyICgpOyIKKyAgICAgICAgICAgICsgIjo6KFtbOkdyZWVrOl1bOk1hcms6XV0pOyIKKyAgICAgICAgICAgIDsKKyAgICAgICAgU3RyaW5nIHRlc3RSdWxlc0ZvcndhcmQgPQorICAgICAgICAgICAgIjo6W1s6TGF0aW46XVs6TWFyazpdXTsiCisgICAgICAgICAgICArICI6Ok5GS0QoTkZDKTsiCisgICAgICAgICAgICArICI6Okxvd2VyKExvd2VyKTsiCisgICAgICAgICAgICArICJhID4gXFx1MDNCMTsiCisgICAgICAgICAgICArICI6Ok5GS0MoTkZEKTsiCisgICAgICAgICAgICArICI6OlVwcGVyIChMb3dlcik7IgorICAgICAgICAgICAgKyAiOjpMb3dlciAoKTsiCisgICAgICAgICAgICA7CisgICAgICAgIFN0cmluZyB0ZXN0UnVsZXNCYWNrd2FyZCA9CisgICAgICAgICAgICAiOjpbWzpHcmVlazpdWzpNYXJrOl1dOyIKKyAgICAgICAgICAgICsgIjo6TG93ZXIgKFVwcGVyKTsiCisgICAgICAgICAgICArICI6Ok5GRChORktDKTsiCisgICAgICAgICAgICArICJcXHUwM0IxID4gYTsiCisgICAgICAgICAgICArICI6Okxvd2VyKExvd2VyKTsiCisgICAgICAgICAgICArICI6Ok5GQyhORktEKTsiCisgICAgICAgICAgICA7CisgICAgICAgIFN0cmluZyBzb3VyY2UgPSAiXHUwMEUxIjsgLy8gYS1hY3V0ZQorICAgICAgICBTdHJpbmcgdGFyZ2V0ID0gIlx1MDNBQyI7IC8vIGFscGhhLWFjdXRlCisKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgdDIgPSBUcmFuc2xpdGVyYXRvci5jcmVhdGVGcm9tUnVsZXMoInNvdXJjZS10YXJnZXQiLCB0ZXN0UnVsZXMsIFRyYW5zbGl0ZXJhdG9yLkZPUldBUkQpOworICAgICAgICBUcmFuc2xpdGVyYXRvciB0MyA9IFRyYW5zbGl0ZXJhdG9yLmNyZWF0ZUZyb21SdWxlcygidGFyZ2V0LXNvdXJjZSIsIHRlc3RSdWxlcywgVHJhbnNsaXRlcmF0b3IuUkVWRVJTRSk7CisKKyAgICAgICAgZXhwZWN0KHQyLCBzb3VyY2UsIHRhcmdldCk7CisgICAgICAgIGV4cGVjdCh0MywgdGFyZ2V0LCBzb3VyY2UpOworCisgICAgICAgIGNoZWNrUnVsZXMoIkZhaWxlZCB0b1J1bGVzIEZPUldBUkQiLCB0MiwgdGVzdFJ1bGVzRm9yd2FyZCk7CisgICAgICAgIGNoZWNrUnVsZXMoIkZhaWxlZCB0b1J1bGVzIEJBQ0tXQVJEIiwgdDMsIHRlc3RSdWxlc0JhY2t3YXJkKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXN0IEVzY2FwZSBhbmQgVW5lc2NhcGUgdHJhbnNsaXRlcmF0b3JzLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RFc2NhcGUoKSB7CisgICAgICAgIGV4cGVjdChUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgiSGV4LUFueSIpLAorICAgICAgICAgICAgICAgIlxceHs0MH1cXFUwMDAwMDAzMSYjeDMyOyYjODE7IiwKKyAgICAgICAgICAgICAgICJAMTJRIik7CisgICAgICAgIGV4cGVjdChUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgiQW55LUhleC9DIiksCisgICAgICAgICAgICAgICBDaGFyc1RvVW5pY29kZVN0cmluZygiQVxcVTAwMTBCRUVGXFx1RkVFRCIpLAorICAgICAgICAgICAgICAgIlxcdTAwNDFcXFUwMDEwQkVFRlxcdUZFRUQiKTsKKyAgICAgICAgZXhwZWN0KFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKCJBbnktSGV4L0phdmEiKSwKKyAgICAgICAgICAgICAgIENoYXJzVG9Vbmljb2RlU3RyaW5nKCJBXFxVMDAxMEJFRUZcXHVGRUVEIiksCisgICAgICAgICAgICAgICAiXFx1MDA0MVxcdURCRUZcXHVERUVGXFx1RkVFRCIpOworICAgICAgICBleHBlY3QoVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoIkFueS1IZXgvUGVybCIpLAorICAgICAgICAgICAgICAgQ2hhcnNUb1VuaWNvZGVTdHJpbmcoIkFcXFUwMDEwQkVFRlxcdUZFRUQiKSwKKyAgICAgICAgICAgICAgICJcXHh7NDF9XFx4ezEwQkVFRn1cXHh7RkVFRH0iKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBNYWtlIHN1cmUgZGlzcGxheSBuYW1lcyBvZiB2YXJpYW50cyBsb29rIHJlYXNvbmFibGUuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdERpc3BsYXlOYW1lKCkgeworICAgICAgICBTdHJpbmcgREFUQVtdID0geworICAgICAgICAgICAgLy8gSUQsIGZvcndhcmQgbmFtZSwgcmV2ZXJzZSBuYW1lCisgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHRleHQgYXMgbmVjZXNzYXJ5IC0tIHRoZSBpbXBvcnRhbnQgdGhpbmcgaXMKKyAgICAgICAgICAgIC8vIG5vdCB0aGUgdGV4dCBpdHNlbGYsIGJ1dCBob3cgdmFyaW91cyBjYXNlcyBhcmUgaGFuZGxlZC4KKworICAgICAgICAgICAgLy8gQmFzaWMgdGVzdAorICAgICAgICAgICAgIkFueS1IZXgiLCAiQW55IHRvIEhleCBFc2NhcGUiLCAiSGV4IEVzY2FwZSB0byBBbnkiLAorCisgICAgICAgICAgICAvLyBWYXJpYW50cworICAgICAgICAgICAgIkFueS1IZXgvUGVybCIsICJBbnkgdG8gSGV4IEVzY2FwZS9QZXJsIiwgIkhleCBFc2NhcGUgdG8gQW55L1BlcmwiLAorCisgICAgICAgICAgICAvLyBUYXJnZXQtb25seSBJRHMKKyAgICAgICAgICAgICJORkMiLCAiQW55IHRvIE5GQyIsICJBbnkgdG8gTkZEIiwKKyAgICAgICAgfTsKKworICAgICAgICBMb2NhbGUgVVMgPSBMb2NhbGUuVVM7CisKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPERBVEEubGVuZ3RoOyBpKz0zKSB7CisgICAgICAgICAgICBTdHJpbmcgbmFtZSA9IFRyYW5zbGl0ZXJhdG9yLmdldERpc3BsYXlOYW1lKERBVEFbaV0sIFVTKTsKKyAgICAgICAgICAgIGlmICghbmFtZS5lcXVhbHMoREFUQVtpKzFdKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiAiICsgREFUQVtpXSArICIuZ2V0RGlzcGxheU5hbWUoKSA9PiAiICsKKyAgICAgICAgICAgICAgICAgICAgICBuYW1lICsgIiwgZXhwZWN0ZWQgIiArIERBVEFbaSsxXSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGxvZ2xuKCJPazogIiArIERBVEFbaV0gKyAiLmdldERpc3BsYXlOYW1lKCkgPT4gIiArIG5hbWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgVHJhbnNsaXRlcmF0b3IgdCA9IFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKERBVEFbaV0sIFRyYW5zbGl0ZXJhdG9yLlJFVkVSU0UpOworICAgICAgICAgICAgbmFtZSA9IFRyYW5zbGl0ZXJhdG9yLmdldERpc3BsYXlOYW1lKHQuZ2V0SUQoKSwgVVMpOworICAgICAgICAgICAgaWYgKCFuYW1lLmVxdWFscyhEQVRBW2krMl0pKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6ICIgKyB0LmdldElEKCkgKyAiLmdldERpc3BsYXlOYW1lKCkgPT4gIiArCisgICAgICAgICAgICAgICAgICAgICAgbmFtZSArICIsIGV4cGVjdGVkICIgKyBEQVRBW2krMl0pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBsb2dsbigiT2s6ICIgKyB0LmdldElEKCkgKyAiLmdldERpc3BsYXlOYW1lKCkgPT4gIiArIG5hbWUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdCBhbmNob3IgbWFza2luZworICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RBbmNob3JNYXNraW5nKCkgeworICAgICAgICBTdHJpbmcgcnVsZSA9ICJeYSA+IFE7IGEgPiBxOyI7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBUcmFuc2xpdGVyYXRvciB0ID0gVHJhbnNsaXRlcmF0b3IuY3JlYXRlRnJvbVJ1bGVzKCJJRCIsIHJ1bGUsIFRyYW5zbGl0ZXJhdG9yLkZPUldBUkQpOworICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6ICIgKyBydWxlICsgIiA9PiAiICsgZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nW11bXSByZWdpc3RlclJ1bGVzID0geworICAgICAgICB7IkFueS1EZXYxIiwgInggPiBYOyB5ID4gWTsifSwKKyAgICAgICAgeyJBbnktRGV2MiIsICJYWSA+IFoifSwKKyAgICAgICAgeyJHcmVlay1MYXRpbi9GQUtFIiwKKyAgICAgICAgICAgICJbXls6TDpdWzpNOl1dIHsgXHUwM2JjXHUwM2MwID4gYiA7ICIrCisgICAgICAgICAgICAiXHUwM2JjXHUwM2MwIH0gW15bOkw6XVs6TTpdXSA+IGIgOyAiKworICAgICAgICAgICAgIlteWzpMOl1bOk06XV0geyBbXHUwMzljXHUwM2JjXVtcdTAzYTBcdTAzYzBdID4gQiA7ICIrCisgICAgICAgICAgICAiW1x1MDM5Y1x1MDNiY11bXHUwM2EwXHUwM2MwXSB9IFteWzpMOl1bOk06XV0gPiBCIDsiCisgICAgICAgICAgICB9LAorICAgIH07CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIERFU0VSRVRfREVFID0gVVRGMTYudmFsdWVPZigweDEwNDE0KTsKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIERFU0VSRVRfZGVlID0gVVRGMTYudmFsdWVPZigweDEwNDNDKTsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmdbXVtdIHRlc3RDYXNlcyA9IHsKKworICAgICAgICAvLyBOT1JNQUxJWkFUSU9OCisgICAgICAgIC8vIHNob3VsZCBhZGQgbW9yZSB0ZXN0IGNhc2VzCisgICAgICAgIHsiTkZEIiAsICJhXHUwMzAwIFx1MDBFMCBcdTExMDBcdTExNjEgXHVGRjc2XHVGRjlFXHUwM0QzIn0sCisgICAgICAgIHsiTkZDIiAsICJhXHUwMzAwIFx1MDBFMCBcdTExMDBcdTExNjEgXHVGRjc2XHVGRjlFXHUwM0QzIn0sCisgICAgICAgIHsiTkZLRCIsICJhXHUwMzAwIFx1MDBFMCBcdTExMDBcdTExNjEgXHVGRjc2XHVGRjlFXHUwM0QzIn0sCisgICAgICAgIHsiTkZLQyIsICJhXHUwMzAwIFx1MDBFMCBcdTExMDBcdTExNjEgXHVGRjc2XHVGRjlFXHUwM0QzIn0sCisKKyAgICAgICAgLy8gbXAgLT4gYiBCVUcKKyAgICAgICAgeyJHcmVlay1MYXRpbi9VTkdFR04iLCAiKFx1MDNCQ1x1MDNDMCkiLCAiKGIpIn0sCisgICAgICAgIHsiR3JlZWstTGF0aW4vRkFLRSIsICIoXHUwM0JDXHUwM0MwKSIsICIoYikifSwKKworICAgICAgICAvLyBjaGVjayBmb3IgZGV2YW5hZ2FyaSBidWcKKyAgICAgICAgeyJuZmQ7RGV2MTtEZXYyO25mYyIsICJ4eSIsICJaIn0sCisKKyAgICAgICAgLy8gZmYsIGksIGRvdGxlc3MtaSwgSSwgZG90dGVkLUksIExKTGpsaiBkZXNlcmV0IGRlZURFRQorICAgICAgICB7IlRpdGxlIiwgImFiJ2NEIGZmaVx1MDEzMUlcdTAxMzAgXHUwMUM3XHUwMUM4XHUwMUM5ICIgKyBERVNFUkVUX2RlZSArIERFU0VSRVRfREVFLAorICAgICAgICAgICAgICAgICAgIkFiJ2NkIEZmaVx1MDEzMWlpXHUwMzA3IFx1MDFDOFx1MDFDOVx1MDFDOSAiICsgREVTRVJFVF9ERUUgKyBERVNFUkVUX2RlZX0sCisgICAgICAgIC8vVE9ETzogZW5hYmxlIHRoaXMgdGVzdCBvbmNlIFRpdGxlY2FzZSB3b3JrcyByaWdodAorICAgICAgICAvL3siVGl0bGUiLCAiXHVGQjAwaVx1MDEzMUlcdTAxMzAgXHUwMUM3XHUwMUM4XHUwMUM5ICIgKyBERVNFUkVUX2RlZSArIERFU0VSRVRfREVFLAorICAgICAgICAvLyAgICAgICAgICAiRmZpXHUwMTMxaWkgXHUwMUM4XHUwMUM5XHUwMUM5ICIgKyBERVNFUkVUX0RFRSArIERFU0VSRVRfZGVlfSwKKyAgICAgICAgCisgICAgICAgIHsiVXBwZXIiLCAiYWInY0QgXHVGQjAwaVx1MDEzMUlcdTAxMzAgXHUwMUM3XHUwMUM4XHUwMUM5ICIgKyBERVNFUkVUX2RlZSArIERFU0VSRVRfREVFLAorICAgICAgICAgICAgICAgICAgIkFCJ0NEIEZGSUlJXHUwMTMwIFx1MDFDN1x1MDFDN1x1MDFDNyAiICsgREVTRVJFVF9ERUUgKyBERVNFUkVUX0RFRX0sCisgICAgICAgIHsiTG93ZXIiLCAiYWInY0QgXHVGQjAwaVx1MDEzMUlcdTAxMzAgXHUwMUM3XHUwMUM4XHUwMUM5ICIgKyBERVNFUkVUX2RlZSArIERFU0VSRVRfREVFLAorICAgICAgICAgICAgICAgICAgImFiJ2NkIFx1RkIwMGlcdTAxMzFpaVx1MDMwNyBcdTAxQzlcdTAxQzlcdTAxQzkgIiArIERFU0VSRVRfZGVlICsgREVTRVJFVF9kZWV9LAorICAgICAgICAgICAgICAgICAgCisgICAgICAgIHsiVXBwZXIiLCAiYWInY0QgXHVGQjAwaVx1MDEzMUlcdTAxMzAgXHUwMUM3XHUwMUM4XHUwMUM5ICIgKyBERVNFUkVUX2RlZSArIERFU0VSRVRfREVFfSwKKyAgICAgICAgeyJMb3dlciIsICJhYidjRCBcdUZCMDBpXHUwMTMxSVx1MDEzMCBcdTAxQzdcdTAxQzhcdTAxQzkgIiArIERFU0VSRVRfZGVlICsgREVTRVJFVF9ERUV9LAorCisgICAgICAgICAvLyBGT1JNUyBPRiBTCisgICAgICAgIHsiR3JlZWstTGF0aW4vVU5HRUdOIiwgIlx1MDNDMyBcdTAzQzNcdTAzQzIgXHUwM0MyXHUwM0MzIiwgInMgc3Mgc1x1MDMzMXNcdTAzMzEifSwKKyAgICAgICAgeyJMYXRpbi1HcmVlay9VTkdFR04iLCAicyBzcyBzXHUwMzMxc1x1MDMzMSIsICJcdTAzQzMgXHUwM0MzXHUwM0MyIFx1MDNDMlx1MDNDMyJ9LAorICAgICAgICB7IkdyZWVrLUxhdGluIiwgIlx1MDNDMyBcdTAzQzNcdTAzQzIgXHUwM0MyXHUwM0MzIiwgInMgc3Mgc1x1MDMzMXNcdTAzMzEifSwKKyAgICAgICAgeyJMYXRpbi1HcmVlayIsICJzIHNzIHNcdTAzMzFzXHUwMzMxIiwgIlx1MDNDMyBcdTAzQzNcdTAzQzIgXHUwM0MyXHUwM0MzIn0sCisKKyAgICAgICAgLy8gVGF0aWFuYSBidWcKKyAgICAgICAgLy8gVXBwZXI6IFRBVFx1MDJCOVx1MDBDMk5BCisgICAgICAgIC8vIExvd2VyOiB0YXRcdTAyQjlcdTAwRTJuYQorICAgICAgICAvLyBUaXRsZTogVGF0XHUwMkI5XHUwMEUybmEKKyAgICAgICAgeyJVcHBlciIsICJ0YXRcdTAyQjlcdTAwRTJuYSIsICJUQVRcdTAyQjlcdTAwQzJOQSJ9LAorICAgICAgICB7Ikxvd2VyIiwgIlRBVFx1MDJCOVx1MDBDMk5BIiwgInRhdFx1MDJCOVx1MDBFMm5hIn0sCisgICAgICAgIHsiVGl0bGUiLCAidGF0XHUwMkI5XHUwMEUybmEiLCAiVGF0XHUwMkI5XHUwMEUybmEifSwKKyAgICB9OworCisgICAgcHVibGljIHZvaWQgVGVzdFNwZWNpYWxDYXNlcygpIHsKKyAgICAgICAgCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVnaXN0ZXJSdWxlcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgVHJhbnNsaXRlcmF0b3IgdCA9IFRyYW5zbGl0ZXJhdG9yLmNyZWF0ZUZyb21SdWxlcyhyZWdpc3RlclJ1bGVzW2ldWzBdLAorICAgICAgICAgICAgICAgIHJlZ2lzdGVyUnVsZXNbaV1bMV0sIFRyYW5zbGl0ZXJhdG9yLkZPUldBUkQpOworICAgICAgICAgICAgRHVtbXlGYWN0b3J5LmFkZChyZWdpc3RlclJ1bGVzW2ldWzBdLCB0KTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRlc3RDYXNlcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgU3RyaW5nIG5hbWUgPSB0ZXN0Q2FzZXNbaV1bMF07CisgICAgICAgICAgICBUcmFuc2xpdGVyYXRvciB0ID0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UobmFtZSk7CisgICAgICAgICAgICBTdHJpbmcgaWQgPSB0LmdldElEKCk7CisgICAgICAgICAgICBTdHJpbmcgc291cmNlID0gdGVzdENhc2VzW2ldWzFdOworICAgICAgICAgICAgU3RyaW5nIHRhcmdldCA9IG51bGw7CisKKyAgICAgICAgICAgIC8vIEF1dG9tYXRpYyBnZW5lcmF0aW9uIG9mIHRhcmdldHMsIHRvIG1ha2UgaXQgc2ltcGxlciB0byBhZGQgdGVzdCBjYXNlcyAoYW5kIG1vcmUgZmFpbC1zYWZlKQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAodGVzdENhc2VzW2ldLmxlbmd0aCA+IDIpICAgIHRhcmdldCA9IHRlc3RDYXNlc1tpXVsyXTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGlkLmVxdWFsc0lnbm9yZUNhc2UoIk5GRCIpKSAgICB0YXJnZXQgPSBjb20uaWJtLmljdS50ZXh0Lk5vcm1hbGl6ZXIubm9ybWFsaXplKHNvdXJjZSwgY29tLmlibS5pY3UudGV4dC5Ob3JtYWxpemVyLk5GRCk7CisgICAgICAgICAgICBlbHNlIGlmIChpZC5lcXVhbHNJZ25vcmVDYXNlKCJORkMiKSkgICAgdGFyZ2V0ID0gY29tLmlibS5pY3UudGV4dC5Ob3JtYWxpemVyLm5vcm1hbGl6ZShzb3VyY2UsIGNvbS5pYm0uaWN1LnRleHQuTm9ybWFsaXplci5ORkMpOworICAgICAgICAgICAgZWxzZSBpZiAoaWQuZXF1YWxzSWdub3JlQ2FzZSgiTkZLRCIpKSAgIHRhcmdldCA9IGNvbS5pYm0uaWN1LnRleHQuTm9ybWFsaXplci5ub3JtYWxpemUoc291cmNlLCBjb20uaWJtLmljdS50ZXh0Lk5vcm1hbGl6ZXIuTkZLRCk7CisgICAgICAgICAgICBlbHNlIGlmIChpZC5lcXVhbHNJZ25vcmVDYXNlKCJORktDIikpICAgdGFyZ2V0ID0gY29tLmlibS5pY3UudGV4dC5Ob3JtYWxpemVyLm5vcm1hbGl6ZShzb3VyY2UsIGNvbS5pYm0uaWN1LnRleHQuTm9ybWFsaXplci5ORktDKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGlkLmVxdWFsc0lnbm9yZUNhc2UoIkxvd2VyIikpICB0YXJnZXQgPSBVQ2hhcmFjdGVyLnRvTG93ZXJDYXNlKExvY2FsZS5VUywgc291cmNlKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGlkLmVxdWFsc0lnbm9yZUNhc2UoIlVwcGVyIikpICB0YXJnZXQgPSBVQ2hhcmFjdGVyLnRvVXBwZXJDYXNlKExvY2FsZS5VUywgc291cmNlKTsKKworICAgICAgICAgICAgZXhwZWN0KHQsIHNvdXJjZSwgdGFyZ2V0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIHNlZW1zIGxpa2UgdGhlcmUgc2hvdWxkIGJlIGFuIGVhc2llciB3YXkgdG8ganVzdCByZWdpc3RlciBhbiBpbnN0YW5jZSBvZiBhIHRyYW5zbGl0ZXJhdG9yCisKKyAgICBzdGF0aWMgY2xhc3MgRHVtbXlGYWN0b3J5IGltcGxlbWVudHMgVHJhbnNsaXRlcmF0b3IuRmFjdG9yeSB7CisgICAgICAgIHN0YXRpYyBEdW1teUZhY3Rvcnkgc2luZ2xldG9uID0gbmV3IER1bW15RmFjdG9yeSgpOworICAgICAgICBzdGF0aWMgSGFzaE1hcCBtID0gbmV3IEhhc2hNYXAoKTsKKworICAgICAgICAvLyBTaW5jZSBUcmFuc2xpdGVyYXRvcnMgYXJlIGltbXV0YWJsZSwgd2UgZG9uJ3QgaGF2ZSB0byBjbG9uZSBvbiBzZXQgJiBnZXQKKyAgICAgICAgc3RhdGljIHZvaWQgYWRkKFN0cmluZyBJRCwgVHJhbnNsaXRlcmF0b3IgdCkgeworICAgICAgICAgICAgbS5wdXQoSUQsIHQpOworICAgICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oIlJlZ2lzdGVyaW5nOiAiICsgSUQgKyAiLCAiICsgdC50b1J1bGVzKHRydWUpKTsKKyAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yLnJlZ2lzdGVyRmFjdG9yeShJRCwgc2luZ2xldG9uKTsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgVHJhbnNsaXRlcmF0b3IgZ2V0SW5zdGFuY2UoU3RyaW5nIElEKSB7CisgICAgICAgICAgICByZXR1cm4gKFRyYW5zbGl0ZXJhdG9yKSBtLmdldChJRCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0U3Vycm9nYXRlQ2FzaW5nICgpIHsKKyAgICAgICAgLy8gY2hlY2sgdGhhdCBjYXNpbmcgaGFuZGxlcyBzdXJyb2dhdGVzCisgICAgICAgIC8vIHRpdGxlY2FzZSBpcyBjdXJyZW50bHkgZGVmZWN0aXZlCisgICAgICAgIGludCBkZWUgPSBVVEYxNi5jaGFyQXQoREVTRVJFVF9kZWUsMCk7CisgICAgICAgIGludCBERUUgPSBVQ2hhcmFjdGVyLnRvVGl0bGVDYXNlKGRlZSk7CisgICAgICAgIGlmICghVVRGMTYudmFsdWVPZihERUUpLmVxdWFscyhERVNFUkVUX0RFRSkpIHsKKyAgICAgICAgICAgIGVycmxuKCJGYWlscyB0aXRsZWNhc2Ugb2Ygc3Vycm9nYXRlcyIgKyBJbnRlZ2VyLnRvU3RyaW5nKGRlZSwxNikgKyAiLCAiICsgSW50ZWdlci50b1N0cmluZyhERUUsMTYpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghVUNoYXJhY3Rlci50b1VwcGVyQ2FzZShERVNFUkVUX2RlZSArIERFU0VSRVRfREVFKS5lcXVhbHMoREVTRVJFVF9ERUUgKyBERVNFUkVUX0RFRSkpIHsKKyAgICAgICAgICAgIGVycmxuKCJGYWlscyB1cHBlcmNhc2Ugb2Ygc3Vycm9nYXRlcyIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFVQ2hhcmFjdGVyLnRvTG93ZXJDYXNlKERFU0VSRVRfZGVlICsgREVTRVJFVF9ERUUpLmVxdWFscyhERVNFUkVUX2RlZSArIERFU0VSRVRfZGVlKSkgeworICAgICAgICAgICAgZXJybG4oIkZhaWxzIGxvd2VyY2FzZSBvZiBzdXJyb2dhdGVzIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBDaGVjayB0byBzZWUgdGhhdCBpbmNyZW1lbnRhbCBnZXRzIGF0IGxlYXN0IHBhcnQgd2F5IHRocm91Z2ggYSByZWFzb25hYmxlIHN0cmluZy4KKworICAgIHB1YmxpYyB2b2lkIFRlc3RJbmNyZW1lbnRhbFByb2dyZXNzKCkgeworICAgICAgICBTdHJpbmcgbGF0aW5UZXN0ID0gIlRoZSBRdWljayBCcm93biBGb3guIjsKKyAgICAgICAgU3RyaW5nIGRldmFUZXN0ID0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoIkxhdGluLURldmFuYWdhcmkiKS50cmFuc2xpdGVyYXRlKGxhdGluVGVzdCk7CisgICAgICAgIFN0cmluZyBrYXRhVGVzdCA9IFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKCJMYXRpbi1LYXRha2FuYSIpLnRyYW5zbGl0ZXJhdGUobGF0aW5UZXN0KTsKKyAgICAgICAgU3RyaW5nW11bXSB0ZXN0cyA9IHsKKyAgICAgICAgICAgIHsiQW55IiwgbGF0aW5UZXN0fSwKKyAgICAgICAgICAgIHsiTGF0aW4iLCBsYXRpblRlc3R9LAorICAgICAgICAgICAgeyJIYWxmd2lkdGgiLCBsYXRpblRlc3R9LAorICAgICAgICAgICAgeyJEZXZhbmFnYXJpIiwgZGV2YVRlc3R9LAorICAgICAgICAgICAgeyJLYXRha2FuYSIsIGthdGFUZXN0fSwKKyAgICAgICAgfTsKKworICAgICAgICBFbnVtZXJhdGlvbiBzb3VyY2VzID0gVHJhbnNsaXRlcmF0b3IuZ2V0QXZhaWxhYmxlU291cmNlcygpOworICAgICAgICB3aGlsZShzb3VyY2VzLmhhc01vcmVFbGVtZW50cygpKSB7CisgICAgICAgICAgICBTdHJpbmcgc291cmNlID0gKFN0cmluZykgc291cmNlcy5uZXh0RWxlbWVudCgpOworICAgICAgICAgICAgU3RyaW5nIHRlc3QgPSBmaW5kTWF0Y2goc291cmNlLCB0ZXN0cyk7CisgICAgICAgICAgICBpZiAodGVzdCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgbG9nbG4oIlNraXBwaW5nICIgKyBzb3VyY2UgKyAiLVgiKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEVudW1lcmF0aW9uIHRhcmdldHMgPSBUcmFuc2xpdGVyYXRvci5nZXRBdmFpbGFibGVUYXJnZXRzKHNvdXJjZSk7CisgICAgICAgICAgICB3aGlsZSh0YXJnZXRzLmhhc01vcmVFbGVtZW50cygpKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHRhcmdldCA9IChTdHJpbmcpIHRhcmdldHMubmV4dEVsZW1lbnQoKTsKKyAgICAgICAgICAgICAgICBFbnVtZXJhdGlvbiB2YXJpYW50cyA9IFRyYW5zbGl0ZXJhdG9yLmdldEF2YWlsYWJsZVZhcmlhbnRzKHNvdXJjZSwgdGFyZ2V0KTsKKyAgICAgICAgICAgICAgICB3aGlsZSh2YXJpYW50cy5oYXNNb3JlRWxlbWVudHMoKSkgeworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgdmFyaWFudCA9IChTdHJpbmcpIHZhcmlhbnRzLm5leHRFbGVtZW50KCk7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBpZCA9IHNvdXJjZSArICItIiArIHRhcmdldCArICIvIiArIHZhcmlhbnQ7CisKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGZpbHRlciA9IGdldEZpbHRlcigpOworICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyICE9IG51bGwgJiYgaWQuaW5kZXhPZihmaWx0ZXIpIDwgMCkgY29udGludWU7CisKKyAgICAgICAgICAgICAgICAgICAgVHJhbnNsaXRlcmF0b3IgdCA9IFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKGlkKTsKKyAgICAgICAgICAgICAgICAgICAgQ2hlY2tJbmNyZW1lbnRhbEF1eCh0LCB0ZXN0KTsKKworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgcmV2ID0gdC50cmFuc2xpdGVyYXRlKHRlc3QpOworICAgICAgICAgICAgICAgICAgICBUcmFuc2xpdGVyYXRvciBpbnYgPSB0LmdldEludmVyc2UoKTsKKyAgICAgICAgICAgICAgICAgICAgQ2hlY2tJbmNyZW1lbnRhbEF1eChpbnYsIHJldik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIFN0cmluZyBmaW5kTWF0Y2ggKFN0cmluZyBzb3VyY2UsIFN0cmluZ1tdW10gcGFpcnMpIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwYWlycy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgaWYgKHNvdXJjZS5lcXVhbHNJZ25vcmVDYXNlKHBhaXJzW2ldWzBdKSkgcmV0dXJuIHBhaXJzW2ldWzFdOworICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIENoZWNrSW5jcmVtZW50YWxBdXgoVHJhbnNsaXRlcmF0b3IgdCwgU3RyaW5nIGlucHV0KSB7CisKKyAgICAgICAgUmVwbGFjZWFibGUgdGVzdCA9IG5ldyBSZXBsYWNlYWJsZVN0cmluZyhpbnB1dCk7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yLlBvc2l0aW9uIHBvcyA9IG5ldyBUcmFuc2xpdGVyYXRvci5Qb3NpdGlvbigwLCB0ZXN0Lmxlbmd0aCgpLCAwLCB0ZXN0Lmxlbmd0aCgpKTsKKyAgICAgICAgdC50cmFuc2xpdGVyYXRlKHRlc3QsIHBvcyk7CisgICAgICAgIGJvb2xlYW4gZ290RXJyb3IgPSBmYWxzZTsKKworICAgICAgICAvLyB3ZSBoYXZlIGEgZmV3IHNwZWNpYWwgY2FzZXMuIEFueS1SZW1vdmUgKHBvcy5zdGFydCA9IDAsIGJ1dCBhbHNvID0gbGltaXQpIGFuZCBVK1hYWFhYP1g/CisKKyAgICAgICAgaWYgKHBvcy5zdGFydCA9PSAwICYmIHBvcy5saW1pdCAhPSAwICYmICF0LmdldElEKCkuZXF1YWxzKCJIZXgtQW55L1VuaWNvZGUiKSkgeworICAgICAgICAgICAgZXJybG4oIk5vIFByb2dyZXNzLCAiICsgdC5nZXRJRCgpICsgIjogIiArIFV0aWxpdHkuZm9ybWF0SW5wdXQodGVzdCwgcG9zKSk7CisgICAgICAgICAgICBnb3RFcnJvciA9IHRydWU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2dsbigiUEFTUyBQcm9ncmVzcywgIiArIHQuZ2V0SUQoKSArICI6ICIgKyBVdGlsaXR5LmZvcm1hdElucHV0KHRlc3QsIHBvcykpOworICAgICAgICB9CisgICAgICAgIHQuZmluaXNoVHJhbnNsaXRlcmF0aW9uKHRlc3QsIHBvcyk7CisgICAgICAgIGlmIChwb3Muc3RhcnQgIT0gcG9zLmxpbWl0KSB7CisgICAgICAgICAgICBlcnJsbigiSW5jb21wbGV0ZSwgIiArIHQuZ2V0SUQoKSArICI6ICAiICsgVXRpbGl0eS5mb3JtYXRJbnB1dCh0ZXN0LCBwb3MpKTsKKyAgICAgICAgICAgIGdvdEVycm9yID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RGdW5jdGlvbigpIHsKKyAgICAgICAgLy8gQ2FyZWZ1bCB3aXRoIHNwYWNpbmcgYW5kICc7JyBoZXJlOiAgUGhyYXNlIHRoaXMgZXhhY3RseQorICAgICAgICAvLyBhcyB0b1J1bGVzKCkgaXMgZ29pbmcgdG8gcmV0dXJuIGl0LiAgSWYgdG9SdWxlcygpIGNoYW5nZXMKKyAgICAgICAgLy8gd2l0aCByZWdhcmQgdG8gc3BhY2luZyBvciAnOycsIHRoZW4gYWRqdXN0IHRoaXMgc3RyaW5nLgorICAgICAgICBTdHJpbmcgcnVsZSA9CisgICAgICAgICAgICAiKFs6THU6XSkgPiAkMSAnKCcgJkxvd2VyKCAkMSApICc9JyAmSGV4KCAmQW55LUxvd2VyKCAkMSApICkgJyknOyI7CisKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgdCA9IFRyYW5zbGl0ZXJhdG9yLmNyZWF0ZUZyb21SdWxlcygiVGVzdCIsIHJ1bGUsIFRyYW5zbGl0ZXJhdG9yLkZPUldBUkQpOworICAgICAgICBpZiAodCA9PSBudWxsKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogY3JlYXRlRnJvbVJ1bGVzIGZhaWxlZCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgU3RyaW5nIHIgPSB0LnRvUnVsZXModHJ1ZSk7CisgICAgICAgIGlmIChyLmVxdWFscyhydWxlKSkgeworICAgICAgICAgICAgbG9nbG4oIk9LOiB0b1J1bGVzKCkgPT4gIiArIHIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IHRvUnVsZXMoKSA9PiAiICsgciArCisgICAgICAgICAgICAgICAgICAiLCBleHBlY3RlZCAiICsgcnVsZSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGV4cGVjdCh0LCAiVGhlIFF1aWNrIEJyb3duIEZveCIsCisgICAgICAgICAgICAgICAiVCh0PVxcdTAwNzQpaGUgUShxPVxcdTAwNzEpdWljayBCKGI9XFx1MDA2Milyb3duIEYoZj1cXHUwMDY2KW94Iik7CisgICAgICAgIHJ1bGUgPQorICAgICAgICAgICAgIihbXlxcIC1cXHUwMDdGXSkgPiAmSGV4L1VuaWNvZGUoICQxICkgJyAnICZOYW1lKCAkMSApIDsiOworCisgICAgICAgIHQgPSBUcmFuc2xpdGVyYXRvci5jcmVhdGVGcm9tUnVsZXMoIlRlc3QiLCBydWxlLCBUcmFuc2xpdGVyYXRvci5GT1JXQVJEKTsKKyAgICAgICAgaWYgKHQgPT0gbnVsbCkgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IGNyZWF0ZUZyb21SdWxlcyBmYWlsZWQiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHIgPSB0LnRvUnVsZXModHJ1ZSk7CisgICAgICAgIGlmIChyLmVxdWFscyhydWxlKSkgeworICAgICAgICAgICAgbG9nbG4oIk9LOiB0b1J1bGVzKCkgPT4gIiArIHIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IHRvUnVsZXMoKSA9PiAiICsgciArCisgICAgICAgICAgICAgICAgICAiLCBleHBlY3RlZCAiICsgcnVsZSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGV4cGVjdCh0LCAiXHUwMzAxIiwKKyAgICAgICAgICAgICAgICJVKzAzMDEgXFxOe0NPTUJJTklORyBBQ1VURSBBQ0NFTlR9Iik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdEludmFsaWRCYWNrUmVmKCkgeworICAgICAgICBTdHJpbmcgcnVsZSA9ICAiLiA+ICQxOyI7CisgICAgICAgIFN0cmluZyBydWxlMiA9IiguKSA8PiAmaGV4L3VuaWNvZGUoJDEpICZuYW1lKCQxKTsgLiA+ICQxOyBbe31dID5cdTAwMjA7IjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQgPSBUcmFuc2xpdGVyYXRvci5jcmVhdGVGcm9tUnVsZXMoIlRlc3QiLCBydWxlLCBUcmFuc2xpdGVyYXRvci5GT1JXQVJEKTsKKyAgICAgICAgICAgIGlmICh0ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogY3JlYXRlRnJvbVJ1bGVzIHNob3VsZCBoYXZlIHJldHVybmVkIE5VTEwiKTsKKyAgICAgICAgICAgIH0KKwkgICAgICAgIGVycmxuKCJGQUlMOiBPazogLiA+ICQxOyA9PiBubyBlcnJvciIpOworCSAgICAgICAgVHJhbnNsaXRlcmF0b3IgdDI9IFRyYW5zbGl0ZXJhdG9yLmNyZWF0ZUZyb21SdWxlcygiVGVzdDIiLCBydWxlMiwgVHJhbnNsaXRlcmF0b3IuRk9SV0FSRCk7CisgICAgICAgICAgICBpZiAodDIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBjcmVhdGVGcm9tUnVsZXMgc2hvdWxkIGhhdmUgcmV0dXJuZWQgTlVMTCIpOworICAgICAgICAgICAgfQorCSAgICAgICAgZXJybG4oIkZBSUw6IE9rOiAuID4gJDE7ID0+IG5vIGVycm9yIik7CisgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7ICAgICAgICAKKyAgICAgICAgICAJIGxvZ2xuKCJPazogLiA+ICQxOyA9PiAiICsgZS5nZXRNZXNzYWdlKCkpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdE11bHRpY2hhclN0cmluZ1NldCgpIHsKKyAgICAgICAgLy8gQmFzaWMgdGVzdGluZworICAgICAgICBTdHJpbmcgcnVsZSA9CisgICAgICAgICAgICAiICAgICAgIFt7YWF9XSAgICAgICA+IHg7IiArCisgICAgICAgICAgICAiICAgICAgICAgYSAgICAgICAgICA+IHk7IiArCisgICAgICAgICAgICAiICAgICAgIFtie2JjfV0gICAgICA+IHo7IiArCisgICAgICAgICAgICAiW3tnZH1dIHsgZSAgICAgICAgICA+IHE7IiArCisgICAgICAgICAgICAiICAgICAgICAgZSB9IFt7Zmd9XSA+IHI7IiA7CisgICAgICAgIAorICAgICAgICBUcmFuc2xpdGVyYXRvciB0ID0gVHJhbnNsaXRlcmF0b3IuY3JlYXRlRnJvbVJ1bGVzKCJUZXN0IiwgcnVsZSwgVHJhbnNsaXRlcmF0b3IuRk9SV0FSRCk7CisgICAgICAgIGlmICh0ID09IG51bGwpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBjcmVhdGVGcm9tUnVsZXMgZmFpbGVkIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGV4cGVjdCh0LCAiYSBhYSBhYiBiYyBkIGdkIGRlIGdkZSBnZGVmZyBkZGVmZyIsCisgICAgICAgICAgICAgICAgICAieSB4IHl6IHogZCBnZCBkZSBnZHEgZ2RxZmcgZGRyZmciKTsKKworICAgICAgICAvLyBPdmVybGFwcGVkIHN0cmluZyB0ZXN0LiAgTWFrZSBzdXJlIHRoYXQgd2hlbiBtdWx0aXBsZQorICAgICAgICAvLyBzdHJpbmdzIGNhbiBtYXRjaCB0aGF0IHRoZSBsb25nZXN0IG9uZSBpcyBtYXRjaGVkLgorICAgICAgICBydWxlID0KKyAgICAgICAgICAgICIgICAgW2Ege2FifSB7YWJjfV0gICAgPiB4OyIgKworICAgICAgICAgICAgIiAgICAgICAgICAgYiAgICAgICAgICA+IHk7IiArCisgICAgICAgICAgICAiICAgICAgICAgICBjICAgICAgICAgID4gejsiICsKKyAgICAgICAgICAgICIgcSBbdCB7c3R9IHtyc3R9XSB7IGUgPiBwOyIgOworICAgICAgICAKKyAgICAgICAgdCA9IFRyYW5zbGl0ZXJhdG9yLmNyZWF0ZUZyb21SdWxlcygiVGVzdCIsIHJ1bGUsIFRyYW5zbGl0ZXJhdG9yLkZPUldBUkQpOworICAgICAgICBpZiAodCA9PSBudWxsKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogY3JlYXRlRnJvbVJ1bGVzIGZhaWxlZCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBleHBlY3QodCwgImEgYWIgYWJjIHF0ZSBxc3RlIHFyc3RlIiwKKyAgICAgICAgICAgICAgICAgICJ4IHggeCBxdHAgcXN0cCBxcnN0cCIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3QgdGhhdCB1c2VyLXJlZ2lzdGVyZWQgdHJhbnNsaXRlcmF0b3JzIGNhbiBiZSB1c2VkIHVuZGVyIGZ1bmN0aW9uCisgICAgICogc3ludGF4LgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RVc2VyRnVuY3Rpb24oKSB7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQ7CisKKyAgICAgICAgLy8gVGhlcmUncyBubyBuZWVkIHRvIHJlZ2lzdGVyIGludmVyc2VzIGlmIHdlIGRvbid0IHVzZSB0aGVtCisgICAgICAgIFRlc3RVc2VyRnVuY3Rpb25GYWN0b3J5LmFkZCgiQW55LWdpZiIsCisgICAgICAgICAgICBUcmFuc2xpdGVyYXRvci5jcmVhdGVGcm9tUnVsZXMoImdpZiIsCisgICAgICAgICAgICAgICAgIidcXCd1KC4uKSguLikgPiAnPGltZyBzcmM9XCJodHRwOi8vd3d3LnVuaWNvZGUub3JnL2dpZnMvMjQvJyAkMSAnL1UnICQxJDIgJy5naWZcIj4nOyIsCisgICAgICAgICAgICAgICAgVHJhbnNsaXRlcmF0b3IuRk9SV0FSRCkpOworICAgICAgICAvL1Rlc3RVc2VyRnVuY3Rpb25GYWN0b3J5LmFkZCgiZ2lmLUFueSIsIFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKCJBbnktTnVsbCIpKTsKKworICAgICAgICBUZXN0VXNlckZ1bmN0aW9uRmFjdG9yeS5hZGQoIkFueS1SZW1vdmVDdXJseSIsCisgICAgICAgICAgICBUcmFuc2xpdGVyYXRvci5jcmVhdGVGcm9tUnVsZXMoIlJlbW92ZUN1cmx5IiwgIltcXHtcXH1dID4gOyBcXFxcTiA+IDsiLCBUcmFuc2xpdGVyYXRvci5GT1JXQVJEKSk7CisgICAgICAgIC8vVGVzdFVzZXJGdW5jdGlvbkZhY3RvcnkuYWRkKCJSZW1vdmVDdXJseS1BbnkiLCBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgiQW55LU51bGwiKSk7CisKKyAgICAgICAgbG9nbG4oIlRyeWluZyAmaGV4Iik7CisgICAgICAgIHQgPSBUcmFuc2xpdGVyYXRvci5jcmVhdGVGcm9tUnVsZXMoImhleDIiLCAiKC4pID4gJmhleCgkMSk7IiwgVHJhbnNsaXRlcmF0b3IuRk9SV0FSRCk7CisgICAgICAgIGxvZ2xuKCJSZWdpc3RlcmluZyIpOworICAgICAgICBUZXN0VXNlckZ1bmN0aW9uRmFjdG9yeS5hZGQoIkFueS1oZXgyIiwgdCk7CisgICAgICAgIHQgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgiQW55LWhleDIiKTsKKyAgICAgICAgZXhwZWN0KHQsICJhYmMiLCAiXFx1MDA2MVxcdTAwNjJcXHUwMDYzIik7CisKKyAgICAgICAgbG9nbG4oIlRyeWluZyAmZ2lmIik7CisgICAgICAgIHQgPSBUcmFuc2xpdGVyYXRvci5jcmVhdGVGcm9tUnVsZXMoImdpZjIiLCAiKC4pID4gJkdpZigmSGV4MigkMSkpOyIsIFRyYW5zbGl0ZXJhdG9yLkZPUldBUkQpOworICAgICAgICBsb2dsbigiUmVnaXN0ZXJpbmciKTsKKyAgICAgICAgVGVzdFVzZXJGdW5jdGlvbkZhY3RvcnkuYWRkKCJBbnktZ2lmMiIsIHQpOworICAgICAgICB0ID0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoIkFueS1naWYyIik7CisgICAgICAgIGV4cGVjdCh0LCAiYWIiLCAiPGltZyBzcmM9XCJodHRwOi8vd3d3LnVuaWNvZGUub3JnL2dpZnMvMjQvMDAvVTAwNjEuZ2lmXCI+IiArCisgICAgICAgICAgICAgICAiPGltZyBzcmM9XCJodHRwOi8vd3d3LnVuaWNvZGUub3JnL2dpZnMvMjQvMDAvVTAwNjIuZ2lmXCI+Iik7CisKKyAgICAgICAgLy8gVGVzdCB0aGF0IGZpbHRlcnMgYXJlIGFsbG93ZWQgYWZ0ZXIgJgorICAgICAgICB0ID0gVHJhbnNsaXRlcmF0b3IuY3JlYXRlRnJvbVJ1bGVzKCJ0ZXN0IiwKKyAgICAgICAgICAgICAgICAiKC4pID4gJkhleCgkMSkgJyAnICZBbnktUmVtb3ZlQ3VybHkoJk5hbWUoJDEpKSAnICc7IiwgVHJhbnNsaXRlcmF0b3IuRk9SV0FSRCk7CisgICAgICAgIGV4cGVjdCh0LCAiYWJjIiwgIlxcdTAwNjEgTEFUSU4gU01BTEwgTEVUVEVSIEEgXFx1MDA2MiBMQVRJTiBTTUFMTCBMRVRURVIgQiBcXHUwMDYzIExBVElOIFNNQUxMIExFVFRFUiBDICIpOworCisgICAgICAgIC8vIFVucmVnaXN0ZXIgb3VyIHRlc3Qgc3R1ZmYKKyAgICAgICAgVGVzdFVzZXJGdW5jdGlvbkZhY3RvcnkudW5yZWdpc3RlcigpOworICAgIH0KKworICAgIHN0YXRpYyBjbGFzcyBUZXN0VXNlckZ1bmN0aW9uRmFjdG9yeSBpbXBsZW1lbnRzIFRyYW5zbGl0ZXJhdG9yLkZhY3RvcnkgeworICAgICAgICBzdGF0aWMgVGVzdFVzZXJGdW5jdGlvbkZhY3Rvcnkgc2luZ2xldG9uID0gbmV3IFRlc3RVc2VyRnVuY3Rpb25GYWN0b3J5KCk7CisgICAgICAgIHN0YXRpYyBIYXNoTWFwIG0gPSBuZXcgSGFzaE1hcCgpOworCisgICAgICAgIHN0YXRpYyB2b2lkIGFkZChTdHJpbmcgSUQsIFRyYW5zbGl0ZXJhdG9yIHQpIHsKKyAgICAgICAgICAgIG0ucHV0KG5ldyBDYXNlSW5zZW5zaXRpdmVTdHJpbmcoSUQpLCB0KTsKKyAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yLnJlZ2lzdGVyRmFjdG9yeShJRCwgc2luZ2xldG9uKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBUcmFuc2xpdGVyYXRvciBnZXRJbnN0YW5jZShTdHJpbmcgSUQpIHsKKyAgICAgICAgICAgIHJldHVybiAoVHJhbnNsaXRlcmF0b3IpIG0uZ2V0KG5ldyBDYXNlSW5zZW5zaXRpdmVTdHJpbmcoSUQpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgc3RhdGljIHZvaWQgdW5yZWdpc3RlcigpIHsKKyAgICAgICAgICAgIEl0ZXJhdG9yIGlkcyA9IG0ua2V5U2V0KCkuaXRlcmF0b3IoKTsKKyAgICAgICAgICAgIHdoaWxlIChpZHMuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICAgICAgQ2FzZUluc2Vuc2l0aXZlU3RyaW5nIGlkID0gKENhc2VJbnNlbnNpdGl2ZVN0cmluZykgaWRzLm5leHQoKTsKKyAgICAgICAgICAgICAgICBUcmFuc2xpdGVyYXRvci51bnJlZ2lzdGVyKGlkLmdldFN0cmluZygpKTsKKyAgICAgICAgICAgICAgICBpZHMucmVtb3ZlKCk7IC8vIHJlbW92ZXMgcGFpciBmcm9tIG0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3QgdGhlIEFueS1YIHRyYW5zbGl0ZXJhdG9ycy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0QW55WCgpIHsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgYW55TGF0aW4gPQorICAgICAgICAgICAgVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoIkFueS1MYXRpbiIsIFRyYW5zbGl0ZXJhdG9yLkZPUldBUkQpOworICAgICAgICAKKyAgICAgICAgZXhwZWN0KGFueUxhdGluLAorICAgICAgICAgICAgICAgImdyZWVrOlx1MDNCMVx1MDNCMlx1MDNCQVx1MDM5MVx1MDM5Mlx1MDM5QSBoaXJhZ2FuYTpcdTMwNDJcdTMwNzZcdTMwNEYgY3lyaWxsaWM6XHUwNDMwXHUwNDMxXHUwNDQ2IiwKKyAgICAgICAgICAgICAgICJncmVlazphYmtBQksgaGlyYWdhbmE6YWJ1a3UgY3lyaWxsaWM6YWJjIik7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdCB0aGUgc291cmNlIGFuZCB0YXJnZXQgc2V0IEFQSS4gIFRoZXNlIGFyZSBvbmx5IGltcGxlbWVudGVkCisgICAgICogZm9yIFJCVCBhbmQgQ29tcG91bmRUcmFuc2xpdGVyYXRvciBhdCB0aGlzIHRpbWUuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdFNvdXJjZVRhcmdldFNldCgpIHsKKyAgICAgICAgLy8gUnVsZXMKKyAgICAgICAgU3RyaW5nIHIgPQorICAgICAgICAgICAgImEgPiBiOyAiICsKKyAgICAgICAgICAgICJyIFt4e2x1fV0gPiBxOyI7CisKKyAgICAgICAgLy8gRXhwZWN0ZWQgc291cmNlCisgICAgICAgIFVuaWNvZGVTZXQgZXhwU3JjID0gbmV3IFVuaWNvZGVTZXQoIlthcnh7bHV9XSIpOworCisgICAgICAgIC8vIEV4cGVjdGVkIHRhcmdldAorICAgICAgICBVbmljb2RlU2V0IGV4cFRyZyA9IG5ldyBVbmljb2RlU2V0KCJbYnFdIik7CisKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgdCA9IFRyYW5zbGl0ZXJhdG9yLmNyZWF0ZUZyb21SdWxlcygidGVzdCIsIHIsIFRyYW5zbGl0ZXJhdG9yLkZPUldBUkQpOworICAgICAgICBVbmljb2RlU2V0IHNyYyA9IHQuZ2V0U291cmNlU2V0KCk7CisgICAgICAgIFVuaWNvZGVTZXQgdHJnID0gdC5nZXRUYXJnZXRTZXQoKTsKKworICAgICAgICBpZiAoc3JjLmVxdWFscyhleHBTcmMpICYmIHRyZy5lcXVhbHMoZXhwVHJnKSkgeworICAgICAgICAgICAgbG9nbG4oIk9rOiAiICsgciArICIgPT4gc291cmNlID0gIiArIHNyYy50b1BhdHRlcm4odHJ1ZSkgKworICAgICAgICAgICAgICAgICAgIiwgdGFyZ2V0ID0gIiArIHRyZy50b1BhdHRlcm4odHJ1ZSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6ICIgKyByICsgIiA9PiBzb3VyY2UgPSAiICsgc3JjLnRvUGF0dGVybih0cnVlKSArCisgICAgICAgICAgICAgICAgICAiLCBleHBlY3RlZCAiICsgZXhwU3JjLnRvUGF0dGVybih0cnVlKSArCisgICAgICAgICAgICAgICAgICAiOyB0YXJnZXQgPSAiICsgdHJnLnRvUGF0dGVybih0cnVlKSArCisgICAgICAgICAgICAgICAgICAiLCBleHBlY3RlZCAiICsgZXhwVHJnLnRvUGF0dGVybih0cnVlKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXN0IGhhbmRsaW5nIG9mIHJ1bGUgd2hpdGVzcGFjZSwgZm9yIGJvdGggUkJUIGFuZCBVbmljb2RlU2V0LgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RSdWxlV2hpdGVzcGFjZSgpIHsKKyAgICAgICAgLy8gUnVsZXMKKyAgICAgICAgU3RyaW5nIHIgPSAiYSA+IFx1MjAwRSBiOyI7CisKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgdCA9IFRyYW5zbGl0ZXJhdG9yLmNyZWF0ZUZyb21SdWxlcygidGVzdCIsIHIsIFRyYW5zbGl0ZXJhdG9yLkZPUldBUkQpOworCisgICAgICAgIGV4cGVjdCh0LCAiYSIsICJiIik7CisKKyAgICAgICAgLy8gVW5pY29kZVNldAorICAgICAgICBVbmljb2RlU2V0IHNldCA9IG5ldyBVbmljb2RlU2V0KCJbYSBcdTIwMEVdIik7CisKKyAgICAgICAgaWYgKHNldC5jb250YWlucygweDIwMEUpKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogVSsyMDBFIG5vdCBiZWluZyBpZ25vcmVkIGJ5IFVuaWNvZGVTZXQiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIFRoZXNlIHRlc3RzIGFyZSBub3QgbWlycm9yZWQgKHlldCkgaW4gaWN1NGMgYXQKKyAgICAvLyBzb3VyY2UvdGVzdC9pbnRsdGVzdC90cmFuc3RzdC5jcHAKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgIC8qKgorICAgICAqIEltcHJvdmUgY29kZSBjb3ZlcmFnZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0Q292ZXJhZ2UoKSB7CisgICAgICAgIC8vIE51bGxUcmFuc2xpdGVyYXRvcgorICAgICAgICBUcmFuc2xpdGVyYXRvciB0ID0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoIk51bGwiLCBUcmFuc2xpdGVyYXRvci5GT1JXQVJEKTsKKyAgICAgICAgZXhwZWN0KHQsICJhIiwgImEiKTsKKyAgICB9CisKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBTdXBwb3J0IG1ldGhvZHMKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICB2b2lkIGV4cGVjdChTdHJpbmcgcnVsZXMsCisgICAgICAgICAgICAgICAgU3RyaW5nIHNvdXJjZSwKKyAgICAgICAgICAgICAgICBTdHJpbmcgZXhwZWN0ZWRSZXN1bHQsCisgICAgICAgICAgICAgICAgVHJhbnNsaXRlcmF0b3IuUG9zaXRpb24gcG9zKSB7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQgPSBUcmFuc2xpdGVyYXRvci5jcmVhdGVGcm9tUnVsZXMoIjxJRD4iLCBydWxlcywgVHJhbnNsaXRlcmF0b3IuRk9SV0FSRCk7CisgICAgICAgIGV4cGVjdCh0LCBzb3VyY2UsIGV4cGVjdGVkUmVzdWx0LCBwb3MpOworICAgIH0KKworICAgIHZvaWQgZXhwZWN0KFN0cmluZyBydWxlcywgU3RyaW5nIHNvdXJjZSwgU3RyaW5nIGV4cGVjdGVkUmVzdWx0KSB7CisgICAgICAgIGV4cGVjdChydWxlcywgc291cmNlLCBleHBlY3RlZFJlc3VsdCwgbnVsbCk7CisgICAgfQorCisgICAgdm9pZCBleHBlY3QoVHJhbnNsaXRlcmF0b3IgdCwgU3RyaW5nIHNvdXJjZSwgU3RyaW5nIGV4cGVjdGVkUmVzdWx0LAorICAgICAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHJldmVyc2VUcmFuc2xpdGVyYXRvcikgeworICAgICAgICBleHBlY3QodCwgc291cmNlLCBleHBlY3RlZFJlc3VsdCk7CisgICAgICAgIGlmIChyZXZlcnNlVHJhbnNsaXRlcmF0b3IgIT0gbnVsbCkgeworICAgICAgICAgICAgZXhwZWN0KHJldmVyc2VUcmFuc2xpdGVyYXRvciwgZXhwZWN0ZWRSZXN1bHQsIHNvdXJjZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGV4cGVjdChUcmFuc2xpdGVyYXRvciB0LCBTdHJpbmcgc291cmNlLCBTdHJpbmcgZXhwZWN0ZWRSZXN1bHQpIHsKKyAgICAgICAgZXhwZWN0KHQsIHNvdXJjZSwgZXhwZWN0ZWRSZXN1bHQsIChUcmFuc2xpdGVyYXRvci5Qb3NpdGlvbikgbnVsbCk7CisgICAgfQorCisgICAgdm9pZCBleHBlY3QoVHJhbnNsaXRlcmF0b3IgdCwgU3RyaW5nIHNvdXJjZSwgU3RyaW5nIGV4cGVjdGVkUmVzdWx0LAorICAgICAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yLlBvc2l0aW9uIHBvcykgeworICAgICAgICBpZiAocG9zID09IG51bGwpIHsKKyAgICAgICAgICAgIFN0cmluZyByZXN1bHQgPSB0LnRyYW5zbGl0ZXJhdGUoc291cmNlKTsKKyAgICAgICAgICAgIGlmICghZXhwZWN0QXV4KHQuZ2V0SUQoKSArICI6U3RyaW5nIiwgc291cmNlLCByZXN1bHQsIGV4cGVjdGVkUmVzdWx0KSkgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IuUG9zaXRpb24gaW5kZXggPSBudWxsOworICAgICAgICBpZiAocG9zID09IG51bGwpIHsKKyAgICAgICAgICAgIGluZGV4ID0gbmV3IFRyYW5zbGl0ZXJhdG9yLlBvc2l0aW9uKDAsIHNvdXJjZS5sZW5ndGgoKSwgMCwgc291cmNlLmxlbmd0aCgpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGluZGV4ID0gbmV3IFRyYW5zbGl0ZXJhdG9yLlBvc2l0aW9uKHBvcy5jb250ZXh0U3RhcnQsIHBvcy5jb250ZXh0TGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3Muc3RhcnQsIHBvcy5saW1pdCk7CisgICAgICAgIH0KKworICAgICAgICBSZXBsYWNlYWJsZVN0cmluZyByc291cmNlID0gbmV3IFJlcGxhY2VhYmxlU3RyaW5nKHNvdXJjZSk7CisKKyAgICAgICAgdC5maW5pc2hUcmFuc2xpdGVyYXRpb24ocnNvdXJjZSwgaW5kZXgpOworICAgICAgICAvLyBEbyBpdCBhbGwgYXQgb25jZSAtLSBiZWxvdyB3ZSBkbyBpdCBpbmNyZW1lbnRhbGx5CisKKyAgICAgICAgaWYgKGluZGV4LnN0YXJ0ICE9IGluZGV4LmxpbWl0KSB7CisgICAgICAgICAgICBleHBlY3RBdXgodC5nZXRJRCgpICsgIjpVTkZJTklTSEVEIiwgc291cmNlLAorICAgICAgICAgICAgICAgICJzdGFydDogIiArIGluZGV4LnN0YXJ0ICsgIiwgbGltaXQ6ICIgKyBpbmRleC5saW1pdCwgZmFsc2UsIGV4cGVjdGVkUmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBTdHJpbmcgcmVzdWx0ID0gcnNvdXJjZS50b1N0cmluZygpOworICAgICAgICBpZiAoIWV4cGVjdEF1eCh0LmdldElEKCkgKyAiOlJlcGxhY2VhYmxlIiwgc291cmNlLCByZXN1bHQsIGV4cGVjdGVkUmVzdWx0KSkgcmV0dXJuOworCisKKyAgICAgICAgaWYgKHBvcyA9PSBudWxsKSB7CisgICAgICAgICAgICBpbmRleCA9IG5ldyBUcmFuc2xpdGVyYXRvci5Qb3NpdGlvbigpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaW5kZXggPSBuZXcgVHJhbnNsaXRlcmF0b3IuUG9zaXRpb24ocG9zLmNvbnRleHRTdGFydCwgcG9zLmNvbnRleHRMaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcy5zdGFydCwgcG9zLmxpbWl0KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRlc3QgaW5jcmVtZW50YWwgdHJhbnNsaXRlcmF0aW9uIC0tIHRoaXMgcmVzdWx0CisgICAgICAgIC8vIG11c3QgYmUgdGhlIHNhbWUgYWZ0ZXIgd2UgZmluYWxpemUgKHNlZSBiZWxvdykuCisgICAgICAgIFZlY3RvciB2ID0gbmV3IFZlY3RvcigpOworICAgICAgICB2LmFkZChzb3VyY2UpOworICAgICAgICByc291cmNlLnJlcGxhY2UoMCwgcnNvdXJjZS5sZW5ndGgoKSwgIiIpOworICAgICAgICBpZiAocG9zICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJzb3VyY2UucmVwbGFjZSgwLCAwLCBzb3VyY2UpOworICAgICAgICAgICAgdi5hZGQoVXRpbGl0eS5mb3JtYXRJbnB1dChyc291cmNlLCBpbmRleCkpOworICAgICAgICAgICAgdC50cmFuc2xpdGVyYXRlKHJzb3VyY2UsIGluZGV4KTsKKyAgICAgICAgICAgIHYuYWRkKFV0aWxpdHkuZm9ybWF0SW5wdXQocnNvdXJjZSwgaW5kZXgpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxzb3VyY2UubGVuZ3RoKCk7ICsraSkgeworICAgICAgICAgICAgICAgIC8vdi5hZGQoaSA9PSAwID8gIiIgOiAiICsgIiArIHNvdXJjZS5jaGFyQXQoaSkgKyAiIik7CisgICAgICAgICAgICAgICAgLy9sb2cuYXBwZW5kKHNvdXJjZS5jaGFyQXQoaSkpLmFwcGVuZCgiIC0+ICIpKTsKKyAgICAgICAgICAgICAgICB0LnRyYW5zbGl0ZXJhdGUocnNvdXJjZSwgaW5kZXgsIHNvdXJjZS5jaGFyQXQoaSkpOworICAgICAgICAgICAgICAgIC8vdi5hZGQoVXRpbGl0eS5mb3JtYXRJbnB1dChyc291cmNlLCBpbmRleCkgKyBzb3VyY2Uuc3Vic3RyaW5nKGkrMSkpOworICAgICAgICAgICAgICAgIHYuYWRkKFV0aWxpdHkuZm9ybWF0SW5wdXQocnNvdXJjZSwgaW5kZXgpICsKKyAgICAgICAgICAgICAgICAgICAgICAoKGk8c291cmNlLmxlbmd0aCgpLTEpPygiICsgJyIgKyBzb3VyY2UuY2hhckF0KGkrMSkgKyAiJyAtPiIpOiIgPT4iKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBBcyBhIGZpbmFsIHN0ZXAgaW4ga2V5Ym9hcmQgdHJhbnNsaXRlcmF0aW9uLCB3ZSBtdXN0IGNhbGwKKyAgICAgICAgLy8gdHJhbnNsaXRlcmF0ZSB0byBmaW5pc2ggb2ZmIGFueSBwZW5kaW5nIHBhcnRpYWwgbWF0Y2hlcyB0aGF0CisgICAgICAgIC8vIHdlcmUgd2FpdGluZyBmb3IgbW9yZSBpbnB1dC4KKyAgICAgICAgdC5maW5pc2hUcmFuc2xpdGVyYXRpb24ocnNvdXJjZSwgaW5kZXgpOworICAgICAgICByZXN1bHQgPSByc291cmNlLnRvU3RyaW5nKCk7CisgICAgICAgIC8vbG9nLmFwcGVuZCgiID0+ICIpLmFwcGVuZChyc291cmNlLnRvU3RyaW5nKCkpOworICAgICAgICB2LmFkZChyZXN1bHQpOworCisgICAgICAgIFN0cmluZ1tdIHJlc3VsdHMgPSBuZXcgU3RyaW5nW3Yuc2l6ZSgpXTsKKyAgICAgICAgdi5jb3B5SW50byhyZXN1bHRzKTsKKyAgICAgICAgZXhwZWN0QXV4KHQuZ2V0SUQoKSArICI6SW5jcmVtZW50YWwiLCByZXN1bHRzLAorICAgICAgICAgICAgICAgICAgcmVzdWx0LmVxdWFscyhleHBlY3RlZFJlc3VsdCksCisgICAgICAgICAgICAgICAgICBleHBlY3RlZFJlc3VsdCk7CisgICAgfQorCisgICAgYm9vbGVhbiBleHBlY3RBdXgoU3RyaW5nIHRhZywgU3RyaW5nIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICBTdHJpbmcgcmVzdWx0LCBTdHJpbmcgZXhwZWN0ZWRSZXN1bHQpIHsKKyAgICAgICAgcmV0dXJuIGV4cGVjdEF1eCh0YWcsIG5ldyBTdHJpbmdbXSB7c291cmNlLCByZXN1bHR9LAorICAgICAgICAgICAgICAgICAgcmVzdWx0LmVxdWFscyhleHBlY3RlZFJlc3VsdCksCisgICAgICAgICAgICAgICAgICBleHBlY3RlZFJlc3VsdCk7CisgICAgfQorCisgICAgYm9vbGVhbiBleHBlY3RBdXgoU3RyaW5nIHRhZywgU3RyaW5nIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICBTdHJpbmcgcmVzdWx0LCBib29sZWFuIHBhc3MsCisgICAgICAgICAgICAgICAgICAgU3RyaW5nIGV4cGVjdGVkUmVzdWx0KSB7CisgICAgICAgIHJldHVybiBleHBlY3RBdXgodGFnLCBuZXcgU3RyaW5nW10ge3NvdXJjZSwgcmVzdWx0fSwKKyAgICAgICAgICAgICAgICAgIHBhc3MsCisgICAgICAgICAgICAgICAgICBleHBlY3RlZFJlc3VsdCk7CisgICAgfQorCisgICAgYm9vbGVhbiBleHBlY3RBdXgoU3RyaW5nIHRhZywgU3RyaW5nIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICBib29sZWFuIHBhc3MsCisgICAgICAgICAgICAgICAgICAgU3RyaW5nIGV4cGVjdGVkUmVzdWx0KSB7CisgICAgICAgIHJldHVybiBleHBlY3RBdXgodGFnLCBuZXcgU3RyaW5nW10ge3NvdXJjZX0sCisgICAgICAgICAgICAgICAgICBwYXNzLAorICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRSZXN1bHQpOworICAgIH0KKworICAgIGJvb2xlYW4gZXhwZWN0QXV4KFN0cmluZyB0YWcsIFN0cmluZ1tdIHJlc3VsdHMsIGJvb2xlYW4gcGFzcywKKyAgICAgICAgICAgICAgICAgICBTdHJpbmcgZXhwZWN0ZWRSZXN1bHQpIHsKKyAgICAgICAgbG9nbG4oKHBhc3M/IigiOiJGQUlMOiAoIikrdGFnKyIpIiwgcGFzcyk7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXN1bHRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBTdHJpbmcgbGFiZWw7CisgICAgICAgICAgICBpZiAoaSA9PSAwKSB7CisgICAgICAgICAgICAgICAgbGFiZWwgPSAic291cmNlOiAgICI7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGkgPT0gcmVzdWx0cy5sZW5ndGggLSAxKSB7CisgICAgICAgICAgICAgICAgbGFiZWwgPSAicmVzdWx0OiAgICI7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICghaXNWZXJib3NlKCkgJiYgcGFzcykgY29udGludWU7CisgICAgICAgICAgICAgICAgbGFiZWwgPSAiaW50ZXJtIiArIGkgKyAiOiAgIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxvZ2xuKCIgICAgIiArIGxhYmVsICsgcmVzdWx0c1tpXSwgcGFzcywgZmFsc2UpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFwYXNzKSB7CisgICAgICAgICAgICBsb2dsbiggICIgICAgZXhwZWN0ZWQ6ICIgKyBleHBlY3RlZFJlc3VsdCwgcGFzcywgZmFsc2UpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHBhc3M7CisgICAgfQorfQorCisKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC90cmFuc2xpdC9Vbmljb2RlRmlsdGVyTG9naWNUZXN0LmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvdHJhbnNsaXQvVW5pY29kZUZpbHRlckxvZ2ljVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjljOTZkNTAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvdHJhbnNsaXQvVW5pY29kZUZpbHRlckxvZ2ljVGVzdC5qYXZhCkBAIC0wLDAgKzEsMjExIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvdHJhbnNsaXQvQXR0aWMvVW5pY29kZUZpbHRlckxvZ2ljVGVzdC5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzA4LzI4IDE2OjQ1OjE5ICQgCisgKiAkUmV2aXNpb246IDEuNiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3QudHJhbnNsaXQ7CitpbXBvcnQgY29tLmlibS5pY3UubGFuZy4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuKjsKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYudGVzdC4qOworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuVXRpbGl0eTsKK2ltcG9ydCBqYXZhLnRleHQuKjsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworLyoqCisgKiBAdGVzdAorICogQHN1bW1hcnkgVW5pY29kZUZpbHRlckxvZ2ljIHRlc3QgCisgKi8KK3B1YmxpYyBjbGFzcyBVbmljb2RlRmlsdGVyTG9naWNUZXN0IGV4dGVuZHMgVGVzdEZtd2sgeworCisgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgbmV3IFVuaWNvZGVGaWx0ZXJMb2dpY1Rlc3QoKS5ydW4oYXJncyk7CisgICB9CisKKworICAgVW5pY29kZUZpbHRlciBGaWx0ZXIxPW5ldyBVbmljb2RlRmlsdGVyKCkgeworICAgICAgICBwdWJsaWMgYm9vbGVhbiBjb250YWlucyhpbnQgYykgeworICAgICAgICAgICAgaWYoYyA9PSAweDAwNjEgfHwgYyA9PSAweDAwNDEgfHwgYyA9PSAweDAwNjMgfHwgYyA9PSAweDAwNDMpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHB1YmxpYyBTdHJpbmcgdG9QYXR0ZXJuKGJvb2xlYW4gZXNjYXBlVW5wcmludGFibGUpIHsKKyAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgYm9vbGVhbiBtYXRjaGVzSW5kZXhWYWx1ZShpbnQgdikgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHB1YmxpYyB2b2lkIGFkZE1hdGNoU2V0VG8oVW5pY29kZVNldCB0b1VuaW9uVG8pIHt9CisgICB9OworICAgVW5pY29kZUZpbHRlciBGaWx0ZXIyPW5ldyBVbmljb2RlRmlsdGVyKCkgeworICAgICAgICBwdWJsaWMgYm9vbGVhbiBjb250YWlucyhpbnQgYykgeworICAgICAgICAgICAgaWYoYyA9PSAweDAwNzkgfHwgYyA9PSAweDAwNTkgfHwgYyA9PSAweDAwN2EgfHwgYyA9PSAweDAwNWEgIHx8IGMgPT0gMHgwMDYxIHx8IGMgPT0gMHgwMDYzKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgU3RyaW5nIHRvUGF0dGVybihib29sZWFuIGVzY2FwZVVucHJpbnRhYmxlKSB7CisgICAgICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIH0KKyAgICAgICAgcHVibGljIGJvb2xlYW4gbWF0Y2hlc0luZGV4VmFsdWUoaW50IHYpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgdm9pZCBhZGRNYXRjaFNldFRvKFVuaWNvZGVTZXQgdG9VbmlvblRvKSB7fQorICAgfTsKKworICAgcHVibGljIHZvaWQgVGVzdEFsbEZpbHRlcnMoKSB7CisKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgdDEgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgiQW55LUhleCIpOworICAgICAgICBTdHJpbmcgc291cmNlPSJhYmNkQUJDRHl6WVoiOworCisgICAgICAgIC8vc2FuaXR5IHRlc3Rpbmcgd2lodG91dCBhbnkgZmlsdGVyCisgICAgICAgIGV4cGVjdCh0MSwgIndpdGhvdXQgYW55IEZpbHRlciIsIHNvdXJjZSwgIlx1MDA2MVx1MDA2Mlx1MDA2M1x1MDA2NFx1MDA0MVx1MDA0Mlx1MDA0M1x1MDA0NFx1MDA3OVx1MDA3QVx1MDA1OVx1MDA1QSIpOworICAgICAgICAvL3Nhbml0eSB0ZXN0aW5nIHVzaW5nIHRoZSBGaWx0ZXIxKGFjQUMpIGFuZCBGaWx0ZXIyKGFjeXpZWikKKyAgICAgICAgdDEuc2V0RmlsdGVyKEZpbHRlcjEpOworICAgICAgICBleHBlY3QodDEsICJ3aXRoIEZpbHRlcihhY0FDKSIsIHNvdXJjZSwgImFcdTAwNjJjXHUwMDY0QVx1MDA0MkNcdTAwNDRcdTAwNzlcdTAwN0FcdTAwNTlcdTAwNUEiKTsKKyAgICAgICAgdDEuc2V0RmlsdGVyKEZpbHRlcjIpOworICAgICAgICBleHBlY3QodDEsICJ3aXRoIEZpbHRlcjIoYWN5ellaKSIsIHNvdXJjZSwgImFcdTAwNjJjXHUwMDY0XHUwMDQxXHUwMDQyXHUwMDQzXHUwMDQ0eXpZWiIpOworCisgICAgICAgIFVuaWNvZGVGaWx0ZXIgZmlsdGVyTk9UPVVuaWNvZGVGaWx0ZXJMb2dpYy5ub3QoRmlsdGVyMSk7CisgICAgICAgIFVuaWNvZGVGaWx0ZXIgZmlsdGVyQU5EPVVuaWNvZGVGaWx0ZXJMb2dpYy5hbmQoRmlsdGVyMSwgRmlsdGVyMik7CisgICAgICAgIFVuaWNvZGVGaWx0ZXIgZmlsdGVyT1I9VW5pY29kZUZpbHRlckxvZ2ljLm9yKEZpbHRlcjEsIEZpbHRlcjIpOworCisgICAgICAgIGNoZWNrTk9UKHQxLCBGaWx0ZXIxLCAiRmlsdGVyKGFjQUMpIiwgIHNvdXJjZSwgIlx1MDA2MWJcdTAwNjNkXHUwMDQxQlx1MDA0M0R5ellaIik7CisgICAgICAgIGNoZWNrTk9UKHQxLCBGaWx0ZXIyLCAiRmlsdGVyKGFjeXpZWikiLCBzb3VyY2UsICJcdTAwNjFiXHUwMDYzZEFCQ0RcdTAwNzlcdTAwN0FcdTAwNTlcdTAwNUEiKTsKKyAgICAgICAvLyBjaGVja05PVCh0MSwgbnVsbCwgIk5VTEwiLCBzb3VyY2UsICJhYmNkQUJDRHl6WVoiKTsKKyAgICAgICAgY2hlY2tOT1QodDEsIGZpbHRlck5PVCwgIkZpbHRlck5PVChGaXRsZXIxKGFjQUMpKSIsIHNvdXJjZSwgCisgICAgICAgICAgICAgICAgICJhXHUwMDYyY1x1MDA2NEFcdTAwNDJDXHUwMDQ0XHUwMDc5XHUwMDdBXHUwMDU5XHUwMDVBIik7CisgICAgICAgIGNoZWNrTk9UKHQxLCBmaWx0ZXJBTkQsICJGaWx0ZXJBTkQoRml0bGVyMShhY0FDKSwgIEZpbHRlcjIoYWN5ellaKSkiLCAgc291cmNlLCAKKyAgICAgICAgICAgICAgICAgICJcdTAwNjFiXHUwMDYzZFx1MDA0MUJcdTAwNDNEXHUwMDc5XHUwMDdBXHUwMDU5XHUwMDVBIik7CisgICAgICAgIGNoZWNrTk9UKHQxLCBmaWx0ZXJPUiwgIkZpbHRlck9SKEZpdGxlcjEoYWNBQyksICBGaWx0ZXIyKGFjeXpZWikpIiwgIHNvdXJjZSwgCisgICAgICAgICAgICAgICAgICJcdTAwNjFiXHUwMDYzZEFCQ0R5ellaIik7CisKKyAgICAgICAgY2hlY2tBTkQodDEsIEZpbHRlcjEsIEZpbHRlcjIsICJGaWx0ZXIxKGEsYyxBLEMpLCBGaWx0ZXIyKGFjeXpZWikiLCAgc291cmNlLCAKKyAgICAgICAgICAgICAgICAgImFcdTAwNjJjXHUwMDY0QVx1MDA0MkNcdTAwNDR5ellaIik7CisgICAgICAgIGNoZWNrQU5EKHQxLCBGaWx0ZXIyLCBGaWx0ZXIxLCAiRmlsdGVyMihhY3l6WVopLCBGaWx0ZXIxKGEsYyxBLEMpLCAiLCBzb3VyY2UsIAorICAgICAgICAgICAgICAgICAiYVx1MDA2MmNcdTAwNjRBXHUwMDQyQ1x1MDA0NHl6WVoiKTsKKyAgICAgICAgY2hlY2tBTkQodDEsIEZpbHRlcjEsIG51bGwsICJGaWx0ZXIxKGEsYyxBLEMpLCBOVUxMIiwgIHNvdXJjZSwgCisgICAgICAgICAgICAgICAgICJhXHUwMDYyY1x1MDA2NEFcdTAwNDJDXHUwMDQ0XHUwMDc5XHUwMDdBXHUwMDU5XHUwMDVBIik7CisgICAgICAgIGNoZWNrQU5EKHQxLCBudWxsLCBGaWx0ZXIyLCAiTlVMTCwgRmlsdGVyMihhY3l6WVopIiwgICBzb3VyY2UsIAorICAgICAgICAgICAgICAgICAiYVx1MDA2MmNcdTAwNjRcdTAwNDFcdTAwNDJcdTAwNDNcdTAwNDR5ellaIik7CisgICAgICAgIGNoZWNrQU5EKHQxLCBudWxsLCBudWxsLCAiTlVMTCwgTlVMTCIsICBzb3VyY2UsIAorICAgICAgICAgICAgICAgICAiXHUwMDYxXHUwMDYyXHUwMDYzXHUwMDY0XHUwMDQxXHUwMDQyXHUwMDQzXHUwMDQ0XHUwMDc5XHUwMDdBXHUwMDU5XHUwMDVBIik7CisgICAgICAgIGNoZWNrQU5EKHQxLCBmaWx0ZXJBTkQsIG51bGwsICJGaWx0ZXJBTkQoRml0bGVyMShhY0FDKSwgIEZpbHRlcjIoYWN5ellaKSksIE5VTEwiLCAgc291cmNlLAorICAgICAgICAgICAgICAgICAgImFcdTAwNjJjXHUwMDY0QVx1MDA0MkNcdTAwNDR5ellaIik7CisgICAgICAgIGNoZWNrQU5EKHQxLCBmaWx0ZXJBTkQsIEZpbHRlcjEsICJGaWx0ZXJBTkQoRml0bGVyMShhY0FDKSwgIEZpbHRlcjIoYWN5ellaKSksIEZpbHRlcjEoYWNBQykiLCBzb3VyY2UsIAorICAgICAgICAgICAgICAgICAiYVx1MDA2MmNcdTAwNjRBXHUwMDQyQ1x1MDA0NHl6WVoiKTsKKyAgICAgICAgY2hlY2tBTkQodDEsIGZpbHRlckFORCwgRmlsdGVyMiwgIkZpbHRlckFORChGaXRsZXIxKGFjQUMpLCAgRmlsdGVyMihhY3l6WVopKSwgRmlsdGVyMihhY3l6WVopIiwgc291cmNlLCAKKyAgICAgICAgICAgICAgICAgImFcdTAwNjJjXHUwMDY0QVx1MDA0MkNcdTAwNDR5ellaIik7CisgICAgICAgIGNoZWNrQU5EKHQxLCBGaWx0ZXIxLCBmaWx0ZXJBTkQsICJGaWx0ZXIxKGFjQUMpLCBGaWx0ZXJBTkQoRmlsdGVyMShhY0FDKSwgRml0bGVyMShhY0FDKSkiLCBzb3VyY2UsCisgICAgICAgICAgICAgICAgICAiYVx1MDA2MmNcdTAwNjRBXHUwMDQyQ1x1MDA0NHl6WVoiKTsKKyAgICAgICAgY2hlY2tBTkQodDEsIEZpbHRlcjIsIGZpbHRlckFORCwgIkZpbHRlcjIoYWN5ellaKSwgRmlsdGVyQU5EKEZpbHRlcjEoYWNBQyksIEZpdGxlcjEoYWNBQykpIiwgc291cmNlLCAKKyAgICAgICAgICAgICAgICAgImFcdTAwNjJjXHUwMDY0QVx1MDA0MkNcdTAwNDR5ellaIik7CisgICAgICAgIGNoZWNrQU5EKHQxLCBmaWx0ZXJPUiwgbnVsbCwgIkZpbHRlck9SKEZpdGxlcjEoYWNBQyksICBGaWx0ZXIyKGFjeXpZWikpLCBOVUxMIiwgIHNvdXJjZSwgCisgICAgICAgICAgICAgICAgICJhXHUwMDYyY1x1MDA2NFx1MDA0MVx1MDA0Mlx1MDA0M1x1MDA0NFx1MDA3OVx1MDA3QVx1MDA1OVx1MDA1QSIpOworICAgICAgICBjaGVja0FORCh0MSwgZmlsdGVyT1IsIEZpbHRlcjEsICJGaWx0ZXJPUihGaXRsZXIxKGFjQUMpLCAgRmlsdGVyMihhY3l6WVopKSwgRml0bGVyMShhY0FDKSIsIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgImFcdTAwNjJjXHUwMDY0QVx1MDA0MkNcdTAwNDRcdTAwNzlcdTAwN0FcdTAwNTlcdTAwNUEiKTsKKyAgICAgICAgY2hlY2tBTkQodDEsIGZpbHRlck9SLCBGaWx0ZXIyLCAiRmlsdGVyT1IoRml0bGVyMShhY0FDKSwgIEZpbHRlcjIoYWN5ellaKSksIEZpdGxlcjIoYWN5ellaKSIsIHNvdXJjZSwgCisgICAgICAgICAgICAgICAgICJhXHUwMDYyY1x1MDA2NFx1MDA0MVx1MDA0Mlx1MDA0M1x1MDA0NHl6WVoiKTsKKyAgICAgICAgY2hlY2tBTkQodDEsIGZpbHRlck5PVCwgRmlsdGVyMSwgIkZpbHRlck5PVChGaXRsZXIxKGFjQUMpKSwgRml0bGVyMShhY0FDKSIsIHNvdXJjZSwgCisgICAgICAgICAgICAgICAgICJhYmNkQUJDRHl6WVoiKTsKKyAgICAgICAgY2hlY2tBTkQodDEsIEZpbHRlcjEsIGZpbHRlck5PVCwgIkZpdGxlcjEoYWNBQyksIEZpbHRlck5PVChGaXRsZXIxKGFjQUMpKSIsIHNvdXJjZSwgCisgICAgICAgICAgICAgICAgICJhYmNkQUJDRHl6WVoiKTsKKyAgICAgICAgY2hlY2tBTkQodDEsIGZpbHRlck5PVCwgRmlsdGVyMiwgIkZpbHRlck5PVChGaXRsZXIxKGFjQUMpKSwgRml0bGVyMihhY3l6WVopIiwgc291cmNlLCAKKyAgICAgICAgICAgICAgICAgImFiY2RcdTAwNDFCXHUwMDQzRHl6WVoiKTsKKyAgICAgICAgY2hlY2tBTkQodDEsIEZpbHRlcjIsIGZpbHRlck5PVCwgIkZpdGxlcjIoYWN5ellaKSwgRmlsdGVyTk9UKEZpdGxlcjEoYWNBQykpIiwgc291cmNlLCAKKyAgICAgICAgICAgICAgICAgImFiY2RcdTAwNDFCXHUwMDQzRHl6WVoiKTsKKworICAgICAgICBjaGVja09SKHQxLCBGaWx0ZXIxLCBGaWx0ZXIyLCAiRmlsdGVyMShhLGMsQSxDKSwgRmlsdGVyMihhY3l6WVopIiwgIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAiYVx1MDA2MmNcdTAwNjRcdTAwNDFcdTAwNDJcdTAwNDNcdTAwNDRcdTAwNzlcdTAwN0FcdTAwNTlcdTAwNUEiKTsKKyAgICAgICAgY2hlY2tPUih0MSwgRmlsdGVyMiwgRmlsdGVyMSwgIkZpbHRlcjIoYWN5ellaKSwgRmlsdGVyMShhLGMsQSxDKSIsIHNvdXJjZSwgCisgICAgICAgICAgICAgICAgImFcdTAwNjJjXHUwMDY0XHUwMDQxXHUwMDQyXHUwMDQzXHUwMDQ0XHUwMDc5XHUwMDdBXHUwMDU5XHUwMDVBIik7CisgICAgICAgIGNoZWNrT1IodDEsIEZpbHRlcjEsIG51bGwsICJGaWx0ZXIxKGEsYyxBLEMpLCBOVUxMIiwgc291cmNlLCAKKyAgICAgICAgICAgICAgICAiYVx1MDA2MmNcdTAwNjRBXHUwMDQyQ1x1MDA0NFx1MDA3OVx1MDA3QVx1MDA1OVx1MDA1QSIpOworICAgICAgICBjaGVja09SKHQxLCBudWxsLCBGaWx0ZXIyLCAiTlVMTCwgRmlsdGVyMihhY3l6WVopIiwgIHNvdXJjZSwgCisgICAgICAgICAgICAgICAgImFcdTAwNjJjXHUwMDY0XHUwMDQxXHUwMDQyXHUwMDQzXHUwMDQ0eXpZWiIpOworICAgICAgICBjaGVja09SKHQxLCBudWxsLCBudWxsLCAiTlVMTCwgTlVMTCIsICAgc291cmNlLCAKKyAgICAgICAgICAgICAgICAiXHUwMDYxXHUwMDYyXHUwMDYzXHUwMDY0XHUwMDQxXHUwMDQyXHUwMDQzXHUwMDQ0XHUwMDc5XHUwMDdBXHUwMDU5XHUwMDVBIik7CisgICAgICAgIGNoZWNrT1IodDEsIGZpbHRlckFORCwgbnVsbCwgIkZpbHRlckFORChGaXRsZXIxKGFjQUMpLCAgRmlsdGVyMihhY3l6WVopKSwgTlVMTCIsIHNvdXJjZSwgCisgICAgICAgICAgICAgICAgImFcdTAwNjJjXHUwMDY0QVx1MDA0MkNcdTAwNDR5ellaIik7CisgICAgICAgIGNoZWNrT1IodDEsIGZpbHRlckFORCwgRmlsdGVyMSwgIkZpbHRlckFORChGaXRsZXIxKGFjQUMpLCAgRmlsdGVyMihhY3l6WVopKSwgRmlsdGVyMShhY0FDKSIsIHNvdXJjZSwgCisgICAgICAgICAgICAgICAgImFcdTAwNjJjXHUwMDY0QVx1MDA0MkNcdTAwNDRcdTAwNzlcdTAwN0FcdTAwNTlcdTAwNUEiKTsKKyAgICAgICAgY2hlY2tPUih0MSwgZmlsdGVyQU5ELCBGaWx0ZXIyLCAiRmlsdGVyQU5EKEZpdGxlcjEoYWNBQyksICBGaWx0ZXIyKGFjeXpZWikpLCBGaWx0ZXIyKGFjeXpZWikiLCBzb3VyY2UsIAorICAgICAgICAgICAgICAgICJhXHUwMDYyY1x1MDA2NFx1MDA0MVx1MDA0Mlx1MDA0M1x1MDA0NHl6WVoiKTsKKyAgICAgICAgY2hlY2tPUih0MSwgRmlsdGVyMSwgZmlsdGVyQU5ELCAiRmlsdGVyMShhY0FDKSwgRmlsdGVyQU5EKEZpbHRlcjEoYWNBQyksIEZpdGxlcjEoYWNBQykpIiwgc291cmNlLCAKKyAgICAgICAgICAgICAgICAiYVx1MDA2MmNcdTAwNjRBXHUwMDQyQ1x1MDA0NFx1MDA3OVx1MDA3QVx1MDA1OVx1MDA1QSIpOworICAgICAgICBjaGVja09SKHQxLCBGaWx0ZXIyLCBmaWx0ZXJBTkQsICJGaWx0ZXIyKGFjeXpZWiksIEZpbHRlckFORChGaWx0ZXIxKGFjQUMpLCBGaXRsZXIxKGFjQUMpKSIsIHNvdXJjZSwgCisgICAgICAgICAgICAgICAgImFcdTAwNjJjXHUwMDY0XHUwMDQxXHUwMDQyXHUwMDQzXHUwMDQ0eXpZWiIpOworICAgICAgICBjaGVja09SKHQxLCBmaWx0ZXJOT1QsIEZpbHRlcjEsICJGaWx0ZXJOT1QoRml0bGVyMShhY0FDKSksIEZpdGxlcjEoYWNBQykiLCBzb3VyY2UsIAorICAgICAgICAgICAgICAgICJcdTAwNjFcdTAwNjJcdTAwNjNcdTAwNjRcdTAwNDFcdTAwNDJcdTAwNDNcdTAwNDRcdTAwNzlcdTAwN0FcdTAwNTlcdTAwNUEiKTsKKyAgICAgICAgY2hlY2tPUih0MSwgRmlsdGVyMSwgZmlsdGVyTk9ULCAiRml0bGVyMShhY0FDKSwgRmlsdGVyTk9UKEZpdGxlcjEoYWNBQykpIiwgIHNvdXJjZSwgCisgICAgICAgICAgICAgICAgIlx1MDA2MVx1MDA2Mlx1MDA2M1x1MDA2NFx1MDA0MVx1MDA0Mlx1MDA0M1x1MDA0NFx1MDA3OVx1MDA3QVx1MDA1OVx1MDA1QSIpOworICAgICAgICBjaGVja09SKHQxLCBmaWx0ZXJOT1QsIEZpbHRlcjIsICJGaWx0ZXJOT1QoRml0bGVyMShhY0FDKSksIEZpdGxlcjEoYWN5ellaKSIsICBzb3VyY2UsIAorICAgICAgICAgICAgICAgICJcdTAwNjFcdTAwNjJcdTAwNjNcdTAwNjRcdTAwNDFcdTAwNDJcdTAwNDNcdTAwNDR5ellaIik7CisgICAgICAgIGNoZWNrT1IodDEsIEZpbHRlcjIsIGZpbHRlck5PVCwgIkZpdGxlcjIoYWN5ellaKSwgRmlsdGVyTk9UKEZpdGxlcjEoYWNBQykpIiwgc291cmNlLCAKKyAgICAgICAgICAgICAgICAiXHUwMDYxXHUwMDYyXHUwMDYzXHUwMDY0XHUwMDQxXHUwMDQyXHUwMDQzXHUwMDQ0eXpZWiIpOworCisgIAorfQorICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIFN1cHBvcnQgbWV0aG9kcworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgdm9pZCBjaGVja09SKFRyYW5zbGl0ZXJhdG9yIHQsCisgICAgICAgICAgICAgICAgICAgVW5pY29kZUZpbHRlciBmMSwgCisgICAgICAgICAgICAgICAgICAgVW5pY29kZUZpbHRlciBmMiwgCisgICAgICAgICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgU3RyaW5nIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICBTdHJpbmcgZXhwZWN0ZWQpeworICAgICAgICBVbmljb2RlRmlsdGVyIGZpbHRlcj1Vbmljb2RlRmlsdGVyTG9naWMub3IoZjEsIGYyKTsKKyAgICAgICAgdC5zZXRGaWx0ZXIoZmlsdGVyKTsKKyAgICAgICAgZXhwZWN0KHQsICJ3aXRoIEZpbHRlck9SKCIgKyBtZXNzYWdlICsgIikiLCBzb3VyY2UsIGV4cGVjdGVkKTsKKworICAgIH0KKyAgICB2b2lkIGNoZWNrQU5EKFRyYW5zbGl0ZXJhdG9yIHQsCisgICAgICAgICAgICAgICAgICAgVW5pY29kZUZpbHRlciBmMSwgCisgICAgICAgICAgICAgICAgICAgVW5pY29kZUZpbHRlciBmMiwgCisgICAgICAgICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgU3RyaW5nIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICBTdHJpbmcgZXhwZWN0ZWQpeworICAgICAgICBVbmljb2RlRmlsdGVyIGZpbHRlcj1Vbmljb2RlRmlsdGVyTG9naWMuYW5kKGYxLCBmMik7CisgICAgICAgIHQuc2V0RmlsdGVyKGZpbHRlcik7CisgICAgICAgIGV4cGVjdCh0LCAid2l0aCBGaWx0ZXJBTkQoIiArIG1lc3NhZ2UgKyAiKSIsIHNvdXJjZSwgZXhwZWN0ZWQpOworCisgICAgfQorICAgIHZvaWQgY2hlY2tOT1QoVHJhbnNsaXRlcmF0b3IgdCwKKyAgICAgICAgICAgICAgICAgICBVbmljb2RlRmlsdGVyIGYxLCAKKyAgICAgICAgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICBTdHJpbmcgc291cmNlLAorICAgICAgICAgICAgICAgICAgIFN0cmluZyBleHBlY3RlZCl7CisgICAgICAgIFVuaWNvZGVGaWx0ZXIgZmlsdGVyPVVuaWNvZGVGaWx0ZXJMb2dpYy5ub3QoZjEpOworICAgICAgICB0LnNldEZpbHRlcihmaWx0ZXIpOworICAgICAgICBleHBlY3QodCwgIndpdGggRmlsdGVyTk9UKCIgKyBtZXNzYWdlICsgIikiLCBzb3VyY2UsIGV4cGVjdGVkKTsKKworICAgIH0gIAorICAgIHZvaWQgZXhwZWN0KFRyYW5zbGl0ZXJhdG9yIHQsICBTdHJpbmcgbWVzc2FnZSwgIFN0cmluZyBzb3VyY2UsICBTdHJpbmcgZXhwZWN0ZWRSZXN1bHQpIHsKKyAgICAgICAgU3RyaW5nIHJzb3VyY2UgPSBzb3VyY2U7CisgICAgICAgIHQudHJhbnNsaXRlcmF0ZShyc291cmNlKTsKKyAgICAgICAgZXhwZWN0QXV4KHQuZ2V0SUQoKSArICI6UmVwbGFjZWFibGUgIiArIG1lc3NhZ2UsIHNvdXJjZSArICItPiIgKyByc291cmNlLCBleHBlY3RlZFJlc3VsdC5lcXVhbHMocnNvdXJjZSksIGV4cGVjdGVkUmVzdWx0KTsKKworICAgIH0KKyAgICB2b2lkIGV4cGVjdEF1eChTdHJpbmcgdGFnLCBTdHJpbmcgc3VtbWFyeSwgYm9vbGVhbiBwYXNzLCBTdHJpbmcgZXhwZWN0ZWRSZXN1bHQpIHsKKyAgICAgICAgaWYgKHBhc3MpIHsKKyAgICAgICAgICAgIGxvZ2xuKCIoIiArIHRhZysgIikgIiArIFV0aWxpdHkuZXNjYXBlKHN1bW1hcnkpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiAoIisgdGFnKyAiKSAiCisgICAgICAgICAgICAgICAgKyBVdGlsaXR5LmVzY2FwZShzdW1tYXJ5KQorICAgICAgICAgICAgICAgICsgIiwgZXhwZWN0ZWQgIiArIFV0aWxpdHkuZXNjYXBlKGV4cGVjdGVkUmVzdWx0KSk7CisgICAgICAgIH0KKyAgICB9CisKK30KKworCisKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC90cmFuc2xpdC9Vbmljb2RlU2V0VGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3RyYW5zbGl0L1VuaWNvZGVTZXRUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZWYyZDE2MQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC90cmFuc2xpdC9Vbmljb2RlU2V0VGVzdC5qYXZhCkBAIC0wLDAgKzEsMTI4MyBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3RyYW5zbGl0L1VuaWNvZGVTZXRUZXN0LmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMTIvMDQgMDA6MjU6NTIgJCAKKyAqICRSZXZpc2lvbjogMS4zOSAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3QudHJhbnNsaXQ7CitpbXBvcnQgY29tLmlibS5pY3UubGFuZy4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuKjsKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYudGVzdC4qOworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuVXRpbGl0eTsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLlNvcnRlZFNldFJlbGF0aW9uOworaW1wb3J0IGphdmEudXRpbC4qOworCisvKioKKyAqIEB0ZXN0CisgKiBAc3VtbWFyeSBHZW5lcmFsIHRlc3Qgb2YgVW5pY29kZVNldAorICovCitwdWJsaWMgY2xhc3MgVW5pY29kZVNldFRlc3QgZXh0ZW5kcyBUZXN0Rm13ayB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIE5PVCA9ICIlJSUlIjsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBuZXcgVW5pY29kZVNldFRlc3QoKS5ydW4oYXJncyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdCB0aGF0IHRvUGF0dGVybigpIHJvdW5kIHRyaXBzIHdpdGggc3ludGF4IGNoYXJhY3RlcnMgYW5kCisgICAgICogd2hpdGVzcGFjZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0VG9QYXR0ZXJuKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgT1RIRVJfVE9QQVRURVJOX1RFU1RTLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBjaGVja1BhdChPVEhFUl9UT1BBVFRFUk5fVEVTVFNbaV0sIG5ldyBVbmljb2RlU2V0KE9USEVSX1RPUEFUVEVSTl9URVNUU1tpXSkpOworICAgICAgICB9CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IDB4MTBGRkZGOyArK2kpIHsKKyAgICAgICAgICAgIGlmICgoaSA8PSAweEZGICYmICFVQ2hhcmFjdGVyLmlzTGV0dGVyKGkpKSB8fCBVQ2hhcmFjdGVyLmlzV2hpdGVzcGFjZShpKSkgeworICAgICAgICAgICAgICAgIC8vIGNoZWNrIHZhcmlvdXMgY29tYmluYXRpb25zIHRvIG1ha2Ugc3VyZSB0aGV5IGFsbCB3b3JrLgorICAgICAgICAgICAgICAgIGlmIChpICE9IDAgJiYgIXRvUGF0dGVybkF1eChpLCBpKSkgY29udGludWU7CisgICAgICAgICAgICAgICAgaWYgKCF0b1BhdHRlcm5BdXgoMCwgaSkpIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGlmICghdG9QYXR0ZXJuQXV4KGksIDB4RkZGRikpIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIHN0YXRpYyBTdHJpbmdbXSBPVEhFUl9UT1BBVFRFUk5fVEVTVFMgPSB7CisgICAgICAgICAgICAgICAgIltbOmxhdGluOl0mWzpncmVlazpdXSIsIAorICAgICAgICAgICAgICAgICJbWzpsYXRpbjpdLVs6Z3JlZWs6XV0iLAorICAgICAgICAgICAgICAgICJbOm5vbnNwYWNpbmcgbWFyazpdIgorICAgIH07CisgICAgCisgICAgCisgICAgcHVibGljIGJvb2xlYW4gdG9QYXR0ZXJuQXV4KGludCBzdGFydCwgaW50IGVuZCkgeworICAgICAgICAvLyB1c2UgSW50ZWdlci50b1N0cmluZyBiZWNhdXNlIFV0aWxpdHkuaGV4IGRvZXNuJ3QgaGFuZGxlIGludHMKKyAgICAgICAgU3RyaW5nIHNvdXJjZSA9ICIweCIgKyBJbnRlZ2VyLnRvU3RyaW5nKHN0YXJ0LDE2KS50b1VwcGVyQ2FzZSgpOworICAgICAgICBpZiAoc3RhcnQgIT0gZW5kKSBzb3VyY2UgKz0gIi4uMHgiICsgSW50ZWdlci50b1N0cmluZyhlbmQsMTYpLnRvVXBwZXJDYXNlKCk7CisgICAgICAgIFVuaWNvZGVTZXQgdGVzdFNldCA9IG5ldyBVbmljb2RlU2V0KCk7CisgICAgICAgIHRlc3RTZXQuYWRkKHN0YXJ0LCBlbmQpOworICAgICAgICByZXR1cm4gY2hlY2tQYXQoc291cmNlLCB0ZXN0U2V0KTsKKyAgICB9CisgICAgCisgICAgYm9vbGVhbiBjaGVja1BhdCAoU3RyaW5nIHNvdXJjZSwgVW5pY29kZVNldCB0ZXN0U2V0KSB7CisgICAgICAgIFN0cmluZyBwYXQgPSAiIjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIC8vIFdoYXQgd2Ugd2FudCB0byBtYWtlIHN1cmUgb2YgaXMgdGhhdCBhIHBhdHRlcm4gZ2VuZXJhdGVkCisgICAgICAgICAgICAvLyBieSB0b1BhdHRlcm4oKSwgd2l0aCBvciB3aXRob3V0IGVzY2FwZWQgdW5wcmludGFibGVzLCBjYW4KKyAgICAgICAgICAgIC8vIGJlIHBhc3NlZCBiYWNrIGludG8gdGhlIFVuaWNvZGVTZXQgY29uc3RydWN0b3IuCisgICAgICAgICAgICBTdHJpbmcgcGF0MCA9IHRlc3RTZXQudG9QYXR0ZXJuKHRydWUpOworICAgICAgICAgICAgaWYgKCFjaGVja1BhdChzb3VyY2UgKyAiIChlc2NhcGVkKSIsIHRlc3RTZXQsIHBhdDApKSByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vU3RyaW5nIHBhdDEgPSB1bmVzY2FwZUxlbmllbnRseShwYXQwKTsKKyAgICAgICAgICAgIC8vaWYgKCFjaGVja1BhdChzb3VyY2UgKyAiIChpbiBjb2RlKSIsIHRlc3RTZXQsIHBhdDEpKSByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFN0cmluZyBwYXQyID0gdGVzdFNldC50b1BhdHRlcm4oZmFsc2UpOworICAgICAgICAgICAgaWYgKCFjaGVja1BhdChzb3VyY2UsIHRlc3RTZXQsIHBhdDIpKSByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vU3RyaW5nIHBhdDMgPSB1bmVzY2FwZUxlbmllbnRseShwYXQyKTsKKyAgICAgICAgICAgIC8vaWYgKCFjaGVja1BhdChzb3VyY2UgKyAiIChpbiBjb2RlKSIsIHRlc3RTZXQsIHBhdDMpKSByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vbG9nbG4oc291cmNlICsgIiA9PiAiICsgcGF0MCArICIsICIgKyBwYXQxICsgIiwgIiArIHBhdDIgKyAiLCAiICsgcGF0Myk7CisgICAgICAgICAgICBsb2dsbihzb3VyY2UgKyAiID0+ICIgKyBwYXQwICsgIiwgIiArIHBhdDIpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkVYQ0VQVElPTiBpbiB0b1BhdHRlcm46ICIgKyBzb3VyY2UgKyAiID0+ICIgKyBwYXQpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICBib29sZWFuIGNoZWNrUGF0IChTdHJpbmcgc291cmNlLCBVbmljb2RlU2V0IHRlc3RTZXQsIFN0cmluZyBwYXQpIHsKKyAgICAgICAgVW5pY29kZVNldCB0ZXN0U2V0MiA9IG5ldyBVbmljb2RlU2V0KHBhdCk7CisgICAgICAgIGlmICghdGVzdFNldDIuZXF1YWxzKHRlc3RTZXQpKSB7CisgICAgICAgICAgICBlcnJsbigiRmFpbCB0b1BhdHRlcm46ICIgKyBzb3VyY2UgKyAiID0+ICIgKyBwYXQpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICAKKyAgICAvLyBOT1RFOiBjb3BpZWQgdGhlIGZvbGxvd2luZyBmcm9tIFV0aWxpdHkuIFRoZXJlIG91Z2h0IHRvIGJlIGEgdmVyc2lvbiBpbiB0aGVyZSB3aXRoIGEgZmxhZworICAgIC8vIHRoYXQgZG9lcyB0aGUgSmF2YSBzdHVmZgorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgaW50IHVuZXNjYXBlQXQoU3RyaW5nIHMsIGludFtdIG9mZnNldDE2KSB7CisgICAgICAgIGludCBjOworICAgICAgICBpbnQgcmVzdWx0ID0gMDsKKyAgICAgICAgaW50IG4gPSAwOworICAgICAgICBpbnQgbWluRGlnID0gMDsKKyAgICAgICAgaW50IG1heERpZyA9IDA7CisgICAgICAgIGludCBiaXRzUGVyRGlnaXQgPSA0OworICAgICAgICBpbnQgZGlnOworICAgICAgICBpbnQgaTsKKworICAgICAgICAvKiBDaGVjayB0aGF0IG9mZnNldCBpcyBpbiByYW5nZSAqLworICAgICAgICBpbnQgb2Zmc2V0ID0gb2Zmc2V0MTZbMF07CisgICAgICAgIGludCBsZW5ndGggPSBzLmxlbmd0aCgpOworICAgICAgICBpZiAob2Zmc2V0IDwgMCB8fCBvZmZzZXQgPj0gbGVuZ3RoKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICAvKiBGZXRjaCBmaXJzdCBVQ2hhciBhZnRlciAnXFwnICovCisgICAgICAgIGMgPSBVVEYxNi5jaGFyQXQocywgb2Zmc2V0KTsKKyAgICAgICAgb2Zmc2V0ICs9IFVURjE2LmdldENoYXJDb3VudChjKTsKKworICAgICAgICAvKiBDb252ZXJ0IGhleGFkZWNpbWFsIGFuZCBvY3RhbCBlc2NhcGVzICovCisgICAgICAgIHN3aXRjaCAoYykgeworICAgICAgICBjYXNlICd1JzoKKyAgICAgICAgICAgIG1pbkRpZyA9IG1heERpZyA9IDQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgLyoKKyAgICAgICAgY2FzZSAnVSc6CisgICAgICAgICAgICBtaW5EaWcgPSBtYXhEaWcgPSA4OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ3gnOgorICAgICAgICAgICAgbWluRGlnID0gMTsKKyAgICAgICAgICAgIG1heERpZyA9IDI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgKi8KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGRpZyA9IFVDaGFyYWN0ZXIuZGlnaXQoYywgOCk7CisgICAgICAgICAgICBpZiAoZGlnID49IDApIHsKKyAgICAgICAgICAgICAgICBtaW5EaWcgPSAxOworICAgICAgICAgICAgICAgIG1heERpZyA9IDM7CisgICAgICAgICAgICAgICAgbiA9IDE7IC8qIEFscmVhZHkgaGF2ZSBmaXJzdCBvY3RhbCBkaWdpdCAqLworICAgICAgICAgICAgICAgIGJpdHNQZXJEaWdpdCA9IDM7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZGlnOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1pbkRpZyAhPSAwKSB7CisgICAgICAgICAgICB3aGlsZSAob2Zmc2V0IDwgbGVuZ3RoICYmIG4gPCBtYXhEaWcpIHsKKyAgICAgICAgICAgICAgICAvLyBURU1QT1JBUlkKKyAgICAgICAgICAgICAgICAvLyBUT0RPOiBSZXN0b3JlIHRoZSBjaGFyMzItYmFzZWQgY29kZSB3aGVuIFVDaGFyYWN0ZXIuZGlnaXQKKyAgICAgICAgICAgICAgICAvLyBpcyB3b3JraW5nIChCdWcgNjYpLgorCisgICAgICAgICAgICAgICAgLy9jID0gVVRGMTYuY2hhckF0KHMsIG9mZnNldCk7CisgICAgICAgICAgICAgICAgLy9kaWcgPSBVQ2hhcmFjdGVyLmRpZ2l0KGMsIChiaXRzUGVyRGlnaXQgPT0gMykgPyA4IDogMTYpOworICAgICAgICAgICAgICAgIGMgPSBzLmNoYXJBdChvZmZzZXQpOworICAgICAgICAgICAgICAgIGRpZyA9IENoYXJhY3Rlci5kaWdpdCgoY2hhciljLCAoYml0c1BlckRpZ2l0ID09IDMpID8gOCA6IDE2KTsKKyAgICAgICAgICAgICAgICBpZiAoZGlnIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCA8PCBiaXRzUGVyRGlnaXQpIHwgZGlnOworICAgICAgICAgICAgICAgIC8vb2Zmc2V0ICs9IFVURjE2LmdldENoYXJDb3VudChjKTsKKyAgICAgICAgICAgICAgICArK29mZnNldDsKKyAgICAgICAgICAgICAgICArK247CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobiA8IG1pbkRpZykgeworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG9mZnNldDE2WzBdID0gb2Zmc2V0OworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIC8qIENvbnZlcnQgQy1zdHlsZSBlc2NhcGVzIGluIHRhYmxlICovCisgICAgICAgIGZvciAoaT0wOyBpPFVORVNDQVBFX01BUC5sZW5ndGg7IGkrPTIpIHsKKyAgICAgICAgICAgIGlmIChjID09IFVORVNDQVBFX01BUFtpXSkgeworICAgICAgICAgICAgICAgIG9mZnNldDE2WzBdID0gb2Zmc2V0OworICAgICAgICAgICAgICAgIHJldHVybiBVTkVTQ0FQRV9NQVBbaSsxXTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoYyA8IFVORVNDQVBFX01BUFtpXSkgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLyogSWYgbm8gc3BlY2lhbCBmb3JtcyBhcmUgcmVjb2duaXplZCwgdGhlbiBjb25zaWRlcgorICAgICAgICAgKiB0aGUgYmFja3NsYXNoIHRvIGdlbmVyaWNhbGx5IGVzY2FwZSB0aGUgbmV4dCBjaGFyYWN0ZXIuICovCisgICAgICAgIG9mZnNldDE2WzBdID0gb2Zmc2V0OworICAgICAgICByZXR1cm4gYzsKKyAgICB9CisKKyAgICAvKiBUaGlzIG1hcCBtdXN0IGJlIGluIEFTQ0VORElORyBPUkRFUiBPRiBUSEUgRVNDQVBFIENPREUgKi8KKyAgICBzdGF0aWMgcHJpdmF0ZSBmaW5hbCBjaGFyW10gVU5FU0NBUEVfTUFQID0geworICAgICAgICAvKiIgICAweDIyLCAweDIyICovCisgICAgICAgIC8qJyAgIDB4MjcsIDB4MjcgKi8KKyAgICAgICAgLyo/ICAgMHgzRiwgMHgzRiAqLworICAgICAgICAvKlwgICAweDVDLCAweDVDICovCisgICAgICAgIC8qYSovIDB4NjEsIDB4MDcsCisgICAgICAgIC8qYiovIDB4NjIsIDB4MDgsCisgICAgICAgIC8qZiovIDB4NjYsIDB4MGMsCisgICAgICAgIC8qbiovIDB4NkUsIDB4MGEsCisgICAgICAgIC8qciovIDB4NzIsIDB4MGQsCisgICAgICAgIC8qdCovIDB4NzQsIDB4MDksCisgICAgICAgIC8qdiovIDB4NzYsIDB4MGIKKyAgICB9OworCisgICAgLyoqCisgICAgICogQ29udmVydCBhbGwgZXNjYXBlcyBpbiBhIGdpdmVuIHN0cmluZyB1c2luZyB1bmVzY2FwZUF0KCkuCisgICAgICogTGVhdmUgaW52YWxpZCBlc2NhcGUgc2VxdWVuY2VzIHVuY2hhbmdlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyB1bmVzY2FwZUxlbmllbnRseShTdHJpbmcgcykgeworICAgICAgICBTdHJpbmdCdWZmZXIgYnVmID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBpbnRbXSBwb3MgPSBuZXcgaW50WzFdOworICAgICAgICBmb3IgKGludCBpPTA7IGk8cy5sZW5ndGgoKTsgKSB7CisgICAgICAgICAgICBjaGFyIGMgPSBzLmNoYXJBdChpKyspOworICAgICAgICAgICAgaWYgKGMgPT0gJ1xcJykgeworICAgICAgICAgICAgICAgIHBvc1swXSA9IGk7CisgICAgICAgICAgICAgICAgaW50IGUgPSB1bmVzY2FwZUF0KHMsIHBvcyk7CisgICAgICAgICAgICAgICAgaWYgKGUgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoYyk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgVVRGMTYuYXBwZW5kKGJ1ZiwgZSk7CisgICAgICAgICAgICAgICAgICAgIGkgPSBwb3NbMF07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBidWYuYXBwZW5kKGMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBidWYudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0UGF0dGVybnMoKSB7CisgICAgICAgIFVuaWNvZGVTZXQgc2V0ID0gbmV3IFVuaWNvZGVTZXQoKTsKKyAgICAgICAgZXhwZWN0UGF0dGVybihzZXQsICJbW2EtbV0mW2Qtel0mW2steV1dIiwgICJrbSIpOworICAgICAgICBleHBlY3RQYXR0ZXJuKHNldCwgIltbYS16XS1bbS15XS1bZC1yXV0iLCAgImFjenoiKTsKKyAgICAgICAgZXhwZWN0UGF0dGVybihzZXQsICJbYVxcLXpdIiwgICItLWFhenoiKTsKKyAgICAgICAgZXhwZWN0UGF0dGVybihzZXQsICJbLWF6XSIsICAiLS1hYXp6Iik7CisgICAgICAgIGV4cGVjdFBhdHRlcm4oc2V0LCAiW2F6LV0iLCAgIi0tYWF6eiIpOworICAgICAgICBleHBlY3RQYXR0ZXJuKHNldCwgIltbW2Etel0tW2FlaW91XWldXSIsICJiZGZucHR2eiIpOworCisgICAgICAgIC8vIFRocm93IGluIGEgdGVzdCBvZiBjb21wbGVtZW50CisgICAgICAgIHNldC5jb21wbGVtZW50KCk7CisgICAgICAgIFN0cmluZyBleHAgPSAnXHUwMDAwJyArICJhZWVvb3V1IiArIChjaGFyKSgneicrMSkgKyAnXHVGRkZGJzsKKyAgICAgICAgZXhwZWN0UGFpcnMoc2V0LCBleHApOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RDYXRlZ29yaWVzKCkgeworICAgICAgICBpbnQgZmFpbHVyZXMgPSAwOworICAgICAgICBVbmljb2RlU2V0IHNldCA9IG5ldyBVbmljb2RlU2V0KCJbOkx1Ol0iKTsKKyAgICAgICAgZXhwZWN0Q29udGFpbm1lbnQoc2V0LCAiQUJDIiwgImFiYyIpOworCisgICAgICAgIC8vIE1ha2Ugc3VyZSBnZW5lcmF0aW9uIG9mIEwgZG9lc24ndCBwb2xsdXRlIGNhY2hlZCBMdSBzZXQKKyAgICAgICAgLy8gRmlyc3QgZ2VuZXJhdGUgTCwgdGhlbiBMdQorICAgICAgICAvLyBub3QgdXNlZCBpbnQgVE9QID0gMHgyMDA7IC8vIERvbid0IG5lZWQgdG8gZ28gb3ZlciB0aGUgd2hvbGUgcmFuZ2U6CisgICAgICAgIHNldCA9IG5ldyBVbmljb2RlU2V0KCJbOkw6XSIpOworICAgICAgICBmb3IgKGludCBpPTA7IGk8MHgyMDA7ICsraSkgeworICAgICAgICAgICAgYm9vbGVhbiBsID0gVUNoYXJhY3Rlci5pc0xldHRlcihpKTsKKyAgICAgICAgICAgIGlmIChsICE9IHNldC5jb250YWlucygoY2hhcilpKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBMIGNvbnRhaW5zICIgKyAoY2hhcilpICsgIiA9ICIgKyAKKyAgICAgICAgICAgICAgICAgICAgICBzZXQuY29udGFpbnMoKGNoYXIpaSkpOworICAgICAgICAgICAgICAgIGlmICgrK2ZhaWx1cmVzID09IDEwKSBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHNldCA9IG5ldyBVbmljb2RlU2V0KCJbOkx1Ol0iKTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPDB4MjAwOyArK2kpIHsKKyAgICAgICAgICAgIGJvb2xlYW4gbHUgPSAoVUNoYXJhY3Rlci5nZXRUeXBlKGkpID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5VUFBFUkNBU0VfTEVUVEVSKTsKKyAgICAgICAgICAgIGlmIChsdSAhPSBzZXQuY29udGFpbnMoKGNoYXIpaSkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogTHUgY29udGFpbnMgIiArIChjaGFyKWkgKyAiID0gIiArIAorICAgICAgICAgICAgICAgICAgICAgIHNldC5jb250YWlucygoY2hhcilpKSk7CisgICAgICAgICAgICAgICAgaWYgKCsrZmFpbHVyZXMgPT0gMjApIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdEFkZFJlbW92ZSgpIHsKKyAgICAgICAgVW5pY29kZVNldCBzZXQgPSBuZXcgVW5pY29kZVNldCgpOworICAgICAgICBzZXQuYWRkKCdhJywgJ3onKTsKKyAgICAgICAgZXhwZWN0UGFpcnMoc2V0LCAiYXoiKTsKKyAgICAgICAgc2V0LnJlbW92ZSgnbScsICdwJyk7CisgICAgICAgIGV4cGVjdFBhaXJzKHNldCwgImFscXoiKTsKKyAgICAgICAgc2V0LnJlbW92ZSgnZScsICdnJyk7CisgICAgICAgIGV4cGVjdFBhaXJzKHNldCwgImFkaGxxeiIpOworICAgICAgICBzZXQucmVtb3ZlKCdkJywgJ2knKTsKKyAgICAgICAgZXhwZWN0UGFpcnMoc2V0LCAiYWNqbHF6Iik7CisgICAgICAgIHNldC5yZW1vdmUoJ2MnLCAncicpOworICAgICAgICBleHBlY3RQYWlycyhzZXQsICJhYnN6Iik7CisgICAgICAgIHNldC5hZGQoJ2YnLCAncScpOworICAgICAgICBleHBlY3RQYWlycyhzZXQsICJhYmZxc3oiKTsKKyAgICAgICAgc2V0LnJlbW92ZSgnYScsICdnJyk7CisgICAgICAgIGV4cGVjdFBhaXJzKHNldCwgImhxc3oiKTsKKyAgICAgICAgc2V0LnJlbW92ZSgnYScsICd6Jyk7CisgICAgICAgIGV4cGVjdFBhaXJzKHNldCwgIiIpOworCisgICAgICAgIC8vIFRyeSByZW1vdmluZyBhbiBlbnRpcmUgc2V0IGZyb20gYW5vdGhlciBzZXQKKyAgICAgICAgZXhwZWN0UGF0dGVybihzZXQsICJbYy14XSIsICJjeCIpOworICAgICAgICBVbmljb2RlU2V0IHNldDIgPSBuZXcgVW5pY29kZVNldCgpOworICAgICAgICBleHBlY3RQYXR0ZXJuKHNldDIsICJbZi1reS16YS1iY1t2d11dIiwgImFjZmt2d3l6Iik7CisgICAgICAgIHNldC5yZW1vdmVBbGwoc2V0Mik7CisgICAgICAgIGV4cGVjdFBhaXJzKHNldCwgImRlbHV4eCIpOworCisgICAgICAgIC8vIFRyeSBhZGRpbmcgYW4gZW50aXJlIHNldCB0byBhbm90aGVyIHNldAorICAgICAgICBleHBlY3RQYXR0ZXJuKHNldCwgIltqYWNraWVtY2xlYW5dIiwgImFhY2NlZWluIik7CisgICAgICAgIGV4cGVjdFBhdHRlcm4oc2V0MiwgIltoaXRvc2hpbmFtZWthdGFqYW1lc2FuZGVyc29uXSIsICJhYWRlaGttb3J0Iik7CisgICAgICAgIHNldC5hZGRBbGwoc2V0Mik7CisgICAgICAgIGV4cGVjdFBhaXJzKHNldCwgImFhY2Vob3J0Iik7CisKKyAgICAgICAgLy8gVGVzdCBjb21tdXRhdGl2aXR5CisgICAgICAgIGV4cGVjdFBhdHRlcm4oc2V0LCAiW2hpdG9zaGluYW1la2F0YWphbWVzYW5kZXJzb25dIiwgImFhZGVoa21vcnQiKTsKKyAgICAgICAgZXhwZWN0UGF0dGVybihzZXQyLCAiW2phY2tpZW1jbGVhbl0iLCAiYWFjY2VlaW4iKTsKKyAgICAgICAgc2V0LmFkZEFsbChzZXQyKTsKKyAgICAgICAgZXhwZWN0UGFpcnMoc2V0LCAiYWFjZWhvcnQiKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBNYWtlIHN1cmUgbWluaW1hbCByZXByZXNlbnRhdGlvbiBpcyBtYWludGFpbmVkLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RNaW5pbWFsUmVwKCkgeworICAgICAgICAvLyBUaGlzIGlzIHByZXR0eSB0aG9yb3VnaGx5IHRlc3RlZCBieSBjaGVja0Nhbm9uaWNhbFJlcCgpCisgICAgICAgIC8vIHJ1biBhZ2FpbnN0IHRoZSBleGhhdXN0aXZlIG9wZXJhdGlvbiByZXN1bHRzLiAgVXNlIHRoZSBjb2RlCisgICAgICAgIC8vIGhlcmUgZm9yIGRlYnVnZ2luZyBzcGVjaWZpYyBzcG90IHByb2JsZW1zLgorICAgICAgIAorICAgICAgICAvLyAxIG92ZXJsYXAgYWdhaW5zdCAyCisgICAgICAgIFVuaWNvZGVTZXQgc2V0ID0gbmV3IFVuaWNvZGVTZXQoIltoLWttLXFdIik7CisgICAgICAgIFVuaWNvZGVTZXQgc2V0MiA9IG5ldyBVbmljb2RlU2V0KCJbaS1vXSIpOworICAgICAgICBzZXQuYWRkQWxsKHNldDIpOworICAgICAgICBleHBlY3RQYWlycyhzZXQsICJocSIpOworICAgICAgICAvLyByaWdodAorICAgICAgICBzZXQuYXBwbHlQYXR0ZXJuKCJbYS1tXSIpOworICAgICAgICBzZXQyLmFwcGx5UGF0dGVybigiW2Utb10iKTsKKyAgICAgICAgc2V0LmFkZEFsbChzZXQyKTsKKyAgICAgICAgZXhwZWN0UGFpcnMoc2V0LCAiYW8iKTsKKyAgICAgICAgLy8gbGVmdAorICAgICAgICBzZXQuYXBwbHlQYXR0ZXJuKCJbZS1vXSIpOworICAgICAgICBzZXQyLmFwcGx5UGF0dGVybigiW2EtbV0iKTsKKyAgICAgICAgc2V0LmFkZEFsbChzZXQyKTsKKyAgICAgICAgZXhwZWN0UGFpcnMoc2V0LCAiYW8iKTsKKyAgICAgICAgLy8gMSBvdmVybGFwIGFnYWluc3QgMworICAgICAgICBzZXQuYXBwbHlQYXR0ZXJuKCJbYS1lZy1tby13XSIpOworICAgICAgICBzZXQyLmFwcGx5UGF0dGVybigiW2QtcV0iKTsKKyAgICAgICAgc2V0LmFkZEFsbChzZXQyKTsKKyAgICAgICAgZXhwZWN0UGFpcnMoc2V0LCAiYXciKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0QVBJKCkgeworICAgICAgICAvLyBkZWZhdWx0IGN0CisgICAgICAgIFVuaWNvZGVTZXQgc2V0ID0gbmV3IFVuaWNvZGVTZXQoKTsKKyAgICAgICAgaWYgKCFzZXQuaXNFbXB0eSgpIHx8IHNldC5nZXRSYW5nZUNvdW50KCkgIT0gMCkgeworICAgICAgICAgICAgZXJybG4oIkZBSUwsIHNldCBzaG91bGQgYmUgZW1wdHkgYnV0IGlzbid0OiAiICsKKyAgICAgICAgICAgICAgICAgIHNldCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBjbGVhcigpLCBpc0VtcHR5KCkKKyAgICAgICAgc2V0LmFkZCgnYScpOworICAgICAgICBpZiAoc2V0LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgZXJybG4oIkZBSUwsIHNldCBzaG91bGRuJ3QgYmUgZW1wdHkgYnV0IGlzOiAiICsKKyAgICAgICAgICAgICAgICAgIHNldCk7CisgICAgICAgIH0KKyAgICAgICAgc2V0LmNsZWFyKCk7CisgICAgICAgIGlmICghc2V0LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgZXJybG4oIkZBSUwsIHNldCBzaG91bGQgYmUgZW1wdHkgYnV0IGlzbid0OiAiICsKKyAgICAgICAgICAgICAgICAgIHNldCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBzaXplKCkKKyAgICAgICAgc2V0LmNsZWFyKCk7CisgICAgICAgIGlmIChzZXQuc2l6ZSgpICE9IDApIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMLCBzaXplIHNob3VsZCBiZSAwLCBidXQgaXMgIiArIHNldC5zaXplKCkgKworICAgICAgICAgICAgICAgICAgIjogIiArIHNldCk7CisgICAgICAgIH0KKyAgICAgICAgc2V0LmFkZCgnYScpOworICAgICAgICBpZiAoc2V0LnNpemUoKSAhPSAxKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTCwgc2l6ZSBzaG91bGQgYmUgMSwgYnV0IGlzICIgKyBzZXQuc2l6ZSgpICsKKyAgICAgICAgICAgICAgICAgICI6ICIgKyBzZXQpOworICAgICAgICB9CisgICAgICAgIHNldC5hZGQoJzEnLCAnOScpOworICAgICAgICBpZiAoc2V0LnNpemUoKSAhPSAxMCkgeworICAgICAgICAgICAgZXJybG4oIkZBSUwsIHNpemUgc2hvdWxkIGJlIDEwLCBidXQgaXMgIiArIHNldC5zaXplKCkgKworICAgICAgICAgICAgICAgICAgIjogIiArIHNldCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBjb250YWlucyhmaXJzdCwgbGFzdCkKKyAgICAgICAgc2V0LmNsZWFyKCk7CisgICAgICAgIHNldC5hcHBseVBhdHRlcm4oIltBLVkgMS04IGItZCBsLXldIik7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpPHNldC5nZXRSYW5nZUNvdW50KCk7ICsraSkgeworICAgICAgICAgICAgaW50IGEgPSBzZXQuZ2V0UmFuZ2VTdGFydChpKTsKKyAgICAgICAgICAgIGludCBiID0gc2V0LmdldFJhbmdlRW5kKGkpOworICAgICAgICAgICAgaWYgKCFzZXQuY29udGFpbnMoYSwgYikpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTCwgc2hvdWxkIGNvbnRhaW4gIiArIChjaGFyKWEgKyAnLScgKyAoY2hhciliICsKKyAgICAgICAgICAgICAgICAgICAgICAiIGJ1dCBkb2Vzbid0OiAiICsgc2V0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzZXQuY29udGFpbnMoKGNoYXIpKGEtMSksIGIpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUwsIHNob3VsZG4ndCBjb250YWluICIgKworICAgICAgICAgICAgICAgICAgICAgIChjaGFyKShhLTEpICsgJy0nICsgKGNoYXIpYiArCisgICAgICAgICAgICAgICAgICAgICAgIiBidXQgZG9lczogIiArIHNldCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc2V0LmNvbnRhaW5zKGEsIChjaGFyKShiKzEpKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMLCBzaG91bGRuJ3QgY29udGFpbiAiICsKKyAgICAgICAgICAgICAgICAgICAgICAoY2hhcilhICsgJy0nICsgKGNoYXIpKGIrMSkgKworICAgICAgICAgICAgICAgICAgICAgICIgYnV0IGRvZXM6ICIgKyBzZXQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gUG9ydGVkIEludmVyc2lvbkxpc3QgdGVzdC4KKyAgICAgICAgVW5pY29kZVNldCBhID0gbmV3IFVuaWNvZGVTZXQoKGNoYXIpMywoY2hhcikxMCk7CisgICAgICAgIFVuaWNvZGVTZXQgYiA9IG5ldyBVbmljb2RlU2V0KChjaGFyKTcsKGNoYXIpMTUpOworICAgICAgICBVbmljb2RlU2V0IGMgPSBuZXcgVW5pY29kZVNldCgpOworCisgICAgICAgIGxvZ2xuKCJhIFszLTEwXTogIiArIGEpOworICAgICAgICBsb2dsbigiYiBbNy0xNV06ICIgKyBiKTsKKyAgICAgICAgYy5zZXQoYSk7IGMuYWRkQWxsKGIpOworICAgICAgICBVbmljb2RlU2V0IGV4cCA9IG5ldyBVbmljb2RlU2V0KChjaGFyKTMsKGNoYXIpMTUpOworICAgICAgICBpZiAoYy5lcXVhbHMoZXhwKSkgeworICAgICAgICAgICAgbG9nbG4oImMuc2V0KGEpLmFkZChiKTogIiArIGMpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IGMuc2V0KGEpLmFkZChiKSA9ICIgKyBjICsgIiwgZXhwZWN0ICIgKyBleHApOworICAgICAgICB9CisgICAgICAgIGMuY29tcGxlbWVudCgpOworICAgICAgICBleHAuc2V0KChjaGFyKTAsIChjaGFyKTIpOworICAgICAgICBleHAuYWRkKChjaGFyKTE2LCBVbmljb2RlU2V0Lk1BWF9WQUxVRSk7CisgICAgICAgIGlmIChjLmVxdWFscyhleHApKSB7CisgICAgICAgICAgICBsb2dsbigiYy5jb21wbGVtZW50KCk6ICIgKyBjKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVycmxuKFV0aWxpdHkuZXNjYXBlKCJGQUlMOiBjLmNvbXBsZW1lbnQoKSA9ICIgKyBjICsgIiwgZXhwZWN0ICIgKyBleHApKTsKKyAgICAgICAgfQorICAgICAgICBjLmNvbXBsZW1lbnQoKTsKKyAgICAgICAgZXhwLnNldCgoY2hhcikzLCAoY2hhcikxNSk7CisgICAgICAgIGlmIChjLmVxdWFscyhleHApKSB7CisgICAgICAgICAgICBsb2dsbigiYy5jb21wbGVtZW50KCk6ICIgKyBjKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBjLmNvbXBsZW1lbnQoKSA9ICIgKyBjICsgIiwgZXhwZWN0ICIgKyBleHApOworICAgICAgICB9CisgICAgICAgIGMuc2V0KGEpOyBjLmNvbXBsZW1lbnRBbGwoYik7CisgICAgICAgIGV4cC5zZXQoKGNoYXIpMywoY2hhcik2KTsKKyAgICAgICAgZXhwLmFkZCgoY2hhcikxMSwoY2hhcikgMTUpOworICAgICAgICBpZiAoYy5lcXVhbHMoZXhwKSkgeworICAgICAgICAgICAgbG9nbG4oImMuc2V0KGEpLmNvbXBsZW1lbnQoYik6ICIgKyBjKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBjLnNldChhKS5jb21wbGVtZW50KGIpID0gIiArIGMgKyAiLCBleHBlY3QgIiArIGV4cCk7CisgICAgICAgIH0KKworICAgICAgICBleHAuc2V0KGMpOworICAgICAgICBjID0gYml0c1RvU2V0KHNldFRvQml0cyhjKSk7CisgICAgICAgIGlmIChjLmVxdWFscyhleHApKSB7CisgICAgICAgICAgICBsb2dsbigiYml0c1RvU2V0KHNldFRvQml0cyhjKSk6ICIgKyBjKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBiaXRzVG9TZXQoc2V0VG9CaXRzKGMpKSA9ICIgKyBjICsgIiwgZXhwZWN0ICIgKyBleHApOworICAgICAgICB9IAorCisgICAgICAgIC8vIEFkZGl0aW9uYWwgdGVzdHMgZm9yIGNvdmVyYWdlIEpCIzIxMTgKKyAgICAgICAgLy9Vbmljb2RlU2V0Ojpjb21wbGVtZW50KGNsYXNzIFVuaWNvZGVTdHJpbmcgY29uc3QgJikKKyAgICAgICAgLy9Vbmljb2RlU2V0Ojpjb21wbGVtZW50QWxsKGNsYXNzIFVuaWNvZGVTdHJpbmcgY29uc3QgJikKKyAgICAgICAgLy9Vbmljb2RlU2V0Ojpjb250YWluc05vbmUoY2xhc3MgVW5pY29kZVNldCBjb25zdCAmKQorICAgICAgICAvL1VuaWNvZGVTZXQ6OmNvbnRhaW5zTm9uZShsb25nLGxvbmcpCisgICAgICAgIC8vVW5pY29kZVNldDo6Y29udGFpbnNTb21lKGNsYXNzIFVuaWNvZGVTZXQgY29uc3QgJikKKyAgICAgICAgLy9Vbmljb2RlU2V0Ojpjb250YWluc1NvbWUobG9uZyxsb25nKQorICAgICAgICAvL1VuaWNvZGVTZXQ6OnJlbW92ZUFsbChjbGFzcyBVbmljb2RlU3RyaW5nIGNvbnN0ICYpCisgICAgICAgIC8vVW5pY29kZVNldDo6cmV0YWluKGxvbmcpCisgICAgICAgIC8vVW5pY29kZVNldDo6cmV0YWluQWxsKGNsYXNzIFVuaWNvZGVTdHJpbmcgY29uc3QgJikKKyAgICAgICAgLy9Vbmljb2RlU2V0OjpzZXJpYWxpemUodW5zaWduZWQgc2hvcnQgKixsb25nLGVudW0gVUVycm9yQ29kZSAmKQorICAgICAgICAvL1VuaWNvZGVTZXRJdGVyYXRvcjo6Z2V0U3RyaW5nKHZvaWQpCisgICAgICAgIHNldC5jbGVhcigpOworICAgICAgICBzZXQuY29tcGxlbWVudCgiYWIiKTsKKyAgICAgICAgZXhwLmFwcGx5UGF0dGVybigiW3thYn1dIik7CisgICAgICAgIGlmICghc2V0LmVxdWFscyhleHApKSB7IGVycmxuKCJGQUlMOiBjb21wbGVtZW50KFwiYWJcIikiKTsgcmV0dXJuOyB9CisKKyAgICAgICAgVW5pY29kZVNldEl0ZXJhdG9yIGlzZXQgPSBuZXcgVW5pY29kZVNldEl0ZXJhdG9yKHNldCk7CisgICAgICAgIGlmICghaXNldC5uZXh0KCkgfHwgaXNldC5jb2RlcG9pbnQgIT0gVW5pY29kZVNldEl0ZXJhdG9yLklTX1NUUklORykgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IFVuaWNvZGVTZXRJdGVyYXRvci5uZXh0L0lTX1NUUklORyIpOworICAgICAgICB9IGVsc2UgaWYgKCFpc2V0LnN0cmluZy5lcXVhbHMoImFiIikpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBVbmljb2RlU2V0SXRlcmF0b3Iuc3RyaW5nIik7CisgICAgICAgIH0KKworICAgICAgICBzZXQuYWRkKChjaGFyKTB4NjEsIChjaGFyKTB4N0EpOworICAgICAgICBzZXQuY29tcGxlbWVudEFsbCgiYWxhbiIpOworICAgICAgICBleHAuYXBwbHlQYXR0ZXJuKCJbe2FifWIta21vLXpdIik7CisgICAgICAgIGlmICghc2V0LmVxdWFscyhleHApKSB7IGVycmxuKCJGQUlMOiBjb21wbGVtZW50QWxsKFwiYWxhblwiKSIpOyByZXR1cm47IH0KKworICAgICAgICBleHAuYXBwbHlQYXR0ZXJuKCJbYS16XSIpOworICAgICAgICBpZiAoc2V0LmNvbnRhaW5zTm9uZShleHApKSB7IGVycmxuKCJGQUlMOiBjb250YWluc05vbmUoVW5pY29kZVNldCkiKTsgfQorICAgICAgICBpZiAoIXNldC5jb250YWluc1NvbWUoZXhwKSkgeyBlcnJsbigiRkFJTDogY29udGFpbnNTb21lKFVuaWNvZGVTZXQpIik7IH0KKyAgICAgICAgZXhwLmFwcGx5UGF0dGVybigiW2Fsbl0iKTsKKyAgICAgICAgaWYgKCFzZXQuY29udGFpbnNOb25lKGV4cCkpIHsgZXJybG4oIkZBSUw6IGNvbnRhaW5zTm9uZShVbmljb2RlU2V0KSIpOyB9CisgICAgICAgIGlmIChzZXQuY29udGFpbnNTb21lKGV4cCkpIHsgZXJybG4oIkZBSUw6IGNvbnRhaW5zU29tZShVbmljb2RlU2V0KSIpOyB9CisgICAgICAgIAorICAgICAgICBpZiAoc2V0LmNvbnRhaW5zTm9uZSgoY2hhcikweDYxLCAoY2hhcikweDdBKSkgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IGNvbnRhaW5zTm9uZShjaGFyLCBjaGFyKSIpOworICAgICAgICB9CisgICAgICAgIGlmICghc2V0LmNvbnRhaW5zU29tZSgoY2hhcikweDYxLCAoY2hhcikweDdBKSkgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IGNvbnRhaW5zU29tZShjaGFyLCBjaGFyKSIpOworICAgICAgICB9CisgICAgICAgIGlmICghc2V0LmNvbnRhaW5zTm9uZSgoY2hhcikweDQxLCAoY2hhcikweDVBKSkgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IGNvbnRhaW5zTm9uZShjaGFyLCBjaGFyKSIpOworICAgICAgICB9CisgICAgICAgIGlmIChzZXQuY29udGFpbnNTb21lKChjaGFyKTB4NDEsIChjaGFyKTB4NUEpKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogY29udGFpbnNTb21lKGNoYXIsIGNoYXIpIik7CisgICAgICAgIH0KKworICAgICAgICBzZXQucmVtb3ZlQWxsKCJsaXUiKTsKKyAgICAgICAgZXhwLmFwcGx5UGF0dGVybigiW3thYn1iLWhqLWttby10di16XSIpOworICAgICAgICBpZiAoIXNldC5lcXVhbHMoZXhwKSkgeyBlcnJsbigiRkFJTDogcmVtb3ZlQWxsKFwibGl1XCIpIik7IHJldHVybjsgfQorCisgICAgICAgIHNldC5yZXRhaW5BbGwoInN0YXIiKTsKKyAgICAgICAgZXhwLmFwcGx5UGF0dGVybigiW3JzdF0iKTsKKyAgICAgICAgaWYgKCFzZXQuZXF1YWxzKGV4cCkpIHsgZXJybG4oIkZBSUw6IHJldGFpbkFsbChcInN0YXJcIikiKTsgcmV0dXJuOyB9CisKKyAgICAgICAgc2V0LnJldGFpbigoY2hhcikweDczKTsKKyAgICAgICAgZXhwLmFwcGx5UGF0dGVybigiW3NdIik7CisgICAgICAgIGlmICghc2V0LmVxdWFscyhleHApKSB7IGVycmxuKCJGQUlMOiByZXRhaW4oJ3MnKSIpOyByZXR1cm47IH0KKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdFN0cmluZ3MoKSB7CisvLyAgICAgICAgT2JqZWN0W11bXSB0ZXN0TGlzdCA9IHsKKy8vICAgICAgICAgICAge0lfRVFVQUxTLCAgVW5pY29kZVNldC5mcm9tQWxsKCJhYmMiKSwKKy8vICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFVuaWNvZGVTZXQoIlthLWNdIil9LAorLy8gICAgICAgICAgICAgICAgICAgICAgICAKKy8vICAgICAgICAgICAge0lfRVFVQUxTLCAgVW5pY29kZVNldC5mcm9tKCJjaCIpLmFkZCgnYScsJ3onKS5hZGQoImxsIiksCisvLyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBVbmljb2RlU2V0KCJbe2xsfXtjaH1hLXpdIil9LAorLy8gICAgICAgICAgICAgICAgICAgICAgICAKKy8vICAgICAgICAgICAge0lfRVFVQUxTLCAgVW5pY29kZVNldC5mcm9tKCJhYn1jIiksICAKKy8vICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFVuaWNvZGVTZXQoIlt7YWJcXH1jfV0iKX0sCisvLyAgICAgICAgICAgICAgICAgICAgICAgIAorLy8gICAgICAgICAgICB7SV9FUVVBTFMsICBuZXcgVW5pY29kZVNldCgnYScsJ3onKS5hZGQoJ0EnLCAnWicpLnJldGFpbignTScsJ20nKS5jb21wbGVtZW50KCdYJyksIAorLy8gICAgICAgICAgICAgICAgICAgICAgICBuZXcgVW5pY29kZVNldCgiW1thLXpBLVpdJltNLW1dLVtYXV0iKX0sCisvLyAgICAgICAgfTsKKy8vICAgICAgICAKKy8vICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRlc3RMaXN0Lmxlbmd0aDsgKytpKSB7CisvLyAgICAgICAgICAgIGV4cGVjdFJlbGF0aW9uKHRlc3RMaXN0W2ldWzBdLCB0ZXN0TGlzdFtpXVsxXSwgdGVzdExpc3RbaV1bMl0sICIoIiArIGkgKyAiKSIpOworLy8gICAgICAgIH0gICAgICAgIAorCisgICAgICAgIFVuaWNvZGVTZXRbXVtdIHRlc3RMaXN0ID0geworICAgICAgICAgICAge1VuaWNvZGVTZXQuZnJvbUFsbCgiYWJjIiksCisgICAgICAgICAgICAgbmV3IFVuaWNvZGVTZXQoIlthLWNdIil9LAorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB7VW5pY29kZVNldC5mcm9tKCJjaCIpLmFkZCgnYScsJ3onKS5hZGQoImxsIiksCisgICAgICAgICAgICAgbmV3IFVuaWNvZGVTZXQoIlt7bGx9e2NofWEtel0iKX0sCisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHtVbmljb2RlU2V0LmZyb20oImFifWMiKSwgIAorICAgICAgICAgICAgIG5ldyBVbmljb2RlU2V0KCJbe2FiXFx9Y31dIil9LAorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB7bmV3IFVuaWNvZGVTZXQoJ2EnLCd6JykuYWRkKCdBJywgJ1onKS5yZXRhaW4oJ00nLCdtJykuY29tcGxlbWVudCgnWCcpLCAKKyAgICAgICAgICAgICBuZXcgVW5pY29kZVNldCgiW1thLXpBLVpdJltNLW1dLVtYXV0iKX0sCisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRlc3RMaXN0Lmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBpZiAoIXRlc3RMaXN0W2ldWzBdLmVxdWFscyh0ZXN0TGlzdFtpXVsxXSkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogc2V0cyB1bmVxdWFsOyBzZWUgc291cmNlIGNvZGUgKCIgKyBpICsgIikiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSAgICAgICAgCisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFRlc3QgcGF0dGVybiBiZWhhdmlvciBvZiBtdWx0aWNoYXJhY3RlciBzdHJpbmdzLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RTdHJpbmdQYXR0ZXJucygpIHsKKyAgICAgICAgVW5pY29kZVNldCBzID0gbmV3IFVuaWNvZGVTZXQoIlthLXoge2FhfSB7YWJ9XSIpOworICAgICAgICBleHBlY3RUb1BhdHRlcm4ocywgIlthLXp7YWF9e2FifV0iLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFN0cmluZ1tdIHsiYWEiLCAiYWIiLCBOT1QsICJhYyJ9KTsKKyAgICAgICAgcy5hZGQoImFjIik7CisgICAgICAgIGV4cGVjdFRvUGF0dGVybihzLCAiW2EtenthYX17YWJ9e2FjfV0iLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFN0cmluZ1tdIHsiYWEiLCAiYWIiLCAiYWMiLCBOT1QsICJ4eSJ9KTsKKworICAgICAgICBzLmFwcGx5UGF0dGVybigiW2EteiB7XFx7bH0ge3JcXH19XSIpOworICAgICAgICBleHBlY3RUb1BhdHRlcm4ocywgIlthLXp7XFx7bH17clxcfX1dIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBTdHJpbmdbXSB7IntsIiwgInJ9IiwgTk9ULCAieHkifSk7CisgICAgICAgIHMuYWRkKCJbXSIpOworICAgICAgICBleHBlY3RUb1BhdHRlcm4ocywgIlthLXp7XFxbXFxdfXtyXFx9fXtcXHtsfV0iLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFN0cmluZ1tdIHsie2wiLCAicn0iLCAiW10iLCBOT1QsICJ4eSJ9KTsKKworICAgICAgICBzLmFwcGx5UGF0dGVybigiW2EteiB7XHU0RTAxXHU0RTAyfXtcXG5cXHJ9XSIpOworICAgICAgICBleHBlY3RUb1BhdHRlcm4ocywgIlthLXp7XFx1NEUwMVxcdTRFMDJ9e1xcblxccn1dIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBTdHJpbmdbXSB7Ilx1NEUwMVx1NEUwMiIsICJcblxyIn0pOworICAgIH0KKworICAgIHN0YXRpYyBmaW5hbCBJbnRlZ2VyIAorICAgICAgICBJX0FOWSA9IG5ldyBJbnRlZ2VyKFNvcnRlZFNldFJlbGF0aW9uLkFOWSksCisgICAgICAgIElfQ09OVEFJTlMgPSBuZXcgSW50ZWdlcihTb3J0ZWRTZXRSZWxhdGlvbi5DT05UQUlOUyksCisgICAgICAgIElfRElTSk9JTlQgPSBuZXcgSW50ZWdlcihTb3J0ZWRTZXRSZWxhdGlvbi5ESVNKT0lOVCksCisgICAgICAgIElfTk9fQiA9IG5ldyBJbnRlZ2VyKFNvcnRlZFNldFJlbGF0aW9uLk5PX0IpLAorICAgICAgICBJX0lTQ09OVEFJTkVEID0gbmV3IEludGVnZXIoU29ydGVkU2V0UmVsYXRpb24uSVNDT05UQUlORUQpLAorICAgICAgICBJX0VRVUFMUyA9IG5ldyBJbnRlZ2VyKFNvcnRlZFNldFJlbGF0aW9uLkVRVUFMUyksCisgICAgICAgIElfTk9fQSA9IG5ldyBJbnRlZ2VyKFNvcnRlZFNldFJlbGF0aW9uLk5PX0EpLAorICAgICAgICBJX05PTkUgPSBuZXcgSW50ZWdlcihTb3J0ZWRTZXRSZWxhdGlvbi5OT05FKTsKKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0U2V0UmVsYXRpb24oKSB7CisgICAgICAgIAorICAgICAgICBTdHJpbmdbXSBjaG9pY2VzID0geyJhIiwgImIiLCAiY2QiLCAiZWYifTsKKyAgICAgICAgaW50IGxpbWl0ID0gMSA8PCBjaG9pY2VzLmxlbmd0aDsKKyAgICAgICAgCisgICAgICAgIFNvcnRlZFNldCBpc2V0ID0gbmV3IFRyZWVTZXQoKTsKKyAgICAgICAgU29ydGVkU2V0IGpzZXQgPSBuZXcgVHJlZVNldCgpOworICAgICAgICAKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsaW1pdDsgKytpKSB7CisgICAgICAgICAgICBwaWNrKGksIGNob2ljZXMsIGlzZXQpOworICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBsaW1pdDsgKytqKSB7CisgICAgICAgICAgICAgICAgcGljayhqLCBjaG9pY2VzLCBqc2V0KTsKKyAgICAgICAgICAgICAgICBjaGVja1NldFJlbGF0aW9uKGlzZXQsIGpzZXQsICIoIiArIGkgKyAiKSIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RTZXRTcGVlZCgpIHsKKyAgICAgICAgLy8gc2tpcCB1bmxlc3MgdmVyYm9zZQorICAgICAgICBpZiAoIWlzVmVyYm9zZSgpKSByZXR1cm47CisgICAgICAgIAorICAgICAgICBTZXRTcGVlZDIoMTAwKTsKKyAgICAgICAgU2V0U3BlZWQyKDEwMDApOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBTZXRTcGVlZDIoaW50IHNpemUpIHsKKyAgICAgICAgCisgICAgICAgIFNvcnRlZFNldCBpc2V0ID0gbmV3IFRyZWVTZXQoKTsKKyAgICAgICAgU29ydGVkU2V0IGpzZXQgPSBuZXcgVHJlZVNldCgpOworICAgICAgICAKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplKjI7IGkgKz0gMikgeyAvLyBvbmx5IGV2ZW4gdmFsdWVzCisgICAgICAgICAgICBpc2V0LmFkZChuZXcgSW50ZWdlcihpKSk7CisgICAgICAgICAgICBqc2V0LmFkZChuZXcgSW50ZWdlcihpKSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGludCBpdGVyYXRpb25zID0gMTAwMDAwMCAvIHNpemU7CisgICAgICAgIAorICAgICAgICBsb2dsbigiVGltaW5nIGNvbXBhcmlzb24gb2YgSmF2YSB2cyBVdGlsaXR5Iik7CisgICAgICAgIGxvZ2xuKCJGb3IgYWJvdXQgIiArIHNpemUgKyAiIG9iamVjdHMgdGhhdCBhcmUgYWxtb3N0IGFsbCB0aGUgc2FtZS4iKTsKKyAgICAgICAgCisgICAgICAgIENoZWNrU3BlZWQoaXNldCwganNldCwgIndoZW4gYSA9IGIiLCBpdGVyYXRpb25zKTsKKyAgICAgICAgCisgICAgICAgIGlzZXQuYWRkKG5ldyBJbnRlZ2VyKHNpemUgKyAxKSk7ICAgIC8vIGFkZCBvZGQgdmFsdWUgaW4gbWlkZGxlCisgICAgICAgIAorICAgICAgICBDaGVja1NwZWVkKGlzZXQsIGpzZXQsICJ3aGVuIGEgY29udGFpbnMgYiIsIGl0ZXJhdGlvbnMpOyAgICAgICAgCisgICAgICAgIENoZWNrU3BlZWQoanNldCwgaXNldCwgIndoZW4gYiBjb250YWlucyBhIiwgaXRlcmF0aW9ucyk7CisgICAgICAgIAorICAgICAgICBqc2V0LmFkZChuZXcgSW50ZWdlcihzaXplIC0gMSkpOyAgICAvLyBhZGQgZGlmZmVyZW50IG9kZCB2YWx1ZSBpbiBtaWRkbGUKKyAgICAgICAgCisgICAgICAgIENoZWNrU3BlZWQoanNldCwgaXNldCwgIndoZW4gYSwgYiBhcmUgZGlzam9pbnQiLCBpdGVyYXRpb25zKTsgICAgICAgIAorICAgIH0KKyAgICAKKyAgICB2b2lkIENoZWNrU3BlZWQoU29ydGVkU2V0IGlzZXQsIFNvcnRlZFNldCBqc2V0LCBTdHJpbmcgbWVzc2FnZSwgaW50IGl0ZXJhdGlvbnMpIHsKKyAgICAgICAgQ2hlY2tTcGVlZDIoaXNldCwganNldCwgbWVzc2FnZSwgaXRlcmF0aW9ucyk7CisgICAgICAgIENoZWNrU3BlZWQzKGlzZXQsIGpzZXQsIG1lc3NhZ2UsIGl0ZXJhdGlvbnMpOworICAgIH0KKyAgICAKKyAgICB2b2lkIENoZWNrU3BlZWQyKFNvcnRlZFNldCBpc2V0LCBTb3J0ZWRTZXQganNldCwgU3RyaW5nIG1lc3NhZ2UsIGludCBpdGVyYXRpb25zKSB7CisgICAgICAgIGJvb2xlYW4geDsKKyAgICAgICAgYm9vbGVhbiB5OworICAgICAgICAKKyAgICAgICAgLy8gbWFrZSBzdXJlIGNvZGUgaXMgbG9hZGVkOgorICAgICAgICB4ID0gaXNldC5jb250YWluc0FsbChqc2V0KTsKKyAgICAgICAgeSA9IFNvcnRlZFNldFJlbGF0aW9uLmhhc1JlbGF0aW9uKGlzZXQsIFNvcnRlZFNldFJlbGF0aW9uLkNPTlRBSU5TLCBqc2V0KTsKKyAgICAgICAgaWYgKHggIT0geSkgZXJybG4oIkZBSUwgY29udGFpbnMgY29tcGFyaXNvbiIpOworICAgICAgICAKKyAgICAgICAgZG91YmxlIHN0YXJ0ID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaXRlcmF0aW9uczsgKytpKSB7CisgICAgICAgICAgICB4IHw9IGlzZXQuY29udGFpbnNBbGwoanNldCk7CisgICAgICAgIH0KKyAgICAgICAgZG91YmxlIG1pZGRsZSA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGl0ZXJhdGlvbnM7ICsraSkgeworICAgICAgICAgICAgeSB8PSBTb3J0ZWRTZXRSZWxhdGlvbi5oYXNSZWxhdGlvbihpc2V0LCBTb3J0ZWRTZXRSZWxhdGlvbi5DT05UQUlOUywganNldCk7CisgICAgICAgIH0KKyAgICAgICAgZG91YmxlIGVuZCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICAKKyAgICAgICAgZG91YmxlIGp0aW1lID0gKG1pZGRsZSAtIHN0YXJ0KS9pdGVyYXRpb25zOworICAgICAgICBkb3VibGUgdXRpbWUgPSAoZW5kIC0gbWlkZGxlKS9pdGVyYXRpb25zOworICAgICAgICAKKyAgICAgICAgamF2YS50ZXh0Lk51bWJlckZvcm1hdCBuZiA9IGphdmEudGV4dC5OdW1iZXJGb3JtYXQuZ2V0UGVyY2VudEluc3RhbmNlKCk7CisgICAgICAgIGxvZ2xuKCJUZXN0IGNvbnRhaW5zOiAiICsgbWVzc2FnZSArICI6IEphdmE6ICIgKyBqdGltZQorICAgICAgICAgICAgKyAiLCBVdGlsaXR5OiAiICsgdXRpbWUgKyAiLCB1Omo6ICIgKyBuZi5mb3JtYXQodXRpbWUvanRpbWUpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBDaGVja1NwZWVkMyhTb3J0ZWRTZXQgaXNldCwgU29ydGVkU2V0IGpzZXQsIFN0cmluZyBtZXNzYWdlLCBpbnQgaXRlcmF0aW9ucykgeworICAgICAgICBib29sZWFuIHg7CisgICAgICAgIGJvb2xlYW4geTsKKyAgICAgICAgCisgICAgICAgIC8vIG1ha2Ugc3VyZSBjb2RlIGlzIGxvYWRlZDoKKyAgICAgICAgeCA9IGlzZXQuZXF1YWxzKGpzZXQpOworICAgICAgICB5ID0gU29ydGVkU2V0UmVsYXRpb24uaGFzUmVsYXRpb24oaXNldCwgU29ydGVkU2V0UmVsYXRpb24uRVFVQUxTLCBqc2V0KTsKKyAgICAgICAgaWYgKHggIT0geSkgZXJybG4oIkZBSUwgZXF1YWxpdHkgY29tcGFyaXNvbiIpOworCisgICAgICAgIAorICAgICAgICBkb3VibGUgc3RhcnQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpdGVyYXRpb25zOyArK2kpIHsKKyAgICAgICAgICAgIHggfD0gaXNldC5lcXVhbHMoanNldCk7CisgICAgICAgIH0KKyAgICAgICAgZG91YmxlIG1pZGRsZSA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGl0ZXJhdGlvbnM7ICsraSkgeworICAgICAgICAgICAgeSB8PSBTb3J0ZWRTZXRSZWxhdGlvbi5oYXNSZWxhdGlvbihpc2V0LCBTb3J0ZWRTZXRSZWxhdGlvbi5FUVVBTFMsIGpzZXQpOworICAgICAgICB9CisgICAgICAgIGRvdWJsZSBlbmQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgCisgICAgICAgIGRvdWJsZSBqdGltZSA9IChtaWRkbGUgLSBzdGFydCkvaXRlcmF0aW9uczsKKyAgICAgICAgZG91YmxlIHV0aW1lID0gKGVuZCAtIG1pZGRsZSkvaXRlcmF0aW9uczsKKyAgICAgICAgCisgICAgICAgIGphdmEudGV4dC5OdW1iZXJGb3JtYXQgbmYgPSBqYXZhLnRleHQuTnVtYmVyRm9ybWF0LmdldFBlcmNlbnRJbnN0YW5jZSgpOworICAgICAgICBsb2dsbigiVGVzdCBlcXVhbHM6ICAgIiArIG1lc3NhZ2UgKyAiOiBKYXZhOiAiICsganRpbWUKKyAgICAgICAgICAgICsgIiwgVXRpbGl0eTogIiArIHV0aW1lICsgIiwgdTpqOiAiICsgbmYuZm9ybWF0KHV0aW1lL2p0aW1lKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgcGljayhpbnQgYml0cywgT2JqZWN0W10gZXhhbXBsZXMsIFNvcnRlZFNldCBvdXRwdXQpIHsKKyAgICAgICAgb3V0cHV0LmNsZWFyKCk7CisgICAgICAgIGZvciAoaW50IGsgPSAwOyBrIDwgMzI7ICsraykgeworICAgICAgICAgICAgaWYgKCgoMTw8aykgJiBiaXRzKSAhPSAwKSBvdXRwdXQuYWRkKGV4YW1wbGVzW2tdKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZ1tdIFJFTEFUSU9OX05BTUUgPSB7CisgICAgICAgICJib3RoLWFyZS1udWxsIiwKKyAgICAgICAgImEtaXMtbnVsbCIsIAorICAgICAgICAiZXF1YWxzIiwgCisgICAgICAgICJpcy1jb250YWluZWQtaW4iLAorICAgICAgICAiYi1pcy1udWxsIiwKKyAgICAgICAgImlzLWRpc2pvaW50X3dpdGgiLAorICAgICAgICAiY29udGFpbnMiLCAKKyAgICAgICAgImFueSIsIH07CisgICAgICAgIAorICAgIGJvb2xlYW4gZHVtYkhhc1JlbGF0aW9uKENvbGxlY3Rpb24gQSwgaW50IGZpbHRlciwgQ29sbGVjdGlvbiBCKSB7CisgICAgICAgIENvbGxlY3Rpb24gYWIgPSBuZXcgVHJlZVNldChBKTsKKyAgICAgICAgYWIucmV0YWluQWxsKEIpOworICAgICAgICBpZiAoYWIuc2l6ZSgpID4gMCAmJiAoZmlsdGVyICYgU29ydGVkU2V0UmVsYXRpb24uQV9BTkRfQikgPT0gMCkgcmV0dXJuIGZhbHNlOyAKKyAgICAgICAgCisgICAgICAgIC8vIEEgLSBCIHNpemUgPT0gQS5zaXplIC0gQSZCLnNpemUKKyAgICAgICAgaWYgKEEuc2l6ZSgpID4gYWIuc2l6ZSgpICYmIChmaWx0ZXIgJiBTb3J0ZWRTZXRSZWxhdGlvbi5BX05PVF9CKSA9PSAwKSByZXR1cm4gZmFsc2U7IAorICAgICAgICAKKyAgICAgICAgLy8gQiAtIEEgc2l6ZSA9PSBCLnNpemUgLSBBJkIuc2l6ZQorICAgICAgICBpZiAoQi5zaXplKCkgPiBhYi5zaXplKCkgJiYgKGZpbHRlciAmIFNvcnRlZFNldFJlbGF0aW9uLkJfTk9UX0EpID09IDApIHJldHVybiBmYWxzZTsgCisKKyAgICAgICAgCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0gICAgCisgICAgCisgICAgdm9pZCBjaGVja1NldFJlbGF0aW9uKFNvcnRlZFNldCBhLCBTb3J0ZWRTZXQgYiwgU3RyaW5nIG1lc3NhZ2UpIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA4OyArK2kpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgYm9vbGVhbiBoYXNSZWxhdGlvbiA9IFNvcnRlZFNldFJlbGF0aW9uLmhhc1JlbGF0aW9uKGEsIGksIGIpOworICAgICAgICAgICAgYm9vbGVhbiBkdW1iSGFzUmVsYXRpb24gPSBkdW1iSGFzUmVsYXRpb24oYSwgaSwgYik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGxvZ2xuKG1lc3NhZ2UgKyAiICIgKyBoYXNSZWxhdGlvbiArICI6XHQiICsgYSArICJcdCIgKyBSRUxBVElPTl9OQU1FW2ldICsgIlx0IiArIGIpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoaGFzUmVsYXRpb24gIT0gZHVtYkhhc1JlbGF0aW9uKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6ICIgKyAKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSArICIgIiArIGR1bWJIYXNSZWxhdGlvbiArICI6XHQiICsgYSArICJcdCIgKyBSRUxBVElPTl9OQU1FW2ldICsgIlx0IiArIGIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGxvZ2xuKCIiKTsKKyAgICB9CisgICAgCisgICAvKioKKyAgICAqIFRlc3QgdGhlIFs6TGF0aW46XSBzeW50YXguCisgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0U2NyaXB0U2V0KCkgeworICAgICAgICBVbmljb2RlU2V0IHNldCA9IG5ldyBVbmljb2RlU2V0KCJbOkxhdGluOl0iKTsKKworICAgICAgICBleHBlY3RDb250YWlubWVudChzZXQsICJhQSIsIENoYXJzVG9Vbmljb2RlU3RyaW5nKCJcXHUwMzkxXFx1MDNCMSIpKTsKKworICAgICAgICBVbmljb2RlU2V0IHNldDIgPSBuZXcgVW5pY29kZVNldCgiWzpHcmVlazpdIik7CisgICAgICAgIGV4cGVjdENvbnRhaW5tZW50KHNldDIsIENoYXJzVG9Vbmljb2RlU3RyaW5nKCJcXHUwMzkxXFx1MDNCMSIpLCAiYUEiKTsKKyAgICAgICAgCisgICAgICAgIC8qIEppdHRlcmJ1ZyAxNDIzICovCisgICAgICAgIFVuaWNvZGVTZXQgc2V0MyA9IG5ldyBVbmljb2RlU2V0KCJbWzpDb21tb246XVs6SW5oZXJpdGVkOl1dIik7CisgICAgICAgIGV4cGVjdENvbnRhaW5tZW50KHNldDMsIENoYXJzVG9Vbmljb2RlU3RyaW5nKCJcXFUwMDAwMzA5OVxcVTAwMDFEMTY5XFx1MDAwMCIpLCAiYUEiKTsKKworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBUZXN0IHRoZSBbOkxhdGluOl0gc3ludGF4LgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RQcm9wZXJ0eVNldCgpIHsKKyAgICAgICAgU3RyaW5nW10gREFUQSA9IHsKKyAgICAgICAgICAgIC8vIFBhdHRlcm4sIENoYXJzIElOLCBDaGFycyBOT1QgaW4KKworICAgICAgICAgICAgIls6TGF0aW46XSIsCisgICAgICAgICAgICAiYUEiLAorICAgICAgICAgICAgIlx1MDM5MVx1MDNCMSIsCisKKyAgICAgICAgICAgICJbXFxwe0dyZWVrfV0iLAorICAgICAgICAgICAgIlx1MDM5MVx1MDNCMSIsCisgICAgICAgICAgICAiYUEiLAorCisgICAgICAgICAgICAiXFxQeyBHRU5FUkFMIENhdGVnb3J5ID0gdXBwZXIgY2FzZSBsZXR0ZXIgfSIsCisgICAgICAgICAgICAiYWJjIiwKKyAgICAgICAgICAgICJBQkMiLAorCisgICAgICAgICAgICAvLyBDb21iaW5pbmcgY2xhc3M6IEBzaW5jZSBJQ1UgMi4yCisgICAgICAgICAgICAvLyBDaGVjayBib3RoIHN5bWJvbGljIGFuZCBudW1lcmljCisgICAgICAgICAgICAiXFxwe2NjYz1OdWt0YX0iLAorICAgICAgICAgICAgIlx1MEFCQyIsCisgICAgICAgICAgICAiYWJjIiwKKworICAgICAgICAgICAgIlxccHtDYW5vbmljYWwgQ29tYmluaW5nIENsYXNzID0gMTF9IiwKKyAgICAgICAgICAgICJcdTA1QjEiLAorICAgICAgICAgICAgIlx1MDVCMiIsCisKKyAgICAgICAgICAgICJbOmMgYyBjID0gaW90YSBzdWJzY3JpcHQgOl0iLAorICAgICAgICAgICAgIlx1MDM0NSIsCisgICAgICAgICAgICAieHl6IiwKKworICAgICAgICAgICAgLy8gQmlkaSBjbGFzczogQHNpbmNlIElDVSAyLjIKKyAgICAgICAgICAgICJcXHB7YmlkaWNsYXNzPWxlZnR0b3JpZ2h0fSIsCisgICAgICAgICAgICAiYWJjIiwKKyAgICAgICAgICAgICJcdTA2NzFcdTA2NzIiLAorCisgICAgICAgICAgICAvLyBCaW5hcnkgcHJvcGVydGllczogQHNpbmNlIElDVSAyLjIKKyAgICAgICAgICAgICJcXHB7aWRlb2dyYXBoaWN9IiwKKyAgICAgICAgICAgICJcdTRFMEEiLAorICAgICAgICAgICAgIngiLAorCisgICAgICAgICAgICAiWzptYXRoPWZhbHNlOl0iLAorICAgICAgICAgICAgInEiLAorICAgICAgICAgICAgIigqKykiLAorCisgICAgICAgICAgICAvLyBKQiMxNzY3IFxOe30sIFxwe0FTQ0lJfQorICAgICAgICAgICAgIls6QXNjaWk6XSIsCisgICAgICAgICAgICAiYWJjXHUwMDAwXHUwMDdGIiwKKyAgICAgICAgICAgICJcdTAwODBcdTRFMDAiLAorCisgICAgICAgICAgICAiW1xcTnsgbGF0aW4gc21hbGwgbGV0dGVyICBhICB9WzpuYW1lPSBsYXRpbiBzbWFsbCBsZXR0ZXIgejpdXSIsCisgICAgICAgICAgICAiYXoiLAorICAgICAgICAgICAgInFycyIsCisKKyAgICAgICAgICAgIC8vIEpCIzIwMTUKKyAgICAgICAgICAgICJbOmFueTpdIiwKKyAgICAgICAgICAgICJhXFxVMDAxMEZGRkYiLAorICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAKKyAgICAgICAgICAgICJbOm52PTAuNTpdIiwKKyAgICAgICAgICAgICJcdTAwQkRcdTBGMkEiLAorICAgICAgICAgICAgIlx1MDBCQyIsCisgICAgICAgIH07CisKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPERBVEEubGVuZ3RoOyBpKz0zKSB7CisgICAgICAgICAgICBVbmljb2RlU2V0IHNldDsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgc2V0ID0gbmV3IFVuaWNvZGVTZXQoREFUQVtpXSk7CisgICAgICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBDb3VsZG4ndCBjcmVhdGUgVW5pY29kZVNldCBmcm9tIHBhdHRlcm4gXCIiICsKKyAgICAgICAgICAgICAgICAgICAgICBEQVRBW2ldICsgJyInKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGV4cGVjdENvbnRhaW5tZW50KHNldCwgREFUQVtpKzFdLCBEQVRBW2krMl0pOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdCBjbG9uaW5nIG9mIFVuaWNvZGVTZXQKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0Q2xvbmUoKSB7CisgICAgICAgIFVuaWNvZGVTZXQgcyA9IG5ldyBVbmljb2RlU2V0KCJbYWJjeHl6XSIpOworICAgICAgICBVbmljb2RlU2V0IHQgPSAoVW5pY29kZVNldCkgcy5jbG9uZSgpOworICAgICAgICBleHBlY3RDb250YWlubWVudCh0LCAiYWJjIiwgImRlZiIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3QgdGhlIGluZGV4T2YoKSBhbmQgY2hhckF0KCkgbWV0aG9kcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0SW5kZXhPZigpIHsKKyAgICAgICAgVW5pY29kZVNldCBzZXQgPSBuZXcgVW5pY29kZVNldCgiW2EtY3gteTM1NzhdIik7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxzZXQuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGludCBjID0gc2V0LmNoYXJBdChpKTsKKyAgICAgICAgICAgIGlmIChzZXQuaW5kZXhPZihjKSAhPSBpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6IGNoYXJBdCgiICsgaSArICIpID0gIiArIGMgKworICAgICAgICAgICAgICAgICAgICAgICIgPT4gaW5kZXhPZigpID0+ICIgKyBzZXQuaW5kZXhPZihjKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaW50IGMgPSBzZXQuY2hhckF0KHNldC5zaXplKCkpOworICAgICAgICBpZiAoYyAhPSAtMSkgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IGNoYXJBdCg8b3V0IG9mIHJhbmdlPikgPSAiICsKKyAgICAgICAgICAgICAgICAgIFV0aWxpdHkuZXNjYXBlKFN0cmluZy52YWx1ZU9mKGMpKSk7CisgICAgICAgIH0KKyAgICAgICAgaW50IGogPSBzZXQuaW5kZXhPZigncScpOworICAgICAgICBpZiAoaiAhPSAtMSkgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IGluZGV4T2YoJ3EnKSA9ICIgKyBqKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RDb250YWluc1N0cmluZygpIHsKKyAgICAgICAgVW5pY29kZVNldCB4ID0gbmV3IFVuaWNvZGVTZXQoIlthe2JjfV0iKTsKKyAgICAgICAgaWYgKHguY29udGFpbnMoImFiYyIpKSBlcnJsbigiRkFJTCIpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0RXhoYXVzdGl2ZSgpIHsKKyAgICAgICAgLy8gZXhoYXVzdGl2ZSB0ZXN0cy4gU2ltdWxhdGUgVW5pY29kZVNldHMgd2l0aCBpbnRlZ2Vycy4KKyAgICAgICAgLy8gVGhhdCBnaXZlcyB1cyB2ZXJ5IHNvbGlkIHRlc3RzIChleGNlcHQgZm9yIGxhcmdlIG1lbW9yeSB0ZXN0cykuCisKKyAgICAgICAgY2hhciBsaW1pdCA9IChjaGFyKTEyODsKKworICAgICAgICBmb3IgKGNoYXIgaSA9IDA7IGkgPCBsaW1pdDsgKytpKSB7CisgICAgICAgICAgICBsb2dsbigiVGVzdGluZyAiICsgaSArICIsICIgKyBiaXRzVG9TZXQoaSkpOworICAgICAgICAgICAgX3Rlc3RDb21wbGVtZW50KGkpOworICAgICAgICAgICAgCisgICAgICAgIAkvLyBBUyBMT05HIEFTIFdFIEFSRSBIRVJFLCBjaGVjayByb3VuZHRyaXAKKyAgICAgICAgCWNoZWNrUm91bmRUcmlwKGJpdHNUb1NldChpKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAoY2hhciBqID0gMDsgaiA8IGxpbWl0OyArK2opIHsKKyAgICAgICAgICAgICAgICBfdGVzdEFkZChpLGopOworICAgICAgICAgICAgICAgIF90ZXN0WG9yKGksaik7CisgICAgICAgICAgICAgICAgX3Rlc3RSZXRhaW4oaSxqKTsKKyAgICAgICAgICAgICAgICBfdGVzdFJlbW92ZShpLGopOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIE1ha2Ugc3VyZSBlYWNoIHNjcmlwdCBuYW1lIGFuZCBhYmJyZXZpYXRlZCBuYW1lIGNhbiBiZSB1c2VkCisgICAgICogdG8gY29uc3RydWN0IGEgVW5pY29kZVNldC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0U2NyaXB0TmFtZXMoKSB7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxVU2NyaXB0LkNPREVfTElNSVQ7ICsraSkgeworICAgICAgICAgICAgZm9yIChpbnQgaj0wOyBqPDI7ICsraikgeworICAgICAgICAgICAgICAgIFN0cmluZyBwYXQgPSAiIjsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbmFtZSA9CisgICAgICAgICAgICAgICAgICAgICAgICAoaj09MCkgPyBVU2NyaXB0LmdldE5hbWUoaSkgOiBVU2NyaXB0LmdldFNob3J0TmFtZShpKTsKKyAgICAgICAgICAgICAgICAgICAgcGF0ID0gIls6IiArIG5hbWUgKyAiOl0iOworICAgICAgICAgICAgICAgICAgICBVbmljb2RlU2V0IHNldCA9IG5ldyBVbmljb2RlU2V0KHBhdCk7CisgICAgICAgICAgICAgICAgICAgIGxvZ2xuKCJPazogIiArIHBhdCk7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBhdC5sZW5ndGgoKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbigiRkFJTCAoaW4gVVNjcmlwdCk6IE5vIG5hbWUgZm9yIHNjcmlwdCAiICsgaSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogQ291bGRuJ3QgY3JlYXRlICIgKyBwYXQpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBfdGVzdENvbXBsZW1lbnQoaW50IGEpIHsKKyAgICAgICAgVW5pY29kZVNldCB4ID0gYml0c1RvU2V0KGEpOworICAgICAgICBVbmljb2RlU2V0IHogPSBiaXRzVG9TZXQoYSk7CisgICAgICAgIHouY29tcGxlbWVudCgpOworICAgICAgICBpbnQgYyA9IHNldFRvQml0cyh6KTsKKyAgICAgICAgaWYgKGMgIT0gKH5hKSkgeworICAgICAgICAgICAgZXJybG4oIkZBSUxFRDogYWRkOiB+IiArIHggKyAgIiAhPSAiICsgeik7CisgICAgICAgICAgICBlcnJsbigiRkFJTEVEOiBhZGQ6IH4iICsgYSArICIgIT0gIiArIGMpOworICAgICAgICB9CisgICAgICAgIGNoZWNrQ2Fub25pY2FsUmVwKHosICJjb21wbGVtZW50ICIgKyBhKTsKKyAgICB9CisKKyAgICB2b2lkIF90ZXN0QWRkKGludCBhLCBpbnQgYikgeworICAgICAgICBVbmljb2RlU2V0IHggPSBiaXRzVG9TZXQoYSk7CisgICAgICAgIFVuaWNvZGVTZXQgeSA9IGJpdHNUb1NldChiKTsKKyAgICAgICAgVW5pY29kZVNldCB6ID0gYml0c1RvU2V0KGEpOworICAgICAgICB6LmFkZEFsbCh5KTsKKyAgICAgICAgaW50IGMgPSBzZXRUb0JpdHMoeik7CisgICAgICAgIGlmIChjICE9IChhIHwgYikpIHsKKyAgICAgICAgICAgIGVycmxuKFV0aWxpdHkuZXNjYXBlKCJGQUlMRUQ6IGFkZDogIiArIHggKyAiIHwgIiArIHkgKyAiICE9ICIgKyB6KSk7CisgICAgICAgICAgICBlcnJsbigiRkFJTEVEOiBhZGQ6ICIgKyBhICsgIiB8ICIgKyBiICsgIiAhPSAiICsgYyk7CisgICAgICAgIH0KKyAgICAgICAgY2hlY2tDYW5vbmljYWxSZXAoeiwgImFkZCAiICsgYSArICIsIiArIGIpOworICAgIH0KKworICAgIHZvaWQgX3Rlc3RSZXRhaW4oaW50IGEsIGludCBiKSB7CisgICAgICAgIFVuaWNvZGVTZXQgeCA9IGJpdHNUb1NldChhKTsKKyAgICAgICAgVW5pY29kZVNldCB5ID0gYml0c1RvU2V0KGIpOworICAgICAgICBVbmljb2RlU2V0IHogPSBiaXRzVG9TZXQoYSk7CisgICAgICAgIHoucmV0YWluQWxsKHkpOworICAgICAgICBpbnQgYyA9IHNldFRvQml0cyh6KTsKKyAgICAgICAgaWYgKGMgIT0gKGEgJiBiKSkgeworICAgICAgICAgICAgZXJybG4oIkZBSUxFRDogcmV0YWluOiAiICsgeCArICIgJiAiICsgeSArICIgIT0gIiArIHopOworICAgICAgICAgICAgZXJybG4oIkZBSUxFRDogcmV0YWluOiAiICsgYSArICIgJiAiICsgYiArICIgIT0gIiArIGMpOworICAgICAgICB9CisgICAgICAgIGNoZWNrQ2Fub25pY2FsUmVwKHosICJyZXRhaW4gIiArIGEgKyAiLCIgKyBiKTsKKyAgICB9CisKKyAgICB2b2lkIF90ZXN0UmVtb3ZlKGludCBhLCBpbnQgYikgeworICAgICAgICBVbmljb2RlU2V0IHggPSBiaXRzVG9TZXQoYSk7CisgICAgICAgIFVuaWNvZGVTZXQgeSA9IGJpdHNUb1NldChiKTsKKyAgICAgICAgVW5pY29kZVNldCB6ID0gYml0c1RvU2V0KGEpOworICAgICAgICB6LnJlbW92ZUFsbCh5KTsKKyAgICAgICAgaW50IGMgPSBzZXRUb0JpdHMoeik7CisgICAgICAgIGlmIChjICE9IChhICZ+IGIpKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTEVEOiByZW1vdmU6ICIgKyB4ICsgIiAmfiAiICsgeSArICIgIT0gIiArIHopOworICAgICAgICAgICAgZXJybG4oIkZBSUxFRDogcmVtb3ZlOiAiICsgYSArICIgJn4gIiArIGIgKyAiICE9ICIgKyBjKTsKKyAgICAgICAgfQorICAgICAgICBjaGVja0Nhbm9uaWNhbFJlcCh6LCAicmVtb3ZlICIgKyBhICsgIiwiICsgYik7CisgICAgfQorCisgICAgdm9pZCBfdGVzdFhvcihpbnQgYSwgaW50IGIpIHsKKyAgICAgICAgVW5pY29kZVNldCB4ID0gYml0c1RvU2V0KGEpOworICAgICAgICBVbmljb2RlU2V0IHkgPSBiaXRzVG9TZXQoYik7CisgICAgICAgIFVuaWNvZGVTZXQgeiA9IGJpdHNUb1NldChhKTsKKyAgICAgICAgei5jb21wbGVtZW50QWxsKHkpOworICAgICAgICBpbnQgYyA9IHNldFRvQml0cyh6KTsKKyAgICAgICAgaWYgKGMgIT0gKGEgXiBiKSkgeworICAgICAgICAgICAgZXJybG4oIkZBSUxFRDogY29tcGxlbWVudDogIiArIHggKyAiIF4gIiArIHkgKyAiICE9ICIgKyB6KTsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMRUQ6IGNvbXBsZW1lbnQ6ICIgKyBhICsgIiBeICIgKyBiICsgIiAhPSAiICsgYyk7CisgICAgICAgIH0KKyAgICAgICAgY2hlY2tDYW5vbmljYWxSZXAoeiwgImNvbXBsZW1lbnQgIiArIGEgKyAiLCIgKyBiKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQ2hlY2sgdGhhdCByYW5nZXMgYXJlIG1vbm90b25pY2FsbHkgaW5jcmVhc2luZyBhbmQgbm9uLQorICAgICAqIG92ZXJsYXBwaW5nLgorICAgICAqLworICAgIHZvaWQgY2hlY2tDYW5vbmljYWxSZXAoVW5pY29kZVNldCBzZXQsIFN0cmluZyBtc2cpIHsKKyAgICAgICAgaW50IG4gPSBzZXQuZ2V0UmFuZ2VDb3VudCgpOworICAgICAgICBpZiAobiA8IDApIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMIHJlc3VsdCBvZiAiICsgbXNnICsKKyAgICAgICAgICAgICAgICAgICI6IHJhbmdlIGNvdW50IHNob3VsZCBiZSA+PSAwIGJ1dCBpcyAiICsKKyAgICAgICAgICAgICAgICAgIG4gKyAiIGZvciAiICsgVXRpbGl0eS5lc2NhcGUoc2V0LnRvU3RyaW5nKCkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpbnQgbGFzdCA9IDA7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxuOyArK2kpIHsKKyAgICAgICAgICAgIGludCBzdGFydCA9IHNldC5nZXRSYW5nZVN0YXJ0KGkpOworICAgICAgICAgICAgaW50IGVuZCA9IHNldC5nZXRSYW5nZUVuZChpKTsKKyAgICAgICAgICAgIGlmIChzdGFydCA+IGVuZCkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMIHJlc3VsdCBvZiAiICsgbXNnICsKKyAgICAgICAgICAgICAgICAgICAgICAiOiByYW5nZSAiICsgKGkrMSkgKworICAgICAgICAgICAgICAgICAgICAgICIgc3RhcnQgPiBlbmQ6ICIgKyBzdGFydCArICIsICIgKyBlbmQgKworICAgICAgICAgICAgICAgICAgICAgICIgZm9yICIgKyBVdGlsaXR5LmVzY2FwZShzZXQudG9TdHJpbmcoKSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGkgPiAwICYmIHN0YXJ0IDw9IGxhc3QpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTCByZXN1bHQgb2YgIiArIG1zZyArCisgICAgICAgICAgICAgICAgICAgICAgIjogcmFuZ2UgIiArIChpKzEpICsKKyAgICAgICAgICAgICAgICAgICAgICAiIG92ZXJsYXBzIHByZXZpb3VzIHJhbmdlOiAiICsgc3RhcnQgKyAiLCAiICsgZW5kICsKKyAgICAgICAgICAgICAgICAgICAgICAiIGZvciAiICsgVXRpbGl0eS5lc2NhcGUoc2V0LnRvU3RyaW5nKCkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxhc3QgPSBlbmQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb252ZXJ0IGEgYml0bWFzayB0byBhIFVuaWNvZGVTZXQuCisgICAgICovCisgICAgVW5pY29kZVNldCBiaXRzVG9TZXQoaW50IGEpIHsKKyAgICAgICAgVW5pY29kZVNldCByZXN1bHQgPSBuZXcgVW5pY29kZVNldCgpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDMyOyArK2kpIHsKKyAgICAgICAgICAgIGlmICgoYSAmICgxPDxpKSkgIT0gMCkgeworICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoKGNoYXIpaSwoY2hhcilpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQ29udmVydCBhIFVuaWNvZGVTZXQgdG8gYSBiaXRtYXNrLiAgT25seSB0aGUgY2hhcmFjdGVycworICAgICAqIFUrMDAwMCB0byBVKzAwMjAgYXJlIHJlcHJlc2VudGVkIGluIHRoZSBiaXRtYXNrLgorICAgICAqLworICAgIHN0YXRpYyBpbnQgc2V0VG9CaXRzKFVuaWNvZGVTZXQgeCkgeworICAgICAgICBpbnQgcmVzdWx0ID0gMDsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzMjsgKytpKSB7CisgICAgICAgICAgICBpZiAoeC5jb250YWlucygoY2hhcilpKSkgeworICAgICAgICAgICAgICAgIHJlc3VsdCB8PSAoMTw8aSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIHJlcHJlc2VudGF0aW9uIG9mIGFuIGludmVyc2lvbiBsaXN0IGJhc2VkIFVuaWNvZGVTZXQKKyAgICAgKiBhcyBhIHBhaXJzIGxpc3QuICBSYW5nZXMgYXJlIGxpc3RlZCBpbiBhc2NlbmRpbmcgVW5pY29kZSBvcmRlci4KKyAgICAgKiBGb3IgZXhhbXBsZSwgdGhlIHNldCBbYS16QS1NM10gaXMgcmVwcmVzZW50ZWQgYXMgIjMzQU1heiIuCisgICAgICovCisgICAgc3RhdGljIFN0cmluZyBnZXRQYWlycyhVbmljb2RlU2V0IHNldCkgeworICAgICAgICBTdHJpbmdCdWZmZXIgcGFpcnMgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxzZXQuZ2V0UmFuZ2VDb3VudCgpOyArK2kpIHsKKyAgICAgICAgICAgIGludCBzdGFydCA9IHNldC5nZXRSYW5nZVN0YXJ0KGkpOworICAgICAgICAgICAgaW50IGVuZCA9IHNldC5nZXRSYW5nZUVuZChpKTsKKyAgICAgICAgICAgIGlmIChlbmQgPiAweEZGRkYpIHsKKyAgICAgICAgICAgICAgICBlbmQgPSAweEZGRkY7CisgICAgICAgICAgICAgICAgaSA9IHNldC5nZXRSYW5nZUNvdW50KCk7IC8vIFNob3VsZCBiZSB1bm5lY2Vzc2FyeQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcGFpcnMuYXBwZW5kKChjaGFyKXN0YXJ0KS5hcHBlbmQoKGNoYXIpZW5kKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcGFpcnMudG9TdHJpbmcoKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogVGVzdCBmdW5jdGlvbi4gTWFrZSBzdXJlIHRoYXQgdGhlIHNldHMgaGF2ZSB0aGUgcmlnaHQgcmVsYXRpb24KKyAgICAgKi8KKyAgICAgCisgICAgdm9pZCBleHBlY3RSZWxhdGlvbihPYmplY3QgcmVsYXRpb25PYmosIE9iamVjdCBzZXQxT2JqLCBPYmplY3Qgc2V0Mk9iaiwgU3RyaW5nIG1lc3NhZ2UpIHsKKyAgICAgICAgaW50IHJlbGF0aW9uID0gKChJbnRlZ2VyKSByZWxhdGlvbk9iaikuaW50VmFsdWUoKTsKKyAgICAgICAgVW5pY29kZVNldCBzZXQxID0gKFVuaWNvZGVTZXQpIHNldDFPYmo7CisgICAgICAgIFVuaWNvZGVTZXQgc2V0MiA9IChVbmljb2RlU2V0KSBzZXQyT2JqOworICAgICAgICAKKyAgICAgICAgLy8gYnktdGhlLWJ5LCBjaGVjayB0aGUgaXRlcmF0b3IKKyAgICAgICAgY2hlY2tSb3VuZFRyaXAoc2V0MSk7CisgICAgICAgIGNoZWNrUm91bmRUcmlwKHNldDIpOworICAgICAgICAKKyAgICAgICAgYm9vbGVhbiBjb250YWlucyA9IHNldDEuY29udGFpbnNBbGwoc2V0Mik7CisgICAgICAgIGJvb2xlYW4gaXNDb250YWluZWQgPSBzZXQyLmNvbnRhaW5zQWxsKHNldDEpOworICAgICAgICBib29sZWFuIGRpc2pvaW50ID0gc2V0MS5jb250YWluc05vbmUoc2V0Mik7CisgICAgICAgIGJvb2xlYW4gZXF1YWxzID0gc2V0MS5lcXVhbHMoc2V0Mik7CisgICAgICAgIAorICAgICAgICBVbmljb2RlU2V0IGludGVyc2VjdGlvbiA9IG5ldyBVbmljb2RlU2V0KHNldDEpLnJldGFpbkFsbChzZXQyKTsKKyAgICAgICAgVW5pY29kZVNldCBtaW51czEyID0gbmV3IFVuaWNvZGVTZXQoc2V0MSkucmVtb3ZlQWxsKHNldDIpOworICAgICAgICBVbmljb2RlU2V0IG1pbnVzMjEgPSBuZXcgVW5pY29kZVNldChzZXQyKS5yZW1vdmVBbGwoc2V0MSk7CisgICAgICAgIAorICAgICAgICAvLyB0ZXN0IGJhc2ljIHByb3BlcnRpZXMKKyAgICAgICAgCisgICAgICAgIGlmIChjb250YWlucyAhPSAoaW50ZXJzZWN0aW9uLnNpemUoKSA9PSBzZXQyLnNpemUoKSkpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMIGNvbnRhaW5zMSIgKyBzZXQxLnRvUGF0dGVybih0cnVlKSArICIsICIgKyBzZXQyLnRvUGF0dGVybih0cnVlKSk7CisgICAgICAgIH0KKyAgICAgICAgICAKKyAgICAgICAgaWYgKGNvbnRhaW5zICE9IChpbnRlcnNlY3Rpb24uZXF1YWxzKHNldDIpKSkgeworICAgICAgICAgICAgZXJybG4oIkZBSUwgY29udGFpbnMyIiArIHNldDEudG9QYXR0ZXJuKHRydWUpICsgIiwgIiArIHNldDIudG9QYXR0ZXJuKHRydWUpKTsKKyAgICAgICAgfQorICAgICAgICAgIAorICAgICAgICBpZiAoaXNDb250YWluZWQgIT0gKGludGVyc2VjdGlvbi5zaXplKCkgPT0gc2V0MS5zaXplKCkpKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTCBpc0NvbnRhaW5lZDEiICsgc2V0MS50b1BhdHRlcm4odHJ1ZSkgKyAiLCAiICsgc2V0Mi50b1BhdHRlcm4odHJ1ZSkpOworICAgICAgICB9CisgICAgICAgICAgCisgICAgICAgIGlmIChpc0NvbnRhaW5lZCAhPSAoaW50ZXJzZWN0aW9uLmVxdWFscyhzZXQxKSkpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMIGlzQ29udGFpbmVkMiIgKyBzZXQxLnRvUGF0dGVybih0cnVlKSArICIsICIgKyBzZXQyLnRvUGF0dGVybih0cnVlKSk7CisgICAgICAgIH0KKyAgICAgICAgICAKKyAgICAgICAgaWYgKChjb250YWlucyAmJiBpc0NvbnRhaW5lZCkgIT0gZXF1YWxzKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTCBlcXVhbHMiICsgc2V0MS50b1BhdHRlcm4odHJ1ZSkgKyAiLCAiICsgc2V0Mi50b1BhdHRlcm4odHJ1ZSkpOworICAgICAgICB9CisgICAgICAgICAgCisgICAgICAgIGlmIChkaXNqb2ludCAhPSAoaW50ZXJzZWN0aW9uLnNpemUoKSA9PSAwKSkgeworICAgICAgICAgICAgZXJybG4oIkZBSUwgZGlzam9pbnQiICsgc2V0MS50b1BhdHRlcm4odHJ1ZSkgKyAiLCAiICsgc2V0Mi50b1BhdHRlcm4odHJ1ZSkpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBOb3cgc2VlIGlmIHRoZSBleHBlY3RlZCByZWxhdGlvbiBpcyB0cnVlCisgICAgICAgIGludCBzdGF0dXMgPSAobWludXMxMi5zaXplKCkgIT0gMCA/IDQgOiAwKQorICAgICAgICAgIHwgKGludGVyc2VjdGlvbi5zaXplKCkgIT0gMCA/IDIgOiAwKQorICAgICAgICAgIHwgKG1pbnVzMjEuc2l6ZSgpICE9IDAgPyAxIDogMCk7CisgICAgICAgIAorICAgICAgICBpZiAoc3RhdHVzICE9IHJlbGF0aW9uKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTCByZWxhdGlvbiBpbmNvcnJlY3QiICsgbWVzc2FnZQorICAgICAgICAgICAgICArICI7IGRlc2lyZWQgPSAiICsgUkVMQVRJT05fTkFNRVtyZWxhdGlvbl0KKyAgICAgICAgICAgICAgKyAiOyBmb3VuZCA9ICIgKyBSRUxBVElPTl9OQU1FW3N0YXR1c10KKyAgICAgICAgICAgICAgKyAiOyBzZXQxID0gIiArIHNldDEudG9QYXR0ZXJuKHRydWUpCisgICAgICAgICAgICAgICsgIjsgc2V0MiA9ICIgKyBzZXQyLnRvUGF0dGVybih0cnVlKQorICAgICAgICAgICAgICApOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEJhc2ljIGNvbnNpc3RlbmN5IGNoZWNrIGZvciBhIGZldyBpdGVtcy4KKyAgICAgKiBUaGF0IHRoZSBpdGVyYXRvciB3b3JrcywgYW5kIHRoYXQgd2UgY2FuIGNyZWF0ZSBhIHBhdHRlcm4gYW5kCisgICAgICogZ2V0IHRoZSBzYW1lIHRoaW5nIGJhY2sKKyAgICAgKi8KKyAgICAKKyAgICB2b2lkIGNoZWNrUm91bmRUcmlwKFVuaWNvZGVTZXQgcykgeworICAgICAgICBTdHJpbmcgcGF0ID0gcy50b1BhdHRlcm4oZmFsc2UpOworICAgICAgICBVbmljb2RlU2V0IHQgPSBjb3B5V2l0aEl0ZXJhdG9yKHMsIGZhbHNlKTsKKyAgICAgICAgY2hlY2tFcXVhbChzLCB0LCAiaXRlcmF0b3Igcm91bmR0cmlwIik7CisKKyAgICAgICAgdCA9IGNvcHlXaXRoSXRlcmF0b3IocywgdHJ1ZSk7IC8vIHRyeSByYW5nZQorICAgICAgICBjaGVja0VxdWFsKHMsIHQsICJpdGVyYXRvciByb3VuZHRyaXAiKTsKKyAgICAgICAgCisgICAgICAgIHQgPSBuZXcgVW5pY29kZVNldChwYXQpOworICAgICAgICBjaGVja0VxdWFsKHMsIHQsICJ0b1BhdHRlcm4oZmFsc2UpIik7CisgICAgICAgIAorICAgICAgICBwYXQgPSBzLnRvUGF0dGVybih0cnVlKTsKKyAgICAgICAgdCA9IG5ldyBVbmljb2RlU2V0KHBhdCk7CisgICAgICAgIGNoZWNrRXF1YWwocywgdCwgInRvUGF0dGVybih0cnVlKSIpOworICAgIH0KKyAgICAKKyAgICBVbmljb2RlU2V0IGNvcHlXaXRoSXRlcmF0b3IoVW5pY29kZVNldCBzLCBib29sZWFuIHdpdGhSYW5nZSkgeworICAgIAlVbmljb2RlU2V0IHQgPSBuZXcgVW5pY29kZVNldCgpOworICAgIAlVbmljb2RlU2V0SXRlcmF0b3IgaXQgPSBuZXcgVW5pY29kZVNldEl0ZXJhdG9yKHMpOworICAgIAlpZiAod2l0aFJhbmdlKSB7CisgICAgCQl3aGlsZSAoaXQubmV4dFJhbmdlKCkpIHsKKyAgICAJCQlpZiAoaXQuY29kZXBvaW50ID09IFVuaWNvZGVTZXRJdGVyYXRvci5JU19TVFJJTkcpIHsKKyAgICAJCQkJdC5hZGQoaXQuc3RyaW5nKTsKKyAgICAJCQl9IGVsc2UgeworICAgIAkJCQl0LmFkZChpdC5jb2RlcG9pbnQsIGl0LmNvZGVwb2ludEVuZCk7CisgICAgCQkJfQorICAgIAkJfQorICAgIAl9IGVsc2UgeworICAgIAkJd2hpbGUgKGl0Lm5leHQoKSkgeworICAgIAkJCWlmIChpdC5jb2RlcG9pbnQgPT0gVW5pY29kZVNldEl0ZXJhdG9yLklTX1NUUklORykgeworICAgIAkJCQl0LmFkZChpdC5zdHJpbmcpOworICAgIAkJCX0gZWxzZSB7CisgICAgCQkJCXQuYWRkKGl0LmNvZGVwb2ludCk7CisgICAgCQkJfQorICAgIAkJfQorICAgIAl9CisgICAgCXJldHVybiB0OworICAgIH0KKyAgICAKKyAgICBib29sZWFuIGNoZWNrRXF1YWwoVW5pY29kZVNldCBzLCBVbmljb2RlU2V0IHQsIFN0cmluZyBtZXNzYWdlKSB7CisgICAgICAgIGlmICghcy5lcXVhbHModCkpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMICIgKyBtZXNzYWdlCisgICAgICAgICAgICAgICsgIjsgc291cmNlID0gIiArIHMudG9QYXR0ZXJuKHRydWUpCisgICAgICAgICAgICAgICsgIjsgcmVzdWx0ID0gIiArIHQudG9QYXR0ZXJuKHRydWUpCisgICAgICAgICAgICAgICk7CisgICAgICAgIAlyZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAkJCisgICAgCisgICAgLyoqCisgICAgICogRXhwZWN0IHRoZSBnaXZlbiBzZXQgdG8gY29udGFpbiB0aGUgY2hhcmFjdGVycyBpbiBjaGFyc0luIGFuZAorICAgICAqIHRvIG5vdCBjb250YWluIHRob3NlIGluIGNoYXJzT3V0LgorICAgICAqLworICAgIHZvaWQgZXhwZWN0Q29udGFpbm1lbnQoVW5pY29kZVNldCBzZXQsIFN0cmluZyBjaGFyc0luLCBTdHJpbmcgY2hhcnNPdXQpIHsKKyAgICAgICAgU3RyaW5nQnVmZmVyIGJhZCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgaWYgKGNoYXJzSW4gIT0gbnVsbCkgeworICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPGNoYXJzSW4ubGVuZ3RoKCk7ICsraSkgeworICAgICAgICAgICAgICAgIGludCBjID0gVVRGMTYuY2hhckF0KGNoYXJzSW4saSk7CisgICAgICAgICAgICAgICAgaWYoYz4weGZmZmYpIGkrKzsKKyAgICAgICAgICAgICAgICBpZiAoIXNldC5jb250YWlucyhjKSkgeworICAgICAgICAgICAgICAgICAgICBVVEYxNi5hcHBlbmQoYmFkLGMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChiYWQubGVuZ3RoKCkgPiAwKSB7CisgICAgICAgICAgICAgICAgZXJybG4oVXRpbGl0eS5lc2NhcGUoIkZBSUw6IHNldCAiICsgc2V0ICsgIiBkb2VzIG5vdCBjb250YWluICIgKyBiYWQgKworICAgICAgICAgICAgICAgICAgICAgICIsIGV4cGVjdGVkIGNvbnRhaW5tZW50IG9mICIgKyBjaGFyc0luKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGxvZ2xuKFV0aWxpdHkuZXNjYXBlKCJPazogc2V0ICIgKyBzZXQgKyAiIGNvbnRhaW5zICIgKyBjaGFyc0luKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNoYXJzT3V0ICE9IG51bGwpIHsKKyAgICAgICAgICAgIGJhZC5zZXRMZW5ndGgoMCk7CisgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8Y2hhcnNPdXQubGVuZ3RoKCk7ICsraSkgeworICAgICAgICAgICAgICAgIGNoYXIgYyA9IGNoYXJzT3V0LmNoYXJBdChpKTsKKyAgICAgICAgICAgICAgICBpZiAoc2V0LmNvbnRhaW5zKGMpKSB7CisgICAgICAgICAgICAgICAgICAgIGJhZC5hcHBlbmQoYyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGJhZC5sZW5ndGgoKSA+IDApIHsKKyAgICAgICAgICAgICAgICBlcnJsbihVdGlsaXR5LmVzY2FwZSgiRkFJTDogc2V0ICIgKyBzZXQgKyAiIGNvbnRhaW5zICIgKyBiYWQgKworICAgICAgICAgICAgICAgICAgICAgICIsIGV4cGVjdGVkIG5vbi1jb250YWlubWVudCBvZiAiICsgY2hhcnNPdXQpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbG9nbG4oVXRpbGl0eS5lc2NhcGUoIk9rOiBzZXQgIiArIHNldCArICIgZG9lcyBub3QgY29udGFpbiAiICsgY2hhcnNPdXQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgZXhwZWN0UGF0dGVybihVbmljb2RlU2V0IHNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHBhdHRlcm4sCisgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBleHBlY3RlZFBhaXJzKSB7CisgICAgICAgIHNldC5hcHBseVBhdHRlcm4ocGF0dGVybik7CisgICAgICAgIGlmICghZ2V0UGFpcnMoc2V0KS5lcXVhbHMoZXhwZWN0ZWRQYWlycykpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBhcHBseVBhdHRlcm4oXCIiICsgcGF0dGVybiArCisgICAgICAgICAgICAgICAgICAiXCIpID0+IHBhaXJzIFwiIiArCisgICAgICAgICAgICAgICAgICBVdGlsaXR5LmVzY2FwZShnZXRQYWlycyhzZXQpKSArICJcIiwgZXhwZWN0ZWQgXCIiICsKKyAgICAgICAgICAgICAgICAgIFV0aWxpdHkuZXNjYXBlKGV4cGVjdGVkUGFpcnMpICsgIlwiIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2dsbigiT2s6ICAgYXBwbHlQYXR0ZXJuKFwiIiArIHBhdHRlcm4gKworICAgICAgICAgICAgICAgICAgIlwiKSA9PiBwYWlycyBcIiIgKworICAgICAgICAgICAgICAgICAgVXRpbGl0eS5lc2NhcGUoZ2V0UGFpcnMoc2V0KSkgKyAiXCIiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgZXhwZWN0VG9QYXR0ZXJuKFVuaWNvZGVTZXQgc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBleHBQYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nW10gZXhwU3RyaW5ncykgeworICAgICAgICBTdHJpbmcgcGF0ID0gc2V0LnRvUGF0dGVybih0cnVlKTsKKyAgICAgICAgaWYgKHBhdC5lcXVhbHMoZXhwUGF0KSkgeworICAgICAgICAgICAgbG9nbG4oIk9rOiAgIHRvUGF0dGVybigpID0+IFwiIiArIHBhdCArICJcIiIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IHRvUGF0dGVybigpID0+IFwiIiArIHBhdCArICJcIiwgZXhwZWN0ZWQgXCIiICsgZXhwUGF0ICsgIlwiIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYm9vbGVhbiBpbiA9IHRydWU7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxleHBTdHJpbmdzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBpZiAoZXhwU3RyaW5nc1tpXSA9PSBOT1QpIHsgLy8gc2ljOyBwb2ludGVyIGNvbXBhcmlzb24KKyAgICAgICAgICAgICAgICBpbiA9IGZhbHNlOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYm9vbGVhbiBjb250YWluZWQgPSBzZXQuY29udGFpbnMoZXhwU3RyaW5nc1tpXSk7CisgICAgICAgICAgICBpZiAoY29udGFpbmVkID09IGluKSB7CisgICAgICAgICAgICAgICAgbG9nbG4oIk9rOiAiICsgZXhwUGF0ICsgCisgICAgICAgICAgICAgICAgICAgICAgKGNvbnRhaW5lZCA/ICIgY29udGFpbnMgeyIgOiAiIGRvZXMgbm90IGNvbnRhaW4geyIpICsKKyAgICAgICAgICAgICAgICAgICAgICBVdGlsaXR5LmVzY2FwZShleHBTdHJpbmdzW2ldKSArICJ9Iik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiAiICsgZXhwUGF0ICsgCisgICAgICAgICAgICAgICAgICAgICAgKGNvbnRhaW5lZCA/ICIgY29udGFpbnMgeyIgOiAiIGRvZXMgbm90IGNvbnRhaW4geyIpICsKKyAgICAgICAgICAgICAgICAgICAgICBVdGlsaXR5LmVzY2FwZShleHBTdHJpbmdzW2ldKSArICJ9Iik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGV4cGVjdFBhaXJzKFVuaWNvZGVTZXQgc2V0LCBTdHJpbmcgZXhwZWN0ZWRQYWlycykgeworICAgICAgICBpZiAoIWdldFBhaXJzKHNldCkuZXF1YWxzKGV4cGVjdGVkUGFpcnMpKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogRXhwZWN0ZWQgcGFpciBsaXN0IFwiIiArCisgICAgICAgICAgICAgICAgICBVdGlsaXR5LmVzY2FwZShleHBlY3RlZFBhaXJzKSArICJcIiwgZ290IFwiIiArCisgICAgICAgICAgICAgICAgICBVdGlsaXR5LmVzY2FwZShnZXRQYWlycyhzZXQpKSArICJcIiIpOworICAgICAgICB9CisgICAgfQorICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ2hhcnNUb1VuaWNvZGVTdHJpbmcoU3RyaW5nIHMpIHsKKyAgICAgICAgcmV0dXJuIFV0aWxpdHkudW5lc2NhcGUocyk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3RyYW5zbGl0L1VuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yVGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3RyYW5zbGl0L1VuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjU3MTg0OGEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvdHJhbnNsaXQvVW5pY29kZVRvSGV4VHJhbnNsaXRlcmF0b3JUZXN0LmphdmEKQEAgLTAsMCArMSwzMDggQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC90cmFuc2xpdC9BdHRpYy9Vbmljb2RlVG9IZXhUcmFuc2xpdGVyYXRvclRlc3QuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wOC8yOCAxNjo0NToxOSAkIAorICogJFJldmlzaW9uOiAxLjcgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0LnRyYW5zbGl0OworaW1wb3J0IGNvbS5pYm0uaWN1LmxhbmcuKjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0Lio7CitpbXBvcnQgY29tLmlibS5pY3UuZGV2LnRlc3QuKjsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLlV0aWxpdHk7CitpbXBvcnQgamF2YS50ZXh0Lio7CitpbXBvcnQgamF2YS51dGlsLio7CisKKworLyoqCisgKiBAdGVzdAorICogQHN1bW1hcnkgR2VuZXJhbCB0ZXN0IG9mIFVuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yCisgKi8KK3B1YmxpYyBjbGFzcyBVbmljb2RlVG9IZXhUcmFuc2xpdGVyYXRvclRlc3QgZXh0ZW5kcyBUZXN0Rm13ayB7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgbmV3IFVuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yVGVzdCgpLnJ1bihhcmdzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAqIFVzZWQgYnkgVGVzdENvbnN0cnVjdGlvbigpIGFuZCBUZXN0VHJhbnNsaXRlcmF0ZS4KKyAgICAqLworICAgIFVuaWNvZGVGaWx0ZXIgVW5pRmlsdGVyPW5ldyBVbmljb2RlRmlsdGVyKCkgeworICAgICAgICBwdWJsaWMgYm9vbGVhbiBjb250YWlucyhpbnQgYykgeworICAgICAgICAgICAgaWYoYz09MHgwMDYzIHx8IGM9PTB4MDA2MSB8fCBjPT0weDAwNDMgfHwgYz09MHgwMDQxKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgU3RyaW5nIHRvUGF0dGVybihib29sZWFuIGVzY2FwZVVucHJpbnRhYmxlKSB7CisgICAgICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIH0KKyAgICAgICAgcHVibGljIGJvb2xlYW4gbWF0Y2hlc0luZGV4VmFsdWUoaW50IHYpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgdm9pZCBhZGRNYXRjaFNldFRvKFVuaWNvZGVTZXQgdG9VbmlvblRvKSB7fQorICAgIH07CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0Q29uc3RydWN0aW9uKCl7CisgICAgICAgIGxvZ2xuKCJUZXN0aW5nIHRoZSBjb25zdHJ1Y3Rpb24gVW5pY29kZVRvSGV4VHJhbnNsaXRlcmF0b3IoKSIpOworICAgICAgICBVbmljb2RlVG9IZXhUcmFuc2xpdGVyYXRvciB0cmFuczE9bmV3IFVuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yKCk7CisgICAgICAgIAorCisgICAgICAgIGxvZ2xuKCJUZXN0aW5nIHRoZSBjb3NudHJ1Y3Rpb24gVW5pY29kZVRvSGV4VHJhbnNsaXRlcmF0b3IocGF0dGVybikiKTsKKyAgICAgICAgU3RyaW5nIHBhdHRlcm49IlxcXFxVKzAwMDBhYmMiOworICAgICAgICB0cnl7CisgICAgICAgICAgICB0cmFuczE9bmV3IFVuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yKHBhdHRlcm4pOworICAgICAgICB9Y2F0Y2goSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGV4MikgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IFVuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yIGNvbnN0cnVjdGlvbiBmYWlsZWQgd2l0aCBwYXR0ZXJuPSIgKyBwYXR0ZXJuICsgIiBFeGNlcHRpb249ICIgKyBleDIudG9TdHJpbmcoKSk7CisgICAgICAgIH0KKworICAgICAgICBsb2dsbigiVGVzdGluZyB0aGUgY29zbnRydWN0aW9uIFVuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yKHBhdHRlcm4pIHdpdGggaWxsZWdhbCBwYXR0ZXJuIik7CisgICAgICAgIFN0cmluZyBwYXR0ZXJuMj0iXFxYKyI7CisgICAgICAgIHRyeXsKKyAgICAgICAgICAgIHRyYW5zMT1uZXcgVW5pY29kZVRvSGV4VHJhbnNsaXRlcmF0b3IocGF0dGVybjIpOworICAgICAgICB9Y2F0Y2goSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGV4MykgeworICAgICAgICAgICAgbG9nbG4oIk9LOiBjb25zdHJ1Y3Rpb24gd2l0aCBJbGxlZ2FsIHBhdHRlcm4gaGFuZGxlZCBjb3JyZWN0bHkiKTsKKyAgICAgICAgfSAgCisgICAgICAgIAorICAgICAgICBsb2dsbigiVGVzdGluZyB0aGUgY29uc3RydWN0aW9uIFVuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yKHBhdHRlcm4sIGlzVXBwZXJjYXNlPWZhbHNlLCBhZG9wdGVkRmlsdGVyPW51bGwpIik7CisgICAgICAgIHRyeXsKKyAgICAgICAgICAgIHRyYW5zMT1uZXcgVW5pY29kZVRvSGV4VHJhbnNsaXRlcmF0b3IocGF0dGVybiwgZmFsc2UsIG51bGwpOworICAgICAgICB9Y2F0Y2goSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGV4NCkgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IFVuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yKHBhdHRlcm4sIGlzVXBwZXJjYXNlPWZhbHNlLCBhZG9wdGVkRmlsdGVyPW51bGwpIGNvbnN0cnVjdGlvbiBmYWlsZWQuIEV4Y2VwdGlvbj0gIiArIGV4NC50b1N0cmluZygpKTsKKyAgICAgICAgfQorCisgICAgICAgIGxvZ2xuKCJUZXN0aW5nIHRoZSBjb25zdHJ1Y3Rpb24gVW5pY29kZVRvSGV4VHJhbnNsaXRlcmF0b3IocGF0dGVybiwgaXNVcHBlcmNhc2U9dHJ1ZSwgYWRvcHRlZEZpbHRlcikiKTsKKyAgICAgICAgdHJ5eworICAgICAgICAgICAgdHJhbnMxPW5ldyBVbmljb2RlVG9IZXhUcmFuc2xpdGVyYXRvcihwYXR0ZXJuLCB0cnVlLCBVbmlGaWx0ZXIpOworICAgICAgICB9Y2F0Y2goSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGV4NCkgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IFVuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yKHBhdHRlcm4sIGlzVXBwZXJjYXNlPXRydWUsIGFkb3B0ZWRGaWx0ZXIpIGNvbnN0cnVjdGlvbiBmYWlsZWQuIEV4Y2VwdGlvbj0gIiArIGV4NC50b1N0cmluZygpKTsKKyAgICAgICAgfQorCisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdFVwcGVyQ2FzZSgpeworICAgICAgICBsb2dsbigiVGVzdGluZyB0aGUgaXNVcHBlcmNhc2UoKSBhbmQgc2V0VXBwZXJjYXNlKCkgQVBJIG9mIFVuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yIik7CisgICAgICAgIFN0cmluZyBzdHI9ImFiayI7CisgICAgICAgIC8qZGVmYXVsdCB0cmFuc2xpdGVyYXRvciBoYXMgdXBwZXIgY2FzZSBUUlVFKi8KKyAgICAgICAgVW5pY29kZVRvSGV4VHJhbnNsaXRlcmF0b3IgdHJhbnNkZWZhdWx0PW5ldyBVbmljb2RlVG9IZXhUcmFuc2xpdGVyYXRvcigpOworICAgICAgICBleHBlY3QodHJhbnNkZWZhdWx0LCAid2hlcmUgdXBwZXJjYXNlPWRlZmF1bHQiLCBzdHIsICJcXHUwMDYxXFx1MDA2MlxcdTAwNkIiKTsKKworICAgICAgICBTdHJpbmcgcGF0dGVybj0iXFxcXHUwMDAwIjsKKyAgICAgICAgLyp0cmFuc2xpdGVyYXRvciB3aXRoIFVwcGVyY2FzZSBGQUxTRSovCisgICAgICAgIFVuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yIHRyYW5zMT1udWxsOworICAgICAgICB0cnl7CisgICAgICAgICAgICB0cmFuczE9bmV3IFVuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yKHBhdHRlcm4sIGZhbHNlLCBudWxsKTsKKyAgICAgICAgfWNhdGNoKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBleDEpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBVbmljb2RlVG9IZXhUcmFuc2xpdGVyYXRvcihwYXR0ZXJuLCBmYWxzZSxudWxsKSBjb25zdHJ1Y3Rpb24gZmFpbGVkIHdpdGggcGF0dGVyIiAKKyAgICAgICAgICAgICAgICAgICsgcGF0dGVybisgIiBFeGNlcHRpb246ICIgKyBleDEudG9TdHJpbmcoKSk7CisgICAgICAgIH0KKyAgICAgICAgZXhwZWN0KHRyYW5zMSwgIndoZXJlIHVwcGVyY2FzZT1GQUxTRSIsIHN0ciwgIlxcdTAwNjFcXHUwMDYyXFx1MDA2YiIpOyAgLypkb2Vzbid0IGRpc3BsYXkgdXBwZXJjYXNlKi8KKworICAgICAgICBpZih0cmFuc2RlZmF1bHQuaXNVcHBlcmNhc2UoKSAhPSB0cnVlICB8fCAKKyAgICAgICAgICAgdHJhbnMxLmlzVXBwZXJjYXNlKCkgIT0gZmFsc2UgKXsKKyAgICAgICAgICAgIGVycmxuKCJpc1VwcGVyQ2FzZSgpIGZhaWxlZCIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvKmNoYW5naW5nIHRoZSBvdXRwdXRoZXhkaWdpdHMgdG8gbG93ZXIgY2FzZSBmb3IgdGhlIGRlZmF1bHQgdHJhbnNsaXRlcmF0b3IqLworICAgICAgICB0cmFuc2RlZmF1bHQuc2V0VXBwZXJjYXNlKHRyYW5zMS5pc1VwcGVyY2FzZSgpKTsKKyAgICAgICAgaWYodHJhbnNkZWZhdWx0LmlzVXBwZXJjYXNlKCkgIT0gdHJhbnMxLmlzVXBwZXJjYXNlKCkgfHwgCisgICAgICAgICAgIHRyYW5zZGVmYXVsdC5pc1VwcGVyY2FzZSgpICE9IGZhbHNlKXsKKyAgICAgICAgICAgIGVycmxuKCJzZXRVcHBlcmNhc2UoKSBmYWlsZWQiKTsKKyAgICAgICAgfQorICAgICAgICAvKmRvZXNuJ3Qgb3VwdXQgdXBwZXJjYXNlIGhleCwgc2luY2UgdHJhbnNkZWZhdWx0J3MgdXBwZXJjYXNlIGlzIHNldCB0byBGQUxTRSB1c2luZyBzZXRVcHBlcmNhc2UqLworICAgICAgICBleHBlY3QodHJhbnNkZWZhdWx0LCAid2hlcmUgdXBwZXJjYXNlPUZBTFNFIiwgc3RyLCAiXFx1MDA2MVxcdTAwNjJcXHUwMDZiIik7ICAgICAKKworICAgICAgICAvKnRyeWluZyByb3VuZCB0cmlwKi8KKyAgICAgICAgdHJhbnNkZWZhdWx0LnNldFVwcGVyY2FzZSh0cnVlKTsKKyAgICAgICAgaWYodHJhbnNkZWZhdWx0LmlzVXBwZXJjYXNlKCkgIT0gdHJ1ZSB8fCAKKyAgICAgICAgICAgdHJhbnNkZWZhdWx0LmlzVXBwZXJjYXNlKCkgPT0gdHJhbnMxLmlzVXBwZXJjYXNlKCkgKXsKKyAgICAgICAgICAgIGVycmxuKCJzZXRVcHBlcmNhc2UoKSBmYWlsZWQiKTsKKyAgICAgICAgfQorICAgICAgICAvKmRpc3BsYXlzIHVwcGVyIGNhc2Ugc2luY2UgaXQgaXMgc2V0IHRvIFRSVUUqLworICAgICAgICBleHBlY3QodHJhbnNkZWZhdWx0LCAid2hlcmUgdXBwZXJjYXNlPVRSVUUiLCBzdHIsICJcXHUwMDYxXFx1MDA2MlxcdTAwNkIiKTsKKworICAgIH0gCisgICAgcHVibGljIHZvaWQgVGVzdFBhdHRlcm4oKXsKKyAgICAgICAgbG9nbG4oIlRlc3RpbmcgdGhlIGFwcGx5UGF0dGVybigpIGFuZCB0b1BhdHRlcm4oKSBBUEkgb2YgVW5pY29kZVRvSGV4VHJhbnNsaXRlcmF0b3IiKTsKKyAgICAgICAgLypkZWZhdWx0IHRyYW5zbGl0ZXJhdG9yIGhhcyBwYXR0ZXJuIFxcdTAwMDAqLworICAgICAgICBVbmljb2RlVG9IZXhUcmFuc2xpdGVyYXRvciB0cmFuc2RlZmF1bHQ9bmV3IFVuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yKCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgIFN0cmluZyBkZWZhdWx0cGF0dGVybj10cmFuc2RlZmF1bHQudG9QYXR0ZXJuKCk7CisgICAgICAgIFN0cmluZyBwYXR0ZXJuMT0iXFxcXFUrMDAwMCI7CisgICAgICAgIAorICAgICAgICBVbmljb2RlVG9IZXhUcmFuc2xpdGVyYXRvciB0cmFuczE9bnVsbDsKKyAgICAgICAgdHJ5eworICAgICAgICAgICAgdHJhbnMxPW5ldyBVbmljb2RlVG9IZXhUcmFuc2xpdGVyYXRvcihwYXR0ZXJuMSwgdHJ1ZSwgbnVsbCk7CisgICAgICAgIH1jYXRjaChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZXgxKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogVW5pY29kZVRvSGV4VHJhbnNsaXRlcmF0b3IgY29uc3RydWN0aW9uIGZhaWxlZCB3aXRoIHBhdHRlcm4gPSIgKyBwYXR0ZXJuMSArCisgICAgICAgICAgICAgICAgICAgIkV4Y2VwdGlvbjoiICsgZXgxLnRvU3RyaW5nKCkpOworICAgICAgICB9CisKKyAgICAgICAgLyp0ZXN0IHRvUGF0dGVybigpICovCisgICAgICAgIGlmKHRyYW5zZGVmYXVsdC50b1BhdHRlcm4oKS5lcXVhbHModHJhbnMxLnRvUGF0dGVybigpKSA9PSB0cnVlIHx8CisgICAgICAgICAgICB0cmFuc2RlZmF1bHQudG9QYXR0ZXJuKCkuZXF1YWxzKCJcXFxcdTAwMDAiKSAhPSB0cnVlIHx8CisgICAgICAgICAgICB0cmFuczEudG9QYXR0ZXJuKCkuZXF1YWxzKHBhdHRlcm4xKSAhPSB0cnVlICl7CisgICAgICAgICAgICBlcnJsbigiRXJyb3I6IHRvUGF0dGVybigpIGZhaWxlZCIpOworICAgICAgICB9CisKKyAgICAgICAgLyphcHBseSBwYXR0ZXJucyBmb3IgdHJhbnNkZWZhdWx0Ki8KKyAgICAgICAgU3RyaW5nIHN0cj0iYWJLZiI7CisgICAgICAgIGV4cGVjdFBhdHRlcm4odHJhbnNkZWZhdWx0LCAgcGF0dGVybjEsIHN0ciwgIlxcVSswMDYxXFxVKzAwNjJcXFUrMDA0QlxcVSswMDY2Iik7CisgICAgICAgIGV4cGVjdFBhdHRlcm4odHJhbnNkZWZhdWx0LCAgIlxcVSMjMDAsIiwgc3RyLCAiVTYxLFU2MixVNEIsVTY2LCIpOworICAgICAgICBleHBlY3RQYXR0ZXJuKHRyYW5zZGVmYXVsdCwgZGVmYXVsdHBhdHRlcm4sIHN0ciwgIlxcdTAwNjFcXHUwMDYyXFx1MDA0QlxcdTAwNjYiKTsKKyAgICAgICAgZXhwZWN0UGF0dGVybih0cmFuczEsICJcXHVuaTAwMDAiLCBzdHIsICJ1bmkwMDYxdW5pMDA2MnVuaTAwNEJ1bmkwMDY2Iik7CisgICAgICAgIGV4cGVjdFBhdHRlcm4odHJhbnMxLCAiXFxcXFMtMDAwMC1FIiwgc3RyLCAiXFxTLTAwNjEtRVxcUy0wMDYyLUVcXFMtMDA0Qi1FXFxTLTAwNjYtRSIpOworICAgICAgICBleHBlY3RQYXR0ZXJuKHRyYW5zMSwgIlxcdSMjMDAwMCIsIHN0ciwgIkZBSUwiKTsKKyAgICAgICAgZXhwZWN0UGF0dGVybih0cmFuczEsICJcXCowMDAwIiwgc3RyLCAiKjAwNjEqMDA2MiowMDRCKjAwNjYiKTsgCisgICAgICAgIGV4cGVjdFBhdHRlcm4odHJhbnMxLCAiXFx1IyMjIyIsIHN0ciwgIkZBSUwiKTsKKyAgIAorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RTaW1wbGVUcmFuc2xpdGVyYXRlKCl7IAorICAgICAgICBTdHJpbmcgcGF0dGVybjE9IlxcXFxVKzAwMDAiOworICAgICAgICBVbmljb2RlVG9IZXhUcmFuc2xpdGVyYXRvciB0cmFuczE9bnVsbDsKKyAgICAgICAgdHJ5eworICAgICAgICAgICAgdHJhbnMxPW5ldyBVbmljb2RlVG9IZXhUcmFuc2xpdGVyYXRvcihwYXR0ZXJuMSwgdHJ1ZSwgbnVsbCk7CisgICAgICAgIH1jYXRjaChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWFlKXsKKyAgICAgICAgICAgIGVycmxuKCJVbmljb2RlVG9IZXhUcmFuc2xpdGVyYXRvcihwYXR0ZXJuMSwgdHJ1ZSwgbnVsbCkgY29uc3RydWN0aW9uIGZhaWxlZCB3aXRoIHBhdHRlcm4gPSIgCisgICAgICAgICAgICAgICAgICArIHBhdHRlcm4xICsgIkV4Y2VwdGlvbjoiICsgaWFlLnRvU3RyaW5nKCkpOworICAgICAgICB9CisgICAgICAgIFN0cmluZyBzb3VyY2U9IkhlbGxvIjsKKyAgICAgICAgU3RyaW5nIGV4cGVjdGVkPSJIZVxcVSswMDZDXFxVKzAwNkNcXFUrMDA2RiI7CisKKyAgICAgICAgZXhwZWN0VHJhbnNsaXQodHJhbnMxLCAiOlJlcGxhY2VhYmxlICIsIHNvdXJjZSwgIDEsIDUsIDIsIGV4cGVjdGVkKTsgICAKKyAgICB9CisgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0VHJhbnNsaXRlcmF0ZSgpeworICAgICAgICBTdHJpbmcgRGF0YVtdPXsKKyAgICAgICAgLy9wYXR0ZXJuLCBzb3VyY2UsIGluZGV4LmNvbnRleHRTdGFydCwgaW5kZXguY29udGV4dExpbWl0LCBpbmRleC5zdGFydCwgZXhwZWN0ZWRSZXN1bHQsIGV4cGVjdGVkUmVzdWx0IHVzaW5nIGZpbHRlcihhLCBiKQorICAgICAgICAiVSsjIzAwIiwgICAgImFiYyIsICIxIiwgIjMiLCAiMiIsICJhYlUrNjMiLCAiYWJjIiwKKyAgICAgICAgIlxcXFx1MDAwMCIsICJhYmMiLCAiMSIsICIyIiwgIjEiLCAiYVxcdTAwNjJjIiwgImFcXHUwMDYyYyIsCisgICAgICAgICJVbmkwMDAwIiwgICAiYWJjIiwgIjEiLCAiMyIsICIyIiwgImFiVW5pMDA2MyIsICJhYmMiLAorICAgICAgICAiVVswMDAwXSIsICAgImhlbGxvIiwgIjAiLCAiNCIsICIyIiwgImhlVVswMDZDXVVbMDA2Q11vIiwgImhlVVswMDZDXVVbMDA2Q11vIiwKKyAgICAgICAgInByZWZpeC0wMDAwLXN1ZmZpeCIsICJhYmMiLCAiMSIsICIzIiwgIjEiLCAiYXByZWZpeC0wMDYyLXN1ZmZpeHByZWZpeC0wMDYzLXN1ZmZpeCIsICJhcHJlZml4LTAwNjItc3VmZml4YyIsCisgICAgICAgICIqIyMwMCoiLCAgICAgImhlbGxvdGhlcmUiLCAiMSIsICI4IiwgIjQiLCAiaGVsbCo2RioqNzQqKjY4Kio2NSpyZSIsICJoZWxsKjZGKio3NCoqNjgqKjY1KnJlIiwKKworICAgICAgICB9OworICAgICAgICBVbmljb2RlVG9IZXhUcmFuc2xpdGVyYXRvciB0cmFuczE9bnVsbDsKKyAgICAgICAgVW5pY29kZVRvSGV4VHJhbnNsaXRlcmF0b3IgdHJhbnMyPW51bGw7CisgICAgICAgIGZvcihpbnQgaT0wO2k8RGF0YS5sZW5ndGg7aSs9Nyl7CisgICAgICAgICAgICB0cnl7CisgICAgICAgICAgICAgICAgdHJhbnMxPW5ldyBVbmljb2RlVG9IZXhUcmFuc2xpdGVyYXRvcihEYXRhW2krMF0sdHJ1ZSwgbnVsbCk7CisgICAgICAgICAgICB9Y2F0Y2goSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlhZSl7CisgICAgICAgICAgICAgICAgZXJybG4oIlVuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yKHBhdHRlcm4xLCB0cnVlLCBudWxsKSBjb25zdHJ1Y3Rpb24gZmFpbGVkIHdpdGggcGF0dGVybiA9IiAKKyAgICAgICAgICAgICAgICAgICsgRGF0YVtpKzBdICsgIkV4Y2VwdGlvbjoiICsgaWFlLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZXhwZWN0VHJhbnNsaXQodHJhbnMxLCAiIiwgRGF0YVtpKzFdLCBJbnRlZ2VyLnBhcnNlSW50KERhdGFbaSsyXSksIAorICAgICAgICAgICAgICAgICAgICAgICBJbnRlZ2VyLnBhcnNlSW50KERhdGFbaSszXSksIEludGVnZXIucGFyc2VJbnQoRGF0YVtpKzRdKSwgCisgICAgICAgICAgICAgICAgICAgICAgIERhdGFbaSs1XSApOworICAgICAgICAKKyAgICAgICAgICAgIHRyeXsKKyAgICAgICAgICAgICAgICB0cmFuczI9bmV3IFVuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yKERhdGFbaSswXSwgdHJ1ZSwgVW5pRmlsdGVyKTsKKyAgICAgICAgICAgIH1jYXRjaChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWFlKXsKKyAgICAgICAgICAgICAgICBlcnJsbigiVW5pY29kZVRvSGV4VHJhbnNsaXRlcmF0b3IocGF0dGVybjEsIHRydWUsIFVuaWNvZGVGaWx0ZXIpIGNvbnN0cnVjdGlvbiBmYWlsZWQgd2l0aCBwYXR0ZXJuID0iIAorICAgICAgICAgICAgICAgICAgKyAgRGF0YVtpKzBdICsgIiB3aXRoIGZpbHRlcihhLGMpLiAgRXhjZXB0aW9uOiIgKyBpYWUudG9TdHJpbmcoKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBleHBlY3RUcmFuc2xpdCh0cmFuczIsICIgd2l0aCBmaWx0ZXIoYSxBLGMsQykiLCBEYXRhW2krMV0sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZWdlci5wYXJzZUludChEYXRhW2krMl0pLCBJbnRlZ2VyLnBhcnNlSW50KERhdGFbaSszXSksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZWdlci5wYXJzZUludChEYXRhW2krNF0pLCBEYXRhW2krNl0gKTsKKyAgICAgICAgfQorCisgICAgfSAKKyAgICAgICAgCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gU3VwcG9ydCBtZXRob2RzCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICBwcml2YXRlIHZvaWQgZXhwZWN0VHJhbnNsaXQoVW5pY29kZVRvSGV4VHJhbnNsaXRlcmF0b3IgdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBzb3VyY2UsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnQsIGludCBsaW1pdCwgaW50IGN1cnNvciwgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZXhwZWN0ZWRSZXN1bHQpeworICAgIAorCisgICAgICAgIFJlcGxhY2VhYmxlU3RyaW5nIHJzb3VyY2UgPSBuZXcgUmVwbGFjZWFibGVTdHJpbmcoc291cmNlKTsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IuUG9zaXRpb24gaW5kZXggPSBuZXcgVHJhbnNsaXRlcmF0b3IuUG9zaXRpb24oc3RhcnQsIGxpbWl0LCBjdXJzb3IsIGxpbWl0KTsKKyAgICAgICAgdC50cmFuc2xpdGVyYXRlKHJzb3VyY2UsIGluZGV4KTsKKyAgICAgICAgdC5maW5pc2hUcmFuc2xpdGVyYXRpb24ocnNvdXJjZSwgaW5kZXgpOworICAgICAgICBTdHJpbmcgcmVzdWx0PXJzb3VyY2UudG9TdHJpbmcoKTsKKyAgICAgICAgZXhwZWN0QXV4KHQuZ2V0SUQoKSArICI6a2V5Ym9hcmQgIiArIG1lc3NhZ2UsIHNvdXJjZSArICItPiIgKyByZXN1bHQsIHJlc3VsdC5lcXVhbHMoZXhwZWN0ZWRSZXN1bHQpLCBleHBlY3RlZFJlc3VsdCk7CisgICAgfQorICAgIHByaXZhdGUgdm9pZCBleHBlY3RQYXR0ZXJuKFVuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yIHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgcGF0dGVybiwgU3RyaW5nIHNvdXJjZSwgU3RyaW5nIGV4cGVjdGVkUmVzdWx0KXsKKworICAgICAgICB0cnl7CisgICAgICAgICAgICB0LmFwcGx5UGF0dGVybihwYXR0ZXJuKTsKKyAgICAgICAgfWNhdGNoKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpYWUpeworICAgICAgICAgICAgaWYoZXhwZWN0ZWRSZXN1bHQuZXF1YWxzKCJGQUlMIikpeworICAgICAgICAgICAgICAgIGxvZ2xuKCJPSzogY2FsbGluZyBhcHBseVBhdHRlcm4oKSB3aXRoIGlsbGVnYWwgcGF0dGVybiBmYWlsZWQgYXMgZXhwZWN0ZWQuIiArIGlhZS50b1N0cmluZygpKTsKKyAgICAgICAgICAgIH0gZWxzZXsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogYXBwbHlQYXR0ZXJuKCkgZmFpbGVkIHdpdGggcGF0dGVybiA9IiArIHBhdHRlcm4gKyAiLS0tPiIgKyBpYWUudG9TdHJpbmcoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYoIWV4cGVjdGVkUmVzdWx0LmVxdWFscygiRkFJTCIpKXsKKyAgICAgICAgICAgIGlmKCF0LnRvUGF0dGVybigpLmVxdWFscyhwYXR0ZXJuKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBhcHBseVBhdHRlcm4gb3IgdG9QYXR0ZW4gZmFpbGVkLiAgRXhwZWN0ZWQ6ICIgKyBwYXR0ZXJuICsgIkdvdDogIiArIHQudG9QYXR0ZXJuKCkpOworICAgICAgICAgICAgfWVsc2V7CisgICAgICAgICAgICAgICAgbG9nbG4oIk9LOiBhcHBseVBhdHRlcm4gcGFzc2VkLiBUZXN0aW5nIHRyYW5zbGl0ZXJhdGlvbiIpOworICAgICAgICAgICAgICAgIGV4cGVjdCh0LCAiIHdpdGggcGF0dGVybiAiK3BhdHRlcm4sIHNvdXJjZSwgZXhwZWN0ZWRSZXN1bHQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHByaXZhdGUgdm9pZCBleHBlY3QoVW5pY29kZVRvSGV4VHJhbnNsaXRlcmF0b3IgdCwgIFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgc291cmNlLCBTdHJpbmcgZXhwZWN0ZWRSZXN1bHQpIHsKKyAgICAKKyAgICAgICAgU3RyaW5nIHJlc3VsdD10LnRyYW5zbGl0ZXJhdGUoc291cmNlKTsKKyAgICAgICAgZXhwZWN0QXV4KHQuZ2V0SUQoKSArICI6U3RyaW5nICIgKyBtZXNzYWdlLCBzb3VyY2UgKyAiLT4iICsgcmVzdWx0LCByZXN1bHQuZXF1YWxzKGV4cGVjdGVkUmVzdWx0KSwgZXhwZWN0ZWRSZXN1bHQpOworCisgICAgICAgIFJlcGxhY2VhYmxlU3RyaW5nIHJzb3VyY2UgPSBuZXcgUmVwbGFjZWFibGVTdHJpbmcoc291cmNlKTsKKyAgICAgICAgdC50cmFuc2xpdGVyYXRlKHJzb3VyY2UpOworICAgICAgICByZXN1bHQgPSByc291cmNlLnRvU3RyaW5nKCk7CisgICAgICAgIGV4cGVjdEF1eCh0LmdldElEKCkgKyAiOlJlcGxhY2VhYmxlIiArIG1lc3NhZ2UsIHNvdXJjZSArICItPiIgKyByZXN1bHQsIHJlc3VsdC5lcXVhbHMoZXhwZWN0ZWRSZXN1bHQpLCBleHBlY3RlZFJlc3VsdCk7CisKKyAgICAgICAgLy8gVGVzdCBrZXlib2FyZCAoaW5jcmVtZW50YWwpIHRyYW5zbGl0ZXJhdGlvbiAtLSB0aGlzIHJlc3VsdAorICAgICAgICAvLyBtdXN0IGJlIHRoZSBzYW1lIGFmdGVyIHdlIGZpbmFsaXplIChzZWUgYmVsb3cpLgorICAgICAgICByc291cmNlLnJlcGxhY2UoMCwgcnNvdXJjZS5sZW5ndGgoKSwgIiIpOworICAgICAgICBUcmFuc2xpdGVyYXRvci5Qb3NpdGlvbiBpbmRleCA9IG5ldyBUcmFuc2xpdGVyYXRvci5Qb3NpdGlvbigpOworICAgICAgICBTdHJpbmdCdWZmZXIgbG9nID0gbmV3IFN0cmluZ0J1ZmZlcigpOworCisgICAgICAgIGZvciAoaW50IGk9MDsgaTxzb3VyY2UubGVuZ3RoKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKGkgIT0gMCkgeworICAgICAgICAgICAgICAgIGxvZy5hcHBlbmQoIiArICIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbG9nLmFwcGVuZChzb3VyY2UuY2hhckF0KGkpKS5hcHBlbmQoIiAtPiAiKTsKKyAgICAgICAgICAgIHQudHJhbnNsaXRlcmF0ZShyc291cmNlLCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcudmFsdWVPZihzb3VyY2UuY2hhckF0KGkpKSk7CisgICAgICAgICAgICAvLyBBcHBlbmQgdGhlIHN0cmluZyBidWZmZXIgd2l0aCBhIHZlcnRpY2FsIGJhciAnfCcgd2hlcmUKKyAgICAgICAgICAgIC8vIHRoZSBjb21taXR0ZWQgaW5kZXggaXMuCisgICAgICAgICAgICBTdHJpbmcgcyA9IHJzb3VyY2UudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIGxvZy5hcHBlbmQocy5zdWJzdHJpbmcoMCwgaW5kZXguc3RhcnQpKS4KKyAgICAgICAgICAgICAgICBhcHBlbmQoJ3wnKS4KKyAgICAgICAgICAgICAgICBhcHBlbmQocy5zdWJzdHJpbmcoaW5kZXguc3RhcnQpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gQXMgYSBmaW5hbCBzdGVwIGluIGtleWJvYXJkIHRyYW5zbGl0ZXJhdGlvbiwgd2UgbXVzdCBjYWxsCisgICAgICAgIC8vIHRyYW5zbGl0ZXJhdGUgdG8gZmluaXNoIG9mZiBhbnkgcGVuZGluZyBwYXJ0aWFsIG1hdGNoZXMgdGhhdAorICAgICAgICAvLyB3ZXJlIHdhaXRpbmcgZm9yIG1vcmUgaW5wdXQuCisgICAgICAgIHQuZmluaXNoVHJhbnNsaXRlcmF0aW9uKHJzb3VyY2UsIGluZGV4KTsKKyAgICAgICAgcmVzdWx0ID0gcnNvdXJjZS50b1N0cmluZygpOworICAgICAgICBsb2cuYXBwZW5kKCIgPT4gIikuYXBwZW5kKHJzb3VyY2UudG9TdHJpbmcoKSk7CisgICAgICAgIGV4cGVjdEF1eCh0LmdldElEKCkgKyAiOktleWJvYXJkIiwgbG9nLnRvU3RyaW5nKCkgKyAiXG4iICsgc291cmNlICsgIiAtPiAiICsgcmVzdWx0LCByZXN1bHQuZXF1YWxzKGV4cGVjdGVkUmVzdWx0KSwgZXhwZWN0ZWRSZXN1bHQpOworCisgICAgfQorICAgIHByaXZhdGUgdm9pZCBleHBlY3RBdXgoU3RyaW5nIHRhZywgU3RyaW5nIHN1bW1hcnksIGJvb2xlYW4gcGFzcywgIFN0cmluZyBleHBlY3RlZFJlc3VsdCkgeworICAgICAgICBpZiAocGFzcykgeworICAgICAgICAgICAgbG9nbG4oIigiICsgdGFnICsgIikgIiArIFV0aWxpdHkuZXNjYXBlKHN1bW1hcnkpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiAoIiArIHRhZysgIikgIgorICAgICAgICAgICAgICAgICsgVXRpbGl0eS5lc2NhcGUoc3VtbWFyeSkKKyAgICAgICAgICAgICAgICArICIsIGV4cGVjdGVkICIgKyBVdGlsaXR5LmVzY2FwZShleHBlY3RlZFJlc3VsdCkpOworICAgICAgICB9CisgICAgfSAgCit9CisKKworCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvdHJhbnNsaXQvV3JpdGVDaGFydHMuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC90cmFuc2xpdC9Xcml0ZUNoYXJ0cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmU3MGVmMTAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvdHJhbnNsaXQvV3JpdGVDaGFydHMuamF2YQpAQCAtMCwwICsxLDM4NyBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3RyYW5zbGl0L1dyaXRlQ2hhcnRzLmphdmEsdiAkCisgKiAkRGF0ZTogMjAwMi8wNi8yMCAwMToxNjo0OCAkCisgKiAkUmV2aXNpb246IDEuMTUgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisgCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0LnRyYW5zbGl0OworaW1wb3J0IGNvbS5pYm0uaWN1LmxhbmcuKjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0Lio7CitpbXBvcnQgY29tLmlibS5pY3UuZGV2LnRlc3QuKjsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLlV0aWxpdHk7CisvL2ltcG9ydCBqYXZhLnRleHQuKjsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ltcG9ydCBqYXZhLmlvLio7CisKK3B1YmxpYyBjbGFzcyBXcml0ZUNoYXJ0cyB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgaWYgKGZhbHNlKSB7CisgICAgICAgICAgICBwcmludFNldCgiW1tcdTAwMDAtXHUwMDdFIFx1MzBBMS1cdTMwRkMgXHVGRjYxLVx1RkY5Rlx1MzAwMVx1MzAwMl1bOkthdGFrYW5hOl1bOk1hcms6XV0iKTsKKyAgICAgICAgfQorICAgICAgICBTdHJpbmcgdGVzdFNldCA9ICIiOworICAgICAgICBpZiAoYXJncy5sZW5ndGggPT0gMCkgYXJncyA9IGdldEFsbFNjcmlwdHMoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgKytpKSB7CisgICAgLy8gRW51bWVyYXRpb24gZW51bSA9IFRyYW5zbGl0ZXJhdG9yLmdldEF2YWlsYWJsZUlEcygpOworICAgICAgICAgICAgaWYgKGFyZ3NbaV0uc3RhcnRzV2l0aCgiWyIpKSB7CisgICAgICAgICAgICAgICAgdGVzdFNldCA9IGFyZ3NbaV07CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHByaW50KHRlc3RTZXQsIGFyZ3NbaV0pOworICAgICAgICAgICAgICAgIHRlc3RTZXQgPSAiIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgcHJpbnRTZXQoU3RyaW5nIHNvdXJjZSkgeworICAgICAgICBVbmljb2RlU2V0IHMgPSBuZXcgVW5pY29kZVNldChzb3VyY2UpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlByaW50b3V0IGZvciAnIiArIHNvdXJjZSArICInIik7CisgICAgICAgIGludCBjb3VudCA9IHMuZ2V0UmFuZ2VDb3VudCgpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgICAgIGludCBzdGFydCA9IHMuZ2V0UmFuZ2VTdGFydChpKTsKKyAgICAgICAgICAgIGludCBlbmQgPSBzLmdldFJhbmdlRW5kKGkpOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKEludGVnZXIudG9TdHJpbmcoc3RhcnQsMTYpICsgIi4uIiArIEludGVnZXIudG9TdHJpbmcoZW5kLDE2KSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmdbXSBnZXRBbGxTY3JpcHRzKCkgeworICAgICAgICBTZXQgc2V0ID0gbmV3IFRyZWVTZXQoKTsKKyAgICAgICAgaW50IHNjcmlwdHNbXTsKKyAgICAgICAgRW51bWVyYXRpb24gc291cmNlcyA9IFRyYW5zbGl0ZXJhdG9yLmdldEF2YWlsYWJsZVNvdXJjZXMoKTsKKyAgICAgICAgd2hpbGUoc291cmNlcy5oYXNNb3JlRWxlbWVudHMoKSkgeworICAgICAgICAgICAgU3RyaW5nIHNvdXJjZSA9IChTdHJpbmcpIHNvdXJjZXMubmV4dEVsZW1lbnQoKTsKKyAgICAgICAgICAgIHNjcmlwdHMgPSBVU2NyaXB0LmdldENvZGUoc291cmNlKTsKKyAgICAgICAgICAgIGlmIChzY3JpcHRzID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIltTa2lwcGluZyAiICsgc291cmNlICsgIl0iKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGludCBzb3VyY2VTY3JpcHQgPSBzY3JpcHRzWzBdOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJTb3VyY2U6ICIgKyBzb3VyY2UgKyAiO1x0U2NyaXB0czogIiArIHNob3dTY3JpcHRzKHNjcmlwdHMpKTsKKyAgICAgICAgICAgIEVudW1lcmF0aW9uIHRhcmdldHMgPSBUcmFuc2xpdGVyYXRvci5nZXRBdmFpbGFibGVUYXJnZXRzKHNvdXJjZSk7CisgICAgICAgICAgICB3aGlsZSh0YXJnZXRzLmhhc01vcmVFbGVtZW50cygpKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHRhcmdldCA9IChTdHJpbmcpIHRhcmdldHMubmV4dEVsZW1lbnQoKTsKKyAgICAgICAgICAgICAgICBzY3JpcHRzID0gVVNjcmlwdC5nZXRDb2RlKHRhcmdldCk7CisgICAgICAgICAgICAgICAgaWYgKHNjcmlwdHMgPT0gbnVsbAorICAgICAgICAgICAgICAgICAgICAgICAgfHwgcHJpb3JpdHkoc2NyaXB0c1swXSkgPCBwcmlvcml0eShzb3VyY2VTY3JpcHQpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIHNraXAgZG9pbmcgYm90aCBkaXJlY3Rpb25zCisgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiW1NraXBwaW5nICciICsgc291cmNlICsgIi0iICsgdGFyZ2V0ICsgIiddIik7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlx0VGFyZ2V0OiAiICsgdGFyZ2V0ICsgIjtcdFNjcmlwdHM6ICIgKyBzaG93U2NyaXB0cyhzY3JpcHRzKSk7CisgICAgICAgICAgICAgICAgRW51bWVyYXRpb24gdmFyaWFudHMgPSBUcmFuc2xpdGVyYXRvci5nZXRBdmFpbGFibGVWYXJpYW50cyhzb3VyY2UsIHRhcmdldCk7CisgICAgICAgICAgICAgICAgd2hpbGUodmFyaWFudHMuaGFzTW9yZUVsZW1lbnRzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHZhcmlhbnQgPSAoU3RyaW5nKSB2YXJpYW50cy5uZXh0RWxlbWVudCgpOworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgaWQgPSBzb3VyY2UgKyAiLSIgKyB0YXJnZXQ7CisgICAgICAgICAgICAgICAgICAgIGlmICh2YXJpYW50Lmxlbmd0aCgpICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlkICs9ICIvIiArIHZhcmlhbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmFsc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlNLSVBQSU5HIFZBUklBTlQsIFNJTkNFIElUIENVUlJFTlRMWSBCUkVBS1MhXHQiICsgaWQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiXHRcdFx0XHRBZGRpbmc6ICciICsgaWQgKyAiJyIpOworICAgICAgICAgICAgICAgICAgICBzZXQuYWRkKGlkKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgU3RyaW5nW10gcmVzdWx0cyA9IG5ldyBTdHJpbmdbc2V0LnNpemUoKV07CisgICAgICAgIHNldC50b0FycmF5KHJlc3VsdHMpOworICAgICAgICByZXR1cm4gcmVzdWx0czsKKyAgICB9OworICAgIAorICAgIHN0YXRpYyBwdWJsaWMgaW50IHByaW9yaXR5KGludCBzY3JpcHQpIHsKKyAgICAgICAgaWYgKHNjcmlwdCA9PSBVU2NyaXB0LkxBVElOKSByZXR1cm4gLTI7CisgICAgICAgIHJldHVybiBzY3JpcHQ7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIHNob3dTY3JpcHRzKGludFtdIHNjcmlwdHMpIHsKKyAgICAgICAgU3RyaW5nQnVmZmVyIHJlc3VsdHMgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2NyaXB0cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgaWYgKGkgIT0gMCkgcmVzdWx0cy5hcHBlbmQoIiwgIik7CisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChVU2NyaXB0LmdldE5hbWUoc2NyaXB0c1tpXSkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHRzLnRvU3RyaW5nKCk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBwcmludChTdHJpbmcgdGVzdFNldCwgU3RyaW5nIHJhd0lkKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlByb2Nlc3NpbmcgIiArIHJhd0lkKTsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgdCA9IFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKHJhd0lkKTsKKyAgICAgICAgU3RyaW5nIGlkID0gdC5nZXRJRCgpOworICAgICAgICAKKyAgICAgICAgLy8gY2xlYW4gdXAgSURzLiBPdWdodCB0byBiZSBBUEkgZm9yIGdldHRpbmcgc291cmNlLCB0YXJnZXQsIHZhcmlhbnQKKyAgICAgICAgaW50IG1pbnVzUG9zID0gaWQuaW5kZXhPZignLScpOworICAgICAgICBTdHJpbmcgc291cmNlID0gaWQuc3Vic3RyaW5nKDAsbWludXNQb3MpOworICAgICAgICBTdHJpbmcgdGFyZ2V0ID0gaWQuc3Vic3RyaW5nKG1pbnVzUG9zKzEpOworICAgICAgICBpbnQgc2xhc2hQb3MgPSB0YXJnZXQuaW5kZXhPZignLycpOworICAgICAgICBpZiAoc2xhc2hQb3MgPj0gMCkgdGFyZ2V0ID0gdGFyZ2V0LnN1YnN0cmluZygwLHNsYXNoUG9zKTsKKyAgICAgICAgCisgICAgICAgIC8vIGNoZWNrIHRoYXQgdGhlIHNvdXJjZSBpcyBhIHNjcmlwdAorICAgICAgICBpZiAodGVzdFNldC5lcXVhbHMoIiIpKSB7CisgICAgICAgICAgICBpbnRbXSBzY3JpcHRzID0gVVNjcmlwdC5nZXRDb2RlKHNvdXJjZSk7CisgICAgICAgICAgICBpZiAoc2NyaXB0cyA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJGQUlMRUQ6ICIgCisgICAgICAgICAgICAgICAgICAgICsgVHJhbnNsaXRlcmF0b3IuZ2V0RGlzcGxheU5hbWUoaWQpCisgICAgICAgICAgICAgICAgICAgICsgIiBkb2VzIG5vdCBoYXZlIGEgc2NyaXB0IGFzIHRoZSBzb3VyY2UiKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRlc3RTZXQgPSAiWzoiICsgc291cmNlICsgIjpdIjsKKyAgICAgICAgICAgICAgICBpZiAoc291cmNlLmVxdWFsc0lnbm9yZUNhc2UoImthdGFrYW5hIikpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFNldCA9ICJbIiArIHRlc3RTZXQgKyAiXHUzMEZDXSI7CisgICAgICAgICAgICAgICAgICAgIHByaW50U2V0KHRlc3RTZXQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBVbmljb2RlU2V0IHNvdXJjZVNldCA9IG5ldyBVbmljb2RlU2V0KHRlc3RTZXQpOworCisgICAgICAgIC8vIGNoZWNrIHRoYXQgdGhlIHRhcmdldCBpcyBhIHNjcmlwdAorICAgICAgICBpbnRbXSBzY3JpcHRzID0gVVNjcmlwdC5nZXRDb2RlKHRhcmdldCk7CisgICAgICAgIGlmIChzY3JpcHRzID09IG51bGwpIHsKKyAgICAgICAgICAgIHRhcmdldCA9ICJbOkxhdGluOl0iOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGFyZ2V0ID0gIls6IiArIHRhcmdldCArICI6XSI7CisgICAgICAgIH0KKyAgICAgICAgVW5pY29kZVNldCB0YXJnZXRTZXQgPSBuZXcgVW5pY29kZVNldCh0YXJnZXQpOyAgICAgICAgCisgICAgICAgIAorICAgICAgICBUcmFuc2xpdGVyYXRvciBpbnZlcnNlID0gdC5nZXRJbnZlcnNlKCk7CisgICAgICAgIAorICAgICAgICAvL1RyYW5zbGl0ZXJhdG9yIGhleCA9IFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKCJBbnktSGV4Iik7CisgICAgICAgIAorICAgICAgICAgICAgICAgIAorICAgICAgICAvLyBpdGVyYXRlIHRocm91Z2ggc2NyaXB0CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVHJhbnNsaXRlcmF0aW5nICIgKyBzb3VyY2VTZXQudG9QYXR0ZXJuKHRydWUpIAorICAgICAgICAgICAgKyAiIHdpdGggIiArIFRyYW5zbGl0ZXJhdG9yLmdldERpc3BsYXlOYW1lKGlkKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgIFVuaWNvZGVTZXQgbGVmdE92ZXJTZXQgPSBuZXcgVW5pY29kZVNldCh0YXJnZXRTZXQpOworICAgICAgICBVbmljb2RlU2V0IHByaXZhdGVVc2UgPSBuZXcgVW5pY29kZVNldCgiWzpwcml2YXRlIHVzZTpdIik7CisgICAgICAgICAgICAKKyAgICAgICAgTWFwIG1hcCA9IG5ldyBUcmVlTWFwKCk7CisgICAgICAgIAorICAgICAgICBVbmljb2RlU2V0IHRhcmdldFNldFBsdXNBbnl3YXlzID0gbmV3IFVuaWNvZGVTZXQodGFyZ2V0U2V0KTsKKyAgICAgICAgdGFyZ2V0U2V0UGx1c0FueXdheXMuYWRkQWxsKG9rQW55d2F5KTsKKyAgICAgICAgCisgICAgICAgIFVuaWNvZGVTZXQgc291cmNlU2V0UGx1c0FueXdheXMgPSBuZXcgVW5pY29kZVNldChzb3VyY2VTZXQpOworICAgICAgICBzb3VyY2VTZXRQbHVzQW55d2F5cy5hZGRBbGwob2tBbnl3YXkpOworICAgICAgICAKKyAgICAgICAgVW5pY29kZVNldEl0ZXJhdG9yIHVzaSA9IG5ldyBVbmljb2RlU2V0SXRlcmF0b3Ioc291cmNlU2V0KTsKKyAgICAgICAgCisgICAgICAgIHdoaWxlICh1c2kubmV4dCgpKSB7CisgICAgICAgICAgICBpbnQgaiA9IHVzaS5jb2RlcG9pbnQ7CisgICAgICAgICAgICAvKgorICAgICAgICBpbnQgY291bnQgPSBzb3VyY2VTZXQuZ2V0UmFuZ2VDb3VudCgpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgICAgIGludCBlbmQgPSBzb3VyY2VTZXQuZ2V0UmFuZ2VFbmQoaSk7CisgICAgICAgICAgICBmb3IgKGludCBqID0gc291cmNlU2V0LmdldFJhbmdlU3RhcnQoaSk7IGogPD0gZW5kOyArK2opIHsKKyAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgU3RyaW5nIGZsYWcgPSAiIjsKKyAgICAgICAgICAgICAgICBTdHJpbmcgc3MgPSBVVEYxNi52YWx1ZU9mKGopOworICAgICAgICAgICAgICAgIFN0cmluZyB0cyA9IHQudHJhbnNsaXRlcmF0ZShzcyk7CisgICAgICAgICAgICAgICAgY2hhciBncm91cCA9IDA7CisgICAgICAgICAgICAgICAgaWYgKCF0YXJnZXRTZXRQbHVzQW55d2F5cy5jb250YWluc0FsbCh0cykpIHsKKyAgICAgICAgICAgICAgICAgICAgZ3JvdXAgfD0gMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKFVURjE2LmNvdW50Q29kZVBvaW50KHRzKSA9PSAxKSB7CisgICAgICAgICAgICAgICAgICAgIGxlZnRPdmVyU2V0LnJlbW92ZShVVEYxNi5jaGFyQXQodHMsMCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBTdHJpbmcgcnQgPSBpbnZlcnNlLnRyYW5zbGl0ZXJhdGUodHMpOworICAgICAgICAgICAgICAgIGlmICghc291cmNlU2V0UGx1c0FueXdheXMuY29udGFpbnNBbGwocnQpKSB7CisgICAgICAgICAgICAgICAgICAgIGdyb3VwIHw9IDI7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghc3MuZXF1YWxzKHJ0KSkgeworICAgICAgICAgICAgICAgICAgICBncm91cCB8PSA0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoIXByaXZhdGVVc2UuY29udGFpbnNOb25lKHRzKSB8fCAhcHJpdmF0ZVVzZS5jb250YWluc05vbmUocnQpKSB7CisgICAgICAgICAgICAgICAgICAgIGdyb3VwIHw9IDE2OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgbWFwLnB1dChncm91cCArIFVDaGFyYWN0ZXIudG9Mb3dlckNhc2UoTm9ybWFsaXplci5ub3JtYWxpemUoc3MsIE5vcm1hbGl6ZXIuTkZLRCkpCisgICAgICAgICAgICAgICAgICAgICAgICArICJcdTAwMDAiICsgc3MsIAorICAgICAgICAgICAgICAgICAgICAiPHRkIGNsYXNzPSdzJz4iICsgc3MgKyAiPGJyPjx0dD4iICsgaGV4KHNzKQorICAgICAgICAgICAgICAgICAgICAgICAgKyAiPC90dD48L3RkPjx0ZCBjbGFzcz0ndCc+IiArIHRzICsgIjxicj48dHQ+IiArIGhleCh0cykKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIjwvdHQ+PC90ZD48dGQgY2xhc3M9J3InPiIgKyBydCArICI8YnI+PHR0PiIgKyBoZXgocnQpICsgIjwvdHQ+PC90ZD4iICk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gQ2hlY2sgRHVhbHMKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgIGludCBtYXhEdWFsID0gMjAwOworICAgICAgICAgICAgICBkdWFsOgorICAgICAgICAgICAgICAgIGZvciAoaW50IGkyID0gMDsgaTIgPCBjb3VudDsgKytpMikgeworICAgICAgICAgICAgICAgICAgICBpbnQgZW5kMiA9IHNvdXJjZVNldC5nZXRSYW5nZUVuZChpMik7CisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGoyID0gc291cmNlU2V0LmdldFJhbmdlU3RhcnQoaTIpOyBqMiA8PSBlbmQ7ICsrajIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBzczIgPSBVVEYxNi52YWx1ZU9mKGoyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyB0czIgPSB0LnRyYW5zbGl0ZXJhdGUoc3MyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBydDIgPSBpbnZlcnNlLnRyYW5zbGl0ZXJhdGUodHMyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHNzMTIgPSBzcyArIHNzMjsKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyB0czEyID0gdC50cmFuc2xpdGVyYXRlKHNzICsgc3MxMik7CisgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgcnQxMiA9IGludmVyc2UudHJhbnNsaXRlcmF0ZSh0czEyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0czEyLmVxdWFscyh0cyArIHRzMikgJiYgcnQxMi5lcXVhbHMocnQgKyBydDIpKSBjb250aW51ZTsgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgtLW1heER1YWwgPCAwKSBicmVhayBkdWFsOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmFuc2xpdGVyYXRpb24gb2Ygd2hvbGUgZGlmZmVycyBmcm9tIHRoYXQgb2YgcGFydHMKKyAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwID0gMHgxMDA7CisgICAgICAgICAgICAgICAgICAgICAgICBtYXAucHV0KGdyb3VwICsgVUNoYXJhY3Rlci50b0xvd2VyQ2FzZShOb3JtYWxpemVyLm5vcm1hbGl6ZShzczEyLCBOb3JtYWxpemVyLkRFQ09NUF9DT01QQVQsIDApKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICJcdTAwMDAiICsgc3MxMiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjx0ZCBjbGFzcz0ncyc+IiArIHNzMTIgKyAiPGJyPjx0dD4iICsgaGV4KHNzMTIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIjwvdHQ+PC90ZD48dGQgY2xhc3M9J3QnPiIgKyB0czEyICsgIjxicj48dHQ+IiArIGhleCh0czEyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICI8L3R0PjwvdGQ+PHRkIGNsYXNzPSdyJz4iICsgcnQxMiArICI8YnI+PHR0PiIgKyBoZXgocnQxMikgKyAiPC90dD48L3RkPiIgKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgLy99CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIAorICAgICAgICBsZWZ0T3ZlclNldC5yZW1vdmUoMHgwMTAwLDB4MDJGRik7IC8vIHJlbW92ZSBleHRlbmRlZCAmIElQQQorICAgICAgICAKKyAgICAgICAgLyppbnQgY291bnQgPSBsZWZ0T3ZlclNldC5nZXRSYW5nZUNvdW50KCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICAgICAgaW50IGVuZCA9IGxlZnRPdmVyU2V0LmdldFJhbmdlRW5kKGkpOworICAgICAgICAgICAgZm9yIChpbnQgaiA9IGxlZnRPdmVyU2V0LmdldFJhbmdlU3RhcnQoaSk7IGogPD0gZW5kOyArK2opIHsKKyAgICAgICAgICAgICovCisgICAgICAgICAgICAKKyAgICAgICAgdXNpLnJlc2V0KGxlZnRPdmVyU2V0KTsKKyAgICAgICAgd2hpbGUgKHVzaS5uZXh0KCkpIHsKKyAgICAgICAgICAgIGludCBqID0gdXNpLmNvZGVwb2ludDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIFN0cmluZyB0cyA9IFVURjE2LnZhbHVlT2Yoaik7CisgICAgICAgICAgICAgICAgLy8gU3RyaW5nIGRlY29tcCA9IE5vcm1hbGl6ZXIubm9ybWFsaXplKHRzLCBOb3JtYWxpemVyLkRFQ09NUF9DT01QQVQsIDApOworICAgICAgICAgICAgICAgIC8vIGlmICghZGVjb21wLmVxdWFscyh0cykpIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIFN0cmluZyBydCA9IGludmVyc2UudHJhbnNsaXRlcmF0ZSh0cyk7CisgICAgICAgICAgICAgICAgU3RyaW5nIGZsYWcgPSAiIjsKKyAgICAgICAgICAgICAgICBjaGFyIGdyb3VwID0gMHg4MDsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKCFzb3VyY2VTZXRQbHVzQW55d2F5cy5jb250YWluc0FsbChydCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZ3JvdXAgfD0gODsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKCFwcml2YXRlVXNlLmNvbnRhaW5zTm9uZShydCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZ3JvdXAgfD0gMTY7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBtYXAucHV0KGdyb3VwICsgVUNoYXJhY3Rlci50b0xvd2VyQ2FzZShOb3JtYWxpemVyLm5vcm1hbGl6ZSh0cywgTm9ybWFsaXplci5ORktEKSkgKyB0cywgCisgICAgICAgICAgICAgICAgICAgICI8dGQgY2xhc3M9J3MnPi08L3RkPjx0ZCBjbGFzcz0ndCc+IiArIHRzICsgIjxicj48dHQ+IiArIGhleCh0cykKKyAgICAgICAgICAgICAgICAgICAgKyAiPC90dD48L3RkPjx0ZCBjbGFzcz0ncic+IgorICAgICAgICAgICAgICAgICAgICArIHJ0ICsgIjxicj48dHQ+IiArIGhleChydCkgKyAiPC90dD48L3RkPiIpOworICAgICAgICAgICAgLy99CisgICAgICAgIH0KKworICAgICAgICAvLyBtYWtlIGZpbGUgbmFtZSBhbmQgb3BlbgorICAgICAgICBGaWxlIGYgPSBuZXcgRmlsZSgidHJhbnNsaXRlcmF0aW9uL2NoYXJ0XyIgKyBpZC5yZXBsYWNlKCcvJywgJ18nKSArICIuaHRtbCIpOworICAgICAgICBTdHJpbmcgZmlsZW5hbWUgPSBmLmdldENhbm9uaWNhbEZpbGUoKS50b1N0cmluZygpOworICAgICAgICBQcmludFdyaXRlciBvdXQgPSBuZXcgUHJpbnRXcml0ZXIoCisgICAgICAgICAgICBuZXcgT3V0cHV0U3RyZWFtV3JpdGVyKAorICAgICAgICAgICAgICAgIG5ldyBGaWxlT3V0cHV0U3RyZWFtKGZpbGVuYW1lKSwgIlVURi04IikpOworICAgICAgICAvL291dC5wcmludCgnXHVGRUZGJyk7IC8vIEJPTQorICAgICAgICAKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJXcml0aW5nICIgKyBmaWxlbmFtZSk7CisgICAgICAgIAorICAgICAgICB0cnkgeworICAgICAgICAgICAgb3V0LnByaW50bG4oIjwhRE9DVFlQRSBIVE1MIFBVQkxJQyBcIi0vL1czQy8vRFREIEhUTUwgNC4wIFRyYW5zaXRpb25hbC8vRU5cIj4iKTsKKyAgICAgICAgICAgIG91dC5wcmludGxuKCI8SFRNTD48SEVBRD4iKTsKKyAgICAgICAgICAgIG91dC5wcmludGxuKCI8TUVUQSBjb250ZW50PVwidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04XCIgaHR0cC1lcXVpdj1Db250ZW50LVR5cGU+PC9IRUFEPiIpOworICAgICAgICAgICAgb3V0LnByaW50bG4oIjxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaHJlZj0naHR0cDovL3d3dy51bmljb2RlLm9yZy9jaGFydHMvdWNhL2NoYXJ0cy5jc3MnIHR5cGU9J3RleHQvY3NzJz4iKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgb3V0LnByaW50bG4oIjxCT0RZPiIpOworICAgICAgICAgICAgb3V0LnByaW50bG4oIjxoMT5UcmFuc2xpdGVyYXRpb24gU2FtcGxlcyBmb3IgJyIgKyBUcmFuc2xpdGVyYXRvci5nZXREaXNwbGF5TmFtZShpZCkgKyAiJzwvaDE+Iik7CisgICAgICAgICAgICBvdXQucHJpbnRsbigiPHA+VGhpcyBmaWxlIGlsbHVzdHJhdGVzIHRoZSB0cmFuc2xpdGVyYXRpb25zIG9mICIgKyBUcmFuc2xpdGVyYXRvci5nZXREaXNwbGF5TmFtZShpZCkgKyAiLiIpOworICAgICAgICAgICAgb3V0LnByaW50bG4oIlRoZSBzYW1wbGVzIGFyZSBtZWNoYW5pY2FsbHkgZ2VuZXJhdGVkLCBhbmQgb25seSBpbmNsdWRlIHNpbmdsZSBjaGFyYWN0ZXJzIik7CisgICAgICAgICAgICBvdXQucHJpbnRsbigiZnJvbSB0aGUgc291cmNlIHNldC4gVGh1cyBpdCB3aWxsIDxpPm5vdDwvaT4gY29udGFpbiBleGFtcGxlcyB3aGVyZSB0aGUgdHJhbnNsaXRlcmF0aW9uIik7CisgICAgICAgICAgICBvdXQucHJpbnRsbigiZGVwZW5kcyBvbiB0aGUgY29udGV4dCBhcm91bmQgdGhlIGNoYXJhY3Rlci4gRm9yIGEgbW9yZSBkZXRhaWxlZCAtLSBhbmQgaW50ZXJhY3RpdmUgLS0gZXhhbXBsZSwgc2VlIHRoZSIpOworICAgICAgICAgICAgb3V0LnByaW50bG4oIjxhIGhyZWY9J2h0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9jZ2ktYmluL2ljdS90cic+VHJhbnNsaXRlcmF0aW9uIERlbW88L2E+PC9wPjxocj4iKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gc2V0IHVwIHRoZSBoZWFkZXJzCisgICAgICAgICAgICBpbnQgY29sdW1uQ291bnQgPSAzOworICAgICAgICAgICAgU3RyaW5nIGhlYWRlckJhc2UgPSAiPHRoPlNvdXJjZTwvdGg+PHRoPlRhcmdldDwvdGg+PHRoPlJldHVybjwvdGg+IjsKKyAgICAgICAgICAgIFN0cmluZyBoZWFkZXJzID0gaGVhZGVyQmFzZTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSBjb2x1bW5Db3VudCAtIDE7IGkgPiAwOyAtLWkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaSAhPSBjb2x1bW5Db3VudCAtIDEpIGhlYWRlcnMgKz0gIjx0aD4mbmJzcDs8L3RoPiI7CisgICAgICAgICAgICAgICAgaGVhZGVycyArPSBoZWFkZXJCYXNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBTdHJpbmcgdGFibGVIZWFkZXIgPSAiPHA+PHRhYmxlIGJvcmRlcj0nMSc+PHRyPiIgKyBoZWFkZXJzICsgIjwvdHI+IjsKKyAgICAgICAgICAgIFN0cmluZyB0YWJsZUZvb3RlciA9ICI8L3RhYmxlPjwvcD4iOworICAgICAgICAgICAgb3V0LnByaW50bG4oIjxoMj5Sb3VuZCBUcmlwPC9oMj4iKTsKKyAgICAgICAgICAgIG91dC5wcmludGxuKHRhYmxlSGVhZGVyKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgSXRlcmF0b3IgaXQgPSBtYXAua2V5U2V0KCkuaXRlcmF0b3IoKTsKKyAgICAgICAgICAgIGNoYXIgbGFzdEdyb3VwID0gMDsKKyAgICAgICAgICAgIGludCBjb3VudCA9IDA7CisgICAgICAgICAgICBpbnQgY29sdW1uID0gMDsKKyAgICAgICAgICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcga2V5ID0gKFN0cmluZykgaXQubmV4dCgpOworICAgICAgICAgICAgICAgIGNoYXIgZ3JvdXAgPSBrZXkuY2hhckF0KDApOworICAgICAgICAgICAgICAgIGlmIChncm91cCAhPSBsYXN0R3JvdXAgfHwgY291bnQrKyA+IDUwKSB7CisgICAgICAgICAgICAgICAgICAgIGxhc3RHcm91cCA9IGdyb3VwOworICAgICAgICAgICAgICAgICAgICBjb3VudCA9IDA7CisgICAgICAgICAgICAgICAgICAgIGlmIChjb2x1bW4gIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oIjwvdHI+Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4gPSAwOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKHRhYmxlRm9vdGVyKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIFN0cmluZyB0aXRsZSA9ICIiOworICAgICAgICAgICAgICAgICAgICBpZiAoKGdyb3VwICYgMHgxMDApICE9IDApIG91dC5wcmludGxuKCI8aHI+PGgyPkR1YWxzPC9oMj4iKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoKGdyb3VwICYgMHg4MCkgIT0gMCkgb3V0LnByaW50bG4oIjxocj48aDI+Q29tcGxldGVuZXNzPC9oMj4iKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBvdXQucHJpbnRsbigiPGhyPjxoMj5Sb3VuZCBUcmlwPC9oMj4iKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKChncm91cCAmIDE2KSAhPSAwKSBvdXQucHJpbnRsbigiPGgzPkVycm9yczogQ29udGFpbnMgUHJpdmF0ZSBVc2UgQ2hhcmFjdGVyczwvaDM+Iik7CisgICAgICAgICAgICAgICAgICAgIGlmICgoZ3JvdXAgJiA4KSAhPSAwKSBvdXQucHJpbnRsbigiPGgzPlBvc3NpYmxlIEVycm9yczogUmV0dXJuIG5vdCBpbiBTb3VyY2UgU2V0PC9oMz4iKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKChncm91cCAmIDQpICE9IDApIG91dC5wcmludGxuKCI8aDM+T25lLVdheSBNYXBwaW5nOiBSZXR1cm4gbm90IGVxdWFsIHRvIFNvdXJjZTwvaDM+Iik7CisgICAgICAgICAgICAgICAgICAgIGlmICgoZ3JvdXAgJiAyKSAhPSAwKSBvdXQucHJpbnRsbigiPGgzPkVycm9yczogUmV0dXJuIG5vdCBpbiBTb3VyY2UgU2V0PC9oMz4iKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKChncm91cCAmIDEpICE9IDApIG91dC5wcmludGxuKCI8aDM+RXJyb3JzOiBUYXJnZXQgbm90IGluIFRhcmdldCBTZXQ8L2gzPiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnRsbih0YWJsZUhlYWRlcik7CisgICAgICAgICAgICAgICAgICAgIGNvbHVtbiA9IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IChTdHJpbmcpIG1hcC5nZXQoa2V5KTsKKyAgICAgICAgICAgICAgICBpZiAoY29sdW1uKysgPT0gMCkgb3V0LnByaW50KCI8dHI+Iik7CisgICAgICAgICAgICAgICAgZWxzZSBvdXQucHJpbnQoIjx0aD4mbmJzcDs8L3RoPiIpOworICAgICAgICAgICAgICAgIG91dC5wcmludGxuKHZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAoY29sdW1uID09IDMpIHsKKyAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oIjwvdHI+Iik7CisgICAgICAgICAgICAgICAgICAgIGNvbHVtbiA9IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNvbHVtbiAhPSAwKSB7CisgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oIjwvdHI+Iik7CisgICAgICAgICAgICAgICAgY29sdW1uID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG91dC5wcmludGxuKHRhYmxlRm9vdGVyICsgIjwvQk9EWT48L0hUTUw+Iik7CisgICAgICAgICAgICAKKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIG91dC5jbG9zZSgpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGhleChTdHJpbmcgcykgeworICAgICAgICBpbnQgY3A7CisgICAgICAgIFN0cmluZ0J1ZmZlciByZXN1bHRzID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHMubGVuZ3RoKCk7IGkgKz0gVVRGMTYuZ2V0Q2hhckNvdW50KGNwKSkgeworICAgICAgICAgICAgY3AgPSBVVEYxNi5jaGFyQXQocywgaSk7CisgICAgICAgICAgICBpZiAoaSAhPSAwKSByZXN1bHRzLmFwcGVuZCgnICcpOworICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoSW50ZWdlci50b0hleFN0cmluZyhjcCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHRzLnRvU3RyaW5nKCkudG9VcHBlckNhc2UoKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIGZpbmFsIFVuaWNvZGVTZXQgb2tBbnl3YXkgPSBuZXcgVW5pY29kZVNldCgiW15bOkxldHRlcjpdXSIpOworICAgIAorICAgIC8qCisgICAgLy8gdGVzdHMgd2hldGhlciBhIHN0cmluZyBpcyBpbiBhIHNldC4gQWxzbyBjaGVja3MgZm9yIENvbW1vbiBhbmQgSW5oZXJpdGVkCisgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzSW4oU3RyaW5nIHMsIFVuaWNvZGVTZXQgc2V0KSB7CisgICAgICAgIGludCBjcDsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzLmxlbmd0aCgpOyBpICs9IFVURjE2LmdldENoYXJDb3VudChpKSkgeworICAgICAgICAgICAgY3AgPSBVVEYxNi5jaGFyQXQocywgaSk7CisgICAgICAgICAgICBpZiAoc2V0LmNvbnRhaW5zKGNwKSkgY29udGludWU7CisgICAgICAgICAgICBpZiAob2tBbnl3YXkuY29udGFpbnMoY3ApKSBjb250aW51ZTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgKi8KKyAgICAKK30KKyAgClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3RyYW5zbGl0L3BhY2thZ2UuaHRtbCBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC90cmFuc2xpdC9wYWNrYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMzliNTYwYwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC90cmFuc2xpdC9wYWNrYWdlLmh0bWwKQEAgLTAsMCArMSwxNSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzwhLS0gIENvcHlyaWdodCAoQykgMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQKKyAgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorCisgICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC90cmFuc2xpdC9wYWNrYWdlLmh0bWwsdiAkCisgICRSZXZpc2lvbjogMS4xICQKKyAgJERhdGU6IDIwMDAvMDMvMTUgMjE6MzU6NTEgJAorLS0+Cis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSI+CitUcmFuc2xpdGVyYXRvciB0ZXN0cy4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvdXRpbC9Db21wYWN0QXJyYXlUZXN0LmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvdXRpbC9Db21wYWN0QXJyYXlUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmY5OTQ1YgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC91dGlsL0NvbXBhY3RBcnJheVRlc3QuamF2YQpAQCAtMCwwICsxLDE2NiBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICAgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3V0aWwvQ29tcGFjdEFycmF5VGVzdC5qYXZhLHYgJAorICogJERhdGU6IDIwMDIvMTIvMTggMDA6NTU6MzkgJAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0LnV0aWw7CisKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYudGVzdC5UZXN0Rm13azsKKworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuVXRpbGl0eTsKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLkNvbXBhY3RCeXRlQXJyYXk7CitpbXBvcnQgY29tLmlibS5pY3UudXRpbC5Db21wYWN0Q2hhckFycmF5OworCisvKioKKyAqIEBzaW5jZSByZWxlYXNlIDIuMgorICovCitwdWJsaWMgZmluYWwgY2xhc3MgQ29tcGFjdEFycmF5VGVzdCBleHRlbmRzIFRlc3RGbXdrIAoreyAKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uCisgICAgeworICAgICAgICBuZXcgQ29tcGFjdEFycmF5VGVzdCgpLnJ1bihhcmdzKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdEJ5dGVBcnJheUNvdmVyYWdlKCkgeworCUNvbXBhY3RCeXRlQXJyYXkgY2JhID0gbmV3IENvbXBhY3RCeXRlQXJyYXkoKTsKKwljYmEuc2V0RWxlbWVudEF0KChjaGFyKTB4NSwgKGJ5dGUpMHhkZik7CisJY2JhLnNldEVsZW1lbnRBdCgoY2hhcikweDEwNSwgKGJ5dGUpMHhkZik7CisJY2JhLnNldEVsZW1lbnRBdCgoY2hhcikweDIwNSwgKGJ5dGUpMHhkZik7CisJY2JhLnNldEVsZW1lbnRBdCgoY2hhcikweDMwNSwgKGJ5dGUpMHhkZik7CisJQ29tcGFjdEJ5dGVBcnJheSBjYmEyID0gbmV3IENvbXBhY3RCeXRlQXJyYXkoKGJ5dGUpMHhkZik7CisJaWYgKGNiYS5lcXVhbHMoY2JhMikpIHsKKwkgICAgZXJybG4oInVuZXF1YWwgYnl0ZSBhcnJheXMgY29tcGFyZSBlcXVhbCIpOworCX0KKwlDb21wYWN0Qnl0ZUFycmF5IGNiYTMgPSAoQ29tcGFjdEJ5dGVBcnJheSljYmEuY2xvbmUoKTsKKworCWxvZ2xuKCJlcXVhbHMgbnVsbDogIiArIGNiYS5lcXVhbHMobnVsbCkpOworCWxvZ2xuKCJlcXVhbHMgc2VsZjogIiArIGNiYS5lcXVhbHMoY2JhKSk7CisJbG9nbG4oImVxdWFscyBjbG9uZTogIiArIGNiYS5lcXVhbHMoY2JhMykpOworCWxvZ2xuKCJlcXVhbHMgYm9ndXM6ICIgKyBjYmEuZXF1YWxzKG5ldyBPYmplY3QoKSkpOworCWxvZ2xuKCJoYXNoOiAiICsgY2JhLmhhc2hDb2RlKCkpOworCisJY2JhLmNvbXBhY3QodHJ1ZSk7CisJY2JhLmNvbXBhY3QodHJ1ZSk7CisKKwljaGFyW10geGEgPSBjYmEuZ2V0SW5kZXhBcnJheSgpOworCWJ5dGVbXSB2YSA9IGNiYS5nZXRWYWx1ZUFycmF5KCk7CisJQ29tcGFjdEJ5dGVBcnJheSBjYmE0ID0gbmV3IENvbXBhY3RCeXRlQXJyYXkoeGEsIHZhKTsKKworCVN0cmluZyB4cyA9IFV0aWxpdHkuYXJyYXlUb1JMRVN0cmluZyh4YSk7CisJU3RyaW5nIHZzID0gVXRpbGl0eS5hcnJheVRvUkxFU3RyaW5nKHZhKTsKKwlDb21wYWN0Qnl0ZUFycmF5IGNiYTUgPSBuZXcgQ29tcGFjdEJ5dGVBcnJheSh4cywgdnMpOworCisJbG9nbG4oImVxdWFsczogIiArIGNiYTQuZXF1YWxzKGNiYTUpKTsKKwlsb2dsbigiZXF1YWxzOiAiICsgY2JhLmVxdWFscyhjYmE0KSk7CisgICAgCisgIAljYmE0LmNvbXBhY3QoZmFsc2UpOworCWxvZ2xuKCJlcXVhbHM6ICIgKyBjYmE0LmVxdWFscyhjYmE1KSk7CisKKwljYmE1LmNvbXBhY3QodHJ1ZSk7CisJbG9nbG4oImVxdWFsczogIiArIGNiYTQuZXF1YWxzKGNiYTUpKTsKKworCWNiYS5zZXRFbGVtZW50QXQoKGNoYXIpMHg0MDUsIChieXRlKTB4ZGYpOyAvLyBmb3JjZSBleHBhbmQKKwlsb2dsbigibW9kaWZpZWQgZXF1YWxzIGNsb25lOiAiICsgY2JhLmVxdWFscyhjYmEzKSk7CisKKwljYmEzLnNldEVsZW1lbnRBdCgoY2hhcikweDQwNSwgKGJ5dGUpMHhkZik7IC8vIGVxdWl2YWxlbnQgbW9kaWZpY2F0aW9uCisJbG9nbG4oIm1vZGlmaWVkIGVxdWFscyBtb2RpZmllZCBjbG9uZTogIiArIGNiYS5lcXVhbHMoY2JhMykpOworCisJY2JhMy5zZXRFbGVtZW50QXQoKGNoYXIpMHg0MDUsIChieXRlKTB4ZWUpOyAvLyBkaWZmZXJlbnQgbW9kaWZpY2F0aW9uCisJbG9nbG4oImRpZmZlcmVudCBtb2QgZXF1YWxzOiAiICsgY2JhLmVxdWFscyhjYmEzKSk7CisKKwljYmEuY29tcGFjdCgpOworCUNvbXBhY3RCeXRlQXJyYXkgY2JhNiA9IChDb21wYWN0Qnl0ZUFycmF5KWNiYS5jbG9uZSgpOworCWxvZ2xuKCJjbG9uZWQgY29tcGFjdCBlcXVhbHM6ICIgKyBjYmEuZXF1YWxzKGNiYTYpKTsKKworCWNiYTYuc2V0RWxlbWVudEF0KChjaGFyKTB4NDA1LCAoYnl0ZSkweGVlKTsKKwlsb2dsbigibW9kaWZpZWQgY2xvbmU6ICIgKyBjYmEzLmVxdWFscyhjYmE2KSk7CisKKwljYmE2LnNldEVsZW1lbnRBdCgoY2hhcikweDEwMCwgKGNoYXIpMHgxMDQsIChieXRlKTB4ZmUpOworCWZvciAoaW50IGkgPSAweDEwMDsgaSA8IDB4MTA1OyArK2kpIHsKKwkgICAgY2JhMy5zZXRFbGVtZW50QXQoKGNoYXIpaSwgKGJ5dGUpMHhmZSk7CisJfQorCWxvZ2xuKCJkb3VibGUgbW9kaWZpZWQ6ICIgKyBjYmEzLmVxdWFscyhjYmE2KSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdENoYXJBcnJheUNvdmVyYWdlKCkgeworCS8vIHYxLjggZmFpbHMgd2l0aCBleHRlbnNpdmUgY29tcGFjdGlvbiwgc28gc2V0IHRvIGZhbHNlCisJZmluYWwgYm9vbGVhbiBFWFRFTlNJVkUgPSBmYWxzZTsKKworCUNvbXBhY3RDaGFyQXJyYXkgY2NhID0gbmV3IENvbXBhY3RDaGFyQXJyYXkoKTsKKwljY2Euc2V0RWxlbWVudEF0KChjaGFyKTB4NSwgKGNoYXIpMHhkZik7CisJY2NhLnNldEVsZW1lbnRBdCgoY2hhcikweDEwNSwgKGNoYXIpMHhkZik7CisJY2NhLnNldEVsZW1lbnRBdCgoY2hhcikweDIwNSwgKGNoYXIpMHhkZik7CisJY2NhLnNldEVsZW1lbnRBdCgoY2hhcikweDMwNSwgKGNoYXIpMHhkZik7CisJQ29tcGFjdENoYXJBcnJheSBjY2EyID0gbmV3IENvbXBhY3RDaGFyQXJyYXkoKGNoYXIpMHhkZik7CisJaWYgKGNjYS5lcXVhbHMoY2NhMikpIHsKKwkgICAgZXJybG4oInVuZXF1YWwgY2hhciBhcnJheXMgY29tcGFyZSBlcXVhbCIpOworCX0KKwlDb21wYWN0Q2hhckFycmF5IGNjYTMgPSAoQ29tcGFjdENoYXJBcnJheSljY2EuY2xvbmUoKTsKKworCWxvZ2xuKCJlcXVhbHMgbnVsbDogIiArIGNjYS5lcXVhbHMobnVsbCkpOworCWxvZ2xuKCJlcXVhbHMgc2VsZjogIiArIGNjYS5lcXVhbHMoY2NhKSk7CisJbG9nbG4oImVxdWFscyBjbG9uZTogIiArIGNjYS5lcXVhbHMoY2NhMykpOworCWxvZ2xuKCJlcXVhbHMgYm9ndXM6ICIgKyBjY2EuZXF1YWxzKG5ldyBPYmplY3QoKSkpOworCWxvZ2xuKCJoYXNoOiAiICsgY2NhLmhhc2hDb2RlKCkpOworCisJY2NhLmNvbXBhY3QoRVhURU5TSVZFKTsKKwljY2EuY29tcGFjdChFWFRFTlNJVkUpOworCisJY2hhcltdIHhhID0gY2NhLmdldEluZGV4QXJyYXkoKTsKKwljaGFyW10gdmEgPSBjY2EuZ2V0VmFsdWVBcnJheSgpOworCUNvbXBhY3RDaGFyQXJyYXkgY2NhNCA9IG5ldyBDb21wYWN0Q2hhckFycmF5KHhhLCB2YSk7CisKKwlTdHJpbmcgeHMgPSBVdGlsaXR5LmFycmF5VG9STEVTdHJpbmcoeGEpOworCVN0cmluZyB2cyA9IFV0aWxpdHkuYXJyYXlUb1JMRVN0cmluZyh2YSk7CisJQ29tcGFjdENoYXJBcnJheSBjY2E1ID0gbmV3IENvbXBhY3RDaGFyQXJyYXkoeHMsIHZzKTsKKworCWxvZ2xuKCJlcXVhbHM6ICIgKyBjY2E0LmVxdWFscyhjY2E1KSk7CisJbG9nbG4oImVxdWFsczogIiArIGNjYS5lcXVhbHMoY2NhNCkpOworCisJY2NhNC5jb21wYWN0KGZhbHNlKTsKKwlsb2dsbigiZXF1YWxzOiAiICsgY2NhNC5lcXVhbHMoY2NhNSkpOworCisJY2NhNS5jb21wYWN0KEVYVEVOU0lWRSk7CisJbG9nbG4oImVxdWFsczogIiArIGNjYTQuZXF1YWxzKGNjYTUpKTsKKworCWNjYS5zZXRFbGVtZW50QXQoKGNoYXIpMHg0MDUsIChjaGFyKTB4ZGYpOyAvLyBmb3JjZSBleHBhbmQKKwlsb2dsbigibW9kaWZpZWQgZXF1YWxzIGNsb25lOiAiICsgY2NhLmVxdWFscyhjY2EzKSk7CisKKwljY2EzLnNldEVsZW1lbnRBdCgoY2hhcikweDQwNSwgKGNoYXIpMHhkZik7IC8vIGVxdWl2YWxlbnQgbW9kaWZpY2F0aW9uCisJbG9nbG4oIm1vZGlmaWVkIGVxdWFscyBtb2RpZmllZCBjbG9uZTogIiArIGNjYS5lcXVhbHMoY2NhMykpOworCisJY2NhMy5zZXRFbGVtZW50QXQoKGNoYXIpMHg0MDUsIChjaGFyKTB4ZWUpOyAvLyBkaWZmZXJlbnQgbW9kaWZpY2F0aW9uCisJbG9nbG4oImRpZmZlcmVudCBtb2QgZXF1YWxzOiAiICsgY2NhLmVxdWFscyhjY2EzKSk7CisgICAgCisgICAgLy8gYWZ0ZXIgc2V0RWxlbWVudEF0IGlzQ29tcGFjdCBpcyBzZXQgdG8gZmFsc2UKKyAgICBjY2EzLmNvbXBhY3QodHJ1ZSk7CisgICAgbG9nbG4oImRpZmZlcmVudCBtb2QgZXF1YWxzOiAiICsgY2NhLmVxdWFscyhjY2EzKSk7CisgICAgCisgICAgY2NhMy5zZXRFbGVtZW50QXQoKGNoYXIpMHg0MDUsIChjaGFyKTB4ZWUpOyAvLyBkaWZmZXJlbnQgbW9kaWZpY2F0aW9uCisgICAgbG9nbG4oImRpZmZlcmVudCBtb2QgZXF1YWxzOiAiICsgY2NhLmVxdWFscyhjY2EzKSk7CisJICAgIC8vIGFmdGVyIHNldEVsZW1lbnRBdCBpc0NvbXBhY3QgaXMgc2V0IHRvIGZhbHNlCisgICAgY2NhMy5jb21wYWN0KCk7CisgICAgbG9nbG4oImRpZmZlcmVudCBtb2QgZXF1YWxzOiAiICsgY2NhLmVxdWFscyhjY2EzKSk7CisgICAgCisgICAgLy8gdjEuOCBmYWlscyB3aXRoIGV4dGVuc2l2ZSBjb21wYWN0aW9uLCBhbmQgZGVmYXVsdHMgZXh0ZW5zaXZlLCBzbyBkb24ndCBjb21wYWN0CisJLy8gY2NhLmNvbXBhY3QoKTsKKwlDb21wYWN0Q2hhckFycmF5IGNjYTYgPSAoQ29tcGFjdENoYXJBcnJheSljY2EuY2xvbmUoKTsKKwlsb2dsbigiY2xvbmVkIGNvbXBhY3QgZXF1YWxzOiAiICsgY2NhLmVxdWFscyhjY2E2KSk7CisKKwljY2E2LnNldEVsZW1lbnRBdCgoY2hhcikweDQwNSwgKGNoYXIpMHhlZSk7CisJbG9nbG4oIm1vZGlmaWVkIGNsb25lOiAiICsgY2NhMy5lcXVhbHMoY2NhNikpOworCisJY2NhNi5zZXRFbGVtZW50QXQoKGNoYXIpMHgxMDAsIChjaGFyKTB4MTA0LCAoY2hhcikweGZlKTsKKwlmb3IgKGludCBpID0gMHgxMDA7IGkgPCAweDEwNTsgKytpKSB7CisJICAgIGNjYTMuc2V0RWxlbWVudEF0KChjaGFyKWksIChjaGFyKTB4ZmUpOworCX0KKwlsb2dsbigiZG91YmxlIG1vZGlmaWVkOiAiICsgY2NhMy5lcXVhbHMoY2NhNikpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC91dGlsL0N1cnJlbmN5VGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3V0aWwvQ3VycmVuY3lUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjY3ZjYyYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC91dGlsL0N1cnJlbmN5VGVzdC5qYXZhCkBAIC0wLDAgKzEsNDggQEAKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIENvcHlyaWdodCAoYykgMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworKiBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogQXV0aG9yOiBBbGFuIExpdQorKiBDcmVhdGVkOiBEZWNlbWJlciAxOCAyMDAyCisqIFNpbmNlOiBJQ1UgMi40CisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudGVzdC51dGlsOworaW1wb3J0IGNvbS5pYm0uaWN1LmRldi50ZXN0LlRlc3RGbXdrOworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuKjsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworCisvKioKKyAqIEB0ZXN0CisgKiBAc3VtbWFyeSBHZW5lcmFsIHRlc3Qgb2YgQ3VycmVuY3kKKyAqLworcHVibGljIGNsYXNzIEN1cnJlbmN5VGVzdCBleHRlbmRzIFRlc3RGbXdrIHsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBuZXcgQ3VycmVuY3lUZXN0KCkucnVuKGFyZ3MpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3Qgb2YgYmFzaWMgQVBJLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RBUEkoKSB7CisgICAgICAgIEN1cnJlbmN5IHVzZCA9IEN1cnJlbmN5LmdldEluc3RhbmNlKCJVU0QiKTsKKyAgICAgICAgaW50IGhhc2ggPSB1c2QuaGFzaENvZGUoKTsKKyAgICAgICAgQ3VycmVuY3kganB5ID0gQ3VycmVuY3kuZ2V0SW5zdGFuY2UoIkpQWSIpOworICAgICAgICBpZiAodXNkLmVxdWFscyhqcHkpKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogVVNEID09IEpQWSIpOworICAgICAgICB9CisgICAgICAgIGlmICh1c2QuZXF1YWxzKCJhYmMiKSkgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IFVTRCA9PSAoU3RyaW5nKSIpOworICAgICAgICB9CisgICAgICAgIGlmICh1c2QuZXF1YWxzKG51bGwpKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogVVNEID09IChudWxsKSIpOworICAgICAgICB9CisgICAgICAgIGlmICghdXNkLmVxdWFscyh1c2QpKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogVVNEICE9IFVTRCIpOworICAgICAgICB9CisKKyAgICAgICAgTG9jYWxlW10gYXZhaWwgPSBDdXJyZW5jeS5nZXRBdmFpbGFibGVMb2NhbGVzKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3V0aWwvSUNVQmluYXJ5VGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3V0aWwvSUNVQmluYXJ5VGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmMjZmM2UKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvdXRpbC9JQ1VCaW5hcnlUZXN0LmphdmEKQEAgLTAsMCArMSwxMTkgQEAKKy8qKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvdXRpbC9JQ1VCaW5hcnlUZXN0LmphdmEsdiAkIAorKiAkRGF0ZTogMjAwMi8xMC8xMCAwNToxNjoxMyAkIAorKiAkUmV2aXNpb246IDEuMSAkCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0LnV0aWw7CisKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYudGVzdC5UZXN0Rm13azsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLklDVUJpbmFyeTsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJlYW07CisKKy8qKgorKiBUZXN0aW5nIGNsYXNzIGZvciBUcmllLiBUZXN0cyBoZXJlIHdpbGwgYmUgc2ltcGxlLCBzaW5jZSBib3RoIENoYXJUcmllIGFuZCAKKyogSW50VHJpZSBhcmUgdmVyeSBzaW1pbGFyIGFuZCBhcmUgaGVhdmlseSB1c2VkIGluIG90aGVyIHBhcnRzIG9mIElDVTRKLgorKiBDb2RlcyB1c2luZyBUcmllcyBhcmUgZXhwZWN0ZWQgdG8gaGF2ZSBkZXRhaWxlZCB0ZXN0cy4KKyogQGF1dGhvciBTeW4gV2VlIFF1ZWsKKyogQHNpbmNlIHJlbGVhc2UgMi4xIEphbiAwMSAyMDAyCisqLworcHVibGljIGZpbmFsIGNsYXNzIElDVUJpbmFyeVRlc3QgZXh0ZW5kcyBUZXN0Rm13ayAKK3sgCisgICAgLy8gY29uc3RydWN0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIAorICAgIC8qKgorICAgICogQ29uc3RydWN0b3IKKyAgICAqLworICAgIHB1YmxpYyBJQ1VCaW5hcnlUZXN0KCkKKyAgICB7CisgICAgfQorICAgICAgCisgICAgLy8gcHVibGljIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgYXJnW10pIAorICAgIHsKKyAgICAgICAgSUNVQmluYXJ5VGVzdCB0ZXN0ID0gbmV3IElDVUJpbmFyeVRlc3QoKTsKKyAgICAgICAgdHJ5IHsKKwkgICAgICAgIHRlc3QucnVuKGFyZyk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgIAl0ZXN0LmVycmxuKCJFcnJvciB0ZXN0aW5nIGljdWJpbmFyeXRlc3QiKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBUZXN0aW5nIHRoZSBjb25zdHJ1Y3RvcnMgb2YgdGhlIFRyaWVzCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdFJlYWRIZWFkZXIoKSAKKyAgICB7CisgICAgICAgIGJ5dGUgZm9ybWF0aWRbXSA9IHsxLCAyLCAzLCA0fTsKKyAgICAJYnl0ZSBhcnJheVtdID0geworICAgICAgICAgICAgLy8gaGVhZGVyIHNpemUKKyAgICAgICAgICAgIDAsIDB4MTgsIAorICAgICAgICAgICAgLy8gbWFnaWMgbnVtYmVycworICAgICAgICAgICAgKGJ5dGUpMHhkYSwgMHgyNywgCisgICAgICAgICAgICAvLyBzaXplCisgICAgICAgICAgICAwLCAwLCAKKyAgICAgICAgICAgIC8vIHJlc2VydmVkIHdvcmQKKyAgICAgICAgICAgIDAsIDAsIAorICAgICAgICAgICAgLy8gYmlnZW5kaWFuCisgICAgICAgICAgICAxLCAKKyAgICAgICAgICAgIC8vIGNoYXJzZXQgCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgLy8gY2hhcnNpemUKKyAgICAgICAgICAgIDIsIAorICAgICAgICAgICAgLy8gcmVzZXJ2ZWQgYnl0ZQorICAgICAgICAgICAgMCwgCisgICAgICAgICAgICAvLyBkYXRhIGZvcm1hdCBpZAorICAgICAgICAgICAgMSwgMiwgMywgNCwKKyAgICAgICAgICAgIC8vIGRhdGFWZXJzaW9uCisgICAgICAgICAgICAxLCAyLCAzLCA0LAorICAgICAgICAgICAgLy8gdW5pY29kZVZlcnNpb24KKyAgICAgICAgICAgIDMsIDIsIDAsIDAKKyAgICAgICAgfTsKKyAgICAgICAgQnl0ZUFycmF5SW5wdXRTdHJlYW0gaW5wdXRzdHJlYW0gPSBuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oYXJyYXkpOworICAgICAgICBJQ1VCaW5hcnkuQXV0aGVudGljYXRlIGF1dGhlbnRpY2F0ZSAKKyAgICAgICAgICAgICAgICA9IG5ldyBJQ1VCaW5hcnkuQXV0aGVudGljYXRlKCkgeworICAgICAgICAgICAgICAgICAgICBwdWJsaWMgYm9vbGVhbiBpc0RhdGFWZXJzaW9uQWNjZXB0YWJsZShieXRlIHZlcnNpb25bXSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZlcnNpb25bMF0gPT0gMTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAvLyBjaGVjayBmdWxsIGRhdGEgdmVyc2lvbgorICAgICAgICB0cnkgeworICAgICAgICAgICAgSUNVQmluYXJ5LnJlYWRIZWFkZXIoaW5wdXRzdHJlYW0sIGZvcm1hdGlkLCBhdXRoZW50aWNhdGUpOworICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiRmFpbGVkOiBMZW5pZW50IGF1dGhlbnRpY2F0ZSBvYmplY3Qgc2hvdWxkIHBhc3MgSUNVQmluYXJ5LnJlYWRIZWFkZXIiKTsKKyAgICAgICAgfQorICAgICAgICAvLyBubyByZXN0cmljdGlvbiB0byB0aGUgZGF0YSB2ZXJzaW9uCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBpbnB1dHN0cmVhbS5yZXNldCgpOworICAgICAgICAJSUNVQmluYXJ5LnJlYWRIZWFkZXIoaW5wdXRzdHJlYW0sIGZvcm1hdGlkLCBudWxsKTsKKyAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkZhaWxlZDogTnVsbCBhdXRoZW50aWNhdGUgb2JqZWN0IHNob3VsZCBwYXNzIElDVUJpbmFyeS5yZWFkSGVhZGVyIik7CisgICAgICAgIH0KKyAgICAgICAgLy8gbGVuaWVudCBkYXRhIHZlcnNpb24KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGlucHV0c3RyZWFtLnJlc2V0KCk7CisgICAgICAgIAlJQ1VCaW5hcnkucmVhZEhlYWRlcihpbnB1dHN0cmVhbSwgZm9ybWF0aWQsIGF1dGhlbnRpY2F0ZSk7CisgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJGYWlsZWQ6IExlbmllbnQgYXV0aGVudGljYXRlIG9iamVjdCBzaG91bGQgcGFzcyBJQ1VCaW5hcnkucmVhZEhlYWRlciIpOworICAgICAgICB9CisgICAgICAgIC8vIGNoYW5naW5nIHRoZSB2ZXJzaW9uIHRvIGFuIGluY29ycmVjdCBvbmUsIGV4cGVjdGluZyBmYWlsdXJlCisgICAgICAgIGFycmF5WzE2XSA9IDI7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBpbnB1dHN0cmVhbS5yZXNldCgpOworICAgICAgICAgICAgSUNVQmluYXJ5LnJlYWRIZWFkZXIoaW5wdXRzdHJlYW0sIGZvcm1hdGlkLCBhdXRoZW50aWNhdGUpOworICAgICAgICAgICAgZXJybG4oIkZhaWxlZDogSW52YWxpZCB2ZXJzaW9uIG51bWJlciBzaG91bGQgbm90IHBhc3MgYXV0aGVudGljYXRlIG9iamVjdCIpOworICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7CisgICAgICAgIH0KKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC91dGlsL0lDVUxpc3RSZXNvdXJjZUJ1bmRsZVRlc3QuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC91dGlsL0lDVUxpc3RSZXNvdXJjZUJ1bmRsZVRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjFkNjBkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3V0aWwvSUNVTGlzdFJlc291cmNlQnVuZGxlVGVzdC5qYXZhCkBAIC0wLDAgKzEsNzIgQEAKKy8qKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMS0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvdXRpbC9JQ1VMaXN0UmVzb3VyY2VCdW5kbGVUZXN0LmphdmEsdiAkCisgKiAkRGF0ZTogMjAwMi8wOC8xMyAyMjoxMDoyMCAkCisgKiAkUmV2aXNpb246IDEuNCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudGVzdC51dGlsOworCitpbXBvcnQgamF2YS51dGlsLlJlc291cmNlQnVuZGxlOworCitpbXBvcnQgY29tLmlibS5pY3UuZGV2LnRlc3QuVGVzdEZtd2s7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5JQ1VMb2NhbGVEYXRhOworCisKK3B1YmxpYyBmaW5hbCBjbGFzcyBJQ1VMaXN0UmVzb3VyY2VCdW5kbGVUZXN0IGV4dGVuZHMgVGVzdEZtd2sgCit7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIGFyZ3NbXSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCUlDVUxpc3RSZXNvdXJjZUJ1bmRsZVRlc3QgdGVzdCA9IG5ldyBJQ1VMaXN0UmVzb3VyY2VCdW5kbGVUZXN0KCk7CisJICAgIHRlc3QucnVuKGFyZ3MpOworCisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdFJlZmVyZW5jZXMoKSB7CisJCVJlc291cmNlQnVuZGxlIHJiID0gSUNVTG9jYWxlRGF0YS5nZXRMb2NhbGVFbGVtZW50cygidGgiKTsKKwkJbG9nbG4oImdvdCByYjoiICsgcmIpOworCQorCQlieXRlW10gYmluYXJ5RGF0YSA9IG51bGw7Ly8oYnl0ZVtdKXJiLmdldE9iamVjdCgiJSVDb2xsYXRpb25CaW4iKTsKKwkJT2JqZWN0IGNvbEVsZW0gPSByYi5nZXRPYmplY3QoIkNvbGxhdGlvbkVsZW1lbnRzIik7CisgICAgICAgIGlmKGNvbEVsZW0gaW5zdGFuY2VvZiBPYmplY3RbXVtdKXsKKyAgICAgICAgICAgIE9iamVjdFtdW10gY29sRWxlbUFyciA9IChPYmplY3RbXVtdKWNvbEVsZW07CisgICAgICAgICAgICBpZigoKFN0cmluZyljb2xFbGVtQXJyWzBdWzBdKS5lcXVhbHMoIiUlQ29sbGF0aW9uQmluIikpeyAgIAorCSAgICAgICAgICAgYmluYXJ5RGF0YSA9IChieXRlW10pIGNvbEVsZW1BcnJbMF1bMV07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbG9nbG4oImdvdCBiaW5hcnlEYXRhOiAiICsgYmluYXJ5RGF0YSArICIgbGVuZ3RoOiAiICsgKGJpbmFyeURhdGEgPT0gbnVsbCA/IDAgOiBiaW5hcnlEYXRhLmxlbmd0aCkpOworCQlPYmplY3RbXSBzdHJpbmdBcnJheURhdGEgPSAoT2JqZWN0W10pcmIuZ2V0T2JqZWN0KCJDb2xsYXRpb25FbGVtZW50cyIpOworCQkvL1N0cmluZ1tdIGNvbGxhdGlvbkRhdGEgPSBuZXcgU3RyaW5nW10geworCQkgLy8gICAoU3RyaW5nKXN0cmluZ0FycmF5RGF0YVswXSwKKwkJIC8vICAgKFN0cmluZylzdHJpbmdBcnJheURhdGFbMF0KKwkJLy99OworCQlsb2dsbigiZ290IHN0cmluZ0RhdGE6ICIgKyBzdHJpbmdBcnJheURhdGEgKyAiIGxlbmd0aDogIiArIHN0cmluZ0FycmF5RGF0YS5sZW5ndGgpOworCQlsb2dsbigiZ290IHN0cmluZ0RhdGFFbGVtZW50OiAiICsgc3RyaW5nQXJyYXlEYXRhWzBdICsgIiBsZW5ndGg6ICIgKyBzdHJpbmdBcnJheURhdGEubGVuZ3RoKTsKKwkJLy9TeXN0ZW0ub3V0LnByaW50bG4oImdvdCBzZGVlOiAiICsgY29sbGF0aW9uRGF0YVswXSk7CisJCS8vCVN5c3RlbS5vdXQucHJpbnRsbigiY2hhciBkYXRhIGxlbmd0aDogIiArIHN0cmluZ0FycmF5RGF0YS5sZW5ndGgoKSk7CisgICAgfQorICAgIHB1YmxpYyB2b2lkIFRlc3RBbGlhc2VzKCl7CisgICAgICAgIFJlc291cmNlQnVuZGxlIHJiID0gSUNVTG9jYWxlRGF0YS5nZXRSZXNvdXJjZUJ1bmRsZSgiY29tLmlibS5pY3UuZGV2LmRhdGEiLCJUZXN0RGF0YUVsZW1lbnRzIiwidGVzdGFsaWFzZXMiKTsKKyAgICAgICAgT2JqZWN0IG8gPSByYi5nZXRPYmplY3QoIkNvbGxhdGlvbkVsZW1lbnRzIik7CisgICAgICAgIE9iamVjdCBvMSA9IHJiLmdldE9iamVjdCgiem9uZVRlc3RzIik7CisgICAgICAgIAorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0Q2lyY3VsYXJBbGlhc2VzKCl7CisgICAgICAgIHRyeXsKKwkgICAgICAgIFJlc291cmNlQnVuZGxlIHJiID0gSUNVTG9jYWxlRGF0YS5nZXRSZXNvdXJjZUJ1bmRsZSgiY29tLmlibS5pY3UuZGV2LmRhdGEiLCJUZXN0RGF0YUVsZW1lbnRzIiwidGVzdGNpcmN1bGFyYWxpYXMiKTsKKwkgICAgICAgIE9iamVjdCBvID0gcmIuZ2V0T2JqZWN0KCJhYWEiKTsKKyAgICAgICAgfWNhdGNoKGphdmEudXRpbC5NaXNzaW5nUmVzb3VyY2VFeGNlcHRpb24gZSl7CisgICAgICAgICAgICBpZihlLnRvU3RyaW5nKCkuaW5kZXhPZigiaXJjdWxhciIpPT0tMSl7CisgICAgICAgICAgICAgICAgZXJybG4oIkRpZCBub3QgZ2V0IHRoZSBleHBlY3RlZCBFeGNlcHRpb24gZm9yIGNpcmN1bGFyIGFsaWFzZXMiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBlcnJsbigiRGlkIG5vdCBnZXQgdGhlIGV4cGVjdGVkIEV4Y2VwdGlvbiBmb3IgY2lyY3VsYXIgYWxpYXNlcyIpOworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3V0aWwvSUNVU2VydmljZVRlc3QuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC91dGlsL0lDVVNlcnZpY2VUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGIyMmNkMQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC91dGlsL0lDVVNlcnZpY2VUZXN0LmphdmEKQEAgLTAsMCArMSw5ODcgQEAKKy8qKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMS0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvdXRpbC9JQ1VTZXJ2aWNlVGVzdC5qYXZhLHYgJAorICogJERhdGU6IDIwMDIvMTIvMTIgMTg6MDI6MDkgJAorICogJFJldmlzaW9uOiAxLjEwICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50ZXN0LnV0aWw7CisKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYudGVzdC5UZXN0Rm13azsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLklDVU5vdGlmaWVyOworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuSUNVUldMb2NrOworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuSUNVU2VydmljZTsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLklDVVNlcnZpY2UuRmFjdG9yeTsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLklDVVNlcnZpY2UuS2V5OworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuSUNVU2VydmljZS5TZXJ2aWNlTGlzdGVuZXI7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5JQ1VTZXJ2aWNlLlNpbXBsZUZhY3Rvcnk7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5Mb2NhbGVVdGlsaXR5OworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuSUNVTG9jYWxlRGF0YTsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLklDVUxvY2FsZVNlcnZpY2U7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5JQ1VMb2NhbGVTZXJ2aWNlLkxvY2FsZUtleTsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLklDVUxvY2FsZVNlcnZpY2UuTG9jYWxlS2V5RmFjdG9yeTsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLklDVUxvY2FsZVNlcnZpY2UuSUNVUmVzb3VyY2VCdW5kbGVGYWN0b3J5OworCitpbXBvcnQgamF2YS51dGlsLkFycmF5czsKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CitpbXBvcnQgamF2YS51dGlsLkNvbXBhcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLkV2ZW50TGlzdGVuZXI7CitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7CitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CitpbXBvcnQgamF2YS51dGlsLk1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwLkVudHJ5OworaW1wb3J0IGphdmEudXRpbC5SZXNvdXJjZUJ1bmRsZTsKK2ltcG9ydCBqYXZhLnV0aWwuU2V0OworaW1wb3J0IGphdmEudXRpbC5Tb3J0ZWRNYXA7CitpbXBvcnQgamF2YS51dGlsLlRyZWVTZXQ7CisKK3B1YmxpYyBjbGFzcyBJQ1VTZXJ2aWNlVGVzdCBleHRlbmRzIFRlc3RGbXdrCit7ICAgIAorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworCUlDVVNlcnZpY2VUZXN0IHRlc3QgPSBuZXcgSUNVU2VydmljZVRlc3QoKTsKKwl0ZXN0LnJ1bihhcmdzKTsKKyAgICB9CisKKyAgICBwcml2YXRlIFN0cmluZyBscm1zZyhTdHJpbmcgbWVzc2FnZSwgT2JqZWN0IGxocywgT2JqZWN0IHJocykgeworCXJldHVybiBtZXNzYWdlICsgIiBsaHM6ICIgKyBsaHMgKyAiIHJoczogIiArIHJoczsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBjb25maXJtQm9vbGVhbihTdHJpbmcgbWVzc2FnZSwgYm9vbGVhbiB2YWwpIHsKKwlsb2dsbihtZXNzYWdlLCB2YWwsICF2YWwpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGNvbmZpcm1FcXVhbChTdHJpbmcgbWVzc2FnZSwgT2JqZWN0IGxocywgT2JqZWN0IHJocykgeworCWxvZ2xuKGxybXNnKG1lc3NhZ2UsIGxocywgcmhzKSwgbGhzID09IG51bGwgPyByaHMgPT0gbnVsbCA6IGxocy5lcXVhbHMocmhzKSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgY29uZmlybUlkZW50aWNhbChTdHJpbmcgbWVzc2FnZSwgT2JqZWN0IGxocywgT2JqZWN0IHJocykgeworCWxvZ2xuKGxybXNnKG1lc3NhZ2UsIGxocywgcmhzKSwgbGhzID09IHJocyk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgY29uZmlybUlkZW50aWNhbChTdHJpbmcgbWVzc2FnZSwgaW50IGxocywgaW50IHJocykgeworCWxvZ2xuKG1lc3NhZ2UgKyAiIGxoczogIiArIGxocyArICIgcmhzOiAiICsgcmhzLCBsaHMgPT0gcmhzKTsKKyAgICB9CisKKyAgICAvLyB1c2UgbG9jYWxlIGtleXMKKyAgICBzdGF0aWMgZmluYWwgY2xhc3MgVGVzdFNlcnZpY2UgZXh0ZW5kcyBJQ1VTZXJ2aWNlIHsKKyAgICAgICAgcHVibGljIFRlc3RTZXJ2aWNlKCkgeworICAgICAgICAgICAgc3VwZXIoIlRlc3QgU2VydmljZSIpOworICAgICAgICB9CisKKwlwdWJsaWMgS2V5IGNyZWF0ZUtleShTdHJpbmcgaWQpIHsKKwkgICAgcmV0dXJuIExvY2FsZUtleS5jcmVhdGVXaXRoQ2Fub25pY2FsRmFsbGJhY2soaWQsIG51bGwpOyAvLyBubyBmYWxsYmFjayBsb2NhbGUKKwl9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdEFQSSgpIHsKKwkvLyBjcmVhdGUgYSBzZXJ2aWNlIHVzaW5nIGxvY2FsZSBrZXlzLAorCUlDVVNlcnZpY2Ugc2VydmljZSA9IG5ldyBUZXN0U2VydmljZSgpOworCisgICAgICAgIGxvZ2xuKCJzZXJ2aWNlIG5hbWU6IiArIHNlcnZpY2UuZ2V0TmFtZSgpKTsKKworCS8vIHJlZ2lzdGVyIGFuIG9iamVjdCB3aXRoIG9uZSBsb2NhbGUsIAorCS8vIHNlYXJjaCBmb3IgYW4gb2JqZWN0IHdpdGggYSBtb3JlIHNwZWNpZmljIGxvY2FsZQorCS8vIHNob3VsZCByZXR1cm4gdGhlIG9yaWdpbmFsIG9iamVjdAorCUludGVnZXIgc2luZ2xldG9uMCA9IG5ldyBJbnRlZ2VyKDApOworCXNlcnZpY2UucmVnaXN0ZXJPYmplY3Qoc2luZ2xldG9uMCwgImVuX1VTIik7CisgCU9iamVjdCByZXN1bHQgPSBzZXJ2aWNlLmdldCgiZW5fVVNfRk9PIik7CisJY29uZmlybUlkZW50aWNhbCgiMSkgZW5fVVNfRk9PIC0+IGVuX1VTIiwgcmVzdWx0LCBzaW5nbGV0b24wKTsKKworCS8vIHJlZ2lzdGVyIGEgbmV3IG9iamVjdCB3aXRoIHRoZSBtb3JlIHNwZWNpZmljIGxvY2FsZQorCS8vIHNlYXJjaCBmb3IgYW4gb2JqZWN0IHdpdGggdGhhdCBsb2NhbGUKKwkvLyBzaG91bGQgcmV0dXJuIHRoZSBuZXcgb2JqZWN0CisJSW50ZWdlciBzaW5nbGV0b24xID0gbmV3IEludGVnZXIoMSk7CisJc2VydmljZS5yZWdpc3Rlck9iamVjdChzaW5nbGV0b24xLCAiZW5fVVNfRk9PIik7CisJcmVzdWx0ID0gc2VydmljZS5nZXQoImVuX1VTX0ZPTyIpOworCWNvbmZpcm1JZGVudGljYWwoIjIpIGVuX1VTX0ZPTyAtPiBlbl9VU19GT08iLCByZXN1bHQsIHNpbmdsZXRvbjEpOworCisJLy8gc2VhcmNoIGZvciBhbiBvYmplY3QgdGhhdCBmYWxscyBiYWNrIHRvIHRoZSBmaXJzdCByZWdpc3RlcmVkIGxvY2FsZQorCXJlc3VsdCA9IHNlcnZpY2UuZ2V0KCJlbl9VU19CQVIiKTsKKwljb25maXJtSWRlbnRpY2FsKCIzKSBlbl9VU19CQVIgLT4gZW5fVVMiLCByZXN1bHQsIHNpbmdsZXRvbjApOworCisJLy8gZ2V0IGEgbGlzdCBvZiB0aGUgZmFjdG9yaWVzLCBzaG91bGQgYmUgdHdvCisJTGlzdCBmYWN0b3JpZXMgPSBzZXJ2aWNlLmZhY3RvcmllcygpOworCWNvbmZpcm1JZGVudGljYWwoIjQpIGZhY3Rvcnkgc2l6ZSIsIGZhY3Rvcmllcy5zaXplKCksIDIpOworCisJLy8gcmVnaXN0ZXIgYSBuZXcgb2JqZWN0IHdpdGggeWV0IGFub3RoZXIgbG9jYWxlCisJLy8gb3JpZ2luYWwgZmFjdG9yeSBsaXN0IGlzIHVuY2hhbmdlZAorCUludGVnZXIgc2luZ2xldG9uMiA9IG5ldyBJbnRlZ2VyKDIpOworCXNlcnZpY2UucmVnaXN0ZXJPYmplY3Qoc2luZ2xldG9uMiwgImVuIik7CisJY29uZmlybUlkZW50aWNhbCgiNSkgZmFjdG9yeSBzaXplIiwgZmFjdG9yaWVzLnNpemUoKSwgMik7CisKKwkvLyBzZWFyY2ggZm9yIGFuIG9iamVjdCB3aXRoIHRoZSBuZXcgbG9jYWxlCisJLy8gc3RhY2sgb2YgZmFjdG9yaWVzIGlzIG5vdyBlbiwgZW5fVVNfRk9PLCBlbl9VUworCS8vIHNlYXJjaCBmb3IgZW5fVVMgc2hvdWxkIHN0aWxsIGZpbmQgZW5fVVMgb2JqZWN0CisJcmVzdWx0ID0gc2VydmljZS5nZXQoImVuX1VTX0JBUiIpOworCWNvbmZpcm1JZGVudGljYWwoIjYpIGVuX1VTX0JBUiAtPiBlbl9VUyIsIHJlc3VsdCwgc2luZ2xldG9uMCk7CisKKwkvLyByZWdpc3RlciBhIG5ldyBvYmplY3Qgd2l0aCBhbiBvbGQgaWQsIHNob3VsZCBoaWRlIGVhcmxpZXIgZmFjdG9yeSB1c2luZyB0aGlzIGlkLCBidXQgbGVhdmUgaXQgdGhlcmUKKwlJbnRlZ2VyIHNpbmdsZXRvbjMgPSBuZXcgSW50ZWdlcigzKTsKKwlzZXJ2aWNlLnJlZ2lzdGVyT2JqZWN0KHNpbmdsZXRvbjMsICJlbl9VUyIpOworCWZhY3RvcmllcyA9IHNlcnZpY2UuZmFjdG9yaWVzKCk7CisJY29uZmlybUlkZW50aWNhbCgiOSkgZmFjdG9yeSBzaXplIiwgZmFjdG9yaWVzLnNpemUoKSwgNCk7CisKKwkvLyBzaG91bGQgZ2V0IGRhdGEgZnJvbSB0aGF0IG5ldyBmYWN0b3J5CisJcmVzdWx0ID0gc2VydmljZS5nZXQoImVuX1VTX0JBUiIpOworCWNvbmZpcm1JZGVudGljYWwoIjEwKSBlbl9VU19CQVIgLT4gKDMpIiwgcmVzdWx0LCBzaW5nbGV0b24zKTsKKworCS8vIHJlbW92ZSBuZXcgZmFjdG9yeQorCS8vIHNob3VsZCBoYXZlIGZld2VyIGZhY3RvcmllcyBhZ2FpbgorCXNlcnZpY2UudW5yZWdpc3RlckZhY3RvcnkoKEZhY3RvcnkpZmFjdG9yaWVzLmdldCgwKSk7CisJZmFjdG9yaWVzID0gc2VydmljZS5mYWN0b3JpZXMoKTsKKwljb25maXJtSWRlbnRpY2FsKCIxMSkgZmFjdG9yeSBzaXplIiwgZmFjdG9yaWVzLnNpemUoKSwgMyk7CisKKwkvLyBzaG91bGQgZ2V0IG9yaWdpbmFsIGRhdGEgYWdhaW4gYWZ0ZXIgcmVtb3ZlIGZhY3RvcnkKKwlyZXN1bHQgPSBzZXJ2aWNlLmdldCgiZW5fVVNfQkFSIik7CisJY29uZmlybUlkZW50aWNhbCgiMTIpIGVuX1VTX0JBUiAtPiAwIiwgcmVzdWx0LCBzaW5nbGV0b24wKTsKKworCS8vIHNob3VsZG4ndCBmaW5kIHVucmVnaXN0ZXJlZCBpZHMKKwlyZXN1bHQgPSBzZXJ2aWNlLmdldCgiZm9vIik7CisJY29uZmlybUlkZW50aWNhbCgiMTMpIGZvbyAtPiBudWxsIiwgcmVzdWx0LCBudWxsKTsKKworCS8vIHNob3VsZCBmaW5kIG5vbi1jYW5vbmljYWwgc3RyaW5ncworCVN0cmluZ1tdIHJlc3VsdElEID0gbmV3IFN0cmluZ1sxXTsKKwlyZXN1bHQgPSBzZXJ2aWNlLmdldCgiRU5fdXNfZk9vIiwgcmVzdWx0SUQpOworCWNvbmZpcm1FcXVhbCgiMTQpIGZpbmQgbm9uLWNhbm9uaWNhbCIsIHJlc3VsdElEWzBdLCAiZW5fVVNfRk9PIik7CisKKwkvLyBzaG91bGQgYmUgYWJsZSB0byByZWdpc3RlciBub24tY2Fub25pY2FsIHN0cmluZ3MgYW5kIGdldCB0aGVtIGNhbm9uaWNhbGl6ZWQKKwlzZXJ2aWNlLnJlZ2lzdGVyT2JqZWN0KHNpbmdsZXRvbjMsICJlTl9jYV9kVWRlIik7CisJcmVzdWx0ID0gc2VydmljZS5nZXQoIkVuX0NhX0R1RGUiLCByZXN1bHRJRCk7CisJY29uZmlybUVxdWFsKCIxNSkgcmVnaXN0ZXIgbm9uLWNhbm9uaWNhbCIsIHJlc3VsdElEWzBdLCAiZW5fQ0FfRFVERSIpOworCisJLy8gc2hvdWxkIGJlIGFibGUgdG8gcmVnaXN0ZXIgaW52aXNpYmxlIGZhY3RvcmllcywgdGhlc2Ugd2lsbCBub3QKKwkvLyBiZSB2aXNpYmxlIGJ5IGRlZmF1bHQsIGJ1dCBpZiB5b3Uga25vdyB0aGUgc2VjcmV0IHBhc3N3b3JkIHlvdQorCS8vIGNhbiBzdGlsbCBhY2Nlc3MgdGhlc2Ugc2VydmljZXMuLi4KKwlJbnRlZ2VyIHNpbmdsZXRvbjQgPSBuZXcgSW50ZWdlcig0KTsKKwlzZXJ2aWNlLnJlZ2lzdGVyT2JqZWN0KHNpbmdsZXRvbjQsICJlbl9VU19CQVIiLCBmYWxzZSk7CisJcmVzdWx0ID0gc2VydmljZS5nZXQoImVuX1VTX0JBUiIpOworCWNvbmZpcm1JZGVudGljYWwoIjE3KSBnZXQgaW52aXNpYmxlIiwgcmVzdWx0LCBzaW5nbGV0b240KTsKKwkKKwkvLyBzaG91bGQgbm90IGJlIGFibGUgdG8gbG9jYXRlIGludmlzaWJsZSBzZXJ2aWNlcworCVNldCBpZHMgPSBzZXJ2aWNlLmdldFZpc2libGVJRHMoKTsKKwljb25maXJtQm9vbGVhbigiMTgpIGZpbmQgaW52aXNpYmxlIiwgIWlkcy5jb250YWlucygiZW5fVVNfQkFSIikpOworCisJc2VydmljZS5yZXNldCgpOworCS8vIGFuIGFub255bW91cyBmYWN0b3J5IHRoYW4gaGFuZGxlcyBhbGwgaWRzCisJeworCSAgICBGYWN0b3J5IGZhY3RvcnkgPSBuZXcgRmFjdG9yeSgpIHsKKwkJICAgIHB1YmxpYyBPYmplY3QgY3JlYXRlKEtleSBrZXksIElDVVNlcnZpY2Ugc2VydmljZSkgeworCQkJcmV0dXJuIExvY2FsZVV0aWxpdHkuZ2V0TG9jYWxlRnJvbU5hbWUoa2V5LmN1cnJlbnRJRCgpKTsKKwkJICAgIH0KKworICAgICAgICAgICAgICAgICAgICAvLy9DTE9WRVI6T0ZGCisJCSAgICBwdWJsaWMgdm9pZCB1cGRhdGVWaXNpYmxlSURzKE1hcCByZXN1bHQpIHsKKwkJICAgIH0KKyAgICAgICAgICAgICAgICAgICAgLy8vQ0xPVkVSOk9OCisKKyAgICAgICAgICAgICAgICAgICAgLy8vQ0xPVkVSOk9GRgorCQkgICAgcHVibGljIFN0cmluZyBnZXREaXNwbGF5TmFtZShTdHJpbmcgaWQsIExvY2FsZSBsKSB7CisJCQlyZXR1cm4gbnVsbDsKKwkJICAgIH0KKyAgICAgICAgICAgICAgICAgICAgLy8vQ0xPVkVSOk9OCisJCX07CisJICAgIHNlcnZpY2UucmVnaXN0ZXJGYWN0b3J5KGZhY3RvcnkpOworCisJICAgIC8vIGFub255bW91cyBmYWN0b3J5IHdpbGwgc3RpbGwgaGFuZGxlIHRoZSBpZAorCSAgICByZXN1bHQgPSBzZXJ2aWNlLmdldChMb2NhbGUuVVMudG9TdHJpbmcoKSk7CisJICAgIGNvbmZpcm1FcXVhbCgiMjEpIGxvY2FsZSIsIHJlc3VsdCwgTG9jYWxlLlVTKTsKKworCSAgICAvLyBzdGlsbCBub3JtYWxpemVzIGlkCisJICAgIHJlc3VsdCA9IHNlcnZpY2UuZ2V0KCJFTl9VU19CQVIiKTsKKwkgICAgY29uZmlybUVxdWFsKCIyMikgbG9jYWxlIiwgcmVzdWx0LCBMb2NhbGVVdGlsaXR5LmdldExvY2FsZUZyb21OYW1lKCJlbl9VU19CQVIiKSk7CisJICAgIAorCSAgICAvLyB3ZSBjYW4gb3ZlcnJpZGUgZm9yIHBhcnRpY3VsYXIgaWRzCisJICAgIHNlcnZpY2UucmVnaXN0ZXJPYmplY3Qoc2luZ2xldG9uMywgImVuX1VTX0JBUiIpOworCSAgICByZXN1bHQgPSBzZXJ2aWNlLmdldCgiZW5fVVNfQkFSIik7CisJICAgIGNvbmZpcm1JZGVudGljYWwoIjIzKSBvdmVycmlkZSBzdXBlciIsIHJlc3VsdCwgc2luZ2xldG9uMyk7CisKKwl9CisKKwkvLyBlbXB0eSBzZXJ2aWNlIHNob3VsZCBub3QgcmVjb2duaXplIGFueXRoaW5nIAorCXNlcnZpY2UucmVzZXQoKTsKKwlyZXN1bHQgPSBzZXJ2aWNlLmdldCgiZW5fVVMiKTsKKwljb25maXJtSWRlbnRpY2FsKCIyNCkgZW1wdHkiLCByZXN1bHQsIG51bGwpOworCisJLy8gY3JlYXRlIGEgY3VzdG9tIG11bHRpcGxlIGtleSBmYWN0b3J5CisJeworCSAgICBTdHJpbmdbXSB4aWRzID0geyAiZW5fVVNfVkFMTEVZX0dJUkwiLCAKKwkJCSAgICAgICJlbl9VU19WQUxMRVlfQk9ZIiwKKwkJCSAgICAgICJlbl9VU19TVVJGRVJfR0FMIiwKKwkJCSAgICAgICJlbl9VU19TVVJGRVJfRFVERSIKKwkgICAgfTsKKwkgICAgc2VydmljZS5yZWdpc3RlckZhY3RvcnkobmV3IFRlc3RMb2NhbGVLZXlGYWN0b3J5KHhpZHMsICJMYXRlciIpKTsKKwl9CisKKwkvLyBpdGVyYXRlIG92ZXIgdGhlIHZpc3VhbCBpZHMgcmV0dXJuZWQgYnkgdGhlIG11bHRpcGxlIGZhY3RvcnkKKwl7CisJICAgIFNldCB2aWRzID0gc2VydmljZS5nZXRWaXNpYmxlSURzKCk7CisJICAgIEl0ZXJhdG9yIGl0ZXIgPSB2aWRzLml0ZXJhdG9yKCk7CisJICAgIGludCBjb3VudCA9IDA7CisJICAgIHdoaWxlIChpdGVyLmhhc05leHQoKSkgeworCSAgICAgICAgKytjb3VudDsKKyAgICAgICAgICAgICAgICBTdHJpbmcgaWQgPSAoU3RyaW5nKWl0ZXIubmV4dCgpOworCQlsb2dsbigiICAiICsgaWQgKyAiIC0tPiAiICsgc2VydmljZS5nZXQoaWQpKTsKKwkgICAgfQorCSAgICAvLyBmb3VyIHZpc2libGUgaWRzCisJICAgIGNvbmZpcm1JZGVudGljYWwoIjI1KSB2aXNpYmxlIGlkcyIsIGNvdW50LCA0KTsKKwl9CisKKwkvLyBpdGVyYXRlIG92ZXIgdGhlIGRpc3BsYXkgbmFtZXMKKwl7CisJICAgIE1hcCBkaWRzID0gc2VydmljZS5nZXREaXNwbGF5TmFtZXMoTG9jYWxlLkdFUk1BTlkpOworCSAgICBJdGVyYXRvciBpdGVyID0gZGlkcy5lbnRyeVNldCgpLml0ZXJhdG9yKCk7CisJICAgIGludCBjb3VudCA9IDA7CisJICAgIHdoaWxlIChpdGVyLmhhc05leHQoKSkgeworCSAgICAgICAgKytjb3VudDsKKwkgICAgICAgIEVudHJ5IGUgPSAoRW50cnkpaXRlci5uZXh0KCk7CisJICAgICAgICBsb2dsbigiICAiICsgZS5nZXRLZXkoKSArICIgLS0gPiAiICsgZS5nZXRWYWx1ZSgpKTsKKwkgICAgfQorCSAgICAvLyBmb3VyIGRpc3BsYXkgbmFtZXMsIGluIGdlcm1hbgorCSAgICBjb25maXJtSWRlbnRpY2FsKCIyNikgZGlzcGxheSBuYW1lcyIsIGNvdW50LCA0KTsKKwl9CisKKwkvLyBubyB2YWxpZCBkaXNwbGF5IG5hbWUKKwljb25maXJtSWRlbnRpY2FsKCIyNykgZ2V0IGRpc3BsYXkgbmFtZSIsIHNlcnZpY2UuZ2V0RGlzcGxheU5hbWUoImVuX1VTX1ZBTExFWV9HRUVLIiksIG51bGwpOworCisJeworCSAgICBTdHJpbmcgbmFtZSA9IHNlcnZpY2UuZ2V0RGlzcGxheU5hbWUoImVuX1VTX1NVUkZFUl9EVURFIiwgTG9jYWxlLlVTKTsKKwkgICAgY29uZmlybUVxdWFsKCIyOCkgZ2V0IGRpc3BsYXkgbmFtZSIsIG5hbWUsICJFbmdsaXNoIChVbml0ZWQgU3RhdGVzLFNVUkZFUixEVURFKSIpOworCX0KKworCS8vIHJlZ2lzdGVyIGFub3RoZXIgbXVsdGlwbGUgZmFjdG9yeQorCXsKKwkgICAgU3RyaW5nW10geGlkcyA9IHsKKwkJImVuX1VTX1NVUkZFUiIsICJlbl9VU19TVVJGRVJfR0FMIiwgImVuX1VTX1NJTElDT04iLCAiZW5fVVNfU0lMSUNPTl9HRUVLIgorCSAgICB9OworCSAgICBzZXJ2aWNlLnJlZ2lzdGVyRmFjdG9yeShuZXcgVGVzdExvY2FsZUtleUZhY3RvcnkoeGlkcywgIlJhZCBkdWRlIikpOworCX0KKworCS8vIHRoaXMgdGltZSwgd2UgaGF2ZSBzZXZlbiBkaXNwbGF5IG5hbWVzCisgICAgICAgIC8vIFJhZCBkdWRlJ3Mgc3VyZmVyIGdhbCAncmVwbGFjZXMnIGxhdGVyJ3Mgc3VyZmVyIGdhbAorCXsKKwkgICAgTWFwIGRpZHMgPSBzZXJ2aWNlLmdldERpc3BsYXlOYW1lcygpOworCSAgICBJdGVyYXRvciBpdGVyID0gZGlkcy5lbnRyeVNldCgpLml0ZXJhdG9yKCk7CisJICAgIGludCBjb3VudCA9IDA7CisJICAgIHdoaWxlIChpdGVyLmhhc05leHQoKSkgeworCSAgICAgICAgKytjb3VudDsKKwkgICAgICAgIEVudHJ5IGUgPSAoRW50cnkpaXRlci5uZXh0KCk7CisJICAgICAgICBsb2dsbigiICAiICsgZS5nZXRLZXkoKSArICIgLS0+ICIgKyBlLmdldFZhbHVlKCkpOworCSAgICB9CisJICAgIC8vIHNldmVuIGRpc3BsYXkgbmFtZXMsIGluIHNwYW5pc2gKKwkgICAgY29uZmlybUlkZW50aWNhbCgiMjkpIGRpc3BsYXkgbmFtZXMiLCBjb3VudCwgNyk7CisJfQorCisJLy8gd2Ugc2hvdWxkIGdldCB0aGUgZGlzcGxheSBuYW1lIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFjdHVhbCBpZAorCS8vIHJldHVybmVkIGJ5IHRoZSBpZCB3ZSB1c2VkLgorCXsKKwkgICAgU3RyaW5nW10gYWN0dWFsSUQgPSBuZXcgU3RyaW5nWzFdOworCSAgICBTdHJpbmcgaWQgPSAiZW5fdXNfc3VyZmVyX2dhbCI7CisJICAgIFN0cmluZyBnYWwgPSAoU3RyaW5nKXNlcnZpY2UuZ2V0KGlkLCBhY3R1YWxJRCk7CisJICAgIGlmIChnYWwgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGxvZ2xuKCJhY3R1YWwgaWQ6ICIgKyBhY3R1YWxJRFswXSk7CisJCVN0cmluZyBkaXNwbGF5TmFtZSA9IHNlcnZpY2UuZ2V0RGlzcGxheU5hbWUoYWN0dWFsSURbMF0sIExvY2FsZS5VUyk7CisJCWxvZ2xuKCJmb3VuZCBhY3R1YWw6ICIgKyBnYWwgKyAiIHdpdGggZGlzcGxheSBuYW1lOiAiICsgZGlzcGxheU5hbWUpOworCQljb25maXJtQm9vbGVhbigiMzApIGZvdW5kIGRpc3BsYXkgbmFtZSBmb3IgYWN0dWFsIiwgZGlzcGxheU5hbWUgIT0gbnVsbCk7CisKKwkJZGlzcGxheU5hbWUgPSBzZXJ2aWNlLmdldERpc3BsYXlOYW1lKGlkLCBMb2NhbGUuVVMpOworCQlsb2dsbigiZm91bmQgcXVlcnk6ICIgKyBnYWwgKyAiIHdpdGggZGlzcGxheSBuYW1lOiAiICsgZGlzcGxheU5hbWUpOworCQljb25maXJtQm9vbGVhbigiMzEpIGZvdW5kIGRpc3BsYXkgbmFtZSBmb3IgcXVlcnkiLCBkaXNwbGF5TmFtZSA9PSBudWxsKTsKKwkgICAgfSBlbHNlIHsKKwkJZXJybG4oIjMwKSBzZXJ2aWNlIGNvdWxkIG5vdCBmaW5kIGVudHJ5IGZvciAiICsgaWQpOworCSAgICB9CisKKyAgICAgICAgICAgIC8vIHRoaXMgc2hvdWxkIGJlIGhhbmRsZWQgYnkgdGhlICdkdWRlJyBmYWN0b3J5LCBzaW5jZSBpdCBvdmVycmlkZXMgZW5fVVNfU1VSRkVSLgorCSAgICBpZCA9ICJlbl9VU19TVVJGRVJfQk9aTyI7CisJICAgIFN0cmluZyBib3pvID0gKFN0cmluZylzZXJ2aWNlLmdldChpZCwgYWN0dWFsSUQpOworCSAgICBpZiAoYm96byAhPSBudWxsKSB7CisJCVN0cmluZyBkaXNwbGF5TmFtZSA9IHNlcnZpY2UuZ2V0RGlzcGxheU5hbWUoYWN0dWFsSURbMF0sIExvY2FsZS5VUyk7CisJCWxvZ2xuKCJmb3VuZCBhY3R1YWw6ICIgKyBib3pvICsgIiB3aXRoIGRpc3BsYXkgbmFtZTogIiArIGRpc3BsYXlOYW1lKTsKKwkJY29uZmlybUJvb2xlYW4oIjMyKSBmb3VuZCBkaXNwbGF5IG5hbWUgZm9yIGFjdHVhbCIsIGRpc3BsYXlOYW1lICE9IG51bGwpOworCisJCWRpc3BsYXlOYW1lID0gc2VydmljZS5nZXREaXNwbGF5TmFtZShpZCwgTG9jYWxlLlVTKTsKKwkJbG9nbG4oImZvdW5kIGFjdHVhbDogIiArIGJvem8gKyAiIHdpdGggZGlzcGxheSBuYW1lOiAiICsgZGlzcGxheU5hbWUpOworCQljb25maXJtQm9vbGVhbigiMzMpIGZvdW5kIGRpc3BsYXkgbmFtZSBmb3IgcXVlcnkiLCBkaXNwbGF5TmFtZSA9PSBudWxsKTsKKwkgICAgfSBlbHNlIHsKKwkJZXJybG4oIjMyKSBzZXJ2aWNlIGNvdWxkIG5vdCBmaW5kIGVudHJ5IGZvciAiICsgaWQpOworCSAgICB9CisKKyAgICAgICAgICAgIGNvbmZpcm1Cb29sZWFuKCIzNCkgaXMgZGVmYXVsdCAiLCAhc2VydmljZS5pc0RlZmF1bHQoKSk7CisJfQorCisgICAgICAgIC8qCisgICAgICAgIC8vIGRpc2FsbG93IGhpZGluZyBmb3Igbm93CisKKwkvLyBoaWRpbmcgZmFjdG9yeSBzaG91bGQgb2JzY3VyZSAnc3VibG9jYWxlcycKKwl7CisJICAgIFN0cmluZ1tdIHhpZHMgPSB7CisJCSJlbl9VU19WQUxMRVkiLCAiZW5fVVNfU0lMSUNPTiIKKwkgICAgfTsKKwkgICAgc2VydmljZS5yZWdpc3RlckZhY3RvcnkobmV3IFRlc3RIaWRpbmdGYWN0b3J5KHhpZHMsICJoaWRpbmciKSk7CisJfQorCisJeworCSAgICBNYXAgZGlkcyA9IHNlcnZpY2UuZ2V0RGlzcGxheU5hbWVzKCk7CisJICAgIEl0ZXJhdG9yIGl0ZXIgPSBkaWRzLmVudHJ5U2V0KCkuaXRlcmF0b3IoKTsKKwkgICAgaW50IGNvdW50ID0gMDsKKwkgICAgd2hpbGUgKGl0ZXIuaGFzTmV4dCgpKSB7CisJICAgICAgICArK2NvdW50OworCSAgICAgICAgRW50cnkgZSA9IChFbnRyeSlpdGVyLm5leHQoKTsKKwkgICAgICAgIGxvZ2xuKCIgICIgKyBlLmdldEtleSgpICsgIiAtLSA+ICIgKyBlLmdldFZhbHVlKCkpOworCSAgICB9CisJICAgIGNvbmZpcm1JZGVudGljYWwoIjM1KSBoaWRpbmcgZmFjdG9yeSIsIGNvdW50LCA1KTsKKwl9CisgICAgICAgICovCisKKwl7CisJICAgIFNldCB4aWRzID0gc2VydmljZS5nZXRWaXNpYmxlSURzKCk7CisJICAgIEl0ZXJhdG9yIGl0ZXIgPSB4aWRzLml0ZXJhdG9yKCk7CisJICAgIHdoaWxlIChpdGVyLmhhc05leHQoKSkgeworCQlTdHJpbmcgeGlkID0gKFN0cmluZylpdGVyLm5leHQoKTsKKwkJbG9nbG4oeGlkICsgIj8gICIgKyBzZXJ2aWNlLmdldCh4aWQpKTsKKwkgICAgfQorCisJICAgIGxvZ2xuKCJ2YWxsZXlnaXJsPyAgIiArIHNlcnZpY2UuZ2V0KCJlbl9VU19WQUxMRVlfR0lSTCIpKTsKKwkgICAgbG9nbG4oInZhbGxleWJveT8gICAiICsgc2VydmljZS5nZXQoImVuX1VTX1ZBTExFWV9CT1kiKSk7CisJICAgIGxvZ2xuKCJ2YWxsZXlkdWRlPyAgIiArIHNlcnZpY2UuZ2V0KCJlbl9VU19WQUxMRVlfRFVERSIpKTsKKwkgICAgbG9nbG4oInN1cmZlcmdpcmw/ICAiICsgc2VydmljZS5nZXQoImVuX1VTX1NVUkZFUl9HSVJMIikpOworCX0KKworCS8vIHJlc291cmNlIGJ1bmRsZSBmYWN0b3J5LgorCXNlcnZpY2UucmVzZXQoKTsKKwlzZXJ2aWNlLnJlZ2lzdGVyRmFjdG9yeShuZXcgSUNVUmVzb3VyY2VCdW5kbGVGYWN0b3J5KCkpOworCisJLy8gbGlzdCBhbGwgb2YgdGhlIHJlc291cmNlcyAKKwl7CisgICAgICAgICAgICBsb2dsbigiYWxsIHZpc2libGUgaWRzOiAiICsgc2VydmljZS5nZXRWaXNpYmxlSURzKCkpOworICAgICAgICAgICAgLyoKKwkgICAgU2V0IHhpZHMgPSBzZXJ2aWNlLmdldFZpc2libGVJRHMoKTsKKwkgICAgU3RyaW5nQnVmZmVyIGJ1ZiA9IG5ldyBTdHJpbmdCdWZmZXIoInsiKTsKKwkgICAgYm9vbGVhbiBub3RmaXJzdCA9IGZhbHNlOworCSAgICBJdGVyYXRvciBpdGVyID0geGlkcy5pdGVyYXRvcigpOworCSAgICB3aGlsZSAoaXRlci5oYXNOZXh0KCkpIHsKKwkJU3RyaW5nIHhpZCA9IChTdHJpbmcpaXRlci5uZXh0KCk7CisJCWlmIChub3RmaXJzdCkgeworCQkgICAgYnVmLmFwcGVuZCgiLCAiKTsKKwkJfSBlbHNlIHsKKwkJICAgIG5vdGZpcnN0ID0gdHJ1ZTsKKwkJfQorCQlidWYuYXBwZW5kKHhpZCk7CisJICAgIH0KKwkgICAgYnVmLmFwcGVuZCgifSIpOworCSAgICBsb2dsbihidWYudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAqLworCX0KKworICAgICAgICAvLyBsaXN0IG9ubHkgdGhlIHJlc291cmNlcyBmb3IgZXMsIGRlZmF1bHQgbG9jYWxlCisgICAgICAgIC8vIHNpbmNlIHdlJ3JlIHVzaW5nIHRoZSBkZWZhdWx0IEtleSwgb25seSAiZXMiIGlzIG1hdGNoZWQKKyAgICAgICAgeworICAgICAgICAgICAgbG9nbG4oInZpc2libGUgaWRzIGZvciBlcyBsb2NhbGU6ICIgKyBzZXJ2aWNlLmdldFZpc2libGVJRHMoImVzIikpOworICAgICAgICB9CisKKyAgICAgICAgLy8gbGlzdCBvbmx5IHRoZSBzcGFuaXNoIGRpc3BsYXkgbmFtZXMgZm9yIGVzLCBzcGFuaXNoIGNvbGxhdGlvbiBvcmRlcgorICAgICAgICAvLyBzaW5jZSB3ZSdyZSB1c2luZyB0aGUgZGVmYXVsdCBLZXksIG9ubHkgImVzIiBpcyBtYXRjaGVkCisgICAgICAgIHsKKyAgICAgICAgICAgIGxvZ2xuKCJkaXNwbGF5IG5hbWVzOiAiICsgc2VydmljZS5nZXREaXNwbGF5TmFtZXMoTG9jYWxlVXRpbGl0eS5nZXRMb2NhbGVGcm9tTmFtZSgiZXMiKSwgImVzIikpOworICAgICAgICB9CisKKyAgICAgICAgLy8gbGlzdCB0aGUgZGlzcGxheSBuYW1lcyBpbiByZXZlcnNlIG9yZGVyCisgICAgICAgIHsgCisgICAgICAgICAgICBsb2dsbigiZGlzcGxheSBuYW1lcyBpbiByZXZlcnNlIG9yZGVyOiAiICsKKyAgICAgICAgICAgICAgICAgIHNlcnZpY2UuZ2V0RGlzcGxheU5hbWVzKExvY2FsZS5VUywgbmV3IENvbXBhcmF0b3IoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBpbnQgY29tcGFyZShPYmplY3QgbGhzLCBPYmplY3QgcmhzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLVN0cmluZy5DQVNFX0lOU0VOU0lUSVZFX09SREVSLmNvbXBhcmUobGhzLCByaHMpOworICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgfSkpOworICAgICAgICB9CisKKwkvLyBnZXQgYWxsIHRoZSBkaXNwbGF5IG5hbWVzIG9mIHRoZXNlIHJlc291cmNlcworCS8vIHRoaXMgc2hvdWxkIGJlIGZhc3Qgc2luY2UgdGhlIGRpc3BsYXkgbmFtZXMgd2VyZSBjYWNoZWQuCisJeworICAgICAgICAgICAgbG9nbG4oInNlcnZpY2UgZGlzcGxheSBuYW1lcyBmb3IgZGVfREUiKTsKKwkgICAgTWFwIG5hbWVzID0gc2VydmljZS5nZXREaXNwbGF5TmFtZXMoTG9jYWxlVXRpbGl0eS5nZXRMb2NhbGVGcm9tTmFtZSgiZGVfREUiKSk7CisJICAgIFN0cmluZ0J1ZmZlciBidWYgPSBuZXcgU3RyaW5nQnVmZmVyKCJ7Iik7CisJICAgIEl0ZXJhdG9yIGl0ZXIgPSBuYW1lcy5lbnRyeVNldCgpLml0ZXJhdG9yKCk7CisJICAgIHdoaWxlIChpdGVyLmhhc05leHQoKSkgeworCQlFbnRyeSBlID0gKEVudHJ5KWl0ZXIubmV4dCgpOworCQlTdHJpbmcgbmFtZSA9IChTdHJpbmcpZS5nZXRLZXkoKTsKKwkJU3RyaW5nIGlkID0gKFN0cmluZyllLmdldFZhbHVlKCk7CisJCWJ1Zi5hcHBlbmQoIlxuICAgIiArIG5hbWUgKyAiIC0tPiAiICsgaWQpOworCSAgICB9CisJICAgIGJ1Zi5hcHBlbmQoIlxufSIpOworCSAgICBsb2dsbihidWYudG9TdHJpbmcoKSk7CisJfQorCisgICAgICAgIENhbGlmb3JuaW9MYW5ndWFnZUZhY3RvcnkgY2FsaWZhY3RvcnkgPSBuZXcgQ2FsaWZvcm5pb0xhbmd1YWdlRmFjdG9yeSgpOworICAgICAgICBzZXJ2aWNlLnJlZ2lzdGVyRmFjdG9yeShjYWxpZmFjdG9yeSk7CisJLy8gZ2V0IGFsbCB0aGUgZGlzcGxheSBuYW1lcyBvZiB0aGVzZSByZXNvdXJjZXMKKwl7CisgICAgICAgICAgICBsb2dsbigiY2FsaWZvcm5pbyBsYW5ndWFnZSBmYWN0b3J5Iik7CisJICAgIFN0cmluZ0J1ZmZlciBidWYgPSBuZXcgU3RyaW5nQnVmZmVyKCJ7Iik7CisgICAgICAgICAgICBTdHJpbmdbXSBpZE5hbWVzID0geworICAgICAgICAgICAgICAgIGNhbGlmYWN0b3J5LmNhbGlmb3JuaW8sIGNhbGlmYWN0b3J5LnZhbGxleSwgY2FsaWZhY3Rvcnkuc3VyZmVyLCBjYWxpZmFjdG9yeS5nZWVrCisgICAgICAgICAgICB9OworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpZE5hbWVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIGlkTmFtZSA9IGlkTmFtZXNbaV07CisgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgiXG4gIC0tLSAiICsgaWROYW1lICsgIiAtLS0iKTsKKyAgICAgICAgICAgICAgICBNYXAgbmFtZXMgPSBzZXJ2aWNlLmdldERpc3BsYXlOYW1lcyhMb2NhbGVVdGlsaXR5LmdldExvY2FsZUZyb21OYW1lKGlkTmFtZSkpOworICAgICAgICAgICAgICAgIEl0ZXJhdG9yIGl0ZXIgPSBuYW1lcy5lbnRyeVNldCgpLml0ZXJhdG9yKCk7CisgICAgICAgICAgICAgICAgd2hpbGUgKGl0ZXIuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICAgICAgICAgIEVudHJ5IGUgPSAoRW50cnkpaXRlci5uZXh0KCk7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBuYW1lID0gKFN0cmluZyllLmdldEtleSgpOworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgaWQgPSAoU3RyaW5nKWUuZ2V0VmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgiXG4gICAgIiArIG5hbWUgKyAiIC0tPiAiICsgaWQpOworICAgICAgICAgICAgICAgIH0KKwkgICAgfQorCSAgICBidWYuYXBwZW5kKCJcbn0iKTsKKwkgICAgbG9nbG4oYnVmLnRvU3RyaW5nKCkpOworCX0KKworCS8vIHRlc3Qgbm90aWZpY2F0aW9uCisJLy8gc2ltcGxlIHJlZ2lzdHJhdGlvbgorCXsKKyAgICAgICAgICAgIGxvZ2xuKCJzaW1wbGUgcmVnaXN0cmF0aW9uIG5vdGlmaWNhdGlvbiIpOworCSAgICBJQ1VMb2NhbGVTZXJ2aWNlIGxzID0gbmV3IElDVUxvY2FsZVNlcnZpY2UoKTsKKwkgICAgU2VydmljZUxpc3RlbmVyIGwxID0gbmV3IFNlcnZpY2VMaXN0ZW5lcigpIHsKKwkJICAgIHByaXZhdGUgaW50IG47CisJCSAgICBwdWJsaWMgdm9pZCBzZXJ2aWNlQ2hhbmdlZChJQ1VTZXJ2aWNlIHMpIHsKKwkJCWxvZ2xuKCJsaXN0ZW5lciAxIHJlcG9ydCAiICsgbisrICsgIiBzZXJ2aWNlIGNoYW5nZWQ6ICIgKyBzKTsKKwkJICAgIH0KKwkJfTsgCisJICAgIGxzLmFkZExpc3RlbmVyKGwxKTsKKwkgICAgU2VydmljZUxpc3RlbmVyIGwyID0gbmV3IFNlcnZpY2VMaXN0ZW5lcigpIHsKKwkJICAgIHByaXZhdGUgaW50IG47CisJCSAgICBwdWJsaWMgdm9pZCBzZXJ2aWNlQ2hhbmdlZChJQ1VTZXJ2aWNlIHMpIHsKKwkJCWxvZ2xuKCJsaXN0ZW5lciAyIHJlcG9ydCAiICsgbisrICsgIiBzZXJ2aWNlIGNoYW5nZWQ6ICIgKyBzKTsKKwkJICAgIH0KKwkJfTsKKwkgICAgbHMuYWRkTGlzdGVuZXIobDIpOworCSAgICBsb2dsbigicmVnaXN0ZXJpbmcgZm9vLi4uICIpOworCSAgICBscy5yZWdpc3Rlck9iamVjdCgiRm9vIiwgImVuX0ZPTyIpOworCSAgICBsb2dsbigicmVnaXN0ZXJpbmcgYmFyLi4uICIpOworCSAgICBscy5yZWdpc3Rlck9iamVjdCgiQmFyIiwgImVuX0JBUiIpOworCSAgICBsb2dsbigiZ2V0dGluZyBmb28uLi4iKTsKKwkgICAgbG9nbG4oKFN0cmluZylscy5nZXQoImVuX0ZPTyIpKTsKKwkgICAgbG9nbG4oInJlbW92aW5nIGxpc3RlbmVyIDIuLi4iKTsKKwkgICAgbHMucmVtb3ZlTGlzdGVuZXIobDIpOworCSAgICBsb2dsbigicmVnaXN0ZXJpbmcgYmF6Li4uIik7CisJICAgIGxzLnJlZ2lzdGVyT2JqZWN0KCJCYXoiLCAiZW5fQkFaIik7CisJICAgIGxvZ2xuKCJyZW1vdmluZyBsaXN0ZW5lciAxIik7CisJICAgIGxzLnJlbW92ZUxpc3RlbmVyKGwxKTsKKwkgICAgbG9nbG4oInJlZ2lzdGVyaW5nIGJ1cnAuLi4iKTsKKwkgICAgbHMucmVnaXN0ZXJPYmplY3QoIkJ1cnAiLCAiZW5fQlVSUCIpOworCisJICAgIC8vIHNob3VsZCBvbmx5IGdldCBvbmUgbm90aWZpY2F0aW9uIGV2ZW4gaWYgcmVnaXN0ZXIgbXVsdGlwbGUgdGltZXMKKwkgICAgbG9nbG4oIi4uLiB0cnlpbmcgbXVsdGlwbGUgcmVnaXN0cmF0aW9uIik7CisJICAgIGxzLmFkZExpc3RlbmVyKGwxKTsKKwkgICAgbHMuYWRkTGlzdGVuZXIobDEpOworCSAgICBscy5hZGRMaXN0ZW5lcihsMSk7CisJICAgIGxzLmFkZExpc3RlbmVyKGwyKTsKKwkgICAgbHMucmVnaXN0ZXJPYmplY3QoIkZvbyIsICJlbl9GT08iKTsKKwkgICAgbG9nbG4oIi4uLiByZWdpc3RlcmVkIGZvbyIpOworCisJICAgIC8vIHNpbmNlIGluIGEgc2VwYXJhdGUgdGhyZWFkLCB3ZSBjYW4gY2FsbGJhY2sgYW5kIG5vdCBkZWFkbG9jaworCSAgICBTZXJ2aWNlTGlzdGVuZXIgbDMgPSBuZXcgU2VydmljZUxpc3RlbmVyKCkgeworCQkgICAgcHJpdmF0ZSBpbnQgbjsKKwkJICAgIHB1YmxpYyB2b2lkIHNlcnZpY2VDaGFuZ2VkKElDVVNlcnZpY2UgcykgeworCQkJbG9nbG4oImxpc3RlbmVyIDMgcmVwb3J0ICIgKyBuKysgKyAiIHNlcnZpY2UgY2hhbmdlZC4uLiIpOworCQkJaWYgKHMuZ2V0KCJlbl9CT0lOSyIpID09IG51bGwpIHsgLy8gZG9uJ3QgcmVjdXJzZSBvbiBvdXJzZWx2ZXMhISEKKwkJCSAgICBsb2dsbigicmVnaXN0ZXJpbmcgYm9pbmsuLi4iKTsKKwkJCSAgICBzLnJlZ2lzdGVyT2JqZWN0KCJib2luayIsICJlbl9CT0lOSyIpOworCQkJfQorCQkgICAgfQorCQl9OworCSAgICBscy5hZGRMaXN0ZW5lcihsMyk7CisJICAgIGxvZ2xuKCJyZWdpc3RlcmluZyBib28uLi4iKTsKKwkgICAgbHMucmVnaXN0ZXJPYmplY3QoIkJvbyIsICJlbl9CT08iKTsKKwkgICAgbG9nbG4oIi4uLmRvbmUiKTsKKworCSAgICB0cnkgeworCQlUaHJlYWQuc2xlZXAoMTAwKTsKKwkgICAgfQorCSAgICBjYXRjaCAoSW50ZXJydXB0ZWRFeGNlcHRpb24gZSkgeworCSAgICB9CisJfQorICAgIH0KKworICAgIHN0YXRpYyBjbGFzcyBUZXN0TG9jYWxlS2V5RmFjdG9yeSBleHRlbmRzIExvY2FsZUtleUZhY3RvcnkgeworCXByb3RlY3RlZCBmaW5hbCBTZXQgaWRzOworCXByb3RlY3RlZCBmaW5hbCBTdHJpbmcgZmFjdG9yeUlEOworCisJcHVibGljIFRlc3RMb2NhbGVLZXlGYWN0b3J5KFN0cmluZ1tdIGlkcywgU3RyaW5nIGZhY3RvcnlJRCkgeworICAgICAgICAgICAgc3VwZXIoVklTSUJMRSwgZmFjdG9yeUlEKTsKKworCSAgICB0aGlzLmlkcyA9IENvbGxlY3Rpb25zLnVubW9kaWZpYWJsZVNldChuZXcgSGFzaFNldChBcnJheXMuYXNMaXN0KGlkcykpKTsKKyAgICAgICAgICAgIHRoaXMuZmFjdG9yeUlEID0gZmFjdG9yeUlEICsgIjogIjsKKwl9CisgICAgCisJcHJvdGVjdGVkIE9iamVjdCBoYW5kbGVDcmVhdGUoTG9jYWxlIGxvYywgaW50IGtpbmQsIElDVVNlcnZpY2Ugc2VydmljZSkgeworICAgICAgICAgICAgcmV0dXJuIGZhY3RvcnlJRCArIGxvYy50b1N0cmluZygpOworCX0KKworCXByb3RlY3RlZCBTZXQgZ2V0U3VwcG9ydGVkSURzKCkgeworICAgICAgICAgICAgcmV0dXJuIGlkczsKKwl9CisgICAgfQorCisgICAgLyoKKyAgICAgLy8gRGlzYWxsb3cgaGlkaW5nIGZvciBub3cgc2luY2UgaXQgY2F1c2VzIGduYXJseSBwcm9ibGVtcywgbGlrZQorICAgICAvLyBob3cgZG8geW91IGxvY2FsaXplIHRoZSBoaWRkZW4gKGJ1dCBzdGlsbCBleHBvcnRlZCkgbmFtZXMuCisKKyAgICBzdGF0aWMgY2xhc3MgVGVzdEhpZGluZ0ZhY3RvcnkgaW1wbGVtZW50cyBJQ1VTZXJ2aWNlLkZhY3RvcnkgeworCXByb3RlY3RlZCBmaW5hbCBTdHJpbmdbXSBpZHM7CisJcHJvdGVjdGVkIGZpbmFsIFN0cmluZyBmYWN0b3J5SUQ7CisKKwlwdWJsaWMgVGVzdEhpZGluZ0ZhY3RvcnkoU3RyaW5nW10gaWRzKSB7CisJICAgIHRoaXMoaWRzLCAiSGlkaW5nIik7CisJfQorCisJcHVibGljIFRlc3RIaWRpbmdGYWN0b3J5KFN0cmluZ1tdIGlkcywgU3RyaW5nIGZhY3RvcnlJRCkgeworCSAgICB0aGlzLmlkcyA9IChTdHJpbmdbXSlpZHMuY2xvbmUoKTsKKworCSAgICBpZiAoZmFjdG9yeUlEID09IG51bGwgfHwgZmFjdG9yeUlELmxlbmd0aCgpID09IDApIHsKKwkJdGhpcy5mYWN0b3J5SUQgPSAiIjsKKwkgICAgfSBlbHNlIHsKKwkJdGhpcy5mYWN0b3J5SUQgPSBmYWN0b3J5SUQgKyAiOiAiOworCSAgICB9CisJfQorCisJcHVibGljIE9iamVjdCBjcmVhdGUoS2V5IGtleSwgSUNVU2VydmljZSBzZXJ2aWNlKSB7CisJICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaWRzLmxlbmd0aDsgKytpKSB7CisJCWlmIChMb2NhbGVVdGlsaXR5LmlzRmFsbGJhY2tPZihpZHNbaV0sIGtleS5jdXJyZW50SUQoKSkpIHsKKwkJICAgIHJldHVybiBmYWN0b3J5SUQgKyBrZXkuY2Fub25pY2FsSUQoKTsKKwkJfQorCSAgICB9CisJICAgIHJldHVybiBudWxsOworCX0KKworCXB1YmxpYyB2b2lkIHVwZGF0ZVZpc2libGVJRHMoTWFwIHJlc3VsdCkgeworCSAgICBmb3IgKGludCBpID0gMDsgaSA8IGlkcy5sZW5ndGg7ICsraSkgeworCQlTdHJpbmcgaWQgPSBpZHNbaV07CisJCUl0ZXJhdG9yIGl0ZXIgPSByZXN1bHQua2V5U2V0KCkuaXRlcmF0b3IoKTsKKwkJd2hpbGUgKGl0ZXIuaGFzTmV4dCgpKSB7CisJCSAgICBpZiAoTG9jYWxlVXRpbGl0eS5pc0ZhbGxiYWNrT2YoaWQsIChTdHJpbmcpaXRlci5uZXh0KCkpKSB7CisJCQlpdGVyLnJlbW92ZSgpOworCQkgICAgfQorCQl9CisJCXJlc3VsdC5wdXQoaWQsIHRoaXMpOworCSAgICB9CisJfQorCisJcHVibGljIFN0cmluZyBnZXREaXNwbGF5TmFtZShTdHJpbmcgaWQsIExvY2FsZSBsb2NhbGUpIHsKKwkgICAgcmV0dXJuIGZhY3RvcnlJRCArIExvY2FsZVV0aWxpdHkuZ2V0TG9jYWxlRnJvbU5hbWUoaWQpLmdldERpc3BsYXlOYW1lKGxvY2FsZSk7CisJfQorICAgIH0KKyAgICAqLworCisgICAgc3RhdGljIGNsYXNzIENhbGlmb3JuaW9MYW5ndWFnZUZhY3RvcnkgZXh0ZW5kcyBJQ1VSZXNvdXJjZUJ1bmRsZUZhY3RvcnkgeworCXB1YmxpYyBzdGF0aWMgU3RyaW5nIGNhbGlmb3JuaW8gPSAiZW5fVVNfQ0EiOworCXB1YmxpYyBzdGF0aWMgU3RyaW5nIHZhbGxleSA9IGNhbGlmb3JuaW8gKyAiX1ZBTExFWSI7CisJcHVibGljIHN0YXRpYyBTdHJpbmcgc3VyZmVyID0gY2FsaWZvcm5pbyArICJfU1VSRkVSIjsKKwlwdWJsaWMgc3RhdGljIFN0cmluZyBnZWVrID0gY2FsaWZvcm5pbyArICJfR0VFSyI7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgU2V0IHN1cHBvcnRlZElEczsKKyAgICAgICAgc3RhdGljIHsKKyAgICAgICAgICAgIEhhc2hTZXQgcmVzdWx0ID0gbmV3IEhhc2hTZXQoKTsKKyAgICAgICAgICAgIHJlc3VsdC5hZGRBbGwoSUNVTG9jYWxlRGF0YS5nZXRBdmFpbGFibGVMb2NhbGVOYW1lU2V0KCkpOworCSAgICByZXN1bHQuYWRkKGNhbGlmb3JuaW8pOworCSAgICByZXN1bHQuYWRkKHZhbGxleSk7CisJICAgIHJlc3VsdC5hZGQoc3VyZmVyKTsKKwkgICAgcmVzdWx0LmFkZChnZWVrKTsKKyAgICAgICAgICAgIHN1cHBvcnRlZElEcyA9IENvbGxlY3Rpb25zLnVubW9kaWZpYWJsZVNldChyZXN1bHQpOworICAgICAgICB9CisKKwlwdWJsaWMgU2V0IGdldFN1cHBvcnRlZElEcygpIHsKKyAgICAgICAgICAgIHJldHVybiBzdXBwb3J0ZWRJRHM7CisJfQorCisJcHVibGljIFN0cmluZyBnZXREaXNwbGF5TmFtZShTdHJpbmcgaWQsIExvY2FsZSBsb2NhbGUpIHsKKwkgICAgU3RyaW5nIHByZWZpeCA9ICIiOworCSAgICBTdHJpbmcgc3VmZml4ID0gIiI7CisJICAgIFN0cmluZyBscyA9IGxvY2FsZS50b1N0cmluZygpOworCSAgICBpZiAoTG9jYWxlVXRpbGl0eS5pc0ZhbGxiYWNrT2YoY2FsaWZvcm5pbywgbHMpKSB7CisJCWlmIChscy5lcXVhbHNJZ25vcmVDYXNlKHZhbGxleSkpIHsKKwkJICAgIHByZWZpeCA9ICJMaWtlLCB5b3Uga25vdywgaXQncyBzbyB0b3RhbGx5ICI7CisJCX0gZWxzZSBpZiAobHMuZXF1YWxzSWdub3JlQ2FzZShzdXJmZXIpKSB7CisJCSAgICBwcmVmaXggPSAiRHVkZSwgaXRzICI7CisJCX0gZWxzZSBpZiAobHMuZXF1YWxzSWdub3JlQ2FzZShnZWVrKSkgeworCQkgICAgcHJlZml4ID0gIkknZCBlc3RpbWF0ZSBpdCdzIGFwcHJveGltYXRlbHkgIjsKKwkJfSBlbHNlIHsKKwkJICAgIHByZWZpeCA9ICJIdWg/ICBNYXliZSAiOworCQl9CisJICAgIH0KKwkgICAgaWYgKExvY2FsZVV0aWxpdHkuaXNGYWxsYmFja09mKGNhbGlmb3JuaW8sIGlkKSkgeworCQlpZiAoaWQuZXF1YWxzSWdub3JlQ2FzZSh2YWxsZXkpKSB7CisJCSAgICBzdWZmaXggPSAibGlrZSB0aGUgVmFsbGV5LCB5b3Uga25vdz8gIExldCdzIGdvIHRvIHRoZSBtYWxsISI7CisJCX0gZWxzZSBpZiAoaWQuZXF1YWxzSWdub3JlQ2FzZShzdXJmZXIpKSB7CisJCSAgICBzdWZmaXggPSAidGltZSB0byBoaXQgdGhvc2UgZ25hcmx5IHdhdmVzLCBEdWRlISEhIjsKKwkJfSBlbHNlIGlmIChpZC5lcXVhbHNJZ25vcmVDYXNlKGdlZWspKSB7CisJCSAgICBzdWZmaXggPSAiYWxsIHN5c3RlbXMgZ28uICBULU1pbnVzIDksIDgsIDcuLi4iOworCQl9IGVsc2UgeworCQkgICAgc3VmZml4ID0gIk5vIEhhYmxhIEVuZ2xhaXMiOworCQl9CisJICAgIH0gZWxzZSB7CisJCXN1ZmZpeCA9IHN1cGVyLmdldERpc3BsYXlOYW1lKGlkLCBsb2NhbGUpOworCSAgICB9CisJCQorCSAgICByZXR1cm4gcHJlZml4ICsgc3VmZml4OworCX0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0TG9jYWxlKCkgeworCUlDVUxvY2FsZVNlcnZpY2Ugc2VydmljZSA9IG5ldyBJQ1VMb2NhbGVTZXJ2aWNlKCJ0ZXN0IGxvY2FsZSIpOworCXNlcnZpY2UucmVnaXN0ZXJPYmplY3QoInJvb3QiLCAiIik7CisJc2VydmljZS5yZWdpc3Rlck9iamVjdCgiZ2VybWFuIiwgImRlIik7CisJc2VydmljZS5yZWdpc3Rlck9iamVjdCgiZ2VybWFuX0dlcm1hbnkiLCBMb2NhbGUuR0VSTUFOWSk7CisJc2VydmljZS5yZWdpc3Rlck9iamVjdCgiamFwYW5lc2UiLCAiamEiKTsKKwlzZXJ2aWNlLnJlZ2lzdGVyT2JqZWN0KCJqYXBhbmVzZV9KYXBhbiIsIExvY2FsZS5KQVBBTik7CisKKwlPYmplY3QgdGFyZ2V0ID0gc2VydmljZS5nZXQoImRlX1VTIik7CisJY29uZmlybUVxdWFsKCJ0ZXN0IGRlX1VTIiwgImdlcm1hbiIsIHRhcmdldCk7CisKKyAgICAgICAgTG9jYWxlIGRlID0gTG9jYWxlVXRpbGl0eS5nZXRMb2NhbGVGcm9tTmFtZSgiZGUiKTsKKyAgICAgICAgTG9jYWxlIGRlX1VTID0gTG9jYWxlVXRpbGl0eS5nZXRMb2NhbGVGcm9tTmFtZSgiZGVfVVMiKTsKKworICAgICAgICB0YXJnZXQgPSBzZXJ2aWNlLmdldChkZV9VUyk7CisJY29uZmlybUVxdWFsKCJ0ZXN0IGRlX1VTIDIiLCAiZ2VybWFuIiwgdGFyZ2V0KTsKKworICAgICAgICB0YXJnZXQgPSBzZXJ2aWNlLmdldChkZV9VUywgTG9jYWxlS2V5LktJTkRfQU5ZKTsKKwljb25maXJtRXF1YWwoInRlc3QgZGVfVVMgMyIsICJnZXJtYW4iLCB0YXJnZXQpOworCisgICAgICAgIHRhcmdldCA9IHNlcnZpY2UuZ2V0KGRlX1VTLCAxMjM0KTsKKwljb25maXJtRXF1YWwoInRlc3QgZGVfVVMgNCIsICJnZXJtYW4iLCB0YXJnZXQpOworCisgICAgICAgIExvY2FsZVtdIGFjdHVhbFJldHVybiA9IG5ldyBMb2NhbGVbMV07CisgICAgICAgIHRhcmdldCA9IHNlcnZpY2UuZ2V0KGRlX1VTLCBhY3R1YWxSZXR1cm4pOworICAgICAgICBjb25maXJtRXF1YWwoInRlc3QgZGVfVVMgNSIsICJnZXJtYW4iLCB0YXJnZXQpOworICAgICAgICBjb25maXJtRXF1YWwoInRlc3QgZGVfVVMgNiIsIGFjdHVhbFJldHVyblswXSwgZGUpOworCisgICAgICAgIGFjdHVhbFJldHVyblswXSA9IG51bGw7CisgICAgICAgIHRhcmdldCA9IHNlcnZpY2UuZ2V0KGRlX1VTLCBMb2NhbGVLZXkuS0lORF9BTlksIGFjdHVhbFJldHVybik7CisgICAgICAgIGNvbmZpcm1FcXVhbCgidGVzdCBkZV9VUyA3IiwgYWN0dWFsUmV0dXJuWzBdLCBkZSk7CisKKyAgICAgICAgYWN0dWFsUmV0dXJuWzBdID0gbnVsbDsKKyAgICAgICAgdGFyZ2V0ID0gc2VydmljZS5nZXQoZGVfVVMsIDEyMzQsIGFjdHVhbFJldHVybik7CisJY29uZmlybUVxdWFsKCJ0ZXN0IGRlX1VTIDgiLCAiZ2VybWFuIiwgdGFyZ2V0KTsKKyAgICAgICAgY29uZmlybUVxdWFsKCJ0ZXN0IGRlX1VTIDkiLCBhY3R1YWxSZXR1cm5bMF0sIGRlKTsKKworICAgICAgICBzZXJ2aWNlLnJlZ2lzdGVyT2JqZWN0KCJvbmUvZGVfVVMiLCBkZV9VUywgMSk7CisgICAgICAgIHNlcnZpY2UucmVnaXN0ZXJPYmplY3QoInR3by9kZV9VUyIsIGRlX1VTLCAyKTsKKworICAgICAgICB0YXJnZXQgPSBzZXJ2aWNlLmdldChkZV9VUywgMSk7CisgICAgICAgIGNvbmZpcm1FcXVhbCgidGVzdCBkZV9VUyBraW5kIDEiLCAib25lL2RlX1VTIiwgdGFyZ2V0KTsKKyAgICAgICAgCisgICAgICAgIHRhcmdldCA9IHNlcnZpY2UuZ2V0KGRlX1VTLCAyKTsKKyAgICAgICAgY29uZmlybUVxdWFsKCJ0ZXN0IGRlX1VTIGtpbmQgMiIsICJ0d28vZGVfVVMiLCB0YXJnZXQpOworICAgICAgICAKKyAgICAgICAgdGFyZ2V0ID0gc2VydmljZS5nZXQoZGVfVVMpOworICAgICAgICBjb25maXJtRXF1YWwoInRlc3QgZGVfVVMga2luZCAzIiwgImdlcm1hbiIsIHRhcmdldCk7CisKKyAgICAgICAgTG9jYWxlS2V5IGxrZXkgPSBMb2NhbGVLZXkuY3JlYXRlV2l0aENhbm9uaWNhbEZhbGxiYWNrKCJlbiIsIG51bGwsIDEyMzQpOworICAgICAgICBsb2dsbigibGtleSBwcmVmaXg6ICIgKyBsa2V5LnByZWZpeCgpKTsKKyAgICAgICAgbG9nbG4oImxrZXkgZGVzY3JpcHRvcjogIiArIGxrZXkuY3VycmVudERlc2NyaXB0b3IoKSk7CisgICAgICAgIGxvZ2xuKCJsa2V5IGN1cnJlbnQgbG9jYWxlOiAiICsgbGtleS5jdXJyZW50TG9jYWxlKCkpOworCisgICAgICAgIGxrZXkuZmFsbGJhY2soKTsKKyAgICAgICAgbG9nbG4oImxrZXkgZGVzY3JpcHRvciAyOiAiICsgbGtleS5jdXJyZW50RGVzY3JpcHRvcigpKTsKKworICAgICAgICBsa2V5LmZhbGxiYWNrKCk7CisgICAgICAgIGxvZ2xuKCJsa2V5IGRlc2NyaXB0b3IgMzogIiArIGxrZXkuY3VycmVudERlc2NyaXB0b3IoKSk7CisKKwl0YXJnZXQgPSBzZXJ2aWNlLmdldCgiemFfUFBQIik7CisJY29uZmlybUVxdWFsKCJ0ZXN0IHphcHBwIiwgInJvb3QiLCB0YXJnZXQpOworCisJTG9jYWxlIGxvYyA9IExvY2FsZS5nZXREZWZhdWx0KCk7CisJTG9jYWxlLnNldERlZmF1bHQoTG9jYWxlLkpBUEFORVNFKTsKKwl0YXJnZXQgPSBzZXJ2aWNlLmdldCgiemFfUFBQIik7CisJY29uZmlybUVxdWFsKCJ0ZXN0IHdpdGggamEgbG9jYWxlIiwgImphcGFuZXNlIiwgdGFyZ2V0KTsKKworCVNldCBpZHMgPSBzZXJ2aWNlLmdldFZpc2libGVJRHMoKTsKKwlmb3IgKEl0ZXJhdG9yIGl0ZXIgPSBpZHMuaXRlcmF0b3IoKTsgaXRlci5oYXNOZXh0KCk7KSB7CisJICAgIGxvZ2xuKCJpZDogIiArIGl0ZXIubmV4dCgpKTsKKwl9CisKKwlMb2NhbGUuc2V0RGVmYXVsdChsb2MpOworCWlkcyA9IHNlcnZpY2UuZ2V0VmlzaWJsZUlEcygpOworCWZvciAoSXRlcmF0b3IgaXRlciA9IGlkcy5pdGVyYXRvcigpOyBpdGVyLmhhc05leHQoKTspIHsKKwkgICAgbG9nbG4oImlkOiAiICsgaXRlci5uZXh0KCkpOworCX0KKworCXRhcmdldCA9IHNlcnZpY2UuZ2V0KCJ6YV9QUFAiKTsKKwljb25maXJtRXF1YWwoInRlc3Qgd2l0aCBlbiBsb2NhbGUiLCAicm9vdCIsIHRhcmdldCk7CisKKyAgICAgICAgTG9jYWxlW10gbG9jYWxlcyA9IHNlcnZpY2UuZ2V0QXZhaWxhYmxlTG9jYWxlcygpOworICAgICAgICBjb25maXJtSWRlbnRpY2FsKCJ0ZXN0IGF2YWlsYWJsZSBsb2NhbGVzIiwgbG9jYWxlcy5sZW5ndGgsIDYpOworICAgICAgICBsb2dsbigibG9jYWxlczogIik7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbG9jYWxlcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgbG9nKCJcbiAgWyIgKyBpICsgIl0gIiArIGxvY2FsZXNbaV0pOworICAgICAgICB9CisgICAgICAgIGxvZ2xuKCIgIik7CisKKyAgICAgICAgc2VydmljZS5yZWdpc3RlckZhY3RvcnkobmV3IElDVVJlc291cmNlQnVuZGxlRmFjdG9yeSgpKTsKKyAgICAgICAgdGFyZ2V0ID0gc2VydmljZS5nZXQoTG9jYWxlLkpBUEFOKTsKKworICAgICAgICB7CisgICAgICAgICAgICBpbnQgbiA9IDA7CisgICAgICAgICAgICBMaXN0IGZhY3RvcmllcyA9IHNlcnZpY2UuZmFjdG9yaWVzKCk7CisgICAgICAgICAgICBJdGVyYXRvciBpdGVyID0gZmFjdG9yaWVzLml0ZXJhdG9yKCk7CisgICAgICAgICAgICB3aGlsZSAoaXRlci5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBsb2dsbigiWyIgKyBuKysgKyAiXSAiICsgaXRlci5uZXh0KCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gbGlzdCBvbmx5IHRoZSBlbmdsaXNoIGRpc3BsYXkgbmFtZXMgZm9yIGVzLCBpbiByZXZlcnNlIG9yZGVyCisgICAgICAgIC8vIHNpbmNlIHdlJ3JlIHVzaW5nIGxvY2FsZSBrZXlzLCB3ZSBzaG91bGQgZ2V0IGFsbCBhbmQgb25seSB0aGUgZXMgbG9jYWxlcworICAgICAgICAvLyBobW1tLCB0aGUgZGVmYXVsdCB0b1N0cmluZyBmdW5jdGlvbiBkb2Vzbid0IHByaW50IGluIHNvcnRlZCBvcmRlciBmb3IgVHJlZU1hcAorICAgICAgICB7CisgICAgICAgICAgICBTb3J0ZWRNYXAgbWFwID0gc2VydmljZS5nZXREaXNwbGF5TmFtZXMoTG9jYWxlLlVTLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgQ29tcGFyYXRvcigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIGludCBjb21wYXJlKE9iamVjdCBsaHMsIE9iamVjdCByaHMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLVN0cmluZy5DQVNFX0lOU0VOU0lUSVZFX09SREVSLmNvbXBhcmUobGhzLCByaHMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlcyIpOworCisgICAgICAgICAgICBsb2dsbigiZXMgZGlzcGxheSBuYW1lcyBpbiByZXZlcnNlIG9yZGVyICIgKyBtYXApOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdFdyYXBGYWN0b3J5KCkgeworICAgICAgICBmaW5hbCBTdHJpbmcgZ3JlZXRpbmcgPSAiSGVsbG8gVGhlcmUiOworICAgICAgICBmaW5hbCBTdHJpbmcgZ3JlZXRpbmdJRCA9ICJncmVldGluZyI7CisKKyAgICAgICAgSUNVU2VydmljZSBzZXJ2aWNlID0gbmV3IElDVVNlcnZpY2UoIndyYXAiKTsKKyAgICAgICAgc2VydmljZS5yZWdpc3Rlck9iamVjdChncmVldGluZywgZ3JlZXRpbmdJRCk7CisKKyAgICAgICAgbG9nbG4oInRlc3Qgb25lOiAiICsgc2VydmljZS5nZXQoZ3JlZXRpbmdJRCkpOworCisgICAgICAgIGNsYXNzIFdyYXBGYWN0b3J5IGltcGxlbWVudHMgRmFjdG9yeSB7CisgICAgICAgICAgICBwdWJsaWMgT2JqZWN0IGNyZWF0ZShLZXkga2V5LCBJQ1VTZXJ2aWNlIHNlcnZpY2UpIHsKKyAgICAgICAgICAgICAgICBpZiAoa2V5LmN1cnJlbnRJRCgpLmVxdWFscyhncmVldGluZ0lEKSkgeworICAgICAgICAgICAgICAgICAgICBPYmplY3QgcHJldmlvdXMgPSBzZXJ2aWNlLmdldEtleShrZXksIG51bGwsIHRoaXMpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gIkEgZGlmZmVyZW50IGdyZWV0aW5nOiBcIiIgKyBwcmV2aW91cyArICJcIiI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwdWJsaWMgdm9pZCB1cGRhdGVWaXNpYmxlSURzKE1hcCByZXN1bHQpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQucHV0KCJncmVldGluZyIsIHRoaXMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwdWJsaWMgU3RyaW5nIGdldERpc3BsYXlOYW1lKFN0cmluZyBpZCwgTG9jYWxlIGxvY2FsZSkgeworICAgICAgICAgICAgICAgIHJldHVybiAid3JhcCAnIiArIGlkICsgIiciOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHNlcnZpY2UucmVnaXN0ZXJGYWN0b3J5KG5ldyBXcmFwRmFjdG9yeSgpKTsKKworICAgICAgICBjb25maXJtRXF1YWwoIndyYXAgdGVzdDogIiwgc2VydmljZS5nZXQoZ3JlZXRpbmdJRCksICJBIGRpZmZlcmVudCBncmVldGluZzogXCIiICsgZ3JlZXRpbmcgKyAiXCIiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBlcnJsbihTdHJpbmcgbXNnKSB7CisgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbihtc2cpOworICAgICAgICBzdXBlci5lcnJsbihtc2cpOworICAgIH0KKworICAgIC8vIG1pc2MgY292ZXJhZ2UgdGVzdHMKKyAgICBwdWJsaWMgdm9pZCBUZXN0Q292ZXJhZ2UoKSB7CisJLy8gS2V5CisJS2V5IGtleSA9IG5ldyBLZXkoImZvb2JhciIpOworCWxvZ2xuKCJJRDogIiArIGtleS5pZCgpKTsKKwlsb2dsbigiY2Fub25pY2FsSUQ6ICIgKyBrZXkuY2Fub25pY2FsSUQoKSk7CisJbG9nbG4oImN1cnJlbnRJRDogIiArIGtleS5jdXJyZW50SUQoKSk7CisJbG9nbG4oImhhcyBmYWxsYmFjazogIiArIGtleS5mYWxsYmFjaygpKTsKKworCS8vIFNpbXBsZUZhY3RvcnkKKwlPYmplY3Qgb2JqID0gbmV3IE9iamVjdCgpOworCVNpbXBsZUZhY3Rvcnkgc2YgPSBuZXcgU2ltcGxlRmFjdG9yeShvYmosICJvYmplY3QiKTsKKwl0cnkgeworCSAgICBzZiA9IG5ldyBTaW1wbGVGYWN0b3J5KG51bGwsIG51bGwpOworCSAgICBlcnJsbigiZGlkbid0IHRocm93IGV4Y2VwdGlvbiIpOworCX0KKwljYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKwkgICAgbG9nbG4oIk9LOiAiICsgZS5nZXRNZXNzYWdlKCkpOworCX0KKwljYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkgICAgZXJybG4oInRocmV3IHdyb25nIGV4Y2VwdGlvbiIgKyBlKTsKKwl9CisJbG9nbG4oc2YuZ2V0RGlzcGxheU5hbWUoIm9iamVjdCIsIG51bGwpKTsKKworCS8vIElDVVNlcnZpY2UKKwlJQ1VTZXJ2aWNlIHNlcnZpY2UgPSBuZXcgSUNVU2VydmljZSgpOworCXNlcnZpY2UucmVnaXN0ZXJGYWN0b3J5KHNmKTsKKworCXRyeSB7CisJICAgIHNlcnZpY2UuZ2V0KG51bGwsIG51bGwpOworCSAgICBlcnJsbigiZGlkbid0IHRocm93IGV4Y2VwdGlvbiIpOworCX0KKwljYXRjaCAoTnVsbFBvaW50ZXJFeGNlcHRpb24gZSkgeworCSAgICBsb2dsbigiT0s6ICIgKyBlLmdldE1lc3NhZ2UoKSk7CisJfQorICAgICAgICAvKgorCWNhdGNoIChFeGNlcHRpb24gZSkgeworCSAgICBlcnJsbigidGhyZXcgd3JvbmcgZXhjZXB0aW9uIiArIGUpOworCX0KKyAgICAgICAgKi8KKwl0cnkgeworCSAgICBzZXJ2aWNlLnJlZ2lzdGVyRmFjdG9yeShudWxsKTsKKwkgICAgZXJybG4oImRpZG4ndCB0aHJvdyBleGNlcHRpb24iKTsKKwl9CisJY2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIGUpIHsKKwkgICAgbG9nbG4oIk9LOiAiICsgZS5nZXRNZXNzYWdlKCkpOworCX0KKwljYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkgICAgZXJybG4oInRocmV3IHdyb25nIGV4Y2VwdGlvbiIgKyBlKTsKKwl9CisKKwl0cnkgeworCSAgICBzZXJ2aWNlLnVucmVnaXN0ZXJGYWN0b3J5KG51bGwpOworCSAgICBlcnJsbigiZGlkbid0IHRocm93IGV4Y2VwdGlvbiIpOworCX0KKwljYXRjaCAoTnVsbFBvaW50ZXJFeGNlcHRpb24gZSkgeworCSAgICBsb2dsbigiT0s6ICIgKyBlLmdldE1lc3NhZ2UoKSk7CisJfQorCWNhdGNoIChFeGNlcHRpb24gZSkgeworCSAgICBlcnJsbigidGhyZXcgd3JvbmcgZXhjZXB0aW9uIiArIGUpOworCX0KKworCWxvZ2xuKCJvYmplY3QgaXM6ICIgKyBzZXJ2aWNlLmdldCgib2JqZWN0IikpOworCisJbG9nbG4oInN0YXRzOiAiICsgc2VydmljZS5zdGF0cygpKTsKKworCS8vIElDVVJXTG9jaworCisJSUNVUldMb2NrIHJ3bG9jayA9IG5ldyBJQ1VSV0xvY2soKTsKKwlyd2xvY2suYWNxdWlyZVJlYWQoKTsKKwlyd2xvY2sucmVsZWFzZVJlYWQoKTsKKworCXJ3bG9jay5hY3F1aXJlV3JpdGUoKTsKKwlyd2xvY2sucmVsZWFzZVdyaXRlKCk7CisJbG9nbG4oInN0YXRzOiAiICsgcndsb2NrLmdldFN0YXRzKCkpOworCWxvZ2xuKCJzdGF0czogIiArIHJ3bG9jay5jbGVhclN0YXRzKCkpOworCXJ3bG9jay5hY3F1aXJlUmVhZCgpOworCXJ3bG9jay5yZWxlYXNlUmVhZCgpOworCXJ3bG9jay5hY3F1aXJlV3JpdGUoKTsKKwlyd2xvY2sucmVsZWFzZVdyaXRlKCk7CisJbG9nbG4oInN0YXRzOiAiICsgcndsb2NrLmdldFN0YXRzKCkpOworCisJdHJ5IHsKKwkgICAgcndsb2NrLnJlbGVhc2VSZWFkKCk7CisJICAgIGVycmxuKCJubyBlcnJvciB0aHJvd24iKTsKKwl9CisJY2F0Y2ggKEludGVybmFsRXJyb3IgZSkgeworCSAgICBsb2dsbigiT0s6ICIgKyBlLmdldE1lc3NhZ2UoKSk7CisJfQorCisJdHJ5IHsKKwkgICAgcndsb2NrLnJlbGVhc2VXcml0ZSgpOworCSAgICBlcnJsbigibm8gZXJyb3IgdGhyb3duIik7CisJfQorCWNhdGNoIChJbnRlcm5hbEVycm9yIGUpIHsKKwkgICAgbG9nbG4oIk9LOiAiICsgZS5nZXRNZXNzYWdlKCkpOworCX0KKworICAgICAgICAvLyBJQ1VMb2NhbGVTZXJ2aWNlCisKKwkvLyBMb2NhbGVLZXkKKyAgICAgICAgCisJLy8gTG9jYWxlS2V5IGxrZXkgPSBMb2NhbGVLZXkuY3JlYXRlKCJlbl9VUyIsICJqYV9KUCIpOworCS8vIGxrZXkgPSBMb2NhbGVLZXkuY3JlYXRlKG51bGwsIG51bGwpOworCUxvY2FsZUtleSBsa2V5ID0gTG9jYWxlS2V5LmNyZWF0ZVdpdGhDYW5vbmljYWxGYWxsYmFjaygiZW5fVVMiLCAiamFfSlAiKTsKKyAgICAgICAgbG9nbG4oImxrZXk6ICIgKyBsa2V5KTsKKworICAgICAgICBsa2V5ID0gTG9jYWxlS2V5LmNyZWF0ZVdpdGhDYW5vbmljYWxGYWxsYmFjayhudWxsLCBudWxsKTsKKyAgICAgICAgbG9nbG4oImxrZXkgZnJvbSBudWxsLG51bGw6ICIgKyBsa2V5KTsKKworCS8vIExvY2FsZUtleUZhY3RvcnkgCisJTG9jYWxlS2V5RmFjdG9yeSBsa2YgPSBuZXcgTEtGU3ViY2xhc3MoZmFsc2UpOworICAgICAgICBsb2dsbigibGtmOiAiICsgbGtmKTsKKwlsb2dsbigib2JqOiAiICsgbGtmLmNyZWF0ZShsa2V5LCBudWxsKSk7CisJbG9nbG4obGtmLmdldERpc3BsYXlOYW1lKCJmb28iLCBudWxsKSk7CisJbG9nbG4obGtmLmdldERpc3BsYXlOYW1lKCJiYXIiLCBudWxsKSk7CisJbGtmLnVwZGF0ZVZpc2libGVJRHMobmV3IEhhc2hNYXAoKSk7CisKKwlMb2NhbGVLZXlGYWN0b3J5IGludmlzaWJsZUxLRiA9IG5ldyBMS0ZTdWJjbGFzcyhmYWxzZSk7CisJbG9nbG4oIm9iajogIiArIGludmlzaWJsZUxLRi5jcmVhdGUobGtleSwgbnVsbCkpOworCWxvZ2xuKGludmlzaWJsZUxLRi5nZXREaXNwbGF5TmFtZSgiZm9vIiwgbnVsbCkpOworCWxvZ2xuKGludmlzaWJsZUxLRi5nZXREaXNwbGF5TmFtZSgiYmFyIiwgbnVsbCkpOworCWludmlzaWJsZUxLRi51cGRhdGVWaXNpYmxlSURzKG5ldyBIYXNoTWFwKCkpOworCisJLy8gUmVzb3VyY2VCdW5kbGVGYWN0b3J5CisJSUNVUmVzb3VyY2VCdW5kbGVGYWN0b3J5IHJiZiA9IG5ldyBJQ1VSZXNvdXJjZUJ1bmRsZUZhY3RvcnkoKTsKKwlsb2dsbigiUkI6ICIgKyByYmYuY3JlYXRlKGxrZXksIG51bGwpKTsKKworCS8vIElDVU5vdGlmaWVyCisJSUNVTm90aWZpZXIgbmYgPSBuZXcgSUNVTlN1YmNsYXNzKCk7CisJdHJ5IHsKKwkgICAgbmYuYWRkTGlzdGVuZXIobnVsbCk7CisJICAgIGVycmxuKCJhZGRlZCBudWxsIGxpc3RlbmVyIik7CisJfQorCWNhdGNoIChOdWxsUG9pbnRlckV4Y2VwdGlvbiBlKSB7CisJICAgIGxvZ2xuKGUuZ2V0TWVzc2FnZSgpKTsKKwl9CisJY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJICAgIGVycmxuKCJnb3Qgd3JvbmcgZXhjZXB0aW9uIik7CisJfQorCisJdHJ5IHsKKwkgICAgbmYuYWRkTGlzdGVuZXIobmV3IFdyb25nTGlzdGVuZXIoKSk7CisJICAgIGVycmxuKCJhZGRlZCB3cm9uZyBsaXN0ZW5lciIpOworCX0KKwljYXRjaCAoSW50ZXJuYWxFcnJvciBlKSB7CisJICAgIGxvZ2xuKGUuZ2V0TWVzc2FnZSgpKTsKKwl9CisJY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJICAgIGVycmxuKCJnb3Qgd3JvbmcgZXhjZXB0aW9uIik7CisJfQorCisJdHJ5IHsKKwkgICAgbmYucmVtb3ZlTGlzdGVuZXIobnVsbCk7CisJICAgIGVycmxuKCJyZW1vdmVkIG51bGwgbGlzdGVuZXIiKTsKKwl9CisJY2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIGUpIHsKKwkgICAgbG9nbG4oZS5nZXRNZXNzYWdlKCkpOworCX0KKwljYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkgICAgZXJybG4oImdvdCB3cm9uZyBleGNlcHRpb24iKTsKKwl9CisKKwluZi5yZW1vdmVMaXN0ZW5lcihuZXcgTXlMaXN0ZW5lcigpKTsKKwluZi5ub3RpZnlDaGFuZ2VkKCk7CisJbmYuYWRkTGlzdGVuZXIobmV3IE15TGlzdGVuZXIoKSk7CisJbmYucmVtb3ZlTGlzdGVuZXIobmV3IE15TGlzdGVuZXIoKSk7CisgICAgfQorCisgICAgc3RhdGljIGNsYXNzIE15TGlzdGVuZXIgaW1wbGVtZW50cyBFdmVudExpc3RlbmVyIHsKKyAgICB9CisKKyAgICBzdGF0aWMgY2xhc3MgV3JvbmdMaXN0ZW5lciBpbXBsZW1lbnRzIEV2ZW50TGlzdGVuZXIgeworICAgIH0KKworICAgIHN0YXRpYyBjbGFzcyBJQ1VOU3ViY2xhc3MgZXh0ZW5kcyBJQ1VOb3RpZmllciB7CisJcHVibGljIGJvb2xlYW4gYWNjZXB0c0xpc3RlbmVyKEV2ZW50TGlzdGVuZXIgbCkgeworCSAgICByZXR1cm4gbCBpbnN0YW5jZW9mIE15TGlzdGVuZXI7CisJfQorCisgICAgICAgIC8vIG5vdCB1c2VkLCBqdXN0IG5lZWRlZCB0byBpbXBsZW1lbnQgYWJzdHJhY3QgYmFzZQorICAgICAgICAvLy9DTE9WRVI6T0ZGCisJcHVibGljIHZvaWQgbm90aWZ5TGlzdGVuZXIoRXZlbnRMaXN0ZW5lciBsKSB7CisJfQorICAgICAgICAvLy9DTE9WRVI6T04KKyAgICB9CisKKyAgICBzdGF0aWMgY2xhc3MgTEtGU3ViY2xhc3MgZXh0ZW5kcyBMb2NhbGVLZXlGYWN0b3J5IHsKKwlMS0ZTdWJjbGFzcyhib29sZWFuIHZpc2libGUpIHsKKwkgICAgc3VwZXIodmlzaWJsZSA/IFZJU0lCTEUgOiBJTlZJU0lCTEUpOworCX0KKworCXByb3RlY3RlZCBTZXQgZ2V0U3VwcG9ydGVkSURzKCkgeworICAgICAgICAgICAgcmV0dXJuIENvbGxlY3Rpb25zLkVNUFRZX1NFVDsKKwl9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3V0aWwvSUNVU2VydmljZVRlc3RTYW1wbGUuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC91dGlsL0lDVVNlcnZpY2VUZXN0U2FtcGxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjUyZTNmMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC91dGlsL0lDVVNlcnZpY2VUZXN0U2FtcGxlLmphdmEKQEAgLTAsMCArMSwyMTAgQEAKKy8qKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMS0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvdXRpbC9JQ1VTZXJ2aWNlVGVzdFNhbXBsZS5qYXZhLHYgJAorICogJERhdGU6IDIwMDIvMDgvMTMgMjI6MTA6MjAgJAorICogJFJldmlzaW9uOiAxLjIgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3QudXRpbDsKKworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuSUNVTG9jYWxlU2VydmljZTsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLklDVVNlcnZpY2U7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5Mb2NhbGVVdGlsaXR5OworaW1wb3J0IGphdmEudXRpbC5FdmVudExpc3RlbmVyOworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworaW1wb3J0IGphdmEudXRpbC5NYXA7CitpbXBvcnQgamF2YS51dGlsLk1hcC5FbnRyeTsKK2ltcG9ydCBqYXZhLnV0aWwuU2V0OworCitwdWJsaWMgY2xhc3MgSUNVU2VydmljZVRlc3RTYW1wbGUgeworICAgIHN0YXRpYyBwdWJsaWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKwlIZWxsb1NlcnZpY2VDbGllbnQgY2xpZW50ID0gbmV3IEhlbGxvU2VydmljZUNsaWVudCgpOworCisJVGhyZWFkIHQgPSBuZXcgSGVsbG9VcGRhdGVUaHJlYWQoKTsKKwl0LnN0YXJ0KCk7CisJdHJ5IHsKKwkgICAgdC5qb2luKCk7CisJfQorCWNhdGNoIChJbnRlcnJ1cHRlZEV4Y2VwdGlvbiBlKSB7CisJfQorCVN5c3RlbS5vdXQucHJpbnRsbigiZG9uZSIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEEgY2xhc3MgdGhhdCBkaXNwbGF5cyB0aGUgY3VycmVudCBuYW1lcyBpbiB0aGUgSGVsbG8gc2VydmljZS4KKyAgICAgKiBFYWNoIHRpbWUgdGhlIHNlcnZpY2UgY2hhbmdlcywgaXQgcmVkaXNwbGF5cyB0aGUgbmFtZXMuCisgICAgICovCisgICAgc3RhdGljIGNsYXNzIEhlbGxvU2VydmljZUNsaWVudCBpbXBsZW1lbnRzIEhlbGxvU2VydmljZS5IZWxsb1NlcnZpY2VMaXN0ZW5lciB7CisKKwlIZWxsb1NlcnZpY2VDbGllbnQoKSB7CisJICAgIEhlbGxvU2VydmljZS5hZGRMaXN0ZW5lcih0aGlzKTsKKwkgICAgZGlzcGxheSgpOworCX0KKworCS8qKgorCSAqIFRoaXMgd2lsbCBiZSBjYWxsZWQgaW4gdGhlIG5vdGlmaWNhdGlvbiB0aHJlYWQgb2YKKwkgKiBJQ1VOb3RpZmllci4gIElDVU5vdGlmaWVyIGNvdWxkIHNwYXduIGEgKG5vbi1kYWVtb24pIHRocmVhZAorCSAqIGZvciBlYWNoIGxpc3RlbmVyLCBzbyB0aGF0IGltcG9saXRlIGxpc3RlbmVycyB3b3VsZG4ndCBob2xkCisJICogdXAgbm90aWZpY2F0aW9uLCBidXQgcmlnaHQgbm93IGl0IGRvZXNuJ3QuICBJbnN0ZWFkLCBhbGwKKwkgKiBub3RpZmljYXRpb25zIGFyZSBkZWxpdmVyZWQgb24gdGhlIG5vdGlmaWNhdGlvbiB0aHJlYWQuCisJICogU2luY2UgdGhhdCdzIGEgZGFlbW9uIHRocmVhZCwgYSBub3RpZmljYXRpb24gbWlnaHQgbm90CisJICogY29tcGxldGUgYmVmb3JlIG1haW4gdGVybWluYXRlcy4gIAorCSAqLworCXB1YmxpYyB2b2lkIGhlbGxvU2VydmljZUNoYW5nZWQoKSB7CisJICAgIGRpc3BsYXkoKTsKKwl9CisKKwlwcml2YXRlIHZvaWQgZGlzcGxheSgpIHsKKwkgICAgTWFwIG5hbWVzID0gSGVsbG9TZXJ2aWNlLmdldERpc3BsYXlOYW1lcyhMb2NhbGUuVVMpOworCSAgICBTeXN0ZW0ub3V0LnByaW50bG4oImRpc3BsYXlpbmcgIiArIG5hbWVzLnNpemUoKSArICIgbmFtZXMuIik7CisJICAgIEl0ZXJhdG9yIGl0ZXIgPSBuYW1lcy5lbnRyeVNldCgpLml0ZXJhdG9yKCk7CisJICAgIHdoaWxlIChpdGVyLmhhc05leHQoKSkgeworCQlFbnRyeSBlbnRyeSA9IChFbnRyeSlpdGVyLm5leHQoKTsKKwkJU3RyaW5nIGRpc3BsYXlOYW1lID0gKFN0cmluZyllbnRyeS5nZXRLZXkoKTsKKwkJSGVsbG9TZXJ2aWNlIHNlcnZpY2UgPSBIZWxsb1NlcnZpY2UuZ2V0KChTdHJpbmcpZW50cnkuZ2V0VmFsdWUoKSk7CisJCVN5c3RlbS5vdXQucHJpbnRsbihkaXNwbGF5TmFtZSArICIgc2F5cyAiICsgc2VydmljZS5oZWxsbygpKTsKKwkJdHJ5IHsKKwkJICAgIFRocmVhZC5zbGVlcCg1MCk7CisJCX0KKwkJY2F0Y2ggKEludGVycnVwdGVkRXhjZXB0aW9uIGUpIHsKKwkJfQorCSAgICB9CisJICAgIFN5c3RlbS5vdXQucHJpbnRsbigiLS0tLSIpOworCX0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBIHRocmVhZCB0byB1cGRhdGUgdGhlIHNlcnZpY2UuCisgICAgICovCisgICAgc3RhdGljIGNsYXNzIEhlbGxvVXBkYXRlVGhyZWFkIGV4dGVuZHMgVGhyZWFkIHsKKwlTdHJpbmdbXVtdIHVwZGF0ZXMgPSB7CisJICAgIHsgIkhleSIsICJlbl9VU19JTkZPUk1BTCIgfSwKKwkgICAgeyAiSGFsbG8iLCAiZGVfREVfSU5GT1JNQUwiIH0sCisJICAgIHsgIllvISIsICJlbl9VU19DQUxJRk9STklBX0lORk9STUFMIiB9LAorCSAgICB7ICJDaGkgRmFubGUgTWE/IiwgInpoX19JTkZPUk1BTCIgfSwKKwkgICAgeyAiTXVuY2ggbXVuY2guLi4gQnVyZ2VyPyIsICJlbiIgfSwKKwkgICAgeyAiU25pZmYiLCAiZnIiIH0sCisJICAgIHsgIlRvbmdaaGkhIE1hb1plRG9uZyBTaVhpYW5nIFdhbiBTdWkhIiwgInpoX0NOIiB9LAorCSAgICB7ICJCaWVyPyBKYSEiLCAiZGUiIH0sCisJfTsKKwlwdWJsaWMgdm9pZCBydW4oKSB7CisJICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdXBkYXRlcy5sZW5ndGg7ICsraSkgeworCQl0cnkgeworCQkgICAgVGhyZWFkLnNsZWVwKDUwMCk7CisJCX0KKwkJY2F0Y2ggKEludGVycnVwdGVkRXhjZXB0aW9uIGUpIHsKKwkJfQorCQlIZWxsb1NlcnZpY2UucmVnaXN0ZXIodXBkYXRlc1tpXVswXSwgTG9jYWxlVXRpbGl0eS5nZXRMb2NhbGVGcm9tTmFtZSh1cGRhdGVzW2ldWzFdKSk7CisJICAgIH0KKwl9CisgICAgfQorCisgICAgLyoqCisgICAgICogQW4gZXhhbXBsZSBzZXJ2aWNlIHRoYXQgd3JhcHMgYW4gSUNVIHNlcnZpY2UgaW4gb3JkZXIgdG8gZXhwb3J0IGN1c3RvbSBBUEkgYW5kCisgICAgICogbm90aWZpY2F0aW9uLiBUaGUgc2VydmljZSBqdXN0IGltcGxlbWVudHMgJ2hlbGxvJy4KKyAgICAgKi8KKyAgICBzdGF0aWMgZmluYWwgY2xhc3MgSGVsbG9TZXJ2aWNlIHsKKwlwcml2YXRlIHN0YXRpYyBJQ1VTZXJ2aWNlIHJlZ2lzdHJ5OworCXByaXZhdGUgU3RyaW5nIG5hbWU7CisKKwlwcml2YXRlIEhlbGxvU2VydmljZShTdHJpbmcgbmFtZSkgeyAKKwkgICAgdGhpcy5uYW1lID0gbmFtZTsgCisJfQorCisJLyoqCisJICogVGhlIGhlbGxvIHNlcnZpY2UuLi4KKwkgKi8KKwlwdWJsaWMgU3RyaW5nIGhlbGxvKCkgeyAKKwkgICAgcmV0dXJuIG5hbWU7IAorCX0KKwkKKwlwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeyAKKwkgICAgcmV0dXJuIHN1cGVyLnRvU3RyaW5nKCkgKyAiOiAiICsgbmFtZTsgCisJfQorCisJLyoqCisJICogRGVmZXJyZWQgaW5pdC4KKwkgKi8KKwlwcml2YXRlIHN0YXRpYyBJQ1VTZXJ2aWNlIHJlZ2lzdHJ5KCkgeworCSAgICBpZiAocmVnaXN0cnkgPT0gbnVsbCkgeworCQlpbml0UmVnaXN0cnkoKTsKKwkgICAgfQorCSAgICByZXR1cm4gcmVnaXN0cnk7CisJfQorCisJcHJpdmF0ZSBzdGF0aWMgdm9pZCBpbml0UmVnaXN0cnkoKSB7CisJICAgIHJlZ2lzdHJ5ID0gbmV3IElDVUxvY2FsZVNlcnZpY2UoKSB7CisJCSAgICBwcm90ZWN0ZWQgYm9vbGVhbiBhY2NlcHRzTGlzdGVuZXIoRXZlbnRMaXN0ZW5lciBsKSB7CisJCQlyZXR1cm4gdHJ1ZTsgLy8gd2UgYWxyZWFkeSB2ZXJpZnkgaW4gb3VyIHdyYXBwZXIgQVBJcworCQkgICAgfQorCQkgICAgcHJvdGVjdGVkIHZvaWQgbm90aWZ5TGlzdGVuZXIoRXZlbnRMaXN0ZW5lciBsKSB7CisJCQkoKEhlbGxvU2VydmljZUxpc3RlbmVyKWwpLmhlbGxvU2VydmljZUNoYW5nZWQoKTsKKwkJICAgIH0KKwkJfTsKKworCSAgICAvLyBpbml0aWFsaXplCisJICAgIGRvUmVnaXN0ZXIoIkhlbGxvIiwgImVuIik7CisJICAgIGRvUmVnaXN0ZXIoIkJvbmpvdXIiLCAiZnIiKTsKKwkgICAgZG9SZWdpc3RlcigiTmkgSGFvIiwgInpoX0NOIik7CisJICAgIGRvUmVnaXN0ZXIoIkd1dGVuIFRhZyIsICJkZSIpOworCX0KKworCS8qKgorCSAqIEEgY3VzdG9tIGxpc3RlbmVyIGZvciBjaGFuZ2VzIHRvIHRoaXMgc2VydmljZS4gIFdlIGRvbid0IG5lZWQgdG8KKwkgKiBwb2ludCB0byB0aGUgc2VydmljZSBzaW5jZSBpdCBpcyBkZWZpbmVkIGJ5IHRoaXMgY2xhc3MgYW5kIG5vdAorCSAqIGFuIG9iamVjdC4KKwkgKi8KKwlwdWJsaWMgc3RhdGljIGludGVyZmFjZSBIZWxsb1NlcnZpY2VMaXN0ZW5lciBleHRlbmRzIEV2ZW50TGlzdGVuZXIgeworCSAgICBwdWJsaWMgdm9pZCBoZWxsb1NlcnZpY2VDaGFuZ2VkKCk7CisJfQorCisJLyoqCisJICogVHlwZS1zYWZlIG5vdGlmaWNhdGlvbiBmb3IgdGhpcyBzZXJ2aWNlLgorCSAqLworCXB1YmxpYyBzdGF0aWMgdm9pZCBhZGRMaXN0ZW5lcihIZWxsb1NlcnZpY2VMaXN0ZW5lciBsKSB7CisJICAgIHJlZ2lzdHJ5KCkuYWRkTGlzdGVuZXIobCk7CisJfQorCisJLyoqCisJICogVHlwZS1zYWZlIG5vdGlmaWNhdGlvbiBmb3IgdGhpcyBzZXJ2aWNlLgorCSAqLworCXB1YmxpYyBzdGF0aWMgdm9pZCByZW1vdmVMaXN0ZW5lcihIZWxsb1NlcnZpY2VMaXN0ZW5lciBsKSB7CisJICAgIHJlZ2lzdHJ5KCkucmVtb3ZlTGlzdGVuZXIobCk7CisJfQorCisJLyoqCisJICogVHlwZS1zYWZlIGFjY2VzcyB0byB0aGUgc2VydmljZS4KKwkgKi8KKwlwdWJsaWMgc3RhdGljIEhlbGxvU2VydmljZSBnZXQoU3RyaW5nIGlkKSB7CisJICAgIHJldHVybiAoSGVsbG9TZXJ2aWNlKXJlZ2lzdHJ5KCkuZ2V0KGlkKTsKKwl9CisKKwlwdWJsaWMgc3RhdGljIFNldCBnZXRWaXNpYmxlSURzKCkgeworCSAgICByZXR1cm4gcmVnaXN0cnkoKS5nZXRWaXNpYmxlSURzKCk7CisJfQorCisJcHVibGljIHN0YXRpYyBNYXAgZ2V0RGlzcGxheU5hbWVzKExvY2FsZSBsb2NhbGUpIHsKKwkgICAgcmV0dXJuIHJlZ2lzdHJ5KCkuZ2V0RGlzcGxheU5hbWVzKGxvY2FsZSk7CisJfQorCisJLyoqCisJICogUmVnaXN0ZXIgYSBuZXcgaGVsbG8gc3RyaW5nIGZvciB0aGlzIGxvY2FsZS4KKwkgKi8KKwlwdWJsaWMgc3RhdGljIHZvaWQgcmVnaXN0ZXIoU3RyaW5nIGhlbGxvU3RyaW5nLCBMb2NhbGUgbG9jYWxlKSB7CisJICAgIGlmIChoZWxsb1N0cmluZyA9PSBudWxsIHx8IGxvY2FsZSA9PSBudWxsKSB7CisJCXRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigpOworCSAgICB9CisJICAgIGRvUmVnaXN0ZXIoaGVsbG9TdHJpbmcsIExvY2FsZVV0aWxpdHkuY2Fub25pY2FsTG9jYWxlU3RyaW5nKGxvY2FsZS50b1N0cmluZygpKSk7CisJfQorCisJcHJpdmF0ZSBzdGF0aWMgdm9pZCBkb1JlZ2lzdGVyKFN0cmluZyBoZWxsbywgU3RyaW5nIGlkKSB7CisJICAgIHJlZ2lzdHJ5KCkucmVnaXN0ZXJPYmplY3QobmV3IEhlbGxvU2VydmljZShoZWxsbyksIGlkKTsKKwl9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3V0aWwvSUNVU2VydmljZVRocmVhZFRlc3QuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC91dGlsL0lDVVNlcnZpY2VUaHJlYWRUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2U4N2Q3MgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC91dGlsL0lDVVNlcnZpY2VUaHJlYWRUZXN0LmphdmEKQEAgLTAsMCArMSw0NTYgQEAKKy8qKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMS0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvdXRpbC9JQ1VTZXJ2aWNlVGhyZWFkVGVzdC5qYXZhLHYgJAorICogJERhdGU6IDIwMDIvMTAvMDIgMjA6MjA6MjUgJAorICogJFJldmlzaW9uOiAxLjUgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRlc3QudXRpbDsKKworaW1wb3J0IGNvbS5pYm0uaWN1LmRldi50ZXN0LlRlc3RGbXdrOworaW1wb3J0IGNvbS5pYm0uaWN1LmRldi50ZXN0LlRlc3RMb2c7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5JQ1VTZXJ2aWNlOworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuSUNVU2VydmljZS5GYWN0b3J5OworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuSUNVU2VydmljZS5TaW1wbGVGYWN0b3J5OworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuSUNVU2VydmljZS5LZXk7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5Mb2NhbGVVdGlsaXR5OworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuSUNVTG9jYWxlRGF0YTsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLklDVUxvY2FsZVNlcnZpY2U7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5JQ1VMb2NhbGVTZXJ2aWNlLkxvY2FsZUtleTsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLklDVUxvY2FsZVNlcnZpY2UuSUNVUmVzb3VyY2VCdW5kbGVGYWN0b3J5OworaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuQ29tcGFyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworaW1wb3J0IGphdmEudXRpbC5NYXAuRW50cnk7CitpbXBvcnQgamF2YS51dGlsLlJhbmRvbTsKK2ltcG9ydCBqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGU7CitpbXBvcnQgamF2YS51dGlsLlNldDsKK2ltcG9ydCBqYXZhLnV0aWwuVHJlZVNldDsKKworcHVibGljIGNsYXNzIElDVVNlcnZpY2VUaHJlYWRUZXN0IGV4dGVuZHMgVGVzdEZtd2sKK3sgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBQUklOVFNUQVRTID0gZmFsc2U7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwlJQ1VTZXJ2aWNlVGhyZWFkVGVzdCB0ZXN0ID0gbmV3IElDVVNlcnZpY2VUaHJlYWRUZXN0KCk7CisJdGVzdC5ydW4oYXJncyk7CisKKwkvLyBnZXQKKwkvLyBnZXR2aXNpYmxlaWRzCisJLy8gZ2V0ZGlzcGxheW5hbWUobG9jYWxlKQorCS8vIGZhY3RvcmllcworCQorCS8vIHJlZ2lzdGVyRmFjdG9yeQorCS8vIHVucmVnaXN0ZXJGYWN0b3J5CisKKwkvLyAxKSBjb25jdXJyZW50IGFjY2VzcworCS8vIDIpIGFjY2VzcyB3aGlsZSBmYWN0b3JpZXMgY2hhbmdlCisJLy8gMykgaXRlcmF0aW9uIHdoaWxlIGZhY3RvcmllcyBjaGFuZ2UKKwkvLyA0KSBjb25jdXJyZW50IGNvbmZsaWN0aW5nIGFjY2VzcworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZ1tdIGNvdW50cmllcyA9IHsKKwkiYWIiLCAiYmMiLCAiY2QiLCAiZGUiLCAiZWYiLCAiZmciLCAiZ2giLCAiamkiLCAiaWoiLCAiamsiCisgICAgfTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmdbXSBsYW5ndWFnZXMgPSB7CisJIiIsICJaWSIsICJZWCIsICJYVyIsICJXViIsICJWVSIsICJVVCIsICJUUyIsICJTUiIsICJSUSIsICJRUCIKKyAgICB9OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZ1tdIHZhcmlhbnRzID0geworCSIiLCAiIiwgIiIsICJHT0xEIiwgIlNJTFZFUiIsICJCUk9OWkUiCisgICAgfTsKKworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIFRlc3RGYWN0b3J5IGV4dGVuZHMgU2ltcGxlRmFjdG9yeSB7CisJVGVzdEZhY3RvcnkoU3RyaW5nIGlkKSB7CisJICAgIHN1cGVyKExvY2FsZVV0aWxpdHkuZ2V0TG9jYWxlRnJvbU5hbWUoaWQpLCBpZCwgdHJ1ZSk7CisJfQorCisJcHVibGljIFN0cmluZyBnZXREaXNwbGF5TmFtZShTdHJpbmcgaWQsIExvY2FsZSBsb2NhbGUpIHsKKwkgICAgcmV0dXJuICh2aXNpYmxlICYmIGlkLmVxdWFscyh0aGlzLmlkKSkgPyAiKCIgKyBsb2NhbGUudG9TdHJpbmcoKSArICIpICIgKyBpZCA6IG51bGw7CisJfQorCisJcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKwkgICAgcmV0dXJuICJGYWN0b3J5XyIgKyBpZDsKKwl9CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgUmFuZG9tIHIgPSBuZXcgUmFuZG9tKCk7CisKKyAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgZ2V0Q0xWKCkgeworCVN0cmluZyBjID0gY291bnRyaWVzW3IubmV4dEludChjb3VudHJpZXMubGVuZ3RoKV07CisJU3RyaW5nIGwgPSBsYW5ndWFnZXNbci5uZXh0SW50KGxhbmd1YWdlcy5sZW5ndGgpXTsKKwlTdHJpbmcgdiA9IHZhcmlhbnRzW3IubmV4dEludCh2YXJpYW50cy5sZW5ndGgpXTsKKwlyZXR1cm4gbmV3IExvY2FsZShjLCBsLCB2KS50b1N0cmluZygpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gV0FJVCA9IHRydWU7CisgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBHTyA9IGZhbHNlOworICAgIHByaXZhdGUgc3RhdGljIGxvbmcgVElNRSA9IDUwMDA7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgcnVuVGhyZWFkcygpIHsKKwlydW5UaHJlYWRzKFRJTUUpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBydW5UaHJlYWRzKGxvbmcgdGltZSkgeworCXRyeSB7CisJICAgIEdPID0gdHJ1ZTsKKwkgICAgV0FJVCA9IGZhbHNlOworCisJICAgIFRocmVhZC5zbGVlcCh0aW1lKTsKKworCSAgICBXQUlUID0gdHJ1ZTsKKwkgICAgR08gPSBmYWxzZTsKKworCSAgICBUaHJlYWQuc2xlZXAoMzAwKTsKKwl9CisJY2F0Y2ggKEludGVycnVwdGVkRXhjZXB0aW9uIGUpIHsKKwl9CisgICAgfQorCisgICAgc3RhdGljIGNsYXNzIFRlc3RUaHJlYWQgZXh0ZW5kcyBUaHJlYWQgaW1wbGVtZW50cyBUZXN0TG9nIHsKKwlwcml2YXRlIGZpbmFsIFN0cmluZyBuYW1lOworCXByb3RlY3RlZCBJQ1VTZXJ2aWNlIHNlcnZpY2U7CisJcHJpdmF0ZSBmaW5hbCBsb25nIGRlbGF5OworCXByaXZhdGUgZmluYWwgVGVzdExvZyBsb2c7CisKKwlwdWJsaWMgVGVzdFRocmVhZChTdHJpbmcgbmFtZSwgSUNVU2VydmljZSBzZXJ2aWNlLCBsb25nIGRlbGF5LCBUZXN0TG9nIGxvZykgeworCSAgICB0aGlzLm5hbWUgPSBuYW1lICsgIiAiOworCSAgICB0aGlzLnNlcnZpY2UgPSBzZXJ2aWNlOworCSAgICB0aGlzLmRlbGF5ID0gZGVsYXk7CisJICAgIHRoaXMubG9nID0gbG9nOworCSAgICB0aGlzLnNldERhZW1vbih0cnVlKTsKKwl9CisKKwlwdWJsaWMgdm9pZCBydW4oKSB7CisJICAgIHdoaWxlIChXQUlUKSB7CisJCVRocmVhZC55aWVsZCgpOworCSAgICB9CisKKwkgICAgdHJ5IHsKKwkJd2hpbGUgKEdPKSB7CisJCSAgICBpdGVyYXRlKCk7CisJCSAgICBpZiAoZGVsYXkgPiAwKSB7CisJCQlUaHJlYWQuc2xlZXAoZGVsYXkpOworCQkgICAgfQorCQl9CisJICAgIH0KKwkgICAgY2F0Y2ggKEludGVycnVwdGVkRXhjZXB0aW9uIGUpIHsKKwkgICAgfQorCX0KKworCXByb3RlY3RlZCB2b2lkIGl0ZXJhdGUoKSB7CisJfQorCisJcHVibGljIGJvb2xlYW4gbG9nZ2luZygpIHsKKwkgICAgcmV0dXJuIGxvZyAhPSBudWxsOworCX0KKworCXB1YmxpYyB2b2lkIGxvZyhTdHJpbmcgbXNnKSB7CisJICAgIGlmIChsb2dnaW5nKCkpIHsKKwkJbG9nLmxvZyhuYW1lICsgbXNnKTsKKwkgICAgfQorCX0KKworCXB1YmxpYyB2b2lkIGxvZ2xuKFN0cmluZyBtc2cpIHsKKwkgICAgaWYgKGxvZ2dpbmcoKSkgeworCQlsb2cubG9nbG4obmFtZSArIG1zZyk7CisJICAgIH0KKwl9CisKKwlwdWJsaWMgdm9pZCBlcnIoU3RyaW5nIG1zZykgeworCSAgICBpZiAobG9nZ2luZygpKSB7CisJCWxvZy5lcnIobmFtZSArIG1zZyk7CisJICAgIH0KKwl9CisKKwlwdWJsaWMgdm9pZCBlcnJsbihTdHJpbmcgbXNnKSB7CisJICAgIGlmIChsb2dnaW5nKCkpIHsKKwkJbG9nLmVycmxuKG5hbWUgKyBtc2cpOworCSAgICB9CisJfQorICAgIH0KKworICAgIHN0YXRpYyBjbGFzcyBSZWdpc3RlckZhY3RvcnlUaHJlYWQgZXh0ZW5kcyBUZXN0VGhyZWFkIHsKKwlSZWdpc3RlckZhY3RvcnlUaHJlYWQoU3RyaW5nIG5hbWUsIElDVVNlcnZpY2Ugc2VydmljZSwgbG9uZyBkZWxheSwgVGVzdExvZyBsb2cpIHsKKwkgICAgc3VwZXIoIlJFRyAiICsgbmFtZSwgc2VydmljZSwgZGVsYXksIGxvZyk7CisJfQorCisJcHJvdGVjdGVkIHZvaWQgaXRlcmF0ZSgpIHsKKwkgICAgRmFjdG9yeSBmID0gbmV3IFRlc3RGYWN0b3J5KGdldENMVigpKTsKKwkgICAgc2VydmljZS5yZWdpc3RlckZhY3RvcnkoZik7CisJICAgIGxvZ2xuKGYudG9TdHJpbmcoKSk7CisJfQorICAgIH0KKworICAgIHN0YXRpYyBjbGFzcyBVbnJlZ2lzdGVyRmFjdG9yeVRocmVhZCBleHRlbmRzIFRlc3RUaHJlYWQgeworCXByaXZhdGUgUmFuZG9tIHI7CisJTGlzdCBmYWN0b3JpZXM7CisKKwlVbnJlZ2lzdGVyRmFjdG9yeVRocmVhZChTdHJpbmcgbmFtZSwgSUNVU2VydmljZSBzZXJ2aWNlLCBsb25nIGRlbGF5LCBUZXN0TG9nIGxvZykgeworCSAgICBzdXBlcigiVU5SRUcgIiArIG5hbWUsIHNlcnZpY2UsIGRlbGF5LCBsb2cpOworCSAgICAKKwkgICAgciA9IG5ldyBSYW5kb20oKTsKKwkgICAgZmFjdG9yaWVzID0gc2VydmljZS5mYWN0b3JpZXMoKTsKKwl9CisKKwlwdWJsaWMgdm9pZCBpdGVyYXRlKCkgeworCSAgICBpbnQgcyA9IGZhY3Rvcmllcy5zaXplKCk7CisJICAgIGlmIChzID09IDApIHsKKwkJZmFjdG9yaWVzID0gc2VydmljZS5mYWN0b3JpZXMoKTsKKwkgICAgfSBlbHNlIHsKKwkJaW50IG4gPSByLm5leHRJbnQocyk7CisJCUZhY3RvcnkgZiA9IChGYWN0b3J5KWZhY3Rvcmllcy5yZW1vdmUobik7CisJCWJvb2xlYW4gc3VjY2VzcyA9IHNlcnZpY2UudW5yZWdpc3RlckZhY3RvcnkoZik7CisJCWlmIChsb2dnaW5nKCkpIGxvZ2xuKCJmYWN0b3J5OiAiICsgZiArIChzdWNjZXNzID8gIiBzdWNjZWVkZWQuIiA6ICIgKioqIGZhaWxlZC4iKSk7CisJICAgIH0KKwl9CisgICAgfQorCisgICAgc3RhdGljIGNsYXNzIFVucmVnaXN0ZXJGYWN0b3J5TGlzdFRocmVhZCBleHRlbmRzIFRlc3RUaHJlYWQgeworCUZhY3RvcnlbXSBmYWN0b3JpZXM7CisJaW50IG47CisKKwlVbnJlZ2lzdGVyRmFjdG9yeUxpc3RUaHJlYWQoU3RyaW5nIG5hbWUsIElDVVNlcnZpY2Ugc2VydmljZSwgbG9uZyBkZWxheSwgRmFjdG9yeVtdIGZhY3RvcmllcywgVGVzdExvZyBsb2cpIHsKKwkgICAgc3VwZXIoIlVOUkVHICIgKyBuYW1lLCBzZXJ2aWNlLCBkZWxheSwgbG9nKTsKKwkgICAgCisJICAgIHRoaXMuZmFjdG9yaWVzID0gZmFjdG9yaWVzOworCX0KKworCXB1YmxpYyB2b2lkIGl0ZXJhdGUoKSB7CisJICAgIGlmIChuIDwgZmFjdG9yaWVzLmxlbmd0aCkgeworCQlGYWN0b3J5IGYgPSBmYWN0b3JpZXNbbisrXTsKKwkJYm9vbGVhbiBzdWNjZXNzID0gc2VydmljZS51bnJlZ2lzdGVyRmFjdG9yeShmKTsKKwkJaWYgKGxvZ2dpbmcoKSkgbG9nbG4oImZhY3Rvcnk6ICIgKyBmICsgKHN1Y2Nlc3MgPyAiIHN1Y2NlZWRlZC4iIDogIiAqKiogZmFpbGVkLiIpKTsKKwkgICAgfQorCX0KKyAgICB9CisKKworICAgIHN0YXRpYyBjbGFzcyBHZXRWaXNpYmxlVGhyZWFkIGV4dGVuZHMgVGVzdFRocmVhZCB7CisJR2V0VmlzaWJsZVRocmVhZChTdHJpbmcgbmFtZSwgSUNVU2VydmljZSBzZXJ2aWNlLCBsb25nIGRlbGF5LCBUZXN0TG9nIGxvZykgeworCSAgICBzdXBlcigiVklTICIgKyBuYW1lLCBzZXJ2aWNlLCBkZWxheSwgbG9nKTsKKwl9CisKKwlwcm90ZWN0ZWQgdm9pZCBpdGVyYXRlKCkgeworCSAgICBTZXQgaWRzID0gc2VydmljZS5nZXRWaXNpYmxlSURzKCk7CisJICAgIEl0ZXJhdG9yIGl0ZXIgPSBpZHMuaXRlcmF0b3IoKTsKKwkgICAgaW50IG4gPSAxMDsKKwkgICAgd2hpbGUgKC0tbiA+PSAwICYmIGl0ZXIuaGFzTmV4dCgpKSB7CisJCVN0cmluZyBpZCA9IChTdHJpbmcpaXRlci5uZXh0KCk7CisJCU9iamVjdCByZXN1bHQgPSBzZXJ2aWNlLmdldChpZCk7CisJCWxvZ2xuKCJpdGVyOiAiICsgbiArICIgaWQ6ICIgKyBpZCArICIgcmVzdWx0OiAiICsgcmVzdWx0KTsKKwkgICAgfQorCX0KKyAgICB9CisKKyAgICBzdGF0aWMgY2xhc3MgR2V0RGlzcGxheVRocmVhZCBleHRlbmRzIFRlc3RUaHJlYWQgeworCUxvY2FsZSBsb2NhbGU7CisKKwlHZXREaXNwbGF5VGhyZWFkKFN0cmluZyBuYW1lLCBJQ1VTZXJ2aWNlIHNlcnZpY2UsIGxvbmcgZGVsYXksIExvY2FsZSBsb2NhbGUsIFRlc3RMb2cgbG9nKSB7CisJICAgIHN1cGVyKCJESVMgIiArIG5hbWUsIHNlcnZpY2UsIGRlbGF5LCBsb2cpOworCisJICAgIHRoaXMubG9jYWxlID0gbG9jYWxlOworCX0KKworCXByb3RlY3RlZCB2b2lkIGl0ZXJhdGUoKSB7CisJICAgIE1hcCBuYW1lcyA9IHNlcnZpY2UuZ2V0RGlzcGxheU5hbWVzKGxvY2FsZSk7CisJICAgIEl0ZXJhdG9yIGl0ZXIgPSBuYW1lcy5lbnRyeVNldCgpLml0ZXJhdG9yKCk7CisJICAgIGludCBuID0gMTA7CisJICAgIHdoaWxlICgtLW4gPj0gMCAmJiBpdGVyLmhhc05leHQoKSkgeworCQlFbnRyeSBlID0gKEVudHJ5KWl0ZXIubmV4dCgpOworCQlTdHJpbmcgZG5hbWUgPSAoU3RyaW5nKWUuZ2V0S2V5KCk7CisJCVN0cmluZyBpZCA9IChTdHJpbmcpZS5nZXRWYWx1ZSgpOworCQlPYmplY3QgcmVzdWx0ID0gc2VydmljZS5nZXQoaWQpOworCQlpZiAobG9nZ2luZygpKSBsb2dsbigiIGl0ZXI6ICIgKyBuICsgCisJCQkJICAgICAiIGRuYW1lOiAiICsgZG5hbWUgKyAKKwkJCQkgICAgICIgaWQ6ICIgKyBpZCArIAorCQkJCSAgICAgIiByZXN1bHQ6ICIgKyByZXN1bHQpOworCSAgICB9CisJfQorICAgIH0KKworICAgIHN0YXRpYyBjbGFzcyBHZXRUaHJlYWQgZXh0ZW5kcyBUZXN0VGhyZWFkIHsKKwlwcml2YXRlIFN0cmluZ1tdIGFjdHVhbElEOworCisJR2V0VGhyZWFkKFN0cmluZyBuYW1lLCBJQ1VTZXJ2aWNlIHNlcnZpY2UsIGxvbmcgZGVsYXksIFRlc3RMb2cgbG9nKSB7CisJICAgIHN1cGVyKCJHRVQgIiArIG5hbWUsIHNlcnZpY2UsIGRlbGF5LCBsb2cpOworCisJICAgIGFjdHVhbElEID0gbmV3IFN0cmluZ1sxXTsKKwl9CisKKwlwcm90ZWN0ZWQgdm9pZCBpdGVyYXRlKCkgeworCSAgICBTdHJpbmcgaWQgPSBnZXRDTFYoKTsKKwkgICAgT2JqZWN0IG8gPSBzZXJ2aWNlLmdldChpZCwgYWN0dWFsSUQpOworCSAgICBpZiAobG9nZ2luZygpICYmIG8gIT0gbnVsbCkgeworCQlsb2dsbigiIGlkOiAiICsgaWQgKyAiIGFjdHVhbDogIiArIGFjdHVhbElEWzBdICsgIiByZXN1bHQ6ICIgKyBvKTsKKwkgICAgfQorCX0KKyAgICB9CisKKyAgICBzdGF0aWMgY2xhc3MgR2V0TGlzdFRocmVhZCBleHRlbmRzIFRlc3RUaHJlYWQgeworCXByaXZhdGUgZmluYWwgU3RyaW5nW10gbGlzdDsKKwlwcml2YXRlIGludCBuOworCisJR2V0TGlzdFRocmVhZChTdHJpbmcgbmFtZSwgSUNVU2VydmljZSBzZXJ2aWNlLCBsb25nIGRlbGF5LCBTdHJpbmdbXSBsaXN0LCBUZXN0TG9nIGxvZykgeworCSAgICBzdXBlcigiR0VUTCAiICsgbmFtZSwgc2VydmljZSwgZGVsYXksIGxvZyk7CisKKwkgICAgdGhpcy5saXN0ID0gbGlzdDsKKwl9CisKKwlwcm90ZWN0ZWQgdm9pZCBpdGVyYXRlKCkgeworCSAgICBpZiAoLS1uIDwgMCkgeworCQluID0gbGlzdC5sZW5ndGggLSAxOworCSAgICB9CisJICAgIFN0cmluZyBpZCA9IGxpc3Rbbl07CisJICAgIE9iamVjdCBvID0gc2VydmljZS5nZXQoaWQpOworCSAgICBpZiAobG9nZ2luZygpKSB7CisJCWxvZ2xuKCIgaWQ6ICIgKyBpZCArICIgcmVzdWx0OiAiICsgbyk7CisJICAgIH0KKwl9CisgICAgfQorCisgICAgLy8gcmV0dXJuIGEgY29sbGVjdGlvbiBvZiB1bmlxdWUgZmFjdG9yaWVzLCBtaWdodCBiZSBmZXdlciB0aGFuIHJlcXVlc3RlZAorICAgIENvbGxlY3Rpb24gZ2V0RmFjdG9yeUNvbGxlY3Rpb24oaW50IHJlcXVlc3RlZCkgeworCVNldCBsb2NhbGVzID0gbmV3IEhhc2hTZXQoKTsKKwlmb3IgKGludCBpID0gMDsgaSA8IHJlcXVlc3RlZDsgKytpKSB7CisJICAgIGxvY2FsZXMuYWRkKGdldENMVigpKTsKKwl9CisJTGlzdCBmYWN0b3JpZXMgPSBuZXcgQXJyYXlMaXN0KGxvY2FsZXMuc2l6ZSgpKTsKKwlJdGVyYXRvciBpdGVyID0gbG9jYWxlcy5pdGVyYXRvcigpOworCXdoaWxlIChpdGVyLmhhc05leHQoKSkgeworCSAgICBmYWN0b3JpZXMuYWRkKG5ldyBUZXN0RmFjdG9yeSgoU3RyaW5nKWl0ZXIubmV4dCgpKSk7CisJfQorCXJldHVybiBmYWN0b3JpZXM7CisgICAgfQorCisgICAgdm9pZCByZWdpc3RlckZhY3RvcmllcyhJQ1VTZXJ2aWNlIHNlcnZpY2UsIENvbGxlY3Rpb24gYykgeworCUl0ZXJhdG9yIGl0ZXIgPSBjLml0ZXJhdG9yKCk7CisJd2hpbGUgKGl0ZXIuaGFzTmV4dCgpKSB7CisJICAgIHNlcnZpY2UucmVnaXN0ZXJGYWN0b3J5KChGYWN0b3J5KWl0ZXIubmV4dCgpKTsKKwl9CisgICAgfQorCisgICAgSUNVU2VydmljZSBzdGFibGVTZXJ2aWNlKCkgeworCWlmIChzdGFibGVTZXJ2aWNlID09IG51bGwpIHsKKwkgICAgc3RhYmxlU2VydmljZSA9IG5ldyBJQ1VMb2NhbGVTZXJ2aWNlKCk7CisJICAgIHJlZ2lzdGVyRmFjdG9yaWVzKHN0YWJsZVNlcnZpY2UsIGdldEZhY3RvcnlDb2xsZWN0aW9uKDUwKSk7CisJfQorCXJldHVybiBzdGFibGVTZXJ2aWNlOworICAgIH0KKyAgICBwcml2YXRlIElDVVNlcnZpY2Ugc3RhYmxlU2VydmljZTsKKworICAgIC8vIHJ1biBtdWx0aXBsZSBnZXQgb24gYSBzdGFibGUgc2VydmljZQorICAgIHB1YmxpYyB2b2lkIFRlc3QwMF9Db25jdXJyZW50R2V0KCkgeworCWZvcihpbnQgaSA9IDA7IGkgPCAxMDsgKytpKSB7CisJICAgIG5ldyBHZXRUaHJlYWQoIlsiICsgSW50ZWdlci50b1N0cmluZyhpKSArICJdIiwgIHN0YWJsZVNlcnZpY2UoKSwgMCwgdGhpcykuc3RhcnQoKTsKKwl9CisJcnVuVGhyZWFkcygpOworCWlmIChQUklOVFNUQVRTKSBTeXN0ZW0ub3V0LnByaW50bG4oc3RhYmxlU2VydmljZS5zdGF0cygpKTsKKyAgICB9CisKKyAgICAvLyBydW4gbXVsdGlwbGUgZ2V0VmlzaWJsZUlEIG9uIGEgc3RhYmxlIHNlcnZpY2UKKyAgICBwdWJsaWMgdm9pZCBUZXN0MDFfQ29uY3VycmVudEdldFZpc2libGUoKSB7CisJZm9yKGludCBpID0gMDsgaSA8IDEwOyArK2kpIHsKKwkgICAgbmV3IEdldFZpc2libGVUaHJlYWQoIlsiICsgSW50ZWdlci50b1N0cmluZyhpKSArICJdIiwgIHN0YWJsZVNlcnZpY2UoKSwgMCwgdGhpcykuc3RhcnQoKTsKKwl9CisJcnVuVGhyZWFkcygpOworCWlmIChQUklOVFNUQVRTKSBTeXN0ZW0ub3V0LnByaW50bG4oc3RhYmxlU2VydmljZS5zdGF0cygpKTsKKyAgICB9CisKKyAgICAvLyBydW4gbXVsdGlwbGUgZ2V0RGlzcGxheU5hbWUgb24gYSBzdGFibGUgc2VydmljZQorICAgIHB1YmxpYyB2b2lkIFRlc3QwMl9Db25jdXJyZW50R2V0RGlzcGxheSgpIHsKKwlTdHJpbmdbXSBsb2NhbGVOYW1lcyA9IHsKKwkgICAgImVuIiwgImVzIiwgImRlIiwgImZyIiwgInpoIiwgIml0IiwgIm5vIiwgInN2IgorCX07CisJZm9yKGludCBpID0gMDsgaSA8IGxvY2FsZU5hbWVzLmxlbmd0aDsgKytpKSB7CisJICAgIFN0cmluZyBsb2NhbGUgPSBsb2NhbGVOYW1lc1tpXTsKKwkgICAgbmV3IEdldERpc3BsYXlUaHJlYWQoIlsiICsgbG9jYWxlICsgIl0iLCAgCisJCQkJIHN0YWJsZVNlcnZpY2UoKSwgCisJCQkJIDAsCisJCQkJIExvY2FsZVV0aWxpdHkuZ2V0TG9jYWxlRnJvbU5hbWUobG9jYWxlKSwKKwkJCQkgdGhpcykuc3RhcnQoKTsKKwl9CisJcnVuVGhyZWFkcygpOworCWlmIChQUklOVFNUQVRTKSBTeXN0ZW0ub3V0LnByaW50bG4oc3RhYmxlU2VydmljZS5zdGF0cygpKTsKKyAgICB9CisKKyAgICAvLyBydW4gcmVnaXN0ZXIvdW5yZWdpc3RlciBvbiBhIHNlcnZpY2UKKyAgICBwdWJsaWMgdm9pZCBUZXN0MDNfQ29uY3VycmVudFJlZ1VucmVnKCkgeworCUlDVVNlcnZpY2Ugc2VydmljZSA9IG5ldyBJQ1VMb2NhbGVTZXJ2aWNlKCk7CisJZm9yIChpbnQgaSA9IDA7IGkgPCA1OyArK2kpIHsKKwkgICAgbmV3IFJlZ2lzdGVyRmFjdG9yeVRocmVhZCgiWyIgKyBpICsgIl0iLCBzZXJ2aWNlLCAwLCB0aGlzKS5zdGFydCgpOworCX0KKwlmb3IgKGludCBpID0gMDsgaSA8IDU7ICsraSkgeworCSAgICBuZXcgVW5yZWdpc3RlckZhY3RvcnlUaHJlYWQoIlsiICsgaSArICJdIiwgc2VydmljZSwgMCwgdGhpcykuc3RhcnQoKTsKKwl9CisJcnVuVGhyZWFkcygpOworCWlmIChQUklOVFNUQVRTKSBTeXN0ZW0ub3V0LnByaW50bG4oc2VydmljZS5zdGF0cygpKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdDA0X1dpdGhlcmluZ1NlcnZpY2UoKSB7CisJSUNVU2VydmljZSBzZXJ2aWNlID0gbmV3IElDVUxvY2FsZVNlcnZpY2UoKTsKKworCUNvbGxlY3Rpb24gZmMgPSBnZXRGYWN0b3J5Q29sbGVjdGlvbig1MCk7CisJcmVnaXN0ZXJGYWN0b3JpZXMoc2VydmljZSwgZmMpOworCisJRmFjdG9yeVtdIGZhY3RvcmllcyA9IChGYWN0b3J5W10pZmMudG9BcnJheShuZXcgRmFjdG9yeVtmYy5zaXplKCldKTsKKwlDb21wYXJhdG9yIGNvbXAgPSBuZXcgQ29tcGFyYXRvcigpIHsKKwkJcHVibGljIGludCBjb21wYXJlKE9iamVjdCBsaHMsIE9iamVjdCByaHMpIHsKKwkJICAgIHJldHVybiBsaHMudG9TdHJpbmcoKS5jb21wYXJlVG8ocmhzLnRvU3RyaW5nKCkpOworCQl9CisJICAgIH07CisJQXJyYXlzLnNvcnQoZmFjdG9yaWVzLCBjb21wKTsKKworCW5ldyBHZXRUaHJlYWQoIiIsIHNlcnZpY2UsIDAsIHRoaXMpLnN0YXJ0KCk7CisJbmV3IFVucmVnaXN0ZXJGYWN0b3J5TGlzdFRocmVhZCgiIiwgc2VydmljZSwgMywgZmFjdG9yaWVzLCB0aGlzKS5zdGFydCgpOworCisJcnVuVGhyZWFkcygyMDAwKTsKKwlpZiAoUFJJTlRTVEFUUykgU3lzdGVtLm91dC5wcmludGxuKHNlcnZpY2Uuc3RhdHMoKSk7CisgICAgfQorCQorICAgIC8vICJhbGwgaGVsbCBicmVha3MgbG9vc2UiCisgICAgLy8gb25lIHJlZ2lzdGVyIGFuZCBvbmUgdW5yZWdpc3RlciB0aHJlYWQsIGRlbGF5IDUwMG1zCisgICAgLy8gdHdvIGRpc3BsYXkgdGhyZWFkcyB3aXRoIGRpZmZlcmVudCBsb2NhbGVzLCBkZWxheSA1MDBtczsKKyAgICAvLyBvbmUgdmlzaWJsZSBpZCB0aHJlYWQsIGRlbGF5IDUwbXMKKyAgICAvLyBmaWZ0ZWVuIGdldCB0aHJlYWRzLCBkZWxheSAwCisgICAgLy8gcnVuIGZvciB0ZW4gc2Vjb25kcworICAgIHB1YmxpYyB2b2lkIFRlc3QwNV9Db25jdXJyZW50RXZlcnl0aGluZygpIHsKKwlJQ1VTZXJ2aWNlIHNlcnZpY2UgPSBuZXcgSUNVTG9jYWxlU2VydmljZSgpOworCisJbmV3IFJlZ2lzdGVyRmFjdG9yeVRocmVhZCgiIiwgc2VydmljZSwgNTAwLCB0aGlzKS5zdGFydCgpOworCisJZm9yKGludCBpID0gMDsgaSA8IDE1OyArK2kpIHsKKwkgICAgbmV3IEdldFRocmVhZCgiWyIgKyBJbnRlZ2VyLnRvU3RyaW5nKGkpICsgIl0iLCBzZXJ2aWNlLCAwLCB0aGlzKS5zdGFydCgpOworCX0KKworCW5ldyBHZXRWaXNpYmxlVGhyZWFkKCIiLCAgc2VydmljZSwgNTAsIHRoaXMpLnN0YXJ0KCk7CisKKwlTdHJpbmdbXSBsb2NhbGVOYW1lcyA9IHsKKwkgICAgImVuIiwgImRlIgorCX07CisJZm9yKGludCBpID0gMDsgaSA8IGxvY2FsZU5hbWVzLmxlbmd0aDsgKytpKSB7CisJICAgIFN0cmluZyBsb2NhbGUgPSBsb2NhbGVOYW1lc1tpXTsKKwkgICAgbmV3IEdldERpc3BsYXlUaHJlYWQoIlsiICsgbG9jYWxlICsgIl0iLCAgCisJCQkJIHN0YWJsZVNlcnZpY2UoKSwgCisJCQkJIDUwMCwKKwkJCQkgTG9jYWxlVXRpbGl0eS5nZXRMb2NhbGVGcm9tTmFtZShsb2NhbGUpLAorCQkJCSB0aGlzKS5zdGFydCgpOworCX0KKworCW5ldyBVbnJlZ2lzdGVyRmFjdG9yeVRocmVhZCgiIiwgc2VydmljZSwgNTAwLCB0aGlzKS5zdGFydCgpOworCisJLy8geW93ZWVlISEhCisJcnVuVGhyZWFkcygxMDAwMCk7CisJaWYgKFBSSU5UU1RBVFMpIFN5c3RlbS5vdXQucHJpbnRsbihzZXJ2aWNlLnN0YXRzKCkpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC91dGlsL1N0cmluZ1Rva2VuaXplclRlc3QuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC91dGlsL1N0cmluZ1Rva2VuaXplclRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTY1ZDIzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3V0aWwvU3RyaW5nVG9rZW5pemVyVGVzdC5qYXZhCkBAIC0wLDAgKzEsNDMyIEBACisvKioKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3V0aWwvU3RyaW5nVG9rZW5pemVyVGVzdC5qYXZhLHYgJCAKKyogJERhdGU6IDIwMDIvMTAvMjggMjE6NTk6MjIgJCAKKyogJFJldmlzaW9uOiAxLjEgJAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudGVzdC51dGlsOworCitpbXBvcnQgY29tLmlibS5pY3UuZGV2LnRlc3QuVGVzdEZtd2s7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5VdGlsaXR5OworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuU3RyaW5nVG9rZW5pemVyOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuVW5pY29kZVNldDsKKworLyoqCisqIFRlc3RpbmcgY2xhc3MgZm9yIFN0cmluZ1Rva2VuaXplciBjbGFzcworKiBAYXV0aG9yIFN5biBXZWUgUXVlaworKiBAc2luY2Ugb2N0IDI2IDIwMDIKKyovCitwdWJsaWMgZmluYWwgY2xhc3MgU3RyaW5nVG9rZW5pemVyVGVzdCBleHRlbmRzIFRlc3RGbXdrCit7IAorICAJLy8gY29uc3RydWN0b3IgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgIAorICAJLyoqCisgIAkqIENvbnN0cnVjdG9yCisgIAkqLworICAJcHVibGljIFN0cmluZ1Rva2VuaXplclRlc3QoKQorICAJeworICAJfQorICAKKyAgCS8vIHB1YmxpYyBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgICogVGVzdGluZyBjb25zdHJ1Y3RvcnMKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0Q29uc3RydWN0b3JzKCkKKyAgICB7CisgICAgICAgIFN0cmluZyBzdHIgPSAidGhpc1x0aXNcbmFccnN0cmluZ1xmdGVzdGluZ1x0U3RyaW5nVG9rZW5pemVyXG5jb25zdHJ1Y3RvcnMhIjsKKyAgICAgICAgU3RyaW5nIGRlbGltaXRlciA9ICIgXHRcblxyXGYiOworICAgICAgICBTdHJpbmcgZXhwZWN0ZWRbXSA9IHsidGhpcyIsICJpcyIsICJhIiwgInN0cmluZyIsICJ0ZXN0aW5nIiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdHJpbmdUb2tlbml6ZXIiLCAiY29uc3RydWN0b3JzISJ9OworICAgICAgICBTdHJpbmdUb2tlbml6ZXIgZGVmYXVsdHN0ID0gbmV3IFN0cmluZ1Rva2VuaXplcihzdHIpOworICAgICAgICBTdHJpbmdUb2tlbml6ZXIgc3RkZWxpbWl0ZXIgPSBuZXcgU3RyaW5nVG9rZW5pemVyKHN0ciwgZGVsaW1pdGVyKTsKKyAgICAgICAgU3RyaW5nVG9rZW5pemVyIHN0ZGVsaW1pdGVycmV0dXJuID0gbmV3IFN0cmluZ1Rva2VuaXplcihzdHIsIGRlbGltaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSk7CisgICAgICAgIFVuaWNvZGVTZXQgZGVsaW1pdGVyc2V0ID0gbmV3IFVuaWNvZGVTZXQoIlsiICsgZGVsaW1pdGVyICsgIl0iLCBmYWxzZSk7CisgICAgICAgIFN0cmluZ1Rva2VuaXplciBzdGRlbGltaXRlcnNldCA9IG5ldyBTdHJpbmdUb2tlbml6ZXIoc3RyLCBkZWxpbWl0ZXJzZXQpOworICAgICAgICBTdHJpbmdUb2tlbml6ZXIgc3RkZWxpbWl0ZXJzZXRyZXR1cm4gPSBuZXcgU3RyaW5nVG9rZW5pemVyKHN0ciwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsaW1pdGVyc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBleHBlY3RlZC5sZW5ndGg7IGkgKyspIHsKKyAgICAgICAgICAgIGlmICghKGRlZmF1bHRzdC5uZXh0RWxlbWVudCgpLmVxdWFscyhleHBlY3RlZFtpXSkgCisgICAgICAgICAgICAgICAgICAmJiBzdGRlbGltaXRlci5uZXh0RWxlbWVudCgpLmVxdWFscyhleHBlY3RlZFtpXSkKKyAgICAgICAgICAgICAgICAgICYmIHN0ZGVsaW1pdGVycmV0dXJuLm5leHRFbGVtZW50KCkuZXF1YWxzKGV4cGVjdGVkW2ldKQorICAgICAgICAgICAgICAgICAgJiYgc3RkZWxpbWl0ZXJzZXQubmV4dEVsZW1lbnQoKS5lcXVhbHMoZXhwZWN0ZWRbaV0pCisgICAgICAgICAgICAgICAgICAmJiBzdGRlbGltaXRlcnNldHJldHVybi5uZXh0RWxlbWVudCgpLmVxdWFscyhleHBlY3RlZFtpXSkpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkNvbnN0cnVjdG9yIHdpdGggZGVmYXVsdCBkZWxpbWl0ZXIgZ2l2ZXMgd3JvbmcgcmVzdWx0cyIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBTdHJpbmcgZXhwZWN0ZWQxW10gPSB7InRoaXMiLCAiXHQiLCAiaXMiLCAiXG4iLCAiYSIsICJcciIsICJzdHJpbmciLCAiXGYiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0aW5nIiwgIlx0IiwgIlN0cmluZ1Rva2VuaXplciIsICJcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbnN0cnVjdG9ycyEifTsKKyAgICAgICAgc3RkZWxpbWl0ZXJyZXR1cm4gPSBuZXcgU3RyaW5nVG9rZW5pemVyKHN0ciwgZGVsaW1pdGVyLCB0cnVlKTsKKyAgICAgICAgc3RkZWxpbWl0ZXJzZXRyZXR1cm4gPSBuZXcgU3RyaW5nVG9rZW5pemVyKHN0ciwgZGVsaW1pdGVyc2V0LCB0cnVlKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBleHBlY3RlZDEubGVuZ3RoOyBpICsrKSB7CisgICAgICAgICAgICBpZiAoIShzdGRlbGltaXRlcnJldHVybi5uZXh0RWxlbWVudCgpLmVxdWFscyhleHBlY3RlZDFbaV0pCisgICAgICAgICAgICAgICAgICAmJiBzdGRlbGltaXRlcnNldHJldHVybi5uZXh0RWxlbWVudCgpLmVxdWFscyhleHBlY3RlZDFbaV0pKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJDb25zdHJ1Y3RvciB3aXRoIGRlZmF1bHQgZGVsaW1pdGVyIGFuZCBkZWxpbWl0ZXIgdG9rZW5zIGdpdmVzIHdyb25nIHJlc3VsdHMiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBzdGRlbGltaXRlciA9IG5ldyBTdHJpbmdUb2tlbml6ZXIoc3RyLCAoU3RyaW5nKW51bGwpOworICAgICAgICBzdGRlbGltaXRlcnJldHVybiA9IG5ldyBTdHJpbmdUb2tlbml6ZXIoc3RyLCAoU3RyaW5nKW51bGwsIGZhbHNlKTsKKyAgICAgICAgZGVsaW1pdGVyc2V0ID0gbnVsbDsKKyAgICAgICAgc3RkZWxpbWl0ZXJzZXQgPSBuZXcgU3RyaW5nVG9rZW5pemVyKHN0ciwgZGVsaW1pdGVyc2V0KTsKKyAgICAgICAgc3RkZWxpbWl0ZXJzZXRyZXR1cm4gPSBuZXcgU3RyaW5nVG9rZW5pemVyKHN0ciwgZGVsaW1pdGVyc2V0LCBmYWxzZSk7CisgICAgICAgIAorICAgICAgICBpZiAoIShzdGRlbGltaXRlci5uZXh0RWxlbWVudCgpLmVxdWFscyhzdHIpCisgICAgICAgICAgICAgICYmIHN0ZGVsaW1pdGVycmV0dXJuLm5leHRFbGVtZW50KCkuZXF1YWxzKHN0cikKKyAgICAgICAgICAgICAgJiYgc3RkZWxpbWl0ZXJzZXQubmV4dEVsZW1lbnQoKS5lcXVhbHMoc3RyKQorICAgICAgICAgICAgICAmJiBzdGRlbGltaXRlcnNldHJldHVybi5uZXh0RWxlbWVudCgpLmVxdWFscyhzdHIpKSkgeworICAgICAgICAgICAgZXJybG4oIkNvbnN0cnVjdG9yIHdpdGggbnVsbCBkZWxpbWl0ZXIgZ2l2ZXMgd3JvbmcgcmVzdWx0cyIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBkZWxpbWl0ZXIgPSAiIjsKKyAgICAgICAgc3RkZWxpbWl0ZXIgPSBuZXcgU3RyaW5nVG9rZW5pemVyKHN0ciwgZGVsaW1pdGVyKTsKKyAgICAgICAgc3RkZWxpbWl0ZXJyZXR1cm4gPSBuZXcgU3RyaW5nVG9rZW5pemVyKHN0ciwgZGVsaW1pdGVyLCBmYWxzZSk7CisgICAgICAgIGRlbGltaXRlcnNldCA9IG5ldyBVbmljb2RlU2V0KCk7CisgICAgICAgIHN0ZGVsaW1pdGVyc2V0ID0gbmV3IFN0cmluZ1Rva2VuaXplcihzdHIsIGRlbGltaXRlcnNldCk7CisgICAgICAgIHN0ZGVsaW1pdGVyc2V0cmV0dXJuID0gbmV3IFN0cmluZ1Rva2VuaXplcihzdHIsIGRlbGltaXRlcnNldCwgZmFsc2UpOworICAgICAgICAKKyAgICAgICAgaWYgKCEoc3RkZWxpbWl0ZXIubmV4dEVsZW1lbnQoKS5lcXVhbHMoc3RyKQorICAgICAgICAgICAgICAmJiBzdGRlbGltaXRlcnJldHVybi5uZXh0RWxlbWVudCgpLmVxdWFscyhzdHIpCisgICAgICAgICAgICAgICYmIHN0ZGVsaW1pdGVyc2V0Lm5leHRFbGVtZW50KCkuZXF1YWxzKHN0cikKKyAgICAgICAgICAgICAgJiYgc3RkZWxpbWl0ZXJzZXRyZXR1cm4ubmV4dEVsZW1lbnQoKS5lcXVhbHMoc3RyKSkpIHsKKyAgICAgICAgICAgIGVycmxuKCJDb25zdHJ1Y3RvciB3aXRoIGVtcHR5IGRlbGltaXRlciBnaXZlcyB3cm9uZyByZXN1bHRzIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBkZWZhdWx0c3QgPSBuZXcgU3RyaW5nVG9rZW5pemVyKG51bGwpOworICAgICAgICAgICAgZXJybG4oIm51bGwgc3RyaW5nIHNob3VsZCB0aHJvdyBhbiBleGNlcHRpb24iKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgfQorICAgICAgICB0cnkgeworICAgICAgICAgICAgc3RkZWxpbWl0ZXIgPSBuZXcgU3RyaW5nVG9rZW5pemVyKG51bGwsIGRlbGltaXRlcik7CisgICAgICAgICAgICBlcnJsbigibnVsbCBzdHJpbmcgc2hvdWxkIHRocm93IGFuIGV4Y2VwdGlvbiIpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICB9CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBzdGRlbGltaXRlcnJldHVybiA9IG5ldyBTdHJpbmdUb2tlbml6ZXIobnVsbCwgZGVsaW1pdGVyLCBmYWxzZSk7CisgICAgICAgICAgICBlcnJsbigibnVsbCBzdHJpbmcgc2hvdWxkIHRocm93IGFuIGV4Y2VwdGlvbiIpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICB9CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBzdGRlbGltaXRlcnNldCA9IG5ldyBTdHJpbmdUb2tlbml6ZXIobnVsbCwgZGVsaW1pdGVyc2V0KTsKKyAgICAgICAgICAgIGVycmxuKCJudWxsIHN0cmluZyBzaG91bGQgdGhyb3cgYW4gZXhjZXB0aW9uIik7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgIH0KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHN0ZGVsaW1pdGVyc2V0cmV0dXJuID0gbmV3IFN0cmluZ1Rva2VuaXplcihudWxsLCBkZWxpbWl0ZXJzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpOworICAgICAgICAgICAgZXJybG4oIm51bGwgc3RyaW5nIHNob3VsZCB0aHJvdyBhbiBleGNlcHRpb24iKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBUZXN0aW5nIHN1cHBsZW1lbnRhcnkKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0U3VwcGxlbWVudGFyeSgpCisgICAgeworICAgICAgICBTdHJpbmcgc3RyID0gImJtcCBzdHJpbmcgXHVkODAwIHdpdGggYSB1bm1hdGNoZWQgc3Vycm9nYXRlIGNoYXJhY3RlciI7CisgICAgICAgIFN0cmluZyBkZWxpbWl0ZXIgPSAiXHVkODAwXHVkYzAwIjsKKyAgICAgICAgU3RyaW5nIGV4cGVjdGVkW10gPSB7c3RyfTsKKyAgICAgICAgICAgIAorICAgICAgICBTdHJpbmdUb2tlbml6ZXIgdG9rZW5pemVyID0gbmV3IFN0cmluZ1Rva2VuaXplcihzdHIsIGRlbGltaXRlcik7CisgICAgICAgIGlmICghdG9rZW5pemVyLm5leHRFbGVtZW50KCkuZXF1YWxzKGV4cGVjdGVkWzBdKSkgeworICAgICAgICAgICAgZXJybG4oIkVycm9yIHBhcnNpbmcgXCIiICsgVXRpbGl0eS5oZXgoc3RyKSArICJcIiIpOworICAgICAgICB9CisgICAgICAgIGlmICh0b2tlbml6ZXIuaGFzTW9yZUVsZW1lbnRzKCkpIHsKKyAgICAgICAgICAgIGVycmxuKCJOdW1iZXIgb2YgdG9rZW5zIGV4Y2VlZGVkIGV4cGVjdGVkIik7CisgICAgICAgIH0KKyAgICAgICAgZGVsaW1pdGVyID0gIlx1ZDgwMCI7CisgICAgICAgIFN0cmluZyBleHBlY3RlZDFbXSA9IHsiYm1wIHN0cmluZyAiLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgd2l0aCBhIHVubWF0Y2hlZCBzdXJyb2dhdGUgY2hhcmFjdGVyIn07CisgICAgICAgIHRva2VuaXplciA9IG5ldyBTdHJpbmdUb2tlbml6ZXIoc3RyLCBkZWxpbWl0ZXIpOworICAgICAgICBpbnQgaSA9IDA7CisgICAgICAgIHdoaWxlICh0b2tlbml6ZXIuaGFzTW9yZUVsZW1lbnRzKCkpIHsKKyAgICAgICAgICAgIGlmICghdG9rZW5pemVyLm5leHRFbGVtZW50KCkuZXF1YWxzKGV4cGVjdGVkMVtpICsrXSkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRXJyb3IgcGFyc2luZyBcIiIgKyBVdGlsaXR5LmhleChzdHIpICsgIlwiIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRva2VuaXplci5oYXNNb3JlRWxlbWVudHMoKSkgeworICAgICAgICAgICAgZXJybG4oIk51bWJlciBvZiB0b2tlbnMgZXhjZWVkZWQgZXhwZWN0ZWQiKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgc3RyID0gInN0cmluZyBcdWQ4MDBcdWRjMDAgd2l0aCBzdXBwbGVtZW50YXJ5IGNoYXJhY3RlciI7CisgICAgICAgIGRlbGltaXRlciA9ICJcdWQ4MDAiOworICAgICAgICBTdHJpbmcgZXhwZWN0ZWQyW10gPSB7c3RyfTsKKyAgICAgICAgdG9rZW5pemVyID0gbmV3IFN0cmluZ1Rva2VuaXplcihzdHIsIGRlbGltaXRlcik7CisgICAgICAgIGlmICghdG9rZW5pemVyLm5leHRFbGVtZW50KCkuZXF1YWxzKGV4cGVjdGVkMlswXSkpIHsKKyAgICAgICAgICAgIGVycmxuKCJFcnJvciBwYXJzaW5nIFwiIiArIFV0aWxpdHkuaGV4KHN0cikgKyAiXCIiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAodG9rZW5pemVyLmhhc01vcmVFbGVtZW50cygpKSB7CisgICAgICAgICAgICBlcnJsbigiTnVtYmVyIG9mIHRva2VucyBleGNlZWRlZCBleHBlY3RlZCIpOworICAgICAgICB9CisgIAorICAgICAgICBkZWxpbWl0ZXIgPSAiXHVkODAwXHVkYzAwIjsKKyAgICAgICAgU3RyaW5nIGV4cGVjdGVkM1tdID0geyJzdHJpbmcgIiwgIiB3aXRoIHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVyIn07CisgICAgICAgIHRva2VuaXplciA9IG5ldyBTdHJpbmdUb2tlbml6ZXIoc3RyLCBkZWxpbWl0ZXIpOworICAgICAgICBpID0gMDsKKyAgICAgICAgd2hpbGUgKHRva2VuaXplci5oYXNNb3JlRWxlbWVudHMoKSkgeworICAgICAgICAgICAgaWYgKCF0b2tlbml6ZXIubmV4dEVsZW1lbnQoKS5lcXVhbHMoZXhwZWN0ZWQzW2kgKytdKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJFcnJvciBwYXJzaW5nIFwiIiArIFV0aWxpdHkuaGV4KHN0cikgKyAiXCIiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAodG9rZW5pemVyLmhhc01vcmVFbGVtZW50cygpKSB7CisgICAgICAgICAgICBlcnJsbigiTnVtYmVyIG9mIHRva2VucyBleGNlZWRlZCBleHBlY3RlZCIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzdHIgPSAiXHVkODAwIFx1ZDgwMFx1ZGMwMCBcdWQ4MDAgXHVkODAwXHVkYzAwIjsKKyAgICAgICAgZGVsaW1pdGVyID0gIlx1ZDgwMCI7CisgICAgICAgIFN0cmluZyBleHBlY3RlZDRbXSA9IHsiIFx1ZDgwMFx1ZGMwMCAiLCAiIFx1ZDgwMFx1ZGMwMCJ9OworICAgICAgICBpID0gMDsKKyAgICAgICAgd2hpbGUgKHRva2VuaXplci5oYXNNb3JlRWxlbWVudHMoKSkgeworICAgICAgICAgICAgaWYgKCF0b2tlbml6ZXIubmV4dEVsZW1lbnQoKS5lcXVhbHMoZXhwZWN0ZWQ0W2kgKytdKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJFcnJvciBwYXJzaW5nIFwiIiArIFV0aWxpdHkuaGV4KHN0cikgKyAiXCIiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAodG9rZW5pemVyLmhhc01vcmVFbGVtZW50cygpKSB7CisgICAgICAgICAgICBlcnJsbigiTnVtYmVyIG9mIHRva2VucyBleGNlZWRlZCBleHBlY3RlZCIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBkZWxpbWl0ZXIgPSAiXHVkODAwXHVkYzAwIjsKKyAgICAgICAgU3RyaW5nIGV4cGVjdGVkNVtdID0geyJcdWQ4MDAgIiwgIiBcdWQ4MDAgIn07CisgICAgICAgIGkgPSAwOworICAgICAgICB3aGlsZSAodG9rZW5pemVyLmhhc01vcmVFbGVtZW50cygpKSB7CisgICAgICAgICAgICBpZiAoIXRva2VuaXplci5uZXh0RWxlbWVudCgpLmVxdWFscyhleHBlY3RlZDVbaSArK10pKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkVycm9yIHBhcnNpbmcgXCIiICsgVXRpbGl0eS5oZXgoc3RyKSArICJcIiIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICh0b2tlbml6ZXIuaGFzTW9yZUVsZW1lbnRzKCkpIHsKKyAgICAgICAgICAgIGVycmxuKCJOdW1iZXIgb2YgdG9rZW5zIGV4Y2VlZGVkIGV4cGVjdGVkIik7CisgICAgICAgIH0KKyAgICB9CisgIAorICAJLyoqCisgIAkqIFRlc3RpbmcgbmV4dCBhcGkKKyAgCSovCisgIAlwdWJsaWMgdm9pZCBUZXN0TmV4dE5vbkRlbGltaXRlclRva2VuKCkKKyAgCXsKKyAgICAgICAgU3RyaW5nIHN0ciA9ICIgICwgIDEgMiAzICBBSEhISEghIDUuNSA2IDcgICAgLCAgICAgICAgOFxuIjsKKyAgICAgICAgU3RyaW5nIGV4cGVjdGVkW10gPSB7IiwiLCAiMSIsICIyIiwgIjMiLCAiQUhISEhIISIsICI1LjUiLCAiNiIsICI3IiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIsIiwgIjhcbiJ9OworICAgICAgICBTdHJpbmcgZGVsaW1pdGVyID0gIiAiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIFN0cmluZ1Rva2VuaXplciB0b2tlbml6ZXIgPSBuZXcgU3RyaW5nVG9rZW5pemVyKHN0ciwgZGVsaW1pdGVyKTsKKyAgICAgICAgaW50IGN1cnJ0b2tlbiA9IDA7CisgICAgICAgIHdoaWxlICh0b2tlbml6ZXIuaGFzTW9yZUVsZW1lbnRzKCkpIHsKKyAgICAgICAgICAgIGlmICghdG9rZW5pemVyLm5leHRFbGVtZW50KCkuZXF1YWxzKGV4cGVjdGVkW2N1cnJ0b2tlbl0pKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkVycm9yIHRva2VuIG1pc21hdGNoLCBleHBlY3RlZCAiICsgZXhwZWN0ZWRbY3VycnRva2VuXSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjdXJydG9rZW4gKys7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY3VycnRva2VuICE9IGV4cGVjdGVkLmxlbmd0aCkgeworICAgICAgICAgICAgZXJybG4oIkRpZG4ndCBnZXQgY29ycmVjdCBudW1iZXIgb2YgdG9rZW5zIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHRva2VuaXplciA9IG5ldyBTdHJpbmdUb2tlbml6ZXIoIiIsIGRlbGltaXRlcik7CisgICAgICAgIGlmICh0b2tlbml6ZXIuaGFzTW9yZUVsZW1lbnRzKCkpIHsKKyAgICAgICAgICAgIGVycmxuKCJFbXB0eSBzdHJpbmcgc2hvdWxkIG5vdCBoYXZlIGFueSB0b2tlbnMiKTsKKyAgICAgICAgfQorICAgICAgICB0cnkgeworICAgICAgICAgICAgdG9rZW5pemVyLm5leHRFbGVtZW50KCk7CisgICAgICAgICAgICBlcnJsbigiRW1wdHkgc3RyaW5nIHNob3VsZCBub3QgaGF2ZSBhbnkgdG9rZW5zIik7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHRva2VuaXplciA9IG5ldyBTdHJpbmdUb2tlbml6ZXIoIiwgLCIsICIsICIpOworICAgICAgICBpZiAodG9rZW5pemVyLmhhc01vcmVFbGVtZW50cygpKSB7CisgICAgICAgICAgICBlcnJsbigiU3RyaW5nIHdpdGggb25seSBkZWxpbWl0ZXJzIHNob3VsZCBub3QgaGF2ZSBhbnkgdG9rZW5zIik7CisgICAgICAgIH0KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHRva2VuaXplci5uZXh0RWxlbWVudCgpOworICAgICAgICAgICAgZXJybG4oIlN0cmluZyB3aXRoIG9ubHkgZGVsaW1pdGVycyBzaG91bGQgbm90IGhhdmUgYW55IHRva2VucyIpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICB9CisKKyAgICAgICAgdG9rZW5pemVyID0gbmV3IFN0cmluZ1Rva2VuaXplcigicSwgLCIsICIsICIpOworICAgICAgICBpZiAoIXRva2VuaXplci5oYXNNb3JlRWxlbWVudHMoKSkgeworICAgICAgICAgICAgZXJybG4oIlN0cmluZyB0aGF0IGRvZXMgbm90IGJlZ2luIHdpdGggZGVsaW1pdGVycyBzaG91bGQgaGF2ZSBzb21lIHRva2VucyIpOworICAgICAgICB9CisgICAgICAgIGlmICghdG9rZW5pemVyLm5leHRFbGVtZW50KCkuZXF1YWxzKCJxIikpIHsKKyAgICAgICAgICAgIGVycmxuKCJTdHJpbmcgdGhhdCBkb2VzIG5vdCBiZWdpbiB3aXRoIGRlbGltaXRlcnMgc2hvdWxkIGhhdmUgc29tZSB0b2tlbnMiKTsKKyAgICAgICAgfSAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHRva2VuaXplci5uZXh0RWxlbWVudCgpOworICAgICAgICAgICAgZXJybG4oIlN0cmluZyBoYXMgb25seSBvbmUgdG9rZW5zIik7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgIH0KKworICAgICAgICB0cnkgeworICAgICAgICAgICAgdG9rZW5pemVyID0gbmV3IFN0cmluZ1Rva2VuaXplcihudWxsLCBkZWxpbWl0ZXIpOworICAgICAgICAgICAgZXJybG4oIlN0cmluZ1Rva2VuaXplciBjb25zdHJ1Y3RlZCB3aXRoIG51bGwgc291cmNlIHNob3VsZCB0aHJvdyBhIG51bGxwb2ludGVyZXhjZXB0aW9uIik7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgIH0KKworICAgICAgICB0b2tlbml6ZXIgPSBuZXcgU3RyaW5nVG9rZW5pemVyKHN0ciwgInEiKTsKKyAgICAgICAgaWYgKCF0b2tlbml6ZXIubmV4dEVsZW1lbnQoKS5lcXVhbHMoc3RyKSkgeworICAgICAgICAgICAgZXJybG4oIlNob3VsZCBoYXZlIHJlY2VpdmVkIHRoZSBzYW1lIHN0cmluZyB3aGVuIHRoZXJlIGFyZSBubyBkZWxpbWl0ZXJzIik7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoqCisgICAgKiBUZXN0aW5nIG5leHQgYXBpCisgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0TmV4dERlbGltaXRlclRva2VuKCkKKyAgICB7CisgICAgICAgIFN0cmluZyBzdHIgPSAiICAsICAxIDIgMyAgQUhISEhIISA1LjUgNiA3ICAgICwgICAgICAgIDhcbiI7CisgICAgICAgIFN0cmluZyBleHBlY3RlZFtdID0geyIgICIsICIsIiwgIiAgIiwgIjEiLCAiICIsICIyIiwgIiAiLCAiMyIsICIgICIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBSEhISEghIiwgIiAiLCAiNS41IiwgIiAiLCAiNiIsICIgIiwgIjciLCAiICAgICIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIsIiwgIiAgICAgICAgIiwgIjhcbiJ9OworICAgICAgICBTdHJpbmcgZGVsaW1pdGVyID0gIiAiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIFN0cmluZ1Rva2VuaXplciB0b2tlbml6ZXIgPSBuZXcgU3RyaW5nVG9rZW5pemVyKHN0ciwgZGVsaW1pdGVyLCB0cnVlKTsKKyAgICAgICAgaW50IGN1cnJ0b2tlbiA9IDA7CisgICAgICAgIHdoaWxlICh0b2tlbml6ZXIuaGFzTW9yZUVsZW1lbnRzKCkpIHsKKyAgICAgICAgICAgIGlmICghdG9rZW5pemVyLm5leHRFbGVtZW50KCkuZXF1YWxzKGV4cGVjdGVkW2N1cnJ0b2tlbl0pKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkVycm9yIHRva2VuIG1pc21hdGNoLCBleHBlY3RlZCAiICsgZXhwZWN0ZWRbY3VycnRva2VuXSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjdXJydG9rZW4gKys7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY3VycnRva2VuICE9IGV4cGVjdGVkLmxlbmd0aCkgeworICAgICAgICAgICAgZXJybG4oIkRpZG4ndCBnZXQgY29ycmVjdCBudW1iZXIgb2YgdG9rZW5zIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHRva2VuaXplciA9IG5ldyBTdHJpbmdUb2tlbml6ZXIoIiIsIGRlbGltaXRlciwgdHJ1ZSk7CisgICAgICAgIGlmICh0b2tlbml6ZXIuaGFzTW9yZUVsZW1lbnRzKCkpIHsKKyAgICAgICAgICAgIGVycmxuKCJFbXB0eSBzdHJpbmcgc2hvdWxkIG5vdCBoYXZlIGFueSB0b2tlbnMiKTsKKyAgICAgICAgfQorICAgICAgICB0cnkgeworICAgICAgICAgICAgdG9rZW5pemVyLm5leHRFbGVtZW50KCk7CisgICAgICAgICAgICBlcnJsbigiRW1wdHkgc3RyaW5nIHNob3VsZCBub3QgaGF2ZSBhbnkgdG9rZW5zIik7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHRva2VuaXplciA9IG5ldyBTdHJpbmdUb2tlbml6ZXIoIiwgLCIsICIsICIsIHRydWUpOworICAgICAgICBpZiAoIXRva2VuaXplci5oYXNNb3JlRWxlbWVudHMoKSkgeworICAgICAgICAgICAgZXJybG4oIlN0cmluZyB3aXRoIG9ubHkgZGVsaW1pdGVycyBzaG91bGQgaGF2ZSB0b2tlbnMgd2hlbiBkZWxpbWl0ZXIgaXMgdHJlYXRlZCBhcyB0b2tlbnMiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIXRva2VuaXplci5uZXh0RWxlbWVudCgpLmVxdWFscygiLCAsIikpIHsKKyAgICAgICAgICAgIGVycmxuKCJTdHJpbmcgd2l0aCBvbmx5IGRlbGltaXRlcnMgc2hvdWxkIHJldHVybiBpdHNlbGYgd2hlbiBkZWxpbWl0ZXIgaXMgdHJlYXRlZCBhcyB0b2tlbnMiKTsKKyAgICAgICAgfQorCisgICAgICAgIHRva2VuaXplciA9IG5ldyBTdHJpbmdUb2tlbml6ZXIoInEsICwiLCAiLCAiLCB0cnVlKTsKKyAgICAgICAgCisgICAgICAgIGlmICghdG9rZW5pemVyLmhhc01vcmVFbGVtZW50cygpKSB7CisgICAgICAgICAgICBlcnJsbigiU3RyaW5nIHNob3VsZCBoYXZlIHNvbWUgdG9rZW5zIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCF0b2tlbml6ZXIubmV4dEVsZW1lbnQoKS5lcXVhbHMoInEiKSAKKyAgICAgICAgICAgIHx8ICF0b2tlbml6ZXIubmV4dEVsZW1lbnQoKS5lcXVhbHMoIiwgLCIpKSB7CisgICAgICAgICAgICBlcnJsbigiU3RyaW5nIHRva2VucyBkbyBub3QgbWF0Y2ggZXhwZWN0ZWQgcmVzdWx0cyIpOworICAgICAgICB9IAorCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB0b2tlbml6ZXIgPSBuZXcgU3RyaW5nVG9rZW5pemVyKG51bGwsIGRlbGltaXRlciwgdHJ1ZSk7CisgICAgICAgICAgICBlcnJsbigiU3RyaW5nVG9rZW5pemVyIGNvbnN0cnVjdGVkIHdpdGggbnVsbCBzb3VyY2Ugc2hvdWxkIHRocm93IGEgbnVsbHBvaW50ZXJleGNlcHRpb24iKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgfQorCisgICAgICAgIHRva2VuaXplciA9IG5ldyBTdHJpbmdUb2tlbml6ZXIoc3RyLCAicSIsIHRydWUpOworICAgICAgICBpZiAoIXRva2VuaXplci5uZXh0RWxlbWVudCgpLmVxdWFscyhzdHIpKSB7CisgICAgICAgICAgICBlcnJsbigiU2hvdWxkIGhhdmUgcmVjaWV2ZWQgdGhlIHNhbWUgc3RyaW5nIHdoZW4gdGhlcmUgYXJlIG5vIGRlbGltaXRlcnMiKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBUZXN0aW5nIGNvdW50IHRva2VucworICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RDb3VudFRva2VucygpCisgICAgeworICAgICAgICBTdHJpbmcgc3RyID0gInRoaXNcdGlzXG5hXHJzdHJpbmdcZnRlc3RpbmdcdFN0cmluZ1Rva2VuaXplclxuY29uc3RydWN0b3JzISI7CisgICAgICAgIFN0cmluZyBkZWxpbWl0ZXIgPSAiIFx0XG5cclxmIjsKKyAgICAgICAgU3RyaW5nIGV4cGVjdGVkW10gPSB7InRoaXMiLCAiaXMiLCAiYSIsICJzdHJpbmciLCAidGVzdGluZyIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3RyaW5nVG9rZW5pemVyIiwgImNvbnN0cnVjdG9ycyEifTsKKyAgICAgICAgU3RyaW5nIGV4cGVjdGVkcmV0dXJuW10gPSB7InRoaXMiLCAiXHQiLCAiaXMiLCAiXG4iLCAiYSIsICJcciIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nIiwgIlxmIiwgInRlc3RpbmciLCAiXHQiLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN0cmluZ1Rva2VuaXplciIsICJcbiIsICJjb25zdHJ1Y3RvcnMhIn07CisgICAgICAgIFN0cmluZ1Rva2VuaXplciBzdCA9IG5ldyBTdHJpbmdUb2tlbml6ZXIoc3RyLCBkZWxpbWl0ZXIpOworICAgICAgICBTdHJpbmdUb2tlbml6ZXIgc3RyZXR1cm4gPSBuZXcgU3RyaW5nVG9rZW5pemVyKHN0ciwgZGVsaW1pdGVyLCB0cnVlKTsKKyAgICAgICAgaWYgKHN0LmNvdW50VG9rZW5zKCkgIT0gZXhwZWN0ZWQubGVuZ3RoKSB7CisgICAgICAgICAgICBlcnJsbigiQ291bnRUb2tlbnMgZmFpbGVkIGZvciBub24tZGVsaW1pdGVyIHRva2VucyIpOworICAgICAgICB9CisgICAgICAgIGlmIChzdHJldHVybi5jb3VudFRva2VucygpICE9IGV4cGVjdGVkcmV0dXJuLmxlbmd0aCkgeworICAgICAgICAgICAgZXJybG4oIkNvdW50VG9rZW5zIGZhaWxlZCBmb3IgZGVsaW1pdGVyIHRva2VucyIpOworICAgICAgICB9CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZXhwZWN0ZWQubGVuZ3RoOyBpICsrKSB7CisgICAgICAgICAgICBpZiAoIXN0Lm5leHRFbGVtZW50KCkuZXF1YWxzKGV4cGVjdGVkW2ldKQorICAgICAgICAgICAgICAgIHx8IHN0LmNvdW50VG9rZW5zKCkgIT0gZXhwZWN0ZWQubGVuZ3RoIC0gaSAtIDEpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiQ291bnRUb2tlbnMgZGVmYXVsdCBkZWxpbWl0ZXIgZ2l2ZXMgd3JvbmcgcmVzdWx0cyIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZXhwZWN0ZWRyZXR1cm4ubGVuZ3RoOyBpICsrKSB7CisgICAgICAgICAgICBpZiAoIXN0cmV0dXJuLm5leHRFbGVtZW50KCkuZXF1YWxzKGV4cGVjdGVkcmV0dXJuW2ldKQorICAgICAgICAgICAgICAgIHx8IHN0cmV0dXJuLmNvdW50VG9rZW5zKCkgIT0gZXhwZWN0ZWRyZXR1cm4ubGVuZ3RoIC0gaSAtIDEpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiQ291bnRUb2tlbnMgd2l0aCBkZWZhdWx0IGRlbGltaXRlciBhbmQgZGVsaW1pdGVyIHRva2VucyBnaXZlcyB3cm9uZyByZXN1bHRzIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0gICAgCisgICAgfQorICAgICAgICAKKyAgICAvKioKKyAgICAgKiBOZXh0IHRva2VuIHdpdGggbmV3IGRlbGltaXRlcnMKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0TmV4dE5ld0RlbGltaXRlcnMoKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHN0ciA9ICJhYmMwZGVmMWdoaTJqa2wzbW5vNHBxcjBzdHUxdnd4Mnl6YTNiY2Q0ZWZnMGhpajFrbG0ybm9wM3FyczR0dXYiOworICAgICAgICBTdHJpbmcgZGVsaW1pdGVyW10gPSB7IjAiLCAiMSIsICIyIiwgIjMiLCAiNCJ9OworICAgICAgICBTdHJpbmcgZXhwZWN0ZWRbXVtdID0ge3siYWJjIiwgInBxciIsICJlZmcifSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ImRlZiIsICJzdHUiLCAiaGlqIn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyJnaGkiLCAidnd4IiwgImtsbSJ9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsiamtsIiwgInl6YSIsICJub3AifSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Im1ubyIsICJiY2QiLCAicXJzIn0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgIFN0cmluZ1Rva2VuaXplciBzdCA9IG5ldyBTdHJpbmdUb2tlbml6ZXIoc3RyKTsKKyAgICAgICAgaW50IHNpemUgPSBleHBlY3RlZFswXS5sZW5ndGg7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSArKykgeworICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBkZWxpbWl0ZXIubGVuZ3RoOyBqICsrKSB7CisgICAgICAgICAgICAgICAgaWYgKCFzdC5uZXh0VG9rZW4oZGVsaW1pdGVyW2pdKS5lcXVhbHMoZXhwZWN0ZWRbal1baV0pKSB7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJuZXh0VG9rZW4oKSB3aXRoIGRlbGltaXRlcnMgZXJyb3IgIiArIGkgKyAiICIgKyBqKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHN0LmNvdW50VG9rZW5zKCkgIT0gZXhwZWN0ZWRbal0ubGVuZ3RoIC0gaSkgeyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBlcnJsbigiY291bnRUb2tlbnMoKSBhZnRlciBuZXh0VG9rZW4oKSB3aXRoIGRlbGltaXRlcnMgZXJyb3IiCisgICAgICAgICAgICAgICAgICAgICAgICAgICsgaSArICIgIiArIGopOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSAgICAKKyAgICAgICAgc3QgPSBuZXcgU3RyaW5nVG9rZW5pemVyKHN0cik7CisgICAgICAgIFN0cmluZyBkZWxpbWl0ZXIxW10gPSB7IjAiLCAiMiIsICI0In07CisgICAgICAgIFN0cmluZyBleHBlY3RlZDFbXSA9IHsiYWJjIiwgImRlZjFnaGkiLCAiamtsM21ubyIsICJwcXIiLCAic3R1MXZ3eCIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInl6YTNiY2QiLCAiZWZnIiwgImhpajFrbG0iLCAibm9wM3FycyIsICJ0dXYifTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBleHBlY3RlZDEubGVuZ3RoOyBpICsrKSB7CisgICAgICAgICAgICBpZiAoIXN0Lm5leHRUb2tlbihkZWxpbWl0ZXIxW2kgJSBkZWxpbWl0ZXIxLmxlbmd0aF0pLmVxdWFscygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkMVtpXSkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigibmV4dFRva2VuKCkgd2l0aCBkZWxpbWl0ZXJzIGVycm9yICIgKyBpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmcpCisgICAgeworICAgIAl0cnkKKyAgICAgICAgeworICAgICAgICAgICAgU3RyaW5nVG9rZW5pemVyVGVzdCB0ZXN0ID0gbmV3IFN0cmluZ1Rva2VuaXplclRlc3QoKTsKKyAgICAgICAgICAgIHRlc3QucnVuKGFyZyk7CisgICAgICAgICAgICAvLyB0ZXN0LlRlc3RDYXNlQ29tcGFyZSgpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkKKyAgICAgICAgeworICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3V0aWwvVHJpZVRlc3QuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC91dGlsL1RyaWVUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMjljMDU5MAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdGVzdC91dGlsL1RyaWVUZXN0LmphdmEKQEAgLTAsMCArMSw3MzggQEAKKy8qKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvdXRpbC9UcmllVGVzdC5qYXZhLHYgJCAKKyogJERhdGU6IDIwMDIvMDQvMDIgMjE6MDA6MDggJCAKKyogJFJldmlzaW9uOiAxLjQgJAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudGVzdC51dGlsOworCitpbXBvcnQgY29tLmlibS5pY3UuZGV2LnRlc3QuVGVzdEZtd2s7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5UcmllOworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuSW50VHJpZTsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLkNoYXJUcmllOworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuVUNoYXJhY3RlclByb3BlcnR5OworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuVVRGMTY7CitpbXBvcnQgY29tLmlibS5pY3UubGFuZy5VQ2hhcmFjdGVyOworaW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJlYW07CisKKy8qKgorKiBUZXN0aW5nIGNsYXNzIGZvciBUcmllLiBUZXN0cyBoZXJlIHdpbGwgYmUgc2ltcGxlLCBzaW5jZSBib3RoIENoYXJUcmllIGFuZCAKKyogSW50VHJpZSBhcmUgdmVyeSBzaW1pbGFyIGFuZCBhcmUgaGVhdmlseSB1c2VkIGluIG90aGVyIHBhcnRzIG9mIElDVTRKLgorKiBDb2RlcyB1c2luZyBUcmllcyBhcmUgZXhwZWN0ZWQgdG8gaGF2ZSBkZXRhaWxlZCB0ZXN0cy4KKyogQGF1dGhvciBTeW4gV2VlIFF1ZWsKKyogQHNpbmNlIHJlbGVhc2UgMi4xIEphbiAwMSAyMDAyCisqLworcHVibGljIGZpbmFsIGNsYXNzIFRyaWVUZXN0IGV4dGVuZHMgVGVzdEZtd2sgCit7IAorICAgIC8vIGNvbnN0cnVjdG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAKKyAgICAvKioKKyAgICAqIENvbnN0cnVjdG9yCisgICAgKi8KKyAgICBwdWJsaWMgVHJpZVRlc3QoKQorICAgIHsKKyAgICB9CisgICAgICAKKyAgICAvLyBwdWJsaWMgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZyBhcmdbXSkgCisgICAgeworICAgICAgICBUcmllVGVzdCB0ZXN0ID0gbmV3IFRyaWVUZXN0KCk7CisgICAgICAgIHRyeSB7CisJICAgICAgICB0ZXN0LnJ1bihhcmcpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAJdGVzdC5lcnJsbigiRXJyb3IgdGVzdGluZyB0cmlldGVzdCIpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFRlc3RpbmcgdGhlIGNvbnN0cnVjdG9ycyBvZiB0aGUgVHJpZXMKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0SW5pdCgpIAorICAgIHsKKyAgICAJYnl0ZSBhcnJheVtdID0gbmV3IGJ5dGVbSU5UX1RSSUVfREFUQV8ubGVuZ3RoIDw8IDFdOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IElOVF9UUklFX0RBVEFfLmxlbmd0aDsgaSArKykgeworICAgICAgICAgICAgYXJyYXlbaSA8PCAxXSA9IChieXRlKSgoSU5UX1RSSUVfREFUQV9baV0gPj4gOCkgJiAweEZGKTsKKyAgICAgICAgICAgIGFycmF5WyhpIDw8IDEpICsgMV0gPSAoYnl0ZSkoSU5UX1RSSUVfREFUQV9baV0gJiAweEZGKTsKKyAgICAgICAgfQorICAgICAgICBCeXRlQXJyYXlJbnB1dFN0cmVhbSBpbnB1dFN0cmVhbSAgICA9IG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KTsKKyAgICAgICAgSW50RGF0YU1hbmlwdWxhdGUgICAgZGF0YW1hbmlwdWxhdGUgPSBuZXcgSW50RGF0YU1hbmlwdWxhdGUoKTsKKyAgICAgICAgLy8gY2hhcnRyaWUgc2hvdWxkIGZhaWwgd2l0aCBpbnQgZGF0YQorICAgICAgICB0cnkgeworICAgICAgICAJQ2hhclRyaWUgY2hhcnRyaWUgPSBuZXcgQ2hhclRyaWUoaW5wdXRTdHJlYW0sIGRhdGFtYW5pcHVsYXRlKTsKKyAgICAgICAgCWVycmxuKCJDaGFyVHJpZSBzaG91bGQgZmFpbCB3aXRoIEludCBkYXRhIGR1cmluZyBjb25zdHJ1Y3Rpb24iKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgfQorICAgICAgICAvLyBpbnR0cmllIHNob3VsZCBwYXNzIHdpdGggaW50IGRhdGEKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgCWlucHV0U3RyZWFtLnJlc2V0KCk7CisgICAgICAgICAgICBJbnRUcmllIG1fdHJpZV8gPSBuZXcgSW50VHJpZShpbnB1dFN0cmVhbSwgZGF0YW1hbmlwdWxhdGUpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkZhaWxlZCByZWFkaW5nIEludFRyaWUgZGF0YSIpOworICAgICAgICB9CQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0SW50VmFsdWVzKCkKKyAgICB7CisgICAgICAgIGJ5dGUgYXJyYXlbXSA9IG5ldyBieXRlW0lOVF9UUklFX0RBVEFfLmxlbmd0aCA8PCAxXTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBJTlRfVFJJRV9EQVRBXy5sZW5ndGg7IGkgKyspIHsKKyAgICAgICAgICAgIGFycmF5W2kgPDwgMV0gPSAoYnl0ZSkoKElOVF9UUklFX0RBVEFfW2ldID4+IDgpICYgMHhGRik7CisgICAgICAgICAgICBhcnJheVsoaSA8PCAxKSArIDFdID0gKGJ5dGUpKElOVF9UUklFX0RBVEFfW2ldICYgMHhGRik7CisgICAgICAgIH0KKyAgICAgICAgQnl0ZUFycmF5SW5wdXRTdHJlYW0gaW5wdXRTdHJlYW0gPSBuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oYXJyYXkpOworICAgICAgICBJbnRUcmllIHRyaWUgPSBudWxsOworICAgICAgICB0cnkgeworICAgICAgICAgICAgdHJpZSA9IG5ldyBJbnRUcmllKGlucHV0U3RyZWFtLCBuZXcgSW50RGF0YU1hbmlwdWxhdGUoKSk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiRmFpbGVkIHJlYWRpbmcgdHJpZSBkYXRhIik7CisgICAgICAgIH0KKyAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZmZlciA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBTVFJJTkdfMV8ubGVuZ3RoOyBpICsrKSB7CisgICAgICAgICAgICBVVEYxNi5hcHBlbmQoYnVmZmVyLCBTVFJJTkdfMV9baV0pOworICAgICAgICB9CisgICAgICAgIFN0cmluZyBzdHIgICAgICA9IGJ1ZmZlci50b1N0cmluZygpOworICAgICAgICBpbnQgICAgdmFsdWVzW10gPSBWQUxVRV8xXzsKKyAgICAgICAgaW50ZXJuYWxUZXN0SW50VmFsdWVzKHRyaWUsIHN0ciwgdmFsdWVzKTsKKyAgICAgICAgCisgICAgICAgIC8vIHRlc3RpbmcgaW52YWxpZCBjb2RlcG9pbnRzCisgICAgICAgIGludCByZXN1bHQgPSAwOworICAgICAgICByZXN1bHQgPSB0cmllLmdldENvZGVQb2ludFZhbHVlKDB4MTEwMDAwKTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSAwKSB7CisgICAgICAgICAgICBlcnJsbigiRXJyb3I6IEV4cGVjdGVkIHZhbHVlIGZvciBpbGxlZ2FsIGNvZGVwb2ludCBzaG91bGQgYmUgMCIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDB4RkZGRjsgaSArKykgeworICAgIAkJaWYgKHRyaWUuZ2V0Qk1QVmFsdWUoKGNoYXIpaSkgIT0gdHJpZS5nZXRDb2RlUG9pbnRWYWx1ZShpKSkgeworICAgIAkJCWVycmxuKCJGb3IgQk1QIGNvZGVwb2ludCwgZ2V0Qk1QVmFsdWUgc2hvdWxkIGJlIHRoZSBzYW1lICIgKworICAgIAkJCSAgICAgICAiYXMgZ2V0Q29kZXBvaW50VmFsdWUiKTsKKyAgICAJCX0KKyAgICAJfQorICAgIAlmb3IgKGludCBpID0gMHgxMDAwMDsgaSA8IDB4MTBmZmZmOyBpICsrKSB7CisgICAgCQljaGFyIGxlYWQgPSBVVEYxNi5nZXRMZWFkU3Vycm9nYXRlKGkpOworICAgIAkJY2hhciB0cmFpbCA9IFVURjE2LmdldFRyYWlsU3Vycm9nYXRlKGkpOworICAgIAkJaW50IHZhbHVlID0gdHJpZS5nZXRDb2RlUG9pbnRWYWx1ZShpKTsKKyAgICAJCWlmICh2YWx1ZSAhPSB0cmllLmdldFN1cnJvZ2F0ZVZhbHVlKGxlYWQsIHRyYWlsKSB8fAorICAgIAkJICAgIHZhbHVlICE9IHRyaWUuZ2V0VHJhaWxWYWx1ZSh0cmllLmdldExlYWRWYWx1ZShsZWFkKSwgCisgICAgCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWlsKSkgeworICAgIAkJICAgIGVycmxuKCJGb3IgTm9uLUJNUCBjb2RlcG9pbnRzLCBnZXRTdXJyb2dhdGVWYWx1ZSBzaG91bGQgYmUgIgorICAgIAkJICAgICAgICAgICsgInRoZSBzYW1lIHMgZ2V0Q29kZXBvaW50VmFsdWUgYW5kIGdldFRyYWlsVmFsdWUiKTsKKyAgICAJCX0JCQorICAgIAl9CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RDaGFyVmFsdWVzKCkKKyAgICB7CisgICAgCUNoYXJUcmllIHRyaWUgPSBudWxsOworICAgIAl0cnkgeworCQkgCXRyaWUgPSBVQ2hhcmFjdGVyUHJvcGVydHkuZ2V0SW5zdGFuY2UoKS5tX3RyaWVfOworICAgIAl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgIAkJZXJybG4oIkVycm9yIGNyZWF0aW5nIHVjaGFyYWN0ZXIgdHJpZSIpOworICAgIAl9CisgICAgCQorICAgIAlmb3IgKGludCBpID0gMDsgaSA8IDB4RkZGRjsgaSArKykgeworICAgIAkJaWYgKHRyaWUuZ2V0Qk1QVmFsdWUoKGNoYXIpaSkgIT0gdHJpZS5nZXRDb2RlUG9pbnRWYWx1ZShpKSkgeworICAgIAkJCWVycmxuKCJGb3IgQk1QIGNvZGVwb2ludCwgZ2V0Qk1QVmFsdWUgc2hvdWxkIGJlIHRoZSBzYW1lICIgKworICAgIAkJCSAgICAgICAiYXMgZ2V0Q29kZXBvaW50VmFsdWUiKTsKKyAgICAJCX0KKyAgICAJfQorICAgIAlmb3IgKGludCBpID0gMHgxMDAwMDsgaSA8IDB4MTBmZmZmOyBpICsrKSB7CisgICAgCQljaGFyIGxlYWQgPSBVVEYxNi5nZXRMZWFkU3Vycm9nYXRlKGkpOworICAgIAkJY2hhciB0cmFpbCA9IFVURjE2LmdldFRyYWlsU3Vycm9nYXRlKGkpOworICAgIAkJY2hhciB2YWx1ZSA9IHRyaWUuZ2V0Q29kZVBvaW50VmFsdWUoaSk7CisgICAgCQlpZiAodmFsdWUgIT0gdHJpZS5nZXRTdXJyb2dhdGVWYWx1ZShsZWFkLCB0cmFpbCkgfHwKKyAgICAJCSAgICB2YWx1ZSAhPSB0cmllLmdldFRyYWlsVmFsdWUodHJpZS5nZXRMZWFkVmFsdWUobGVhZCksIAorICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFpbCkpIHsKKyAgICAJCSAgICBlcnJsbigiRm9yIE5vbi1CTVAgY29kZXBvaW50cywgZ2V0U3Vycm9nYXRlVmFsdWUgc2hvdWxkIGJlICIKKyAgICAJCSAgICAgICAgICArICJ0aGUgc2FtZSBzIGdldENvZGVwb2ludFZhbHVlIGFuZCBnZXRUcmFpbFZhbHVlIik7CisgICAgCQl9CQkKKyAgICAJfQorICAgIH0KKyAgICAKKyAgICAvLyBwcml2YXRlIGNsYXNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIEludERhdGFNYW5pcHVsYXRlIGltcGxlbWVudHMgVHJpZS5EYXRhTWFuaXB1bGF0ZQorICAgIHsKKyAgICAgICAgcHVibGljIGludCBnZXRGb2xkaW5nT2Zmc2V0KGludCBkYXRhKSAKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGRhdGEgPj4gMTY7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLy8gcHJpdmF0ZSBkYXRhIG1lbWJlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIAorICAgIC8vIHRyaWUgZGF0YSwgZ2VuZXJhdGVkIGZyb20gaWN1NGMKKyAgICBwcml2YXRlIGZpbmFsIGNoYXIgSU5UX1RSSUVfREFUQV9bXSA9IHsKKyAgICAweDU0NzIsIDB4Njk2NSwgMHgwLCAweDEyNSwgMHgwLCAweDhjMCwgMHgwLCAweDE4YywgMHgwLCAweDgsIDB4OCwgMHg4LCAKKzB4OCwgMHhmLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAKKzB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIAorMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgCisweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAKKzB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIAorMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgCisweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAKKzB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIAorMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgCisweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAKKzB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIAorMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgCisweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAKKzB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIAorMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgCisweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAKKzB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIAorMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgCisweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAKKzB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIAorMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgCisweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAKKzB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIAorMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgCisweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAKKzB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIAorMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgCisweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAKKzB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIAorMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgCisweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAKKzB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIAorMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgCisweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAKKzB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIAorMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgCisweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAKKzB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIAorMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgCisweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAKKzB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIAorMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgCisweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAKKzB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIAorMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgCisweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAKKzB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIAorMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgCisweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAKKzB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIAorMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgCisweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAKKzB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIAorMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgCisweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAKKzB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIAorMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgCisweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAKKzB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIAorMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgCisweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAKKzB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIAorMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgCisweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAKKzB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIAorMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgCisweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAKKzB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIAorMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgCisweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAKKzB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIAorMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgCisweDE3LCAweDFlLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAKKzB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIAorMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgCisweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAKKzB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIAorMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgCisweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAKKzB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIAorMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgCisweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAKKzB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIAorMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgCisweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAKKzB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIAorMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgCisweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAKKzB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIAorMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgCisweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAKKzB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIAorMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgCisweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAKKzB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIAorMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgCisweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAKKzB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIAorMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgCisweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAKKzB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIAorMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgCisweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAKKzB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIAorMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgCisweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAKKzB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIAorMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgCisweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAKKzB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4NGQsIDB4NGYsIDB4NGYsIDB4NGYsIAorMHg0ZiwgMHg0ZiwgMHg1MywgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgCisweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIyLCAweDI5LCAweDI5LCAweDI5LCAweDI5LCAweDI5LCAKKzB4NWIsIDB4MjksIDB4MjksIDB4MjksIDB4MjksIDB4MjksIDB4MjksIDB4MjksIDB4MjksIDB4MjksIDB4MjksIDB4MjksIAorMHgyOSwgMHgyOSwgMHgyOSwgMHgyOSwgMHgyOSwgMHgyOSwgMHgyOSwgMHgyOSwgMHgyOSwgMHgyOSwgMHgyOSwgMHgyOSwgCisweDI5LCAweDI5LCAweDI5LCAweDI5LCAweDI5LCAweDI5LCAweDI5LCAweDI5LCAweDI5LCAweDI5LCAweDI5LCAweDI5LCAKKzB4MjksIDB4MjksIDB4MjksIDB4MjksIDB4MjksIDB4MjksIDB4MjksIDB4MjksIDB4MjksIDB4MjksIDB4MjksIDB4MjksIAorMHgyOSwgMHgyOSwgMHgyOSwgMHgyOSwgMHgyOSwgMHgyOSwgMHgyOSwgMHgyOSwgMHgyOSwgMHgyOSwgMHgyOSwgMHgyOSwgCisweDI5LCAweDI5LCAweDI5LCAweDI5LCAweDI5LCAweDI5LCAweDI5LCAweDI5LCAweDI5LCAweDI5LCAweDI5LCAweDI5LCAKKzB4MjksIDB4MjksIDB4MjksIDB4MjksIDB4MjksIDB4MjksIDB4MjksIDB4MjksIDB4MjksIDB4MjksIDB4MjksIDB4MjksIAorMHgyOSwgMHgyOSwgMHgyOSwgMHgyOSwgMHgyOSwgMHgyOSwgMHgyOSwgMHgyOSwgMHgyOSwgMHgyOSwgMHgyOSwgMHgyOSwgCisweDI5LCAweDI5LCAweDI5LCAweDI5LCAweDI5LCAweDI5LCAweDI5LCAweDI5LCAweDI5LCAweDI5LCAweDI5LCAweDI5LCAKKzB4MjksIDB4MjksIDB4MjksIDB4MjksIDB4MjksIDB4MjksIDB4MjksIDB4MjksIDB4MjksIDB4MjksIDB4MjksIDB4MjksIAorMHgyOSwgMHgyOSwgMHgyOSwgMHgyOSwgMHgyOSwgMHgyOSwgMHgyOSwgMHgyOSwgMHgyOSwgMHgyOSwgMHgyOSwgMHgyOSwgCisweDI5LCAweDI5LCAweDI5LCAweDI5LCAweDI5LCAweDI5LCAweDI5LCAweDI5LCAweDI5LCAweDI5LCAweDI5LCAweDI5LCAKKzB4MjksIDB4MjksIDB4MjksIDB4MjksIDB4MjksIDB4MjksIDB4MjksIDB4MjksIDB4MjksIDB4MjksIDB4MjksIDB4MmUsIAorMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgCisweDMyLCAweDMyLCAweDMyLCAweDMyLCAweDMyLCAweDMyLCAweDMyLCAweDMyLCAweDMyLCAweDMyLCAweDMyLCAweDMyLCAKKzB4MzIsIDB4MzIsIDB4MzIsIDB4MzIsIDB4MzIsIDB4MzIsIDB4MzIsIDB4MzIsIDB4MzIsIDB4MzIsIDB4MzIsIDB4MzIsIAorMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgCisweDMyLCAweDMyLCAweDMyLCAweDMyLCAweDMyLCAweDMyLCAweDMyLCAweDMyLCAweDMyLCAweDMyLCAweDMyLCAweDMyLCAKKzB4MzIsIDB4MzIsIDB4MzIsIDB4MzIsIDB4MzIsIDB4MzIsIDB4MzIsIDB4MzIsIDB4MzIsIDB4MzIsIDB4MzIsIDB4MzIsIAorMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgCisweDMyLCAweDMyLCAweDMyLCAweDMyLCAweDMyLCAweDMyLCAweDMyLCAweDMyLCAweDMyLCAweDMyLCAweDMyLCAweDMyLCAKKzB4MzIsIDB4MzIsIDB4MzIsIDB4MzIsIDB4MzIsIDB4MzIsIDB4MzIsIDB4MzIsIDB4MzIsIDB4MzIsIDB4MzIsIDB4MzIsIAorMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgCisweDMyLCAweDMyLCAweDMyLCAweDMyLCAweDMyLCAweDMyLCAweDMyLCAweDMyLCAweDMyLCAweDMyLCAweDMyLCAweDMyLCAKKzB4MzIsIDB4MzIsIDB4MzIsIDB4MzIsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4MjAsIAorMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgCisweDIwLCAweDIwLCAweDIyLCAweDI5LCAweDI5LCAweDI5LCAweDI5LCAweDI5LCAweDI5LCAweDI5LCAweDI5LCAweDI5LCAKKzB4MzIsIDB4MzIsIDB4MzIsIDB4MzIsIDB4MzIsIDB4MzIsIDB4MzIsIDB4MzIsIDB4MzIsIDB4MzIsIDB4MzIsIDB4MzIsIAorMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgMHgzMiwgCisweDMyLCAweDMyLCAweDMyLCAweDMyLCAweDMyLCAweDMyLCAweDMyLCAweDMyLCAweDMyLCAweDMyLCAweDMyLCAweDMyLCAKKzB4MzIsIDB4MzIsIDB4MzIsIDB4MzIsIDB4MzYsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIAorMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgCisweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAweDE3LCAKKzB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIDB4MTcsIAorMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgMHgxNywgCisweDE3LCAweDE3LCAweDNkLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4NDUsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDEyMzQsIDB4MCwgMHgxMjM0LCAKKzB4MCwgMHgxMjM0LCAweDAsIDB4MTIzNCwgMHgwLCAweDEyMzQsIDB4MCwgMHgxMjM0LCAweDAsIDB4MTIzNCwgMHgwLCAweDEyMzQsIAorMHgwLCAweDEyMzQsIDB4MCwgMHgxMjM0LCAweDAsIDB4MTIzNCwgMHgwLCAweDEyMzQsIDB4MCwgMHgxMjM0LCAweDAsIDB4MTIzNCwgCisweDAsIDB4MTIzNCwgMHgwLCAweDEyMzQsIDB4MCwgMHgxMjM0LCAweDAsIDB4MTIzNCwgMHgwLCAweDEyMzQsIDB4MCwgMHgxMjM0LCAKKzB4MCwgMHgxMjM0LCAweDAsIDB4MTIzNCwgMHgwLCAweDEyMzQsIDB4MCwgMHgxMjM0LCAweDAsIDB4MTIzNCwgMHgwLCAweDEyMzQsIAorMHgwLCAweDEyMzQsIDB4MCwgMHgxMjM0LCAweDAsIDB4MTIzNCwgMHgwLCAweDEyMzQsIDB4MCwgMHgxMjM0LCAweDAsIDB4MTIzNCwgCisweDAsIDB4MTIzNCwgMHgwLCAweDEyMzQsIDB4MCwgMHgxMjM0LCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4NjE2MiwgMHgwLCAweDYxNjIsIAorMHgwLCAweDYxNjIsIDB4MCwgMHg2MTYyLCAweDAsIDB4NjE2MiwgMHgwLCAweDYxNjIsIDB4MCwgMHg2MTYyLCAweDAsIDB4NjE2MiwgCisweDAsIDB4NjE2MiwgMHgwLCAweDYxNjIsIDB4MCwgMHg2MTYyLCAweDAsIDB4NjE2MiwgMHgwLCAweDYxNjIsIDB4MCwgMHg2MTYyLCAKKzB4MCwgMHg2MTYyLCAweDAsIDB4NjE2MiwgMHgwLCAweDYxNjIsIDB4MCwgMHg2MTYyLCAweDAsIDB4NjE2MiwgMHgwLCAweDYxNjIsIAorMHgwLCAweDYxNjIsIDB4MCwgMHg2MTYyLCAweDAsIDB4NjE2MiwgMHgwLCAweDYxNjIsIDB4MCwgMHg2MTYyLCAweDAsIDB4NjE2MiwgCisweDAsIDB4NjE2MiwgMHgwLCAweDYxNjIsIDB4MCwgMHg2MTYyLCAweDAsIDB4NjE2MiwgMHgwLCAweDYxNjIsIDB4MCwgMHg2MTYyLCAKKzB4MCwgMHg2MTYyLCAweDAsIDB4NjE2MiwgMHgwLCAweDMxMzIsIDB4MCwgMHgzMTMyLCAweDAsIDB4MzEzMiwgMHgwLCAweDMxMzIsIAorMHgwLCAweDMxMzIsIDB4MCwgMHgzMTMyLCAweDAsIDB4MzEzMiwgMHgwLCAweDMxMzIsIDB4MCwgMHgzMTMyLCAweDAsIDB4MzEzMiwgCisweDAsIDB4MzEzMiwgMHgwLCAweDMxMzIsIDB4MCwgMHgzMTMyLCAweDAsIDB4MzEzMiwgMHgwLCAweDMxMzIsIDB4MCwgMHgzMTMyLCAKKzB4MCwgMHgzMTMyLCAweDAsIDB4MzEzMiwgMHgwLCAweDMxMzIsIDB4MCwgMHgzMTMyLCAweDAsIDB4MzEzMiwgMHgwLCAweDMxMzIsIAorMHgwLCAweDMxMzIsIDB4MCwgMHgzMTMyLCAweDAsIDB4MzEzMiwgMHgwLCAweDMxMzIsIDB4MCwgMHgzMTMyLCAweDAsIDB4MzEzMiwgCisweDAsIDB4MzEzMiwgMHgwLCAweDMxMzIsIDB4MCwgMHgzMTMyLCAweDAsIDB4MzEzMiwgMHgwLCAweDMxMzIsIDB4MCwgMHgzMTMyLCAKKzB4MCwgMHgzMTMyLCAweDAsIDB4MzEzMiwgMHgwLCAweDI3LCAweDAsIDB4MjcsIDB4MCwgMHgyNywgMHgwLCAweDI3LCAKKzB4MCwgMHgyNywgMHgwLCAweDI3LCAweDAsIDB4MjcsIDB4MCwgMHgyNywgMHgwLCAweDI3LCAweDAsIDB4MjcsIAorMHgwLCAweDI3LCAweDAsIDB4MjcsIDB4MCwgMHgyNywgMHgwLCAweDI3LCAweDAsIDB4MjcsIDB4MCwgMHgyNywgCisweDAsIDB4MjcsIDB4MCwgMHgyNywgMHgwLCAweDI3LCAweDAsIDB4MjcsIDB4MCwgMHgyNywgMHgwLCAweDI3LCAKKzB4MCwgMHgyNywgMHgwLCAweDI3LCAweDAsIDB4MjcsIDB4MCwgMHgyNywgMHgwLCAweDI3LCAweDAsIDB4MjcsIAorMHgwLCAweDI3LCAweDAsIDB4MjcsIDB4MCwgMHgyNywgMHgwLCAweDI3LCAweDAsIDB4MjcsIDB4MCwgMHgyNywgCisweDAsIDB4MjcsIDB4MCwgMHgyNywgMHgwLCAweDEsIDB4MCwgMHgxLCAweDAsIDB4MSwgMHgwLCAweDEsIAorMHgwLCAweDEsIDB4MCwgMHgxLCAweDAsIDB4MSwgMHgwLCAweDEsIDB4MCwgMHgxLCAweDAsIDB4MSwgCisweDAsIDB4MSwgMHgwLCAweDEsIDB4MCwgMHgxLCAweDAsIDB4MSwgMHgwLCAweDEsIDB4MCwgMHgxLCAKKzB4MCwgMHgxLCAweDAsIDB4MSwgMHgwLCAweDEsIDB4MCwgMHgxLCAweDAsIDB4MSwgMHgwLCAweDEsIAorMHgwLCAweDEsIDB4MCwgMHgxLCAweDAsIDB4MSwgMHgwLCAweDEsIDB4MCwgMHgxLCAweDAsIDB4MSwgCisweDAsIDB4MSwgMHgwLCAweDEsIDB4MCwgMHgxLCAweDAsIDB4MSwgMHgwLCAweDEsIDB4MCwgMHgxLCAKKzB4MCwgMHgxLCAweDAsIDB4NjE2MiwgMHgwLCAweDYxNjIsIDB4MCwgMHg2MTYyLCAweDAsIDB4NjE2MiwgMHgwLCAweDYxNjIsIAorMHgwLCAweDYxNjIsIDB4MCwgMHg2MTYyLCAweDAsIDB4NjE2MiwgMHgwLCAweDYxNjIsIDB4MCwgMHg2MTYyLCAweDAsIDB4NjE2MiwgCisweDAsIDB4NjE2MiwgMHgwLCAweDYxNjIsIDB4MCwgMHg2MTYyLCAweDAsIDB4NjE2MiwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4ZiwgCisweDAsIDB4MTAsIDB4MCwgMHgxMCwgMHgwLCAweDExLCAweDAsIDB4MTIsIDB4MCwgMHgxMiwgMHgwLCAweDEyLCAKKzB4MCwgMHgxMiwgMHgwLCAweDEyLCAweDAsIDB4MTIsIDB4MCwgMHgxMiwgMHgwLCAweDEyLCAweDAsIDB4MTIsIAorMHgwLCAweDEyLCAweDAsIDB4MTIsIDB4MCwgMHgxMiwgMHgwLCAweDEyLCAweDAsIDB4MTIsIDB4MCwgMHgxMiwgCisweDAsIDB4MTIsIDB4MCwgMHgxMiwgMHgwLCAweDEyLCAweDAsIDB4MTIsIDB4MCwgMHgxMiwgMHgwLCAweDEyLCAKKzB4MCwgMHgxMiwgMHgwLCAweDEyLCAweDAsIDB4MTIsIDB4MCwgMHgxMiwgMHg4MjAsIDB4MSwgMHg4MjAsIDB4MSwgCisweDgyMCwgMHgxLCAweDgyMCwgMHgxLCAweDg0MCwgMHg2MTYzLCAweDg2MCwgMHg2MTYyLCAweDg2MCwgMHg2MTYyLCAweDg2MCwgMHg2MTYyLCAKKzB4ODYwLCAweDYxNjIsIDB4ODYwLCAweDYxNjIsIDB4ODYwLCAweDYxNjIsIDB4ODYwLCAweDYxNjIsIDB4ODYwLCAweDYxNjIsIDB4ODYwLCAweDYxNjIsIAorMHg4NjAsIDB4NjE2MiwgMHg4NjAsIDB4NjE2MiwgMHg4NjAsIDB4NjE2MiwgMHg4NjAsIDB4NjE2MiwgMHg4NjAsIDB4NjE2MiwgMHg4NjAsIDB4NjE2MiwgCisweDg2MCwgMHg2MTYyLCAweDg2MCwgMHg2MTYyLCAweDg2MCwgMHg2MTYyLCAweDg2MCwgMHg2MTYyLCAweDg2MCwgMHg2MTYyLCAweDg2MCwgMHg2MTYyLCAKKzB4ODYwLCAweDYxNjIsIDB4ODYwLCAweDYxNjIsIDB4ODYwLCAweDYxNjIsIDB4ODYwLCAweDYxNjIsIDB4ODYwLCAweDYxNjIsIDB4ODYwLCAweDYxNjIsIAorMHg4NjAsIDB4NjE2MiwgMHg4NjAsIDB4NjE2MiwgMHg4NjAsIDB4NjE2MiwgMHg4NjAsIDB4NjE2MiwgMHg4NjAsIDB4NjE2MiwgMHg4NjAsIDB4NjE2MiwgCisweDg2MCwgMHg2MTYyLCAweDg2MCwgMHg2MTYyLCAweDg2MCwgMHg2MTYyLCAweDg4MCwgMHg2MTYyLCAweDAsIDB4MzEzMiwgMHgwLCAweDMxMzIsIAorMHgwLCAweDMxMzIsIDB4MCwgMHgzMTMyLCAweDAsIDB4MzEzMiwgMHgwLCAweDMxMzIsIDB4MCwgMHgzMTMyLCAweDAsIDB4MzEzMiwgCisweDAsIDB4MzEzMiwgMHgwLCAweDMxMzIsIDB4MCwgMHgzMTMyLCAweDAsIDB4MzEzMiwgMHgwLCAweDMxMzIsIDB4MCwgMHgzMTMyLCAKKzB4OGEwLCAweDFmLCAweDAsIDB4MjcsIDB4MCwgMHgyNywgMHgwLCAweDI3LCAweDAsIDB4MjcsIDB4MCwgMHgyNywgCisweDAsIDB4MjcsIDB4MCwgMHgyNywgMHgwLCAweDI3LCAweDAsIDB4MjcsIDB4MCwgMHgyNywgMHgwLCAweDI3LCAKKzB4MCwgMHgyNywgMHgwLCAweDI3LCAweDAsIDB4MjcsIDB4MCwgMHgyNywgMHgwLCAweDI3LCAweDAsIDB4MjcsIAorMHgwLCAweDI3LCAweDAsIDB4MjcsIDB4MCwgMHgyNywgMHgwLCAweDI3LCAweDAsIDB4MjcsIDB4MCwgMHgyNywgCisweDAsIDB4MjcsIDB4MCwgMHgyNywgMHgwLCAweDI3LCAweDAsIDB4MjcsIDB4MCwgMHgyNywgMHgwLCAweDI3LCAKKzB4MCwgMHgyNywgMHgwLCAweDI3LCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAKKzB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIAorMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgCisweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MAorICAgIH07CisKKyAgICBwcml2YXRlIGZpbmFsIGludCBTVFJJTkdfMV9bXSA9IHswLCAweDIwLCAweGE3LCAweDM0MDAsIDB4OWZhNiwgMHhkYWRhLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweGVlZWUsIDB4MTExMTEsIDB4NDQ0NDQsIDB4ZjAwMDMsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ZjAwMDQsIDB4ZjAwMDYsIDB4ZjAwMDcsIDB4ZjAwMjB9OworICAgIHByaXZhdGUgZmluYWwgaW50IFZBTFVFXzFfW10gPSB7MCwgMHgxMjM0LCAwLCAweDYxNjIsIDB4MzEzMiwgMHgyNywgMSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYxNjIsIDAsIDB4ZiwgMHgxMCwgMHgxMSwgMHgxMiwgMH07CisgICAgCisgICAgLy8gcHJpdmF0ZSBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgCisgICAgcHJpdmF0ZSB2b2lkIGludGVybmFsVGVzdEludFZhbHVlcyhJbnRUcmllIHRyaWUsIFN0cmluZyBzdHIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZhbHVlc1tdKSAKKyAgICB7CisgICAgICAgIC8vIHRyeSBmb3J3YXJkIAorICAgICAgICBpbnQgY291bnQgPSAwOworICAgICAgICBpbnQgdmFsdWVpbmRleCA9IDA7CisgICAgICAgIHdoaWxlIChjb3VudCA8IHN0ci5sZW5ndGgoKSkgeworICAgICAgICAgICAgaW50IHZhbHVlOworICAgICAgICAgICAgY2hhciBjID0gc3RyLmNoYXJBdChjb3VudCArKyk7CisgICAgICAgICAgICBjaGFyIGMyID0gVVRGMTYuaXNMZWFkU3Vycm9nYXRlKGMpICYmIGNvdW50IDwgc3RyLmxlbmd0aCgpICYmCisgICAgICAgICAgICAgICAgICAgICAgVVRGMTYuaXNUcmFpbFN1cnJvZ2F0ZShzdHIuY2hhckF0KGNvdW50KSkKKyAgICAgICAgICAgICAgICAgICAgICA/IHN0ci5jaGFyQXQoY291bnQgKyspIDogMDsKKyAgICAgICAgICAgIGlmIChjMiAhPSAwKSB7CisgICAgICAgICAgICAgICAgdmFsdWUgPSB0cmllLmdldFN1cnJvZ2F0ZVZhbHVlKGMsIGMyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHZhbHVlID0gdHJpZS5nZXRCTVBWYWx1ZShjKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZXNbdmFsdWVpbmRleF0pIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRXJyb3I6IEV4cGVjdGVkIHZhbHVlIGZvciAweCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKGMpICsKKyAgICAgICAgICAgICAgICAgICAgICAiIGFuZCAweCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKGMyKSArICIgc2hvdWxkIGJlICIgKyAKKyAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXNbdmFsdWVpbmRleF0gKyAiIG5vdCAiICsgdmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFsdWUgPSB0cmllLmdldExlYWRWYWx1ZShjKTsKKyAgICAgICAgICAgIGlmIChjMiAhPSAwKSB7CisgICAgICAgICAgICAgICAgdmFsdWUgPSB0cmllLmdldFRyYWlsVmFsdWUodmFsdWUsIGMyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZXNbdmFsdWVpbmRleF0pIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRXJyb3I6IEV4cGVjdGVkIHZhbHVlIGZvciAweCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKGMpICsKKyAgICAgICAgICAgICAgICAgICAgICAiIGFuZCAweCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKGMyKSArICIgc2hvdWxkIGJlICIgKyAKKyAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXNbdmFsdWVpbmRleF0gKyAiIG5vdCAiICsgdmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGMyIT0wKSB7CisgICAgICAgICAgICAgICAgaW50IGNvZGVwb2ludCA9IFVDaGFyYWN0ZXIuZ2V0Q29kZVBvaW50KGMsIGMyKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IHRyaWUuZ2V0Q29kZVBvaW50VmFsdWUoY29kZXBvaW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHZhbHVlID0gdHJpZS5nZXRCTVBWYWx1ZShjKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZXNbdmFsdWVpbmRleF0pIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRXJyb3I6IEV4cGVjdGVkIHZhbHVlIGZvciAweCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKGMpICsKKyAgICAgICAgICAgICAgICAgICAgICAiIGFuZCAweCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKGMyKSArICIgc2hvdWxkIGJlICIgKyAKKyAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXNbdmFsdWVpbmRleF0gKyAiIG5vdCAiICsgdmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFsdWVpbmRleCArKzsKKyAgICAgICAgfQorICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3V0aWwvVmVyc2lvbkluZm9UZXN0LmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvdXRpbC9WZXJzaW9uSW5mb1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGNlOGU5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L3V0aWwvVmVyc2lvbkluZm9UZXN0LmphdmEKQEAgLTAsMCArMSwzMjggQEAKKy8qKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rlc3QvdXRpbC9WZXJzaW9uSW5mb1Rlc3QuamF2YSx2ICQgCisqICREYXRlOiAyMDAyLzAzLzI3IDAxOjU5OjQ2ICQgCisqICRSZXZpc2lvbjogMS41ICQKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKKworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudGVzdC51dGlsOworCisKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYudGVzdC5UZXN0Rm13azsKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLlZlcnNpb25JbmZvOworCisKKy8qKgorKiBUZXN0aW5nIGNsYXNzIGZvciBWZXJzaW9uSW5mbworKiBAYXV0aG9yIFN5biBXZWUgUXVlaworKiBAc2luY2UgcmVsZWFzZSAyLjEgTWFyY2ggMDEgMjAwMgorKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBWZXJzaW9uSW5mb1Rlc3QgZXh0ZW5kcyBUZXN0Rm13ayAKK3sgCisgICAgLy8gY29uc3RydWN0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIAorICAgIC8qKgorICAgICogQ29uc3RydWN0b3IKKyAgICAqLworICAgIHB1YmxpYyBWZXJzaW9uSW5mb1Rlc3QoKQorICAgIHsKKyAgICB9CisKKyAgICAvLyBwdWJsaWMgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZyBhcmdbXSkgCisgICAgeworICAgICAgICBWZXJzaW9uSW5mb1Rlc3QgdGVzdCA9IG5ldyBWZXJzaW9uSW5mb1Rlc3QoKTsKKyAgICAgICAgdHJ5IHsKKwkgICAgICAgIHRlc3QucnVuKGFyZyk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgIAl0ZXN0LmVycmxuKCJFcnJvciB0ZXN0aW5nIFZlcnNpb25JbmZvIik7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogVGVzdCB0aGF0IHRoZSBpbnN0YW50aWF0aW9uIHdvcmtzCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEluc3RhbmNlKCkKKyAgICB7CisgICAgCVZlcnNpb25JbmZvIHZlcnNpb247CisgICAgCWZvciAoaW50IGkgPSAwOyBpIDwgSU5TVEFOQ0VfSU5WQUxJRF9TVFJJTkdfLmxlbmd0aDsgaSArKykgeworICAgIAkJdHJ5IHsKKyAgICAJCQl2ZXJzaW9uID0gCisgICAgCQkJICAgICAgICBWZXJzaW9uSW5mby5nZXRJbnN0YW5jZShJTlNUQU5DRV9JTlZBTElEX1NUUklOR19baV0pOworICAgIAkJCWVycmxuKCJcIiIgKyBJTlNUQU5DRV9JTlZBTElEX1NUUklOR19baV0gKyAKKyAgICAJCQkgICAgICAiXCIgc2hvdWxkIHByb2R1Y2UgYW4gZXhjZXB0aW9uIik7CisgICAgCQl9IGNhdGNoIChSdW50aW1lRXhjZXB0aW9uIGUpIHsKKyAgICAJCX0KKyAgICAJfQorICAgIAlmb3IgKGludCBpID0gMDsgaSA8IElOU1RBTkNFX1ZBTElEX1NUUklOR18ubGVuZ3RoOyBpICsrKSB7CisJICAgIAl0cnkgeworCSAgICAJCXZlcnNpb24gPSBWZXJzaW9uSW5mby5nZXRJbnN0YW5jZShJTlNUQU5DRV9WQUxJRF9TVFJJTkdfW2ldKTsKKwkgICAgCX0gY2F0Y2ggKFJ1bnRpbWVFeGNlcHRpb24gZSkgeworCSAgICAJCWVycmxuKCJcIiIgKyBJTlNUQU5DRV9WQUxJRF9TVFJJTkdfW2ldICsgCisJICAgIAkJICAgICAgIlwiIHNob3VsZCBwcm9kdWNlIGFuIHZhbGlkIHZlcnNpb24iKTsKKwkgICAgCX0KKyAgICAJfQorICAgIAlmb3IgKGludCBpID0gMDsgaSA8IElOU1RBTkNFX0lOVkFMSURfSU5UXy5sZW5ndGg7IGkgKyspIHsKKwkgICAgCXRyeSB7CisJICAgIAkJdmVyc2lvbiA9IGdldEluc3RhbmNlKElOU1RBTkNFX0lOVkFMSURfSU5UX1tpXSk7CisJICAgIAkJZXJybG4oImludmFsaWQgaW50cyBzaG91bGQgcHJvZHVjZSBhbiBleGNlcHRpb24iKTsKKwkgICAgCX0gY2F0Y2ggKFJ1bnRpbWVFeGNlcHRpb24gZSkgeworCSAgICAJfQorICAgIAl9CisgICAgCWZvciAoaW50IGkgPSAwOyBpIDwgSU5TVEFOQ0VfVkFMSURfSU5UXy5sZW5ndGg7IGkgKyspIHsKKwkgICAgCXRyeSB7CisJICAgIAkJdmVyc2lvbiA9IGdldEluc3RhbmNlKElOU1RBTkNFX1ZBTElEX0lOVF9baV0pOworCSAgICAJfSBjYXRjaCAoUnVudGltZUV4Y2VwdGlvbiBlKSB7CisJICAgIAkJZXJybG4oInZhbGlkIGludHMgc2hvdWxkIG5vdCBwcm9kdWNlIGFuIGV4Y2VwdGlvbiIpOworCSAgICAJfQorICAgIAl9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFRlc3QgdGhhdCB0aGUgY29tcGFyaXNvbiB3b3JrcworICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RDb21wYXJlKCkKKyAgICB7CisgICAgCWZvciAoaW50IGkgPSAwOyBpIDwgQ09NUEFSRV9OT1RfRVFVQUxfU1RSSU5HXy5sZW5ndGg7IGkgKz0gMikgeworICAgIAkJVmVyc2lvbkluZm8gdjEgPSAKKyAgICAJCSAgICAgICAgICAgIFZlcnNpb25JbmZvLmdldEluc3RhbmNlKENPTVBBUkVfTk9UX0VRVUFMX1NUUklOR19baV0pOworICAgIAkJVmVyc2lvbkluZm8gdjIgPSAKKyAgICAJCSAgICAgICAgVmVyc2lvbkluZm8uZ2V0SW5zdGFuY2UoQ09NUEFSRV9OT1RfRVFVQUxfU1RSSU5HX1tpICsgMV0pOworICAgIAkJaWYgKHYxLmNvbXBhcmVUbyh2MikgPT0gMCkgeworICAgIAkJCWVycmxuKENPTVBBUkVfTk9UX0VRVUFMX1NUUklOR19baV0gKyAiIHNob3VsZCBub3QgZXF1YWwgIiArCisgICAgCQkJICAgICAgQ09NUEFSRV9OT1RfRVFVQUxfU1RSSU5HX1tpICsgMV0pOworICAgIAkJfQorICAgIAl9CisgICAgCWZvciAoaW50IGkgPSAwOyBpIDwgQ09NUEFSRV9OT1RfRVFVQUxfSU5UXy5sZW5ndGg7IGkgKz0gMikgeworICAgIAkJVmVyc2lvbkluZm8gdjEgPSBnZXRJbnN0YW5jZShDT01QQVJFX05PVF9FUVVBTF9JTlRfW2ldKTsKKyAgICAJCVZlcnNpb25JbmZvIHYyID0gZ2V0SW5zdGFuY2UoQ09NUEFSRV9OT1RfRVFVQUxfSU5UX1tpICsgMV0pOworICAgIAkJaWYgKHYxLmNvbXBhcmVUbyh2MikgPT0gMCkgeworICAgIAkJCWVycmxuKENPTVBBUkVfTk9UX0VRVUFMX0lOVF9baV0gKyAiIHNob3VsZCBub3QgZXF1YWwgIiArCisgICAgCQkJICAgICAgQ09NUEFSRV9OT1RfRVFVQUxfSU5UX1tpICsgMV0pOworICAgIAkJfQorICAgIAl9CisgICAgCWZvciAoaW50IGkgPSAwOyBpIDwgQ09NUEFSRV9FUVVBTF9TVFJJTkdfLmxlbmd0aCAtIDE7IGkgKyspIHsKKyAgICAJCVZlcnNpb25JbmZvIHYxID0gCisgICAgCQkgICAgICAgICAgICBWZXJzaW9uSW5mby5nZXRJbnN0YW5jZShDT01QQVJFX0VRVUFMX1NUUklOR19baV0pOworICAgIAkJVmVyc2lvbkluZm8gdjIgPSAKKyAgICAJCSAgICAgICAgVmVyc2lvbkluZm8uZ2V0SW5zdGFuY2UoQ09NUEFSRV9FUVVBTF9TVFJJTkdfW2kgKyAxXSk7CisgICAgCQlpZiAodjEuY29tcGFyZVRvKHYyKSAhPSAwKSB7CisgICAgCQkJZXJybG4oQ09NUEFSRV9FUVVBTF9TVFJJTkdfW2ldICsgIiBzaG91bGQgZXF1YWwgIiArCisgICAgCQkJICAgICAgQ09NUEFSRV9FUVVBTF9TVFJJTkdfW2kgKyAxXSk7CisgICAgCQl9CisgICAgCX0KKyAgICAJZm9yIChpbnQgaSA9IDA7IGkgPCBDT01QQVJFX0VRVUFMX0lOVF8ubGVuZ3RoIC0gMTsgaSArKykgeworICAgIAkJVmVyc2lvbkluZm8gdjEgPSBnZXRJbnN0YW5jZShDT01QQVJFX0VRVUFMX0lOVF9baV0pOworICAgIAkJVmVyc2lvbkluZm8gdjIgPSBnZXRJbnN0YW5jZShDT01QQVJFX0VRVUFMX0lOVF9baSArIDFdKTsKKyAgICAJCWlmICh2MS5jb21wYXJlVG8odjIpICE9IDApIHsKKyAgICAJCQllcnJsbihDT01QQVJFX0VRVUFMX0lOVF9baV0gKyAiIHNob3VsZCBlcXVhbCAiICsKKyAgICAJCQkgICAgICBDT01QQVJFX0VRVUFMX0lOVF9baSArIDFdKTsKKyAgICAJCX0KKyAgICAJfQorICAgIAlmb3IgKGludCBpID0gMDsgaSA8IENPTVBBUkVfTEVTU18ubGVuZ3RoIC0gMTsgaSArKykgeworICAgIAkJVmVyc2lvbkluZm8gdjEgPSBWZXJzaW9uSW5mby5nZXRJbnN0YW5jZShDT01QQVJFX0xFU1NfW2ldKTsKKyAgICAJCVZlcnNpb25JbmZvIHYyID0gVmVyc2lvbkluZm8uZ2V0SW5zdGFuY2UoQ09NUEFSRV9MRVNTX1tpICsgMV0pOworICAgIAkJaWYgKHYxLmNvbXBhcmVUbyh2MikgPj0gMCkgeworICAgIAkJCWVycmxuKENPTVBBUkVfTEVTU19baV0gKyAiIHNob3VsZCBiZSBsZXNzIHRoYW4gIiArIAorICAgIAkJCSAgICAgIENPTVBBUkVfTEVTU19baSArIDFdKTsKKyAgICAJCX0KKyAgICAJCWlmICh2Mi5jb21wYXJlVG8odjEpIDw9IDApIHsKKyAgICAJCQllcnJsbihDT01QQVJFX0xFU1NfW2kgKyAxXSArICIgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiAiICsgCisgICAgCQkJICAgICAgQ09NUEFSRV9MRVNTX1tpXSk7CisgICAgCQl9CisgICAgCX0KKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogVGVzdCB0aGF0IHRoZSBnZXR0ZXIgZnVuY3Rpb24gd29ya3MKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0R2V0dGVyKCkKKyAgICB7CisgICAgCWZvciAoaW50IGkgPSAwOyBpIDwgR0VUX1NUUklOR18ubGVuZ3RoOyBpICsrKSB7CisgICAgCQlWZXJzaW9uSW5mbyB2ID0gVmVyc2lvbkluZm8uZ2V0SW5zdGFuY2UoR0VUX1NUUklOR19baV0pOworICAgIAkJaWYgKHYuZ2V0TWFqb3IoKSAhPSBHRVRfUkVTVUxUX1tpIDw8IDJdIHx8CisgICAgCQkgICAgdi5nZXRNaW5vcigpICE9IEdFVF9SRVNVTFRfWyhpIDw8IDIpICsgMV0gfHwKKyAgICAJCSAgICB2LmdldE1pbGxpKCkgIT0gR0VUX1JFU1VMVF9bKGkgPDwgMikgKyAyXSB8fAorICAgIAkJICAgIHYuZ2V0TWljcm8oKSAhPSBHRVRfUkVTVUxUX1soaSA8PCAyKSArIDNdKSB7CisgICAgCQkgICAgZXJybG4oR0VUX1NUUklOR19baV0gKyAiIHNob3VsZCByZXR1cm4gbWFqb3I9IiArIAorICAgIAkJICAgICAgICAgIEdFVF9SRVNVTFRfW2kgPDwgMl0gKyAiIG1pbm9yPSIgKyAKKyAgICAJCSAgICAgICAgICBHRVRfUkVTVUxUX1soaSA8PCAyKSArIDFdICsgIiBtaWxsaT0iICsgCisgICAgCQkgICAgICAgICAgR0VUX1JFU1VMVF9bKGkgPDwgMikgKyAyXSArICIgbWljcm89IiArCisgICAgCQkgICAgICAgICAgR0VUX1JFU1VMVF9bKGkgPDwgMikgKyAzXSk7ICAKKyAgICAJCX0KKyAgICAJCXYgPSBnZXRJbnN0YW5jZShHRVRfSU5UX1tpXSk7CisgICAgCQlpZiAodi5nZXRNYWpvcigpICE9IEdFVF9SRVNVTFRfW2kgPDwgMl0gfHwKKyAgICAJCSAgICB2LmdldE1pbm9yKCkgIT0gR0VUX1JFU1VMVF9bKGkgPDwgMikgKyAxXSB8fAorICAgIAkJICAgIHYuZ2V0TWlsbGkoKSAhPSBHRVRfUkVTVUxUX1soaSA8PCAyKSArIDJdIHx8CisgICAgCQkgICAgdi5nZXRNaWNybygpICE9IEdFVF9SRVNVTFRfWyhpIDw8IDIpICsgM10pIHsKKyAgICAJCSAgICBlcnJsbihHRVRfU1RSSU5HX1tpXSArICIgc2hvdWxkIHJldHVybiBtYWpvcj0iICsgCisgICAgCQkgICAgICAgICAgR0VUX1JFU1VMVF9baSA8PCAyXSArICIgbWlub3I9IiArIAorICAgIAkJICAgICAgICAgIEdFVF9SRVNVTFRfWyhpIDw8IDIpICsgMV0gKyAiIG1pbGxpPSIgKyAKKyAgICAJCSAgICAgICAgICBHRVRfUkVTVUxUX1soaSA8PCAyKSArIDJdICsgIiBtaWNybz0iICsKKyAgICAJCSAgICAgICAgICBHRVRfUkVTVUxUX1soaSA8PCAyKSArIDNdKTsgIAorICAgIAkJfQorICAgIAl9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFRlc3QgdG9TdHJpbmcoKQorICAgICAqLworCXB1YmxpYyB2b2lkIFRlc3R0b1N0cmluZygpIAorCXsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBUT1NUUklOR19TVFJJTkdfLmxlbmd0aDsgaSArKykgeworICAgIAkJVmVyc2lvbkluZm8gdiA9IFZlcnNpb25JbmZvLmdldEluc3RhbmNlKFRPU1RSSU5HX1NUUklOR19baV0pOworICAgIAkJaWYgKCF2LnRvU3RyaW5nKCkuZXF1YWxzKFRPU1RSSU5HX1JFU1VMVF9baV0pKSB7CisgICAgCSAgICAJZXJybG4oInRvU3RyaW5nKCkgZm9yICIgKyBUT1NUUklOR19TVFJJTkdfW2ldICsgCisgICAgCSAgICAJICAgICAgIiBzaG91bGQgcHJvZHVjZSAiICsgVE9TVFJJTkdfUkVTVUxUX1tpXSk7CisgICAgCQl9CisgICAgCQl2ID0gZ2V0SW5zdGFuY2UoVE9TVFJJTkdfSU5UX1tpXSk7CisgICAgCQlpZiAoIXYudG9TdHJpbmcoKS5lcXVhbHMoVE9TVFJJTkdfUkVTVUxUX1tpXSkpIHsKKyAgICAJICAgIAllcnJsbigidG9TdHJpbmcoKSBmb3IgIiArIFRPU1RSSU5HX0lOVF9baV0gKyAKKyAgICAJICAgIAkgICAgICAiIHNob3VsZCBwcm9kdWNlICIgKyBUT1NUUklOR19SRVNVTFRfW2ldKTsKKyAgICAJCX0KKwkJfQorCX0KKwkKKwkvLyBwcml2YXRlIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkKKwkvKioKKwkgKiBpbnQgYXJyYXkgdmVyc2lvbmluZm8gY3JlYXRpb24KKwkgKi8KKwlwcml2YXRlIHN0YXRpYyBWZXJzaW9uSW5mbyBnZXRJbnN0YW5jZShpbnQgZGF0YVtdKQorCXsKKwkJc3dpdGNoIChkYXRhLmxlbmd0aCkgeworCSAgICAJY2FzZSAxOgorCSAgICAJCXJldHVybiBWZXJzaW9uSW5mby5nZXRJbnN0YW5jZShkYXRhWzBdKTsKKwkgICAgCWNhc2UgMjoKKwkgICAgCQlyZXR1cm4gVmVyc2lvbkluZm8uZ2V0SW5zdGFuY2UoZGF0YVswXSwgZGF0YVsxXSk7CisJICAgIAljYXNlIDM6CisJICAgIAkJcmV0dXJuIFZlcnNpb25JbmZvLmdldEluc3RhbmNlKGRhdGFbMF0sIGRhdGFbMV0sIGRhdGFbMl0pOworCSAgICAJZGVmYXVsdDoKKwkgICAgCQlyZXR1cm4gVmVyc2lvbkluZm8uZ2V0SW5zdGFuY2UoZGF0YVswXSwgZGF0YVsxXSwgZGF0YVsyXSwgCisJICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbM10pOworCQl9CisJfQorCQorCS8vIHByaXZhdGUgZGF0YSBtZW1iZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJCisJLyoqCisJICogVGVzdCBpbnN0YW5jZSBkYXRhCisJICovCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIElOU1RBTkNFX0lOVkFMSURfU1RSSU5HX1tdID0geworCQkiYSIsCisJCSItMSIsCisJCSItMS4wIiwKKwkJIi0xLjAuMCIsCisJCSItMS4wLjAuMCIsCisJCSIwLi0xIiwKKwkJIjAuMC4tMSIsCisJCSIwLjAuMC4tMSIsCisJCSIyNTYiLAorCQkiMjU2LjAiLAorCQkiMjU2LjAuMCIsCisJCSIyNTYuMC4wLjAiLAorCQkiMC4yNTYiLAorCQkiMC4wLjI1NiIsCisJCSIwLjAuMC4yNTYiLAorCQkiMS4yLjMuNC41IgorCX07CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIElOU1RBTkNFX1ZBTElEX1NUUklOR19bXSA9IHsKKwkJIjI1NSIsCisJCSIyNTUuMjU1IiwKKwkJIjI1NS4yNTUuMjU1IiwKKwkJIjI1NS4yNTUuMjU1LjI1NSIKKwl9OworCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBJTlNUQU5DRV9JTlZBTElEX0lOVF9bXVtdID0geworCQl7LTF9LAorCQl7LTEsIDB9LAorCQl7LTEsIDAsIDB9LAorCQl7LTEsIDAsIDAsIDB9LAorCQl7MCwgLTF9LAorCQl7MCwgMCwgLTF9LAorCQl7MCwgMCwgMCwgLTF9LAorCQl7MjU2fSwKKwkJezI1NiwgMH0sCisJCXsyNTYsIDAsIDB9LAorCQl7MjU2LCAwLCAwLCAwfSwKKwkJezAsIDI1Nn0sCisJCXswLCAwLCAyNTZ9LAorCQl7MCwgMCwgMCwgMjU2fSwKKwl9OworCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBJTlNUQU5DRV9WQUxJRF9JTlRfW11bXSA9IHsKKwkJezI1NX0sCisJCXsyNTUsIDI1NX0sCisJCXsyNTUsIDI1NSwgMjU1fSwKKwkJezI1NSwgMjU1LCAyNTUsIDI1NX0KKwl9OworCQorCS8qKgorCSAqIFRlc3QgY29tcGFyZSBkYXRhCisJICovCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIENPTVBBUkVfTk9UX0VRVUFMX1NUUklOR19bXSA9IHsKKwkJIjIuMC4wLjAiLCAiMy4wLjAuMCIKKwl9OworCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDT01QQVJFX05PVF9FUVVBTF9JTlRfW11bXSA9IHsKKwkJezIsIDAsIDAsIDB9LCB7MywgMCwgMCwgMH0KKwl9OworCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBDT01QQVJFX0VRVUFMX1NUUklOR19bXSA9IHsKKwkJIjIuMC4wLjAiLCAiMi4wLjAiLCAiMi4wIiwgIjIiCisJfTsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ09NUEFSRV9FUVVBTF9JTlRfW11bXSA9IHsKKwkJezJ9LCB7MiwgMH0sIHsyLCAwLCAwfSwgezIsIDAsIDAsIDB9CQorCX07CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIENPTVBBUkVfTEVTU19bXSA9IHsKKwkJIjAiLCAiMC4wLjAuMSIsICIwLjAuMSIsICIwLjEiLCAiMSIsICIyIiwgIjIuMSIsICIyLjEuMSIsICIyLjEuMS4xIgorCX07CisJCisJLyoqCisJICogVGVzdCBHZXR0ZXIgZGF0YQorCSAqLworCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBHRVRfU1RSSU5HX1tdID0geworCQkiMCIsCisJCSIxLjEiLAorCQkiMi4xLjI1NSIsCisJCSIzLjEuMjU1LjEwMCIKKwl9OworCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBHRVRfSU5UX1tdW10gPSB7CisJCXswfSwKKwkJezEsIDF9LAorCQl7MiwgMSwgMjU1fSwKKwkJezMsIDEsIDI1NSwgMTAwfQorCX07CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdFVF9SRVNVTFRfW10gPSB7CisJCTAsIDAsIDAsIDAsCisJCTEsIDEsIDAsIDAsCisJCTIsIDEsIDI1NSwgMCwKKwkJMywgMSwgMjU1LCAxMDAKKwl9OworCQorCS8qKgorCSAqIFRlc3QgdG9TdHJpbmcgZGF0YQorCSAqLworCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUT1NUUklOR19TVFJJTkdfW10gPSB7CisJCSIwIiwKKwkJIjEuMSIsCisJCSIyLjEuMjU1IiwKKwkJIjMuMS4yNTUuMTAwIgkKKwl9OworCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBUT1NUUklOR19JTlRfW11bXSA9IHsKKwkJezB9LAorCQl7MSwgMX0sCisJCXsyLCAxLCAyNTV9LAorCQl7MywgMSwgMjU1LCAxMDB9CisJfTsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVE9TVFJJTkdfUkVTVUxUX1tdID0geworCQkiMC4wLjAuMCIsCisJCSIxLjEuMC4wIiwKKwkJIjIuMS4yNTUuMCIsCisJCSIzLjEuMjU1LjEwMCIJCisJfTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvVU9wdGlvbi5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL1VPcHRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTFmNjE4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL1VPcHRpb24uamF2YQpAQCAtMCwwICsxLDI1OSBAQAorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogQ29weXJpZ2h0IChjKSAyMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBBdXRob3I6IEFsYW4gTGl1CisqIENyZWF0ZWQ6IE5vdmVtYmVyIDE1IDIwMDIKKyogU2luY2U6IElDVSAyLjQKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50b29sOworCisvKioKKyAqIEEgY29tbWFuZC1saW5lIG9wdGlvbi4gIEEgVU9wdGlvbiBzcGVjaWZpZXMgdGhlIG5hbWUgb2YgYW4gb3B0aW9uCisgKiBhbmQgd2hldGhlciBvciBub3QgaXQgdGFrZXMgYW4gYXJndW1lbnQuICBJdCBpcyBhIG11dGFibGUgb2JqZWN0CisgKiB0aGF0IGxhdGVyIGNvbnRhaW5zIHRoZSBvcHRpb24gYXJndW1lbnQsIGlmIGFueSwgYW5kIGEgYm9vbGVhbgorICogZmxhZyBzdGF0aW5nIHdoZXRoZXIgdGhlIG9wdGlvbiB3YXMgc2VlbiBvciBub3QuCisgKgorICogVGhlIHN0YXRpYyBtZXRob2QgcGFyc2VBcmdzKCkgdGFrZXMgYW4gYXJyYXkgb2YgY29tbWFuZC1saW5lCisgKiBhcmd1bWVudHMgYW5kIGFuIGFycmF5IG9mIFVPcHRpb25zIGFuZCBwYXJzZXMgdGhlIGNvbW1hbmQtbGluZQorICogYXJndW1lbnRzLgorICoKKyAqIFRoaXMgZGVsaWJlcmF0ZWx5IHJlc2VtYmxlcyB0aGUgaWN1NGMgZmlsZSB1b3B0aW9uLltjaF0uCisgKi8KK3B1YmxpYyBjbGFzcyBVT3B0aW9uIHsKKworICAgIC8vIERlbGliZXJhdGVkIHB1YmxpYyBkYXRhIG1lbWJlcnMKKyAgICBwdWJsaWMgU3RyaW5nICBsb25nTmFtZTsKKyAgICBwdWJsaWMgU3RyaW5nICB2YWx1ZTsKKyAgICBwdWJsaWMgRm4gICAgICBvcHRpb25GbjsKKyAgICBwdWJsaWMgT2JqZWN0ICBjb250ZXh0OworICAgIHB1YmxpYyBjaGFyICAgIHNob3J0TmFtZTsKKyAgICBwdWJsaWMgaW50ICAgICBoYXNBcmc7CisgICAgcHVibGljIGJvb2xlYW4gZG9lc09jY3VyOworCisgICAgLy8gVmFsdWVzIG9mIGhhc0FyZworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE5PX0FSRyAgICAgICA9IDA7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUkVRVUlSRVNfQVJHID0gMTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBPUFRJT05BTF9BUkcgPSAyOworCisgICAgLy8gQW5hbG9nIG9mIFVPcHRpb25Gbi4gIFdlIGRvbid0IHBhc3MgaW4gdGhlIGNvbnRleHQgYmVjYXVzZSB0aGUKKyAgICAvLyBmdW5jdG9yIGNhbiBnZXQgaXQgZnJvbSB0aGUgVU9wdGlvbi4KKyAgICBwdWJsaWMgaW50ZXJmYWNlIEZuIHsKKyAgICAgICAgaW50IGhhbmRsZShVT3B0aW9uIG9wdGlvbik7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgVU9wdGlvbiB3aXRoIHRoZSBnaXZlbiBhdHRyaWJ1dGVzLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgVU9wdGlvbiBjcmVhdGUoU3RyaW5nIGFMb25nTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBhU2hvcnROYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaGFzQXJndW1lbnQpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBVT3B0aW9uKGFMb25nTmFtZSwgYVNob3J0TmFtZSwgaGFzQXJndW1lbnQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZSBhIFVPcHRpb24gd2l0aCB0aGUgZ2l2ZW4gYXR0cmlidXRlcy4KKyAgICAgKiBTeW5vbnltIGZvciBjcmVhdGUoKSwgZm9yIEMgY29tcGF0aWJpbGl0eS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFVPcHRpb24gREVGKFN0cmluZyBhTG9uZ05hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGFTaG9ydE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaGFzQXJndW1lbnQpIHsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZShhTG9uZ05hbWUsIGFTaG9ydE5hbWUsIGhhc0FyZ3VtZW50KTsKKyAgICB9CisKKyAgICAvLyBTdGFuZGFyZCBjYW5uZWQgb3B0aW9ucy4gIFRoZXNlIGNyZWF0ZSBhIG5ldyBvYmplY3Qgd2hlbgorICAgIC8vIGNhbGxlZC4gIFNpbmNlIHRoZSBVT3B0aW9uIG9iamVjdCBpcyBtdXRhYmxlLCB3ZSBjYW5ub3QgdXNlCisgICAgLy8gc3RhdGljIGZpbmFsIGluc3RhbmNlcy4KKyAgICBwdWJsaWMgc3RhdGljIFVPcHRpb24gSEVMUF9IKCkgICAgICAgICAgICAgeyByZXR1cm4gY3JlYXRlKCJoZWxwIiwgJ2gnLCBOT19BUkcpOyB9CisgICAgcHVibGljIHN0YXRpYyBVT3B0aW9uIEhFTFBfUVVFU1RJT05fTUFSSygpIHsgcmV0dXJuIGNyZWF0ZSgiaGVscCIsICc/JywgTk9fQVJHKTsgfQorICAgIHB1YmxpYyBzdGF0aWMgVU9wdGlvbiBWRVJCT1NFKCkgICAgICAgICAgICB7IHJldHVybiBjcmVhdGUoInZlcmJvc2UiLCAndicsIE5PX0FSRyk7IH0KKyAgICBwdWJsaWMgc3RhdGljIFVPcHRpb24gUVVJRVQoKSAgICAgICAgICAgICAgeyByZXR1cm4gY3JlYXRlKCJxdWlldCIsICdxJywgTk9fQVJHKTsgfQorICAgIHB1YmxpYyBzdGF0aWMgVU9wdGlvbiBWRVJTSU9OKCkgICAgICAgICAgICB7IHJldHVybiBjcmVhdGUoInZlcnNpb24iLCAnVicsIE5PX0FSRyk7IH0KKyAgICBwdWJsaWMgc3RhdGljIFVPcHRpb24gQ09QWVJJR0hUKCkgICAgICAgICAgeyByZXR1cm4gY3JlYXRlKCJjb3B5cmlnaHQiLCAnYycsIE5PX0FSRyk7IH0KKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIFVPcHRpb24gREVTVERJUigpICAgICAgICAgICAgeyByZXR1cm4gY3JlYXRlKCJkZXN0ZGlyIiwgJ2QnLCBSRVFVSVJFU19BUkcpOyB9CisgICAgcHVibGljIHN0YXRpYyBVT3B0aW9uIFNPVVJDRURJUigpICAgICAgICAgIHsgcmV0dXJuIGNyZWF0ZSgic291cmNlZGlyIiwgJ3MnLCBSRVFVSVJFU19BUkcpOyB9CisgICAgcHVibGljIHN0YXRpYyBVT3B0aW9uIEVOQ09ESU5HKCkgICAgICAgICAgIHsgcmV0dXJuIGNyZWF0ZSgiZW5jb2RpbmciLCAnZScsIFJFUVVJUkVTX0FSRyk7IH0KKyAgICBwdWJsaWMgc3RhdGljIFVPcHRpb24gSUNVREFUQURJUigpICAgICAgICAgeyByZXR1cm4gY3JlYXRlKCJpY3VkYXRhZGlyIiwgJ2knLCBSRVFVSVJFU19BUkcpOyB9CisgICAgcHVibGljIHN0YXRpYyBVT3B0aW9uIFBBQ0tBR0VfTkFNRSgpICAgICAgIHsgcmV0dXJuIGNyZWF0ZSgicGFja2FnZS1uYW1lIiwgJ3AnLCBSRVFVSVJFU19BUkcpOyB9CisgICAgcHVibGljIHN0YXRpYyBVT3B0aW9uIEJVTkRMRV9OQU1FKCkgICAgICAgIHsgcmV0dXJuIGNyZWF0ZSgiYnVuZGxlLW5hbWUiLCAnYicsIFJFUVVJUkVTX0FSRyk7IH0KKworICAgIC8qKgorICAgICAqIEphdmEgQ29tbWFuZCBsaW5lIGFyZ3VtZW50IHBhcnNlci4KKyAgICAgKgorICAgICAqIFRoaXMgZnVuY3Rpb24gdGFrZXMgdGhlIGFyZ3ZbXSBjb21tYW5kIGxpbmUgYW5kIGEgZGVzY3JpcHRpb24gb2YKKyAgICAgKiB0aGUgcHJvZ3JhbSdzIG9wdGlvbnMgaW4gZm9ybSBvZiBhbiBhcnJheSBvZiBVT3B0aW9uIHN0cnVjdHVyZXMuCisgICAgICogRWFjaCBVT3B0aW9uIGRlZmluZXMgYSBsb25nIGFuZCBhIHNob3J0IG5hbWUgKGEgc3RyaW5nIGFuZCBhIGNoYXJhY3RlcikKKyAgICAgKiBmb3Igb3B0aW9ucyBsaWtlICItLWZvbyIgYW5kICItZiIuCisgICAgICoKKyAgICAgKiBFYWNoIG9wdGlvbiBpcyBtYXJrZWQgd2l0aCB3aGV0aGVyIGl0IGRvZXMgbm90IHRha2UgYW4gYXJndW1lbnQsCisgICAgICogcmVxdWlyZXMgb25lLCBvciBvcHRpb25hbGx5IHRha2VzIG9uZS4gVGhlIGFyZ3VtZW50IG1heSBmb2xsb3cgaW4KKyAgICAgKiB0aGUgc2FtZSBhcmd2W10gZW50cnkgZm9yIHNob3J0IG9wdGlvbnMsIG9yIGl0IG1heSBhbHdheXMgZm9sbG93CisgICAgICogaW4gdGhlIG5leHQgYXJndltdIGVudHJ5LgorICAgICAqCisgICAgICogQW4gYXJndW1lbnQgaXMgaW4gdGhlIG5leHQgYXJndltdIGVudHJ5IGZvciBib3RoIGxvbmcgYW5kIHNob3J0IG5hbWUKKyAgICAgKiBvcHRpb25zLCBleGNlcHQgaXQgaXMgdGFrZW4gZnJvbSBkaXJlY3RseSBiZWhpbmQgdGhlIHNob3J0IG5hbWUgaW4KKyAgICAgKiBpdHMgb3duIGFyZ3ZbXSBlbnRyeSBpZiB0aGVyZSBhcmUgY2hhcmFjdGVycyBmb2xsb3dpbmcgdGhlIG9wdGlvbiBsZXR0ZXIuCisgICAgICogQW4gYXJndW1lbnQgaW4gaXRzIG93biBhcmd2W10gZW50cnkgbXVzdCBub3QgYmVnaW4gd2l0aCBhICctJworICAgICAqIHVubGVzcyBpdCBpcyBvbmx5IHRoZSAnLScgaXRzZWxmLiBUaGVyZSBpcyBubyByZXN0cmljdGlvbiBvZiB0aGUKKyAgICAgKiBhcmd1bWVudCBmb3JtYXQgaWYgaXQgaXMgcGFydCBvZiB0aGUgc2hvcnQgbmFtZSBvcHRpb25zJ3MgYXJndltdIGVudHJ5LgorICAgICAqCisgICAgICogVGhlIGFyZ3VtZW50IGlzIHN0b3JlZCBpbiB0aGUgdmFsdWUgZmllbGQgb2YgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgKiBVT3B0aW9uIGVudHJ5LCBhbmQgdGhlIGRvZXNPY2N1ciBmaWVsZCBpcyBzZXQgdG8gMSBpZiB0aGUgb3B0aW9uCisgICAgICogaXMgZm91bmQgYXQgYWxsLgorICAgICAqCisgICAgICogU2hvcnQgbmFtZSBvcHRpb25zIHdpdGhvdXQgYXJndW1lbnRzIGNhbiBiZSBjb2xsYXBzZWQgaW50byBhIHNpbmdsZQorICAgICAqIGFyZ3ZbXSBlbnRyeS4gQWZ0ZXIgYW4gb3B0aW9uIGxldHRlciB0YWtlcyBhbiBhcmd1bWVudCwgZm9sbG93aW5nCisgICAgICogbGV0dGVycyB3aWxsIGJlIHRha2VuIGFzIGl0cyBhcmd1bWVudC4KKyAgICAgKgorICAgICAqIElmIHRoZSBzYW1lIG9wdGlvbiBpcyBmb3VuZCBzZXZlcmFsIHRpbWVzLCB0aGVuIHRoZSBsYXN0CisgICAgICogYXJndW1lbnQgdmFsdWUgd2lsbCBiZSBzdG9yZWQgaW4gdGhlIHZhbHVlIGZpZWxkLgorICAgICAqCisgICAgICogRm9yIGVhY2ggb3B0aW9uLCBhIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQuIFRoaXMgY291bGQgYmUgdXNlZAorICAgICAqIGZvciBvcHRpb25zIHRoYXQgb2NjdXIgbXVsdGlwbGUgdGltZXMgYW5kIGFsbCBhcmd1bWVudHMgYXJlIHRvCisgICAgICogYmUgY29sbGVjdGVkLgorICAgICAqCisgICAgICogQWxsIG9wdGlvbnMgYXJlIHJlbW92ZWQgZnJvbSB0aGUgYXJndltdIGFycmF5IGl0c2VsZi4gSWYgdGhlIHBhcnNlcgorICAgICAqIGlzIHN1Y2Nlc3NmdWwsIHRoZW4gaXQgcmV0dXJucyB0aGUgbnVtYmVyIG9mIHJlbWFpbmluZyBub24tb3B0aW9uCisgICAgICogc3RyaW5ncy4gIChVbmxpa2UgQywgdGhlIEphdmEgYXJndltdIGFycmF5IGRvZXMgTk9UIGNvbnRhaW4KKyAgICAgKiB0aGUgcHJvZ3JhbSBuYW1lIGluIGFyZ3ZbMF0uKQorICAgICAqCisgICAgICogQW4gb3B0aW9uICItLSIgZW5kcyBvcHRpb24gcHJvY2Vzc2luZzsgZXZlcnl0aGluZyBhZnRlciB0aGlzCisgICAgICogcmVtYWlucyBpbiB0aGUgYXJndltdIGFycmF5LgorICAgICAqCisgICAgICogQW4gb3B0aW9uIHN0cmluZyAiLSIgYWxvbmUgaXMgdHJlYXRlZCBhcyBhIG5vbi1vcHRpb24uCisgICAgICoKKyAgICAgKiBJZiBhbiBvcHRpb24gaXMgbm90IHJlY29nbml6ZWQgb3IgYW4gYXJndW1lbnQgbWlzc2luZywgdGhlbgorICAgICAqIHRoZSBwYXJzZXIgcmV0dXJucyB3aXRoIHRoZSBuZWdhdGl2ZSBpbmRleCBvZiB0aGUgYXJndltdIGVudHJ5CisgICAgICogd2hlcmUgdGhlIGVycm9yIHdhcyBkZXRlY3RlZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBhcmd2IHRoaXMgcGFyYW1ldGVyIGlzIG1vZGlmaWVkCisgICAgICogQHBhcmFtIHN0YXJ0IHRoZSBmaXJzdCBhcmd1bWVudCBpbiBhcmd2W10gdG8gZXhhbWluZS4gIE11c3QgYmUKKyAgICAgKiAwLi5hcmd2Lmxlbmd0aC0xLiAgQXJndW1lbnRzIGZyb20gMC4uc3RhcnQtMSBhcmUgaWdub3JlZC4KKyAgICAgKiBAcGFyYW0gb3B0aW9ucyB0aGlzIHBhcmFtZXRlciBpcyBtb2RpZmllZAorICAgICAqIEByZXR1cm4gdGhlIG51bWJlciBvZiB1bnByb2Nlc3NlZCBhcmd1bWVudHMgaW4gYXJndltdLCBpbmNsdWRpbmcKKyAgICAgKiBhcmd1bWVudHMgMC4uc3RhcnQtMS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludCBwYXJzZUFyZ3MoU3RyaW5nIGFyZ3ZbXSwgaW50IHN0YXJ0LCBVT3B0aW9uIG9wdGlvbnNbXSkgeworICAgICAgICBTdHJpbmcgYXJnOworICAgICAgICBpbnQgaT1zdGFydCwgcmVtYWluaW5nPXN0YXJ0OworICAgICAgICBjaGFyIGM7CisgICAgICAgIGJvb2xlYW4gc3RvcE9wdGlvbnM9ZmFsc2U7CisKKyAgICAgICAgd2hpbGUoaTxhcmd2Lmxlbmd0aCkgeworICAgICAgICAgICAgYXJnPWFyZ3ZbaV07CisgICAgICAgICAgICBpZighc3RvcE9wdGlvbnMgJiYgYXJnLmxlbmd0aCgpPjEgJiYgYXJnLmNoYXJBdCgwKT09Jy0nKSB7CisgICAgICAgICAgICAgICAgLyogcHJvY2VzcyBhbiBvcHRpb24gKi8KKyAgICAgICAgICAgICAgICBjPWFyZy5jaGFyQXQoMSk7CisgICAgICAgICAgICAgICAgVU9wdGlvbiBvcHRpb249bnVsbDsKKyAgICAgICAgICAgICAgICBhcmc9YXJnLnN1YnN0cmluZygyKTsKKyAgICAgICAgICAgICAgICBpZihjPT0nLScpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogcHJvY2VzcyBhIGxvbmcgb3B0aW9uICovCisgICAgICAgICAgICAgICAgICAgIGlmKGFyZy5sZW5ndGgoKT09MCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RvcCBwcm9jZXNzaW5nIG9wdGlvbnMgYWZ0ZXIgIi0tIiAqLworICAgICAgICAgICAgICAgICAgICAgICAgc3RvcE9wdGlvbnM9dHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNlYXJjaCBmb3IgdGhlIG9wdGlvbiBzdHJpbmcgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBqOworICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGo9MDsgajxvcHRpb25zLmxlbmd0aDsgKytqKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYob3B0aW9uc1tqXS5sb25nTmFtZSAhPSBudWxsICYmIGFyZy5lcXVhbHMob3B0aW9uc1tqXS5sb25nTmFtZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uPW9wdGlvbnNbal07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKG9wdGlvbj09bnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5vIG9wdGlvbiBtYXRjaGVzICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1pOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLmRvZXNPY2N1cj10cnVlOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZihvcHRpb24uaGFzQXJnIT1OT19BUkcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBwYXJzZSB0aGUgYXJndW1lbnQgZm9yIHRoZSBvcHRpb24sIGlmIGFueSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGkrMTxhcmd2Lmxlbmd0aCAmJiAhKGFyZ3ZbaSsxXS5sZW5ndGgoKT4xICYmIGFyZ3ZbaSsxXS5jaGFyQXQoMCk9PSctJykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYXJndW1lbnQgaW4gdGhlIG5leHQgYXJndltdLCBhbmQgdGhlcmUgaXMgbm90IGFuIG9wdGlvbiBpbiB0aGVyZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24udmFsdWU9YXJndlsrK2ldOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZihvcHRpb24uaGFzQXJnPT1SRVFVSVJFU19BUkcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdGhlcmUgaXMgbm8gYXJndW1lbnQsIGJ1dCBvbmUgaXMgcmVxdWlyZWQ6IHJldHVybiB3aXRoIGVycm9yICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtaTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvKiBwcm9jZXNzIG9uZSBvciBtb3JlIHNob3J0IG9wdGlvbnMgKi8KKyAgICAgICAgICAgICAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgICAgICAgICAgICAgLyogc2VhcmNoIGZvciB0aGUgb3B0aW9uIGxldHRlciAqLworICAgICAgICAgICAgICAgICAgICAgICAgaW50IGo7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3Ioaj0wOyBqPG9wdGlvbnMubGVuZ3RoOyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihjPT1vcHRpb25zW2pdLnNob3J0TmFtZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb249b3B0aW9uc1tqXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYob3B0aW9uPT1udWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbm8gb3B0aW9uIG1hdGNoZXMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLWk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24uZG9lc09jY3VyPXRydWU7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKG9wdGlvbi5oYXNBcmchPU5PX0FSRykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHBhcnNlIHRoZSBhcmd1bWVudCBmb3IgdGhlIG9wdGlvbiwgaWYgYW55ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYXJnLmxlbmd0aCgpIT0wKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFyZ3VtZW50IGZvbGxvd2luZyBpbiB0aGUgc2FtZSBhcmd2W10gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLnZhbHVlPWFyZzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG8gbm90IHByb2Nlc3MgdGhlIHJlc3Qgb2YgdGhpcyBhcmcgYXMgb3B0aW9uIGxldHRlcnMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmKGkrMTxhcmd2Lmxlbmd0aCAmJiAhKGFyZ3ZbaSsxXS5sZW5ndGgoKT4xICYmIGFyZ3ZbaSsxXS5jaGFyQXQoMCk9PSctJykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYXJndW1lbnQgaW4gdGhlIG5leHQgYXJndltdLCBhbmQgdGhlcmUgaXMgbm90IGFuIG9wdGlvbiBpbiB0aGVyZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24udmFsdWU9YXJndlsrK2ldOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0aGlzIGJyZWFrIGlzIHJlZHVuZGFudCBiZWNhdXNlIHdlIGtub3cgdGhhdCAqYXJnPT0wICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZihvcHRpb24uaGFzQXJnPT1SRVFVSVJFU19BUkcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdGhlcmUgaXMgbm8gYXJndW1lbnQsIGJ1dCBvbmUgaXMgcmVxdWlyZWQ6IHJldHVybiB3aXRoIGVycm9yICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtaTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIGdldCB0aGUgbmV4dCBvcHRpb24gbGV0dGVyICovCisgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb249bnVsbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcmcubGVuZ3RoKCk9PTApIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgYz1hcmcuY2hhckF0KDApOworICAgICAgICAgICAgICAgICAgICAgICAgYXJnPWFyZy5zdWJzdHJpbmcoMSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZihvcHRpb24hPW51bGwgJiYgb3B0aW9uLm9wdGlvbkZuIT1udWxsICYmIG9wdGlvbi5vcHRpb25Gbi5oYW5kbGUob3B0aW9uKTwwKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIHRoZSBvcHRpb24gZnVuY3Rpb24gd2FzIGNhbGxlZCBhbmQgcmV0dXJuZWQgYW4gZXJyb3IgKi8KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8qIGdvIHRvIG5leHQgYXJndltdICovCisgICAgICAgICAgICAgICAgKytpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKiBtb3ZlIGEgbm9uLW9wdGlvbiB1cCBpbiBhcmd2W10gKi8KKyAgICAgICAgICAgICAgICBhcmd2W3JlbWFpbmluZysrXT1hcmc7CisgICAgICAgICAgICAgICAgKytpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiByZW1haW5pbmc7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29udmVuaWVudCBtZXRob2QuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnQgcGFyc2VBcmdzKFN0cmluZyBhcmd2W10sIFVPcHRpb24gb3B0aW9uc1tdKSB7CisgICAgICAgIHJldHVybiBwYXJzZUFyZ3MoYXJndiwgMCwgb3B0aW9ucyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0b3IuCisgICAgICovCisgICAgcHJpdmF0ZSBVT3B0aW9uKFN0cmluZyBhTG9uZ05hbWUsCisgICAgICAgICAgICAgICAgICAgIGNoYXIgYVNob3J0TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgaW50IGhhc0FyZ3VtZW50KSB7CisgICAgICAgIGxvbmdOYW1lID0gYUxvbmdOYW1lOworICAgICAgICBzaG9ydE5hbWUgPSBhU2hvcnROYW1lOworICAgICAgICBoYXNBcmcgPSBoYXNBcmd1bWVudDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvY29tcHJlc3Npb24vQ29tcHJlc3Npb25UYWJsZUdlbmVyYXRvci5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2NvbXByZXNzaW9uL0NvbXByZXNzaW9uVGFibGVHZW5lcmF0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mNGYyY2NhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2NvbXByZXNzaW9uL0NvbXByZXNzaW9uVGFibGVHZW5lcmF0b3IuamF2YQpAQCAtMCwwICsxLDIzMSBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2NvbXByZXNzaW9uL0NvbXByZXNzaW9uVGFibGVHZW5lcmF0b3IuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNToyNSAkIAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50b29sLmNvbXByZXNzaW9uOworCitpbXBvcnQgY29tLmlibS5pY3UubGFuZy4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuKjsKKworLyoqCisgKiBVdGlsaXR5IGNsYXNzIHRvIGdlbmVyYXRlIHRoZSB0YWJsZXMgdXNlZCBieSB0aGUgU0NTVSBpbnRlcmZhY2UgYW5kCisgKiB0aGUgVW5pY29kZUNvbXByZXNzb3IgY2xhc3MuCisgKgorICogQGF1dGhvciBTdGVwaGVuIEYuIEJvb3RoCisgKiBAdmVyc2lvbiAxLjAgMDggTWFyIDk5CisgKi8KK2NsYXNzIENvbXByZXNzaW9uVGFibGVHZW5lcmF0b3IKK3sKKyAgICAvLyBkdXBsaWNhdGUgb2YgY29uc3RhbnRzIGluIFNDU1UKKworICAgIGZpbmFsIHN0YXRpYyBpbnQgTEFUSU5JTkRFWCAgICAgICAgICAgICAgICAgID0gMHhGOTsKKyAgICBmaW5hbCBzdGF0aWMgaW50IElQQUVYVEVOU0lPTklOREVYICAgICAgICAgICA9IDB4RkE7CisgICAgZmluYWwgc3RhdGljIGludCBHUkVFS0lOREVYICAgICAgICAgICAgICAgICAgPSAweEZCOworICAgIGZpbmFsIHN0YXRpYyBpbnQgQVJNRU5JQU5JTkRFWCAgICAgICAgICAgICAgID0gMHhGQzsKKyAgICBmaW5hbCBzdGF0aWMgaW50IEhJUkFHQU5BSU5ERVggICAgICAgICAgICAgICA9IDB4RkQ7CisgICAgZmluYWwgc3RhdGljIGludCBLQVRBS0FOQUlOREVYICAgICAgICAgICAgICAgPSAweEZFOworICAgIGZpbmFsIHN0YXRpYyBpbnQgSEFMRldJRFRIS0FUQUtBTkFJTkRFWCAgICAgID0gMHhGRjsKKworICAgIGZpbmFsIHN0YXRpYyBpbnQgU0RFRklORVggICAgICAgICAgICAgICAgICAgID0gMHgwQjsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFNSRVNFUlZFRCAgICAgICAgICAgICAgICAgICA9IDB4MEM7ICAvLyByZXNlcnZlZCB2YWx1ZQorICAgIGZpbmFsIHN0YXRpYyBpbnQgU1FVT1RFVSAgICAgICAgICAgICAgICAgICAgID0gMHgwRTsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFNDSEFOR0VVICAgICAgICAgICAgICAgICAgICA9IDB4MEY7CisKKyAgICBmaW5hbCBzdGF0aWMgaW50IFNRVU9URTAgICAgICAgICAgICAgICAgICAgICA9IDB4MDE7CisgICAgZmluYWwgc3RhdGljIGludCBTUVVPVEUxICAgICAgICAgICAgICAgICAgICAgPSAweDAyOworICAgIGZpbmFsIHN0YXRpYyBpbnQgU1FVT1RFMiAgICAgICAgICAgICAgICAgICAgID0gMHgwMzsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFNRVU9URTMgICAgICAgICAgICAgICAgICAgICA9IDB4MDQ7CisgICAgZmluYWwgc3RhdGljIGludCBTUVVPVEU0ICAgICAgICAgICAgICAgICAgICAgPSAweDA1OworICAgIGZpbmFsIHN0YXRpYyBpbnQgU1FVT1RFNSAgICAgICAgICAgICAgICAgICAgID0gMHgwNjsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFNRVU9URTYgICAgICAgICAgICAgICAgICAgICA9IDB4MDc7CisgICAgZmluYWwgc3RhdGljIGludCBTUVVPVEU3ICAgICAgICAgICAgICAgICAgICAgPSAweDA4OworCisgICAgZmluYWwgc3RhdGljIGludCBTQ0hBTkdFMCAgICAgICAgICAgICAgICAgICAgPSAweDEwOworICAgIGZpbmFsIHN0YXRpYyBpbnQgU0NIQU5HRTEgICAgICAgICAgICAgICAgICAgID0gMHgxMTsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFNDSEFOR0UyICAgICAgICAgICAgICAgICAgICA9IDB4MTI7CisgICAgZmluYWwgc3RhdGljIGludCBTQ0hBTkdFMyAgICAgICAgICAgICAgICAgICAgPSAweDEzOworICAgIGZpbmFsIHN0YXRpYyBpbnQgU0NIQU5HRTQgICAgICAgICAgICAgICAgICAgID0gMHgxNDsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFNDSEFOR0U1ICAgICAgICAgICAgICAgICAgICA9IDB4MTU7CisgICAgZmluYWwgc3RhdGljIGludCBTQ0hBTkdFNiAgICAgICAgICAgICAgICAgICAgPSAweDE2OworICAgIGZpbmFsIHN0YXRpYyBpbnQgU0NIQU5HRTcgICAgICAgICAgICAgICAgICAgID0gMHgxNzsKKworICAgIGZpbmFsIHN0YXRpYyBpbnQgU0RFRklORTAgICAgICAgICAgICAgICAgICAgID0gMHgxODsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFNERUZJTkUxICAgICAgICAgICAgICAgICAgICA9IDB4MTk7CisgICAgZmluYWwgc3RhdGljIGludCBTREVGSU5FMiAgICAgICAgICAgICAgICAgICAgPSAweDFBOworICAgIGZpbmFsIHN0YXRpYyBpbnQgU0RFRklORTMgICAgICAgICAgICAgICAgICAgID0gMHgxQjsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFNERUZJTkU0ICAgICAgICAgICAgICAgICAgICA9IDB4MUM7CisgICAgZmluYWwgc3RhdGljIGludCBTREVGSU5FNSAgICAgICAgICAgICAgICAgICAgPSAweDFEOworICAgIGZpbmFsIHN0YXRpYyBpbnQgU0RFRklORTYgICAgICAgICAgICAgICAgICAgID0gMHgxRTsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFNERUZJTkU3ICAgICAgICAgICAgICAgICAgICA9IDB4MUY7CisKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gVW5pY29kZSBtb2RlIHRhZ3MKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgZmluYWwgc3RhdGljIGludCBVQ0hBTkdFMCAgICAgICAgICAgICAgICAgICAgPSAweEUwOworICAgIGZpbmFsIHN0YXRpYyBpbnQgVUNIQU5HRTEgICAgICAgICAgICAgICAgICAgID0gMHhFMTsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFVDSEFOR0UyICAgICAgICAgICAgICAgICAgICA9IDB4RTI7CisgICAgZmluYWwgc3RhdGljIGludCBVQ0hBTkdFMyAgICAgICAgICAgICAgICAgICAgPSAweEUzOworICAgIGZpbmFsIHN0YXRpYyBpbnQgVUNIQU5HRTQgICAgICAgICAgICAgICAgICAgID0gMHhFNDsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFVDSEFOR0U1ICAgICAgICAgICAgICAgICAgICA9IDB4RTU7CisgICAgZmluYWwgc3RhdGljIGludCBVQ0hBTkdFNiAgICAgICAgICAgICAgICAgICAgPSAweEU2OworICAgIGZpbmFsIHN0YXRpYyBpbnQgVUNIQU5HRTcgICAgICAgICAgICAgICAgICAgID0gMHhFNzsKKworICAgIGZpbmFsIHN0YXRpYyBpbnQgVURFRklORTAgICAgICAgICAgICAgICAgICAgID0gMHhFODsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFVERUZJTkUxICAgICAgICAgICAgICAgICAgICA9IDB4RTk7CisgICAgZmluYWwgc3RhdGljIGludCBVREVGSU5FMiAgICAgICAgICAgICAgICAgICAgPSAweEVBOworICAgIGZpbmFsIHN0YXRpYyBpbnQgVURFRklORTMgICAgICAgICAgICAgICAgICAgID0gMHhFQjsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFVERUZJTkU0ICAgICAgICAgICAgICAgICAgICA9IDB4RUM7CisgICAgZmluYWwgc3RhdGljIGludCBVREVGSU5FNSAgICAgICAgICAgICAgICAgICAgPSAweEVEOworICAgIGZpbmFsIHN0YXRpYyBpbnQgVURFRklORTYgICAgICAgICAgICAgICAgICAgID0gMHhFRTsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFVERUZJTkU3ICAgICAgICAgICAgICAgICAgICA9IDB4RUY7CisKKyAgICBmaW5hbCBzdGF0aWMgaW50IFVRVU9URVUgICAgICAgICAgICAgICAgICAgICA9IDB4RjA7CisgICAgZmluYWwgc3RhdGljIGludCBVREVGSU5FWCAgICAgICAgICAgICAgICAgICAgPSAweEYxOworICAgIGZpbmFsIHN0YXRpYyBpbnQgVVJFU0VSVkVEICAgICAgICAgICAgICAgICAgID0gMHhGMjsgIC8vIHJlc2VydmVkIHZhbHVlCisKKyAgICBmaW5hbCBzdGF0aWMgaW50IEJMT0NLU0laRSA9IDB4RkY7CisgICAgCisgICAgLyoqCisgICAgICogR2VuZXJhdGUgdGhlIHRhYmxlIHVzZWQgYXMgc09mZnNldFRhYmxlIGluIFNDU1UuCisgICAgICogVGhpcyB0YWJsZSBjb250YWlucyBwcmVmb3JtZWQgaW5kaWNlcyBzbyB3ZSBjYW4gZG8gYXJyYXkgbG9va3VwcyAKKyAgICAgKiBpbnN0ZWFkIG9mIGNhbGN1bGF0aW9ucyBmb3Igc3BlZWQgZHVyaW5nIGRlY29tcHJlc3Npb24uCisgICAgICovCisgICAgc3RhdGljIHZvaWQgcHJpbnRPZmZzZXRUYWJsZSgpCisgICAgeworICAgICAgICBpbnQgICAgIGkgICAgICAgICAgID0gMDsKKwlpbnQgW10Jb2Zmc2V0VGFibGUgPSBuZXcgaW50IFsgQkxPQ0tTSVpFICsgMSBdOworCisgICAgICAgIC8vIDB4MDAgaXMgcmVzZXJ2ZWQKKworICAgICAgICAvLyBoYWxmIGJsb2NrcyBmcm9tIFUrMDA4MCB0byBVKzMzODAKKyAgICAgICAgZm9yKCBpID0gMHgwMTsgaSA8IDB4Njg7IGkrKyApCisgICAgICAgICAgICBvZmZzZXRUYWJsZVtpXSA9IGkgKiAweDgwOworCQorICAgICAgICAvLyBoYWxmIGJsb2NrcyBmcm9tIFUrRTAwMCB0byBVK0ZGODAKKyAgICAgICAgZm9yKCBpID0gMHg2ODsgaSA8IDB4QTg7IGkrKyApCisgICAgICAgICAgICBvZmZzZXRUYWJsZVtpXSA9IChpICogMHg4MCkgKyAweEFDMDA7CisJCisgICAgICAgIC8vIDB4QTguLjB4RjggaXMgcmVzZXJ2ZWQKKyAKKyAgICAgICAgb2Zmc2V0VGFibGVbIExBVElOSU5ERVggXSA9IDB4MDBDMDsKKyAgICAgICAgb2Zmc2V0VGFibGVbIElQQUVYVEVOU0lPTklOREVYIF0gPSAweDAyNTA7CisgICAgICAgIG9mZnNldFRhYmxlWyBHUkVFS0lOREVYIF0gPSAweDAzNzA7CisgICAgICAgIG9mZnNldFRhYmxlWyBBUk1FTklBTklOREVYIF0gPSAweDA1MzA7CisgICAgICAgIG9mZnNldFRhYmxlWyBISVJBR0FOQUlOREVYIF0gPSAweDMwNDA7CisgICAgICAgIG9mZnNldFRhYmxlWyBLQVRBS0FOQUlOREVYIF0gPSAweDMwQTA7CisgICAgICAgIG9mZnNldFRhYmxlWyBIQUxGV0lEVEhLQVRBS0FOQUlOREVYIF0gPSAweEZGNjA7CisKKyAgICAgICAgLy8gZHVtcCB0aGUgZ2VuZXJhdGVkIHRhYmxlCisJU3lzdGVtLm91dC5wcmludGxuKCJzdGF0aWMgaW50IFtdIHNPZmZzZXRUYWJsZSA9IHsiKTsKKyAgICAgICAgZm9yKGkgPSAwOyBpIDwgb2Zmc2V0VGFibGUubGVuZ3RoIC0gMTsgaSsrKQorICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludCgiMHgiICsgSW50ZWdlci50b0hleFN0cmluZyhvZmZzZXRUYWJsZVtpXSkKKwkJCSAgICAgKyAiLCAiKTsKKyAgICAgICAgZm9yKGkgPSBvZmZzZXRUYWJsZS5sZW5ndGggLSAxOyBpIDwgb2Zmc2V0VGFibGUubGVuZ3RoOyBpKyspCisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCIweCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG9mZnNldFRhYmxlW2ldKSk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIn07Iik7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEdlbmVyYXRlIHRoZSB0YWJsZSB1c2VkIGFzIHNTaW5nbGVUYWdUYWJsZSBpbiBVbmljb2RlQ29tcHJlc3Nvci4KKyAgICAgKiBUaGlzIHRhYmxlIGNvbnRhaW5zIGJvb2xlYW4gdmFsdWVzIGluZGljYXRpbmcgaWYgYSBieXRlIGlzIGEKKyAgICAgKiBzaW5nbGUtYnl0ZSBtb2RlIHRhZy4KKyAgICAgKi8KKyAgICBzdGF0aWMgdm9pZCBwcmludFNpbmdsZVRhZ1RhYmxlKCkKKyAgICB7CisgICAgICAgIGludCAgICAgICAgaSAgICAgICAgICAgICAgPSAwOworCWJvb2xlYW4gW10gc2luZ2xlVGFnVGFibGUgPSBuZXcgYm9vbGVhbiAgWyBCTE9DS1NJWkUgKyAxIF07CisKKyAgICAgICAgZm9yKCBpID0gMHgwMDsgaSA8PSBCTE9DS1NJWkU7IGkrKyApIHsKKyAgICAgICAgICAgIHN3aXRjaCggaSApIHsKKwkJCisJICAgIGNhc2UgU1FVT1RFVTogIGNhc2UgU0NIQU5HRVU6IAorCSAgICBjYXNlIFNERUZJTkVYOiBjYXNlIFNSRVNFUlZFRDoKKwkgICAgY2FzZSBTUVVPVEUwOiAgY2FzZSBTUVVPVEUxOiAgCisJICAgIGNhc2UgU1FVT1RFMjogIGNhc2UgU1FVT1RFMzoKKwkgICAgY2FzZSBTUVVPVEU0OiAgY2FzZSBTUVVPVEU1OiAgCisJICAgIGNhc2UgU1FVT1RFNjogIGNhc2UgU1FVT1RFNzoKKwkgICAgY2FzZSBTQ0hBTkdFMDogY2FzZSBTQ0hBTkdFMTogCisJICAgIGNhc2UgU0NIQU5HRTI6IGNhc2UgU0NIQU5HRTM6CisJICAgIGNhc2UgU0NIQU5HRTQ6IGNhc2UgU0NIQU5HRTU6IAorCSAgICBjYXNlIFNDSEFOR0U2OiBjYXNlIFNDSEFOR0U3OgorCSAgICBjYXNlIFNERUZJTkUwOiBjYXNlIFNERUZJTkUxOiAKKwkgICAgY2FzZSBTREVGSU5FMjogY2FzZSBTREVGSU5FMzoKKwkgICAgY2FzZSBTREVGSU5FNDogY2FzZSBTREVGSU5FNTogCisJICAgIGNhc2UgU0RFRklORTY6IGNhc2UgU0RFRklORTc6CisJCXNpbmdsZVRhZ1RhYmxlW2ldID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKwkJCisJICAgIGRlZmF1bHQ6CisJCXNpbmdsZVRhZ1RhYmxlW2ldID0gZmFsc2U7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwkKKyAgICAgICAgLy8gZHVtcCB0aGUgZ2VuZXJhdGVkIHRhYmxlCisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigicHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBbXSBzU2luZ2xlVGFnVGFibGUgPSB7Iik7CisgICAgICAgIGZvcihpID0gMDsgaSA8IHNpbmdsZVRhZ1RhYmxlLmxlbmd0aCAtIDE7IGkrKykKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoc2luZ2xlVGFnVGFibGVbaV0gKyAiLCAiKTsKKyAgICAgICAgZm9yKGkgPSBzaW5nbGVUYWdUYWJsZS5sZW5ndGggLSAxOyBpIDwgc2luZ2xlVGFnVGFibGUubGVuZ3RoOyBpKyspCisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KHNpbmdsZVRhZ1RhYmxlW2ldKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigifTsiKTsKKyAgICB9CisgICAgCisgICAgCisgICAgLyoqCisgICAgICogR2VuZXJhdGUgdGhlIHRhYmxlIHVzZWQgYXMgc1VuaWNvZGVUYWdUYWJsZSBpbiAKKyAgICAgKiBUaGlzIHRhYmxlIGNvbnRhaW5zIGJvb2xlYW4gdmFsdWVzIGluZGljYXRpbmcgaWYgYSBieXRlIGlzIGEKKyAgICAgKiB1bmljb2RlIG1vZGUgdGFnLgorICAgICAqLworICAgIHN0YXRpYyB2b2lkIHByaW50VW5pY29kZVRhZ1RhYmxlKCkKKyAgICB7CisgICAgICAgIGludCAgICAgICAgaSAgICAgICAgICAgICAgID0gMDsKKwlib29sZWFuIFtdIHVuaWNvZGVUYWdUYWJsZSA9IG5ldyBib29sZWFuICBbIEJMT0NLU0laRSArIDEgXTsKKworICAgICAgICBmb3IoIGkgPSAweDAwOyBpIDw9IEJMT0NLU0laRTsgaSsrICkgeworICAgICAgICAgICAgc3dpdGNoKCBpICkgeworCSAgICBjYXNlIFVRVU9URVU6ICBjYXNlIFVERUZJTkVYOiAKKwkgICAgY2FzZSBVUkVTRVJWRUQ6CisJICAgIGNhc2UgVUNIQU5HRTA6IGNhc2UgVUNIQU5HRTE6IAorCSAgICBjYXNlIFVDSEFOR0UyOiBjYXNlIFVDSEFOR0UzOgorCSAgICBjYXNlIFVDSEFOR0U0OiBjYXNlIFVDSEFOR0U1OiAKKwkgICAgY2FzZSBVQ0hBTkdFNjogY2FzZSBVQ0hBTkdFNzoKKwkgICAgY2FzZSBVREVGSU5FMDogY2FzZSBVREVGSU5FMTogCisJICAgIGNhc2UgVURFRklORTI6IGNhc2UgVURFRklORTM6CisJICAgIGNhc2UgVURFRklORTQ6IGNhc2UgVURFRklORTU6IAorCSAgICBjYXNlIFVERUZJTkU2OiBjYXNlIFVERUZJTkU3OgorCQl1bmljb2RlVGFnVGFibGVbaV0gPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworCQkKKwkgICAgZGVmYXVsdDoKKwkJdW5pY29kZVRhZ1RhYmxlW2ldID0gZmFsc2U7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwkKKyAgICAgICAgLy8gZHVtcCB0aGUgZ2VuZXJhdGVkIHRhYmxlCisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigicHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBbXSBzVW5pY29kZVRhZ1RhYmxlID0geyIpOworICAgICAgICBmb3IoaSA9IDA7IGkgPCB1bmljb2RlVGFnVGFibGUubGVuZ3RoIC0gMTsgaSsrKQorICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludCh1bmljb2RlVGFnVGFibGVbaV0gKyAiLCAiKTsKKyAgICAgICAgZm9yKGkgPSB1bmljb2RlVGFnVGFibGUubGVuZ3RoIC0gMTsgaSA8IHVuaWNvZGVUYWdUYWJsZS5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQodW5pY29kZVRhZ1RhYmxlW2ldKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigifTsiKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJndikKKyAgICB7CisgICAgICAgIHByaW50T2Zmc2V0VGFibGUoKTsKKyAgICAgICAgcHJpbnRTaW5nbGVUYWdUYWJsZSgpOworICAgICAgICBwcmludFVuaWNvZGVUYWdUYWJsZSgpOworICAgIH0KK307CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvY29tcHJlc3Npb24vcGFja2FnZS5odG1sIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2NvbXByZXNzaW9uL3BhY2thZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45OWY5NmUzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2NvbXByZXNzaW9uL3BhY2thZ2UuaHRtbApAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPCEtLSAgQ29weXJpZ2h0IChDKSAyMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZAorICBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2NvbXByZXNzaW9uL3BhY2thZ2UuaHRtbCx2ICQKKyAgJFJldmlzaW9uOiAxLjEgJAorICAkRGF0ZTogMjAwMC8wMy8xNSAyMTozNTo1MiAkCistLT4KKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IndoaXRlIj4KK1Rvb2wgdXNlZCB0byByZWJ1aWxkIHRhYmxlcyB1c2VkIGJ5IHRoZSBVbmljb2RlIGNvbXByZXNzaW9uIGNsYXNzZXMuCis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2RvY3MvQ2hlY2tUYWdzLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvZG9jcy9DaGVja1RhZ3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjk5NDQ4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2RvY3MvQ2hlY2tUYWdzLmphdmEKQEAgLTAsMCArMSwzNjggQEAKKy8qKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmlnaHQgKEMpIDIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2RvY3MvQ2hlY2tUYWdzLmphdmEsdiAkIAorKiAkRGF0ZTogMjAwMi8xMi8xNyAwNzozMToyNiAkIAorKiAkUmV2aXNpb246IDEuMTMgJAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKy8qKgorICogVGhpcyBpcyBhIHRvb2wgdG8gY2hlY2sgdGhlIHRhZ3Mgb24gSUNVNEogZmlsZXMuICBJbiBwYXJ0aWN1bGFyLCB3ZSdyZSBsb29raW5nIGZvcjoKKyAqCisgKiAtIG1ldGhvZHMgdGhhdCBoYXZlIG5vIHRhZ3MKKyAqIC0gY3VzdG9tIHRhZ3M6IEBkcmFmdCwgQHN0YWJsZSwgQGludGVybmFsPworICogLSBzdGFuZGFyZCB0YWdzOiBAc2luY2UsIEBkZXByZWNhdGVkCisgKgorICogU3ludGF4IG9mIHRhZ3M6CisgKiBAZHJhZnQgSUNVIFguWC5YCisgKiBAc3RhYmxlIElDVSBYLlguWAorICogQGludGVybmFsCisgKiBAc2luY2UgIChkb24ndCB1c2UpCisgKiBAZGVwcmVjYXRlZCB0byBiZSByZW1vdmVkIGluIElDVSBYLlguIFtVc2UgLi4uXQorICoKKyAqIGZsYWdzIG5hbWVzIG9mIGNsYXNzZXMgYW5kIHRoZWlyIG1lbWJlcnMgdGhhdCBoYXZlIG5vIHRhZ3Mgb3IgaW5jb3JyZWN0IHN5bnRheC4KKyAqCisgKiBSZXF1aXJlcyBKREsgMS40IG9yIGxhdGVyCisgKiAKKyAqIFJ1biBmcm9tIGRpcmVjdG9yeSBjb250YWluaW5nIENoZWNrVGFncy5jbGFzcyBhcyBmb2xsb3dzOgorICogamF2YWRvYyAtY2xhc3NwYXRoICR7SkFWQV9IT01FfS9saWIvdG9vbHMuamFyIC1kb2NsZXQgQ2hlY2tUYWdzIC1zb3VyY2VwYXRoICR7SUNVNEpfc3JjfSBbcGFja2FnZW5hbWVzXQorICovCisKK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRvb2wuZG9jczsKKworaW1wb3J0IGNvbS5zdW4uamF2YWRvYy4qOworCitwdWJsaWMgY2xhc3MgQ2hlY2tUYWdzIHsKKyAgICBSb290RG9jIHJvb3Q7CisgICAgYm9vbGVhbiBsb2c7CisgICAgYm9vbGVhbiBicmllZjsKKyAgICBEb2NTdGFjayBzdGFjayA9IG5ldyBEb2NTdGFjaygpOworCisgICAgY2xhc3MgRG9jTm9kZSB7CisgICAgICAgIHByaXZhdGUgU3RyaW5nIGhlYWRlcjsKKyAgICAgICAgcHJpdmF0ZSBib29sZWFuIHByaW50ZWQ7CisgICAgICAgIHByaXZhdGUgYm9vbGVhbiByZXBvcnRFcnJvcjsKKyAgICAgICAgcHJpdmF0ZSBpbnQgZXJyb3JDb3VudDsKKworICAgICAgICBwdWJsaWMgdm9pZCByZXNldChTdHJpbmcgaGVhZGVyLCBib29sZWFuIHJlcG9ydEVycm9yKSB7CisgICAgICAgICAgICB0aGlzLmhlYWRlciA9IGhlYWRlcjsKKyAgICAgICAgICAgIHRoaXMucHJpbnRlZCA9IGZhbHNlOworICAgICAgICAgICAgdGhpcy5lcnJvckNvdW50ID0gMDsKKyAgICAgICAgICAgIHRoaXMucmVwb3J0RXJyb3IgPSByZXBvcnRFcnJvcjsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICAgICAgcmV0dXJuIGhlYWRlciArIAorICAgICAgICAgICAgICAgICIgcHJpbnRlZDogIiArIHByaW50ZWQgKworICAgICAgICAgICAgICAgICIgcmVwb3J0RXJyb3I6ICIgKyByZXBvcnRFcnJvciArCisgICAgICAgICAgICAgICAgIiBlcnJvckNvdW50OiAiICsgZXJyb3JDb3VudDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNsYXNzIERvY1N0YWNrIHsKKyAgICAgICAgcHJpdmF0ZSBEb2NOb2RlW10gc3RhY2s7CisgICAgICAgIHByaXZhdGUgaW50IGluZGV4OworICAgICAgICBwcml2YXRlIGJvb2xlYW4gbmV3bGluZTsKKworICAgICAgICBwdWJsaWMgdm9pZCBwdXNoKFN0cmluZyBoZWFkZXIsIGJvb2xlYW4gcmVwb3J0RXJyb3IpIHsKKyAgICAgICAgICAgIGlmIChzdGFjayA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgc3RhY2sgPSBuZXcgRG9jTm9kZVs1XTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGluZGV4ID09IHN0YWNrLmxlbmd0aCkgeworICAgICAgICAgICAgICAgICAgICBEb2NOb2RlW10gdGVtcCA9IG5ldyBEb2NOb2RlW3N0YWNrLmxlbmd0aCAqIDJdOworICAgICAgICAgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KHN0YWNrLCAwLCB0ZW1wLCAwLCBpbmRleCk7CisgICAgICAgICAgICAgICAgICAgIHN0YWNrID0gdGVtcDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc3RhY2tbaW5kZXhdID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBzdGFja1tpbmRleF0gPSBuZXcgRG9jTm9kZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gIFN5c3RlbS5vdXQucHJpbnRsbigicmVzZXQgWyIgKyBpbmRleCArICJdIGhlYWRlcjogIiArIGhlYWRlciArICIgcmVwb3J0OiAiICsgcmVwb3J0RXJyb3IpOworICAgICAgICAgICAgc3RhY2tbaW5kZXgrK10ucmVzZXQoaGVhZGVyLCByZXBvcnRFcnJvcik7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBwb3AoKSB7CisgICAgICAgICAgICBpZiAoaW5kZXggPT0gMCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAtLWluZGV4OworCisgICAgICAgICAgICBpbnQgZWMgPSBzdGFja1tpbmRleF0uZXJyb3JDb3VudDsgLy8gaW5kZXggYWxyZWFkeSBkZWNyZW1lbnRlZAorICAgICAgICAgICAgaWYgKGVjID4gMCB8fCBpbmRleCA9PSAwKSB7IC8vIGFsd2F5cyByZXBvcnQgZm9yIG91dGVybW9zdCBlbGVtZW50CisgICAgICAgICAgICAgICAgaWYgKHN0YWNrW2luZGV4XS5yZXBvcnRFcnJvcikgeworICAgICAgICAgICAgICAgICAgICBvdXRwdXQoIigiICsgZWMgKyAoZWMgPT0gMSA/ICIgZXJyb3IiIDogIiBlcnJvcnMiKSArICIpIiwgZmFsc2UsIHRydWUsIGluZGV4KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBwcm9wYWdhdGUgdG8gcGFyZW50CisgICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gMCkgeworICAgICAgICAgICAgICAgICAgICBzdGFja1tpbmRleC0xXS5lcnJvckNvdW50ICs9IGVjOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpbmRleCA9PSAwKSB7CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7IC8vIGFsd2F5cyBzaW5jZSB3ZSBhbHdheXMgcmVwb3J0IG51bWJlciBvZiBlcnJvcnMKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIG91dHB1dChTdHJpbmcgbXNnLCBib29sZWFuIGVycm9yLCBib29sZWFuIG5ld2xpbmUpIHsKKyAgICAgICAgICAgIG91dHB1dChtc2csIGVycm9yLCBuZXdsaW5lLCBpbmRleC0xKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgb3V0cHV0KFN0cmluZyBtc2csIGJvb2xlYW4gZXJyb3IsIGJvb2xlYW4gbmV3bGluZSwgaW50IGl4KSB7CisgICAgICAgICAgICBEb2NOb2RlIGxhc3QgPSBzdGFja1tpeF07CisgICAgICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBsYXN0LmVycm9yQ291bnQgKz0gMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYm9vbGVhbiBzaG93ID0gIWJyaWVmIHx8IGxhc3QucmVwb3J0RXJyb3I7CisgICAgICAgICAgICBib29sZWFuIG5vbXNnID0gc2hvdyAmJiBicmllZiAmJiBlcnJvcjsKKyAgICAgICAgICAgIC8vICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCI+Pj4gIiArIGxhc3QgKyAiIGVycm9yOiAiICsgZXJyb3IgKyAiIHNob3c6ICIgKyBzaG93ICsgIiBub21zZzogIiArIG5vbXNnKTsKKworICAgICAgICAgICAgaWYgKHNob3cpIHsKKyAgICAgICAgICAgICAgICBpZiAoYnJpZWYgJiYgZXJyb3IpIHsKKyAgICAgICAgICAgICAgICAgICAgbXNnID0gbnVsbDsgLy8gbnVrZSBlcnJvciBtZXNzYWdlcyBpZiB3ZSdyZSBicmllZiwganVzdCByZXBvcnQgaGVhZGVycyBhbmQgdG90YWxzCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IGl4OykgeworICAgICAgICAgICAgICAgICAgICBEb2NOb2RlIG4gPSBzdGFja1tpXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG4ucHJpbnRlZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1zZyAhPSBudWxsIHx8ICFsYXN0LnByaW50ZWQpIHsgLy8gc2luY2UgaW5kZXggPiAwIGxhc3QgaXMgbm90IG51bGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5uZXdsaW5lICYmIGkgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZXdsaW5lID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIiAgIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICArK2k7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KG4uaGVhZGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG4ucHJpbnRlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5ld2xpbmUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgaSA9IDA7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAobXNnICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID09IDAgJiYgdGhpcy5uZXdsaW5lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIioqKiAiKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KG1zZyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0aGlzLm5ld2xpbmUgPSBuZXdsaW5lOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBib29sZWFuIHN0YXJ0KFJvb3REb2Mgcm9vdCkgeworICAgICAgICByZXR1cm4gbmV3IENoZWNrVGFncyhyb290KS5ydW4oKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGludCBvcHRpb25MZW5ndGgoU3RyaW5nIG9wdGlvbikgeworICAgICAgICBpZiAob3B0aW9uLmVxdWFscygiLWxvZyIpKSB7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfSBlbHNlIGlmIChvcHRpb24uZXF1YWxzKCItYnJpZWYiKSkgeworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgQ2hlY2tUYWdzKFJvb3REb2Mgcm9vdCkgeworICAgICAgICB0aGlzLnJvb3QgPSByb290OworCisgICAgICAgIFN0cmluZ1tdW10gb3B0aW9ucyA9IHJvb3Qub3B0aW9ucygpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIFN0cmluZyBvcHQgPSBvcHRpb25zW2ldWzBdOworICAgICAgICAgICAgaWYgKG9wdC5lcXVhbHMoIi1sb2ciKSkgeworICAgICAgICAgICAgICAgIHRoaXMubG9nID0gdHJ1ZTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAob3B0LmVxdWFscygiLWJyaWVmIikpIHsKKyAgICAgICAgICAgICAgICB0aGlzLmJyaWVmID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGJvb2xlYW4gcnVuKCkgeworICAgICAgICBkb0RvY3Mocm9vdC5jbGFzc2VzKCksICJQYWNrYWdlIiwgdHJ1ZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nW10gdGFnS2luZHMgPSB7CisgICAgICAgICJAaW50ZXJuYWwiLCAiQGRyYWZ0IiwgIkBzdGFibGUiLCAiQHNpbmNlIiwgIkBkZXByZWNhdGVkIiwgIkBhdXRob3IiLCAiQHNlZSIsICJAdmVyc2lvbiIsCisgICAgICAgICJAcGFyYW0iLCAiQHJldHVybiIsICJAdGhyb3dzIiwgIkBvYnNvbGV0ZSIsICJAZXhjZXB0aW9uIiwgIkBzZXJpYWwiCisgICAgfTsKKworICAgIHN0YXRpYyBmaW5hbCBpbnQgVU5LTk9XTiA9IC0xOworICAgIHN0YXRpYyBmaW5hbCBpbnQgSU5URVJOQUwgPSAwOworICAgIHN0YXRpYyBmaW5hbCBpbnQgRFJBRlQgPSAxOworICAgIHN0YXRpYyBmaW5hbCBpbnQgU1RBQkxFID0gMjsKKyAgICBzdGF0aWMgZmluYWwgaW50IFNJTkNFID0gMzsKKyAgICBzdGF0aWMgZmluYWwgaW50IERFUFJFQ0FURUQgPSA0OworICAgIHN0YXRpYyBmaW5hbCBpbnQgQVVUSE9SID0gNTsKKyAgICBzdGF0aWMgZmluYWwgaW50IFNFRSA9IDY7CisgICAgc3RhdGljIGZpbmFsIGludCBWRVJTSU9OID0gNzsKKyAgICBzdGF0aWMgZmluYWwgaW50IFBBUkFNID0gODsKKyAgICBzdGF0aWMgZmluYWwgaW50IFJFVFVSTiA9IDk7CisgICAgc3RhdGljIGZpbmFsIGludCBUSFJPV1MgPSAxMDsKKyAgICBzdGF0aWMgZmluYWwgaW50IE9CU09MRVRFID0gMTE7CisgICAgc3RhdGljIGZpbmFsIGludCBFWENFUFRJT04gPSAxMjsKKyAgICBzdGF0aWMgZmluYWwgaW50IFNFUklBTCA9IDEzOworCisgICAgc3RhdGljIGludCB0YWdLaW5kSW5kZXgoU3RyaW5nIGtpbmQpIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0YWdLaW5kcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgaWYgKGtpbmQuZXF1YWxzKHRhZ0tpbmRzW2ldKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBVTktOT1dOOworICAgIH0KKworICAgIGJvb2xlYW4gbmV3bGluZSA9IGZhbHNlOworCisgICAgdm9pZCBvdXRwdXQoU3RyaW5nIG1zZywgYm9vbGVhbiBlcnJvciwgYm9vbGVhbiBuZXdsaW5lKSB7CisgICAgICAgIHN0YWNrLm91dHB1dChtc2csIGVycm9yLCBuZXdsaW5lKTsKKyAgICB9CisKKyAgICB2b2lkIGxvZygpIHsKKyAgICAgICAgb3V0cHV0KG51bGwsIGZhbHNlLCBmYWxzZSk7CisgICAgfQorCisgICAgdm9pZCBsb2dsbigpIHsKKyAgICAgICAgb3V0cHV0KG51bGwsIGZhbHNlLCB0cnVlKTsKKyAgICB9CisKKyAgICB2b2lkIGxvZyhTdHJpbmcgbXNnKSB7CisgICAgICAgIG91dHB1dChtc2csIGZhbHNlLCBmYWxzZSk7CisgICAgfQorCisgICAgdm9pZCBsb2dsbihTdHJpbmcgbXNnKSB7CisgICAgICAgIG91dHB1dChtc2csIGZhbHNlLCB0cnVlKTsKKyAgICB9CisKKyAgICB2b2lkIGVycihTdHJpbmcgbXNnKSB7CisgICAgICAgIG91dHB1dChtc2csIHRydWUsIGZhbHNlKTsKKyAgICB9CisKKyAgICB2b2lkIGVycmxuKFN0cmluZyBtc2cpIHsKKyAgICAgICAgb3V0cHV0KG1zZywgdHJ1ZSwgdHJ1ZSk7CisgICAgfQorCisgICAgdm9pZCB0YWdFcnIoVGFnIHRhZykgeworICAgICAgICAvLyBUYWcucG9zaXRpb24oKSByZXF1aXJlcyBKREsgMS40LCBidWlsZC54bWwgdGVzdHMgZm9yIHRoaXMKKyAgICAgICAgZXJybG4odGFnLnRvU3RyaW5nKCkgKyAiIFsiICsgdGFnLnBvc2l0aW9uKCkgKyAiXSIpOworICAgIH0KKworICAgIHZvaWQgZG9Eb2NzKFByb2dyYW1FbGVtZW50RG9jW10gZG9jcywgU3RyaW5nIGhlYWRlciwgYm9vbGVhbiByZXBvcnRFcnJvcikgeworICAgICAgICBpZiAoZG9jcyAhPSBudWxsICYmIGRvY3MubGVuZ3RoID4gMCkgeworICAgICAgICAgICAgc3RhY2sucHVzaChoZWFkZXIsIHJlcG9ydEVycm9yKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZG9jcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIGRvRG9jKGRvY3NbaV0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RhY2sucG9wKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGRvRG9jKFByb2dyYW1FbGVtZW50RG9jIGRvYykgeworICAgICAgICBpZiAoZG9jICE9IG51bGwgJiYgKGRvYy5pc1B1YmxpYygpIHx8IGRvYy5pc1Byb3RlY3RlZCgpKQorICAgICAgICAgICAgJiYgIShkb2MgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvckRvYyAmJiAoKENvbnN0cnVjdG9yRG9jKWRvYykuaXNTeW50aGV0aWMoKSkpIHsKKworICAgICAgICAgICAgLy8gdW5mb3J0dW5hdGVseSwgaW4gSkRLIDEuNC4xIE1lbWJlckRvYy5pc1N5bnRoZXRpYyBpcyBub3QgcHJvcGVybHkgaW1wbGVtZW50ZWQgZm9yIAorICAgICAgICAgICAgLy8gc3ludGhldGljIGNvbnN0cnVjdG9ycy4gIFNvIHlvdSdsbCBoYXZlIHRvIGxpdmUgd2l0aCBzcHVyaW91cyBlcnJvcnMgb3IgJ2ltcGxlbWVudCcKKyAgICAgICAgICAgIC8vIHRoZSBzeW50aGV0aWMgY29uc3RydWN0b3JzLi4uCisKKyAgICAgICAgICAgIGJvb2xlYW4gaXNDbGFzcyA9IGRvYy5pc0NsYXNzKCkgfHwgZG9jLmlzSW50ZXJmYWNlKCk7CisgICAgICAgICAgICBTdHJpbmcgaGVhZGVyID0gIi0tLSAiICsgKGlzQ2xhc3MgPyBkb2MucXVhbGlmaWVkTmFtZSgpIDogZG9jLm5hbWUoKSk7CisgICAgICAgICAgICBpZiAoZG9jIGluc3RhbmNlb2YgRXhlY3V0YWJsZU1lbWJlckRvYykgeworICAgICAgICAgICAgICAgIGhlYWRlciArPSAoKEV4ZWN1dGFibGVNZW1iZXJEb2MpZG9jKS5mbGF0U2lnbmF0dXJlKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBoZWFkZXIgKz0gIiAtLS0iOworICAgICAgICAgICAgc3RhY2sucHVzaChoZWFkZXIsIGlzQ2xhc3MpOworICAgICAgICAgICAgaWYgKGxvZykgeworICAgICAgICAgICAgICAgIGxvZ2xuKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkb1RhZ3MoZG9jKTsKKyAgICAgICAgICAgIGlmIChpc0NsYXNzKSB7CisgICAgICAgICAgICAgICAgQ2xhc3NEb2MgY2RvYyA9IChDbGFzc0RvYylkb2M7CisgICAgICAgICAgICAgICAgZG9Eb2NzKGNkb2MuZmllbGRzKCksICJGaWVsZHMiLCAhYnJpZWYpOworICAgICAgICAgICAgICAgIGRvRG9jcyhjZG9jLmNvbnN0cnVjdG9ycygpLCAiQ29uc3RydWN0b3JzIiwgIWJyaWVmKTsKKyAgICAgICAgICAgICAgICBkb0RvY3MoY2RvYy5tZXRob2RzKCksICJNZXRob2RzIiwgIWJyaWVmKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0YWNrLnBvcCgpOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBkb1RhZ3MoUHJvZ3JhbUVsZW1lbnREb2MgZG9jKSB7CisgICAgICAgIFRhZ1tdIHRhZ3MgPSBkb2MudGFncygpOworICAgICAgICBib29sZWFuIGZvdW5kUmVxdWlyZWRUYWcgPSBmYWxzZTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0YWdzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBUYWcgdGFnID0gdGFnc1tpXTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIFN0cmluZyBraW5kID0gdGFnLmtpbmQoKTsKKyAgICAgICAgICAgIGludCBpeCA9IHRhZ0tpbmRJbmRleChraW5kKTsKKworICAgICAgICAgICAgc3dpdGNoIChpeCkgeworICAgICAgICAgICAgY2FzZSBVTktOT1dOOgorICAgICAgICAgICAgICAgIGVycmxuKCJ1bmtub3duIGtpbmQ6ICIgKyBraW5kKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgSU5URVJOQUw6CisgICAgICAgICAgICAgICAgZm91bmRSZXF1aXJlZFRhZyA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgRFJBRlQ6CisgICAgICAgICAgICAgIGlmICh0YWcudGV4dCgpLmluZGV4T2YoIklDVSAyLjAiKSAhPSAtMSkgeworICAgICAgICAgICAgICAgIGZvdW5kUmVxdWlyZWRUYWcgPSB0cnVlOworICAgICAgICAgICAgICAgIHRhZ0Vycih0YWcpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIC8vIGZhbGwgdGhyb3VnaAorCisgICAgICAgICAgICBjYXNlIERFUFJFQ0FURUQ6CisgICAgICAgICAgICBjYXNlIE9CU09MRVRFOgorICAgICAgICAgICAgICAgIGlmICh0YWcudGV4dCgpLmluZGV4T2YoIklDVSIpICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgdGFnRXJyKHRhZyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZvdW5kUmVxdWlyZWRUYWcgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIFNUQUJMRToKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyB0ZXh0ID0gdGFnLnRleHQoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRleHQubGVuZ3RoKCkgIT0gMCAmJiB0ZXh0LmluZGV4T2YoIklDVSIpICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRhZ0Vycih0YWcpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGZvdW5kUmVxdWlyZWRUYWcgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBTSU5DRToKKyAgICAgICAgICAgICAgICB0YWdFcnIodGFnKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBFWENFUFRJT046CisgICAgICAgICAgICAgICAgbG9nbG4oIllvdSByZWFsbHkgb3VnaHQgdG8gdXNlIEB0aHJvd3MsIHlvdSBrbm93Li4uIDotKSIpOworCisgICAgICAgICAgICBjYXNlIEFVVEhPUjoKKyAgICAgICAgICAgIGNhc2UgU0VFOgorICAgICAgICAgICAgY2FzZSBQQVJBTToKKyAgICAgICAgICAgIGNhc2UgUkVUVVJOOgorICAgICAgICAgICAgY2FzZSBUSFJPV1M6CisgICAgICAgICAgICBjYXNlIFNFUklBTDoKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBWRVJTSU9OOgorICAgICAgICAgICAgICAgIHRhZ0Vycih0YWcpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGVycmxuKCJ1bmtub3duIGluZGV4OiAiICsgaXgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICghZm91bmRSZXF1aXJlZFRhZykgeworICAgICAgICAgICAgZXJybG4oIm1pc3NpbmcgcmVxdWlyZWQgdGFnIFsiICsgZG9jLnBvc2l0aW9uKCkgKyAiXSIpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2RvY3MvSUNVVGFnbGV0LmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvZG9jcy9JQ1VUYWdsZXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzZhOTU5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2RvY3MvSUNVVGFnbGV0LmphdmEKQEAgLTAsMCArMSwyMDcgQEAKKy8qKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmlnaHQgKEMpIDIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2RvY3MvSUNVVGFnbGV0LmphdmEsdiAkIAorKiAkRGF0ZTogMjAwMi8xMi8xNyAwNzozMToyNiAkIAorKiAkUmV2aXNpb246IDEuMiAkCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudG9vbC5kb2NzOworCitpbXBvcnQgY29tLnN1bi5qYXZhZG9jLio7CitpbXBvcnQgY29tLnN1bi50b29scy5kb2NsZXRzLio7CisKK2ltcG9ydCBqYXZhLnRleHQuQnJlYWtJdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworaW1wb3J0IGphdmEudXRpbC5NYXA7CisKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBJQ1VUYWdsZXQgaW1wbGVtZW50cyBUYWdsZXQgeworICAgIHByb3RlY3RlZCBmaW5hbCBTdHJpbmcgbmFtZTsKKyAgICBwcm90ZWN0ZWQgZmluYWwgaW50IG1hc2s7CisKKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBNQVNLX0ZJRUxEID0gMTsKKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBNQVNLX0NPTlNUUlVDVE9SID0gMjsKKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBNQVNLX01FVEhPRCA9IDQ7CisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgTUFTS19PVkVSVklFVyA9IDg7CisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgTUFTS19QQUNLQUdFID0gMTY7CisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgTUFTS19UWVBFID0gMzI7CisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgTUFTS19JTkxJTkUgPSA2NDsKKworICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IE1BU0tfREVGQVVMVCA9IDB4MDAzZjsgLy8gbm8gaW5saW5lCisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgTUFTS19WQUxJRCA9IDB4MDA3ZjsgLy8gaW5jbHVkZXMgaW5saW5lCisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgcmVnaXN0ZXIoTWFwIHRhZ2xldHMpIHsKKyAgICAgICAgSUNVSW50ZXJuYWxUYWdsZXQucmVnaXN0ZXIodGFnbGV0cyk7CisgICAgICAgIElDVURyYWZ0VGFnbGV0LnJlZ2lzdGVyKHRhZ2xldHMpOworICAgICAgICBJQ1VTdGFibGVUYWdsZXQucmVnaXN0ZXIodGFnbGV0cyk7CisgICAgICAgIElDVURlcHJlY2F0ZWRUYWdsZXQucmVnaXN0ZXIodGFnbGV0cyk7CisgICAgICAgIElDVU9ic29sZXRlVGFnbGV0LnJlZ2lzdGVyKHRhZ2xldHMpOworICAgIH0KKworICAgIHByb3RlY3RlZCBJQ1VUYWdsZXQoU3RyaW5nIG5hbWUsIGludCBtYXNrKSB7CisgICAgICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgICAgIHRoaXMubWFzayA9IG1hc2sgJiBNQVNLX1ZBTElEOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGluRmllbGQoKSB7CisgICAgICAgIHJldHVybiAobWFzayAmIE1BU0tfRklFTEQpICE9IDA7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gaW5Db25zdHJ1Y3RvcigpIHsKKyAgICAgICAgcmV0dXJuIChtYXNrICYgTUFTS19GSUVMRCkgIT0gMDsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBpbk1ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuIChtYXNrICYgTUFTS19GSUVMRCkgIT0gMDsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBpbk92ZXJ2aWV3KCkgeworICAgICAgICByZXR1cm4gKG1hc2sgJiBNQVNLX0ZJRUxEKSAhPSAwOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGluUGFja2FnZSgpIHsKKyAgICAgICAgcmV0dXJuIChtYXNrICYgTUFTS19GSUVMRCkgIT0gMDsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBpblR5cGUoKSB7CisgICAgICAgIHJldHVybiAobWFzayAmIE1BU0tfRklFTEQpICE9IDA7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gaXNJbmxpbmVUYWcoKSB7CisgICAgICAgIHJldHVybiAobWFzayAmIE1BU0tfRklFTEQpICE9IDA7CisgICAgfQorCisgICAgcHVibGljIFN0cmluZyBnZXROYW1lKCkgeworICAgICAgICByZXR1cm4gbmFtZTsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKFRhZyB0YWcpIHsKKyAgICAgICAgcmV0dXJuIHRhZy50ZXh0KCk7CisgICAgfQorCisgICAgcHVibGljIFN0cmluZyB0b1N0cmluZyhUYWdbXSB0YWdzKSB7CisgICAgICAgIGlmICh0YWdzICE9IG51bGwpIHsKKyAgICAgICAgICAgIGlmICh0YWdzLmxlbmd0aCA+IDEpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgbXNnID0gIlNob3VsZCBub3QgaGF2ZSBtb3JlIHRoYW4gb25lIElDVSB0YWcgcGVyIGVsZW1lbnQ6XG4iOworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGFncy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBtc2cgKz0gIiAgWyIgKyBpICsgIl0gIiArIHRhZ3NbaV0gKyAiXG4iOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihtc2cpOworICAgICAgICAgICAgfSBlbHNlIGlmICh0YWdzLmxlbmd0aCA+IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdG9TdHJpbmcodGFnc1swXSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgU1RBVFVTID0gIjxkdD48Yj5TdGF0dXM6PC9iPjwvZHQ+IjsKKworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgSUNVSW50ZXJuYWxUYWdsZXQgZXh0ZW5kcyBJQ1VUYWdsZXQgeworICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgTkFNRSA9ICJpbnRlcm5hbCI7CisKKyAgICAgICAgcHVibGljIHN0YXRpYyB2b2lkIHJlZ2lzdGVyKE1hcCB0YWdsZXRzKSB7CisgICAgICAgICAgICB0YWdsZXRzLnB1dChOQU1FLCBuZXcgSUNVSW50ZXJuYWxUYWdsZXQoKSk7CisgICAgICAgIH0KKworICAgICAgICBwcml2YXRlIElDVUludGVybmFsVGFnbGV0KCkgeworICAgICAgICAgICAgc3VwZXIoTkFNRSwgTUFTS19ERUZBVUxUKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoVGFnIHRhZykgeworICAgICAgICAgICAgcmV0dXJuIFNUQVRVUyArICI8ZGQ+PGVtPkludGVybmFsPC9lbT4uIDxmb250IGNvbG9yPSdyZWQnPlRoaXMgQVBJIGlzIDxlbT5JbnRlcm5hbCBPbmx5PC9lbT4gYW5kIGNhbiBjaGFuZ2UgYXQgYW55IHRpbWUuPC9mb250PjwvZGQ+IjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgSUNVRHJhZnRUYWdsZXQgZXh0ZW5kcyBJQ1VUYWdsZXQgeworICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgTkFNRSA9ICJkcmFmdCI7CisKKyAgICAgICAgcHVibGljIHN0YXRpYyB2b2lkIHJlZ2lzdGVyKE1hcCB0YWdsZXRzKSB7CisgICAgICAgICAgICB0YWdsZXRzLnB1dChOQU1FLCBuZXcgSUNVRHJhZnRUYWdsZXQoKSk7CisgICAgICAgIH0KKworICAgICAgICBwcml2YXRlIElDVURyYWZ0VGFnbGV0KCkgeworICAgICAgICAgICAgc3VwZXIoTkFNRSwgTUFTS19ERUZBVUxUKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoVGFnIHRhZykgeworICAgICAgICAgICAgU3RyaW5nIHRleHQgPSB0YWcudGV4dCgpOworICAgICAgICAgICAgaWYgKHRleHQubGVuZ3RoKCkgPT0gMCkgeworICAgICAgICAgICAgICAgIFN5c3RlbS5lcnIucHJpbnRsbigiV2FybmluZzogZW1wdHkgZHJhZnQgdGFnIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gU1RBVFVTICsgIjxkZD5EcmFmdCAiICsgdGFnLnRleHQoKSArICIuPC9kZD4iOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBJQ1VTdGFibGVUYWdsZXQgZXh0ZW5kcyBJQ1VUYWdsZXQgeworICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgTkFNRSA9ICJzdGFibGUiOworCisgICAgICAgIHB1YmxpYyBzdGF0aWMgdm9pZCByZWdpc3RlcihNYXAgdGFnbGV0cykgeworICAgICAgICAgICAgdGFnbGV0cy5wdXQoTkFNRSwgbmV3IElDVVN0YWJsZVRhZ2xldCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIHByaXZhdGUgSUNVU3RhYmxlVGFnbGV0KCkgeworICAgICAgICAgICAgc3VwZXIoTkFNRSwgTUFTS19ERUZBVUxUKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoVGFnIHRhZykgeworICAgICAgICAgICAgU3RyaW5nIHRleHQgPSB0YWcudGV4dCgpOworICAgICAgICAgICAgaWYgKHRleHQubGVuZ3RoKCkgPiAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNUQVRVUyArICI8ZGQ+U3RhYmxlICIgKyB0ZXh0ICsgIi48L2RkPiI7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiBTVEFUVVMgKyAiPGRkPlN0YWJsZS48L2RkPiI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIElDVURlcHJlY2F0ZWRUYWdsZXQgZXh0ZW5kcyBJQ1VUYWdsZXQgeworICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgTkFNRSA9ICJkZXByZWNhdGVkIjsKKworICAgICAgICBwdWJsaWMgc3RhdGljIHZvaWQgcmVnaXN0ZXIoTWFwIHRhZ2xldHMpIHsKKyAgICAgICAgICAgIHRhZ2xldHMucHV0KE5BTUUsIG5ldyBJQ1VEZXByZWNhdGVkVGFnbGV0KCkpOworICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZSBJQ1VEZXByZWNhdGVkVGFnbGV0KCkgeworICAgICAgICAgICAgc3VwZXIoTkFNRSwgTUFTS19ERUZBVUxUKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoVGFnIHRhZykgeworICAgICAgICAgICAgQnJlYWtJdGVyYXRvciBiaSA9IEJyZWFrSXRlcmF0b3IuZ2V0U2VudGVuY2VJbnN0YW5jZShMb2NhbGUuVVMpOworICAgICAgICAgICAgU3RyaW5nIHRleHQgPSB0YWcudGV4dCgpOworICAgICAgICAgICAgYmkuc2V0VGV4dCh0ZXh0KTsKKyAgICAgICAgICAgIGludCBmaXJzdCA9IGJpLmZpcnN0KCk7CisgICAgICAgICAgICBpbnQgbmV4dCA9IGJpLm5leHQoKTsKKyAgICAgICAgICAgIGlmIChmaXJzdCA9PSAtMSB8fCBuZXh0ID09IC0xKSB7CisgICAgICAgICAgICAgICAgU3lzdGVtLmVyci5wcmludGxuKCJXYXJuaW5nOiBiYWQgZGVwcmVjYXRlZCB0YWcgJyIgKyB0ZXh0ICsgIiciKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gU1RBVFVTICsgIjxkZD48ZW0+RGVwcmVjYXRlZDwvZW0+LiAiICsgdGV4dCArICI8L2RkPiI7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiBTVEFUVVMgKyAiPGRkPjxlbT5EZXByZWNhdGVkIGluICIgKyB0ZXh0LnN1YnN0cmluZyhmaXJzdCwgbmV4dCkgKyAiPC9lbT4uICIgKyB0ZXh0LnN1YnN0cmluZyhuZXh0KSArICI8L2RkPiI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIElDVU9ic29sZXRlVGFnbGV0IGV4dGVuZHMgSUNVVGFnbGV0IHsKKyAgICAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIE5BTUUgPSAib2Jzb2xldGUiOworCisgICAgICAgIHB1YmxpYyBzdGF0aWMgdm9pZCByZWdpc3RlcihNYXAgdGFnbGV0cykgeworICAgICAgICAgICAgdGFnbGV0cy5wdXQoTkFNRSwgbmV3IElDVU9ic29sZXRlVGFnbGV0KCkpOworICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZSBJQ1VPYnNvbGV0ZVRhZ2xldCgpIHsKKyAgICAgICAgICAgIHN1cGVyKE5BTUUsIE1BU0tfREVGQVVMVCk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKFRhZyB0YWcpIHsKKyAgICAgICAgICAgIEJyZWFrSXRlcmF0b3IgYmkgPSBCcmVha0l0ZXJhdG9yLmdldFNlbnRlbmNlSW5zdGFuY2UoTG9jYWxlLlVTKTsKKyAgICAgICAgICAgIFN0cmluZyB0ZXh0ID0gdGFnLnRleHQoKTsKKyAgICAgICAgICAgIGJpLnNldFRleHQodGV4dCk7CisgICAgICAgICAgICBpbnQgZmlyc3QgPSBiaS5maXJzdCgpOworICAgICAgICAgICAgaW50IG5leHQgPSBiaS5uZXh0KCk7CisgICAgICAgICAgICByZXR1cm4gU1RBVFVTICsgIjxkZD48ZW0+T2Jzb2xldGUuPC9lbT4gPGZvbnQgY29sb3I9J3JlZCc+V2lsbCBiZSByZW1vdmVkIGluICIgKyB0ZXh0LnN1YnN0cmluZyhmaXJzdCwgbmV4dCkgKyAiPC9mb250Pi4gIiArIHRleHQuc3Vic3RyaW5nKG5leHQpICsgIjwvZGQ+IjsKKworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9BcnJheUVudW1lcmF0aW9uLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL0FycmF5RW51bWVyYXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mNWMxN2U0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9BcnJheUVudW1lcmF0aW9uLmphdmEKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAwNCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9BcnJheUVudW1lcmF0aW9uLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDIvMTYgMDM6MDU6MjYgJCAKKyAqICRSZXZpc2lvbjogMS4yICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudG9vbC5sb2NhbGVjb252ZXJ0ZXI7CisKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworcHVibGljIGZpbmFsIGNsYXNzIEFycmF5RW51bWVyYXRpb24gaW1wbGVtZW50cyBFbnVtZXJhdGlvbiB7CisKKyAgICBwdWJsaWMgQXJyYXlFbnVtZXJhdGlvbihPYmplY3RbXSBhcnJheSwgaW50IHN0YXJ0LCBpbnQgbGltaXQpIHsKKyAgICAgICAgdGhpcy5hcnJheSA9IGFycmF5OworICAgICAgICBwb3NpdGlvbiA9IHN0YXJ0OworICAgICAgICB0aGlzLmxpbWl0ID0gbGltaXQ7CisgICAgfQorCisgICAgcHVibGljIEFycmF5RW51bWVyYXRpb24oYnl0ZVtdIGFycmF5LCBpbnQgc3RhcnQsIGludCBsaW1pdCkgeworICAgICAgICB0aGlzLmFycmF5ID0gbmV3IE9iamVjdFthcnJheS5sZW5ndGhdOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB0aGlzLmFycmF5W2ldID0gbmV3IEJ5dGUoYXJyYXlbaV0pOworICAgICAgICB9CisgICAgICAgIHBvc2l0aW9uID0gc3RhcnQ7CisgICAgICAgIHRoaXMubGltaXQgPSBsaW1pdDsKKyAgICB9CisKKyAgICBwdWJsaWMgQXJyYXlFbnVtZXJhdGlvbihjaGFyW10gYXJyYXksIGludCBzdGFydCwgaW50IGxpbWl0KSB7CisgICAgICAgIHRoaXMuYXJyYXkgPSBuZXcgT2JqZWN0W2FycmF5Lmxlbmd0aF07CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHRoaXMuYXJyYXlbaV0gPSBuZXcgQ2hhcmFjdGVyKGFycmF5W2ldKTsKKyAgICAgICAgfQorICAgICAgICBwb3NpdGlvbiA9IHN0YXJ0OworICAgICAgICB0aGlzLmxpbWl0ID0gbGltaXQ7CisgICAgfQorCisgICAgcHVibGljIEFycmF5RW51bWVyYXRpb24oc2hvcnRbXSBhcnJheSwgaW50IHN0YXJ0LCBpbnQgbGltaXQpIHsKKyAgICAgICAgdGhpcy5hcnJheSA9IG5ldyBPYmplY3RbYXJyYXkubGVuZ3RoXTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdGhpcy5hcnJheVtpXSA9IG5ldyBTaG9ydChhcnJheVtpXSk7CisgICAgICAgIH0KKyAgICAgICAgcG9zaXRpb24gPSBzdGFydDsKKyAgICAgICAgdGhpcy5saW1pdCA9IGxpbWl0OworICAgIH0KKworICAgIHB1YmxpYyBBcnJheUVudW1lcmF0aW9uKGludFtdIGFycmF5LCBpbnQgc3RhcnQsIGludCBsaW1pdCkgeworICAgICAgICB0aGlzLmFycmF5ID0gbmV3IE9iamVjdFthcnJheS5sZW5ndGhdOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB0aGlzLmFycmF5W2ldID0gbmV3IEludGVnZXIoYXJyYXlbaV0pOworICAgICAgICB9CisgICAgICAgIHBvc2l0aW9uID0gc3RhcnQ7CisgICAgICAgIHRoaXMubGltaXQgPSBsaW1pdDsKKyAgICB9CisKKyAgICBwdWJsaWMgQXJyYXlFbnVtZXJhdGlvbihmbG9hdFtdIGFycmF5LCBpbnQgc3RhcnQsIGludCBsaW1pdCkgeworICAgICAgICB0aGlzLmFycmF5ID0gbmV3IE9iamVjdFthcnJheS5sZW5ndGhdOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB0aGlzLmFycmF5W2ldID0gbmV3IEZsb2F0KGFycmF5W2ldKTsKKyAgICAgICAgfQorICAgICAgICBwb3NpdGlvbiA9IHN0YXJ0OworICAgICAgICB0aGlzLmxpbWl0ID0gbGltaXQ7CisgICAgfQorCisgICAgcHVibGljIEFycmF5RW51bWVyYXRpb24oZG91YmxlW10gYXJyYXksIGludCBzdGFydCwgaW50IGxpbWl0KSB7CisgICAgICAgIHRoaXMuYXJyYXkgPSBuZXcgT2JqZWN0W2FycmF5Lmxlbmd0aF07CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHRoaXMuYXJyYXlbaV0gPSBuZXcgRG91YmxlKGFycmF5W2ldKTsKKyAgICAgICAgfQorICAgICAgICBwb3NpdGlvbiA9IHN0YXJ0OworICAgICAgICB0aGlzLmxpbWl0ID0gbGltaXQ7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gaGFzTW9yZUVsZW1lbnRzKCkgeworICAgICAgICAgcmV0dXJuIHBvc2l0aW9uIDwgbGltaXQ7CisgICAgfQorCisgICAgcHVibGljIE9iamVjdCBuZXh0RWxlbWVudCgpIHsKKyAgICAgICAgaWYgKHBvc2l0aW9uIDwgbGltaXQpCisgICAgICAgICAgICByZXR1cm4gYXJyYXlbcG9zaXRpb24rK107CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRocm93IG5ldyBqYXZhLnV0aWwuTm9TdWNoRWxlbWVudEV4Y2VwdGlvbigpOworICAgIH0KKyAgICAvLyBwcml2YXRlcworICAgIHByaXZhdGUgT2JqZWN0W10gYXJyYXk7CisgICAgcHJpdmF0ZSBpbnQgcG9zaXRpb24gPSAwOworICAgIHByaXZhdGUgaW50IGxpbWl0ID0gMDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL0NvbGxhdGlvbkl0ZW0uamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvQ29sbGF0aW9uSXRlbS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmRmMTU0NzEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL0NvbGxhdGlvbkl0ZW0uamF2YQpAQCAtMCwwICsxLDk1IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMi0yMDA0LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL0NvbGxhdGlvbkl0ZW0uamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNToyNiAkIAorICogJFJldmlzaW9uOiAxLjIgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50b29sLmxvY2FsZWNvbnZlcnRlcjsKKworaW1wb3J0IGphdmEuaW8uKjsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworLyoqCisgKiBBIENvbGxhdGlvbkl0ZW0gcmVwcmVzZW50cyBhIHNpbmdsZSBlbnRyeSBpbiBhIGNvbGxhdGlvbiBzZXF1ZW5jZS4KKyAqLworcHVibGljIGNsYXNzIENvbGxhdGlvbkl0ZW0geworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXJbXSBPUF9DSEFSUyA9IHsnPScsICc8JywgJzsnLCAnLCcsICcmJyB9OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXJbXSBTUEVDSUFMX0NIQVJTID0geyAnJicsICdAJyAsICc9JywgJzwnLCAnOycsICcsJyB9OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE5PTkUgPSAwOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBSSU1BUlkgPSAxOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNFQ09OREFSWSA9IDI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVEVSVElBUlkgPSAzOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBGSVJTVCA9IDQ7CisgICAgcHVibGljIGludCBvcDsKKyAgICBwdWJsaWMgU3RyaW5nIGl0ZW07CisgICAgcHVibGljIFN0cmluZyBleHBhbnNpb247CisgICAgcHVibGljIFN0cmluZyBjb21tZW50OworICAgIAorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgQ29sbGF0aW9uSXRlbSBGT1JXQVJEID0gbmV3IENvbGxhdGlvbkl0ZW0oTk9ORSwgIiIpIHsKKyAgICAgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsgcmV0dXJuICIiOyB9CisgICAgfTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIENvbGxhdGlvbkl0ZW0gQkFDS1dBUkQgPSBuZXcgQ29sbGF0aW9uSXRlbShOT05FLCAiIikgeworICAgICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeyByZXR1cm4gIkAiOyB9CisgICAgfTsKKyAgICAKKyAgICBwdWJsaWMgQ29sbGF0aW9uSXRlbShTdHJpbmcgaXRlbSkgeworICAgICAgICB0aGlzLm9wID0gRklSU1Q7CisgICAgICAgIHRoaXMuaXRlbSA9IGNsZWFuU3RyaW5nKGl0ZW0pOworICAgICAgICB0aGlzLmV4cGFuc2lvbiA9ICIiOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgQ29sbGF0aW9uSXRlbShpbnQgb3AsIFN0cmluZyBpdGVtKSB7CisgICAgICAgIHRoaXMob3AsIGl0ZW0sIG51bGwpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgQ29sbGF0aW9uSXRlbShpbnQgb3AsIFN0cmluZyBpdGVtLCBTdHJpbmcgZXhwYW5zaW9uKSB7CisgICAgICAgIHRoaXMub3AgPSBNYXRoLmFicyhvcCk7CisgICAgICAgIGlmICh0aGlzLm9wID4gVEVSVElBUlkpIHRoaXMub3AgPSBURVJUSUFSWTsKKyAgICAgICAgdGhpcy5pdGVtID0gY2xlYW5TdHJpbmcoaXRlbSk7CisgICAgICAgIHRoaXMuZXhwYW5zaW9uID0gY2xlYW5TdHJpbmcoZXhwYW5zaW9uKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgc2V0Q29tbWVudChTdHJpbmcgY29tbWVudCkgeworICAgICAgICB0aGlzLmNvbW1lbnQgPSBjb21tZW50OworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICBTdHJpbmcgaXRlbVN0cmluZyA9IGl0ZW07CisgICAgICAgIGlmIChleHBhbnNpb24ubGVuZ3RoKCkgPT0gMCkgeworICAgICAgICAgICAgcmV0dXJuICIiK09QX0NIQVJTW29wXStpdGVtOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuICImIitleHBhbnNpb24rT1BfQ0hBUlNbb3BdK2l0ZW07CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBTdHJpbmcgY2xlYW5TdHJpbmcoU3RyaW5nIHNvdXJjZSkgeworICAgICAgICBpZiAoc291cmNlID09IG51bGwpIHJldHVybiAiIjsKKyAgICAgICAgU3RyaW5nIHJlc3VsdCA9IHNvdXJjZTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXN1bHQubGVuZ3RoKCk7IGkrKykgeworICAgICAgICAgICAgZmluYWwgY2hhciBjID0gcmVzdWx0LmNoYXJBdChpKTsKKyAgICAgICAgICAgIGlmICgoYyA9PSAnQCcpIHx8IChjID09ICdcdCcpIHx8IChjID09ICdcbicpCisgICAgICAgICAgICAgICAgICAgIHx8IChjID09ICdcZicpIHx8IChjID09J1xyJykgfHwgKGMgPT0gJ1wwMTMnKQorICAgICAgICAgICAgICAgICAgICB8fCAoKGMgPD0gJ1x1MDAyRicpICYmIChjID49ICdcdTAwMjAnKSkKKyAgICAgICAgICAgICAgICAgICAgfHwgKChjIDw9ICdcdTAwM0YnKSAmJiAoYyA+PSAnXHUwMDNBJykpCisgICAgICAgICAgICAgICAgICAgIHx8ICgoYyA8PSAnXHUwMDYwJykgJiYgKGMgPj0gJ1x1MDA1QicpKQorICAgICAgICAgICAgICAgICAgICB8fCAoKGMgPD0gJ1x1MDA3RScpICYmIChjID49ICdcdTAwN0InKSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaSA8IHJlc3VsdC5sZW5ndGgoKS0xKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5zdWJzdHJpbmcoMCwgaSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArICInIiArIGMgKyInIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgcmVzdWx0LnN1YnN0cmluZyhpKzEpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5zdWJzdHJpbmcoMCwgaSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArICInIiArIGMgKyInIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaSArPSAyOyAvL3NraXAgdGhlIHR3byBjaGFyYWN0ZXJzIHdlIGluc2VydGVkCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9Db21wYXJhYmxlLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL0NvbXBhcmFibGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mMWJhZGNhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9Db21wYXJhYmxlLmphdmEKQEAgLTAsMCArMSwyMCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAwNCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9Db21wYXJhYmxlLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDIvMTYgMDM6MDU6MjYgJCAKKyAqICRSZXZpc2lvbjogMS4yICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudG9vbC5sb2NhbGVjb252ZXJ0ZXI7CisKK3B1YmxpYyBpbnRlcmZhY2UgQ29tcGFyYWJsZSB7CisgICAgLyoqCisgICAgICAgIHJldHVybnMgMCBpZiBvYmplY3RzIGFyZSBlcXVhbCwgLTEgaWYgYSBpcyBsZXNzIHRoYW4gYiwgMSBvdGhlcndpc2UuCisgICAgKi8KKyAgICBwdWJsaWMgaW50IGNvbXBhcmVUbyhPYmplY3QgYik7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9Db21wYXJhdG9yLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL0NvbXBhcmF0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hODNhOTQyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9Db21wYXJhdG9yLmphdmEKQEAgLTAsMCArMSwyMCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAwNCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9Db21wYXJhdG9yLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDIvMTYgMDM6MDU6MjYgJCAKKyAqICRSZXZpc2lvbjogMS4yICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudG9vbC5sb2NhbGVjb252ZXJ0ZXI7CisKK3B1YmxpYyBpbnRlcmZhY2UgQ29tcGFyYXRvciB7CisgICAgLyoqCisgICAgICAgIHJldHVybnMgMCBpZiBvYmplY3RzIGFyZSBlcXVhbCwgLTEgaWYgYSBpcyBsZXNzIHRoYW4gYiwgMSBvdGhlcndpc2UuCisgICAgKi8KKyAgICBwdWJsaWMgaW50IGNvbXBhcmUoT2JqZWN0IGEsIE9iamVjdCBiKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvQ29tcGxleFRyYW5zaXRpb24uamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvQ29tcGxleFRyYW5zaXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42MTMwNGRiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9Db21wbGV4VHJhbnNpdGlvbi5qYXZhCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMDQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvQ29tcGxleFRyYW5zaXRpb24uamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNToyNiAkIAorICogJFJldmlzaW9uOiAxLjIgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50b29sLmxvY2FsZWNvbnZlcnRlcjsKKworaW1wb3J0IGphdmEuaW8uKjsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworLyoqCisgKiBBIENvbXBsZXhUcmFuc2l0aW9uIGlzIGNvbmNlcHR1YWxseSBhIHNpbmdsZSB0cmFuc2l0aW9uIHRoYXQKKyAqIGNvbnN1bWVzIG11bHRpcGxlIGlucHV0IGNoYXJhY3RlcnMuCisgKi8KK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBDb21wbGV4VHJhbnNpdGlvbiBpbXBsZW1lbnRzIExleC5UcmFuc2l0aW9uIHsKKyAgICAgICAgLy90aGUgdmFsdWUgdGhhdCBpcyByZXR1cm5lZCBieSBzdWJjbGFzc2VzIGluZGljYXRpbmcgdGhhdAorICAgICAgICAvL3RoZSB0cmFuc2l0aW9uIHdhcyBzdWNjZXNzZnVsbC4gIFRoaXMgdmFsdWUgaXMgdGhlbgorICAgICAgICAvL2Rpc2NhcmRlZCBhbmQgdGhlIHZhbHVlIHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3IKKyAgICAgICAgLy9pcyB0aGVuIHJldHVybmVkIHRvIHRoZSBjYWxsZXIuCisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgU1VDQ0VTUyA9IExleC5FTkRfT0ZfRklMRSAtIDE7CisgICAgcHJpdmF0ZSBpbnQgc3VjY2VzczsgICAgLy92YWx1ZSB0byByZXR1cm4gaWYgc3VjY2Vzc2Z1bGwKKyAgICBwcml2YXRlIExleCBwYXJzZXI7ICAgICAvL3RoZSBwYXJzZXIgdXNlZCBmb3IgdGhpcyB0cmFuc2l0aW9uCisgICAgICAgIAorICAgIHB1YmxpYyBDb21wbGV4VHJhbnNpdGlvbihpbnQgc3VjY2VzcykgeworICAgICAgICB0aGlzLnN1Y2Nlc3MgPSBzdWNjZXNzOworICAgICAgICB0aGlzLnBhcnNlciA9IG5ldyBMZXgobnVsbCk7CisgICAgICAgIC8vdGhpcy5wYXJzZXIuZGVidWcodHJ1ZSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBpbnQgZG9BY3Rpb24oaW50IGMsIFB1c2hiYWNrUmVhZGVyIGlucHV0LCBTdHJpbmdCdWZmZXIgYnVmZmVyKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBpbnB1dC51bnJlYWQoYyk7CisgICAgICAgIHBhcnNlci5zZXRTdGF0ZXMoZ2V0U3RhdGVzKCkpOworICAgICAgICBwYXJzZXIuc2V0SW5wdXQoaW5wdXQpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgaW50IHMgPSBwYXJzZXIubmV4dFRva2VuKCk7CisgICAgICAgICAgICBoYW5kbGVTdWNjZXNzKHBhcnNlciwgYnVmZmVyKTsKKyAgICAgICAgICAgIHJldHVybiBzdWNjZXNzOworICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBoYW5kbGVGYWlsdXJlKHBhcnNlciwgYnVmZmVyKTsKKyAgICAgICAgICAgIHRocm93IGU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAgICAgLy9jYWxsZWQgYWZ0ZXIgYSBzdWNjZXNzZnVsIHBhcnNlCisgICAgcHJvdGVjdGVkIHZvaWQgaGFuZGxlU3VjY2VzcyhMZXggcGFyc2VyLCBTdHJpbmdCdWZmZXIgb3V0cHV0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBwYXJzZXIuYXBwZW5kRGF0YVRvKG91dHB1dCk7CisgICAgfQorICAgIAorICAgICAgICAvL2NhbGxlZCBhZnRlciBhIGZhaWxlZCBwYXJzZQorICAgIHByb3RlY3RlZCB2b2lkIGhhbmRsZUZhaWx1cmUoTGV4IHBhcnNlciwgU3RyaW5nQnVmZmVyIG91dHB1dCkgeworICAgIH0KKyAgICAKKyAgICAgICAgLy9zdWJjbGFzc2VzIHNob3VsZCByZXR1cm4gdGhlIHN0YXRlcyB0byB1c2UgdG8gcGFyc2UgdGhpcworICAgICAgICAvL3RyYW5zaXRpb24KKyAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgTGV4LlRyYW5zaXRpb25bXVtdIGdldFN0YXRlcygpOworCisgICAgcHVibGljIENvbXBsZXhUcmFuc2l0aW9uIGRlYnVnKGJvb2xlYW4gZGVidWcpIHsKKyAgICAgICAgcGFyc2VyLmRlYnVnKGRlYnVnKTsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBDb21wbGV4VHJhbnNpdGlvbiBkZWJ1Zyhib29sZWFuIGRlYnVnLCBTdHJpbmcgdGFnKSB7CisgICAgICAgIHBhcnNlci5kZWJ1ZyhkZWJ1ZywgdGFnKTsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9Db252ZXJ0QWxsSmF2YUxvY2FsZXMuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvQ29udmVydEFsbEphdmFMb2NhbGVzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZDIzZThkNwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvQ29udmVydEFsbEphdmFMb2NhbGVzLmphdmEKQEAgLTAsMCArMSwxMDEgQEAKKy8qKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMi0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL0NvbnZlcnRBbGxKYXZhTG9jYWxlcy5qYXZhLHYgJAorICogJERhdGU6IDIwMDIvMTIvMTggMDM6NTY6NDAgJAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudG9vbC5sb2NhbGVjb252ZXJ0ZXI7CisKK2ltcG9ydCBqYXZhLmlvLio7CitpbXBvcnQgamF2YS51dGlsLio7CisKKy8qKgorCitUaGUgQ29udmVydEphdmFMb2NhbGUgYXBwbGljYXRpb24gY29udmVydHMgamF2YSBsb2NhbGVzIHRvIAorSmF2YSBhbmQgSUNVIExvY2FsZSBmaWxlcy4gIEl0J3MgdXNhZ2UgaXMgYXMgZm9sbG93cworCisgICAgQ29udmVydEphdmFMb2NhbGUgWy0xMV0gWy0xMl0gWy1pY3VdIGxvY2FsZS4uLgorCitVc2FnZQorCistMTEKKyAgICBJZiB0aGlzIG9wdGlvbiBpcyBzcGVjaWZpZWQsIGRhdGEgaXMgb3V0cHV0IGluIAorICAgIEphdmEgMS4xLnggbG9jYWxlIGZvcm1hdC4KKyAgICAKKy0xMgorICAgIElmIHRoaXMgb3B0aW9uIGlzIHNwZWNpZmllZCwgZGF0YSBpcyBvdXRwdXQgaW4KKyAgICBKYXZhIDEuMi54IGxvY2FsZSBmb3JtYXQuICBJZiBhbiBvdXRwdXQgZm9ybWF0CisgICAgaXMgbm90IHNwZWNpZmllZCwgLTEyIGlzIHRoZSBkZWZhdWx0LgorICAgIAorLWljdQorICAgIElmIHRoaXMgb3B0aW9uIGlzIHNwZWNpZmllZCwgZGF0YSBpcyBvdXRwdXQgaW4KKyAgICBJQ1UgbG9jYWxlIGZvcm1hdC4KKworbG9jYWxlCisgICAgVGhlIGxvY2FsZSB0byBjb252ZXJ0CisKKworKi8KK2ltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC4qOworLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAwNCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9Db252ZXJ0QWxsSmF2YUxvY2FsZXMuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8xMi8xOCAwMzo1Njo0MCAkIAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwdWJsaWMgY2xhc3MgQ29udmVydEFsbEphdmFMb2NhbGVzIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgYXJnc1tdKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBuZXcgQ29udmVydEFsbEphdmFMb2NhbGVzKGFyZ3MpOworICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgdCkgeworICAgICAgICAgICAgU3lzdGVtLmVyci5wcmludGxuKCJVbmtub3duIGVycm9yOiAiK3QpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHB1YmxpYyBDb252ZXJ0QWxsSmF2YUxvY2FsZXMoU3RyaW5nIGFyZ3NJbltdKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBTdHJpbmcgcGFja2FnZU5hbWUgPSBhcmdzSW5bMF07CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRoaXMgaXMgdGhlIHBhY2thZ2VuYW1lIDogIitwYWNrYWdlTmFtZSk7CisgICAgICAgICAgICBTdHJpbmcgY2xhc3NuYW1lID0gcGFja2FnZU5hbWUrIi5Mb2NhbGUiOworICAgICAgICAgICAgLy9jbGFzc25hbWUuY29uY2F0KCk7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRoaXMgaXMgdGhlIGNsYXNzbmFtZSA6ICIrY2xhc3NuYW1lKTsKKyAgICAgICAgICAvKiAgQ2xhc3MgY2wgPSBDbGFzcy5mb3JOYW1lKGNsYXNzbmFtZSk7CisgICAgICAgICAgICBDbGFzc1tdIHBhcmFtTGlzdD1udWxsOworICAgICAgICAgICAgTWV0aG9kIGd2bCA9IGNsLmdldE1ldGhvZCgiZ2V0QXZhaWxhYmxlTG9jYWxlcyIsIHBhcmFtTGlzdCk7CisgICAgICAgICAgICBPYmplY3RbXSBwYXJhbXMgPSBuZXcgT2JqZWN0W117IiJ9OworICAgICAgICAgICAgZ3ZsLmludm9rZShudWxsLHBhcmFtcyk7Ki8KKyAgICAgICAgICAgIGZpbmFsIExvY2FsZVtdIGxvY2FsZXMgPSBqYXZhLnV0aWwuTG9jYWxlLmdldEF2YWlsYWJsZUxvY2FsZXMoKTsvLyhMb2NhbGVbXSlndmwuaW52b2tlKG51bGwscGFyYW1zKTs7CisgICAgICAgCisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxvY2FsZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgbG9jYWxlTmFtZSA9IGxvY2FsZXNbaV0udG9TdHJpbmcoKTsKKyAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmdbXSBhcmdzID0geyItcGFja2FnZSIscGFja2FnZU5hbWUsIi1pY3UiLCBsb2NhbGVOYW1lfTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkNvbnZlcnRpbmcgIitsb2NhbGVOYW1lKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBmaW5hbCBGaWxlT3V0cHV0U3RyZWFtIG91dEZpbGUgPSBuZXcgRmlsZU91dHB1dFN0cmVhbSgiSUNVTG9jYWxlXyIrbG9jYWxlTmFtZSk7CisgICAgICAgICAgICAgICAgZmluYWwgUHJpbnRTdHJlYW0gb3V0ID0gbmV3IFByaW50U3RyZWFtKG91dEZpbGUsIHRydWUpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG5ldyBDb252ZXJ0SmF2YUxvY2FsZShhcmdzLCBvdXQpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG91dC5jbG9zZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBTeXN0ZW0uZXJyLnByaW50bG4oIlVuZXhwZWN0ZWQgSU8gZXJyb3IiKTsKKyAgICAgICAgfWNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvQ29udmVydElDVUxpc3RSZXNvdXJjZUJ1bmRsZS5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9Db252ZXJ0SUNVTGlzdFJlc291cmNlQnVuZGxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTM4YTBhZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvQ29udmVydElDVUxpc3RSZXNvdXJjZUJ1bmRsZS5qYXZhCkBAIC0wLDAgKzEsMTY4IEBACisvKioKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogQ29weXJpZ2h0IChDKSAyMDAyLTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogJFNvdXJjZTogICQgCisqICREYXRlOiAgJCAKKyogJFJldmlzaW9uOiAgJAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRvb2wubG9jYWxlY29udmVydGVyOworCitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGphdmEudXRpbC4qOworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuSUNVTGlzdFJlc291cmNlQnVuZGxlOworLyoqCisgKiBAYXV0aG9yIHJhbQorICoKKyAqIFRvIGNoYW5nZSB0aGlzIGdlbmVyYXRlZCBjb21tZW50IGVkaXQgdGhlIHRlbXBsYXRlIHZhcmlhYmxlICJ0eXBlY29tbWVudCI6CisgKiBXaW5kb3c+UHJlZmVyZW5jZXM+SmF2YT5UZW1wbGF0ZXMuCisgKiBUbyBlbmFibGUgYW5kIGRpc2FibGUgdGhlIGNyZWF0aW9uIG9mIHR5cGUgY29tbWVudHMgZ28gdG8KKyAqIFdpbmRvdz5QcmVmZXJlbmNlcz5KYXZhPkNvZGUgR2VuZXJhdGlvbi4KKyAqLworcHVibGljIGNsYXNzIENvbnZlcnRJQ1VMaXN0UmVzb3VyY2VCdW5kbGUgeworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJ5dGUgT1BUXzExID0gKGJ5dGUpMHgwMTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIE9QVF8xMiA9IChieXRlKTB4MDI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYnl0ZSBPUFRfSUNVID0gKGJ5dGUpMHgwNDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIE9QVF9QQUNLQUdFID0gKGJ5dGUpMHgwODsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIE9QVF9CVU5ETEUgPSAoYnl0ZSkweDEwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJ5dGUgT1BUX1VOS05PV04gPSAoYnl0ZSkweDgwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBVU0VSX09QVElPTlNbXSA9IHsKKyAgICAgICAgIi0xMSIsIAorICAgICAgICAiLTEyIiwgCisgICAgICAgICItaWN1IiwKKyAgICAgICAgIi1wYWNrYWdlIiwKKyAgICAgICAgIi1idW5kbGUtbmFtZSIKKyAgICB9OworICAgIAorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZyBhcmdzW10pIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG5ldyBDb252ZXJ0SUNVTGlzdFJlc291cmNlQnVuZGxlKGFyZ3MsIFN5c3RlbS5vdXQpOworICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgdCkgeworICAgICAgICAgICAgU3lzdGVtLmVyci5wcmludGxuKCJVbmtub3duIGVycm9yOiAiK3QpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHB1YmxpYyBDb252ZXJ0SUNVTGlzdFJlc291cmNlQnVuZGxlKFN0cmluZyBhcmdzW10sIFByaW50U3RyZWFtIG91dCkgeworICAgICAgICBwcm9jZXNzKGFyZ3MsIG91dCk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIHByb2Nlc3MoU3RyaW5nIGFyZ3NbXSwgUHJpbnRTdHJlYW0gb3V0KSB7CisgICAgICAgIHNob3J0IG9wdGlvbnMgPSBpZGVudGlmeU9wdGlvbnMoYXJncyk7CisgICAgICAgIGlmICgoYXJncy5sZW5ndGggPCAxKSB8fCAoKG9wdGlvbnMgJiBPUFRfVU5LTk9XTikgIT0gMCkpIHsKKyAgICAgICAgICAgIHByaW50VXNhZ2UoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFN0cmluZyBsb2NhbGVOYW1lID0gbnVsbDsKKyAgICAgICAgICAgIFN0cmluZyBwYWNrYWdlbmFtZSA9IG51bGw7CisgICAgICAgICAgICBTdHJpbmcgYnVuZGxlTmFtZSA9IG51bGw7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgdGhpc0FyZyA9IGFyZ3NbaV07CisgICAgICAgICAgICAgICAgaWYoYXJnc1tpXS5lcXVhbHNJZ25vcmVDYXNlKCItcGFja2FnZSIpKXsKKyAgICAgICAgICAgICAgICAgICBpKys7CisgICAgICAgICAgICAgICAgICAgcGFja2FnZW5hbWUgPSBhcmdzW2ldOworICAgICAgICAgICAgICAgIH1lbHNlIGlmKGFyZ3NbaV0uZXF1YWxzSWdub3JlQ2FzZSgiLWljdSIpKXsKKyAgICAgICAgICAgICAgICB9ZWxzZSBpZiAoIWFyZ3NbaV0uc3RhcnRzV2l0aCgiLSIpKSB7CisgICAgICAgICAgICAgICAgICAgIGxvY2FsZU5hbWUgPSBhcmdzW2ldOworICAgICAgICAgICAgICAgIH1lbHNlIGlmKGFyZ3NbaV0uZXF1YWxzSWdub3JlQ2FzZSgiLWJ1bmRsZS1uYW1lIikpeworICAgICAgICAgICAgICAgICAgICBidW5kbGVOYW1lID0gYXJnc1srK2ldOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZpbmFsIEhhc2h0YWJsZSBkYXRhID0gbmV3IEhhc2h0YWJsZSgpOworICAgICAgICAgICAgZmluYWwgU3RyaW5nIGxvY2FsZUVsZW1lbnRzID0gcGFja2FnZW5hbWUKKyAgICAgICAgICAgICAgICAgICAgKyAoU3RyaW5nKSgoYnVuZGxlTmFtZSAhPSBudWxsKSA/ICIuIisgYnVuZGxlTmFtZSA6ICIuTG9jYWxlRWxlbWVudHMiICkKKyAgICAgICAgICAgICAgICAgICAgKyAoU3RyaW5nKSgobG9jYWxlTmFtZSAhPSBudWxsKSA/ICJfIisgbG9jYWxlTmFtZSA6ICIiKTsKKyAgICAgICAgICAgIGZpbmFsIFN0cmluZyBEYXRlRm9ybWF0Wm9uZURhdGEgPSBwYWNrYWdlbmFtZSsiLkRhdGVGb3JtYXRab25lRGF0YSIgKworICAgICAgICAgICAgICAgICAgICAoU3RyaW5nKSgobG9jYWxlTmFtZSAhPSBudWxsKSA/ICJfIitsb2NhbGVOYW1lIDogIiIpOworICAgICAgICAgICAgYWRkTG9jYWxlRGF0YShsb2NhbGVFbGVtZW50cywgZGF0YSk7CisgICAgICAgICAgICAvL2FkZExvY2FsZURhdGEoRGF0ZUZvcm1hdFpvbmVEYXRhLCBkYXRhKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTG9jYWxlIGxvY2FsZTsKKyAgICAgICAgICAgIGlmKGxvY2FsZU5hbWU9PW51bGwpeworICAgICAgICAgICAgICAgIGxvY2FsZSA9IGxvY2FsZUZyb21TdHJpbmcoInJvb3QiKTsKKyAgICAgICAgICAgIH1lbHNleworICAgICAgICAgICAgICAgIGxvY2FsZSA9IGxvY2FsZUZyb21TdHJpbmcobG9jYWxlTmFtZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoKG9wdGlvbnMgJiBPUFRfMTEpICE9IDApIHsKKyAgICAgICAgICAgICAgICBuZXcgSmF2YTFMb2NhbGVXcml0ZXIob3V0LCBTeXN0ZW0uZXJyKS53cml0ZShsb2NhbGUsIGRhdGEpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKChvcHRpb25zICYgT1BUXzEyKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgbmV3IEphdmFMb2NhbGVXcml0ZXIob3V0LCBTeXN0ZW0uZXJyKS53cml0ZShsb2NhbGUsIGRhdGEpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKChvcHRpb25zICYgT1BUX0lDVSkgIT0gMCkgeworICAgICAgICAgICAgICAgICBuZXcgSUNVM0xvY2FsZVdyaXRlcihnZXRCdW5kbGUobG9jYWxlRWxlbWVudHMpLG91dCwgU3lzdGVtLmVycikud3JpdGUobG9jYWxlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwcml2YXRlIExpc3RSZXNvdXJjZUJ1bmRsZSBnZXRCdW5kbGUoZmluYWwgU3RyaW5nIGJ1bmRsZUNsYXNzTmFtZSl7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmaW5hbCBDbGFzcyBidW5kbGVDbGFzcyA9IENsYXNzLmZvck5hbWUoYnVuZGxlQ2xhc3NOYW1lKTsKKyAgICAgICAgICAgIGZpbmFsIExpc3RSZXNvdXJjZUJ1bmRsZSBidW5kbGUgPSAoTGlzdFJlc291cmNlQnVuZGxlKWJ1bmRsZUNsYXNzLm5ld0luc3RhbmNlKCk7CisgICAgICAgICAgICByZXR1cm4gYnVuZGxlOworCisgICAgICAgIH0gY2F0Y2ggKENsYXNzTm90Rm91bmRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgU3lzdGVtLmVyci5wcmludGxuKCJDb3VsZCBub3QgZmluZCBidW5kbGUgY2xhc3MgZm9yIGJ1bmRsZTogIitidW5kbGVDbGFzc05hbWUpOworICAgICAgICB9IGNhdGNoIChJbnN0YW50aWF0aW9uRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIFN5c3RlbS5lcnIucHJpbnRsbigiQ291bGQgbm90IGNyZWF0ZSBidW5kbGUgaW5zdGFuY2UgZm9yIGJ1bmRsZTogIitidW5kbGVDbGFzc05hbWUpOworICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIFN5c3RlbS5lcnIucHJpbnRsbigiQ291bGQgbm90IGNyZWF0ZSBidW5kbGUgaW5zdGFuY2UgZm9yIGJ1bmRsZTogIitidW5kbGVDbGFzc05hbWUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICBwcml2YXRlIHZvaWQgYWRkTG9jYWxlRGF0YShmaW5hbCBTdHJpbmcgYnVuZGxlQ2xhc3NOYW1lLCBmaW5hbCBIYXNodGFibGUgZGF0YSkgeworICAgICAgICBSZXNvdXJjZUJ1bmRsZSBidW5kbGUgPSBnZXRCdW5kbGUoYnVuZGxlQ2xhc3NOYW1lKTsKKyAgICAgICAgRW51bWVyYXRpb24ga2V5cyA9IGJ1bmRsZS5nZXRLZXlzKCk7CisgICAgICAgIHdoaWxlKGtleXMuaGFzTW9yZUVsZW1lbnRzKCkpeworICAgICAgICAgICAgU3RyaW5nIGtleSA9IChTdHJpbmcpIGtleXMubmV4dEVsZW1lbnQoKTsKKyAgICAgICAgICAgIE9iamVjdCBvID0gYnVuZGxlLmdldE9iamVjdChrZXkpOworICAgICAgICAgICAgZGF0YS5wdXQoa2V5LCBvKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHZvaWQgcHJpbnRVc2FnZSgpIHsKKyAgICAgICAgU3lzdGVtLmVyci5wcmludGxuKCJVc2FnZTogQ29udmVydElDVUxpc3RSZXNvdXJjZUJ1bmRsZSBbLTExXSBbLTEyXSBbLWljdV0gWy1wYWNrYWdlXSA8cGFja2FnZSBuYW1lPiBbLWJ1bmRsZS1uYW1lXSA8YnVuZGxlIG5hbWU+IGxvY2FsZU5hbWUiKTsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBzaG9ydCBpZGVudGlmeU9wdGlvbnMoU3RyaW5nW10gb3B0aW9ucykgeworICAgICAgICBzaG9ydCByZXN1bHQgPSAwOworICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG9wdGlvbnMubGVuZ3RoOyBqKyspIHsKKyAgICAgICAgICAgIFN0cmluZyBvcHRpb24gPSBvcHRpb25zW2pdOworICAgICAgICAgICAgaWYgKG9wdGlvbi5zdGFydHNXaXRoKCItIikpIHsKKyAgICAgICAgICAgICAgICBib29sZWFuIG9wdGlvblJlY29nbml6ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBmb3IgKHNob3J0IGkgPSAwOyBpIDwgVVNFUl9PUFRJT05TLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChVU0VSX09QVElPTlNbaV0uZXF1YWxzKG9wdGlvbikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCB8PSAoc2hvcnQpKDEgPDwgaSk7CisgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25SZWNvZ25pemVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICghb3B0aW9uUmVjb2duaXplZCkgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQgfD0gT1BUX1VOS05PV047CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgTG9jYWxlIGxvY2FsZUZyb21TdHJpbmcoZmluYWwgU3RyaW5nIGxvY2FsZU5hbWUpIHsKKyAgICAgICAgaWYgKGxvY2FsZU5hbWUgPT0gbnVsbCkgcmV0dXJuIG5ldyBMb2NhbGUoIiIsICIiLCAiIik7CisgICAgICAgIFN0cmluZyBsYW5ndWFnZSA9IGxvY2FsZU5hbWU7CisgICAgICAgIFN0cmluZyBjb3VudHJ5ID0gIiI7CisgICAgICAgIFN0cmluZyB2YXJpYW50ID0gIiI7CisgICAgICAgIAorICAgICAgICBpbnQgbmR4ID0gbGFuZ3VhZ2UuaW5kZXhPZignXycpOworICAgICAgICBpZiAobmR4ID49IDApIHsKKyAgICAgICAgICAgIGNvdW50cnkgPSBsYW5ndWFnZS5zdWJzdHJpbmcobmR4KzEpOworICAgICAgICAgICAgbGFuZ3VhZ2UgPSBsYW5ndWFnZS5zdWJzdHJpbmcoMCwgbmR4KTsKKyAgICAgICAgfQorICAgICAgICBuZHggPSBjb3VudHJ5LmluZGV4T2YoJ18nKTsKKyAgICAgICAgaWYgKG5keCA+PSAwKSB7CisgICAgICAgICAgICB2YXJpYW50ID0gY291bnRyeS5zdWJzdHJpbmcobmR4KzEpOworICAgICAgICAgICAgY291bnRyeSA9IGNvdW50cnkuc3Vic3RyaW5nKDAsIG5keCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG5ldyBMb2NhbGUobGFuZ3VhZ2UsIGNvdW50cnksIHZhcmlhbnQpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvQ29udmVydEphdmFMb2NhbGUuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvQ29udmVydEphdmFMb2NhbGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wY2UxMjZjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9Db252ZXJ0SmF2YUxvY2FsZS5qYXZhCkBAIC0wLDAgKzEsMTk2IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMi0yMDA0LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL0NvbnZlcnRKYXZhTG9jYWxlLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMTIvMTIgMDI6MDg6NDYgJCAKKyAqICRSZXZpc2lvbjogMS4zICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudG9vbC5sb2NhbGVjb252ZXJ0ZXI7CisKK2ltcG9ydCBqYXZhLmlvLio7CitpbXBvcnQgamF2YS51dGlsLio7CisKKy8qKgorCitUaGUgQ29udmVydEphdmFMb2NhbGUgYXBwbGljYXRpb24gY29udmVydHMgamF2YSBsb2NhbGVzIHRvIAorSmF2YSBhbmQgSUNVIExvY2FsZSBmaWxlcy4gIEl0J3MgdXNhZ2UgaXMgYXMgZm9sbG93cworCisgICAgQ29udmVydEphdmFMb2NhbGUgWy0xMV0gWy0xMl0gWy1pY3VdIFstcGFja2FnZV0gbG9jYWxlLi4uCisKK1VzYWdlCisKKy0xMQorICAgIElmIHRoaXMgb3B0aW9uIGlzIHNwZWNpZmllZCwgZGF0YSBpcyBvdXRwdXQgaW4gCisgICAgSmF2YSAxLjEueCBsb2NhbGUgZm9ybWF0LgorICAgIAorLTEyCisgICAgSWYgdGhpcyBvcHRpb24gaXMgc3BlY2lmaWVkLCBkYXRhIGlzIG91dHB1dCBpbgorICAgIEphdmEgMS4yLnggbG9jYWxlIGZvcm1hdC4gIElmIGFuIG91dHB1dCBmb3JtYXQKKyAgICBpcyBub3Qgc3BlY2lmaWVkLCAtMTIgaXMgdGhlIGRlZmF1bHQuCisgICAgCistaWN1CisgICAgSWYgdGhpcyBvcHRpb24gaXMgc3BlY2lmaWVkLCBkYXRhIGlzIG91dHB1dCBpbgorICAgIElDVSBsb2NhbGUgZm9ybWF0LgorCitsb2NhbGUKKyAgICBUaGUgbG9jYWxlIHRvIGNvbnZlcnQKKworCisqLworCitwdWJsaWMgY2xhc3MgQ29udmVydEphdmFMb2NhbGUgeworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJ5dGUgT1BUXzExID0gKGJ5dGUpMHgwMTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIE9QVF8xMiA9IChieXRlKTB4MDI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYnl0ZSBPUFRfSUNVID0gKGJ5dGUpMHgwNDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIE9QVF9QQUNLQUdFID0gKGJ5dGUpMHgwODsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIE9QVF9VTktOT1dOID0gKGJ5dGUpMHg4MDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVVNFUl9PUFRJT05TW10gPSB7CisgICAgICAgICItMTEiLCAKKyAgICAgICAgIi0xMiIsIAorICAgICAgICAiLWljdSIsCisgICAgICAgICItcGFja2FnZSIKKyAgICB9OworICAgIAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZ1tdIHRhZ3MgPSB7CisgICAgICAgICJMb2NhbGVTdHJpbmciLAorICAgICAgICAiTG9jYWxlSUQiLAorICAgICAgICAiU2hvcnRMYW5ndWFnZSIsCisgICAgICAgICJTaG9ydENvdW50cnkiLAorICAgICAgICAiTGFuZ3VhZ2VzIiwKKyAgICAgICAgIkNvdW50cmllcyIsCisgICAgICAgICJNb250aE5hbWVzIiwKKyAgICAgICAgIk1vbnRoQWJicmV2aWF0aW9ucyIsCisgICAgICAgICJEYXlOYW1lcyIsCisgICAgICAgICJEYXlBYmJyZXZpYXRpb25zIiwKKyAgICAgICAgIkFtUG1NYXJrZXJzIiwKKyAgICAgICAgIkVyYXMiLAorICAgICAgICAiTnVtYmVyUGF0dGVybnMiLAorICAgICAgICAiTnVtYmVyRWxlbWVudHMiLAorICAgICAgICAiQ3VycmVuY3lFbGVtZW50cyIsCisgICAgICAgICJEYXRlVGltZVBhdHRlcm5zIiwKKyAgICAgICAgIkRhdGVUaW1lRWxlbWVudHMiLCAgIAorICAgICAgICAiQ29sbGF0aW9uRWxlbWVudHMiLAorICAgICAgICAiem9uZVN0cmluZ3MiLAorICAgICAgICAibG9jYWxQYXR0ZXJuQ2hhcnMiLAorICAgIH07CisKKworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIGFyZ3NbXSkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgbmV3IENvbnZlcnRKYXZhTG9jYWxlKGFyZ3MsIFN5c3RlbS5vdXQpOworICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgdCkgeworICAgICAgICAgICAgU3lzdGVtLmVyci5wcmludGxuKCJVbmtub3duIGVycm9yOiAiK3QpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHB1YmxpYyBDb252ZXJ0SmF2YUxvY2FsZShTdHJpbmcgYXJnc1tdLCBQcmludFN0cmVhbSBvdXQpIHsKKyAgICAgICAgcHJvY2VzcyhhcmdzLCBvdXQpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBwcm9jZXNzKFN0cmluZyBhcmdzW10sIFByaW50U3RyZWFtIG91dCkgeworICAgICAgICBzaG9ydCBvcHRpb25zID0gaWRlbnRpZnlPcHRpb25zKGFyZ3MpOworICAgICAgICBpZiAoKGFyZ3MubGVuZ3RoIDwgMSkgfHwgKChvcHRpb25zICYgT1BUX1VOS05PV04pICE9IDApKSB7CisgICAgICAgICAgICBwcmludFVzYWdlKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBTdHJpbmcgbG9jYWxlTmFtZSA9IG51bGw7CisgICAgICAgICAgICBTdHJpbmcgcGFja2FnZW5hbWUgPSBudWxsOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nIHRoaXNBcmcgPSBhcmdzW2ldOworICAgICAgICAgICAgICAgIGlmKGFyZ3NbaV0uZXF1YWxzSWdub3JlQ2FzZSgiLXBhY2thZ2UiKSl7CisgICAgICAgICAgICAgICAgICAgaSsrOworICAgICAgICAgICAgICAgICAgIHBhY2thZ2VuYW1lID0gYXJnc1tpXTsKKyAgICAgICAgICAgICAgICB9ZWxzZSBpZihhcmdzW2ldLmVxdWFsc0lnbm9yZUNhc2UoIi1pY3UiKSl7CisgICAgICAgICAgICAgICAgfWVsc2UgaWYgKCFhcmdzW2ldLnN0YXJ0c1dpdGgoIi0iKSkgeworICAgICAgICAgICAgICAgICAgICBsb2NhbGVOYW1lID0gYXJnc1tpXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmaW5hbCBIYXNodGFibGUgZGF0YSA9IG5ldyBIYXNodGFibGUoKTsKKyAgICAgICAgICAgIGZpbmFsIFN0cmluZyBsb2NhbGVFbGVtZW50cyA9IHBhY2thZ2VuYW1lKyIuTG9jYWxlRWxlbWVudHMiICsKKyAgICAgICAgICAgICAgICAgICAgKFN0cmluZykoKGxvY2FsZU5hbWUgIT0gbnVsbCkgPyAiXyIrbG9jYWxlTmFtZSA6ICIiKTsKKyAgICAgICAgICAgIGZpbmFsIFN0cmluZyBEYXRlRm9ybWF0Wm9uZURhdGEgPSBwYWNrYWdlbmFtZSsiLkRhdGVGb3JtYXRab25lRGF0YSIgKworICAgICAgICAgICAgICAgICAgICAoU3RyaW5nKSgobG9jYWxlTmFtZSAhPSBudWxsKSA/ICJfIitsb2NhbGVOYW1lIDogIiIpOworICAgICAgICAgICAgYWRkTG9jYWxlRGF0YShsb2NhbGVFbGVtZW50cywgZGF0YSk7CisgICAgICAgICAgICBhZGRMb2NhbGVEYXRhKERhdGVGb3JtYXRab25lRGF0YSwgZGF0YSk7CisgICAgICAgICAgICBmaW5hbCBMb2NhbGUgbG9jYWxlID0gbG9jYWxlRnJvbVN0cmluZyhsb2NhbGVOYW1lKTsKKyAgICAgICAgICAgIGlmICgob3B0aW9ucyAmIE9QVF8xMSkgIT0gMCkgeworICAgICAgICAgICAgICAgIG5ldyBKYXZhMUxvY2FsZVdyaXRlcihvdXQsIFN5c3RlbS5lcnIpLndyaXRlKGxvY2FsZSwgZGF0YSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoKG9wdGlvbnMgJiBPUFRfMTIpICE9IDApIHsKKyAgICAgICAgICAgICAgICBuZXcgSmF2YUxvY2FsZVdyaXRlcihvdXQsIFN5c3RlbS5lcnIpLndyaXRlKGxvY2FsZSwgZGF0YSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoKG9wdGlvbnMgJiBPUFRfSUNVKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgbmV3IElDVUxvY2FsZVdyaXRlcihvdXQsIFN5c3RlbS5lcnIpLndyaXRlKGxvY2FsZSwgZGF0YSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgYWRkTG9jYWxlRGF0YShmaW5hbCBTdHJpbmcgYnVuZGxlQ2xhc3NOYW1lLCBmaW5hbCBIYXNodGFibGUgZGF0YSkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgZmluYWwgQ2xhc3MgYnVuZGxlQ2xhc3MgPSBDbGFzcy5mb3JOYW1lKGJ1bmRsZUNsYXNzTmFtZSk7CisgICAgICAgICAgICBmaW5hbCBSZXNvdXJjZUJ1bmRsZSBidW5kbGUgPSAoUmVzb3VyY2VCdW5kbGUpYnVuZGxlQ2xhc3MubmV3SW5zdGFuY2UoKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGFncy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIGZpbmFsIE9iamVjdCByZXNvdXJjZSA9IGJ1bmRsZS5nZXRPYmplY3QodGFnc1tpXSk7CisgICAgICAgICAgICAgICAgICAgIGRhdGEucHV0KHRhZ3NbaV0sIHJlc291cmNlKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChNaXNzaW5nUmVzb3VyY2VFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBjYXRjaCAoQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBTeXN0ZW0uZXJyLnByaW50bG4oIkNvdWxkIG5vdCBmaW5kIGJ1bmRsZSBjbGFzcyBmb3IgYnVuZGxlOiAiK2J1bmRsZUNsYXNzTmFtZSk7CisgICAgICAgIH0gY2F0Y2ggKEluc3RhbnRpYXRpb25FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgU3lzdGVtLmVyci5wcmludGxuKCJDb3VsZCBub3QgY3JlYXRlIGJ1bmRsZSBpbnN0YW5jZSBmb3IgYnVuZGxlOiAiK2J1bmRsZUNsYXNzTmFtZSk7CisgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBY2Nlc3NFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgU3lzdGVtLmVyci5wcmludGxuKCJDb3VsZCBub3QgY3JlYXRlIGJ1bmRsZSBpbnN0YW5jZSBmb3IgYnVuZGxlOiAiK2J1bmRsZUNsYXNzTmFtZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSB2b2lkIHByaW50VXNhZ2UoKSB7CisgICAgICAgIFN5c3RlbS5lcnIucHJpbnRsbigiVXNhZ2U6IENvbnZlcnRKYXZhTG9jYWxlIFstMTFdIFstMTJdIFstaWN1XSBbLXBhY2thZ2VdIDxwYWNrYWdlIG5hbWU+IGxvY2FsZU5hbWUiKTsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBzaG9ydCBpZGVudGlmeU9wdGlvbnMoU3RyaW5nW10gb3B0aW9ucykgeworICAgICAgICBzaG9ydCByZXN1bHQgPSAwOworICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG9wdGlvbnMubGVuZ3RoOyBqKyspIHsKKyAgICAgICAgICAgIFN0cmluZyBvcHRpb24gPSBvcHRpb25zW2pdOworICAgICAgICAgICAgaWYgKG9wdGlvbi5zdGFydHNXaXRoKCItIikpIHsKKyAgICAgICAgICAgICAgICBib29sZWFuIG9wdGlvblJlY29nbml6ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBmb3IgKHNob3J0IGkgPSAwOyBpIDwgVVNFUl9PUFRJT05TLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChVU0VSX09QVElPTlNbaV0uZXF1YWxzKG9wdGlvbikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCB8PSAoc2hvcnQpKDEgPDwgaSk7CisgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25SZWNvZ25pemVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICghb3B0aW9uUmVjb2duaXplZCkgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQgfD0gT1BUX1VOS05PV047CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgTG9jYWxlIGxvY2FsZUZyb21TdHJpbmcoZmluYWwgU3RyaW5nIGxvY2FsZU5hbWUpIHsKKyAgICAgICAgaWYgKGxvY2FsZU5hbWUgPT0gbnVsbCkgcmV0dXJuIG5ldyBMb2NhbGUoIiIsICIiLCAiIik7CisgICAgICAgIFN0cmluZyBsYW5ndWFnZSA9IGxvY2FsZU5hbWU7CisgICAgICAgIFN0cmluZyBjb3VudHJ5ID0gIiI7CisgICAgICAgIFN0cmluZyB2YXJpYW50ID0gIiI7CisgICAgICAgIAorICAgICAgICBpbnQgbmR4ID0gbGFuZ3VhZ2UuaW5kZXhPZignXycpOworICAgICAgICBpZiAobmR4ID49IDApIHsKKyAgICAgICAgICAgIGNvdW50cnkgPSBsYW5ndWFnZS5zdWJzdHJpbmcobmR4KzEpOworICAgICAgICAgICAgbGFuZ3VhZ2UgPSBsYW5ndWFnZS5zdWJzdHJpbmcoMCwgbmR4KTsKKyAgICAgICAgfQorICAgICAgICBuZHggPSBjb3VudHJ5LmluZGV4T2YoJ18nKTsKKyAgICAgICAgaWYgKG5keCA+PSAwKSB7CisgICAgICAgICAgICB2YXJpYW50ID0gY291bnRyeS5zdWJzdHJpbmcobmR4KzEpOworICAgICAgICAgICAgY291bnRyeSA9IGNvdW50cnkuc3Vic3RyaW5nKDAsIG5keCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG5ldyBMb2NhbGUobGFuZ3VhZ2UsIGNvdW50cnksIHZhcmlhbnQpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvQ29udmVydExvY2FsZVRlc3QuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvQ29udmVydExvY2FsZVRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43MzJjZmJlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9Db252ZXJ0TG9jYWxlVGVzdC5qYXZhCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMDQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvQ29udmVydExvY2FsZVRlc3QuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNToyNyAkIAorICogJFJldmlzaW9uOiAxLjIgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisgCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50b29sLmxvY2FsZWNvbnZlcnRlcjsKKworaW1wb3J0IGphdmEuaW8uKjsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKy8qCisKK0NvbnZlcnRQT1NJWExvY2FsZSBbLTExXSBbLTEyXSBbLWljdV0gWy1pY3UyXSBsb2NhbGVEYXRhRmlsZSBbY2hhck1hcEZpbGUgLi4uXQorCisqLworCitwdWJsaWMgY2xhc3MgQ29udmVydExvY2FsZVRlc3QgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZyBhcmdzW10pIHsKKy8qCisgICAgICAgIENvbnZlcnRQT1NJWExvY2FsZS5tYWluKCBuZXcgU3RyaW5nW10geworICAgICAgICAgICAgIi0xMiIsCisgICAgICAgICAgICAiQzpcXHByb2plY3RzXFxjb21cXHRhbGlnZW50XFxsb2NhbGVjb252ZXJ0ZXJcXGNvbGxhdGlvblRlc3QudHh0IgorICAgICAgICB9ICk7ICAgIAorIAorICAgICAgICBDb252ZXJ0UE9TSVhMb2NhbGUubWFpbiggbmV3IFN0cmluZ1tdIHsKKyAgICAgICAgICAgICItaWN1IiwKKyAgICAgICAgICAgICJDOlxccHJvamVjdHNcXGNvbVxcdGFsaWdlbnRcXGxvY2FsZWNvbnZlcnRlclxcY29sbGF0aW9uVGVzdDIudHh0IiwKKyAgICAgICAgICAgICJDOlxccHJvamVjdHNcXGNvbVxcdGFsaWdlbnRcXGxvY2FsZWNvbnZlcnRlclxcQ2hhck1hcHNcXElTTy04ODU5LTEiLAorICAgICAgICAgICAgIkM6XFxwcm9qZWN0c1xcY29tXFx0YWxpZ2VudFxcbG9jYWxlY29udmVydGVyXFxDaGFyTWFwc1xcbW5lbW9uaWMuZHMiLAorICAgICAgICB9ICk7CisKKyAgICAgICAgQ29udmVydFBPU0lYTG9jYWxlLm1haW4oIG5ldyBTdHJpbmdbXSB7CisgICAgICAgICAgICAiLWljdSIsICItTENfTUVTU0FHRVMiLAorICAgICAgICAgICAgIkM6XFxwcm9qZWN0c1xcY29tXFx0YWxpZ2VudFxcbG9jYWxlY29udmVydGVyXFxMb2NhbGVzXFxWaXZueDQzLmlibSIsCisgICAgICAgICAgICAiQzpcXHByb2plY3RzXFxjb21cXHRhbGlnZW50XFxsb2NhbGVjb252ZXJ0ZXJcXENoYXJNYXBzXFxpYm0xMTI5LTItVW5pQ29kZS5jaG0iLAorICAgICAgICB9ICk7CisvKiAgICAgIENvbnZlcnRQT1NJWExvY2FsZS5tYWluKCBuZXcgU3RyaW5nW10geworICAgICAgICAgICAgIi0xMiIsCisgICAgICAgICAgICAiQzpcXHByb2plY3RzXFxjb21cXHRhbGlnZW50XFxsb2NhbGVjb252ZXJ0ZXJcXExvY2FsZXNcXFBPU0lYTG9jYWxlc1xcZW5fVVMiLAorICAgICAgICAgICAgIkM6XFxwcm9qZWN0c1xcY29tXFx0YWxpZ2VudFxcbG9jYWxlY29udmVydGVyXFxDaGFyTWFwc1xcSVNPLTg4NTktMSIsCisgICAgICAgICAgICAiQzpcXHByb2plY3RzXFxjb21cXHRhbGlnZW50XFxsb2NhbGVjb252ZXJ0ZXJcXENoYXJNYXBzXFxtbmVtb25pYy5kcyIsCisgICAgICAgIH0pOworLyogICAgICBDb252ZXJ0UE9TSVhMb2NhbGUubWFpbiggbmV3IFN0cmluZ1tdIHsKKyAgICAgICAgICAgICItMTIiLAorICAgICAgICAgICAgIkM6XFxwcm9qZWN0c1xcY29tXFx0YWxpZ2VudFxcbG9jYWxlY29udmVydGVyXFxMb2NhbGVzXFxQT1NJWExvY2FsZXNcXGZpX0ZJIiwKKyAgICAgICAgICAgICJDOlxccHJvamVjdHNcXGNvbVxcdGFsaWdlbnRcXGxvY2FsZWNvbnZlcnRlclxcQ2hhck1hcHNcXElTTy04ODU5LTEiLAorICAgICAgICAgICAgIkM6XFxwcm9qZWN0c1xcY29tXFx0YWxpZ2VudFxcbG9jYWxlY29udmVydGVyXFxDaGFyTWFwc1xcbW5lbW9uaWMuZHMiLAorICAgICAgICB9KTsKKworICAgICAgICBDb252ZXJ0UE9TSVhMb2NhbGUubWFpbiggbmV3IFN0cmluZ1tdIHsKKyAgICAgICAgICAgICItMTIiLCAiZW5fQkUiLCAKKyAgICAgICAgICAgICJDOlxccHJvamVjdHNcXGNvbVxcdGFsaWdlbnRcXGxvY2FsZWNvbnZlcnRlclxcTG9jYWxlc1xcRU5CRVdJTi5JQk0iLAorICAgICAgICAgICAgIkM6XFxwcm9qZWN0c1xcY29tXFx0YWxpZ2VudFxcbG9jYWxlY29udmVydGVyXFxDaGFyTWFwc1xcSWJtMTI1Mi5jaG0iLAorICAgICAgICB9KTsKKworICAgICAgICBDb252ZXJ0UE9TSVhMb2NhbGUubWFpbiggbmV3IFN0cmluZ1tdIHsKKyAgICAgICAgICAgICItMTIiLCAidmlfVk4iLAorICAgICAgICAgICAgIkM6XFxwcm9qZWN0c1xcY29tXFx0YWxpZ2VudFxcbG9jYWxlY29udmVydGVyXFxMb2NhbGVzXFxWaXZueDQzLmlibSIsCisgICAgICAgICAgICAiQzpcXHByb2plY3RzXFxjb21cXHRhbGlnZW50XFxsb2NhbGVjb252ZXJ0ZXJcXENoYXJNYXBzXFxpYm0xMTI5LTItVW5pQ29kZS5jaG0iLAorICAgICAgICB9KTsKKworICAgICAgICBDb252ZXJ0UE9TSVhMb2NhbGUubWFpbiggbmV3IFN0cmluZ1tdIHsKKyAgICAgICAgICAgICItaWN1IiwgImZyX0ZSIiwgCisgICAgICAgICAgICAiQzpcXHByb2plY3RzXFxjb21cXHRhbGlnZW50XFxsb2NhbGVjb252ZXJ0ZXJcXExvY2FsZXNcXFBPU0lYTG9jYWxlc1xcZnJfRlIiLAorICAgICAgICAgICAgIkM6XFxwcm9qZWN0c1xcY29tXFx0YWxpZ2VudFxcbG9jYWxlY29udmVydGVyXFxDaGFyTWFwc1xcSVNPLTg4NTktMSIsCisgICAgICAgICAgICAiQzpcXHByb2plY3RzXFxjb21cXHRhbGlnZW50XFxsb2NhbGVjb252ZXJ0ZXJcXENoYXJNYXBzXFxtbmVtb25pYy5kcyIsCisgICAgICAgIH0pOworCisgICAgICAgIENvbnZlcnRQT1NJWExvY2FsZS5tYWluKCBuZXcgU3RyaW5nW10geworICAgICAgICAgICAgIi1pY3UiLCAiZm9fRk8iLCAKKyAgICAgICAgICAgICJDOlxccHJvamVjdHNcXGNvbVxcdGFsaWdlbnRcXGxvY2FsZWNvbnZlcnRlclxcTG9jYWxlc1xcUE9TSVhMb2NhbGVzXFxmb19GTyIsCisgICAgICAgICAgICAiQzpcXHByb2plY3RzXFxjb21cXHRhbGlnZW50XFxsb2NhbGVjb252ZXJ0ZXJcXENoYXJNYXBzXFxJU08tODg1OS0xIiwKKyAgICAgICAgICAgICJDOlxccHJvamVjdHNcXGNvbVxcdGFsaWdlbnRcXGxvY2FsZWNvbnZlcnRlclxcQ2hhck1hcHNcXG1uZW1vbmljLmRzIiwKKyAgICAgICAgfSk7CisqLworICAgICAgICBDb252ZXJ0UE9TSVhMb2NhbGUubWFpbiggbmV3IFN0cmluZ1tdIHsKKyAgICAgICAgICAgICItaWN1IiwgImZyX0xVIiwgCisgICAgICAgICAgICAiQzpcXHByb2plY3RzXFxjb21cXHRhbGlnZW50XFxsb2NhbGVjb252ZXJ0ZXJcXExvY2FsZXNcXFBPU0lYTG9jYWxlc1xcZnJfTFUiLAorICAgICAgICAgICAgIkM6XFxwcm9qZWN0c1xcY29tXFx0YWxpZ2VudFxcbG9jYWxlY29udmVydGVyXFxDaGFyTWFwc1xcSVNPLTg4NTktMSIsCisgICAgICAgICAgICAiQzpcXHByb2plY3RzXFxjb21cXHRhbGlnZW50XFxsb2NhbGVjb252ZXJ0ZXJcXENoYXJNYXBzXFxtbmVtb25pYy5kcyIsCisgICAgICAgIH0pOworLyoKKyAgICAgICAgQ29udmVydFBPU0lYTG9jYWxlLm1haW4oIG5ldyBTdHJpbmdbXSB7CisgICAgICAgICAgICAiLWljdSIsICJkZV9MVSIsIAorICAgICAgICAgICAgIkM6XFxwcm9qZWN0c1xcY29tXFx0YWxpZ2VudFxcbG9jYWxlY29udmVydGVyXFxMb2NhbGVzXFxQT1NJWExvY2FsZXNcXGRlX0xVIiwKKyAgICAgICAgICAgICJDOlxccHJvamVjdHNcXGNvbVxcdGFsaWdlbnRcXGxvY2FsZWNvbnZlcnRlclxcQ2hhck1hcHNcXElTTy04ODU5LTEiLAorICAgICAgICAgICAgIkM6XFxwcm9qZWN0c1xcY29tXFx0YWxpZ2VudFxcbG9jYWxlY29udmVydGVyXFxDaGFyTWFwc1xcbW5lbW9uaWMuZHMiLAorICAgICAgICB9KTsKKyovCisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvQ29udmVydFBPU0lYTG9jYWxlLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL0NvbnZlcnRQT1NJWExvY2FsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmVhNjljMWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL0NvbnZlcnRQT1NJWExvY2FsZS5qYXZhCkBAIC0wLDAgKzEsMzUyIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMi0yMDA0LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL0NvbnZlcnRQT1NJWExvY2FsZS5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzA2LzIwIDAxOjE3OjExICQgCisgKiAkUmV2aXNpb246IDEuMyAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKyAKK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRvb2wubG9jYWxlY29udmVydGVyOworCitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGphdmEudXRpbC4qOworCisvKioKKworVGhlIENvbnZlcnRQT1NJWExvY2FsZSBhcHBsaWNhdGlvbiBjb252ZXJ0cyBQT1NJWCBsb2NhbGUgZmlsZXMgdG8gCitKYXZhIGFuZCBJQ1UgTG9jYWxlIGZpbGVzLiAgSXQncyB1c2FnZSBpcyBhcyBmb2xsb3dzCisKKyAgICBDb252ZXJ0UE9TSVhMb2NhbGUgCisgICAgICAgIFstTENfQ1RZUEVdCisgICAgICAgIFstTENfVElNRV0KKyAgICAgICAgWy1MQ19OVU1FUklDXSAKKyAgICAgICAgWy1MQ19NT05FVEFSWV0gCisgICAgICAgIFstTENfTUVTU0FHRVNdIAorICAgICAgICBbLTExXSAKKyAgICAgICAgWy0xMl0gCisgICAgICAgIFstaWN1XQorICAgICAgICBbLWljdTJdCisgICAgICAgIGxvY2FsZU5hbWUKKyAgICAgICAgbG9jYWxlRGF0YUZpbGUgCisgICAgICAgIFtjaGFyTWFwRmlsZSAuLi5dCisgICAgICAgIAorVGhlIGFwcGxpY2F0aW9uIGlzIGludm9rZWQgd2l0aCBvcHRpb25zIHNwZWNpZnlpbmcgdGhlIGZvcm1hdChzKSBvZgordGhlIGxvY2FsZSBmaWxlKHMpIHRvIGdlbmVyYXRlIGFzIHdlbGwgYXMgdGhlIFBPU0lYIGxvY2FsZSBmaWxlIGFuZAorY2hhcmFjdGVyIG1hcHBpbmcgZmlsZXMuCisKK1VzYWdlCisKKy1MQ19DVFlQRQorICAgIElmIHRoZSAtTENfQ1RZUEUgb3B0aW9uIGlzIHNwZWNpZmllZCwgdGhlCisgICAgZm9sbG93aW5nIGl0ZW1zIGFyZSBhZGRlZCB0byB0aGUgbG9jYWxlIGlmIHRoZXkKKyAgICBhcmUgcHJlc2VudCBpbiB0aGUgc291cmNlOiB1cHBlciwgbG93ZXIsIGFscGhhLCBkaWdpdCwgCisgICAgc3BhY2UsIGNudHJsLCBwdW5jdCwgZ3JhcGgsIHByaW50LCB4ZGlnaXQsIGJsYW5rLCAKKyAgICB0b3VwcGVyLCB0b2xvd2VyLgorICAgIAorPENPREU+LUxDX1RJTUUKKyAgICBJZiB0aGUgLUxDX1RJTUUgb3B0aW9uIGlzIHNwZWNpZmllZCwgdGhlIGZvbGxvd2luZworICAgIGl0ZW1zIHdpbGwgYmUgaW5jbHVkZWQgaWYgdGhleSBhcmUgcHJlc2VudCBpbiB0aGUgUE9TSVggc291cmNlOgorICAgIGFiZGF5LCBkYXksIGFibW9uLCBtb24sIGRfdF9mbXQsIGRfZnRtLCB0X2ZtdCwgYW1fcG0sCisgICAgdF9mbXRfYW1wbSwgZXJhLCBlcmFfeWVhciwgZXJhX2RfZm10LCBhbHRfZGlnaXRzLgorICAgIAorLUxDX05VTUVSSUMKKyAgICBJZiB0aGUgLUxDX05VTUVSSUMgb3B0aW9uIGlzIHNwZWNpZmllZCwgdGhlIGZvbGxvd2luZworICAgIGl0ZW1zIHdpbGwgYmUgaW5jbHVkZWQgaWYgdGhleSBhcmUgcHJlc2VudCBpbiB0aGUgc291cmNlOgorICAgIGRlY2ltYWxfcG9pbnQsIHRob3VzYW5kc19zZXAsIGdyb3VwaW5nCisKKy1MQ19NT05FVEFSWQorICAgIElmIHRoZSAtTENfTU9ORVRBUlkgb3B0aW9uIGlzIHNwZWNpZmllZCwgdGhlIGZvbGxvd2luZworICAgIGl0ZW1zIHdpbGwgYmUgaW5jbHVkZWQgaWYgdGhleSBhcmUgcHJlc2VudCBpbiB0aGUgc291cmNlOgorICAgIGludF9jdXJyX3N5bWJvbCwgY3VycmVuY3lfc3ltYm9sLCBtb25fZGVjaW1hbF9wb2ludCwKKyAgICBtb25fdGhvdXNhbmRzX3NlcCwgbW9uX2dyb3VwaW5nLCBwb3NpdGl2ZV9zaWduLCAKKyAgICBuZWdhdGl2ZV9zaWduLCBpbnRfZnJhY19kaWdpdHMsIGZyYWNfZGlnaXRzLCBwX2NzX3ByZWNlZGVzLAorICAgIHBfc2VwX2J5X3NwYWNlLCBuX2NzX3ByZWNlZGVzLCBuX3NlcF9ieV9zcGFjZSwgcF9zaWduX3Bvc24uCisKKy1MQ19NRVNTQUdFUworICAgIElmIHRoZSAtTENfTUVTU0FHRVMgb3B0aW9uIGlzIHNwZWNpZmllZCwgdGhlCisgICAgZm9sbG93aW5nIGl0ZW1zIGFyZSBhZGRlZCB0byB0aGUgbG9jYWxlIGlmIHRoZXkKKyAgICBhcmUgcHJlc2VudCBpbiB0aGUgc291cmNlOiB5ZXNleHByLCBub2V4cHIKKworLTExCisgICAgSWYgdGhpcyBvcHRpb24gaXMgc3BlY2lmaWVkLCBkYXRhIGlzIG91dHB1dCBpbiAKKyAgICBKYXZhIDEuMS54IGxvY2FsZSBmb3JtYXQuCisgICAgCistMTIKKyAgICBJZiB0aGlzIG9wdGlvbiBpcyBzcGVjaWZpZWQsIGRhdGEgaXMgb3V0cHV0IGluCisgICAgSmF2YSAxLjIueCBsb2NhbGUgZm9ybWF0LiAgSWYgYW4gb3V0cHV0IGZvcm1hdAorICAgIGlzIG5vdCBzcGVjaWZpZWQsIC0xMiBpcyB0aGUgZGVmYXVsdC4KKyAgICAKKy1pY3UKKyAgICBJZiB0aGlzIG9wdGlvbiBpcyBzcGVjaWZpZWQsIGRhdGEgaXMgb3V0cHV0IGluCisgICAgSUNVIGxvY2FsZSBmb3JtYXQuCisKK2xvY2FsZU5hbWUKKyAgICBUaGUgbmFtZSBvZiB0aGUgbG9jYWxlIGluIHRoZSBsb2NhbGVEYXRhRmlsZS4gIEV4LiAgZW5fVVMuCisKK2xvY2FsZURhdGFGaWxlCisgICAgVGhlIGxvY2FsZURhdGFGaWxlIHBhdGggaXMgcmVxdWlyZWQgYW5kIHNwZWNpZmllcyB0aGUgcGF0aCAKKyAgICB0byB0aGUgbG9jYWxlIGRhdGEgZmlsZS4gIElmIGEgImNvcHkiIGRpcmVjdGl2ZSBpcyBlbmNvdW50ZXJlZCAKKyAgICB3aGlsZSBwcm9jZXNzaW5nIHRoZSBsb2NhbGVEYXRhRmlsZSwgQ29udmVydFBPU0lYTG9jYWxlIHdpbGwgbG9vaworICAgIGluIHRoZSBzYW1lIGRpcmVjdG9yeSBhcyB0aGUgbG9jYWxlRGF0YUZpbGUgZm9yIGFkZGl0aW9uYWwKKyAgICBQT1NJWCBsb2NhbGUgZGF0YSBmaWxlcy4gIEZpbGVzIG11c3QgYmUgaW4gdGhlIFBPU0lYIGZvcm1hdAorICAgIHNwZWNpZmllZCBpbiBJU08vSUVDIDk5NDUtIHdpdGggZXhjZXB0aW9ucyBub3RlZCBiZWxvdy4gIEV4YWN0bHkKKyAgICBvbmUgbG9jYWxlRGF0YUZpbGUgbXVzdCBiZSBzcGVjaWZpZWQuCisgICAgCitjaGFyTWFwRmlsZQorICAgIFplcm8gb3IgbW9yZSBjaGFyYWN0ZXIgbWFwcGluZyBmaWxlcyBtYXkgYmUgc3BlY2lmaWVkLiAgY2hhck1hcEZpbGVzIGFyZSB1c2VkCisgICAgdG8gbWFwIHN5bWJvbHMgaW4gdGhlIGxvY2FsZURhdGFGaWxlIHRvIFVuaWNvZGUgdmFsdWVzLiAgVGhleSBhcmUgcHJvY2Vzc2VkCisgICAgYXMgZm9sbG93cy4gIENvbnZlcnRQT1NJWExvY2FsZSBzZWFyY2hzIGZvciBhIGxpbmUgY29udGFpbmluZyBvbmx5IHRoZQorICAgIHdvcmQgIkNIQVJNQVAiIGFuZCByZWFkcyBzeW1ib2wgbWFwcGluZ3MgdW50aWwgaXQgcmVhY2hlcyBhIGxpbmUKKyAgICBjb250YWluaW5nIG9ubHkgdGhlIHdvcmRzICJFTkQgQ0hBUk1BUCIuICBTeW1ib2wgbWFwcGluZ3MgaGF2ZQorICAgIHRoZSBmb3JtICI8U1lNQk9MPiA8VWhoaGg+IiB3aGVyZSAiPFNZTUJPTD4iIGlzIGFueSBzeW1ib2wgdmFsaWQKKyAgICBpbiBhIGxvY2FsZURhdGFGaWxlIGFuZCAiaGhoaCIgaXMgZm91ciBoZXhpZGVjaW1hbCBkaWdpdHMgcmVwcmVzZW50aW5nCisgICAgdGhlIFVuaWNvZGUgdmFsdWUgZm9yIHRoYXQgc3ltYm9sLiAgU3Vycm9nYXRlIHBhaXJzIGFyZSBub3Qgc3VwcG9ydGVkCisgICAgaW4gY2hhck1hcEZpbGVzLiBBbiBleGFtcGxlIGNoYXJNYXBGaWxlIG1pZ2h0IGNvbnRhaW4gdGhlIGZvbGxvd2luZzoKKworICAgICAgICBDSEFSTUFQCisgICAgICAgIDxTVEFSVF9PRl9URVhUPiAgICAgICA8VTAwMDI+CisgICAgICAgIDxFPiAgICAgICAgICAgICAgICAgICA8VTAwNDU+CisgICAgICAgIDxxPiAgICAgICAgICAgICAgICAgICA8VTAwNzE+CisgICAgICAgIEVORCBDSEFSTUFQCisKKyAgICBzcGVjaWZ5aW5nIHRoYXQgdGhlIHN5bWJvbCA8U1RBUlRfT0ZfVEVYVD4gc2hvdWxkIGJlIHJlcGxhY2VkIGJ5IAorICAgIHRoZSBVbmljb2RlIHZhbHVlIG9mIDB4MDAwMiB3aGVyZXZlciBpdCBvY2N1cnMuCisgICAgCisgICAgV2hlbiBtdWx0aXBsZSBjaGFyTWFwRmlsZXMgYXJlIHNwZWNpZmllZCwgbWFwcGluZ3MgaW4gZmlsZXMgbGlzdGVkIAorICAgIGxhdGVyIHRha2UgcHJlY2VkZW5jZSBvdmVyIGVhcmxpZXIgb25lcy4KKworCitDb252ZXJzaW9uIHRvIElDVSBhbmQgSmF2YToKKworQ29sbGF0aW9uRWxlbWVudHMKKyAgICBDb252ZXJ0ZWQgZnJvbSB0aGUgTENfQ09MTEFURSBzZWN0aW9uLiAgVGhlICIuLi4iIGRpcmVjdGl2ZSBpcyBpZ25vcmVkLgorICAgIFRoZSAicmVwbGFjZS1hZnRlciIgZGlyZWN0aXZlIGlzIGlnbm9yZWQuCisKK0N1cnJlbmN5RWxlbWVudHMKKyAgICBlbGVtZW50IDAgaXMgc2V0IHRvIGN1cnJlbmN5X3N5bWJvbAorICAgIGVsZW1lbnQgMSBpcyBzZXQgdG8gaW50X2N1cnJfc3ltYm9sCisgICAgZWxlbWVudCAyIGlzIHNldCB0byBtb25fZGVjaW1hbF9wb2ludAorICAgIEFsbCBvdGhlciBlbGVtZW50cyBkZWZhdWx0LgorICAgIAorTnVtYmVyRWxlbWVudHMKKyAgICBlbGVtZW50IDAgaXMgc2V0IHRvIGRlY2ltYWxfcG9pbnQKKyAgICBlbGVtZW50IDEgaXMgc2V0IHRvIHRob3VzYW5kc19zZXAKKworTW9udGhOYW1lcyBpcyBzZXQgdG8gbW9uCisKK01vbnRoQWJicmV2aWF0aW9ucyBpcyBzZXQgdG8gYWJtb24KKworRGF5TmFtZXMgaXMgc2V0IHRvIGRheQorCitEYXlBYmJyZXZpYXRpb25zIGlzIHNldCB0byBhYmRheQorCitBbVBtTWFya2VycyBpcyBzZXQgdG8gYW1fcG0KKworRGF0ZVRpbWVQYXR0ZXJucworICAgIGVsZW1lbnRzIDAgdGhyb3VnaCAzIGFyZSBzZXQgdG8gdF9mbXRfYW1wbSB3aXRoIHRoZSBwYXR0ZXJucyBjb252ZXJ0ZWQKKyAgICBlbGVtZW50cyA0IHRocm91Z2ggNyBhcmUgc2V0IHRvIGRfZm10IHdpdGggdGhlIHBhdHRlcm5zIGNvbnZlcnRlZAorCisKK0FkaXRpb24gUE9TSVggZGF0YSBtYXkgYmUgaW5jbHVkZWQgaW4gdGhlIExvY2FsZSBhcyBmb2xsb3dzOgorCitMQ19UWVBFIAorICAgIFRoaXMgc2VjdGlvbiBpcyBpZ25vcmVkIHVubGVzcyB0aGUgLUxDX0NUWVBFIG9wdGlvbiBpcworICAgIHNwZWNpZmllZC4gIElmIHRoZSAtTENfQ1RZUEUgb3B0aW9uIGlzIHNwZWNpZmllZCwgdGhlCisgICAgZm9sbG93aW5nIGl0ZW1zIGFyZSBhZGRlZCB0byB0aGUgbG9jYWxlIGlmIHRoZXkKKyAgICBhcmUgcHJlc2VudCBpbiB0aGUgc291cmNlOiB1cHBlciwgbG93ZXIsIGFscGhhLCBkaWdpdCwgCisgICAgc3BhY2UsIGNudHJsLCBwdW5jdCwgZ3JhcGgsIHByaW50LCB4ZGlnaXQsIGJsYW5rLCAKKyAgICB0b3VwcGVyLCB0b2xvd2VyLgorCitMQ19NRVNTQUdFUworICAgIAorTENfTU9ORVRBUlkKKyAgICAKK0xDX05VTUVSSUMKKworTENfVElNRQorICAgIElmIHRoZSAtTENfVElNRSBvcHRpb24gaXMgc3BlY2lmaWVkLCB0aGUgZm9sbG93aW5nCisgICAgaXRlbXMgd2lsbCBiZSBpbmNsdWRlZCBpZiB0aGV5IGFyZSBwcmVzZW50IGluIHRoZSBzb3VyY2U6CisgICAgYWJkYXksIGRheSwgYWJtb24sIG1vbiwgZF90X2ZtdCwgZF9mdG0sIHRfZm10LCBhbV9wbSwKKyAgICB0X2ZtdF9hbXBtLCBlcmEsIGVyYV95ZWFyLCBlcmFfZF9mbXQsIGFsdF9kaWdpdHMuCisKK0xDX0NPTExBVEUKKyAgICBDb252ZXJ0ZWQgdG8gQ29sbGF0aW9uRWxlbWVudHMgaW4gdGhlIHJlc291cmNlIGZpbGUuCisgICAgCisgICAgCisqLworCitwdWJsaWMgY2xhc3MgQ29udmVydFBPU0lYTG9jYWxlIHsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBzaG9ydCBPUFRfTENfQ1RZUEUgPSAweDAwMTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBzaG9ydCBPUFRfTENfVElNRSA9IDB4MDAyOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIHNob3J0IE9QVF9MQ19OVU1FUklDID0gMHgwMDQ7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgc2hvcnQgT1BUX0xDX01PTkVUQVJZID0gMHgwMDg7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgc2hvcnQgT1BUX0xDX01FU1NBR0VTID0gMHgwMTA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgc2hvcnQgT1BUXzExID0gMHgwMjA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgc2hvcnQgT1BUXzEyID0gMHgwNDA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgc2hvcnQgT1BUX0lDVSA9IDB4MDgwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIHNob3J0IE9QVF9JQ1UyID0gMHgxMDA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgc2hvcnQgT1BUX1JBVyA9IDB4MjAwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIHNob3J0IE9QVF9VTktOT1dOID0gMHg0MDAwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBVU0VSX09QVElPTlNbXSA9IHsKKyAgICAgICAgIi1MQ19DVFlQRSIsIAorICAgICAgICAiLUxDX1RJTUUiLCAKKyAgICAgICAgIi1MQ19OVU1FUklDIiwgCisgICAgICAgICItTENfTU9ORVRBUlkiLAorICAgICAgICAiLUxDX01FU1NBR0VTIiwKKyAgICAgICAgIi0xMSIsIAorICAgICAgICAiLTEyIiwgCisgICAgICAgICItaWN1IiwgCisgICAgICAgICItaWN1MiIsIAorICAgICAgICAiLVJBVyIsCisgICAgICAgICItZW5jIiwKKyAgICB9OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIHNob3J0IE9QVF9DT05WRVJUID0gKHNob3J0KShPUFRfTENfQ1RZUEUgfCBPUFRfTENfVElNRSAKKyAgICAgICAgICAgIHwgT1BUX0xDX05VTUVSSUMgfCBPUFRfTENfTU9ORVRBUlkgfCBPUFRfTENfTUVTU0FHRVMpOworICAgIAorICAgIHByaXZhdGUgSGFzaHRhYmxlIGRhdGE7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgYXJnc1tdKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBuZXcgQ29udmVydFBPU0lYTG9jYWxlKGFyZ3MpOworICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgdCkgeworICAgICAgICAgICAgdC5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgICAgIFN5c3RlbS5lcnIucHJpbnRsbigiVW5rbm93biBlcnJvcjogIit0KTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgQ29udmVydFBPU0lYTG9jYWxlKFN0cmluZyBhcmdzW10pIHsKKyAgICAgICAgcHJvY2VzcyhhcmdzKTsKKyAgICAgICAgICAgIC8ve3tJTklUX0NPTlRST0xTCisJCS8vfX0KKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgcHJvY2VzcyhTdHJpbmcgYXJnc1tdKSB7CisgICAgICAgIHNob3J0IG9wdGlvbnMgPSBpZGVudGlmeU9wdGlvbnMoYXJncyk7CisgICAgICAgIFN0cmluZyBlbmM9bnVsbDsKKyAgICAgICAgaWYgKChhcmdzLmxlbmd0aCA8IDIpIHx8ICgob3B0aW9ucyAmIE9QVF9VTktOT1dOKSAhPSAwKSkgeworICAgICAgICAgICAgcHJpbnRVc2FnZSgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgVmVjdG9yIG1hcEZpbGVzID0gbmV3IFZlY3RvcigpOworICAgICAgICAgICAgTG9jYWxlIGxvY2FsZSA9IG51bGw7CisgICAgICAgICAgICBTdHJpbmcgZmlsZU5hbWUgPSBudWxsOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nIHRoaXNBcmcgPSBhcmdzW2ldOworICAgICAgICAgICAgICAgIGlmICh0aGlzQXJnLnN0YXJ0c1dpdGgoIi0iKSkgeworICAgICAgICAgICAgICAgICAgICBpZih0aGlzQXJnLnN0YXJ0c1dpdGgoIi1lbmMiKSl7CisgICAgICAgICAgICAgICAgICAgICAgICBlbmMgPSBhcmdzWysraV07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxvY2FsZSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIGxvY2FsZSA9IGxvY2FsZUZyb21TdHJpbmcodGhpc0FyZyk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmaWxlTmFtZSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIGZpbGVOYW1lID0gdGhpc0FyZzsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBtYXBGaWxlcy5hZGRFbGVtZW50KHRoaXNBcmcpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmKGVuYz09bnVsbCl7CisgICAgICAgICAgICAgICAgZW5jPSJEZWZhdWx0IjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgoZmlsZU5hbWUgPT0gbnVsbCkgfHwgKGxvY2FsZSA9PSBudWxsKSB8fCAob3B0aW9ucyA9PSAwKSkgeworICAgICAgICAgICAgICAgIHByaW50VXNhZ2UoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgUG9zaXhDaGFyTWFwIG1hcCA9IG5ldyBQb3NpeENoYXJNYXAoKTsKKyAgICAgICAgICAgICAgICBFbnVtZXJhdGlvbiBlbnVtID0gbWFwRmlsZXMuZWxlbWVudHMoKTsKKyAgICAgICAgICAgICAgICB3aGlsZSAoZW51bS5oYXNNb3JlRWxlbWVudHMoKSkgeworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbWFwRmlsZSA9IChTdHJpbmcpZW51bS5uZXh0RWxlbWVudCgpOworICAgICAgICAgICAgICAgICAgICBTeXN0ZW0uZXJyLnByaW50bG4oIkxvY2FsZTogIitsb2NhbGUpOworICAgICAgICAgICAgICAgICAgICBTeXN0ZW0uZXJyLnByaW50bG4oIkxvYWRpbmcgY2hhcmFjdGVyIG1hcCBmaWxlOiAiK21hcEZpbGUpOworICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgbWFwLmxvYWQobmV3IEZpbGUobWFwRmlsZSksZW5jKTsKKyAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmVyci5wcmludGxuKCJFcnJvciBsb2FkaW5nIG1hcCBmaWxlOiAiK21hcEZpbGUrIiAgIitlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5lcnIucHJpbnRsbigiRmlsZSBza2lwcGVkIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgU3ltYm9sVHJhbnNpdGlvbi5zZXRDaGFyTWFwKG1hcCk7CisgICAgICAgICAgICAgICAgRmlsZSBkYXRhRmlsZSA9IG5ldyBGaWxlKGZpbGVOYW1lKTsKKyAgICAgICAgICAgICAgICBTeXN0ZW0uZXJyLnByaW50bG4oIkxvY2FsZSBkaXJlY3Rvcnk6ICIrZGF0YUZpbGUuZ2V0UGFyZW50KCkpOworICAgICAgICAgICAgICAgIFBPU0lYTG9jYWxlUmVhZGVyIHJlYWRlciA9IG5ldyBQT1NJWExvY2FsZVJlYWRlcihkYXRhRmlsZS5nZXRQYXJlbnQoKSwgbG9jYWxlKTsKKyAgICAgICAgICAgICAgICBTeXN0ZW0uZXJyLnByaW50bG4oIlBhcnNpbmcgZmlsZTogIitkYXRhRmlsZS5nZXROYW1lKCkpOworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIGRhdGEgPSByZWFkZXIucGFyc2UoZGF0YUZpbGUuZ2V0TmFtZSgpLCAoYnl0ZSkob3B0aW9ucyAmIE9QVF9DT05WRVJUKSk7CisgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5lcnIucHJpbnRsbigiQ29udmVydGluZy4uLi4iKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKChvcHRpb25zICYgT1BUXzExKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgSmF2YTFMb2NhbGVXcml0ZXIoU3lzdGVtLm91dCwgU3lzdGVtLmVycikud3JpdGUobG9jYWxlLCBkYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoKG9wdGlvbnMgJiBPUFRfMTIpICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBKYXZhTG9jYWxlV3JpdGVyKFN5c3RlbS5vdXQsIFN5c3RlbS5lcnIpLndyaXRlKGxvY2FsZSwgZGF0YSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKChvcHRpb25zICYgT1BUX0lDVSkgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbmV3IElDVUxvY2FsZVdyaXRlcihTeXN0ZW0ub3V0LCBTeXN0ZW0uZXJyKS53cml0ZShsb2NhbGUsIGRhdGEpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICgob3B0aW9ucyAmIE9QVF9JQ1UyKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgSUNVMkxvY2FsZVdyaXRlcihTeXN0ZW0ub3V0LCBTeXN0ZW0uZXJyKS53cml0ZShsb2NhbGUsIGRhdGEpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICgob3B0aW9ucyAmIE9QVF9SQVcpICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBJQ1VMb2NhbGVXcml0ZXIoU3lzdGVtLm91dCwgU3lzdGVtLmVycikud3JpdGUobG9jYWxlLCBkYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmVyci5wcmludGxuKGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBwcmludFVzYWdlKCkgeworICAgICAgICBTeXN0ZW0uZXJyLnByaW50bG4oIlVzYWdlOiBDb252ZXJ0UE9TSVhMb2NhbGUgWy1MQ19DVFlQRV0gWy1MQ19USU1FXSIrCisgICAgICAgICAgICAiIFstTENfTlVNRVJJQ10gWy1MQ19NT05FVEFSWV0gWy1MQ19NRVNTQUdFU10gWy0xMV0gWy0xMl0gWy1pY3VdIisgCisgICAgICAgICAgICAiIGxvY2FsZU5hbWUgbG9jYWxlRGF0YUZpbGUgW2NoYXJNYXBGaWxlIC4uLl0iKTsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBzaG9ydCBpZGVudGlmeU9wdGlvbnMoU3RyaW5nW10gb3B0aW9ucykgeworICAgICAgICBzaG9ydCByZXN1bHQgPSAwOworICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG9wdGlvbnMubGVuZ3RoOyBqKyspIHsKKyAgICAgICAgICAgIFN0cmluZyBvcHRpb24gPSBvcHRpb25zW2pdOworICAgICAgICAgICAgaWYgKG9wdGlvbi5zdGFydHNXaXRoKCItIikpIHsKKyAgICAgICAgICAgICAgICBib29sZWFuIG9wdGlvblJlY29nbml6ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBmb3IgKHNob3J0IGkgPSAwOyBpIDwgVVNFUl9PUFRJT05TLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChVU0VSX09QVElPTlNbaV0uZXF1YWxzKG9wdGlvbikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCB8PSAoc2hvcnQpKDEgPDwgaSk7CisgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25SZWNvZ25pemVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICghb3B0aW9uUmVjb2duaXplZCkgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQgfD0gT1BUX1VOS05PV047CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgTG9jYWxlIGxvY2FsZUZyb21TdHJpbmcoZmluYWwgU3RyaW5nIGxvY2FsZU5hbWUpIHsKKyAgICAgICAgU3RyaW5nIGxhbmd1YWdlID0gbG9jYWxlTmFtZTsKKyAgICAgICAgU3RyaW5nIGNvdW50cnkgPSAiIjsKKyAgICAgICAgU3RyaW5nIHZhcmlhbnQgPSAiIjsKKyAgICAgICAgCisgICAgICAgIGludCBuZHggPSBsYW5ndWFnZS5pbmRleE9mKCdfJyk7CisgICAgICAgIGlmIChuZHggPj0gMCkgeworICAgICAgICAgICAgY291bnRyeSA9IGxhbmd1YWdlLnN1YnN0cmluZyhuZHgrMSk7CisgICAgICAgICAgICBsYW5ndWFnZSA9IGxhbmd1YWdlLnN1YnN0cmluZygwLCBuZHgpOworICAgICAgICB9CisgICAgICAgIG5keCA9IGNvdW50cnkuaW5kZXhPZignXycpOworICAgICAgICBpZiAobmR4ID49IDApIHsKKyAgICAgICAgICAgIHZhcmlhbnQgPSBjb3VudHJ5LnN1YnN0cmluZyhuZHgrMSk7CisgICAgICAgICAgICBjb3VudHJ5ID0gY291bnRyeS5zdWJzdHJpbmcoMCwgbmR4KTsKKyAgICAgICAgfQorICAgICAgICBuZHggPSBjb3VudHJ5LmluZGV4T2YoJ0AnKTsKKyAgICAgICAgaWYobmR4PjApeworICAgICAgICAgICAgdmFyaWFudCA9IGNvdW50cnkuc3Vic3RyaW5nKG5keCsxKTsKKyAgICAgICAgICAgIGNvdW50cnkgPSBjb3VudHJ5LnN1YnN0cmluZygwLG5keCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG5ldyBMb2NhbGUobGFuZ3VhZ2UsIGNvdW50cnksIHZhcmlhbnQpOworICAgIH0KKyAgICAvL3t7REVDTEFSRV9DT05UUk9MUworCS8vfX0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvRU9MVHJhbnNpdGlvbi5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9FT0xUcmFuc2l0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYWEyMDNmMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvRU9MVHJhbnNpdGlvbi5qYXZhCkBAIC0wLDAgKzEsMTEzIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMi0yMDA0LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL0VPTFRyYW5zaXRpb24uamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNToyNyAkIAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisgCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50b29sLmxvY2FsZWNvbnZlcnRlcjsKKworaW1wb3J0IGphdmEuaW8uKjsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworLyoqCisgKiBUaGlzIHRyYW5zaXRpb24gcGFyc2VzIGFuIGVuZC1vZi1saW5lIHNlcXVlbmNlLiAgVGhlIGNvbW1lbnQgY2hhcmFjdGVyCisgKiBjYW4gYmUgc2V0IHRvIGFuIGFyYml0cmFyeSBjaGFyYWN0ZXIsIGJ1dCBpdCBpcyBzaGFyZWQgZ2xvYmFsbHkuCisgKiBBIGNvbW1lbnQgbWF5IG9ubHkgb2NjdXIgYWZ0ZXIgYW4gZW5kLW9mLWxpbmUuCisgKiBFT0wgOj0gPEVPRj4gfCA8RU9MX0NIQVJTPiBbIDxFT0xfU0VHTUVOVD4gXSoKKyAqIEVPTF9TRUdNRU5UIDo9IDxFT0xfQ0hBUlM+IHwgPFNQQUNFX0NIQVJTPiB8IDxDT01NRU5UPgorICogU1BBQ0VfQ0hBUlMgOj0gIiBcdCI7CisgKiBFT0xfQ0hBUlMgPSAiXHJcblx1MjAyOFx1MjAyOSI7CisgKiBDT01NRU5UX1NUUklORyA6PSA8Q09NTUVOVF9DSEFSPiA8Q09NTUVOVF9CT0RZPgorICogQ09NTUVOVF9DSEFSID0gIiMiOworICogQ09NTUVOVF9CT0RZID0gWyB+PEVPRj4gJiB+PEVPTF9DSEFSUz4gXSoKKyAqLworcHVibGljIGNsYXNzIEVPTFRyYW5zaXRpb24gZXh0ZW5kcyBDb21wbGV4VHJhbnNpdGlvbiB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRU9MX0NIQVJTID0gIlxmXHJcblx1MjAyOFx1MjAyOSI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBjaGFyIERFRkFVTFRfQ09NTUVOVF9DSEFSID0gJyMnOworICAgIHB1YmxpYyBzdGF0aWMgY2hhciBDT01NRU5UX0NIQVIgPSBERUZBVUxUX0NPTU1FTlRfQ0hBUjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIEVPTFRyYW5zaXRpb24gR0xPQkFMID0gbmV3IEVPTFRyYW5zaXRpb24oU1VDQ0VTUyk7CisgICAgCisgICAgICAgIC8qKiBSZXN0b3JlIHRoZSBjb21tZW50IGNoYXJhY3RlciB0byB0aGUgZGVmYXVsdCB2YWx1ZSAqLworICAgIHB1YmxpYyBzdGF0aWMgc3luY2hyb25pemVkIGNoYXIgc2V0RGVmYXVsdENvbW1lbnRDaGFyKCkgeworICAgICAgICByZXR1cm4gc2V0Q29tbWVudENoYXIoREVGQVVMVF9DT01NRU5UX0NIQVIpOworICAgIH0KKyAgICAKKyAgICAgICAgLyoqIFNldCBhIG5ldyBjb21tZW50IGNoYXJhY3RlciAqLworICAgIHB1YmxpYyBzdGF0aWMgc3luY2hyb25pemVkIGNoYXIgc2V0Q29tbWVudENoYXIoY2hhciBjKSB7CisgICAgICAgIGNoYXIgcmVzdWx0ID0gQ09NTUVOVF9DSEFSOworICAgICAgICBDT01NRU5UX0NIQVIgPSBjOworICAgICAgICBzdGF0ZXMgPSBudWxsOyAgLy9mbHVzaCBzdGF0ZXMKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgcHVibGljIEVPTFRyYW5zaXRpb24oaW50IHN1Y2Nlc3MpIHsKKyAgICAgICAgc3VwZXIoc3VjY2Vzcyk7CisgICAgICAgICAgICAvL3t7SU5JVF9DT05UUk9MUworICAgICAgICAvL319Cit9CisgICAgcHVibGljIGJvb2xlYW4gYWNjZXB0cyhpbnQgYykgeworICAgICAgICByZXR1cm4gRU9MX0NIQVJTLmluZGV4T2YoKGNoYXIpYykgPj0gMDsKKyAgICB9CisgICAgcHJvdGVjdGVkIExleC5UcmFuc2l0aW9uW11bXSBnZXRTdGF0ZXMoKSB7CisgICAgICAgIHN5bmNocm9uaXplZCAoZ2V0Q2xhc3MoKSkgeworICAgICAgICAgICAgaWYgKHN0YXRlcyA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgLy9jYWNoZSB0aGUgc3RhdGVzIHNvIHRoZXkgY2FuIGJlIHNoYXJlZC4gIFRoaXMgc3RhdGVzCisgICAgICAgICAgICAgICAgLy9uZWVkIHRvIGJlIGZsdXNoZWQgYW5kIHJlYnVpbHQgd2hlbiB0aGUgY29tbWVudAorICAgICAgICAgICAgICAgIC8vY2hhcmFjdGVyIGNoYW5nZXMuCisgICAgICAgICAgICAgICAgc3RhdGVzID0gbmV3IExleC5UcmFuc2l0aW9uW11bXSB7CisgICAgICAgICAgICAgICAgICAgIHsgLy9zdGF0ZSAwOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBMZXguU3RyaW5nVHJhbnNpdGlvbihFT0xfQ0hBUlMsIExleC5JR05PUkVfQ09OU1VNRSwgLTEpLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IExleC5FT0ZUcmFuc2l0aW9uKFNVQ0NFU1MpLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IExleC5QYXJzZUV4Y2VwdGlvblRyYW5zaXRpb24oImJhZCBjaGFyYWN0ZXJzIGluIEVPTCIpCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIHsgLy9zdGF0ZSAxOgorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IExleC5DaGFyVHJhbnNpdGlvbihDT01NRU5UX0NIQVIsIExleC5JR05PUkVfQ09OU1VNRSwgLTIpLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IExleC5TdHJpbmdUcmFuc2l0aW9uKEVPTF9DSEFSUywgTGV4LklHTk9SRV9DT05TVU1FLCAtMSksCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgTGV4LlN0cmluZ1RyYW5zaXRpb24oU3BhY2VUcmFuc2l0aW9uLlNQQUNFX0NIQVJTLCBMZXguSUdOT1JFX0NPTlNVTUUsIC0xKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBMZXguRU9GVHJhbnNpdGlvbihTVUNDRVNTKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBMZXguRGVmYXVsdFRyYW5zaXRpb24oTGV4LklHTk9SRV9QVVRCQUNLLCBTVUNDRVNTKQorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICB7IC8vc3RhdGUgMjoKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBMZXguU3RyaW5nVHJhbnNpdGlvbihFT0xfQ0hBUlMsIExleC5JR05PUkVfQ09OU1VNRSwgLTEpLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IExleC5FT0ZUcmFuc2l0aW9uKFNVQ0NFU1MpLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IExleC5EZWZhdWx0VHJhbnNpdGlvbihMZXguSUdOT1JFX0NPTlNVTUUsIC0yKQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc3RhdGVzOworICAgIH0KKyAgICBwcml2YXRlIHN0YXRpYyBMZXguVHJhbnNpdGlvbltdW10gc3RhdGVzOworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIGFyZ3NbXSkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgTGV4LlRyYW5zaXRpb25bXVtdIHN0YXRlcyA9IHt7IAorICAgICAgICAgICAgICAgIG5ldyBFT0xUcmFuc2l0aW9uKFNVQ0NFU1MpLmRlYnVnKHRydWUpLAorICAgICAgICAgICAgICAgIG5ldyBMZXguRU9GVHJhbnNpdGlvbigpLAorICAgICAgICAgICAgICAgIG5ldyBMZXguUGFyc2VFeGNlcHRpb25UcmFuc2l0aW9uKCJiYWQgdGVzdCBpbnB1dCIpCisgICAgICAgICAgICB9fTsKKyAgICAgICAgICAgIFN0cmluZyB0ZXh0ID0gIlxuXHJcbiMgSGVsbG8gV29ybGRcblxyXG5cblxuXHJcclxuI2hlbGxvICBrZHNqXG4iOworICAgICAgICAgICAgU3RyaW5nUmVhZGVyIHNyID0gbmV3IFN0cmluZ1JlYWRlcih0ZXh0KTsKKyAgICAgICAgICAgIFB1c2hiYWNrUmVhZGVyIHByID0gbmV3IFB1c2hiYWNrUmVhZGVyKHNyKTsKKyAgICAgICAgICAgIExleCBwYXJzZXIgPSBuZXcgTGV4KHN0YXRlcywgcHIpOworICAgICAgICAgICAgcGFyc2VyLmRlYnVnKHRydWUpOworICAgICAgICAgICAgLy9wYXJzZXIuZGVidWcodHJ1ZSk7CisgICAgICAgICAgICBpbnQgcyA9IHBhcnNlci5uZXh0VG9rZW4oKTsKKyAgICAgICAgICAgIHdoaWxlIChzID09IFNVQ0NFU1MpIHsKKyAgICAgICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbihwYXJzZXIuZ2V0RGF0YSgpKTsKKyAgICAgICAgICAgICAgICBzID0gcGFyc2VyLm5leHRUb2tlbigpOworICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGUpOworICAgICAgICB9CisgICAgfQorICAgIC8ve3tERUNMQVJFX0NPTlRST0xTCisgICAgLy99fQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9Fc2NhcGVUcmFuc2l0aW9uLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL0VzY2FwZVRyYW5zaXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wYTZmZmIwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9Fc2NhcGVUcmFuc2l0aW9uLmphdmEKQEAgLTAsMCArMSwxNTIgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMDQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvRXNjYXBlVHJhbnNpdGlvbi5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzAyLzE2IDAzOjA1OjI4ICQgCisgKiAkUmV2aXNpb246IDEuMiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRvb2wubG9jYWxlY29udmVydGVyOworaW1wb3J0IGphdmEuaW8uKjsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworLyoqCisgKiBBbiBlc2NhcGUgdHJhbnNpdGlvbiBwYXJzZXMgYSBQT1NJWCBlc2NhcGUgc2VxdWVuY2UuICBBbiBlc2NhcGUKKyAqIHNlcXVlbmNlIGNhbiBiZSBhIGhleCwgb2N0YWwsIG9yIGRlY2ltYWwgY29uc3RhbnQsIG9yIGFuIGVzY2FwZWQKKyAqIGNoYXJhY3Rlci4gIFRoZSByZXN1bHRhbnQgdmFsdWUgaXMgQUxXQVlTIG9uIGJ5dGUgbG9uZy4gIExvbmdlcgorICogZXNjYXBlZCB2YWx1ZXMgKGllLlx4RkY2Mykgb3ZlcmZsb3cgYW5kIGFyZSB0cnVuY2F0ZWQuICBBbiBlc2NhcGUKKyAqIGNoYXJhY3RlciBmb2xsb3dlZCBieSBhbiBFT0wgc2VxdWVuY2UgaXMgc2lsZW50bHkgZWF0ZW4uCisgKi8KK3B1YmxpYyBjbGFzcyBFc2NhcGVUcmFuc2l0aW9uIGV4dGVuZHMgQ29tcGxleFRyYW5zaXRpb24geworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgRXNjYXBlVHJhbnNpdGlvbiBHTE9CQUwgPSBuZXcgRXNjYXBlVHJhbnNpdGlvbihTVUNDRVNTKTsKKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgY2hhciBERUZBVUxUX0VTQ0FQRV9DSEFSID0gJ1xcJzsKKyAgICBwdWJsaWMgc3RhdGljIGNoYXIgRVNDQVBFX0NIQVIgPSBERUZBVUxUX0VTQ0FQRV9DSEFSOworICAgIAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBERUNJTUFMID0gMTsgICAvL2RlY2ltYWwgZXNjYXBlIHNlcXVlbmNlIHdhcyBwYXJzZWQKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgT0NUQUwgPSAyOyAgICAgLy9vY3RhbCBlc2NhcGUgc2VxdWVuY2Ugd2FzIHBhcnNlZAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBIRVggPSAzOyAgICAgICAvL2hleCBlc2NhcGUgc2VxdWVuY2Ugd2FzIHBhcnNlZAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBFU0NBUEUgPSA0OyAgICAvL2NoYXJhY3RlciBlc2NhcGUgc2VxdWVuY2Ugd2FzIHBhcnNlZAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBFT0wgPSA1OyAgICAgICAvL2FuIGVzY2FwZSBjaGFyYWN0ZXIgZm9sbG93ZWQgYnkgRU9GIGVhdGVuCisgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIE9DVEFMX0NIQVJTID0gIjAxMjM0NTY3IjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgREVDSU1BTF9DSEFSUyA9ICIwMTIzNDU2Nzg5IjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVYX0NIQVJTID0gIjAxMjM0NTY3ODlhYmNkZWZBQkNERUYiOworICAgIAorICAgICAgICAvKiogU2V0IHRoZSBlc2NhcGUgY2hhcmFjdGVyIHRvIHRoZSBkZWZhdWx0ICovCisgICAgcHVibGljIHN0YXRpYyBzeW5jaHJvbml6ZWQgY2hhciBzZXREZWZhdWx0RXNjYXBlQ2hhcigpIHsKKyAgICAgICAgcmV0dXJuIHNldEVzY2FwZUNoYXIoREVGQVVMVF9FU0NBUEVfQ0hBUik7CisgICAgfQorICAgIAorICAgICAgICAvKiogU2V0IHRoZSBlc2NhcGUgY2hhcmFjdGVyICovCisgICAgcHVibGljIHN0YXRpYyBzeW5jaHJvbml6ZWQgY2hhciBzZXRFc2NhcGVDaGFyKGNoYXIgYykgeworICAgICAgICBjaGFyIHJlc3VsdCA9IEVTQ0FQRV9DSEFSOworICAgICAgICBFU0NBUEVfQ0hBUiA9IGM7CisgICAgICAgIHRoZVN0YXRlcyA9IG51bGw7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBFc2NhcGVUcmFuc2l0aW9uKGludCBzdWNjZXNzKSB7CisgICAgICAgIHN1cGVyKHN1Y2Nlc3MpOworICAgICAgICAgICAgLy97e0lOSVRfQ09OVFJPTFMKKyAgICAgICAgLy99fQorfQorICAgIAorICAgIHB1YmxpYyBib29sZWFuIGFjY2VwdHMoaW50IGMpIHsKKyAgICAgICAgcmV0dXJuIEVTQ0FQRV9DSEFSID09IChjaGFyKWM7CisgICAgfQorICAgIAorICAgICAgICAvKiogQ29udmVydCB0aGUgYWNjZXB0ZWQgdGV4dCBpbnRvIHRoZSBhcHByb3ByaWF0ZSB1bmljb2RlIGNoYXJhY3RlciAqLworICAgIHByb3RlY3RlZCB2b2lkIGhhbmRsZVN1Y2Nlc3MoTGV4IHBhcnNlciwgU3RyaW5nQnVmZmVyIG91dHB1dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgc3dpdGNoIChwYXJzZXIuZ2V0U3RhdGUoKSkgeworICAgICAgICBjYXNlIERFQ0lNQUw6CisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKChjaGFyKXBhcnNlci5kYXRhQXNOdW1iZXIoMTApKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE9DVEFMOgorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgoY2hhcilwYXJzZXIuZGF0YUFzTnVtYmVyKDgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEhFWDoKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoKGNoYXIpcGFyc2VyLmRhdGFBc051bWJlcigxNikpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRVNDQVBFOgorICAgICAgICAgICAgcGFyc2VyLmFwcGVuZERhdGFUbyhvdXRwdXQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9MOgorICAgICAgICAgICAgLy9zaWxlbnRseSBlYXQgdGhlIEVPTCBjaGFyYWN0ZXJzCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC8vc2hvdWxkIG5ldmVyIGdldCBoZXJlCisgICAgICAgICAgICB0aHJvdyBuZXcgTGV4LlBhcnNlRXhjZXB0aW9uKCJJbnRlcm5hbCBlcnJvciBwYXJzaW5nIGVzY2FwZSBzZXF1ZW5jZSIpOworLy8gICAgICAgICAgcGFyc2VyLmFwcGVuZERhdGFUbyhvdXRwdXQpOworICAgICAgICB9CisgICAgfQorICAgICAgICAvKiogcmV0dXJuIHRoZSBzdGF0ZXMgZm9yIHRoaXMgdHJhbnNhY3Rpb24gKi8KKyAgICBwcm90ZWN0ZWQgTGV4LlRyYW5zaXRpb25bXVtdIGdldFN0YXRlcygpIHsKKyAgICAgICAgc3luY2hyb25pemVkIChnZXRDbGFzcygpKSB7CisgICAgICAgICAgICBpZiAodGhlU3RhdGVzID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAvL2NhY2hlIHRoZSBzdGF0ZXMgc28gdGhleSBjYW4gYmUgc2hhcmVkLiAgVGhleSBtdXN0CisgICAgICAgICAgICAgICAgLy9iZSByZWJ1aWx0IHdoZW4gdGhlIGVzY2FwZSBjaGFyYWN0ZXIgaXMgY2hhbmdlZC4KKyAgICAgICAgICAgICAgICB0aGVTdGF0ZXMgPSBuZXcgTGV4LlRyYW5zaXRpb25bXVtdIHsKKyAgICAgICAgICAgICAgICAgICAgeyAvL3N0YXRlIDA6IAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IExleC5DaGFyVHJhbnNpdGlvbihFU0NBUEVfQ0hBUiwgTGV4LklHTk9SRV9DT05TVU1FLCAtMSksCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgTGV4LlBhcnNlRXhjZXB0aW9uVHJhbnNpdGlvbigiaWxsZWdhbCBlc2NhcGUgY2hhcmFjdGVyIikKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAvL3N0YXRlIDE6CisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgTGV4LkVPRlRyYW5zaXRpb24oT0NUQUwpLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IExleC5DaGFyVHJhbnNpdGlvbignZCcsIExleC5JR05PUkVfQ09OU1VNRSwgLTMpLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IExleC5DaGFyVHJhbnNpdGlvbigneCcsIExleC5JR05PUkVfQ09OU1VNRSwgLTIpLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IExleC5TdHJpbmdUcmFuc2l0aW9uKE9DVEFMX0NIQVJTLCBMZXguQUNDVU1VTEFURV9DT05TVU1FLCAtNCksCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgTGV4LkNoYXJUcmFuc2l0aW9uKEVTQ0FQRV9DSEFSLCBMZXguQUNDVU1VTEFURV9DT05TVU1FLCBFU0NBUEUpLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEVPTFRyYW5zaXRpb24oRU9MKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBMZXguRGVmYXVsdFRyYW5zaXRpb24oTGV4LkFDQ1VNVUxBVEVfQ09OU1VNRSwgRVNDQVBFKQorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICB7IC8vc3RhdGUgMjogaGV4CisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgTGV4LkVPRlRyYW5zaXRpb24oSEVYKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBMZXguU3RyaW5nVHJhbnNpdGlvbihIRVhfQ0hBUlMsIExleC5BQ0NVTVVMQVRFX0NPTlNVTUUsIC0yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBMZXguRGVmYXVsdFRyYW5zaXRpb24oTGV4LklHTk9SRV9QVVRCQUNLLCBIRVgpCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIHsgLy9zdGF0ZSAzOiBkZWNpbWFsCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgTGV4LkVPRlRyYW5zaXRpb24oREVDSU1BTCksCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgTGV4LlN0cmluZ1RyYW5zaXRpb24oREVDSU1BTF9DSEFSUywgTGV4LkFDQ1VNVUxBVEVfQ09OU1VNRSwgLTMpLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IExleC5EZWZhdWx0VHJhbnNpdGlvbihMZXguSUdOT1JFX1BVVEJBQ0ssIERFQ0lNQUwpCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIHsgLy9zdGF0ZSA0OiBvY3RhbAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IExleC5FT0ZUcmFuc2l0aW9uKE9DVEFMKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBMZXguU3RyaW5nVHJhbnNpdGlvbihPQ1RBTF9DSEFSUywgTGV4LkFDQ1VNVUxBVEVfQ09OU1VNRSwgLTQpLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IExleC5EZWZhdWx0VHJhbnNpdGlvbihMZXguSUdOT1JFX1BVVEJBQ0ssIE9DVEFMKQorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRoZVN0YXRlczsKKyAgICB9CisgICAgcHJpdmF0ZSBzdGF0aWMgTGV4LlRyYW5zaXRpb25bXVtdIHRoZVN0YXRlcyA9IG51bGw7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgYXJnc1tdKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBMZXguVHJhbnNpdGlvbltdW10gc3RhdGVzID0ge3sgCisgICAgICAgICAgICAgICAgbmV3IEVzY2FwZVRyYW5zaXRpb24oU1VDQ0VTUyksCisgICAgICAgICAgICAgICAgbmV3IExleC5FT0ZUcmFuc2l0aW9uKCksCisgICAgICAgICAgICAgICAgbmV3IExleC5QYXJzZUV4Y2VwdGlvblRyYW5zaXRpb24oImJhZCB0ZXN0IGlucHV0IikKKyAgICAgICAgICAgIH19OworICAgICAgICAgICAgU3RyaW5nIHRleHQgPSAiXFxkMTAwXFx4QWZcXFxcXFw3NzdcXFxuXFwxMjNcXHgyMDI4XFx4MjAyOSI7CisgICAgICAgICAgICBTdHJpbmdSZWFkZXIgc3IgPSBuZXcgU3RyaW5nUmVhZGVyKHRleHQpOworICAgICAgICAgICAgUHVzaGJhY2tSZWFkZXIgcHIgPSBuZXcgUHVzaGJhY2tSZWFkZXIoc3IpOworICAgICAgICAgICAgTGV4IHBhcnNlciA9IG5ldyBMZXgoc3RhdGVzLCBwcik7CisgICAgICAgICAgICAvL3BhcnNlci5kZWJ1Zyh0cnVlKTsKKyAgICAgICAgICAgIGludCBzID0gcGFyc2VyLm5leHRUb2tlbigpOworICAgICAgICAgICAgd2hpbGUgKHMgPT0gU1VDQ0VTUykgeworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihwYXJzZXIuZ2V0U3RhdGUoKSk7CisgICAgICAgICAgICAgICAgcyA9IHBhcnNlci5uZXh0VG9rZW4oKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAvL3t7REVDTEFSRV9DT05UUk9MUworICAgIC8vfX0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvSUNVMkxvY2FsZVdyaXRlci5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9JQ1UyTG9jYWxlV3JpdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMDMyODdkMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvSUNVMkxvY2FsZVdyaXRlci5qYXZhCkBAIC0wLDAgKzEsMTI1IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMi0yMDA0LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL0lDVTJMb2NhbGVXcml0ZXIuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wNi8yMCAwMToxNzoxMiAkIAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisgCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50b29sLmxvY2FsZWNvbnZlcnRlcjsKKworaW1wb3J0IGphdmEuaW8uKjsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworcHVibGljIGNsYXNzIElDVTJMb2NhbGVXcml0ZXIgZXh0ZW5kcyBMb2NhbGVXcml0ZXIgeworICAgIHB1YmxpYyBJQ1UyTG9jYWxlV3JpdGVyKFByaW50U3RyZWFtIG91dCkgeworICAgICAgICBzdXBlcihvdXQpOworICAgICAgICAgICAgLy97e0lOSVRfQ09OVFJPTFMKKyAgICAgICAgLy99fQorfQorICAgIHB1YmxpYyBJQ1UyTG9jYWxlV3JpdGVyKFByaW50U3RyZWFtIG91dCwgUHJpbnRTdHJlYW0gZXJyKSB7CisgICAgICAgIHN1cGVyKG91dCwgZXJyKTsKKyAgICB9CisgICAgcHJvdGVjdGVkIHZvaWQgb3BlbihMb2NhbGUgbG9jYWxlKSB7CisgICAgICAgIHByaW50KGxvY2FsZS50b1N0cmluZygpKTsKKyAgICAgICAgcHJpbnRsbigiIHsiKTsKKyAgICAgICAgaW5kZW50KCk7CisgICAgfQorICAgIHByb3RlY3RlZCB2b2lkIHdyaXRlKFN0cmluZyB0YWcsIFN0cmluZyB2YWx1ZSkgeworICAgICAgICBwcmludCh0YWcpOworICAgICAgICBwcmludCgiIHsgIik7CisgICAgICAgIHByaW50U3RyaW5nKHZhbHVlKTsKKyAgICAgICAgcHJpbnRsbigiIH0iKTsKKyAgICB9CisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGUoU3RyaW5nIHRhZywgU3RyaW5nW10gdmFsdWUpIHsKKyAgICAgICAgaWYgKHRhZyAhPSBudWxsKSB7CisgICAgICAgICAgICBwcmludCh0YWcpOworICAgICAgICAgICAgcHJpbnRsbigiIHsgIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwcmludGxuKCJ7Iik7CisgICAgICAgIH0KKyAgICAgICAgaW5kZW50KCk7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgcHJpbnRTdHJpbmcodmFsdWVbaV0pOworICAgICAgICAgICAgICAgIHByaW50bG4oIiwiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgb3V0ZGVudCgpOworICAgICAgICBwcmludGxuKCJ9Iik7CisgICAgfQorICAgIHByb3RlY3RlZCB2b2lkIHdyaXRlKFN0cmluZyB0YWcsIE9iamVjdCBvKSB7CisgICAgICAgIGlmICgiQ29sbGF0aW9uRWxlbWVudHMiLmVxdWFscyh0YWcpKSB7CisgICAgICAgICAgICB3cml0ZVRhZ2dlZCh0YWcsKE9iamVjdFtdW10pbyk7CisgICAgICAgIH0gZWxzZSBpZiAoIShvIGluc3RhbmNlb2YgQ29sbGF0aW9uSXRlbVtdKSkgeworICAgICAgICAgICAgc3VwZXIud3JpdGUodGFnLCBvKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIENvbGxhdGlvbkl0ZW1bXSBpdGVtcyA9IChDb2xsYXRpb25JdGVtW10pbzsKKyAgICAgICAgICAgIGlmKGl0ZW1zWzBdIT1udWxsKXsKKyAgICAgICAgICAgICAgICBwcmludCgiU2VxdWVuY2UiKTsKKyAgICAgICAgICAgICAgICBwcmludGxuKCIgeyAiKTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGlmKGl0ZW1zW2ldIT1udWxsKXsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50U3RyaW5nKGl0ZW1zW2ldLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1zW2ldLmNvbW1lbnQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYlRvKDMwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiLy8iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGxuKGl0ZW1zW2ldLmNvbW1lbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHByaW50bG4oIn0iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBwcm90ZWN0ZWQgdm9pZCB3cml0ZVRhZ2dlZChTdHJpbmcgdGFnLCBPYmplY3RbXVtdIHZhbHVlKSB7CisgICAgICAgIHByaW50KHRhZyk7CisgICAgICAgIHByaW50bG4oIiB7ICIpOworICAgICAgICBpbmRlbnQoKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICB3cml0ZSgoU3RyaW5nKXZhbHVlW2ldWzBdLCB2YWx1ZVtpXVsxXSk7CisgICAgICAgICAgICB9CisgICAgICAgIG91dGRlbnQoKTsKKyAgICAgICAgcHJpbnRsbigifSIpOworICAgIH0KKyAgICBwcm90ZWN0ZWQgdm9pZCB3cml0ZTJEKFN0cmluZyB0YWcsIFN0cmluZ1tdW10gdmFsdWUpIHsKKyAgICAgICAgcHJpbnQodGFnKTsKKyAgICAgICAgcHJpbnRsbigiIHsgIik7CisgICAgICAgIGluZGVudCgpOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIHdyaXRlKG51bGwsIHZhbHVlW2ldKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgb3V0ZGVudCgpOworICAgICAgICBwcmludGxuKCJ9Iik7CisgICAgfQorICAgIHByb3RlY3RlZCB2b2lkIHdyaXRlVGFnZ2VkKFN0cmluZyB0YWcsIFN0cmluZ1tdW10gdmFsdWUpIHsKKyAgICAgICAgcHJpbnQodGFnKTsKKyAgICAgICAgcHJpbnRsbigiIHsgIik7CisgICAgICAgIGluZGVudCgpOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIHdyaXRlKHZhbHVlW2ldWzBdLCB2YWx1ZVtpXVsxXSk7CisgICAgICAgICAgICB9CisgICAgICAgIG91dGRlbnQoKTsKKyAgICAgICAgcHJpbnRsbigifSIpOworICAgIH0KKyAgICBwcm90ZWN0ZWQgdm9pZCBjbG9zZSgpIHsKKyAgICAgICAgb3V0ZGVudCgpOworICAgICAgICBwcmludGxuKCJ9Iik7CisgICAgfQorCisgICAgcHJvdGVjdGVkIFN0cmluZyBnZXRTdHJpbmdKb2luaW5nQ2hhcmFjdGVyKCkgeworICAgICAgICByZXR1cm4gIiI7CisgICAgfQorICAgIAorICAgIHByb3RlY3RlZCBib29sZWFuIGlzRXNjYXBlQ2hhcihmaW5hbCBjaGFyIGMpIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHByb3RlY3RlZCBTdHJpbmcgZ2V0RXNjYXBlQ2hhcigpIHsKKyAgICAgICAgcmV0dXJuICIldSI7CisgICAgfQorICAgIC8ve3tERUNMQVJFX0NPTlRST0xTCisgICAgLy99fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvSUNVM0xvY2FsZVdyaXRlci5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9JQ1UzTG9jYWxlV3JpdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY5MTk3MwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvSUNVM0xvY2FsZVdyaXRlci5qYXZhCkBAIC0wLDAgKzEsMjIwIEBACisvKioKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogQ29weXJpZ2h0IChDKSAyMDAyLTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogJFNvdXJjZTogICQgCisqICREYXRlOiAgJCAKKyogJFJldmlzaW9uOiAgJAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRvb2wubG9jYWxlY29udmVydGVyOworaW1wb3J0IGphdmEuaW8uKjsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKy8qKgorICogQGF1dGhvciByYW0KKyAqCisgKiBUbyBjaGFuZ2UgdGhpcyBnZW5lcmF0ZWQgY29tbWVudCBlZGl0IHRoZSB0ZW1wbGF0ZSB2YXJpYWJsZSAidHlwZWNvbW1lbnQiOgorICogV2luZG93PlByZWZlcmVuY2VzPkphdmE+VGVtcGxhdGVzLgorICogVG8gZW5hYmxlIGFuZCBkaXNhYmxlIHRoZSBjcmVhdGlvbiBvZiB0eXBlIGNvbW1lbnRzIGdvIHRvCisgKiBXaW5kb3c+UHJlZmVyZW5jZXM+SmF2YT5Db2RlIEdlbmVyYXRpb24uCisgKi8KK3B1YmxpYyBjbGFzcyBJQ1UzTG9jYWxlV3JpdGVyIGV4dGVuZHMgTG9jYWxlV3JpdGVyIHsKKyAgICBwdWJsaWMgSUNVM0xvY2FsZVdyaXRlcihQcmludFN0cmVhbSBvdXQpIHsKKyAgICAgICAgc3VwZXIob3V0KTsKKyAgICB9CisgICAgcHJpdmF0ZSBMaXN0UmVzb3VyY2VCdW5kbGUgYnVuZGxlID0gbnVsbDsKKyAgICBwcm90ZWN0ZWQgdm9pZCBvcGVuKExvY2FsZSBsb2NhbGUpIHsKKyAgICAgICAgcHJpbnQobG9jYWxlLnRvU3RyaW5nKCkpOworICAgICAgICBwcmludGxuKCIgeyIpOworICAgICAgICBpbmRlbnQoKTsKKyAgICB9CisgICAgcHVibGljIElDVTNMb2NhbGVXcml0ZXIoUHJpbnRTdHJlYW0gb3V0LCBQcmludFN0cmVhbSBlcnIpIHsKKyAgICAgICAgc3VwZXIob3V0LCBlcnIpOworICAgIH0KKyAgICBwdWJsaWMgSUNVM0xvY2FsZVdyaXRlcihMaXN0UmVzb3VyY2VCdW5kbGUgYnVuZGxlLFByaW50U3RyZWFtIG91dCwgUHJpbnRTdHJlYW0gZXJyKSB7CisgICAgICAgIHN1cGVyKG91dCwgZXJyKTsKKyAgICAgICAgdGhpcy5idW5kbGUgPSBidW5kbGU7CisgICAgfQorICAgIHB1YmxpYyB2b2lkIHdyaXRlKExvY2FsZSBsb2NhbGUpeworICAgICAgICBvcGVuKGxvY2FsZSk7CisgICAgICAgIEVudW1lcmF0aW9uIGtleXMgPSBidW5kbGUuZ2V0S2V5cygpOworICAgICAgICB3aGlsZShrZXlzLmhhc01vcmVFbGVtZW50cygpKXsKKyAgICAgICAgICAgIFN0cmluZyBrZXkgPSAoU3RyaW5nKSBrZXlzLm5leHRFbGVtZW50KCk7CisgICAgICAgICAgICBPYmplY3QgbyA9IGJ1bmRsZS5nZXRPYmplY3Qoa2V5KTsKKyAgICAgICAgICAgIHdyaXRlKGtleSwgbyk7CisgICAgICAgIH0KKyAgICAgICAgY2xvc2UoKTsKKyAgICB9CisgICAgcHVibGljIHZvaWQgd3JpdGUoU3RyaW5nIGtleSwgT2JqZWN0IG8peworICAgICAgICBpZihrZXkhPW51bGwpIHByaW50KGtleSk7CisgICAgICAgIGlmKG8gaW5zdGFuY2VvZiBTdHJpbmcpeworICAgICAgICAgICAgd3JpdGUoKFN0cmluZykgbyk7CisgICAgICAgIH1lbHNlIGlmKCBvIGluc3RhbmNlb2YgSW50ZWdlcltdKXsKKyAgICAgICAgICAgIHdyaXRlKChJbnRlZ2VyW10pIG8pOworICAgICAgICB9ZWxzZSBpZihvIGluc3RhbmNlb2YgYnl0ZVtdKXsKKyAgICAgICAgICAgIHdyaXRlKChieXRlW10pIG8pOworICAgICAgICB9ZWxzZSBpZihvIGluc3RhbmNlb2YgSW50ZWdlcil7CisgICAgICAgICAgICB3cml0ZSgoSW50ZWdlcikgbyk7CisgICAgICAgIH1lbHNlIGlmKG8gaW5zdGFuY2VvZiBPYmplY3RbXVtdKXsKKyAgICAgICAgICAgIHdyaXRlKChPYmplY3RbXVtdKSBvKTsKKyAgICAgICAgfWVsc2UgaWYobyBpbnN0YW5jZW9mIE9iamVjdFtdKXsKKyAgICAgICAgICAgIHdyaXRlKChPYmplY3RbXSkgbyk7CisgICAgICAgIH0KKyAgICB9CisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGUoU3RyaW5nIHN0cil7CisgICAgICAgIHByaW50KCJ7Iik7CisgICAgICAgIHByaW50U3RyaW5nKHN0cik7CisgICAgICAgIHByaW50bG4oIn0iKTsKKyAgICB9CisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGUoSW50ZWdlcltdIG8peworICAgICAgICBwcmludGxuKCI6aW50dmVjdG9yIHsgIik7CisgICAgICAgIGluZGVudCgpOworICAgICAgICBpZihvIT1udWxsKXsKKyAgICAgICAgICAgIGZvcihpbnQgaT0wOyBpPCBvLmxlbmd0aDsgaSsrKXsKKyAgICAgICAgICAgICAgICBwcmludChvW2ldLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIHByaW50bG4oIiwiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBvdXRkZW50KCk7CisgICAgICAgIHByaW50bG4oIiB9Iik7ICAgCisgICAgfQorICAgIHByaXZhdGUgU3RyaW5nIHRvSGV4KGJ5dGUgYil7CisgICAgICAgIGludCBpID0oaW50KSgoY2hhcikgKGIgJiAweEZGKSk7CisgICAgICAgIFN0cmluZyB0ZW1wID0gSW50ZWdlci50b0hleFN0cmluZyhpKTsgICAgCisgICAgICAgIGlmKHRlbXAubGVuZ3RoKCk8Mil7CisgICAgICAgICAgICByZXR1cm4gIjAiK3RlbXA7CisgICAgICAgIH1lbHNleworICAgICAgICAgICAgcmV0dXJuIHRlbXA7CisgICAgICAgIH0KKyAgICB9CisgICAgICAgIAorICAgIHByb3RlY3RlZCB2b2lkIHdyaXRlKGJ5dGVbXSBvKXsKKyAgICAgICAgcHJpbnQoIjpiaW57ICIpOworICAgICAgICBpbmRlbnQoKTsKKyAgICAgICAgaWYobyE9bnVsbCl7CisgICAgICAgICAgICBmb3IoaW50IGk9MDsgaTwgby5sZW5ndGg7IGkrKyl7CisgICAgICAgICAgICAgICAgcHJpbnQodG9IZXgob1tpXSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIG91dGRlbnQoKTsKKyAgICAgICAgcHJpbnRsbigiIH0iKTsgCisgICAgfQorICAgIHByb3RlY3RlZCB2b2lkIHdyaXRlKEludGVnZXIgbyl7CisgICAgICAgIHByaW50KCI6aW50IHsgIik7CisgICAgICAgIGluZGVudCgpOworICAgICAgICBpZihvIT1udWxsKXsKKyAgICAgICAgICAgIHByaW50KG8udG9TdHJpbmcoKSk7CisgICAgICAgIH0KKyAgICAgICAgb3V0ZGVudCgpOworICAgICAgICBwcmludGxuKCIgfSIpOworICAgIH0KKyAgICBwcm90ZWN0ZWQgdm9pZCB3cml0ZShPYmplY3RbXSBvKXsKKyAgICAgICAgU3RyaW5nIGtleSA9IG51bGw7CisgICAgICAgIHByaW50bG4oIjphcnJheSB7ICIpOworICAgICAgICBpbmRlbnQoKTsKKyAgICAgICAgZm9yKGludCBpPTA7IGk8by5sZW5ndGg7aSsrKXsKKyAgICAgICAgICAgIGlmKG9baV0gaW5zdGFuY2VvZiBTdHJpbmcpeworICAgICAgICAgICAgICAgIHByaW50U3RyaW5nKChTdHJpbmcpb1tpXSk7CisgICAgICAgICAgICB9ZWxzZXsKKyAgICAgICAgICAgICAgICB3cml0ZShrZXksb1tpXSk7ICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgICBwcmludGxuKCIsIik7CisgICAgICAgIH0KKyAgICAgICAgb3V0ZGVudCgpOworICAgICAgICBwcmludGxuKCIgfSIpOworICAgIH0KKyAgICBwcm90ZWN0ZWQgdm9pZCB3cml0ZShPYmplY3RbXVtdIG8peworICAgICAgICBTdHJpbmcga2V5ID0gbnVsbDsKKyAgICAgICAgcHJpbnRsbigiOnRhYmxlIHsiKTsKKyAgICAgICAgaW5kZW50KCk7CisgICAgICAgIGZvcihpbnQgaT0wOyBpPCBvLmxlbmd0aDtpKyspeworCisgICAgICAgICAgICBpZihvW2ldWzFdIGluc3RhbmNlb2YgU3RyaW5nKXsKKyAgICAgICAgICAgICAgICBwcmludCgoU3RyaW5nKSBvW2ldWzBdKTsKKyAgICAgICAgICAgICAgICBwcmludCgieyIpOworICAgICAgICAgICAgICAgIHByaW50U3RyaW5nKChTdHJpbmcpIG9baV1bMV0pOworICAgICAgICAgICAgICAgIHByaW50bG4oIn0iKTsKKyAgICAgICAgICAgIH1lbHNleworICAgICAgICAgICAgICAgIHdyaXRlKChTdHJpbmcpIG9baV1bMF0sIG9baV1bMV0pOworICAgICAgICAgICAgICAgIHByaW50bG4oIiIpOworICAgICAgICAgICAgfQorCisgICAgICAgIH0gICAKKyAgICAgICAgb3V0ZGVudCgpOworICAgICAgICBwcmludGxuKCIgfSIpOworICAgIH0KKyAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyAgICAvLy8gT25seSBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHN1cGVyIGNsYXNzIAorICAgIC8vLyBub3QgcmVxdWlyZWQgb3RoZXJ3aXNlCisgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyAgICAKKyAgICAvLy8vLy8vIEJFR0lOIC8vLy8vLy8vLy8vLy8vLy8vLworICAgIAorICAgIHByb3RlY3RlZCB2b2lkIHdyaXRlKFN0cmluZyB0YWcsIFN0cmluZyB2YWx1ZSkgeworICAgICAgICBwcmludCh0YWcpOworICAgICAgICBwcmludCgiIHsgIik7CisgICAgICAgIHByaW50U3RyaW5nKHZhbHVlKTsKKyAgICAgICAgcHJpbnRsbigiIH0iKTsKKyAgICB9CisgICAgCisKKyAgICBwcm90ZWN0ZWQgdm9pZCB3cml0ZShTdHJpbmcgdGFnLCBTdHJpbmdbXSB2YWx1ZSkgeworICAgICAgICBpZiAodGFnICE9IG51bGwpIHsKKyAgICAgICAgICAgIHByaW50KHRhZyk7CisgICAgICAgICAgICBwcmludGxuKCIgeyAiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHByaW50bG4oInsiKTsKKyAgICAgICAgfQorICAgICAgICBpbmRlbnQoKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBwcmludFN0cmluZyh2YWx1ZVtpXSk7CisgICAgICAgICAgICAgICAgcHJpbnRsbigiLCIpOworICAgICAgICAgICAgfQorICAgICAgICBvdXRkZW50KCk7CisgICAgICAgIHByaW50bG4oIn0iKTsKKyAgICB9CisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGUyRChTdHJpbmcgdGFnLCBTdHJpbmdbXVtdIHZhbHVlKSB7CisgICAgICAgIHByaW50KHRhZyk7CisgICAgICAgIHByaW50bG4oIiB7ICIpOworICAgICAgICBpbmRlbnQoKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICB3cml0ZShudWxsLCB2YWx1ZVtpXSk7CisgICAgICAgICAgICB9CisgICAgICAgIG91dGRlbnQoKTsKKyAgICAgICAgcHJpbnRsbigifSIpOworICAgIH0KKyAgICBwcm90ZWN0ZWQgdm9pZCB3cml0ZVRhZ2dlZChTdHJpbmcgdGFnLCBPYmplY3RbXVtdIHZhbHVlKSB7CisgICAgICAgIHByaW50KHRhZyk7CisgICAgICAgIHByaW50bG4oIiB7ICIpOworICAgICAgICBpbmRlbnQoKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICB3cml0ZSgoU3RyaW5nKXZhbHVlW2ldWzBdLCB2YWx1ZVtpXVsxXSk7CisgICAgICAgICAgICB9CisgICAgICAgIG91dGRlbnQoKTsKKyAgICAgICAgcHJpbnRsbigifSIpOworICAgIH0KKyAgICBwcm90ZWN0ZWQgdm9pZCB3cml0ZVRhZ2dlZChTdHJpbmcgdGFnLCBTdHJpbmdbXVtdIHZhbHVlKSB7CisgICAgICAgIHByaW50KHRhZyk7CisgICAgICAgIHByaW50bG4oIiB7ICIpOworICAgICAgICBpbmRlbnQoKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICB3cml0ZSh2YWx1ZVtpXVswXSwgdmFsdWVbaV1bMV0pOworICAgICAgICAgICAgfQorICAgICAgICBvdXRkZW50KCk7CisgICAgICAgIHByaW50bG4oIn0iKTsKKyAgICB9CisgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8gRU5EIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyAgICBwcm90ZWN0ZWQgdm9pZCBjbG9zZSgpIHsKKyAgICAgICAgb3V0ZGVudCgpOworICAgICAgICBwcmludGxuKCJ9Iik7CisgICAgICAgIHN1cGVyLmNsb3NlRmlsZUhhbmRsZSgpOworICAgIH0KKworICAgIHByb3RlY3RlZCBTdHJpbmcgZ2V0U3RyaW5nSm9pbmluZ0NoYXJhY3RlcigpIHsKKyAgICAgICAgcmV0dXJuICIiOworICAgIH0KKyAgICAKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvSUNVTG9jYWxlV3JpdGVyLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL0lDVUxvY2FsZVdyaXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjcxYTQ2YTgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL0lDVUxvY2FsZVdyaXRlci5qYXZhCkBAIC0wLDAgKzEsMTE4IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMi0yMDA0LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL0lDVUxvY2FsZVdyaXRlci5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzA2LzIwIDAxOjE3OjEyICQgCisgKiAkUmV2aXNpb246IDEuMyAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRvb2wubG9jYWxlY29udmVydGVyOworCitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGphdmEudXRpbC4qOworCitwdWJsaWMgY2xhc3MgSUNVTG9jYWxlV3JpdGVyIGV4dGVuZHMgTG9jYWxlV3JpdGVyIHsKKyAgICBwdWJsaWMgSUNVTG9jYWxlV3JpdGVyKFByaW50U3RyZWFtIG91dCkgeworICAgICAgICBzdXBlcihvdXQpOworICAgIH0KKyAgICBwdWJsaWMgSUNVTG9jYWxlV3JpdGVyKFByaW50U3RyZWFtIG91dCwgUHJpbnRTdHJlYW0gZXJyKSB7CisgICAgICAgIHN1cGVyKG91dCwgZXJyKTsKKyAgICB9CisgICAgcHJvdGVjdGVkIHZvaWQgb3BlbihMb2NhbGUgbG9jYWxlKSB7CisgICAgICAgIHByaW50KGxvY2FsZS50b1N0cmluZygpKTsKKyAgICAgICAgcHJpbnRsbigiIHsiKTsKKyAgICAgICAgaW5kZW50KCk7CisgICAgfQorICAgIHByb3RlY3RlZCB2b2lkIHdyaXRlKFN0cmluZyB0YWcsIE9iamVjdCBvKSB7CisgICAgICAgIGlmICgiQ29sbGF0aW9uRWxlbWVudHMiLmVxdWFscyh0YWcpKSB7CisgICAgICAgICAgICBpZihvIGluc3RhbmNlb2YgT2JqZWN0W11bXSl7CisgICAgICAgICAgICAgICAgd3JpdGVUYWdnZWQodGFnLChPYmplY3RbXVtdKW8pOworICAgICAgICAgICAgfWVsc2V7CisgICAgICAgICAgICAgICB3cml0ZSh0YWcsKFN0cmluZylvKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmICghKG8gaW5zdGFuY2VvZiBDb2xsYXRpb25JdGVtW10pKSB7CisgICAgICAgICAgICBzdXBlci53cml0ZSh0YWcsIG8pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgQ29sbGF0aW9uSXRlbVtdIGl0ZW1zID0gKENvbGxhdGlvbkl0ZW1bXSlvOworICAgICAgICAgICAgaWYoaXRlbXNbMF0hPW51bGwpeworCSAgICAgICAgICAgIHByaW50KCJTZXF1ZW5jZSIpOworCSAgICAgICAgICAgIHByaW50bG4oIiB7ICIpOworCSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHsKKwkgICAgICAgICAgICAgICAgaWYoaXRlbXNbaV0hPW51bGwpeworCSAgICAgICAgICAgICAgICAgICAgcHJpbnRTdHJpbmcoaXRlbXNbaV0udG9TdHJpbmcoKSk7CisJICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbXNbaV0uY29tbWVudCAhPSBudWxsKSB7CisJICAgICAgICAgICAgICAgICAgICAgICAgdGFiVG8oMzApOworCSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCIvLyIpOworCSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50bG4oaXRlbXNbaV0uY29tbWVudCk7CisJICAgICAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICB9CisJICAgICAgICAgICAgcHJpbnRsbigifSIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHByb3RlY3RlZCB2b2lkIHdyaXRlKFN0cmluZyB0YWcsIFN0cmluZyB2YWx1ZSkgeworICAgICAgICBwcmludCh0YWcpOworICAgICAgICBwcmludCgiIHsgIik7CisgICAgICAgIHByaW50U3RyaW5nKHZhbHVlKTsKKyAgICAgICAgcHJpbnRsbigiIH0iKTsKKyAgICB9CisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGUoU3RyaW5nIHRhZywgU3RyaW5nW10gdmFsdWUpIHsKKyAgICAgICAgaWYgKHRhZyAhPSBudWxsKSB7CisgICAgICAgICAgICBwcmludCh0YWcpOworICAgICAgICAgICAgcHJpbnRsbigiIHsgIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwcmludGxuKCJ7Iik7CisgICAgICAgIH0KKyAgICAgICAgaW5kZW50KCk7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgcHJpbnRTdHJpbmcodmFsdWVbaV0pOworICAgICAgICAgICAgICAgIHByaW50bG4oIiwiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgb3V0ZGVudCgpOworICAgICAgICBwcmludGxuKCJ9Iik7CisgICAgfQorICAgIHByb3RlY3RlZCB2b2lkIHdyaXRlMkQoU3RyaW5nIHRhZywgU3RyaW5nW11bXSB2YWx1ZSkgeworICAgICAgICBwcmludCh0YWcpOworICAgICAgICBwcmludGxuKCIgeyAiKTsKKyAgICAgICAgaW5kZW50KCk7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgd3JpdGUobnVsbCwgdmFsdWVbaV0pOworICAgICAgICAgICAgfQorICAgICAgICBvdXRkZW50KCk7CisgICAgICAgIHByaW50bG4oIn0iKTsKKyAgICB9CisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVUYWdnZWQoU3RyaW5nIHRhZywgT2JqZWN0W11bXSB2YWx1ZSkgeworICAgICAgICBwcmludCh0YWcpOworICAgICAgICBwcmludGxuKCIgeyAiKTsKKyAgICAgICAgaW5kZW50KCk7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgd3JpdGUoKFN0cmluZyl2YWx1ZVtpXVswXSwgdmFsdWVbaV1bMV0pOworICAgICAgICAgICAgfQorICAgICAgICBvdXRkZW50KCk7CisgICAgICAgIHByaW50bG4oIn0iKTsKKyAgICB9CisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVUYWdnZWQoU3RyaW5nIHRhZywgU3RyaW5nW11bXSB2YWx1ZSkgeworICAgICAgICBwcmludCh0YWcpOworICAgICAgICBwcmludGxuKCIgeyAiKTsKKyAgICAgICAgaW5kZW50KCk7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgd3JpdGUodmFsdWVbaV1bMF0sIHZhbHVlW2ldWzFdKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgb3V0ZGVudCgpOworICAgICAgICBwcmludGxuKCJ9Iik7CisgICAgfQorICAgIHByb3RlY3RlZCB2b2lkIGNsb3NlKCkgeworICAgICAgICBvdXRkZW50KCk7CisgICAgICAgIHByaW50bG4oIn0iKTsKKyAgICAgICAgc3VwZXIuY2xvc2VGaWxlSGFuZGxlKCk7CisgICAgfQorCisgICAgcHJvdGVjdGVkIFN0cmluZyBnZXRTdHJpbmdKb2luaW5nQ2hhcmFjdGVyKCkgeworICAgICAgICByZXR1cm4gIiI7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9KYXZhMUxvY2FsZVdyaXRlci5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9KYXZhMUxvY2FsZVdyaXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjZhMGMyOTgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL0phdmExTG9jYWxlV3JpdGVyLmphdmEKQEAgLTAsMCArMSwxNDcgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMDQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvSmF2YTFMb2NhbGVXcml0ZXIuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNToyOCAkIAorICogJFJldmlzaW9uOiAxLjIgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50b29sLmxvY2FsZWNvbnZlcnRlcjsKKworaW1wb3J0IGphdmEuaW8uKjsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworcHVibGljIGNsYXNzIEphdmExTG9jYWxlV3JpdGVyIGV4dGVuZHMgTG9jYWxlV3JpdGVyIHsKKyAgICBwdWJsaWMgSmF2YTFMb2NhbGVXcml0ZXIoUHJpbnRTdHJlYW0gb3V0KSB7CisgICAgICAgIHN1cGVyKG91dCk7CisgICAgICAgICAgICAvL3t7SU5JVF9DT05UUk9MUworICAgICAgICAvL319CisgICAgfQorICAgIAorICAgIHB1YmxpYyBKYXZhMUxvY2FsZVdyaXRlcihQcmludFN0cmVhbSBvdXQsIFByaW50U3RyZWFtIGVycikgeworICAgICAgICBzdXBlcihvdXQsIGVycik7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIHdyaXRlKExvY2FsZSBsb2NhbGUsIEhhc2h0YWJsZSBsb2NhbGVEYXRhKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBIYXNodGFibGUgdGVtcCA9IG5ldyBOZXV0cmFsVG9KMUNvbnZlcnRlcihsb2NhbGUpLmNvbnZlcnQobG9jYWxlRGF0YSk7CisgICAgICAgICAgICBzdXBlci53cml0ZShsb2NhbGUsIHRlbXApOworICAgICAgICB9IGNhdGNoIChMb2NhbGVDb252ZXJ0ZXIuQ29udmVyc2lvbkVycm9yIGUpIHsKKyAgICAgICAgICAgIGVyci5wcmludGxuKGUpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJvdGVjdGVkIHZvaWQgb3BlbihMb2NhbGUgbG9jYWxlKSB7CisgICAgICAgIHByaW50KEhFQURFUjEpOworICAgICAgICBwcmludChsb2NhbGUudG9TdHJpbmcoKSk7CisgICAgICAgIHByaW50KEhFQURFUjIpOworICAgICAgICBwcmludChsb2NhbGUudG9TdHJpbmcoKSk7CisgICAgICAgIHByaW50bG4oSEVBREVSMyk7CisgICAgICAgIGluZGVudCgzKTsKKyAgICB9CisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGUoU3RyaW5nIHRhZywgU3RyaW5nIHZhbHVlKSB7CisgICAgICAgIHByaW50KCJ7ICIpOworICAgICAgICBwcmludFN0cmluZyh0YWcpOworICAgICAgICBwcmludCgiLCAiKTsKKyAgICAgICAgcHJpbnRTdHJpbmcodmFsdWUpOworICAgICAgICBwcmludGxuKCIgfSwiKTsKKyAgICB9CisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGUoU3RyaW5nIHRhZywgU3RyaW5nW10gdmFsdWUpIHsKKyAgICAgICAgcHJpbnQoInsgIik7CisgICAgICAgIGlmICh0YWcgIT0gbnVsbCkgeworICAgICAgICAgICAgcHJpbnRTdHJpbmcodGFnKTsKKyAgICAgICAgICAgIHByaW50bG4oIiwiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHByaW50bG4oIiIpOworICAgICAgICB9CisgICAgICAgIGluZGVudCgpOworICAgICAgICAgICAgcHJpbnRsbigibmV3IFN0cmluZ1tdIHsiKTsKKyAgICAgICAgICAgIGluZGVudCgpOworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRTdHJpbmcodmFsdWVbaV0pOworICAgICAgICAgICAgICAgICAgICBwcmludGxuKCIsIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgb3V0ZGVudCgpOworICAgICAgICAgICAgcHJpbnRsbigifSIpOworICAgICAgICBvdXRkZW50KCk7CisgICAgICAgIHByaW50bG4oIn0sIik7CisgICAgfQorICAgIHByb3RlY3RlZCB2b2lkIHdyaXRlMkQoU3RyaW5nIHRhZywgU3RyaW5nW11bXSB2YWx1ZSkgeworICAgICAgICBwcmludCgieyAiKTsKKyAgICAgICAgcHJpbnRTdHJpbmcodGFnKTsKKyAgICAgICAgcHJpbnRsbigiLCIpOworICAgICAgICBpbmRlbnQoKTsKKyAgICAgICAgICAgIHByaW50bG4oIm5ldyBTdHJpbmdbXVtdIHsiKTsKKyAgICAgICAgICAgIGluZGVudCgpOworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRsbigieyIpOworICAgICAgICAgICAgICAgICAgICBpbmRlbnQoKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCB2YWx1ZVtpXS5sZW5ndGg7IGorKykgeworICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRTdHJpbmcodmFsdWVbaV1bal0pOworICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRsbigiLCIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIG91dGRlbnQoKTsKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRsbigifSwiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBvdXRkZW50KCk7CisgICAgICAgICAgICBwcmludGxuKCJ9Iik7CisgICAgICAgIG91dGRlbnQoKTsKKyAgICAgICAgcHJpbnRsbigifSwiKTsKKyAgICB9CisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVUYWdnZWQoU3RyaW5nIHRhZywgU3RyaW5nW11bXSB2YWx1ZSkgeworICAgICAgICBwcmludCgieyAiKTsKKyAgICAgICAgcHJpbnRTdHJpbmcodGFnKTsKKyAgICAgICAgcHJpbnRsbigiLCIpOworICAgICAgICBpbmRlbnQoKTsKKyAgICAgICAgICAgIHByaW50bG4oIm5ldyBTdHJpbmdbXVtdIHsiKTsKKyAgICAgICAgICAgIGluZGVudCgpOworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgd3JpdGUodmFsdWVbaV1bMF0sIHZhbHVlW2ldWzFdKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBvdXRkZW50KCk7CisgICAgICAgICAgICBwcmludGxuKCJ9Iik7CisgICAgICAgIG91dGRlbnQoKTsKKyAgICAgICAgcHJpbnRsbigifSwiKTsKKyAgICB9CisgICAgcHJvdGVjdGVkIHZvaWQgY2xvc2UoKSB7CisgICAgICAgIG91dGRlbnQoMyk7CisgICAgICAgIHByaW50KEZPT1RFUik7CisgICAgfQorCisgICAgcHJvdGVjdGVkIHZvaWQgYXBwZW5kRXNjYXBlZENoYXIoY2hhciBjLCBTdHJpbmdCdWZmZXIgYnVmZmVyKSB7CisgICAgICAgIGlmIChjIDwgJ1x1MDAyMCcgfHwgYyA9PSAnIicgfHwgYyA9PSAnXFwnKSB7CisgICAgICAgICAgICBidWZmZXIuYXBwZW5kKCdcXCcpOworICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChIRVhfRElHSVRbKGMgJiAwNzAwKSA+PiA2XSk7IC8vIEhFWF9ESUdJVCB3b3JrcyBmb3Igb2N0YWwKKyAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoSEVYX0RJR0lUWyhjICYgMDA3MCkgPj4gM10pOworICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChIRVhfRElHSVRbKGMgJiAwMDA3KV0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc3VwZXIuYXBwZW5kRXNjYXBlZENoYXIoYywgYnVmZmVyKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByb3RlY3RlZCBTdHJpbmcgZ2V0U3RyaW5nSm9pbmluZ0NoYXJhY3RlcigpIHsKKyAgICAgICAgcmV0dXJuICIrIjsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUjEgPSAKKyAgICAgICAgICAgICJwYWNrYWdlIGphdmEudGV4dC5yZXNvdXJjZXM7XG4iKworICAgICAgICAgICAgInB1YmxpYyBjbGFzcyBMb2NhbGVFbGVtZW50c18iOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBIRUFERVIyID0gCisgICAgICAgICAgICAiIGV4dGVuZHMgTG9jYWxlRGF0YSB7XG4iKworICAgICAgICAgICAgIiAgICBwdWJsaWMgTG9jYWxlRWxlbWVudHNfIjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSMyA9IAorICAgICAgICAiKCkge1xuIisKKyAgICAgICAgIiAgICAgICAgc3VwZXIuaW5pdCh0YWJsZSk7XG4iKworICAgICAgICAiICAgIH1cbiIrCisgICAgICAgICIgICAgc3RhdGljIFN0cmluZyB0YWJsZSBbXT0iOworICAgICAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgRk9PVEVSID0gCisgICAgICAgICIgICAgfVxuIisKKyAgICAgICAgIn0iOworICAgIC8ve3tERUNMQVJFX0NPTlRST0xTCisgICAgLy99fQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9KYXZhTG9jYWxlV3JpdGVyLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL0phdmFMb2NhbGVXcml0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5kZjEwZmU1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9KYXZhTG9jYWxlV3JpdGVyLmphdmEKQEAgLTAsMCArMSwxNzAgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMDQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvSmF2YUxvY2FsZVdyaXRlci5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzAyLzE2IDAzOjA1OjI5ICQgCisgKiAkUmV2aXNpb246IDEuMiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRvb2wubG9jYWxlY29udmVydGVyOworCitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGphdmEudXRpbC4qOworCitwdWJsaWMgY2xhc3MgSmF2YUxvY2FsZVdyaXRlciBleHRlbmRzIExvY2FsZVdyaXRlciB7CisgICAgcHVibGljIEphdmFMb2NhbGVXcml0ZXIoUHJpbnRTdHJlYW0gb3V0KSB7CisgICAgICAgIHN1cGVyKG91dCk7CisgICAgfQorICAgIHB1YmxpYyBKYXZhTG9jYWxlV3JpdGVyKFByaW50U3RyZWFtIG91dCwgUHJpbnRTdHJlYW0gZXJyKSB7CisgICAgICAgIHN1cGVyKG91dCwgZXJyKTsKKyAgICB9CisgICAgcHVibGljIHZvaWQgb3BlbihMb2NhbGUgbG9jYWxlKSB7CisgICAgICAgIHByaW50bG4oSEVBREVSKTsKKyAgICAgICAgaW5kZW50KDMpOworICAgIH0KKyAgICBwcm90ZWN0ZWQgdm9pZCB3cml0ZShTdHJpbmcgdGFnLCBPYmplY3QgbykgeworICAgICAgICBpZiAoIkNvbGxhdGlvbkVsZW1lbnRzIi5lcXVhbHModGFnKSkgeworICAgICAgICAgICAgIHdyaXRlVGFnZ2VkKHRhZywoT2JqZWN0W11bXSlvKTsKKyAgICAgICAgfSBlbHNlIGlmICghKG8gaW5zdGFuY2VvZiBDb2xsYXRpb25JdGVtW10pKSB7CisgICAgICAgICAgICBzdXBlci53cml0ZSh0YWcsIG8pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgQ29sbGF0aW9uSXRlbVtdIGl0ZW1zID0gKENvbGxhdGlvbkl0ZW1bXSlvOworICAgICAgICAgICAgcHJpbnQoInsgIik7CisgICAgICAgICAgICBwcmludFN0cmluZygiQ29sbGF0aW9uRWxlbWVudHMiKTsKKyAgICAgICAgICAgIHByaW50bG4oIiwgIik7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYoaXRlbXNbaV0hPW51bGwpeworICAgICAgICAgICAgICAgICAgICBwcmludFN0cmluZyhpdGVtc1tpXS50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1zW2ldLmNvbW1lbnQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoIisiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRhYlRvKDMwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCIvLyIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRsbihpdGVtc1tpXS5jb21tZW50KTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50bG4oIisiKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHByaW50bG4oIlwiXCIiKTsKKyAgICAgICAgICAgIHByaW50bG4oIiB9LCIpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgd3JpdGUoU3RyaW5nIHRhZywgU3RyaW5nIHZhbHVlKSB7CisgICAgICAgIHByaW50KCJ7ICIpOworICAgICAgICBwcmludFN0cmluZyh0YWcpOworICAgICAgICBwcmludCgiLCAiKTsKKyAgICAgICAgcHJpbnRTdHJpbmcodmFsdWUpOworICAgICAgICBwcmludGxuKCIgfSwiKTsKKyAgICB9CisgICAgcHVibGljIHZvaWQgd3JpdGUoU3RyaW5nIHRhZywgU3RyaW5nW10gdmFsdWUpIHsKKyAgICAgICAgcHJpbnQoInsgIik7CisgICAgICAgIGlmICh0YWcgIT0gbnVsbCkgeworICAgICAgICAgICAgcHJpbnRTdHJpbmcodGFnKTsKKyAgICAgICAgICAgIHByaW50bG4oIiwiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHByaW50bG4oIiIpOworICAgICAgICB9CisgICAgICAgIGluZGVudCgpOworICAgICAgICAgICAgcHJpbnRsbigibmV3IFN0cmluZ1tdIHsiKTsKKyAgICAgICAgICAgIGluZGVudCgpOworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRTdHJpbmcodmFsdWVbaV0pOworICAgICAgICAgICAgICAgICAgICBwcmludGxuKCIsIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgb3V0ZGVudCgpOworICAgICAgICAgICAgcHJpbnRsbigifSIpOworICAgICAgICBvdXRkZW50KCk7CisgICAgICAgIHByaW50bG4oIn0sIik7CisgICAgfQorICAgIHB1YmxpYyB2b2lkIHdyaXRlMkQoU3RyaW5nIHRhZywgU3RyaW5nW11bXSB2YWx1ZSkgeworICAgICAgICBwcmludCgieyAiKTsKKyAgICAgICAgcHJpbnRTdHJpbmcodGFnKTsKKyAgICAgICAgcHJpbnRsbigiLCIpOworICAgICAgICBpbmRlbnQoKTsKKyAgICAgICAgICAgIHByaW50bG4oIm5ldyBTdHJpbmdbXVtdIHsiKTsKKyAgICAgICAgICAgIGluZGVudCgpOworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRsbigieyIpOworICAgICAgICAgICAgICAgICAgICBpbmRlbnQoKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCB2YWx1ZVtpXS5sZW5ndGg7IGorKykgeworICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRTdHJpbmcodmFsdWVbaV1bal0pOworICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRsbigiLCIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIG91dGRlbnQoKTsKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRsbigifSwiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBvdXRkZW50KCk7CisgICAgICAgICAgICBwcmludGxuKCJ9Iik7CisgICAgICAgIG91dGRlbnQoKTsKKyAgICAgICAgcHJpbnRsbigifSwiKTsKKyAgICB9CisgICAgcHVibGljIHZvaWQgd3JpdGVUYWdnZWQoU3RyaW5nIHRhZywgU3RyaW5nW11bXSB2YWx1ZSkgeworICAgICAgICBwcmludCgieyAiKTsKKyAgICAgICAgcHJpbnRTdHJpbmcodGFnKTsKKyAgICAgICAgcHJpbnRsbigiLCIpOworICAgICAgICBpbmRlbnQoKTsKKyAgICAgICAgICAgIHByaW50bG4oIm5ldyBTdHJpbmdbXVtdIHsiKTsKKyAgICAgICAgICAgIGluZGVudCgpOworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgd3JpdGUodmFsdWVbaV1bMF0sIHZhbHVlW2ldWzFdKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBvdXRkZW50KCk7CisgICAgICAgICAgICBwcmludGxuKCJ9Iik7CisgICAgICAgIG91dGRlbnQoKTsKKyAgICAgICAgcHJpbnRsbigifSwiKTsKKyAgICB9CisgICAgcHVibGljIHZvaWQgd3JpdGVUYWdnZWQoU3RyaW5nIHRhZywgT2JqZWN0W11bXSB2YWx1ZSkgeworICAgICAgICBwcmludCgieyAiKTsKKyAgICAgICAgcHJpbnRTdHJpbmcodGFnKTsKKyAgICAgICAgcHJpbnRsbigiLCIpOworICAgICAgICBpbmRlbnQoKTsKKyAgICAgICAgICAgIHByaW50bG4oIm5ldyBTdHJpbmdbXVtdIHsiKTsKKyAgICAgICAgICAgIGluZGVudCgpOworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgd3JpdGUoKFN0cmluZyl2YWx1ZVtpXVswXSwgdmFsdWVbaV1bMV0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG91dGRlbnQoKTsKKyAgICAgICAgICAgIHByaW50bG4oIn0iKTsKKyAgICAgICAgb3V0ZGVudCgpOworICAgICAgICBwcmludGxuKCJ9LCIpOworICAgIH0KKyAgICBwdWJsaWMgdm9pZCBjbG9zZSgpIHsKKyAgICAgICAgb3V0ZGVudCgzKTsKKyAgICAgICAgcHJpbnQoRk9PVEVSKTsKKyAgICAgICAgcHJpbnRsbigiIik7CisgICAgfQorCisgICAgcHJvdGVjdGVkIHZvaWQgYXBwZW5kRXNjYXBlZENoYXIoY2hhciBjLCBTdHJpbmdCdWZmZXIgYnVmZmVyKSB7CisgICAgICAgIGlmIChjIDwgJ1x1MDAyMCcgfHwgYyA9PSAnIicgfHwgYyA9PSAnXFwnKSB7CisgICAgICAgICAgICBidWZmZXIuYXBwZW5kKCdcXCcpOworICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChIRVhfRElHSVRbKGMgJiAwNzAwKSA+PiA2XSk7IC8vIEhFWF9ESUdJVCB3b3JrcyBmb3Igb2N0YWwKKyAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoSEVYX0RJR0lUWyhjICYgMDA3MCkgPj4gM10pOworICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChIRVhfRElHSVRbKGMgJiAwMDA3KV0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc3VwZXIuYXBwZW5kRXNjYXBlZENoYXIoYywgYnVmZmVyKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByb3RlY3RlZCBTdHJpbmcgZ2V0U3RyaW5nSm9pbmluZ0NoYXJhY3RlcigpIHsKKyAgICAgICAgcmV0dXJuICIrIjsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEhFQURFUiA9IAorICAgICAgICAicGFja2FnZSBqYXZhLnRleHQucmVzb3VyY2VzO1xuIisKKyAgICAgICAgImltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlO1xuIisKKyAgICAgICAgInB1YmxpYyBjbGFzcyBUZXN0TG9jYWxlRWxlbWVudHMgZXh0ZW5kcyBMaXN0UmVzb3VyY2VCdW5kbGUge1xuIisKKyAgICAgICAgIiAgICBwdWJsaWMgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHtcbiIrCisgICAgICAgICIgICAgICAgIHJldHVybiBuZXcgT2JqZWN0W11bXSB7IjsKKyAgICAgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEZPT1RFUiA9IAorICAgICAgICAiICAgICAgICB9O1xuIisKKyAgICAgICAgIiAgICB9XG4iKworICAgICAgICAifSI7CisgICAgLy97e0RFQ0xBUkVfQ09OVFJPTFMKKyAgICAvL319Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL0xleC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9MZXguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44OWU0NWY1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9MZXguamF2YQpAQCAtMCwwICsxLDQyMCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAwNCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9MZXguamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNToyOSAkIAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50b29sLmxvY2FsZWNvbnZlcnRlcjsKKworaW1wb3J0IGphdmEuaW8uKjsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworLyoqCisgKiBBIExleCBpcyBhIHN0YXRlIG1hY2hpbmUuICBUcmFuc2l0aW9ucyBjYW4gYmUgYWN0aXZhdGVkCisgKiBhcmJpdHJhcmlseSBhbmQgY2FuIGNvbnN1bWUgYXJiaXRyYXJ5IGFtb3VudHMgb2YgdGV4dC4KKyAqIEEgdHJhbnNpdGlvbiBzaW1wbHkgc2F5cyBpdCBjYW4gY29uc3VtZSB0aGUgbmV4dCBjaGFyYWN0ZXIKKyAqIGFuZCByZXR1cm5zIHRoZSBzdGF0ZSB0aGF0IHRoZSBtYWNoaW5lIHNob3VsZCB0cmFuc2l0aW9uIGludG8uCisgKiBTdGF0ZXMgdGhhdCBhcmUgPiAwIGFyZSBmaW5hbCBzdGF0ZXMgYW5kIGNhdXNlIHRoZSBuZXh0VG9rZW4KKyAqIHJvdXRpbmUgdG8gcmV0dXJuIGEgdmFsdWUuCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBMZXggeworICAgIHByaXZhdGUgVHJhbnNpdGlvbltdW10gc3RhdGVzOyAgLy9maW5hbAorICAgIHByaXZhdGUgUHVzaGJhY2tSZWFkZXIgaW5wdXQ7ICAgLy9maW5hbAorICAgIHByaXZhdGUgaW50IHN0YXRlOworICAgIHByaXZhdGUgU3RyaW5nIGRhdGE7CisgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmdCdWZmZXIgZGF0YUJ1ZmZlciA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICBwcml2YXRlIGJvb2xlYW4gZGVidWdNZXNzYWdlc09uOworICAgIHByaXZhdGUgU3RyaW5nIGRlYnVnVGFnOworICAgIAorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEVORF9PRl9GSUxFID0gSW50ZWdlci5NQVhfVkFMVUU7CisKKyAgICAgICAgLyoqIENvbnN0cnVjdCBhIG5ldyBtYWNoaW5lLiAgTk9URTogc2V0SW5wdXQgbXVzdCBiZQorICAgICAgICAgKiBjYWxsZWQgYmVmb3JlIG5leHRUb2tlbiBpcyBjYWxsZWQgKi8KKyAgICBwdWJsaWMgTGV4KGZpbmFsIFRyYW5zaXRpb25bXVtdIHN0YXRlcykgeworICAgICAgICB0aGlzLnN0YXRlcyA9IHN0YXRlczsKKyAgICAgICAgICAgIC8ve3tJTklUX0NPTlRST0xTCisJCS8vfX0KK30KKworICAgICAgICAvKiogQ29uc3RydWN0IGEgbmV3IG1hY2hpbmUuICovCisgICAgcHVibGljIExleChmaW5hbCBUcmFuc2l0aW9uW11bXSBzdGF0ZXNJbiwgZmluYWwgUHVzaGJhY2tSZWFkZXIgaW5wdXRJbikgeworICAgICAgICBzdGF0ZXMgPSBzdGF0ZXNJbjsKKyAgICAgICAgaW5wdXQgPSBpbnB1dEluOworICAgIH0KKworICAgICAgICAvKiogUmV0dXJuIHRoZSBjdXJyZW50IHN0YXRlICovCisgICAgcHVibGljIGludCBnZXRTdGF0ZSgpIHsKKyAgICAgICAgcmV0dXJuIHN0YXRlOworICAgIH0KKworICAgICAgICAvKiogUmV0dXJuIHRoZSBkYXRhIHJlc3VsdGluZyBmcm9tIHRoZSBsYXN0IGNhbGwgdG8gbmV4dFRva2VuICovCisgICAgcHVibGljIFN0cmluZyBnZXREYXRhKCkgeworICAgICAgICBpZiAoZGF0YSA9PSBudWxsKSB7CisgICAgICAgICAgICBkYXRhID0gZGF0YUJ1ZmZlci50b1N0cmluZygpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBkYXRhOworICAgIH0KKyAgICAKKyAgICAgICAgLyoqIFJldHVybiB0aGUgaW5wdXQgcmVhZGVyIHVzZWQgYnkgdGhpcyBtYWNoaW5lICovCisgICAgcHVibGljIFB1c2hiYWNrUmVhZGVyIGdldElucHV0KCkgeworICAgICAgICByZXR1cm4gaW5wdXQ7CisgICAgfQorCisgICAgICAgIC8qKiBzZXQgdGhlIGlucHV0IHJlYWRlciB1c2VkIGJ5IHRoaXMgbWFjaGluZSAqLworICAgIHB1YmxpYyB2b2lkIHNldElucHV0KFB1c2hiYWNrUmVhZGVyIGlucHV0KSB7CisgICAgICAgIHRoaXMuaW5wdXQgPSBpbnB1dDsKKyAgICB9CisKKyAgICAgICAgLyoqIFJldHVybiB0aGUgc3RhdGVzIHVzZWQgYnkgdGhpcyBtYWNoaW5lICovCisgICAgcHVibGljIFRyYW5zaXRpb25bXVtdIGdldFN0YXRlcygpIHsKKyAgICAgICAgcmV0dXJuIHN0YXRlczsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRTdGF0ZXMoVHJhbnNpdGlvbltdW10gc3RhdGVzKSB7CisgICAgICAgIHRoaXMuc3RhdGVzID0gc3RhdGVzOworICAgIH0KKworICAgICAgICAvKiogUmV0dXJuIHRydWUgaWYgdGhlIHNwZWNpZmllZCBzdHJpbmcgZXF1YWxzIHRoZQorICAgICAgICAgKiBzdHJpbmcgcmV0dXJuZWQgYnkgZ2V0RGF0YSgpLiAgVGhpcyByb3V0aW5lCisgICAgICAgICAqIG1heSBiZSBmYXN0ZXIgdGhhbiBjYWxsaW5nIGdldERhdGEgYmVjYXVzZQorICAgICAgICAgKiBpdCBkb2VzIG5vdCBjcmVhdGUgYSBzdHJpbmcgb24gdGhlIGhlYXAuCisgICAgICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGRhdGFFcXVhbHMoZmluYWwgU3RyaW5nIG90aGVyKSB7CisgICAgICAgIGlmIChkYXRhICE9IG51bGwpIHsKKyAgICAgICAgICAgIC8vaWYgZGF0YUJ1ZmZlciBoYXMgYWxyZWFkeSBiZWVuIGNvbnZlcnRlZCB0bworICAgICAgICAgICAgLy9hIHN0cmluZywganVzdCBjb21wYXJlIHRoZSBzdHJpbmdzLgorICAgICAgICAgICAgcmV0dXJuIGRhdGEuZXF1YWxzKG90aGVyKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChvdGhlci5sZW5ndGgoKSAhPSBkYXRhQnVmZmVyLmxlbmd0aCgpKSByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBmaW5hbCBpbnQgbGVuID0gZGF0YUJ1ZmZlci5sZW5ndGgoKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAob3RoZXIuY2hhckF0KGkpICE9IGRhdGFCdWZmZXIuY2hhckF0KGkpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAgICAgLyoqCisgICAgICAgICAqIEFwcGVuZCB0aGUgZGF0YSByZXR1cm5lZCBmcm9tIGdldERhdGEoKSB0byB0aGUKKyAgICAgICAgICogc3BlY2lmaWVkIFN0cmluZ0J1ZmZlci4gIFRoaXMgcm91dGluZSBhdm9pZHMKKyAgICAgICAgICogdGhlIGNyZWF0aW9uIG9mIGEgU3RyaW5nIG9uIHRoZSBoZWFwLgorICAgICAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBhcHBlbmREYXRhVG8oU3RyaW5nQnVmZmVyIGJ1ZmZlcikgeworICAgICAgICBidWZmZXIuYXBwZW5kKGRhdGFCdWZmZXIpOworICAgIH0KKyAgICAKKyAgICAgICAgLyoqCisgICAgICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSBkYXRhIHJldHVybmVkIGJ5IGdldERhdGEoKQorICAgICAgICAgKiBzdGFydHMgd2l0aCB0aGUgc3BlY2lmaWVkIHN0cmluZy4gIFRoaXMgcm91dGluZSBhdm9pZHMKKyAgICAgICAgICogdGhlIGNyZWF0aW9uIG9mIGEgU3RyaW5nIG9uIHRoZSBoZWFwLgorICAgICAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBkYXRhU3RhcnRzV2l0aChTdHJpbmcgcykgeworICAgICAgICBpZiAoZGF0YUJ1ZmZlci5sZW5ndGgoKSA8IHMubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZpbmFsIGludCBzTGVuZ3RoID0gcy5sZW5ndGgoKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc0xlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKGRhdGFCdWZmZXIuY2hhckF0KGkpICE9IHMuY2hhckF0KGkpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAgICAgCisgICAgICAgIC8qKiAKKyAgICAgICAgICogQ29udmVydCB0aGUgY29udGVudHMgb2YgdGhlIGRhdGEgYnVmZmVyIHRvIGFuIGludGVnZXIKKyAgICAgICAgICogb2YgdGhlIHNwZWNpZmllZCByYWRpeAorICAgICAgICAgKi8KKyAgICBwdWJsaWMgaW50IGRhdGFBc051bWJlcihpbnQgcmFkaXgpIHsKKyAgICAgICAgaW50IHZhbHVlID0gMDsKKyAgICAgICAgZmluYWwgaW50IGxlbiA9IGRhdGFCdWZmZXIubGVuZ3RoKCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWUqcmFkaXggKyBDaGFyYWN0ZXIuZGlnaXQoZGF0YUJ1ZmZlci5jaGFyQXQoaSksIHJhZGl4KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQorICAgIAorICAgICAgICAvKioKKyAgICAgICAgICogR2V0IHRoZSBuZXh0IHRva2VuIGZyb20gdGhlIGlucHV0IHN0cmVhbS4gIFRoZQorICAgICAgICAgKiBkYXRhQnVmZmVyIGlzIGNsZWFyZWQgYW5kIHRoZSBzdGF0ZSBpcyBzZXQgdG8gemVybyBiZWZvcmUKKyAgICAgICAgICogcGFyc2luZyBiZWdpbnMuICBQYXJzaW5nIGNvbnRpbnVlcyB1bnRpbCBhIHN0YXRlCisgICAgICAgICAqIGdyZWF0ZXIgb2YgZXF1YWwgdG8gMCBzIHJlYWNoZWQgb3IgYW4gZXhjZXB0aW9uIGlzIHRocm93bi4KKyAgICAgICAgICogQWZ0ZXIgZWFjaCBub24tdGVybWluYWwgdHJhbnNpdGlvbiwgdGhlIHN0YXRlIG1hY2hpbmUgCisgICAgICAgICAqIHdhbGtzIHRocm91Z2ggYWxsIHRoZSB0cmFuc2l0aW9ucywgaW4gb3JkZXIsIGZvciB0aGUgY3VycmVudAorICAgICAgICAgKiBzdGF0ZSB1bnRpbCBpdCBmaW5kcyBvbmUgdGhhdCB3aWxsIGFjY2VwdCB0aGUgY3VycmVudAorICAgICAgICAgKiBpbnB1dCBjaGFyYWN0ZXIgYW5kIHRoZW4gY2FsbHMgZG9BY3Rpb24gb24gdGhhdCB0cmFuc2l0aW9uLgorICAgICAgICAgKi8KKyAgICBwdWJsaWMgaW50IG5leHRUb2tlbigpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIHN0YXRlID0gMDsKKyAgICAgICAgZGF0YUJ1ZmZlci5zZXRMZW5ndGgoMCk7CisKKyAgICAgICAgZG8geworICAgICAgICAgICAgaW50IGMgPSBpbnB1dC5yZWFkKCk7CisgICAgICAgICAgICBmaW5hbCBUcmFuc2l0aW9uW10gdHJhbnNpdGlvbiA9IHN0YXRlc1stc3RhdGVdOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0cmFuc2l0aW9uLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKHRyYW5zaXRpb25baV0uYWNjZXB0cyhjKSkgeworICAgICAgICAgICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigic3RhdGVbIisgLXN0YXRlKyJdLnRyYW5zaXRpb25bIitpKyJdIG9uICIrYysiICAnIisoY2hhciljKyInIHRvIHN0YXRlWyIpOworICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IHRyYW5zaXRpb25baV0uZG9BY3Rpb24oYywgaW5wdXQsIGRhdGFCdWZmZXIpOworICAgICAgICAgICAgICAgICAgICAvL3ByaW50bG4oIiIgKyAtc3RhdGUgKyAiXSIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gd2hpbGUgKHN0YXRlIDw9IDApOworICAgICAgICBkYXRhID0gbnVsbDsgICAgLy9kdW1wIHRoZSBjYWNoZWQgZGF0YSBzdHJpbmcKKyAgICAgICAgcmV0dXJuIHN0YXRlOworICAgIH0KKworICAgICAgICAvKiogCisgICAgICAgICAqIEdldCB0aGUgbmV4dCB0b2tlbiBhbmQgdGhyb3cgYW4gYWNjZXB0aW9uIGlmCisgICAgICAgICAqIHRoZSBzdGF0ZSBtYWNoaW5lIGlzIG5vdCBpbiB0aGUgc3BlY2lmaWVkIHN0YXRlLgorICAgICAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBhY2NlcHQoZmluYWwgaW50IG5lZWRlZFN0YXRlKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBpZiAobmVlZGVkU3RhdGUgIT0gbmV4dFRva2VuKCkpIHsKKyAgICAgICAgICAgIEV4Y2VwdGlvbiBlID0gbmV3IEV4Y2VwdGlvbigpOworICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZUV4Y2VwdGlvbigiVW5leHBlY3RlZCB0b2tlbiAtICIrZ2V0RGF0YSgpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAgICAgLyoqCisgICAgICAgICAqIEdldCB0aGUgbmV4dCB0b2tlbiBhbmQgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIHRoZQorICAgICAgICAgKiBzdGF0ZSBtYWNoaW5lIGlzIG5vdCBpbiB0aGUgc3BlY2lmaWVkIHN0YXRlIGFuZCB0aGUKKyAgICAgICAgICogdmFsdWUgcmV0dXJuZWQgYnkgZ2V0RGF0YSgpIGRvZXMgbm90IG1hdGNoIHRoZSAKKyAgICAgICAgICogc3BlY2lmaWVkIHZhbHVlLgorICAgICAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBhY2NlcHQoZmluYWwgaW50IG5lZWRlZFN0YXRlLCBmaW5hbCBTdHJpbmcgbmVlZGVkVmFsdWUpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGFjY2VwdChuZWVkZWRTdGF0ZSk7CisgICAgICAgIGlmICghZGF0YUVxdWFscyhuZWVkZWRWYWx1ZSkpIHsKKyAgICAgICAgICAgIEV4Y2VwdGlvbiBlID0gbmV3IEV4Y2VwdGlvbigpOworICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZUV4Y2VwdGlvbigiVW5leHBlY3RlZCB0b2tlbiAtICIrZ2V0RGF0YSgpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGRlYnVnKGJvb2xlYW4gZGVidWdNZXNzYWdlc09uKSB7CisgICAgICAgIHRoaXMuZGVidWdNZXNzYWdlc09uID0gZGVidWdNZXNzYWdlc09uOworICAgICAgICBkZWJ1Z1RhZyA9IG51bGw7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIGRlYnVnKGJvb2xlYW4gZGVidWdNZXNzYWdlc09uLCBTdHJpbmcgdGFnKSB7CisgICAgICAgIHRoaXMuZGVidWdNZXNzYWdlc09uID0gZGVidWdNZXNzYWdlc09uOworICAgICAgICB0aGlzLmRlYnVnVGFnID0gdGFnOworICAgIH0KKyAgICAKKy8qICBwcml2YXRlIHZvaWQgcHJpbnQoU3RyaW5nIHMpIHsKKyAgICAgICAgaWYgKGRlYnVnTWVzc2FnZXNPbikgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludChzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBwcmludGxuKFN0cmluZyBzKSB7CisgICAgICAgIGlmIChkZWJ1Z01lc3NhZ2VzT24pIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihzKyIgIDwiK2RlYnVnVGFnKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFRoZSBpbnRlcmZhY2UgZm9yIHN0YXRlIG1hY2hpbmUgdHJhbnNpdGlvbnMuIAorICAgICAqLworICAgIHB1YmxpYyBpbnRlcmZhY2UgVHJhbnNpdGlvbiB7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogUmV0dXJuIHRydWUgaWYgdGhlIHRyYW5zaXRpb24gY2FuIGFjY2VwdCB0aGUgY3VycmVudCBpbnB1dAorICAgICAgICAgKiBjaGFyYWN0ZXIuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgYm9vbGVhbiBhY2NlcHRzKGludCBjKTsKKyAgICAgICAgLyoqCisgICAgICAgICAqIFBlcmZvcm0gdGhlIHRyYW5zaXRpb24uCisgICAgICAgICAqIEBwYXJhbSBjIHRoZSBjdXJyZW50IGlucHV0IGNoYXJhY3RlcgorICAgICAgICAgKiBAcGFyYW0gaW5wdXQgdGhlIGN1cnJlbnQgaW5wdXQgc3RyZWFtLCBtaW51cyB0aGUgY3VycmVudCBpbnB1dCBjaGFyYWN0ZXIKKyAgICAgICAgICogQHBhcmFtIGJ1ZmZlciB0aGUgY3VycmVudCBvdXRwdXQgYnVmZmVyCisgICAgICAgICAqIEByZXR1cm4gdGhlIHN0YXRlIHRoZSBtYWNoaW5lIHNob3VsZCBiZSBpbiBuZXh0CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgaW50IGRvQWN0aW9uKGludCBjLCBQdXNoYmFja1JlYWRlciBpbnB1dCwgU3RyaW5nQnVmZmVyIGJ1ZmZlcikgdGhyb3dzIElPRXhjZXB0aW9uOworICAgIH0KKworICAgICAgICAvKiBjb25zdGFudHMgZm9yIEJhc2VUcmFuc2l0aW9ucyAqLworICAgICAgICAvKiogRG9uJ3QgY29weSB0aGUgY3VycmVudCBjaGFyYWN0ZXIgdG8gdGhlIG91dHB1dCAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgYnl0ZSBJR05PUkUgPSAweDAxOworICAgICAgICAvKiogQXBwZW5kIHRoZSBjdXJyZW50IGNoYXJhY3RlciB0byB0aGUgb3V0cHV0ICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBieXRlIEFDQ1VNVUxBVEUgPSAweDAwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJ5dGUgQlVGRkVSX01BU0sgPSAweDAxOworCisgICAgICAgIC8qKiBSZW1vdmUgdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGZyb20gdGhlIGlucHV0IHN0cmVhbSAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgYnl0ZSBDT05TVU1FID0gMHgwMDsKKyAgICAgICAgLyoqIFJldHVybiB0aGUgY3VycmVudCBjaGFyYWN0ZXIgdG8gdGhlIGlucHV0IHN0cmVhbSAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgYnl0ZSBQVVRCQUNLID0gMHgxMDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIElOUFVUX01BU0sgPSAweDEwOworCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBieXRlIAorICAgICAgICAgICAgQUNDVU1VTEFURV9DT05TVU1FID0gKGJ5dGUpKEFDQ1VNVUxBVEUgfCBDT05TVU1FKSwKKyAgICAgICAgICAgIElHTk9SRV9DT05TVU1FID0gKGJ5dGUpKElHTk9SRSB8IENPTlNVTUUpLAorICAgICAgICAgICAgQUNDVU1VTEFURV9QVVRCQUNLID0gKGJ5dGUpKEFDQ1VNVUxBVEUgfCBQVVRCQUNLKSwKKyAgICAgICAgICAgIElHTk9SRV9QVVRCQUNLID0gKGJ5dGUpKElHTk9SRSB8IFBVVEJBQ0spOworCisgICAgLyoqCisgICAgICogQmFzZSBjbGFzcyBmb3Igc2ltcGxlIHRyYW5zaXRpb24gY2xhc3NlcworICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgYWJzdHJhY3QgY2xhc3MgQmFzZVRyYW5zaXRpb24gaW1wbGVtZW50cyBUcmFuc2l0aW9uIHsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIGFkZFRvQnVmZmVyOworICAgICAgICBwcml2YXRlIGZpbmFsIGJvb2xlYW4gdW5yZWFkSW5wdXQ7CisgICAgICAgIHByaXZhdGUgZmluYWwgaW50IG5leHQ7CisgICAgICAgIC8qKgorICAgICAgICAgKiBDb25zdHJ1Y3QgYSBuZXcgdHJhbnNpdGlvbi4gIE9uIGV4ZWN1dGlvbiwgdGhlIAorICAgICAgICAgKiBzcGVjaWZpZWQgYWN0aW9uIGlzIHBlcmZvcm1lZCBhbmQgdGhlCisgICAgICAgICAqIHNwZWNpZmllZCBzdGF0ZSBpcyByZXR1cm5lZC4KKyAgICAgICAgICogQHBhcmFtIGFjdGlvbiB0aGUgYWN0aW9ucyB0byBwZXJmb3JtIHRvIHRoZSAKKyAgICAgICAgICogaW5wdXQgYW5kIG91dHB1dCBidWZmZXJzLgorICAgICAgICAgKiBAcGFyYW0gbmV4dCB0aGUgbmV4dCBzdGF0ZSB0aGUgbWFjaGluZSBzaG91bGQKKyAgICAgICAgICogbW92ZSBpbnRvCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgQmFzZVRyYW5zaXRpb24oYnl0ZSBhY3Rpb24sIGludCBuZXh0KSB7CisgICAgICAgICAgICB0aGlzLmFkZFRvQnVmZmVyID0gKGFjdGlvbiAmIEJVRkZFUl9NQVNLKSA9PSBBQ0NVTVVMQVRFOworICAgICAgICAgICAgdGhpcy51bnJlYWRJbnB1dCA9IChhY3Rpb24gJiBJTlBVVF9NQVNLKSA9PSBQVVRCQUNLOworICAgICAgICAgICAgdGhpcy5uZXh0ID0gbmV4dDsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgYWJzdHJhY3QgYm9vbGVhbiBhY2NlcHRzKGludCBjKTsKKyAgICAgICAgcHVibGljIGludCBkb0FjdGlvbihmaW5hbCBpbnQgYywgCisgICAgICAgICAgICAgICAgZmluYWwgUHVzaGJhY2tSZWFkZXIgaW5wdXQsIAorICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZ0J1ZmZlciBidWZmZXIpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoYWRkVG9CdWZmZXIpIHsKKyAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKChjaGFyKWMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHVucmVhZElucHV0KSB7CisgICAgICAgICAgICAgICAgaW5wdXQudW5yZWFkKGMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG5leHQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBY2NlcHQgZW5kLW9mLWZpbGUuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBjbGFzcyBFT0ZUcmFuc2l0aW9uIGV4dGVuZHMgQmFzZVRyYW5zaXRpb24geworICAgICAgICBwdWJsaWMgRU9GVHJhbnNpdGlvbigpIHsKKyAgICAgICAgICAgIHRoaXMoSUdOT1JFX0NPTlNVTUUsIEVORF9PRl9GSUxFKTsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgRU9GVHJhbnNpdGlvbihpbnQgbmV4dCkgeworICAgICAgICAgICAgdGhpcyhJR05PUkVfQ09OU1VNRSwgbmV4dCk7CisgICAgICAgIH0KKyAgICAgICAgcHVibGljIEVPRlRyYW5zaXRpb24oYnl0ZSBhY3Rpb24sIGludCBuZXh0KSB7CisgICAgICAgICAgICBzdXBlcihhY3Rpb24sIG5leHQpOworICAgICAgICB9CisgICAgICAgIHB1YmxpYyBib29sZWFuIGFjY2VwdHMoaW50IGMpIHsKKyAgICAgICAgICAgIHJldHVybiBjID09IC0xOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQWNjZXB0IGFueXRoaW5nLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgY2xhc3MgRGVmYXVsdFRyYW5zaXRpb24gZXh0ZW5kcyBCYXNlVHJhbnNpdGlvbiB7CisgICAgICAgIHB1YmxpYyBEZWZhdWx0VHJhbnNpdGlvbihieXRlIGFjdGlvbiwgaW50IG5leHRTdGF0ZSkgeworICAgICAgICAgICAgc3VwZXIoYWN0aW9uLCBuZXh0U3RhdGUpOworICAgICAgICB9CisgICAgICAgIHB1YmxpYyBib29sZWFuIGFjY2VwdHMoaW50IGMpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQWNjZXB0IGFueSBjaGFyYWN0ZXJzIGluIHRoZSBzcGVjaWZpZWQgc3RyaW5nLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgY2xhc3MgU3RyaW5nVHJhbnNpdGlvbiBleHRlbmRzIEJhc2VUcmFuc2l0aW9uIHsKKyAgICAgICAgcHJpdmF0ZSBTdHJpbmcgY2hhcnM7CisgICAgICAgIHB1YmxpYyBTdHJpbmdUcmFuc2l0aW9uKFN0cmluZyBjaGFycywgYnl0ZSBhY3Rpb24sIGludCBuZXh0U3RhdGUpIHsKKyAgICAgICAgICAgIHN1cGVyKGFjdGlvbiwgbmV4dFN0YXRlKTsKKyAgICAgICAgICAgIHRoaXMuY2hhcnMgPSBjaGFyczsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgYm9vbGVhbiBhY2NlcHRzKGludCBjKSB7CisgICAgICAgICAgICByZXR1cm4gY2hhcnMuaW5kZXhPZigoY2hhciljKSAhPSAtMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEFjY2VwdCBvbmx5IHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVyLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgY2xhc3MgQ2hhclRyYW5zaXRpb24gZXh0ZW5kcyBCYXNlVHJhbnNpdGlvbiB7CisgICAgICAgIHByaXZhdGUgY2hhciBjOworICAgICAgICBwdWJsaWMgQ2hhclRyYW5zaXRpb24oY2hhciBjLCBieXRlIGFjdGlvbiwgaW50IG5leHRTdGF0ZSkgeworICAgICAgICAgICAgc3VwZXIoYWN0aW9uLCBuZXh0U3RhdGUpOworICAgICAgICAgICAgdGhpcy5jID0gYzsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgYm9vbGVhbiBhY2NlcHRzKGludCBjKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5jID09IChjaGFyKWM7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBY2NlcHQgYW55dGhpbmcsIGJ1dCB0aHJvdyB0aGUgc3BlY2lmaWVkIGV4Y2VwdGlvbiBhZnRlcgorICAgICAqIHBlcmZvcm1pbmcgdGhlIHNwZWNpZmllZCBhY3Rpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGNsYXNzIEV4Y2VwdGlvblRyYW5zaXRpb24gZXh0ZW5kcyBCYXNlVHJhbnNpdGlvbiB7CisgICAgICAgIHByaXZhdGUgSU9FeGNlcHRpb24gZTsKKyAgICAgICAgcHVibGljIEV4Y2VwdGlvblRyYW5zaXRpb24oSU9FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgc3VwZXIoSUdOT1JFX1BVVEJBQ0ssIEVORF9PRl9GSUxFKTsgLy9zdGF0ZSBpcyBpZ25vcmVkCisgICAgICAgIH0KKyAgICAgICAgcHVibGljIEV4Y2VwdGlvblRyYW5zaXRpb24oYnl0ZSBhY3Rpb24sIElPRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHN1cGVyKGFjdGlvbiwgRU5EX09GX0ZJTEUpOyAvL3N0YXRlIGlzIGlnbm9yZWQKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgYm9vbGVhbiBhY2NlcHRzKGludCBjKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgZmluYWwgaW50IGRvQWN0aW9uKGZpbmFsIGludCBjLCAKKyAgICAgICAgICAgICAgICBmaW5hbCBQdXNoYmFja1JlYWRlciBpbnB1dCwgCisgICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nQnVmZmVyIGJ1ZmZlcikgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIHN1cGVyLmRvQWN0aW9uKGMsIGlucHV0LCBidWZmZXIpOworICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAgICAgfQorICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogVGhlIGJhc2UgY2xhc3MgZm9yIHBhcnNlIGV4Y2VwdGlvbnMuICBFeGNlcHRpb25zCisgICAgICAgICAqIHJlc3VsdGluZyBmcm9tIHBhcnNpbmcgZXJyb3JzIHNob3VsZCBiZSBzdWJjbGFzc2VzIG9mIHRoaXMKKyAgICAgICAgICogY2xhc3MuCisgICAgICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgY2xhc3MgUGFyc2VFeGNlcHRpb24gZXh0ZW5kcyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgcmVhc29uOworICAgICAgICBwdWJsaWMgUGFyc2VFeGNlcHRpb24oKSB7CisgICAgICAgICAgICB0aGlzLnJlYXNvbiA9ICJ1bmtvd24iOworICAgICAgICB9CisgICAgICAgIHB1YmxpYyBQYXJzZUV4Y2VwdGlvbihTdHJpbmcgcmVhc29uKSB7CisgICAgICAgICAgICB0aGlzLnJlYXNvbiA9IHJlYXNvbjsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICAgICAgcmV0dXJuIHJlYXNvbjsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEFjY2VwdCBhbnl0aGluZywgZXhlY3V0ZSBhcyBJR05PUkVfUFVUQkFDSywgYW5kIHRocm93CisgICAgICogYSBQYXJzZUV4Y2VwdGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQgbWVzc2FnZQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgY2xhc3MgUGFyc2VFeGNlcHRpb25UcmFuc2l0aW9uIGltcGxlbWVudHMgVHJhbnNpdGlvbiB7CisgICAgICAgIHByaXZhdGUgU3RyaW5nIHJlYXNvbjsKKyAgICAgICAgcHVibGljIFBhcnNlRXhjZXB0aW9uVHJhbnNpdGlvbihTdHJpbmcgcmVhc29uKSB7CisgICAgICAgICAgICB0aGlzLnJlYXNvbiA9IHJlYXNvbjsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgYm9vbGVhbiBhY2NlcHRzKGludCBjKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgZmluYWwgaW50IGRvQWN0aW9uKGZpbmFsIGludCBjLCAKKyAgICAgICAgICAgICAgICBmaW5hbCBQdXNoYmFja1JlYWRlciBpbnB1dCwgCisgICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nQnVmZmVyIGJ1ZmZlcikgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIGlucHV0LnVucmVhZCgoY2hhciljKTsKKyAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZUV4Y2VwdGlvbihyZWFzb24pOworICAgICAgICB9CisgICAgfQorCisgICAgLy97e0RFQ0xBUkVfQ09OVFJPTFMKKwkvL319Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL0xpbmVDaGFyTnVtYmVyUmVhZGVyLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL0xpbmVDaGFyTnVtYmVyUmVhZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYjcxMWUzMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvTGluZUNoYXJOdW1iZXJSZWFkZXIuamF2YQpAQCAtMCwwICsxLDE0NiBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAwNCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9MaW5lQ2hhck51bWJlclJlYWRlci5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzAyLzE2IDAzOjA1OjI5ICQgCisgKiAkUmV2aXNpb246IDEuMiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRvb2wubG9jYWxlY29udmVydGVyOworCitpbXBvcnQgamF2YS5pby4qOworCisvKioKKyAqIEEgTGluZUNoYXJOdW1iZXJSZWFkZXIgaXMgYSBCdWZmZXJlZFJlYWRlciB0aGF0CisgKiBrZWVwcyB0cmFjayBvZiB0aGUgbGluZSBudW1iZXIgYW5kIGNoYXJhY3RlciBvZmZzZXQKKyAqIG9uIHRoYXQgbGluZSBvZiB0aGUgY3VycmVudCBpbnB1dCBzdHJlYW0uCisgKi8KK3B1YmxpYyBjbGFzcyBMaW5lQ2hhck51bWJlclJlYWRlciBleHRlbmRzIEJ1ZmZlcmVkUmVhZGVyIHsKKyAgICBwcml2YXRlIGludCBsaW5lTnVtYmVyID0gMDsKKyAgICBwcml2YXRlIGludCBjaGFyTnVtYmVyID0gMDsKKyAgICBwcml2YXRlIGludCBtYXJrZWRMaW5lTnVtYmVyOworICAgIHByaXZhdGUgaW50IG1hcmtlZENoYXJOdW1iZXI7CisgICAgcHJpdmF0ZSBib29sZWFuIHNraXBMRjsKKworICAgIHB1YmxpYyBMaW5lQ2hhck51bWJlclJlYWRlcihSZWFkZXIgaW4pIHsKKyAgICAgICAgc3VwZXIoaW4pOworICAgICAgICAgICAgLy97e0lOSVRfQ09OVFJPTFMKKyAgICAgICAgLy99fQorfQorCisgICAgcHVibGljIExpbmVDaGFyTnVtYmVyUmVhZGVyKFJlYWRlciBpbiwgaW50IHN6KSB7CisgICAgICAgIHN1cGVyKGluLCBzeik7CisgICAgfQorCisgICAgcHVibGljIGludCBnZXRMaW5lTnVtYmVyKCkgeworICAgICAgICByZXR1cm4gbGluZU51bWJlcjsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50IGdldENoYXJOdW1iZXIoKSB7CisgICAgICAgIHJldHVybiBjaGFyTnVtYmVyOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgcmVhZCgpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIHN5bmNocm9uaXplZCAobG9jaykgeworICAgICAgICAgICAgaW50IGMgPSBzdXBlci5yZWFkKCk7CisgICAgICAgICAgICBjaGFyTnVtYmVyKys7CisgICAgICAgICAgICBpZiAoc2tpcExGKSB7CisgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ1xuJykgYyA9IHN1cGVyLnJlYWQoKTsKKyAgICAgICAgICAgICAgICBza2lwTEYgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN3aXRjaCAoYykgeworICAgICAgICAgICAgY2FzZSAnXHInOgorICAgICAgICAgICAgICAgIHNraXBMRiA9IHRydWU7CisgICAgICAgICAgICBjYXNlICdcbic6ICAgICAgLyogRmFsbCB0aHJvdWdoICovCisgICAgICAgICAgICBjYXNlICdcdTIwMjgnOiAgICAgIC8qIEZhbGwgdGhyb3VnaCAqLworICAgICAgICAgICAgY2FzZSAnXHUyMDI5JzogICAgICAvKiBGYWxsIHRocm91Z2ggKi8KKyAgICAgICAgICAgICAgICBsaW5lTnVtYmVyKys7CisgICAgICAgICAgICAgICAgY2hhck51bWJlciA9IDA7CisgICAgICAgICAgICAgICAgcmV0dXJuICdcbic7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gYzsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBpbnQgcmVhZChjaGFyIGNidWZbXSwgaW50IG9mZiwgaW50IGxlbikgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgc3luY2hyb25pemVkIChsb2NrKSB7CisgICAgICAgICAgICBpbnQgbiA9IHN1cGVyLnJlYWQoY2J1Ziwgb2ZmLCBsZW4pOworCisgICAgICAgICAgICBmb3IgKGludCBpID0gb2ZmOyBpIDwgb2ZmICsgbGVuOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpbnQgYyA9IGNidWZbaV07CisgICAgICAgICAgICAgICAgY2hhck51bWJlcisrOworICAgICAgICAgICAgICAgIGlmIChza2lwTEYpIHsKKyAgICAgICAgICAgICAgICAgICAgc2tpcExGID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGlmIChjID09ICdcbicpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGMpIHsKKyAgICAgICAgICAgICAgICBjYXNlICdccic6CisgICAgICAgICAgICAgICAgICAgIHNraXBMRiA9IHRydWU7CisgICAgICAgICAgICAgICAgY2FzZSAnXG4nOiAgLyogRmFsbCB0aHJvdWdoICovCisgICAgICAgICAgICAgICAgY2FzZSAnXHUyMDI4JzogIC8qIEZhbGwgdGhyb3VnaCAqLworICAgICAgICAgICAgICAgIGNhc2UgJ1x1MjAyOSc6ICAvKiBGYWxsIHRocm91Z2ggKi8KKyAgICAgICAgICAgICAgICAgICAgbGluZU51bWJlcisrOworICAgICAgICAgICAgICAgICAgICBjaGFyTnVtYmVyID0gMDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gbjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBTdHJpbmcgcmVhZExpbmUoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBzeW5jaHJvbml6ZWQgKGxvY2spIHsKKyAgICAgICAgICAgIFN0cmluZyBsID0gc3VwZXIucmVhZExpbmUoKTsKKyAgICAgICAgICAgIGlmIChsICE9IG51bGwpCisgICAgICAgICAgICBsaW5lTnVtYmVyKys7CisgICAgICAgICAgICBjaGFyTnVtYmVyID0gMDsKKyAgICAgICAgICAgIHNraXBMRiA9IGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIGw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgbWF4U2tpcEJ1ZmZlclNpemUgPSA4MTkyOworCisgICAgcHJpdmF0ZSBjaGFyIHNraXBCdWZmZXJbXSA9IG51bGw7CisKKyAgICBwdWJsaWMgbG9uZyBza2lwKGxvbmcgbikgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgaW50IG5uID0gKGludCkgTWF0aC5taW4obiwgbWF4U2tpcEJ1ZmZlclNpemUpOworICAgICAgICBzeW5jaHJvbml6ZWQgKGxvY2spIHsKKyAgICAgICAgICAgIGlmICgoc2tpcEJ1ZmZlciA9PSBudWxsKSB8fCAoc2tpcEJ1ZmZlci5sZW5ndGggPCBubikpCisgICAgICAgICAgICBza2lwQnVmZmVyID0gbmV3IGNoYXJbbm5dOworICAgICAgICAgICAgbG9uZyByID0gbjsKKyAgICAgICAgICAgIHdoaWxlIChyID4gMCkgeworICAgICAgICAgICAgaW50IG5jID0gcmVhZChza2lwQnVmZmVyLCAwLCBubik7CisgICAgICAgICAgICBpZiAobmMgPT0gLTEpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICByIC09IG5jOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG4gLSByOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgbWFyayhpbnQgcmVhZEFoZWFkTGltaXQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIHN5bmNocm9uaXplZCAobG9jaykgeworICAgICAgICAgICAgc3VwZXIubWFyayhyZWFkQWhlYWRMaW1pdCk7CisgICAgICAgICAgICBtYXJrZWRMaW5lTnVtYmVyID0gbGluZU51bWJlcjsKKyAgICAgICAgICAgIG1hcmtlZENoYXJOdW1iZXIgPSBjaGFyTnVtYmVyOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgcmVzZXQoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBzeW5jaHJvbml6ZWQgKGxvY2spIHsKKyAgICAgICAgICAgIHN1cGVyLnJlc2V0KCk7CisgICAgICAgICAgICBsaW5lTnVtYmVyID0gbWFya2VkTGluZU51bWJlcjsKKyAgICAgICAgICAgIGNoYXJOdW1iZXIgPSBtYXJrZWRDaGFyTnVtYmVyOworICAgICAgICB9CisgICAgfQorCisgICAgLy97e0RFQ0xBUkVfQ09OVFJPTFMKKyAgICAvL319Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL0xvY2FsZUNvbnZlcnRlci5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9Mb2NhbGVDb252ZXJ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44NmYwMzFjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9Mb2NhbGVDb252ZXJ0ZXIuamF2YQpAQCAtMCwwICsxLDQyIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMi0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL0xvY2FsZUNvbnZlcnRlci5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzEyLzE4IDAzOjU2OjQxICQgCisgKiAkUmV2aXNpb246IDEuMyAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRvb2wubG9jYWxlY29udmVydGVyOworCitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGphdmEudXRpbC4qOworCitwdWJsaWMgY2xhc3MgTG9jYWxlQ29udmVydGVyIHsKKyAgICBwdWJsaWMgSGFzaHRhYmxlIGNvbnZlcnQoSGFzaHRhYmxlIHRhYmxlKSB0aHJvd3MgQ29udmVyc2lvbkVycm9yIHsKKyAgICAgICAgSGFzaHRhYmxlIHJlc3VsdCA9IG5ldyBIYXNodGFibGUoKTsKKyAgICAgICAgY29udmVydChyZXN1bHQsIHRhYmxlKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgcHJvdGVjdGVkIHZvaWQgY29udmVydChIYXNodGFibGUgcmVzdWx0LCBIYXNodGFibGUgc291cmNlKSB0aHJvd3MgQ29udmVyc2lvbkVycm9yIHsKKyAgICAgICAgRW51bWVyYXRpb24gZW51bSA9IHNvdXJjZS5rZXlzKCk7CisgICAgICAgIHdoaWxlIChlbnVtLmhhc01vcmVFbGVtZW50cygpKSB7CisgICAgICAgICAgICBTdHJpbmcga2V5ID0gKFN0cmluZyllbnVtLm5leHRFbGVtZW50KCk7CisgICAgICAgICAgICBPYmplY3QgZGF0YSA9IHNvdXJjZS5nZXQoa2V5KTsKKyAgICAgICAgICAgIHJlc3VsdC5wdXQoa2V5LCBkYXRhKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIENvbnZlcnNpb25FcnJvciBleHRlbmRzIEV4Y2VwdGlvbiB7CisgICAgICAgIHB1YmxpYyBDb252ZXJzaW9uRXJyb3IoKSB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHB1YmxpYyBDb252ZXJzaW9uRXJyb3IoU3RyaW5nIHJlYXNvbikgeworICAgICAgICAgICAgc3VwZXIocmVhc29uKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvTG9jYWxlV3JpdGVyLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL0xvY2FsZVdyaXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjgwNWIyMzgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL0xvY2FsZVdyaXRlci5qYXZhCkBAIC0wLDAgKzEsNDE5IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMi0yMDA0LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL0xvY2FsZVdyaXRlci5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzAyLzE2IDAzOjA1OjI5ICQgCisgKiAkUmV2aXNpb246IDEuMyAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRvb2wubG9jYWxlY29udmVydGVyOworaW1wb3J0IGNvbS5pYm0uaWN1LmxhbmcuKjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0Lio7CitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGphdmEudXRpbC4qOworLyoqCisgKiBBIExvY2FsZVdyaXRlciB0YWtlcyBsb2NhbGUgZGF0YSBpbiBzdGFuZGFyZCBmb3JtIGFuZAorICogd3JpdGVzIGl0IHRvIHN0YW5kYXJkIG91dHB1dCBpbiBhIGZvcm0gc3VpdGFibGUgZm9yCisgKiBsb2FkaW5nIHByb2dyYW1hdGljYWxseS4KKyAqLworcHVibGljIGFic3RyYWN0IGNsYXNzIExvY2FsZVdyaXRlciB7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIElOREVOVF9DSEFSUyA9IAorICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIrCisgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIisKKyAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgRU9MX0NIQVJTW10gPSB7J1xyJywgJ1xuJywgJ1x1MjAyOCcsICdcdTIwMjknfTsKKyAgICAgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IElOREVOVF9TSVpFID0gNDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTUFYX0xJTkVfTEVOR1RIID0gODA7CisgICAgcHJpdmF0ZSBpbnQgaW5kZW50TGV2ZWw7CisgICAgcHJpdmF0ZSBTdHJpbmcgaW5kZW50U3RyaW5nOworICAgIHByaXZhdGUgYm9vbGVhbiBuZWVkc0luZGVudDsKKyAgICBwcm90ZWN0ZWQgU3RyaW5nQnVmZmVyIGxpbmVCdWZmZXIgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgcHJpdmF0ZSBpbnQgbGluZUxlbmd0aDsKKyAgICBwcm90ZWN0ZWQgUHJpbnRTdHJlYW0gb3V0OworICAgIHByb3RlY3RlZCBQcmludFN0cmVhbSBlcnI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvciBodVRyYW5zbGl0ID0gbmV3IEhleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yKCI8VSMjIzA+Iik7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVbmljb2RlVG9IZXhUcmFuc2xpdGVyYXRvciB1aFRyYW5zbGl0ID0gbmV3IFVuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yKCJcXFxcdTAwMDAiKTsKKyAgICBmaW5hbCBGaWxlIG91dEZpbGUgPSBuZXcgRmlsZSggICJjbnZMb2MudHh0Iik7CisgICAgRmlsZU91dHB1dFN0cmVhbSBvdXRGaWxlU3RyZWFtOworICAgIEJ1ZmZlcmVkV3JpdGVyIG91dEJ1ZldyaXRlOworICAgIFByaW50V3JpdGVyIG15T3V0OworICAgIAorICAgIHB1YmxpYyBMb2NhbGVXcml0ZXIoUHJpbnRTdHJlYW0gb3V0KSB7CisgICAgICAgIHRoaXMub3V0ID0gb3V0OworICAgICAgICB0aGlzLmVyciA9IG91dDsKKyAgICAgICAgdHJ5eworICAgICAgICAgICAgb3V0RmlsZS5jYW5Xcml0ZSgpOworICAgICAgICAgICAgb3V0RmlsZVN0cmVhbSA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKG91dEZpbGUpOworICAgICAgICAgICAgb3V0QnVmV3JpdGUgPSBuZXcgQnVmZmVyZWRXcml0ZXIobmV3IE91dHB1dFN0cmVhbVdyaXRlcihvdXRGaWxlU3RyZWFtLCJVVEY4IikpOyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgY2F0Y2goamF2YS5pby5JT0V4Y2VwdGlvbiBlKXsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRW5jb2RpbmcgdW5zdXBwb3J0ZWQiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSAgCisgICAgfQorICAgIHB1YmxpYyBMb2NhbGVXcml0ZXIoUHJpbnRTdHJlYW0gb3V0LCBQcmludFN0cmVhbSBlcnIpIHsKKyAgICAgICAgdGhpcy5vdXQgPSBvdXQ7CisgICAgICAgIHRoaXMuZXJyID0gZXJyOworICAgICAgICB0cnl7CisgICAgICAgICAgICBvdXRGaWxlLmNhbldyaXRlKCk7CisgICAgICAgICAgICBvdXRGaWxlU3RyZWFtID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0ob3V0RmlsZSk7CisgICAgICAgICAgICBvdXRCdWZXcml0ZSA9IG5ldyBCdWZmZXJlZFdyaXRlcihuZXcgT3V0cHV0U3RyZWFtV3JpdGVyKG91dEZpbGVTdHJlYW0sIlVURjgiKSk7ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICBjYXRjaChqYXZhLmlvLklPRXhjZXB0aW9uIGUpeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJFbmNvZGluZyB1bnN1cHBvcnRlZCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9ICAKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB3cml0ZShMb2NhbGUgbG9jYWxlLCBIYXNodGFibGUgbG9jYWxlRGF0YSkgeworICAgICAgICBvcGVuKGxvY2FsZSk7CisgICAgICAgICAgICAvL3NvcnQgdGhlIGtleSBzbyB0aGUgdGFncyBhcmUgaW4gb3JkZXIgaW4gdGhlIHJlc291cmNlIGZpbGUKKyAgICAgICAgU29ydGVkVmVjdG9yIG9yZGVyID0gbmV3IFNvcnRlZFZlY3Rvcihsb2NhbGVEYXRhLmtleXMoKSwgbmV3IFNvcnRlZFZlY3Rvci5TdHJpbmdDb21wYXJhdG9yKCkpOworICAgICAgICBFbnVtZXJhdGlvbiBlID0gb3JkZXIuZWxlbWVudHMoKTsKKyAgICAgICAgd2hpbGUgKGUuaGFzTW9yZUVsZW1lbnRzKCkpIHsKKyAgICAgICAgICAgIGZpbmFsIFN0cmluZyBrZXkgPSAoU3RyaW5nKWUubmV4dEVsZW1lbnQoKTsKKyAgICAgICAgICAgIGZpbmFsIE9iamVjdCBkYXRhID0gbG9jYWxlRGF0YS5nZXQoa2V5KTsKKyAgICAgICAgICAgIGlmIChpc0R1cGxpY2F0ZU9mSW5oZXJpdGVkVmFsdWUobG9jYWxlLCBrZXksIGRhdGEpKSB7CisgICAgICAgICAgICAgICBwcmludGxuKCIvLy8qIERpc2NhcmRpbmcgZHVwbGljYXRlIGRhdGEgZm9yIHRhZzogIitrZXkrIiAqLyIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB3cml0ZShrZXksIGRhdGEpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgCisgICAgICAgIGNsb3NlKCk7CisgICAgfQorICAgIHB1YmxpYyB2b2lkIGNsb3NlRmlsZUhhbmRsZSgpeworICAgICAgICAgdHJ5eworICAgICAgICAgICAgb3V0QnVmV3JpdGUuY2xvc2UoKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaChqYXZhLmlvLklPRXhjZXB0aW9uIGV4Y3ApeworICAgICAgICAgICAgb3V0LnByaW50bG4oImNvdWxkIG5vdCBjbG9zZSB0aGUgb3V0cHV0IGZpbGUiKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAgICAgCisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGUoU3RyaW5nIHRhZywgT2JqZWN0IG8pIHsKKyAgICAgICAgaWYgKG8gaW5zdGFuY2VvZiBTdHJpbmcpIHsKKyAgICAgICAgICAgIHdyaXRlKHRhZywgKFN0cmluZylvKTsKKyAgICAgICAgfSBlbHNlIGlmIChvIGluc3RhbmNlb2YgU3RyaW5nW10pIHsKKyAgICAgICAgICAgIHdyaXRlKHRhZywgKFN0cmluZ1tdKSBvKTsKKyAgICAgICAgfSBlbHNlIGlmIChvIGluc3RhbmNlb2YgU3RyaW5nW11bXSkgeworICAgICAgICAgICAgd3JpdGUodGFnLCAoU3RyaW5nW11bXSlvKTsKKyAgICAgICAgfSBlbHNlIGlmIChvIGluc3RhbmNlb2YgT2JqZWN0W10pIHsKKyAgICAgICAgICAgIE9iamVjdFtdIGRhdGEgPSAoT2JqZWN0W10pbzsKKyAgICAgICAgICAgIFN0cmluZ1tdIHRlbXAgPSBuZXcgU3RyaW5nW2RhdGEubGVuZ3RoXTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIHRlbXBbaV0gPSBkYXRhW2ldLnRvU3RyaW5nKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB3cml0ZSh0YWcsIHRlbXApOworICAgICAgICB9IGVsc2UgaWYgKG8gaW5zdGFuY2VvZiBPYmplY3RbXVtdKSB7CisgICAgICAgICAgICBPYmplY3RbXVtdIGRhdGEgPSAoT2JqZWN0W11bXSlvOworICAgICAgICAgICAgU3RyaW5nW11bXSB0ZW1wID0gbmV3IFN0cmluZ1tkYXRhLmxlbmd0aF1bXTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIHRlbXBbaV0gPSBuZXcgU3RyaW5nW2RhdGFbaV0ubGVuZ3RoXTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHRlbXBbaV0ubGVuZ3RoOyBqKyspIHsKKyAgICAgICAgICAgICAgICAgICAgdGVtcFtpXVtqXSA9IGRhdGFbaV1bal0udG9TdHJpbmcoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICB3cml0ZSh0YWcsIHRlbXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgd3JpdGUodGFnLCBvLnRvU3RyaW5nKCkpOworICAgICAgICB9CisgICAgfQorICAgIHByb3RlY3RlZCBmaW5hbCB2b2lkIHdyaXRlKFN0cmluZyB0YWcsIFN0cmluZ1tdW10gdmFsdWUpIHsKKyAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA+IDApIHsKKyAgICAgICAgICAgIGlmICh2YWx1ZVswXS5sZW5ndGggPiAyKSB7CisgICAgICAgICAgICAgICAgd3JpdGUyRCh0YWcsIHZhbHVlKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgd3JpdGVUYWdnZWQodGFnLCB2YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB3cml0ZVRhZ2dlZCh0YWcsIHZhbHVlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByb3RlY3RlZCBhYnN0cmFjdCB2b2lkIG9wZW4oTG9jYWxlIGxvY2FsZSk7CisgICAgcHJvdGVjdGVkIGFic3RyYWN0IHZvaWQgd3JpdGUoU3RyaW5nIHRhZywgU3RyaW5nIHZhbHVlKTsKKyAgICBwcm90ZWN0ZWQgYWJzdHJhY3Qgdm9pZCB3cml0ZShTdHJpbmcgdGFnLCBTdHJpbmdbXSB2YWx1ZSk7CisgICAgcHJvdGVjdGVkIGFic3RyYWN0IHZvaWQgd3JpdGUyRChTdHJpbmcgdGFnLCBTdHJpbmdbXVtdIHZhbHVlKTsKKyAgICBwcm90ZWN0ZWQgYWJzdHJhY3Qgdm9pZCB3cml0ZVRhZ2dlZChTdHJpbmcgdGFnLCBTdHJpbmdbXVtdIHZhbHVlKTsKKyAgICBwcm90ZWN0ZWQgYWJzdHJhY3Qgdm9pZCBjbG9zZSgpOworICAgIHByb3RlY3RlZCBhYnN0cmFjdCBTdHJpbmcgZ2V0U3RyaW5nSm9pbmluZ0NoYXJhY3RlcigpOworCisgICAgcHJvdGVjdGVkIHZvaWQgdGFiVG8oaW50IHBvcykgeworICAgICAgICBpZiAocG9zID4gbGluZUxlbmd0aCkgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9IGxpbmVMZW5ndGg7IGkgPCBwb3M7IGkrKykgeworICAgICAgICAgICAgICAgIHByaW50KCIgIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVUb0ZpbGUoU3RyaW5nIHN0cil7CisgICAgICAgIFJlcGxhY2VhYmxlU3RyaW5nIHRlbXBTdHIgPSBuZXcgUmVwbGFjZWFibGVTdHJpbmcoKTsKKyAgICAgICAgdGVtcFN0ci5yZXBsYWNlKDAsdGVtcFN0ci5sZW5ndGgoKSxzdHIpOworICAgICAgICAKKyAgICAgICAgLy9odVRyYW5zbGl0LnRyYW5zbGl0ZXJhdGUodGVtcFN0cik7CisgICAgICAgIC8vdWhUcmFuc2xpdC50cmFuc2xpdGVyYXRlKHRlbXBTdHIpOworICAgICAgICAgdHJ5eworICAgICAgICAgICAgICAgIG91dEJ1ZldyaXRlLndyaXRlKHRlbXBTdHIudG9TdHJpbmcoKSk7CisgICAgICAgICB9CisgICAgICAgICBjYXRjaChqYXZhLmlvLklPRXhjZXB0aW9uIGUpeworICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJDb3VsZCBub3Qgd3JpdGUgdG8gZmlsZSIpOworICAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwcm90ZWN0ZWQgdm9pZCBwcmludChTdHJpbmcgdmFsKSB7CisgICAgICAgIGlmIChuZWVkc0luZGVudCkgeworICAgICAgICAgICAgb3V0LnByaW50KGluZGVudFN0cmluZyk7CisgICAgICAgICAgICB3cml0ZVRvRmlsZShpbmRlbnRTdHJpbmcpOworICAgICAgICAgICAgbGluZUxlbmd0aCArPSBpbmRlbnRTdHJpbmcubGVuZ3RoKCk7CisgICAgICAgICAgICBuZWVkc0luZGVudCA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIFJlcGxhY2VhYmxlU3RyaW5nIHRlbXBTdHIgPSBuZXcgUmVwbGFjZWFibGVTdHJpbmcoKTsKKyAgICAgICAgdGVtcFN0ci5yZXBsYWNlKDAsdGVtcFN0ci5sZW5ndGgoKSx2YWwpOyAgICAgIAorICAgICAgICBodVRyYW5zbGl0LnRyYW5zbGl0ZXJhdGUodGVtcFN0cik7CisgICAgICAgIFN0cmluZyB0dmFsID0gdGVtcFN0ci50b1N0cmluZygpOworICAgICAgICBpZih0dmFsLmxlbmd0aCgpPCB2YWwubGVuZ3RoKCkpeworICAgICAgICAgICAvLyB1aFRyYW5zbGl0LnRyYW5zbGl0ZXJhdGUodGVtcFN0cik7CisgICAgICAgICAgICB0dmFsPXByZXBlbmRFc2ModGVtcFN0ci50b1N0cmluZygpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAodHZhbCAhPSBudWxsKSB7CisgICAgICAgICAgICBvdXQucHJpbnQodHZhbCk7CisgICAgICAgICAgICB3cml0ZVRvRmlsZSh0dmFsKTsKKyAgICAgICAgICAgIGludCBsZW4gPSAwOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBFT0xfQ0hBUlMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBsZW4gPSBNYXRoLm1heChsZW4sIHR2YWwubGFzdEluZGV4T2YoRU9MX0NIQVJTW2ldKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobGVuID09IDApIHsKKyAgICAgICAgICAgICAgICBsaW5lTGVuZ3RoICs9IHR2YWwubGVuZ3RoKCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGxpbmVMZW5ndGggPSB0dmFsLmxlbmd0aCgpIC0gbGVuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHByb3RlY3RlZCBTdHJpbmcgcHJlcGVuZEVzYyhTdHJpbmcgc3RyKXsKKyAgICAgICAgU3RyaW5nQnVmZmVyIG15U3RyID0gIG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgZm9yKGludCBpPTA7aTxzdHIubGVuZ3RoKCk7aSsrKXsKKyAgICAgICAgICAgIGNoYXIgY2ggPSBzdHIuY2hhckF0KGkpOworICAgICAgICAgICAgaWYoY2ggPiAweDAwN2YpeworICAgICAgICAgICAgICAgIG15U3RyLmFwcGVuZCgiXFx1Iik7CisgICAgICAgICAgICAgICAgbXlTdHIuYXBwZW5kKHRvSGV4U3RyaW5nKGNoLDE2LDQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2V7CisgICAgICAgICAgICAgICAgbXlTdHIuYXBwZW5kKGNoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbXlTdHIudG9TdHJpbmcoKTsKKyAgICB9CisgICAgcHJvdGVjdGVkIFN0cmluZyB0b0hleFN0cmluZyhjaGFyIGNoLCBpbnQgcmFkaXgsIGludCBwYWQpeworICAgICAgICBmaW5hbCBpbnQgTUFYX0RJR0lUUyA9IDEwOworICAgICAgICBpbnQgbGVuZ3RoID0gMDsKKyAgICAgICAgY2hhciBidWZmZXJbXSA9IG5ldyBjaGFyWzEwXTsKKyAgICAgICAgaW50IG51bSA9IDA7CisgICAgICAgIGludCBkaWdpdDsKKyAgICAgICAgaW50IGo7CisgICAgICAgIGNoYXIgdGVtcDsKKyAgICAgICAgaW50IGkgPSAoaW50KWNoOworICAgICAgICBkb3sKKyAgICAgICAgICAgIGRpZ2l0ID0gKGludCkoaSAlIHJhZGl4KTsKKyAgICAgICAgICAgIGJ1ZmZlcltsZW5ndGgrK109KGNoYXIpKGRpZ2l0PD05PygweDAwMzArZGlnaXQpOigweDAwMzArZGlnaXQrNykpOworICAgICAgICAgICAgaT0oaS9yYWRpeCk7CisgICAgICAgIH13aGlsZShpPjApOworCisgICAgICAgIHdoaWxlIChsZW5ndGggPCBwYWQpeyAgIAorICAgICAgICAgICAgYnVmZmVyW2xlbmd0aCsrXSA9ICAweDAwMzA7Lyp6ZXJvIHBhZGRpbmcgKi8KKyAgICAgICAgfQorICAgICAgICAvKiBudWxsIHRlcm1pbmF0ZSB0aGUgYnVmZmVyICovCisgICAgICAgIGlmKGxlbmd0aDxNQVhfRElHSVRTKXsKKyAgICAgICAgICAgIGJ1ZmZlcltsZW5ndGhdID0gIDB4MDAwMDsKKyAgICAgICAgfQorICAgICAgICBudW09IChwYWQ+PWxlbmd0aCkgPyBwYWQgOmxlbmd0aDsKKyAgICAgICAgICAgICAgCisgICAgICAgIC8qIFJldmVyc2VzIHRoZSBzdHJpbmcgKi8KKyAgICAgICAgZm9yIChqID0gMDsgaiA8IChudW0gLyAyKTsgaisrKXsKKyAgICAgICAgICAgIHRlbXAgPSBidWZmZXJbKGxlbmd0aC0xKSAtIGpdOworICAgICAgICAgICAgYnVmZmVyWyhsZW5ndGgtMSkgLSBqXSA9IGJ1ZmZlcltqXTsKKyAgICAgICAgICAgIGJ1ZmZlcltqXSA9IHRlbXA7CisgICAgICAgICAgICB9CisgICAgICAgIHJldHVybiBuZXcgU3RyaW5nKGJ1ZmZlciwwLGxlbmd0aCk7CisgICAgfQorICAgICAgICAKKyAgICBwcm90ZWN0ZWQgdm9pZCBwcmludGxuKFN0cmluZyB2YWwpIHsKKyAgICAgICAgcHJpbnQodmFsKTsKKyAgICAgICAgb3V0LnByaW50bG4oKTsKKyAgICAgICAgd3JpdGVUb0ZpbGUoIlxuIik7CisgICAgICAgIGxpbmVMZW5ndGggPSAwOworICAgICAgICBuZWVkc0luZGVudCA9IHRydWU7CisgICAgfQorCisgICAgcHJvdGVjdGVkIHZvaWQgcHJpbnRTdHJpbmcoU3RyaW5nIHZhbCkgeworICAgICAgICBpZiAodmFsICE9IG51bGwpIHsKKyAgICAgICAgICAgIGluZGVudCgpOworICAgICAgICAgICAgbGluZUJ1ZmZlci5zZXRMZW5ndGgoMCk7CisgICAgICAgICAgICBsaW5lQnVmZmVyLmFwcGVuZCgiXCIiKTsKKyAgICAgICAgICAgIGZpbmFsIGludCBzaXplID0gdmFsLmxlbmd0aCgpOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgICAgICAgICBhcHBlbmQodmFsLmNoYXJBdChpKSk7CisgICAgICAgICAgICAgICAgLyppZiAoIWFwcGVuZCh2YWwuY2hhckF0KGkpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbGluZUJ1ZmZlci5hcHBlbmQoIlwiIik7CisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lQnVmZmVyLmFwcGVuZChnZXRTdHJpbmdKb2luaW5nQ2hhcmFjdGVyKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRsbihsaW5lQnVmZmVyLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgbGluZUJ1ZmZlci5zZXRMZW5ndGgoMCk7CisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lQnVmZmVyLmFwcGVuZCgiXCIiKTsKKyAgICAgICAgICAgICAgICB9Ki8KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgbGluZUJ1ZmZlci5hcHBlbmQoIlwiIik7CisgICAgICAgICAgICBwcmludChsaW5lQnVmZmVyLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgb3V0ZGVudCgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcHJpbnQoIlwiXCIiKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAgICAgCisgICAgcHJvdGVjdGVkIGJvb2xlYW4gYXBwZW5kKGZpbmFsIGNoYXIgYykgeworICAgICAgICBib29sZWFuIGVzY2FwZSA9IGlzRXNjYXBlQ2hhcihjKTsKKyAgICAgICAgaWYgKGVzY2FwZSkgeworICAgICAgICAgICAgYXBwZW5kRXNjYXBlZENoYXIoYywgbGluZUJ1ZmZlcik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsaW5lQnVmZmVyLmFwcGVuZChjKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKGxpbmVMZW5ndGggKyBsaW5lQnVmZmVyLmxlbmd0aCgpIDwgTUFYX0xJTkVfTEVOR1RIKTsKKyAgICB9CisgICAgCisgICAgcHJvdGVjdGVkIGJvb2xlYW4gaXNFc2NhcGVDaGFyKGZpbmFsIGNoYXIgYykgeworICAgICAgICBzd2l0Y2ggKGMpIHsKKyAgICAgICAgY2FzZSAnIic6CisgICAgICAgIGNhc2UgJ1xcJzoKKyAgICAgICAgY2FzZSAnXG4nOgorICAgICAgICBjYXNlICdccic6CisgICAgICAgIGNhc2UgJ1x1MjAyOCc6CisgICAgICAgIGNhc2UgJ1x1MjAyOSc6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiAoYyA8ICcgJykgfHwgKGMgPiAweDA3Rik7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHJvdGVjdGVkIHZvaWQgYXBwZW5kRXNjYXBlZENoYXIoY2hhciBjLCBTdHJpbmdCdWZmZXIgYnVmZmVyKSB7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQoZ2V0RXNjYXBlQ2hhcigpKTsKKyAgICAgICAgaW50IHZhbHVlID0gKChpbnQpYykgJiAweEZGRkY7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQoSEVYX0RJR0lUWyh2YWx1ZSAmIDB4RjAwMCkgPj4gMTJdKTsKKyAgICAgICAgYnVmZmVyLmFwcGVuZChIRVhfRElHSVRbKHZhbHVlICYgMHgwRjAwKSA+PiA4XSk7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQoSEVYX0RJR0lUWyh2YWx1ZSAmIDB4MDBGMCkgPj4gNF0pOworICAgICAgICBidWZmZXIuYXBwZW5kKEhFWF9ESUdJVFsodmFsdWUgJiAweDAwMEYpXSk7CisgICAgfQorICAgIAorICAgIHByb3RlY3RlZCBTdHJpbmcgZ2V0RXNjYXBlQ2hhcigpIHsKKyAgICAgICAgcmV0dXJuICJcXHUiOworICAgIH0KKyAgICAKKyAgICBwcm90ZWN0ZWQgZmluYWwgdm9pZCBpbmRlbnQoKSB7CisgICAgICAgIGluZGVudCgxKTsKKyAgICB9CisgICAgcHJvdGVjdGVkIHZvaWQgaW5kZW50KGludCBhbW91bnQpIHsKKyAgICAgICAgaW5kZW50TGV2ZWwgKz0gYW1vdW50OworICAgICAgICBpbmRlbnRTdHJpbmcgPSBJTkRFTlRfQ0hBUlMuc3Vic3RyaW5nKDAsIGluZGVudExldmVsKklOREVOVF9TSVpFKTsKKyAgICB9CisgICAgCisgICAgcHJvdGVjdGVkIGZpbmFsIHZvaWQgb3V0ZGVudCgpIHsKKyAgICAgICAgb3V0ZGVudCgxKTsKKyAgICB9CisgICAgcHJvdGVjdGVkIHZvaWQgb3V0ZGVudChpbnQgYW1vdW50KSB7CisgICAgICAgIGluZGVudExldmVsIC09IGFtb3VudDsKKyAgICAgICAgaW5kZW50U3RyaW5nID0gSU5ERU5UX0NIQVJTLnN1YnN0cmluZygwLCBpbmRlbnRMZXZlbCpJTkRFTlRfU0laRSk7CisgICAgfQorCisgICAgc3RhdGljIGZpbmFsIGNoYXJbXSBIRVhfRElHSVQgPSB7JzAnLCcxJywnMicsJzMnLCc0JywnNScsJzYnLCc3JywKKyAgICAgICAgICAgICAgICAgICAgICc4JywnOScsJ0EnLCdCJywnQycsJ0QnLCdFJywnRid9OworCisgICAgLyoqIFJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBmb3IgdGhlIHNwZWNpZmllZCB0YWcgaXMgdGhlIHNhbWUKKyAgICAgKiBhcyB0aGUgdmFsdWUgaW5oZXJpdGVkIGZyb20gdGhlIHBhcmVudCBmb3IgdGhhdCB0YWcgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gaXNEdXBsaWNhdGVPZkluaGVyaXRlZFZhbHVlKGZpbmFsIExvY2FsZSBsb2MsIFN0cmluZyB0YWcsIE9iamVjdCB2YWx1ZSkgeworICAgICAgICBpZiAodmFsdWUgPT0gbnVsbCkgcmV0dXJuIHRydWU7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmaW5hbCBSZXNvdXJjZUJ1bmRsZSBwYXJlbnRCdW5kbGUgPSBnZXRQYXJlbnRCdW5kbGUobG9jKTsKKyAgICAgICAgICAgIGlmIChwYXJlbnRCdW5kbGUgPT0gbnVsbCkgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgT2JqZWN0IHBhcmVudFZhbHVlID0gcGFyZW50QnVuZGxlLmdldE9iamVjdCh0YWcpOworICAgICAgICAgICAgaWYgKCFvYmplY3RzQXJlRXF1YWwodmFsdWUsIHBhcmVudFZhbHVlKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0gY2F0Y2ggKGphdmEudXRpbC5NaXNzaW5nUmVzb3VyY2VFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHByaXZhdGUgYm9vbGVhbiBvYmplY3RzQXJlRXF1YWwoZmluYWwgT2JqZWN0IGl0ZW0sIGZpbmFsIE9iamVjdCBwYXJlbnRJdGVtKSB7CisgICAgICAgIGlmIChpdGVtIGluc3RhbmNlb2YgT2JqZWN0W10gJiYgcGFyZW50SXRlbSBpbnN0YW5jZW9mIE9iamVjdFtdKSB7CisgICAgICAgICAgICByZXR1cm4gYXJyYXlzQXJlRXF1YWwoKE9iamVjdFtdKWl0ZW0sIChPYmplY3RbXSlwYXJlbnRJdGVtKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBpdGVtLmVxdWFscyhwYXJlbnRJdGVtKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwcml2YXRlIGJvb2xlYW4gYXJyYXlzQXJlRXF1YWwoZmluYWwgT2JqZWN0W10gaXRlbSwgZmluYWwgT2JqZWN0W10gcGFyZW50SXRlbSkgeworICAgICAgICBib29sZWFuIG1hdGNoZXMgPSBpdGVtLmxlbmd0aCA9PSBwYXJlbnRJdGVtLmxlbmd0aDsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpdGVtLmxlbmd0aCAmJiBtYXRjaGVzOyBpKyspIHsKKyAgICAgICAgICAgIG1hdGNoZXMgPSBvYmplY3RzQXJlRXF1YWwoaXRlbVtpXSwgcGFyZW50SXRlbVtpXSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1hdGNoZXM7CisgICAgfQorICAgICAgICAKKyAgICBwcml2YXRlIFJlc291cmNlQnVuZGxlIGdldFBhcmVudEJ1bmRsZShmaW5hbCBMb2NhbGUgbG9jKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmaW5hbCBTdHJpbmcgeCA9IGxvYy50b1N0cmluZygpOworICAgICAgICAgICAgZmluYWwgaW50IG5keCA9IHgubGFzdEluZGV4T2YoJ18nKTsKKyAgICAgICAgICAgIGlmIChuZHggPCAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBwYXJlbnRMb2NOYW1lID0geC5zdWJzdHJpbmcoMCwgbmR4KTsKKyAgICAgICAgICAgICAgICBmaW5hbCBMb2NhbGUgcGFyZW50TG9jID0gbG9jYWxlRnJvbVN0cmluZyhwYXJlbnRMb2NOYW1lKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gUmVzb3VyY2VCdW5kbGUuZ2V0QnVuZGxlKCJjb20uaWJtLmljdS5kZXYudG9vbC5sb2NhbGVjb252ZXJ0ZXIubXlMb2NhbGVFbGVtZW50cyIsIHBhcmVudExvYyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gY2F0Y2ggKE1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwcml2YXRlIFN0cmluZyByZXBsYWNlKFN0cmluZyBzb3VyY2UsIFN0cmluZyB0YXJnZXQsIFN0cmluZyByZXBsYWNlbWVudCkgeworICAgICAgICBpZiAodGFyZ2V0LmVxdWFscyhyZXBsYWNlbWVudCkpIHsKKyAgICAgICAgICAgIHJldHVybiBzb3VyY2U7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBTdHJpbmdCdWZmZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICAgICAgaW50IGxhc3ROZHggPSAwOworICAgICAgICAgICAgaW50IG5keCA9IHNvdXJjZS5pbmRleE9mKHRhcmdldCk7CisgICAgICAgICAgICB3aGlsZSAobmR4ID49IDApIHsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHNvdXJjZS5zdWJzdHJpbmcobGFzdE5keCwgbmR4KSk7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChyZXBsYWNlbWVudCk7CisgICAgICAgICAgICAgICAgbmR4ICs9IHRhcmdldC5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICBsYXN0TmR4ID0gbmR4OworICAgICAgICAgICAgICAgIG5keCA9IHNvdXJjZS5pbmRleE9mKHRhcmdldCwgbmR4KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc291cmNlLnN1YnN0cmluZyhsYXN0TmR4KSk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgTG9jYWxlIGxvY2FsZUZyb21TdHJpbmcoZmluYWwgU3RyaW5nIGxvY2FsZU5hbWUpIHsKKyAgICAgICAgU3RyaW5nIGxhbmd1YWdlID0gbG9jYWxlTmFtZTsKKyAgICAgICAgU3RyaW5nIGNvdW50cnkgPSAiIjsKKyAgICAgICAgU3RyaW5nIHZhcmlhbnQgPSAiIjsKKyAgICAgICAgCisgICAgICAgIGludCBuZHggPSBsYW5ndWFnZS5pbmRleE9mKCdfJyk7CisgICAgICAgIGlmIChuZHggPj0gMCkgeworICAgICAgICAgICAgY291bnRyeSA9IGxhbmd1YWdlLnN1YnN0cmluZyhuZHgrMSk7CisgICAgICAgICAgICBsYW5ndWFnZSA9IGxhbmd1YWdlLnN1YnN0cmluZygwLCBuZHgpOworICAgICAgICB9CisgICAgICAgIG5keCA9IGNvdW50cnkuaW5kZXhPZignXycpOworICAgICAgICBpZiAobmR4ID49IDApIHsKKyAgICAgICAgICAgIHZhcmlhbnQgPSBjb3VudHJ5LnN1YnN0cmluZyhuZHgpOworICAgICAgICAgICAgY291bnRyeSA9IGNvdW50cnkuc3Vic3RyaW5nKDAsIG5keCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG5ldyBMb2NhbGUobGFuZ3VhZ2UsIGNvdW50cnksIHZhcmlhbnQpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvTmV1dHJhbFRvSjFDb252ZXJ0ZXIuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvTmV1dHJhbFRvSjFDb252ZXJ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44MTc1M2VmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9OZXV0cmFsVG9KMUNvbnZlcnRlci5qYXZhCkBAIC0wLDAgKzEsMjA5IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMi0yMDA0LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL05ldXRyYWxUb0oxQ29udmVydGVyLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDIvMTYgMDM6MDU6MzAgJCAKKyAqICRSZXZpc2lvbjogMS4zICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudG9vbC5sb2NhbGVjb252ZXJ0ZXI7CisKK2ltcG9ydCBqYXZhLmlvLio7CitpbXBvcnQgamF2YS51dGlsLio7CisKK3B1YmxpYyBjbGFzcyBOZXV0cmFsVG9KMUNvbnZlcnRlciBleHRlbmRzIExvY2FsZUNvbnZlcnRlciB7CisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgQ29udmVyc2lvbiB7CisgICAgICAgIHByaXZhdGUgU3RyaW5nIHByb3BOYW1lOworICAgICAgICBwcml2YXRlIGludCBuZHg7CisgICAgICAgIHByb3RlY3RlZCBDb252ZXJzaW9uKCkgeworICAgICAgICB9CisgICAgICAgIHB1YmxpYyBDb252ZXJzaW9uKFN0cmluZyBwcm9wTmFtZSkgeworICAgICAgICAgICAgdGhpcy5wcm9wTmFtZSA9IHByb3BOYW1lOworICAgICAgICAgICAgdGhpcy5uZHggPSAtMTsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgQ29udmVyc2lvbihTdHJpbmcgcHJvcE5hbWUsIGludCBuZHgpIHsKKyAgICAgICAgICAgIHRoaXMucHJvcE5hbWUgPSBwcm9wTmFtZTsKKyAgICAgICAgICAgIHRoaXMubmR4ID0gbmR4OworICAgICAgICB9CisgICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0UHJvcE5hbWUoKSB7CisgICAgICAgICAgICByZXR1cm4gcHJvcE5hbWU7CisgICAgICAgIH0KKyAgICAgICAgcHVibGljIFN0cmluZyBjb252ZXJ0KEhhc2h0YWJsZSBzb3VyY2UpIHRocm93cyBDb252ZXJzaW9uRXJyb3IgeworICAgICAgICAgICAgT2JqZWN0IHNvdXJjZURhdGEgPSBzb3VyY2UuZ2V0KHByb3BOYW1lKTsKKyAgICAgICAgICAgIGlmIChzb3VyY2VEYXRhID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChuZHggPj0gMCkgeworICAgICAgICAgICAgICAgIGlmIChzb3VyY2VEYXRhIGluc3RhbmNlb2YgU3RyaW5nW10pIHsKKyAgICAgICAgICAgICAgICAgICAgc291cmNlRGF0YSA9ICgoU3RyaW5nW10pc291cmNlRGF0YSlbbmR4XTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZURhdGEgaW5zdGFuY2VvZiBTdHJpbmdbXVtdKSB7CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZURhdGEgPSAoKFN0cmluZ1tdW10pc291cmNlRGF0YSlbbmR4XTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc291cmNlRGF0YSBpbnN0YW5jZW9mIFN0cmluZykgeworICAgICAgICAgICAgICAgIHJldHVybiAoU3RyaW5nKXNvdXJjZURhdGE7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZURhdGEgaW5zdGFuY2VvZiBTdHJpbmdbXSkgeworICAgICAgICAgICAgICAgIFN0cmluZ1tdIGRhdGEgPSAoU3RyaW5nW10pc291cmNlRGF0YTsKKyAgICAgICAgICAgICAgICBTdHJpbmdCdWZmZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBpZiAoaSA+IDApIHJlc3VsdC5hcHBlbmQoJzsnKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChkYXRhW2ldKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ29udmVyc2lvbkVycm9yKCJjb3VsZCBub3QgY29udmVydCB0YWc6ICIrcHJvcE5hbWUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgQ29sbGF0aW9uQ29udmVyc2lvbiBleHRlbmRzIENvbnZlcnNpb24geworICAgICAgICBwdWJsaWMgU3RyaW5nIGNvbnZlcnQoSGFzaHRhYmxlIHNvdXJjZSkgdGhyb3dzIENvbnZlcnNpb25FcnJvciB7CisgICAgICAgICAgICBPYmplY3RbXVtdIGVsZW1lbnRzID0gKE9iamVjdFtdW10pc291cmNlLmdldCgiQ29sbGF0aW9uRWxlbWVudHMiKTsKKyAgICAgICAgICAgIENvbGxhdGlvbkl0ZW1bXSBpdGVtcyA9IChDb2xsYXRpb25JdGVtW10pZWxlbWVudHNbMl1bMV07CisgICAgICAgICAgICBpZiAoaXRlbXMgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgU3RyaW5nQnVmZmVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGlmKGl0ZW1zW2ldIT1udWxsKXsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoaXRlbXNbaV0udG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgQ29udmVyc2lvbltdIGNvbnZlcnNpb25zID0geworICAgICAgICBuZXcgQ29udmVyc2lvbigiTG9jYWxlU3RyaW5nIiksIC8qbG9jYWxlIGlkIGJhc2VkIG9uIGlzbyBjb2RlcyovCisgICAgICAgIG5ldyBDb252ZXJzaW9uKCJMb2NhbGVJRCIpLCAvKldpbmRvd3MgaWQqLworICAgICAgICBuZXcgQ29udmVyc2lvbigiU2hvcnRMYW5ndWFnZSIpLCAvKmlzby0zIGFiYnJldiBsYW5nIG5hbWUqLworICAgICAgICBuZXcgQ29udmVyc2lvbigiU2hvcnRDb3VudHJ5IiksIC8qaXNvLTMgYWJicmV2IGNvdW50cnkgbmFtZSovCisgICAgICAgIG5ldyBDb252ZXJzaW9uKCJMYW5ndWFnZXMiKSwgLypsYW5ndWFnZSBuYW1lcyovCisgICAgICAgIG5ldyBDb252ZXJzaW9uKCJDb3VudHJpZXMiKSwgLypjb3VudHJ5IG5hbWVzKi8KKyAgICAgICAgbmV3IENvbnZlcnNpb24oIk1vbnRoTmFtZXMiLDApLCAvKmphbnVhcnkqLworICAgICAgICBuZXcgQ29udmVyc2lvbigiTW9udGhOYW1lcyIsMSksIC8qZmVicnVhcnkqLworICAgICAgICBuZXcgQ29udmVyc2lvbigiTW9udGhOYW1lcyIsMiksIC8qbWFyY2gqLworICAgICAgICBuZXcgQ29udmVyc2lvbigiTW9udGhOYW1lcyIsMyksIC8qYXByaWwqLworICAgICAgICBuZXcgQ29udmVyc2lvbigiTW9udGhOYW1lcyIsNCksIC8qbWF5Ki8KKyAgICAgICAgbmV3IENvbnZlcnNpb24oIk1vbnRoTmFtZXMiLDUpLCAvKmp1bmUqLworICAgICAgICBuZXcgQ29udmVyc2lvbigiTW9udGhOYW1lcyIsNiksIC8qanVseSovCisgICAgICAgIG5ldyBDb252ZXJzaW9uKCJNb250aE5hbWVzIiw3KSwgLyphdWd1c3QqLworICAgICAgICBuZXcgQ29udmVyc2lvbigiTW9udGhOYW1lcyIsOCksIC8qc2VwdGVtYmVyKi8KKyAgICAgICAgbmV3IENvbnZlcnNpb24oIk1vbnRoTmFtZXMiLDkpLCAvKm9jdG9iZXIqLworICAgICAgICBuZXcgQ29udmVyc2lvbigiTW9udGhOYW1lcyIsMTApLCAvKm5vdmVtYmVyKi8KKyAgICAgICAgbmV3IENvbnZlcnNpb24oIk1vbnRoTmFtZXMiLDExKSwgLypkZWNlbWJlciovCisgICAgICAgIG5ldyBDb252ZXJzaW9uKCJNb250aE5hbWVzIiwxMiksIC8qbW9udGggMTMgaWYgYXBwbGljYWJsZSovCisgICAgICAgIG5ldyBDb252ZXJzaW9uKCJNb250aEFiYnJldmlhdGlvbnMiLDApLCAvKmFiYiBqYW51YXJ5Ki8KKyAgICAgICAgbmV3IENvbnZlcnNpb24oIk1vbnRoQWJicmV2aWF0aW9ucyIsMSksIC8qYWJiIGZlYnJ1YXJ5Ki8KKyAgICAgICAgbmV3IENvbnZlcnNpb24oIk1vbnRoQWJicmV2aWF0aW9ucyIsMiksIC8qYWJiIG1hcmNoKi8KKyAgICAgICAgbmV3IENvbnZlcnNpb24oIk1vbnRoQWJicmV2aWF0aW9ucyIsMyksIC8qYWJiIGFwcmlsKi8KKyAgICAgICAgbmV3IENvbnZlcnNpb24oIk1vbnRoQWJicmV2aWF0aW9ucyIsNCksIC8qYWJiIG1heSovCisgICAgICAgIG5ldyBDb252ZXJzaW9uKCJNb250aEFiYnJldmlhdGlvbnMiLDUpLCAvKmFiYiBqdW5lKi8KKyAgICAgICAgbmV3IENvbnZlcnNpb24oIk1vbnRoQWJicmV2aWF0aW9ucyIsNiksIC8qYWJiIGp1bHkqLworICAgICAgICBuZXcgQ29udmVyc2lvbigiTW9udGhBYmJyZXZpYXRpb25zIiw3KSwgLyphYmIgYXVndXN0Ki8KKyAgICAgICAgbmV3IENvbnZlcnNpb24oIk1vbnRoQWJicmV2aWF0aW9ucyIsOCksIC8qYWJiIHNlcHRlbWJlciovCisgICAgICAgIG5ldyBDb252ZXJzaW9uKCJNb250aEFiYnJldmlhdGlvbnMiLDkpLCAvKmFiYiBvY3RvYmVyKi8KKyAgICAgICAgbmV3IENvbnZlcnNpb24oIk1vbnRoQWJicmV2aWF0aW9ucyIsMTApLCAvKmFiYiBub3ZlbWJlciovCisgICAgICAgIG5ldyBDb252ZXJzaW9uKCJNb250aEFiYnJldmlhdGlvbnMiLDExKSwgLyphYmIgZGVjZW1iZXIqLworICAgICAgICBuZXcgQ29udmVyc2lvbigiTW9udGhBYmJyZXZpYXRpb25zIiwxMiksIC8qYWJiIG1vbnRoIDEzIGlmIGFwcGxpY2FibGUqLworICAgICAgICBuZXcgQ29udmVyc2lvbigiRGF5TmFtZXMiLDApLCAvKk1vbmRheSovCisgICAgICAgIG5ldyBDb252ZXJzaW9uKCJEYXlOYW1lcyIsMSksIC8qVHVlc2RheSovCisgICAgICAgIG5ldyBDb252ZXJzaW9uKCJEYXlOYW1lcyIsMiksIC8qV2VkbmVzZGF5Ki8KKyAgICAgICAgbmV3IENvbnZlcnNpb24oIkRheU5hbWVzIiwzKSwgLypUaHVyc2RheSovCisgICAgICAgIG5ldyBDb252ZXJzaW9uKCJEYXlOYW1lcyIsNCksIC8qRnJpZGF5Ki8KKyAgICAgICAgbmV3IENvbnZlcnNpb24oIkRheU5hbWVzIiw1KSwgLypTYXR1cmRheSovCisgICAgICAgIG5ldyBDb252ZXJzaW9uKCJEYXlOYW1lcyIsNiksIC8qU3VuZGF5Ki8KKyAgICAgICAgbmV3IENvbnZlcnNpb24oIkRheUFiYnJldmlhdGlvbnMiLDApLCAvKmFiYiBNb25kYXkqLworICAgICAgICBuZXcgQ29udmVyc2lvbigiRGF5QWJicmV2aWF0aW9ucyIsMSksIC8qYWJiIFR1ZXNkYXkqLworICAgICAgICBuZXcgQ29udmVyc2lvbigiRGF5QWJicmV2aWF0aW9ucyIsMiksIC8qYWJiIFdlZG5lc2RheSovCisgICAgICAgIG5ldyBDb252ZXJzaW9uKCJEYXlBYmJyZXZpYXRpb25zIiwzKSwgLyphYmIgVGh1cnNkYXkqLworICAgICAgICBuZXcgQ29udmVyc2lvbigiRGF5QWJicmV2aWF0aW9ucyIsNCksIC8qYWJiIEZyaWRheSovCisgICAgICAgIG5ldyBDb252ZXJzaW9uKCJEYXlBYmJyZXZpYXRpb25zIiw1KSwgLyphYmIgU2F0dXJkYXkqLworICAgICAgICBuZXcgQ29udmVyc2lvbigiRGF5QWJicmV2aWF0aW9ucyIsNiksIC8qYWJiIFN1bmRheSovCisgICAgICAgIG5ldyBDb252ZXJzaW9uKCJBbVBtTWFya2VycyIsMCksIC8qYW0gbWFya2VyKi8KKyAgICAgICAgbmV3IENvbnZlcnNpb24oIkFtUG1NYXJrZXJzIiwxKSwgLypwbSBtYXJrZXIqLworICAgICAgICBuZXcgQ29udmVyc2lvbigiRXJhcyIpLC8qZXJhIHN0cmluZ3MqLworICAgICAgICBuZXcgQ29udmVyc2lvbigiTnVtYmVyUGF0dGVybnMiLDApLCAvKmRlY2ltYWwgcGF0dGVybiovCisgICAgICAgIG5ldyBDb252ZXJzaW9uKCJOdW1iZXJQYXR0ZXJucyIsMSksIC8qY3VycmVuY3kgcGF0dGVybiovCisgICAgICAgIG5ldyBDb252ZXJzaW9uKCJOdW1iZXJQYXR0ZXJucyIsMiksIC8qcGVyY2VudCBwYXR0ZXJuKi8KKyAgICAgICAgbmV3IENvbnZlcnNpb24oIk51bWJlckVsZW1lbnRzIiwwKSwgLypkZWNpbWFsIHNlcGFyYXRvciovCisgICAgICAgIG5ldyBDb252ZXJzaW9uKCJOdW1iZXJFbGVtZW50cyIsMSksIC8qZ3JvdXAgKHRob3VzYW5kcykgc2VwYXJhdG9yKi8KKyAgICAgICAgbmV3IENvbnZlcnNpb24oIk51bWJlckVsZW1lbnRzIiwyKSwgLypsaXN0IHNlcGFyYXRvciovCisgICAgICAgIG5ldyBDb252ZXJzaW9uKCJOdW1iZXJFbGVtZW50cyIsMyksIC8qcGVyY2VudCBzaWduKi8KKyAgICAgICAgbmV3IENvbnZlcnNpb24oIk51bWJlckVsZW1lbnRzIiw0KSwgLypuYXRpdmUgMCBkaWdpdCovCisgICAgICAgIG5ldyBDb252ZXJzaW9uKCJOdW1iZXJFbGVtZW50cyIsNSksIC8qcGF0dGVybiBkaWdpdCovCisgICAgICAgIG5ldyBDb252ZXJzaW9uKCJOdW1iZXJFbGVtZW50cyIsNiksIC8qbWludXMgc2lnbiovCisgICAgICAgIG5ldyBDb252ZXJzaW9uKCJOdW1iZXJFbGVtZW50cyIsNyksIC8qZXhwb25lbnRpYWwqLworICAgICAgICBuZXcgQ29udmVyc2lvbigiQ3VycmVuY3lFbGVtZW50cyIsMCksIC8qbG9jYWwgY3VycmVuY3kgc3ltYm9sKi8KKyAgICAgICAgbmV3IENvbnZlcnNpb24oIkN1cnJlbmN5RWxlbWVudHMiLDEpLCAvKmludGwgY3VycmVuY3kgc3ltYm9sKi8KKyAgICAgICAgbmV3IENvbnZlcnNpb24oIkN1cnJlbmN5RWxlbWVudHMiLDIpLCAvKm1vbmV0YXJ5IGRlY2ltYWwgc2VwYXJhdG9yKi8KKyAgICAgICAgbmV3IENvbnZlcnNpb24oIkRhdGVUaW1lUGF0dGVybnMiLDApLCAvKmZ1bGwgdGltZSBwYXR0ZXJuKi8KKyAgICAgICAgbmV3IENvbnZlcnNpb24oIkRhdGVUaW1lUGF0dGVybnMiLDEpLCAvKmxvbmcgdGltZSBwYXR0ZXJuKi8KKyAgICAgICAgbmV3IENvbnZlcnNpb24oIkRhdGVUaW1lUGF0dGVybnMiLDIpLCAvKm1lZGl1bSB0aW1lIHBhdHRlcm4qLworICAgICAgICBuZXcgQ29udmVyc2lvbigiRGF0ZVRpbWVQYXR0ZXJucyIsMyksIC8qc2hvcnQgdGltZSBwYXR0ZXJuKi8KKyAgICAgICAgbmV3IENvbnZlcnNpb24oIkRhdGVUaW1lUGF0dGVybnMiLDQpLCAvKmZ1bGwgZGF0ZSBwYXR0ZXJuKi8KKyAgICAgICAgbmV3IENvbnZlcnNpb24oIkRhdGVUaW1lUGF0dGVybnMiLDUpLCAvKmxvbmcgZGF0ZSBwYXR0ZXJuKi8KKyAgICAgICAgbmV3IENvbnZlcnNpb24oIkRhdGVUaW1lUGF0dGVybnMiLDYpLCAvKm1lZGl1bSBkYXRlIHBhdHRlcm4qLworICAgICAgICBuZXcgQ29udmVyc2lvbigiRGF0ZVRpbWVQYXR0ZXJucyIsNyksIC8qc2hvcnQgZGF0ZSBwYXR0ZXJuKi8KKyAgICAgICAgbmV3IENvbnZlcnNpb24oIkRhdGVUaW1lUGF0dGVybnMiLDgpLCAvKmRhdGUtdGltZSBwYXR0ZXJuKi8KKyAgICAgICAgbmV3IENvbnZlcnNpb24oIkRhdGVUaW1lRWxlbWVudHMiLDkpLCAvKmZpcnN0IGRheSBvZiB3ZWVrKi8KKyAgICAgICAgbmV3IENvbnZlcnNpb24oIkRhdGVUaW1lRWxlbWVudHMiLDEwKSwgLyptaW4gZGF5cyBpbiBmaXJzdCB3ZWVrKi8KKyAgICAgICAgbmV3IENvbGxhdGlvbkNvbnZlcnNpb24oKSwgLypjb2xsYXRpb24gb3JkZXIqLworICAgIH07CisgICAgcHJpdmF0ZSBMb2NhbGUgbG9jYWxlOworICAgIHByaXZhdGUgTG9jYWxlIHBhcmVudExvY2FsZTsKKyAgICBwcml2YXRlIFJlc291cmNlQnVuZGxlIGRlZmF1bHREYXRhOworCisgICAgcHVibGljIE5ldXRyYWxUb0oxQ29udmVydGVyKExvY2FsZSBsb2NhbGUpIHsKKyAgICAgICAgdGhpcy5sb2NhbGUgPSBsb2NhbGU7CisgICAgICAgIFN0cmluZyBsYW5ndWFnZSA9IGxvY2FsZS50b1N0cmluZygpOworICAgICAgICBTdHJpbmcgY291bnRyeSA9ICIiOworICAgICAgICBTdHJpbmcgdmFyaWFudCA9ICIiOworICAgICAgICAKKyAgICAgICAgaW50IG5keCA9IGxhbmd1YWdlLmluZGV4T2YoJ18nKTsKKyAgICAgICAgaWYgKG5keCA+PSAwKSB7CisgICAgICAgICAgICBjb3VudHJ5ID0gbGFuZ3VhZ2Uuc3Vic3RyaW5nKG5keCsxKTsKKyAgICAgICAgICAgIGxhbmd1YWdlID0gbGFuZ3VhZ2Uuc3Vic3RyaW5nKDAsIG5keCk7CisgICAgICAgIH0KKyAgICAgICAgbmR4ID0gY291bnRyeS5pbmRleE9mKCdfJyk7CisgICAgICAgIGlmIChuZHggPj0gMCkgeworICAgICAgICAgICAgdmFyaWFudCA9IGNvdW50cnkuc3Vic3RyaW5nKG5keCk7CisgICAgICAgICAgICBjb3VudHJ5ID0gY291bnRyeS5zdWJzdHJpbmcoMCwgbmR4KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKCIiLmVxdWFscyhjb3VudHJ5KSkgeworICAgICAgICAgICAgbGFuZ3VhZ2UgPSAiIjsKKyAgICAgICAgICAgIHZhcmlhbnQgPSAiIjsKKyAgICAgICAgfSBlbHNlIGlmICgiIi5lcXVhbHModmFyaWFudCkpIHsKKyAgICAgICAgICAgIGNvdW50cnkgPSAiIjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcGFyZW50TG9jYWxlID0gbmV3IExvY2FsZShsYW5ndWFnZSwgY291bnRyeSwgdmFyaWFudCk7CisgICAgICAgIGRlZmF1bHREYXRhID0KKyAgICAgICAgICAgIFJlc291cmNlQnVuZGxlLmdldEJ1bmRsZSgiY29tLmlibS5pY3UuZGV2LnRvb2wubG9jYWxlY29udmVydGVyLm15TG9jYWxlRWxlbWVudHMiLCBwYXJlbnRMb2NhbGUpOworICAgICAgICAgICAgLy97e0lOSVRfQ09OVFJPTFMKKwkJLy99fQorfQorICAgIAorICAgIC8qKiBjb252ZXJ0IHRoZSBzb3VyY2UgdGFibGUgdG8gdGhlIHJlc3VsdCAqLworICAgIHByb3RlY3RlZCB2b2lkIGNvbnZlcnQoSGFzaHRhYmxlIHJlc3VsdCwgSGFzaHRhYmxlIHNvdXJjZSkgdGhyb3dzIENvbnZlcnNpb25FcnJvciB7CisgICAgICAgIFZlY3RvciBsb2NhbGVFbGVtZW50cyA9IG5ldyBWZWN0b3IoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb252ZXJzaW9ucy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgZmluYWwgQ29udmVyc2lvbiBjb252ID0gY29udmVyc2lvbnNbaV07CisgICAgICAgICAgICBmaW5hbCBTdHJpbmcgbmV3VmFsdWUgPSBjb252LmNvbnZlcnQoc291cmNlKTsKKyAgICAgICAgICAgIGlmIChuZXdWYWx1ZSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgbG9jYWxlRWxlbWVudHMuYWRkRWxlbWVudChuZXdWYWx1ZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGxvY2FsZUVsZW1lbnRzLmFkZEVsZW1lbnQoZGVmYXVsdERhdGEuZ2V0T2JqZWN0KGNvbnYuZ2V0UHJvcE5hbWUoKSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJlc3VsdC5wdXQoIkxvY2FsZUVsZW1lbnRzIiwgbG9jYWxlRWxlbWVudHMpOworICAgIH0KKyAgICAvL3t7REVDTEFSRV9DT05UUk9MUworCS8vfX0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL1BPU0lYTG9jYWxlUmVhZGVyLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL1BPU0lYTG9jYWxlUmVhZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMjZkZTFiOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvUE9TSVhMb2NhbGVSZWFkZXIuamF2YQpAQCAtMCwwICsxLDQwNyBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAwNCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9QT1NJWExvY2FsZVJlYWRlci5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzA4LzAxIDAwOjA4OjU3ICQgCisgKiAkUmV2aXNpb246IDEuMyAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRvb2wubG9jYWxlY29udmVydGVyOworCitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGphdmEudXRpbC4qOworCitwdWJsaWMgY2xhc3MgUE9TSVhMb2NhbGVSZWFkZXIgeworICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIGxvY2FsZURhdGFQYXRoOworICAgIHByaXZhdGUgZmluYWwgTG9jYWxlIGxvY2FsZTsKKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFRBR19UT0tFTiA9IDE7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0VQQVJBVE9SX1RPS0VOID0gMjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBFT0xfVE9LRU4gPSAzOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEVPRl9UT0tFTiA9IDQ7CisKKyAgICAgICAgLy90aGVzZSBzdGF0ZXMgYXJlIHVzZWQgdG8gcGFyc2UgdGhlIGJ1bGsgb2YgdGhlCisgICAgICAgIC8vaW5wdXQgZmlsZS4gIFRoZXkgdHJhbnNsYXRlIGVzY2FwZWQgY2hhcmFjdGVycworICAgICAgICAvL2FuZCBzeW1vbGljIGNoYXJhY3RlciByZWZlcmVuY2VzIGlubGluZS4KKyAgICBzdGF0aWMgZmluYWwgTGV4LlRyYW5zaXRpb25bXVtdIGRhdGFTdGF0ZXMgPSB7CisgICAgICAgIHsgLy9zdGF0ZSAwOiBzdGFydAorICAgICAgICAgICAgbmV3IFNwYWNlVHJhbnNpdGlvbigwKSwKKyAgICAgICAgICAgIG5ldyBMZXguQ2hhclRyYW5zaXRpb24oJzsnLCBMZXguSUdOT1JFX0NPTlNVTUUsIFNFUEFSQVRPUl9UT0tFTiksCisgICAgICAgICAgICBuZXcgTGV4LkNoYXJUcmFuc2l0aW9uKCcsJywgTGV4LklHTk9SRV9DT05TVU1FLCBTRVBBUkFUT1JfVE9LRU4pLAorICAgICAgICAgICAgbmV3IEVPTFRyYW5zaXRpb24oRU9MX1RPS0VOKSwKKyAgICAgICAgICAgIG5ldyBUb2tlblRyYW5zaXRpb24oVEFHX1RPS0VOKSwKKyAgICAgICAgICAgIG5ldyBMZXguRU9GVHJhbnNpdGlvbihFT0ZfVE9LRU4pLAorICAgICAgICAgICAgbmV3IExleC5QYXJzZUV4Y2VwdGlvblRyYW5zaXRpb24oInVuZXhwZWN0ZWQgY2hhcmFjdGVycyIpCisgICAgICAgIH0KKyAgICB9OworCisgICAgc3RhdGljIGZpbmFsIExleC5UcmFuc2l0aW9uW11bXSBMQ1N0YXRlcyA9IHsKKyAgICAgICAgeyAvL3N0YXRlIDA6IHN0YXJ0CisgICAgICAgICAgICBuZXcgU3BhY2VUcmFuc2l0aW9uKDApLAorICAgICAgICAgICAgbmV3IEVPTFRyYW5zaXRpb24oRU9MX1RPS0VOKSwKKyAgICAgICAgICAgIG5ldyBMZXguRU9GVHJhbnNpdGlvbihFT0ZfVE9LRU4pLAorICAgICAgICAgICAgbmV3IExleC5EZWZhdWx0VHJhbnNpdGlvbihMZXguQUNDVU1VTEFURV9DT05TVU1FLCAtMSkKKyAgICAgICAgfSwKKyAgICAgICAgeyAgIC8vZ3JhYiBmaXJzdCB3b3JkCisgICAgICAgICAgICBuZXcgTGV4LlN0cmluZ1RyYW5zaXRpb24oU3BhY2VUcmFuc2l0aW9uLlNQQUNFX0NIQVJTLCBMZXguSUdOT1JFX1BVVEJBQ0ssIFRBR19UT0tFTiksCisgICAgICAgICAgICBuZXcgTGV4LlN0cmluZ1RyYW5zaXRpb24oRU9MVHJhbnNpdGlvbi5FT0xfQ0hBUlMsIExleC5JR05PUkVfUFVUQkFDSywgVEFHX1RPS0VOKSwKKyAgICAgICAgICAgIG5ldyBMZXguRU9GVHJhbnNpdGlvbihUQUdfVE9LRU4pLAorICAgICAgICAgICAgbmV3IExleC5EZWZhdWx0VHJhbnNpdGlvbihMZXguQUNDVU1VTEFURV9DT05TVU1FLCAtMSkKKyAgICAgICAgfQorICAgIH07CisKKyAgICBwdWJsaWMgUE9TSVhMb2NhbGVSZWFkZXIoZmluYWwgU3RyaW5nIGxvY2FsZURhdGFQYXRoLCBmaW5hbCBMb2NhbGUgbG9jYWxlKSB7CisgICAgICAgIHRoaXMubG9jYWxlRGF0YVBhdGggPSBsb2NhbGVEYXRhUGF0aDsKKyAgICAgICAgdGhpcy5sb2NhbGUgPSBsb2NhbGU7CisgICAgICAgICAgICAvL3t7SU5JVF9DT05UUk9MUworCQkvL319Cit9CisgICAgCisgICAgcHVibGljIEhhc2h0YWJsZSBwYXJzZShTdHJpbmcgZmlsZU5hbWUsIGJ5dGUgZmxhZ3MpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBIYXNodGFibGUgdGFibGUgPSBwYXJzZU5hdGl2ZShmaWxlTmFtZSk7CisgICAgICAgICAgICBIYXNodGFibGUgcmVzdWx0ID0gbmV3IFBvc2l4VG9OZXV0cmFsQ29udmVydGVyKGZsYWdzLCBsb2NhbGUsZmlsZU5hbWUpLmNvbnZlcnQodGFibGUpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfSBjYXRjaCAoTG9jYWxlQ29udmVydGVyLkNvbnZlcnNpb25FcnJvciBlKSB7CisgICAgICAgICAgICBTeXN0ZW0uZXJyLnByaW50bG4oIkludGVybmFsIGVycm9yIGNvbnZlcnRpbmcgbG9jYWxlIGRhdGEiKTsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHB1YmxpYyBIYXNodGFibGUgcGFyc2VOYXRpdmUoU3RyaW5nIGZpbGVOYW1lKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBjaGFyIG9sZEVzY2FwZUNoYXIgPSBFc2NhcGVUcmFuc2l0aW9uLnNldERlZmF1bHRFc2NhcGVDaGFyKCk7CisgICAgICAgIGNoYXIgb2xkQ29tbWVudENoYXIgPSBFT0xUcmFuc2l0aW9uLnNldERlZmF1bHRDb21tZW50Q2hhcigpOworICAgICAgICBIYXNodGFibGUgdGFibGUgPSBuZXcgSGFzaHRhYmxlKCk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIExpbmVDaGFyTnVtYmVyUmVhZGVyIGxpbmVzID0gbmV3IExpbmVDaGFyTnVtYmVyUmVhZGVyKAorICAgICAgICAgICAgICAgIG5ldyBCdWZmZXJlZFJlYWRlcigKKyAgICAgICAgICAgICAgICAgICAgbmV3IEZpbGVSZWFkZXIoCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgRmlsZShsb2NhbGVEYXRhUGF0aCwgZmlsZU5hbWUpCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApOworICAgICAgICAgICAgUHVzaGJhY2tSZWFkZXIgcmVhZGVyID0gbmV3IFB1c2hiYWNrUmVhZGVyKGxpbmVzKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy9TaG92ZSBhIG5ld2xpbmUgYXQgdGhlIHN0YXJ0IG9mIHRoZSBmaWxlLiAgVGhpcyBoYXMgdGhlIGFmZmVjdCBvZiBhbGxvd2luZworICAgICAgICAgICAgLy90aGUgZmlsZSB0byBzdGFydCB3aXRoIGEgY29tbWVudCwgc2luY2UgdGhlIHBhcnNlciBvbmx5IGFsbG93cyBjb21tZW50cyBhcyAKKyAgICAgICAgICAgIC8vcGFydCBvZiBhbiBFT0wKKyAgICAgICAgICAgIHJlYWRlci51bnJlYWQoJ1xuJyk7CisKKyAgICAgICAgICAgIFN0cmluZyBzZWN0aW9uVGFnID0gc2Vla0xDKHJlYWRlcik7CisgICAgICAgICAgICB3aGlsZSAoc2VjdGlvblRhZyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgcGFyc2VTZWN0aW9uKHRhYmxlLCByZWFkZXIsIHNlY3Rpb25UYWcpOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKExleC5QYXJzZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5lcnIucHJpbnRsbigiRVJST1IgcGFyc2luZzogIitlLnJlYXNvbik7CisgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5lcnIucHJpbnRsbigiICAgICAgICAgTGluZTogIitsaW5lcy5nZXRMaW5lTnVtYmVyKCkpOworICAgICAgICAgICAgICAgICAgICBTeXN0ZW0uZXJyLnByaW50bG4oIiAgICAgICAgIGNoYXI6ICIrbGluZXMuZ2V0Q2hhck51bWJlcigpKTsKKyAgICAgICAgICAgICAgICAgICAgc2Vla0VORChyZWFkZXIpOworICAgICAgICAgICAgICAgICAgICBTeXN0ZW0uZXJyLnByaW50bG4oIlNraXBwZWQgdG8gbGluZTogIisobGluZXMuZ2V0TGluZU51bWJlcigpKzEpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc2VjdGlvblRhZyA9IHNlZWtMQyhyZWFkZXIpOworICAgICAgICAgICAgfQorICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgRXNjYXBlVHJhbnNpdGlvbi5zZXRFc2NhcGVDaGFyKG9sZEVzY2FwZUNoYXIpOworICAgICAgICAgICAgRU9MVHJhbnNpdGlvbi5zZXRDb21tZW50Q2hhcihvbGRDb21tZW50Q2hhcik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRhYmxlOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHZvaWQgcGFyc2VTZWN0aW9uKEhhc2h0YWJsZSB0YWJsZSwgUHVzaGJhY2tSZWFkZXIgcmVhZGVyLCBTdHJpbmcgc2VjdGlvblRhZykgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgaWYgKHNlY3Rpb25UYWcuZXF1YWxzKCJMQ19DVFlQRSIpKSB7CisgICAgICAgICAgICBwYXJzZUNUWVBFKHRhYmxlLCByZWFkZXIpOworICAgICAgICB9IGVsc2UgaWYgKHNlY3Rpb25UYWcuZXF1YWxzKCJMQ19DT0xMQVRFIikpIHsKKyAgICAgICAgICAgIHBhcnNlQ09MTEFURSh0YWJsZSwgcmVhZGVyKTsKKyAgICAgICAgfSBlbHNlIGlmIChzZWN0aW9uVGFnLmVxdWFscygiTENfTU9ORVRBUlkiKSkgeworICAgICAgICAgICAgcGFyc2VMQyh0YWJsZSwgcmVhZGVyLCBzZWN0aW9uVGFnKTsKKyAgICAgICAgfSBlbHNlIGlmIChzZWN0aW9uVGFnLmVxdWFscygiTENfTlVNRVJJQyIpKSB7CisgICAgICAgICAgICBwYXJzZUxDKHRhYmxlLCByZWFkZXIsIHNlY3Rpb25UYWcpOworICAgICAgICB9IGVsc2UgaWYgKHNlY3Rpb25UYWcuZXF1YWxzKCJMQ19USU1FIikpIHsKKyAgICAgICAgICAgIHBhcnNlTEModGFibGUsIHJlYWRlciwgc2VjdGlvblRhZyk7CisgICAgICAgIH0gZWxzZSBpZiAoc2VjdGlvblRhZy5lcXVhbHMoIkxDX01FU1NBR0VTIikpIHsKKyAgICAgICAgICAgIHBhcnNlTEModGFibGUsIHJlYWRlciwgc2VjdGlvblRhZyk7CisgICAgICAgIH1lbHNlIGlmKHNlY3Rpb25UYWcuZXF1YWxzKCJMQ19NRUFTVVJFTUVOVCIpKXsKKyAgICAgICAgICAgIHBhcnNlTEModGFibGUsIHJlYWRlciwgc2VjdGlvblRhZyk7CisgICAgICAgIH1lbHNlIGlmKHNlY3Rpb25UYWcuZXF1YWxzKCJMQ19BRERSRVNTIikpeworICAgICAgICAgICAgcGFyc2VMQyh0YWJsZSwgcmVhZGVyLCBzZWN0aW9uVGFnKTsKKyAgICAgICAgfWVsc2UgaWYoc2VjdGlvblRhZy5lcXVhbHMoIkxDX1BBUEVSIikpeworICAgICAgICAgICAgcGFyc2VMQyh0YWJsZSwgcmVhZGVyLCBzZWN0aW9uVGFnKTsKKyAgICAgICAgfWVsc2UgaWYoc2VjdGlvblRhZy5lcXVhbHMoIkxDX05BTUUiKSl7CisgICAgICAgICAgICBwYXJzZUxDKHRhYmxlLCByZWFkZXIsIHNlY3Rpb25UYWcpOworICAgICAgICB9ZWxzZSBpZihzZWN0aW9uVGFnLmVxdWFscygiTENfSURFTlRJRklDQVRJT04iKSl7CisgICAgICAgICAgICBwYXJzZUxDKHRhYmxlLCByZWFkZXIsIHNlY3Rpb25UYWcpOworICAgICAgICB9ZWxzZSBpZihzZWN0aW9uVGFnLmVxdWFscygiTENfVEVMRVBIT05FIikpeworICAgICAgICAgICAgcGFyc2VMQyh0YWJsZSwgcmVhZGVyLCBzZWN0aW9uVGFnKTsKKyAgICAgICAgICAgIAorICAgICAgICB9ZWxzZSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlVucmVjb2duaXNlZCBzZWN0aW9uOiIrc2VjdGlvblRhZyk7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkRlZmF1bHQgcGFyc2luZyBhcHBsaWVkLiIpOworICAgICAgICAgICAgcGFyc2VMQyh0YWJsZSwgcmVhZGVyLCBzZWN0aW9uVGFnKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgUHVzaGJhY2tSZWFkZXIgY3JlYXRlUGFyc2VySW5wdXQoU3RyaW5nIGxvY2FsZU5hbWUpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIFB1c2hiYWNrUmVhZGVyIHJlYWRlciA9IG5ldyBQdXNoYmFja1JlYWRlcigKKyAgICAgICAgICAgIG5ldyBCdWZmZXJlZFJlYWRlcigKKyAgICAgICAgICAgICAgICBuZXcgRmlsZVJlYWRlcigKKyAgICAgICAgICAgICAgICAgICAgbmV3IEZpbGUobG9jYWxlRGF0YVBhdGgsIGxvY2FsZU5hbWUpCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorICAgICAgICApOworICAgICAgICAvL1Nob3ZlIGEgbmV3bGluZSBhdCB0aGUgc3RhcnQgb2YgdGhlIGZpbGUuICBUaGlzIGhhcyB0aGUgYWZmZWN0IG9mIGFsbG93aW5nCisgICAgICAgIC8vdGhlIGZpbGUgdG8gc3RhcnQgd2l0aCBhIGNvbW1lbnQsIHNpbmNlIHRoZSBwYXJzZXIgb25seSBhbGxvd3MgY29tbWVudHMgYXMgCisgICAgICAgIC8vcGFydCBvZiBhbiBFT0wKKyAgICAgICAgcmVhZGVyLnVucmVhZCgnXG4nKTsKKyAgICAgICAgcmV0dXJuIHJlYWRlcjsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBTdHJpbmcgc2Vla0xDKFB1c2hiYWNrUmVhZGVyIHJlYWRlcikgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgTGV4IHAgPSBuZXcgTGV4KExDU3RhdGVzLCByZWFkZXIpOworICAgICAgICBmaW5hbCBTdHJpbmcgTEMgPSAiTENfIjsKKyAgICAgICAgaW50IHMgPSBwLm5leHRUb2tlbigpOworICAgICAgICB3aGlsZSAoKHMgIT0gRU9GX1RPS0VOKSkgeworICAgICAgICAgICAgaWYgKHMgPT0gVEFHX1RPS0VOKSB7CisgICAgICAgICAgICAgICAgaWYgKHAuZGF0YVN0YXJ0c1dpdGgoTEMpKSB7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyB0YWcgPSBwLmdldERhdGEoKTsKKyAgICAgICAgICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHAubmV4dFRva2VuKCk7CisgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKHMgIT0gRU9MX1RPS0VOICYmIHMgIT0gRU9GX1RPS0VOKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRhZzsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHAuZGF0YUVxdWFscygiZXNjYXBlX2NoYXIiKSkgeworICAgICAgICAgICAgICAgICAgICBzID0gcC5uZXh0VG9rZW4oKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHMgPT0gVEFHX1RPS0VOIHx8IHAuZ2V0RGF0YSgpLmxlbmd0aCgpICE9IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBlc2NhcGVfY2hhciA9IHAuZ2V0RGF0YSgpOworICAgICAgICAgICAgICAgICAgICAgICAgRXNjYXBlVHJhbnNpdGlvbi5zZXRFc2NhcGVDaGFyKGVzY2FwZV9jaGFyLmNoYXJBdCgwKSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkVycm9yIGluIGVzY2FwZV9jaGFyIGRpcmVjdGl2ZS4gIERpcmVjdGl2ZSBpZ25vcmVkLiIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwLmRhdGFFcXVhbHMoImNvbW1lbnRfY2hhciIpKSB7CisgICAgICAgICAgICAgICAgICAgIHMgPSBwLm5leHRUb2tlbigpOworICAgICAgICAgICAgICAgICAgICBpZiAocyA9PSBUQUdfVE9LRU4gfHwgcC5nZXREYXRhKCkubGVuZ3RoKCkgIT0gMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGNvbW1lbnRfY2hhciA9IHAuZ2V0RGF0YSgpOworICAgICAgICAgICAgICAgICAgICAgICAgRU9MVHJhbnNpdGlvbi5zZXRDb21tZW50Q2hhcihjb21tZW50X2NoYXIuY2hhckF0KDApKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRXJyb3IgaW4gZXNjYXBlX2NoYXIgZGlyZWN0aXZlLiAgRGlyZWN0aXZlIGlnbm9yZWQuIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzID0gcC5uZXh0VG9rZW4oKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBwcml2YXRlIGJvb2xlYW4gc2Vla0VORChQdXNoYmFja1JlYWRlciByZWFkZXIpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIExleCBwID0gbmV3IExleChMQ1N0YXRlcywgcmVhZGVyKTsKKyAgICAgICAgZmluYWwgU3RyaW5nIEVORCA9ICJFTkQiOworICAgICAgICBpbnQgcyA9IHAubmV4dFRva2VuKCk7CisgICAgICAgIHdoaWxlICgocyAhPSBFT0ZfVE9LRU4pKSB7CisgICAgICAgICAgICBpZiAocyA9PSBUQUdfVE9LRU4pIHsKKyAgICAgICAgICAgICAgICBpZiAocC5kYXRhU3RhcnRzV2l0aChFTkQpKSB7CisgICAgICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBwLm5leHRUb2tlbigpOworICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChzICE9IEVPTF9UT0tFTiAmJiBzICE9IEVPRl9UT0tFTik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHMgPSBwLm5leHRUb2tlbigpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSB2b2lkIHBhcnNlQ1RZUEUoSGFzaHRhYmxlIHRhYmxlLCBQdXNoYmFja1JlYWRlciByZWFkZXIpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIExleCBwID0gbmV3IExleChkYXRhU3RhdGVzLCByZWFkZXIpOworICAgICAgICBTdHJpbmdCdWZmZXIgdGVtcCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgaW50IHMgPSBwLm5leHRUb2tlbigpOworICAgICAgICBpZiAoKHMgPT0gVEFHX1RPS0VOKSAmJiBwLmRhdGFFcXVhbHMoImNvcHkiKSkgeworICAgICAgICAgICAgcC5hY2NlcHQoVEFHX1RPS0VOKTsKKyAgICAgICAgICAgIHBhcnNlQ29weSgiTENfQ1RZUEUiLCBwLmdldERhdGEoKSwgdGFibGUpOworICAgICAgICAgICAgcC5hY2NlcHQoRU9MX1RPS0VOKTsKKyAgICAgICAgICAgIHAuYWNjZXB0KFRBR19UT0tFTiwgIkVORCIpOworICAgICAgICAgICAgcC5hY2NlcHQoVEFHX1RPS0VOLCAiTENfQ1RZUEUiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHdoaWxlICgocyA9PSBUQUdfVE9LRU4pICYmICFwLmRhdGFFcXVhbHMoIkVORCIpKSB7ICAKKyAgICAgICAgICAgICAgICBTdHJpbmcga2V5ID0gcC5nZXREYXRhKCk7CisgICAgICAgICAgICAgICAgdGVtcC5zZXRMZW5ndGgoMCk7CisgICAgICAgICAgICAgICAgcC5hY2NlcHQoVEFHX1RPS0VOKTsKKyAgICAgICAgICAgICAgICBwLmFwcGVuZERhdGFUbyh0ZW1wKTsKKyAgICAgICAgICAgICAgICBzID0gcC5uZXh0VG9rZW4oKTsKKyAgICAgICAgICAgICAgICB3aGlsZSAocyA9PSBTRVBBUkFUT1JfVE9LRU4pIHsKKyAgICAgICAgICAgICAgICAgICAgcC5hY2NlcHQoVEFHX1RPS0VOKTsKKyAgICAgICAgICAgICAgICAgICAgcC5hcHBlbmREYXRhVG8odGVtcCk7CisgICAgICAgICAgICAgICAgICAgIHMgPSBwLm5leHRUb2tlbigpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAocyAhPSBFT0xfVE9LRU4pIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdGFibGUucHV0KGtleSwgdGVtcC50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcyA9IHAubmV4dFRva2VuKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwLmFjY2VwdChUQUdfVE9LRU4sICJMQ19DVFlQRSIpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHByaXZhdGUgdm9pZCBwYXJzZUNvcHkoU3RyaW5nIHNlY3Rpb24sIFN0cmluZyB0b0NvcHksIEhhc2h0YWJsZSB0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBjaGFyIG9sZEVzY2FwZUNoYXIgPSBFc2NhcGVUcmFuc2l0aW9uLnNldERlZmF1bHRFc2NhcGVDaGFyKCk7CisgICAgICAgIGNoYXIgb2xkQ29tbWVudENoYXIgPSBFT0xUcmFuc2l0aW9uLnNldERlZmF1bHRDb21tZW50Q2hhcigpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgUHVzaGJhY2tSZWFkZXIgcmVhZGVyID0gY3JlYXRlUGFyc2VySW5wdXQodG9Db3B5KTsKKyAgICAgICAgICAgIFN0cmluZyB0YWcgPSBzZWVrTEMocmVhZGVyKTsKKyAgICAgICAgICAgIHdoaWxlICh0YWcgIT0gbnVsbCAmJiAhc2VjdGlvbi5lcXVhbHModGFnKSkgeworICAgICAgICAgICAgICAgIHRhZyA9IHNlZWtMQyhyZWFkZXIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHRhZyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgcGFyc2VTZWN0aW9uKHQsIHJlYWRlciwgc2VjdGlvbik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vaGV5IHtqZn0gLSBpcyB0aGlzIGFuIGVycm9yPworICAgICAgICAgICAgfQorICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgRXNjYXBlVHJhbnNpdGlvbi5zZXRFc2NhcGVDaGFyKG9sZEVzY2FwZUNoYXIpOworICAgICAgICAgICAgRU9MVHJhbnNpdGlvbi5zZXRDb21tZW50Q2hhcihvbGRDb21tZW50Q2hhcik7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSB2b2lkIHBhcnNlTEMoSGFzaHRhYmxlIHQsIFB1c2hiYWNrUmVhZGVyIHJlYWRlciwgU3RyaW5nIHNlY3Rpb25UYWcpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIExleCBpbnB1dCA9IG5ldyBMZXgoZGF0YVN0YXRlcywgcmVhZGVyKTsKKyAgICAgICAgaW5wdXQuYWNjZXB0KFRBR19UT0tFTik7CisgICAgICAgIGlmIChpbnB1dC5kYXRhRXF1YWxzKCJjb3B5IikpIHsKKyAgICAgICAgICAgIGlucHV0LmFjY2VwdChUQUdfVE9LRU4pOworICAgICAgICAgICAgcGFyc2VDb3B5KHNlY3Rpb25UYWcsIGlucHV0LmdldERhdGEoKSwgdCk7ICAgICAgICAgIAorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgd2hpbGUgKChpbnB1dC5nZXRTdGF0ZSgpID09IFRBR19UT0tFTikgJiYgIWlucHV0LmRhdGFFcXVhbHMoIkVORCIpKSB7ICAgCisgICAgICAgICAgICAgICAgU3RyaW5nIGxhYmVsID0gaW5wdXQuZ2V0RGF0YSgpOworICAgICAgICAgICAgICAgIFZlY3RvciB2YWx1ZXMgPSBuZXcgVmVjdG9yKCk7CisgICAgICAgICAgICAgICAgaW5wdXQuYWNjZXB0KFRBR19UT0tFTik7CisgICAgICAgICAgICAgICAgU3RyaW5nIHRlbXAgPSBpbnB1dC5nZXREYXRhKCk7CisgICAgICAgICAgICAgICAgdmFsdWVzLmFkZEVsZW1lbnQodGVtcCk7CisgICAgICAgICAgICAgICAgd2hpbGUgKGlucHV0Lm5leHRUb2tlbigpID09IFNFUEFSQVRPUl9UT0tFTikgeworICAgICAgICAgICAgICAgICAgICBpbnB1dC5hY2NlcHQoVEFHX1RPS0VOKTsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHZhbHVlID0gaW5wdXQuZ2V0RGF0YSgpOworICAgICAgICAgICAgICAgICAgICB2YWx1ZXMuYWRkRWxlbWVudCh2YWx1ZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICh2YWx1ZXMuc2l6ZSgpID4gMSkgeworICAgICAgICAgICAgICAgICAgICBTdHJpbmdbXSBkYXRhID0gbmV3IFN0cmluZ1t2YWx1ZXMuc2l6ZSgpXTsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWVzLmNvcHlJbnRvKGRhdGEpOworICAgICAgICAgICAgICAgICAgICB0LnB1dChsYWJlbCwgZGF0YSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdC5wdXQobGFiZWwsIHZhbHVlcy5lbGVtZW50QXQoMCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoaW5wdXQuZ2V0U3RhdGUoKSAhPSBFT0xfVE9LRU4pIHsKKyAgICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJFeHRyYW5lb3VzIHRleHQgYWZ0ZXIgbGFiZWw6ICIgK2xhYmVsKTsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlucHV0Lm5leHRUb2tlbigpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlucHV0LmFjY2VwdChUQUdfVE9LRU4sIHNlY3Rpb25UYWcpOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHZvaWQgcGFyc2VDT0xMQVRFKEhhc2h0YWJsZSB0YWJsZSwgUHVzaGJhY2tSZWFkZXIgcmVhZGVyKSAKKyAgICAgICAgICAgIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIFBvc2l4Q2hhck1hcCBtYXAgPSBuZXcgUG9zaXhDaGFyTWFwKFN5bWJvbFRyYW5zaXRpb24uZ2V0Q2hhck1hcCgpKTsKKyAgICAgICAgU3ltYm9sVHJhbnNpdGlvbi5zZXRDaGFyTWFwKG1hcCk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBMZXggaW5wdXQgPSBuZXcgTGV4KGRhdGFTdGF0ZXMsIHJlYWRlcik7CisgICAgICAgICAgICBQb3NpeENvbGxhdGlvbkJ1aWxkZXIgYnVpbGRlciA9IG5ldyBQb3NpeENvbGxhdGlvbkJ1aWxkZXIobWFwKTsKKworICAgICAgICAgICAgaW50IHMgPSBpbnB1dC5uZXh0VG9rZW4oKTsKKyAgICAgICAgICAgIHdoaWxlIChzID09IEVPTF9UT0tFTikgcyA9IGlucHV0Lm5leHRUb2tlbigpOworICAgICAgICAgICAgd2hpbGUgKHMgPT0gVEFHX1RPS0VOKSB7CisgICAgICAgICAgICAgICAgaWYgKGlucHV0LmRhdGFFcXVhbHMoIkVORCIpKSB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuZGF0YUVxdWFscygiVU5ERUZJTkVEIikpIHsKKyAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmVyci5wcmludGxuKCJXQVJOSU5HOiBVbmRlZmluZWQgY2hhcmFjdGVycyB3aWxsIHNvcnQgbGFzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgcyA9IGlucHV0Lm5leHRUb2tlbigpOworICAgICAgICAgICAgICAgICAgICB3aGlsZSAocyAhPSBFT0ZfVE9LRU4gJiYgcyAhPSBFT0xfVE9LRU4pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBpbnB1dC5uZXh0VG9rZW4oKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuZGF0YUVxdWFscygiY29weSIpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vY29weSBjb2xsYXRpb24gcnVsZXMgZnJvbSBhbm90aGVyIGxvY2FsZQorICAgICAgICAgICAgICAgICAgICBpbnB1dC5hY2NlcHQoVEFHX1RPS0VOKTsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHRvQ29weSA9IGlucHV0LmdldERhdGEoKTsKKyAgICAgICAgICAgICAgICAgICAgaW5wdXQuYWNjZXB0KEVPTF9UT0tFTik7CisgICAgICAgICAgICAgICAgICAgIHBhcnNlQ29weSgiTENfQ09MTEFURSIsIHRvQ29weSwgdGFibGUpOworICAgICAgICAgICAgICAgICAgICBTeXN0ZW0uZXJyLnByaW50bG4oIkNvcHlpbmcgY29sbGF0aW9uIHJ1bGVzIGZyb20gIit0b0NvcHkrIi4uLiIpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuZGF0YUVxdWFscygiLi4uIikpIHsKKyAgICAgICAgICAgICAgICAgICAgLy9maWxsIHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSBsYXN0IGVsZW1lbnQgYW5kIHRoZSBuZXh0IGVsZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmVyci5wcmludGxuKCJFUlJPUjogRWxsaXBzaXMgbm90IHN1cHBvcnRlZCBpbiBjb2xsYXRpb24gcnVsZXMuIik7CisgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5lcnIucHJpbnRsbigiICAgICAgIExpbmUgaWdub3JlZCIpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuZGF0YUVxdWFscygicmVwbGFjZS1hZnRlciIpKSB7CisgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5lcnIucHJpbnRsbigiRVJST1I6IFJlcGxhY2UtYWZ0ZXIgbm90IHN1cHBvcnRlZCBpbiBjb2xsYXRpb24gcnVsZXMuIik7CisgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5lcnIucHJpbnRsbigiICAgICAgIFNraXBwaW5nIHVudGlsIG5leHQgcmVwbGFjZS1lbmQuIik7CisgICAgICAgICAgICAgICAgICAgIHMgPSBpbnB1dC5uZXh0VG9rZW4oKTsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHMgIT0gRU9GX1RPS0VOKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyA9PSBUQUdfVE9LRU4gJiYgaW5wdXQuZGF0YUVxdWFscygicmVwbGFjZS1lbmQiKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LmFjY2VwdChFT0xfVE9LRU4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5kYXRhRXF1YWxzKCJjb2xsYXRpbmctZWxlbWVudCIpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vU2V2ZXJhbCBjaGFyYWN0ZXJzIHNob3VsZCBzb3J0IGFzIGEgc2luZ2xlIGVsZW1lbnQuCisgICAgICAgICAgICAgICAgICAgIGlucHV0LmFjY2VwdChUQUdfVE9LRU4pOyAgICAvL2dldCB0aGUgc3ltYm9sCisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBrZXkgPSBpbnB1dC5nZXREYXRhKCk7CisgICAgICAgICAgICAgICAgICAgIGlucHV0LmFjY2VwdChUQUdfVE9LRU4sICJmcm9tIik7CisgICAgICAgICAgICAgICAgICAgIGlucHV0LmFjY2VwdChUQUdfVE9LRU4pOyAgICAvL2dldCB0aGUgZXhwYW5zaW9uCisgICAgICAgICAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IGlucHV0LmdldERhdGEoKTsKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5kZWZpbmVDb250cmFjdGlvbihrZXksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgaW5wdXQuYWNjZXB0KEVPTF9UT0tFTik7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5kYXRhRXF1YWxzKCJjb2xsYXRpbmctc3ltYm9sIikpIHsKKyAgICAgICAgICAgICAgICAgICAgLy9kZWZpbmUgYSB3ZWlnaHQgc3ltYm9sLiAgVGhpcyBzeW1ib2wgZG9lcyBub3QgcmVwcmVzZW50IGEgY2hhcmFjdGVyLgorICAgICAgICAgICAgICAgICAgICAvL0l0J3Mgb25seSB1c2VkIGZvciBjb21wYXJpc29uIHB1cnBvc2VzLiAgV2UgZGVmaW5lIHRoZSBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICAgICAgLy92YWx1ZSBmb3IgdGhpcyBjaGFyYWN0ZXIgdG8gYmUgaW4gdGhlIHByaXZhdGUgYXJlYSBzaW5jZSBvdXIKKyAgICAgICAgICAgICAgICAgICAgLy9jb2xsYXRpb24gc3R1ZmYgZG9lc24ndCBzb3J0IHRoYXQgYXJlYS4KKyAgICAgICAgICAgICAgICAgICAgaW5wdXQuYWNjZXB0KFRBR19UT0tFTik7CisgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuZGVmaW5lV2VpZ2h0U3ltYm9sKGlucHV0LmdldERhdGEoKSk7CisgICAgICAgICAgICAgICAgICAgIGlucHV0LmFjY2VwdChFT0xfVE9LRU4pOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuZGF0YUVxdWFscygib3JkZXJfc3RhcnQiKSkgeworICAgICAgICAgICAgICAgICAgICBWZWN0b3IgdGVtcFZlY3RvciA9IG5ldyBWZWN0b3IoKTsKKyAgICAgICAgICAgICAgICAgICAgLy9zdGFydCByZWFkaW5nIGNvbGxhdGlvbiBvcmRlcmluZyBydWxlcy4gCisgICAgICAgICAgICAgICAgICAgIGlucHV0LmFjY2VwdChUQUdfVE9LRU4pOworICAgICAgICAgICAgICAgICAgICB0ZW1wVmVjdG9yLmFkZEVsZW1lbnQoaW5wdXQuZ2V0RGF0YSgpKTsKKyAgICAgICAgICAgICAgICAgICAgcyA9IGlucHV0Lm5leHRUb2tlbigpOworICAgICAgICAgICAgICAgICAgICB3aGlsZSAocyA9PSBTRVBBUkFUT1JfVE9LRU4pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LmFjY2VwdChUQUdfVE9LRU4pOworICAgICAgICAgICAgICAgICAgICAgICAgdGVtcFZlY3Rvci5hZGRFbGVtZW50KGlucHV0LmdldERhdGEoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzID0gaW5wdXQubmV4dFRva2VuKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nW10gb3JkZXJfc3RhcnQgPSBuZXcgU3RyaW5nW3RlbXBWZWN0b3Iuc2l6ZSgpXTsKKyAgICAgICAgICAgICAgICAgICAgdGVtcFZlY3Rvci5jb3B5SW50byhvcmRlcl9zdGFydCk7CisgICAgICAgICAgICAgICAgICAgIHRhYmxlLnB1dCgic29ydF9vcmRlciIsIG9yZGVyX3N0YXJ0KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0LmRhdGFFcXVhbHMoIm9yZGVyX2VuZCIpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vYnVpbGQgYSBsaXN0IG9mIG9yZGVyZWQgY29sbGF0aW9uIGVsZW1lbnRzCisgICAgICAgICAgICAgICAgICAgIGlucHV0LmFjY2VwdChFT0xfVE9LRU4pOworICAgICAgICAgICAgICAgICAgICBTb3J0ZWRWZWN0b3Igb3JkZXIgPSBidWlsZGVyLmdldFNvcnRPcmRlcigpOworICAgICAgICAgICAgICAgICAgICBQb3NpeENvbGxhdGlvbkJ1aWxkZXIuQ29sbGF0aW9uUnVsZVtdIHJ1bGVTb3VyY2UgPSAKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBQb3NpeENvbGxhdGlvbkJ1aWxkZXIuQ29sbGF0aW9uUnVsZVtvcmRlci5zaXplKCldOworICAgICAgICAgICAgICAgICAgICBvcmRlci5jb3B5SW50byhydWxlU291cmNlKTsgLy9jb3B5IGludG8gYW4gYXJyYXkgc28gd2UgY2FuIGFkZCBpdCB0byB0aGUgb3V0cHV0IHRhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAvL3RoaXMgaXMgb25seSBmb3IgaW5mb3JtYXRpb24gcHVycG9zZXMgc28gd2UgY2FuIHJldHJpZXZlIHRoZSBzb3VyY2Ugb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAvL2NvbGxhdGlvbkl0ZW1zIHdpdGggdGhlIHdlaWdodHMgaWYgd2Ugd2FudCB0aGVtIGxhdGVyCisgICAgICAgICAgICAgICAgICAgIHRhYmxlLnB1dCgicG9zaXhfc29ydF9ydWxlcyIsIHJ1bGVTb3VyY2UpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vYWRkIGEgY29sbGF0aW9uIGl0ZW0gdG8gdGhlIGxpc3QKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hZGRSdWxlKGlucHV0LmdldERhdGEoKSk7CisgICAgICAgICAgICAgICAgICAgIHMgPSBpbnB1dC5uZXh0VG9rZW4oKTsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHMgPT0gVEFHX1RPS0VOKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvL3dlJ3JlIGV4cGVjdGluZyB3ZWlnaHRzIGhlcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZXIuYWRkV2VpZ2h0KGlucHV0LmdldERhdGEoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzID0gaW5wdXQubmV4dFRva2VuKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocyA9PSBTRVBBUkFUT1JfVE9LRU4pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gaW5wdXQubmV4dFRva2VuKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcyA9IGlucHV0Lm5leHRUb2tlbigpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW5wdXQuYWNjZXB0KFRBR19UT0tFTiwgIkxDX0NPTExBVEUiKTsKKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIFN5bWJvbFRyYW5zaXRpb24uc2V0Q2hhck1hcChtYXAuZ2V0UGFyZW50KCkpOworICAgICAgICB9CisgICAgfQorICAgIC8ve3tERUNMQVJFX0NPTlRST0xTCisJLy99fQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9Qb3NpeENoYXJNYXAuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvUG9zaXhDaGFyTWFwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZmY5NDVlNAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvUG9zaXhDaGFyTWFwLmphdmEKQEAgLTAsMCArMSw0NjggQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMDQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvUG9zaXhDaGFyTWFwLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDYvMjAgMDE6MTc6MTIgJCAKKyAqICRSZXZpc2lvbjogMS4zICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworIAorcGFja2FnZSBjb20uaWJtLmljdS5kZXYudG9vbC5sb2NhbGVjb252ZXJ0ZXI7CisKK2ltcG9ydCBqYXZhLmlvLio7CitpbXBvcnQgamF2YS51dGlsLio7CitpbXBvcnQgY29tLmlibS5pY3UubGFuZy4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuKjsKKworcHVibGljIGNsYXNzIFBvc2l4Q2hhck1hcCB7CisgICAgcHJpdmF0ZSBIYXNodGFibGUgdGFibGUgPSBuZXcgSGFzaHRhYmxlKCk7CisgICAgcHJpdmF0ZSBIYXNodGFibGUgYmFja1RhYmxlID0gbnVsbDsKKyAgICBwcml2YXRlIFBvc2l4Q2hhck1hcCBwYXJlbnRNYXA7CisgICAgcHJpdmF0ZSBTdHJpbmcgZW5jb2Rpbmc7CisgICAgCisgICAgcHVibGljIFBvc2l4Q2hhck1hcCgpIHsKKyAgICB9CisgICAgCisgICAgcHVibGljIFBvc2l4Q2hhck1hcChQb3NpeENoYXJNYXAgcGFyZW50KSB7CisgICAgICAgIHBhcmVudE1hcCA9IHBhcmVudDsKKyAgICB9CisKKyAgICBwdWJsaWMgUG9zaXhDaGFyTWFwKFN0cmluZyBmaWxlTmFtZSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgdGhpcyhuZXcgRmlsZVJlYWRlcihmaWxlTmFtZSkpOworICAgIH0KKworICAgIHB1YmxpYyBQb3NpeENoYXJNYXAoU3RyaW5nIHBhdGhOYW1lLCBTdHJpbmcgZmlsZU5hbWUpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIHRoaXMobmV3IEZpbGVSZWFkZXIobmV3IEZpbGUocGF0aE5hbWUsIGZpbGVOYW1lKSkpOworICAgIH0KKworICAgIHB1YmxpYyBQb3NpeENoYXJNYXAoUmVhZGVyIGlucHV0UmVhZGVyKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBsb2FkKG5ldyBCdWZmZXJlZFJlYWRlcihpbnB1dFJlYWRlcikpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgUG9zaXhDaGFyTWFwIGdldFBhcmVudCgpIHsKKyAgICAgICAgcmV0dXJuIHBhcmVudE1hcDsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgc2V0UGFyZW50KFBvc2l4Q2hhck1hcCBwYXJlbnQpIHsKKyAgICAgICAgcGFyZW50TWFwID0gcGFyZW50OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGxvYWQoU3RyaW5nIHBhdGhOYW1lLCBTdHJpbmcgZmlsZU5hbWUpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGxvYWQobmV3IEZpbGUocGF0aE5hbWUsIGZpbGVOYW1lKSwiIik7CisgICAgfQorICAgIHB1YmxpYyB2b2lkIGxvYWQoU3RyaW5nIHBhdGhOYW1lLCBTdHJpbmcgZmlsZU5hbWUsIFN0cmluZyBlbmMpdGhyb3dzIElPRXhjZXB0aW9ueworICAgICAgICBsb2FkKG5ldyBGaWxlKHBhdGhOYW1lLCBmaWxlTmFtZSksZW5jKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgbG9hZChGaWxlIGZpbGUsIFN0cmluZyBlbmMpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGVuY29kaW5nID1lbmM7CisgICAgICAgIGxvYWQobmV3IEJ1ZmZlcmVkUmVhZGVyKG5ldyBGaWxlUmVhZGVyKGZpbGUpKSk7CisgICAgfQorICAgIC8qIFRoaXMgbWFwIG11c3QgYmUgaW4gQVNDRU5ESU5HIE9SREVSIE9GIFRIRSBFU0NBUEUgQ09ERSAqLworICAgIHN0YXRpYyBwcml2YXRlIGZpbmFsIGNoYXJbXSBVTkVTQ0FQRV9NQVAgPSB7CisgICAgICAgIC8qIiAgIDB4MjIsIDB4MjIgKi8KKyAgICAgICAgLyonICAgMHgyNywgMHgyNyAqLworICAgICAgICAvKj8gICAweDNGLCAweDNGICovCisgICAgICAgIC8qXCAgIDB4NUMsIDB4NUMgKi8KKyAgICAgICAgLyphKi8gMHg2MSwgMHgwNywKKyAgICAgICAgLypiKi8gMHg2MiwgMHgwOCwKKyAgICAgICAgLypmKi8gMHg2NiwgMHgwYywKKyAgICAgICAgLypuKi8gMHg2RSwgMHgwYSwKKyAgICAgICAgLypyKi8gMHg3MiwgMHgwZCwKKyAgICAgICAgLyp0Ki8gMHg3NCwgMHgwOSwKKyAgICAgICAgLyp2Ki8gMHg3NiwgMHgwYgorICAgIH07CisgICAgICAgIC8qKgorICAgICAqIENvbnZlcnQgYW4gZXNjYXBlIHRvIGEgMzItYml0IGNvZGUgcG9pbnQgdmFsdWUuICBXZSBhdHRlbXB0CisgICAgICogdG8gcGFyYWxsZWwgdGhlIGljdTRjIHVuZXNhY3BlQXQoKSBmdW5jdGlvbi4KKyAgICAgKiBAcGFyYW0gb2Zmc2V0MTYgYW4gYXJyYXkgY29udGFpbmluZyBvZmZzZXQgdG8gdGhlIGNoYXJhY3RlcgorICAgICAqIDxlbT5hZnRlcjwvZW0+IHRoZSBiYWNrc2xhc2guICBVcG9uIHJldHVybiBvZmZzZXQxNlswXSB3aWxsCisgICAgICogYmUgdXBkYXRlZCB0byBwb2ludCBhZnRlciB0aGUgZXNjYXBlIHNlcXVlbmNlLgorICAgICAqIEByZXR1cm4gY2hhcmFjdGVyIHZhbHVlIGZyb20gMCB0byAxMEZGRkYsIG9yIC0xIG9uIGVycm9yLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgaW50IHVuZXNjYXBlQXQoU3RyaW5nIHMsIGludFtdIG9mZnNldDE2KSB7CisgICAgICAgIGludCBjOworICAgICAgICBpbnQgcmVzdWx0ID0gMDsKKyAgICAgICAgaW50IG4gPSAwOworICAgICAgICBpbnQgbWluRGlnID0gMDsKKyAgICAgICAgaW50IG1heERpZyA9IDA7CisgICAgICAgIGludCBiaXRzUGVyRGlnaXQgPSA0OworICAgICAgICBpbnQgZGlnOworICAgICAgICBpbnQgaTsKKworICAgICAgICAvKiBDaGVjayB0aGF0IG9mZnNldCBpcyBpbiByYW5nZSAqLworICAgICAgICBpbnQgb2Zmc2V0ID0gb2Zmc2V0MTZbMF07CisgICAgICAgIGludCBsZW5ndGggPSBzLmxlbmd0aCgpOworICAgICAgICBpZiAob2Zmc2V0IDwgMCB8fCBvZmZzZXQgPj0gbGVuZ3RoKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICAvKiBGZXRjaCBmaXJzdCBVQ2hhciBhZnRlciAnXFwnICovCisgICAgICAgIGMgPSBVVEYxNi5jaGFyQXQocywgb2Zmc2V0KTsKKyAgICAgICAgb2Zmc2V0ICs9IFVURjE2LmdldENoYXJDb3VudChjKTsKKworICAgICAgICAvKiBDb252ZXJ0IGhleGFkZWNpbWFsIGFuZCBvY3RhbCBlc2NhcGVzICovCisgICAgICAgIHN3aXRjaCAoYykgeworICAgICAgICBjYXNlICd1JzoKKyAgICAgICAgICAgIG1pbkRpZyA9IG1heERpZyA9IDQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnVSc6CisgICAgICAgICAgICBtaW5EaWcgPSBtYXhEaWcgPSA4OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ3gnOgorICAgICAgICAgICAgbWluRGlnID0gMTsKKyAgICAgICAgICAgIG1heERpZyA9IDI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGRpZyA9IFVDaGFyYWN0ZXIuZGlnaXQoYywgOCk7CisgICAgICAgICAgICBpZiAoZGlnID49IDApIHsKKyAgICAgICAgICAgICAgICBtaW5EaWcgPSAxOworICAgICAgICAgICAgICAgIG1heERpZyA9IDM7CisgICAgICAgICAgICAgICAgbiA9IDE7IC8qIEFscmVhZHkgaGF2ZSBmaXJzdCBvY3RhbCBkaWdpdCAqLworICAgICAgICAgICAgICAgIGJpdHNQZXJEaWdpdCA9IDM7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZGlnOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1pbkRpZyAhPSAwKSB7CisgICAgICAgICAgICB3aGlsZSAob2Zmc2V0IDwgbGVuZ3RoICYmIG4gPCBtYXhEaWcpIHsKKyAgICAgICAgICAgICAgICAvLyBURU1QT1JBUlkKKyAgICAgICAgICAgICAgICAvLyBUT0RPOiBSZXN0b3JlIHRoZSBjaGFyMzItYmFzZWQgY29kZSB3aGVuIFVDaGFyYWN0ZXIuZGlnaXQKKyAgICAgICAgICAgICAgICAvLyBpcyB3b3JraW5nIChCdWcgNjYpLgorCisgICAgICAgICAgICAgICAgLy9jID0gVVRGMTYuY2hhckF0KHMsIG9mZnNldCk7CisgICAgICAgICAgICAgICAgLy9kaWcgPSBVQ2hhcmFjdGVyLmRpZ2l0KGMsIChiaXRzUGVyRGlnaXQgPT0gMykgPyA4IDogMTYpOworICAgICAgICAgICAgICAgIGMgPSBzLmNoYXJBdChvZmZzZXQpOworICAgICAgICAgICAgICAgIGRpZyA9IENoYXJhY3Rlci5kaWdpdCgoY2hhciljLCAoYml0c1BlckRpZ2l0ID09IDMpID8gOCA6IDE2KTsKKyAgICAgICAgICAgICAgICBpZiAoZGlnIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCA8PCBiaXRzUGVyRGlnaXQpIHwgZGlnOworICAgICAgICAgICAgICAgIC8vb2Zmc2V0ICs9IFVURjE2LmdldENoYXJDb3VudChjKTsKKyAgICAgICAgICAgICAgICArK29mZnNldDsKKyAgICAgICAgICAgICAgICArK247CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobiA8IG1pbkRpZykgeworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG9mZnNldDE2WzBdID0gb2Zmc2V0OworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIC8qIENvbnZlcnQgQy1zdHlsZSBlc2NhcGVzIGluIHRhYmxlICovCisgICAgICAgIGZvciAoaT0wOyBpPFVORVNDQVBFX01BUC5sZW5ndGg7IGkrPTIpIHsKKyAgICAgICAgICAgIGlmIChjID09IFVORVNDQVBFX01BUFtpXSkgeworICAgICAgICAgICAgICAgIG9mZnNldDE2WzBdID0gb2Zmc2V0OworICAgICAgICAgICAgICAgIHJldHVybiBVTkVTQ0FQRV9NQVBbaSsxXTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoYyA8IFVORVNDQVBFX01BUFtpXSkgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLyogSWYgbm8gc3BlY2lhbCBmb3JtcyBhcmUgcmVjb2duaXplZCwgdGhlbiBjb25zaWRlcgorICAgICAgICAgKiB0aGUgYmFja3NsYXNoIHRvIGdlbmVyaWNhbGx5IGVzY2FwZSB0aGUgbmV4dCBjaGFyYWN0ZXIuICovCisgICAgICAgIG9mZnNldDE2WzBdID0gb2Zmc2V0OworICAgICAgICByZXR1cm4gYzsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb252ZXJ0IGFsbCBlc2NhcGVzIGluIGEgZ2l2ZW4gc3RyaW5nIHVzaW5nIHVuZXNjYXBlQXQoKS4KKyAgICAgKiBAZXhjZXB0aW9uIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiBhbiBpbnZhbGlkIGVzY2FwZSBpcworICAgICAqIHNlZW4uCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgdW5lc2NhcGUoU3RyaW5nIHMpIHsKKyAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgaW50W10gcG9zID0gbmV3IGludFsxXTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPHMubGVuZ3RoKCk7ICkgeworICAgICAgICAgICAgY2hhciBjID0gcy5jaGFyQXQoaSsrKTsKKyAgICAgICAgICAgIGlmIChjID09ICdcXCcpIHsKKyAgICAgICAgICAgICAgICBwb3NbMF0gPSBpOworICAgICAgICAgICAgICAgIGludCBlID0gdW5lc2NhcGVBdChzLCBwb3MpOworICAgICAgICAgICAgICAgIGlmIChlIDwgMCkgeworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZSAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnN1YnN0cmluZyhpLTEsIE1hdGgubWluKGkrOCwgcy5sZW5ndGgoKSkpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgVVRGMTYuYXBwZW5kKGJ1ZiwgZSk7CisgICAgICAgICAgICAgICAgaSA9IHBvc1swXTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgYnVmLmFwcGVuZChjKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYnVmLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgbG9hZChSZWFkZXIgaW5wdXRSZWFkZXIpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIFBvc2l4Q2hhck1hcCBvbGRNYXAgPSBTeW1ib2xUcmFuc2l0aW9uLmdldENoYXJNYXAoKTsKKyAgICAgICAgU3ltYm9sVHJhbnNpdGlvbi5zZXRDaGFyTWFwKG51bGwpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgZmluYWwgaW50IFRPS0VOID0gMTsKKyAgICAgICAgICAgIGZpbmFsIGludCBFT0YgPSAyOworICAgICAgICAgICAgZmluYWwgaW50IEVPTCA9IDM7CisgICAgICAgICAgICBmaW5hbCBpbnQgUkFOR0UgPSA0OworICAgICAgICAgICAgZmluYWwgTGV4LlRyYW5zaXRpb25bXVtdIHN0YXRlczEgPSB7CisgICAgICAgICAgICAgICAgeyAvL3N0YXRlIDA6IHN0YXJ0CisgICAgICAgICAgICAgICAgICAgIG5ldyBTcGFjZVRyYW5zaXRpb24oMCksCisgICAgICAgICAgICAgICAgICAgIG5ldyBFT0xUcmFuc2l0aW9uKEVPTCksCisgICAgICAgICAgICAgICAgICAgIG5ldyBMZXguRU9GVHJhbnNpdGlvbihFT0YpLAorICAgICAgICAgICAgICAgICAgICBuZXcgTGV4LkRlZmF1bHRUcmFuc2l0aW9uKExleC5BQ0NVTVVMQVRFX0NPTlNVTUUsIC0xKQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeyAgIC8vZ3JhYiBmaXJzdCB3b3JkCisgICAgICAgICAgICAgICAgICAgIG5ldyBMZXguU3RyaW5nVHJhbnNpdGlvbihTcGFjZVRyYW5zaXRpb24uU1BBQ0VfQ0hBUlMsIExleC5JR05PUkVfQ09OU1VNRSwgVE9LRU4pLAorICAgICAgICAgICAgICAgICAgICBuZXcgTGV4LlN0cmluZ1RyYW5zaXRpb24oRU9MVHJhbnNpdGlvbi5FT0xfQ0hBUlMsIExleC5JR05PUkVfQ09OU1VNRSwgVE9LRU4pLAorICAgICAgICAgICAgICAgICAgICBuZXcgTGV4LkVPRlRyYW5zaXRpb24oVE9LRU4pLAorICAgICAgICAgICAgICAgICAgICBuZXcgTGV4LkRlZmF1bHRUcmFuc2l0aW9uKExleC5BQ0NVTVVMQVRFX0NPTlNVTUUsIC0xKQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGZpbmFsIExleC5UcmFuc2l0aW9uW11bXSBzdGF0ZXMyID0geworICAgICAgICAgICAgICAgIHsgICAvL1RoZXNlIHN0YXRlcyBvbmx5IHJldHVybiA8c3ltYm9scz4uICBBbGwKKyAgICAgICAgICAgICAgICAgICAgLy9vdGhlciB0ZXh0IGlzIGlnbm9yZWQuCisgICAgICAgICAgICAgICAgICAgIG5ldyBMZXguRU9GVHJhbnNpdGlvbihFT0YpLAorICAgICAgICAgICAgICAgICAgICBuZXcgRU9MVHJhbnNpdGlvbihFT0wpLAorICAgICAgICAgICAgICAgICAgICBuZXcgU3ltYm9sVHJhbnNpdGlvbihUT0tFTiksCisgICAgICAgICAgICAgICAgICAgIG5ldyBTcGFjZVRyYW5zaXRpb24oMCksCisgICAgICAgICAgICAgICAgICAgIG5ldyBSYW5nZVRyYW5zaXRpb24oUkFOR0UpLAorICAgICAgICAgICAgICAgICAgICBuZXcgTGV4LkRlZmF1bHRUcmFuc2l0aW9uKExleC5BQ0NVTVVMQVRFX0NPTlNVTUUsIDApCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIH07CisgICAgICAgIAorICAgICAgICAgICAgUHVzaGJhY2tSZWFkZXIgaW5wdXQgPSBuZXcgUHVzaGJhY2tSZWFkZXIoaW5wdXRSZWFkZXIpOworICAgICAgICAgICAgTGV4IHAgPSBuZXcgTGV4KHN0YXRlczEsIGlucHV0KTsKKyAgICAgICAgICAgIGludCBzdGF0ZTsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IHAubmV4dFRva2VuKCk7CisgICAgICAgICAgICB9IHdoaWxlICgoc3RhdGUgIT0gRU9GKSAmJiAhcC5kYXRhRXF1YWxzKCJDSEFSTUFQIikpOworICAgICAgICAgICAgcC5hY2NlcHQoRU9MKTsKKyAgICAgICAgICAgIGlmIChzdGF0ZSAhPSBFT0YgKSB7CisgICAgICAgICAgICAgICAgcCA9IG5ldyBMZXgoc3RhdGVzMiwgaW5wdXQpOworICAgICAgICAgICAgICAgIHN0YXRlID0gcC5uZXh0VG9rZW4oKTsKKyAgICAgICAgICAgICAgICB3aGlsZSAoc3RhdGUgIT0gRU9GICkgeworCisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBrZXkgPSBwLmdldERhdGEoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYocC5kYXRhRXF1YWxzKCJFTkRDSEFSTUFQIikpeworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBwLm5leHRUb2tlbigpOworICAgICAgICAgICAgICAgICAgICB3aGlsZSAoc3RhdGUgPT0gRU9MKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZihwLmRhdGFFcXVhbHMoIkVORENIQVJNQVAiKSl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZGF0YSA9IHVuZXNjYXBlKHAuZ2V0RGF0YSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEudHJpbSgpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc3RhcnRzV2l0aCgiPFUiKSB8fCBkYXRhLnN0YXJ0c1dpdGgoIiNVIikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbnVtRGF0YSA9IGRhdGEuc3Vic3RyaW5nKDIsZGF0YS5sZW5ndGgoKS0xKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGlnaXQgPSBJbnRlZ2VyLnBhcnNlSW50KG51bURhdGEsIDE2KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVNYXBwaW5nKGtleSwgIiIrKGNoYXIpZGlnaXQpOworICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2UgaWYoZGF0YS5zdGFydHNXaXRoKCJcXHgiKSl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZVtdIGVuY0RhdGEgPSBuZXcgYnl0ZVs2XTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtID0gaGV4VG9CeXRlKGRhdGEsZW5jRGF0YSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHREYXRhID0gbmV3IFN0cmluZyhlbmNEYXRhLDAsbnVtLGVuY29kaW5nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVNYXBwaW5nKGtleSx0RGF0YSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IHAubmV4dFRva2VuKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBrZXk9cC5nZXREYXRhKCk7CisgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAvLyB3ZSBjb21lIGhlcmUgb25seSBpZiB0aGVyZSBpcyBhIHJhbmdlIHRyYW5zaXRpb24KKyAgICAgICAgICAgICAgICAgICAgIGlmKCBzdGF0ZSA9PVJBTkdFKXsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGJlZ2luID0ga2V5OworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IHAubmV4dFRva2VuKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZW5kID0gcC5nZXREYXRhKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gcC5uZXh0VG9rZW4oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBkYXRhID0gcC5nZXREYXRhKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnRyaW0oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVbXSBlbmNEYXRhID0gbmV3IGJ5dGVbNl07CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtID0gaGV4VG9CeXRlKGRhdGEsZW5jRGF0YSk7CisgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgdERhdGEgPSBuZXcgU3RyaW5nKGVuY0RhdGEsMCxudW0sZW5jb2RpbmcpOworICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHN0cmluZ1ZhbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludFtdIHZhbCA9IGdldEludChiZWdpbik7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYmVnaW5SYW5nZSA9IHZhbFsxXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9Z2V0SW50KGVuZCk7ICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZW5kUmFuZ2UgPSB2YWxbMV07CisgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdWYWwgPSBrZXkuc3Vic3RyaW5nKDAsdmFsWzBdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBkaWdpdCA9IChpbnQpKGNoYXIpdERhdGEuY2hhckF0KDApOworICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUoYmVnaW5SYW5nZSA8PSBlbmRSYW5nZSl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lTWFwcGluZygoc3RyaW5nVmFsK2JlZ2luUmFuZ2UrIj4iKSwiIisoY2hhcilkaWdpdCsrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpblJhbmdlKys7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gcC5uZXh0VG9rZW4oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGtleT1wLmdldERhdGEoKTsKKyAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC8vc3RhdGUgPSBwLm5leHRUb2tlbigpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBjYXRjaCAoRU9GRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIFN5bWJvbFRyYW5zaXRpb24uc2V0Q2hhck1hcChvbGRNYXApOworICAgICAgICB9CisgICAgfQorICAgIHB1YmxpYyBpbnRbXSBnZXRJbnQoU3RyaW5nIGRhdGEpeworICAgICAgICBpbnQgaT0wOworICAgICAgICBpbnRbXSByZXRWYWwgPSBuZXcgaW50WzJdOworICAgICAgICBpbnQgbGVuID1kYXRhLmxlbmd0aCgpOworICAgICAgICB3aGlsZShpPCBsZW4peworICAgICAgICAgICAgaWYoKGRhdGEuY2hhckF0KGkpKS0weDMwIDwgKDB4MzktMHgzMCkpeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaSsrOworICAgICAgICB9CisgICAgICAgIFN0cmluZyBzdWIgPWRhdGEuc3Vic3RyaW5nKGksbGVuLTEpOworICAgICAgICByZXRWYWxbMF0gPWk7CisgICAgICAgIHJldFZhbFsxXT1JbnRlZ2VyLnBhcnNlSW50KHN1YiwxMCk7CisgICAgICAgIHJldHVybiByZXRWYWw7CisgICAgfQorICAgIHB1YmxpYyBpbnQgaGV4VG9CeXRlKFN0cmluZyBkYXRhLCBieXRlW10gcmV0dmFsKXsKKyAgICAgICAgU3RyaW5nIHREYXRhID0gZGF0YTsKKyAgICAgICAgaW50IGk9MDsKKyAgICAgICAgZm9yKGk9MDtpIDwgZGF0YS5sZW5ndGgoKS80OyBpKyspeworICAgICAgICAgICAgaWYodERhdGEuY2hhckF0KDApPT0nXFwnICYmIHREYXRhLmNoYXJBdCgxKT09J3gnKXsKKyAgICAgICAgICAgICAgICBTdHJpbmcgbnVtRGF0YSA9IHREYXRhLnN1YnN0cmluZygyLDQpOworICAgICAgICAgICAgICAgIHJldHZhbFtpXSA9IChieXRlKSBJbnRlZ2VyLnBhcnNlSW50KG51bURhdGEsMTYpOworICAgICAgICAgICAgICAgIHREYXRhID0gdERhdGEuc3Vic3RyaW5nKDQsdERhdGEubGVuZ3RoKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9ICAgICAgIAorICAgICAgICByZXR1cm4gaTsKKyAgICB9ICAgICAgICAKKyAgICBwdWJsaWMgdm9pZCBkZWZpbmVNYXBwaW5nKFN0cmluZyBmcm9tLCBTdHJpbmcgdG8pIHsKKyAgICAgICAgdGFibGUucHV0KGZyb20sIHRvKTsKKyAgICAgICAgYmFja1RhYmxlID0gbnVsbDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB1bmRlZmluZU1hcHBpbmcoU3RyaW5nIGZyb20pIHsKKyAgICAgICAgdGFibGUucmVtb3ZlKGZyb20pOworICAgICAgICBiYWNrVGFibGUgPSBudWxsOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHN3YXAoKSB7CisgICAgICAgIEhhc2h0YWJsZSBuZXdUYWJsZSA9IG5ldyBIYXNodGFibGUoKTsKKyAgICAgICAgRW51bWVyYXRpb24gZW51bSA9IHRhYmxlLmtleXMoKTsKKyAgICAgICAgd2hpbGUgKGVudW0uaGFzTW9yZUVsZW1lbnRzKCkpIHsKKyAgICAgICAgICAgIFN0cmluZyBrZXkgPSAoU3RyaW5nKWVudW0ubmV4dEVsZW1lbnQoKTsKKyAgICAgICAgICAgIFN0cmluZyBjb2RlID0gKFN0cmluZyl0YWJsZS5nZXQoa2V5KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgU3RyaW5nIG5ld0tleSA9IHRvU3ltYm9sKGNvZGUpOworICAgICAgICAgICAgU3RyaW5nIG5ld0NvZGUgPSB0b0xpdGVyYWwoa2V5KTsKKyAgICAgICAgICAgIFN0cmluZyBwcmV2Q29kZSA9IChTdHJpbmcpbmV3VGFibGUuZ2V0KG5ld0tleSk7CisgICAgICAgICAgICBpZiAocHJldkNvZGUgPT0gbnVsbCB8fCBwcmV2Q29kZS5jb21wYXJlVG8obmV3Q29kZSkgPiAwKSB7CisgICAgICAgICAgICAgICAgbmV3VGFibGUucHV0KG5ld0tleSwgbmV3Q29kZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgdGFibGUgPSBuZXdUYWJsZTsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBTdHJpbmcgdG9MaXRlcmFsKFN0cmluZyBjb2RlKSB7CisgICAgICAgIFN0cmluZyBkYXRhID0gY29kZS5zdWJzdHJpbmcoMixjb2RlLmxlbmd0aCgpLTEpOworICAgICAgICBpbnQgZGlnaXQgPSBJbnRlZ2VyLnBhcnNlSW50KGRhdGEsIDE2KTsKKyAgICAgICAgcmV0dXJuICIiICsgKGNoYXIpZGlnaXQ7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgU3RyaW5nIHRvU3ltYm9sKFN0cmluZyBjb2RlKSB7CisgICAgICAgIFN0cmluZ0J1ZmZlciBlc2NhcGVCdWZmZXIgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIGVzY2FwZUJ1ZmZlci5hcHBlbmQoIj4iKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb2RlLmxlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgICAgIGludCB2YWx1ZSA9ICgoaW50KWNvZGUuY2hhckF0KGkpKSAmIDB4RkZGRjsKKyAgICAgICAgICAgIHdoaWxlICgodmFsdWUgPiAwKSB8fCAoZXNjYXBlQnVmZmVyLmxlbmd0aCgpIDwgNSkpIHsKKyAgICAgICAgICAgICAgICBjaGFyIGRpZ2l0ID0gQ2hhcmFjdGVyLmZvckRpZ2l0KHZhbHVlICUgMTYsIDE2KTsKKyAgICAgICAgICAgICAgICBlc2NhcGVCdWZmZXIuYXBwZW5kKGRpZ2l0KTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA+Pj0gNDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlc2NhcGVCdWZmZXIuYXBwZW5kKCJVPCIpOworICAgICAgICBlc2NhcGVCdWZmZXIucmV2ZXJzZSgpOworICAgICAgICByZXR1cm4gZXNjYXBlQnVmZmVyLnRvU3RyaW5nKCk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIGR1bXAoUHJpbnRTdHJlYW0gb3V0KSB7CisgICAgICAgIFN0cmluZ0J1ZmZlciBlc2NhcGVCdWZmZXIgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIEVudW1lcmF0aW9uIGVudW0gPSB0YWJsZS5rZXlzKCk7CisgICAgICAgIHdoaWxlIChlbnVtLmhhc01vcmVFbGVtZW50cygpKSB7CisgICAgICAgICAgICBTdHJpbmcga2V5ID0gKFN0cmluZyllbnVtLm5leHRFbGVtZW50KCk7CisgICAgICAgICAgICBTdHJpbmcgY29kZSA9IChTdHJpbmcpdGFibGUuZ2V0KGtleSk7CisgICAgICAgICAgICBvdXQucHJpbnQoa2V5KTsKKyAgICAgICAgICAgIG91dC5wcmludCgiICAgICAgIDxVIik7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvZGUubGVuZ3RoKCk7IGkrKykgeworICAgICAgICAgICAgICAgIGludCB2YWx1ZSA9ICgoaW50KWNvZGUuY2hhckF0KGkpKSAmIDB4RkZGRjsKKyAgICAgICAgICAgICAgICBlc2NhcGVCdWZmZXIuc2V0TGVuZ3RoKDApOworICAgICAgICAgICAgICAgIHdoaWxlICgodmFsdWUgPiAwKSB8fCAoZXNjYXBlQnVmZmVyLmxlbmd0aCgpIDwgNCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2hhciBkaWdpdCA9IENoYXJhY3Rlci5mb3JEaWdpdCh2YWx1ZSAlIDE2LCAxNik7CisgICAgICAgICAgICAgICAgICAgIGVzY2FwZUJ1ZmZlci5hcHBlbmQoZGlnaXQpOworICAgICAgICAgICAgICAgICAgICB2YWx1ZSA+Pj0gNDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZXNjYXBlQnVmZmVyLnJldmVyc2UoKTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnQoZXNjYXBlQnVmZmVyLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgb3V0LnByaW50bG4oIj4iKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBTdHJpbmcgbWFwS2V5KGZpbmFsIFN0cmluZyBrZXkpIHsKKyAgICAgICAgU3RyaW5nIHJlc3VsdCA9IChTdHJpbmcpdGFibGUuZ2V0KGtleSk7CisgICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKHBhcmVudE1hcCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gcGFyZW50TWFwLm1hcEtleShrZXkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBrZXk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgcHVibGljIFN0cmluZyBiYWNrbWFwVmFsdWUoZmluYWwgU3RyaW5nIHZhbHVlKSB7CisgICAgICAgIGlmIChiYWNrVGFibGUgPT0gbnVsbCkgeworICAgICAgICAgICAgYmFja1RhYmxlID0gbmV3IEhhc2h0YWJsZSgpOworICAgICAgICAgICAgRW51bWVyYXRpb24gZW51bSA9IHRhYmxlLmtleXMoKTsKKyAgICAgICAgICAgIHdoaWxlIChlbnVtLmhhc01vcmVFbGVtZW50cygpKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIGtleSA9IChTdHJpbmcpZW51bS5uZXh0RWxlbWVudCgpOworICAgICAgICAgICAgICAgIFN0cmluZyB2YWwgPSAoU3RyaW5nKXRhYmxlLmdldChrZXkpOworICAgICAgICAgICAgICAgIGJhY2tUYWJsZS5wdXQodmFsLCBrZXkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIFN0cmluZyByZXN1bHQgPSAoU3RyaW5nKWJhY2tUYWJsZS5nZXQodmFsdWUpOworICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpIHsKKyAgICAgICAgICAgIGlmIChwYXJlbnRNYXAgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IHBhcmVudE1hcC5iYWNrbWFwVmFsdWUodmFsdWUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSB2YWx1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OyAgICAgIAorICAgIH0KKworICAgIHB1YmxpYyBFbnVtZXJhdGlvbiBrZXlzKCkgeworICAgICAgICByZXR1cm4gdGFibGUua2V5cygpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgRW51bWVyYXRpb24gZWxlbWVudHMoKSB7CisgICAgICAgIHJldHVybiB0YWJsZS5lbGVtZW50cygpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgYXJnc1tdKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBQb3NpeENoYXJNYXAgbWFwMSA9IG5ldyBQb3NpeENoYXJNYXAoCisgICAgICAgICAgICAgICAgIkM6XFxwcm9qZWN0c1xcY29tXFx0YWxpZ2VudFxcbG9jYWxlY29udmVydGVyXFxDaGFyTWFwcyIsCisgICAgICAgICAgICAgICAgIklCTS0xMTI5LlVQTUFQMTAwLnR4dCIpOworICAgICAgICAgICAgbWFwMS5zd2FwKCk7CisgICAgICAgICAgICBtYXAxLmR1bXAoU3lzdGVtLm91dCk7CisgICAgICAgIAorICAgICAgICAgICAgU3ltYm9sVHJhbnNpdGlvbi5zZXRDaGFyTWFwKG1hcDEpOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7IFN5c3RlbS5vdXQucHJpbnRsbigpOworICAgICAgICAKKyAgICAgICAgICAgIC8vUG9zaXhDaGFyTWFwIG1hcCA9IG5ldyBQb3NpeENoYXJNYXAoIkM6XFxwcm9qZWN0c1xcZGF0YVxcSVNPLTg4NTktMS5odG1sIik7CisgICAgICAgICAgICBQb3NpeENoYXJNYXAgbWFwID0gbmV3IFBvc2l4Q2hhck1hcCgKKyAgICAgICAgICAgICAgICAiQzpcXHByb2plY3RzXFxjb21cXHRhbGlnZW50XFxsb2NhbGVjb252ZXJ0ZXJcXENoYXJNYXBzIiwKKyAgICAgICAgICAgICAgICAiaWJtMTEyOS50eHQiKTsKKyAgICAgICAgICAgIG1hcC5kdW1wKFN5c3RlbS5vdXQpOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZSk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL1Bvc2l4Q29sbGF0aW9uQnVpbGRlci5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9Qb3NpeENvbGxhdGlvbkJ1aWxkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5jMTEyYWIzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9Qb3NpeENvbGxhdGlvbkJ1aWxkZXIuamF2YQpAQCAtMCwwICsxLDM1MCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAwNCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9Qb3NpeENvbGxhdGlvbkJ1aWxkZXIuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNTozMCAkIAorICogJFJldmlzaW9uOiAxLjIgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisgCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50b29sLmxvY2FsZWNvbnZlcnRlcjsKK2ltcG9ydCBjb20uaWJtLmljdS5sYW5nLio7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC4qOworaW1wb3J0IGphdmEuaW8uKjsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworY2xhc3MgUG9zaXhDb2xsYXRpb25CdWlsZGVyIHsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTUFYX1dFSUdIVFMgPSA0OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNQVhfQ09NUE9TSVRJT04gPSA0OworICAgIHByaXZhdGUgc3RhdGljIGludCBuZXh0Q2hhck51bWJlciA9IDE7CisgICAgcHJpdmF0ZSBIYXNodGFibGUgd2VpZ2h0U3ltYm9scyA9IG5ldyBIYXNodGFibGUoKTsKKyAgICBwcml2YXRlIEhhc2h0YWJsZSBjb250cmFjdGlvbnMgPSBuZXcgSGFzaHRhYmxlKCk7CisgICAgcHJpdmF0ZSBIYXNodGFibGUgcnVsZXMgPSBuZXcgSGFzaHRhYmxlKCk7CisgICAgcHJpdmF0ZSBDb2xsYXRpb25SdWxlIGxhc3RSdWxlID0gbnVsbDsKKyAgICBwcml2YXRlIFBvc2l4Q2hhck1hcCBtYXA7CisgICAgcHJpdmF0ZSBTb3J0ZWRWZWN0b3Igb3JkZXI7CisgICAgcHJpdmF0ZSBzdGF0aWMgaW50IEZJUlNUX1dFSUdIVF9DSEFSID0gMHgwMDAwRjdGRjsKKyAgICBwcml2YXRlIGludCBuZXh0V2VpZ2h0Q2hhciA9IEZJUlNUX1dFSUdIVF9DSEFSOworICAgIHByaXZhdGUgQ29sbGF0aW9uUnVsZSBpZ25vcmVSdWxlOyAgIC8vcnVsZSBmb3IgdGhlIGNvbGxhdGluZy1zeW1ib2wgSUdOT1JFCisgICAgCisgICAgcHVibGljIGNsYXNzIENvbGxhdGlvblJ1bGUgeworICAgICAgICBpbnQgY2hhck51bWJlcjsKKyAgICAgICAgU3RyaW5nIHZhbHVlOworICAgICAgICBpbnQgbmV4dFdlaWdodCA9IDA7CisgICAgICAgIFN0cmluZ1tdIHdlaWdodFNvdXJjZSA9IG5ldyBTdHJpbmdbTUFYX1dFSUdIVFNdOworICAgICAgICBpbnQgd2VpZ2h0W11bXSA9IG51bGw7CisgICAgICAgIFN0cmluZ0J1ZmZlciBzb3VyY2UgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIAorICAgICAgICBwdWJsaWMgQ29sbGF0aW9uUnVsZShTdHJpbmcgc3ltYm9sKSB7CisgICAgICAgICAgICBjaGFyTnVtYmVyPSBuZXh0Q2hhck51bWJlcisrOworICAgICAgICAgICAgdmFsdWUgPSBzeW1ib2w7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE1BWF9XRUlHSFRTOyBpKyspIHsKKyAgICAgICAgICAgICAgICB3ZWlnaHRTb3VyY2VbaV0gPSBzeW1ib2w7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzb3VyY2UuYXBwZW5kKG1hcC5iYWNrbWFwVmFsdWUoc3ltYm9sKSk7CisgICAgICAgICAgICBzb3VyY2UuYXBwZW5kKCJcdFx0Iik7CisgICAgICAgIH0KKyAgICAgICAgcHJpdmF0ZSBDb2xsYXRpb25SdWxlKENvbGxhdGlvblJ1bGUgb3RoZXIsIGludCBjb21wb3NpdGlvbikgeworICAgICAgICAgICAgY2hhck51bWJlciA9IG90aGVyLmNoYXJOdW1iZXI7CisgICAgICAgICAgICB2YWx1ZSA9IG90aGVyLnZhbHVlOworICAgICAgICAgICAgbmV4dFdlaWdodCA9IG90aGVyLm5leHRXZWlnaHQ7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE1BWF9XRUlHSFRTOyBpKyspIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgc291cmNlID0gb3RoZXIud2VpZ2h0U291cmNlW2ldOworICAgICAgICAgICAgICAgIGlmIChzb3VyY2UubGVuZ3RoKCkgPiBjb21wb3NpdGlvbikgeworICAgICAgICAgICAgICAgICAgICB3ZWlnaHRTb3VyY2VbaV0gPSAiIitzb3VyY2UuY2hhckF0KGNvbXBvc2l0aW9uKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICB3ZWlnaHRTb3VyY2VbaV0gPSB2YWx1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAvL0hleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yIG15VHJhbnNsaXQgPSBuZXcgSGV4VG9Vbmljb2RlVHJhbnNsaXRlcmF0b3IoIjxVIyMjMD4iKTsKKyAgICAgICAgcHVibGljIHZvaWQgYWRkV2VpZ2h0KFN0cmluZyBzeW1ib2wpIHsKKyAgICAgICAgIC8vICAgUmVwbGFjZWFibGVTdHJpbmcgdFN5bWJvbCA9IG5ldyBSZXBsYWNlYWJsZVN0cmluZyhzeW1ib2wpOworICAgICAgICAgICAvLyBteVRyYW5zbGl0LnRyYW5zbGl0ZXJhdGUodFN5bWJvbCk7CisgICAgICAgICAgICAgICAgLy9saW1pdCB0aGUgc2l6ZSBvZiBhIHNpbmdsZSB3ZWlnaHQKKyAgICAgICAgICAgIGlmIChzeW1ib2wubGVuZ3RoKCkgPiBNQVhfQ09NUE9TSVRJT04pIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0uZXJyLnByaW50bG4oIldBUk5JTkc6IFdlaWdodHMgb2YgY29tcG9zaXRpb24gZ3JlYXRlciB0aGFuICIrTUFYX0NPTVBPU0lUSU9OKyIgd2VyZSB0cnVuY2F0ZWQuIik7CisgICAgICAgICAgICAgICAgc3ltYm9sID0gc3ltYm9sLnN1YnN0cmluZygwLCBNQVhfQ09NUE9TSVRJT04pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8vbGltaXQgdGhlIG51bWJlciBvZiB3ZWlnaHRzCisgICAgICAgICAgICBpZiAobmV4dFdlaWdodCA8IE1BWF9XRUlHSFRTKSB7CisgICAgICAgICAgICAgICAgaWYgKG5leHRXZWlnaHQgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5hcHBlbmQoIjsiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzeW1ib2wubGVuZ3RoKCk7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBzb3VyY2UuYXBwZW5kKG1hcC5iYWNrbWFwVmFsdWUoIiIrc3ltYm9sLmNoYXJBdChpKSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB3ZWlnaHRTb3VyY2VbbmV4dFdlaWdodCsrXSA9IHN5bWJvbDsKKyAgICAgICAgICAgICAgICB3ZWlnaHQgPSBudWxsOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHB1YmxpYyBpbnQgY29tcGFyZShDb2xsYXRpb25SdWxlIG90aGVyKSB7CisgICAgICAgICAgICBpZiAob3RoZXIgPT0gbnVsbCkgcmV0dXJuIGNvbXBhcmUoaWdub3JlUnVsZSk7CisgICAgICAgICAgICByZXNvbHZlV2VpZ2h0cygpOworICAgICAgICAgICAgb3RoZXIucmVzb2x2ZVdlaWdodHMoKTsKKyAgICAgICAgICAgIGludCBjb21wYXJlU2l6ZSA9IE1hdGgubWluKGdldFNpemUoKSwgb3RoZXIuZ2V0U2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgY29tcGFyZVNpemU7IGorKykgeworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTUFYX1dFSUdIVFM7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBpbnQgZGlmZiA9IHdlaWdodFtqXVtpXSAtIG90aGVyLndlaWdodFtqXVtpXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRpZmYgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLShpKzEpOworICAgICAgICAgICAgICAgICAgICB9IGlmIChkaWZmID4gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkrMTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBnZXRTaXplKCkgLSBvdGhlci5nZXRTaXplKCk7CisgICAgICAgIH0KKyAgICAgICAgcHVibGljIGJvb2xlYW4gaXNNdWx0aVdlaWdodCgpIHsKKyAgICAgICAgICAgIHJldHVybiBnZXRTaXplKCkgPiAxOworICAgICAgICB9CisgICAgICAgIHB1YmxpYyBpbnQgZ2V0U2l6ZSgpIHsKKyAgICAgICAgICAgIGludCBzaXplID0gMDsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgd2VpZ2h0U291cmNlLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgc2l6ZSA9IE1hdGgubWF4KHNpemUsIHdlaWdodFNvdXJjZVtpXS5sZW5ndGgoKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gc2l6ZTsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgQ29sbGF0aW9uUnVsZSBnZXRDb21wb25lbnQoaW50IG5keCkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBDb2xsYXRpb25SdWxlKHRoaXMsIG5keCk7CisgICAgICAgIH0KKyAgICAgICAgcHVibGljIFN0cmluZyBnZXRWYWx1ZSgpIHsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgU3RyaW5nIGdldFN5bWJvbCgpIHsKKyAgICAgICAgICAgIFN0cmluZyBuZXdWYWx1ZSA9IGlzQ29udHJhY3Rpb24oKTsKKyAgICAgICAgICAgIGlmIChuZXdWYWx1ZSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ld1ZhbHVlOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IGlzV2VpZ2h0U3ltYm9sKCk7CisgICAgICAgICAgICAgICAgaWYgKG5ld1ZhbHVlICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ld1ZhbHVlOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcHVibGljIFN0cmluZyBnZXRTb3VyY2UoKSB7CisgICAgICAgICAgICByZXR1cm4gc291cmNlLnRvU3RyaW5nKCk7CisgICAgICAgIH0KKyAgICAgICAgcHJpdmF0ZSBTdHJpbmcgaXNDb250cmFjdGlvbigpIHsKKyAgICAgICAgICAgIHJldHVybiAoU3RyaW5nKWNvbnRyYWN0aW9ucy5nZXQodmFsdWUpOworICAgICAgICB9CisgICAgICAgIHByaXZhdGUgU3RyaW5nIGlzV2VpZ2h0U3ltYm9sKCkgeworICAgICAgICAgICAgcmV0dXJuIChTdHJpbmcpd2VpZ2h0U3ltYm9scy5nZXQodmFsdWUpOworICAgICAgICB9CisgICAgICAgIHB1YmxpYyBDb2xsYXRpb25SdWxlIHNlZWtzVG9SdWxlKCkgeworICAgICAgICAgICAgQ29sbGF0aW9uUnVsZSBjb21wOworICAgICAgICAgICAgaWYgKGdldFNpemUoKSA8PSAxKSB7CisgICAgICAgICAgICAgICAgY29tcCA9IHRoaXM7ICAgIC8vc2F2ZSBhbiBvYmplY3QgY3JlYXRpb24KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY29tcCA9IGdldENvbXBvbmVudCgwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGludCBuZHggPSBvcmRlci5pbmRleE9mKGNvbXApOworICAgICAgICAgICAgaWYgKG5keCA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIENvbGxhdGlvblJ1bGUgZXhwOworICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgZXhwID0gKENvbGxhdGlvblJ1bGUpb3JkZXIuZWxlbWVudEF0KG5keC0tKTsKKyAgICAgICAgICAgICAgICB9IHdoaWxlIChuZHggPiAwICYmIGV4cC5nZXRTaXplKCkgPiAxKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZXhwOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0RXhwYW5zaW9uKCkgeworICAgICAgICAgICAgaWYgKGdldFNpemUoKSA8PSAxKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIFN0cmluZ0J1ZmZlciBleHBhbnNpb24gPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBnZXRTaXplKCk7IGorKykgeworICAgICAgICAgICAgICAgICAgICBDb2xsYXRpb25SdWxlIGNvbXAgPSBnZXRDb21wb25lbnQoaik7CisgICAgICAgICAgICAgICAgICAgIGludCBuZHggPSBvcmRlci5pbmRleE9mKGNvbXApOworICAgICAgICAgICAgICAgICAgICBDb2xsYXRpb25SdWxlIGV4cDsKKyAgICAgICAgICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICAgICAgICAgZXhwID0gKENvbGxhdGlvblJ1bGUpb3JkZXIuZWxlbWVudEF0KG5keC0tKTsKKyAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAobmR4ID49IDAgJiYgZXhwLmdldFNpemUoKSA+IDEpOworICAgICAgICAgICAgICAgICAgICBleHBhbnNpb24uYXBwZW5kKGV4cC5nZXRTeW1ib2woKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBleHBhbnNpb24udG9TdHJpbmcoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICAgICAgcmV0dXJuIHNvdXJjZS50b1N0cmluZygpOworLyogICAgICAgICAgcmVzb2x2ZVdlaWdodHMoKTsKKyAgICAgICAgICAgIFN0cmluZ0J1ZmZlciBidWYgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgICAgICBidWYuYXBwZW5kKGNoYXJOdW1iZXIpOworICAgICAgICAgICAgYnVmLmFwcGVuZCgnICcpOworICAgICAgICAgICAgYnVmLmFwcGVuZCh2YWx1ZSk7CisgICAgICAgICAgICBidWYuYXBwZW5kKCcgJyk7CisgICAgICAgICAgICBidWYuYXBwZW5kKGdldFN5bWJvbCgpKTsKKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQoJyAnKTsKKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQoKGlzV2VpZ2h0U3ltYm9sKCkgIT0gbnVsbCk/IlciOiIgIik7CisgICAgICAgICAgICBidWYuYXBwZW5kKCcgJyk7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE1BWF9XRUlHSFRTOyBpKyspIHsKKyAgICAgICAgICAgICAgICBidWYuYXBwZW5kKHdlaWdodFNvdXJjZVtpXSk7CisgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgnICcpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBnZXRTaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIlsgIik7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBNQVhfV0VJR0hUUzsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgIGludCB3ID0gd2VpZ2h0W2ldW2pdOworICAgICAgICAgICAgICAgICAgICBidWYuYXBwZW5kKHcpOworICAgICAgICAgICAgICAgICAgICBidWYuYXBwZW5kKCcgJyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoJ10nKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBidWYudG9TdHJpbmcoKTsKKyovCisgICAgICAgIH0KKyAgICAgICAgcHJpdmF0ZSB2b2lkIHJlc29sdmVXZWlnaHRzKCkgeworICAgICAgICAgICAgaWYgKHdlaWdodCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgd2VpZ2h0ID0gbmV3IGludFtNQVhfQ09NUE9TSVRJT05dW01BWF9XRUlHSFRTXTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IE1BWF9XRUlHSFRTOyBqKyspIHsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHN5bWJvbCA9IHdlaWdodFNvdXJjZVtqXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbC5sZW5ndGgoKSA8PSAxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB3ZWlnaHRbMF1bal0gPSBvcmRpbmFsaXR5T2Yoc3ltYm9sKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHN5bWJvbC5sZW5ndGgoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBjID0gc3ltYm9sLmNoYXJBdChpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWlnaHRbaV1bal0gPSBvcmRpbmFsaXR5T2YoIiIrYyk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHVibGljIFBvc2l4Q29sbGF0aW9uQnVpbGRlcihQb3NpeENoYXJNYXAgbWFwKSB7CisgICAgICAgIHRoaXMubWFwID0gbWFwOworICAgICAgICBTdHJpbmcgaWdub3JlU3ltYm9sID0gZGVmaW5lV2VpZ2h0U3ltYm9sKCJJR05PUkUiKTsKKyAgICAgICAgaWdub3JlUnVsZSA9IG5ldyBDb2xsYXRpb25SdWxlKGlnbm9yZVN5bWJvbCk7CisgICAgICAgIHJ1bGVzLnB1dChpZ25vcmVTeW1ib2wsIGlnbm9yZVJ1bGUpOworICAgICAgICBsYXN0UnVsZSA9IGlnbm9yZVJ1bGU7CisgICAgICAgICAgICAvL3t7SU5JVF9DT05UUk9MUworCQkvL319Cit9CisKKyAgICBwdWJsaWMgU3RyaW5nIGRlZmluZVdlaWdodFN5bWJvbChTdHJpbmcgc3ltYm9sKSB7CisgICAgICAgIG9yZGVyID0gbnVsbDsKKyAgICAgICAgU3RyaW5nIGMgPSBuZXh0RnJlZVdlaWdodENoYXIoKTsKKyAgICAgICAgbWFwLmRlZmluZU1hcHBpbmcoc3ltYm9sLCBjKTsKKyAgICAgICAgd2VpZ2h0U3ltYm9scy5wdXQoYywgc3ltYm9sKTsKKyAgICAgICAgd2VpZ2h0U3ltYm9scy5wdXQoc3ltYm9sLCBjKTsKKyAgICAgICAgcmV0dXJuIGM7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBTdHJpbmcgZGVmaW5lQ29udHJhY3Rpb24oU3RyaW5nIHN5bWJvbCwgU3RyaW5nIHZhbHVlKSB7CisgICAgICAgIG9yZGVyID0gbnVsbDsKKyAgICAgICAgU3RyaW5nIGMgPSBuZXh0RnJlZVdlaWdodENoYXIoKTsKKyAgICAgICAgbWFwLmRlZmluZU1hcHBpbmcoc3ltYm9sLCBjKTsKKyAgICAgICAgY29udHJhY3Rpb25zLnB1dChjLCB2YWx1ZSk7CisgICAgICAgIHJldHVybiBjOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIFN0cmluZyBuZXh0RnJlZVdlaWdodENoYXIoKSB7CisgICAgICAgIFN0cmluZyByZXN1bHQgPSAiIjsKKyAgICAgICAgU3RyaW5nIG1hcHBlZFNvdXJjZTsKKyAgICAgICAgZG8geworICAgICAgICAgICAgcmVzdWx0ID0gIiIrKGNoYXIpbmV4dFdlaWdodENoYXItLTsKKyAgICAgICAgICAgIG1hcHBlZFNvdXJjZSA9IG1hcC5iYWNrbWFwVmFsdWUocmVzdWx0KTsKKyAgICAgICAgfSB3aGlsZSAocmVzdWx0ICE9IG1hcHBlZFNvdXJjZSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBpbnQgb3JkaW5hbGl0eU9mKFN0cmluZyBzeW1ib2wpIHsKKy8vICAgICAgICBIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvciBuZXdUcmFuc2xpdCA9IG5ldyBIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvcigpOworLy8gICAgICAgIFJlcGxhY2VhYmxlU3RyaW5nIHRTeW1ib2wgPSBuZXcgUmVwbGFjZWFibGVTdHJpbmcoc3ltYm9sKTsKKy8vICAgICAgICBuZXdUcmFuc2xpdC50cmFuc2xpdGVyYXRlKHRTeW1ib2wpOworICAgICAgICBDb2xsYXRpb25SdWxlIHcgPSAoQ29sbGF0aW9uUnVsZSlydWxlcy5nZXQoc3ltYm9sKTsKKyAgICAgICAgaWYgKHcgIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIHcuY2hhck51bWJlcjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFN5c3RlbS5lcnIucHJpbnQoIkVSUk9SOiBXZWlnaHQgc3ltYm9sIG5vdCBmb3VuZDogIik7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMCA7IGkgPCBzeW1ib2wubGVuZ3RoKCk7IGkrKykgeworICAgICAgICAgICAgICAgIGNoYXIgYyA9IHN5bWJvbC5jaGFyQXQoaSk7CisgICAgICAgICAgICAgICAgU3lzdGVtLmVyci5wcmludCgiXFx1Iik7CisgICAgICAgICAgICAgICAgU3lzdGVtLmVyci5wcmludChIRVhfRElHSVRbKGMgJiAweDBGMDAwKSA+PiAxMl0pOyAvLyBIRVhfRElHSVQgd29ya3MgZm9yIG9jdGFsCisgICAgICAgICAgICAgICAgU3lzdGVtLmVyci5wcmludChIRVhfRElHSVRbKGMgJiAweDBGMDApID4+IDhdKTsgLy8gSEVYX0RJR0lUIHdvcmtzIGZvciBvY3RhbAorICAgICAgICAgICAgICAgIFN5c3RlbS5lcnIucHJpbnQoSEVYX0RJR0lUWyhjICYgMHgwMEYwKSA+PiA0XSk7CisgICAgICAgICAgICAgICAgU3lzdGVtLmVyci5wcmludGxuKEhFWF9ESUdJVFsoYyAmIDB4MDAwRildKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFN5c3RlbS5lcnIucHJpbnRsbigiICAgICAgIFdlaWdodCBnaXZlbiBtYXhpbXVtIHBvc3NpYmxlIHZhbHVlLiIpOworICAgICAgICAgICAgcmV0dXJuIEludGVnZXIuTUFYX1ZBTFVFOworICAgICAgICB9CisgICAgfQorLy8gICAgSGV4VG9Vbmljb2RlVHJhbnNsaXRlcmF0b3IgbXlUcmFuc2xpdCA9IG5ldyBIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvcigiPFUjIyMwPiIpOworICAgIHB1YmxpYyB2b2lkIGFkZFJ1bGUoU3RyaW5nIHN5bWJvbCkgeworICAvLyAgICAgIFJlcGxhY2VhYmxlU3RyaW5nIHRTeW1ib2wgPSBuZXcgUmVwbGFjZWFibGVTdHJpbmcoc3ltYm9sKTsKKyAgIC8vICAgICBteVRyYW5zbGl0LnRyYW5zbGl0ZXJhdGUodFN5bWJvbCk7CisgICAgICAgIGlmIChzeW1ib2wubGVuZ3RoKCkgPiAxKSB7CisgICAgICAgICAgICBTeXN0ZW0uZXJyLnByaW50bG4oIldBUk5JTkc6IFVuZGVmaW5lZCBlbGVtZW50ICciK3N5bWJvbCsiJy4gIGNvbGxhdGluZy1zeW1ib2wgZ2VuZXJhdGVkLiIpOworICAgICAgICAgICAgc3ltYm9sID0gZGVmaW5lV2VpZ2h0U3ltYm9sKHN5bWJvbCk7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgb3JkZXIgPSBudWxsOworICAgICAgICBsYXN0UnVsZSA9IG5ldyBDb2xsYXRpb25SdWxlKHN5bWJvbCk7CisgICAgICAgIHJ1bGVzLnB1dChzeW1ib2wsIGxhc3RSdWxlKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgYWRkUnVsZShDb2xsYXRpb25SdWxlIHJ1bGUpIHsKKyAgICAgICAgb3JkZXIgPSBudWxsOworICAgICAgICBsYXN0UnVsZSA9IHJ1bGU7CisgICAgICAgIHJ1bGVzLnB1dChydWxlLnZhbHVlLCBydWxlKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgYWRkV2VpZ2h0KFN0cmluZyB3ZWlnaHQpIHsKKyAgICAgICAgaWYgKHdlaWdodC5sZW5ndGgoKSA+IDEpIHsKKyAgICAgICAgICAgIC8vY2hlY2sgdG8gc2VlIGlmIGl0J3MgYSBib2d1cyB3ZWlnaHQgc3ltYm9sLgorICAgICAgICAgICAgd2VpZ2h0ID0gbWFwLm1hcEtleSh3ZWlnaHQpOworICAgICAgICB9CisgICAgICAgIG9yZGVyID0gbnVsbDsKKyAgICAgICAgbGFzdFJ1bGUuYWRkV2VpZ2h0KHdlaWdodCk7CisgICAgfQorCisgICAgcHVibGljIEVudW1lcmF0aW9uIGdldFJ1bGVzKCkgeworICAgICAgICByZXR1cm4gcnVsZXMuZWxlbWVudHMoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgU29ydGVkVmVjdG9yIGdldFNvcnRPcmRlcigpIHsKKyAgICAgICAgaWYgKG9yZGVyID09IG51bGwpIHsKKyAgICAgICAgICAgIG9yZGVyID0gbmV3IFNvcnRlZFZlY3RvcigKKyAgICAgICAgICAgICAgICBuZXcgQ29tcGFyYXRvcigpIHsKKyAgICAgICAgICAgICAgICAgICAgcHVibGljIGludCBjb21wYXJlKGZpbmFsIE9iamVjdCBpLCBmaW5hbCBPYmplY3QgaikgeworICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgQ29sbGF0aW9uUnVsZSBvMSA9IChDb2xsYXRpb25SdWxlKWk7CisgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBDb2xsYXRpb25SdWxlIG8yID0gKENvbGxhdGlvblJ1bGUpajsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gdzEgPSBvMS5pc1dlaWdodFN5bWJvbCgpICE9IG51bGw7CisgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBib29sZWFuIHcyID0gbzIuaXNXZWlnaHRTeW1ib2woKSAhPSBudWxsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vc29ydCB3ZWlnaHRzIGZpcnN0CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodzEgJiYgIXcyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghdzEgJiYgdzIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8xLmNvbXBhcmUobzIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIG9yZGVyLmFkZEVsZW1lbnRzKHJ1bGVzLmVsZW1lbnRzKCkpOworICAgICAgICAgICAgICAgIC8vcmVtb3ZlIHdlaWdodCBzeW1ib2xzIGZyb20gdGhlIGxpc3QKKyAgICAgICAgICAgIGludCBpOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG9yZGVyLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgQ29sbGF0aW9uUnVsZSByID0gKENvbGxhdGlvblJ1bGUpb3JkZXIuZWxlbWVudEF0KGkpOworICAgICAgICAgICAgICAgIGlmIChyLmlzV2VpZ2h0U3ltYm9sKCkgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBvcmRlci5yZW1vdmVFbGVtZW50cygwLCBpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gb3JkZXI7CisgICAgfQorCisgICAgc3RhdGljIGZpbmFsIGNoYXJbXSBIRVhfRElHSVQgPSB7JzAnLCcxJywnMicsJzMnLCc0JywnNScsJzYnLCc3JywKKyAgICAgICAgICAgICAgICAgICAgICc4JywnOScsJ0EnLCdCJywnQycsJ0QnLCdFJywnRid9OworICAgIC8ve3tERUNMQVJFX0NPTlRST0xTCisJLy99fQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9Qb3NpeFRvTmV1dHJhbENvbnZlcnRlci5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9Qb3NpeFRvTmV1dHJhbENvbnZlcnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjZiYmIxNjgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL1Bvc2l4VG9OZXV0cmFsQ29udmVydGVyLmphdmEKQEAgLTAsMCArMSwxMjQ4IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMi0yMDA0LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL1Bvc2l4VG9OZXV0cmFsQ29udmVydGVyLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDIvMTYgMDM6MDU6MzEgJCAKKyAqICRSZXZpc2lvbjogMS4zICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudG9vbC5sb2NhbGVjb252ZXJ0ZXI7CitpbXBvcnQgY29tLmlibS5pY3UubGFuZy4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuKjsKK2ltcG9ydCBqYXZhLmlvLio7CitpbXBvcnQgamF2YS51dGlsLio7CisKK3B1YmxpYyBjbGFzcyBQb3NpeFRvTmV1dHJhbENvbnZlcnRlciBleHRlbmRzIExvY2FsZUNvbnZlcnRlciB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBieXRlIExDX0NUWVBFICAgICAgICAgICA9IDB4MDE7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBieXRlIExDX1RJTUUgICAgICAgICAgICA9IDB4MDI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBieXRlIExDX05VTUVSSUMgICAgICAgICA9IDB4MDQ7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBieXRlIExDX01PTkVUQVJZICAgICAgICA9IDB4MDg7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBieXRlIExDX01FU1NBR0VTICAgICAgICA9IDB4MTA7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBieXRlIExDX01FQVNVUkVNRU5UICAgICA9IDB4MTE7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBieXRlIExDX0FERFJFU1MgICAgICAgICA9IDB4MTI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBieXRlIExDX1BBUEVSICAgICAgICAgICA9IDB4MTM7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBieXRlIExDX05BTUUgICAgICAgICAgICA9IDB4MTQ7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBieXRlIExDX0lERU5USUZJQ0FUSU9OICA9IDB4MTU7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBieXRlIExDX1RFTEVQSE9ORSAgICAgICA9IDB4MTY7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvciBteVRyYW5zbGl0ID0gbmV3IEhleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yKCk7CisgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYnl0ZVtdIG1hc2tzID0geyAKKyAgICAgICAgTENfQ1RZUEUsIExDX1RJTUUsIExDX05VTUVSSUMsIExDX01PTkVUQVJZLCBMQ19NRVNTQUdFUywKKyAgICAgICAgTENfTUVBU1VSRU1FTlQsTENfQUREUkVTUyxMQ19QQVBFUixMQ19OQU1FLExDX0lERU5USUZJQ0FUSU9OLAorICAgICAgICBMQ19URUxFUEhPTkUKKyAgICAgICAgfTsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZ1tdW10gcHJvcHMgPSB7CisgICAgICAgIC8vTENfQ1RZUEUKKyAgICAgICAgeyAKKyAgICAgICAgICAgICJ1cHBlciIsICJsb3dlciIsICJhbHBoYSIsICJkaWdpdCIsICJzcGFjZSIsICJjbnRybCIsIAorICAgICAgICAgICAgInB1bmN0IiwgImdyYXBoIiwgInByaW50IiwgInhkaWdpdCIsICJibGFuayIsIAorICAgICAgICAgICAgInRvdXBwZXIiLCAidG9sb3dlciIgCisgICAgICAgIH0sCisgICAgICAgIC8vTENfVElNRQorICAgICAgICB7CisgICAgICAgICAgICAiYWJkYXkiLCAiZGF5IiwgImFibW9uIiwgIm1vbiIsICJkX3RfZm10IiwgImRfZnRtIiwgInRfZm10IiwgCisgICAgICAgICAgICAiYW1fcG0iLCAidF9mbXRfYW1wbSIsICJlcmEiLCAiZXJhX3llYXIiLCAiZXJhX2RfZm10IiwgImFsdF9kaWdpdHMiCisgICAgICAgIH0sCisgICAgICAgIC8vTENfTlVNRVJJQworICAgICAgICB7CisgICAgICAgICAgICAiZGVjaW1hbF9wb2ludCIsICJ0aG91c2FuZHNfc2VwIiwgImdyb3VwaW5nIgorICAgICAgICB9LAorICAgICAgICAvL0xDX01PTkVUQVJZCisgICAgICAgIHsKKyAgICAgICAgICAgICJpbnRfY3Vycl9zeW1ib2wiLCAiY3VycmVuY3lfc3ltYm9sIiwgIm1vbl9kZWNpbWFsX3BvaW50IiwKKyAgICAgICAgICAgICJtb25fdGhvdXNhbmRzX3NlcCIsICJtb25fZ3JvdXBpbmciLCAicG9zaXRpdmVfc2lnbiIsCisgICAgICAgICAgICAibmVnYXRpdmVfc2lnbiIsICJpbnRfZnJhY19kaWdpdHMiLCAiZnJhY19kaWdpdHMiLCAicF9jc19wcmVjZWRlcyIsCisgICAgICAgICAgICAicF9zZXBfYnlfc3BhY2UiLCAibl9jc19wcmVjZWRlcyIsICJuX3NlcF9ieV9zcGFjZSIsICJwX3NpZ25fcG9zbiIsCisgICAgICAgIH0sCisgICAgICAgIC8vTENfTUVTU0FHRVMKKyAgICAgICAgeworICAgICAgICAgICAgInllc2V4cHIiLCAibm9leHByIgorICAgICAgICB9LAorICAgICAgICAgICAKKyAgICAgICAgLy9MQ19NRUFTVVJFTUVOVAorICAgICAgICB7CisgICAgICAgICAgICJtZWFzdXJlbWVudCIKKyAgICAgICAgfSwKKyAgICAgICAgLy9MQ19BRERSRVNTCisgICAgICAgIHsKKyAgICAgICAgICAgImNvcHkiLCJwb3N0YWxfZm10IiwiY291bnRyeV9uYW1lIiwiY291bnRyeV9wb3N0IiwKKyAgICAgICAgICAgImNvdW50cnlfYWIyIiwiY291bnRyeV9hYjMiLCJjb3VudHJ5X251bSIsImNvdW50cnlfY2FyIiwKKyAgICAgICAgICAgImNvdW50cnlfaXNibiIsImxhbmdfbmFtZSIsImxhbmdfYWIiLCJsYW5nX3Rlcm0iLCJsYW5nX2xpYiIKKyAgICAgICAgICAgIAorICAgICAgICB9LAorICAgICAgICAvL0xDX1BBUEVSCisgICAgICAgIHsKKyAgICAgICAgICAgICJoZWlnaHQiLCJ3aWR0aCIsImNvcHkiCisgICAgICAgIH0sCisgICAgICAgIC8vTENfTkFNRSAgICAgICAgCisgICAgICAgIHsKKyAgICAgICAgICAgICJjb3B5IiwibmFtZV9mbXQiLCJuYW1lX2dlbiIsIm5hbWVfbWlzcyIsIm5hbWVfbXIiLCJuYW1lX21ycyIsIm5hbWVfbXMiICAKKyAgICAgICAgfSwKKyAgICAgICAgLy9MQ19JREVOVElGSUNBVElPTgorICAgICAgICB7CisgICAgICAgICAgICAidGl0bGUiLCJzb3VyY2UiLCJhZGRyZXNzIiwiY29udGFjdCIsImVtYWlsIiwidGVsIiwiZmF4IiwibGFuZ3VhZ2UiLAorICAgICAgICAgICAgInRlcnJpdG9yeSIsInJldmlzaW9uICIsImRhdGUiICAgICAKKyAgICAgICAgfSwKKyAgICAgICAgLy9MQ19URUxFUEhPTkUKKyAgICAgICAgeworICAgICAgICAgICAgImNvcHkiLCJ0ZWxfaW50X2ZtdCIsInRlbF9kb21fZm10IiwiaW50X3NlbGVjdCIsImludF9wcmVmaXgiIAorICAgICAgICB9LAorICAgICAgICAKKyAgICAgICAgICAgIAorICAgIH07CisgICAgcHJpdmF0ZSBmaW5hbCBieXRlIGZsYWdzOworICAgIHByaXZhdGUgZmluYWwgTG9jYWxlIGxvY2FsZTsKKyAgICBwcml2YXRlIGZpbmFsIExvY2FsZSBwYXJlbnRMb2NhbGU7CisgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgc2ZpbGVOYW1lOworICAgIHB1YmxpYyBQb3NpeFRvTmV1dHJhbENvbnZlcnRlcihieXRlIGZsYWdzLCBmaW5hbCBMb2NhbGUgbG9jYWxlLGZpbmFsIFN0cmluZyBmaWxlTmFtZSkgeworICAgICAgICB0aGlzLmZsYWdzID0gZmxhZ3M7CisgICAgICAgIHRoaXMubG9jYWxlID0gbG9jYWxlOworICAgICAgICB0aGlzLnNmaWxlTmFtZT1maWxlTmFtZTsKKyAgICAgICAgbXlUcmFuc2xpdC5hcHBseVBhdHRlcm4oIjxVIyMjMD4iKTsKKyAgICAgICAgU3RyaW5nIGxhbmd1YWdlID0gbG9jYWxlLmdldExhbmd1YWdlKCk7CisgICAgICAgIFN0cmluZyBjb3VudHJ5ID0gbG9jYWxlLmdldENvdW50cnkoKTsKKyAgICAgICAgU3RyaW5nIHZhcmlhbnQgPSAiIjsKKyAgICAgICAgCisgICAgICAgIGludCBuZHggPSBsYW5ndWFnZS5pbmRleE9mKCdfJyk7CisgICAgICAgIGlmIChuZHggPj0gMCkgeworICAgICAgICAgICAgY291bnRyeSA9IGxhbmd1YWdlLnN1YnN0cmluZyhuZHgrMSk7CisgICAgICAgICAgICBsYW5ndWFnZSA9IGxhbmd1YWdlLnN1YnN0cmluZygwLCBuZHgpOworICAgICAgICB9CisgICAgICAgIG5keCA9IGNvdW50cnkuaW5kZXhPZignXycpOworICAgICAgICBpZiAobmR4ID49IDApIHsKKyAgICAgICAgICAgIHZhcmlhbnQgPSBjb3VudHJ5LnN1YnN0cmluZyhuZHgpOworICAgICAgICAgICAgY291bnRyeSA9IGNvdW50cnkuc3Vic3RyaW5nKDAsIG5keCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmICgiIi5lcXVhbHMoY291bnRyeSkpIHsKKyAgICAgICAgICAgIGxhbmd1YWdlID0gIiI7CisgICAgICAgICAgICB2YXJpYW50ID0gIiI7CisgICAgICAgIH0gZWxzZSBpZiAoIiIuZXF1YWxzKHZhcmlhbnQpKSB7CisgICAgICAgICAgICBjb3VudHJ5ID0gIiI7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHBhcmVudExvY2FsZSA9IG5ldyBMb2NhbGUobGFuZ3VhZ2UsIGNvdW50cnksIHZhcmlhbnQpOworICAgICAgICAgICAgLy97e0lOSVRfQ09OVFJPTFMKKwkJLy99fQorICAgIH0KKworICAgIHByb3RlY3RlZCB2b2lkIGNvbnZlcnQoZmluYWwgSGFzaHRhYmxlIHJlc3VsdCwgZmluYWwgSGFzaHRhYmxlIHNvdXJjZSkgCisgICAgICAgICAgICB0aHJvd3MgQ29udmVyc2lvbkVycm9yIHsKKy8vICAgICAgICBjb252ZXJ0TUVTU0FHRVMocmVzdWx0LHNvdXJjZSk7CisgICAgICAgIHdyaXRlUG9zaXhDb21wRGF0YShyZXN1bHQsc291cmNlKTsKKyAgICAgICAgY29udmVydE1FQVNVUkVNRU5UKHJlc3VsdCwgc291cmNlKTsKKyAgICAgICAgY29udmVydENPVU5UUllOVU1CRVIocmVzdWx0LCBzb3VyY2UpOworICAgICAgICBjb252ZXJ0Q09VTlRSWUlTQk5OVU1CRVIocmVzdWx0LCBzb3VyY2UpOworICAgICAgICBjb252ZXJ0TEFOR1VBR0VMSUIocmVzdWx0LCBzb3VyY2UpOworICAgICAgICBjb252ZXJ0UEFQRVJTSVpFKHJlc3VsdCwgc291cmNlKTsKKyAgICAgICAgY29udmVydE1PTkVUQVJZKHJlc3VsdCwgc291cmNlKTsKKyAgICAgICAgY29udmVydE5VTUVSSUMocmVzdWx0LCBzb3VyY2UpOworICAgICAgICBjb252ZXJ0VElNRShyZXN1bHQsIHNvdXJjZSk7CisgICAgICAgIGNvbnZlcnRDT0xMQVRFKHJlc3VsdCwgc291cmNlKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtYXNrcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgaWYgKChmbGFncyAmIG1hc2tzW2ldKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBwcm9wc1tpXS5sZW5ndGg7IGorKykgeworICAgICAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgcHJvcCA9IHByb3BzW2ldW2pdOworICAgICAgICAgICAgICAgICAgICBmaW5hbCBPYmplY3QgdmFsID0gc291cmNlLmdldChwcm9wKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZhbCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRQdXQocmVzdWx0LCBwcm9wLCB2YWwpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHB1YmxpYyBTdHJpbmdbXVtdIGNsb25lMkRBcnIoU3RyaW5nW11bXXN0cjJEYXJyYXkpeworICAgICAgICBTdHJpbmdbXVtdIG5ld1N0cjJEQXJyID0gbmV3IFN0cmluZ1tzdHIyRGFycmF5Lmxlbmd0aF1bc3RyMkRhcnJheVswXS5sZW5ndGhdOyAKKyAgICAgICAgZm9yKGludCBpPTA7IGk8c3RyMkRhcnJheS5sZW5ndGg7aSsrKXsKKyAgICAgICAgICAgIGZvcihpbnQgaj0wOyBqPHN0cjJEYXJyYXlbaV0ubGVuZ3RoO2orKyl7CisgICAgICAgICAgICAgICAgbmV3U3RyMkRBcnJbaV1bal0gPSBuZXcgU3RyaW5nKHN0cjJEYXJyYXlbaV1bal0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBuZXdTdHIyREFycjsgICAgICAgICAgIAorICAgIH0KKyAgICBwdWJsaWMgT2JqZWN0W11bXSBjbG9uZTJEQXJyKE9iamVjdFtdW11zdHIyRGFycmF5KXsKKyAgICAgICAgT2JqZWN0W11bXSBuZXdTdHIyREFyciA9IG5ldyBPYmplY3Rbc3RyMkRhcnJheS5sZW5ndGhdW3N0cjJEYXJyYXlbMF0ubGVuZ3RoXTsgCisgICAgICAgIGZvcihpbnQgaT0wOyBpPHN0cjJEYXJyYXkubGVuZ3RoO2krKyl7CisgICAgICAgICAgICBmb3IoaW50IGo9MDsgajxzdHIyRGFycmF5W2ldLmxlbmd0aDtqKyspeworICAgICAgICAgICAgICAgIG5ld1N0cjJEQXJyW2ldW2pdID0gKE9iamVjdCkobmV3IFN0cmluZygoU3RyaW5nKXN0cjJEYXJyYXlbaV1bal0pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbmV3U3RyMkRBcnI7ICAgICAgICAgICAKKyAgICB9CisgICAgcHVibGljIHZvaWQgd3JpdGVQb3NpeENvbXBEYXRhKGZpbmFsIEhhc2h0YWJsZSByZXN1bHQsIGZpbmFsIEhhc2h0YWJsZSBzb3VyY2UpeyAgICAgICAgCisgICAgICAgICAgIAorCisgICAgICAgICAgICBjbGFzcyBEdW1wUG9zaXhEYXRheworICAgICAgICAgICAgICAgICAgICBGaWxlT3V0cHV0U3RyZWFtIG91dEZpbGU7CisgICAgICAgICAgICAgICAgICAgIElDVUxvY2FsZVdyaXRlciBteUxvY2FsZVdyaXRlcjsKKyAgICAgICAgICAgICAgICAgICAgcHVibGljIER1bXBQb3NpeERhdGEoU3RyaW5nIGZpbGVOYW1lKXsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRGaWxlID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oZmlsZU5hbWUuY29uY2F0KCJfUENELnR4dCIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBteUxvY2FsZVdyaXRlcj1uZXcgSUNVTG9jYWxlV3JpdGVyKG5ldyBQcmludFN0cmVhbSgoT3V0cHV0U3RyZWFtKW91dEZpbGUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoKGphdmEuaW8uSU9FeGNlcHRpb24gZSl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJGaWxlIG5vdCBmb3VuZFxuXG5cbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gCisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIHByaXZhdGUgdm9pZCB3cml0ZVBvc2l4Q29tcERhdGEoZmluYWwgSGFzaHRhYmxlIHJlc3VsdEhhc2gsIGZpbmFsIEhhc2h0YWJsZSBzb3VyY2UsIFN0cmluZyBmaWxlTmFtZSl7CisgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0TUVTU0FHRVMocmVzdWx0SGFzaCxzb3VyY2UpOworICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydElERU5USUZJQ0FUSU9OKHJlc3VsdEhhc2gsc291cmNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnROQU1FRk9STUFUKHJlc3VsdEhhc2gsc291cmNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRBRERSRVNTRk9STUFUKHJlc3VsdEhhc2gsc291cmNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRURUxFUEhPTkVGT1JNQVQocmVzdWx0SGFzaCxzb3VyY2UpOworICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGV1cm9WYXIgPSBsb2NhbGUuZ2V0VmFyaWFudCgpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYoZXVyb1Zhci5lcXVhbHMoIiIpKXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBldXJvVmFyID0gIlBDRCI7CisgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBldXJvVmFyPWV1cm9WYXIuY29uY2F0KCJfUENEIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIExvY2FsZSBteUxvY2FsZSA9IG5ldyBMb2NhbGUobG9jYWxlLmdldExhbmd1YWdlKCksbG9jYWxlLmdldENvdW50cnkoKSxldXJvVmFyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG15TG9jYWxlV3JpdGVyLndyaXRlKG15TG9jYWxlLCByZXN1bHRIYXNoKTsgIAorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBwcml2YXRlIHZvaWQgY29udmVydE1FU1NBR0VTKGZpbmFsIEhhc2h0YWJsZSByZXN1bHQsIGZpbmFsIEhhc2h0YWJsZSBzb3VyY2UpeworICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nW11bXURFRkFVTFRfTUVTU0FHRVMgPSAoU3RyaW5nW11bXSkgZ2V0RGVmYXVsdCgiTWVzc2FnZXMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZ1tdW10gbXlNZXNzYWdlcyA9IGNsb25lMkRBcnIoREVGQVVMVF9NRVNTQUdFUyk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9KFN0cmluZykgc291cmNlLmdldCgieWVzZXhwciIpOworICAgICAgICAgICAgICAgICAgICAgICAgUmVwbGFjZWFibGVTdHJpbmcgdGVtcCA9bmV3IFJlcGxhY2VhYmxlU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZih2YWx1ZSE9bnVsbCl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcC5yZXBsYWNlKDAsdGVtcC5sZW5ndGgoKSx2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlUcmFuc2xpdC50cmFuc2xpdGVyYXRlKHRlbXApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15TWVzc2FnZXNbMF1bMV0gPSB0ZW1wLnRvU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IChTdHJpbmcpIHNvdXJjZS5nZXQoIm5vZXhwciIpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYodmFsdWUgIT0gbnVsbCl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcC5yZXBsYWNlKDAsdGVtcC5sZW5ndGgoKSx2YWx1ZSk7IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15VHJhbnNsaXQudHJhbnNsaXRlcmF0ZSh0ZW1wKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBteU1lc3NhZ2VzWzFdWzFdID0gdGVtcC50b1N0cmluZygpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRQdXQocmVzdWx0LCJNZXNzYWdlcyIsbXlNZXNzYWdlcyk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcHJpdmF0ZSB2b2lkIGNvbnZlcnRJREVOVElGSUNBVElPTihmaW5hbCBIYXNodGFibGUgcmVzdWx0LCBmaW5hbCBIYXNodGFibGUgc291cmNlKXsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZ1tdW11ERUZBVUxUX01FU1NBR0VTID0gKFN0cmluZ1tdW10pIGdldERlZmF1bHQoIklkZW50aWZpY2F0aW9uIik7CisgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmdbXVtdIG15SWRlbnRpZmljYXRpb24gPSBjbG9uZTJEQXJyKERFRkFVTFRfTUVTU0FHRVMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHZhbHVlID0oU3RyaW5nKSBzb3VyY2UuZ2V0KCJ0aXRsZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgUmVwbGFjZWFibGVTdHJpbmcgdGVtcCA9bmV3IFJlcGxhY2VhYmxlU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZih2YWx1ZSE9bnVsbCl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcC5yZXBsYWNlKDAsdGVtcC5sZW5ndGgoKSx2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlUcmFuc2xpdC50cmFuc2xpdGVyYXRlKHRlbXApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15SWRlbnRpZmljYXRpb25bMF1bMV0gPSB0ZW1wLnRvU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IChTdHJpbmcpIHNvdXJjZS5nZXQoInNvdXJjZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYodmFsdWUgIT0gbnVsbCl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcC5yZXBsYWNlKDAsdGVtcC5sZW5ndGgoKSx2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlUcmFuc2xpdC50cmFuc2xpdGVyYXRlKHRlbXApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15SWRlbnRpZmljYXRpb25bMV1bMV0gPSB0ZW1wLnRvU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IChTdHJpbmcpIHNvdXJjZS5nZXQoImFkZHJlc3MiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKHZhbHVlICE9IG51bGwpeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAucmVwbGFjZSgwLHRlbXAubGVuZ3RoKCksdmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15VHJhbnNsaXQudHJhbnNsaXRlcmF0ZSh0ZW1wKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBteUlkZW50aWZpY2F0aW9uWzJdWzFdID0gdmFsdWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IChTdHJpbmcpIHNvdXJjZS5nZXQoImNvbnRhY3QiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKHZhbHVlICE9IG51bGwpeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAucmVwbGFjZSgwLHRlbXAubGVuZ3RoKCksdmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15VHJhbnNsaXQudHJhbnNsaXRlcmF0ZSh0ZW1wKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBteUlkZW50aWZpY2F0aW9uWzNdWzFdID0gdGVtcC50b1N0cmluZygpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSAoU3RyaW5nKSBzb3VyY2UuZ2V0KCJlbWFpbCIpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYodmFsdWUgIT0gbnVsbCl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcC5yZXBsYWNlKDAsdGVtcC5sZW5ndGgoKSx2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlUcmFuc2xpdC50cmFuc2xpdGVyYXRlKHRlbXApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15SWRlbnRpZmljYXRpb25bNF1bMV0gPSB0ZW1wLnRvU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IChTdHJpbmcpIHNvdXJjZS5nZXQoInRlbCIpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYodmFsdWUgIT0gbnVsbCl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcC5yZXBsYWNlKDAsdGVtcC5sZW5ndGgoKSx2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlUcmFuc2xpdC50cmFuc2xpdGVyYXRlKHRlbXApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15SWRlbnRpZmljYXRpb25bNV1bMV0gPSB0ZW1wLnRvU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gKFN0cmluZykgc291cmNlLmdldCgiZmF4Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZih2YWx1ZSAhPSBudWxsKXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLnJlcGxhY2UoMCx0ZW1wLmxlbmd0aCgpLHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBteVRyYW5zbGl0LnRyYW5zbGl0ZXJhdGUodGVtcCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlJZGVudGlmaWNhdGlvbls2XVsxXSA9IHRlbXAudG9TdHJpbmcoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gKFN0cmluZykgc291cmNlLmdldCgibGFuZ3VhZ2UiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKHZhbHVlICE9IG51bGwpeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAucmVwbGFjZSgwLHRlbXAubGVuZ3RoKCksdmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15VHJhbnNsaXQudHJhbnNsaXRlcmF0ZSh0ZW1wKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBteUlkZW50aWZpY2F0aW9uWzddWzFdID0gdGVtcC50b1N0cmluZygpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSAoU3RyaW5nKSBzb3VyY2UuZ2V0KCJ0ZXJyaXRvcnkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKHZhbHVlICE9IG51bGwpeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAucmVwbGFjZSgwLHRlbXAubGVuZ3RoKCksdmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15VHJhbnNsaXQudHJhbnNsaXRlcmF0ZSh0ZW1wKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBteUlkZW50aWZpY2F0aW9uWzhdWzFdID0gdGVtcC50b1N0cmluZygpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSAoU3RyaW5nKSBzb3VyY2UuZ2V0KCJhdWRpZW5jZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYodmFsdWUgIT0gbnVsbCl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcC5yZXBsYWNlKDAsdGVtcC5sZW5ndGgoKSx2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlUcmFuc2xpdC50cmFuc2xpdGVyYXRlKHRlbXApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15SWRlbnRpZmljYXRpb25bOV1bMV0gPSB0ZW1wLnRvU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gKFN0cmluZykgc291cmNlLmdldCgiYXBwbGljYXRpb24iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKHZhbHVlICE9IG51bGwpeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAucmVwbGFjZSgwLHRlbXAubGVuZ3RoKCksdmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15VHJhbnNsaXQudHJhbnNsaXRlcmF0ZSh0ZW1wKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBteUlkZW50aWZpY2F0aW9uWzEwXVsxXSA9IHRlbXAudG9TdHJpbmcoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gKFN0cmluZykgc291cmNlLmdldCgiYWJicmV2aWF0aW9uIik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZih2YWx1ZSAhPSBudWxsKXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLnJlcGxhY2UoMCx0ZW1wLmxlbmd0aCgpLHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBteVRyYW5zbGl0LnRyYW5zbGl0ZXJhdGUodGVtcCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlJZGVudGlmaWNhdGlvblsxMV1bMV0gPSB0ZW1wLnRvU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IChTdHJpbmcpIHNvdXJjZS5nZXQoInJldmlzaW9uIik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZih2YWx1ZSAhPSBudWxsKXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLnJlcGxhY2UoMCx0ZW1wLmxlbmd0aCgpLHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBteVRyYW5zbGl0LnRyYW5zbGl0ZXJhdGUodGVtcCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlJZGVudGlmaWNhdGlvblsxMl1bMV0gPSB0ZW1wLnRvU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IChTdHJpbmcpIHNvdXJjZS5nZXQoImRhdGUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKHZhbHVlICE9IG51bGwpeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAucmVwbGFjZSgwLHRlbXAubGVuZ3RoKCksdmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15VHJhbnNsaXQudHJhbnNsaXRlcmF0ZSh0ZW1wKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBteUlkZW50aWZpY2F0aW9uWzEzXVsxXSA9IHRlbXAudG9TdHJpbmcoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFB1dChyZXN1bHQsIklkZW50aWZpY2F0aW9uIixteUlkZW50aWZpY2F0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBwcml2YXRlIHZvaWQgY29udmVydE5BTUVGT1JNQVQoZmluYWwgSGFzaHRhYmxlIHJlc3VsdCwgZmluYWwgSGFzaHRhYmxlIHNvdXJjZSl7CisgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmdbXVtdREVGQVVMVF9NRVNTQUdFUyA9IChTdHJpbmdbXVtdKSBnZXREZWZhdWx0KCJOYW1lRm9ybWF0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmdbXVtdIG15TmFtZUZvcm1hdCA9IGNsb25lMkRBcnIoREVGQVVMVF9NRVNTQUdFUyk7CisgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgdmFsdWUgPShTdHJpbmcpIHNvdXJjZS5nZXQoIm5hbWVfbXIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlcGxhY2VhYmxlU3RyaW5nIHRlbXAgPW5ldyBSZXBsYWNlYWJsZVN0cmluZygpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYodmFsdWUgIT0gbnVsbCl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcC5yZXBsYWNlKDAsdGVtcC5sZW5ndGgoKSx2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlUcmFuc2xpdC50cmFuc2xpdGVyYXRlKHRlbXApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15TmFtZUZvcm1hdFsyXVsxXSA9IHRlbXAudG9TdHJpbmcoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gKFN0cmluZykgc291cmNlLmdldCgibmFtZV9taXNzIik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZih2YWx1ZSAhPSBudWxsKXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLnJlcGxhY2UoMCx0ZW1wLmxlbmd0aCgpLHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBteVRyYW5zbGl0LnRyYW5zbGl0ZXJhdGUodGVtcCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlOYW1lRm9ybWF0WzNdWzFdID0gdGVtcC50b1N0cmluZygpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSAoU3RyaW5nKSBzb3VyY2UuZ2V0KCJuYW1lX21zIik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZih2YWx1ZSAhPSBudWxsKXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLnJlcGxhY2UoMCx0ZW1wLmxlbmd0aCgpLHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBteVRyYW5zbGl0LnRyYW5zbGl0ZXJhdGUodGVtcCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlOYW1lRm9ybWF0WzZdWzFdID0gdGVtcC50b1N0cmluZygpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSAoU3RyaW5nKSBzb3VyY2UuZ2V0KCJuYW1lX21ycyIpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYodmFsdWUgIT0gbnVsbCl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcC5yZXBsYWNlKDAsdGVtcC5sZW5ndGgoKSx2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlUcmFuc2xpdC50cmFuc2xpdGVyYXRlKHRlbXApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15TmFtZUZvcm1hdFs0XVsxXSA9IHRlbXAudG9TdHJpbmcoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gKFN0cmluZykgc291cmNlLmdldCgibmFtZV9nZW5kZXIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKHZhbHVlICE9IG51bGwpeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAucmVwbGFjZSgwLHRlbXAubGVuZ3RoKCksdmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15VHJhbnNsaXQudHJhbnNsaXRlcmF0ZSh0ZW1wKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBteU5hbWVGb3JtYXRbMV1bMV0gPSB0ZW1wLnRvU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IChTdHJpbmcpIHNvdXJjZS5nZXQoIm5hbWVfZm10Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZih2YWx1ZSAhPSBudWxsKXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLnJlcGxhY2UoMCx0ZW1wLmxlbmd0aCgpLHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBteVRyYW5zbGl0LnRyYW5zbGl0ZXJhdGUodGVtcCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcltdIG15Q2hhcnM9IG5ldyBjaGFyWzEwMF07Ly8gPSB0ZW1wLnRvU3RyaW5nKCkuZ2V0Q2hhcnMoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLmdldENoYXJzKDAsdGVtcC5sZW5ndGgoKSxteUNoYXJzLDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ0J1ZmZlciBteVN0cmluZz1uZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGkgPTA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG97CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG15Q2hhcnNbaV0hPSclJyl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteVN0cmluZy5hcHBlbmQobXlDaGFyc1tpXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpKys7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobXlDaGFyc1tpXSl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZicgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteVN0cmluZy5hcHBlbmQgKCJ7MH0iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnRicgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteVN0cmluZy5hcHBlbmQoInsxfSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdnJyA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15U3RyaW5nLmFwcGVuZCgiezJ9Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0cnIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlTdHJpbmcuYXBwZW5kKCJ7M30iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbCcgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteVN0cmluZy5hcHBlbmQoICJ7NH0iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbycgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteVN0cmluZy5hcHBlbmQoIns1fSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtJyA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15U3RyaW5nLmFwcGVuZCgiezZ9Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ00nIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlTdHJpbmcuYXBwZW5kKCJ7N30iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncCcgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteVN0cmluZy5hcHBlbmQoIns4fSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlTdHJpbmcuYXBwZW5kICgiezl9Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1MnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteVN0cmluZy5hcHBlbmQgKCJ7MTB9Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2QnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteVN0cmluZy5hcHBlbmQgKCJ7MTF9Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3QnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteVN0cmluZy5hcHBlbmQgKCJ7MTJ9Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15U3RyaW5nLmFwcGVuZChteUNoYXJzW2ldKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpKys7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9d2hpbGUoaTx0ZW1wLmxlbmd0aCgpKTsgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15TmFtZUZvcm1hdFswXVsxXSA9IG15U3RyaW5nLnRvU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0UHV0KHJlc3VsdCwiTmFtZUZvcm1hdCIsbXlOYW1lRm9ybWF0KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBwcml2YXRlIHZvaWQgY29udmVydEFERFJFU1NGT1JNQVQoZmluYWwgSGFzaHRhYmxlIHJlc3VsdCwgZmluYWwgSGFzaHRhYmxlIHNvdXJjZSl7CisgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmdbXVtdREVGQVVMVF9NRVNTQUdFUyA9IChTdHJpbmdbXVtdKSBnZXREZWZhdWx0KCJBZGRyZXNzRm9ybWF0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmdbXVtdIG15QWRkcmVzc0Zvcm1hdCA9KCBjbG9uZTJEQXJyKERFRkFVTFRfTUVTU0FHRVMpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9KFN0cmluZykgc291cmNlLmdldCgicG9zdGFsX2ZtdCIpOworICAgICAgICAgICAgICAgICAgICAgICAgUmVwbGFjZWFibGVTdHJpbmcgdGVtcCA9bmV3IFJlcGxhY2VhYmxlU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZih2YWx1ZSAhPSBudWxsKXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLnJlcGxhY2UoMCx0ZW1wLmxlbmd0aCgpLHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBteVRyYW5zbGl0LnRyYW5zbGl0ZXJhdGUodGVtcCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcltdIG15Q2hhcnM9IG5ldyBjaGFyWzEwMF07Ly8gPSB0ZW1wLnRvU3RyaW5nKCkuZ2V0Q2hhcnMoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLmdldENoYXJzKDAsdGVtcC5sZW5ndGgoKSxteUNoYXJzLDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ0J1ZmZlciBteVN0cmluZz1uZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGkgPTA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG97CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG15Q2hhcnNbaV0hPSclJyl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteVN0cmluZy5hcHBlbmQobXlDaGFyc1tpXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpKys7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobXlDaGFyc1tpXSl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYScgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteVN0cmluZy5hcHBlbmQgKCJ7MH0iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZicgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteVN0cmluZy5hcHBlbmQoInsxfSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdkJyA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15U3RyaW5nLmFwcGVuZCgiezJ9Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2InIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlTdHJpbmcuYXBwZW5kKCJ7M30iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncycgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteVN0cmluZy5hcHBlbmQoICJ7NH0iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaCcgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteVN0cmluZy5hcHBlbmQoIns1fSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdOJyA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15U3RyaW5nLmFwcGVuZCgiezZ9Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3QnIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlTdHJpbmcuYXBwZW5kKCJ7MTN9Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3InIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlTdHJpbmcuYXBwZW5kKCJ7N30iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZSc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15U3RyaW5nLmFwcGVuZCAoIns4fSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdDJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlTdHJpbmcuYXBwZW5kICgiezl9Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1onOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteVN0cmluZy5hcHBlbmQgKCJ7MTB9Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1QnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteVN0cmluZy5hcHBlbmQgKCJ7MTF9Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3onOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteVN0cmluZy5hcHBlbmQgKCJ7MTJ9Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2MnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteVN0cmluZy5hcHBlbmQgKCJ7MTR9Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15U3RyaW5nLmFwcGVuZChteUNoYXJzW2ldKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpKys7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfXdoaWxlKGk8dGVtcC5sZW5ndGgoKSk7ICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlBZGRyZXNzRm9ybWF0WzBdWzFdID0gbXlTdHJpbmcudG9TdHJpbmcoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRQdXQocmVzdWx0LCJBZGRyZXNzRm9ybWF0IixteUFkZHJlc3NGb3JtYXQpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHByaXZhdGUgdm9pZCBjb252ZXJ0VEVMRVBIT05FRk9STUFUKGZpbmFsIEhhc2h0YWJsZSByZXN1bHQsIGZpbmFsIEhhc2h0YWJsZSBzb3VyY2UpeworICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nW11bXURFRkFVTFRfTUVTU0FHRVMgPSAoU3RyaW5nW11bXSkgZ2V0RGVmYXVsdCgiVGVsZXBob25lRm9ybWF0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmdbXVtdIG15VGVsZXBob25lRm9ybWF0ID0gY2xvbmUyREFycihERUZBVUxUX01FU1NBR0VTKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9KFN0cmluZykgc291cmNlLmdldCgidGVsX2ludF9mbXQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlcGxhY2VhYmxlU3RyaW5nIHRlbXAgPW5ldyBSZXBsYWNlYWJsZVN0cmluZygpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYodmFsdWUgIT0gbnVsbCl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcC5yZXBsYWNlKDAsdGVtcC5sZW5ndGgoKSx2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlUcmFuc2xpdC50cmFuc2xpdGVyYXRlKHRlbXApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJbXSBteUNoYXJzPSBuZXcgY2hhclsxMDBdOy8vID0gdGVtcC50b1N0cmluZygpLmdldENoYXJzKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcC5nZXRDaGFycygwLHRlbXAubGVuZ3RoKCksbXlDaGFycywwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdCdWZmZXIgbXlTdHJpbmc9bmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpID0wOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRveworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihteUNoYXJzW2ldIT0nJScpeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlTdHJpbmcuYXBwZW5kKG15Q2hhcnNbaV0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSsrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpKys7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG15Q2hhcnNbaV0peworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2EnIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlTdHJpbmcuYXBwZW5kICgiezB9Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0EnIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlTdHJpbmcuYXBwZW5kKCJ7MX0iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbCcgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteVN0cmluZy5hcHBlbmQoInsyfSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjJyA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15U3RyaW5nLmFwcGVuZCgiezN9Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0MnIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlTdHJpbmcuYXBwZW5kKCAiezR9Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15U3RyaW5nLmFwcGVuZChteUNoYXJzW2ldKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpKys7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfXdoaWxlKGk8dGVtcC5sZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlUZWxlcGhvbmVGb3JtYXRbMF1bMV0gPSBteVN0cmluZy50b1N0cmluZygpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSAoU3RyaW5nKSBzb3VyY2UuZ2V0KCJkb21fZm10Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZih2YWx1ZSAhPSBudWxsKXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLnJlcGxhY2UoMCx0ZW1wLmxlbmd0aCgpLHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBteVRyYW5zbGl0LnRyYW5zbGl0ZXJhdGUodGVtcCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcltdIG15Q2hhcnM9IG5ldyBjaGFyWzEwMF07Ly8gPSB0ZW1wLnRvU3RyaW5nKCkuZ2V0Q2hhcnMoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLmdldENoYXJzKDAsdGVtcC5sZW5ndGgoKSxteUNoYXJzLDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ0J1ZmZlciBteVN0cmluZz1uZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGkgPTA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRveworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihteUNoYXJzW2ldIT0nJScpeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlTdHJpbmcuYXBwZW5kKG15Q2hhcnNbaV0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSsrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpKys7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG15Q2hhcnNbaV0peworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2EnIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlTdHJpbmcuYXBwZW5kICgiezB9Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0EnIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlTdHJpbmcuYXBwZW5kKCJ7MX0iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbCcgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteVN0cmluZy5hcHBlbmQoInsyfSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjJyA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15U3RyaW5nLmFwcGVuZCgiezN9Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0MnIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlTdHJpbmcuYXBwZW5kKCAiezR9Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15U3RyaW5nLmFwcGVuZChteUNoYXJzW2ldKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpKys7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfXdoaWxlKGk8dGVtcC5sZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlUZWxlcGhvbmVGb3JtYXRbMV1bMV0gPSBteVN0cmluZy50b1N0cmluZygpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSAoU3RyaW5nKSBzb3VyY2UuZ2V0KCJpbnRfc2VsZWN0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZih2YWx1ZSAhPSBudWxsKXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLnJlcGxhY2UoMCx0ZW1wLmxlbmd0aCgpLHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBteVRyYW5zbGl0LnRyYW5zbGl0ZXJhdGUodGVtcCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlUZWxlcGhvbmVGb3JtYXRbMl1bMV0gPSB0ZW1wLnRvU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IChTdHJpbmcpIHNvdXJjZS5nZXQoImludF9wcmVmaXgiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKHZhbHVlICE9IG51bGwpeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAucmVwbGFjZSgwLHRlbXAubGVuZ3RoKCksdmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15VHJhbnNsaXQudHJhbnNsaXRlcmF0ZSh0ZW1wKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBteVRlbGVwaG9uZUZvcm1hdFszXVsxXSA9IHRlbXAudG9TdHJpbmcoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRQdXQocmVzdWx0LCJUZWxlcGhvbmVGb3JtYXQiLG15VGVsZXBob25lRm9ybWF0KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBEdW1wUG9zaXhEYXRhIHAgPSBuZXcgRHVtcFBvc2l4RGF0YShzZmlsZU5hbWUpOworICAgICAgICAgICAgSGFzaHRhYmxlIG15cmVzdWx0ID0gbmV3IEhhc2h0YWJsZSgyMCk7CisgICAgICAgICAgICBwLndyaXRlUG9zaXhDb21wRGF0YShteXJlc3VsdCxzb3VyY2Usc2ZpbGVOYW1lKTsKKyAgICB9CisgICAgcHJpdmF0ZSB2b2lkIGNvbnZlcnRNT05FVEFSWShmaW5hbCBIYXNodGFibGUgcmVzdWx0LCBmaW5hbCBIYXNodGFibGUgc291cmNlKSB7CisgICAgICAgIGZpbmFsIFN0cmluZ1tdIERFRkFVTFRfQ1VSUkVOQ1lfRUxFTUVOVFMgPSAoU3RyaW5nW10pZ2V0RGVmYXVsdCgiQ3VycmVuY3lFbGVtZW50cyIpOworICAgICAgICBmaW5hbCBTdHJpbmdbXSBlbGVtZW50cyA9IChTdHJpbmdbXSlERUZBVUxUX0NVUlJFTkNZX0VMRU1FTlRTLmNsb25lKCk7CisgICAgICAgIFN0cmluZyB2YWx1ZSA9IChTdHJpbmcpc291cmNlLmdldCgiY3VycmVuY3lfc3ltYm9sIik7CisgICAgICAgIC8vUmVwbGFjZWFibGUgdGVtcCA9IG5ldyBSZXBsYWNlYWJsZSh2YWx1ZSk7CisgICAgICAgCisgICAgICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7CisgICAgICAgICAgICBteVRyYW5zbGl0LnRyYW5zbGl0ZXJhdGUobmV3IFJlcGxhY2VhYmxlU3RyaW5nKHZhbHVlKSk7CisgICAgICAgICAgICBlbGVtZW50c1swXSA9IHZhbHVlOworICAgICAgICB9CisgICAgICAgIHZhbHVlID0gKFN0cmluZylzb3VyY2UuZ2V0KCJpbnRfY3Vycl9zeW1ib2wiKTsKKyAgICAgICAgaWYgKHZhbHVlICE9IG51bGwpIHsKKyAgICAgICAgICAgICBteVRyYW5zbGl0LnRyYW5zbGl0ZXJhdGUobmV3IFJlcGxhY2VhYmxlU3RyaW5nKHZhbHVlKSk7CisgICAgICAgICAgICBlbGVtZW50c1sxXSA9IHZhbHVlOworICAgICAgICB9CisgICAgICAgIHZhbHVlID0gKFN0cmluZylzb3VyY2UuZ2V0KCJtb25fZGVjaW1hbF9wb2ludCIpOworICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCkgeworICAgICAgICAgICAgbXlUcmFuc2xpdC50cmFuc2xpdGVyYXRlKG5ldyBSZXBsYWNlYWJsZVN0cmluZyh2YWx1ZSkpOworICAgICAgICAgICAgZWxlbWVudHNbMl0gPSB2YWx1ZTsKKyAgICAgICAgfQorICAgICAgICByZXN1bHRQdXQocmVzdWx0LCAiQ3VycmVuY3lFbGVtZW50cyIsIGVsZW1lbnRzKTsKKyAgICB9CisgICAgCisKKyAgICBwcml2YXRlIHZvaWQgY29udmVydE1FQVNVUkVNRU5UKGZpbmFsIEhhc2h0YWJsZSByZXN1bHQsIGZpbmFsIEhhc2h0YWJsZSBzb3VyY2UpeworICAgICAgICBmaW5hbCBTdHJpbmcgREVGQVVMVF9NRUFTVVJFTUVOVCA9KFN0cmluZylnZXREZWZhdWx0KCJNZWFzdXJlbWVudCIpOworICAgICAgICBTdHJpbmcgZWxlbWVudHMgPSAoU3RyaW5nKURFRkFVTFRfTUVBU1VSRU1FTlQ7CisgICAgICAgIFN0cmluZyB2YWx1ZSA9KFN0cmluZykgc291cmNlLmdldCgibWVhc3VyZW1lbnQiKTsKKyAgICAgICAgaWYodmFsdWUhPW51bGwpeworICAgICAgICAgICAgaWYodmFsdWUuZXF1YWxzKCIxIikpCisgICAgICAgICAgICAgICAgZWxlbWVudHMgPSAiTWV0cmljIjsKKyAgICAgICAgICAgIGVsc2UgaWYodmFsdWUuZXF1YWxzKCIyIikpCisgICAgICAgICAgICAgICAgZWxlbWVudHMgPSAiQW1lcmljYW4iOworICAgICAgICAgICAgZWxzZSBpZih2YWx1ZS5lcXVhbHMoIjMiKSkKKyAgICAgICAgICAgICAgICBlbGVtZW50cyA9ICJPdGhlciI7CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0UHV0KHJlc3VsdCwiTWVhc3VyZW1lbnQiLGVsZW1lbnRzKTsKKyAgICB9CisgICAgcHJpdmF0ZSB2b2lkIGNvbnZlcnRDT1VOVFJZTlVNQkVSIChmaW5hbCBIYXNodGFibGUgcmVzdWx0LCBmaW5hbCBIYXNodGFibGUgc291cmNlKXsKKyAgICAgICAgZmluYWwgU3RyaW5nIERFRkFVTFRfQ09VTlRSWU5VTUJFUiA9KFN0cmluZylnZXREZWZhdWx0KCJDb3VudHJ5TnVtYmVyIik7CisgICAgICAgIFN0cmluZyBlbGVtZW50cyA9IChTdHJpbmcpREVGQVVMVF9DT1VOVFJZTlVNQkVSOworICAgICAgICBTdHJpbmcgdmFsdWUgPShTdHJpbmcpIHNvdXJjZS5nZXQoImNvdW50cnlfbnVtIik7CisgICAgICAgIGlmKHZhbHVlIT1udWxsKXsKKyAgICAgICAgICAgIGVsZW1lbnRzID0gdmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0UHV0KHJlc3VsdCwiQ291bnRyeU51bWJlciIsZWxlbWVudHMpOworICAgIH0KKyAgICBwcml2YXRlIHZvaWQgY29udmVydENPVU5UUllJU0JOTlVNQkVSIChmaW5hbCBIYXNodGFibGUgcmVzdWx0LCBmaW5hbCBIYXNodGFibGUgc291cmNlKXsKKyAgICAgICAgZmluYWwgU3RyaW5nIERFRkFVTFRfQ09VTlRSWU5VTUJFUiA9KFN0cmluZylnZXREZWZhdWx0KCJDb3VudHJ5SVNCTk51bWJlciIpOworICAgICAgICBTdHJpbmcgZWxlbWVudHMgPSBuZXcgU3RyaW5nKChTdHJpbmcpREVGQVVMVF9DT1VOVFJZTlVNQkVSKTsKKyAgICAgICAgU3RyaW5nIHZhbHVlID0oU3RyaW5nKSBzb3VyY2UuZ2V0KCJjb3VudHJ5X251bSIpOworICAgICAgICBpZih2YWx1ZSE9bnVsbCl7CisgICAgICAgICAgICBlbGVtZW50cyA9IHZhbHVlOworICAgICAgICB9CisgICAgICAgIHJlc3VsdFB1dChyZXN1bHQsIkNvdW50cnlJU0JOTnVtYmVyIixlbGVtZW50cyk7CisgICAgfQorICAgIHByaXZhdGUgdm9pZCBjb252ZXJ0TEFOR1VBR0VMSUIgKGZpbmFsIEhhc2h0YWJsZSByZXN1bHQsIGZpbmFsIEhhc2h0YWJsZSBzb3VyY2UpeworICAgICAgICBmaW5hbCBTdHJpbmcgREVGQVVMVF9MQU5HVUFHRUxJQiA9KFN0cmluZylnZXREZWZhdWx0KCJMYW5ndWFnZUxpYnJhcnlVc2UiKTsKKyAgICAgICAgU3RyaW5nIGVsZW1lbnRzID1uZXcgU3RyaW5nKCAoU3RyaW5nKURFRkFVTFRfTEFOR1VBR0VMSUIpOworICAgICAgICBTdHJpbmcgdmFsdWUgPShTdHJpbmcpIHNvdXJjZS5nZXQoImxhbmdfbGliIik7CisgICAgICAgIGlmKHZhbHVlIT1udWxsKXsKKyAgICAgICAgICAgIGVsZW1lbnRzID0gdmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0UHV0KHJlc3VsdCwiTGFuZ3VhZ2VMaWJyYXJ5VXNlIixlbGVtZW50cyk7CisgICAgfQorICAgIHByaXZhdGUgdm9pZCBjb252ZXJ0UEFQRVJTSVpFIChmaW5hbCBIYXNodGFibGUgcmVzdWx0LCBmaW5hbCBIYXNodGFibGUgc291cmNlKXsKKyAgICAgICAgZmluYWwgU3RyaW5nW11bXSBERUZBVUxUX1BBUEVSU0laRT0oU3RyaW5nW11bXSkgZ2V0RGVmYXVsdCgiUGFwZXJTaXplIik7CisgICAgICAgIGZpbmFsIFN0cmluZ1tdW10gZWxlbWVudHM9Y2xvbmUyREFycihERUZBVUxUX1BBUEVSU0laRSk7CisgICAgICAgIFN0cmluZyB2YWx1ZT0oU3RyaW5nKSBzb3VyY2UuZ2V0KCJoZWlnaHQiKTsKKyAgICAgICAgaWYgKHZhbHVlIT1udWxsKXsKKyAgICAgICAgICAgIGVsZW1lbnRzWzBdWzFdPSB2YWx1ZTsKKyAgICAgICAgfQorICAgICAgICB2YWx1ZSA9ICAoU3RyaW5nKSBzb3VyY2UuZ2V0KCJ3aWR0aCIpOworICAgICAgICBpZih2YWx1ZSE9bnVsbCl7CisgICAgICAgICAgICBlbGVtZW50c1sxXVsxXSA9IHZhbHVlOworICAgICAgICB9CisgICAgICAgIGVsZW1lbnRzWzJdWzFdPShTdHJpbmcpIm1tIjsKKyAgICAgICAgCisgICAgICAgIHJlc3VsdFB1dChyZXN1bHQsIlBhcGVyU2l6ZSIsZWxlbWVudHMpOworICAgIH0KKyAgICAKKyAgIC8qIHByaXZhdGUgdm9pZCBjb252ZXJ0SURFTlRJRklDQVRJT04oZmluYWwgSGFzaHRhYmxlIHJlc3VsdCwgZmluYWwgSGFzaHRhYmxlIHNvdXJjZSl7CisgICAgICAgIGZpbmFsIFN0cmluZ1tdW11ERUZBVUxUX0lERU5USUZJQ0FUSU9OID0oU3RyaW5nW11bXSkgZ2V0RGVmYXVsdCgiSWRlbnRpZmljYXRpb24iKTsKKyAgICAgICAgZmluYWwgU3RyaW5nW11bXSBlbGVtZW50cyA9IChTdHJpbmdbXVtdKURFRkFVTFRfSURFTlRJRklDQVRJT04uY2xvYW5lKCk7CisgICAgICAgIAorICAgIH0qLworICAgIHByaXZhdGUgdm9pZCBjb252ZXJ0TlVNRVJJQyhmaW5hbCBIYXNodGFibGUgcmVzdWx0LCBmaW5hbCBIYXNodGFibGUgc291cmNlKSB7CisgICAgICAgIC8vQnVpbGQgTnVtYmVyRWxlbWVudHMgZGF0YSBhcnJheQorICAgICAgICBmaW5hbCBTdHJpbmdbXSBERUZBVUxUX05VTUJFUl9FTEVNRU5UUyA9IChTdHJpbmdbXSlnZXREZWZhdWx0KCJOdW1iZXJFbGVtZW50cyIpOworICAgICAgICAvL1NldCBuZXcgbnVtYmVyIGVsZW1lbnRzIHRvIGEgY29weSBvZiB0aGUgZGVmYXVsdCB2YWx1ZSBmcm9tIHRoZSBwYXJlbnQuCisgICAgICAgIGZpbmFsIFN0cmluZ1tdIGVsZW1lbnRzID0gKFN0cmluZ1tdKURFRkFVTFRfTlVNQkVSX0VMRU1FTlRTLmNsb25lKCk7CisgICAgICAgIC8vcHV0IGRlY2ltYWwgc2VwZXJhdG9yIGludG8gdGhlIE51bWJlckVsZW1lbnRzIGFycmF5CisgICAgICAgIFN0cmluZyBkZWNpbWFsUG9pbnQgPSAoU3RyaW5nKXNvdXJjZS5nZXQoImRlY2ltYWxfcG9pbnQiKTsKKyAgICAgICAgaWYgKGRlY2ltYWxQb2ludCAhPSBudWxsKSB7IC8vaWYgd2UgaGF2ZSBhIFBPU0lYIHZhbHVlLCBzdG9tcCBvbiB0aGUgZGVmYXVsdAorICAgICAgICAgICAgZWxlbWVudHNbMF0gPSBkZWNpbWFsUG9pbnQ7CisgICAgICAgIH0KKworICAgICAgICAvL3B1dCB0aG91c2FuZHMgc2VwZXJhdG9yIGludG8gdGhlIE51bWJlckVsZW1lbnRzIGFycmF5CisgICAgICAgIFN0cmluZyB0aG91c2FuZHNTZXAgPSAoU3RyaW5nKXNvdXJjZS5nZXQoInRob3VzYW5kc19zZXAiKTsKKyAgICAgICAgaWYgKHRob3VzYW5kc1NlcCAhPSBudWxsKSB7IC8vaWYgd2UgaGF2ZSBhIFBPU0lYIHZhbHVlLCBzdG9tcCBvbiB0aGUgZGVmYXVsdAorICAgICAgICAgICAgZWxlbWVudHNbMV0gPSB0aG91c2FuZHNTZXA7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vQWRkIE51bWJlckVsZW1lbnRzIHRvIHJlc3VsdAorICAgICAgICByZXN1bHRQdXQocmVzdWx0LCAiTnVtYmVyRWxlbWVudHMiLCBlbGVtZW50cyk7CisKKyAgICAgICAgLy91c2UgY2Fub25pY2FsIGRlY2ltYWwgYW5kIHRob3VzYW5kcyBzZXBlcmF0b3JzIGZvciBwYXR0ZXJucworICAgICAgICBkZWNpbWFsUG9pbnQgPSAiLiI7CisgICAgICAgIHRob3VzYW5kc1NlcCA9ICIsIjsKKyAgICAgICAgCisgICAgICAgIC8vTnVtYmVyUGF0dGVybnMKKyAgICAgICAgZmluYWwgU3RyaW5nW10gREVGQVVMVF9OVU1CRVJfUEFUVEVSTlMgPSAoU3RyaW5nW10pZ2V0RGVmYXVsdCgiTnVtYmVyUGF0dGVybnMiKTsKKyAgICAgICAgZmluYWwgU3RyaW5nW10gcGF0dGVybnMgPSAoU3RyaW5nW10pREVGQVVMVF9OVU1CRVJfUEFUVEVSTlMuY2xvbmUoKTsKKyAgICAgICAgCisgICAgICAgIGZpbmFsIFN0cmluZyBwYXR0ZXJuRGlnaXQgPSBlbGVtZW50c1s1XTsKKyAgICAgICAgZmluYWwgU3RyaW5nIHplcm9EaWdpdCA9IGVsZW1lbnRzWzRdOworICAgICAgICBmaW5hbCBTdHJpbmcgbmVnYXRpdmVTaWduID0gZWxlbWVudHNbNl07CisgICAgICAgIGZpbmFsIFN0cmluZyBwZXJjZW50U2lnbiA9IGVsZW1lbnRzWzNdOworICAgICAgICBTdHJpbmcgZ3JvdXBpbmdTdHJpbmc7CisgICAgICAgIE9iamVjdCBncm91cGluZ09iaiA9IHNvdXJjZS5nZXQoImdyb3VwaW5nIik7CisgICAgICAgIGJvb2xlYW4gaXNTdHJBcnJheSA9IGdyb3VwaW5nT2JqIGluc3RhbmNlb2YgU3RyaW5nW107CisgICAgICAgIGlmIChpc1N0ckFycmF5KSB7CisgICAgICAgICAgICBncm91cGluZ1N0cmluZyA9ICgoU3RyaW5nW10pZ3JvdXBpbmdPYmopWzBdOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZ3JvdXBpbmdTdHJpbmcgPSAoU3RyaW5nKWdyb3VwaW5nT2JqOworICAgICAgICB9CisgICAgICAgIGlmIChncm91cGluZ1N0cmluZyA9PSBudWxsKSB7CisgICAgICAgICAgICBwYXR0ZXJuc1swXSA9IHJlcGxhY2UocGF0dGVybnNbMF0sIGVsZW1lbnRzWzBdLCAiPERFQ0lNQUw+Iik7CisgICAgICAgICAgICBwYXR0ZXJuc1swXSA9IHJlcGxhY2UocGF0dGVybnNbMF0sIGVsZW1lbnRzWzFdLCAiPFRIT1VTQU5EPiIpOworICAgICAgICAgICAgcGF0dGVybnNbMF0gPSByZXBsYWNlKHBhdHRlcm5zWzBdLCAiPERFQ0lNQUw+IiwgZGVjaW1hbFBvaW50KTsKKyAgICAgICAgICAgIHBhdHRlcm5zWzBdID0gcmVwbGFjZShwYXR0ZXJuc1swXSwgIjxUSE9VU0FORD4iLCB0aG91c2FuZHNTZXApOworCisgICAgICAgICAgICBwYXR0ZXJuc1syXSA9IHJlcGxhY2UocGF0dGVybnNbMl0sIGVsZW1lbnRzWzFdLCAiPFRIT1VTQU5EPiIpOworICAgICAgICAgICAgcGF0dGVybnNbMl0gPSByZXBsYWNlKHBhdHRlcm5zWzJdLCAiPFRIT1VTQU5EPiIsIHRob3VzYW5kc1NlcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmaW5hbCBpbnQgZ3JvdXBpbmcgPSBJbnRlZ2VyLnBhcnNlSW50KGdyb3VwaW5nU3RyaW5nKTsKKyAgICAgICAgICAgIC8vZm9yIGEgZ3JvdXBpbmcgb2YgNQorICAgICAgICAgICAgLy8jPHRob3VzYW5kc1NlcD4jIyMjMDxkZWNpbWFsUG9pbnQ+IyMjIyMKKyAgICAgICAgICAgIGZpbmFsIFN0cmluZ0J1ZmZlciBwYXR0ZXJuID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICAgICAgcGF0dGVybi5hcHBlbmQocGF0dGVybkRpZ2l0KTsKKyAgICAgICAgICAgIHBhdHRlcm4uYXBwZW5kKHRob3VzYW5kc1NlcCk7CisgICAgICAgICAgICBmb3IgKGludCBpID0gTWF0aC5tYXgoMSwgZ3JvdXBpbmcgLSAxKTsgaSA+IDA7IGktLSkgeworICAgICAgICAgICAgICAgIHBhdHRlcm4uYXBwZW5kKHBhdHRlcm5EaWdpdCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwYXR0ZXJuLmFwcGVuZCh6ZXJvRGlnaXQpOworICAgICAgICAgICAgcGF0dGVybi5hcHBlbmQoZGVjaW1hbFBvaW50KTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSBNYXRoLm1heCgxLCBncm91cGluZyAtIDEpOyBpID49IDA7IGktLSkgeworICAgICAgICAgICAgICAgIHBhdHRlcm4uYXBwZW5kKHBhdHRlcm5EaWdpdCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmaW5hbCBTdHJpbmcgcGF0dGVyblN0cmluZyA9IHBhdHRlcm4udG9TdHJpbmcoKTsKKyAgICAgICAgICAgIHBhdHRlcm5zWzBdID0gcGF0dGVyblN0cmluZyArICI7IiArIG5lZ2F0aXZlU2lnbiArIHBhdHRlcm5TdHJpbmc7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHBhdHRlcm4uc2V0TGVuZ3RoKDApOworICAgICAgICAgICAgcGF0dGVybi5hcHBlbmQocGF0dGVybkRpZ2l0KTsKKyAgICAgICAgICAgIHBhdHRlcm4uYXBwZW5kKHRob3VzYW5kc1NlcCk7CisgICAgICAgICAgICBmb3IgKGludCBpID0gTWF0aC5tYXgoMSwgZ3JvdXBpbmcgLSAxKTsgaSA+IDA7IGktLSkgeworICAgICAgICAgICAgICAgIHBhdHRlcm4uYXBwZW5kKHBhdHRlcm5EaWdpdCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwYXR0ZXJuLmFwcGVuZCh6ZXJvRGlnaXQpOworICAgICAgICAgICAgcGF0dGVybi5hcHBlbmQocGVyY2VudFNpZ24pOyAgICAgICAgICAgIAorICAgICAgICAgICAgcGF0dGVybnNbMl0gPSBwYXR0ZXJuLnRvU3RyaW5nKCk7CisKKyAgICAgICAgICAgIGZpbmFsIFN0cmluZ1tdIGN1cnJlbmN5RWxlbWVudHMgPSAoKFN0cmluZ1tdKWdldERlZmF1bHQoIkN1cnJlbmN5RWxlbWVudHMiKSk7CisgICAgICAgICAgICBTdHJpbmcgY3VycmVuY3lfc3ltYm9sID0gKFN0cmluZylzb3VyY2UuZ2V0KCJjdXJyZW5jeV9zeW1ib2wiKTsKKyAgICAgICAgICAgIGN1cnJlbmN5X3N5bWJvbCA9IChjdXJyZW5jeV9zeW1ib2wgIT0gbnVsbCkgPyBjdXJyZW5jeV9zeW1ib2wgOiAoU3RyaW5nKXNvdXJjZS5nZXQoImludF9jdXJyX3N5bWJvbCIpOworICAgICAgICAgICAgY3VycmVuY3lfc3ltYm9sID0gKGN1cnJlbmN5X3N5bWJvbCAhPSBudWxsKSA/IGN1cnJlbmN5X3N5bWJvbCA6ICIiOworICAgICAgICAgICAgCisgICAgICAgICAgICBTdHJpbmcgbW9uX2RlY2ltYWxfcG9pbnQgPSAoU3RyaW5nKXNvdXJjZS5nZXQoIm1vbl9kZWNpbWFsX3BvaW50Iik7CisgICAgICAgICAgICBtb25fZGVjaW1hbF9wb2ludCA9IChtb25fZGVjaW1hbF9wb2ludCAhPSBudWxsKSA/IG1vbl9kZWNpbWFsX3BvaW50IDogIiI7CisKKyAgICAgICAgICAgIFN0cmluZyBtb25fdGhvdXNhbmRzX3NlcCA9IChTdHJpbmcpc291cmNlLmdldCgibW9uX3Rob3VzYW5kc19zZXAiKTsKKyAgICAgICAgICAgIG1vbl90aG91c2FuZHNfc2VwID0gKG1vbl90aG91c2FuZHNfc2VwICE9IG51bGwpID8gbW9uX3Rob3VzYW5kc19zZXAgOiAiIjsKKworICAgICAgICAgICAgU3RyaW5nIG1vbl9ncm91cGluZ19zdHJpbmc7CisgICAgICAgICAgICBmaW5hbCBPYmplY3QgbW9uR3JvdXBpbmdPYmogPSBzb3VyY2UuZ2V0KCJtb25fZ3JvdXBpbmciKTsKKyAgICAgICAgICAgIGlmIChtb25Hcm91cGluZ09iaiBpbnN0YW5jZW9mIFN0cmluZ1tdKSB7CisgICAgICAgICAgICAgICAgbW9uX2dyb3VwaW5nX3N0cmluZyA9ICgoU3RyaW5nW10pbW9uR3JvdXBpbmdPYmopWzBdOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtb25fZ3JvdXBpbmdfc3RyaW5nID0gKFN0cmluZyltb25Hcm91cGluZ09iajsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZpbmFsIGludCBtb25fZ3JvdXBpbmcgPSAobW9uX2dyb3VwaW5nX3N0cmluZyA9PSBudWxsKSA/IGdyb3VwaW5nIDogSW50ZWdlci5wYXJzZUludChtb25fZ3JvdXBpbmdfc3RyaW5nKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZmluYWwgU3RyaW5nIGZyYWNfZGlnaXRzX3N0cmluZyA9IChTdHJpbmcpc291cmNlLmdldCgiZnJhY19kaWdpdHMiKTsKKyAgICAgICAgICAgIGZpbmFsIGludCBmcmFjX2RpZ2l0cyA9IChmcmFjX2RpZ2l0c19zdHJpbmcgPT0gbnVsbCkgPyBtb25fZ3JvdXBpbmcgOiBJbnRlZ2VyLnBhcnNlSW50KGZyYWNfZGlnaXRzX3N0cmluZyk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFN0cmluZyBwb3NpdGl2ZV9zaWduID0gKFN0cmluZylzb3VyY2UuZ2V0KCJwb3NpdGl2ZV9zaWduIik7CisgICAgICAgICAgICBwb3NpdGl2ZV9zaWduID0gKHBvc2l0aXZlX3NpZ24gIT0gbnVsbCkgPyBwb3NpdGl2ZV9zaWduIDogIiI7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFN0cmluZyBuZWdhdGl2ZV9zaWduID0gKFN0cmluZylzb3VyY2UuZ2V0KCJuZWdhdGl2ZV9zaWduIik7CisgICAgICAgICAgICBuZWdhdGl2ZV9zaWduID0gKG5lZ2F0aXZlX3NpZ24gIT0gbnVsbCkgPyBuZWdhdGl2ZV9zaWduIDogIiI7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFN0cmluZyBwX3NpZ25fcG9zbiA9IChTdHJpbmcpc291cmNlLmdldCgicF9zaWduX3Bvc24iKTsKKyAgICAgICAgICAgIHBfc2lnbl9wb3NuID0gKHBfc2lnbl9wb3NuICE9IG51bGwpID8gcF9zaWduX3Bvc24gOiAiIjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgU3RyaW5nIG5fc2lnbl9wb3NuID0gKFN0cmluZylzb3VyY2UuZ2V0KCJuX3NpZ25fcG9zbiIpOworICAgICAgICAgICAgbl9zaWduX3Bvc24gPSAobl9zaWduX3Bvc24gIT0gbnVsbCkgPyBuX3NpZ25fcG9zbiA6ICIiOworCisgICAgICAgICAgICBmaW5hbCBib29sZWFuIHBfY3NfcHJlY2VkZXMgPSAhIjAiLmVxdWFscyhzb3VyY2UuZ2V0KCJwX2NzX3ByZWNlZGVzIikpOworICAgICAgICAgICAgZmluYWwgU3RyaW5nIHBfc2VwX2J5X3NwYWNlID0gKFN0cmluZylzb3VyY2UuZ2V0KCJwX3NlcF9ieV9zcGFjZSIpOworICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBuX2NzX3ByZWNlZGVzID0gISIwIi5lcXVhbHMoc291cmNlLmdldCgibl9jc19wcmVjZWRlcyIpKTsKKyAgICAgICAgICAgIGZpbmFsIFN0cmluZyBuX3NlcF9ieV9zcGFjZSA9IChTdHJpbmcpc291cmNlLmdldCgibl9zZXBfYnlfc3BhY2UiKTsKKworICAgICAgICAgICAgcGF0dGVybi5zZXRMZW5ndGgoMCk7CisgICAgICAgICAgICAKKy8qICAgICAgICAgICAgCisgICAgICAgICAgICBwYXR0ZXJuc1sxXSA9CisgICAgICAgICAgICAgICAgY3JlYXRlUGF0dGVyblN0cmluZyhjdXJyZW5jeV9zeW1ib2wsIG1vbl9kZWNpbWFsX3BvaW50LCBtb25fdGhvdXNhbmRzX3NlcCwgbW9uX2dyb3VwaW5nLCBmcmFjX2RpZ2l0cywKKyAgICAgICAgICAgICAgICAgICAgcG9zaXRpdmVfc2lnbiwgcF9jc19wcmVjZWRlcywgcF9zZXBfYnlfc3BhY2UsIHBfc2lnbl9wb3NuLCBwYXR0ZXJuRGlnaXQsIHplcm9EaWdpdCkKKyAgICAgICAgICAgICAgICArICI7IgorICAgICAgICAgICAgICAgICsgY3JlYXRlUGF0dGVyblN0cmluZyhjdXJyZW5jeV9zeW1ib2wsIG1vbl9kZWNpbWFsX3BvaW50LCBtb25fdGhvdXNhbmRzX3NlcCwgbW9uX2dyb3VwaW5nLCBmcmFjX2RpZ2l0cywKKyAgICAgICAgICAgICAgICAgICAgbmVnYXRpdmVfc2lnbiwgbl9jc19wcmVjZWRlcywgbl9zZXBfYnlfc3BhY2UsIG5fc2lnbl9wb3NuLCBwYXR0ZXJuRGlnaXQsIHplcm9EaWdpdCk7CisqLworICAgICAgICAgICAgCisvKiAgICAgICAgICAgIHBhdHRlcm5zWzFdID0KKyAgICAgICAgICAgICAgICBjcmVhdGVQYXR0ZXJuU3RyaW5nKGN1cnJlbmN5X3N5bWJvbCwgIi4iLCAiLCIsIG1vbl9ncm91cGluZywgZnJhY19kaWdpdHMsCisgICAgICAgICAgICAgICAgICAgIHBvc2l0aXZlX3NpZ24sIHBfY3NfcHJlY2VkZXMsIHBfc2VwX2J5X3NwYWNlLCBwX3NpZ25fcG9zbiwgcGF0dGVybkRpZ2l0LCB6ZXJvRGlnaXQpCisgICAgICAgICAgICAgICAgKyAiOyIKKyAgICAgICAgICAgICAgICArIGNyZWF0ZVBhdHRlcm5TdHJpbmcoY3VycmVuY3lfc3ltYm9sLCAiLiIsICIsIiwgbW9uX2dyb3VwaW5nLCBmcmFjX2RpZ2l0cywKKyAgICAgICAgICAgICAgICAgICAgbmVnYXRpdmVfc2lnbiwgbl9jc19wcmVjZWRlcywgbl9zZXBfYnlfc3BhY2UsIG5fc2lnbl9wb3NuLCBwYXR0ZXJuRGlnaXQsIHplcm9EaWdpdCk7CisqLworICAgICAgICAgICAgcGF0dGVybnNbMV0gPQorICAgICAgICAgICAgICAgIGNyZWF0ZVBhdHRlcm5TdHJpbmcoIi4iLCAiLCIsIG1vbl9ncm91cGluZywgZnJhY19kaWdpdHMsCisgICAgICAgICAgICAgICAgICAgIHBvc2l0aXZlX3NpZ24sIHBfY3NfcHJlY2VkZXMsIHBfc2VwX2J5X3NwYWNlLCBwX3NpZ25fcG9zbiwgcGF0dGVybkRpZ2l0LCB6ZXJvRGlnaXQpCisgICAgICAgICAgICAgICAgKyAiOyIKKyAgICAgICAgICAgICAgICArIGNyZWF0ZVBhdHRlcm5TdHJpbmcoIi4iLCAiLCIsIG1vbl9ncm91cGluZywgZnJhY19kaWdpdHMsCisgICAgICAgICAgICAgICAgICAgIG5lZ2F0aXZlX3NpZ24sIG5fY3NfcHJlY2VkZXMsIG5fc2VwX2J5X3NwYWNlLCBuX3NpZ25fcG9zbiwgcGF0dGVybkRpZ2l0LCB6ZXJvRGlnaXQpOworCisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0UHV0KHJlc3VsdCwgIk51bWJlclBhdHRlcm5zIiwgcGF0dGVybnMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRoaXMgcm91dGluZSBjcmVhdGVzIGN1cnJlbmN5IGZvcm1hdHMgZnJvbSBhbGwgdGhlIHBvc2l4IHN0dWZmLgorICAgICAqLworICAgIHByaXZhdGUgU3RyaW5nIGNyZWF0ZVBhdHRlcm5TdHJpbmcoU3RyaW5nIGRlY2ltYWwsIFN0cmluZyB0aG91c2FuZHMsIGludCBncm91cGluZywgaW50IGZyYWNEaWdpdHMsCisgICAgICAgICAgICBTdHJpbmcgc2lnbiwgYm9vbGVhbiBwcmVjZWVkcywgU3RyaW5nIHNlcF9ieV9zcGFjZSwgU3RyaW5nIHNpZ25fcG9zbiwgU3RyaW5nIGRpZ2l0LAorICAgICAgICAgICAgU3RyaW5nIHJlcXVpcmVkRGlnaXQpIHsKKyAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZmZlciA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgZmluYWwgU3RyaW5nIGN1cnJlbmN5ID0gIlx1MDBBNCI7CisgICAgICAgIGlmICgiMiIuZXF1YWxzKHNlcF9ieV9zcGFjZSkgJiYgKCIiLmVxdWFscyhjdXJyZW5jeSkgfHwgIiIuZXF1YWxzKHNpZ24pKSkgeworICAgICAgICAgICAgc2VwX2J5X3NwYWNlID0gIjAiOworICAgICAgICB9CisgICAgICAgIGlmICgiMSIuZXF1YWxzKHNlcF9ieV9zcGFjZSkgJiYgIiIuZXF1YWxzKGN1cnJlbmN5KSkgeworICAgICAgICAgICAgc2VwX2J5X3NwYWNlID0gIjAiOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmaW5hbCBTdHJpbmcgc2lnbl9jdXJyZW5jeV9zZXBlcmF0b3IgPSAoIjIiLmVxdWFscyhzZXBfYnlfc3BhY2UpKSA/ICIgIiA6ICIiOworICAgICAgICBmaW5hbCBTdHJpbmcgcXVhbnRpdHlfY3VycmVuY3lfc2VwZXJhdG9yID0gKCIxIi5lcXVhbHMoc2VwX2J5X3NwYWNlKSkgPyAiICIgOiAiIjsKKyAgICAgICAgCisgICAgICAgIGlmICgiMCIuZXF1YWxzKHNpZ25fcG9zbikpIHsKKyAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoJygnKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIjEiLmVxdWFscyhzaWduX3Bvc24pKSB7CisgICAgICAgICAgICBidWZmZXIuYXBwZW5kKHNpZ24pOworICAgICAgICAgICAgaWYgKHByZWNlZWRzKSB7CisgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChzaWduX2N1cnJlbmN5X3NlcGVyYXRvcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKHByZWNlZWRzKSB7CisgICAgICAgICAgICBpZiAoIjMiLmVxdWFscyhzaWduX3Bvc24pKSB7CisgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChzaWduKTsKKyAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKHNpZ25fY3VycmVuY3lfc2VwZXJhdG9yKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoY3VycmVuY3kpOworICAgICAgICAgICAgaWYgKCI0Ii5lcXVhbHMoc2lnbl9wb3NuKSkgeworICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoc2lnbl9jdXJyZW5jeV9zZXBlcmF0b3IpOworICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoc2lnbik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBidWZmZXIuYXBwZW5kKHF1YW50aXR5X2N1cnJlbmN5X3NlcGVyYXRvcik7CisgICAgICAgIH0gICAgICAgCisgICAgICAgIAorICAgICAgICBidWZmZXIuYXBwZW5kKGRpZ2l0KTsKKyAgICAgICAgaWYgKGdyb3VwaW5nID4gMCkgeworICAgICAgICAgICAgYnVmZmVyLmFwcGVuZCh0aG91c2FuZHMpOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IGdyb3VwaW5nLTE7IGkgPiAwOyBpLS0pIHsKKyAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKGRpZ2l0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBidWZmZXIuYXBwZW5kKHJlcXVpcmVkRGlnaXQpOworICAgICAgICBidWZmZXIuYXBwZW5kKGRlY2ltYWwpOworICAgICAgICBpZiAoZnJhY0RpZ2l0cyA+IDApIHsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSBmcmFjRGlnaXRzLTE7IGkgPj0gMDsgaS0tKSB7CisgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChyZXF1aXJlZERpZ2l0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoZGlnaXQpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoIXByZWNlZWRzKSB7CisgICAgICAgICAgICBidWZmZXIuYXBwZW5kKHF1YW50aXR5X2N1cnJlbmN5X3NlcGVyYXRvcik7CisgICAgICAgICAgICBpZiAoIjEiLmVxdWFscyhzaWduX3Bvc24pKSB7CisgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChzaWduX2N1cnJlbmN5X3NlcGVyYXRvcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIjMiLmVxdWFscyhzaWduX3Bvc24pKSB7CisgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChzaWduKTsKKyAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKHNpZ25fY3VycmVuY3lfc2VwZXJhdG9yKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoY3VycmVuY3kpOworICAgICAgICAgICAgaWYgKCI0Ii5lcXVhbHMoc2lnbl9wb3NuKSkgeworICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoc2lnbl9jdXJyZW5jeV9zZXBlcmF0b3IpOworICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoc2lnbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0gICAgICAgCisgICAgICAgIGlmICgiMiIuZXF1YWxzKHNpZ25fcG9zbikpIHsKKyAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoc2lnbl9jdXJyZW5jeV9zZXBlcmF0b3IpOworICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChzaWduKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIjAiLmVxdWFscyhzaWduX3Bvc24pKSB7CisgICAgICAgICAgICBidWZmZXIuYXBwZW5kKCcpJyk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBidWZmZXIudG9TdHJpbmcoKTsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSB2b2lkIGNvbnZlcnRUSU1FKEhhc2h0YWJsZSByZXN1bHQsIEhhc2h0YWJsZSBzb3VyY2UpIHsKKyAgICAgICAgcmVzdWx0UHV0KHJlc3VsdCwgIkRheU5hbWVzIiwgc291cmNlLmdldCgiZGF5IikpOworICAgICAgICByZXN1bHRQdXQocmVzdWx0LCAiRGF5QWJicmV2aWF0aW9ucyIsIHNvdXJjZS5nZXQoImFiZGF5IikpOworICAgICAgICBTdHJpbmdbXSB0ZW1wID0gKFN0cmluZ1tdKXNvdXJjZS5nZXQoImFtX3BtIik7CisgICAgICAgIGlmICh0ZW1wICE9IG51bGwpIHsKKyAgICAgICAgICAgIGZpbmFsIFN0cmluZ1tdIGRlZmF1bHRBTVBNID0gKFN0cmluZ1tdKWdldERlZmF1bHQoIkFtUG1NYXJrZXJzIik7CisgICAgICAgICAgICBpZiAoIiIuZXF1YWxzKHRlbXBbMF0pKSB0ZW1wWzBdID0gZGVmYXVsdEFNUE1bMF07CisgICAgICAgICAgICBpZiAoIiIuZXF1YWxzKHRlbXBbMV0pKSB0ZW1wWzFdID0gZGVmYXVsdEFNUE1bMV07CisgICAgICAgICAgICByZXN1bHRQdXQocmVzdWx0LCAiQW1QbU1hcmtlcnMiLCB0ZW1wKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdGVtcCA9IChTdHJpbmdbXSlzb3VyY2UuZ2V0KCJtb24iKTsKKyAgICAgICAgaWYgKHRlbXAgIT0gbnVsbCkgeworICAgICAgICAgICAgLy9hZGQgZW1wdHkgMTN0aCBtb250aAorICAgICAgICAgICAgU3RyaW5nW10gbmV3VGVtcCA9IG5ldyBTdHJpbmdbMTNdOworICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weSh0ZW1wLCAwLCBuZXdUZW1wLCAwLCAxMik7CisgICAgICAgICAgICBuZXdUZW1wWzEyXSA9ICIiOworICAgICAgICAgICAgcmVzdWx0UHV0KHJlc3VsdCwgIk1vbnRoTmFtZXMiLCBuZXdUZW1wKTsKKyAgICAgICAgfQorICAgICAgICB0ZW1wID0gKFN0cmluZ1tdKXNvdXJjZS5nZXQoImFibW9uIik7CisgICAgICAgIGlmICh0ZW1wICE9IG51bGwpIHsKKyAgICAgICAgICAgIC8vYWRkIGVtcHR5IDEzdGggbW9udGgKKyAgICAgICAgICAgIFN0cmluZ1tdIG5ld1RlbXAgPSBuZXcgU3RyaW5nWzEzXTsKKyAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkodGVtcCwgMCwgbmV3VGVtcCwgMCwgMTIpOworICAgICAgICAgICAgbmV3VGVtcFsxMl0gPSAiIjsKKyAgICAgICAgICAgIHJlc3VsdFB1dChyZXN1bHQsICJNb250aEFiYnJldmlhdGlvbnMiLCBuZXdUZW1wKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZmluYWwgU3RyaW5nIHRfZm10X2FtcG0gPSAoU3RyaW5nKXNvdXJjZS5nZXQoInRfZm10X2FtcG0iKTsKKyAgICAgICAgZmluYWwgU3RyaW5nIHRfZm10ID0gKFN0cmluZylzb3VyY2UuZ2V0KCJ0X2ZtdCIpOworICAgICAgICBmaW5hbCBTdHJpbmcgZF90X2ZtdCA9IChTdHJpbmcpc291cmNlLmdldCgiZF90X2ZtdCIpOworICAgICAgICBmaW5hbCBTdHJpbmcgZF9mbXQgPSAoU3RyaW5nKXNvdXJjZS5nZXQoImRfZm10Iik7CisgICAgICAgIGZpbmFsIFN0cmluZyBubGxkYXRlID0gKFN0cmluZylzb3VyY2UuZ2V0KCJubGxkYXRlIik7ICAgLy9ub24tc3RhbmRhcmQgSUJNIHRoaW5nCisgICAgICAgIAorICAgICAgICBmaW5hbCBTdHJpbmcgREVGQVVMVF9EQVRFVElNRV9FTEVNRU5UU1tdID0gKFN0cmluZ1tdKWdldERlZmF1bHQoIkRhdGVUaW1lUGF0dGVybnMiKTsKKyAgICAgICAgZmluYWwgU3RyaW5nW10gZWxlbWVudHMgPSAoU3RyaW5nW10pREVGQVVMVF9EQVRFVElNRV9FTEVNRU5UUy5jbG9uZSgpOworICAgICAgICBmaW5hbCBTdHJpbmcgWF9wYXR0ZXJuID0gZWxlbWVudHNbM107CisgICAgICAgIGZpbmFsIFN0cmluZyB4X3BhdHRlcm4gPSBlbGVtZW50c1s3XTsKKyAgICAgICAgZmluYWwgU3RyaW5nIGNfcGF0dGVybiA9IGVsZW1lbnRzWzRdICsgIiAiICsgZWxlbWVudHNbMF07CisgICAgICAgIAorICAgICAgICBlbGVtZW50c1swXSA9ICh0X2ZtdF9hbXBtICE9IG51bGwgJiYgdF9mbXRfYW1wbS5sZW5ndGgoKSA+IDApID8gdF9mbXRfYW1wbSA6IHRfZm10OworICAgICAgICBlbGVtZW50c1sxXSA9ICh0X2ZtdCAhPSBudWxsKSA/IHRfZm10IDogdF9mbXRfYW1wbTsKKyAgICAgICAgZWxlbWVudHNbMl0gPSAodF9mbXQgIT0gbnVsbCkgPyB0X2ZtdCA6IHRfZm10X2FtcG07CisgICAgICAgIGVsZW1lbnRzWzNdID0gKHRfZm10ICE9IG51bGwpID8gdF9mbXQgOiB0X2ZtdF9hbXBtOworICAgICAgICAKKyAgICAgICAgU3RyaW5nIGxvbmdpc2hEYXRlRm9ybWF0ID0gKG5sbGRhdGUgIT0gbnVsbCkgPyBubGxkYXRlIDogZF9mbXQ7CisgICAgICAgIGlmIChkX3RfZm10ICE9IG51bGwpIHsKKyAgICAgICAgICAgIGlmICh0X2ZtdCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgLy90cnkgdG8gYnVpbGQgYSBkZXRhaWxlZCBkYXRhIGZvcm1hdCBieSB0YWtpbmcgdGhlIAorICAgICAgICAgICAgICAgIC8vZGF0ZS10aW1lIGZvcm1hdCBhbmQgcmVtb3ZpbmcgdGhlIHRpbWUgcG9ydGlvbgorICAgICAgICAgICAgICAgIGludCBuZHggPSBkX3RfZm10LmluZGV4T2YodF9mbXQpOworICAgICAgICAgICAgICAgIGlmIChuZHggPj0gMCkgeworICAgICAgICAgICAgICAgICAgICBpZiAobmR4IDwgKGRfdF9mbXQubGVuZ3RoKCkgLSB0X2ZtdC5sZW5ndGgoKSkvMikgeworICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHNbOF0gPSAiezB9IHsxfSI7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgbG9uZ2lzaERhdGVGb3JtYXQgPSByZXBsYWNlKGRfdF9mbXQsIHRfZm10LCAiIik7CisgICAgICAgICAgICAgICAgICAgIGxvbmdpc2hEYXRlRm9ybWF0ID0gcmVwbGFjZShsb25naXNoRGF0ZUZvcm1hdCwgIiVaIiwgIiIpOworICAgICAgICAgICAgICAgICAgICBsb25naXNoRGF0ZUZvcm1hdCA9IHJlcGxhY2UobG9uZ2lzaERhdGVGb3JtYXQsICIgICIsICIgIik7CisgICAgICAgICAgICAgICAgICAgIGxvbmdpc2hEYXRlRm9ybWF0ID0gcmVwbGFjZShsb25naXNoRGF0ZUZvcm1hdCwgIiAgIiwgIiAiKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxvbmdpc2hEYXRlRm9ybWF0LmNoYXJBdCgwKSA9PSAnICcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvbmdpc2hEYXRlRm9ybWF0ID0gbG9uZ2lzaERhdGVGb3JtYXQuc3Vic3RyaW5nKDEpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGxvbmdpc2hEYXRlRm9ybWF0LnRyaW0oKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxlbWVudHNbNF0gPSBsb25naXNoRGF0ZUZvcm1hdDsKKyAgICAgICAgZWxlbWVudHNbNV0gPSBkX3RfZm10OworICAgICAgICBlbGVtZW50c1s2XSA9IChubGxkYXRlICE9IG51bGwpID8gbmxsZGF0ZSA6IGRfZm10OworICAgICAgICBlbGVtZW50c1s3XSA9IGRfZm10OworICAgICAgICAKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA4OyBpKyspIHsKKyAgICAgICAgICAgIGlmIChlbGVtZW50c1tpXSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgZWxlbWVudHNbaV0gPSBjb252ZXJ0Rm9ybWF0cyhlbGVtZW50c1tpXSwgWF9wYXR0ZXJuLCB4X3BhdHRlcm4sIGNfcGF0dGVybik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGVsZW1lbnRzW2ldID0gREVGQVVMVF9EQVRFVElNRV9FTEVNRU5UU1tpXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXN1bHRQdXQocmVzdWx0LCAiRGF0ZVRpbWVQYXR0ZXJucyIsIGVsZW1lbnRzKTsKKyAgICB9CisgICAKKyAgICBwcml2YXRlIFN0cmluZyBjb252ZXJ0Rm9ybWF0cyhTdHJpbmcgcGF0dGVybiwgU3RyaW5nIFhfcGF0dGVybiwgCisgICAgICAgICAgICBTdHJpbmcgeF9wYXR0ZXJuLCBTdHJpbmcgY19wYXR0ZXJuKSB7CisgICAgICAgIAorICAgICAgICBIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvciBodVRyYW5zbGl0ID1teVRyYW5zbGl0OworICAgICAgICBodVRyYW5zbGl0LmFwcGx5UGF0dGVybigiPFUwMDAwPiIpOworICAgICAgICBSZXBsYWNlYWJsZVN0cmluZyB0ZW1wU3RyID0gbmV3IFJlcGxhY2VhYmxlU3RyaW5nKCk7CisgICAgICAgIHRlbXBTdHIucmVwbGFjZSgwLHRlbXBTdHIubGVuZ3RoKCkscGF0dGVybik7ICAgICAgCisgICAgICAgIGh1VHJhbnNsaXQudHJhbnNsaXRlcmF0ZSh0ZW1wU3RyKTsKKyAgICAgICAgU3RyaW5nIHRwYXR0ZXJuID0gdGVtcFN0ci50b1N0cmluZygpOworICAgICAgICBTdHJpbmdCdWZmZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRwYXR0ZXJuLmxlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgICAgIGNoYXIgYyA9IHRwYXR0ZXJuLmNoYXJBdChpKTsKKyAgICAgICAgICAgIGlmIChjICE9ICclJykgeworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoYyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGkrKzsKKyAgICAgICAgICAgICAgICBjID0gdHBhdHRlcm4uY2hhckF0KGkpOworICAgICAgICAgICAgICAgIHN3aXRjaCAoYykgeworICAgICAgICAgICAgICAgIGNhc2UgJ2EnOgorICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCJFRUUiKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAnQSc6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIkVFRUUiKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAnYic6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIk1NTSIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICdCJzoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiTU1NTSIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICdjJzoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjX3BhdHRlcm4pOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICdDJzogICAvLyoqIGhleSB7amZ9IC0gdGhpcyBpcyBzdXBwb3NlZCB0byBiZSB0aGUgY2VudHVyeSBvbmx5LgorICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCJZWVlZIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgJ2QnOgorICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCJkZCIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICdEJzoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgibW0vZGQveXkiKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAnZSc6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoImRkIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgJ2gnOgorICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCJNTU0iKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAnSCc6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIkhIIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgJ0knOgorICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCJoaCIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICdqJzoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiREREIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgJ20nOgorICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCJNTSIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICdNJzoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgibW0iKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAnbic6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xuJyk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgJ3AnOgorICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCJhYSIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICdyJzoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjb252ZXJ0Rm9ybWF0cygiJUk6JU06JVMgJXAiLCBYX3BhdHRlcm4sIHhfcGF0dGVybiwgY19wYXR0ZXJuKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgJ1MnOgorICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCJzcyIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICd0JzoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXHQnKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAnVCc6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY29udmVydEZvcm1hdHMoIiVJOiVNOiVTIiwgWF9wYXR0ZXJuLCB4X3BhdHRlcm4sIGNfcGF0dGVybikpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICdVJzoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgid3ciKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAndyc6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIkUiKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAnVyc6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoInd3Iik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgJ3gnOgorICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHhfcGF0dGVybik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgJ1gnOgorICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFhfcGF0dGVybik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgJ3knOgorICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCJ5eSIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICdZJzoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgieXl5eSIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICdaJzoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgieiIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICclJzoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiJSIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCclJyk7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoYyk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgdm9pZCBjb252ZXJ0Q09MTEFURShIYXNodGFibGUgcmVzdWx0LCBIYXNodGFibGUgc291cmNlKSB7CisgICAgICAgIFN0cmluZ1tdIHNvcnRPcmRlciA9IChTdHJpbmdbXSlzb3VyY2UuZ2V0KCJzb3J0X29yZGVyIik7CisgICAgICAgIEhleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yIGh1VHJhbnNsaXQgPW15VHJhbnNsaXQ7CisgICAgICAgIGh1VHJhbnNsaXQuYXBwbHlQYXR0ZXJuKCI8VTAwMDA+Iik7CisgICAgICAgIFJlcGxhY2VhYmxlU3RyaW5nIHRlbXBTdHIgPSBuZXcgUmVwbGFjZWFibGVTdHJpbmcoKTsKKyAgICAgICAgLy90ZW1wU3RyLnJlcGxhY2UoMCx0ZW1wU3RyLmxlbmd0aCgpLHNvcnRPcmRlcik7ICAgICAgCisgICAgICAgIGZpbmFsIE9iamVjdFtdW10gREVGQVVMVF9DT0xMQVRJT049KE9iamVjdFtdW10pIGdldERlZmF1bHQoIkNvbGxhdGlvbkVsZW1lbnRzIik7CisgICAgICAgIGZpbmFsIE9iamVjdFtdW10gZWxlbWVudHM9KE9iamVjdFtdW10pY2xvbmUyREFycihERUZBVUxUX0NPTExBVElPTik7ICAgICAgICAKKyAgICAgICAgaHVUcmFuc2xpdC50cmFuc2xpdGVyYXRlKHRlbXBTdHIpOworICAgICAgICBpZiAoc29ydE9yZGVyICE9IG51bGwpIHsKKyAgICAgICAgICAgIGlmICghImZvcndhcmQiLmVxdWFscyhzb3J0T3JkZXJbMF0pKSB7CisgICAgICAgICAgICAgICAgU3lzdGVtLmVyci5wcmludGxuKCJFUlJPUjogVW5zdXBwb3J0ZWQgcHJpbWFyeSBzb3J0IG9yZGVyOiAiK3NvcnRPcmRlclswXSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc29ydE9yZGVyLmxlbmd0aCA9PSAyICYmICEiZm9yd2FyZCIuZXF1YWxzKHNvcnRPcmRlclsxXSkgJiYgISJiYWNrd2FyZCIuZXF1YWxzKHNvcnRPcmRlclsxXSkpIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0uZXJyLnByaW50bG4oIkVSUk9SOiBVbnN1cHBvcnRlZCBzZWNvbmRhcnkgc29ydCBvcmRlcjogIitzb3J0T3JkZXJbMV0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHNvcnRPcmRlci5sZW5ndGggPT0gMyAmJiAhImZvcndhcmQiLmVxdWFscyhzb3J0T3JkZXJbMl0pKSB7CisgICAgICAgICAgICAgICAgU3lzdGVtLmVyci5wcmludGxuKCJFUlJPUjogVW5zdXBwb3J0ZWQgdGVydGlhcnkgc29ydCBvcmRlcjogIitzb3J0T3JkZXJbMl0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHNvcnRPcmRlci5sZW5ndGggPiAzKSB7CisgICAgICAgICAgICAgICAgU3lzdGVtLmVyci5wcmludGxuKCJXQVJOSU5HOiBTb3J0IGxldmVscyBvZiBvcmRlciBncmVhdGVyIHRoYW4gdGhyZWUgaWdub3JlZC4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgUG9zaXhDb2xsYXRpb25CdWlsZGVyLkNvbGxhdGlvblJ1bGVbXSBydWxlU291cmNlID0gCisgICAgICAgICAgICAoUG9zaXhDb2xsYXRpb25CdWlsZGVyLkNvbGxhdGlvblJ1bGVbXSlzb3VyY2UuZ2V0KCJwb3NpeF9zb3J0X3J1bGVzIik7CisKKyAgICAgICAgaWYgKHJ1bGVTb3VyY2UgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIC8vYWxsb2NhdGUgYSBsaXN0IG9mIGNvbGxhdGlvbkl0ZW1zLiAgQWRkIGFuIGV4dHJhIGVudHJ5IGZvciBzZWNvbmRhcnkgb3JkZXJpbmcKKyAgICAgICAgICAgIENvbGxhdGlvbkl0ZW1bXSBydWxlcyA9IG5ldyBDb2xsYXRpb25JdGVtW3J1bGVTb3VyY2UubGVuZ3RoKzFdOworICAgICAgICAgICAgUG9zaXhDb2xsYXRpb25CdWlsZGVyLkNvbGxhdGlvblJ1bGUgcHJldlJ1bGUgPSBudWxsOworICAgICAgICAgICAgICAgIC8vYWRkIGFsbCB0aGUgcnVsZXMgZm9yIG5vbi1leHBhbmRpbmcgY2hhcmFjdGVycworICAgICAgICAgICAgaW50IGkgPSAwOworICAgICAgICAgICAgZm9yIChpbnQgbmR4ID0gMDsgbmR4IDwgcnVsZVNvdXJjZS5sZW5ndGg7IG5keCsrKSB7CisgICAgICAgICAgICAgICAgUG9zaXhDb2xsYXRpb25CdWlsZGVyLkNvbGxhdGlvblJ1bGUgcnVsZSA9IHJ1bGVTb3VyY2VbbmR4XTsKKyAgICAgICAgICAgICAgICAgICAgLy9hZGQgbm9uLWV4cGFuZGluZyBjaGFyYWN0ZXJzIHRvIHRoZSBzb3J0IGxpc3QKKyAgICAgICAgICAgICAgICBpZiAocnVsZS5nZXRTaXplKCkgPD0gMSkgeworICAgICAgICAgICAgICAgICAgICBpbnQgZGlmZjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByZXZSdWxlID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vaWYgaXQncyB0aGUgZmlyc3QgcnVsZSwgZG9uJ3QgY29tcGFyZSB0byBhbnl0aGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vc2VlayBiYWNrIHNvIGl0IGNhbiBiZSBhcHBlbmRlZCB0byB0aGUgZGVmYXVsdCBydWxlcworICAgICAgICAgICAgICAgICAgICAgICAgcnVsZXNbaV0gPSBuZXcgQ29sbGF0aW9uSXRlbShydWxlLmdldFN5bWJvbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vY29tcGFyZSB0byBwcmV2aW91cyBpdGVtCisgICAgICAgICAgICAgICAgICAgICAgICBkaWZmID0gcHJldlJ1bGUuY29tcGFyZShydWxlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGVzW2ldID0gbmV3IENvbGxhdGlvbkl0ZW0oZGlmZiwgcnVsZS5nZXRTeW1ib2woKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcnVsZXNbaSsrXS5zZXRDb21tZW50KHJ1bGUuZ2V0U291cmNlKCkpOworICAgICAgICAgICAgICAgICAgICBwcmV2UnVsZSA9IHJ1bGU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8vYWRkIHJ1bGVzIGZvciBleHBhbmRpbmcgY2hhcmFjdGVycworICAgICAgICAgICAgU3RyaW5nIHByZXZTZWVrID0gbnVsbDsKKyAgICAgICAgICAgIHByZXZSdWxlID0gbnVsbDsKKyAgICAgICAgICAgIGZvciAoaW50IG5keCA9IDA7IG5keCA8IHJ1bGVTb3VyY2UubGVuZ3RoOyBuZHgrKykgeworICAgICAgICAgICAgICAgIFBvc2l4Q29sbGF0aW9uQnVpbGRlci5Db2xsYXRpb25SdWxlIHJ1bGUgPSBydWxlU291cmNlW25keF07CisgICAgICAgICAgICAgICAgaWYgKHJ1bGUuZ2V0U2l6ZSgpID4gMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy9maW5kIG91dCB3aGF0IHRoaXMgY2hhcmFjdGVyIGV4cGFuZHMgdG8KKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHNlZWsgPSBydWxlLmdldEV4cGFuc2lvbigpOworICAgICAgICAgICAgICAgICAgICBpZiAoIXNlZWsuZXF1YWxzKHByZXZTZWVrKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vaWYgaXQncyBub3QgdGhlIHNhbWUgYXMgdGhlIHByZXZpb3VzIGNoYXJhY3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vdGhlbiBzZWVrIHRvIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIGV4cGFuc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vYW5kIGNvbXBhcmUgdG8gdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgUG9zaXhDb2xsYXRpb25CdWlsZGVyLkNvbGxhdGlvblJ1bGUgc2Vla1J1bGUgPSBydWxlLnNlZWtzVG9SdWxlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBydWxlc1tpXSA9IG5ldyBDb2xsYXRpb25JdGVtKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWVrUnVsZS5jb21wYXJlKHJ1bGUpLCBydWxlLmdldFN5bWJvbCgpLCBydWxlLmdldEV4cGFuc2lvbigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByZXZTZWVrID0gc2VlazsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwcmV2UnVsZSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9pdCBleHBhbmRzIHRvIHRoZSBzYW1lIGNoYXJhY3RlcnMgYXMgdGhlIHByZXZpb3VzIGV4cGFuc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3NvIGNvbXBhcmUgdG8gdGhlIHByZXZpb3VzIGV4cGFuc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgcnVsZXNbaV0gPSBuZXcgQ29sbGF0aW9uSXRlbSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldlJ1bGUuY29tcGFyZShydWxlKSwgcnVsZS5nZXRTeW1ib2woKSwgcHJldlJ1bGUuZ2V0U3ltYm9sKCkpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vVGhlIHVubGlrZWx5IGNhc2UgdGhhdCB0aGUgZmlyc3QgY2hhcmFjdGVyIHdpbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2JlIGFuIGV4cGFuZGluZyBjaGFyYWN0ZXIuLi5JIGRvbid0IHRoaW5rCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy90aGlzIGlzIGV2ZW4gcG9zc2libGUuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGVzW2ldID0gbmV3IENvbGxhdGlvbkl0ZW0ocnVsZS5nZXRTeW1ib2woKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcnVsZXNbaSsrXS5zZXRDb21tZW50KHJ1bGUuZ2V0U291cmNlKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBwcmV2UnVsZSA9IHJ1bGU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoImJhY2t3YXJkIi5lcXVhbHMoc29ydE9yZGVyWzFdKSkgeworICAgICAgICAgICAgICAgIGVsZW1lbnRzWzFdWzFdID0gInRydWUiOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBlbGVtZW50c1sxXVsxXSA9ICJmYWxzZSI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbGVtZW50c1syXVsxXT0oT2JqZWN0KXJ1bGVzOworICAgICAgICAgICAgcmVzdWx0UHV0KHJlc3VsdCwgIkNvbGxhdGlvbkVsZW1lbnRzIiwgZWxlbWVudHMpOworICAgICAgICB9CisgICAgfQorICAgICAgICAKKyAgICBwcml2YXRlIHZvaWQgcmVzdWx0UHV0KEhhc2h0YWJsZSByZXN1bHRUYWJsZSwgU3RyaW5nIHRhZywgT2JqZWN0IHZhbHVlKSB7CisgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm47CisgICAgICAgIHJlc3VsdFRhYmxlLnB1dCh0YWcsIHZhbHVlKTsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBPYmplY3QgZ2V0RGVmYXVsdChTdHJpbmcgZGVzaXJlZFJlc291cmNlKSB7CisgICAgICAgIHJldHVybiBnZXRQYXJlbnRCdW5kbGUoKS5nZXRPYmplY3QoZGVzaXJlZFJlc291cmNlKTsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBSZXNvdXJjZUJ1bmRsZSBnZXRQYXJlbnRCdW5kbGUoKSB7CisgICAgICAgIHJldHVybiBSZXNvdXJjZUJ1bmRsZS5nZXRCdW5kbGUoImNvbS5pYm0uaWN1LmRldi50b29sLmxvY2FsZWNvbnZlcnRlci5teUxvY2FsZUVsZW1lbnRzIiwgcGFyZW50TG9jYWxlKTsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBTdHJpbmcgcmVwbGFjZShTdHJpbmcgc291cmNlLCBTdHJpbmcgdGFyZ2V0LCBTdHJpbmcgcmVwbGFjZW1lbnQpIHsKKyAgICAgICAgaWYgKHRhcmdldC5lcXVhbHMocmVwbGFjZW1lbnQpKSB7CisgICAgICAgICAgICByZXR1cm4gc291cmNlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgU3RyaW5nQnVmZmVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgICAgIGludCBsYXN0TmR4ID0gMDsKKyAgICAgICAgICAgIGludCBuZHggPSBzb3VyY2UuaW5kZXhPZih0YXJnZXQpOworICAgICAgICAgICAgd2hpbGUgKG5keCA+PSAwKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChzb3VyY2Uuc3Vic3RyaW5nKGxhc3ROZHgsIG5keCkpOworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocmVwbGFjZW1lbnQpOworICAgICAgICAgICAgICAgIG5keCArPSB0YXJnZXQubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgbGFzdE5keCA9IG5keDsKKyAgICAgICAgICAgICAgICBuZHggPSBzb3VyY2UuaW5kZXhPZih0YXJnZXQsIG5keCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHNvdXJjZS5zdWJzdHJpbmcobGFzdE5keCkpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworICAgICAgICB9CisgICAgfQorCS8ve3tERUNMQVJFX0NPTlRST0xTCisJLy99fQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvUXVvdGVUcmFuc2l0aW9uLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL1F1b3RlVHJhbnNpdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjUwYTgwYzIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL1F1b3RlVHJhbnNpdGlvbi5qYXZhCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMDQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvUXVvdGVUcmFuc2l0aW9uLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDIvMTYgMDM6MDU6MzEgJCAKKyAqICRSZXZpc2lvbjogMS4yICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudG9vbC5sb2NhbGVjb252ZXJ0ZXI7CisKK2ltcG9ydCBqYXZhLmlvLio7CitpbXBvcnQgamF2YS51dGlsLio7CisKK3B1YmxpYyBjbGFzcyBRdW90ZVRyYW5zaXRpb24gZXh0ZW5kcyBDb21wbGV4VHJhbnNpdGlvbiB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBRdW90ZVRyYW5zaXRpb24gR0xPQkFMID0gbmV3IFF1b3RlVHJhbnNpdGlvbihTVUNDRVNTKTsKKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgY2hhciBTVFJJTkdfQ0hBUiA9ICciJzsKKyAgICAKKyAgICBwdWJsaWMgUXVvdGVUcmFuc2l0aW9uKGludCBzdWNjZXNzKSB7CisgICAgICAgIHN1cGVyKHN1Y2Nlc3MpOworICAgICAgICAgICAgLy97e0lOSVRfQ09OVFJPTFMKKyAgICAgICAgLy99fQorICAgIH0KKyAgICBwdWJsaWMgYm9vbGVhbiBhY2NlcHRzKGludCBjKSB7CisgICAgICAgIHJldHVybiBTVFJJTkdfQ0hBUiA9PSAoY2hhciljOworICAgIH0KKyAgICBwcm90ZWN0ZWQgTGV4LlRyYW5zaXRpb25bXVtdIGdldFN0YXRlcygpIHsKKyAgICAgICAgcmV0dXJuIHN0YXRlczsKKyAgICB9CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTGV4LlRyYW5zaXRpb25bXVtdIHN0YXRlcyA9IHsKKyAgICAgICAgeyAvL3N0YXRlIDA6IAorICAgICAgICAgICAgbmV3IExleC5DaGFyVHJhbnNpdGlvbihTVFJJTkdfQ0hBUiwgTGV4LklHTk9SRV9DT05TVU1FLCAtMSksCisgICAgICAgICAgICBuZXcgTGV4LlBhcnNlRXhjZXB0aW9uVHJhbnNpdGlvbigiaWxsZWdhbCBjaGFyYWN0ZXIgaW4gcXVvdGVkIHN0cmluZyIpCisgICAgICAgIH0sCisgICAgICAgIHsgLy9zdGF0ZSAxOgorICAgICAgICAgICAgbmV3IExleC5DaGFyVHJhbnNpdGlvbihTVFJJTkdfQ0hBUiwgTGV4LklHTk9SRV9DT05TVU1FLCBTVUNDRVNTKSwKKyAgICAgICAgICAgIG5ldyBMZXguU3RyaW5nVHJhbnNpdGlvbihFT0xUcmFuc2l0aW9uLkVPTF9DSEFSUywgTGV4LklHTk9SRV9DT05TVU1FLCAtMiksCisgICAgICAgICAgICBuZXcgRXNjYXBlVHJhbnNpdGlvbigtMSksCisgICAgICAgICAgICBuZXcgU3ltYm9sVHJhbnNpdGlvbigtMSksCisgICAgICAgICAgICBuZXcgTGV4LkVPRlRyYW5zaXRpb24oLTIpLAorICAgICAgICAgICAgbmV3IExleC5EZWZhdWx0VHJhbnNpdGlvbihMZXguQUNDVU1VTEFURV9DT05TVU1FLCAtMSkKKyAgICAgICAgfSwKKyAgICAgICAgeyAvL3N0YXRlIDI6IGZhaWx1cmUgZnJvbSBlb2YKKyAgICAgICAgICAgIG5ldyBMZXguUGFyc2VFeGNlcHRpb25UcmFuc2l0aW9uKCJ1bnRlcm1pbmF0ZWQgc3RyaW5nIikKKyAgICAgICAgfQorICAgIH07CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgYXJnc1tdKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBMZXguVHJhbnNpdGlvbltdW10gc3RhdGVzID0ge3sgCisgICAgICAgICAgICAgICAgbmV3IFF1b3RlVHJhbnNpdGlvbihTVUNDRVNTKSwKKyAgICAgICAgICAgICAgICBuZXcgTGV4LkVPRlRyYW5zaXRpb24oKSwKKyAgICAgICAgICAgICAgICBuZXcgTGV4LlBhcnNlRXhjZXB0aW9uVHJhbnNpdGlvbigiYmFkIHRlc3QgaW5wdXQiKQorICAgICAgICAgICAgfX07CisgICAgICAgICAgICBFc2NhcGVUcmFuc2l0aW9uLnNldEVzY2FwZUNoYXIoJy8nKTsKKyAgICAgICAgICAgIFN0cmluZyB0ZXh0ID0gIlwiaGVsbG88XCIvPj4vZDMyd29ybGRcIlwiPG9uZT4vXG48dHdvPlwiIjsKKyAgICAgICAgICAgIFN0cmluZ1JlYWRlciBzciA9IG5ldyBTdHJpbmdSZWFkZXIodGV4dCk7CisgICAgICAgICAgICBQdXNoYmFja1JlYWRlciBwciA9IG5ldyBQdXNoYmFja1JlYWRlcihzcik7CisgICAgICAgICAgICBMZXggcGFyc2VyID0gbmV3IExleChzdGF0ZXMsIHByKTsKKyAgICAgICAgICAgIC8vcGFyc2VyLmRlYnVnKHRydWUpOworICAgICAgICAgICAgaW50IHMgPSBwYXJzZXIubmV4dFRva2VuKCk7CisgICAgICAgICAgICB3aGlsZSAocyA9PSBTVUNDRVNTKSB7CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHBhcnNlci5nZXREYXRhKCkpOworICAgICAgICAgICAgICAgIHMgPSBwYXJzZXIubmV4dFRva2VuKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgLy97e0RFQ0xBUkVfQ09OVFJPTFMKKyAgICAvL319Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL1JhbmdlVHJhbnNpdGlvbi5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9SYW5nZVRyYW5zaXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42NTM4OGVhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9SYW5nZVRyYW5zaXRpb24uamF2YQpAQCAtMCwwICsxLDQ3IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMi0yMDA0LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL1JhbmdlVHJhbnNpdGlvbi5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzAyLzE2IDAzOjA1OjMxICQgCisgKiAkUmV2aXNpb246IDEuMiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKyAKK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRvb2wubG9jYWxlY29udmVydGVyOworCitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGphdmEudXRpbC4qOworCitwdWJsaWMgY2xhc3MgUmFuZ2VUcmFuc2l0aW9uIGV4dGVuZHMgQ29tcGxleFRyYW5zaXRpb24geworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgUmFuZ2VUcmFuc2l0aW9uIEdMT0JBTCA9IG5ldyBSYW5nZVRyYW5zaXRpb24oU1VDQ0VTUyk7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUkFOR0VfQ0hBUlMgPSAiLi4uIjsKKyAgICBwdWJsaWMgUmFuZ2VUcmFuc2l0aW9uKGludCBzdWNjZXNzKXsKKyAgICAgICAgc3VwZXIoc3VjY2Vzcyk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBib29sZWFuIGFjY2VwdHMoaW50IGMpeworICAgICAgICByZXR1cm4gUkFOR0VfQ0hBUlMuaW5kZXhPZigoY2hhciljKSA+PTA7CisgICAgfQorICAgIAorICAgIHByb3RlY3RlZCBMZXguVHJhbnNpdGlvbltdW11nZXRTdGF0ZXMoKXsKKyAgICAgICAgcmV0dXJuIHN0YXRlczsKKyAgICB9CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTGV4LlRyYW5zaXRpb25bXVtdIHN0YXRlcz0geworCisgICAgICAgIHsgLy9zdGF0ZSAwOiAKKyAgICAgICAgICAgIG5ldyBMZXguU3RyaW5nVHJhbnNpdGlvbihSQU5HRV9DSEFSUywgTGV4LklHTk9SRV9DT05TVU1FLCAtMSksCisgICAgICAgICAgICBuZXcgTGV4LlBhcnNlRXhjZXB0aW9uVHJhbnNpdGlvbigiaWxsZWdhbCBzcGFjZSBjaGFyYWN0ZXIiKQorICAgICAgICB9LAorICAgICAgICB7IC8vc3RhdGUgMToKKyAgICAgICAgICAgIG5ldyBMZXguRU9GVHJhbnNpdGlvbihTVUNDRVNTKSwKKyAgICAgICAgICAgIG5ldyBMZXguU3RyaW5nVHJhbnNpdGlvbihSQU5HRV9DSEFSUywgTGV4LklHTk9SRV9DT05TVU1FLCAtMSksCisgICAgICAgICAgICBuZXcgTGV4LkRlZmF1bHRUcmFuc2l0aW9uKExleC5JR05PUkVfUFVUQkFDSywgU1VDQ0VTUykKKyAgICAgICAgfSwKKyAgICB9OworfQorICAgICAgICAgICAgCisgICAgClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9Tb3J0ZWRWZWN0b3IuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvU29ydGVkVmVjdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNTllZWEwMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvU29ydGVkVmVjdG9yLmphdmEKQEAgLTAsMCArMSwzNTYgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMDQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvU29ydGVkVmVjdG9yLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDIvMTYgMDM6MDU6MzEgJCAKKyAqICRSZXZpc2lvbjogMS4yICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudG9vbC5sb2NhbGVjb252ZXJ0ZXI7CisKK2ltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOworaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKKy8qKgorICAgIEltcGxlbWVudHMgYSBzb3J0ZWQgdmVjdG9yLiBZb3UgY2FuIGFkZCBhbnl0aGluZyB0byBpdDsgd2hlbiB5b3UgYWNjZXNzIGFueSBlbGVtZW50LCBpdCBzb3J0cworICAgIHRoZSBhcnJheSBpbnRlcm5hbGx5IHdoZW4gbmVjZXNzYXJ5LgorICAgIDxwPkEgQ29tcGFyYXRvciBpcyB1c2VkIHRvIGNvbXBhcmUgdGhlIGVsZW1lbnRzLCBhbGxvd2luZyBhcmJpdHJhcnkgb3JkZXJpbmdzLgorICAgIElmIG5vIENvbXBhcmF0b3IgaXMgc3VwcGxpZWQsIHRoZW4gb25lIGlzIGNvbnN0cnVjdGVkIGJhc2VkIG9uIHRoZSB0eXBlCisgICAgb2YgdGhlIGZpcnN0IGVsZW1lbnQgYWRkZWQuIE9ubHkgTnVtYmVycyBhbmQgQ29tcGFyYWJsZXMgYXJlIGhhbmRsZWQuCisgICAgPHA+RHVwbGljYXRlcyBhcmUgYWxsb3dlZC4KKyovCitmaW5hbCBwdWJsaWMgY2xhc3MgU29ydGVkVmVjdG9yIHsKKyAgICAvKioKKyAgICAgICAgQ29waWVzIGVsZW1lbnRzIG9mIHZlY3RvciwgZW51bWVyYXRpb24gb3IgYXJyYXkKKyAgICAgICAgTm90ZTogdGhlIG9iamVjdHMgaW4gdGhlIHNvdXJjZSBhcmUgTk9UIGNsb25lZC4KKyAgICAgICAgRG8gbm90IGNoYW5nZSB0aGVtIG9yIHRoZSBzb3J0aW5nIHdpbGwgYmUgaW52YWxpZC4KKyAgICAqLworICAgIHB1YmxpYyBTb3J0ZWRWZWN0b3IoT2JqZWN0W10gbmV3VmFsdWVzLCBDb21wYXJhdG9yIGNvbXBhcmF0b3IpIHsKKyAgICAgICAgdGhpcy5jb21wYXJhdG9yID0gY29tcGFyYXRvcjsKKyAgICAgICAgYWRkRWxlbWVudHMobmV3VmFsdWVzKTsKKyAgICAgICAgICAgIC8ve3tJTklUX0NPTlRST0xTCisJCS8vfX0KK30KKworICAgIHB1YmxpYyBTb3J0ZWRWZWN0b3IoVmVjdG9yIG5ld1ZhbHVlcywgQ29tcGFyYXRvciBjb21wYXJhdG9yKSB7CisgICAgICAgIHRoaXMuY29tcGFyYXRvciA9IGNvbXBhcmF0b3I7CisgICAgICAgIGFkZEVsZW1lbnRzKG5ld1ZhbHVlcyk7CisgICAgfQorCisgICAgcHVibGljIFNvcnRlZFZlY3RvcihFbnVtZXJhdGlvbiBuZXdWYWx1ZXMsIENvbXBhcmF0b3IgY29tcGFyYXRvcikgeworICAgICAgICB0aGlzLmNvbXBhcmF0b3IgPSBjb21wYXJhdG9yOworICAgICAgICBhZGRFbGVtZW50cyhuZXdWYWx1ZXMpOworICAgIH0KKworICAgIHB1YmxpYyBTb3J0ZWRWZWN0b3IoT2JqZWN0W10gbmV3VmFsdWVzKSB7CisgICAgICAgIGFkZEVsZW1lbnRzKG5ld1ZhbHVlcyk7CisgICAgfQorCisgICAgcHVibGljIFNvcnRlZFZlY3RvcihDb21wYXJhdG9yIGNvbXBhcmF0b3IpIHsKKyAgICAgICAgdGhpcy5jb21wYXJhdG9yID0gY29tcGFyYXRvcjsKKyAgICB9CisKKyAgICBwdWJsaWMgU29ydGVkVmVjdG9yKFZlY3RvciBuZXdWYWx1ZXMpIHsKKyAgICAgICAgYWRkRWxlbWVudHMobmV3VmFsdWVzKTsKKyAgICB9CisKKyAgICBwdWJsaWMgU29ydGVkVmVjdG9yKEVudW1lcmF0aW9uIG5ld1ZhbHVlcykgeworICAgICAgICBhZGRFbGVtZW50cyhuZXdWYWx1ZXMpOworICAgIH0KKworICAgIHB1YmxpYyBTb3J0ZWRWZWN0b3IoKSB7CisgICAgfQorCisgICAgLyoqCisgICAgICAgIEFkZHMgb25lIGVsZW1lbnQuCisgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBhZGRFbGVtZW50KE9iamVjdCBlbGVtZW50KSB7CisgICAgICAgIGlmIChjb3VudCA+PSBkYXRhQXJyYXkubGVuZ3RoKSBzZXRDYXBhY2l0eShjb3VudCoyICsgMTcpOworICAgICAgICBkYXRhQXJyYXlbY291bnQrK10gPSBlbGVtZW50OworICAgICAgICBpc1ZhbGlkID0gZmFsc2U7CisgICAgfQorCisgICAgLyoqCisgICAgICAgIEFkZHMgbXVsdGlwbGUgZWxlbWVudHMuIEZhc3RlciB0aGFuIGFkZGluZyBvbmUgYXQgYSB0aW1lLgorICAgICovCisgICAgcHVibGljIHZvaWQgYWRkRWxlbWVudHMoT2JqZWN0W10gbmV3VmFsdWVzKSB7CisgICAgICAgIGludCBuZXdDb3VudCA9IGNvdW50ICsgbmV3VmFsdWVzLmxlbmd0aDsKKyAgICAgICAgaWYgKG5ld0NvdW50ID4gZGF0YUFycmF5Lmxlbmd0aCkgc2V0Q2FwYWNpdHkobmV3Q291bnQpOworICAgICAgICBmb3IgKGludCBpID0gY291bnQ7IGkgPCBuZXdDb3VudDsgKytpKQorICAgICAgICAgICAgZGF0YUFycmF5W2ldID0gbmV3VmFsdWVzW2ktY291bnRdOworICAgICAgICBjb3VudCA9IG5ld0NvdW50OworICAgICAgICBpc1ZhbGlkID0gZmFsc2U7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgYWRkRWxlbWVudHMoVmVjdG9yIG5ld1ZhbHVlcykgeworICAgICAgICBpbnQgbmV3Q291bnQgPSBjb3VudCArIG5ld1ZhbHVlcy5zaXplKCk7CisgICAgICAgIGlmIChuZXdDb3VudCA+IGRhdGFBcnJheS5sZW5ndGgpIHNldENhcGFjaXR5KG5ld0NvdW50KTsKKyAgICAgICAgZm9yIChpbnQgaSA9IGNvdW50OyBpIDwgbmV3Q291bnQ7ICsraSkKKyAgICAgICAgICAgIGRhdGFBcnJheVtpXSA9IG5ld1ZhbHVlcy5lbGVtZW50QXQoaS1jb3VudCk7CisgICAgICAgIGNvdW50ID0gbmV3Q291bnQ7CisgICAgICAgIGlzVmFsaWQgPSBmYWxzZTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBhZGRFbGVtZW50cyhFbnVtZXJhdGlvbiBuZXdWYWx1ZXMpIHsKKyAgICAgICAgd2hpbGUgKG5ld1ZhbHVlcy5oYXNNb3JlRWxlbWVudHMoKSkgeworICAgICAgICAgICAgYWRkRWxlbWVudChuZXdWYWx1ZXMubmV4dEVsZW1lbnQoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgICAgUmVtb3ZlcyBlbGVtZW50cyBhdCBpbmRpY2VzID49IHN0YXJ0SW5kZXggYW5kIDwgZW5kSW5kZXgKKyAgICAqLworICAgIHB1YmxpYyB2b2lkIHJlbW92ZUVsZW1lbnRzKGludCBzdGFydEluZGV4LCBpbnQgZW5kSW5kZXgpIHsKKyAgICAgICAgaWYgKCFpc1ZhbGlkKSB2YWxpZGF0ZSgpOworICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KGRhdGFBcnJheSxlbmRJbmRleCxkYXRhQXJyYXksc3RhcnRJbmRleCxjb3VudCAtIGVuZEluZGV4KTsKKyAgICAgICAgZm9yIChpbnQgaSA9IGNvdW50IC0gKGVuZEluZGV4IC0gc3RhcnRJbmRleCk7IGkgPCBjb3VudDsrK2kpCisgICAgICAgICAgICBkYXRhQXJyYXlbaV0gPSBudWxsOyAgIC8vIGZyZWUgdXAgc3RvcmFnZQorICAgICAgICBjb3VudCAtPSAoZW5kSW5kZXggLSBzdGFydEluZGV4KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgICAgU2V0cyBjb21wYXJhdG9yCisgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRDb21wYXJhdG9yKENvbXBhcmF0b3IgY29tcGFyYXRvcikgeworICAgICAgICB0aGlzLmNvbXBhcmF0b3IgPSBjb21wYXJhdG9yOworICAgICAgICBpc1ZhbGlkID0gZmFsc2U7CisgICAgfQorCisgICAgcHVibGljIENvbXBhcmF0b3IgZ2V0Q29tcGFyYXRvcigpIHsKKyAgICAgICAgaWYgKGNvbXBhcmF0b3IgPT0gbnVsbCkgdmFsaWRhdGVDb21wYXJhdG9yKCk7CisgICAgICAgIHJldHVybiB0aGlzLmNvbXBhcmF0b3I7CisgICAgfQorCisgICAgLyoqCisgICAgICAgIEdldHMgc2l6ZSwgdGhlIGFjdHVhbCBudW1iZXIgb2YgZWxlbWVudHMuCisgICAgKi8KKyAgICBwdWJsaWMgaW50IHNpemUoKSB7CisgICAgICAgIHJldHVybiBjb3VudDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgICAgR2V0cyBjYXBhY2l0eSwgdGhlIG51bWJlciBvZiBlbGVtZW50cyB5b3UgY2FuIGhhdmUgd2l0aG91dCBncm93aW5nIHRoZSBhcnJheS4KKyAgICAqLworICAgIHB1YmxpYyBpbnQgY2FwYWNpdHkoKSB7CisgICAgICAgIHJldHVybiBkYXRhQXJyYXkubGVuZ3RoOworICAgIH0KKworICAgIC8qKgorICAgICAgICBTZXRzIGNhcGFjaXR5LCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIHlvdSBjYW4gaGF2ZSB3aXRob3V0IGdyb3dpbmcgdGhlIGFycmF5LgorICAgICovCisgICAgcHVibGljIHZvaWQgc2V0Q2FwYWNpdHkoaW50IG5ld1NpemUpIHsKKyAgICAgICAgT2JqZWN0W10gdGVtcCA9IG5ldyBPYmplY3RbbmV3U2l6ZV07CisgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoZGF0YUFycmF5LCAwLCB0ZW1wLCAwLCBNYXRoLm1pbihjb3VudCxuZXdTaXplKSk7CisgICAgICAgIGRhdGFBcnJheSA9IHRlbXA7CisgICAgfQorCisgICAgLyoqCisgICAgICAgIFRyaW1zIHRoZSBhcnJheS4KKyAgICAqLworICAgIHB1YmxpYyB2b2lkIHRyaW1Ub1NpemUoKSB7CisgICAgICAgIHNldENhcGFjaXR5KGNvdW50KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgICAgR2V0cyB0aGUgZWxlbWVudCBhdCB0aGUgaW5kZXgKKyAgICAqLworICAgIHB1YmxpYyBPYmplY3QgZWxlbWVudEF0IChpbnQgaW5kZXgpIHsKKyAgICAgICAgaWYgKCFpc1ZhbGlkKSB2YWxpZGF0ZSgpOworICAgICAgICBpZiAoaW5kZXggPj0gY291bnQpIHJldHVybiBkYXRhQXJyYXlbZGF0YUFycmF5Lmxlbmd0aF07CisgICAgICAgIHJldHVybiBkYXRhQXJyYXlbaW5kZXhdOworICAgIH0KKworICAgIC8qKgorICAgICAgICBTZWVzIHdoZXRoZXIgdGhlIHZlY3RvciBjb250YWlucyB0aGUgb2JqZWN0CisgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBjb250YWlucyAoT2JqZWN0IHZhbHVlKSB7CisgICAgICAgIGludCBpbmRleCA9IGluZGV4T2YodmFsdWUpOworICAgICAgICByZXR1cm4gKGluZGV4ID49IDAgJiYgY29tcGFyYXRvci5jb21wYXJlKHZhbHVlLGRhdGFBcnJheVtpbmRleF0pID09IDApOworICAgIH0KKworICAgIC8qKgorICAgICAgICBHZXRzIGFuIGVudW1lcmF0aW9uCisgICAgKi8KKyAgICBwdWJsaWMgRW51bWVyYXRpb24gZWxlbWVudHMoKSB7CisgICAgICAgIGlmICghaXNWYWxpZCkgdmFsaWRhdGUoKTsKKyAgICAgICAgcmV0dXJuIG5ldyBBcnJheUVudW1lcmF0aW9uKGRhdGFBcnJheSwwLGNvdW50KTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBjb3B5SW50byhPYmplY3RbXSB0b0ZpbGwpIHsKKyAgICAgICAgaWYgKCFpc1ZhbGlkKSB2YWxpZGF0ZSgpOworICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KGRhdGFBcnJheSwwLHRvRmlsbCwwLHRvRmlsbC5sZW5ndGgpOworICAgIH0KKworICAgIC8qKgorICAgICAgICBGaW5kcyBmaXJzdCBpbmRleCB3aG9zZSB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gc2VhcmNoVmFsdWUKKyAgICAgICAgSWYgdGhlcmUgYXJlIG5vbmUsIHJldHVybnMgLTEKKyAgICAqLworICAgIHB1YmxpYyBpbnQgaW5kZXhPZihPYmplY3Qgc2VhcmNoVmFsdWUpCisgICAgeworICAgICAgICBpZiAoIWlzVmFsaWQpIHZhbGlkYXRlKCk7CisgICAgICAgIGludCBpbmRleCA9IHN0YXJ0SW5kZXg7CisgICAgICAgIGlmICgwIDw9IGNvbXBhcmF0b3IuY29tcGFyZShzZWFyY2hWYWx1ZSwgZGF0YUFycmF5W2F1eFN0YXJ0XSkpIHsKKyAgICAgICAgICAgIGluZGV4ICs9IGF1eFN0YXJ0OworICAgICAgICB9CisgICAgICAgIC8vIHZlcnkgZmFzdCwgY29tcGxldGVseSB1bnJvbGxlZCBiaW5hcnkgc2VhcmNoCisgICAgICAgIC8vIGVhY2ggY2FzZSBkZWxpYmVyYXRlbHkgZmFsbHMgdGhyb3VnaCB0byB0aGUgbmV4dAorICAgICAgICBzd2l0Y2ggKHBvd2VyKSB7CisgICAgICAgIGNhc2UgMzE6IGlmICgwID4gY29tcGFyYXRvci5jb21wYXJlKHNlYXJjaFZhbHVlLCBkYXRhQXJyYXlbaW5kZXgtMHg0MDAwMDAwMF0pKSBpbmRleCAtPSAweDQwMDAwMDAwOworICAgICAgICBjYXNlIDMwOiBpZiAoMCA+IGNvbXBhcmF0b3IuY29tcGFyZShzZWFyY2hWYWx1ZSwgZGF0YUFycmF5W2luZGV4LTB4MjAwMDAwMDBdKSkgaW5kZXggLT0gMHgyMDAwMDAwMDsKKyAgICAgICAgY2FzZSAyOTogaWYgKDAgPiBjb21wYXJhdG9yLmNvbXBhcmUoc2VhcmNoVmFsdWUsIGRhdGFBcnJheVtpbmRleC0weDEwMDAwMDAwXSkpIGluZGV4IC09IDB4MTAwMDAwMDA7CisKKyAgICAgICAgY2FzZSAyODogaWYgKDAgPiBjb21wYXJhdG9yLmNvbXBhcmUoc2VhcmNoVmFsdWUsIGRhdGFBcnJheVtpbmRleC0weDgwMDAwMDBdKSkgaW5kZXggLT0gMHg4MDAwMDAwOworICAgICAgICBjYXNlIDI3OiBpZiAoMCA+IGNvbXBhcmF0b3IuY29tcGFyZShzZWFyY2hWYWx1ZSwgZGF0YUFycmF5W2luZGV4LTB4NDAwMDAwMF0pKSBpbmRleCAtPSAweDQwMDAwMDA7CisgICAgICAgIGNhc2UgMjY6IGlmICgwID4gY29tcGFyYXRvci5jb21wYXJlKHNlYXJjaFZhbHVlLCBkYXRhQXJyYXlbaW5kZXgtMHgyMDAwMDAwXSkpIGluZGV4IC09IDB4MjAwMDAwMDsKKyAgICAgICAgY2FzZSAyNTogaWYgKDAgPiBjb21wYXJhdG9yLmNvbXBhcmUoc2VhcmNoVmFsdWUsIGRhdGFBcnJheVtpbmRleC0weDEwMDAwMDBdKSkgaW5kZXggLT0gMHgxMDAwMDAwOworCisgICAgICAgIGNhc2UgMjQ6IGlmICgwID4gY29tcGFyYXRvci5jb21wYXJlKHNlYXJjaFZhbHVlLCBkYXRhQXJyYXlbaW5kZXgtMHg4MDAwMDBdKSkgaW5kZXggLT0gMHg4MDAwMDA7CisgICAgICAgIGNhc2UgMjM6IGlmICgwID4gY29tcGFyYXRvci5jb21wYXJlKHNlYXJjaFZhbHVlLCBkYXRhQXJyYXlbaW5kZXgtMHg0MDAwMDBdKSkgaW5kZXggLT0gMHg0MDAwMDA7CisgICAgICAgIGNhc2UgMjI6IGlmICgwID4gY29tcGFyYXRvci5jb21wYXJlKHNlYXJjaFZhbHVlLCBkYXRhQXJyYXlbaW5kZXgtMHgyMDAwMDBdKSkgaW5kZXggLT0gMHgyMDAwMDA7CisgICAgICAgIGNhc2UgMjE6IGlmICgwID4gY29tcGFyYXRvci5jb21wYXJlKHNlYXJjaFZhbHVlLCBkYXRhQXJyYXlbaW5kZXgtMHgxMDAwMDBdKSkgaW5kZXggLT0gMHgxMDAwMDA7CisKKyAgICAgICAgY2FzZSAyMDogaWYgKDAgPiBjb21wYXJhdG9yLmNvbXBhcmUoc2VhcmNoVmFsdWUsIGRhdGFBcnJheVtpbmRleC0weDgwMDAwXSkpIGluZGV4IC09IDB4ODAwMDA7CisgICAgICAgIGNhc2UgMTk6IGlmICgwID4gY29tcGFyYXRvci5jb21wYXJlKHNlYXJjaFZhbHVlLCBkYXRhQXJyYXlbaW5kZXgtMHg0MDAwMF0pKSBpbmRleCAtPSAweDQwMDAwOworICAgICAgICBjYXNlIDE4OiBpZiAoMCA+IGNvbXBhcmF0b3IuY29tcGFyZShzZWFyY2hWYWx1ZSwgZGF0YUFycmF5W2luZGV4LTB4MjAwMDBdKSkgaW5kZXggLT0gMHgyMDAwMDsKKyAgICAgICAgY2FzZSAxNzogaWYgKDAgPiBjb21wYXJhdG9yLmNvbXBhcmUoc2VhcmNoVmFsdWUsIGRhdGFBcnJheVtpbmRleC0weDEwMDAwXSkpIGluZGV4IC09IDB4MTAwMDA7CisKKyAgICAgICAgY2FzZSAxNjogaWYgKDAgPiBjb21wYXJhdG9yLmNvbXBhcmUoc2VhcmNoVmFsdWUsIGRhdGFBcnJheVtpbmRleC0weDgwMDBdKSkgaW5kZXggLT0gMHg4MDAwOworICAgICAgICBjYXNlIDE1OiBpZiAoMCA+IGNvbXBhcmF0b3IuY29tcGFyZShzZWFyY2hWYWx1ZSwgZGF0YUFycmF5W2luZGV4LTB4NDAwMF0pKSBpbmRleCAtPSAweDQwMDA7CisgICAgICAgIGNhc2UgMTQ6IGlmICgwID4gY29tcGFyYXRvci5jb21wYXJlKHNlYXJjaFZhbHVlLCBkYXRhQXJyYXlbaW5kZXgtMHgyMDAwXSkpIGluZGV4IC09IDB4MjAwMDsKKyAgICAgICAgY2FzZSAxMzogaWYgKDAgPiBjb21wYXJhdG9yLmNvbXBhcmUoc2VhcmNoVmFsdWUsIGRhdGFBcnJheVtpbmRleC0weDEwMDBdKSkgaW5kZXggLT0gMHgxMDAwOworCisgICAgICAgIGNhc2UgMTI6IGlmICgwID4gY29tcGFyYXRvci5jb21wYXJlKHNlYXJjaFZhbHVlLCBkYXRhQXJyYXlbaW5kZXgtMHg4MDBdKSkgaW5kZXggLT0gMHg4MDA7CisgICAgICAgIGNhc2UgMTE6IGlmICgwID4gY29tcGFyYXRvci5jb21wYXJlKHNlYXJjaFZhbHVlLCBkYXRhQXJyYXlbaW5kZXgtMHg0MDBdKSkgaW5kZXggLT0gMHg0MDA7CisgICAgICAgIGNhc2UgMTA6IGlmICgwID4gY29tcGFyYXRvci5jb21wYXJlKHNlYXJjaFZhbHVlLCBkYXRhQXJyYXlbaW5kZXgtMHgyMDBdKSkgaW5kZXggLT0gMHgyMDA7CisgICAgICAgIGNhc2UgIDk6IGlmICgwID4gY29tcGFyYXRvci5jb21wYXJlKHNlYXJjaFZhbHVlLCBkYXRhQXJyYXlbaW5kZXgtMHgxMDBdKSkgaW5kZXggLT0gMHgxMDA7CisKKyAgICAgICAgY2FzZSAgODogaWYgKDAgPiBjb21wYXJhdG9yLmNvbXBhcmUoc2VhcmNoVmFsdWUsIGRhdGFBcnJheVtpbmRleC0weDgwXSkpIGluZGV4IC09IDB4ODA7CisgICAgICAgIGNhc2UgIDc6IGlmICgwID4gY29tcGFyYXRvci5jb21wYXJlKHNlYXJjaFZhbHVlLCBkYXRhQXJyYXlbaW5kZXgtMHg0MF0pKSBpbmRleCAtPSAweDQwOworICAgICAgICBjYXNlICA2OiBpZiAoMCA+IGNvbXBhcmF0b3IuY29tcGFyZShzZWFyY2hWYWx1ZSwgZGF0YUFycmF5W2luZGV4LTB4MjBdKSkgaW5kZXggLT0gMHgyMDsKKyAgICAgICAgY2FzZSAgNTogaWYgKDAgPiBjb21wYXJhdG9yLmNvbXBhcmUoc2VhcmNoVmFsdWUsIGRhdGFBcnJheVtpbmRleC0weDEwXSkpIGluZGV4IC09IDB4MTA7CisKKyAgICAgICAgY2FzZSAgNDogaWYgKDAgPiBjb21wYXJhdG9yLmNvbXBhcmUoc2VhcmNoVmFsdWUsIGRhdGFBcnJheVtpbmRleC0weDhdKSkgaW5kZXggLT0gODsKKyAgICAgICAgY2FzZSAgMzogaWYgKDAgPiBjb21wYXJhdG9yLmNvbXBhcmUoc2VhcmNoVmFsdWUsIGRhdGFBcnJheVtpbmRleC0weDRdKSkgaW5kZXggLT0gNDsKKyAgICAgICAgY2FzZSAgMjogaWYgKDAgPiBjb21wYXJhdG9yLmNvbXBhcmUoc2VhcmNoVmFsdWUsIGRhdGFBcnJheVtpbmRleC0weDJdKSkgaW5kZXggLT0gMjsKKyAgICAgICAgY2FzZSAgMTogaWYgKDAgPiBjb21wYXJhdG9yLmNvbXBhcmUoc2VhcmNoVmFsdWUsIGRhdGFBcnJheVtpbmRleC0weDFdKSkgaW5kZXggLT0gMTsKKworICAgICAgICBjYXNlICAwOiBpZiAoMCA+IGNvbXBhcmF0b3IuY29tcGFyZShzZWFyY2hWYWx1ZSwgZGF0YUFycmF5W2luZGV4XSkpIGluZGV4IC09IDE7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGluZGV4OworICAgIH0KKworICAgIC8vID09PT09PT09PT09PT09PT09IHByaXZhdGVzID09PT09PT09PT09PT09PT09PQorICAgIC8qKiBPbmx5IGNhbGwgaWYgY29tcGFyYXRvciBpcyBudWxsCisgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgdmFsaWRhdGVDb21wYXJhdG9yKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgT2JqZWN0IHRyaWFsID0gZGF0YUFycmF5WzBdOworICAgICAgICAgICAgaWYgKHRyaWFsIGluc3RhbmNlb2YgRmxvYXQgfHwgdHJpYWwgaW5zdGFuY2VvZiBEb3VibGUpIHsKKyAgICAgICAgICAgICAgICBjb21wYXJhdG9yID0gbmV3IERvdWJsZUNvbXBhcmF0b3IoKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodHJpYWwgaW5zdGFuY2VvZiBJbnRlZ2VyKSB7CisgICAgICAgICAgICAgICAgY29tcGFyYXRvciA9IG5ldyBJbnRlZ2VyQ29tcGFyYXRvcigpOworICAgICAgICAgICAgfSBlbHNlIGlmICh0cmlhbCBpbnN0YW5jZW9mIE51bWJlcikgeworICAgICAgICAgICAgICAgIGNvbXBhcmF0b3IgPSBuZXcgTG9uZ0NvbXBhcmF0b3IoKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodHJpYWwgaW5zdGFuY2VvZiBTdHJpbmcpIHsKKyAgICAgICAgICAgICAgICBjb21wYXJhdG9yID0gbmV3IFN0cmluZ0NvbXBhcmF0b3IoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY29tcGFyYXRvciA9IG5ldyBDb21wYXJhYmxlQ29tcGFyYXRvcigpOworICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkge30gLy8gbGVhdmUgbnVsbAorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCB2YWxpZGF0ZSgpIHsKKyAgICAgICAgaWYgKGlzVmFsaWQpIHJldHVybjsKKyAgICAgICAgLy8gaWYgdGhlIENvbXBhcmF0b3IgaXMgbnVsbCwgdGhlbiBwaWNrIGEgcmVhc29uYWJsZSBvbmUKKyAgICAgICAgaWYgKGNvbXBhcmF0b3IgPT0gbnVsbCkgdmFsaWRhdGVDb21wYXJhdG9yKCk7CisKKyAgICAgICAgLy8gZGV0ZXJtaW5lIHNlYXJjaCBwYXJhbWV0ZXJzCisKKyAgICAgICAgLy8gZmluZCBsZWFzdCBwb3dlciBvZiAyIGdyZWF0ZXIgdGhhbiBjb3VudAorICAgICAgICBmb3IgKHBvd2VyID0gZXhwMi5sZW5ndGgtMTsgcG93ZXIgPiAwICYmIGNvdW50IDwgZXhwMltwb3dlcl07IHBvd2VyLS0pIHt9CisKKyAgICAgICAgLy8gZGV0ZXJtaW5lIHRoZSBzdGFydGluZyBwb2ludAorICAgICAgICBpZiAoZXhwMltwb3dlcl0gIT0gY291bnQpIHsKKyAgICAgICAgICAgIGF1eFN0YXJ0ID0gY291bnQgLSBleHAyW3Bvd2VyXTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGF1eFN0YXJ0ID0gMDsKKyAgICAgICAgfQorICAgICAgICBzdGFydEluZGV4ID0gZXhwMltwb3dlcl0tMTsKKworICAgICAgICAvLyBzaGVsbCBzb3J0LiBMYXRlciwgbWFrZSB0aGlzIGEgUXVpY2tTb3J0CisgICAgICAgIGludCBsbyA9IDA7CisgICAgICAgIGludCB1cCA9IGNvdW50LTE7CisgICAgICAgIGZvciAoaW50IHN0ZXAgPSB1cCAtIGxvICsgMTsgc3RlcCA+IDE7KSB7CisgICAgICAgICAgICBpZiAoc3RlcCA8IDUpCisgICAgICAgICAgICAgICAgc3RlcCA9IDE7CisgICAgICAgICAgICBlbHNlIHN0ZXAgPSAoNSAqIHN0ZXAgLSAxKSAvIDExOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IHVwIC0gc3RlcDsgaSA+PSBsbzsgLS1pKSB7CisgICAgICAgICAgICAgICAgT2JqZWN0IHRlbXAgPSBkYXRhQXJyYXlbaV07CisgICAgICAgICAgICAgICAgaW50IGo7CisgICAgICAgICAgICAgICAgZm9yIChqID0gaSArIHN0ZXA7IGogPD0gdXAgJiYgMCA+IGNvbXBhcmF0b3IuY29tcGFyZShkYXRhQXJyYXlbal0sdGVtcCk7IGogKz0gc3RlcCkKKyAgICAgICAgICAgICAgICAgICAgZGF0YUFycmF5W2otc3RlcF0gPSBkYXRhQXJyYXlbal07CisgICAgICAgICAgICAgICAgZGF0YUFycmF5W2otc3RlcF0gPSB0ZW1wOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlzVmFsaWQgPSB0cnVlOworICAgIH0KKworICAgIHByaXZhdGUgT2JqZWN0W10gZGF0YUFycmF5ID0gbmV3IE9iamVjdFsxNl07CisgICAgcHJpdmF0ZSBDb21wYXJhdG9yIGNvbXBhcmF0b3I7CisgICAgcHJpdmF0ZSBpbnQgY291bnQgPSAwOworICAgIHByaXZhdGUgYm9vbGVhbiBpc1ZhbGlkID0gZmFsc2U7CisgICAgcHJpdmF0ZSBpbnQgYXV4U3RhcnQ7CisgICAgcHJpdmF0ZSBpbnQgc3RhcnRJbmRleDsKKyAgICBwcml2YXRlIGludCBwb3dlcjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgZXhwMltdID0geworICAgICAgICAweDEsIDB4MiwgMHg0LCAweDgsCisgICAgICAgIDB4MTAsIDB4MjAsIDB4NDAsIDB4ODAsCisgICAgICAgIDB4MTAwLCAweDIwMCwgMHg0MDAsIDB4ODAwLAorICAgICAgICAweDEwMDAsIDB4MjAwMCwgMHg0MDAwLCAweDgwMDAsCisgICAgICAgIDB4MTAwMDAsIDB4MjAwMDAsIDB4NDAwMDAsIDB4ODAwMDAsCisgICAgICAgIDB4MTAwMDAwLCAweDIwMDAwMCwgMHg0MDAwMDAsIDB4ODAwMDAwLAorICAgICAgICAweDEwMDAwMDAsIDB4MjAwMDAwMCwgMHg0MDAwMDAwLCAweDgwMDAwMDAsCisgICAgICAgIDB4MTAwMDAwMDAsIDB4MjAwMDAwMDAsIDB4NDAwMDAwMDB9OworCisgICAgLy8gVXRpbGl0eSBDbGFzc2VzCisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGNsYXNzIExvbmdDb21wYXJhdG9yIGltcGxlbWVudHMgQ29tcGFyYXRvciB7CisgICAgICAgIHB1YmxpYyBpbnQgY29tcGFyZShPYmplY3QgYSwgT2JqZWN0IGIpIHsKKyAgICAgICAgICAgIGxvbmcgYWEgPSAoKE51bWJlcilhKS5sb25nVmFsdWUoKTsKKyAgICAgICAgICAgIGxvbmcgYmIgPSAoKE51bWJlciliKS5sb25nVmFsdWUoKTsKKyAgICAgICAgICAgIHJldHVybiAoYWEgPCBiYiA/IC0xIDogYWEgPiBiYiA/IDEgOiAwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgY2xhc3MgSW50ZWdlckNvbXBhcmF0b3IgaW1wbGVtZW50cyBDb21wYXJhdG9yIHsKKyAgICAgICAgcHVibGljIGludCBjb21wYXJlKE9iamVjdCBhLCBPYmplY3QgYikgeworICAgICAgICAgICAgcmV0dXJuICgoKE51bWJlcilhKS5pbnRWYWx1ZSgpIC0gKChOdW1iZXIpYikuaW50VmFsdWUoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGNsYXNzIERvdWJsZUNvbXBhcmF0b3IgaW1wbGVtZW50cyBDb21wYXJhdG9yIHsKKyAgICAgICAgcHVibGljIGludCBjb21wYXJlKE9iamVjdCBhLCBPYmplY3QgYikgeworICAgICAgICAgICAgZG91YmxlIGFhID0gKChOdW1iZXIpYSkuZG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgIGRvdWJsZSBiYiA9ICgoTnVtYmVyKWIpLmRvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICByZXR1cm4gKGFhIDwgYmIgPyAtMSA6IGFhID4gYmIgPyAxIDogMCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGNsYXNzIENvbXBhcmFibGVDb21wYXJhdG9yIGltcGxlbWVudHMgQ29tcGFyYXRvciB7CisgICAgICAgIHB1YmxpYyBpbnQgY29tcGFyZShPYmplY3QgYSwgT2JqZWN0IGIpIHsKKyAgICAgICAgICAgIHJldHVybiAoKENvbXBhcmFibGUpYSkuY29tcGFyZVRvKGIpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBjbGFzcyBTdHJpbmdDb21wYXJhdG9yIGltcGxlbWVudHMgQ29tcGFyYXRvciB7CisgICAgICAgIHB1YmxpYyBpbnQgY29tcGFyZShPYmplY3QgYSwgT2JqZWN0IGIpIHsKKyAgICAgICAgICAgIHJldHVybiAoKFN0cmluZylhKS5jb21wYXJlVG8oKFN0cmluZyliKTsKKyAgICAgICAgfTsKKyAgICB9CisgICAgLy97e0RFQ0xBUkVfQ09OVFJPTFMKKwkvL319Cit9CisKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvU3BhY2VUcmFuc2l0aW9uLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL1NwYWNlVHJhbnNpdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmIwZTdmNDAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL1NwYWNlVHJhbnNpdGlvbi5qYXZhCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMDQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvU3BhY2VUcmFuc2l0aW9uLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDIvMTYgMDM6MDU6MzIgJCAKKyAqICRSZXZpc2lvbjogMS4yICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudG9vbC5sb2NhbGVjb252ZXJ0ZXI7CisKK2ltcG9ydCBqYXZhLmlvLio7CitpbXBvcnQgamF2YS51dGlsLio7CisKK3B1YmxpYyBjbGFzcyBTcGFjZVRyYW5zaXRpb24gZXh0ZW5kcyBDb21wbGV4VHJhbnNpdGlvbiB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTcGFjZVRyYW5zaXRpb24gR0xPQkFMID0gbmV3IFNwYWNlVHJhbnNpdGlvbihTVUNDRVNTKTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTUEFDRV9DSEFSUyA9ICIgXHQiOworICAgIAorICAgIHB1YmxpYyBTcGFjZVRyYW5zaXRpb24oaW50IHN1Y2Nlc3MpIHsKKyAgICAgICAgc3VwZXIoc3VjY2Vzcyk7CisgICAgICAgICAgICAvL3t7SU5JVF9DT05UUk9MUworICAgICAgICAvL319CisgICAgfQorICAgIHB1YmxpYyBib29sZWFuIGFjY2VwdHMoaW50IGMpIHsKKyAgICAgICAgcmV0dXJuIFNQQUNFX0NIQVJTLmluZGV4T2YoKGNoYXIpYykgPj0gMDsKKyAgICB9CisgICAgcHJvdGVjdGVkIExleC5UcmFuc2l0aW9uW11bXSBnZXRTdGF0ZXMoKSB7CisgICAgICAgIHJldHVybiBzdGF0ZXM7CisgICAgfQorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExleC5UcmFuc2l0aW9uW11bXSBzdGF0ZXMgPSB7CisgICAgICAgIHsgLy9zdGF0ZSAwOiAKKyAgICAgICAgICAgIG5ldyBMZXguU3RyaW5nVHJhbnNpdGlvbihTUEFDRV9DSEFSUywgTGV4LklHTk9SRV9DT05TVU1FLCAtMSksCisgICAgICAgICAgICBuZXcgTGV4LlBhcnNlRXhjZXB0aW9uVHJhbnNpdGlvbigiaWxsZWdhbCBzcGFjZSBjaGFyYWN0ZXIiKQorICAgICAgICB9LAorICAgICAgICB7IC8vc3RhdGUgMToKKyAgICAgICAgICAgIG5ldyBMZXguRU9GVHJhbnNpdGlvbihTVUNDRVNTKSwKKyAgICAgICAgICAgIG5ldyBMZXguU3RyaW5nVHJhbnNpdGlvbihTUEFDRV9DSEFSUywgTGV4LklHTk9SRV9DT05TVU1FLCAtMSksCisgICAgICAgICAgICBuZXcgTGV4LkRlZmF1bHRUcmFuc2l0aW9uKExleC5JR05PUkVfUFVUQkFDSywgU1VDQ0VTUykKKyAgICAgICAgfSwKKyAgICB9OworICAgIC8ve3tERUNMQVJFX0NPTlRST0xTCisgICAgLy99fQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9TeW1ib2xUcmFuc2l0aW9uLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL1N5bWJvbFRyYW5zaXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi40MDBjZjE0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9TeW1ib2xUcmFuc2l0aW9uLmphdmEKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMDQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvU3ltYm9sVHJhbnNpdGlvbi5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzAyLzE2IDAzOjA1OjMyICQgCisgKiAkUmV2aXNpb246IDEuMiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRvb2wubG9jYWxlY29udmVydGVyOworCitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGphdmEudXRpbC4qOworCitwdWJsaWMgY2xhc3MgU3ltYm9sVHJhbnNpdGlvbiBleHRlbmRzIENvbXBsZXhUcmFuc2l0aW9uIHsKKyAgICBwcml2YXRlIHN0YXRpYyBQb3NpeENoYXJNYXAgbWFwcGluZyA9IG5ldyBQb3NpeENoYXJNYXAoKTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN5bWJvbFRyYW5zaXRpb24gR0xPQkFMID0gbmV3IFN5bWJvbFRyYW5zaXRpb24oU1VDQ0VTUyk7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIHNldENoYXJNYXAoUG9zaXhDaGFyTWFwIG1hcHBpbmdJbikgeworICAgICAgICBtYXBwaW5nID0gbWFwcGluZ0luOworICAgICAgICBpZiAobWFwcGluZyA9PSBudWxsKSB7CisgICAgICAgICAgICBtYXBwaW5nID0gbmV3IFBvc2l4Q2hhck1hcCgpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBQb3NpeENoYXJNYXAgZ2V0Q2hhck1hcCgpIHsKKyAgICAgICAgcmV0dXJuIG1hcHBpbmc7CisgICAgfQorCisgICAgcHVibGljIFN5bWJvbFRyYW5zaXRpb24oaW50IHN1Y2Nlc3MpIHsKKyAgICAgICAgc3VwZXIoc3VjY2Vzcyk7CisgICAgICAgICAgICAvL3t7SU5JVF9DT05UUk9MUworICAgICAgICAvL319CisgICAgfQorICAgIHB1YmxpYyBib29sZWFuIGFjY2VwdHMoaW50IGMpIHsKKyAgICAgICAgcmV0dXJuICc8JyA9PSAoY2hhciljOworICAgIH0KKyAgICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVTdWNjZXNzKExleCBwYXJzZXIsIFN0cmluZ0J1ZmZlciBvdXRwdXQpIHsKKyAgICAgICAgU3RyaW5nIHRleHQgPSBwYXJzZXIuZ2V0RGF0YSgpOworICAgICAgICBTdHJpbmcgbWFwcGVkVGV4dCA9IG1hcHBpbmcubWFwS2V5KHRleHQpOworICAgICAgICBpZiAobWFwcGVkVGV4dCAhPSBudWxsKSB7CisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKG1hcHBlZFRleHQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCh0ZXh0KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBwcm90ZWN0ZWQgTGV4LlRyYW5zaXRpb25bXVtdIGdldFN0YXRlcygpIHsKKyAgICAgICAgc3luY2hyb25pemVkIChnZXRDbGFzcygpKSB7CisgICAgICAgICAgICBpZiAoc3RhdGVzID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBzdGF0ZXMgPSBuZXcgTGV4LlRyYW5zaXRpb25bXVtdIHsKKyAgICAgICAgICAgICAgICAgICAgeyAvL3N0YXRlIDA6IAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IExleC5DaGFyVHJhbnNpdGlvbignPCcsIExleC5BQ0NVTVVMQVRFX0NPTlNVTUUsIC0xKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBMZXguUGFyc2VFeGNlcHRpb25UcmFuc2l0aW9uKCJpbGxlZ2FsIGNoYXJhY3RlcnMgaW4gc3ltYm9sIikKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAvL3N0YXRlIDE6CisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgTGV4LkNoYXJUcmFuc2l0aW9uKCcvJywgTGV4LkFDQ1VNVUxBVEVfQ09OU1VNRSwgLTIpLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IExleC5DaGFyVHJhbnNpdGlvbignPicsIExleC5BQ0NVTVVMQVRFX0NPTlNVTUUsIFNVQ0NFU1MpLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IExleC5TdHJpbmdUcmFuc2l0aW9uKEVPTFRyYW5zaXRpb24uRU9MX0NIQVJTLCBMZXguSUdOT1JFX1BVVEJBQ0ssIC0zKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBMZXguRU9GVHJhbnNpdGlvbigtMyksCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgTGV4LkRlZmF1bHRUcmFuc2l0aW9uKExleC5BQ0NVTVVMQVRFX0NPTlNVTUUsIC0xKQorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICB7IC8vc3RhdGUgMjoKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBMZXguQ2hhclRyYW5zaXRpb24oJz4nLCBMZXguQUNDVU1VTEFURV9DT05TVU1FLCAtMSksCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgTGV4LkNoYXJUcmFuc2l0aW9uKCcvJywgTGV4LkFDQ1VNVUxBVEVfQ09OU1VNRSwgLTEpLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IExleC5QYXJzZUV4Y2VwdGlvblRyYW5zaXRpb24oImlsbGVnYWwgZXNjYXBlIGNoYXJhY3RlciBpbiBzeW1ib2wiKQorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICB7IC8vc3RhdGUgMzogZmFpbHVyZQorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IExleC5QYXJzZUV4Y2VwdGlvblRyYW5zaXRpb24oInVuZXhwZWN0ZWQgZW5kIG9mIGxpbmUvZmlsZSIpCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBzdGF0ZXM7CisgICAgfQorICAgIHByaXZhdGUgc3RhdGljIExleC5UcmFuc2l0aW9uW11bXSBzdGF0ZXM7CisgICAgCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIGFyZ3NbXSkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgTGV4LlRyYW5zaXRpb25bXVtdIHN0YXRlcyA9IHt7IAorICAgICAgICAgICAgICAgIG5ldyBTeW1ib2xUcmFuc2l0aW9uKFNVQ0NFU1MpLAorICAgICAgICAgICAgICAgIG5ldyBMZXguRU9GVHJhbnNpdGlvbigpLAorICAgICAgICAgICAgICAgIG5ldyBMZXguUGFyc2VFeGNlcHRpb25UcmFuc2l0aW9uKCJiYWQgdGVzdCBpbnB1dCIpCisgICAgICAgICAgICB9fTsKKyAgICAgICAgICAgIC8vU3RyaW5nIHRleHQgPSAiPENBUElUQUw+PFwiPD48Ly8+PFYlPjxONj48Q1lSSUxMSUM+IjsKKyAgICAgICAgICAgIFN0cmluZyB0ZXh0ID0gIjxVPjxTPjxEPiAiOworICAgICAgICAgICAgU3RyaW5nUmVhZGVyIHNyID0gbmV3IFN0cmluZ1JlYWRlcih0ZXh0KTsKKyAgICAgICAgICAgIFB1c2hiYWNrUmVhZGVyIHByID0gbmV3IFB1c2hiYWNrUmVhZGVyKHNyKTsKKyAgICAgICAgICAgIExleCBwYXJzZXIgPSBuZXcgTGV4KHN0YXRlcywgcHIpOworICAgICAgICAgICAgLy9wYXJzZXIuZGVidWcodHJ1ZSk7CisgICAgICAgICAgICBpbnQgcyA9IHBhcnNlci5uZXh0VG9rZW4oKTsKKyAgICAgICAgICAgIHdoaWxlIChzID09IFNVQ0NFU1MpIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocGFyc2VyLmdldERhdGEoKSk7CisgICAgICAgICAgICAgICAgcyA9IHBhcnNlci5uZXh0VG9rZW4oKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAvL3t7REVDTEFSRV9DT05UUk9MUworICAgIC8vfX0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvVG9rZW5UcmFuc2l0aW9uLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL1Rva2VuVHJhbnNpdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjlhYTVjMjUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvbG9jYWxlY29udmVydGVyL1Rva2VuVHJhbnNpdGlvbi5qYXZhCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMDQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvVG9rZW5UcmFuc2l0aW9uLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDIvMTYgMDM6MDU6MzIgJCAKKyAqICRSZXZpc2lvbjogMS4yICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5kZXYudG9vbC5sb2NhbGVjb252ZXJ0ZXI7CisKK2ltcG9ydCBqYXZhLmlvLio7CitpbXBvcnQgamF2YS51dGlsLio7CisKK3B1YmxpYyBjbGFzcyBUb2tlblRyYW5zaXRpb24gZXh0ZW5kcyBDb21wbGV4VHJhbnNpdGlvbiB7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBUb2tlblRyYW5zaXRpb24gR0xPQkFMID0gbmV3IFRva2VuVHJhbnNpdGlvbihTVUNDRVNTKTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTRVBBUkFUT1JfQ0hBUlMgPSAiOyIgKyBTcGFjZVRyYW5zaXRpb24uU1BBQ0VfQ0hBUlM7CisgICAgCisgICAgcHVibGljIFRva2VuVHJhbnNpdGlvbihpbnQgc3VjY2VzcykgeworICAgICAgICBzdXBlcihzdWNjZXNzKTsKKyAgICAgICAgICAgIC8ve3tJTklUX0NPTlRST0xTCisgICAgICAgIC8vfX0KK30KKyAgICBwdWJsaWMgYm9vbGVhbiBhY2NlcHRzKGludCBjKSB7CisgICAgICAgIHJldHVybiAoYyA+IDApICYmIAorICAgICAgICAgICAgIUVPTFRyYW5zaXRpb24uR0xPQkFMLmFjY2VwdHMoYykgJiYgCisgICAgICAgICAgICAhU3BhY2VUcmFuc2l0aW9uLkdMT0JBTC5hY2NlcHRzKGMpICYmICAKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICAoU0VQQVJBVE9SX0NIQVJTLmluZGV4T2YoKGNoYXIpYykgPCAwKSB8fAorICAgICAgICAgICAgICAgIFN5bWJvbFRyYW5zaXRpb24uR0xPQkFMLmFjY2VwdHMoYykgfHwKKyAgICAgICAgICAgICAgICBRdW90ZVRyYW5zaXRpb24uR0xPQkFMLmFjY2VwdHMoYykgfHwKKyAgICAgICAgICAgICAgICBFc2NhcGVUcmFuc2l0aW9uLkdMT0JBTC5hY2NlcHRzKGMpCisgICAgICAgICAgICApOworICAgIH0KKyAgICBwcm90ZWN0ZWQgTGV4LlRyYW5zaXRpb25bXVtdIGdldFN0YXRlcygpIHsKKyAgICAgICAgcmV0dXJuIHN0YXRlczsKKyAgICB9CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTGV4LlRyYW5zaXRpb25bXVtdIHN0YXRlcyA9IHsKKyAgICAgICAgeyAvL3N0YXRlIDA6IAorICAgICAgICAgICAgbmV3IFN5bWJvbFRyYW5zaXRpb24oLTEpLAorICAgICAgICAgICAgbmV3IFF1b3RlVHJhbnNpdGlvbigtMSksIAorICAgICAgICAgICAgbmV3IEVzY2FwZVRyYW5zaXRpb24oLTEpLAorICAgICAgICAgICAgbmV3IExleC5TdHJpbmdUcmFuc2l0aW9uKEVPTFRyYW5zaXRpb24uRU9MX0NIQVJTLCBMZXguSUdOT1JFX1BVVEJBQ0ssIC0yKSwKKyAgICAgICAgICAgIG5ldyBMZXguU3RyaW5nVHJhbnNpdGlvbihTRVBBUkFUT1JfQ0hBUlMsIExleC5JR05PUkVfUFVUQkFDSywgLTMpLAorICAgICAgICAgICAgbmV3IExleC5FT0ZUcmFuc2l0aW9uKC00KSwKKyAgICAgICAgICAgIG5ldyBMZXguRGVmYXVsdFRyYW5zaXRpb24oTGV4LkFDQ1VNVUxBVEVfQ09OU1VNRSwgLTEpCisgICAgICAgIH0sCisgICAgICAgIHsgLy9zdGF0ZSAxOgorICAgICAgICAgICAgbmV3IFN5bWJvbFRyYW5zaXRpb24oLTEpLAorICAgICAgICAgICAgbmV3IFF1b3RlVHJhbnNpdGlvbigtMSksIAorICAgICAgICAgICAgbmV3IEVzY2FwZVRyYW5zaXRpb24oLTEpLAorICAgICAgICAgICAgbmV3IExleC5TdHJpbmdUcmFuc2l0aW9uKEVPTFRyYW5zaXRpb24uRU9MX0NIQVJTLCBMZXguSUdOT1JFX1BVVEJBQ0ssIFNVQ0NFU1MpLAorICAgICAgICAgICAgbmV3IExleC5TdHJpbmdUcmFuc2l0aW9uKFNFUEFSQVRPUl9DSEFSUywgTGV4LklHTk9SRV9QVVRCQUNLLCBTVUNDRVNTKSwKKyAgICAgICAgICAgIG5ldyBMZXguRU9GVHJhbnNpdGlvbihTVUNDRVNTKSwKKyAgICAgICAgICAgIG5ldyBMZXguRGVmYXVsdFRyYW5zaXRpb24oTGV4LkFDQ1VNVUxBVEVfQ09OU1VNRSwgLTEpCisgICAgICAgIH0sCisgICAgICAgIHsgLy9zdGF0ZSAyOiBmYWlsdXJlIC0gdW5leHBlY3RlZCBFT0wKKyAgICAgICAgICAgIG5ldyBMZXguUGFyc2VFeGNlcHRpb25UcmFuc2l0aW9uKCJ1bmV4cGVjdGVkIEVPTCBpbiB0b2tlbiIpCisgICAgICAgIH0sCisgICAgICAgIHsgLy9zdGF0ZSAzOiBmYWlsdXJlCisgICAgICAgICAgICBuZXcgTGV4LlBhcnNlRXhjZXB0aW9uVHJhbnNpdGlvbigidW5leHBlY3RlZCBzZXBlcmF0b3IgY2hhcmFjdGVyIGluIHRva2VuIikKKyAgICAgICAgfSwKKyAgICAgICAgeyAvL3N0YXRlIDQ6IGZhaWx1cmUKKyAgICAgICAgICAgIG5ldyBMZXguUGFyc2VFeGNlcHRpb25UcmFuc2l0aW9uKCJ1bmV4cGVjdGVkIEVPRiBpbiB0b2tlbiIpCisgICAgICAgIH0sCisgICAgfTsKKyAgICAvL3t7REVDTEFSRV9DT05UUk9MUworICAgIC8vfX0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvbXlMb2NhbGVFbGVtZW50cy5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9teUxvY2FsZUVsZW1lbnRzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZDBmMmZkOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9sb2NhbGVjb252ZXJ0ZXIvbXlMb2NhbGVFbGVtZW50cy5qYXZhCkBAIC0wLDAgKzEsNTgzIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAgIENvcHlyaWdodCAoQykgMTk5Ni0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisgKiAgIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL2xvY2FsZWNvbnZlcnRlci9teUxvY2FsZUVsZW1lbnRzLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDgvMDEgMjA6Mjc6MjEgJCAKKyAqICRSZXZpc2lvbjogMS4zICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCisvKioKKyAqCisgKiBUYWJsZSBvZiBKYXZhIHN1cHBsaWVkIHN0YW5kYXJkIGxvY2FsZSBlbGVtZW50cworICoKKyAqIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGphdmEgTG9jYWxlVG9vbCBMb2NhbGVFbGVtZW50cy5qYXZhCisgKgorICogRGF0ZSBDcmVhdGVkOiBXZWQgQXVnIDIxIDE1OjQ3OjU3ICAxOTk2CisgKgorICogICAgIExvY2FsZSBFbGVtZW50cyBhbmQgUGF0dGVybnM6ICBsYXN0IHVwZGF0ZSAxMC8yMy85NgorICoKKyAqCisgKi8KKworLy8gV0FSTklORyA6IHRoZSBmb3JtYXQgb2YgdGhpcyBmaWxlIHdpbGwgY2hhbmdlIGluIHRoZSBmdXR1cmUhCisKK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRvb2wubG9jYWxlY29udmVydGVyOworCitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKKworcHVibGljIGNsYXNzIG15TG9jYWxlRWxlbWVudHMgZXh0ZW5kcyBMaXN0UmVzb3VyY2VCdW5kbGUgeworICAgIC8qKgorICAgICAqIE92ZXJyaWRlcyBMaXN0UmVzb3VyY2VCdW5kbGUKKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBPYmplY3RbXVtdIHsKKyAgICAgICAgICAgIHsgIkxvY2FsZVN0cmluZyIsICJlbl9VUyIgfSwgLy8gbG9jYWxlIGlkIGJhc2VkIG9uIGlzbyBjb2RlcworICAgICAgICAgICAgeyAiTG9jYWxlSUQiLCAiMDQwOSIgfSwgLy8gV2luZG93cyBpZAorICAgICAgICAgICAgeyAiU2hvcnRMYW5ndWFnZSIsICJlbmciIH0sIC8vIGlzby0zIGFiYnJldiBsYW5nIG5hbWUKKyAgICAgICAgICAgIHsgIlNob3J0Q291bnRyeSIsICJVU0EiIH0sIC8vIGlzby0zIGFiYnJldiBjb3VudHJ5IG5hbWUKKyAgICAgICAgICAgIHsgIkxhbmd1YWdlcyIsIC8vIGxhbmd1YWdlIG5hbWVzCisgICAgICAgICAgICAgICAgbmV3IFN0cmluZ1tdW10geworICAgICAgICAgICAgICAgICAgICB7ICJhYiIsICJBYmtoYXppYW4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgImFhIiwgIkFmYXIiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgImFmIiwgIkFmcmlrYWFucyIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAic3EiLCAiQWxiYW5pYW4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgImFtIiwgIkFtaGFyaWMiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgImFyIiwgIkFyYWJpYyIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiaHkiLCAiQXJtZW5pYW4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgImFzIiwgIkFzc2FtZXNlIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJheSIsICJBeW1hcmEiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgImF6IiwgIkF6ZXJiYWlqYW5pIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJiYSIsICJCYXNoa2lyIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJldSIsICJCYXNxdWUiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgImJuIiwgIkJlbmdhbGkiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgImR6IiwgIkJodXRhbmkiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgImJoIiwgIkJpaGFyaSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiYmkiLCAiQmlzbGFtYSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiYnIiLCAiQnJldG9uIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJiZyIsICJCdWxnYXJpYW4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm15IiwgIkJ1cm1lc2UiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgImJlIiwgIkJ5ZWxvcnVzc2lhbiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAia20iLCAiQ2FtYm9kaWFuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJjYSIsICJDYXRhbGFuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJ6aCIsICJDaGluZXNlIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJjbyIsICJDb3JzaWNhbiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiaHIiLCAiQ3JvYXRpYW4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgImNzIiwgIkN6ZWNoIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJkYSIsICJEYW5pc2giIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5sIiwgIkR1dGNoIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJlbiIsICJFbmdsaXNoIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJlbyIsICJFc3BlcmFudG8iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgImV0IiwgIkVzdG9uaWFuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJmbyIsICJGYWVyb2VzZSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiZmoiLCAiRmlqaSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiZmkiLCAiRmlubmlzaCIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiZnIiLCAiRnJlbmNoIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJmeSIsICJGcmlzaWFuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJnbCIsICJHYWxpY2lhbiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAia2EiLCAiR2VvcmdpYW4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgImRlIiwgIkdlcm1hbiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiZWwiLCAiR3JlZWsiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgImtsIiwgIkdyZWVubGFuZGljIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJnbiIsICJHdWFyYW5pIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJndSIsICJHdWphcmF0aSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiaGEiLCAiSGF1c2EiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIml3IiwgIkhlYnJldyIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiaGkiLCAiSGluZGkiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgImh1IiwgIkh1bmdhcmlhbiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiaXMiLCAiSWNlbGFuZGljIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJpbiIsICJJbmRvbmVzaWFuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJpYSIsICJJbnRlcmxpbmd1YSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiaWUiLCAiSW50ZXJsaW5ndWUiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgImlrIiwgIkludXBpYWsiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgImdhIiwgIklyaXNoIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJpdCIsICJJdGFsaWFuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJqYSIsICJKYXBhbmVzZSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAianciLCAiSmF2YW5lc2UiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgImtuIiwgIkthbm5hZGEiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgImtzIiwgIkthc2htaXJpIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJrayIsICJLYXpha2giIH0sCisgICAgICAgICAgICAgICAgICAgIHsgInJ3IiwgIktpbnlhcndhbmRhIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJreSIsICJLaXJnaGl6IiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJybiIsICJLaXJ1bmRpIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJrbyIsICJLb3JlYW4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgImt1IiwgIkt1cmRpc2giIH0sCisgICAgICAgICAgICAgICAgICAgIHsgImxvIiwgIkxhb3RoaWFuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJsYSIsICJMYXRpbiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibHYiLCAiTGF0dmlhbiAoTGV0dGlzaCkiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgImxuIiwgIkxpbmdhbGEiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgImx0IiwgIkxpdGh1YW5pYW4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm1rIiwgIk1hY2Vkb25pYW4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm1nIiwgIk1hbGFnYXN5IiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJtcyIsICJNYWxheSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibWwiLCAiTWFsYXlhbGFtIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJtdCIsICJNYWx0ZXNlIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJtaSIsICJNYW9yaSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibXIiLCAiTWFyYXRoaSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibW8iLCAiTW9sZGF2aWFuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJtbiIsICJNb25nb2xpYW4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hIiwgIk5hdXJ1IiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuZSIsICJOZXBhbGkiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5vIiwgIk5vcndlZ2lhbiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAib2MiLCAiT2NjaXRhbiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAib3IiLCAiT3JpeWEiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm9tIiwgIk9yb21vIChBZmFuKSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAicHMiLCAiUGFzaHRvIChQdXNodG8pIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJmYSIsICJQZXJzaWFuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJwbCIsICJQb2xpc2giIH0sCisgICAgICAgICAgICAgICAgICAgIHsgInB0IiwgIlBvcnR1Z3Vlc2UiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgInBhIiwgIlB1bmphYmkiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgInF1IiwgIlF1ZWNodWEiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgInJtIiwgIlJoYWV0by1Sb21hbmNlIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJybyIsICJSb21hbmlhbiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAicnUiLCAiUnVzc2lhbiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAic20iLCAiU2Ftb2FuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJzZyIsICJTYW5ncm8iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgInNhIiwgIlNhbnNrcml0IiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJnZCIsICJTY290cyBHYWVsaWMiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgInNyIiwgIlNlcmJpYW4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgInNoIiwgIlNlcmJvLUNyb2F0aWFuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJzdCIsICJTZXNvdGhvIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJ0biIsICJTZXRzd2FuYSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAic24iLCAiU2hvbmEiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgInNkIiwgIlNpbmRoaSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAic2kiLCAiU2luZ2hhbGVzZSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAic3MiLCAiU2lzd2F0aSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAic2siLCAiU2xvdmFrIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJzbCIsICJTbG92ZW5pYW4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgInNvIiwgIlNvbWFsaSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiZXMiLCAiU3BhbmlzaCIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAic3UiLCAiU3VuZGFuZXNlIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJzdyIsICJTd2FoaWxpIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJzdiIsICJTd2VkaXNoIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJ0bCIsICJUYWdhbG9nIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJ0ZyIsICJUYWppayIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAidGEiLCAiVGFtaWwiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgInR0IiwgIlRhdGFyIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJ0ZSIsICJUZWx1Z3UiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgInRoIiwgIlRoYWkiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgImJvIiwgIlRpYmV0YW4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgInRpIiwgIlRpZ3JpbnlhIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJ0byIsICJUb25nYSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAidHMiLCAiVHNvbmdhIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJ0ciIsICJUdXJraXNoIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJ0ayIsICJUdXJrbWVuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJ0dyIsICJUd2kiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgInVrIiwgIlVrcmFpbmlhbiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAidXIiLCAiVXJkdSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAidXoiLCAiVXpiZWsiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgInZpIiwgIlZpZXRuYW1lc2UiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgInZvIiwgIlZvbGFwdWsiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgImN5IiwgIldlbHNoIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJ3byIsICJXb2xvZiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAieGgiLCAiWGhvc2EiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgImppIiwgIllpZGRpc2giIH0sCisgICAgICAgICAgICAgICAgICAgIHsgInlvIiwgIllvcnViYSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAienUiLCAiWnVsdSIgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7ICJDb3VudHJpZXMiLCAvLyBjb3VudHJ5IG5hbWVzCisgICAgICAgICAgICAgICAgbmV3IFN0cmluZ1tdW10geworICAgICAgICAgICAgICAgICAgICB7ICJBRiIsICJBZmdoYW5pc3RhbiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiQUwiLCAiQWxiYW5pYSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiRFoiLCAiQWxnZXJpYSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiQUQiLCAiQW5kb3JyYSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiQU8iLCAiQW5nb2xhIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJBSSIsICJBbmd1aWxsYSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiQVIiLCAiQXJnZW50aW5hIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJBTSIsICJBcm1lbmlhIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJBVyIsICJBcnViYSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiQVUiLCAiQXVzdHJhbGlhIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJBVCIsICJBdXN0cmlhIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJBWiIsICJBemVyYmFpamFuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJCUyIsICJCYWhhbWFzIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJCSCIsICJCYWhyYWluIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJCRCIsICJCYW5nbGFkZXNoIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJCQiIsICJCYXJiYWRvcyIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiQlkiLCAiQmVsYXJ1cyIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiQkUiLCAiQmVsZ2l1bSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiQloiLCAiQmVsaXplIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJCSiIsICJCZW5pbiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiQk0iLCAiQmVybXVkYSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiQlQiLCAiQmh1dGFuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJCTyIsICJCb2xpdmlhIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJCQSIsICJCb3NuaWEgYW5kIEhlcnplZ292aW5hIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJCVyIsICJCb3Rzd2FuYSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiQlIiLCAiQnJhemlsIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJCTiIsICJCcnVuZWkgRGFydXNzYWxhbSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiQkciLCAiQnVsZ2FyaWEiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIkJGIiwgIkJ1cmtpbmEgRmFzbyIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiQkkiLCAiQnVydW5kaSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiS0giLCAiQ2FtYm9kaWEiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIkNNIiwgIkNhbWVyb29uIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJDQSIsICJDYW5hZGEiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIkNWIiwgIkNhcGUgVmVyZGUiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIkNGIiwgIkNlbnRyYWwgQWZyaWNhbiBSZXB1YmxpYyIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiVEQiLCAiQ2hhZCIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiQ0wiLCAiQ2hpbGUiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIkNOIiwgIkNoaW5hIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJDTyIsICJDb2xvbWJpYSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiS00iLCAiQ29tb3JvcyIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiQ0ciLCAiQ29uZ28iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIkNSIiwgIkNvc3RhIFJpY2EiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIkNJIiwgIkNvdGUgRCdpdm9pcmUiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIkhSIiwgIkNyb2F0aWEiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIkNVIiwgIkN1YmEiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIkNZIiwgIkN5cHJ1cyIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiQ1oiLCAiQ3plY2ggUmVwdWJsaWMiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIkRLIiwgIkRlbm1hcmsiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIkRKIiwgIkRqaWJvdXRpIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJETSIsICJEb21pbmljYSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiRE8iLCAiRG9taW5pY2FuIFJlcHVibGljIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJUUCIsICJFYXN0IFRpbW9yIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJFQyIsICJFY3VhZG9yIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJFRyIsICJFZ3lwdCIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiU1YiLCAiRWwgU2FsdmFkb3IiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIkdRIiwgIkVxdWF0b3JpYWwgR3VpbmVhIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJFUiIsICJFcml0cmVhIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJFRSIsICJFc3RvbmlhIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJFVCIsICJFdGhpb3BpYSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiRkoiLCAiRmlqaSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiRkkiLCAiRmlubGFuZCIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiRlIiLCAiRnJhbmNlIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJHRiIsICJGcmVuY2ggR3VpYW5hIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJQRiIsICJGcmVuY2ggUG9seW5lc2lhIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJURiIsICJGcmVuY2ggU291dGhlcm4gVGVycml0b3JpZXMiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIkdBIiwgIkdhYm9uIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJHTSIsICJHYW1iaWEiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIkdFIiwgIkdlb3JnaWEiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIkRFIiwgIkdlcm1hbnkiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIkdIIiwgIkdoYW5hIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJHUiIsICJHcmVlY2UiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIkdQIiwgIkd1YWRlbG91cGUiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIkdUIiwgIkd1YXRlbWFsYSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiR04iLCAiR3VpbmVhIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJHVyIsICJHdWluZWEtQmlzc2F1IiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJHWSIsICJHdXlhbmEiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIkhUIiwgIkhhaXRpIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJITiIsICJIb25kdXJhcyIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiSEsiLCAiSG9uZyBLb25nIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJIVSIsICJIdW5nYXJ5IiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJJUyIsICJJY2VsYW5kIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJJTiIsICJJbmRpYSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiSUQiLCAiSW5kb25lc2lhIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJJUiIsICJJcmFuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJJUSIsICJJcmFxIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJJRSIsICJJcmVsYW5kIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJJTCIsICJJc3JhZWwiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIklUIiwgIkl0YWx5IiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJKTSIsICJKYW1haWNhIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJKUCIsICJKYXBhbiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiSk8iLCAiSm9yZGFuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJLWiIsICJLYXpha2hzdGFuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJLRSIsICJLZW55YSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiS0kiLCAiS2lyaWJhdGkiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIktQIiwgIk5vcnRoIEtvcmVhIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJLUiIsICJTb3V0aCBLb3JlYSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiS1ciLCAiS3V3YWl0IiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJLRyIsICJLeXJneXpzdGFuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJMQSIsICJMYW9zIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJMViIsICJMYXR2aWEiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIkxCIiwgIkxlYmFub24iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIkxTIiwgIkxlc290aG8iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIkxSIiwgIkxpYmVyaWEiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIkxZIiwgIkxpYnlhbiBBcmFiIEphbWFoaXJpeWEiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIkxJIiwgIkxpZWNodGVuc3RlaW4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIkxUIiwgIkxpdGh1YW5pYSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiTFUiLCAiTHV4ZW1ib3VyZyIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiTUsiLCAiTWFjZWRvbmlhIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJNRyIsICJNYWRhZ2FzY2FyIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJNWSIsICJNYWxheXNpYSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiTUwiLCAiTWFsaSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiTVQiLCAiTWFsdGEiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIk1RIiwgIk1hcnRpbmlxdWUiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIk1SIiwgIk1hdXJpdGFuaWEiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIk1VIiwgIk1hdXJpdGl1cyIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiWVQiLCAiTWF5b3R0ZSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiTVgiLCAiTWV4aWNvIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJGTSIsICJNaWNyb25lc2lhIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJNRCIsICJNb2xkb3ZhIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJNQyIsICJNb25hY28iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIk1OIiwgIk1vbmdvbGlhIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJNUyIsICJNb250c2VycmF0IiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJNQSIsICJNb3JvY2NvIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJNWiIsICJNb3phbWJpcXVlIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJNTSIsICJNeWFubWFyIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJOQSIsICJOYW1pYmlhIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJOUCIsICJOZXBhbCIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiTkwiLCAiTmV0aGVybGFuZHMiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIkFOIiwgIk5ldGhlcmxhbmRzIEFudGlsbGVzIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJOQyIsICJOZXcgQ2FsZWRvbmlhIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJOWiIsICJOZXcgWmVhbGFuZCIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiTkkiLCAiTmljYXJhZ3VhIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJORSIsICJOaWdlciIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiTkciLCAiTmlnZXJpYSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiTlUiLCAiTml1ZSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiTk8iLCAiTm9yd2F5IiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJPTSIsICJPbWFuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJQSyIsICJQYWtpc3RhbiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiUEEiLCAiUGFuYW1hIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJQRyIsICJQYXB1YSBOZXcgR3VpbmVhIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJQWSIsICJQYXJhZ3VheSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiUEUiLCAiUGVydSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiUEgiLCAiUGhpbGlwcGluZXMiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIlBMIiwgIlBvbGFuZCIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiUFQiLCAiUG9ydHVnYWwiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIlBSIiwgIlB1ZXJ0byBSaWNvIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJRQSIsICJRYXRhciIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiUk8iLCAiUm9tYW5pYSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiUlUiLCAiUnVzc2lhbiBGZWRlcmF0aW9uIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJSVyIsICJSd2FuZGEiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIlNBIiwgIlNhdWRpIEFyYWJpYSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiU04iLCAiU2VuZWdhbCIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiU1AiLCAiU2VyYmlhIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJTQyIsICJTZXljaGVsbGVzIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJTTCIsICJTaWVycmEgTGVvbmUiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIlNHIiwgIlNpbmdhcG9yZSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiU0siLCAiU2xvdmFraWEiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIlNJIiwgIlNsb3ZlbmlhIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJTTyIsICJTb21hbGlhIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJaQSIsICJTb3V0aCBBZnJpY2EiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIkVTIiwgIlNwYWluIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJMSyIsICJTcmkgTGFua2EiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIlNEIiwgIlN1ZGFuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJTUiIsICJTdXJpbmFtZSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiU1oiLCAiU3dhemlsYW5kIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJTRSIsICJTd2VkZW4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIkNIIiwgIlN3aXR6ZXJsYW5kIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJTWSIsICJTeXJpYSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiVFciLCAiVGFpd2FuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJUSiIsICJUYWppa2lzdGFuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJUWiIsICJUYW56YW5pYSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiVEgiLCAiVGhhaWxhbmQiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIlRHIiwgIlRvZ28iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIlRLIiwgIlRva2VsYXUiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIlRPIiwgIlRvbmdhIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJUVCIsICJUcmluaWRhZCBhbmQgVG9iYWdvIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJUTiIsICJUdW5pc2lhIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJUUiIsICJUdXJrZXkiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIlRNIiwgIlR1cmttZW5pc3RhbiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiVUciLCAiVWdhbmRhIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJVQSIsICJVa3JhaW5lIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJBRSIsICJVbml0ZWQgQXJhYiBFbWlyYXRlcyIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiR0IiLCAiVW5pdGVkIEtpbmdkb20iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIlVTIiwgIlVuaXRlZCBTdGF0ZXMiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIlVZIiwgIlVydWd1YXkiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIlVaIiwgIlV6YmVraXN0YW4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIlZVIiwgIlZhbnVhdHUiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIlZBIiwgIlZhdGljYW4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIlZFIiwgIlZlbmV6dWVsYSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiVk4iLCAiVmlldCBOYW0iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIlZHIiwgIkJyaXRpc2ggVmlyZ2luIElzbGFuZHMiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIlZJIiwgIlUuUy4gVmlyZ2luIElzbGFuZHMiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIkVIIiwgIldlc3Rlcm4gU2FoYXJhIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJZRSIsICJZZW1lbiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiWVUiLCAiWXVnb3NsYXZpYSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiWlIiLCAiWmFpcmUiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIlpNIiwgIlphbWJpYSIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAiWlciLCAiWmltYmFid2UiIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeyAiJSVFVVJPIiwgIkV1cm8iIH0sIC8vIEV1cm8gdmFyaWFudCBkaXNwbGF5IG5hbWUKKyAgICAgICAgICAgIHsgIkxvY2FsZU5hbWVQYXR0ZXJucyIsCisgICAgICAgICAgICAgICAgLyogRm9ybWF0cyBmb3IgdGhlIGRpc3BsYXkgbmFtZSBvZiBhIGxvY2FsZSwgZm9yIGEgbGlzdCBvZgorICAgICAgICAgICAgICAgICAqIGl0ZW1zLCBhbmQgZm9yIGNvbXBvc2luZyB0d28gaXRlbXMgaW4gYSBsaXN0IGludG8gb25lIGl0ZW0uCisgICAgICAgICAgICAgICAgICogVGhlIGxpc3QgcGF0dGVybnMgYXJlIHVzZWQgaW4gdGhlIHZhcmlhbnQgbmFtZSBhbmQgaW4gdGhlCisgICAgICAgICAgICAgICAgICogZnVsbCBkaXNwbGF5IG5hbWUuCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgbmV3IFN0cmluZ1tdIHsKKyAgICAgICAgICAgICAgICAgICAgInswLGNob2ljZSwwI3wxI3sxfXwyI3sxfSAoezJ9KX0iLCAvLyBEaXNwbGF5IG5hbWUKKyAgICAgICAgICAgICAgICAgICAgInswLGNob2ljZSwwI3wxI3sxfXwyI3sxfSx7Mn18MyN7MX0sezJ9LHszfX0iLCAvLyBMaXN0CisgICAgICAgICAgICAgICAgICAgICJ7MH0sezF9IiAvLyBMaXN0IGNvbXBvc2l0aW9uCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsgIk1vbnRoTmFtZXMiLCAKKyAgICAgICAgICAgICAgICBuZXcgU3RyaW5nW10geyAKKyAgICAgICAgICAgICAgICAgICAgIkphbnVhcnkiLCAvLyBqYW51YXJ5CisgICAgICAgICAgICAgICAgICAgICJGZWJydWFyeSIsIC8vIGZlYnJ1YXJ5CisgICAgICAgICAgICAgICAgICAgICJNYXJjaCIsIC8vIG1hcmNoCisgICAgICAgICAgICAgICAgICAgICJBcHJpbCIsIC8vIGFwcmlsCisgICAgICAgICAgICAgICAgICAgICJNYXkiLCAvLyBtYXkKKyAgICAgICAgICAgICAgICAgICAgIkp1bmUiLCAvLyBqdW5lCisgICAgICAgICAgICAgICAgICAgICJKdWx5IiwgLy8ganVseQorICAgICAgICAgICAgICAgICAgICAiQXVndXN0IiwgLy8gYXVndXN0CisgICAgICAgICAgICAgICAgICAgICJTZXB0ZW1iZXIiLCAvLyBzZXB0ZW1iZXIKKyAgICAgICAgICAgICAgICAgICAgIk9jdG9iZXIiLCAvLyBvY3RvYmVyCisgICAgICAgICAgICAgICAgICAgICJOb3ZlbWJlciIsIC8vIG5vdmVtYmVyCisgICAgICAgICAgICAgICAgICAgICJEZWNlbWJlciIsIC8vIGRlY2VtYmVyCisgICAgICAgICAgICAgICAgICAgICIiIC8vIG1vbnRoIDEzIGlmIGFwcGxpY2FibGUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeyAiTW9udGhBYmJyZXZpYXRpb25zIiwgCisgICAgICAgICAgICAgICAgbmV3IFN0cmluZ1tdIHsgCisgICAgICAgICAgICAgICAgICAgICJKYW4iLCAvLyBhYmIgamFudWFyeQorICAgICAgICAgICAgICAgICAgICAiRmViIiwgLy8gYWJiIGZlYnJ1YXJ5CisgICAgICAgICAgICAgICAgICAgICJNYXIiLCAvLyBhYmIgbWFyY2gKKyAgICAgICAgICAgICAgICAgICAgIkFwciIsIC8vIGFiYiBhcHJpbAorICAgICAgICAgICAgICAgICAgICAiTWF5IiwgLy8gYWJiIG1heQorICAgICAgICAgICAgICAgICAgICAiSnVuIiwgLy8gYWJiIGp1bmUKKyAgICAgICAgICAgICAgICAgICAgIkp1bCIsIC8vIGFiYiBqdWx5CisgICAgICAgICAgICAgICAgICAgICJBdWciLCAvLyBhYmIgYXVndXN0CisgICAgICAgICAgICAgICAgICAgICJTZXAiLCAvLyBhYmIgc2VwdGVtYmVyCisgICAgICAgICAgICAgICAgICAgICJPY3QiLCAvLyBhYmIgb2N0b2JlcgorICAgICAgICAgICAgICAgICAgICAiTm92IiwgLy8gYWJiIG5vdmVtYmVyCisgICAgICAgICAgICAgICAgICAgICJEZWMiLCAvLyBhYmIgZGVjZW1iZXIKKyAgICAgICAgICAgICAgICAgICAgIiIgLy8gYWJiIG1vbnRoIDEzIGlmIGFwcGxpY2FibGUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeyAiRGF5TmFtZXMiLCAKKyAgICAgICAgICAgICAgICBuZXcgU3RyaW5nW10geyAKKyAgICAgICAgICAgICAgICAgICAgIlN1bmRheSIsIC8vIFN1bmRheQorICAgICAgICAgICAgICAgICAgICAiTW9uZGF5IiwgLy8gTW9uZGF5CisgICAgICAgICAgICAgICAgICAgICJUdWVzZGF5IiwgLy8gVHVlc2RheQorICAgICAgICAgICAgICAgICAgICAiV2VkbmVzZGF5IiwgLy8gV2VkbmVzZGF5CisgICAgICAgICAgICAgICAgICAgICJUaHVyc2RheSIsIC8vIFRodXJzZGF5CisgICAgICAgICAgICAgICAgICAgICJGcmlkYXkiLCAvLyBGcmlkYXkKKyAgICAgICAgICAgICAgICAgICAgIlNhdHVyZGF5IiAvLyBTYXR1cmRheQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7ICJEYXlBYmJyZXZpYXRpb25zIiwgCisgICAgICAgICAgICAgICAgbmV3IFN0cmluZ1tdIHsgCisgICAgICAgICAgICAgICAgICAgICJTdW4iLCAvLyBhYmIgU3VuZGF5CisgICAgICAgICAgICAgICAgICAgICJNb24iLCAvLyBhYmIgTW9uZGF5CisgICAgICAgICAgICAgICAgICAgICJUdWUiLCAvLyBhYmIgVHVlc2RheQorICAgICAgICAgICAgICAgICAgICAiV2VkIiwgLy8gYWJiIFdlZG5lc2RheQorICAgICAgICAgICAgICAgICAgICAiVGh1IiwgLy8gYWJiIFRodXJzZGF5CisgICAgICAgICAgICAgICAgICAgICJGcmkiLCAvLyBhYmIgRnJpZGF5CisgICAgICAgICAgICAgICAgICAgICJTYXQiIC8vIGFiYiBTYXR1cmRheQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7ICJBbVBtTWFya2VycyIsIAorICAgICAgICAgICAgICAgIG5ldyBTdHJpbmdbXSB7IAorICAgICAgICAgICAgICAgICAgICAiQU0iLCAvLyBhbSBtYXJrZXIKKyAgICAgICAgICAgICAgICAgICAgIlBNIiAvLyBwbSBtYXJrZXIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeyAiRXJhcyIsIAorICAgICAgICAgICAgICAgIG5ldyBTdHJpbmdbXSB7IC8vIGVyYSBzdHJpbmdzCisgICAgICAgICAgICAgICAgICAgICJCQyIsIAorICAgICAgICAgICAgICAgICAgICAiQUQiIAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7ICJOdW1iZXJQYXR0ZXJucyIsIAorICAgICAgICAgICAgICAgIG5ldyBTdHJpbmdbXSB7IAorICAgICAgICAgICAgICAgICAgICAiIywjIzAuIyMjOy0jLCMjMC4jIyMiLCAvLyBkZWNpbWFsIHBhdHRlcm4KKyAgICAgICAgICAgICAgICAgICAgIiQjLCMjMC4wMDsoJCMsIyMwLjAwKSIsIC8vIGN1cnJlbmN5IHBhdHRlcm4KKyAgICAgICAgICAgICAgICAgICAgIiMsIyMwJSIgLy8gcGVyY2VudCBwYXR0ZXJuCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsgIk51bWJlckVsZW1lbnRzIiwgCisgICAgICAgICAgICAgICAgbmV3IFN0cmluZ1tdIHsgCisgICAgICAgICAgICAgICAgICAgICIuIiwgLy8gZGVjaW1hbCBzZXBhcmF0b3IKKyAgICAgICAgICAgICAgICAgICAgIiwiLCAvLyBncm91cCAodGhvdXNhbmRzKSBzZXBhcmF0b3IKKyAgICAgICAgICAgICAgICAgICAgIjsiLCAvLyBsaXN0IHNlcGFyYXRvcgorICAgICAgICAgICAgICAgICAgICAiJSIsIC8vIHBlcmNlbnQgc2lnbgorICAgICAgICAgICAgICAgICAgICAiMCIsIC8vIG5hdGl2ZSAwIGRpZ2l0CisgICAgICAgICAgICAgICAgICAgICIjIiwgLy8gcGF0dGVybiBkaWdpdAorICAgICAgICAgICAgICAgICAgICAiLSIsIC8vIG1pbnVzIHNpZ24KKyAgICAgICAgICAgICAgICAgICAgIkUiLCAvLyBleHBvbmVudGlhbAorICAgICAgICAgICAgICAgICAgICAiXHUyMDMwIiwgLy8gcGVyIG1pbGxlCisgICAgICAgICAgICAgICAgICAgICJcdTIyMWUiLCAvLyBpbmZpbml0eQorICAgICAgICAgICAgICAgICAgICAiXHVmZmZkIiAvLyBOYU4KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeyAiQ3VycmVuY3lFbGVtZW50cyIsIAorICAgICAgICAgICAgICAgIG5ldyBTdHJpbmdbXSB7IAorICAgICAgICAgICAgICAgICAgICAiJCIsIC8vIGxvY2FsIGN1cnJlbmN5IHN5bWJvbAorICAgICAgICAgICAgICAgICAgICAiVVNEIiwgLy8gaW50bCBjdXJyZW5jeSBzeW1ib2wKKyAgICAgICAgICAgICAgICAgICAgIi4iIC8vIG1vbmV0YXJ5IGRlY2ltYWwgc2VwYXJhdG9yCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsgIkRhdGVUaW1lUGF0dGVybnMiLCAKKyAgICAgICAgICAgICAgICBuZXcgU3RyaW5nW10geyAKKyAgICAgICAgICAgICAgICAgICAgImg6bW06c3MgJ28nJycnY2xvY2snIGEgeiIsIC8vIGZ1bGwgdGltZSBwYXR0ZXJuCisgICAgICAgICAgICAgICAgICAgICJoOm1tOnNzIGEgeiIsIC8vIGxvbmcgdGltZSBwYXR0ZXJuCisgICAgICAgICAgICAgICAgICAgICJoOm1tOnNzIGEiLCAvLyBtZWRpdW0gdGltZSBwYXR0ZXJuCisgICAgICAgICAgICAgICAgICAgICJoOm1tIGEiLCAvLyBzaG9ydCB0aW1lIHBhdHRlcm4KKyAgICAgICAgICAgICAgICAgICAgIkVFRUUsIE1NTU0gZCwgeXl5eSIsIC8vIGZ1bGwgZGF0ZSBwYXR0ZXJuCisgICAgICAgICAgICAgICAgICAgICJNTU1NIGQsIHl5eXkiLCAvLyBsb25nIGRhdGUgcGF0dGVybgorICAgICAgICAgICAgICAgICAgICAiZGQtTU1NLXl5IiwgLy8gbWVkaXVtIGRhdGUgcGF0dGVybgorICAgICAgICAgICAgICAgICAgICAiTS9kL3l5IiwgLy8gc2hvcnQgZGF0ZSBwYXR0ZXJuCisgICAgICAgICAgICAgICAgICAgICJ7MX0gezB9IiAvLyBkYXRlLXRpbWUgcGF0dGVybgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7ICJEYXRlVGltZUVsZW1lbnRzIiwgCisgICAgICAgICAgICAgICAgbmV3IFN0cmluZ1tdIHsgCisgICAgICAgICAgICAgICAgICAgICIxIiwgLy8gZmlyc3QgZGF5IG9mIHdlZWsKKyAgICAgICAgICAgICAgICAgICAgIjEiIC8vIG1pbiBkYXlzIGluIGZpcnN0IHdlZWsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeyAiQ29sbGF0aW9uRWxlbWVudHMiLG5ldyBTdHJpbmdbXVtdeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyJWZXJzaW9uIiwiMS4wIn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ik92ZXJpZGUiLCJmYWxzZSJ9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyJTZXF1ZW5jZSIsIiJ9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7ICJNZWFzdXJlbWVudCIgLCIifSwKKyAgICAgICAgICAgIHsgIkNvdW50cnlOdW1iZXIiICwgIiJ9LAorICAgICAgICAgICAgeyAiQ291bnRyeUlTQk5OdW1iZXIiICwgIiJ9LAorICAgICAgICAgICAgeyAiTGFuZ3VhZ2VMaWJyYXJ5VXNlIiAsICIifSwKKyAgICAgICAgICAgIHsgIlBhcGVyU2l6ZSIsIG5ldyBTdHJpbmdbXVtdeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsiSGllZ2h0IiwiIn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyJXaWR0aCIsIiJ9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsiVW5pdHMiLCAiIn0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgCisgICAgICAgICAgICB7ICJNZXNzYWdlcyIgLCBuZXcgU3RyaW5nW11bXSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsieWVzRXhwcmVzc2lvbiIsIiJ9LCAvKiB5ZXMgZXhwcmVzc2lvbiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Im5vRXhwcmVzc2lvbiIsIiJ9ICAvKiBubyBleHByZXNzaW9uICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsgIkFkZHJlc3NGb3JtYXQiLCBuZXcgU3RyaW5nW11bXXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IlBvc3RhbEZvcm1hdCIsIiJ9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorCisgICAgICAgICAgICB7Ik5hbWVGb3JtYXQiLCBuZXcgU3RyaW5nW11bXXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCXsiTmFtZVBhdHRlcm4iLCIifSwKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsiR2VuZXJhbFNhbHV0YWlvbiIsICIifSwKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsiU2hvcnRTYWx1dGF0aW9uTXIiLCAiIn0sCisJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IlNob3J0U2FsdXRhdGlvbk1pc3MiLCIifSwKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsiU2hvcnRTYWx1dGF0aW9uTXJzIiwiIn0sCisJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IkxvbmdTYWx1dGF0aW9uTXIiLCIifSwKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsiTG9uZ1NhbHV0YXRpb25NaXNzIiwiIn0sCisJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IkxvbmdTYWx1dGF0aW9uTXJzIiwiIn0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAKKyAgICAgICAgICAgIHsgIklkZW50aWZpY2F0aW9uIiwgbmV3IFN0cmluZ1tdW117CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsiVGl0bGUiLCIifSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyJTb3VyY2UiLCIifSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyJBZGRyZXNzIiwiIn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsiQ29udGFjdCIsIiJ9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IkVtYWlsIiwiIn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsiVGVsZXBob25lIiwgIiJ9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IkZheCIsICIifSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyJMYW5ndWFnZSIsIiJ9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IlRlcnJpdG9yeSIsIiJ9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IkF1ZGllbmNlIiwgIiJ9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IkFwcGxpY2F0aW9uIiwgIiJ9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IkFiYnJldmlhdGlvbiIsICIifSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyJSZXZpc2lvbiIsICIifSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyJEYXRlIiwiIn0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsgIlRlbGVwaG9uZUZvcm1hdCIsIG5ldyBTdHJpbmdbXVtdeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IkludGVybmF0aW9uYWxGb3JtYXQiLCIifSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyJEb21lc3RpY0Zvcm1hdCIsIiJ9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IkludGVybmF0aW9uYWxEaWFsQ29kZSIsIiJ9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IkludGVybmF0aW9uYWxQcmVmaXgiLCIifQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSAgICAKKyAgICAgICAgfTsKKyAgICB9Cit9CisgICAgICAgICAgICAKKyAgICAgICAgICAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvcmJiaS9CdWlsZERpY3Rpb25hcnlGaWxlLmphdmEgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvcmJiaS9CdWlsZERpY3Rpb25hcnlGaWxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNDNjNTQxZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9yYmJpL0J1aWxkRGljdGlvbmFyeUZpbGUuamF2YQpAQCAtMCwwICsxLDg3NyBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL3JiYmkvQnVpbGREaWN0aW9uYXJ5RmlsZS5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzAyLzI1IDIyOjQzOjU5ICQgCisgKiAkUmV2aXNpb246IDEuNCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRvb2wucmJiaTsKKworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuQ29tcGFjdEJ5dGVBcnJheTsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0LlVuaWNvZGVTZXQ7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5VdGlsaXR5OworaW1wb3J0IGphdmEuaW8uKjsKK2ltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247CitpbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKKworcHVibGljIGNsYXNzIEJ1aWxkRGljdGlvbmFyeUZpbGUgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZyBhcmdzW10pCisgICAgICAgICAgICB0aHJvd3MgRmlsZU5vdEZvdW5kRXhjZXB0aW9uLCBVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uLCBJT0V4Y2VwdGlvbiB7CisgICAgICAgIFN0cmluZyBmaWxlbmFtZSA9IGFyZ3NbMF07CisgICAgICAgIFN0cmluZyBlbmNvZGluZyA9ICIiOworICAgICAgICBTdHJpbmcgb3V0cHV0RmlsZSA9ICIiOworICAgICAgICBTdHJpbmcgbGlzdGluZ0ZpbGUgPSAiIjsKKworICAgICAgICBpZiAoYXJncy5sZW5ndGggPj0gMikKKyAgICAgICAgICAgIGVuY29kaW5nID0gYXJnc1sxXTsKKworICAgICAgICBpZihhcmdzLmxlbmd0aCA+PSAzKQorICAgICAgICAgICAgb3V0cHV0RmlsZSA9IGFyZ3NbMl07CisKKyAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID49IDQpCisgICAgICAgICAgICBsaXN0aW5nRmlsZSA9IGFyZ3NbM107CisKKyAgICAgICAgQnVpbGREaWN0aW9uYXJ5RmlsZSBkaWN0aW9uYXJ5ID0gbmV3IEJ1aWxkRGljdGlvbmFyeUZpbGUoKTsKKyAgICAgICAgZGljdGlvbmFyeS5idWlsZChmaWxlbmFtZSwgZW5jb2RpbmcpOworCisgICAgICAgIERhdGFPdXRwdXRTdHJlYW0gb3V0ID0gbnVsbDsKKyAgICAgICAgaWYgKG91dHB1dEZpbGUubGVuZ3RoKCkgIT0gMCkgeworICAgICAgICAgICAgb3V0ID0gbmV3IERhdGFPdXRwdXRTdHJlYW0obmV3IEZpbGVPdXRwdXRTdHJlYW0ob3V0cHV0RmlsZSkpOworICAgICAgICAgICAgZGljdGlvbmFyeS53cml0ZURpY3Rpb25hcnlGaWxlKG91dCk7CisgICAgICAgIH0KKworICAgICAgICBQcmludFdyaXRlciBsaXN0aW5nID0gbnVsbDsKKyAgICAgICAgaWYgKGxpc3RpbmdGaWxlLmxlbmd0aCgpICE9IDApIHsKKyAgICAgICAgICAgIGxpc3RpbmcgPSBuZXcgUHJpbnRXcml0ZXIobmV3IE91dHB1dFN0cmVhbVdyaXRlcihuZXcgRmlsZU91dHB1dFN0cmVhbShsaXN0aW5nRmlsZSksICJVbmljb2RlTGl0dGxlIikpOworICAgICAgICAgICAgZGljdGlvbmFyeS5wcmludFdvcmRMaXN0KCIiLCAwLCBsaXN0aW5nKTsKKyAgICAgICAgICAgIGxpc3RpbmcuY2xvc2UoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBCdWlsZERpY3Rpb25hcnlGaWxlKCkgeworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGJ1aWxkKFN0cmluZyBmaWxlbmFtZSwgU3RyaW5nIGVuY29kaW5nKQorICAgICAgICAgICAgdGhyb3dzIEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiwgVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiwgSU9FeGNlcHRpb24geworICAgICAgICBGaWxlSW5wdXRTdHJlYW0gZmlsZSA9IG5ldyBGaWxlSW5wdXRTdHJlYW0oZmlsZW5hbWUpOworICAgICAgICBJbnB1dFN0cmVhbVJlYWRlciBpbjsKKyAgICAgICAgaWYgKGVuY29kaW5nLmxlbmd0aCgpID09IDApCisgICAgICAgICAgICBpbiA9IG5ldyBJbnB1dFN0cmVhbVJlYWRlcihmaWxlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW4gPSBuZXcgSW5wdXRTdHJlYW1SZWFkZXIoZmlsZSwgZW5jb2RpbmcpOworCisgICAgICAgIGJ1aWxkQ29sdW1uTWFwKGluKTsKKworICAgICAgICBmaWxlID0gbmV3IEZpbGVJbnB1dFN0cmVhbShmaWxlbmFtZSk7CisgICAgICAgIGlmIChlbmNvZGluZy5sZW5ndGgoKSA9PSAwKQorICAgICAgICAgICAgaW4gPSBuZXcgSW5wdXRTdHJlYW1SZWFkZXIoZmlsZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGluID0gbmV3IElucHV0U3RyZWFtUmVhZGVyKGZpbGUsIGVuY29kaW5nKTsKKworICAgICAgICBidWlsZFN0YXRlVGFibGUoaW4pOworLy9wcmludFRhYmxlKCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgYnVpbGRDb2x1bW5NYXAoSW5wdXRTdHJlYW1SZWFkZXIgaW4pIHRocm93cyBJT0V4Y2VwdGlvbiB7CitTeXN0ZW0ub3V0LnByaW50bG4oIkJ1aWxkaW5nIGNvbHVtbiBtYXAuLi4iKTsKKyAgICAgICAgVW5pY29kZVNldCBjaGFyc0luRmlsZSA9IG5ldyBVbmljb2RlU2V0KCk7CisgICAgICAgIGludCBjID0gaW4ucmVhZCgpOworaW50IHRvdGFsQ2hhcnMgPSAwOworICAgICAgICB3aGlsZSAoYyA+PSAwKSB7CisrK3RvdGFsQ2hhcnM7IGlmICh0b3RhbENoYXJzID4gMCAmJiB0b3RhbENoYXJzICUgNTAwMCA9PSAwKSBTeXN0ZW0ub3V0LnByaW50bG4oIlJlYWQgIiArIHRvdGFsQ2hhcnMgKyAiIGNoYXJhY3RlcnMuLi4iKTsKKyAgICAgICAgICAgIGlmIChjID4gJyAnKQorICAgICAgICAgICAgICAgIGNoYXJzSW5GaWxlLmFkZCgoY2hhciljKTsKKyAgICAgICAgICAgIGMgPSBpbi5yZWFkKCk7CisgICAgICAgIH0KKy8vICAgICAgICBUZXN0LmRlYnVnUHJpbnRsbihjaGFyc0luRmlsZS50b1N0cmluZygpKTsKKworICAgICAgICBTdHJpbmdCdWZmZXIgdGVtcFJldmVyc2VNYXAgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIHRlbXBSZXZlcnNlTWFwLmFwcGVuZCgnICcpOworCisgICAgICAgIGNvbHVtbk1hcCA9IG5ldyBDb21wYWN0Qnl0ZUFycmF5KCk7CisgICAgICAgIGludCBuID0gY2hhcnNJbkZpbGUuZ2V0UmFuZ2VDb3VudCgpOworICAgICAgICBieXRlIHAgPSAxOworICAgICAgICBmb3IgKGludCBpPTA7IGk8bjsgKytpKSB7CisgICAgICAgICAgICBjaGFyIHN0YXJ0ID0gKGNoYXIpIGNoYXJzSW5GaWxlLmdldFJhbmdlU3RhcnQoaSk7CisgICAgICAgICAgICBjaGFyIGVuZCA9IChjaGFyKSBjaGFyc0luRmlsZS5nZXRSYW5nZUVuZChpKTsKKyAgICAgICAgICAgIGZvciAoY2hhciBjaCA9IHN0YXJ0OyBjaCA8PSBlbmQ7IGNoKyspIHsKKyAgICAgICAgICAgICAgICBpZiAoY29sdW1uTWFwLmVsZW1lbnRBdChDaGFyYWN0ZXIudG9Mb3dlckNhc2UoY2gpKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbHVtbk1hcC5zZXRFbGVtZW50QXQoQ2hhcmFjdGVyLnRvVXBwZXJDYXNlKGNoKSwgQ2hhcmFjdGVyLnRvVXBwZXJDYXNlKGNoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwKTsKKyAgICAgICAgICAgICAgICAgICAgY29sdW1uTWFwLnNldEVsZW1lbnRBdChDaGFyYWN0ZXIudG9Mb3dlckNhc2UoY2gpLCBDaGFyYWN0ZXIudG9Mb3dlckNhc2UoY2gpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHApOworICAgICAgICAgICAgICAgICAgICArK3A7CisgICAgICAgICAgICAgICAgICAgIHRlbXBSZXZlcnNlTWFwLmFwcGVuZChjaCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisvL1N5c3RlbS5vdXQucHJpbnRsbigiQ29tcGFjdGluZy4uLiIpOworICAgICAgICBjb2x1bW5NYXAuY29tcGFjdCgpOworCisvL1N5c3RlbS5vdXQucHJpbnRsbih0ZW1wUmV2ZXJzZU1hcC50b1N0cmluZygpKTsKKyAgICAgICAgcmV2ZXJzZUNvbHVtbk1hcCA9IG5ldyBjaGFyW3BdOworICAgICAgICBVdGlsaXR5LmdldENoYXJzKHRlbXBSZXZlcnNlTWFwLCAwLCBwLCByZXZlcnNlQ29sdW1uTWFwLCAwKTsKKworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oInRvdGFsIGNvbHVtbnMgPSAiICsgcCk7CisgICAgICAgIG51bUNvbHMgPSBwOworICAgICAgICBudW1Db2xHcm91cHMgPSAobnVtQ29scyA+PiA1KSArIDE7CisKKy8qCitzaG9ydFtdIGluZGV4ID0gY29sdW1uTWFwLmdldEluZGV4QXJyYXkoKTsKK1N5c3RlbS5vdXQucHJpbnRsbigiSW5kZXg6Iik7Citmb3IgKGludCBpID0gMDsgaSA8IGluZGV4Lmxlbmd0aDsgaSsrKSB7CitpZiAoaSAlIDE2ID09IDApIHsKK1N5c3RlbS5vdXQucHJpbnRsbigpOworU3lzdGVtLm91dC5wcmludCgiICAgICIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKGkgKiAxMjgpICsgIjoiKTsKK30KK1N5c3RlbS5vdXQucHJpbnQoIlx0IiArIEludGVnZXIudG9IZXhTdHJpbmcoaW5kZXhbaV0pKTsKK30KK1N5c3RlbS5vdXQucHJpbnRsbigpOworYnl0ZVtdIGRhdGEgPSBjb2x1bW5NYXAuZ2V0U3RyaW5nQXJyYXkoKTsKK1N5c3RlbS5vdXQucHJpbnQoIlZhbHVlczoiKTsKK2ZvciAoaW50IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykgeworaWYgKGkgJSAxNiA9PSAwKSB7CitTeXN0ZW0ub3V0LnByaW50bG4oKTsKK1N5c3RlbS5vdXQucHJpbnQoIiAgICAiICsgSW50ZWdlci50b0hleFN0cmluZyhpKSArICI6Iik7Cit9CitpZiAoZGF0YVtpXSA9PSAwKQorU3lzdGVtLm91dC5wcmludCgiXHQuIik7CitlbHNlCitTeXN0ZW0ub3V0LnByaW50KCJcdCIgKyBJbnRlZ2VyLnRvU3RyaW5nKGRhdGFbaV0pKTsKK30KK1N5c3RlbS5vdXQucHJpbnRsbigpOworKi8KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBidWlsZFN0YXRlVGFibGUoSW5wdXRTdHJlYW1SZWFkZXIgaW4pIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIFZlY3RvciB0ZW1wVGFibGUgPSBuZXcgVmVjdG9yKCk7CisgICAgICAgIHRlbXBUYWJsZS5hZGRFbGVtZW50KG5ldyBpbnRbbnVtQ29scyArIDFdKTsKKyAgICAgICAgaW50IHN0YXRlID0gMDsKKworICAgICAgICBpbnQgYyA9IGluLnJlYWQoKTsKKyAgICAgICAgaW50W10gcm93ID0gbnVsbDsKKyAgICAgICAgaW50IGNoYXJzSW5Xb3JkID0gMDsKKyAgICAgICAgd2hpbGUgKGMgPj0gMCkgeworICAgICAgICAgICAgY2hhcnNJbldvcmQrKzsKKyAgICAgICAgICAgIHNob3J0IGNvbHVtbiA9IGNvbHVtbk1hcC5lbGVtZW50QXQoKGNoYXIpYyk7CisKKyAgICAgICAgICAgIHJvdyA9IChpbnRbXSkodGVtcFRhYmxlLmVsZW1lbnRBdChzdGF0ZSkpOworICAgICAgICAgICAgaWYgKGNvbHVtbiAhPSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKHJvd1tjb2x1bW5dID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgcm93W2NvbHVtbl0gPSB0ZW1wVGFibGUuc2l6ZSgpOworICAgICAgICAgICAgICAgICAgICArK3Jvd1tudW1Db2xzXTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSAodGVtcFRhYmxlLnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIHRlbXBUYWJsZS5hZGRFbGVtZW50KG5ldyBpbnRbbnVtQ29scyArIDFdKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IHJvd1tjb2x1bW5dOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoc3RhdGUgIT0gMCkgeworICAgICAgICAgICAgICAgIGlmIChyb3dbMF0gIT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgcm93WzBdID0gLTE7CisgICAgICAgICAgICAgICAgICAgICsrcm93W251bUNvbHNdOworICAgICAgICAgICAgICAgICAgICB1bmlxdWVXb3JkcysrOworICAgICAgICAgICAgICAgICAgICB0b3RhbFVuaXF1ZVdvcmRDaGFycyArPSBjaGFyc0luV29yZDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdG90YWxXb3JkcysrOworaWYgKHRvdGFsV29yZHMgJSA1MDAwID09IDApIFN5c3RlbS5vdXQucHJpbnRsbigiUmVhZCAiICsgdG90YWxXb3JkcyArICIgd29yZHMsICIgKyB0ZW1wVGFibGUuc2l6ZSgpICsgIiByb3dzLi4uIik7CisgICAgICAgICAgICAgICAgY2hhcnNJbldvcmQgPSAwOworICAgICAgICAgICAgICAgIHN0YXRlID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGMgPSBpbi5yZWFkKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHN0YXRlICE9IDApIHsKKyAgICAgICAgICAgIHJvdyA9IChpbnRbXSkodGVtcFRhYmxlLmVsZW1lbnRBdChzdGF0ZSkpOworICAgICAgICAgICAgaWYgKHJvd1swXSAhPSAtMSkgeworICAgICAgICAgICAgICAgIHJvd1swXSA9IC0xOworICAgICAgICAgICAgICAgIHVuaXF1ZVdvcmRzKys7CisgICAgICAgICAgICAgICAgdG90YWxVbmlxdWVXb3JkQ2hhcnMgKz0gY2hhcnNJbldvcmQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0b3RhbFdvcmRzKys7CisgICAgICAgIH0KKworICAgICAgICBjb21wcmVzcyh0ZW1wVGFibGUpOworCisgICAgICAgIHRhYmxlID0gbmV3IHNob3J0W251bUNvbHMgKiB0ZW1wVGFibGUuc2l6ZSgpXTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0ZW1wVGFibGUuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIHJvdyA9IChpbnRbXSl0ZW1wVGFibGUuZWxlbWVudEF0KGkpOworICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBudW1Db2xzOyBqKyspCisgICAgICAgICAgICAgICAgdGFibGVbaSAqIG51bUNvbHMgKyBqXSA9IChzaG9ydClyb3dbal07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgY29tcHJlc3MoVmVjdG9yIHRlbXBUYWJsZSkgeworU3lzdGVtLm91dC5wcmludGxuKCJCZWZvcmUgY29tcHJlc3Npb246Iik7CitTeXN0ZW0ub3V0LnByaW50bG4oIiAgTnVtYmVyIG9mIHJvd3MgPSAiICsgdGVtcFRhYmxlLnNpemUoKSk7CitTeXN0ZW0ub3V0LnByaW50bG4oIiAgTnVtYmVyIG9mIGNvbHVtbnMgPSAiICsgbnVtQ29scyk7CitTeXN0ZW0ub3V0LnByaW50bG4oIiAgTnVtYmVyIG9mIGNlbGxzID0gIiArIHRlbXBUYWJsZS5zaXplKCkgKiBudW1Db2xzKTsKKyAgICAgICAgZGVsZXRlRHVwbGljYXRlUm93cyh0ZW1wVGFibGUpOworU3lzdGVtLm91dC5wcmludGxuKCJBZnRlciByZW1vdmluZyBkdXBsaWNhdGUgcm93czoiKTsKK1N5c3RlbS5vdXQucHJpbnRsbigiICBOdW1iZXIgb2Ygcm93cyA9ICIgKyB0ZW1wVGFibGUuc2l6ZSgpKTsKK1N5c3RlbS5vdXQucHJpbnRsbigiICBOdW1iZXIgb2YgY29sdW1ucyA9ICIgKyBudW1Db2xzKTsKK1N5c3RlbS5vdXQucHJpbnRsbigiICBOdW1iZXIgb2YgY2VsbHMgPSAiICsgdGVtcFRhYmxlLnNpemUoKSAqIG51bUNvbHMpOworICAgICAgICBzdGFja1Jvd3ModGVtcFRhYmxlKTsKK2lmICh0ZW1wVGFibGUuc2l6ZSgpID4gMzI3NjcpIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlRvbyBtYW55IHJvd3MgaW4gdGFibGUhIik7CitTeXN0ZW0ub3V0LnByaW50bG4oIkFmdGVyIGRvdWJsaW5nIHVwIG9uIHJvd3M6Iik7CitTeXN0ZW0ub3V0LnByaW50bG4oIiAgTnVtYmVyIG9mIHJvd3MgPSAiICsgdGVtcFRhYmxlLnNpemUoKSk7CitTeXN0ZW0ub3V0LnByaW50bG4oIiAgTnVtYmVyIG9mIGNvbHVtbnMgPSAiICsgbnVtQ29scyk7CitTeXN0ZW0ub3V0LnByaW50bG4oIiAgTnVtYmVyIG9mIGNlbGxzID0gIiArIHRlbXBUYWJsZS5zaXplKCkgKiBudW1Db2xzKTsKKyAgICB9CisKKy8qCitleHBlcmltZW50YWwuLi4KKyAgICBwcml2YXRlIHZvaWQgZGVsZXRlRHVwbGljYXRlUm93cyhWZWN0b3IgdGVtcFRhYmxlKSB7CisgICAgICAgIGludFtdIHJvd051bU1hcCA9IG5ldyBpbnRbdGVtcFRhYmxlLnNpemUoKV07CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcm93TnVtTWFwLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgcm93TnVtTWFwW2ldID0gaTsKKworICAgICAgICBpbnQgbmV4dENsYXNzID0gbnVtQ29sczsKKyAgICAgICAgaW50IGN1cnJlbnRDbGFzczsKKyAgICAgICAgaW50IGxhc3RDbGFzczsKKyAgICAgICAgYm9vbGVhbiBzcGxpdDsKKyAgICAgICAgaW50W10gcm93MSwgcm93MiwgdGVtcFJvdzsKKyAgICAgICAgaW50IHRlbXBDYXQ7CisKKyAgICAgICAgZG8geworU3lzdGVtLm91dC5wcmludGxuKCJNYWtpbmcgYSBwYXNzICgiICsgbmV4dENsYXNzICsgIiBjbGFzc2VzKS4uLiIpOworICAgICAgICAgICAgY3VycmVudENsYXNzID0gMDsKKyAgICAgICAgICAgIGxhc3RDbGFzcyA9IG5leHRDbGFzczsKKyAgICAgICAgICAgIHdoaWxlIChjdXJyZW50Q2xhc3MgPCBuZXh0Q2xhc3MpIHsKK1N5c3RlbS5vdXQucHJpbnRsbigiICAgY3VycmVudENsYXNzID0gIiArIGN1cnJlbnRDbGFzcyk7CisgICAgICAgICAgICAgICAgc3BsaXQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICByb3cxID0gcm93MiA9IG51bGw7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0ZW1wVGFibGUuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgdGVtcFJvdyA9IChpbnRbXSl0ZW1wVGFibGUuZWxlbWVudEF0KGkpOworICAgICAgICAgICAgICAgICAgICBpZiAodGVtcFJvd1tudW1Db2xzXSA9PSBjdXJyZW50Q2xhc3MpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyb3cxID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3cxID0gKGludFtdKXRlbXBUYWJsZS5lbGVtZW50QXQoaSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3cyID0gKGludFtdKXRlbXBUYWJsZS5lbGVtZW50QXQoaSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBudW1Db2xzOyBqKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChyb3cxW2pdID09IDApICE9IChyb3cyW2pdID09IDApIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyb3cxW2pdID09IC0xKSAhPSAocm93MltqXSA9PSAtMSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdzJbbnVtQ29sc10gPSBuZXh0Q2xhc3M7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGxpdCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChyb3cxW2pdICE9IDAgJiYgcm93MltqXSAhPSAwICYmIHJvdzFbal0gIT0gLTEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHJvdzJbal0gIT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBSb3cgPSAoaW50W10pdGVtcFRhYmxlLmVsZW1lbnRBdChyb3cxW2pdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBDYXQgPSB0ZW1wUm93W251bUNvbHNdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcFJvdyA9IChpbnRbXSl0ZW1wVGFibGUuZWxlbWVudEF0KHJvdzJbal0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXBDYXQgIT0gdGVtcFJvd1tudW1Db2xzXSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdzJbbnVtQ29sc10gPSBuZXh0Q2xhc3M7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BsaXQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChzcGxpdCkKKyAgICAgICAgICAgICAgICAgICAgKytuZXh0Q2xhc3M7CisgICAgICAgICAgICAgICAgKytjdXJyZW50Q2xhc3M7CisvL1N5c3RlbS5vdXQucHJpbnRsbigpOworICAgICAgICAgICAgfQorICAgICAgICB9IHdoaWxlIChsYXN0Q2xhc3MgIT0gbmV4dENsYXNzKTsKKworICAgICAgICBpbnRbXSByZXByZXNlbnRhdGl2ZXMgPSBuZXcgaW50W25leHRDbGFzc107CisgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgdGVtcFRhYmxlLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICB0ZW1wUm93ID0gKGludFtdKXRlbXBUYWJsZS5lbGVtZW50QXQoaSk7CisgICAgICAgICAgICBpZiAocmVwcmVzZW50YXRpdmVzW3RlbXBSb3dbbnVtQ29sc11dID09IDApCisgICAgICAgICAgICAgICAgcmVwcmVzZW50YXRpdmVzW3RlbXBSb3dbbnVtQ29sc11dID0gaTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByb3dOdW1NYXBbaV0gPSByZXByZXNlbnRhdGl2ZXNbdGVtcFJvd1tudW1Db2xzXV07CisgICAgICAgIH0KK1N5c3RlbS5vdXQucHJpbnRsbigiUmVudW1iZXJpbmcuLi4iKTsKKworICAgICAgICAvLyByZW51bWJlciBhbGwgcmVtYWluaW5nIHJvd3MKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByb3dOdW1NYXAubGVuZ3RoOyBpKyspCisgICAgICAgICAgICBpZiAocm93TnVtTWFwW2ldICE9IGkpCisgICAgICAgICAgICAgICAgdGVtcFRhYmxlLnNldEVsZW1lbnRBdChudWxsLCBpKTsKKyAgICAgICAgaW50IG5ld1Jvd051bSA9IDA7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcm93TnVtTWFwLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgaWYgKHRlbXBUYWJsZS5lbGVtZW50QXQoaSkgIT0gbnVsbCkKKyAgICAgICAgICAgICAgICByb3dOdW1NYXBbaV0gPSBuZXdSb3dOdW0rKzsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByb3dOdW1NYXAubGVuZ3RoOyBpKyspCisgICAgICAgICAgICBpZiAodGVtcFRhYmxlLmVsZW1lbnRBdChpKSA9PSBudWxsKQorICAgICAgICAgICAgICAgIHJvd051bU1hcFtpXSA9IHJvd051bU1hcFtyb3dOdW1NYXBbaV1dOworCisgICAgICAgIGZvciAoaW50IGkgPSB0ZW1wVGFibGUuc2l6ZSgpIC0gMTsgaSA+PSAwOyBpLS0pIHsKKyAgICAgICAgICAgIHRlbXBSb3cgPSAoaW50W10pdGVtcFRhYmxlLmVsZW1lbnRBdChpKTsKKyAgICAgICAgICAgIGlmICh0ZW1wUm93ID09IG51bGwpCisgICAgICAgICAgICAgICAgdGVtcFRhYmxlLnJlbW92ZUVsZW1lbnRBdChpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbnVtQ29sczsgaisrKQorICAgICAgICAgICAgICAgICAgICBpZiAodGVtcFJvd1tqXSAhPSAtMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBSb3dbal0gPSByb3dOdW1NYXBbal07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKy8vZm9yIChpbnQgaSA9IDE7IGkgPCByb3dOdW1NYXAubGVuZ3RoOyBpKyspIHJvd051bU1hcFtpXSA9IGk7IGludCBuZXdSb3dOdW0gPSByb3dOdW1NYXAubGVuZ3RoOworICAgIH0KKyovCisKKyAgICBwcml2YXRlIHZvaWQgZGVsZXRlRHVwbGljYXRlUm93cyhWZWN0b3IgdGVtcFRhYmxlKSB7CisgICAgICAgIFZlY3RvciB3b3JrID0gKFZlY3RvcikodGVtcFRhYmxlLmNsb25lKCkpOworICAgICAgICBib29sZWFuIGRpZERlbGV0ZVJvdyA9IHRydWU7CisKKyAgICAgICAgVmVjdG9yIHRlbXBNYXBwaW5nID0gbmV3IFZlY3Rvcih3b3JrLnNpemUoKSk7CisgICAgICAgIGludFtdIG1hcHBpbmcgPSBuZXcgaW50W3dvcmsuc2l6ZSgpXTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtYXBwaW5nLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBtYXBwaW5nW2ldID0gaTsKKyAgICAgICAgICAgIHRlbXBNYXBwaW5nLmFkZEVsZW1lbnQobmV3IEludGVnZXIoaSkpOworICAgICAgICB9CisgICAgICAgIGJvb2xlYW5bXSB0YmQgPSBuZXcgYm9vbGVhblt3b3JrLnNpemUoKV07CisKKyAgICAgICAgd2hpbGUgKGRpZERlbGV0ZVJvdykgeworU3lzdGVtLm91dC5wcmludGxuKCIgIiArIHdvcmsuc2l6ZSgpICsgIiByb3dzLi4uIik7CitpbnQgZGVsZXRlZFJvd3MgPSAwOworICAgICAgICAgICAgZGlkRGVsZXRlUm93ID0gZmFsc2U7CisKKyAgICAgICAgICAgIHNvcnRUYWJsZSh3b3JrLCB0ZW1wTWFwcGluZywgbWFwcGluZywgMSwgd29yay5zaXplKCkpOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB3b3JrLnNpemUoKSAtIDE7ICkgeworU3lzdGVtLm91dC5wcmludCgiRGVsZXRpbmcsIGluc3BlY3Rpbmcgcm93ICIgKyBpICsgIiwgZGVsZXRlZCAiICsgZGVsZXRlZFJvd3MgKyAiIHJvd3MuLi5cciIpOworICAgICAgICAgICAgICAgIGludCByb3dUb0RlbGV0ZSA9ICgoSW50ZWdlcikodGVtcE1hcHBpbmcuZWxlbWVudEF0KGkgKyAxKSkpLmludFZhbHVlKCk7CisgICAgICAgICAgICAgICAgaW50IHJvd1RvTWFwVG8gPSAoKEludGVnZXIpKHRlbXBNYXBwaW5nLmVsZW1lbnRBdChpKSkpLmludFZhbHVlKCk7CisgICAgICAgICAgICAgICAgaWYgKGNvbXBhcmVSb3dzKChpbnRbXSl3b3JrLmVsZW1lbnRBdChpKSwgKGludFtdKXdvcmsuZWxlbWVudEF0KGkgKyAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZykgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICB0YmRbcm93VG9EZWxldGVdID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgdGVtcFRhYmxlLnNldEVsZW1lbnRBdChudWxsLCByb3dUb0RlbGV0ZSk7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0YmRbbWFwcGluZ1tyb3dUb01hcFRvXV0pCisgICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nW3Jvd1RvTWFwVG9dID0gbWFwcGluZ1ttYXBwaW5nW3Jvd1RvTWFwVG9dXTsKKyAgICAgICAgICAgICAgICAgICAgbWFwcGluZ1tyb3dUb0RlbGV0ZV0gPSBtYXBwaW5nW3Jvd1RvTWFwVG9dOworICAgICAgICAgICAgICAgICAgICBkaWREZWxldGVSb3cgPSB0cnVlOworZGVsZXRlZFJvd3MrKzsKKyAgICAgICAgICAgICAgICAgICAgd29yay5yZW1vdmVFbGVtZW50QXQoaSArIDEpOworICAgICAgICAgICAgICAgICAgICB0ZW1wTWFwcGluZy5yZW1vdmVFbGVtZW50QXQoaSArIDEpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGkrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWFwcGluZy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIGlmICh0YmRbaV0gJiYgdGJkW21hcHBpbmdbaV1dKQorICAgICAgICAgICAgICAgICAgICBtYXBwaW5nW2ldID0gbWFwcGluZ1ttYXBwaW5nW2ldXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGludCBkZWNyZW1lbnRCeSA9IDA7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWFwcGluZy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgaWYgKHRiZFtpXSkKKyAgICAgICAgICAgICAgICBkZWNyZW1lbnRCeSsrOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1hcHBpbmdbaV0gLT0gZGVjcmVtZW50Qnk7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtYXBwaW5nLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBpZiAodGJkW2ldKQorICAgICAgICAgICAgICAgIG1hcHBpbmdbaV0gPSBtYXBwaW5nW21hcHBpbmdbaV1dOworICAgICAgICB9CisgICAgICAgIGZvciAoaW50IGkgPSB0ZW1wVGFibGUuc2l6ZSgpIC0gMTsgaSA+PSAwOyBpLS0pIHsKKyAgICAgICAgICAgIGlmICh0YmRbaV0pCisgICAgICAgICAgICAgICAgdGVtcFRhYmxlLnJlbW92ZUVsZW1lbnRBdChpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGludFtdIHJvdyA9IChpbnRbXSl0ZW1wVGFibGUuZWxlbWVudEF0KGkpOworICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbnVtQ29sczsgaisrKQorICAgICAgICAgICAgICAgICAgICByb3dbal0gPSAocm93W2pdID09IC0xKSA/IC0xIDogbWFwcGluZ1tyb3dbal1dOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHNvcnRUYWJsZShWZWN0b3IgdGFibGUsIFZlY3RvciB0ZW1wTWFwcGluZywgaW50W10gbWFwcGluZywgaW50IHN0YXJ0LCBpbnQgZW5kKSB7CitTeXN0ZW0ub3V0LnByaW50KCJTb3J0aW5nICgiICsgc3RhcnQgKyAiLCAiICsgZW5kICsgIikuLi5cciIpOworICAgICAgICBpZiAoc3RhcnQgKyAxID49IGVuZCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZWxzZSBpZiAoc3RhcnQgKyAxMCA+PSBlbmQpIHsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSBzdGFydCArIDE7IGkgPCBlbmQ7IGkrKykgeworICAgICAgICAgICAgICAgIGludFtdIHJvdyA9IChpbnRbXSl0YWJsZS5lbGVtZW50QXQoaSk7CisgICAgICAgICAgICAgICAgSW50ZWdlciB0ZW1wTWFwID0gKEludGVnZXIpdGVtcE1hcHBpbmcuZWxlbWVudEF0KGkpOworICAgICAgICAgICAgICAgIGludCBqOworICAgICAgICAgICAgICAgIGZvciAoaiA9IGkgLSAxOyBqID49IHN0YXJ0OyBqLS0pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBhcmVSb3dzKChpbnRbXSl0YWJsZS5lbGVtZW50QXQoaiksIHJvdywgbWFwcGluZykgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZS5zZXRFbGVtZW50QXQoKGludFtdKXRhYmxlLmVsZW1lbnRBdChqKSwgaiArIDEpOworICAgICAgICAgICAgICAgICAgICAgICAgdGVtcE1hcHBpbmcuc2V0RWxlbWVudEF0KChJbnRlZ2VyKXRlbXBNYXBwaW5nLmVsZW1lbnRBdChqKSwgaiArIDEpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUuc2V0RWxlbWVudEF0KHJvdywgaiArIDEpOworICAgICAgICAgICAgICAgICAgICAgICAgdGVtcE1hcHBpbmcuc2V0RWxlbWVudEF0KHRlbXBNYXAsIGogKyAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChqIDwgc3RhcnQpIHsKKyAgICAgICAgICAgICAgICAgICAgdGFibGUuc2V0RWxlbWVudEF0KHJvdywgc3RhcnQpOworICAgICAgICAgICAgICAgICAgICB0ZW1wTWFwcGluZy5zZXRFbGVtZW50QXQodGVtcE1hcCwgc3RhcnQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGludCBib3VuZGFyeVBvcyA9IChzdGFydCArIGVuZCkgLyAyOworICAgICAgICAgICAgaW50IGk7CisgICAgICAgICAgICBib29sZWFuIGFsbFRoZVNhbWUgPSB0cnVlOworICAgICAgICAgICAgaW50IGZpcnN0RGlmZmVyZW50ID0gMDsKKworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIGludFtdIGJvdW5kYXJ5ID0gKGludFtdKXRhYmxlLmVsZW1lbnRBdChib3VuZGFyeVBvcyk7CisgICAgICAgICAgICAgICAgaSA9IHN0YXJ0OworICAgICAgICAgICAgICAgIGludCBqID0gZW5kIC0gMTsKKyAgICAgICAgICAgICAgICBpbnRbXSByb3cgPSBudWxsOworICAgICAgICAgICAgICAgIGJ5dGUgY29tcFJlc3VsdDsKKyAgICAgICAgICAgICAgICB3aGlsZSAoaSA8IGopIHsKKyAgICAgICAgICAgICAgICAgICAgcm93ID0gKGludFtdKXRhYmxlLmVsZW1lbnRBdChpKTsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGkgPD0gaiAmJiBjb21wYXJlUm93cyhyb3csIGJvdW5kYXJ5LCBtYXBwaW5nKSA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGkrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJvdyA9IChpbnRbXSl0YWJsZS5lbGVtZW50QXQoaSk7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICByb3cgPSAoaW50W10pdGFibGUuZWxlbWVudEF0KGopOworICAgICAgICAgICAgICAgICAgICBjb21wUmVzdWx0ID0gY29tcGFyZVJvd3Mocm93LCBib3VuZGFyeSwgbWFwcGluZyk7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlIChpIDw9IGogJiYgKGNvbXBSZXN1bHQgPj0gMCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb21wUmVzdWx0ICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxUaGVTYW1lID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3REaWZmZXJlbnQgPSBqOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgai0tOworICAgICAgICAgICAgICAgICAgICAgICAgcm93ID0gKGludFtdKXRhYmxlLmVsZW1lbnRBdChqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBSZXN1bHQgPSBjb21wYXJlUm93cyhyb3csIGJvdW5kYXJ5LCBtYXBwaW5nKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoaSA8PSBqKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByb3cgPSAoaW50W10pdGFibGUuZWxlbWVudEF0KGopOworICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUuc2V0RWxlbWVudEF0KHRhYmxlLmVsZW1lbnRBdChpKSwgaik7CisgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZS5zZXRFbGVtZW50QXQocm93LCBpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdCB0ZW1wID0gdGVtcE1hcHBpbmcuZWxlbWVudEF0KGopOworICAgICAgICAgICAgICAgICAgICAgICAgdGVtcE1hcHBpbmcuc2V0RWxlbWVudEF0KHRlbXBNYXBwaW5nLmVsZW1lbnRBdChpKSwgaik7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wTWFwcGluZy5zZXRFbGVtZW50QXQodGVtcCwgaSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGkgPD0gc3RhcnQpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFsbFRoZVNhbWUpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kYXJ5UG9zID0gZmlyc3REaWZmZXJlbnQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSB3aGlsZSAoaSA8PSBzdGFydCk7CisgICAgICAgICAgICBzb3J0VGFibGUodGFibGUsIHRlbXBNYXBwaW5nLCBtYXBwaW5nLCBzdGFydCwgaSk7CisgICAgICAgICAgICBzb3J0VGFibGUodGFibGUsIHRlbXBNYXBwaW5nLCBtYXBwaW5nLCBpLCBlbmQpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBieXRlIGNvbXBhcmVSb3dzKGludFtdIHJvdzEsIGludFtdIHJvdzIsIGludFtdIG1hcHBpbmcpIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1Db2xzOyBpKyspIHsKKyAgICAgICAgICAgIGludCBjMSA9IChyb3cxW2ldID09IC0xKSA/IC0xIDogbWFwcGluZ1tyb3cxW2ldXTsKKyAgICAgICAgICAgIGludCBjMiA9IChyb3cyW2ldID09IC0xKSA/IC0xIDogbWFwcGluZ1tyb3cyW2ldXTsKKyAgICAgICAgICAgIGlmIChjMSA8IGMyKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGMxID4gYzIpCisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcHJpdmF0ZSBpbnRbXSBidWlsZFJvd0luZGV4KFZlY3RvciB0ZW1wVGFibGUpIHsKKyAgICAgICAgaW50W10gdGVtcFJvd0luZGV4ID0gbmV3IGludFt0ZW1wVGFibGUuc2l6ZSgpXTsKKyAgICAgICAgcm93SW5kZXhGbGFnc0luZGV4ID0gbmV3IHNob3J0W3RlbXBUYWJsZS5zaXplKCldOworICAgICAgICBWZWN0b3IgdGVtcFJvd0luZGV4RmxhZ3MgPSBuZXcgVmVjdG9yKCk7CisgICAgICAgIHJvd0luZGV4U2hpZnRzID0gbmV3IGJ5dGVbdGVtcFRhYmxlLnNpemUoKV07CisKKyAgICAgICAgLy8gYnVpbGQgdGhlIHJvdyBpbmRleC4gIEVhY2ggZW50cnkgaW4gdGhlIHJvdyBpbmRleCBzdGFydHMgb3V0IHJlZmVycmluZworICAgICAgICAvLyB0byB0aGUgb3JpZ2luYWwgcm93IChzbyBpdCBkb2Vzbid0IGFjdHVhbGx5IGRvIGFueSBtYXBwaW5nKSwgYW5kIHdlIHNldAorICAgICAgICAvLyB1cCB0aGUgaW5kZXggZmxhZ3MgdG8gc2hvdyB3aGljaCBjZWxscyBpbiB0aGUgcm93IGFyZSBwb3B1bGF0ZWQKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0ZW1wVGFibGUuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIHRlbXBSb3dJbmRleFtpXSA9IGk7CisKKyAgICAgICAgICAgIGludFtdIHJvdyA9IChpbnRbXSl0ZW1wVGFibGUuZWxlbWVudEF0KGkpOworICAgICAgICAgICAgaWYgKHJvd1tudW1Db2xzXSA9PSAxICYmIHJvd1swXSA9PSAwKSB7CisgICAgICAgICAgICAgICAgaW50IGogPSAwOworICAgICAgICAgICAgICAgIHdoaWxlIChyb3dbal0gPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgKytqOworICAgICAgICAgICAgICAgIHJvd0luZGV4RmxhZ3NJbmRleFtpXSA9IChzaG9ydCkoLWopOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaW50W10gZmxhZ3MgPSBuZXcgaW50W251bUNvbEdyb3Vwc107CisgICAgICAgICAgICAgICAgaW50IG5leHRGbGFnID0gMTsKKyAgICAgICAgICAgICAgICBpbnQgY29sR3JvdXAgPSAwOworICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbnVtQ29sczsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChyb3dbal0gIT0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzW2NvbEdyb3VwXSB8PSBuZXh0RmxhZzsKKyAgICAgICAgICAgICAgICAgICAgbmV4dEZsYWcgPDw9IDE7CisgICAgICAgICAgICAgICAgICAgIGlmIChuZXh0RmxhZyA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICArK2NvbEdyb3VwOworICAgICAgICAgICAgICAgICAgICAgICAgbmV4dEZsYWcgPSAxOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNvbEdyb3VwID0gMDsKKyAgICAgICAgICAgICAgICBpbnQgaiA9IDA7CisgICAgICAgICAgICAgICAgd2hpbGUgKGogPCB0ZW1wUm93SW5kZXhGbGFncy5zaXplKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCgoSW50ZWdlcil0ZW1wUm93SW5kZXhGbGFncy5lbGVtZW50QXQoaikpLmludFZhbHVlKCkgPT0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzW2NvbEdyb3VwXSkgeworICAgICAgICAgICAgICAgICAgICAgICAgKytjb2xHcm91cDsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrajsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb2xHcm91cCA+PSBudW1Db2xHcm91cHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY29sR3JvdXAgIT0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbEdyb3VwID0gMDsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgKytqOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByb3dJbmRleEZsYWdzSW5kZXhbaV0gPSAoc2hvcnQpKGogLSBjb2xHcm91cCk7CisgICAgICAgICAgICAgICAgd2hpbGUgKGNvbEdyb3VwIDwgbnVtQ29sR3JvdXBzKSB7CisgICAgICAgICAgICAgICAgICAgIHRlbXBSb3dJbmRleEZsYWdzLmFkZEVsZW1lbnQobmV3IEludGVnZXIoZmxhZ3NbY29sR3JvdXBdKSk7CisgICAgICAgICAgICAgICAgICAgICsrY29sR3JvdXA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJvd0luZGV4RmxhZ3MgPSBuZXcgaW50W3RlbXBSb3dJbmRleEZsYWdzLnNpemUoKV07CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcm93SW5kZXhGbGFncy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgIHJvd0luZGV4RmxhZ3NbaV0gPSAoKEludGVnZXIpdGVtcFJvd0luZGV4RmxhZ3MuZWxlbWVudEF0KGkpKS5pbnRWYWx1ZSgpOworU3lzdGVtLm91dC5wcmludGxuKCJOdW1iZXIgb2YgY29sdW1uIGdyb3VwcyA9ICIgKyBudW1Db2xHcm91cHMpOworU3lzdGVtLm91dC5wcmludGxuKCJTaXplIG9mIHJvd0luZGV4RmxhZ3MgPSAiICsgcm93SW5kZXhGbGFncy5sZW5ndGgpOworCisgICAgICAgIHJldHVybiB0ZW1wUm93SW5kZXg7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHN0YWNrUm93cyhWZWN0b3IgdGVtcFRhYmxlKSB7CisvKgorU3lzdGVtLm91dC5wcmludCgiUm93Olx0Iik7Citmb3IgKGludCBpID0gMDsgaSA8IG51bUNvbHM7IGkrKykKK1N5c3RlbS5vdXQucHJpbnQocmV2ZXJzZUNvbHVtbk1hcFtpXSArICJcdCIpOworU3lzdGVtLm91dC5wcmludGxuKCk7Citmb3IgKGludCBpID0gMDsgaSA8IHRlbXBUYWJsZS5zaXplKCk7IGkrKykgeworU3lzdGVtLm91dC5wcmludChJbnRlZ2VyLnRvU3RyaW5nKGkpICsgIjpcdCIpOworaW50W10gcm93ID0gKGludFtdKXRlbXBUYWJsZS5lbGVtZW50QXQoaSk7Citmb3IgKGludCBqID0gMDsgaiA8IHJvdy5sZW5ndGg7IGorKykKK2lmIChyb3dbal0gIT0gMCkgU3lzdGVtLm91dC5wcmludChJbnRlZ2VyLnRvU3RyaW5nKHJvd1tqXSkgKyAiXHQiKTsKK2Vsc2UgU3lzdGVtLm91dC5wcmludCgiLlx0Iik7CitTeXN0ZW0ub3V0LnByaW50bG4oKTsKK30KKyovCisKKyAgICAgICAgaW50W10gdGVtcFJvd0luZGV4ID0gYnVpbGRSb3dJbmRleCh0ZW1wVGFibGUpOworICAgICAgICBib29sZWFuW10gdGJkID0gbmV3IGJvb2xlYW5bdGVtcFRhYmxlLnNpemUoKV07CisKKyAgICAgICAgLy8gbm93IHdlIGFjdHVhbGx5IGdvIHRocm91Z2ggYW5kIHN0YWNrIHJvd3MgdG9nZXRoZXIKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0ZW1wVGFibGUuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIGlmICh0YmRbaV0pCisgICAgICAgICAgICAgICAgY29udGludWU7CitTeXN0ZW0ub3V0LnByaW50KCJTdGFja2luZywgaW5zcGVjdGluZyByb3cgIiArIGkgKyAiLi4uXHIiKTsKKy8vU3lzdGVtLm91dC5wcmludGxuKCJTdGFja2luZywgaW5zcGVjdGluZyByb3cgIiArIGkgKyAiLi4uIik7CisKKyAgICAgICAgICAgIGludFtdIGRlc3RSb3cgPSAoaW50W10pdGVtcFRhYmxlLmVsZW1lbnRBdChpKTsKKworICAgICAgICAgICAgYm9vbGVhbltdIHRlbXBGbGFncyA9IG5ldyBib29sZWFuW251bUNvbHNdOworICAgICAgICAgICAgYm9vbGVhbltdIGZpbGxlZENlbGxzID0gbmV3IGJvb2xlYW5bbnVtQ29sc107CisgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG51bUNvbHM7IGorKykKKyAgICAgICAgICAgICAgICBmaWxsZWRDZWxsc1tqXSA9IGRlc3RSb3dbal0gIT0gMDsKKworICAgICAgICAgICAgZm9yIChpbnQgaiA9IGkgKyAxOyBkZXN0Um93W251bUNvbHNdIDwgbnVtQ29scyAmJiBqIDwgdGVtcFRhYmxlLnNpemUoKTsgaisrKSB7CisgICAgICAgICAgICAgICAgaWYgKHRiZFtqXSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBpbnRbXSBzcmNSb3cgPSAoaW50W10pdGVtcFRhYmxlLmVsZW1lbnRBdChqKTsKKyAgICAgICAgICAgICAgICBpZiAoc3JjUm93W251bUNvbHNdICsgZGVzdFJvd1tudW1Db2xzXSA+IG51bUNvbHMpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgaW50IG1heExlZnRTaGlmdCA9IC05OTk7CisgICAgICAgICAgICAgICAgaW50IG1heFJpZ2h0U2hpZnQgPSAwOworICAgICAgICAgICAgICAgIGZvciAoaW50IGsgPSAwOyBrIDwgbnVtQ29sczsgaysrKSB7CisgICAgICAgICAgICAgICAgICAgIHRlbXBGbGFnc1trXSA9IHNyY1Jvd1trXSAhPSAwOworICAgICAgICAgICAgICAgICAgICBpZiAodGVtcEZsYWdzW2tdKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWF4TGVmdFNoaWZ0ID09IC05OTkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4TGVmdFNoaWZ0ID0gLWs7CisgICAgICAgICAgICAgICAgICAgICAgICBtYXhSaWdodFNoaWZ0ID0gKG51bUNvbHMgLSAxKSAtIGs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpbnQgc2hpZnQ7CisgICAgICAgICAgICAgICAgZm9yIChzaGlmdCA9IG1heExlZnRTaGlmdDsgc2hpZnQgPD0gbWF4UmlnaHRTaGlmdDsgc2hpZnQrKykgeworICAgICAgICAgICAgICAgICAgICBpbnQgazsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChrID0gMDsgayA8IG51bUNvbHM7IGsrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXBGbGFnc1trXSAmJiBmaWxsZWRDZWxsc1trICsgc2hpZnRdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChrID49IG51bUNvbHMpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHNoaWZ0IDw9IG1heFJpZ2h0U2hpZnQpIHsKKy8vU3lzdGVtLm91dC5wcmludGxuKCJQYWNraW5nIHJvdyAiICsgaiArICIgaW50byByb3cgIiArIGkgKyAiIHdpdGggc2hpZnQgPSAiICsgc2hpZnQpOworICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBrID0gMDsgayA8IG51bUNvbHM7IGsrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXBGbGFnc1trXSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxlZENlbGxzW2sgKyBzaGlmdF0gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RSb3dbayArIHNoaWZ0XSA9IHNyY1Jvd1trXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArK2Rlc3RSb3dbbnVtQ29sc107CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgdGJkW2pdID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgdGVtcFJvd0luZGV4W2pdID0gaTsKKyAgICAgICAgICAgICAgICAgICAgcm93SW5kZXhTaGlmdHNbal0gPSAoYnl0ZSlzaGlmdDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBmaW5hbGx5LCB3ZSBzcXVlZXplIG91dCBhbGwgdGhlIGRlbGV0ZWQgcm93cworICAgICAgICBpbnQgZGVjcmVtZW50QnkgPSAwOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRlbXBSb3dJbmRleC5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgaWYgKCF0YmRbaV0pCisgICAgICAgICAgICAgICAgdGVtcFJvd0luZGV4W2ldIC09IGRlY3JlbWVudEJ5OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICsrZGVjcmVtZW50Qnk7CisgICAgICAgIH0KKyAgICAgICAgcm93SW5kZXggPSBuZXcgc2hvcnRbdGVtcFJvd0luZGV4Lmxlbmd0aF07CisgICAgICAgIGZvciAoaW50IGkgPSB0ZW1wUm93SW5kZXgubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsKKyAgICAgICAgICAgIGlmICh0YmRbaV0pIHsKKyAgICAgICAgICAgICAgICByb3dJbmRleFtpXSA9IChzaG9ydCkodGVtcFJvd0luZGV4W3RlbXBSb3dJbmRleFtpXV0pOworICAgICAgICAgICAgICAgIHRlbXBUYWJsZS5yZW1vdmVFbGVtZW50QXQoaSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcm93SW5kZXhbaV0gPSAoc2hvcnQpdGVtcFJvd0luZGV4W2ldOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHByaW50VGFibGUoKSB7CisgICAgICAgIHNob3J0IGNlbGw7CisgICAgICAgIGludCBwb3B1bGF0ZWRDZWxscyA9IDA7CisvKgorICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkNvbmNlcHR1YWwgdGFibGU6Iik7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIFJvdzogICBhICAgYiAgIGMgICBkICAgZSAgIGYgICBnICAgaCAgIGkgICBqICAgayAgIGwgICBtICAgbiIKKyAgICAgICAgICAgICAgICArICIgICBvICAgcCAgIHEgICByICAgcyAgIHQgICB1ICAgdiAgIHcgICB4ICAgeSAgIHogICAnICAgIyIpOworCisgICAgICAgIGJvb2xlYW5bXSByb3dQcmludEZsYWdzID0gbmV3IGJvb2xlYW5bcm93SW5kZXgubGVuZ3RoXTsKKyAgICAgICAgcHJpbnRDb25jZXB0dWFsVGFibGUoIiIsIDAsIHJvd1ByaW50RmxhZ3MpOworKi8KKworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJDb25jZXB0dWFsIHRhYmxlOiIpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCIgUm93OiIpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJldmVyc2VDb2x1bW5NYXAubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCIgICAiICsgcmV2ZXJzZUNvbHVtbk1hcFtpXSk7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByb3dJbmRleC5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CisgICAgICAgICAgICBwcmludE51bWJlcihpLCA0KTsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIjoiKTsKKyAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbnVtQ29sczsgaisrKQorICAgICAgICAgICAgICAgIHByaW50TnVtYmVyKGF0KGksIGopLCA0KTsKKyAgICAgICAgfQorICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oJ1xuJyk7CisKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSW50ZXJuYWxseSBzdG9yZWQgdGFibGU6Iik7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIiBSb3c6Iik7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmV2ZXJzZUNvbHVtbk1hcC5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIiAgICIgKyByZXZlcnNlQ29sdW1uTWFwW2ldKTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRhYmxlLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBpZiAoaSAlIG51bUNvbHMgPT0gMCkgeworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOworICAgICAgICAgICAgICAgIHByaW50TnVtYmVyKGkgLyBudW1Db2xzLCA0KTsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCI6Iik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjZWxsID0gdGFibGVbaV07CisgICAgICAgICAgICBpZiAoY2VsbCAhPSAwKQorICAgICAgICAgICAgICAgIHBvcHVsYXRlZENlbGxzKys7CisgICAgICAgICAgICBwcmludE51bWJlcihjZWxsLCA0KTsKKyAgICAgICAgfQorICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oJ1xuJyk7CisKK1N5c3RlbS5vdXQucHJpbnRsbigiUm93IGluZGV4OiIpOworZm9yIChpbnQgaSA9IDA7IGkgPCByb3dJbmRleC5sZW5ndGg7IGkrKykgeworICAgIFN5c3RlbS5vdXQucHJpbnQoIiAgICIgKyBpICsgIiAtPiAiICsgcm93SW5kZXhbaV0pOworICAgIGlmIChyb3dJbmRleEZsYWdzSW5kZXhbaV0gPCAwKQorICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCIsIGZsYWdzID0gIiArIEludGVnZXIudG9CaW5hcnlTdHJpbmcoKDEgPDwgKC1yb3dJbmRleEZsYWdzSW5kZXhbaV0pKSkgKyAiICgiICsgcm93SW5kZXhGbGFnc0luZGV4W2ldKTsKKyAgICBlbHNlCisgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIiwgZmxhZ3MgPSAiICsgSW50ZWdlci50b0JpbmFyeVN0cmluZyhyb3dJbmRleEZsYWdzW3Jvd0luZGV4RmxhZ3NJbmRleFtpXV0pICsgIiAoIiArIHJvd0luZGV4RmxhZ3NJbmRleFtpXSk7CisgICAgU3lzdGVtLm91dC5wcmludGxuKCIpLCBzaGlmdCA9ICIgKyByb3dJbmRleFNoaWZ0c1tpXSk7Cit9CisvKgorICAgICAgICBpbnQgdGhlb3JldGljYWxNaW5Sb3dzID0gcG9wdWxhdGVkQ2VsbHMgLyBudW1Db2xzOworICAgICAgICBpZiAocG9wdWxhdGVkQ2VsbHMgJSBudW1Db2xzICE9IDApCisgICAgICAgICAgICB0aGVvcmV0aWNhbE1pblJvd3MrKzsKKyAgICAgICAgaW50IG9uZUNlbGxSb3dzID0gMDsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByb3dJbmRleEZsYWdzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBkb3VibGUgdGVtcCA9IE1hdGgubG9nKHJvd0luZGV4RmxhZ3NbaV0pIC8gTWF0aC5sb2coMik7CisgICAgICAgICAgICBpZiAodGVtcCA9PSAoaW50KXRlbXApCisgICAgICAgICAgICAgICAgb25lQ2VsbFJvd3MrKzsKKyAgICAgICAgfQorCisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbignXG4nKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJUb3RhbCB3b3JkcyBpbiBpbnB1dCA9ICIgKyB0b3RhbFdvcmRzKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJUb3RhbCB1bmlxdWUgd29yZHMgPSAiICsgdW5pcXVlV29yZHMgKyAiLCBjb21wcmlzaW5nICIgKworICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxVbmlxdWVXb3JkQ2hhcnMgKyAiIGNoYXJhY3RlcnNcbiIpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIk51bWJlciBvZiBwb3B1bGF0ZWQgY2VsbHMgPSAiICsgcG9wdWxhdGVkQ2VsbHMpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRvdGFsIG51bWJlciBvZiBjZWxscyA9ICIgKyAodGFibGUubGVuZ3RoKSk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiUmVzaWRlbmN5ID0gIiArICgoZmxvYXQpcG9wdWxhdGVkQ2VsbHMgLyB0YWJsZS5sZW5ndGggKiAxMDApICsgJyUnKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJSYXRpbyBvZiBwb3B1bGF0ZWQgY2VsbHMgdG8gdW5pcXVlLXdvcmQgY2hhcmFjdGVycyA9ICIgKworICAgICAgICAgICAgICAgICAgICAgICAgKChmbG9hdClwb3B1bGF0ZWRDZWxscyAvIHRvdGFsVW5pcXVlV29yZENoYXJzICogMTAwKSArICclJyk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiUmF0aW8gb2YgdG90YWwgY2VsbHMgdG8gdW5pcXVlLXdvcmQgY2hhcmFjdGVycyA9ICIgKworICAgICAgICAgICAgICAgICAgICAgICAgKChmbG9hdCl0YWJsZS5sZW5ndGggLyB0b3RhbFVuaXF1ZVdvcmRDaGFycyAqIDEwMCkgKyAnJScpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIk51bWJlciBvZiByb3dzID0gIiArICh0YWJsZS5sZW5ndGggLyBudW1Db2xzKSk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVGhlb3JldGljYWwgbWluaW11bSBudW1iZXIgb2Ygcm93cyA9ICIgKyB0aGVvcmV0aWNhbE1pblJvd3MpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlJhdGlvIG9mIG51bWJlciBvZiByb3dzIHRvIHRoZW9yZXRpY2FsIG1pbmltdW0gPSAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICgoZmxvYXQpKHRhYmxlLmxlbmd0aCAvIG51bUNvbHMpIC8gdGhlb3JldGljYWxNaW5Sb3dzICogMTAwKSArICclJyk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiTnVtYmVyIG9mIGNvbmNlcHR1YWwgcm93cyA9ICIgKyByb3dJbmRleC5sZW5ndGgpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkNvbmNlcHR1YWwgcm93cyB3aXRoIG9ubHkgb25lIHBvcHVsYXRlZCBjZWxsID0gIiArIG9uZUNlbGxSb3dzKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJSYXRpbyBvZiBvbmUtY2VsbCByb3dzIHRvIHRvdGFsIGNvbmNlcHR1YWwgcm93cyA9ICIgKyAoKChmbG9hdClvbmVDZWxsUm93cykKKyAgICAgICAgICAgICAgICAgICAgICAgIC8gcm93SW5kZXgubGVuZ3RoICogMTAwKSArICclJyk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQXZlcmFnZSBudW1iZXIgb2YgcG9wdWxhdGVkIGNlbGxzIGluIG11bHRpLWNlbGwgcm93cyA9ICIgKworICAgICAgICAgICAgICAgICAgICAgICAgKChmbG9hdCkocG9wdWxhdGVkQ2VsbHMgLSBvbmVDZWxsUm93cykgLyAocm93SW5kZXgubGVuZ3RoIC0gb25lQ2VsbFJvd3MpKSk7CisKKyAgICAgICAgaW50IHN0b3JhZ2VVc2VkID0gdGFibGUubGVuZ3RoICogMiArIHJvd0luZGV4Lmxlbmd0aCAqIDIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgcm93SW5kZXhGbGFncy5sZW5ndGggKiA0ICsgcm93SW5kZXhTaGlmdHMubGVuZ3RoOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRvdGFsIG51bWJlciBvZiBieXRlcyBpbiB0YWJsZSAoaW5jbHVkaW5nIGluZGV4ZXMpID0gIiArCisgICAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlVXNlZCk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQnl0ZXMgb2Ygb3ZlcmhlYWQgcGVyIHVuaXF1ZS13b3JkIGNoYXJhY3RlciA9ICIgKyAoKGRvdWJsZSkoc3RvcmFnZVVzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIC0gKHRvdGFsVW5pcXVlV29yZENoYXJzICogMikpIC8gdG90YWxVbmlxdWVXb3JkQ2hhcnMpKTsKKyovCisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHByaW50Q29uY2VwdHVhbFRhYmxlKFN0cmluZyBpbml0aWFsU3RyaW5nLCBpbnQgc3RhdGUsIGJvb2xlYW5bXSBmbGFncykgeworICAgICAgICBpZiAoaW5pdGlhbFN0cmluZy5sZW5ndGgoKSA9PSAwKQorICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJyb290OiIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oaW5pdGlhbFN0cmluZyArICc6Jyk7CisKKyAgICAgICAgaWYgKCFmbGFnc1tzdGF0ZV0pIHsKKyAgICAgICAgICAgIGZsYWdzW3N0YXRlXSA9IHRydWU7CisgICAgICAgICAgICBwcmludE51bWJlcihzdGF0ZSwgNCk7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCI6Iik7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUNvbHM7IGkrKykKKyAgICAgICAgICAgICAgICBwcmludE51bWJlcihhdChzdGF0ZSwgaSksIDQpOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CisgICAgICAgIH0KKworICAgICAgICBpbnQgbmV4dFN0YXRlOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUNvbHM7IGkrKykgeworICAgICAgICAgICAgbmV4dFN0YXRlID0gYXQoc3RhdGUsIGkpOworICAgICAgICAgICAgaWYgKG5leHRTdGF0ZSA+IDAgJiYgIWZsYWdzW25leHRTdGF0ZV0pIHsKKyAgICAgICAgICAgICAgICBwcmludE51bWJlcihuZXh0U3RhdGUsIDQpOworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIjoiKTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG51bUNvbHM7IGorKykKKyAgICAgICAgICAgICAgICAgICAgcHJpbnROdW1iZXIoYXQobmV4dFN0YXRlLCBqKSwgNCk7CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1Db2xzOyBpKyspIHsKKyAgICAgICAgICAgIG5leHRTdGF0ZSA9IGF0KHN0YXRlLCBpKTsKKyAgICAgICAgICAgIGlmIChuZXh0U3RhdGUgPiAwICYmICFmbGFnc1tuZXh0U3RhdGVdKSB7CisgICAgICAgICAgICAgICAgY2hhciBuZXh0Q2hhcjsKKyAgICAgICAgICAgICAgICBpZiAobmV4dFN0YXRlID09IDI3KQorICAgICAgICAgICAgICAgICAgICBuZXh0Q2hhciA9ICcgJzsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChuZXh0U3RhdGUgPT0gMjYpCisgICAgICAgICAgICAgICAgICAgIG5leHRDaGFyID0gJ1wnJzsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG5leHRDaGFyID0gKGNoYXIpKGkgKyAnYScpOworICAgICAgICAgICAgICAgIGZsYWdzW25leHRTdGF0ZV0gPSB0cnVlOworICAgICAgICAgICAgICAgIHByaW50Q29uY2VwdHVhbFRhYmxlKGluaXRpYWxTdHJpbmcgKyBuZXh0Q2hhciwgbmV4dFN0YXRlLCBmbGFncyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgcHJpbnRXb3JkTGlzdChTdHJpbmcgcGFydGlhbFdvcmQsIGludCBzdGF0ZSwgUHJpbnRXcml0ZXIgb3V0KQorICAgICAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgaWYgKHN0YXRlID09IC0xKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocGFydGlhbFdvcmQpOworICAgICAgICAgICAgaWYgKG91dCAhPSBudWxsKQorICAgICAgICAgICAgICAgIG91dC5wcmludGxuKHBhcnRpYWxXb3JkKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQ29sczsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKGF0KHN0YXRlLCBpKSAhPSAwKQorICAgICAgICAgICAgICAgICAgICBwcmludFdvcmRMaXN0KHBhcnRpYWxXb3JkICsgcmV2ZXJzZUNvbHVtbk1hcFtpXSwgYXQoc3RhdGUsIGkpLCBvdXQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHdyaXRlRGljdGlvbmFyeUZpbGUoRGF0YU91dHB1dFN0cmVhbSBvdXQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIG91dC53cml0ZUludCgwKTsgICAgLy8gdmVyc2lvbiBudW1iZXIKKworICAgICAgICBjaGFyW10gY29sdW1uTWFwSW5kZXhlcyA9IGNvbHVtbk1hcC5nZXRJbmRleEFycmF5KCk7CisgICAgICAgIG91dC53cml0ZUludChjb2x1bW5NYXBJbmRleGVzLmxlbmd0aCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY29sdW1uTWFwSW5kZXhlcy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgIG91dC53cml0ZVNob3J0KChzaG9ydCljb2x1bW5NYXBJbmRleGVzW2ldKTsKKyAgICAgICAgYnl0ZVtdIGNvbHVtbk1hcFZhbHVlcyA9IGNvbHVtbk1hcC5nZXRWYWx1ZUFycmF5KCk7CisgICAgICAgIG91dC53cml0ZUludChjb2x1bW5NYXBWYWx1ZXMubGVuZ3RoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb2x1bW5NYXBWYWx1ZXMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICBvdXQud3JpdGVCeXRlKChieXRlKWNvbHVtbk1hcFZhbHVlc1tpXSk7CisKKyAgICAgICAgb3V0LndyaXRlSW50KG51bUNvbHMpOworICAgICAgICBvdXQud3JpdGVJbnQobnVtQ29sR3JvdXBzKTsKKworICAgICAgICBvdXQud3JpdGVJbnQocm93SW5kZXgubGVuZ3RoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByb3dJbmRleC5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgIG91dC53cml0ZVNob3J0KHJvd0luZGV4W2ldKTsKKworICAgICAgICBvdXQud3JpdGVJbnQocm93SW5kZXhGbGFnc0luZGV4Lmxlbmd0aCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcm93SW5kZXhGbGFnc0luZGV4Lmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgb3V0LndyaXRlU2hvcnQocm93SW5kZXhGbGFnc0luZGV4W2ldKTsKKyAgICAgICAgb3V0LndyaXRlSW50KHJvd0luZGV4RmxhZ3MubGVuZ3RoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByb3dJbmRleEZsYWdzLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgb3V0LndyaXRlSW50KHJvd0luZGV4RmxhZ3NbaV0pOworCisgICAgICAgIG91dC53cml0ZUludChyb3dJbmRleFNoaWZ0cy5sZW5ndGgpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJvd0luZGV4U2hpZnRzLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgb3V0LndyaXRlQnl0ZShyb3dJbmRleFNoaWZ0c1tpXSk7CisKKyAgICAgICAgb3V0LndyaXRlSW50KHRhYmxlLmxlbmd0aCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGFibGUubGVuZ3RoOyBpKyspCisgICAgICAgICAgICBvdXQud3JpdGVTaG9ydCh0YWJsZVtpXSk7CisKKyAgICAgICAgb3V0LmNsb3NlKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHByaW50TnVtYmVyKGludCB4LCBpbnQgd2lkdGgpIHsKKyAgICAgICAgU3RyaW5nIHMgPSBTdHJpbmcudmFsdWVPZih4KTsKKyAgICAgICAgaWYgKHdpZHRoID4gcy5sZW5ndGgoKSkKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoc3BhY2VzLnN1YnN0cmluZygwLCB3aWR0aCAtIHMubGVuZ3RoKCkpKTsKKyAgICAgICAgaWYgKHggIT0gMCkKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQocyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoJy4nKTsKKyAgICB9CisKKyAgICBwdWJsaWMgZmluYWwgc2hvcnQgYXQoaW50IHJvdywgY2hhciBjaCkgeworICAgICAgICBpbnQgY29sID0gY29sdW1uTWFwLmVsZW1lbnRBdChjaCk7CisgICAgICAgIHJldHVybiBhdChyb3csIGNvbCk7CisgICAgfQorCisgICAgcHVibGljIGZpbmFsIHNob3J0IGF0KGludCByb3csIGludCBjb2wpIHsKKyAgICAgICAgaWYgKGNlbGxJc1BvcHVsYXRlZChyb3csIGNvbCkpCisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxBdChyb3dJbmRleFtyb3ddLCBjb2wgKyByb3dJbmRleFNoaWZ0c1tyb3ddKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIGNlbGxJc1BvcHVsYXRlZChpbnQgcm93LCBpbnQgY29sKSB7CisgICAgICAgIGlmIChyb3dJbmRleEZsYWdzSW5kZXhbcm93XSA8IDApCisgICAgICAgICAgICByZXR1cm4gY29sID09IC1yb3dJbmRleEZsYWdzSW5kZXhbcm93XTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpbnQgZmxhZ3MgPSByb3dJbmRleEZsYWdzW3Jvd0luZGV4RmxhZ3NJbmRleFtyb3ddICsgKGNvbCA+PiA1KV07CisgICAgICAgICAgICByZXR1cm4gKGZsYWdzICYgKDEgPDwgKGNvbCAmIDB4MWYpKSkgIT0gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgZmluYWwgc2hvcnQgaW50ZXJuYWxBdChpbnQgcm93LCBpbnQgY29sKSB7CisgICAgICAgIHJldHVybiB0YWJsZVtyb3cgKiBudW1Db2xzICsgY29sXTsKKyAgICB9CisKKyAgICBwcml2YXRlIENvbXBhY3RCeXRlQXJyYXkgY29sdW1uTWFwID0gbnVsbDsKKyAgICBwcml2YXRlIGNoYXJbXSByZXZlcnNlQ29sdW1uTWFwID0gbnVsbDsKKyAgICBwcml2YXRlIGludCBudW1Db2xzOworICAgIHByaXZhdGUgaW50IG51bUNvbEdyb3VwczsKKyAgICBwcml2YXRlIHNob3J0W10gdGFibGUgPSBudWxsOworICAgIHByaXZhdGUgc2hvcnRbXSByb3dJbmRleCA9IG51bGw7CisgICAgcHJpdmF0ZSBpbnRbXSByb3dJbmRleEZsYWdzID0gbnVsbDsKKyAgICBwcml2YXRlIHNob3J0W10gcm93SW5kZXhGbGFnc0luZGV4ID0gbnVsbDsKKyAgICBwcml2YXRlIGJ5dGVbXSByb3dJbmRleFNoaWZ0cyA9IG51bGw7CisKKyAgICBwcml2YXRlIGludCB0b3RhbFdvcmRzID0gMDsKKyAgICBwcml2YXRlIGludCB1bmlxdWVXb3JkcyA9IDA7CisgICAgcHJpdmF0ZSBpbnQgdG90YWxVbmlxdWVXb3JkQ2hhcnMgPSAwOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIHNwYWNlcyA9ICIgICAgICAiOworfQorCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvcmJiaS9Xcml0ZVRhYmxlc1RvRmlsZXMuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC9yYmJpL1dyaXRlVGFibGVzVG9GaWxlcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjdhODQ2M2MKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvcmJiaS9Xcml0ZVRhYmxlc1RvRmlsZXMuamF2YQpAQCAtMCwwICsxLDU4IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvcmJiaS9BdHRpYy9Xcml0ZVRhYmxlc1RvRmlsZXMuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMy8wMSAwMjozNzo0NyAkIAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50b29sLnJiYmk7CisKK2ltcG9ydCBqYXZhLmlvLio7CitpbXBvcnQgY29tLmlibS5pY3UubGFuZy4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuKjsKKworcHVibGljIGNsYXNzIFdyaXRlVGFibGVzVG9GaWxlcyB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgd3JpdGVCYXRjaCh0cnVlKTsKKyAgICAgICAgd3JpdGVCYXRjaChmYWxzZSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCB3cml0ZUJhdGNoKGJvb2xlYW4gbGl0dGxlRW5kaWFuKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBCcmVha0l0ZXJhdG9yIGJpOworICAgICAgICBTdHJpbmcgc3VmZml4ID0gKGxpdHRsZUVuZGlhbiA/ICJMRSIgOiAiQkUiKTsKKyAgICAgICAgCisgICAgICAgIGJpID0gQnJlYWtJdGVyYXRvci5nZXRDaGFyYWN0ZXJJbnN0YW5jZSgpOworICAgICAgICAoKFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IpYmkpLndyaXRlVGFibGVzVG9GaWxlKG5ldyBGaWxlT3V0cHV0U3RyZWFtKAorICAgICAgICAgICAgICAgICAgICAiY2hhciIgKyBzdWZmaXggKyAiLmJyayIpLCBsaXR0bGVFbmRpYW4pOworICAgICAgICAKKyAgICAgICAgYmkgPSBCcmVha0l0ZXJhdG9yLmdldFdvcmRJbnN0YW5jZSgpOworICAgICAgICAoKFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IpYmkpLndyaXRlVGFibGVzVG9GaWxlKG5ldyBGaWxlT3V0cHV0U3RyZWFtKAorICAgICAgICAgICAgICAgICAgICAid29yZCIgKyBzdWZmaXggKyAiLmJyayIpLCBsaXR0bGVFbmRpYW4pOworICAgICAgICAKKyAgICAgICAgYmkgPSBCcmVha0l0ZXJhdG9yLmdldExpbmVJbnN0YW5jZSgpOworICAgICAgICAoKFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IpYmkpLndyaXRlVGFibGVzVG9GaWxlKG5ldyBGaWxlT3V0cHV0U3RyZWFtKAorICAgICAgICAgICAgICAgICAgICAibGluZSIgKyBzdWZmaXggKyAiLmJyayIpLCBsaXR0bGVFbmRpYW4pOworICAgICAgICAKKyAgICAgICAgYmkgPSBCcmVha0l0ZXJhdG9yLmdldFNlbnRlbmNlSW5zdGFuY2UoKTsKKyAgICAgICAgKChSdWxlQmFzZWRCcmVha0l0ZXJhdG9yKWJpKS53cml0ZVRhYmxlc1RvRmlsZShuZXcgRmlsZU91dHB1dFN0cmVhbSgKKyAgICAgICAgICAgICAgICAgICAgInNlbnQiICsgc3VmZml4ICsgIi5icmsiKSwgbGl0dGxlRW5kaWFuKTsKKworICAgICAgICBiaSA9IEJyZWFrSXRlcmF0b3IuZ2V0VGl0bGVJbnN0YW5jZSgpOworICAgICAgICAoKFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IpYmkpLndyaXRlVGFibGVzVG9GaWxlKG5ldyBGaWxlT3V0cHV0U3RyZWFtKAorICAgICAgICAgICAgICAgICAgICAidGl0bGUiICsgc3VmZml4ICsgIi5icmsiKSwgbGl0dGxlRW5kaWFuKTsKKworICAgICAgICBqYXZhLnV0aWwuTG9jYWxlIHRoYWkgPSBuZXcgamF2YS51dGlsLkxvY2FsZSgidGgiLCAiIiwgIiIpOworICAgICAgICBiaSA9IEJyZWFrSXRlcmF0b3IuZ2V0V29yZEluc3RhbmNlKHRoYWkpOworICAgICAgICAoKFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IpYmkpLndyaXRlVGFibGVzVG9GaWxlKG5ldyBGaWxlT3V0cHV0U3RyZWFtKAorICAgICAgICAgICAgICAgICAgICAid29yZF90aCIgKyBzdWZmaXggKyAiLmJyayIpLCBsaXR0bGVFbmRpYW4pOworCisgICAgICAgIGJpID0gQnJlYWtJdGVyYXRvci5nZXRMaW5lSW5zdGFuY2UodGhhaSk7CisgICAgICAgICgoUnVsZUJhc2VkQnJlYWtJdGVyYXRvciliaSkud3JpdGVUYWJsZXNUb0ZpbGUobmV3IEZpbGVPdXRwdXRTdHJlYW0oCisgICAgICAgICAgICAgICAgICAgICJsaW5lX3RoIiArIHN1ZmZpeCArICIuYnJrIiksIGxpdHRsZUVuZGlhbik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL3RyYW5zbGl0L1NvdXJjZVNldC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL3RyYW5zbGl0L1NvdXJjZVNldC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3M2U5ODkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvdHJhbnNsaXQvU291cmNlU2V0LmphdmEKQEAgLTAsMCArMSwxMDkgQEAKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgQ29weXJpZ2h0IChjKSAyMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqICAgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgRGF0ZSAgICAgICAgTmFtZSAgICAgICAgRGVzY3JpcHRpb24KKyogICAxMS8yOS8yMDAxICBhbGl1ICAgICAgICBDcmVhdGlvbi4KKyogICAwNi8yNi8yMDAyICBhbGl1ICAgICAgICBNb3ZlZCB0byBjb20uaWJtLmljdS5kZXYudG9vbC50cmFuc2xpdAorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRvb2wudHJhbnNsaXQ7CitpbXBvcnQgamF2YS51dGlsLio7CitpbXBvcnQgY29tLmlibS5pY3UuZGV2LnRvb2wudHJhbnNsaXQuVW5pY29kZVNldENsb3N1cmU7CitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuKjsKKworLyoqCisgKiBDbGFzcyB0aGF0IGdlbmVyYXRlcyBzb3VyY2Ugc2V0IGluZm9ybWF0aW9uIGZvciBhIHRyYW5zbGl0ZXJhdG9yLgorICogCisgKiBUbyBydW4sIHVzZToKKyAqIAorICogICBqYXZhIGNvbS5pYm0uaWN1LmRldi50b29sLnRyYW5zbGl0LlNvdXJjZVNldCBMYXRpbi1LYXRha2FuYSBORkQgbG93ZXIKKyAqIAorICogT3V0cHV0IGlzIHByb2R1Y2VkIGluIHRoZSBjb21tYW5kIGNvbnNvbGUsIGFuZCBhIGZpbGUgd2l0aCBtb3JlIGRldGFpbCBpcyBhbHNvIHdyaXR0ZW4uCisgKiAKKyAqIFRvIHNlZSBpZiBpdCB3b3JrcywgdXNlOgorICogCisgKiAgIGphdmEgY29tLmlibS5pY3UuZGV2LnRlc3QudHJhbnNsaXQuVHJhbnNsaXRlcmF0b3JUZXN0IC12IC1ub3Rocm93IFRlc3RJbmNyZW1lbnRhbFByb2dyZXNzCisgKiAKKyAqIGFuZAorICogIAorICogICBqYXZhIGNvbS5pYm0uaWN1LmRldi5kZW1vLnRyYW5zbGl0LkRlbW8KKyAqLworcHVibGljIGNsYXNzIFNvdXJjZVNldCB7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBpZiAoYXJncy5sZW5ndGggPT0gMCkgeworICAgICAgICAgICAgLy8gQ29tcHV0ZSBhbmQgZGlzcGxheSB0aGUgc291cmNlIHNldHMgZm9yIGFsbCBzeXN0ZW0KKyAgICAgICAgICAgIC8vIHRyYW5zbGl0ZXJhdG9ycy4KKyAgICAgICAgICAgIGZvciAoRW51bWVyYXRpb24gZSA9IFRyYW5zbGl0ZXJhdG9yLmdldEF2YWlsYWJsZUlEcygpOyBlLmhhc01vcmVFbGVtZW50cygpOyApIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgSUQgPSAoU3RyaW5nKSBlLm5leHRFbGVtZW50KCk7CisgICAgICAgICAgICAgICAgc2hvd1NvdXJjZVNldChJRCwgTm9ybWFsaXplci5OT05FLCBmYWxzZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBVc2FnZTogSUQgW05GS0QgfCBORkRdIFtsb3dlcl0KKyAgICAgICAgICAgIE5vcm1hbGl6ZXIuTW9kZSBtID0gTm9ybWFsaXplci5OT05FOworICAgICAgICAgICAgYm9vbGVhbiBsb3dlckZpcnN0ID0gZmFsc2U7CisgICAgICAgICAgICBpZiAoYXJncy5sZW5ndGggPj0gMikgeworICAgICAgICAgICAgICAgIGlmIChhcmdzWzFdLmVxdWFsc0lnbm9yZUNhc2UoIk5GRCIpKSB7CisgICAgICAgICAgICAgICAgICAgIG0gPSBOb3JtYWxpemVyLk5GRDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGFyZ3NbMV0uZXF1YWxzSWdub3JlQ2FzZSgiTkZLRCIpKSB7CisgICAgICAgICAgICAgICAgICAgIG0gPSBOb3JtYWxpemVyLk5GS0Q7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdXNhZ2UoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYXJncy5sZW5ndGggPj0gMykgeworICAgICAgICAgICAgICAgIGlmIChhcmdzWzJdLmVxdWFsc0lnbm9yZUNhc2UoImxvd2VyIikpIHsKKyAgICAgICAgICAgICAgICAgICAgbG93ZXJGaXJzdCA9IHRydWU7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdXNhZ2UoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYXJncy5sZW5ndGggPiAzKSB7CisgICAgICAgICAgICAgICAgdXNhZ2UoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNob3dTb3VyY2VTZXQoYXJnc1swXSwgbSwgbG93ZXJGaXJzdCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBzaG93U291cmNlU2V0KFN0cmluZyBJRCwgTm9ybWFsaXplci5Nb2RlIG0sIGJvb2xlYW4gbG93ZXJGaXJzdCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgRmlsZSBmID0gbmV3IEZpbGUoIlVuaWNvZGVTZXRDbG9zdXJlLnR4dCIpOworICAgICAgICBTdHJpbmcgZmlsZW5hbWUgPSBmLmdldENhbm9uaWNhbEZpbGUoKS50b1N0cmluZygpOworICAgICAgICBvdXQgPSBuZXcgUHJpbnRXcml0ZXIoCisgICAgICAgICAgICBuZXcgT3V0cHV0U3RyZWFtV3JpdGVyKAorICAgICAgICAgICAgICAgIG5ldyBGaWxlT3V0cHV0U3RyZWFtKGZpbGVuYW1lKSwgIlVURi04IikpOworICAgICAgICBvdXQucHJpbnQoJ1x1RkVGRicpOyAvLyBCT00KKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiV3JpdGluZyAiICsgZmlsZW5hbWUpOworICAgICAgICBUcmFuc2xpdGVyYXRvciB0ID0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoSUQpOworICAgICAgICBzaG93U291cmNlU2V0QXV4KHQsIG0sIGxvd2VyRmlyc3QsIHRydWUpOworICAgICAgICBzaG93U291cmNlU2V0QXV4KHQuZ2V0SW52ZXJzZSgpLCBtLCBsb3dlckZpcnN0LCBmYWxzZSk7CisgICAgICAgIG91dC5jbG9zZSgpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgUHJpbnRXcml0ZXIgb3V0OworICAgIAorICAgIHN0YXRpYyB2b2lkIHNob3dTb3VyY2VTZXRBdXgoVHJhbnNsaXRlcmF0b3IgdCwgTm9ybWFsaXplci5Nb2RlIG0sIGJvb2xlYW4gbG93ZXJGaXJzdCwgYm9vbGVhbiBmb3J3YXJkKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBVbmljb2RlU2V0IHNvdXJjZVNldCA9IHQuZ2V0U291cmNlU2V0KCk7CisgICAgICAgIGlmIChtICE9IE5vcm1hbGl6ZXIuTk9ORSB8fCBsb3dlckZpcnN0KSB7CisgICAgICAgICAgICBVbmljb2RlU2V0Q2xvc3VyZS5jbG9zZShzb3VyY2VTZXQsIG0sIGxvd2VyRmlyc3QpOworICAgICAgICB9CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbih0LmdldElEKCkgKyAiOiAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVNldC50b1BhdHRlcm4odHJ1ZSkpOworICAgICAgICBvdXQucHJpbnRsbigiIyBNSU5JTUFMIEZJTFRFUiBHRU5FUkFURUQgRk9SOiAiICsgdC5nZXRJRCgpICsgKGZvcndhcmQgPyAiIiA6ICIgUkVWRVJTRSIpKTsKKyAgICAgICAgb3V0LnByaW50bG4oIjo6ICIgCisgICAgICAgICAgICArIChmb3J3YXJkID8gIiIgOiAiKCAiKSAKKyAgICAgICAgICAgICsgc291cmNlU2V0LnRvUGF0dGVybih0cnVlKSAKKyAgICAgICAgICAgICsgKGZvcndhcmQgPyAiIiA6ICIgKSIpCisgICAgICAgICAgICArICIgOyIpOworICAgICAgICBvdXQucHJpbnRsbigiIyBVbmljb2RlOiAiICsgc291cmNlU2V0LnRvUGF0dGVybihmYWxzZSkpOworICAgICAgICBvdXQucHJpbnRsbigpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHVzYWdlKCkgeworICAgICAgICBTeXN0ZW0uZXJyLnByaW50bG4oIlVzYWdlOiBJRCBbIE5GRHxORktEIFtsb3dlcl0gXSIpOworICAgICAgICBTeXN0ZW0uZXhpdCgxKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvdHJhbnNsaXQvVHJhbnMuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC90cmFuc2xpdC9UcmFucy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjNlM2MyZGUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvdHJhbnNsaXQvVHJhbnMuamF2YQpAQCAtMCwwICsxLDE0NyBAQAorLyoqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC90cmFuc2xpdC9UcmFucy5qYXZhLHYgJAorICogJERhdGU6IDIwMDIvMDgvMTMgMjI6MTE6MjYgJAorICogJFJldmlzaW9uOiAxLjQgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRvb2wudHJhbnNsaXQ7CisKK2ltcG9ydCBjb20uaWJtLmljdS5sYW5nLio7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC4qOworaW1wb3J0IGphdmEuaW8uKjsKKworLyoqCisgKiBBIGNvbW1hbmQtbGluZSBpbnRlcmZhY2UgdG8gdGhlIElDVTRKIHRyYW5zbGl0ZXJhdG9ycy4KKyAqIEBhdXRob3IgQWxhbiBMaXUKKyAqLworcHVibGljIGNsYXNzIFRyYW5zIHsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBib29sZWFuIGlzSFRNTCA9IGZhbHNlOworICAgICAgICBpbnQgcG9zID0gMDsKKworICAgICAgICBTdHJpbmcgdHJhbnNOYW1lID0gbnVsbDsgLy8gZmlyc3QgdW50YWdnZWQgc3RyaW5nIGlzIHRoaXMKKyAgICAgICAgU3RyaW5nIGluVGV4dCA9IG51bGw7IC8vIGFsbCBvdGhlciB1bnRhZ2dlZCBzdHJpbmdzIGFyZSB0aGlzCisgICAgICAgIFN0cmluZyBpbk5hbWUgPSBudWxsOworICAgICAgICBTdHJpbmcgb3V0TmFtZSA9IG51bGw7CisKKyAgICAgICAgd2hpbGUgKHBvcyA8IGFyZ3MubGVuZ3RoKSB7CisgICAgICAgICAgICBpZiAoYXJnc1twb3NdLmVxdWFscygiLWh0bWwiKSkgeworICAgICAgICAgICAgICAgIGlzSFRNTCA9IHRydWU7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGFyZ3NbcG9zXS5lcXVhbHMoIi1pIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoKytwb3MgPT0gYXJncy5sZW5ndGgpIHVzYWdlKCk7CisgICAgICAgICAgICAgICAgaW5OYW1lID0gYXJnc1twb3NdOworICAgICAgICAgICAgfSBlbHNlIGlmIChhcmdzW3Bvc10uZXF1YWxzKCItbyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKCsrcG9zID09IGFyZ3MubGVuZ3RoKSB1c2FnZSgpOworICAgICAgICAgICAgICAgIG91dE5hbWUgPSBhcmdzW3Bvc107CisgICAgICAgICAgICB9IGVsc2UgaWYgKHRyYW5zTmFtZSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgdHJhbnNOYW1lID0gYXJnc1twb3NdOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoaW5UZXh0ID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgaW5UZXh0ID0gYXJnc1twb3NdOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGluVGV4dCA9IGluVGV4dCArICIgIiArIGFyZ3NbcG9zXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICArK3BvczsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpblRleHQgIT0gbnVsbCAmJiBpbk5hbWUgIT0gbnVsbCkgeworICAgICAgICAgICAgdXNhZ2UoKTsKKyAgICAgICAgfQorCisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHRyYW5zID0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UodHJhbnNOYW1lKTsKKyAgICAgICAgQnVmZmVyZWRSZWFkZXIgaW4gPSBudWxsOworICAgICAgICBpZiAoaW5OYW1lICE9IG51bGwpIHsKKyAgICAgICAgICAgIGluID0gbmV3IEJ1ZmZlcmVkUmVhZGVyKG5ldyBJbnB1dFN0cmVhbVJlYWRlcihuZXcgRmlsZUlucHV0U3RyZWFtKGluTmFtZSksICJVVEY4IikpOworICAgICAgICB9CisgICAgICAgIFByaW50V3JpdGVyIG91dCA9IG51bGw7CisgICAgICAgIGlmIChvdXROYW1lICE9IG51bGwpIHsKKyAgICAgICAgICAgIG91dCA9IG5ldyBQcmludFdyaXRlcihuZXcgT3V0cHV0U3RyZWFtV3JpdGVyKG5ldyBGaWxlT3V0cHV0U3RyZWFtKG91dE5hbWUpLCAiVVRGOCIpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG91dCA9IG5ldyBQcmludFdyaXRlcihTeXN0ZW0ub3V0KTsKKyAgICAgICAgfQorICAgICAgICB0cmFucyh0cmFucywgaW5UZXh0LCBpbiwgb3V0LCBpc0hUTUwpOworICAgICAgICBvdXQuY2xvc2UoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCB0cmFucyhUcmFuc2xpdGVyYXRvciB0cmFucywgU3RyaW5nIGluVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJlZFJlYWRlciBpbiwgUHJpbnRXcml0ZXIgb3V0LCBib29sZWFuIGlzSFRNTCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgYm9vbGVhbiBpblRhZyA9IGZhbHNlOyAvLyBJZiB0cnVlLCB3ZSBhcmUgd2l0aGluIGEgPHRhZz4KKyAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgU3RyaW5nIGxpbmUgPSBudWxsOworICAgICAgICAgICAgaWYgKGluVGV4dCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgbGluZSA9IGluVGV4dDsKKyAgICAgICAgICAgICAgICBpblRleHQgPSBudWxsOworICAgICAgICAgICAgfSBlbHNlIGlmIChpbiAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgbGluZSA9IGluLnJlYWRMaW5lKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobGluZSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaXNIVE1MKSB7CisgICAgICAgICAgICAgICAgLy8gUGFzcyB0YWdzIGJldHdlZW4gPCBhbmQgPiB1bmNoYW5nZWQKKyAgICAgICAgICAgICAgICBTdHJpbmdCdWZmZXIgYnVmID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICAgICAgICAgIGludCByaWdodCA9IC0xOworICAgICAgICAgICAgICAgIGlmIChpblRhZykgeworICAgICAgICAgICAgICAgICAgICByaWdodCA9IGxpbmUuaW5kZXhPZignPicpOworICAgICAgICAgICAgICAgICAgICBpZiAocmlnaHQgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByaWdodCA9IGxpbmUubGVuZ3RoKCktMTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBidWYuYXBwZW5kKGxpbmUuc3Vic3RyaW5nKDAsIHJpZ2h0KzEpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBTeXN0ZW0ub3V0LnByaW50bG4oIipTOiIgKyBsaW5lLnN1YnN0cmluZygwLCByaWdodCsxKSk7CisgICAgICAgICAgICAgICAgICAgIGluVGFnID0gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IGxlZnQgPSBsaW5lLmluZGV4T2YoJzwnLCByaWdodCsxKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxlZnQgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmlnaHQgPCBsaW5lLmxlbmd0aCgpLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYuYXBwZW5kKHRyYW5zLnRyYW5zbGl0ZXJhdGUobGluZS5zdWJzdHJpbmcocmlnaHQrMSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUcpIFN5c3RlbS5vdXQucHJpbnRsbigiVDoiICsgbGluZS5zdWJzdHJpbmcocmlnaHQrMSkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgLy8gQXBwZW5kIHRyYW5zbGl0ZXJhdGVkIHNlZ21lbnQgcmlnaHQrMS4ubGVmdC0xCisgICAgICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQodHJhbnMudHJhbnNsaXRlcmF0ZShsaW5lLnN1YnN0cmluZyhyaWdodCsxLCBsZWZ0KSkpOworICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUcpIFN5c3RlbS5vdXQucHJpbnRsbigiVDoiICsgbGluZS5zdWJzdHJpbmcocmlnaHQrMSwgbGVmdCkpOworICAgICAgICAgICAgICAgICAgICByaWdodCA9IGxpbmUuaW5kZXhPZignPicsIGxlZnQrMSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChyaWdodCA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluVGFnID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQobGluZS5zdWJzdHJpbmcobGVmdCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBTeXN0ZW0ub3V0LnByaW50bG4oIlM6IiArIGxpbmUuc3Vic3RyaW5nKGxlZnQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQobGluZS5zdWJzdHJpbmcobGVmdCwgcmlnaHQrMSkpOworICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUcpIFN5c3RlbS5vdXQucHJpbnRsbigiUzoiICsgbGluZS5zdWJzdHJpbmcobGVmdCwgcmlnaHQrMSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBsaW5lID0gYnVmLnRvU3RyaW5nKCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGxpbmUgPSB0cmFucy50cmFuc2xpdGVyYXRlKGxpbmUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgb3V0LnByaW50bG4obGluZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVRyA9IGZhbHNlOworCisgICAgLyoqCisgICAgICogRW1pdCB1c2FnZSBhbmQgZGllLgorICAgICAqLworICAgIHN0YXRpYyB2b2lkIHVzYWdlKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlVzYWdlOiBqYXZhIGNvbS5pYm0uaWN1LmRldi50b29sLnRyYW5zbGl0LlRyYW5zIFstaHRtbF0gPHRyYW5zPiAoIDxpbnB1dD4gfCAtaSA8aW5maWxlPikgWyAtbyA8b3V0ZmlsZT4gXSIpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIjx0cmFucz4gICBOYW1lIG9mIHRyYW5zbGl0ZXJhdG9yIik7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiPGlucHV0PiAgIFRleHQgdG8gdHJhbnNsaXRlcmF0ZSIpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIjxpbmZpbGU+ICBOYW1lIG9mIGlucHV0IGZpbGUiKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCI8b3V0ZmlsZT4gTmFtZSBvZiBvdXRwdXQgZmlsZSIpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIi1odG1sICAgICBPbmx5IHRyYW5zbGl0ZXJhdGUgdGV4dCBvdXRzaWRlIG9mIDx0YWdzPiIpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIklucHV0IG1heSBjb21lIGZyb20gdGhlIGNvbW1hbmQgbGluZSBvciBhIGZpbGUuXG4iKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJPdXB1dCBtYXkgZ28gdG8gc3Rkb3V0IG9yIGEgZmlsZS5cbiIpOworICAgICAgICBTeXN0ZW0uZXhpdCgwKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvdHJhbnNsaXQvVW5pY29kZVNldENsb3N1cmUuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC90cmFuc2xpdC9Vbmljb2RlU2V0Q2xvc3VyZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmQ0YzY1OWQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvdHJhbnNsaXQvVW5pY29kZVNldENsb3N1cmUuamF2YQpAQCAtMCwwICsxLDMwNSBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL3RyYW5zbGl0L1VuaWNvZGVTZXRDbG9zdXJlLmphdmEsdiAkCisgKiAkRGF0ZTogMjAwMi8wNi8yMCAwMToxNzozOSAkCisgKiAkUmV2aXNpb246IDEuNyAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRvb2wudHJhbnNsaXQ7CitpbXBvcnQgY29tLmlibS5pY3UubGFuZy4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuKjsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLlV0aWxpdHk7CisvL2ltcG9ydCBqYXZhLnRleHQuKjsKK2ltcG9ydCBqYXZhLmlvLio7CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKKworLy8gY29tLmlibS5pY3UuZGV2LnRvb2wudHJhbnNsaXQuVW5pY29kZVNldENsb3N1cmUKKy8vIGNvbS5pYm0uaWN1LmRldi50ZXN0LnRyYW5zbGl0LlRyYW5zbGl0ZXJhdG9yVGVzdAorCitwdWJsaWMgY2xhc3MgVW5pY29kZVNldENsb3N1cmUgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICAKKyAgICAgICAgVW5pY29kZVNldCBmb28gPSAJICAgIG5ldyBVbmljb2RlU2V0KCJbXHUxRkY2LVx1MUZGRFx1MjAwMC1cdTIwMDFcdTIxMjZdIik7CisgICAgICAgIAorICAgICAgICB0ZXN0KCk7CisgICAgICAgIC8qIFRoZSBmb2xsb3dpbmcgaXMgc3VwZXJjZWRlZCBieSBBbGFuJ3MgdG9vbAorICAgICAgICAKKyAgICAgICAgRmlsZSBmID0gbmV3IEZpbGUoIlVuaWNvZGVTZXRDbG9zdXJlLnR4dCIpOworICAgICAgICBTdHJpbmcgZmlsZW5hbWUgPSBmLmdldENhbm9uaWNhbEZpbGUoKS50b1N0cmluZygpOworICAgICAgICBvdXQgPSBuZXcgUHJpbnRXcml0ZXIoCisgICAgICAgICAgICBuZXcgT3V0cHV0U3RyZWFtV3JpdGVyKAorICAgICAgICAgICAgICAgIG5ldyBGaWxlT3V0cHV0U3RyZWFtKGZpbGVuYW1lKSwgIlVURi04IikpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIldyaXRpbmcgIiArIGZpbGVuYW1lKTsKKyAgICAgICAgb3V0LnByaW50KCdcdUZFRkYnKTsgLy8gQk9NCisgICAgICAgIAorICAgICAgICBnZW5lcmF0ZVNldHMoIkxhdGluLUthdGFrYW5hIiwgdHJ1ZSwgTm9ybWFsaXplci5ERUNPTVBfQ09NUEFULCB0cnVlLAorIlsnLC5hLXp+XHUwMERGXHUwMEU2XHUwMEYwXHUwMEY4XHUwMEZFXHUwMkJFXHUwMzAwLVx1MDM0RVx1MDM2MC1cdTAzNjJcdTA0ODMtXHUwNDg2XHUwNTkxLVx1MDVBMVx1MDVBMy1cdTA1QjlcdTA1QkItXHUwNUJEXHUwNUJGXHUwNUMxLVx1MDVDMlx1MDVDNFx1MDY0Qi1cdTA2NTVcdTA2NzBcdTA2RDYtXHUwNkRDXHUwNkRGLVx1MDZFNFx1MDZFNy1cdTA2RThcdTA2RUEtXHUwNkVEXHUwNzExXHUwNzMwLVx1MDc0QVx1MDdBNi1cdTA3QjBcdTA5MDEtXHUwOTAyXHUwOTNDXHUwOTQxLVx1MDk0OFx1MDk0RFx1MDk1MS1cdTA5NTRcdTA5NjItXHUwOTYzXHUwOTgxXHUwOUJDXHUwOUMxLVx1MDlDNFx1MDlDRFx1MDlFMi1cdTA5RTNcdTBBMDJcdTBBM0NcdTBBNDEtXHUwQTQyXHUwQTQ3LVx1MEE0OFx1MEE0Qi1cdTBBNERcdTBBNzAtXHUwQTcxXHUwQTgxLVx1MEE4Mlx1MEFCQ1x1MEFDMS1cdTBBQzVcdTBBQzctXHUwQUM4XHUwQUNEXHUwQjAxXHUwQjNDXHUwQjNGXHUwQjQxLVx1MEI0M1x1MEI0RFx1MEI1Nlx1MEI4Mlx1MEJDMFx1MEJDRFx1MEMzRS1cdTBDNDBcdTBDNDYtXHUwQzQ4XHUwQzRBLVx1MEM0RFx1MEM1NS1cdTBDNTZcdTBDQkZcdTBDQzZcdTBDQ0MtXHUwQ0NEXHUwRDQxLVx1MEQ0M1x1MEQ0RFx1MERDQVx1MEREMi1cdTBERDRcdTBERDZcdTBFMzFcdTBFMzQtXHUwRTNBXHUwRTQ3LVx1MEU0RVx1MEVCMVx1MEVCNC1cdTBFQjlcdTBFQkItXHUwRUJDXHUwRUM4LVx1MEVDRFx1MEYxOC1cdTBGMTlcdTBGMzVcdTBGMzdcdTBGMzlcdTBGNzEtXHUwRjdFXHUwRjgwLVx1MEY4NFx1MEY4Ni1cdTBGODdcdTBGOTAtXHUwRjk3XHUwRjk5LVx1MEZCQ1x1MEZDNlx1MTAyRC1cdTEwMzBcdTEwMzJcdTEwMzYtXHUxMDM3XHUxMDM5XHUxMDU4LVx1MTA1OVx1MTdCNy1cdTE3QkRcdTE3QzZcdTE3QzktXHUxN0QzXHUxOEE5XHUyMEQwLVx1MjBEQ1x1MjBFMVx1MzAyQS1cdTMwMkZcdUZCMUVcdUZFMjAtXHVGRTIzXFxVMDAwMUQxNjctXFxVMDAwMUQxNjlcXFUwMDAxRDE3Qi1cXFUwMDAxRDE4MlxcVTAwMDFEMTg1LVxcVTAwMDFEMThCXFxVMDAwMUQxQUEtXFxVMDAwMUQxQURdIgorICAgICAgICApOworICAgICAgICBnZW5lcmF0ZVNldHMoIkxhdGluLUthdGFrYW5hIiwgZmFsc2UsIE5vcm1hbGl6ZXIuREVDT01QX0NPTVBBVCwgZmFsc2UsCisiW35cdTMwMDEtXHUzMDAyXHUzMEExLVx1MzBBQlx1MzBBRFx1MzBBRlx1MzBCMVx1MzBCM1x1MzBCNVx1MzBCN1x1MzBCOVx1MzBCQlx1MzBCRFx1MzBCRlx1MzBDMVx1MzBDMy1cdTMwQzRcdTMwQzZcdTMwQzhcdTMwQ0EtXHUzMENGXHUzMEQyXHUzMEQ1XHUzMEQ4XHUzMERCXHUzMERFLVx1MzBGM1x1MzBGNS1cdTMwRjZcdTMwRkMtXHUzMEZEXSIKKyAgICAgICAgKTsKKyAgICAgICAgCisgICAgICAgIG91dC5jbG9zZSgpOworICAgICAgICAKKyAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworICAgICAgICBpZiAodHJ1ZSkgcmV0dXJuOyAvLyBza2lwIHRoZSBzdHVmZiB3ZSd2ZSBkb25lIGFscmVhZHkKKyAgICAgICAgCisgICAgICAgIGdlbmVyYXRlU2V0cygiQ3lyaWxsaWMtTGF0aW4iLCB0cnVlLCBOb3JtYWxpemVyLkRFQ09NUCwgZmFsc2UsCisgICAgICAgICAgICAiW1x1MDQwMlx1MDQwNC1cdTA0MDZcdTA0MDgtXHUwNDBCXHUwNDBGLVx1MDQxOFx1MDQxQS1cdTA0MzhcdTA0M0EtXHUwNDRGXHUwNDUyXHUwNDU0LVx1MDQ1Nlx1MDQ1OC1cdTA0NUJcdTA0NUZcdTA0OTAtXHUwNDk1XHUwNDk4LVx1MDQ5OVx1MDRENC1cdTA0RDVcdTA0RDgtXHUwNEQ5XSIKKyAgICAgICAgKTsKKyAgICAgICAgZ2VuZXJhdGVTZXRzKCJMYXRpbi1DeXJpbGxpYyIsIGZhbHNlLCBOb3JtYWxpemVyLkRFQ09NUCwgZmFsc2UsCisgICAgICAgICAgICAiW0EtWmEtelx1MDBDNlx1MDBFNlx1MDExMC1cdTAxMTFcdTAxOEZcdTAyNTlcdTAyQjktXHUwMkJBXSIKKyAgICAgICAgKTsKKyAgICAgICAgKi8KKyAgICB9CisgICAgCisgICAgcHVibGljIHN0YXRpYyB2b2lkIGdlbmVyYXRlU2V0cyhTdHJpbmcgbGFiZWwsIGJvb2xlYW4gZm9yd2FyZCwgCisgICAgICAgICAgICBOb3JtYWxpemVyLk1vZGUgbSwgYm9vbGVhbiBsb3dlckZpcnN0LCBTdHJpbmcgcnVsZXMpIHsKKyAgICAgICAgVW5pY29kZVNldCBzID0gbmV3IFVuaWNvZGVTZXQocnVsZXMpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkdlbmVyYXRpbmcgIiArIGxhYmVsICsgKGZvcndhcmQgPyAiIiA6ICIgQkFDS1dBUkQiKSk7CisgICAgICAgIGNsb3NlKHMsIG0sIGxvd2VyRmlyc3QpOworICAgICAgICBvdXQucHJpbnRsbigiIyBNSU5JTUFMIEZJTFRFUiBHRU5FUkFURUQgRk9SOiAiICsgbGFiZWwgKyAoZm9yd2FyZCA/ICIiIDogIiBCQUNLV0FSRCIpKTsKKyAgICAgICAgb3V0LnByaW50bG4oIjo6ICIgCisgICAgICAgICAgICArIChmb3J3YXJkID8gIiIgOiAiKCAiKSAKKyAgICAgICAgICAgICsgcy50b1BhdHRlcm4odHJ1ZSkgCisgICAgICAgICAgICArIChmb3J3YXJkID8gIiIgOiAiICkiKQorICAgICAgICAgICAgKyAiIDsiKTsKKyAgICAgICAgb3V0LnByaW50bG4oKTsKKyAgICAgICAgb3V0LnByaW50bG4oIlVuaWNvZGU6ICIgKyBzLnRvUGF0dGVybihmYWxzZSkpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgYm9vbGVhbiBHRU5FUkFURSA9IGZhbHNlOworICAgIAorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCB0ZXN0KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIEZpbGUgZiA9IG5ldyBGaWxlKCJUZXN0VW5pY29kZVNldENsb3N1cmUudHh0Iik7CisgICAgICAgIFN0cmluZyBmaWxlbmFtZSA9IGYuZ2V0Q2Fub25pY2FsRmlsZSgpLnRvU3RyaW5nKCk7CisgICAgICAgIG91dCA9IG5ldyBQcmludFdyaXRlcigKKyAgICAgICAgICAgIG5ldyBPdXRwdXRTdHJlYW1Xcml0ZXIoCisgICAgICAgICAgICAgICAgbmV3IEZpbGVPdXRwdXRTdHJlYW0oZmlsZW5hbWUpLCAiVVRGLTgiKSk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiV3JpdGluZyAiICsgZmlsZW5hbWUpOworICAgICAgICBvdXQucHJpbnQoJ1x1RkVGRicpOyAvLyBCT00KKyAgICAgICAgCisgICAgICAgIEdFTkVSQVRFID0gdHJ1ZTsKKyAgICAgICAgdGVzdCgiWzpEZXZhbmFnYXJpOl0iKTsKKyAgICAgICAgLyoKKyAgICAgICAgdGVzdCgiW1x1MDBFMEJjXSIpOworICAgICAgICB0ZXN0KCJbbV0iKTsKKyAgICAgICAgKi8KKyAgICAgICAgCisgICAgICAgIG91dC5jbG9zZSgpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgZmluYWwgTm9ybWFsaXplci5Nb2RlW10gdGVzdE1vZGVzID0geworICAgICAgICBOb3JtYWxpemVyLk5PTkUsIE5vcm1hbGl6ZXIuTkZELCBOb3JtYWxpemVyLk5GQywgTm9ybWFsaXplci5ORktELCBOb3JtYWxpemVyLk5GS0N9OworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmdbXSBtb2RlTmFtZXMgPSB7CisgICAgICAgICJOb05GIiwgIk5GRCIsICJORkMiLCAiTkZLRCIsICJORktDIn07CisgICAgICAgIAorICAgIHN0YXRpYyBmaW5hbCBib29sZWFuW10gdGVzdENhc2VzID0geworICAgICAgICBmYWxzZSwgdHJ1ZX07CisgICAgc3RhdGljIGZpbmFsIFN0cmluZ1tdIGNhc2VOYW1lcyA9IHsKKyAgICAgICAgIm5vTG93ZXIiLCAibG93ZXIifTsKKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgdGVzdChTdHJpbmcgdGVzdFN0cikgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIFVuaWNvZGVTZXQgb3JpZ2luYWwgPSBuZXcgVW5pY29kZVNldCh0ZXN0U3RyKTsKKyAgICAgICAgCisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVGVzdGluZyBDbG9zdXJlIG9mOiAiICsgb3JpZ2luYWwudG9QYXR0ZXJuKHRydWUpKTsKKyAgICAgICAgb3V0LnByaW50bG4oIlRlc3RpbmcgQ2xvc3VyZSBvZjogIiArIG9yaWdpbmFsLnRvUGF0dGVybihmYWxzZSkpOworICAgICAgICBVbmljb2RlU2V0IHJhdyA9IG5ldyBVbmljb2RlU2V0KG9yaWdpbmFsKTsKKyAgICAgICAgb3JpZ2luYWwuY29tcGxlbWVudCgpOworICAgICAgICBvcmlnaW5hbC5jb21wbGVtZW50KCk7CisgICAgICAgIGlmICghcmF3LmVxdWFscyhvcmlnaW5hbCkpIHsKKyAgICAgICAgICAgIG91dC5wcmludGxuKCJFcXVhbHM6IiArIG9yaWdpbmFsLnRvUGF0dGVybihmYWxzZSkpOworICAgICAgICB9CisgICAgICAgIFN0cmluZ1dyaXRlciBzd0xvZyA9IG51bGw7CisgICAgICAgIFByaW50V3JpdGVyIGxvZyA9IG51bGw7CisgICAgICAgIAorICAgICAgICBpZiAoR0VORVJBVEUpIHsKKyAgICAgICAgICAgIHN3TG9nID0gbmV3IFN0cmluZ1dyaXRlcigpOworICAgICAgICAgICAgbG9nID0gbmV3IFByaW50V3JpdGVyKHN3TG9nKTsKKyAgICAgICAgICAgIGxvZy5wcmludGxuKCJzdGF0aWMgVW5pY29kZVNldFtdW10gVU5DSEFOR0VEID0geyIpOworICAgICAgICB9CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGVzdENhc2VzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBpZiAoR0VORVJBVEUpIGxvZy5wcmludGxuKCIgICAgeyIpOworICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCB0ZXN0TW9kZXMubGVuZ3RoOyArK2opIHsKKyAgICAgICAgICAgICAgICBVbmljb2RlU2V0IHRlc3QgPSBuZXcgVW5pY29kZVNldChvcmlnaW5hbCk7CisgICAgICAgICAgICAgICAgY2xvc2UodGVzdCwgdGVzdE1vZGVzW2pdLCB0ZXN0Q2FzZXNbaV0pOworICAgICAgICAgICAgICAgIGlmIChHRU5FUkFURSkgeworICAgICAgICAgICAgICAgICAgICBsb2cucHJpbnRsbigiXHRuZXcgVW5pY29kZVNldChcIiIgKyBnZW5lcmF0ZWRTZXQudG9QYXR0ZXJuKHRydWUpICsgIlwiKSwiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgU3RyaW5nIGxhYmVsID0gY2FzZU5hbWVzW2ldICArICIsICIgKyBtb2RlTmFtZXNbal0gOworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihsYWJlbCk7CisgICAgICAgICAgICAgICAgb3V0LnByaW50bG4obGFiZWwgKyAiOiAiICsgdGVzdC50b1BhdHRlcm4oZmFsc2UpKTsKKyAgICAgICAgICAgICAgICB0ZXN0LnJlbW92ZUFsbChvcmlnaW5hbCk7CisgICAgICAgICAgICAgICAgaWYgKHRlc3QuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJcdE5vIERpZmZlcmVuY2UgZnJvbSBvcmlnaW5hbCIpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCJcdERpZmZlcmVuY2UgPSAiICsgdGVzdC50b1BhdHRlcm4oZmFsc2UpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgb3V0LmZsdXNoKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoR0VORVJBVEUpIGxvZy5wcmludGxuKCIgICAgfSwiKTsKKyAgICAgICAgICAgIG91dC5wcmludGxuKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChHRU5FUkFURSkgeworICAgICAgICAgICAgbG9nLnByaW50bG4oIn07Iik7CisgICAgICAgICAgICBvdXQucHJpbnQoc3dMb2cuZ2V0QnVmZmVyKCkudG9TdHJpbmcoKSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8qCisgICAgICAgICAgICBjbG9zZSh0ZXN0LCBOb3JtYWxpemVyLkRFQ09NUCwgZmFsc2UpOworICAgICAgICAgICAgcHJpbnQoIk5GRCIsIHRlc3QpOworICAgICAgICAgICAgCisgICAgICAgICAgICB0ZXN0ID0gbmV3IFVuaWNvZGVTZXQodGVzdFN0cik7CisgICAgICAgICAgICBjbG9zZSh0ZXN0LCBOb3JtYWxpemVyLk5PX09QLCB0cnVlKTsKKyAgICAgICAgICAgIHByaW50KCJMb3dlciIsIHRlc3QpOworCisgICAgICAgICAgICB0ZXN0ID0gbmV3IFVuaWNvZGVTZXQodGVzdFN0cik7CisgICAgICAgICAgICBjbG9zZSh0ZXN0LCBOb3JtYWxpemVyLkNPTVBPU0UsIGZhbHNlKTsKKyAgICAgICAgICAgIHByaW50KCJORkMiLCB0ZXN0KTsKKworICAgICAgICAgICAgdGVzdCA9IG5ldyBVbmljb2RlU2V0KHRlc3RTdHIpOworICAgICAgICAgICAgY2xvc2UodGVzdCwgTm9ybWFsaXplci5ERUNPTVBfQ09NUEFULCBmYWxzZSk7CisgICAgICAgICAgICBwcmludCgiTkZLRCIsIHRlc3QpOworCisgICAgICAgICAgICB0ZXN0ID0gbmV3IFVuaWNvZGVTZXQodGVzdFN0cik7CisgICAgICAgICAgICBjbG9zZSh0ZXN0LCBOb3JtYWxpemVyLkNPTVBPU0VfQ09NUEFULCBmYWxzZSk7CisgICAgICAgICAgICBwcmludCgiTkZLQyIsIHRlc3QpOworICAgICAgICAqLworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgUHJpbnRXcml0ZXIgb3V0OworICAgIAorICAgIC8qCisgICAgcHVibGljIHN0YXRpYyB2b2lkIHByaW50KFN0cmluZyBsYWJlbCwgVW5pY29kZVNldCB0ZXN0KSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihsYWJlbCk7CisgICAgICAgIG91dC5wcmludGxuKGxhYmVsICsgIjogIiArIHRlc3QudG9QYXR0ZXJuKGZhbHNlKSk7CisgICAgICAgIG91dC5wcmludGxuKCk7CisgICAgfQorICAgICovCisgICAgCisgICAgLy8gZHVtYiwgc2xvdyBpbXBsZW1lbnRhdGlvbnMKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIE5GVG9TdHJpbmcgaW1wbGVtZW50cyBDaGFyMzJUb1N0cmluZyB7CisgICAgICAgIE5vcm1hbGl6ZXIuTW9kZSBtb2RlOworICAgICAgICBib29sZWFuIGxvd2VyRmlyc3Q7CisgICAgICAgIAorICAgICAgICBORlRvU3RyaW5nKE5vcm1hbGl6ZXIuTW9kZSBtLCBib29sZWFuIGxvd2VyRmlyc3QpIHsKKyAgICAgICAgICAgIG1vZGUgPSBtOworICAgICAgICAgICAgdGhpcy5sb3dlckZpcnN0ID0gbG93ZXJGaXJzdDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHVibGljIFN0cmluZyBnZXQoaW50IGNwKSB7CisgICAgICAgICAgICBTdHJpbmcgc291cmNlID0gVVRGMTYudmFsdWVPZihjcCk7CisgICAgICAgICAgICBTdHJpbmcgcmVzdWx0ID0gc291cmNlOworICAgICAgICAgICAgaWYgKGxvd2VyRmlyc3QpIHJlc3VsdCA9IFVDaGFyYWN0ZXIudG9Mb3dlckNhc2UoTG9jYWxlLlVTLCByZXN1bHQpOworICAgICAgICAgICAgcmVzdWx0ID0gTm9ybWFsaXplci5ub3JtYWxpemUocmVzdWx0LCBtb2RlKTsKKyAgICAgICAgICAgIGlmIChsb3dlckZpcnN0KSByZXN1bHQgPSBVQ2hhcmFjdGVyLnRvTG93ZXJDYXNlKExvY2FsZS5VUywgcmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQuZXF1YWxzKHNvdXJjZSkpIHJldHVybiBudWxsOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgIH0KKyAgICAgICAgCisgICAgCisgICAgLyoqIFJldHVybnMgYSBtYXBwaW5nIGZyb20gY2hhcjMyIHRvIGEgc3RyaW5nLiBJZiB0aGVyZSBpcyBubyBjaGFuZ2UsCisgICAgICogbnVsbCBpcyByZXR1cm5lZC4KKyAgICAgKi8KKyAgICAgCisgICAgaW50ZXJmYWNlIENoYXIzMlRvU3RyaW5nIHsKKyAgICAgICAgcHVibGljIFN0cmluZyBnZXQoaW50IGNwKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIGJvb2xlYW4gRkFTVCA9IHRydWU7CisgICAgCisgICAgcHVibGljIHN0YXRpYyB2b2lkIGNsb3NlKFVuaWNvZGVTZXQgcywgTm9ybWFsaXplci5Nb2RlIG0sIGJvb2xlYW4gbG93ZXJGaXJzdCkgeworICAgICAgICBDaGFyMzJUb1N0cmluZyBmID0gbmV3IE5GVG9TdHJpbmcobSwgbG93ZXJGaXJzdCk7CisgICAgICAgIGlmIChGQVNUKSB7CisgICAgICAgICAgICBpbnQgbW07CisgICAgICAgICAgICBmb3IgKG1tID0gMDsgOyArK21tKSBpZiAobSA9PSB0ZXN0TW9kZXNbbW1dKSBicmVhazsgLy8gZmluZCBtb2RlCisgICAgICAgICAgICBjbG9zZTIocywgZiwgbG93ZXJGaXJzdCA/IDEgOiAwLCBtbSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgY2xvc2UocywgZik7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBjbG9zZShVbmljb2RlU2V0IHMsIENoYXIzMlRvU3RyaW5nIGYpIHsKKyAgICAgICAgaWYgKEdFTkVSQVRFKSBnZW5lcmF0ZWRTZXQgPSBuZXcgVW5pY29kZVNldCgpOworICAgICAgICAKKyAgICAgICAgZm9yIChpbnQgY3AgPSAwOyBjcCA8PSAweDEwRkZGRjsgKytjcCkgeworICAgICAgICAgICAgaW50IHR5cGUgPSBVQ2hhcmFjdGVyLmdldFR5cGUoY3ApOworICAgICAgICAgICAgaWYgKHR5cGUgPT0gQ2hhcmFjdGVyLlVOQVNTSUdORUQpIGNvbnRpbnVlOworICAgICAgICAgICAgCisgICAgICAgICAgICAvL2lmIChjcCA9PSAnXHUwMGU3JykgeworICAgICAgICAgICAgICAvLyAgU3lzdGVtLm91dC5wcmludGxuKCJkZWJ1ZyIpOworICAgICAgICAgICAgLy99CisgICAgICAgICAgICBTdHJpbmcgcmVzdWx0ID0gZi5nZXQoY3ApOworICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKSBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChHRU5FUkFURSkgeworICAgICAgICAgICAgICAgIGdlbmVyYXRlZFNldC5hZGQoY3ApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFjb250YWluc1NvbWUocywgcmVzdWx0KSkgY29udGludWU7CisgICAgICAgICAgICBzLmFkZChjcCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHVibGljIHN0YXRpYyB2b2lkIGNsb3NlMihVbmljb2RlU2V0IHMsIENoYXIzMlRvU3RyaW5nIGYsIGludCBsYywgaW50IG1vZGUpIHsKKyAgICAgICAgVW5pY29kZVNldCB1bmNoYW5nZWQgPSBuZXcgVW5pY29kZVNldCgpOyAvLyBVTkNIQU5HRURbbGNdW21vZGVdOworICAgICAgICBpbnQgY291bnQgPSB1bmNoYW5nZWQuZ2V0UmFuZ2VDb3VudCgpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgICAgIGludCBzdGFydCA9IHVuY2hhbmdlZC5nZXRSYW5nZVN0YXJ0KGkpOworICAgICAgICAgICAgaW50IGVuZCA9IHVuY2hhbmdlZC5nZXRSYW5nZUVuZChpKTsKKyAgICAgICAgICAgIGZvciAoaW50IGNwID0gc3RhcnQ7IGNwIDw9IGVuZDsgKytjcCkgeworICAgICAgICAgICAgICAgIFN0cmluZyByZXN1bHQgPSBmLmdldChjcCk7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKSB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJTb21ldGhpbmcgd3JvbmcgLS0gc2hvdWxkIG5ldmVyIGhhcHBlbiIpOworICAgICAgICAgICAgICAgIGlmICghY29udGFpbnNTb21lKHMsIHJlc3VsdCkpIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIHMuYWRkKGNwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKgorICAgIHN0YXRpYyBmaW5hbCBVbmljb2RlU2V0W11bXSBVTkNIQU5HRUQgPSB7CisgICAgICAgIHsgLy8gXHUxRjgwLVx1MUZCNFx1MUZCNi1cdTFGQkNcdTFGQkVcdTFGQzEtXHUxRkM0XHUxRkM2LVx1MUZEM1x1MUZENi1cdTFGREJcdTFGREQtXHUxRkVGXHUxRkYyLVx1MUZGNAorCSAgICBuZXcgVW5pY29kZVNldCgiW1x1MUZGNi1cdTFGRkRcdTIwMDAtXHUyMDAxXHUyMTI2XSIpLAorCSAgICAvLyBcdTIxMkEtXHUyMTJCXHUyMTlBLVx1MjE5Qlx1MjFBRVx1MjFDRC1cdTIxQ0ZcdTIyMDRcdTIyMDlcdTIyMENcdTIyMjRcdTIyMjZcdTIyNDFcdTIyNDRcdTIyNDdcdTIyNDlcdTIyNjBcdTIyNjJcdTIyNkQtXHUyMjcxXHUyMjc0LVx1MjI3NVx1MjI3OAorCSAgICBuZXcgVW5pY29kZVNldCgiW1x1MDBDMC1cdTAwQzVcdTAwQzctXHUwMENGXHUwMEQxLVx1MDBENlx1MDBEOS1cdTAwRERcdTAwRTAtXHUwMEU1XHUwMEU3LVx1MDBFRlx1MDBGMS1cdTAwRjZcdTAwRjktXHUwMEZEXHUwMEZGLVx1MDEwRlx1MDExMi1cdTAxMjVcdTAxMjgtXHUwMTMwXHUwMTM0LVx1MDEzN1x1MDEzOS1cdTAxM0VcdTAxNDMtXHUwMTQ4XHUwMTRDLVx1MDE1MVx1MDE1NC1cdTAxNjVcdTAxNjgtXHUwMTdFXHUwMUEwLVx1MDFBMVx1MDFBRi1cdTAxQjBcdTAxQ0QtXHUwMURDXHUwMURFLVx1MDFFM1x1MDFFNi1cdTAxRjBcdTAxRjQtXHUwMUY1XHUwMUY4LVx1MDIxQlx1MDIxRS1cdTAyMUZcdTAyMjYtXHUwMjMzXHUwMzQwLVx1MDM0MVx1MDM0My1cdTAzNDRcdTAzNzRcdTAzN0VcdTAzODUtXHUwMzhBXHUwMzhDXHUwMzhFLVx1MDM5MFx1MDNBQS1cdTAzQjBcdTAzQ0EtXHUwM0NFXHUwM0QzLVx1MDNENFx1MDQwMC1cdTA0MDFcdTA0MDNcdTA0MDdcdTA0MEMtXHUwNDBFXHUwNDE5XHUwNDM5XHUwNDUwLVx1MDQ1MVx1MDQ1M1x1MDQ1N1x1MDQ1Qy1cdTA0NUVcdTA0NzYtXHUwNDc3XHUwNEMxLVx1MDRDMlx1MDREMC1cdTA0RDNcdTA0RDYtXHUwNEQ3XHUwNERBLVx1MDRERlx1MDRFMi1cdTA0RTdcdTA0RUEtXHUwNEY1XHUwNEY4LVx1MDRGOVx1MDYyMi1cdTA2MjZcdTA2QzBcdTA2QzJcdTA2RDNcdTA5MjlcdTA5MzFcdTA5MzRcdTA5NTgtXHUwOTVGXHUwOUNCLVx1MDlDQ1x1MDlEQy1cdTA5RERcdTA5REZcdTBBMzNcdTBBMzZcdTBBNTktXHUwQTVCXHUwQTVFXHUwQjQ4XHUwQjRCLVx1MEI0Q1x1MEI1Qy1cdTBCNURcdTBCOTRcdTBCQ0EtXHUwQkNDXHUwQzQ4XHUwQ0MwXHUwQ0M3LVx1MENDOFx1MENDQS1cdTBDQ0JcdTBENEEtXHUwRDRDXHUwRERBXHUwRERDLVx1MERERVx1MEY0M1x1MEY0RFx1MEY1Mlx1MEY1N1x1MEY1Q1x1MEY2OVx1MEY3M1x1MEY3NS1cdTBGNzZcdTBGNzhcdTBGODFcdTBGOTNcdTBGOURcdTBGQTJcdTBGQTdcdTBGQUNcdTBGQjlcdTEwMjZcdTFFMDAtXHUxRTk5XHUxRTlCXHUxRUEwLVx1MUVGOVx1MUYwMC1cdTFGMTVcdTFGMTgtXHUxRjFEXHUxRjIwLVx1MUY0NVx1MUY0OC1cdTFGNERcdTFGNTAtXHUxRjU3XHUxRjU5XHUxRjVCXHUxRjVEXHUxRjVGLVx1MUY3RFx1MUY4MC1cdTFGQjRcdTFGQjYtXHUxRkJDXHUxRkJFXHUxRkMxLVx1MUZDNFx1MUZDNi1cdTFGRDNcdTFGRDYtXHUxRkRCXHUxRkRELVx1MUZFRlx1MUZGMi1cdTFGRjRcdTFGRjYtXHUxRkZEXHUyMDAwLVx1MjAwMVx1MjEyNlx1MjEyQS1cdTIxMkJcdTIxOUEtXHUyMTlCXHUyMUFFXHUyMUNELVx1MjFDRlx1MjIwNFx1MjIwOVx1MjIwQ1x1MjIyNFx1MjIyNlx1MjI0MVx1MjI0NFx1MjI0N1x1MjI0OVx1MjI2MFx1MjI2Mlx1MjI2RC1cdTIyNzFcdTIyNzQtXHUyMjc1XHUyMjc4LVx1MjI3OVx1MjI4MC1cdTIyODFcdTIyODQtXHUyMjg1XHUyMjg4LVx1MjI4OVx1MjJBQy1cdTIyQUZcdTIyRTAtXHUyMkUzXHUyMkVBLVx1MjJFRFx1MjMyOS1cdTIzMkFcdTMwNENcdTMwNEVcdTMwNTBcdTMwNTJcdTMwNTRcdTMwNTZcdTMwNThcdTMwNUFcdTMwNUNcdTMwNUVcdTMwNjBcdTMwNjJcdTMwNjVcdTMwNjdcdTMwNjlcdTMwNzAtXHUzMDcxXHUzMDczLVx1MzA3NFx1MzA3Ni1cdTMwNzdcdTMwNzktXHUzMDdBXHUzMDdDLVx1MzA3RFx1MzA5NFx1MzA5RVx1MzBBQ1x1MzBBRVx1MzBCMFx1MzBCMlx1MzBCNFx1MzBCNlx1MzBCOFx1MzBCQVx1MzBCQ1x1MzBCRVx1MzBDMFx1MzBDMlx1MzBDNVx1MzBDN1x1MzBDOVx1MzBEMC1cdTMwRDFcdTMwRDMtXHUzMEQ0XHUzMEQ2LVx1MzBEN1x1MzBEOS1cdTMwREFcdTMwREMtXHUzMEREXHUzMEY0XHUzMEY3LVx1MzBGQVx1MzBGRVx1QUMwMC1cdUQ3QTNcdUY5MDAtXHVGQTBEXHVGQTEwXHVGQTEyXHVGQTE1LVx1RkExRVx1RkEyMFx1RkEyMlx1RkEyNS1cdUZBMjZcdUZBMkEtXHVGQTJEXHVGQjFEXHVGQjFGXHVGQjJBLVx1RkIzNlx1RkIzOC1cdUZCM0NcdUZCM0VcdUZCNDAtXHVGQjQxXHVGQjQzLVx1RkI0NFx1RkI0Ni1cdUZCNEVdIiksCisJICAgIG5ldyBVbmljb2RlU2V0KCJbXHUwMzQwLVx1MDM0MVx1MDM0My1cdTAzNDRcdTAzNzRcdTAzN0VcdTAzODdcdTA5NTgtXHUwOTVGXHUwOURDLVx1MDlERFx1MDlERlx1MEEzM1x1MEEzNlx1MEE1OS1cdTBBNUJcdTBBNUVcdTBCNUMtXHUwQjVEXHUwRjQzXHUwRjREXHUwRjUyXHUwRjU3XHUwRjVDXHUwRjY5XHUwRjczXHUwRjc1LVx1MEY3Nlx1MEY3OFx1MEY4MVx1MEY5M1x1MEY5RFx1MEZBMlx1MEZBN1x1MEZBQ1x1MEZCOVx1MUY3MVx1MUY3M1x1MUY3NVx1MUY3N1x1MUY3OVx1MUY3Qlx1MUY3RFx1MUZCQlx1MUZCRVx1MUZDOVx1MUZDQlx1MUZEM1x1MUZEQlx1MUZFM1x1MUZFQlx1MUZFRS1cdTFGRUZcdTFGRjlcdTFGRkJcdTFGRkRcdTIwMDAtXHUyMDAxXHUyMTI2XHUyMTJBLVx1MjEyQlx1MjMyOS1cdTIzMkFcdUY5MDAtXHVGQTBEXHVGQTEwXHVGQTEyXHVGQTE1LVx1RkExRVx1RkEyMFx1RkEyMlx1RkEyNS1cdUZBMjZcdUZBMkEtXHVGQTJEXHVGQjFGXHVGQjJBLVx1RkIzNlx1RkIzOC1cdUZCM0NcdUZCM0VcdUZCNDAtXHVGQjQxXHVGQjQzLVx1RkI0NFx1RkI0Ni1cdUZCNEVdIiksCisJICAgIG5ldyBVbmljb2RlU2V0KCJbXHUwMEEwXHUwMEE4XHUwMEFBXHUwMEFGXHUwMEIyLVx1MDBCNVx1MDBCOC1cdTAwQkFcdTAwQkMtXHUwMEJFXHUwMEMwLVx1MDBDNVx1MDBDNy1cdTAwQ0ZcdTAwRDEtXHUwMEQ2XHUwMEQ5LVx1MDBERFx1MDBFMC1cdTAwRTVcdTAwRTctXHUwMEVGXHUwMEYxLVx1MDBGNlx1MDBGOS1cdTAwRkRcdTAwRkYtXHUwMTBGXHUwMTEyLVx1MDEyNVx1MDEyOC1cdTAxMzBcdTAxMzItXHUwMTM3XHUwMTM5LVx1MDE0MFx1MDE0My1cdTAxNDlcdTAxNEMtXHUwMTUxXHUwMTU0LVx1MDE2NVx1MDE2OC1cdTAxN0ZcdTAxQTAtXHUwMUExXHUwMUFGLVx1MDFCMFx1MDFDNC1cdTAxRENcdTAxREUtXHUwMUUzXHUwMUU2LVx1MDFGNVx1MDFGOC1cdTAyMUJcdTAyMUUtXHUwMjFGXHUwMjI2LVx1MDIzM1x1MDJCMC1cdTAyQjhcdTAyRDgtXHUwMkREXHUwMkUwLVx1MDJFNFx1MDM0MC1cdTAzNDFcdTAzNDMtXHUwMzQ0XHUwMzc0XHUwMzdBXHUwMzdFXHUwMzg0LVx1MDM4QVx1MDM4Q1x1MDM4RS1cdTAzOTBcdTAzQUEtXHUwM0IwXHUwM0NBLVx1MDNDRVx1MDNEMC1cdTAzRDZcdTAzRjAtXHUwM0YyXHUwNDAwLVx1MDQwMVx1MDQwM1x1MDQwN1x1MDQwQy1cdTA0MEVcdTA0MTlcdTA0MzlcdTA0NTAtXHUwNDUxXHUwNDUzXHUwNDU3XHUwNDVDLVx1MDQ1RVx1MDQ3Ni1cdTA0NzdcdTA0QzEtXHUwNEMyXHUwNEQwLVx1MDREM1x1MDRENi1cdTA0RDdcdTA0REEtXHUwNERGXHUwNEUyLVx1MDRFN1x1MDRFQS1cdTA0RjVcdTA0RjgtXHUwNEY5XHUwNTg3XHUwNjIyLVx1MDYyNlx1MDY3NS1cdTA2NzhcdTA2QzBcdTA2QzJcdTA2RDNcdTA5MjlcdTA5MzFcdTA5MzRcdTA5NTgtXHUwOTVGXHUwOUNCLVx1MDlDQ1x1MDlEQy1cdTA5RERcdTA5REZcdTBBMzNcdTBBMzZcdTBBNTktXHUwQTVCXHUwQTVFXHUwQjQ4XHUwQjRCLVx1MEI0Q1x1MEI1Qy1cdTBCNURcdTBCOTRcdTBCQ0EtXHUwQkNDXHUwQzQ4XHUwQ0MwXHUwQ0M3LVx1MENDOFx1MENDQS1cdTBDQ0JcdTBENEEtXHUwRDRDXHUwRERBXHUwRERDLVx1MERERVx1MEUzM1x1MEVCM1x1MEVEQy1cdTBFRERcdTBGMENcdTBGNDNcdTBGNERcdTBGNTJcdTBGNTdcdTBGNUNcdTBGNjlcdTBGNzNcdTBGNzUtXHUwRjc5XHUwRjgxXHUwRjkzXHUwRjlEXHUwRkEyXHUwRkE3XHUwRkFDXHUwRkI5XHUxMDI2XHUxRTAwLVx1MUU5Qlx1MUVBMC1cdTFFRjlcdTFGMDAtXHUxRjE1XHUxRjE4LVx1MUYxRFx1MUYyMC1cdTFGNDVcdTFGNDgtXHUxRjREXHUxRjUwLVx1MUY1N1x1MUY1OVx1MUY1Qlx1MUY1RFx1MUY1Ri1cdTFGN0RcdTFGODAtXHUxRkI0XHUxRkI2LVx1MUZDNFx1MUZDNi1cdTFGRDNcdTFGRDYtXHUxRkRCXHUxRkRELVx1MUZFRlx1MUZGMi1cdTFGRjRcdTFGRjYtXHUxRkZFXHUyMDAwLVx1MjAwQVx1MjAxMVx1MjAxN1x1MjAyNC1cdTIwMjZcdTIwMkZcdTIwMzMtXHUyMDM0XHUyMDM2LVx1MjAzN1x1MjAzQ1x1MjAzRVx1MjA0OC1cdTIwNDlcdTIwNzBcdTIwNzQtXHUyMDhFXHUyMEE4XHUyMTAwLVx1MjEwM1x1MjEwNS1cdTIxMDdcdTIxMDktXHUyMTEzXHUyMTE1LVx1MjExNlx1MjExOS1cdTIxMURcdTIxMjAtXHUyMTIyXHUyMTI0XHUyMTI2XHUyMTI4XHUyMTJBLVx1MjEyRFx1MjEyRi1cdTIxMzFcdTIxMzMtXHUyMTM5XHUyMTUzLVx1MjE3Rlx1MjE5QS1cdTIxOUJcdTIxQUVcdTIxQ0QtXHUyMUNGXHUyMjA0XHUyMjA5XHUyMjBDXHUyMjI0XHUyMjI2XHUyMjJDLVx1MjIyRFx1MjIyRi1cdTIyMzBcdTIyNDFcdTIyNDRcdTIyNDdcdTIyNDlcdTIyNjBcdTIyNjJcdTIyNkQtXHUyMjcxXHUyMjc0LVx1MjI3NVx1MjI3OC1cdTIyNzlcdTIyODAtXHUyMjgxXHUyMjg0LVx1MjI4NVx1MjI4OC1cdTIyODlcdTIyQUMtXHUyMkFGXHUyMkUwLVx1MjJFM1x1MjJFQS1cdTIyRURcdTIzMjktXHUyMzJBXHUyNDYwLVx1MjRFQVx1MkU5Rlx1MkVGM1x1MkYwMC1cdTJGRDVcdTMwMDBcdTMwMzZcdTMwMzgtXHUzMDNBXHUzMDRDXHUzMDRFXHUzMDUwXHUzMDUyXHUzMDU0XHUzMDU2XHUzMDU4XHUzMDVBXHUzMDVDXHUzMDVFXHUzMDYwXHUzMDYyXHUzMDY1XHUzMDY3XHUzMDY5XHUzMDcwLVx1MzA3MVx1MzA3My1cdTMwNzRcdTMwNzYtXHUzMDc3XHUzMDc5LVx1MzA3QVx1MzA3Qy1cdTMwN0RcdTMwOTRcdTMwOUItXHUzMDlDXHUzMDlFXHUzMEFDXHUzMEFFXHUzMEIwXHUzMEIyXHUzMEI0XHUzMEI2XHUzMEI4XHUzMEJBXHUzMEJDXHUzMEJFXHUzMEMwXHUzMEMyXHUzMEM1XHUzMEM3XHUzMEM5XHUzMEQwLVx1MzBEMVx1MzBEMy1cdTMwRDRcdTMwRDYtXHUzMEQ3XHUzMEQ5LVx1MzBEQVx1MzBEQy1cdTMwRERcdTMwRjRcdTMwRjctXHUzMEZBXHUzMEZFXHUzMTMxLVx1MzE4RVx1MzE5Mi1cdTMxOUZcdTMyMDAtXHUzMjFDXHUzMjIwLVx1MzI0M1x1MzI2MC1cdTMyN0JcdTMyODAtXHUzMkIwXHUzMkMwLVx1MzJDQlx1MzJEMC1cdTMyRkVcdTMzMDAtXHUzMzc2XHUzMzdCLVx1MzNERFx1MzNFMC1cdTMzRkVcdUFDMDAtXHVEN0EzXHVGOTAwLVx1RkEwRFx1RkExMFx1RkExMlx1RkExNS1cdUZBMUVcdUZBMjBcdUZBMjJcdUZBMjUtXHVGQTI2XHVGQTJBLVx1RkEyRFx1RkIwMC1cdUZCMDZcdUZCMTMtXHVGQjE3XHVGQjFEXHVGQjFGLVx1RkIzNlx1RkIzOC1cdUZCM0NcdUZCM0VcdUZCNDAtXHVGQjQxXHVGQjQzLVx1RkI0NFx1RkI0Ni1cdUZCQjFcdUZCRDMtXHVGRDNEXHVGRDUwLVx1RkQ4Rlx1RkQ5Mi1cdUZEQzdcdUZERjAtXHVGREZCXHVGRTMwLVx1RkU0NFx1RkU0OS1cdUZFNTJcdUZFNTQtXHVGRTY2XHVGRTY4LVx1RkU2Qlx1RkU3MC1cdUZFNzJcdUZFNzRcdUZFNzYtXHVGRUZDXHVGRjAxLVx1RkY1RVx1RkY2MS1cdUZGQkVcdUZGQzItXHVGRkM3XHVGRkNBLVx1RkZDRlx1RkZEMi1cdUZGRDdcdUZGREEtXHVGRkRDXHVGRkUwLVx1RkZFNlx1RkZFOC1cdUZGRUVdIiksCisJICAgIG5ldyBVbmljb2RlU2V0KCJbXHUwMEEwXHUwMEE4XHUwMEFBXHUwMEFGXHUwMEIyLVx1MDBCNVx1MDBCOC1cdTAwQkFcdTAwQkMtXHUwMEJFXHUwMTMyLVx1MDEzM1x1MDEzRi1cdTAxNDBcdTAxNDlcdTAxN0ZcdTAxQzQtXHUwMUNDXHUwMUYxLVx1MDFGM1x1MDJCMC1cdTAyQjhcdTAyRDgtXHUwMkREXHUwMkUwLVx1MDJFNFx1MDM0MC1cdTAzNDFcdTAzNDMtXHUwMzQ0XHUwMzc0XHUwMzdBXHUwMzdFXHUwMzg0LVx1MDM4NVx1MDM4N1x1MDNEMC1cdTAzRDZcdTAzRjAtXHUwM0YyXHUwNTg3XHUwNjc1LVx1MDY3OFx1MDk1OC1cdTA5NUZcdTA5REMtXHUwOUREXHUwOURGXHUwQTMzXHUwQTM2XHUwQTU5LVx1MEE1Qlx1MEE1RVx1MEI1Qy1cdTBCNURcdTBFMzNcdTBFQjNcdTBFREMtXHUwRUREXHUwRjBDXHUwRjQzXHUwRjREXHUwRjUyXHUwRjU3XHUwRjVDXHUwRjY5XHUwRjczXHUwRjc1LVx1MEY3OVx1MEY4MVx1MEY5M1x1MEY5RFx1MEZBMlx1MEZBN1x1MEZBQ1x1MEZCOVx1MUU5QS1cdTFFOUJcdTFGNzFcdTFGNzNcdTFGNzVcdTFGNzdcdTFGNzlcdTFGN0JcdTFGN0RcdTFGQkJcdTFGQkQtXHUxRkMxXHUxRkM5XHUxRkNCXHUxRkNELVx1MUZDRlx1MUZEM1x1MUZEQlx1MUZERC1cdTFGREZcdTFGRTNcdTFGRUJcdTFGRUQtXHUxRkVGXHUxRkY5XHUxRkZCXHUxRkZELVx1MUZGRVx1MjAwMC1cdTIwMEFcdTIwMTFcdTIwMTdcdTIwMjQtXHUyMDI2XHUyMDJGXHUyMDMzLVx1MjAzNFx1MjAzNi1cdTIwMzdcdTIwM0NcdTIwM0VcdTIwNDgtXHUyMDQ5XHUyMDcwXHUyMDc0LVx1MjA4RVx1MjBBOFx1MjEwMC1cdTIxMDNcdTIxMDUtXHUyMTA3XHUyMTA5LVx1MjExM1x1MjExNS1cdTIxMTZcdTIxMTktXHUyMTFEXHUyMTIwLVx1MjEyMlx1MjEyNFx1MjEyNlx1MjEyOFx1MjEyQS1cdTIxMkRcdTIxMkYtXHUyMTMxXHUyMTMzLVx1MjEzOVx1MjE1My1cdTIxN0ZcdTIyMkMtXHUyMjJEXHUyMjJGLVx1MjIzMFx1MjMyOS1cdTIzMkFcdTI0NjAtXHUyNEVBXHUyRTlGXHUyRUYzXHUyRjAwLVx1MkZENVx1MzAwMFx1MzAzNlx1MzAzOC1cdTMwM0FcdTMwOUItXHUzMDlDXHUzMTMxLVx1MzE4RVx1MzE5Mi1cdTMxOUZcdTMyMDAtXHUzMjFDXHUzMjIwLVx1MzI0M1x1MzI2MC1cdTMyN0JcdTMyODAtXHUzMkIwXHUzMkMwLVx1MzJDQlx1MzJEMC1cdTMyRkVcdTMzMDAtXHUzMzc2XHUzMzdCLVx1MzNERFx1MzNFMC1cdTMzRkVcdUY5MDAtXHVGQTBEXHVGQTEwXHVGQTEyXHVGQTE1LVx1RkExRVx1RkEyMFx1RkEyMlx1RkEyNS1cdUZBMjZcdUZBMkEtXHVGQTJEXHVGQjAwLVx1RkIwNlx1RkIxMy1cdUZCMTdcdUZCMUYtXHVGQjM2XHVGQjM4LVx1RkIzQ1x1RkIzRVx1RkI0MC1cdUZCNDFcdUZCNDMtXHVGQjQ0XHVGQjQ2LVx1RkJCMVx1RkJEMy1cdUZEM0RcdUZENTAtXHVGRDhGXHVGRDkyLVx1RkRDN1x1RkRGMC1cdUZERkJcdUZFMzAtXHVGRTQ0XHVGRTQ5LVx1RkU1Mlx1RkU1NC1cdUZFNjZcdUZFNjgtXHVGRTZCXHVGRTcwLVx1RkU3Mlx1RkU3NFx1RkU3Ni1cdUZFRkNcdUZGMDEtXHVGRjVFXHVGRjYxLVx1RkZCRVx1RkZDMi1cdUZGQzdcdUZGQ0EtXHVGRkNGXHVGRkQyLVx1RkZEN1x1RkZEQS1cdUZGRENcdUZGRTAtXHVGRkU2XHVGRkU4LVx1RkZFRV0iKSwKKyAgICAgICAgfSwKKyAgICAgICAgeworCSAgICBuZXcgVW5pY29kZVNldCgiW0EtWlx1MDBCMi1cdTAwQjNcdTAwQjVcdTAwQjlcdTAwQkMtXHUwMEJFXHUwMEMwLVx1MDBENlx1MDBEOC1cdTAwREVcdTAxMDBcdTAxMDJcdTAxMDRcdTAxMDZcdTAxMDhcdTAxMEFcdTAxMENcdTAxMEVcdTAxMTBcdTAxMTJcdTAxMTRcdTAxMTZcdTAxMThcdTAxMUFcdTAxMUNcdTAxMUVcdTAxMjBcdTAxMjJcdTAxMjRcdTAxMjZcdTAxMjhcdTAxMkFcdTAxMkNcdTAxMkVcdTAxMzAtXHUwMTMyXHUwMTM0XHUwMTM2XHUwMTM5XHUwMTNCXHUwMTNEXHUwMTNGXHUwMTQxXHUwMTQzXHUwMTQ1XHUwMTQ3XHUwMTRBXHUwMTRDXHUwMTRFXHUwMTUwXHUwMTUyXHUwMTU0XHUwMTU2XHUwMTU4XHUwMTVBXHUwMTVDXHUwMTVFXHUwMTYwXHUwMTYyXHUwMTY0XHUwMTY2XHUwMTY4XHUwMTZBXHUwMTZDXHUwMTZFXHUwMTcwXHUwMTcyXHUwMTc0XHUwMTc2XHUwMTc4LVx1MDE3OVx1MDE3Qlx1MDE3RFx1MDE3Rlx1MDE4MS1cdTAxODJcdTAxODRcdTAxODYtXHUwMTg3XHUwMTg5LVx1MDE4Qlx1MDE4RS1cdTAxOTFcdTAxOTMtXHUwMTk0XHUwMTk2LVx1MDE5OFx1MDE5Qy1cdTAxOURcdTAxOUYtXHUwMUEwXHUwMUEyXHUwMUE0XHUwMUE2LVx1MDFBN1x1MDFBOVx1MDFBQ1x1MDFBRS1cdTAxQUZcdTAxQjEtXHUwMUIzXHUwMUI1XHUwMUI3LVx1MDFCOFx1MDFCQ1x1MDFDNC1cdTAxQ0RcdTAxQ0ZcdTAxRDFcdTAxRDNcdTAxRDVcdTAxRDdcdTAxRDlcdTAxREJcdTAxREVcdTAxRTBcdTAxRTJcdTAxRTRcdTAxRTZcdTAxRThcdTAxRUFcdTAxRUNcdTAxRUVcdTAxRjEtXHUwMUY0XHUwMUY2LVx1MDFGOFx1MDFGQVx1MDFGQ1x1MDFGRVx1MDIwMFx1MDIwMlx1MDIwNFx1MDIwNlx1MDIwOFx1MDIwQVx1MDIwQ1x1MDIwRVx1MDIxMFx1MDIxMlx1MDIxNFx1MDIxNlx1MDIxOFx1MDIxQVx1MDIxQ1x1MDIxRVx1MDIyMlx1MDIyNFx1MDIyNlx1MDIyOFx1MDIyQVx1MDIyQ1x1MDIyRVx1MDIzMFx1MDIzMlx1MDM0NVx1MDM4Nlx1MDM4OC1cdTAzOEFcdTAzOENcdTAzOEUtXHUwMzhGXHUwMzkxLVx1MDNBMVx1MDNBMy1cdTAzQUJcdTAzQzJcdTAzRDAtXHUwM0QxXHUwM0Q1LVx1MDNENlx1MDNEQVx1MDNEQ1x1MDNERVx1MDNFMFx1MDNFMlx1MDNFNFx1MDNFNlx1MDNFOFx1MDNFQVx1MDNFQ1x1MDNFRVx1MDNGMC1cdTAzRjJcdTAzRjQtXHUwM0Y1XHUwNDAwLVx1MDQyRlx1MDQ2MFx1MDQ2Mlx1MDQ2NFx1MDQ2Nlx1MDQ2OFx1MDQ2QVx1MDQ2Q1x1MDQ2RVx1MDQ3MFx1MDQ3Mlx1MDQ3NFx1MDQ3Nlx1MDQ3OFx1MDQ3QVx1MDQ3Q1x1MDQ3RVx1MDQ4MFx1MDQ4Q1x1MDQ4RVx1MDQ5MFx1MDQ5Mlx1MDQ5NFx1MDQ5Nlx1MDQ5OFx1MDQ5QVx1MDQ5Q1x1MDQ5RVx1MDRBMFx1MDRBMlx1MDRBNFx1MDRBNlx1MDRBOFx1MDRBQVx1MDRBQ1x1MDRBRVx1MDRCMFx1MDRCMlx1MDRCNFx1MDRCNlx1MDRCOFx1MDRCQVx1MDRCQ1x1MDRCRVx1MDRDMVx1MDRDM1x1MDRDN1x1MDRDQlx1MDREMFx1MDREMlx1MDRENFx1MDRENlx1MDREOFx1MDREQVx1MDREQ1x1MDRERVx1MDRFMFx1MDRFMlx1MDRFNFx1MDRFNlx1MDRFOFx1MDRFQVx1MDRFQ1x1MDRFRVx1MDRGMFx1MDRGMlx1MDRGNFx1MDRGOFx1MDUzMS1cdTA1NTZcdTA5RjhcdTBGMkEtXHUwRjMzXHUxMzdDXHUxRTAwXHUxRTAyXHUxRTA0XHUxRTA2XHUxRTA4XHUxRTBBXHUxRTBDXHUxRTBFXHUxRTEwXHUxRTEyXHUxRTE0XHUxRTE2XHUxRTE4XHUxRTFBXHUxRTFDXHUxRTFFXHUxRTIwXHUxRTIyXHUxRTI0XHUxRTI2XHUxRTI4XHUxRTJBXHUxRTJDXHUxRTJFXHUxRTMwXHUxRTMyXHUxRTM0XHUxRTM2XHUxRTM4XHUxRTNBXHUxRTNDXHUxRTNFXHUxRTQwXHUxRTQyXHUxRTQ0XHUxRTQ2XHUxRTQ4XHUxRTRBXHUxRTRDXHUxRTRFXHUxRTUwXHUxRTUyXHUxRTU0XHUxRTU2XHUxRTU4XHUxRTVBXHUxRTVDXHUxRTVFXHUxRTYwXHUxRTYyXHUxRTY0XHUxRTY2XHUxRTY4XHUxRTZBXHUxRTZDXHUxRTZFXHUxRTcwXHUxRTcyXHUxRTc0XHUxRTc2XHUxRTc4XHUxRTdBXHUxRTdDXHUxRTdFXHUxRTgwXHUxRTgyXHUxRTg0XHUxRTg2XHUxRTg4XHUxRThBXHUxRThDXHUxRThFXHUxRTkwXHUxRTkyXHUxRTk0XHUxRTlCXHUxRUEwXHUxRUEyXHUxRUE0XHUxRUE2XHUxRUE4XHUxRUFBXHUxRUFDXHUxRUFFXHUxRUIwXHUxRUIyXHUxRUI0XHUxRUI2XHUxRUI4XHUxRUJBXHUxRUJDXHUxRUJFXHUxRUMwXHUxRUMyXHUxRUM0XHUxRUM2XHUxRUM4XHUxRUNBXHUxRUNDXHUxRUNFXHUxRUQwXHUxRUQyXHUxRUQ0XHUxRUQ2XHUxRUQ4XHUxRURBXHUxRURDXHUxRURFXHUxRUUwXHUxRUUyXHUxRUU0XHUxRUU2XHUxRUU4XHUxRUVBXHUxRUVDXHUxRUVFXHUxRUYwXHUxRUYyXHUxRUY0XHUxRUY2XHUxRUY4XHUxRjA4LVx1MUYwRlx1MUYxOC1cdTFGMURcdTFGMjgtXHUxRjJGXHUxRjM4LVx1MUYzRlx1MUY0OC1cdTFGNERcdTFGNTlcdTFGNUJcdTFGNURcdTFGNUZcdTFGNjgtXHUxRjZGXHUxRjg4LVx1MUY4Rlx1MUY5OC1cdTFGOUZcdTFGQTgtXHUxRkFGXHUxRkI4LVx1MUZCQ1x1MUZCRVx1MUZDOC1cdTFGQ0NcdTFGRDgtXHUxRkRCXHUxRkU4LVx1MUZFQ1x1MUZGOC1cdTFGRkNcdTIwNzBcdTIwNzQtXHUyMDc5XHUyMDgwLVx1MjA4OVx1MjEyNlx1MjEyQS1cdTIxMkJcdTIxNTMtXHUyMTVFXHUyMTYwLVx1MjE3Rlx1MjE4MS1cdTIxODNcdTI0NjAtXHUyNDY4XHUyNDc0LVx1MjQ3Q1x1MjQ4OC1cdTI0OTBcdTI0QjYtXHUyNEVBXHUyNzc2LVx1Mjc3RVx1Mjc4MC1cdTI3ODhcdTI3OEEtXHUyNzkyXHVGRjIxLVx1RkYzQVxcVTAwMDEwMzRBXFxVMDAwMTA0MDAtXFxVMDAwMTA0MjVcXFUwMDAxRDE2NS1cXFUwMDAxRDE2NlxcVTAwMDFEMTZELVxcVTAwMDFEMTcyXSIpLAorCSAgICBuZXcgVW5pY29kZVNldCgiW0EtWlx1MDBCMi1cdTAwQjNcdTAwQjVcdTAwQjlcdTAwQkMtXHUwMEJFXHUwMEMwLVx1MDBENlx1MDBEOC1cdTAwREVcdTAwRTAtXHUwMEU1XHUwMEU3LVx1MDBFRlx1MDBGMS1cdTAwRjZcdTAwRjktXHUwMEZEXHUwMEZGLVx1MDExMFx1MDExMi1cdTAxMjZcdTAxMjgtXHUwMTMyXHUwMTM0LVx1MDEzN1x1MDEzOS1cdTAxM0ZcdTAxNDFcdTAxNDMtXHUwMTQ4XHUwMTRBXHUwMTRDLVx1MDE1Mlx1MDE1NC1cdTAxNjZcdTAxNjgtXHUwMTdGXHUwMTgxLVx1MDE4Mlx1MDE4NFx1MDE4Ni1cdTAxODdcdTAxODktXHUwMThCXHUwMThFLVx1MDE5MVx1MDE5My1cdTAxOTRcdTAxOTYtXHUwMTk4XHUwMTlDLVx1MDE5RFx1MDE5Ri1cdTAxQTJcdTAxQTRcdTAxQTYtXHUwMUE3XHUwMUE5XHUwMUFDXHUwMUFFLVx1MDFCM1x1MDFCNVx1MDFCNy1cdTAxQjhcdTAxQkNcdTAxQzQtXHUwMURDXHUwMURFLVx1MDFFNFx1MDFFNi1cdTAyMUNcdTAyMUUtXHUwMjFGXHUwMjIyXHUwMjI0XHUwMjI2LVx1MDIzM1x1MDM0MC1cdTAzNDFcdTAzNDMtXHUwMzQ1XHUwMzc0XHUwMzdFXHUwMzg1LVx1MDM4QVx1MDM4Q1x1MDM4RS1cdTAzQTFcdTAzQTMtXHUwM0IwXHUwM0MyXHUwM0NBLVx1MDNDRVx1MDNEMC1cdTAzRDFcdTAzRDMtXHUwM0Q2XHUwM0RBXHUwM0RDXHUwM0RFXHUwM0UwXHUwM0UyXHUwM0U0XHUwM0U2XHUwM0U4XHUwM0VBXHUwM0VDXHUwM0VFXHUwM0YwLVx1MDNGMlx1MDNGNC1cdTAzRjVcdTA0MDAtXHUwNDJGXHUwNDM5XHUwNDUwLVx1MDQ1MVx1MDQ1M1x1MDQ1N1x1MDQ1Qy1cdTA0NUVcdTA0NjBcdTA0NjJcdTA0NjRcdTA0NjZcdTA0NjhcdTA0NkFcdTA0NkNcdTA0NkVcdTA0NzBcdTA0NzJcdTA0NzRcdTA0NzYtXHUwNDc4XHUwNDdBXHUwNDdDXHUwNDdFXHUwNDgwXHUwNDhDXHUwNDhFXHUwNDkwXHUwNDkyXHUwNDk0XHUwNDk2XHUwNDk4XHUwNDlBXHUwNDlDXHUwNDlFXHUwNEEwXHUwNEEyXHUwNEE0XHUwNEE2XHUwNEE4XHUwNEFBXHUwNEFDXHUwNEFFXHUwNEIwXHUwNEIyXHUwNEI0XHUwNEI2XHUwNEI4XHUwNEJBXHUwNEJDXHUwNEJFXHUwNEMxLVx1MDRDM1x1MDRDN1x1MDRDQlx1MDREMC1cdTA0RDRcdTA0RDYtXHUwNEQ4XHUwNERBLVx1MDRFMFx1MDRFMi1cdTA0RThcdTA0RUEtXHUwNEY1XHUwNEY4LVx1MDRGOVx1MDUzMS1cdTA1NTZcdTA2MjItXHUwNjI2XHUwNkMwXHUwNkMyXHUwNkQzXHUwOTI5XHUwOTMxXHUwOTM0XHUwOTU4LVx1MDk1Rlx1MDlDQi1cdTA5Q0NcdTA5REMtXHUwOUREXHUwOURGXHUwOUY4XHUwQTMzXHUwQTM2XHUwQTU5LVx1MEE1Qlx1MEE1RVx1MEI0OFx1MEI0Qi1cdTBCNENcdTBCNUMtXHUwQjVEXHUwQjk0XHUwQkNBLVx1MEJDQ1x1MEM0OFx1MENDMFx1MENDNy1cdTBDQzhcdTBDQ0EtXHUwQ0NCXHUwRDRBLVx1MEQ0Q1x1MEREQVx1MEREQy1cdTBEREVcdTBGMkEtXHUwRjMzXHUwRjQzXHUwRjREXHUwRjUyXHUwRjU3XHUwRjVDXHUwRjY5XHUwRjczXHUwRjc1LVx1MEY3Nlx1MEY3OFx1MEY4MVx1MEY5M1x1MEY5RFx1MEZBMlx1MEZBN1x1MEZBQ1x1MEZCOVx1MTAyNlx1MTM3Q1x1MUUwMC1cdTFFOTlcdTFFOUJcdTFFQTAtXHUxRUY5XHUxRjAwLVx1MUYxNVx1MUYxOC1cdTFGMURcdTFGMjAtXHUxRjQ1XHUxRjQ4LVx1MUY0RFx1MUY1MC1cdTFGNTdcdTFGNTlcdTFGNUJcdTFGNURcdTFGNUYtXHUxRjdEXHUxRjgwLVx1MUZCNFx1MUZCNi1cdTFGQkNcdTFGQkVcdTFGQzEtXHUxRkM0XHUxRkM2LVx1MUZEM1x1MUZENi1cdTFGREJcdTFGREQtXHUxRkVGXHUxRkYyLVx1MUZGNFx1MUZGNi1cdTFGRkRcdTIwMDAtXHUyMDAxXHUyMDcwXHUyMDc0LVx1MjA3OVx1MjA4MC1cdTIwODlcdTIxMjZcdTIxMkEtXHUyMTJCXHUyMTUzLVx1MjE1RVx1MjE2MC1cdTIxN0ZcdTIxODEtXHUyMTgzXHUyMTlBLVx1MjE5Qlx1MjFBRVx1MjFDRC1cdTIxQ0ZcdTIyMDRcdTIyMDlcdTIyMENcdTIyMjRcdTIyMjZcdTIyNDFcdTIyNDRcdTIyNDdcdTIyNDlcdTIyNjBcdTIyNjJcdTIyNkQtXHUyMjcxXHUyMjc0LVx1MjI3NVx1MjI3OC1cdTIyNzlcdTIyODAtXHUyMjgxXHUyMjg0LVx1MjI4NVx1MjI4OC1cdTIyODlcdTIyQUMtXHUyMkFGXHUyMkUwLVx1MjJFM1x1MjJFQS1cdTIyRURcdTIzMjktXHUyMzJBXHUyNDYwLVx1MjQ2OFx1MjQ3NC1cdTI0N0NcdTI0ODgtXHUyNDkwXHUyNEI2LVx1MjRFQVx1Mjc3Ni1cdTI3N0VcdTI3ODAtXHUyNzg4XHUyNzhBLVx1Mjc5Mlx1MzA0Q1x1MzA0RVx1MzA1MFx1MzA1Mlx1MzA1NFx1MzA1Nlx1MzA1OFx1MzA1QVx1MzA1Q1x1MzA1RVx1MzA2MFx1MzA2Mlx1MzA2NVx1MzA2N1x1MzA2OVx1MzA3MC1cdTMwNzFcdTMwNzMtXHUzMDc0XHUzMDc2LVx1MzA3N1x1MzA3OS1cdTMwN0FcdTMwN0MtXHUzMDdEXHUzMDk0XHUzMDlFXHUzMEFDXHUzMEFFXHUzMEIwXHUzMEIyXHUzMEI0XHUzMEI2XHUzMEI4XHUzMEJBXHUzMEJDXHUzMEJFXHUzMEMwXHUzMEMyXHUzMEM1XHUzMEM3XHUzMEM5XHUzMEQwLVx1MzBEMVx1MzBEMy1cdTMwRDRcdTMwRDYtXHUzMEQ3XHUzMEQ5LVx1MzBEQVx1MzBEQy1cdTMwRERcdTMwRjRcdTMwRjctXHUzMEZBXHUzMEZFXHVBQzAwLVx1RDdBM1x1RjkwMC1cdUZBMERcdUZBMTBcdUZBMTJcdUZBMTUtXHVGQTFFXHVGQTIwXHVGQTIyXHVGQTI1LVx1RkEyNlx1RkEyQS1cdUZBMkRcdUZCMURcdUZCMUZcdUZCMkEtXHVGQjM2XHVGQjM4LVx1RkIzQ1x1RkIzRVx1RkI0MC1cdUZCNDFcdUZCNDMtXHVGQjQ0XHVGQjQ2LVx1RkI0RVx1RkYyMS1cdUZGM0FcXFUwMDAxMDM0QVxcVTAwMDEwNDAwLVxcVTAwMDEwNDI1XFxVMDAwMUQxNjUtXFxVMDAwMUQxNjZcXFUwMDAxRDE2RC1cXFUwMDAxRDE3Ml0iKSwKKwkgICAgbmV3IFVuaWNvZGVTZXQoIltBLVpcdTAwQjItXHUwMEIzXHUwMEI1XHUwMEI5XHUwMEJDLVx1MDBCRVx1MDBDMC1cdTAwRDZcdTAwRDgtXHUwMERFXHUwMTAwXHUwMTAyXHUwMTA0XHUwMTA2XHUwMTA4XHUwMTBBXHUwMTBDXHUwMTBFXHUwMTEwXHUwMTEyXHUwMTE0XHUwMTE2XHUwMTE4XHUwMTFBXHUwMTFDXHUwMTFFXHUwMTIwXHUwMTIyXHUwMTI0XHUwMTI2XHUwMTI4XHUwMTJBXHUwMTJDXHUwMTJFXHUwMTMwLVx1MDEzMlx1MDEzNFx1MDEzNlx1MDEzOVx1MDEzQlx1MDEzRFx1MDEzRlx1MDE0MVx1MDE0M1x1MDE0NVx1MDE0N1x1MDE0QVx1MDE0Q1x1MDE0RVx1MDE1MFx1MDE1Mlx1MDE1NFx1MDE1Nlx1MDE1OFx1MDE1QVx1MDE1Q1x1MDE1RVx1MDE2MFx1MDE2Mlx1MDE2NFx1MDE2Nlx1MDE2OFx1MDE2QVx1MDE2Q1x1MDE2RVx1MDE3MFx1MDE3Mlx1MDE3NFx1MDE3Nlx1MDE3OC1cdTAxNzlcdTAxN0JcdTAxN0RcdTAxN0ZcdTAxODEtXHUwMTgyXHUwMTg0XHUwMTg2LVx1MDE4N1x1MDE4OS1cdTAxOEJcdTAxOEUtXHUwMTkxXHUwMTkzLVx1MDE5NFx1MDE5Ni1cdTAxOThcdTAxOUMtXHUwMTlEXHUwMTlGLVx1MDFBMFx1MDFBMlx1MDFBNFx1MDFBNi1cdTAxQTdcdTAxQTlcdTAxQUNcdTAxQUUtXHUwMUFGXHUwMUIxLVx1MDFCM1x1MDFCNVx1MDFCNy1cdTAxQjhcdTAxQkNcdTAxQzQtXHUwMUNEXHUwMUNGXHUwMUQxXHUwMUQzXHUwMUQ1XHUwMUQ3XHUwMUQ5XHUwMURCXHUwMURFXHUwMUUwXHUwMUUyXHUwMUU0XHUwMUU2XHUwMUU4XHUwMUVBXHUwMUVDXHUwMUVFXHUwMUYxLVx1MDFGNFx1MDFGNi1cdTAxRjhcdTAxRkFcdTAxRkNcdTAxRkVcdTAyMDBcdTAyMDJcdTAyMDRcdTAyMDZcdTAyMDhcdTAyMEFcdTAyMENcdTAyMEVcdTAyMTBcdTAyMTJcdTAyMTRcdTAyMTZcdTAyMThcdTAyMUFcdTAyMUNcdTAyMUVcdTAyMjJcdTAyMjRcdTAyMjZcdTAyMjhcdTAyMkFcdTAyMkNcdTAyMkVcdTAyMzBcdTAyMzJcdTAzNDAtXHUwMzQxXHUwMzQzLVx1MDM0NVx1MDM3NFx1MDM3RVx1MDM4Ni1cdTAzOEFcdTAzOENcdTAzOEUtXHUwMzhGXHUwMzkxLVx1MDNBMVx1MDNBMy1cdTAzQUJcdTAzQzJcdTAzRDAtXHUwM0QxXHUwM0Q1LVx1MDNENlx1MDNEQVx1MDNEQ1x1MDNERVx1MDNFMFx1MDNFMlx1MDNFNFx1MDNFNlx1MDNFOFx1MDNFQVx1MDNFQ1x1MDNFRVx1MDNGMC1cdTAzRjJcdTAzRjQtXHUwM0Y1XHUwNDAwLVx1MDQyRlx1MDQ2MFx1MDQ2Mlx1MDQ2NFx1MDQ2Nlx1MDQ2OFx1MDQ2QVx1MDQ2Q1x1MDQ2RVx1MDQ3MFx1MDQ3Mlx1MDQ3NFx1MDQ3Nlx1MDQ3OFx1MDQ3QVx1MDQ3Q1x1MDQ3RVx1MDQ4MFx1MDQ4Q1x1MDQ4RVx1MDQ5MFx1MDQ5Mlx1MDQ5NFx1MDQ5Nlx1MDQ5OFx1MDQ5QVx1MDQ5Q1x1MDQ5RVx1MDRBMFx1MDRBMlx1MDRBNFx1MDRBNlx1MDRBOFx1MDRBQVx1MDRBQ1x1MDRBRVx1MDRCMFx1MDRCMlx1MDRCNFx1MDRCNlx1MDRCOFx1MDRCQVx1MDRCQ1x1MDRCRVx1MDRDMVx1MDRDM1x1MDRDN1x1MDRDQlx1MDREMFx1MDREMlx1MDRENFx1MDRENlx1MDREOFx1MDREQVx1MDREQ1x1MDRERVx1MDRFMFx1MDRFMlx1MDRFNFx1MDRFNlx1MDRFOFx1MDRFQVx1MDRFQ1x1MDRFRVx1MDRGMFx1MDRGMlx1MDRGNFx1MDRGOFx1MDUzMS1cdTA1NTZcdTA5NTgtXHUwOTVGXHUwOURDLVx1MDlERFx1MDlERlx1MDlGOFx1MEEzM1x1MEEzNlx1MEE1OS1cdTBBNUJcdTBBNUVcdTBCNUMtXHUwQjVEXHUwRjJBLVx1MEYzM1x1MEY0M1x1MEY0RFx1MEY1Mlx1MEY1N1x1MEY1Q1x1MEY2OVx1MEY3M1x1MEY3NS1cdTBGNzZcdTBGNzhcdTBGODFcdTBGOTNcdTBGOURcdTBGQTJcdTBGQTdcdTBGQUNcdTBGQjlcdTEzN0NcdTFFMDBcdTFFMDJcdTFFMDRcdTFFMDZcdTFFMDhcdTFFMEFcdTFFMENcdTFFMEVcdTFFMTBcdTFFMTJcdTFFMTRcdTFFMTZcdTFFMThcdTFFMUFcdTFFMUNcdTFFMUVcdTFFMjBcdTFFMjJcdTFFMjRcdTFFMjZcdTFFMjhcdTFFMkFcdTFFMkNcdTFFMkVcdTFFMzBcdTFFMzJcdTFFMzRcdTFFMzZcdTFFMzhcdTFFM0FcdTFFM0NcdTFFM0VcdTFFNDBcdTFFNDJcdTFFNDRcdTFFNDZcdTFFNDhcdTFFNEFcdTFFNENcdTFFNEVcdTFFNTBcdTFFNTJcdTFFNTRcdTFFNTZcdTFFNThcdTFFNUFcdTFFNUNcdTFFNUVcdTFFNjBcdTFFNjJcdTFFNjRcdTFFNjZcdTFFNjhcdTFFNkFcdTFFNkNcdTFFNkVcdTFFNzBcdTFFNzJcdTFFNzRcdTFFNzZcdTFFNzhcdTFFN0FcdTFFN0NcdTFFN0VcdTFFODBcdTFFODJcdTFFODRcdTFFODZcdTFFODhcdTFFOEFcdTFFOENcdTFFOEVcdTFFOTBcdTFFOTJcdTFFOTRcdTFFOUJcdTFFQTBcdTFFQTJcdTFFQTRcdTFFQTZcdTFFQThcdTFFQUFcdTFFQUNcdTFFQUVcdTFFQjBcdTFFQjJcdTFFQjRcdTFFQjZcdTFFQjhcdTFFQkFcdTFFQkNcdTFFQkVcdTFFQzBcdTFFQzJcdTFFQzRcdTFFQzZcdTFFQzhcdTFFQ0FcdTFFQ0NcdTFFQ0VcdTFFRDBcdTFFRDJcdTFFRDRcdTFFRDZcdTFFRDhcdTFFREFcdTFFRENcdTFFREVcdTFFRTBcdTFFRTJcdTFFRTRcdTFFRTZcdTFFRThcdTFFRUFcdTFFRUNcdTFFRUVcdTFFRjBcdTFFRjJcdTFFRjRcdTFFRjZcdTFFRjhcdTFGMDgtXHUxRjBGXHUxRjE4LVx1MUYxRFx1MUYyOC1cdTFGMkZcdTFGMzgtXHUxRjNGXHUxRjQ4LVx1MUY0RFx1MUY1OVx1MUY1Qlx1MUY1RFx1MUY1Rlx1MUY2OC1cdTFGNkZcdTFGNzFcdTFGNzNcdTFGNzVcdTFGNzdcdTFGNzlcdTFGN0JcdTFGN0RcdTFGODgtXHUxRjhGXHUxRjk4LVx1MUY5Rlx1MUZBOC1cdTFGQUZcdTFGQjgtXHUxRkJDXHUxRkJFXHUxRkM4LVx1MUZDQ1x1MUZEM1x1MUZEOC1cdTFGREJcdTFGRTNcdTFGRTgtXHUxRkVDXHUxRkVFLVx1MUZFRlx1MUZGOC1cdTFGRkRcdTIwMDAtXHUyMDAxXHUyMDcwXHUyMDc0LVx1MjA3OVx1MjA4MC1cdTIwODlcdTIxMjZcdTIxMkEtXHUyMTJCXHUyMTUzLVx1MjE1RVx1MjE2MC1cdTIxN0ZcdTIxODEtXHUyMTgzXHUyMzI5LVx1MjMyQVx1MjQ2MC1cdTI0NjhcdTI0NzQtXHUyNDdDXHUyNDg4LVx1MjQ5MFx1MjRCNi1cdTI0RUFcdTI3NzYtXHUyNzdFXHUyNzgwLVx1Mjc4OFx1Mjc4QS1cdTI3OTJcdUY5MDAtXHVGQTBEXHVGQTEwXHVGQTEyXHVGQTE1LVx1RkExRVx1RkEyMFx1RkEyMlx1RkEyNS1cdUZBMjZcdUZBMkEtXHVGQTJEXHVGQjFGXHVGQjJBLVx1RkIzNlx1RkIzOC1cdUZCM0NcdUZCM0VcdUZCNDAtXHVGQjQxXHVGQjQzLVx1RkI0NFx1RkI0Ni1cdUZCNEVcdUZGMjEtXHVGRjNBXFxVMDAwMTAzNEFcXFUwMDAxMDQwMC1cXFUwMDAxMDQyNVxcVTAwMDFEMTY1LVxcVTAwMDFEMTY2XFxVMDAwMUQxNkQtXFxVMDAwMUQxNzJdIiksCisJICAgIG5ldyBVbmljb2RlU2V0KCJbQS1aXHUwMEEwXHUwMEE4XHUwMEFBXHUwMEFGXHUwMEIyLVx1MDBCNVx1MDBCOC1cdTAwQkFcdTAwQkMtXHUwMEJFXHUwMEMwLVx1MDBENlx1MDBEOC1cdTAwREVcdTAwRTAtXHUwMEU1XHUwMEU3LVx1MDBFRlx1MDBGMS1cdTAwRjZcdTAwRjktXHUwMEZEXHUwMEZGLVx1MDExMFx1MDExMi1cdTAxMjZcdTAxMjgtXHUwMTM3XHUwMTM5LVx1MDE0MVx1MDE0My1cdTAxNEFcdTAxNEMtXHUwMTUyXHUwMTU0LVx1MDE2Nlx1MDE2OC1cdTAxN0ZcdTAxODEtXHUwMTgyXHUwMTg0XHUwMTg2LVx1MDE4N1x1MDE4OS1cdTAxOEJcdTAxOEUtXHUwMTkxXHUwMTkzLVx1MDE5NFx1MDE5Ni1cdTAxOThcdTAxOUMtXHUwMTlEXHUwMTlGLVx1MDFBMlx1MDFBNFx1MDFBNi1cdTAxQTdcdTAxQTlcdTAxQUNcdTAxQUUtXHUwMUIzXHUwMUI1XHUwMUI3LVx1MDFCOFx1MDFCQ1x1MDFDNC1cdTAxRENcdTAxREUtXHUwMUU0XHUwMUU2LVx1MDIxQ1x1MDIxRS1cdTAyMUZcdTAyMjJcdTAyMjRcdTAyMjYtXHUwMjMzXHUwMkIwLVx1MDJCOFx1MDJEOC1cdTAyRERcdTAyRTAtXHUwMkU0XHUwMzQwLVx1MDM0MVx1MDM0My1cdTAzNDVcdTAzNzRcdTAzN0FcdTAzN0VcdTAzODQtXHUwMzhBXHUwMzhDXHUwMzhFLVx1MDNBMVx1MDNBMy1cdTAzQjBcdTAzQzJcdTAzQ0EtXHUwM0NFXHUwM0QwLVx1MDNENlx1MDNEQVx1MDNEQ1x1MDNERVx1MDNFMFx1MDNFMlx1MDNFNFx1MDNFNlx1MDNFOFx1MDNFQVx1MDNFQ1x1MDNFRVx1MDNGMC1cdTAzRjJcdTAzRjQtXHUwM0Y1XHUwNDAwLVx1MDQyRlx1MDQzOVx1MDQ1MC1cdTA0NTFcdTA0NTNcdTA0NTdcdTA0NUMtXHUwNDVFXHUwNDYwXHUwNDYyXHUwNDY0XHUwNDY2XHUwNDY4XHUwNDZBXHUwNDZDXHUwNDZFXHUwNDcwXHUwNDcyXHUwNDc0XHUwNDc2LVx1MDQ3OFx1MDQ3QVx1MDQ3Q1x1MDQ3RVx1MDQ4MFx1MDQ4Q1x1MDQ4RVx1MDQ5MFx1MDQ5Mlx1MDQ5NFx1MDQ5Nlx1MDQ5OFx1MDQ5QVx1MDQ5Q1x1MDQ5RVx1MDRBMFx1MDRBMlx1MDRBNFx1MDRBNlx1MDRBOFx1MDRBQVx1MDRBQ1x1MDRBRVx1MDRCMFx1MDRCMlx1MDRCNFx1MDRCNlx1MDRCOFx1MDRCQVx1MDRCQ1x1MDRCRVx1MDRDMS1cdTA0QzNcdTA0QzdcdTA0Q0JcdTA0RDAtXHUwNEQ0XHUwNEQ2LVx1MDREOFx1MDREQS1cdTA0RTBcdTA0RTItXHUwNEU4XHUwNEVBLVx1MDRGNVx1MDRGOC1cdTA0RjlcdTA1MzEtXHUwNTU2XHUwNTg3XHUwNjIyLVx1MDYyNlx1MDY3NS1cdTA2NzhcdTA2QzBcdTA2QzJcdTA2RDNcdTA5MjlcdTA5MzFcdTA5MzRcdTA5NTgtXHUwOTVGXHUwOUNCLVx1MDlDQ1x1MDlEQy1cdTA5RERcdTA5REZcdTA5RjhcdTBBMzNcdTBBMzZcdTBBNTktXHUwQTVCXHUwQTVFXHUwQjQ4XHUwQjRCLVx1MEI0Q1x1MEI1Qy1cdTBCNURcdTBCOTRcdTBCQ0EtXHUwQkNDXHUwQzQ4XHUwQ0MwXHUwQ0M3LVx1MENDOFx1MENDQS1cdTBDQ0JcdTBENEEtXHUwRDRDXHUwRERBXHUwRERDLVx1MERERVx1MEUzM1x1MEVCM1x1MEVEQy1cdTBFRERcdTBGMENcdTBGMkEtXHUwRjMzXHUwRjQzXHUwRjREXHUwRjUyXHUwRjU3XHUwRjVDXHUwRjY5XHUwRjczXHUwRjc1LVx1MEY3OVx1MEY4MVx1MEY5M1x1MEY5RFx1MEZBMlx1MEZBN1x1MEZBQ1x1MEZCOVx1MTAyNlx1MTM3Q1x1MUUwMC1cdTFFOUJcdTFFQTAtXHUxRUY5XHUxRjAwLVx1MUYxNVx1MUYxOC1cdTFGMURcdTFGMjAtXHUxRjQ1XHUxRjQ4LVx1MUY0RFx1MUY1MC1cdTFGNTdcdTFGNTlcdTFGNUJcdTFGNURcdTFGNUYtXHUxRjdEXHUxRjgwLVx1MUZCNFx1MUZCNi1cdTFGQzRcdTFGQzYtXHUxRkQzXHUxRkQ2LVx1MUZEQlx1MUZERC1cdTFGRUZcdTFGRjItXHUxRkY0XHUxRkY2LVx1MUZGRVx1MjAwMC1cdTIwMEFcdTIwMTFcdTIwMTdcdTIwMjQtXHUyMDI2XHUyMDJGXHUyMDMzLVx1MjAzNFx1MjAzNi1cdTIwMzdcdTIwM0NcdTIwM0VcdTIwNDgtXHUyMDQ5XHUyMDcwXHUyMDc0LVx1MjA4RVx1MjBBOFx1MjEwMC1cdTIxMDNcdTIxMDUtXHUyMTA3XHUyMTA5LVx1MjExM1x1MjExNS1cdTIxMTZcdTIxMTktXHUyMTFEXHUyMTIwLVx1MjEyMlx1MjEyNFx1MjEyNlx1MjEyOFx1MjEyQS1cdTIxMkRcdTIxMkYtXHUyMTMxXHUyMTMzLVx1MjEzOVx1MjE1My1cdTIxN0ZcdTIxODEtXHUyMTgzXHUyMTlBLVx1MjE5Qlx1MjFBRVx1MjFDRC1cdTIxQ0ZcdTIyMDRcdTIyMDlcdTIyMENcdTIyMjRcdTIyMjZcdTIyMkMtXHUyMjJEXHUyMjJGLVx1MjIzMFx1MjI0MVx1MjI0NFx1MjI0N1x1MjI0OVx1MjI2MFx1MjI2Mlx1MjI2RC1cdTIyNzFcdTIyNzQtXHUyMjc1XHUyMjc4LVx1MjI3OVx1MjI4MC1cdTIyODFcdTIyODQtXHUyMjg1XHUyMjg4LVx1MjI4OVx1MjJBQy1cdTIyQUZcdTIyRTAtXHUyMkUzXHUyMkVBLVx1MjJFRFx1MjMyOS1cdTIzMkFcdTI0NjAtXHUyNEVBXHUyNzc2LVx1Mjc3RVx1Mjc4MC1cdTI3ODhcdTI3OEEtXHUyNzkyXHUyRTlGXHUyRUYzXHUyRjAwLVx1MkZENVx1MzAwMFx1MzAzNlx1MzAzOC1cdTMwM0FcdTMwNENcdTMwNEVcdTMwNTBcdTMwNTJcdTMwNTRcdTMwNTZcdTMwNThcdTMwNUFcdTMwNUNcdTMwNUVcdTMwNjBcdTMwNjJcdTMwNjVcdTMwNjdcdTMwNjlcdTMwNzAtXHUzMDcxXHUzMDczLVx1MzA3NFx1MzA3Ni1cdTMwNzdcdTMwNzktXHUzMDdBXHUzMDdDLVx1MzA3RFx1MzA5NFx1MzA5Qi1cdTMwOUNcdTMwOUVcdTMwQUNcdTMwQUVcdTMwQjBcdTMwQjJcdTMwQjRcdTMwQjZcdTMwQjhcdTMwQkFcdTMwQkNcdTMwQkVcdTMwQzBcdTMwQzJcdTMwQzVcdTMwQzdcdTMwQzlcdTMwRDAtXHUzMEQxXHUzMEQzLVx1MzBENFx1MzBENi1cdTMwRDdcdTMwRDktXHUzMERBXHUzMERDLVx1MzBERFx1MzBGNFx1MzBGNy1cdTMwRkFcdTMwRkVcdTMxMzEtXHUzMThFXHUzMTkyLVx1MzE5Rlx1MzIwMC1cdTMyMUNcdTMyMjAtXHUzMjQzXHUzMjYwLVx1MzI3Qlx1MzI4MC1cdTMyQjBcdTMyQzAtXHUzMkNCXHUzMkQwLVx1MzJGRVx1MzMwMC1cdTMzNzZcdTMzN0ItXHUzM0REXHUzM0UwLVx1MzNGRVx1QUMwMC1cdUQ3QTNcdUY5MDAtXHVGQTBEXHVGQTEwXHVGQTEyXHVGQTE1LVx1RkExRVx1RkEyMFx1RkEyMlx1RkEyNS1cdUZBMjZcdUZBMkEtXHVGQTJEXHVGQjAwLVx1RkIwNlx1RkIxMy1cdUZCMTdcdUZCMURcdUZCMUYtXHVGQjM2XHVGQjM4LVx1RkIzQ1x1RkIzRVx1RkI0MC1cdUZCNDFcdUZCNDMtXHVGQjQ0XHVGQjQ2LVx1RkJCMVx1RkJEMy1cdUZEM0RcdUZENTAtXHVGRDhGXHVGRDkyLVx1RkRDN1x1RkRGMC1cdUZERkJcdUZFMzAtXHVGRTQ0XHVGRTQ5LVx1RkU1Mlx1RkU1NC1cdUZFNjZcdUZFNjgtXHVGRTZCXHVGRTcwLVx1RkU3Mlx1RkU3NFx1RkU3Ni1cdUZFRkNcdUZGMDEtXHVGRjVFXHVGRjYxLVx1RkZCRVx1RkZDMi1cdUZGQzdcdUZGQ0EtXHVGRkNGXHVGRkQyLVx1RkZEN1x1RkZEQS1cdUZGRENcdUZGRTAtXHVGRkU2XHVGRkU4LVx1RkZFRVxcVTAwMDEwMzRBXFxVMDAwMTA0MDAtXFxVMDAwMTA0MjVcXFUwMDAxRDE2NS1cXFUwMDAxRDE2NlxcVTAwMDFEMTZELVxcVTAwMDFEMTcyXSIpLAorCSAgICBuZXcgVW5pY29kZVNldCgiW0EtWlx1MDBBMFx1MDBBOFx1MDBBQVx1MDBBRlx1MDBCMi1cdTAwQjVcdTAwQjgtXHUwMEJBXHUwMEJDLVx1MDBCRVx1MDBDMC1cdTAwRDZcdTAwRDgtXHUwMERFXHUwMTAwXHUwMTAyXHUwMTA0XHUwMTA2XHUwMTA4XHUwMTBBXHUwMTBDXHUwMTBFXHUwMTEwXHUwMTEyXHUwMTE0XHUwMTE2XHUwMTE4XHUwMTFBXHUwMTFDXHUwMTFFXHUwMTIwXHUwMTIyXHUwMTI0XHUwMTI2XHUwMTI4XHUwMTJBXHUwMTJDXHUwMTJFXHUwMTMwLVx1MDEzNFx1MDEzNlx1MDEzOVx1MDEzQlx1MDEzRFx1MDEzRi1cdTAxNDFcdTAxNDNcdTAxNDVcdTAxNDdcdTAxNDktXHUwMTRBXHUwMTRDXHUwMTRFXHUwMTUwXHUwMTUyXHUwMTU0XHUwMTU2XHUwMTU4XHUwMTVBXHUwMTVDXHUwMTVFXHUwMTYwXHUwMTYyXHUwMTY0XHUwMTY2XHUwMTY4XHUwMTZBXHUwMTZDXHUwMTZFXHUwMTcwXHUwMTcyXHUwMTc0XHUwMTc2XHUwMTc4LVx1MDE3OVx1MDE3Qlx1MDE3RFx1MDE3Rlx1MDE4MS1cdTAxODJcdTAxODRcdTAxODYtXHUwMTg3XHUwMTg5LVx1MDE4Qlx1MDE4RS1cdTAxOTFcdTAxOTMtXHUwMTk0XHUwMTk2LVx1MDE5OFx1MDE5Qy1cdTAxOURcdTAxOUYtXHUwMUEwXHUwMUEyXHUwMUE0XHUwMUE2LVx1MDFBN1x1MDFBOVx1MDFBQ1x1MDFBRS1cdTAxQUZcdTAxQjEtXHUwMUIzXHUwMUI1XHUwMUI3LVx1MDFCOFx1MDFCQ1x1MDFDNC1cdTAxQ0RcdTAxQ0ZcdTAxRDFcdTAxRDNcdTAxRDVcdTAxRDdcdTAxRDlcdTAxREJcdTAxREVcdTAxRTBcdTAxRTJcdTAxRTRcdTAxRTZcdTAxRThcdTAxRUFcdTAxRUNcdTAxRUVcdTAxRjEtXHUwMUY0XHUwMUY2LVx1MDFGOFx1MDFGQVx1MDFGQ1x1MDFGRVx1MDIwMFx1MDIwMlx1MDIwNFx1MDIwNlx1MDIwOFx1MDIwQVx1MDIwQ1x1MDIwRVx1MDIxMFx1MDIxMlx1MDIxNFx1MDIxNlx1MDIxOFx1MDIxQVx1MDIxQ1x1MDIxRVx1MDIyMlx1MDIyNFx1MDIyNlx1MDIyOFx1MDIyQVx1MDIyQ1x1MDIyRVx1MDIzMFx1MDIzMlx1MDJCMC1cdTAyQjhcdTAyRDgtXHUwMkREXHUwMkUwLVx1MDJFNFx1MDM0MC1cdTAzNDFcdTAzNDMtXHUwMzQ1XHUwMzc0XHUwMzdBXHUwMzdFXHUwMzg0LVx1MDM4QVx1MDM4Q1x1MDM4RS1cdTAzOEZcdTAzOTEtXHUwM0ExXHUwM0EzLVx1MDNBQlx1MDNDMlx1MDNEMC1cdTAzRDZcdTAzREFcdTAzRENcdTAzREVcdTAzRTBcdTAzRTJcdTAzRTRcdTAzRTZcdTAzRThcdTAzRUFcdTAzRUNcdTAzRUVcdTAzRjAtXHUwM0YyXHUwM0Y0LVx1MDNGNVx1MDQwMC1cdTA0MkZcdTA0NjBcdTA0NjJcdTA0NjRcdTA0NjZcdTA0NjhcdTA0NkFcdTA0NkNcdTA0NkVcdTA0NzBcdTA0NzJcdTA0NzRcdTA0NzZcdTA0NzhcdTA0N0FcdTA0N0NcdTA0N0VcdTA0ODBcdTA0OENcdTA0OEVcdTA0OTBcdTA0OTJcdTA0OTRcdTA0OTZcdTA0OThcdTA0OUFcdTA0OUNcdTA0OUVcdTA0QTBcdTA0QTJcdTA0QTRcdTA0QTZcdTA0QThcdTA0QUFcdTA0QUNcdTA0QUVcdTA0QjBcdTA0QjJcdTA0QjRcdTA0QjZcdTA0QjhcdTA0QkFcdTA0QkNcdTA0QkVcdTA0QzFcdTA0QzNcdTA0QzdcdTA0Q0JcdTA0RDBcdTA0RDJcdTA0RDRcdTA0RDZcdTA0RDhcdTA0REFcdTA0RENcdTA0REVcdTA0RTBcdTA0RTJcdTA0RTRcdTA0RTZcdTA0RThcdTA0RUFcdTA0RUNcdTA0RUVcdTA0RjBcdTA0RjJcdTA0RjRcdTA0RjhcdTA1MzEtXHUwNTU2XHUwNTg3XHUwNjc1LVx1MDY3OFx1MDk1OC1cdTA5NUZcdTA5REMtXHUwOUREXHUwOURGXHUwOUY4XHUwQTMzXHUwQTM2XHUwQTU5LVx1MEE1Qlx1MEE1RVx1MEI1Qy1cdTBCNURcdTBFMzNcdTBFQjNcdTBFREMtXHUwRUREXHUwRjBDXHUwRjJBLVx1MEYzM1x1MEY0M1x1MEY0RFx1MEY1Mlx1MEY1N1x1MEY1Q1x1MEY2OVx1MEY3M1x1MEY3NS1cdTBGNzlcdTBGODFcdTBGOTNcdTBGOURcdTBGQTJcdTBGQTdcdTBGQUNcdTBGQjlcdTEzN0NcdTFFMDBcdTFFMDJcdTFFMDRcdTFFMDZcdTFFMDhcdTFFMEFcdTFFMENcdTFFMEVcdTFFMTBcdTFFMTJcdTFFMTRcdTFFMTZcdTFFMThcdTFFMUFcdTFFMUNcdTFFMUVcdTFFMjBcdTFFMjJcdTFFMjRcdTFFMjZcdTFFMjhcdTFFMkFcdTFFMkNcdTFFMkVcdTFFMzBcdTFFMzJcdTFFMzRcdTFFMzZcdTFFMzhcdTFFM0FcdTFFM0NcdTFFM0VcdTFFNDBcdTFFNDJcdTFFNDRcdTFFNDZcdTFFNDhcdTFFNEFcdTFFNENcdTFFNEVcdTFFNTBcdTFFNTJcdTFFNTRcdTFFNTZcdTFFNThcdTFFNUFcdTFFNUNcdTFFNUVcdTFFNjBcdTFFNjJcdTFFNjRcdTFFNjZcdTFFNjhcdTFFNkFcdTFFNkNcdTFFNkVcdTFFNzBcdTFFNzJcdTFFNzRcdTFFNzZcdTFFNzhcdTFFN0FcdTFFN0NcdTFFN0VcdTFFODBcdTFFODJcdTFFODRcdTFFODZcdTFFODhcdTFFOEFcdTFFOENcdTFFOEVcdTFFOTBcdTFFOTJcdTFFOTRcdTFFOUEtXHUxRTlCXHUxRUEwXHUxRUEyXHUxRUE0XHUxRUE2XHUxRUE4XHUxRUFBXHUxRUFDXHUxRUFFXHUxRUIwXHUxRUIyXHUxRUI0XHUxRUI2XHUxRUI4XHUxRUJBXHUxRUJDXHUxRUJFXHUxRUMwXHUxRUMyXHUxRUM0XHUxRUM2XHUxRUM4XHUxRUNBXHUxRUNDXHUxRUNFXHUxRUQwXHUxRUQyXHUxRUQ0XHUxRUQ2XHUxRUQ4XHUxRURBXHUxRURDXHUxRURFXHUxRUUwXHUxRUUyXHUxRUU0XHUxRUU2XHUxRUU4XHUxRUVBXHUxRUVDXHUxRUVFXHUxRUYwXHUxRUYyXHUxRUY0XHUxRUY2XHUxRUY4XHUxRjA4LVx1MUYwRlx1MUYxOC1cdTFGMURcdTFGMjgtXHUxRjJGXHUxRjM4LVx1MUYzRlx1MUY0OC1cdTFGNERcdTFGNTlcdTFGNUJcdTFGNURcdTFGNUZcdTFGNjgtXHUxRjZGXHUxRjcxXHUxRjczXHUxRjc1XHUxRjc3XHUxRjc5XHUxRjdCXHUxRjdEXHUxRjg4LVx1MUY4Rlx1MUY5OC1cdTFGOUZcdTFGQTgtXHUxRkFGXHUxRkI4LVx1MUZDMVx1MUZDOC1cdTFGQ0ZcdTFGRDNcdTFGRDgtXHUxRkRCXHUxRkRELVx1MUZERlx1MUZFM1x1MUZFOC1cdTFGRUZcdTFGRjgtXHUxRkZFXHUyMDAwLVx1MjAwQVx1MjAxMVx1MjAxN1x1MjAyNC1cdTIwMjZcdTIwMkZcdTIwMzMtXHUyMDM0XHUyMDM2LVx1MjAzN1x1MjAzQ1x1MjAzRVx1MjA0OC1cdTIwNDlcdTIwNzBcdTIwNzQtXHUyMDhFXHUyMEE4XHUyMTAwLVx1MjEwM1x1MjEwNS1cdTIxMDdcdTIxMDktXHUyMTEzXHUyMTE1LVx1MjExNlx1MjExOS1cdTIxMURcdTIxMjAtXHUyMTIyXHUyMTI0XHUyMTI2XHUyMTI4XHUyMTJBLVx1MjEyRFx1MjEyRi1cdTIxMzFcdTIxMzMtXHUyMTM5XHUyMTUzLVx1MjE3Rlx1MjE4MS1cdTIxODNcdTIyMkMtXHUyMjJEXHUyMjJGLVx1MjIzMFx1MjMyOS1cdTIzMkFcdTI0NjAtXHUyNEVBXHUyNzc2LVx1Mjc3RVx1Mjc4MC1cdTI3ODhcdTI3OEEtXHUyNzkyXHUyRTlGXHUyRUYzXHUyRjAwLVx1MkZENVx1MzAwMFx1MzAzNlx1MzAzOC1cdTMwM0FcdTMwOUItXHUzMDlDXHUzMTMxLVx1MzE4RVx1MzE5Mi1cdTMxOUZcdTMyMDAtXHUzMjFDXHUzMjIwLVx1MzI0M1x1MzI2MC1cdTMyN0JcdTMyODAtXHUzMkIwXHUzMkMwLVx1MzJDQlx1MzJEMC1cdTMyRkVcdTMzMDAtXHUzMzc2XHUzMzdCLVx1MzNERFx1MzNFMC1cdTMzRkVcdUY5MDAtXHVGQTBEXHVGQTEwXHVGQTEyXHVGQTE1LVx1RkExRVx1RkEyMFx1RkEyMlx1RkEyNS1cdUZBMjZcdUZBMkEtXHVGQTJEXHVGQjAwLVx1RkIwNlx1RkIxMy1cdUZCMTdcdUZCMUYtXHVGQjM2XHVGQjM4LVx1RkIzQ1x1RkIzRVx1RkI0MC1cdUZCNDFcdUZCNDMtXHVGQjQ0XHVGQjQ2LVx1RkJCMVx1RkJEMy1cdUZEM0RcdUZENTAtXHVGRDhGXHVGRDkyLVx1RkRDN1x1RkRGMC1cdUZERkJcdUZFMzAtXHVGRTQ0XHVGRTQ5LVx1RkU1Mlx1RkU1NC1cdUZFNjZcdUZFNjgtXHVGRTZCXHVGRTcwLVx1RkU3Mlx1RkU3NFx1RkU3Ni1cdUZFRkNcdUZGMDEtXHVGRjVFXHVGRjYxLVx1RkZCRVx1RkZDMi1cdUZGQzdcdUZGQ0EtXHVGRkNGXHVGRkQyLVx1RkZEN1x1RkZEQS1cdUZGRENcdUZGRTAtXHVGRkU2XHVGRkU4LVx1RkZFRVxcVTAwMDEwMzRBXFxVMDAwMTA0MDAtXFxVMDAwMTA0MjVcXFUwMDAxRDE2NS1cXFUwMDAxRDE2NlxcVTAwMDFEMTZELVxcVTAwMDFEMTcyXSIpLAorICAgICAgICB9LAorICAgIH07CisgICAgKi8KKworICAgIAorICAgIHN0YXRpYyBVbmljb2RlU2V0IGdlbmVyYXRlZFNldDsKKyAgICAKKyAgICAvLyBUaGVzZSBzaG91bGQgYm90aCBiZSBwdWJsaWMsIGFuZCBvbiB0aGUgcmVzcGVjdGl2ZSBjbGFzc2VzCisgICAgCisgICAgcHVibGljIHN0YXRpYyB2b2lkIGFkZEFsbChVbmljb2RlU2V0IHMsIFN0cmluZyBzdHIpIHsKKyAgICAgICAgaW50IGNwOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHN0ci5sZW5ndGgoKTsgaSArPSBVVEYxNi5nZXRDaGFyQ291bnQoY3ApKSB7CisgICAgICAgICAgICBjcCA9IFVURjE2LmNoYXJBdChzdHIsaSk7CisgICAgICAgICAgICBzLmFkZChjcCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGNvbnRhaW5zU29tZShVbmljb2RlU2V0IHMsIFN0cmluZyBzdHIpIHsKKyAgICAgICAgaW50IGNwOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHN0ci5sZW5ndGgoKTsgaSArPSBVVEYxNi5nZXRDaGFyQ291bnQoY3ApKSB7CisgICAgICAgICAgICBjcCA9IFVURjE2LmNoYXJBdChzdHIsaSk7CisgICAgICAgICAgICBpZiAocy5jb250YWlucyhjcCkpIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL3RyYW5zbGl0L1dyaXRlSW5kaWNDaGFydHMuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC90cmFuc2xpdC9Xcml0ZUluZGljQ2hhcnRzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA0OWQ1ZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC90cmFuc2xpdC9Xcml0ZUluZGljQ2hhcnRzLmphdmEKQEAgLTAsMCArMSwzNjMgQEAKKy8qKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmlnaHQgKEMpIDIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogJFNvdXJjZTogICQgCisqICREYXRlOiAgJCAKKyogJFJldmlzaW9uOiAgJAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRvb2wudHJhbnNsaXQ7CisKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0Lio7CitpbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKK2ltcG9ydCBqYXZhLmlvLio7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC4qOworaW1wb3J0IGNvbS5pYm0uaWN1LmxhbmcuKjsKKy8qKgorICogQGF1dGhvciByYW0KKyAqCisgKiBUbyBjaGFuZ2UgdGhpcyBnZW5lcmF0ZWQgY29tbWVudCBlZGl0IHRoZSB0ZW1wbGF0ZSB2YXJpYWJsZSAidHlwZWNvbW1lbnQiOgorICogV2luZG93PlByZWZlcmVuY2VzPkphdmE+VGVtcGxhdGVzLgorICogVG8gZW5hYmxlIGFuZCBkaXNhYmxlIHRoZSBjcmVhdGlvbiBvZiB0eXBlIGNvbW1lbnRzIGdvIHRvCisgKiBXaW5kb3c+UHJlZmVyZW5jZXM+SmF2YT5Db2RlIEdlbmVyYXRpb24uN0YKKyAqLworcHVibGljIGNsYXNzIFdyaXRlSW5kaWNDaGFydHMgeworICAgIAorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpeworICAgICAgICB3cml0ZUlJQ2hhcnRzKCk7CisgICAgfQorICAgCisgICAgCisJc3RhdGljIFN0cmluZyBoZWFkZXIgPSAgIjxodG1sPlxuIiArCisJCQkgICAgICAgICAgICAgICAgIiAgICA8aGVhZD48bWV0YSBodHRwLWVxdWl2PVwiQ29udGVudC1UeXBlXCIgY29udGVudD1cInRleHQvaHRtbDsgY2hhcnNldD11dGYtOFwiPiIrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgSW50ZXItSW5kaWMgVHJhbnNsaXRlcmF0aW9uIENvbXBhcmlzb24gY2hhcnQiKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgPC9oZWFkPlxuIisKKwkJCSAgICAgICAgICAgICAgICAiICAgIDxib2R5IGJnY29sb3I9I0ZGRkZGRj5cbiIrCisJCQkgICAgICAgICAgICAgICAgIiAgICAgICAgIDx0YWJsZSBib3JkZXI9MSB3aWR0aD0xMDAlID5cbiIrCisJCQkgICAgICAgICAgICAgICAgIiAgICAgICAgICAgIDx0cj5cbiIrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgIDx0aCB3aWR0aD05JT5JbnRlci1JbmRpYzwvdGg+XG4iKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICA8dGggd2lkdGg9OSU+TGF0aW48L3RoPlxuIisKKwkJCSAgICAgICAgICAgICAgICAiICAgICAgICAgICAgPHRoIHdpZHRoPTklPkRldmFuYWdhcmk8L3RoPlxuIisKKwkJCSAgICAgICAgICAgICAgICAiICAgICAgICAgICAgPHRoIHdpZHRoPTklPkJlbmdhbGk8L3RoPlxuIisKKwkJCSAgICAgICAgICAgICAgICAiICAgICAgICAgICAgPHRoIHdpZHRoPTklPkd1cm11a2hpPC90aD5cbiIrCisJCQkgICAgICAgICAgICAgICAgIiAgICAgICAgICAgIDx0aCB3aWR0aD05JT5HdWphcmF0aTwvdGg+XG4iKworCQkJICAgICAgICAgICAgICAgICIgICAgICAgICAgICA8dGggd2lkdGg9OSU+T3JpeWE8L3RoPlxuIisKKwkJCSAgICAgICAgICAgICAgICAiICAgICAgICAgICAgPHRoIHdpZHRoPTklPlRhbWlsPC90aD5cbiIrCisJCQkgICAgICAgICAgICAgICAgIiAgICAgICAgICAgIDx0aCB3aWR0aD05JT5UZWx1Z3U8L3RoPlxuIisKKwkJCSAgICAgICAgICAgICAgICAiICAgICAgICAgICAgPHRoIHdpZHRoPTklPkthbm5hZGE8L3RoPlxuIisKKwkJCSAgICAgICAgICAgICAgICAiICAgICAgICAgICAgPHRoIHdpZHRoPTklPk1hbGF5YWxhbTwvdGg+XG4iKworCQkJICAgICAgICAgICAgICAgICIgICAgICAgICAgICA8L3RyPlxuIjsKKyAgICBzdGF0aWMgU3RyaW5nIGZvb3RlciA9ICAiICAgICAgICAgIDwvdGFibGU+XG4iKworCQkgICAgICAgICAgICAgICAgICAgICIgICAgPC9ib2R5PlxuIiArCisJCSAgICAgICAgICAgICAgICAgICAgIjwvaHRtbD5cbiI7CisgICAgICAgICAgICAgICAgICAgCisgICAgc3RhdGljIFVuaWNvZGVTZXQgZGV2YSA9IG5ldyBVbmljb2RlU2V0KCJbOmRldmE6XSIpOyAKKyAgICBzdGF0aWMgVW5pY29kZVNldCBiZW5nID0gbmV3IFVuaWNvZGVTZXQoIls6YmVuZzpdIik7CisgICAgc3RhdGljIFVuaWNvZGVTZXQgZ3VqciA9IG5ldyBVbmljb2RlU2V0KCJbOmd1anI6XSIpOworICAgIHN0YXRpYyBVbmljb2RlU2V0IGd1cnUgPSBuZXcgVW5pY29kZVNldCgiWzpndXJ1Ol0iKTsKKyAgICBzdGF0aWMgVW5pY29kZVNldCBvcnlhID0gbmV3IFVuaWNvZGVTZXQoIls6b3J5YTpdIik7CisgICAgc3RhdGljIFVuaWNvZGVTZXQgdGFtbCA9IG5ldyBVbmljb2RlU2V0KCJbOnRhbWw6XSIpOworICAgIHN0YXRpYyBVbmljb2RlU2V0IHRlbHUgPSBuZXcgVW5pY29kZVNldCgiWzp0ZWx1Ol0iKTsKKyAgICBzdGF0aWMgVW5pY29kZVNldCBrbmRhID0gbmV3IFVuaWNvZGVTZXQoIls6a25kYTpdIik7IAorICAgIHN0YXRpYyBVbmljb2RlU2V0IG1seW0gPSBuZXcgVW5pY29kZVNldCgiWzptbHltOl0iKTsgICAgICAgICAgICAgICAgICAgICAgCisgICAgc3RhdGljIFVuaWNvZGVTZXQgaW50ZXI9IG5ldyBVbmljb2RlU2V0KCJbXHVFMDAwLVx1RTA4MF0iKTsKKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgd3JpdGVJSUNoYXJ0cygpeworICAgICAgICB0cnl7CisgICAgICAgICAgICBUcmFuc2xpdGVyYXRvciB0MSA9IFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKCJJbnRlckluZGljLUJlbmdhbGkiKTsgICAgCisgICAgICAgICAgICBUcmFuc2xpdGVyYXRvciB0MiA9IFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKCJJbnRlckluZGljLUd1cm11a2hpIik7CisgICAgICAgICAgICBUcmFuc2xpdGVyYXRvciB0MyA9IFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKCJJbnRlckluZGljLUd1amFyYXRpIik7CisgICAgICAgICAgICBUcmFuc2xpdGVyYXRvciB0NCA9IFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKCJJbnRlckluZGljLU9yaXlhIik7CisgICAgICAgICAgICBUcmFuc2xpdGVyYXRvciB0NSA9IFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKCJJbnRlckluZGljLVRhbWlsIik7CisgICAgICAgICAgICBUcmFuc2xpdGVyYXRvciB0NiA9IFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKCJJbnRlckluZGljLVRlbHVndSIpOworICAgICAgICAgICAgVHJhbnNsaXRlcmF0b3IgdDcgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgiSW50ZXJJbmRpYy1LYW5uYWRhIik7CisgICAgICAgICAgICBUcmFuc2xpdGVyYXRvciB0OCA9IFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKCJJbnRlckluZGljLU1hbGF5YWxhbSIpOworICAgICAgICAgICAgVHJhbnNsaXRlcmF0b3IgdDkgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgiSW50ZXJJbmRpYy1EZXZhbmFnYXJpIik7CisgICAgICAgICAgICBUcmFuc2xpdGVyYXRvciB0MTAgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgiSW50ZXJJbmRpYy1MYXRpbiIpOworICAgICAgICAgICAgVW5pY29kZVNldEl0ZXJhdG9yIHNJdGVyID0gbmV3IFVuaWNvZGVTZXRJdGVyYXRvcihkZXZhKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yKGludCBpPTB4MDA7aTw9MHg4MDtpKyspeworICAgICAgICAgICAgICAgU3RyaW5nW10gYXJyID0gIG5ldyBTdHJpbmdbMTBdOworICAgICAgICAgICAgICAgYXJyWzBdPVVURjE2LnZhbHVlT2YoaSsgMHhFMDAwKTsKKyAgICAgICAgICAgICAgIHRhYmxlLnB1dChVVEYxNi52YWx1ZU9mKGkpLGFycik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE91dHB1dFN0cmVhbVdyaXRlciBvcyA9IG5ldyBPdXRwdXRTdHJlYW1Xcml0ZXIobmV3IEZpbGVPdXRwdXRTdHJlYW0oImNvbXBhcmlzb24tY2hhcnQuaHRtbCIpLCJVVEYtOCIpOworICAgICAgICAgICAgCisgICAgICAgICAgICBvcy53cml0ZShoZWFkZXIpOworCisgICAgICAgICAgICB3cml0ZUlJQ2hhcnRzKHQ5LDB4MDkwMCwxKTsKKyAgICAgICAgICAgIHdyaXRlSUlDaGFydHModDEsMHgwOTgwLDIpOyAgICAgICAgCisgICAgICAgICAgICB3cml0ZUlJQ2hhcnRzKHQyLDB4MEEwMCwzKTsgCisgICAgICAgICAgICB3cml0ZUlJQ2hhcnRzKHQzLDB4MEE4MCw0KTsgCisgICAgICAgICAgICB3cml0ZUlJQ2hhcnRzKHQ0LDB4MEIwMCw1KTsgCisgICAgICAgICAgICB3cml0ZUlJQ2hhcnRzKHQ1LDB4MEI4MCw2KTsgCisgICAgICAgICAgICB3cml0ZUlJQ2hhcnRzKHQ2LDB4MGMwMCw3KTsgCisgICAgICAgICAgICB3cml0ZUlJQ2hhcnRzKHQ3LDB4MEM4MCw4KTsgCisgICAgICAgICAgICB3cml0ZUlJQ2hhcnRzKHQ4LDB4MEQwMCw5KTsgCisKKyAgICAgICAgICAgIGZvcihpbnQgaT0weDAwO2k8PTB4ODA7aSsrKXsKKyAgICAgICAgICAgICAgICBTdHJpbmdbXSB0ZW1wID0gKFN0cmluZ1tdKXRhYmxlLmdldChVVEYxNi52YWx1ZU9mKGkpKTsKKyAgICAgICAgICAgICAgICBib29sZWFuIHdyaXRlID0gZmFsc2U7CisgICAgICAgICAgICAgICAgZm9yKGludCBrPTE7azx0ZW1wLmxlbmd0aCAmJiB0ZW1wW2tdIT1udWxsO2srKyl7CisgICAgICAgICAgICAgICAgICAgIGlmKFVDaGFyYWN0ZXIuZ2V0RXh0ZW5kZWROYW1lKFVURjE2LmNoYXJBdCh0ZW1wW2tdLDApKS5pbmRleE9mKCJ1bmFzc2lnbmVkIik8MCB8fAorICAgICAgICAgICAgICAgICAgICAgICB0ZW1wW2tdLmluZGV4T2YoIjpVTkFTU0lHTkVEIik8MCl7CisgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYod3JpdGUpeworICAgICAgICAgICAgICAgICAgICBvcy53cml0ZSgiICAgICAgICA8dHI+XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yKGludCBqPTA7IGo8dGVtcC5sZW5ndGg7aisrKXsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRlbXBbal0hPW51bGwpeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gZmFsbGJhY2s9ZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiB1bmFzc2lnbmVkPWZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gdW5tYXBwZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGNvbnN1bWVkID1mYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgc3RyID0gdGVtcFtqXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodGVtcFtqXS5pbmRleE9mKCI6RkFMTEJBQ0siKT49MCl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciA9IHRlbXBbal0uc3Vic3RyaW5nKDAsdGVtcFtqXS5pbmRleE9mKCI6IikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFjaz10cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9zLndyaXRlKCIgICAgICAgICAgICA8dGQgYmdjb2xvcj0jRkZGRjAwIGFsaWduPWNlbnRlciB0aXRsZT1cIiIrKyJcIj4iK3N0cisiPGJyPjx0dD4iK1V0aWxpdHkuaGV4KHN0cikrIjwvdHQ+IisiPC90ZD5cbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih0ZW1wW2pdLmluZGV4T2YoIjpVTkFTU0lHTkVEIik+PTApeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgPSB0ZW1wW2pdLnN1YnN0cmluZygwLHRlbXBbal0uaW5kZXhPZigiOiIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5hc3NpZ25lZD10cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih0ZW1wW2pdLmluZGV4T2YoIjpVTk1BUFBFRCIpPj0wKXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyID0gdGVtcFtqXS5zdWJzdHJpbmcoMCx0ZW1wW2pdLmluZGV4T2YoIjoiKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVubWFwcGVkPXRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRlbXBbal0uaW5kZXhPZigiOkNPTlNVTUVEIik+PTApeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgPSB0ZW1wW2pdLnN1YnN0cmluZygwLHRlbXBbal0uaW5kZXhPZigiOiIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3VtZWQ9dHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIG5hbWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nQnVmZmVyIG5hbWVCdWY9bmV3IFN0cmluZ0J1ZmZlcigpOyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IoaW50IGY9MDsgZjxzdHIubGVuZ3RoKCk7ZisrKXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoZj4wKXsgbmFtZUJ1Zi5hcHBlbmQoIisiKTt9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVCdWYuYXBwZW5kKFVDaGFyYWN0ZXIuZ2V0RXh0ZW5kZWROYW1lKFVURjE2LmNoYXJBdChzdHIsZikpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IG5hbWVCdWYudG9TdHJpbmcoKTsgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihmYWxsYmFjayl7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoVUNoYXJhY3Rlci5nZXRFeHRlbmRlZE5hbWUoVVRGMTYuY2hhckF0KHN0ciwwKSkuaW5kZXhPZigidW5hc3NpZ25lZCIpPjApeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Mud3JpdGUoIiAgICAgICAgICAgIDx0ZCAgd2lkdGg9OSUgYmdjb2xvcj0jQkJCQkZGIGFsaWduPWNlbnRlciB0aXRsZT1cIiIrbmFtZSsiXCI+IisiJm5ic3A8YnI+PHR0PiIrVXRpbGl0eS5oZXgoc3RyKSsiPC90dD4iKyI8L3RkPlxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNleworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Mud3JpdGUoIiAgICAgICAgICAgIDx0ZCB3aWR0aD05JSBiZ2NvbG9yPSNCQkJCRkYgYWxpZ249Y2VudGVyIHRpdGxlPVwiIituYW1lKyJcIj4iKyBzdHIrIjxicj48dHQ+IitVdGlsaXR5LmhleChzdHIpKyI8L3R0PiIrIjwvdGQ+XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlIGlmKHVubWFwcGVkKXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Mud3JpdGUoIiAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSNGRjk5OTkgYWxpZ249Y2VudGVyIHRpdGxlPVwiIituYW1lKyJcIj4iKyImbmJzcDxicj48dHQ+IitVdGlsaXR5LmhleChzdHIpKyI8L3R0PiIrIjwvdGQ+XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZSBpZih1bmFzc2lnbmVkKXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoVUNoYXJhY3Rlci5nZXRFeHRlbmRlZE5hbWUoVVRGMTYuY2hhckF0KHN0ciwwKSkuaW5kZXhPZigidW5hc3NpZ25lZCIpPjApeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Mud3JpdGUoIiAgICAgICAgICAgIDx0ZCB3aWR0aD05JSBiZ2NvbG9yPSMwMEZGRkYgYWxpZ249Y2VudGVyIHRpdGxlPVwiIituYW1lKyJcIj4iKyImbmJzcDxicj48dHQ+IitVdGlsaXR5LmhleChzdHIpKyI8L3R0PiIrIjwvdGQ+XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy53cml0ZSgiICAgICAgICAgICAgPHRkIHdpZHRoPTklIGJnY29sb3I9IzAwRkZGRiBhbGlnbj1jZW50ZXIgdGl0bGU9XCIiK25hbWUrIlwiPiIrIHN0cisiPGJyPjx0dD4iK1V0aWxpdHkuaGV4KHN0cikrIjwvdHQ+IisiPC90ZD5cbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2UgaWYoY29uc3VtZWQpeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoVUNoYXJhY3Rlci5nZXRFeHRlbmRlZE5hbWUoVVRGMTYuY2hhckF0KHN0ciwwKSkuaW5kZXhPZigidW5hc3NpZ25lZCIpPjApeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Mud3JpdGUoIiAgICAgICAgICAgIDx0ZCB3aWR0aD05JSBiZ2NvbG9yPSNGRkZGNTUgYWxpZ249Y2VudGVyIHRpdGxlPVwiIituYW1lKyJcIj4iKyImbmJzcDxicj48dHQ+IitVdGlsaXR5LmhleChzdHIpKyI8L3R0PiIrIjwvdGQ+XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy53cml0ZSgiICAgICAgICAgICAgPHRkIHdpZHRoPTklIGJnY29sb3I9I0ZGRkY1NSBhbGlnbj1jZW50ZXIgdGl0bGU9XCIiKyIiKyJcIj4iKyImbmJzcDxicj48dHQ+IitVdGlsaXR5LmhleChzdHIpKyI8L3R0PiIrIjwvdGQ+XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlIGlmKG5hbWUuaW5kZXhPZigicHJpdmF0ZSIpIT0tMSl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBzID0gdDEwLnRyYW5zbGl0ZXJhdGUoc3RyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Mud3JpdGUoIiAgICAgICAgICAgIDx0ZCB3aWR0aD05JSBiZ2NvbG9yPSNGRkJCQkIgIGFsaWduPWNlbnRlciB0aXRsZT1cIiIrbmFtZSsiXCI+IisiJm5ic3A8YnI+PHR0PiIrVXRpbGl0eS5oZXgoc3RyKSsiPC90dD4iKyI8L3RkPlxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCFzLmVxdWFscyhzdHIpKXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLndyaXRlKCIgICAgICAgICAgICA8dGQgd2lkdGg9OSUgIGJnY29sb3I9I0NDRUVERCBhbGlnbj1jZW50ZXI+IitzICsiPC90ZD4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy53cml0ZSgiICAgICAgICAgICAgPHRkIHdpZHRoPTklIGJnY29sb3I9I0NDRUVERCBhbGlnbj1jZW50ZXI+Jm5ic3A7PC90ZD4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNleworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLndyaXRlKCIgICAgICAgICAgICA8dGQgd2lkdGg9OSUgYWxpZ249Y2VudGVyIHRpdGxlPVwiIituYW1lKyJcIj4iKyBzdHIrIjxicj48dHQ+IitVdGlsaXR5LmhleChzdHIpKyI8L3R0PiIrIjwvdGQ+XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IAorICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLndyaXRlKCIgICAgICAgICAgIDx0ZCB3aWR0aD05JSA+Jm5ic3A8L3RkPlxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgb3Mud3JpdGUoIiAgICAgICAgPC90cj5cbiIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG9zLndyaXRlKGZvb3Rlcik7CisgICAgICAgICAgICBvcy5jbG9zZSgpOworICAgICAgICB9Y2F0Y2goIEV4Y2VwdGlvbiBlKXsKKyAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgcHVibGljIHN0YXRpYyB2b2lkIHdyaXRlQ2hhcnRzKCl7CisgICAgICAgIHRyeXsKKwkgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQxID0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoIkludGVySW5kaWMtQmVuZ2FsaSIpOyAgICAKKwkgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQyID0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoIkludGVySW5kaWMtR3VybXVraGkiKTsKKwkgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQzID0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoIkludGVySW5kaWMtR3VqYXJhdGkiKTsKKwkgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQ0ID0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoIkludGVySW5kaWMtT3JpeWEiKTsKKwkgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQ1ID0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoIkludGVySW5kaWMtVGFtaWwiKTsKKwkgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQ2ID0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoIkludGVySW5kaWMtVGVsdWd1Iik7CisJICAgICAgICBUcmFuc2xpdGVyYXRvciB0NyA9IFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKCJJbnRlckluZGljLUthbm5hZGEiKTsKKwkgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQ4ID0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoIkludGVySW5kaWMtTWFsYXlhbGFtIik7CisJICAgICAgICBUcmFuc2xpdGVyYXRvciB0OSA9IFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKCJJbnRlckluZGljLURldmFuYWdhcmkiKTsKKyAgICAgICAgICAgIAorCSAgICAgICAgVW5pY29kZVNldEl0ZXJhdG9yIHNJdGVyID0gbmV3IFVuaWNvZGVTZXRJdGVyYXRvcihkZXZhKTsKKwkgICAgICAgIAorCSAgICAgICAgZm9yKGludCBpPTB4MDkwMDtpPD0weDA5N0Y7aSsrKXsKKwkgICAgICAgICAgIFN0cmluZ1tdIGFyciA9ICBuZXcgU3RyaW5nWzEwXTsKKwkgICAgICAgICAgIGFyclswXT1VVEYxNi52YWx1ZU9mKChpJjB4RkYpICsgMHhFMDAwKTsKKwkgICAgICAgICAgIHRhYmxlLnB1dChVVEYxNi52YWx1ZU9mKGkpLGFycik7CisJICAgICAgICB9CisgICAgICAgICAgICAKKwkgICAgICAgIE91dHB1dFN0cmVhbVdyaXRlciBvcyA9IG5ldyBPdXRwdXRTdHJlYW1Xcml0ZXIobmV3IEZpbGVPdXRwdXRTdHJlYW0oImNvbXBhcmlzb24tY2hhcnQuaHRtbCIpLCJVVEYtOCIpOworICAgICAgICAgICAgCisgICAgICAgICAgICBvcy53cml0ZShoZWFkZXIpOworCSAgICAgICAgLyoKKwkgICAgICAgIHdyaXRlQ2hhcnRzKHQxLGJlbmcsMSk7ICAgICAgICAKKwkgICAgICAgIHdyaXRlQ2hhcnRzKHQyLGd1cnUsMik7IAorCSAgICAgICAgd3JpdGVDaGFydHModDMsZ3VqciwzKTsgCisJICAgICAgICB3cml0ZUNoYXJ0cyh0NCxvcnlhLDQpOyAKKwkgICAgICAgIHdyaXRlQ2hhcnRzKHQ1LHRhbWwsNSk7IAorCSAgICAgICAgd3JpdGVDaGFydHModDYsdGVsdSw2KTsgCisJICAgICAgICB3cml0ZUNoYXJ0cyh0NyxrbmRhLDcpOyAKKwkgICAgICAgIHdyaXRlQ2hhcnRzKHQ4LG1seW0sOCk7IAorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICB3cml0ZUNoYXJ0cyh0OSwweDA5MDAsMSk7CisgICAgICAgICAgICB3cml0ZUNoYXJ0cyh0MSwweDA5ODAsMik7ICAgICAgICAKKyAgICAgICAgICAgIHdyaXRlQ2hhcnRzKHQyLDB4MEEwMCwzKTsgCisgICAgICAgICAgICB3cml0ZUNoYXJ0cyh0MywweDBBODAsNCk7IAorICAgICAgICAgICAgd3JpdGVDaGFydHModDQsMHgwQjAwLDUpOyAKKyAgICAgICAgICAgIHdyaXRlQ2hhcnRzKHQ1LDB4MEI4MCw2KTsgCisgICAgICAgICAgICB3cml0ZUNoYXJ0cyh0NiwweDBjMDAsNyk7IAorICAgICAgICAgICAgd3JpdGVDaGFydHModDcsMHgwQzgwLDgpOyAKKyAgICAgICAgICAgIHdyaXRlQ2hhcnRzKHQ4LDB4MEQwMCw5KTsgCisgICAgICAgICAgICAqLworICAgICAgICAgICAgd3JpdGVJSUNoYXJ0cyh0OSwweDA5MDAsMSk7CisgICAgICAgICAgICB3cml0ZUlJQ2hhcnRzKHQxLDB4MDk4MCwyKTsgICAgICAgIAorICAgICAgICAgICAgd3JpdGVJSUNoYXJ0cyh0MiwweDBBMDAsMyk7IAorICAgICAgICAgICAgd3JpdGVJSUNoYXJ0cyh0MywweDBBODAsNCk7IAorICAgICAgICAgICAgd3JpdGVJSUNoYXJ0cyh0NCwweDBCMDAsNSk7IAorICAgICAgICAgICAgd3JpdGVJSUNoYXJ0cyh0NSwweDBCODAsNik7IAorICAgICAgICAgICAgd3JpdGVJSUNoYXJ0cyh0NiwweDBjMDAsNyk7IAorICAgICAgICAgICAgd3JpdGVJSUNoYXJ0cyh0NywweDBDODAsOCk7IAorICAgICAgICAgICAgd3JpdGVJSUNoYXJ0cyh0OCwweDBEMDAsOSk7IAorCSAgICAgICAgZm9yKGludCBpPTB4MDkwMDtpPD0weDA5N0Y7aSsrKXsKKwkgICAgICAgICAgICBTdHJpbmdbXSB0ZW1wID0gKFN0cmluZ1tdKXRhYmxlLmdldChVVEYxNi52YWx1ZU9mKGkpKTsKKyAgICAgICAgICAgICAgICBib29sZWFuIHdyaXRlID0gZmFsc2U7CisgICAgICAgICAgICAgICAgZm9yKGludCBrPTE7azx0ZW1wLmxlbmd0aDtrKyspeworICAgICAgICAgICAgICAgICAgICBpZihVQ2hhcmFjdGVyLmdldEV4dGVuZGVkTmFtZShVVEYxNi5jaGFyQXQodGVtcFtrXSwwKSkuaW5kZXhPZigidW5hc3NpZ25lZCIpPDApeworICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmKHdyaXRlKXsKKwkJICAgICAgICAgICAgb3Mud3JpdGUoIiAgICAgICAgPHRyPlxuIik7CisJCSAgICAgICAgICAgIGZvcihpbnQgaj0wOyBqPHRlbXAubGVuZ3RoO2orKyl7CisJCSAgICAgICAgICAgICAgICBpZih0ZW1wW2pdIT1udWxsKXsKKwkgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGZhbGxiYWNrPWZhbHNlOworCSAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBzdHIgPSB0ZW1wW2pdOworCSAgICAgICAgICAgICAgICAgICAgICAgIAorCQkJICAgICAgICAgICAgICAgIGlmKHRlbXBbal0uaW5kZXhPZigiOkZBTExCQUNLIik+PTApeworCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgPSB0ZW1wW2pdLnN1YnN0cmluZygwLHRlbXBbal0uaW5kZXhPZigiOiIpKTsKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2s9dHJ1ZTsKKwkJCSAgICAgICAgICAgICAgICAgICAvLyBvcy53cml0ZSgiICAgICAgICAgICAgPHRkIGJnY29sb3I9I0ZGRkYwMCBhbGlnbj1jZW50ZXIgdGl0bGU9XCIiKysiXCI+IitzdHIrIjxicj48dHQ+IitVdGlsaXR5LmhleChzdHIpKyI8L3R0PiIrIjwvdGQ+XG4iKTsKKwkJCSAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIG5hbWUgPSBVQ2hhcmFjdGVyLmdldEV4dGVuZGVkTmFtZShVVEYxNi5jaGFyQXQoc3RyLDApKTsKKwkgICAgICAgICAgICAgICAgICAgICAgICBpZihmYWxsYmFjayl7CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLndyaXRlKCIgICAgICAgICAgICA8dGQgYmdjb2xvcj0jQkJCQkZGIGFsaWduPWNlbnRlciB0aXRsZT1cIiIrbmFtZSsiXCI+Iisgc3RyKyI8YnI+PHR0PiIrVXRpbGl0eS5oZXgoc3RyKSsiPC90dD4iKyI8L3RkPlxuIik7CisJICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2UgaWYobmFtZS5pbmRleE9mKCJ1bmFzc2lnbmVkIikhPS0xKXsKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Mud3JpdGUoIiAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSNDQ0NDQ0MgYWxpZ249Y2VudGVyIHRpdGxlPVwiIituYW1lKyJcIj4iKyImbmJzcDxicj48dHQ+IitVdGlsaXR5LmhleChzdHIpKyI8L3R0PiIrIjwvdGQ+XG4iKTsKKwkgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZSBpZihuYW1lLmluZGV4T2YoInByaXZhdGUiKSE9LTEpeworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy53cml0ZSgiICAgICAgICAgICAgPHRkIGJnY29sb3I9I0ZGQkJCQiBhbGlnbj1jZW50ZXIgdGl0bGU9XCIiK25hbWUrIlwiPiIrIiZuYnNwPGJyPjx0dD4iK1V0aWxpdHkuaGV4KHN0cikrIjwvdHQ+IisiPC90ZD5cbiIpOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Mud3JpdGUoIiAgICAgICAgICAgIDx0ZCBhbGlnbj1jZW50ZXIgdGl0bGU9XCIiK25hbWUrIlwiPiIrIHN0cisiPGJyPjx0dD4iK1V0aWxpdHkuaGV4KHN0cikrIjwvdHQ+IisiPC90ZD5cbiIpOworCSAgICAgICAgICAgICAgICAgICAgICAgIH0gCisJCSAgICAgICAgICAgICAgICB9ZWxzZXsKKwkJICAgICAgICAgICAgICAgICAgICAgb3Mud3JpdGUoIiAgICAgICAgICAgPHRkPiZuYnNwPC90ZD5cbiIpOworCQkgICAgICAgICAgICAgICAgfQorCQkgICAgICAgICAgICB9CisJCSAgICAgICAgICAgIG9zLndyaXRlKCIgICAgICAgIDwvdHI+XG4iKTsKKwkJICAgICAgICB9CisgICAgICAgICAgICB9CisJICAgICAgICBvcy53cml0ZShmb290ZXIpOworICAgICAgICAgICAgb3MuY2xvc2UoKTsKKyAgICAgICAgfWNhdGNoKCBFeGNlcHRpb24gZSl7CisgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworICAgICAgICB9CisgICAgfQorICAgIHN0YXRpYyBIYXNodGFibGUgdGFibGUgPSBuZXcgSGFzaHRhYmxlKCk7CisgICAgc3RhdGljIFN0cmluZyBnZXRLZXkoaW50IGNwKXsKKyAgICAgICAgaW50IGRlbHRhID0gY3AgJiAweEZGOworICAgICAgICBkZWx0YS09IChkZWx0YT4weDdmKT8gMHg4MCA6IDA7CisgICAgICAgIC8vZGVsdGErPTB4MDkwMDsKKyAgICAgICAgcmV0dXJuIFVURjE2LnZhbHVlT2YoZGVsdGEpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgd3JpdGVDaGFydHMoVHJhbnNsaXRlcmF0b3IgdHJhbnMsIGludCBzdGFydCwgaW50IGluZGV4KXsKKyAgICAgICAgCisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIGludmVyc2UgPSB0cmFucy5nZXRJbnZlcnNlKCk7CisgICAgICAgIGZvcihpbnQgaT0wO2k8PTB4N2Y7aSsrKXsKKyAgICAgICAgICAgIFN0cmluZyBjcCA9IFVURjE2LnZhbHVlT2Yoc3RhcnQraSk7CisgICAgICAgICAgICBTdHJpbmcgczEgPSBpbnZlcnNlLnRyYW5zbGl0ZXJhdGUoY3ApOworICAgICAgICAgICAgU3RyaW5nIHMyID0gdHJhbnMudHJhbnNsaXRlcmF0ZShzMSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFN0cmluZ1tdIGFyciA9IChTdHJpbmdbXSl0YWJsZS5nZXQoZ2V0S2V5KHN0YXJ0K2kpKTsKKyAgICAgICAgICAgIGlmKGNwLmVxdWFscyhzMikpeworICAgICAgICAgICAgICAgIGFycltpbmRleF0gPSBzMTsKKyAgICAgICAgICAgIH1lbHNleworICAgICAgICAgICAgICAgIGFycltpbmRleF0gPSBzMSArICI6RkFMTEJBQ0siOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCB3cml0ZUlJQ2hhcnRzKFRyYW5zbGl0ZXJhdG9yIHRyYW5zLGludCBzdGFydCwgaW50IGluZGV4KXsKKyAgICAgICAgCisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIGludmVyc2UgPSB0cmFucy5nZXRJbnZlcnNlKCk7CisgICAgICAgIFVuaWNvZGVTZXRJdGVyYXRvciBpdGVyID0gbmV3IFVuaWNvZGVTZXRJdGVyYXRvcihpbnRlcik7CisgICAgICAgIAorICAgICAgICB3aGlsZShpdGVyLm5leHQoKSl7CisgICAgICAgICAgICBTdHJpbmcgY3AgPVVURjE2LnZhbHVlT2YoaXRlci5jb2RlcG9pbnQpOworICAgICAgICAgICAgU3RyaW5nIHMxID0gdHJhbnMudHJhbnNsaXRlcmF0ZShjcCk7CisgICAgICAgICAgICBTdHJpbmcgczIgPSBpbnZlcnNlLnRyYW5zbGl0ZXJhdGUoczEpOworICAgICAgICAgICAgU3RyaW5nW10gYXJyID0gKFN0cmluZ1tdKXRhYmxlLmdldChVVEYxNi52YWx1ZU9mKGl0ZXIuY29kZXBvaW50JjB4RkYpKTsKKyAgICAgICAgICAgIGlmKGNwLmVxdWFscyhzMSkpeworICAgICAgICAgICAgICAgIGFycltpbmRleF0gPSBVVEYxNi52YWx1ZU9mKHN0YXJ0KygoKGJ5dGUpaXRlci5jb2RlcG9pbnQpJjB4RkYpKSsiOlVOQVNTSUdORUQiOworICAgICAgICAgICAgfWVsc2UgaWYoY3AuZXF1YWxzKHMyKSl7CisgICAgICAgICAgICAgICAgYXJyW2luZGV4XSA9IHMxOworICAgICAgICAgICAgfWVsc2UgaWYoczEuZXF1YWxzKHMyKSl7CisgICAgICAgICAgICAgICAgaWYoczEuZXF1YWxzKCIiKSl7CisgICAgICAgICAgICAgICAgICAgIGFycltpbmRleF0gPSBVVEYxNi52YWx1ZU9mKHN0YXJ0KygoKGJ5dGUpaXRlci5jb2RlcG9pbnQpJjB4RkYpKSsiOkNPTlNVTUVEIjsKKyAgICAgICAgICAgICAgICB9ZWxzZXsKKyAgICAgICAgICAgICAgICAgICAgYXJyW2luZGV4XSA9IHMxKyAiOkZBTExCQUNLIjs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNleworICAgICAgICAgICAgICAgIGlmKHMyLmVxdWFscygiIikpeworICAgICAgICAgICAgICAgICAgICBhcnJbaW5kZXhdID0gVVRGMTYudmFsdWVPZihzdGFydCsoKChieXRlKWl0ZXIuY29kZXBvaW50KSYweEZGKSkrIjpDT05TVU1FRCI7CisgICAgICAgICAgICAgICAgfWVsc2V7CisgICAgICAgICAgICAgICAgICAgIGFycltpbmRleF0gPSBzMSsgIjpGQUxMQkFDSyI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCB3cml0ZUNoYXJ0cyhUcmFuc2xpdGVyYXRvciB0cmFucywgVW5pY29kZVNldCB0YXJnZXQsIGludCBpbmRleCl7CisgICAgICAgIFVuaWNvZGVTZXRJdGVyYXRvciB0SXRlciA9IG5ldyBVbmljb2RlU2V0SXRlcmF0b3IodGFyZ2V0KTsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgaW52ZXJzZSA9IHRyYW5zLmdldEludmVyc2UoKTsKKyAgICAgICAgd2hpbGUodEl0ZXIubmV4dCgpKXsKKyAgICAgICAgICAgIFN0cmluZyBjcCA9IFVURjE2LnZhbHVlT2YodEl0ZXIuY29kZXBvaW50KTsKKyAgICAgICAgICAgIFN0cmluZyBzMSA9IGludmVyc2UudHJhbnNsaXRlcmF0ZShjcCk7CisgICAgICAgICAgICBTdHJpbmcgczIgPSB0cmFucy50cmFuc2xpdGVyYXRlKHMxKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgU3RyaW5nW10gYXJyID0gKFN0cmluZ1tdKXRhYmxlLmdldChnZXRLZXkodEl0ZXIuY29kZXBvaW50KSk7CisgICAgICAgICAgICBpZihjcC5lcXVhbHMoczIpKXsKKyAgICAgICAgICAgICAgICBhcnJbaW5kZXhdID0gY3A7CisgICAgICAgICAgICB9ZWxzZXsKKyAgICAgICAgICAgICAgICBhcnJbaW5kZXhdID0gY3AgKyAiOkZBTExCQUNLIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL3RyYW5zbGl0L2R1bXBJQ1VydWxlcy5iYXQgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvdHJhbnNsaXQvZHVtcElDVXJ1bGVzLmJhdApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5iN2Q5YmNlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL3RyYW5zbGl0L2R1bXBJQ1VydWxlcy5iYXQKQEAgLTAsMCArMSw0NzkgQEAKK0ByZW0gPSAnLS0qLVBlcmwtKi0tCitAZWNobyBvZmYKK2lmICIlT1MlIiA9PSAiV2luZG93c19OVCIgZ290byBXaW5OVAorcGVybCAteCAtUyAiJTAiICUxICUyICUzICU0ICU1ICU2ICU3ICU4ICU5Citnb3RvIGVuZG9mcGVybAorOldpbk5UCitwZXJsIC14IC1TICIlMCIgJSoKK2lmIE5PVCAiJUNPTVNQRUMlIiA9PSAiJVN5c3RlbVJvb3QlXHN5c3RlbTMyXGNtZC5leGUiIGdvdG8gZW5kb2ZwZXJsCitpZiAlZXJyb3JsZXZlbCUgPT0gOTAwOSBlY2hvIFlvdSBkbyBub3QgaGF2ZSBQZXJsIGluIHlvdXIgUEFUSC4KK2dvdG8gZW5kb2ZwZXJsCitAcmVtICc7CisjIXBlcmwKKyNsaW5lIDE0CisKKyMgVGhpcyBwZXJsIHNjcmlwdCBjcmVhdGVzIElDVSB0cmFuc2xpdGVyYXRvciBkYXRhIGZpbGVzLCB0aGF0IGxpdmUKKyMgaW4gaWN1L2RhdGEsIGZyb20gSUNVNEogVVRGOCB0cmFuc2xpdGVyYXRvciBkYXRhIGZpbGVzLCBpbgorIyBpY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhLy4KKyMKKyMgVGhlIHRyYW5zZm9ybWF0aW9uIHRoYXQgaXMgZG9uZSBpcyB2ZXJ5IG1pbmltYWwuICBUaGUgc2NyaXB0IGFzc3VtZXMKKyMgdGhhdCB0aGUgaW5wdXQgZmlsZXMgdXNlIG9ubHkgIyBjb21tZW50cworIyBhbmQgdGhhdCB0aGV5IGZvbGxvdyBhIHJpZ2lkIGZvcm1hdC4KKyMKKyMgVGhlIG91dHB1dCBmaWxlcyBhcmUgbmFtZWQgYWNjb3JkaW5nIHRvIElDVSBjb252ZW50aW9ucyAoc2VlIE5BTUVfTUFQCisjIGJlbG93KSBhbmQgY3JlYXRlZCBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuICBUaGV5IHNob3VsZCBiZSBtYW51YWxseQorIyBjaGVja2VkIGFuZCB0aGVuIGNvcGllZCBpbnRvIHRoZSBpY3UvZGF0YS90cmFubGl0IGRpcmVjdG9yeS4KKyMgQW4gSUNVIGJ1aWxkIG11c3QKKyMgdGhlbiBiZSBpbml0aWF0ZWQsIGFuZCB0aGUgc3RhbmRhcmQgc3VpdGUgb2YgSUNVIHRyYW5zbGl0ZXJhdG9yIHRlc3RzCisjIHNob3VsZCBiZSBydW4gYWZ0ZXIgdGhhdC4KKyMKKyMgQWxhbiBMaXUgNS8xOS8wMCAyLzI3LzAxCisKK3VzZSBHZXRvcHQ6Okxvbmc7Cit1c2Ugc3RyaWN0OworCit1c2UgdmFycyBxdyglVVNFRF9GSUxFUyk7CisKK215ICRESVIgPSAiLi4vLi4vLi4vaW1wbC9kYXRhIjsKK215ICRJRCA9ICcnOworCitHZXRPcHRpb25zKCdkaXI9cycgPT4gXCRESVIsCisgICAgICAgICAgICdpZD1zJyA9PiBcJElELAorICAgICAgICAgICAnPD4nID0+IFwmdXNhZ2UpIHx8IGRpZTsKKwordXNhZ2UoKSBpZiAoQEFSR1YpOworCitteSAkSUQgPX4gcy8tL18vOworaWYgKCEgLWQgJERJUikgeworICAgIHByaW50IFNUREVSUiAiJERJUiBpcyBub3QgYSBkaXJlY3RvcnlcbiI7CisgICAgdXNhZ2UoKTsKK30KKworc3ViIHVzYWdlIHsKKyAgICBteSAkbWUgPSAkMDsKKyAgICAkbWUgPX4gc3wuK1svXFxdfHw7CisgICAgcHJpbnQgIlVzYWdlOiAkbWUgWy1kaXIgPGRpcj5dIFstaWQgPGlkPl1cbiI7CisgICAgcHJpbnQgIiAtLWRpciA8ZGlyPiBTcGVjaWZ5IHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGVcbiI7CisgICAgcHJpbnQgIiAgICAgICAgICAgICBUcmFuc2xpdGVyYXRvcl8qLnR4dCBmaWxlc1xuIjsKKyAgICBwcmludCAiIC0taWQgPGlkPiAgIFNwZWNpZnkgYSBzaW5nbGUgSUQgdG8gdHJhbnNmb3JtLCBlLmcuXG4iOworICAgIHByaW50ICIgICAgICAgICAgICAgRnVsbHdpZHRoLUhhbGZ3aWR0aFxuIjsKKyAgICBleGl0KDEpOworfQorCitteSAkSkFWQV9PTkxZID0gJy0nOworCitteSAkT1VURElSID0gImljdTRjIjsKK21rZGlyKCRPVVRESVIsMDc3Nyk7CisKKyMgTWFwcGluZyBmcm9tIEphdmEgZmlsZSBuYW1lcyB0byBJQ1UgZmlsZSBuYW1lcworIyBDb25zdHJhaW50cyBvbiBJQ1U0QyBmaWxlIG5hbWU6IGljdWR0MjBiXworIyB8LS05IChwcmVmaXgpLS0tfC0tLTE4KG5hbWUgd2l0aCBkaXN0aW5ndWlzaGVyLGUuZy4gInRfIiApLS0tLXwKKyMgIC0tNCAoIi4iK2V4dG4pLS18ID0gMzEgY2hhcmFjdGVycyB0b3RhbC4KKyMgVGhhdCBpcywgbXVzdCBoYXZlIGxlbmd0aCglTkFNRV9NQVB7eH0pIDw9IDE2CisKK215ICRNQVhfSUNVNENfRklMRU5BTUVfTEVOID0gMTg7CisKKyMgLS0gSElTVE9SWSAtLSBJZiBub3QgbWFya2VkLCB0aGVuIHByZSAyLjIuCisjICAgICAgICAgICAgICAgQWxsIEludGVySW5kaWMgYXJlIHByZSAyLjIuCisjIEFueV9BY2NlbnRzCisjIEFueV9QdWJsaXNoaW5nCisjIEFyYWJpY19MYXRpbiAgICAgICAgICAgKiAyLjIKKyMgQ3lyaWxsaWNfTGF0aW4KKyMgRnVsbHdpZHRoX0hhbGZ3aWR0aAorIyBHcmVla19MYXRpbgorIyBHcmVla19MYXRpbl9VTkdFR04gICAgICogMi4yIChtb3ZlZCBmcm9tIGVsLnR4dCkKKyMgSGFuX0xhdGluICAgICAgICAgICAgICAqIDIuMgorIyBIYW5fTGF0aW5fRGVmaW5pdGlvbiAgICogMi4yCisjIEhhbl9MYXRpbl9FRElDVCAgICAgICAgKiAyLjIgSiBvbmx5CisjIEhlYnJld19MYXRpbiAgICAgICAgICAgKiAyLjIKKyMgSGlyYWdhbmFfS2F0YWthbmEKKyMgSGlyYWdhbmFfTGF0aW4KKyMgTGF0aW5fSmFtbworIyBMYXRpbl9LYXRha2FuYQorIyBUaGFpTG9naWNhbF9MYXRpbiAgICAgICogMi4yIEogb25seQorIyBUaGFpX1RoYWlMb2dpY2FsICAgICAgICogMi4yIEogb25seQorIyBUaGFpX1RoYWlTZW1pICAgICAgICAgICogMi4yIEogb25seQorCitteSAlTkFNRV9NQVAgPSAoCisgICAgICMgQW4gSUNVIG5hbWUgb2YgIiIgbWVhbnMgdGhlIElDVSBuYW1lID09IHRoZSBJRAorCisgICAgICMgV2UgZmlsdGVyIG5hbWVzIGJhc2VkIG9uIHdoYXQgaXMgaW4gdXNlIGluIHRoZSBpbmRleCBmaWxlLgorCisgICAgICMgRmxhZyBhIHJ1bGUgYXMgSkFWQV9PTkxZIGlmIGl0IGV4aXN0cyBhbmQgd2UgdXNlIGl0IGluIEphdmEsCisgICAgICMgYnV0IHdlIGRvbid0IHVzZSBpdCBpbiBDLgorCisgICAgICMgVXNlIG9mZmljaWFsIHNjcmlwdCBhYmJyZXZpYXRpb25zIHdoZXJlIHBvc3NpYmxlLgorCisgICAjIHwuLi4uLi4uLi4uLi4uLnwgICAgICAgICAgIHwuLi4uLi4uLi4uLi4uLnwgICAgICAgICAgICAgCisgICAjIDEyMzQ1Njc4OTAxMjM0NTYgICAgICAgICAgIDEyMzQ1Njc4OTAxMjM0NTYKKyAgICAgQW55X0FjY2VudHMgICAgICAgICAgICA9PiAiIiwKKyAgICAgQW55X1B1Ymxpc2hpbmcgICAgICAgICA9PiAiIiwKKyAgICAgQ3lyaWxsaWNfTGF0aW4gICAgICAgICA9PiAiQ3lybF9MYXRuIiwKKyAgICAgRnVsbHdpZHRoX0hhbGZ3aWR0aCAgICA9PiAiRldpZHRoX0hXaWR0aCIsCisgICAgIEdyZWVrX0xhdGluICAgICAgICAgICAgPT4gIkdyZWtfTGF0biIsCisgICAgIEhpcmFnYW5hX0thdGFrYW5hICAgICAgPT4gIkhpcmFfS2FuYSIsCisgICAgIEhpcmFnYW5hX0xhdGluICAgICAgICAgPT4gIkhpcmFfTGF0biIsCisgICAgIExhdGluX0phbW8gICAgICAgICAgICAgPT4gIkxhdG5fSmFtbyIsCisgICAgIExhdGluX0thdGFrYW5hICAgICAgICAgPT4gIkxhdG5fS2FuYSIsCisKKyAgICAgQXJhYmljX0xhdGluICAgICAgICAgICA9PiAiQXJhYl9MYXRuIiwKKyAgICAgR3JlZWtfTGF0aW5fVU5HRUdOICAgICA9PiAiR3Jla19MYXRuX1VOR0VHTiIsCisgICAgIEhhbl9MYXRpbiAgICAgICAgICAgICAgPT4gIkhhbmlfTGF0biIsCisgICAgIEhhbl9MYXRpbl9EZWZpbml0aW9uICAgPT4gIkhhbmlfTGF0bl9EZWYiLAorICAgICBIYW5fTGF0aW5fRURJQ1QgICAgICAgID0+ICJIYW5pX0xhdG5fRURJQ1QiLAorICAgICBIZWJyZXdfTGF0aW4gICAgICAgICAgID0+ICJIZWJyX0xhdG4iLAorICAgICBUaGFpTG9naWNhbF9MYXRpbiAgICAgID0+ICRKQVZBX09OTFksICMgIlRoYWlMb2dfTGF0biIsCisgICAgIFRoYWlfVGhhaUxvZ2ljYWwgICAgICAgPT4gJEpBVkFfT05MWSwgIyAiVGhhaV9UaGFpTG9nIiwKKyAgICAgVGhhaV9UaGFpU2VtaSAgICAgICAgICA9PiAkSkFWQV9PTkxZLCAjICJUaGFpX1RoYWlTZW1pIiwKKworICAgICBJbnRlckluZGljX0JlbmdhbGkgICAgID0+ICJJbnRlckluZGljX0JlbmciLAorICAgICBJbnRlckluZGljX0RldmFuYWdhcmkgID0+ICJJbnRlckluZGljX0RldmEiLAorICAgICBJbnRlckluZGljX0d1amFyYXRpICAgID0+ICJJbnRlckluZGljX0d1anIiLAorICAgICBJbnRlckluZGljX0d1cm11a2hpICAgID0+ICJJbnRlckluZGljX0d1cnUiLAorICAgICBJbnRlckluZGljX0thbm5hZGEgICAgID0+ICJJbnRlckluZGljX0tuZGEiLAorICAgICBJbnRlckluZGljX0xhdGluICAgICAgID0+ICJJbnRlckluZGljX0xhdG4iLAorICAgICBJbnRlckluZGljX01hbGF5YWxhbSAgID0+ICJJbnRlckluZGljX01seW0iLAorICAgICBJbnRlckluZGljX09yaXlhICAgICAgID0+ICJJbnRlckluZGljX09yeWEiLAorICAgICBJbnRlckluZGljX1RhbWlsICAgICAgID0+ICJJbnRlckluZGljX1RhbWwiLAorICAgICBJbnRlckluZGljX1RlbHVndSAgICAgID0+ICJJbnRlckluZGljX1RlbHUiLAorCisgICAgIEJlbmdhbGlfSW50ZXJJbmRpYyAgICAgPT4gIkJlbmdfSW50ZXJJbmRpYyIsCisgICAgIERldmFuYWdhcmlfSW50ZXJJbmRpYyAgPT4gIkRldmFfSW50ZXJJbmRpYyIsCisgICAgIEd1amFyYXRpX0ludGVySW5kaWMgICAgPT4gIkd1anJfSW50ZXJJbmRpYyIsCisgICAgIEd1cm11a2hpX0ludGVySW5kaWMgICAgPT4gIkd1cnVfSW50ZXJJbmRpYyIsCisgICAgIEthbm5hZGFfSW50ZXJJbmRpYyAgICAgPT4gIktuZGFfSW50ZXJJbmRpYyIsCisgICAgIExhdGluX0ludGVySW5kaWMgICAgICAgPT4gIkxhdG5fSW50ZXJJbmRpYyIsCisgICAgIE1hbGF5YWxhbV9JbnRlckluZGljICAgPT4gIk1seW1fSW50ZXJJbmRpYyIsCisgICAgIE9yaXlhX0ludGVySW5kaWMgICAgICAgPT4gIk9yeWFfSW50ZXJJbmRpYyIsCisgICAgIFRhbWlsX0ludGVySW5kaWMgICAgICAgPT4gIlRhbWxfSW50ZXJJbmRpYyIsCisgICAgIFRlbHVndV9JbnRlckluZGljICAgICAgPT4gIlRlbHVfSW50ZXJJbmRpYyIsCisgICAgIAorICAgICBIYW5fUGlueWluICAgICAgICAgICAgID0+ICRKQVZBX09OTFksCisgICAgIEthbmppX0VuZ2xpc2ggICAgICAgICAgPT4gJEpBVkFfT05MWSwKKyAgICAgS2FuamlfT25Sb21hamkgICAgICAgICA9PiAkSkFWQV9PTkxZLAorICAgICApOworCitteSAoJHgsJHgsJHgsJHgsJHgsJFRISVNfWUVBUikgPSBsb2NhbHRpbWUoKTsKKyRUSElTX1lFQVIgKz0gMTkwMDsKKworIyBIZWFkZXIgYmxvY2tzIG9mIHRleHQgd3JpdHRlbiBhdCBzdGFydCBvZiBJQ1Ugb3V0cHV0IGZpbGVzCitteSAkSEVBREVSMSA9IDw8RU5EOworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQ29weXJpZ2h0IChjKSAxOTk5LSRUSElTX1lFQVIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKy8vIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gVEhJUyBJUyBBIE1BQ0hJTkUtR0VORVJBVEVEIEZJTEUKK0VORAorbXkgJEhFQURFUjIgPSA8PEVORDsKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0VORAorCitteSAkVE9PTCA9ICQwOworCisjIENvbnZlcnQgdGhlIGluZGV4IGZpcnN0OyB0aGlzIHRlbGxzIHVzIHdoaWNoIHJ1bGUgZmlsZXMgYXJlIGluIHVzZS4KK2NvbnZlcnRJbmRleCgpOworCisjIHByaW50ICJJbiB1c2U6XG4iLCBqb2luKCJcbiIsIHNvcnQga2V5cyglVVNFRF9GSUxFUykpLCAiXG4iOworCisjIEl0ZXJhdGUgb3ZlciBhbGwgSmF2YSBSQlQgcnVsZSBmaWxlcworZm9yZWFjaCAoPCRESVIvVHJhbnNsaXRlcmF0b3JfKi50eHQ+KSB7CisgICAgbmV4dCBpZiAoL34kLyk7ICMgSWdub3JlIGVtYWNzIGJhY2t1cHMKKyAgICBuZXh0IGlmICgvX2luZGV4XC50eHQkLyk7ICMgVGhlIGluZGV4IGZpbGUgd2FzIHByb2Nlc3NlZCBhYm92ZQorICAgICMgU2VsZWN0IGVpdGhlciB0aGUgY29tbWFuZC1saW5lIGFyZywgaWYgdGhlcmUgd2FzIG9uZSwgb3IKKyAgICAjIGFueSBmaWxlcyBtZW50aW9uZWQgaW4gdGhlIGluZGV4LgorICAgIG15ICRsZWFmID0gJF87CisgICAgJGxlYWYgPX4gc3wuK1svXFxdfHw7CisgICAgaWYgKCgkSUQgJiYgJGxlYWYgPX4gLyRJRC8pIHx8IGV4aXN0cyAkVVNFRF9GSUxFU3skbGVhZn0pIHsKKyAgICAgICAgbXkgKCRvdXQsICRpZCkgPSBjb252ZXJ0RmlsZU5hbWUoJF8pOworICAgICAgICBpZiAoJG91dCkgeworICAgICAgICAgICAgaWYgKCRvdXQgZXEgJEpBVkFfT05MWSkgeworICAgICAgICAgICAgICAgIHByaW50IFNUREVSUiAiKioqICRpZCBza2lwcGVkOiBKYXZhIG9ubHkgKioqXG4iOworICAgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmaWxlKCRpZCwgJF8sICRvdXQpOworICAgICAgICB9CisgICAgfSBlbHNpZiAoISRJRCkgeworICAgICAgICBwcmludCAiKioqICRsZWFmIHNraXBwZWQ6IG5vdCBpbiB1c2UgKioqXG4iOworICAgIH0KK30KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBDb252ZXJ0IGEgSmF2YSBmaWxlIG5hbWUgdG8gQworIyBQYXJhbTogSmF2YSBmaWxlIG5hbWUgb2YgdGhlIGZvcm0gbXxUcmFuc2xpdGVyYXRvcl8oLispXC51dGY4XC50eHQkfAorIyBSZXR1cm46IEEgQyBmaWxlIG5hbWUgKGUuZy4sIGxkZXZhbi50eHQpIG9yIHRoZSBlbXB0eSBzdHJpbmcsCisjICBpZiB0aGVyZSBpcyBubyBtYXBwaW5nLCBvciAkSkFWQV9PTkxZIGlmIHRoZSBnaXZlbiBmaWxlIGlzbid0CisjICBpbnRlbmRlZCB0byBiZSBpbmNvcnBvcmF0ZWQgaW50byBDLgorc3ViIGNvbnZlcnRGaWxlTmFtZSB7CisgICAgbG9jYWwgJF8gPSBzaGlmdDsKKyAgICBteSAkaWQ7CisgICAgaWYgKG18VHJhbnNsaXRlcmF0b3JfKC4rKVwudXRmOFwudHh0JHwgfHwKKyAgICAgICAgbXxUcmFuc2xpdGVyYXRvcl8oLispXC50eHQkfCkgeworICAgICAgICAkaWQgPSAkMTsKKyAgICB9IGVsc2UgeyBkaWUgIkNhbid0IHBhcnNlIEphdmEgZmlsZSBuYW1lICRfIjsgfQorICAgIGlmICghZXhpc3RzICROQU1FX01BUHskaWR9KSB7CisgICAgICAgIHByaW50IFNUREVSUiAiRVJST1I6ICRpZCBub3QgaW4gbWFwOyBwbGVhc2UgdXBkYXRlICQwXG4iOworICAgICAgICByZXR1cm4gJyc7CisgICAgfQorICAgIG15ICRvdXQgPSAkTkFNRV9NQVB7JGlkfTsKKyAgICBpZiAoJG91dCBlcSAnJykgeworICAgICAgICAkb3V0ID0gJGlkOworICAgIH0KKyAgICBpZiAoJG91dCBuZSAkSkFWQV9PTkxZKSB7CisgICAgICAgICRvdXQgPSAndF8nIC4gJG91dDsKKyAgICB9CisgICAgaWYgKGxlbmd0aCgkb3V0KSA+ICRNQVhfSUNVNENfRklMRU5BTUVfTEVOKSB7CisgICAgICAgIHByaW50IFNUREVSUiAiRVJST1I6IElDVTRDIGZpbGUgbmFtZSBcIiRvdXRcIiB0b28gbG9uZzsgcGxlYXNlIHVwZGF0ZSAkMFxuIjsKKyAgICAgICAgcmV0dXJuICcnOworICAgIH0KKyAgICByZXR1cm4gKCRvdXQsICRpZCk7Cit9CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgQ29udmVydCB0aGUgaW5kZXggZmlsZSBmcm9tIEphdmEgdG8gQyBmb3JtYXQKK3N1YiBjb252ZXJ0SW5kZXggeworICAgIG15ICRKQVZBX0lOREVYID0gIlRyYW5zbGl0ZXJhdG9yX2luZGV4LnR4dCI7CisgICAgbXkgJENfSU5ERVggPSAidHJhbnNsaXRfaW5kZXgudHh0IjsKKyAgICBvcGVuKEpBVkFfSU5ERVgsICIkRElSLyRKQVZBX0lOREVYIikgb3IgZGllOworICAgIG9wZW4oQ19JTkRFWCwgIj4kT1VURElSLyRDX0lOREVYIikgb3IgZGllOworICAgIAorICAgIGhlYWRlcihcKkNfSU5ERVgsICRKQVZBX0lOREVYKTsKKyAgICAKKyAgICBwcmludCBDX0lOREVYIDw8RU5EOworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gTi5CLjogVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBtZWNoYW5pY2FsbHkgZnJvbSB0aGUKKy8vIGNvcnJlc3BvbmRpbmcgSUNVNEogZmlsZSwgd2hpY2ggaXMgdGhlIG1hc3RlciBmaWxlIHRoYXQgcmVjZWl2ZXMKKy8vIHByaW1hcnkgdXBkYXRlcy4gIFRoZSBjb2xvbi1kZWxpbWl0ZWQgZmllbGRzIGhhdmUgYmVlbiBzcGxpdCBpbnRvCisvLyBzZXBhcmF0ZSBzdHJpbmdzLiAgRm9yICdmaWxlJyBhbmQgJ2ludGVybmFsJyBsaW5lcywgdGhlIGVuY29kaW5nCisvLyBmaWVsZCBoYXMgYmVlbiBkZWxldGVkLCBzaW5jZSB0aGUgZW5jb2RpbmcgaXMgcHJvY2Vzc2VkIGF0IGJ1aWxkCisvLyB0aW1lIGluIElDVTRDLiAgQ2VydGFpbiBsYXJnZSBydWxlIHNldHMgbm90IGludGVuZGVkIGZvciBnZW5lcmFsCisvLyB1c2UgaGF2ZSBiZWVuIGNvbW1lbnRlZCBvdXQgd2l0aCB0aGUgbm90YXRpb24gIkphdmEgb25seSIuCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RyYW5zbGl0X2luZGV4IHsKKyAgUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3JJRHMgeworRU5ECisgICAgICAgIAorICAgIHdoaWxlICg8SkFWQV9JTkRFWD4pIHsKKyAgICAgICAgIyBpZ25vcmUgJFNvdXJjZSAkUmV2aXNpb24gJERhdGUgQ1ZTIGtleXdvcmQgc3Vic3RpdHV0aW9ucworICAgICAgICBuZXh0IGlmIC9cJFNvdXJjZS8gOworICAgICAgICBuZXh0IGlmIC9cJFJldmlzaW9uLyA7CisgICAgICAgIG5leHQgaWYgL1wkRGF0ZS8gOworCisgICAgICAgICMgd2UgaGF2ZSBwcmludGVkIG91dCB0aGUgY29weXJpZ2h0IGluZm8gLi4uIGlnbm9yZSBvbmUgaW4gSmF2YSB2ZXJzaW9uCisgICAgICAgIG5leHQgaWYgL0NvcHlyaWdodC8gOworICAgICAgICBuZXh0IGlmIC9Db3Jwb3JhdGlvbi87CisKKyAgICAgICAgIyBDb21tZW50czsgY2hhbmdlICMgdG8gLy8KKyAgICAgICAgaWYgKHN8XihccyopXCN8JDEvL3wpIHsKKyAgICAgICAgICAgIHByaW50IENfSU5ERVg7CisgICAgICAgICAgICBuZXh0OworICAgICAgICB9CisgICAgICAgICMgQmxhbmsgbGluZXMKKyAgICAgICAgaWYgKCEvXFMvKSB7CisgICAgICAgICAgICBwcmludCBDX0lOREVYOworICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgfQorICAgICAgICAjIENvbnRlbnQgbGluZXMKKyAgICAgICAgY2hvbXA7CisgICAgICAgIG15ICRwcmVmaXggPSAnJzsKKyAgICAgICAgI3JlcGxhY2UgXHAgd2l0aCBcXHAKKyAgICAgICAgJF89fiBzL1xccC9cXFxccC9nOworICAgICAgICBteSBAYSA9IHNwbGl0KCc6JywgJF8pOworICAgICAgICBpZiAoJGFbMV0gZXEgJ2ZpbGUnIHx8ICRhWzFdIGVxICdpbnRlcm5hbCcpIHsKKyAgICAgICAgICAgICMgQ29udmVydCB0aGUgZmlsZSBuYW1lCisgICAgICAgICAgICBteSAkaWQ7CisgICAgICAgICAgICAjIFJlY29yZCBmaWxlIG5hbWVzIGluIHVzZQorICAgICAgICAgICAgJFVTRURfRklMRVN7JGFbMl19ID0gMTsKKyAgICAgICAgICAgICgkYVsyXSwgJGlkKSA9IGNvbnZlcnRGaWxlTmFtZSgkYVsyXSk7CisgICAgICAgICAgICBpZiAoJGFbMl0gZXEgJEpBVkFfT05MWSkgeworICAgICAgICAgICAgICAgICRwcmVmaXggPSAnLy8gSmF2YSBvbmx5OiAnOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjIERlbGV0ZSB0aGUgZW5jb2RpbmcgZmllbGQKKyAgICAgICAgICAgIHNwbGljZShAYSwgMywgMSk7CisgICAgICAgIH0gZWxzaWYgKCRhWzFdIGVxICdhbGlhcycpIHsKKyAgICAgICAgICAgICMgUGFkIG91dCB3aXRoIGV4dHJhIGJsYW5rIGZpZWxkcyB0byBtYWtlIHRoZQorICAgICAgICAgICAgIyAyLWQgYXJyYXkgc3F1YXJlCisgICAgICAgICAgICBwdXNoIEBhLCAiIjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRpZSAiQ2FuJ3QgcGFyc2UgJF8iOworICAgICAgICB9CisgICAgICAgIHByaW50IENfSU5ERVgKKyAgICAgICAgICAgICRwcmVmaXgsICJ7ICIsCisgICAgICAgICAgICBqb2luKCIsICIsIG1hcCgiXCIkX1wiIiwgQGEpKSwKKyAgICAgICAgICAgICIgfSxcbiI7CisgICAgfQorCisgICAgcHJpbnQgQ19JTkRFWCA8PEVORDsKKyAgfQorfQorRU5ECisKKyAgICBjbG9zZShDX0lOREVYKTsKKyAgICBjbG9zZShKQVZBX0lOREVYKTsKKyAgICBwcmludCBTVERFUlIgIiRKQVZBX0lOREVYIC0+ICRDX0lOREVYXG4iOworfQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIE91dHB1dCBhIGhlYWRlcgorIyBQYXJhbTogRmlsZWhhbmRsZQorc3ViIGhlYWRlciB7CisgICAgbXkgJG91dCA9IHNoaWZ0OworICAgIG15ICRpbiA9IHNoaWZ0OworICAgIHByaW50ICRvdXQgJEhFQURFUjE7CisgICAgcHJpbnQgJG91dCAiLy8gVG9vbDogJFRPT0xcbi8vIFNvdXJjZTogJGluXG4iOworICAgIHByaW50ICRvdXQgIi8vIERhdGU6ICIsIHNjYWxhciBsb2NhbHRpbWUsICJcbiI7CisgICAgcHJpbnQgJG91dCAkSEVBREVSMjsKKyAgICBwcmludCAkb3V0ICJcbiI7Cit9CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgUHJvY2VzcyBvbmUgZmlsZQorIyBQYXJhbTogSUQsIGUuZy4gRnVsbHdpZHRoLUhhbGZ3aWR0aAorIyBQYXJhbTogSmF2YSBpbnB1dCBmaWxlIG5hbWUsIGUuZy4KKyMgIGY6L2ljdTRqL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX0Z1bGx3aWR0aF9IYWxmd2lkdGgudXRmOC50eHQKKyMgUGFyYW06IElDVSBvdXRwdXQgZmlsZSBuYW1lLCBlLmcuIGZ1bGxoYWxmCitzdWIgZmlsZSB7CisgICAgbXkgJGlkID0gc2hpZnQ7CisgICAgbXkgJElOID0gc2hpZnQ7CisgICAgbXkgJG91dCA9IHNoaWZ0OworCisgICAgbXkgJE9VVCA9ICIkb3V0LnR4dCI7CisKKyAgICAjIFNob3cgaW5wdXQgc2l6ZS4gU2hvdyBvdXRwdXQgc2l6ZSBsYXRlciAtLSB1c2VmdWwgZm9yIHF1aWNrIHNhbml0eSBjaGVjay4KKyAgICBwcmludCAiJGlkICgiLCAtcyAkSU4sICIpIC0+ICRPVVQgKCI7CisKKyAgICAjIE9wZW4gZmlsZSwgd3JpdGUgVVRGOCBtYXJrZXIsIGNsb3NlIGl0LCBhbmQgcmVvcGVuIGluIHRleHQgbW9kZQorICAgIG9wZW4oT1VULCAiPiRPVVRESVIvJE9VVCIpIG9yIGRpZTsKKyAgICBiaW5tb2RlIE9VVDsgICAgICAgICMgTXVzdCBkbyB0aGlzIHNvIHdlIGNhbiB3cml0ZSBvdXIgVVRGOCBtYXJrZXIKKyAgICBwcmludCBPVVQgcGFjaygiQzMiLCAweEVGLCAweEJCLCAweEJGKTsgIyBXcml0ZSBVVEY4IG1hcmtlcgorICAgIGNsb3NlKE9VVCk7CisKKyAgICBvcGVuKE9VVCwgIj4+JE9VVERJUi8kT1VUIikgb3IgZGllOworICAgIHByaW50IE9VVCAiIC8vIC0qLSBDb2Rpbmc6IHV0Zi04OyAtKi1cbiI7CisKKyAgICBoZWFkZXIoXCpPVVQsICRJTik7CisgICAgcHJpbnQgT1VUICIvLyAkaWRcbiI7CisgICAgcHJpbnQgT1VUICJcbiI7CisgICAgcHJpbnQgT1VUICIkb3V0IHtcbiI7CisgICAgcHJpbnQgT1VUICIgIFJ1bGUge1xuIjsKKworICAgIG9wZW4oSU4sICRJTikgb3IgZGllOworICAgIGJpbm1vZGUgSU47ICAgICAgICAgICAgICAgICAjIElOIGlzIGEgVVRGOCBmaWxlCisKKyAgICBteSAkZmlyc3QgPSAxOworICAgIG15ICRCT00gPSBwYWNrKCJDMyIsIDIzOSwgMTg3LCAxOTEpOyAjIGEgVVRGOCBieXRlIG9yZGVyIG1hcmsKKworICAgICMgUHJvY2VzcyBlYWNoIGxpbmUgYnkgY2hhbmdpbmcgIyBjb21tZW50cyB0byAvLyBjb21tZW50cworICAgICMgYW5kIHRha2luZyBvdGhlciB0ZXh0IGFuZCBlbmNsb3NpbmcgaXQgaW4gZG91YmxlIHF1b3RlcworICAgIHdoaWxlICg8SU4+KSB7CisgICAgICAgIG15ICRyYXcgPSAkXzsKKyAgICAgICAgIyBpZ25vcmUgJFNvdXJjZSAkUmV2aXNpb24gJERhdGUgQ1ZTIGtleXdvcmQgc3Vic3RpdHV0aW9ucworICAgICAgICBuZXh0IGlmIC9cJFNvdXJjZS8gOworICAgICAgICBuZXh0IGlmIC9cJFJldmlzaW9uLyA7CisgICAgICAgIG5leHQgaWYgL1wkRGF0ZS8gOworCisgICAgICAgICMgd2UgaGF2ZSBwcmludGVkIG91dCB0aGUgY29weXJpZ2h0IGluZm8gLi4uIGlnbm9yZSBvbmUgaW4gSmF2YSB2ZXJzaW9uCisgICAgICAgIG5leHQgaWYgL0NvcHlyaWdodC8gOworICAgICAgICBuZXh0IGlmIC9Db3Jwb3JhdGlvbi87CisKKyAgICAgICAgIyBMb29rIGZvciBhbmQgZGVsZXRlIEJPTQorICAgICAgICBpZiAoJGZpcnN0KSB7CisgICAgICAgICAgICBzL14kQk9NLy87CisgICAgICAgICAgICAkZmlyc3QgPSAwOworICAgICAgICB9CisKKyAgICAgICAgIyBDbGVhbiB0aGUgZW9sIGp1bmsgdXAKKyAgICAgICAgcy9bXHgwRFx4MEFdKyQvLzsKKworICAgICAgICAjIElmIHRoZXJlIGlzIGEgdHJhaWxpbmcgYmFja3NsYXNoLCB0aGVuIGRlbGV0ZSBpdCAtLSB3ZSBkb24ndAorICAgICAgICAjIG5lZWQgbGluZSBjb250aW51YXRpb24gaW4gQywgc2luY2UgYWRqYWNlbnQgc3RyaW5ncyBhcmUKKyAgICAgICAgIyBjb25jYXRlbmF0ZWQuICBDb3VudCB0cmFpbGluZyBiYWNrc2xhc2hlczsgaWYgdGhleSBhcmUgb2RkLAorICAgICAgICAjIG9uZSBpcyB0cmFpbGluZy4KKyAgICAgICAgaWYgKG18KFxcKykkfCkgeworICAgICAgICAgICAgaWYgKChsZW5ndGgoJDEpICUgMikgPT0gMSkgeworICAgICAgICAgICAgICAgIHN8XFwkfHw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAjIFRyYW5zZm9ybSBlc2NhcGVkIGNoYXJhY3RlcnMKKyAgICAgICAgaGlkZUVzY2FwZXMoKTsKKworICAgICAgICBpZiAoL14oXHMqKShcIy4qKSQvKSB7CisgICAgICAgICAgICAjIENvbW1lbnQtb25seSBsaW5lCisgICAgICAgICAgICBteSAoJHdoaXRlLCAkY210KSA9ICgkMSwgJDIpOworICAgICAgICAgICAgJGNtdCA9fiBzfFwjfC8vfDsKKyAgICAgICAgICAgICRfID0gJHdoaXRlIC4gJGNtdDsKKworICAgICAgICB9IGVsc2lmICghL1xTLykgeworICAgICAgICAgICAgIyBCbGFuayBsaW5lIC0tIGxlYXZlIGFzLWlzCisKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICMgUmVtb3ZlIHNpbmdsZS1xdW90ZWQgbWF0dGVyIAorICAgICAgICAgICAgbXkgQHF1b3RlczsKKyAgICAgICAgICAgIG15ICRucXVvdGVzID0gMDsKKyAgICAgICAgICAgIG15ICR4ID0gJF87CisgICAgICAgICAgICB3aGlsZSAocy9eKFteXCddKikoXCdbXlwnXSpcJykvJDE8PHgkbnF1b3Rlcz4+LykgeworICAgICAgICAgICAgICAgIHB1c2ggQHF1b3RlcywgJDI7CisgICAgICAgICAgICAgICAgKyskbnF1b3RlczsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgIyBFeHRyYWN0IGNvbW1lbnQKKyAgICAgICAgICAgIG15ICRjbXQgPSAnJzsKKyAgICAgICAgICAgIGlmIChzfFwjKC4qKXx8KSB7CisgICAgICAgICAgICAgICAgJGNtdCA9ICcvLycgLiAkMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgIyBBZGQgcXVvdGVzCisgICAgICAgICAgICBzfF4oXHMqKShcUy4qPykoXHMqKSR8JDFcIiQyXCIkM3w7CisKKyAgICAgICAgICAgICMgUmVzdG9yZSBzaW5nbGUtcXVvdGVkIG1hdHRlcgorICAgICAgICAgICAgZm9yIChteSAkaT0wOyAkaTwkbnF1b3RlczsgKyskaSkgeworICAgICAgICAgICAgICAgIHN8PDx4JGk+PnwkcXVvdGVzWyRpXXw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICMgUmVzdG9yZSBjb21tZW50CisgICAgICAgICAgICAkXyAuPSAkY210OworICAgICAgICB9CisKKyAgICAgICAgIyBSZXN0b3JlIGVzY2FwZWQgY2hhcmFjdGVycworICAgICAgICByZXN0b3JlRXNjYXBlcygpOworCisgICAgICAgIHByaW50IE9VVCAkXywgIlxuIjsKKyAgICB9CisKKyAgICAjIEZpbmlzaCB1cAorICAgIGNsb3NlKElOKTsKKyAgICBwcmludCBPVVQgIiAgfVxuIjsKKyAgICBwcmludCBPVVQgIn1cbiI7CisgICAgY2xvc2UoT1VUKTsKKworICAgICMgV3JpdGUgb3V0cHV0IGZpbGUgc2l6ZSBmb3Igc2FuaXR5IGNoZWNrCisgICAgcHJpbnQgLXMgIiRPVVRESVIvJE9VVCIsICIpXG4iOworfQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitzdWIgaGlkZUVzY2FwZXMgeworICAgICMgVHJhbnNmb3JtIGVzY2FwZWQgY2hhcmFjdGVycworICAgIHN8XFxcXHw8PGJzPj58ZzsgIyBETyBUSElTIEZJUlNUIFRyYW5zZm9ybSBiYWNrc2xhc2hlcworICAgIHN8XFx1KFthLXpBLVowLTldezR9KXw8PHUkMT4+fGc7ICMgVHJhbnNmb3JtIFVuaWNvZGUgZXNjYXBlcworICAgIHN8XFxcInw8PGRxPj58ZzsgIyBUcmFuc2Zvcm0gYmFja3NsYXNoIGRvdWJsZSBxdW90ZQorICAgIHN8XFxcJ3w8PHNxPj58ZzsgIyBUcmFuc2Zvcm0gYmFja3NsYXNoIHNpbmdsZSBxdW90ZQorICAgIHN8XFxcI3w8PGxiPj58ZzsgIyBUcmFuc2Zvcm0gYmFja3NsYXNoIHBvdW5kCisgICAgc3xcXCguKXw8PHEkMT4+fGc7ICMgVHJhbnNmb3JtIGJhY2tzbGFzaCBlc2NhcGVzCit9CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK3N1YiByZXN0b3JlRXNjYXBlcyB7CisgICAgIyBSZXN0b3JlIGVzY2FwZWQgY2hhcmFjdGVycworICAgIHN8PDxicz4+fFxcXFx8ZzsKKyAgICBzfDw8ZHE+PnxcXFxcXFxcInxnOworICAgIHN8PDxzcT4+fFxcXFxcXFwnfGc7CisgICAgc3w8PGxiPj58XFxcXFxcXCN8ZzsKKyAgICBzfDw8cSguKT4+fFxcXFxcXCQxfGc7CisgICAgc3w8PHUwMDAwPj58XFxcXHUwMDAwfGc7ICMgRG91YmxlIGVzY2FwZSBVKzAwMDAKKyAgICBzfDw8dSguLi4uKT4+fFxcdSQxfGc7Cit9CisKK19fRU5EX18KKzplbmRvZnBlcmwKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC90cmFuc2xpdC9nZW5JbmRleEZpbHRlcnMuYmF0IGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL3RyYW5zbGl0L2dlbkluZGV4RmlsdGVycy5iYXQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uY2JmMTc2NwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC90cmFuc2xpdC9nZW5JbmRleEZpbHRlcnMuYmF0CkBAIC0wLDAgKzEsMTI3IEBACisjLyoqCisjICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyMgKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorIyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisjICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyMgKgorIyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC90cmFuc2xpdC9nZW5JbmRleEZpbHRlcnMuYmF0LHYgJAorIyAqICREYXRlOiAyMDAyLzEyLzE4IDAzOjU2OjQxICQKKyMgKiAkUmV2aXNpb246IDEuMyAkCisjICoKKyMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIyAqLworQHJlbSA9ICctLSotUGVybC0qLS0KK0BlY2hvIG9mZgoraWYgIiVPUyUiID09ICJXaW5kb3dzX05UIiBnb3RvIFdpbk5UCitwZXJsIC1XIC14IC1TICIlMCIgJTEgJTIgJTMgJTQgJTUgJTYgJTcgJTggJTkKK2dvdG8gZW5kb2ZwZXJsCis6V2luTlQKK3BlcmwgLVcgLXggLVMgIiUwIiAlKgoraWYgTk9UICIlQ09NU1BFQyUiID09ICIlU3lzdGVtUm9vdCVcc3lzdGVtMzJcY21kLmV4ZSIgZ290byBlbmRvZnBlcmwKK2lmICVlcnJvcmxldmVsJSA9PSA5MDA5IGVjaG8gWW91IGRvIG5vdCBoYXZlIFBlcmwgaW4geW91ciBQQVRILgorZ290byBlbmRvZnBlcmwKK0ByZW0gJzsKKyMhcGVybAorI2xpbmUgMTQKKworIyBUaGlzIHBlcmwgc2NyaXB0IHVwZGF0ZXMgdGhlIGZpbHRlcnMgaW4gdGhlIHRyYW5zbGl0ZXJhdG9yIGluZGV4IGZpbGUuCisjIEl0IGRvZXMgc28gaW4gYSBkdW1iIHdheToKKyMKKyMgIExhdGluLVggICBORkQgbG93ZXIKKyMgIFgtTGF0aW4gICBORkQKKyMKKyMgRm9yIHRyYW5zbGl0ZXJhdG9ycyB1c2luZyBORktELCBvciBub3QgdXNpbmcgTG93ZXIgaW4gdGhpcyB3YXksIHlvdQorIyB3aWxsIGhhdmUgdG8gaGFuZC1lZGl0IHRoZSBpbmRleCBmaWxlLgorIworIyBUaGlzIHNjcmlwdCB3cml0ZXMgYSBuZXcgaW5kZXggZmlsZS4gIFRoZSBuZXcgZmlsZSBoYXMgdG8gdGhlbiBiZQorIyBoYW5kLWVkaXRlZCBhbmQgY2hlY2tlZCBiZWZvcmUgdXNlOyBpdCBjb250YWlucyBjb21tZW50cyBpbmRpY2F0aW5nCisjIG9sZCBsaW5lcyB0aGF0IHdlcmUgcmVwbGFjZWQuCisjCisjIEFsYW4gTGl1IDExLzI5LzAxCisKK3VzZSBHZXRvcHQ6Okxvbmc7CisKK215ICRESVIgPSAiLi4vLi4vdGV4dC9yZXNvdXJjZXMiOworbXkgJENMQVNTRVMgPSAiLi4vLi4vLi4vLi4vLi4vY2xhc3NlcyI7CisKKyNHZXRPcHRpb25zKCdkaXI9cycgPT4gXCRESVIsCisjICAgICAgICAgICAnaWQ9cycgPT4gXCRJRCwKKyMgICAgICAgICAgICc8PicgPT4gXCZ1c2FnZSkgfHwgZGllOworCisjdXNhZ2UoKSBpZiAoQEFSR1YpOworCisjJElEID1+IHMvLS9fLzsKK2lmICghIC1kICRESVIpIHsKKyAgICBwcmludCBTVERFUlIgIiRESVIgaXMgbm90IGEgZGlyZWN0b3J5XG4iOworICAgIHVzYWdlKCk7Cit9CisKKyNzdWIgdXNhZ2UgeworIyAgICBteSAkbWUgPSAkMDsKKyMgICAgJG1lID1+IHN8LitbL1xcXXx8OworIyAgICBwcmludCAiVXNhZ2U6ICRtZSBbLWRpciA8ZGlyPl0gWy1pZCA8aWQ+XVxuIjsKKyMgICAgcHJpbnQgIiAtLWRpciA8ZGlyPiBTcGVjaWZ5IHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGVcbiI7CisjICAgIHByaW50ICIgICAgICAgICAgICAgVHJhbnNsaXRlcmF0b3JfKi50eHQgZmlsZXNcbiI7CisjICAgIHByaW50ICIgLS1pZCA8aWQ+ICAgU3BlY2lmeSBhIHNpbmdsZSBJRCB0byB0cmFuc2Zvcm0sIGUuZy5cbiI7CisjICAgIHByaW50ICIgICAgICAgICAgICAgRnVsbHdpZHRoLUhhbGZ3aWR0aFxuIjsKKyMgICAgZGllOworI30KKworY29udmVydEluZGV4KCk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgQ29udmVydCB0aGUgaW5kZXggZmlsZSBmcm9tIEphdmEgdG8gQyBmb3JtYXQKKyMgQXNzdW1lIGxpbmVzIGFyZSBvZiB0aGUgZm9ybToKKyMgICA8SUQ+OmFsaWFzOjxGSUxURVI+OzxSRU1BSU5ERVI+CisjIDxSRU1BSU5ERVI+IGNhbiBiZQorIyAgIExvd2VyO05GWDsuLi4KKyMgICBORlg7TG93ZXI7Li4uCisjICAgTkZYOy4uLgorc3ViIGNvbnZlcnRJbmRleCB7CisgICAgJElOID0gIlRyYW5zbGl0ZXJhdG9yX2luZGV4LnR4dCI7CisgICAgJE9VVCA9ICIkSU4ubmV3IjsKKyAgICBvcGVuKElOLCAiJERJUi8kSU4iKSBvciBkaWU7CisgICAgb3BlbihPVVQsICI+JERJUi8kT1VUIikgb3IgZGllOworICAgIAorICAgIHdoaWxlICg8SU4+KSB7CisgICAgICAgICMgTG9vayBmb3IgbGluZXMgdGhhdCBhcmUgYWxpYXNlcyB3aXRoIE5GKgorICAgICAgICBpZiAoL14oW146XSspOmFsaWFzOihcWy4rPyk7XHMqKChORlteXHNdKj8pXHMqOy4rKSQvaSkgeworICAgICAgICAgICAgbXkgJGlkID0gJDE7CisgICAgICAgICAgICBteSAkb2xkc2V0ID0gJDI7CisgICAgICAgICAgICBteSAkcmVtYWluZGVyID0gJDM7CisgICAgICAgICAgICBteSAkTkZYRCA9ICQ0OworICAgICAgICAgICAgbXkgJGxvd2VyID0gJyc7CisgICAgICAgICAgICAjIENoZWNrIGZvciBMb3dlcgorICAgICAgICAgICAgIyBJZiBpdCBjb21lcyBiZWZvcmUgTkYqIHRoZW4gYWRqdXN0IGFjY29yZGluZ2x5CisgICAgICAgICAgICBpZiAoL14oW146XSspOmFsaWFzOihcWy4rPyk7XHMqKExvd2VyXHMqOy4rKSQvaSkgeworICAgICAgICAgICAgICAgICRsb3dlciA9ICdsb3dlcic7CisgICAgICAgICAgICAgICAgaWYgKGxlbmd0aCgkMikgPCBsZW5ndGgoJG9sZHNldCkpIHsKKyAgICAgICAgICAgICAgICAgICAgJG9sZHNldCA9ICQyOworICAgICAgICAgICAgICAgICAgICAkcmVtYWluZGVyID0gJDM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcHJpbnQgU1RERVJSICIkaWQgJE5GWEQgJGxvd2VyXG4iOworICAgICAgICAgICAgbXkgJHNldCA9IGdldFNvdXJjZVNldCgkaWQsICRORlhELCAkbG93ZXIpOworICAgICAgICAgICAgJF8gPSAiJGlkOmFsaWFzOiRzZXQ7JHJlbWFpbmRlclxuIjsKKyAgICAgICAgfQorICAgICAgICBwcmludCBPVVQ7CisgICAgfQorCisgICAgY2xvc2UoSU4pOworICAgIGNsb3NlKE9VVCk7CisgICAgcHJpbnQgU1RERVJSICJXcm90ZSAkRElSLyRPVVRcbiI7Cit9CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgR2V0IHRoZSBzb3VyY2Ugc2V0IChjYWxsIG91dCB0byBKYXZhKSwgb3B0aW9uYWxseSB3aXRoIGEgY2xvc3VyZS4KK3N1YiBnZXRTb3VyY2VTZXQgeworICAgIG15ICRJRCA9IHNoaWZ0OworICAgIG15ICRORlhEID0gc2hpZnQ7CisgICAgbXkgJGxvd2VyID0gc2hpZnQ7CisgICAgbXkgJHNldCA9IGBqYXZhIC1jbGFzc3BhdGggJENMQVNTRVMgY29tLmlibS50b29scy50cmFuc2xpdC5nZW5JbmRleEZpbHRlcnMgJElEICRORlhEICRsb3dlcmA7CisgICAgY2hvbXAoJHNldCk7CisgICAgJHNldDsKK30KKworX19FTkRfXworOmVuZG9mcGVybApkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL3RyYW5zbGl0L2dlbkluZGV4RmlsdGVycy5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL3RyYW5zbGl0L2dlbkluZGV4RmlsdGVycy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjRiOWNiZTUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvdHJhbnNsaXQvZ2VuSW5kZXhGaWx0ZXJzLmphdmEKQEAgLTAsMCArMSw3MSBAQAorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICBDb3B5cmlnaHQgKGMpIDIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyogICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICBEYXRlICAgICAgICBOYW1lICAgICAgICBEZXNjcmlwdGlvbgorKiAgIDExLzI5LzIwMDEgIGFsaXUgICAgICAgIENyZWF0aW9uLgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuZGV2LnRvb2wudHJhbnNsaXQ7CitpbXBvcnQgY29tLmlibS5pY3UubGFuZy4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuKjsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ltcG9ydCBqYXZhLmlvLio7CisKKy8qKgorICogQWRqdW5jdCBjbGFzcyB0byBnZXRJbmRleEZpbHRlcnMuYmF0LiAgSnVzdCBnZW5lcmF0ZXMgc291cmNlIHNldHMKKyAqIGFuZCB0aGVpciBjbG9zdXJlcy4KKyAqCisgKiBVc2FnZTogSUQgWyBORkR8TkZLRCBbbG93ZXJdIF0KKyAqCisgKiAgIGphdmEgLWNsYXNzcGF0aCBjbGFzc2VzIGNvbS5pYm0uaWN1LmRldi50b29sLnRyYW5zbGl0LmdlbkluZGV4RmlsdGVycworICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXRpbi1HcmVlayBORkQgbG93ZXIKKyAqCisgKiBUaGUgJ05GRCd8J05GS0QnIGFuZCAnbG93ZXInIGFyZ3MgYXJlIG9wdGlvbmFsLCBidXQgJ2xvd2VyJyBjYW4KKyAqIG9ubHkgYmUgc3BlY2lmaWVkIGlmICdORkQnIG9yICdORktEJyBpcy4KKyAqCisgKiBETyBOT1QgQ0hBTkdFIE9VVFBVVCBGT1JNQVQuICBUaGlzIHRvb2wncyBvdXRwdXQgaXMgcmVhZCBieSBhIFBlcmwKKyAqIHNjcmlwdC4KKyAqLworcHVibGljIGNsYXNzIGdlbkluZGV4RmlsdGVycyB7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBOb3JtYWxpemVyLk1vZGUgbSA9IE5vcm1hbGl6ZXIuTk9ORTsKKyAgICAgICAgYm9vbGVhbiBsb3dlckZpcnN0ID0gZmFsc2U7CisgICAgICAgIGlmIChhcmdzLmxlbmd0aCA+PSAyKSB7CisgICAgICAgICAgICBpZiAoYXJnc1sxXS5lcXVhbHNJZ25vcmVDYXNlKCJORkQiKSkgeworICAgICAgICAgICAgICAgIG0gPSBOb3JtYWxpemVyLk5GRDsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoYXJnc1sxXS5lcXVhbHNJZ25vcmVDYXNlKCJORktEIikpIHsKKyAgICAgICAgICAgICAgICBtID0gTm9ybWFsaXplci5ORktEOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB1c2FnZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChhcmdzLmxlbmd0aCA+PSAzKSB7CisgICAgICAgICAgICBpZiAoYXJnc1syXS5lcXVhbHNJZ25vcmVDYXNlKCJsb3dlciIpKSB7CisgICAgICAgICAgICAgICAgbG93ZXJGaXJzdCA9IHRydWU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHVzYWdlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID4gMykgeworICAgICAgICAgICAgdXNhZ2UoKTsKKyAgICAgICAgfQorICAgICAgICBzaG93U291cmNlU2V0KGFyZ3NbMF0sIG0sIGxvd2VyRmlyc3QpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHNob3dTb3VyY2VTZXQoU3RyaW5nIElELCBOb3JtYWxpemVyLk1vZGUgbSwgYm9vbGVhbiBsb3dlckZpcnN0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBUcmFuc2xpdGVyYXRvciB0ID0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoSUQpOworICAgICAgICBVbmljb2RlU2V0IHNvdXJjZVNldCA9IHQuZ2V0U291cmNlU2V0KCk7CisgICAgICAgIGlmIChtICE9IE5vcm1hbGl6ZXIuTk9ORSB8fCBsb3dlckZpcnN0KSB7CisgICAgICAgICAgICBVbmljb2RlU2V0Q2xvc3VyZS5jbG9zZShzb3VyY2VTZXQsIG0sIGxvd2VyRmlyc3QpOworICAgICAgICB9CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihzb3VyY2VTZXQudG9QYXR0ZXJuKHRydWUpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCB1c2FnZSgpIHsKKyAgICAgICAgU3lzdGVtLmVyci5wcmludGxuKCJVc2FnZTogSUQgWyBORkR8TkZLRCBbbG93ZXJdIF0iKTsKKyAgICAgICAgU3lzdGVtLmV4aXQoMSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL3RyYW5zbGl0L2luZGljLmJhdCBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC90cmFuc2xpdC9pbmRpYy5iYXQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZWM4MTY1ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC90cmFuc2xpdC9pbmRpYy5iYXQKQEAgLTAsMCArMSwyNyBAQAorUkVNIC8qKgorUkVNICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK1JFTSAqIENvcHlyaWdodCAoQykgMjAwMi0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCitSRU0gKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorUkVNICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK1JFTSAqCitSRU0gKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvdHJhbnNsaXQvaW5kaWMuYmF0LHYgJAorUkVNICogJERhdGU6IDIwMDIvMTIvMTggMDM6NTY6NDEgJAorUkVNICogJFJldmlzaW9uOiAxLjIgJAorUkVNICoKK1JFTSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitSRU0gKi8KKworQGVjaG8gb2ZmCitSRU0gVGhpcyBzY3JpcHQgaXMgYSBXaW5kb3dzIGxhdW5jaGVyIGZvciB0aGUgaW5kaWMucGwgc2NyaXB0LiAgRm9yIHRoaXMKK1JFTSB0byB3b3JrLCB0aGUgcGVybCBleGVjdXRhYmxlIG11c3QgYmUgb24gdGhlIHBhdGguICBXZSByZWNvbW1lbmQKK1JFTSB0aGUgQWN0aXZlU3RhdGUgYnVpbGQ7IHNlZSBodHRwOi8vd3d3LmFjdGl2ZXN0YXRlLmNvbS4gIFNlZSB0aGUKK1JFTSB0ei5wbCBzY3JpcHQgaXRzZWxmIGZvciBtb3JlIGRvY3VtZW50YXRpb24uCisKK2lmICIlT1MlIiA9PSAiV2luZG93c19OVCIgZ290byBXaW5OVAorcGVybCAtdyAteCBpbmRpYy5wbCAlMSAlMiAlMyAlNCAlNSAlNiAlNyAlOCAlOQorZ290byBlbmQKKzpXaW5OVAorcGVybCAtdyAteCBpbmRpYy5wbCAlKgoraWYgTk9UICIlQ09NU1BFQyUiID09ICIlU3lzdGVtUm9vdCVcc3lzdGVtMzJcY21kLmV4ZSIgZ290byBlbmQKK2lmICVlcnJvcmxldmVsJSA9PSA5MDA5IGVjaG8gWW91IGRvIG5vdCBoYXZlIFBlcmwgaW4geW91ciBQQVRILgorOmVuZApkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL3RyYW5zbGl0L2luZGljLnBsIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL3RyYW5zbGl0L2luZGljLnBsCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjQ1ZWVlMjIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvdHJhbnNsaXQvaW5kaWMucGwKQEAgLTAsMCArMSw2NjggQEAKKyMvKioKKyMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIyAqIENvcHlyaWdodCAoQykgMjAwMC0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisjICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIyAqCisjICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL3RyYW5zbGl0L2luZGljLnBsLHYgJAorIyAqICREYXRlOiAyMDAyLzEyLzE4IDAzOjU2OjQxICQKKyMgKiAkUmV2aXNpb246IDEuMiAkCisjICoKKyMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIyAqLworCisjIXBlcmwKKworIyBVc2FnZSAtICQwIDxyZW1hcCBmaWxlPgorIyAgZS5nLiAtIGluZGljIGluZGljLnR4dAorIyBUaGUgaW5wdXQgZmlsZSBzaG91bGQgYmUgYSBzdWJzZXQgb2YgdGhlIFVuaWNvZGUgZGF0YSBmaWxlIGNvbnRhaW5pbmcKKyMgdGhlIGJsb2NrcyBvZiBpbnRlcmVzdC4KKyMKKyMgVGhlIHJlbWFwIGZpbGUgc2hvdWxkIGhhdmUgbGluZXMgb2YgdGhlIGZvcm0KKyMgIlx1MEQwMT5cdTBEMDI7IgorIyBpbmNsdWRpbmcgdGhlIHF1b3Rlcy4gIFRoZXNlIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgc2F5aW5nIHRoYXQgdGhlCisjIHVuZGVmaW5lZCBjb2RlIHBvaW50IFUrRDAxIChkZXJpdmVkIHZpYSBtYXBwaW5nIGZyb20gSW50ZXJJbmRpYykKKyMgY2FuIGJlIHJlbWFwcGVkIHRvIFUrRDAyLgorIyAKKyMgVGhlIHB1cnBvc2Ugb2YgdGhpcyBzY3JpcHQgaXMgdG8gcHJvY2VzcyB0aGUgSW5kaWMgc2NyaXB0IGRhdGEgaW50bworIyBhIGZvcm0gdXNhYmxlIGJ5IHRoZSBJbmRpY1RyYW5zbGl0ZXJhdG9yLCB0aGF0IGlzLCB0aGUgSW5kaWMtSW5kaWMKKyMgdHJhbnNsaXRlcmF0b3IuICBUaGUgdHJhbnNsaXRlcmF0b3IgbmVlZHMgdHdvIHRoaW5nczogQSBtYXBwaW5nIG9mCisjIHRoZSBjb2RlIHBvaW50cyBpbiBjb21tb24sIGFuZCBhIGxpc3Qgb2YgdGhlIGV4Y2VwdGlvbnMuCisKKyMgQXNzdW1lIHdlIGFyZSBsb2NhdGVkIGluIGljdTRqL3NyYy9jb20vaWJtL3Rvb2xzL3RyYW5zbGl0Ly4KKyMgV2Ugd2FudCB0aGUgVW5pY29kZSBEQiBpbiBpY3U0ai9zcmMvZGF0YS91bmljb2RlLy4KKyRVTklDT0RFX0RCID0gIi4uLy4uLy4uLy4uL2RhdGEvdW5pY29kZS9Vbmljb2RlRGF0YS50eHQiOworJEVYQ0VQVElPTlNfRklMRSA9IHNoaWZ0OworCisjIEFzc3VtZSB3ZSBhcmUgbG9jYXRlZCBpbiBpY3U0ai9zcmMvY29tL2libS90b29scy90cmFuc2xpdC8uCisjIFdlIHdhbnQgdG8gb3V0cHV0IGZpbGVzIHRvIGljdTRqL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzLy4KKyMgT3V0cHV0IGRpcmVjdG9yeQorJE9VVERJUiA9ICIuLi8uLi90ZXh0L3Jlc291cmNlcyI7CisKKyMgVGhlIHRlbXBsYXRlIGZpbGUgc2hvdWxkIGNvbnRhaW4gamF2YSBjb2RlIHRoYXQgY2FuIGJlIHVzZWQKKyMgdG8gZ2VuZXJhdGUgUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3IgcmVzb3VyY2UgZmlsZXMuICBUaGUgdGVtcGxhdGUKKyMgc2hvdWxkIGNvbnRhaW4gdGhlIGZvbGxvd2luZyBlbWJlZGRlZCBzeW1ib2xzLCB3aGljaCB0aGlzIHNjcmlwdAorIyB3aWxsIHJlcGxhY2U6CisjICRUT09MIC0gbmFtZSBvZiBnZW5lcmF0aW5nIHRvb2wKKyMgJERBVEUgLSBkYXRlIG9mIGdlbmVyYXRpb24KKyMgJFNDUklQVEZST00gLSBuYW1lIG9mIHNvdXJjZSBzY3JpcHQKKyMgJFNDUklQVFRPIC0gbmFtZSBvZiB0YXJnZXQgc2NyaXB0CisjICRSVUxFUyAtIHJ1bGVzCiskUkJUX1RFTVBMQVRFID0gJ3JidFRlbXBsYXRlLnR4dCc7CisKKyMgTmFtZSBvZiB0aGlzIHRvb2wgaW4gZ2VuZXJhdGVkIFJCVCBmaWxlcworJFJCVF9HRU5fVE9PTCA9ICdpY3U0ai9zcmMvY29tL2libS90b29scy90cmFuc2xpdC9pbmRpYy5wbCc7CisKKyREVU1QID0gMDsgIyBJZiAxLCBkdW1wIG91dCBpbnRlcm5hbCBkYXRhCisKKyRET19IRVVSSVNUSUNfUkVNQVAgPSAwOyAjIElmIDEsIGRvIGF1dG9tYXRpYyBoZXVyaXN0aWMgcmVtYXBwaW5nCiskRE9fREVDT01QX1JFTUFQID0gMDsgIyBJZiAxLCBkbyBkZWNvbXAgcmVtYXBwaW5nCisKK29wZW4oVU5JQ09ERV9EQik7Cit3aGlsZSAoPFVOSUNPREVfREI+KSB7CisgICAgbmV4dCBpZiAobXxeMFswLThdfCk7ICMgU2tpcCB1cCB0byBEZXZhbmFnYXJpIGJsb2NrICgwOTAwKQorICAgIGxhc3QgaWYgKG18XjBEWzgtRl18aSk7ICMgQmFpbCBvdXQgYWZ0ZXIgTWFsYXlhbSBibG9jayAoMEQwMCkKKyAgICAjIDBEMzk7TUFMQVlBTEFNIExFVFRFUiBIQTtMbzswO0w7Ozs7O047Ozs7OworICAgIG15IEBkYXRhID0gc3BsaXQoLzsvKTsKKyAgICBteSAkZnVsbENvZGUgPSBoZXgoJGRhdGFbMF0pOyAjIGUuZy4sIDB4MDkzRgorICAgIG15ICRjb2RlID0gJGZ1bGxDb2RlICYgMHg3RjsgIyBlLmcuLCAweDNGCisgICAgbXkgKCRzY3JpcHQsICRuYW1lKSA9ICgkZGF0YVsxXSA9fiAvKFx3KylccysoLispLyk7CisgICAgZGllICJDYW4ndCBwYXJzZSAkXyIgdW5sZXNzICgkbmFtZSk7CisgICAgIyBlLmcuLCAkY29kZS8kc2NyaXB0LyRuYW1lID0gM0YvTUFMQVlBTEFNL1ZPV0VMIFNJR04gSQorCisgICAgIyBUaXRsZWNhc2UgdGhlIHNjcmlwdAorICAgICRzY3JpcHQgPSB1Y2ZpcnN0KGxjKCRzY3JpcHQpKTsKKworICAgICMgRml4IGEgY291cGxlIGluY29uc2lzdGVuY2llcyBpbiB0aGUgMy4wIGRhdGEKKyAgICAjIFJFVklTSVQ6IElzIHRoaXMgb2theSB0byBkbz8KKyAgICBpZiAoJERPX0hFVVJJU1RJQ19SRU1BUCkgeworICAgICAgICBpZiAoJHNjcmlwdCBlcSAnR3VqYXJhdGknICYmICRjb2RlID49IDUgJiYgJGNvZGUgPD0gMHgxNCkgeworICAgICAgICAgICAgJG5hbWUgPX4gcy9eVk9XRUwvTEVUVEVSLzsKKyAgICAgICAgfQorICAgIH0KKworICAgICMgS2VlcCB0cmFjayBvZiBhbGwgc2NyaXB0IG5hbWVzIHdlIGVuY291bnRlci4gIFdlIGFsc28gbm90ZSB0aGUKKyAgICAjIGJhc2Ugb2YgdGhlIGJsb2NrLgorICAgIG15ICRiYXNlID0gJGZ1bGxDb2RlICYgfjB4N0Y7ICMgZS5nLiwgMHg5MDA7CisgICAgaWYgKGV4aXN0cyAkU0NSSVBUX1RPX0JBU0V7JHNjcmlwdH0pIHsKKyAgICAgICAgZGllICJTY3JpcHQgYmFzZSBtaXNtYXRjaCBmb3IgJHNjcmlwdDogJGJhc2UgdnMuICRTQ1JJUFRfVE9fQkFTRXskc2NyaXB0fSIKKyAgICAgICAgICAgIGlmICgkU0NSSVBUX1RPX0JBU0V7JHNjcmlwdH0gbmUgJGJhc2UpOworICAgIH0gZWxzZSB7CisgICAgICAgICRTQ1JJUFRfVE9fQkFTRXskc2NyaXB0fSA9ICRiYXNlOworICAgIH0KKworICAgICMgQnVpbGQgdXAgYSBtYXBwaW5nIGJ5IG5hbWUuICBGb3IgZWFjaCBuYW1lLCBrZWVwIGEgaGFzaCBrZXllZCBieQorICAgICMgY29kZSBwb2ludC4gIEZvciBlYWNoIGNvZGUgcG9pbnQsIGtlZXAgYW4gYXJyYXkgb2Ygc2NyaXB0IG5hbWVzLgorICAgICMgQWxzbyBrZWVwIGEgdG90YWwgdXNlIGNvdW50IGZvciBlYWNoIG5hbWUuCisgICAgcHVzaCBAeyROQU1FX0NPREVfVE9fU0NSSVBUU3skbmFtZX17JGNvZGV9fSwgJHNjcmlwdDsKKyAgICArKyROQU1FX0NPREVfVE9fU0NSSVBUU3skbmFtZX17Y291bnR9OworCisgICAgIyBCdWlsZCBhIG1hcCB0aGF0IGxvb2tzIGxpa2UgdGhpczoKKyAgICAjICRTQ1JJUFRfTkFNRV9UT19DT0RFezxzY3JpcHQ+fXs8bmFtZT59ID0gPGNvZGU+CisgICAgIyBvciB1bmRlZiBpZiB0aGVyZSBpcyBubyBtYXBwaW5nLgorICAgICRTQ1JJUFRfTkFNRV9UT19DT0RFeyRzY3JpcHR9eyRuYW1lfSA9ICRjb2RlOworCisgICAgIyBCdWlsZCBhIG1hcCB0aGF0IGxvb2tzIGxpa2UgdGhpczoKKyAgICAkU0NSSVBUX0NPREVfVE9fTkFNRXskc2NyaXB0fXskY29kZX0gPSAkbmFtZTsKKworICAgICMgQW5kIGEgbWFwIGZyb20gdGhlIGZ1bGxDb2RlIHBvaW50IHRvIHRoZSBuYW1lCisgICAgJEZVTExDT0RFX1RPX05BTUV7JGZ1bGxDb2RlfSA9ICRuYW1lOworCisgICAgIyBNYXAgY29kZSAoMC4uN0YpIHRvIG5hbWUuICBUaGlzIGlzIHVzdWFsbHkgYSAxLTEgbWFwcGluZywgYnV0CisgICAgIyBpcyAxLW4gaW4gYSBmZXcgY2FzZXMuCisgICAgaWYgKGV4aXN0cyAkQ09ERV9UT19OQU1FeyRjb2RlfSkgeworICAgICAgICBpZiAoJG5hbWUgbmUgJENPREVfVE9fTkFNRXskY29kZX0pIHsKKyAgICAgICAgICAgICMgRm9yIG11bHRpcGxlIG5hbWVzIG9uIGEgY29kZSBvZmZzZXQsIHVzZSB0aGUgZm9ybWF0CisgICAgICAgICAgICAjIChhL2IpLCAoYS9iL2MpLCBldGMuCisgICAgICAgICAgICBsb2NhbCAkXyA9ICRDT0RFX1RPX05BTUV7JGNvZGV9OworICAgICAgICAgICAgaWYgKG18XlwofCkgeworICAgICAgICAgICAgICAgIGlmICghbXxbXChcKS9dJG5hbWVbXChcKS9dfCkgeworICAgICAgICAgICAgICAgICAgICBzfFwpJHwvJG5hbWVcKXw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAkXyA9ICIoJF8vJG5hbWUpIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICRDT0RFX1RPX05BTUV7JGNvZGV9ID0gJF87CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICAkQ09ERV9UT19OQU1FeyRjb2RlfSA9ICRuYW1lOworICAgIH0KK30KK2Nsb3NlKFVOSUNPREVfREIpOworCisjIFJlYWQgYW5kIHBhcnNlIHRoZSBtYW51YWwgcmVtYXBwaW5nIGZpbGUuICBUaGlzIGNvbnRhaW5zIGxpbmVzCisjIG9mIHRoZSBmb3JtOgorCisjIHwiXHUwOTU2Plx1MDk0ODsiICAvLyBBSSBMZW5ndGggTWFyayAtPiBEZXZhbmFnYXJpIFZvd2VsIFNpZ24gQUkgCisKKyMgVGhlIGxlZnQgaGFuZCBzaWRlIGNvbnRhaW5zIGEgbm9uLWV4aXN0ZW50IGZ1bGwgY29kZSB2YWx1ZS4gIEl0CisjIHNob3VsZCBiZSBhIHNpbmdsZSB2YWx1ZS4gIFRoZSByaWdodCBoYW5kIHNpZGUgY29udGFpbnMgb25lIG9yIG1vcmUKKyMgcmVhbCBmdWxsIGNvZGUgdmFsdWVzLiAgVGhlIGlkZWEgaXMgdGhhdCB3aGVuIGEgbWFwcGluZyBmcm9tIGFub3RoZXIKKyMgc2NyaXB0IGVuZHMgdXAgYXQgdGhlIG5vbi1leGlzdGVudCBjb2RlIHBvaW50IG9uIHRoZSBsZWZ0LCB0aGUKKyMgc2VxdWVuY2Ugb24gdGhlIHJpZ2h0IHNob3VsZCBiZSBzdWJzdGl0dXRlZC4gIEluIHRoaXMgZXhhbXBsZSwKKyMgRGV2YW5hZ2FyaSBoYXMgbm8gQUkgTGVuZ3RoIE1hcmsuICBTbywgaWYgdHJhbnNsaXRlcmF0aW5nIGZyb20KKyMgT3JpeWEsIHRoZW4gdGhlIGNoYXJhY3RlciAwQjU2IChPcml5YSBBSSBMZW5ndGggTWFyaykgd2lsbCByZW1hcCB0bworIyB0aGUgbm9uLWV4aXN0ZW50IDA5NTYsIGFuZCB0aGF0IHJlbWFwcyB0byAwOTQ4LCBvdXIgY2hvc2VuCisjIERldmFuYWdhcmkgZXF1aXZhbGVudC4gIEZvciBvdXIgcHVycG9zZXMsIHRoZSBsZWZ0IGhhbmQgc2lkZSBzaG91bGQKKyMgYmUgdGFrZW4gdG8gbWVhbiBpdHMgZXF1aXZhbGVudCBwb2ludCBpbiB0aGUgSW50ZXJJbmRpYyByYW5nZS4gIEluCisjIHRoaXMgZXhhbXBsZSwgd2hhdCBpdCByZWFsbHkgc2F5cyBpcyBFMDU2PjA5NDggaW4gdGhlCisjIEludGVySW5kaWMtRGV2YW5hZ2FyaSB0cmFuc2xpdGVyYXRvci4KKworaWYgKCRFWENFUFRJT05TX0ZJTEUpIHsKKyAgICBvcGVuKEVYQ0VQVElPTlNfRklMRSkgb3IgZGllOworICAgIHdoaWxlICg8RVhDRVBUSU9OU19GSUxFPikgeworICAgICAgICBpZiAobXxeXHMqXCIoW15cIl0qPylcInwpIHsKKyAgICAgICAgICAgIG15ICRsaW5lID0gJF87CisgICAgICAgICAgICAkXyA9ICQxOworICAgICAgICAgICAgaWYgKC9eKC4qKT4oLiopOyQvKSB7CisgICAgICAgICAgICAgICAgbXkgKCRyYXdGcm9tLCAkcmF3VG8pID0gKCQxLCAkMik7CisgICAgICAgICAgICAgICAgbXkgQGZyb20gPSBwYXJzZVVuaWNvZGVFc2NhcGUoJHJhd0Zyb20pOworICAgICAgICAgICAgICAgIG15IEB0byA9IHBhcnNlVW5pY29kZUVzY2FwZSgkcmF3VG8pOworICAgICAgICAgICAgICAgIG15ICRmcm9tID0gaGV4QXJyYXkoQGZyb20pOworICAgICAgICAgICAgICAgICMgU29tZSBlbnRyaWVzIGxvb2sgbGlrZSB0aGlzOgorICAgICAgICAgICAgICAgICMgfCJcdTA5NTU+XHUwOTU1OyIKKyAgICAgICAgICAgICAgICAjIHRoZXNlIGRvIG5vdGhpbmc7IGlnbm9yZSB0aGVtLgorICAgICAgICAgICAgICAgIGlmIChpbnRBcnJheXNFcXVhbChcQGZyb20sIFxAdG8pKSB7CisgICAgICAgICAgICAgICAgICAgICNwcmludCBTVERFUlIgIklnbm9yaW5nIE5PT1AgcmVtYXAgb2YgJGZyb21cbiI7CisgICAgICAgICAgICAgICAgfSBlbHNpZiAoZXhpc3RzICRFWENFUFRJT05TeyRmcm9tfSkgeworICAgICAgICAgICAgICAgICAgICBwcmludCBTVERFUlIgIkVSUk9SIGluICRFWENFUFRJT05TX0ZJTEUgLSBEdXBsaWNhdGUgcmVtYXAgZW50cmllcyBmb3IgJGZyb21cbiI7CisgICAgICAgICAgICAgICAgfSBlbHNpZiAoc2NhbGFyIEBmcm9tID4gMSkgeworICAgICAgICAgICAgICAgICAgICBwcmludCBTVERFUlIgIkVSUk9SIGluICRFWENFUFRJT05TX0ZJTEUgLSBJZ25vcmluZyBtdWx0aWNoYXIgcmVtYXA6ICIsIGhleEFycmF5KEBmcm9tKSwgIi0+IiwgaGV4QXJyYXkoQHRvKSwgIlxuIjsgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICMgQ2hlY2sgdGhpcyBmb3IgdmFsaWRpdHkuICBGdWxsIGNvZGUgb24gdGhlIGxlZnQKKyAgICAgICAgICAgICAgICAgICAgIyBzaG91bGQgTk9UIGV4aXN0LiAgRnVsbCBjb2RlIHNlcSBvbiB0aGUgcmlnaHQgc2hvdWxkLgorICAgICAgICAgICAgICAgICAgICBpZiAoZXhpc3RzICRGVUxMQ09ERV9UT19OQU1FeyRmcm9tWzBdfSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgU1RERVJSICJFUlJPUiBpbiAkRVhDRVBUSU9OU19GSUxFIC0gSW52YWxpZCByZW1hcDsgbGVmdCBzaWRlIGRlZmluZWQ6ICIsIGhleEFycmF5KEBmcm9tKSwgIi0+IiwgaGV4QXJyYXkoQHRvKSwgIlxuIjsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoZ3JlcCghIGV4aXN0cyAkRlVMTENPREVfVE9fTkFNRXskX30sIEB0bykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50IFNUREVSUiAiRVJST1IgaW4gJEVYQ0VQVElPTlNfRklMRSAtIEludmFsaWQgcmVtYXA7IHJpZ2h0IHNpZGUgdW5kZWZpbmVkOiAiLCBoZXhBcnJheShAZnJvbSksICItPiIsIGhleEFycmF5KEB0byksICJcbiI7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAkRVhDRVBUSU9OU3skZnJvbVswXX0gPSBcQHRvOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsgZGllICJFUlJPUiBpbiAkRVhDRVBUSU9OU19GSUxFIC0gQ2FuJ3QgcGFyc2UgXCIkX1wiIGluIGxpbmUgJGxpbmUiOyB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2xvc2UoRVhDRVBUSU9OU19GSUxFKTsKKyAgICBwcmludCBTVERFUlIgIiRFWENFUFRJT05TX0ZJTEU6IExvYWRlZCAiLCBzY2FsYXIga2V5cyAlRVhDRVBUSU9OUywgIiByZW1hcHBpbmdzXG4iOworfQorCitpZiAoJERPX0RFQ09NUF9SRU1BUCkgeworICAgICMgUmVhZCB0aGUgTmFtZXNMaXN0LnR4dCBmaWxlLiAgVGhpcyBjb250YWlucyBkZWNvbXBvc2l0aW9uIGRhdGEuCisgICAgIyBHYXRoZXIgdGhlc2UgaW50byAlREVDT01QLCB3aGljaCBtYXBzIGEgbmFtZSB0byBuMS5uMi4uLiwgd2hlcmUgbjEKKyAgICAjIGV0Yy4gYXJlIGRlY29tcG9zZWQgbmFtZXMuICBFLmcuICRERUNPTVB7J0xFVFRFUiBSUkEnfSAtPiAnTEVUVEVSCisgICAgIyBSQS5TSUdOIE5VS1RBJy4gIFRoZXJlIG1heSBiZSBkaWZmZXJlbnQgbWFwcGluZ3MgaW4gZGlmZmVyZW50IHNjcmlwdAorICAgICMgYmxvY2tzIChMRVRURVIgUlJBIGlzIG1hcHBlZCBkaWZmZXJlbnRseSBpbiBEZXZhbmFnYXJpIGFuZCBCZW5nYWxpKSwKKyAgICAjIGluIHdoaWNoIGNhc2UgdGhlIG5hbWUgZ29lcyBpbnRvICVERUNPTVBfTUlTTUFUQ0gsIGFuZCBpcyByZW1vdmVkCisgICAgIyBmcm9tICVERUNPTVAuCisgICAgJE5BTUVTID0gIk5hbWVzTGlzdC50eHQiOworICAgIG9wZW4oTkFNRVMpOworICAgIHdoaWxlICg8TkFNRVM+KSB7CisgICAgICAgICMgU2tpcCB0byBzdGFydCBvZiBERVZBTkFHQVJJIGJsb2NrCisgICAgICAgIGxhc3QgaWYgKC9eXEBcQFxzKzA5MDAvKTsKKyAgICB9CisgICAgd2hpbGUgKDxOQU1FUz4pIHsKKyAgICAgICAgIyBDb250aW51ZSB1bnRpbCBzdGFydCBvZiBTSU5IQUxBIGJsb2NrCisgICAgICAgIGxhc3QgaWYgKC9eXEBcQFxzKzBEODAvKTsKKyAgICAgICAgaWYgKC9eKFswLTlBLVpdezR9KS9pKSB7CisgICAgICAgICAgICAkY29kZSA9ICQxOworICAgICAgICB9IGVsc2lmICgvXlxzKzpccyooLispLykgeworICAgICAgICAgICAgIyBXZSd2ZSBmb3VuZCBhIG1hcHBpbmcgb2YgdGhlIGZvcm06CisgICAgICAgICAgICAjIDA5MjkgICAgREVWQU5BR0FSSSBMRVRURVIgTk5OQQorICAgICAgICAgICAgIyAgICAgKiBmb3IgdHJhbnNjcmliaW5nIERyYXZpZGlhbiBhbHZlb2xhciBuCisgICAgICAgICAgICAjICAgICA6IDA5MjggMDkzQworICAgICAgICAgICAgbXkgJGZyb20gPSAkRlVMTENPREVfVE9fTkFNRXtoZXgoJGNvZGUpfTsKKyAgICAgICAgICAgIG15IEB0byA9IG1hcCgkRlVMTENPREVfVE9fTkFNRXtoZXgoJF8pfSwgc3BsaXQoL1xzKy8sICQxKSk7CisgICAgICAgICAgICBpZiAoZXhpc3RzICRERUNPTVB7JGZyb219KSB7CisgICAgICAgICAgICAgICAgbXkgJGFyZWYgPSAkREVDT01QeyRmcm9tfTsKKyAgICAgICAgICAgICAgICBpZiAoam9pbigiLiIsIEAkYXJlZikgbmUgam9pbigiLiIsIEB0bykpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQgU1RERVJSICJFUlJPUjogRGVjb21wIG1pc21hdGNoIGZvciAkZnJvbVxuIjsKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQgU1RERVJSICIgICAgIDogJGZyb20gPSAiLCBqb2luKCIuIiwgQCRhcmVmKSwgIlxuIjsKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQgU1RERVJSICIgICAgIDogJGZyb20gPSAiLCBqb2luKCIuIiwgQHRvKSwgIlxuIjsKKyAgICAgICAgICAgICAgICAgICAgJERFQ09NUF9NSVNNQVRDSHskZnJvbX0gPSAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgJERFQ09NUHskZnJvbX0gPSBcQHRvOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNsb3NlKE5BTUVTKTsKKyAgICAjIFJlbW92ZSBtaXNtYXRjaGVzCisgICAgZm9yZWFjaCAoa2V5cyAlREVDT01QX01JU01BVENIKSB7CisgICAgICAgIGRlbGV0ZSAkREVDT01QeyRffTsKKyAgICB9CisgICAgaWYgKCREVU1QKSB7CisgICAgICAgIGZvcmVhY2ggKGtleXMgJURFQ09NUCkgeworICAgICAgICAgICAgcHJpbnQgIiRfID0gIiwgam9pbigiICsgIiwgQHskREVDT01QeyRffX0pLCAiXG4iOworICAgICAgICB9CisgICAgfQorfQorCisjIENvdW50IHRoZSB0b3RhbCBudW1iZXIgb2Ygc2NyaXB0cworCiskU0NSSVBUX0NPVU5UID0gc2NhbGFyIGtleXMgJVNDUklQVF9UT19CQVNFOworI3ByaW50IGpvaW4oIlxuIiwgc29ydCBrZXlzICVTQ1JJUFRfVE9fQkFTRSksICJcbiI7CisKKyMgRHVtcCBvdXQgdGhlICVOQU1FX0NPREVfVE9fU0NSSVBUUyBtYXAuCisKK2lmICgkRFVNUCkgeworICAgIHByaW50ICJcbkJZIE5BTUU6XG4iOworICAgIGZvcmVhY2ggbXkgJHBhc3MgKCgxLCAyKSkgeworICAgICAgICBwcmludCAiXG5CWSBOQU1FIC0gU0lOR0xFVE9OUzpcbiIgaWYgKCRwYXNzIGVxIDIpOworICAgICAgICBmb3JlYWNoIG15ICRuYW1lIChzb3J0IGtleXMgJU5BTUVfQ09ERV9UT19TQ1JJUFRTKSB7CisgICAgICAgICAgICBpZiAoJHBhc3MgZXEgMSkgeworICAgICAgICAgICAgICAgIG5leHQgaWYgKDEgPj0gJE5BTUVfQ09ERV9UT19TQ1JJUFRTeyRuYW1lfXtjb3VudH0pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBuZXh0IGlmICgxIDwgJE5BTUVfQ09ERV9UT19TQ1JJUFRTeyRuYW1lfXtjb3VudH0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHJpbnQgIiRuYW1lOiI7CisgICAgICAgICAgICBteSAkaHJlZiA9ICROQU1FX0NPREVfVE9fU0NSSVBUU3skbmFtZX07CisgICAgICAgICAgICBmb3JlYWNoIG15ICRjb2RlIChzb3J0IHskYSA8PT4gJGJ9IGtleXMgJSRocmVmKSB7CisgICAgICAgICAgICAgICAgbmV4dCBpZiAoJGNvZGUgZXEgJ2NvdW50Jyk7CisgICAgICAgICAgICAgICAgbXkgJGFyZWYgPSAkaHJlZi0+eyRjb2RlfTsKKyAgICAgICAgICAgICAgICBwcmludCAiICIsIGhleDIoJGNvZGUpLCAiICgiLCBmb3JtYXRTY3JpcHRMaXN0KCRhcmVmKSwgIikiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHJpbnQgIlxuIjsKKyAgICAgICAgfQorICAgIH0KK30KKworIyBDcmVhdGUgc29tZSB0cmFuc2xpdGVyYXRvcnMsIGJhc2VkIG9uIHRoZSBzY3JpcHRzIGFuZCB0aGUgJU5BTUVfQ09ERV9UT19TQ1JJUFRTCisjIG1hcC4gIE9ubHkgdXNlICVOQU1FX0NPREVfVE9fU0NSSVBUUyBlbnRyaWVzIHdpdGggYSBjb3VudCBvZiAyIG9yIG1vcmUsIHRoYXQgaXMsCisjIG5hbWVzIHRoYXQgb2NjdXIgaW4gdHdvIG9yIG1vcmUgc2NyaXB0cy4gIEZvciB0aG9zZSBzY3JpcHRzIHdoZXJlCisjIHRoZSBuYW1lcyBvY2N1ciwgbWFwIGJvdGggdXAgdG8gdGhlIEludGVySW5kaWMgcmFuZ2UsIGFuZCBkb3duIHRvCisjIHRoZSB0YXJnZXQgc2NyaXB0LgorCiskSU5URVJJTkRJQyA9IDB4RTAwMDsKKyRJTlRFUklORElDX0VYVFJBID0gMHhFMDgwOworJElOVEVSSU5ESUNfRVhUUkFfTkVYVCA9ICRJTlRFUklORElDX0VYVFJBOworCisjIEZvciBlYWNoIHNjcmlwdCwgY3JlYXRlIGEgaGFzaC4gIFRoZSBoYXNoIGhhcyBhIGtleSBmb3IgZWFjaAorIyBjb2RlIHBvaW50LCBlaXRoZXIgd2l0aGluIGl0cyBibG9jaywgb3IgaW4gdGhlIEludGVySW5kaWMgYmxvY2suCisjIHRoZSB2YWx1ZSBvZiB0aGUga2V5IGlzIHRoZSBtYXBwaW5nLgorCisjIFRoZSBzY3JpcHQgaGFzaGVzIGFyZSBuYW1lZCAlREVWQU5BR0FSSSwgZXRjLiwgYW5kIHJlZmVyZW5jZWQKKyMgd2l0aCBzeW1ib2xpYyByZWZzLgorCitAUkVNQVAgPSAoJ3MvXGJTSE9SVFxzKy8vaScsCisgICAgICAgICAgJ3MvXGJDQU5EUkFccysvL2knLAorICAgICAgICAgICdzL1xiUUEkL0tBL2knLAorICAgICAgICAgICdzL1xiS0hIQSQvS0hBL2knLAorICAgICAgICAgICdzL1xiR0hIQSQvR0EvaScsCisgICAgICAgICAgJ3MvXGJaQSQvSkEvaScsCisgICAgICAgICAgJ3MvXGJGQSQvUEhBL2knLAorICAgICAgICAgICdzL1xiVkEkL0JBL2knLAorICAgICAgICAgICdzL1xiTk5OQSQvTkEvaScsCisgICAgICAgICAgJ3MvXGJSUkEkL1JBL2knLAorICAgICAgICAgICdzL1xiTExMQSQvTExBL2knLAorICAgICAgICAgICdzL1xiTExMQSQvTEEvaScsCisgICAgICAgICAgJ3MvXGJMTEEkL0xBL2knLAorICAgICAgICAgICdzL15BKC4pIExFTkdUSCBNQVJLJC9WT1dFTCBTSUdOIEEkMS9pJywKKyAgICAgICAgICAncy9DQU5EUkFCSU5EVS9CSU5ESS9pJywKKyAgICAgICAgICAncy9CSU5ESS9DQU5EUkFCSU5EVS9pJywKKyAgICAgICAgICApOworCisjIERvIHRoaXMgc28gd2Ugc2VlIHplcm8gY291bnRzOgorZm9yZWFjaCBteSAkcmVtYXAgKEBSRU1BUCkgeyAkUkVNQVB7JHJlbWFwfSA9IDA7IH0KKworIyBUaGlzIGxvb3AgaXRlcmF0ZXMgb3ZlciB0aGUgbmFtZXMgaW4gdGhlIE5BTUVfQ09ERV9UT19TQ1JJUFRTIGhhc2guCisjIFRoZXNlIG5hbWVzIGFyZSB0aGluZ3MgbGlrZSAiTEVUVEVSIE5OTkEiLiAgRm9yIGVhY2ggbmFtZSwgaXQgdGhlbgorIyBjcmVhdGVzIHNjcmlwdCBtYXBwaW5ncyB1cCB0byB0aGUgSW50ZXJJbmRpYyBhcmVhLCBhbmQgYmFjayBkb3duCisjIHRvIHRoZSBzY3JpcHQgYXJlYXMuICBJZiBhIG5hbWUgbWFwcyB0byBtb3JlIHRoYW4gb25lIG9mZnNldCwKKyMgdGhlbiBpdCB1c2VzIHRoZSBJbnRlckluZGljIGV4dHJhIHJhbmdlLiAgRWl0aGVyIHdheSwgaXQgcGlja3MKKyMgYSBzaW5nbGUgSW50ZXJJbmRpYyBwb2ludCwgZWl0aGVyIGFuIG9mZnNldCBwb2ludCBvciBzb21ldGhpbmcgaW4KKyMgdGhlIGV4dHJhIHJhbmdlLCBhbmQgbWFwcyB1cCBhbmQgZG93biBmcm9tIHRoYXQgcG9pbnQuCitmb3JlYWNoIG15ICRuYW1lIChzb3J0IGtleXMgJU5BTUVfQ09ERV9UT19TQ1JJUFRTKSB7CisgICAgbmV4dCBpZiAoMSA+PSAkTkFNRV9DT0RFX1RPX1NDUklQVFN7JG5hbWV9e2NvdW50fSk7CisgICAgbXkgJGhyZWYgPSAkTkFNRV9DT0RFX1RPX1NDUklQVFN7JG5hbWV9OworICAgICMgQ291bnQgdGhlIG51bWJlciBvZiBkaWZmZXJlbnQgY29kZXMgYXNzaWduZWQgdG8gdGhpcyBuYW1lLgorICAgICMgVXN1YWxseSAxLCBidXQgMiBmb3IgYSBoYW5kZnVsIG9mIG5hbWVzLgorICAgIG15ICRjb2RlQ291bnQgPSAoa2V5cyAleyROQU1FX0NPREVfVE9fU0NSSVBUU3skbmFtZX19KSAtIDE7ICMgbGVzcyAxOiB7Y291bnR9CisgICAgIyBJZiAkY29kZUNvdW50IGlzIDEsIHRoZW4gbWFwIGRpcmVjdGx5IHVwIHRvIHRoZSAkSU5URVJJTkRJQworICAgICMgYmFzZS4gIElmICRjb2RlQ291bnQgaXMgMiwgdGhlbiBtYXAgaW50byB1bnVzZWQgc3BvdHMgc3RhcnRpbmcKKyAgICAjIGF0ICRJTlRFUklORElDX0VYVFJBLgorICAgIG15ICRpbnRlckluZGljQ29kZTsKKyAgICBpZiAoJGNvZGVDb3VudCA+IDEpIHsKKyAgICAgICAgIyBNYXAgaW50byB0aGUgSW50ZXJJbmRpYyBleHRyYSByYW5nZQorICAgICAgICAkaW50ZXJJbmRpY0NvZGUgPSAkSU5URVJJTkRJQ19FWFRSQV9ORVhUKys7CisgICAgfQorICAgIG15ICVzZWVuOworICAgIGZvcmVhY2ggbXkgJGNvZGUgKHNvcnQgeyRhIG5lICdjb3VudCcgJiYgJGIgbmUgJ2NvdW50JyAmJiAkYSA8PT4gJGJ9IGtleXMgJSRocmVmKSB7CisgICAgICAgIG5leHQgaWYgKCRjb2RlIGVxICdjb3VudCcpOworICAgICAgICBteSAkYXJlZiA9ICRocmVmLT57JGNvZGV9OyAjIFJlZiB0byBhcnJheSBvZiBzY3JpcHRzCisgICAgICAgIGlmICgkY29kZUNvdW50ID09IDEpIHsKKyAgICAgICAgICAgICMgTWFwIGRpcmVjdGx5CisgICAgICAgICAgICAkaW50ZXJJbmRpY0NvZGUgPSAkSU5URVJJTkRJQyArICRjb2RlOworICAgICAgICB9CisgICAgICAgICMgS2VlcCB0cmFjayBvZiB0aGUgbmFtZXMgb2YgdGhlIGV4dHJhIEludGVySW5kaWMgcG9pbnRzCisgICAgICAgICRJTlRFUklORElDX05BTUVfVE9fRlVMTENPREV7JG5hbWV9ID0gJGludGVySW5kaWNDb2RlOworCisgICAgICAgIGZvcmVhY2ggbXkgJHNjciAoQCRhcmVmKSB7CisgICAgICAgICAgICAkc2Vlbnskc2NyfSA9IDE7CisgICAgICAgICAgICBteSAkZnVsbENvZGUgPSAkU0NSSVBUX1RPX0JBU0V7JHNjcn0gKyAkY29kZTsKKyAgICAgICAgICAgICQgeyRzY3J9eyRmdWxsQ29kZX0gPSBoZXg0KCRpbnRlckluZGljQ29kZSkgLiAiOyAvLyAkbmFtZSI7CisgICAgICAgICAgICAkIHskc2NyfXskaW50ZXJJbmRpY0NvZGV9ID0gaGV4NCgkZnVsbENvZGUpIC4gIjsgLy8gJG5hbWUiOworICAgICAgICB9CisgICAgfQorICAgICMgTm93IGhhbmRsZSBJbnRlckluZGljLT5TY3JpcHQgdW5tYXBwZWQgcG9pbnRzLiAgRm9yIGVhY2ggbmFtZSwKKyAgICAjIHNvbWUgb2YgdGhlIHNjcmlwdHMgd2lsbCBiZSBsZWZ0IG91dCAtLSB3aWxsIGhhdmUgbm8gbWFwcGluZ3MKKyAgICAjIHRvIHRoYXQgbmFtZS4gIEZvciB0aGVzZSBzY3JpcHRzLCB3ZSBjYW4gZWl0aGVyIGxlYXZlIHRoZW0KKyAgICAjIHVubWFwcGVkIChzbyB0aGUgSW50ZXJJbmRpYy0+TG9jYWwgbWFwcGluZyBpcyBlbXB0eSksIG9yCisgICAgIyB0cnkgdG8gcmVtYXAuCisgdW5tYXBwZWRTY3JpcHQ6CisgICAgZm9yZWFjaCBteSAkc2NyIChrZXlzICVTQ1JJUFRfVE9fQkFTRSkgeworICAgICAgICBuZXh0IGlmICgkc2Vlbnskc2NyfSk7CisKKyAgICAgICAgaWYgKCRET19IRVVSSVNUSUNfUkVNQVApIHsKKyAgICAgICAgICAgICMgVHJ5IHRvIHJlbWFwIHRocm91Z2ggdGhlIGtub3duIGVxdWl2YWxlbmNlcyBpbiBvdXIKKyAgICAgICAgICAgICMgcmVtYXBwaW5nIHRhYmxlCisgICAgICAgICAgICBmb3JlYWNoIG15ICRyZW1hcFJFIChAUkVNQVApIHsKKyAgICAgICAgICAgICAgICBsb2NhbCAkXyA9ICRuYW1lOworICAgICAgICAgICAgICAgIGlmIChldmFsKCRyZW1hcFJFKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoZXhpc3RzICRTQ1JJUFRfTkFNRV9UT19DT0RFeyRzY3J9eyRffSkgeworICAgICAgICAgICAgICAgICAgICAgICAgJCB7JHNjcn17JGludGVySW5kaWNDb2RlfSA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGV4NCgkU0NSSVBUX1RPX0JBU0V7JHNjcn0gKyAkU0NSSVBUX05BTUVfVE9fQ09ERXskc2NyfXskX30pIC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjsgLy8gUkVNQVA6ICRuYW1lIC0+ICRfIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrJFJFTUFQeyRyZW1hcFJFfTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgdW5tYXBwZWRTY3JpcHQ7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAjIFRyeSB0byByZW1hcCB0aHJvdWdoIHRoZSBmaWxlLiAgVGhpcyBjb250YWlucyByZW1hcHBpbmdzIG9mCisgICAgICAgICMgdGhlIGZvcm0gMDk5MS0+MDk5My4gIFRoYXQgaXMsIGl0IGNvbnRhaW5zIGxvY2FsIHJlbWFwcGluZ3MKKyAgICAgICAgIyB0aGF0IHdlIGNhbiBzdWJzdGl0dXRlIGFuZCB0cnkgYWdhaW4gd2l0aC4KKyAgICAgICAgI3xHVVJNVUtISS1JbnRlckluZGljIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAjfC8vIDBBMDI+OyAvLyBVTk1BUFBFRCBJTlRFUk5BTDogU0lHTiBCSU5ESQorICAgICAgICAjfEludGVySW5kaWMtR1VSTVVLSEkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICN8Ly8gRTAwMT47IC8vIFVOTUFQUEVEIEVYVEVSTkFMOiBTSUdOIENBTkRSQUJJTkRVCisgICAgICAgICN8Ilx1MEEwMT5cdTBBMDI7IgorICAgICAgICAjIEluIHRoaXMgZXhhbXBsZSwgdGhlIHJlbWFwcGluZyB0ZWxscyB1cyB0aGF0IHRoZSBub24tZXhpc3RlbnQKKyAgICAgICAgIyBjaGFyYWN0ZXIgQTAxIHNob3VsZCBiZSBjb25zaWRlcmVkIGVxdWl2YWxlbnQgdG8gdGhlIHJlYWwKKyAgICAgICAgIyBjaGFyYWN0ZXIgQTAyLgorICAgICAgICAjIFdlIGltcGxlbWVudCB0aGlzIGJ5IGFkZGluZyB0d28gbWFwcGluZ3M7IG9uZSBmcm9tCisgICAgICAgICMgdGhlIEludGVySW5kaWMgZXF1aXZhbGVudCBvZiBBMDEsIHRoYXQgaXMsIEUwMDEsIHRvIEEwMiwKKyAgICAgICAgIyBhbmQgb25lIGZyb20gQTAyLCB3aGljaCBvdGhlcndpc2UgaGFzIG5vIG1hcHBpbmcsIHRvIEUwMDEuCisgICAgICAgIGlmICgkRVhDRVBUSU9OU19GSUxFICYmICRpbnRlckluZGljQ29kZSA8ICRJTlRFUklORElDX0VYVFJBKSB7CisgICAgICAgICAgICAjIFRyeSB0byBtYXAgdGhpcyBJbnRlckluZGljIGNoYXJhY3RlciBiYWNrIHRvIGEgdGhlIHNwb3QKKyAgICAgICAgICAgICMgaXQgd291bGQgb2NjdXB5IGluIHRoaXMgc2NyaXB0IGlmIGl0IGhhZCBhIG1hcHBpbmcuCisgICAgICAgICAgICBteSAkY29kZSA9ICRpbnRlckluZGljQ29kZSAmIDB4N0Y7CisgICAgICAgICAgICBteSAkcHNldWRvRnVsbENvZGUgPSAkU0NSSVBUX1RPX0JBU0V7JHNjcn0gKyAkY29kZTsKKyAgICAgICAgICAgIGlmIChleGlzdHMgJEVYQ0VQVElPTlN7JHBzZXVkb0Z1bGxDb2RlfSkgeworICAgICAgICAgICAgICAgIG15ICRmdWxsQ29kZUFycmF5ID0gJEVYQ0VQVElPTlN7JHBzZXVkb0Z1bGxDb2RlfTsKKyAgICAgICAgICAgICAgICBteSAkY29tbWVudDsKKyAgICAgICAgICAgICAgICBmb3JlYWNoIG15ICRjIChAJGZ1bGxDb2RlQXJyYXkpIHsKKyAgICAgICAgICAgICAgICAgICAgJGNvbW1lbnQgLj0gIi4iIGlmICgkY29tbWVudCk7CisgICAgICAgICAgICAgICAgICAgICRjb21tZW50IC49ICRGVUxMQ09ERV9UT19OQU1FeyRjfTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgJGNvbW1lbnQgPSAiOyAvLyBSRU1BUCAoJEVYQ0VQVElPTlNfRklMRSk6ICIgLgorICAgICAgICAgICAgICAgICAgICBoZXg0KCRwc2V1ZG9GdWxsQ29kZSkgLiAiPiIgLiBoZXhBcnJheShAJGZ1bGxDb2RlQXJyYXkpIC4gIiA9ICIgLgorICAgICAgICAgICAgICAgICAgICAkQ09ERV9UT19OQU1FeyRjb2RlfSAuICI+IiAuICRjb21tZW50OworICAgICAgICAgICAgICAgICQgeyRzY3J9eyRpbnRlckluZGljQ29kZX0gPSBoZXhBcnJheShAJGZ1bGxDb2RlQXJyYXkpIC4gJGNvbW1lbnQ7CisgICAgICAgICAgICAgICAgaWYgKHNjYWxhciBAJGZ1bGxDb2RlQXJyYXkgPT0gMSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoZXhpc3RzICQgeyRzY3J9eyRmdWxsQ29kZUFycmF5LT5bMF19KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAjIFRoZXJlJ3MgYWxyZWFkeSBhIHByb3BlciBtYXBwaW5nOyBubyBuZWVkIHRvIGZpbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICMgaW4gcmV2ZXJzZQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgJCB7JHNjcn17JGZ1bGxDb2RlQXJyYXktPlswXX0gPSBoZXg0KCRpbnRlckluZGljQ29kZSkgLiAkY29tbWVudDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBuZXh0IHVubWFwcGVkU2NyaXB0OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgJFNDUklQVF9GVUxMQ09ERV9UT19JU19VTk1BUFBFRHskc2NyfXskaW50ZXJJbmRpY0NvZGV9ID0gMTsKKyAgICAgICAgbG9jYWwgJF8gPSAiOyAvLyBVTk1BUFBFRCBJbnRlckluZGljLSRzY3I6ICRuYW1lIjsKKyAgICAgICAgaWYgKGV4aXN0cyAkU0NSSVBUX0NPREVfVE9fTkFNRXskc2NyfXskaW50ZXJJbmRpY0NvZGUgJiAweDdGfSkgeworICAgICAgICAgICAgbXkgJGZ1bGxDb2RlID0gJFNDUklQVF9UT19CQVNFeyRzY3J9ICsgKCRpbnRlckluZGljQ29kZSAmIDB4N0YpOworICAgICAgICAgICAgJF8gLj0gIiAoIiAuIGhleDQoJGZ1bGxDb2RlKSAuICIgPSAiIC4gJEZVTExDT0RFX1RPX05BTUV7JGZ1bGxDb2RlfSAuICIpIjsKKyAgICAgICAgfQorICAgICAgICAkIHskc2NyfXskaW50ZXJJbmRpY0NvZGV9ID0gJF87CisgICAgfQorfQorCisjIEFkZCBpbiB1bm1hcHBlZCBlbnRyaWVzIGZvciBlYWNoIHNjcmlwdAorZm9yZWFjaCBteSAkc2NyIChrZXlzICVTQ1JJUFRfVE9fQkFTRSkgeworICAgIG15ICRiYXNlID0gJFNDUklQVF9UT19CQVNFeyRzY3J9OworIHVubWFwcGVkSW50OgorICAgIGZvcmVhY2ggbXkgJGNvZGUgKGtleXMgJXskU0NSSVBUX0NPREVfVE9fTkFNRXskc2NyfX0pIHsKKyAgICAgICAgbXkgJGZ1bGxDb2RlID0gJGNvZGUgKyAkYmFzZTsKKyAgICAgICAgbmV4dCBpZiAoZXhpc3RzICQgeyRzY3J9eyRmdWxsQ29kZX0pOworICAgICAgICBteSAkbmFtZSA9ICRTQ1JJUFRfQ09ERV9UT19OQU1FeyRzY3J9eyRjb2RlfTsKKworICAgICAgICBpZiAoJERPX0hFVVJJU1RJQ19SRU1BUCkgeworICAgICAgICAgICAgZm9yZWFjaCBteSAkcmVtYXBSRSAoQFJFTUFQKSB7CisgICAgICAgICAgICAgICAgbG9jYWwgJF8gPSAkbmFtZTsKKyAgICAgICAgICAgICAgICBpZiAoZXZhbCgkcmVtYXBSRSkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGV4aXN0cyAkSU5URVJJTkRJQ19OQU1FX1RPX0ZVTExDT0RFeyRffSkgeworICAgICAgICAgICAgICAgICAgICAgICAgJCB7JHNjcn17JGZ1bGxDb2RlfSA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGV4NCgkSU5URVJJTkRJQ19OQU1FX1RPX0ZVTExDT0RFeyRffSkgLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOyAvLyBSRU1BUDogJG5hbWUgLT4gJF8iOworICAgICAgICAgICAgICAgICAgICAgICAgKyskUkVNQVB7JHJlbWFwUkV9OworICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCB1bm1hcHBlZEludDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgICMgTm93IHRyeSB0aGUgZGVjb21wIHRhYmxlCisgICAgICAgIGlmICgkRE9fREVDT01QX1JFTUFQICYmIGV4aXN0cyAkREVDT01QeyRuYW1lfSkgeworICAgICAgICAgICAgbXkgJHg7CisgICAgICAgICAgICBteSAkY210ID0gIjsgLy8gREVDT01QOiAkbmFtZSAtPiAiOworICAgICAgICAgICAgZm9yZWFjaCBteSAkbiAoQHskREVDT01QeyRuYW1lfX0pIHsKKyAgICAgICAgICAgICAgICBpZiAoZXhpc3RzICRTQ1JJUFRfTkFNRV9UT19DT0RFeyRzY3J9eyRufSkgeworICAgICAgICAgICAgICAgICAgICAkeCAuPSBoZXg0KCRTQ1JJUFRfVE9fQkFTRXskc2NyfSArICRTQ1JJUFRfTkFNRV9UT19DT0RFeyRzY3J9eyRufSk7CisgICAgICAgICAgICAgICAgICAgICRjbXQgLj0gJG4gLiAiICsgIjsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAkY210ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgbGFzdDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoJGNtdCkgeworICAgICAgICAgICAgICAgICQgeyRzY3J9eyRmdWxsQ29kZX0gPSAkeCAuICRjbXQ7CisgICAgICAgICAgICAgICAgbmV4dCB1bm1hcHBlZEludDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgICRTQ1JJUFRfRlVMTENPREVfVE9fSVNfVU5NQVBQRUR7JHNjcn17JGZ1bGxDb2RlfSA9IDE7CisgICAgICAgICQgeyRzY3J9eyRmdWxsQ29kZX0gPSAiOyAvLyBVTk1BUFBFRCAkc2NyLUludGVySW5kaWM6ICRuYW1lIjsKKyAgICB9Cit9CisKKyMgR1VSCisjIEUwMEI+OyAvLyBVTk1BUFBFRCBFWFRFUk5BTDogTEVUVEVSIFZPQ0FMSUMgUiAiXHUwQTBCPlx1MEEzMFx1MEEzRjsiCisjIEUwMEM+OyAvLyBVTk1BUFBFRCBFWFRFUk5BTDogTEVUVEVSIFZPQ0FMSUMgTCAiXHUwQTBDPlx1MEEwNzsiCisjIEUwMEQ+OyAvLyBVTk1BUFBFRCBFWFRFUk5BTDogTEVUVEVSIENBTkRSQSBFICJcdTBBMEQ+XHUwQTEwOyIKKyMgRTAxMT47IC8vIFVOTUFQUEVEIEVYVEVSTkFMOiBMRVRURVIgQ0FORFJBIE8gIlx1MEExMT5cdTBBMTQ7IgorIyBFMDM3PjsgLy8gVU5NQVBQRUQgRVhURVJOQUw6IExFVFRFUiBTU0EgIlx1MEEzNz5cdTBBMzY7IgorIyBFMDQ1PjsgLy8gVU5NQVBQRUQgRVhURVJOQUw6IFZPV0VMIFNJR04gQ0FORFJBIEUgIlx1MEE0NT5cdTBBNDg7IgorIyBFMDQ5PjsgLy8gVU5NQVBQRUQgRVhURVJOQUw6IFZPV0VMIFNJR04gQ0FORFJBIE8gIlx1MEE0OT5cdTBBNEM7IgorIyBGaXggUUEgdG9vCisKKyMgRHVtcCBvdXQgc2NyaXB0IG1hcHMKK2ZvcmVhY2ggbXkgJHNjciAoc29ydCBrZXlzICVTQ1JJUFRfVE9fQkFTRSkgeworICAgICMjIG5leHQgdW5sZXNzICgkc2NyIGVxICdURUxVR1UnKTsgIyBEZWJ1Z2dpbmcKKyAgICBteSBAcnVsZXM7CisgICAgbXkgJGZsYWcgPSAxOworICAgIGZvcmVhY2ggbXkgJGZ1bGxDb2RlIChzb3J0IHskYSA8PT4gJGJ9IGtleXMgJXskc2NyfSkgeworICAgICAgICBpZiAoJGZsYWcgJiYgJGZ1bGxDb2RlID49ICRJTlRFUklORElDKSB7CisgICAgICAgICAgICAjIFdlIGhhdmUgdGhlIGNvbXBsZXRlIDxzY3I+LUludGVySW5kaWMgcnVsZXM7IGR1bXAKKyAgICAgICAgICAgICMgdGhlbSBvdXQuCisgICAgICAgICAgICBnZW5lcmF0ZVJCVCgkc2NyLCAiSW50ZXJJbmRpYyIsIFxAcnVsZXMsICRPVVRESVIpOworICAgICAgICAgICAgQHJ1bGVzID0gKCk7CisgICAgICAgICAgICAkZmxhZyA9IDA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGV4aXN0cyAkU0NSSVBUX0ZVTExDT0RFX1RPX0lTX1VOTUFQUEVEeyRzY3J9eyRmdWxsQ29kZX0pIHsKKyAgICAgICAgICAgIHB1c2ggQHJ1bGVzLCAiLy8gIiAuIGhleDQoJGZ1bGxDb2RlKSAuICI+IiAuICQgeyRzY3J9eyRmdWxsQ29kZX07CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwdXNoIEBydWxlcywgaGV4NCgkZnVsbENvZGUpIC4gIj4iIC4gJCB7JHNjcn17JGZ1bGxDb2RlfTsKKyAgICAgICAgfQorICAgIH0KKyAgICAjIE5vdyBnZW5lcmF0ZSB0aGUgSW50ZXJJbmRpYy08c2NyPiBydWxlcy4KKyAgICBnZW5lcmF0ZVJCVCgiSW50ZXJJbmRpYyIsICRzY3IsIFxAcnVsZXMsICRPVVRESVIpOworCisjICAgIHByaW50ICIkc2NyLUludGVySW5kaWMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iOworIyAgICBteSAkZmxhZyA9IDE7CisjICAgIGZvcmVhY2ggbXkgJGZ1bGxDb2RlIChzb3J0IHskYSA8PT4gJGJ9IGtleXMgJXskc2NyfSkgeworIyAgICAgICAgaWYgKCRmbGFnICYmICRmdWxsQ29kZSA+PSAkSU5URVJJTkRJQykgeworIyAgICAgICAgICAgIHByaW50ICJJbnRlckluZGljLSRzY3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iOworIyAgICAgICAgICAgICRmbGFnID0gMDsKKyMgICAgICAgIH0KKyMgICAgICAgIGlmIChleGlzdHMgJFNDUklQVF9GVUxMQ09ERV9UT19JU19VTk1BUFBFRHskc2NyfXskZnVsbENvZGV9KSB7CisjICAgICAgICAgICAgcHJpbnQgIi8vICIsIGhleDQoJGZ1bGxDb2RlKSwgIj4iLCAkIHskc2NyfXskZnVsbENvZGV9LCAiXG4iOworIyAgICAgICAgfSBlbHNlIHsKKyMgICAgICAgICAgICBwcmludCBoZXg0KCRmdWxsQ29kZSksICI+IiwgJCB7JHNjcn17JGZ1bGxDb2RlfSwgIlxuIjsKKyMgICAgICAgIH0KKyMgICAgfQorfQorCisjIExpc3Qgc3VjY2Vzc2Z1bCByZW1hcHBpbmdzCitpZiAoJERPX0hFVVJJU1RJQ19SRU1BUCkgeworICAgIGZvcmVhY2ggbXkgJHJlbWFwIChzb3J0IGtleXMgJVJFTUFQKSB7CisgICAgICAgIHByaW50IFNUREVSUiAiUkVNQVAgIiwgJFJFTUFQeyRyZW1hcH0sICIgeCAkcmVtYXBcbiI7CisgICAgfQorfQorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBTVUJST1VUSU5FUworCisjIFJldHVybiBhIGxpc3Rpbmcgb2YgYW4gYXJyYXkgb2Ygc2NyaXB0cworIyBQYXJhbTogYXJyYXkgcmVmCitzdWIgZm9ybWF0U2NyaXB0TGlzdCB7CisgICAgbXkgJGFyZWYgPSBzaGlmdDsKKyAgICBpZiAoJFNDUklQVF9DT1VOVCA9PSBAJGFyZWYpIHsKKyAgICAgICAgcmV0dXJuICJhbGwiOworICAgIH0gZWxzaWYgKCgkU0NSSVBUX0NPVU5UIC0gMykgPD0gQCRhcmVmKSB7CisgICAgICAgIG15ICRzID0gImFsbCBidXQiOworICAgICAgICBteSAldGVtcDsKKyAgICAgICAgZm9yZWFjaCAoQCRhcmVmKSB7ICR0ZW1weyRffSA9IDE7IH0KKyAgICAgICAgZm9yZWFjaCAoc29ydCBrZXlzICVTQ1JJUFRfVE9fQkFTRSkgeworICAgICAgICAgICAgJHMgLj0gIiAkXyIgdW5sZXNzIGV4aXN0cyAkdGVtcHskX307CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICRzOworICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBqb2luKCIgIiwgQCRhcmVmKTsKKyAgICB9Cit9CisKKyMgRm9ybWF0IGFzICUwMlggaGV4CitzdWIgaGV4MiB7CisgICAgc3ByaW50ZigiJTAyWCIsICRfWzBdKTsKK30KKworIyBGb3JtYXQgYXMgJTA0WCBoZXgKK3N1YiBoZXg0IHsKKyAgICBzcHJpbnRmKCJcXHUlMDRYIiwgJF9bMF0pOworfQorCisjIEZvcm1hdCBhbiBhcnJheSBhcyAlMDRYIGhleCwgZGVsaW1pdGVkIGJ5ICIuInMKK3N1YiBoZXhBcnJheSB7CisgICAgam9pbigiIiwgbWFwIHsgaGV4NCgkXyk7IH0gQF8pOworfQorCisjIFBhcnNlIGEgc3RyaW5nIG9mIHRoZSBmb3JtICJcdTBEMDEiIHRvIGFuIGFycmF5IG9mIGludGVnZXJzLgorIyBNdXN0IE9OTFkgY29udGFpbiBlc2NhcGVzLgorIyBSZXR1cm4gdGhlIGFycmF5Lgorc3ViIHBhcnNlVW5pY29kZUVzY2FwZSB7CisgICAgbG9jYWwgJF8gPSBzaGlmdDsKKyAgICBteSAkb3JpZyA9ICRfOworICAgIG15IEByZXN1bHQ7CisgICAgd2hpbGUgKGxlbmd0aCgkXykpIHsKKyAgICAgICAgaWYgKC9eXFx1KFswLTlhLWZdezR9KSguKikvaSkgeworICAgICAgICAgICAgcHVzaCBAcmVzdWx0LCBoZXgoJDEpOworICAgICAgICAgICAgJF8gPSAkMjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRpZSAiQ2FuJ3QgcGFyc2UgVW5pY29kZSBlc2NhcGUgJG9yaWdcbiI7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKDAgPT0gQHJlc3VsdCkgeworICAgICAgICBkaWUgIkNhbid0IHBhcnNlIFVuaWNvZGUgZXNjYXBlICRvcmlnXG4iOyAgICAgICAgCisgICAgfQorICAgIEByZXN1bHQ7Cit9CisKKyMgUmV0dXJuIDEgaWYgdGhlIHR3byBhcnJheXMgb2YgaW50cyBhcmUgZXF1YWwuCisjIFBhcmFtOiByZWYgdG8gYXJyYXkgb2YgaW50cworIyBQYXJhbTogcmVmIHRvIGFycmF5IG9mIGludHMKK3N1YiBpbnRBcnJheXNFcXVhbCB7CisgICAgbXkgJGEgPSBzaGlmdDsKKyAgICBteSAkYiA9IHNoaWZ0OworICAgIGlmIChzY2FsYXIgQCRhID09IHNjYWxhciBAJGIpIHsKKyAgICAgICAgZm9yIChteSAkaT0wOyAkaTxAJGE7ICsrJGkpIHsKKyAgICAgICAgICAgIGlmICgkYS0+WyRpXSAhPSAkYi0+WyRpXSkgeworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworIyBHaXZlbiBhIHJ1bGUsIHBvc3NpYmx5IHdpdGggdHJhaWxpbmcgLy8gY29tbWVudCwKKyMgcXVvdGUgdGhlIHJ1bGUgcGFydCBhbmQgYWRkIGEgdHJhaWxpbmcgIisiIGFmdGVyCisjIGl0Lgorc3ViIHF1b3RlUnVsZSB7CisgICAgbXkgJGNtdDsKKyAgICAkY210ID0gJDEgaWYgKHN8KFxzKi8vLiopfHwpOyAjIGlzb2xhdGUgdHJhaWxpbmcgLy8gY29tbWVudAorICAgIHMvXiguKjspL1wiJDFcIisvOworICAgIHMvJC8kY210LzsKKyAgICAkXzsKK30KKworIyBHaXZlbiB0aGUgbmFtZSBvZiB0aGUgc291cmNlIHNjcmlwdCwgbmFtZSBvZiB0aGUgdGFyZ2V0IHNjcmlwdCwKKyMgYW5kIGFycmF5IG9mIHJ1bGUgc3RyaW5ncywgcmV0dXJuIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHNvdXJjZQorIyBmb3IgYSBSdWxlQmFzZWRUcmFuc2xpdGVyYXRvciBmaWxlLgorIyBQYXJhbTogc291cmNlIHNjcmlwdCBuYW1lCisjIFBhcmFtOiB0YXJnZXQgc2NyaXB0IG5hbWUKKyMgUGFyYW06IHJlZiB0byBhcnJheSBvZiBydWxlcy4gIFRoZXNlIHJ1bGVzIGFyZSB1bnF1b3RlZCwgd2l0aG91dAorIyAgY29uY2F0ZW5hdG9ycyBiZXR3ZWVuIHRoZW0sIGJ1dCBkbyBoYXZlIHRyYWlsaW5nICc7JyBzZXBhcmF0b3JzLgorIyBQYXJhbTogbmFtZSBvZiBvdXRwdXQgZGlyZWN0b3J5CitzdWIgZ2VuZXJhdGVSQlQgeworICAgICMgJFRPT0wgLSBuYW1lIG9mIGdlbmVyYXRpbmcgdG9vbAorICAgICMgJERBVEUgLSBkYXRlIG9mIGdlbmVyYXRpb24KKyAgICAjICRTQ1JJUFRGUk9NIC0gbmFtZSBvZiBzb3VyY2Ugc2NyaXB0CisgICAgIyAkU0NSSVBUVE8gLSBuYW1lIG9mIHRhcmdldCBzY3JpcHQKKyAgICAjICRSVUxFUyAtIHJ1bGVzCisgICAgbXkgKCRzb3VyY2UsICR0YXJnZXQsICRydWxlcywgJG91dGRpcikgPSBAXzsKKyAgICBteSAkdGV4dDsKKyAgICAkb3V0ZGlyID1+IHN8Wy9cXF0kfHw7ICMgRGVsZXRlIHRyYWlsaW5nIC8gb3IgXAorICAgIG15ICRPVVQgPSAiJG91dGRpci9UcmFuc2xpdGVyYXRpb25SdWxlXyR7c291cmNlfV8kdGFyZ2V0LmphdmEiOworICAgIG9wZW4oUkJUX1RFTVBMQVRFKSBvciBkaWU7CisgICAgb3BlbihPVVQsICI+JE9VVCIpIG9yIGRpZTsKKyAgICB3aGlsZSAoPFJCVF9URU1QTEFURT4pIHsKKyAgICAgICAgd2hpbGUgKC9cJChbQS1aYS16MC05XSspLykgeworICAgICAgICAgICAgbXkgJHRhZyA9ICQxOworICAgICAgICAgICAgbXkgJHN1YjsKKyAgICAgICAgICAgIGlmICgkdGFnIGVxICdUT09MJykgeworICAgICAgICAgICAgICAgICRzdWIgPSAkUkJUX0dFTl9UT09MOworICAgICAgICAgICAgfSBlbHNpZiAoJHRhZyBlcSAnREFURScpIHsKKyAgICAgICAgICAgICAgICAkc3ViID0gbG9jYWx0aW1lOworICAgICAgICAgICAgfSBlbHNpZiAoJHRhZyBlcSAnU0NSSVBURlJPTScpIHsKKyAgICAgICAgICAgICAgICAkc3ViID0gJHNvdXJjZTsKKyAgICAgICAgICAgIH0gZWxzaWYgKCR0YWcgZXEgJ1NDUklQVFRPJykgeworICAgICAgICAgICAgICAgICRzdWIgPSAkdGFyZ2V0OworICAgICAgICAgICAgfSBlbHNpZiAoJHRhZyBlcSAnUlVMRVMnKSB7CisgICAgICAgICAgICAgICAgIyBHZXQgYW55IHdoaXRlc3BhY2Utb25seSBpbmRlbnQgb2ZmIHRoZSBmcm9udCBvZiB0aGlzIHRhZworICAgICAgICAgICAgICAgIG15ICRpbmRlbnQ7CisgICAgICAgICAgICAgICAgJGluZGVudCA9ICQxIGlmICgvXihccyspXCQkdGFnLyk7CisKKyAgICAgICAgICAgICAgICAjIFRoZSBydWxlcyBpbiB0aGUgYXJyYXkgYXJlIG5vdCBxdW90ZWQuICBXZSBuZWVkIHRvIHF1b3RlCisgICAgICAgICAgICAgICAgIyB0aGVtIGFuZCBhZGQgJysnIG9wZXJhdG9ycyBiZXR3ZWVuIHRoZW0uICBXZSBkbyBOT1QgbmVlZAorICAgICAgICAgICAgICAgICMgdG8gYWRkICc7JyBzZXBhcmF0b3JzLiAgV2UgRE8gbmVlZCB0byBzZXBhcmF0ZSB0cmFpbGluZworICAgICAgICAgICAgICAgICMgLy8gY29tbWVudHMgYW5kIGhhbmRsZSB0aGVtLgorICAgICAgICAgICAgICAgICRzdWIgPSBqb2luKCJcbiRpbmRlbnQiLCBtYXAoJnF1b3RlUnVsZSwgQCRydWxlcykpIC4KKyAgICAgICAgICAgICAgICAgICAgIlxuJGluZGVudFwiXCIiOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBwcmludCBTVERFUlIgIkVSUk9SIGluICRSQlRfVEVNUExBVEU6IFVua25vd24gdGFnICR0YWdcbiI7CisgICAgICAgICAgICAgICAgJHN1YiA9ICJbRVJST1I6VW5rbm93biB0YWcgXCQkdGFnXSI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzL1wkJHRhZy8kc3ViLzsKKyAgICAgICAgfQorICAgICAgICBwcmludCBPVVQ7CisgICAgfQorICAgIGNsb3NlKE9VVCk7CisgICAgY2xvc2UoUkJUX1RFTVBMQVRFKTsKKyAgICBwcmludCBTVERFUlIgIldyaXR0ZW46ICRPVVRcbiI7Cit9CisKK19fRU5EX18KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC90cmFuc2xpdC9pbmRpY0V4Y2VwdGlvbnMudHh0IGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL3RyYW5zbGl0L2luZGljRXhjZXB0aW9ucy50eHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOTFhMGY5ZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC90cmFuc2xpdC9pbmRpY0V4Y2VwdGlvbnMudHh0CkBAIC0wLDAgKzEsMzgzIEBACisvKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDItMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL3RyYW5zbGl0L2luZGljRXhjZXB0aW9ucy50eHQsdiAkCisgKiAkRGF0ZTogMjAwMi8xMi8xOCAwMzo1Njo0MSAkCisgKiAkUmV2aXNpb246IDEuMiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCisvKiBSZXNlcnZlZCBpbiBhbGwgOSBzY3JpcHRzICovCisKKy8qCisgICBUaGVzZSBjb2RlcG9pbnRzIGFyZSBtYXJrZWQgUkVTRVJWRUQgaW4gYWxsIDkgaW5kaWMgc2NyaXB0cy4KKyAgIFRoZXJlIHNob3VsZCBub3QgYmUgYW55IHRyYW5zbGl0ZXJhdGlvbiB3b3JrIG9uIHRoZXNlIGNvZGVwb2ludHMsIAorICAgaWYgdGhleSBhcmUgZXZlciBlbmNvdW50ZXJlZC4gIElnbm9yZSB0aGVzZSBjb2RlcG9pbnRzLgorCisgICBDb21tb24gcmVzZXJ2ZWQgY29kZXBvaW50cyBpbiBBTEwgOSBzY3JpcHRzIDogKG9mZnNldCkKKyAgIDAwLCAwNCwgCisgICAzQSwgM0IsIAorICAgNEUsIDRGLCAKKyAgIDdCLCA3QywgN0QsIDdFLCA3RgorKi8KKworLyogU2NyaXB0LXNwZWNpZmljICovCisvKgorICAgVGhlc2UgY29kZXBvaW50cyBhcmUgc3BlY2lmaWMgdG8gdGhlaXIgcmVzcGVjdGl2ZSBzY3JpcHQuCisgICBUcmFuc2xpdGVyYXRpb24gb2YgdGhlc2UgY29kZXBvaW50cyBmcm9tIG9uZSBzY3JpcHQgdG8gYW5vdGhlciBpcyBtZWFuaW5nbGVzcy4KKworICAgRm9yIGV4YW1wbGUsCisgICAgICBcdTBCNzAgKE9yaXlhKSBhbmQgXHUwQkYwIChUYW1pbCkgYXJlIG5vbi1yZXNlcnZlZCBjb2RlcG9pbnRzIHdpdGhpbiBlYWNoIHNjcmlwdC4KKyAgICAgIE9uIHRyYW5zbGl0ZXJhdGluZyBcdTBCNzAgZnJvbSBPcml5YSB0byBUYW1pbCwgd2Ugd2lsbCBnZXQgXHUwQkYwLgorICAgICAgQnV0IFx1MEI3MCBpbiBPcml5YSByZXByZXNlbnRzIElTU0hBUiwgd2hlcmVhcyBcdTBCRjAgaW4gVGFtaWwgcmVwcmVzZW50cyBOVU1CRVIgVEVOLgorCisgICBcdTA5NzAgRGV2YW5hZ2FyaSBhYmJyZXZpYXRpb24gc2lnbgorCisgICBcdTA5RjAgQmVuZ2FsaSBsZXR0ZXIgUkEgd2l0aCBtaWRkbGUgZGlhZ29uYWwgKEFzc2FtZXNlKQorICAgXHUwOUYxIEJlbmdhbGkgbGV0dGVyIFJBIHdpdGggbG93ZXIgZGlhZ29uYWwgCisgICAgICAgICAgKD1CZW5nYWxpIGxldHRlciBWQSB3aXRoIGxvd2VyIGRpYWdvbmFsLCBBc3NhbWVzZSkKKyAgIFx1MDlGMiBCZW5nYWxpIHJ1cGVlIG1hcmsKKyAgIFx1MDlGMyBCZW5nYWxpIHJ1cGVlIHNpZ24KKyAgIFx1MDlGNCBCZW5nYWxpIGN1cnJlbmN5IG51bWVyYXRvciBvbmUKKyAgIFx1MDlGNSBCZW5nYWxpIGN1cnJlbmN5IG51bWVyYXRvciB0d28KKyAgIFx1MDlGNiBCZW5nYWxpIGN1cnJlbmN5IG51bWVyYXRvciB0aHJlZQorICAgXHUwOUY3IEJlbmdhbGkgY3VycmVuY3kgbnVtZXJhdG9yIGZvdXIKKyAgIFx1MDlGOCBCZW5nYWxpIGN1cnJlbmN5IG51bWVyYXRvciBvbmUgbGVzcyB0aGFuIHRoZSBkZW5vbWluYXRvcgorICAgXHUwOUY5IEJlbmdhbGkgY3VycmVuY3kgZGVub21pbmF0b3Igc2l4dGVlbgorICAgXHUwOUZBIEJlbmdhbGkgaXNzaGFyCisKKyAgIFx1MEE3MCBHdXJtdWtoaSB0aXBwaSAobmFzYWxpemF0aW9uKQorICAgXHUwQTcxIEd1cm11a2hpIGFkZGFrIChkb3VibGVzIGZvbGxvd2luZyBjb25zb25hbnQpCisgICBcdTBBNzIgR3VybXVraGkgaXJpIChiYXNlIGZvciB2b3dlbHMpCisgICBcdTBBNzMgR3VybXVraGkgdXJhIChiYXNlIGZvciB2b3dlbHMpCisgICBcdTBBNzQgR3VybXVraGkgZWsgb25rYXIgKEdvZCBpcyBPbmUpCisKKyAgIFx1MEI3MCBPcml5YSBpc3NoYXIKKworICAgXHUwQkYwIFRhbWlsIG51bWJlciB0ZW4KKyAgIFx1MEJGMSBUYW1pbCBudW1iZXIgb25lIGh1bmRyZWQKKyAgIFx1MEJGMiBUYW1pbCBudW1iZXIgb25lIHRob3VzYW5kCisqLworCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogIE5PVEUgOiA8dW5rbm93bj4gY29kZSB3aWxsIG1hcCBiYWNrIHRvIGl0c2VsZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICB0aWxsIHdlIGZpbmQgYSBnb29kIG1hdGNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogRGV2YW5hZ2FyaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisiXHUwOTU1Plx1MDk1NTsiICAvLyA8dW5rbm93bj4gTGVuZ3RoIE1hcmsgLSBLYW5uYWRhIChcdTBDRDUpLCBUZWx1Z3UgKFx1MEM1NSkKKyJcdTA5NTY+XHUwOTQ4OyIgIC8vIEFJIExlbmd0aCBNYXJrIC0+IERldmFuYWdhcmkgVm93ZWwgU2lnbiBBSQorIlx1MDk1Nz5cdTA5NEM7IiAgLy8gQVUgTGVuZ3RoIE1hcmsgLT4gRGV2YW5hZ2FyaSBWb3dlbCBTaWduIEFVCisKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBCZW5nYWxpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyJcdTA5OEQ+XHUwOThEOyIgIC8vIDx1bmtub3duPiBpbmRlcGVuZGVudCB2b3dlbCBDYW5kcmEgRQorIlx1MDk4RT5cdTA5OEY7IiAgLy8gTGV0dGVyIFNob3J0IEUgLT4gTGV0dGVyIEUKKyJcdTA5OTE+XHUwOTkzOyIgIC8vIExldHRlciBDYW5kcmEgTyAtPiBMZXR0ZXIgTworIlx1MDk5Mj5cdTA5OTM7IiAgLy8gTGV0dGVyIFNob3J0IE8gLT4gTGV0dGVyIE8KKyJcdTA5QTk+XHUwOUE4OyIgIC8vIExldHRlciBOTk5BIC0+IExldHRlciBOQQorIlx1MDlCMT5cdTA5QjA7IiAgLy8gTGV0dGVyIFJSQSAtPiBMZXR0ZXIgUkEKKyJcdTA5QjM+XHUwOUIyOyIgIC8vIExldHRlciBMTEEgLT4gTGV0dGVyIExBCisiXHUwOUI0Plx1MDlCMjsiICAvLyBMZXR0ZXIgTExMQSAtPiBMZXR0ZXIgTEEKKyJcdTA5QjU+XHUwOUFDOyIgIC8vIExldHRlciBWQSAtPiBMZXR0ZXIgQkEKKyJcdTA5QkQ+XHUwOUJEOyIgIC8vIDx1bmtub3duPiBTaWduIEF2YWdyYWhhIC0gRGV2YW5hZ2FyaSAoXHUwOTNEKQorIlx1MDlDNT5cdTA5Qzc7IiAgLy8gVm93ZWwgQ2FuZHJhIEUgLT4gVm93ZWwgRQorIlx1MDlDNj5cdTA5Qzc7IiAgLy8gVm93ZWwgU2hvcnQgRSAtPiBWb3dlbCBFCisiXHUwOUM5Plx1MDlDQjsiICAvLyBWb3dlbCBDYW5kcmEgTyAtPiBWb3dlbCBPCisiXHUwOUNBPlx1MDlDQjsiICAvLyBWb3dlbCBTaG9ydCBPIC0+IFZvd2VsIE8KKyJcdTA5RDA+XHUwOUQwOyIgIC8vIDx1bmtub3duPiBPTSAtIERldmFuYWdhcmkgKFx1MDk1MCksIEd1amFyYXRpIChcdTBBRDApCisiXHUwOUQxPlx1MDlEMTsiICAvLyA8dW5rbm93bj4gU3RyZXNzIC0gRGV2YW5hZ2FyaSAoXHUwOTUxKQorIlx1MDlEMj5cdTA5RDI7IiAgLy8gPHVua25vd24+IFN0cmVzcyAtIERldmFuYWdhcmkgKFx1MDk1MikKKyJcdTA5RDM+XHUwOUQzOyIgIC8vIDx1bmtub3duPiBBY2NlbnQgLSBEZXZhbmFnYXJpIChcdTA5NTMpCisiXHUwOUQ0Plx1MDlENDsiICAvLyA8dW5rbm93bj4gQWNjZW50IC0gRGV2YW5hZ2FyaSAoXHUwOTU0KQorIlx1MDlENT5cdTA5RDU7IiAgLy8gPHVua25vd24+IExlbmd0aCBNYXJrIC0gS2FubmFkYSAoXHUwQ0Q1KSwgVGVsdWd1IChcdTBDNTUpCisiXHUwOUQ2Plx1MDlDODsiICAvLyBBSSBMZW5ndGggTWFyayAtPiBCZW5nYWxpIFZvd2VsIFNpZ24gQUkKKyJcdTA5RDg+XHUwOTk1OyIgIC8vIExldHRlciBRQSAtPiBMZXR0ZXIgS0EKKyJcdTA5RDk+XHUwOTk2OyIgIC8vIExldHRlciBLSEhBIC0+IExldHRlciBLSEEKKyJcdTA5REE+XHUwOTk3OyIgIC8vIExldHRlciBHSEhBIC0+IExldHRlciBHQQorIlx1MDlEQj5cdTA5OUM7IiAgLy8gTGV0dGVyIFpBIC0+IExldHRlciBKQQorIlx1MDlERT5cdTA5QUI7IiAgLy8gTGV0dGVyIEZBIC0+IExldHRlciBQSEEKKyJcdTA5RTQ+XHUwOUU0OyIgIC8vIDx1bmtub3duPiBEYW5kYSAtIERldmFuYWdhcmkgKFx1MDk2NCkKKyJcdTA5RTU+XHUwOUU1OyIgIC8vIDx1bmtub3duPiBEb3VibGUgRGFuZGEgLSBEZXZhbmFnYXJpIChcdTA5NjUpCisKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBHdXJtdWtoaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyJcdTBBMDE+XHUwQTAyOyIKKyJcdTBBMDM+XHUwQTAzOyIgIC8vIDx1bmtub3duPiBTaWduIFZpc2FyZ2EgLSBEZXZhbmFnYXJpIChcdTA5MDMpICYgdGhlIHJlc3QKKyJcdTBBMEI+XHUwQTMwXHUwQTNGOyIKKyJcdTBBMEM+XHUwQTA3OyIKKyJcdTBBMEQ+XHUwQTEwOyIKKyJcdTBBMEU+XHUwQTBGOyIKKyJcdTBBMTE+XHUwQTE0OyIKKyJcdTBBMTI+XHUwQTEzOyIKKyJcdTBBMjk+XHUwQTI4OyIKKyJcdTBBMzE+XHUwQTMwOyIKKyJcdTBBMzQ+XHUwQTMzOyIKKyJcdTBBMzc+XHUwQTM2OyIKKyJcdTBBM0Q+XHUwQTNEOyIgIC8vIDx1bmtub3duPiBTaWduIEF2YWdyYWhhIC0gRGV2YW5hZ2FyaSAoXHUwOTNEKQorIlx1MEE0Mz5cdTBBNDM7IiAgLy8gPHVua25vd24+IFZvY2FsaWMgUiAtIERldmFuYWdhcmkgKFx1MDk0MykKKyJcdTBBNDQ+XHUwQTQ0OyIgIC8vIDx1bmtub3duPiBWb2NhbGljIFJSIC0gRGV2YW5hZ2FyaSAoXHUwOTQ0KQorIlx1MEE0NT5cdTBBNDg7IgorIlx1MEE0Nj5cdTBBNDc7IgorIlx1MEE0OT5cdTBBNEM7IgorIlx1MEE0QT5cdTBBNEI7IgorIlx1MEE1MD5cdTBBNTA7IiAgLy8gPHVua25vd24+IE9NIC0gRGV2YW5hZ2FyaSAoXHUwOTUwKSwgR3VqYXJhdGkgKFx1MEFEMCkKKyJcdTBBNTE+XHUwQTUxOyIgIC8vIDx1bmtub3duPiBTdHJlc3MgLSBEZXZhbmFnYXJpIChcdTA5NTEpCisiXHUwQTUyPlx1MEE1MjsiICAvLyA8dW5rbm93bj4gU3RyZXNzIC0gRGV2YW5hZ2FyaSAoXHUwOTUyKQorIlx1MEE1Mz5cdTBBNTM7IiAgLy8gPHVua25vd24+IEFjY2VudCAtIERldmFuYWdhcmkgKFx1MDk1MykKKyJcdTBBNTQ+XHUwQTU0OyIgIC8vIDx1bmtub3duPiBBY2NlbnQgLSBEZXZhbmFnYXJpIChcdTA5NTQpCisiXHUwQTU1Plx1MEE1NTsiICAvLyA8dW5rbm93bj4gTGVuZ3RoIE1hcmsgLSBLYW5uYWRhIChcdTBDRDUpLCBUZWx1Z3UgKFx1MEM1NSkKKyJcdTBBNTY+XHUwQTQ4OyIgIC8vIEFJIExlbmd0aCBNYXJrIC0+IEd1cm11a2hpIFZvd2VsIFNpZ24gQUkKKyJcdTBBNTc+XHUwQTRDOyIgIC8vIEFVIExlbmd0aCBNYXJrIC0+IEd1cm11a2hpIFZvd2VsIFNpZ24gQVUKKyJcdTBBNTg+XHUwQTE1XHUwQTNDOyIKKyJcdTBBNUQ+XHUwQTIyXHUwQTNDOyIgIC8vIExldHRlciBSSEEgLT4gR3VybXVraGkgbGV0dGVyIGRkaGEgKFx1MEEyMikgKyBudWt0YSAoXHUwQTNDKQorIlx1MEE1Rj5cdTBBMkY7IgorIlx1MEE2MD5cdTBBMzBcdTBBM0Y7IgorIlx1MEE2MT5cdTBBMDhcdTBBM0M7IgorIlx1MEE2Mj5cdTBBM0ZcdTBBM0M7IgorIlx1MEE2Mz5cdTBBNDBcdTBBM0M7IgorIlx1MEE2ND5cdTBBNjQ7IiAgLy8gPHVua25vd24+IERhbmRhIC0gRGV2YW5hZ2FyaSAoXHUwOTY0KQorIlx1MEE2NT5cdTBBNjU7IiAgLy8gPHVua25vd24+IERvdWJsZSBEYW5kYSAtIERldmFuYWdhcmkgKFx1MDk2NSkKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIEd1amFyYXRpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyJcdTBBOEM+XHUwQUIyXHUwQUMzOyIKKyJcdTBBOEU+XHUwQThEOyIKKyJcdTBBOTI+XHUwQTkxOyIKKyJcdTBBQTk+XHUwQUE4OyIKKyJcdTBBQjE+XHUwQUIwOyIKKyJcdTBBQjQ+XHUwQUIzOyIKKyJcdTBBQzY+XHUwQUM1OyIKKyJcdTBBQ0E+XHUwQUM5OyIKKyJcdTBBRDE+XHUwQUQxOyIgIC8vIDx1bmtub3duPiBTdHJlc3MgLSBEZXZhbmFnYXJpIChcdTA5NTEpCisiXHUwQUQyPlx1MEFEMjsiICAvLyA8dW5rbm93bj4gU3RyZXNzIC0gRGV2YW5hZ2FyaSAoXHUwOTUyKQorIlx1MEFEMz5cdTBBRDM7IiAgLy8gPHVua25vd24+IEFjY2VudCAtIERldmFuYWdhcmkgKFx1MDk1MykKKyJcdTBBRDQ+XHUwQUQ0OyIgIC8vIDx1bmtub3duPiBBY2NlbnQgLSBEZXZhbmFnYXJpIChcdTA5NTQpCisiXHUwQUQ1Plx1MEFENTsiICAvLyA8dW5rbm93bj4gTGVuZ3RoIE1hcmsgLSBLYW5uYWRhIChcdTBDRDUpLCBUZWx1Z3UgKFx1MEM1NSkKKyJcdTBBRDY+XHUwQUM4OyIgIC8vIEFJIExlbmd0aCBNYXJrIC0+IEd1amFyYXRpIFZvd2VsIFNpZ24gQUkKKyJcdTBBRDc+XHUwQUNDOyIgIC8vIEFVIExlbmd0aCBNYXJrIC0+IEd1amFyYXRpIFZvd2VsIFNpZ24gQVUKKyJcdTBBRDg+XHUwQTk1XHUwQUJDOyIKKyJcdTBBRDk+XHUwQTk2XHUwQUJDOyIKKyJcdTBBREE+XHUwQTk3XHUwQUJDOyIKKyJcdTBBREI+XHUwQTlDXHUwQUJDOyIKKyJcdTBBREM+XHUwQUExXHUwQUJDOyIKKyJcdTBBREQ+XHUwQUEyXHUwQUJDOyIKKyJcdTBBREU+XHUwQUFCXHUwQUJDOyIKKyJcdTBBREY+XHUwQUFGXHUwQUJDOyIKKyJcdTBBRTE+XHUwQUIyXHUwQUMzOyIKKyJcdTBBRTI+XHUwQUJGXHUwQUJDOyIKKyJcdTBBRTM+XHUwQUMwXHUwQUJDOyIKKyJcdTBBRTQ+XHUwQUU0OyIgIC8vIDx1bmtub3duPiBEYW5kYSAtIERldmFuYWdhcmkgKFx1MDk2NCkKKyJcdTBBRTU+XHUwQUU1OyIgIC8vIDx1bmtub3duPiBEb3VibGUgRGFuZGEgLSBEZXZhbmFnYXJpIChcdTA5NjUpCisKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBPcml5YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisiXHUwQjBEPlx1MEIwRjsiCisiXHUwQjBFPlx1MEIwRjsiCisiXHUwQjExPlx1MEIxMzsiCisiXHUwQjEyPlx1MEIxMzsiCisiXHUwQjI5Plx1MEIyODsiCisiXHUwQjMxPlx1MEIzMDsiCisiXHUwQjM0Plx1MEIzMzsiCisiXHUwQjM1Plx1MEIyQzsiICAvLyBMZXR0ZXIgVkEgLT4gT3JpeWEgTGV0dGVyIEJBCisiXHUwQjQ0Plx1MEI0M1x1MEIzQzsiCisiXHUwQjQ1Plx1MEI0NzsiCisiXHUwQjQ2Plx1MEI0NzsiCisiXHUwQjQ5Plx1MEI0QjsiCisiXHUwQjRBPlx1MEI0QjsiCisiXHUwQjUwPlx1MEIxM1x1MEIwMTsiCisiXHUwQjUxPlx1MEI1MTsiICAvLyA8dW5rbm93bj4gU3RyZXNzIC0gRGV2YW5hZ2FyaSAoXHUwOTUxKQorIlx1MEI1Mj5cdTBCNTI7IiAgLy8gPHVua25vd24+IFN0cmVzcyAtIERldmFuYWdhcmkgKFx1MDk1MikKKyJcdTBCNTM+XHUwQjUzOyIgIC8vIDx1bmtub3duPiBBY2NlbnQgLSBEZXZhbmFnYXJpIChcdTA5NTMpCisiXHUwQjU0Plx1MEI1NDsiICAvLyA8dW5rbm93bj4gQWNjZW50IC0gRGV2YW5hZ2FyaSAoXHUwOTU0KQorIlx1MEI1NT5cdTBCNTU7IiAgLy8gPHVua25vd24+IExlbmd0aCBNYXJrIC0gS2FubmFkYSAoXHUwQ0Q1KSwgVGVsdWd1IChcdTBDNTUpCisiXHUwQjU4Plx1MEIxNVx1MEIzQzsiCisiXHUwQjU5Plx1MEIxNlx1MEIzQzsiCisiXHUwQjVBPlx1MEIxN1x1MEIzQzsiCisiXHUwQjVCPlx1MEIxQ1x1MEIzQzsiCisiXHUwQjVFPlx1MEIyQlx1MEIzQzsiCisiXHUwQjYyPlx1MEI1Nlx1MEIzQzsiCisiXHUwQjYzPlx1MEI1N1x1MEIzQzsiCisiXHUwQjY0Plx1MEI2NDsiICAvLyA8dW5rbm93bj4gRGFuZGEgLSBEZXZhbmFnYXJpIChcdTA5NjQpCisiXHUwQjY1Plx1MEI2NTsiICAvLyA8dW5rbm93bj4gRG91YmxlIERhbmRhIC0gRGV2YW5hZ2FyaSAoXHUwOTY1KQorCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogVGFtaWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisiXHUwQjgxPlx1MEI4MTsiICAvLyA8dW5rbm93bj4gQ2FuZHJhYmluZHUgLSBEZXZhbmFnYXJpIChcdTA5MDEpICxldGMKKyJcdTBCOEI+XHUwQkIwXHUwQkJGOyIKKyJcdTBCOEM+XHUwQjg3OyIKKyJcdTBCOEQ+XHUwQjg2OyIKKyJcdTBCOTE+XHUwQjg2OyIKKyJcdTBCOTY+XHUwQjk1OyIKKyJcdTBCOTc+XHUwQjk1OyIKKyJcdTBCOTg+XHUwQjk1OyIKKyJcdTBCOUI+XHUwQjlBOyIKKyJcdTBCOUQ+XHUwQjlBOyIKKyJcdTBCQTA+XHUwQjlGOyIKKyJcdTBCQTE+XHUwQjlGOyIKKyJcdTBCQTI+XHUwQjlGOyIKKyJcdTBCQTU+XHUwQkE0OyIKKyJcdTBCQTY+XHUwQkE0OyIKKyJcdTBCQTc+XHUwQkE0OyIKKyJcdTBCQUI+XHUwQkFBOyIKKyJcdTBCQUM+XHUwQkFBOyIKKyJcdTBCQUQ+XHUwQkFBOyIKKyJcdTBCQjY+XHUwQkI3OyIKKyJcdTBCQkM+XHUwQkJDOyIgIC8vIDx1bmtub3duPiBOdWt0YQorIlx1MEJCRD5cdTBCQkQ7IiAgLy8gPHVua25vd24+IFNpZ24gQXZhZ3JhaGEgLSBEZXZhbmFnYXJpIChcdTA5M0QpCisiXHUwQkMzPlx1MEJDRFx1MEJCMFx1MEJCRjsiCisiXHUwQkM0Plx1MEJDRFx1MEJCMFx1MEJCRjsiCisiXHUwQkM1Plx1MEJCRTsiCisiXHUwQkM5Plx1MEJCRTsiCisiXHUwQkQwPlx1MEI5M1x1MEJBRVx1MEJDRDsiCisiXHUwQkQxPlx1MEJEMTsiICAvLyA8dW5rbm93bj4gU3RyZXNzIC0gRGV2YW5hZ2FyaSAoXHUwOTUxKQorIlx1MEJEMj5cdTBCRDI7IiAgLy8gPHVua25vd24+IFN0cmVzcyAtIERldmFuYWdhcmkgKFx1MDk1MikKKyJcdTBCRDM+XHUwQkQzOyIgIC8vIDx1bmtub3duPiBBY2NlbnQgLSBEZXZhbmFnYXJpIChcdTA5NTMpCisiXHUwQkQ0Plx1MEJENDsiICAvLyA8dW5rbm93bj4gQWNjZW50IC0gRGV2YW5hZ2FyaSAoXHUwOTU0KQorIlx1MEJENT5cdTBCRDU7IiAgLy8gPHVua25vd24+IExlbmd0aCBNYXJrIC0gS2FubmFkYSAoXHUwQ0Q1KSwgVGVsdWd1IChcdTBDNTUpCisiXHUwQkQ2Plx1MEJDODsiICAvLyBBSSBMZW5ndGggTWFyayAtPiBUYW1pbCBWb3dlbCBTaWduIEFJCisiXHUwQkQ4Plx1MEI5NTsiCisiXHUwQkQ5Plx1MEI5NTsiCisiXHUwQkRBPlx1MEI5NTsiCisiXHUwQkRCPlx1MEI5QzsiCisiXHUwQkRDPlx1MEI5RjsiCisiXHUwQkREPlx1MEI5RjsiCisiXHUwQkRFPlx1MEJBQTsiCisiXHUwQkRGPlx1MEJBRjsiCisiXHUwQkUwPlx1MEJCMFx1MEJCRjsiCisiXHUwQkUxPlx1MEI4ODsiCisiXHUwQkUyPlx1MEJFMjsiICAvLyA8dW5rbm93bj4gVm9jYWxpYyBMIC0gRGV2YW5hZ2FyaSAoXHUwOTYyKQorIlx1MEJFMz5cdTBCRTM7IiAgLy8gPHVua25vd24+IFZvY2FsaWMgTEwgLSBEZXZhbmFnYXJpIChcdTA5NjMpCisiXHUwQkU0Plx1MEJFNDsiICAvLyA8dW5rbm93bj4gRGFuZGEgLSBEZXZhbmFnYXJpIChcdTA5NjQpCisiXHUwQkU1Plx1MEJFNTsiICAvLyA8dW5rbm93bj4gRG91YmxlIERhbmRhIC0gRGV2YW5hZ2FyaSAoXHUwOTY1KQorIlx1MEJFNj5cdTAwMzA7IiAgLy8gWkVSTyAtIERpZ2l0IFpFUk8KKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIFRlbHVndSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworIlx1MEMwRD5cdTBDMEU7IgorIlx1MEMxMT5cdTBDMTI7IgorIlx1MEMyOT5cdTBDMjg7IgorIlx1MEMzND5cdTBDMzM7IgorIlx1MEMzQz5cdTBDM0M7IiAgLy8gPHVua25vd24+IE51a3RhCisiXHUwQzNEPlx1MEMzRDsiICAvLyA8dW5rbm93bj4gU2lnbiBBdmFncmFoYSAtIERldmFuYWdhcmkgKFx1MDkzRCkKKyJcdTBDNDU+XHUwQzQ2OyIKKyJcdTBDNDk+XHUwQzRBOyIKKyJcdTBDNTA+XHUwQzEzXHUwQzAyOyIKKyJcdTBDNTE+XHUwQzUxOyIgIC8vIDx1bmtub3duPiBTdHJlc3MgLSBEZXZhbmFnYXJpIChcdTA5NTEpCisiXHUwQzUyPlx1MEM1MjsiICAvLyA8dW5rbm93bj4gU3RyZXNzIC0gRGV2YW5hZ2FyaSAoXHUwOTUyKQorIlx1MEM1Mz5cdTBDNTM7IiAgLy8gPHVua25vd24+IEFjY2VudCAtIERldmFuYWdhcmkgKFx1MDk1MykKKyJcdTBDNTQ+XHUwQzU0OyIgIC8vIDx1bmtub3duPiBBY2NlbnQgLSBEZXZhbmFnYXJpIChcdTA5NTQpCisiXHUwQzU3Plx1MEM0QzsiCisiXHUwQzU4Plx1MEMxNTsiCisiXHUwQzU5Plx1MEMxNjsiCisiXHUwQzVBPlx1MEMxNzsiCisiXHUwQzVCPlx1MEMxQzsiCisiXHUwQzVDPlx1MEMyMTsiCisiXHUwQzVEPlx1MEMyMjsiCisiXHUwQzVFPlx1MEMyQjsiCisiXHUwQzVGPlx1MEMyRjsiCisiXHUwQzYyPlx1MEMzRjsiCisiXHUwQzYzPlx1MEM0MDsiCisiXHUwQzY0Plx1MEM2NDsiICAvLyA8dW5rbm93bj4gRGFuZGEgLSBEZXZhbmFnYXJpIChcdTA5NjQpCisiXHUwQzY1Plx1MEM2NTsiICAvLyA8dW5rbm93bj4gRG91YmxlIERhbmRhIC0gRGV2YW5hZ2FyaSAoXHUwOTY1KQorCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogS2FubmFkYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisiXHUwQzgxPlx1MEM4MjsiCisiXHUwQzhEPlx1MEM4RTsiCisiXHUwQzkxPlx1MEM5MjsiCisiXHUwQ0E5Plx1MENBODsiCisiXHUwQ0I0Plx1MENCMzsiCisiXHUwQ0JDPlx1MENCQzsiICAvLyA8dW5rbm93bj4gTnVrdGEKKyJcdTBDQkQ+XHUwQ0JEOyIgIC8vIDx1bmtub3duPiBTaWduIEF2YWdyYWhhIC0gRGV2YW5hZ2FyaSAoXHUwOTNEKQorIlx1MENDNT5cdTBDQzY7IgorIlx1MENDOT5cdTBDQ0E7IgorIlx1MENEMD5cdTBDOTNcdTBDODI7IgorIlx1MENEMT5cdTBDRDE7IiAgLy8gPHVua25vd24+IFN0cmVzcyAtIERldmFuYWdhcmkgKFx1MDk1MSkKKyJcdTBDRDI+XHUwQ0QyOyIgIC8vIDx1bmtub3duPiBTdHJlc3MgLSBEZXZhbmFnYXJpIChcdTA5NTIpCisiXHUwQ0QzPlx1MENEMzsiICAvLyA8dW5rbm93bj4gQWNjZW50IC0gRGV2YW5hZ2FyaSAoXHUwOTUzKQorIlx1MENEND5cdTBDRDQ7IiAgLy8gPHVua25vd24+IEFjY2VudCAtIERldmFuYWdhcmkgKFx1MDk1NCkKKyJcdTBDRDc+XHUwQ0NDOyIKKyJcdTBDRDg+XHUwQzk1OyIKKyJcdTBDRDk+XHUwQzk2OyIKKyJcdTBDREE+XHUwQzk3OyIKKyJcdTBDREI+XHUwQzlDOyIKKyJcdTBDREM+XHUwQ0ExOyIKKyJcdTBDREQ+XHUwQ0EyOyIKKyJcdTBDREY+XHUwQ0FGOyIKKyJcdTBDRTI+XHUwQ0JGOyIKKyJcdTBDRTM+XHUwQ0MwOyIKKyJcdTBDRTQ+XHUwQ0U0OyIgIC8vIDx1bmtub3duPiBEYW5kYSAtIERldmFuYWdhcmkgKFx1MDk2NCkKKyJcdTBDRTU+XHUwQ0U1OyIgIC8vIDx1bmtub3duPiBEb3VibGUgRGFuZGEgLSBEZXZhbmFnYXJpIChcdTA5NjUpCisKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBNYWxheWFsYW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyJcdTBEMDE+XHUwRDAyOyIKKyJcdTBEMEQ+XHUwRDA2OyIKKyJcdTBEMTE+XHUwRDEzOyIKKyJcdTBEMjk+XHUwRDI4OyIKKyJcdTBEM0M+XHUwRDNDOyIgIC8vIDx1bmtub3duPiBOdWt0YQorIlx1MEQzRD5cdTBEM0Q7IiAgLy8gPHVua25vd24+IFNpZ24gQXZhZ3JhaGEgLSBEZXZhbmFnYXJpIChcdTA5M0QpCisiXHUwRDQ0Plx1MEQ0NDsiICAvLyA8dW5rbm93bj4gVm9jYWxpYyBSUiAtIERldmFuYWdhcmkgKFx1MDk0NCkKKyJcdTBENDU+XHUwRDNFOyIKKyJcdTBENDk+XHUwRDRCOyIKKyJcdTBENTA+XHUwRDUwOyIgIC8vIDx1bmtub3duPiBPTSAtIERldmFuYWdhcmkgKFx1MDk1MCksIEd1amFyYXRpIChcdTBBRDApCisiXHUwRDUxPlx1MEQ1MTsiICAvLyA8dW5rbm93bj4gU3RyZXNzIC0gRGV2YW5hZ2FyaSAoXHUwOTUxKQorIlx1MEQ1Mj5cdTBENTI7IiAgLy8gPHVua25vd24+IFN0cmVzcyAtIERldmFuYWdhcmkgKFx1MDk1MikKKyJcdTBENTM+XHUwRDUzOyIgIC8vIDx1bmtub3duPiBBY2NlbnQgLSBEZXZhbmFnYXJpIChcdTA5NTMpCisiXHUwRDU0Plx1MEQ1NDsiICAvLyA8dW5rbm93bj4gQWNjZW50IC0gRGV2YW5hZ2FyaSAoXHUwOTU0KQorIlx1MEQ1NT5cdTBENTU7IiAgLy8gPHVua25vd24+IExlbmd0aCBNYXJrIC0gS2FubmFkYSAoXHUwQ0Q1KSwgVGVsdWd1IChcdTBDNTUpCisiXHUwRDU2Plx1MEQ0ODsiICAvLyBBSSBMZW5ndGggTWFyayAtPiBNYWxheWFsYW0gVm93ZWwgU2lnbiBBSQorIlx1MEQ1OD5cdTBEMTU7IgorIlx1MEQ1OT5cdTBEMTY7IgorIlx1MEQ1QT5cdTBEMTc7IgorIlx1MEQ1Qj5cdTBEMUM7IgorIlx1MEQ1Qz5cdTBEMjE7IgorIlx1MEQ1RD5cdTBEMjI7IgorIlx1MEQ1RT5cdTBEMkI7IgorIlx1MEQ1Rj5cdTBEMkY7IgorIlx1MEQ2Mj5cdTBENjI7IiAgLy8gPHVua25vd24+IFZvY2FsaWMgTCAtIERldmFuYWdhcmkgKFx1MDk2MikKKyJcdTBENjM+XHUwRDYzOyIgIC8vIDx1bmtub3duPiBWb2NhbGljIExMIC0gRGV2YW5hZ2FyaSAoXHUwOTYzKQorIlx1MEQ2ND5cdTBENjQ7IiAgLy8gPHVua25vd24+IERhbmRhIC0gRGV2YW5hZ2FyaSAoXHUwOTY0KQorIlx1MEQ2NT5cdTBENjU7IiAgLy8gPHVua25vd24+IERvdWJsZSBEYW5kYSAtIERldmFuYWdhcmkgKFx1MDk2NSkKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC90cmFuc2xpdC9yYnRUZW1wbGF0ZS50eHQgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvdHJhbnNsaXQvcmJ0VGVtcGxhdGUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjA1NDliYmQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvdHJhbnNsaXQvcmJ0VGVtcGxhdGUudHh0CkBAIC0wLDAgKzEsMjYgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmlnaHQgKGMpIDIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24KKyogYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogPiBUSElTIEZJTEUgV0FTIE1BQ0hJTkUgR0VORVJBVEVEIDwKKyogPiAgICAgICBETyBOT1QgRURJVCBCWSBIQU5EICAgICAgIDwKKyogPiAgICAgIFJVTiBUT09MIFRPIFJFR0VORVJBVEUgICAgIDwKKyogVG9vbDogJFRPT0wKKyogQ3JlYXRpb24gZGF0ZTogJERBVEUKKyovCitwYWNrYWdlIGNvbS5pYm0udGV4dC5yZXNvdXJjZXM7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCitwdWJsaWMgY2xhc3MgVHJhbnNsaXRlcmF0aW9uUnVsZV8kU0NSSVBURlJPTV8kU0NSSVBUVE8gZXh0ZW5kcyBMaXN0UmVzb3VyY2VCdW5kbGUgeworICAgIC8qKgorICAgICAqIE92ZXJyaWRlcyBMaXN0UmVzb3VyY2VCdW5kbGUKKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBPYmplY3RbXVtdIHsKKyAgICAgICAgICAgIHsgIlJ1bGUiLAorICAgICAgICAgICAgICAkUlVMRVMKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvdHJhbnNsaXQvdmFyc3ViLmJhdCBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC90cmFuc2xpdC92YXJzdWIuYmF0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmMxMGFmZDQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wvdHJhbnNsaXQvdmFyc3ViLmJhdApAQCAtMCwwICsxLDg3IEBACisjLyoqCisjICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyMgKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorIyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisjICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyMgKgorIyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC90cmFuc2xpdC92YXJzdWIuYmF0LHYgJAorIyAqICREYXRlOiAyMDAyLzEyLzE4IDAzOjU2OjQxICQKKyMgKiAkUmV2aXNpb246IDEuMiAkCisjICoKKyMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIyAqLworCitAcmVtID0gJy0tKi1QZXJsLSotLQorQGVjaG8gb2ZmCitpZiAiJU9TJSIgPT0gIldpbmRvd3NfTlQiIGdvdG8gV2luTlQKK3BlcmwgLXggLVMgIiUwIiAlMSAlMiAlMyAlNCAlNSAlNiAlNyAlOCAlOQorZ290byBlbmRvZnBlcmwKKzpXaW5OVAorcGVybCAteCAtUyAiJTAiICUqCitpZiBOT1QgIiVDT01TUEVDJSIgPT0gIiVTeXN0ZW1Sb290JVxzeXN0ZW0zMlxjbWQuZXhlIiBnb3RvIGVuZG9mcGVybAoraWYgJWVycm9ybGV2ZWwlID09IDkwMDkgZWNobyBZb3UgZG8gbm90IGhhdmUgUGVybCBpbiB5b3VyIFBBVEguCitnb3RvIGVuZG9mcGVybAorQHJlbSAnOworIyFwZXJsCisjbGluZSAxNAorCisjIFVzYWdlOiBwZXJsIHZhcnN1Yi5iYXQgWy1ufC1ucl0gPGluZmlsZT4gPG91dGZpbGU+CisjCisjIFN1YnN0aXR1dGVzIHZhcmlhYmxlcyBpbnRvIHJ1bGVzIGFuZCBkZWxldGVzIHZhcmlhYmxlIGRlZmluaXRpb24KKyMgc3RhdGVtZW50cy4gIFZhcmlhYmxlcyB0aGF0IGV4cGFuZCB0byBVbmljb2RlU2V0cyBhcmUgTk9UCisjIHN1YnN0aXR1dGVkLgorIworIyAgLW4gICBBZnRlcndhcmRzLCBydW4gbmF0aXZlMmFzY2lpIC1lbmNvZGluZyBVVEY4CisjICAtbnIgIEFmdGVyd2FyZHMsIHJ1biBuYXRpdmUyYXNjaWkgLWVuY29kaW5nIFVURjggLXJldmVyc2UKKworJE4yQSA9IDA7CisKKyRJTiA9IHNoaWZ0OworaWYgKCRJTiA9fiAvXi1uLykgeworICAgICROMkEgPSAxOworICAgICROMkFvcHRpb24gPSAoJElOIGVxICctbnInKSA/ICIgLXJldmVyc2UgIiA6ICIiOworICAgICRJTiA9IHNoaWZ0OworfQorJE9VVCA9IHNoaWZ0OworCitpZiAoISgkSU4gJiYgJE9VVCkpIHsKKyAgICBkaWUgIlVzYWdlOiAkMCBbLW58LW5yXSA8aW5maWxlPiA8b3V0ZmlsZT4iOworfQorCitvcGVuKElOKSBvciBkaWUgIkNhbid0IG9wZW4gJElOOiAkISI7CitvcGVuKE9VVCwgIj4kT1VUIikgb3IgZGllICJDYW4ndCBvcGVuICRPVVQ6ICQhIjsKKword2hpbGUgKDxJTj4pIHsKKyAgICBpZiAoL15ccypcJChbYS16QS1aMC05X10rKVxzKj1ccyooW147XCNdKylccyo7XHMqKFwjLiopPyQvKSB7CisgICAgICAgICMgVGhpcyBsb29rcyBsaWtlIGEgdmFyaWFibGUgZGVmaW5pdGlvbgorICAgICAgICBteSAoJHZhciwgJGRlZikgPSAoJDEsICQyKTsKKyAgICAgICAgIyBEb24ndCBzdWJzdGl0dXRlIFVuaWNvZGVTZXQgdmFycworICAgICAgICBpZiAoJGRlZiAhfiAvXlxbLykgeworICAgICAgICAgICAgaWYgKGV4aXN0cyAkVkFSeyR2YXJ9KSB7CisgICAgICAgICAgICAgICAgcHJpbnQgU1RERVJSICJFcnJvcjogRHVwbGljYXRlIGRlZmluaXRpb24gb2YgJHZhclxuIjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgJFZBUnskdmFyfSA9ICRkZWY7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBuZXh0OworICAgICAgICB9CisgICAgfQorICAgIAorICAgICMgRG8gdmFyaWFibGUgc3Vic3RpdHV0aW9ucywgYW5kIG91dHB1dCBsaW5lCisgICAgZm9yZWFjaCBteSAkdmFyIChrZXlzICVWQVIpIHsKKyAgICAgICAgbXkgJGRlZiA9ICRWQVJ7JHZhcn07CisgICAgICAgIHMvXCQkdmFyXGIvJGRlZi9nOworICAgIH0KKyAgICBwcmludCBPVVQ7Cit9CisKK2Nsb3NlKE9VVCk7CitjbG9zZShJTik7CisKK2lmICgkTjJBKSB7CisgICAgYG5hdGl2ZTJhc2NpaSAtZW5jb2RpbmcgVVRGOCAkTjJBb3B0aW9uICRPVVQgJE9VVC5uYXRpdmUyYXNjaWlgOworICAgIHVubGluayAkT1VUOworICAgIHJlbmFtZSAiJE9VVC5uYXRpdmUyYXNjaWkiLCAkT1VUOworfQorCitfX0VORF9fCis6ZW5kb2ZwZXJsCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wveG1sY29tcGFyYXRvci9SZXN1bHRYTUwuZHRkIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL3htbGNvbXBhcmF0b3IvUmVzdWx0WE1MLmR0ZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMWIyMDU2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL3htbGNvbXBhcmF0b3IvUmVzdWx0WE1MLmR0ZApAQCAtMCwwICsxLDQyIEBACis8IS0tIAorLyoqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC94bWxjb21wYXJhdG9yL0F0dGljL1Jlc3VsdFhNTC5kdGQsdiAkCisgKiAkRGF0ZTogMjAwMi8xMi8xOCAwMzo1Njo0MSAkCisgKiAkUmV2aXNpb246IDEuMiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworLS0+Cis8IUVMRU1FTlQgZGlmZmVyZW5jZV94bWwgKGRpZmZlcmVuY2VfZWxlbWVudCkqID4KKworPCFFTEVNRU5UIGRpZmZlcmVuY2VfZWxlbWVudCAoIGljdSB8IGlibV90b3JvbnRvIHwgd2luZG93cyB8IHN1bl9qZGsgfCBpYm1famRrIHwgc29sYXJpcyB8IGFwcGxlIHwgaHBfdXggfCBvdGhlcikqID4KKzwhQVRUTElTVCBkaWZmZXJlbmNlX2VsZW1lbnQgcGFyZW50X25vZGUgTk1UT0tFTiAjSU1QTElFRCA+Cis8IUFUVExJU1QgZGlmZmVyZW5jZV9lbGVtZW50IG5vZGVfbmFtZSBOTVRPS0VOICNJTVBMSUVEID4KKzwhQVRUTElTVCBkaWZmZXJlbmNlX2VsZW1lbnQgaW5kZXggTk1UT0tFTiAjSU1QTElFRCA+Cis8IUFUVExJU1QgZGlmZmVyZW5jZV9lbGVtZW50IGlkIElEICNSRVFVSVJFRCA+CisKKworCis8IUVMRU1FTlQgaWN1ICgjUENEQVRBKSA+Cis8IUFUVExJU1QgaWN1IGNhc2VfZGlmZiBOTVRPS0VOICNJTVBMSUVEID4KKzwhRUxFTUVOVCBpYm1fdG9yb250byAoI1BDREFUQSkgPgorPCFBVFRMSVNUIGlibV90b3JvbnRvIGNhc2VfZGlmZiBOTVRPS0VOICNJTVBMSUVEID4KKzwhRUxFTUVOVCB3aW5kb3dzICgjUENEQVRBKSA+Cis8IUFUVExJU1Qgd2luZG93cyBjYXNlX2RpZmYgTk1UT0tFTiAjSU1QTElFRCA+Cis8IUVMRU1FTlQgc3VuX2pkayAoI1BDREFUQSkgPgorPCFBVFRMSVNUIHN1bl9qZGsgY2FzZV9kaWZmIE5NVE9LRU4gI0lNUExJRUQgPgorPCFFTEVNRU5UIGlibV9qZGsgKCNQQ0RBVEEpID4KKzwhQVRUTElTVCBpYm1famRrIGNhc2VfZGlmZiBOTVRPS0VOICNJTVBMSUVEID4KKzwhRUxFTUVOVCBzb2xhcmlzICgjUENEQVRBKSA+Cis8IUFUVExJU1Qgc29sYXJpcyBjYXNlX2RpZmYgTk1UT0tFTiAjSU1QTElFRCA+Cis8IUVMRU1FTlQgYXBwbGUgKCNQQ0RBVEEpID4KKzwhQVRUTElTVCBhcHBsZSBjYXNlX2RpZmYgTk1UT0tFTiAjSU1QTElFRCA+Cis8IUVMRU1FTlQgaHBfdXggKCNQQ0RBVEEpID4KKzwhQVRUTElTVCBocF91eCBjYXNlX2RpZmYgTk1UT0tFTiAjSU1QTElFRCA+Cis8IUVMRU1FTlQgb3RoZXIgKCNQQ0RBVEEpID4KKzwhQVRUTElTVCBvdGhlciBjYXNlX2RpZmYgTk1UT0tFTiAjSU1QTElFRCA+CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvZGV2L3Rvb2wveG1sY29tcGFyYXRvci9SZXN1bHRYTUwueG1sIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL3htbGNvbXBhcmF0b3IvUmVzdWx0WE1MLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGFmMzkyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL3htbGNvbXBhcmF0b3IvUmVzdWx0WE1MLnhtbApAQCAtMCwwICsxLDMxIEBACis8IS0tIAorLyoqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC94bWxjb21wYXJhdG9yL0F0dGljL1Jlc3VsdFhNTC54bWwsdiAkCisgKiAkRGF0ZTogMjAwMi8xMi8xOCAwMzo1Njo0MSAkCisgKiAkUmV2aXNpb246IDEuMiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworLS0+Cis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorCis8IURPQ1RZUEUgZGlmZmVyZW5jZV94bWwgU1lTVEVNICIuL1Jlc3VsdFhNTC5kdGQiID4KKworPGRpZmZlcmVuY2VfeG1sPgorICAgIDxkaWZmZXJlbmNlX2VsZW1lbnQgcGFyZW50X25vZGU9InRlc3QiIG5vZGVfbmFtZT0idGVzdCIgaWQ9IjEiIGluZGV4PSJ0ZXN0Ij4KKyAgICAgICAgPGljdSBjYXNlX2RpZmY9ImZhbHNlIiA+IDwvaWN1PgorICAgICAgICA8aWJtX3Rvcm9udG8gY2FzZV9kaWZmPSJmYWxzZSI+IDwvaWJtX3Rvcm9udG8+CisgICAgICAgIDx3aW5kb3dzIGNhc2VfZGlmZj0iZmFsc2UiPiA8L3dpbmRvd3M+CisgICAgICAgIDxzdW5famRrIGNhc2VfZGlmZj0iZmFsc2UiPiA8L3N1bl9qZGs+CisgICAgICAgIDxpYm1famRrIGNhc2VfZGlmZj0iZmFsc2UiPiA8L2libV9qZGs+CisgICAgICAgIDxzb2xhcmlzIGNhc2VfZGlmZj0iZmFsc2UiPiA8L3NvbGFyaXM+CisgICAgICAgIDxhcHBsZSBjYXNlX2RpZmY9ImZhbHNlIj4gPC9hcHBsZT4KKyAgICAgICAgPGhwX3V4IGNhc2VfZGlmZj0iZmFsc2UiPiA8L2hwX3V4PgorICAgICAgICA8b3RoZXIgY2FzZV9kaWZmPSJmYWxzZSI+IDwvb3RoZXI+CisgICAgPC9kaWZmZXJlbmNlX2VsZW1lbnQ+Cis8L2RpZmZlcmVuY2VfeG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC94bWxjb21wYXJhdG9yL1hNTENvbXBhcmF0b3IuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9kZXYvdG9vbC94bWxjb21wYXJhdG9yL1hNTENvbXBhcmF0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZWRiOGViCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2Rldi90b29sL3htbGNvbXBhcmF0b3IvWE1MQ29tcGFyYXRvci5qYXZhCkBAIC0wLDAgKzEsMTE5NyBAQAorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAqCisqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAkU291cmNlOiAvdXNyL2N2cy9pY3U0ai9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9CeXRlVHJpZS5qYXZhLHYgJCAKKyogJERhdGU6IDIwMDIvMDMvMDIgMDI6MjA6MDEgJCAKKyogJFJldmlzaW9uOiAxLjUgJAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LmRldi50b29sLnhtbGNvbXBhcmF0b3I7CisKKy8qKgorICogQGF1dGhvciByYW0KKyAqCisgKiBUaGlzIHRvb2wgY29tcGFyZXMgbG9jYWxlIGRhdGEgaW4gWE1MIGZvcm1hdCBhbmQgZ2VuZXJhdGVzIEhUTUwgYW5kIFhNTCByZXBvcnRzCisgKi8KK2ltcG9ydCBqYXZhLmlvLio7CitpbXBvcnQgamF2YS51dGlsLio7CitpbXBvcnQgamF2YS5pby5QcmludFdyaXRlcjsKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS5pby5GaWxlUmVhZGVyOworaW1wb3J0IGphdmEuaW8uQnVmZmVyZWRSZWFkZXI7CitpbXBvcnQgamF2YS50ZXh0LkRlY2ltYWxGb3JtYXQ7CitpbXBvcnQgamF2YS51dGlsLkNhbGVuZGFyOworCisKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworCisvLyBET00gaW1wb3J0cworaW1wb3J0IG9yZy53M2MuZG9tLkF0dHI7CitpbXBvcnQgb3JnLnczYy5kb20uRG9jdW1lbnQ7CitpbXBvcnQgb3JnLnczYy5kb20uRWxlbWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOworaW1wb3J0IG9yZy53M2MuZG9tLk5hbWVkTm9kZU1hcDsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlTGlzdDsKK2ltcG9ydCBvcmcudzNjLmRvbS5UZXh0OworCisvLyBOZWVkZWQgSkFYUCBjbGFzc2VzCitpbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyOworaW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3Rvcnk7CisKKy8vIFNBWDIgaW1wb3J0cworaW1wb3J0IG9yZy54bWwuc2F4LkVycm9ySGFuZGxlcjsKK2ltcG9ydCBvcmcueG1sLnNheC5JbnB1dFNvdXJjZTsKK2ltcG9ydCBvcmcueG1sLnNheC5TQVhFeGNlcHRpb247CitpbXBvcnQgb3JnLnhtbC5zYXguU0FYUGFyc2VFeGNlcHRpb247CisKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0Lk5vcm1hbGl6ZXI7CitpbXBvcnQgY29tLmlibS5pY3UubGFuZy5VQ2hhcmFjdGVyOworCitwdWJsaWMgY2xhc3MgWE1MQ29tcGFyYXRvciB7CisgICAgU3RyaW5nW10gZmlsZU5hbWVzOyAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBzaG9ydCBPUFRfU1VOX0pESyA9IDB4MDAxOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIHNob3J0IE9QVF9JQk1fSkRLID0gMHgwMDI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgc2hvcnQgT1BUX1dJTkRPV1MgPSAweDAwNDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBzaG9ydCBPUFRfSFBfVVggICA9IDB4MDA4OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIHNob3J0IE9QVF9TT0xBUklTID0gMHgwMTA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgc2hvcnQgT1BUX0lCTV9UT1IgPSAweDAyMDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBzaG9ydCBPUFRfQVBQTEUgICA9IDB4MDQwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIHNob3J0IE9QVF9JQ1UgICAgID0gMHgwODA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgc2hvcnQgT1BUX09USEVSICAgPSAweDEwMDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBzaG9ydCBPUFRfU09VUkNFICA9IDB4MTIwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIHNob3J0IE9QVF9ERVNUICAgID0gMHgxNDA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgc2hvcnQgT1BUX09VVDEgICAgPSAweDE2MDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBzaG9ydCBPUFRfT1VUMiAgICA9IDB4MTgwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIHNob3J0IE9QVF9VTktOT1dOID0gMHgxMDAwOworICAgIAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBQT1NJWD0gIjAiOy8qIE5PIGluaGVyaXRlbmNlIG9mIGxvY2FsZSBkYXRhICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIElDVSAgPSAiMSI7LyogU3VwcG9ydHMgaW5oZXJpdGVuY2Ugb2YgbG9jYWxlIGRhdGEqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBVU0VSX09QVElPTlNbXVtdID0geworICAgICAgICB7Ii1zdW5famRrIiwgInN1bl9qZGsiLElDVX0sIAorICAgICAgICB7Ii1pYm1famRrIiwgImlibV9qZGsiLElDVX0sCisgICAgICAgIHsiLXdpbmRvd3MiLCAid2luZG93cyIsIFBPU0lYfSwKKyAgICAgICAgeyItaHBfdXgiLCAgICJocF91eCIsUE9TSVggfSwgCisgICAgICAgIHsiLXNvbGFyaXMiLCAic29sYXJpcyIsUE9TSVggfSwKKyAgICAgICAgeyItaWJtX3RvciIsICJpYm1fdG9yb250byIsUE9TSVh9LAorICAgICAgICB7Ii1hcHBsZSIsICAgImFwcGxlIiwgUE9TSVh9LAorICAgICAgICB7Ii1pY3UiLCAgICAgImljdSIsSUNVfSwKKyAgICAgICAgeyItb3RoZXIiLCAgICJvdGhlciIsIFBPU0lYfSwKKyAgICAgICAgeyItcyIsbnVsbCxudWxsfSwKKyAgICAgICAgeyItZCIsbnVsbCwgbnVsbH0sCisgICAgICAgIHsiLW91dDEiLG51bGwsbnVsbH0sCisgICAgfTsKKyAgICAKKyAgICBIYXNodGFibGUgb3B0aW9uVGFibGUgPSBuZXcgSGFzaHRhYmxlKCk7CisgICAgcHJpdmF0ZSBTdHJpbmcgc291cmNlRm9sZGVyID0gIi4iOworICAgIHByaXZhdGUgU3RyaW5nIGRlc3RGb2xkZXIgPSAiLiI7CisgICAgcHJpdmF0ZSBib29sZWFuIG91dDEgPSBmYWxzZTsKKyAgICBwcml2YXRlIGJvb2xlYW4gb3V0MiA9IGZhbHNlOworICAgIAorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpeworICAgICAgICBYTUxDb21wYXJhdG9yIGNvbXBhcmF0b3IgPSBuZXcgWE1MQ29tcGFyYXRvcigpOworICAgICAgICBjb21wYXJhdG9yLnByb2Nlc3NBcmdzKGFyZ3MpOyAgICAKKyAgICAgICAgCisgICAgfQorICAgIAorICAgIEFycmF5TGlzdCBkb2VzTm90RXhpc3QgPSBuZXcgQXJyYXlMaXN0KCk7CisgICAgQXJyYXlMaXN0IG5vdEF2YWlsYWJsZSA9IG5ldyBBcnJheUxpc3QoKTsKKyAgICAgIAorICAgIC8qCisgICAgICogVGhpcyBhcHBsaWNhdGlvbiB3aWxsIGNvbXBhcmUgZGlmZmVyZW50IGxvY2FsZSBkYXRhIHhtbCBmaWxlcworICAgICAqIGNvbmZvcm1pbmcgdG8gbG9jYWxlRWxlbWVudHMuZHRkIGFuZCBwcm9kdWNlcyBhbiB4bWwgZmlsZSBmaWxlCisgICAgICogaW4gdGhlIGZvcm1hdAorICAgICAqLyAKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIERvY3VtZW50IHJlc3VsdERvY3VtZW50OworICAgIFN0cmluZyBsb2NhbGVTdHI7ICAgIAorICAgIExvY2FsZSBsb2NhbGU7CisgICAgQ2FsZW5kYXIgY2FsID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTsKKyAgICAgICAgICAgICAgICAgCisgICAgcHJpdmF0ZSB2b2lkIHByb2Nlc3NBcmdzKFN0cmluZ1tdIGFyZ3MpeworICAgICAgICBzaG9ydCBvcHRpb25zID0gaWRlbnRpZnlPcHRpb25zKGFyZ3MpOworICAgICAgICBpZiAoKGFyZ3MubGVuZ3RoIDwgMikgfHwgKChvcHRpb25zICYgT1BUX1VOS05PV04pICE9IDApKSB7CisgICAgICAgICAgICBwcmludFVzYWdlKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYm9vbGVhbiB3YXJuaW5nW10gPSBuZXcgYm9vbGVhblsxXTsKKyAgICAgICAgd2FybmluZ1swXSA9IGZhbHNlOworICAgICAgICBFbnVtZXJhdGlvbiBlbnVtID0gb3B0aW9uVGFibGUua2V5cygpOworICAgICAgICB0cnl7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJlc3VsdERvY3VtZW50ID0gcGFyc2Uoc291cmNlRm9sZGVyK0ZpbGUuc2VwYXJhdG9yKyJSZXN1bHRYTUwueG1sIik7CisgICAgICAgICAgICAKKwkgICAgICAgIGxvY2FsZVN0ciAgPSBnb2xkRmlsZU5hbWUuc3Vic3RyaW5nKGdvbGRGaWxlTmFtZS5sYXN0SW5kZXhPZihGaWxlLnNlcGFyYXRvckNoYXIpKzEsZ29sZEZpbGVOYW1lLmluZGV4T2YoJy4nKSk7CisJICAgICAgICBsb2NhbGUgPSBuZXcgTG9jYWxlKGxvY2FsZVN0ci5zdWJzdHJpbmcoMCxsb2NhbGVTdHIuaW5kZXhPZignXycpKSxsb2NhbGVTdHIuc3Vic3RyaW5nKGxvY2FsZVN0ci5pbmRleE9mKCdfJykrMSxsb2NhbGVTdHIubGVuZ3RoKCkpKTsKKyAgICAgICAgICAgIE91dHB1dFN0cmVhbVdyaXRlciBvczEgPSBuZXcgT3V0cHV0U3RyZWFtV3JpdGVyKG5ldyBGaWxlT3V0cHV0U3RyZWFtKGRlc3RGb2xkZXIrRmlsZS5zZXBhcmF0b3IrbG9jYWxlKyIueG1sIiksZW5jb2RpbmcpOworCSAgICAgICAgT3V0cHV0U3RyZWFtV3JpdGVyIG9zMiA9IG5ldyBPdXRwdXRTdHJlYW1Xcml0ZXIobmV3IEZpbGVPdXRwdXRTdHJlYW0oZGVzdEZvbGRlcitGaWxlLnNlcGFyYXRvcitsb2NhbGUrIi5odG1sIiksZW5jb2RpbmcpOworCSAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yKDtlbnVtLmhhc01vcmVFbGVtZW50cygpOyl7CisgICAgICAgICAgICAgICAgU3RyaW5nIGtleSA9IChTdHJpbmcpZW51bS5uZXh0RWxlbWVudCgpOworICAgICAgICAgICAgICAgIFN0cmluZyBmaWxlTmFtZSA9IChTdHJpbmcpIG9wdGlvblRhYmxlLmdldChrZXkpOworICAgICAgICAgICAgICAgIGNvbXBhcmUoZ29sZEZpbGVOYW1lLGdvbGRLZXksIGZpbGVOYW1lLGtleSxvdXQxKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgCisJCisgICAgICAgICAgICBJdGVyYXRvciBpdGVyID1kb2VzTm90RXhpc3QuaXRlcmF0b3IoKTsKKyAgICAgICAgICAgIHdoaWxlKGl0ZXIuaGFzTmV4dCgpKXsKKyAgICAgICAgICAgICAgICAgIFN0cmluZyBrZXkgPSAoU3RyaW5nKWl0ZXIubmV4dCgpOworICAgICAgICAgICAgICAgICAgTm9kZUxpc3QgbGlzdCA9IHJlc3VsdERvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKGtleSk7CisgICAgICAgICAgICAgICAgICBhZGROb2RlVmFsdWUobGlzdCxrZXksIlMuTi5BIixudWxsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG5vdEF2YWlsYWJsZS5hZGQoInNvbGFyaXMiKTsKKyAgICAgICAgICAgIG5vdEF2YWlsYWJsZS5hZGQoImFwcGxlIik7CisgICAgICAgICAgICBub3RBdmFpbGFibGUuYWRkKCJvdGhlciIpOworICAgICAgICAgICAgbm90QXZhaWxhYmxlLmFkZCgib3Blbl9vZmZpY2UiKTsKKyAgICAgICAgICAgIGl0ZXIgPW5vdEF2YWlsYWJsZS5pdGVyYXRvcigpOworICAgICAgICAgICAgd2hpbGUoaXRlci5oYXNOZXh0KCkpeworICAgICAgICAgICAgICAgICAgU3RyaW5nIGtleSA9IChTdHJpbmcpaXRlci5uZXh0KCk7CisgICAgICAgICAgICAgICAgICBOb2RlTGlzdCBsaXN0ID0gcmVzdWx0RG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoa2V5KTsKKyAgICAgICAgICAgICAgICAgIGFkZE5vZGVWYWx1ZShsaXN0LGtleSwiUy5OLkEiLG51bGwpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBQcmludFdyaXRlciB3cml0ZXIxID0gbmV3IFByaW50V3JpdGVyKG9zMSk7CisgICAgICAgICAgICBQcmludFdyaXRlciB3cml0ZXIyID0gbmV3IFByaW50V3JpdGVyKG9zMik7CisgICAgICAgICAgICBwcmludCh3cml0ZXIxLHJlc3VsdERvY3VtZW50KTsKKyAgICAgICAgICAgIGlmKG91dDEpeworICAgICAgICAgICAgICAgIHByaW50SFRNTF8xKHdyaXRlcjIpOworICAgICAgICAgICAgfWVsc2V7CisgICAgICAgICAgICAgICAgcHJpbnRIVE1MKHdyaXRlcjIpOworICAgICAgICAgICAgfQorICAgICAgICB9Y2F0Y2goRXhjZXB0aW9uIGUpeworICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgfQorICAgIAorICAgIHByaXZhdGUgdm9pZCBwcmludFVzYWdlKCkgeworICAgICAgICBTeXN0ZW0uZXJyLnByaW50bG4oIlVzYWdlOiBYTUxDb21wYXJhdG9yIFs8b3B0aW9uPjo8Z29sZD5dIGZpbGVuYW1lMSBbb3B0aW9uXSBmaWxlbmFtZTIgLi4uIFxuIisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIgWE1MQ29tcGFyYXRvciBbLXN1bl9qZGs6Z29sZF0gIGZpbGVuYW1lIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiIFstaWJtX2pka10gZmlsZW5hbWUgWy13aW5kb3dzXSBmaWxlbmFtZSIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBbLWhwX3V4XSAgZmlsZW5hbWUgWy1zb2xhcmlzXSBmaWxlbmFtZSIgICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIgWy1pYm1fdG9yXSBmaWxlbmFtZSBbLWFwcGxlXSBmaWxlbmFtZSIgICArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiIFstaWN1XSBmaWxlbmFtZSBbLW90aGVyXSBmaWxlbmFtZSIgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICB9CisgICAgcHJpdmF0ZSBTdHJpbmcgZ29sZEZpbGVOYW1lOyAKKyAgICBwcml2YXRlIFN0cmluZyBnb2xkS2V5OworCisgICAgcHJpdmF0ZSBzaG9ydCBpZGVudGlmeU9wdGlvbnMoU3RyaW5nW10gb3B0aW9ucykgeworICAgICAgICBzaG9ydCByZXN1bHQgPSAwOworICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG9wdGlvbnMubGVuZ3RoOyBqKyspIHsKKyAgICAgICAgICAgIFN0cmluZyBvcHRpb24gPSBvcHRpb25zW2pdOworICAgICAgICAgICAgYm9vbGVhbiBpc0dvbGQgPSBmYWxzZTsKKyAgICAgICAgICAgIGlmIChvcHRpb24uc3RhcnRzV2l0aCgiLSIpKSB7CisgICAgICAgICAgICAgICAgaWYob3B0aW9uLmluZGV4T2YoIjpnb2xkIik+MCl7CisgICAgICAgICAgICAgICAgICAgIG9wdGlvbiA9IG9wdGlvbi5zdWJzdHJpbmcoMCxvcHRpb24uaW5kZXhPZigiOiIpKTsKKyAgICAgICAgICAgICAgICAgICAgaXNHb2xkID0gdHJ1ZTsgICAgCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJvb2xlYW4gb3B0aW9uUmVjb2duaXplZCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGZvciAoc2hvcnQgaSA9IDA7IGkgPCBVU0VSX09QVElPTlMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKFVTRVJfT1BUSU9OU1tpXVswXS5lcXVhbHMob3B0aW9uKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0IHw9IChzaG9ydCkoMSA8PCBpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvblJlY29nbml6ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgaWYoaT09OSl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlRm9sZGVyID0gb3B0aW9uc1srK2pdOworICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2UgaWYoaT09MTApeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RGb2xkZXIgPSBvcHRpb25zWysral07CisgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZSBpZihpPT0xMSl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0MT10cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoIWlzR29sZCl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvblRhYmxlLnB1dChVU0VSX09QVElPTlNbaV1bMV0sb3B0aW9uc1srK2pdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ29sZEZpbGVOYW1lID0gb3B0aW9uc1srK2pdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb2xkS2V5ICAgICAgPSBVU0VSX09QVElPTlNbaV1bMV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKCFvcHRpb25SZWNvZ25pemVkKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCB8PSBPUFRfVU5LTk9XTjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSB2b2lkICAgcHJpbnRIVE1MKFByaW50V3JpdGVyIHdyaXRlcil7CisgICAgICAgIE5vZGVMaXN0IGxpc3Q9IHJlc3VsdERvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJkaWZmZXJlbmNlX2VsZW1lbnQiKTsKKyAgICAgICAgd3JpdGVyLnByaW50bG4oIjxodG1sPlxuIisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgPGhlYWQ+XG4iKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj1cIkNvbnRlbnQtVHlwZVwiIGNvbnRlbnQ9XCJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLThcIj5cbiIrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICA8dGl0bGU+Iitsb2NhbGUrIjwvdGl0bGU+XG4iKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICA8L2hlYWQ+XG4iKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICA8Ym9keT5cbiIrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICA8cD48Yj4iK2xvY2FsZSsiPC9iPjwvcD5cbiIrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICA8dGFibGUgYm9yZGVyPVwiMVwiIGNlbGxzcGFjaW5nPVwiMFwiPlxuIisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICA8dHI+XG4iKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgICA8dGg+UGFyZW50Tm9kZTwvdGg+XG4iKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgICA8dGg+TmFtZTwvdGg+XG4iKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgICA8dGg+SUQ8L3RoPlxuIisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICAgPHRoPklDVSAyLjE8L3RoPlxuIisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICAgPHRoPklCTSBUb3JvbnRvPC90aD5cbiIrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgICAgIDx0aD5XaW5kb3dzIDIwMDA8L3RoPlxuIisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICAgPHRoPlN1biBKREsgMS4zPC90aD5cbiIrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgICAgIDx0aD5JQk0gSkRLIDEuMzwvdGg+XG4iKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgICA8dGg+U29sYXJpczwvdGg+XG4iKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgICA8dGg+QXBwbGU8L3RoPlxuIisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICAgPHRoPkhQVVggMTE8L3RoPlxuIisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICAgPHRoPk9wZW4gT2ZmaWNlPC90aD5cbiIrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgICAgIDx0aD5PdGhlcjwvdGg+XG4iKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgIDwvdHI+XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBmb3IoaW50IGkgPTA7IGk8bGlzdC5nZXRMZW5ndGgoKTtpKyspeworICAgICAgICAgICAgIE5vZGUgZGlmZkVsZW0gPSBsaXN0Lml0ZW0oaSk7CisgICAgICAgICAgICAgd3JpdGVyLnByaW50bG4oIiAgICAgICAgICAgIDx0cj5cbiIpOworICAgICAgICAgICAgIE5hbWVkTm9kZU1hcCBhdHRyYiA9IGRpZmZFbGVtLmdldEF0dHJpYnV0ZXMoKTsKKyAgICAgICAgICAgICBpZihhdHRyYi5pdGVtKDApLmdldE5vZGVWYWx1ZSgpLmVxdWFscygidGVzdCIpKSBjb250aW51ZTsKKyAgICAgICAgICAgICB3cml0ZXIucHJpbnRsbigiICAgICAgICAgICAgICAgIDx0ZD4iICsgYXR0cmIuaXRlbSgwKS5nZXROb2RlVmFsdWUoKSsiPC90ZD4iKTsKKyAgICAgICAgICAgICB3cml0ZXIucHJpbnRsbigiICAgICAgICAgICAgICAgIDx0ZD4iICsgYXR0cmIuaXRlbSgxKS5nZXROb2RlVmFsdWUoKSsiPC90ZD4iKTsKKyAgICAgICAgICAgICAvL2F0dHJpYnV0ZSAyIGlzIGlnbm9yZWQKKyAgICAgICAgICAgICB3cml0ZXIucHJpbnRsbigiICAgICAgICAgICAgICAgIDx0ZD4iICsgYXR0cmIuaXRlbSgzKS5nZXROb2RlVmFsdWUoKSsiPC90ZD4iKTsKKyAgICAgICAgICAgICAKKyAgICAgICAgICAgICBOb2RlTGlzdCBjaGlsZExpc3QgPSBkaWZmRWxlbS5nZXRDaGlsZE5vZGVzKCk7CisgICAgICAgICAgICAgZm9yKGludCBqPTA7IGo8Y2hpbGRMaXN0LmdldExlbmd0aCgpO2orKyl7CisgICAgICAgICAgICAgICAgIE5vZGUgY3VycmVudCA9IGNoaWxkTGlzdC5pdGVtKGopOworICAgICAgICAgICAgICAgICBpZihjdXJyZW50IT1udWxsICYmIGN1cnJlbnQuZ2V0Tm9kZVR5cGUoKT09Tm9kZS5FTEVNRU5UX05PREUpeworICAgICAgICAgICAgICAgICAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKGN1cnJlbnQuZ2V0Tm9kZU5hbWUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHZhbCA9IGN1cnJlbnQuZ2V0Rmlyc3RDaGlsZCgpLmdldE5vZGVWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICAgIGlmKHZhbD09bnVsbCB8fCAodmFsPXRyaW0odmFsKSkuZXF1YWxzKCIiKSkgdmFsPSImbmJzcDsiOworICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5wcmludGxuKCIgICAgICAgICAgICAgICAgPHRkPiIrdmFsKyI8L3RkPiIpOworICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgfSAgICAgICAKKworICAgICAgICAgICAgICB3cml0ZXIucHJpbnRsbigiICAgICAgICAgICAgPC90cj5cbiIpOworICAgICAgICB9ICAgCisgICAgICAgIHdyaXRlci5wcmludGxuKCAiICAgICAgICA8L3RhYmxlPlxuIisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIDwvYm9keT5cbiIrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjwvaHRtbD4iKTsKKyAgICAgICAgd3JpdGVyLmZsdXNoKCk7CisgICAgfQorICAgIHByaXZhdGUgdm9pZCAgIHByaW50SFRNTF8xKFByaW50V3JpdGVyIHdyaXRlcil7CisgICAgICAgIE5vZGVMaXN0IGxpc3Q9IHJlc3VsdERvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJkaWZmZXJlbmNlX2VsZW1lbnQiKTsKKyAgICAgICAgd3JpdGVyLnByaW50bG4oIjxodG1sPlxuIisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgPGhlYWQ+XG4iKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj1cIkNvbnRlbnQtVHlwZVwiIGNvbnRlbnQ9XCJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLThcIj5cbiIrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICA8dGl0bGU+Iitsb2NhbGVTdHIrIjwvdGl0bGU+XG4iKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICA8L2hlYWQ+XG4iKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICA8Ym9keT5cbiIrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICA8cD48Yj4iK2xvY2FsZVN0cisiKCIrbG9jYWxlLmdldERpc3BsYXlMYW5ndWFnZSgpKyJfIitsb2NhbGUuZ2V0RGlzcGxheUNvdW50cnkoKSsiKTwvYj48L3A+XG4iKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgPHRhYmxlIGJvcmRlcj1cIjFcIiBjZWxsc3BhY2luZz1cIjBcIj5cbiIrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgPHRyPlxuIisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICAgPHRoPlBhcmVudE5vZGU8L3RoPlxuIisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICAgPHRoPk5hbWU8L3RoPlxuIisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICAgPHRoPklEPC90aD5cbiIrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgICAgIDx0aD5JQ1UgMi4xPC90aD5cbiIrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgICAgIDx0aD5JQk0gVG9yb250bzwvdGg+XG4iKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgICA8dGg+V2luZG93cyAyMDAwPC90aD5cbiIrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgICAgIDx0aD5TdW4gSkRLIDEuMzwvdGg+XG4iKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgICA8dGg+SUJNIEpESyAxLjM8L3RoPlxuIisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICAgPHRoPlNvbGFyaXM8L3RoPlxuIisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICAgPHRoPkFwcGxlPC90aD5cbiIrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgICAgIDx0aD5IUFVYIDExPC90aD5cbiIrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgICAgIDx0aD5PcGVuIE9mZmljZTwvdGg+XG4iKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgICA8dGg+T3RoZXI8L3RoPlxuIisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICA8L3RyPlxuIik7CisgICAgICAgIAorICAgICAgICBIYXNodGFibGUgY29sb3JIYXNoID0gbmV3IEhhc2h0YWJsZSgpOworICAgICAgICBjb2xvckhhc2gucHV0KCJpY3UiLCIjRDNEM0QzIik7ICAgICAgICAKKyAgICAgICAgY29sb3JIYXNoLnB1dCgiaWJtX3Rvcm9udG8iLCIjRkY3Nzc3Iik7CisgICAgICAgIGNvbG9ySGFzaC5wdXQoIndpbmRvd3MiLCIjOThGQjk4Iik7CisgICAgICAgIGNvbG9ySGFzaC5wdXQoInN1bl9qZGsiLCIjREREREZGIik7CisgICAgICAgIGNvbG9ySGFzaC5wdXQoImlibV9qZGsiLCIjRkZCQkJCIik7CisgICAgICAgIGNvbG9ySGFzaC5wdXQoImhwX3V4IiwiI0ZGRTRCNSIpOworICAgICAgICBjb2xvckhhc2gucHV0KCJhcHBsZSIsIiNGRkJCQkIiKTsKKyAgICAgICAgY29sb3JIYXNoLnB1dCgic29sYXJpcyIsIiNFMEZGRkYiKTsKKyAgICAgICAgY29sb3JIYXNoLnB1dCgib3RoZXIiLCIjQ0NDQ0ZGIik7CisgICAgICAgIGJvb2xlYW4gaGFzRGF0YSA9ZmFsc2U7ICAgICAgICAgIAorICAgICAgICBmb3IoaW50IGkgPTA7IGk8bGlzdC5nZXRMZW5ndGgoKTtpKyspeworICAgICAgICAgICAgIE5vZGUgZGlmZkVsZW0gPSBsaXN0Lml0ZW0oaSk7CisgICAgICAgICAgICAgTmFtZWROb2RlTWFwIGF0dHJiID0gZGlmZkVsZW0uZ2V0QXR0cmlidXRlcygpOworICAgICAgICAgICAgCisgICAgICAgICAgICAgaWYoYXR0cmIuaXRlbSgwKS5nZXROb2RlVmFsdWUoKS5lcXVhbHMoInRlc3QiKSB8fCBhdHRyYi5pdGVtKDApLmdldE5vZGVWYWx1ZSgpLmVxdWFscygiaWRlbnRpdHkiKSkgY29udGludWU7CisgICAgICAgICAgICAgCisgICAgICAgICAgICAgd3JpdGVyLnByaW50bG4oIiAgICAgICAgICAgIDx0cj5cbiIpOworICAgICAgICAgICAgIHdyaXRlci5wcmludGxuKCIgICAgICAgICAgICAgICAgPHRkPiIgKyBhdHRyYi5pdGVtKDApLmdldE5vZGVWYWx1ZSgpKyI8L3RkPiIpOworICAgICAgICAgICAgIHdyaXRlci5wcmludGxuKCIgICAgICAgICAgICAgICAgPHRkPiIgKyBhdHRyYi5pdGVtKDEpLmdldE5vZGVWYWx1ZSgpKyI8L3RkPiIpOworICAgICAgICAgICAgIC8vYXR0cmlidXRlIDIgaXMgaWdub3JlZAorICAgICAgICAgICAgIHdyaXRlci5wcmludGxuKCIgICAgICAgICAgICAgICAgPHRkPiIgKyBhdHRyYi5pdGVtKDMpLmdldE5vZGVWYWx1ZSgpKyI8L3RkPiIpOworICAgICAgICAgICAgIAorICAgICAgICAgICAgIE5vZGVMaXN0IGNoaWxkTGlzdCA9IGRpZmZFbGVtLmdldENoaWxkTm9kZXMoKTsKKyAgICAgICAgICAgICBmb3IoaW50IGo9MDsgajxjaGlsZExpc3QuZ2V0TGVuZ3RoKCk7aisrKXsKKyAgICAgICAgICAgICAgICAgTm9kZSBjdXJyZW50ID0gY2hpbGRMaXN0Lml0ZW0oaik7CisgICAgICAgICAgICAgICAgIGlmKGN1cnJlbnQhPW51bGwgJiYgY3VycmVudC5nZXROb2RlVHlwZSgpPT1Ob2RlLkVMRU1FTlRfTk9ERSl7CisgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oY3VycmVudC5nZXROb2RlTmFtZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgdmFsID0gY3VycmVudC5nZXRGaXJzdENoaWxkKCkuZ2V0Tm9kZVZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgICAgaWYodmFsPT1udWxsIHx8ICh2YWw9dHJpbSh2YWwpKS5lcXVhbHMoIiIpKSB2YWw9IiZuYnNwOyI7CisgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGNvbG9yPSIjRkZGRkZGIjsKKyAgICAgICAgICAgICAgICAgICAgICBpZighdmFsLmVxdWFscygiUy5OLkEiKSAmJiAhdmFsLmVxdWFscygiJm5ic3A7IikpeworCSAgICAgICAgICAgICAgICAgICAgICBmb3IoaW50IGs9MDsgazxjaGlsZExpc3QuZ2V0TGVuZ3RoKCk7aysrKXsKKwkgICAgICAgICAgICAgICAgICAgICAgICAgTm9kZSBuID0gY2hpbGRMaXN0Lml0ZW0oayk7CisJICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG4hPW51bGwgJiYgbi5nZXROb2RlVHlwZSgpPT1Ob2RlLkVMRU1FTlRfTk9ERSl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBuVmFsID1uLmdldEZpcnN0Q2hpbGQoKS5nZXROb2RlVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8taWJtX2pkayBjOlxOTFRDXElCTUpES1xYTUxcY3NfQ1oueG1sIC1zdW5famRrIGM6XE5MVENcSmF2YVx4bWxcY3NfQ1oueG1sIC13aW5kb3dzIGM6XE5MVENcd2luZG93c1x4bWxcY3NfQ1oueG1sIC1ocF91eCBjOlxOTFRDXGhwXHhtbFxjc19DWi54bWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCAoIW5WYWwuZXF1YWxzKCJTLk4uQSIpJiYgIXZhbC5lcXVhbHMoIiZuYnNwOyIpKSYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsLmVxdWFscyhuVmFsKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYXR0cmIuaXRlbSgxKS5nZXROb2RlVmFsdWUoKS5lcXVhbHMoInBhdHRlcm4iKSkmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhcmVQYXR0ZXJucyh2YWwsblZhbCkpfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGF0dHJiLml0ZW0oMCkuZ2V0Tm9kZVZhbHVlKCkuZXF1YWxzKCJwYXR0ZXJucyIpKSYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGFyZVBhdHRlcm5zKHZhbCxuVmFsKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApeyAKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBzdHIgPSAoU3RyaW5nKWNvbG9ySGFzaC5nZXQobi5nZXROb2RlTmFtZSgpKTsKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHN0ciE9bnVsbCl7CisJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9c3RyOworCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgaWYoIXZhbC5lcXVhbHMoIlMuTi5BIikpeworCSAgICAgICAgICAgICAgICAgICAgICBOYW1lZE5vZGVNYXAgYXR0TGlzdCA9IGN1cnJlbnQuZ2V0QXR0cmlidXRlcygpOworCSAgICAgICAgICAgICAgICAgICAgICBpZihhdHRMaXN0LmdldE5hbWVkSXRlbSgiY2FzZV9kaWZmIikuZ2V0Tm9kZVZhbHVlKCkuZXF1YWxzKCJmYWxzZSIpKXsKKwkgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIucHJpbnRsbigiICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIrY29sb3IrIj4iK3ZhbCsiPC90ZD4iKTsKKwkgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7CisJICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLnByaW50bG4oIiAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iK2NvbG9yKyI+IisKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwrCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxmb250IGNvbG9yPSNBNTJBMkE+IChjYXNlIGRpZmZlcmVuY2Ugb25seSk8L2ZvbnQ+IisKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPC90ZD4iKTsKKwkgICAgICAgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICAgICAgICBoYXNEYXRhPXRydWU7CisgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgfSAgICAgICAKKworICAgICAgICAgICAgICB3cml0ZXIucHJpbnRsbigiICAgICAgICAgICAgPC90cj5cbiIpOworICAgICAgICB9CisgIAorICAgICAgICB3cml0ZXIucHJpbnRsbiggIiAgICAgICAgPC90YWJsZT5cbiIpOworICAgICAgICAKKyAgICAgICAgaWYoIWhhc0RhdGEpeworICAgICAgICAgICAgd3JpdGVyLnByaW50bG4oICIgICAgICAgPHA+PGZvbnQgc2l6ZT0xNiBjb2xvcj0jRkYwMDAwPiBEYXRhIGV4aXN0cyBvbmx5IGluIElDVSA8L2ZvbnQ+PC9wPlxuIik7CisgICAgICAgIH0gCisgICAgICAgIHdyaXRlci5wcmludGxuKCIgICAgICAgIDxwPkNyZWF0ZWQgb246ICIgKyBjYWwuZ2V0VGltZSgpICsiPC9wPlxuIisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIDwvYm9keT5cbiIrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjwvaHRtbD4iKTsKKyAgICAgICAgd3JpdGVyLmZsdXNoKCk7CisgICAgfQorCisKKyAgICAvKioKKyAgICAgKiBDb21wYXJlIHR3byBmaWxlcyBieSBwYXJzaW5nIGludG8gRE9NcyBhbmQgY29tcGFyaW5nIHRyZWVzLgorICAgICAqIEBwYXJhbSBnb2xkRmlsZU5hbWUgZXhwZWN0ZWQgZmlsZQorICAgICAqIEBwYXJhbSB0ZXN0RmlsZU5hbWUgYWN0dWFsIGZpbGUKKyAgICAgKiBAcGFyYW0gcmVwb3J0ZXIgUHJpbnRXcml0ZXIgdG8gZHVtcCBzdGF0dXMgaW5mbyB0bworICAgICAqIEBwYXJhbSBhcnJheSBvZiB3YXJuaW5nIGZsYWdzIChmb3Igd2hpdGVzcGFjZSBkaWZmcywgSSB0aGluaz8pCisgICAgICogTkVFRFNET0MgQHBhcmFtIHdhcm5pbmcKKyAgICAgKiBAcGFyYW0gYXR0cmlidXRlcyB0byBhdHRlbXB0IHRvIHNldCBvbnRvIHBhcnNlcnMKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhleSBtYXRjaCwgZmFsc2Ugb3RoZXJ3aXNlCisgICAgICovCisgICAgcHJpdmF0ZSBEb2N1bWVudCBnb2xkRG9jPW51bGw7CisgICAgCisgICAgcHVibGljIERvY3VtZW50IGdldEZ1bGx5UmVzb2x2ZWRMb2NhbGUoU3RyaW5nIGxvY2FsZU5hbWUsU3RyaW5nIGZpbGVOYW1lKXsKKyAgICAgICAgLy8gaGVyZSB3ZSBhc3N1bWUgdGhhdCAiXyIgaXMgdGhlIGRlbGltaXRlcgorICAgICAgICBEb2N1bWVudCBkb2MgPSBwYXJzZShsb2NhbGVOYW1lKTsKKyAgICAgICAgU3RyaW5nIHRlbXAgPSBsb2NhbGVOYW1lOyAgICAKKwkJaWYoKHRlbXAuaW5kZXhPZigiaWN1Iik+PTAgKSB8fCAodGVtcC5pbmRleE9mKCJqZGsiKT49MCkpeworCQkgICAgLy8gT0sgd2UgaGF2ZSBhIHBvc2l4IHN0eWxlIGxvY2FsZSBkYXRhCisJCSAgICAvLyBtZXJnZSBhbGwgZGF0YSBpbiBpbmhlcml0ZW5jZSB0cmVlIGludG8gZ29sZERvYworCQkgICAgaW50IGluZGV4ID0gLTE7CisJCSAgICB3aGlsZSgoaW5kZXggPSB0ZW1wLmluZGV4T2YoIl8iKSkgPjAgJiYgaW5kZXggPiBmaWxlTmFtZS5sYXN0SW5kZXhPZigiXFwiKSl7CisJCSAgICAgICAgRG9jdW1lbnQgcGFyZW50RG9jID0gcGFyc2UoKHRlbXAgPSB0ZW1wLnN1YnN0cmluZygwLGluZGV4KSsiLnhtbCIpKTsKKwkJICAgICAgICBpZihwYXJlbnREb2MhPW51bGwpeworCQkgICAgICAgICAgIG1lcmdlRWxlbWVudHMoZG9jLmdldERvY3VtZW50RWxlbWVudCgpLHBhcmVudERvYy5nZXREb2N1bWVudEVsZW1lbnQoKSk7CisJCSAgICAgICAgfQorCQkgICAgfQorCQl9CisgICAgICAgIAorICAgICAgICBTdHJpbmcgcm9vdEZpbGVOYW1lPSIiIDsKKyAgICAgICAgaWYoZmlsZU5hbWUubGFzdEluZGV4T2YoRmlsZS5wYXRoU2VwYXJhdG9yQ2hhcikhPS0xKXsKKyAgICAgICAgICAgIHJvb3RGaWxlTmFtZSA9IGZpbGVOYW1lLnN1YnN0cmluZygwLGZpbGVOYW1lLmxhc3RJbmRleE9mKEZpbGUucGF0aFNlcGFyYXRvckNoYXIpKzEpOworICAgICAgICB9CisgICAgICAgIHJvb3RGaWxlTmFtZSA9IHJvb3RGaWxlTmFtZSsicm9vdC54bWwiOyAgICAgICAgCisJCURvY3VtZW50IHJvb3REb2MgPSBwYXJzZShyb290RmlsZU5hbWUpOworCisJCW1lcmdlRWxlbWVudHMoZG9jLmdldERvY3VtZW50RWxlbWVudCgpLHJvb3REb2MuZ2V0RG9jdW1lbnRFbGVtZW50KCkpOworICAgICAgICByZXR1cm4gZG9jOworICAgIH0KKyAgICBwdWJsaWMgYm9vbGVhbiBjb21wYXJlKFN0cmluZyBnb2xkRmlsZU5hbWUsIFN0cmluZyBnb2xkS2V5LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyB0ZXN0RmlsZU5hbWUsIFN0cmluZyB0ZXN0S2V5LCBib29sZWFuIG1lcmdlRGF0YSkKKyAgICB7CisgICAgICAgIAorICAgICAgICAvLyBwYXJzZSB0aGUgZ29sZCBkb2Mgb25seSBpZiBpdCBpcyBudWxsCisgICAgICAgIGlmKGdvbGREb2M9PW51bGwpeworICAgICAgICAgICAgZ29sZERvYyA9IGdldEZ1bGx5UmVzb2x2ZWRMb2NhbGUoZ29sZEtleSxnb2xkRmlsZU5hbWUpOworICAgICAgICB9CisKKyAgICAgICAgLy8gcGFyc2UgdGhlIHRlc3QgZG9jIG9ubHkgaWYgZ29sZCBkb2Mgd2FzIHBhcnNlZCBPSworICAgICAgICAKKyAgICAgICAgRG9jdW1lbnQgdGVzdERvYyA9IG51bGw7CisgICAgICAgIGlmKGdvbGREb2MhPW51bGwpCisgICAgICAgICB0ZXN0RG9jID0gZ2V0RnVsbHlSZXNvbHZlZExvY2FsZSh0ZXN0S2V5LHRlc3RGaWxlTmFtZSk7CisgICAgICAgIGlmIChudWxsID09IGdvbGREb2MpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRvZXNOb3RFeGlzdC5hZGQoZ29sZEtleSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobnVsbCA9PSB0ZXN0RG9jKQorICAgICAgICB7CisgICAgICAgICAgICBkb2VzTm90RXhpc3QuYWRkKHRlc3RLZXkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGlmKG1lcmdlRGF0YSl7CisgICAgICAgICAgICByZXR1cm4gZXh0cmFjdE1lcmdlRGF0YShnb2xkRG9jLGdvbGRLZXksdGVzdERvYyx0ZXN0S2V5KTsKKyAgICAgICAgfWVsc2V7ICAgCisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUVsZW1lbnRzQW5kRGF0YShnb2xkRG9jLGdvbGRLZXksdGVzdERvYyx0ZXN0S2V5KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBib29sZWFuIGNhbm9uaWNhbCAgPSBmYWxzZTsKKyAgICAKKyAgICBTdHJpbmcgIGVuY29kaW5nICAgPSAiVVRGLTgiOyAvLyBkZWZhdWx0IGVuY29kaW5nCisgICAgCisgICAgLyoqIFJldHVybnMgYSBzb3J0ZWQgbGlzdCBvZiBhdHRyaWJ1dGVzLiAqLworICAgIHByb3RlY3RlZCBBdHRyW10gc29ydEF0dHJpYnV0ZXMoTmFtZWROb2RlTWFwIGF0dHJzKSB7CisKKyAgICAgICAgaW50IGxlbiA9IChhdHRycyAhPSBudWxsKSA/IGF0dHJzLmdldExlbmd0aCgpIDogMDsKKyAgICAgICAgQXR0ciBhcnJheVtdID0gbmV3IEF0dHJbbGVuXTsKKyAgICAgICAgZm9yICggaW50IGkgPSAwOyBpIDwgbGVuOyBpKysgKSB7CisgICAgICAgICAgICBhcnJheVtpXSA9IChBdHRyKWF0dHJzLml0ZW0oaSk7CisgICAgICAgIH0KKyAgICAgICAgZm9yICggaW50IGkgPSAwOyBpIDwgbGVuIC0gMTsgaSsrICkgeworICAgICAgICAgICAgU3RyaW5nIG5hbWUgID0gYXJyYXlbaV0uZ2V0Tm9kZU5hbWUoKTsKKyAgICAgICAgICAgIGludCAgICBpbmRleCA9IGk7CisgICAgICAgICAgICBmb3IgKCBpbnQgaiA9IGkgKyAxOyBqIDwgbGVuOyBqKysgKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIGN1ck5hbWUgPSBhcnJheVtqXS5nZXROb2RlTmFtZSgpOworICAgICAgICAgICAgICAgIGlmICggY3VyTmFtZS5jb21wYXJlVG8obmFtZSkgPCAwICkgeworICAgICAgICAgICAgICAgICAgICBuYW1lICA9IGN1ck5hbWU7CisgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gajsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIGluZGV4ICE9IGkgKSB7CisgICAgICAgICAgICAgICAgQXR0ciB0ZW1wICAgID0gYXJyYXlbaV07CisgICAgICAgICAgICAgICAgYXJyYXlbaV0gICAgID0gYXJyYXlbaW5kZXhdOworICAgICAgICAgICAgICAgIGFycmF5W2luZGV4XSA9IHRlbXA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4oYXJyYXkpOworCisgICAgfSAvLyBzb3J0QXR0cmlidXRlcyhOYW1lZE5vZGVNYXApOkF0dHJbXQorICAgIAorICAgICAgICAvKiogTm9ybWFsaXplcyB0aGUgZ2l2ZW4gc3RyaW5nLiAqLworICAgIHByb3RlY3RlZCBTdHJpbmcgbm9ybWFsaXplKFN0cmluZyBzKSB7CisgICAgICAgIFN0cmluZ0J1ZmZlciBzdHIgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisKKyAgICAgICAgaW50IGxlbiA9IChzICE9IG51bGwpID8gcy5sZW5ndGgoKSA6IDA7CisgICAgICAgIGZvciAoIGludCBpID0gMDsgaSA8IGxlbjsgaSsrICkgeworICAgICAgICAgICAgY2hhciBjaCA9IHMuY2hhckF0KGkpOworICAgICAgICAgICAgc3dpdGNoICggY2ggKSB7CisgICAgICAgICAgICBjYXNlICc8JzogeworICAgICAgICAgICAgICAgICAgICBzdHIuYXBwZW5kKCImbHQ7Iik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgJz4nOiB7CisgICAgICAgICAgICAgICAgICAgIHN0ci5hcHBlbmQoIiZndDsiKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSAnJic6IHsKKyAgICAgICAgICAgICAgICAgICAgc3RyLmFwcGVuZCgiJmFtcDsiKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSAnIic6IHsKKyAgICAgICAgICAgICAgICAgICAgc3RyLmFwcGVuZCgiJnF1b3Q7Iik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgJ1wnJzogeworICAgICAgICAgICAgICAgICAgICBzdHIuYXBwZW5kKCImYXBvczsiKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSAnXHInOgorICAgICAgICAgICAgY2FzZSAnXG4nOiB7CisgICAgICAgICAgICAgICAgICAgIGlmICggY2Fub25pY2FsICkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RyLmFwcGVuZCgiJiMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ci5hcHBlbmQoSW50ZWdlci50b1N0cmluZyhjaCkpOworICAgICAgICAgICAgICAgICAgICAgICAgc3RyLmFwcGVuZCgnOycpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgLy8gZWxzZSwgZGVmYXVsdCBhcHBlbmQgY2hhcgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgICAgICAgICAgICAgc3RyLmFwcGVuZChjaCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuKHN0ci50b1N0cmluZygpKTsKKworICAgIH0gLy8gbm9ybWFsaXplKFN0cmluZyk6U3RyaW5nCisKKworICAgIC8qKiBQcmludHMgdGhlIHNwZWNpZmllZCBub2RlLCByZWN1cnNpdmVseS4gKi8KKyAgICBwdWJsaWMgdm9pZCBwcmludChQcmludFdyaXRlciBvdXQsIE5vZGUgbm9kZSkgeworCisgICAgICAgIC8vIGlzIHRoZXJlIGFueXRoaW5nIHRvIGRvPworICAgICAgICBpZiAoIG5vZGUgPT0gbnVsbCApIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGludCB0eXBlID0gbm9kZS5nZXROb2RlVHlwZSgpOworICAgICAgICAKKyAgICAgICAgc3dpdGNoICggdHlwZSApIHsKKyAgICAgICAgLy8gcHJpbnQgZG9jdW1lbnQKKyAgICAgICAgY2FzZSBOb2RlLkRPQ1VNRU5UX05PREU6IHsKKyAgICAgICAgICAgICAgIGlmICggIWNhbm9uaWNhbCApIHsKKyAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50bG4oIjw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cIiIrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nICsgIlwiPz4iKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLy9wcmludCgoKERvY3VtZW50KW5vZGUpLmdldERvY3VtZW50RWxlbWVudCgpKTsKKworICAgICAgICAgICAgICAgIE5vZGVMaXN0IGNoaWxkcmVuID0gbm9kZS5nZXRDaGlsZE5vZGVzKCk7CisgICAgICAgICAgICAgICAgZm9yICggaW50IGlDaGlsZCA9IDA7IGlDaGlsZCA8IGNoaWxkcmVuLmdldExlbmd0aCgpOyBpQ2hpbGQrKyApIHsKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQob3V0LGNoaWxkcmVuLml0ZW0oaUNoaWxkKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG91dC5mbHVzaCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBwcmludCBlbGVtZW50IHdpdGggYXR0cmlidXRlcworICAgICAgICBjYXNlIE5vZGUuRUxFTUVOVF9OT0RFOiB7CisgICAgICAgICAgICAgICAgb3V0LnByaW50KCc8Jyk7CisgICAgICAgICAgICAgICAgb3V0LnByaW50KG5vZGUuZ2V0Tm9kZU5hbWUoKSk7CisgICAgICAgICAgICAgICAgQXR0ciBhdHRyc1tdID0gc29ydEF0dHJpYnV0ZXMobm9kZS5nZXRBdHRyaWJ1dGVzKCkpOworICAgICAgICAgICAgICAgIGZvciAoIGludCBpID0gMDsgaSA8IGF0dHJzLmxlbmd0aDsgaSsrICkgeworICAgICAgICAgICAgICAgICAgICBBdHRyIGF0dHIgPSBhdHRyc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50KCcgJyk7CisgICAgICAgICAgICAgICAgICAgIG91dC5wcmludChhdHRyLmdldE5vZGVOYW1lKCkpOworICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIj1cIiIpOworICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnQobm9ybWFsaXplKGF0dHIuZ2V0Tm9kZVZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50KCciJyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG91dC5wcmludCgnPicpOworICAgICAgICAgICAgICAgIE5vZGVMaXN0IGNoaWxkcmVuID0gbm9kZS5nZXRDaGlsZE5vZGVzKCk7CisgICAgICAgICAgICAgICAgaWYgKCBjaGlsZHJlbiAhPSBudWxsICkgeworICAgICAgICAgICAgICAgICAgICBpbnQgbGVuID0gY2hpbGRyZW4uZ2V0TGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgICAgIGZvciAoIGludCBpID0gMDsgaSA8IGxlbjsgaSsrICkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQob3V0LGNoaWxkcmVuLml0ZW0oaSkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBoYW5kbGUgZW50aXR5IHJlZmVyZW5jZSBub2RlcworICAgICAgICBjYXNlIE5vZGUuRU5USVRZX1JFRkVSRU5DRV9OT0RFOiB7CisgICAgICAgICAgICAgICAgaWYgKCBjYW5vbmljYWwgKSB7CisgICAgICAgICAgICAgICAgICAgIE5vZGVMaXN0IGNoaWxkcmVuID0gbm9kZS5nZXRDaGlsZE5vZGVzKCk7CisgICAgICAgICAgICAgICAgICAgIGlmICggY2hpbGRyZW4gIT0gbnVsbCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZW4gPSBjaGlsZHJlbi5nZXRMZW5ndGgoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoIGludCBpID0gMDsgaSA8IGxlbjsgaSsrICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KG91dCxjaGlsZHJlbi5pdGVtKGkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG91dC5wcmludCgnJicpOworICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnQobm9kZS5nZXROb2RlTmFtZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50KCc7Jyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBwcmludCBjZGF0YSBzZWN0aW9ucworICAgICAgICBjYXNlIE5vZGUuQ0RBVEFfU0VDVElPTl9OT0RFOiB7CisgICAgICAgICAgICAgICAgaWYgKCBjYW5vbmljYWwgKSB7CisgICAgICAgICAgICAgICAgICAgIG91dC5wcmludChub3JtYWxpemUobm9kZS5nZXROb2RlVmFsdWUoKSkpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG91dC5wcmludCgiPCFbQ0RBVEFbIik7CisgICAgICAgICAgICAgICAgICAgIG91dC5wcmludChub2RlLmdldE5vZGVWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50KCJdXT4iKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIHByaW50IHRleHQKKyAgICAgICAgY2FzZSBOb2RlLlRFWFRfTk9ERTogeworICAgICAgICAgICAgICAgIG91dC5wcmludChub3JtYWxpemUobm9kZS5nZXROb2RlVmFsdWUoKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBwcmludCBwcm9jZXNzaW5nIGluc3RydWN0aW9uCisgICAgICAgIGNhc2UgTm9kZS5QUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU6IHsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnQoIjw/Iik7CisgICAgICAgICAgICAgICAgb3V0LnByaW50KG5vZGUuZ2V0Tm9kZU5hbWUoKSk7CisgICAgICAgICAgICAgICAgU3RyaW5nIGRhdGEgPSBub2RlLmdldE5vZGVWYWx1ZSgpOworICAgICAgICAgICAgICAgIGlmICggZGF0YSAhPSBudWxsICYmIGRhdGEubGVuZ3RoKCkgPiAwICkgeworICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnQoJyAnKTsKKyAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50KGRhdGEpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiPz4iKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICggdHlwZSA9PSBOb2RlLkVMRU1FTlRfTk9ERSApIHsKKyAgICAgICAgICAgIG91dC5wcmludCgiPC8iKTsKKyAgICAgICAgICAgIG91dC5wcmludChub2RlLmdldE5vZGVOYW1lKCkpOworICAgICAgICAgICAgb3V0LnByaW50KCc+Jyk7CisgICAgICAgIH0KKworICAgICAgICBvdXQuZmx1c2goKTsKKyAgICB9IC8vIHByaW50KE5vZGUpCisgICAgCisgICAgLy8gUmVwb3J0ZXIgZm9ybWF0OgorICAgIC8vIFJFQVNPTl9DT05TVEFOVDtnb2xkIHZhbDt0ZXN0IHZhbDtyZWFzb24gZGVzY3JpcHRpb24KKyAgICBwcml2YXRlIHZvaWQgYWRkTm9kZVZhbHVlKE5vZGVMaXN0IGxpc3QsU3RyaW5nIG5vZGVOYW1lLFN0cmluZyBub2RlVmFsdWUsU3RyaW5nIGNhc2VEaWZmKXsKKyAgICAgICAgZm9yKGludCBpPTA7aTxsaXN0LmdldExlbmd0aCgpO2krKyl7CisgICAgICAgICAgICBOb2RlIG5vZGUgPSBsaXN0Lml0ZW0oaSk7CisgICAgICAgICAgICBpZihub2RlTmFtZS5lcXVhbHMobm9kZS5nZXROb2RlTmFtZSgpKSl7ICAgCisgICAgICAgICAgICAgICAgbm9kZS5nZXRGaXJzdENoaWxkKCkuc2V0Tm9kZVZhbHVlKG5vZGVWYWx1ZSk7CisgICAgICAgICAgICAgICAgaWYoY2FzZURpZmYhPW51bGwpeworCSAgICAgICAgICAgICAgICBOYW1lZE5vZGVNYXAgYXR0ciA9IG5vZGUuZ2V0QXR0cmlidXRlcygpOworCSAgICAgICAgICAgICAgICBOb2RlIGNhc2VfZGlmZiA9IGF0dHIuZ2V0TmFtZWRJdGVtKCJjYXNlX2RpZmYiKTsKKwkgICAgICAgICAgICAgICAgY2FzZV9kaWZmLnNldE5vZGVWYWx1ZShjYXNlRGlmZik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHByaXZhdGUgdm9pZCBhZGRFbGVtZW50KFN0cmluZyBwYXJlbnROb2RlLCBTdHJpbmcgY2hpbGROb2RlLCBTdHJpbmcgYXR0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbm9kZU5hbWUxLCAgU3RyaW5nIHZhbHVlMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbm9kZU5hbWUyLCBTdHJpbmcgdmFsdWUyKXsKKyAgICAgICAgICAgIFN0cmluZyBpZCA7CisgICAgICAgICAgICBTdHJpbmcgY2FzZURpZmY9bnVsbDsKKyAgICAgICAgICAgIGlmKE5vcm1hbGl6ZXIuY29tcGFyZSh2YWx1ZTEsdmFsdWUyLDApIT0wKXsKKyAgICAgICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiVmFsdWUxOiAiK3ZhbHVlMSsgIiAgVmFsdWUyOiAiKyB2YWx1ZTIpOworCSAgICAgICAgICAgIGlmKE5vcm1hbGl6ZXIuY29tcGFyZSh2YWx1ZTEsdmFsdWUyLE5vcm1hbGl6ZXIuQ09NUEFSRV9JR05PUkVfQ0FTRSk9PTApeworCSAgICAgICAgICAgICAgICBjYXNlRGlmZj0idHJ1ZSI7CisJICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYoYXR0ciE9bnVsbCl7CisgICAgICAgICAgICAgICAgaWQgPSBwYXJlbnROb2RlKyJfIitjaGlsZE5vZGUrIl8iK2F0dHI7CisgICAgICAgICAgICB9ZWxzZXsKKyAgICAgICAgICAgICAgICBpZCA9IHBhcmVudE5vZGUrIl8iK2NoaWxkTm9kZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIEVsZW1lbnQgZWxlbWVudCA9IHJlc3VsdERvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsKKyAgICAgICAgICAgIE5vZGVMaXN0IG5vZGVzPW51bGw7CisgICAgICAgICAgICBOYW1lZE5vZGVNYXAgYXR0cmliTWFwPW51bGw7CisgICAgICAgICAgICBOb2RlIHJvb3ROb2RlID1yZXN1bHREb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiZGlmZmVyZW5jZV94bWwiKS5pdGVtKDApOworICAgICAgICAgICAgaWYoZWxlbWVudCE9bnVsbCl7CisgICAgICAgICAgICAgICAgbm9kZXMgPSBlbGVtZW50LmdldENoaWxkTm9kZXMoKTsKKyAgICAgICAgICAgICAgICBhdHRyaWJNYXA9ZWxlbWVudC5nZXRBdHRyaWJ1dGVzKCk7ICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH1lbHNleworICAgICAgICAgICAgICAgTm9kZUxpc3Qgbm9kZUxpc3Q9cmVzdWx0RG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImRpZmZlcmVuY2VfZWxlbWVudCIpOworICAgICAgICAgICAgICAgLy8gdGhlIGZpcnN0IG5vZGUgaXMgYWx3YXlzIHRoZSBlbXB0eSBvbmUgaW4gdGhlIHJlc3VsdCBkb2N1bWVudAorICAgICAgICAgICAgICAgLy8gc28gZ2V0IHRoYXQgbm9kZSBhbmQgY2xvbmUgaXQKKyAgICAgICAgICAgICAgIE5vZGUgbm9kZSA9IG5vZGVMaXN0Lml0ZW0oMCkuY2xvbmVOb2RlKHRydWUpOworICAgICAgICAgICAgICAgYXR0cmliTWFwPW5vZGUuZ2V0QXR0cmlidXRlcygpOworICAgICAgICAgICAgICAgbm9kZXM9IG5vZGUuZ2V0Q2hpbGROb2RlcygpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYWRkTm9kZVZhbHVlKG5vZGVzLG5vZGVOYW1lMSx2YWx1ZTEsKG5vZGVOYW1lMS5lcXVhbHMoZ29sZEtleSkpP251bGw6Y2FzZURpZmYpOworICAgICAgICAgICAgYWRkTm9kZVZhbHVlKG5vZGVzLG5vZGVOYW1lMix2YWx1ZTIsKG5vZGVOYW1lMi5lcXVhbHMoZ29sZEtleSkpP251bGw6Y2FzZURpZmYpOworICAgICAgICAgICAgTm9kZSBwYXJlbnRfbm9kZSA9IGF0dHJpYk1hcC5nZXROYW1lZEl0ZW0oInBhcmVudF9ub2RlIik7CisgICAgICAgICAgICBOb2RlIG5vZGVfbmFtZSAgID0gYXR0cmliTWFwLmdldE5hbWVkSXRlbSgibm9kZV9uYW1lIik7CisgICAgICAgICAgICBOb2RlIGlkX2F0dHJpYiAgID0gYXR0cmliTWFwLmdldE5hbWVkSXRlbSgiaWQiKTsKKyAgICAgICAgICAgIE5vZGUgaW5kZXggICAgICAgPSBhdHRyaWJNYXAuZ2V0TmFtZWRJdGVtKCJpbmRleCIpOworICAgICAgICAgICAgcGFyZW50X25vZGUuc2V0Tm9kZVZhbHVlKHBhcmVudE5vZGUpOworICAgICAgICAgICAgbm9kZV9uYW1lLnNldE5vZGVWYWx1ZShjaGlsZE5vZGUpOworICAgICAgICAgICAgaWRfYXR0cmliLnNldE5vZGVWYWx1ZShpZCk7CisgICAgICAgICAgICBpbmRleC5zZXROb2RlVmFsdWUoKGF0dHI9PW51bGwpID8gIiZuYnNwOyIgOiBhdHRyKTsKKyAgICAgICAgICAgIHJvb3ROb2RlLmFwcGVuZENoaWxkKG5vZGVzLml0ZW0oMCkuZ2V0UGFyZW50Tm9kZSgpKTsgICAgICAgCisgICAgfQorICAgIHByaXZhdGUgdm9pZCBhZGREaWZmZXJlbmNlKFN0cmluZyBwYXJlbnROb2RlLCBTdHJpbmcgY2hpbGROb2RlLCBTdHJpbmcgYXR0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbm9kZU5hbWUxLCAgU3RyaW5nIHZhbHVlMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbm9kZU5hbWUyLCBTdHJpbmcgdmFsdWUyKXsKKyAgICAgICAgICAgIFN0cmluZyBpZCA7CisgICAgICAgICAgICAvLyBEZWNvbXBvc2UgdGhlIHZhbHVlcyBhbmQgZmluZCBvdXQgaWYgdGhleSBhcmUgZXF1YWwKKyAgICAgICAgICAgIGlmKE5vcm1hbGl6ZXIuY29tcGFyZSh2YWx1ZTEsdmFsdWUyLDApPT0wKXsKKyAgICAgICAgICAgICAgICAvLyB0aGUgdmFsdWVzIGFyZSBlcXVhbCBqdXN0IHJldHVybgorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFN0cmluZyBjYXNlRGlmZj0gbnVsbDsKKyAgICAgICAgICAgIGlmKE5vcm1hbGl6ZXIuY29tcGFyZSh2YWx1ZTEsdmFsdWUyLE5vcm1hbGl6ZXIuQ09NUEFSRV9JR05PUkVfQ0FTRSk9PTApeworICAgICAgICAgICAgICAgIGNhc2VEaWZmPSJ0cnVlIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmKGF0dHIhPW51bGwpeworICAgICAgICAgICAgICAgIGlkID0gcGFyZW50Tm9kZSsiXyIrY2hpbGROb2RlKyJfIithdHRyOworICAgICAgICAgICAgfWVsc2V7CisgICAgICAgICAgICAgICAgaWQgPSBwYXJlbnROb2RlKyJfIitjaGlsZE5vZGU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBFbGVtZW50IGVsZW1lbnQgPSByZXN1bHREb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7CisgICAgICAgICAgICBOb2RlTGlzdCBub2Rlcz1udWxsOworICAgICAgICAgICAgTmFtZWROb2RlTWFwIGF0dHJpYk1hcD1udWxsOworICAgICAgICAgICAgTm9kZSByb290Tm9kZSA9cmVzdWx0RG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImRpZmZlcmVuY2VfeG1sIikuaXRlbSgwKTsKKyAgICAgICAgICAgIGlmKGVsZW1lbnQhPW51bGwpeworICAgICAgICAgICAgICAgIG5vZGVzID0gZWxlbWVudC5nZXRDaGlsZE5vZGVzKCk7CisgICAgICAgICAgICAgICAgYXR0cmliTWFwPWVsZW1lbnQuZ2V0QXR0cmlidXRlcygpOyAgICAgICAgICAgICAgCisgICAgICAgICAgICB9ZWxzZXsKKyAgICAgICAgICAgICAgIE5vZGVMaXN0IG5vZGVMaXN0PXJlc3VsdERvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJkaWZmZXJlbmNlX2VsZW1lbnQiKTsKKyAgICAgICAgICAgICAgIC8vIHRoZSBmaXJzdCBub2RlIGlzIGFsd2F5cyB0aGUgZW1wdHkgb25lIGluIHRoZSByZXN1bHQgZG9jdW1lbnQKKyAgICAgICAgICAgICAgIC8vIHNvIGdldCB0aGF0IG5vZGUgYW5kIGNsb25lIGl0CisgICAgICAgICAgICAgICBOb2RlIG5vZGUgPSBub2RlTGlzdC5pdGVtKDApLmNsb25lTm9kZSh0cnVlKTsKKyAgICAgICAgICAgICAgIGF0dHJpYk1hcD1ub2RlLmdldEF0dHJpYnV0ZXMoKTsKKyAgICAgICAgICAgICAgIG5vZGVzPSBub2RlLmdldENoaWxkTm9kZXMoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFkZE5vZGVWYWx1ZShub2Rlcyxub2RlTmFtZTEsdmFsdWUxLGNhc2VEaWZmKTsKKyAgICAgICAgICAgIGFkZE5vZGVWYWx1ZShub2Rlcyxub2RlTmFtZTIsdmFsdWUyLGNhc2VEaWZmKTsKKyAgICAgICAgICAgIE5vZGUgcGFyZW50X25vZGUgPSBhdHRyaWJNYXAuZ2V0TmFtZWRJdGVtKCJwYXJlbnRfbm9kZSIpOworICAgICAgICAgICAgTm9kZSBub2RlX25hbWUgICA9IGF0dHJpYk1hcC5nZXROYW1lZEl0ZW0oIm5vZGVfbmFtZSIpOworICAgICAgICAgICAgTm9kZSBpZF9hdHRyaWIgICA9IGF0dHJpYk1hcC5nZXROYW1lZEl0ZW0oImlkIik7CisgICAgICAgICAgICBOb2RlIGluZGV4ICAgICAgID0gYXR0cmliTWFwLmdldE5hbWVkSXRlbSgiaW5kZXgiKTsKKyAgICAgICAgICAgIHBhcmVudF9ub2RlLnNldE5vZGVWYWx1ZShwYXJlbnROb2RlKTsKKyAgICAgICAgICAgIG5vZGVfbmFtZS5zZXROb2RlVmFsdWUoY2hpbGROb2RlKTsKKyAgICAgICAgICAgIGlkX2F0dHJpYi5zZXROb2RlVmFsdWUoaWQpOworICAgICAgICAgICAgaW5kZXguc2V0Tm9kZVZhbHVlKChhdHRyPT1udWxsKSA/ICImbmJzcDsiIDogYXR0cik7CisgICAgICAgICAgICByb290Tm9kZS5hcHBlbmRDaGlsZChub2Rlcy5pdGVtKDApLmdldFBhcmVudE5vZGUoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIAorICAgICAgICAgICAgCisgICAgfQorICAgIAorICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vCisgICAgLy8gICBNZXJnZSBlbGVtZW50IG5vZGVzLiAgZGVzdCBhbmQgc291cmNlIGFyZSBFbGVtZW50IG5vZGVzIG9mIHRoZSBzYW1lIHR5cGUuCisgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgTW92ZSBhbnkgY2hpbGRyZW4gRWxlbWVudHMgdGhhdCBleGlzdCBpbiB0aGUgc291cmNlIGJ1dCBub3QgaW4gdGhlCisgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb24gaW50byB0aGUgZGVzdGluYXRpb24KKyAgICAvLworICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHByaXZhdGUgdm9pZCAgbWVyZ2VFbGVtZW50cyhOb2RlIGRlc3QsIE5vZGUgc291cmNlKSB7CisgICAgICAgIE5vZGUgICBjaGlsZE9mU291cmNlOworICAgICAgICBOb2RlICAgY2hpbGRPZkRlc3Q7CisgICAgICAgIAorICAgICAgICBEb2N1bWVudCBkZXN0RG9jID0gZGVzdC5nZXRPd25lckRvY3VtZW50KCk7CisgICAgICAgIE5vZGUgc3BhY2VzID0gZGVzdERvYy5jcmVhdGVUZXh0Tm9kZSgiXG4gICAgICAgIik7CisgICAgICAgIAorICAgICAgICBmb3IgKGNoaWxkT2ZTb3VyY2UgPSBzb3VyY2UuZ2V0Rmlyc3RDaGlsZCgpOyBjaGlsZE9mU291cmNlICE9IG51bGw7IGNoaWxkT2ZTb3VyY2UgPSBjaGlsZE9mU291cmNlLmdldE5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgICAgIGlmIChjaGlsZE9mU291cmNlLmdldE5vZGVUeXBlKCkgIT0gTm9kZS5FTEVNRU5UX05PREUpIHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmKGNoaWxkT2ZTb3VyY2UuZ2V0Tm9kZU5hbWUoKS5lcXVhbHMoImNvbGxhdGlvbiIpIAorICAgICAgICAgICAgICAgIHx8IGNoaWxkT2ZTb3VyY2UuZ2V0Tm9kZU5hbWUoKS5lcXVhbHMoInRpbWVab25lTmFtZXMiKQorICAgICAgICAgICAgICAgICl7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBib29sZWFuIGRpZE1lcmdlID0gZmFsc2U7CisgICAgICAgICAgICBmb3IgKGNoaWxkT2ZEZXN0ID0gZGVzdC5nZXRGaXJzdENoaWxkKCk7IGNoaWxkT2ZEZXN0ICE9IG51bGw7IGNoaWxkT2ZEZXN0ID0gY2hpbGRPZkRlc3QuZ2V0TmV4dFNpYmxpbmcoKSkgeworICAgICAgICAgICAgICAgIGlmIChjaGlsZE9mRGVzdC5nZXROb2RlVHlwZSgpID09IE5vZGUuRUxFTUVOVF9OT0RFICAmJgorICAgICAgICAgICAgICAgICAgICAgICBjaGlsZE9mRGVzdC5nZXROb2RlTmFtZSgpLmVxdWFscyhjaGlsZE9mU291cmNlLmdldE5vZGVOYW1lKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBkZXN0aW5hdGlvbiBkb2N1bWVudCBhbHJlYWR5IGhhcyBhbiBlbGVtZW50IG9mIHRoaXMgdHlwZSBhdCB0aGlzIGxldmVsLgorICAgICAgICAgICAgICAgICAgICAvLyAgIFJlY3Vyc2UgdG8gcGljayB1cCBhbnkgZXh0cmEgY2hpbGRyZW4gdGhhdCB0aGUgc291cmNlIG5vZGUgbWF5IGhhdmUuCisgICAgICAgICAgICAgICAgICAgIG1lcmdlRWxlbWVudHMoY2hpbGRPZkRlc3QsIGNoaWxkT2ZTb3VyY2UpOworICAgICAgICAgICAgICAgICAgICBkaWRNZXJnZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgIGlmIChkaWRNZXJnZSA9PSBmYWxzZSkgeworICAgICAgICAgICAgICAgIC8vIGRlc3RpbmF0aW9uIGRvY3VtZW50IGhhZCBubyBjb3JyZXNwb25kaW5nIG5vZGUgdG8gdGhlIGN1cnJlbnQgY2hpbGRPZlNvdXJjZS4gIEFkZCBpdC4KKyAgICAgICAgICAgICAgICBOb2RlIGltcG9ydGVkTm9kZSA9IGRlc3REb2MuaW1wb3J0Tm9kZShjaGlsZE9mU291cmNlLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBkZXN0LmFwcGVuZENoaWxkKHNwYWNlcyk7CisgICAgICAgICAgICAgICAgZGVzdC5hcHBlbmRDaGlsZChpbXBvcnRlZE5vZGUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIC8vZGVzdC5hcHBlbmRDaGlsZChzcGFjZXMpOworICAgICAgICAKKyAgICB9CisgICAgCisgICAgZG91YmxlIGFyZ3MxICA9IDEwMDAwMDAwMDAwLjAwOworICAgIGRvdWJsZSBhcmdzMiAgPSAtMTAwMDAwMDAwMDAuMDA7CisgICAgCisgICAgRGVjaW1hbEZvcm1hdCBmbXQgPSBuZXcgRGVjaW1hbEZvcm1hdCgpOyAKKyAgICAKKyAgICBwcml2YXRlIGJvb2xlYW4gY29tcGFyZVBhdHRlcm5zKFN0cmluZyBwYXQxLFN0cmluZyBwYXQyKXsKKyAgICAgICAgZm10LmFwcGx5UGF0dGVybihwYXQxKTsKKyAgICAgICAgU3RyaW5nIHMxID0gZm10LmZvcm1hdChhcmdzMSk7CisgICAgICAgIFN0cmluZyBzMyA9IGZtdC5mb3JtYXQoYXJnczIpOworICAgICAgICBmbXQuYXBwbHlQYXR0ZXJuKHBhdDIpOworICAgICAgICBTdHJpbmcgczIgPSBmbXQuZm9ybWF0KGFyZ3MxKTsKKyAgICAgICAgU3RyaW5nIHM0ID0gZm10LmZvcm1hdChhcmdzMik7CisgICAgICAgIGlmKHMxLmVxdWFscyhzMikgJiYgczMuZXF1YWxzKHM0KSl7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHByaXZhdGUgYm9vbGVhbiBjb21wYXJlRWxlbWVudHNBbmREYXRhKE5vZGUgZ29sZE5vZGUsU3RyaW5nIGdvbGRLZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnQgdGVzdERvYyxTdHJpbmcgdGVzdEtleSl7CisgICAgCisgICAgICAgIE5vZGUgY2hpbGRPZlNvdXJjZTsKKworICAgICAgICBmb3IoY2hpbGRPZlNvdXJjZSA9IGdvbGROb2RlLmdldEZpcnN0Q2hpbGQoKTsgY2hpbGRPZlNvdXJjZSAhPSBudWxsOyBjaGlsZE9mU291cmNlID0gY2hpbGRPZlNvdXJjZS5nZXROZXh0U2libGluZygpKSB7CisgICAgICAgICAgICBpZiAoY2hpbGRPZlNvdXJjZS5nZXROb2RlVHlwZSgpICE9IE5vZGUuRUxFTUVOVF9OT0RFKSB7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZihjaGlsZE9mU291cmNlLmdldE5vZGVOYW1lKCkuZXF1YWxzKCJjb2xsYXRpb24iKSAKKyAgICAgICAgICAgICAgICB8fCBjaGlsZE9mU291cmNlLmdldE5vZGVOYW1lKCkuZXF1YWxzKCJ0aW1lWm9uZU5hbWVzIikKKyAgICAgICAgICAgICAgICB8fCBjaGlsZE9mU291cmNlLmdldE5vZGVOYW1lKCkuZXF1YWxzKCJ2ZXJzaW9uaW5nIikpeworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgTmFtZWROb2RlTWFwIGF0dHIgPSBjaGlsZE9mU291cmNlLmdldEF0dHJpYnV0ZXMoKTsgICAgICAgCisgICAgICAgICAgICBOb2RlTGlzdCBkZXN0TGlzdCA9IHRlc3REb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoY2hpbGRPZlNvdXJjZS5nZXROb2RlTmFtZSgpKTsKKyAgICAgICAgICAgIE5vZGUgc291cmNlSUQgPSBhdHRyLmdldE5hbWVkSXRlbSgiaWQiKTsKKyAgICAgICAgICAgCisgICAgCisgICAgICAgICAgICBmb3IoaW50IGkgPTAgOyBpPGRlc3RMaXN0LmdldExlbmd0aCgpOyBpKyspeworICAgICAgICAgICAgICAgIE5vZGUgZGVzdE5vZGUgPWRlc3RMaXN0Lml0ZW0oaSk7CisgICAgICAgICAgICAgICAgTmFtZWROb2RlTWFwIGRlc3RBdHRyID0gZGVzdE5vZGUuZ2V0QXR0cmlidXRlcygpOworICAgICAgICAgICAgICAgIC8qIGdldCB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBub2RlcyB3aXRoIGF0dHJpYnV0ZSBpZCAqLworICAgICAgICAgICAgICAgIE5vZGUgZGVzdElEID0gZGVzdEF0dHIuZ2V0TmFtZWRJdGVtKCJpZCIpOworICAgICAgICAgICAgICAgIGlmKGRlc3RJRCE9bnVsbCAmJiBzb3VyY2VJRCE9bnVsbCl7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBzb3VyY2VWYWwgPXNvdXJjZUlELmdldE5vZGVWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZGVzdFZhbCA9IGRlc3RJRC5nZXROb2RlVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmKHNvdXJjZVZhbC5lcXVhbHMoZGVzdFZhbCkpeworICAgICAgICAgICAgICAgICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oc291cmNlVmFsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKGRlc3RWYWwpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYoZGVzdE5vZGUuaGFzQ2hpbGROb2RlcygpICYmIGNoaWxkT2ZTb3VyY2UuaGFzQ2hpbGROb2RlcygpKXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihkZXN0Tm9kZS5nZXRQYXJlbnROb2RlKCkuZ2V0Tm9kZU5hbWUoKS5lcXVhbHMoY2hpbGRPZlNvdXJjZS5nZXRQYXJlbnROb2RlKCkuZ2V0Tm9kZU5hbWUoKSkpeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZGVzdE5vZGVWYWwgPSB0cmltKGRlc3ROb2RlLmdldEZpcnN0Q2hpbGQoKS5nZXROb2RlVmFsdWUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBzb3VyY2VOb2RlVmFsID0gdHJpbShjaGlsZE9mU291cmNlLmdldEZpcnN0Q2hpbGQoKS5nZXROb2RlVmFsdWUoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oY2hpbGRPZlNvdXJjZS5nZXRGaXJzdENoaWxkKCkuZ2V0Tm9kZU5hbWUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKGRlc3ROb2RlLmdldEZpcnN0Q2hpbGQoKS5nZXROb2RlTmFtZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoIWRlc3ROb2RlVmFsLmVxdWFscyhzb3VyY2VOb2RlVmFsKSl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIHdyaXRlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBwYXJlbnROb2RlTmFtZSA9IHRyaW0oY2hpbGRPZlNvdXJjZS5nZXRQYXJlbnROb2RlKCkuZ2V0Tm9kZU5hbWUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgY2hpbGROb2RlTmFtZSAgPSB0cmltKGNoaWxkT2ZTb3VyY2UuZ2V0Tm9kZU5hbWUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihjaGlsZE5vZGVOYW1lLmVxdWFscygicGF0dGVybiIpKXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihjb21wYXJlUGF0dGVybnMoc291cmNlTm9kZVZhbCxkZXN0Tm9kZVZhbCkpeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHdyaXRlKXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGREaWZmZXJlbmNlKHBhcmVudE5vZGVOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGROb2RlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RWYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0S2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdE5vZGVWYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb2xkS2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlTm9kZVZhbCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9ZWxzZXsKKyAgICAgICAgICAgICAgICAgICAgaWYoZGVzdE5vZGUuZ2V0Tm9kZU5hbWUoKS5lcXVhbHMoY2hpbGRPZlNvdXJjZS5nZXROb2RlTmFtZSgpKSYmCisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0Tm9kZS5nZXRQYXJlbnROb2RlKCkuZ2V0Tm9kZU5hbWUoKS5lcXVhbHMoY2hpbGRPZlNvdXJjZS5nZXRQYXJlbnROb2RlKCkuZ2V0Tm9kZU5hbWUoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgKXsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKGRlc3ROb2RlLmhhc0NoaWxkTm9kZXMoKSAmJiBjaGlsZE9mU291cmNlLmhhc0NoaWxkTm9kZXMoKSl7CisgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGRlc3ROb2RlVmFsID0gdHJpbShkZXN0Tm9kZS5nZXRGaXJzdENoaWxkKCkuZ2V0Tm9kZVZhbHVlKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBzb3VyY2VOb2RlVmFsID0gdHJpbShjaGlsZE9mU291cmNlLmdldEZpcnN0Q2hpbGQoKS5nZXROb2RlVmFsdWUoKSk7CisgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGF0dElEID0gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZighZGVzdE5vZGVWYWwuZXF1YWxzKHNvdXJjZU5vZGVWYWwpKXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiB3cml0ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBwYXJlbnROb2RlTmFtZSA9IGNoaWxkT2ZTb3VyY2UuZ2V0UGFyZW50Tm9kZSgpLmdldE5vZGVOYW1lKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBjaGlsZE5vZGVOYW1lICA9IGNoaWxkT2ZTb3VyY2UuZ2V0Tm9kZU5hbWUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoY2hpbGROb2RlTmFtZS5lcXVhbHMoInBhdHRlcm4iKSl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoY29tcGFyZVBhdHRlcm5zKHNvdXJjZU5vZGVWYWwsZGVzdE5vZGVWYWwpKXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYod3JpdGUpeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRGlmZmVyZW5jZShwYXJlbnROb2RlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGROb2RlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0SUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RLZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3ROb2RlVmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb2xkS2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VOb2RlVmFsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgIAorICAgICAgICAgICAgY29tcGFyZUVsZW1lbnRzQW5kRGF0YShjaGlsZE9mU291cmNlLGdvbGRLZXksdGVzdERvYyx0ZXN0S2V5KTsKKyAgICAgICAgfQorICAgICAgIHJldHVybiB0cnVlOworICAgIH0gICAgCisgICAgcHJpdmF0ZSBTdHJpbmcgdHJpbShTdHJpbmcgc291cmNlKXsKKyAgICAgICAgY2hhcltdIHNyYyA9IHNvdXJjZS50b0NoYXJBcnJheSgpOworICAgICAgICBjaGFyW10gZGVzdCA9IG5ldyBjaGFyW3NyYy5sZW5ndGhdOworCisgICAgICAgIGludCBzdGFydD0wOworICAgICAgICB3aGlsZShzdGFydDwoc3JjLmxlbmd0aCkgJiYgKFVDaGFyYWN0ZXIuaXNXaGl0ZXNwYWNlKHNyY1tzdGFydF0pfHwgc3JjW3N0YXJ0XT09MHhBMCkpe3N0YXJ0Kys7fQorICAgICAgICBpbnQgc3RvcD1zcmMubGVuZ3RoLTE7CisgICAgICAgIHdoaWxlKHN0b3A+MCAmJiAoVUNoYXJhY3Rlci5pc1doaXRlc3BhY2Uoc3JjW3N0b3BdKXx8KHNyY1tzdG9wXT09MHhBMCkpKXtzdG9wLS07fQorICAgICAgICBpZihzdG9wIT0tMSAmJiBzdGFydCE9c3JjLmxlbmd0aCl7CisJICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KHNyYyxzdGFydCxkZXN0LDAsKHN0b3Atc3RhcnQpKzEpOworCSAgICAgICAgcmV0dXJuIG5ldyBTdHJpbmcoZGVzdCwwLChzdG9wLXN0YXJ0KSsxKTsKKyAgICAgICAgfWVsc2V7CisgICAgICAgICAgICByZXR1cm4gbmV3IFN0cmluZygpOworICAgICAgICB9CisgICAgICAKKyAgICB9CisgICAgcHJpdmF0ZSBib29sZWFuIGV4dHJhY3RNZXJnZURhdGEoTm9kZSBnb2xkTm9kZSxTdHJpbmcgZ29sZEtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb2N1bWVudCB0ZXN0RG9jLFN0cmluZyB0ZXN0S2V5KXsKKyAgICAKKyAgICAgICAgTm9kZSBjaGlsZE9mU291cmNlOworCisgICAgICAgIGZvcihjaGlsZE9mU291cmNlID0gZ29sZE5vZGUuZ2V0Rmlyc3RDaGlsZCgpOyBjaGlsZE9mU291cmNlICE9IG51bGw7IGNoaWxkT2ZTb3VyY2UgPSBjaGlsZE9mU291cmNlLmdldE5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgICAgIGlmIChjaGlsZE9mU291cmNlLmdldE5vZGVUeXBlKCkgIT0gTm9kZS5FTEVNRU5UX05PREUpIHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmKGNoaWxkT2ZTb3VyY2UuZ2V0Tm9kZU5hbWUoKS5lcXVhbHMoImNvbGxhdGlvbiIpIAorICAgICAgICAgICAgICAgIHx8IGNoaWxkT2ZTb3VyY2UuZ2V0Tm9kZU5hbWUoKS5lcXVhbHMoInRpbWVab25lTmFtZXMiKQorICAgICAgICAgICAgICAgIHx8IGNoaWxkT2ZTb3VyY2UuZ2V0Tm9kZU5hbWUoKS5lcXVhbHMoInZlcnNpb25pbmciKSl7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBOYW1lZE5vZGVNYXAgYXR0ciA9IGNoaWxkT2ZTb3VyY2UuZ2V0QXR0cmlidXRlcygpOyAgICAgICAKKyAgICAgICAgICAgIE5vZGVMaXN0IGRlc3RMaXN0ID0gdGVzdERvYy5nZXRFbGVtZW50c0J5VGFnTmFtZShjaGlsZE9mU291cmNlLmdldE5vZGVOYW1lKCkpOworICAgICAgICAgICAgTm9kZSBzb3VyY2VJRCA9IGF0dHIuZ2V0TmFtZWRJdGVtKCJpZCIpOworICAgIAorICAgICAgICAgICAgZm9yKGludCBpID0wIDsgaTxkZXN0TGlzdC5nZXRMZW5ndGgoKTsgaSsrKXsKKyAgICAgICAgICAgICAgICBOb2RlIGRlc3ROb2RlID1kZXN0TGlzdC5pdGVtKGkpOworICAgICAgICAgICAgICAgIE5hbWVkTm9kZU1hcCBkZXN0QXR0ciA9IGRlc3ROb2RlLmdldEF0dHJpYnV0ZXMoKTsKKyAgICAgICAgICAgICAgICAvKiBnZXQgdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gbm9kZXMgd2l0aCBhdHRyaWJ1dGUgaWQgKi8KKyAgICAgICAgICAgICAgICBOb2RlIGRlc3RJRCA9IGRlc3RBdHRyLmdldE5hbWVkSXRlbSgiaWQiKTsKKyAgICAgICAgICAgICAgICBpZihkZXN0SUQhPW51bGwgJiYgc291cmNlSUQhPW51bGwpeworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgc291cmNlSURWYWwgPXNvdXJjZUlELmdldE5vZGVWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZGVzdElEVmFsID0gZGVzdElELmdldE5vZGVWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYoc291cmNlSURWYWwuZXF1YWxzKGRlc3RJRFZhbCkpeworICAgICAgICAgICAgICAgICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oc291cmNlVmFsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKGRlc3RWYWwpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYoZGVzdE5vZGUuaGFzQ2hpbGROb2RlcygpICYmIGNoaWxkT2ZTb3VyY2UuaGFzQ2hpbGROb2RlcygpKXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihkZXN0Tm9kZS5nZXRQYXJlbnROb2RlKCkuZ2V0Tm9kZU5hbWUoKS5lcXVhbHMoY2hpbGRPZlNvdXJjZS5nZXRQYXJlbnROb2RlKCkuZ2V0Tm9kZU5hbWUoKSkpeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZGVzdE5vZGVWYWwgPSB0cmltKGRlc3ROb2RlLmdldEZpcnN0Q2hpbGQoKS5nZXROb2RlVmFsdWUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBzb3VyY2VOb2RlVmFsID0gdHJpbShjaGlsZE9mU291cmNlLmdldEZpcnN0Q2hpbGQoKS5nZXROb2RlVmFsdWUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBwYXJlbnROb2RlTmFtZSA9IHRyaW0oY2hpbGRPZlNvdXJjZS5nZXRQYXJlbnROb2RlKCkuZ2V0Tm9kZU5hbWUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBjaGlsZE5vZGVOYW1lICA9IHRyaW0oY2hpbGRPZlNvdXJjZS5nZXROb2RlTmFtZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoc291cmNlTm9kZVZhbC5sZW5ndGgoKSE9MCl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRFbGVtZW50KHBhcmVudE5vZGVOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGROb2RlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RJRFZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RLZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0Tm9kZVZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvbGRLZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VOb2RlVmFsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbihjaGlsZE9mU291cmNlLmdldEZpcnN0Q2hpbGQoKS5nZXROb2RlTmFtZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oZGVzdE5vZGUuZ2V0Rmlyc3RDaGlsZCgpLmdldE5vZGVOYW1lKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH1lbHNleworICAgICAgICAgICAgICAgICAgICBpZihkZXN0Tm9kZS5nZXROb2RlTmFtZSgpLmVxdWFscyhjaGlsZE9mU291cmNlLmdldE5vZGVOYW1lKCkpJiYKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3ROb2RlLmdldFBhcmVudE5vZGUoKS5nZXROb2RlTmFtZSgpLmVxdWFscyhjaGlsZE9mU291cmNlLmdldFBhcmVudE5vZGUoKS5nZXROb2RlTmFtZSgpKQorICAgICAgICAgICAgICAgICAgICAgICApeworICAgICAgICAgICAgICAgICAgICAgICAgaWYoZGVzdE5vZGUuaGFzQ2hpbGROb2RlcygpICYmIGNoaWxkT2ZTb3VyY2UuaGFzQ2hpbGROb2RlcygpKXsKKyAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZGVzdE5vZGVWYWwgPSB0cmltKGRlc3ROb2RlLmdldEZpcnN0Q2hpbGQoKS5nZXROb2RlVmFsdWUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHNvdXJjZU5vZGVWYWwgPSB0cmltKGNoaWxkT2ZTb3VyY2UuZ2V0Rmlyc3RDaGlsZCgpLmdldE5vZGVWYWx1ZSgpKTsKKyAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgcGFyZW50Tm9kZU5hbWUgPSB0cmltKGNoaWxkT2ZTb3VyY2UuZ2V0UGFyZW50Tm9kZSgpLmdldE5vZGVOYW1lKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBjaGlsZE5vZGVOYW1lICA9IHRyaW0oY2hpbGRPZlNvdXJjZS5nZXROb2RlTmFtZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihzb3VyY2VOb2RlVmFsLmxlbmd0aCgpIT0wKXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRWxlbWVudChwYXJlbnROb2RlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGROb2RlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdE5vZGVWYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvbGRLZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZU5vZGVWYWwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgIAorICAgICAgICAgICAgZXh0cmFjdE1lcmdlRGF0YShjaGlsZE9mU291cmNlLGdvbGRLZXksdGVzdERvYyx0ZXN0S2V5KTsKKyAgICAgICAgfQorICAgICAgIHJldHVybiB0cnVlOworICAgIH0gCisKKyAgICAvKioKKyAgICAgKiBVdGlsaXR5IG1ldGhvZCB0byB0cmFuc2xhdGUgYSBTdHJpbmcgZmlsZW5hbWUgdG8gVVJMLiAgCisgICAgICoKKyAgICAgKiBOb3RlOiBUaGlzIG1ldGhvZCBpcyBub3QgbmVjZXNzYXJpbHkgcHJvdmVuIHRvIGdldCB0aGUgCisgICAgICogY29ycmVjdCBVUkwgZm9yIGV2ZXJ5IHBvc3NpYmxlIGtpbmQgb2YgZmlsZW5hbWU7IGl0IHNob3VsZCAKKyAgICAgKiBiZSBpbXByb3ZlZC4gIEl0IGhhbmRsZXMgdGhlIG1vc3QgY29tbW9uIGNhc2VzIHRoYXQgd2UndmUgCisgICAgICogZW5jb3VudGVyZWQgd2hlbiBydW5uaW5nIENvbmZvcm1hbmNlIHRlc3RzIG9uIFhhbGFuLgorICAgICAqIEFsc28gbm90ZSwgdGhpcyBtZXRob2QgZG9lcyBub3QgaGFuZGxlIG90aGVyIG5vbi1maWxlOgorICAgICAqIGZsYXZvcnMgb2YgVVJMcyBhdCBhbGwuCisgICAgICoKKyAgICAgKiBJZiB0aGUgbmFtZSBpcyBudWxsLCByZXR1cm4gbnVsbC4KKyAgICAgKiBJZiB0aGUgbmFtZSBzdGFydHMgd2l0aCBhIGNvbW1vbiBVUkkgc2NoZW1lIChuYW1lbHkgdGhlIG9uZXMgCisgICAgICogZm91bmQgaW4gdGhlIGV4YW1wbGVzIG9mIFJGQzIzOTYpLCB0aGVuIHNpbXBseSByZXR1cm4gdGhlIAorICAgICAqIG5hbWUgYXMtaXMgKHRoZSBhc3N1bXB0aW9uIGlzIHRoYXQgaXQncyBhbHJlYWR5IGEgVVJMKQorICAgICAqIE90aGVyd2lzZSB3ZSBhdHRlbXB0IChjaGVhcGx5KSB0byBjb252ZXJ0IHRvIGEgZmlsZTovLy8gVVJMLgorICAgICAqIAorICAgICAqIEBwYXJhbSBTdHJpbmcgbG9jYWwgcGF0aFxmaWxlbmFtZSBvZiBhIGZpbGUKKyAgICAgKiBAcmV0dXJuIGEgZmlsZTovLy8gVVJMLCB0aGUgc2FtZSBzdHJpbmcgaWYgaXQgYXBwZWFycyB0byAKKyAgICAgKiBhbHJlYWR5IGJlIGEgVVJMLCBvciBudWxsIGlmIGVycm9yCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgZmlsZW5hbWVUb1VSTChTdHJpbmcgZmlsZW5hbWUpCisgICAgeworICAgICAgICAvLyBudWxsIGJlZ2V0cyBudWxsIC0gc29tZXRoaW5nIGxpa2UgdGhlIGNvbW11dGF0aXZlIHByb3BlcnR5CisgICAgICAgIGlmIChudWxsID09IGZpbGVuYW1lKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgLy8gRG9uJ3QgdHJhbnNsYXRlIGEgc3RyaW5nIHRoYXQgYWxyZWFkeSBsb29rcyBsaWtlIGEgVVJMCisgICAgICAgIGlmIChmaWxlbmFtZS5zdGFydHNXaXRoKCJmaWxlOiIpCisgICAgICAgICAgICB8fCBmaWxlbmFtZS5zdGFydHNXaXRoKCJodHRwOiIpCisgICAgICAgICAgICB8fCBmaWxlbmFtZS5zdGFydHNXaXRoKCJmdHA6IikKKyAgICAgICAgICAgIHx8IGZpbGVuYW1lLnN0YXJ0c1dpdGgoImdvcGhlcjoiKQorICAgICAgICAgICAgfHwgZmlsZW5hbWUuc3RhcnRzV2l0aCgibWFpbHRvOiIpCisgICAgICAgICAgICB8fCBmaWxlbmFtZS5zdGFydHNXaXRoKCJuZXdzOiIpCisgICAgICAgICAgICB8fCBmaWxlbmFtZS5zdGFydHNXaXRoKCJ0ZWxuZXQ6IikKKyAgICAgICAgICAgKQorICAgICAgICAgICAgcmV0dXJuIGZpbGVuYW1lOworCisgICAgICAgIEZpbGUgZiA9IG5ldyBGaWxlKGZpbGVuYW1lKTsKKyAgICAgICAgU3RyaW5nIHRtcCA9IG51bGw7CisgICAgICAgIHRyeQorICAgICAgICB7CisgICAgICAgICAgICAvLyBUaGlzIG5vcm1hbGx5IGdpdmVzIGEgYmV0dGVyIHBhdGgKKyAgICAgICAgICAgIHRtcCA9IGYuZ2V0Q2Fub25pY2FsUGF0aCgpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChJT0V4Y2VwdGlvbiBpb2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIEJ1dCB0aGlzIGNhbiBiZSB1c2VkIGFzIGEgYmFja3VwLCBmb3IgY2FzZXMgCisgICAgICAgICAgICAvLyAgd2hlcmUgdGhlIGZpbGUgZG9lcyBub3QgZXhpc3QsIGV0Yy4KKyAgICAgICAgICAgIHRtcCA9IGYuZ2V0QWJzb2x1dGVQYXRoKCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBVUkxzIG11c3QgZXhwbGljaXRseSB1c2Ugb25seSBmb3J3YXJkIHNsYXNoZXMKKyAgICAgICAgaWYgKEZpbGUuc2VwYXJhdG9yQ2hhciA9PSAnXFwnKSB7CisgICAgICAgICAgICB0bXAgPSB0bXAucmVwbGFjZSgnXFwnLCAnLycpOworICAgICAgICB9CisgICAgICAgIC8vIE5vdGUgdGhlIHByZXN1bXB0aW9uIHRoYXQgaXQncyBhIGZpbGUgcmVmZXJlbmNlCisgICAgICAgIC8vIEVuc3VyZSB3ZSBoYXZlIHRoZSBjb3JyZWN0IG51bWJlciBvZiBzbGFzaGVzIGF0IHRoZSAKKyAgICAgICAgLy8gIHN0YXJ0OiB3ZSBhbHdheXMgd2FudCAzIC8vLyBpZiBpdCdzIGFic29sdXRlCisgICAgICAgIC8vICAod2hpY2ggd2Ugc2hvdWxkIGhhdmUgZm9yY2VkIGFib3ZlKQorICAgICAgICBpZiAodG1wLnN0YXJ0c1dpdGgoIi8iKSkKKyAgICAgICAgICAgIHJldHVybiAiZmlsZTovLyIgKyB0bXA7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiAiZmlsZTovLy8iICsgdG1wOworCisgICAgfQorCisKKyAgICAvKioKKyAgICAgKiBTaW1wbGUgd29ya2VyIG1ldGhvZCB0byBwYXJzZSBmaWxlbmFtZSB0byBhIERvY3VtZW50LiAgCisgICAgICoKKyAgICAgKiBBdHRlbXB0cyBYTUwgcGFyc2UsIHRoZW4gSFRNTCBwYXJzZSAod2hlbiBwYXJzZXIgYXZhaWxhYmxlKSwgCisgICAgICogdGhlbiBqdXN0IHBhcnNlcyBhcyB0ZXh0IGFuZCBzdGlja3MgaW50byBhIHRleHQgbm9kZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBmaWxlbmFtZSB0byBwYXJzZSBhcyBhIGxvY2FsIHBhdGgKKyAgICAgKiBAcGFyYW0gYXR0cmlidXRlcyBuYW1lPXZhbHVlIHBhaXJzIHRvIHNldCBvbiB0aGUgCisgICAgICogRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSB0aGF0IHdlIHVzZSB0byBwYXJzZQorICAgICAqCisgICAgICogQHJldHVybiBEb2N1bWVudCBvYmplY3Qgd2l0aCBjb250ZW50cyBvZiB0aGUgZmlsZTsgCisgICAgICogb3RoZXJ3aXNlIHRocm93cyBhbiB1bmNoZWNrZWQgUnVudGltZUV4Y2VwdGlvbiBpZiB0aGVyZSAKKyAgICAgKiBpcyBhbnkgZmF0YWwgcHJvYmxlbQorICAgICAqLworICAgIERvY3VtZW50IHBhcnNlKFN0cmluZyBmaWxlbmFtZSkKKyAgICB7CisgICAgICAgIC8vIEZvcmNlIGZpbGVyZWZzIHRvIGJlIFVSSSdzIGlmIG5lZWRlZDogbm90ZSB0aGlzIGlzIGluZGVwZW5kZW50IG9mIGFueSBvdGhlciBmaWxlcworICAgICAgICBTdHJpbmcgZG9jVVJJID0gZmlsZW5hbWVUb1VSTChmaWxlbmFtZSk7CisgICAgICAgIHJldHVybiBwYXJzZShuZXcgSW5wdXRTb3VyY2UoZG9jVVJJKSxmaWxlbmFtZSk7CisgICAgfQorICAgIAorICAgIERvY3VtZW50IHBhcnNlKElucHV0U291cmNlIGRvY1NyYywgU3RyaW5nIGZpbGVuYW1lKXsKKyAgICAgICAgCisgICAgICAgIERvY3VtZW50QnVpbGRlckZhY3RvcnkgZGZhY3RvcnkgPSBEb2N1bWVudEJ1aWxkZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7CisgICAgICAgIC8vIEFsd2F5cyBzZXQgbmFtZXNwYWNlcyBvbgorICAgICAgICBkZmFjdG9yeS5zZXROYW1lc3BhY2VBd2FyZSh0cnVlKTsKKyAgICAgICAgLy8gU2V0IG90aGVyIGF0dHJpYnV0ZXMgaGVyZSBhcyBuZWVkZWQKKyAgICAgICAgLy9hcHBseUF0dHJpYnV0ZXMoZGZhY3RvcnksIGF0dHJpYnV0ZXMpOworICAgICAgICAKKyAgICAgICAgLy8gTG9jYWwgY2xhc3M6IGNoZWFwIG5vbi1wcmludGluZyBFcnJvckhhbmRsZXIKKyAgICAgICAgLy8gVGhpcyBpcyB1c2VkIHRvIHN1cHByZXNzIHZhbGlkYXRpb24gd2FybmluZ3MKKyAgICAgICAgRXJyb3JIYW5kbGVyIG51bGxIYW5kbGVyID0gbmV3IEVycm9ySGFuZGxlcigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHdhcm5pbmcoU0FYUGFyc2VFeGNlcHRpb24gZSkgdGhyb3dzIFNBWEV4Y2VwdGlvbiB7U3lzdGVtLmVyci5wcmludGxuKCJXYXJuaW5nOiAiICsgZS5nZXRNZXNzYWdlKCkpO30KKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGVycm9yKFNBWFBhcnNlRXhjZXB0aW9uIGUpIHRocm93cyBTQVhFeGNlcHRpb24ge1N5c3RlbS5lcnIucHJpbnRsbigiRXJyb3I6ICIgKyBlLmdldE1lc3NhZ2UoKSk7fQorICAgICAgICAgICAgcHVibGljIHZvaWQgZmF0YWxFcnJvcihTQVhQYXJzZUV4Y2VwdGlvbiBlKSB0aHJvd3MgU0FYRXhjZXB0aW9uIAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRocm93IGU7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgRG9jdW1lbnQgZG9jID0gbnVsbDsKKyAgICAgICAgdHJ5CisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIEZpcnN0LCBhdHRlbXB0IHRvIHBhcnNlIGFzIFhNTCAocHJlZmVycmVkKS4uLgorICAgICAgICAgICAgRG9jdW1lbnRCdWlsZGVyIGRvY0J1aWxkZXIgPSBkZmFjdG9yeS5uZXdEb2N1bWVudEJ1aWxkZXIoKTsKKyAgICAgICAgICAgIGRvY0J1aWxkZXIuc2V0RXJyb3JIYW5kbGVyKG51bGxIYW5kbGVyKTsKKyAgICAgICAgICAgIGRvYyA9IGRvY0J1aWxkZXIucGFyc2UoZG9jU3JjKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoVGhyb3dhYmxlIHNlKQorICAgICAgICB7CisgICAgICAgICAgICAvLyAuLi4gaWYgd2UgY291bGRuJ3QgcGFyc2UgYXMgWE1MLCBhdHRlbXB0IHBhcnNlIGFzIEhUTUwuLi4KKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRVJST1IgOiIgKyBzZS50b1N0cmluZygpKTsKKyAgICAgICAgICAgIHRyeQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIEB0b2RvIG5lZWQgdG8gZmluZCBhbiBIVE1MIHRvIERPTSBwYXJzZXIgd2UgY2FuIHVzZSEhIQorICAgICAgICAgICAgICAgIC8vIGRvYyA9IHNvbWVIVE1MUGFyc2VyLnBhcnNlKG5ldyBJbnB1dFNvdXJjZShmaWxlbmFtZSkpOworICAgICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJYTUxDb21wYXJhdG9yIG5vIEhUTUwgcGFyc2VyISIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmKGZpbGVuYW1lIT1udWxsKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gLi4uIGlmIHdlIGNhbid0IHBhcnNlIGFzIEhUTUwsIHRoZW4ganVzdCBwYXJzZSB0aGUgdGV4dAorICAgICAgICAgICAgICAgICAgICB0cnkKKyAgICAgICAgICAgICAgICAgICAgeworICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gUGFyc2UgYXMgdGV4dCwgbGluZSBieSBsaW5lCisgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIFNpbmNlIHdlIGFscmVhZHkga25vdyBpdCBzaG91bGQgYmUgdGV4dCwgdGhpcyBzaG91bGQgCisgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIHdvcmsgYmV0dGVyIHRoYW4gcGFyc2luZyBieSBieXRlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVSZWFkZXIgZnIgPSBuZXcgRmlsZVJlYWRlcihmaWxlbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJlZFJlYWRlciBiciA9IG5ldyBCdWZmZXJlZFJlYWRlcihmcik7CisgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdCdWZmZXIgYnVmZmVyID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7OykKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgdG1wID0gYnIucmVhZExpbmUoKTsKKyAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IG51bGwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZCh0bXApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoIlxuIik7ICAvLyBQdXQgaW4gdGhlIG5ld2xpbmVzIGFzIHdlbGwKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIERvY3VtZW50QnVpbGRlciBkb2NCdWlsZGVyID0gZGZhY3RvcnkubmV3RG9jdW1lbnRCdWlsZGVyKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBkb2MgPSBkb2NCdWlsZGVyLm5ld0RvY3VtZW50KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBFbGVtZW50IG91dEVsZW0gPSBkb2MuY3JlYXRlRWxlbWVudCgib3V0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBUZXh0IHRleHROb2RlID0gZG9jLmNyZWF0ZVRleHROb2RlKGJ1ZmZlci50b1N0cmluZygpKTsKKyAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vdGU6IHdpbGwgdGhpcyBhbHdheXMgYmUgYSB2YWxpZCBub2RlPyAgSWYgd2UncmUgcGFyc2luZyAKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgIGluIGFzIHRleHQsIHdpbGwgdGhlcmUgZXZlciBiZSBjYXNlcyB3aGVyZSB0aGUgZGlmZiB0aGF0J3MgCisgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICBkb25lIGxhdGVyIG9uIHdpbGwgZmFpbCBiZWN1YXNlIHNvbWUgcmVhbGx5IGdhcmJhZ2UtbGlrZSAKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgIHRleHQgaGFzIGJlZW4gcHV0IGludG8gYSBub2RlPworICAgICAgICAgICAgICAgICAgICAgICAgb3V0RWxlbS5hcHBlbmRDaGlsZCh0ZXh0Tm9kZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBkb2MuYXBwZW5kQ2hpbGQob3V0RWxlbSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKFRocm93YWJsZSB0aHJvd2FibGUpCisgICAgICAgICAgICAgICAgICAgIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy90aHJvd2FibGUucHJpbnRTdGFja1RyYWNlKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGRvYzsKKyAgICB9ICAvLyBlbmQgb2YgcGFyc2UoKQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvQk9DVS5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvQk9DVS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzODlhMDgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9CT0NVLmphdmEKQEAgLTAsMCArMSwzODMgQEAKKy8qKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9CT0NVLmphdmEsdiAkIAorKiAkRGF0ZTogMjAwMi8xMC8zMSAyMjozNToyMCAkIAorKiAkUmV2aXNpb246IDEuMyAkCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworcGFja2FnZSBjb20uaWJtLmljdS5pbXBsOworCitpbXBvcnQgY29tLmlibS5pY3UudGV4dC4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuVUNoYXJhY3Rlckl0ZXJhdG9yOworCisvKioKKyAqIDxwPkJpbmFyeSBPcmRlcmVkIENvbXByZXNzaW9uIGZvciBVbmljb2RlPC9wPgorICogCisgKiA8cD5Vc2VycyBhcmUgc3Ryb25nbHkgZW5jb3VyYWdlZCB0byByZWFkIHRoZSBJQ1UgcGFwZXIgb24gCisgKiA8YSBocmVmPWh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9kb2NzL3BhcGVycy9iaW5hcnlfb3JkZXJlZF9jb21wcmVzc2lvbl9mb3JfdW5pY29kZS5odG1sPgorICogQk9DVTwvYT4gYmVmb3JlIGF0dGVtcHRpbmcgdG8gdXNlIHRoaXMgY2xhc3MuPC9wPgorICogCisgKiA8cD5CT0NVIGlzIHVzZWQgdG8gY29tcHJlc3MgdW5pY29kZSB0ZXh0IGludG8gYSBzdHJlYW0gb2YgdW5zaWduZWQKKyAqIGJ5dGVzLiAgRm9yIG1hbnkga2luZHMgb2YgdGV4dCB0aGUgY29tcHJlc3Npb24gY29tcGFyZXMgZmF2b3JhYmx5CisgKiB0byBVVEYtOCwgYW5kIGZvciBzb21lIGtpbmRzIG9mIHRleHQgKHN1Y2ggYXMgQ0pLKSBpdCBkb2VzIGJldHRlci4KKyAqIFRoZSByZXN1bHRpbmcgYnl0ZXMgd2lsbCBjb21wYXJlIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZSBvcmlnaW5hbAorICogY29kZSBwb2ludHMuICBUaGUgYnl0ZSBzdHJlYW0gZG9lcyBub3QgY29udGFpbiB0aGUgdmFsdWVzIDAsIDEsIG9yCisgKiAyLjwvcD4KKyAqIAorICogPHA+T25lIGV4YW1wbGUgb2YgYSB1c2Ugb2YgQk9DVSBpcyBpbiB7QGxpbmsgCisgKiBDb2xsYXRvciNnZXRDb2xsYXRpb25LZXkoU3RyaW5nKX0gZm9yIGEgUnVsZUJhc2VkQ29sbGF0b3Igb2JqZWN0IHdpdGggCisgKiBjb2xsYXRpb24gc3RyZW5ndGggSURFTlRJQ0FMLiBUaGUgcmVzdWx0IENvbGxhdGlvbktleSB3aWxsIGNvbnNpc3Qgb2YgdGhlIAorICogY29sbGF0aW9uIG9yZGVyIG9mIHRoZSBzb3VyY2Ugc3RyaW5nIGZvbGxvd2VkIGJ5IHRoZSBCT0NVIHJlc3VsdCBvZiB0aGUgCisgKiBzb3VyY2Ugc3RyaW5nLiAKKyAqIDwvcD4gCisgKgorICogPHA+VW5saWtlIGEgVVRGIGVuY29kaW5nLCBCT0NVLWNvbXByZXNzZWQgdGV4dCBpcyBub3Qgc3VpdGFibGUgZm9yCisgKiByYW5kb20gYWNjZXNzLjwvcD4KKyAqIAorICogPHA+TWV0aG9kOiBTbG9wZSBEZXRlY3Rpb248YnI+IFJlbWVtYmVyIHRoZSBwcmV2aW91cyBjb2RlIHBvaW50CisgKiAoaW5pdGlhbCAwKS4gIEZvciBlYWNoIGNvZGUgcG9pbnQgaW4gdGhlIHN0cmluZywgZW5jb2RlIHRoZQorICogZGlmZmVyZW5jZSB3aXRoIHRoZSBwcmV2aW91cyBvbmUuICBTaW1pbGFyIHRvIGEgVVRGLCB0aGUgbGVuZ3RoIG9mCisgKiB0aGUgYnl0ZSBzZXF1ZW5jZSBpcyBlbmNvZGVkIGluIHRoZSBsZWFkIGJ5dGVzLiAgVW5saWtlIGEgVVRGLCB0aGUKKyAqIHRyYWlsIGJ5dGUgdmFsdWVzIG1heSBvdmVybGFwIHdpdGggbGVhZC9zaW5nbGUgYnl0ZSB2YWx1ZXMuICBUaGUKKyAqIHNpZ25lZG5lc3Mgb2YgdGhlIGRpZmZlcmVuY2UgbXVzdCBiZSBlbmNvZGVkIGFzIHRoZSBtb3N0CisgKiBzaWduaWZpY2FudCBwYXJ0LjwvcD4KKyAqCisgKiA8cD5XZSBlbmNvZGUgZGlmZmVyZW5jZXMgd2l0aCBmZXcgYnl0ZXMgaWYgdGhlaXIgYWJzb2x1dGUgdmFsdWVzCisgKiBhcmUgc21hbGwuICBGb3IgY29ycmVjdCBvcmRlcmluZywgd2UgbXVzdCB0cmVhdCB0aGUgZW50aXJlIHZhbHVlCisgKiByYW5nZSAtMTBmZmZmLi4rMTBmZmZmIGluIGFzY2VuZGluZyBvcmRlciwgd2hpY2ggZm9yYmlkcyBlbmNvZGluZworICogdGhlIHNpZ24gYW5kIHRoZSBhYnNvbHV0ZSB2YWx1ZSBzZXBhcmF0ZWx5LiBJbnN0ZWFkLCB3ZSBzcGxpdCB0aGUKKyAqIGxlYWQgYnl0ZSByYW5nZSBpbiB0aGUgbWlkZGxlIGFuZCBlbmNvZGUgbm9uLW5lZ2F0aXZlIHZhbHVlcyBnb2luZworICogdXAgYW5kIG5lZ2F0aXZlIHZhbHVlcyBnb2luZyBkb3duLjwvcD4KKyAqCisgKiA8cD5Gb3IgdmVyeSBzbWFsbCBhYnNvbHV0ZSB2YWx1ZXMsIHRoZSBkaWZmZXJlbmNlIGlzIGFkZGVkIHRvIGEKKyAqIG1pZGRsZSBieXRlIHZhbHVlIGZvciBzaW5nbGUtYnl0ZSBlbmNvZGVkIGRpZmZlcmVuY2VzLiAgRm9yCisgKiBzb21ld2hhdCBsYXJnZXIgYWJzb2x1dGUgdmFsdWVzLCB0aGUgZGlmZmVyZW5jZSBpcyBkaXZpZGVkIGJ5IHRoZQorICogbnVtYmVyIG9mIGJ5dGUgdmFsdWVzIGF2YWlsYWJsZSwgdGhlIG1vZHVsbyBpcyB1c2VkIGZvciBvbmUgdHJhaWwKKyAqIGJ5dGUsIGFuZCB0aGUgcmVtYWluZGVyIGlzIGFkZGVkIHRvIGEgbGVhZCBieXRlIGF2b2lkaW5nIHRoZQorICogc2luZ2xlLWJ5dGUgcmFuZ2UuICBGb3IgbGFyZ2UgYWJzb2x1dGUgdmFsdWVzLCB0aGUgZGlmZmVyZW5jZSBpcworICogc2ltaWxhcmx5IGVuY29kZWQgaW4gdGhyZWUgYnl0ZXMuIChTeW4gV2VlLCBJIG5lZWQgZXhhbXBsZXMKKyAqIGhlcmUuKTwvcD4KKyAqCisgKiA8cD5CT0NVIGRvZXMgbm90IHVzZSBieXRlIHZhbHVlcyAwLCAxLCBvciAyLCBidXQgdXNlcyBhbGwgb3RoZXIKKyAqIGJ5dGUgdmFsdWVzIGZvciBsZWFkIGFuZCBzaW5nbGUgYnl0ZXMsIHNvIHRoYXQgdGhlIG1pZGRsZSByYW5nZSBvZgorICogc2luZ2xlIGJ5dGVzIGlzIGFzIGxhcmdlIGFzIHBvc3NpYmxlLjwvcD4KKyAqCisgKiA8cD5Ob3RlIHRoYXQgdGhlIGxlYWQgYnl0ZSByYW5nZXMgb3ZlcmxhcCBzb21lLCBidXQgdGhhdCB0aGUKKyAqIHNlcXVlbmNlcyBhcyBhIHdob2xlIGFyZSB3ZWxsIG9yZGVyZWQuIEkuZS4sIGV2ZW4gaWYgdGhlIGxlYWQgYnl0ZQorICogaXMgdGhlIHNhbWUgZm9yIHNlcXVlbmNlcyBvZiBkaWZmZXJlbnQgbGVuZ3RocywgdGhlIHRyYWlsIGJ5dGVzCisgKiBlc3RhYmxpc2ggY29ycmVjdCBvcmRlci4gIEl0IHdvdWxkIGJlIHBvc3NpYmxlIHRvIGVuY29kZSBzbGlnaHRseQorICogbGFyZ2VyIHJhbmdlcyBmb3IgZWFjaCBsZW5ndGggKD4xKSBieSBzdWJ0cmFjdGluZyB0aGUgbG93ZXIgYm91bmQKKyAqIG9mIHRoZSByYW5nZS4gSG93ZXZlciwgdGhhdCB3b3VsZCBhbHNvIHNsb3cgZG93biB0aGUgY2FsY3VsYXRpb24uCisgKiAoU3luIFdlZSwgbmVlZCBhbiBleGFtcGxlKS48L3A+CisgKgorICogPHA+Rm9yIHRoZSBhY3R1YWwgc3RyaW5nIGVuY29kaW5nLCBhbiBvcHRpbWl6YXRpb24gbW92ZXMgdGhlCisgKiBwcmV2aW91cyBjb2RlIHBvaW50IHZhbHVlIHRvIHRoZSBtaWRkbGUgb2YgaXRzIFVuaWNvZGUgc2NyaXB0IGJsb2NrCisgKiB0byBtaW5pbWl6ZSB0aGUgZGlmZmVyZW5jZXMgaW4gc2FtZS1zY3JpcHQgdGV4dCBydW5zLiAgKFN5biBXZWUsCisgKiBuZWVkIGFuIGV4YW1wbGUuKTwvcD4KKyAqCisgKiBAYXV0aG9yIFN5biBXZWUgUXVlaworICogQHNpbmNlIHJlbGVhc2UgMi4yLCBNYXkgM3JkIDIwMDIKKyAqIEBkcmFmdCAyLjIgKi8KK3B1YmxpYyBjbGFzcyBCT0NVIAoreyAgICAgIAorICAgIC8vIHB1YmxpYyBjb25zdHJ1Y3RvcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvLyBwdWJsaWMgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgIAorICAgIC8qKgorICAgICAqIDxwPkVuY29kZSB0aGUgY29kZSBwb2ludHMgb2YgYSBzdHJpbmcgYXMgYSBzZXF1ZW5jZSBvZiBieXRlcywKKyAgICAgKiBwcmVzZXJ2aW5nIGxleGljYWwgb3JkZXIuPC9wPgorICAgICAqIDxwPlRoZSBtaW5pbXVtIHNpemUgb2YgYnVmZmVyIHJlcXVpcmVkIGZvciB0aGUgY29tcHJlc3Npb24gY2FuIGJlIAorICAgICAqIHByZWZsaWdodGVkIGJ5IGdldENvbXByZXNzaW9uTGVuZ3RoKFN0cmluZykuPC9wPgorICAgICAqIEBwYXJhbSBzb3VyY2UgdGV4dCBzb3VyY2UKKyAgICAgKiBAcGFyYW0gYnVmZmVyIG91dHB1dCBidWZmZXIKKyAgICAgKiBAcGFyYW0gb2Zmc2V0IHRvIHN0YXJ0IHdyaXRpbmcgdG8KKyAgICAgKiBAcmV0dXJuIGVuZCBvZmZzZXQgd2hlcmUgdGhlIHdyaXRpbmcgc3RvcHBlZAorICAgICAqIEBzZWUgI2dldENvbXByZXNzaW9uTGVuZ3RoKFN0cmluZykKKyAgICAgKiBAZXhjZXB0aW9uIEFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiB0aHJvd24gaWYgc2l6ZSBvZiBidWZmZXIgaXMgCisgICAgICogICAgICAgICAgICB0b28gc21hbGwgZm9yIHRoZSBvdXRwdXQuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnQgY29tcHJlc3MoU3RyaW5nIHNvdXJjZSwgYnl0ZSBidWZmZXJbXSwgaW50IG9mZnNldCkgCisgICAgeworICAgICAgICBpbnQgcHJldiA9IDA7CisgICAgICAgIFVDaGFyYWN0ZXJJdGVyYXRvciBpdGVyYXRvciA9IFVDaGFyYWN0ZXJJdGVyYXRvci5nZXRJbnN0YW5jZShzb3VyY2UpOworICAgICAgICBpbnQgY29kZXBvaW50ID0gaXRlcmF0b3IubmV4dENvZGVQb2ludCgpOworICAgICAgICB3aGlsZSAoY29kZXBvaW50ICE9IFVDaGFyYWN0ZXJJdGVyYXRvci5ET05FKSB7CisgICAgICAgICAgICBpZiAocHJldiA8IDB4NGUwMCB8fCBwcmV2ID49IDB4YTAwMCkgeworICAgICAgICAgICAgICAgIHByZXYgPSAocHJldiAmIH4weDdmKSAtIFNMT1BFX1JFQUNIX05FR18xXzsKKyAgICAgICAgICAgIH0gCisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBVbmloYW4gVSs0ZTAwLi5VKzlmYTU6CisgICAgICAgICAgICAgICAgLy8gZG91YmxlLWJ5dGVzIGRvd24gZnJvbSB0aGUgdXBwZXIgZW5kCisgICAgICAgICAgICAgICAgcHJldiA9IDB4OWZmZiAtIFNMT1BFX1JFQUNIX1BPU18yXzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICAgICBvZmZzZXQgPSB3cml0ZURpZmYoY29kZXBvaW50IC0gcHJldiwgYnVmZmVyLCBvZmZzZXQpOworICAgICAgICAgICAgcHJldiA9IGNvZGVwb2ludDsKKyAgICAgICAgICAgIGNvZGVwb2ludCA9IGl0ZXJhdG9yLm5leHRDb2RlUG9pbnQoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gb2Zmc2V0OworICAgIH0KKyAgICAgICAgCisgICAgLyoqIAorICAgICAqIFJldHVybiB0aGUgbnVtYmVyIG9mICBieXRlcyB0aGF0IGNvbXByZXNzKCkgd291bGQgd3JpdGUuCisgICAgICogQHBhcmFtIHNvdXJjZSB0ZXh0IHNvdXJjZSBzdHJpbmcKKyAgICAgKiBAcmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIEJPQ1UgcmVzdWx0IAorICAgICAqIEBzZWUgI2NvbXByZXNzKFN0cmluZywgYnl0ZVtdLCBpbnQpCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnQgZ2V0Q29tcHJlc3Npb25MZW5ndGgoU3RyaW5nIHNvdXJjZSkgCisgICAgeworICAgICAgICBpbnQgcHJldiA9IDA7CisgICAgICAgIGludCByZXN1bHQgPSAwOworICAgICAgICBVQ2hhcmFjdGVySXRlcmF0b3IgaXRlcmF0b3IgPSAgVUNoYXJhY3Rlckl0ZXJhdG9yLmdldEluc3RhbmNlKHNvdXJjZSk7CisgICAgICAgIGludCBjb2RlcG9pbnQgPSBpdGVyYXRvci5uZXh0Q29kZVBvaW50KCk7CisgICAgICAgIHdoaWxlIChjb2RlcG9pbnQgIT0gVUNoYXJhY3Rlckl0ZXJhdG9yLkRPTkUpIHsKKyAgICAgICAgICAgIGlmIChwcmV2IDwgMHg0ZTAwIHx8IHByZXYgPj0gMHhhMDAwKSB7CisgICAgICAgICAgICAgICAgcHJldiA9IChwcmV2ICYgfjB4N2YpIC0gU0xPUEVfUkVBQ0hfTkVHXzFfOworICAgICAgICAgICAgfSAKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIC8vIFVuaWhhbiBVKzRlMDAuLlUrOWZhNToKKyAgICAgICAgICAgICAgICAvLyBkb3VibGUtYnl0ZXMgZG93biBmcm9tIHRoZSB1cHBlciBlbmQKKyAgICAgICAgICAgICAgICBwcmV2ID0gMHg5ZmZmIC0gU0xPUEVfUkVBQ0hfUE9TXzJfOworICAgICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgICAgIGNvZGVwb2ludCA9IGl0ZXJhdG9yLm5leHRDb2RlUG9pbnQoKTsKKyAgICAgICAgICAgIHJlc3VsdCArPSBsZW5ndGhPZkRpZmYoY29kZXBvaW50IC0gcHJldik7CisgICAgICAgICAgICBwcmV2ID0gY29kZXBvaW50OworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLy8gcHVibGljIHNldHRlciBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgCisgICAgLy8gcHVibGljIGdldHRlciBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgCisgICAgLy8gcHVibGljIG90aGVyIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIC8vIHByb3RlY3RlZCBjb25zdHJ1Y3RvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgIAorICAgIC8vIHByb3RlY3RlZCBkYXRhIG1lbWJlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLy8gcHJvdGVjdGVkIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKyAgICAvLyBwcml2YXRlIGRhdGEgbWVtYmVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIC8qKiAKKyAgICAgKiBEbyBub3QgdXNlIGJ5dGUgdmFsdWVzIDAsIDEsIDIgYmVjYXVzZSB0aGV5IGFyZSBzZXBhcmF0b3JzIGluIHNvcnQga2V5cy4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU0xPUEVfTUlOXyA9IDM7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNMT1BFX01BWF8gPSAweGZmOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTTE9QRV9NSURETEVfID0gMHg4MTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU0xPUEVfVEFJTF9DT1VOVF8gPSBTTE9QRV9NQVhfIC0gU0xPUEVfTUlOXyArIDE7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNMT1BFX01BWF9CWVRFU18gPSA0OworCisgICAgLyoqCisgICAgICogTnVtYmVyIG9mIGxlYWQgYnl0ZXM6CisgICAgICogMSAgICAgICAgbWlkZGxlIGJ5dGUgZm9yIDAKKyAgICAgKiAyKjgwPTE2MCBzaW5nbGUgYnl0ZXMgZm9yICE9MAorICAgICAqIDIqNDI9ODQgIGZvciBkb3VibGUtYnl0ZSB2YWx1ZXMKKyAgICAgKiAyKjM9NiAgICBmb3IgMy1ieXRlIHZhbHVlcworICAgICAqIDIqMT0yICAgIGZvciA0LWJ5dGUgdmFsdWVzCisgICAgICoKKyAgICAgKiBUaGUgc3VtIG11c3QgYmUgPD1TTE9QRV9UQUlMX0NPVU5ULgorICAgICAqCisgICAgICogV2h5IHRoZXNlIG51bWJlcnM/CisgICAgICogLSBUaGVyZSBzaG91bGQgYmUgPj0xMjggc2luZ2xlLWJ5dGUgdmFsdWVzIHRvIGNvdmVyIDEyOC1ibG9ja3MKKyAgICAgKiAgIHdpdGggc21hbGwgc2NyaXB0cy4KKyAgICAgKiAtIFRoZXJlIHNob3VsZCBiZSA+PTIwOTAyIHNpbmdsZS9kb3VibGUtYnl0ZSB2YWx1ZXMgdG8gY292ZXIgVW5paGFuLgorICAgICAqIC0gSXQgaGVscHMgQ0pLIEV4dGVuc2lvbiBCIHNvbWUgaWYgdGhlcmUgYXJlIDMtYnl0ZSB2YWx1ZXMgdGhhdCBjb3ZlcgorICAgICAqICAgdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlbSBhbmQgVW5paGFuLgorICAgICAqICAgVGhpcyBhbHNvIGhlbHBzIHRvIGp1bXAgYW1vbmcgZGlzdGFudCBwbGFjZXMgaW4gdGhlIEJNUC4KKyAgICAgKiAtIEZvdXItYnl0ZSB2YWx1ZXMgYXJlIG5lY2Vzc2FyeSB0byBjb3ZlciB0aGUgcmVzdCBvZiBVbmljb2RlLgorICAgICAqCisgICAgICogU3ltbWV0cmljYWwgbGVhZCBieXRlIGNvdW50cyBhcmUgZm9yIGNvbnZlbmllbmNlLgorICAgICAqIFdpdGggYW4gZXF1YWwgZGlzdHJpYnV0aW9uIG9mIGV2ZW4gYW5kIG9kZCBkaWZmZXJlbmNlcyB0aGVyZSBpcyBhbHNvCisgICAgICogbm8gYWR2YW50YWdlIHRvIGFzeW1tZXRyaWNhbCBsZWFkIGJ5dGUgY291bnRzLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTTE9QRV9TSU5HTEVfID0gODA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNMT1BFX0xFQURfMl8gPSA0MjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU0xPUEVfTEVBRF8zXyA9IDM7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNMT1BFX0xFQURfNF8gPSAxOworCisgICAgLyoqIAorICAgICAqIFRoZSBkaWZmZXJlbmNlIHZhbHVlIHJhbmdlIGZvciBzaW5nbGUtYnl0ZXJzLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTTE9QRV9SRUFDSF9QT1NfMV8gPSBTTE9QRV9TSU5HTEVfOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTTE9QRV9SRUFDSF9ORUdfMV8gPSAoLVNMT1BFX1NJTkdMRV8pOworCisgICAgLyoqIAorICAgICAqIFRoZSBkaWZmZXJlbmNlIHZhbHVlIHJhbmdlIGZvciBkb3VibGUtYnl0ZXJzLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTTE9QRV9SRUFDSF9QT1NfMl8gPSAKKyAgICAgICAgU0xPUEVfTEVBRF8yXyAqIFNMT1BFX1RBSUxfQ09VTlRfICsgU0xPUEVfTEVBRF8yXyAtIDE7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNMT1BFX1JFQUNIX05FR18yXyA9ICgtU0xPUEVfUkVBQ0hfUE9TXzJfIC0gMSk7CisKKyAgICAvKiogCisgICAgICogVGhlIGRpZmZlcmVuY2UgdmFsdWUgcmFuZ2UgZm9yIDMtYnl0ZXJzLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTTE9QRV9SRUFDSF9QT1NfM18gPSBTTE9QRV9MRUFEXzNfIAorICAgICAgICAqIFNMT1BFX1RBSUxfQ09VTlRfIAorICAgICAgICAqIFNMT1BFX1RBSUxfQ09VTlRfIAorICAgICAgICArIChTTE9QRV9MRUFEXzNfIC0gMSkKKyAgICAgICAgKiBTTE9QRV9UQUlMX0NPVU5UXyArCisgICAgICAgIChTTE9QRV9UQUlMX0NPVU5UXyAtIDEpOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTTE9QRV9SRUFDSF9ORUdfM18gPSAoLVNMT1BFX1JFQUNIX1BPU18zXyAtIDEpOworCisgICAgLyoqIAorICAgICAqIFRoZSBsZWFkIGJ5dGUgc3RhcnQgdmFsdWVzLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTTE9QRV9TVEFSVF9QT1NfMl8gPSBTTE9QRV9NSURETEVfIAorICAgICAgICArIFNMT1BFX1NJTkdMRV8gKyAxOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTTE9QRV9TVEFSVF9QT1NfM18gPSBTTE9QRV9TVEFSVF9QT1NfMl8gCisgICAgICAgICsgU0xPUEVfTEVBRF8yXzsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU0xPUEVfU1RBUlRfTkVHXzJfID0gU0xPUEVfTUlERExFXyArIAorICAgICAgICBTTE9QRV9SRUFDSF9ORUdfMV87CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNMT1BFX1NUQVJUX05FR18zXyA9IFNMT1BFX1NUQVJUX05FR18yXworICAgICAgICAtIFNMT1BFX0xFQURfMl87CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIC8vIHByaXZhdGUgY29uc3RydWN0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgIAorICAgIC8qKgorICAgICAqIENvbnN0cnVjdG9yIHByaXZhdGUgdG8gcHJldmVudCBpbml0aWFsaXphdGlvbgorICAgICAqLworICAgIHByaXZhdGUgQk9DVSgpCisgICAgeworICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAKKyAgICAvLyBwcml2YXRlIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIC8qKgorICAgICAqIEludGVnZXIgZGl2aXNpb24gYW5kIG1vZHVsbyB3aXRoIG5lZ2F0aXZlIG51bWVyYXRvcnMKKyAgICAgKiB5aWVsZHMgbmVnYXRpdmUgbW9kdWxvIHJlc3VsdHMgYW5kIHF1b3RpZW50cyB0aGF0IGFyZSBvbmUgbW9yZSB0aGFuCisgICAgICogd2hhdCB3ZSBuZWVkIGhlcmUuCisgICAgICogQHBhcmFtIG51bWJlciB3aGljaCBvcGVyYXRpb25zIGFyZSB0byBiZSBwZXJmb3JtZWQgb24KKyAgICAgKiBAcGFyYW0gZmFjdG9yIHRoZSBmYWN0b3IgdG8gdXNlIGZvciBkaXZpc2lvbgorICAgICAqIEByZXR1cm4gKHJlc3VsdCBvZiBkaXZpc2lvbikgPDwgMzIgfCBtb2R1bG8gCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBnZXROZWdEaXZNb2QoaW50IG51bWJlciwgaW50IGZhY3RvcikgCisgICAgeworICAgICAgICBpbnQgbW9kdWxvID0gbnVtYmVyICUgZmFjdG9yOyAKKyAgICAgICAgbG9uZyByZXN1bHQgPSBudW1iZXIgLyBmYWN0b3I7CisgICAgICAgIGlmIChtb2R1bG8gPCAwKSB7IAorICAgICAgICAgICAgLS0gcmVzdWx0OyAKKyAgICAgICAgICAgIG1vZHVsbyArPSBmYWN0b3I7IAorICAgICAgICB9IAorICAgICAgICByZXR1cm4gKHJlc3VsdCA8PCAzMikgfCBtb2R1bG87CisgICAgfQorICAgICAgICAKKyAgICAvKioKKyAgICAgKiBFbmNvZGUgb25lIGRpZmZlcmVuY2UgdmFsdWUgLTB4MTBmZmZmLi4rMHgxMGZmZmYgaW4gMS4uMyBieXRlcywKKyAgICAgKiBwcmVzZXJ2aW5nIGxleGljYWwgb3JkZXIKKyAgICAgKiBAcGFyYW0gZGlmZgorICAgICAqIEBwYXJhbSBidWZmZXIgYnl0ZSBidWZmZXIgdG8gYXBwZW5kIHRvCisgICAgICogQHBhcmFtIG9mZnNldCB0byB0aGUgYnl0ZSBidWZmZXIgdG8gc3RhcnQgYXBwZW5kaW5nCisgICAgICogQHJldHVybiBlbmQgb2Zmc2V0IHdoZXJlIHRoZSBhcHBlbmRpbmcgc3RvcHMKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgd3JpdGVEaWZmKGludCBkaWZmLCBieXRlIGJ1ZmZlcltdLCBpbnQgb2Zmc2V0KSAKKyAgICB7CisgICAgICAgIGlmIChkaWZmID49IFNMT1BFX1JFQUNIX05FR18xXykgeworICAgICAgICAgICAgaWYgKGRpZmYgPD0gU0xPUEVfUkVBQ0hfUE9TXzFfKSB7CisgICAgICAgICAgICAgICAgYnVmZmVyW29mZnNldCArK10gPSAoYnl0ZSkoU0xPUEVfTUlERExFXyArIGRpZmYpOworICAgICAgICAgICAgfSAKKyAgICAgICAgICAgIGVsc2UgaWYgKGRpZmYgPD0gU0xPUEVfUkVBQ0hfUE9TXzJfKSB7CisgICAgICAgICAgICAgICAgYnVmZmVyW29mZnNldCArK10gPSAoYnl0ZSkoU0xPUEVfU1RBUlRfUE9TXzJfIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgKGRpZmYgLyBTTE9QRV9UQUlMX0NPVU5UXykpOworICAgICAgICAgICAgICAgIGJ1ZmZlcltvZmZzZXQgKytdID0gKGJ5dGUpKFNMT1BFX01JTl8gKyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGlmZiAlIFNMT1BFX1RBSUxfQ09VTlRfKSk7CisgICAgICAgICAgICB9IAorICAgICAgICAgICAgZWxzZSBpZiAoZGlmZiA8PSBTTE9QRV9SRUFDSF9QT1NfM18pIHsKKyAgICAgICAgICAgICAgICBidWZmZXJbb2Zmc2V0ICsgMl0gPSAoYnl0ZSkoU0xPUEVfTUlOXyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAoZGlmZiAlIFNMT1BFX1RBSUxfQ09VTlRfKSk7CisgICAgICAgICAgICAgICAgZGlmZiAvPSBTTE9QRV9UQUlMX0NPVU5UXzsKKyAgICAgICAgICAgICAgICBidWZmZXJbb2Zmc2V0ICsgMV0gPSAoYnl0ZSkoU0xPUEVfTUlOXyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAoZGlmZiAlIFNMT1BFX1RBSUxfQ09VTlRfKSk7CisgICAgICAgICAgICAgICAgYnVmZmVyW29mZnNldF0gPSAoYnl0ZSkoU0xPUEVfU1RBUlRfUE9TXzNfIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgKGRpZmYgLyBTTE9QRV9UQUlMX0NPVU5UXykpOworICAgICAgICAgICAgICAgIG9mZnNldCArPSAzOworICAgICAgICAgICAgfSAKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGJ1ZmZlcltvZmZzZXQgKyAzXSA9IChieXRlKShTTE9QRV9NSU5fIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGRpZmYgJSBTTE9QRV9UQUlMX0NPVU5UXyk7CisgICAgICAgICAgICAgICAgZGlmZiAvPSBTTE9QRV9UQUlMX0NPVU5UXzsKKyAgICAgICAgICAgICAgICBidWZmZXJbb2Zmc2V0XSA9IChieXRlKShTTE9QRV9NSU5fIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgZGlmZiAlIFNMT1BFX1RBSUxfQ09VTlRfKTsKKyAgICAgICAgICAgICAgICBkaWZmIC89IFNMT1BFX1RBSUxfQ09VTlRfOworICAgICAgICAgICAgICAgIGJ1ZmZlcltvZmZzZXQgKyAxXSA9IChieXRlKShTTE9QRV9NSU5fIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGRpZmYgJSBTTE9QRV9UQUlMX0NPVU5UXyk7CisgICAgICAgICAgICAgICAgYnVmZmVyW29mZnNldF0gPSAoYnl0ZSlTTE9QRV9NQVhfOworICAgICAgICAgICAgICAgIG9mZnNldCArPSA0OworICAgICAgICAgICAgfQorICAgICAgICB9IAorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGxvbmcgZGl2aXNpb24gPSBnZXROZWdEaXZNb2QoZGlmZiwgU0xPUEVfVEFJTF9DT1VOVF8pOworICAgICAgICAgICAgaW50IG1vZHVsbyA9IChpbnQpZGl2aXNpb247CisgICAgICAgICAgICBpZiAoZGlmZiA+PSBTTE9QRV9SRUFDSF9ORUdfMl8pIHsKKyAgICAgICAgICAgICAgICBkaWZmID0gKGludCkoZGl2aXNpb24gPj4gMzIpOworICAgICAgICAgICAgICAgIGJ1ZmZlcltvZmZzZXQgKytdID0gKGJ5dGUpKFNMT1BFX1NUQVJUX05FR18yXyArIGRpZmYpOworICAgICAgICAgICAgICAgIGJ1ZmZlcltvZmZzZXQgKytdID0gKGJ5dGUpKFNMT1BFX01JTl8gKyBtb2R1bG8pOworICAgICAgICAgICAgfSAKKyAgICAgICAgICAgIGVsc2UgaWYgKGRpZmYgPj0gU0xPUEVfUkVBQ0hfTkVHXzNfKSB7CisgICAgICAgICAgICAgICAgYnVmZmVyW29mZnNldCArIDJdID0gKGJ5dGUpKFNMT1BFX01JTl8gKyBtb2R1bG8pOworICAgICAgICAgICAgICAgIGRpZmYgPSAoaW50KShkaXZpc2lvbiA+PiAzMik7CisgICAgICAgICAgICAgICAgZGl2aXNpb24gPSBnZXROZWdEaXZNb2QoZGlmZiwgU0xPUEVfVEFJTF9DT1VOVF8pOworICAgICAgICAgICAgICAgIG1vZHVsbyA9IChpbnQpZGl2aXNpb247CisgICAgICAgICAgICAgICAgZGlmZiA9IChpbnQpKGRpdmlzaW9uID4+IDMyKTsKKyAgICAgICAgICAgICAgICBidWZmZXJbb2Zmc2V0ICsgMV0gPSAoYnl0ZSkoU0xPUEVfTUlOXyArIG1vZHVsbyk7CisgICAgICAgICAgICAgICAgYnVmZmVyW29mZnNldF0gPSAoYnl0ZSkoU0xPUEVfU1RBUlRfTkVHXzNfICsgZGlmZik7CisgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDM7CisgICAgICAgICAgICB9IAorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYnVmZmVyW29mZnNldCArIDNdID0gKGJ5dGUpKFNMT1BFX01JTl8gKyBtb2R1bG8pOworICAgICAgICAgICAgICAgIGRpZmYgPSAoaW50KShkaXZpc2lvbiA+PiAzMik7CisgICAgICAgICAgICAgICAgZGl2aXNpb24gPSBnZXROZWdEaXZNb2QoZGlmZiwgU0xPUEVfVEFJTF9DT1VOVF8pOworICAgICAgICAgICAgICAgIG1vZHVsbyA9IChpbnQpZGl2aXNpb247CisgICAgICAgICAgICAgICAgZGlmZiA9IChpbnQpKGRpdmlzaW9uID4+IDMyKTsKKyAgICAgICAgICAgICAgICBidWZmZXJbb2Zmc2V0ICsgMl0gPSAoYnl0ZSkoU0xPUEVfTUlOXyArIG1vZHVsbyk7CisgICAgICAgICAgICAgICAgZGl2aXNpb24gPSBnZXROZWdEaXZNb2QoZGlmZiwgU0xPUEVfVEFJTF9DT1VOVF8pOworICAgICAgICAgICAgICAgIG1vZHVsbyA9IChpbnQpZGl2aXNpb247CisgICAgICAgICAgICAgICAgYnVmZmVyW29mZnNldCArIDFdID0gKGJ5dGUpKFNMT1BFX01JTl8gKyBtb2R1bG8pOworICAgICAgICAgICAgICAgIGJ1ZmZlcltvZmZzZXRdID0gU0xPUEVfTUlOXzsKKyAgICAgICAgICAgICAgICBvZmZzZXQgKz0gNDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gb2Zmc2V0OworICAgIH0KKyAgICAgICAgCisgICAgLyoqCisgICAgICogSG93IG1hbnkgYnl0ZXMgd291bGQgd3JpdGVEaWZmKCkgd3JpdGU/IAorICAgICAqIEBwYXJhbSBkaWZmCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IGxlbmd0aE9mRGlmZihpbnQgZGlmZikgCisgICAgeworICAgICAgICBpZiAoZGlmZiA+PSBTTE9QRV9SRUFDSF9ORUdfMV8pIHsKKyAgICAgICAgICAgIGlmIChkaWZmIDw9IFNMT1BFX1JFQUNIX1BPU18xXykgeworICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgfSAKKyAgICAgICAgICAgIGVsc2UgaWYgKGRpZmYgPD0gU0xPUEVfUkVBQ0hfUE9TXzJfKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgICAgICB9IAorICAgICAgICAgICAgZWxzZSBpZihkaWZmIDw9IFNMT1BFX1JFQUNIX1BPU18zXykgeworICAgICAgICAgICAgICAgIHJldHVybiAzOworICAgICAgICAgICAgfSAKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiA0OworICAgICAgICAgICAgfQorICAgICAgICB9IAorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChkaWZmID49IFNMT1BFX1JFQUNIX05FR18yXykgeworICAgICAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICAgICAgfSAKKyAgICAgICAgICAgIGVsc2UgaWYgKGRpZmYgPj0gU0xPUEVfUkVBQ0hfTkVHXzNfKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDM7CisgICAgICAgICAgICB9IAorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9DaGFyVHJpZS5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvQ2hhclRyaWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hMjYxNTNjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvQ2hhclRyaWUuamF2YQpAQCAtMCwwICsxLDI1MSBAQAorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAqCisqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9DaGFyVHJpZS5qYXZhLHYgJAorKiAkRGF0ZTogMjAwMi8xMC8zMSAwMToxMDoxOSAkCisqICRSZXZpc2lvbjogMS45ICQKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKworcGFja2FnZSBjb20uaWJtLmljdS5pbXBsOworCitpbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLkRhdGFJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworCisvKioKKyAqIFRyaWUgaW1wbGVtZW50YXRpb24gd2hpY2ggc3RvcmVzIGRhdGEgaW4gY2hhciwgMTYgYml0cy4KKyAqIEBhdXRob3Igc3lud2VlCisgKiBAc2VlIGNvbS5pYm0uaWN1LnV0aWwuVHJpZQorICogQHNpbmNlIHJlbGVhc2UgMi4xLCBKYW4gMDEgMjAwMgorICovCisKKyAvLyBub3RlIHRoYXQgaSBuZWVkIHRvIGhhbmRsZSB0aGUgYmxvY2sgY2FsY3VsYXRpb25zIGxhdGVyLCBzaW5jZSBjaGFydHJpZQorIC8vIGluIGljdTRjIHVzZXMgdGhlIHNhbWUgaW5kZXggYXJyYXkuCitwdWJsaWMgY2xhc3MgQ2hhclRyaWUgZXh0ZW5kcyBUcmllCit7CisgICAgLy8gcHVibGljIGNvbnN0cnVjdG9ycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICogPHA+Q3JlYXRlcyBhIG5ldyBUcmllIHdpdGggdGhlIHNldHRpbmdzIGZvciB0aGUgdHJpZSBkYXRhLjwvcD4KKyAgICAqIDxwPlVuc2VyaWFsaXplIHRoZSAzMi1iaXQtYWxpZ25lZCBpbnB1dCBzdHJlYW0gYW5kIHVzZSB0aGUgZGF0YSBmb3IgdGhlIAorICAgICogdHJpZS48L3A+CisgICAgKiBAcGFyYW0gaW5wdXRTdHJlYW0gZmlsZSBpbnB1dCBzdHJlYW0gdG8gYSBJQ1UgZGF0YSBmaWxlLCBjb250YWluaW5nIAorICAgICogICAgICAgICAgICAgICAgICAgIHRoZSB0cmllCisgICAgKiBAcGFyYW0gZGF0YU1hbmlwdWxhdGUsIG9iamVjdCB3aGljaCBwcm92aWRlcyBtZXRob2RzIHRvIHBhcnNlIHRoZSBjaGFyIAorICAgICogICAgICAgICAgICAgICAgICAgICAgICBkYXRhCisgICAgKiBAZXhjZXB0aW9uIElPRXhjZXB0aW9uIHRocm93biB3aGVuIGRhdGEgcmVhZGluZyBmYWlscworICAgICogQGRyYWZ0IDIuMQorICAgICovCisgICAgcHVibGljIENoYXJUcmllKElucHV0U3RyZWFtIGlucHV0U3RyZWFtLCAKKyAgICAgICAgICAgICAgICAgICAgRGF0YU1hbmlwdWxhdGUgZGF0YU1hbmlwdWxhdGUpIHRocm93cyBJT0V4Y2VwdGlvbgorICAgIHsKKyAgICAgICAgc3VwZXIoaW5wdXRTdHJlYW0sIGRhdGFNYW5pcHVsYXRlKTsKKyAgICAgICAgCisgICAgICAgIGlmICghaXNDaGFyVHJpZSgpKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEYXRhIGdpdmVuIGRvZXMgbm90IGJlbG9uZyB0byBhIGNoYXIgdHJpZS4iKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIHB1YmxpYyBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAqIEdldHMgdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29kZXBvaW50LgorICAgICogSWYgbm8gdmFsdWUgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb2RlcG9pbnQsIGEgZGVmYXVsdCB2YWx1ZSB3aWxsIGJlCisgICAgKiByZXR1cm5lZC4KKyAgICAqIEBwYXJhbSBjaCBjb2RlcG9pbnQKKyAgICAqIEByZXR1cm4gb2Zmc2V0IHRvIGRhdGEKKyAgICAqIEBkcmFmdCAyLjEKKyAgICAqLworICAgIHB1YmxpYyBmaW5hbCBjaGFyIGdldENvZGVQb2ludFZhbHVlKGludCBjaCkKKyAgICB7CisgICAgICAgIGludCBvZmZzZXQgPSBnZXRDb2RlUG9pbnRPZmZzZXQoY2gpOworICAgICAgICBpZiAob2Zmc2V0ID4gMCkgeworICAgICAgICAgICAgcmV0dXJuIG1fZGF0YV9bb2Zmc2V0XTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbV9pbml0aWFsVmFsdWVfOworICAgIH0KKworICAgIC8qKgorICAgICogR2V0cyB0aGUgdmFsdWUgdG8gdGhlIGRhdGEgd2hpY2ggdGhpcyBsZWFkIHN1cnJvZ2F0ZSBjaGFyYWN0ZXIgcG9pbnRzCisgICAgKiB0by4KKyAgICAqIFJldHVybmVkIGRhdGEgbWF5IGNvbnRhaW4gZm9sZGluZyBvZmZzZXQgaW5mb3JtYXRpb24gZm9yIHRoZSBuZXh0CisgICAgKiB0cmFpbGluZyBzdXJyb2dhdGUgY2hhcmFjdGVyLgorICAgICogVGhpcyBtZXRob2QgZG9lcyBub3QgZ3VhcmFudGVlIGNvcnJlY3QgcmVzdWx0cyBmb3IgdHJhaWwgc3Vycm9nYXRlcy4KKyAgICAqIEBwYXJhbSBjaCBsZWFkIHN1cnJvZ2F0ZSBjaGFyYWN0ZXIKKyAgICAqIEByZXR1cm4gZGF0YSB2YWx1ZQorICAgICogQGRyYWZ0IDIuMQorICAgICovCisgICAgcHVibGljIGZpbmFsIGNoYXIgZ2V0TGVhZFZhbHVlKGNoYXIgY2gpCisgICAgeworICAgICAgIHJldHVybiBtX2RhdGFfW2dldExlYWRPZmZzZXQoY2gpXTsKKyAgICB9CisKKyAgICAvKioKKyAgICAqIEdldCB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBCTVAgY29kZSBwb2ludC4KKyAgICAqIExlYWQgc3Vycm9nYXRlIGNvZGUgcG9pbnRzIGFyZSB0cmVhdGVkIGFzIG5vcm1hbCBjb2RlIHBvaW50cywgd2l0aAorICAgICogdW5mb2xkZWQgdmFsdWVzIHRoYXQgbWF5IGRpZmZlciBmcm9tIGdldExlYWRWYWx1ZSgpIHJlc3VsdHMuCisgICAgKiBAcGFyYW0gY2ggdGhlIGlucHV0IEJNUCBjb2RlIHBvaW50CisgICAgKiBAcmV0dXJuIHRyaWUgZGF0YSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIEJNUCBjb2RlcG9pbnQKKyAgICAqIEBkcmFmdCAyLjEKKyAgICAqLworICAgIHB1YmxpYyBmaW5hbCBjaGFyIGdldEJNUFZhbHVlKGNoYXIgY2gpCisgICAgeworICAgICAgICByZXR1cm4gbV9kYXRhX1tnZXRCTVBPZmZzZXQoY2gpXTsKKyAgICB9CisKKyAgICAvKioKKyAgICAqIEdldCB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIGEgcGFpciBvZiBzdXJyb2dhdGVzLgorICAgICogQHBhcmFtIGxlYWQgYSBsZWFkIHN1cnJvZ2F0ZQorICAgICogQHBhcmFtIHRyYWlsIGEgdHJhaWwgc3Vycm9nYXRlCisgICAgKiBAcGFyYW0gdHJpZSBkYXRhIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3Vycm9nYXRlIGNoYXJhY3RlcnMKKyAgICAqIEBkcmFmdCAyLjEKKyAgICAqLworICAgIHB1YmxpYyBmaW5hbCBjaGFyIGdldFN1cnJvZ2F0ZVZhbHVlKGNoYXIgbGVhZCwgY2hhciB0cmFpbCkKKyAgICB7CisgICAgCWludCBvZmZzZXQgPSBnZXRTdXJyb2dhdGVPZmZzZXQobGVhZCwgdHJhaWwpOworICAgIAlpZiAob2Zmc2V0ID4gMCkgeworICAgICAgICAgICAgcmV0dXJuIG1fZGF0YV9bb2Zmc2V0XTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbV9pbml0aWFsVmFsdWVfOworICAgIH0KKworICAgIC8qKgorICAgICogPHA+R2V0IGEgdmFsdWUgZnJvbSBhIGZvbGRpbmcgb2Zmc2V0IChmcm9tIHRoZSB2YWx1ZSBvZiBhIGxlYWQgc3Vycm9nYXRlKQorICAgICogYW5kIGEgdHJhaWwgc3Vycm9nYXRlLjwvcD4KKyAgICAqIDxwPklmIHRoZSAKKyAgICAqIEBwYXJhbSBsZWFkdmFsdWUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBsZWFkIHN1cnJvZ2F0ZSB3aGljaCBjb250YWlucworICAgICogICAgICAgIHRoZSBmb2xkaW5nIG9mZnNldAorICAgICogQHBhcmFtIHRyYWlsIHN1cnJvZ2F0ZQorICAgICogQHJldHVybiB0cmllIGRhdGEgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSB0cmFpbCBjaGFyYWN0ZXIKKyAgICAqIEBkcmFmdCAyLjEKKyAgICAqLworICAgIHB1YmxpYyBmaW5hbCBjaGFyIGdldFRyYWlsVmFsdWUoaW50IGxlYWR2YWx1ZSwgY2hhciB0cmFpbCkKKyAgICB7CisgICAgICAgIGlmIChtX2RhdGFNYW5pcHVsYXRlXyA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgZmllbGQgRGF0YU1hbmlwdWxhdGUgaW4gdGhpcyBUcmllIGlzIG51bGwiKTsKKyAgICAgICAgfQorICAgICAgICBpbnQgb2Zmc2V0ID0gbV9kYXRhTWFuaXB1bGF0ZV8uZ2V0Rm9sZGluZ09mZnNldChsZWFkdmFsdWUpOworICAgICAgICBpZiAob2Zmc2V0ID4gMCkgeworCSAgICAgICAgcmV0dXJuIG1fZGF0YV9bZ2V0UmF3T2Zmc2V0KG9mZnNldCwKKyAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIpKHRyYWlsICYgU1VSUk9HQVRFX01BU0tfKSldOworICAgICAgICB9CisgICAgICAgIHJldHVybiBtX2luaXRpYWxWYWx1ZV87CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIDxwPkdldHMgdGhlIGxhdGluIDEgZmFzdCBwYXRoIHZhbHVlLjwvcD4KKyAgICAgKiA8cD5Ob3RlIHRoaXMgb25seSB3b3JrcyBpZiBsYXRpbiAxIGNoYXJhY3RlcnMgaGF2ZSB0aGVpciBvd24gbGluZWFyIAorICAgICAqIGFycmF5LjwvcD4KKyAgICAgKiBAcGFyYW0gY2ggbGF0aW4gMSBjaGFyYWN0ZXJzCisgICAgICogQHJldHVybiB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggbGF0aW4gY2hhcmFjdGVyCisgICAgICovCisgICAgcHVibGljIGZpbmFsIGNoYXIgZ2V0TGF0aW4xTGluZWFyVmFsdWUoY2hhciBjaCkgCisgICAgeworICAgIAlyZXR1cm4gbV9kYXRhX1tJTkRFWF9TVEFHRV8zX01BU0tfICsgMSArIG1fZGF0YU9mZnNldF8gKyBjaF07CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIENoZWNrcyBpZiB0aGUgYXJndW1lbnQgVHJpZSBoYXMgdGhlIHNhbWUgZGF0YSBhcyB0aGlzIFRyaWUKKyAgICAgKiBAcGFyYW0gb3RoZXIgVHJpZSB0byBjaGVjaworICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgYXJndW1lbnQgVHJpZSBoYXMgdGhlIHNhbWUgZGF0YSBhcyB0aGlzIFRyaWUsIGZhbHNlCisgICAgICogICAgICAgICBvdGhlcndpc2UKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG90aGVyKSAKKyAgICB7CisgICAgICAgIGJvb2xlYW4gcmVzdWx0ID0gc3VwZXIuZXF1YWxzKG90aGVyKTsKKyAgICAgICAgaWYgKHJlc3VsdCAmJiBvdGhlciBpbnN0YW5jZW9mIENoYXJUcmllKSB7CisgICAgICAgICAgICBDaGFyVHJpZSBvdGhlcnRyaWUgPSAoQ2hhclRyaWUpb3RoZXI7CisgICAgICAgICAgICByZXR1cm4gbV9pbml0aWFsVmFsdWVfID09IG90aGVydHJpZS5tX2luaXRpYWxWYWx1ZV87CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIHByb3RlY3RlZCBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAqIDxwPlBhcnNlcyB0aGUgaW5wdXQgc3RyZWFtIGFuZCBzdG9yZXMgaXRzIHRyaWUgY29udGVudCBpbnRvIGEgaW5kZXggYW5kCisgICAgKiBkYXRhIGFycmF5PC9wPgorICAgICogQHBhcmFtIGlucHV0U3RyZWFtIGRhdGEgaW5wdXQgc3RyZWFtIGNvbnRhaW5pbmcgdHJpZSBkYXRhCisgICAgKiBAZXhjZXB0aW9uIElPRXhjZXB0aW9uIHRocm93biB3aGVuIGRhdGEgcmVhZGluZyBmYWlscworICAgICovCisgICAgcHJvdGVjdGVkIGZpbmFsIHZvaWQgdW5zZXJpYWxpemUoSW5wdXRTdHJlYW0gaW5wdXRTdHJlYW0pIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uCisgICAgeworICAgICAgICBEYXRhSW5wdXRTdHJlYW0gaW5wdXQgPSBuZXcgRGF0YUlucHV0U3RyZWFtKGlucHV0U3RyZWFtKTsKKyAgICAgICAgaW50IGluZGV4RGF0YUxlbmd0aCA9IG1fZGF0YU9mZnNldF8gKyBtX2RhdGFMZW5ndGhfOworICAgICAgICBtX2luZGV4XyA9IG5ldyBjaGFyW2luZGV4RGF0YUxlbmd0aF07CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaW5kZXhEYXRhTGVuZ3RoOyBpICsrKSB7CisgICAgICAgICAgICBtX2luZGV4X1tpXSA9IGlucHV0LnJlYWRDaGFyKCk7CisgICAgICAgIH0KKyAgICAgICAgbV9kYXRhXyAgICAgICAgICAgPSBtX2luZGV4XzsKKyAgICAgICAgbV9pbml0aWFsVmFsdWVfICAgPSBtX2RhdGFfW21fZGF0YU9mZnNldF9dOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAqIEdldHMgdGhlIG9mZnNldCB0byB0aGUgZGF0YSB3aGljaCB0aGUgc3Vycm9nYXRlIHBhaXIgcG9pbnRzIHRvLgorICAgICogQHBhcmFtIGxlYWQgbGVhZCBzdXJyb2dhdGUKKyAgICAqIEBwYXJhbSB0cmFpbCB0cmFpbGluZyBzdXJyb2dhdGUKKyAgICAqIEByZXR1cm4gb2Zmc2V0IHRvIGRhdGEKKyAgICAqIEBkcmFmdCAyLjEKKyAgICAqLworICAgIHByb3RlY3RlZCBmaW5hbCBpbnQgZ2V0U3Vycm9nYXRlT2Zmc2V0KGNoYXIgbGVhZCwgY2hhciB0cmFpbCkKKyAgICB7CisgICAgICAgIGlmIChtX2RhdGFNYW5pcHVsYXRlXyA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgZmllbGQgRGF0YU1hbmlwdWxhdGUgaW4gdGhpcyBUcmllIGlzIG51bGwiKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gZ2V0IGZvbGQgcG9zaXRpb24gZm9yIHRoZSBuZXh0IHRyYWlsIHN1cnJvZ2F0ZQorICAgICAgICBpbnQgb2Zmc2V0ID0gbV9kYXRhTWFuaXB1bGF0ZV8uZ2V0Rm9sZGluZ09mZnNldChnZXRMZWFkVmFsdWUobGVhZCkpOworCisgICAgICAgIC8vIGdldCB0aGUgcmVhbCBkYXRhIGZyb20gdGhlIGZvbGRlZCBsZWFkL3RyYWlsIHVuaXRzCisgICAgICAgIGlmIChvZmZzZXQgPiAwKSB7CisgICAgICAgICAgICByZXR1cm4gZ2V0UmF3T2Zmc2V0KG9mZnNldCwgKGNoYXIpKHRyYWlsICYgU1VSUk9HQVRFX01BU0tfKSk7CisgICAgICAgIH0KKworICAgICAgICAvLyByZXR1cm4gLTEgaWYgdGhlcmUgaXMgYW4gZXJyb3IsIGluIHRoaXMgY2FzZSB3ZSByZXR1cm4gdGhlIGRlZmF1bHQKKyAgICAgICAgLy8gdmFsdWU6IG1faW5pdGlhbFZhbHVlXworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICogR2V0cyB0aGUgdmFsdWUgYXQgdGhlIGFyZ3VtZW50IGluZGV4LgorICAgICogRm9yIHVzZSBpbnRlcm5hbGx5IGluIGNvbS5pYm0uaWN1LnV0aWwuVHJpZUVudW1lcmF0aW9uLgorICAgICogQHBhcmFtIGluZGV4IHZhbHVlIGF0IGluZGV4IHdpbGwgYmUgcmV0cmlldmVkCisgICAgKiBAcmV0dXJuIDMyIGJpdCB2YWx1ZQorICAgICogQHNlZSBjb20uaWJtLmljdS51dGlsLlRyaWVFbnVtZXJhdGlvbgorICAgICogQGRyYWZ0IDIuMQorICAgICovCisgICAgcHJvdGVjdGVkIGZpbmFsIGludCBnZXRWYWx1ZShpbnQgaW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4gbV9kYXRhX1tpbmRleF07CisgICAgfQorCisgICAgLyoqCisgICAgKiBHZXRzIHRoZSBkZWZhdWx0IGluaXRpYWwgdmFsdWUKKyAgICAqIEByZXR1cm4gMzIgYml0IHZhbHVlIAorICAgICogQGRyYWZ0IDIuMQorICAgICovCisgICAgcHJvdGVjdGVkIGZpbmFsIGludCBnZXRJbml0aWFsVmFsdWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faW5pdGlhbFZhbHVlXzsKKyAgICB9CisgIAorICAgIC8vIHByaXZhdGUgZGF0YSBtZW1iZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAqIERlZmF1bHQgdmFsdWUKKyAgICAqLworICAgIHByaXZhdGUgY2hhciBtX2luaXRpYWxWYWx1ZV87CisgICAgLyoqCisgICAgKiBBcnJheSBvZiBjaGFyIGRhdGEKKyAgICAqLworICAgIHByb3RlY3RlZCBjaGFyIG1fZGF0YV9bXTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9DaGFyYWN0ZXJJdGVyYXRvcldyYXBwZXIuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL0NoYXJhY3Rlckl0ZXJhdG9yV3JhcHBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3MmVlNjgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9DaGFyYWN0ZXJJdGVyYXRvcldyYXBwZXIuamF2YQpAQCAtMCwwICsxLDE1NiBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3Vzci9jdnMvaWN1NGovaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvSUNVQ2hhcmFjdGVySXRlcmF0b3IuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wNi8yMCAwMToxODowNyAkIAorICogJFJldmlzaW9uOiAxLjEgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuaW1wbDsKKworaW1wb3J0IGphdmEudGV4dC5DaGFyYWN0ZXJJdGVyYXRvcjsKKworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuKjsKKworLyoqCisgKiBUaGlzIGNsYXNzIGlzIGEgd3JhcHBlciBhcm91bmQgQ2hhcmFjdGVySXRlcmF0b3IgYW5kIGltcGxlbWVudHMgdGhlIAorICogVUNoYXJhY3Rlckl0ZXJhdG9yIHByb3RvY29sCisgKiBAYXV0aG9yIHJhbQorICovCisKK3B1YmxpYyBjbGFzcyBDaGFyYWN0ZXJJdGVyYXRvcldyYXBwZXIgZXh0ZW5kcyBVQ2hhcmFjdGVySXRlcmF0b3IgeworICAgIAorICAgIHByaXZhdGUgQ2hhcmFjdGVySXRlcmF0b3IgaXRlcmF0b3I7CisgICAgCisgICAgCisgICAgcHVibGljIENoYXJhY3Rlckl0ZXJhdG9yV3JhcHBlcihDaGFyYWN0ZXJJdGVyYXRvciBpdGVyKXsKKyAgICAgICAgaWYoaXRlcj09bnVsbCl7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCk7CisgICAgICAgIH0KKyAgICAgICAgaXRlcmF0b3IgICAgID0gaXRlcjsgICAKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAc2VlIFVDaGFyYWN0ZXJJdGVyYXRvciNjdXJyZW50KCkKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGN1cnJlbnQoKSB7CisgICAgICAgIGludCBjID0gaXRlcmF0b3IuY3VycmVudCgpOworICAgICAgICBpZihjPT1pdGVyYXRvci5ET05FKXsKKwkJICByZXR1cm4gRE9ORTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYzsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAc2VlIFVDaGFyYWN0ZXJJdGVyYXRvciNnZXRMZW5ndGgoKQorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0TGVuZ3RoKCkgeworCSAgICByZXR1cm4gKGl0ZXJhdG9yLmdldEVuZEluZGV4KCkgLSBpdGVyYXRvci5nZXRCZWdpbkluZGV4KCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEBzZWUgVUNoYXJhY3Rlckl0ZXJhdG9yI2dldEluZGV4KCkKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldEluZGV4KCkgeworICAgICAgICByZXR1cm4gaXRlcmF0b3IuZ2V0SW5kZXgoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAc2VlIFVDaGFyYWN0ZXJJdGVyYXRvciNuZXh0KCkKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IG5leHQoKSB7CisgICAgICAgIGludCBpID0gaXRlcmF0b3IuY3VycmVudCgpOworICAgICAgICBpdGVyYXRvci5uZXh0KCk7CisgICAgICAgIGlmKGk9PWl0ZXJhdG9yLkRPTkUpeyAgCisJCSAgcmV0dXJuIERPTkU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQHNlZSBVQ2hhcmFjdGVySXRlcmF0b3IjcHJldmlvdXMoKQorICAgICAqLworICAgIHB1YmxpYyBpbnQgcHJldmlvdXMoKSB7CisgICAgICAgIGludCBpID0gaXRlcmF0b3IucHJldmlvdXMoKTsKKyAgICAgICAgaWYoaT09aXRlcmF0b3IuRE9ORSl7CisgICAgICAgICAgICByZXR1cm4gRE9ORTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gaTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAc2VlIFVDaGFyYWN0ZXJJdGVyYXRvciNzZXRJbmRleChpbnQpCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0SW5kZXgoaW50IGluZGV4KSB7CisgICAgICAgIHRyeXsKKyAgICAgICAgICAgIGl0ZXJhdG9yLnNldEluZGV4KGluZGV4KTsKKyAgICAgICAgfWNhdGNoKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKXsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAc2VlIFVDaGFyYWN0ZXJJdGVyYXRvciNzZXRUb0xpbWl0KCkKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRUb0xpbWl0KCkgeworCQlpdGVyYXRvci5zZXRJbmRleChpdGVyYXRvci5nZXRFbmRJbmRleCgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAc2VlIFVDaGFyYWN0ZXJJdGVyYXRvciNnZXRUZXh0KGNoYXJbXSkKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldFRleHQoY2hhcltdIGZpbGxJbiwgaW50IG9mZnNldCl7CisgICAgCWludCBsZW5ndGggPWl0ZXJhdG9yLmdldEVuZEluZGV4KCkgLSBpdGVyYXRvci5nZXRCZWdpbkluZGV4KCk7IAorICAgICAgICBpbnQgY3VycmVudEluZGV4ID0gaXRlcmF0b3IuZ2V0SW5kZXgoKTsKKyAgICAgICAgaWYob2Zmc2V0IDwgMCB8fCBvZmZzZXQgKyBsZW5ndGggPiBmaWxsSW4ubGVuZ3RoKXsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uKEludGVnZXIudG9TdHJpbmcobGVuZ3RoKSk7CisgICAgICAgIH0KKwkKKyAgICAgICAgZm9yIChjaGFyIGNoID0gaXRlcmF0b3IuZmlyc3QoKTsgY2ggIT0gaXRlcmF0b3IuRE9ORTsgY2ggPSBpdGVyYXRvci5uZXh0KCkpIHsKKwkgICAgICAgIGZpbGxJbltvZmZzZXQrK10gPSBjaDsKKwkgICAgfQorCSAgICBpdGVyYXRvci5zZXRJbmRleChjdXJyZW50SW5kZXgpOworCisgICAgICAgIHJldHVybiBsZW5ndGg7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIGNsb25lIG9mIHRoaXMgaXRlcmF0b3IuICBDbG9uZXMgdGhlIHVuZGVybHlpbmcgY2hhcmFjdGVyIGl0ZXJhdG9yLgorICAgICAqIEBzZWUgVUNoYXJhY3Rlckl0ZXJhdG9yI2Nsb25lKCkKKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0IGNsb25lKCl7CisJCXRyeSB7CisJCSAgICBDaGFyYWN0ZXJJdGVyYXRvcldyYXBwZXIgcmVzdWx0ID0gKENoYXJhY3Rlckl0ZXJhdG9yV3JhcHBlcikgc3VwZXIuY2xvbmUoKTsKKwkJICAgIHJlc3VsdC5pdGVyYXRvciA9IChDaGFyYWN0ZXJJdGVyYXRvcil0aGlzLml0ZXJhdG9yLmNsb25lKCk7CisJCSAgICByZXR1cm4gcmVzdWx0OworCQl9IGNhdGNoIChDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiBlKSB7ICAgICAgCisgICAgICAgICAgICByZXR1cm4gbnVsbDsgLy8gb25seSBpbnZva2VkIGlmIGJhZCB1bmRlcmx5aW5nIGNoYXJhY3RlciBpdGVyYXRvcgorCQl9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEBzZWUgVUNoYXJhY3Rlckl0ZXJhdG9yI21vdmVJbmRleCgpCisgICAgICovCisgICAgcHVibGljIGludCBtb3ZlSW5kZXgoaW50IGRlbHRhKXsKKyAgICAJaW50IGxlbmd0aCA9IGl0ZXJhdG9yLmdldEVuZEluZGV4KCkgLSBpdGVyYXRvci5nZXRCZWdpbkluZGV4KCk7IAorICAgICAgICBpbnQgaWR4ID0gaXRlcmF0b3IuZ2V0SW5kZXgoKStkZWx0YTsKKyAgICAgICAgCisgICAgICAgIGlmKGlkeCA8IDApIHsKKwkgICAgICAgIGlkeCA9IDA7CisJCX0gZWxzZSBpZihpZHggPiBsZW5ndGgpIHsKKwkJICAgIGlkeCA9IGxlbmd0aDsKKwkJfQorICAgICAgICByZXR1cm4gaXRlcmF0b3Iuc2V0SW5kZXgoaWR4KTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQHNlZSBVQ2hhcmFjdGVySXRlcmF0b3IjZ2V0Q2hhcmFjdGVySXRlcmF0b3IoKQorICAgICAqLworICAgIHB1YmxpYyBDaGFyYWN0ZXJJdGVyYXRvciBnZXRDaGFyYWN0ZXJJdGVyYXRvcigpeworICAgICAgICByZXR1cm4gKENoYXJhY3Rlckl0ZXJhdG9yKWl0ZXJhdG9yLmNsb25lKCk7CisgICAgfSAKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL0lDVUJpbmFyeS5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvSUNVQmluYXJ5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMmQwMDJjNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL0lDVUJpbmFyeS5qYXZhCkBAIC0wLDAgKzEsMTYwIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9JQ1VCaW5hcnkuamF2YSx2ICQKKyAqICREYXRlOiAyMDAyLzEwLzA5IDIzOjUzOjI0ICQKKyAqICRSZXZpc2lvbjogMS43ICQKKyAqICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmltcGw7CisKK2ltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uRGF0YUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS51dGlsLkFycmF5czsKKworcHVibGljIGZpbmFsIGNsYXNzIElDVUJpbmFyeSAKK3sgICAgCisgICAgLy8gcHVibGljIGlubmVyIGludGVyZmFjZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvKioKKyAgICAgKiBTcGVjaWFsIGludGVyZmFjZSBmb3IgZGF0YSBhdXRoZW50aWNhdGlvbgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgaW50ZXJmYWNlIEF1dGhlbnRpY2F0ZQorICAgIHsKKyAgICAgICAgLyoqCisgICAgICAgICAqIE1ldGhvZCB1c2VkIGluIElDVUJpbmFyeS5yZWFkSGVhZGVyKCkgdG8gcHJvdmlkZSBkYXRhIGZvcm1hdAorICAgICAgICAgKiBhdXRoZW50aWNhdGlvbi4gCisgICAgICAgICAqIEBwYXJhbSB2ZXJzaW9uIHZlcnNpb24gb2YgdGhlIGN1cnJlbnQgZGF0YQorICAgICAgICAgKiBAcmV0dXJuIHRydWUgaWYgZGF0YWZvcm1hdCBpcyBhbiBhY2NlcHRhYmxlIHZlcnNpb24sIGZhbHNlIG90aGVyd2lzZQorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIGJvb2xlYW4gaXNEYXRhVmVyc2lvbkFjY2VwdGFibGUoYnl0ZSB2ZXJzaW9uW10pOworICAgIH0KKyAgICAKKyAgICAvLyBwdWJsaWMgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIC8qKgorICAgICogPHA+SUNVIGRhdGEgaGVhZGVyIHJlYWRlciBtZXRob2QuIAorICAgICogVGFrZXMgYSBJQ1UgZ2VuZXJhdGVkIGJpZy1lbmRpYW4gaW5wdXQgc3RyZWFtLCBwYXJzZSB0aGUgSUNVIHN0YW5kYXJkIAorICAgICogZmlsZSBoZWFkZXIgYW5kIGF1dGhlbnRpY2F0ZXMgdGhlbS48L3A+CisgICAgKiA8cD5IZWFkZXIgZm9ybWF0OiAKKyAgICAqIDx1bD4KKyAgICAqICAgICA8bGk+IEhlYWRlciBzaXplIChjaGFyKQorICAgICogICAgIDxsaT4gTWFnaWMgbnVtYmVyIDEgKGJ5dGUpCisgICAgKiAgICAgPGxpPiBNYWdpYyBudW1iZXIgMiAoYnl0ZSkKKyAgICAqICAgICA8bGk+IFJlc3Qgb2YgdGhlIGhlYWRlciBzaXplIChjaGFyKQorICAgICogICAgIDxsaT4gUmVzZXJ2ZWQgd29yZCAoY2hhcikKKyAgICAqICAgICA8bGk+IEJpZyBlbmRpYW4gaW5kaWNhdG9yIChieXRlKQorICAgICogICAgIDxsaT4gQ2hhcmFjdGVyIHNldCBmYW1pbHkgaW5kaWNhdG9yIChieXRlKQorICAgICogICAgIDxsaT4gU2l6ZSBvZiBhIGNoYXIgKGJ5dGUpIGZvciBjKysgYW5kIGMgdXNlCisgICAgKiAgICAgPGxpPiBSZXNlcnZlZCBieXRlIChieXRlKQorICAgICogICAgIDxsaT4gRGF0YSBmb3JtYXQgaWRlbnRpZmllciAoNCBieXRlcyksIGVhY2ggSUNVIGRhdGEgaGFzIGl0cyBvd24KKyAgICAqICAgICAgICAgIGlkZW50aWZpZXIgdG8gZGlzdGluZ3Vpc2ggdGhlbS4gWzBdIG1ham9yIFsxXSBtaW5vciAKKyAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzJdIG1pbGxpIFszXSBtaWNybyAKKyAgICAqICAgICA8bGk+IERhdGEgdmVyc2lvbiAoNCBieXRlcyksIHRoZSBjaGFuZ2UgdmVyc2lvbiBvZiB0aGUgSUNVIGRhdGEKKyAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMF0gbWFqb3IgWzFdIG1pbm9yIFsyXSBtaWxsaSBbM10gbWljcm8gCisgICAgKiAgICAgPGxpPiBVbmljb2RlIHZlcnNpb24gKDQgYnl0ZXMpIHRoaXMgSUNVIGlzIGJhc2VkIG9uLgorICAgICogPC91bD4KKyAgICAqIDwvcD4KKyAgICAqIDxwPgorICAgICogRXhhbXBsZSBvZiB1c2U6PGJyPgorICAgICogPHByZT4KKyAgICAqIHRyeSB7CisgICAgKiAgICBGaWxlSW5wdXRTdHJlYW0gaW5wdXQgPSBuZXcgRmlsZUlucHV0U3RyZWFtKGZpbGVuYW1lKTsKKyAgICAqICAgIElmIChVdGlsaXR5LnJlYWRJQ1VEYXRhSGVhZGVyKGlucHV0LCBkYXRhZm9ybWF0LCBkYXRhdmVyc2lvbiwgCisgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlKSB7CisgICAgKiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJWZXJpZmllZCBmaWxlIGhlYWRlciwgdGhpcyBpcyBhIElDVSBkYXRhIGZpbGUiKTsKKyAgICAqICAgIH0KKyAgICAqIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKKyAgICAqICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVGhpcyBpcyBub3QgYSBJQ1UgZGF0YSBmaWxlIik7CisgICAgKiB9CisgICAgKiA8L3ByZT4KKyAgICAqIDwvcD4KKyAgICAqIEBwYXJhbSBpbnB1dFN0cmVhbSBpbnB1dCBzdHJlYW0gdGhhdCBjb250YWlucyB0aGUgSUNVIGRhdGEgaGVhZGVyCisgICAgKiBAcGFyYW0gZGF0YUZvcm1hdElERXhwZWN0ZWQgRGF0YSBmb3JtYXQgZXhwZWN0ZWQuIEFuIGFycmF5IG9mIDQgYnl0ZXMgCisgICAgKiAgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIGFib3V0IHRoZSBkYXRhIGZvcm1hdC4KKyAgICAqICAgICAgICAgICAgICAgICAgICAgRS5nLiBkYXRhIGZvcm1hdCBJRCAxLjIuMy40LiB3aWxsIGJlY2FtZSBhbiBhcnJheSBvZiAKKyAgICAqICAgICAgICAgICAgICAgICAgICAgezEsIDIsIDMsIDR9CisgICAgKiBAcGFyYW0gYXV0aGVudGljYXRlIHVzZXIgZGVmaW5lZCBleHRyYSBkYXRhIGF1dGhlbnRpY2F0aW9uLiBUaGlzIHZhbHVlCisgICAgKiAgICAgICAgICAgICAgICAgICAgIGNhbiBiZSBudWxsLCBpZiBubyBleHRyYSBhdXRoZW50aWNhdGlvbiBpcyBuZWVkZWQuCisgICAgKiBAZXhjZXB0aW9uIElPRXhjZXB0aW9uIHRocm93biBpZiB0aGVyZSBpcyBhIHJlYWQgZXJyb3Igb3IgCisgICAgKiAgICAgICAgICAgIHdoZW4gaGVhZGVyIGF1dGhlbnRpY2F0aW9uIGZhaWxzLgorICAgICogQGRyYWZ0IDIuMQorICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBieXRlW10gcmVhZEhlYWRlcihJbnB1dFN0cmVhbSBpbnB1dFN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlIGRhdGFGb3JtYXRJREV4cGVjdGVkW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXV0aGVudGljYXRlIGF1dGhlbnRpY2F0ZSkgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uCisgICAgeworICAgICAgICBEYXRhSW5wdXRTdHJlYW0gaW5wdXQgPSBuZXcgRGF0YUlucHV0U3RyZWFtKGlucHV0U3RyZWFtKTsKKyAgICAgICAgY2hhciBoZWFkZXJzaXplID0gaW5wdXQucmVhZENoYXIoKTsKKyAgICAgICAgaGVhZGVyc2l6ZSAtPSAyOworICAgICAgICAvL3JlYWRpbmcgdGhlIGhlYWRlciBmb3JtYXQKKyAgICAgICAgYnl0ZSBtYWdpYzEgPSBpbnB1dC5yZWFkQnl0ZSgpOworICAgICAgICBoZWFkZXJzaXplIC0tOworICAgICAgICBieXRlIG1hZ2ljMiA9IGlucHV0LnJlYWRCeXRlKCk7CisgICAgICAgIGhlYWRlcnNpemUgLS07CisgICAgICAgIGlmIChtYWdpYzEgIT0gTUFHSUMxIHx8IG1hZ2ljMiAhPSBNQUdJQzIpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbihNQUdJQ19OVU1CRVJfQVVUSEVOVElDQVRJT05fRkFJTEVEXyk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlucHV0LnJlYWRDaGFyKCk7IC8vIHJlYWRpbmcgc2l6ZQorICAgICAgICBoZWFkZXJzaXplIC09IDI7CisgICAgICAgIGlucHV0LnJlYWRDaGFyKCk7IC8vIHJlYWRpbmcgcmVzZXJ2ZWQgd29yZAorICAgICAgICBoZWFkZXJzaXplIC09IDI7CisgICAgICAgIGJ5dGUgYmlnZW5kaWFuICAgID0gaW5wdXQucmVhZEJ5dGUoKTsKKyAgICAgICAgaGVhZGVyc2l6ZSAtLTsKKyAgICAgICAgYnl0ZSBjaGFyc2V0ICAgICAgPSBpbnB1dC5yZWFkQnl0ZSgpOworICAgICAgICBoZWFkZXJzaXplIC0tOworICAgICAgICBieXRlIGNoYXJzaXplICAgICA9IGlucHV0LnJlYWRCeXRlKCk7CisgICAgICAgIGhlYWRlcnNpemUgLS07CisgICAgICAgIGlucHV0LnJlYWRCeXRlKCk7IC8vIHJlYWRpbmcgcmVzZXJ2ZWQgYnl0ZQorICAgICAgICBoZWFkZXJzaXplIC0tOworICAgICAgICAgICAgICAgIAorICAgICAgICBieXRlIGRhdGFGb3JtYXRJRFtdID0gbmV3IGJ5dGVbNF07CisgICAgICAgIGlucHV0LnJlYWRGdWxseShkYXRhRm9ybWF0SUQpOworICAgICAgICBoZWFkZXJzaXplIC09IDQ7CisgICAgICAgIGJ5dGUgZGF0YVZlcnNpb25bXSA9IG5ldyBieXRlWzRdOworICAgICAgICBpbnB1dC5yZWFkRnVsbHkoZGF0YVZlcnNpb24pOworICAgICAgICBoZWFkZXJzaXplIC09IDQ7CisgICAgICAgIGJ5dGUgdW5pY29kZVZlcnNpb25bXSA9IG5ldyBieXRlWzRdOworICAgICAgICBpbnB1dC5yZWFkRnVsbHkodW5pY29kZVZlcnNpb24pOworICAgICAgICBoZWFkZXJzaXplIC09IDQ7CisgICAgICAgIGlucHV0LnNraXBCeXRlcyhoZWFkZXJzaXplKTsKKworICAgICAgICBpZiAoYmlnZW5kaWFuICE9IEJJR19FTkRJQU5fIHx8IGNoYXJzZXQgIT0gQ0hBUl9TRVRfCisgICAgICAgICAgICB8fCBjaGFyc2l6ZSAhPSBDSEFSX1NJWkVfCisgICAgICAgICAgICB8fCAhQXJyYXlzLmVxdWFscyhkYXRhRm9ybWF0SURFeHBlY3RlZCwgZGF0YUZvcm1hdElEKQorICAgICAgICAgICAgfHwgKGF1dGhlbnRpY2F0ZSAhPSBudWxsIAorICAgICAgICAgICAgICAgICYmICFhdXRoZW50aWNhdGUuaXNEYXRhVmVyc2lvbkFjY2VwdGFibGUoZGF0YVZlcnNpb24pKSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKEhFQURFUl9BVVRIRU5USUNBVElPTl9GQUlMRURfKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdW5pY29kZVZlcnNpb247CisgICAgfQorICAgICAKKyAgICAvLyBwcml2YXRlIHZhcmlhYmxlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIAorICAgIC8qKgorICAgICogTWFnaWMgbnVtYmVycyB0byBhdXRoZW50aWNhdGUgdGhlIGRhdGEgZmlsZQorICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYnl0ZSBNQUdJQzEgPSAoYnl0ZSkweGRhOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJ5dGUgTUFHSUMyID0gKGJ5dGUpMHgyNzsKKyAgICAgIAorICAgIC8qKgorICAgICogRmlsZSBmb3JtYXQgYXV0aGVudGljYXRpb24gdmFsdWVzCisgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIEJJR19FTkRJQU5fID0gMTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIENIQVJfU0VUXyA9IDA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYnl0ZSBDSEFSX1NJWkVfID0gMjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAvKioKKyAgICAqIEVycm9yIG1lc3NhZ2VzCisgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgTUFHSUNfTlVNQkVSX0FVVEhFTlRJQ0FUSU9OX0ZBSUxFRF8gPSAKKyAgICAgICAgICAgICAgICAgICAgICAgIklDVSBkYXRhIGZpbGUgZXJyb3I6IE5vdCBhbiBJQ1UgZGF0YSBmaWxlIjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVBREVSX0FVVEhFTlRJQ0FUSU9OX0ZBSUxFRF8gPQorICAgICAgICAiSUNVIGRhdGEgZmlsZSBlcnJvcjogSGVhZGVyIGF1dGhlbnRpY2F0aW9uIGZhaWxlZCwgcGxlYXNlIGNoZWNrIGlmIHlvdSBoYXZlIGEgdmFsaWQgSUNVIGRhdGEgZmlsZSI7Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9JQ1VCaW5hcnlTdHJlYW0uamF2YSBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL0lDVUJpbmFyeVN0cmVhbS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4NGU1YTIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9JQ1VCaW5hcnlTdHJlYW0uamF2YQpAQCAtMCwwICsxLDU5IEBACisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmlnaHQgKGMpIDIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyogQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIEF1dGhvcjogQWxhbiBMaXUKKyogQ3JlYXRlZDogTm92ZW1iZXIgNSAyMDAyCisqIFNpbmNlOiBJQ1UgMi40CisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworcGFja2FnZSBjb20uaWJtLmljdS5pbXBsOworCitpbXBvcnQgamF2YS5pby4qOworCisvKioKKyAqIEEgRGF0YUlucHV0U3RyZWFtIHRoYXQgaW1wbGVtZW50cyByYW5kb20tYWNjZXNzIHNlZWtpbmcuICBGb3IgdGhpcworICogdG8gd29yaywgdGhlIHNpemUgb2YgdGhlIGRhdGEgc3RyZWFtIG11c3QgYmUga25vd24gaW4gYWR2YW5jZSwgb3IKKyAqIHRoZSBkYXRhIG11c3QgYmUgc3VwcGxpZWQgYXMgYSByYXcgYnl0ZVtdIGFycmF5LgorICoKKyAqIFNlZWtpbmcgZG9lc24ndCB3b3JrIGRpcmVjdGx5IG9uIGFsbCBzdHJlYW1zLiAgSWYgYSBnaXZlbiBzdHJlYW0KKyAqIGRvZXNuJ3Qgc3VwcG9ydCBzZWVraW5nLCBleHRyYWN0IHRoZSBieXRlcyBpbnRvIGEgYnl0ZVtdIGFycmF5IGFuZAorICogdXNlIHRoZSBieXRlW10gY29uc3RydWN0b3IuCisgKi8KK2NsYXNzIElDVUJpbmFyeVN0cmVhbSBleHRlbmRzIERhdGFJbnB1dFN0cmVhbSB7CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgYSBzdHJlYW0gZnJvbSB0aGUgZ2l2ZW4gc3RyZWFtIGFuZCBzaXplLgorICAgICAqIEBwYXJhbSBzdHJlYW0gdGhlIHN0cmVhbSBvZiBkYXRhCisgICAgICogQHBhcmFtIHNpemUgdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IHNob3VsZCBiZSBtYWRlIGF2YWlsYWJsZQorICAgICAqIGZvciBzZWVraW5nLiAgQnl0ZXMgYmV5b25kIHRoaXMgbWF5IGJlIHJlYWQsIGJ1dCBzZWVraW5nIHdpbGwKKyAgICAgKiBub3Qgd29yayBmb3Igb2Zmc2V0ID49IHNpemUuCisgICAgICovCisgICAgcHVibGljIElDVUJpbmFyeVN0cmVhbShJbnB1dFN0cmVhbSBzdHJlYW0sIGludCBzaXplKSB7CisgICAgICAgIHN1cGVyKHN0cmVhbSk7CisgICAgICAgIG1hcmsoc2l6ZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGEgc3RyZWFtIGZyb20gdGhlIGdpdmVuIHJhdyBieXRlcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgSUNVQmluYXJ5U3RyZWFtKGJ5dGVbXSByYXcpIHsKKyAgICAgICAgdGhpcyhuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0ocmF3KSwgcmF3Lmxlbmd0aCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2VlayB0byB0aGUgZ2l2ZW4gb2Zmc2V0LiAgT2Zmc2V0IGlzIGZyb20gdGhlIHBvc2l0aW9uIG9mIHRoZQorICAgICAqIHN0cmVhbSBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yLCBvciBmcm9tIHRoZSBzdGFydCBvZiB0aGUKKyAgICAgKiBieXRlW10gYXJyYXkuCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2VlayhpbnQgb2Zmc2V0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICByZXNldCgpOworICAgICAgICBpbnQgYWN0dWFsID0gc2tpcEJ5dGVzKG9mZnNldCk7CisgICAgICAgIGlmIChhY3R1YWwgIT0gb2Zmc2V0KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigiU2tpcCgiICsgb2Zmc2V0ICsgIikgb25seSBza2lwcGVkICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsICsgIiBieXRlcyIpOworICAgICAgICB9CisgICAgICAgIGlmIChmYWxzZSkgU3lzdGVtLm91dC5wcmludGxuKCIoc2VlayAiICsgb2Zmc2V0ICsgIikiKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9JQ1VEZWJ1Zy5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvSUNVRGVidWcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzBlYjllCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvSUNVRGVidWcuamF2YQpAQCAtMCwwICsxLDEyOCBAQAorLyoqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9pbXBsL0lDVURlYnVnLmphdmEsdiAkCisgKiAkRGF0ZTogMjAwMi8wOC8xMyAyMzo0MDo1MSAkCisgKiAkUmV2aXNpb246IDEuNSAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5pbXBsOworCitpbXBvcnQgY29tLmlibS5pY3UudXRpbC5WZXJzaW9uSW5mbzsKKworcHVibGljIGZpbmFsIGNsYXNzIElDVURlYnVnIHsKKyAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgcGFyYW1zOworICAgIHN0YXRpYyB7CisJdHJ5IHsKKwkgICAgcGFyYW1zID0gU3lzdGVtLmdldFByb3BlcnR5KCJJQ1VEZWJ1ZyIpOworCX0KKwljYXRjaCAoU2VjdXJpdHlFeGNlcHRpb24gZSkgeworCX0KKyAgICB9CisgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBkZWJ1ZyA9IHBhcmFtcyAhPSBudWxsOworICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gaGVscCA9IGRlYnVnICYmIChwYXJhbXMuZXF1YWxzKCIiKSB8fCBwYXJhbXMuaW5kZXhPZigiaGVscCIpICE9IC0xKTsKKworICAgIHN0YXRpYyB7CisJaWYgKGRlYnVnKSB7CisJICAgIFN5c3RlbS5vdXQucHJpbnRsbigiXG5JQ1VEZWJ1Zz0iICsgcGFyYW1zKTsKKwl9CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgamF2YVZlcnNpb25TdHJpbmcgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImphdmEudmVyc2lvbiIpOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgYm9vbGVhbiBpc0pESzE0T3JIaWdoZXI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBWZXJzaW9uSW5mbyBqYXZhVmVyc2lvbjsKKworICAgIHB1YmxpYyBzdGF0aWMgVmVyc2lvbkluZm8gZ2V0SW5zdGFuY2VMZW5pZW50KFN0cmluZyBzKSB7CisJLy8gY2xlYW4gc3RyaW5nCisJLy8gcHJlc2VydmUgb25seSBkaWdpdHMsIHNlcGFyYXRlZCBieSBzaW5nbGUgJy4nIAorCS8vIGlnbm9yZSBvdmVyIDQgZGlnaXQgc2VxdWVuY2VzCisJLy8gZG9lcyBub3QgdGVzdCA8IDI1NSwgdmVyeSBvZGQuLi4KKworCWNoYXJbXSBjaGFycyA9IHMudG9DaGFyQXJyYXkoKTsKKwlpbnQgciA9IDAsIHcgPSAwLCBjb3VudCA9IDA7CisJYm9vbGVhbiBudW1lcmljID0gZmFsc2U7IC8vIGlnbm9yZSBsZWFkaW5nIG5vbi1udW1lcmljcworCXdoaWxlIChyIDwgY2hhcnMubGVuZ3RoKSB7CisJICAgIGNoYXIgYyA9IGNoYXJzW3IrK107CisJICAgIGlmIChjIDwgJzAnIHx8IGMgPiAnOScpIHsKKwkJaWYgKG51bWVyaWMpIHsKKwkJICAgIGlmIChjb3VudCA9PSAzKSB7CisJCQkvLyBvbmx5IGZvdXIgZGlnaXQgc3RyaW5ncyBhbGxvd2VkCisJCQlicmVhazsKKwkJICAgIH0KKwkJICAgIG51bWVyaWMgPSBmYWxzZTsKKwkJICAgIGNoYXJzW3crK10gPSAnLic7CisJCSAgICArK2NvdW50OworCQl9CisJICAgIH0gZWxzZSB7CisJCW51bWVyaWMgPSB0cnVlOworCQljaGFyc1t3KytdID0gYzsKKwkgICAgfQorCX0KKwl3aGlsZSAodyA+IDAgJiYgY2hhcnNbdy0xXSA9PSAnLicpIHsKKwkgICAgLS13OworCX0KKwkKKwlTdHJpbmcgdnMgPSBuZXcgU3RyaW5nKGNoYXJzLCAwLCB3KTsKKworCXJldHVybiBWZXJzaW9uSW5mby5nZXRJbnN0YW5jZSh2cyk7CisgICAgfQorCisgICAgc3RhdGljIHsKKwlqYXZhVmVyc2lvbiA9IGdldEluc3RhbmNlTGVuaWVudChqYXZhVmVyc2lvblN0cmluZyk7CisKKyAgICAgICAgVmVyc2lvbkluZm8gamF2YTE0VmVyc2lvbiA9IFZlcnNpb25JbmZvLmdldEluc3RhbmNlKCIxLjQuMCIpOworCisgICAgICAgIGlzSkRLMTRPckhpZ2hlciA9IGphdmFWZXJzaW9uLmNvbXBhcmVUbyhqYXZhMTRWZXJzaW9uKSA+PSAwOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBlbmFibGVkKCkgeworCXJldHVybiBkZWJ1ZzsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gZW5hYmxlZChTdHJpbmcgYXJnKSB7CisJaWYgKGRlYnVnKSB7CisJICAgIGJvb2xlYW4gcmVzdWx0ID0gcGFyYW1zLmluZGV4T2YoYXJnKSAhPSAtMTsKKwkgICAgaWYgKGhlbHApIFN5c3RlbS5vdXQucHJpbnRsbigiXG5JQ1VEZWJ1Zy5lbmFibGVkKCIgKyBhcmcgKyAiKSA9ICIgKyByZXN1bHQpOworCSAgICByZXR1cm4gcmVzdWx0OworCX0KKwlyZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgdmFsdWUoU3RyaW5nIGFyZykgeworCVN0cmluZyByZXN1bHQgPSAiZmFsc2UiOworCWlmIChkZWJ1ZykgeworCSAgICBpbnQgaW5kZXggPSBwYXJhbXMuaW5kZXhPZihhcmcpOworCSAgICBpZiAoaW5kZXggIT0gLTEpIHsKKwkJaW5kZXggKz0gYXJnLmxlbmd0aCgpOworCQlpZiAocGFyYW1zLmxlbmd0aCgpID4gaW5kZXggJiYgcGFyYW1zLmNoYXJBdChpbmRleCkgPT0gJz0nKSB7CisJCSAgICBpbmRleCArPSAxOworCQkgICAgaW50IGxpbWl0ID0gcGFyYW1zLmluZGV4T2YoIiwiLCBpbmRleCk7CisJCSAgICByZXN1bHQgPSBwYXJhbXMuc3Vic3RyaW5nKGluZGV4LCBsaW1pdCA9PSAtMSA/IHBhcmFtcy5sZW5ndGgoKSA6IGxpbWl0KTsKKwkJfQorCQlyZXN1bHQgPSAidHJ1ZSI7CisJICAgIH0KKworCSAgICBpZiAoaGVscCkgU3lzdGVtLm91dC5wcmludGxuKCJcbklDVURlYnVnLnZhbHVlKCIgKyBhcmcgKyAiKSA9ICIgKyByZXN1bHQpOworCX0KKwlyZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHN0YXRpYyBwdWJsaWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKwkvLyB0ZXN0CisJU3RyaW5nW10gdGVzdHMgPSB7CisJICAgICIxLjMuMCIsCisJICAgICIxLjMuMF8wMiIsCisJICAgICIxLjMuMWVhIiwKKwkgICAgIjEuNC4xYjQzIiwKKwkgICAgIl9fXzQxX19fNSIsCisJICAgICJ4MS40LjUxeHg4OWVhLjdmIgorCX07CisJZm9yIChpbnQgaSA9IDA7IGkgPCB0ZXN0cy5sZW5ndGg7ICsraSkgeworCSAgICBTeXN0ZW0ub3V0LnByaW50bG4odGVzdHNbaV0gKyAiID0+ICIgKyBnZXRJbnN0YW5jZUxlbmllbnQodGVzdHNbaV0pKTsKKwl9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvSUNVTGlzdFJlc291cmNlQnVuZGxlLmphdmEgYi9zcmMvY29tL2libS9pY3UvaW1wbC9JQ1VMaXN0UmVzb3VyY2VCdW5kbGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNWIzNjA0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvSUNVTGlzdFJlc291cmNlQnVuZGxlLmphdmEKQEAgLTAsMCArMSw0MzQgQEAKKy8qKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMS0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9JQ1VMaXN0UmVzb3VyY2VCdW5kbGUuamF2YSx2ICQKKyAqICREYXRlOiAyMDAyLzA4LzEzIDIzOjQwOjUyICQKKyAqICRSZXZpc2lvbjogMS45ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKKy8qKgorICogQSBsaXN0IHJlc291cmNlIGJ1bmRsZSB0aGF0IGRvZXMgcmVkaXJlY3Rpb24gCisgKiBiZWNhdXNlIG90aGVyd2lzZSBzb21lIG9mIG91ciByZXNvdXJjZSBjbGFzcyBmaWxlcworICogYXJlIHRvbyBiaWcgZm9yIHRoZSBqYXZhIHJ1bnRpbWUgdG8gaGFuZGxlLgorICovCisKK3BhY2thZ2UgY29tLmlibS5pY3UuaW1wbDsKKworaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbVJlYWRlcjsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CitpbXBvcnQgamF2YS51dGlsLlJlc291cmNlQnVuZGxlOworaW1wb3J0IGphdmEudXRpbC5NaXNzaW5nUmVzb3VyY2VFeGNlcHRpb247CitpbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKKworcHVibGljIGNsYXNzIElDVUxpc3RSZXNvdXJjZUJ1bmRsZSBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIElDVURBVEEgPSAiSUNVREFUQSI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIElDVV9CVU5ETEVfTkFNRSA9ICJMb2NhbGVFbGVtZW50cyI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIElDVV9QQUNLQUdFX05BTUUgPSJjb20uaWJtLmljdS5pbXBsLmRhdGEiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBFTkNPRElORz0iVVRGLTgiOworICAgIAorICAgIHByb3RlY3RlZCBJQ1VMaXN0UmVzb3VyY2VCdW5kbGUoKSB7CisgICAgfQorCisgICAgcHJpdmF0ZSBIYXNodGFibGUgdmlzaXRlZCA9IG5ldyBIYXNodGFibGUoKTsKKyAgICAvKioKKyAgICAgKiBTdWJjbGFzc2VycyBtdXN0IHN0YXRpY2FsbHkgaW5pdGlhbGl6ZSB0aGlzCisgICAgICovCisgICAgcHJvdGVjdGVkIE9iamVjdFtdW10gY29udGVudHM7CisKKyAgICAvKioKKyAgICAgKiBUaGlzIGlzIG91ciBjYWNoZQorICAgICAqLworICAgIHByaXZhdGUgT2JqZWN0W11bXSByZWFsQ29udGVudHM7CisKKyAgICAvKioKKyAgICAgKiBTZWUgYmFzZSBjbGFzcyBkZXNjcmlwdGlvbgorICAgICAqLworICAgIHByb3RlY3RlZCBPYmplY3RbXVtdIGdldENvbnRlbnRzKCl7CisJCS8vIHdlIHJlcGxhY2UgYW55IHJlZGlyZWN0ZWQgdmFsdWVzIHdpdGggcmVhbCB2YWx1ZXMgaW4gYSBjbG9uZWQgYXJyYXkKKwkKKwkJaWYgKHJlYWxDb250ZW50cyA9PSBudWxsKSB7CisJCSAgICByZWFsQ29udGVudHMgPSBjb250ZW50czsKKwkJICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY29udGVudHMubGVuZ3RoOyArK2kpIHsKKwkJCQlPYmplY3QgbmV3VmFsdWUgPSBnZXRSZWRpcmVjdGVkUmVzb3VyY2UoKFN0cmluZyljb250ZW50c1tpXVswXSxjb250ZW50c1tpXVsxXSk7CisJCQkJaWYgKG5ld1ZhbHVlICE9IG51bGwpIHsKKwkJCQkgICAgaWYgKHJlYWxDb250ZW50cyA9PSBjb250ZW50cykgeworCQkJCQkgICAgIHJlYWxDb250ZW50cyA9IChPYmplY3RbXVtdKWNvbnRlbnRzLmNsb25lKCk7CisJCQkJICAgIH0KKwkJCQkgICAgcmVhbENvbnRlbnRzW2ldID0gbmV3IE9iamVjdFtdIHsgY29udGVudHNbaV1bMF0sIG5ld1ZhbHVlIH07CisJCQkJfQorCQkgICAgfQorCQl9CisJCisJCXJldHVybiByZWFsQ29udGVudHM7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIG51bGwgaWYgdmFsdWUgaXMgYWxyZWFkeSBpbiBleGlzdGluZyBjb250ZW50cyBhcnJheSwgb3RoZXJ3aXNlIGZldGNoIHRoZQorICAgICAqIHJlYWwgdmFsdWUgYW5kIHJldHVybiBpdC4KKyAgICAgKi8KKyAgICBwcml2YXRlIE9iamVjdCBnZXRSZWRpcmVjdGVkUmVzb3VyY2UoU3RyaW5nIGtleSwgT2JqZWN0IHZhbHVlKSB7CisJCisJCWlmICh2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdFtdW10pIHsKKwkJICAgIE9iamVjdFtdW10gYVZhbHVlID0gKE9iamVjdFtdW10pdmFsdWU7CisgICAgICAgICAgICBpbnQgaT0wOworICAgICAgICAgICAgd2hpbGUoaSA8IGFWYWx1ZS5sZW5ndGgpeworICAgICAgICAgICAgICAgIGludCBqPTA7CisgICAgICAgICAgICAgICAgd2hpbGUoaiA8IGFWYWx1ZVtpXS5sZW5ndGgpeworICAgICAgICAgICAgICAgICAgICBhVmFsdWVbaV1bal0gPSBnZXRSZWRpcmVjdGVkUmVzb3VyY2UoKFN0cmluZylhVmFsdWVbaV1bMF0sYVZhbHVlW2ldW2pdKTsKKyAgICAgICAgICAgICAgICAgICAgaisrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpKys7CisgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgCisJCX1lbHNlIGlmKHZhbHVlIGluc3RhbmNlb2YgQWxpYXMpeyAgCisgICAgICAgICAgICBTdHJpbmcgY05hbWUgPSB0aGlzLmdldENsYXNzKCkuZ2V0TmFtZSgpOworICAgICAgICAgICAgdmlzaXRlZC5jbGVhcigpOworICAgICAgICAgICAgdmlzaXRlZC5wdXQoY05hbWUra2V5LCIiKTsgICAgICAgIAorICAgICAgICAgICAgcmV0dXJuICgoQWxpYXMpdmFsdWUpLmdldFJlc291cmNlKGNOYW1lLGtleSx2aXNpdGVkKTsKKyAgICAgICAgfWVsc2UgaWYodmFsdWUgaW5zdGFuY2VvZiBSZWRpcmVjdGVkUmVzb3VyY2UpeworICAgICAgICAgICAgcmV0dXJuICgoUmVkaXJlY3RlZFJlc291cmNlKXZhbHVlKS5nZXRSZXNvdXJjZSh0aGlzKTsKKyAgICAgICAgfSAgICAgICAKKwkJCQorCQlyZXR1cm4gdmFsdWU7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgYnl0ZVtdIHJlYWRUb0VPUyhJbnB1dFN0cmVhbSBzdHJlYW0pIHsKKworCQlBcnJheUxpc3QgdmVjID0gbmV3IEFycmF5TGlzdCgpOworCQlpbnQgY291bnQgPSAwOworCQlpbnQgcG9zID0gMDsKKwkJZmluYWwgaW50IE1BWExFTkdUSCA9IDB4ODAwMDsgLy8gbWF4IGJ1ZmZlciBzaXplIC0gMzJLCisJCWludCBsZW5ndGggPSAweDgwOyAvLyBzdGFydCB3aXRoIHNtYWxsIGJ1ZmZlcnMgYW5kIHdvcmsgdXAKKwkJZG8geworCQkgICAgcG9zID0gMDsKKwkJICAgIGxlbmd0aCA9IGxlbmd0aCA+PSBNQVhMRU5HVEggPyBNQVhMRU5HVEggOiBsZW5ndGggKiAyOworCQkgICAgYnl0ZVtdIGJ1ZmZlciA9IG5ldyBieXRlW2xlbmd0aF07CisJCSAgICB0cnkgeworCQkJCWRvIHsKKwkJCQkgICAgaW50IG4gPSBzdHJlYW0ucmVhZChidWZmZXIsIHBvcywgbGVuZ3RoIC0gcG9zKTsKKwkJCQkgICAgaWYgKG4gPT0gLTEpIHsKKwkJCQkJYnJlYWs7CisJCQkJICAgIH0KKwkJCQkgICAgcG9zICs9IG47CisJCQkJfSB3aGlsZSAocG9zIDwgbGVuZ3RoKTsKKwkJICAgIH0KKwkJICAgIGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7CisJCSAgICB9CisJCSAgICB2ZWMuYWRkKGJ1ZmZlcik7CisJCSAgICBjb3VudCArPSBwb3M7CisJCX0gd2hpbGUgKHBvcyA9PSBsZW5ndGgpOworCQkJCQkJCQorCQkJCQkJCQorCQlieXRlW10gZGF0YSA9IG5ldyBieXRlW2NvdW50XTsKKwkJcG9zID0gMDsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCB2ZWMuc2l6ZSgpOyArK2kpIHsKKwkJICAgIGJ5dGVbXSBidWYgPSAoYnl0ZVtdKXZlYy5nZXQoaSk7CisJCSAgICBpbnQgbGVuID0gTWF0aC5taW4oYnVmLmxlbmd0aCwgY291bnQgLSBwb3MpOworCQkgICAgU3lzdGVtLmFycmF5Y29weShidWYsIDAsIGRhdGEsIHBvcywgbGVuKTsKKwkJICAgIHBvcyArPSBsZW47CisJCX0KKwkJcmV0dXJuIGRhdGE7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgY2hhcltdIHJlYWRUb0VPUyhJbnB1dFN0cmVhbVJlYWRlciBzdHJlYW0pIHsKKwkJQXJyYXlMaXN0IHZlYyA9IG5ldyBBcnJheUxpc3QoKTsKKwkJaW50IGNvdW50ID0gMDsKKwkJaW50IHBvcyA9IDA7CisJCWZpbmFsIGludCBNQVhMRU5HVEggPSAweDgwMDA7IC8vIG1heCBidWZmZXIgc2l6ZSAtIDMySworCQlpbnQgbGVuZ3RoID0gMHg4MDsgLy8gc3RhcnQgd2l0aCBzbWFsbCBidWZmZXJzIGFuZCB3b3JrIHVwCisJCWRvIHsKKwkJICAgIHBvcyA9IDA7CisJCSAgICBsZW5ndGggPSBsZW5ndGggPj0gTUFYTEVOR1RIID8gTUFYTEVOR1RIIDogbGVuZ3RoICogMjsKKwkJICAgIGNoYXJbXSBidWZmZXIgPSBuZXcgY2hhcltsZW5ndGhdOworCQkgICAgdHJ5IHsKKwkJCQlkbyB7CisJCQkJICAgIGludCBuID0gc3RyZWFtLnJlYWQoYnVmZmVyLCBwb3MsIGxlbmd0aCAtIHBvcyk7CisJCQkJICAgIGlmIChuID09IC0xKSB7CisJCQkJCWJyZWFrOworCQkJCSAgICB9CisJCQkJICAgIHBvcyArPSBuOworCQkJCX0gd2hpbGUgKHBvcyA8IGxlbmd0aCk7CisJCSAgICB9CisJCSAgICBjYXRjaCAoSU9FeGNlcHRpb24gZSkgeworCQkgICAgfQorCQkgICAgdmVjLmFkZChidWZmZXIpOworCQkgICAgY291bnQgKz0gcG9zOworCQl9IHdoaWxlIChwb3MgPT0gbGVuZ3RoKTsKKwkJCQkJCQkKKwkJY2hhcltdIGRhdGEgPSBuZXcgY2hhcltjb3VudF07CisJCXBvcyA9IDA7CisJCWZvciAoaW50IGkgPSAwOyBpIDwgdmVjLnNpemUoKTsgKytpKSB7CisJCSAgICBjaGFyW10gYnVmID0gKGNoYXJbXSl2ZWMuZ2V0KGkpOworCQkgICAgaW50IGxlbiA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGNvdW50IC0gcG9zKTsKKwkJICAgIFN5c3RlbS5hcnJheWNvcHkoYnVmLCAwLCBkYXRhLCBwb3MsIGxlbik7CisJCSAgICBwb3MgKz0gbGVuOworCQl9CisJCXJldHVybiBkYXRhOworICAgIH0KKyAgICAvKgorICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgQ29tcHJlc3NlZFN0cmluZyBpbXBsZW1lbnRzIFJlZGlyZWN0ZWRSZXNvdXJjZXsKKyAgICAgICAgcHJpdmF0ZSBTdHJpbmcgZXhwYW5kZWQ9bnVsbDsKKyAgICAgICAgcHJpdmF0ZSBTdHJpbmcgY29tcHJlc3NlZD1udWxsOworICAgICAgICBwdWJsaWMgQ29tcHJlc3NlZFN0cmluZyhTdHJpbmcgc3RyKXsKKyAgICAgICAgICAgY29tcHJlc3NlZD1zdHI7CisgICAgICAgIH0KKyAgICAgICAgcHVibGljIE9iamVjdCBnZXRSZXNvdXJjZShPYmplY3Qgb2JqKXsKKyAgICAgICAgICAgIGlmKGNvbXByZXNzZWQ9PW51bGwpeworICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYoZXhwYW5kZWQ9PW51bGwpeworICAgICAgICAgICAgICAgIGV4cGFuZGVkPSBuZXcgU3RyaW5nKFV0aWxpdHkuUkxFU3RyaW5nVG9DaGFyQXJyYXkoY29tcHJlc3NlZCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGV4cGFuZGVkOworICAgICAgICB9CisgICAgfQorICAgICovCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBDb21wcmVzc2VkQmluYXJ5IGltcGxlbWVudHMgUmVkaXJlY3RlZFJlc291cmNleworICAgICAgICBwcml2YXRlIGJ5dGVbXSBleHBhbmRlZD1udWxsOworICAgICAgICBwcml2YXRlIFN0cmluZyBjb21wcmVzc2VkPW51bGw7CisgICAgICAgIHB1YmxpYyBDb21wcmVzc2VkQmluYXJ5KFN0cmluZyBzdHIpeworICAgICAgICAgICBjb21wcmVzc2VkID0gc3RyOworICAgICAgICB9CisgICAgICAgIHB1YmxpYyBPYmplY3QgZ2V0UmVzb3VyY2UoT2JqZWN0IG9iail7CisgICAgICAgICAgICBpZihjb21wcmVzc2VkPT1udWxsKXsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYoZXhwYW5kZWQ9PW51bGwpeworICAgICAgICAgICAgICAgIGV4cGFuZGVkPSBVdGlsaXR5LlJMRVN0cmluZ1RvQnl0ZUFycmF5KGNvbXByZXNzZWQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGV4cGFuZGVkOworICAgICAgICB9CisgICAgCisgICAgfQorICAgIHByaXZhdGUgaW50ZXJmYWNlIFJlZGlyZWN0ZWRSZXNvdXJjZXsKKyAgICAgICAgcHVibGljIE9iamVjdCBnZXRSZXNvdXJjZShPYmplY3Qgb2JqKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBSZXNvdXJjZUJpbmFyeSBpbXBsZW1lbnRzIFJlZGlyZWN0ZWRSZXNvdXJjZXsKKyAgICAgICAgcHJpdmF0ZSBieXRlW10gZXhwYW5kZWQ9bnVsbDsKKyAgICAgICAgcHJpdmF0ZSBTdHJpbmcgcmVzTmFtZT1udWxsOworICAgICAgICBwdWJsaWMgUmVzb3VyY2VCaW5hcnkoU3RyaW5nIG5hbWUpeworICAgICAgICAgICAgcmVzTmFtZT1uYW1lOworICAgICAgICB9CisgICAgICAgIHB1YmxpYyBPYmplY3QgZ2V0UmVzb3VyY2UoT2JqZWN0IG9iail7CisgICAgICAgICAgICBpZihleHBhbmRlZD09bnVsbCl7CisJICAgICAgICAgICAgSW5wdXRTdHJlYW0gc3RyZWFtID0gb2JqLmdldENsYXNzKCkuZ2V0UmVzb3VyY2VBc1N0cmVhbShyZXNOYW1lKTsKKyAgICAgICAgICAgICAgICBpZihzdHJlYW09PW51bGwpeworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uKCIiLG9iai5nZXRDbGFzcygpLmdldE5hbWUoKSxyZXNOYW1lKTsKKyAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgZXhwYW5kZWQgPSByZWFkVG9FT1Moc3RyZWFtKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBleHBhbmRlZDsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFJlc291cmNlU3RyaW5nIGltcGxlbWVudHMgUmVkaXJlY3RlZFJlc291cmNleworICAgICAgICBwcml2YXRlIGNoYXJbXSBleHBhbmRlZD1udWxsOworICAgICAgICBwcml2YXRlIFN0cmluZyByZXNOYW1lPW51bGw7CisgICAgICAgIHB1YmxpYyBSZXNvdXJjZVN0cmluZyhTdHJpbmcgbmFtZSl7CisgICAgICAgICAgICByZXNOYW1lPW5hbWU7CisgICAgICAgIH0KKyAgICAgICAgcHVibGljIE9iamVjdCBnZXRSZXNvdXJjZShPYmplY3Qgb2JqKXsKKyAgICAgICAgICAgIGlmKGV4cGFuZGVkPT1udWxsKXsKKyAgICAgICAgICAgICAgICAvLyBSZXNvdXJjZSBzdHJpbmdzIGFyZSBhbHdheXMgVVRGLTgKKyAgICAgICAgICAgICAgICBJbnB1dFN0cmVhbSBzdHJlYW0gPSBvYmouZ2V0Q2xhc3MoKS5nZXRSZXNvdXJjZUFzU3RyZWFtKHJlc05hbWUpOworICAgICAgICAgICAgICAgIGlmKHN0cmVhbT09bnVsbCl7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBNaXNzaW5nUmVzb3VyY2VFeGNlcHRpb24oIiIsb2JqLmdldENsYXNzKCkuZ2V0TmFtZSgpLHJlc05hbWUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB0cnl7CisgICAgICAgICAgICAgICAgICAgIElucHV0U3RyZWFtUmVhZGVyIHJlYWRlciA9ICBuZXcgSW5wdXRTdHJlYW1SZWFkZXIoc3RyZWFtLEVOQ09ESU5HKTsKKyAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWQgPSByZWFkVG9FT1MocmVhZGVyKTsKKyAgICAgICAgICAgICAgICB9Y2F0Y2goVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiBleCl7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJDb3VsZCBvcGVuIGNvbnZlcnRlciBmb3IgZW5jb2Rpbmc6ICIgK0VOQ09ESU5HKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbmV3IFN0cmluZyhleHBhbmRlZCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBBbGlhc3sKKyAgICAgICAgcHVibGljIEFsaWFzKFN0cmluZyBwYXRoKXsKKyAgICAgICAgICAgIHBhdGhUb1Jlc291cmNlID0gcGF0aDsKKyAgICAgICAgfTsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBjaGFyIFJFU19QQVRIX1NFUF9DSEFSID0gJy8nOworICAgICAgICBwcml2YXRlIFN0cmluZyBwYXRoVG9SZXNvdXJjZTsKKyAgICAgICAgCisgICAgICAgIAorICAgICAgICBwcml2YXRlIE9iamVjdCBnZXRSZXNvdXJjZShTdHJpbmcgY2xhc3NOYW1lLFN0cmluZyBwYXJlbnRLZXksIEhhc2h0YWJsZSB2aXNpdGVkKXsKKyAgICAgICAgICAgIFN0cmluZyBwYWNrYWdlTmFtZT1udWxsLGJ1bmRsZU5hbWU9bnVsbCwgbG9jYWxlPW51bGwsIGtleVBhdGg9bnVsbDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYocGF0aFRvUmVzb3VyY2UuaW5kZXhPZihSRVNfUEFUSF9TRVBfQ0hBUik9PTApeworICAgICAgICAgICAgICAgIGludCBpID1wYXRoVG9SZXNvdXJjZS5pbmRleE9mKFJFU19QQVRIX1NFUF9DSEFSLDEpOworICAgICAgICAgICAgICAgIGludCBqID1wYXRoVG9SZXNvdXJjZS5pbmRleE9mKFJFU19QQVRIX1NFUF9DSEFSLGkrMSk7CisgICAgICAgICAgICAgICAgYnVuZGxlTmFtZT1wYXRoVG9SZXNvdXJjZS5zdWJzdHJpbmcoMSxpKTsKKyAgICAgICAgICAgICAgICBsb2NhbGU9cGF0aFRvUmVzb3VyY2Uuc3Vic3RyaW5nKGkrMSk7CisgICAgICAgICAgICAgICAgaWYoaiE9LTEpeworICAgICAgICAgICAgICAgICAgICBsb2NhbGU9cGF0aFRvUmVzb3VyY2Uuc3Vic3RyaW5nKGkrMSxqKTsKKyAgICAgICAgICAgICAgICAgICAga2V5UGF0aD1wYXRoVG9SZXNvdXJjZS5zdWJzdHJpbmcoaisxLHBhdGhUb1Jlc291cmNlLmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLy90aGVyZSBpcyBhIHBhdGggaW5jbHVkZWQgCisgICAgICAgICAgICAgICAgaWYoYnVuZGxlTmFtZS5lcXVhbHMoSUNVREFUQSkpeworICAgICAgICAgICAgICAgICAgICBidW5kbGVOYW1lID0gSUNVX0JVTkRMRV9OQU1FOworICAgICAgICAgICAgICAgICAgICBwYWNrYWdlTmFtZSA9IElDVV9QQUNLQUdFX05BTUU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfWVsc2V7CisgICAgICAgICAgICAgICAgLy9ubyBwYXRoIHN0YXJ0IHdpdGggbG9jYWxlCisgICAgICAgICAgICAgICAgaW50IGkgPXBhdGhUb1Jlc291cmNlLmluZGV4T2YoUkVTX1BBVEhfU0VQX0NIQVIpOworICAgICAgICAgICAgICAgIC8vSWYgdGhpcyBpcyBhIGJ1bmRsZSB3aXRoIGxvY2FsZSBuYW1lIGZvbGxvd2luZyBpdAorICAgICAgICAgICAgICAgIC8vdGhlbiBpdCBzaG91bGQgYmUgb2YgdHlwZSA8YnVuZGxlIG5hbWU+Xzxsb2NhbGU+CisgICAgICAgICAgICAgICAgLy9pZiBub3Qgd2UgZG9ub3QgZ3VhcmFudGVlIHRoYXQgdGhpcyB3aWxsIHdvcmsKKyAgICAgICAgICAgICAgICBpbnQgaiA9IGNsYXNzTmFtZS5sYXN0SW5kZXhPZigiLiIpOworICAgICAgICAgICAgICAgIHBhY2thZ2VOYW1lPWNsYXNzTmFtZS5zdWJzdHJpbmcoMCxqKTsKKyAgICAgICAgICAgICAgICBidW5kbGVOYW1lPWNsYXNzTmFtZS5zdWJzdHJpbmcoaisxLGNsYXNzTmFtZS5pbmRleE9mKCJfIikpOworICAgICAgICAgICAgICAgIGtleVBhdGg9cGF0aFRvUmVzb3VyY2Uuc3Vic3RyaW5nKGkrMSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYoaSE9LTEpeworICAgICAgICAgICAgICAgICAgICBsb2NhbGUgPSBwYXRoVG9SZXNvdXJjZS5zdWJzdHJpbmcoMCxpKTsKKyAgICAgICAgICAgICAgICB9ZWxzZXsKKyAgICAgICAgICAgICAgICAgICAgbG9jYWxlPWtleVBhdGg7CisgICAgICAgICAgICAgICAgICAgIGtleVBhdGg9cGFyZW50S2V5OworICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9cGFja2FnZU5hbWUrIi4iK2J1bmRsZU5hbWUrIl8iK2xvY2FsZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgCisgICAgICAgICAgICBSZXNvdXJjZUJ1bmRsZSBidW5kbGUgPSBudWxsOworICAgICAgICAgICAgLy8gZ2V0UmVzb3VyY2VCdW5kbGUgZ3VhcmFudGVlcyB0aGF0IHRoZSBDTEFTU1BBVEggd2lsbCBiZSBzZWFyY2hlZAorICAgICAgICAgICAgLy8gZm9yIGxvYWRpbmcgdGhlIHJlc291cmNlIHdpdGggbmFtZSA8YnVuZGxlTmFtZT5fPGxvY2FsZU5hbWU+LmNsYXNzCisgICAgICAgICAgICBidW5kbGUgPSBJQ1VMb2NhbGVEYXRhLmdldFJlc291cmNlQnVuZGxlKHBhY2thZ2VOYW1lLGJ1bmRsZU5hbWUsbG9jYWxlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgcmV0dXJuIGZpbmRSZXNvdXJjZShidW5kbGUsY2xhc3NOYW1lLGtleVBhdGgsIHZpc2l0ZWQpOworICAgICAgICB9CisgICAgICAgIAorCisgICAgICAgIAorICAgICAgICBwcml2YXRlIGJvb2xlYW4gaXNJbmRleChTdHJpbmcgcyl7CisgICAgICAgICAgICAgaWYocy5sZW5ndGgoKT09MSl7CisgICAgICAgICAgICAgICAgY2hhciBjID0gcy5jaGFyQXQoMCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIENoYXJhY3Rlci5pc0RpZ2l0KGMpOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcHJpdmF0ZSBpbnQgZ2V0SW5kZXgoU3RyaW5nIHMpeworICAgICAgICAgICAgIGlmKHMubGVuZ3RoKCk9PTEpeworICAgICAgICAgICAgICAgIGNoYXIgYyA9IHMuY2hhckF0KDApOworICAgICAgICAgICAgICAgIGlmKENoYXJhY3Rlci5pc0RpZ2l0KGMpKXsKKyAgICAgICAgICAgICAgICAgIHJldHVybiBJbnRlZ2VyLnZhbHVlT2YocykuaW50VmFsdWUoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBwcml2YXRlIE9iamVjdCBmaW5kUmVzb3VyY2UoT2JqZWN0W11bXSBjb250ZW50cywgU3RyaW5nIGtleSl7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvbnRlbnRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgLy8ga2V5IG11c3QgYmUgbm9uLW51bGwgU3RyaW5nLCB2YWx1ZSBtdXN0IGJlIG5vbi1udWxsCisgICAgICAgICAgICAgICAgU3RyaW5nIHRlbXBLZXkgPSAoU3RyaW5nKSBjb250ZW50c1tpXVswXTsKKyAgICAgICAgICAgICAgICBPYmplY3QgdmFsdWUgPSBjb250ZW50c1tpXVsxXTsKKyAgICAgICAgICAgICAgICBpZiAodGVtcEtleSA9PSBudWxsIHx8IHZhbHVlID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmKHRlbXBLZXkuZXF1YWxzKGtleSkpeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICAgICAgcHJpdmF0ZSBPYmplY3QgZmluZFJlc291cmNlKE9iamVjdCBvICwgU3RyaW5nW10ga2V5cywgaW50IHN0YXJ0KXsKKyAgICAgICAgICAgIE9iamVjdCBvYmogPSBvOworICAgICAgICAgICAgaWYoIHN0YXJ0IDwga2V5cy5sZW5ndGggJiYga2V5c1tzdGFydF0gIT1udWxsKXsKKwkgICAgICAgICAgICBpZihvYmogaW5zdGFuY2VvZiBPYmplY3RbXVtdKXsKKwkgICAgICAgICAgICAgICAgb2JqID0gZmluZFJlc291cmNlKChPYmplY3RbXVtdKW9iaixrZXlzW3N0YXJ0XSk7ICAgCisJICAgICAgICAgICAgfWVsc2UgaWYob2JqIGluc3RhbmNlb2YgT2JqZWN0W10gJiYgaXNJbmRleChrZXlzW3N0YXJ0XSkpeworICAgICAgICAgICAgICAgICAgICBvYmogPSAoKE9iamVjdFtdKW9iailbZ2V0SW5kZXgoa2V5c1tzdGFydF0pXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYoc3RhcnQrMSA8IGtleXMubGVuZ3RoICYmIGtleXNbc3RhcnQrMV0gIT1udWxsKXsKKyAgICAgICAgICAgICAgICAgICAgb2JqID0gZmluZFJlc291cmNlKG9iaixrZXlzLHN0YXJ0KzEpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBvYmo7CisgICAgICAgIH0KKyAgICAgICAgcHJpdmF0ZSBPYmplY3QgZmluZFJlc291cmNlKFJlc291cmNlQnVuZGxlIGJ1bmRsZSxTdHJpbmcgY2xhc3NOYW1lLFN0cmluZyBrZXksIEhhc2h0YWJsZSB2aXNpdGVkKXsKKyAgICAgICAgICAgIGlmKGtleT09bnVsbCl7CisgICAgICAgICAgICAgICAgcmV0dXJuICgoSUNVTGlzdFJlc291cmNlQnVuZGxlKWJ1bmRsZSkuZ2V0Q29udGVudHMoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmKHZpc2l0ZWQuZ2V0KGNsYXNzTmFtZStrZXkpIT1udWxsKXsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uKCJDaXJjdWxhciBBbGlhc2VzIGluIGJ1bmRsZS4iLGJ1bmRsZS5nZXRDbGFzcygpLmdldE5hbWUoKSxrZXkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICB2aXNpdGVkLnB1dChjbGFzc05hbWUra2V5LCIiKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgU3RyaW5nW10ga2V5cyA9IHNwbGl0KGtleSxSRVNfUEFUSF9TRVBfQ0hBUik7CisgICAgICAgICAgICBPYmplY3QgbyA9bnVsbDsKKyAgICAgICAgICAgIGlmKGtleXMubGVuZ3RoPjApeworICAgICAgICAgICAgICAgIG8gPSBidW5kbGUuZ2V0T2JqZWN0KGtleXNbMF0pOworICAgICAgICAgICAgICAgIG8gPSBmaW5kUmVzb3VyY2UobyxrZXlzLDEpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbz1yZXNvbHZlQWxpYXNlcyhvLGNsYXNzTmFtZSxrZXksdmlzaXRlZCk7CisgICAgICAgICAgICByZXR1cm4gbzsKKyAgICAgICAgfQorICAgICAgICBwcml2YXRlICBPYmplY3QgcmVzb2x2ZUFsaWFzZXMoT2JqZWN0IG8sU3RyaW5nIGNsYXNzTmFtZSxTdHJpbmcga2V5LCBIYXNodGFibGUgdmlzaXRlZCl7CisgICAgICAgICAgICBpZihvIGluc3RhbmNlb2YgT2JqZWN0W11bXSl7CisgICAgICAgICAgICAgICAgbyA9IHJlc29sdmVBbGlhc2VzKChPYmplY3RbXVtdKW8sY2xhc3NOYW1lLGtleSx2aXNpdGVkKTsKKyAgICAgICAgICAgIH1lbHNlIGlmKG8gaW5zdGFuY2VvZiBPYmplY3RbXSl7CisgICAgICAgICAgICAgICAgIG8gPSByZXNvbHZlQWxpYXNlcygoT2JqZWN0W10pbyxjbGFzc05hbWUsa2V5LHZpc2l0ZWQpOyAgICAgICAgICAgCisgICAgICAgICAgICB9ZWxzZSBpZihvIGluc3RhbmNlb2YgQWxpYXMpeworICAgICAgICAgICAgICAgIHJldHVybiAoKEFsaWFzKW8pLmdldFJlc291cmNlKGNsYXNzTmFtZSxrZXksdmlzaXRlZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbzsKKyAgICAgICAgfQorICAgICAgICBwcml2YXRlIE9iamVjdCByZXNvbHZlQWxpYXNlcyhPYmplY3RbXVtdIG8sU3RyaW5nIGNsYXNzTmFtZSwgU3RyaW5nIGtleSxIYXNodGFibGUgdmlzaXRlZCl7CisgICAgICAgICAgICBpbnQgaSA9MDsKKyAgICAgICAgICAgIHdoaWxlKGk8by5sZW5ndGgpeworICAgICAgICAgICAgICAgIG9baV1bMV09cmVzb2x2ZUFsaWFzZXMoKE9iamVjdClvW2ldWzFdLGNsYXNzTmFtZSxrZXksdmlzaXRlZCk7CisgICAgICAgICAgICAgICAgaSsrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG87CisgICAgICAgIH0KKyAgICAgICAgcHJpdmF0ZSBPYmplY3QgcmVzb2x2ZUFsaWFzZXMoT2JqZWN0W10gbyxTdHJpbmcgY2xhc3NOYW1lLCBTdHJpbmcga2V5LEhhc2h0YWJsZSB2aXNpdGVkKXsKKyAgICAgICAgICAgIGludCBpID0wOworICAgICAgICAgICAgd2hpbGUoaTxvLmxlbmd0aCl7CisgICAgICAgICAgICAgICAgb1tpXT1yZXNvbHZlQWxpYXNlcygoT2JqZWN0KW9baV0sY2xhc3NOYW1lLGtleSx2aXNpdGVkKTsKKyAgICAgICAgICAgICAgICBpKys7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbzsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHJpdmF0ZSBTdHJpbmdbXSBzcGxpdChTdHJpbmcgc291cmNlLCBjaGFyIGRlbGltaXRlcil7CisgICAgICAgICAgIAorICAgICAgICAgICAgY2hhcltdIHNyYyA9IHNvdXJjZS50b0NoYXJBcnJheSgpOworICAgICAgICAgICAgaW50IGluZGV4ID0gMDsKKyAgICAgICAgICAgIGludCBudW1kZWxpbWl0PTA7CisgICAgICAgICAgICAvLyBmaXJzdCBjb3VudCB0aGUgbnVtYmVyIG9mIGRlbGltaXRlcnMKKyAgICAgICAgICAgIGZvcihpbnQgaT0wO2k8c291cmNlLmxlbmd0aCgpO2krKyl7CisgICAgICAgICAgICAgICAgaWYoc3JjW2ldPT1kZWxpbWl0ZXIpeworICAgICAgICAgICAgICAgICAgICBudW1kZWxpbWl0Kys7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgU3RyaW5nW10gdmFsdWVzID1udWxsOworICAgICAgICAgICAgdmFsdWVzID0gbmV3IFN0cmluZ1tudW1kZWxpbWl0KzJdOworICAgICAgICAgICAgLy8gbm93IHNwbGl0CisgICAgICAgICAgICBpbnQgb2xkPTA7CisgICAgICAgICAgICBmb3IoaW50IGo9MDtqPHNyYy5sZW5ndGg7aisrKXsKKyAgICAgICAgICAgICAgICBpZihzcmNbal09PWRlbGltaXRlcil7CisJICAgICAgICAgICAgICAgIHZhbHVlc1tpbmRleCsrXSA9IG5ldyBTdHJpbmcoc3JjLG9sZCxqLW9sZCk7CisJICAgICAgICAgICAgICAgIG9sZD1qKzEvKiBza2lwIGFmdGVyIHRoZSBkZWxpbWl0ZXIqLzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZihvbGQgPHNyYy5sZW5ndGgpCisgICAgICAgICAgICAgICAgdmFsdWVzW2luZGV4KytdPW5ldyBTdHJpbmcoc3JjLG9sZCxzcmMubGVuZ3RoLW9sZCk7CisgICAgICAgICAgICByZXR1cm4gdmFsdWVzOworICAgICAgICB9CisgICAgfQorICAgIAorfQorCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9JQ1VMb2NhbGVEYXRhLmphdmEgYi9zcmMvY29tL2libS9pY3UvaW1wbC9JQ1VMb2NhbGVEYXRhLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODY2ZDY2NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL0lDVUxvY2FsZURhdGEuamF2YQpAQCAtMCwwICsxLDMzOSBAQAorLyoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMDIgLSBBbGwgUmlnaHRzIFJlc2VydmVkCisgKi8KKworcGFja2FnZSBjb20uaWJtLmljdS5pbXBsOworCitpbXBvcnQgamF2YS5sYW5nLnJlZi5Tb2Z0UmVmZXJlbmNlOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CitpbXBvcnQgamF2YS51dGlsLk1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGU7CitpbXBvcnQgamF2YS51dGlsLkFycmF5czsKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7CitpbXBvcnQgamF2YS51dGlsLk1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuU2V0OworCisvKioKKyAqIFByb3ZpZGVzIGluZm9ybWF0aW9uIGFib3V0IGFuZCBhY2Nlc3MgdG8gcmVzb3VyY2UgYnVuZGxlcyBpbiB0aGUKKyAqIGNvbS5pYm0udGV4dC5yZXNvdXJjZXMgcGFja2FnZS4gIFVubGlrZSB0aGUgamF2YSB2ZXJzaW9uLCB0aGlzIGRvZXMKKyAqIG5vdCBpbmNsdWRlIHJlc291cmNlcyBmcm9tIGFueSBvdGhlciBsb2NhdGlvbi4gIEluIHBhcnRpY3VsYXIsIGl0CisgKiBkb2VzIG5vdCBsb29rIGluIHRoZSBib290IG9yIHN5c3RlbSBjbGFzcyBwYXRoLgorICovCitwdWJsaWMgY2xhc3MgSUNVTG9jYWxlRGF0YSB7CisgICAgcHJpdmF0ZSBzdGF0aWMgTG9jYWxlW10gbG9jYWxlTGlzdDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgUEFDS0FHRTEgPSAiY29tLmlibS5pY3UuaW1wbC5kYXRhIjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmdbXSBwYWNrYWdlTmFtZXMgPSB7IFBBQ0tBR0UxIH07CisgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBkZWJ1ZyA9IElDVURlYnVnLmVuYWJsZWQoImxvY2FsZWRhdGEiKTsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSBsaXN0IG9mIHRoZSBpbnN0YWxsZWQgbG9jYWxlcy4KKyAgICAgKgorICAgICAqIFRoZSBmb2xsb3dpbmcgbm90ZSBieSBSaWNoIGlzIG9ic29sZXRlLCBzZWUgYmVsb3cuICAtLSBkbGYgMDEgT2N0LiAyMDAyCisgICAgICogLS0tLS0KKyAgICAgKiBAcGFyYW0ga2V5IEEgcmVzb3VyY2UgdGFnLiAgQ3VycmVudGx5LCB0aGlzIHBhcmFtZXRlciBpcyBpZ25vcmVkLiAgVGhlIG9idmlvdXMKKyAgICAgKiBpbnRlbnQsIGhvd2V2ZXIsICBpcyBmb3IgZ2V0QXZhaWxhYmxlTG9jYWxlcygpIHRvIHJldHVybiBhIGxpc3Qgb2Ygb25seSB0aG9zZQorICAgICAqIGxvY2FsZXMgdGhhdCBjb250YWluIGEgcmVzb3VyY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIHJlc291cmNlIHRhZy4KKyAgICAgKgorICAgICAqIDxwPkJlZm9yZSB3ZSBpbXBsZW1lbnQgdGhpcyBmdW5jdGlvbiB0aGlzIHdheSwgaG93ZXZlciwgc29tZSB0aG91Z2h0IHNob3VsZCBiZQorICAgICAqIGdpdmVuIHRvIHdoZXRoZXIgdGhpcyBpcyByZWFsbHkgdGhlIHJpZ2h0IHRoaW5nIHRvIGRvLiAgQmVjYXVzZSBvZiB0aGUgbG9va3VwCisgICAgICogYWxnb3JpdGhtLCBhIE51bWJlckZvcm1hdCwgZm9yIGV4YW1wbGUsIGlzICJpbnN0YWxsZWQiIGZvciBhbGwgbG9jYWxlcy4gIEJ1dCBpZgorICAgICAqIHdlJ3JlIHRyeWluZyB0byBwdXQgdXAgYSBsaXN0IG9mIE51bWJlckZvcm1hdHMgdG8gY2hvb3NlIGZyb20sIHdlIG1heSB3YW50IHRvIHNlZQorICAgICAqIG9ubHkgYSBsaXN0IG9mIHRob3NlIGxvY2FsZXMgdGhhdCB1bmlxdWVseSBkZWZpbmUgYSBOdW1iZXJGb3JtYXQgcmF0aGVyIHRoYW4KKyAgICAgKiBpbmhlcml0aW5nIG9uZSBmcm9tIGFub3RoZXIgbG9jYWxlLiAgVGh1cywgaWYgZnIgYW5kIGZyX0NBIHVuaXF1ZWx5IGRlZmluZQorICAgICAqIE51bWJlckZvcm1hdCBkYXRhLCBidXQgZnJfQkUgZG9lc24ndCwgdGhlIHVzZXIgd291bGRuJ3Qgc2VlICJGcmVuY2ggKEJlbGdpdW0pIiBpbgorICAgICAqIHRoZSBsaXN0IGFuZCB3b3VsZCBnbyBmb3IgIkZyZW5jaCAoZGVmYXVsdCkiIGluc3RlYWQuICBPZiBjb3Vyc2UsIHRoaXMgbWVhbnMKKyAgICAgKiAiRW5naXNoIChVbml0ZWQgU3RhdGVzKSIgd291bGQgbm90IGJlIGluIHRoZSBsaXN0LCBzaW5jZSBpdCBpcyB0aGUgZGVmYXVsdCBsb2NhbGUuCisgICAgICogVGhpcyBtaWdodCBiZSBva2F5LCBidXQgbWlnaHQgYmUgY29uZnVzaW5nIHRvIHNvbWUgdXNlcnMuCisgICAgICoKKyAgICAgKiA8cD5JbiBhZGRpdGlvbiwgdGhlIG90aGVyIGZ1bmN0aW9ucyB0aGF0IGNhbGwgZ2V0QXZhaWxhYmxlTG9jYWxlcygpIGRvbid0IGN1cnJlbnRseQorICAgICAqIGFsbCBwYXNzIHRoZSByaWdodCB0aGluZyBmb3IgImtleSwiIG1lYW5pbmcgdGhhdCBhbGwgb2YgdGhlc2UgZnVuY3Rpb25zIHNob3VsZCBiZQorICAgICAqIGxvb2tlZCBhdCBiZWZvcmUgYW55dGhpbmcgaXMgZG9uZSB0byB0aGlzIGZ1bmN0aW9uLgorICAgICAqCisgICAgICogPHA+V2UgcmVjb21tZW5kIHRoYXQgc29tZW9uZSB0YWtlIHNvbWUgY2FyZWZ1bCBjb25zaWRlcmF0aW9uIG9mIHRoZXNlIGlzc3VlcyBiZWZvcmUKKyAgICAgKiBtb2RpZnlpbmcgdGhpcyBmdW5jdGlvbiB0byBwYXkgYXR0ZW50aW9uIHRvIHRoZSAia2V5IiBwYXJhbWV0ZXIuICAtLXJ0ZyAxLzI2Lzk4CisgICAgICogLS0tLS0KKyAgICAgKgorICAgICAqIFJldHVybiBhIGxpc3Qgb2YgdGhlIGxvY2FsZXMgc3VwcG9ydGVkIGJ5IGEgY29sbGVjdGlvbiBvZiByZXNvdXJjZSBidW5kbGVzLgorICAgICAqIEFsbCBJQ1VMb2NhbGVEYXRhLWJhc2VkIHNlcnZpY2VzIHRoYXQgdXNlIGEgcGFydGljdWxhciByZXNvdXJjZSBidW5kbGUgc3VwcG9ydAorICAgICAqIGFsbCB0aGUgbG9jYWxlcyBmcm9tIHRoYXQgYnVuZGxlLiAgSWYgc3VwcG9ydCBmb3IgYSBwYXJ0aWN1bGFyIHNlcnZpY2UgaXMgc3BvdHR5LAorICAgICAqIGEgZGlmZmVyZW50IGJ1bmRsZSBwcmVmaXggc2hvdWxkIGJlIHVzZWQgZm9yIHRoYXQgc2VydmljZS4KKyAgICAgKiBAcGFyYW0gYnVuZGxlUHJlZml4IHRoZSBwcmVmaXggb2YgdGhlIHJlc291cmNlIGJ1bmRsZXMgdG8gdXNlLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgTG9jYWxlW10gZ2V0QXZhaWxhYmxlTG9jYWxlcyhTdHJpbmcgYnVuZGxlUHJlZml4KSB7CisgICAgICAgIHJldHVybiAoTG9jYWxlW10pZ2V0QXZhaWxFbnRyeShidW5kbGVQcmVmaXgpLmdldExvY2FsZUxpc3QoKS5jbG9uZSgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlbmllbmNlIG1ldGhvZCB0aGF0IHJldHVybnMgYSBsaXN0IG9mIGFsbCB0aGUgYXZpbGFibGUgTE9DQUxFX0VMRU1FTlRTIGxvY2FsZXMuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBMb2NhbGVbXSBnZXRBdmFpbGFibGVMb2NhbGVzKCkgeworICAgICAgICByZXR1cm4gZ2V0QXZhaWxhYmxlTG9jYWxlcyhMT0NBTEVfRUxFTUVOVFMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhIHNldCBvZiB0aGUgbG9jYWxlIG5hbWVzIHN1cHBvcnRlZCBieSBhIGNvbGxlY3Rpb24gb2YgcmVzb3VyY2UgYnVuZGxlcy4KKyAgICAgKiBAcGFyYW0gYnVuZGxlUHJlZml4IHRoZSBwcmVmaXggb2YgdGhlIHJlc291cmNlIGJ1bmRsZXMgdG8gdXNlLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU2V0IGdldEF2YWlsYWJsZUxvY2FsZU5hbWVTZXQoU3RyaW5nIGJ1bmRsZVByZWZpeCkgeworICAgICAgICByZXR1cm4gZ2V0QXZhaWxFbnRyeShidW5kbGVQcmVmaXgpLmdldExvY2FsZU5hbWVTZXQoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSBzZXQgb2YgdGhlIGxvY2FsZSBuYW1lcyBzdXBwb3J0ZWQgYnkgYSBjb2xsZWN0aW9uIG9mIHJlc291cmNlIGJ1bmRsZXMuCisgICAgICogQHBhcmFtIGJ1bmRsZVByZWZpeCB0aGUgcHJlZml4IG9mIHRoZSByZXNvdXJjZSBidW5kbGVzIHRvIHVzZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFNldCBnZXRBdmFpbGFibGVMb2NhbGVOYW1lU2V0KCkgeworICAgICAgICByZXR1cm4gZ2V0QXZhaWxhYmxlTG9jYWxlTmFtZVNldChMT0NBTEVfRUxFTUVOVFMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEhvbGRzIHRoZSBwcmVmaXgsIGFuZCBsYXppbHkgY3JlYXRlcyB0aGUgTG9jYWxlW10gbGlzdCBvciB0aGUgbG9jYWxlIG5hbWUgU2V0IGFzIG5lZWRlZC4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjbGFzcyBBdmFpbEVudHJ5IHsKKyAgICAgICAgcHJpdmF0ZSBTdHJpbmcgcHJlZml4OworICAgICAgICBwcml2YXRlIExvY2FsZVtdIGxvY2FsZXM7CisgICAgICAgIHByaXZhdGUgU2V0IG5hbWVTZXQ7CisKKyAgICAgICAgQXZhaWxFbnRyeShTdHJpbmcgcHJlZml4KSB7CisgICAgICAgICAgICB0aGlzLnByZWZpeCA9IHByZWZpeDsKKyAgICAgICAgfQorCisgICAgICAgIExvY2FsZVtdIGdldExvY2FsZUxpc3QoKSB7CisgICAgICAgICAgICBpZiAobG9jYWxlcyA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgbG9jYWxlcyA9IGNyZWF0ZUxvY2FsZUxpc3QocHJlZml4KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBsb2NhbGVzOworICAgICAgICB9CisKKyAgICAgICAgU2V0IGdldExvY2FsZU5hbWVTZXQoKSB7CisgICAgICAgICAgICBpZiAobmFtZVNldCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgbmFtZVNldCA9IGNyZWF0ZUxvY2FsZU5hbWVTZXQocHJlZml4KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBuYW1lU2V0OworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogU3RvcmVzIHRoZSBsb2NhbGUgaW5mb3JtYXRpb24gaW4gYSBjYWNoZSBhY2Nlc3NlZCBieSBrZXkgKGJ1bmRsZSBwcmVmaXgpLiAgVGhlCisgICAgICogY2FjaGVkIG9iamVjdHMgYXJlIEF2YWlsRW50cmllcy4gIFRoZSBjYWNoZSBpcyBoZWxkIGJ5IGEgU29mdFJlZmVyZW5jZSAKKyAgICAgKiBzbyBpdCBjYW4gYmUgR0MnZC4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBBdmFpbEVudHJ5IGdldEF2YWlsRW50cnkoU3RyaW5nIGtleSkgeworICAgICAgICBBdmFpbEVudHJ5IGFlID0gbnVsbDsKKyAgICAgICAgTWFwIGxjYWNoZSA9IG51bGw7CisgICAgICAgIGlmIChsY2FjaGVyZWYgIT0gbnVsbCkgeworICAgICAgICAgICAgbGNhY2hlID0gKE1hcClsY2FjaGVyZWYuZ2V0KCk7CisgICAgICAgICAgICBpZiAobGNhY2hlICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBhZSA9IChBdmFpbEVudHJ5KWxjYWNoZS5nZXQoa2V5KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChhZSA9PSBudWxsKSB7CisgICAgICAgICAgICBhZSA9IG5ldyBBdmFpbEVudHJ5KGtleSk7CisgICAgICAgICAgICBpZiAobGNhY2hlID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBsY2FjaGUgPSBuZXcgSGFzaE1hcCgpOworICAgICAgICAgICAgICAgIGxjYWNoZS5wdXQoa2V5LCBhZSk7CisgICAgICAgICAgICAgICAgbGNhY2hlcmVmID0gbmV3IFNvZnRSZWZlcmVuY2UobGNhY2hlKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbGNhY2hlLnB1dChrZXksIGFlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBhZTsKKyAgICB9CisgICAgcHJpdmF0ZSBzdGF0aWMgU29mdFJlZmVyZW5jZSBsY2FjaGVyZWY7CisKKyAgICAvKioKKyAgICAgKiBUaGUgZGVmYXVsdCBuYW1lIGZvciByZXNvdXJjZXMgY29udGFpbmluZyBJQ1UgbG9jYWxlIGRhdGEuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTE9DQUxFX0VMRU1FTlRTID0gIkxvY2FsZUVsZW1lbnRzIjsKKworICAgIC8qKgorICAgICAqIEdldHMgYSBMb2NhbGVFbGVtZW50cyByZXNvdXJjZSBidW5kbGUuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBSZXNvdXJjZUJ1bmRsZSBnZXRMb2NhbGVFbGVtZW50cyhMb2NhbGUgbG9jYWxlKSB7CisgICAgICAgIHJldHVybiBnZXRSZXNvdXJjZUJ1bmRsZShMT0NBTEVfRUxFTUVOVFMsIGxvY2FsZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0cyBhIExvY2FsZUVsZW1lbnRzIHJlc291cmNlIGJ1bmRsZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFJlc291cmNlQnVuZGxlIGdldExvY2FsZUVsZW1lbnRzKFN0cmluZyBsb2NhbGVOYW1lKSB7CisJcmV0dXJuIGdldFJlc291cmNlQnVuZGxlKExPQ0FMRV9FTEVNRU5UUywgbG9jYWxlTmFtZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU3RpbGwgbmVlZCBwZXJtaXNzaW9ucyB0byB1c2Ugb3VyIG93biBjbGFzcyBsb2FkZXIsIGlzIHRoZXJlIG5vIHdheQorICAgICAqIHRvIGxvYWQgY2xhc3MgcmVzb3VyY2VzIGZyb20gbmV3IGxvY2F0aW9ucyB0aGF0IGFyZW4ndCBhbHJlYWR5IG9uIHRoZQorICAgICAqIGNsYXNzIHBhdGg/CisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgUmVzb3VyY2VCdW5kbGUgaW5zdGFudGlhdGVCdW5kbGUoU3RyaW5nIG5hbWUsIExvY2FsZSBsKSB7CisJUmVzb3VyY2VCdW5kbGUgcmIgPSBSZXNvdXJjZUJ1bmRsZS5nZXRCdW5kbGUobmFtZSwgbCk7CisJcmV0dXJuIHJiOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldCBhIHJlc291cmNlIGJ1bmRsZSBmcm9tIHRoZSBsb29rdXAgY2hhaW4uCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBSZXNvdXJjZUJ1bmRsZSBnZXRSZXNvdXJjZUJ1bmRsZShTdHJpbmcgYnVuZGxlTmFtZSwgU3RyaW5nIGxvY2FsZU5hbWUpIHsKKwlMb2NhbGUgbG9jYWxlID0gTG9jYWxlVXRpbGl0eS5nZXRMb2NhbGVGcm9tTmFtZShsb2NhbGVOYW1lKTsKKwlyZXR1cm4gZ2V0UmVzb3VyY2VCdW5kbGUoYnVuZGxlTmFtZSwgbG9jYWxlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXQgYSByZXNvdXJjZSBidW5kbGUgZnJvbSB0aGUgbG9va3VwIGNoYWluLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgUmVzb3VyY2VCdW5kbGUgZ2V0UmVzb3VyY2VCdW5kbGUoU3RyaW5nIGJ1bmRsZU5hbWUsIExvY2FsZSBsb2NhbGUpIHsKKwlpZiAobG9jYWxlID09IG51bGwpIHsKKwkgICAgbG9jYWxlID0gTG9jYWxlLmdldERlZmF1bHQoKTsKKwl9CisJZm9yIChpbnQgaSA9IDA7IGkgPCBwYWNrYWdlTmFtZXMubGVuZ3RoOyArK2kpIHsKKwkgICAgdHJ5IHsKKwkJU3RyaW5nIHBhdGggPSBwYWNrYWdlTmFtZXNbaV0gKyAiLiIgKyBidW5kbGVOYW1lOworCQlpZiAoZGVidWcpIFN5c3RlbS5vdXQucHJpbnRsbigiY2FsbGluZyBpbnN0YW50aWF0ZUJ1bmRsZTogIiArIHBhdGggKyAiXyIgKyBsb2NhbGUpOworCQlSZXNvdXJjZUJ1bmRsZSByYiA9IGluc3RhbnRpYXRlQnVuZGxlKHBhdGgsIGxvY2FsZSk7CisJCXJldHVybiByYjsKKwkgICAgfSAKKwkgICAgY2F0Y2ggKE1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiBlKSB7CisJCWlmIChkZWJ1ZykgU3lzdGVtLm91dC5wcmludGxuKGJ1bmRsZU5hbWUgKyAiXyIgKyBsb2NhbGUgKyAiIG5vdCBmb3VuZCBpbiAiICsgcGFja2FnZU5hbWVzW2ldKTsKKwkgICAgfQorCX0KKworCXJldHVybiBudWxsOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldCBhIHJlc291cmNlIGJ1bmRsZSBmcm9tIHRoZSBsb29rdXAgY2hhaW4uCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBSZXNvdXJjZUJ1bmRsZSBnZXRSZXNvdXJjZUJ1bmRsZShTdHJpbmdbXSBwYWNrYWdlcywgU3RyaW5nIGJ1bmRsZU5hbWUsIFN0cmluZyBsb2NhbGVOYW1lKSB7CisJICAgIExvY2FsZSBsb2NhbGUgPSBMb2NhbGVVdGlsaXR5LmdldExvY2FsZUZyb21OYW1lKGxvY2FsZU5hbWUpOworICAgICAgICBpZiAobG9jYWxlID09IG51bGwpIHsKKwkgICAgICAgIGxvY2FsZSA9IExvY2FsZS5nZXREZWZhdWx0KCk7CisJICAgIH0KKwkgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwYWNrYWdlcy5sZW5ndGg7ICsraSkgeworCSAgICAgICAgdHJ5IHsKKwkJICAgICAgICBTdHJpbmcgcGF0aCA9IHBhY2thZ2VzW2ldICsgIi4iICsgYnVuZGxlTmFtZTsKKwkJICAgICAgICBpZiAoZGVidWcpIFN5c3RlbS5vdXQucHJpbnRsbigiY2FsbGluZyBpbnN0YW50aWF0ZUJ1bmRsZTogIiArIHBhdGggKyAiXyIgKyBsb2NhbGUpOworCQkgICAgICAgIFJlc291cmNlQnVuZGxlIHJiID0gaW5zdGFudGlhdGVCdW5kbGUocGF0aCwgbG9jYWxlKTsKKwkJICAgICAgICByZXR1cm4gcmI7CisJICAgICAgICB9IAorCSAgICAgICAgY2F0Y2ggKE1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiBlKSB7CisJICAgICAgICAgICBpZiAoZGVidWcpIFN5c3RlbS5vdXQucHJpbnRsbihidW5kbGVOYW1lICsgIl8iICsgbG9jYWxlICsgIiBub3QgZm91bmQgaW4gIiArIHBhY2thZ2VzW2ldKTsKKwkgICAgICAgIH0KKwkgICAgfQorCSAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXQgYSByZXNvdXJjZSBidW5kbGUgZnJvbSB0aGUgbG9va3VwIGNoYWluLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgUmVzb3VyY2VCdW5kbGUgZ2V0UmVzb3VyY2VCdW5kbGUoU3RyaW5nIHBhY2thZ2VOYW1lLCBTdHJpbmcgYnVuZGxlTmFtZSwgU3RyaW5nIGxvY2FsZU5hbWUpIHsKKyAgICAgICAgTG9jYWxlIGxvY2FsZSA9IExvY2FsZVV0aWxpdHkuZ2V0TG9jYWxlRnJvbU5hbWUobG9jYWxlTmFtZSk7CisgICAgICAgIGlmIChsb2NhbGUgPT0gbnVsbCkgeworICAgICAgICAgICAgbG9jYWxlID0gTG9jYWxlLmdldERlZmF1bHQoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFN0cmluZyBwYXRoID0gcGFja2FnZU5hbWUgKyAiLiIgKyBidW5kbGVOYW1lOworICAgICAgICAgICAgaWYgKGRlYnVnKSBTeXN0ZW0ub3V0LnByaW50bG4oImNhbGxpbmcgaW5zdGFudGlhdGVCdW5kbGU6ICIgKyBwYXRoICsgIl8iICsgbG9jYWxlKTsKKyAgICAgICAgICAgIFJlc291cmNlQnVuZGxlIHJiID0gaW5zdGFudGlhdGVCdW5kbGUocGF0aCwgbG9jYWxlKTsKKyAgICAgICAgICAgIHJldHVybiByYjsKKyAgICAgICAgfSAKKyAgICAgICAgY2F0Y2ggKE1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgIGlmIChkZWJ1ZykgU3lzdGVtLm91dC5wcmludGxuKGJ1bmRsZU5hbWUgKyAiXyIgKyBsb2NhbGUgKyAiIG5vdCBmb3VuZCBpbiAiICsgcGFja2FnZU5hbWUpOworICAgICAgICB9CisgICAgICAgCisgICAgICAgIHJldHVybiBudWxsOworICAgIH0gICAgCisgICAgLyoqCisgICAgICogR2V0IGEgcmVzb3VyY2UgYnVuZGxlIGZyb20gdGhlIHJlc291cmNlIGJ1bmRsZSBwYXRoLiAgVW5saWtlIGdldFJlc291cmNlQnVuZGxlLCB0aGlzCisgICAgICogcmV0dXJucyBhbiAndW5wYXJlbnRlZCcgYnVuZGxlIHRoYXQgZXhhY3RseSBtYXRjaGVzIHRoZSBidW5kbGUgbmFtZSBhbmQgbG9jYWxlIG5hbWUuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBSZXNvdXJjZUJ1bmRsZSBsb2FkUmVzb3VyY2VCdW5kbGUoU3RyaW5nIGJ1bmRsZU5hbWUsIExvY2FsZSBsb2NhbGUpIHsKKwlpZiAobG9jYWxlID09IG51bGwpIHsKKwkgICAgbG9jYWxlID0gTG9jYWxlLmdldERlZmF1bHQoKTsKKwl9CisJcmV0dXJuIGxvYWRSZXNvdXJjZUJ1bmRsZShidW5kbGVOYW1lLCBsb2NhbGUudG9TdHJpbmcoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0IGEgcmVzb3VyY2UgYnVuZGxlIGZyb20gdGhlIHJlc291cmNlIGJ1bmRsZSBwYXRoLiAgVW5saWtlIGdldFJlc291cmNlQnVuZGxlLCB0aGlzCisgICAgICogcmV0dXJucyBhbiAndW5wYXJlbnRlZCcgYnVuZGxlIHRoYXQgZXhhY3RseSBtYXRjaGVzIHRoZSBidW5kbGUgbmFtZSBhbmQgbG9jYWxlIG5hbWUuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBSZXNvdXJjZUJ1bmRsZSBsb2FkUmVzb3VyY2VCdW5kbGUoU3RyaW5nIGJ1bmRsZU5hbWUsIFN0cmluZyBsb2NhbGVOYW1lKSB7CisJaWYgKGxvY2FsZU5hbWUgIT0gbnVsbCAmJiBsb2NhbGVOYW1lLmxlbmd0aCgpID4gMCkgeworCSAgICBidW5kbGVOYW1lID0gYnVuZGxlTmFtZSArICJfIiArIGxvY2FsZU5hbWU7CisJfQorCWZvciAoaW50IGkgPSAwOyBpIDwgcGFja2FnZU5hbWVzLmxlbmd0aDsgKytpKSB7CisJICAgIFN0cmluZyBuYW1lID0gcGFja2FnZU5hbWVzW2ldICsgIi4iICsgYnVuZGxlTmFtZTsKKwkgICAgdHJ5IHsKKwkJaWYgKG5hbWUuaW5kZXhPZigiX3poXyIpID09IC0xKSB7IC8vIERMRiB0ZW1wb3JhcnkgaGFjaworCQkgICAgQ2xhc3MgcmJjbGFzcyA9IElDVUxvY2FsZURhdGEuY2xhc3MuZm9yTmFtZShuYW1lKTsKKwkJICAgIFJlc291cmNlQnVuZGxlIHJiID0gKFJlc291cmNlQnVuZGxlKXJiY2xhc3MubmV3SW5zdGFuY2UoKTsKKwkJICAgIHJldHVybiByYjsKKwkJfQorCSAgICB9IAorCSAgICBjYXRjaCAoQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiBlKSB7CisJCWlmIChkZWJ1ZykgeworCQkgICAgU3lzdGVtLm91dC5wcmludGxuKGJ1bmRsZU5hbWUgKyAiIG5vdCBmb3VuZCBpbiAiICsgcGFja2FnZU5hbWVzW2ldKTsKKwkJfQorCQkvLyBpZ25vcmUsIGtlZXAgbG9va2luZworCSAgICB9CisJICAgIGNhdGNoIChFeGNlcHRpb24gZSkgeworCQlpZiAoZGVidWcpIHsKKwkJICAgIFN5c3RlbS5vdXQucHJpbnRsbihlLmdldE1lc3NhZ2UoKSk7CisJCX0KKwkgICAgfQorCX0KKwlpZiAoZGVidWcpIHsKKwkgICAgU3lzdGVtLm91dC5wcmludGxuKGJ1bmRsZU5hbWUgKyAiIG5vdCBmb3VuZC4iKTsKKwl9CisJCisJcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgLy8gPT09PT09PT09PSBwcml2YXRlcyA9PT09PT09PT09CisKKyAgICBwcml2YXRlIHN0YXRpYyBTZXQgY3JlYXRlTG9jYWxlTmFtZVNldChTdHJpbmcgYnVuZGxlTmFtZSkgeworCXRyeSB7CisJICAgIFJlc291cmNlQnVuZGxlIGluZGV4ID0gZ2V0UmVzb3VyY2VCdW5kbGUoYnVuZGxlTmFtZSwgImluZGV4Iik7CisJICAgIFN0cmluZ1tdIGxvY2FsZU5hbWVzID0gaW5kZXguZ2V0U3RyaW5nQXJyYXkoIkluc3RhbGxlZExvY2FsZXMiKTsKKworICAgICAgICAgICAgLy8gYmFyZiBnYWcgY2hva2Ugc3BpdCBoYWNrLi4uCisgICAgICAgICAgICAvLyBzaW5jZSBqYXZhJ3MgTG9jYWxlICdmaXhlcycgdGhlIGxvY2FsZSBzdHJpbmcgZm9yIHNvbWUgbG9jYWxlcywKKyAgICAgICAgICAgIC8vIHdlIGhhdmUgdG8gZml4IG91ciBuYW1lcyB0byBtYXRjaCwgb3RoZXJ3aXNlIHRoZSBMb2NhbGVbXSBsaXN0CisgICAgICAgICAgICAvLyB3b24ndCBtYXRjaCB0aGUgbG9jYWxlIG5hbWUgc2V0LiAgV2hhdCB3ZXJlIHRoZXkgdGhpbmtpbmc/IT8KKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbG9jYWxlTmFtZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICBsb2NhbGVOYW1lc1tpXSA9IExvY2FsZVV0aWxpdHkuZ2V0TG9jYWxlRnJvbU5hbWUobG9jYWxlTmFtZXNbaV0pLnRvU3RyaW5nKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEhhc2hTZXQgc2V0ID0gbmV3IEhhc2hTZXQoKTsKKyAgICAgICAgICAgIHNldC5hZGRBbGwoQXJyYXlzLmFzTGlzdChsb2NhbGVOYW1lcykpOworICAgICAgICAgICAgcmV0dXJuIENvbGxlY3Rpb25zLnVubW9kaWZpYWJsZVNldChzZXQpOworCX0KKwljYXRjaCAoTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiY291bGRuJ3QgZmluZCBpbmRleCBmb3IgYnVuZGxlTmFtZTogIiArIGJ1bmRsZU5hbWUpOworICAgICAgICAgICAgVGhyZWFkLmR1bXBTdGFjaygpOworCX0KKyAgICAgICAgcmV0dXJuIENvbGxlY3Rpb25zLkVNUFRZX1NFVDsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBMb2NhbGVbXSBjcmVhdGVMb2NhbGVMaXN0KFN0cmluZyBidW5kbGVOYW1lKSB7CisJdHJ5IHsKKwkgICAgUmVzb3VyY2VCdW5kbGUgaW5kZXggPSBnZXRSZXNvdXJjZUJ1bmRsZShidW5kbGVOYW1lLCAiaW5kZXgiKTsKKwkgICAgU3RyaW5nW10gbG9jYWxlTmFtZXMgPSBpbmRleC5nZXRTdHJpbmdBcnJheSgiSW5zdGFsbGVkTG9jYWxlcyIpOworCSAgICBMb2NhbGVbXSBsb2NhbGVzID0gbmV3IExvY2FsZVtsb2NhbGVOYW1lcy5sZW5ndGhdOworCSAgICBmb3IgKGludCBpID0gMDsgaSA8IGxvY2FsZU5hbWVzLmxlbmd0aDsgKytpKSB7CisJCWxvY2FsZXNbaV0gPSBMb2NhbGVVdGlsaXR5LmdldExvY2FsZUZyb21OYW1lKGxvY2FsZU5hbWVzW2ldKTsKKwkgICAgfQorCSAgICByZXR1cm4gbG9jYWxlczsKKwl9CisJY2F0Y2ggKE1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImNvdWxkbid0IGZpbmQgaW5kZXggZm9yIGJ1bmRsZU5hbWU6ICIgKyBidW5kbGVOYW1lKTsKKyAgICAgICAgICAgIFRocmVhZC5kdW1wU3RhY2soKTsKKwl9CisJcmV0dXJuIG5ldyBMb2NhbGVbMF07CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvSUNVTG9jYWxlU2VydmljZS5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvSUNVTG9jYWxlU2VydmljZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkMWQyODMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9JQ1VMb2NhbGVTZXJ2aWNlLmphdmEKQEAgLTAsMCArMSw2MjYgQEAKKy8qKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMS0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9JQ1VMb2NhbGVTZXJ2aWNlLmphdmEsdiAkCisgKiAkRGF0ZTogMjAwMi8xMi8xMiAxODowMjowOSAkCisgKiAkUmV2aXNpb246IDEuMTIgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuaW1wbDsKKworaW1wb3J0IGphdmEubGFuZy5yZWYuU29mdFJlZmVyZW5jZTsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworaW1wb3J0IGphdmEudXRpbC5NaXNzaW5nUmVzb3VyY2VFeGNlcHRpb247CitpbXBvcnQgamF2YS51dGlsLlJlc291cmNlQnVuZGxlOworaW1wb3J0IGphdmEudXRpbC5TZXQ7CitpbXBvcnQgamF2YS51dGlsLlRyZWVTZXQ7CisKK3B1YmxpYyBjbGFzcyBJQ1VMb2NhbGVTZXJ2aWNlIGV4dGVuZHMgSUNVU2VydmljZSB7CisgICAgcHJpdmF0ZSBMb2NhbGUgZmFsbGJhY2tMb2NhbGU7CisgICAgcHJpdmF0ZSBTdHJpbmcgZmFsbGJhY2tMb2NhbGVOYW1lOworCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGFuIElDVUxvY2FsZVNlcnZpY2UuCisgICAgICovCisgICAgcHVibGljIElDVUxvY2FsZVNlcnZpY2UoKSB7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGFuIElDVUxvY2FsZVNlcnZpY2Ugd2l0aCBhIG5hbWUgKHVzZWZ1bCBmb3IgZGVidWdnaW5nKS4KKyAgICAgKi8KKyAgICBwdWJsaWMgSUNVTG9jYWxlU2VydmljZShTdHJpbmcgbmFtZSkgeworICAgICAgICBzdXBlcihuYW1lKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb252ZW5pZW5jZSBvdmVycmlkZSBmb3IgY2FsbGVycyB1c2luZyBsb2NhbGVzLiAgVGhpcyBjYWxscworICAgICAqIGdldChMb2NhbGUsIGludCwgTG9jYWxlW10pIHdpdGggS0lORF9BTlkgZm9yIGtpbmQgYW5kIG51bGwgZm9yCisgICAgICogYWN0dWFsUmV0dXJuLgorICAgICAqLworICAgIHB1YmxpYyBPYmplY3QgZ2V0KExvY2FsZSBsb2NhbGUpIHsKKyAgICAgICAgcmV0dXJuIGdldChsb2NhbGUsIExvY2FsZUtleS5LSU5EX0FOWSwgbnVsbCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29udmVuaWVuY2Ugb3ZlcnJpZGUgZm9yIGNhbGxlcnMgdXNpbmcgbG9jYWxlcy4gIFRoaXMgY2FsbHMKKyAgICAgKiBnZXQoTG9jYWxlLCBpbnQsIExvY2FsZVtdKSB3aXRoIGEgbnVsbCBhY3R1YWxSZXR1cm4uCisgICAgICovCisgICAgcHVibGljIE9iamVjdCBnZXQoTG9jYWxlIGxvY2FsZSwgaW50IGtpbmQpIHsKKyAgICAgICAgcmV0dXJuIGdldChsb2NhbGUsIGtpbmQsIG51bGwpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlbmllbmNlIG92ZXJyaWRlIGZvciBjYWxsZXJzIHVzaW5nIGxvY2FsZXMuIFRoaXMgY2FsbHMKKyAgICAgKiBnZXQoTG9jYWxlLCBTdHJpbmcsIExvY2FsZVtdKSB3aXRoIGEgbnVsbCBraW5kLgorICAgICAqLworICAgIHB1YmxpYyBPYmplY3QgZ2V0KExvY2FsZSBsb2NhbGUsIExvY2FsZVtdIGFjdHVhbFJldHVybikgeworICAgICAgICByZXR1cm4gZ2V0KGxvY2FsZSwgTG9jYWxlS2V5LktJTkRfQU5ZLCBhY3R1YWxSZXR1cm4pOworICAgIH0KKyAgICAgICAgICAgICAgICAgICAKKyAgICAvKioKKyAgICAgKiBDb252ZW5pZW5jZSBvdmVycmlkZSBmb3IgY2FsbGVycyB1c2luZyBsb2NhbGVzLiAgVGhpcyB1c2VzCisgICAgICogY3JlYXRlS2V5KExvY2FsZS50b1N0cmluZygpLCBraW5kKSB0byBjcmVhdGUgYSBrZXksIGNhbGxzIGdldEtleSwgYW5kIHRoZW4KKyAgICAgKiBpZiBhY3R1YWxSZXR1cm4gaXMgbm90IG51bGwsIHJldHVybnMgdGhlIGFjdHVhbFJlc3VsdCBmcm9tCisgICAgICogZ2V0S2V5IChzdHJpcHBpbmcgYW55IHByZWZpeCkgaW50byBhIExvY2FsZS4gIAorICAgICAqLworICAgIHB1YmxpYyBPYmplY3QgZ2V0KExvY2FsZSBsb2NhbGUsIGludCBraW5kLCBMb2NhbGVbXSBhY3R1YWxSZXR1cm4pIHsKKyAgICAgICAgS2V5IGtleSA9IGNyZWF0ZUtleShsb2NhbGUudG9TdHJpbmcoKSwga2luZCk7CisgICAgICAgIGlmIChhY3R1YWxSZXR1cm4gPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIGdldEtleShrZXkpOworICAgICAgICB9CisKKyAgICAgICAgU3RyaW5nW10gdGVtcCA9IG5ldyBTdHJpbmdbMV07CisgICAgICAgIE9iamVjdCByZXN1bHQgPSBnZXRLZXkoa2V5LCB0ZW1wKTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSBudWxsKSB7CisgICAgICAgICAgICBpbnQgbiA9IHRlbXBbMF0uaW5kZXhPZigiLyIpOworICAgICAgICAgICAgaWYgKG4gPj0gMCkgeworICAgICAgICAgICAgICAgIHRlbXBbMF0gPSB0ZW1wWzBdLnN1YnN0cmluZyhuKzEpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYWN0dWFsUmV0dXJuWzBdID0gTG9jYWxlVXRpbGl0eS5nZXRMb2NhbGVGcm9tTmFtZSh0ZW1wWzBdKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlbmllbmNlIG92ZXJyaWRlIGZvciBjYWxsZXJzIHVzaW5nIGxvY2FsZXMuICBUaGlzIGNhbGxzCisgICAgICogcmVnaXN0ZXJPYmplY3QoT2JqZWN0LCBMb2NhbGUsIGludCBraW5kLCBpbnQgY292ZXJhZ2UpCisgICAgICogcGFzc2luZyBLSU5EX0FOWSBmb3IgdGhlIGtpbmQsIGFuZCBWSVNJQkxFIGZvciB0aGUgY292ZXJhZ2UuCisgICAgICovCisgICAgcHVibGljIEZhY3RvcnkgcmVnaXN0ZXJPYmplY3QoT2JqZWN0IG9iaiwgTG9jYWxlIGxvY2FsZSkgeworICAgICAgICByZXR1cm4gcmVnaXN0ZXJPYmplY3Qob2JqLCBsb2NhbGUsIExvY2FsZUtleS5LSU5EX0FOWSwgTG9jYWxlS2V5RmFjdG9yeS5WSVNJQkxFKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb252ZW5pZW5jZSBmdW5jdGlvbiBmb3IgY2FsbGVycyB1c2luZyBsb2NhbGVzLiAgVGhpcyBjYWxscworICAgICAqIHJlZ2lzdGVyT2JqZWN0KE9iamVjdCwgTG9jYWxlLCBpbnQga2luZCwgaW50IGNvdmVyYWdlKQorICAgICAqIHBhc3NpbmcgVklTSUJMRSBmb3IgdGhlIGNvdmVyYWdlLgorICAgICAqLworICAgIHB1YmxpYyBGYWN0b3J5IHJlZ2lzdGVyT2JqZWN0KE9iamVjdCBvYmosIExvY2FsZSBsb2NhbGUsIGludCBraW5kKSB7CisgICAgICAgIHJldHVybiByZWdpc3Rlck9iamVjdChvYmosIGxvY2FsZSwga2luZCwgTG9jYWxlS2V5RmFjdG9yeS5WSVNJQkxFKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb252ZW5pZW5jZSBmdW5jdGlvbiBmb3IgY2FsbGVycyB1c2luZyBsb2NhbGVzLiAgVGhpcyAgaW5zdGFudGlhdGVzCisgICAgICogYSBTaW1wbGVMb2NhbGVLZXlGYWN0b3J5LCBhbmQgcmVnaXN0ZXJzIHRoZSBmYWN0b3J5LgorICAgICAqLworICAgIHB1YmxpYyBGYWN0b3J5IHJlZ2lzdGVyT2JqZWN0KE9iamVjdCBvYmosIExvY2FsZSBsb2NhbGUsIGludCBraW5kLCBpbnQgY292ZXJhZ2UpIHsKKyAgICAgICAgRmFjdG9yeSBmYWN0b3J5ID0gbmV3IFNpbXBsZUxvY2FsZUtleUZhY3Rvcnkob2JqLCBsb2NhbGUsIGtpbmQsIGNvdmVyYWdlKTsKKwlyZXR1cm4gcmVnaXN0ZXJGYWN0b3J5KGZhY3RvcnkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlbmllbmNlIG1ldGhvZCBmb3IgY2FsbGVycyB1c2luZyBsb2NhbGVzLiAgVGhpcyByZXR1cm5zIHRoZSBzdGFuZGFyZAorICAgICAqIExvY2FsZSBsaXN0LCBidWlsdCBmcm9tIHRoZSBTZXQgb2YgdmlzaWJsZSBpZHMuCisgICAgICovCisgICAgcHVibGljIExvY2FsZVtdIGdldEF2YWlsYWJsZUxvY2FsZXMoKSB7CisgICAgICAgIFNldCB2aXNJRHMgPSBnZXRWaXNpYmxlSURzKCk7CisgICAgICAgIEl0ZXJhdG9yIGl0ZXIgPSB2aXNJRHMuaXRlcmF0b3IoKTsKKyAgICAgICAgTG9jYWxlW10gbG9jYWxlcyA9IG5ldyBMb2NhbGVbdmlzSURzLnNpemUoKV07CisgICAgICAgIGludCBuID0gMDsKKyAgICAgICAgd2hpbGUgKGl0ZXIuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICBMb2NhbGUgbG9jID0gTG9jYWxlVXRpbGl0eS5nZXRMb2NhbGVGcm9tTmFtZSgoU3RyaW5nKWl0ZXIubmV4dCgpKTsKKyAgICAgICAgICAgIGxvY2FsZXNbbisrXSA9IGxvYzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbG9jYWxlczsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBIHN1YmNsYXNzIG9mIEtleSB0aGF0IGltcGxlbWVudHMgYSBsb2NhbGUgZmFsbGJhY2sgbWVjaGFuaXNtLgorICAgICAqIFRoZSBmaXJzdCBsb2NhbGUgdG8gc2VhcmNoIGZvciBpcyB0aGUgbG9jYWxlIHByb3ZpZGVkIGJ5IHRoZQorICAgICAqIGNsaWVudCwgYW5kIHRoZSBmYWxsYmFjayBsb2NhbGUgdG8gc2VhcmNoIGZvciBpcyB0aGUgY3VycmVudAorICAgICAqIGRlZmF1bHQgbG9jYWxlLiAgSWYgYSBwcmVmaXggaXMgcHJlc2VudCwgdGhlIGN1cnJlbnREZXNjcmlwdG9yCisgICAgICogaW5jbHVkZXMgaXQgYmVmb3JlIHRoZSBsb2NhbGUgcHJvcGVyLCBzZXBhcmF0ZWQgYnkgIi8iLiAgVGhpcworICAgICAqIGlzIHRoZSBkZWZhdWx0IGtleSBpbnN0YW50aWF0ZWQgYnkgSUNVTG9jYWxlU2VydmljZS48L3A+CisgICAgICoKKyAgICAgKiA8cD5DYW5vbmljYWxpemF0aW9uIGFkanVzdHMgdGhlIGxvY2FsZSBzdHJpbmcgc28gdGhhdCB0aGUKKyAgICAgKiBzZWN0aW9uIGJlZm9yZSB0aGUgZmlyc3QgdW5kZXJzdG9yZSBpcyBpbiBsb3dlciBjYXNlLCBhbmQgdGhlIHJlc3QKKyAgICAgKiBpcyBpbiB1cHBlciBjYXNlLCB3aXRoIG5vIHRyYWlsaW5nIHVuZGVyc2NvcmVzLjwvcD4gCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBMb2NhbGVLZXkgZXh0ZW5kcyBJQ1VTZXJ2aWNlLktleSB7CisgICAgICAgIHByaXZhdGUgaW50IGtpbmQ7CisJcHJpdmF0ZSBTdHJpbmcgcHJpbWFyeUlEOworCXByaXZhdGUgU3RyaW5nIGZhbGxiYWNrSUQ7CisJcHJpdmF0ZSBTdHJpbmcgY3VycmVudElEOworCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEtJTkRfQU5ZID0gLTE7CisKKwkvKioKKwkgKiBDcmVhdGUgYSBMb2NhbGVLZXkgd2l0aCBjYW5vbmljYWwgcHJpbWFyeSBhbmQgZmFsbGJhY2sgSURzLgorCSAqLworCXB1YmxpYyBzdGF0aWMgTG9jYWxlS2V5IGNyZWF0ZVdpdGhDYW5vbmljYWxGYWxsYmFjayhTdHJpbmcgcHJpbWFyeUlELCBTdHJpbmcgY2Fub25pY2FsRmFsbGJhY2tJRCkgeworICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVdpdGhDYW5vbmljYWxGYWxsYmFjayhwcmltYXJ5SUQsIGNhbm9uaWNhbEZhbGxiYWNrSUQsIEtJTkRfQU5ZKTsKKwl9CisJICAgIAorCS8qKgorCSAqIENyZWF0ZSBhIExvY2FsZUtleSB3aXRoIGNhbm9uaWNhbCBwcmltYXJ5IGFuZCBmYWxsYmFjayBJRHMuCisJICovCisJcHVibGljIHN0YXRpYyBMb2NhbGVLZXkgY3JlYXRlV2l0aENhbm9uaWNhbEZhbGxiYWNrKFN0cmluZyBwcmltYXJ5SUQsIFN0cmluZyBjYW5vbmljYWxGYWxsYmFja0lELCBpbnQga2luZCkgeworICAgICAgICAgICAgaWYgKHByaW1hcnlJRCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBTdHJpbmcgY2Fub25pY2FsUHJpbWFyeUlEID0gTG9jYWxlVXRpbGl0eS5jYW5vbmljYWxMb2NhbGVTdHJpbmcocHJpbWFyeUlEKTsKKwkgICAgcmV0dXJuIG5ldyBMb2NhbGVLZXkocHJpbWFyeUlELCBjYW5vbmljYWxQcmltYXJ5SUQsIGNhbm9uaWNhbEZhbGxiYWNrSUQsIGtpbmQpOworCX0KKwkgICAgCisJLyoqCisJICogUHJpbWFyeUlEIGlzIHRoZSB1c2VyJ3MgcmVxdWVzdGVkIGxvY2FsZSBzdHJpbmcsCisJICogY2Fub25pY2FsUHJpbWFyeUlEIGlzIHRoaXMgc3RyaW5nIGluIGNhbm9uaWNhbCBmb3JtLAorCSAqIGZhbGxiYWNrSUQgaXMgdGhlIGN1cnJlbnQgZGVmYXVsdCBsb2NhbGUncyBzdHJpbmcgaW4KKwkgKiBjYW5vbmljYWwgZm9ybS4KKwkgKi8KKyAgICAgICAgcHJvdGVjdGVkIExvY2FsZUtleShTdHJpbmcgcHJpbWFyeUlELCBTdHJpbmcgY2Fub25pY2FsUHJpbWFyeUlELCBTdHJpbmcgY2Fub25pY2FsRmFsbGJhY2tJRCwgaW50IGtpbmQpIHsKKwkgICAgc3VwZXIocHJpbWFyeUlEKTsKKworICAgICAgICAgICAgdGhpcy5raW5kID0ga2luZDsKKwkgICAgCisJICAgIGlmIChjYW5vbmljYWxQcmltYXJ5SUQgPT0gbnVsbCkgeworCQl0aGlzLnByaW1hcnlJRCA9ICIiOworCSAgICB9IGVsc2UgeworCQl0aGlzLnByaW1hcnlJRCA9IGNhbm9uaWNhbFByaW1hcnlJRDsKKwkgICAgfQorCSAgICBpZiAodGhpcy5wcmltYXJ5SUQgPT0gIiIpIHsKKwkJdGhpcy5mYWxsYmFja0lEID0gbnVsbDsKKwkgICAgfSBlbHNlIHsKKwkJaWYgKGNhbm9uaWNhbEZhbGxiYWNrSUQgPT0gbnVsbCB8fCB0aGlzLnByaW1hcnlJRC5lcXVhbHMoY2Fub25pY2FsRmFsbGJhY2tJRCkpIHsKKwkJICAgIHRoaXMuZmFsbGJhY2tJRCA9ICIiOworCQl9IGVsc2UgeworCQkgICAgdGhpcy5mYWxsYmFja0lEID0gY2Fub25pY2FsRmFsbGJhY2tJRDsKKwkJfQorCSAgICB9CisKKwkgICAgdGhpcy5jdXJyZW50SUQgPSB0aGlzLnByaW1hcnlJRDsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBSZXR1cm4gdGhlIHByZWZpeCBhc3NvY2lhdGVkIHdpdGggdGhlIGtpbmQsIG9yIG51bGwgaWYgdGhlIGtpbmQgaXMgS0lORF9BTlkuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgU3RyaW5nIHByZWZpeCgpIHsKKyAgICAgICAgICAgIHJldHVybiBraW5kID09IEtJTkRfQU5ZID8gbnVsbCA6IEludGVnZXIudG9TdHJpbmcoa2luZCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBSZXR1cm4gdGhlIGtpbmQgY29kZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBrZXkuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgaW50IGtpbmQoKSB7CisgICAgICAgICAgICByZXR1cm4ga2luZDsKKyAgICAgICAgfQorCisJLyoqCisJICogUmV0dXJuIHRoZSAoY2Fub25pY2FsKSBvcmlnaW5hbCBJRC4KKwkgKi8KKwlwdWJsaWMgU3RyaW5nIGNhbm9uaWNhbElEKCkgeworCSAgICByZXR1cm4gcHJpbWFyeUlEOworCX0KKworICAgICAgICAvKioKKyAgICAgICAgICogUmV0dXJuIHRoZSAoY2Fub25pY2FsKSBjdXJyZW50IElELCBvciBudWxsIGlmIG5vIGN1cnJlbnQgaWQuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgU3RyaW5nIGN1cnJlbnRJRCgpIHsKKwkgICAgcmV0dXJuIGN1cnJlbnRJRDsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBSZXR1cm4gdGhlIChjYW5vbmljYWwpIGN1cnJlbnQgZGVzY3JpcHRvciwgb3IgbnVsbCBpZiBubyBjdXJyZW50IGlkLgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIFN0cmluZyBjdXJyZW50RGVzY3JpcHRvcigpIHsKKyAgICAgICAgICAgIFN0cmluZyByZXN1bHQgPSBjdXJyZW50SUQoKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9ICIvIiArIHJlc3VsdDsKKyAgICAgICAgICAgICAgICBpZiAoa2luZCAhPSBLSU5EX0FOWSkgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBwcmVmaXgoKSArIHJlc3VsdDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIENvbnZlbmllbmNlIG1ldGhvZCB0byByZXR1cm4gdGhlIGxvY2FsZSBjb3JyZXNwb25kaW5nIHRvIHRoZSAoY2Fub25pY2FsKSBvcmlnaW5hbCBJRC4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBMb2NhbGUgY2Fub25pY2FsTG9jYWxlKCkgeworICAgICAgICAgICAgcmV0dXJuIExvY2FsZVV0aWxpdHkuZ2V0TG9jYWxlRnJvbU5hbWUocHJpbWFyeUlEKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBDb252ZW5pZW5jZSBtZXRob2QgdG8gcmV0dXJuIHRoZSBsb2NhbGUgY29ycmVzcG9uZGluZyB0byB0aGUgKGNhbm9uaWNhbCkgY3VycmVudCBJRC4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBMb2NhbGUgY3VycmVudExvY2FsZSgpIHsKKyAgICAgICAgICAgIHJldHVybiBMb2NhbGVVdGlsaXR5LmdldExvY2FsZUZyb21OYW1lKGN1cnJlbnRJRCk7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogSWYgdGhlIGtleSBoYXMgYSBmYWxsYmFjaywgbW9kaWZ5IHRoZSBrZXkgYW5kIHJldHVybiB0cnVlLAorICAgICAgICAgKiBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLjwvcD4KKwkgKgorCSAqIDxwPkZpcnN0IGZhbGxzIGJhY2sgdGhyb3VnaCB0aGUgcHJpbWFyeSBJRCwgdGhlbiB0aHJvdWdoCisJICogdGhlIGZhbGxiYWNrSUQuICBUaGUgZmluYWwgZmFsbGJhY2sgaXMgdGhlIGVtcHR5IHN0cmluZywKKwkgKiB1bmxlc3MgdGhlIHByaW1hcnkgaWQgd2FzIHRoZSBlbXB0eSBzdHJpbmcsIGluIHdoaWNoIGNhc2UKKwkgKiB0aGVyZSBpcyBubyBmYWxsYmFjay4gIAorCSAqLworICAgICAgICBwdWJsaWMgYm9vbGVhbiBmYWxsYmFjaygpIHsKKwkgICAgaW50IHggPSBjdXJyZW50SUQubGFzdEluZGV4T2YoJ18nKTsKKwkgICAgaWYgKHggIT0gLTEpIHsKKwkJY3VycmVudElEID0gY3VycmVudElELnN1YnN0cmluZygwLCB4KTsKKwkJcmV0dXJuIHRydWU7CisJICAgIH0KKwkgICAgaWYgKGZhbGxiYWNrSUQgIT0gbnVsbCkgeworCQljdXJyZW50SUQgPSBmYWxsYmFja0lEOworCQlmYWxsYmFja0lEID0gZmFsbGJhY2tJRC5sZW5ndGgoKSA9PSAwID8gbnVsbCA6ICIiOworCQlyZXR1cm4gdHJ1ZTsKKwkgICAgfQorCSAgICBjdXJyZW50SUQgPSBudWxsOworCSAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogSWYgYSBrZXkgY3JlYXRlZCBmcm9tIGlkIHdvdWxkIGV2ZW50dWFsbHkgZmFsbGJhY2sgdG8gbWF0Y2ggdGhlIAorICAgICAgICAgKiBjYW5vbmljYWwgSUQgb2YgdGhpcyBrZXksIHJldHVybiB0cnVlLgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIGJvb2xlYW4gaXNGYWxsYmFja09mKFN0cmluZyBpZCkgeworICAgICAgICAgICAgcmV0dXJuIExvY2FsZVV0aWxpdHkuaXNGYWxsYmFja09mKGNhbm9uaWNhbElEKCksIGlkKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEEgc3ViY2xhc3Mgb2YgRmFjdG9yeSB0aGF0IHVzZXMgTG9jYWxlS2V5cywgYW5kIGlzIGFibGUgdG8KKyAgICAgKiAnY292ZXInIG1vcmUgc3BlY2lmaWMgbG9jYWxlcyB3aXRoIG1vcmUgZ2VuZXJhbCBsb2NhbGVzIHRoYXQgaXQKKyAgICAgKiBzdXBwb3J0cy4gIAorICAgICAqCisgICAgICogPHA+Q292ZXJhZ2UgbWF5IGJlIGVpdGhlciBvZiB0aGUgdmFsdWVzIFZJU0lCTEUgb3IgSU5WSVNJQkxFLgorICAgICAqCisgICAgICogPHA+J1Zpc2libGUnIGluZGljYXRlcyB0aGF0IHRoZSBzcGVjaWZpYyBsb2NhbGUocykgc3VwcG9ydGVkIGJ5CisgICAgICogdGhlIGZhY3RvcnkgYXJlIHJlZ2lzdGVyZWQgaW4gZ2V0U3VwcG9ydGVkSURzLCAnSW52aXNpYmxlJworICAgICAqIGluZGljYXRlcyB0aGF0IHRoZXkgYXJlIG5vdC4KKyAgICAgKgorICAgICAqIDxwPkxvY2FsaXphdGlvbiBvZiB2aXNpYmxlIGlkcyBpcyBoYW5kbGVkCisgICAgICogYnkgdGhlIGhhbmRsaW5nIGZhY3RvcnksIHJlZ2FyZGxlc3Mgb2Yga2luZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGFic3RyYWN0IGNsYXNzIExvY2FsZUtleUZhY3RvcnkgaW1wbGVtZW50cyBGYWN0b3J5IHsKKyAgICAgICAgcHJvdGVjdGVkIGZpbmFsIFN0cmluZyBuYW1lOworICAgICAgICBwcm90ZWN0ZWQgZmluYWwgaW50IGNvdmVyYWdlOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBDb3ZlcmFnZSB2YWx1ZSBpbmRpY2F0aW5nIHRoYXQgdGhlIGZhY3RvcnkgbWFrZXMKKyAgICAgICAgICogaXRzIGxvY2FsZXMgdmlzaWJsZSwgYW5kIGRvZXMgbm90IGNvdmVyIG1vcmUgc3BlY2lmaWMgCisgICAgICAgICAqIGxvY2FsZXMuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBWSVNJQkxFID0gMDsKKworICAgICAgICAvKioKKyAgICAgICAgICogQ292ZXJhZ2UgdmFsdWUgaW5kaWNhdGluZyB0aGF0IHRoZSBmYWN0b3J5IGRvZXMgbm90IG1ha2UKKyAgICAgICAgICogaXRzIGxvY2FsZXMgdmlzaWJsZSwgYW5kIGRvZXMgbm90IGNvdmVyIG1vcmUgc3BlY2lmaWMKKyAgICAgICAgICogbG9jYWxlcy4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IElOVklTSUJMRSA9IDE7CisKKyAgICAgICAgLy8gdW5kZWZpbmUgdGhlc2Ugc2luY2UgaGlkaW5nIG90aGVyIGZhY3RvcmllcyBvcGVucyBhIGJpZyBiYWcgb2Ygd29ybXMKKyAgICAgICAgLyoKKyAgICAgICAgICogQ292ZXJhZ2UgdmFsdWUgaW5kaWNhdGluZyB0aGF0IHRoZSBmYWN0b3J5IG1ha2VzCisgICAgICAgICAqIGl0cyBsb2NhbGVzIHZpc2libGUsIGNvdmVycyBtb3JlIHNwZWNpZmljIAorICAgICAgICAgKiBsb2NhbGVzLCBhbmQgcHJvdmlkZXMgbG9jYWxpemF0aW9uIGZvciB0aGUgY292ZXJlZAorICAgICAgICAgKiBsb2NhbGVzLgorICAgICAgICAgKgorICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBWSVNJQkxFX0NPVkVSUyA9IDI7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIENvdmVyYWdlIHZhbHVlIGluZGljYXRpbmcgdGhhdCB0aGUgZmFjdG9yeSBkb2VzIG5vdAorICAgICAgICAgKiBtYWtlIGl0cyBsb2NhbGVzIHZpc2libGUsIGNvdmVycyBtb3JlIHNwZWNpZmljCisgICAgICAgICAqIGxvY2FsZXMsIGFuZCBhbHNvIGRvZXMgbm90IGFsbG93IHRoZSBsb2NhbGVzIGl0CisgICAgICAgICAqIGNvdmVycyB0byBiZSB2aXNpYmxlLgorICAgICAgICAgKgorICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBJTlZJU0lCTEVfQ09WRVJTID0gMzsKKworICAgICAgICAvKioKKyAgICAgICAgICogQ292ZXJhZ2UgdmFsdWUgaW5kaWNhdGluZyB0aGF0IHRoZSBmYWN0b3J5IG1ha2VzCisgICAgICAgICAqIGl0cyBsb2NhbGVzIHZpc2libGUsIGNvdmVycyBtb3JlIHNwZWNpZmljIAorICAgICAgICAgKiBsb2NhbGVzLCBidXQgZG9lcyBub3QgYWxsb3cgdGhlIGxvY2FsZXMgaXQgY292ZXJzCisgICAgICAgICAqIHRvIGJlIHZpc2libGUuCisgICAgICAgICAqCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFZJU0lCTEVfQ09WRVJTX1JFTU9WRSA9IDY7CisgICAgICAgICovCisKKyAgICAgICAgCisgICAgICAgIC8qKgorICAgICAgICAgKiBDb25zdHJ1Y3RvciB1c2VkIGJ5IHN1YmNsYXNzZXMuCisgICAgICAgICAqLworICAgICAgICBwcm90ZWN0ZWQgTG9jYWxlS2V5RmFjdG9yeShpbnQgY292ZXJhZ2UpIHsKKyAgICAgICAgICAgIHRoaXMuY292ZXJhZ2UgPSBjb3ZlcmFnZTsKKyAgICAgICAgICAgIHRoaXMubmFtZSA9IG51bGw7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogQ29uc3RydWN0b3IgdXNlZCBieSBzdWJjbGFzc2VzLgorICAgICAgICAgKi8KKyAgICAgICAgcHJvdGVjdGVkIExvY2FsZUtleUZhY3RvcnkoaW50IGNvdmVyYWdlLCBTdHJpbmcgbmFtZSkgeworICAgICAgICAgICAgdGhpcy5jb3ZlcmFnZSA9IGNvdmVyYWdlOworICAgICAgICAgICAgdGhpcy5uYW1lID0gbmFtZTsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBJbXBsZW1lbnQgc3VwZXJjbGFzcyBhYnN0cmFjdCBtZXRob2QuICBUaGlzIGNoZWNrcyB0aGUgY3VycmVudElEIG9mCisgICAgICAgICAqIHRoZSBrZXkgYWdhaW5zdCB0aGUgc3VwcG9ydGVkIElEcywgYW5kIHBhc3NlcyB0aGUgY2Fub25pY2FsTG9jYWxlIGFuZAorICAgICAgICAgKiBraW5kIG9mZiB0byBoYW5kbGVDcmVhdGUgKHdoaWNoIHN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQpLgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIE9iamVjdCBjcmVhdGUoS2V5IGtleSwgSUNVU2VydmljZSBzZXJ2aWNlKSB7CisgICAgICAgICAgICBpZiAoaGFuZGxlc0tleShrZXkpKSB7CisgICAgICAgICAgICAgICAgTG9jYWxlS2V5IGxrZXkgPSAoTG9jYWxlS2V5KWtleTsKKyAgICAgICAgICAgICAgICBMb2NhbGUgbG9jID0gbGtleS5jYW5vbmljYWxMb2NhbGUoKTsKKyAgICAgICAgICAgICAgICBpbnQga2luZCA9IGxrZXkua2luZCgpOworCisgICAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZUNyZWF0ZShsb2MsIGtpbmQsIHNlcnZpY2UpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oImZhY3Rvcnk6ICIgKyB0aGlzICsgIiBkaWQgbm90IHN1cHBvcnQgaWQ6ICIgKyBrZXkuY3VycmVudElEKCkpOworICAgICAgICAgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbigic3VwcG9ydGVkIGlkczogIiArIGdldFN1cHBvcnRlZElEcygpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgcHJvdGVjdGVkIGJvb2xlYW4gaGFuZGxlc0tleShLZXkga2V5KSB7CisgICAgICAgICAgICBpZiAoa2V5ID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFN0cmluZyBpZCA9IGtleS5jdXJyZW50SUQoKTsKKyAgICAgICAgICAgIFNldCBzdXBwb3J0ZWQgPSBnZXRTdXBwb3J0ZWRJRHMoKTsKKyAgICAgICAgICAgIHJldHVybiBzdXBwb3J0ZWQuY29udGFpbnMoaWQpOworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIGNvdmVyYWdlIG5vdCBzdXBwb3J0ZWQKKworICAgICAgICAgICAgaWYgKHN1cHBvcnRlZC5jb250YWlucyhpZCkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgoY292ZXJhZ2UgJiAweDIpICE9IDApIHsgCisgICAgICAgICAgICAgICAgSXRlcmF0b3IgaXRlciA9IHN1cHBvcnRlZC5pdGVyYXRvcigpOworICAgICAgICAgICAgICAgIHdoaWxlIChpdGVyLmhhc05leHQoKSkgeworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgcyA9IChTdHJpbmcpaXRlci5uZXh0KCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChMb2NhbGVVdGlsaXR5LmlzRmFsbGJhY2tPZihzLCBpZCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgKi8KKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBPdmVycmlkZSBvZiBzdXBlcmNsYXNzIG1ldGhvZC4gIFRoaXMgYWRqdXN0cyB0aGUgcmVzdWx0IGJhc2VkCisgICAgICAgICAqIG9uIHRoZSBjb3ZlcmFnZSBydWxlIGZvciB0aGlzIGZhY3RvcnkuCisgICAgICAgICAqLworCXB1YmxpYyB2b2lkIHVwZGF0ZVZpc2libGVJRHMoTWFwIHJlc3VsdCkgeworICAgICAgICAgICAgU2V0IGNhY2hlID0gZ2V0U3VwcG9ydGVkSURzKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGJvb2xlYW4gdmlzaWJsZSA9IChjb3ZlcmFnZSAmIDB4MSkgPT0gMDsKKyAgICAgICAgICAgIGJvb2xlYW4gY292ZXJzID0gKGNvdmVyYWdlICYgMHgyKSAhPSAwOworICAgICAgICAgICAgYm9vbGVhbiByZW1vdmVzID0gIXZpc2libGUgfHwgKGNvdmVyYWdlICYgMHg0KSAhPSAwOworCisgICAgICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oInZpczogIiArIHZpc2libGUgKyAiIGNvdmVyczogIiArIGNvdmVycyArICIgcmVtb3ZlczogIiArIHJlbW92ZXMpOworICAgICAgICAgICAgTWFwIHRvUmVtYXAgPSBuZXcgSGFzaE1hcCgpOworICAgICAgICAgICAgSXRlcmF0b3IgaXRlciA9IGNhY2hlLml0ZXJhdG9yKCk7CisgICAgICAgICAgICB3aGlsZSAoaXRlci5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgaWQgPSAoU3RyaW5nKWl0ZXIubmV4dCgpOworICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogQ292ZXJhZ2Ugbm90IHN1cHBvcnRlZAorICAgICAgICAgICAgICAgIGlmIChjb3ZlcnMpIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IGlkbGVuID0gaWQubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgICAgIEl0ZXJhdG9yIG1pdGVyID0gcmVzdWx0LmtleVNldCgpLml0ZXJhdG9yKCk7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlIChtaXRlci5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBtaWQgPSAoU3RyaW5nKW1pdGVyLm5leHQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtaWQuc3RhcnRzV2l0aChpZCkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWlkLmxlbmd0aCgpID09IGlkbGVuIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pZC5jaGFyQXQoaWRsZW4pID09ICdfJykpIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZW1vdmVzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pdGVyLnJlbW92ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvUmVtYXAucHV0KG1pZCwgdGhpcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgaWYgKCF2aXNpYmxlKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5yZW1vdmUoaWQpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHRvUmVtYXAucHV0KGlkLCB0aGlzKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgcmVzdWx0LnB1dEFsbCh0b1JlbWFwKTsKKwl9CisKKwkvKioKKwkgKiBSZXR1cm4gYSBsb2NhbGl6ZWQgbmFtZSBmb3IgdGhlIGxvY2FsZSByZXByZXNlbnRlZCBieSBpZC4KKwkgKi8KKwlwdWJsaWMgU3RyaW5nIGdldERpc3BsYXlOYW1lKFN0cmluZyBpZCwgTG9jYWxlIGxvY2FsZSkgeworICAgICAgICAgICAgaWYgKGxvY2FsZSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGlkOworICAgICAgICAgICAgfQorICAgICAgICAgICAgTG9jYWxlIGxvYyA9IExvY2FsZVV0aWxpdHkuZ2V0TG9jYWxlRnJvbU5hbWUoaWQpOworCSAgICByZXR1cm4gbG9jLmdldERpc3BsYXlOYW1lKGxvY2FsZSk7CisJfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBVdGlsaXR5IG1ldGhvZCB1c2VkIGJ5IGNyZWF0ZShLZXksIElDVVNlcnZpY2UpLiAgU3ViY2xhc3NlcyBjYW4gaW1wbGVtZW50CisgICAgICAgICAqIHRoaXMgaW5zdGVhZCBvZiBjcmVhdGUuCisgICAgICAgICAqLworICAgICAgICAvLy9DTE9WRVI6T0ZGCisgICAgICAgIHByb3RlY3RlZCBPYmplY3QgaGFuZGxlQ3JlYXRlKExvY2FsZSBsb2MsIGludCBraW5kLCBJQ1VTZXJ2aWNlIHNlcnZpY2UpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgICAgIC8vL0NMT1ZFUjpPTgorCisgICAgICAgIC8qKgorICAgICAgICAgKiBSZXR1cm4gdGhlIHNldCBvZiBpZHMgdGhhdCB0aGlzIGZhY3Rvcnkgc3VwcG9ydHMgKHZpc2libGUgb3IgCisgICAgICAgICAqIG90aGVyd2lzZSkuICBUaGlzIGNhbiBiZSBjYWxsZWQgb2Z0ZW4gYW5kIG1pZ2h0IG5lZWQgdG8gYmUKKyAgICAgICAgICogY2FjaGVkIGlmIGl0IGlzIGV4cGVuc2l2ZSB0byBjcmVhdGUuCisgICAgICAgICAqLworICAgICAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgU2V0IGdldFN1cHBvcnRlZElEcygpOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBGb3IgZGVidWdnaW5nLgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgICAgIFN0cmluZ0J1ZmZlciBidWYgPSBuZXcgU3RyaW5nQnVmZmVyKHN1cGVyLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgaWYgKG5hbWUgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIiwgbmFtZTogIik7CisgICAgICAgICAgICAgICAgYnVmLmFwcGVuZChuYW1lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIiwgY292ZXJhZ2U6ICIpOworICAgICAgICAgICAgU3RyaW5nW10gY292ZXJhZ2VfbmFtZXMgPSB7CisgICAgICAgICAgICAgICAgInZpc2libGUiLCAiaW52aXNpYmxlIiwgInZpc2libGVfY292ZXJzIiwgImludmlzaWJsZV9jb3ZlcnMiLCAiPz8/PyIsICJ2aXNpYmxlX2NvdmVyc19yZW1vdmUiCisgICAgICAgICAgICB9OworICAgICAgICAgICAgYnVmLmFwcGVuZChjb3ZlcmFnZV9uYW1lc1tjb3ZlcmFnZV0pOworICAgICAgICAgICAgcmV0dXJuIGJ1Zi50b1N0cmluZygpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQSBMb2NhbGVLZXlGYWN0b3J5IHRoYXQganVzdCByZXR1cm5zIGEgc2luZ2xlIG9iamVjdCBmb3IgYSBraW5kL2xvY2FsZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFNpbXBsZUxvY2FsZUtleUZhY3RvcnkgZXh0ZW5kcyBMb2NhbGVLZXlGYWN0b3J5IHsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBPYmplY3Qgb2JqOworICAgICAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBpZDsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBpbnQga2luZDsKKworICAgICAgICBwdWJsaWMgU2ltcGxlTG9jYWxlS2V5RmFjdG9yeShPYmplY3Qgb2JqLCBMb2NhbGUgbG9jYWxlLCBpbnQga2luZCwgaW50IGNvdmVyYWdlKSB7CisgICAgICAgICAgICB0aGlzKG9iaiwgbG9jYWxlLCBraW5kLCBjb3ZlcmFnZSwgbnVsbCk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgU2ltcGxlTG9jYWxlS2V5RmFjdG9yeShPYmplY3Qgb2JqLCBMb2NhbGUgbG9jYWxlLCBpbnQga2luZCwgaW50IGNvdmVyYWdlLCBTdHJpbmcgbmFtZSkgeworICAgICAgICAgICAgc3VwZXIoY292ZXJhZ2UsIG5hbWUpOworICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLm9iaiA9IG9iajsKKyAgICAgICAgICAgIHRoaXMuaWQgPSBMb2NhbGVVdGlsaXR5LmNhbm9uaWNhbExvY2FsZVN0cmluZyhsb2NhbGUudG9TdHJpbmcoKSk7CisgICAgICAgICAgICB0aGlzLmtpbmQgPSBraW5kOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFJldHVybnMgdGhlIHNlcnZpY2Ugb2JqZWN0IGlmIGtpbmQvbG9jYWxlIG1hdGNoLiAgU2VydmljZSBpcyBub3QgdXNlZC4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBPYmplY3QgY3JlYXRlKEtleSBrZXksIElDVVNlcnZpY2Ugc2VydmljZSkgeworICAgICAgICAgICAgTG9jYWxlS2V5IGxrZXkgPSAoTG9jYWxlS2V5KWtleTsKKyAgICAgICAgICAgIGlmIChraW5kID09IExvY2FsZUtleS5LSU5EX0FOWSB8fCBraW5kID09IGxrZXkua2luZCgpKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIGtleUlEID0gbGtleS5jdXJyZW50SUQoKTsKKyAgICAgICAgICAgICAgICBpZiAoaWQuZXF1YWxzKGtleUlEKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2JqOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgcHJvdGVjdGVkIFNldCBnZXRTdXBwb3J0ZWRJRHMoKSB7CisgICAgICAgICAgICByZXR1cm4gQ29sbGVjdGlvbnMuc2luZ2xldG9uKGlkKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgICAgICBTdHJpbmdCdWZmZXIgYnVmID0gbmV3IFN0cmluZ0J1ZmZlcihzdXBlci50b1N0cmluZygpKTsKKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIiwgaWQ6ICIpOworICAgICAgICAgICAgYnVmLmFwcGVuZChpZCk7CisgICAgICAgICAgICBidWYuYXBwZW5kKCIsIGtpbmQ6ICIpOworICAgICAgICAgICAgYnVmLmFwcGVuZChraW5kKTsKKyAgICAgICAgICAgIHJldHVybiBidWYudG9TdHJpbmcoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEEgTG9jYWxlS2V5RmFjdG9yeSB0aGF0IGNyZWF0ZXMgYSBzZXJ2aWNlIGJhc2VkIG9uIHRoZSBJQ1UgbG9jYWxlIGRhdGEuCisgICAgICogVGhpcyBpcyBhIGJhc2UgY2xhc3MgZm9yIG1vc3QgSUNVIGZhY3Rvcmllcy4gIFN1YmNsYXNzZXMgaW5zdGFudGlhdGUgaXQKKyAgICAgKiB3aXRoIGEgY29uc3RydWN0b3IgdGhhdCB0YWtlcyBhIGJ1bmRsZSBuYW1lLCB3aGljaCBkZXRlcm1pbmVzIHRoZSBzdXBwb3J0ZWQKKyAgICAgKiBJRHMuICBTdWJjbGFzc2VzIHRoZW4gb3ZlcnJpZGUgaGFuZGxlQ3JlYXRlIHRvIGNyZWF0ZSB0aGUgYWN0dWFsIHNlcnZpY2UKKyAgICAgKiBvYmplY3QuICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIGEgcmVzb3VyY2UgYnVuZGxlLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgSUNVUmVzb3VyY2VCdW5kbGVGYWN0b3J5IGV4dGVuZHMgTG9jYWxlS2V5RmFjdG9yeSB7CisJcHJvdGVjdGVkIGZpbmFsIFN0cmluZyBidW5kbGVOYW1lOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBDb252ZW5pZW5jZSBjb25zdHJ1Y3RvciB0aGF0IHVzZXMgdGhlIG1haW4gSUNVIGJ1bmRsZSBuYW1lLgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIElDVVJlc291cmNlQnVuZGxlRmFjdG9yeSgpIHsKKyAgICAgICAgICAgIHRoaXMoSUNVTG9jYWxlRGF0YS5MT0NBTEVfRUxFTUVOVFMpOworICAgICAgICB9CisKKwkvKioKKwkgKiBBIHNlcnZpY2UgZmFjdG9yeSBiYXNlZCBvbiBJQ1UgcmVzb3VyY2UgZGF0YSBpbiByZXNvdXJjZXMKKwkgKiB3aXRoIHRoZSBnaXZlbiBuYW1lLgorCSAqLworCXB1YmxpYyBJQ1VSZXNvdXJjZUJ1bmRsZUZhY3RvcnkoU3RyaW5nIGJ1bmRsZU5hbWUpIHsKKyAgICAgICAgICAgIHN1cGVyKFZJU0lCTEUpOworCisgICAgICAgICAgICB0aGlzLmJ1bmRsZU5hbWUgPSBidW5kbGVOYW1lOworICAgICAgICB9CisKKwkvKioKKyAgICAgICAgICogUmV0dXJuIHRoZSBzdXBwb3J0ZWQgSURzLiAgVGhpcyBpcyB0aGUgc2V0IG9mIGFsbCBsb2NhbGUgbmFtZXMgaW4gSUNVTG9jYWxlRGF0YS4KKwkgKi8KKwlwcm90ZWN0ZWQgU2V0IGdldFN1cHBvcnRlZElEcygpIHsKKyAgICAgICAgICAgIHJldHVybiBJQ1VMb2NhbGVEYXRhLmdldEF2YWlsYWJsZUxvY2FsZU5hbWVTZXQoYnVuZGxlTmFtZSk7CisJfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBDcmVhdGUgdGhlIHNlcnZpY2UuICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIHRoZSByZXNvdXJjZSBidW5kbGUKKyAgICAgICAgICogZm9yIHRoZSBsb2NhbGUsIGlnbm9yaW5nIGtpbmQsIGFuZCBzZXJ2aWNlLgorICAgICAgICAgKi8KKyAgICAgICAgcHJvdGVjdGVkIE9iamVjdCBoYW5kbGVDcmVhdGUoTG9jYWxlIGxvYywgaW50IGtpbmQsIElDVVNlcnZpY2Ugc2VydmljZSkgeworICAgICAgICAgICAgcmV0dXJuIElDVUxvY2FsZURhdGEuZ2V0UmVzb3VyY2VCdW5kbGUoYnVuZGxlTmFtZSwgbG9jKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgICAgICByZXR1cm4gc3VwZXIudG9TdHJpbmcoKSArICIsIGJ1bmRsZTogIiArIGJ1bmRsZU5hbWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgZmFsbGJhY2sgbG9jYWxlLiAgSWYgaXQgaGFzIGNoYW5nZWQgc2luY2UgdGhpcyB3YXMKKyAgICAgKiBsYXN0IGFjY2Vzc2VkLCB0aGUgc2VydmljZSBjYWNoZSBpcyBjbGVhcmVkLgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgdmFsaWRhdGVGYWxsYmFja0xvY2FsZSgpIHsKKwlMb2NhbGUgbG9jID0gTG9jYWxlLmdldERlZmF1bHQoKTsKKwlpZiAobG9jICE9IGZhbGxiYWNrTG9jYWxlKSB7CisJICAgIHN5bmNocm9uaXplZCAodGhpcykgeworCQlpZiAobG9jICE9IGZhbGxiYWNrTG9jYWxlKSB7CisJCSAgICBmYWxsYmFja0xvY2FsZSA9IGxvYzsKKwkJICAgIGZhbGxiYWNrTG9jYWxlTmFtZSA9IExvY2FsZVV0aWxpdHkuY2Fub25pY2FsTG9jYWxlU3RyaW5nKGxvYy50b1N0cmluZygpKTsKKwkJICAgIGNsZWFyU2VydmljZUNhY2hlKCk7CisJCX0KKwkgICAgfQorCX0KKyAgICAgICAgcmV0dXJuIGZhbGxiYWNrTG9jYWxlTmFtZTsKKyAgICB9CisKKyAgICBwdWJsaWMgS2V5IGNyZWF0ZUtleShTdHJpbmcgaWQpIHsKKwlyZXR1cm4gTG9jYWxlS2V5LmNyZWF0ZVdpdGhDYW5vbmljYWxGYWxsYmFjayhpZCwgdmFsaWRhdGVGYWxsYmFja0xvY2FsZSgpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgS2V5IGNyZWF0ZUtleShTdHJpbmcgaWQsIGludCBraW5kKSB7CisJcmV0dXJuIExvY2FsZUtleS5jcmVhdGVXaXRoQ2Fub25pY2FsRmFsbGJhY2soaWQsIHZhbGlkYXRlRmFsbGJhY2tMb2NhbGUoKSwga2luZCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvSUNVTm90aWZpZXIuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL0lDVU5vdGlmaWVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzhlYzhkOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL0lDVU5vdGlmaWVyLmphdmEKQEAgLTAsMCArMSwxNzcgQEAKKy8qKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMS0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9JQ1VOb3RpZmllci5qYXZhLHYgJAorICogJERhdGU6IDIwMDIvMDgvMTMgMjM6NDA6NTIgJAorICogJFJldmlzaW9uOiAxLjQgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuaW1wbDsKKworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkV2ZW50TGlzdGVuZXI7CitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworaW1wb3J0IGphdmEudXRpbC5MaW5rZWRMaXN0OworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCisvKioKKyAqIDxwPkFic3RyYWN0IGltcGxlbWVudGF0aW9uIG9mIGEgbm90aWZpY2F0aW9uIGZhY2lsaXR5LiAgQ2xpZW50cyBhZGQKKyAqIEV2ZW50TGlzdGVuZXJzIHdpdGggYWRkTGlzdGVuZXIgYW5kIHJlbW92ZSB0aGVtIHdpdGggcmVtb3ZlTGlzdGVuZXIuCisgKiBOb3RpZmllcnMgY2FsbCBub3RpZnlDaGFuZ2VkIHdoZW4gdGhleSB3aXNoIHRvIG5vdGlmeSBsaXN0ZW5lcnMuCisgKiBUaGlzIHF1ZXVlcyB0aGUgbGlzdGVuZXIgbGlzdCBvbiB0aGUgbm90aWZpY2F0aW9uIHRocmVhZCwgd2hpY2gKKyAqIGV2ZW50dWFsbHkgZGVxdWV1ZXMgdGhlIGxpc3QgYW5kIGNhbGxzIG5vdGlmeUxpc3RlbmVyIG9uIGVhY2gKKyAqIGxpc3RlbmVyIGluIHRoZSBsaXN0LjwvcD4KKyAqCisgKiA8cD5TdWJjbGFzc2VzIG92ZXJyaWRlIGFjY2VwdHNMaXN0ZW5lciBhbmQgbm90aWZ5TGlzdGVuZXIgCisgKiB0byBhZGQgdHlwZS1zYWZlIG5vdGlmaWNhdGlvbi4gIEFjY2VwdHNMaXN0ZW5lciBzaG91bGQgcmV0dXJuCisgKiB0cnVlIGlmIHRoZSBsaXN0ZW5lciBpcyBvZiB0aGUgYXBwcm9wcmlhdGUgdHlwZTsgSUNVTm90aWZpZXIKKyAqIGl0c2VsZiB3aWxsIGVuc3VyZSB0aGUgbGlzdGVuZXIgaXMgbm9uLW51bGwgYW5kIHRoYXQgdGhlCisgKiBpZGVudGljYWwgbGlzdGVuZXIgaXMgbm90IGFscmVhZHkgcmVnaXN0ZXJlZCB3aXRoIHRoZSBOb3RpZmllci4KKyAqIE5vdGlmeUxpc3RlbmVyIHNob3VsZCBjYXN0IHRoZSBsaXN0ZW5lciB0byB0aGUgYXBwcm9wcmlhdGUgCisgKiB0eXBlIGFuZCBjYWxsIHRoZSBhcHByb3ByaWF0ZSBtZXRob2Qgb24gdGhlIGxpc3RlbmVyLgorICovCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgSUNVTm90aWZpZXIgeworICAgIHByaXZhdGUgZmluYWwgT2JqZWN0IG5vdGlmeUxvY2sgPSBuZXcgT2JqZWN0KCk7CisgICAgcHJpdmF0ZSBOb3RpZnlUaHJlYWQgbm90aWZ5VGhyZWFkOworICAgIHByaXZhdGUgTGlzdCBsaXN0ZW5lcnM7CisKKyAgICAvKioKKyAgICAgKiBBZGQgYSBsaXN0ZW5lciB0byBiZSBub3RpZmllZCB3aGVuIG5vdGlmeUNoYW5nZWQgaXMgY2FsbGVkLgorICAgICAqIFRoZSBsaXN0ZW5lciBtdXN0IG5vdCBiZSBudWxsLiBBY2NlcHRzTGlzdGVuZXIgbXVzdCByZXR1cm4KKyAgICAgKiB0cnVlIGZvciB0aGUgbGlzdGVuZXIuICBBdHRlbXB0cyB0byBjb25jdXJyZW50bHkKKyAgICAgKiByZWdpc3RlciB0aGUgaWRlbnRpY2FsIGxpc3RlbmVyIG1vcmUgdGhhbiBvbmNlIHdpbGwgYmUKKyAgICAgKiBzaWxlbnRseSBpZ25vcmVkLiAgCisgICAgICovCisgICAgcHVibGljIHZvaWQgYWRkTGlzdGVuZXIoRXZlbnRMaXN0ZW5lciBsKSB7CisJaWYgKGwgPT0gbnVsbCkgeworCSAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oKTsKKwl9CisKKwlpZiAoYWNjZXB0c0xpc3RlbmVyKGwpKSB7CisJICAgIHN5bmNocm9uaXplZCAobm90aWZ5TG9jaykgeworCQlpZiAobGlzdGVuZXJzID09IG51bGwpIHsKKwkJICAgIGxpc3RlbmVycyA9IG5ldyBBcnJheUxpc3QoNSk7CisJCX0gZWxzZSB7CisJCSAgICAvLyBpZGVudGl0eSBlcXVhbGl0eSBjaGVjaworCQkgICAgSXRlcmF0b3IgaXRlciA9IGxpc3RlbmVycy5pdGVyYXRvcigpOworCQkgICAgd2hpbGUgKGl0ZXIuaGFzTmV4dCgpKSB7CisJCQlpZiAoaXRlci5uZXh0KCkgPT0gbCkgeworCQkJICAgIHJldHVybjsKKwkJCX0KKwkJICAgIH0KKwkJfQorCisJCWxpc3RlbmVycy5hZGQobCk7CisJICAgIH0KKwl9IGVsc2UgeworCSAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcigiTGlzdGVuZXIgaW52YWxpZCBmb3IgdGhpcyBub3RpZmllci4iKTsKKwl9CisgICAgfQorCisgICAgLyoqCisgICAgICogU3RvcCBub3RpZnlpbmcgdGhpcyBsaXN0ZW5lci4gIFRoZSBsaXN0ZW5lciBtdXN0CisgICAgICogbm90IGJlIG51bGwuICBBdHRlbXBzIHRvIHJlbW92ZSBhIGxpc3RlbmVyIHRoYXQgaXMKKyAgICAgKiBub3QgcmVnaXN0ZXJlZCB3aWxsIGJlIHNpbGVudGx5IGlnbm9yZWQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgcmVtb3ZlTGlzdGVuZXIoRXZlbnRMaXN0ZW5lciBsKSB7CisJaWYgKGwgPT0gbnVsbCkgeworCSAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oKTsKKwl9CisJc3luY2hyb25pemVkIChub3RpZnlMb2NrKSB7CisJICAgIGlmIChsaXN0ZW5lcnMgIT0gbnVsbCkgeworCQkvLyBpZGVudGl0eSBlcXVhbGl0eSBjaGVjaworCQlJdGVyYXRvciBpdGVyID0gbGlzdGVuZXJzLml0ZXJhdG9yKCk7CisJCXdoaWxlIChpdGVyLmhhc05leHQoKSkgeworCQkgICAgaWYgKGl0ZXIubmV4dCgpID09IGwpIHsKKwkJCWl0ZXIucmVtb3ZlKCk7CisJCQlpZiAobGlzdGVuZXJzLnNpemUoKSA9PSAwKSB7CisJCQkgICAgbGlzdGVuZXJzID0gbnVsbDsKKwkJCX0KKwkJCXJldHVybjsKKwkJICAgIH0KKwkJfQorCSAgICB9CisJfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFF1ZXVlIGEgbm90aWZpY2F0aW9uIG9uIHRoZSBub3RpZmljYXRpb24gdGhyZWFkIGZvciB0aGUgY3VycmVudAorICAgICAqIGxpc3RlbmVycy4gIFdoZW4gdGhlIHRocmVhZCB1bnF1ZXVlcyB0aGUgbm90aWZpY2F0aW9uLCBub3RpZnlMaXN0ZW5lcgorICAgICAqIGlzIGNhbGxlZCBvbiBlYWNoIGxpc3RlbmVyIGZyb20gdGhlIG5vdGlmaWNhdGlvbiB0aHJlYWQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgbm90aWZ5Q2hhbmdlZCgpIHsKKwlpZiAobGlzdGVuZXJzICE9IG51bGwpIHsKKwkgICAgc3luY2hyb25pemVkIChub3RpZnlMb2NrKSB7CisJCWlmIChsaXN0ZW5lcnMgIT0gbnVsbCkgeworCQkgICAgaWYgKG5vdGlmeVRocmVhZCA9PSBudWxsKSB7CisJCQlub3RpZnlUaHJlYWQgPSBuZXcgTm90aWZ5VGhyZWFkKHRoaXMpOworCQkJbm90aWZ5VGhyZWFkLnNldERhZW1vbih0cnVlKTsKKwkJCW5vdGlmeVRocmVhZC5zdGFydCgpOworCQkgICAgfQorCQkgICAgbm90aWZ5VGhyZWFkLnF1ZXVlKGxpc3RlbmVycy50b0FycmF5KCkpOworCQl9CisJICAgIH0KKwl9CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhlIG5vdGlmaWNhdGlvbiB0aHJlYWQuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgTm90aWZ5VGhyZWFkIGV4dGVuZHMgVGhyZWFkIHsKKwlwcml2YXRlIGZpbmFsIElDVU5vdGlmaWVyIG5vdGlmaWVyOworCXByaXZhdGUgZmluYWwgTGlzdCBxdWV1ZSA9IG5ldyBMaW5rZWRMaXN0KCk7CisKKwlOb3RpZnlUaHJlYWQoSUNVTm90aWZpZXIgbm90aWZpZXIpIHsKKwkgICAgdGhpcy5ub3RpZmllciA9IG5vdGlmaWVyOworCX0KKworCS8qKgorCSAqIFF1ZXVlIHRoZSBub3RpZmljYXRpb24gb24gdGhlIHRocmVhZC4KKwkgKi8KKwlwdWJsaWMgdm9pZCBxdWV1ZShPYmplY3RbXSBsaXN0KSB7CisJICAgIHN5bmNocm9uaXplZCAodGhpcykgeworCQlxdWV1ZS5hZGQobGlzdCk7CisJCW5vdGlmeSgpOworCSAgICB9CisJfQorCisJLyoqCisJICogV2FpdCBmb3IgYSBub3RpZmljYXRpb24gdG8gYmUgcXVldWVkLCB0aGVuIG5vdGlmeSBhbGwKKwkgKiBsaXN0ZW5lcnMgbGlzdGVkIGluIHRoZSBub3RpZmljYXRpb24uCisJICovCisJcHVibGljIHZvaWQgcnVuKCkgeworCSAgICBPYmplY3RbXSBsaXN0OworCSAgICB3aGlsZSAodHJ1ZSkgeworCQl0cnkgeworCQkgICAgc3luY2hyb25pemVkICh0aGlzKSB7CisJCQl3aGlsZSAocXVldWUuaXNFbXB0eSgpKSB7CisJCQkgICAgd2FpdCgpOworCQkJfQorCQkJbGlzdCA9IChPYmplY3RbXSlxdWV1ZS5yZW1vdmUoMCk7CisJCSAgICB9CisKKwkJICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsraSkgeworCQkJbm90aWZpZXIubm90aWZ5TGlzdGVuZXIoKEV2ZW50TGlzdGVuZXIpbGlzdFtpXSk7CisJCSAgICB9CisJCX0KKwkJY2F0Y2ggKEludGVycnVwdGVkRXhjZXB0aW9uIGUpIHsKKwkJfQorCSAgICB9CisJfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFN1YmNsYXNzZXMgaW1wbGVtZW50IHRoaXMgdG8gcmV0dXJuIHRydWUgaWYgdGhlIGxpc3RlbmVyIGlzCisgICAgICogb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUuCisgICAgICovCisgICAgcHJvdGVjdGVkIGFic3RyYWN0IGJvb2xlYW4gYWNjZXB0c0xpc3RlbmVyKEV2ZW50TGlzdGVuZXIgbCk7CisKKyAgICAvKioKKyAgICAgKiBTdWJjbGFzc2VzIGltcGxlbWVudCB0aGlzIHRvIG5vdGlmeSB0aGUgbGlzdGVuZXIuCisgICAgICovCisgICAgcHJvdGVjdGVkIGFic3RyYWN0IHZvaWQgbm90aWZ5TGlzdGVuZXIoRXZlbnRMaXN0ZW5lciBsKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL0lDVVJXTG9jay5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvSUNVUldMb2NrLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTE0ZTI1ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL0lDVVJXTG9jay5qYXZhCkBAIC0wLDAgKzEsMzA0IEBACisvKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvSUNVUldMb2NrLmphdmEsdiAkCisgKiAkRGF0ZTogMjAwMi8wOC8xMyAyMzo0MDo1MiAkCisgKiAkUmV2aXNpb246IDEuNCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5pbXBsOworCisvLyBTZWUgQWxsYW4gSG9sdWIncyAxOTk5IGNvbHVtbiBpbiBKYXZhV29ybGQsIGFuZCBEb3VnIExlYSdzIGNvZGUgZm9yIFJXTG9ja3Mgd2l0aCB3cml0ZXIgcHJlZmVyZW5jZS4KKworaW1wb3J0IGphdmEudXRpbC5MaW5rZWRMaXN0OworCisvKioKKyAqIDxwPkEgc2ltcGxlIFJlYWRlci9Xcml0ZXIgbG9jay4gIFRoaXMgYXNzdW1lcyB0aGF0IHRoZXJlIHdpbGwKKyAqIGJlIGxpdHRsZSB3cml0aW5nIGNvbnRlbnRpb24uICBJdCBhbHNvIGRvZXNuJ3QgYWxsb3cgCisgKiBhY3RpdmUgcmVhZGVycyB0byBhY3F1aXJlIGFuZCByZWxlYXNlIGEgd3JpdGUgbG9jaywgb3IKKyAqIGRlYWwgd2l0aCBwcmlvcml0eSBpbnZlcnNpb24gaXNzdWVzLjwvcD4KKyAqCisgKiA8cD5BY2Nlc3MgdG8gdGhlIGxvY2sgc2hvdWxkIGJlIGVuY2xvc2VkIGluIGEgdHJ5L2ZpbmFsbHkgYmxvY2sKKyAqIGluIG9yZGVyIHRvIGVuc3VyZSB0aGF0IHRoZSBsb2NrIGlzIGFsd2F5cyByZWxlYXNlZCBpbiBjYXNlIG9mCisgKiBleGNlcHRpb25zOjxicj48cHJlPgorICogdHJ5IHsKKyAqICAgICBsb2NrLmFjcXVpcmVSZWFkKCk7CisgKiAgICAgLy8gdXNlIHNlcnZpY2UgcHJvdGVjdGVkIGJ5IHRoZSBsb2NrCisgKiB9CisgKiBmaW5hbGx5IHsKKyAqICAgICBsb2NrLnJlbGVhc2VSZWFkKCk7CisgKiB9CisgKiA8L3ByZT48L3A+CisgKgorICogPHA+VGhlIGxvY2sgcHJvdmlkZXMgdXRpbGl0eSBtZXRob2RzIGdldFN0YXRzIGFuZCBjbGVhclN0YXRzCisgKiB0byByZXR1cm4gc3RhdGlzdGljcyBvbiB0aGUgdXNlIG9mIHRoZSBsb2NrLjwvcD4KKyAqLworcHVibGljIGNsYXNzIElDVVJXTG9jayB7CisgICAgcHJpdmF0ZSBPYmplY3Qgd3JpdGVMb2NrID0gbmV3IE9iamVjdCgpOworICAgIHByaXZhdGUgT2JqZWN0IHJlYWRMb2NrID0gbmV3IE9iamVjdCgpOworICAgIHByaXZhdGUgaW50IHd3YzsgLy8gd2FpdGluZyB3cml0ZXJzCisgICAgcHJpdmF0ZSBpbnQgcmM7IC8vIGFjdGl2ZSByZWFkZXJzLCAtMSBpZiB0aGVyZSdzIGFuIGFjdGl2ZSB3cml0ZXIKKyAgICBwcml2YXRlIGludCB3cmM7IC8vIHdhaXRpbmcgcmVhZGVycworCisgICAgcHJpdmF0ZSBTdGF0cyBzdGF0cyA9IG5ldyBTdGF0cygpOyAvLyBtYXliZSBkb24ndCBpbml0IHRvIHN0YXJ0Li4uCisKKyAgICAvKioKKyAgICAgKiBJbnRlcm5hbCBjbGFzcyB1c2VkIHRvIGdhdGhlciBzdGF0aXN0aWNzIG9uIHRoZSBSV0xvY2suCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBjbGFzcyBTdGF0cyB7CisJLyoqCisJICogTnVtYmVyIG9mIHRpbWVzIHJlYWQgYWNjZXNzIGdyYW50ZWQgKHJlYWQgY291bnQpLgorCSAqLworCXB1YmxpYyBpbnQgX3JjOworCisJLyoqCisJICogTnVtYmVyIG9mIHRpbWVzIGNvbmN1cnJlbnQgcmVhZCBhY2Nlc3MgZ3JhbnRlZCAobXVsdGlwbGUgcmVhZCBjb3VudCkuCisJICovCisJcHVibGljIGludCBfbXJjOworCisJLyoqCisJICogTnVtYmVyIG9mIHRpbWVzIGJsb2NrZWQgZm9yIHJlYWQgKHdhaXRpbmcgcmVhZGVyIGNvdW50KS4KKwkgKi8KKwlwdWJsaWMgaW50IF93cmM7IC8vIHdhaXQgZm9yIHJlYWQKKworCS8qKgorCSAqIE51bWJlciBvZiB0aW1lcyB3cml0ZSBhY2Nlc3MgZ3JhbnRlZCAod3JpdGVyIGNvdW50KS4KKwkgKi8KKwlwdWJsaWMgaW50IF93YzsKKworCS8qKgorCSAqIE51bWJlciBvZiB0aW1lcyBibG9ja2VkIGZvciB3cml0ZSAod2FpdGluZyB3cml0ZXIgY291bnQpLgorCSAqLworCXB1YmxpYyBpbnQgX3d3YzsKKworCXByaXZhdGUgU3RhdHMoKSB7CisJfQorCisJcHJpdmF0ZSBTdGF0cyhpbnQgcmMsIGludCBtcmMsIGludCB3cmMsIGludCB3YywgaW50IHd3YykgeworCSAgICB0aGlzLl9yYyA9IHJjOworCSAgICB0aGlzLl9tcmMgPSBtcmM7CisJICAgIHRoaXMuX3dyYyA9IHdyYzsKKwkgICAgdGhpcy5fd2MgPSB3YzsKKwkgICAgdGhpcy5fd3djID0gd3djOworCX0KKworCXByaXZhdGUgU3RhdHMoU3RhdHMgcmhzKSB7CisJICAgIHRoaXMocmhzLl9yYywgcmhzLl9tcmMsIHJocy5fd3JjLCByaHMuX3djLCByaHMuX3d3Yyk7CisJfQorCisJLyoqCisJICogUmV0dXJuIGEgc3RyaW5nIGxpc3RpbmcgYWxsIHRoZSBzdGF0cy4KKwkgKi8KKwlwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworCSAgICByZXR1cm4gIiByYzogIiArIF9yYyArCisJCSIgbXJjOiAiICsgX21yYyArIAorCQkiIHdyYzogIiArIF93cmMgKworCQkiIHdjOiAiICsgX3djICsKKwkJIiB3d2M6ICIgKyBfd3djOworCX0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXNldCB0aGUgc3RhdHMuICBSZXR1cm5zIGV4aXN0aW5nIHN0YXRzLCBpZiBhbnkuCisgICAgICovCisgICAgcHVibGljIHN5bmNocm9uaXplZCBTdGF0cyByZXNldFN0YXRzKCkgeworCVN0YXRzIHJlc3VsdCA9IHN0YXRzOworCXN0YXRzID0gbmV3IFN0YXRzKCk7CisJcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDbGVhciB0aGUgc3RhdHMgKHN0b3AgY29sbGVjdGluZyBzdGF0cykuICBSZXR1cm5zIGV4aXN0aW5nIHN0YXRzLCBpZiBhbnkuCisgICAgICovCisgICAgcHVibGljIHN5bmNocm9uaXplZCBTdGF0cyBjbGVhclN0YXRzKCkgeworCVN0YXRzIHJlc3VsdCA9IHN0YXRzOworCXN0YXRzID0gbnVsbDsKKwlyZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSBzbmFwc2hvdCBvZiB0aGUgY3VycmVudCBzdGF0cy4gIFRoaXMgZG9lcyBub3QgcmVzZXQgdGhlIHN0YXRzLgorICAgICAqLworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgU3RhdHMgZ2V0U3RhdHMoKSB7CisJcmV0dXJuIHN0YXRzID09IG51bGwgPyBudWxsIDogbmV3IFN0YXRzKHN0YXRzKTsKKyAgICB9CisKKyAgICAvLyB1dGlsaXRpZXMKKworICAgIHByaXZhdGUgc3luY2hyb25pemVkIGJvb2xlYW4gZ290UmVhZCgpIHsKKwkrK3JjOworCWlmIChzdGF0cyAhPSBudWxsKSB7CisJICAgICsrc3RhdHMuX3JjOworCSAgICBpZiAocmMgPiAxKSArK3N0YXRzLl9tcmM7CisJfQorCXJldHVybiB0cnVlOworICAgIH0KKworICAgIHByaXZhdGUgc3luY2hyb25pemVkIGJvb2xlYW4gZ2V0UmVhZCgpIHsKKwlpZiAocmMgPj0gMCAmJiB3d2MgPT0gMCkgeworCSAgICByZXR1cm4gZ290UmVhZCgpOworCX0KKwkrK3dyYzsKKwlyZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHJpdmF0ZSBzeW5jaHJvbml6ZWQgYm9vbGVhbiByZXRyeVJlYWQoKSB7CisJaWYgKHN0YXRzICE9IG51bGwpICsrc3RhdHMuX3dyYzsKKwlpZiAocmMgPj0gMCAmJiB3d2MgPT0gMCkgeworCSAgICAtLXdyYzsKKwkgICAgcmV0dXJuIGdvdFJlYWQoKTsKKwl9CisJcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHByaXZhdGUgc3luY2hyb25pemVkIGJvb2xlYW4gZmluaXNoUmVhZCgpIHsKKwlpZiAocmMgPiAwKSB7CisJICAgIHJldHVybiAoMCA9PSAtLXJjICYmIHd3YyA+IDApOworCX0KKwl0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcigibm8gY3VycmVudCByZWFkZXIgdG8gcmVsZWFzZSIpOworICAgIH0KKwkKKyAgICBwcml2YXRlIHN5bmNocm9uaXplZCBib29sZWFuIGdvdFdyaXRlKCkgeworCXJjID0gLTE7CisJaWYgKHN0YXRzICE9IG51bGwpIHsKKwkgICAgKytzdGF0cy5fd2M7CisJfQorCXJldHVybiB0cnVlOworICAgIH0KKworICAgIHByaXZhdGUgc3luY2hyb25pemVkIGJvb2xlYW4gZ2V0V3JpdGUoKSB7CisJaWYgKHJjID09IDApIHsKKwkgICAgcmV0dXJuIGdvdFdyaXRlKCk7CisJfQorCSsrd3djOworCXJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN5bmNocm9uaXplZCBib29sZWFuIHJldHJ5V3JpdGUoKSB7CisJaWYgKHN0YXRzICE9IG51bGwpICsrc3RhdHMuX3d3YzsKKwlpZiAocmMgPT0gMCkgeworCSAgICAtLXd3YzsKKwkgICAgcmV0dXJuIGdvdFdyaXRlKCk7CisJfQorCXJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTk9USUZZX05PTkUgPSAwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBOT1RJRllfV1JJVEVSUyA9IDE7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE5PVElGWV9SRUFERVJTID0gMjsKKworICAgIHByaXZhdGUgc3luY2hyb25pemVkIGludCBmaW5pc2hXcml0ZSgpIHsKKwlpZiAocmMgPCAwKSB7CisJICAgIHJjID0gMDsKKwkgICAgaWYgKHd3YyA+IDApIHsKKwkJcmV0dXJuIE5PVElGWV9XUklURVJTOworCSAgICB9IGVsc2UgaWYgKHdyYyA+IDApIHsKKwkJcmV0dXJuIE5PVElGWV9SRUFERVJTOworCSAgICB9IGVsc2UgeworCQlyZXR1cm4gTk9USUZZX05PTkU7CisJICAgIH0KKwl9CisJdGhyb3cgbmV3IEludGVybmFsRXJyb3IoIm5vIGN1cnJlbnQgd3JpdGVyIHRvIHJlbGVhc2UiKTsKKyAgICB9CisJCisgICAgLyoqCisgICAgICogPHA+QWNxdWlyZSBhIHJlYWQgbG9jaywgYmxvY2tpbmcgdW50aWwgYSByZWFkIGxvY2sgaXMKKyAgICAgKiBhdmFpbGFibGUuICBNdWx0aXBsZSByZWFkZXJzIGNhbiBjb25jdXJyZW50bHkgaG9sZCB0aGUgcmVhZAorICAgICAqIGxvY2suPC9wPgorICAgICAqCisgICAgICogPHA+SWYgdGhlcmUncyBhIHdyaXRlciwgb3IgYSB3YWl0aW5nIHdyaXRlciwgaW5jcmVtZW50IHRoZQorICAgICAqIHdhaXRpbmcgcmVhZGVyIGNvdW50IGFuZCBibG9jayBvbiB0aGlzLiAgT3RoZXJ3aXNlCisgICAgICogaW5jcmVtZW50IHRoZSBhY3RpdmUgcmVhZGVyIGNvdW50IGFuZCByZXR1cm4uICBDYWxsZXIgbXVzdCBjYWxsCisgICAgICogcmVsZWFzZVJlYWQgd2hlbiBkb25lIChmb3IgZXhhbXBsZSwgaW4gYSBmaW5hbGx5IGJsb2NrKS48L3A+IAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGFjcXVpcmVSZWFkKCkgeworCWlmICghZ2V0UmVhZCgpKSB7CisJICAgIGZvciAoOzspIHsKKwkJdHJ5IHsKKwkJICAgIHN5bmNocm9uaXplZCAocmVhZExvY2spIHsKKwkJCXJlYWRMb2NrLndhaXQoKTsKKwkJICAgIH0KKwkJICAgIGlmIChyZXRyeVJlYWQoKSkgeworCQkJcmV0dXJuOworCQkgICAgfQorCQl9CisJCWNhdGNoIChJbnRlcnJ1cHRlZEV4Y2VwdGlvbiBlKSB7CisJCX0KKwkgICAgfQorCX0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiA8cD5SZWxlYXNlIGEgcmVhZCBsb2NrIGFuZCByZXR1cm4uICBBbiBlcnJvciB3aWxsIGJlIHRocm93bgorICAgICAqIGlmIGEgcmVhZCBsb2NrIGlzIG5vdCBjdXJyZW50bHkgaGVsZC48L3A+CisgICAgICoKKyAgICAgKiA8cD5JZiB0aGlzIGlzIHRoZSBsYXN0IGFjdGl2ZSByZWFkZXIsIG5vdGlmeSB0aGUgb2xkZXN0CisgICAgICogd2FpdGluZyB3cml0ZXIuICBDYWxsIHdoZW4gZmluaXNoZWQgd2l0aCB3b3JrCisgICAgICogY29udHJvbGxlZCBieSBhY3F1aXJlUmVhZC48L3A+CisgICAgICovCisgICAgcHVibGljIHZvaWQgcmVsZWFzZVJlYWQoKSB7CisJaWYgKGZpbmlzaFJlYWQoKSkgeworCSAgICBzeW5jaHJvbml6ZWQgKHdyaXRlTG9jaykgeworCQl3cml0ZUxvY2subm90aWZ5KCk7CisJICAgIH0KKwl9CisgICAgfQorCisgICAgLyoqCisgICAgICogPHA+QWNxdWlyZSB0aGUgd3JpdGUgbG9jaywgYmxvY2tpbmcgdW50aWwgdGhlIHdyaXRlIGxvY2sgaXMKKyAgICAgKiBhdmFpbGFibGUuICBPbmx5IG9uZSB3cml0ZXIgY2FuIGFjcXVpcmUgdGhlIHdyaXRlIGxvY2ssIGFuZAorICAgICAqIHdoZW4gaGVsZCwgbm8gcmVhZGVycyBjYW4gYWNxdWlyZSB0aGUgcmVhZCBsb2NrLjwvcD4KKyAgICAgKgorICAgICAqIDxwPklmIHRoZXJlIGFyZSBubyByZWFkZXJzIGFuZCBubyB3YWl0aW5nIHdyaXRlcnMsIG1hcmsgYXMKKyAgICAgKiBoYXZpbmcgYW4gYWN0aXZlIHdyaXRlciBhbmQgcmV0dXJuLiAgT3RoZXJ3aXNlLCBhZGQgYSBsb2NrIHRvIHRoZQorICAgICAqIGVuZCBvZiB0aGUgd2FpdGluZyB3cml0ZXIgbGlzdCwgYW5kIGJsb2NrIG9uIGl0LiAgQ2FsbGVyCisgICAgICogbXVzdCBjYWxsIHJlbGVhc2VXcml0ZSB3aGVuIGRvbmUgKGZvciBleGFtcGxlLCBpbiBhIGZpbmFsbHkKKyAgICAgKiBibG9jaykuPHA+IAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGFjcXVpcmVXcml0ZSgpIHsKKwlpZiAoIWdldFdyaXRlKCkpIHsKKwkgICAgZm9yICg7OykgeworCQl0cnkgeworCQkgICAgc3luY2hyb25pemVkICh3cml0ZUxvY2spIHsKKwkJCXdyaXRlTG9jay53YWl0KCk7CisJCSAgICB9CisJCSAgICBpZiAocmV0cnlXcml0ZSgpKSB7CisJCQlyZXR1cm47CisJCSAgICB9CisJCX0KKwkJY2F0Y2ggKEludGVycnVwdGVkRXhjZXB0aW9uIGUpIHsKKwkJfQorCSAgICB9CisJfQorICAgIH0KKworICAgIC8qKgorICAgICAqIDxwPlJlbGVhc2UgdGhlIHdyaXRlIGxvY2sgYW5kIHJldHVybi4gIEFuIGVycm9yIHdpbGwgYmUgdGhyb3duCisgICAgICogaWYgdGhlIHdyaXRlIGxvY2sgaXMgbm90IGN1cnJlbnRseSBoZWxkLjwvcD4KKyAgICAgKgorICAgICAqIDxwPklmIHRoZXJlIGFyZSB3YWl0aW5nIHJlYWRlcnMsIG1ha2UgdGhlbSBhbGwgYWN0aXZlIGFuZAorICAgICAqIG5vdGlmeSBhbGwgb2YgdGhlbS4gIE90aGVyd2lzZSwgbm90aWZ5IHRoZSBvbGRlc3Qgd2FpdGluZworICAgICAqIHdyaXRlciwgaWYgYW55LiAgQ2FsbCB3aGVuIGZpbmlzaGVkIHdpdGggd29yayBjb250cm9sbGVkIGJ5CisgICAgICogYWNxdWlyZVdyaXRlLjwvcD4gCisgICAgICovCisgICAgcHVibGljIHZvaWQgcmVsZWFzZVdyaXRlKCkgeworCXN3aXRjaCAoZmluaXNoV3JpdGUoKSkgeworCWNhc2UgTk9USUZZX1dSSVRFUlM6CisJICAgIHN5bmNocm9uaXplZCAod3JpdGVMb2NrKSB7CisJCXdyaXRlTG9jay5ub3RpZnkoKTsKKwkgICAgfQorCSAgICBicmVhazsKKwljYXNlIE5PVElGWV9SRUFERVJTOgorCSAgICBzeW5jaHJvbml6ZWQgKHJlYWRMb2NrKSB7CisJCXJlYWRMb2NrLm5vdGlmeUFsbCgpOworCSAgICB9CisJICAgIGJyZWFrOworCWNhc2UgTk9USUZZX05PTkU6CisJICAgIGJyZWFrOworCX0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9JQ1VTZXJ2aWNlLmphdmEgYi9zcmMvY29tL2libS9pY3UvaW1wbC9JQ1VTZXJ2aWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTJjMzk5NwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL0lDVVNlcnZpY2UuamF2YQpAQCAtMCwwICsxLDk2OCBAQAorLyoqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9pbXBsL0lDVVNlcnZpY2UuamF2YSx2ICQKKyAqICREYXRlOiAyMDAyLzEyLzEyIDE4OjAyOjA5ICQKKyAqICRSZXZpc2lvbjogMS4xMyAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5pbXBsOworCitpbXBvcnQgY29tLmlibS5pY3UudGV4dC5Db2xsYXRvcjsKKworaW1wb3J0IGphdmEubGFuZy5yZWYuU29mdFJlZmVyZW5jZTsKK2ltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5JbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uOworaW1wb3J0IGphdmEubGFuZy5yZWZsZWN0Lk1ldGhvZDsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKK2ltcG9ydCBqYXZhLnV0aWwuQ29tcGFyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuRXZlbnRMaXN0ZW5lcjsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkxpc3RJdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworaW1wb3J0IGphdmEudXRpbC5NYXA7CitpbXBvcnQgamF2YS51dGlsLk1hcC5FbnRyeTsKK2ltcG9ydCBqYXZhLnV0aWwuU2V0OworaW1wb3J0IGphdmEudXRpbC5Tb3J0ZWRNYXA7CitpbXBvcnQgamF2YS51dGlsLlRyZWVNYXA7CisKKy8qKgorICogPHA+QSBTZXJ2aWNlIHByb3ZpZGVzIGFjY2VzcyB0byBzZXJ2aWNlIG9iamVjdHMgdGhhdCBpbXBsZW1lbnQgYQorICogcGFydGljdWxhciBzZXJ2aWNlLCBlLmcuIHRyYW5zbGl0ZXJhdG9ycy4gIFVzZXJzIHByb3ZpZGUgYSBTdHJpbmcKKyAqIGlkIChmb3IgZXhhbXBsZSwgYSBsb2NhbGUgc3RyaW5nKSB0byB0aGUgc2VydmljZSwgYW5kIGdldCBiYWNrIGFuCisgKiBvYmplY3QgZm9yIHRoYXQgaWQuICBTZXJ2aWNlIG9iamVjdHMgY2FuIGJlIGFueSBraW5kIG9mIG9iamVjdC4KKyAqIFRoZSBzZXJ2aWNlIG9iamVjdCBpcyBjYWNoZWQgYW5kIHJldHVybmVkIGZvciBsYXRlciBxdWVyaWVzLCBzbworICogZ2VuZXJhbGx5IGl0IHNob3VsZCBub3QgYmUgbXV0YWJsZSwgb3IgdGhlIGNhbGxlciBzaG91bGQgY2xvbmUgdGhlCisgKiBvYmplY3QgYmVmb3JlIG1vZGlmeWluZyBpdC48L3A+CisgKgorICogPHA+U2VydmljZXMgJ2Nhbm9uaWNhbGl6ZScgdGhlIHF1ZXJ5IGlkIGFuZCB1c2UgdGhlIGNhbm9uaWNhbCBpZCB0bworICogcXVlcnkgZm9yIHRoZSBzZXJ2aWNlLiAgVGhlIHNlcnZpY2UgYWxzbyBkZWZpbmVzIGEgbWVjaGFuaXNtIHRvCisgKiAnZmFsbGJhY2snIHRoZSBpZCBtdWx0aXBsZSB0aW1lcy4gIENsaWVudHMgY2FuIG9wdGlvbmFsbHkgcmVxdWVzdAorICogdGhlIGFjdHVhbCBpZCB0aGF0IHdhcyBtYXRjaGVkIGJ5IGEgcXVlcnkgd2hlbiB0aGV5IHVzZSBhbiBpZCB0bworICogcmV0cmlldmUgYSBzZXJ2aWNlIG9iamVjdC48L3A+CisgKgorICogPHA+U2VydmljZSBvYmplY3RzIGFyZSBpbnN0YW50aWF0ZWQgYnkgRmFjdG9yeSBvYmplY3RzIHJlZ2lzdGVyZWQgd2l0aCAKKyAqIHRoZSBzZXJ2aWNlLiAgVGhlIHNlcnZpY2UgcXVlcmllcyBlYWNoIEZhY3RvcnkgaW4gdHVybiwgZnJvbSBtb3N0IHJlY2VudGx5CisgKiByZWdpc3RlcmVkIHRvIGVhcmxpZXN0IHJlZ2lzdGVyZWQsIHVudGlsIG9uZSByZXR1cm5zIGEgc2VydmljZSBvYmplY3QuCisgKiBJZiBub25lIHJlc3BvbmRzIHdpdGggYSBzZXJ2aWNlIG9iamVjdCwgYSBmYWxsYmFjayBpZCBpcyBnZW5lcmF0ZWQsCisgKiBhbmQgdGhlIHByb2Nlc3MgcmVwZWF0cyB1bnRpbCBhIHNlcnZpY2Ugb2JqZWN0IGlzIHJldHVybmVkIG9yIHVudGlsCisgKiB0aGUgaWQgaGFzIG5vIGZ1cnRoZXIgZmFsbGJhY2tzLjwvcD4KKyAqCisgKiA8cD5GYWN0b3JpZXMgY2FuIGJlIGR5bmFtaWNhbGx5IHJlZ2lzdGVyZWQgYW5kIHVucmVnaXN0ZXJlZCB3aXRoIHRoZQorICogc2VydmljZS4gIFdoZW4gcmVnaXN0ZXJlZCwgYSBGYWN0b3J5IGlzIGluc3RhbGxlZCBhdCB0aGUgaGVhZCBvZgorICogdGhlIGZhY3RvcnkgbGlzdCwgYW5kIHNvIGdldHMgJ2ZpcnN0IGNyYWNrJyBhdCBhbnkga2V5cyBvciBmYWxsYmFjaworICoga2V5cy4gIFdoZW4gdW5yZWdpc3RlcmVkLCBpdCBpcyByZW1vdmVkIGZyb20gdGhlIHNlcnZpY2UgYW5kIGNhbiBubworICogbG9uZ2VyIGJlIGxvY2F0ZWQgdGhyb3VnaCBpdC4gIFNlcnZpY2Ugb2JqZWN0cyBnZW5lcmF0ZWQgYnkgdGhpcworICogZmFjdG9yeSBhbmQgaGVsZCBieSB0aGUgY2xpZW50IGFyZSB1bmFmZmVjdGVkLjwvcD4KKyAqCisgKiA8cD5JQ1VTZXJ2aWNlIHVzZXMgS2V5cyB0byBxdWVyeSBmYWN0b3JpZXMgYW5kIHBlcmZvcm0KKyAqIGZhbGxiYWNrLiAgVGhlIEtleSBkZWZpbmVzIHRoZSBjYW5vbmljYWwgZm9ybSBvZiB0aGUgaWQsIGFuZAorICogaW1wbGVtZW50cyB0aGUgZmFsbGJhY2sgc3RyYXRlZ3kuICBDdXN0b20gS2V5cyBjYW4gYmUgZGVmaW5lZCB0aGF0CisgKiBwYXJzZSBjb21wbGV4IElEcyBpbnRvIGNvbXBvbmVudHMgdGhhdCBGYWN0b3JpZXMgY2FuIG1vcmUgZWFzaWx5CisgKiB1c2UuICBUaGUgS2V5IGNhbiBjYWNoZSB0aGUgcmVzdWx0cyBvZiB0aGlzIHBhcnNpbmcgdG8gc2F2ZQorICogcmVwZWF0ZWQgZWZmb3J0LiAgSUNVU2VydmljZSBwcm92aWRlcyBjb252ZW5pZW5jZSBBUElzIHRoYXQKKyAqIHRha2UgU3RyaW5ncyBhbmQgZ2VuZXJhdGUgZGVmYXVsdCBLZXlzIGZvciB1c2UgaW4gcXVlcnlpbmcuPC9wPgorICoKKyAqIDxwPklDVVNlcnZpY2UgcHJvdmlkZXMgQVBJIHRvIGdldCB0aGUgbGlzdCBvZiBpZHMgcHVibGljbHkKKyAqIHN1cHBvcnRlZCBieSB0aGUgc2VydmljZSAoYWx0aG91Z2ggcXVlcmllcyBhcmVuJ3QgcmVzdHJpY3RlZCB0bworICogdGhpcyBsaXN0KS4gIFRoaXMgbGlzdCBjb250YWlucyBvbmx5ICdzaW1wbGUnIElEcywgYW5kIG5vdCBmdWxseQorICogdW5pcXVlIGlkcy4gIEZhY3RvcmllcyBhcmUgYXNzb2NpYXRlZCB3aXRoIGVhY2ggc2ltcGxlIElEIGFuZAorICogdGhlIHJlc3BvbnNpYmxlIGZhY3RvcnkgY2FuIGFsc28gcmV0dXJuIGEgaHVtYW4tcmVhZGFibGUgbG9jYWxpemVkCisgKiB2ZXJzaW9uIG9mIHRoZSBzaW1wbGUgSUQsIGZvciB1c2UgaW4gdXNlciBpbnRlcmZhY2VzLiAgSUNVU2VydmljZQorICogY2FuIGFsc28gcHJvdmlkZSBhIHNvcnRlZCBjb2xsZWN0aW9uIG9mIHRoZSBhbGwgdGhlIGxvY2FsaXplZCB2aXNpYmxlIAorICogaWRzLjwvcD4KKyAqCisgKiA8cD5JQ1VTZXJ2aWNlIGltcGxlbWVudHMgSUNVTm90aWZpZXIsIHNvIHRoYXQgY2xpZW50cyBjYW4gcmVnaXN0ZXIKKyAqIHRvIHJlY2VpdmUgbm90aWZpY2F0aW9uIHdoZW4gZmFjdG9yaWVzIGFyZSBhZGRlZCBvciByZW1vdmVkIGZyb20gCisgKiB0aGUgc2VydmljZS4gIElDVVNlcnZpY2UgcHJvdmlkZXMgYSBkZWZhdWx0IEV2ZW50TGlzdGVuZXIgc3ViaW50ZXJmYWNlLAorICogU2VydmljZUxpc3RlbmVyLCB3aGljaCBjYW4gYmUgcmVnaXN0ZXJlZCB3aXRoIHRoZSBzZXJ2aWNlLiAgV2hlbgorICogdGhlIHNlcnZpY2UgY2hhbmdlcywgdGhlIFNlcnZpY2VMaXN0ZW5lcidzIHNlcnZpY2VDaGFuZ2VkIG1ldGhvZAorICogaXMgY2FsbGVkLCB3aXRoIHRoZSBzZXJ2aWNlIGFzIHRoZSBvbmx5IGFyZ3VtZW50LjwvcD4KKyAqCisgKiA8cD5UaGUgSUNVU2VydmljZSBBUEkgaXMgYm90aCByaWNoIGFuZCBnZW5lcmljLCBhbmQgaXQgaXMgZXhwZWN0ZWQKKyAqIHRoYXQgbW9zdCBpbXBsZW1lbnRhdGlvbnMgd2lsbCBzdGF0aWNhbGx5ICd3cmFwJyBJQ1VTZXJ2aWNlIHRvCisgKiBwcmVzZW50IGEgbW9yZSBhcHByb3ByaWF0ZSBBUEktLSBmb3IgZXhhbXBsZSwgdG8gZGVjbGFyZSB0aGUgdHlwZQorICogb2YgdGhlIG9iamVjdHMgcmV0dXJuZWQgZnJvbSBnZXQsIHRvIGxpbWl0IHRoZSBmYWN0b3JpZXMgdGhhdCBjYW4KKyAqIGJlIHJlZ2lzdGVyZWQgd2l0aCB0aGUgc2VydmljZSwgb3IgdG8gZGVmaW5lIHRoZWlyIG93biBsaXN0ZW5lcgorICogaW50ZXJmYWNlIHdpdGggYSBjdXN0b20gY2FsbGJhY2sgbWV0aG9kLiAgVGhleSBtaWdodCBhbHNvIGN1c3RvbWl6ZQorICogSUNVU2VydmljZSBieSBvdmVycmlkaW5nIGl0LCBmb3IgZXhhbXBsZSwgdG8gY3VzdG9taXplIHRoZSBLZXkgYW5kCisgKiBmYWxsYmFjayBzdHJhdGVneS4gIElDVUxvY2FsZVNlcnZpY2UgaXMgYSBjdXN0b21pemVkIHNlcnZpY2UgdGhhdAorICogdXNlcyBMb2NhbGUgbmFtZXMgYXMgaWRzIGFuZCB1c2VzIEtleXMgdGhhdCBpbXBsZW1lbnQgdGhlIHN0YW5kYXJkCisgKiByZXNvdXJjZSBidW5kbGUgZmFsbGJhY2sgc3RyYXRlZ3kuPHA+IAorICovCitwdWJsaWMgY2xhc3MgSUNVU2VydmljZSBleHRlbmRzIElDVU5vdGlmaWVyIHsKKyAgICBwcm90ZWN0ZWQgZmluYWwgU3RyaW5nIG5hbWU7CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3Rvci4KKyAgICAgKi8KKyAgICBwdWJsaWMgSUNVU2VydmljZSgpIHsKKyAgICAgICAgbmFtZSA9ICIiOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdCB3aXRoIGEgbmFtZSAodXNlZnVsIGZvciBkZWJ1Z2dpbmcpLgorICAgICAqLworICAgIHB1YmxpYyBJQ1VTZXJ2aWNlKFN0cmluZyBuYW1lKSB7CisgICAgICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogQWNjZXNzIHRvIGZhY3RvcmllcyBpcyBwcm90ZWN0ZWQgYnkgYSByZWFkLXdyaXRlIGxvY2suICBUaGlzIGlzCisgICAgICogdG8gYWxsb3cgbXVsdGlwbGUgdGhyZWFkcyB0byByZWFkIGNvbmN1cnJlbnRseSwgYnV0IGtlZXAKKyAgICAgKiBjaGFuZ2VzIHRvIHRoZSBmYWN0b3J5IGxpc3QgYXRvbWljIHdpdGggcmVzcGVjdCB0byBhbGwgcmVhZGVycy4gIAorICAgICAqLworICAgIHByaXZhdGUgZmluYWwgSUNVUldMb2NrIGZhY3RvcnlMb2NrID0gbmV3IElDVVJXTG9jaygpOworCisgICAgLyoqCisgICAgICogQWxsIHRoZSBmYWN0b3JpZXMgcmVnaXN0ZXJlZCB3aXRoIHRoaXMgc2VydmljZS4KKyAgICAgKi8KKyAgICBwcml2YXRlIGZpbmFsIExpc3QgZmFjdG9yaWVzID0gbmV3IEFycmF5TGlzdCgpOworCisgICAgLyoqCisgICAgICogS2V5cyBhcmUgdXNlZCB0byBjb21tdW5pY2F0ZSB3aXRoIGZhY3RvcmllcyB0byBnZW5lcmF0ZSBhbgorICAgICAqIGluc3RhbmNlIG9mIHRoZSBzZXJ2aWNlLiAgS2V5cyBkZWZpbmUgaG93IGlkcyBhcmUKKyAgICAgKiBjYW5vbmljYWxpemVkLCBwcm92aWRlIGJvdGggYSBjdXJyZW50IGlkIGFuZCBhIGN1cnJlbnQKKyAgICAgKiBkZXNjcmlwdG9yIHRvIHVzZSBpbiBxdWVyeWluZyB0aGUgY2FjaGUgYW5kIGZhY3RvcmllcywgYW5kCisgICAgICogZGV0ZXJtaW5lIHRoZSBmYWxsYmFjayBzdHJhdGVneS48L3A+CisgICAgICoKKyAgICAgKiA8cD5LZXlzIHByb3ZpZGUgYm90aCBhIGN1cnJlbnREZXNjcmlwdG9yIGFuZCBhIGN1cnJlbnRJRC4KKyAgICAgKiBUaGUgZGVzY3JpcHRvciBjb250YWlucyBhbiBvcHRpb25hbCBwcmVmaXgsIGZvbGxvd2VkIGJ5ICcvJworICAgICAqIGFuZCB0aGUgY3VycmVudElELiAgRmFjdG9yaWVzIHRoYXQgaGFuZGxlIGNvbXBsZXgga2V5cywKKyAgICAgKiBmb3IgZXhhbXBsZSBudW1iZXIgZm9ybWF0IGZhY3RvcmllcyB0aGF0IGdlbmVyYXRlIG11bHRpcGxlCisgICAgICoga2luZHMgb2YgZm9ybWF0dGVycyBmb3IgdGhlIHNhbWUgbG9jYWxlLCB1c2UgdGhlIGRlc2NyaXB0b3IgCisgICAgICogdG8gcHJvdmlkZSBhIGZ1bGx5IHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgc2VydmljZSBvYmplY3QsIAorICAgICAqIHdoaWxlIHVzaW5nIHRoZSBjdXJyZW50SUQgKGluIHRoaXMgY2FzZSwgdGhlIGxvY2FsZSBzdHJpbmcpLAorICAgICAqIGFzIHRoZSB2aXNpYmxlIElEcyB0aGF0IGNhbiBiZSBsb2NhbGl6ZWQuCisgICAgICoKKyAgICAgKiA8cD4gVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgS2V5IGhhcyBubyBmYWxsYmFja3MgYW5kCisgICAgICogaGFzIG5vIGN1c3RvbSBkZXNjcmlwdG9ycy48L3A+CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBLZXkgeworICAgICAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBpZDsKKworCS8qKgorCSAqIENvbnN0cnVjdCBhIGtleSBmcm9tIGFuIGlkLgorCSAqLworICAgICAgICBwdWJsaWMgS2V5KFN0cmluZyBpZCkgeworICAgICAgICAgICAgdGhpcy5pZCA9IGlkOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFJldHVybiB0aGUgb3JpZ2luYWwgSUQgdXNlZCB0byBjb25zdHJ1Y3QgdGhpcyBrZXkuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgZmluYWwgU3RyaW5nIGlkKCkgeworICAgICAgICAgICAgcmV0dXJuIGlkOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFJldHVybiB0aGUgY2Fub25pY2FsIHZlcnNpb24gb2YgdGhlIG9yaWdpbmFsIElELiAgVGhpcyBpbXBsZW1lbnRhdGlvbgorCSAqIHJldHVybnMgdGhlIG9yaWdpbmFsIElEIHVuY2hhbmdlZC4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBTdHJpbmcgY2Fub25pY2FsSUQoKSB7CisgICAgICAgICAgICByZXR1cm4gaWQ7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogUmV0dXJuIHRoZSAoY2Fub25pY2FsKSBjdXJyZW50IElELiAgVGhpcyBpbXBsZW1lbnRhdGlvbgorICAgICAgICAgKiByZXR1cm5zIHRoZSBjYW5vbmljYWwgSUQuICAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBTdHJpbmcgY3VycmVudElEKCkgeworICAgICAgICAgICAgcmV0dXJuIGNhbm9uaWNhbElEKCk7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogUmV0dXJuIHRoZSBjdXJyZW50IGRlc2NyaXB0b3IuICBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMKKyAgICAgICAgICogdGhlIGN1cnJlbnQgSUQuICBUaGUgY3VycmVudCBkZXNjcmlwdG9yIGlzIHVzZWQgdG8gZnVsbHkKKyAgICAgICAgICogaWRlbnRpZnkgYW4gaW5zdGFuY2Ugb2YgdGhlIHNlcnZpY2UgaW4gdGhlIGNhY2hlLiAgQQorICAgICAgICAgKiBmYWN0b3J5IG1heSBoYW5kbGUgYWxsIGRlc2NyaXB0b3JzIGZvciBhbiBJRCwgb3IganVzdCBhCisgICAgICAgICAqIHBhcnRpY3VsYXIgZGVzY3JpcHRvci4gIFRoZSBmYWN0b3J5IGNhbiBlaXRoZXIgcGFyc2UgdGhlCisgICAgICAgICAqIGRlc2NyaXB0b3Igb3IgdXNlIGN1c3RvbSBBUEkgb24gdGhlIGtleSBpbiBvcmRlciB0bworICAgICAgICAgKiBpbnN0YW50aWF0ZSB0aGUgc2VydmljZS4gIAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIFN0cmluZyBjdXJyZW50RGVzY3JpcHRvcigpIHsKKyAgICAgICAgICAgIHJldHVybiAiLyIgKyBjdXJyZW50SUQoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBJZiB0aGUga2V5IGhhcyBhIGZhbGxiYWNrLCBtb2RpZnkgdGhlIGtleSBhbmQgcmV0dXJuIHRydWUsCisgICAgICAgICAqIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuICBUaGUgY3VycmVudCBJRCB3aWxsIGNoYW5nZSBpZiB0aGVyZQorCSAqIGlzIGEgZmFsbGJhY2suICBObyBjdXJyZW50SURzIHNob3VsZCBiZSByZXBlYXRlZCwgYW5kIGZhbGxiYWNrCisJICogbXVzdCBldmVudHVhbGx5IHJldHVybiBmYWxzZS4gIFRoaXMgaW1wbG1lbnRhdGlvbiBoYXMgbm8gZmFsbGJhY2tzCisJICogYW5kIGFsd2F5cyByZXR1cm5zIGZhbHNlLgorCSAqLworICAgICAgICBwdWJsaWMgYm9vbGVhbiBmYWxsYmFjaygpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBJZiBhIGtleSBjcmVhdGVkIGZyb20gaWQgd291bGQgZXZlbnR1YWxseSBmYWxsYmFjayB0byBtYXRjaCB0aGUgCisgICAgICAgICAqIGNhbm9uaWNhbCBJRCBvZiB0aGlzIGtleSwgcmV0dXJuIHRydWUuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgYm9vbGVhbiBpc0ZhbGxiYWNrT2YoU3RyaW5nIGlkKSB7CisgICAgICAgICAgICByZXR1cm4gY2Fub25pY2FsSUQoKS5lcXVhbHMoaWQpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogRmFjdG9yaWVzIGdlbmVyYXRlIHRoZSBzZXJ2aWNlIG9iamVjdHMgbWFpbnRhaW5lZCBieSB0aGUKKyAgICAgKiBzZXJ2aWNlLiAgQSBmYWN0b3J5IGdlbmVyYXRlcyBhIHNlcnZpY2Ugb2JqZWN0IGZyb20gYSBrZXksCisgICAgICogdXBkYXRlcyBpZC0+ZmFjdG9yeSBtYXBwaW5ncywgYW5kIHJldHVybnMgdGhlIGRpc3BsYXkgbmFtZSBmb3IKKyAgICAgKiBhIHN1cHBvcnRlZCBpZC4gIAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgaW50ZXJmYWNlIEZhY3RvcnkgeworCisgICAgICAgIC8qKgorICAgICAgICAgKiBDcmVhdGUgYSBzZXJ2aWNlIG9iamVjdCBmcm9tIHRoZSBrZXksIGlmIHRoaXMgZmFjdG9yeQorICAgICAgICAgKiBzdXBwb3J0cyB0aGUga2V5LiAgT3RoZXJ3aXNlLCByZXR1cm4gbnVsbC4gIAorICAgICAgICAgKgorICAgICAgICAgKiA8cD5JZiB0aGUgZmFjdG9yeSBzdXBwb3J0cyB0aGUga2V5LCB0aGVuIGl0IGNhbiBjYWxsCisgICAgICAgICAqIHRoZSBzZXJ2aWNlJ3MgZ2V0S2V5KEtleSwgU3RyaW5nW10sIEZhY3RvcnkpIG1ldGhvZAorICAgICAgICAgKiBwYXNzaW5nIGl0c2VsZiBhcyB0aGUgZmFjdG9yeSB0byBnZXQgdGhlIG9iamVjdCB0aGF0CisgICAgICAgICAqIHRoZSBzZXJ2aWNlIHdvdWxkIGhhdmUgY3JlYXRlZCBwcmlvciB0byB0aGUgZmFjdG9yeSdzCisgICAgICAgICAqIHJlZ2lzdHJhdGlvbiB3aXRoIHRoZSBzZXJ2aWNlLiAgVGhpcyBjYW4gY2hhbmdlIHRoZQorICAgICAgICAgKiBrZXksIHNvIGFueSBpbmZvcm1hdGlvbiByZXF1aXJlZCBmcm9tIHRoZSBrZXkgc2hvdWxkCisgICAgICAgICAqIGJlIGV4dHJhY3RlZCBiZWZvcmUgbWFraW5nIHN1Y2ggYSBjYWxsYmFjay4KKwkgKi8KKyAgICAgICAgcHVibGljIE9iamVjdCBjcmVhdGUoS2V5IGtleSwgSUNVU2VydmljZSBzZXJ2aWNlKTsKKworCS8qKgorCSAqIFVwZGF0ZSB0aGUgcmVzdWx0IElEcyAobm90IGRlc2NyaXB0b3JzKSB0byByZWZsZWN0IHRoZSBJRHMKKyAgICAgICAgICogdGhpcyBmYWN0b3J5IGhhbmRsZXMuICBUaGlzIGZ1bmN0aW9uIGFuZCBnZXREaXNwbGF5TmFtZSBhcmUKKyAgICAgICAgICogdXNlZCB0byBzdXBwb3J0IElDVVNlcnZpY2UuZ2V0RGlzcGxheU5hbWVzLiAgQmFzaWNhbGx5LCB0aGUKKyAgICAgICAgICogZmFjdG9yeSBoYXMgdG8gZGV0ZXJtaW5lIHdoaWNoIElEcyBpdCB3aWxsIHBlcm1pdCB0byBiZQorICAgICAgICAgKiBhdmFpbGFibGUsIGFuZCBvZiB0aG9zZSwgd2hpY2ggaXQgd2lsbCBwcm92aWRlIGxvY2FsaXplZAorICAgICAgICAgKiBkaXNwbGF5IG5hbWVzIGZvci4gIEluIG1vc3QgY2FzZXMgdGhpcyByZWZsZWN0cyB0aGUgSURzIHRoYXQKKyAgICAgICAgICogdGhlIGZhY3RvcnkgZGlyZWN0bHkgc3VwcG9ydHMuCisgICAgICAgICAqLworCXB1YmxpYyB2b2lkIHVwZGF0ZVZpc2libGVJRHMoTWFwIHJlc3VsdCk7CisKKwkvKioKKwkgKiBSZXR1cm4gdGhlIGRpc3BsYXkgbmFtZSBmb3IgdGhpcyBpZCBpbiB0aGUgcHJvdmlkZWQgbG9jYWxlLgorCSAqIFRoaXMgaXMgYW4gbG9jYWxpemVkIGlkLCBub3QgYSBkZXNjcmlwdG9yLiAgSWYgdGhlIGlkIGlzIAorICAgICAgICAgKiBub3QgdmlzaWJsZSBvciBub3QgZGVmaW5lZCBieSB0aGUgZmFjdG9yeSwgcmV0dXJuIG51bGwuCisgICAgICAgICAqIElmIGxvY2FsZSBpcyBudWxsLCByZXR1cm4gaWQgdW5jaGFuZ2VkLgorCSAqLworCXB1YmxpYyBTdHJpbmcgZ2V0RGlzcGxheU5hbWUoU3RyaW5nIGlkLCBMb2NhbGUgbG9jYWxlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgZmFjdG9yeS4gIFRoaXMgcHJvdmlkZXMgZGVmYXVsdAorICAgICAqIGltcGxlbWVudGF0aW9ucyBmb3Igc3ViY2xhc3NlcywgYW5kIGltcGxlbWVudHMgYSBzaW5nbGV0b24KKyAgICAgKiBmYWN0b3J5IHRoYXQgbWF0Y2hlcyBhIHNpbmdsZSBpZCAgYW5kIHJldHVybnMgYSBzaW5nbGUKKyAgICAgKiAocG9zc2libHkgZGVmZXJyZWQtaW5pdGlhbGl6ZWQpIGluc3RhbmNlLiAgVGhpcyBpbXBsZW1lbnRzCisgICAgICogdXBkYXRlVmlzaWJsZUlEcyB0byBhZGQgYSBtYXBwaW5nIGZyb20gaXRzIElEIHRvIGl0c2VsZgorICAgICAqIGlmIHZpc2libGUgaXMgdHJ1ZSwgb3IgdG8gcmVtb3ZlIGFueSBleGlzdGluZyBtYXBwaW5nCisgICAgICogZm9yIGl0cyBJRCBpZiB2aXNpYmxlIGlzIGZhbHNlLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgU2ltcGxlRmFjdG9yeSBpbXBsZW1lbnRzIEZhY3RvcnkgeworCXByb3RlY3RlZCBPYmplY3QgaW5zdGFuY2U7CisJcHJvdGVjdGVkIFN0cmluZyBpZDsKKwlwcm90ZWN0ZWQgYm9vbGVhbiB2aXNpYmxlOworCisJLyoqCisJICogQ29udmVuaWVuY2UgY29uc3RydWN0b3IgdGhhdCBjYWxscyBTaW1wbGVGYWN0b3J5KE9iamVjdCwgU3RyaW5nLCBib29sZWFuKQorCSAqIHdpdGggdmlzaWJsZSB0cnVlLgorCSAqLworCXB1YmxpYyBTaW1wbGVGYWN0b3J5KE9iamVjdCBpbnN0YW5jZSwgU3RyaW5nIGlkKSB7CisJICAgIHRoaXMoaW5zdGFuY2UsIGlkLCB0cnVlKTsKKwl9CisKKwkvKioKKwkgKiBDb25zdHJ1Y3QgYSBzaW1wbGUgZmFjdG9yeSB0aGF0IG1hcHMgYSBzaW5nbGUgaWQgdG8gYSBzaW5nbGUgCisJICogc2VydmljZSBpbnN0YW5jZS4gIElmIHZpc2libGUgaXMgdHJ1ZSwgdGhlIGlkIHdpbGwgYmUgdmlzaWJsZS4KKwkgKiBOZWl0aGVyIHRoZSBpbnN0YW5jZSBub3IgdGhlIGlkIGNhbiBiZSBudWxsLgorCSAqLworCXB1YmxpYyBTaW1wbGVGYWN0b3J5KE9iamVjdCBpbnN0YW5jZSwgU3RyaW5nIGlkLCBib29sZWFuIHZpc2libGUpIHsKKwkgICAgaWYgKGluc3RhbmNlID09IG51bGwgfHwgaWQgPT0gbnVsbCkgeworCQl0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnN0YW5jZSBvciBpZCBpcyBudWxsIik7CisJICAgIH0KKwkgICAgdGhpcy5pbnN0YW5jZSA9IGluc3RhbmNlOworCSAgICB0aGlzLmlkID0gaWQ7CisJICAgIHRoaXMudmlzaWJsZSA9IHZpc2libGU7CisJfQorCisJLyoqCisJICogUmV0dXJuIHRoZSBzZXJ2aWNlIGluc3RhbmNlIGlmIHRoZSBmYWN0b3J5J3MgaWQgaXMgZXF1YWwgdG8KKyAgICAgICAgICogdGhlIGtleSdzIGN1cnJlbnRJRC4gIFNlcnZpY2UgaXMgaWdub3JlZC4KKwkgKi8KKwlwdWJsaWMgT2JqZWN0IGNyZWF0ZShLZXkga2V5LCBJQ1VTZXJ2aWNlIHNlcnZpY2UpIHsKKwkgICAgaWYgKGlkLmVxdWFscyhrZXkuY3VycmVudElEKCkpKSB7CisJCXJldHVybiBpbnN0YW5jZTsKKwkgICAgfQorCSAgICByZXR1cm4gbnVsbDsKKwl9CisKKwkvKioKKwkgKiBJZiB2aXNpYmxlLCBhZGRzIGEgbWFwcGluZyBmcm9tIGlkIC0+IHRoaXMgdG8gdGhlIHJlc3VsdCwgCisgICAgICAgICAqIG90aGVyd2lzZSByZW1vdmVzIGlkIGZyb20gcmVzdWx0LgorCSAqLworCXB1YmxpYyB2b2lkIHVwZGF0ZVZpc2libGVJRHMoTWFwIHJlc3VsdCkgeworCSAgICBpZiAodmlzaWJsZSkgeworICAgICAgICAgICAgICAgIHJlc3VsdC5wdXQoaWQsIHRoaXMpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXN1bHQucmVtb3ZlKGlkKTsKKyAgICAgICAgICAgIH0KKwl9CisKKwkvKioKKwkgKiBJZiB0aGlzLmlkIGVxdWFscyBpZCwgcmV0dXJucyBpZCByZWdhcmRsZXNzIG9mIGxvY2FsZSwKKwkgKiBvdGhlcndpc2UgcmV0dXJucyBudWxsLiAgKFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBoYXMKKwkgKiBubyBsb2NhbGl6ZWQgaWQgaW5mb3JtYXRpb24uKSAgCisgICAgICAgICAqLworCXB1YmxpYyBTdHJpbmcgZ2V0RGlzcGxheU5hbWUoU3RyaW5nIGlkLCBMb2NhbGUgbG9jYWxlKSB7CisJICAgIHJldHVybiAodmlzaWJsZSAmJiB0aGlzLmlkLmVxdWFscyhpZCkpID8gaWQgOiBudWxsOworCX0KKworICAgICAgICAvKioKKyAgICAgICAgICogRm9yIGRlYnVnZ2luZy4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgICAgICBTdHJpbmdCdWZmZXIgYnVmID0gbmV3IFN0cmluZ0J1ZmZlcihzdXBlci50b1N0cmluZygpKTsKKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIiwgaWQ6ICIpOworICAgICAgICAgICAgYnVmLmFwcGVuZChpZCk7CisgICAgICAgICAgICBidWYuYXBwZW5kKCIsIHZpc2libGU6ICIpOworICAgICAgICAgICAgYnVmLmFwcGVuZCh2aXNpYmxlKTsKKyAgICAgICAgICAgIHJldHVybiBidWYudG9TdHJpbmcoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlbmllbmNlIG92ZXJyaWRlIGZvciBnZXQoU3RyaW5nLCBTdHJpbmdbXSkuIFRoaXMgdXNlcworICAgICAqIGNyZWF0ZUtleSB0byBjcmVhdGUgYSBrZXkgZm9yIHRoZSBwcm92aWRlZCBkZXNjcmlwdG9yLgorICAgICAqLworICAgIHB1YmxpYyBPYmplY3QgZ2V0KFN0cmluZyBkZXNjcmlwdG9yKSB7CisJcmV0dXJuIGdldEtleShjcmVhdGVLZXkoZGVzY3JpcHRvciksIG51bGwpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlbmllbmNlIG92ZXJyaWRlIGZvciBnZXQoS2V5LCBTdHJpbmdbXSkuICBUaGlzIHVzZXMKKyAgICAgKiBjcmVhdGVLZXkgdG8gY3JlYXRlIGEga2V5IGZyb20gdGhlIHByb3ZpZGVkIGRlc2NyaXB0b3IuCisgICAgICovCisgICAgcHVibGljIE9iamVjdCBnZXQoU3RyaW5nIGRlc2NyaXB0b3IsIFN0cmluZ1tdIGFjdHVhbFJldHVybikgeworICAgICAgICBpZiAoZGVzY3JpcHRvciA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oImRlc2NyaXB0b3IgbXVzdCBub3QgYmUgbnVsbCIpOyAgICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIHJldHVybiBnZXRLZXkoY3JlYXRlS2V5KGRlc2NyaXB0b3IpLCBhY3R1YWxSZXR1cm4pOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlbmllbmNlIG92ZXJyaWRlIGZvciBnZXQoS2V5LCBTdHJpbmdbXSkuCisgICAgICovCisgICAgcHVibGljIE9iamVjdCBnZXRLZXkoS2V5IGtleSkgeworICAgICAgICByZXR1cm4gZ2V0S2V5KGtleSwgbnVsbCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogPHA+R2l2ZW4gYSBrZXksIHJldHVybiBhIHNlcnZpY2Ugb2JqZWN0LCBhbmQsIGlmIGFjdHVhbFJldHVybgorICAgICAqIGlzIG5vdCBudWxsLCB0aGUgZGVzY3JpcHRvciB3aXRoIHdoaWNoIGl0IHdhcyBmb3VuZCBpbiB0aGUKKyAgICAgKiBmaXJzdCBlbGVtZW50IG9mIGFjdHVhbFJldHVybi4gIElmIG5vIHNlcnZpY2Ugb2JqZWN0IG1hdGNoZXMKKyAgICAgKiB0aGlzIGtleSwgcmV0dXJuIG51bGwsIGFuZCBsZWF2ZSBhY3R1YWxSZXR1cm4gdW5jaGFuZ2VkLjwvcD4KKyAgICAgKgorICAgICAqIDxwPlRoaXMgcXVlcmllcyB0aGUgY2FjaGUgdXNpbmcgdGhlIGtleSdzIGRlc2NyaXB0b3IsIGFuZCBpZiBubworICAgICAqIG9iamVjdCBpbiB0aGUgY2FjaGUgbWF0Y2hlcyBpdCwgdHJpZXMgdGhlIGtleSBvbiBlYWNoCisgICAgICogcmVnaXN0ZXJlZCBmYWN0b3J5LCBpbiBvcmRlci4gIElmIG5vbmUgZ2VuZXJhdGVzIGEgc2VydmljZQorICAgICAqIG9iamVjdCBmb3IgdGhlIGtleSwgcmVwZWF0cyB0aGUgcHJvY2VzcyB3aXRoIGVhY2ggZmFsbGJhY2sgb2YKKyAgICAgKiB0aGUga2V5LCB1bnRpbCBlaXRoZXIgb25lIHJldHVybnMgYSBzZXJ2aWNlIG9iamVjdCwgb3IgdGhlIGtleQorICAgICAqIGhhcyBubyBmYWxsYmFjay48L3A+IAorICAgICAqCisgICAgICogPHA+SWYga2V5IGlzIG51bGwsIGp1c3QgcmV0dXJucyBudWxsLjwvcD4KKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0IGdldEtleShLZXkga2V5LCBTdHJpbmdbXSBhY3R1YWxSZXR1cm4pIHsKKyAgICAgICAgcmV0dXJuIGdldEtleShrZXksIGFjdHVhbFJldHVybiwgbnVsbCk7CisgICAgfQorCisgICAgCisgICAgcHVibGljIE9iamVjdCBnZXRLZXkoS2V5IGtleSwgU3RyaW5nW10gYWN0dWFsUmV0dXJuLCBGYWN0b3J5IGZhY3RvcnkpIHsKKwlpZiAoZmFjdG9yaWVzLnNpemUoKSA9PSAwKSB7CisJICAgIHJldHVybiBoYW5kbGVEZWZhdWx0KGtleSwgYWN0dWFsUmV0dXJuKTsKKwl9CisKKwlib29sZWFuIGRlYnVnID0gZmFsc2U7CisgICAgICAgIGlmIChkZWJ1ZykgU3lzdGVtLm91dC5wcmludGxuKCJTZXJ2aWNlOiAiICsgbmFtZSArICIga2V5OiAiICsga2V5KTsKKworCUNhY2hlRW50cnkgcmVzdWx0ID0gbnVsbDsKKwlpZiAoa2V5ICE9IG51bGwpIHsKKwkgICAgdHJ5IHsKKwkJLy8gVGhlIGZhY3RvcnkgbGlzdCBjYW4ndCBiZSBtb2RpZmllZCB1bnRpbCB3ZSdyZSBkb25lLCAKKwkJLy8gb3RoZXJ3aXNlIHdlIG1pZ2h0IHVwZGF0ZSB0aGUgY2FjaGUgd2l0aCBhbiBpbnZhbGlkIHJlc3VsdC4KKwkJLy8gVGhlIGNhY2hlIGhhcyB0byBzdGF5IGluIHN5bmNoIHdpdGggdGhlIGZhY3RvcnkgbGlzdC4KKwkJZmFjdG9yeUxvY2suYWNxdWlyZVJlYWQoKTsgCisKKwkJTWFwIGNhY2hlID0gbnVsbDsKKwkJU29mdFJlZmVyZW5jZSBjcmVmID0gY2FjaGVyZWY7IC8vIGNvcHkgc28gd2UgZG9uJ3QgbmVlZCB0byBzeW5jIG9uIHRoaXMgCisJCWlmIChjcmVmICE9IG51bGwpIHsKKwkJICAgIGNhY2hlID0gKE1hcCljcmVmLmdldCgpOworCQl9CisJCWlmIChjYWNoZSA9PSBudWxsKSB7CisJCSAgICAvLyBzeW5jaHJvbml6ZWQgc2luY2UgYWRkaXRpb25zIGFuZCBxdWVyaWVzIG9uIHRoZSBjYWNoZSBtdXN0IGJlIGF0b21pYworCQkgICAgLy8gdGhleSBjYW4gYmUgaW50ZXJsZWF2ZWQsIHRob3VnaAorCQkgICAgY2FjaGUgPSBDb2xsZWN0aW9ucy5zeW5jaHJvbml6ZWRNYXAobmV3IEhhc2hNYXAoKSk7CisJCSAgICBjcmVmID0gbmV3IFNvZnRSZWZlcmVuY2UoY2FjaGUpOworCQl9CisKKwkJU3RyaW5nIGN1cnJlbnREZXNjcmlwdG9yID0gbnVsbDsKKwkJQXJyYXlMaXN0IGNhY2hlRGVzY3JpcHRvckxpc3QgPSBudWxsOworCQlib29sZWFuIHB1dEluQ2FjaGUgPSBmYWxzZTsKKworICAgICAgICAgICAgICAgIGludCBORGVidWcgPSAwOworCisgICAgICAgICAgICAgICAgaW50IHN0YXJ0SW5kZXggPSAwOworICAgICAgICAgICAgICAgIGludCBsaW1pdCA9IGZhY3Rvcmllcy5zaXplKCk7CisgICAgICAgICAgICAgICAgYm9vbGVhbiBjYWNoZVJlc3VsdCA9IHRydWU7CisgICAgICAgICAgICAgICAgaWYgKGZhY3RvcnkgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxpbWl0OyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWN0b3J5ID09IGZhY3Rvcmllcy5nZXQoaSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydEluZGV4ID0gaSArIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0SW5kZXggPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoIkZhY3RvcnkgIiArIGZhY3RvcnkgKyAibm90IHJlZ2lzdGVyZWQgd2l0aCBzZXJ2aWNlOiAiICsgdGhpcyk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgY2FjaGVSZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisKKwkgICAgb3V0ZXI6CisJCWRvIHsKKwkJICAgIGN1cnJlbnREZXNjcmlwdG9yID0ga2V5LmN1cnJlbnREZXNjcmlwdG9yKCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChkZWJ1ZykgU3lzdGVtLm91dC5wcmludGxuKG5hbWUgKyAiWyIgKyBORGVidWcrKyArICJdIGxvb2tpbmcgZm9yOiAiICsgY3VycmVudERlc2NyaXB0b3IpOworCQkgICAgcmVzdWx0ID0gKENhY2hlRW50cnkpY2FjaGUuZ2V0KGN1cnJlbnREZXNjcmlwdG9yKTsKKwkJICAgIGlmIChyZXN1bHQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlYnVnKSBTeXN0ZW0ub3V0LnByaW50bG4obmFtZSArICIgZm91bmQgd2l0aCBkZXNjcmlwdG9yOiAiICsgY3VycmVudERlc2NyaXB0b3IpOworCQkJYnJlYWsgb3V0ZXI7CisJCSAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlYnVnKSBTeXN0ZW0ub3V0LnByaW50bG4oImRpZCBub3QgZmluZDogIiArIGN1cnJlbnREZXNjcmlwdG9yICsgIiBpbiBjYWNoZSIpOworICAgICAgICAgICAgICAgICAgICB9CisKKwkJICAgIC8vIGZpcnN0IHRlc3Qgb2YgY2FjaGUgZmFpbGVkLCBzbyB3ZSdsbCBoYXZlIHRvIHVwZGF0ZQorCQkgICAgLy8gdGhlIGNhY2hlIGlmIHdlIGV2ZW50dWFsbHkgc3VjY2VlZC0tIHRoYXQgaXMsIGlmIHdlJ3JlIAorICAgICAgICAgICAgICAgICAgICAvLyBnb2luZyB0byB1cGRhdGUgdGhlIGNhY2hlIGF0IGFsbC4KKwkJICAgIHB1dEluQ2FjaGUgPSBjYWNoZVJlc3VsdDsKKworICAgICAgICAgICAgICAgICAgICBpbnQgbiA9IDA7CisgICAgICAgICAgICAgICAgICAgIGludCBpbmRleCA9IHN0YXJ0SW5kZXg7CisJCSAgICB3aGlsZSAoaW5kZXggPCBsaW1pdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgRmFjdG9yeSBmID0gKEZhY3RvcnkpZmFjdG9yaWVzLmdldChpbmRleCsrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWJ1ZykgU3lzdGVtLm91dC5wcmludGxuKCJ0cnlpbmcgZmFjdG9yeVsiICsgKGluZGV4LTEpICsgIl0gIiArIGYudG9TdHJpbmcoKSk7CisJCQlPYmplY3Qgc2VydmljZSA9IGYuY3JlYXRlKGtleSwgdGhpcyk7CisJCQlpZiAoc2VydmljZSAhPSBudWxsKSB7CisJCQkgICAgcmVzdWx0ID0gbmV3IENhY2hlRW50cnkoY3VycmVudERlc2NyaXB0b3IsIHNlcnZpY2UpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWJ1ZykgU3lzdGVtLm91dC5wcmludGxuKG5hbWUgKyAiIGZhY3Rvcnkgc3VwcG9ydGVkOiAiICsgY3VycmVudERlc2NyaXB0b3IgKyAiLCBjYWNoaW5nIik7CisJCQkgICAgYnJlYWsgb3V0ZXI7CisJCQl9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWJ1ZykgU3lzdGVtLm91dC5wcmludGxuKCJmYWN0b3J5IGRpZCBub3Qgc3VwcG9ydDogIiArIGN1cnJlbnREZXNjcmlwdG9yKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKwkJICAgIH0KKworCQkgICAgLy8gcHJlcGFyZSB0byBsb2FkIHRoZSBjYWNoZSB3aXRoIGFsbCBhZGRpdGlvbmFsIGlkcyB0aGF0IAorCQkgICAgLy8gd2lsbCByZXNvbHZlIHRvIHJlc3VsdCwgYXNzdW1pbmcgd2UnbGwgc3VjY2VlZC4gIFdlCisJCSAgICAvLyBkb24ndCB3YW50IHRvIGtlZXAgcXVlcnlpbmcgb24gYW4gaWQgdGhhdCdzIGdvaW5nIHRvCisJCSAgICAvLyBmYWxsYmFjayB0byB0aGUgb25lIHRoYXQgc3VjY2VlZGVkLCB3ZSB3YW50IHRvIGhpdCB0aGUKKwkJICAgIC8vIGNhY2hlIHRoZSBmaXJzdCB0aW1lIG5leHQgZ29hcm91bmQuCisJCSAgICBpZiAoY2FjaGVEZXNjcmlwdG9yTGlzdCA9PSBudWxsKSB7CisJCQljYWNoZURlc2NyaXB0b3JMaXN0ID0gbmV3IEFycmF5TGlzdCg1KTsKKwkJICAgIH0KKwkJICAgIGNhY2hlRGVzY3JpcHRvckxpc3QuYWRkKGN1cnJlbnREZXNjcmlwdG9yKTsKKworCQl9IHdoaWxlIChrZXkuZmFsbGJhY2soKSk7CisKKwkJaWYgKHJlc3VsdCAhPSBudWxsKSB7CisJCSAgICBpZiAocHV0SW5DYWNoZSkgeworCQkJY2FjaGUucHV0KHJlc3VsdC5hY3R1YWxEZXNjcmlwdG9yLCByZXN1bHQpOworCQkJaWYgKGNhY2hlRGVzY3JpcHRvckxpc3QgIT0gbnVsbCkgeworCQkJICAgIEl0ZXJhdG9yIGl0ZXIgPSBjYWNoZURlc2NyaXB0b3JMaXN0Lml0ZXJhdG9yKCk7CisJCQkgICAgd2hpbGUgKGl0ZXIuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBkZXNjID0gKFN0cmluZylpdGVyLm5leHQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlYnVnKSBTeXN0ZW0ub3V0LnByaW50bG4obmFtZSArICIgYWRkaW5nIGRlc2NyaXB0b3I6ICciICsgZGVzYyArICInIGZvciBhY3R1YWw6ICciICsgcmVzdWx0LmFjdHVhbERlc2NyaXB0b3IgKyAiJyIpOworCisJCQkJY2FjaGUucHV0KGRlc2MsIHJlc3VsdCk7CisJCQkgICAgfQorCQkJfQorCQkJLy8gQXRvbWljIHVwZGF0ZS4gIFdlIGhlbGQgdGhlIHJlYWQgbG9jayBhbGwgdGhpcyB0aW1lCisJCQkvLyBzbyB3ZSBrbm93IG91ciBjYWNoZSBpcyBjb25zaXN0ZW50IHdpdGggdGhlIGZhY3RvcnkgbGlzdC4KKwkJCS8vIFdlIG1pZ2h0IHN0b21wIG92ZXIgYSBjYWNoZSB0aGF0IHNvbWUgb3RoZXIgdGhyZWFkIAorCQkJLy8gcmVidWlsdCwgYnV0IHRoYXQncyB0aGUgYnJlYWtzLiAgVGhleSdyZSBib3RoIGdvb2QuCisJCQljYWNoZXJlZiA9IGNyZWY7CisJCSAgICB9CisKKwkJICAgIGlmIChhY3R1YWxSZXR1cm4gIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RyaXAgbnVsbCBwcmVmaXgKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuYWN0dWFsRGVzY3JpcHRvci5pbmRleE9mKCIvIikgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbFJldHVyblswXSA9IHJlc3VsdC5hY3R1YWxEZXNjcmlwdG9yLnN1YnN0cmluZygxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsUmV0dXJuWzBdID0gcmVzdWx0LmFjdHVhbERlc2NyaXB0b3I7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisJCSAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRlYnVnKSBTeXN0ZW0ub3V0LnByaW50bG4oImZvdW5kIGluIHNlcnZpY2U6ICIgKyBuYW1lKTsKKworCQkgICAgcmV0dXJuIHJlc3VsdC5zZXJ2aWNlOworCQl9CisJICAgIH0KKwkgICAgZmluYWxseSB7CisJCWZhY3RvcnlMb2NrLnJlbGVhc2VSZWFkKCk7CisJICAgIH0KKwl9CisKKyAgICAgICAgaWYgKGRlYnVnKSBTeXN0ZW0ub3V0LnByaW50bG4oIm5vdCBmb3VuZCBpbiBzZXJ2aWNlOiAiICsgbmFtZSk7CisKKwlyZXR1cm4gaGFuZGxlRGVmYXVsdChrZXksIGFjdHVhbFJldHVybik7CisgICAgfQorICAgIHByaXZhdGUgU29mdFJlZmVyZW5jZSBjYWNoZXJlZjsKKyAgICAKKyAgICAvLyBSZWNvcmQgdGhlIGFjdHVhbCBpZCBmb3IgdGhpcyBzZXJ2aWNlIGluIHRoZSBjYWNoZSwgc28gd2UgY2FuIHJldHVybiBpdAorICAgIC8vIGV2ZW4gaWYgd2Ugc3VjY2VlZCBsYXRlciB3aXRoIGEgZGlmZmVyZW50IGlkLgorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNsYXNzIENhY2hlRW50cnkgeworCWZpbmFsIFN0cmluZyBhY3R1YWxEZXNjcmlwdG9yOworCWZpbmFsIE9iamVjdCBzZXJ2aWNlOworCUNhY2hlRW50cnkoU3RyaW5nIGFjdHVhbERlc2NyaXB0b3IsIE9iamVjdCBzZXJ2aWNlKSB7CisJICAgIHRoaXMuYWN0dWFsRGVzY3JpcHRvciA9IGFjdHVhbERlc2NyaXB0b3I7CisJICAgIHRoaXMuc2VydmljZSA9IHNlcnZpY2U7CisJfQorICAgIH0KKworCisgICAgLyoqCisgICAgICogRGVmYXVsdCBoYW5kbGVyIGZvciB0aGlzIHNlcnZpY2UgaWYgbm8gZmFjdG9yeSBpbiB0aGUgbGlzdAorICAgICAqIGhhbmRsZWQgdGhlIGtleS4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgT2JqZWN0IGhhbmRsZURlZmF1bHQoS2V5IGtleSwgU3RyaW5nW10gYWN0dWFsSURSZXR1cm4pIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29udmVuaWVuY2Ugb3ZlcnJpZGUgZm9yIGdldFZpc2libGVJRHMoU3RyaW5nKSB0aGF0IHBhc3NlcyBudWxsCisgICAgICogYXMgdGhlIGZhbGxiYWNrLCB0aHVzIHJldHVybmluZyBhbGwgdmlzaWJsZSBJRHMuCisgICAgICovCisgICAgcHVibGljIFNldCBnZXRWaXNpYmxlSURzKCkgeworICAgICAgICByZXR1cm4gZ2V0VmlzaWJsZUlEcyhudWxsKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiA8cD5SZXR1cm4gYSBzbmFwc2hvdCBvZiB0aGUgdmlzaWJsZSBJRHMgZm9yIHRoaXMgc2VydmljZS4gIFRoaXMKKyAgICAgKiBzZXQgd2lsbCBub3QgY2hhbmdlIGFzIEZhY3RvcmllcyBhcmUgYWRkZWQgb3IgcmVtb3ZlZCwgYnV0IHRoZQorICAgICAqIHN1cHBvcnRlZCBpZHMgd2lsbCwgc28gdGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgYWxsIGFuZCBvbmx5CisgICAgICogdGhlIGlkcyBpbiB0aGUgcmV0dXJuZWQgc2V0IGFyZSB2aXNpYmxlIGFuZCBzdXBwb3J0ZWQgYnkgdGhlCisgICAgICogc2VydmljZSBpbiBzdWJzZXF1ZW50IGNhbGxzLjwvcD4KKyAgICAgKgorICAgICAqIDxwPm1hdGNoSUQgaXMgcGFzc2VkIHRvIGNyZWF0ZUtleSB0byBjcmVhdGUgYSBrZXkuICBJZiB0aGUKKyAgICAgKiBrZXkgaXMgbm90IG51bGwsIGl0IGlzIHVzZWQgdG8gZmlsdGVyIG91dCBpZHMgdGhhdCBkb24ndCBoYXZlCisgICAgICogdGhlIGtleSBhcyBhIGZhbGxiYWNrLgorICAgICAqLworICAgIHB1YmxpYyBTZXQgZ2V0VmlzaWJsZUlEcyhTdHJpbmcgbWF0Y2hJRCkgeworICAgICAgICBTZXQgcmVzdWx0ID0gZ2V0VmlzaWJsZUlETWFwKCkua2V5U2V0KCk7CisKKyAgICAgICAgS2V5IGZhbGxiYWNrS2V5ID0gY3JlYXRlS2V5KG1hdGNoSUQpOworCisgICAgICAgIGlmIChmYWxsYmFja0tleSAhPSBudWxsKSB7CisgICAgICAgICAgICBTZXQgdGVtcCA9IG5ldyBIYXNoU2V0KHJlc3VsdC5zaXplKCkpOworICAgICAgICAgICAgSXRlcmF0b3IgaXRlciA9IHJlc3VsdC5pdGVyYXRvcigpOworICAgICAgICAgICAgd2hpbGUgKGl0ZXIuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIGlkID0gKFN0cmluZylpdGVyLm5leHQoKTsKKyAgICAgICAgICAgICAgICBpZiAoZmFsbGJhY2tLZXkuaXNGYWxsYmFja09mKGlkKSkgeworICAgICAgICAgICAgICAgICAgICB0ZW1wLmFkZChpZCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVzdWx0ID0gdGVtcDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhIG1hcCBmcm9tIHZpc2libGUgaWRzIHRvIGZhY3Rvcmllcy4gIAorICAgICAqLworICAgIHByaXZhdGUgTWFwIGdldFZpc2libGVJRE1hcCgpIHsKKyAgICAgICAgTWFwIGlkY2FjaGUgPSBudWxsOworCVNvZnRSZWZlcmVuY2UgcmVmID0gaWRyZWY7CisgICAgICAgIGlmIChyZWYgIT0gbnVsbCkgeworICAgICAgICAgICAgaWRjYWNoZSA9IChNYXApcmVmLmdldCgpOworICAgICAgICB9CisgICAgICAgIHdoaWxlIChpZGNhY2hlID09IG51bGwpIHsKKwkgICAgc3luY2hyb25pemVkICh0aGlzKSB7IC8vIG9yIGlkcmVmLW9ubHkgbG9jaz8KKwkJaWYgKHJlZiA9PSBpZHJlZiB8fCBpZHJlZiA9PSBudWxsKSB7CisJCSAgICAvLyBubyBvdGhlciB0aHJlYWQgdXBkYXRlZCBpZHJlZiBiZWZvcmUgd2UgZ290IHRoZSBsb2NrLCBzbworCQkgICAgLy8gZ3JhYiB0aGUgZmFjdG9yeSBsaXN0IGFuZCB1cGRhdGUgaXQgb3Vyc2VsdmVzCisJCSAgICB0cnkgeworCQkJZmFjdG9yeUxvY2suYWNxdWlyZVJlYWQoKTsKKwkJCWlkY2FjaGUgPSBuZXcgSGFzaE1hcCgpOworCQkJTGlzdEl0ZXJhdG9yIGxJdGVyID0gZmFjdG9yaWVzLmxpc3RJdGVyYXRvcihmYWN0b3JpZXMuc2l6ZSgpKTsKKwkJCXdoaWxlIChsSXRlci5oYXNQcmV2aW91cygpKSB7CisJCQkgICAgRmFjdG9yeSBmID0gKEZhY3RvcnkpbEl0ZXIucHJldmlvdXMoKTsKKwkJCSAgICBmLnVwZGF0ZVZpc2libGVJRHMoaWRjYWNoZSk7CisJCQl9CisJCQlpZGNhY2hlID0gQ29sbGVjdGlvbnMudW5tb2RpZmlhYmxlTWFwKGlkY2FjaGUpOworCQkJaWRyZWYgPSBuZXcgU29mdFJlZmVyZW5jZShpZGNhY2hlKTsKKwkJICAgIH0KKwkJICAgIGZpbmFsbHkgeworCQkJZmFjdG9yeUxvY2sucmVsZWFzZVJlYWQoKTsKKwkJICAgIH0KKwkJfSBlbHNlIHsKKwkJICAgIC8vIGFub3RoZXIgdGhyZWFkIHVwZGF0ZWQgaWRyZWYsIGJ1dCBnYyBtYXkgaGF2ZSBzdGVwcGVkCisJCSAgICAvLyBpbiBhbmQgdW5kb25lIGl0cyB3b3JrLCBsZWF2aW5nIGlkY2FjaGUgbnVsbC4gIElmIHNvLAorCQkgICAgLy8gcmV0cnkuCisJCSAgICByZWYgPSBpZHJlZjsKKwkJICAgIGlkY2FjaGUgPSAoTWFwKXJlZi5nZXQoKTsKKwkJfQorCSAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gaWRjYWNoZTsKKyAgICB9CisgICAgcHJpdmF0ZSBTb2Z0UmVmZXJlbmNlIGlkcmVmOworCisgICAgLyoqCisgICAgICogQ29udmVuaWVuY2Ugb3ZlcnJpZGUgZm9yIGdldERpc3BsYXlOYW1lKFN0cmluZywgTG9jYWxlKSB0aGF0CisgICAgICogdXNlcyB0aGUgY3VycmVudCBkZWZhdWx0IGxvY2FsZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIGdldERpc3BsYXlOYW1lKFN0cmluZyBpZCkgeworCXJldHVybiBnZXREaXNwbGF5TmFtZShpZCwgTG9jYWxlLmdldERlZmF1bHQoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2l2ZW4gYSB2aXNpYmxlIGlkLCByZXR1cm4gdGhlIGRpc3BsYXkgbmFtZSBpbiB0aGUgcmVxdWVzdGVkIGxvY2FsZS4KKyAgICAgKiBJZiB0aGVyZSBpcyBubyBkaXJlY3RseSBzdXBwb3J0ZWQgaWQgY29ycmVzcG9uZGluZyB0byB0aGlzIGlkLCByZXR1cm4KKyAgICAgKiBudWxsLgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgZ2V0RGlzcGxheU5hbWUoU3RyaW5nIGlkLCBMb2NhbGUgbG9jYWxlKSB7CisJTWFwIG0gPSBnZXRWaXNpYmxlSURNYXAoKTsKKwlGYWN0b3J5IGYgPSAoRmFjdG9yeSltLmdldChpZCk7CisJcmV0dXJuIGYgIT0gbnVsbCA/IGYuZ2V0RGlzcGxheU5hbWUoaWQsIGxvY2FsZSkgOiBudWxsOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlbmllbmNlIG92ZXJyaWRlIG9mIGdldERpc3BsYXlOYW1lcyhMb2NhbGUsIENvbXBhcmF0b3IsIFN0cmluZykgdGhhdCAKKyAgICAgKiB1c2VzIHRoZSBjdXJyZW50IGRlZmF1bHQgTG9jYWxlIGFzIHRoZSBsb2NhbGUsIHRoZSBkZWZhdWx0IGNvbGxhdG9yIGZvcgorICAgICAqIHRoZSBsb2NhbGUgYXMgdGhlIGNvbXBhcmF0b3IgdG8gc29ydCB0aGUgZGlzcGxheSBuYW1lcywgYW5kIG51bGwgZm9yCisgICAgICogdGhlIG1hdGNoSUQuCisgICAgICovCisgICAgcHVibGljIFNvcnRlZE1hcCBnZXREaXNwbGF5TmFtZXMoKSB7CisgICAgICAgIExvY2FsZSBsb2NhbGUgPSBMb2NhbGUuZ2V0RGVmYXVsdCgpOworICAgICAgICBDb2xsYXRvciBjb2wgPSBDb2xsYXRvci5nZXRJbnN0YW5jZShsb2NhbGUpOworCXJldHVybiBnZXREaXNwbGF5TmFtZXMobG9jYWxlLCBjb2wsIG51bGwpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlbmllbmNlIG92ZXJyaWRlIG9mIGdldERpc3BsYXlOYW1lcyhMb2NhbGUsIENvbXBhcmF0b3IsIFN0cmluZykgdGhhdAorICAgICAqIHVzZXMgdGhlIGRlZmF1bHQgY29sbGF0b3IgZm9yIHRoZSBsb2NhbGUgYXMgdGhlIGNvbXBhcmF0b3IgdG8KKyAgICAgKiBzb3J0IHRoZSBkaXNwbGF5IG5hbWVzLCBhbmQgbnVsbCBmb3IgdGhlIG1hdGNoSUQuCisgICAgICovCisgICAgcHVibGljIFNvcnRlZE1hcCBnZXREaXNwbGF5TmFtZXMoTG9jYWxlIGxvY2FsZSkgeworICAgICAgICBDb2xsYXRvciBjb2wgPSBDb2xsYXRvci5nZXRJbnN0YW5jZShsb2NhbGUpOworICAgICAgICByZXR1cm4gZ2V0RGlzcGxheU5hbWVzKGxvY2FsZSwgY29sLCBudWxsKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb252ZW5pZW5jZSBvdmVycmlkZSBvZiBnZXREaXNwbGF5TmFtZXMoTG9jYWxlLCBDb21wYXJhdG9yLCBTdHJpbmcpIHRoYXQKKyAgICAgKiB1c2VzIG51bGwgZm9yIHRoZSBtYXRjaElELCB0aHVzIHJldHVybmluZyBhbGwgZGlzcGxheSBuYW1lcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgU29ydGVkTWFwIGdldERpc3BsYXlOYW1lcyhMb2NhbGUgbG9jYWxlLCBDb21wYXJhdG9yIGNvbCkgeworICAgICAgICByZXR1cm4gZ2V0RGlzcGxheU5hbWVzKGxvY2FsZSwgY29sLCBudWxsKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb252ZW5pZW5jZSBvdmVycmlkZSBvZiBnZXREaXNwbGF5TmFtZXMoTG9jYWxlLCBDb21wYXJhdG9yLCBTdHJpbmcpIHRoYXQKKyAgICAgKiB1c2VzIHRoZSBkZWZhdWx0IGNvbGxhdG9yIGZvciB0aGUgbG9jYWxlIGFzIHRoZSBjb21wYXJhdG9yIHRvCisgICAgICogc29ydCB0aGUgZGlzcGxheSBuYW1lcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgU29ydGVkTWFwIGdldERpc3BsYXlOYW1lcyhMb2NhbGUgbG9jYWxlLCBTdHJpbmcgbWF0Y2hJRCkgeworICAgICAgICBDb2xsYXRvciBjb2wgPSBDb2xsYXRvci5nZXRJbnN0YW5jZShsb2NhbGUpOworICAgICAgICByZXR1cm4gZ2V0RGlzcGxheU5hbWVzKGxvY2FsZSwgY29sLCBtYXRjaElEKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSBzbmFwc2hvdCBvZiB0aGUgbWFwcGluZyBmcm9tIGRpc3BsYXkgbmFtZXMgdG8gdmlzaWJsZQorICAgICAqIElEcyBmb3IgdGhpcyBzZXJ2aWNlLiAgVGhpcyBzZXQgd2lsbCBub3QgY2hhbmdlIGFzIGZhY3RvcmllcworICAgICAqIGFyZSBhZGRlZCBvciByZW1vdmVkLCBidXQgdGhlIHN1cHBvcnRlZCBpZHMgd2lsbCwgc28gdGhlcmUgaXMKKyAgICAgKiBubyBndWFyYW50ZWUgdGhhdCBhbGwgYW5kIG9ubHkgdGhlIGlkcyBpbiB0aGUgcmV0dXJuZWQgbWFwIHdpbGwKKyAgICAgKiBiZSB2aXNpYmxlIGFuZCBzdXBwb3J0ZWQgYnkgdGhlIHNlcnZpY2UgaW4gc3Vic2VxdWVudCBjYWxscywKKyAgICAgKiBub3IgaXMgdGhlcmUgYW55IGd1YXJhbnRlZSB0aGF0IHRoZSBjdXJyZW50IGRpc3BsYXkgbmFtZXMgbWF0Y2gKKyAgICAgKiB0aG9zZSBpbiB0aGUgc2V0LiAgVGhlIGRpc3BsYXkgbmFtZXMgYXJlIHNvcnRlZCBiYXNlZCBvbiB0aGUgCisgICAgICogY29tcGFyYXRvciBwcm92aWRlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgU29ydGVkTWFwIGdldERpc3BsYXlOYW1lcyhMb2NhbGUgbG9jYWxlLCBDb21wYXJhdG9yIGNvbCwgU3RyaW5nIG1hdGNoSUQpIHsKKyAgICAgICAgU29ydGVkTWFwIGRuY2FjaGUgPSBudWxsOworCUxvY2FsZVJlZiByZWYgPSBkbnJlZjsKKyAgICAgICAgaWYgKHJlZiAhPSBudWxsKSB7CisgICAgICAgICAgICBkbmNhY2hlID0gKFNvcnRlZE1hcClyZWYuZ2V0KGxvY2FsZSwgY29sKTsKKyAgICAgICAgfQorCisgICAgICAgIHdoaWxlIChkbmNhY2hlID09IG51bGwpIHsKKwkgICAgc3luY2hyb25pemVkICh0aGlzKSB7CisJCWlmIChyZWYgPT0gZG5yZWYgfHwgZG5yZWYgPT0gbnVsbCkgeworCQkgICAgZG5jYWNoZSA9IG5ldyBUcmVlTWFwKGNvbCk7IC8vIHNvcnRlZAorCQkgICAgCisJCSAgICBNYXAgbSA9IGdldFZpc2libGVJRE1hcCgpOworCQkgICAgSXRlcmF0b3IgZWkgPSBtLmVudHJ5U2V0KCkuaXRlcmF0b3IoKTsKKwkJICAgIHdoaWxlIChlaS5oYXNOZXh0KCkpIHsKKwkJCUVudHJ5IGUgPSAoRW50cnkpZWkubmV4dCgpOworCQkJU3RyaW5nIGlkID0gKFN0cmluZyllLmdldEtleSgpOworCQkJRmFjdG9yeSBmID0gKEZhY3RvcnkpZS5nZXRWYWx1ZSgpOworCQkJZG5jYWNoZS5wdXQoZi5nZXREaXNwbGF5TmFtZShpZCwgbG9jYWxlKSwgaWQpOworCQkgICAgfQorCisJCSAgICBkbmNhY2hlID0gQ29sbGVjdGlvbnMudW5tb2RpZmlhYmxlU29ydGVkTWFwKGRuY2FjaGUpOworCQkgICAgZG5yZWYgPSBuZXcgTG9jYWxlUmVmKGRuY2FjaGUsIGxvY2FsZSwgY29sKTsKKwkJfSBlbHNlIHsKKwkJICAgIHJlZiA9IGRucmVmOworCQkgICAgZG5jYWNoZSA9IHJlZi5nZXQobG9jYWxlLCBjb2wpOworCQl9CisJICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIEtleSBtYXRjaEtleSA9IGNyZWF0ZUtleShtYXRjaElEKTsKKyAgICAgICAgaWYgKG1hdGNoS2V5ID09IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBkbmNhY2hlOworICAgICAgICB9CisKKyAgICAgICAgU29ydGVkTWFwIHJlc3VsdCA9IG5ldyBUcmVlTWFwKGRuY2FjaGUpOworICAgICAgICBJdGVyYXRvciBpdGVyID0gcmVzdWx0LmVudHJ5U2V0KCkuaXRlcmF0b3IoKTsKKyAgICAgICAgd2hpbGUgKGl0ZXIuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICBFbnRyeSBlID0gKEVudHJ5KWl0ZXIubmV4dCgpOworICAgICAgICAgICAgaWYgKCFtYXRjaEtleS5pc0ZhbGxiYWNrT2YoKFN0cmluZyllLmdldFZhbHVlKCkpKSB7CisgICAgICAgICAgICAgICAgaXRlci5yZW1vdmUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8vIHdlIGRlZmluZSBhIGNsYXNzIHNvIHdlIGdldCBhdG9taWMgc2ltdWx0YW5lb3VzIGFjY2VzcyB0byB0aGUgCisgICAgLy8gbG9jYWxlLCBjb21wYXJhdG9yLCBhbmQgY29ycmVzcG9uZGluZyBtYXAuCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgTG9jYWxlUmVmIHsKKwlwcml2YXRlIGZpbmFsIExvY2FsZSBsb2NhbGU7CisJcHJpdmF0ZSBTb2Z0UmVmZXJlbmNlIHJlZjsKKyAgICAgICAgcHJpdmF0ZSBDb21wYXJhdG9yIGNvbDsKKworCUxvY2FsZVJlZihNYXAgZG5DYWNoZSwgTG9jYWxlIGxvY2FsZSwgQ29tcGFyYXRvciBjb2wpIHsKKwkgICAgdGhpcy5sb2NhbGUgPSBsb2NhbGU7CisgICAgICAgICAgICB0aGlzLmNvbCA9IGNvbDsKKwkgICAgdGhpcy5yZWYgPSBuZXcgU29mdFJlZmVyZW5jZShkbkNhY2hlKTsKKwl9CisKKwlTb3J0ZWRNYXAgZ2V0KExvY2FsZSBsb2NhbGUsIENvbXBhcmF0b3IgY29sKSB7CisgICAgICAgICAgICBTb3J0ZWRNYXAgbSA9IChTb3J0ZWRNYXApcmVmLmdldCgpOworCSAgICBpZiAobSAhPSBudWxsICYmIAorICAgICAgICAgICAgICAgIHRoaXMubG9jYWxlLmVxdWFscyhsb2NhbGUpICYmCisgICAgICAgICAgICAgICAgKHRoaXMuY29sID09IGNvbCB8fCAodGhpcy5jb2wgIT0gbnVsbCAmJiB0aGlzLmNvbC5lcXVhbHMoY29sKSkpKSB7CisKKyAgICAgICAgICAgICAgICByZXR1cm4gbTsKKwkgICAgfQorCSAgICByZXR1cm4gbnVsbDsKKwl9CisgICAgfQorICAgIHByaXZhdGUgTG9jYWxlUmVmIGRucmVmOworCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgc25hcHNob3Qgb2YgdGhlIGN1cnJlbnRseSByZWdpc3RlcmVkIGZhY3Rvcmllcy4gIFRoZXJlCisgICAgICogaXMgbm8gZ3VhcmFudGVlIHRoYXQgdGhlIGxpc3Qgd2lsbCBzdGlsbCBtYXRjaCB0aGUgY3VycmVudAorICAgICAqIGZhY3RvcnkgbGlzdCBvZiB0aGUgc2VydmljZSBzdWJzZXF1ZW50IHRvIHRoaXMgY2FsbC4gIAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBMaXN0IGZhY3RvcmllcygpIHsKKwl0cnkgeworCSAgICBmYWN0b3J5TG9jay5hY3F1aXJlUmVhZCgpOworCSAgICByZXR1cm4gbmV3IEFycmF5TGlzdChmYWN0b3JpZXMpOworCX0KKwlmaW5hbGx5eworCSAgICBmYWN0b3J5TG9jay5yZWxlYXNlUmVhZCgpOworCX0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBIGNvbnZlbmllbmNlIG92ZXJyaWRlIG9mIHJlZ2lzdGVyT2JqZWN0KE9iamVjdCwgU3RyaW5nLCBib29sZWFuKQorICAgICAqIHRoYXQgZGVmYXVsdHMgdmlzaWJsZSB0byB0cnVlLgorICAgICAqLworICAgIHB1YmxpYyBGYWN0b3J5IHJlZ2lzdGVyT2JqZWN0KE9iamVjdCBvYmosIFN0cmluZyBpZCkgeworICAgICAgICByZXR1cm4gcmVnaXN0ZXJPYmplY3Qob2JqLCBpZCwgdHJ1ZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVnaXN0ZXIgYW4gb2JqZWN0IHdpdGggdGhlIHByb3ZpZGVkIGlkLiAgVGhlIGlkIHdpbGwgYmUgCisgICAgICogY2Fub25pY2FsaXplZC4gIFRoZSBjYW5vbmljYWxpemVkIElEIHdpbGwgYmUgcmV0dXJuZWQgYnkKKyAgICAgKiBnZXRWaXNpYmxlSURzIGlmIHZpc2libGUgaXMgdHJ1ZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgRmFjdG9yeSByZWdpc3Rlck9iamVjdChPYmplY3Qgb2JqLCBTdHJpbmcgaWQsIGJvb2xlYW4gdmlzaWJsZSkgeworICAgICAgICBTdHJpbmcgY2Fub25pY2FsSUQgPSBjcmVhdGVLZXkoaWQpLmNhbm9uaWNhbElEKCk7CisJcmV0dXJuIHJlZ2lzdGVyRmFjdG9yeShuZXcgU2ltcGxlRmFjdG9yeShvYmosIGNhbm9uaWNhbElELCB2aXNpYmxlKSk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJlZ2lzdGVyIGEgRmFjdG9yeS4gIFJldHVybnMgdGhlIGZhY3RvcnkgaWYgdGhlIHNlcnZpY2UgYWNjZXB0cworICAgICAqIHRoZSBmYWN0b3J5LCBvdGhlcndpc2UgcmV0dXJucyBudWxsLiAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24KKyAgICAgKiBhY2NlcHRzIGFsbCBmYWN0b3JpZXMuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIEZhY3RvcnkgcmVnaXN0ZXJGYWN0b3J5KEZhY3RvcnkgZmFjdG9yeSkgeworICAgICAgICBpZiAoZmFjdG9yeSA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oKTsKKyAgICAgICAgfQorCXRyeSB7CisJICAgIGZhY3RvcnlMb2NrLmFjcXVpcmVXcml0ZSgpOworCSAgICBmYWN0b3JpZXMuYWRkKDAsIGZhY3RvcnkpOworCSAgICBjbGVhckNhY2hlcygpOworCX0KKwlmaW5hbGx5IHsKKwkgICAgZmFjdG9yeUxvY2sucmVsZWFzZVdyaXRlKCk7CisJfQorCW5vdGlmeUNoYW5nZWQoKTsKKwlyZXR1cm4gZmFjdG9yeTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBVbnJlZ2lzdGVyIGEgZmFjdG9yeS4gIFRoZSBmaXJzdCBtYXRjaGluZyByZWdpc3RlcmVkIGZhY3Rvcnkgd2lsbAorICAgICAqIGJlIHJlbW92ZWQgZnJvbSB0aGUgbGlzdC4gIFJldHVybnMgdHJ1ZSBpZiBhIG1hdGNoaW5nIGZhY3Rvcnkgd2FzCisgICAgICogcmVtb3ZlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgYm9vbGVhbiB1bnJlZ2lzdGVyRmFjdG9yeShGYWN0b3J5IGZhY3RvcnkpIHsKKwlpZiAoZmFjdG9yeSA9PSBudWxsKSB7CisJICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigpOworCX0KKworCWJvb2xlYW4gcmVzdWx0ID0gZmFsc2U7CisJdHJ5IHsKKwkgICAgZmFjdG9yeUxvY2suYWNxdWlyZVdyaXRlKCk7CisJICAgIGlmIChmYWN0b3JpZXMucmVtb3ZlKGZhY3RvcnkpKSB7CisJCXJlc3VsdCA9IHRydWU7CisJCWNsZWFyQ2FjaGVzKCk7CisJICAgIH0KKwl9CisJZmluYWxseSB7CisJICAgIGZhY3RvcnlMb2NrLnJlbGVhc2VXcml0ZSgpOworCX0KKworCWlmIChyZXN1bHQpIHsKKwkgICAgbm90aWZ5Q2hhbmdlZCgpOworCX0KKwlyZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlc2V0IHRoZSBzZXJ2aWNlIHRvIHRoZSBkZWZhdWx0IGZhY3Rvcmllcy4gIFRoZSBmYWN0b3J5CisgICAgICogbG9jayBpcyBhY3F1aXJlZCBhbmQgdGhlbiByZUluaXRpYWxpemVGYWN0b3JpZXMgaXMgY2FsbGVkLgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCB2b2lkIHJlc2V0KCkgeworCXRyeSB7CisJICAgIGZhY3RvcnlMb2NrLmFjcXVpcmVXcml0ZSgpOworCSAgICByZUluaXRpYWxpemVGYWN0b3JpZXMoKTsKKwkgICAgY2xlYXJDYWNoZXMoKTsKKwl9CisJZmluYWxseSB7CisJICAgIGZhY3RvcnlMb2NrLnJlbGVhc2VXcml0ZSgpOworCX0KKwlub3RpZnlDaGFuZ2VkKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVpbml0aWFsaXplIHRoZSBmYWN0b3J5IGxpc3QgdG8gaXRzIGRlZmF1bHQgc3RhdGUuICBCeSBkZWZhdWx0CisgICAgICogdGhpcyBjbGVhcnMgdGhlIGxpc3QuICBTdWJjbGFzc2VzIGNhbiBvdmVycmlkZSB0byBwcm92aWRlIG90aGVyCisgICAgICogZGVmYXVsdCBpbml0aWFsaXphdGlvbiBvZiB0aGUgZmFjdG9yeSBsaXN0LiAgU3ViY2xhc3NlcyBtdXN0CisgICAgICogbm90IGNhbGwgdGhpcyBtZXRob2QgZGlyZWN0bHksIGFzIGl0IG11c3Qgb25seSBiZSBjYWxsZWQgd2hpbGUKKyAgICAgKiBob2xkaW5nIHdyaXRlIGFjY2VzcyB0byB0aGUgZmFjdG9yeSBsaXN0LiAgCisgICAgICovCisgICAgcHJvdGVjdGVkIHZvaWQgcmVJbml0aWFsaXplRmFjdG9yaWVzKCkgeworCWZhY3Rvcmllcy5jbGVhcigpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSBzZXJ2aWNlIGlzIGluIGl0cyBkZWZhdWx0IHN0YXRlLiAgVGhlIGRlZmF1bHQKKyAgICAgKiBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIHRydWUgaWYgdGhlcmUgYXJlIG5vIGZhY3RvcmllcyByZWdpc3RlcmVkLgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGlzRGVmYXVsdCgpIHsKKyAgICAgICAgcmV0dXJuIGZhY3Rvcmllcy5zaXplKCkgPT0gMDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSBrZXkgZnJvbSBhbiBpZC4gIFRoaXMgY3JlYXRlcyBhIEtleSBpbnN0YW5jZS4KKyAgICAgKiBTdWJjbGFzc2VzIGNhbiBvdmVycmlkZSB0byBkZWZpbmUgbW9yZSB1c2VmdWwga2V5cyBhcHByb3ByaWF0ZQorICAgICAqIHRvIHRoZSBmYWN0b3JpZXMgdGhleSBhY2NlcHQuICBJZiBpZCBpcyBudWxsLCByZXR1cm5zIG51bGwuCisgICAgICovCisgICAgcHVibGljIEtleSBjcmVhdGVLZXkoU3RyaW5nIGlkKSB7CisgICAgICAgIHJldHVybiBpZCA9PSBudWxsID8gbnVsbCA6IG5ldyBLZXkoaWQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENsZWFyIGNhY2hlcyBtYWludGFpbmVkIGJ5IHRoaXMgc2VydmljZS4gIFN1YmNsYXNzZXMgY2FuCisgICAgICogb3ZlcnJpZGUgaWYgdGhleSBpbXBsZW1lbnQgYWRkaXRpb25hbCB0aGF0IG5lZWQgdG8gYmUgY2xlYXJlZAorICAgICAqIHdoZW4gdGhlIHNlcnZpY2UgY2hhbmdlcy4gU3ViY2xhc3NlcyBzaG91bGQgZ2VuZXJhbGx5IG5vdCBjYWxsCisgICAgICogdGhpcyBtZXRob2QgZGlyZWN0bHksIGFzIGl0IG11c3Qgb25seSBiZSBjYWxsZWQgd2hpbGUKKyAgICAgKiBzeW5jaHJvbml6ZWQgb24gdGhpcy4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgdm9pZCBjbGVhckNhY2hlcygpIHsKKwkvLyB3ZSBkb24ndCBzeW5jaHJvbml6ZSBvbiB0aGVzZSBiZWNhdXNlIG1ldGhvZHMgdGhhdCB1c2UgdGhlbQorCS8vIGNvcHkgYmVmb3JlIHVzZSwgYW5kIGNoZWNrIGZvciBjaGFuZ2VzIGlmIHRoZXkgbW9kaWZ5IHRoZQorCS8vIGNhY2hlcy4KKwljYWNoZXJlZiA9IG51bGw7CisJaWRyZWYgPSBudWxsOworCWRucmVmID0gbnVsbDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDbGVhcnMgb25seSB0aGUgc2VydmljZSBjYWNoZS4KKyAgICAgKiBUaGlzIGNhbiBiZSBjYWxsZWQgYnkgc3ViY2xhc3NlcyB3aGVuIGEgY2hhbmdlIGFmZmVjdHMgdGhlIHNlcnZpY2UKKyAgICAgKiBjYWNoZSBidXQgbm90IHRoZSBpZCBjYWNoZXMsIGUuZy4sIHdoZW4gdGhlIGRlZmF1bHQgbG9jYWxlIGNoYW5nZXMKKyAgICAgKiB0aGUgcmVzb2x1dGlvbiBvZiBpZHMgY2hhbmdlcywgYnV0IG5vdCB0aGUgdmlzaWJsZSBpZHMgdGhlbXNlbHZlcy4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgdm9pZCBjbGVhclNlcnZpY2VDYWNoZSgpIHsKKwljYWNoZXJlZiA9IG51bGw7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2VydmljZUxpc3RlbmVyIGlzIHRoZSBsaXN0ZW5lciB0aGF0IElDVVNlcnZpY2UgcHJvdmlkZXMgYnkgZGVmYXVsdC4KKyAgICAgKiBJQ1VTZXJ2aWNlIHdpbGwgbm90aWZpeSB0aGlzIGxpc3RlbmVyIHdoZW4gZmFjdG9yaWVzIGFyZSBhZGRlZCB0bworICAgICAqIG9yIHJlbW92ZWQgZnJvbSB0aGUgc2VydmljZS4gIFN1YmNsYXNzZXMgY2FuIHByb3ZpZGUKKyAgICAgKiBkaWZmZXJlbnQgbGlzdGVuZXIgaW50ZXJmYWNlcyB0aGF0IGV4dGVuZCBFdmVudExpc3RlbmVyLCBhbmQgbW9kaWZ5CisgICAgICogYWNjZXB0c0xpc3RlbmVyIGFuZCBub3RpZnlMaXN0ZW5lciBhcyBhcHByb3ByaWF0ZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludGVyZmFjZSBTZXJ2aWNlTGlzdGVuZXIgZXh0ZW5kcyBFdmVudExpc3RlbmVyIHsKKwlwdWJsaWMgdm9pZCBzZXJ2aWNlQ2hhbmdlZChJQ1VTZXJ2aWNlIHNlcnZpY2UpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSBsaXN0ZW5lciBpcyBhY2NlcHRlZDsgYnkgZGVmYXVsdCB0aGlzCisgICAgICogcmVxdWlyZXMgYSBTZXJ2aWNlTGlzdGVuZXIuICBTdWJjbGFzc2VzIGNhbiBvdmVycmlkZSB0byBhY2NlcHQKKyAgICAgKiBkaWZmZXJlbnQgbGlzdGVuZXJzLiAgCisgICAgICovCisgICAgcHJvdGVjdGVkIGJvb2xlYW4gYWNjZXB0c0xpc3RlbmVyKEV2ZW50TGlzdGVuZXIgbCkgeworCXJldHVybiBsIGluc3RhbmNlb2YgU2VydmljZUxpc3RlbmVyOworICAgIH0KKworICAgIC8qKgorICAgICAqIE5vdGlmeSB0aGUgbGlzdGVuZXIsIHdoaWNoIGJ5IGRlZmF1bHQgaXMgYSBTZXJ2aWNlTGlzdGVuZXIuCisgICAgICogU3ViY2xhc3NlcyBjYW4gb3ZlcnJpZGUgdG8gdXNlIGEgZGlmZmVyZW50IGxpc3RlbmVyLiAgCisgICAgICovCisgICAgcHJvdGVjdGVkIHZvaWQgbm90aWZ5TGlzdGVuZXIoRXZlbnRMaXN0ZW5lciBsKSB7CisJKChTZXJ2aWNlTGlzdGVuZXIpbCkuc2VydmljZUNoYW5nZWQodGhpcyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgc3RyaW5nIGRlc2NyaWJpbmcgdGhlIHN0YXRpc3RpY3MgZm9yIHRoaXMgc2VydmljZS4KKyAgICAgKiBUaGlzIGFsc28gcmVzZXRzIHRoZSBzdGF0aXN0aWNzLiBVc2VkIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuCisgICAgICovCisgICAgcHVibGljIFN0cmluZyBzdGF0cygpIHsKKwlJQ1VSV0xvY2suU3RhdHMgc3RhdHMgPSBmYWN0b3J5TG9jay5yZXNldFN0YXRzKCk7CisJaWYgKHN0YXRzICE9IG51bGwpIHsKKwkgICAgcmV0dXJuIHN0YXRzLnRvU3RyaW5nKCk7CisJfQorCXJldHVybiAibm8gc3RhdHMiOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgbmFtZSBvZiB0aGlzIHNlcnZpY2UuIFRoaXMgd2lsbCBiZSB0aGUgZW1wdHkgc3RyaW5nIGlmIG5vbmUgd2FzIGFzc2lnbmVkLgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpIHsKKyAgICAgICAgcmV0dXJuIG5hbWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIHN1cGVyLnRvU3RyaW5nLCBhcHBlbmRpbmcgdGhlIG5hbWUgaW4gY3VybHkgYnJhY2VzLgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgIHJldHVybiBzdXBlci50b1N0cmluZygpICsgInsiICsgbmFtZSArICJ9IjsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL0ludFRyaWUuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL0ludFRyaWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lOGU4YTczCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvSW50VHJpZS5qYXZhCkBAIC0wLDAgKzEsMjgwIEBACisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICoKKyogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9pbXBsL0ludFRyaWUuamF2YSx2ICQKKyogJERhdGU6IDIwMDIvMDkvMDYgMTk6MDQ6MDcgJAorKiAkUmV2aXNpb246IDEuOCAkCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKK3BhY2thZ2UgY29tLmlibS5pY3UuaW1wbDsKKworaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5EYXRhSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuVVRGMTY7CisKKy8qKgorICogVHJpZSBpbXBsZW1lbnRhdGlvbiB3aGljaCBzdG9yZXMgZGF0YSBpbiBpbnQsIDMyIGJpdHMuCisgKiBAYXV0aG9yIHN5bndlZQorICogQHNlZSBjb20uaWJtLmljdS51dGlsLlRyaWUKKyAqIEBzaW5jZSByZWxlYXNlIDIuMSwgSmFuIDAxIDIwMDIKKyAqLworcHVibGljIGNsYXNzIEludFRyaWUgZXh0ZW5kcyBUcmllCit7CisgICAgLy8gcHVibGljIGNvbnN0cnVjdG9ycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICogPHA+Q3JlYXRlcyBhIG5ldyBUcmllIHdpdGggdGhlIHNldHRpbmdzIGZvciB0aGUgdHJpZSBkYXRhLjwvcD4KKyAgICAqIDxwPlVuc2VyaWFsaXplIHRoZSAzMi1iaXQtYWxpZ25lZCBpbnB1dCBzdHJlYW0gYW5kIHVzZSB0aGUgZGF0YSBmb3IgdGhlIAorICAgICogdHJpZS48L3A+CisgICAgKiBAcGFyYW0gaW5wdXRTdHJlYW0gZmlsZSBpbnB1dCBzdHJlYW0gdG8gYSBJQ1UgZGF0YSBmaWxlLCBjb250YWluaW5nIAorICAgICogICAgICAgICAgICAgICAgICAgIHRoZSB0cmllCisgICAgKiBAcGFyYW0gZGF0YU1hbmlwdWxhdGUsIG9iamVjdCB3aGljaCBwcm92aWRlcyBtZXRob2RzIHRvIHBhcnNlIHRoZSBjaGFyIAorICAgICogICAgICAgICAgICAgICAgICAgICAgICBkYXRhCisgICAgKiBAZXhjZXB0aW9uIElPRXhjZXB0aW9uIHRocm93biB3aGVuIGRhdGEgcmVhZGluZyBmYWlscworICAgICogQGRyYWZ0IDIuMQorICAgICovCisgICAgcHVibGljIEludFRyaWUoSW5wdXRTdHJlYW0gaW5wdXRTdHJlYW0sIERhdGFNYW5pcHVsYXRlIGRhdGFtYW5pcHVsYXRlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93cyBJT0V4Y2VwdGlvbgorICAgIHsKKyAgICAgICAgc3VwZXIoaW5wdXRTdHJlYW0sIGRhdGFtYW5pcHVsYXRlKTsKKyAgICAgICAgaWYgKCFpc0ludFRyaWUoKSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGF0YSBnaXZlbiBkb2VzIG5vdCBiZWxvbmcgdG8gYSBpbnQgdHJpZS4iKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIHB1YmxpYyBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAqIEdldHMgdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29kZXBvaW50LgorICAgICogSWYgbm8gdmFsdWUgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb2RlcG9pbnQsIGEgZGVmYXVsdCB2YWx1ZSB3aWxsIGJlCisgICAgKiByZXR1cm5lZC4KKyAgICAqIEBwYXJhbSBjaCBjb2RlcG9pbnQKKyAgICAqIEByZXR1cm4gb2Zmc2V0IHRvIGRhdGEKKyAgICAqIEBkcmFmdCAyLjEKKyAgICAqLworICAgIHB1YmxpYyBmaW5hbCBpbnQgZ2V0Q29kZVBvaW50VmFsdWUoaW50IGNoKQorICAgIHsKKyAgICAgICAgaW50IG9mZnNldCA9IGdldENvZGVQb2ludE9mZnNldChjaCk7CisgICAgICAgIGlmIChvZmZzZXQgPiAwKSB7CisgICAgICAgICAgICByZXR1cm4gbV9kYXRhX1tvZmZzZXRdOworICAgICAgICB9CisgICAgICAgIHJldHVybiBtX2luaXRpYWxWYWx1ZV87CisgICAgfQorCisgICAgLyoqCisgICAgKiBHZXRzIHRoZSB2YWx1ZSB0byB0aGUgZGF0YSB3aGljaCB0aGlzIGxlYWQgc3Vycm9nYXRlIGNoYXJhY3RlciBwb2ludHMKKyAgICAqIHRvLgorICAgICogUmV0dXJuZWQgZGF0YSBtYXkgY29udGFpbiBmb2xkaW5nIG9mZnNldCBpbmZvcm1hdGlvbiBmb3IgdGhlIG5leHQKKyAgICAqIHRyYWlsaW5nIHN1cnJvZ2F0ZSBjaGFyYWN0ZXIuCisgICAgKiBUaGlzIG1ldGhvZCBkb2VzIG5vdCBndWFyYW50ZWUgY29ycmVjdCByZXN1bHRzIGZvciB0cmFpbCBzdXJyb2dhdGVzLgorICAgICogQHBhcmFtIGNoIGxlYWQgc3Vycm9nYXRlIGNoYXJhY3RlcgorICAgICogQHJldHVybiBkYXRhIHZhbHVlCisgICAgKiBAZHJhZnQgMi4xCisgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgaW50IGdldExlYWRWYWx1ZShjaGFyIGNoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZGF0YV9bZ2V0TGVhZE9mZnNldChjaCldOworICAgIH0KKworICAgIC8qKgorICAgICogR2V0IHRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIEJNUCBjb2RlIHBvaW50LgorICAgICogTGVhZCBzdXJyb2dhdGUgY29kZSBwb2ludHMgYXJlIHRyZWF0ZWQgYXMgbm9ybWFsIGNvZGUgcG9pbnRzLCB3aXRoCisgICAgKiB1bmZvbGRlZCB2YWx1ZXMgdGhhdCBtYXkgZGlmZmVyIGZyb20gZ2V0TGVhZFZhbHVlKCkgcmVzdWx0cy4KKyAgICAqIEBwYXJhbSBjaCB0aGUgaW5wdXQgQk1QIGNvZGUgcG9pbnQKKyAgICAqIEByZXR1cm4gdHJpZSBkYXRhIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUgQk1QIGNvZGVwb2ludAorICAgICogQGRyYWZ0IDIuMQorICAgICovCisgICAgcHVibGljIGZpbmFsIGludCBnZXRCTVBWYWx1ZShjaGFyIGNoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZGF0YV9bZ2V0Qk1QT2Zmc2V0KGNoKV07CisgICAgfQorCisgICAgLyoqCisgICAgKiBHZXQgdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBhIHBhaXIgb2Ygc3Vycm9nYXRlcy4KKyAgICAqIEBwYXJhbSBsZWFkIGEgbGVhZCBzdXJyb2dhdGUKKyAgICAqIEBwYXJhbSB0cmFpbCBhIHRyYWlsIHN1cnJvZ2F0ZQorICAgICogQHBhcmFtIHRyaWUgZGF0YSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIHN1cnJvZ2F0ZSBjaGFyYWN0ZXJzCisgICAgKiBAZHJhZnQgMi4xCisgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgaW50IGdldFN1cnJvZ2F0ZVZhbHVlKGNoYXIgbGVhZCwgY2hhciB0cmFpbCkKKyAgICB7CisgICAgICAgIGlmICghVVRGMTYuaXNMZWFkU3Vycm9nYXRlKGxlYWQpIHx8ICFVVEYxNi5pc1RyYWlsU3Vycm9nYXRlKHRyYWlsKSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAiQXJndW1lbnQgY2hhcmFjdGVycyBkbyBub3QgZm9ybSBhIHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVyIik7CisgICAgICAgIH0KKyAgICAgICAgLy8gZ2V0IGZvbGQgcG9zaXRpb24gZm9yIHRoZSBuZXh0IHRyYWlsIHN1cnJvZ2F0ZQorICAgICAgICBpbnQgb2Zmc2V0ID0gZ2V0U3Vycm9nYXRlT2Zmc2V0KGxlYWQsIHRyYWlsKTsKKworICAgICAgICAvLyBnZXQgdGhlIHJlYWwgZGF0YSBmcm9tIHRoZSBmb2xkZWQgbGVhZC90cmFpbCB1bml0cworICAgICAgICBpZiAob2Zmc2V0ID4gMCkgeworICAgICAgICAgICAgcmV0dXJuIG1fZGF0YV9bb2Zmc2V0XTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIHJldHVybiBtX2luaXRpYWxWYWx1ZV8gaWYgdGhlcmUgaXMgYW4gZXJyb3IKKyAgICAgICAgcmV0dXJuIG1faW5pdGlhbFZhbHVlXzsKKyAgICB9CisKKyAgICAvKioKKyAgICAqIEdldCBhIHZhbHVlIGZyb20gYSBmb2xkaW5nIG9mZnNldCAoZnJvbSB0aGUgdmFsdWUgb2YgYSBsZWFkIHN1cnJvZ2F0ZSkKKyAgICAqIGFuZCBhIHRyYWlsIHN1cnJvZ2F0ZS4KKyAgICAqIEBwYXJhbSBsZWFkdmFsdWUgdGhlIHZhbHVlIG9mIGEgbGVhZCBzdXJyb2dhdGUgdGhhdCBjb250YWlucyB0aGUKKyAgICAqICAgICAgICBmb2xkaW5nIG9mZnNldAorICAgICogQHBhcmFtIHRyYWlsIHN1cnJvZ2F0ZQorICAgICogQHJldHVybiB0cmllIGRhdGEgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSB0cmFpbCBjaGFyYWN0ZXIKKyAgICAqIEBkcmFmdCAyLjEKKyAgICAqLworICAgIHB1YmxpYyBmaW5hbCBpbnQgZ2V0VHJhaWxWYWx1ZShpbnQgbGVhZHZhbHVlLCBjaGFyIHRyYWlsKQorICAgIHsKKyAgICAgICAgaWYgKG1fZGF0YU1hbmlwdWxhdGVfID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBmaWVsZCBEYXRhTWFuaXB1bGF0ZSBpbiB0aGlzIFRyaWUgaXMgbnVsbCIpOworICAgICAgICB9CisgICAgICAgIGludCBvZmZzZXQgPSBtX2RhdGFNYW5pcHVsYXRlXy5nZXRGb2xkaW5nT2Zmc2V0KGxlYWR2YWx1ZSk7CisgICAgICAgIGlmIChvZmZzZXQgPiAwKSB7CisJICAgICAgICByZXR1cm4gbV9kYXRhX1tnZXRSYXdPZmZzZXQob2Zmc2V0LAorIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhcikodHJhaWwgJiBTVVJST0dBVEVfTUFTS18pKV07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1faW5pdGlhbFZhbHVlXzsKKyAgICB9CisgICAgCisJLyoqCisgICAgICogPHA+R2V0cyB0aGUgbGF0aW4gMSBmYXN0IHBhdGggdmFsdWUuPC9wPgorICAgICAqIDxwPk5vdGUgdGhpcyBvbmx5IHdvcmtzIGlmIGxhdGluIDEgY2hhcmFjdGVycyBoYXZlIHRoZWlyIG93biBsaW5lYXIgCisgICAgICogYXJyYXkuPC9wPgorICAgICAqIEBwYXJhbSBjaCBsYXRpbiAxIGNoYXJhY3RlcnMKKyAgICAgKiBAcmV0dXJuIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBsYXRpbiBjaGFyYWN0ZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgaW50IGdldExhdGluMUxpbmVhclZhbHVlKGNoYXIgY2gpIAorICAgIHsKKyAgICAJcmV0dXJuIG1fZGF0YV9bSU5ERVhfU1RBR0VfM19NQVNLXyArIDEgKyBjaF07CisgICAgfQorCisgICAgLyoqCisgICAgICogQ2hlY2tzIGlmIHRoZSBhcmd1bWVudCBUcmllIGhhcyB0aGUgc2FtZSBkYXRhIGFzIHRoaXMgVHJpZQorICAgICAqIEBwYXJhbSBvdGhlciBUcmllIHRvIGNoZWNrCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSBhcmd1bWVudCBUcmllIGhhcyB0aGUgc2FtZSBkYXRhIGFzIHRoaXMgVHJpZSwgZmFsc2UKKyAgICAgKiAgICAgICAgIG90aGVyd2lzZQorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb3RoZXIpIAorICAgIHsKKyAgICAgICAgYm9vbGVhbiByZXN1bHQgPSBzdXBlci5lcXVhbHMob3RoZXIpOworICAgICAgICBpZiAocmVzdWx0ICYmIG90aGVyIGluc3RhbmNlb2YgSW50VHJpZSkgeworICAgICAgICAgICAgSW50VHJpZSBvdGhlcnRyaWUgPSAoSW50VHJpZSlvdGhlcjsKKyAgICAgICAgICAgIGlmIChtX2luaXRpYWxWYWx1ZV8gIT0gb3RoZXJ0cmllLm1faW5pdGlhbFZhbHVlXworICAgICAgICAgICAgICAgIHx8ICFBcnJheXMuZXF1YWxzKG1fZGF0YV8sIG90aGVydHJpZS5tX2RhdGFfKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgLy8gcHJvdGVjdGVkIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICogPHA+UGFyc2VzIHRoZSBpbnB1dCBzdHJlYW0gYW5kIHN0b3JlcyBpdHMgdHJpZSBjb250ZW50IGludG8gYSBpbmRleCBhbmQKKyAgICAqIGRhdGEgYXJyYXk8L3A+CisgICAgKiBAcGFyYW0gaW5wdXRTdHJlYW0gZGF0YSBpbnB1dCBzdHJlYW0gY29udGFpbmluZyB0cmllIGRhdGEKKyAgICAqIEBleGNlcHRpb24gSU9FeGNlcHRpb24gdGhyb3duIHdoZW4gZGF0YSByZWFkaW5nIGZhaWxzCisgICAgKi8KKyAgICBwcm90ZWN0ZWQgZmluYWwgdm9pZCB1bnNlcmlhbGl6ZShJbnB1dFN0cmVhbSBpbnB1dFN0cmVhbSkgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uCisgICAgeworICAgICAgICBzdXBlci51bnNlcmlhbGl6ZShpbnB1dFN0cmVhbSk7CisgICAgICAgIC8vIG9uZSB1c2VkIGZvciBpbml0aWFsIHZhbHVlCisgICAgICAgIG1fZGF0YV8gICAgICAgICAgICAgICA9IG5ldyBpbnRbbV9kYXRhTGVuZ3RoX107CisgICAgICAgIERhdGFJbnB1dFN0cmVhbSBpbnB1dCA9IG5ldyBEYXRhSW5wdXRTdHJlYW0oaW5wdXRTdHJlYW0pOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fZGF0YUxlbmd0aF87IGkgKyspIHsKKyAgICAgICAgICAgIG1fZGF0YV9baV0gPSBpbnB1dC5yZWFkSW50KCk7CisgICAgICAgIH0KKyAgICAgICAgbV9pbml0aWFsVmFsdWVfID0gbV9kYXRhX1swXTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgKiBHZXRzIHRoZSBvZmZzZXQgdG8gdGhlIGRhdGEgd2hpY2ggdGhlIHN1cnJvZ2F0ZSBwYWlyIHBvaW50cyB0by4KKyAgICAqIEBwYXJhbSBsZWFkIGxlYWQgc3Vycm9nYXRlCisgICAgKiBAcGFyYW0gdHJhaWwgdHJhaWxpbmcgc3Vycm9nYXRlCisgICAgKiBAcmV0dXJuIG9mZnNldCB0byBkYXRhCisgICAgKiBAZHJhZnQgMi4xCisgICAgKi8KKyAgICBwcm90ZWN0ZWQgZmluYWwgaW50IGdldFN1cnJvZ2F0ZU9mZnNldChjaGFyIGxlYWQsIGNoYXIgdHJhaWwpCisgICAgeworICAgICAgICBpZiAobV9kYXRhTWFuaXB1bGF0ZV8gPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGZpZWxkIERhdGFNYW5pcHVsYXRlIGluIHRoaXMgVHJpZSBpcyBudWxsIik7CisgICAgICAgIH0KKyAgICAgICAgLy8gZ2V0IGZvbGQgcG9zaXRpb24gZm9yIHRoZSBuZXh0IHRyYWlsIHN1cnJvZ2F0ZQorICAgICAgICBpbnQgb2Zmc2V0ID0gbV9kYXRhTWFuaXB1bGF0ZV8uZ2V0Rm9sZGluZ09mZnNldChnZXRMZWFkVmFsdWUobGVhZCkpOworCisgICAgICAgIC8vIGdldCB0aGUgcmVhbCBkYXRhIGZyb20gdGhlIGZvbGRlZCBsZWFkL3RyYWlsIHVuaXRzCisgICAgICAgIGlmIChvZmZzZXQgPiAwKSB7CisgICAgICAgICAgICByZXR1cm4gZ2V0UmF3T2Zmc2V0KG9mZnNldCwgKGNoYXIpKHRyYWlsICYgU1VSUk9HQVRFX01BU0tfKSk7CisgICAgICAgIH0KKworICAgICAgICAvLyByZXR1cm4gLTEgaWYgdGhlcmUgaXMgYW4gZXJyb3IsIGluIHRoaXMgY2FzZSB3ZSByZXR1cm4gdGhlIGRlZmF1bHQKKyAgICAgICAgLy8gdmFsdWU6IG1faW5pdGlhbFZhbHVlXworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICogR2V0cyB0aGUgdmFsdWUgYXQgdGhlIGFyZ3VtZW50IGluZGV4LgorICAgICogRm9yIHVzZSBpbnRlcm5hbGx5IGluIGNvbS5pYm0uaWN1LnV0aWwuVHJpZUVudW1lcmF0aW9uLgorICAgICogQHBhcmFtIGluZGV4IHZhbHVlIGF0IGluZGV4IHdpbGwgYmUgcmV0cmlldmVkCisgICAgKiBAcmV0dXJuIDMyIGJpdCB2YWx1ZQorICAgICogQHNlZSBjb20uaWJtLmljdS51dGlsLlRyaWVFbnVtZXJhdGlvbgorICAgICogQGRyYWZ0IDIuMQorICAgICovCisgICAgcHJvdGVjdGVkIGZpbmFsIGludCBnZXRWYWx1ZShpbnQgaW5kZXgpCisgICAgeworICAgICAgcmV0dXJuIG1fZGF0YV9baW5kZXhdOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAqIEdldHMgdGhlIGRlZmF1bHQgaW5pdGlhbCB2YWx1ZQorICAgICogQHJldHVybiAzMiBiaXQgdmFsdWUgCisgICAgKiBAZHJhZnQgMi4xCisgICAgKi8KKyAgICBwcm90ZWN0ZWQgZmluYWwgaW50IGdldEluaXRpYWxWYWx1ZSgpCisgICAgeworICAgICAgICByZXR1cm4gbV9pbml0aWFsVmFsdWVfOworICAgIH0KKworICAgIC8vIHBhY2thZ2UgcHJpdmF0ZSBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgICogSW50ZXJuYWwgY29uc3RydWN0b3IgZm9yIGJ1aWxkZXIgdXNlCisgICAgICogQHBhcmFtIGluZGV4IHRoZSBpbmRleCBhcnJheSB0byBiZSBzbG90dGVkIGludG8gdGhpcyB0cmllCisgICAgICogQHBhcmFtIGRhdGEgdGhlIGRhdGEgYXJyYXkgdG8gYmUgc2xvdHRlZCBpbnRvIHRoaXMgdHJpZQorICAgICAqIEBwYXJhbSBpbml0aWFsdmFsdWUgdGhlIGluaXRpYWwgdmFsdWUgZm9yIHRoaXMgdHJpZQorICAgICAqIEBwYXJhbSBvcHRpb25zIHRyaWUgb3B0aW9ucyB0byB1c2UKKyAgICAgKiBAcGFyYW0gZGF0YW1hbmlwdWxhdGUgZm9sZGluZyBpbXBsZW1lbnRhdGlvbgorICAgICAqLworICAgIEludFRyaWUoY2hhciBpbmRleFtdLCBpbnQgZGF0YVtdLCBpbnQgaW5pdGlhbHZhbHVlLCBpbnQgb3B0aW9ucywKKyAgICAgICAgICAgIERhdGFNYW5pcHVsYXRlIGRhdGFtYW5pcHVsYXRlKQorICAgIHsKKyAgICAgICAgc3VwZXIoaW5kZXgsIG9wdGlvbnMsIGRhdGFtYW5pcHVsYXRlKTsKKyAgICAgICAgbV9pbmRleF8gPSBpbmRleDsKKyAgICAgICAgbV9kYXRhXyA9IGRhdGE7CisgICAgICAgIG1fZGF0YUxlbmd0aF8gPSBtX2RhdGFfLmxlbmd0aDsKKyAgICAgICAgbV9pbml0aWFsVmFsdWVfID0gaW5pdGlhbHZhbHVlOworICAgIH0KKyAgICAKKyAgICAvLyBwcml2YXRlIGRhdGEgbWVtYmVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgKiBEZWZhdWx0IHZhbHVlCisgICAgKi8KKyAgICBwcml2YXRlIGludCBtX2luaXRpYWxWYWx1ZV87CisgICAgLyoqCisgICAgKiBBcnJheSBvZiBjaGFyIGRhdGEKKyAgICAqLworICAgIHByaXZhdGUgaW50IG1fZGF0YV9bXTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9JbnRUcmllQnVpbGRlci5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvSW50VHJpZUJ1aWxkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTA4ZTA0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvSW50VHJpZUJ1aWxkZXIuamF2YQpAQCAtMCwwICsxLDUwOSBAQAorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAqCisqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9JbnRUcmllQnVpbGRlci5qYXZhLHYgJCAKKyogJERhdGU6IDIwMDIvMTAvMzEgMDE6MDk6MTggJCAKKyogJFJldmlzaW9uOiAxLjMgJAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LmltcGw7CisKK2ltcG9ydCBjb20uaWJtLmljdS5sYW5nLlVDaGFyYWN0ZXI7CitpbXBvcnQgamF2YS51dGlsLkFycmF5czsKKworLyoqCisgKiBCdWlsZGVyIGxhc3MgdG8gbWFuaXB1bGF0ZSBhbmQgZ2VuZXJhdGUgYSB0cmllLgorICogVGhpcyBpcyB1c2VmdWwgZm9yIElDVSBkYXRhIGluIHByaW1pdGl2ZSB0eXBlcy4KKyAqIFByb3ZpZGVzIGEgY29tcGFjdCB3YXkgdG8gc3RvcmUgaW5mb3JtYXRpb24gdGhhdCBpcyBpbmRleGVkIGJ5IFVuaWNvZGUgCisgKiB2YWx1ZXMsIHN1Y2ggYXMgY2hhcmFjdGVyIHByb3BlcnRpZXMsIHR5cGVzLCBrZXlib2FyZCB2YWx1ZXMsIGV0Yy4gVGhpcyBpcyAKKyAqIHZlcnkgdXNlZnVsIHdoZW4geW91IGhhdmUgYSBibG9jayBvZiBVbmljb2RlIGRhdGEgdGhhdCBjb250YWlucyBzaWduaWZpY2FudCAKKyAqIHZhbHVlcyB3aGlsZSB0aGUgcmVzdCBvZiB0aGUgVW5pY29kZSBkYXRhIGlzIHVudXNlZCBpbiB0aGUgYXBwbGljYXRpb24gb3IgCisgKiB3aGVuIHlvdSBoYXZlIGEgbG90IG9mIHJlZHVuZGFuY2UsIHN1Y2ggYXMgd2hlcmUgYWxsIDIxLDAwMCBIYW4gaWRlb2dyYXBocyAKKyAqIGhhdmUgdGhlIHNhbWUgdmFsdWUuICBIb3dldmVyLCBsb29rdXAgaXMgbXVjaCBmYXN0ZXIgdGhhbiBhIGhhc2ggdGFibGUuCisgKiBBIHRyaWUgb2YgYW55IHByaW1pdGl2ZSBkYXRhIHR5cGUgc2VydmVzIHR3byBwdXJwb3NlczoKKyAqIDxVTCB0eXBlID0gcm91bmQ+CisgKiAgICAgPExJPkZhc3QgYWNjZXNzIG9mIHRoZSBpbmRleGVkIHZhbHVlcy4KKyAqICAgICA8TEk+U21hbGxlciBtZW1vcnkgZm9vdHByaW50LgorICogPC9VTD4KKyAqIFRoaXMgaXMgYSBkaXJlY3QgcG9ydCBmcm9tIHRoZSBJQ1U0QyB2ZXJzaW9uCisgKiBAdmVyc2lvbiAgICAgICAgICAgICRSZXZpc2lvbjogMS4zICQKKyAqIEBhdXRob3IgICAgICAgICAgICAgU3luIFdlZSBRdWVrCisgKi8KK3B1YmxpYyBjbGFzcyBJbnRUcmllQnVpbGRlciBleHRlbmRzIFRyaWVCdWlsZGVyCit7CisJLy8gcHVibGljIGNvbnN0cnVjdG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkJCisJLyoqCisJICogQ29weSBjb25zdHJ1Y3RvcgorCSAqLworCXB1YmxpYyBJbnRUcmllQnVpbGRlcihJbnRUcmllQnVpbGRlciB0YWJsZSkKKyAgICB7CisgICAgCXN1cGVyKHRhYmxlKTsKKwkJbV9kYXRhXyA9IG5ldyBpbnRbbV9kYXRhQ2FwYWNpdHlfXTsKKyAgICAgICAgU3lzdGVtLmFycmF5Y29weSh0YWJsZS5tX2RhdGFfLCAwLCBtX2RhdGFfLCAwLCBtX2RhdGFMZW5ndGhfKTsKKyAgICAgICAgbV9pbml0aWFsVmFsdWVfID0gdGFibGUubV9pbml0aWFsVmFsdWVfOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgYnVpbGQgdGFibGUKKyAgICAgKiBAcGFyYW0gYWxpYXNkYXRhIGRhdGEgdG8gYmUgZmlsbGVkIGludG8gdGFibGUKKyAgICAgKiBAcGFyYW0gbWF4ZGF0YWxlbmd0aCBtYXhpbXVtIGRhdGEgbGVuZ3RoIGFsbG93ZWQgaW4gdGFibGUKKyAgICAgKiBAcGFyYW0gaW5pdGlhbHZhbHVlIGluaXRhbCBkYXRhIHZhbHVlCisgICAgICogQHBhcmFtIGxhdGluMWxpbmVhciBpcyBsYXRpbiAxIHRvIGJlIGxpbmVhcgorICAgICAqIEByZXR1cm4gdXBkYXRlZCB0YWJsZQorICAgICAqLworICAgIHB1YmxpYyBJbnRUcmllQnVpbGRlcihpbnQgYWxpYXNkYXRhW10sIGludCBtYXhkYXRhbGVuZ3RoLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluaXRpYWx2YWx1ZSwgYm9vbGVhbiBsYXRpbjFsaW5lYXIpIAorICAgIHsKKyAgICAJc3VwZXIoKTsKKyAgICAJaWYgKG1heGRhdGFsZW5ndGggPCBEQVRBX0JMT0NLX0xFTkdUSF8gfHwgKGxhdGluMWxpbmVhciAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIG1heGRhdGFsZW5ndGggPCAxMDI0KSkgeworCSAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBcmd1bWVudCBtYXhkYXRhbGVuZ3RoIGlzIHRvbyBzbWFsbCIpOworCSAgICB9CisJICAgIAorCSAgICBpZiAoYWxpYXNkYXRhICE9IG51bGwpIHsKKwkgICAgICAgIG1fZGF0YV8gPSBhbGlhc2RhdGE7CisJICAgIH0gCisJICAgIGVsc2UgeworCSAgICAgICAgbV9kYXRhXyA9IG5ldyBpbnRbbWF4ZGF0YWxlbmd0aF07CisJICAgIH0KKwkKKwkgICAgLy8gcHJlYWxsb2NhdGUgYW5kIHJlc2V0IHRoZSBmaXJzdCBkYXRhIGJsb2NrIChibG9jayBpbmRleCAwKQorCSAgICBpbnQgaiA9IERBVEFfQkxPQ0tfTEVOR1RIXzsKKwkKKwkgICAgaWYgKGxhdGluMWxpbmVhcikgeworCSAgICAgICAgLy8gcHJlYWxsb2NhdGUgYW5kIHJlc2V0IHRoZSBmaXJzdCBibG9jayAobnVtYmVyIDApIGFuZCBMYXRpbi0xIAorCSAgICAgICAgLy8gKFUrMDAwMC4uVSswMGZmKSBhZnRlciB0aGF0IG1hZGUgc3VyZSBhYm92ZSB0aGF0IAorCSAgICAgICAgLy8gbWF4RGF0YUxlbmd0aCA+PSAxMDI0CisJICAgICAgICAvLyBzZXQgaW5kZXhlcyB0byBwb2ludCB0byBjb25zZWN1dGl2ZSBkYXRhIGJsb2NrcworCSAgICAgICAgaW50IGkgPSAwOworCSAgICAgICAgZG8geworCSAgICAgICAgICAgIC8vIGRvIHRoaXMgYXQgbGVhc3QgZm9yIHRyaWUtPmluZGV4WzBdIGV2ZW4gaWYgdGhhdCBibG9jayBpcyAKKwkgICAgICAgICAgICAvLyBvbmx5IHBhcnRseSB1c2VkIGZvciBMYXRpbi0xCisJICAgICAgICAgICAgbV9pbmRleF9baSArK10gPSBqOworCSAgICAgICAgICAgIGogKz0gREFUQV9CTE9DS19MRU5HVEhfOworCSAgICAgICAgfSB3aGlsZSAoaSA8ICgyNTYgPj4gU0hJRlRfKSk7CisJICAgIH0KKwkKKyAgICAgICAgbV9kYXRhTGVuZ3RoXyA9IGo7CisJICAgIC8vIHJlc2V0IHRoZSBpbml0aWFsbHkgYWxsb2NhdGVkIGJsb2NrcyB0byB0aGUgaW5pdGlhbCB2YWx1ZQorICAgICAgICBBcnJheXMuZmlsbChtX2RhdGFfLCAwLCBtX2RhdGFMZW5ndGhfLCBpbml0aWFsdmFsdWUpOworCSAgICBtX2luaXRpYWxWYWx1ZV8gPSBpbml0aWFsdmFsdWU7CisJICAgIG1fZGF0YUNhcGFjaXR5XyA9IG1heGRhdGFsZW5ndGg7CisJICAgIG1faXNMYXRpbjFMaW5lYXJfID0gbGF0aW4xbGluZWFyOworCSAgICBtX2lzQ29tcGFjdGVkXyA9IGZhbHNlOworCX0KKworCS8vIHB1YmxpYyBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgCisgICAgLypwdWJsaWMgZmluYWwgdm9pZCBwcmludCgpCisgICAgeworICAgICAgICBpbnQgaSA9IDA7CisgICAgICAgIGludCBvbGR2YWx1ZSA9IG1faW5kZXhfW2ldOworICAgICAgICBpbnQgY291bnQgPSAwOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImluZGV4IGxlbmd0aCAiICsgbV9pbmRleExlbmd0aF8gCisgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iKTsKKyAgICAgICAgd2hpbGUgKGkgPCBtX2luZGV4TGVuZ3RoXykgeworICAgICAgICAgICAgaWYgKG1faW5kZXhfW2ldICE9IG9sZHZhbHVlKSB7CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJpbmRleCBoYXMgIiArIGNvdW50ICsgIiBjb3VudHMgb2YgIiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG9sZHZhbHVlKSk7CisgICAgICAgICAgICAgICAgY291bnQgPSAwOworICAgICAgICAgICAgICAgIG9sZHZhbHVlID0gbV9pbmRleF9baV07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb3VudCArKzsKKyAgICAgICAgICAgIGkgKys7CisgICAgICAgIH0KKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJpbmRleCBoYXMgIiArIGNvdW50ICsgIiBjb3VudHMgb2YgIiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICsgSW50ZWdlci50b0hleFN0cmluZyhvbGR2YWx1ZSkpOworICAgICAgICBpID0gMDsKKyAgICAgICAgb2xkdmFsdWUgPSBtX2RhdGFfW2ldOworICAgICAgICBjb3VudCA9IDA7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiZGF0YSBsZW5ndGggIiArIG1fZGF0YUxlbmd0aF8gCisgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iKTsKKyAgICAgICAgd2hpbGUgKGkgPCBtX2RhdGFMZW5ndGhfKSB7CisgICAgICAgICAgICBpZiAobV9kYXRhX1tpXSAhPSBvbGR2YWx1ZSkgeworICAgICAgICAgICAgICAgIGlmICgob2xkdmFsdWUgJiAweGYxMDAwMDAwKSA9PSAweGYxMDAwMDAwKSB7CisgICAgICAgICAgICAgICAgICAgIGludCB0ZW1wID0gb2xkdmFsdWUgJiAweGZmZmZmZjsgCisgICAgICAgICAgICAgICAgICAgIHRlbXAgKz0gMHgzMjA7CisgICAgICAgICAgICAgICAgICAgIG9sZHZhbHVlID0gMHhmMTAwMDAwMCB8IHRlbXA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICgob2xkdmFsdWUgJiAweGYyMDAwMDAwKSA9PSAweGYyMDAwMDAwKSB7CisgICAgICAgICAgICAgICAgICAgIGludCB0ZW1wID0gb2xkdmFsdWUgJiAweGZmZmZmZjsgCisgICAgICAgICAgICAgICAgICAgIHRlbXAgKz0gMHgxNGE7CisgICAgICAgICAgICAgICAgICAgIG9sZHZhbHVlID0gMHhmMjAwMDAwMCB8IHRlbXA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiZGF0YSBoYXMgIiArIGNvdW50ICsgIiBjb3VudHMgb2YgIiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG9sZHZhbHVlKSk7CisgICAgICAgICAgICAgICAgY291bnQgPSAwOworICAgICAgICAgICAgICAgIG9sZHZhbHVlID0gbV9kYXRhX1tpXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvdW50ICsrOworICAgICAgICAgICAgaSArKzsKKyAgICAgICAgfQorICAgICAgICBpZiAoKG9sZHZhbHVlICYgMHhmMTAwMDAwMCkgPT0gMHhmMTAwMDAwMCkgeworICAgICAgICAgICAgaW50IHRlbXAgPSBvbGR2YWx1ZSAmIDB4ZmZmZmZmOyAKKyAgICAgICAgICAgIHRlbXAgKz0gMHgzMjA7CisgICAgICAgICAgICBvbGR2YWx1ZSA9IDB4ZjEwMDAwMDAgfCB0ZW1wOworICAgICAgICB9CisgICAgICAgIGlmICgob2xkdmFsdWUgJiAweGYyMDAwMDAwKSA9PSAweGYyMDAwMDAwKSB7CisgICAgICAgICAgICBpbnQgdGVtcCA9IG9sZHZhbHVlICYgMHhmZmZmZmY7IAorICAgICAgICAgICAgdGVtcCArPSAweDE0YTsKKyAgICAgICAgICAgIG9sZHZhbHVlID0gMHhmMjAwMDAwMCB8IHRlbXA7CisgICAgICAgIH0KKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJkYXRhIGhhcyAiICsgY291bnQgKyAiIGNvdW50cyBvZiAiIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG9sZHZhbHVlKSk7CisgICAgfQorICAgICovICAgCisgICAgLyoqCisgICAgICogR2V0cyBhIDMyIGJpdCBkYXRhIGZyb20gdGhlIHRhYmxlIGRhdGEKKyAgICAgKiBAcGFyYW0gY2ggY29kZXBvaW50IHdoaWNoIGRhdGEgaXMgdG8gYmUgcmV0cmlldmVkCisgICAgICogQHJldHVybiB0aGUgMzIgYml0IGRhdGEKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldFZhbHVlKGludCBjaCkgCisgICAgeworICAgICAgICAvLyB2YWxpZCwgdW5jb21wYWN0ZWQgdHJpZSBhbmQgdmFsaWQgYz8KKyAgICAgICAgaWYgKG1faXNDb21wYWN0ZWRfIHx8IGNoID4gVUNoYXJhY3Rlci5NQVhfVkFMVUUgfHwgY2ggPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIAorICAgICAgICBpbnQgYmxvY2sgPSBtX2luZGV4X1tjaCA+PiBTSElGVF9dOworICAgICAgICByZXR1cm4gbV9kYXRhX1tNYXRoLmFicyhibG9jaykgKyAoY2ggJiBNQVNLXyldOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBTZXRzIGEgMzIgYml0IGRhdGEgaW4gdGhlIHRhYmxlIGRhdGEKKyAgICAgKiBAcGFyYW0gY2ggY29kZXBvaW50IHdoaWNoIGRhdGEgaXMgdG8gYmUgc2V0CisgICAgICogQHBhcmFtIHZhbHVlIHRvIHNldAorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgc2V0IGlzIHN1Y2Nlc3NmdWwsIG90aGVyd2lzZSAKKyAgICAgKiAgICAgICAgICAgICAgaWYgdGhlIHRhYmxlIGhhcyBiZWVuIGNvbXBhY3RlZCByZXR1cm4gZmFsc2UKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBzZXRWYWx1ZShpbnQgY2gsIGludCB2YWx1ZSkgCisgICAgeworICAgICAgICAvLyB2YWxpZCwgdW5jb21wYWN0ZWQgdHJpZSBhbmQgdmFsaWQgYz8gCisgICAgICAgIGlmIChtX2lzQ29tcGFjdGVkXyB8fCBjaCA+IFVDaGFyYWN0ZXIuTUFYX1ZBTFVFIHx8IGNoIDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgCisgICAgICAgIGludCBibG9jayA9IGdldERhdGFCbG9jayhjaCk7CisgICAgICAgIGlmIChibG9jayA8IDApIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIAorICAgICAgICBtX2RhdGFfW2Jsb2NrICsgKGNoICYgTUFTS18pXSA9IHZhbHVlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogU2VyaWFsaXplcyB0aGUgYnVpbGQgdGFibGUgd2l0aCAzMiBiaXQgZGF0YQorICAgICAqIEBwYXJhbSBkYXRhbWFuaXB1bGF0ZSBidWlsZGVyIHJhdyBmb2xkIG1ldGhvZCBpbXBsZW1lbnRhdGlvbgorICAgICAqIEBwYXJhbSB0cmllZGF0YW1hbmlwdWxhdGUgcmVzdWx0IHRyaWUgZm9sZCBtZXRob2QKKyAgICAgKiBAcmV0dXJuIGEgbmV3IHRyaWUKKyAgICAgKi8KKyAgICBwdWJsaWMgSW50VHJpZSBzZXJpYWxpemUoVHJpZUJ1aWxkZXIuRGF0YU1hbmlwdWxhdGUgZGF0YW1hbmlwdWxhdGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmllLkRhdGFNYW5pcHVsYXRlIHRyaWVkYXRhbWFuaXB1bGF0ZSkKKyAgICB7CisgICAgICAgIGlmIChkYXRhbWFuaXB1bGF0ZSA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJQYXJhbWV0ZXJzIGNhbiBub3QgYmUgbnVsbCIpOworICAgICAgICB9CisgICAgICAgIC8vIGZvbGQgYW5kIGNvbXBhY3QgaWYgbmVjZXNzYXJ5LCBhbHNvIGNoZWNrcyB0aGF0IGluZGV4TGVuZ3RoIGlzIAorICAgICAgICAvLyB3aXRoaW4gbGltaXRzIAorICAgICAgICBpZiAoIW1faXNDb21wYWN0ZWRfKSB7CisgICAgICAgICAgICAvLyBjb21wYWN0IG9uY2Ugd2l0aG91dCBvdmVybGFwIHRvIGltcHJvdmUgZm9sZGluZworICAgICAgICAgICAgY29tcGFjdChmYWxzZSk7CisgICAgICAgICAgICAvLyBmb2xkIHRoZSBzdXBwbGVtZW50YXJ5IHBhcnQgb2YgdGhlIGluZGV4IGFycmF5CisgICAgICAgICAgICBmb2xkKGRhdGFtYW5pcHVsYXRlKTsKKyAgICAgICAgICAgIC8vIGNvbXBhY3QgYWdhaW4gd2l0aCBvdmVybGFwIGZvciBtaW5pbXVtIGRhdGEgYXJyYXkgbGVuZ3RoCisgICAgICAgICAgICBjb21wYWN0KHRydWUpOworICAgICAgICAgICAgbV9pc0NvbXBhY3RlZF8gPSB0cnVlOworICAgICAgICB9CisgICAgICAgIC8vIGlzIGRhdGFMZW5ndGggd2l0aGluIGxpbWl0cz8gCisgICAgICAgIGlmIChtX2RhdGFMZW5ndGhfID49IE1BWF9EQVRBX0xFTkdUSF8pIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24oIkRhdGEgbGVuZ3RoIHRvbyBzbWFsbCIpOworICAgICAgICB9CisgICAgCisgICAgICAgIGNoYXIgaW5kZXhbXSA9IG5ldyBjaGFyW21faW5kZXhMZW5ndGhfXTsKKyAgICAgICAgaW50IGRhdGFbXSA9IG5ldyBpbnRbbV9kYXRhTGVuZ3RoX107CisgICAgICAgIC8vIHdyaXRlIHRoZSBpbmRleCAoc3RhZ2UgMSkgYXJyYXkgYW5kIHRoZSAzMi1iaXQgZGF0YSAoc3RhZ2UgMikgYXJyYXkKKyAgICAgICAgLy8gd3JpdGUgMTYtYml0IGluZGV4IHZhbHVlcyBzaGlmdGVkIHJpZ2h0IGJ5IElOREVYX1NISUZUXyAKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX2luZGV4TGVuZ3RoXzsgaSArKykgeworICAgICAgICAgICAgaW5kZXhbaV0gPSAoY2hhcikobV9pbmRleF9baV0gPj4+IElOREVYX1NISUZUXyk7CisgICAgICAgIH0KKyAgICAgICAgLy8gd3JpdGUgMzItYml0IGRhdGEgdmFsdWVzCisgICAgICAgIFN5c3RlbS5hcnJheWNvcHkobV9kYXRhXywgMCwgZGF0YSwgMCwgbV9kYXRhTGVuZ3RoXyk7CisgICAgICAgIAorICAgICAgICBpbnQgb3B0aW9ucyA9IFNISUZUXyB8IChJTkRFWF9TSElGVF8gPDwgT1BUSU9OU19JTkRFWF9TSElGVF8pOworICAgICAgICBvcHRpb25zIHw9IE9QVElPTlNfREFUQV9JU18zMl9CSVRfOworICAgICAgICBpZiAobV9pc0xhdGluMUxpbmVhcl8pIHsKKyAgICAgICAgICAgIG9wdGlvbnMgfD0gT1BUSU9OU19MQVRJTjFfSVNfTElORUFSXzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbmV3IEludFRyaWUoaW5kZXgsIGRhdGEsIG1faW5pdGlhbFZhbHVlXywgb3B0aW9ucywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmllZGF0YW1hbmlwdWxhdGUpOworICAgIH0KKyAgICAKKwkvLyBwdWJsaWMgZGF0YSBtZW1iZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJCQorCXByb3RlY3RlZCBpbnQgbV9kYXRhX1tdOworCXByb3RlY3RlZCBpbnQgbV9pbml0aWFsVmFsdWVfOyAgCisJCisJLy8gcHJpdmF0ZSBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgCisgICAgLyoqCisgICAgICogTm8gZXJyb3IgY2hlY2tpbmcgZm9yIGlsbGVnYWwgYXJndW1lbnRzLgorICAgICAqIEBwYXJhbSBjaCBjb2RlcG9pbnQgdG8gbG9vayBmb3IKKyAgICAgKiBAcmV0dXJuIC0xIGlmIG5vIG5ldyBkYXRhIGJsb2NrIGF2YWlsYWJsZSAob3V0IG9mIG1lbW9yeSBpbiBkYXRhIGFycmF5KQorICAgICAqLworICAgIHByaXZhdGUgaW50IGdldERhdGFCbG9jayhpbnQgY2gpIAorICAgIHsKKyAgICAgICAgY2ggPj49IFNISUZUXzsKKyAgICAgICAgaW50IGluZGV4VmFsdWUgPSBtX2luZGV4X1tjaF07CisgICAgICAgIGlmIChpbmRleFZhbHVlID4gMCkgeworICAgICAgICAgICAgcmV0dXJuIGluZGV4VmFsdWU7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgLy8gYWxsb2NhdGUgYSBuZXcgZGF0YSBibG9jaworICAgICAgICBpbnQgbmV3QmxvY2sgPSBtX2RhdGFMZW5ndGhfOworICAgICAgICBpbnQgbmV3VG9wID0gbmV3QmxvY2sgKyBEQVRBX0JMT0NLX0xFTkdUSF87CisgICAgICAgIGlmIChuZXdUb3AgPiBtX2RhdGFDYXBhY2l0eV8pIHsKKyAgICAgICAgICAgIC8vIG91dCBvZiBtZW1vcnkgaW4gdGhlIGRhdGEgYXJyYXkgCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgbV9kYXRhTGVuZ3RoXyA9IG5ld1RvcDsKKyAgICAgICAgbV9pbmRleF9bY2hdID0gbmV3QmxvY2s7CisgICAgCisgICAgICAgIC8vIGNvcHktb24td3JpdGUgZm9yIGEgYmxvY2sgZnJvbSBhIHNldFJhbmdlKCkKKyAgICAgICAgQXJyYXlzLmZpbGwobV9kYXRhXywgbmV3QmxvY2ssIG5ld0Jsb2NrICsgREFUQV9CTE9DS19MRU5HVEhfLCAKKyAgICAgICAgICAgICAgICAgICAgbV9pbml0aWFsVmFsdWVfKTsKKyAgICAgICAgcmV0dXJuIG5ld0Jsb2NrOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBDb21wYWN0IGEgZm9sZGVkIGJ1aWxkLXRpbWUgdHJpZS4KKyAgICAgKiBUaGUgY29tcGFjdGlvbgorICAgICAqIC0gcmVtb3ZlcyBibG9ja3MgdGhhdCBhcmUgaWRlbnRpY2FsIHdpdGggZWFybGllciBvbmVzCisgICAgICogLSBvdmVybGFwcyBhZGphY2VudCBibG9ja3MgYXMgbXVjaCBhcyBwb3NzaWJsZSAoaWYgb3ZlcmxhcCA9PSB0cnVlKQorICAgICAqIC0gbW92ZXMgYmxvY2tzIGluIHN0ZXBzIG9mIHRoZSBkYXRhIGdyYW51bGFyaXR5CisgICAgICoKKyAgICAgKiBJdCBkb2VzIG5vdAorICAgICAqIC0gdHJ5IHRvIG1vdmUgYW5kIG92ZXJsYXAgYmxvY2tzIHRoYXQgYXJlIG5vdCBhbHJlYWR5IGFkamFjZW50CisgICAgICogLSB0cnkgdG8gbW92ZSBhbmQgb3ZlcmxhcCBibG9ja3MgdGhhdCBvdmVybGFwIHdpdGggbXVsdGlwbGUgdmFsdWVzIGluIAorICAgICAqIHRoZSBvdmVybGFwIHJlZ2lvbgorICAgICAqIEBwYXJhbSBvdmVybGFwIGZsYWcKKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgY29tcGFjdChib29sZWFuIG92ZXJsYXApIAorICAgIHsKKyAgICAgICAgaWYgKG1faXNDb21wYWN0ZWRfKSB7CisgICAgICAgICAgICByZXR1cm47IC8vIG5vdGhpbmcgbGVmdCB0byBkbworICAgICAgICB9CisgICAgCisgICAgICAgIC8vIGNvbXBhY3Rpb24KKyAgICAgICAgLy8gaW5pdGlhbGl6ZSB0aGUgaW5kZXggbWFwIHdpdGggImJsb2NrIGlzIHVzZWQvdW51c2VkIiBmbGFncworICAgICAgICBmaW5kVW51c2VkQmxvY2tzKCk7CisgICAgICAgIAorICAgICAgICAvLyBpZiBMYXRpbi0xIGlzIHByZWFsbG9jYXRlZCBhbmQgbGluZWFyLCB0aGVuIGRvIG5vdCBjb21wYWN0IExhdGluLTEgCisgICAgICAgIC8vIGRhdGEKKyAgICAgICAgaW50IG92ZXJsYXBTdGFydCA9IERBVEFfQkxPQ0tfTEVOR1RIXzsKKyAgICAgICAgaWYgKG1faXNMYXRpbjFMaW5lYXJfICYmIFNISUZUXyA8PSA4KSB7CisgICAgICAgICAgICBvdmVybGFwU3RhcnQgKz0gMjU2OworICAgICAgICB9CisgICAgICAgCisgICAgICAgIGludCBuZXdTdGFydCA9IERBVEFfQkxPQ0tfTEVOR1RIXzsKKyAgICAgICAgaW50IHByZXZFbmQgPSBuZXdTdGFydCAtIDE7CisgICAgICAgIGZvciAoaW50IHN0YXJ0ID0gbmV3U3RhcnQ7IHN0YXJ0IDwgbV9kYXRhTGVuZ3RoXzspIHsKKyAgICAgICAgICAgIC8vIHN0YXJ0OiBpbmRleCBvZiBmaXJzdCBlbnRyeSBvZiBjdXJyZW50IGJsb2NrCisgICAgICAgICAgICAvLyBwcmV2RW5kOiBpbmRleCB0byBsYXN0IGVudHJ5IG9mIHByZXZpb3VzIGJsb2NrCisgICAgICAgICAgICAvLyBuZXdTdGFydDogaW5kZXggd2hlcmUgdGhlIGN1cnJlbnQgYmxvY2sgaXMgdG8gYmUgbW92ZWQKKyAgICAgICAgICAgIC8vIHNraXAgYmxvY2tzIHRoYXQgYXJlIG5vdCB1c2VkIAorICAgICAgICAgICAgaWYgKG1fbWFwX1tzdGFydCA+PiBTSElGVF9dIDwgMCkgeworICAgICAgICAgICAgICAgIC8vIGFkdmFuY2Ugc3RhcnQgdG8gdGhlIG5leHQgYmxvY2sgCisgICAgICAgICAgICAgICAgc3RhcnQgKz0gREFUQV9CTE9DS19MRU5HVEhfOworICAgICAgICAgICAgICAgIC8vIGxlYXZlIHByZXZFbmQgYW5kIG5ld1N0YXJ0IHdpdGggdGhlIHByZXZpb3VzIGJsb2NrIQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gc2VhcmNoIGZvciBhbiBpZGVudGljYWwgYmxvY2sKKyAgICAgICAgICAgIGlmIChzdGFydCA+PSBvdmVybGFwU3RhcnQpIHsKKyAgICAgICAgICAgICAgICBpbnQgaSA9IGZpbmRTYW1lRGF0YUJsb2NrKG1fZGF0YV8sIG5ld1N0YXJ0LCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxhcCA/IERBVEFfR1JBTlVMQVJJVFlfIDogREFUQV9CTE9DS19MRU5HVEhfKTsKKyAgICAgICAgICAgICAgICBpZiAoaSA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIGZvdW5kIGFuIGlkZW50aWNhbCBibG9jaywgc2V0IHRoZSBvdGhlciBibG9jaydzIGluZGV4IAorICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgYmxvY2sKKyAgICAgICAgICAgICAgICAgICAgbV9tYXBfW3N0YXJ0ID4+IFNISUZUX10gPSBpOworICAgICAgICAgICAgICAgICAgICAvLyBhZHZhbmNlIHN0YXJ0IHRvIHRoZSBuZXh0IGJsb2NrCisgICAgICAgICAgICAgICAgICAgIHN0YXJ0ICs9IERBVEFfQkxPQ0tfTEVOR1RIXzsKKyAgICAgICAgICAgICAgICAgICAgLy8gbGVhdmUgcHJldkVuZCBhbmQgbmV3U3RhcnQgd2l0aCB0aGUgcHJldmlvdXMgYmxvY2shCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIHNlZSBpZiB0aGUgYmVnaW5uaW5nIG9mIHRoaXMgYmxvY2sgY2FuIGJlIG92ZXJsYXBwZWQgd2l0aCB0aGUgCisgICAgICAgICAgICAvLyBlbmQgb2YgdGhlIHByZXZpb3VzIGJsb2NrCisgICAgICAgICAgICAvLyB4OiBmaXJzdCB2YWx1ZSBpbiB0aGUgY3VycmVudCBibG9jayAKKyAgICAgICAgICAgIGludCB4ID0gbV9kYXRhX1tzdGFydF07CisgICAgICAgICAgICBpbnQgaSA9IDA7CisgICAgICAgICAgICBpZiAoeCA9PSBtX2RhdGFfW3ByZXZFbmRdICYmIG92ZXJsYXAgJiYgc3RhcnQgPj0gb3ZlcmxhcFN0YXJ0KSAKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBvdmVybGFwIGJ5IGF0IGxlYXN0IG9uZQorICAgICAgICAgICAgICAgIGZvciAoaSA9IDE7IGkgPCBEQVRBX0JMT0NLX0xFTkdUSF8gCisgICAgICAgICAgICAgICAgICAgICAmJiB4ID09IG1fZGF0YV9bc3RhcnQgKyBpXSAKKyAgICAgICAgICAgICAgICAgICAgICYmIHggPT0gbV9kYXRhX1twcmV2RW5kIC0gaV07ICsrIGkpIAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB9CisgICAgCisgICAgICAgICAgICAgICAgLy8gb3ZlcmxhcCBieSBpLCByb3VuZGVkIGRvd24gZm9yIHRoZSBkYXRhIGJsb2NrIGdyYW51bGFyaXR5CisgICAgICAgICAgICAgICAgaSAmPSB+KERBVEFfR1JBTlVMQVJJVFlfIC0gMSk7CisgICAgICAgICAgICB9IAorICAgICAgICAgICAgaWYgKGkgPiAwKSB7CisgICAgICAgICAgICAgICAgLy8gc29tZSBvdmVybGFwCisgICAgICAgICAgICAgICAgbV9tYXBfW3N0YXJ0ID4+IFNISUZUX10gPSBuZXdTdGFydCAtIGk7CisgICAgICAgICAgICAgICAgLy8gbW92ZSB0aGUgbm9uLW92ZXJsYXBwaW5nIGluZGV4ZXMgdG8gdGhlaXIgbmV3IHBvc2l0aW9ucworICAgICAgICAgICAgICAgIHN0YXJ0ICs9IGk7CisgICAgICAgICAgICAgICAgZm9yIChpID0gREFUQV9CTE9DS19MRU5HVEhfIC0gaTsgaSA+IDA7IC0tIGkpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9kYXRhX1tuZXdTdGFydCArK10gPSBtX2RhdGFfW3N0YXJ0ICsrXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IAorICAgICAgICAgICAgZWxzZSBpZiAobmV3U3RhcnQgPCBzdGFydCkgeworICAgICAgICAgICAgICAgIC8vIG5vIG92ZXJsYXAsIGp1c3QgbW92ZSB0aGUgaW5kZXhlcyB0byB0aGVpciBuZXcgcG9zaXRpb25zCisgICAgICAgICAgICAgICAgbV9tYXBfW3N0YXJ0ID4+IFNISUZUX10gPSBuZXdTdGFydDsKKyAgICAgICAgICAgICAgICBmb3IgKGkgPSBEQVRBX0JMT0NLX0xFTkdUSF87IGkgPiAwOyAtLSBpKSB7CisgICAgICAgICAgICAgICAgICAgIG1fZGF0YV9bbmV3U3RhcnQgKytdID0gbV9kYXRhX1tzdGFydCArK107CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSAKKyAgICAgICAgICAgIGVsc2UgeyAvLyBubyBvdmVybGFwICYmIG5ld1N0YXJ0PT1zdGFydAorICAgICAgICAgICAgICAgIG1fbWFwX1tzdGFydCA+PiBTSElGVF9dID0gc3RhcnQ7CisgICAgICAgICAgICAgICAgbmV3U3RhcnQgKz0gREFUQV9CTE9DS19MRU5HVEhfOworICAgICAgICAgICAgICAgIHN0YXJ0ID0gbmV3U3RhcnQ7CisgICAgICAgICAgICB9CisgICAgCisgICAgICAgICAgICBwcmV2RW5kID0gbmV3U3RhcnQgLSAxOworICAgICAgICB9CisgICAgICAgIC8vIG5vdyBhZGp1c3QgdGhlIGluZGV4IChzdGFnZSAxKSB0YWJsZQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1faW5kZXhMZW5ndGhfOyArKyBpKSB7CisgICAgICAgICAgICBtX2luZGV4X1tpXSA9IG1fbWFwX1ttX2luZGV4X1tpXSA+Pj4gU0hJRlRfXTsKKyAgICAgICAgfQorICAgICAgICBtX2RhdGFMZW5ndGhfID0gbmV3U3RhcnQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogRmluZCB0aGUgc2FtZSBkYXRhIGJsb2NrCisgICAgICogQHBhcmFtIGRhdGEgYXJyYXkKKyAgICAgKiBAcGFyYW0gZGF0YUxlbmd0aAorICAgICAqIEBwYXJhbSBvdGhlckJsb2NrCisgICAgICogQHBhcmFtIHN0ZXAKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgZmluZFNhbWVEYXRhQmxvY2soaW50IGRhdGFbXSwgaW50IGRhdGFMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb3RoZXJCbG9jaywgaW50IHN0ZXApIAorICAgIHsKKyAgICAgICAgLy8gZW5zdXJlIHRoYXQgd2UgZG8gbm90IGV2ZW4gcGFydGlhbGx5IGdldCBwYXN0IGRhdGFMZW5ndGgKKyAgICAgICAgZGF0YUxlbmd0aCAtPSBEQVRBX0JMT0NLX0xFTkdUSF87CisKKyAgICAgICAgZm9yIChpbnQgYmxvY2sgPSAwOyBibG9jayA8PSBkYXRhTGVuZ3RoOyBibG9jayArPSBzdGVwKSB7CisgICAgICAgICAgICBpbnQgaSA9IDA7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgREFUQV9CTE9DS19MRU5HVEhfOyArKyBpKSB7CisgICAgICAgICAgICAgICAgaWYgKGRhdGFbYmxvY2sgKyBpXSAhPSBkYXRhW290aGVyQmxvY2sgKyBpXSkgeworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaSA9PSBEQVRBX0JMT0NLX0xFTkdUSF8pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gYmxvY2s7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBGb2xkIHRoZSBub3JtYWxpemF0aW9uIGRhdGEgZm9yIHN1cHBsZW1lbnRhcnkgY29kZSBwb2ludHMgaW50bworICAgICAqIGEgY29tcGFjdCBhcmVhIG9uIHRvcCBvZiB0aGUgQk1QLXBhcnQgb2YgdGhlIHRyaWUgaW5kZXgsCisgICAgICogd2l0aCB0aGUgbGVhZCBzdXJyb2dhdGVzIGluZGV4aW5nIHRoaXMgY29tcGFjdCBhcmVhLgorICAgICAqCisgICAgICogRHVwbGljYXRlIHRoZSBpbmRleCB2YWx1ZXMgZm9yIGxlYWQgc3Vycm9nYXRlczoKKyAgICAgKiBGcm9tIGluc2lkZSB0aGUgQk1QIGFyZWEsIHdoZXJlIHNvbWUgbWF5IGJlIG92ZXJyaWRkZW4gd2l0aCBmb2xkZWQgdmFsdWVzLAorICAgICAqIHRvIGp1c3QgYWZ0ZXIgdGhlIEJNUCBhcmVhLCB3aGVyZSB0aGV5IGNhbiBiZSByZXRyaWV2ZWQgZm9yCisgICAgICogY29kZSBwb2ludCBsb29rdXBzLgorICAgICAqIEBwYXJhbSBtYW5pcHVsYXRlIGZvbGQgaW1wbGVtZW50YXRpb24KKyAgICAgKi8KKyAgICBwcml2YXRlIGZpbmFsIHZvaWQgZm9sZChEYXRhTWFuaXB1bGF0ZSBtYW5pcHVsYXRlKSAKKyAgICB7CisgICAgICAgIGludCBsZWFkSW5kZXhlc1tdID0gbmV3IGludFtTVVJST0dBVEVfQkxPQ0tfQ09VTlRfXTsKKyAgICAgICAgaW50IGluZGV4W10gPSBtX2luZGV4XzsKKyAgICAgICAgLy8gY29weSB0aGUgbGVhZCBzdXJyb2dhdGUgaW5kZXhlcyBpbnRvIGEgdGVtcG9yYXJ5IGFycmF5CisgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoaW5kZXgsIDB4ZDgwMCA+PiBTSElGVF8sIGxlYWRJbmRleGVzLCAwLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICBTVVJST0dBVEVfQkxPQ0tfQ09VTlRfKTsKKyAgICAgICAgCisgICAgICAgIC8vIHRvIHByb3RlY3QgdGhlIGNvcGllZCBsZWFkIHN1cnJvZ2F0ZSB2YWx1ZXMsCisgICAgICAgIC8vIG1hcmsgYWxsIHRoZWlyIGluZGV4ZXMgYXMgcmVwZWF0IGJsb2NrcworICAgICAgICAvLyAoY2F1c2VzIGNvcHktb24td3JpdGUpCisgICAgICAgIGZvciAoY2hhciBjID0gMHhkODAwOyBjIDw9IDB4ZGJmZjsgKysgYykgeworICAgICAgICAgICAgaW50IGJsb2NrID0gaW5kZXhbYyA+PiBTSElGVF9dOworICAgICAgICAgICAgaWYgKGJsb2NrID4gMCkgeworICAgICAgICAgICAgICAgIGluZGV4W2MgPj4gU0hJRlRfXSA9LSBibG9jazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAKKyAgICAgICAgLy8gRm9sZCBzaWduaWZpY2FudCBpbmRleCB2YWx1ZXMgaW50byB0aGUgYXJlYSBqdXN0IGFmdGVyIHRoZSBCTVAgCisgICAgICAgIC8vIGluZGV4ZXMuCisgICAgICAgIC8vIEluIGNhc2UgdGhlIGZpcnN0IGxlYWQgc3Vycm9nYXRlIGhhcyBzaWduaWZpY2FudCBkYXRhLAorICAgICAgICAvLyBpdHMgaW5kZXggYmxvY2sgbXVzdCBiZSB1c2VkIGZpcnN0IChpbiB3aGljaCBjYXNlIHRoZSBmb2xkaW5nIGlzIGEgCisgICAgICAgIC8vIG5vLW9wKS4KKyAgICAgICAgLy8gTGF0ZXIgYWxsIGZvbGRlZCBpbmRleCBibG9ja3MgYXJlIG1vdmVkIHVwIG9uZSB0byBpbnNlcnQgdGhlIGNvcGllZAorICAgICAgICAvLyBsZWFkIHN1cnJvZ2F0ZSBpbmRleGVzLgorICAgICAgICBpbnQgaW5kZXhMZW5ndGggPSBCTVBfSU5ERVhfTEVOR1RIXzsKKyAgICAgICAgLy8gc2VhcmNoIGZvciBhbnkgaW5kZXggKHN0YWdlIDEpIGVudHJpZXMgZm9yIHN1cHBsZW1lbnRhcnkgY29kZSBwb2ludHMgCisgICAgICAgIGZvciAoaW50IGMgPSAweDEwMDAwOyBjIDwgMHgxMTAwMDA7KSB7CisgICAgICAgICAgICBpZiAoaW5kZXhbYyA+PiBTSElGVF9dICE9IDApIHsKKyAgICAgICAgICAgICAgICAvLyB0aGVyZSBpcyBkYXRhLCB0cmVhdCB0aGUgZnVsbCBibG9jayBmb3IgYSBsZWFkIHN1cnJvZ2F0ZQorICAgICAgICAgICAgICAgIGMgJj0gfjB4M2ZmOworICAgICAgICAgICAgICAgIC8vIGlzIHRoZXJlIGFuIGlkZW50aWNhbCBpbmRleCBibG9jaz8KKyAgICAgICAgICAgICAgICBpbnQgYmxvY2sgPSBmaW5kU2FtZUluZGV4QmxvY2soaW5kZXgsIGluZGV4TGVuZ3RoLCBjID4+IFNISUZUXyk7CisgICAgICAgICAgICAgICAgLy8gZ2V0IGEgZm9sZGVkIHZhbHVlIGZvciBbYy4uYysweDQwMFsgYW5kLCBpZiAwLCBzZXQgaXQgZm9yIAorICAgICAgICAgICAgICAgIC8vIHRoZSBsZWFkIHN1cnJvZ2F0ZSAKKyAgICAgICAgICAgICAgICBpbnQgdmFsdWUgPSBtYW5pcHVsYXRlLmdldEZvbGRlZFZhbHVlKGMsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2sgKyBTVVJST0dBVEVfQkxPQ0tfQ09VTlRfKTsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIXNldFZhbHVlKDB4ZDdjMCArIChjID4+IDEwKSwgdmFsdWUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBkYXRhIHRhYmxlIG92ZXJmbG93IAorICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRhdGEgdGFibGUgb3ZlcmZsb3ciKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAvLyBpZiB3ZSBkaWQgbm90IGZpbmQgYW4gaWRlbnRpY2FsIGluZGV4IGJsb2NrLi4uCisgICAgICAgICAgICAgICAgICAgIGlmIChibG9jayA9PSBpbmRleExlbmd0aCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gbW92ZSB0aGUgYWN0dWFsIGluZGV4IChzdGFnZSAxKSBlbnRyaWVzIGZyb20gdGhlIAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3VwcGxlbWVudGFyeSBwb3NpdGlvbiB0byB0aGUgbmV3IG9uZQorICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShpbmRleCwgYyA+PiBTSElGVF8sIGluZGV4LCBpbmRleExlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1VSUk9HQVRFX0JMT0NLX0NPVU5UXyk7CisgICAgICAgICAgICAgICAgICAgICAgICBpbmRleExlbmd0aCArPSBTVVJST0dBVEVfQkxPQ0tfQ09VTlRfOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGMgKz0gMHg0MDA7CisgICAgICAgICAgICB9IAorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYyArPSBEQVRBX0JMT0NLX0xFTkdUSF87CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIGluZGV4IGFycmF5IG92ZXJmbG93PworICAgICAgICAvLyBUaGlzIGlzIHRvIGd1YXJhbnRlZSB0aGF0IGEgZm9sZGluZyBvZmZzZXQgaXMgb2YgdGhlIGZvcm0KKyAgICAgICAgLy8gVVRSSUVfQk1QX0lOREVYX0xFTkdUSCtuKlVUUklFX1NVUlJPR0FURV9CTE9DS19DT1VOVCB3aXRoIG49MC4uMTAyMy4KKyAgICAgICAgLy8gSWYgdGhlIGluZGV4IGlzIHRvbyBsYXJnZSwgdGhlbiBuPj0xMDI0IGFuZCBtb3JlIHRoYW4gMTAgYml0cyBhcmUgCisgICAgICAgIC8vIG5lY2Vzc2FyeS4KKyAgICAgICAgLy8gSW4gZmFjdCwgaXQgY2FuIG9ubHkgZXZlciBiZWNvbWUgbj09MTAyNCB3aXRoIGNvbXBsZXRlbHkgdW5mb2xkYWJsZSAKKyAgICAgICAgLy8gZGF0YSBhbmQgdGhlIGFkZGl0aW9uYWwgYmxvY2sgb2YgZHVwbGljYXRlZCB2YWx1ZXMgZm9yIGxlYWQgCisgICAgICAgIC8vIHN1cnJvZ2F0ZXMuCisgICAgICAgIGlmIChpbmRleExlbmd0aCA+PSBNQVhfSU5ERVhfTEVOR1RIXykgeworICAgICAgICAgICAgdGhyb3cgbmV3IEFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbigiSW5kZXggdGFibGUgb3ZlcmZsb3ciKTsKKyAgICAgICAgfQorICAgICAgICAvLyBtYWtlIHNwYWNlIGZvciB0aGUgbGVhZCBzdXJyb2dhdGUgaW5kZXggYmxvY2sgYW5kIGluc2VydCBpdCBiZXR3ZWVuIAorICAgICAgICAvLyB0aGUgQk1QIGluZGV4ZXMgYW5kIHRoZSBmb2xkZWQgb25lcworICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KGluZGV4LCBCTVBfSU5ERVhfTEVOR1RIXywgaW5kZXgsIAorICAgICAgICAgICAgICAgICAgICAgICAgIEJNUF9JTkRFWF9MRU5HVEhfICsgU1VSUk9HQVRFX0JMT0NLX0NPVU5UXywKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleExlbmd0aCAtIEJNUF9JTkRFWF9MRU5HVEhfKTsKKyAgICAgICAgU3lzdGVtLmFycmF5Y29weShsZWFkSW5kZXhlcywgMCwgaW5kZXgsIEJNUF9JTkRFWF9MRU5HVEhfLAorICAgICAgICAgICAgICAgICAgICAgICAgIFNVUlJPR0FURV9CTE9DS19DT1VOVF8pOworICAgICAgICBpbmRleExlbmd0aCArPSBTVVJST0dBVEVfQkxPQ0tfQ09VTlRfOworICAgICAgICBtX2luZGV4TGVuZ3RoXyA9IGluZGV4TGVuZ3RoOworICAgIH0KK30KKyAgICAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9Mb2NhbGVVdGlsaXR5LmphdmEgYi9zcmMvY29tL2libS9pY3UvaW1wbC9Mb2NhbGVVdGlsaXR5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzcyNmUzYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL0xvY2FsZVV0aWxpdHkuamF2YQpAQCAtMCwwICsxLDEwOCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvTG9jYWxlVXRpbGl0eS5qYXZhLHYgJAorICogJERhdGU6IDIwMDIvMTAvMDIgMjA6MjA6MjEgJAorICogJFJldmlzaW9uOiAxLjYgJAorICogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKyAKK3BhY2thZ2UgY29tLmlibS5pY3UuaW1wbDsKKworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CisKKy8qKgorICogQSBjbGFzcyB0byBob2xkIHV0aWxpdHkgZnVuY3Rpb25zIG1pc3NpbmcgZnJvbSBqYXZhLnV0aWwuTG9jYWxlLgorICovCitwdWJsaWMgY2xhc3MgTG9jYWxlVXRpbGl0eSB7CisKKyAgICAvKioKKyAgICAgKiBBIGhlbHBlciBmdW5jdGlvbiB0byBjb252ZXJ0IGEgc3RyaW5nIG9mIHRoZSBmb3JtCisgICAgICogYWFfQkJfQ0MgdG8gYSBsb2NhbGUgb2JqZWN0LiAgV2h5IGlzbid0IHRoaXMgaW4gTG9jYWxlPworICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgTG9jYWxlIGdldExvY2FsZUZyb21OYW1lKFN0cmluZyBuYW1lKSB7CisgICAgICAgIFN0cmluZyBsYW5ndWFnZSA9ICIiOworICAgICAgICBTdHJpbmcgY291bnRyeSA9ICIiOworICAgICAgICBTdHJpbmcgdmFyaWFudCA9ICIiOworCisgICAgICAgIGludCBpMSA9IG5hbWUuaW5kZXhPZignXycpOworICAgICAgICBpZiAoaTEgPCAwKSB7CisgICAgICAgICAgICBsYW5ndWFnZSA9IG5hbWU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsYW5ndWFnZSA9IG5hbWUuc3Vic3RyaW5nKDAsIGkxKTsKKyAgICAgICAgICAgICsraTE7CisgICAgICAgICAgICBpbnQgaTIgPSBuYW1lLmluZGV4T2YoJ18nLCBpMSk7CisgICAgICAgICAgICBpZiAoaTIgPCAwKSB7CisgICAgICAgICAgICAgICAgY291bnRyeSA9IG5hbWUuc3Vic3RyaW5nKGkxKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY291bnRyeSA9IG5hbWUuc3Vic3RyaW5nKGkxLCBpMik7CisgICAgICAgICAgICAgICAgdmFyaWFudCA9IG5hbWUuc3Vic3RyaW5nKGkyKzEpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG5ldyBMb2NhbGUobGFuZ3VhZ2UsIGNvdW50cnksIHZhcmlhbnQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbXBhcmUgdHdvIGxvY2FsZSBzdHJpbmdzIG9mIHRoZSBmb3JtIGFhX0JCX0NDLCBhbmQKKyAgICAgKiByZXR1cm4gdHJ1ZSBpZiBwYXJlbnQgaXMgYSAnc3RyaWN0JyBmYWxsYmFjayBvZiBjaGlsZCwgdGhhdCBpcywKKyAgICAgKiBpZiBjaGlsZCA9fiAiXnBhcmVudChfLispKiIgKHJvdWdobHkpLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0ZhbGxiYWNrT2YoU3RyaW5nIHBhcmVudCwgU3RyaW5nIGNoaWxkKSB7CisgICAgICAgIGlmICghY2hpbGQuc3RhcnRzV2l0aChwYXJlbnQpKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgaW50IGkgPSBwYXJlbnQubGVuZ3RoKCk7CisgICAgICAgIHJldHVybiAoaSA9PSBjaGlsZC5sZW5ndGgoKSB8fAorICAgICAgICAgICAgICAgIGNoaWxkLmNoYXJBdChpKSA9PSAnXycpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbXBhcmUgdHdvIGxvY2FsZXMsIGFuZCByZXR1cm4gdHJ1ZSBpZiB0aGUgcGFyZW50IGlzIGEKKyAgICAgKiAnc3RyaWN0JyBmYWxsYmFjayBvZiB0aGUgY2hpbGQgKHBhcmVudCBzdHJpbmcgaXMgYSBmYWxsYmFjaworICAgICAqIG9mIGNoaWxkIHN0cmluZykuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzRmFsbGJhY2tPZihMb2NhbGUgcGFyZW50LCBMb2NhbGUgY2hpbGQpIHsKKyAgICAgICAgcmV0dXJuIGlzRmFsbGJhY2tPZihwYXJlbnQudG9TdHJpbmcoKSwgY2hpbGQudG9TdHJpbmcoKSk7CisgICAgfQorCisKKyAgICAvKioKKyAgICAgKiBDb252ZW5pZW5jZSBtZXRob2QgdGhhdCBjYWxscyBjYW5vbmljYWxMb2NhbGVTdHJpbmcoU3RyaW5nKSB3aXRoCisgICAgICogbG9jYWxlLnRvU3RyaW5nKCk7CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgY2Fub25pY2FsTG9jYWxlU3RyaW5nKExvY2FsZSBsb2NhbGUpIHsKKyAgICAgICAgcmV0dXJuIGNhbm9uaWNhbExvY2FsZVN0cmluZyhsb2NhbGUudG9TdHJpbmcoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogWW91J2QgdGhpbmsgdGhhdCBMb2NhbGUgY2Fub25pY2FsaXplcywgc2luY2UgaXQgbXVuZ2VzIHRoZQorICAgICAqIHJlbmFtZWQgbGFuZ3VhZ2VzLCBidXQgaXQgZG9lc24ndCBxdWl0ZS4gIEl0IGZvcmNlcyB0aGUgcmVnaW9uCisgICAgICogdG8gYmUgdXBwZXIgY2FzZSBidXQgZG9lc24ndCBkbyBhbnl0aGluZyBhYm91dCB0aGUgbGFuZ3VhZ2Ugb3IKKyAgICAgKiB2YXJpYW50LiAgT3VyIGNhbm9uaWNhbCBmb3JtIGlzICdsb3dlcl9VUFBFUl9VUFBFUicuICAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBjYW5vbmljYWxMb2NhbGVTdHJpbmcoU3RyaW5nIGlkKSB7CisJaWYgKGlkICE9IG51bGwpIHsKKwkgICAgaW50IHggPSBpZC5pbmRleE9mKCJfIik7CisJICAgIGlmICh4ID09IC0xKSB7CisJCWlkID0gaWQudG9Mb3dlckNhc2UoTG9jYWxlLkVOR0xJU0gpOworCSAgICB9IGVsc2UgeworCQlTdHJpbmdCdWZmZXIgYnVmID0gbmV3IFN0cmluZ0J1ZmZlcigpOworCQlidWYuYXBwZW5kKGlkLnN1YnN0cmluZygwLCB4KS50b0xvd2VyQ2FzZShMb2NhbGUuRU5HTElTSCkpOworCQlidWYuYXBwZW5kKGlkLnN1YnN0cmluZyh4KS50b1VwcGVyQ2FzZShMb2NhbGUuRU5HTElTSCkpOworCQkgICAgCisJCWludCBsZW4gPSBidWYubGVuZ3RoKCk7CisJCWludCBuID0gbGVuOworCQl3aGlsZSAoLS1uID49IDAgJiYgYnVmLmNoYXJBdChuKSA9PSAnXycpIHt9OworCQlpZiAoKytuICE9IGxlbikgeworCQkgICAgYnVmLmRlbGV0ZShuLCBsZW4pOworCQl9CisJCWlkID0gYnVmLnRvU3RyaW5nKCk7CisJICAgIH0KKwl9CisJcmV0dXJuIGlkOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL05vcm1hbGl6ZXJEYXRhUmVhZGVyLmphdmEgYi9zcmMvY29tL2libS9pY3UvaW1wbC9Ob3JtYWxpemVyRGF0YVJlYWRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjZTc2ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9Ob3JtYWxpemVyRGF0YVJlYWRlci5qYXZhCkBAIC0wLDAgKzEsNDMwIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9Ob3JtYWxpemVyRGF0YVJlYWRlci5qYXZhLHYgJAorICogJERhdGU6IDIwMDIvMTEvMTUgMjE6MDQ6MTkgJAorICogJFJldmlzaW9uOiAxLjkgJAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworIAorcGFja2FnZSBjb20uaWJtLmljdS5pbXBsOworaW1wb3J0IGphdmEuaW8uKjsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLklDVURlYnVnOworCisvKioKKyAqIEB2ZXJzaW9uIAkxLjAKKyAqIEBhdXRob3IJCVJhbSBWaXN3YW5hZGhhCisgKi8KKworCS8qCisJICogRGVzY3JpcHRpb24gb2YgdGhlIGZvcm1hdCBvZiB1bm9ybS5pY3UgdmVyc2lvbiAyLjEuCisJICoKKwkgKiBNYWluIGNoYW5nZSBmcm9tIHZlcnNpb24gMSB0byB2ZXJzaW9uIDI6CisJICogVXNlIG9mIG5ldywgY29tbW9uIFRyaWUgaW5zdGVhZCBvZiBub3JtYWxpemF0aW9uLXNwZWNpZmljIHRyaWVzLgorCSAqIENoYW5nZSB0byB2ZXJzaW9uIDIuMTogYWRkIHRoaXJkL2F1eGlsaWFyeSB0cmllIHdpdGggYXNzb2NpYXRlZCBkYXRhLgorCSAqCisJICogRm9yIG1vcmUgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoZSBkYXRhIHN0cnVjdHVyZXMgc2VlIHRoZSBjb2RlCisJICogaW4gdW5vcm0uY3BwIChydW50aW1lIG5vcm1hbGl6YXRpb24gY29kZSkgYW5kCisJICogaW4gZ2Vubm9ybS5jIGFuZCBnZW5ub3JtL3N0b3JlLmMgKGJ1aWxkLXRpbWUgZGF0YSBnZW5lcmF0aW9uKS4KKwkgKgorCSAqIEZvciB0aGUgc2VyaWFsaXplZCBmb3JtYXQgb2YgVHJpZSBzZWUgVHJpZS5jL1RyaWVIZWFkZXIuCisJICoKKwkgKiAtIE92ZXJhbGwgcGFydGl0aW9uCisJICoKKwkgKiB1bm9ybS5pY3UgY3VzdG9tYXJpbHkgYmVnaW5zIHdpdGggYSBVRGF0YUluZm8gc3RydWN0dXJlLCBzZWUgdWRhdGEuaCBhbmQgLmMuCisJICogQWZ0ZXIgdGhhdCB0aGVyZSBhcmUgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmVzOgorCSAqCisJICogY2hhciBpbmRleGVzW0lOREVYX1RPUF07ICAgICAgICAgICAJCS0tIElOREVYX1RPUD0zMiwgc2VlIGVudW0gaW4gdGhpcyBmaWxlCisJICoKKwkgKiBUcmllIG5vcm1UcmllOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tIHNpemUgaW4gYnl0ZXM9aW5kZXhlc1tJTkRFWF9UUklFX1NJWkVdCisJICogCisJICogY2hhciBleHRyYURhdGFbZXh0cmFEYXRhVG9wXTsgICAgICAgICAgICAtLSBleHRyYURhdGFUb3A9aW5kZXhlc1tJTkRFWF9VQ0hBUl9DT1VOVF0KKwkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYURhdGFbMF0gY29udGFpbnMgdGhlIG51bWJlciBvZiB1bml0cyBmb3IKKwkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQ19ORktDX0Nsb3N1cmUgKGZvcm1hdFZlcnNpb24+PTIuMSkKKwkgKgorCSAqIGNoYXIgY29tYmluaW5nVGFibGVbY29tYmluaW5nVGFibGVUb3BdOyAgLS0gY29tYmluaW5nVGFibGVUb3A9aW5kZXhlc1tJTkRFWF9DT01CSU5FX0RBVEFfQ09VTlRdCisJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tYmluaW5nVGFibGVUb3AgbWF5IGluY2x1ZGUgb25lIDE2LWJpdCBwYWRkaW5nIHVuaXQKKwkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBtYWtlIHN1cmUgdGhhdCBmY2RUcmllIGlzIDMyLWJpdC1hbGlnbmVkCisJICoKKwkgKiBUcmllIGZjZFRyaWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tIHNpemUgaW4gYnl0ZXM9aW5kZXhlc1tJTkRFWF9GQ0RfVFJJRV9TSVpFXQorCSAqCisJICogVHJpZSBhdXhUcmllOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLSBzaXplIGluIGJ5dGVzPWluZGV4ZXNbSU5ERVhfQVVYX1RSSUVfU0laRV0KKwkgKgorCSAqIGNoYXIgY2Fub25TdGFydFNldHNbY2Fub25TdGFydFNldHNUb3BdICAgLS0gY2Fub25TdGFydFNldHNUb3A9aW5kZXhlc1tJTkRFWF9DQU5PTl9TRVRfQ09VTlRdCisJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWFsaXplZCBVU2V0cywgc2VlIHVzZXQuYworCSAqCisJICoKKwkgKiBUaGUgaW5kZXhlcyBhcnJheSBjb250YWlucyBsZW5ndGhzIGFuZCBzaXplcyBvZiB0aGUgZm9sbG93aW5nIGFycmF5cyBhbmQgc3RydWN0dXJlcworCSAqIGFzIHdlbGwgYXMgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisJICogIGluZGV4ZXNbSU5ERVhfQ09NQklORV9GV0RfQ09VTlRdPWNvbWJpbmVGd2RUb3AKKwkgKiAgICAgIC0tIG9uZSBtb3JlIHRoYW4gdGhlIGhpZ2hlc3QgY29tYmluaW5nIGluZGV4IGNvbXB1dGVkIGZvciBmb3J3YXJkLW9ubHktY29tYmluaW5nIGNoYXJhY3RlcnMKKwkgKiAgaW5kZXhlc1tJTkRFWF9DT01CSU5FX0JPVEhfQ09VTlRdPWNvbWJpbmVCb3RoVG9wLWNvbWJpbmVGd2RUb3AKKwkgKiAgICAgIC0tIG51bWJlciBvZiBjb21iaW5pbmcgaW5kZXhlcyBjb21wdXRlZCBmb3IgYm90aC13YXlzLWNvbWJpbmluZyBjaGFyYWN0ZXJzCisJICogIGluZGV4ZXNbSU5ERVhfQ09NQklORV9CQUNLX0NPVU5UXT1jb21iaW5lQmFja1RvcC1jb21iaW5lQm90aFRvcAorCSAqICAgICAgLS0gbnVtYmVyIG9mIGNvbWJpbmluZyBpbmRleGVzIGNvbXB1dGVkIGZvciBiYWNrd2FyZC1vbmx5LWNvbWJpbmluZyBjaGFyYWN0ZXJzCisJICoKKwkgKiAgaW5kZXhlc1tJTkRFWF9NSU5fTkYqX05PX01BWUJFXSAod2hlcmUgKj17IEMsIEQsIEtDLCBLRCB9KQorCSAqICAgICAgLS0gZmlyc3QgY29kZSBwb2ludCB3aXRoIGEgcXVpY2sgY2hlY2sgTkYqIHZhbHVlIG9mIE5PL01BWUJFCisJICoKKwkgKgorCSAqIC0gVHJpZXMKKwkgKgorCSAqIFRoZSBtYWluIHN0cnVjdHVyZXMgYXJlIHR3byBUcmllIHRhYmxlcyAoImNvbXBhY3QgYXJyYXlzIiksCisJICogZWFjaCB3aXRoIG9uZSBpbmRleCBhcnJheSBhbmQgb25lIGRhdGEgYXJyYXkuCisJICogU2VlIFRyaWUuaCBhbmQgVHJpZS5jLgorCSAqCisJICoKKwkgKiAtIFRyaWVzIGluIHVub3JtLmljdQorCSAqCisJICogVGhlIGZpcnN0IHRyaWUgKG5vcm1UcmllIGFib3ZlKQorCSAqIHByb3ZpZGVzIGRhdGEgZm9yIHRoZSBORiogcXVpY2sgY2hlY2tzIGFuZCBub3JtYWxpemF0aW9uLgorCSAqIFRoZSBzZWNvbmQgdHJpZSAoZmNkVHJpZSBhYm92ZSkgcHJvdmlkZXMgZGF0YSBqdXN0IGZvciBGQ0QgY2hlY2tzLgorCSAqCisJICoKKwkgKiAtIG5vcm0zMiBkYXRhIHdvcmRzIGZyb20gdGhlIGZpcnN0IHRyaWUKKwkgKgorCSAqIFRoZSBub3JtMzJUYWJsZSBjb250YWlucyBvbmUgMzItYml0IHdvcmQgIm5vcm0zMiIgcGVyIGNvZGUgcG9pbnQuCisJICogSXQgY29udGFpbnMgdGhlIGZvbGxvd2luZyBiaXQgZmllbGRzOgorCSAqIDMxLi4xNiAgIGV4dHJhIGRhdGEgaW5kZXgsIEVYVFJBX1NISUZUIGlzIHVzZWQgdG8gc2hpZnQgdGhpcyBmaWVsZCBkb3duCisJICogICAgICAgICAgaWYgdGhpcyBpbmRleCBpcyA8RVhUUkFfSU5ERVhfVE9QIHRoZW4gaXQgaXMgYW4gaW5kZXggaW50bworCSAqICAgICAgICAgICAgICBleHRyYURhdGFbXSB3aGVyZSB2YXJpYWJsZS1sZW5ndGggbm9ybWFsaXphdGlvbiBkYXRhIGZvciB0aGlzCisJICogICAgICAgICAgICAgIGNvZGUgcG9pbnQgaXMgZm91bmQKKwkgKiAgICAgICAgICBpZiB0aGlzIGluZGV4IGlzIDxFWFRSQV9JTkRFWF9UT1ArRVhUUkFfU1VSUk9HQVRFX1RPUAorCSAqICAgICAgICAgICAgICB0aGVuIHRoaXMgaXMgYSBub3JtMzIgZm9yIGEgbGVhZGluZyBzdXJyb2dhdGUsIGFuZCB0aGUgaW5kZXgKKwkgKiAgICAgICAgICAgICAgdmFsdWUgaXMgdXNlZCB0b2dldGhlciB3aXRoIHRoZSBmb2xsb3dpbmcgdHJhaWxpbmcgc3Vycm9nYXRlCisJICogICAgICAgICAgICAgIGNvZGUgdW5pdCBpbiB0aGUgc2Vjb25kIHRyaWUgYWNjZXNzCisJICogICAgICAgICAgaWYgdGhpcyBpbmRleCBpcyA+PUVYVFJBX0lOREVYX1RPUCtFWFRSQV9TVVJST0dBVEVfVE9QCisJICogICAgICAgICAgICAgIHRoZW4gdGhpcyBpcyBhIG5vcm0zMiBmb3IgYSAic3BlY2lhbCIgY2hhcmFjdGVyLAorCSAqICAgICAgICAgICAgICBpLmUuLCB0aGUgY2hhcmFjdGVyIGlzIGEgSGFuZ3VsIHN5bGxhYmxlIG9yIGEgSmFtbworCSAqICAgICAgICAgICAgICBzZWUgRVhUUkFfSEFOR1VMIGV0Yy4KKwkgKiAgICAgICAgICBnZW5lcmFsbHksIGluc3RlYWQgb2YgZXh0cmFjdGluZyB0aGlzIGluZGV4IGZyb20gdGhlIG5vcm0zMiBhbmQKKwkgKiAgICAgICAgICAgICAgY29tcGFyaW5nIGl0IHdpdGggdGhlIGFib3ZlIGNvbnN0YW50cywKKwkgKiAgICAgICAgICAgICAgdGhlIG5vcm1hbGl6YXRpb24gY29kZSBjb21wYXJlcyB0aGUgZW50aXJlIG5vcm0zMiB2YWx1ZQorCSAqICAgICAgICAgICAgICB3aXRoIE1JTl9TUEVDSUFMLCBTVVJST0dBVEVTX1RPUCwgTUlOX0hBTkdVTCBldGMuCisJICoKKwkgKiAxNS4uOCAgICBjb21iaW5pbmcgY2xhc3MgKGNjKSBhY2NvcmRpbmcgdG8gVW5pY29kZURhdGEudHh0CisJICoKKwkgKiAgNy4uNiAgICBDT01CSU5FU19BTlkgZmxhZ3MsIHVzZWQgaW4gY29tcG9zaXRpb24gdG8gc2VlIGlmIGEgY2hhcmFjdGVyCisJICogICAgICAgICAgICAgIGNvbWJpbmVzIHdpdGggYW55IGZvbGxvd2luZyBvciBwcmVjZWRpbmcgY2hhcmFjdGVyKHMpCisJICogICAgICAgICAgICAgIGF0IGFsbAorCSAqICAgICA3ICAgIENPTUJJTkVTX0JBQ0sKKwkgKiAgICAgNiAgICBDT01CSU5FU19GV0QKKwkgKgorCSAqICA1Li4wICAgIHF1aWNrIGNoZWNrIGZsYWdzLCBzZXQgZm9yICJubyIgb3IgIm1heWJlIiwgd2l0aCBzZXBhcmF0ZSBmbGFncyBmb3IKKwkgKiAgICAgICAgICAgICAgZWFjaCBub3JtYWxpemF0aW9uIGZvcm0KKwkgKiAgICAgICAgICAgICAgdGhlIGhpZ2hlciBiaXRzIGFyZSAibWF5YmUiIGZsYWdzOyBmb3IgTkYqRCB0aGVyZSBhcmUgbm8gc3VjaCBmbGFncworCSAqICAgICAgICAgICAgICB0aGUgbG93ZXIgYml0cyBhcmUgIm5vIiBmbGFncyBmb3IgYWxsIGZvcm1zLCBpbiB0aGUgc2FtZSBvcmRlcgorCSAqICAgICAgICAgICAgICBhcyB0aGUgIm1heWJlIiBmbGFncywKKwkgKiAgICAgICAgICAgICAgd2hpY2ggaXMgKE1TQiB0byBMU0IpOiBORktEIE5GRCBORktDIE5GQworCSAqICA1Li40ICAgIFFDX0FOWV9NQVlCRQorCSAqICAzLi4wICAgIFFDX0FOWV9OTworCSAqICAgICAgICAgICAgICBzZWUgZnVydGhlciByZWxhdGVkIGNvbnN0YW50cworCSAqCisJICoKKwkgKiAtIEV4dHJhIGRhdGEgcGVyIGNvZGUgcG9pbnQKKwkgKgorCSAqICJFeHRyYSBkYXRhIiBpcyByZWZlcmVuY2VkIGJ5IHRoZSBpbmRleCBpbiBub3JtMzIuCisJICogSXQgaXMgdmFyaWFibGUtbGVuZ3RoIGRhdGEuIEl0IGlzIG9ubHkgcHJlc2VudCwgYW5kIG9ubHkgdGhvc2UgcGFydHMKKwkgKiBvZiBpdCBhcmUsIGFzIG5lZWRlZCBmb3IgYSBnaXZlbiBjaGFyYWN0ZXIuCisJICogVGhlIG5vcm0zMiBleHRyYSBkYXRhIGluZGV4IGlzIGFkZGVkIHRvIHRoZSBiZWdpbm5pbmcgb2YgZXh0cmFEYXRhW10KKwkgKiB0byBnZXQgdG8gYSB2ZWN0b3Igb2YgMTYtYml0IHdvcmRzIHdpdGggZGF0YSBhdCB0aGUgZm9sbG93aW5nIG9mZnNldHM6CisJICoKKwkgKiBbLTFdICAgICBDb21iaW5pbmcgaW5kZXggZm9yIGNvbXBvc2l0aW9uLgorCSAqICAgICAgICAgICAgICBTdG9yZWQgb25seSBpZiBub3JtMzImQ09NQklORVNfQU5ZIC4KKwkgKiBbMF0gICAgICBMZW5ndGhzIG9mIHRoZSBjYW5vbmljYWwgYW5kIGNvbXBhdGliaWxpdHkgZGVjb21wb3NpdGlvbiBzdHJpbmdzLgorCSAqICAgICAgICAgICAgICBTdG9yZWQgb25seSBpZiB0aGVyZSBhcmUgZGVjb21wb3NpdGlvbnMsIGkuZS4sCisJICogICAgICAgICAgICAgIGlmIG5vcm0zMiYoUUNfTkZEfFFDX05GS0QpCisJICogICAgICAgICAgSGlnaCBieXRlOiBsZW5ndGggb2YgTkZLRCwgb3IgMCBpZiBub25lCisJICogICAgICAgICAgTG93IGJ5dGU6IGxlbmd0aCBvZiBORkQsIG9yIDAgaWYgbm9uZQorCSAqICAgICAgICAgIEVhY2ggbGVuZ3RoIGJ5dGUgYWxzbyBoYXMgYW5vdGhlciBmbGFnOgorCSAqICAgICAgICAgICAgICBCaXQgNyBvZiBhIGxlbmd0aCBieXRlIGlzIHNldCBpZiB0aGVyZSBhcmUgbm9uLXplcm8KKwkgKiAgICAgICAgICAgICAgY29tYmluaW5nIGNsYXNzZXMgKGNjJ3MpIGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZQorCSAqICAgICAgICAgICAgICBkZWNvbXBvc2l0aW9uLiBJZiB0aGlzIGZsYWcgaXMgc2V0LCB0aGVuIHRoZSBkZWNvbXBvc2l0aW9uCisJICogICAgICAgICAgICAgIGlzIHByZWNlZGVkIGJ5IGEgMTYtYml0IHdvcmQgdGhhdCBjb250YWlucyB0aGUKKwkgKiAgICAgICAgICAgICAgbGVhZGluZyBhbmQgdHJhaWxpbmcgY2Mncy4KKwkgKiAgICAgICAgICAgICAgQml0cyA2Li4wIG9mIGEgbGVuZ3RoIGJ5dGUgYXJlIHRoZSBsZW5ndGggb2YgdGhlCisJICogICAgICAgICAgICAgIGRlY29tcG9zaXRpb24gc3RyaW5nLCBub3QgY291bnRpbmcgdGhlIGNjIHdvcmQuCisJICogWzEuLm5dICAgTkZECisJICogW24rMS4uXSAgTkZLRAorCSAqCisJICogRWFjaCBvZiB0aGUgdHdvIGRlY29tcG9zaXRpb25zIGNvbnNpc3RzIG9mIHVwIHRvIHR3byBwYXJ0czoKKwkgKiAtIFRoZSAxNi1iaXQgd29yZHMgd2l0aCB0aGUgbGVhZGluZyBhbmQgdHJhaWxpbmcgY2Mncy4KKwkgKiAgIFRoaXMgaXMgb25seSBzdG9yZWQgaWYgYml0IDcgb2YgdGhlIGNvcnJlc3BvbmRpbmcgbGVuZ3RoIGJ5dGUKKwkgKiAgIGlzIHNldC4gSW4gdGhpcyBjYXNlLCBhdCBsZWFzdCBvbmUgb2YgdGhlIGNjJ3MgaXMgbm90IHplcm8uCisJICogICBIaWdoIGJ5dGU6IGxlYWRpbmcgY2M9PWNjIG9mIHRoZSBmaXJzdCBjb2RlIHBvaW50IGluIHRoZSBkZWNvbXBvc2l0aW9uIHN0cmluZworCSAqICAgTG93IGJ5dGU6IHRyYWlsaW5nIGNjPT1jYyBvZiB0aGUgbGFzdCBjb2RlIHBvaW50IGluIHRoZSBkZWNvbXBvc2l0aW9uIHN0cmluZworCSAqIC0gVGhlIGRlY29tcG9zaXRpb24gc3RyaW5nIGluIFVURi0xNiwgd2l0aCBsZW5ndGggY29kZSB1bml0cy4KKwkgKgorCSAqCisJICogLSBDb21iaW5pbmcgaW5kZXhlcyBhbmQgY29tYmluaW5nVGFibGVbXQorCSAqCisJICogQ29tYmluaW5nIGluZGV4ZXMgYXJlIHN0b3JlZCBhdCB0aGUgWy0xXSBvZmZzZXQgb2YgdGhlIGV4dHJhIGRhdGEKKwkgKiBpZiB0aGUgY2hhcmFjdGVyIGNvbWJpbmVzIGZvcndhcmQgb3IgYmFja3dhcmQgd2l0aCBhbnkgb3RoZXIgY2hhcmFjdGVycy4KKwkgKiBUaGV5IGFyZSB1c2VkIGZvciAocmUpY29tcG9zaXRpb24gaW4gTkYqQy4KKwkgKiBWYWx1ZXMgb2YgY29tYmluaW5nIGluZGV4ZXMgYXJlIGFycmFuZ2VkIGFjY29yZGluZyB0byB3aGV0aGVyIGEgY2hhcmFjdGVyCisJICogY29tYmluZXMgZm9yd2FyZCwgYmFja3dhcmQsIG9yIGJvdGggd2F5czoKKwkgKiAgICBmb3J3YXJkLW9ubHkgPCBib3RoIHdheXMgPCBiYWNrd2FyZC1vbmx5CisJICoKKwkgKiBUaGUgaW5kZXggdmFsdWVzIGZvciBmb3J3YXJkLW9ubHkgYW5kIGJvdGgtd2F5cyBjb21iaW5pbmcgY2hhcmFjdGVycworCSAqIGFyZSBpbmRleGVzIGludG8gdGhlIGNvbWJpbmluZ1RhYmxlW10uCisJICogVGhlIGluZGV4IHZhbHVlcyBmb3IgYmFja3dhcmQtb25seSBjb21iaW5pbmcgY2hhcmFjdGVycyBhcmUgc2ltcGx5CisJICogaW5jcmVtZW50ZWQgZnJvbSB0aGUgcHJlY2VkaW5nIGluZGV4IHZhbHVlcyB0byBiZSB1bmlxdWUuCisJICoKKwkgKiBJbiB0aGUgY29tYmluaW5nVGFibGVbXSwgYSB2YXJpYWJsZS1sZW5ndGggbGlzdAorCSAqIG9mIHZhcmlhYmxlLWxlbmd0aCAoYmFjay1pbmRleCwgY29kZSBwb2ludCkgcGFpciBlbnRyaWVzIGlzIHN0b3JlZAorCSAqIGZvciBlYWNoIGZvcndhcmQtY29tYmluaW5nIGNoYXJhY3Rlci4KKwkgKgorCSAqIFRoZXNlIGJhY2staW5kZXhlcyBhcmUgdGhlIGNvbWJpbmluZyBpbmRleGVzIG9mIGJvdGgtd2F5cyBvciBiYWNrd2FyZC1vbmx5CisJICogY29tYmluaW5nIGNoYXJhY3RlcnMgdGhhdCB0aGUgZm9yd2FyZC1jb21iaW5pbmcgY2hhcmFjdGVyIGNvbWJpbmVzIHdpdGguCisJICoKKwkgKiBFYWNoIGxpc3QgaXMgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlciBvZiBiYWNrLWluZGV4ZXMuCisJICogRWFjaCBsaXN0IGlzIHRlcm1pbmF0ZWQgd2l0aCB0aGUgbGFzdCBiYWNrLWluZGV4IGhhdmluZyBiaXQgMTUgc2V0LgorCSAqCisJICogRWFjaCBwYWlyIChiYWNrLWluZGV4LCBjb2RlIHBvaW50KSB0YWtlcyB1cCBlaXRoZXIgMiBvciAzCisJICogMTYtYml0IHdvcmRzLgorCSAqIFRoZSBmaXJzdCB3b3JkIG9mIGEgbGlzdCBlbnRyeSBpcyB0aGUgYmFjay1pbmRleCwgd2l0aCBpdHMgYml0IDE1IHNldCBpZgorCSAqIHRoaXMgaXMgdGhlIGxhc3QgcGFpciBpbiB0aGUgbGlzdC4KKwkgKgorCSAqIFRoZSBzZWNvbmQgd29yZCBjb250YWlucyBmbGFncyBpbiBiaXRzIDE1Li4xMyB0aGF0IGRldGVybWluZQorCSAqIGlmIHRoZXJlIGlzIGEgdGhpcmQgd29yZCBhbmQgaG93IHRoZSBjb21iaW5lZCBjaGFyYWN0ZXIgaXMgZW5jb2RlZDoKKwkgKiAxNSAgIHNldCBpZiB0aGVyZSBpcyBhIHRoaXJkIHdvcmQgaW4gdGhpcyBsaXN0IGVudHJ5CisJICogMTQgICBzZXQgaWYgdGhlIHJlc3VsdCBpcyBhIHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVyCisJICogMTMgICBzZXQgaWYgdGhlIHJlc3VsdCBpdHNlbGYgY29tYmluZXMgZm9yd2FyZAorCSAqCisJICogQWNjb3JkaW5nIHRvIHRoZXNlIGJpdHMgMTUuLjE0IG9mIHRoZSBzZWNvbmQgd29yZCwKKwkgKiB0aGUgcmVzdWx0IGNoYXJhY3RlciBpcyBlbmNvZGVkIGFzIGZvbGxvd3M6CisJICogMDAgb3IgMDEgVGhlIHJlc3VsdCBpcyA8PTB4MWZmZiBhbmQgc3RvcmVkIGluIGJpdHMgMTIuLjAgb2YKKwkgKiAgICAgICAgICB0aGUgc2Vjb25kIHdvcmQuCisJICogMTAgICAgICAgVGhlIHJlc3VsdCBpcyAweDIwMDAuLjB4ZmZmZiBhbmQgc3RvcmVkIGluIHRoZSB0aGlyZCB3b3JkLgorCSAqICAgICAgICAgIEJpdHMgMTIuLjAgb2YgdGhlIHNlY29uZCB3b3JkIGFyZSBub3QgdXNlZC4KKwkgKiAxMSAgICAgICBUaGUgcmVzdWx0IGlzIGEgc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXIuCisJICogICAgICAgICAgQml0cyA5Li4wIG9mIHRoZSBsZWFkaW5nIHN1cnJvZ2F0ZSBhcmUgaW4gYml0cyA5Li4wIG9mCisJICogICAgICAgICAgdGhlIHNlY29uZCB3b3JkLgorCSAqICAgICAgICAgIEFkZCAweGQ4MDAgdG8gdGhlc2UgYml0cyB0byBnZXQgdGhlIGNvbXBsZXRlIHN1cnJvZ2F0ZS4KKwkgKiAgICAgICAgICBCaXRzIDEyLi4xMCBvZiB0aGUgc2Vjb25kIHdvcmQgYXJlIG5vdCB1c2VkLgorCSAqICAgICAgICAgIFRoZSB0cmFpbGluZyBzdXJyb2dhdGUgaXMgc3RvcmVkIGluIHRoZSB0aGlyZCB3b3JkLgorCSAqCisJICoKKwkgKiAtIEZDRCB0cmllCisJICoKKwkgKiBUaGUgRkNEIHRyaWUgaXMgdmVyeSBzaW1wbGUuCisJICogSXQgaXMgYSBmb2xkZWQgdHJpZSB3aXRoIDE2LWJpdCBkYXRhIHdvcmRzLgorCSAqIEluIGVhY2ggd29yZCwgdGhlIGhpZ2ggYnl0ZSBjb250YWlucyB0aGUgbGVhZGluZyBjYyBvZiB0aGUgY2hhcmFjdGVyLAorCSAqIGFuZCB0aGUgbG93IGJ5dGUgY29udGFpbnMgdGhlIHRyYWlsaW5nIGNjIG9mIHRoZSBjaGFyYWN0ZXIuCisJICogVGhlc2UgY2MncyBhcmUgdGhlIGNjJ3Mgb2YgdGhlIGZpcnN0IGFuZCBsYXN0IGNvZGUgcG9pbnRzIGluIHRoZQorCSAqIGNhbm9uaWNhbCBkZWNvbXBvc2l0aW9uIG9mIHRoZSBjaGFyYWN0ZXIuCisJICoKKwkgKiBTaW5jZSBhbGwgMTYgYml0cyBhcmUgdXNlZCBmb3IgY2MncywgbGVhZCBzdXJyb2dhdGVzIG11c3QgYmUgdGVzdGVkCisJICogYnkgY2hlY2tpbmcgdGhlIGNvZGUgdW5pdCBpbnN0ZWFkIG9mIHRoZSB0cmllIGRhdGEuCisJICogVGhpcyBpcyBkb25lIG9ubHkgaWYgdGhlIDE2LWJpdCBkYXRhIHdvcmQgaXMgbm90IHplcm8uCisJICogSWYgdGhlIGNvZGUgdW5pdCBpcyBhIGxlYWRpbmcgc3Vycm9nYXRlIGFuZCB0aGUgZGF0YSB3b3JkIGlzIG5vdCB6ZXJvLAorCSAqIHRoZW4gaW5zdGVhZCBvZiBjYydzIGl0IGNvbnRhaW5zIHRoZSBvZmZzZXQgZm9yIHRoZSBzZWNvbmQgdHJpZSBsb29rdXAuCisJICoKKwkgKgorCSAqIC0gQXV4aWxpYXJ5IHRyaWUgYW5kIGRhdGEKKwkgKgorCSAqCisJICogVGhlIGF1eGlsaWFyeSAxNi1iaXQgdHJpZSBjb250YWlucyBkYXRhIGZvciBhZGRpdGlvbmFsIHByb3BlcnRpZXMuCisJICogQml0cworICAgICAqIDE1Li4xMyAgIHJlc2VydmVkCisgICAgICogICAgIDEyICAgbm90IE5GQ19Ta2lwcGFibGUgKGYpIChmb3JtYXRWZXJzaW9uPj0yLjIpCisJICogICAgIDExICAgZmxhZzogbm90IGEgc2FmZSBzdGFydGVyIGZvciBjYW5vbmljYWwgY2xvc3VyZQorCSAqICAgICAxMCAgIGNvbXBvc2l0aW9uIGV4Y2x1c2lvbgorCSAqICA5Li4gMCAgIGluZGV4IGludG8gZXh0cmFEYXRhW10gdG8gRkNfTkZLQ19DbG9zdXJlIHN0cmluZworCSAqICAgICAgICAgIChub3QgZm9yIGxlYWQgc3Vycm9nYXRlKSwKKwkgKiAgICAgICAgICBvciBsZWFkIHN1cnJvZ2F0ZSBvZmZzZXQgKGZvciBsZWFkIHN1cnJvZ2F0ZSwgaWYgOS4uMCBub3QgemVybykKKwkgKiAKKyAgICAgKiBDb25kaXRpb25zIGZvciAiTkYqIFNraXBwYWJsZSIgZnJvbSBNYXJrIERhdmlzJyBjb20uaWJtLnRleHQuVUNELk5GU2tpcHBhYmxlOgorICAgICAqICh1c2VkIGluIE5vcm1hbGl6ZXJUcmFuc2xpdGVyYXRvcikKKyAgICAgKgorICAgICAqIEEgc2tpcHBhYmxlIGNoYXJhY3RlciBpcworICAgICAqIGEpIHVuYXNzaWduZWQsIG9yIEFMTCBvZiB0aGUgZm9sbG93aW5nOgorICAgICAqIGIpIG9mIGNvbWJpbmluZyBjbGFzcyAwLgorICAgICAqIGMpIG5vdCBkZWNvbXBvc2VkIGJ5IHRoaXMgbm9ybWFsaXphdGlvbiBmb3JtLgorICAgICAqIEFORCBpZiBORkMgb3IgTkZLQywKKyAgICAgKiBkKSBjYW4gbmV2ZXIgY29tcG9zZSB3aXRoIGEgcHJldmlvdXMgY2hhcmFjdGVyLgorICAgICAqIGUpIGNhbiBuZXZlciBjb21wb3NlIHdpdGggYSBmb2xsb3dpbmcgY2hhcmFjdGVyLgorICAgICAqIGYpIGNhbiBuZXZlciBjaGFuZ2UgaWYgYW5vdGhlciBjaGFyYWN0ZXIgaXMgYWRkZWQuCisgICAgICogICAgRXhhbXBsZTogYS1icmV2ZSBtaWdodCBzYXRpc2Z5IGFsbCBidXQgZiwgYnV0IGlmIHlvdQorICAgICAqICAgIGFkZCBhbiBvZ29uZWsgaXQgY2hhbmdlcyB0byBhLW9nb25layArIGJyZXZlCisgICAgICoKKyAgICAgKiBhKS4uZSkgbXVzdCBiZSB0ZXN0ZWQgZnJvbSBub3JtMzIuCisgICAgICogU2luY2UgZikgaXMgbW9yZSBjb21wbGljYXRlZCwgdGhlIChub3QtKU5GQ19Ta2lwcGFibGUgZmxhZyAoZikgaXMgYnVpbHQKKyAgICAgKiBpbnRvIHRoZSBhdXhpbGlhcnkgdHJpZS4KKyAgICAgKiBUaGUgc2FtZSBiaXQgaXMgdXNlZCBmb3IgTkZDIGFuZCBORktDOyAoYykgZGlmZmVycyBmb3IgdGhlbS4KKyAgICAgKiBBcyB1c3VhbCwgd2UgYnVpbGQgdGhlICJub3Qgc2tpcHBhYmxlIiBmbGFncyBzbyB0aGF0IHVuYXNzaWduZWQKKyAgICAgKiBjb2RlIHBvaW50cyBnZXQgYSAwIGJpdC4KKyAgICAgKiBUaGlzIGJpdCBpcyBvbmx5IHZhbGlkIGFmdGVyIChhKS4uKGUpIHRlc3QgRkFMU0U7IHRlc3QgTkZEX05PIGJlZm9yZSAoZikgYXMgd2VsbC4KKyAgICAgKiBUZXN0IEhhbmd1bCBMViBzeWxsYWJsZXMgZW50aXJlbHkgaW4gY29kZS4KKyAgICAgKiAgIAorICAgICAqIAorCSAqIC0gRkNfTkZLQ19DbG9zdXJlIHN0cmluZ3MgaW4gZXh0cmFEYXRhW10KKwkgKgorCSAqIFN0cmluZ3MgYXJlIGVpdGhlciBzdG9yZWQgYXMgYSBzaW5nbGUgY29kZSB1bml0IG9yIGFzIHRoZSBsZW5ndGgKKwkgKiBmb2xsb3dlZCBieSB0aGF0IG1hbnkgdW5pdHMuCisJICogCisgICAgICogLSBzdHJ1Y3R1cmUgaW5zaWRlIGNhbm9uU3RhcnRTZXRzW10KKwkgKgorCSAqIFRoaXMgYXJyYXkgbWFwcyBmcm9tIGNvZGUgcG9pbnRzIGMgdG8gc2V0cyBvZiBjb2RlIHBvaW50cyAoVVNlcmlhbGl6ZWRTZXQpLgorCSAqIFRoZSByZXN1bHQgc2V0cyBhcmUgdGhlIGNvZGUgcG9pbnRzIHdob3NlIGNhbm9uaWNhbCBkZWNvbXBvc2l0aW9ucyBzdGFydAorCSAqIHdpdGggYy4KKwkgKgorCSAqIGNhbm9uU3RhcnRTZXRzW10gY29udGFpbnMgdGhlIGZvbGxvd2luZyBzdWItYXJyYXlzOgorCSAqCisJICogaW5kZXhlc1tfTk9STV9TRVRfSU5ERVhfVE9QXQorCSAqICAgLSBjb250YWlucyBsZW5ndGhzIG9mIHN1Yi1hcnJheXMgZXRjLgorCSAqCisJICogc3RhcnRTZXRzW2luZGV4ZXNbX05PUk1fU0VUX0lOREVYX0NBTk9OX1NFVFNfTEVOR1RIXS1fTk9STV9TRVRfSU5ERVhfVE9QXQorCSAqICAgLSBjb250YWlucyBzZXJpYWxpemVkIHNldHMgKFVTZXJpYWxpemVkU2V0KSBvZiBjYW5vbmljYWwgc3RhcnRlcnMgZm9yCisJICogICAgIGVudW1lcmF0aW5nIGNhbm9uaWNhbGx5IGVxdWl2YWxlbnQgc3RyaW5ncworCSAqICAgICBpbmRleGVzW19OT1JNX1NFVF9JTkRFWF9DQU5PTl9TRVRTX0xFTkdUSF0gaW5jbHVkZXMgX05PUk1fU0VUX0lOREVYX1RPUAorCSAqICAgICBmb3IgZGV0YWlscyBhYm91dCB0aGUgc3RydWN0dXJlIHNlZSB1c2V0LmMKKwkgKgorCSAqIGJtcFRhYmxlW2luZGV4ZXNbX05PUk1fU0VUX0lOREVYX0NBTk9OX0JNUF9UQUJMRV9MRU5HVEhdXQorCSAqICAgLSBhIHNvcnRlZCBzZWFyY2ggdGFibGUgZm9yIEJNUCBjb2RlIHBvaW50cyB3aG9zZSByZXN1bHRzIGFyZQorCSAqICAgICBlaXRoZXIgaW5kZXhlcyB0byBVU2VyaWFsaXplZFNldHMgb3Igc2luZ2xlIGNvZGUgcG9pbnRzIGZvcgorCSAqICAgICBzaW5nbGUtY29kZSBwb2ludCBzZXRzOworCSAqICAgICBlYWNoIGVudHJ5IGlzIGEgcGFpciBvZiB7IGNvZGUgcG9pbnQsIHJlc3VsdCB9IHdpdGggcmVzdWx0PShiaW5hcnkpIHl5IHh4eHh4eCB4eHh4eHh4eAorCSAqICAgICBpZiB5eT09MDEgdGhlbiB0aGVyZSBpcyBhIFVTZXJpYWxpemVkU2V0IGF0IGNhbm9uU3RhcnRTZXRzK3gKKwkgKiAgICAgZWxzZSBidWlsZCBhIFVTZXJpYWxpemVkU2V0IHdpdGggcmVzdWx0IGFzIHRoZSBzaW5nbGUgY29kZSBwb2ludAorCSAqCisJICogc3VwcFRhYmxlW2luZGV4ZXNbX05PUk1fU0VUX0lOREVYX0NBTk9OX1NVUFBfVEFCTEVfTEVOR1RIXV0KKwkgKiAgIC0gYSBzb3J0ZWQgc2VhcmNoIHRhYmxlIGZvciBzdXBwbGVtZW50YXJ5IGNvZGUgcG9pbnRzIHdob3NlIHJlc3VsdHMgYXJlCisJICogICAgIGVpdGhlciBpbmRleGVzIHRvIFVTZXJpYWxpemVkU2V0cyBvciBzaW5nbGUgY29kZSBwb2ludHMgZm9yCisJICogICAgIHNpbmdsZS1jb2RlIHBvaW50IHNldHM7CisJICogICAgIGVhY2ggZW50cnkgaXMgYSB0cmlwbGV0IG9mIHsgaGlnaDE2KGNwKSwgbG93MTYoY3ApLCByZXN1bHQgfQorCSAqICAgICBlYWNoIGNvZGUgcG9pbnQncyBoaWdoLXdvcmQgbWF5IGNvbnRhaW4gZXh0cmEgZGF0YSBpbiBiaXRzIDE1Li41OgorCSAqICAgICBpZiB0aGUgaGlnaCB3b3JkIGhhcyBiaXQgMTUgc2V0LCB0aGVuIGJ1aWxkIGEgc2V0IHdpdGggYSBzaW5nbGUgY29kZSBwb2ludAorCSAqICAgICB3aGljaCBpcyAoKChoaWdoMTYoY3ApJjB4MWYwMCk8PDgpfHJlc3VsdDsKKwkgKiAgICAgZWxzZSB0aGVyZSBpcyBhIFVTZXJpYWxpemVkU2V0IGF0IGNhbm9uU3RhcnRTZXRzK3Jlc3VsdAorCSAqLworZmluYWwgY2xhc3MgTm9ybWFsaXplckRhdGFSZWFkZXIgaW1wbGVtZW50cyBJQ1VCaW5hcnkuQXV0aGVudGljYXRlIHsKKwlwcml2YXRlIGZpbmFsIHN0YXRpYyBib29sZWFuIGRlYnVnID0gSUNVRGVidWcuZW5hYmxlZCgiTm9ybWFsaXplckRhdGFSZWFkZXIiKTsKKwkKKyAgIC8qKgorICAgICogPHA+UHJvdGVjdGVkIGNvbnN0cnVjdG9yLjwvcD4KKyAgICAqIEBwYXJhbSBpbnB1dFN0cmVhbSBJQ1UgdXByb3AuZGF0IGZpbGUgaW5wdXQgc3RyZWFtCisgICAgKiBAZXhjZXB0aW9uIElPRXhjZXB0aW9uIHRocm93IGlmIGRhdGEgZmlsZSBmYWlscyBhdXRoZW50aWNhdGlvbiAKKyAgICAqIEBkcmFmdCAyLjEKKyAgICAqLworICAgIHByb3RlY3RlZCBOb3JtYWxpemVyRGF0YVJlYWRlcihJbnB1dFN0cmVhbSBpbnB1dFN0cmVhbSkgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9ueworICAgICAgICBpZihkZWJ1ZykgU3lzdGVtLm91dC5wcmludGxuKCJCeXRlcyBpbiBpbnB1dFN0cmVhbSAiICsgaW5wdXRTdHJlYW0uYXZhaWxhYmxlKCkpOworICAgICAgICAKKyAgICAgICAgSUNVQmluYXJ5LnJlYWRIZWFkZXIoaW5wdXRTdHJlYW0sIERBVEFfRk9STUFUX0lELCB0aGlzKTsKKyAgICAgICAgCisgICAgICAgIGlmKGRlYnVnKSBTeXN0ZW0ub3V0LnByaW50bG4oIkJ5dGVzIGxlZnQgaW4gaW5wdXRTdHJlYW0gIiAraW5wdXRTdHJlYW0uYXZhaWxhYmxlKCkpOworICAgICAgICAKKyAgICAgICAgZGF0YUlucHV0U3RyZWFtID0gbmV3IERhdGFJbnB1dFN0cmVhbShpbnB1dFN0cmVhbSk7CisgICAgICAgIAorICAgICAgICBpZihkZWJ1ZykgU3lzdGVtLm91dC5wcmludGxuKCJCeXRlcyBsZWZ0IGluIGRhdGFJbnB1dFN0cmVhbSAiICtkYXRhSW5wdXRTdHJlYW0uYXZhaWxhYmxlKCkpOworICAgIH0KKyAgICAKKyAgICAvLyBwcm90ZWN0ZWQgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgcHJvdGVjdGVkIGludFtdIHJlYWRJbmRleGVzKGludCBsZW5ndGgpdGhyb3dzIElPRXhjZXB0aW9ueworICAgICAgICBpbnRbXSBpbmRleGVzID0gbmV3IGludFtsZW5ndGhdOworICAgICAgICAvL1JlYWQgdGhlIGluZGV4ZXMKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPGxlbmd0aCA7IGkrKykgeworICAgICAgICAgICAgIGluZGV4ZXNbaV0gPSBkYXRhSW5wdXRTdHJlYW0ucmVhZEludCgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBpbmRleGVzOworICAgIH0gCisgICAgLyoqCisgICAgKiA8cD5SZWFkcyB1bm9ybS5pY3UsIHBhcnNlIGl0IGludG8gYmxvY2tzIG9mIGRhdGEgdG8gYmUgc3RvcmVkIGluCisgICAgKiBOb3JtYWxpemVySW1wbC48L1AKKyAgICAqIEBwYXJhbSBub3JtQnl0ZXMKKyAgICAqIEBwYXJhbSBmY2RCeXRlcworICAgICogQHBhcmFtIGF1eEJ5dGVzCisgICAgKiBAcGFyYW0gZXh0cmFEYXRhCisgICAgKiBAcGFyYW0gY29tYmluaW5nVGFibGUKKyAgICAqIEBwYXJhbSBjYW5vblN0YXJ0U2V0cworICAgICogQGV4Y2VwdGlvbiB0aHJvd24gd2hlbiBkYXRhIHJlYWRpbmcgZmFpbHMKKyAgICAqIEBkcmFmdCAyLjEKKyAgICAqLworICAgIHByb3RlY3RlZCB2b2lkIHJlYWQoYnl0ZVtdIG5vcm1CeXRlcywgYnl0ZVtdIGZjZEJ5dGVzLCBieXRlW10gYXV4Qnl0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICBjaGFyW10gZXh0cmFEYXRhLCBjaGFyW10gY29tYmluaW5nVGFibGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0W10gY2Fub25TdGFydFNldHMpIAorICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9ueworCisJIAkvL1JlYWQgdGhlIGJ5dGVzIHRoYXQgbWFrZSB1cCB0aGUgbm9ybVRyaWUgCQorCSAJZGF0YUlucHV0U3RyZWFtLnJlYWQobm9ybUJ5dGVzKTsKKyAgICAgICAgCisJIAkvL25vcm1UcmllU3RyZWFtPSBuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0obm9ybUJ5dGVzKTsKKworCSAJLy9SZWFkIHRoZSBleHRyYSBkYXRhCisJIAlmb3IoaW50IGk9MDtpPGV4dHJhRGF0YS5sZW5ndGg7aSsrKXsKKwkgCQlleHRyYURhdGFbaV09ZGF0YUlucHV0U3RyZWFtLnJlYWRDaGFyKCk7CisJIAl9CisJIAkKKwkgCS8vUmVhZCB0aGUgY29tYmluaW5nIGNsYXNzIHRhYmxlCisJIAlmb3IoaW50IGk9MDsgaTxjb21iaW5pbmdUYWJsZS5sZW5ndGg7IGkrKyl7CisJIAkJY29tYmluaW5nVGFibGVbaV09ZGF0YUlucHV0U3RyZWFtLnJlYWRDaGFyKCk7CisJIAl9CisJIAkKKwkgCS8vUmVhZCB0aGUgZmNkVHJpZQorCSAJZGF0YUlucHV0U3RyZWFtLnJlYWQoZmNkQnl0ZXMpOworCSAJCisJIAkKKwkgCS8vUmVhZCB0aGUgQXV4VHJpZQkgCQorICAgICAgICBkYXRhSW5wdXRTdHJlYW0ucmVhZChhdXhCeXRlcyk7CisJCQorCQkvL1JlYWQgdGhlIGNhbm9uaWNhbCBzdGFydCBzZXRzCisJCWludFtdIGNhbm9uU3RhcnRTZXRzSW5kZXhlcyA9IG5ldyBpbnRbTm9ybWFsaXplckltcGwuU0VUX0lOREVYX1RPUF07CisJCQorICAgICAgICBmb3IoaW50IGk9MDsgaTxjYW5vblN0YXJ0U2V0c0luZGV4ZXMubGVuZ3RoOyBpKyspeworCSAJCWNhbm9uU3RhcnRTZXRzSW5kZXhlc1tpXT1kYXRhSW5wdXRTdHJlYW0ucmVhZENoYXIoKTsKKwkgCX0KKwkJCisgICAgICAgIGNoYXJbXSBzdGFydFNldHMgPSBuZXcgY2hhcltjYW5vblN0YXJ0U2V0c0luZGV4ZXNbTm9ybWFsaXplckltcGwuU0VUX0lOREVYX0NBTk9OX1NFVFNfTEVOR1RIXS1Ob3JtYWxpemVySW1wbC5TRVRfSU5ERVhfVE9QXTsKKyAgICAgICAgCisgICAgICAgIGZvcihpbnQgaT0wOyBpPHN0YXJ0U2V0cy5sZW5ndGg7IGkrKyl7CisJIAkJc3RhcnRTZXRzW2ldPWRhdGFJbnB1dFN0cmVhbS5yZWFkQ2hhcigpOworCSAJfQorCSAJY2hhcltdIGJtcFRhYmxlICA9IG5ldyBjaGFyW2Nhbm9uU3RhcnRTZXRzSW5kZXhlc1tOb3JtYWxpemVySW1wbC5TRVRfSU5ERVhfQ0FOT05fQk1QX1RBQkxFX0xFTkdUSF1dOworICAgICAgICBmb3IoaW50IGk9MDsgaTxibXBUYWJsZS5sZW5ndGg7IGkrKyl7CisJIAkJYm1wVGFibGVbaV09ZGF0YUlucHV0U3RyZWFtLnJlYWRDaGFyKCk7CisJIAl9CQkKKwkJY2hhcltdIHN1cHBUYWJsZSA9IG5ldyBjaGFyW2Nhbm9uU3RhcnRTZXRzSW5kZXhlc1tOb3JtYWxpemVySW1wbC5TRVRfSU5ERVhfQ0FOT05fU1VQUF9UQUJMRV9MRU5HVEhdXTsKKyAgICAgICAgZm9yKGludCBpPTA7IGk8c3VwcFRhYmxlLmxlbmd0aDsgaSsrKXsKKwkgCQlzdXBwVGFibGVbaV09ZGF0YUlucHV0U3RyZWFtLnJlYWRDaGFyKCk7CisJIAl9CisJIAljYW5vblN0YXJ0U2V0c1tOb3JtYWxpemVySW1wbC5DQU5PTl9TRVRfSU5ESUNJRVNfSU5ERVggIF0gPSBjYW5vblN0YXJ0U2V0c0luZGV4ZXM7CisJIAljYW5vblN0YXJ0U2V0c1tOb3JtYWxpemVySW1wbC5DQU5PTl9TRVRfU1RBUlRfU0VUU19JTkRFWF0gPSBzdGFydFNldHM7CisJIAljYW5vblN0YXJ0U2V0c1tOb3JtYWxpemVySW1wbC5DQU5PTl9TRVRfQk1QX1RBQkxFX0lOREVYCV0gPSBibXBUYWJsZTsKKwkgCWNhbm9uU3RhcnRTZXRzW05vcm1hbGl6ZXJJbXBsLkNBTk9OX1NFVF9TVVBQX1RBQkxFX0lOREVYXSA9IHN1cHBUYWJsZTsJIAkKKyAgICB9CisgICAgCisgICAgcHVibGljIGJ5dGVbXSBnZXREYXRhRm9ybWF0VmVyc2lvbigpeworICAgICAgICByZXR1cm4gREFUQV9GT1JNQVRfVkVSU0lPTjsKKyAgICB9CisgICAgCisgICAgcHVibGljIGJvb2xlYW4gaXNEYXRhVmVyc2lvbkFjY2VwdGFibGUoYnl0ZSB2ZXJzaW9uW10pCisgICAgeworICAgICAgICByZXR1cm4gdmVyc2lvblswXSA9PSBEQVRBX0ZPUk1BVF9WRVJTSU9OWzBdIAorICAgICAgICAgICAgICAgJiYgdmVyc2lvblsyXSA9PSBEQVRBX0ZPUk1BVF9WRVJTSU9OWzJdIAorICAgICAgICAgICAgICAgJiYgdmVyc2lvblszXSA9PSBEQVRBX0ZPUk1BVF9WRVJTSU9OWzNdOworICAgIH0KKyAgICAKKyAgICAvLyBwcml2YXRlIGRhdGEgbWVtYmVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAKKworICAgIC8qKgorICAgICogSUNVIGRhdGEgZmlsZSBpbnB1dCBzdHJlYW0KKyAgICAqLworICAgIHByaXZhdGUgRGF0YUlucHV0U3RyZWFtIGRhdGFJbnB1dFN0cmVhbTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIC8qKgorICAgICogRmlsZSBmb3JtYXQgdmVyc2lvbiB0aGF0IHRoaXMgY2xhc3MgdW5kZXJzdGFuZHMuCisgICAgKiBObyBndWFyYW50ZWVzIGFyZSBtYWRlIGlmIGEgb2xkZXIgdmVyc2lvbiBpcyB1c2VkCisgICAgKiBzZWUgc3RvcmUuYyBvZiBnZW5ub3JtIGZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCB2YWx1ZXMKKyAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJ5dGUgREFUQV9GT1JNQVRfSURbXSA9IHsoYnl0ZSkweDRFLCAoYnl0ZSkweDZGLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnl0ZSkweDcyLCAoYnl0ZSkweDZEfTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIERBVEFfRk9STUFUX1ZFUlNJT05bXSA9IHsoYnl0ZSkweDIsIChieXRlKTB4MiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChieXRlKTB4NSwgKGJ5dGUpMHgyfTsKKwkKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL05vcm1hbGl6ZXJJbXBsLmphdmEgYi9zcmMvY29tL2libS9pY3UvaW1wbC9Ob3JtYWxpemVySW1wbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExMzZkYmYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9Ob3JtYWxpemVySW1wbC5qYXZhCkBAIC0wLDAgKzEsMzU0NyBAQAorIC8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9pbXBsL05vcm1hbGl6ZXJJbXBsLmphdmEsdiAkCisgKiAkRGF0ZTogMjAwMi8xMi8xMSAyMzoyOTo1MSAkCisgKiAkUmV2aXNpb246IDEuMTQgJAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworIAorcGFja2FnZSBjb20uaWJtLmljdS5pbXBsOworaW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmlvLkJ1ZmZlcmVkSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKKworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuTm9ybWFsaXplcjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0LlVURjE2OwkKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0LlVuaWNvZGVTZXQ7CitpbXBvcnQgY29tLmlibS5pY3UudXRpbC5SYW5nZVZhbHVlSXRlcmF0b3I7CitpbXBvcnQgY29tLmlibS5pY3UubGFuZy5VQ2hhcmFjdGVyOworCisvKioKKyAqIEB2ZXJzaW9uIAkxLjAKKyAqIEBhdXRob3IgIFJhbSBWaXN3YW5hZGhhCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBOb3JtYWxpemVySW1wbCB7CisJLy8gU3RhdGljIGJsb2NrIGZvciB0aGUgY2xhc3MgdG8gaW5pdGlhbGl6ZSBpdHMgb3duIHNlbGYgCisJc3RhdGljIGZpbmFsIE5vcm1hbGl6ZXJJbXBsIElNUEw7CisJCisJc3RhdGljCisgICAgeworICAgICAgICB0cnkKKyAgICAgICAgeworICAgICAgICAgICAgSU1QTCA9IG5ldyBOb3JtYWxpemVySW1wbCgpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkKKyAgICAgICAgeworICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oZS5nZXRNZXNzYWdlKCkpOworICAgICAgICB9CisgICAgfQorCQorCXN0YXRpYyBmaW5hbCBpbnQgVU5TSUdORURfQllURV9NQVNLID0weEZGOworCXN0YXRpYyBmaW5hbCBsb25nIFVOU0lHTkVEX0lOVF9NQVNLID0gMHhmZmZmZmZmZkw7CisJLyoKKwkgKiBUaGlzIG5ldyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbm9ybWFsaXphdGlvbiBjb2RlIGxvYWRzIGl0cyBkYXRhIGZyb20KKwkgKiB1bm9ybS5pY3UsIHdoaWNoIGlzIGdlbmVyYXRlZCB3aXRoIHRoZSBnZW5ub3JtIHRvb2wuCisJICogVGhlIGZvcm1hdCBvZiB0aGF0IGZpbGUgaXMgZGVzY3JpYmVkIGF0IHRoZSBlbmQgb2YgdGhpcyBmaWxlLgorCSAqLworCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBEQVRBX0ZJTEVfTkFNRSA9ICJkYXRhL3Vub3JtLmljdSI7CisJCisJLy8gbm9ybTMyIHZhbHVlIGNvbnN0YW50cyAKKwkKKyAgICAvLyBxdWljayBjaGVjayBmbGFncyAwLi4zIHNldCBtZWFuICJubyIgZm9yIHRoZWlyIGZvcm1zIAorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFFDX05GQz0weDExOyAgICAgICAgICAvKiBub3xtYXliZSAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFFDX05GS0M9MHgyMjsgICAgICAgICAvKiBub3xtYXliZSAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFFDX05GRD00OyAgICAgICAgICAgICAvKiBubyAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFFDX05GS0Q9ODsgICAgICAgICAgICAvKiBubyAqLworCQorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFFDX0FOWV9OTz0weGY7CisKKyAgICAvKiBxdWljayBjaGVjayBmbGFncyA0Li41IG1lYW4gIm1heWJlIiBmb3IgdGhlaXIgZm9ybXM7IAorICAgICAqIHRlc3QgZmxhZ3M+PVFDX01BWUJFIAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFFDX01BWUJFPTB4MTA7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUUNfQU5ZX01BWUJFPTB4MzA7CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBRQ19NQVNLPTB4M2Y7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ09NQklORVNfRldEPTB4NDA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENPTUJJTkVTX0JBQ0s9MHg4MDsKKyAgICBwdWJsaWMgIHN0YXRpYyBmaW5hbCBpbnQgQ09NQklORVNfQU5ZPTB4YzA7CisgICAgLy8gVW5pY29kZURhdGEudHh0IGNvbWJpbmluZyBjbGFzcyBpbiBiaXRzIDE1LgorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDQ19TSElGVD04OyAgICAgICAgICAgCQkgIAorICAgIHB1YmxpYyAgc3RhdGljIGZpbmFsIGludCBDQ19NQVNLPTB4ZmYwMDsKKyAgICAvLyAxNiBiaXRzIGZvciB0aGUgaW5kZXggdG8gVUNoYXJzIGFuZCBvdGhlciBleHRyYSBkYXRhCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEVYVFJBX1NISUZUPTE2OworICAgIC8vIHN0YXJ0IG9mIHN1cnJvZ2F0ZSBzcGVjaWFscyBhZnRlciBzaGlmdCAgICAgICAgICAgICAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRVhUUkFfSU5ERVhfVE9QPTB4ZmMwMDsgICAgICAgCisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRVhUUkFfU1VSUk9HQVRFX01BU0s9MHgzZmY7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEVYVFJBX1NVUlJPR0FURV9UT1A9MHgzZjA7ICAgIC8qIGhhbmd1bCBldGMuICovCisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRVhUUkFfSEFOR1VMPUVYVFJBX1NVUlJPR0FURV9UT1A7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEVYVFJBX0pBTU9fTD1FWFRSQV9TVVJST0dBVEVfVE9QKzE7LyogIyMjIG5vdCB1c2VkICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEVYVFJBX0pBTU9fVj1FWFRSQV9TVVJST0dBVEVfVE9QKzI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEVYVFJBX0pBTU9fVD1FWFRSQV9TVVJST0dBVEVfVE9QKzM7CisJCisJLyogbm9ybTMyIHZhbHVlIGNvbnN0YW50cyB1c2luZyA+MTYgYml0cyAqLworCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgIE1JTl9TUEVDSUFMICAgID0gIChsb25nKSgweGZjMDAwMDAwICYgVU5TSUdORURfSU5UX01BU0spOworCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgIFNVUlJPR0FURVNfVE9QID0gIChsb25nKSgweGZmZjAwMDAwICYgVU5TSUdORURfSU5UX01BU0spOworCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgIE1JTl9IQU5HVUwgICAgID0gIChsb25nKSgweGZmZjAwMDAwICYgVU5TSUdORURfSU5UX01BU0spOworCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgIE1JTl9KQU1PX1YgICAgID0gIChsb25nKSgweGZmZjIwMDAwICYgVU5TSUdORURfSU5UX01BU0spOworCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgIEpBTU9fVl9UT1AgICAgID0gIChsb25nKSgweGZmZjMwMDAwICYgVU5TSUdORURfSU5UX01BU0spOworCQorCQorCS8qIGluZGV4ZXNbXSB2YWx1ZSBuYW1lcyAqLworCS8qIG51bWJlciBvZiBieXRlcyBpbiBub3JtYWxpemF0aW9uIHRyaWUgKi8KKwlzdGF0aWMgZmluYWwgaW50IElOREVYX1RSSUVfU0laRSAJCSAgPSAwOworICAgICAvKiBudW1iZXIgb2YgY2hhcnMgaW4gZXh0cmEgZGF0YSAqLyAgICAgCisJc3RhdGljIGZpbmFsIGludCBJTkRFWF9DSEFSX0NPVU5UIAkJICA9IDE7ICAgIAorCS8qIG51bWJlciBvZiB1aW50MTZfdCB3b3JkcyBmb3IgY29tYmluaW5nIGRhdGEgKi8KKwlzdGF0aWMgZmluYWwgaW50IElOREVYX0NPTUJJTkVfREFUQV9DT1VOVCA9IDI7CisgICAgLyogbnVtYmVyIG9mIGNvZGUgcG9pbnRzIHRoYXQgY29tYmluZSBmb3J3YXJkICovICAgICAKKwlzdGF0aWMgZmluYWwgaW50IElOREVYX0NPTUJJTkVfRldEX0NPVU5UICA9IDM7CisgICAgLyogbnVtYmVyIG9mIGNvZGUgcG9pbnRzIHRoYXQgY29tYmluZSBmb3J3YXJkIGFuZCBiYWNrd2FyZCAqLyAgICAgCisJc3RhdGljIGZpbmFsIGludCBJTkRFWF9DT01CSU5FX0JPVEhfQ09VTlQgPSA0OworICAgIC8qIG51bWJlciBvZiBjb2RlIHBvaW50cyB0aGF0IGNvbWJpbmUgYmFja3dhcmQgKi8gICAgIAorCXN0YXRpYyBmaW5hbCBpbnQgSU5ERVhfQ09NQklORV9CQUNLX0NPVU5UID0gNTsgICAgIAorCSAvKiBmaXJzdCBjb2RlIHBvaW50IHdpdGggcXVpY2sgY2hlY2sgTkZDIE5PL01BWUJFICovCisJcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSU5ERVhfTUlOX05GQ19OT19NQVlCRSAgID0gNjsKKyAgICAvKiBmaXJzdCBjb2RlIHBvaW50IHdpdGggcXVpY2sgY2hlY2sgTkZLQyBOTy9NQVlCRSAqLyAgICAKKwlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBJTkRFWF9NSU5fTkZLQ19OT19NQVlCRSAgPSA3OworICAgICAvKiBmaXJzdCBjb2RlIHBvaW50IHdpdGggcXVpY2sgY2hlY2sgTkZEIE5PL01BWUJFICovICAgICAKKwlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBJTkRFWF9NSU5fTkZEX05PX01BWUJFICAgPSA4OworICAgIC8qIGZpcnN0IGNvZGUgcG9pbnQgd2l0aCBxdWljayBjaGVjayBORktEIE5PL01BWUJFICovICAgIAorCXB1YmxpYyBzdGF0aWMgZmluYWwgaW50IElOREVYX01JTl9ORktEX05PX01BWUJFICA9IDk7ICAgICAKKwkvKiBudW1iZXIgb2YgYnl0ZXMgaW4gRkNEIHRyaWUgKi8KKwlzdGF0aWMgZmluYWwgaW50IElOREVYX0ZDRF9UUklFX1NJWkUgICAgICA9IDEwOworICAgIC8qIG51bWJlciBvZiBieXRlcyBpbiB0aGUgYXV4aWxpYXJ5IHRyaWUgKi8gICAgCisgICAgc3RhdGljIGZpbmFsIGludCBJTkRFWF9BVVhfVFJJRV9TSVpFICAgICAgPSAxMTsKKyAgICAvKiBudW1iZXIgb2YgdWludDE2X3QgaW4gdGhlIGFycmF5IG9mIHNlcmlhbGl6ZWQgVVNldCAqLyAgICAKKyAgICBzdGF0aWMgZmluYWwgaW50IElOREVYX0NBTk9OX1NFVF9DT1VOVCAgICA9IDEyOyAgICAKKyAgICAvKiBjaGFuZ2luZyB0aGlzIHJlcXVpcmVzIGEgbmV3IGZvcm1hdFZlcnNpb24gKi8KKwlzdGF0aWMgZmluYWwgaW50IElOREVYX1RPUCAgICAgICAgICAgICAgICA9IDMyOyAgICAKKwkKKwkKKwkvKiBBVVggY29uc3RhbnRzICovCisJLyogdmFsdWUgY29uc3RhbnRzIGZvciBhdXhUcmllICovCQorCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBBVVhfVU5TQUZFX1NISUZUCSAgICAgICA9IDExOworCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBBVVhfQ09NUF9FWF9TSElGVAkgICAgICAgPSAxMDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQVVYX05GQ19TS0lQUEFCTEVfRl9TSElGVCA9IDEyOworCQorCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBBVVhfTUFYX0ZOQyAgICAgICAgICA9ICAgKChpbnQpMTw8QVVYX0NPTVBfRVhfU0hJRlQpOworCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBBVVhfVU5TQUZFX01BU0sgICAgICA9ICAgKGludCkoKDE8PEFVWF9VTlNBRkVfU0hJRlQpICYgVU5TSUdORURfSU5UX01BU0spOworCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBBVVhfRk5DX01BU0sgICAgICAgICA9ICAgKGludCkoKEFVWF9NQVhfRk5DLTEpICYgVU5TSUdORURfSU5UX01BU0spOworCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBBVVhfQ09NUF9FWF9NQVNLICAgICA9ICAgKGludCkoKDE8PEFVWF9DT01QX0VYX1NISUZUKSAmIFVOU0lHTkVEX0lOVF9NQVNLKTsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIEFVWF9ORkNfU0tJUF9GX01BU0sgPSAgICgoVU5TSUdORURfSU5UX01BU0smMSk8PEFVWF9ORkNfU0tJUFBBQkxFX0ZfU0hJRlQpOworICAgIAorCS8qIGNhbm9uU3RhcnRTZXRzWzAuLjMxXSBjb250YWlucyBpbmRleGVzIGZvciB3aGF0IGlzIGluIHRoZSBhcnJheSAqLworICAgIC8qIG51bWJlciBvZiB1aW50MTZfdCBpbiBjYW5vbmljYWwgc3RhcnRlciBzZXRzICovCisgICAgc3RhdGljIGZpbmFsIGludCBTRVRfSU5ERVhfQ0FOT05fU0VUU19MRU5HVEgJCT0gMDsKKyAgICAvKiBudW1iZXIgb2YgdWludDE2X3QgaW4gdGhlIEJNUCBzZWFyY2ggdGFibGUgKGNvbnRhaW5zIHBhaXJzKSAqLyAKKyAgICBzdGF0aWMgZmluYWwgaW50IFNFVF9JTkRFWF9DQU5PTl9CTVBfVEFCTEVfTEVOR1RICT0gMTsKKyAgICAvKiBudW1iZXIgb2YgdWludDE2X3QgaW4gdGhlIHN1cHBsZW1lbnRhcnkgc2VhcmNoIHRhYmxlKGNvbnRhaW5zIHRyaXBsZXRzKSovIAorICAgIHN0YXRpYyBmaW5hbCBpbnQgU0VUX0lOREVYX0NBTk9OX1NVUFBfVEFCTEVfTEVOR1RIICA9IDI7CisgICAgLyogY2hhbmdpbmcgdGhpcyByZXF1aXJlcyBhIG5ldyBmb3JtYXRWZXJzaW9uICovIAorICAgIHN0YXRpYyBmaW5hbCBpbnQgU0VUX0lOREVYX1RPUAkJCQkJCT0gMzI7CisJCisJc3RhdGljIGZpbmFsIGludCBDQU5PTl9TRVRfSU5ESUNJRVNfSU5ERVggIAkJCT0gMDsKKwlzdGF0aWMgZmluYWwgaW50IENBTk9OX1NFVF9TVEFSVF9TRVRTX0lOREVYCQkJPSAxOworCXN0YXRpYyBmaW5hbCBpbnQgQ0FOT05fU0VUX0JNUF9UQUJMRV9JTkRFWAkJCT0gMjsKKwlzdGF0aWMgZmluYWwgaW50IENBTk9OX1NFVF9TVVBQX1RBQkxFX0lOREVYCQkJPSAzOworCS8qIDE0IGJpdCBpbmRleGVzIHRvIGNhbm9uaWNhbCBVU2VyaWFsaXplZFNldHMgKi8KKwlzdGF0aWMgZmluYWwgaW50IENBTk9OX1NFVF9NQVhfQ0FOT05fU0VUUyAgICAgCQk9IDB4NDAwMDsgCisJLyogc2luZ2xlLWNvZGUgcG9pbnQgQk1QIHNldHMgYXJlIGVuY29kZWQgZGlyZWN0bHkgaW4gdGhlIHNlYXJjaCB0YWJsZSAKKyAgICAgKiBleGNlcHQgaWYgcmVzdWx0PTB4NDAwMC4uMHg3ZmZmIAorICAgICAqLworCXN0YXRpYyBmaW5hbCBpbnQgQ0FOT05fU0VUX0JNUF9NQVNLICAgICAgICAJCQk9IDB4YzAwMDsKKwlzdGF0aWMgZmluYWwgaW50IENBTk9OX1NFVF9CTVBfSVNfSU5ERVggICAgCQkJPSAweDQwMDA7CisgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1BWF9CVUZGRVJfU0laRSAgICAgICAgICAgICAgICAgICAgPSAyMDsKKwkKKyAgICAvKioKKwkgKiBJbnRlcm5hbCBvcHRpb24gZm9yIGNtcEVxdWl2Rm9sZCgpIGZvciBkZWNvbXBvc2luZy4KKwkgKiBJZiBub3Qgc2V0LCBqdXN0IGRvIHN0cmNhc2VjbXAoKS4KKwkgKiBAaW50ZXJuYWwKKwkgKi8KKwkgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENPTVBBUkVfRVFVSVYgPSAweDgwMDAwOworCQorCS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisJLyogV3JhcHBlcnMgZm9yIFRyaWUgaW1wbGVtZW50YXRpb25zICovIAorCXN0YXRpYyBmaW5hbCBjbGFzcyBOb3JtVHJpZUltcGwgaW1wbGVtZW50cyBUcmllLkRhdGFNYW5pcHVsYXRleworCQlzdGF0aWMgSW50VHJpZSBub3JtVHJpZT0gbnVsbDsKKwkgICAvKioKKwkgICAgKiBDYWxsZWQgYnkgY29tLmlibS5pY3UudXRpbC5UcmllIHRvIGV4dHJhY3QgZnJvbSBhIGxlYWQgc3Vycm9nYXRlJ3MgCisJICAgICogZGF0YSB0aGUgaW5kZXggYXJyYXkgb2Zmc2V0IG9mIHRoZSBpbmRleGVzIGZvciB0aGF0IGxlYWQgc3Vycm9nYXRlLgorCSAgICAqIEBwYXJhbSBwcm9wZXJ0eSBkYXRhIHZhbHVlIGZvciBhIHN1cnJvZ2F0ZSBmcm9tIHRoZSB0cmllLCBpbmNsdWRpbmcgCisgICAgICAgICogICAgICAgICB0aGUgZm9sZGluZyBvZmZzZXQKKwkgICAgKiBAcmV0dXJuIGRhdGEgb2Zmc2V0IG9yIDAgaWYgdGhlcmUgaXMgbm8gZGF0YSBmb3IgdGhlIGxlYWQgc3Vycm9nYXRlCisJICAgICovCisgICAgICAgIC8qIG5vcm1UcmllOiAzMi1iaXQgdHJpZSByZXN1bHQgbWF5IGNvbnRhaW4gYSBzcGVjaWFsIGV4dHJhRGF0YSBpbmRleCB3aXRoIHRoZSBmb2xkaW5nIG9mZnNldCAqLworCSAgICBwdWJsaWMgaW50IGdldEZvbGRpbmdPZmZzZXQoaW50IHZhbHVlKXsKKyAgICAgICAgICAgIHJldHVybiAgQk1QX0lOREVYX0xFTkdUSCsKKyAgICAgICAgICAgICAgICAgICAgKCh2YWx1ZT4+KEVYVFJBX1NISUZULVNVUlJPR0FURV9CTE9DS19CSVRTKSkmCisgICAgICAgICAgICAgICAgICAgICgweDNmZjw8U1VSUk9HQVRFX0JMT0NLX0JJVFMpKTsgCisJICAgIH0KKwkJCisJfQorCXN0YXRpYyBmaW5hbCBjbGFzcyBGQ0RUcmllSW1wbCBpbXBsZW1lbnRzIFRyaWUuRGF0YU1hbmlwdWxhdGV7CisJCXN0YXRpYyBDaGFyVHJpZSBmY2RUcmllPW51bGw7CisJICAgLyoqCisJICAgICogQ2FsbGVkIGJ5IGNvbS5pYm0uaWN1LnV0aWwuVHJpZSB0byBleHRyYWN0IGZyb20gYSBsZWFkIHN1cnJvZ2F0ZSdzIAorCSAgICAqIGRhdGEgdGhlIGluZGV4IGFycmF5IG9mZnNldCBvZiB0aGUgaW5kZXhlcyBmb3IgdGhhdCBsZWFkIHN1cnJvZ2F0ZS4KKwkgICAgKiBAcGFyYW0gcHJvcGVydHkgZGF0YSB2YWx1ZSBmb3IgYSBzdXJyb2dhdGUgZnJvbSB0aGUgdHJpZSwgaW5jbHVkaW5nCisgICAgICAgICogICAgICAgICB0aGUgZm9sZGluZyBvZmZzZXQKKwkgICAgKiBAcmV0dXJuIGRhdGEgb2Zmc2V0IG9yIDAgaWYgdGhlcmUgaXMgbm8gZGF0YSBmb3IgdGhlIGxlYWQgc3Vycm9nYXRlCisJICAgICovCisgICAgICAgIC8qIGZjZFRyaWU6IHRoZSBmb2xkaW5nIG9mZnNldCBpcyB0aGUgbGVhZCBGQ0QgdmFsdWUgaXRzZWxmICovCisJICAgIHB1YmxpYyBpbnQgZ2V0Rm9sZGluZ09mZnNldChpbnQgdmFsdWUpeworCQkJcmV0dXJuIHZhbHVlOworCSAgICB9CisJfQorCQorCXN0YXRpYyBmaW5hbCBjbGFzcyBBdXhUcmllSW1wbCBpbXBsZW1lbnRzIFRyaWUuRGF0YU1hbmlwdWxhdGV7CisJCXN0YXRpYyBDaGFyVHJpZSBhdXhUcmllID0gbnVsbDsKKwkgICAvKioKKwkgICAgKiBDYWxsZWQgYnkgY29tLmlibS5pY3UudXRpbC5UcmllIHRvIGV4dHJhY3QgZnJvbSBhIGxlYWQgc3Vycm9nYXRlJ3MgCisJICAgICogZGF0YSB0aGUgaW5kZXggYXJyYXkgb2Zmc2V0IG9mIHRoZSBpbmRleGVzIGZvciB0aGF0IGxlYWQgc3Vycm9nYXRlLgorCSAgICAqIEBwYXJhbSBwcm9wZXJ0eSBkYXRhIHZhbHVlIGZvciBhIHN1cnJvZ2F0ZSBmcm9tIHRoZSB0cmllLCBpbmNsdWRpbmcgCisgICAgICAgICogICAgICAgIHRoZSBmb2xkaW5nIG9mZnNldAorCSAgICAqIEByZXR1cm4gZGF0YSBvZmZzZXQgb3IgMCBpZiB0aGVyZSBpcyBubyBkYXRhIGZvciB0aGUgbGVhZCBzdXJyb2dhdGUKKwkgICAgKi8KKyAgICAgICAgLyogYXV4VHJpZTogdGhlIGZvbGRpbmcgb2Zmc2V0IGlzIGluIGJpdHMgOS4uMCBvZiB0aGUgMTYtYml0IHRyaWUgcmVzdWx0ICovCisJICAgIHB1YmxpYyBpbnQgZ2V0Rm9sZGluZ09mZnNldChpbnQgdmFsdWUpeworCSAgICAgICAgcmV0dXJuIChpbnQpKHZhbHVlICZBVVhfRk5DX01BU0spPDxTVVJST0dBVEVfQkxPQ0tfQklUUzsKKwkgICAgfQorCX0KKwkJIAorCS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCQorCQorCXN0YXRpYyBGQ0RUcmllSW1wbCBmY2RUcmllSW1wbDsKKwlzdGF0aWMgTm9ybVRyaWVJbXBsIG5vcm1UcmllSW1wbDsKKwlzdGF0aWMgQXV4VHJpZUltcGwgYXV4VHJpZUltcGw7CisJcHJpdmF0ZSBzdGF0aWMgaW50W10gaW5kZXhlczsKKwlzdGF0aWMgY2hhcltdIGNvbWJpbmluZ1RhYmxlOworCXN0YXRpYyBjaGFyW10gZXh0cmFEYXRhOworCXN0YXRpYyBPYmplY3RbXSBjYW5vblN0YXJ0U2V0czsKKwkKKwlzdGF0aWMgYm9vbGVhbiBpc0RhdGFMb2FkZWQ7CisJc3RhdGljIGJvb2xlYW4gaXNGb3JtYXRWZXJzaW9uXzJfMTsKKyAgICBzdGF0aWMgYm9vbGVhbiBpc0Zvcm1hdFZlcnNpb25fMl8yOworCS8qKgorICAgICAqIERlZmF1bHQgYnVmZmVyIHNpemUgb2YgZGF0YWZpbGUKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgREFUQV9CVUZGRVJfU0laRSA9IDI1MDAwOworCQorCS8qKgorICAgICAqIEZDRCBjaGVjazogZXZlcnl0aGluZyBiZWxvdyB0aGlzIGNvZGUgcG9pbnQgaXMga25vd24gdG8gaGF2ZSBhIDAgCisgICAgICogbGVhZCBjb21iaW5pbmcgY2xhc3MgCisgICAgICovCisJcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTUlOX1dJVEhfTEVBRF9DQz0weDMwMDsKKworCisgICAgLyoqCisgICAgICogQml0IDcgb2YgdGhlIGxlbmd0aCBieXRlIGZvciBhIGRlY29tcG9zaXRpb24gc3RyaW5nIGluIGV4dHJhIGRhdGEgaXMKKyAgICAgKiBhIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBkZWNvbXBvc2l0aW9uIHN0cmluZyBpcworICAgICAqIHByZWNlZGVkIGJ5IGEgMTYtYml0IHdvcmQgd2l0aCB0aGUgbGVhZGluZyBhbmQgdHJhaWxpbmcgY2MKKyAgICAgKiBvZiB0aGUgZGVjb21wb3NpdGlvbiAobGlrZSBmb3IgQS11bWxhdXQpOworICAgICAqIGlmIG5vdCwgdGhlbiBib3RoIGNjJ3MgYXJlIHplcm8gKGxpa2UgZm9yIGNvbXBhdGliaWxpdHkgaWRlb2dyYXBocykuCisgICAgICovCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IERFQ09NUF9GTEFHX0xFTkdUSF9IQVNfQ0M9MHg4MDsKKyAgICAvKioKKwkgKiBCaXRzIDYuLjAgb2YgdGhlIGxlbmd0aCBieXRlIGNvbnRhaW4gdGhlIGFjdHVhbCBsZW5ndGguCisJICovCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IERFQ09NUF9MRU5HVEhfTUFTSz0weDdmOyAgIAorCQorCS8qKiBMZW5ndGggb2YgdGhlIEJNUCBwb3J0aW9uIG9mIHRoZSBpbmRleCAoc3RhZ2UgMSkgYXJyYXkuICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEJNUF9JTkRFWF9MRU5HVEg9MHgxMDAwMD4+VHJpZS5JTkRFWF9TVEFHRV8xX1NISUZUXzsKKyAgICAvKiogTnVtYmVyIG9mIGJpdHMgb2YgYSB0cmFpbCBzdXJyb2dhdGUgdGhhdCBhcmUgdXNlZCBpbiBpbmRleCB0YWJsZSAKKyAgICAgKiBsb29rdXBzLiAKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU1VSUk9HQVRFX0JMT0NLX0JJVFM9MTAtVHJpZS5JTkRFWF9TVEFHRV8xX1NISUZUXzsKKworCisgICAvLyBwdWJsaWMgdXRpbGl0eQorICAgcHVibGljIHN0YXRpYyBpbnQgZ2V0RnJvbUluZGV4ZXNBcnIoaW50IGluZGV4KXsKKyAgICAgICAgcmV0dXJuIGluZGV4ZXNbaW5kZXhdOworICAgfQorICAgCisgICAvLyBwcm90ZWN0ZWQgY29uc3RydWN0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvcgorICAgICogQGV4Y2VwdGlvbiB0aHJvd24gd2hlbiBkYXRhIHJlYWRpbmcgZmFpbHMgb3IgZGF0YSBjb3JydXB0ZWQKKyAgICAqLworICAgIHByaXZhdGUgTm9ybWFsaXplckltcGwoKSB0aHJvd3MgSU9FeGNlcHRpb257CisgICAgICAgIC8vZGF0YSBzaG91bGQgYmUgbG9hZGVkIG9ubHkgb25jZQorICAgICAgICBpZighaXNEYXRhTG9hZGVkKXsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gamFyIGFjY2VzcworICAgICAgICAgICAgSW5wdXRTdHJlYW0gaSA9IGdldENsYXNzKCkuZ2V0UmVzb3VyY2VBc1N0cmVhbShEQVRBX0ZJTEVfTkFNRSk7CisgICAgICAgICAgICBCdWZmZXJlZElucHV0U3RyZWFtIGIgPSBuZXcgQnVmZmVyZWRJbnB1dFN0cmVhbShpLERBVEFfQlVGRkVSX1NJWkUpOworICAgICAgICAgICAgTm9ybWFsaXplckRhdGFSZWFkZXIgcmVhZGVyID0gbmV3IE5vcm1hbGl6ZXJEYXRhUmVhZGVyKGIpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyByZWFkIHRoZSBpbmRleGVzICAgICAgICAgICAgCisgICAgICAgICAgICBpbmRleGVzID0gcmVhZGVyLnJlYWRJbmRleGVzKE5vcm1hbGl6ZXJJbXBsLklOREVYX1RPUCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGJ5dGVbXSBub3JtQnl0ZXMgPSBuZXcgYnl0ZVtpbmRleGVzW05vcm1hbGl6ZXJJbXBsLklOREVYX1RSSUVfU0laRV1dOworICAgICAgICAgICAgCisgICAgICAgICAgICBpbnQgY29tYmluaW5nVGFibGVUb3AgPSBpbmRleGVzW05vcm1hbGl6ZXJJbXBsLklOREVYX0NPTUJJTkVfREFUQV9DT1VOVF07CisgICAgICAgICAgICBjb21iaW5pbmdUYWJsZSA9IG5ldyBjaGFyW2NvbWJpbmluZ1RhYmxlVG9wXTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaW50IGV4dHJhRGF0YVRvcCA9IGluZGV4ZXNbTm9ybWFsaXplckltcGwuSU5ERVhfQ0hBUl9DT1VOVF07CisgICAgICAgICAgICBleHRyYURhdGEgPSBuZXcgY2hhcltleHRyYURhdGFUb3BdOworCisgICAgICAgICAgICBieXRlW10gZmNkQnl0ZXMgPSBuZXcgYnl0ZVtpbmRleGVzW05vcm1hbGl6ZXJJbXBsLklOREVYX0ZDRF9UUklFX1NJWkVdXTsKKyAgICAgICAgICAgIGJ5dGVbXSBhdXhCeXRlcyA9IG5ldyBieXRlW2luZGV4ZXNbTm9ybWFsaXplckltcGwuSU5ERVhfQVVYX1RSSUVfU0laRV1dOworICAgICAgICAgICAgY2Fub25TdGFydFNldHM9bmV3IE9iamVjdFtOb3JtYWxpemVySW1wbC5DQU5PTl9TRVRfTUFYX0NBTk9OX1NFVFNdOworICAgICAgICAgICAgCisgICAgICAgICAgICBmY2RUcmllSW1wbCA9IG5ldyBGQ0RUcmllSW1wbCgpOworICAgICAgICAgICAgbm9ybVRyaWVJbXBsID0gbmV3IE5vcm1UcmllSW1wbCgpOworICAgICAgICAgICAgYXV4VHJpZUltcGwgPSBuZXcgQXV4VHJpZUltcGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorCisgICAgICAgICAgICAvLyBsb2FkIHRoZSByZXN0IG9mIHRoZSBkYXRhIGRhdGEgYW5kIGluaXRpYWxpemUgdGhlIGRhdGEgbWVtYmVycworICAgICAgICAgICAgcmVhZGVyLnJlYWQobm9ybUJ5dGVzLCBmY2RCeXRlcyxhdXhCeXRlcywgZXh0cmFEYXRhLCBjb21iaW5pbmdUYWJsZSwgCisgICAgICAgICAgICAgICAgICAgICAgICBjYW5vblN0YXJ0U2V0cyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIG5vcm1UcmllSW1wbC5ub3JtVHJpZSA9IG5ldyBJbnRUcmllKCBuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0obm9ybUJ5dGVzKSxub3JtVHJpZUltcGwgKTsKKyAgICAgICAgICAgIGZjZFRyaWVJbXBsLmZjZFRyaWUgICA9IG5ldyBDaGFyVHJpZSggbmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKGZjZEJ5dGVzKSxmY2RUcmllSW1wbCAgKTsKKyAgICAgICAgICAgIGF1eFRyaWVJbXBsLmF1eFRyaWUgICA9IG5ldyBDaGFyVHJpZSggbmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKGF1eEJ5dGVzKSxhdXhUcmllSW1wbCAgKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gd2UgcmVhY2hlZCBoZXJlIHdpdGhvdXQgYW55IGV4Y2VwdGlvbnMgc28gdGhlIGRhdGEgaXMgZnVsbHkgCisgICAgICAgICAgICAvLyBsb2FkZWQgc2V0IHRoZSB2YXJpYWJsZSB0byB0cnVlCisgICAgICAgICAgICBpc0RhdGFMb2FkZWQgPSB0cnVlOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBnZXQgdGhlIGRhdGEgZm9ybWF0IHZlcnNpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGJ5dGVbXSBmb3JtYXRWZXJzaW9uID0gcmVhZGVyLmdldERhdGFGb3JtYXRWZXJzaW9uKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlzRm9ybWF0VmVyc2lvbl8yXzEgPSggZm9ybWF0VmVyc2lvblswXT4yIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdFZlcnNpb25bMF09PTIgJiYgZm9ybWF0VmVyc2lvblsxXT49MSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICBpc0Zvcm1hdFZlcnNpb25fMl8yID0oIGZvcm1hdFZlcnNpb25bMF0+MiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb3JtYXRWZXJzaW9uWzBdPT0yICYmIGZvcm1hdFZlcnNpb25bMV0+PTIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgCisgICAgICAgICAgICBiLmNsb3NlKCk7CisgICAgICAgICAgICBpLmNsb3NlKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgICAgIAorCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwkKKwkvKiBLb3JlYW4gSGFuZ3VsIGFuZCBKYW1vIGNvbnN0YW50cyAqLworCQorCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBKQU1PX0xfQkFTRT0weDExMDA7ICAgICAvKiAibGVhZCIgamFtbyAqLworCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBKQU1PX1ZfQkFTRT0weDExNjE7ICAgICAvKiAidm93ZWwiIGphbW8gKi8KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSkFNT19UX0JBU0U9MHgxMWE3OyAgICAgLyogInRyYWlsIiBqYW1vICovCisJCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEhBTkdVTF9CQVNFPTB4YWMwMDsKKwkKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSkFNT19MX0NPVU5UPTE5OworCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBKQU1PX1ZfQ09VTlQ9MjE7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEpBTU9fVF9DT1VOVD0yODsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSEFOR1VMX0NPVU5UPUpBTU9fTF9DT1VOVCpKQU1PX1ZfQ09VTlQqSkFNT19UX0NPVU5UOworCQorCXByaXZhdGUgc3RhdGljIGJvb2xlYW4gaXNIYW5ndWxXaXRob3V0SmFtb1QoY2hhciBjKSB7CisJICAgIGMtPUhBTkdVTF9CQVNFOworCSAgICByZXR1cm4gYzxIQU5HVUxfQ09VTlQgJiYgYyVKQU1PX1RfQ09VTlQ9PTA7CisJfQorCQorCS8qIG5vcm0zMiBoZWxwZXJzICovCisJCisJLyogaXMgdGhpcyBhIG5vcm0zMiB3aXRoIGEgcmVndWxhciBpbmRleD8gKi8KKwlwcml2YXRlIHN0YXRpYyBib29sZWFuIGlzTm9ybTMyUmVndWxhcihsb25nIG5vcm0zMikgeworCSAgICByZXR1cm4gbm9ybTMyPE1JTl9TUEVDSUFMOworCX0KKwkKKwkvKiBpcyB0aGlzIGEgbm9ybTMyIHdpdGggYSBzcGVjaWFsIGluZGV4IGZvciBhIGxlYWQgc3Vycm9nYXRlPyAqLworCXByaXZhdGUgc3RhdGljIGJvb2xlYW4gaXNOb3JtMzJMZWFkU3Vycm9nYXRlKGxvbmcgbm9ybTMyKSB7CisJICAgIHJldHVybiBNSU5fU1BFQ0lBTDw9bm9ybTMyICYmIG5vcm0zMjxTVVJST0dBVEVTX1RPUDsKKwl9CisJCisJLyogaXMgdGhpcyBhIG5vcm0zMiB3aXRoIGEgc3BlY2lhbCBpbmRleCBmb3IgYSBIYW5ndWwgc3lsbGFibGUgb3IgYSBKYW1vPyAqLworCXByaXZhdGUgc3RhdGljIGJvb2xlYW4gaXNOb3JtMzJIYW5ndWxPckphbW8obG9uZyBub3JtMzIpIHsKKwkgICAgcmV0dXJuIG5vcm0zMj49TUlOX0hBTkdVTDsKKwl9CisJCisJLyoKKwkgKiBHaXZlbiBpc05vcm0zMkhhbmd1bE9ySmFtbygpLAorCSAqIGlzIHRoaXMgYSBIYW5ndWwgc3lsbGFibGUgb3IgYSBKYW1vPworCSAqLworCXByaXZhdGUgc3RhdGljICBib29sZWFuIGlzSGFuZ3VsSmFtb05vcm0zMkhhbmd1bE9ySmFtb0wobG9uZyBub3JtMzIpIHsKKwkgICAgcmV0dXJuIG5vcm0zMjxNSU5fSkFNT19WOworCX0KKwkKKwkvKgorCSAqIEdpdmVuIG5vcm0zMiBmb3IgSmFtbyBWIG9yIFQsCisJICogaXMgdGhpcyBhIEphbW8gVj8KKwkgKi8KKwlwcml2YXRlIHN0YXRpYyBib29sZWFuIGlzSmFtb1ZUTm9ybTMySmFtb1YobG9uZyBub3JtMzIpIHsKKwkgICAgcmV0dXJuIG5vcm0zMjxKQU1PX1ZfVE9QOworCX0KKwkKKwkvKiBkYXRhIGFjY2VzcyBwcmltaXRpdmVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisJCisJcHVibGljIHN0YXRpYyBsb25nLyp1bnNpZ25lZCovIGdldE5vcm0zMihjaGFyIGMpIHsKKyAgICAgICAgcmV0dXJuICgoVU5TSUdORURfSU5UX01BU0spICYgKG5vcm1UcmllSW1wbC5ub3JtVHJpZS5nZXRMZWFkVmFsdWUoYykpKTsKKwl9CisJCisJcHVibGljIHN0YXRpYyBsb25nLyp1bnNpZ25lZCovIGdldE5vcm0zMkZyb21TdXJyb2dhdGVQYWlyKGxvbmcgbm9ybTMyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgYzIpIHsKKwkgICAgLyoKKwkgICAgICogdGhlIHN1cnJvZ2F0ZSBpbmRleCBpbiBub3JtMzIgc3RvcmVzIG9ubHkgdGhlIG51bWJlciBvZiB0aGUgc3Vycm9nYXRlCisgICAgICAgICAqIGluZGV4IGJsb2NrIHNlZSBnZW5ub3JtL3N0b3JlLmMvZ2V0Rm9sZGVkTm9ybVZhbHVlKCkKKwkgICAgICovCisJICAgIHJldHVybiAoKFVOU0lHTkVEX0lOVF9NQVNLKSAmIAorICAgICAgICAgICAgICAgICAgICBub3JtVHJpZUltcGwubm9ybVRyaWUuZ2V0VHJhaWxWYWx1ZSgoaW50KW5vcm0zMiwgYzIpKTsKKwl9CisJcHJpdmF0ZSBzdGF0aWMgbG9uZyBnZXROb3JtMzIoaW50IGMpeworICAgICAgICByZXR1cm4gKFVOU0lHTkVEX0lOVF9NQVNLJihub3JtVHJpZUltcGwubm9ybVRyaWUuZ2V0Q29kZVBvaW50VmFsdWUoYykpKTsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgbG9uZyBnZXROb3JtMzIoaW50IGMsaW50IG1hc2speworICAgICAgICBsb25nLyp1bnNpZ25lZCovIG5vcm0zMj0gZ2V0Tm9ybTMyKFVURjE2LmdldExlYWRTdXJyb2dhdGUoYykpOworICAgICAgICBpZigoKG5vcm0zMiZtYXNrKT4wKSAmJiBpc05vcm0zMkxlYWRTdXJyb2dhdGUobm9ybTMyKSkgeworICAgICAgICAgICAgLyogYyBpcyBhIGxlYWQgc3Vycm9nYXRlLCBnZXQgdGhlIHJlYWwgbm9ybTMyICovCisgICAgICAgICAgICBub3JtMzI9Z2V0Tm9ybTMyRnJvbVN1cnJvZ2F0ZVBhaXIobm9ybTMyLFVURjE2LmdldFRyYWlsU3Vycm9nYXRlKGMpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbm9ybTMyOyAKKyAgICB9CisJCisgICAgLyoKKwkgKiBnZXQgYSBub3JtMzIgZnJvbSB0ZXh0IHdpdGggY29tcGxldGUgY29kZSBwb2ludHMKKwkgKiAobGlrZSBmcm9tIGRlY29tcG9zaXRpb25zKQorCSAqLworCXByaXZhdGUgc3RhdGljIGxvbmcvKnVuc2lnbmVkKi8gZ2V0Tm9ybTMyKGNoYXJbXSBwLGludCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQvKnVuc2lnbmVkKi8gbWFzaykgeworCSAgICBsb25nLyp1bnNpZ25lZCovIG5vcm0zMj0gZ2V0Tm9ybTMyKHBbc3RhcnRdKTsKKwkgICAgaWYoKChub3JtMzImbWFzayk+MCkgJiYgaXNOb3JtMzJMZWFkU3Vycm9nYXRlKG5vcm0zMikpIHsKKwkgICAgICAgIC8qICpwIGlzIGEgbGVhZCBzdXJyb2dhdGUsIGdldCB0aGUgcmVhbCBub3JtMzIgKi8KKwkgICAgICAgIG5vcm0zMj1nZXROb3JtMzJGcm9tU3Vycm9nYXRlUGFpcihub3JtMzIsIHBbc3RhcnQrMV0pOworCSAgICB9CisJICAgIHJldHVybiBub3JtMzI7CisJfQorCisJcHVibGljIHN0YXRpYyBjaGFyCWdldEZDRDE2KGNoYXIgYykgeworCSAgICByZXR1cm4gIGZjZFRyaWVJbXBsLmZjZFRyaWUuZ2V0TGVhZFZhbHVlKGMpOworCX0KKwkKKwlwdWJsaWMgc3RhdGljIGNoYXIgZ2V0RkNEMTZGcm9tU3Vycm9nYXRlUGFpcihjaGFyIGZjZDE2LCBjaGFyIGMyKSB7CisJICAgIC8qIHRoZSBzdXJyb2dhdGUgaW5kZXggaW4gZmNkMTYgaXMgYW4gYWJzb2x1dGUgb2Zmc2V0IG92ZXIgdGhlIAorICAgICAgICAgKiBzdGFydCBvZiBzdGFnZSAxIAorICAgICAgICAgKiAqLworCSAgICByZXR1cm4gZmNkVHJpZUltcGwuZmNkVHJpZS5nZXRUcmFpbFZhbHVlKGZjZDE2LCBjMik7CisJfQorICAgIHB1YmxpYyBzdGF0aWMgaW50IGdldEZDRDE2KGludCBjKSB7CisgICAgICAgIHJldHVybiAgZmNkVHJpZUltcGwuZmNkVHJpZS5nZXRDb2RlUG9pbnRWYWx1ZShjKTsKKyAgICB9CisgICAgCQorCXByaXZhdGUgc3RhdGljIGludCBnZXRFeHRyYURhdGFJbmRleChsb25nIG5vcm0zMikgeworCSAgICByZXR1cm4gKGludCkobm9ybTMyPj5FWFRSQV9TSElGVCk7CisJfQorCQorCXByaXZhdGUgc3RhdGljIGZpbmFsIGNsYXNzIERlY29tcG9zZUFyZ3N7CisJCWludCAvKnVuc2lnbmVkIGJ5dGUqLyBjYzsKKwkJaW50IC8qdW5zaWduZWQgYnl0ZSovIHRyYWlsQ0M7CisJCWludCBsZW5ndGg7CisJfQorICAgIC8qKgorICAgICAqIAorICAgICAqIGdldCB0aGUgY2Fub25pY2FsIG9yIGNvbXBhdGliaWxpdHkgZGVjb21wb3NpdGlvbiBmb3Igb25lIGNoYXJhY3RlciAKKyAgICAgKiAKKyAgICAgKiBAcmV0dXJuIGluZGV4IGludG8gdGhlIGV4dHJhRGF0YSBhcnJheQorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGludC8qaW5kZXgqLyBkZWNvbXBvc2UobG9uZy8qdW5zaWduZWQqLyBub3JtMzIsIAorICAgIAkJCQkJCQkgICAgICAgICAgaW50Lyp1bnNpZ25lZCovIHFjTWFzaywgCisgICAgCQkJCQkJCSAgICAgICAgICBEZWNvbXBvc2VBcmdzIGFyZ3MpIHsKKyAgICAgICAgaW50IHA9IGdldEV4dHJhRGF0YUluZGV4KG5vcm0zMik7CisgICAgICAgIGFyZ3MubGVuZ3RoPWV4dHJhRGF0YVtwKytdOworICAgIAorICAgICAgICBpZigobm9ybTMyJnFjTWFzayZRQ19ORktEKSE9MCAmJiBhcmdzLmxlbmd0aD49MHgxMDApIHsKKyAgICAgICAgICAgIC8qIHVzZSBjb21wYXRpYmlsaXR5IGRlY29tcG9zaXRpb24sIHNraXAgY2Fub25pY2FsIGRhdGEgKi8KKyAgICAgICAgICAgIHArPSgoYXJncy5sZW5ndGg+PjcpJjEpKyhhcmdzLmxlbmd0aCZERUNPTVBfTEVOR1RIX01BU0spOworICAgICAgICAgICAgYXJncy5sZW5ndGg+Pj04OworICAgICAgICB9CisgICAgCisgICAgICAgIGlmKChhcmdzLmxlbmd0aCZERUNPTVBfRkxBR19MRU5HVEhfSEFTX0NDKT4wKSB7CisgICAgICAgICAgICAvKiBnZXQgdGhlIGxlYWQgYW5kIHRyYWlsIGNjJ3MgKi8KKyAgICAgICAgICAgIGNoYXIgYm90aENDcz1leHRyYURhdGFbcCsrXTsKKyAgICAgICAgICAgIGFyZ3MuY2M9KFVOU0lHTkVEX0JZVEVfTUFTSykgJiAoYm90aENDcz4+OCk7CisgICAgICAgICAgICBhcmdzLnRyYWlsQ0M9KFVOU0lHTkVEX0JZVEVfTUFTSykgJiBib3RoQ0NzOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyogbGVhZCBhbmQgdHJhaWwgY2MncyBhcmUgYm90aCAwICovCisgICAgICAgICAgICBhcmdzLmNjPWFyZ3MudHJhaWxDQz0wOworICAgICAgICB9CisgICAgCisgICAgICAgIGFyZ3MubGVuZ3RoJj1ERUNPTVBfTEVOR1RIX01BU0s7CisgICAgICAgIHJldHVybiBwOworICAgIH0KKyAgICAKKyAgICAgICAKKyAgICAvKioKKyAgICAgKiBnZXQgdGhlIGNhbm9uaWNhbCBkZWNvbXBvc2l0aW9uIGZvciBvbmUgY2hhcmFjdGVyIAorICAgICAqIEByZXR1cm4gaW5kZXggaW50byB0aGUgZXh0cmFEYXRhIGFycmF5CisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgaW50IGRlY29tcG9zZShsb25nLyp1bnNpZ25lZCovIG5vcm0zMiwgCisgICAgICAgICAgICAJCQkgICAgICAgICBEZWNvbXBvc2VBcmdzIGFyZ3MpIHsKKyAgICAgICAgICAgIAkJCSAJCisgICAgICAgIGludCBwPSBnZXRFeHRyYURhdGFJbmRleChub3JtMzIpOworICAgICAgICBhcmdzLmxlbmd0aD1leHRyYURhdGFbcCsrXTsKKyAgICAKKyAgICAgICAgaWYoKGFyZ3MubGVuZ3RoJkRFQ09NUF9GTEFHX0xFTkdUSF9IQVNfQ0MpPjApIHsKKyAgICAgICAgICAgIC8qIGdldCB0aGUgbGVhZCBhbmQgdHJhaWwgY2MncyAqLworICAgICAgICAgICAgY2hhciBib3RoQ0NzPWV4dHJhRGF0YVtwKytdOworICAgICAgICAgICAgYXJncy5jYz0oVU5TSUdORURfQllURV9NQVNLKSAmIChib3RoQ0NzPj44KTsKKyAgICAgICAgICAgIGFyZ3MudHJhaWxDQz0oVU5TSUdORURfQllURV9NQVNLKSAmIGJvdGhDQ3M7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKiBsZWFkIGFuZCB0cmFpbCBjYydzIGFyZSBib3RoIDAgKi8KKyAgICAgICAgICAgIGFyZ3MuY2M9YXJncy50cmFpbENDPTA7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgYXJncy5sZW5ndGgmPURFQ09NUF9MRU5HVEhfTUFTSzsKKyAgICAgICAgcmV0dXJuIHA7CisgICAgfQorICAgIAorICAgIAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNsYXNzIE5leHRDQ0FyZ3N7CisgICAgCWNoYXJbXSBzb3VyY2U7CisgICAgCWludCBuZXh0OworICAgIAlpbnQgbGltaXQ7CisgICAgCWNoYXIgYzsKKyAgICAJY2hhciBjMjsKKyAgICB9CisgICAgCisgICAgLyoKKyAgICAgKiBnZXQgdGhlIGNvbWJpbmluZyBjbGFzcyBvZiAoYywgYzIpPSBhcmdzLnNvdXJjZVthcmdzLm5leHQrK10KKyAgICAgKiBiZWZvcmU6IGFyZ3MubmV4dDxhcmdzLmxpbWl0ICBhZnRlcjogYXJncy5uZXh0PD1hcmdzLmxpbWl0CisgICAgICogaWYgb25seSBvbmUgY29kZSB1bml0IGlzIHVzZWQsIHRoZW4gYzI9PTAKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBpbnQgLyp1bnNpZ25lZCBieXRlKi8gZ2V0TmV4dENDKE5leHRDQ0FyZ3MgYXJncykgeworICAgICAgICBsb25nIC8qdW5zaWduZWQqLyBub3JtMzI7CisgICAgCisgICAgICAgIGFyZ3MuYz1hcmdzLnNvdXJjZVthcmdzLm5leHQrK107CisgICAgICAgIAorICAgICAgICBub3JtMzI9IGdldE5vcm0zMihhcmdzLmMpOworICAgICAgICBpZigobm9ybTMyICYgQ0NfTUFTSyk9PTApIHsKKyAgICAgICAgICAgIGFyZ3MuYzI9MDsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYoIWlzTm9ybTMyTGVhZFN1cnJvZ2F0ZShub3JtMzIpKSB7CisgICAgICAgICAgICAgICAgYXJncy5jMj0wOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKiBjIGlzIGEgbGVhZCBzdXJyb2dhdGUsIGdldCB0aGUgcmVhbCBub3JtMzIgKi8KKyAgICAgICAgICAgICAgICBpZihhcmdzLm5leHQhPWFyZ3MubGltaXQgJiYgCisgICAgICAgICAgICAgICAgICAgICAgICBVVEYxNi5pc1RyYWlsU3Vycm9nYXRlKGFyZ3MuYzI9YXJncy5zb3VyY2VbYXJncy5uZXh0XSkpeworICAgICAgICAgICAgICAgICAgICArK2FyZ3MubmV4dDsKKyAgICAgICAgICAgICAgICAgICAgbm9ybTMyPWdldE5vcm0zMkZyb21TdXJyb2dhdGVQYWlyKG5vcm0zMiwgYXJncy5jMik7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYXJncy5jMj0wOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgCisgICAgICAgICAgICByZXR1cm4gKGludCkoKFVOU0lHTkVEX0JZVEVfTUFTSykgJiAobm9ybTMyPj5DQ19TSElGVCkpOworICAgICAgICB9CisgICAgfQorCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2xhc3MgUHJldkFyZ3N7CisJCWNoYXJbXSBzcmM7CisJCWludCBzdGFydDsKKwkJaW50IGN1cnJlbnQ7CisJCWNoYXIgYzsKKwkJY2hhciBjMjsKKwl9CisJCisgICAgLyoKKyAgICAgKiByZWFkIGJhY2t3YXJkcyBhbmQgZ2V0IG5vcm0zMgorICAgICAqIHJldHVybiAwIGlmIHRoZSBjaGFyYWN0ZXIgaXMgPG1pbkMKKyAgICAgKiBpZiBjMiE9MCB0aGVuIChjMiwgYykgaXMgYSBzdXJyb2dhdGUgcGFpciAocmV2ZXJzZWQgLSBjMiBpcyBmaXJzdCAKKyAgICAgKiBzdXJyb2dhdGUgYnV0IHJlYWQgc2Vjb25kISkKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBsb25nIC8qdW5zaWduZWQqLyBnZXRQcmV2Tm9ybTMyKFByZXZBcmdzIGFyZ3MsCisgICAgICAgICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICBpbnQvKnVuc2lnbmVkKi8gbWluQywgCisgICAgICAgICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICBpbnQvKnVuc2lnbmVkKi8gbWFzaykgeworICAgICAgICBsb25nLyp1bnNpZ25lZCovIG5vcm0zMjsKKyAgICAKKyAgICAgICAgYXJncy5jPWFyZ3Muc3JjWy0tYXJncy5jdXJyZW50XTsKKyAgICAgICAgYXJncy5jMj0wOworICAgIAorICAgICAgICAvKiBjaGVjayBmb3IgYSBzdXJyb2dhdGUgYmVmb3JlIGdldHRpbmcgbm9ybTMyIHRvIHNlZSBpZiB3ZSBuZWVkIHRvIAorICAgICAgICAgKiBwcmVkZWNyZW1lbnQgZnVydGhlciAKKyAgICAgICAgICovCisgICAgICAgIGlmKGFyZ3MuYzxtaW5DKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfSBlbHNlIGlmKCFVVEYxNi5pc1N1cnJvZ2F0ZShhcmdzLmMpKSB7CisgICAgICAgICAgICByZXR1cm4gZ2V0Tm9ybTMyKGFyZ3MuYyk7CisgICAgICAgIH0gZWxzZSBpZihVVEYxNi5pc0xlYWRTdXJyb2dhdGUoYXJncy5jKSkgeworICAgICAgICAgICAgLyogdW5wYWlyZWQgZmlyc3Qgc3Vycm9nYXRlICovCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfSBlbHNlIGlmKGFyZ3MuY3VycmVudCE9YXJncy5zdGFydCAmJiAKKyAgICAgICAgICAgICAgICAgICAgVVRGMTYuaXNMZWFkU3Vycm9nYXRlKGFyZ3MuYzI9YXJncy5zcmNbYXJncy5jdXJyZW50LTFdKSkgeworICAgICAgICAgICAgLS1hcmdzLmN1cnJlbnQ7CisgICAgICAgICAgICBub3JtMzI9Z2V0Tm9ybTMyKGFyZ3MuYzIpOworICAgIAorICAgICAgICAgICAgaWYoKG5vcm0zMiZtYXNrKT09MCkgeworICAgICAgICAgICAgICAgIC8qIGFsbCBzdXJyb2dhdGUgcGFpcnMgd2l0aCB0aGlzIGxlYWQgc3Vycm9nYXRlIGhhdmUgCisgICAgICAgICAgICAgICAgICogb25seSBpcnJlbGV2YW50IGRhdGEgCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8qIG5vcm0zMiBtdXN0IGJlIGEgc3Vycm9nYXRlIHNwZWNpYWwgKi8KKyAgICAgICAgICAgICAgICByZXR1cm4gZ2V0Tm9ybTMyRnJvbVN1cnJvZ2F0ZVBhaXIobm9ybTMyLCBhcmdzLmMpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyogdW5wYWlyZWQgc2Vjb25kIHN1cnJvZ2F0ZSAqLworICAgICAgICAgICAgYXJncy5jMj0wOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoKKyAgICAgKiBnZXQgdGhlIGNvbWJpbmluZyBjbGFzcyBvZiAoYywgYzIpPSotLXAKKyAgICAgKiBiZWZvcmU6IHN0YXJ0PHAgIGFmdGVyOiBzdGFydDw9cAorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGludCAvKnVuc2lnbmVkIGJ5dGUqLyBnZXRQcmV2Q0MoUHJldkFyZ3MgYXJncykgeworCisgICAgICAgIHJldHVybiAoaW50KSgoVU5TSUdORURfQllURV9NQVNLKSYoZ2V0UHJldk5vcm0zMihhcmdzLCBNSU5fV0lUSF9MRUFEX0NDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NfTUFTSyk+PkNDX1NISUZUKSk7CisgICAgfQorCisJLyoKKwkgKiBpcyB0aGlzIGEgc2FmZSBib3VuZGFyeSBjaGFyYWN0ZXIgZm9yIE5GKkQ/CisJICogKGxlYWQgY2M9PTApCisJICovCisJcHVibGljIHN0YXRpYyBib29sZWFuIGlzTkZEU2FmZShsb25nLyp1bnNpZ25lZCovIG5vcm0zMiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50Lyp1bnNpZ25lZCovY2NPclFDTWFzaywgCisJCQkJCSAgICAgICAgICAgICAgICAgaW50Lyp1bnNpZ25lZCovIGRlY29tcFFDTWFzaykgeworCSAgICBpZigobm9ybTMyJmNjT3JRQ01hc2spPT0wKSB7CisJICAgICAgICByZXR1cm4gdHJ1ZTsgLyogY2M9PTAgYW5kIG5vIGRlY29tcG9zaXRpb246IHRoaXMgaXMgTkYqRCBzYWZlICovCisJICAgIH0KKwkKKwkgICAgLyogaW5zcGVjdCBpdHMgZGVjb21wb3NpdGlvbiAtIG1heWJlIGEgSGFuZ3VsIGJ1dCBub3QgYSBzdXJyb2dhdGUgaGVyZSovCisJICAgIGlmKGlzTm9ybTMyUmVndWxhcihub3JtMzIpICYmIChub3JtMzImZGVjb21wUUNNYXNrKSE9MCkgeworCSAgICAgICAgRGVjb21wb3NlQXJncyBhcmdzPW5ldyBEZWNvbXBvc2VBcmdzKCk7CisJICAgICAgICAvKiBkZWNvbXBvc2VzLCBnZXQgZXZlcnl0aGluZyBmcm9tIHRoZSB2YXJpYWJsZS1sZW5ndGggZXh0cmEgZGF0YSAqLworCSAgICAgICAgZGVjb21wb3NlKG5vcm0zMiwgZGVjb21wUUNNYXNrLCBhcmdzKTsKKwkgICAgICAgIHJldHVybiBhcmdzLmNjPT0wOworCSAgICB9IGVsc2UgeworCSAgICAgICAgLyogbm8gZGVjb21wb3NpdGlvbiAob3IgSGFuZ3VsKSwgdGVzdCB0aGUgY2MgZGlyZWN0bHkgKi8KKwkgICAgICAgIHJldHVybiAobm9ybTMyJkNDX01BU0spPT0wOworCSAgICB9CisJfQorCQorCS8qCisJICogaXMgdGhpcyAob3IgZG9lcyBpdHMgZGVjb21wb3NpdGlvbiBiZWdpbiB3aXRoKSBhICJ0cnVlIHN0YXJ0ZXIiPworCSAqIChjYz09MCBhbmQgTkYqQ19ZRVMpCisJICovCisgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzVHJ1ZVN0YXJ0ZXIobG9uZy8qdW5zaWduZWQqLyBub3JtMzIsIAorCQkJCQkJCQkgICAgICAgICAgaW50Lyp1bnNpZ25lZCovIGNjT3JRQ01hc2ssIAorCQkJCQkJCQkgICAgICAgICAgaW50Lyp1bnNpZ25lZCovIGRlY29tcFFDTWFzaykgeworCSAgICBpZigobm9ybTMyJmNjT3JRQ01hc2spPT0wKSB7CisJICAgICAgICByZXR1cm4gdHJ1ZTsgLyogdGhpcyBpcyBhIHRydWUgc3RhcnRlciAoY291bGQgYmUgSGFuZ3VsIG9yIEphbW8gTCkqLworCSAgICB9CisJCisJICAgIC8qIGluc3BlY3QgaXRzIGRlY29tcG9zaXRpb24gLSBub3QgYSBIYW5ndWwgb3IgYSBzdXJyb2dhdGUgaGVyZSAqLworCSAgICBpZigobm9ybTMyJmRlY29tcFFDTWFzaykhPTApIHsKKwkgICAgICAgIGludCBwOyAvKiBpbmRleCBpbnRvIGV4dHJhIGRhdGEgYXJyYXkgKi8KKwkgICAgICAgIERlY29tcG9zZUFyZ3MgYXJncz1uZXcgRGVjb21wb3NlQXJncygpOworCSAgICAgICAgLyogZGVjb21wb3NlcywgZ2V0IGV2ZXJ5dGhpbmcgZnJvbSB0aGUgdmFyaWFibGUtbGVuZ3RoIGV4dHJhIGRhdGEgKi8KKwkgICAgICAgIHA9ZGVjb21wb3NlKG5vcm0zMiwgZGVjb21wUUNNYXNrLCBhcmdzKTsKKwkgICAgICAKKwkgICAgICAgIGlmKGFyZ3MuY2M9PTApIHsKKwkgICAgICAgICAgICBpbnQvKnVuc2lnbmVkKi8gcWNNYXNrPWNjT3JRQ01hc2smUUNfTUFTSzsKKwkKKwkgICAgICAgICAgICAvKiBkb2VzIGl0IGJlZ2luIHdpdGggTkZDX1lFUz8gKi8KKwkgICAgICAgICAgICBpZigoZ2V0Tm9ybTMyKGV4dHJhRGF0YSxwLCBxY01hc2spJnFjTWFzayk9PTApIHsKKwkgICAgICAgICAgICAgICAgLyogeWVzLCB0aGUgZGVjb21wb3NpdGlvbiBiZWdpbnMgd2l0aCBhIHRydWUgc3RhcnRlciAqLworCSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKwkgICAgICAgICAgICB9CisJICAgICAgICB9CisJICAgIH0KKwkgICAgcmV0dXJuIGZhbHNlOworCX0KKworCS8qIHJlb3JkZXIgVVRGLTE2IGluLXBsYWNlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwkKKwkvKioKKwkgKiBzaW1wbGVyLCBzaW5nbGUtY2hhcmFjdGVyIHZlcnNpb24gb2YgbWVyZ2VPcmRlcmVkKCkgLQorCSAqIGJ1YmJsZS1pbnNlcnQgb25lIHNpbmdsZSBjb2RlIHBvaW50IGludG8gdGhlIHByZWNlZGluZyBzdHJpbmcKKwkgKiB3aGljaCBpcyBhbHJlYWR5IGNhbm9uaWNhbGx5IG9yZGVyZWQKKwkgKiAoYywgYzIpIG1heSBvciBtYXkgbm90IHlldCBoYXZlIGJlZW4gaW5zZXJ0ZWQgYXQgc3JjW2N1cnJlbnRdLi5zcmNbcF0KKwkgKgorCSAqIGl0IG11c3QgYmUgcD1jdXJyZW50K2xlbmd0aG9mKGMsIGMyKSBpLmUuIHA9Y3VycmVudCsoYzI9PTAgPyAxIDogMikKKwkgKgorCSAqIGJlZm9yZTogc3JjW3N0YXJ0XS4uc3JjW2N1cnJlbnRdIGlzIGFscmVhZHkgb3JkZXJlZCwgYW5kCisJICogICAgICAgICBzcmNbY3VycmVudF0uLnNyY1twXSAgICAgbWF5IG9yIG1heSBub3QgaG9sZCAoYywgYzIpIGJ1dAorCSAqICAgICAgICAgICAgICAgICAgICAgICAgICBtdXN0IGJlIGV4YWN0bHkgdGhlIHNhbWUgbGVuZ3RoIGFzIChjLCBjMikKKwkgKiBhZnRlcjogc3JjW3N0YXJ0XS4uc3JjW3BdIGlzIG9yZGVyZWQKKwkgKgorCSAqIEByZXR1cm4gdGhlIHRyYWlsaW5nIGNvbWJpbmluZyBjbGFzcworCSAqLworCXByaXZhdGUgc3RhdGljIGludC8qdW5zaWduZWQgYnl0ZSovIGluc2VydE9yZGVyZWQoY2hhcltdIHNvdXJjZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnQsIAorCQkJCQkJCQkJCQkgICAgICAgICAgaW50IGN1cnJlbnQsIGludCBwLAorCSAgICAgICAgICAgICAgIAkJCQkJCQkgICAgICAgICAgY2hhciBjLCBjaGFyIGMyLCAKKwkgICAgICAgICAgICAgICAJCQkJCQkJICAgICAgICAgIGludC8qdW5zaWduZWQgYnl0ZSovIGNjKSB7CisJICAgIGludCBiYWNrLCBwcmVCYWNrOworCSAgICBpbnQgcjsKKwkgICAgaW50IHByZXZDQywgdHJhaWxDQz1jYzsKKwkKKwkgICAgaWYoc3RhcnQ8Y3VycmVudCAmJiBjYyE9MCkgeworCSAgICAgICAgLy8gc2VhcmNoIGZvciB0aGUgaW5zZXJ0aW9uIHBvaW50IHdoZXJlIGNjPj1wcmV2Q0MgCisJICAgICAgICBwcmVCYWNrPWJhY2s9Y3VycmVudDsKKwkgICAgICAgIFByZXZBcmdzIHByZXZBcmdzID0gbmV3IFByZXZBcmdzKCk7CisJICAgICAgICBwcmV2QXJncy5jdXJyZW50ICA9IGN1cnJlbnQ7CisJICAgICAgICBwcmV2QXJncy5zdGFydCAgICA9IHN0YXJ0OworCSAgICAgICAgcHJldkFyZ3Muc3JjCSAgPSBzb3VyY2U7CisJICAgICAgICAvLyBnZXQgdGhlIHByZXZDQyAKKwkgICAgICAgIHByZXZDQz1nZXRQcmV2Q0MocHJldkFyZ3MpOworCSAgICAgICAgcHJlQmFjayA9IHByZXZBcmdzLmN1cnJlbnQ7CisJICAgICAgICAKKwkgICAgICAgIGlmKGNjPHByZXZDQykgeworCSAgICAgICAgICAgIC8vIHRoaXMgd2lsbCBiZSB0aGUgbGFzdCBjb2RlIHBvaW50LCBzbyBrZWVwIGl0cyBjYyAKKwkgICAgICAgICAgICB0cmFpbENDPXByZXZDQzsKKwkgICAgICAgICAgICBiYWNrPXByZUJhY2s7CisJICAgICAgICAgICAgd2hpbGUoc3RhcnQ8cHJlQmFjaykgeworCSAgICAgICAgICAgICAgICBwcmV2Q0M9Z2V0UHJldkNDKHByZXZBcmdzKTsKKwkgICAgICAgICAgICAgICAgcHJlQmFjaz1wcmV2QXJncy5jdXJyZW50OworCSAgICAgICAgICAgICAgICBpZihjYz49cHJldkNDKSB7CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICBiYWNrPXByZUJhY2s7CisJICAgICAgICAgICAgfQorCQorCSAgICAgICAgICAgIAorCSAgICAgICAgICAgIC8vIHRoaXMgaXMgd2hlcmUgd2UgYXJlIHJpZ2h0IG5vdyB3aXRoIGFsbCB0aGVzZSBpbmRpY2llczoKKwkgICAgICAgICAgICAvLyBbc3RhcnRdLi5bcFByZUJhY2tdIDAuLj8gY29kZSBwb2ludHMgdGhhdCB3ZSBjYW4gaWdub3JlCisJICAgICAgICAgICAgLy8gW3BQcmVCYWNrXS4uW3BCYWNrXSAwLi4xIGNvZGUgcG9pbnRzIHdpdGggcHJldkNDPD1jYworCSAgICAgICAgICAgIC8vIFtwQmFja10uLltjdXJyZW50XSAwLi5uIGNvZGUgcG9pbnRzIHdpdGggPmNjLCBtb3ZlIHVwIHRvIGluc2VydCAoYywgYzIpCisJICAgICAgICAgICAgLy8gW2N1cnJlbnRdLi5bcF0gICAgICAgICAxIGNvZGUgcG9pbnQgKGMsIGMyKSB3aXRoIGNjCisJICAgICAgICAgICAgIAorCSAgICAgICAgICAgIC8vIG1vdmUgdGhlIGNvZGUgdW5pdHMgaW4gYmV0d2VlbiB1cCAKKwkgICAgICAgICAgICByPXA7CisJICAgICAgICAgICAgZG8geworCSAgICAgICAgICAgICAgICBzb3VyY2VbLS1yXT1zb3VyY2VbLS1jdXJyZW50XTsKKwkgICAgICAgICAgICB9IHdoaWxlKGJhY2shPWN1cnJlbnQpOworCSAgICAgICAgfQorCSAgICB9CisJCisJICAgIC8vIGluc2VydCAoYywgYzIpIAorCSAgICBzb3VyY2VbY3VycmVudF09YzsKKwkgICAgaWYoYzIhPTApIHsKKwkgICAgICAgIHNvdXJjZVsoY3VycmVudCsxKV09YzI7CisJICAgIH0KKwkKKwkgICAgLy8gd2Uga25vdyB0aGUgY2Mgb2YgdGhlIGxhc3QgY29kZSBwb2ludCAKKwkgICAgcmV0dXJuIHRyYWlsQ0M7CisJfQorCQorCS8qKgorCSAqIG1lcmdlIHR3byBVVEYtMTYgc3RyaW5nIHBhcnRzIHRvZ2V0aGVyCisJICogdG8gY2Fub25pY2FsbHkgb3JkZXIgKG9yZGVyIGJ5IGNvbWJpbmluZyBjbGFzc2VzKSB0aGVpciBjb25jYXRlbmF0aW9uCisJICoKKwkgKiB0aGUgdHdvIHN0cmluZ3MgbWF5IGFscmVhZHkgYmUgYWRqYWNlbnQsIHNvIHRoYXQgdGhlIG1lcmdpbmcgaXMgZG9uZSAKKyAgICAgKiBpbi1wbGFjZSBpZiB0aGUgdHdvIHN0cmluZ3MgYXJlIG5vdCBhZGphY2VudCwgdGhlbiB0aGUgYnVmZmVyIGhvbGRpbmcgdGhlCisgICAgICogZmlyc3Qgb25lIG11c3QgYmUgbGFyZ2UgZW5vdWdoCisJICogdGhlIHNlY29uZCBzdHJpbmcgbWF5IG9yIG1heSBub3QgYmUgb3JkZXJlZCBpbiBpdHNlbGYKKwkgKgorCSAqIGJlZm9yZTogW3N0YXJ0XS4uW2N1cnJlbnRdIGlzIGFscmVhZHkgb3JkZXJlZCwgYW5kCisJICogICAgICAgICBbbmV4dF0uLltsaW1pdF0gICAgbWF5IGJlIG9yZGVyZWQgaW4gaXRzZWxmLCBidXQKKwkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgbm90IGluIHJlbGF0aW9uIHRvIFtzdGFydC4uY3VycmVudFsKKwkgKiBhZnRlcjogW3N0YXJ0Li5jdXJyZW50KyhsaW1pdC1uZXh0KVsgaXMgb3JkZXJlZAorCSAqCisJICogdGhlIGFsZ29yaXRobSBpcyBhIHNpbXBsZSBidWJibGUtc29ydCB0aGF0IHRha2VzIHRoZSBjaGFyYWN0ZXJzIGZyb20gCisgICAgICogc3JjW25leHQrK10gYW5kIGluc2VydHMgdGhlbSBpbiBjb3JyZWN0IGNvbWJpbmluZyBjbGFzcyBvcmRlciBpbnRvIHRoZSAKKyAgICAgKiBwcmVjZWRpbmcgcGFydCBvZiB0aGUgc3RyaW5nCisJICoKKwkgKiBzaW5jZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBtdWNoIGxlc3Mgb2Z0ZW4gdGhhbiB0aGUgc2luZ2xlLWNvZGUgcG9pbnQKKwkgKiBpbnNlcnRPcmRlcmVkKCksIGl0IGp1c3QgdXNlcyB0aGF0IGZvciBlYXNpZXIgbWFpbnRlbmFuY2UKKwkgKgorCSAqIEByZXR1cm4gdGhlIHRyYWlsaW5nIGNvbWJpbmluZyBjbGFzcworCSAqLworCXByaXZhdGUgc3RhdGljIGludCAvKnVuc2lnbmVkIGJ5dGUqLyBtZXJnZU9yZGVyZWQoY2hhcltdIHNvdXJjZSwKKwkJCQkJCQkJCQkJCQkgIGludCBzdGFydCwgCisJCQkJCQkJCQkJCQkJICBpbnQgY3VycmVudCwKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJbXSBkYXRhLAorCQkJICAgICAgICAgICAgICAJCQkJCQkJICBpbnQgbmV4dCwgCisJCQkgICAgICAgICAgICAgIAkJCQkJCQkgIGludCBsaW1pdCwgCisJCQkgICAgICAgICAgICAgIAkJCQkJCQkgIGJvb2xlYW4gaXNPcmRlcmVkKSB7CisgICAgICAgICAgICBpbnQgcjsKKyAgICAgICAgICAgIGludCAvKnVuc2lnbmVkIGJ5dGUqLyBjYywgdHJhaWxDQz0wOworICAgICAgICAgICAgYm9vbGVhbiBhZGphY2VudDsKKyAgICAgICAgCisgICAgICAgICAgICBhZGphY2VudD0gY3VycmVudD09bmV4dDsKKyAgICAgICAgICAgIE5leHRDQ0FyZ3MgbmNBcmdzID0gbmV3IE5leHRDQ0FyZ3MoKTsKKyAgICAgICAgICAgIG5jQXJncy5zb3VyY2UgPSBkYXRhOworICAgICAgICAgICAgbmNBcmdzLm5leHQgICA9IG5leHQ7CisgICAgICAgICAgICBuY0FyZ3MubGltaXQgID0gbGltaXQ7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmKHN0YXJ0IT1jdXJyZW50IHx8ICFpc09yZGVyZWQpIHsKKyAgICAgICAgICAgICAgICAJCisgICAgICAgICAgICAgICAgd2hpbGUobmNBcmdzLm5leHQ8bmNBcmdzLmxpbWl0KSB7CisgICAgICAgICAgICAgICAgICAgIGNjPWdldE5leHRDQyhuY0FyZ3MpOworICAgICAgICAgICAgICAgICAgICBpZihjYz09MCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG9lcyBub3QgYnViYmxlIGJhY2sgCisgICAgICAgICAgICAgICAgICAgICAgICB0cmFpbENDPTA7CisgICAgICAgICAgICAgICAgICAgICAgICBpZihhZGphY2VudCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQ9bmNBcmdzLm5leHQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbY3VycmVudCsrXT1uY0FyZ3MuYzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihuY0FyZ3MuYzIhPTApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVtjdXJyZW50KytdPW5jQXJncy5jMjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZihpc09yZGVyZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQ9Y3VycmVudDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHI9Y3VycmVudCsobmNBcmdzLmMyPT0wID8gMSA6IDIpOworICAgICAgICAgICAgICAgICAgICAgICAgdHJhaWxDQz1pbnNlcnRPcmRlcmVkKHNvdXJjZSxzdGFydCwgY3VycmVudCwgciwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmNBcmdzLmMsIG5jQXJncy5jMiwgY2MpOworICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudD1yOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgICAgIGlmKG5jQXJncy5uZXh0PT1uY0FyZ3MubGltaXQpIHsKKyAgICAgICAgICAgICAgICAvLyB3ZSBrbm93IHRoZSBjYyBvZiB0aGUgbGFzdCBjb2RlIHBvaW50IAorICAgICAgICAgICAgICAgIHJldHVybiB0cmFpbENDOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZighYWRqYWNlbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gY29weSB0aGUgc2Vjb25kIHN0cmluZyBwYXJ0IAorICAgICAgICAgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VbY3VycmVudCsrXT1kYXRhW25jQXJncy5uZXh0KytdOworICAgICAgICAgICAgICAgICAgICB9IHdoaWxlKG5jQXJncy5uZXh0IT1uY0FyZ3MubGltaXQpOworICAgICAgICAgICAgICAgICAgICBuY0FyZ3MubGltaXQ9Y3VycmVudDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgUHJldkFyZ3MgcHJldkFyZ3MgPSBuZXcgUHJldkFyZ3MoKTsKKyAgICAgICAgICAgICAgICBwcmV2QXJncy5zcmMgICA9IGRhdGE7CisgICAgICAgICAgICAgICAgcHJldkFyZ3Muc3RhcnQgPSBzdGFydDsKKyAgICAgICAgICAgICAgICBwcmV2QXJncy5jdXJyZW50ID0gIG5jQXJncy5saW1pdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2V0UHJldkNDKHByZXZBcmdzKTsKKyAgICAgICAgICAgIH0KKworCX0KKwlwcml2YXRlIHN0YXRpYyBpbnQgLyp1bnNpZ25lZCBieXRlKi8gbWVyZ2VPcmRlcmVkKGNoYXJbXSBzb3VyY2UsCisJCQkJCQkJCQkJCQkJICBpbnQgc3RhcnQsIAorCQkJCQkJCQkJCQkJCSAgaW50IGN1cnJlbnQsCisJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyW10gZGF0YSwKKwkJCSAgICAgICAgICAgICAgCQkJCQkJCSAgZmluYWwgaW50IG5leHQsIAorCQkJICAgICAgICAgICAgICAJCQkJCQkJICBmaW5hbCBpbnQgbGltaXQpIHsKKwkgICAgcmV0dXJuIG1lcmdlT3JkZXJlZChzb3VyY2Usc3RhcnQsY3VycmVudCxkYXRhLG5leHQsbGltaXQsdHJ1ZSk7CisJfSAKKworICAgIAorICAgICAgCisgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGNoZWNrRkNEKGNoYXJbXSBzcmMsaW50IHNyY1N0YXJ0LCBpbnQgc3JjTGltaXQpIHsKKworCSAgICBjaGFyIGZjZDE2LGMsYzI7CisJICAgIGludCBwcmV2Q0M9MCwgY2M7CisJCWludCBpID1zcmNTdGFydCwgbGVuZ3RoID0gc3JjTGltaXQ7CisJCisJICAgIGZvcig7OykgeworICAgICAgICAgICAgZm9yKDs7KSB7CisgICAgICAgICAgICAgICAgaWYoaT09bGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZigoYz1zcmNbaSsrXSk8TUlOX1dJVEhfTEVBRF9DQykgeworICAgICAgICAgICAgICAgICAgICBwcmV2Q0M9KGludCktYzsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYoKGZjZDE2PWdldEZDRDE2KGMpKT09MCkgeworICAgICAgICAgICAgICAgICAgICBwcmV2Q0M9MDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKwkgICAgICAgIC8vIGNoZWNrIG9uZSBhYm92ZS1taW5pbXVtLCByZWxldmFudCBjb2RlIHVuaXQgCisJICAgICAgICBpZihVVEYxNi5pc0xlYWRTdXJyb2dhdGUoYykpIHsKKwkgICAgICAgICAgICAvLyBjIGlzIGEgbGVhZCBzdXJyb2dhdGUsIGdldCB0aGUgcmVhbCBmY2QxNiAKKwkgICAgICAgICAgICBpZihpIT1sZW5ndGggJiYgVVRGMTYuaXNUcmFpbFN1cnJvZ2F0ZShjMj1zcmNbaV0pKSB7CisJICAgICAgICAgICAgICAgICsraTsKKwkgICAgICAgICAgICAgICAgZmNkMTY9Z2V0RkNEMTZGcm9tU3Vycm9nYXRlUGFpcihmY2QxNiwgYzIpOworCSAgICAgICAgICAgIH0gZWxzZSB7CisJICAgICAgICAgICAgICAgIGZjZDE2PTA7CisJICAgICAgICAgICAgfQorCSAgICAgICAgfQorCisJICAgICAgICAvLyBwcmV2Q0MgaGFzIHZhbHVlcyBmcm9tIHRoZSBmb2xsb3dpbmcgcmFuZ2VzOgorCSAgICAgICAgLy8gMC4uMHhmZiAtdGhlIHByZXZpb3VzIHRyYWlsIGNvbWJpbmluZyBjbGFzcworCSAgICAgICAgLy8gPDAgICAgICAtdGhlIG5lZ2F0aXZlIHZhbHVlIG9mIHRoZSBwcmV2aW91cyBjb2RlIHVuaXQ7CisJICAgICAgICAvLyAgICAgICAgICB0aGF0IGNvZGUgdW5pdCB3YXMgPE1JTl9XSVRIX0xFQURfQ0MgYW5kIGl0cyBnZXRGQ0QxNigpCisJICAgICAgICAvLyAgICAgICAgICB3YXMgZGVmZXJyZWQgc28gdGhhdCBhdmVyYWdlIHRleHQgaXMgY2hlY2tlZCBmYXN0ZXIKKwkgICAgICAgIC8vCisJCisJICAgICAgICAvLyBjaGVjayB0aGUgY29tYmluaW5nIG9yZGVyIAorCSAgICAgICAgY2M9KGludCkoZmNkMTY+PjgpOworCSAgICAgICAgaWYoY2MhPTApIHsKKwkgICAgICAgICAgICBpZihwcmV2Q0M8MCkgeworCSAgICAgICAgICAgICAgICAvLyB0aGUgcHJldmlvdXMgY2hhcmFjdGVyIHdhcyA8X05PUk1fTUlOX1dJVEhfTEVBRF9DQywgCisgICAgICAgICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gZ2V0IGl0cyB0cmFpbCBjYyAKKyAgICAgICAgICAgICAgICAgICAgLy8KKwkgICAgICAgICAgICAgICAgcHJldkNDPShpbnQpKGZjZFRyaWVJbXBsLmZjZFRyaWUuZ2V0Qk1QVmFsdWUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIpLXByZXZDQykmMHhmZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CisJICAgICAgICAgICAgfQorCQorCSAgICAgICAgICAgIGlmKGNjPHByZXZDQykgeworCSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisJICAgICAgICAgICAgfQorCSAgICAgICAgfQorCSAgICAgICAgcHJldkNDPShpbnQpKGZjZDE2JjB4ZmYpOworCSAgICB9CisJfQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgTm9ybWFsaXplci5RdWlja0NoZWNrUmVzdWx0IHF1aWNrQ2hlY2soY2hhcltdIHNyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzcmNTdGFydCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjTGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWluTm9NYXliZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBxY01hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGFsbG93TWF5YmUpeworICAgICAgICAKKyAgICAgICAgaW50IGNjT3JRQ01hc2s7CisgICAgICAgIGxvbmcgbm9ybTMyOworICAgICAgICBjaGFyIGMsIGMyOworICAgICAgICBjaGFyIGNjLCBwcmV2Q0M7CisgICAgICAgIGxvbmcgcWNOb3JtMzI7CisgICAgICAgIE5vcm1hbGl6ZXIuUXVpY2tDaGVja1Jlc3VsdCByZXN1bHQ7CisgICAgICAgIENvbXBvc2VQYXJ0QXJncyBhcmdzID0gbmV3IENvbXBvc2VQYXJ0QXJncygpOworICAgICAgICBjaGFyW10gYnVmZmVyIDsKKyAgICAgICAgaW50IHN0YXJ0ID0gc3JjU3RhcnQ7CisgICAgICAgIAorICAgICAgICBpZighaXNEYXRhTG9hZGVkKSB7CisgICAgICAgICAgICByZXR1cm4gTm9ybWFsaXplci5NQVlCRTsKKyAgICAgICAgfQorICAgICAgICAvLyBpbml0aWFsaXplIAorICAgICAgICBjY09yUUNNYXNrPUNDX01BU0t8cWNNYXNrOworICAgICAgICByZXN1bHQ9Tm9ybWFsaXplci5ZRVM7CisgICAgICAgIHByZXZDQz0wOworICAgICAgICAgICAgICAgIAorICAgICAgICBmb3IoOzspIHsKKyAgICAgICAgICAgIGZvcig7OykgeworICAgICAgICAgICAgICAgIGlmKHNyY1N0YXJ0PT1zcmNMaW1pdCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgICAgIH0gZWxzZSBpZigoYz1zcmNbc3JjU3RhcnQrK10pPj1taW5Ob01heWJlICYmIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoIG5vcm0zMj1nZXROb3JtMzIoYykpICYgY2NPclFDTWFzaykhPTApIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHByZXZDQz0wOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgCisgICAgICAgICAgICAvLyBjaGVjayBvbmUgYWJvdmUtbWluaW11bSwgcmVsZXZhbnQgY29kZSB1bml0IAorICAgICAgICAgICAgaWYoaXNOb3JtMzJMZWFkU3Vycm9nYXRlKG5vcm0zMikpIHsKKyAgICAgICAgICAgICAgICAvLyBjIGlzIGEgbGVhZCBzdXJyb2dhdGUsIGdldCB0aGUgcmVhbCBub3JtMzIgCisgICAgICAgICAgICAgICAgaWYoc3JjU3RhcnQhPXNyY0xpbWl0JiYgVVRGMTYuaXNUcmFpbFN1cnJvZ2F0ZShjMj1zcmNbc3JjU3RhcnRdKSkgeworICAgICAgICAgICAgICAgICAgICArK3NyY1N0YXJ0OworICAgICAgICAgICAgICAgICAgICBub3JtMzI9Z2V0Tm9ybTMyRnJvbVN1cnJvZ2F0ZVBhaXIobm9ybTMyLGMyKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBub3JtMzI9MDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgCisgICAgICAgICAgICAvLyBjaGVjayB0aGUgY29tYmluaW5nIG9yZGVyIAorICAgICAgICAgICAgY2M9KGNoYXIpKChub3JtMzI+PkNDX1NISUZUKSYweEZGKTsKKyAgICAgICAgICAgIGlmKGNjIT0wICYmIGNjPHByZXZDQykgeworICAgICAgICAgICAgICAgIHJldHVybiBOb3JtYWxpemVyLk5POworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHJldkNDPWNjOworICAgIAorICAgICAgICAgICAgLy8gY2hlY2sgZm9yICJubyIgb3IgIm1heWJlIiBxdWljayBjaGVjayBmbGFncyAKKyAgICAgICAgICAgIHFjTm9ybTMyID0gbm9ybTMyICYgcWNNYXNrOworICAgICAgICAgICAgaWYoKHFjTm9ybTMyJiBRQ19BTllfTk8pPj0xKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0PSBOb3JtYWxpemVyLk5POworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfSBlbHNlIGlmKHFjTm9ybTMyIT0wKSB7CisgICAgICAgICAgICAgICAgLy8gIm1heWJlIiBjYW4gb25seSBvY2N1ciBmb3IgTkZDIGFuZCBORktDIAorICAgICAgICAgICAgICAgIGlmKGFsbG93TWF5YmUpeworICAgICAgICAgICAgICAgICAgICByZXN1bHQ9Tm9ybWFsaXplci5NQVlCRTsKKyAgICAgICAgICAgICAgICB9ZWxzZXsKKyAgICAgICAgICAgICAgICAgICAgLy8gbm9ybWFsaXplIGEgc2VjdGlvbiBhcm91bmQgaGVyZSB0byBzZWUgaWYgaXQgaXMgcmVhbGx5IAorICAgICAgICAgICAgICAgICAgICAvLyBub3JtYWxpemVkIG9yIG5vdCAKKyAgICAgICAgICAgICAgICAgICAgaW50IHByZXZTdGFydGVyOworICAgICAgICAgICAgICAgICAgICBpbnQvKnVuc2lnbmVkKi8gZGVjb21wUUNNYXNrOworICAgIAorICAgICAgICAgICAgICAgICAgICBkZWNvbXBRQ01hc2s9KHFjTWFzazw8MikmMHhmOyAvLyBkZWNvbXBvc2l0aW9uIHF1aWNrIGNoZWNrIG1hc2sgCisgICAgCisgICAgICAgICAgICAgICAgICAgIC8vIGZpbmQgdGhlIHByZXZpb3VzIHN0YXJ0ZXIgCisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAvLyBzZXQgcHJldlN0YXJ0ZXIgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgY3VycmVudCBjaGFyYWN0ZXIgCisgICAgICAgICAgICAgICAgICAgIHByZXZTdGFydGVyPXNyY1N0YXJ0LTE7IAorICAgICAgICAgICAgICAgICAgICBpZihVVEYxNi5pc1RyYWlsU3Vycm9nYXRlKHNyY1twcmV2U3RhcnRlcl0pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBzYWZlIGJlY2F1c2UgdW5wYWlyZWQgc3Vycm9nYXRlcyBkbyBub3QgcmVzdWx0IAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW4gIm1heWJlIgorICAgICAgICAgICAgICAgICAgICAgICAgLS1wcmV2U3RhcnRlcjsgCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcHJldlN0YXJ0ZXI9ZmluZFByZXZpb3VzU3RhcnRlcihzcmMsIHN0YXJ0LCBwcmV2U3RhcnRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjY09yUUNNYXNrLCBkZWNvbXBRQ01hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIpbWluTm9NYXliZSk7CisgICAgCisgICAgICAgICAgICAgICAgICAgIC8vIGZpbmQgdGhlIG5leHQgdHJ1ZSBzdGFydGVyIGluIFtzcmMuLmxpbWl0WyAtIG1vZGlmaWVzIAorICAgICAgICAgICAgICAgICAgICAvLyBzcmMgdG8gcG9pbnQgdG8gdGhlIG5leHQgc3RhcnRlciAKKyAgICAgICAgICAgICAgICAgICAgc3JjU3RhcnQ9ZmluZE5leHRTdGFydGVyKHNyYyxzcmNTdGFydCwgc3JjTGltaXQsIHFjTWFzaywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvbXBRQ01hc2ssKGNoYXIpIG1pbk5vTWF5YmUpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLy9zZXQgdGhlIGFyZ3MgZm9yIGNvbXBvc2UgcGFydAorICAgICAgICAgICAgICAgICAgICBhcmdzLnByZXZDQyA9IHByZXZDQzsKKyAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC8vIGRlY29tcG9zZSBhbmQgcmVjb21wb3NlIFtwcmV2U3RhcnRlci4uc3JjWyAKKyAgICAgICAgICAgICAgICAgICAgYnVmZmVyID0gY29tcG9zZVBhcnQoYXJncyxwcmV2U3RhcnRlcixzcmMsc3JjU3RhcnQsc3JjTGltaXQscWNNYXNrKTsKKyAgICAKKyAgICAgICAgICAgICAgICAgICAgLy8gY29tcGFyZSB0aGUgbm9ybWFsaXplZCB2ZXJzaW9uIHdpdGggdGhlIG9yaWdpbmFsIAorICAgICAgICAgICAgICAgICAgICBpZigwIT1zdHJDb21wYXJlKGJ1ZmZlciwwLGFyZ3MubGVuZ3RoLHNyYyxwcmV2U3RhcnRlciwoc3JjU3RhcnQtcHJldlN0YXJ0ZXIpLCBmYWxzZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdD1Ob3JtYWxpemVyLk5POyAvLyBub3JtYWxpemF0aW9uIGRpZmZlcnMgCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgICAgICAgICAvLyBjb250aW51ZSBhZnRlciB0aGUgbmV4dCBzdGFydGVyIAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0gCisgICAgCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gCisgICAgLy8gbWFrZSBORkQgJiBORktEIAorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJcHVibGljIHN0YXRpYyBpbnQgZ2V0RGVjb21wb3NpdGlvbihpbnQgYyAvKlVURi0zMiovICwgCisJCQkJCQkJCQkJYm9vbGVhbiBjb21wYXQsCisJCQkgICAgICAgICAgICAgICAgICAgICAgIAkJY2hhcltdIGRlc3QsCisJCQkgICAgICAgICAgICAgICAgICAgICAgIAkJaW50IGRlc3RTdGFydCwgCisJCQkgICAgICAgICAgICAgICAgICAgICAgIAkJaW50IGRlc3RDYXBhY2l0eSkgeworCSAgICAgICAgCisJICAgIGlmKCAoVU5TSUdORURfSU5UX01BU0sgJiBjKTw9MHgxMGZmZmYpIHsKKwkgICAgICAgIGxvbmcgLyp1bnNpZ25lZCovIG5vcm0zMjsKKyAgICAgICAgICAgIGludCBxY01hc2s7CisJICAgICAgICBpbnQgbWluTm9NYXliZTsKKwkgICAgICAgIGludCBsZW5ndGg7CisJCisJICAgICAgICAvLyBpbml0aWFsaXplIAorCSAgICAgICAgaWYoIWNvbXBhdCkgeworCSAgICAgICAgICAgIG1pbk5vTWF5YmU9KGludClpbmRleGVzW0lOREVYX01JTl9ORkRfTk9fTUFZQkVdOworCSAgICAgICAgICAgIHFjTWFzaz1RQ19ORkQ7CisJICAgICAgICB9IGVsc2UgeworCSAgICAgICAgICAgIG1pbk5vTWF5YmU9KGludClpbmRleGVzW0lOREVYX01JTl9ORktEX05PX01BWUJFXTsKKwkgICAgICAgICAgICBxY01hc2s9UUNfTkZLRDsKKwkgICAgICAgIH0KKwkKKwkgICAgICAgIGlmKGM8bWluTm9NYXliZSkgeworCSAgICAgICAgICAgIC8vIHRyaXZpYWwgY2FzZSAKKwkgICAgICAgICAgICBpZihkZXN0Q2FwYWNpdHk+MCkgeworCSAgICAgICAgICAgICAgICBkZXN0WzBdPShjaGFyKWM7CisJICAgICAgICAgICAgfQorCSAgICAgICAgICAgIHJldHVybiAtMTsKKwkgICAgICAgIH0KKwkKKwkgICAgICAgIC8qIGRhdGEgbG9va3VwICovCisJICAgICAgICBub3JtMzI9Z2V0Tm9ybTMyKGMpOworCSAgICAgICAgaWYoKG5vcm0zMiZxY01hc2spPT0wKSB7CisJICAgICAgICAgICAgLyogc2ltcGxlIGNhc2U6IG5vIGRlY29tcG9zaXRpb24gKi8KKwkgICAgICAgICAgICBpZihjPD0weGZmZmYpIHsKKwkgICAgICAgICAgICAgICAgaWYoZGVzdENhcGFjaXR5PjApIHsKKwkgICAgICAgICAgICAgICAgICAgIGRlc3RbMF09KGNoYXIpYzsKKwkgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisJICAgICAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAgICAgICAgaWYoZGVzdENhcGFjaXR5Pj0yKSB7CisJICAgICAgICAgICAgICAgICAgICBkZXN0WzBdPVVURjE2LmdldExlYWRTdXJyb2dhdGUoYyk7CisJICAgICAgICAgICAgICAgICAgICBkZXN0WzFdPVVURjE2LmdldFRyYWlsU3Vycm9nYXRlKGMpOworCSAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgICAgIHJldHVybiAtMjsKKwkgICAgICAgICAgICB9CisJICAgICAgICB9IGVsc2UgaWYoaXNOb3JtMzJIYW5ndWxPckphbW8obm9ybTMyKSkgeworCSAgICAgICAgICAgIC8qIEhhbmd1bCBzeWxsYWJsZTogZGVjb21wb3NlIGFsZ29yaXRobWljYWxseSAqLworCSAgICAgICAgICAgIGNoYXIgYzI7CisJCisJICAgICAgICAgICAgYy09SEFOR1VMX0JBU0U7CisJCisJICAgICAgICAgICAgYzI9KGNoYXIpKGMlSkFNT19UX0NPVU5UKTsKKwkgICAgICAgICAgICBjLz1KQU1PX1RfQ09VTlQ7CisJICAgICAgICAgICAgaWYoYzI+MCkgeworCSAgICAgICAgICAgICAgICBpZihkZXN0Q2FwYWNpdHk+PTMpIHsKKwkgICAgICAgICAgICAgICAgICAgIGRlc3RbMl09KGNoYXIpKEpBTU9fVF9CQVNFK2MyKTsKKwkgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICBsZW5ndGg9MzsKKwkgICAgICAgICAgICB9IGVsc2UgeworCSAgICAgICAgICAgICAgICBsZW5ndGg9MjsKKwkgICAgICAgICAgICB9CisJCisJICAgICAgICAgICAgaWYoZGVzdENhcGFjaXR5Pj0yKSB7CisJICAgICAgICAgICAgICAgIGRlc3RbMV09KGNoYXIpKEpBTU9fVl9CQVNFK2MlSkFNT19WX0NPVU5UKTsKKwkgICAgICAgICAgICAgICAgZGVzdFswXT0oY2hhcikoSkFNT19MX0JBU0UrYy9KQU1PX1ZfQ09VTlQpOworCSAgICAgICAgICAgIH0KKwkgICAgICAgICAgICByZXR1cm4gbGVuZ3RoOworCSAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAgICAvKiBjIGRlY29tcG9zZXMsIGdldCBldmVyeXRoaW5nIGZyb20gdGhlIHZhcmlhYmxlLWxlbmd0aCBleHRyYSAKKyAgICAgICAgICAgICAgICAgKiBkYXRhIAorICAgICAgICAgICAgICAgICAqLworCSAgICAgICAgICAgIGludCBwLCBsaW1pdDsKKwkgICAgICAgICAgICBEZWNvbXBvc2VBcmdzIGFyZ3MgPSBuZXcgRGVjb21wb3NlQXJncygpOworCSAgICAgICAgICAgIC8qIHRoZSBpbmRleCBpbnRvIGV4dHJhIGRhdGEgYXJyYXkqLyAJCQkJCisJICAgICAgICAgICAgcD1kZWNvbXBvc2Uobm9ybTMyLCBxY01hc2ssIGFyZ3MpOworCSAgICAgICAgICAgIGlmKGFyZ3MubGVuZ3RoPD1kZXN0Q2FwYWNpdHkpIHsKKwkgICAgICAgICAgICAgICAgbGltaXQ9cCthcmdzLmxlbmd0aDsKKwkgICAgICAgICAgICAgICAgZG8geworCSAgICAgICAgICAgICAgICAgICAgZGVzdFtkZXN0U3RhcnQrK109ZXh0cmFEYXRhW3ArK107CisJICAgICAgICAgICAgICAgIH0gd2hpbGUocDxsaW1pdCk7CisJICAgICAgICAgICAgfQorCSAgICAgICAgICAgIHJldHVybiBhcmdzLmxlbmd0aDsKKwkgICAgICAgIH0KKwkgICAgfSBlbHNlIHsKKwkgICAgICAgIHJldHVybiAwOworCSAgICB9CisJfQorCisJCisJcHVibGljIHN0YXRpYyBpbnQgZGVjb21wb3NlKGNoYXJbXSBzcmMsaW50IHNyY0luZGV4LGludCBzcmNMaW1pdCwKKwkJCQkJCQkJY2hhcltdIGRlc3QsaW50IGRlc3RJbmRleCxpbnQgZGVzdExpbWl0LAorCQkJCQkJIAkJYm9vbGVhbiBjb21wYXQsaW50W10gb3V0VHJhaWxDQykgeworCSAgICAgICAgICAgCQkJIAkKKwkgICAgY2hhcltdIGJ1ZmZlciA9IG5ldyBjaGFyWzNdOworCSAgICBpbnQgcHJldlNyYzsKKwkgICAgbG9uZyBub3JtMzI7CisgICAgICAgIGludCBjY09yUUNNYXNrLCBxY01hc2s7CisJICAgIGludCByZW9yZGVyU3RhcnRJbmRleCwgbGVuZ3RoOworCSAgICBjaGFyIGMsIGMyLCBtaW5Ob01heWJlOworCSAgICBpbnQvKnVuc2lnbmVkIGJ5dGUqLyBjYywgcHJldkNDLCB0cmFpbENDOworCQljaGFyW10gcDsKKwkJaW50IHBTdGFydDsKKwkgICAgaWYoIWNvbXBhdCkgeworCSAgICAgICAgbWluTm9NYXliZT0oY2hhcilpbmRleGVzW0lOREVYX01JTl9ORkRfTk9fTUFZQkVdOworCSAgICAgICAgcWNNYXNrPVFDX05GRDsKKwkgICAgfSBlbHNlIHsKKwkgICAgICAgIG1pbk5vTWF5YmU9KGNoYXIpaW5kZXhlc1tJTkRFWF9NSU5fTkZLRF9OT19NQVlCRV07CisJICAgICAgICBxY01hc2s9UUNfTkZLRDsKKwkgICAgfQorCQorCSAgICAvKiBpbml0aWFsaXplICovCisJICAgIGNjT3JRQ01hc2s9Q0NfTUFTS3xxY01hc2s7CisJICAgIHJlb3JkZXJTdGFydEluZGV4PTA7CisJICAgIHByZXZDQz0wOworCSAgICBub3JtMzI9MDsKKwkgICAgYz0wOworCQlwU3RhcnQ9MDsKKwkgICAgCisJICAgIGZvcig7OykgeworCSAgICAgICAgLyogY291bnQgY29kZSB1bml0cyBiZWxvdyB0aGUgbWluaW11bSBvciB3aXRoIGlycmVsZXZhbnQgZGF0YSBmb3IgCisgICAgICAgICAgICAgKiB0aGUgcXVpY2sgY2hlY2sgCisgICAgICAgICAgICAgKi8KKwkgICAgICAgIHByZXZTcmM9c3JjSW5kZXg7CisKKyAgICAgICAgICAgIHdoaWxlKHNyY0luZGV4IT1zcmNMaW1pdCAmJigoYz1zcmNbc3JjSW5kZXhdKTxtaW5Ob01heWJlIHx8IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobm9ybTMyPWdldE5vcm0zMihjKSkmY2NPclFDTWFzayk9PTApKXsKKyAgICAgICAgICAgICAgICBwcmV2Q0M9MDsKKyAgICAgICAgICAgICAgICArK3NyY0luZGV4OworICAgICAgICAgICAgfQorCisJICAgICAgICAvKiBjb3B5IHRoZXNlIGNvZGUgdW5pdHMgYWxsIGF0IG9uY2UgKi8KKwkgICAgICAgIGlmKHNyY0luZGV4IT1wcmV2U3JjKSB7CisJICAgICAgICAgICAgbGVuZ3RoPShpbnQpKHNyY0luZGV4LXByZXZTcmMpOworCSAgICAgICAgICAgIGlmKChkZXN0SW5kZXgrbGVuZ3RoKTw9ZGVzdExpbWl0KSB7CisJICAgICAgICAgICAgCVN5c3RlbS5hcnJheWNvcHkoc3JjLHByZXZTcmMsZGVzdCxkZXN0SW5kZXgsbGVuZ3RoKTsKKwkgICAgICAgICAgICB9CisJICAgICAgICAgIAorCSAgICAgICAgICAgIGRlc3RJbmRleCs9bGVuZ3RoOworCSAgICAgICAgICAgIHJlb3JkZXJTdGFydEluZGV4PWRlc3RJbmRleDsKKwkgICAgICAgIH0KKwkKKwkgICAgICAgIC8qIGVuZCBvZiBzb3VyY2UgcmVhY2hlZD8gKi8KKwkgICAgICAgIGlmKHNyY0luZGV4PT1zcmNMaW1pdCkgeworCSAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgfQorCQorCSAgICAgICAgLyogYyBhbHJlYWR5IGNvbnRhaW5zICpzcmMgYW5kIG5vcm0zMiBpcyBzZXQgZm9yIGl0LCBpbmNyZW1lbnQgc3JjKi8KKwkgICAgICAgICsrc3JjSW5kZXg7CisJCisJICAgICAgICAvKiBjaGVjayBvbmUgYWJvdmUtbWluaW11bSwgcmVsZXZhbnQgY29kZSB1bml0ICovCisJICAgICAgICAvKgorCSAgICAgICAgICogZ2VuZXJhbGx5LCBzZXQgcCBhbmQgbGVuZ3RoIHRvIHRoZSBkZWNvbXBvc2l0aW9uIHN0cmluZworCSAgICAgICAgICogaW4gc2ltcGxlIGNhc2VzLCBwPT1OVUxMIGFuZCAoYywgYzIpIHdpbGwgaG9sZCB0aGUgbGVuZ3RoIGNvZGUgCisgICAgICAgICAgICAgKiB1bml0cyB0byBhcHBlbmQgaW4gYWxsIGNhc2VzLCBzZXQgY2MgdG8gdGhlIGxlYWQgYW5kIHRyYWlsQ0MgdG8gCisgICAgICAgICAgICAgKiB0aGUgdHJhaWwgY29tYmluaW5nIGNsYXNzCisJICAgICAgICAgKgorCSAgICAgICAgICogdGhlIGZvbGxvd2luZyBtZXJnZS1zb3J0IG9mIHRoZSBjdXJyZW50IGNoYXJhY3RlciBpbnRvIHRoZSAKKyAgICAgICAgICAgICAqIHByZWNlZGluZywgY2Fub25pY2FsbHkgb3JkZXJlZCByZXN1bHQgdGV4dCB3aWxsIHVzZSB0aGUgCisgICAgICAgICAgICAgKiBvcHRpbWl6ZWQgaW5zZXJ0T3JkZXJlZCgpCisJICAgICAgICAgKiBpZiB0aGVyZSBpcyBvbmx5IG9uZSBzaW5nbGUgY29kZSBwb2ludCB0byBwcm9jZXNzOworCSAgICAgICAgICogdGhpcyBpcyBpbmRpY2F0ZWQgd2l0aCBwPT1OVUxMLCBhbmQgKGMsIGMyKSBpcyB0aGUgY2hhcmFjdGVyIHRvIAorICAgICAgICAgICAgICogaW5zZXJ0CisJICAgICAgICAgKiAoKGMsIDApIGZvciBhIEJNUCBjaGFyYWN0ZXIgYW5kIChsZWFkIHN1cnJvZ2F0ZSwgdHJhaWwgc3Vycm9nYXRlKQorCSAgICAgICAgICogZm9yIGEgc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXIpCisJICAgICAgICAgKiBvdGhlcndpc2UsIHBbbGVuZ3RoXSBpcyBtZXJnZWQgaW4gd2l0aCBfbWVyZ2VPcmRlcmVkKCkKKwkgICAgICAgICAqLworCSAgICAgICAgaWYoaXNOb3JtMzJIYW5ndWxPckphbW8obm9ybTMyKSkgeworLy8JICAgICAgICAgICAgaWYoaWdub3JlSGFuZ3VsKSB7CisvLwkgICAgICAgICAgICAgICAgYzI9MDsKKy8vCSAgICAgICAgICAgICAgICBwPU5VTEw7CisvLwkgICAgICAgICAgICAgICAgbGVuZ3RoPTE7CisvLwkgICAgICAgICAgICB9IGVsc2UgeworCSAgICAgICAgICAgICAgICAvLyBIYW5ndWwgc3lsbGFibGU6IGRlY29tcG9zZSBhbGdvcml0aG1pY2FsbHkgCisJICAgICAgICAgICAgICAgIHA9YnVmZmVyOworCSAgICAgICAgICAgICAgICBwU3RhcnQ9MDsKKwkgICAgICAgICAgICAgICAgY2M9dHJhaWxDQz0wOworCQorCSAgICAgICAgICAgICAgICBjLT1IQU5HVUxfQkFTRTsKKwkKKwkgICAgICAgICAgICAgICAgYzI9KGNoYXIpKGMlSkFNT19UX0NPVU5UKTsKKwkgICAgICAgICAgICAgICAgYy89SkFNT19UX0NPVU5UOworCSAgICAgICAgICAgICAgICBpZihjMj4wKSB7CisJICAgICAgICAgICAgICAgICAgICBidWZmZXJbMl09KGNoYXIpKEpBTU9fVF9CQVNFK2MyKTsKKwkgICAgICAgICAgICAgICAgICAgIGxlbmd0aD0zOworCSAgICAgICAgICAgICAgICB9IGVsc2UgeworCSAgICAgICAgICAgICAgICAgICAgbGVuZ3RoPTI7CisJICAgICAgICAgICAgICAgIH0KKwkKKwkgICAgICAgICAgICAgICAgYnVmZmVyWzFdPShjaGFyKShKQU1PX1ZfQkFTRStjJUpBTU9fVl9DT1VOVCk7CisJICAgICAgICAgICAgICAgIGJ1ZmZlclswXT0oY2hhcikoSkFNT19MX0JBU0UrYy9KQU1PX1ZfQ09VTlQpOworLy8JICAgICAgICAgICAgfQorCSAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAgICBpZihpc05vcm0zMlJlZ3VsYXIobm9ybTMyKSkgeworCSAgICAgICAgICAgICAgICBjMj0wOworCSAgICAgICAgICAgICAgICBsZW5ndGg9MTsKKwkgICAgICAgICAgICB9IGVsc2UgeworCSAgICAgICAgICAgICAgICAvLyBjIGlzIGEgbGVhZCBzdXJyb2dhdGUsIGdldCB0aGUgcmVhbCBub3JtMzIgCisJICAgICAgICAgICAgICAgIGlmKHNyY0luZGV4IT1zcmNMaW1pdCAmJiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVURjE2LmlzVHJhaWxTdXJyb2dhdGUoYzI9c3JjW3NyY0luZGV4XSkpIHsKKwkgICAgICAgICAgICAgICAgICAgICsrc3JjSW5kZXg7CisJICAgICAgICAgICAgICAgICAgICBsZW5ndGg9MjsKKwkgICAgICAgICAgICAgICAgICAgIG5vcm0zMj1nZXROb3JtMzJGcm9tU3Vycm9nYXRlUGFpcihub3JtMzIsIGMyKTsKKwkgICAgICAgICAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAgICAgICAgICAgIGMyPTA7CisJICAgICAgICAgICAgICAgICAgICBsZW5ndGg9MTsKKwkgICAgICAgICAgICAgICAgICAgIG5vcm0zMj0wOworCSAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgfQorCQorCSAgICAgICAgICAgIC8qIGdldCB0aGUgZGVjb21wb3NpdGlvbiBhbmQgdGhlIGxlYWQgYW5kIHRyYWlsIGNjJ3MgKi8KKwkgICAgICAgICAgICBpZigobm9ybTMyJnFjTWFzayk9PTApIHsKKwkgICAgICAgICAgICAgICAgLyogYyBkb2VzIG5vdCBkZWNvbXBvc2UgKi8KKwkgICAgICAgICAgICAgICAgY2M9dHJhaWxDQz0oaW50KSgoVU5TSUdORURfQllURV9NQVNLKSAmIChub3JtMzI+PkNDX1NISUZUKSk7CisJICAgICAgICAgICAgICAgIHA9bnVsbDsKKyAgICAgICAgICAgICAgICAgICAgcFN0YXJ0PS0xOworCSAgICAgICAgICAgIH0gZWxzZSB7CisJICAgICAgICAgICAgCURlY29tcG9zZUFyZ3MgYXJnID0gbmV3IERlY29tcG9zZUFyZ3MoKTsKKwkgICAgICAgICAgICAJLyogYyBkZWNvbXBvc2VzLCBnZXQgZXZlcnl0aGluZyBmcm9tIHRoZSB2YXJpYWJsZS1sZW5ndGggCisgICAgICAgICAgICAgICAgICAgICAqIGV4dHJhIGRhdGEgCisgICAgICAgICAgICAgICAgICAgICAqLworCSAgICAgICAgICAgICAgICBwU3RhcnQ9ZGVjb21wb3NlKG5vcm0zMiwgcWNNYXNrLCBhcmcpOworCSAgICAgICAgICAgICAgICBwPWV4dHJhRGF0YTsKKwkgICAgICAgICAgICAgICAgbGVuZ3RoPWFyZy5sZW5ndGg7CisJICAgICAgICAgICAgICAgIGNjPWFyZy5jYzsKKwkgICAgICAgICAgICAgICAgdHJhaWxDQz1hcmcudHJhaWxDQzsKKwkgICAgICAgICAgICAgICAgaWYobGVuZ3RoPT0xKSB7CisJICAgICAgICAgICAgICAgICAgICAvKiBmYXN0cGF0aCBhIHNpbmdsZSBjb2RlIHVuaXQgZnJvbSBkZWNvbXBvc2l0aW9uICovCisJICAgICAgICAgICAgICAgICAgICBjPXBbcFN0YXJ0XTsKKwkgICAgICAgICAgICAgICAgICAgIGMyPTA7CisJICAgICAgICAgICAgICAgICAgICBwPW51bGw7CisgICAgICAgICAgICAgICAgICAgICAgICBwU3RhcnQ9LTE7CisJICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICB9CisJICAgICAgICB9CisJCisJICAgICAgICAvKiBhcHBlbmQgdGhlIGRlY29tcG9zaXRpb24gdG8gdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciwgYXNzdW1lIAorICAgICAgICAgICAgICogbGVuZ3RoPjAgCisgICAgICAgICAgICAgKi8KKwkgICAgICAgIGlmKChkZXN0SW5kZXgrbGVuZ3RoKTw9ZGVzdExpbWl0KSB7CisJICAgICAgICAgICAgaW50IHJlb3JkZXJTcGxpdD1kZXN0SW5kZXg7CisJICAgICAgICAgICAgaWYocD09bnVsbCkgeworCSAgICAgICAgICAgICAgICAvKiBmYXN0cGF0aDogc2luZ2xlIGNvZGUgcG9pbnQgKi8KKwkgICAgICAgICAgICAgICAgaWYoY2MhPTAgJiYgY2M8cHJldkNDKSB7CisJICAgICAgICAgICAgICAgICAgICAvKiAoYywgYzIpIGlzIG91dCBvZiBvcmRlciB3aXRoIHJlc3BlY3QgdG8gdGhlIHByZWNlZGluZworICAgICAgICAgICAgICAgICAgICAgICAgICogIHRleHQgCisgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKwkgICAgICAgICAgICAgICAgICAgIGRlc3RJbmRleCs9bGVuZ3RoOworCSAgICAgICAgICAgICAgICAgICAgdHJhaWxDQz1pbnNlcnRPcmRlcmVkKGRlc3QscmVvcmRlclN0YXJ0SW5kZXgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW9yZGVyU3BsaXQsIGRlc3RJbmRleCwgYywgYzIsIGNjKTsKKwkgICAgICAgICAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAgICAgICAgICAgIC8qIGp1c3QgYXBwZW5kIChjLCBjMikgKi8KKwkgICAgICAgICAgICAgICAgICAgIGRlc3RbZGVzdEluZGV4KytdPWM7CisJICAgICAgICAgICAgICAgICAgICBpZihjMiE9MCkgeworCSAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RbZGVzdEluZGV4KytdPWMyOworCSAgICAgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAgICAgICAgLyogZ2VuZXJhbDogbXVsdGlwbGUgY29kZSBwb2ludHMgKG9yZGVyZWQgYnkgdGhlbXNlbHZlcykgCisgICAgICAgICAgICAgICAgICAgICAqIGZyb20gZGVjb21wb3NpdGlvbiAKKyAgICAgICAgICAgICAgICAgICAgICovCisJICAgICAgICAgICAgICAgIGlmKGNjIT0wICYmIGNjPHByZXZDQykgeworCSAgICAgICAgICAgICAgICAgICAgLyogdGhlIGRlY29tcG9zaXRpb24gaXMgb3V0IG9mIG9yZGVyIHdpdGggcmVzcGVjdCB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAqICBwcmVjZWRpbmcgdGV4dCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAqLworCSAgICAgICAgICAgICAgICAgICAgZGVzdEluZGV4Kz1sZW5ndGg7CisJICAgICAgICAgICAgICAgICAgICB0cmFpbENDPW1lcmdlT3JkZXJlZChkZXN0LHJlb3JkZXJTdGFydEluZGV4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlb3JkZXJTcGxpdCxwLCBwU3RhcnQscFN0YXJ0K2xlbmd0aCk7CisJICAgICAgICAgICAgICAgIH0gZWxzZSB7CisJICAgICAgICAgICAgICAgICAgICAvKiBqdXN0IGFwcGVuZCB0aGUgZGVjb21wb3NpdGlvbiAqLworCSAgICAgICAgICAgICAgICAgICAgZG8geworCSAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RbZGVzdEluZGV4KytdPXBbcFN0YXJ0KytdOworCSAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSgtLWxlbmd0aD4wKTsKKwkgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgIH0KKwkgICAgICAgIH0gZWxzZSB7CisJICAgICAgICAgICAgLyogYnVmZmVyIG92ZXJmbG93ICovCisJICAgICAgICAgICAgLyoga2VlcCBpbmNyZW1lbnRpbmcgdGhlIGRlc3RJbmRleCBmb3IgcHJlZmxpZ2h0aW5nICovCisJICAgICAgICAgICAgZGVzdEluZGV4Kz1sZW5ndGg7CisJICAgICAgICB9CisJCisJICAgICAgICBwcmV2Q0M9dHJhaWxDQzsKKwkgICAgICAgIGlmKHByZXZDQz09MCkgeworCSAgICAgICAgICAgIHJlb3JkZXJTdGFydEluZGV4PWRlc3RJbmRleDsKKwkgICAgICAgIH0KKwkgICAgfQorCQorCSAgICBvdXRUcmFpbENDWzBdPXByZXZDQzsKKworCSAgICByZXR1cm4gZGVzdEluZGV4OworCX0KKwkKKwkvKiBtYWtlIE5GQyAmIE5GS0MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2xhc3MgTmV4dENvbWJpbmluZ0FyZ3N7CisJCWNoYXJbXSBzb3VyY2U7CisJCWludCBzdGFydDsKKwkJLy9pbnQgbGltaXQ7CisJCWNoYXIgYzsKKwkJY2hhciBjMjsKKwkJaW50Lyp1bnNpZ25lZCovIGNvbWJpbmluZ0luZGV4OworCQljaGFyIC8qdW5zaWduZWQgYnl0ZSovIGNjOworCX0KKwkKKwkvKiBnZXQgdGhlIGNvbXBvc2l0aW9uIHByb3BlcnRpZXMgb2YgdGhlIG5leHQgY2hhcmFjdGVyICovCisJcHJpdmF0ZSBzdGF0aWMgaW50IC8qdW5zaWduZWQqLwlnZXROZXh0Q29tYmluaW5nKE5leHRDb21iaW5pbmdBcmdzIGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbWl0KSB7CisJICAgIGxvbmcvKnVuc2lnbmVkKi8gbm9ybTMyOyAKKyAgICAgICAgaW50IGNvbWJpbmVGbGFnczsKKwkKKwkgICAgYXJncy5jPWFyZ3Muc291cmNlW2FyZ3Muc3RhcnQrK107CisJICAgIG5vcm0zMj1nZXROb3JtMzIoYXJncy5jKTsKKwkgICAgaWYoKG5vcm0zMiYoQ0NfTUFTS3xDT01CSU5FU19BTlkpKT09MCkgeworCSAgICAgICAgYXJncy5jMj0wOworCSAgICAgICAgYXJncy5jb21iaW5pbmdJbmRleD0wOworCSAgICAgICAgYXJncy5jYz0wOworCSAgICAgICAgcmV0dXJuIDA7CisJICAgIH0gZWxzZSB7CisJICAgICAgICBpZihpc05vcm0zMlJlZ3VsYXIobm9ybTMyKSkgeworCSAgICAgICAgICAgIGFyZ3MuYzI9MDsKKwkgICAgICAgIH0gZWxzZSBpZihpc05vcm0zMkhhbmd1bE9ySmFtbyhub3JtMzIpKSB7CisJICAgICAgICAgICAgLyogYSBjb21wYXRpYmlsaXR5IGRlY29tcG9zaXRpb24gY29udGFpbmVkIEphbW9zICovCisJICAgICAgICAgICAgYXJncy5jMj0wOworCSAgICAgICAgICAgIGFyZ3MuY29tYmluaW5nSW5kZXg9KGludCkoKFVOU0lHTkVEX0lOVF9NQVNLKSYoMHhmZmYwfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9ybTMyPj5FWFRSQV9TSElGVCkpKTsKKwkgICAgICAgICAgICBhcmdzLmNjPTA7CisJICAgICAgICAgICAgcmV0dXJuIChpbnQpKG5vcm0zMiZDT01CSU5FU19BTlkpOworCSAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAgICAvKiBjIGlzIGEgbGVhZCBzdXJyb2dhdGUsIGdldCB0aGUgcmVhbCBub3JtMzIgKi8KKwkgICAgICAgICAgICBpZihhcmdzLnN0YXJ0IT1saW1pdCAmJiBVVEYxNi5pc1RyYWlsU3Vycm9nYXRlKGFyZ3MuYzI9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3Muc291cmNlW2FyZ3Muc3RhcnRdKSkgeworCSAgICAgICAgICAgICAgICArK2FyZ3Muc3RhcnQ7CisJICAgICAgICAgICAgICAgIG5vcm0zMj1nZXROb3JtMzJGcm9tU3Vycm9nYXRlUGFpcihub3JtMzIsIGFyZ3MuYzIpOworCSAgICAgICAgICAgIH0gZWxzZSB7CisJICAgICAgICAgICAgICAgIGFyZ3MuYzI9MDsKKwkgICAgICAgICAgICAgICAgYXJncy5jb21iaW5pbmdJbmRleD0wOworCSAgICAgICAgICAgICAgICBhcmdzLmNjPTA7CisJICAgICAgICAgICAgICAgIHJldHVybiAwOworCSAgICAgICAgICAgIH0KKwkgICAgICAgIH0KKwkKKwkgICAgICAgIGNvbWJpbmVGbGFncz0oaW50KShub3JtMzImQ09NQklORVNfQU5ZKTsKKwkgICAgICAgIGlmKGNvbWJpbmVGbGFncyE9MCkgeworICAgICAgICAgICAgICAgIGludCBpbmRleCA9IGdldEV4dHJhRGF0YUluZGV4KG5vcm0zMik7CisJICAgICAgICAgICAgYXJncy5jb21iaW5pbmdJbmRleD1pbmRleD4wID8gZXh0cmFEYXRhWyhpbmRleC0xKV0gOjA7CisJICAgICAgICB9CisJCisJICAgICAgICBhcmdzLmNjPShjaGFyKSgoVU5TSUdORURfQllURV9NQVNLKSYobm9ybTMyPj5DQ19TSElGVCkpOworCSAgICAgICAgcmV0dXJuIGNvbWJpbmVGbGFnczsKKwkgICAgfQorCX0KKwkKKwkvKgorCSAqIGdpdmVuIGEgY29tcG9zaXRpb24tcmVzdWx0IHN0YXJ0ZXIgKGMsIGMyKSAtIHdoaWNoIG1lYW5zIGl0cyBjYz09MCwKKwkgKiBpdCBjb21iaW5lcyBmb3J3YXJkLCBpdCBoYXMgZXh0cmEgZGF0YSwgaXRzIG5vcm0zMiE9MCwKKwkgKiBpdCBpcyBub3QgYSBIYW5ndWwgb3IgSmFtbywKKwkgKiBnZXQganVzdCBpdHMgY29tYmluZUZ3ZEluZGV4CisJICoKKwkgKiBub3JtMzIoYykgaXMgc3BlY2lhbCBpZiBhbmQgb25seSBpZiBjMiE9MAorCSAqLworCXByaXZhdGUgc3RhdGljIGludC8qdW5zaWduZWQqLyBnZXRDb21iaW5pbmdJbmRleEZyb21TdGFydGVyKGNoYXIgYyxjaGFyIGMyKXsKKwkgICAgbG9uZy8qdW5zaWduZWQqLyBub3JtMzI7CisJCisJICAgIG5vcm0zMj1nZXROb3JtMzIoYyk7CisJICAgIGlmKGMyIT0wKSB7CisJICAgICAgICBub3JtMzI9Z2V0Tm9ybTMyRnJvbVN1cnJvZ2F0ZVBhaXIobm9ybTMyLCBjMik7CisJICAgIH0KKwkgICAgcmV0dXJuIGV4dHJhRGF0YVsoZ2V0RXh0cmFEYXRhSW5kZXgobm9ybTMyKS0xKV07CisJfQorCQorCS8qCisJICogRmluZCB0aGUgcmVjb21wb3NpdGlvbiByZXN1bHQgZm9yCisJICogYSBmb3J3YXJkLWNvbWJpbmluZyBjaGFyYWN0ZXIKKwkgKiAoc3BlY2lmaWVkIHdpdGggYSBwb2ludGVyIHRvIGl0cyBwYXJ0IG9mIHRoZSBjb21iaW5pbmdUYWJsZVtdKQorCSAqIGFuZCBhIGJhY2t3YXJkLWNvbWJpbmluZyBjaGFyYWN0ZXIKKwkgKiAoc3BlY2lmaWVkIHdpdGggaXRzIGNvbWJpbmVCYWNrSW5kZXgpLgorCSAqCisJICogSWYgdGhlc2UgdHdvIGNoYXJhY3RlcnMgY29tYmluZSwgdGhlbiBzZXQgKHZhbHVlLCB2YWx1ZTIpCisJICogd2l0aCB0aGUgY29kZSB1bml0KHMpIG9mIHRoZSBjb21wb3NpdGlvbiBjaGFyYWN0ZXIuCisJICoKKwkgKiBSZXR1cm4gdmFsdWU6CisJICogMCAgICBkbyBub3QgY29tYmluZQorCSAqIDEgICAgY29tYmluZQorCSAqID4xICAgY29tYmluZSwgYW5kIHRoZSBjb21wb3NpdGlvbiBpcyBhIGZvcndhcmQtY29tYmluaW5nIHN0YXJ0ZXIKKwkgKgorCSAqIFNlZSB1bm9ybWltcC5oIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBjb21wb3NpdGlvbiB0YWJsZSBmb3JtYXQuCisJICovCisJcHJpdmF0ZSBzdGF0aWMgaW50Lyp1bnNpZ25lZCovIGNvbWJpbmUoY2hhcltddGFibGUsaW50IHRhYmxlU3RhcnQsIAorCQkJCQkJCQkgICBpbnQvKnVuc2luZ2VkKi8gY29tYmluZUJhY2tJbmRleCwKKwkgICAgICAgICAJCQkJCSAgIGludFtdIG91dFZhbHVlcykgeworCSAgICBpbnQvKnVuc2lnbmVkKi8ga2V5OworCSAgICBpbnQgdmFsdWUsdmFsdWUyOworCSAgICAKKwkJaWYob3V0VmFsdWVzLmxlbmd0aDwyKXsKKwkJCXRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oKTsKKwkJfQorCQkKKwkgICAgLyogc2VhcmNoIGluIHRoZSBzdGFydGVyJ3MgY29tcG9zaXRpb24gdGFibGUgKi8KKwkgICAgZm9yKDs7KSB7CisJICAgICAgICBrZXk9dGFibGVbdGFibGVTdGFydCsrXTsKKwkgICAgICAgIGlmKGtleT49Y29tYmluZUJhY2tJbmRleCkgeworCSAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgfQorCSAgICAgICAgdGFibGVTdGFydCs9ICgodGFibGVbdGFibGVTdGFydF0mMHg4MDAwKSAhPSAwKT8gMiA6IDE7CisJICAgIH0KKwkKKwkgICAgLyogbWFzayBvZmYgYml0IDE1LCB0aGUgbGFzdC1lbnRyeS1pbi10aGUtbGlzdCBmbGFnICovCisJICAgIGlmKChrZXkmMHg3ZmZmKT09Y29tYmluZUJhY2tJbmRleCkgeworCSAgICAgICAgLyogZm91bmQhIGNvbWJpbmUhICovCisJICAgICAgICB2YWx1ZT10YWJsZVt0YWJsZVN0YXJ0XTsKKwkKKwkgICAgICAgIC8qIGlzIHRoZSBjb21wb3NpdGlvbiBhIHN0YXJ0ZXIgdGhhdCBjb21iaW5lcyBmb3J3YXJkPyAqLworCSAgICAgICAga2V5PShpbnQpKChVTlNJR05FRF9JTlRfTUFTSykmKCh2YWx1ZSYweDIwMDApKzEpKTsKKwkKKwkgICAgICAgIC8qIGdldCB0aGUgY29tcG9zaXRpb24gcmVzdWx0IGNvZGUgcG9pbnQgZnJvbSB0aGUgdmFyaWFibGUtbGVuZ3RoIAorICAgICAgICAgICAgICogcmVzdWx0IHZhbHVlIAorICAgICAgICAgICAgICovCisJICAgICAgICBpZigodmFsdWUmMHg4MDAwKSAhPSAwKSB7CisJICAgICAgICAgICAgaWYoKHZhbHVlJjB4NDAwMCkgIT0gMCkgeworCSAgICAgICAgICAgICAgICAvKiBzdXJyb2dhdGUgcGFpciBjb21wb3NpdGlvbiByZXN1bHQgKi8KKwkgICAgICAgICAgICAgICAgdmFsdWU9KGludCkoKFVOU0lHTkVEX0lOVF9NQVNLKSYoKHZhbHVlJjB4M2ZmKXwweGQ4MDApKTsKKwkgICAgICAgICAgICAgICAgdmFsdWUyPXRhYmxlW3RhYmxlU3RhcnQrMV07CisJICAgICAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAgICAgICAgLyogQk1QIGNvbXBvc2l0aW9uIHJlc3VsdCBVKzIwMDAuLlUrZmZmZiAqLworCSAgICAgICAgICAgICAgICB2YWx1ZT10YWJsZVt0YWJsZVN0YXJ0KzFdOworCSAgICAgICAgICAgICAgICB2YWx1ZTI9MDsKKwkgICAgICAgICAgICB9CisJICAgICAgICB9IGVsc2UgeworCSAgICAgICAgICAgIC8qIEJNUCBjb21wb3NpdGlvbiByZXN1bHQgVSswMDAwLi5VKzFmZmYgKi8KKwkgICAgICAgICAgICB2YWx1ZSY9MHgxZmZmOworCSAgICAgICAgICAgIHZhbHVlMj0wOworCSAgICAgICAgfQorICAgICAgICAgICAgb3V0VmFsdWVzWzBdPXZhbHVlOworICAgICAgICAgICAgb3V0VmFsdWVzWzFdPXZhbHVlMjsJCisJICAgICAgICByZXR1cm4ga2V5OworCSAgICB9IGVsc2UgeworCSAgICAgICAgLyogbm90IGZvdW5kICovCisJICAgICAgICByZXR1cm4gMDsKKwkgICAgfQorCX0KKwkKKwkKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBjbGFzcyBSZWNvbXBvc2VBcmdzeworCQljaGFyW10gc291cmNlOworCQlpbnQgc3RhcnQ7CisJCWludCBsaW1pdDsKKwl9CisgICAgLyoKKyAgICAgKiByZWNvbXBvc2UgdGhlIGNoYXJhY3RlcnMgaW4gW3AuLmxpbWl0WworICAgICAqICh3aGljaCBpcyBpbiBORkQgLSBkZWNvbXBvc2VkIGFuZCBjYW5vbmljYWxseSBvcmRlcmVkKSwKKyAgICAgKiBhZGp1c3QgbGltaXQsIGFuZCByZXR1cm4gdGhlIHRyYWlsaW5nIGNjCisgICAgICoKKyAgICAgKiBzaW5jZSBmb3IgTkZLQyB3ZSBtYXkgZ2V0IEphbW9zIGluIGRlY29tcG9zaXRpb25zLCB3ZSBuZWVkIHRvCisgICAgICogcmVjb21wb3NlIHRob3NlIHRvbworICAgICAqCisgICAgICogbm90ZSB0aGF0IHJlY29tcG9zaXRpb24gbmV2ZXIgbGVuZ3RoZW5zIHRoZSB0ZXh0OgorICAgICAqIGFueSBjaGFyYWN0ZXIgY29uc2lzdHMgb2YgZWl0aGVyIG9uZSBvciB0d28gY29kZSB1bml0czsKKyAgICAgKiBhIGNvbXBvc2l0aW9uIG1heSBjb250YWluIGF0IG1vc3Qgb25lIG1vcmUgY29kZSB1bml0IHRoYW4gdGhlIG9yaWdpbmFsIAorICAgICAqIHN0YXJ0ZXIsIHdoaWxlIHRoZSBjb21iaW5pbmcgbWFyayB0aGF0IGlzIHJlbW92ZWQgaGFzIGF0IGxlYXN0IG9uZSBjb2RlIAorICAgICAqIHVuaXQKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBjaGFyLyp1bnNpZ25lZCBieXRlKi8gcmVjb21wb3NlKFJlY29tcG9zZUFyZ3MgYXJncykgeworICAgICAgICBpbnQgIHJlbW92ZSwgcSwgcjsKKyAgICAgICAgaW50IC8qdW5zaWduZWQqLyBjb21iaW5lRmxhZ3M7CisgICAgICAgIGludCAvKnVuc2lnbmVkKi8gY29tYmluZUZ3ZEluZGV4LCBjb21iaW5lQmFja0luZGV4OworICAgICAgICBpbnQgLyp1bnNpZ25lZCovIHJlc3VsdCwgdmFsdWUsIHZhbHVlMjsKKyAgICAgICAgaW50IC8qdW5zaWduZWQgYnl0ZSovICBwcmV2Q0M7CisgICAgICAgIGJvb2xlYW4gc3RhcnRlcklzU3VwcGxlbWVudGFyeTsKKyAgICAJaW50IHN0YXJ0ZXI7CisgICAgCWludFtdIG91dFZhbHVlcyA9IG5ldyBpbnRbMl07CisgICAgICAgIHN0YXJ0ZXI9LTE7ICAgICAgICAgICAgICAgICAgIC8qIG5vIHN0YXJ0ZXIgKi8KKyAgICAgICAgY29tYmluZUZ3ZEluZGV4PTA7ICAgICAgICAgICAgLyogd2lsbCBub3QgYmUgdXNlZCB1bnRpbCBzdGFydGVyIT1OVUxMICovCisgICAgICAgIHN0YXJ0ZXJJc1N1cHBsZW1lbnRhcnk9ZmFsc2U7IC8qIHdpbGwgbm90IGJlIHVzZWQgdW50aWwgc3RhcnRlciE9TlVMTCAqLworICAgICAgICBwcmV2Q0M9MDsKKyAgICAgICAgCisgICAgICAgIE5leHRDb21iaW5pbmdBcmdzIG5jQXJnID0gbmV3IE5leHRDb21iaW5pbmdBcmdzKCk7CisgICAgICAgIG5jQXJnLnNvdXJjZSAgPSBhcmdzLnNvdXJjZTsKKyAgICAgICAgCisgICAgICAgIG5jQXJnLmNjICAgICAgPTA7CisgICAgICAgIG5jQXJnLmMyICAgICAgPTA7ICAgIAorCisgICAgICAgIGZvcig7OykgeworICAgICAgICAgICAgbmNBcmcuc3RhcnQgPSBhcmdzLnN0YXJ0OworICAgICAgICAgICAgY29tYmluZUZsYWdzPWdldE5leHRDb21iaW5pbmcobmNBcmcsYXJncy5saW1pdCk7CisgICAgICAgICAgICBjb21iaW5lQmFja0luZGV4PW5jQXJnLmNvbWJpbmluZ0luZGV4OworICAgICAgICAgICAgYXJncy5zdGFydCA9IG5jQXJnLnN0YXJ0OworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBpZigoKGNvbWJpbmVGbGFncyZDT01CSU5FU19CQUNLKSE9MCkgJiYgc3RhcnRlciE9LTEpIHsKKyAgICAgICAgICAgICAgICBpZigoY29tYmluZUJhY2tJbmRleCYweDgwMDApIT0wKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIGMgaXMgYSBKYW1vIFYvVCwgc2VlIGlmIHdlIGNhbiBjb21wb3NlIGl0IHdpdGggdGhlIAorICAgICAgICAgICAgICAgICAgICAgKiBwcmV2aW91cyBjaGFyYWN0ZXIgCisgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICByZW1vdmU9LTE7IC8qIE5VTEwgd2hpbGUgbm8gSGFuZ3VsIGNvbXBvc2l0aW9uICovCisgICAgICAgICAgICAgICAgICAgIG5jQXJnLmMyPWFyZ3Muc291cmNlW3N0YXJ0ZXJdOworICAgICAgICAgICAgICAgICAgICBpZihjb21iaW5lQmFja0luZGV4PT0weGZmZjIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIEphbW8gViwgY29tcG9zZSB3aXRoIHByZXZpb3VzIEphbW8gTCBhbmQgZm9sbG93aW5nIAorICAgICAgICAgICAgICAgICAgICAgICAgICogSmFtbyBUIAorICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICBuY0FyZy5jMj0oY2hhcikobmNBcmcuYzItSkFNT19MX0JBU0UpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYobmNBcmcuYzI8SkFNT19MX0NPVU5UKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlPWFyZ3Muc3RhcnQtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuY0FyZy5jPShjaGFyKShIQU5HVUxfQkFTRSsobmNBcmcuYzIqSkFNT19WX0NPVU5UKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuY0FyZy5jLUpBTU9fVl9CQVNFKSkqSkFNT19UX0NPVU5UKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihhcmdzLnN0YXJ0IT1hcmdzLmxpbWl0ICYmIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuY0FyZy5jMj0oY2hhcikoYXJncy5zb3VyY2VbYXJncy5zdGFydF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLUpBTU9fVF9CQVNFKSk8SkFNT19UX0NPVU5UKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrYXJncy5zdGFydDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmNBcmcuYys9bmNBcmcuYzI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3Muc291cmNlW3N0YXJ0ZXJdPW5jQXJnLmM7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgICAgICAgICBpZihyZW1vdmUhPS0xKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiByZW1vdmUgdGhlIEphbW8ocykgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIHE9cmVtb3ZlOworICAgICAgICAgICAgICAgICAgICAgICAgcj1hcmdzLnN0YXJ0OworICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUocjxhcmdzLmxpbWl0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5zb3VyY2VbcSsrXT1hcmdzLnNvdXJjZVtyKytdOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5zdGFydD1yZW1vdmU7CisgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLmxpbWl0PXE7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgICAgICAgICAgbmNBcmcuYzI9MDsgLyogYzIgaGVsZCAqc3RhcnRlciB0ZW1wb3JhcmlseSAqLworICAgIAorICAgICAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAgICAgKiBub3c6IGNjPT0wIGFuZCB0aGUgY29tYmluaW5nIGluZGV4IGRvZXMgbm90IGluY2x1ZGUgCisgICAgICAgICAgICAgICAgICAgICAqICJmb3J3YXJkIiAtPiB0aGUgcmVzdCBvZiB0aGUgbG9vcCBib2R5IHdpbGwgcmVzZXQgc3RhcnRlcgorICAgICAgICAgICAgICAgICAgICAgKiB0byBOVUxMOyB0ZWNobmljYWxseSwgYSBjb21wb3NlZCBIYW5ndWwgc3lsbGFibGUgaXMgYSAKKyAgICAgICAgICAgICAgICAgICAgICogc3RhcnRlciwgYnV0IGl0IGRvZXMgbm90IGNvbWJpbmUgZm9yd2FyZCBub3cgdGhhdCB3ZSBoYXZlCisgICAgICAgICAgICAgICAgICAgICAqIGNvbnN1bWVkIGFsbCBlbGlnaWJsZSBKYW1vczsgZm9yIEphbW8gVi9ULCBjb21iaW5lRmxhZ3MgCisgICAgICAgICAgICAgICAgICAgICAqIGRvZXMgbm90IGNvbnRhaW4gX05PUk1fQ09NQklORVNfRldECisgICAgICAgICAgICAgICAgICAgICAqLworICAgIAorICAgICAgICAgICAgICAgIH0gZWxzZSBpZigKKyAgICAgICAgICAgICAgICAgICAgLyogdGhlIHN0YXJ0ZXIgaXMgbm90IGEgSmFtbyBWL1QgYW5kICovCisgICAgICAgICAgICAgICAgICAgICEoKGNvbWJpbmVGd2RJbmRleCYweDgwMDApIT0wKSAmJgorICAgICAgICAgICAgICAgICAgICAvKiB0aGUgY29tYmluaW5nIG1hcmsgaXMgbm90IGJsb2NrZWQgYW5kICovCisgICAgICAgICAgICAgICAgICAgIChwcmV2Q0M8bmNBcmcuY2MgfHwgcHJldkNDPT0wKSAmJgorICAgICAgICAgICAgICAgICAgICAvKiB0aGUgc3RhcnRlciBhbmQgdGhlIGNvbWJpbmluZyBtYXJrIChjLCBjMikgZG8gY29tYmluZSAqLworICAgICAgICAgICAgICAgICAgICAwIT0ocmVzdWx0PWNvbWJpbmUoY29tYmluaW5nVGFibGUsY29tYmluZUZ3ZEluZGV4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbWJpbmVCYWNrSW5kZXgsIG91dFZhbHVlcykpCisgICAgICAgICAgICAgICAgKSB7CisgICAgICAgICAgICAgICAgCXZhbHVlPW91dFZhbHVlc1swXTsKKyAgICAgICAgICAgICAgICAJdmFsdWUyPW91dFZhbHVlc1sxXTsKKyAgICAgICAgICAgICAgICAgICAgLyogcmVwbGFjZSB0aGUgc3RhcnRlciB3aXRoIHRoZSBjb21wb3NpdGlvbiwgcmVtb3ZlIHRoZSAKKyAgICAgICAgICAgICAgICAgICAgICogY29tYmluaW5nIG1hcmsgCisgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICByZW1vdmU9IG5jQXJnLmMyPT0wID8gYXJncy5zdGFydC0xIDogYXJncy5zdGFydC0yOyAvKiBpbmRleCB0byB0aGUgY29tYmluaW5nIG1hcmsgKi8KKyAgICAKKyAgICAgICAgICAgICAgICAgICAgLyogcmVwbGFjZSB0aGUgc3RhcnRlciB3aXRoIHRoZSBjb21wb3NpdGlvbiAqLworICAgICAgICAgICAgICAgICAgICBhcmdzLnNvdXJjZVtzdGFydGVyXT0oY2hhcil2YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYoc3RhcnRlcklzU3VwcGxlbWVudGFyeSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYodmFsdWUyIT0wKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYm90aCBhcmUgc3VwcGxlbWVudGFyeSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3Muc291cmNlW3N0YXJ0ZXIrMV09KGNoYXIpdmFsdWUyOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0aGUgY29tcG9zaXRpb24gaXMgc2hvcnRlciB0aGFuIHRoZSBzdGFydGVyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBtb3ZlIHRoZSBpbnRlcm1lZGlhdGUgY2hhcmFjdGVycyBmb3J3YXJkIG9uZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ZXJJc1N1cHBsZW1lbnRhcnk9ZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcT1zdGFydGVyKzE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcj1xKzE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUocjxyZW1vdmUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5zb3VyY2VbcSsrXT1hcmdzLnNvdXJjZVtyKytdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLXJlbW92ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmKHZhbHVlMiE9MCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLyogdGhlIGNvbXBvc2l0aW9uIGlzIGxvbmdlciB0aGFuIHRoZSBzdGFydGVyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAqIG1vdmUgdGhlIGludGVybWVkaWF0ZSBjaGFyYWN0ZXJzIGJhY2sgb25lICovCisgICAgICAgICAgICAgICAgICAgICAgICBzdGFydGVySXNTdXBwbGVtZW50YXJ5PXRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiB0ZW1wb3JhcmlseSBpbmNyZW1lbnQgZm9yIHRoZSBsb29wIGJvdW5kYXJ5ICovCisgICAgICAgICAgICAgICAgICAgICAgICArK3N0YXJ0ZXI7IAorICAgICAgICAgICAgICAgICAgICAgICAgcT1yZW1vdmU7CisgICAgICAgICAgICAgICAgICAgICAgICByPSsrcmVtb3ZlOworICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUoc3RhcnRlcjxxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5zb3VyY2VbLS1yXT1hcmdzLnNvdXJjZVstLXFdOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5zb3VyY2Vbc3RhcnRlcl09KGNoYXIpdmFsdWUyOworICAgICAgICAgICAgICAgICAgICAgICAgLS1zdGFydGVyOyAvKiB1bmRvIHRoZSB0ZW1wb3JhcnkgaW5jcmVtZW50ICovCisgICAgICAgICAgICAgICAgICAgIC8qIH0gZWxzZSB7IGJvdGggYXJlIG9uIHRoZSBCTVAsIG5vdGhpbmcgbW9yZSB0byBkbyAqLworICAgICAgICAgICAgICAgICAgICB9CisgICAgCisgICAgICAgICAgICAgICAgICAgIC8qIHJlbW92ZSB0aGUgY29tYmluaW5nIG1hcmsgYnkgbW92aW5nIHRoZSBmb2xsb3dpbmcgdGV4dCAKKyAgICAgICAgICAgICAgICAgICAgICogb3ZlciBpdCAqLworICAgICAgICAgICAgICAgICAgICBpZihyZW1vdmU8YXJncy5zdGFydCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcT1yZW1vdmU7CisgICAgICAgICAgICAgICAgICAgICAgICByPWFyZ3Muc3RhcnQ7CisgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZShyPGFyZ3MubGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLnNvdXJjZVtxKytdPWFyZ3Muc291cmNlW3IrK107CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLnN0YXJ0PXJlbW92ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MubGltaXQ9cTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgICAgICAgICAvKiBrZWVwIHByZXZDQyBiZWNhdXNlIHdlIHJlbW92ZWQgdGhlIGNvbWJpbmluZyBtYXJrICovCisgICAgCisgICAgICAgICAgICAgICAgICAgIC8qIGRvbmU/ICovCisgICAgICAgICAgICAgICAgICAgIGlmKGFyZ3Muc3RhcnQ9PWFyZ3MubGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoY2hhcilwcmV2Q0M7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgICAgICAgICAgLyogaXMgdGhlIGNvbXBvc2l0aW9uIGEgc3RhcnRlciB0aGF0IGNvbWJpbmVzIGZvcndhcmQ/ICovCisgICAgICAgICAgICAgICAgICAgIGlmKHJlc3VsdD4xKSB7CisgICAgICAgICAgICAgICAgICAgICAgIGNvbWJpbmVGd2RJbmRleD1nZXRDb21iaW5pbmdJbmRleEZyb21TdGFydGVyKChjaGFyKXZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIpdmFsdWUyKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRlcj0tMTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgICAgICAgICAvKiB3ZSBjb21iaW5lZCBhbmQgc2V0IHByZXZDQywgY29udGludWUgd2l0aCBsb29raW5nIGZvciAKKyAgICAgICAgICAgICAgICAgICAgICogY29tcG9zaXRpb25zICovCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgIC8qIG5vIGNvbWJpbmF0aW9uIHRoaXMgdGltZSAqLworICAgICAgICAgICAgcHJldkNDPW5jQXJnLmNjOworICAgICAgICAgICAgaWYoYXJncy5zdGFydD09YXJncy5saW1pdCkgeworICAgICAgICAgICAgICAgIHJldHVybiAoY2hhcilwcmV2Q0M7CisgICAgICAgICAgICB9CisgICAgCisgICAgICAgICAgICAvKiBpZiAoYywgYzIpIGRpZCBub3QgY29tYmluZSwgdGhlbiBjaGVjayBpZiBpdCBpcyBhIHN0YXJ0ZXIgKi8KKyAgICAgICAgICAgIGlmKG5jQXJnLmNjPT0wKSB7CisgICAgICAgICAgICAgICAgLyogZm91bmQgYSBuZXcgc3RhcnRlciAqLworICAgICAgICAgICAgICAgIGlmKChjb21iaW5lRmxhZ3MmQ09NQklORVNfRldEKSE9MCkgeworICAgICAgICAgICAgICAgICAgICAvKiBpdCBtYXkgY29tYmluZSB3aXRoIHNvbWV0aGluZywgcHJlcGFyZSBmb3IgaXQgKi8KKyAgICAgICAgICAgICAgICAgICAgaWYobmNBcmcuYzI9PTApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ZXJJc1N1cHBsZW1lbnRhcnk9ZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGFydGVyPWFyZ3Muc3RhcnQtMTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ZXJJc1N1cHBsZW1lbnRhcnk9ZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGFydGVyPWFyZ3Muc3RhcnQtMjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBjb21iaW5lRndkSW5kZXg9Y29tYmluZUJhY2tJbmRleDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvKiBpdCB3aWxsIG5vdCBjb21iaW5lIHdpdGggYW55dGhpbmcgKi8KKyAgICAgICAgICAgICAgICAgICAgc3RhcnRlcj0tMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAKKyAgICAvLyBmaW5kIHRoZSBsYXN0IHRydWUgc3RhcnRlciBiZXR3ZWVuIHNyY1tzdGFydF0uLi4uc3JjW2N1cnJlbnRdIGdvaW5nIAorICAgIC8vIGJhY2t3YXJkcyBhbmQgcmV0dXJuIGl0cyBpbmRleAorICAgIHByaXZhdGUgc3RhdGljIGludCBmaW5kUHJldmlvdXNTdGFydGVyKGNoYXJbXXNyYywgaW50IHNyY1N0YXJ0LCBpbnQgY3VycmVudCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQvKnVuc2lnbmVkKi8gY2NPclFDTWFzaywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQvKnVuc2lnbmVkKi8gZGVjb21wUUNNYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBtaW5Ob01heWJlKSB7IAorICAgICAgIGxvbmcgbm9ybTMyOyAKKyAgICAgICBQcmV2QXJncyBhcmdzID0gbmV3IFByZXZBcmdzKCk7CisgICAgICAgYXJncy5zcmMgPSBzcmM7CisgICAgICAgYXJncy5zdGFydCA9IHNyY1N0YXJ0OworICAgICAgIGFyZ3MuY3VycmVudCA9IGN1cnJlbnQ7CisgICAgICAgCisgICAgICAgd2hpbGUoYXJncy5zdGFydDxhcmdzLmN1cnJlbnQpIHsgCisgICAgICAgICAgIG5vcm0zMj0gZ2V0UHJldk5vcm0zMihhcmdzLCBtaW5Ob01heWJlLCBjY09yUUNNYXNrfGRlY29tcFFDTWFzayk7IAorICAgICAgICAgICBpZihpc1RydWVTdGFydGVyKG5vcm0zMiwgY2NPclFDTWFzaywgZGVjb21wUUNNYXNrKSkgeyAKKyAgICAgICAgICAgICAgIGJyZWFrOyAKKyAgICAgICAgICAgfSAKKyAgICAgICB9IAorICAgICAgIHJldHVybiBhcmdzLmN1cnJlbnQ7IAorICAgIH0KKwkKKyAgICAvKiBmaW5kIHRoZSBmaXJzdCB0cnVlIHN0YXJ0ZXIgaW4gW3NyYy4ubGltaXRbIGFuZCByZXR1cm4gdGhlIAorICAgICAqIHBvaW50ZXIgdG8gaXQgCisgICAgICovCisJcHJpdmF0ZSBzdGF0aWMgaW50LyppbmRleCovCWZpbmROZXh0U3RhcnRlcihjaGFyW10gc3JjLGludCBzdGFydCxpbnQgbGltaXQsCisJICAgICAgICAgICAgICAgICAJCQkJICAgICAgICAgICAgaW50Lyp1bnNpZ25lZCovIHFjTWFzaywgCisJICAgICAgICAgICAgICAgICAJCQkJICAgICAgICAgICAgaW50Lyp1bnNpZ25lZCovIGRlY29tcFFDTWFzaywgCisJICAgICAgICAgICAgICAgICAJCQkJICAgICAgICAgICAgY2hhciBtaW5Ob01heWJlKSB7CisJICAgIGludCBwOworCSAgICBsb25nLyp1bnNpZ25lZCovIG5vcm0zMjsgCisgICAgICAgIGludCBjY09yUUNNYXNrOworCSAgICBjaGFyIGMsIGMyOworCQorCSAgICBjY09yUUNNYXNrPUNDX01BU0t8cWNNYXNrOworCSAgICAKKwkJRGVjb21wb3NlQXJncyBkZWNvbXBBcmdzID0gbmV3IERlY29tcG9zZUFyZ3MoKTsKKworCSAgICBmb3IoOzspIHsKKwkgICAgICAgIGlmKHN0YXJ0PT1saW1pdCkgeworCSAgICAgICAgICAgIGJyZWFrOyAvKiBlbmQgb2Ygc3RyaW5nICovCisJICAgICAgICB9CisJICAgICAgICBjPXNyY1tzdGFydF07CisJICAgICAgICBpZihjPG1pbk5vTWF5YmUpIHsKKwkgICAgICAgICAgICBicmVhazsgLyogY2F0Y2hlcyBOVUwgdGVybWluYXRlciwgdG9vICovCisJICAgICAgICB9CisJCisJICAgICAgICBub3JtMzI9Z2V0Tm9ybTMyKGMpOworCSAgICAgICAgaWYoKG5vcm0zMiZjY09yUUNNYXNrKT09MCkgeworCSAgICAgICAgICAgIGJyZWFrOyAvKiB0cnVlIHN0YXJ0ZXIgKi8KKwkgICAgICAgIH0KKwkKKwkgICAgICAgIGlmKGlzTm9ybTMyTGVhZFN1cnJvZ2F0ZShub3JtMzIpKSB7CisJICAgICAgICAgICAgLyogYyBpcyBhIGxlYWQgc3Vycm9nYXRlLCBnZXQgdGhlIHJlYWwgbm9ybTMyICovCisJICAgICAgICAgICAgaWYoKHN0YXJ0KzEpPT1saW1pdCB8fCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIVVURjE2LmlzVHJhaWxTdXJyb2dhdGUoYzI9KHNyY1tzdGFydCsxXSkpKXsKKyAgICAgICAgICAgICAgICAgICAgLyogdW5tYXRjaGVkIGZpcnN0IHN1cnJvZ2F0ZTogY291bnRzIGFzIGEgdHJ1ZSBzdGFydGVyICovICAgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgIGJyZWFrOyAKKwkgICAgICAgICAgICB9CisJICAgICAgICAgICAgbm9ybTMyPWdldE5vcm0zMkZyb21TdXJyb2dhdGVQYWlyKG5vcm0zMiwgYzIpOworCQorCSAgICAgICAgICAgIGlmKChub3JtMzImY2NPclFDTWFzayk9PTApIHsKKwkgICAgICAgICAgICAgICAgYnJlYWs7IC8qIHRydWUgc3RhcnRlciAqLworCSAgICAgICAgICAgIH0KKwkgICAgICAgIH0gZWxzZSB7CisJICAgICAgICAgICAgYzI9MDsKKwkgICAgICAgIH0KKwkKKwkgICAgICAgIC8qIChjLCBjMikgaXMgbm90IGEgdHJ1ZSBzdGFydGVyIGJ1dCBpdHMgZGVjb21wb3NpdGlvbiBtYXkgYmUgKi8KKwkgICAgICAgIGlmKChub3JtMzImZGVjb21wUUNNYXNrKSE9MCkgeworCSAgICAgICAgICAgIC8qIChjLCBjMikgZGVjb21wb3NlcywgZ2V0IGV2ZXJ5dGhpbmcgZnJvbSB0aGUgdmFyaWFibGUtbGVuZ3RoCisgICAgICAgICAgICAgICAgICogIGV4dHJhIGRhdGEgKi8KKwkgICAgICAgICAgICBwPWRlY29tcG9zZShub3JtMzIsIGRlY29tcFFDTWFzaywgZGVjb21wQXJncyk7CisJCisJICAgICAgICAgICAgLyogZ2V0IHRoZSBmaXJzdCBjaGFyYWN0ZXIncyBub3JtMzIgdG8gY2hlY2sgaWYgaXQgaXMgYSB0cnVlIAorICAgICAgICAgICAgICAgICAqIHN0YXJ0ZXIgKi8KKwkgICAgICAgICAgICBpZihkZWNvbXBBcmdzLmNjPT0wICYmIChnZXROb3JtMzIoZXh0cmFEYXRhLHAsIHFjTWFzaykmcWNNYXNrKT09MCkgeworCSAgICAgICAgICAgICAgICBicmVhazsgLyogdHJ1ZSBzdGFydGVyICovCisJICAgICAgICAgICAgfQorCSAgICAgICAgfQorCQorCSAgICAgICAgc3RhcnQrPSBjMj09MCA/IDEgOiAyOyAvKiBub3QgYSB0cnVlIHN0YXJ0ZXIsIGNvbnRpbnVlICovCisJICAgIH0KKwkKKwkgICAgcmV0dXJuIHN0YXJ0OworCX0KKwkKKyAgICAKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBjbGFzcyBDb21wb3NlUGFydEFyZ3N7CisJCWludCBwcmV2Q0M7CisgICAgICAgIGludCBsZW5ndGg7ICAgLyogbGVuZ3RoIG9mIGRlY29tcG9zZWQgcGFydCAqLworCX0KKwkgICAgCisgCisJcHJpdmF0ZSBzdGF0aWMgY2hhcltdIGNvbXBvc2VQYXJ0KENvbXBvc2VQYXJ0QXJncyBhcmdzLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHByZXZTdGFydGVyLCAKKwkJCQkgICAgICAgCSAgICAgICAgICAgICAgY2hhcltdIHNyYywgaW50IHN0YXJ0LCBpbnQgbGltaXQsCisJICAgICAgICAgICAgIAkJCSAgICAgICAgICBpbnQvKnVuc2lnbmVkKi8gcWNNYXNrKSB7CisJICAgIGludCByZWNvbXBvc2VMaW1pdDsKKyAgICAgICAgYm9vbGVhbiBjb21wYXQgPSgocWNNYXNrJlFDX05GS0MpIT0wKTsKKyAgICAgICAgCisJICAgIC8qIGRlY29tcG9zZSBbcHJldlN0YXJ0ZXIuLnNyY1sgKi8KKyAgICAgICAgaW50W10gb3V0VHJhaWxDQyA9IG5ldyBpbnRbMV07CisgICAgICAgIGNoYXJbXSBidWZmZXIgPSBuZXcgY2hhclsobGltaXQtcHJldlN0YXJ0ZXIpKk1BWF9CVUZGRVJfU0laRV07CisKKyAgICAgICAgZm9yKDs7KXsKKyAgICAgICAgICAgIGFyZ3MubGVuZ3RoPWRlY29tcG9zZShzcmMscHJldlN0YXJ0ZXIsKHN0YXJ0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLDAsYnVmZmVyLmxlbmd0aCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhdCxvdXRUcmFpbENDKTsKKyAgICAgICAgICAgIGlmKGFyZ3MubGVuZ3RoPD1idWZmZXIubGVuZ3RoKXsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH1lbHNleworICAgICAgICAgICAgICAgIGJ1ZmZlciA9IG5ldyBjaGFyW2FyZ3MubGVuZ3RoXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSAKKwkKKwkgICAgLyogcmVjb21wb3NlIHRoZSBkZWNvbXBvc2l0aW9uICovCisJICAgIHJlY29tcG9zZUxpbWl0PWFyZ3MubGVuZ3RoOworCSAgCQorCSAgICBpZihhcmdzLmxlbmd0aD49MikgeworCSAgICAgICAgUmVjb21wb3NlQXJncyByY0FyZ3MgPSBuZXcgUmVjb21wb3NlQXJncygpOworCSAgICAgICAgcmNBcmdzLnNvdXJjZQk9IGJ1ZmZlcjsKKwkgICAgICAgIHJjQXJncy5zdGFydCAgICA9IDA7CisJICAgICAgICByY0FyZ3MubGltaXQJPSByZWNvbXBvc2VMaW1pdDsgCisJICAgICAgICBhcmdzLnByZXZDQz1yZWNvbXBvc2UocmNBcmdzKTsKKwkgICAgICAgIHJlY29tcG9zZUxpbWl0ID0gcmNBcmdzLmxpbWl0OworCSAgICB9CisgICAgICAgIAorCSAgICAvKiByZXR1cm4gd2l0aCBhIHBvaW50ZXIgdG8gdGhlIHJlY29tcG9zaXRpb24gYW5kIGl0cyBsZW5ndGggKi8KKwkgICAgYXJncy5sZW5ndGg9cmVjb21wb3NlTGltaXQ7CisJICAgIHJldHVybiBidWZmZXI7CisJfQorICAgIAorCXByaXZhdGUgc3RhdGljIGJvb2xlYW4gY29tcG9zZUhhbmd1bChjaGFyIHByZXYsIGNoYXIgYywKKwkJCQkJCQkJICAgICAgICAgbG9uZy8qdW5zaWduZWQqLyBub3JtMzIsIAorCQkJCQkJCQkgICAgICAgICBjaGFyW10gc3JjLGludFtdIHNyY0luZGV4LCBpbnQgbGltaXQsCisJICAgICAgICAgICAgICAgCQkJCSAgICAgICAgIGJvb2xlYW4gY29tcGF0LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcltdIGRlc3QsaW50IGRlc3RJbmRleCkgeworCSAgICBpbnQgc3RhcnQ9c3JjSW5kZXhbMF07CisJICAgIGlmKGlzSmFtb1ZUTm9ybTMySmFtb1Yobm9ybTMyKSkgeworCSAgICAgICAgLyogYyBpcyBhIEphbW8gViwgY29tcG9zZSB3aXRoIHByZXZpb3VzIEphbW8gTCBhbmQgCisgICAgICAgICAgICAgKiBmb2xsb3dpbmcgSmFtbyBUICovCisJICAgICAgICBwcmV2PShjaGFyKShwcmV2LUpBTU9fTF9CQVNFKTsKKwkgICAgICAgIGlmKHByZXY8SkFNT19MX0NPVU5UKSB7CisJICAgICAgICAgICAgYz0oY2hhcikoSEFOR1VMX0JBU0UrKHByZXYqSkFNT19WX0NPVU5UKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjLUpBTU9fVl9CQVNFKSkqSkFNT19UX0NPVU5UKTsKKwkKKwkgICAgICAgICAgICAvKiBjaGVjayBpZiB0aGUgbmV4dCBjaGFyYWN0ZXIgaXMgYSBKYW1vIFQgKG5vcm1hbCBvciAKKyAgICAgICAgICAgICAgICAgKiBjb21wYXRpYmlsaXR5KSAqLworCSAgICAgICAgICAgIGlmKHN0YXJ0IT1saW1pdCkgeworCSAgICAgICAgICAgICAgICBjaGFyIG5leHQsIHQ7CisJCisJICAgICAgICAgICAgICAgIG5leHQ9c3JjW3N0YXJ0XTsKKwkgICAgICAgICAgICAgICAgaWYoKHQ9KGNoYXIpKG5leHQtSkFNT19UX0JBU0UpKTxKQU1PX1RfQ09VTlQpIHsKKwkgICAgICAgICAgICAgICAgICAgIC8qIG5vcm1hbCBKYW1vIFQgKi8KKwkgICAgICAgICAgICAgICAgICAgICsrc3RhcnQ7CisJICAgICAgICAgICAgICAgICAgICBjKz10OworCSAgICAgICAgICAgICAgICB9IGVsc2UgaWYoY29tcGF0KSB7CisJICAgICAgICAgICAgICAgICAgICAvKiBpZiBORktDLCB0aGVuIGNoZWNrIGZvciBjb21wYXRpYmlsaXR5IEphbW8gVCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAqIChCTVAgb25seSkgKi8KKwkgICAgICAgICAgICAgICAgICAgIG5vcm0zMj1nZXROb3JtMzIobmV4dCk7CisJICAgICAgICAgICAgICAgICAgICBpZihpc05vcm0zMlJlZ3VsYXIobm9ybTMyKSAmJiAoKG5vcm0zMiZRQ19ORktEKSE9MCkpIHsKKwkgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcCAvKmluZGV4IGludG8gZXh0cmEgZGF0YSBhcnJheSovOworCSAgICAgICAgICAgICAgICAgICAgICAgIERlY29tcG9zZUFyZ3MgZGNBcmdzID0gbmV3IERlY29tcG9zZUFyZ3MoKTsKKwkgICAgICAgICAgICAgICAgICAgICAgICBwPWRlY29tcG9zZShub3JtMzIsIFFDX05GS0QsIGRjQXJncyk7CisJICAgICAgICAgICAgICAgICAgICAgICAgaWYoZGNBcmdzLmxlbmd0aD09MSAmJiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHQ9KGNoYXIpKGV4dHJhRGF0YVtwXS1KQU1PX1RfQkFTRSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SkFNT19UX0NPVU5UKSB7CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNvbXBhdGliaWxpdHkgSmFtbyBUICovCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrc3RhcnQ7CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMrPXQ7CisJICAgICAgICAgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZGVzdFtkZXN0SW5kZXhdPWM7CisgICAgICAgICAgICAgICAgc3JjSW5kZXhbMF09c3RhcnQ7CisJICAgICAgICAgICAgcmV0dXJuIHRydWU7CisJICAgICAgICB9CisJICAgIH0gZWxzZSBpZihpc0hhbmd1bFdpdGhvdXRKYW1vVChwcmV2KSkgeworCSAgICAgICAgLyogYyBpcyBhIEphbW8gVCwgY29tcG9zZSB3aXRoIHByZXZpb3VzIEhhbmd1bCBMViB0aGF0IGRvZXMgbm90IAorICAgICAgICAgICAgICogY29udGFpbiBhIEphbW8gVCAqLworICAgICAgICAgICAgZGVzdFtkZXN0SW5kZXhdPShjaGFyKShwcmV2KyhjLUpBTU9fVF9CQVNFKSk7CisJICAgICAgICBzcmNJbmRleFswXT1zdGFydDsKKwkgICAgICAgIHJldHVybiB0cnVlOworCSAgICB9CisJICAgIHJldHVybiBmYWxzZTsKKwl9CisgICAgCisgICAgcHVibGljIHN0YXRpYyBpbnQgY29tcG9zZShjaGFyW10gc3JjLCBjaGFyW10gZGVzdCxib29sZWFuIGNvbXBhdCl7CisgICAgICAgIHJldHVybiBjb21wb3NlKHNyYywwLHNyYy5sZW5ndGgsZGVzdCwwLGRlc3QubGVuZ3RoLGNvbXBhdCk7CisgICAgfQorICAgIAorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgaW50IGNvbXBvc2UoY2hhcltdIHNyYywgaW50IHNyY0luZGV4LCBpbnQgc3JjTGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyW10gZGVzdCxpbnQgZGVzdEluZGV4LGludCBkZXN0TGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGNvbXBhdCkgeworICAgICAgICAKKyAgICAgICAgaW50IHByZXZTcmMsIHByZXZTdGFydGVyOworICAgICAgICBsb25nLyp1bnNpZ25lZCovIG5vcm0zMjsgCisgICAgICAgIGludCBjY09yUUNNYXNrLCBxY01hc2s7CisgICAgICAgIGludCAgcmVvcmRlclN0YXJ0SW5kZXgsIGxlbmd0aDsKKyAgICAgICAgY2hhciBjLCBjMiwgbWluTm9NYXliZTsKKyAgICAgICAgaW50Lyp1bnNpZ25lZCBieXRlKi8gY2MsIHByZXZDQzsKKyAgICAgICAgaW50W10gaW9JbmRleCA9IG5ldyBpbnRbMV07CisgICAgICAgIAorICAgICAgICBpZighY29tcGF0KSB7CisgICAgICAgICAgICBtaW5Ob01heWJlPShjaGFyKWluZGV4ZXNbSU5ERVhfTUlOX05GQ19OT19NQVlCRV07CisgICAgICAgICAgICBxY01hc2s9UUNfTkZDOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbWluTm9NYXliZT0oY2hhcilpbmRleGVzW0lOREVYX01JTl9ORktDX05PX01BWUJFXTsKKyAgICAgICAgICAgIHFjTWFzaz1RQ19ORktDOworICAgICAgICB9CisgICAgCisgICAgICAgIC8qCisgICAgICAgICAqIHByZXZTdGFydGVyIHBvaW50cyB0byB0aGUgbGFzdCBjaGFyYWN0ZXIgYmVmb3JlIHRoZSBjdXJyZW50IG9uZQorICAgICAgICAgKiB0aGF0IGlzIGEgInRydWUiIHN0YXJ0ZXIgd2l0aCBjYz09MCBhbmQgcXVpY2sgY2hlY2sgInllcyIuCisgICAgICAgICAqCisgICAgICAgICAqIHByZXZTdGFydGVyIHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIGxvb2tpbmcgZm9yIGEgdHJ1ZSBzdGFydGVyCisgICAgICAgICAqIHdoaWxlIGluY3JlbWVudGFsbHkgZGVjb21wb3NpbmcgW3ByZXZTdGFydGVyLi5wcmV2U3JjWworICAgICAgICAgKiBpbiBfY29tcG9zZVBhcnQoKS4gSGF2aW5nIGEgZ29vZCBwcmV2U3RhcnRlciBhbGxvd3MgdG8ganVzdCBkZWNvbXBvc2UKKyAgICAgICAgICogdGhlIGVudGlyZSBbcHJldlN0YXJ0ZXIuLnByZXZTcmNbLgorICAgICAgICAgKgorICAgICAgICAgKiBXaGVuIF9jb21wb3NlUGFydCgpIGJhY2tzIG91dCBmcm9tIHByZXZTcmMgYmFjayB0byBwcmV2U3RhcnRlciwKKyAgICAgICAgICogdGhlbiBpdCBhbHNvIGJhY2tzIG91dCBkZXN0SW5kZXggYnkgdGhlIHNhbWUgYW1vdW50LgorICAgICAgICAgKiBUaGVyZWZvcmUsIGF0IGFsbCB0aW1lcywgdGhlIChwcmV2U3JjLXByZXZTdGFydGVyKSBzb3VyY2UgdW5pdHMKKyAgICAgICAgICogbXVzdCBjb3JyZXNwb25kIDE6MSB0byBkZXN0aW5hdGlvbiB1bml0cyBjb3VudGVkIHdpdGggZGVzdEluZGV4LAorICAgICAgICAgKiBleGNlcHQgZm9yIHJlb3JkZXJpbmcuCisgICAgICAgICAqIFRoaXMgaXMgdHJ1ZSBmb3IgdGhlIHFjICJ5ZXMiIGNoYXJhY3RlcnMgY29waWVkIGluIHRoZSBmYXN0IGxvb3AsCisgICAgICAgICAqIGFuZCBmb3IgcHVyZSByZW9yZGVyaW5nLgorICAgICAgICAgKiBwcmV2U3RhcnRlciBtdXN0IGJlIHNldCBmb3J3YXJkIHRvIHNyYyB3aGVuIHRoaXMgaXMgbm90IHRydWU6CisgICAgICAgICAqIEluIF9jb21wb3NlUGFydCgpIGFuZCBhZnRlciBjb21wb3NpbmcgYSBIYW5ndWwgc3lsbGFibGUuCisgICAgICAgICAqCisgICAgICAgICAqIFRoaXMgbWVjaGFuaXNtIHJlbGllcyBvbiB0aGUgYXNzdW1wdGlvbiB0aGF0IHRoZSBkZWNvbXBvc2l0aW9uIG9mIGEgCisgICAgICAgICAqIHRydWUgc3RhcnRlciBhbHNvIGJlZ2lucyB3aXRoIGEgdHJ1ZSBzdGFydGVyLiBnZW5ub3JtL3N0b3JlLmMgY2hlY2tzIAorICAgICAgICAgKiBmb3IgdGhpcy4KKyAgICAgICAgICovCisgICAgICAgIHByZXZTdGFydGVyPXNyY0luZGV4OworICAgIAorICAgICAgICBjY09yUUNNYXNrPUNDX01BU0t8cWNNYXNrOworICAgICAgICAvKmRlc3RJbmRleD0qL3Jlb3JkZXJTdGFydEluZGV4PTA7LyogIyMjI1RPRE8jIyMjIGNoZWNrIHRoaXMgKiovCisgICAgICAgIHByZXZDQz0wOworICAgIAorICAgICAgICAvKiBhdm9pZCBjb21waWxlciB3YXJuaW5ncyAqLworICAgICAgICBub3JtMzI9MDsKKyAgICAgICAgYz0wOworICAgIAorICAgICAgICBmb3IoOzspIHsKKyAgICAgICAgICAgIC8qIGNvdW50IGNvZGUgdW5pdHMgYmVsb3cgdGhlIG1pbmltdW0gb3Igd2l0aCBpcnJlbGV2YW50IGRhdGEgZm9yIAorICAgICAgICAgICAgICogdGhlIHF1aWNrIGNoZWNrICovCisgICAgICAgICAgICBwcmV2U3JjPXNyY0luZGV4OworCisgICAgICAgICAgICB3aGlsZShzcmNJbmRleCE9c3JjTGltaXQgJiYgKChjPXNyY1tzcmNJbmRleF0pPG1pbk5vTWF5YmUgfHwgCisgICAgICAgICAgICAgICAgICAgICAoKG5vcm0zMj1nZXROb3JtMzIoYykpJmNjT3JRQ01hc2spPT0wKSkgeworICAgICAgICAgICAgICAgIHByZXZDQz0wOworICAgICAgICAgICAgICAgICsrc3JjSW5kZXg7CisgICAgICAgICAgICB9CisKKyAgICAKKyAgICAgICAgICAgIC8qIGNvcHkgdGhlc2UgY29kZSB1bml0cyBhbGwgYXQgb25jZSAqLworICAgICAgICAgICAgaWYoc3JjSW5kZXghPXByZXZTcmMpIHsKKyAgICAgICAgICAgICAgICBsZW5ndGg9KGludCkoc3JjSW5kZXgtcHJldlNyYyk7CisgICAgICAgICAgICAgICAgaWYoKGRlc3RJbmRleCtsZW5ndGgpPD1kZXN0TGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShzcmMscHJldlNyYyxkZXN0LGRlc3RJbmRleCxsZW5ndGgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZXN0SW5kZXgrPWxlbmd0aDsKKyAgICAgICAgICAgICAgICByZW9yZGVyU3RhcnRJbmRleD1kZXN0SW5kZXg7CisgICAgCisgICAgICAgICAgICAgICAgLyogc2V0IHByZXZTdGFydGVyIHRvIHRoZSBsYXN0IGNoYXJhY3RlciBpbiB0aGUgcXVpY2sgY2hlY2sgCisgICAgICAgICAgICAgICAgICogbG9vcCAqLworICAgICAgICAgICAgICAgIHByZXZTdGFydGVyPXNyY0luZGV4LTE7CisgICAgICAgICAgICAgICAgaWYoVVRGMTYuaXNUcmFpbFN1cnJvZ2F0ZShzcmNbcHJldlN0YXJ0ZXJdKSAmJiAKKyAgICAgICAgICAgICAgICAgICAgcHJldlNyYzxwcmV2U3RhcnRlciAmJiAKKyAgICAgICAgICAgICAgICAgICAgVVRGMTYuaXNMZWFkU3Vycm9nYXRlKHNyY1socHJldlN0YXJ0ZXItMSldKSkgeworICAgICAgICAgICAgICAgICAgICAtLXByZXZTdGFydGVyOworICAgICAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgICAgICBwcmV2U3JjPXNyY0luZGV4OworICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgLyogZW5kIG9mIHNvdXJjZSByZWFjaGVkPyAqLworICAgICAgICAgICAgaWYoc3JjSW5kZXg9PXNyY0xpbWl0KSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgCisgICAgICAgICAgICAvKiBjIGFscmVhZHkgY29udGFpbnMgKnNyYyBhbmQgbm9ybTMyIGlzIHNldCBmb3IgaXQsIGluY3JlbWVudCBzcmMqLworICAgICAgICAgICAgKytzcmNJbmRleDsKKyAgICAKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBzb3VyY2UgYnVmZmVyIHBvaW50ZXJzOgorICAgICAgICAgICAgICoKKyAgICAgICAgICAgICAqICBhbGwgZG9uZSAgICAgIHF1aWNrIGNoZWNrICAgY3VycmVudCBjaGFyICBub3QgeWV0CisgICAgICAgICAgICAgKiAgICAgICAgICAgICAgICAieWVzIiBidXQgICAgIChjLCBjMikgICAgICAgcHJvY2Vzc2VkCisgICAgICAgICAgICAgKiAgICAgICAgICAgICAgICBtYXkgY29tYmluZQorICAgICAgICAgICAgICogICAgICAgICAgICAgICAgZm9yd2FyZAorICAgICAgICAgICAgICogWy0tLS0tLS0tLS0tLS1bLS0tLS0tLS0tLS0tLVstLS0tLS0tLS0tLS0tWy0tLS0tLS0tLS0tLS1bCisgICAgICAgICAgICAgKiB8ICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAqIHN0YXJ0ICAgICAgICAgcHJldlN0YXJ0ZXIgICBwcmV2U3JjICAgICAgIHNyYyAgICAgICAgICAgbGltaXQKKyAgICAgICAgICAgICAqCisgICAgICAgICAgICAgKgorICAgICAgICAgICAgICogZGVzdGluYXRpb24gYnVmZmVyIHBvaW50ZXJzIGFuZCBpbmRleGVzOgorICAgICAgICAgICAgICoKKyAgICAgICAgICAgICAqICBhbGwgZG9uZSAgICAgIG1pZ2h0IHRha2UgICAgbm90IGZpbGxlZCB5ZXQKKyAgICAgICAgICAgICAqICAgICAgICAgICAgICAgIGNoYXJhY3RlcnMgZm9yCisgICAgICAgICAgICAgKiAgICAgICAgICAgICAgICByZW9yZGVyaW5nCisgICAgICAgICAgICAgKiBbLS0tLS0tLS0tLS0tLVstLS0tLS0tLS0tLS0tWy0tLS0tLS0tLS0tLS1bCisgICAgICAgICAgICAgKiB8ICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAgICB8CisgICAgICAgICAgICAgKiBkZXN0ICAgICAgcmVvcmRlclN0YXJ0SW5kZXggZGVzdEluZGV4ICAgICBkZXN0Q2FwYWNpdHkKKyAgICAgICAgICAgICAqLworICAgIAorICAgICAgICAgICAgLyogY2hlY2sgb25lIGFib3ZlLW1pbmltdW0sIHJlbGV2YW50IGNvZGUgdW5pdCAqLworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIG5vcm0zMiBpcyBmb3IgYz0qKHNyYy0xKSwgYW5kIHRoZSBxdWljayBjaGVjayBmbGFnIGlzICJubyIgb3IgCisgICAgICAgICAgICAgKiAibWF5YmUiLCBhbmQvb3IgY2MhPTAKKyAgICAgICAgICAgICAqIGNoZWNrIGZvciBKYW1vIFYvVCwgdGhlbiBmb3Igc3Vycm9nYXRlcyBhbmQgcmVndWxhciBjaGFyYWN0ZXJzCisgICAgICAgICAgICAgKiBjIGlzIG5vdCBhIEhhbmd1bCBzeWxsYWJsZSBvciBKYW1vIEwgYmVjYXVzZQorICAgICAgICAgICAgICogdGhleSBhcmUgbm90IG1hcmtlZCB3aXRoIG5vL21heWJlIGZvciBORkMgJiBORktDKGFuZCB0aGVpciBjYz09MCkKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYoaXNOb3JtMzJIYW5ndWxPckphbW8obm9ybTMyKSkgeworICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogYyBpcyBhIEphbW8gVi9UOgorICAgICAgICAgICAgICAgICAqIHRyeSB0byBjb21wb3NlIHdpdGggdGhlIHByZXZpb3VzIGNoYXJhY3RlciwgSmFtbyBWIGFsc28gd2l0aCAKKyAgICAgICAgICAgICAgICAgKiBhIGZvbGxvd2luZyBKYW1vIFQsIGFuZCBzZXQgdmFsdWVzIGhlcmUgcmlnaHQgbm93IGluIGNhc2Ugd2UgCisgICAgICAgICAgICAgICAgICoganVzdCBjb250aW51ZSB3aXRoIHRoZSBtYWluIGxvb3AKKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBwcmV2Q0M9Y2M9MDsKKyAgICAgICAgICAgICAgICByZW9yZGVyU3RhcnRJbmRleD1kZXN0SW5kZXg7CisgICAgICAgICAgICAgICAgaW9JbmRleFswXT1zcmNJbmRleDsKKyAgICAgICAgICAgICAgICBpZiggLyogIyMjIFRPRE86IGRvIHdlIG5lZWQgdG8gZG8gdGhpcz8gIWlnbm9yZUhhbmd1bCAmJiAjIyMgKi8KKyAgICAgICAgICAgICAgICAgICAgZGVzdEluZGV4PjAgJiYKKyAgICAgICAgICAgICAgICAgICAgY29tcG9zZUhhbmd1bChzcmNbKHByZXZTcmMtMSldLCBjLCBub3JtMzIsc3JjLCBpb0luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY0xpbWl0LCBjb21wYXQsIGRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdEluZGV4PD1kZXN0TGltaXQgPyBkZXN0SW5kZXgtMTogMCkKKyAgICAgICAgICAgICAgICApIHsKKyAgICAgICAgICAgICAgICAgICAgc3JjSW5kZXg9aW9JbmRleFswXTsKKyAgICAgICAgICAgICAgICAgICAgcHJldlN0YXJ0ZXI9c3JjSW5kZXg7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBzcmNJbmRleCA9IGlvSW5kZXhbMF07CisgICAgCisgICAgICAgICAgICAgICAgLyogdGhlIEphbW8gVi9UIGRpZCBub3QgY29tcG9zZSBpbnRvIGEgSGFuZ3VsIHN5bGxhYmxlLCBqdXN0IAorICAgICAgICAgICAgICAgICAqIGFwcGVuZCB0byBkZXN0ICovCisgICAgICAgICAgICAgICAgYzI9MDsKKyAgICAgICAgICAgICAgICBsZW5ndGg9MTsKKyAgICAgICAgICAgICAgICBwcmV2U3RhcnRlcj1wcmV2U3JjOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZihpc05vcm0zMlJlZ3VsYXIobm9ybTMyKSkgeworICAgICAgICAgICAgICAgICAgICBjMj0wOworICAgICAgICAgICAgICAgICAgICBsZW5ndGg9MTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvKiBjIGlzIGEgbGVhZCBzdXJyb2dhdGUsIGdldCB0aGUgcmVhbCBub3JtMzIgKi8KKyAgICAgICAgICAgICAgICAgICAgaWYoc3JjSW5kZXghPXNyY0xpbWl0ICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVRGMTYuaXNUcmFpbFN1cnJvZ2F0ZShjMj1zcmNbc3JjSW5kZXhdKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgKytzcmNJbmRleDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aD0yOworICAgICAgICAgICAgICAgICAgICAgICAgbm9ybTMyPWdldE5vcm0zMkZyb21TdXJyb2dhdGVQYWlyKG5vcm0zMiwgYzIpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgLyogYyBpcyBhbiB1bnBhaXJlZCBsZWFkIHN1cnJvZ2F0ZSwgbm90aGluZyB0byBkbyAqLworICAgICAgICAgICAgICAgICAgICAgICAgYzI9MDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aD0xOworICAgICAgICAgICAgICAgICAgICAgICAgbm9ybTMyPTA7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgQ29tcG9zZVBhcnRBcmdzIGFyZ3MgPW5ldyBDb21wb3NlUGFydEFyZ3MoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvKiB3ZSBhcmUgbG9va2luZyBhdCB0aGUgY2hhcmFjdGVyIChjLCBjMikgYXQgW3ByZXZTcmMuLnNyY1sgKi8KKyAgICAgICAgICAgICAgICBpZigobm9ybTMyJnFjTWFzayk9PTApIHsKKyAgICAgICAgICAgICAgICAgICAgY2M9KGludCkoKFVOU0lHTkVEX0JZVEVfTUFTSykmKG5vcm0zMj4+Q0NfU0hJRlQpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBjaGFyW10gcDsKKyAgICAKKyAgICAgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgICAgICogZmluZCBhcHByb3ByaWF0ZSBib3VuZGFyaWVzIGFyb3VuZCB0aGlzIGNoYXJhY3RlciwKKyAgICAgICAgICAgICAgICAgICAgICogZGVjb21wb3NlIHRoZSBzb3VyY2UgdGV4dCBmcm9tIGJldHdlZW4gdGhlIGJvdW5kYXJpZXMsCisgICAgICAgICAgICAgICAgICAgICAqIGFuZCByZWNvbXBvc2UgaXQKKyAgICAgICAgICAgICAgICAgICAgICoKKyAgICAgICAgICAgICAgICAgICAgICogdGhpcyBwdXRzIHRoZSBpbnRlcm1lZGlhdGUgdGV4dCBpbnRvIHRoZSBzaWRlIGJ1ZmZlciBiZWNhdXNlCisgICAgICAgICAgICAgICAgICAgICAqIGl0IG1pZ2h0IGJlIGxvbmdlciB0aGFuIHRoZSByZWNvbXBvc2l0aW9uIGVuZCByZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAqIG9yIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIgbWF5IGJlIHRvbyBzaG9ydCBvciBtaXNzaW5nCisgICAgICAgICAgICAgICAgICAgICAqCisgICAgICAgICAgICAgICAgICAgICAqIG5vdGUgdGhhdCBkZXN0SW5kZXggbWF5IGJlIGFkanVzdGVkIGJhY2t3YXJkcyB0byBhY2NvdW50CisgICAgICAgICAgICAgICAgICAgICAqIGZvciBzb3VyY2UgdGV4dCB0aGF0IHBhc3NlZCB0aGUgcXVpY2sgY2hlY2sgYnV0IG5lZWRlZCB0bworICAgICAgICAgICAgICAgICAgICAgKiB0YWtlIHBhcnQgaW4gdGhlIHJlY29tcG9zaXRpb24KKyAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgIGludCBkZWNvbXBRQ01hc2s9KHFjTWFzazw8MikmMHhmOyAvKiBkZWNvbXBvc2l0aW9uIHF1aWNrIGNoZWNrIG1hc2sgKi8KKyAgICAgICAgICAgICAgICAgICAgLyoKKwkJICAgICAgICAgICAgICogZmluZCB0aGUgbGFzdCB0cnVlIHN0YXJ0ZXIgaW4gW3ByZXZTdGFydGVyLi5zcmNbCisJCSAgICAgICAgICAgICAqIGl0IGlzIGVpdGhlciB0aGUgZGVjb21wb3NpdGlvbiBvZiB0aGUgY3VycmVudCBjaGFyYWN0ZXIgKGF0IHByZXZTcmMpLAorCQkgICAgICAgICAgICAgKiBvciBwcmV2U3RhcnRlcgorCQkgICAgICAgICAgICAgKi8KKwkJICAgICAgICAgICAgaWYoaXNUcnVlU3RhcnRlcihub3JtMzIsIENDX01BU0t8cWNNYXNrLCBkZWNvbXBRQ01hc2spKSB7CisJCSAgICAgICAgICAgICAgICBwcmV2U3RhcnRlcj1wcmV2U3JjOworCQkgICAgICAgICAgICB9IGVsc2UgeworCQkgICAgICAgICAgICAgICAgLyogYWRqdXN0IGRlc3RJbmRleDogYmFjayBvdXQgd2hhdCBoYWQgYmVlbiBjb3BpZWQgd2l0aCBxYyAieWVzIiAqLworCQkgICAgICAgICAgICAgICAgZGVzdEluZGV4LT1wcmV2U3JjLXByZXZTdGFydGVyOworCQkgICAgICAgICAgICB9CisJCSAgICAgICAgCisJCSAgICAgICAgICAgIC8qIGZpbmQgdGhlIG5leHQgdHJ1ZSBzdGFydGVyIGluIFtzcmMuLmxpbWl0WyAqLworCQkgICAgICAgICAgICBzcmNJbmRleD1maW5kTmV4dFN0YXJ0ZXIoc3JjLCBzcmNJbmRleCxzcmNMaW1pdCwgcWNNYXNrLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb21wUUNNYXNrLCBtaW5Ob01heWJlKTsKKyAgICAgICAgICAgICAgICAgICAgLy9hcmdzLnByZXZTdGFydGVyID0gcHJldlN0YXJ0ZXI7CisgICAgICAgICAgICAgICAgICAgIGFyZ3MucHJldkNDCT0gcHJldkNDOyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC8vYXJncy5kZXN0SW5kZXggPSBkZXN0SW5kZXg7CisgICAgICAgICAgICAgICAgICAgIGFyZ3MubGVuZ3RoID0gbGVuZ3RoOworICAgICAgICAgICAgICAgICAgICBwPWNvbXBvc2VQYXJ0KGFyZ3MscHJldlN0YXJ0ZXIsc3JjLHNyY0luZGV4LHNyY0xpbWl0LHFjTWFzayk7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYocD09bnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLyogYW4gZXJyb3Igb2NjdXJyZWQgKG91dCBvZiBtZW1vcnkpICovCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgcHJldkNDICAgICAgPSBhcmdzLnByZXZDQzsKKyAgICAgICAgICAgICAgICAgICAgbGVuZ3RoICAgICAgPSBhcmdzLmxlbmd0aDsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC8qIGFwcGVuZCB0aGUgcmVjb21wb3NlZCBidWZmZXIgY29udGVudHMgdG8gdGhlIGRlc3RpbmF0aW9uIAorICAgICAgICAgICAgICAgICAgICAgKiBidWZmZXIgKi8KKyAgICAgICAgICAgICAgICAgICAgaWYoKGRlc3RJbmRleCthcmdzLmxlbmd0aCk8PWRlc3RMaW1pdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaW50IGk9MDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlKGk8YXJncy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0W2Rlc3RJbmRleCsrXT1wW2krK107CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1sZW5ndGg7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiBidWZmZXIgb3ZlcmZsb3cgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIGtlZXAgaW5jcmVtZW50aW5nIHRoZSBkZXN0SW5kZXggZm9yIHByZWZsaWdodGluZyAqLworICAgICAgICAgICAgICAgICAgICAgICAgZGVzdEluZGV4Kz1sZW5ndGg7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgICAgICAgICAgcHJldlN0YXJ0ZXI9c3JjSW5kZXg7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgIC8qIGFwcGVuZCB0aGUgc2luZ2xlIGNvZGUgcG9pbnQgKGMsIGMyKSB0byB0aGUgZGVzdGluYXRpb24gYnVmZmVyICovCisgICAgICAgICAgICBpZigoZGVzdEluZGV4K2xlbmd0aCk8PWRlc3RMaW1pdCkgeworICAgICAgICAgICAgICAgIGlmKGNjIT0wICYmIGNjPHByZXZDQykgeworICAgICAgICAgICAgICAgICAgICAvKiAoYywgYzIpIGlzIG91dCBvZiBvcmRlciB3aXRoIHJlc3BlY3QgdG8gdGhlIHByZWNlZGluZyAKKyAgICAgICAgICAgICAgICAgICAgICogdGV4dCAqLworICAgICAgICAgICAgICAgICAgICBpbnQgcmVvcmRlclNwbGl0PSBkZXN0SW5kZXg7CisgICAgICAgICAgICAgICAgICAgIGRlc3RJbmRleCs9bGVuZ3RoOworICAgICAgICAgICAgICAgICAgICBwcmV2Q0M9aW5zZXJ0T3JkZXJlZChkZXN0LHJlb3JkZXJTdGFydEluZGV4LCByZW9yZGVyU3BsaXQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0SW5kZXgsIGMsIGMyLCBjYyk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLyoganVzdCBhcHBlbmQgKGMsIGMyKSAqLworICAgICAgICAgICAgICAgICAgICBkZXN0W2Rlc3RJbmRleCsrXT1jOworICAgICAgICAgICAgICAgICAgICBpZihjMiE9MCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFtkZXN0SW5kZXgrK109YzI7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcHJldkNDPWNjOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLyogYnVmZmVyIG92ZXJmbG93ICovCisgICAgICAgICAgICAgICAgLyoga2VlcCBpbmNyZW1lbnRpbmcgdGhlIGRlc3RJbmRleCBmb3IgcHJlZmxpZ2h0aW5nICovCisgICAgICAgICAgICAgICAgZGVzdEluZGV4Kz1sZW5ndGg7CisgICAgICAgICAgICAgICAgcHJldkNDPWNjOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGRlc3RJbmRleDsKKyAgICB9CisJLyogbWFrZSBGQ0QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCQorCXByaXZhdGUgc3RhdGljIGludC8qaW5kZXgqLyBmaW5kU2FmZUZDRChjaGFyW10gc3JjLCBpbnQgc3RhcnQsIGludCBsaW1pdCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgZmNkMTYpIHsKKwkgICAgY2hhciBjLCBjMjsKKwkKKwkgICAgLyoKKwkgICAgICogZmluZCB0aGUgZmlyc3QgcG9zaXRpb24gaW4gW3NyYy4ubGltaXRbIGFmdGVyIHNvbWUgY2M9PTAgYWNjb3JkaW5nIAorICAgICAgICAgKiB0byBGQ0QgZGF0YQorCSAgICAgKgorCSAgICAgKiBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsb29wLCB3ZSBoYXZlIGZjZDE2IGZyb20gYmVmb3JlIHNyYworCSAgICAgKgorCSAgICAgKiBzdG9wIGF0IHBvc2l0aW9uczoKKwkgICAgICogLSBhZnRlciB0cmFpbCBjYz09MAorCSAgICAgKiAtIGF0IHRoZSBlbmQgb2YgdGhlIHNvdXJjZQorCSAgICAgKiAtIGJlZm9yZSBsZWFkIGNjPT0wCisJICAgICAqLworCSAgICBmb3IoOzspIHsKKwkgICAgICAgIC8qIHN0b3AgaWYgdHJhaWwgY2M9PTAgZm9yIHRoZSBwcmV2aW91cyBjaGFyYWN0ZXIgKi8KKwkgICAgICAgIGlmKChmY2QxNiYweGZmKT09MCkgeworCSAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgfQorCQorCSAgICAgICAgLyogZ2V0IGM9KnNyYyAtIHN0b3AgYXQgZW5kIG9mIHN0cmluZyAqLworCSAgICAgICAgaWYoc3RhcnQ9PWxpbWl0KSB7CisJICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICB9CisJICAgICAgICBjPXNyY1tzdGFydF07CisJCisJICAgICAgICAvKiBzdG9wIGlmIGxlYWQgY2M9PTAgZm9yIHRoaXMgY2hhcmFjdGVyICovCisJICAgICAgICBpZihjPE1JTl9XSVRIX0xFQURfQ0MgfHwgKGZjZDE2PWdldEZDRDE2KGMpKT09MCkgeworCSAgICAgICAgICAgIGJyZWFrOyAvKiBjYXRjaGVzIHRlcm1pbmF0aW5nIE5VTCwgdG9vICovCisJICAgICAgICB9CisJCisJICAgICAgICBpZighVVRGMTYuaXNMZWFkU3Vycm9nYXRlKGMpKSB7CisJICAgICAgICAgICAgaWYoZmNkMTY8PTB4ZmYpIHsKKwkgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgfQorCSAgICAgICAgICAgICsrc3RhcnQ7CisJICAgICAgICB9IGVsc2UgaWYoc3RhcnQrMSE9bGltaXQgJiYgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVVRGMTYuaXNUcmFpbFN1cnJvZ2F0ZShjMj1zcmNbc3RhcnQrMV0pKSkgeworCSAgICAgICAgICAgIC8qIGMgaXMgYSBsZWFkIHN1cnJvZ2F0ZSwgZ2V0IHRoZSByZWFsIGZjZDE2ICovCisJICAgICAgICAgICAgZmNkMTY9Z2V0RkNEMTZGcm9tU3Vycm9nYXRlUGFpcihmY2QxNiwgYzIpOworCSAgICAgICAgICAgIGlmKGZjZDE2PD0weGZmKSB7CisJICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgIH0KKwkgICAgICAgICAgICBzdGFydCs9MjsKKwkgICAgICAgIH0gZWxzZSB7CisJICAgICAgICAgICAgLyogYyBpcyBhbiB1bnBhaXJlZCBmaXJzdCBzdXJyb2dhdGUsIGxlYWQgY2M9PTAgKi8KKwkgICAgICAgICAgICBicmVhazsKKwkgICAgICAgIH0KKwkgICAgfQorCQorCSAgICByZXR1cm4gc3RhcnQ7CisJfQorCQorCXByaXZhdGUgc3RhdGljIGludC8qdW5zaWduZWQgYnl0ZSovIGRlY29tcG9zZUZDRChjaGFyW10gc3JjLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0LGludCBkZWNvbXBMaW1pdCwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcltdIGRlc3QsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRbXSBkZXN0SW5kZXhBcnIpIHsKKwkgICAgY2hhcltdIHA9bnVsbDsKKyAgICAgICAgaW50IHBTdGFydD0tMTsKKyAgICAgICAgCisJICAgIGxvbmcgLyp1bnNpZ25lZCBpbnQqLyBub3JtMzI7CisJICAgIGludCByZW9yZGVyU3RhcnRJbmRleDsKKwkgICAgY2hhciBjLCBjMjsKKyAgICAgICAgaW50Lyp1bnNpZ25lZCBieXRlKi8gcHJldkNDOworICAgICAgICBEZWNvbXBvc2VBcmdzIGFyZ3MgPSBuZXcgRGVjb21wb3NlQXJncygpOworICAgICAgICBpbnQgZGVzdEluZGV4ID0gZGVzdEluZGV4QXJyWzBdOworCSAgICAvKgorCSAgICAgKiBjYW5vbmljYWxseSBkZWNvbXBvc2UgW3NyYy4uZGVjb21wTGltaXRbCisJICAgICAqCisJICAgICAqIGFsbCBjaGFyYWN0ZXJzIGluIHRoaXMgcmFuZ2UgaGF2ZSBzb21lIG5vbi16ZXJvIGNjLAorCSAgICAgKiBkaXJlY3RseSBvciBpbiBkZWNvbXBvc2l0aW9uLAorCSAgICAgKiBzbyB0aGF0IHdlIGRvIG5vdCBuZWVkIHRvIGNoZWNrIGluIHRoZSBmb2xsb3dpbmcgZm9yIHF1aWNrLWNoZWNrIAorICAgICAgICAgKiBsaW1pdHMgZXRjLgorCSAgICAgKgorCSAgICAgKiB0aGVyZSBfYXJlXyBfbm9fIEhhbmd1bCBzeWxsYWJsZXMgb3IgSmFtb3MgaW4gaGVyZSBiZWNhdXNlIHRoZXkgYXJlIAorICAgICAgICAgKiBGQ0Qtc2FmZSAoY2M9PTApIQorCSAgICAgKgorCSAgICAgKiB3ZSBhbHNvIGRvIG5vdCBuZWVkIHRvIGNoZWNrIGZvciBjPT0wIGJlY2F1c2Ugd2UgaGF2ZSBhbiBlc3RhYmxpc2hlZCAKKyAgICAgICAgICogZGVjb21wTGltaXQKKwkgICAgICovCisJICAgIHJlb3JkZXJTdGFydEluZGV4PWRlc3RJbmRleDsKKwkgICAgcHJldkNDPTA7CisKKwkgICAgd2hpbGUoc3RhcnQ8ZGVjb21wTGltaXQpIHsKKwkgICAgICAgIGM9c3JjW3N0YXJ0KytdOworCSAgICAgICAgbm9ybTMyPWdldE5vcm0zMihjKTsKKwkgICAgICAgIGlmKGlzTm9ybTMyUmVndWxhcihub3JtMzIpKSB7CisJICAgICAgICAgICAgYzI9MDsKKwkgICAgICAgICAgICBhcmdzLmxlbmd0aD0xOworCSAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAgICAvKgorCSAgICAgICAgICAgICAqIHJlbWluZGVyOiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIFtzcmMuLmRlY29tcExpbWl0WworCSAgICAgICAgICAgICAqIG5vdCBjb250YWluaW5nIGFueSBIYW5ndWwvSmFtbyBjaGFyYWN0ZXJzLAorCSAgICAgICAgICAgICAqIHRoZXJlZm9yZSB0aGUgb25seSBzcGVjaWFscyBhcmUgbGVhZCBzdXJyb2dhdGVzCisJICAgICAgICAgICAgICovCisJICAgICAgICAgICAgLyogYyBpcyBhIGxlYWQgc3Vycm9nYXRlLCBnZXQgdGhlIHJlYWwgbm9ybTMyICovCisJICAgICAgICAgICAgaWYoc3RhcnQhPWRlY29tcExpbWl0ICYmIFVURjE2LmlzVHJhaWxTdXJyb2dhdGUoYzI9c3JjW3N0YXJ0XSkpeworCSAgICAgICAgICAgICAgICArK3N0YXJ0OworCSAgICAgICAgICAgICAgICBhcmdzLmxlbmd0aD0yOworCSAgICAgICAgICAgICAgICBub3JtMzI9Z2V0Tm9ybTMyRnJvbVN1cnJvZ2F0ZVBhaXIobm9ybTMyLCBjMik7CisJICAgICAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAgICAgICAgYzI9MDsKKwkgICAgICAgICAgICAgICAgYXJncy5sZW5ndGg9MTsKKwkgICAgICAgICAgICAgICAgbm9ybTMyPTA7CisJICAgICAgICAgICAgfQorCSAgICAgICAgfQorCQorCSAgICAgICAgLyogZ2V0IHRoZSBkZWNvbXBvc2l0aW9uIGFuZCB0aGUgbGVhZCBhbmQgdHJhaWwgY2MncyAqLworCSAgICAgICAgaWYoKG5vcm0zMiZRQ19ORkQpPT0wKSB7CisJICAgICAgICAgICAgLyogYyBkb2VzIG5vdCBkZWNvbXBvc2UgKi8KKwkgICAgICAgICAgICBhcmdzLmNjPWFyZ3MudHJhaWxDQz0oaW50KSgoVU5TSUdORURfQllURV9NQVNLKSYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub3JtMzI+PkNDX1NISUZUKSk7CisJICAgICAgICAgICAgcD1udWxsOworCSAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAgICAvKiBjIGRlY29tcG9zZXMsIGdldCBldmVyeXRoaW5nIGZyb20gdGhlIHZhcmlhYmxlLWxlbmd0aCBleHRyYSAKKyAgICAgICAgICAgICAgICAgKiBkYXRhICovCisJICAgICAgICAgICAgcFN0YXJ0PWRlY29tcG9zZShub3JtMzIsIGFyZ3MpOworCSAgICAgICAgICAgIHA9ZXh0cmFEYXRhOworICAgICAgICAgICAgICAgIGlmKGFyZ3MubGVuZ3RoPT0xKSB7CisJICAgICAgICAgICAgICAgIC8qIGZhc3RwYXRoIGEgc2luZ2xlIGNvZGUgdW5pdCBmcm9tIGRlY29tcG9zaXRpb24gKi8KKwkgICAgICAgICAgICAgICAgYz1wW3BTdGFydF07CisJICAgICAgICAgICAgICAgIGMyPTA7CisJICAgICAgICAgICAgICAgIHA9bnVsbDsKKwkgICAgICAgICAgICB9CisJICAgICAgICB9CisJCisJICAgICAgICAvKiBhcHBlbmQgdGhlIGRlY29tcG9zaXRpb24gdG8gdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciwgYXNzdW1lIAorICAgICAgICAgICAgICogbGVuZ3RoPjAgKi8KKwkgICAgICAgIGlmKChkZXN0SW5kZXgrYXJncy5sZW5ndGgpPD1kZXN0Lmxlbmd0aCkgeworCSAgICAgICAgICAgIGludCByZW9yZGVyU3BsaXQ9ZGVzdEluZGV4OworCSAgICAgICAgICAgIGlmKHA9PW51bGwpIHsKKwkgICAgICAgICAgICAgICAgLyogZmFzdHBhdGg6IHNpbmdsZSBjb2RlIHBvaW50ICovCisJICAgICAgICAgICAgICAgIGlmKGFyZ3MuY2MhPTAgJiYgYXJncy5jYzxwcmV2Q0MpIHsKKwkgICAgICAgICAgICAgICAgICAgIC8qIChjLCBjMikgaXMgb3V0IG9mIG9yZGVyIHdpdGggcmVzcGVjdCB0byB0aGUgcHJlY2VkaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgKiAgdGV4dCAqLworCSAgICAgICAgICAgICAgICAgICAgZGVzdEluZGV4Kz1hcmdzLmxlbmd0aDsKKwkgICAgICAgICAgICAgICAgICAgIGFyZ3MudHJhaWxDQz1pbnNlcnRPcmRlcmVkKGRlc3QscmVvcmRlclN0YXJ0SW5kZXgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVvcmRlclNwbGl0LCBkZXN0SW5kZXgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYywgYzIsIGFyZ3MuY2MpOworCSAgICAgICAgICAgICAgICB9IGVsc2UgeworCSAgICAgICAgICAgICAgICAgICAgLyoganVzdCBhcHBlbmQgKGMsIGMyKSAqLworCSAgICAgICAgICAgICAgICAgICAgZGVzdFtkZXN0SW5kZXgrK109YzsKKwkgICAgICAgICAgICAgICAgICAgIGlmKGMyIT0wKSB7CisJICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFtkZXN0SW5kZXgrK109YzI7CisJICAgICAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICB9IGVsc2UgeworCSAgICAgICAgICAgICAgICAvKiBnZW5lcmFsOiBtdWx0aXBsZSBjb2RlIHBvaW50cyAob3JkZXJlZCBieSB0aGVtc2VsdmVzKSAKKyAgICAgICAgICAgICAgICAgICAgICogZnJvbSBkZWNvbXBvc2l0aW9uICovCisJICAgICAgICAgICAgICAgIGlmKGFyZ3MuY2MhPTAgJiYgYXJncy5jYzxwcmV2Q0MpIHsKKwkgICAgICAgICAgICAgICAgICAgIC8qIHRoZSBkZWNvbXBvc2l0aW9uIGlzIG91dCBvZiBvcmRlciB3aXRoIHJlc3BlY3QgdG8gCisgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgcHJlY2VkaW5nIHRleHQgKi8KKwkgICAgICAgICAgICAgICAgICAgIGRlc3RJbmRleCs9YXJncy5sZW5ndGg7CisJICAgICAgICAgICAgICAgICAgICBhcmdzLnRyYWlsQ0M9bWVyZ2VPcmRlcmVkKGRlc3QscmVvcmRlclN0YXJ0SW5kZXgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW9yZGVyU3BsaXQsIHAsIHBTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcFN0YXJ0K2FyZ3MubGVuZ3RoKTsKKwkgICAgICAgICAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAgICAgICAgICAgIC8qIGp1c3QgYXBwZW5kIHRoZSBkZWNvbXBvc2l0aW9uICovCisJICAgICAgICAgICAgICAgICAgICBkbyB7CisJICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFtkZXN0SW5kZXgrK109cFtwU3RhcnQrK107CisJICAgICAgICAgICAgICAgICAgICB9IHdoaWxlKC0tYXJncy5sZW5ndGg+MCk7CisJICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICB9CisJICAgICAgICB9IGVsc2UgeworCSAgICAgICAgICAgIC8qIGJ1ZmZlciBvdmVyZmxvdyAqLworCSAgICAgICAgICAgIC8qIGtlZXAgaW5jcmVtZW50aW5nIHRoZSBkZXN0SW5kZXggZm9yIHByZWZsaWdodGluZyAqLworCSAgICAgICAgICAgIGRlc3RJbmRleCs9YXJncy5sZW5ndGg7CisJICAgICAgICB9CisJCisJICAgICAgICBwcmV2Q0M9YXJncy50cmFpbENDOworCSAgICAgICAgaWYocHJldkNDPT0wKSB7CisJICAgICAgICAgICAgcmVvcmRlclN0YXJ0SW5kZXg9ZGVzdEluZGV4OworCSAgICAgICAgfQorCSAgICB9CisJICAgIGRlc3RJbmRleEFyclswXT1kZXN0SW5kZXg7CisJICAgIHJldHVybiBwcmV2Q0M7CisJfQorCQorCXB1YmxpYyBzdGF0aWMgaW50IG1ha2VGQ0QoY2hhcltdIHNyYywgIGludCBzcmNTdGFydCwgIGludCBzcmNMaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJbXSBkZXN0LCBpbnQgZGVzdFN0YXJ0LCBpbnQgZGVzdExpbWl0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkgICAgaW50IHByZXZTcmMsIGRlY29tcFN0YXJ0OworCSAgICBpbnQgZGVzdEluZGV4LCBsZW5ndGg7CisJICAgIGNoYXIgYywgYzI7CisJICAgIGludCAvKiB1bnNpZ25lZCBpbnQqLyBmY2QxNjsKKwkgICAgaW50IHByZXZDQywgY2M7CisJCisJICAgIC8qIGluaXRpYWxpemUgKi8KKwkgICAgZGVjb21wU3RhcnQ9c3JjU3RhcnQ7CisJICAgIGRlc3RJbmRleD1kZXN0U3RhcnQ7CisJICAgIHByZXZDQz0wOworCSAgICBjPTA7CisJICAgIGZjZDE2PTA7CisJCWludFtdIGRlc3RJbmRleEFyciA9IG5ldyBpbnRbMV07CisgICAgICAgIGRlc3RJbmRleEFyclswXT1kZXN0SW5kZXg7CisgICAgICAgIAorCSAgICBmb3IoOzspIHsKKwkgICAgICAgIC8qIHNraXAgYSBydW4gb2YgY29kZSB1bml0cyBiZWxvdyB0aGUgbWluaW11bSBvciB3aXRoIGlycmVsZXZhbnQgCisgICAgICAgICAgICAgKiBkYXRhIGZvciB0aGUgRkNEIGNoZWNrICovCisJICAgICAgICBwcmV2U3JjPXNyY1N0YXJ0OworCisgICAgICAgICAgICBmb3IoOzspIHsKKyAgICAgICAgICAgICAgICBpZihzcmNTdGFydD09c3JjTGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmKChjPXNyY1tzcmNTdGFydF0pPE1JTl9XSVRIX0xFQURfQ0MpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJldkNDPShpbnQpLWM7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmKChmY2QxNj1nZXRGQ0QxNihjKSk9PTApIHsKKyAgICAgICAgICAgICAgICAgICAgcHJldkNDPTA7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICsrc3JjU3RhcnQ7CisgICAgICAgICAgICB9CisKKwkKKwkgICAgICAgIC8qCisJICAgICAgICAgKiBwcmV2Q0MgaGFzIHZhbHVlcyBmcm9tIHRoZSBmb2xsb3dpbmcgcmFuZ2VzOgorCSAgICAgICAgICogMC4uMHhmZiAtIHRoZSBwcmV2aW91cyB0cmFpbCBjb21iaW5pbmcgY2xhc3MKKwkgICAgICAgICAqIDwwICAgICAgLSB0aGUgbmVnYXRpdmUgdmFsdWUgb2YgdGhlIHByZXZpb3VzIGNvZGUgdW5pdDsKKwkgICAgICAgICAqICAgICAgICAgICB0aGF0IGNvZGUgdW5pdCB3YXMgPF9OT1JNX01JTl9XSVRIX0xFQURfQ0MgYW5kIGl0cyAKKyAgICAgICAgICAgICAqICAgICAgICAgICBnZXRGQ0QxNigpCisJICAgICAgICAgKiAgICAgICAgICAgd2FzIGRlZmVycmVkIHNvIHRoYXQgYXZlcmFnZSB0ZXh0IGlzIGNoZWNrZWQgZmFzdGVyCisJICAgICAgICAgKi8KKwkKKwkgICAgICAgIC8qIGNvcHkgdGhlc2UgY29kZSB1bml0cyBhbGwgYXQgb25jZSAqLworCSAgICAgICAgaWYoc3JjU3RhcnQhPXByZXZTcmMpIHsKKwkgICAgICAgICAgICBsZW5ndGg9KGludCkoc3JjU3RhcnQtcHJldlNyYyk7CisJICAgICAgICAgICAgaWYoKGRlc3RJbmRleCtsZW5ndGgpPD1kZXN0TGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShzcmMscHJldlNyYyxkZXN0LGRlc3RJbmRleCxsZW5ndGgpOworCSAgICAgICAgICAgIH0KKwkgICAgICAgICAgICBkZXN0SW5kZXgrPWxlbmd0aDsKKwkgICAgICAgICAgICBwcmV2U3JjPXNyY1N0YXJ0OworCQorCSAgICAgICAgICAgIC8qIHByZXZDQzwwIGlzIG9ubHkgcG9zc2libGUgZnJvbSB0aGUgYWJvdmUgbG9vcCwgaS5lLiwgb25seSBpZgorICAgICAgICAgICAgICAgICAqICBwcmV2U3JjPHNyYyAqLworCSAgICAgICAgICAgIGlmKHByZXZDQzwwKSB7CisJICAgICAgICAgICAgICAgIC8qIHRoZSBwcmV2aW91cyBjaGFyYWN0ZXIgd2FzIDxfTk9STV9NSU5fV0lUSF9MRUFEX0NDLCB3ZSAKKyAgICAgICAgICAgICAgICAgICAgICogbmVlZCB0byBnZXQgaXRzIHRyYWlsIGNjICovCisJICAgICAgICAgICAgICAgIHByZXZDQz0oaW50KShnZXRGQ0QxNigoY2hhciktcHJldkNDKSYweGZmKTsKKwkKKwkgICAgICAgICAgICAgICAgLyoKKwkgICAgICAgICAgICAgICAgICogc2V0IGEgcG9pbnRlciB0byB0aGlzIGJlbG93LVUrMDMwMCBjaGFyYWN0ZXI7CisJICAgICAgICAgICAgICAgICAqIGlmIHByZXZDQz09MCB0aGVuIGl0IHdpbGwgbW92ZWQgdG8gYWZ0ZXIgdGhpcyBjaGFyYWN0ZXIgCisgICAgICAgICAgICAgICAgICAgICAqIGJlbG93CisJICAgICAgICAgICAgICAgICAqLworCSAgICAgICAgICAgICAgICBkZWNvbXBTdGFydD1wcmV2U3JjLTE7CisJICAgICAgICAgICAgfQorCSAgICAgICAgfQorCSAgICAgICAgLyoKKwkgICAgICAgICAqIG5vdzoKKwkgICAgICAgICAqIHByZXZTcmM9PXNyYyAtIHVzZWQgbGF0ZXIgdG8gYWRqdXN0IGRlc3RJbmRleCBiZWZvcmUgCisgICAgICAgICAgICAgKiAgICAgICAgICBkZWNvbXBvc2l0aW9uCisJICAgICAgICAgKiBwcmV2Q0M+PTAKKwkgICAgICAgICAqLworCQorCSAgICAgICAgLyogZW5kIG9mIHNvdXJjZSByZWFjaGVkPyAqLworCSAgICAgICAgaWYoc3JjU3RhcnQ9PXNyY0xpbWl0KSB7CisJICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICB9CisJCisJICAgICAgICAvKiBzZXQgYSBwb2ludGVyIHRvIGFmdGVyIHRoZSBsYXN0IHNvdXJjZSBwb3NpdGlvbiB3aGVyZSBwcmV2Q0M9PTAqLworCSAgICAgICAgaWYocHJldkNDPT0wKSB7CisJICAgICAgICAgICAgZGVjb21wU3RhcnQ9cHJldlNyYzsKKwkgICAgICAgIH0KKwkKKwkgICAgICAgIC8qIGMgYWxyZWFkeSBjb250YWlucyAqc3JjIGFuZCBmY2QxNiBpcyBzZXQgZm9yIGl0LCBpbmNyZW1lbnQgc3JjICovCisJICAgICAgICArK3NyY1N0YXJ0OworCQorCSAgICAgICAgLyogY2hlY2sgb25lIGFib3ZlLW1pbmltdW0sIHJlbGV2YW50IGNvZGUgdW5pdCAqLworCSAgICAgICAgaWYoVVRGMTYuaXNMZWFkU3Vycm9nYXRlKGMpKSB7CisJICAgICAgICAgICAgLyogYyBpcyBhIGxlYWQgc3Vycm9nYXRlLCBnZXQgdGhlIHJlYWwgZmNkMTYgKi8KKwkgICAgICAgICAgICBpZihzcmNTdGFydCE9c3JjTGltaXQgJiYgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVRGMTYuaXNUcmFpbFN1cnJvZ2F0ZShjMj1zcmNbc3JjU3RhcnRdKSkgeworCSAgICAgICAgICAgICAgICArK3NyY1N0YXJ0OworCSAgICAgICAgICAgICAgICBmY2QxNj1nZXRGQ0QxNkZyb21TdXJyb2dhdGVQYWlyKChjaGFyKWZjZDE2LCBjMik7CisJICAgICAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAgICAgICAgYzI9MDsKKwkgICAgICAgICAgICAgICAgZmNkMTY9MDsKKwkgICAgICAgICAgICB9CisJICAgICAgICB9IGVsc2UgeworCSAgICAgICAgICAgIGMyPTA7CisJICAgICAgICB9CisJCisJICAgICAgICAvKiB3ZSBhcmUgbG9va2luZyBhdCB0aGUgY2hhcmFjdGVyIChjLCBjMikgYXQgW3ByZXZTcmMuLnNyY1sgKi8KKwkKKwkgICAgICAgIC8qIGNoZWNrIHRoZSBjb21iaW5pbmcgb3JkZXIsIGdldCB0aGUgbGVhZCBjYyAqLworCSAgICAgICAgY2M9KGludCkoZmNkMTY+PjgpOworCSAgICAgICAgaWYoY2M9PTAgfHwgY2M+PXByZXZDQykgeworCSAgICAgICAgICAgIC8qIHRoZSBvcmRlciBpcyBvayAqLworCSAgICAgICAgICAgIGlmKGNjPT0wKSB7CisJICAgICAgICAgICAgICAgIGRlY29tcFN0YXJ0PXByZXZTcmM7CisJICAgICAgICAgICAgfQorCSAgICAgICAgICAgIHByZXZDQz0oaW50KShmY2QxNiYweGZmKTsKKwkKKwkgICAgICAgICAgICAvKiBqdXN0IGFwcGVuZCAoYywgYzIpICovCisJICAgICAgICAgICAgbGVuZ3RoPSBjMj09MCA/IDEgOiAyOworCSAgICAgICAgICAgIGlmKChkZXN0SW5kZXgrbGVuZ3RoKTw9ZGVzdExpbWl0KSB7CisJICAgICAgICAgICAgICAgIGRlc3RbZGVzdEluZGV4KytdPWM7CisJICAgICAgICAgICAgICAgIGlmKGMyIT0wKSB7CisJICAgICAgICAgICAgICAgICAgICBkZXN0W2Rlc3RJbmRleCsrXT1jMjsKKwkgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgIH0gZWxzZSB7CisJICAgICAgICAgICAgICAgIGRlc3RJbmRleCs9bGVuZ3RoOworCSAgICAgICAgICAgIH0KKwkgICAgICAgIH0gZWxzZSB7CisJICAgICAgICAgICAgLyoKKwkgICAgICAgICAgICAgKiBiYWNrIG91dCB0aGUgcGFydCBvZiB0aGUgc291cmNlIHRoYXQgd2UgY29waWVkIGFscmVhZHkgYnV0CisJICAgICAgICAgICAgICogaXMgbm93IGdvaW5nIHRvIGJlIGRlY29tcG9zZWQ7CisJICAgICAgICAgICAgICogcHJldlNyYyBpcyBzZXQgdG8gYWZ0ZXIgd2hhdCB3YXMgY29waWVkCisJICAgICAgICAgICAgICovCisJICAgICAgICAgICAgZGVzdEluZGV4LT0oaW50KShwcmV2U3JjLWRlY29tcFN0YXJ0KTsKKwkKKwkgICAgICAgICAgICAvKgorCSAgICAgICAgICAgICAqIGZpbmQgdGhlIHBhcnQgb2YgdGhlIHNvdXJjZSB0aGF0IG5lZWRzIHRvIGJlIGRlY29tcG9zZWQ7CisJICAgICAgICAgICAgICogdG8gYmUgc2FmZSBhbmQgc2ltcGxlLCBkZWNvbXBvc2UgdG8gYmVmb3JlIHRoZSBuZXh0IGNoYXJhY3RlcgorICAgICAgICAgICAgICAgICAqIHdpdGggbGVhZCBjYz09MAorCSAgICAgICAgICAgICAqLworCSAgICAgICAgICAgIHNyY1N0YXJ0PWZpbmRTYWZlRkNEKHNyYyxzcmNTdGFydCwgc3JjTGltaXQsIChjaGFyKWZjZDE2KTsKKwkKKwkgICAgICAgICAgICAvKgorCSAgICAgICAgICAgICAqIHRoZSBzb3VyY2UgdGV4dCBkb2VzIG5vdCBmdWxmaWxsIHRoZSBjb25kaXRpb25zIGZvciBGQ0Q7CisJICAgICAgICAgICAgICogZGVjb21wb3NlIGFuZCByZW9yZGVyIGEgbGltaXRlZCBwaWVjZSBvZiB0aGUgdGV4dAorCSAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIGRlc3RJbmRleEFyclswXSA9IGRlc3RJbmRleDsKKwkgICAgICAgICAgICBwcmV2Q0M9ZGVjb21wb3NlRkNEKHNyYyxkZWNvbXBTdGFydCwgc3JjU3RhcnQsZGVzdCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0SW5kZXhBcnIpOworCSAgICAgICAgICAgIGRlY29tcFN0YXJ0PXNyY1N0YXJ0OworICAgICAgICAgICAgICAgIGRlc3RJbmRleD1kZXN0SW5kZXhBcnJbMF07CisJICAgICAgICB9CisJICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBkZXN0SW5kZXg7CisJCisJfQorCisJcHVibGljIHN0YXRpYyBpbnQgZ2V0Q29tYmluaW5nQ2xhc3MoaW50IGMpIHsKKwkgICAgbG9uZyBub3JtMzI7CisgICAgICAgIGlmKGM8PTB4ZmZmZikgeworICAgICAgICAgICAgbm9ybTMyPWdldE5vcm0zMigoY2hhciljKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG5vcm0zMj1nZXROb3JtMzIoVVRGMTYuZ2V0TGVhZFN1cnJvZ2F0ZShjKSk7CisgICAgICAgICAgICBpZigobm9ybTMyJkNDX01BU0spIT0wKSB7CisgICAgICAgICAgICAgICAgbm9ybTMyPWdldE5vcm0zMkZyb21TdXJyb2dhdGVQYWlyKG5vcm0zMixVVEYxNi5nZXRUcmFpbFN1cnJvZ2F0ZShjKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIChjaGFyKSgobm9ybTMyPj5DQ19TSElGVCkmMHhGRik7CisJfQorCQorCXB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0Z1bGxDb21wb3NpdGlvbkV4Y2x1c2lvbihpbnQgYykgeworCSAgICBpZihpc0Zvcm1hdFZlcnNpb25fMl8xKSB7CisJICAgICAgICBpbnQgYXV4ID1hdXhUcmllSW1wbC5hdXhUcmllLmdldENvZGVQb2ludFZhbHVlKGMpOworCSAgICAgICAgcmV0dXJuIChib29sZWFuKSgoYXV4ICYgQVVYX0NPTVBfRVhfTUFTSykhPTApOworCSAgICB9IGVsc2UgeworCSAgICAgICAgcmV0dXJuIGZhbHNlOworCSAgICB9CisJfQorCQorCXB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0Nhbm9uU2FmZVN0YXJ0KGludCBjKSB7CisJICAgIGlmKGlzRm9ybWF0VmVyc2lvbl8yXzEpIHsKKwkgICAgICAgIGludCBhdXggPSBhdXhUcmllSW1wbC5hdXhUcmllLmdldENvZGVQb2ludFZhbHVlKGMpOworCSAgICAgICAgcmV0dXJuIChib29sZWFuKSgoYXV4ICYgQVVYX1VOU0FGRV9NQVNLKT09MCk7CisJICAgIH0gZWxzZSB7CisJICAgICAgICByZXR1cm4gZmFsc2U7CisJICAgIH0KKwl9CisJCisJcHVibGljIHN0YXRpYyBib29sZWFuIGdldENhbm9uU3RhcnRTZXQoaW50IGMsIFVTZXJpYWxpemVkU2V0IGZpbGxTZXQpIHsKKworCSAgICBpZihmaWxsU2V0IT1udWxsICYmIGNhbm9uU3RhcnRTZXRzIT1udWxsKSB7CisJIAkJLyoKKwkgICAgICAgICAqIGJpbmFyeSBzZWFyY2ggZm9yIGMKKwkgICAgICAgICAqCisJICAgICAgICAgKiBUaGVyZSBhcmUgdHdvIHNlYXJjaCB0YWJsZXMsCisJICAgICAgICAgKiBvbmUgZm9yIEJNUCBjb2RlIHBvaW50cyBhbmQgb25lIGZvciBzdXBwbGVtZW50YXJ5IG9uZXMuCisJICAgICAgICAgKiBTZWUgdW5vcm1pbXAuaCBmb3IgZGV0YWlscy4KKwkgICAgICAgICAqLworCSAgICAgICAgY2hhcltdIHRhYmxlOworCSAgICAgICAgaW50IGk9MCwgc3RhcnQsIGxpbWl0OworCSAgICAgICAgCisgICAgICAgICAgICBpbnRbXSBpbmRleGVzID0gKGludFtdKSBjYW5vblN0YXJ0U2V0c1tDQU5PTl9TRVRfSU5ESUNJRVNfSU5ERVhdOworICAgICAgICAgICAgY2hhcltdIHN0YXJ0U2V0cyA9IChjaGFyW10pIGNhbm9uU3RhcnRTZXRzW0NBTk9OX1NFVF9TVEFSVF9TRVRTX0lOREVYXTsKKyAgICAgICAgICAgIAorCSAgICAgICAgaWYoYzw9MHhmZmZmKSB7CisJICAgICAgICAgICAgdGFibGU9KGNoYXJbXSkgY2Fub25TdGFydFNldHNbQ0FOT05fU0VUX0JNUF9UQUJMRV9JTkRFWF07CisJICAgICAgICAgICAgc3RhcnQ9MDsKKwkgICAgICAgICAgICBsaW1pdD10YWJsZS5sZW5ndGg7CisJCisJICAgICAgICAgICAgLyogZWFjaCBlbnRyeSBpcyBhIHBhaXIgeyBjLCByZXN1bHQgfSAqLworCSAgICAgICAgICAgIHdoaWxlKHN0YXJ0PGxpbWl0LTIpIHsKKwkgICAgICAgICAgICAgICAgaT0oY2hhcikoKChzdGFydCtsaW1pdCkvNCkqMik7IAorCSAgICAgICAgICAgICAgICBpZihjPHRhYmxlW2ldKSB7CisJICAgICAgICAgICAgICAgICAgICBsaW1pdD1pOworCSAgICAgICAgICAgICAgICB9IGVsc2UgeworCSAgICAgICAgICAgICAgICAgICAgc3RhcnQ9aTsKKwkgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbihpKTsKKwkgICAgICAgICAgICAvKiBmb3VuZD8gKi8KKwkgICAgICAgICAgICBpZihjPT10YWJsZVtzdGFydF0pIHsKKwkgICAgICAgICAgICAgICAgaT10YWJsZVtzdGFydCsxXTsKKwkgICAgICAgICAgICAgICAgaWYoKGkgJiBDQU5PTl9TRVRfQk1QX01BU0spPT1DQU5PTl9TRVRfQk1QX0lTX0lOREVYKSB7CisJICAgICAgICAgICAgICAgICAgICAvKiByZXN1bHQgMDF4eHh4eHggeHh4eHh4IGNvbnRhaW5zIGluZGV4IHggdG8gYSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAqIFVTZXJpYWxpemVkU2V0ICovCisJICAgICAgICAgICAgICAgICAgICBpJj0oQ0FOT05fU0VUX01BWF9DQU5PTl9TRVRTLTEpOworCSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbGxTZXQuZ2V0U2V0KHN0YXJ0U2V0cywoaS1pbmRleGVzLmxlbmd0aCkpOworCSAgICAgICAgICAgICAgICB9IGVsc2UgeworCSAgICAgICAgICAgICAgICAgICAgLyogb3RoZXIgcmVzdWx0IHZhbHVlcyBhcmUgQk1QIGNvZGUgcG9pbnRzIGZvciAKKyAgICAgICAgICAgICAgICAgICAgICAgICAqIHNpbmdsZS1jb2RlIHBvaW50IHNldHMgKi8KKwkgICAgICAgICAgICAgICAgICAgIGZpbGxTZXQuc2V0U2VyaWFsaXplZFRvT25lKGkpOworCSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisJICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICB9CisJICAgICAgICB9IGVsc2UgeworCSAgICAgICAgICAgIGNoYXIgaGlnaCwgbG93LCBoLGo9MDsKKwkKKwkgICAgICAgICAgICB0YWJsZT0oY2hhcltdKSBjYW5vblN0YXJ0U2V0c1tDQU5PTl9TRVRfU1VQUF9UQUJMRV9JTkRFWF07CisJICAgICAgICAgICAgc3RhcnQ9MDsKKwkgICAgICAgICAgICBsaW1pdD10YWJsZS5sZW5ndGg7CisJCisJICAgICAgICAgICAgaGlnaD0oY2hhcikoYz4+MTYpOworCSAgICAgICAgICAgIGxvdz0oY2hhciljOworCQorCSAgICAgICAgICAgIC8qIGVhY2ggZW50cnkgaXMgYSB0cmlwbGV0IHsgaGlnaChjKSwgbG93KGMpLCByZXN1bHQgfSAqLworCSAgICAgICAgICAgIHdoaWxlKHN0YXJ0PGxpbWl0LTMpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogKHN0YXJ0K2xpbWl0KS8yIGFuZCBhZGRyZXNzIHRyaXBsZXRzICovCisJICAgICAgICAgICAgICAgIGk9KGNoYXIpKCgoc3RhcnQrbGltaXQpLzYpKjMpOworCSAgICAgICAgICAgICAgICBqPShjaGFyKSh0YWJsZVtpXSYweDFmKTsgLyogaGlnaCB3b3JkICovCisgICAgICAgICAgICAgICAgICAgIGludCB0YWJsZVZhbCA9IHRhYmxlW2krMV07CisgICAgICAgICAgICAgICAgICAgIGludCBsb3dJbnQgPSBsb3c7CisgICAgICAgICAgICAgICAgICAgIGlmKGhpZ2g8aiB8fCAoKHRhYmxlVmFsPmxvd0ludCkgJiYgKGhpZ2g9PWopKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbGltaXQ9aTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0PWk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgLy9TeXN0ZW0uZXJyLnByaW50bG4oIlx0KChoaWdoPT1qKSAmJiAodGFibGVbaSsxXT5sb3cpKSA9PSAiICsgKChoaWdoPT1qKSAmJiAodGFibGVWYWw+bG93SW50KSkgKTsKKyAgICAgICAgICAgICAgICAgICAgLy9TeXN0ZW0uZXJyLnByaW50bG4oIlx0XHQgaiA9ICIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKGopICsKKyAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgIlx0IGkgPSAiICsgSW50ZWdlci50b0hleFN0cmluZyhpKSArCisgICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICJcdCBoaWdoID0gIisgSW50ZWdlci50b0hleFN0cmluZyhoaWdoKSAgKworICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgIlx0IGxvdyA9ICIgICsgSW50ZWdlci50b0hleFN0cmluZyhsb3dJbnQpICAgKworICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAiXHQgdGFibGVbaSsxXTogIisgSW50ZWdlci50b0hleFN0cmluZyh0YWJsZVZhbCkgCisgICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICk7CisKKyAgICAgICAgICAgICAgICB9CisKKwkgICAgICAgICAgICAvKiBmb3VuZD8gKi8KKwkgICAgICAgICAgICBoPXRhYmxlW3N0YXJ0XTsKKworICAgICAgICAgICAgICAgIC8vU3lzdGVtLmVyci5wcmludGxuKCJjOiBcXFUiKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKGMpKyIgaSA6ICIrSW50ZWdlci50b0hleFN0cmluZyhpKSArIiBoIDogIiArIEludGVnZXIudG9IZXhTdHJpbmcoaCkpOworICAgICAgICAgICAgICAgIGludCB0YWJsZVZhbDEgPSB0YWJsZVtzdGFydCsxXTsKKyAgICAgICAgICAgICAgICBpbnQgbG93SW50ID0gbG93OworCisJICAgICAgICAgICAgaWYoaGlnaD09KGgmMHgxZikgJiYgbG93SW50PT10YWJsZVZhbDEpIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IHRhYmxlVmFsMiA9IHRhYmxlW3N0YXJ0KzJdOworCSAgICAgICAgICAgICAgICBpPXRhYmxlVmFsMjsKKwkgICAgICAgICAgICAgICAgaWYoKGgmMHg4MDAwKT09MCkgeworCSAgICAgICAgICAgICAgICAgICAgLyogdGhlIHJlc3VsdCBpcyBhbiBpbmRleCB0byBhIFVTZXJpYWxpemVkU2V0ICovCisJICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmlsbFNldC5nZXRTZXQoc3RhcnRTZXRzLChpLWluZGV4ZXMubGVuZ3RoKSk7CisJICAgICAgICAgICAgICAgIH0gZWxzZSB7CisJICAgICAgICAgICAgICAgICAgICAvKgorCSAgICAgICAgICAgICAgICAgICAgICogc2luZ2xlLWNvZGUgcG9pbnQgc2V0IHt4fSBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICogdHJpcGxldCB7IDEwMHh4eHh4IDAwMGhoaGhoICBsbGxsbGxsbCBsbGxsbGxsbCAgeHh4eHh4eHggeHh4eHh4eHggfQorCSAgICAgICAgICAgICAgICAgICAgICovCisJICAgICAgICAgICAgICAgICAgICAvL2l8PSgoaW50KWggJiAweDFmMDApPDw4OyAvKiBhZGQgaGlnaCBiaXRzIGZyb20gaGlnaChjKSAqLworICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRlbXAgPSAoKGludCloICYgMHgxZjAwKTw8ODsKKyAgICAgICAgICAgICAgICAgICAgICAgIGl8PXRlbXA7IC8qIGFkZCBoaWdoIGJpdHMgZnJvbSBoaWdoKGMpICovCisJICAgICAgICAgICAgICAgICAgICBmaWxsU2V0LnNldFNlcmlhbGl6ZWRUb09uZSgoaW50KWkpOworCSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisJICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICB9CisJICAgICAgICB9CisJICAgIH0KKwkKKwkgICAgcmV0dXJuIGZhbHNlOyAvKiBub3QgZm91bmQgKi8KKwl9CisgICAgCisJcHVibGljIHN0YXRpYyBpbnQgZ2V0RkNfTkZLQ19DbG9zdXJlKGludCBjLCBjaGFyW10gZGVzdCkgeworICAgICAgICAKKyAgICAgICAgaW50IGRlc3RDYXBhY2l0eTsKKyAgICAgICAgIAorICAgICAgICBpZihkZXN0PT1udWxsICkgeworICAgICAgICAgICAgZGVzdENhcGFjaXR5PTA7CisgICAgICAgIH1lbHNleworICAgICAgICAgICAgZGVzdENhcGFjaXR5ID0gZGVzdC5sZW5ndGg7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGludCBhdXggPWF1eFRyaWVJbXBsLmF1eFRyaWUuZ2V0Q29kZVBvaW50VmFsdWUoYyk7CisKKyAgICAgICAgYXV4Jj0gQVVYX0ZOQ19NQVNLOworICAgICAgICBpZihhdXghPTApIHsKKyAgICAgICAgICAgIGludCBzOworICAgICAgICAgICAgaW50IGluZGV4PWF1eDsgCisgICAgICAgICAgICBpbnQgbGVuZ3RoOworICAgICAgICAgICAgCisgICAgICAgICAgICBzID1leHRyYURhdGFbaW5kZXhdOworICAgICAgICAgICAgaWYoczwweGZmMDApIHsKKyAgICAgICAgICAgICAgICAvKiBzIHBvaW50cyB0byB0aGUgc2luZ2xlLXVuaXQgc3RyaW5nICovCisgICAgICAgICAgICAgICAgbGVuZ3RoPTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGxlbmd0aD1zJjB4ZmY7CisgICAgICAgICAgICAgICAgKytpbmRleDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmKDA8bGVuZ3RoICYmIGxlbmd0aDw9ZGVzdENhcGFjaXR5KSB7CisgICAgICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShleHRyYURhdGEsaW5kZXgsZGVzdCwwLGxlbmd0aCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbGVuZ3RoOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisKKworICAgIC8qIElzIGMgYW4gTkY8bW9kZT4tc2tpcHBhYmxlIGNvZGUgcG9pbnQ/IFNlZSB1bm9ybWltcC5oLiAqLworICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc05GU2tpcHBhYmxlKGludCBjLCBOb3JtYWxpemVyLk1vZGUgbW9kZSwgbG9uZyBtYXNrKSB7CisgICAgICAgIGxvbmcgLyp1bnNpZ25lZCBpbnQqLyBub3JtMzI7CisgICAgICAgIG1hc2sgPSBtYXNrICYgVU5TSUdORURfSU5UX01BU0s7CisgICAgICAgIGNoYXIgYXV4LCBmY2Q7CisgICAKKyAgICAgICAgLyogY2hlY2sgY29uZGl0aW9ucyAoYSkuLihlKSwgc2VlIHVub3JtaW1wLmggKi8KKyAgICAgICAgbm9ybTMyID0gZ2V0Tm9ybTMyKGMpOworCisgICAgICAgIGlmKChub3JtMzImbWFzaykhPTApIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLyogZmFpbHMgKGEpLi4oZSksIG5vdCBza2lwcGFibGUgKi8KKyAgICAgICAgfQorICAgIAorICAgICAgICBpZihtb2RlID09IE5vcm1hbGl6ZXIuTkZEIHx8IG1vZGUgPT0gTm9ybWFsaXplci5ORktEIHx8IG1vZGUgPT0gTm9ybWFsaXplci5OT05FKXsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOyAvKiBORipELCBwYXNzZWQgKGEpLi4oYyksIGlzIHNraXBwYWJsZSAqLworICAgICAgICB9CisgICAgICAgIC8qIGNoZWNrIGNvbmRpdGlvbnMgKGEpLi4oZSksIHNlZSB1bm9ybWltcC5oICovCisKKyAgICAgICAgLyogTkYqQy9GQ0MsIHBhc3NlZCAoYSkuLihlKSAqLworICAgICAgICBpZigobm9ybTMyJiBRQ19ORkQpPT0wKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLyogbm8gY2Fub25pY2FsIGRlY29tcG9zaXRpb24sIGlzIHNraXBwYWJsZSAqLworICAgICAgICB9CisgICAgCisgICAgICAgIC8qIGNoZWNrIEhhbmd1bCBzeWxsYWJsZXMgYWxnb3JpdGhtaWNhbGx5ICovCisgICAgICAgIGlmKGlzTm9ybTMySGFuZ3VsT3JKYW1vKG5vcm0zMikpIHsKKyAgICAgICAgICAgIC8qIEphbW8gcGFzc2VkIChhKS4uKGUpIGFib3ZlLCBtdXN0IGJlIEhhbmd1bCAqLworICAgICAgICAgICAgcmV0dXJuICFpc0hhbmd1bFdpdGhvdXRKYW1vVCgoY2hhciljKTsgLyogTFZUIGFyZSBza2lwcGFibGUsIExWIGFyZSBub3QgKi8KKyAgICAgICAgfQorICAgIAorICAgICAgICAvKiBpZihtb2RlPD1VTk9STV9ORktDKSB7IC0tIGVuYWJsZSB3aGVuIGltcGxlbWVudGluZyBGQ0MgKi8KKyAgICAgICAgLyogTkYqQywgdGVzdCAoZikgZmxhZyAqLworICAgICAgICBpZighaXNGb3JtYXRWZXJzaW9uXzJfMikgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvKiBubyAoZikgZGF0YSwgc2F5IG5vdCBza2lwcGFibGUgdG8gYmUgc2FmZSAqLworICAgICAgICB9CisgICAgCisKKyAgICAgICAgYXV4ID0gYXV4VHJpZUltcGwuYXV4VHJpZS5nZXRDb2RlUG9pbnRWYWx1ZShjKTsKKyAgICAgICAgcmV0dXJuIChhdXgmQVVYX05GQ19TS0lQX0ZfTUFTSyk9PTA7IC8qIFRSVUU9c2tpcHBhYmxlIGlmIHRoZSAoZikgZmxhZyBpcyBub3Qgc2V0ICovCisgICAgCisgICAgICAgIC8qIH0gZWxzZSB7IEZDQywgdGVzdCBmY2Q8PTEgaW5zdGVhZCBvZiB0aGUgYWJvdmUgfSAqLworICAgIH0KKyAgICAvKgorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4KKyAgICBfZW51bVByb3BlcnR5U3RhcnRzUmFuZ2UoY29uc3Qgdm9pZCAqY29udGV4dCwgVUNoYXIzMiBzdGFydCwgVUNoYXIzMiBsaW1pdCwgdWludDMyX3QgdmFsdWUpIHsKKyAgICAgICAgLy8gYWRkIHRoZSBzdGFydCBjb2RlIHBvaW50IHRvIHRoZSBVU2V0IAorICAgICAgICB1c2V0X2FkZCgoVVNldCAqKWNvbnRleHQsIHN0YXJ0KTsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorICAgICovCisKKyAgICBwdWJsaWMgc3RhdGljIFVuaWNvZGVTZXQgYWRkUHJvcGVydHlTdGFydHMoVW5pY29kZVNldCBzZXQpIHsKKyAgICAgICAgaW50IGM7CisgICAgICAgCisgICAgICAgIC8qIGFkZCB0aGUgc3RhcnQgY29kZSBwb2ludCBvZiBlYWNoIHNhbWUtdmFsdWUgcmFuZ2Ugb2YgZWFjaCB0cmllICovCisgICAgICAgIC8vdXRyaWVfZW51bSgmbm9ybVRyaWUsIE5VTEwsIF9lbnVtUHJvcGVydHlTdGFydHNSYW5nZSwgc2V0KTsKKyAgICAgICAgVHJpZUl0ZXJhdG9yIG5vcm1JdGVyID0gbmV3IFRyaWVJdGVyYXRvcihub3JtVHJpZUltcGwubm9ybVRyaWUpOworICAgICAgICBSYW5nZVZhbHVlSXRlcmF0b3IuRWxlbWVudCByZXN1bHQgPSBuZXcgUmFuZ2VWYWx1ZUl0ZXJhdG9yLkVsZW1lbnQoKTsKKyAgICAgICAgCisgICAgICAgIHdoaWxlKG5vcm1JdGVyLm5leHQocmVzdWx0KSl7CisgICAgICAgICAgICBzZXQuYWRkKHJlc3VsdC5zdGFydCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFRyaWVJdGVyYXRvciBmY2RJdGVyICA9IG5ldyBUcmllSXRlcmF0b3IoZmNkVHJpZUltcGwuZmNkVHJpZSk7CisgICAgICAgIC8vdXRyaWVfZW51bSgmZmNkVHJpZSwgTlVMTCwgX2VudW1Qcm9wZXJ0eVN0YXJ0c1JhbmdlLCBzZXQpOworICAgICAgICB3aGlsZShub3JtSXRlci5uZXh0KHJlc3VsdCkpeworICAgICAgICAgICAgc2V0LmFkZChyZXN1bHQuc3RhcnQpOworICAgICAgICB9CisgICAgCisgICAgICAgIC8qIGFkZCBIYW5ndWwgTFYgc3lsbGFibGVzIGFuZCBMVisxIGJlY2F1c2Ugb2Ygc2tpcHBhYmxlcyAqLworICAgICAgICBmb3IoYz1IQU5HVUxfQkFTRTsgYzxIQU5HVUxfQkFTRStIQU5HVUxfQ09VTlQ7IGMrPUpBTU9fVF9DT1VOVCkgeworICAgICAgICAgICAgc2V0LmFkZChjKTsKKyAgICAgICAgICAgIHNldC5hZGQoYysxKTsKKyAgICAgICAgfQorICAgICAgICBzZXQuYWRkKEhBTkdVTF9CQVNFK0hBTkdVTF9DT1VOVCk7IC8qIGFkZCBIYW5ndWwrMSB0byBjb250aW51ZSB3aXRoIG90aGVyIHByb3BlcnRpZXMgKi8KKyAgICAgICAgcmV0dXJuIHNldDsgLy8gZm9yIGNoYWluaW5nCisgICAgfQorCisJLyoqCisJICogSW50ZXJuYWwgQVBJLCB1c2VkIGJ5IGNvbGxhdGlvbiBjb2RlLgorCSAqIEdldCBhY2Nlc3MgdG8gdGhlIGludGVybmFsIEZDRCB0cmllIHRhYmxlIHRvIGJlIGFibGUgdG8gcGVyZm9ybQorCSAqIGluY3JlbWVudGFsLCBwZXItY29kZSB1bml0LCBGQ0QgY2hlY2tzIGluIGNvbGxhdGlvbi4KKwkgKiBPbmUgcG9pbnRlciBpcyBzdWZmaWNpZW50IGJlY2F1c2UgdGhlIHRyaWUgaW5kZXggdmFsdWVzIGFyZSBvZmZzZXQKKwkgKiBieSB0aGUgaW5kZXggc2l6ZSwgc28gdGhhdCB0aGUgc2FtZSBwb2ludGVyIGlzIHVzZWQgdG8gYWNjZXNzIHRoZSB0cmllIAorICAgICAqIGRhdGEuCisJICogQGludGVybmFsCisJICovCisJcHVibGljIENoYXJUcmllIGdldEZDRFRyaWUoKXsKKwkJcmV0dXJuIGZjZFRyaWVJbXBsLmZjZFRyaWU7CisJfQorCisKKyAgICAKKyAgIC8qIGNvbXBhcmUgY2Fub25pY2FsbHkgZXF1aXZhbGVudCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKwkvKgorCSAqIENvbXBhcmUgdHdvIHN0cmluZ3MgZm9yIGNhbm9uaWNhbCBlcXVpdmFsZW5jZS4KKwkgKiBGdXJ0aGVyIG9wdGlvbnMgaW5jbHVkZSBjYXNlLWluc2Vuc2l0aXZlIGNvbXBhcmlzb24gYW5kCisJICogY29kZSBwb2ludCBvcmRlciAoYXMgb3Bwb3NlZCB0byBjb2RlIHVuaXQgb3JkZXIpLgorCSAqCisJICogSW4gdGhpcyBmdW5jdGlvbiwgY2Fub25pY2FsIGVxdWl2YWxlbmNlIGlzIG9wdGlvbmFsIGFzIHdlbGwuCisJICogSWYgY2Fub25pY2FsIGVxdWl2YWxlbmNlIGlzIHRlc3RlZCwgdGhlbiBib3RoIHN0cmluZ3MgbXVzdCBmdWxmaWxsCisJICogdGhlIEZDRCBjaGVjay4KKwkgKgorCSAqIFNlbWFudGljYWxseSwgdGhpcyBpcyBlcXVpdmFsZW50IHRvCisJICogICBzdHJjbXBbQ29kZVBvaW50T3JkZXJdKGZvbGRDYXNlKE5GRChzMSkpLCBmb2xkQ2FzZShORkQoczIpKSkKKwkgKiB3aGVyZSBjb2RlIHBvaW50IG9yZGVyLCBORkQgYW5kIGZvbGRDYXNlIGFyZSBhbGwgb3B0aW9uYWwuCisJICoKKwkgKiBTdHJpbmcgY29tcGFyaXNvbnMgYWxtb3N0IGFsd2F5cyB5aWVsZCByZXN1bHRzIGJlZm9yZSBwcm9jZXNzaW5nIGJvdGggCisgICAgICogc3RyaW5ncyBjb21wbGV0ZWx5LgorCSAqIFRoZXkgYXJlIGdlbmVyYWxseSBtb3JlIGVmZmljaWVudCB3b3JraW5nIGluY3JlbWVudGFsbHkgaW5zdGVhZCBvZgorCSAqIHBlcmZvcm1pbmcgdGhlIHN1Yi1wcm9jZXNzaW5nIChzdHJsZW4sIG5vcm1hbGl6YXRpb24sIGNhc2UtZm9sZGluZykKKwkgKiBvbiB0aGUgZW50aXJlIHN0cmluZ3MgZmlyc3QuCisJICoKKwkgKiBJdCBpcyBhbHNvIHVubmVjZXNzYXJ5IHRvIG5vdCBub3JtYWxpemUgaWRlbnRpY2FsIGNoYXJhY3RlcnMuCisJICoKKwkgKiBUaGlzIGZ1bmN0aW9uIHdvcmtzIGluIHByaW5jaXBsZSBhcyBmb2xsb3dzOgorCSAqCisJICogbG9vcCB7CisJICogICBnZXQgb25lIGNvZGUgdW5pdCBjMSBmcm9tIHMxICgtMSBpZiBlbmQgb2Ygc291cmNlKQorCSAqICAgZ2V0IG9uZSBjb2RlIHVuaXQgYzIgZnJvbSBzMiAoLTEgaWYgZW5kIG9mIHNvdXJjZSkKKwkgKgorCSAqICAgaWYoZWl0aGVyIHN0cmluZyBmaW5pc2hlZCkgeworCSAqICAgICByZXR1cm4gcmVzdWx0OworCSAqICAgfQorCSAqICAgaWYoYzE9PWMyKSB7CisJICogICAgIGNvbnRpbnVlOworCSAqICAgfQorCSAqCisJICogICAvLyBjMSE9YzIKKwkgKiAgIHRyeSB0byBkZWNvbXBvc2UvY2FzZS1mb2xkIGMxL2MyLCBhbmQgY29udGludWUgaWYgb25lIGRvZXM7CisJICoKKwkgKiAgIC8vIHN0aWxsIGMxIT1jMiBhbmQgbmVpdGhlciBkZWNvbXBvc2VzL2Nhc2UtZm9sZHMsIHJldHVybiByZXN1bHQKKwkgKiAgIHJldHVybiBjMS1jMjsKKwkgKiB9CisJICoKKwkgKiBXaGVuIGEgY2hhcmFjdGVyIGRlY29tcG9zZXMsIHRoZW4gdGhlIHBvaW50ZXIgZm9yIHRoYXQgc291cmNlIGNoYW5nZXMgdG8KKwkgKiB0aGUgZGVjb21wb3NpdGlvbiwgcHVzaGluZyB0aGUgcHJldmlvdXMgcG9pbnRlciBvbnRvIGEgc3RhY2suCisJICogV2hlbiB0aGUgZW5kIG9mIHRoZSBkZWNvbXBvc2l0aW9uIGlzIHJlYWNoZWQsIHRoZW4gdGhlIGNvZGUgdW5pdCByZWFkZXIKKwkgKiBwb3BzIHRoZSBwcmV2aW91cyBzb3VyY2UgZnJvbSB0aGUgc3RhY2suCisJICogKFNhbWUgZm9yIGNhc2UtZm9sZGluZy4pCisJICoKKwkgKiBUaGlzIGlzIGNvbXBsaWNhdGVkIGZ1cnRoZXIgYnkgb3BlcmF0aW5nIG9uIHZhcmlhYmxlLXdpZHRoIFVURi0xNi4KKwkgKiBUaGUgdG9wIHBhcnQgb2YgdGhlIGxvb3Agd29ya3Mgb24gY29kZSB1bml0cywgd2hpbGUgbG9va3VwcyBmb3IgZGVjb21wb3NpdGlvbgorCSAqIGFuZCBjYXNlLWZvbGRpbmcgbmVlZCBjb2RlIHBvaW50cy4KKwkgKiBDb2RlIHBvaW50cyBhcmUgYXNzZW1ibGVkIGFmdGVyIHRoZSBlcXVhbGl0eS9lbmQtb2Ytc291cmNlIHBhcnQuCisJICogVGhlIHNvdXJjZSBwb2ludGVyIGlzIG9ubHkgYWR2YW5jZWQgYmV5b25kIGFsbCBjb2RlIHVuaXRzIHdoZW4gdGhlIGNvZGUgcG9pbnQKKwkgKiBhY3R1YWxseSBkZWNvbXBvc2VzL2Nhc2UtZm9sZHMuCisJICoKKwkgKiBJZiB3ZSB3ZXJlIG9uIGEgdHJhaWwgc3Vycm9nYXRlIHVuaXQgd2hlbiBhc3NlbWJsaW5nIGEgY29kZSBwb2ludCwKKwkgKiBhbmQgdGhlIGNvZGUgcG9pbnQgZGVjb21wb3Nlcy9jYXNlLWZvbGRzLCB0aGVuIHRoZSBkZWNvbXBvc2l0aW9uL2ZvbGRpbmcKKwkgKiByZXN1bHQgbXVzdCBiZSBjb21wYXJlZCB3aXRoIHRoZSBwYXJ0IG9mIHRoZSBvdGhlciBzdHJpbmcgdGhhdCBjb3JyZXNwb25kcyB0bworCSAqIHRoaXMgc3RyaW5nJ3MgbGVhZCBzdXJyb2dhdGUuCisJICogU2luY2Ugd2Ugb25seSBhc3NlbWJsZSBhIGNvZGUgcG9pbnQgd2hlbiBoaXR0aW5nIGEgdHJhaWwgdW5pdCB3aGVuIHRoZQorCSAqIHByZWNlZGluZyBsZWFkIHVuaXRzIHdlcmUgaWRlbnRpY2FsLCB3ZSBiYWNrIHVwIHRoZSBvdGhlciBzdHJpbmcgYnkgb25lIHVuaXQKKwkgKiBpbiBzdWNoIGEgY2FzZS4KKwkgKgorCSAqIFRoZSBvcHRpb25hbCBjb2RlIHBvaW50IG9yZGVyIGNvbXBhcmlzb24gYXQgdGhlIGVuZCB3b3JrcyB3aXRoCisJICogdGhlIHNhbWUgZml4LXVwIGFzIHRoZSBvdGhlciBjb2RlIHBvaW50IG9yZGVyIGNvbXBhcmlzb24gZnVuY3Rpb25zLgorCSAqIFNlZSB1c3RyaW5nLmMgYW5kIHRoZSBjb21tZW50IG5lYXIgdGhlIGVuZCBvZiB0aGlzIGZ1bmN0aW9uLgorCSAqCisJICogQXNzdW1wdGlvbjogQSBkZWNvbXBvc2l0aW9uIG9yIGNhc2UtZm9sZGluZyByZXN1bHQgc3RyaW5nIG5ldmVyIGNvbnRhaW5zCisJICogYSBzaW5nbGUgc3Vycm9nYXRlLiBUaGlzIGlzIGEgc2FmZSBhc3N1bXB0aW9uIGluIHRoZSBVbmljb2RlIFN0YW5kYXJkLgorCSAqIFRoZXJlZm9yZSwgd2UgZG8gbm90IG5lZWQgdG8gY2hlY2sgZm9yIHN1cnJvZ2F0ZSBwYWlycyBhY3Jvc3MKKwkgKiBkZWNvbXBvc2l0aW9uL2Nhc2UtZm9sZGluZyBib3VuZGFyaWVzLgorCSAqIEZ1cnRoZXIgYXNzdW1wdGlvbnMgKHNlZSB2ZXJpZmljYXRpb25zIHRzdG5vcm0uY3BwKToKKwkgKiBUaGUgQVBJIGZ1bmN0aW9uIGNoZWNrcyBmb3IgRkNEIGZpcnN0LCB3aGlsZSB0aGUgY29yZSBmdW5jdGlvbgorCSAqIGZpcnN0IGNhc2UtZm9sZHMgYW5kIHRoZW4gZGVjb21wb3Nlcy4gVGhpcyByZXF1aXJlcyB0aGF0IGNhc2UtZm9sZGluZyBkb2VzIG5vdAorCSAqIHVuLUZDRCBhbnkgc3RyaW5ncy4KKwkgKgorCSAqIFRoZSBBUEkgZnVuY3Rpb24gbWF5IGFsc28gTkZEIHRoZSBpbnB1dCBhbmQgdHVybiBvZmYgZGVjb21wb3NpdGlvbi4KKwkgKiBUaGlzIHJlcXVpcmVzIHRoYXQgY2FzZS1mb2xkaW5nIGRvZXMgbm90IHVuLU5GRCBzdHJpbmdzIGVpdGhlci4KKwkgKgorCSAqIFRPRE8gSWYgYW55IG9mIHRoZSBhYm92ZSB0d28gYXNzdW1wdGlvbnMgaXMgdmlvbGF0ZWQsCisJICogdGhlbiB0aGlzIGVudGlyZSBjb2RlIG11c3QgYmUgcmUtdGhvdWdodC4KKwkgKiBJZiB0aGlzIGhhcHBlbnMsIHRoZW4gYSBzaW1wbGUgc29sdXRpb24gaXMgdG8gY2FzZS1mb2xkIGJvdGggc3RyaW5ncyB1cCBmcm9udAorCSAqIGFuZCB0byB0dXJuIG9mZiBVTk9STV9JTlBVVF9JU19GQ0QuCisJICogV2UgYWxyZWFkeSBkbyB0aGlzIHdoZW4gbm90IGJvdGggc3RyaW5ncyBhcmUgaW4gRkNEIGJlY2F1c2UgbWFrZUZDRAorCSAqIHdvdWxkIGJlIGEgcGFydGlhbCBORkQgYmVmb3JlIHRoZSBjYXNlIGZvbGRpbmcsIHdoaWNoIGRvZXMgbm90IHdvcmsuCisJICogTm90ZSB0aGF0IGFsbCBvZiB0aGlzIGlzIG9ubHkgYSBwcm9ibGVtIHdoZW4gY2FzZS1mb2xkaW5nIF9hbmRfCisJICogY2Fub25pY2FsIGVxdWl2YWxlbmNlIGNvbWUgdG9nZXRoZXIuCisgICAgICogCisJICogVGhpcyBmdW5jdGlvbiBjb3VsZCBiZSBtb3ZlZCB0byBhIGRpZmZlcmVudCBzb3VyY2UgZmlsZSwgYXQgaW5jcmVhc2VkIGNvc3QKKwkgKiBmb3IgY2FsbGluZyB0aGUgZGVjb21wb3NpdGlvbiBhY2Nlc3MgZnVuY3Rpb24uCisJICovCisJCisJLy8gc3RhY2sgZWxlbWVudCBmb3IgcHJldmlvdXMtbGV2ZWwgc291cmNlL2RlY29tcG9zaXRpb24gcG9pbnRlcnMKKwlwcml2YXRlIHN0YXRpYyBjbGFzcyBDbXBFcXVpdkxldmVsIHsKKyAgICAgICAgY2hhcltdIHNvdXJjZTsKKwkgICAgaW50IHN0YXJ0OworICAgICAgICBpbnQgczsKKyAgICAgICAgaW50IGxpbWl0OworCX0KKyAgICAKKwkvKioKKwkgKiBHZXQgdGhlIGNhbm9uaWNhbCBkZWNvbXBvc2l0aW9uIGZvciBvbmUgY29kZSBwb2ludC4KKwkgKiBAcGFyYW0gYyBjb2RlIHBvaW50CisJICogQHBhcmFtIGJ1ZmZlciBvdXQtb25seSBidWZmZXIgZm9yIGFsZ29yaXRobWljIGRlY29tcG9zaXRpb25zIG9mIEhhbmd1bAorCSAqIEBwYXJhbSBsZW5ndGggb3V0LW9ubHksIHRha2VzIHRoZSBsZW5ndGggb2YgdGhlIGRlY29tcG9zaXRpb24sIGlmIGFueQorCSAqIEByZXR1cm4gaW5kZXggaW50byB0aGUgZXh0cmFEYXRhIGFycmF5LCBvciAwIGlmIG5vbmUKKwkgKiBAaW50ZXJuYWwKKwkgKi8KKwkgcHJpdmF0ZSBzdGF0aWMgaW50IGRlY29tcG9zZShpbnQgYywgY2hhcltdIGJ1ZmZlcikgeworCSAgICAKKyAgICAgICAgbG9uZyBub3JtMzI7CisJICAgIGludCBsZW5ndGg9MDsKKwkgICAgbm9ybTMyID0gKGxvbmcpICgoVU5TSUdORURfSU5UX01BU0spICYgbm9ybVRyaWVJbXBsLm5vcm1UcmllLmdldENvZGVQb2ludFZhbHVlKGMpKTsKKwkgICAgaWYoKG5vcm0zMiAmIFFDX05GRCkhPTApIHsKKwkgICAgICAgIGlmKGlzTm9ybTMySGFuZ3VsT3JKYW1vKG5vcm0zMikpIHsKKwkgICAgICAgICAgICAvKiBIYW5ndWwgc3lsbGFibGU6IGRlY29tcG9zZSBhbGdvcml0aG1pY2FsbHkgKi8KKwkgICAgICAgICAgICBjaGFyIGMyOworCQorCSAgICAgICAgICAgIGMtPUhBTkdVTF9CQVNFOworCQorCSAgICAgICAgICAgIGMyPShjaGFyKShjJUpBTU9fVF9DT1VOVCk7CisJICAgICAgICAgICAgYy89SkFNT19UX0NPVU5UOworCSAgICAgICAgICAgIGlmKGMyPjApIHsKKwkgICAgICAgICAgICAgICAgYnVmZmVyWzJdPShjaGFyKShKQU1PX1RfQkFTRStjMik7CisJICAgICAgICAgICAgICAgIGxlbmd0aD0zOworCSAgICAgICAgICAgIH0gZWxzZSB7CisJICAgICAgICAgICAgICAgIGxlbmd0aD0yOworCSAgICAgICAgICAgIH0KKwkgICAgICAgICAgICBidWZmZXJbMV09KGNoYXIpKEpBTU9fVl9CQVNFK2MlSkFNT19WX0NPVU5UKTsKKwkgICAgICAgICAgICBidWZmZXJbMF09KGNoYXIpKEpBTU9fTF9CQVNFK2MvSkFNT19WX0NPVU5UKTsKKwkgICAgICAgICAgICByZXR1cm4gbGVuZ3RoOworCSAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAgICAvKiBub3JtYWwgZGVjb21wb3NpdGlvbiAqLworCSAgICAgICAgICAgIERlY29tcG9zZUFyZ3MgIGFyZ3MgPSBuZXcgRGVjb21wb3NlQXJncygpOworCSAgICAgICAgICAgIGludCBpbmRleCA9IGRlY29tcG9zZShub3JtMzIsIGFyZ3MpOworICAgICAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoZXh0cmFEYXRhLGluZGV4LGJ1ZmZlciwwLGFyZ3MubGVuZ3RoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYXJncy5sZW5ndGggOworCSAgICAgICAgfQorCSAgICB9IGVsc2UgeworCSAgICAgICAgcmV0dXJuIDA7CisJICAgIH0KKwl9CisKKyAgICBwcml2YXRlIHN0YXRpYyBpbnQgZm9sZENhc2UoaW50IGMsIGNoYXJbXSBkZXN0LCBpbnQgZGVzdFN0YXJ0LCBpbnQgZGVzdExpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gZGVmYXVsdE1hcHBpbmcpeworICAgICAgICBTdHJpbmcgc3JjID0gVVRGMTYudmFsdWVPZihjKTsKKyAgICAgICAgU3RyaW5nIGZvbGRlZFN0ciA9IFVDaGFyYWN0ZXIuZm9sZENhc2Uoc3JjLGRlZmF1bHRNYXBwaW5nKTsKKyAgICAgICAgY2hhcltdIGZvbGRlZEMgPSBmb2xkZWRTdHIudG9DaGFyQXJyYXkoKTsKKyAgICAgICAgZm9yKGludCBpPTA7aTxmb2xkZWRDLmxlbmd0aDtpKyspeworICAgICAgICAgICAgaWYoZGVzdFN0YXJ0PGRlc3RMaW1pdCl7CisgICAgICAgICAgICAgICAgZGVzdFtkZXN0U3RhcnRdPWZvbGRlZENbaV07CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBhbHdheXMgaW5jcmVtZW50IGRlc3RTdGFydCBzbyB0aGF0IHdlIGNhbiByZXR1cm4gCisgICAgICAgICAgICAvLyB0aGUgcmVxdWlyZWQgbGVuZ3RoCisgICAgICAgICAgICBkZXN0U3RhcnQrKzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKGM9PVVURjE2LmNoYXJBdChmb2xkZWRTdHIsMCkpID8gLWRlc3RTdGFydCA6IGRlc3RTdGFydDsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgaW50IGZvbGRDYXNlKGNoYXJbXSBzcmMsaW50IHNyY1N0YXJ0LGludCBzcmNMaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcltdIGRlc3QsIGludCBkZXN0U3RhcnQsIGludCBkZXN0TGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gZGVmYXVsdE1hcHBpbmcpeworICAgICAgICBTdHJpbmcgc291cmNlID1uZXcgU3RyaW5nKHNyYyxzcmNTdGFydCwoc3JjTGltaXQtc3JjU3RhcnQpKTsKKyAgICAgICAgU3RyaW5nIGZvbGRlZFN0ciA9IFVDaGFyYWN0ZXIuZm9sZENhc2Uoc291cmNlLGRlZmF1bHRNYXBwaW5nKTsKKyAgICAgICAgY2hhcltdIGZvbGRlZEMgPSBmb2xkZWRTdHIudG9DaGFyQXJyYXkoKTsKKyAgICAgICAgZm9yKGludCBpPTA7aTxmb2xkZWRDLmxlbmd0aDtpKyspeworICAgICAgICAgICAgaWYoZGVzdFN0YXJ0PGRlc3RMaW1pdCl7CisgICAgICAgICAgICAgICAgZGVzdFtkZXN0U3RhcnRdPWZvbGRlZENbaV07CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBhbHdheXMgaW5jcmVtZW50IGRlc3RTdGFydCBzbyB0aGF0IHdlIGNhbiByZXR1cm4gCisgICAgICAgICAgICAvLyB0aGUgcmVxdWlyZWQgbGVuZ3RoCisgICAgICAgICAgICBkZXN0U3RhcnQrKzsKKyAgICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIHJldHVybiBkZXN0U3RhcnQ7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgaW50IGNtcEVxdWl2Rm9sZChTdHJpbmcgczEsIFN0cmluZyBzMixpbnQgb3B0aW9ucyl7CisgICAgICAgIHJldHVybiBjbXBFcXVpdkZvbGQoczEudG9DaGFyQXJyYXkoKSwwLHMxLmxlbmd0aCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMyLnRvQ2hhckFycmF5KCksMCxzMi5sZW5ndGgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zKTsKKyAgICB9CisgICAgCisgICAgCisJLy8gaW50ZXJuYWwgZnVuY3Rpb24KKyAgICBwdWJsaWMgc3RhdGljIGludCBjbXBFcXVpdkZvbGQoY2hhcltdIHMxLCBpbnQgczFTdGFydCxpbnQgczFMaW1pdCwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcltdIHMyLCBpbnQgczJTdGFydCxpbnQgczJMaW1pdCwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9wdGlvbnMpIHsKKwkgICAgLy8gY3VycmVudC1sZXZlbCBzdGFydC9saW1pdCAtIHMxL3MyIGFzIGN1cnJlbnQKKwkgICAgaW50IHN0YXJ0MSwgc3RhcnQyLCBsaW1pdDEsIGxpbWl0MjsKKwkgICAgY2hhcltdIGNTb3VyY2UxLCBjU291cmNlMjsKKyAgICAgICAgCisgICAgICAgIGNTb3VyY2UxID0gczE7CisgICAgICAgIGNTb3VyY2UyID0gczI7CisJICAgIC8vIGRlY29tcG9zaXRpb24gdmFyaWFibGVzCisJICAgIGludCBsZW5ndGg7CisJCisJICAgIC8vIHN0YWNrcyBvZiBwcmV2aW91cy1sZXZlbCBzdGFydC9jdXJyZW50L2xpbWl0CisJICAgIENtcEVxdWl2TGV2ZWxbXSBzdGFjazEgPSBuZXcgQ21wRXF1aXZMZXZlbFtdeyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgQ21wRXF1aXZMZXZlbCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBDbXBFcXVpdkxldmVsKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgQ21wRXF1aXZMZXZlbFtdIHN0YWNrMiA9IG5ldyBDbXBFcXVpdkxldmVsW117IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBDbXBFcXVpdkxldmVsKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IENtcEVxdWl2TGV2ZWwoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OworCQorCSAgICAvLyBkZWNvbXBvc2l0aW9uIGJ1ZmZlcnMgZm9yIEhhbmd1bAorCSAgICBjaGFyW10gZGVjb21wMSA9IG5ldyBjaGFyWzhdOworICAgICAgICBjaGFyW10gZGVjb21wMiA9IG5ldyBjaGFyWzhdOworCQorCSAgICAvLyBjYXNlIGZvbGRpbmcgYnVmZmVycywgb25seSB1c2UgY3VycmVudC1sZXZlbCBzdGFydC9saW1pdAorCSAgICBjaGFyW10gZm9sZDEgPSBuZXcgY2hhclszMl07CisgICAgICAgIGNoYXJbXSBmb2xkMiA9IG5ldyBjaGFyWzMyXTsKKwkKKwkgICAgLy8gdHJhY2sgd2hpY2ggaXMgdGhlIGN1cnJlbnQgbGV2ZWwgcGVyIHN0cmluZworCSAgICBpbnQgbGV2ZWwxLCBsZXZlbDI7CisJCisJICAgIC8vIGN1cnJlbnQgY29kZSB1bml0cywgYW5kIGNvZGUgcG9pbnRzIGZvciBsb29rdXBzCisJICAgIGludCBjMSwgYzI7CisgICAgICAgIGludCBjcDEsIGNwMjsKKwkKKwkgICAgLy8gbm8gYXJndW1lbnQgZXJyb3IgY2hlY2tpbmcgYmVjYXVzZSB0aGlzIGl0c2VsZiBpcyBub3QgYW4gQVBJCisJCisJICAgIC8vIGFzc3VtZSB0aGF0IGF0IGxlYXN0IG9uZSBvZiB0aGUgb3B0aW9ucyBDT01QQVJFX0VRVUlWIGFuZCAKKyAgICAgICAgLy8gQ09NUEFSRV9JR05PUkVfQ0FTRSBpcyBzZXQKKwkgICAgLy8gb3RoZXJ3aXNlIHRoaXMgZnVuY3Rpb24gbXVzdCBiZWhhdmUgZXhhY3RseSBhcyB1cHJ2X3N0ckNvbXBhcmUoKQorCSAgICAvLyBub3QgY2hlY2tpbmcgZm9yIHRoYXQgaGVyZSBtYWtlcyB0ZXN0aW5nIHRoaXMgZnVuY3Rpb24gZWFzaWVyCisKKwkKKwkgICAgLy8gaW5pdGlhbGl6ZQorCSAgICBzdGFydDE9czFTdGFydDsKKwkgICAgbGltaXQxPXMxTGltaXQ7CisJICAgIAorCSAgICBzdGFydDI9czJTdGFydDsKKwkgICAgbGltaXQyPXMyTGltaXQ7CisJICAgIAorCSAgICBsZXZlbDE9bGV2ZWwyPTA7CisJICAgIGMxPWMyPS0xOworCSAgICBjcDE9Y3AyPS0xOworCSAgICAvLyBjb21wYXJpc29uIGxvb3AKKwkgICAgZm9yKDs7KSB7CisJICAgICAgICAvLyBoZXJlIGEgY29kZSB1bml0IHZhbHVlIG9mIC0xIG1lYW5zICJnZXQgYW5vdGhlciBjb2RlIHVuaXQiCisJICAgICAgICAvLyBiZWxvdyBpdCB3aWxsIG1lYW4gInRoaXMgc291cmNlIGlzIGZpbmlzaGVkIgorCQorCSAgICAgICAgaWYoYzE8MCkgeworCSAgICAgICAgICAgIC8vIGdldCBuZXh0IGNvZGUgdW5pdCBmcm9tIHN0cmluZyAxLCBwb3N0LWluY3JlbWVudAorCSAgICAgICAgICAgIGZvcig7OykgeworCSAgICAgICAgICAgICAgICBpZihzMVN0YXJ0Pj1saW1pdDEpIHsKKwkgICAgICAgICAgICAgICAgICAgIGlmKGxldmVsMT09MCkgeworCSAgICAgICAgICAgICAgICAgICAgICAgIGMxPS0xOworCSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgYzE9Y1NvdXJjZTFbczFTdGFydF07CisJICAgICAgICAgICAgICAgICAgICArK3MxU3RhcnQ7CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgfQorCQorCSAgICAgICAgICAgICAgICAvLyByZWFjaGVkIGVuZCBvZiBsZXZlbCBidWZmZXIsIHBvcCBvbmUgbGV2ZWwKKwkgICAgICAgICAgICAgICAgZG8geworCSAgICAgICAgICAgICAgICAgICAgLS1sZXZlbDE7CisJICAgICAgICAgICAgICAgICAgICBzdGFydDE9c3RhY2sxW2xldmVsMV0uc3RhcnQ7CisJICAgICAgICAgICAgICAgIH0gd2hpbGUoc3RhcnQxPT0tMSk7IC8vIyMjIyMjIGNoZWNrIHRoaXMKKwkgICAgICAgICAgICAgICAgczFTdGFydD1zdGFjazFbbGV2ZWwxXS5zOworCSAgICAgICAgICAgICAgICBsaW1pdDE9c3RhY2sxW2xldmVsMV0ubGltaXQ7CisgICAgICAgICAgICAgICAgICAgIGNTb3VyY2UxPXN0YWNrMVtsZXZlbDFdLnNvdXJjZTsKKwkgICAgICAgICAgICB9CisJICAgICAgICB9CisJCisJICAgICAgICBpZihjMjwwKSB7CisJICAgICAgICAgICAgLy8gZ2V0IG5leHQgY29kZSB1bml0IGZyb20gc3RyaW5nIDIsIHBvc3QtaW5jcmVtZW50CisJICAgICAgICAgICAgZm9yKDs7KSB7ICAgICAgICAgICAgICAgICAgICAKKwkgICAgICAgICAgICAgICAgaWYoczJTdGFydD49bGltaXQyKSB7CisJICAgICAgICAgICAgICAgICAgICBpZihsZXZlbDI9PTApIHsKKwkgICAgICAgICAgICAgICAgICAgICAgICBjMj0tMTsKKwkgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMyPWNTb3VyY2UyW3MyU3RhcnRdOworCSAgICAgICAgICAgICAgICAgICAgKytzMlN0YXJ0OworCSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIH0KKwkKKwkgICAgICAgICAgICAgICAgLy8gcmVhY2hlZCBlbmQgb2YgbGV2ZWwgYnVmZmVyLCBwb3Agb25lIGxldmVsCisJICAgICAgICAgICAgICAgIGRvIHsKKwkgICAgICAgICAgICAgICAgICAgIC0tbGV2ZWwyOworCSAgICAgICAgICAgICAgICAgICAgc3RhcnQyPXN0YWNrMltsZXZlbDJdLnN0YXJ0OworCSAgICAgICAgICAgICAgICB9IHdoaWxlKHN0YXJ0Mj09LTEpOworCSAgICAgICAgICAgICAgICBzMlN0YXJ0PXN0YWNrMltsZXZlbDJdLnM7CisJICAgICAgICAgICAgICAgIGxpbWl0Mj1zdGFjazJbbGV2ZWwyXS5saW1pdDsKKyAgICAgICAgICAgICAgICAgICAgY1NvdXJjZTI9c3RhY2syW2xldmVsMl0uc291cmNlOworCSAgICAgICAgICAgIH0KKwkgICAgICAgIH0KKwkKKwkgICAgICAgIC8vIGNvbXBhcmUgYzEgYW5kIGMyCisJICAgICAgICAvLyBlaXRoZXIgdmFyaWFibGUgYzEsIGMyIGlzIC0xIG9ubHkgaWYgdGhlIGNvcnJlc3BvbmRpbmcgc3RyaW5nIAorICAgICAgICAgICAgLy8gaXMgZmluaXNoZWQKKwkgICAgICAgIGlmKGMxPT1jMikgeworCSAgICAgICAgICAgIGlmKGMxPDApIHsKKwkgICAgICAgICAgICAgICAgcmV0dXJuIDA7ICAgLy8gYzE9PWMyPT0tMSBpbmRpY2F0aW5nIGVuZCBvZiBzdHJpbmdzCisJICAgICAgICAgICAgfQorCSAgICAgICAgICAgIGMxPWMyPS0xOyAgICAgICAvLyBtYWtlIHVzIGZldGNoIG5ldyBjb2RlIHVuaXRzCisJICAgICAgICAgICAgY29udGludWU7CisJICAgICAgICB9IGVsc2UgaWYoYzE8MCkgeworCSAgICAgICAgICAgIHJldHVybiAtMTsgICAgICAvLyBzdHJpbmcgMSBlbmRzIGJlZm9yZSBzdHJpbmcgMgorCSAgICAgICAgfSBlbHNlIGlmKGMyPDApIHsKKwkgICAgICAgICAgICByZXR1cm4gMTsgICAgICAgLy8gc3RyaW5nIDIgZW5kcyBiZWZvcmUgc3RyaW5nIDEKKwkgICAgICAgIH0KKwkgICAgICAgIC8vIGMxIT1jMiAmJiBjMT49MCAmJiBjMj49MAorCQorCSAgICAgICAgLy8gZ2V0IGNvbXBsZXRlIGNvZGUgcG9pbnRzIGZvciBjMSwgYzIgZm9yIGxvb2t1cHMgaWYgZWl0aGVyIGlzIGEgCisgICAgICAgICAgICAvLyBzdXJyb2dhdGUKKyAgICAgICAgICAgIGNwMT1jMTsKKwkgICAgICAgIGlmKFVURjE2LmlzU3Vycm9nYXRlKChjaGFyKWMxKSkgeyAKKwkgICAgICAgICAgICBjaGFyIGM7CisJCisJICAgICAgICAgICAgaWYoVVRGMTYuaXNMZWFkU3Vycm9nYXRlKChjaGFyKWMxKSkgeworCSAgICAgICAgICAgICAgICBpZiggICAgczFTdGFydCE9bGltaXQxICYmIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVVRGMTYuaXNUcmFpbFN1cnJvZ2F0ZShjPWNTb3VyY2UxW3MxU3RhcnRdKQorICAgICAgICAgICAgICAgICAgICAgICkgeworCSAgICAgICAgICAgICAgICAgICAgLy8gYWR2YW5jZSArK3MxOyBvbmx5IGJlbG93IGlmIGNwMSBkZWNvbXBvc2VzL2Nhc2UtZm9sZHMKKwkgICAgICAgICAgICAgICAgICAgIGNwMT1VQ2hhcmFjdGVyUHJvcGVydHkuZ2V0UmF3U3VwcGxlbWVudGFyeSgoY2hhciljMSwgYyk7CisJICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICB9IGVsc2UgLyogaXNUcmFpbChjMSkgKi8geworCSAgICAgICAgICAgICAgICBpZiggICAgc3RhcnQxPD0oczFTdGFydC0yKSAmJiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVVEYxNi5pc0xlYWRTdXJyb2dhdGUoYz1jU291cmNlMVsoczFTdGFydC0yKV0pCisgICAgICAgICAgICAgICAgICAgICAgKSB7CisJICAgICAgICAgICAgICAgICAgICBjcDE9VUNoYXJhY3RlclByb3BlcnR5LmdldFJhd1N1cHBsZW1lbnRhcnkoYywgKGNoYXIpYzEpOworCSAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgfQorCSAgICAgICAgfQorCSAgICAgICAgY3AyPWMyOworCSAgICAgICAgaWYoVVRGMTYuaXNTdXJyb2dhdGUoKGNoYXIpYzIpKSB7CisJICAgICAgICAgICAgY2hhciBjOworCQorCSAgICAgICAgICAgIGlmKFVURjE2LmlzTGVhZFN1cnJvZ2F0ZSgoY2hhciljMikpIHsKKwkgICAgICAgICAgICAgICAgaWYoICAgIHMyU3RhcnQhPWxpbWl0MiAmJiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFVURjE2LmlzVHJhaWxTdXJyb2dhdGUoYz1jU291cmNlMltzMlN0YXJ0XSkKKyAgICAgICAgICAgICAgICAgICAgICApIHsKKwkgICAgICAgICAgICAgICAgICAgIC8vIGFkdmFuY2UgKytzMjsgb25seSBiZWxvdyBpZiBjcDIgZGVjb21wb3Nlcy9jYXNlLWZvbGRzCisJICAgICAgICAgICAgICAgICAgICBjcDI9VUNoYXJhY3RlclByb3BlcnR5LmdldFJhd1N1cHBsZW1lbnRhcnkoKGNoYXIpYzIsIGMpOworCSAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgfSBlbHNlIC8qIGlzVHJhaWwoYzIpICovIHsKKwkgICAgICAgICAgICAgICAgaWYoICAgIHN0YXJ0Mjw9KHMyU3RhcnQtMikgJiYgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVVRGMTYuaXNMZWFkU3Vycm9nYXRlKGM9Y1NvdXJjZTJbczJTdGFydC0yXSkKKyAgICAgICAgICAgICAgICAgICAgICApIHsKKwkgICAgICAgICAgICAgICAgICAgIGNwMj1VQ2hhcmFjdGVyUHJvcGVydHkuZ2V0UmF3U3VwcGxlbWVudGFyeShjLCAoY2hhciljMik7CisJICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICB9CisJICAgICAgICB9CisJCisJICAgICAgICAvLyBnbyBkb3duIG9uZSBsZXZlbCBmb3IgZWFjaCBzdHJpbmcKKwkgICAgICAgIC8vIGNvbnRpbnVlIHdpdGggdGhlIG1haW4gbG9vcCBhcyBzb29uIGFzIHRoZXJlIGlzIGEgcmVhbCBjaGFuZ2UKKwkgICAgICAgIGlmKCBsZXZlbDE8MiAmJiAoKG9wdGlvbnMgJiBOb3JtYWxpemVyLkNPTVBBUkVfSUdOT1JFX0NBU0UpIT0wKSYmCisgICAgICAgICAgICAgICAgKGxlbmd0aD1mb2xkQ2FzZShjcDEsIGZvbGQxLCAwLDMyLCAoKG9wdGlvbnMmTm9ybWFsaXplci5GT0xEX0NBU0VfRVhDTFVERV9TUEVDSUFMX0kpPT0wKSkpPj0wCisgICAgICAgICAgICApIHsKKyAgICAgICAgICAgICAgICAvLyBjcDEgY2FzZS1mb2xkcyB0byBmb2xkMVtsZW5ndGhdCisgICAgICAgICAgICAgICAgaWYoVVRGMTYuaXNTdXJyb2dhdGUoKGNoYXIpYzEpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmKFVURjE2LmlzTGVhZFN1cnJvZ2F0ZSgoY2hhciljMSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFkdmFuY2UgYmV5b25kIHNvdXJjZSBzdXJyb2dhdGUgcGFpciBpZiBpdCAKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UtZm9sZHMKKyAgICAgICAgICAgICAgICAgICAgICAgICsrczFTdGFydDsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIC8qIGlzVHJhaWwoYzEpICovIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdlIGdvdCBhIHN1cHBsZW1lbnRhcnkgY29kZSBwb2ludCB3aGVuIGhpdHRpbmcgaXRzIAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJhaWwgc3Vycm9nYXRlLCB0aGVyZWZvcmUgdGhlIGxlYWQgc3Vycm9nYXRlIG11c3QgCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBoYXZlIGJlZW4gdGhlIHNhbWUgYXMgaW4gdGhlIG90aGVyIHN0cmluZzsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbXBhcmUgdGhpcyBkZWNvbXBvc2l0aW9uIHdpdGggdGhlIGxlYWQgc3Vycm9nYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbiB0aGUgb3RoZXIgc3RyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAtLXMyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgICAgICBjMj1jU291cmNlMlsoczJTdGFydC0xKV07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgCisgICAgICAgICAgICAgICAgLy8gcHVzaCBjdXJyZW50IGxldmVsIHBvaW50ZXJzCisgICAgICAgICAgICAgICAgc3RhY2sxWzBdLnN0YXJ0PXN0YXJ0MTsKKyAgICAgICAgICAgICAgICBzdGFjazFbMF0ucz1zMVN0YXJ0OworICAgICAgICAgICAgICAgIHN0YWNrMVswXS5saW1pdD1saW1pdDE7CisgICAgICAgICAgICAgICAgc3RhY2sxWzBdLnNvdXJjZT1jU291cmNlMTsKKyAgICAgICAgICAgICAgICArK2xldmVsMTsKKyAgICAKKyAgICAgICAgICAgICAgICBjU291cmNlMSA9IGZvbGQxOworICAgICAgICAgICAgICAgIHN0YXJ0MT1zMVN0YXJ0PTA7CisgICAgICAgICAgICAgICAgbGltaXQxPWxlbmd0aDsKKyAgICAKKyAgICAgICAgICAgICAgICAvLyBnZXQgcmVhZHkgdG8gcmVhZCBmcm9tIGRlY29tcG9zaXRpb24sIGNvbnRpbnVlIHdpdGggbG9vcAorICAgICAgICAgICAgICAgIGMxPS0xOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgaWYoIGxldmVsMjwyICYmICgob3B0aW9ucyYgTm9ybWFsaXplci5DT01QQVJFX0lHTk9SRV9DQVNFKSE9MCkgJiYKKyAgICAgICAgICAgICAgICAobGVuZ3RoPWZvbGRDYXNlKGNwMiwgZm9sZDIsMCwzMiwgKChvcHRpb25zJk5vcm1hbGl6ZXIuRk9MRF9DQVNFX0VYQ0xVREVfU1BFQ0lBTF9JKT09MCkpKT49MAorICAgICAgICAgICAgKSB7CisgICAgICAgICAgICAgICAgLy8gY3AyIGNhc2UtZm9sZHMgdG8gZm9sZDJbbGVuZ3RoXQorICAgICAgICAgICAgICAgIGlmKFVURjE2LmlzU3Vycm9nYXRlKChjaGFyKWMyKSkgeworICAgICAgICAgICAgICAgICAgICBpZihVVEYxNi5pc0xlYWRTdXJyb2dhdGUoKGNoYXIpYzIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBhZHZhbmNlIGJleW9uZCBzb3VyY2Ugc3Vycm9nYXRlIHBhaXIgaWYgaXQgCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlLWZvbGRzCisgICAgICAgICAgICAgICAgICAgICAgICArK3MyU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSAvKiBpc1RyYWlsKGMyKSAqLyB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSBnb3QgYSBzdXBwbGVtZW50YXJ5IGNvZGUgcG9pbnQgd2hlbiBoaXR0aW5nIGl0cyAKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyYWlsIHN1cnJvZ2F0ZSwgdGhlcmVmb3JlIHRoZSBsZWFkIHN1cnJvZ2F0ZSBtdXN0IAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGF2ZSBiZWVuIHRoZSBzYW1lIGFzIGluIHRoZSBvdGhlciBzdHJpbmc7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb21wYXJlIHRoaXMgZGVjb21wb3NpdGlvbiB3aXRoIHRoZSBsZWFkIHN1cnJvZ2F0ZSAKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluIHRoZSBvdGhlciBzdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIC0tczFTdGFydDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMxPWNTb3VyY2UxWyhzMVN0YXJ0LTEpXTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgICAgICAvLyBwdXNoIGN1cnJlbnQgbGV2ZWwgcG9pbnRlcnMKKyAgICAgICAgICAgICAgICBzdGFjazJbMF0uc3RhcnQ9c3RhcnQyOworICAgICAgICAgICAgICAgIHN0YWNrMlswXS5zPXMyU3RhcnQ7CisgICAgICAgICAgICAgICAgc3RhY2syWzBdLmxpbWl0PWxpbWl0MjsKKyAgICAgICAgICAgICAgICBzdGFjazJbMF0uc291cmNlPWNTb3VyY2UyOworICAgICAgICAgICAgICAgICsrbGV2ZWwyOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGNTb3VyY2UyID0gZm9sZDI7CisgICAgICAgICAgICAgICAgc3RhcnQyPXMyU3RhcnQ9MDsKKyAgICAgICAgICAgICAgICBsaW1pdDI9bGVuZ3RoOworICAgIAorICAgICAgICAgICAgICAgIC8vIGdldCByZWFkeSB0byByZWFkIGZyb20gZGVjb21wb3NpdGlvbiwgY29udGludWUgd2l0aCBsb29wCisgICAgICAgICAgICAgICAgYzI9LTE7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKwkgICAgICAgIGlmKCBsZXZlbDE8MiAmJiAoKG9wdGlvbnMmQ09NUEFSRV9FUVVJVikhPTApICYmCisJICAgICAgICAgICAgMCE9KGxlbmd0aD1kZWNvbXBvc2UoY3AxLGRlY29tcDEpKQorCSAgICAgICAgKSB7CisJICAgICAgICAgICAgLy8gY3AxIGRlY29tcG9zZXMgaW50byBwW2xlbmd0aF0KKwkgICAgICAgICAgICBpZihVVEYxNi5pc1N1cnJvZ2F0ZSgoY2hhciljMSkpIHsKKwkgICAgICAgICAgICAgICAgaWYoVVRGMTYuaXNMZWFkU3Vycm9nYXRlKChjaGFyKWMxKSkgeworCSAgICAgICAgICAgICAgICAgICAgLy8gYWR2YW5jZSBiZXlvbmQgc291cmNlIHN1cnJvZ2F0ZSBwYWlyIGlmIGl0IAorICAgICAgICAgICAgICAgICAgICAgICAgLy9kZWNvbXBvc2VzCisJICAgICAgICAgICAgICAgICAgICArK3MxU3RhcnQ7CisJICAgICAgICAgICAgICAgIH0gZWxzZSAvKiBpc1RyYWlsKGMxKSAqLyB7CisJICAgICAgICAgICAgICAgICAgICAvLyB3ZSBnb3QgYSBzdXBwbGVtZW50YXJ5IGNvZGUgcG9pbnQgd2hlbiBoaXR0aW5nIAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXRzIHRyYWlsIHN1cnJvZ2F0ZSwgdGhlcmVmb3JlIHRoZSBsZWFkIHN1cnJvZ2F0ZSAKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIG11c3QgaGF2ZSBiZWVuIHRoZSBzYW1lIGFzIGluIHRoZSBvdGhlciBzdHJpbmc7CisJICAgICAgICAgICAgICAgICAgICAvLyBjb21wYXJlIHRoaXMgZGVjb21wb3NpdGlvbiB3aXRoIHRoZSBsZWFkIHN1cnJvZ2F0ZSAKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluIHRoZSBvdGhlciBzdHJpbmcKKwkgICAgICAgICAgICAgICAgICAgIC0tczJTdGFydDsKKwkgICAgICAgICAgICAgICAgICAgIGMyPWNTb3VyY2UyWyhzMlN0YXJ0LTEpXTsKKwkgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgIH0KKwkKKwkgICAgICAgICAgICAvLyBwdXNoIGN1cnJlbnQgbGV2ZWwgcG9pbnRlcnMKKyAgICAgICAgICAgICAgICBzdGFjazFbbGV2ZWwxXS5zdGFydD1zdGFydDE7CisJICAgICAgICAgICAgc3RhY2sxW2xldmVsMV0ucz1zMVN0YXJ0OworCSAgICAgICAgICAgIHN0YWNrMVtsZXZlbDFdLmxpbWl0PWxpbWl0MTsKKyAgICAgICAgICAgICAgICBzdGFjazFbbGV2ZWwxXS5zb3VyY2U9Y1NvdXJjZTE7CisJICAgICAgICAgICAgKytsZXZlbDE7CisJCisJICAgICAgICAgICAgLy8gc2V0IG5leHQgbGV2ZWwgcG9pbnRlcnMgdG8gZGVjb21wb3NpdGlvbgorCSAgICAgICAgICAgIGNTb3VyY2UxID0gZGVjb21wMTsKKyAgICAgICAgICAgICAgICBzdGFydDE9czFTdGFydD0wOworCSAgICAgICAgICAgIGxpbWl0MT1sZW5ndGg7CisJICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gc2V0IGVtcHR5IGludGVybWVkaWF0ZSBsZXZlbCBpZiBza2lwcGVkCisgICAgICAgICAgICAgICAgaWYobGV2ZWwxPDIpIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhY2sxW2xldmVsMSsrXS5zdGFydD0tMTsKKyAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgLy8gZ2V0IHJlYWR5IHRvIHJlYWQgZnJvbSBkZWNvbXBvc2l0aW9uLCBjb250aW51ZSB3aXRoIGxvb3AKKwkgICAgICAgICAgICBjMT0tMTsKKwkgICAgICAgICAgICBjb250aW51ZTsKKwkgICAgICAgIH0KKwkKKwkgICAgICAgIGlmKCBsZXZlbDI8MiAmJiAoKG9wdGlvbnMmQ09NUEFSRV9FUVVJVikhPTApICYmCisJICAgICAgICAgICAgMCE9KGxlbmd0aD1kZWNvbXBvc2UoY3AyLCBkZWNvbXAyKSkKKwkgICAgICAgICkgeworCSAgICAgICAgICAgIC8vIGNwMiBkZWNvbXBvc2VzIGludG8gcFtsZW5ndGhdCisJICAgICAgICAgICAgaWYoVVRGMTYuaXNTdXJyb2dhdGUoKGNoYXIpYzIpKSB7CisJICAgICAgICAgICAgICAgIGlmKFVURjE2LmlzTGVhZFN1cnJvZ2F0ZSgoY2hhciljMikpIHsKKwkgICAgICAgICAgICAgICAgICAgIC8vIGFkdmFuY2UgYmV5b25kIHNvdXJjZSBzdXJyb2dhdGUgcGFpciBpZiBpdCAKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlY29tcG9zZXMKKwkgICAgICAgICAgICAgICAgICAgICsrczJTdGFydDsKKwkgICAgICAgICAgICAgICAgfSBlbHNlIC8qIGlzVHJhaWwoYzIpICovIHsKKwkgICAgICAgICAgICAgICAgICAgIC8vIHdlIGdvdCBhIHN1cHBsZW1lbnRhcnkgY29kZSBwb2ludCB3aGVuIGhpdHRpbmcgaXRzIAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJhaWwgc3Vycm9nYXRlLCB0aGVyZWZvcmUgdGhlIGxlYWQgc3Vycm9nYXRlIG11c3QgCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBoYXZlIGJlZW4gdGhlIHNhbWUgYXMgaW4gdGhlIG90aGVyIHN0cmluZzsKKwkgICAgICAgICAgICAgICAgICAgIC8vIGNvbXBhcmUgdGhpcyBkZWNvbXBvc2l0aW9uIHdpdGggdGhlIGxlYWQgc3Vycm9nYXRlIAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW4gdGhlIG90aGVyIHN0cmluZworCSAgICAgICAgICAgICAgICAgICAgLS1zMVN0YXJ0OworCSAgICAgICAgICAgICAgICAgICAgYzE9Y1NvdXJjZTFbKHMxU3RhcnQtMSldOworCSAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgfQorCQorCSAgICAgICAgICAgIC8vIHB1c2ggY3VycmVudCBsZXZlbCBwb2ludGVycworCSAgICAgICAgICAgIHN0YWNrMltsZXZlbDJdLnN0YXJ0PXN0YXJ0MjsKKwkgICAgICAgICAgICBzdGFjazJbbGV2ZWwyXS5zPXMyU3RhcnQ7CisJICAgICAgICAgICAgc3RhY2syW2xldmVsMl0ubGltaXQ9bGltaXQyOworICAgICAgICAgICAgICAgIHN0YWNrMltsZXZlbDJdLnNvdXJjZT1jU291cmNlMjsKKwkgICAgICAgICAgICArK2xldmVsMjsKKwkKKwkgICAgICAgICAgICAvLyBzZXQgbmV4dCBsZXZlbCBwb2ludGVycyB0byBkZWNvbXBvc2l0aW9uCisJICAgICAgICAgICAgY1NvdXJjZTI9ZGVjb21wMjsKKyAgICAgICAgICAgICAgICBzdGFydDI9czJTdGFydD0wOworCSAgICAgICAgICAgIGxpbWl0Mj1sZW5ndGg7CisJICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gc2V0IGVtcHR5IGludGVybWVkaWF0ZSBsZXZlbCBpZiBza2lwcGVkCisgICAgICAgICAgICAgICAgaWYobGV2ZWwyPDIpIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhY2syW2xldmVsMisrXS5zdGFydD0tMTsKKyAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gZ2V0IHJlYWR5IHRvIHJlYWQgZnJvbSBkZWNvbXBvc2l0aW9uLCBjb250aW51ZSB3aXRoIGxvb3AKKwkgICAgICAgICAgICBjMj0tMTsKKwkgICAgICAgICAgICBjb250aW51ZTsKKwkgICAgICAgIH0KKwkKKwkKKwkgICAgICAgIC8vIG5vIGRlY29tcG9zaXRpb24vY2FzZSBmb2xkaW5nLCBtYXggbGV2ZWwgZm9yIGJvdGggc2lkZXM6CisJICAgICAgICAvLyByZXR1cm4gZGlmZmVyZW5jZSByZXN1bHQKKwkKKwkgICAgICAgIC8vIGNvZGUgcG9pbnQgb3JkZXIgY29tcGFyaXNvbiBtdXN0IG5vdCBqdXN0IHJldHVybiBjcDEtY3AyCisJICAgICAgICAvLyBiZWNhdXNlIHdoZW4gc2luZ2xlIHN1cnJvZ2F0ZXMgYXJlIHByZXNlbnQgdGhlbiB0aGUgc3Vycm9nYXRlIAorCSAgICAgICAgLy8gcGFpcnMgdGhhdCBmb3JtZWQgY3AxIGFuZCBjcDIgbWF5IGJlIGZyb20gZGlmZmVyZW50IHN0cmluZyAKKyAgICAgICAgICAgIC8vIGluZGV4ZXMKKwkKKwkgICAgICAgIC8vIGV4YW1wbGU6IHsgZDgwMCBkODAwIGRjMDEgfSB2cy4geyBkODAwIGRjMDAgfSwgY29tcGFyZSBhdCAKKyAgICAgICAgICAgIC8vIHNlY29uZCBjb2RlIHVuaXRzCisJICAgICAgICAvLyBjMT1kODAwIGNwMT0xMDAwMSBjMj1kYzAwIGNwMj0xMDAwMAorCSAgICAgICAgLy8gY3AxLWNwMj4wIGJ1dCBjMS1jMjwwIGFuZCBpbiBmYWN0IGluIFVURi0zMiAKKyAgICAgICAgICAgIC8vIGl0IGlzIHsgZDgwMCAxMDAwMSB9IDwgeyAxMDAwMCB9CisJICAgICAgICAvLyB0aGVyZWZvcmUgZml4LXVwIAorCQorCSAgICAgICAgaWYoICAgICBjMT49MHhkODAwICYmIGMyPj0weGQ4MDAgJiYgCisgICAgICAgICAgICAgICAgICAgICgob3B0aW9ucyZOb3JtYWxpemVyLkNPTVBBUkVfQ09ERV9QT0lOVF9PUkRFUikhPTApCisgICAgICAgICAgICAgICkgeworCSAgICAgICAgICAgIC8qIHN1YnRyYWN0IDB4MjgwMCBmcm9tIEJNUCBjb2RlIHBvaW50cyB0byBtYWtlIHRoZW0gc21hbGxlciAKKyAgICAgICAgICAgICAgICAgKiB0aGFuIHN1cHBsZW1lbnRhcnkgb25lcyAqLworCSAgICAgICAgICAgIGlmKAorCSAgICAgICAgICAgICAgICAoICAgIGMxPD0weGRiZmYgJiYgczFTdGFydCE9bGltaXQxIAorICAgICAgICAgICAgICAgICAgICAgICAgICYmIAorICAgICAgICAgICAgICAgICAgICAgICAgIFVURjE2LmlzVHJhaWxTdXJyb2dhdGUoY1NvdXJjZTFbczFTdGFydF0pCisgICAgICAgICAgICAgICAgICAgICkgCisgICAgICAgICAgICAgICAgICAgICB8fAorCSAgICAgICAgICAgICAgICAoICAgIFVURjE2LmlzVHJhaWxTdXJyb2dhdGUoKGNoYXIpYzEpICYmIHN0YXJ0MSE9KHMxU3RhcnQtMSkgCisgICAgICAgICAgICAgICAgICAgICAgICAgJiYgCisgICAgICAgICAgICAgICAgICAgICAgICAgVVRGMTYuaXNMZWFkU3Vycm9nYXRlKGNTb3VyY2UxWyhzMVN0YXJ0LTIpXSkKKyAgICAgICAgICAgICAgICAgICAgKQorCSAgICAgICAgICAgICkgeworCSAgICAgICAgICAgICAgICAvKiBwYXJ0IG9mIGEgc3Vycm9nYXRlIHBhaXIsIGxlYXZlID49ZDgwMCAqLworCSAgICAgICAgICAgIH0gZWxzZSB7CisJICAgICAgICAgICAgICAgIC8qIEJNUCBjb2RlIHBvaW50IC0gbWF5IGJlIHN1cnJvZ2F0ZSBjb2RlIHBvaW50IC0gCisgICAgICAgICAgICAgICAgICAgICAqIG1ha2UgPGQ4MDAgKi8KKwkgICAgICAgICAgICAgICAgYzEtPTB4MjgwMDsKKwkgICAgICAgICAgICB9CisJCisJICAgICAgICAgICAgaWYoCisJICAgICAgICAgICAgICAgICggICAgYzI8PTB4ZGJmZiAmJiBzMlN0YXJ0IT1saW1pdDIgCisgICAgICAgICAgICAgICAgICAgICAgICAgJiYgCisgICAgICAgICAgICAgICAgICAgICAgICAgVVRGMTYuaXNUcmFpbFN1cnJvZ2F0ZShjU291cmNlMltzMlN0YXJ0XSkKKyAgICAgICAgICAgICAgICAgICAgKSAKKyAgICAgICAgICAgICAgICAgICAgIHx8CisJICAgICAgICAgICAgICAgICggICAgVVRGMTYuaXNUcmFpbFN1cnJvZ2F0ZSgoY2hhciljMikgJiYgc3RhcnQyIT0oczJTdGFydC0xKSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAmJiAKKyAgICAgICAgICAgICAgICAgICAgICAgICBVVEYxNi5pc0xlYWRTdXJyb2dhdGUoY1NvdXJjZTJbKHMyU3RhcnQtMildKQorICAgICAgICAgICAgICAgICAgICApCisJICAgICAgICAgICAgKSB7CisJICAgICAgICAgICAgICAgIC8qIHBhcnQgb2YgYSBzdXJyb2dhdGUgcGFpciwgbGVhdmUgPj1kODAwICovCisJICAgICAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAgICAgICAgLyogQk1QIGNvZGUgcG9pbnQgLSBtYXkgYmUgc3Vycm9nYXRlIGNvZGUgcG9pbnQgLSAKKyAgICAgICAgICAgICAgICAgICAgICogbWFrZSA8ZDgwMCAqLworCSAgICAgICAgICAgICAgICBjMi09MHgyODAwOworCSAgICAgICAgICAgIH0KKwkgICAgICAgIH0KKwkKKwkgICAgICAgIHJldHVybiBjMS1jMjsKKwkgICAgfQorCX0KKyAgICBwcml2YXRlIHN0YXRpYyBpbnQgc3RyQ29tcGFyZShjaGFyW10gczEsIGludCBzMVN0YXJ0LCBpbnQgczFMaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyW10gczIsIGludCBzMlN0YXJ0LCBpbnQgczJMaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGNvZGVQb2ludE9yZGVyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgaW50IHN0YXJ0MSwgc3RhcnQyLCBsaW1pdDEsIGxpbWl0MjsKKyAKKyAgICAgICAgY2hhciBjMSwgYzI7CisgICAgCisgICAgICAgIC8qIHNldHVwIGZvciBmaXgtdXAgKi8KKyAgICAgICAgc3RhcnQxPXMxU3RhcnQ7CisgICAgICAgIHN0YXJ0Mj1zMlN0YXJ0OworICAgICAgICAKKyAgICAgICAgaW50IGxlbmd0aDEsIGxlbmd0aDI7CisgICAgICAgIAorICAgICAgICBsZW5ndGgxID0gczFMaW1pdCAtIHMxU3RhcnQ7CisgICAgICAgIGxlbmd0aDIgPSBzMkxpbWl0IC0gczJTdGFydDsKKyAgICAgICAgICAgIAorICAgICAgICBpbnQgbGVuZ3RoUmVzdWx0OworCisgICAgICAgIGlmKGxlbmd0aDE8bGVuZ3RoMikgeworICAgICAgICAgICAgbGVuZ3RoUmVzdWx0PS0xOworICAgICAgICAgICAgbGltaXQxPXN0YXJ0MStsZW5ndGgxOworICAgICAgICB9IGVsc2UgaWYobGVuZ3RoMT09bGVuZ3RoMikgeworICAgICAgICAgICAgbGVuZ3RoUmVzdWx0PTA7CisgICAgICAgICAgICBsaW1pdDE9c3RhcnQxK2xlbmd0aDE7CisgICAgICAgIH0gZWxzZSAvKiBsZW5ndGgxPmxlbmd0aDIgKi8geworICAgICAgICAgICAgbGVuZ3RoUmVzdWx0PTE7CisgICAgICAgICAgICBsaW1pdDE9c3RhcnQxK2xlbmd0aDI7CisgICAgICAgIH0KKworICAgICAgICBpZihzMT09czIpIHsKKyAgICAgICAgICAgIHJldHVybiBsZW5ndGhSZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICBmb3IoOzspIHsKKyAgICAgICAgICAgIC8qIGNoZWNrIHBzZXVkby1saW1pdCAqLworICAgICAgICAgICAgaWYoczFTdGFydD09bGltaXQxKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGxlbmd0aFJlc3VsdDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYzE9czFbczFTdGFydF07CisgICAgICAgICAgICBjMj1zMltzMlN0YXJ0XTsKKyAgICAgICAgICAgIGlmKGMxIT1jMikgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKytzMVN0YXJ0OworICAgICAgICAgICAgKytzMlN0YXJ0OworICAgICAgICB9CisKKyAgICAgICAgLyogc2V0dXAgZm9yIGZpeC11cCAqLworICAgICAgICBsaW1pdDE9c3RhcnQxK2xlbmd0aDE7CisgICAgICAgIGxpbWl0Mj1zdGFydDIrbGVuZ3RoMjsKKworICAgIAorICAgICAgICAvKiBpZiBib3RoIHZhbHVlcyBhcmUgaW4gb3IgYWJvdmUgdGhlIHN1cnJvZ2F0ZSByYW5nZSwgZml4IHRoZW0gdXAgKi8KKyAgICAgICAgaWYoYzE+PTB4ZDgwMCAmJiBjMj49MHhkODAwICYmIGNvZGVQb2ludE9yZGVyKSB7CisgICAgICAgICAgICAvKiBzdWJ0cmFjdCAweDI4MDAgZnJvbSBCTVAgY29kZSBwb2ludHMgdG8gbWFrZSB0aGVtIHNtYWxsZXIgdGhhbgorICAgICAgICAgICAgICogIHN1cHBsZW1lbnRhcnkgb25lcyAqLworICAgICAgICAgICAgaWYoCisgICAgICAgICAgICAgICAgKCBjMTw9MHhkYmZmICYmIChzMVN0YXJ0KzEpIT1saW1pdDEgJiYgCisgICAgICAgICAgICAgICAgICBVVEYxNi5pc1RyYWlsU3Vycm9nYXRlKHMxWyhzMVN0YXJ0KzEpXSkKKyAgICAgICAgICAgICAgICApIHx8CisgICAgICAgICAgICAgICAgKCBVVEYxNi5pc1RyYWlsU3Vycm9nYXRlKGMxKSAmJiBzdGFydDEhPXMxU3RhcnQgJiYgCisgICAgICAgICAgICAgICAgICBVVEYxNi5pc0xlYWRTdXJyb2dhdGUoczFbKHMxU3RhcnQtMSldKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkgeworICAgICAgICAgICAgICAgIC8qIHBhcnQgb2YgYSBzdXJyb2dhdGUgcGFpciwgbGVhdmUgPj1kODAwICovCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8qIEJNUCBjb2RlIHBvaW50IC0gbWF5IGJlIHN1cnJvZ2F0ZSBjb2RlIHBvaW50IC0gbWFrZSA8ZDgwMCAqLworICAgICAgICAgICAgICAgIGMxLT0weDI4MDA7CisgICAgICAgICAgICB9CisgICAgCisgICAgICAgICAgICBpZigKKyAgICAgICAgICAgICAgICAoIGMyPD0weGRiZmYgJiYgKHMyU3RhcnQrMSkhPWxpbWl0MiAmJiAKKyAgICAgICAgICAgICAgICAgIFVURjE2LmlzVHJhaWxTdXJyb2dhdGUoczJbKHMyU3RhcnQrMSldKQorICAgICAgICAgICAgICAgICkgfHwKKyAgICAgICAgICAgICAgICAoIFVURjE2LmlzVHJhaWxTdXJyb2dhdGUoYzIpICYmIHN0YXJ0MiE9czJTdGFydCAmJiAKKyAgICAgICAgICAgICAgICAgIFVURjE2LmlzTGVhZFN1cnJvZ2F0ZShzMlsoczJTdGFydC0xKV0pCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKSB7CisgICAgICAgICAgICAgICAgLyogcGFydCBvZiBhIHN1cnJvZ2F0ZSBwYWlyLCBsZWF2ZSA+PWQ4MDAgKi8KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLyogQk1QIGNvZGUgcG9pbnQgLSBtYXkgYmUgc3Vycm9nYXRlIGNvZGUgcG9pbnQgLSBtYWtlIDxkODAwICovCisgICAgICAgICAgICAgICAgYzItPTB4MjgwMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIAorICAgICAgICAvKiBub3cgYzEgYW5kIGMyIGFyZSBpbiBVVEYtMzItY29tcGF0aWJsZSBvcmRlciAqLworICAgICAgICByZXR1cm4gKGludCljMS0oaW50KWMyOworICAgIH0KKworCXB1YmxpYyBzdGF0aWMgaW50IGNvbXBhcmUoY2hhcltdIHMxLCBpbnQgczFTdGFydCxpbnQgczFMaW1pdCwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJbXSBzMiwgaW50IHMyU3RhcnQsaW50IHMyTGltaXQsCisJICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb3B0aW9ucykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCSAgICBjaGFyW10gZmNkMSAgPSBuZXcgY2hhclszMDBdOworICAgICAgICBjaGFyW10gZmNkMiAgPSBuZXcgY2hhclszMDBdOworCSAgICBjaGFyW10gZm9sZDEgPSBuZXcgY2hhclszMDBdOworICAgICAgICBjaGFyW10gZm9sZDIgPSBuZXcgY2hhclszMDBdOworICAgICAgICAKKyAgICAgICAgaW50IHJlc3VsdDsKKwkKKwkgICAgaWYoICAgIHMxPT1udWxsIHx8IHMxU3RhcnQ8MCB8fCBzMUxpbWl0PDAgfHwgCisgICAgICAgICAgICAgICBzMj09bnVsbCB8fCBzMlN0YXJ0PDAgfHwgczJMaW1pdDwwCisgICAgICAgICAgKSB7CisJICAgICAgICAKKwkgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oKTsKKwkgICAgfQorCisJICAgIG9wdGlvbnN8PUNPTVBBUkVfRVFVSVY7CisJCisJICAgIGlmKChvcHRpb25zJiBOb3JtYWxpemVyLklOUFVUX0lTX0ZDRCk9PTApIHsKKwkgICAgICAgIGNoYXJbXSBkZXN0OworCSAgICAgICAgaW50IGZjZExlbjEsIGZjZExlbjI7CisgICAgICAgICAgICBpbnQgZm9sZExlbjEsIGZvbGRMZW4yOworCSAgICAgICAgYm9vbGVhbiBpc0ZDRDEsIGlzRkNEMjsKKwkKKwkgICAgICAgIC8vIGNoZWNrIGlmIHMxIGFuZC9vciBzMiBmdWxmaWxsIHRoZSBGQ0QgY29uZGl0aW9ucworCSAgICAgICAgaXNGQ0QxPWNoZWNrRkNEKHMxLCBzMVN0YXJ0LCBzMUxpbWl0KTsKKwkgICAgICAgIGlzRkNEMj1jaGVja0ZDRChzMiwgczJTdGFydCwgczJMaW1pdCk7CisJICAgICAgICAKKwkgICAgICAgIGlmKChvcHRpb25zJk5vcm1hbGl6ZXIuQ09NUEFSRV9JR05PUkVfQ0FTRSkhPTAgJiYgCisgICAgICAgICAgICAgICAgIShpc0ZDRDEgJiYgaXNGQ0QyKSkgeworCSAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIGNhc2UtZm9sZCBmaXJzdCB0byBrZWVwIHRoZSBvcmRlciBvZiBvcGVyYXRpb25zIGFzIGluIFVBWCAyMSAyLjUKKwkgICAgICAgICAgICBmb2xkTGVuMT1mb2xkQ2FzZShzMSxzMVN0YXJ0LHMxTGltaXQsZm9sZDEsMCxmb2xkMS5sZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChvcHRpb25zJk5vcm1hbGl6ZXIuRk9MRF9DQVNFX0VYQ0xVREVfU1BFQ0lBTF9JKT09MCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgIGlmKGZvbGRMZW4xID4gZm9sZDEubGVuZ3RoKXsKKwkgICAgICAgICAgICAgICAgZGVzdCA9IG5ldyBjaGFyW2ZvbGRMZW4xXTsKKwkgICAgICAgICAgICAgICAgZm9sZExlbjE9Zm9sZENhc2UoczEsczFTdGFydCxzMUxpbWl0LGRlc3QsMCxmb2xkTGVuMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChvcHRpb25zJk5vcm1hbGl6ZXIuRk9MRF9DQVNFX0VYQ0xVREVfU1BFQ0lBTF9JKT09MCkpOworICAgICAgICAgICAgICAgICAgICAJCisJICAgICAgICAgICAgICAgIHMxPWRlc3Q7CisJICAgICAgICAgICAgfWVsc2V7CisgICAgICAgICAgICAgICAgICAgIHMxPWZvbGQxOworICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBzMVN0YXJ0ID0gMDsKKyAgICAgICAgICAgICAgICBzMUxpbWl0ID0gZm9sZExlbjE7CisJCisJICAgICAgICAgICAgZm9sZExlbjI9Zm9sZENhc2UoczIsczJTdGFydCxzMkxpbWl0LGZvbGQyLDAsZm9sZDIubGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgob3B0aW9ucyZOb3JtYWxpemVyLkZPTERfQ0FTRV9FWENMVURFX1NQRUNJQUxfSSk9PTApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZihmb2xkTGVuMiA+IGZvbGQyLmxlbmd0aCl7CisgICAgICAgICAgICAgICAgICAgIGRlc3QgPSBuZXcgY2hhcltmb2xkTGVuMl07CisgICAgICAgICAgICAgICAgICAgIGZvbGRMZW4yPWZvbGRDYXNlKHMyLHMyU3RhcnQsczJMaW1pdCxkZXN0LDAsZm9sZExlbjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgob3B0aW9ucyZOb3JtYWxpemVyLkZPTERfQ0FTRV9FWENMVURFX1NQRUNJQUxfSSk9PTApKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIHMyPWRlc3Q7CisgICAgICAgICAgICAgICAgfWVsc2V7CisgICAgICAgICAgICAgICAgICAgIHMyPWZvbGQyOworICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAKKwkgICAgICAgICAgICBzMlN0YXJ0ID0gMDsKKyAgICAgICAgICAgICAgICBzMkxpbWl0ID0gZm9sZExlbjI7CisJCisJICAgICAgICAgICAgLy8gdHVybiBvZmYgVV9DT01QQVJFX0lHTk9SRV9DQVNFIGFuZCByZS1jaGVjayBGQ0QKKwkgICAgICAgICAgICBvcHRpb25zJj1+IE5vcm1hbGl6ZXIuQ09NUEFSRV9JR05PUkVfQ0FTRTsKKwkgICAgICAgICAgICBpc0ZDRDE9Y2hlY2tGQ0QoczEsIHMxU3RhcnQsIHMxTGltaXQpOworCSAgICAgICAgICAgIGlzRkNEMj1jaGVja0ZDRChzMiwgczJTdGFydCwgczJMaW1pdCk7CisJICAgICAgICB9CisKKworCSAgICAgICAgaWYoIWlzRkNEMSAmJiAhaXNGQ0QyKSB7CisJICAgICAgICAgICAgLy8gaWYgYm90aCBzdHJpbmdzIG5lZWQgbm9ybWFsaXphdGlvbiB0aGVuIG1ha2UgdGhlbSBORkQgcmlnaHQgCisgICAgICAgICAgICAgICAgLy8gYXdheSBhbmQgdHVybiBvZmYgbm9ybWFsaXphdGlvbiBpbiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbgorCSAgICAgICAgICAgIGludFtdIHRyYWlsQ0MgPSBuZXcgaW50WzFdOzsKKwkKKwkgICAgICAgICAgICAvLyBmdWxseSBkZWNvbXBvc2UgKE5GRCkgczEgYW5kIHMyCisJCisJICAgICAgICAgICAgZmNkTGVuMT1kZWNvbXBvc2UoIHMxLHMxU3RhcnQsczFMaW1pdCxmY2QxLDAsZmNkMS5sZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLCB0cmFpbENDKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgaWYoZmNkTGVuMTw9ZmNkMS5sZW5ndGgpIHsKKwkgICAgICAgICAgICAgICAgczE9ZmNkMTsKKwkgICAgICAgICAgICB9IGVsc2UgeworCSAgICAgICAgICAgICAgICBkZXN0PW5ldyBjaGFyW2ZjZExlbjFdOworCSAgICAgICAgICAgICAgICBmY2RMZW4xPSBkZWNvbXBvc2UoIHMxLHMxU3RhcnQsczFMaW1pdCxkZXN0LDAsZGVzdC5sZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIHRyYWlsQ0MpOworCQorCSAgICAgICAgICAgICAgICBzMT1kZXN0OworCSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKwkgICAgICAgICAgICBzMUxpbWl0PWZjZExlbjE7CisJICAgICAgICAgICAgczJTdGFydD0wOworCSAgICAgICAgICAgIGZjZExlbjI9ZGVjb21wb3NlKCBzMixzMlN0YXJ0LHMyTGltaXQsIGZjZDIsMCxmY2QyLmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIHRyYWlsQ0MpOworCSAgICAgICAgICAgIGlmKGZjZExlbjI8PWZjZDIubGVuZ3RoKSB7CisJICAgICAgICAgICAgICAgIHMyPWZjZDI7CisJICAgICAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAgICAgICAgZGVzdD1uZXcgY2hhcltmY2RMZW4yXTsKKwkgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgIGZjZExlbjI9ZGVjb21wb3NlKCBzMixzMlN0YXJ0LHMyTGltaXQsZGVzdCwwLGRlc3QubGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgdHJhaWxDQyk7CisJCisJICAgICAgICAgICAgICAgIHMyPWRlc3Q7CisJICAgICAgICAgICAgfQorCSAgICAgICAgICAgIHMyTGltaXQ9ZmNkTGVuMjsKKwkgICAgICAgICAgICBzMlN0YXJ0PTA7CisJICAgICAgICAgICAgLy8gY29tcGFyZSBORkQgc3RyaW5ncworCSAgICAgICAgICAgIG9wdGlvbnMmPX5DT01QQVJFX0VRVUlWOworCSAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAgICAvLyBpZiBhdCBsZWFzdCBvbmUgc3RyaW5nIGlzIGFscmVhZHkgaW4gRkNEIHRoZW4gb25seSBtYWtlRkNEIAorICAgICAgICAgICAgICAgIC8vIHRoZSBvdGhlciBhbmQgY29tcGFyZSBmb3IgZXF1aXZhbGVuY2UKKwkgICAgICAgICAgICBpZighaXNGQ0QxKSB7CisJICAgICAgICAgICAgICAgIGZjZExlbjE9bWFrZUZDRChzMSxzMVN0YXJ0LHMxTGltaXQsZmNkMSwwLGZjZDEubGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgIGlmKGZjZExlbjE+ZmNkMS5sZW5ndGgpeworCSAgICAgICAgICAgICAgICAgICAgZGVzdD1uZXcgY2hhcltmY2RMZW4xXTsKKwkgICAgICAgICAgICAgICAgICAgIGZjZExlbjE9bWFrZUZDRChzMSxzMVN0YXJ0LHMxTGltaXQsZGVzdCwwLGRlc3QubGVuZ3RoKTsKKwkgICAgICAgICAgICAgICAgICAgIHMxPWRlc3Q7CisJICAgICAgICAgICAgICAgIH1lbHNleworICAgICAgICAgICAgICAgICAgICAgICAgczE9ZmNkMTsKKyAgICAgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICBzMUxpbWl0PWZjZExlbjE7CisgICAgICAgICAgICAgICAgICAgIHMxU3RhcnQ9MDsKKwkgICAgICAgICAgICB9CisJCisJICAgICAgICAgICAgaWYoIWlzRkNEMikgeworCSAgICAgICAgICAgICAgICBmY2RMZW4yPW1ha2VGQ0QoczIsczJTdGFydCxzMkxpbWl0LGZjZDIsMCxmY2QyLmxlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICBpZihmY2RMZW4yPmZjZDIubGVuZ3RoKXsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9bmV3IGNoYXJbZmNkTGVuMl07CisgICAgICAgICAgICAgICAgICAgICAgICBmY2RMZW4yPW1ha2VGQ0QoczIsczJTdGFydCxzMkxpbWl0LGRlc3QsMCxkZXN0Lmxlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgICAgICBzMj1kZXN0OworICAgICAgICAgICAgICAgICAgICB9ZWxzZXsKKyAgICAgICAgICAgICAgICAgICAgICAgIHMyPWZjZDI7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgczJMaW1pdD1mY2RMZW4yOworICAgICAgICAgICAgICAgICAgICBzMlN0YXJ0PTA7CisJICAgICAgICAgICAgfQorCSAgICAgICAgfQorCSAgICB9CisJCisgICAgICAgIGlmKChvcHRpb25zJihDT01QQVJFX0VRVUlWfE5vcm1hbGl6ZXIuQ09NUEFSRV9JR05PUkVfQ0FTRSkpPT0wKSB7CisJICAgICAgICAvLyBjb21wYXJlIE5GRCBzdHJpbmdzIGNhc2Utc2Vuc2l0aXZlOiBqdXN0IHVzZSBub3JtYWwgY29tcGFyaXNvbgorCSAgICAgICAgcmVzdWx0PXN0ckNvbXBhcmUoczEsIHMxU3RhcnQsIHMxTGltaXQsIHMyLHMyU3RhcnQsczJMaW1pdCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMCE9KG9wdGlvbnMgJiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3JtYWxpemVyLkNPTVBBUkVfQ09ERV9QT0lOVF9PUkRFUgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKwkgICAgfSBlbHNlIHsKKwkgICAgICAgIHJlc3VsdD1jbXBFcXVpdkZvbGQoczEsIHMxU3RhcnQsIHMxTGltaXQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMiwgczJTdGFydCwgczJMaW1pdCwgb3B0aW9ucyk7CisJICAgIH0KKwkgICAgcmV0dXJuIHJlc3VsdDsKKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL1JlcGxhY2VhYmxlVUNoYXJhY3Rlckl0ZXJhdG9yLmphdmEgYi9zcmMvY29tL2libS9pY3UvaW1wbC9SZXBsYWNlYWJsZVVDaGFyYWN0ZXJJdGVyYXRvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5YmMwNDMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9SZXBsYWNlYWJsZVVDaGFyYWN0ZXJJdGVyYXRvci5qYXZhCkBAIC0wLDAgKzEsMjA5IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9SZXBsYWNlYWJsZVVDaGFyYWN0ZXJJdGVyYXRvci5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzEwLzMxIDIyOjM1OjIwICQgCisgKiAkUmV2aXNpb246IDEuNSAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5pbXBsOworCitpbXBvcnQgY29tLmlibS5pY3UudGV4dC4qOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuUmVwbGFjZWFibGU7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC5SZXBsYWNlYWJsZVN0cmluZzsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0LlVURjE2OyAgICAKKworLyoqCisgKiBETEYgZG9jcyBtdXN0IGRlZmluZSBiZWhhdmlvciB3aGVuIFJlcGxhY2VhYmxlIGlzIG11dGF0ZWQgdW5kZXJuZWF0aAorICogdGhlIGl0ZXJhdG9yLgorICoKKyAqIFRoaXMgYW5kIElDVUNoYXJhY3Rlckl0ZXJhdG9yIHNoYXJlIHNvbWUgY29kZSwgbWF5YmUgdGhleSBzaG91bGQgc2hhcmUKKyAqIGFuIGltcGxlbWVudGF0aW9uLCBvciB0aGUgY29tbW9uIHN0YXRlIGFuZCBpbXBsZW1lbnRhdGlvbiBzaG91bGQgYmUKKyAqIG1vdmVkIHVwIGludG8gVUNoYXJhY3Rlckl0ZXJhdG9yLgorICoKKyAqIFdoYXQgYXJlIGZpcnN0LCBsYXN0LCBhbmQgZ2V0QmVnaW5JbmRleCBkb2luZyBoZXJlPyE/IT8hCisgKi8KK3B1YmxpYyBjbGFzcyBSZXBsYWNlYWJsZVVDaGFyYWN0ZXJJdGVyYXRvciBleHRlbmRzIFVDaGFyYWN0ZXJJdGVyYXRvciB7CisKKyAgICAvLyBwdWJsaWMgY29uc3RydWN0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgICogUHVibGljIGNvbnN0cnVjdG9yCisgICAgICogQHBhcmFtIHJlcGxhY2FibGUgdGV4dCB3aGljaCB0aGUgaXRlcmF0b3Igd2lsbCBiZSBiYXNlZCBvbgorICAgICAqLworICAgIHB1YmxpYyBSZXBsYWNlYWJsZVVDaGFyYWN0ZXJJdGVyYXRvcihSZXBsYWNlYWJsZSByZXBsYWNlYWJsZSl7CisgICAgICAgIGlmKHJlcGxhY2VhYmxlPT1udWxsKXsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oKTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLnJlcGxhY2VhYmxlICA9IHJlcGxhY2VhYmxlOworICAgICAgICB0aGlzLmN1cnJlbnRJbmRleCA9IDA7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFB1YmxpYyBjb25zdHJ1Y3RvcgorICAgICAqIEBwYXJhbSBzdHIgdGV4dCB3aGljaCB0aGUgaXRlcmF0b3Igd2lsbCBiZSBiYXNlZCBvbgorICAgICAqLworICAgIHB1YmxpYyBSZXBsYWNlYWJsZVVDaGFyYWN0ZXJJdGVyYXRvcihTdHJpbmcgc3RyKXsKKyAgICAgICAgaWYoc3RyPT1udWxsKXsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oKTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLnJlcGxhY2VhYmxlICA9IG5ldyBSZXBsYWNlYWJsZVN0cmluZyhzdHIpOworICAgICAgICB0aGlzLmN1cnJlbnRJbmRleCA9IDA7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFB1YmxpYyBjb25zdHJ1Y3RvcgorICAgICAqIEBwYXJhbSBidWYgYnVmZmVyIG9mIHRleHQgb24gd2hpY2ggdGhlIGl0ZXJhdG9yIHdpbGwgYmUgYmFzZWQKKyAgICAgKi8KKyAgICBwdWJsaWMgUmVwbGFjZWFibGVVQ2hhcmFjdGVySXRlcmF0b3IoU3RyaW5nQnVmZmVyIGJ1Zil7CisgICAgICAgIGlmKGJ1Zj09bnVsbCl7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCk7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5yZXBsYWNlYWJsZSAgPSBuZXcgUmVwbGFjZWFibGVTdHJpbmcoYnVmKTsKKyAgICAgICAgdGhpcy5jdXJyZW50SW5kZXggPSAwOworICAgIH0KKyAgICAKKyAgICAvLyBwdWJsaWMgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIGNvcHkgb2YgdGhpcyBpdGVyYXRvciwgZG9lcyBub3QgY2xvbmUgdGhlIHVuZGVybHlpbmcgCisgICAgICogPGNvZGU+UmVwbGFjZWFibGU8L2NvZGU+b2JqZWN0CisgICAgICogQHJldHVybiBjb3B5IG9mIHRoaXMgaXRlcmF0b3IKKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0IGNsb25lKCl7CisJCXRyeSB7CisJCSAgcmV0dXJuIHN1cGVyLmNsb25lKCk7CisJCX0gY2F0Y2ggKENsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIGUpIHsKKwkJICAgIHJldHVybiBudWxsOyAvLyBuZXZlciBpbnZva2VkCisJCX0KKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgY3VycmVudCBVVEYxNiBjaGFyYWN0ZXIuCisgICAgICogQHJldHVybiBjdXJyZW50IFVURjE2IGNoYXJhY3RlcgorICAgICAqLworICAgIHB1YmxpYyBpbnQgY3VycmVudCgpeworICAgICAgICBpZiAoY3VycmVudEluZGV4IDwgcmVwbGFjZWFibGUubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIHJldHVybiByZXBsYWNlYWJsZS5jaGFyQXQoY3VycmVudEluZGV4KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gRE9ORTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgY3VycmVudCBjb2RlcG9pbnQKKyAgICAgKiBAcmV0dXJuIGN1cnJlbnQgY29kZXBvaW50CisgICAgICovCisgICAgcHVibGljIGludCBjdXJyZW50Q29kZVBvaW50KCl7CisgICAgICAgIC8vIGNhbm5vdCB1c2UgY2hhckF0IGR1ZSB0byBpdCBkaWZmZXJlbnQgCisgICAgICAgIC8vIGJlaGF2aW91ciB3aGVuIGluZGV4IGlzIHBvaW50aW5nIGF0IGEKKyAgICAgICAgLy8gdHJhaWwgc3Vycm9nYXRlLCBjaGVjayBmb3Igc3Vycm9nYXRlcworICAgICAgICAgCisgICAgICAgIGludCBjaCA9IGN1cnJlbnQoKTsKKyAgICAgICAgaWYoVVRGMTYuaXNMZWFkU3Vycm9nYXRlKChjaGFyKWNoKSl7CisgICAgICAgICAgICAvLyBhZHZhbmNlIHRoZSBpbmRleCB0byBnZXQgdGhlIG5leHQgY29kZSBwb2ludAorICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgLy8gZHVlIHRvIHBvc3QgaW5jcmVtZW50IHNlbWFudGljcyBjdXJyZW50KCkgYWZ0ZXIgbmV4dCgpIAorICAgICAgICAgICAgLy8gYWN0dWFsbHkgcmV0dXJucyB0aGUgbmV4dCBjaGFyIHdoaWNoIGlzIHdoYXQgd2Ugd2FudAorICAgICAgICAgICAgaW50IGNoMiA9IGN1cnJlbnQoKTsKKyAgICAgICAgICAgIC8vIGN1cnJlbnQgc2hvdWxkIG5ldmVyIGNoYW5nZSB0aGUgY3VycmVudCBpbmRleCBzbyBiYWNrIG9mZgorICAgICAgICAgICAgcHJldmlvdXMoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYoVVRGMTYuaXNUcmFpbFN1cnJvZ2F0ZSgoY2hhciljaDIpKXsKKyAgICAgICAgICAgICAgICAvLyB3ZSBmb3VuZCBhIHN1cnJvZ2F0ZSBwYWlyCisgICAgICAgICAgICAgICAgcmV0dXJuIFVDaGFyYWN0ZXJQcm9wZXJ0eS5nZXRSYXdTdXBwbGVtZW50YXJ5KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIpY2gsKGNoYXIpY2gyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gY2g7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUgdGV4dAorICAgICAqIEByZXR1cm4gbGVuZ3RoIG9mIHRoZSB0ZXh0CisgICAgICovCisgICAgcHVibGljIGludCBnZXRMZW5ndGgoKXsKKyAgICAgICAgcmV0dXJuIHJlcGxhY2VhYmxlLmxlbmd0aCgpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBjdXJyZW50IGN1cnJlbnRJbmRleCBpbiB0ZXh0LgorICAgICAqIEByZXR1cm4gY3VycmVudCBjdXJyZW50SW5kZXggaW4gdGV4dC4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldEluZGV4KCl7CisgICAgICAgIHJldHVybiBjdXJyZW50SW5kZXg7CisgICAgfQorICAgICAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIG5leHQgVVRGMTYgY2hhcmFjdGVyIGFuZCBpbmNyZW1lbnRzIHRoZSBpdGVyYXRvcidzIGN1cnJlbnRJbmRleCBieSAxLiAKKyAgICAgKiBJZiB0aGUgcmVzdWx0aW5nIGN1cnJlbnRJbmRleCBpcyBncmVhdGVyIG9yIGVxdWFsIHRvIHRoZSB0ZXh0IGxlbmd0aCwgdGhlIAorICAgICAqIGN1cnJlbnRJbmRleCBpcyByZXNldCB0byB0aGUgdGV4dCBsZW5ndGggYW5kIGEgdmFsdWUgb2YgRE9ORUNPREVQT0lOVCBpcyAKKyAgICAgKiByZXR1cm5lZC4gCisgICAgICogQHJldHVybiBuZXh0IFVURjE2IGNoYXJhY3RlciBpbiB0ZXh0IG9yIERPTkUgaWYgdGhlIG5ldyBjdXJyZW50SW5kZXggaXMgb2ZmIHRoZSAKKyAgICAgKiAgICAgICAgIGVuZCBvZiB0aGUgdGV4dCByYW5nZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IG5leHQoKXsKKyAgICAgICAgaWYgKGN1cnJlbnRJbmRleCA8IHJlcGxhY2VhYmxlLmxlbmd0aCgpKSB7CisgICAgICAgICAgICByZXR1cm4gcmVwbGFjZWFibGUuY2hhckF0KGN1cnJlbnRJbmRleCsrKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gRE9ORTsKKyAgICB9CisgICAgCisgICAgICAgICAgICAgICAgCisgICAgLyoqCisgICAgICogUmV0dXJucyBwcmV2aW91cyBVVEYxNiBjaGFyYWN0ZXIgYW5kIGRlY3JlbWVudHMgdGhlIGl0ZXJhdG9yJ3MgY3VycmVudEluZGV4IGJ5IAorICAgICAqIDEuIAorICAgICAqIElmIHRoZSByZXN1bHRpbmcgY3VycmVudEluZGV4IGlzIGxlc3MgdGhhbiAwLCB0aGUgY3VycmVudEluZGV4IGlzIHJlc2V0IHRvIDAgYW5kIGEgCisgICAgICogdmFsdWUgb2YgRE9ORUNPREVQT0lOVCBpcyByZXR1cm5lZC4gCisgICAgICogQHJldHVybiBuZXh0IFVURjE2IGNoYXJhY3RlciBpbiB0ZXh0IG9yIERPTkUgaWYgdGhlIG5ldyBjdXJyZW50SW5kZXggaXMgb2ZmIHRoZSAKKyAgICAgKiAgICAgICAgIHN0YXJ0IG9mIHRoZSB0ZXh0IHJhbmdlLgorICAgICAqLworICAgIHB1YmxpYyBpbnQgcHJldmlvdXMoKXsKKyAgICAgICAgaWYgKGN1cnJlbnRJbmRleCA+IDApIHsKKyAgICAgICAgICAgIHJldHVybiByZXBsYWNlYWJsZS5jaGFyQXQoLS1jdXJyZW50SW5kZXgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBET05FOworICAgIH0KKworICAgIC8qKgorICAgICAqIDxwPlNldHMgdGhlIGN1cnJlbnRJbmRleCB0byB0aGUgc3BlY2lmaWVkIGN1cnJlbnRJbmRleCBpbiB0aGUgdGV4dCBhbmQgcmV0dXJucyB0aGF0IAorICAgICAqIHNpbmdsZSBVVEYxNiBjaGFyYWN0ZXIgYXQgY3VycmVudEluZGV4LiAKKyAgICAgKiBUaGlzIGFzc3VtZXMgdGhlIHRleHQgaXMgc3RvcmVkIGFzIDE2LWJpdCBjb2RlIHVuaXRzLjwvcD4KKyAgICAgKiBAcGFyYW0gY3VycmVudEluZGV4IHRoZSBjdXJyZW50SW5kZXggd2l0aGluIHRoZSB0ZXh0LiAKKyAgICAgKiBAZXhjZXB0aW9uIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpcyB0aHJvd24gaWYgYW4gaW52YWxpZCBjdXJyZW50SW5kZXggaXMgCisgICAgICogICAgICAgICAgICBzdXBwbGllZC4gaS5lLiBjdXJyZW50SW5kZXggaXMgb3V0IG9mIGJvdW5kcy4KKyAgICAgKiBAcmV0dXJuIHRoZSBjaGFyYWN0ZXIgYXQgdGhlIHNwZWNpZmllZCBjdXJyZW50SW5kZXggb3IgRE9ORSBpZiB0aGUgc3BlY2lmaWVkIAorICAgICAqICAgICAgICAgY3VycmVudEluZGV4IGlzIGVxdWFsIHRvIHRoZSBlbmQgb2YgdGhlIHRleHQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0SW5kZXgoaW50IGN1cnJlbnRJbmRleCkgdGhyb3dzIEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb257CisgICAgICAgIGlmIChjdXJyZW50SW5kZXggPCAwIHx8IGN1cnJlbnRJbmRleCA+IHJlcGxhY2VhYmxlLmxlbmd0aCgpKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbigpOworICAgICAgICB9CisgICAgICAgIHRoaXMuY3VycmVudEluZGV4ID0gY3VycmVudEluZGV4OworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgaW50IGdldFRleHQoY2hhcltdIGZpbGxJbiwgaW50IG9mZnNldCl7CisgICAgCWludCBsZW5ndGggPSByZXBsYWNlYWJsZS5sZW5ndGgoKTsKKyAgICAgICAgaWYob2Zmc2V0IDwgMCB8fCBvZmZzZXQgKyBsZW5ndGggPiBmaWxsSW4ubGVuZ3RoKXsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uKEludGVnZXIudG9TdHJpbmcobGVuZ3RoKSk7CisgICAgICAgIH0KKyAgICAgICAgcmVwbGFjZWFibGUuZ2V0Q2hhcnMoMCxsZW5ndGgsZmlsbEluLG9mZnNldCk7CisgICAgICAgIHJldHVybiBsZW5ndGg7CisgICAgfSAgICAgICAKKyAgICAgICAgCisgICAgLy8gcHJpdmF0ZSBkYXRhIG1lbWJlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIC8qKgorICAgICAqIFJlcGxhY2FibGUgb2JqZWN0CisgICAgICovCisgICAgcHJpdmF0ZSBSZXBsYWNlYWJsZSByZXBsYWNlYWJsZTsKKyAgICAvKioKKyAgICAgKiBDdXJyZW50IGN1cnJlbnRJbmRleAorICAgICAqLworICAgIHByaXZhdGUgaW50IGN1cnJlbnRJbmRleDsKKworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvU29ydGVkU2V0UmVsYXRpb24uamF2YSBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL1NvcnRlZFNldFJlbGF0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2I4NTZlZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL1NvcnRlZFNldFJlbGF0aW9uLmphdmEKQEAgLTAsMCArMSwxODAgQEAKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIENvcHlyaWdodCAoYykgMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworKiBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogQXV0aG9yOiBNLiBEYXZpcworKiBDcmVhdGVkOiBEZWNlbWJlciAyMDAyIChtb3ZlZCBmcm9tIFVuaWNvZGVTZXQpCisqIFNpbmNlOiBJQ1UgMi40CisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworcGFja2FnZSBjb20uaWJtLmljdS5pbXBsOworCitpbXBvcnQgamF2YS51dGlsLlNvcnRlZFNldDsKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLlRyZWVTZXQ7CisKKy8qKgorICogQ29tcHV0YXRpb25hbGx5IGVmZmljaWVudCBkZXRlcm1pbmF0aW9uIG9mIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbgorICogdHdvIFNvcnRlZFNldHMuCisgKi8KK3B1YmxpYyBjbGFzcyBTb3J0ZWRTZXRSZWxhdGlvbiB7CisKKyAgICAvKioKKyAgICAgKiBUaGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdHdvIHNldHMgQSBhbmQgQiBjYW4gYmUgZGV0ZXJtaW5lZCBieSBsb29raW5nIGF0OgorICAgICAqIEEgLSBCCisgICAgICogQSAmIEIgKGludGVyc2VjdGlvbikKKyAgICAgKiBCIC0gQQorICAgICAqIFRoZXNlIGFyZSByZXByZXNlbnRlZCBieSBhIHNldCBvZiBiaXRzLgorICAgICAqIEJpdCAyIGlzIHRydWUgaWYgQSAtIEIgaXMgbm90IGVtcHR5CisgICAgICogQml0IDEgaXMgdHJ1ZSBpZiBBICYgQiBpcyBub3QgZW1wdHkKKyAgICAgKiBCSVQgMCBpcyB0cnVlIGlmIEIgLSBBIGlzIG5vdCBlbXB0eQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50CisgICAgICAgIEFfTk9UX0IgPSA0LAorICAgICAgICBBX0FORF9CID0gMiwKKyAgICAgICAgQl9OT1RfQSA9IDE7CisgICAgCisgICAgLyoqCisgICAgICogVGhlcmUgYXJlIDggY29tYmluYXRpb25zIG9mIHRoZSByZWxhdGlvbnNoaXAgYml0cy4gVGhlc2UgY29ycmVzcG9uZCB0bworICAgICAqIHRoZSBmaWx0ZXJzIChjb21iaW5hdGlvbnMgb2YgYWxsb3dlZCBiaXRzKSBpbiBoYXNSZWxhdGlvbi4gVGhleSBhbHNvCisgICAgICogY29ycmVzcG9uZCB0byB0aGUgbW9kaWZpY2F0aW9uIGZ1bmN0aW9ucywgbGlzdGVkIGluIGNvbW1lbnRzLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IAorICAgICAgIEFOWSA9ICAgICAgICAgICAgQV9OT1RfQiB8ICAgQV9BTkRfQiB8ICAgQl9OT1RfQSwgICAgLy8gdW5pb24sICAgICAgICAgICBhZGRBbGwKKyAgICAgICBDT05UQUlOUyA9ICAgICAgIEFfTk9UX0IgfCAgIEFfQU5EX0IsICAgICAgICAgICAgICAgIC8vIEEgICAgICAgICAgICAgICAgKHVubmVjZXNzYXJ5KQorICAgICAgIERJU0pPSU5UID0gICAgICAgQV9OT1RfQiB8ICAgICAgICAgICAgICAgQl9OT1RfQSwgICAgLy8gQSB4b3IgQiwgICAgICAgICBtaXNzaW5nIEphdmEgZnVuY3Rpb24KKyAgICAgICBJU0NPTlRBSU5FRCA9ICAgICAgICAgICAgICAgIEFfQU5EX0IgfCAgIEJfTk9UX0EsICAgIC8vIEIgICAgICAgICAgICAgICAgKHVubmVjZXNzYXJ5KQorICAgICAgIE5PX0IgPSAgICAgICAgICAgQV9OT1RfQiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQSBzZXREaWZmIEIsICAgICByZW1vdmVBbGwKKyAgICAgICBFUVVBTFMgPSAgICAgICAgICAgICAgICAgICAgIEFfQU5EX0IsICAgICAgICAgICAgICAgIC8vIEEgaW50ZXJzZWN0IEIsICAgcmV0YWluQWxsCisgICAgICAgTk9fQSA9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCX05PVF9BLCAgICAvLyBCIHNldERpZmYgQSwgICAgIHJlbW92ZUFsbAorICAgICAgIE5PTkUgPSAgICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbnVsbCAgICAgICAgICAgICAodW5uZWNlc3NhcnkpCisgICAgICAgCisgICAgICAgQUREQUxMID0gQU5ZLCAgICAgICAgICAgICAgICAvLyB1bmlvbiwgICAgICAgICAgIGFkZEFsbAorICAgICAgIEEgPSBDT05UQUlOUywgICAgICAgICAgICAgICAgLy8gQSAgICAgICAgICAgICAgICAodW5uZWNlc3NhcnkpCisgICAgICAgQ09NUExFTUVOVEFMTCA9IERJU0pPSU5ULCAgICAvLyBBIHhvciBCLCAgICAgICAgIG1pc3NpbmcgSmF2YSBmdW5jdGlvbgorICAgICAgIEIgPSBJU0NPTlRBSU5FRCwgICAgICAgICAgICAgLy8gQiAgICAgICAgICAgICAgICAodW5uZWNlc3NhcnkpCisgICAgICAgUkVNT1ZFQUxMID0gTk9fQiwgICAgICAgICAgICAvLyBBIHNldERpZmYgQiwgICAgIHJlbW92ZUFsbAorICAgICAgIFJFVEFJTkFMTCA9IEVRVUFMUywgICAgICAgICAgLy8gQSBpbnRlcnNlY3QgQiwgICByZXRhaW5BbGwKKyAgICAgICBCX1JFTU9WRUFMTCA9IE5PX0E7ICAgICAgICAgIC8vIEIgc2V0RGlmZiBBLCAgICAgcmVtb3ZlQWxsCisgICAgICAgCisgIAorICAgIC8qKgorICAgICAqIFV0aWxpdHkgdGhhdCBjb3VsZCBiZSBvbiBTb3J0ZWRTZXQuIEZhc3RlciBpbXBsZW1lbnRhdGlvbiB0aGFuCisgICAgICogd2hhdCBpcyBpbiBKYXZhIGZvciBkb2luZyBjb250YWlucywgZXF1YWxzLCBldGMuCisgICAgICogQHBhcmFtIGEgZmlyc3Qgc2V0CisgICAgICogQHBhcmFtIGFsbG93IGZpbHRlciwgdXNpbmcgQU5ZLCBDT05UQUlOUywgZXRjLgorICAgICAqIEBwYXJhbSBiIHNlY29uZCBzZXQKKyAgICAgKiBAcmV0dXJuIHdoZXRoZXIgdGhlIGZpbHRlciByZWxhdGlvbnNoaXAgaXMgdHJ1ZSBvciBub3QuCisgICAgICovICAgIAorICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBoYXNSZWxhdGlvbihTb3J0ZWRTZXQgYSwgaW50IGFsbG93LCBTb3J0ZWRTZXQgYikgeworICAgICAgICBpZiAoYWxsb3cgPCBOT05FIHx8IGFsbG93ID4gQU5ZKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJSZWxhdGlvbiAiICsgYWxsb3cgKyAiIG91dCBvZiByYW5nZSIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBleHRyYWN0IGZpbHRlciBjb25kaXRpb25zCisgICAgICAgIC8vIHRoZXNlIGFyZSB0aGUgQUxMT1dFRCBjb25kaXRpb25zIFNldAorICAgICAgICAKKyAgICAgICAgYm9vbGVhbiBhbmIgPSAoYWxsb3cgJiBBX05PVF9CKSAhPSAwOworICAgICAgICBib29sZWFuIGFiID0gKGFsbG93ICYgQV9BTkRfQikgIT0gMDsKKyAgICAgICAgYm9vbGVhbiBibmEgPSAoYWxsb3cgJiBCX05PVF9BKSAhPSAwOworICAgICAgICAKKyAgICAgICAgLy8gcXVpY2sgY2hlY2sgb24gc2l6ZXMKKyAgICAgICAgc3dpdGNoKGFsbG93KSB7CisgICAgICAgICAgICBjYXNlIENPTlRBSU5TOiBpZiAoYS5zaXplKCkgPCBiLnNpemUoKSkgcmV0dXJuIGZhbHNlOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgSVNDT05UQUlORUQ6IGlmIChhLnNpemUoKSA+IGIuc2l6ZSgpKSByZXR1cm4gZmFsc2U7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBFUVVBTFM6IGlmIChhLnNpemUoKSAhPSBiLnNpemUoKSkgcmV0dXJuIGZhbHNlOyBicmVhazsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gY2hlY2sgZm9yIG51bGwgc2V0cworICAgICAgICBpZiAoYS5zaXplKCkgPT0gMCkgeworICAgICAgICAgICAgaWYgKGIuc2l6ZSgpID09IDApIHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0dXJuIGJuYTsKKyAgICAgICAgfSBlbHNlIGlmIChiLnNpemUoKSA9PSAwKSB7CisgICAgICAgICAgICByZXR1cm4gYW5iOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBwaWNrIHVwIGZpcnN0IHN0cmluZ3MsIGFuZCBzdGFydCBjb21wYXJpbmcKKyAgICAgICAgSXRlcmF0b3IgYWl0ID0gYS5pdGVyYXRvcigpOworICAgICAgICBJdGVyYXRvciBiaXQgPSBiLml0ZXJhdG9yKCk7CisgICAgICAgIAorICAgICAgICBDb21wYXJhYmxlIGFhID0gKENvbXBhcmFibGUpIGFpdC5uZXh0KCk7CisgICAgICAgIENvbXBhcmFibGUgYmIgPSAoQ29tcGFyYWJsZSkgYml0Lm5leHQoKTsKKyAgICAgICAgCisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBpbnQgY29tcCA9IGFhLmNvbXBhcmVUbyhiYik7CisgICAgICAgICAgICBpZiAoY29tcCA9PSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKCFhYikgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGlmICghYWl0Lmhhc05leHQoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIWJpdC5oYXNOZXh0KCkpIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gYm5hOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWJpdC5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFuYjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYWEgPSAoQ29tcGFyYWJsZSkgYWl0Lm5leHQoKTsKKyAgICAgICAgICAgICAgICBiYiA9IChDb21wYXJhYmxlKSBiaXQubmV4dCgpOworICAgICAgICAgICAgfSBlbHNlIGlmIChjb21wIDwgMCkgeworICAgICAgICAgICAgICAgIGlmICghYW5iKSByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKCFhaXQuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBibmE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGFhID0gKENvbXBhcmFibGUpIGFpdC5uZXh0KCk7IAorICAgICAgICAgICAgfSBlbHNlICB7CisgICAgICAgICAgICAgICAgaWYgKCFibmEpIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAoIWJpdC5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFuYjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYmIgPSAoQ29tcGFyYWJsZSkgYml0Lm5leHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBVdGlsaXR5IHRoYXQgY291bGQgYmUgb24gU29ydGVkU2V0LiBBbGxvd3MgZmFzdGVyIGltcGxlbWVudGF0aW9uIHRoYW4KKyAgICAgKiB3aGF0IGlzIGluIEphdmEgZm9yIGRvaW5nIGFkZEFsbCwgcmVtb3ZlQWxsLCByZXRhaW5BbGwsIChjb21wbGVtZW50QWxsKS4KKyAgICAgKiBAcGFyYW0gYSBmaXJzdCBzZXQKKyAgICAgKiBAcGFyYW0gYWxsb3cgZmlsdGVyLCB1c2luZyBBTlksIENPTlRBSU5TLCBldGMuCisgICAgICogQHBhcmFtIGIgc2Vjb25kIHNldAorICAgICAqIEByZXR1cm4gd2hldGhlciB0aGUgZmlsdGVyIHJlbGF0aW9uc2hpcCBpcyB0cnVlIG9yIG5vdC4KKyAgICAgKi8gICAgCisgICAgcHVibGljIHN0YXRpYyBTb3J0ZWRTZXQgZG9PcGVyYXRpb24oU29ydGVkU2V0IGEsIGludCByZWxhdGlvbiwgU29ydGVkU2V0IGIpIHsKKyAgICAgICAgLy8gVE9ETzogb3B0aW1pemUgdGhpcyBhcyBhYm92ZQorICAgICAgICBUcmVlU2V0IHRlbXA7CisgICAgICAgIHN3aXRjaCAocmVsYXRpb24pIHsKKyAgICAgICAgICAgIGNhc2UgQUREQUxMOgorICAgICAgICAgICAgICAgIGEuYWRkQWxsKGIpOyAKKyAgICAgICAgICAgICAgICByZXR1cm4gYTsKKyAgICAgICAgICAgIGNhc2UgQToKKyAgICAgICAgICAgICAgICByZXR1cm4gYTsgLy8gbm8gYWN0aW9uCisgICAgICAgICAgICBjYXNlIEI6CisgICAgICAgICAgICAgICAgYS5jbGVhcigpOyAKKyAgICAgICAgICAgICAgICBhLmFkZEFsbChiKTsgCisgICAgICAgICAgICAgICAgcmV0dXJuIGE7CisgICAgICAgICAgICBjYXNlIFJFTU9WRUFMTDogCisgICAgICAgICAgICAgICAgYS5yZW1vdmVBbGwoYik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGE7CisgICAgICAgICAgICBjYXNlIFJFVEFJTkFMTDogCisgICAgICAgICAgICAgICAgYS5yZXRhaW5BbGwoYik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGE7CisgICAgICAgICAgICAvLyB0aGUgZm9sbG93aW5nIGlzIHRoZSBvbmx5IGNhc2Ugbm90IHJlYWxseSBzdXBwb3J0ZWQgYnkgSmF2YQorICAgICAgICAgICAgLy8gYWx0aG91Z2ggYWxsIGNvdWxkIGJlIG9wdGltaXplZAorICAgICAgICAgICAgY2FzZSBDT01QTEVNRU5UQUxMOgorICAgICAgICAgICAgICAgIHRlbXAgPSBuZXcgVHJlZVNldChiKTsKKyAgICAgICAgICAgICAgICB0ZW1wLnJlbW92ZUFsbChhKTsKKyAgICAgICAgICAgICAgICBhLnJlbW92ZUFsbChiKTsKKyAgICAgICAgICAgICAgICBhLmFkZEFsbCh0ZW1wKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYTsKKyAgICAgICAgICAgIGNhc2UgQl9SRU1PVkVBTEw6CisgICAgICAgICAgICAgICAgdGVtcCA9IG5ldyBUcmVlU2V0KGIpOworICAgICAgICAgICAgICAgIHRlbXAucmVtb3ZlQWxsKGEpOworICAgICAgICAgICAgICAgIGEuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBhLmFkZEFsbCh0ZW1wKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYTsKKyAgICAgICAgICAgIGNhc2UgTk9ORToKKyAgICAgICAgICAgICAgICBhLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGE7CisgICAgICAgICAgICBkZWZhdWx0OiAKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJSZWxhdGlvbiAiICsgcmVsYXRpb24gKyAiIG91dCBvZiByYW5nZSIpOworICAgICAgICB9CisgICAgfSAgICAKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL1RyaWUuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL1RyaWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43MjAxMTFiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvVHJpZS5qYXZhCkBAIC0wLDAgKzEsNDQxIEBACisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICoKKyogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9pbXBsL1RyaWUuamF2YSx2ICQKKyogJERhdGU6IDIwMDIvMDkvMDYgMTk6MDQ6MDcgJAorKiAkUmV2aXNpb246IDEuOCAkCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKK3BhY2thZ2UgY29tLmlibS5pY3UuaW1wbDsKKworaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5EYXRhSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuVVRGMTY7CitpbXBvcnQgY29tLmlibS5pY3UubGFuZy5VQ2hhcmFjdGVyOworCisvKioKKyAqIDxwPkEgdHJpZSBpcyBhIGtpbmQgb2YgY29tcHJlc3NlZCwgc2VyaWFsaXphYmxlIHRhYmxlIG9mIHZhbHVlcyAKKyAqIGFzc29jaWF0ZWQgd2l0aCBVbmljb2RlIGNvZGUgcG9pbnRzICgwLi4weDEwZmZmZikuPC9wPgorICogPHA+VGhpcyBjbGFzcyBkZWZpbmVzIHRoZSBiYXNpYyBzdHJ1Y3R1cmUgb2YgYSB0cmllIGFuZCBwcm92aWRlcyBtZXRob2RzIAorICogdG8gPGI+cmV0cmlldmUgdGhlIG9mZnNldHMgdG8gdGhlIGFjdHVhbCBkYXRhPC9iPi48L3A+CisgKiA8cD5EYXRhIHdpbGwgYmUgdGhlIGZvcm0gb2YgYW4gYXJyYXkgb2YgYmFzaWMgdHlwZXMsIGNoYXIgb3IgaW50LjwvcD4KKyAqIDxwPlRoZSBhY3R1YWwgZGF0YSBmb3JtYXQgd2lsbCBoYXZlIHRvIGJlIHNwZWNpZmllZCBieSB0aGUgdXNlciBpbiB0aGUKKyAqIGlubmVyIHN0YXRpYyBpbnRlcmZhY2UgY29tLmlibS5pY3UuaW1wbC5UcmllLkRhdGFNYW5pcHVsYXRlLjwvcD4KKyAqIDxwPlRoaXMgdHJpZSBpbXBsZW1lbnRhdGlvbiBpcyBvcHRpbWl6ZWQgZm9yIGdldHRpbmcgb2Zmc2V0IHdoaWxlIHdhbGtpbmcKKyAqIGZvcndhcmQgdGhyb3VnaCBhIFVURi0xNiBzdHJpbmcuCisgKiBUaGVyZWZvcmUsIHRoZSBzaW1wbGVzdCBhbmQgZmFzdGVzdCBhY2Nlc3MgbWFjcm9zIGFyZSB0aGUKKyAqIGZyb21MZWFkKCkgYW5kIGZyb21PZmZzZXRUcmFpbCgpIG1ldGhvZHMuCisgKiBUaGUgZnJvbUJNUCgpIG1ldGhvZCBhcmUgYSBsaXR0bGUgbW9yZSBjb21wbGljYXRlZDsgdGhleSBnZXQgb2Zmc2V0cyBldmVuCisgKiBmb3IgbGVhZCBzdXJyb2dhdGUgY29kZXBvaW50cywgd2hpbGUgdGhlIGZyb21MZWFkKCkgbWV0aG9kIGdldCBzcGVjaWFsCisgKiAiZm9sZGVkIiBvZmZzZXRzIGZvciBsZWFkIHN1cnJvZ2F0ZSBjb2RlIHVuaXRzIGlmIHRoZXJlIGlzIHJlbGV2YW50IGRhdGEKKyAqIGFzc29jaWF0ZWQgd2l0aCB0aGVtLgorICogRnJvbSBzdWNoIGEgZm9sZGVkIG9mZnNldHMsIGFuIG9mZnNldCBuZWVkcyB0byBiZSBleHRyYWN0ZWQgdG8gc3VwcGx5CisgKiB0byB0aGUgZnJvbU9mZnNldFRyYWlsKCkgbWV0aG9kcy4KKyAqIFRvIGhhbmRsZSBzdWNoIHN1cHBsZW1lbnRhcnkgY29kZXBvaW50cywgc29tZSBvZmZzZXQgaW5mb3JtYXRpb24gYXJlIGtlcHQKKyAqIGluIHRoZSBkYXRhLjwvcD4KKyAqIDxwPk1ldGhvZHMgaW4gY29tLmlibS5pY3UuaW1wbC5UcmllLkRhdGFNYW5pcHVsYXRlIGFyZSBjYWxsZWQgdG8gcmV0cmlldmUgCisgKiB0aGF0IG9mZnNldCBmcm9tIHRoZSBmb2xkZWQgdmFsdWUgZm9yIHRoZSBsZWFkIHN1cnJvZ2F0ZSB1bml0LjwvcD4KKyAqIDxwPkZvciBleGFtcGxlcyBvZiB1c2UsIHNlZSBjb20uaWJtLmljdS5pbXBsLkNoYXJUcmllIG9yIAorICogY29tLmlibS5pY3UuaW1wbC5JbnRUcmllLjwvcD4KKyAqIEBhdXRob3Igc3lud2VlCisgKiBAc2VlIGNvbS5pYm0uaWN1LmltcGwuQ2hhclRyaWUKKyAqIEBzZWUgY29tLmlibS5pY3UuaW1wbC5JbnRUcmllCisgKiBAc2luY2UgcmVsZWFzZSAyLjEsIEphbiAwMSAyMDAyCisgKi8KK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBUcmllCit7CisgICAgLy8gcHVibGljIGNsYXNzIGRlY2xhcmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvKioKKyAgICAqIENoYXJhY3RlciBkYXRhIGluIGNvbS5pYm0uaW1wbC5UcmllIGhhdmUgZGlmZmVyZW50IHVzZXItc3BlY2lmaWVkIGZvcm1hdAorICAgICogZm9yIGRpZmZlcmVudCBwdXJwb3Nlcy4KKyAgICAqIFRoaXMgaW50ZXJmYWNlIHNwZWNpZmllcyBtZXRob2RzIHRvIGJlIGltcGxlbWVudGVkIGluIG9yZGVyIGZvcgorICAgICogY29tLmlibS5pbXBsLlRyaWUsIHRvIHN1cnJvZ2F0ZSBvZmZzZXQgaW5mb3JtYXRpb24gZW5jYXBzdWxhdGVkIHdpdGhpbiAKKyAgICAqIHRoZSBkYXRhLgorICAgICogQGRyYWZ0IDIuMQorICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnRlcmZhY2UgRGF0YU1hbmlwdWxhdGUKKyAgICB7CisgICAgICAgIC8qKgorICAgICAgICAqIENhbGxlZCBieSBjb20uaWJtLmljdS5pbXBsLlRyaWUgdG8gZXh0cmFjdCBmcm9tIGEgbGVhZCBzdXJyb2dhdGUncyAKKyAgICAgICAgKiBkYXRhCisgICAgICAgICogdGhlIGluZGV4IGFycmF5IG9mZnNldCBvZiB0aGUgaW5kZXhlcyBmb3IgdGhhdCBsZWFkIHN1cnJvZ2F0ZS4KKyAgICAgICAgKiBAcGFyYW0gdmFsdWUgZGF0YSB2YWx1ZSBmb3IgYSBzdXJyb2dhdGUgZnJvbSB0aGUgdHJpZSwgaW5jbHVkaW5nIHRoZQorICAgICAgICAqICAgICAgICBmb2xkaW5nIG9mZnNldAorICAgICAgICAqIEByZXR1cm4gZGF0YSBvZmZzZXQgb3IgMCBpZiB0aGVyZSBpcyBubyBkYXRhIGZvciB0aGUgbGVhZCBzdXJyb2dhdGUKKyAgICAgICAgKiBAZHJhZnQgMi4xCisgICAgICAgICovCisgICAgICAgIHB1YmxpYyBpbnQgZ2V0Rm9sZGluZ09mZnNldChpbnQgdmFsdWUpOyAKKyAgICB9CisgICAgCisgICAgLy8gcHVibGljIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvKioKKyAgICAgKiBEZXRlcm1pbmVzIGlmIHRoaXMgdHJpZSBoYXMgYSBsaW5lYXIgbGF0aW4gMSBhcnJheQorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGlzIHRyaWUgaGFzIGEgbGluZWFyIGxhdGluIDEgYXJyYXksIGZhbHNlIG90aGVyd2lzZQorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBib29sZWFuIGlzTGF0aW4xTGluZWFyKCkKKyAgICB7CisgICAgCXJldHVybiBtX2lzTGF0aW4xTGluZWFyXzsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQ2hlY2tzIGlmIHRoZSBhcmd1bWVudCBUcmllIGhhcyB0aGUgc2FtZSBkYXRhIGFzIHRoaXMgVHJpZS4KKyAgICAgKiBBdHRyaWJ1dGVzIGFyZSBjaGVja2VkIGJ1dCBub3QgdGhlIGluZGV4IGRhdGEuCisgICAgICogQHBhcmFtIG90aGVyIFRyaWUgdG8gY2hlY2sKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGFyZ3VtZW50IFRyaWUgaGFzIHRoZSBzYW1lIGRhdGEgYXMgdGhpcyBUcmllLCBmYWxzZQorICAgICAqICAgICAgICAgb3RoZXJ3aXNlCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCBvdGhlcikgCisgICAgeworICAgICAgICBpZiAob3RoZXIgPT0gdGhpcykgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCEob3RoZXIgaW5zdGFuY2VvZiBUcmllKSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIFRyaWUgb3RoZXJ0cmllID0gKFRyaWUpb3RoZXI7CisgICAgICAgIHJldHVybiBtX2lzTGF0aW4xTGluZWFyXyA9PSBvdGhlcnRyaWUubV9pc0xhdGluMUxpbmVhcl8KKyAgICAgICAgICAgICAgICYmIG1fb3B0aW9uc18gPT0gb3RoZXJ0cmllLm1fb3B0aW9uc18KKyAgICAgICAgICAgICAgICYmIG1fZGF0YUxlbmd0aF8gPT0gb3RoZXJ0cmllLm1fZGF0YUxlbmd0aF8KKyAgICAgICAgICAgICAgICYmIEFycmF5cy5lcXVhbHMobV9pbmRleF8sIG90aGVydHJpZS5tX2luZGV4Xyk7CisgICAgfQorCisgICAgLy8gcHJvdGVjdGVkIGNvbnN0cnVjdG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICogVHJpZSBjb25zdHJ1Y3RvciBmb3IgQ2hhclRyaWUgdXNlLgorICAgICogQHBhcmFtIGlucHV0U3RyZWFtIElDVSBkYXRhIGZpbGUgaW5wdXQgc3RyZWFtIHdoaWNoIGNvbnRhaW5zIHRoZQorICAgICogICAgICAgICAgICAgICAgICAgICAgICB0cmllCisgICAgKiBAcGFyYW0gZGF0YW1hbmlwdWxhdGUgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGluZm9ybWF0aW9uIHRvIHBhcnNlIHRoZSAKKyAgICAqICAgICAgICAgICAgICAgICAgICAgICB0cmllIGRhdGEKKyAgICAqIEBleGNlcHRpb24gSU9FeGNlcHRpb24gdGhyb3duIHdoZW4gaW5wdXQgc3RyZWFtIGRvZXMgbm90IGhhdmUgdGhlCisgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0IGhlYWRlci4KKyAgICAqIEBkcmFmdCAyLjEKKyAgICAqLworICAgIHByb3RlY3RlZCBUcmllKElucHV0U3RyZWFtIGlucHV0U3RyZWFtLCAKKyAgICAgICAgICAgICAgICAgICBEYXRhTWFuaXB1bGF0ZSAgZGF0YU1hbmlwdWxhdGUpIHRocm93cyBJT0V4Y2VwdGlvbgorICAgIHsKKyAgICAgICAgRGF0YUlucHV0U3RyZWFtIGlucHV0ID0gbmV3IERhdGFJbnB1dFN0cmVhbShpbnB1dFN0cmVhbSk7CisgICAgICAgIC8vIE1hZ2ljIG51bWJlciB0byBhdXRoZW50aWNhdGUgdGhlIGRhdGEuCisgICAgICAgIGludCBzaWduYXR1cmUgPSBpbnB1dC5yZWFkSW50KCk7CisgICAgICAgIG1fb3B0aW9uc18gICAgPSBpbnB1dC5yZWFkSW50KCk7CisgICAgICAgIAorICAgICAgICBpZiAoIWNoZWNrSGVhZGVyKHNpZ25hdHVyZSkpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIklDVSBkYXRhIGZpbGUgZXJyb3I6IFRyaWUgaGVhZGVyIGF1dGhlbnRpY2F0aW9uIGZhaWxlZCwgcGxlYXNlIGNoZWNrIGlmIHlvdSBoYXZlIHRoZSBtb3N0IHVwZGF0ZWQgSUNVIGRhdGEgZmlsZSIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBtX2RhdGFNYW5pcHVsYXRlXyA9IGRhdGFNYW5pcHVsYXRlOworICAgICAgICBtX2lzTGF0aW4xTGluZWFyXyA9IChtX29wdGlvbnNfICYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEVBREVSX09QVElPTlNfTEFUSU4xX0lTX0xJTkVBUl9NQVNLXykgIT0gMDsKKyAgICAgICAgbV9kYXRhT2Zmc2V0XyAgICAgPSBpbnB1dC5yZWFkSW50KCk7CisgICAgICAgIG1fZGF0YUxlbmd0aF8gICAgID0gaW5wdXQucmVhZEludCgpOworICAgICAgICB1bnNlcmlhbGl6ZShpbnB1dFN0cmVhbSk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICogVHJpZSBjb25zdHJ1Y3RvcgorICAgICogQHBhcmFtIGluZGV4IGFycmF5IHRvIGJlIHVzZWQgZm9yIGluZGV4CisgICAgKiBAcGFyYW0gb3B0aW9ucyB1c2VkIGJ5IHRoZSB0cmllCisgICAgKiBAcGFyYW0gZGF0YW1hbmlwdWxhdGUgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGluZm9ybWF0aW9uIHRvIHBhcnNlIHRoZSAKKyAgICAqICAgICAgICAgICAgICAgICAgICAgICB0cmllIGRhdGEKKyAgICAqIEBkcmFmdCAyLjIKKyAgICAqLworICAgIHByb3RlY3RlZCBUcmllKGNoYXIgaW5kZXhbXSwgaW50IG9wdGlvbnMsIERhdGFNYW5pcHVsYXRlIGRhdGFNYW5pcHVsYXRlKQorICAgIHsKKyAgICAgICAgbV9vcHRpb25zXyA9IG9wdGlvbnM7CisgICAgICAgIG1fZGF0YU1hbmlwdWxhdGVfID0gZGF0YU1hbmlwdWxhdGU7CisgICAgICAgIG1faXNMYXRpbjFMaW5lYXJfID0gKG1fb3B0aW9uc18gJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIRUFERVJfT1BUSU9OU19MQVRJTjFfSVNfTElORUFSX01BU0tfKSAhPSAwOworICAgICAgICBtX2luZGV4XyA9IGluZGV4OworICAgIH0KKworCisgICAgLy8gcHJvdGVjdGVkIGRhdGEgbWVtYmVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICogU2hpZnQgc2l6ZSBmb3Igc2hpZnRpbmcgcmlnaHQgdGhlIGlucHV0IGluZGV4LiAxLi45CisgICAgKiBAZHJhZnQgMi4xCisgICAgKi8KKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBJTkRFWF9TVEFHRV8xX1NISUZUXyA9IDU7CisgICAgLyoqCisgICAgKiBTaGlmdCBzaXplIGZvciBzaGlmdGluZyBsZWZ0IHRoZSBpbmRleCBhcnJheSB2YWx1ZXMuCisgICAgKiBJbmNyZWFzZXMgcG9zc2libGUgZGF0YSBzaXplIHdpdGggMTYtYml0IGluZGV4IHZhbHVlcyBhdCB0aGUgY29zdAorICAgICogb2YgY29tcGFjdGFiaWxpdHkuCisgICAgKiBUaGlzIHJlcXVpcmVzIGJsb2NrcyBvZiBzdGFnZSAyIGRhdGEgdG8gYmUgYWxpZ25lZCBieQorICAgICogREFUQV9HUkFOVUxBUklUWS4KKyAgICAqIDAuLklOREVYX1NUQUdFXzFfU0hJRlQKKyAgICAqIEBkcmFmdCAyLjEKKyAgICAqLworICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IElOREVYX1NUQUdFXzJfU0hJRlRfID0gMjsKKyAgICAvKioKKyAgICAqIE1hc2sgZm9yIGdldHRpbmcgdGhlIGxvd2VyIGJpdHMgZnJvbSB0aGUgaW5wdXQgaW5kZXguCisgICAgKiBEQVRBX0JMT0NLX0xFTkdUSF8gLSAxLgorICAgICogQGRyYWZ0IDIuMQorICAgICovCisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgSU5ERVhfU1RBR0VfM19NQVNLXyA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEgPDwgSU5ERVhfU1RBR0VfMV9TSElGVF8pIC0gMTsKKyAgICAvKioKKyAgICAqIFN1cnJvZ2F0ZSBtYXNrIHRvIHVzZSB3aGVuIHNoaWZ0aW5nIG9mZnNldCB0byByZXRyaWV2ZSBzdXBwbGVtZW50YXJ5CisgICAgKiB2YWx1ZXMKKyAgICAqIEBkcmFmdCAyLjEKKyAgICAqLworICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IFNVUlJPR0FURV9NQVNLXyA9IDB4M0ZGOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAvKioKKyAgICAqIEluZGV4IG9yIFVURjE2IGNoYXJhY3RlcnMKKyAgICAqIEBkcmFmdCAyLjEKKyAgICAqLworICAgIHByb3RlY3RlZCBjaGFyIG1faW5kZXhfW107CisgICAgLyoqCisgICAgKiBJbnRlcm5hbCBUcmllVmFsdWUgd2hpY2ggaGFuZGxlcyB0aGUgcGFyc2luZyBvZiB0aGUgZGF0YSB2YWx1ZS4KKyAgICAqIFRoaXMgY2xhc3MgaXMgdG8gYmUgaW1wbGVtZW50ZWQgYnkgdGhlIHVzZXIKKyAgICAqIEBkcmFmdCAyLjEKKyAgICAqLworICAgIHByb3RlY3RlZCBEYXRhTWFuaXB1bGF0ZSBtX2RhdGFNYW5pcHVsYXRlXzsKKyAgICAvKioKKyAgICAqIFN0YXJ0IGluZGV4IG9mIHRoZSBkYXRhIHBvcnRpb24gb2YgdGhlIHRyaWUuIENoYXJUcmllIGNvbWJpbmVzIAorICAgICogaW5kZXggYW5kIGRhdGEgaW50byBhIGNoYXIgYXJyYXksIHNvIHRoaXMgaXMgdXNlZCB0byBpbmRpY2F0ZSB0aGUgCisgICAgKiBpbml0aWFsIG9mZnNldCB0byB0aGUgZGF0YSBwb3J0aW9uLgorICAgICogQGRyYWZ0IDIuMQorICAgICovCisgICAgcHJvdGVjdGVkIGludCBtX2RhdGFPZmZzZXRfOworICAgIC8qKgorICAgICogTGVuZ3RoIG9mIHRoZSBkYXRhIGFycmF5IAorICAgICovCisgICAgcHJvdGVjdGVkIGludCBtX2RhdGFMZW5ndGhfOworICAgIAorICAgIC8vIHByb3RlY3RlZCBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAqIEdldHMgdGhlIG9mZnNldCB0byB0aGUgZGF0YSB3aGljaCB0aGUgc3Vycm9nYXRlIHBhaXIgcG9pbnRzIHRvLgorICAgICogQHBhcmFtIGxlYWQgbGVhZCBzdXJyb2dhdGUKKyAgICAqIEBwYXJhbSB0cmFpbCB0cmFpbGluZyBzdXJyb2dhdGUKKyAgICAqIEByZXR1cm4gb2Zmc2V0IHRvIGRhdGEKKyAgICAqIEBkcmFmdCAyLjEKKyAgICAqLworICAgIHByb3RlY3RlZCBhYnN0cmFjdCBpbnQgZ2V0U3Vycm9nYXRlT2Zmc2V0KGNoYXIgbGVhZCwgY2hhciB0cmFpbCk7CisgICAgCisgICAgLyoqCisgICAgKiBHZXRzIHRoZSB2YWx1ZSBhdCB0aGUgYXJndW1lbnQgaW5kZXgKKyAgICAqIEBwYXJhbSBpbmRleCB2YWx1ZSBhdCBpbmRleCB3aWxsIGJlIHJldHJpZXZlZAorICAgICogQHJldHVybiAzMiBiaXQgdmFsdWUgCisgICAgKiBAZHJhZnQgMi4xCisgICAgKi8KKyAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgaW50IGdldFZhbHVlKGludCBpbmRleCk7CisKKyAgICAvKioKKyAgICAqIEdldHMgdGhlIGRlZmF1bHQgaW5pdGlhbCB2YWx1ZQorICAgICogQHJldHVybiAzMiBiaXQgdmFsdWUgCisgICAgKiBAZHJhZnQgMi4xCisgICAgKi8KKyAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgaW50IGdldEluaXRpYWxWYWx1ZSgpOworICAgIAorICAgIC8qKgorICAgICogR2V0cyB0aGUgb2Zmc2V0IHRvIHRoZSBkYXRhIHdoaWNoIHRoZSBpbmRleCBjaCBhZnRlciB2YXJpYWJsZSBvZmZzZXQKKyAgICAqIHBvaW50cyB0by4KKyAgICAqIE5vdGUgZm9yIGxvY2F0aW5nIGEgbm9uLXN1cHBsZW1lbnRhcnkgY2hhcmFjdGVyIGRhdGEgb2Zmc2V0LCBjYWxsaW5nCisgICAgKiA8cD4KKyAgICAqIGdldFJhd09mZnNldCgwLCBjaCk7CisgICAgKiA8L3A+CisgICAgKiB3aWxsIGRvLiBPdGhlcndpc2UgaWYgaXQgaXMgYSBzdXBwbGVtZW50YXJ5IGNoYXJhY3RlciBmb3JtZWQgYnkKKyAgICAqIHN1cnJvZ2F0ZXMgbGVhZCBhbmQgdHJhaWwuIFRoZW4gd2Ugd291bGQgaGF2ZSB0byBjYWxsIGdldFJhd09mZnNldCgpCisgICAgKiB3aXRoIGdldEZvbGRpbmdJbmRleE9mZnNldCgpLiBTZWUgZ2V0U3Vycm9nYXRlT2Zmc2V0KCkuCisgICAgKiBAcGFyYW0gb2Zmc2V0IGluZGV4IG9mZnNldCB3aGljaCBjaCBpcyB0byBzdGFydCBmcm9tCisgICAgKiBAcGFyYW0gY2ggaW5kZXggdG8gYmUgdXNlZCBhZnRlciBvZmZzZXQKKyAgICAqIEByZXR1cm4gb2Zmc2V0IHRvIHRoZSBkYXRhCisgICAgKiBAZHJhZnQgMi4xCisgICAgKi8KKyAgICBwcm90ZWN0ZWQgZmluYWwgaW50IGdldFJhd09mZnNldChpbnQgb2Zmc2V0LCBjaGFyIGNoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIChtX2luZGV4X1tvZmZzZXQgKyAoY2ggPj4gSU5ERVhfU1RBR0VfMV9TSElGVF8pXSA8PAorICAgICAgICAgICAgICAgIElOREVYX1NUQUdFXzJfU0hJRlRfKSArIChjaCAmIElOREVYX1NUQUdFXzNfTUFTS18pOworICAgIH0KKworICAgIC8qKgorICAgICogR2V0cyB0aGUgb2Zmc2V0IHRvIGRhdGEgd2hpY2ggdGhlIEJNUCBjaGFyYWN0ZXIgcG9pbnRzIHRvCisgICAgKiBUcmVhdHMgYSBsZWFkIHN1cnJvZ2F0ZSBhcyBhIG5vcm1hbCBjb2RlIHBvaW50LgorICAgICogQHBhcmFtIGNoIEJNUCBjaGFyYWN0ZXIKKyAgICAqIEByZXR1cm4gb2Zmc2V0IHRvIGRhdGEKKyAgICAqIEBkcmFmdCAyLjEKKyAgICAqLworICAgIHByb3RlY3RlZCBmaW5hbCBpbnQgZ2V0Qk1QT2Zmc2V0KGNoYXIgY2gpCisgICAgeworICAgICAgICBpbnQgb2Zmc2V0ID0gMDsKKyAgICAgICAgaWYgKFVURjE2LmlzTGVhZFN1cnJvZ2F0ZShjaCkpIHsKKyAgICAgICAgICAgIG9mZnNldCA9IExFQURfSU5ERVhfT0ZGU0VUXzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZ2V0UmF3T2Zmc2V0KG9mZnNldCwgY2gpOworICAgIH0KKworICAgIC8qKgorICAgICogR2V0cyB0aGUgb2Zmc2V0IHRvIHRoZSBkYXRhIHdoaWNoIHRoaXMgbGVhZCBzdXJyb2dhdGUgY2hhcmFjdGVyIHBvaW50cworICAgICogdG8uCisgICAgKiBEYXRhIGF0IHRoZSByZXR1cm5lZCBvZmZzZXQgbWF5IGNvbnRhaW4gZm9sZGluZyBvZmZzZXQgaW5mb3JtYXRpb24gZm9yCisgICAgKiB0aGUgbmV4dCB0cmFpbGluZyBzdXJyb2dhdGUgY2hhcmFjdGVyLgorICAgICogQHBhcmFtIGNoIGxlYWQgc3Vycm9nYXRlIGNoYXJhY3RlcgorICAgICogQHJldHVybiBvZmZzZXQgdG8gZGF0YQorICAgICogQGRyYWZ0IDIuMQorICAgICovCisgICAgcHJvdGVjdGVkIGZpbmFsIGludCBnZXRMZWFkT2Zmc2V0KGNoYXIgY2gpCisgICAgeworICAgICAgIHJldHVybiBnZXRSYXdPZmZzZXQoMCwgY2gpOworICAgIH0KKworICAgIC8qKgorICAgICogSW50ZXJuYWwgdHJpZSBnZXR0ZXIgZnJvbSBhIGNvZGUgcG9pbnQuCisgICAgKiBDb3VsZCBiZSBmYXN0ZXIoPykgYnV0IGxvbmdlciB3aXRoCisgICAgKiAgIGlmKChjMzIpPD0weGQ3ZmYpIHsgKHJlc3VsdCk9X1RSSUVfR0VUX1JBVyh0cmllLCBkYXRhLCAwLCBjMzIpOyB9CisgICAgKiBHZXRzIHRoZSBvZmZzZXQgdG8gZGF0YSB3aGljaCB0aGUgY29kZXBvaW50IHBvaW50cyB0bworICAgICogQHBhcmFtIGNoIGNvZGVwb2ludAorICAgICogQHJldHVybiBvZmZzZXQgdG8gZGF0YQorICAgICogQGRyYWZ0IDIuMQorICAgICovCisgICAgcHJvdGVjdGVkIGZpbmFsIGludCBnZXRDb2RlUG9pbnRPZmZzZXQoaW50IGNoKQorICAgIHsKKyAgICAgICAgaWYgKFVDaGFyYWN0ZXIuaXNCTVAoY2gpKSB7CisgICAgICAgICAgICAvLyBCTVAgY29kZXBvaW50CisgICAgICAgICAgICByZXR1cm4gZ2V0Qk1QT2Zmc2V0KChjaGFyKWNoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY2ggPD0gVUNoYXJhY3Rlci5NQVhfVkFMVUUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNoYXIgbGVhZCA9IFVURjE2LmdldExlYWRTdXJyb2dhdGUoY2gpOworICAgICAgICAgICAgLy8gbG9vayBhdCB0aGUgY29uc3RydWN0aW9uIG9mIHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVycworICAgICAgICAgICAgLy8gdHJhaWwgZm9ybXMgdGhlIGVuZHMgb2YgaXQuCisgICAgICAgICAgICByZXR1cm4gZ2V0U3Vycm9nYXRlT2Zmc2V0KGxlYWQsIChjaGFyKShjaCAmIFNVUlJPR0FURV9NQVNLXykpOworICAgICAgICB9CisgICAgICAgIC8vIHJldHVybiAtMSBpZiB0aGVyZSBpcyBhbiBlcnJvciwgaW4gdGhpcyBjYXNlIHdlIHJldHVybiB0aGUgZGVmYXVsdAorICAgICAgICAvLyB2YWx1ZTogbV9pbml0aWFsVmFsdWVfCisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKioKKyAgICAqIDxwPlBhcnNlcyB0aGUgaW5wdXRzdHJlYW0gYW5kIGNyZWF0ZXMgdGhlIHRyaWUgaW5kZXggd2l0aCBpdC48L3A+CisgICAgKiA8cD5UaGlzIGlzIG92ZXJ3cml0dGVuIGJ5IHRoZSBjaGlsZCBjbGFzc2VzLgorICAgICogQHBhcmFtIGlucHV0U3RyZWFtIGlucHV0IHN0cmVhbSBjb250YWluaW5nIHRoZSB0cmllIGluZm9ybWF0aW9uCisgICAgKiBAZXhjZXB0aW9uIElPRXhjZXB0aW9uIHRocm93biB3aGVuIGRhdGEgcmVhZGluZyBmYWlscy4KKyAgICAqIEBkcmFmdCAyLjEKKyAgICAqLworICAgIHByb3RlY3RlZCB2b2lkIHVuc2VyaWFsaXplKElucHV0U3RyZWFtIGlucHV0U3RyZWFtKSB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICB7CisgICAgICAgIC8vaW5kZXhMZW5ndGggaXMgYSBtdWx0aXBsZSBvZiAxMDI0ID4+IElOREVYX1NUQUdFXzJfU0hJRlRfCisgICAgICAgIG1faW5kZXhfICAgICAgICAgICAgICA9IG5ldyBjaGFyW21fZGF0YU9mZnNldF9dOworICAgICAgICBEYXRhSW5wdXRTdHJlYW0gaW5wdXQgPSBuZXcgRGF0YUlucHV0U3RyZWFtKGlucHV0U3RyZWFtKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX2RhdGFPZmZzZXRfOyBpICsrKSB7CisgICAgICAgICAgICAgbV9pbmRleF9baV0gPSBpbnB1dC5yZWFkQ2hhcigpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgKiBEZXRlcm1pbmVzIGlmIHRoaXMgaXMgYSAzMiBiaXQgdHJpZQorICAgICogQHJldHVybiB0cnVlIGlmIG9wdGlvbnMgc3BlY2lmaWVzIHRoaXMgaXMgYSAzMiBiaXQgdHJpZQorICAgICogQGRyYWZ0IDIuMQorICAgICovCisgICAgcHJvdGVjdGVkIGZpbmFsIGJvb2xlYW4gaXNJbnRUcmllKCkKKyAgICB7CisgICAgICAgIHJldHVybiAobV9vcHRpb25zXyAmIEhFQURFUl9PUFRJT05TX0RBVEFfSVNfMzJfQklUXykgIT0gMDsKKyAgICB9CisKKyAgICAvKioKKyAgICAqIERldGVybWluZXMgaWYgdGhpcyBpcyBhIDE2IGJpdCB0cmllCisgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhpcyBpcyBhIDE2IGJpdCB0cmllCisgICAgKiBAZHJhZnQgMi4xCisgICAgKi8KKyAgICBwcm90ZWN0ZWQgZmluYWwgYm9vbGVhbiBpc0NoYXJUcmllKCkKKyAgICB7CisgICAgICAgIHJldHVybiAobV9vcHRpb25zXyAmIEhFQURFUl9PUFRJT05TX0RBVEFfSVNfMzJfQklUXykgPT0gMDsKKyAgICB9CisKKyAgICAvLyBwcml2YXRlIGRhdGEgbWVtYmVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgKiBMZWFkIHN1cnJvZ2F0ZSBjb2RlIHBvaW50cycgaW5kZXggZGlzcGxhY2VtZW50IGluIHRoZSBpbmRleCBhcnJheS4KKyAgICAqIDB4MTAwMDAtMHhkODAwPTB4MjgwMAorICAgICogMHgyODAwID4+IElOREVYX1NUQUdFXzFfU0hJRlRfCisgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTEVBRF9JTkRFWF9PRkZTRVRfID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjgwMCA+PiA1OworICAgIC8qKgorICAgICogU2lnbmF0dXJlIGluZGV4CisgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSEVBREVSX1NJR05BVFVSRV9JTkRFWF8gPSAwOworICAgIC8qKgorICAgICogT3B0aW9ucyBpbmRleAorICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEhFQURFUl9PUFRJT05TX0lOREVYXyA9IDEgPDwgMTsKKyAgICAvKioKKyAgICAqIEluZGV4IGxlbmd0aCBpbmRleAorICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEhFQURFUl9JTkRFWF9MRU5HVEhfSU5ERVhfID0gMiA8PCAxOworICAgIC8qKgorICAgICogRGF0YSBsZW5ndGggaW5kZXgKKyAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBIRUFERVJfREFUQV9MRU5HVEhfSU5ERVhfID0gMyA8PCAxOworICAgIC8qKgorICAgICogU2l6ZSBvZiBoZWFkZXIKKyAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBIRUFERVJfTEVOR1RIXyA9IDQgPDwgMTsKKyAgICAvKioKKyAgICAqIExhdGluIDEgb3B0aW9uIG1hc2sKKyAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBIRUFERVJfT1BUSU9OU19MQVRJTjFfSVNfTElORUFSX01BU0tfID0gMHgyMDA7CisgICAgLyoqCisgICAgKiBDb25zdGFudCBudW1iZXIgdG8gYXV0aGVudGljYXRlIHRoZSBieXRlIGJsb2NrCisgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSEVBREVSX1NJR05BVFVSRV8gPSAweDU0NzI2OTY1OworICAgIC8qKgorICAgICogSGVhZGVyIG9wdGlvbiBmb3JtYXR0aW5nCisgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSEVBREVSX09QVElPTlNfU0hJRlRfTUFTS18gPSAweEY7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEhFQURFUl9PUFRJT05TX0lOREVYX1NISUZUXyA9IDQ7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEhFQURFUl9PUFRJT05TX0RBVEFfSVNfMzJfQklUXyA9IDB4MTAwOworICAgIAorICAgIC8qKgorICAgICogRmxhZyBpbmRpY2F0b3IgZm9yIExhdGluIHF1aWNrIGFjY2VzcyBkYXRhIGJsb2NrCisgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gbV9pc0xhdGluMUxpbmVhcl87CisgICAgCisgICAgLyoqCisgICAgKiA8cD5UcmllIG9wdGlvbnMgZmllbGQuPC9wPgorICAgICogPHA+b3B0aW9ucyBiaXQgZmllbGQ6PGJyPgorICAgICogOSAgMSA9IExhdGluLTEgZGF0YSBpcyBzdG9yZWQgbGluZWFybHkgYXQgZGF0YSArIERBVEFfQkxPQ0tfTEVOR1RIPGJyPgorICAgICogOCAgMCA9IDE2LWJpdCBkYXRhLCAxPTMyLWJpdCBkYXRhPGJyPgorICAgICogNy4uNCAgSU5ERVhfU1RBR0VfMV9TSElGVCAgIC8vIDAuLklOREVYX1NUQUdFXzJfU0hJRlQ8YnI+CisgICAgKiAzLi4wICBJTkRFWF9TVEFHRV8yX1NISUZUICAgLy8gMS4uOTxicj4KKyAgICAqLworICAgIHByaXZhdGUgaW50IG1fb3B0aW9uc187CisgIAorICAgIC8vIHByaXZhdGUgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvKioKKyAgICAqIEF1dGhlbnRpY2F0ZXMgcmF3IGRhdGEgaGVhZGVyLgorICAgICogQ2hlY2tpbmcgdGhlIGhlYWRlciBpbmZvcm1hdGlvbiwgc2lnbmF0dXJlIGFuZCBvcHRpb25zLgorICAgICogQHBhcmFtIHJhd2RhdGEgYXJyYXkgb2YgY2hhciBkYXRhIHRvIGJlIGNoZWNrZWQKKyAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgaGVhZGVyIGlzIGF1dGhlbnRpY2F0ZWQgdmFsaWQKKyAgICAqIEBkcmFmdCAyLjEKKyAgICAqLworICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiBjaGVja0hlYWRlcihpbnQgc2lnbmF0dXJlKQorICAgIHsKKyAgICAgICAgLy8gY2hlY2sgdGhlIHNpZ25hdHVyZQorICAgICAgICAvLyBUcmllIGluIGJpZy1lbmRpYW4gVVMtQVNDSUkgKDB4NTQ3MjY5NjUpLgorICAgICAgICAvLyBNYWdpYyBudW1iZXIgdG8gYXV0aGVudGljYXRlIHRoZSBkYXRhLgorICAgICAgICBpZiAoc2lnbmF0dXJlICE9IEhFQURFUl9TSUdOQVRVUkVfKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBpZiAoKG1fb3B0aW9uc18gJiBIRUFERVJfT1BUSU9OU19TSElGVF9NQVNLXykgIT0gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5ERVhfU1RBR0VfMV9TSElGVF8gfHwKKyAgICAgICAgICAgICgobV9vcHRpb25zXyA+PiBIRUFERVJfT1BUSU9OU19JTkRFWF9TSElGVF8pICYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhFQURFUl9PUFRJT05TX1NISUZUX01BU0tfKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE9IElOREVYX1NUQUdFXzJfU0hJRlRfKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL1RyaWVCdWlsZGVyLmphdmEgYi9zcmMvY29tL2libS9pY3UvaW1wbC9UcmllQnVpbGRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjA2ZmY4ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9UcmllQnVpbGRlci5qYXZhCkBAIC0wLDAgKzEsMjYyIEBACisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICoKKyogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9pbXBsL1RyaWVCdWlsZGVyLmphdmEsdiAkIAorKiAkRGF0ZTogMjAwMi8wOS8wNiAwMTo1MDo0MyAkIAorKiAkUmV2aXNpb246IDEuOCAkCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKK3BhY2thZ2UgY29tLmlibS5pY3UuaW1wbDsKKworaW1wb3J0IGNvbS5pYm0uaWN1LmxhbmcuVUNoYXJhY3RlcjsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworCisvKioKKyAqIEJ1aWxkZXIgbGFzcyB0byBtYW5pcHVsYXRlIGFuZCBnZW5lcmF0ZSBhIHRyaWUuCisgKiBUaGlzIGlzIHVzZWZ1bCBmb3IgSUNVIGRhdGEgaW4gcHJpbWl0aXZlIHR5cGVzLgorICogUHJvdmlkZXMgYSBjb21wYWN0IHdheSB0byBzdG9yZSBpbmZvcm1hdGlvbiB0aGF0IGlzIGluZGV4ZWQgYnkgVW5pY29kZSAKKyAqIHZhbHVlcywgc3VjaCBhcyBjaGFyYWN0ZXIgcHJvcGVydGllcywgdHlwZXMsIGtleWJvYXJkIHZhbHVlcywgZXRjLiBUaGlzIGlzIAorICogdmVyeSB1c2VmdWwgd2hlbiB5b3UgaGF2ZSBhIGJsb2NrIG9mIFVuaWNvZGUgZGF0YSB0aGF0IGNvbnRhaW5zIHNpZ25pZmljYW50IAorICogdmFsdWVzIHdoaWxlIHRoZSByZXN0IG9mIHRoZSBVbmljb2RlIGRhdGEgaXMgdW51c2VkIGluIHRoZSBhcHBsaWNhdGlvbiBvciAKKyAqIHdoZW4geW91IGhhdmUgYSBsb3Qgb2YgcmVkdW5kYW5jZSwgc3VjaCBhcyB3aGVyZSBhbGwgMjEsMDAwIEhhbiBpZGVvZ3JhcGhzIAorICogaGF2ZSB0aGUgc2FtZSB2YWx1ZS4gIEhvd2V2ZXIsIGxvb2t1cCBpcyBtdWNoIGZhc3RlciB0aGFuIGEgaGFzaCB0YWJsZS4KKyAqIEEgdHJpZSBvZiBhbnkgcHJpbWl0aXZlIGRhdGEgdHlwZSBzZXJ2ZXMgdHdvIHB1cnBvc2VzOgorICogPFVMIHR5cGUgPSByb3VuZD4KKyAqICAgICA8TEk+RmFzdCBhY2Nlc3Mgb2YgdGhlIGluZGV4ZWQgdmFsdWVzLgorICogICAgIDxMST5TbWFsbGVyIG1lbW9yeSBmb290cHJpbnQuCisgKiA8L1VMPgorICogVGhpcyBpcyBhIGRpcmVjdCBwb3J0IGZyb20gdGhlIElDVTRDIHZlcnNpb24KKyAqIEB2ZXJzaW9uICAgICAgICAgICAgJFJldmlzaW9uOiAxLjggJAorICogQGF1dGhvciAgICAgICAgICAgICBTeW4gV2VlIFF1ZWsKKyAqLworcHVibGljIGNsYXNzIFRyaWVCdWlsZGVyCit7CisJLy8gcHVibGljIGRhdGEgbWVtYmVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkKKwkvKiogCisJICogTnVtYmVyIG9mIGRhdGEgdmFsdWVzIGluIGEgc3RhZ2UgMiAoZGF0YSBhcnJheSkgYmxvY2suIDIsIDQsIDgsIC4uLCAKKwkgKiAweDIwMCAKKwkgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBEQVRBX0JMT0NLX0xFTkdUSF8gPSAxIDw8IFRyaWUuSU5ERVhfU1RBR0VfMV9TSElGVF87CisgICAgCisJLy8gcHVibGljIGNsYXNzIGRlY2xhcmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvKioKKyAgICAqIENoYXJhY3RlciBkYXRhIGluIGNvbS5pYm0uaW1wbC5UcmllIGhhdmUgZGlmZmVyZW50IHVzZXItc3BlY2lmaWVkIGZvcm1hdAorICAgICogZm9yIGRpZmZlcmVudCBwdXJwb3Nlcy4KKyAgICAqIFRoaXMgaW50ZXJmYWNlIHNwZWNpZmllcyBtZXRob2RzIHRvIGJlIGltcGxlbWVudGVkIGluIG9yZGVyIGZvcgorICAgICogY29tLmlibS5pbXBsLlRyaWUsIHRvIHN1cnJvZ2F0ZSBvZmZzZXQgaW5mb3JtYXRpb24gZW5jYXBzdWxhdGVkIHdpdGhpbiAKKyAgICAqIHRoZSBkYXRhLgorICAgICogQGRyYWZ0IDIuMgorICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnRlcmZhY2UgRGF0YU1hbmlwdWxhdGUKKyAgICB7CisgICAgICAgIC8qKgorIAkJICogQnVpbGQtdGltZSB0cmllIGNhbGxiYWNrIGZ1bmN0aW9uLCB1c2VkIHdpdGggc2VyaWFsaXplKCkuCisgCSAgICAgKiBUaGlzIGZ1bmN0aW9uIGNhbGN1bGF0ZXMgYSBsZWFkIHN1cnJvZ2F0ZSdzIHZhbHVlIGluY2x1ZGluZyBhIAorIAkgICAgICogZm9sZGluZyBvZmZzZXQgZnJvbSB0aGUgMTAyNCBzdXBwbGVtZW50YXJ5IGNvZGUgcG9pbnRzIAorIAkgICAgICogW3N0YXJ0Li5zdGFydCsxMDI0WyAuIAorIAkgICAgICogSXQgaXMgVSsxMDAwMCA8PSBzdGFydCA8PSBVKzEwZmMwMCBhbmQgKHN0YXJ0JjB4M2ZmKT09MC4KKyAJICAgICAqIFRoZSBmb2xkaW5nIG9mZnNldCBpcyBwcm92aWRlZCBieSB0aGUgY2FsbGVyLiAKKyAJICAgICAqIEl0IGlzIG9mZnNldD1VVFJJRV9CTVBfSU5ERVhfTEVOR1RIK24qVVRSSUVfU1VSUk9HQVRFX0JMT0NLX0NPVU5UIAorIAkgICAgICogd2l0aCBuPTAuLjEwMjMuIAorIAkgICAgICogSW5zdGVhZCBvZiB0aGUgb2Zmc2V0IGl0c2VsZiwgbiBjYW4gYmUgc3RvcmVkIGluIDEwIGJpdHMgLSBvciBmZXdlciAKKyAJICAgICAqIGlmIGl0IGNhbiBiZSBhc3N1bWVkIHRoYXQgZmV3IGxlYWQgc3Vycm9nYXRlcyBoYXZlIGFzc29jaWF0ZWQgZGF0YS4KKyAJICAgICAqIFRoZSByZXR1cm5lZCB2YWx1ZSBtdXN0IGJlCisgCSAgICAgKiAgLSBub3QgemVybyBpZiBhbmQgb25seSBpZiB0aGVyZSBpcyByZWxldmFudCBkYXRhIGZvciB0aGUgCisgCSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRpbmcgMTAyNCBzdXBwbGVtZW50YXJ5IGNvZGUgcG9pbnRzCisgCSAgICAgKiAgLSBzdWNoIHRoYXQgVVRyaWUuZ2V0Rm9sZGluZ09mZnNldChVTmV3VHJpZUdldEZvbGRlZFZhbHVlKC4uLiwgCisgCSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQpKT09b2Zmc2V0CisgICAgICAgICAqIEByZXR1cm4gYSBmb2xkZWQgdmFsdWUsIG9yIDAgaWYgdGhlcmUgaXMgbm8gcmVsZXZhbnQgZGF0YSBmb3IgdGhlIAorICAgICAgICAgKiAgICAgICAgIGxlYWQgc3Vycm9nYXRlLgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIGludCBnZXRGb2xkZWRWYWx1ZShpbnQgc3RhcnQsIGludCBvZmZzZXQpOyAKKyAgICB9CisgICAgCisJLy8gcHVibGljIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAKKyAgICAvKioKKyAgICAgKiBDaGVja3MgaWYgdGhlIGNoYXJhY3RlciBiZWxvbmdzIHRvIGEgemVybyBibG9jayBpbiB0aGUgdHJpZQorICAgICAqIEBwYXJhbSBjaCBjb2RlcG9pbnQgd2hpY2ggZGF0YSBpcyB0byBiZSByZXRyaWV2ZWQKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgY2ggaXMgaW4gdGhlIHplcm8gYmxvY2sKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc0luWmVyb0Jsb2NrKGludCBjaCkgCisgICAgeworICAgICAgICAvLyB2YWxpZCwgdW5jb21wYWN0ZWQgdHJpZSBhbmQgdmFsaWQgYz8KKyAgICAgICAgaWYgKG1faXNDb21wYWN0ZWRfIHx8IGNoID4gVUNoYXJhY3Rlci5NQVhfVkFMVUUgCisgICAgICAgICAgICB8fCBjaCA8IFVDaGFyYWN0ZXIuTUlOX1ZBTFVFKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIAorICAgICAgICByZXR1cm4gbV9pbmRleF9bY2ggPj4gU0hJRlRfXSA9PSAwOworICAgIH0KKyAgICAKKyAgICAvLyBwYWNrYWdlIHByaXZhdGUgbWV0aG9kIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisJIC8vIHByb3RlY3RlZCBkYXRhIG1lbWJlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCSAgCisJLyoqCisJICogSW5kZXggdmFsdWVzIGF0IGJ1aWxkLXRpbWUgYXJlIDMyIGJpdHMgd2lkZSBmb3IgZWFzaWVyIHByb2Nlc3NpbmcuCisJICogQml0IDMxIGlzIHNldCBpZiB0aGUgZGF0YSBibG9jayBpcyB1c2VkIGJ5IG11bHRpcGxlIGluZGV4IHZhbHVlcyAKKwkgKiAoZnJvbSBzZXRSYW5nZSgpKS4KKwkgKi8KKwlwcm90ZWN0ZWQgaW50IG1faW5kZXhfW107CisJcHJvdGVjdGVkIGludCBtX2luZGV4TGVuZ3RoXzsKKwlwcm90ZWN0ZWQgaW50IG1fZGF0YUNhcGFjaXR5XzsgCisJcHJvdGVjdGVkIGludCBtX2RhdGFMZW5ndGhfOworCXByb3RlY3RlZCBib29sZWFuIG1faXNMYXRpbjFMaW5lYXJfOworCXByb3RlY3RlZCBib29sZWFuIG1faXNDb21wYWN0ZWRfOworICAgIC8qKgorCSAqIE1hcCBvZiBhZGp1c3RlZCBpbmRleGVzLCB1c2VkIGluIHV0cmllX2NvbXBhY3QoKS4KKwkgKiBNYXBzIGZyb20gb3JpZ2luYWwgaW5kZXhlcyB0byBuZXcgb25lcy4KKwkgKi8KKwlwcm90ZWN0ZWQgaW50IG1fbWFwX1tdOworCQorCS8qKgorCSAqIFNoaWZ0IHNpemUgZm9yIHNoaWZ0aW5nIHJpZ2h0IHRoZSBpbnB1dCBpbmRleC4gMS4uOSAKKwkgKi8KKwlwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBTSElGVF8gPSBUcmllLklOREVYX1NUQUdFXzFfU0hJRlRfOworCS8qKgorICAgICAqIExlbmd0aCBvZiB0aGUgaW5kZXggKHN0YWdlIDEpIGFycmF5IGJlZm9yZSBmb2xkaW5nLgorICAgICAqIE1heGltdW0gbnVtYmVyIG9mIFVuaWNvZGUgY29kZSBwb2ludHMgKDB4MTEwMDAwKSBzaGlmdGVkIHJpZ2h0IGJ5IAorICAgICAqIFNISUZULgorICAgICAqLworICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IE1BWF9JTkRFWF9MRU5HVEhfID0gKDB4MTEwMDAwID4+IFNISUZUXyk7CisgICAgLyoqIAorICAgICAqIExlbmd0aCBvZiB0aGUgQk1QIHBvcnRpb24gb2YgdGhlIGluZGV4IChzdGFnZSAxKSBhcnJheS4gCisgICAgICovCisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgQk1QX0lOREVYX0xFTkdUSF8gPSAweDEwMDAwID4+IFNISUZUXzsJCisgICAgLyoqCisgICAgICogTnVtYmVyIG9mIGluZGV4IChzdGFnZSAxKSBlbnRyaWVzIHBlciBsZWFkIHN1cnJvZ2F0ZS4KKyAgICAgKiBTYW1lIGFzIG51bWJlciBvZiBpbmRleGUgZW50cmllcyBmb3IgMTAyNCB0cmFpbCBzdXJyb2dhdGVzLAorICAgICAqID09MHg0MDA+PlVUUklFX1NISUZUCisgICAgICogMTAgLSBTSElGVCA9PSBOdW1iZXIgb2YgYml0cyBvZiBhIHRyYWlsIHN1cnJvZ2F0ZSB0aGF0IGFyZSB1c2VkIGluIAorICAgICAqICAgICAgICAgICAgICAgaW5kZXggdGFibGUgbG9va3Vwcy4gCisgICAgICovCisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgU1VSUk9HQVRFX0JMT0NLX0NPVU5UXyA9IDEgPDwgKDEwIC0gU0hJRlRfKTsKKwkvKioKKyAgICAqIE1hc2sgZm9yIGdldHRpbmcgdGhlIGxvd2VyIGJpdHMgZnJvbSB0aGUgaW5wdXQgaW5kZXguCisgICAgKiBEQVRBX0JMT0NLX0xFTkdUSF8gLSAxLgorICAgICovCisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgTUFTS18gPSBUcmllLklOREVYX1NUQUdFXzNfTUFTS187CisgICAgLyoqCisgICAgICogU2hpZnQgc2l6ZSBmb3Igc2hpZnRpbmcgbGVmdCB0aGUgaW5kZXggYXJyYXkgdmFsdWVzLgorICAgICAqIEluY3JlYXNlcyBwb3NzaWJsZSBkYXRhIHNpemUgd2l0aCAxNi1iaXQgaW5kZXggdmFsdWVzIGF0IHRoZSBjb3N0CisgICAgICogb2YgY29tcGFjdGFiaWxpdHkuCisgICAgICogVGhpcyByZXF1aXJlcyBibG9ja3Mgb2Ygc3RhZ2UgMiBkYXRhIHRvIGJlIGFsaWduZWQgYnkgVVRSSUVfREFUQV9HUkFOVUxBUklUWS4KKyAgICAgKiAwLi5VVFJJRV9TSElGVAorICAgICAqLworICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IElOREVYX1NISUZUXyA9IFRyaWUuSU5ERVhfU1RBR0VfMl9TSElGVF87CisgICAgLyoqCisJICogTWF4aW11bSBsZW5ndGggb2YgdGhlIHJ1bnRpbWUgZGF0YSAoc3RhZ2UgMikgYXJyYXkuCisJICogTGltaXRlZCBieSAxNi1iaXQgaW5kZXggdmFsdWVzIHRoYXQgYXJlIGxlZnQtc2hpZnRlZCBieSBJTkRFWF9TSElGVF8uCisJICovCisJcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgTUFYX0RBVEFfTEVOR1RIXyA9ICgweDEwMDAwIDw8IElOREVYX1NISUZUXyk7CisJLyoqCisgICAgICogU2hpZnRpbmcgdG8gcG9zaXRpb24gdGhlIGluZGV4IHZhbHVlIGluIG9wdGlvbnMKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBPUFRJT05TX0lOREVYX1NISUZUXyA9IDQ7CisgICAgLyoqIAorICAgICAqIElmIHNldCwgdGhlbiB0aGUgZGF0YSAoc3RhZ2UgMikgYXJyYXkgaXMgMzIgYml0cyB3aWRlLiAKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBPUFRJT05TX0RBVEFfSVNfMzJfQklUXyA9IDB4MTAwOworICAgIC8qKgorICAgICAqIElmIHNldCwgdGhlbiBMYXRpbi0xIGRhdGEgKGZvciBVKzAwMDAuLlUrMDBmZikgaXMgc3RvcmVkIGluIHRoZSBkYXRhIAorICAgICAqIChzdGFnZSAyKSBhcnJheSBhcyBhIHNpbXBsZSwgbGluZWFyIGFycmF5IGF0IGRhdGEgKyBEQVRBX0JMT0NLX0xFTkdUSC4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBPUFRJT05TX0xBVElOMV9JU19MSU5FQVJfID0gMHgyMDA7CisgICAgLyoqIAorICAgICAqIFRoZSBhbGlnbm1lbnQgc2l6ZSBvZiBhIHN0YWdlIDIgZGF0YSBibG9jay4gQWxzbyB0aGUgZ3JhbnVsYXJpdHkgZm9yIAorICAgICAqIGNvbXBhY3Rpb24uIAorICAgICAqLworICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IERBVEFfR1JBTlVMQVJJVFlfID0gMSA8PCBJTkRFWF9TSElGVF87CisgICAgCisgICAgLy8gcHJvdGVjdGVkIGNvbnN0cnVjdG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICBwcm90ZWN0ZWQgVHJpZUJ1aWxkZXIoKQorCXsKKwkJbV9pbmRleF8gPSBuZXcgaW50W01BWF9JTkRFWF9MRU5HVEhfXTsKKwkJbV9tYXBfID0gbmV3IGludFtNQVhfQlVJTERfVElNRV9EQVRBX0xFTkdUSF8gPj4gU0hJRlRfXTsKKwkgICAgbV9pc0xhdGluMUxpbmVhcl8gPSBmYWxzZTsKKwkgICAgbV9pc0NvbXBhY3RlZF8gPSBmYWxzZTsKKwkgICAgbV9pbmRleExlbmd0aF8gPSBNQVhfSU5ERVhfTEVOR1RIXzsKKwl9CisgICAgICAgIAorICAgIHByb3RlY3RlZCBUcmllQnVpbGRlcihUcmllQnVpbGRlciB0YWJsZSkKKyAgICB7CisgICAgICAgIG1faW5kZXhfID0gbmV3IGludFtNQVhfSU5ERVhfTEVOR1RIX107CisgICAgICAgIG1faW5kZXhMZW5ndGhfID0gdGFibGUubV9pbmRleExlbmd0aF87CisgICAgICAgIFN5c3RlbS5hcnJheWNvcHkodGFibGUubV9pbmRleF8sIDAsIG1faW5kZXhfLCAwLCBtX2luZGV4TGVuZ3RoXyk7CisgICAgICAgIG1fZGF0YUNhcGFjaXR5XyA9IHRhYmxlLm1fZGF0YUNhcGFjaXR5XzsKKyAgICAgICAgbV9kYXRhTGVuZ3RoXyA9IHRhYmxlLm1fZGF0YUxlbmd0aF87CisgICAgICAgIG1fbWFwXyA9IG5ldyBpbnRbdGFibGUubV9tYXBfLmxlbmd0aF07CisgICAgICAgIFN5c3RlbS5hcnJheWNvcHkodGFibGUubV9tYXBfLCAwLCBtX21hcF8sIDAsIG1fbWFwXy5sZW5ndGgpOworICAgICAgICBtX2lzTGF0aW4xTGluZWFyXyA9IHRhYmxlLm1faXNMYXRpbjFMaW5lYXJfOworICAgICAgICBtX2lzQ29tcGFjdGVkXyA9IHRhYmxlLm1faXNDb21wYWN0ZWRfOworICAgIH0KKyAgICAgICAgCisgICAgLy8gcHJvdGVjdGVkIGRhdGEgbWVtYmVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvKioKKyAgICAgKiBTZXQgYSB2YWx1ZSBpbiB0aGUgdHJpZSBpbmRleCBtYXAgdG8gaW5kaWNhdGUgd2hpY2ggZGF0YSBibG9jaworICAgICAqIGlzIHJlZmVyZW5jZWQgYW5kIHdoaWNoIG9uZSBpcyBub3QuCisgICAgICogdXRyaWVfY29tcGFjdCgpIHdpbGwgcmVtb3ZlIGRhdGEgYmxvY2tzIHRoYXQgYXJlIG5vdCB1c2VkIGF0IGFsbC4KKyAgICAgKiBTZXQKKyAgICAgKiAtIDAgaWYgaXQgaXMgdXNlZAorICAgICAqIC0gLTEgaWYgaXQgaXMgbm90IHVzZWQKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgdm9pZCBmaW5kVW51c2VkQmxvY2tzKCkgCisgICAgeworICAgICAgICAvLyBmaWxsIHRoZSBlbnRpcmUgbWFwIHdpdGggIm5vdCB1c2VkIiAKKyAgICAgICAgQXJyYXlzLmZpbGwobV9tYXBfLCAweGZmKTsKKyAgICAKKyAgICAgICAgLy8gbWFyayBlYWNoIGJsb2NrIHRoYXQgX2lzXyB1c2VkIHdpdGggMAorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1faW5kZXhMZW5ndGhfOyArKyBpKSB7CisgICAgICAgICAgICBtX21hcF9bTWF0aC5hYnMobV9pbmRleF9baV0pID4+IFNISUZUX10gPSAwOworICAgICAgICB9CisgICAgCisgICAgICAgIC8vIG5ldmVyIG1vdmUgdGhlIGFsbC1pbml0aWFsLXZhbHVlIGJsb2NrIDAKKyAgICAgICAgbV9tYXBfWzBdID0gMDsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogRmluZHMgdGhlIHNhbWUgaW5kZXggYmxvY2sgYXMgdGhlIG90aGVyQmxvY2sKKyAgICAgKiBAcGFyYW0gaW5kZXggYXJyYXkKKyAgICAgKiBAcGFyYW0gaW5kZXhMZW5ndGggc2l6ZSBvZiBpbmRleAorICAgICAqIEBwYXJhbSBvdGhlckJsb2NrCisgICAgICogQHJldHVybiBzYW1lIGluZGV4IGJsb2NrCisgICAgICovCisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgZmluZFNhbWVJbmRleEJsb2NrKGludCBpbmRleFtdLCBpbnQgaW5kZXhMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBvdGhlckJsb2NrKSAKKyAgICB7CisgICAgICAgIGZvciAoaW50IGJsb2NrID0gQk1QX0lOREVYX0xFTkdUSF87IGJsb2NrIDwgaW5kZXhMZW5ndGg7IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2sgKz0gU1VSUk9HQVRFX0JMT0NLX0NPVU5UXykgeworICAgICAgICAgICAgaW50IGkgPSAwOworICAgICAgICAgICAgZm9yICg7IGkgPCBTVVJST0dBVEVfQkxPQ0tfQ09VTlRfOyArKyBpKSB7CisgICAgICAgICAgICAgICAgaWYgKGluZGV4W2Jsb2NrICsgaV0gIT0gaW5kZXhbb3RoZXJCbG9jayArIGldKSB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpID09IFNVUlJPR0FURV9CTE9DS19DT1VOVF8pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gYmxvY2s7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGluZGV4TGVuZ3RoOworICAgIH0KKyAgICAKKwkvLyBwcml2YXRlIGRhdGEgbWVtYmVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCQorCS8qKgorCSAqIE1heGltdW0gbGVuZ3RoIG9mIHRoZSBidWlsZC10aW1lIGRhdGEgKHN0YWdlIDIpIGFycmF5LgorCSAqIFRoZSBtYXhpbXVtIGxlbmd0aCBpcyAweDExMDAwMCArIERBVEFfQkxPQ0tfTEVOR1RIXyArIDB4NDAwLgorCSAqIChOdW1iZXIgb2YgVW5pY29kZSBjb2RlIHBvaW50cyArIG9uZSBhbGwtaW5pdGlhbC12YWx1ZSBibG9jayArCisJICogIHBvc3NpYmxlIGR1cGxpY2F0ZSBlbnRyaWVzIGZvciAxMDI0IGxlYWQgc3Vycm9nYXRlcy4pCisJICovCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1BWF9CVUlMRF9USU1FX0RBVEFfTEVOR1RIXyA9IAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTEwMDAwICsgREFUQV9CTE9DS19MRU5HVEhfICsgMHg0MDA7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvVHJpZUl0ZXJhdG9yLmphdmEgYi9zcmMvY29tL2libS9pY3UvaW1wbC9UcmllSXRlcmF0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5kN2I4OTZiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvVHJpZUl0ZXJhdG9yLmphdmEKQEAgLTAsMCArMSw1MzEgQEAKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgKgorKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvVHJpZUl0ZXJhdG9yLmphdmEsdiAkCisqICREYXRlOiAyMDAyLzExLzE2IDAxOjQ5OjI2ICQKKyogJFJldmlzaW9uOiAxLjggJAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LmltcGw7CisKK2ltcG9ydCBjb20uaWJtLmljdS5sYW5nLlVDaGFyYWN0ZXI7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC5VVEYxNjsKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLlJhbmdlVmFsdWVJdGVyYXRvcjsKKworLyoqCisgKiA8cD5DbGFzcyBlbmFibGluZyBpdGVyYXRpb24gb2YgdGhlIHZhbHVlcyBpbiBhIFRyaWUuPC9wPgorICogPHA+UmVzdWx0IG9mIGVhY2ggaXRlcmF0aW9uIGNvbnRhaW5zIHRoZSBpbnRlcnZhbCBvZiBjb2RlcG9pbnRzIHRoYXQgaGF2ZQorICogdGhlIHNhbWUgdmFsdWUgdHlwZSBhbmQgdGhlIHZhbHVlIHR5cGUgaXRzZWxmLjwvcD4KKyAqIDxwPlRoZSBjb21wYXJpc29uIG9mIGVhY2ggY29kZXBvaW50IHZhbHVlIGlzIGRvbmUgdmlhIGV4dHJhY3QoKSwgd2hpY2ggdGhlCisgKiBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGlzIHRvIHJldHVybiB0aGUgdmFsdWUgYXMgaXQgaXMuPC9wPiAKKyAqIDxwPk1ldGhvZCBleHRyYWN0KCkgY2FuIGJlIG92ZXJ3cml0dGVuIHRvIHBlcmZvcm0gbWFuaXB1bGF0aW9ucyBvbiAKKyAqIGNvZGVwb2ludCB2YWx1ZXMgaW4gb3JkZXIgdG8gcGVyZm9ybSBzcGVjaWFsaXplZCBjb21wYXJpc29uLjwvcD4KKyAqIDxwPlRyaWVJdGVyYXRvciBpcyBkZXNpZ25lZCB0byBiZSBhIGdlbmVyaWMgaXRlcmF0b3IgZm9yIHRoZSBDaGFyVHJpZQorICogYW5kIHRoZSBJbnRUcmllLCBoZW5jZSB0byBhY2NvbW1vZGF0ZSBib3RoIHR5cGVzIG9mIGRhdGEsIHRoZSByZXR1cm4gCisgKiByZXN1bHQgd2lsbCBiZSBpbiB0ZXJtcyBvZiBpbnQgKDMyIGJpdCkgdmFsdWVzLjwvcD4KKyAqIDxwPlNlZSBjb20uaWJtLmljdS50ZXh0LlVDaGFyYWN0ZXJUeXBlSXRlcmF0b3IgZm9yIGV4YW1wbGVzIG9mIHVzZS48L3A+CisgKiA8cD5Ob3RlcyBmb3IgcG9ydGluZyB1dHJpZV9lbnVtIGZyb20gaWN1NGMgdG8gaWN1NGo6PGJyPgorICogSW50ZXJuYWxseSwgaWN1NGMncyB1dHJpZV9lbnVtIHBlcmZvcm1zIGFsbCBpdGVyYXRpb25zIGluIGl0cyBib2R5LiBJbiBKYXZhCisgKiBzZW5zZSwgdGhlIGNhbGxlciB3aWxsIGhhdmUgdG8gcGFzcyBhIG9iamVjdCB3aXRoIGEgY2FsbGJhY2sgZnVuY3Rpb24gCisgKiBVVHJpZUVudW1SYW5nZShjb25zdCB2b2lkICpjb250ZXh0LCBVQ2hhcjMyIHN0YXJ0LCBVQ2hhcjMyIGxpbWl0LCAKKyAqIHVpbnQzMl90IHZhbHVlKSBpbnRvIHV0cmllX2VudW0uIHV0cmllX2VudW0gd2lsbCB0aGVuIGZpbmQgcmFuZ2VzIG9mIAorICogY29kZXBvaW50cyB3aXRoIHRoZSBzYW1lIHZhbHVlIGFzIGRldGVybWluZWQgYnkgCisgKiBVVHJpZUVudW1WYWx1ZShjb25zdCB2b2lkICpjb250ZXh0LCB1aW50MzJfdCB2YWx1ZSkuIGZvciBlYWNoIHJhbmdlLCAKKyAqIHV0cmllX2VudW0gY2FsbHMgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHBlcmZvcm0gYSB0YXNrLiBJbiB0aGlzIHdheSwKKyAqIGljdTRjIHBlcmZvcm1zIHRoZSBpdGVyYXRpb24gd2l0aGluIHV0cmllX2VudW0uCisgKiBUbyBmb2xsb3cgdGhlIEpESyBtb2RlbCwgaWN1NGogaXMgc2xpZ2h0bHkgZGlmZmVyZW50IGZyb20gaWN1NGMuCisgKiBJbnN0ZWFkIG9mIHJlcXVlc3RpbmcgdGhlIGNhbGxlciB0byBpbXBsZW1lbnQgYW4gb2JqZWN0IGZvciBhIGNhbGxiYWNrLgorICogVGhlIGNhbGxlciB3aWxsIGhhdmUgdG8gaW1wbGVtZW50IGEgc3ViY2xhc3Mgb2YgVHJpZUl0ZXJhdG9yLCBmbGVzaGluZyBvdXQKKyAqIHRoZSBtZXRob2QgZXh0cmFjdChpbnQpIChlcXVpdmFsZW50IHRvIFVUcmllRW51bVZhbHVlKS4gSW5kZXBlbmRlbnQgb2YgaWN1NGosIAorICogdGhlIGNhbGxlciB3aWxsIGhhdmUgdG8gY29kZSBoaXMgb3duIGl0ZXJhdGlvbiBhbmQgZmxlc2ggb3V0IHRoZSB0YXNrIAorICogKGVxdWl2YWxlbnQgdG8gVVRyaWVFbnVtUmFuZ2UpIHRvIGJlIHBlcmZvcm1lZCBpbiB0aGUgaXRlcmF0aW9uIGxvb3AuCisgKiA8L3A+CisgKiA8cD5UaGVyZSBhcmUgYmFzaWNhbGx5IDMgdXNhZ2Ugc2NlbmFyaW9zIGZvciBwb3J0aW5nOjwvcD4KKyAqIDxwPjEpIFVUcmllRW51bVZhbHVlIGlzIHRoZSBvbmx5IGltcGxlbWVudGVkIGNhbGxiYWNrIHRoZW4ganVzdCBpbXBsZW1lbnQgYSAKKyAqIHN1YmNsYXNzIG9mIFRyaWVJdGVyYXRvciBhbmQgb3ZlcnJpZGUgdGhlIGV4dHJhY3QoaW50KSBtZXRob2QuIFRoZSAKKyAqIGV4dHJhY3QoaW50KSBtZXRob2QgaXMgYW5hbG9ndXMgdG8gVVRyaWVFbnVtVmFsdWUgY2FsbGJhY2suCisgKiA8L3A+CisgKiA8cD4yKSBVVHJpZUVudW1WYWx1ZSBhbmQgVVRyaWVFbnVtUmFuZ2UgYm90aCBhcmUgaW1wbGVtZW50ZWQgdGhlbiBpbXBsZW1lbnQgCisgKiBhIHN1YmNsYXNzIG9mIFRyaWVJdGVyYXRvciwgb3ZlcnJpZGUgdGhlIGV4dHJhY3QgbWV0aG9kIGFuZCBpdGVyYXRlLCBlLmcKKyAqIDwvcD4KKyAqIDxwPnV0cmllX2VudW0oJm5vcm1UcmllLCBfZW51bVByb3BlcnR5U3RhcnRzVmFsdWUsIF9lbnVtUHJvcGVydHlTdGFydHNSYW5nZSwgCisgKiAgICAgICAgICAgICAgIHNldCk7PGJyPgorICogSW4gSmF2YSA6PGJyPgorICogPHByZT4KKyAqIGNsYXNzIFRyaWVJdGVyYXRvckltcGwgZXh0ZW5kcyBUcmllSXRlcmF0b3J7CisgKiAgICAgcHVibGljIFRyaWVJdGVyYXRvckltcGwoVHJpZSBkYXRhKXsKKyAqICAgICAgICAgc3VwZXIoZGF0YSk7CisgKiAgICAgfQorICogICAgIHB1YmxpYyBpbnQgZXh0cmFjdChpbnQgdmFsdWUpeworICogICAgICAgICAvLyBwb3J0IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBfZW51bVByb3BlcnR5U3RhcnRzVmFsdWUgaGVyZQorICogICAgIH0KKyAqIH0KKyAqIC4uLi4gCisgKiBUcmllSXRlcmF0b3IgZmNkSXRlciAgPSBuZXcgVHJpZUl0ZXJhdG9ySW1wbChmY2RUcmllSW1wbC5mY2RUcmllKTsKKyAqIHdoaWxlKGZjZEl0ZXIubmV4dChyZXN1bHQpKSB7CisgKiAgICAgLy8gcG9ydCB0aGUgaW1wbGVtZW50YXRpb24gb2YgX2VudW1Qcm9wZXJ0eVN0YXJ0c1JhbmdlCisgKiB9CisgKiA8L3ByZT4KKyAqIDwvcD4KKyAqIDxwPjMpIFVUcmllRW51bVJhbmdlIGlzIHRoZSBvbmx5IGltcGxlbWVudGVkIGNhbGxiYWNrIHRoZW4ganVzdCBpbXBsZW1lbnQgCisgKiB0aGUgd2hpbGUgbG9vcCwgd2hlbiB1dHJpZV9lbnVtIGlzIGNhbGxlZAorICogPHByZT4KKyAqIC8vIHV0cmllX2VudW0oJmZjZFRyaWUsIE5VTEwsIF9lbnVtUHJvcGVydHlTdGFydHNSYW5nZSwgc2V0KTsKKyAqIFRyaWVJdGVyYXRvciBmY2RJdGVyICA9IG5ldyBUcmllSXRlcmF0b3IoZmNkVHJpZUltcGwuZmNkVHJpZSk7CisgKiB3aGlsZShmY2RJdGVyLm5leHQocmVzdWx0KSl7CisgKiAgICAgc2V0LmFkZChyZXN1bHQuc3RhcnQpOworICogfQorICogPC9wPgorICogQGF1dGhvciBzeW53ZWUKKyAqIEBzZWUgY29tLmlibS5pY3UudXRpbC5UcmllCisgKiBAc2VlIGNvbS5pYm0uaWN1LnRleHQuVUNoYXJhY3RlclR5cGVJdGVyYXRvcgorICogQHNpbmNlIHJlbGVhc2UgMi4xLCBKYW4gMTcgMjAwMgorICovCitwdWJsaWMgY2xhc3MgVHJpZUl0ZXJhdG9yIGltcGxlbWVudHMgUmFuZ2VWYWx1ZUl0ZXJhdG9yCisKK3sKKyAgICAvLyBwdWJsaWMgY29uc3RydWN0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgKiBUcmllRW51bWVyYXRpb24gY29uc3RydWN0b3IKKyAgICAqIEBwYXJhbSB0cmllIHRvIGJlIHVzZWQKKyAgICAqIEBleGNlcHRpb24gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHRocm93IHdoZW4gYXJndW1lbnQgaXMgbnVsbC4KKyAgICAqIEBkcmFmdCAyLjEKKyAgICAqLworICAgIHB1YmxpYyBUcmllSXRlcmF0b3IoVHJpZSB0cmllKQorICAgIHsKKyAgICAgICAgaWYgKHRyaWUgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBcmd1bWVudCB0cmllIGNhbm5vdCBiZSBudWxsIik7CisgICAgICAgIH0KKyAgICAgICAgbV90cmllXyAgICAgICAgICAgICA9IHRyaWU7CisgICAgICAgIC8vIHN5bndlZTogY2hlY2sgdGhhdCBleHRyYWN0IGJlbG9uZ3MgdG8gdGhlIGNoaWxkIGNsYXNzCisgICAgICAgIG1faW5pdGlhbFZhbHVlXyAgICAgPSBleHRyYWN0KG1fdHJpZV8uZ2V0SW5pdGlhbFZhbHVlKCkpOworICAgICAgICByZXNldCgpOworICAgIH0KKyAgICAKKyAgICAvLyBwdWJsaWMgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgKiA8cD5SZXR1cm5zIHRydWUgaWYgd2UgYXJlIG5vdCBhdCB0aGUgZW5kIG9mIHRoZSBpdGVyYXRpb24sIGZhbHNlIAorICAgICogb3RoZXJ3aXNlLjwvcD4KKyAgICAqIDxwPlRoZSBuZXh0IHNldCBvZiBjb2RlcG9pbnRzIHdpdGggdGhlIHNhbWUgdmFsdWUgdHlwZSB3aWxsIGJlIAorICAgICogY2FsY3VsYXRlZCBkdXJpbmcgdGhpcyBjYWxsIGFuZCByZXR1cm5lZCBpbiB0aGUgYXJndWVtZW50IGVsZW1lbnQuPC9wPgorICAgICogQHBhcmFtIGVsZW1lbnQgcmV0dXJuIHJlc3VsdCAKKyAgICAqIEByZXR1cm4gdHJ1ZSBpZiB3ZSBhcmUgbm90IGF0IHRoZSBlbmQgb2YgdGhlIGl0ZXJhdGlvbiwgZmFsc2Ugb3RoZXJ3aXNlLgorICAgICogQGV4Y2VwdGlvbiBOb1N1Y2hFbGVtZW50RXhjZXB0aW9uIC0gaWYgbm8gbW9yZSBlbGVtZW50cyBleGlzdC4KKyAgICAqIEBzZWUgI2dldFN0YXJ0KCkKKyAgICAqIEBzZWUgI2dldExpbWl0KCkKKyAgICAqIEBzZWUgI2dldFZhbHVlKCkKKyAgICAqIEBkcmFmdCAyLjEKKyAgICAqLworICAgIHB1YmxpYyBmaW5hbCBib29sZWFuIG5leHQoRWxlbWVudCBlbGVtZW50KQorICAgIHsKKyAgICAgICAgaWYgKG1fbmV4dENvZGVwb2ludF8gPiBVQ2hhcmFjdGVyLk1BWF9WQUxVRSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGlmIChtX25leHRDb2RlcG9pbnRfIDwgVUNoYXJhY3Rlci5TVVBQTEVNRU5UQVJZX01JTl9WQUxVRSAmJgorICAgICAgICAgICAgY2FsY3VsYXRlTmV4dEJNUEVsZW1lbnQoZWxlbWVudCkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSAgICAKKyAgICAgICAgY2FsY3VsYXRlTmV4dFN1cHBsZW1lbnRhcnlFbGVtZW50KGVsZW1lbnQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgIAorICAgIC8qKgorICAgICogUmVzZXRzIHRoZSBpdGVyYXRvciB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBpdGVyYXRpb24KKyAgICAqIEBkcmFmdCAyLjEKKyAgICAqLworICAgIHB1YmxpYyBmaW5hbCB2b2lkIHJlc2V0KCkKKyAgICB7CisgICAgICAgIG1fY3VycmVudENvZGVwb2ludF8gPSAwOworICAgICAgICBtX25leHRDb2RlcG9pbnRfICAgID0gMDsKKyAgICAgICAgbV9uZXh0SW5kZXhfICAgICAgICA9IDA7CisgICAgICAgIG1fbmV4dEJsb2NrXyA9IG1fdHJpZV8ubV9pbmRleF9bMF0gPDwgVHJpZS5JTkRFWF9TVEFHRV8yX1NISUZUXzsKKyAgICAgICAgaWYgKG1fbmV4dEJsb2NrXyA9PSAwKSB7CisgICAgICAgICAgICBtX25leHRWYWx1ZV8gPSBtX2luaXRpYWxWYWx1ZV87CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtX25leHRWYWx1ZV8gPSBleHRyYWN0KG1fdHJpZV8uZ2V0VmFsdWUobV9uZXh0QmxvY2tfKSk7CisgICAgICAgIH0KKyAgICAgICAgbV9uZXh0QmxvY2tJbmRleF8gPSAwOworICAgICAgICBtX25leHRUcmFpbEluZGV4T2Zmc2V0XyA9IFRSQUlMX1NVUlJPR0FURV9JTkRFWF9CTE9DS19MRU5HVEhfOworICAgIH0KKyAgICAKKyAgICAvLyBwcm90ZWN0ZWQgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgKiBDYWxsZWQgYnkgbmV4dCgpIHRvIGV4dHJhY3RzIGEgMzIgYml0IHZhbHVlIGZyb20gYSB0cmllIHZhbHVlCisgICAgKiB1c2VkIGZvciBjb21wYXJpc29uLgorICAgICogVGhpcyBtZXRob2QgaXMgdG8gYmUgb3ZlcndyaXR0ZW4gaWYgc3BlY2lhbCBtYW5pcHVsYXRpb24gaXMgdG8gYmUgZG9uZQorICAgICogdG8gcmV0cmlldmUgYSByZWxldmFudCBjb21wYXJpc29uLgorICAgICogVGhlIGRlZmF1bHQgZnVuY3Rpb24gaXMgdG8gcmV0dXJuIHRoZSB2YWx1ZSBhcyBpdCBpcy4KKyAgICAqIEBwYXJhbSB2YWx1ZSBhIHZhbHVlIGZyb20gdGhlIHRyaWUKKyAgICAqIEByZXR1cm4gZXh0cmFjdGVkIHZhbHVlCisgICAgKiBAZHJhZnQgMi4xCisgICAgKi8KKyAgICBwcm90ZWN0ZWQgaW50IGV4dHJhY3QoaW50IHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KKyAgICAKKyAgICAvLyBwcml2YXRlIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgKiBTZXQgdGhlIHJlc3VsdCB2YWx1ZXMKKyAgICAqIEBwYXJhbSBlbGVtZW50IHJldHVybiByZXN1bHQgb2JqZWN0CisgICAgKiBAcGFyYW0gc3RhcnQgY29kZXBvaW50IG9mIHJhbmdlIAorICAgICogQHBhcmFtIGxpbWl0IChlbmQgKyAxKSBjb2RlcG9pbnQgb2YgcmFuZ2UKKyAgICAqIEBwYXJhbSB2YWx1ZSBjb21tb24gdmFsdWUgb2YgcmFuZ2UKKyAgICAqLworICAgIHByaXZhdGUgZmluYWwgdm9pZCBzZXRSZXN1bHQoRWxlbWVudCBlbGVtZW50LCBpbnQgc3RhcnQsIGludCBsaW1pdCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmFsdWUpCisgICAgeworICAgICAgICBlbGVtZW50LnN0YXJ0ID0gc3RhcnQ7CisgICAgICAgIGVsZW1lbnQubGltaXQgPSBsaW1pdDsKKyAgICAgICAgZWxlbWVudC52YWx1ZSA9IHZhbHVlOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAqIEZpbmRpbmcgdGhlIG5leHQgZWxlbWVudC4KKyAgICAqIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBqdXN0IGJlZm9yZSByZXR1cm5pbmcgdGhlIHJlc3VsdCBvZiAKKyAgICAqIG5leHQoKS4KKyAgICAqIFdlIGFsd2F5cyBzdG9yZSB0aGUgbmV4dCBlbGVtZW50IGJlZm9yZSBpdCBpcyByZXF1ZXN0ZWQuCisgICAgKiBJbiB0aGUgY2FzZSB0aGF0IHdlIGhhdmUgdG8gY29udGludWUgY2FsY3VsYXRpb25zIGludG8gdGhlIAorICAgICogc3VwcGxlbWVudGFyeSBwbGFuZXMsIGEgZmFsc2Ugd2lsbCBiZSByZXR1cm5lZC4KKyAgICAqIEBwYXJhbSBlbGVtZW50IHJldHVybiByZXN1bHQgb2JqZWN0CisgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIG5leHQgcmFuZ2UgaXMgZm91bmQsIGZhbHNlIGlmIHdlIGhhdmUgdG8gcHJvY2VlZCB0bworICAgICogICAgICAgICB0aGUgc3VwcGxlbWVudGFyeSByYW5nZS4KKyAgICAqLworICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiBjYWxjdWxhdGVOZXh0Qk1QRWxlbWVudChFbGVtZW50IGVsZW1lbnQpCisgICAgeworICAgICAgICBpbnQgY3VycmVudEJsb2NrICAgID0gbV9uZXh0QmxvY2tfOworICAgICAgICBpbnQgY3VycmVudFZhbHVlICAgID0gbV9uZXh0VmFsdWVfOworICAgICAgICBtX2N1cnJlbnRDb2RlcG9pbnRfID0gbV9uZXh0Q29kZXBvaW50XzsKKyAgICAgICAgbV9uZXh0Q29kZXBvaW50XyArKzsKKyAgICAgICAgbV9uZXh0QmxvY2tJbmRleF8gKys7CisgICAgICAgIGlmICghY2hlY2tCbG9ja0RldGFpbChjdXJyZW50VmFsdWUpKSB7CisgICAgICAgICAgICBzZXRSZXN1bHQoZWxlbWVudCwgbV9jdXJyZW50Q29kZXBvaW50XywgbV9uZXh0Q29kZXBvaW50XywgCisgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIC8vIHN5bndlZSBjaGVjayB0aGF0IG5leHQgYmxvY2sgaW5kZXggPT0gMCBoZXJlIAorICAgICAgICAvLyBlbnVtZXJhdGUgQk1QIC0gdGhlIG1haW4gbG9vcCBlbnVtZXJhdGVzIGRhdGEgYmxvY2tzCisgICAgICAgIHdoaWxlIChtX25leHRDb2RlcG9pbnRfIDwgVUNoYXJhY3Rlci5TVVBQTEVNRU5UQVJZX01JTl9WQUxVRSkgeworICAgICAgICAgICAgbV9uZXh0SW5kZXhfICsrOworICAgICAgICAgICAgLy8gYmVjYXVzZSBvZiB0aGUgd2F5IHRoZSBjaGFyYWN0ZXIgaXMgc3BsaXQgdG8gZm9ybSB0aGUgaW5kZXgKKyAgICAgICAgICAgIC8vIHRoZSBsZWFkIHN1cnJvZ2F0ZSBhbmQgdHJhaWwgc3Vycm9nYXRlIGNhbiBub3QgYmUgaW4gdGhlCisgICAgICAgICAgICAvLyBtaWQgb2YgYSBibG9jaworICAgICAgICAgICAgaWYgKG1fbmV4dENvZGVwb2ludF8gPT0gTEVBRF9TVVJST0dBVEVfTUlOX1ZBTFVFXykgeworICAgICAgICAgICAgICAgIC8vIHNraXAgbGVhZCBzdXJyb2dhdGUgY29kZSB1bml0cywKKyAgICAgICAgICAgICAgICAvLyBnbyB0byBsZWFkIHN1cnJvZ2F0ZSBjb2RlcG9pbnRzCisgICAgICAgICAgICAgICAgbV9uZXh0SW5kZXhfID0gQk1QX0lOREVYX0xFTkdUSF87CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChtX25leHRDb2RlcG9pbnRfID09IFRSQUlMX1NVUlJPR0FURV9NSU5fVkFMVUVfKSB7CisgICAgICAgICAgICAgICAgLy8gZ28gYmFjayB0byByZWd1bGFyIEJNUCBjb2RlIHBvaW50cworICAgICAgICAgICAgICAgIG1fbmV4dEluZGV4XyA9IG1fbmV4dENvZGVwb2ludF8gPj4gVHJpZS5JTkRFWF9TVEFHRV8xX1NISUZUXzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgbV9uZXh0QmxvY2tJbmRleF8gPSAwOworICAgICAgICAgICAgaWYgKCFjaGVja0Jsb2NrKGN1cnJlbnRCbG9jaywgY3VycmVudFZhbHVlKSkgeworICAgICAgICAgICAgICAgIHNldFJlc3VsdChlbGVtZW50LCBtX2N1cnJlbnRDb2RlcG9pbnRfLCBtX25leHRDb2RlcG9pbnRfLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFZhbHVlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBtX25leHRDb2RlcG9pbnRfIC0tOyAgIC8vIHN0ZXAgb25lIGJhY2sgc2luY2UgdGhpcyB2YWx1ZSBoYXMgbm90IGJlZW4KKyAgICAgICAgbV9uZXh0QmxvY2tJbmRleF8gLS07ICAvLyByZXRyaWV2ZWQgeWV0LgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLyoqCisgICAgKiBGaW5kcyB0aGUgbmV4dCBzdXBwbGVtZW50YXJ5IGVsZW1lbnQuCisgICAgKiBGb3IgZWFjaCBlbnRyeSBpbiB0aGUgdHJpZSwgdGhlIHZhbHVlIHRvIGJlIGRlbGl2ZXJlZCBpcyBwYXNzZWQgdGhyb3VnaAorICAgICogZXh0cmFjdCgpLgorICAgICogV2UgYWx3YXlzIHN0b3JlIHRoZSBuZXh0IGVsZW1lbnQgYmVmb3JlIGl0IGlzIHJlcXVlc3RlZC4KKyAgICAqIENhbGxlZCBhZnRlciBjYWxjdWxhdGVOZXh0Qk1QKCkgY29tcGxldGVzIGl0cyByb3VuZCBvZiBCTVAgY2hhcmFjdGVycy4KKyAgICAqIFRoZXJlIGlzIGEgc2xpZ2h0IGRpZmZlcmVuY2UgaW4gdGhlIHVzYWdlIG9mIG1fY3VycmVudENvZGVwb2ludF8KKyAgICAqIGhlcmUgYXMgY29tcGFyZWQgdG8gY2FsY3VsYXRlTmV4dEJNUCgpLiBUaG91Z2ggYm90aCByZXByZXNlbnRzIHRoZQorICAgICogbG93ZXIgYm91bmQgb2YgdGhlIG5leHQgZWxlbWVudCwgaW4gY2FsY3VsYXRlTmV4dEJNUCgpIGl0IGdldHMgc2V0CisgICAgKiBhdCB0aGUgc3RhcnQgb2YgYW55IGxvb3AsIHdoZXJlLWVsc2UsIGluIGNhbGN1bGF0ZU5leHRTdXBwbGVtZW50YXJ5KCkKKyAgICAqIHNpbmNlIG1fY3VycmVudENvZGVwb2ludF8gYWxyZWFkeSBjb250YWlucyB0aGUgbG93ZXIgYm91bmQgb2YgdGhlCisgICAgKiBuZXh0IGVsZW1lbnQgKHBhc3NlZCBkb3duIGZyb20gY2FsY3VsYXRlTmV4dEJNUCgpKSwgd2Uga2VlcCBpdCB0aWxsIAorICAgICogdGhlIGVuZCBiZWZvcmUgcmVzZXR0aW5nIGl0IHRvIHRoZSBuZXcgdmFsdWUuCisgICAgKiBOb3RlLCBpZiB0aGVyZSBhcmUgbm8gbW9yZSBpdGVyYXRpb25zLCBpdCB3aWxsIG5ldmVyIGdldCB0byBoZXJlLiAKKyAgICAqIEJsb2NrZWQgb3V0IGJ5IG5leHQoKS4KKyAgICAqIEBwYXJhbSBlbGVtZW50IHJldHVybiByZXN1bHQgb2JqZWN0CisgICAgKiBAZHJhZnQgMi4xCisgICAgKi8KKyAgICBwcml2YXRlIGZpbmFsIHZvaWQgY2FsY3VsYXRlTmV4dFN1cHBsZW1lbnRhcnlFbGVtZW50KEVsZW1lbnQgZWxlbWVudCkKKyAgICB7CisgICAgICAgIGludCBjdXJyZW50VmFsdWUgPSBtX25leHRWYWx1ZV87CisgICAgICAgIGludCBjdXJyZW50QmxvY2sgPSBtX25leHRCbG9ja187CisgICAgICAgIG1fbmV4dENvZGVwb2ludF8gKys7CisgICAgICAgIG1fbmV4dEJsb2NrSW5kZXhfICsrOworICAgICAgICAKKyAgICAgICAgaWYgKCFjaGVja051bGxOZXh0VHJhaWxJbmRleCgpICYmICFjaGVja0Jsb2NrRGV0YWlsKGN1cnJlbnRWYWx1ZSkpIHsKKyAgICAgICAgICAgIHNldFJlc3VsdChlbGVtZW50LCBtX2N1cnJlbnRDb2RlcG9pbnRfLCBtX25leHRDb2RlcG9pbnRfLCAKKyAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50VmFsdWUpOworICAgICAgICAgICAgbV9jdXJyZW50Q29kZXBvaW50XyA9IG1fbmV4dENvZGVwb2ludF87CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwkJLy8gd2UgaGF2ZSBjbGVhcmVkIG9uZSBibG9jaworCQltX25leHRJbmRleF8gKys7CisJCW1fbmV4dFRyYWlsSW5kZXhPZmZzZXRfICsrOworCQlpZiAoIWNoZWNrVHJhaWxCbG9jayhjdXJyZW50QmxvY2ssIGN1cnJlbnRWYWx1ZSkpIHsKKwkJCXNldFJlc3VsdChlbGVtZW50LCBtX2N1cnJlbnRDb2RlcG9pbnRfLCBtX25leHRDb2RlcG9pbnRfLCAKKwkJCSAgICAgICAgICBjdXJyZW50VmFsdWUpOworICAgICAgICAgICAgbV9jdXJyZW50Q29kZXBvaW50XyA9IG1fbmV4dENvZGVwb2ludF87CisgICAgICAgICAgICByZXR1cm47CisJCX0KKwkJCisgICAgICAgIGludCBuZXh0TGVhZCAgPSBVVEYxNi5nZXRMZWFkU3Vycm9nYXRlKG1fbmV4dENvZGVwb2ludF8pOworCQkvLyBlbnVtZXJhdGUgc3VwcGxlbWVudGFyeSBjb2RlIHBvaW50cworICAgICAgICB3aGlsZSAobmV4dExlYWQgPCBUUkFJTF9TVVJST0dBVEVfTUlOX1ZBTFVFXykgeworCQkgICAgLy8gbGVhZCBzdXJyb2dhdGUgYWNjZXNzCisgICAgICAgICAgICBpbnQgbGVhZEJsb2NrID0gCisgICAgICAgICAgICAgICAgICAgbV90cmllXy5tX2luZGV4X1tuZXh0TGVhZCA+PiBUcmllLklOREVYX1NUQUdFXzFfU0hJRlRfXSA8PCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyaWUuSU5ERVhfU1RBR0VfMl9TSElGVF87CisgICAgICAgICAgICBpZiAobGVhZEJsb2NrID09IG1fdHJpZV8ubV9kYXRhT2Zmc2V0XykgeworICAgICAgICAgICAgICAgIC8vIG5vIGVudHJpZXMgZm9yIGEgd2hvbGUgYmxvY2sgb2YgbGVhZCBzdXJyb2dhdGVzCisgICAgICAgICAgICAgICAgbmV4dExlYWQgKz0gREFUQV9CTE9DS19MRU5HVEhfOworICAgICAgICAgICAgICAgIC8vIG51bWJlciBvZiB0b3RhbCBhZmZlY3RlZCBzdXBwbGVtZW50YXJ5IGNvZGVwb2ludHMgaW4gb25lCisgICAgICAgICAgICAgICAgLy8gYmxvY2sKKyAgICAgICAgICAgICAgICBtX25leHRDb2RlcG9pbnRfICs9IERBVEFfQkxPQ0tfU1VQUExFTUVOVEFSWV9MRU5HVEhfOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1fdHJpZV8ubV9kYXRhTWFuaXB1bGF0ZV8gPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGZpZWxkIERhdGFNYW5pcHVsYXRlIGluIHRoaXMgVHJpZSBpcyBudWxsIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBlbnVtZXJhdGUgdHJhaWwgc3Vycm9nYXRlcyBmb3IgdGhpcyBsZWFkIHN1cnJvZ2F0ZQorICAgICAgICAgICAgbV9uZXh0SW5kZXhfID0gbV90cmllXy5tX2RhdGFNYW5pcHVsYXRlXy5nZXRGb2xkaW5nT2Zmc2V0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdHJpZV8uZ2V0VmFsdWUobGVhZEJsb2NrICsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZXh0TGVhZCAmIFRyaWUuSU5ERVhfU1RBR0VfM19NQVNLXykpKTsKKyAgICAgICAgICAgIGlmIChtX25leHRJbmRleF8gPD0gMCkgeworICAgICAgICAgICAgICAgIC8vIG5vIGRhdGEgZm9yIHRoaXMgbGVhZCBzdXJyb2dhdGUKKyAgICAgICAgICAgICAgICBpZiAoY3VycmVudFZhbHVlICE9IG1faW5pdGlhbFZhbHVlXykgeworICAgICAgICAgICAgICAgICAgICBtX25leHRWYWx1ZV8gICAgICA9IG1faW5pdGlhbFZhbHVlXzsKKyAgICAgICAgICAgICAgICAgICAgbV9uZXh0QmxvY2tfICAgICAgPSAwOworICAgICAgICAgICAgICAgICAgICBtX25leHRCbG9ja0luZGV4XyA9IDA7CisgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChlbGVtZW50LCBtX2N1cnJlbnRDb2RlcG9pbnRfLCBtX25leHRDb2RlcG9pbnRfLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudENvZGVwb2ludF8gPSBtX25leHRDb2RlcG9pbnRfOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1fbmV4dENvZGVwb2ludF8gKz0gVFJBSUxfU1VSUk9HQVRFX0NPVU5UXzsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbV9uZXh0VHJhaWxJbmRleE9mZnNldF8gPSAwOworICAgICAgICAgICAgICAgIGlmICghY2hlY2tUcmFpbEJsb2NrKGN1cnJlbnRCbG9jaywgY3VycmVudFZhbHVlKSkgeworICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoZWxlbWVudCwgbV9jdXJyZW50Q29kZXBvaW50XywgbV9uZXh0Q29kZXBvaW50XywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50VmFsdWUpOworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRDb2RlcG9pbnRfID0gbV9uZXh0Q29kZXBvaW50XzsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gICAgCisgICAgICAgICAgICBuZXh0TGVhZCArKzsKKyAgICAgICAgIH0KKworICAgICAgICAgLy8gZGVsaXZlciBsYXN0IHJhbmdlCisgICAgICAgICBzZXRSZXN1bHQoZWxlbWVudCwgbV9jdXJyZW50Q29kZXBvaW50XywgVUNoYXJhY3Rlci5NQVhfVkFMVUUgKyAxLCAKKyAgICAgICAgICAgICAgICAgICBjdXJyZW50VmFsdWUpOworICAgIH0gICAgCisgICAgCisgICAgLyoqCisgICAgKiBJbnRlcm5hbCBibG9jayB2YWx1ZSBjYWxjdWxhdGlvbnMKKyAgICAqIFBlcmZvcm1zIGNhbGN1bGF0aW9ucyBvbiBhIGRhdGEgYmxvY2sgdG8gZmluZCBjb2RlcG9pbnRzIGluIG1fbmV4dEJsb2NrXworICAgICogYWZ0ZXIgdGhlIGluZGV4IG1fbmV4dEJsb2NrSW5kZXhfIHRoYXQgaGFzIHRoZSBzYW1lIHZhbHVlLgorICAgICogTm90ZSBtXypfIHZhcmlhYmxlcyBhdCB0aGlzIHBvaW50IGlzIHRoZSBuZXh0IGNvZGVwb2ludCB3aG9zZSB2YWx1ZQorICAgICogaGFzIG5vdCBiZWVuIGNhbGN1bGF0ZWQuCisgICAgKiBCdXQgd2hlbiByZXR1cm5lZCB3aXRoIGZhbHNlLCBpdCB3aWxsIGJlIHRoZSBsYXN0IGNvZGVwb2ludCB3aG9zZQorICAgICogdmFsdWUgaGFzIGJlZW4gY2FsY3VsYXRlZC4KKyAgICAqIEBwYXJhbSBjdXJyZW50VmFsdWUgdGhlIHZhbHVlIHdoaWNoIG90aGVyIGNvZGVwb2ludHMgYXJlIHRlc3RlZCBhZ2FpbnN0CisgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIHdob2xlIGJsb2NrIGhhcyB0aGUgc2FtZSB2YWx1ZSBhcyBjdXJyZW50VmFsdWUgb3IgaWYKKyAgICAqICAgICAgICAgICAgICB0aGUgd2hvbGUgYmxvY2sgaGFzIGJlZW4gY2FsY3VsYXRlZCwgZmFsc2Ugb3RoZXJ3aXNlLgorICAgICovCisgICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIGNoZWNrQmxvY2tEZXRhaWwoaW50IGN1cnJlbnRWYWx1ZSkKKyAgICB7CisJICAgIHdoaWxlIChtX25leHRCbG9ja0luZGV4XyA8IERBVEFfQkxPQ0tfTEVOR1RIXykgeworICAgICAgICAgICAgbV9uZXh0VmFsdWVfID0gZXh0cmFjdChtX3RyaWVfLmdldFZhbHVlKG1fbmV4dEJsb2NrXyArIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbmV4dEJsb2NrSW5kZXhfKSk7CisgICAgICAgICAgICBpZiAobV9uZXh0VmFsdWVfICE9IGN1cnJlbnRWYWx1ZSkgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICsrIG1fbmV4dEJsb2NrSW5kZXhfOworICAgICAgICAgICAgKysgbV9uZXh0Q29kZXBvaW50XzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgKiBJbnRlcm5hbCBibG9jayB2YWx1ZSBjYWxjdWxhdGlvbnMKKyAgICAqIFBlcmZvcm1zIGNhbGN1bGF0aW9ucyBvbiBhIGRhdGEgYmxvY2sgdG8gZmluZCBjb2RlcG9pbnRzIGluIG1fbmV4dEJsb2NrXworICAgICogdGhhdCBoYXMgdGhlIHNhbWUgdmFsdWUuIAorICAgICogV2lsbCBjYWxsIGNoZWNrQmxvY2tEZXRhaWwoKSBpZiBoaWdobGV2ZWwgY2hlY2sgZmFpbHMuCisgICAgKiBOb3RlIG1fKl8gdmFyaWFibGVzIGF0IHRoaXMgcG9pbnQgaXMgdGhlIG5leHQgY29kZXBvaW50IHdob3NlIHZhbHVlCisgICAgKiBoYXMgbm90IGJlZW4gY2FsY3VsYXRlZC4KKyAgICAqIEBwYXJhbSBjdXJyZW50QmxvY2sgdGhlIGluaXRpYWwgYmxvY2sgY29udGFpbmluZyBhbGwgY3VycmVudFZhbHVlCisgICAgKiBAcGFyYW0gY3VycmVudFZhbHVlIHRoZSB2YWx1ZSB3aGljaCBvdGhlciBjb2RlcG9pbnRzIGFyZSB0ZXN0ZWQgYWdhaW5zdAorICAgICogQHJldHVybiB0cnVlIGlmIHRoZSB3aG9sZSBibG9jayBoYXMgdGhlIHNhbWUgdmFsdWUgYXMgY3VycmVudFZhbHVlIG9yIGlmCisgICAgKiAgICAgICAgICAgICAgdGhlIHdob2xlIGJsb2NrIGhhcyBiZWVuIGNhbGN1bGF0ZWQsIGZhbHNlIG90aGVyd2lzZS4KKyAgICAqLworICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiBjaGVja0Jsb2NrKGludCBjdXJyZW50QmxvY2ssIGludCBjdXJyZW50VmFsdWUpIAorICAgIHsKKyAgICAgICAgbV9uZXh0QmxvY2tfID0gbV90cmllXy5tX2luZGV4X1ttX25leHRJbmRleF9dIDw8IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmllLklOREVYX1NUQUdFXzJfU0hJRlRfOworICAgICAgICBpZiAobV9uZXh0QmxvY2tfID09IGN1cnJlbnRCbG9jayAmJgorICAgICAgICAgICAgKG1fbmV4dENvZGVwb2ludF8gLSBtX2N1cnJlbnRDb2RlcG9pbnRfKSA+PSBEQVRBX0JMT0NLX0xFTkdUSF8pIHsKKyAgICAgICAgICAgIC8vIHRoZSBibG9jayBpcyB0aGUgc2FtZSBhcyB0aGUgcHJldmlvdXMgb25lLCBmaWxsZWQgd2l0aCAKKyAgICAgICAgICAgIC8vIGN1cnJlbnRWYWx1ZQorCQkJbV9uZXh0Q29kZXBvaW50XyArPSBEQVRBX0JMT0NLX0xFTkdUSF87CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobV9uZXh0QmxvY2tfID09IDApIHsKKyAgICAgICAgICAgIC8vIHRoaXMgaXMgdGhlIGFsbC1pbml0aWFsLXZhbHVlIGJsb2NrCisgICAgICAgICAgICBpZiAoY3VycmVudFZhbHVlICE9IG1faW5pdGlhbFZhbHVlXykgeworICAgICAgICAgICAgICAgIG1fbmV4dFZhbHVlXyAgICAgID0gbV9pbml0aWFsVmFsdWVfOworICAgICAgICAgICAgICAgIG1fbmV4dEJsb2NrSW5kZXhfID0gMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX25leHRDb2RlcG9pbnRfICs9IERBVEFfQkxPQ0tfTEVOR1RIXzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmICghY2hlY2tCbG9ja0RldGFpbChjdXJyZW50VmFsdWUpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAqIEludGVybmFsIGJsb2NrIHZhbHVlIGNhbGN1bGF0aW9ucworICAgICogUGVyZm9ybXMgY2FsY3VsYXRpb25zIG9uIG11bHRpcGxlIGRhdGEgYmxvY2tzIGZvciBhIHNldCBvZiB0cmFpbCAKKyAgICAqIHN1cnJvZ2F0ZXMgdG8gZmluZCBjb2RlcG9pbnRzIGluIG1fbmV4dEJsb2NrXyB0aGF0IGhhcyB0aGUgc2FtZSB2YWx1ZS4gCisgICAgKiBXaWxsIGNhbGwgY2hlY2tCbG9jaygpIGZvciBpbnRlcm5hbCBibG9jayBjaGVja3MuCisgICAgKiBOb3RlIG1fKl8gdmFyaWFibGVzIGF0IHRoaXMgcG9pbnQgaXMgdGhlIG5leHQgY29kZXBvaW50IHdob3NlIHZhbHVlCisgICAgKiBoYXMgbm90IGJlZW4gY2FsY3VsYXRlZC4KKyAgICAqIEBwYXJhbSBjdXJyZW50QmxvY2sgdGhlIGluaXRpYWwgYmxvY2sgY29udGFpbmluZyBhbGwgY3VycmVudFZhbHVlCisgICAgKiBAcGFyYW0gY3VycmVudFZhbHVlIHRoZSB2YWx1ZSB3aGljaCBvdGhlciBjb2RlcG9pbnRzIGFyZSB0ZXN0ZWQgYWdhaW5zdAorICAgICogQHJldHVybiB0cnVlIGlmIHRoZSB3aG9sZSBibG9jayBoYXMgdGhlIHNhbWUgdmFsdWUgYXMgY3VycmVudFZhbHVlIG9yIGlmCisgICAgKiAgICAgICAgICAgICAgdGhlIHdob2xlIGJsb2NrIGhhcyBiZWVuIGNhbGN1bGF0ZWQsIGZhbHNlIG90aGVyd2lzZS4KKyAgICAqLworICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiBjaGVja1RyYWlsQmxvY2soaW50IGN1cnJlbnRCbG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjdXJyZW50VmFsdWUpCisgICAgeworCSAgICAvLyBlbnVtZXJhdGUgY29kZSBwb2ludHMgZm9yIHRoaXMgbGVhZCBzdXJyb2dhdGUKKyAgICAgICAgd2hpbGUgKG1fbmV4dFRyYWlsSW5kZXhPZmZzZXRfIDwgVFJBSUxfU1VSUk9HQVRFX0lOREVYX0JMT0NLX0xFTkdUSF8pIAorICAgICAgICB7CisJCSAgICAvLyBpZiB3ZSBldmVyIHJlYWNoIGhlcmUsIHdlIGFyZSBhdCB0aGUgc3RhcnQgb2YgYSBuZXcgYmxvY2sKKyAgICAgICAgICAgIG1fbmV4dEJsb2NrSW5kZXhfID0gMDsKKyAgICAgICAgICAgIC8vIGNvcHkgb2YgbW9zdCBvZiB0aGUgYm9keSBvZiB0aGUgQk1QIGxvb3AKKyAgICAgICAgICAgIGlmICghY2hlY2tCbG9jayhjdXJyZW50QmxvY2ssIGN1cnJlbnRWYWx1ZSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX25leHRUcmFpbEluZGV4T2Zmc2V0XyArKzsKKyAgICAgICAgICAgIG1fbmV4dEluZGV4XyArKzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisJLyoqCisJKiBDaGVja3MgaWYgd2UgYXJlIGJlZ2lubmluZyBhdCB0aGUgc3RhcnQgb2YgYSBpbml0aWFsIGJsb2NrLgorCSogSWYgd2UgYXJlIHRoZW4gdGhlIHJlc3Qgb2YgdGhlIGNvZGVwb2ludHMgaW4gdGhpcyBpbml0aWFsIGJsb2NrCisJKiBoYXMgdGhlIHNhbWUgdmFsdWVzLgorCSogV2UgaW5jcmVtZW50IG1fbmV4dENvZGVwb2ludF8gYW5kIHJlbGV2YW50IGRhdGEgbWVtYmVycyBpZiBzby4KKwkqIFRoaXMgaXMgdXNlZCBvbmx5IGluIGZvciB0aGUgc3VwcGxlbWVudGFyeSBjb2RlcG9pbnRzIGJlY2F1c2UKKwkqIHRoZSBvZmZzZXQgdG8gdGhlIHRyYWlsIGluZGV4ZXMgY291bGQgYmUgMC4KKwkqIEByZXR1cm4gdHJ1ZSBpZiB3ZSBhcmUgYXQgdGhlIHN0YXJ0IG9mIGEgaW5pdGlhbCBibG9jay4KKwkqLworCXByaXZhdGUgZmluYWwgYm9vbGVhbiBjaGVja051bGxOZXh0VHJhaWxJbmRleCgpCisJeworCQlpZiAobV9uZXh0SW5kZXhfIDw9IDApIHsKKwkJICAgIG1fbmV4dENvZGVwb2ludF8gKz0gVFJBSUxfU1VSUk9HQVRFX0NPVU5UXyAtIDE7CisJCQlpbnQgbmV4dExlYWQgID0gVVRGMTYuZ2V0TGVhZFN1cnJvZ2F0ZShtX25leHRDb2RlcG9pbnRfKTsKKwkJCWludCBsZWFkQmxvY2sgPSAKKyAgICAgICAgICAgICAgICAgICBtX3RyaWVfLm1faW5kZXhfW25leHRMZWFkID4+IFRyaWUuSU5ERVhfU1RBR0VfMV9TSElGVF9dIDw8IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJpZS5JTkRFWF9TVEFHRV8yX1NISUZUXzsKKyAgICAgICAgICAgIGlmIChtX3RyaWVfLm1fZGF0YU1hbmlwdWxhdGVfID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBmaWVsZCBEYXRhTWFuaXB1bGF0ZSBpbiB0aGlzIFRyaWUgaXMgbnVsbCIpOworICAgICAgICAgICAgfQorCQkJbV9uZXh0SW5kZXhfID0gbV90cmllXy5tX2RhdGFNYW5pcHVsYXRlXy5nZXRGb2xkaW5nT2Zmc2V0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdHJpZV8uZ2V0VmFsdWUobGVhZEJsb2NrICsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZXh0TGVhZCAmIFRyaWUuSU5ERVhfU1RBR0VfM19NQVNLXykpKTsKKwkJCW1fbmV4dEluZGV4XyAtLTsKKwkJCW1fbmV4dEJsb2NrSW5kZXhfID0gIERBVEFfQkxPQ0tfTEVOR1RIXzsKKwkJCXJldHVybiB0cnVlOworCSAgICB9CisJCXJldHVybiBmYWxzZTsKKwl9CisKKyAgICAvLyBwcml2YXRlIGRhdGEgbWVtYmVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgKiBTaXplIG9mIHRoZSBzdGFnZSAxIEJNUCBpbmRleGVzCisgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQk1QX0lOREVYX0xFTkdUSF8gPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAwMDAgPj4gVHJpZS5JTkRFWF9TVEFHRV8xX1NISUZUXzsKKyAgICAvKioKKyAgICAqIExlYWQgc3Vycm9nYXRlIG1pbmltdW0gdmFsdWUKKyAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBMRUFEX1NVUlJPR0FURV9NSU5fVkFMVUVfID0gMHhEODAwOworICAgIC8qKgorICAgICogVHJhaWwgc3Vycm9nYXRlIG1pbmltdW0gdmFsdWUKKyAgICAqLworCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBUUkFJTF9TVVJST0dBVEVfTUlOX1ZBTFVFXyA9IDB4REMwMDsKKwkvKioKKyAgICAqIFRyYWlsIHN1cnJvZ2F0ZSBtYXhpbXVtIHZhbHVlCisgICAgKi8KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgVFJBSUxfU1VSUk9HQVRFX01BWF9WQUxVRV8gPSAweERGRkY7CisJLyoqCisJKiBOdW1iZXIgb2YgdHJhaWwgc3Vycm9nYXRlCisJKi8KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgVFJBSUxfU1VSUk9HQVRFX0NPVU5UXyA9IDB4NDAwOworICAgIC8qKgorCSogTnVtYmVyIG9mIHN0YWdlIDEgaW5kZXhlcyBmb3Igc3VwcGxlbWVudGFyeSBjYWxjdWxhdGlvbnMgdGhhdCBtYXBzIHRvCisJKiBlYWNoIGxlYWQgc3Vycm9nYXRlIGNoYXJhY3Rlci4KKwkqIFNlZSBzZWNvbmQgcGFzcyBpbnRvIGdldFJhd09mZnNldCBmb3IgdGhlIHRyYWlsIHN1cnJvZ2F0ZSBjaGFyYWN0ZXIuCisJKiAxMCBmb3Igc2lnbmlmaWNhbnQgbnVtYmVyIG9mIGJpdHMgZm9yIHRyYWlsIHN1cnJvZ2F0ZXMsIDUgZm9yIHdoYXQgd2UKKwkqIGRpc2NhcmQgZHVyaW5nIHNoaWZ0aW5nLgorCSovCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFRSQUlMX1NVUlJPR0FURV9JTkRFWF9CTE9DS19MRU5HVEhfID0KKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgPDwgKDEwIC0gVHJpZS5JTkRFWF9TVEFHRV8xX1NISUZUXyk7CisJLyoqCisJKiBOdW1iZXIgb2YgZGF0YSB2YWx1ZXMgaW4gYSBzdGFnZSAyIChkYXRhIGFycmF5KSBibG9jay4KKwkqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBEQVRBX0JMT0NLX0xFTkdUSF8gPSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIDw8IFRyaWUuSU5ERVhfU1RBR0VfMV9TSElGVF87CisgICAgLyoqCisgICAgKiBOdW1iZXIgb2YgY29kZXBvaW50cyBpbiBhIHN0YWdlIDIgYmxvY2sKKyAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBEQVRBX0JMT0NLX1NVUFBMRU1FTlRBUllfTEVOR1RIXyA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEFfQkxPQ0tfTEVOR1RIXyA8PCAxMDsKKyAgICAvKioKKyAgICAqIFRyaWUgaW5zdGFuY2UKKyAgICAqLworICAgIHByaXZhdGUgVHJpZSBtX3RyaWVfOworICAgIC8qKgorICAgICogSW5pdGlhbCB2YWx1ZSBmb3IgdHJpZSB2YWx1ZXMKKyAgICAqLworICAgIHByaXZhdGUgaW50IG1faW5pdGlhbFZhbHVlXzsKKyAgICAvKioKKyAgICAqIE5leHQgZWxlbWVudCByZXN1bHRzIGFuZCBkYXRhLgorICAgICovCisgICAgcHJpdmF0ZSBpbnQgbV9jdXJyZW50Q29kZXBvaW50XzsKKyAgICBwcml2YXRlIGludCBtX25leHRDb2RlcG9pbnRfOworICAgIHByaXZhdGUgaW50IG1fbmV4dFZhbHVlXzsKKyAgICBwcml2YXRlIGludCBtX25leHRJbmRleF87CisgICAgcHJpdmF0ZSBpbnQgbV9uZXh0QmxvY2tfOworICAgIHByaXZhdGUgaW50IG1fbmV4dEJsb2NrSW5kZXhfOworICAgIHByaXZhdGUgaW50IG1fbmV4dFRyYWlsSW5kZXhPZmZzZXRfOworICAgIC8qKgorICAgICogVGhpcyBpcyB0aGUgcmV0dXJuIHJlc3VsdCBlbGVtZW50CisgICAgKi8KKyAgICBwcml2YXRlIGludCBtX3N0YXJ0XzsKKyAgICBwcml2YXRlIGludCBtX2xpbWl0XzsKKyAgICBwcml2YXRlIGludCBtX3ZhbHVlXzsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9VQ2hhckFycmF5SXRlcmF0b3IuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL1VDaGFyQXJyYXlJdGVyYXRvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwZGZjMWEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9VQ2hhckFycmF5SXRlcmF0b3IuamF2YQpAQCAtMCwwICsxLDkwIEBACisvKioKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvVUNoYXJBcnJheUl0ZXJhdG9yLmphdmEsdiAkIAorKiAkRGF0ZTogMjAwMi8xMC8zMSAyMjozNToyMCAkIAorKiAkUmV2aXNpb246IDEuMyAkCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LmltcGw7CisKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0Lio7CisKKworLyoqCisgKiBAYXV0aG9yIERvdWcgRmVsdAorICoKKyAqLworCitwdWJsaWMgZmluYWwgY2xhc3MgVUNoYXJBcnJheUl0ZXJhdG9yIGV4dGVuZHMgVUNoYXJhY3Rlckl0ZXJhdG9yIHsKKyAgICBwcml2YXRlIGZpbmFsIGNoYXJbXSB0ZXh0OworICAgIHByaXZhdGUgZmluYWwgaW50IHN0YXJ0OworICAgIHByaXZhdGUgZmluYWwgaW50IGxpbWl0OworICAgIHByaXZhdGUgaW50IHBvczsKKworICAgIHB1YmxpYyBVQ2hhckFycmF5SXRlcmF0b3IoY2hhcltdIHRleHQsIGludCBzdGFydCwgaW50IGxpbWl0KSB7CisgICAgICAgIGlmIChzdGFydCA8IDAgfHwgbGltaXQgPiB0ZXh0Lmxlbmd0aCB8fCBzdGFydCA+IGxpbWl0KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJzdGFydDogIiArIHN0YXJ0ICsgIiBvciBsaW1pdDogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGxpbWl0ICsgIiBvdXQgb2YgcmFuZ2UgWzAsICIgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgdGV4dC5sZW5ndGggKyAiKSIpOworICAgICAgICB9CisgICAgICAgIHRoaXMudGV4dCA9IHRleHQ7CisgICAgICAgIHRoaXMuc3RhcnQgPSBzdGFydDsKKyAgICAgICAgdGhpcy5saW1pdCA9IGxpbWl0OworCisgICAgICAgIHRoaXMucG9zID0gc3RhcnQ7CisgICAgfQorCisgICAgcHVibGljIGludCBjdXJyZW50KCkgeworICAgICAgICByZXR1cm4gcG9zIDwgbGltaXQgPyB0ZXh0W3Bvc10gOiBET05FOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgZ2V0TGVuZ3RoKCkgeworICAgICAgICByZXR1cm4gbGltaXQgLSBzdGFydDsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50IGdldEluZGV4KCkgeworICAgICAgICByZXR1cm4gcG9zIC0gc3RhcnQ7CisgICAgfQorCisgICAgcHVibGljIGludCBuZXh0KCkgeworICAgICAgICByZXR1cm4gcG9zIDwgbGltaXQgPyB0ZXh0W3BvcysrXSA6IERPTkU7CisgICAgfQorCisgICAgcHVibGljIGludCBwcmV2aW91cygpIHsKKyAgICAgICAgcmV0dXJuIHBvcyA+IHN0YXJ0ID8gdGV4dFstLXBvc10gOiBET05FOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEluZGV4KGludCBpbmRleCkgeworICAgICAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID4gbGltaXQgLSBzdGFydCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24oImluZGV4OiAiICsgaW5kZXggKyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgb3V0IG9mIHJhbmdlIFswLCAiIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAobGltaXQgLSBzdGFydCkgKyAiKSIpOworICAgICAgICB9CisgICAgICAgIHBvcyA9IHN0YXJ0ICsgaW5kZXg7CisgICAgfQorCisgICAgcHVibGljIGludCBnZXRUZXh0KGNoYXJbXSBmaWxsSW4sIGludCBvZmZzZXQpIHsKKyAgICAgICAgaW50IGxlbiA9IGxpbWl0IC0gc3RhcnQ7CisgICAgICAgIFN5c3RlbS5hcnJheWNvcHkodGV4dCwgc3RhcnQsIGZpbGxJbiwgb2Zmc2V0LCBsZW4pOworICAgICAgICByZXR1cm4gbGVuOworICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSBjb3B5IG9mIHRoaXMgaXRlcmF0b3IsIGRvZXMgbm90IGNsb25lIHRoZSB1bmRlcmx5aW5nIAorICAgICAqIDxjb2RlPlJlcGxhY2VhYmxlPC9jb2RlPm9iamVjdAorICAgICAqIEByZXR1cm4gY29weSBvZiB0aGlzIGl0ZXJhdG9yCisgICAgICovCisgICAgcHVibGljIE9iamVjdCBjbG9uZSgpeworICAgICAgICB0cnkgeworICAgICAgICAgIHJldHVybiBzdXBlci5jbG9uZSgpOworICAgICAgICB9IGNhdGNoIChDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsgLy8gbmV2ZXIgaW52b2tlZAorICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL1VDaGFyYWN0ZXJJdGVyYXRvcldyYXBwZXIuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL1VDaGFyYWN0ZXJJdGVyYXRvcldyYXBwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDc1YjljCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvVUNoYXJhY3Rlckl0ZXJhdG9yV3JhcHBlci5qYXZhCkBAIC0wLDAgKzEsMTQ3IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAvdXNyL2N2cy9pY3U0ai9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9JQ1VDaGFyYWN0ZXJJdGVyYXRvci5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzA2LzIwIDAxOjE4OjA3ICQgCisgKiAkUmV2aXNpb246IDEuMSAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworIAorcGFja2FnZSBjb20uaWJtLmljdS5pbXBsOworCitpbXBvcnQgamF2YS50ZXh0LkNoYXJhY3Rlckl0ZXJhdG9yOworCitpbXBvcnQgY29tLmlibS5pY3UudGV4dC4qOworCisvKioKKyAqIFRoaXMgY2xhc3MgaXMgYSB3cmFwcGVyIGFyb3VuZCBVQ2hhcmFjdGVySXRlcmF0b3IgYW5kIGltcGxlbWVudHMgdGhlIAorICogQ2hhcmFjdGVySXRlcmF0b3IgcHJvdG9jb2wKKyAqIEBhdXRob3IgcmFtCisgKi8KK3B1YmxpYyBjbGFzcyBVQ2hhcmFjdGVySXRlcmF0b3JXcmFwcGVyIGltcGxlbWVudHMgQ2hhcmFjdGVySXRlcmF0b3J7CisgICAgCisgICAgcHVibGljIFVDaGFyYWN0ZXJJdGVyYXRvcldyYXBwZXIoVUNoYXJhY3Rlckl0ZXJhdG9yIGl0ZXIpeworICAgICAgICB0aGlzLml0ZXJhdG9yID0gaXRlcjsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBVQ2hhcmFjdGVySXRlcmF0b3IgaXRlcmF0b3I7CisKKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIHBvc2l0aW9uIHRvIGdldEJlZ2luSW5kZXgoKSBhbmQgcmV0dXJucyB0aGUgY2hhcmFjdGVyIGF0IHRoYXQKKyAgICAgKiBwb3NpdGlvbi4KKyAgICAgKiBAcmV0dXJuIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlIHRleHQsIG9yIERPTkUgaWYgdGhlIHRleHQgaXMgZW1wdHkKKyAgICAgKiBAc2VlICNnZXRCZWdpbkluZGV4KCkKKyAgICAgKi8KKyAgICBwdWJsaWMgY2hhciBmaXJzdCgpeworICAgIAkvL1VDaGFyYWN0ZXJJdGVyYXRvciBhbHdheXMgaXRlcmF0ZXMgZnJvbSAwIHRvIGxlbmd0aAorICAgICAgICBpdGVyYXRvci5zZXRUb1N0YXJ0KCk7CisgICAgICAgIHJldHVybiAoY2hhcilpdGVyYXRvci5jdXJyZW50KCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgcG9zaXRpb24gdG8gZ2V0RW5kSW5kZXgoKS0xIChnZXRFbmRJbmRleCgpIGlmIHRoZSB0ZXh0IGlzIGVtcHR5KQorICAgICAqIGFuZCByZXR1cm5zIHRoZSBjaGFyYWN0ZXIgYXQgdGhhdCBwb3NpdGlvbi4KKyAgICAgKiBAcmV0dXJuIHRoZSBsYXN0IGNoYXJhY3RlciBpbiB0aGUgdGV4dCwgb3IgRE9ORSBpZiB0aGUgdGV4dCBpcyBlbXB0eQorICAgICAqIEBzZWUgI2dldEVuZEluZGV4KCkKKyAgICAgKi8KKyAgICBwdWJsaWMgY2hhciBsYXN0KCl7CisgICAgICAgIGl0ZXJhdG9yLnNldFRvTGltaXQoKTsKKyAgICAgICAgcmV0dXJuIChjaGFyKWl0ZXJhdG9yLnByZXZpb3VzKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgY2hhcmFjdGVyIGF0IHRoZSBjdXJyZW50IHBvc2l0aW9uIChhcyByZXR1cm5lZCBieSBnZXRJbmRleCgpKS4KKyAgICAgKiBAcmV0dXJuIHRoZSBjaGFyYWN0ZXIgYXQgdGhlIGN1cnJlbnQgcG9zaXRpb24gb3IgRE9ORSBpZiB0aGUgY3VycmVudAorICAgICAqIHBvc2l0aW9uIGlzIG9mZiB0aGUgZW5kIG9mIHRoZSB0ZXh0LgorICAgICAqIEBzZWUgI2dldEluZGV4KCkKKyAgICAgKi8KKyAgICBwdWJsaWMgY2hhciBjdXJyZW50KCl7CisgICAgICAgIHJldHVybiAoY2hhcikgaXRlcmF0b3IuY3VycmVudCgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEluY3JlbWVudHMgdGhlIGl0ZXJhdG9yJ3MgaW5kZXggYnkgb25lIGFuZCByZXR1cm5zIHRoZSBjaGFyYWN0ZXIKKyAgICAgKiBhdCB0aGUgbmV3IGluZGV4LiAgSWYgdGhlIHJlc3VsdGluZyBpbmRleCBpcyBncmVhdGVyIG9yIGVxdWFsCisgICAgICogdG8gZ2V0RW5kSW5kZXgoKSwgdGhlIGN1cnJlbnQgaW5kZXggaXMgcmVzZXQgdG8gZ2V0RW5kSW5kZXgoKSBhbmQKKyAgICAgKiBhIHZhbHVlIG9mIERPTkUgaXMgcmV0dXJuZWQuCisgICAgICogQHJldHVybiB0aGUgY2hhcmFjdGVyIGF0IHRoZSBuZXcgcG9zaXRpb24gb3IgRE9ORSBpZiB0aGUgbmV3CisgICAgICogcG9zaXRpb24gaXMgb2ZmIHRoZSBlbmQgb2YgdGhlIHRleHQgcmFuZ2UuCisgICAgICovCisgICAgcHVibGljIGNoYXIgbmV4dCgpeworICAgICAgICAvL3ByZS1pbmNyZW1lbnQKKyAgICAgICAgaXRlcmF0b3IubmV4dCgpOworICAgICAgICByZXR1cm4gKGNoYXIpIGl0ZXJhdG9yLmN1cnJlbnQoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEZWNyZW1lbnRzIHRoZSBpdGVyYXRvcidzIGluZGV4IGJ5IG9uZSBhbmQgcmV0dXJucyB0aGUgY2hhcmFjdGVyCisgICAgICogYXQgdGhlIG5ldyBpbmRleC4gSWYgdGhlIGN1cnJlbnQgaW5kZXggaXMgZ2V0QmVnaW5JbmRleCgpLCB0aGUgaW5kZXgKKyAgICAgKiByZW1haW5zIGF0IGdldEJlZ2luSW5kZXgoKSBhbmQgYSB2YWx1ZSBvZiBET05FIGlzIHJldHVybmVkLgorICAgICAqIEByZXR1cm4gdGhlIGNoYXJhY3RlciBhdCB0aGUgbmV3IHBvc2l0aW9uIG9yIERPTkUgaWYgdGhlIGN1cnJlbnQKKyAgICAgKiBwb3NpdGlvbiBpcyBlcXVhbCB0byBnZXRCZWdpbkluZGV4KCkuCisgICAgICovCisgICAgcHVibGljIGNoYXIgcHJldmlvdXMoKXsKKyAgICAgICAgLy9wcmUtZGVjcmVtZW50CisgICAgICAgIHJldHVybiAoY2hhcikgaXRlcmF0b3IucHJldmlvdXMoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBwb3NpdGlvbiB0byB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uIGluIHRoZSB0ZXh0IGFuZCByZXR1cm5zIHRoYXQKKyAgICAgKiBjaGFyYWN0ZXIuCisgICAgICogQHBhcmFtIHBvc2l0aW9uIHRoZSBwb3NpdGlvbiB3aXRoaW4gdGhlIHRleHQuICBWYWxpZCB2YWx1ZXMgcmFuZ2UgZnJvbQorICAgICAqIGdldEJlZ2luSW5kZXgoKSB0byBnZXRFbmRJbmRleCgpLiAgQW4gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlzIHRocm93bgorICAgICAqIGlmIGFuIGludmFsaWQgdmFsdWUgaXMgc3VwcGxpZWQuCisgICAgICogQHJldHVybiB0aGUgY2hhcmFjdGVyIGF0IHRoZSBzcGVjaWZpZWQgcG9zaXRpb24gb3IgRE9ORSBpZiB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uIGlzIGVxdWFsIHRvIGdldEVuZEluZGV4KCkKKyAgICAgKi8KKyAgICBwdWJsaWMgY2hhciBzZXRJbmRleChpbnQgcG9zaXRpb24peworICAgICAgICBpdGVyYXRvci5zZXRJbmRleChwb3NpdGlvbik7CisgICAgICAgIHJldHVybiAoY2hhcikgaXRlcmF0b3IuY3VycmVudCgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIHN0YXJ0IGluZGV4IG9mIHRoZSB0ZXh0LgorICAgICAqIEByZXR1cm4gdGhlIGluZGV4IGF0IHdoaWNoIHRoZSB0ZXh0IGJlZ2lucy4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldEJlZ2luSW5kZXgoKXsKKyAgICAJLy9VQ2hhcmFjdGVySXRlcmF0b3IgYWx3YXlzIHN0YXJ0cyBmcm9tIDAKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgZW5kIGluZGV4IG9mIHRoZSB0ZXh0LiAgVGhpcyBpbmRleCBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0CisgICAgICogY2hhcmFjdGVyIGZvbGxvd2luZyB0aGUgZW5kIG9mIHRoZSB0ZXh0LgorICAgICAqIEByZXR1cm4gdGhlIGluZGV4IGFmdGVyIHRoZSBsYXN0IGNoYXJhY3RlciBpbiB0aGUgdGV4dAorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0RW5kSW5kZXgoKXsKKyAgICAgICAgcmV0dXJuIGl0ZXJhdG9yLmdldExlbmd0aCgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnQgaW5kZXguCisgICAgICogQHJldHVybiB0aGUgY3VycmVudCBpbmRleC4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldEluZGV4KCl7CisgICAgICAgIHJldHVybiBpdGVyYXRvci5nZXRJbmRleCgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZSBhIGNvcHkgb2YgdGhpcyBpdGVyYXRvcgorICAgICAqIEByZXR1cm4gQSBjb3B5IG9mIHRoaXMKKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0IGNsb25lKCl7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBVQ2hhcmFjdGVySXRlcmF0b3JXcmFwcGVyIHJlc3VsdCA9IChVQ2hhcmFjdGVySXRlcmF0b3JXcmFwcGVyKSBzdXBlci5jbG9uZSgpOworICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yID0gKFVDaGFyYWN0ZXJJdGVyYXRvcil0aGlzLml0ZXJhdG9yLmNsb25lKCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9IGNhdGNoIChDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiBlKSB7ICAgICAgCisgICAgICAgICAgICByZXR1cm4gbnVsbDsgLy8gb25seSBpbnZva2VkIGlmIGJhZCB1bmRlcmx5aW5nIGNoYXJhY3RlciBpdGVyYXRvcgorICAgICAgICB9CisgICAgfSAgIAorCit9CisKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL1VDaGFyYWN0ZXJOYW1lLmphdmEgYi9zcmMvY29tL2libS9pY3UvaW1wbC9VQ2hhcmFjdGVyTmFtZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2YjU2ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9VQ2hhcmFjdGVyTmFtZS5qYXZhCkBAIC0wLDAgKzEsMTcxMCBAQAorLyoqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqICRTb3VyY2U6IAorKiAgICAgL3Vzci9jdnMvaWN1NGovaWN1NGovc3JjL2NvbS9pYm0vaWN1L3RleHQvVUNoYXJhY3Rlck5hbWUuamF2YSAkIAorKiAkRGF0ZTogMjAwMi8xMC8wMyAxOTozODo0NCAkIAorKiAkUmV2aXNpb246IDEuMiAkCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworcGFja2FnZSBjb20uaWJtLmljdS5pbXBsOworCitpbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLkJ1ZmZlcmVkSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLlV0aWxpdHk7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC5VVEYxNjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0LlVuaWNvZGVTZXQ7CitpbXBvcnQgY29tLmlibS5pY3UubGFuZy5VQ2hhcmFjdGVyOworaW1wb3J0IGNvbS5pYm0uaWN1LmxhbmcuVUNoYXJhY3RlckNhdGVnb3J5OworCisvKioKKyogSW50ZXJuYWwgY2xhc3MgdG8gbWFuYWdlIGNoYXJhY3RlciBuYW1lcy4KKyogU2luY2UgZGF0YSBpbiA8YSBocmVmPVVDaGFyYWN0ZXJOYW1lREIuaHRtbD5VQ2hhcmFjdGVyTmFtZURCPC9hPiBpcyBzdG9yZWQKKyogaW4gYW4gYXJyYXkgb2YgY2hhciwgYnkgZGVmYXVsdCBpbmRleGVzIHVzZWQgaW4gdGhpcyBjbGFzcyBpcyByZWZlcmluZyB0byAKKyogYSAyIGJ5dGUgY291bnQsIHVubGVzcyBvdGhlcndpc2Ugc3RhdGVkLiBDYXNlcyB3aGVyZSB0aGUgaW5kZXggaXMgcmVmZXJpbmcgCisqIHRvIGEgYnl0ZSBjb3VudCwgdGhlIGluZGV4IGlzIGhhbHZlZCBhbmQgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIGluZGV4IGlzIAorKiBldmVuIG9yIG9kZCwgdGhlIE1TQiBvciBMU0Igb2YgdGhlIHJlc3VsdCBjaGFyIGF0IHRoZSBoYWx2ZWQgaW5kZXggaXMgCisqIHJldHVybmVkLiBGb3IgaW5kZXhlcyB0byBhbiBhcnJheSBvZiBpbnQsIHRoZSBpbmRleCBpcyBtdWx0aXBsaWVkIGJ5IDIsIAorKiByZXN1bHQgY2hhciBhdCB0aGUgbXVsdGlwbGllZCBpbmRleCBhbmQgaXRzIGZvbGxvd2luZyBjaGFyIGlzIHJldHVybmVkIGFzIGFuIAorKiBpbnQuCisqIDxhIGhyZWY9VUNoYXJhY3Rlci5odG1sPlVDaGFyYWN0ZXI8L2E+IGFjdHMgYXMgYSBwdWJsaWMgZmFjYWRlIGZvciB0aGlzIGNsYXNzCisqIE5vdGUgOiAwIC0gMHgxRiBhcmUgY29udHJvbCBjaGFyYWN0ZXJzIHdpdGhvdXQgbmFtZXMgaW4gVW5pY29kZSAzLjAKKyogSW5mb3JtYXRpb24gb24gcGFyc2luZyBvZiB0aGUgYmluYXJ5IGRhdGEgaXMgbG9jYXRlZCBhdAorKiA8YSBocmVmPW9zcy5zb2Z0d2FyZS5pYm0uY29tL2ljdTRqL2ljdTRqaHRtbC9jb20vaWJtL2ljdS90ZXh0L3JlYWRtZS5odG1sPgorKiBSZWFkTWU8L2E+CisqIEBhdXRob3IgU3luIFdlZSBRdWVrCisqIEBzaW5jZSBub3YwNzAwCisqLworCitwdWJsaWMgZmluYWwgY2xhc3MgVUNoYXJhY3Rlck5hbWUKK3sgICAKKyAgICAvLyBwdWJsaWMgZGF0YSBtZW1iZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvKioKKyAgICAqIE51bWJlciBvZiBsaW5lcyBwZXIgZ3JvdXAgCisgICAgKiAxIDw8IEdST1VQX1NISUZUXworICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTElORVNfUEVSX0dST1VQXyA9IDEgPDwgNTsKKyAgICAvKioKKyAgICAgKiBNYXhpbXVtIG51bWJlciBvZiBncm91cHMKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IG1fZ3JvdXBjb3VudF8gPSAwOworICAgIAorICAgIC8vIHB1YmxpYyBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIC8qKgorICAgICAqIEdldHMgdGhlIG9ubHkgaW5zdGFuY2Ugb2YgVUNoYXJhY3Rlck5hbWUKKyAgICAgKiBAcmV0dXJuIG9ubHkgaW5zdGFuY2Ugb2YgVUNoYXJhY3Rlck5hbWUKKyAgICAgKiBAZXhjZXB0aW9uIFJ1bnRpbWVFeGNlcHRpb24gdGhyb3duIHdoZW4gcmVhZGluZyBvZiBuYW1lIGRhdGEgZmFpbHMKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFVDaGFyYWN0ZXJOYW1lIGdldEluc3RhbmNlKCkgdGhyb3dzIFJ1bnRpbWVFeGNlcHRpb24KKyAgICB7CisgICAgICAgIGlmIChJTlNUQU5DRV8gPT0gbnVsbCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBJTlNUQU5DRV8gPSBuZXcgVUNoYXJhY3Rlck5hbWUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKGUuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gSU5TVEFOQ0VfOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAqIFJldHJpZXZlIHRoZSBuYW1lIG9mIGEgVW5pY29kZSBjb2RlIHBvaW50LgorICAgICogRGVwZW5kaW5nIG9uIDxjb2RlPmNob2ljZTwvY29kZT4sIHRoZSBjaGFyYWN0ZXIgbmFtZSB3cml0dGVuIGludG8gdGhlIAorICAgICogYnVmZmVyIGlzIHRoZSAibW9kZXJuIiBuYW1lIG9yIHRoZSBuYW1lIHRoYXQgd2FzIGRlZmluZWQgaW4gVW5pY29kZSAKKyAgICAqIHZlcnNpb24gMS4wLgorICAgICogVGhlIG5hbWUgY29udGFpbnMgb25seSAiaW52YXJpYW50IiBjaGFyYWN0ZXJzCisgICAgKiBsaWtlIEEtWiwgMC05LCBzcGFjZSwgYW5kICctJy4KKyAgICAqCisgICAgKiBAcGFyYW0gY2ggdGhlIGNvZGUgcG9pbnQgZm9yIHdoaWNoIHRvIGdldCB0aGUgbmFtZS4KKyAgICAqIEBwYXJhbSBjaG9pY2UgU2VsZWN0b3IgZm9yIHdoaWNoIG5hbWUgdG8gZ2V0LgorICAgICogQHJldHVybiBpZiBjb2RlIHBvaW50IGlzIGFib3ZlIDB4MWZmZiwgbnVsbCBpcyByZXR1cm5lZAorICAgICovCisgICAgcHVibGljIFN0cmluZyBnZXROYW1lKGludCBjaCwgaW50IGNob2ljZSkKKyAgICB7CisgICAgICAgIGlmIChjaCA8IFVDaGFyYWN0ZXIuTUlOX1ZBTFVFIHx8IGNoID4gVUNoYXJhY3Rlci5NQVhfVkFMVUUgfHwgCisgICAgICAgICAgICBjaG9pY2UgPiBVQ2hhcmFjdGVyTmFtZUNob2ljZS5DSEFSX05BTUVfQ0hPSUNFX0NPVU5UKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgU3RyaW5nIHJlc3VsdCA9IG51bGw7CisgICAgICAgIAorICAgICAgICByZXN1bHQgPSBnZXRBbGdOYW1lKGNoLCBjaG9pY2UpOworICAgICAgICAgIAorICAgICAgICAvLyBnZXR0aW5nIG5vcm1hbCBjaGFyYWN0ZXIgbmFtZQorICAgICAgICBpZiAocmVzdWx0ID09IG51bGwgfHwgcmVzdWx0Lmxlbmd0aCgpID09IDApIHsKKyAgICAgICAgICAgIGlmIChjaG9pY2UgPT0gVUNoYXJhY3Rlck5hbWVDaG9pY2UuRVhURU5ERURfQ0hBUl9OQU1FKSB7ICAgICAgCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZ2V0RXh0ZW5kZWROYW1lKGNoKTsgICAKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZ2V0R3JvdXBOYW1lKGNoLCBjaG9pY2UpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgICAgCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgICAgCisgICAgLyoqCisgICAgKiBGaW5kIGEgY2hhcmFjdGVyIGJ5IGl0cyBuYW1lIGFuZCByZXR1cm4gaXRzIGNvZGUgcG9pbnQgdmFsdWUKKyAgICAqIEBwYXJhbSBjaGFyYWN0ZXIgbmFtZQorICAgICogQHBhcmFtIGNob2ljZSBzZWxlY3RvciB0byBpbmRpY2F0ZSBpZiBhcmd1bWVudCBuYW1lIGlzIGEgVW5pY29kZSAxLjAgCisgICAgKiAgICAgICAgb3IgdGhlIG1vc3QgY3VycmVudCB2ZXJzaW9uIAorICAgICogQHJldHVybiBjb2RlIHBvaW50CisgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldENoYXJGcm9tTmFtZShpbnQgY2hvaWNlLCBTdHJpbmcgbmFtZSkKKyAgICB7CisgICAgICAgIC8vIGNoZWNrcyBmb3IgaWxsZWdhbCBhcmd1bWVudHMKKyAgICAgICAgaWYgKGNob2ljZSA+PSBVQ2hhcmFjdGVyTmFtZUNob2ljZS5DSEFSX05BTUVfQ0hPSUNFX0NPVU5UIHx8IAorICAgICAgICAgICAgbmFtZSA9PSBudWxsIHx8IG5hbWUubGVuZ3RoKCkgPT0gMCkgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyB0cnkgZXh0ZW5kZWQgbmFtZXMgZmlyc3QgIAorICAgICAgICBpbnQgcmVzdWx0ID0gZ2V0RXh0ZW5kZWRDaGFyKG5hbWUudG9Mb3dlckNhc2UoKSwgY2hvaWNlKTsKKyAgICAgICAgaWYgKHJlc3VsdCA+PSAtMSkgeworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgU3RyaW5nIHVwcGVyQ2FzZU5hbWUgPSBuYW1lLnRvVXBwZXJDYXNlKCk7CisgICAgICAgIC8vIHRyeSBhbGdvcml0aG1pYyBuYW1lcyBmaXJzdCwgaWYgZmFpbHMgdGhlbiB0cnkgZ3JvdXAgbmFtZXMKKyAgICAgICAgLy8gaW50IHJlc3VsdCA9IGdldEFsZ29yaXRobUNoYXIoY2hvaWNlLCB1cHBlcmNhc2VuYW1lKTsKKyAgICAgICAgCisgICAgICAgIGlmIChjaG9pY2UgIT0gVUNoYXJhY3Rlck5hbWVDaG9pY2UuVU5JQ09ERV8xMF9DSEFSX05BTUUpIHsKKyAgICAgICAgICAgIGludCBjb3VudCA9IDA7CisgICAgICAgICAgICBpZiAobV9hbGdvcml0aG1fICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBjb3VudCA9IG1fYWxnb3JpdGhtXy5sZW5ndGg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKGNvdW50IC0tOyBjb3VudCA+PSAwOyBjb3VudCAtLSkgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1fYWxnb3JpdGhtX1tjb3VudF0uZ2V0Q2hhcih1cHBlckNhc2VOYW1lKTsgCisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgaWYgKGNob2ljZSA9PSBVQ2hhcmFjdGVyTmFtZUNob2ljZS5FWFRFTkRFRF9DSEFSX05BTUUpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IGdldEdyb3VwQ2hhcih1cHBlckNhc2VOYW1lLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyTmFtZUNob2ljZS5VTklDT0RFX0NIQVJfTkFNRSk7CisgICAgICAgICAgICBpZiAocmVzdWx0ID09IC0xKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZ2V0R3JvdXBDaGFyKHVwcGVyQ2FzZU5hbWUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXJOYW1lQ2hvaWNlLlVOSUNPREVfMTBfQ0hBUl9OQU1FKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IGdldEdyb3VwQ2hhcih1cHBlckNhc2VOYW1lLCBjaG9pY2UpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIC8vIHRoZXNlIGFyZSBhbGwgVUNoYXJhY3Rlck5hbWVJdGVyYXRvciB1c2UgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgKiBSZWFkcyBhIGJsb2NrIG9mIGNvbXByZXNzZWQgbGVuZ3RocyBvZiAzMiBzdHJpbmdzIGFuZCBleHBhbmRzIHRoZW0gaW50byAKKyAgICAqIG9mZnNldHMgYW5kIGxlbmd0aHMgZm9yIGVhY2ggc3RyaW5nLiBMZW5ndGhzIGFyZSBzdG9yZWQgd2l0aCBhIAorICAgICogdmFyaWFibGUtd2lkdGggZW5jb2RpbmcgaW4gY29uc2VjdXRpdmUgbmliYmxlczoKKyAgICAqIElmIGEgbmliYmxlPDB4YywgdGhlbiBpdCBpcyB0aGUgbGVuZ3RoIGl0c2VsZiAoMCA9IGVtcHR5IHN0cmluZykuCisgICAgKiBJZiBhIG5pYmJsZT49MHhjLCB0aGVuIGl0IGZvcm1zIGEgbGVuZ3RoIHZhbHVlIHdpdGggdGhlIGZvbGxvd2luZyAKKyAgICAqIG5pYmJsZS4KKyAgICAqIFRoZSBvZmZzZXRzIGFuZCBsZW5ndGhzIGFycmF5cyBtdXN0IGJlIGF0IGxlYXN0IDMzIChvbmUgbW9yZSkgbG9uZyAKKyAgICAqIGJlY2F1c2UgdGhlcmUgaXMgbm8gY2hlY2sgaGVyZSBhdCB0aGUgZW5kIGlmIHRoZSBsYXN0IG5pYmJsZSBpcyBzdGlsbCAKKyAgICAqIHVzZWQuCisgICAgKiBAcGFyYW0gaW5kZXggb2YgZ3JvdXAgc3RyaW5nIG9iamVjdCBpbiBhcnJheQorICAgICogQHBhcmFtIG9mZnNldHMgYXJyYXkgdG8gc3RvcmUgdGhlIHZhbHVlIG9mIHRoZSBzdHJpbmcgb2Zmc2V0cworICAgICogQHBhcmFtIGxlbmd0aHMgYXJyYXkgdG8gc3RvcmUgdGhlIHZhbHVlIG9mIHRoZSBzdHJpbmcgbGVuZ3RoCisgICAgKiBAcmV0dXJuIG5leHQgaW5kZXggb2YgdGhlIGRhdGEgc3RyaW5nIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBsZW5ndGhzIAorICAgICogICAgICAgICBpbiB0ZXJtcyBvZiBieXRlIGFkZHJlc3MKKyAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0R3JvdXBMZW5ndGhzKGludCBpbmRleCwgY2hhciBvZmZzZXRzW10sIGNoYXIgbGVuZ3Roc1tdKSAKKyAgICB7CisgICAgICAgIGNoYXIgbGVuZ3RoID0gMHhmZmZmOworICAgICAgICBieXRlIGIgPSAwLAorICAgICAgICAgICAgbiA9IDA7CisgICAgICAgIGludCBzaGlmdDsKKyAgICAgICAgaW5kZXggPSBpbmRleCAqIG1fZ3JvdXBzaXplXzsgLy8gYnl0ZSBjb3VudCBvZmZzZXRzIG9mIGdyb3VwIHN0cmluZ3MKKyAgICAgICAgaW50IHN0cmluZ29mZnNldCA9IFVDaGFyYWN0ZXJVdGlsaXR5LnRvSW50KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncm91cGluZm9fW2luZGV4ICsgT0ZGU0VUX0hJR0hfT0ZGU0VUX10sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncm91cGluZm9fW2luZGV4ICsgT0ZGU0VUX0xPV19PRkZTRVRfXSk7CisgICAgICAgICAgICAKKyAgICAgICAgb2Zmc2V0c1swXSA9IDA7CisgICAgICAgIAorICAgICAgICAvLyBhbGwgMzIgbGVuZ3RocyBtdXN0IGJlIHJlYWQgdG8gZ2V0IHRoZSBvZmZzZXQgb2YgdGhlIGZpcnN0IGdyb3VwIAorICAgICAgICAvLyBzdHJpbmcKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBMSU5FU19QRVJfR1JPVVBfOyBzdHJpbmdvZmZzZXQgKyspIHsKKyAgICAgICAgICAgIGIgPSBtX2dyb3Vwc3RyaW5nX1tzdHJpbmdvZmZzZXRdOworICAgICAgICAgICAgc2hpZnQgPSA0OworICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHdoaWxlIChzaGlmdCA+PSAwKSB7CisgICAgICAgICAgICAgICAgLy8gZ2V0dGluZyBuaWJibGUKKyAgICAgICAgICAgICAgICBuID0gKGJ5dGUpKChiID4+IHNoaWZ0KSAmIDB4MEYpOyAgIAorICAgICAgICAgICAgICAgIGlmIChsZW5ndGggPT0gMHhmZmZmICYmIG4gPiBTSU5HTEVfTklCQkxFX01BWF8pIHsKKyAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gKGNoYXIpKChuIC0gMTIpIDw8IDQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxlbmd0aCAhPSAweGZmZmYpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3Roc1tpXSA9IChjaGFyKSgobGVuZ3RoIHwgbikgKyAxMik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aHNbaV0gPSAoY2hhciluOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAoaSA8IExJTkVTX1BFUl9HUk9VUF8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0c1tpICsgMV0gPSAoY2hhcikob2Zmc2V0c1tpXSArIGxlbmd0aHNbaV0pOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSAweGZmZmY7CisgICAgICAgICAgICAgICAgICAgIGkgKys7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHNoaWZ0IC09IDQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHN0cmluZ29mZnNldDsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgKiBHZXRzIHRoZSBuYW1lIG9mIHRoZSBhcmd1bWVudCBncm91cCBpbmRleC4KKyAgICAqIFVuaWNvZGVEYXRhLnR4dCB1c2VzICc7JyBhcyBhIGZpZWxkIHNlcGFyYXRvciwgc28gbm8gZmllbGQgY2FuIGNvbnRhaW4gCisgICAgKiAnOycgYXMgcGFydCBvZiBpdHMgY29udGVudHMuIEluIHVuYW1lcy5pY3UsIGl0IGlzIG1hcmtlZCBhcyAKKyAgICAqIHRva2VuWyc7J10gPT0gLTEgb25seSBpZiB0aGUgc2VtaWNvbG9uIGlzIHVzZWQgaW4gdGhlIGRhdGEgZmlsZSAtIHdoaWNoIAorICAgICogaXMgaWZmIHdlIGhhdmUgVW5pY29kZSAxLjAgbmFtZXMgb3IgSVNPIGNvbW1lbnRzLiAKKyAgICAqIFNvLCBpdCB3aWxsIGJlIHRva2VuWyc7J10gPT0gLTEgaWYgd2Ugc3RvcmUgVTEuMCBuYW1lcy9JU08gY29tbWVudHMgCisgICAgKiBhbHRob3VnaCB3ZSBrbm93IHRoYXQgaXQgd2lsbCBuZXZlciBiZSBwYXJ0IG9mIGEgbmFtZS4gCisgICAgKiBFcXVpdmFsZW50IHRvIElDVTRDJ3MgZXhwYW5kTmFtZS4KKyAgICAqIEBwYXJhbSBpbmRleCBvZiB0aGUgZ3JvdXAgbmFtZSBzdHJpbmcgaW4gYnl0ZSBjb3VudAorICAgICogQHBhcmFtIGxlbmd0aCBvZiB0aGUgZ3JvdXAgbmFtZSBzdHJpbmcKKyAgICAqIEBwYXJhbSBjaG9pY2Ugb2YgVW5pY29kZSAxLjAgbmFtZSBvciB0aGUgbW9zdCBjdXJyZW50IG5hbWUKKyAgICAqIEByZXR1cm4gbmFtZSBvZiB0aGUgZ3JvdXAgCisgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIGdldEdyb3VwTmFtZShpbnQgaW5kZXgsIGludCBsZW5ndGgsIGludCBjaG9pY2UpIAorICAgIHsKKyAgICAgICAgaWYgKGNob2ljZSA9PSBVQ2hhcmFjdGVyTmFtZUNob2ljZS5VTklDT0RFXzEwX0NIQVJfTkFNRQorICAgICAgICAgICAgfHwgY2hvaWNlID09IFVDaGFyYWN0ZXJOYW1lQ2hvaWNlLklTT19DT01NRU5UXykgeworICAgICAgICAgICAgaWYgKCc7JyA+PSBtX3Rva2VudGFibGVfLmxlbmd0aCB8fCBtX3Rva2VudGFibGVfWyc7J10gPT0gMHhGRkZGKSB7CisgICAgICAgICAgICAgICAgLy8gc2tpcCB0aGUgbW9kZXJuIG5hbWUKKyAgICAgICAgICAgICAgICBpbnQgb2xkaW5kZXggPSBpbmRleDsKKyAgICAgICAgICAgICAgICBpbmRleCArPSBVQ2hhcmFjdGVyVXRpbGl0eS5za2lwQnl0ZVN1YlN0cmluZyhtX2dyb3Vwc3RyaW5nXywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCwgbGVuZ3RoLCAoYnl0ZSknOycpOyAgIAorICAgICAgICAgICAgICAgIGxlbmd0aCAtPSAoaW5kZXggLSBvbGRpbmRleCk7ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoY2hvaWNlID09IFVDaGFyYWN0ZXJOYW1lQ2hvaWNlLklTT19DT01NRU5UXykgeworICAgICAgICAgICAgICAgICAgICAvLyBza2lwcyB0aGUgMS4wIE5hbWUgdG8gdGhlIGlzbyBjb21tZW50IHBhcnQKKyAgICAgICAgICAgICAgICAgICAgb2xkaW5kZXggPSBpbmRleDsKKyAgICAgICAgICAgICAgICAgICAgaW5kZXggKz0gVUNoYXJhY3RlclV0aWxpdHkuc2tpcEJ5dGVTdWJTdHJpbmcobV9ncm91cHN0cmluZ18sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4LCBsZW5ndGgsIChieXRlKSc7Jyk7ICAgCisgICAgICAgICAgICAgICAgICAgIGxlbmd0aCAtPSAoaW5kZXggLSBvbGRpbmRleCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gdGhlIHNlbWljb2xvbiBieXRlIGlzIGEgdG9rZW4gbnVtYmVyLCB0aGVyZWZvcmUgb25seSBtb2Rlcm4KKyAgICAgICAgICAgICAgICAvLyBuYW1lcyBhcmUgc3RvcmVkIGluIHVuYW1lcy5kYXQgYW5kIHRoZXJlIGlzIG5vIHN1Y2ggCisgICAgICAgICAgICAgICAgLy8gcmVxdWVzdGVkIFVuaWNvZGUgMS4wIG5hbWUgaGVyZQorICAgICAgICAgICAgICAgIGxlbmd0aCA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHN5bmNocm9uaXplZCAobV91dGlsU3RyaW5nQnVmZmVyXykgeworICAgICAgICAgICAgbV91dGlsU3RyaW5nQnVmZmVyXy5kZWxldGUoMCwgbV91dGlsU3RyaW5nQnVmZmVyXy5sZW5ndGgoKSk7CisgICAgICAgICAgICBieXRlIGI7CisgICAgICAgICAgICBjaGFyIHRva2VuOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7KSB7CisgICAgICAgICAgICAgICAgYiA9IG1fZ3JvdXBzdHJpbmdfW2luZGV4ICsgaV07CisgICAgICAgICAgICAgICAgaSArKzsKKyAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChiID49IG1fdG9rZW50YWJsZV8ubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChiID09ICc7JykgeworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbV91dGlsU3RyaW5nQnVmZmVyXy5hcHBlbmQoYik7IC8vIGltcGxpY2l0IGxldHRlcgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBtX3Rva2VudGFibGVfW2IgJiAweDAwZmZdOworICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW4gPT0gMHhGRkZFKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGlzIGEgbGVhZCBieXRlIGZvciBhIGRvdWJsZS1ieXRlIHRva2VuCisgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IG1fdG9rZW50YWJsZV9bYiA8PCA4IHwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobV9ncm91cHN0cmluZ19baW5kZXggKyBpXSAmIDB4MDBmZildOworICAgICAgICAgICAgICAgICAgICAgICAgaSArKzsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW4gPT0gMHhGRkZGKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYiA9PSAnOycpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBza2lwIHRoZSBzZW1pY29sb24gaWYgd2UgYXJlIHNlZWtpbmcgZXh0ZW5kZWQgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbmFtZXMgYW5kIHRoZXJlIHdhcyBubyAyLjAgbmFtZSBidXQgdGhlcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBhIDEuMCBuYW1lLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX3V0aWxTdHJpbmdCdWZmZXJfLmxlbmd0aCgpID09IDAgJiYgY2hvaWNlID09IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyTmFtZUNob2ljZS5FWFRFTkRFRF9DSEFSX05BTUUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXhwbGljaXQgbGV0dGVyCisgICAgICAgICAgICAgICAgICAgICAgICBtX3V0aWxTdHJpbmdCdWZmZXJfLmFwcGVuZCgoY2hhcikoYiAmIDB4MDBmZikpOyAKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgLy8gd3JpdGUgdG9rZW4gd29yZAorICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3RlclV0aWxpdHkuZ2V0TnVsbFRlcm1CeXRlU3ViU3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3V0aWxTdHJpbmdCdWZmZXJfLCBtX3Rva2Vuc3RyaW5nXywgdG9rZW4pOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgaWYgKG1fdXRpbFN0cmluZ0J1ZmZlcl8ubGVuZ3RoKCkgPiAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fdXRpbFN0cmluZ0J1ZmZlcl8udG9TdHJpbmcoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgKiBSZXRyaWV2ZXMgdGhlIGV4dGVuZGVkIG5hbWUKKyAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgZ2V0RXh0ZW5kZWROYW1lKGludCBjaCkgCisgICAgeyAgICAKKyAgICAgICAgU3RyaW5nIHJlc3VsdCA9IGdldE5hbWUoY2gsIFVDaGFyYWN0ZXJOYW1lQ2hvaWNlLlVOSUNPREVfQ0hBUl9OQU1FKTsgICAgCisgICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkgeyAgICAgICAgCisgICAgICAgICAgICBpZiAoZ2V0VHlwZShjaCkgPT0gVUNoYXJhY3RlckNhdGVnb3J5LkNPTlRST0wpIHsgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBnZXROYW1lKGNoLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXJOYW1lQ2hvaWNlLlVOSUNPREVfMTBfQ0hBUl9OQU1FKTsgICAgICAgIAorICAgICAgICAgICAgfSAgICAgICAgCisgICAgICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpIHsgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBnZXRFeHRlbmRlZE9yMTBOYW1lKGNoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSAgICAKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgZ3JvdXAgaW5kZXggZm9yIHRoZSBjb2RlcG9pbnQsIG9yIHRoZSBncm91cCBiZWZvcmUgaXQuCisgICAgICogQHBhcmFtIGNvZGVwb2ludAorICAgICAqIEByZXR1cm4gZ3JvdXAgaW5kZXggY29udGFpbmluZyBjb2RlcG9pbnQgb3IgdGhlIGdyb3VwIGJlZm9yZSBpdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldEdyb3VwKGludCBjb2RlcG9pbnQpCisgICAgeworICAgICAgICBpbnQgZW5kR3JvdXAgPSBtX2dyb3VwY291bnRfOworICAgICAgICBpbnQgbXNiICAgICAgPSBnZXRDb2RlcG9pbnRNU0IoY29kZXBvaW50KTsKKyAgICAgICAgaW50IHJlc3VsdCAgID0gMDsgICAgCisgICAgICAgIC8vIGJpbmFyeSBzZWFyY2ggZm9yIHRoZSBncm91cCBvZiBuYW1lcyB0aGF0IGNvbnRhaW5zIHRoZSBvbmUgZm9yIAorICAgICAgICAvLyBjb2RlCisgICAgICAgIC8vIGZpbmQgdGhlIGdyb3VwIHRoYXQgY29udGFpbnMgY29kZXBvaW50LCBvciB0aGUgaGlnaGVzdCBiZWZvcmUgaXQKKyAgICAgICAgd2hpbGUgKHJlc3VsdCA8IGVuZEdyb3VwIC0gMSkgeworICAgICAgICAgICAgaW50IGdpbmRleCA9IChyZXN1bHQgKyBlbmRHcm91cCkgPj4gMTsKKyAgICAgICAgICAgIGlmIChtc2IgPCBnZXRHcm91cE1TQihnaW5kZXgpKSB7CisgICAgICAgICAgICAgICAgZW5kR3JvdXAgPSBnaW5kZXg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBnaW5kZXg7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgZXh0ZW5kZWQgYW5kIDEuMCBuYW1lIHdoZW4gdGhlIG1vc3QgY3VycmVudCB1bmljb2RlIG5hbWVzCisgICAgICogZmFpbAorICAgICAqIEBwYXJhbSBjaCBjb2RlcG9pbnQKKyAgICAgKiBAcmV0dXJuIG5hbWUgb2YgY29kZXBvaW50IGV4dGVuZGVkIG9yIDEuMAorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgZ2V0RXh0ZW5kZWRPcjEwTmFtZShpbnQgY2gpCisgICAgeworICAgICAgICBTdHJpbmcgcmVzdWx0ID0gbnVsbDsKKyAgICAgICAgaWYgKGdldFR5cGUoY2gpID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5DT05UUk9MKSB7ICAgICAgICAgICAgCisgICAgICAgICAgICByZXN1bHQgPSBnZXROYW1lKGNoLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3Rlck5hbWVDaG9pY2UuVU5JQ09ERV8xMF9DSEFSX05BTUUpOyAgICAgICAgCisgICAgICAgIH0gICAgICAgIAorICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpIHsgICAgICAgICAgICAKKyAgICAgICAgICAgIGludCB0eXBlID0gZ2V0VHlwZShjaCk7ICAgIAorICAgICAgICAgICAgLy8gUmV0dXJuIHVua25vd24gaWYgdGhlIHRhYmxlIG9mIG5hbWVzIGFib3ZlIGlzIG5vdCB1cCB0byAKKyAgICAgICAgICAgIC8vIGRhdGUuCisgICAgICAgICAgICBpZiAodHlwZSA+PSBUWVBFX05BTUVTXy5sZW5ndGgpIHsgICAgICAgCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gVU5LTk9XTl9UWVBFX05BTUVfOyAgICAKKyAgICAgICAgICAgIH0gCisgICAgICAgICAgICBlbHNlIHsgICAgICAgIAorICAgICAgICAgICAgICAgIHJlc3VsdCA9IFRZUEVfTkFNRVNfW3R5cGVdOyAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN5bmNocm9uaXplZCAobV91dGlsU3RyaW5nQnVmZmVyXykgeworICAgICAgICAgICAgICAgIG1fdXRpbFN0cmluZ0J1ZmZlcl8uZGVsZXRlKDAsIG1fdXRpbFN0cmluZ0J1ZmZlcl8ubGVuZ3RoKCkpOworICAgICAgICAgICAgICAgIG1fdXRpbFN0cmluZ0J1ZmZlcl8uYXBwZW5kKCc8Jyk7CisgICAgICAgICAgICAgICAgbV91dGlsU3RyaW5nQnVmZmVyXy5hcHBlbmQocmVzdWx0KTsKKyAgICAgICAgICAgICAgICBtX3V0aWxTdHJpbmdCdWZmZXJfLmFwcGVuZCgnLScpOworICAgICAgICAgICAgICAgIFN0cmluZyBjaFN0ciA9IEludGVnZXIudG9IZXhTdHJpbmcoY2gpLnRvVXBwZXJDYXNlKCk7CisgICAgICAgICAgICAgICAgaW50IHplcm9zID0gNCAtIGNoU3RyLmxlbmd0aCgpOworICAgICAgICAgICAgICAgIHdoaWxlICh6ZXJvcyA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgbV91dGlsU3RyaW5nQnVmZmVyXy5hcHBlbmQoJzAnKTsKKyAgICAgICAgICAgICAgICAgICAgemVyb3MgLS07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1fdXRpbFN0cmluZ0J1ZmZlcl8uYXBwZW5kKGNoU3RyKTsKKyAgICAgICAgICAgICAgICBtX3V0aWxTdHJpbmdCdWZmZXJfLmFwcGVuZCgnPicpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1fdXRpbFN0cmluZ0J1ZmZlcl8udG9TdHJpbmcoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBNU0IgZnJvbSB0aGUgZ3JvdXAgaW5kZXgKKyAgICAgKiBAcGFyYW0gZ2luZGV4IGdyb3VwIGluZGV4CisgICAgICogQHJldHVybiB0aGUgTVNCIG9mIHRoZSBncm91cCBpZiBnaW5kZXggaXMgdmFsaWQsIC0xIG90aGVyd2lzZQorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0R3JvdXBNU0IoaW50IGdpbmRleCkKKyAgICB7CisgICAgICAgIGlmIChnaW5kZXggPj0gbV9ncm91cGNvdW50XykgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIHJldHVybiBtX2dyb3VwaW5mb19bZ2luZGV4ICogbV9ncm91cHNpemVfXTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgTVNCIG9mIHRoZSBjb2RlcG9pbnQKKyAgICAgKiBAcGFyYW0gY29kZXBvaW50IAorICAgICAqIEByZXR1cm4gdGhlIE1TQiBvZiB0aGUgY29kZXBvaW50CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnQgZ2V0Q29kZXBvaW50TVNCKGludCBjb2RlcG9pbnQpCisgICAgeworICAgICAgICByZXR1cm4gY29kZXBvaW50ID4+IEdST1VQX1NISUZUXzsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgbWF4aW11bSBjb2RlcG9pbnQgKyAxIG9mIHRoZSBncm91cAorICAgICAqIEBwYXJhbSBtc2IgbW9zdCBzaWduaWZpY2FudCBieXRlIG9mIHRoZSBncm91cAorICAgICAqIEByZXR1cm4gbGltaXQgY29kZXBvaW50IG9mIHRoZSBncm91cAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgaW50IGdldEdyb3VwTGltaXQoaW50IG1zYikKKyAgICB7CisgICAgICAgIHJldHVybiAobXNiIDw8IEdST1VQX1NISUZUXykgKyBMSU5FU19QRVJfR1JPVVBfOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBtaW5pbXVtIGNvZGVwb2ludCBvZiB0aGUgZ3JvdXAKKyAgICAgKiBAcGFyYW0gbXNiIG1vc3Qgc2lnbmlmaWNhbnQgYnl0ZSBvZiB0aGUgZ3JvdXAKKyAgICAgKiBAcmV0dXJuIG1pbmltdW0gY29kZXBvaW50IG9mIHRoZSBncm91cAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgaW50IGdldEdyb3VwTWluKGludCBtc2IpCisgICAgeworICAgICAgICByZXR1cm4gbXNiIDw8IEdST1VQX1NISUZUXzsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgb2Zmc2V0IHRvIGEgZ3JvdXAKKyAgICAgKiBAcGFyYW0gY29kZXBvaW50IAorICAgICAqIEByZXR1cm4gb2Zmc2V0IHRvIGEgZ3JvdXAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludCBnZXRHcm91cE9mZnNldChpbnQgY29kZXBvaW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvZGVwb2ludCAmIEdST1VQX01BU0tfOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIG1pbmltdW0gY29kZXBvaW50IG9mIGEgZ3JvdXAKKyAgICAgKiBAcGFyYW0gY29kZXBvaW50CisgICAgICogQHJldHVybiBtaW5pbXVtIGNvZGVwb2ludCBpbiB0aGUgZ3JvdXAgd2hpY2ggY29kZXBvaW50IGJlbG9uZ3MgdG8KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludCBnZXRHcm91cE1pbkZyb21Db2RlcG9pbnQoaW50IGNvZGVwb2ludCkKKyAgICB7CisgICAgICAgIHJldHVybiBjb2RlcG9pbnQgJiB+R1JPVVBfTUFTS187CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEdldCB0aGUgQWxnb3JpdGhtIHJhbmdlIGxlbmd0aCAKKyAgICAgKiBAcmV0dXJuIEFsZ29yaXRobSByYW5nZSBsZW5ndGgKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldEFsZ29yaXRobUxlbmd0aCgpCisgICAgeworICAgICAgICByZXR1cm4gbV9hbGdvcml0aG1fLmxlbmd0aDsKKyAgICB9CisgICAgICAgIAorICAgIC8qKgorICAgICAqIEdldHMgdGhlIHN0YXJ0IG9mIHRoZSByYW5nZQorICAgICAqIEBwYXJhbSBpbmRleCBhbGdvcml0aG0gaW5kZXgKKyAgICAgKiBAcmV0dXJuIGFsZ29yaXRobSByYW5nZSBzdGFydAorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0QWxnb3JpdGhtU3RhcnQoaW50IGluZGV4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYWxnb3JpdGhtX1tpbmRleF0ubV9yYW5nZXN0YXJ0XzsKKyAgICB9CisgICAgICAgIAorICAgIC8qKgorICAgICAqIEdldHMgdGhlIGVuZCBvZiB0aGUgcmFuZ2UKKyAgICAgKiBAcGFyYW0gaW5kZXggYWxnb3JpdGhtIGluZGV4CisgICAgICogQHJldHVybiBhbGdvcml0aG0gcmFuZ2UgZW5kCisgICAgICovCisgICAgcHVibGljIGludCBnZXRBbGdvcml0aG1FbmQoaW50IGluZGV4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYWxnb3JpdGhtX1tpbmRleF0ubV9yYW5nZWVuZF87CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEdldHMgdGhlIEFsZ29yaXRobWljIG5hbWUgb2YgdGhlIGNvZGVwb2ludAorICAgICAqIEBwYXJhbSBpbmRleCBhbGdvcml0aG1pYyByYW5nZSBpbmRleAorICAgICAqIEBwYXJhbSBjb2RlcG9pbnQgCisgICAgICogQHJldHVybiBhbGdvcml0aG1pYyBuYW1lIG9mIGNvZGVwb2ludAorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgZ2V0QWxnb3JpdGhtTmFtZShpbnQgaW5kZXgsIGludCBjb2RlcG9pbnQpIAorICAgIHsKKyAgICAgICAgU3RyaW5nIHJlc3VsdCA9IG51bGw7CisgICAgICAgIHN5bmNocm9uaXplZCAobV91dGlsU3RyaW5nQnVmZmVyXykgeworICAgICAgICAgICAgbV91dGlsU3RyaW5nQnVmZmVyXy5kZWxldGUoMCwgbV91dGlsU3RyaW5nQnVmZmVyXy5sZW5ndGgoKSk7CisgICAgICAgICAgICBtX2FsZ29yaXRobV9baW5kZXhdLmFwcGVuZE5hbWUoY29kZXBvaW50LCBtX3V0aWxTdHJpbmdCdWZmZXJfKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1fdXRpbFN0cmluZ0J1ZmZlcl8udG9TdHJpbmcoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAqIEdldHMgdGhlIGdyb3VwIG5hbWUgb2YgdGhlIGNoYXJhY3RlcgorICAgICogQHBhcmFtIGNoIGNoYXJhY3RlciB0byBnZXQgdGhlIGdyb3VwIG5hbWUgCisgICAgKiBAcGFyYW0gY2hvaWNlIG5hbWUgY2hvaWNlIHNlbGVjdG9yIHRvIGNob29zZSBhIHVuaWNvZGUgMS4wIG9yIG5ld2VyIG5hbWUKKyAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgZ2V0R3JvdXBOYW1lKGludCBjaCwgaW50IGNob2ljZSkgCisgICAgeyAgICAgICAgICAgIAorICAgICAgICAvLyBnZXRzIHRoZSBtc2IKKyAgICAgICAgaW50IG1zYiAgID0gZ2V0Q29kZXBvaW50TVNCKGNoKTsKKyAgICAgICAgaW50IGdyb3VwID0gZ2V0R3JvdXAoY2gpOworCisgICAgICAgIC8vIHJldHVybiB0aGlzIGlmIGl0IGlzIGFuIGV4YWN0IG1hdGNoCisgICAgICAgIGlmIChtc2IgPT0gbV9ncm91cGluZm9fW2dyb3VwICogbV9ncm91cHNpemVfXSkgeworICAgICAgICAgICAgaW50IGluZGV4ID0gZ2V0R3JvdXBMZW5ndGhzKGdyb3VwLCBtX2dyb3Vwb2Zmc2V0c18sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JvdXBsZW5ndGhzXyk7CisgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gY2ggJiBHUk9VUF9NQVNLXzsKKyAgICAgICAgICAgIHJldHVybiBnZXRHcm91cE5hbWUoaW5kZXggKyBtX2dyb3Vwb2Zmc2V0c19bb2Zmc2V0XSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JvdXBsZW5ndGhzX1tvZmZzZXRdLCBjaG9pY2UpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgICAgCisgICAgLy8gdGhlc2UgYXJlIHRyYW5zbGl0ZXJhdG9yIHVzZSBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIC8qKgorICAgICAqIEdldHMgdGhlIG1heGltdW0gbGVuZ3RoIG9mIGFueSBjb2RlcG9pbnQgbmFtZS4KKyAgICAgKiBFcXVpdmFsZW50IHRvIHVwcnZfZ2V0TWF4Q2hhck5hbWVMZW5ndGguCisgICAgICogQHJldHVybiB0aGUgbWF4aW11bSBsZW5ndGggb2YgYW55IGNvZGVwb2ludCBuYW1lCisgICAgICovCisgICAgcHVibGljIGludCBnZXRNYXhDaGFyTmFtZUxlbmd0aCgpIAorICAgIHsKKyAgICAgICAgaWYgKGluaXROYW1lU2V0c0xlbmd0aHMoKSkgeworICAgICAgICAgICAgcmV0dXJuIG1fbWF4TmFtZUxlbmd0aF87CisgICAgICAgIH0gCisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgbWF4aW11bSBsZW5ndGggb2YgYW55IGlzbyBjb21tZW50cy4KKyAgICAgKiBFcXVpdmFsZW50IHRvIHVwcnZfZ2V0TWF4SVNPQ29tbWVudExlbmd0aC4KKyAgICAgKiBAcmV0dXJuIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhbnkgY29kZXBvaW50IG5hbWUKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldE1heElTT0NvbW1lbnRMZW5ndGgoKSAKKyAgICB7CisgICAgICAgIGlmIChpbml0TmFtZVNldHNMZW5ndGhzKCkpIHsKKyAgICAgICAgICAgIHJldHVybiBtX21heElTT0NvbW1lbnRMZW5ndGhfOworICAgICAgICB9IAorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEZpbGxzIHNldCB3aXRoIGNoYXJhY3RlcnMgdGhhdCBhcmUgdXNlZCBpbiBVbmljb2RlIGNoYXJhY3RlciBuYW1lcy4KKyAgICAgKiBFcXVpdmFsZW50IHRvIHVwcnZfZ2V0Q2hhck5hbWVDaGFyYWN0ZXJzLgorICAgICAqIEBwYXJhbSBzZXQgVVNldCB0byByZWNlaXZlIGNoYXJhY3RlcnMuIEV4aXN0aW5nIGNvbnRlbnRzIGFyZSBkZWxldGVkLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGdldENoYXJOYW1lQ2hhcmFjdGVycyhVbmljb2RlU2V0IHNldCkgCisgICAgeworICAgICAgICBjb252ZXJ0KG1fbmFtZVNldF8sIHNldCk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEZpbGxzIHNldCB3aXRoIGNoYXJhY3RlcnMgdGhhdCBhcmUgdXNlZCBpbiBVbmljb2RlIGNoYXJhY3RlciBuYW1lcy4KKyAgICAgKiBFcXVpdmFsZW50IHRvIHVwcnZfZ2V0SVNPQ29tbWVudENoYXJhY3RlcnMuCisgICAgICogQHBhcmFtIHNldCBVU2V0IHRvIHJlY2VpdmUgY2hhcmFjdGVycy4gRXhpc3RpbmcgY29udGVudHMgYXJlIGRlbGV0ZWQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgZ2V0SVNPQ29tbWVudENoYXJhY3RlcnMoVW5pY29kZVNldCBzZXQpIAorICAgIHsKKyAgICAgICAgY29udmVydChtX0lTT0NvbW1lbnRTZXRfLCBzZXQpOworICAgIH0KKyAgICAKKyAgICAvLyBwYWNrYWdlIHByaXZhdGUgaW5uZXIgY2xhc3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvKioKKyAgICAqIEFsZ29yaXRobWljIG5hbWUgY2xhc3MKKyAgICAqLworICAgIHN0YXRpYyBmaW5hbCBjbGFzcyBBbGdvcml0aG1OYW1lCisgICAgeworICAgICAgICAvLyBwYWNrYWdlIHByaXZhdGUgZGF0YSBtZW1iZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgCisgICAgICAgIC8qKgorICAgICAgICAqIENvbnN0YW50IHR5cGUgdmFsdWUgb2YgdGhlIGRpZmZlcmVudCBBbGdvcml0aG1OYW1lCisgICAgICAgICovCisgICAgICAgIHN0YXRpYyBmaW5hbCBpbnQgVFlQRV8wXyA9IDA7CisgICAgICAgIHN0YXRpYyBmaW5hbCBpbnQgVFlQRV8xXyA9IDE7CisgICAgICAgIAorICAgICAgICAvLyBwYWNrYWdlIHByaXZhdGUgY29uc3RydWN0b3JzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgCisgICAgICAgIC8qKgorICAgICAgICAqIENvbnN0cnVjdG9yCisgICAgICAgICovCisgICAgICAgIEFsZ29yaXRobU5hbWUoKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIHBhY2thZ2UgcHJpdmF0ZSBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAKKyAgICAgICAgLyoqCisgICAgICAgICogU2V0cyB0aGUgaW5mb3JtYXRpb24gZm9yIGFjY2Vzc2luZyB0aGUgYWxnb3JpdGhtaWMgbmFtZXMKKyAgICAgICAgKiBAcGFyYW0gcmFuZ2VzdGFydCBzdGFydGluZyBjb2RlIHBvaW50IHRoYXQgbGllcyB3aXRoaW4gdGhpcyBuYW1lIGdyb3VwCisgICAgICAgICogQHBhcmFtIHJhbmdlZW5kIGVuZCBjb2RlIHBvaW50IHRoYXQgbGllcyB3aXRoaW4gdGhpcyBuYW1lIGdyb3VwCisgICAgICAgICogQHBhcmFtIHR5cGUgYWxnb3JpdGhtIHR5cGUuIFRoZXJlJ3MgMiBraW5kcyBvZiBhbGdvcml0aG1pYyB0eXBlLiBGaXJzdCAKKyAgICAgICAgKiAgICAgICAgd2hpY2ggdXNlcyBjb2RlIHBvaW50IGFzIHBhcnQgb2YgaXRzIG5hbWUgYW5kIHRoZSBvdGhlciB1c2VzIAorICAgICAgICAqICAgICAgICB2YXJpYW50IHBvc3RmaXggc3RyaW5ncworICAgICAgICAqIEBwYXJhbSB2YXJpYW50IGFsZ29yaXRobWljIHZhcmlhbnQKKyAgICAgICAgKiBAcmV0dXJuIHRydWUgaWYgdmFsdWVzIGFyZSB2YWxpZAorICAgICAgICAqLyAKKyAgICAgICAgYm9vbGVhbiBzZXRJbmZvKGludCByYW5nZXN0YXJ0LCBpbnQgcmFuZ2VlbmQsIGJ5dGUgdHlwZSwgYnl0ZSB2YXJpYW50KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAocmFuZ2VzdGFydCA+PSBVQ2hhcmFjdGVyLk1JTl9WQUxVRSAmJiByYW5nZXN0YXJ0IDw9IHJhbmdlZW5kIAorICAgICAgICAgICAgICAgICYmIHJhbmdlZW5kIDw9IFVDaGFyYWN0ZXIuTUFYX1ZBTFVFICYmIAorICAgICAgICAgICAgICAgICh0eXBlID09IFRZUEVfMF8gfHwgdHlwZSA9PSBUWVBFXzFfKSkgeworICAgICAgICAgICAgICAgIG1fcmFuZ2VzdGFydF8gPSByYW5nZXN0YXJ0OworICAgICAgICAgICAgICAgIG1fcmFuZ2VlbmRfID0gcmFuZ2VlbmQ7CisgICAgICAgICAgICAgICAgbV90eXBlXyA9IHR5cGU7CisgICAgICAgICAgICAgICAgbV92YXJpYW50XyA9IHZhcmlhbnQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8qKgorICAgICAgICAqIFNldHMgdGhlIGZhY3RvciBkYXRhCisgICAgICAgICogQHBhcmFtIGFycmF5IG9mIGZhY3RvcgorICAgICAgICAqIEByZXR1cm4gdHJ1ZSBpZiBmYWN0b3JzIGFyZSB2YWxpZAorICAgICAgICAqLworICAgICAgICBib29sZWFuIHNldEZhY3RvcihjaGFyIGZhY3RvcltdKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZmFjdG9yLmxlbmd0aCA9PSBtX3ZhcmlhbnRfKSB7CisgICAgICAgICAgICAgICAgbV9mYWN0b3JfID0gZmFjdG9yOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvKioKKyAgICAgICAgKiBTZXRzIHRoZSBuYW1lIHByZWZpeAorICAgICAgICAqIEBwYXJhbSBwcmVmaXgKKyAgICAgICAgKiBAcmV0dXJuIHRydWUgaWYgcHJlZml4IGlzIHNldAorICAgICAgICAqLworICAgICAgICBib29sZWFuIHNldFByZWZpeChTdHJpbmcgcHJlZml4KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAocHJlZml4ICE9IG51bGwgJiYgcHJlZml4Lmxlbmd0aCgpID4gMCkgeworICAgICAgICAgICAgICAgIG1fcHJlZml4XyA9IHByZWZpeDsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLyoqCisgICAgICAgICogU2V0cyB0aGUgdmFyaWFudCBmYWN0b3JpemVkIG5hbWUgZGF0YSAKKyAgICAgICAgKiBAcGFyYW0gc3RyaW5nIHZhcmlhbnQgZmFjdG9yaXplZCBuYW1lIGRhdGEKKyAgICAgICAgKiBAcmV0dXJuIHRydWUgaWYgdmFsdWVzIGFyZSBzZXQKKyAgICAgICAgKi8KKyAgICAgICAgYm9vbGVhbiBzZXRGYWN0b3JTdHJpbmcoYnl0ZSBzdHJpbmdbXSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gZmFjdG9yIGFuZCB2YXJpYW50IHN0cmluZyBjYW4gYmUgZW1wdHkgZm9yIHRoaW5ncyBsaWtlIAorICAgICAgICAgICAgLy8gaGFuZ2d1bCBjb2RlIHBvaW50cworICAgICAgICAgICAgbV9mYWN0b3JzdHJpbmdfID0gc3RyaW5nOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgIAorICAgICAgICAvKioKKyAgICAgICAgKiBDaGVja3MgaWYgY29kZSBwb2ludCBsaWVzIGluIEFsZ29yaXRobSBvYmplY3QgYXQgaW5kZXgKKyAgICAgICAgKiBAcGFyYW0gY2ggY29kZSBwb2ludCAKKyAgICAgICAgKi8KKyAgICAgICAgYm9vbGVhbiBjb250YWlucyhpbnQgY2gpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX3Jhbmdlc3RhcnRfIDw9IGNoICYmIGNoIDw9IG1fcmFuZ2VlbmRfOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvKioKKyAgICAgICAgKiBBcHBlbmRzIGFsZ29yaXRobSBuYW1lIG9mIGNvZGUgcG9pbnQgaW50byBTdHJpbmdCdWZmZXIuCisgICAgICAgICogTm90ZSB0aGlzIG1ldGhvZCBkb2VzIG5vdCBjaGVjayBmb3IgdmFsaWRpdHkgb2YgY29kZSBwb2ludCBpbiBBbGdvcml0aG0sCisgICAgICAgICogcmVzdWx0IGlzIHVuZGVmaW5lZCBpZiBjb2RlIHBvaW50IGRvZXMgbm90IGJlbG9uZyBpbiBBbGdvcml0aG0uCisgICAgICAgICogQHBhcmFtIGNoIGNvZGUgcG9pbnQKKyAgICAgICAgKiBAcGFyYW0gc3RyIFN0cmluZ0J1ZmZlciB0byBhcHBlbmQgdG8KKyAgICAgICAgKi8KKyAgICAgICAgdm9pZCBhcHBlbmROYW1lKGludCBjaCwgU3RyaW5nQnVmZmVyIHN0cikKKyAgICAgICAgeworICAgICAgICAgICAgc3RyLmFwcGVuZChtX3ByZWZpeF8pOworICAgICAgICAgICAgc3dpdGNoIChtX3R5cGVfKSAKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIFRZUEVfMF86IAorICAgICAgICAgICAgICAgICAgICAvLyBwcmVmaXggZm9sbG93ZWQgYnkgaGV4IGRpZ2l0cyBpbmRpY2F0aW5nIHZhcmlhbnRzCisgICAgICAgICAgICAgICAgICAgIFV0aWxpdHkuaGV4KGNoLCBtX3ZhcmlhbnRfLCBzdHIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFRZUEVfMV86IAorICAgICAgICAgICAgICAgICAgICAvLyBwcmVmaXggZm9sbG93ZWQgYnkgZmFjdG9yaXplZC1lbGVtZW50cworICAgICAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gY2ggLSBtX3Jhbmdlc3RhcnRfOworICAgICAgICAgICAgICAgICAgICBpbnQgaW5kZXhlc1tdID0gbV91dGlsSW50QnVmZmVyXzsKKyAgICAgICAgICAgICAgICAgICAgaW50IGZhY3RvcjsKKyAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLy8gd3JpdGUgZWxlbWVudHMgYWNjb3JkaW5nIHRvIHRoZSBmYWN0b3JzCisgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBmYWN0b3JpemVkIGVsZW1lbnRzIGFyZSBkZXRlcm1pbmVkIGJ5IG1vZHVsbyAKKyAgICAgICAgICAgICAgICAgICAgLy8gYXJpdGhtZXRpYworICAgICAgICAgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKG1fdXRpbEludEJ1ZmZlcl8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSBtX3ZhcmlhbnRfIC0gMTsgaSA+IDA7IGkgLS0pIAorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY3RvciA9IG1fZmFjdG9yX1tpXSAmIDB4MDBGRjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleGVzW2ldID0gb2Zmc2V0ICUgZmFjdG9yOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCAvPSBmYWN0b3I7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgZG9uJ3QgbmVlZCB0byBjYWxjdWxhdGUgdGhlIGxhc3QgbW9kdWx1cyBiZWNhdXNlIAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhcnQgPD0gY29kZSA8PSBlbmQgZ3VhcmFudGVlcyBoZXJlIHRoYXQgCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb2RlIDw9IGZhY3RvcnNbMF0KKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ZXNbMF0gPSBvZmZzZXQ7CisgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBqb2luaW5nIHVwIHRoZSBmYWN0b3JpemVkIHN0cmluZ3MgCisgICAgICAgICAgICAgICAgICAgICAgICBzdHIuYXBwZW5kKGdldEZhY3RvclN0cmluZyhpbmRleGVzLCBtX3ZhcmlhbnRfKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8qKgorICAgICAgICAqIEdldHMgdGhlIGNoYXJhY3RlciBmb3IgdGhlIGFyZ3VtZW50IGFsZ29yaXRobWljIG5hbWUKKyAgICAgICAgKiBAcmV0dXJuIHRoZSBhbGdvcml0aG1pYyBjaGFyIG9yIC0xIG90aGVyd2lzZS4KKyAgICAgICAgKi8KKyAgICAgICAgaW50IGdldENoYXIoU3RyaW5nIG5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGludCBwcmVmaXhsZW4gPSBtX3ByZWZpeF8ubGVuZ3RoKCk7CisgICAgICAgICAgICBpZiAobmFtZS5sZW5ndGgoKSA8IHByZWZpeGxlbiB8fCAKKyAgICAgICAgICAgICAgICAhbV9wcmVmaXhfLmVxdWFscyhuYW1lLnN1YnN0cmluZygwLCBwcmVmaXhsZW4pKSkgeworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHN3aXRjaCAobV90eXBlXykgCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBUWVBFXzBfIDogCisgICAgICAgICAgICAgICAgdHJ5CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBpbnQgcmVzdWx0ID0gSW50ZWdlci5wYXJzZUludChuYW1lLnN1YnN0cmluZyhwcmVmaXhsZW4pLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYpOworICAgICAgICAgICAgICAgICAgICAvLyBkb2VzIGl0IGZpdCBpbnRvIHRoZSByYW5nZT8KKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fcmFuZ2VzdGFydF8gPD0gcmVzdWx0ICYmIHJlc3VsdCA8PSBtX3JhbmdlZW5kXykgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXRjaCAoTnVtYmVyRm9ybWF0RXhjZXB0aW9uIGUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgVFlQRV8xXyA6IAorICAgICAgICAgICAgICAgICAgICAvLyByZXBldGl0YXRpdmUgc3VmZml4IG5hbWUgY29tcGFyaXNvbiBkb25lIGhlcmUKKyAgICAgICAgICAgICAgICAgICAgLy8gb2Zmc2V0IGlzIHRoZSBjaGFyYWN0ZXIgY29kZSAtIHN0YXJ0CisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGNoID0gbV9yYW5nZXN0YXJ0XzsgY2ggPD0gbV9yYW5nZWVuZF87IGNoICsrKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gY2ggLSBtX3Jhbmdlc3RhcnRfOworICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluZGV4ZXNbXSA9IG1fdXRpbEludEJ1ZmZlcl87CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmFjdG9yOworICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB3cml0ZSBlbGVtZW50cyBhY2NvcmRpbmcgdG8gdGhlIGZhY3RvcnMKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBmYWN0b3JpemVkIGVsZW1lbnRzIGFyZSBkZXRlcm1pbmVkIGJ5IG1vZHVsbyAKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFyaXRobWV0aWMKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5bmNocm9uaXplZCAobV91dGlsSW50QnVmZmVyXykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSBtX3ZhcmlhbnRfIC0gMTsgaSA+IDA7IGkgLS0pIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjdG9yID0gbV9mYWN0b3JfW2ldICYgMHgwMEZGOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleGVzW2ldID0gb2Zmc2V0ICUgZmFjdG9yOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgLz0gZmFjdG9yOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSBkb24ndCBuZWVkIHRvIGNhbGN1bGF0ZSB0aGUgbGFzdCBtb2R1bHVzIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJlY2F1c2Ugc3RhcnQgPD0gY29kZSA8PSBlbmQgZ3VhcmFudGVlcyBoZXJlIHRoYXQgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29kZSA8PSBmYWN0b3JzWzBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhlc1swXSA9IG9mZnNldDsKKyAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBqb2luaW5nIHVwIHRoZSBmYWN0b3JpemVkIHN0cmluZ3MgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBhcmVGYWN0b3JTdHJpbmcoaW5kZXhlcywgbV92YXJpYW50XywgbmFtZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4bGVuKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2g7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLyoqCisgICAgICAgICAqIEFkZHMgYWxsIGNoYXJzIGluIHRoZSBzZXQgb2YgYWxnb3JpdGhtaWMgbmFtZXMgaW50byB0aGUgc2V0LgorICAgICAgICAgKiBFcXVpdmFsZW50IHRvIHBhcnQgb2YgY2FsY0FsZ05hbWVTZXRzTGVuZ3Rocy4KKyAgICAgICAgICogQHBhcmFtIHNldCBpbnQgc2V0IHRvIGFkZCB0aGUgY2hhcnMgb2YgdGhlIGFsZ29yaXRobSBuYW1lcyBpbnRvCisgICAgICAgICAqIEBwYXJhbSBtYXhsZW5ndGggbWF4aW11bSBsZW5ndGggdG8gY29tcGFyZSB0bworICAgICAgICAgKiBAcmV0dXJuIHRoZSBsZW5ndGggdGhhdCBpcyBlaXRoZXIgbWF4bGVuZ3RoIG9mIHRoZSBsZW5ndGggb2YgdGhpcworICAgICAgICAgKiAgICAgICAgIGFsZ29yaXRobSBuYW1lIGlmIGl0IGlzIGxvbmdlciB0aGFuIG1heGxlbmd0aAorICAgICAgICAgKi8KKyAgICAgICAgaW50IGFkZChpbnQgc2V0W10sIGludCBtYXhsZW5ndGgpIAorICAgICAgICB7CisgICAgICAgICAgICAvLyBwcmVmaXggbGVuZ3RoCisgICAgICAgICAgICBpbnQgbGVuZ3RoID0gVUNoYXJhY3Rlck5hbWUuYWRkKHNldCwgbV9wcmVmaXhfKTsKKyAgICAgICAgICAgIHN3aXRjaCAobV90eXBlXykgeworICAgICAgICAgICAgICAgIGNhc2UgVFlQRV8wXyA6IHsKKyAgICAgICAgICAgICAgICAgICAgLy8gbmFtZSA9IHByZWZpeCArIChyYW5nZS0+dmFyaWFudCB0aW1lcykgaGV4LWRpZ2l0cworICAgICAgICAgICAgICAgICAgICAvLyBwcmVmaXgKKyAgICAgICAgICAgICAgICAgICAgbGVuZ3RoICs9IG1fdmFyaWFudF87CisgICAgICAgICAgICAgICAgICAgIC8qIHN5bndlZSB0byBjaGVjayAKKyAgICAgICAgICAgICAgICAgICAgICogYWRkU3RyaW5nKHNldCwgKGNvbnN0IGNoYXIgKikocmFuZ2UgKyAxKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgcmFuZ2UtPnZhcmlhbnQ7Ki8KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgVFlQRV8xXyA6IHsKKyAgICAgICAgICAgICAgICAgICAgLy8gbmFtZSA9IHByZWZpeCBmYWN0b3JpemVkLWVsZW1lbnRzCisgICAgICAgICAgICAgICAgICAgIC8vIGdldCB0aGUgc2V0IGFuZCBtYXhpbXVtIGZhY3RvciBzdWZmaXggbGVuZ3RoIGZvciBlYWNoIAorICAgICAgICAgICAgICAgICAgICAvLyBmYWN0b3IKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IG1fdmFyaWFudF8gLSAxOyBpID4gMDsgaSAtLSkgCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBtYXhmYWN0b3JsZW5ndGggPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvdW50ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGZhY3RvciA9IG1fZmFjdG9yX1tpXTsgZmFjdG9yID4gMDsgLS0gZmFjdG9yKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3luY2hyb25pemVkIChtX3V0aWxTdHJpbmdCdWZmZXJfKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXRpbFN0cmluZ0J1ZmZlcl8uZGVsZXRlKDAsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91dGlsU3RyaW5nQnVmZmVyXy5sZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gVUNoYXJhY3RlclV0aWxpdHkuZ2V0TnVsbFRlcm1CeXRlU3ViU3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91dGlsU3RyaW5nQnVmZmVyXywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2ZhY3RvcnN0cmluZ18sIGNvdW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3Rlck5hbWUuYWRkKHNldCwgbV91dGlsU3RyaW5nQnVmZmVyXyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX3V0aWxTdHJpbmdCdWZmZXJfLmxlbmd0aCgpIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiBtYXhmYWN0b3JsZW5ndGgpIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhmYWN0b3JsZW5ndGggCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG1fdXRpbFN0cmluZ0J1ZmZlcl8ubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGggKz0gbWF4ZmFjdG9ybGVuZ3RoOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGxlbmd0aCA+IG1heGxlbmd0aCkgeworICAgICAgICAgICAgICAgIHJldHVybiBsZW5ndGg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbWF4bGVuZ3RoOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBwcml2YXRlIGRhdGEgbWVtYmVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgCisgICAgICAgIC8qKgorICAgICAgICAqIEFsZ29yaXRobWljIGRhdGEgaW5mb3JtYXRpb24KKyAgICAgICAgKi8KKyAgICAgICAgcHJpdmF0ZSBpbnQgbV9yYW5nZXN0YXJ0XzsKKyAgICAgICAgcHJpdmF0ZSBpbnQgbV9yYW5nZWVuZF87CisgICAgICAgIHByaXZhdGUgYnl0ZSBtX3R5cGVfOworICAgICAgICBwcml2YXRlIGJ5dGUgbV92YXJpYW50XzsKKyAgICAgICAgcHJpdmF0ZSBjaGFyIG1fZmFjdG9yX1tdOworICAgICAgICBwcml2YXRlIFN0cmluZyBtX3ByZWZpeF87CisgICAgICAgIHByaXZhdGUgYnl0ZSBtX2ZhY3RvcnN0cmluZ19bXTsKKyAgICAgICAgLyoqCisgICAgICAgICAqIFV0aWxpdHkgU3RyaW5nQnVmZmVyCisgICAgICAgICAqLworICAgICAgICBwcml2YXRlIFN0cmluZ0J1ZmZlciBtX3V0aWxTdHJpbmdCdWZmZXJfID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICAvKioKKyAgICAgICAgICogVXRpbGl0eSBpbnQgYnVmZmVyCisgICAgICAgICAqLworICAgICAgICBwcml2YXRlIGludCBtX3V0aWxJbnRCdWZmZXJfW10gPSBuZXcgaW50WzI1Nl07CisgICAgICAgIAorICAgICAgICAvLyBwcml2YXRlIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgLyoqCisgICAgICAgICogR2V0cyB0aGUgaW5kZXh0aCBzdHJpbmcgaW4gZWFjaCBvZiB0aGUgYXJndW1lbnQgZmFjdG9yIGJsb2NrCisgICAgICAgICogQHBhcmFtIGluZGV4IGFycmF5IHdpdGggZWFjaCBpbmRleCBjb3JyZXNwb25kaW5nIHRvIGVhY2ggZmFjdG9yIGJsb2NrCisgICAgICAgICogQHBhcmFtIGxlbmd0aCBsZW5ndGggb2YgdGhlIGFycmF5IGluZGV4CisgICAgICAgICogQHJldHVybiB0aGUgY29tYmluZWQgc3RyaW5nIG9mIHRoZSBhcnJheSBvZiBpbmRleHRoIGZhY3RvciBzdHJpbmcgaW4gCisgICAgICAgICogICAgICAgICBmYWN0b3IgYmxvY2sKKyAgICAgICAgKi8KKyAgICAgICAgcHJpdmF0ZSBTdHJpbmcgZ2V0RmFjdG9yU3RyaW5nKGludCBpbmRleFtdLCBpbnQgbGVuZ3RoKQorICAgICAgICB7CisgICAgICAgICAgICBpbnQgc2l6ZSA9IG1fZmFjdG9yXy5sZW5ndGg7CisgICAgICAgICAgICBpZiAoaW5kZXggPT0gbnVsbCB8fCBsZW5ndGggIT0gc2l6ZSkgeworICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgc3luY2hyb25pemVkIChtX3V0aWxTdHJpbmdCdWZmZXJfKSB7CisgICAgICAgICAgICAgICAgbV91dGlsU3RyaW5nQnVmZmVyXy5kZWxldGUoMCwgbV91dGlsU3RyaW5nQnVmZmVyXy5sZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgaW50IGNvdW50ID0gMDsKKyAgICAgICAgICAgICAgICBpbnQgZmFjdG9yOworICAgICAgICAgICAgICAgIHNpemUgLS07CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gc2l6ZTsgaSArKykgeworICAgICAgICAgICAgICAgICAgICBmYWN0b3IgPSBtX2ZhY3Rvcl9baV07CisgICAgICAgICAgICAgICAgICAgIGNvdW50ID0gVUNoYXJhY3RlclV0aWxpdHkuc2tpcE51bGxUZXJtQnl0ZVN1YlN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZmFjdG9yc3RyaW5nXywgY291bnQsIGluZGV4W2ldKTsKKyAgICAgICAgICAgICAgICAgICAgY291bnQgPSBVQ2hhcmFjdGVyVXRpbGl0eS5nZXROdWxsVGVybUJ5dGVTdWJTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3V0aWxTdHJpbmdCdWZmZXJfLCBtX2ZhY3RvcnN0cmluZ18sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQpOworICAgICAgICAgICAgICAgICAgICBpZiAoaSAhPSBzaXplKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCA9IFVDaGFyYWN0ZXJVdGlsaXR5LnNraXBOdWxsVGVybUJ5dGVTdWJTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9mYWN0b3JzdHJpbmdfLCBjb3VudCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjdG9yIC0gaW5kZXhbaV0gLSAxKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gbV91dGlsU3RyaW5nQnVmZmVyXy50b1N0cmluZygpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvKioKKyAgICAgICAgKiBDb21wYXJlcyB0aGUgaW5kZXh0aCBzdHJpbmcgaW4gZWFjaCBvZiB0aGUgYXJndW1lbnQgZmFjdG9yIGJsb2NrIHdpdGgKKyAgICAgICAgKiB0aGUgYXJndW1lbnQgc3RyaW5nCisgICAgICAgICogQHBhcmFtIGluZGV4IGFycmF5IHdpdGggZWFjaCBpbmRleCBjb3JyZXNwb25kaW5nIHRvIGVhY2ggZmFjdG9yIGJsb2NrCisgICAgICAgICogQHBhcmFtIGxlbmd0aCBpbmRleCBhcnJheSBsZW5ndGgKKyAgICAgICAgKiBAcGFyYW0gc3RyIHN0cmluZyB0byBjb21wYXJlIHdpdGgKKyAgICAgICAgKiBAcGFyYW0gb2Zmc2V0IG9mIHN0ciB0byBzdGFydCBjb21wYXJpc29uCisgICAgICAgICogQHJldHVybiB0cnVlIGlmIHN0cmluZyBtYXRjaGVzCisgICAgICAgICovCisgICAgICAgIHByaXZhdGUgYm9vbGVhbiBjb21wYXJlRmFjdG9yU3RyaW5nKGludCBpbmRleFtdLCBpbnQgbGVuZ3RoLCBTdHJpbmcgc3RyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9mZnNldCkKKyAgICAgICAgeworICAgICAgICAgICAgaW50IHNpemUgPSBtX2ZhY3Rvcl8ubGVuZ3RoOworICAgICAgICAgICAgaWYgKGluZGV4ID09IG51bGwgfHwgbGVuZ3RoICE9IHNpemUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgaW50IGNvdW50ID0gMDsKKyAgICAgICAgICAgIGludCBzdHJjb3VudCA9IG9mZnNldDsKKyAgICAgICAgICAgIGludCBmYWN0b3I7CisgICAgICAgICAgICBzaXplIC0tOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gc2l6ZTsgaSArKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmYWN0b3IgPSBtX2ZhY3Rvcl9baV07CisgICAgICAgICAgICAgICAgY291bnQgPSBVQ2hhcmFjdGVyVXRpbGl0eS5za2lwTnVsbFRlcm1CeXRlU3ViU3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9mYWN0b3JzdHJpbmdfLCBjb3VudCwgaW5kZXhbaV0pOworICAgICAgICAgICAgICAgIHN0cmNvdW50ID0gVUNoYXJhY3RlclV0aWxpdHkuY29tcGFyZU51bGxUZXJtQnl0ZVN1YlN0cmluZyhzdHIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9mYWN0b3JzdHJpbmdfLCBzdHJjb3VudCwgY291bnQpOworICAgICAgICAgICAgICAgIGlmIChzdHJjb3VudCA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChpICE9IHNpemUpIHsKKyAgICAgICAgICAgICAgICAgICAgY291bnQgPSBVQ2hhcmFjdGVyVXRpbGl0eS5za2lwTnVsbFRlcm1CeXRlU3ViU3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZmFjdG9yc3RyaW5nXywgY291bnQsIGZhY3RvciAtIGluZGV4W2ldKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc3RyY291bnQgIT0gc3RyLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLy8gcGFja2FnZSBwcml2YXRlIGRhdGEgbWVtYmVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIC8qKgorICAgICAqIFNpemUgb2YgZWFjaCBncm91cHMKKyAgICAgKi8KKyAgICBpbnQgbV9ncm91cHNpemVfID0gMDsKKyAgICAKKyAgICAvLyBwYWNrYWdlIHByaXZhdGUgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIC8qKgorICAgICogU2V0cyB0aGUgdG9rZW4gZGF0YQorICAgICogQHBhcmFtIHRva2VuIGFycmF5IG9mIHRva2VucworICAgICogQHBhcmFtIHRva2Vuc3RyaW5nIGFycmF5IG9mIHN0cmluZyB2YWx1ZXMgb2YgdGhlIHRva2VucworICAgICogQHJldHVybiBmYWxzZSBpZiB0aGVyZSBpcyBhIGRhdGEgZXJyb3IKKyAgICAqLworICAgIGJvb2xlYW4gc2V0VG9rZW4oY2hhciB0b2tlbltdLCBieXRlIHRva2Vuc3RyaW5nW10pCisgICAgeworICAgICAgICBpZiAodG9rZW4gIT0gbnVsbCAmJiB0b2tlbnN0cmluZyAhPSBudWxsICYmIHRva2VuLmxlbmd0aCA+IDAgJiYKKyAgICAgICAgICAgIHRva2Vuc3RyaW5nLmxlbmd0aCA+IDApIHsKKyAgICAgICAgICAgIG1fdG9rZW50YWJsZV8gPSB0b2tlbjsKKyAgICAgICAgICAgIG1fdG9rZW5zdHJpbmdfID0gdG9rZW5zdHJpbmc7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7IAorICAgIH0KKyAgICAgICAgCisgICAgLyoqCisgICAgKiBTZXQgdGhlIGFsZ29yaXRobSBuYW1lIGluZm9ybWF0aW9uIGFycmF5CisgICAgKiBAcGFyYW0gYWxnb3JpdGhtIGluZm9ybWF0aW9uIGFycmF5CisgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGdyb3VwIHN0cmluZyBvZmZzZXQgaGFzIGJlZW4gc2V0IGNvcnJlY3RseQorICAgICovCisgICAgYm9vbGVhbiBzZXRBbGdvcml0aG0oQWxnb3JpdGhtTmFtZSBhbGdbXSkKKyAgICB7CisgICAgICAgIGlmIChhbGcgIT0gbnVsbCAmJiBhbGcubGVuZ3RoICE9IDApIHsKKyAgICAgICAgICAgIG1fYWxnb3JpdGhtXyA9IGFsZzsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgKiBTZXRzIHRoZSBudW1iZXIgb2YgZ3JvdXAgYW5kIHNpemUgb2YgZWFjaCBncm91cCBpbiBudW1iZXIgb2YgY2hhcgorICAgICogQHBhcmFtIGNvdW50IG51bWJlciBvZiBncm91cHMKKyAgICAqIEBwYXJhbSBzaXplIHNpemUgb2YgZ3JvdXAgaW4gY2hhcgorICAgICogQHJldHVybiB0cnVlIGlmIGdyb3VwIHNpemUgaXMgc2V0IGNvcnJlY3RseQorICAgICovCisgICAgYm9vbGVhbiBzZXRHcm91cENvdW50U2l6ZShpbnQgY291bnQsIGludCBzaXplKQorICAgIHsKKyAgICAgICAgaWYgKGNvdW50IDw9IDAgfHwgc2l6ZSA8PSAwKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgbV9ncm91cGNvdW50XyA9IGNvdW50OworICAgICAgICBtX2dyb3Vwc2l6ZV8gPSBzaXplOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgICAKKyAgICAvKioKKyAgICAqIFNldHMgdGhlIGdyb3VwIG5hbWUgZGF0YQorICAgICogQHBhcmFtIGdyb3VwIGluZGV4IGluZm9ybWF0aW9uIGFycmF5CisgICAgKiBAcGFyYW0gZ3JvdXBzdHJpbmcgbmFtZSBpbmZvcm1hdGlvbiBhcnJheQorICAgICogQHJldHVybiBmYWxzZSBpZiB0aGVyZSBpcyBhIGRhdGEgZXJyb3IKKyAgICAqLworICAgIGJvb2xlYW4gc2V0R3JvdXAoY2hhciBncm91cFtdLCBieXRlIGdyb3Vwc3RyaW5nW10pCisgICAgeworICAgICAgICBpZiAoZ3JvdXAgIT0gbnVsbCAmJiBncm91cHN0cmluZyAhPSBudWxsICYmIGdyb3VwLmxlbmd0aCA+IDAgJiYKKyAgICAgICAgICAgIGdyb3Vwc3RyaW5nLmxlbmd0aCA+IDApIHsKKyAgICAgICAgICAgIG1fZ3JvdXBpbmZvXyA9IGdyb3VwOworICAgICAgICAgICAgbV9ncm91cHN0cmluZ18gPSBncm91cHN0cmluZzsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsgCisgICAgfQorICAgIAorICAgIC8vIHByaXZhdGUgZGF0YSBtZW1iZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvKioKKyAgICAqIERhdGEgdXNlZCBpbiB1bmFtZXMuaWN1CisgICAgKi8KKyAgICBwcml2YXRlIGNoYXIgbV90b2tlbnRhYmxlX1tdOworICAgIHByaXZhdGUgYnl0ZSBtX3Rva2Vuc3RyaW5nX1tdOworICAgIHByaXZhdGUgY2hhciBtX2dyb3VwaW5mb19bXTsKKyAgICBwcml2YXRlIGJ5dGUgbV9ncm91cHN0cmluZ19bXTsKKyAgICBwcml2YXRlIEFsZ29yaXRobU5hbWUgbV9hbGdvcml0aG1fW107CisgICAgICAKKyAgICAvKioKKyAgICAqIEdyb3VwIHVzZQorICAgICovCisgICAgcHJpdmF0ZSBjaGFyIG1fZ3JvdXBvZmZzZXRzX1tdID0gbmV3IGNoYXJbTElORVNfUEVSX0dST1VQXyArIDFdOworICAgIHByaXZhdGUgY2hhciBtX2dyb3VwbGVuZ3Roc19bXSA9IG5ldyBjaGFyW0xJTkVTX1BFUl9HUk9VUF8gKyAxXTsKKyAgICAgIAkgCisgICAgLyoqCisgICAgKiBEZWZhdWx0IG5hbWUgb2YgdGhlIG5hbWUgZGF0YWZpbGUKKyAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBOQU1FX0ZJTEVfTkFNRV8gPSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS91bmFtZXMuaWN1IjsKKyAgICAvKioKKyAgICAqIFNoaWZ0IGNvdW50IHRvIHJldHJpZXZlIGdyb3VwIGluZm9ybWF0aW9uCisgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1JPVVBfU0hJRlRfID0gNTsKKyAgICAvKioKKyAgICAqIE1hc2sgdG8gcmV0cmlldmUgdGhlIG9mZnNldCBmb3IgYSBwYXJ0aWN1bGFyIGNoYXJhY3RlciB3aXRoaW4gYSBncm91cAorICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdST1VQX01BU0tfID0gTElORVNfUEVSX0dST1VQXyAtIDE7CisgICAgLyoqCisgICAgKiBEZWZhdWx0IGJ1ZmZlciBzaXplIG9mIGRhdGFmaWxlCisgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTkFNRV9CVUZGRVJfU0laRV8gPSAxMDAwMDA7CisgICAgICAKKyAgICAvKioKKyAgICAqIFBvc2l0aW9uIG9mIG9mZnNldGhpZ2ggaW4gZ3JvdXAgaW5mb3JtYXRpb24gYXJyYXkKKyAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBPRkZTRVRfSElHSF9PRkZTRVRfID0gMTsKKyAgICAgIAorICAgIC8qKgorICAgICogUG9zaXRpb24gb2Ygb2Zmc2V0bG93IGluIGdyb3VwIGluZm9ybWF0aW9uIGFycmF5CisgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgT0ZGU0VUX0xPV19PRkZTRVRfID0gMjsKKyAgICAvKioKKyAgICAqIERvdWJsZSBuaWJibGUgaW5kaWNhdG9yLCBhbnkgbmliYmxlID4gdGhpcyBudW1iZXIgaGFzIHRvIGJlIGNvbWJpbmVkCisgICAgKiB3aXRoIGl0cyBmb2xsb3dpbmcgbmliYmxlCisgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU0lOR0xFX05JQkJMRV9NQVhfID0gMTE7CisgICAgIAorICAgIC8qKiAKKyAgICAgKiBNYXhpbXVtIGxlbmd0aCBvZiBjaGFyYWN0ZXIgbmFtZXMgKHJlZ3VsYXIgJiAxLjApLiAKKyAgICAgKi8gCisgICAgcHJpdmF0ZSBzdGF0aWMgaW50IE1BWF9OQU1FX0xFTkdUSF8gPSAwOyAKKyAgICAvKioKKyAgICAgKiBNYXhpbXVtIGxlbmd0aCBvZiBJU08gY29tbWVudHMuIAorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGludCBNQVhfSVNPX0NPTU1FTlRfTEVOR1RIXyA9IDA7IAorICAgIAorICAgIC8qKiAKKyAgICAgKiBTZXQgb2YgY2hhcnMgdXNlZCBpbiBjaGFyYWN0ZXIgbmFtZXMgKHJlZ3VsYXIgJiAxLjApLiAKKyAgICAgKiBDaGFycyBhcmUgcGxhdGZvcm0tZGVwZW5kZW50IChjYW4gYmUgRUJDRElDKS4gCisgICAgICovIAorICAgIHByaXZhdGUgaW50IG1fbmFtZVNldF9bXSA9IG5ldyBpbnRbOF07IAorICAgIC8qKgorICAgICAqIFNldCBvZiBjaGFycyB1c2VkIGluIElTTyBjb21tZW50cy4gKHJlZ3VsYXIgJiAxLjApLiAKKyAgICAgKiBDaGFycyBhcmUgcGxhdGZvcm0tZGVwZW5kZW50IChjYW4gYmUgRUJDRElDKS4gCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgbV9JU09Db21tZW50U2V0X1tdID0gbmV3IGludFs4XTsgCisgICAgLyoqCisgICAgICogVXRpbGl0eSBTdHJpbmdCdWZmZXIKKyAgICAgKi8KKyAgICBwcml2YXRlIFN0cmluZ0J1ZmZlciBtX3V0aWxTdHJpbmdCdWZmZXJfID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgIC8qKgorICAgICAqIFV0aWxpdHkgaW50IGJ1ZmZlcgorICAgICAqLworICAgIHByaXZhdGUgaW50IG1fdXRpbEludEJ1ZmZlcl9bXSA9IG5ldyBpbnRbMl07CisgICAgLyoqCisgICAgICogTWF4aW11bSBJU08gY29tbWVudCBsZW5ndGgKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBtX21heElTT0NvbW1lbnRMZW5ndGhfOworICAgIC8qKgorICAgICAqIE1heGltdW0gbmFtZSBsZW5ndGgKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBtX21heE5hbWVMZW5ndGhfOworICAgIC8qKgorICAgICAqIFNpbmdsZXRvbiBpbnN0YW5jZQorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIFVDaGFyYWN0ZXJOYW1lIElOU1RBTkNFXyA9IG51bGw7CisgICAgLyoqCisgICAgICogVHlwZSBuYW1lcyB1c2VkIGZvciBleHRlbmRlZCBuYW1lcworICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUWVBFX05BTUVTX1tdID0geyJ1bmFzc2lnbmVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXBwZXJjYXNlIGxldHRlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxvd2VyY2FzZSBsZXR0ZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aXRsZWNhc2UgbGV0dGVyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kaWZpZXIgbGV0dGVyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3RoZXIgbGV0dGVyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm9uIHNwYWNpbmcgbWFyayIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuY2xvc2luZyBtYXJrIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tYmluaW5nIHNwYWNpbmcgbWFyayIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY2ltYWwgZGlnaXQgbnVtYmVyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGV0dGVyIG51bWJlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm90aGVyIG51bWJlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwYWNlIHNlcGFyYXRvciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUgc2VwYXJhdG9yIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYWdyYXBoIHNlcGFyYXRvciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbnRyb2wiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3JtYXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcml2YXRlIHVzZSBhcmVhIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Vycm9nYXRlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGFzaCBwdW5jdHVhdGlvbiIsICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YXJ0IHB1bmN0dWF0aW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5kIHB1bmN0dWF0aW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29ubmVjdG9yIHB1bmN0dWF0aW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3RoZXIgcHVuY3R1YXRpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtYXRoIHN5bWJvbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImN1cnJlbmN5IHN5bWJvbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZGlmaWVyIHN5bWJvbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm90aGVyIHN5bWJvbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluaXRpYWwgcHVuY3R1YXRpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaW5hbCBwdW5jdHVhdGlvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vbmNoYXJhY3RlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxlYWQgc3Vycm9nYXRlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHJhaWwgc3Vycm9nYXRlIn07CisgICAgLyoqCisgICAgICogVW5rbm93biB0eXBlIG5hbWUKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVU5LTk9XTl9UWVBFX05BTUVfID0gInVua25vd24iOworICAgIC8qKgorICAgICAqIE5vdCBhIGNoYXJhY3RlciB0eXBlCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE5PTl9DSEFSQUNURVJfIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuQ0hBUl9DQVRFR09SWV9DT1VOVDsKKyAgICAvKioKKyAgICAqIExlYWQgc3Vycm9nYXRlIHR5cGUKKyAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBMRUFEX1NVUlJPR0FURV8gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuQ0hBUl9DQVRFR09SWV9DT1VOVCArIDE7CisgICAgLyoqCisgICAgKiBUcmFpbCBzdXJyb2dhdGUgdHlwZQorICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFRSQUlMX1NVUlJPR0FURV8gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuQ0hBUl9DQVRFR09SWV9DT1VOVCArIDI7CisgICAgLyoqCisgICAgKiBFeHRlbmRlZCBjYXRlZ29yeSBjb3VudAorICAgICovCisgICAgc3RhdGljIGZpbmFsIGludCBFWFRFTkRFRF9DQVRFR09SWV8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFVDaGFyYWN0ZXJDYXRlZ29yeS5DSEFSX0NBVEVHT1JZX0NPVU5UICsgMzsKKyAgIAorICAgIC8vIHByaXZhdGUgY29uc3RydWN0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgKiA8cD5Qcm90ZWN0ZWQgY29uc3RydWN0b3IgZm9yIHVzZSBpbiBVQ2hhcmFjdGVyLjwvcD4KKyAgICAqIEBleGNlcHRpb24gSU9FeGNlcHRpb24gdGhyb3duIHdoZW4gZGF0YSByZWFkaW5nIGZhaWxzCisgICAgKi8KKyAgICBwcml2YXRlIFVDaGFyYWN0ZXJOYW1lKCkgdGhyb3dzIElPRXhjZXB0aW9uCisgICAgeworICAgICAgICBJbnB1dFN0cmVhbSBpID0gZ2V0Q2xhc3MoKS5nZXRSZXNvdXJjZUFzU3RyZWFtKE5BTUVfRklMRV9OQU1FXyk7CisgICAgICAgIEJ1ZmZlcmVkSW5wdXRTdHJlYW0gYiA9IG5ldyBCdWZmZXJlZElucHV0U3RyZWFtKGksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQU1FX0JVRkZFUl9TSVpFXyk7CisgICAgICAgIFVDaGFyYWN0ZXJOYW1lUmVhZGVyIHJlYWRlciA9IG5ldyBVQ2hhcmFjdGVyTmFtZVJlYWRlcihiKTsKKyAgICAgICAgcmVhZGVyLnJlYWQodGhpcyk7CisgICAgICAgIGkuY2xvc2UoKTsKKyAgICB9CisgICAgCisgICAgLy8gcHJpdmF0ZSBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgCisgICAgLyoqCisgICAgKiBHZXRzIHRoZSBhbGdvcml0aG1pYyBuYW1lIGZvciB0aGUgYXJndW1lbnQgY2hhcmFjdGVyCisgICAgKiBAcGFyYW0gY2ggY2hhcmFjdGVyIHRvIGRldGVybWluZSBuYW1lIGZvcgorICAgICogQHBhcmFtIGNob2ljZSBuYW1lIGNob2ljZQorICAgICogQHJldHVybiB0aGUgYWxnb3JpdGhtaWMgbmFtZSBvciBudWxsIGlmIG5vdCBmb3VuZAorICAgICovCisgICAgcHJpdmF0ZSBTdHJpbmcgZ2V0QWxnTmFtZShpbnQgY2gsIGludCBjaG9pY2UpIAorICAgIHsKKyAgICAJLy8gRG8gbm90IHdyaXRlIGFsZ29yaXRobWljIFVuaWNvZGUgMS4wIG5hbWVzIGJlY2F1c2UgVW5paGFuIG5hbWVzIGFyZSAKKyAgICAgICAgLy8gdGhlIHNhbWUgYXMgdGhlIG1vZGVybiBvbmVzLCBleHRlbnNpb24gQSB3YXMgb25seSBpbnRyb2R1Y2VkIHdpdGggCisgICAgICAgIC8vIFVuaWNvZGUgMy4wLCBhbmQgdGhlIEhhbmd1bCBzeWxsYWJsZSBibG9jayB3YXMgbW92ZWQgYW5kIGNoYW5nZWQgCisgICAgICAgIC8vIGFyb3VuZCBVbmljb2RlIDEuMS41LgorICAgICAgICBpZiAoY2hvaWNlICE9IFVDaGFyYWN0ZXJOYW1lQ2hvaWNlLlVOSUNPREVfMTBfQ0hBUl9OQU1FKSB7CisgICAgICAgCSAJLy8gaW5kZXggaW4gdGVybXMgaW50ZWdlciBpbmRleAorICAgICAgICAgICAgc3luY2hyb25pemVkIChtX3V0aWxTdHJpbmdCdWZmZXJfKSB7CisgICAgICAgIAkgICAgbV91dGlsU3RyaW5nQnVmZmVyXy5kZWxldGUoMCwgbV91dGlsU3RyaW5nQnVmZmVyXy5sZW5ndGgoKSk7CisgICAgICAgIAorICAgICAgICAgICAgCWZvciAoaW50IGluZGV4ID0gbV9hbGdvcml0aG1fLmxlbmd0aCAtIDE7IGluZGV4ID49IDA7IGluZGV4IC0tKSAKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgCSAgIGlmIChtX2FsZ29yaXRobV9baW5kZXhdLmNvbnRhaW5zKGNoKSkgeworICAgICAgICAgICAgICAJICAgICAgbV9hbGdvcml0aG1fW2luZGV4XS5hcHBlbmROYW1lKGNoLCBtX3V0aWxTdHJpbmdCdWZmZXJfKTsKKyAgICAgICAgICAgICAgICAJICByZXR1cm4gbV91dGlsU3RyaW5nQnVmZmVyXy50b1N0cmluZygpOworICAgICAgICAgICAgIAkgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICAgIAorICAgIC8qKgorICAgICogR2V0dGluZyB0aGUgY2hhcmFjdGVyIHdpdGggdGhlIHRva2VuaXplZCBhcmd1bWVudCBuYW1lCisgICAgKiBAcGFyYW0gbmFtZSBvZiB0aGUgY2hhcmFjdGVyCisgICAgKiBAcmV0dXJuIGNoYXJhY3RlciB3aXRoIHRoZSB0b2tlbml6ZWQgYXJndW1lbnQgbmFtZSBvciAtMSBpZiBjaGFyYWN0ZXIKKyAgICAqICAgICAgICAgaXMgbm90IGZvdW5kCisgICAgKi8KKyAgICBwcml2YXRlIHN5bmNocm9uaXplZCBpbnQgZ2V0R3JvdXBDaGFyKFN0cmluZyBuYW1lLCBpbnQgY2hvaWNlKSAKKyAgICB7CisgICAgCWZvciAoaW50IGkgPSAwOyBpIDwgbV9ncm91cGNvdW50XzsgaSArKykgeworICAgICAgICAJLy8gcG9wdWxhdGluZyB0aGUgZGF0YSBzZXQgb2YgZ3JvdXB0YWJsZQorICAgICAgICAJCisgICAgICAgIAlpbnQgc3RhcnRncHN0cmluZGV4ID0gZ2V0R3JvdXBMZW5ndGhzKGksIG1fZ3JvdXBvZmZzZXRzXywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JvdXBsZW5ndGhzXyk7CisgICAgICAgICAgCisgICAgICAgIAkvLyBzaGlmdCBvdXQgdG8gZnVuY3Rpb24KKyAgICAgICAgCWludCByZXN1bHQgPSBnZXRHcm91cENoYXIoc3RhcnRncHN0cmluZGV4LCBtX2dyb3VwbGVuZ3Roc18sIG5hbWUsIAorICAgICAgICAJICAgICAgICAgICAgICAgICAgICAgICAgICBjaG9pY2UpOworICAgICAgICAJaWYgKHJlc3VsdCAhPSAtMSkgeworICAgICAgICAgICAgCXJldHVybiAobV9ncm91cGluZm9fW2kgKiBtX2dyb3Vwc2l6ZV9dIDw8IEdST1VQX1NISUZUXykgCisgICAgICAgICAgICAJICAgICAgICAgfCByZXN1bHQ7CisgICAgICAgIAl9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICAgIAorICAgIC8qKgorICAgICogQ29tcGFyZXMgYW5kIHJldHJpZXZlIGNoYXJhY3RlciBpZiBuYW1lIGlzIGZvdW5kIHdpdGhpbiB0aGUgYXJndW1lbnQgCisgICAgKiBncm91cAorICAgICogQHBhcmFtIGluZGV4IGluZGV4IHdoZXJlIHRoZSBzZXQgb2YgbmFtZXMgcmVzaWRlIGluIHRoZSBncm91cCBibG9jaworICAgICogQHBhcmFtIGxlbmd0aCBsaXN0IG9mIGxlbmd0aHMgb2YgdGhlIHN0cmluZ3MKKyAgICAqIEBwYXJhbSBuYW1lIGNoYXJhY3RlciBuYW1lIHRvIHNlYXJjaCBmb3IKKyAgICAqIEBwYXJhbSBjaG9pY2Ugb2YgZWl0aGVyIDEuMCBvciB0aGUgbW9zdCBjdXJyZW50IHVuaWNvZGUgbmFtZQorICAgICogQHJldHVybiByZWxhdGl2ZSBjaGFyYWN0ZXIgaW4gdGhlIGdyb3VwIHdoaWNoIG1hdGNoZXMgbmFtZSwgb3RoZXJ3aXNlIGlmICAgCisgICAgKiAgICAgICAgIG5vdCBmb3VuZCwgLTEgd2lsbCBiZSByZXR1cm5lZAorICAgICovCisgICAgcHJpdmF0ZSBpbnQgZ2V0R3JvdXBDaGFyKGludCBpbmRleCwgY2hhciBsZW5ndGhbXSwgU3RyaW5nIG5hbWUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2hvaWNlKQorICAgIHsgCisgICAgICAgIGJ5dGUgYiA9IDA7IAorICAgICAgICBjaGFyIHRva2VuOworICAgICAgICBpbnQgbGVuOworICAgICAgICBpbnQgbmFtZWxlbiA9IG5hbWUubGVuZ3RoKCk7CisgICAgICAgIGludCBuaW5kZXg7CisgICAgICAgIGludCBjb3VudDsKKyAgICAgICAgCisgICAgICAgIGZvciAoaW50IHJlc3VsdCA9IDA7IHJlc3VsdCA8PSBMSU5FU19QRVJfR1JPVVBfOyByZXN1bHQgKyspIHsKKyAgICAgICAgICAgIG5pbmRleCA9IDA7CisgICAgICAgICAgICBsZW4gPSBsZW5ndGhbcmVzdWx0XTsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoY2hvaWNlID09IFVDaGFyYWN0ZXJOYW1lQ2hvaWNlLlVOSUNPREVfMTBfQ0hBUl9OQU1FKSB7CisgICAgICAgICAgICAgICAgaW50IG9sZGluZGV4ID0gaW5kZXg7CisgICAgICAgICAgICAgICAgaW5kZXggKz0gVUNoYXJhY3RlclV0aWxpdHkuc2tpcEJ5dGVTdWJTdHJpbmcobV9ncm91cHN0cmluZ18sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCwgbGVuLCAoYnl0ZSknOycpOworICAgICAgICAgICAgICAgIGxlbiAtPSAoaW5kZXggLSBvbGRpbmRleCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBudW1iZXIgb2YgdG9rZW5zIGlzID4gdGhlIGxlbmd0aCBvZiB0aGUgbmFtZQorICAgICAgICAgICAgLy8gd3JpdGUgZWFjaCBsZXR0ZXIgZGlyZWN0bHksIGFuZCB3cml0ZSBhIHRva2VuIHdvcmQgcGVyIHRva2VuCisgICAgICAgICAgICBmb3IgKGNvdW50ID0gMDsgY291bnQgPCBsZW4gJiYgbmluZGV4ICE9IC0xICYmIG5pbmRleCA8IG5hbWVsZW47CisgICAgICAgICAgICAgICAgKSB7CisgICAgICAgICAgICAgICAgYiA9IG1fZ3JvdXBzdHJpbmdfW2luZGV4ICsgY291bnRdOworICAgICAgICAgICAgICAgIGNvdW50ICsrOworICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChiID49IG1fdG9rZW50YWJsZV8ubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChuYW1lLmNoYXJBdChuaW5kZXggKyspICE9IChiICYgMHhGRikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5pbmRleCA9IC0xOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IG1fdG9rZW50YWJsZV9bYiAmIDB4RkZdOworICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW4gPT0gMHhGRkZFKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGlzIGEgbGVhZCBieXRlIGZvciBhIGRvdWJsZS1ieXRlIHRva2VuCisgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IG1fdG9rZW50YWJsZV9bYiA8PCA4IHwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtX2dyb3Vwc3RyaW5nX1tpbmRleCArIGNvdW50XSAmIDB4MDBmZildOworICAgICAgICAgICAgICAgICAgICAgICAgY291bnQgKys7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuID09IDB4RkZGRikgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5hbWUuY2hhckF0KG5pbmRleCArKykgIT0gKGIgJiAweEZGKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pbmRleCA9IC0xOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29tcGFyZSB0b2tlbiB3aXRoIG5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIG5pbmRleCA9IFVDaGFyYWN0ZXJVdGlsaXR5LmNvbXBhcmVOdWxsVGVybUJ5dGVTdWJTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgbV90b2tlbnN0cmluZ18sIG5pbmRleCwgdG9rZW4pOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobmFtZWxlbiA9PSBuaW5kZXggJiYgCisgICAgICAgICAgICAgICAgKGNvdW50ID09IGxlbiB8fCBtX2dyb3Vwc3RyaW5nX1tpbmRleCArIGNvdW50XSA9PSAnOycpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGluZGV4ICs9IGxlbjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgICAgIAorICAgIC8qKgorICAgICogQmluYXJ5IHNlYXJjaCBmb3IgdGhlIGdyb3VwIHN0cmluZ3Mgc2V0IHRoYXQgY29udGFpbnMgdGhlIGFyZ3VtZW50IFVuaWNvZGUgCisgICAgKiBjb2RlIHBvaW50J3MgbW9zdCBzaWduaWZpY2FudCBiaXRzLgorICAgICogVGhlIHJldHVybiB2YWx1ZSBpcyBhbHdheXMgYSB2YWxpZCBncm91cCBzdHJpbmcgc2V0IHRoYXQgY29udGFpbiBtc2IuCisgICAgKiBJZiBncm91cCBzdHJpbmcgc2V0IGlzIG5vdCBmb3VuZCwgLTEgaXMgcmV0dXJuZWQKKyAgICAqIEBwYXJhbSBjaCB0aGUgY29kZSBwb2ludCB0byBsb29rIGZvcgorICAgICogQHJldHVybiBncm91cCBzdHJpbmcgc2V0IGluZGV4IGluIGRhdGF0YWJsZSBvdGhlcndpc2UgLTEgaXMgcmV0dXJuZWQgaWYgCisgICAgKiAgICAgICAgIGdyb3VwIHN0cmluZyBzZXQgaXMgbm90IGZvdW5kCisgICAgKi8KKyAgICBwcml2YXRlIGludCBnZXRHcm91cFN0cmluZ0luZGV4KGludCBjaCkKKyAgICB7CisgICAgICAgIC8vIGdldHMgdGhlIG1zYgorICAgICAgICBpbnQgbXNiID0gY2ggPj4gR1JPVVBfU0hJRlRfLAorICAgICAgICAgICAgZW5kID0gbV9ncm91cGNvdW50XywKKyAgICAgICAgICAgIHN0YXJ0LAorICAgICAgICAgICAgZ2luZGV4ID0gMDsKKyAgICAgICAgICAgIAorICAgICAgICAvLyBiaW5hcnkgc2VhcmNoIGZvciB0aGUgZ3JvdXAgb2YgbmFtZXMgdGhhdCBjb250YWlucyB0aGUgb25lIGZvciBjb2RlCisgICAgICAgIGZvciAoc3RhcnQgPSAwOyBzdGFydCA8IGVuZCAtIDE7KSB7CisgICAgICAgICAgICBnaW5kZXggPSAoc3RhcnQgKyBlbmQpID4+IDE7CisgICAgICAgICAgICBpZiAobXNiIDwgbV9ncm91cGluZm9fW2dpbmRleCAqIG1fZ3JvdXBzaXplX10pIHsKKyAgICAgICAgICAgICAgICBlbmQgPSBnaW5kZXg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBzdGFydCA9IGdpbmRleDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIHJldHVybiB0aGlzIGlmIGl0IGlzIGFuIGV4YWN0IG1hdGNoCisgICAgICAgIGlmIChtc2IgPT0gbV9ncm91cGluZm9fW3N0YXJ0ICogbV9ncm91cHNpemVfXSkgeworICAgICAgICAgICAgc3RhcnQgPSBzdGFydCAqIG1fZ3JvdXBzaXplXzsKKyAgICAgICAgICAgIHJldHVybiBVQ2hhcmFjdGVyVXRpbGl0eS50b0ludCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncm91cGluZm9fW3N0YXJ0ICsgT0ZGU0VUX0hJR0hfT0ZGU0VUX10sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyb3VwaW5mb19bc3RhcnQgKyBPRkZTRVRfTE9XX09GRlNFVF9dKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICogR2V0cyB0aGUgY2hhcmFjdGVyIGV4dGVuZGVkIHR5cGUKKyAgICAqIEBwYXJhbSBjaCBjaGFyYWN0ZXIgdG8gYmUgdGVzdGVkCisgICAgKiBAcmV0dXJuIGV4dGVuZGVkIHR5cGUgaXQgaXMgYXNzb2NpYXRlZCB3aXRoCisgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBpbnQgZ2V0VHlwZShpbnQgY2gpCisgICAgeworICAgICAgICBpZiAoVUNoYXJhY3RlclV0aWxpdHkuaXNOb25DaGFyYWN0ZXIoY2gpKSB7ICAKKyAgICAgICAgICAgIC8vIG5vdCBhIGNoYXJhY3RlciB3ZSByZXR1cm4gYSBpbnZhbGlkIGNhdGVnb3J5IGNvdW50CisgICAgICAgICAgICByZXR1cm4gTk9OX0NIQVJBQ1RFUl87ICAgIAorICAgICAgICB9ICAgIAorICAgICAgICBpbnQgcmVzdWx0ID0gVUNoYXJhY3Rlci5nZXRUeXBlKGNoKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuU1VSUk9HQVRFKSB7ICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoY2ggPD0gVVRGMTYuTEVBRF9TVVJST0dBVEVfTUFYX1ZBTFVFKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gTEVBRF9TVVJST0dBVEVfOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gVFJBSUxfU1VSUk9HQVRFXzsKKyAgICAgICAgICAgIH0gICAgCisgICAgICAgIH0gICAgCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICogR2V0dGluZyB0aGUgY2hhcmFjdGVyIHdpdGggZXh0ZW5kZWQgbmFtZSBvZiB0aGUgZm9ybSA8Li4uLj4uCisgICAgKiBAcGFyYW0gbmFtZSBvZiB0aGUgY2hhcmFjdGVyIHRvIGJlIGZvdW5kCisgICAgKiBAcGFyYW0gY2hvaWNlIG5hbWUgY2hvaWNlCisgICAgKiBAcmV0dXJuIGNoYXJhY3RlciBhc3NvY2lhdGVkIHdpdGggdGhlIG5hbWUsIC0xIGlmIHN1Y2ggY2hhcmFjdGVyIGlzIG5vdAorICAgICogICAgICAgICAgICAgICAgICAgZm91bmQgYW5kIC0yIGlmIHdlIHNob3VsZCBjb250aW51ZSB3aXRoIHRoZSBzZWFyY2guCisgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBpbnQgZ2V0RXh0ZW5kZWRDaGFyKFN0cmluZyBuYW1lLCBpbnQgY2hvaWNlKQorICAgIHsKKyAgICAgICAgaWYgKG5hbWUuY2hhckF0KDApID09ICc8JykgeyAgICAgICAgCisgICAgICAgICAgICBpZiAoY2hvaWNlID09IFVDaGFyYWN0ZXJOYW1lQ2hvaWNlLkVYVEVOREVEX0NIQVJfTkFNRSkgeyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGludCBlbmRJbmRleCA9IG5hbWUubGVuZ3RoKCkgLSAxOworICAgICAgICAgICAgICAgIGlmIChuYW1lLmNoYXJBdChlbmRJbmRleCkgPT0gJz4nKSB7CisgICAgICAgICAgICAgICAgICAgIGludCBzdGFydEluZGV4ID0gbmFtZS5sYXN0SW5kZXhPZignLScpOworICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnRJbmRleCA+PSAwKSB7IC8vIFdlJ3ZlIGdvdCBhIGNhdGVnb3J5LiAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBzdGFydEluZGV4ICsrOworICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlc3VsdCA9IC0xOworICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBJbnRlZ2VyLnBhcnNlSW50KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUuc3Vic3RyaW5nKHN0YXJ0SW5kZXgsIGVuZEluZGV4KSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKE51bWJlckZvcm1hdEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOyAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICB9IAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm93IHZhbGlkYXRlIHRoZSBjYXRlZ29yeSBuYW1lLiBXZSBjb3VsZCB1c2UgYSAKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpbmFyeSBzZWFyY2gsIG9yIGEgdHJpZSwgaWYgd2UgcmVhbGx5IHdhbnRlZCB0by4gCisgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgdHlwZSA9IG5hbWUuc3Vic3RyaW5nKDEsIHN0YXJ0SW5kZXggLSAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZW5ndGggPSBUWVBFX05BTUVTXy5sZW5ndGg7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgKysgaSkgeyAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZS5jb21wYXJlVG8oVFlQRV9OQU1FU19baV0pID09IDApIHsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRUeXBlKHJlc3VsdCkgPT0gaSkgeyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7ICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IAorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSAgICAgICAgICAgIAorICAgICAgICAgICAgcmV0dXJuIC0xOyAKKyAgICAgICAgfSAgICAKKyAgICAgICAgcmV0dXJuIC0yOworICAgIH0KKyAgICAKKyAgICAvLyBzZXRzIG9mIG5hbWUgY2hhcmFjdGVycywgbWF4aW11bSBuYW1lIGxlbmd0aHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIEFkZHMgYSBjb2RlcG9pbnQgaW50byBhIHNldCBvZiBpbnRzLgorICAgICAqIEVxdWl2YWxlbnQgdG8gU0VUX0FERC4KKyAgICAgKiBAcGFyYW0gc2V0IHNldCB0byBhZGQgdG8KKyAgICAgKiBAcGFyYW0gY2ggMTYgYml0IGNoYXIgdG8gYWRkCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBhZGQoaW50IHNldFtdLCBjaGFyIGNoKSAKKyAgICB7CisgICAgICAgIHNldFtjaCA+Pj4gNV0gfD0gMSA8PCAoY2ggJiAweDFmKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDaGVja3MgaWYgYSBjb2RlcG9pbnQgaXMgYSBwYXJ0IG9mIGEgc2V0IG9mIGludHMuCisgICAgICogRXF1aXZhbGVudCB0byBTRVRfQ09OVEFJTlMuCisgICAgICogQHBhcmFtIHNldCBzZXQgdG8gY2hlY2sgaW4KKyAgICAgKiBAcGFyYW0gY2ggMTYgYml0IGNoYXIgdG8gY2hlY2sKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgY29kZXBvaW50IGlzIHBhcnQgb2YgdGhlIHNldCwgZmFsc2Ugb3RoZXJ3aXNlCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBjb250YWlucyhpbnQgc2V0W10sIGNoYXIgY2gpIAorICAgIHsKKyAgICAgICAgcmV0dXJuIChzZXRbY2ggPj4+IDVdICYgKDEgPDwgKGNoICYgMHgxZikpKSAhPSAwOyAKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBZGRzIGFsbCBjaGFyYWN0ZXJzIG9mIHRoZSBhcmd1bWVudCBzdHIgYW5kIGdldHMgdGhlIGxlbmd0aCAKKyAgICAgKiBFcXVpdmFsZW50IHRvIGNhbGNTdHJpbmdTZXRMZW5ndGguCisgICAgICogQHBhcmFtIHNldCBzZXQgdG8gYWRkIGFsbCBjaGFycyBvZiBzdHIgdG8KKyAgICAgKiBAcGFyYW0gc3RyIHN0cmluZyB0byBhZGQKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBpbnQgYWRkKGludCBzZXRbXSwgU3RyaW5nIHN0cikgCisgICAgeworICAgICAgICBpbnQgcmVzdWx0ID0gc3RyLmxlbmd0aCgpOworICAgICAgICAKKyAgICAgICAgZm9yIChpbnQgaSA9IHJlc3VsdCAtIDE7IGkgPj0gMDsgaSAtLSkgeworICAgICAgICAgICAgYWRkKHNldCwgc3RyLmNoYXJBdChpKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQWRkcyBhbGwgY2hhcmFjdGVycyBvZiB0aGUgYXJndW1lbnQgc3RyIGFuZCBnZXRzIHRoZSBsZW5ndGggCisgICAgICogRXF1aXZhbGVudCB0byBjYWxjU3RyaW5nU2V0TGVuZ3RoLgorICAgICAqIEBwYXJhbSBzZXQgc2V0IHRvIGFkZCBhbGwgY2hhcnMgb2Ygc3RyIHRvCisgICAgICogQHBhcmFtIHN0ciBzdHJpbmcgdG8gYWRkCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgaW50IGFkZChpbnQgc2V0W10sIFN0cmluZ0J1ZmZlciBzdHIpIAorICAgIHsKKyAgICAgICAgaW50IHJlc3VsdCA9IHN0ci5sZW5ndGgoKTsKKyAgICAgICAgCisgICAgICAgIGZvciAoaW50IGkgPSByZXN1bHQgLSAxOyBpID49IDA7IGkgLS0pIHsKKyAgICAgICAgICAgIGFkZChzZXQsIHN0ci5jaGFyQXQoaSkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEFkZHMgYWxsIGFsZ29yaXRobWljIG5hbWVzIGludG8gdGhlIG5hbWUgc2V0LgorICAgICAqIEVxdWl2YWxlbnQgdG8gcGFydCBvZiBjYWxjQWxnTmFtZVNldHNMZW5ndGhzLgorICAgICAqIEBwYXJhbSBtYXhsZW5ndGggbGVuZ3RoIHRvIGNvbXBhcmUgdG8gCisgICAgICogQHJldHVybiB0aGUgbWF4aW11bSBsZW5ndGggb2YgYW55IHBvc3NpYmxlIGFsZ29yaXRobWljIG5hbWUgaWYgaXQgaXMgPiAKKyAgICAgKiAgICAgICAgIG1heGxlbmd0aCwgb3RoZXJ3aXNlIG1heGxlbmd0aCBpcyByZXR1cm5lZC4KKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBhZGRBbGdvcml0aG1OYW1lKGludCBtYXhsZW5ndGgpCisgICAgeworICAgICAgICBpbnQgcmVzdWx0ID0gMDsKKyAgICAgICAgZm9yIChpbnQgaSA9IG1fYWxnb3JpdGhtXy5sZW5ndGggLSAxOyBpID49IDA7IGkgLS0pIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1fYWxnb3JpdGhtX1tpXS5hZGQobV9uYW1lU2V0XywgbWF4bGVuZ3RoKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPiBtYXhsZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBtYXhsZW5ndGggPSByZXN1bHQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1heGxlbmd0aDsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQWRkcyBhbGwgZXh0ZW5kZWQgbmFtZXMgaW50byB0aGUgbmFtZSBzZXQuCisgICAgICogRXF1aXZhbGVudCB0byBwYXJ0IG9mIGNhbGNFeHROYW1lU2V0c0xlbmd0aHMuCisgICAgICogQHBhcmFtIG1heGxlbmd0aCBsZW5ndGggdG8gY29tcGFyZSB0byAKKyAgICAgKiBAcmV0dXJuIHRoZSBtYXhsZW5ndGggb2YgYW55IHBvc3NpYmxlIGV4dGVuZGVkIG5hbWUuCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgYWRkRXh0ZW5kZWROYW1lKGludCBtYXhsZW5ndGgpIAorICAgIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IFRZUEVfTkFNRVNfLmxlbmd0aCAtIDE7IGkgPj0gMDsgaSAtLSkgeworICAgICAgICAgICAgLy8gZm9yIGVhY2ggY2F0ZWdvcnksIGNvdW50IHRoZSBsZW5ndGggb2YgdGhlIGNhdGVnb3J5IG5hbWUKKyAgICAgICAgICAgIC8vIHBsdXMgOSA9CisgICAgICAgICAgICAvLyAyIGZvciA8PgorICAgICAgICAgICAgLy8gMSBmb3IgLQorICAgICAgICAgICAgLy8gNiBmb3IgbW9zdCBoZXggZGlnaXRzIHBlciBjb2RlIHBvaW50CisgICAgICAgICAgICBpbnQgbGVuZ3RoID0gOSArIGFkZChtX25hbWVTZXRfLCBUWVBFX05BTUVTX1tpXSk7CisgICAgICAgICAgICBpZiAobGVuZ3RoID4gbWF4bGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgbWF4bGVuZ3RoID0gbGVuZ3RoOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBtYXhsZW5ndGg7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEFkZHMgbmFtZXMgb2YgYSBncm91cCB0byB0aGUgYXJndW1lbnQgc2V0LgorICAgICAqIEVxdWl2YWxlbnQgdG8gY2FsY05hbWVTZXRMZW5ndGguCisgICAgICogQHBhcmFtIG9mZnNldCBvZiB0aGUgZ3JvdXAgbmFtZSBzdHJpbmcgaW4gYnl0ZSBjb3VudAorICAgICAqIEBwYXJhbSBsZW5ndGggb2YgdGhlIGdyb3VwIG5hbWUgc3RyaW5nCisgICAgICogQHBhcmFtIHRva2VubGVuZ3RoIGFycmF5IHRvIHN0b3JlIHRoZSBsZW5ndGggb2YgZWFjaCB0b2tlbgorICAgICAqIEBwYXJhbSBzZXQgdG8gYWRkIHRvCisgICAgICogQHJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBuYW1lIHN0cmluZyBhbmQgdGhlIGxlbmd0aCBvZiB0aGUgZ3JvdXAgCisgICAgICogICAgICAgICBzdHJpbmcgcGFyc2VkCisgICAgICovCisgICAgcHJpdmF0ZSBpbnRbXSBhZGRHcm91cE5hbWUoaW50IG9mZnNldCwgaW50IGxlbmd0aCwgYnl0ZSB0b2tlbmxlbmd0aFtdLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2V0W10pIAorICAgIHsKKyAgICAgICAgaW50IHJlc3VsdG5sZW5ndGggPSAwOworICAgICAgICBpbnQgcmVzdWx0cGxlbmd0aCA9IDA7CisgICAgICAgIHdoaWxlIChyZXN1bHRwbGVuZ3RoIDwgbGVuZ3RoKSB7CisgICAgICAgICAgICBjaGFyIGIgPSAoY2hhcikobV9ncm91cHN0cmluZ19bb2Zmc2V0ICsgcmVzdWx0cGxlbmd0aF0gJiAweGZmKTsKKyAgICAgICAgICAgIHJlc3VsdHBsZW5ndGggKys7CisgICAgICAgICAgICBpZiAoYiA9PSAnOycpIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoYiA+PSBtX3Rva2VudGFibGVfLmxlbmd0aCkgeworICAgICAgICAgICAgICAgIGFkZChzZXQsIGIpOyAvLyBpbXBsaWNpdCBsZXR0ZXIKKyAgICAgICAgICAgICAgICByZXN1bHRubGVuZ3RoICsrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgY2hhciB0b2tlbiA9IG1fdG9rZW50YWJsZV9bYiAmIDB4MDBmZl07CisgICAgICAgICAgICAgICAgaWYgKHRva2VuID09IDB4RkZGRSkgeworICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGlzIGEgbGVhZCBieXRlIGZvciBhIGRvdWJsZS1ieXRlIHRva2VuCisgICAgICAgICAgICAgICAgICAgIGIgPSAoY2hhcikoYiA8PCA4IHwgKG1fZ3JvdXBzdHJpbmdfW29mZnNldCArIHJlc3VsdHBsZW5ndGhdIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIDB4MDBmZikpOworICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IG1fdG9rZW50YWJsZV9bYl07CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdHBsZW5ndGggKys7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICh0b2tlbiA9PSAweEZGRkYpIHsKKyAgICAgICAgICAgICAgICAgICAgYWRkKHNldCwgYik7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdG5sZW5ndGggKys7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeyAKKyAgICAgICAgICAgICAgICAgICAgLy8gY291bnQgdG9rZW4gd29yZAorICAgICAgICAgICAgICAgICAgICAvLyB1c2UgY2FjaGVkIHRva2VuIGxlbmd0aAorICAgICAgICAgICAgICAgICAgICBieXRlIHRsZW5ndGggPSB0b2tlbmxlbmd0aFtiXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRsZW5ndGggPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3luY2hyb25pemVkIChtX3V0aWxTdHJpbmdCdWZmZXJfKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91dGlsU3RyaW5nQnVmZmVyXy5kZWxldGUoMCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91dGlsU3RyaW5nQnVmZmVyXy5sZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3RlclV0aWxpdHkuZ2V0TnVsbFRlcm1CeXRlU3ViU3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXRpbFN0cmluZ0J1ZmZlcl8sIG1fdG9rZW5zdHJpbmdfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bGVuZ3RoID0gKGJ5dGUpYWRkKHNldCwgbV91dGlsU3RyaW5nQnVmZmVyXyk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbmxlbmd0aFtiXSA9IHRsZW5ndGg7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0bmxlbmd0aCArPSB0bGVuZ3RoOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBtX3V0aWxJbnRCdWZmZXJfWzBdID0gcmVzdWx0bmxlbmd0aDsKKyAgICAgICAgbV91dGlsSW50QnVmZmVyX1sxXSA9IHJlc3VsdHBsZW5ndGg7CisgICAgICAgIHJldHVybiBtX3V0aWxJbnRCdWZmZXJfOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBBZGRzIG5hbWVzIG9mIGFsbCBncm91cCB0byB0aGUgYXJndW1lbnQgc2V0LgorICAgICAqIFNldHMgdGhlIGRhdGEgbWVtYmVyIG1fbWF4Kkxlbmd0aF8uCisgICAgICogTWV0aG9kIGNhbGxlZCBvbmx5IG9uY2UuCisgICAgICogRXF1aXZhbGVudCB0byBjYWxjR3JvdXBOYW1lU2V0c0xlbmd0aC4KKyAgICAgKiBAcGFyYW0gbWF4bGVuZ3RoIGxlbmd0aCB0byBjb21wYXJlIHRvIAorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBhZGRHcm91cE5hbWUoaW50IG1heGxlbmd0aCkgCisgICAgeworICAgICAgICBpbnQgbWF4aXNvbGVuZ3RoID0gMDsKKyAgICAgICAgY2hhciBvZmZzZXRzW10gPSBuZXcgY2hhcltMSU5FU19QRVJfR1JPVVBfICsgMl07CisgICAgICAgIGNoYXIgbGVuZ3Roc1tdID0gbmV3IGNoYXJbTElORVNfUEVSX0dST1VQXyArIDJdOworICAgICAgICBieXRlIHRva2VubGVuZ3Roc1tdID0gbmV3IGJ5dGVbbV90b2tlbnRhYmxlXy5sZW5ndGhdOworICAgICAgIAorICAgICAgICAvLyBlbnVtZXJhdGUgYWxsIGdyb3VwcworICAgICAgICAvLyBmb3IgKGludCBpID0gbV9ncm91cGNvdW50XyAtIDE7IGkgPj0gMDsgaSAtLSkgeworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fZ3JvdXBjb3VudF8gOyBpICsrKSB7CisgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gZ2V0R3JvdXBMZW5ndGhzKGksIG9mZnNldHMsIGxlbmd0aHMpOworICAgICAgICAgICAgLy8gZW51bWVyYXRlIGFsbCBsaW5lcyBpbiBlYWNoIGdyb3VwCisgICAgICAgICAgICAvLyBmb3IgKGludCBsaW5lbnVtYmVyID0gTElORVNfUEVSX0dST1VQXyAtIDE7IGxpbmVudW1iZXIgPj0gMDsKKyAgICAgICAgICAgIC8vICAgIGxpbmVudW1iZXIgLS0pIHsKKyAgICAgICAgICAgIGZvciAoaW50IGxpbmVudW1iZXIgPSAwOyBsaW5lbnVtYmVyIDwgTElORVNfUEVSX0dST1VQXzsKKyAgICAgICAgICAgICAgICBsaW5lbnVtYmVyICsrKSB7CisgICAgICAgICAgICAgICAgaW50IGxpbmVvZmZzZXQgPSBvZmZzZXQgKyBvZmZzZXRzW2xpbmVudW1iZXJdOworICAgICAgICAgICAgICAgIGludCBsZW5ndGggPSBsZW5ndGhzW2xpbmVudW1iZXJdOworICAgICAgICAgICAgICAgIGlmIChsZW5ndGggPT0gMCkgeworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgCisgICAgICAgICAgICAgICAgLy8gcmVhZCByZWd1bGFyIG5hbWUKKyAgICAgICAgICAgICAgICBpbnQgcGFyc2VkW10gPSBhZGRHcm91cE5hbWUobGluZW9mZnNldCwgbGVuZ3RoLCB0b2tlbmxlbmd0aHMsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX25hbWVTZXRfKTsKKyAgICAgICAgICAgICAgICBpZiAocGFyc2VkWzBdID4gbWF4bGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIDAgZm9yIG5hbWUgbGVuZ3RoCisgICAgICAgICAgICAgICAgICAgIG1heGxlbmd0aCA9IHBhcnNlZFswXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbGluZW9mZnNldCArPSBwYXJzZWRbMV07CisgICAgICAgICAgICAgICAgaWYgKHBhcnNlZFsxXSA+PSBsZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gMSBmb3IgcGFyc2VkIGdyb3VwIHN0cmluZyBsZW5ndGgKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGxlbmd0aCAtPSBwYXJzZWRbMV07CisgICAgICAgICAgICAgICAgLy8gcmVhZCBVbmljb2RlIDEuMCBuYW1lCisgICAgICAgICAgICAgICAgcGFyc2VkID0gYWRkR3JvdXBOYW1lKGxpbmVvZmZzZXQsIGxlbmd0aCwgdG9rZW5sZW5ndGhzLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9uYW1lU2V0Xyk7CisgICAgICAgICAgICAgICAgaWYgKHBhcnNlZFswXSA+IG1heGxlbmd0aCkgeworICAgICAgICAgICAgICAgICAgICAvLyAwIGZvciBuYW1lIGxlbmd0aAorICAgICAgICAgICAgICAgICAgICBtYXhsZW5ndGggPSBwYXJzZWRbMF07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGxpbmVvZmZzZXQgKz0gcGFyc2VkWzFdOworICAgICAgICAgICAgICAgIGlmIChwYXJzZWRbMV0gPj0gbGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIDEgZm9yIHBhcnNlZCBncm91cCBzdHJpbmcgbGVuZ3RoCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBsZW5ndGggLT0gcGFyc2VkWzFdOworICAgICAgICAgICAgICAgIC8vIHJlYWQgSVNPIGNvbW1lbnQKKyAgICAgICAgICAgICAgICBwYXJzZWQgPSBhZGRHcm91cE5hbWUobGluZW9mZnNldCwgbGVuZ3RoLCB0b2tlbmxlbmd0aHMsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX0lTT0NvbW1lbnRTZXRfKTsKKyAgICAgICAgICAgICAgICBpZiAocGFyc2VkWzFdID4gbWF4aXNvbGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgIG1heGlzb2xlbmd0aCA9IGxlbmd0aDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgLy8gc2V0IGdNYXguLi4gLSBuYW1lIGxlbmd0aCBsYXN0IGZvciB0aHJlYWRpbmcKKyAgICAgICAgbV9tYXhJU09Db21tZW50TGVuZ3RoXyA9IG1heGlzb2xlbmd0aDsKKyAgICAgICAgbV9tYXhOYW1lTGVuZ3RoXyA9IG1heGxlbmd0aDsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogU2V0cyB1cCB0aGUgbmFtZSBzZXRzIGFuZCB0aGUgY2FsY3VsYXRpb24gb2YgdGhlIG1heGltdW0gbGVuZ3Rocy4KKyAgICAgKiBFcXVpdmFsZW50IHRvIGNhbGNOYW1lU2V0c0xlbmd0aHMuCisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIGluaXROYW1lU2V0c0xlbmd0aHMoKSAKKyAgICB7CisgICAgICAgIGlmIChtX21heE5hbWVMZW5ndGhfID4gMCkgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgU3RyaW5nIGV4dHJhID0gIjAxMjM0NTY3ODlBQkNERUY8Pi0iOworICAgICAgICAvLyBzZXQgaGV4IGRpZ2l0cywgdXNlZCBpbiB2YXJpb3VzIG5hbWVzLCBhbmQgPD4tLCB1c2VkIGluIGV4dGVuZGVkIAorICAgICAgICAvLyBuYW1lcworICAgICAgICBmb3IgKGludCBpID0gZXh0cmEubGVuZ3RoKCkgLSAxOyBpID49IDA7IGkgLS0pIHsKKyAgICAgICAgICAgIGFkZChtX25hbWVTZXRfLCBleHRyYS5jaGFyQXQoaSkpOworICAgICAgICB9CisgICAgCisgICAgICAgIC8vIHNldCBzZXRzIGFuZCBsZW5ndGhzIGZyb20gYWxnb3JpdGhtaWMgbmFtZXMKKyAgICAgICAgbV9tYXhOYW1lTGVuZ3RoXyA9IGFkZEFsZ29yaXRobU5hbWUoMCk7CisgICAgICAgIC8vIHNldCBzZXRzIGFuZCBsZW5ndGhzIGZyb20gZXh0ZW5kZWQgbmFtZXMKKyAgICAgICAgbV9tYXhOYW1lTGVuZ3RoXyA9IGFkZEV4dGVuZGVkTmFtZShtX21heE5hbWVMZW5ndGhfKTsKKyAgICAgICAgLy8gc2V0IHNldHMgYW5kIGxlbmd0aHMgZnJvbSBncm91cCBuYW1lcywgc2V0IGdsb2JhbCBtYXhpbXVtIHZhbHVlcworICAgICAgICBhZGRHcm91cE5hbWUobV9tYXhOYW1lTGVuZ3RoXyk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBDb252ZXJ0cyB0aGUgY2hhciBzZXQgY3NldCBpbnRvIGEgVW5pY29kZSBzZXQgdXNldC4KKyAgICAgKiBFcXVpdmFsZW50IHRvIGNoYXJTZXRUb1VTZXQuCisgICAgICogQHBhcmFtIHNldCBTZXQgb2YgMjU2IGJpdCBmbGFncyBjb3JyZXNwb25kaW5nIHRvIGEgc2V0IG9mIGNoYXJzLgorICAgICAqIEBwYXJhbSB1c2V0IFVTZXQgdG8gcmVjZWl2ZSBjaGFyYWN0ZXJzLiBFeGlzdGluZyBjb250ZW50cyBhcmUgZGVsZXRlZC4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgY29udmVydChpbnQgc2V0W10sIFVuaWNvZGVTZXQgdXNldCkgCisgICAgeworICAgICAgICB1c2V0LmNsZWFyKCk7CisgICAgICAgIGlmICghaW5pdE5hbWVTZXRzTGVuZ3RocygpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgLy8gYnVpbGQgYSBjaGFyIHN0cmluZyB3aXRoIGFsbCBjaGFycyB0aGF0IGFyZSB1c2VkIGluIGNoYXJhY3RlciBuYW1lcworICAgICAgICBmb3IgKGNoYXIgYyA9IDI1NTsgYyA+IDA7IGMgLS0pIHsKKyAgICAgICAgICAgIGlmIChjb250YWlucyhzZXQsIGMpKSB7CisgICAgICAgICAgICAgICAgdXNldC5hZGQoYyk7ICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvVUNoYXJhY3Rlck5hbWVDaG9pY2UuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL1VDaGFyYWN0ZXJOYW1lQ2hvaWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWI4MjAwZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL1VDaGFyYWN0ZXJOYW1lQ2hvaWNlLmphdmEKQEAgLTAsMCArMSwzNiBAQAorLyoqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqICRTb3VyY2U6IAorKiAgICAgL3Vzci9jdnMvaWN1NGovaWN1NGovc3JjL2NvbS9pYm0vaWN1L3RleHQvVUNoYXJhY3Rlck5hbWVDaG9pY2VFbnVtLmphdmEgJCAKKyogJERhdGU6IDIwMDIvMDkvMTkgMjE6MTk6MDQgJCAKKyogJFJldmlzaW9uOiAxLjEgJAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKworcGFja2FnZSBjb20uaWJtLmljdS5pbXBsOworCisvKioKKyogSW50ZXJuYWwgY2xhc3MgY29udGFpbmluZyBzZWxlY3RvciBjb25zdGFudHMgZm9yIHRoZSB1bmljb2RlIGNoYXJhY3RlciBuYW1lcy4KKyogQ29uc3RhbnRzIHJlcHJlc2VudGluZyB0aGUgIm1vZGVybiIgbmFtZSBvZiBhIFVuaWNvZGUgY2hhcmFjdGVyIG9yIHRoZSBuYW1lIAorKiB0aGF0IHdhcyBkZWZpbmVkIGluIFVuaWNvZGUgdmVyc2lvbiAxLjAsIGJlZm9yZSB0aGUgVW5pY29kZSBzdGFuZGFyZCAKKyogbWVyZ2VkIHdpdGggSVNPLTEwNjQ2LgorKiBBcmd1bWVudHMgZm9yIDxhIGhyZWY9VUNoYXJhY3Rlck5hbWUuaHRtbD5VQ2hhcmFjdGVyTmFtZTwvYT4KKyogQGF1dGhvciBTeW4gV2VlIFF1ZWsKKyogQHNpbmNlIG9jdDA2MDAKKyovCisKK3B1YmxpYyBpbnRlcmZhY2UgVUNoYXJhY3Rlck5hbWVDaG9pY2UKK3sKKyAgLy8gcHVibGljIHZhcmlhYmxlcyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgCisgIHN0YXRpYyBmaW5hbCBpbnQgVU5JQ09ERV9DSEFSX05BTUUgPSAwOworICBzdGF0aWMgZmluYWwgaW50IFVOSUNPREVfMTBfQ0hBUl9OQU1FID0gMTsKKyAgc3RhdGljIGZpbmFsIGludCBFWFRFTkRFRF9DSEFSX05BTUUgPSAyOworICBzdGF0aWMgZmluYWwgaW50IENIQVJfTkFNRV9DSE9JQ0VfQ09VTlQgPSAzOworICBzdGF0aWMgZmluYWwgaW50IElTT19DT01NRU5UXyA9IENIQVJfTkFNRV9DSE9JQ0VfQ09VTlQ7Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9VQ2hhcmFjdGVyTmFtZVJlYWRlci5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvVUNoYXJhY3Rlck5hbWVSZWFkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWIwNjcxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvVUNoYXJhY3Rlck5hbWVSZWFkZXIuamF2YQpAQCAtMCwwICsxLDIyNSBAQAorLyoqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9pbXBsL1VDaGFyYWN0ZXJOYW1lUmVhZGVyLmphdmEsdiAkIAorKiAkRGF0ZTogMjAwMi8xMC8wOSAyMzo1MzoyNCAkIAorKiAkUmV2aXNpb246IDEuMiAkCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworcGFja2FnZSBjb20uaWJtLmljdS5pbXBsOworCitpbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLkRhdGFJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CisKKy8qKgorKiA8cD5JbnRlcm5hbCByZWFkZXIgY2xhc3MgZm9yIElDVSBkYXRhIGZpbGUgdW5hbWUuZGF0IGNvbnRhaW5pbmcgCisqIFVuaWNvZGUgY29kZXBvaW50IG5hbWUgZGF0YS48L3A+IAorKiA8cD5UaGlzIGNsYXNzIHNpbXBseSByZWFkcyB1bmFtZXMuaWN1LCBhdXRoZW50aWNhdGVzIHRoYXQgaXQgaXMgYSB2YWxpZAorKiBJQ1UgZGF0YSBmaWxlIGFuZCBzcGxpdCBpdHMgY29udGVudHMgdXAgaW50byBibG9ja3Mgb2YgZGF0YSBmb3IgdXNlIGluCisqIDxhIGhyZWY9VUNoYXJhY3Rlck5hbWUuaHRtbD5jb20uaWJtLmljdS5sYW5nLlVDaGFyYWN0ZXJOYW1lPC9hPi4KKyogPC9wPiAKKyogPHA+Rm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZvcm1hdCBvZiB1bmFtZXMuaWN1IHJlZmVyIHRvCisqIDxhIGhyZWY9b3NzLnNvZnR3YXJlLmlibS5jb20vaWN1NGovaWN1NGpodG1sL2NvbS9pYm0vaWN1L2xhbmcvcmVhZG1lLmh0bWw+CisqIFJlYWRNZTwvYT4uPFxwPgorKiA8cD51bmFtZXMuaWN1IHdoaWNoIGlzIGluIGJpZy1lbmRpYW4gZm9ybWF0IGlzIGphcmVkIHRvZ2V0aGVyIHdpdGggdGhpcyAKKyogcGFja2FnZS48L3A+CisqIEBhdXRob3IgU3luIFdlZSBRdWVrCisqIEBzaW5jZSByZWxlYXNlIDIuMSwgRmVicnVhcnkgMXN0IDIwMDIKKyogQGRyYWZ0IDIuMQorKi8KKworZmluYWwgY2xhc3MgVUNoYXJhY3Rlck5hbWVSZWFkZXIgaW1wbGVtZW50cyBJQ1VCaW5hcnkuQXV0aGVudGljYXRlCit7ICAgICAgCisgICAgLy8gcHVibGljIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIHB1YmxpYyBib29sZWFuIGlzRGF0YVZlcnNpb25BY2NlcHRhYmxlKGJ5dGUgdmVyc2lvbltdKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZlcnNpb25bMF0gPT0gREFUQV9GT1JNQVRfVkVSU0lPTl9bMF07CisgICAgfQorICAgIAorICAgIC8vIHByb3RlY3RlZCBjb25zdHJ1Y3RvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvKioKKyAgICAqIDxwPlByb3RlY3RlZCBjb25zdHJ1Y3Rvci48L3A+CisgICAgKiBAcGFyYW0gaW5wdXRTdHJlYW0gSUNVIHVwcm9wLmRhdCBmaWxlIGlucHV0IHN0cmVhbQorICAgICogQGV4Y2VwdGlvbiBJT0V4Y2VwdGlvbiB0aHJvdyBpZiBkYXRhIGZpbGUgZmFpbHMgYXV0aGVudGljYXRpb24gCisgICAgKiBAZHJhZnQgMi4xCisgICAgKi8KKyAgICBwcm90ZWN0ZWQgVUNoYXJhY3Rlck5hbWVSZWFkZXIoSW5wdXRTdHJlYW0gaW5wdXRTdHJlYW0pIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICB7CisgICAgICAgIElDVUJpbmFyeS5yZWFkSGVhZGVyKGlucHV0U3RyZWFtLCBEQVRBX0ZPUk1BVF9JRF8sIHRoaXMpOworICAgICAgICBtX2RhdGFJbnB1dFN0cmVhbV8gPSBuZXcgRGF0YUlucHV0U3RyZWFtKGlucHV0U3RyZWFtKTsKKyAgICB9CisgIAorICAgIC8vIHByb3RlY3RlZCBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgIAorICAgIC8qKgorICAgICogUmVhZCBhbmQgYnJlYWsgdXAgdGhlIHN0cmVhbSBvZiBkYXRhIHBhc3NlZCBpbiBhcyBhcmd1bWVudHMKKyAgICAqIGFuZCBmaWxscyB1cCBVQ2hhcmFjdGVyTmFtZS4KKyAgICAqIElmIHVuc3VjY2Vzc2Z1bCBmYWxzZSB3aWxsIGJlIHJldHVybmVkLgorICAgICogQHBhcmFtIGRhdGEgaW5zdGFuY2Ugb2YgZGF0YWJsb2NrCisgICAgKiBAZXhjZXB0aW9uIHRocm93biB3aGVuIHRoZXJlJ3MgYSBkYXRhIGVycm9yLgorICAgICovCisgICAgcHJvdGVjdGVkIHZvaWQgcmVhZChVQ2hhcmFjdGVyTmFtZSBkYXRhKSB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICB7CisgICAgICAgIC8vIHJlYWRpbmcgaW5kZXgKKyAgICAgICAgbV90b2tlbnN0cmluZ2luZGV4XyA9IG1fZGF0YUlucHV0U3RyZWFtXy5yZWFkSW50KCk7CisgICAgICAgIG1fZ3JvdXBpbmRleF8gICAgICAgPSBtX2RhdGFJbnB1dFN0cmVhbV8ucmVhZEludCgpOworICAgICAgICBtX2dyb3Vwc3RyaW5naW5kZXhfID0gbV9kYXRhSW5wdXRTdHJlYW1fLnJlYWRJbnQoKTsKKyAgICAgICAgbV9hbGduYW1lc2luZGV4XyAgICA9IG1fZGF0YUlucHV0U3RyZWFtXy5yZWFkSW50KCk7CisgICAgICAgIAorICAgICAgICAvLyByZWFkaW5nIHRva2VucworICAgICAgICBpbnQgY291bnQgPSBtX2RhdGFJbnB1dFN0cmVhbV8ucmVhZENoYXIoKTsKKyAgICAgICAgY2hhciB0b2tlbltdID0gbmV3IGNoYXJbY291bnRdOworICAgICAgICBmb3IgKGNoYXIgaSA9IDA7IGkgPCBjb3VudDsgaSArKykgeworICAgICAgICAgICAgdG9rZW5baV0gPSBtX2RhdGFJbnB1dFN0cmVhbV8ucmVhZENoYXIoKTsKKyAgICAgICAgfQorICAgICAgICBpbnQgc2l6ZSA9IG1fZ3JvdXBpbmRleF8gLSBtX3Rva2Vuc3RyaW5naW5kZXhfOworICAgICAgICBieXRlIHRva2Vuc3RyW10gPSBuZXcgYnl0ZVtzaXplXTsKKyAgICAgICAgbV9kYXRhSW5wdXRTdHJlYW1fLnJlYWRGdWxseSh0b2tlbnN0cik7CisgICAgICAgIGRhdGEuc2V0VG9rZW4odG9rZW4sIHRva2Vuc3RyKTsKKyAgICAgICAgCisgICAgICAgIC8vIHJlYWRpbmcgdGhlIGdyb3VwIGluZm9ybWF0aW9uIHJlY29yZHMKKyAgICAgICAgY291bnQgPSBtX2RhdGFJbnB1dFN0cmVhbV8ucmVhZENoYXIoKTsKKyAgICAgICAgZGF0YS5zZXRHcm91cENvdW50U2l6ZShjb3VudCwgR1JPVVBfSU5GT19TSVpFXyk7CisgICAgICAgIGNvdW50ICo9IEdST1VQX0lORk9fU0laRV87CisgICAgICAgIGNoYXIgZ3JvdXBbXSA9IG5ldyBjaGFyW2NvdW50XTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSArKykgeworICAgICAgICAgICAgZ3JvdXBbaV0gPSBtX2RhdGFJbnB1dFN0cmVhbV8ucmVhZENoYXIoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgc2l6ZSA9IG1fYWxnbmFtZXNpbmRleF8gLSBtX2dyb3Vwc3RyaW5naW5kZXhfOworICAgICAgICBieXRlIGdyb3Vwc3RyaW5nW10gPSBuZXcgYnl0ZVtzaXplXTsKKyAgICAgICAgbV9kYXRhSW5wdXRTdHJlYW1fLnJlYWRGdWxseShncm91cHN0cmluZyk7CisgICAgCisgICAgICAgIGRhdGEuc2V0R3JvdXAoZ3JvdXAsIGdyb3Vwc3RyaW5nKTsKKyAgICAgICAgCisgICAgICAgIGNvdW50ID0gbV9kYXRhSW5wdXRTdHJlYW1fLnJlYWRJbnQoKTsKKyAgICAgICAgVUNoYXJhY3Rlck5hbWUuQWxnb3JpdGhtTmFtZSBhbGdbXSA9IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFVDaGFyYWN0ZXJOYW1lLkFsZ29yaXRobU5hbWVbY291bnRdOworICAgICAKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSArKykKKyAgICAgICAgeworICAgICAgICAgICAgVUNoYXJhY3Rlck5hbWUuQWxnb3JpdGhtTmFtZSBhbiA9IHJlYWRBbGcoKTsKKyAgICAgICAgICAgIGlmIChhbiA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCJ1bmFtZXMuaWN1IHJlYWQgZXJyb3I6IEFsZ29yaXRobWljIG5hbWVzIGNyZWF0aW9uIGVycm9yIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhbGdbaV0gPSBhbjsKKyAgICAgICAgfQorICAgICAgICBkYXRhLnNldEFsZ29yaXRobShhbGcpOworICAgIH0KKyAgICAgIAorICAgIC8qKgorICAgICogPHA+Q2hlY2tpbmcgdGhlIGZpbGUgZm9yIHRoZSBjb3JyZWN0IGZvcm1hdC48L3A+CisgICAgKiBAcGFyYW0gZGF0YWZvcm1hdGlkCisgICAgKiBAcGFyYW0gZGF0YWZvcm1hdHZlcnNpbworICAgICogQHJldHVybiB0cnVlIGlmIHRoZSBmaWxlIGZvcm1hdCB2ZXJzaW9uIGlzIGNvcnJlY3QKKyAgICAqIEBkcmFmdCAyLjEKKyAgICAqLworICAgIHByb3RlY3RlZCBib29sZWFuIGF1dGhlbnRpY2F0ZShieXRlIGRhdGFmb3JtYXRpZFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlIGRhdGFmb3JtYXR2ZXJzaW9uW10pCisgICAgeworICAgICAgICByZXR1cm4gQXJyYXlzLmVxdWFscyhEQVRBX0ZPUk1BVF9JRF8sIGRhdGFmb3JtYXRpZCkgJiYKKyAgICAgICAgICAgICAgIEFycmF5cy5lcXVhbHMoREFUQV9GT1JNQVRfVkVSU0lPTl8sIGRhdGFmb3JtYXR2ZXJzaW9uKTsKKyAgICB9CisgICAgCisgICAgLy8gcHJpdmF0ZSB2YXJpYWJsZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAKKyAgICAvKioKKyAgICAqIERhdGEgaW5wdXQgc3RyZWFtIGZvciBuYW1lcyAKKyAgICAqLworICAgIHByaXZhdGUgRGF0YUlucHV0U3RyZWFtIG1fZGF0YUlucHV0U3RyZWFtXzsKKyAgICAvKioKKyAgICAqIFNpemUgb2YgdGhlIGdyb3VwIGluZm9ybWF0aW9uIGJsb2NrIGluIG51bWJlciBvZiBjaGFyCisgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1JPVVBfSU5GT19TSVpFXyA9IDM7CisKKyAgICAvKioKKyAgICAqIEluZGV4IG9mIHRoZSBvZmZzZXQgaW5mb3JtYXRpb24KKyAgICAqLworICAgIHByaXZhdGUgaW50IG1fdG9rZW5zdHJpbmdpbmRleF87CisgICAgcHJpdmF0ZSBpbnQgbV9ncm91cGluZGV4XzsKKyAgICBwcml2YXRlIGludCBtX2dyb3Vwc3RyaW5naW5kZXhfOworICAgIHByaXZhdGUgaW50IG1fYWxnbmFtZXNpbmRleF87CisgICAgICAKKyAgICAvKioKKyAgICAqIFNpemUgb2YgYW4gYWxnb3JpdGhtaWMgbmFtZSBpbmZvcm1hdGlvbiBncm91cAorICAgICogc3RhcnQgY29kZSBwb2ludCBzaXplICsgZW5kIGNvZGUgcG9pbnQgc2l6ZSArIHR5cGUgc2l6ZSArIHZhcmlhbnQgc2l6ZSArIAorICAgICogc2l6ZSBvZiBkYXRhIHNpemUKKyAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBBTEdfSU5GT19TSVpFXyA9IDEyOworICAgICAgCisgICAgLyoqCisgICAgKiBGaWxlIGZvcm1hdCB2ZXJzaW9uIGFuZCBpZCB0aGF0IHRoaXMgY2xhc3MgdW5kZXJzdGFuZHMuCisgICAgKiBObyBndWFyYW50ZWVzIGFyZSBtYWRlIGlmIGEgb2xkZXIgdmVyc2lvbiBpcyB1c2VkCisgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIERBVEFfRk9STUFUX1ZFUlNJT05fW10gPSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoYnl0ZSkweDEsIChieXRlKTB4MCwgKGJ5dGUpMHgwLCAoYnl0ZSkweDB9OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJ5dGUgREFUQV9GT1JNQVRfSURfW10gPSB7KGJ5dGUpMHg3NSwgKGJ5dGUpMHg2RSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ5dGUpMHg2MSwgKGJ5dGUpMHg2RH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIC8qKgorICAgICogQ29ycnVwdGVkIGVycm9yIHN0cmluZworICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIENPUlJVUFRFRF9EQVRBX0VSUk9SXyA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEYXRhIGNvcnJ1cHRlZCBpbiBjaGFyYWN0ZXIgbmFtZSBkYXRhIGZpbGUiOworICAgICAgCisgICAgLy8gcHJpdmF0ZSBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgCisgICAgLyoqCisgICAgKiBSZWFkcyBhbiBpbmRpdmlkdWFsIHJlY29yZCBvZiBBbGdvcml0aG1OYW1lcworICAgICogQHJldHVybiBhbiBpbnN0YW5jZSBvZiBBbGdvcml0aE5hbWVzIGlmIHJlYWQgaXMgc3VjY2Vzc2Z1bCBvdGhlcndpc2UgbnVsbAorICAgICogQGV4Y2VwdGlvbiB0aHJvd24gd2hlbiBmaWxlIHJlYWQgZXJyb3Igb2NjdXJzIG9yIGRhdGEgaXMgY29ycnVwdGVkCisgICAgKi8KKyAgICBwcml2YXRlIFVDaGFyYWN0ZXJOYW1lLkFsZ29yaXRobU5hbWUgcmVhZEFsZygpIHRocm93cyBJT0V4Y2VwdGlvbgorICAgIHsKKyAgICAgICAgVUNoYXJhY3Rlck5hbWUuQWxnb3JpdGhtTmFtZSByZXN1bHQgPSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBVQ2hhcmFjdGVyTmFtZS5BbGdvcml0aG1OYW1lKCk7CisgICAgICAgIGludCByYW5nZXN0YXJ0ID0gbV9kYXRhSW5wdXRTdHJlYW1fLnJlYWRJbnQoKTsKKyAgICAgICAgaW50IHJhbmdlZW5kICAgPSBtX2RhdGFJbnB1dFN0cmVhbV8ucmVhZEludCgpOworICAgICAgICBieXRlIHR5cGUgICAgICA9IG1fZGF0YUlucHV0U3RyZWFtXy5yZWFkQnl0ZSgpOworICAgICAgICBieXRlIHZhcmlhbnQgICA9IG1fZGF0YUlucHV0U3RyZWFtXy5yZWFkQnl0ZSgpOworICAgICAgICBpZiAoIXJlc3VsdC5zZXRJbmZvKHJhbmdlc3RhcnQsIHJhbmdlZW5kLCB0eXBlLCB2YXJpYW50KSkgeworICAgICAgICAJcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgaW50IHNpemUgPSBtX2RhdGFJbnB1dFN0cmVhbV8ucmVhZENoYXIoKTsKKyAgICAgICAgaWYgKHR5cGUgPT0gVUNoYXJhY3Rlck5hbWUuQWxnb3JpdGhtTmFtZS5UWVBFXzFfKQorICAgICAgICB7CisgICAgICAgICAgICBjaGFyIGZhY3RvcltdID0gbmV3IGNoYXJbdmFyaWFudF07CisgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHZhcmlhbnQ7IGogKyspIHsKKyAgICAgICAgICAgICAgICBmYWN0b3Jbal0gPSBtX2RhdGFJbnB1dFN0cmVhbV8ucmVhZENoYXIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgcmVzdWx0LnNldEZhY3RvcihmYWN0b3IpOworICAgICAgICAgICAgc2l6ZSAtPSAodmFyaWFudCA8PCAxKTsKKyAgICAgICAgfQorICAgICAgICAgIAorICAgICAgICBTdHJpbmdCdWZmZXIgcHJlZml4ID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBjaGFyIGMgPSAoY2hhcikobV9kYXRhSW5wdXRTdHJlYW1fLnJlYWRCeXRlKCkgJiAweDAwRkYpOworICAgICAgICB3aGlsZSAoYyAhPSAwKQorICAgICAgICB7CisgICAgICAgICAgICBwcmVmaXguYXBwZW5kKGMpOworICAgICAgICAgICAgYyA9IChjaGFyKShtX2RhdGFJbnB1dFN0cmVhbV8ucmVhZEJ5dGUoKSAmIDB4MDBGRik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJlc3VsdC5zZXRQcmVmaXgocHJlZml4LnRvU3RyaW5nKCkpOworICAgICAgICAKKyAgICAgICAgc2l6ZSAtPSAoQUxHX0lORk9fU0laRV8gKyBwcmVmaXgubGVuZ3RoKCkgKyAxKTsKKyAgICAgICAgCisgICAgICAgIGlmIChzaXplID4gMCkKKyAgICAgICAgeworICAgICAgICAgICAgYnl0ZSBzdHJpbmdbXSA9IG5ldyBieXRlW3NpemVdOworICAgICAgICAgICAgbV9kYXRhSW5wdXRTdHJlYW1fLnJlYWRGdWxseShzdHJpbmcpOworICAgICAgICAgICAgcmVzdWx0LnNldEZhY3RvclN0cmluZyhzdHJpbmcpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9VQ2hhcmFjdGVyUHJvcGVydHkuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL1VDaGFyYWN0ZXJQcm9wZXJ0eS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3MDkxOTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9VQ2hhcmFjdGVyUHJvcGVydHkuamF2YQpAQCAtMCwwICsxLDE5MjEgQEAKKy8qKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAkU291cmNlOiAKKyogICAgICAgICAvdXNyL2N2cy9pY3U0ai9pY3U0ai9zcmMvY29tL2libS9pY3UvdGV4dC9VQ2hhcmFjdGVyUHJvcGVydHlEQi5qYXZhICQgCisqICREYXRlOiAyMDAyLzEyLzExIDIxOjE5OjQxICQgCisqICRSZXZpc2lvbjogMS4yMSAkCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LmltcGw7CisKK2ltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uQnVmZmVyZWRJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CitpbXBvcnQgY29tLmlibS5pY3UudXRpbC5WZXJzaW9uSW5mbzsKK2ltcG9ydCBjb20uaWJtLmljdS5sYW5nLlVDaGFyYWN0ZXJDYXRlZ29yeTsKK2ltcG9ydCBjb20uaWJtLmljdS5sYW5nLlVQcm9wZXJ0eTsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0Lio7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC5VVEYxNjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0LkJyZWFrSXRlcmF0b3I7CisKKy8qKgorKiA8cD5JbnRlcm5hbCBjbGFzcyB1c2VkIGZvciBVbmljb2RlIGNoYXJhY3RlciBwcm9wZXJ0eSBkYXRhYmFzZS48L3A+CisqIDxwPlRoaXMgY2xhc3NlcyBzdG9yZSBiaW5hcnkgZGF0YSByZWFkIGZyb20gdXByb3BzLmljdS4gCisqIEl0IGRvZXMgbm90IGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gcGFyc2UgdGhlIGRhdGEgaW50byBtb3JlIGhpZ2gtbGV2ZWwgCisqIGluZm9ybWF0aW9uLiBJdCBvbmx5IHJldHVybnMgYnl0ZXMgb2YgaW5mb3JtYXRpb24gd2hlbiByZXF1aXJlZC48L3A+CisqIDxwPkR1ZSB0byB0aGUgZm9ybSBtb3N0IGNvbW1vbmx5IHVzZWQgZm9yIHJldHJpZXZhbCwgYXJyYXkgb2YgY2hhciBpcyB1c2VkCisqIHRvIHN0b3JlIHRoZSBiaW5hcnkgZGF0YS48L3A+CisqIDxwPlVDaGFyYWN0ZXJQcm9wZXJ0eURCIGFsc28gY29udGFpbnMgaW5mb3JtYXRpb24gb24gYWNjZXNzaW5nIGluZGV4ZXMgdG8gCisqIHNpZ25pZmljYW50IHBvaW50cyBpbiB0aGUgYmluYXJ5IGRhdGEuPC9wPgorKiA8cD5SZXNwb25zaWJpbGl0eSBmb3IgbW9sZGluZyB0aGUgYmluYXJ5IGRhdGEgaW50byBtb3JlIG1lYW5pbmcgZm9ybSBsaWVzIG9uIAorKiA8YSBocmVmPVVDaGFyYWN0ZXIuaHRtbD5VQ2hhcmFjdGVyPC9hPi48L3A+CisqIEBhdXRob3IgU3luIFdlZSBRdWVrCisqIEBzaW5jZSByZWxlYXNlIDIuMSwgZmVicnVhcnkgMXN0IDIwMDIKKyogQGRyYWZ0IDIuMQorKi8KKworcHVibGljIGZpbmFsIGNsYXNzIFVDaGFyYWN0ZXJQcm9wZXJ0eSBpbXBsZW1lbnRzIFRyaWUuRGF0YU1hbmlwdWxhdGUKK3sKKwkvLyBwdWJsaWMgZGF0YSBtZW1iZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJCisJLyoqCisgICAgKiBUcmllIGRhdGEKKyAgICAqLworICAgIHB1YmxpYyBDaGFyVHJpZSBtX3RyaWVfOyAgICAKKyAgICAvKioKKyAgICAqIENoYXJhY3RlciBwcm9wZXJ0eSB0YWJsZQorICAgICovCisgICAgcHVibGljIGludCBtX3Byb3BlcnR5X1tdOworICAgIC8qKgorICAgICogVW5pY29kZSB2ZXJzaW9uCisgICAgKi8KKyAgICBwdWJsaWMgVmVyc2lvbkluZm8gbV91bmljb2RlVmVyc2lvbl87CisgICAgLyoqCisgICAgICogRXhjZXB0aW9uIGluZGljYXRvciBmb3IgdXBwZXJjYXNlIHR5cGUKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBFWENfVVBQRVJDQVNFXyA9IDA7CisgICAgLyoqCisgICAgICogRXhjZXB0aW9uIGluZGljYXRvciBmb3IgbG93ZXJjYXNlIHR5cGUKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBFWENfTE9XRVJDQVNFXyA9IDE7CisgICAgLyoqCisgICAgICogRXhjZXB0aW9uIGluZGljYXRvciBmb3IgdGl0bGVjYXNlIHR5cGUKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBFWENfVElUTEVDQVNFXyA9IDI7CisgICAgLyoqCisgICAgICogRXhjZXB0aW9uIGluZGljYXRvciBmb3IgZGlnaXQgdHlwZQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEVYQ19VTlVTRURfID0gMzsKKyAgICAvKioKKyAgICAgKiBFeGNlcHRpb24gaW5kaWNhdG9yIGZvciBudW1lcmljIHR5cGUKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBFWENfTlVNRVJJQ19WQUxVRV8gPSA0OworICAgIC8qKgorICAgICAqIEV4Y2VwdGlvbiBpbmRpY2F0b3IgZm9yIGRlbm9taW5hdG9yIHR5cGUKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBFWENfREVOT01JTkFUT1JfVkFMVUVfID0gNTsKKyAgICAvKioKKyAgICAgKiBFeGNlcHRpb24gaW5kaWNhdG9yIGZvciBtaXJyb3IgdHlwZQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEVYQ19NSVJST1JfTUFQUElOR18gPSA2OworICAgIC8qKgorICAgICAqIEV4Y2VwdGlvbiBpbmRpY2F0b3IgZm9yIHNwZWNpYWwgY2FzaW5nIHR5cGUKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBFWENfU1BFQ0lBTF9DQVNJTkdfID0gNzsKKyAgICAvKioKKyAgICAgKiBFeGNlcHRpb24gaW5kaWNhdG9yIGZvciBjYXNlIGZvbGRpbmcgdHlwZQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEVYQ19DQVNFX0ZPTERJTkdfID0gODsKKyAgICAvKioKKyAgICAgKiBFWENfQ09NQklOSU5HX0NMQVNTXyBpcyBub3QgZm91bmQgaW4gSUNVLgorICAgICAqIFVzZWQgdG8gcmV0cmlldmUgdGhlIGNvbWJpbmluZyBjbGFzcyBvZiB0aGUgY2hhcmFjdGVyIGluIHRoZSBleGNlcHRpb24KKyAgICAgKiB2YWx1ZQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEVYQ19DT01CSU5JTkdfQ0xBU1NfID0gOTsKKyAgICAvKioKKyAgICAgKiBNYXhpbXVtIG51bWJlciBvZiBleHBhbnNpb24gZm9yIGEgY2FzZSBtYXBwaW5nCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTUFYX0NBU0VfTUFQX1NJWkUgPSAxMDsgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgLyoqCisgICAgKiBUdXJraXNoIElTTyA2MzkgMiBjaGFyYWN0ZXIgY29kZQorICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVFVSS0lTSF8gPSAidHIiOyAgCisgICAgLyoqCisgICAgKiBBemVyYmFpamFuaSBJU08gNjM5IDIgY2hhcmFjdGVyIGNvZGUKKyAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFaRVJCQUlKQU5JXyA9ICJheiI7ICAgIAorICAgIC8qKgorICAgICogTGl0aHVhbmlhbiBJU08gNjM5IDIgY2hhcmFjdGVyIGNvZGUKKyAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIExJVEhVQU5JQU5fID0gImx0IjsgICAgICAgICAgICAgICAgICAKKyAgICAvKioKKyAgICAqIExhdGluIGNhcGl0YWwgbGV0dGVyIGkgd2l0aCBkb3QgYWJvdmUKKyAgICAqLyAKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGNoYXIgTEFUSU5fQ0FQSVRBTF9MRVRURVJfSV9XSVRIX0RPVF9BQk9WRV8gPSAweDEzMDsKKyAgICAvKioKKyAgICAqIExhdGluIHNtYWxsIGxldHRlciBpIHdpdGggZG90IGFib3ZlCisgICAgKi8gCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBjaGFyIExBVElOX1NNQUxMX0xFVFRFUl9ET1RMRVNTX0lfID0gMHgxMzE7CisgICAgLyoqCisgICAgKiBMYXRpbiBsb3dlcmNhc2UgaQorICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBjaGFyIExBVElOX1NNQUxMX0xFVFRFUl9JXyA9IDB4Njk7CisgICAgLyoqCisgICAgKiBDaGFyYWN0ZXIgdHlwZSBtYXNrCisgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBUWVBFX01BU0sgPSAweDFGOyAKKyAgICAvKioKKyAgICAqIEV4Y2VwdGlvbiB0ZXN0IG1hc2sKKyAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEVYQ0VQVElPTl9NQVNLID0gMHgyMDsgCisgICAgLyoqCisgICAgKiBNaXJyb3IgdGVzdCBtYXNrCisgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNSVJST1JfTUFTSyA9IDEgPDwgMTE7CisgICAgCisgICAgLy8gcHVibGljIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgCisgICAgLyoqCisgICAgKiBDYWxsZWQgYnkgY29tLmlibS5pY3UudXRpbC5UcmllIHRvIGV4dHJhY3QgZnJvbSBhIGxlYWQgc3Vycm9nYXRlJ3MgCisgICAgKiBkYXRhIHRoZSBpbmRleCBhcnJheSBvZmZzZXQgb2YgdGhlIGluZGV4ZXMgZm9yIHRoYXQgbGVhZCBzdXJyb2dhdGUuCisgICAgKiBAcGFyYW0gcHJvcGVydHkgZGF0YSB2YWx1ZSBmb3IgYSBzdXJyb2dhdGUgZnJvbSB0aGUgdHJpZSwgaW5jbHVkaW5nIHRoZQorICAgICogICAgICAgIGZvbGRpbmcgb2Zmc2V0CisgICAgKiBAcmV0dXJuIGRhdGEgb2Zmc2V0IG9yIDAgaWYgdGhlcmUgaXMgbm8gZGF0YSBmb3IgdGhlIGxlYWQgc3Vycm9nYXRlCisgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldEZvbGRpbmdPZmZzZXQoaW50IHZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKCh2YWx1ZSAmIFNVUFBMRU1FTlRBUllfRk9MRF9JTkRJQ0FUT1JfTUFTS18pICE9IDApIHsKKyAgICAgICAgICAgIHJldHVybiAodmFsdWUgJiBTVVBQTEVNRU5UQVJZX0ZPTERfT0ZGU0VUX01BU0tfKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICogR2V0cyB0aGUgcHJvcGVydHkgdmFsdWUgYXQgdGhlIGluZGV4CisgICAgKiBAcGFyYW0gY2ggY29kZSBwb2ludCB3aG9zZSBwcm9wZXJ0eSB2YWx1ZSBpcyB0byBiZSByZXRyaWV2ZWQKKyAgICAqIEByZXR1cm4gcHJvcGVydHkgdmFsdWUgb2YgY29kZSBwb2ludAorICAgICovCisgICAgcHVibGljIGludCBnZXRQcm9wZXJ0eShpbnQgY2gpCisgICAgeworICAgICAgICByZXR1cm4gbV9wcm9wZXJ0eV9bbV90cmllXy5nZXRDb2RlUG9pbnRWYWx1ZShjaCldOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAqIEdldHRpbmcgdGhlIHNpZ25lZCBudW1lcmljIHZhbHVlIG9mIGEgY2hhcmFjdGVyIGVtYmVkZGVkIGluIHRoZSBwcm9wZXJ0eQorICAgICogYXJndW1lbnQKKyAgICAqIEBwYXJhbSBwcm9wIHRoZSBjaGFyYWN0ZXIKKyAgICAqIEByZXR1cm4gc2lnbmVkIG51bWJlcmljIHZhbHVlCisgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludCBnZXRTaWduZWRWYWx1ZShpbnQgcHJvcCkKKyAgICB7CisgICAgICAgIHJldHVybiAocHJvcCA+PiBWQUxVRV9TSElGVF8pOworICAgIH0KKyAgICAgIAorICAgIC8qKgorICAgICogR2V0dGluZyB0aGUgZXhjZXB0aW9uIGluZGV4IGZvciBhcmd1bWVudCBwcm9wZXJ0eQorICAgICogQHBhcmFtIHByb3AgY2hhcmFjdGVyIHByb3BlcnR5IAorICAgICogQHJldHVybiBleGNlcHRpb24gaW5kZXggCisgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludCBnZXRFeGNlcHRpb25JbmRleChpbnQgcHJvcCkKKyAgICB7CisgICAgICAgIHJldHVybiAocHJvcCA+PiBWQUxVRV9TSElGVF8pICYgVU5TSUdORURfVkFMVUVfTUFTS19BRlRFUl9TSElGVF87CisgICAgfQorICAgIAorICAgIC8qKgorICAgICogR2V0dGluZyB0aGUgdW5zaWduZWQgbnVtZXJpYyB2YWx1ZSBvZiBhIGNoYXJhY3RlciBlbWJlZGRlZCBpbiB0aGUgcHJvcGVydHkKKyAgICAqIGFyZ3VtZW50CisgICAgKiBAcGFyYW0gcHJvcCB0aGUgY2hhcmFjdGVyCisgICAgKiBAcmV0dXJuIHVuc2lnbmVkIG51bWJlcmljIHZhbHVlCisgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludCBnZXRVbnNpZ25lZFZhbHVlKGludCBwcm9wKQorICAgIHsKKyAgICAgICAgcmV0dXJuIChwcm9wID4+IFZBTFVFX1NISUZUXykgJiBVTlNJR05FRF9WQUxVRV9NQVNLX0FGVEVSX1NISUZUXzsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBleGNlcHRpb24gdmFsdWUgcGFzc2VkIGluIGhhcyB0aGUga2luZCBvZiBpbmZvcm1hdGlvbgorICAgICogd2hpY2ggdGhlIGluZGljYXRvciB3YW50cywgZS5nIGlmIHRoZSBleGNlcHRpb24gdmFsdWUgY29udGFpbnMgdGhlIGRpZ2l0CisgICAgKiB2YWx1ZSBvZiB0aGUgY2hhcmFjdGVyCisgICAgKiBAcGFyYW0gaW5kZXggZXhjZXB0aW9uIGluZGV4CisgICAgKiBAcGFyYW0gaW5kaWNhdG9yIHR5cGUgaW5kaWNhdG9yCisgICAgKiBAcmV0dXJuIHRydWUgaWYgdHlwZSB2YWx1ZSBleGlzdAorICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaGFzRXhjZXB0aW9uVmFsdWUoaW50IGluZGV4LCBpbnQgaW5kaWNhdG9yKSAKKyAgICB7CisgICAgICAgIHJldHVybiAobV9leGNlcHRpb25fW2luZGV4XSAmICgxIDw8IGluZGljYXRvcikpICE9IDA7CisgICAgfQorICAgICAgCisgICAgLyoqCisgICAgKiBHZXRzIHRoZSBleGNlcHRpb24gdmFsdWUgYXQgdGhlIGluZGV4LCBhc3N1bWluZyB0aGF0IGRhdGEgdHlwZSBpcyAKKyAgICAqIGF2YWlsYWJsZS4gUmVzdWx0IGlzIHVuZGVmaW5lZCBpZiBkYXRhIGlzIG5vdCBhdmFpbGFibGUuIFVzZSAKKyAgICAqIGhhc0V4Y2VwdGlvblZhbHVlKCkgdG8gZGV0ZXJtaW5lIGRhdGEncyBhdmFpbGFiaWxpdHkuCisgICAgKiBAcGFyYW0gaW5kZXggCisgICAgKiBAcGFyYW0gZXhjZXB0aW9uIGRhdGEgdHlwZQorICAgICogQHJldHVybiBleGNlcHRpb24gZGF0YSB0eXBlIHZhbHVlIGF0IGluZGV4CisgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldEV4Y2VwdGlvbihpbnQgaW5kZXgsIGludCBldHlwZSkKKyAgICB7CisgICAgICAgIC8vIGNvbnRhaW5lZCBpbiBleGNlcHRpb24gZGF0YQorICAgICAgICBpbnQgZXZhbHVlID0gbV9leGNlcHRpb25fW2luZGV4XTsKKyAgICAgICAgCisgICAgICAgIHN3aXRjaCAoZXR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgRVhDX0NPTUJJTklOR19DTEFTU18gOgorICAgICAgICAgICAgICAgIHJldHVybiBldmFsdWU7CisgICAgICAgICAgICBkZWZhdWx0IDoKKyAgICAgICAgICAgICAgICBpbmRleCArKzsKKyAgICAgICAgICAgICAgICAvLyBjb250YWluZWQgaW4gdGhlIGV4Y2VwdGlvbiBkaWdpdCBhZGRyZXNzCisgICAgICAgICAgICAgICAgaW5kZXggPSBhZGRFeGNlcHRpb25PZmZzZXQoZXZhbHVlLCBldHlwZSwgaW5kZXgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBtX2V4Y2VwdGlvbl9baW5kZXhdOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAqIEdldHMgdGhlIGZvbGRlZCBjYXNlIHZhbHVlIGF0IHRoZSBpbmRleAorICAgICogQHBhcmFtIGluZGV4IG9mIHRoZSBjYXNlIHZhbHVlIHRvIGJlIHJldHJpZXZlZAorICAgICogQHJldHVybiBmb2xkZWQgY2FzZSB2YWx1ZSBhdCBpbmRleAorICAgICovCisgICAgcHVibGljIGludCBnZXRGb2xkQ2FzZShpbnQgaW5kZXgpCisgICAgeworICAgICAgICBjaGFyIHNpbmdsZSA9IG1fY2FzZV9baW5kZXhdOworICAgICAgICBpZiAoVVRGMTYuTEVBRF9TVVJST0dBVEVfTUlOX1ZBTFVFIDw9IHNpbmdsZSAmJiAKKyAgICAgICAgICAgIHNpbmdsZSA8PSBVVEYxNi5UUkFJTF9TVVJST0dBVEVfTUFYX1ZBTFVFKSB7CisgICAgICAgIC8vIENvbnZlcnQgdGhlIFVURi0xNiBzdXJyb2dhdGUgcGFpciBpZiBuZWNlc3NhcnkuCisgICAgICAgIC8vIEZvciBzaW1wbGljaXR5IGluIHVzYWdlLCBhbmQgYmVjYXVzZSB0aGUgZnJlcXVlbmN5IG9mIHBhaXJzIGlzIGxvdywKKyAgICAgICAgLy8gbG9vayBib3RoIGRpcmVjdGlvbnMuCisgICAgICAgICAgICAgICAgICAKKwkgICAgICAgIGlmIChzaW5nbGUgPD0gVVRGMTYuTEVBRF9TVVJST0dBVEVfTUFYX1ZBTFVFKSB7CisJICAgICAgICAgICAgY2hhciB0cmFpbCA9IG1fY2FzZV9baW5kZXggKyAxXTsKKwkgICAgICAgICAgICBpZiAoVVRGMTYuTEVBRF9TVVJST0dBVEVfTUlOX1ZBTFVFIDw9IHRyYWlsICYmIAorCQkgICAgICAgICAgICB0cmFpbCA8PSBVVEYxNi5UUkFJTF9TVVJST0dBVEVfTUFYX1ZBTFVFKSB7CisJICAgICAgICAgICAgICAgIHJldHVybiBnZXRSYXdTdXBwbGVtZW50YXJ5KHNpbmdsZSwgdHJhaWwpOworCSAgICAgICAgICAgIH0KKwkgICAgICAgIH0gCisJICAgICAgICBlbHNlIAorCSAgICAgICAgeyAKKwkgICAgICAgICAgICBjaGFyIGxlYWQgPSBtX2Nhc2VfW2luZGV4IC0gMV07CisJICAgICAgICAgICAgaWYgKFVURjE2LkxFQURfU1VSUk9HQVRFX01JTl9WQUxVRSA8PSBsZWFkICYmIAorCQkgICAgICAgICAgICBsZWFkIDw9IFVURjE2LkxFQURfU1VSUk9HQVRFX01BWF9WQUxVRSkgeworCSAgICAgICAgICAgICAgICByZXR1cm4gZ2V0UmF3U3VwcGxlbWVudGFyeShsZWFkLCBzaW5nbGUpOworCSAgICAgICAgICAgIH0KKwkgICAgICAgIH0KKwkgICAgfQorCSAgICByZXR1cm4gc2luZ2xlOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAqIEdldHMgdGhlIGZvbGRlZCBjYXNlIHZhbHVlIGF0IHRoZSBpbmRleAorICAgICogQHBhcmFtIGluZGV4IG9mIHRoZSBjYXNlIHZhbHVlIHRvIGJlIHJldHJpZXZlZAorICAgICogQHBhcmFtIGNvdW50IG51bWJlciBvZiBjaGFyYWN0ZXJzIHRvIHJldHJpZXZlCisgICAgKiBAcGFyYW0gYnVmZmVyIHN0cmluZyBidWZmZXIgdG8gYWRkIHJlc3VsdCB0bworICAgICovCisgICAgcHVibGljIHZvaWQgZ2V0Rm9sZENhc2UoaW50IGluZGV4LCBpbnQgY291bnQsIFN0cmluZ0J1ZmZlciBzdHIpIAorICAgIHsKKyAgICAgICAgLy8gZmlyc3QgMiBjaGFycyBhcmUgZm9yIHRoZSBzaW1wbGUgbWFwcGluZ3MKKyAgICAgICAgaW5kZXggKz0gMjsKKyAgICAgICAgd2hpbGUgKGNvdW50ID4gMCkgeworICAgICAgICAJc3RyLmFwcGVuZChtX2Nhc2VfW2luZGV4XSk7CisgICAgICAgIAlpbmRleCArKzsKKyAgICAgICAgCWNvdW50IC0tOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICogR2V0cyB0aGUgdXBwZXIgY2FzZSB2YWx1ZSBhdCB0aGUgaW5kZXgKKyAgICAqIEBwYXJhbSBpbmRleCBvZiB0aGUgY2FzZSB2YWx1ZSB0byBiZSByZXRyaWV2ZWQKKyAgICAqIEBwYXJhbSBidWZmZXIgc3RyaW5nIGJ1ZmZlciB0byBhZGQgcmVzdWx0IHRvCisgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBnZXRVcHBlckNhc2UoaW50IGluZGV4LCBTdHJpbmdCdWZmZXIgYnVmZmVyKQorICAgIHsKKyAgICAJaW50IGNvdW50ID0gbV9jYXNlX1tpbmRleF07CisgICAgICAgIC8vIGxhc3QgNSBiaXRzIG9mIHRoZSBmaXJzdCBjaGFyIGluIG1fY2FzZV8gZ2l2ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSAKKyAgICAgICAgLy8gYWx0ZXJuYXRlIHVwcGVyY2FzZSBjaGFyYWN0ZXJzCisgICAgICAgIGluZGV4ICs9IChjb3VudCAmIExBU1RfNV9CSVRfTUFTS18pICsgMTsKKyAgICAgICAgY291bnQgPSAoY291bnQgPj4gU0hJRlRfNV8pICYgTEFTVF81X0JJVF9NQVNLXzsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBjb3VudDsgaiArKykgeworICAgICAgICAJYnVmZmVyLmFwcGVuZChtX2Nhc2VfW2luZGV4ICsgal0pOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICogR2V0cyB0aGUgdXBwZXIgY2FzZSB2YWx1ZSBhdCB0aGUgaW5kZXgKKyAgICAqIEBwYXJhbSBpbmRleCBvZiB0aGUgY2FzZSB2YWx1ZSB0byBiZSByZXRyaWV2ZWQKKyAgICAqIEBwYXJhbSBidWZmZXIgc3RyaW5nIGJ1ZmZlciB0byBhZGQgcmVzdWx0IHRvCisgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBnZXRUaXRsZUNhc2UoaW50IGluZGV4LCBTdHJpbmdCdWZmZXIgYnVmZmVyKQorICAgIHsKKyAgICAgICAgaW50IGNvdW50ID0gbV9jYXNlX1tpbmRleF07CisgICAgICAgIC8vIGxhc3QgNSBiaXRzIG9mIHRoZSBmaXJzdCBjaGFyIGluIG1fY2FzZV8gZ2l2ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSAKKyAgICAgICAgLy8gYWx0ZXJuYXRlIHVwcGVyY2FzZSBjaGFyYWN0ZXJzCisgICAgICAgIGluZGV4ICs9IChjb3VudCAmIExBU1RfNV9CSVRfTUFTS18pICsgMSArIAorICAgICAgICAgICAgICAgICAoKGNvdW50ID4+IFNISUZUXzVfKSAmIExBU1RfNV9CSVRfTUFTS18pOworICAgICAgICBjb3VudCA9IChjb3VudCA+PiBTSElGVF8xMF8pICYgTEFTVF81X0JJVF9NQVNLXzsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBjb3VudDsgaiArKykgeworICAgICAgICAJYnVmZmVyLmFwcGVuZChtX2Nhc2VfW2luZGV4ICsgal0pOworICAgICAgICB9CisgICAgfQorICAgICAgCisgICAgLyoqCisgICAgKiBHZXRzIHRoZSBsb3dlciBjYXNlIHZhbHVlIGF0IHRoZSBpbmRleAorICAgICogQHBhcmFtIGluZGV4IG9mIHRoZSBjYXNlIHZhbHVlIHRvIGJlIHJldHJpZXZlZAorICAgICogQHBhcmFtIGJ1ZmZlciBzdHJpbmcgYnVmZmVyIHRvIGFkZCByZXN1bHQgdG8KKyAgICAqLworICAgIHB1YmxpYyB2b2lkIGdldExvd2VyQ2FzZShpbnQgaW5kZXgsIFN0cmluZ0J1ZmZlciBidWZmZXIpCisgICAgeworICAgICAgICBpbnQgY291bnQgPSBtX2Nhc2VfW2luZGV4XSAmIExBU1RfNV9CSVRfTUFTS187CisgICAgICAgIC8vIGxhc3QgNSBiaXRzIG9mIHRoZSBmaXJzdCBjaGFyIGluIG1fY2FzZV8gZ2l2ZXMgdGhlIHNpemUgb2YgdGhlIAorICAgICAgICAvLyBsb3dlcmNhc2UgY2hhcmFjdGVycworICAgICAgICBpbmRleCArKzsKKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBjb3VudDsgaiArKykgeworICAgICAgICAJYnVmZmVyLmFwcGVuZChtX2Nhc2VfW2luZGV4ICsgal0pOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEdldHMgdGhlIHVuaWNvZGUgYWRkaXRpb25hbCBwcm9wZXJ0aWVzLgorICAgICAqIEMgdmVyc2lvbiBnZXRVbmljb2RlUHJvcGVydGllcy4KKyAgICAgKiBAcGFyYW0gY29kZXBvaW50IGNvZGVwb2ludCB3aG9zZSBhZGRpdGlvbmFsIHByb3BlcnRpZXMgaXMgdG8gYmUgCisgICAgICogICAgICAgICAgICAgICAgICByZXRyaWV2ZWQKKyAgICAgKiBAcGFyYW0gY29sdW1uCisgICAgICogQHJldHVybiB1bmljb2RlIHByb3BlcnRpZXMKKyAgICAgKi8gCisgICAJcHVibGljIGludCBnZXRBZGRpdGlvbmFsKGludCBjb2RlcG9pbnQsIGludCBjb2x1bW4pIHsgCisgICAgICAgIGlmIChjb2x1bW4gPT0gLTEpIHsKKyAgICAgICAgICAgIHJldHVybiBnZXRQcm9wZXJ0eShjb2RlcG9pbnQpOworICAgICAgICB9CisgICAJCWlmIChjb2x1bW4gPCAwIHx8IGNvbHVtbiA+PSBtX2FkZGl0aW9uYWxDb2x1bW5zQ291bnRfKSB7IAorICAgICAgICAgICByZXR1cm4gMDsgCisgICAgICAgfSAKKyAgICAgICByZXR1cm4gbV9hZGRpdGlvbmFsVmVjdG9yc19bCisgICAgICAgICAgICAgICAgICAgICBtX2FkZGl0aW9uYWxUcmllXy5nZXRDb2RlUG9pbnRWYWx1ZShjb2RlcG9pbnQpICsgY29sdW1uXTsgCisgICAJfSAKKyAgIAkKKyAgICBzdGF0aWMgZmluYWwgaW50IE1ZX01BU0sgPSBVQ2hhcmFjdGVyUHJvcGVydHkuVFlQRV9NQVNLCisgICAgICAgICYgKCgxPDxVQ2hhcmFjdGVyQ2F0ZWdvcnkuVVBQRVJDQVNFX0xFVFRFUikgfAorICAgICAgICAgICAgKDE8PFVDaGFyYWN0ZXJDYXRlZ29yeS5MT1dFUkNBU0VfTEVUVEVSKSB8IAorICAgICAgICAgICAgKDE8PFVDaGFyYWN0ZXJDYXRlZ29yeS5USVRMRUNBU0VfTEVUVEVSKSB8IAorICAgICAgICAgICAgKDE8PFVDaGFyYWN0ZXJDYXRlZ29yeS5NT0RJRklFUl9MRVRURVIpIHwKKyAgICAgICAgICAgICgxPDxVQ2hhcmFjdGVyQ2F0ZWdvcnkuT1RIRVJfTEVUVEVSKSk7CisKKworICAgCS8qKgorICAgICAqIDxwPkdldCB0aGUgImFnZSIgb2YgdGhlIGNvZGUgcG9pbnQuPC9wPgorICAgICAqIDxwPlRoZSAiYWdlIiBpcyB0aGUgVW5pY29kZSB2ZXJzaW9uIHdoZW4gdGhlIGNvZGUgcG9pbnQgd2FzIGZpcnN0CisgICAgICogZGVzaWduYXRlZCAoYXMgYSBub24tY2hhcmFjdGVyIG9yIGZvciBQcml2YXRlIFVzZSkgb3IgYXNzaWduZWQgYSAKKyAgICAgKiBjaGFyYWN0ZXIuPC9wPgorICAgICAqIDxwPlRoaXMgY2FuIGJlIHVzZWZ1bCB0byBhdm9pZCBlbWl0dGluZyBjb2RlIHBvaW50cyB0byByZWNlaXZpbmcgCisgICAgICogcHJvY2Vzc2VzIHRoYXQgZG8gbm90IGFjY2VwdCBuZXdlciBjaGFyYWN0ZXJzLjwvcD4KKyAgICAgKiA8cD5UaGUgZGF0YSBpcyBmcm9tIHRoZSBVQ0QgZmlsZSBEZXJpdmVkQWdlLnR4dC48L3A+CisgICAgICogPHA+VGhpcyBBUEkgZG9lcyBub3QgY2hlY2sgdGhlIHZhbGlkaXR5IG9mIHRoZSBjb2RlcG9pbnQuPC9wPgorICAgICAqIEBwYXJhbSBjaCBUaGUgY29kZSBwb2ludC4KKyAgICAgKiBAcmV0dXJuIHRoZSBVbmljb2RlIHZlcnNpb24gbnVtYmVyCisgICAgICogQGRyYWZ0IElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgVmVyc2lvbkluZm8gZ2V0QWdlKGludCBjb2RlcG9pbnQpIAorICAgIHsKKyAgICAJaW50IHZlcnNpb24gPSBnZXRBZGRpdGlvbmFsKGNvZGVwb2ludCwgMCkgPj4gQUdFX1NISUZUXzsKKyAgICAJcmV0dXJuIFZlcnNpb25JbmZvLmdldEluc3RhbmNlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlcnNpb24gPj4gRklSU1RfTklCQkxFX1NISUZUXykgJiBMQVNUX05JQkJMRV9NQVNLXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gJiBMQVNUX05JQkJMRV9NQVNLXywgMCwgMCk7CisgICAgfQorCisJLyoqCisJICogPHA+Q2hlY2sgYSBiaW5hcnkgVW5pY29kZSBwcm9wZXJ0eSBmb3IgYSBjb2RlIHBvaW50LjwvcD4gCisJICogPHA+VW5pY29kZSwgZXNwZWNpYWxseSBpbiB2ZXJzaW9uIDMuMiwgZGVmaW5lcyBtYW55IG1vcmUgcHJvcGVydGllcyAKKwkgKiB0aGFuIHRoZSBvcmlnaW5hbCBzZXQgaW4gVW5pY29kZURhdGEudHh0LjwvcD4KKwkgKiA8cD5UaGlzIEFQSSBpcyBpbnRlbmRlZCB0byByZWZsZWN0IFVuaWNvZGUgcHJvcGVydGllcyBhcyBkZWZpbmVkIGluIAorCSAqIHRoZSBVbmljb2RlIENoYXJhY3RlciBEYXRhYmFzZSAoVUNEKSBhbmQgVW5pY29kZSBUZWNobmljYWwgUmVwb3J0cyAKKwkgKiAoVVRSKS48L3A+CisJICogPHA+Rm9yIGRldGFpbHMgYWJvdXQgdGhlIHByb3BlcnRpZXMgc2VlIAorCSAqIDxhIGhyZWY9aHR0cDovL3d3dy51bmljb2RlLm9yZy8+aHR0cDovL3d3dy51bmljb2RlLm9yZy88L2E+LjwvcD4KKwkgKiA8cD5Gb3IgbmFtZXMgb2YgVW5pY29kZSBwcm9wZXJ0aWVzIHNlZSB0aGUgVUNEIGZpbGUgCisJICogUHJvcGVydHlBbGlhc2VzLnR4dC48L3A+CisJICogPHA+VGhpcyBBUEkgZG9lcyBub3QgY2hlY2sgdGhlIHZhbGlkaXR5IG9mIHRoZSBjb2RlcG9pbnQuPC9wPgorCSAqIDxwPkltcG9ydGFudDogSWYgSUNVIGlzIGJ1aWx0IHdpdGggVUNEIGZpbGVzIGZyb20gVW5pY29kZSB2ZXJzaW9ucyAKKwkgKiBiZWxvdyAzLjIsIHRoZW4gcHJvcGVydGllcyBtYXJrZWQgd2l0aCAibmV3IiBhcmUgbm90IG9yIAorCSAqIG5vdCBmdWxseSBhdmFpbGFibGUuPC9wPgorCSAqIEBwYXJhbSBjb2RlcG9pbnQgQ29kZSBwb2ludCB0byB0ZXN0LgorCSAqIEBwYXJhbSBwcm9wZXJ0eSBzZWxlY3RvciBjb25zdGFudCBmcm9tIGNvbS5pYm0uaWN1LmxhbmcuVVByb3BlcnR5LCAKKwkgKiAgICAgICAgaWRlbnRpZmllcyB3aGljaCBiaW5hcnkgcHJvcGVydHkgdG8gY2hlY2suCisJICogQHJldHVybiB0cnVlIG9yIGZhbHNlIGFjY29yZGluZyB0byB0aGUgYmluYXJ5IFVuaWNvZGUgcHJvcGVydHkgdmFsdWUgCisJICogICAgICAgICBmb3IgY2guIEFsc28gZmFsc2UgaWYgcHJvcGVydHkgaXMgb3V0IG9mIGJvdW5kcyBvciBpZiB0aGUgCisJICogICAgICAgICBVbmljb2RlIHZlcnNpb24gZG9lcyBub3QgaGF2ZSBkYXRhIGZvciB0aGUgcHJvcGVydHkgYXQgYWxsLCBvciAKKwkgKiAgICAgICAgIG5vdCBmb3IgdGhpcyBjb2RlIHBvaW50LgorCSAqIEBzZWUgY29tLmlibS5pY3UubGFuZy5VUHJvcGVydHkKKwkgKiBAZHJhZnQgSUNVIDIuMQorCSAqLworCXB1YmxpYyBib29sZWFuIGhhc0JpbmFyeVByb3BlcnR5KGludCBjb2RlcG9pbnQsIGludCBwcm9wZXJ0eSkgCisJeworCQlzd2l0Y2gocHJvcGVydHkpIHsKKyAgICAJCWNhc2UgVVByb3BlcnR5LkFMUEhBQkVUSUM6IHsKKyAgICAgICAgCQkvLyBMdStMbCtMdCtMbStMbytObCtPdGhlcl9BbHBoYWJldGljCisgICAgICAgIAkJaW50IGdlbmVyYWx0eXBlID0gZ2V0UHJvcGVydHkoY29kZXBvaW50KSAmIFRZUEVfTUFTSzsKKyAgICAgICAgCQlib29sZWFuIGdlbmVyYWxtYXRjaCA9IAorICAgICAgICAJCSAgICAgICAgZ2VuZXJhbHR5cGUgPT0gVUNoYXJhY3RlckNhdGVnb3J5LlVQUEVSQ0FTRV9MRVRURVIgCisgICAgICAgICAgICAgICAgICAgICAgICB8fCBnZW5lcmFsdHlwZSA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuTE9XRVJDQVNFX0xFVFRFUiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IGdlbmVyYWx0eXBlID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5USVRMRUNBU0VfTEVUVEVSIAorICAgICAgICAgICAgICAgICAgICAgICAgfHwgZ2VuZXJhbHR5cGUgPT0gVUNoYXJhY3RlckNhdGVnb3J5Lk1PRElGSUVSX0xFVFRFUiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IGdlbmVyYWx0eXBlID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5MRVRURVJfTlVNQkVSCisgICAgICAgICAgICAgICAgICAgICAgICB8fCBnZW5lcmFsdHlwZSA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuT1RIRVJfTEVUVEVSOworICAgICAgICAJCXJldHVybiBnZW5lcmFsbWF0Y2ggfHwKKyAgICAgICAgICAgICAgICAgICAgICAgY29tcGFyZUFkZGl0aW9uYWxUeXBlKGdldEFkZGl0aW9uYWwoY29kZXBvaW50LCAxKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPVEhFUl9BTFBIQUJFVElDX1BST1BFUlRZXyk7CisgICAgCQl9CisgICAgCQljYXNlIFVQcm9wZXJ0eS5BU0NJSV9IRVhfRElHSVQ6IHsKKyAgICAgICAgCQlyZXR1cm4gY29tcGFyZUFkZGl0aW9uYWxUeXBlKGdldEFkZGl0aW9uYWwoY29kZXBvaW50LCAxKSwKKwkJCQkJCQkJCQkJIEFTQ0lJX0hFWF9ESUdJVF9QUk9QRVJUWV8pOworICAgIAkJfQorICAgIAkJY2FzZSBVUHJvcGVydHkuQklESV9DT05UUk9MOiB7CisgICAgICAgIAkJcmV0dXJuIGNvbXBhcmVBZGRpdGlvbmFsVHlwZShnZXRBZGRpdGlvbmFsKGNvZGVwb2ludCwgMSksCisgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCSURJX0NPTlRST0xfUFJPUEVSVFlfKTsKKyAgICAJCX0KKyAgICAJCWNhc2UgVVByb3BlcnR5LkJJRElfTUlSUk9SRUQ6IHsKKyAgICAgICAgCQlyZXR1cm4gKGdldFByb3BlcnR5KGNvZGVwb2ludCkgJiBNSVJST1JfTUFTSykgIT0gMDsKKyAgICAJCX0KKyAgICAJCWNhc2UgVVByb3BlcnR5LkRBU0g6IHsKKyAgICAgICAgCQlyZXR1cm4gY29tcGFyZUFkZGl0aW9uYWxUeXBlKGdldEFkZGl0aW9uYWwoY29kZXBvaW50LCAxKSwKKyAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBU0hfUFJPUEVSVFlfKTsKKyAgICAJCX0KKyAgICAJCWNhc2UgVVByb3BlcnR5LkRFRkFVTFRfSUdOT1JBQkxFX0NPREVfUE9JTlQ6IHsKKyAgICAgICAgCQkvLyA8MjA2MC4uMjA2RiwgRkZGMC4uRkZGQiwgRTAwMDAuLkUwRkZGPgorICAgICAgICAgICAgICAgIC8vICtPdGhlcl9EZWZhdWx0X0lnbm9yYWJsZV9Db2RlX1BvaW50KyhDZitDYytDcy1XaGl0ZV9TcGFjZSkgCisgICAgICAgICAgICAgICAgaWYgKCgweDIwNjAgPD0gY29kZXBvaW50ICYmIGNvZGVwb2ludCA8PSAweDIwNmYpIAorICAgICAgICAgICAgICAgICAgICB8fCAoMHhmZmYwIDw9IGNvZGVwb2ludCAmJiBjb2RlcG9pbnQgPD0gMHhmZmZiKSAKKyAgICAgICAgICAgICAgICAgICAgfHwgKDB4ZTAwMDAgPD0gY29kZXBvaW50ICYmIGNvZGVwb2ludCA8PSAweGUwZmZmKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgIAkJCisgICAgICAgIAkJaW50IGFkZGl0aW9uYWxwcm9wZXJ0eSA9IGdldEFkZGl0aW9uYWwoY29kZXBvaW50LCAxKTsKKyAgICAgICAgICAgICAgICBpZiAoY29tcGFyZUFkZGl0aW9uYWxUeXBlKGFkZGl0aW9uYWxwcm9wZXJ0eSwgCisgICAgICAgCQkgICAgICAgICAgICAgICAgICAgT1RIRVJfREVGQVVMVF9JR05PUkFCTEVfQ09ERV9QT0lOVF9QUk9QRVJUWV8pKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoIWNvbXBhcmVBZGRpdGlvbmFsVHlwZShhZGRpdGlvbmFscHJvcGVydHksIAorCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0hJVEVfU1BBQ0VfUFJPUEVSVFlfKSkgeworICAgICAgICAgICAgICAgICAgICBpbnQgZ2VuZXJhbHR5cGUgPSBnZXRQcm9wZXJ0eShjb2RlcG9pbnQpICYgVFlQRV9NQVNLOworICAgICAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhbHR5cGUgPT0gVUNoYXJhY3RlckNhdGVnb3J5LkZPUk1BVCAKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IGdlbmVyYWx0eXBlID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5DT05UUk9MIAorICAgICAgICAgICAgICAgICAgICAgICAgfHwgZ2VuZXJhbHR5cGUgPT0gVUNoYXJhY3RlckNhdGVnb3J5LlNVUlJPR0FURSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAkJfQorICAgIAkJY2FzZSBVUHJvcGVydHkuREVQUkVDQVRFRDogeworICAgICAgICAJCXJldHVybiBjb21wYXJlQWRkaXRpb25hbFR5cGUoZ2V0QWRkaXRpb25hbChjb2RlcG9pbnQsIDEpLAorICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVQUkVDQVRFRF9QUk9QRVJUWV8pOworICAgIAkJfQorICAgIAkJY2FzZSBVUHJvcGVydHkuRElBQ1JJVElDOiB7CisgICAgICAgIAkJcmV0dXJuIGNvbXBhcmVBZGRpdGlvbmFsVHlwZShnZXRBZGRpdGlvbmFsKGNvZGVwb2ludCwgMSksCisgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICBESUFDUklUSUNfUFJPUEVSVFlfKTsKKyAgICAJCX0KKyAgICAJCWNhc2UgVVByb3BlcnR5LkVYVEVOREVSOiB7CisgICAgICAgIAkJcmV0dXJuIGNvbXBhcmVBZGRpdGlvbmFsVHlwZShnZXRBZGRpdGlvbmFsKGNvZGVwb2ludCwgMSksCisgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgIEVYVEVOREVSX1BST1BFUlRZXyk7CisgICAgCQl9CisgICAgCQljYXNlIFVQcm9wZXJ0eS5GVUxMX0NPTVBPU0lUSU9OX0VYQ0xVU0lPTjogeworICAgICAgICAJCXJldHVybiBOb3JtYWxpemVySW1wbC5pc0Z1bGxDb21wb3NpdGlvbkV4Y2x1c2lvbihjb2RlcG9pbnQpOworICAgIAkJfQorICAgIAkJY2FzZSBVUHJvcGVydHkuR1JBUEhFTUVfQkFTRTogeworICAgIAkJCS8vIFswLi4xMEZGRkZdLUNjLUNmLUNzLUNvLUNuLVpsLVpwLUdyYXBoZW1lX0xpbmstR3JhcGhlbWVfRXh0ZW5kLUNHSiA9PQorICAgICAgICAgICAgICAgIC8vIFswLi4xMEZGRkZdLUNjLUNmLUNzLUNvLUNuLVpsLVpwLUdyYXBoZW1lX0xpbmstKE1lK01uK01jK090aGVyX0dyYXBoZW1lX0V4dGVuZCktQ0dKID09CisgICAgICAgICAgICAgICAgLy8gWzAuLjEwRkZGRl0tQ2MtQ2YtQ3MtQ28tQ24tWmwtWnAtTWUtTW4tTWMtR3JhcGhlbWVfTGluay1PdGhlcl9HcmFwaGVtZV9FeHRlbmQtQ0dKCisgICAgICAgICAgICAgICAgaWYgKGNvZGVwb2ludCAhPSAweDM0ZikgeyAvLyBDR0oKKyAgICAgICAgICAgICAgICAgICAgaW50IGdlbmVyYWx0eXBlID0gZ2V0UHJvcGVydHkoY29kZXBvaW50KSAmIFRZUEVfTUFTSzsKKyAgICAgICAgICAgICAJCWlmIChnZW5lcmFsdHlwZSAhPSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuQ09OVFJPTCAKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIGdlbmVyYWx0eXBlICE9IFVDaGFyYWN0ZXJDYXRlZ29yeS5GT1JNQVQgCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBnZW5lcmFsdHlwZSAhPSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuU1VSUk9HQVRFCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBnZW5lcmFsdHlwZSAhPSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuUFJJVkFURV9VU0UKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIGdlbmVyYWx0eXBlICE9IFVDaGFyYWN0ZXJDYXRlZ29yeS5HRU5FUkFMX09USEVSX1RZUEVTCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBnZW5lcmFsdHlwZSAhPSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuTElORV9TRVBBUkFUT1IKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIGdlbmVyYWx0eXBlICE9IFVDaGFyYWN0ZXJDYXRlZ29yeS5QQVJBR1JBUEhfU0VQQVJBVE9SCisgICAgICAgICAgICAgCQkgICAgJiYgZ2VuZXJhbHR5cGUgIT0gVUNoYXJhY3RlckNhdGVnb3J5LkVOQ0xPU0lOR19NQVJLCisgICAgICAgICAgICAgCQkgICAgJiYgZ2VuZXJhbHR5cGUgIT0gVUNoYXJhY3RlckNhdGVnb3J5Lk5PTl9TUEFDSU5HX01BUksgCisgICAgICAgICAgICAgCQkgICAgJiYgZ2VuZXJhbHR5cGUgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE9IFVDaGFyYWN0ZXJDYXRlZ29yeS5DT01CSU5JTkdfU1BBQ0lOR19NQVJLKSB7CisgICAgICAgICAgICAgCQkgICAgaW50IGFkZGl0aW9uYWxwcm9wZXJ0eSA9IGdldEFkZGl0aW9uYWwoY29kZXBvaW50LCAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhY29tcGFyZUFkZGl0aW9uYWxUeXBlKGFkZGl0aW9uYWxwcm9wZXJ0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdSQVBIRU1FX0xJTktfUFJPUEVSVFlfKSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhY29tcGFyZUFkZGl0aW9uYWxUeXBlKGFkZGl0aW9uYWxwcm9wZXJ0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPVEhFUl9HUkFQSEVNRV9FWFRFTkRfUFJPUEVSVFlfKTsKKyAgICAgICAgICAgICAJCX0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAkJfQorICAgIAkJY2FzZSBVUHJvcGVydHkuR1JBUEhFTUVfRVhURU5EOiB7CisgICAgICAgICAgICAgICAgLy8gTWUrTW4rTWMrT3RoZXJfR3JhcGhlbWVfRXh0ZW5kLUdyYXBoZW1lX0xpbmstQ0dKCisgICAgICAgICAgICAgICAgaWYgKGNvZGVwb2ludCA9PSAweDM0ZikgeyAvLyBDR0oKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBmYXN0ZXN0IGNoZWNrIGZpcnN0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgICAgICAgICBpbnQgYWRkaXRpb25hbHByb3BlcnR5ID0gZ2V0QWRkaXRpb25hbChjb2RlcG9pbnQsIDEpOworICAgICAgICAgICAgICAgIGlmICghY29tcGFyZUFkZGl0aW9uYWxUeXBlKGFkZGl0aW9uYWxwcm9wZXJ0eSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1JBUEhFTUVfTElOS19QUk9QRVJUWV8pKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChjb21wYXJlQWRkaXRpb25hbFR5cGUoYWRkaXRpb25hbHByb3BlcnR5LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9USEVSX0dSQVBIRU1FX0VYVEVORF9QUk9QRVJUWV8pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpbnQgZ2VuZXJhbHR5cGUgPSBnZXRQcm9wZXJ0eShjb2RlcG9pbnQpICYgVFlQRV9NQVNLOworICAgICAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhbHR5cGUgPT0gVUNoYXJhY3RlckNhdGVnb3J5LkVOQ0xPU0lOR19NQVJLIHx8CisgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmFsdHlwZSA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuTk9OX1NQQUNJTkdfTUFSSyB8fAorICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhbHR5cGUgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT0gVUNoYXJhY3RlckNhdGVnb3J5LkNPTUJJTklOR19TUEFDSU5HX01BUkspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAkJfQorICAgIAkJY2FzZSBVUHJvcGVydHkuR1JBUEhFTUVfTElOSzogeworICAgICAgICAJCXJldHVybiBjb21wYXJlQWRkaXRpb25hbFR5cGUoZ2V0QWRkaXRpb25hbChjb2RlcG9pbnQsIDEpLAorICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1JBUEhFTUVfTElOS19QUk9QRVJUWV8pOworICAgIAkJfQorICAgIAkJY2FzZSBVUHJvcGVydHkuSEVYX0RJR0lUOiB7CisgICAgICAgIAkJcmV0dXJuIGNvbXBhcmVBZGRpdGlvbmFsVHlwZShnZXRBZGRpdGlvbmFsKGNvZGVwb2ludCwgMSksCisgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIRVhfRElHSVRfUFJPUEVSVFlfKTsKKyAgICAJCX0KKyAgICAJCWNhc2UgVVByb3BlcnR5LkhZUEhFTjogeworICAgICAgICAJCXJldHVybiBjb21wYXJlQWRkaXRpb25hbFR5cGUoZ2V0QWRkaXRpb25hbChjb2RlcG9pbnQsIDEpLAorICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFlQSEVOX1BST1BFUlRZXyk7CisgICAgCQl9CisgICAgCQljYXNlIFVQcm9wZXJ0eS5JRF9DT05USU5VRTogeworICAgICAgICAJCS8vIElEX1N0YXJ0K01uK01jK05kK1BjID09IEx1K0xsK0x0K0xtK0xvK05sK01uK01jK05kK1BjCisgICAgICAgIAkJaW50IGdlbmVyYWx0eXBlID0gZ2V0UHJvcGVydHkoY29kZXBvaW50KSAmIFRZUEVfTUFTSzsKKyAgICAgICAgCQlyZXR1cm4gZ2VuZXJhbHR5cGUgPT0gVUNoYXJhY3RlckNhdGVnb3J5LlVQUEVSQ0FTRV9MRVRURVIgfHwKKyAgICAgICAgCQkgICAgICAgZ2VuZXJhbHR5cGUgPT0gVUNoYXJhY3RlckNhdGVnb3J5LkxPV0VSQ0FTRV9MRVRURVIgfHwgCisgICAgICAgIAkJICAgICAgIGdlbmVyYWx0eXBlID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5USVRMRUNBU0VfTEVUVEVSIHx8CisgICAgICAgIAkJICAgICAgIGdlbmVyYWx0eXBlID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5NT0RJRklFUl9MRVRURVIgfHwKKyAgICAgICAgCQkgICAgICAgZ2VuZXJhbHR5cGUgPT0gVUNoYXJhY3RlckNhdGVnb3J5Lk9USEVSX0xFVFRFUiB8fAorICAgICAgICAJCSAgICAgICBnZW5lcmFsdHlwZSA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuTEVUVEVSX05VTUJFUiB8fAorICAgICAgICAJCSAgICAgICBnZW5lcmFsdHlwZSA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuTk9OX1NQQUNJTkdfTUFSSyB8fAorICAgICAgICAJCSAgICAgICBnZW5lcmFsdHlwZSA9PSAKKyAgICAgICAgCQkgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyQ2F0ZWdvcnkuQ09NQklOSU5HX1NQQUNJTkdfTUFSSyB8fAorICAgICAgICAJCSAgICAgICBnZW5lcmFsdHlwZSA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuREVDSU1BTF9ESUdJVF9OVU1CRVIKKyAgICAgICAgCQkgICAgICAgfHwgZ2VuZXJhbHR5cGUgPT0gCisgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3RlckNhdGVnb3J5LkNPTk5FQ1RPUl9QVU5DVFVBVElPTjsKKyAgICAJCX0KKyAgICAJCWNhc2UgVVByb3BlcnR5LklEX1NUQVJUOiB7CisgICAgICAgIAkJLy8gTHUrTGwrTHQrTG0rTG8rTmwKKyAgICAgICAgCQlpbnQgZ2VuZXJhbHR5cGUgPSBnZXRQcm9wZXJ0eShjb2RlcG9pbnQpICYgVFlQRV9NQVNLOworICAgICAgICAJCXJldHVybiBnZW5lcmFsdHlwZSA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuVVBQRVJDQVNFX0xFVFRFUiB8fAorICAgICAgICAJCSAgICAgICBnZW5lcmFsdHlwZSA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuTE9XRVJDQVNFX0xFVFRFUiB8fCAKKyAgICAgICAgCQkgICAgICAgZ2VuZXJhbHR5cGUgPT0gVUNoYXJhY3RlckNhdGVnb3J5LlRJVExFQ0FTRV9MRVRURVIgfHwKKyAgICAgICAgCQkgICAgICAgZ2VuZXJhbHR5cGUgPT0gVUNoYXJhY3RlckNhdGVnb3J5Lk1PRElGSUVSX0xFVFRFUiB8fAorICAgICAgICAJCSAgICAgICBnZW5lcmFsdHlwZSA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuT1RIRVJfTEVUVEVSIHx8CisgICAgICAgIAkJICAgICAgIGdlbmVyYWx0eXBlID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5MRVRURVJfTlVNQkVSOworICAgIAkJfQorICAgIAkJY2FzZSBVUHJvcGVydHkuSURFT0dSQVBISUM6IHsKKyAgICAgICAgCQlyZXR1cm4gY29tcGFyZUFkZGl0aW9uYWxUeXBlKGdldEFkZGl0aW9uYWwoY29kZXBvaW50LCAxKSwKKyAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElERU9HUkFQSElDX1BST1BFUlRZXyk7CisgICAgCQl9CisgICAgCQljYXNlIFVQcm9wZXJ0eS5JRFNfQklOQVJZX09QRVJBVE9SOiB7CisgICAgICAgIAkJcmV0dXJuIGNvbXBhcmVBZGRpdGlvbmFsVHlwZShnZXRBZGRpdGlvbmFsKGNvZGVwb2ludCwgMSksCisgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRFNfQklOQVJZX09QRVJBVE9SX1BST1BFUlRZXyk7CisgICAgCQl9CisgICAgCQljYXNlIFVQcm9wZXJ0eS5JRFNfVFJJTkFSWV9PUEVSQVRPUjogeworICAgICAgICAJCXJldHVybiBjb21wYXJlQWRkaXRpb25hbFR5cGUoZ2V0QWRkaXRpb25hbChjb2RlcG9pbnQsIDEpLAorICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSURTX1RSSU5BUllfT1BFUkFUT1JfUFJPUEVSVFlfKTsKKwkJCX0KKyAgICAJCWNhc2UgVVByb3BlcnR5LkpPSU5fQ09OVFJPTDogeworICAgICAgICAJCXJldHVybiBjb21wYXJlQWRkaXRpb25hbFR5cGUoZ2V0QWRkaXRpb25hbChjb2RlcG9pbnQsIDEpLAorICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSk9JTl9DT05UUk9MX1BST1BFUlRZXyk7CisgICAgCQl9CisgICAgCQljYXNlIFVQcm9wZXJ0eS5MT0dJQ0FMX09SREVSX0VYQ0VQVElPTjogeworICAgICAgICAJCXJldHVybiBjb21wYXJlQWRkaXRpb25hbFR5cGUoZ2V0QWRkaXRpb25hbChjb2RlcG9pbnQsIDEpLAorICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExPR0lDQUxfT1JERVJfRVhDRVBUSU9OX1BST1BFUlRZXyk7CisgICAgCQl9CisgICAgCQljYXNlIFVQcm9wZXJ0eS5MT1dFUkNBU0U6IHsKKyAgICAgICAgCQkvLyBMbCtPdGhlcl9Mb3dlcmNhc2UKKyAgICAgICAgCQlpbnQgZ2VuZXJhbHR5cGUgPSBnZXRQcm9wZXJ0eShjb2RlcG9pbnQpICYgVFlQRV9NQVNLOworICAgICAgICAJCWlmIChnZW5lcmFsdHlwZSA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuTE9XRVJDQVNFX0xFVFRFUikgeworICAgICAgICAJCQlyZXR1cm4gdHJ1ZTsKKyAgICAgICAgCQl9CisgICAgICAgIAkJcmV0dXJuIGNvbXBhcmVBZGRpdGlvbmFsVHlwZShnZXRBZGRpdGlvbmFsKGNvZGVwb2ludCwgMSksCisgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPVEhFUl9MT1dFUkNBU0VfUFJPUEVSVFlfKTsKKyAgICAJCX0KKyAgICAJCWNhc2UgVVByb3BlcnR5Lk1BVEg6IHsKKyAgICAgICAgCQkvLyBTbStPdGhlcl9NYXRoIAorICAgICAgICAJCWludCBnZW5lcmFsdHlwZSA9IGdldFByb3BlcnR5KGNvZGVwb2ludCkgJiBUWVBFX01BU0s7CisgICAgICAgIAkJaWYgKGdlbmVyYWx0eXBlID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5NQVRIX1NZTUJPTCkgeworICAgICAgICAJCQlyZXR1cm4gdHJ1ZTsKKyAgICAgICAgCQl9CisgICAgICAgIAkJcmV0dXJuIGNvbXBhcmVBZGRpdGlvbmFsVHlwZShnZXRBZGRpdGlvbmFsKGNvZGVwb2ludCwgMSksCisgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPVEhFUl9NQVRIX1BST1BFUlRZXyk7CisgICAgCQl9CisgICAgCQljYXNlIFVQcm9wZXJ0eS5OT05DSEFSQUNURVJfQ09ERV9QT0lOVDogeworICAgICAgICAJCXJldHVybiBjb21wYXJlQWRkaXRpb25hbFR5cGUoZ2V0QWRkaXRpb25hbChjb2RlcG9pbnQsIDEpLAorICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgTk9OQ0hBUkFDVEVSX0NPREVfUE9JTlRfUFJPUEVSVFlfKTsKKyAgICAJCX0KKyAgICAJCWNhc2UgVVByb3BlcnR5LlFVT1RBVElPTl9NQVJLOiB7CisgICAgICAgIAkJcmV0dXJuIGNvbXBhcmVBZGRpdGlvbmFsVHlwZShnZXRBZGRpdGlvbmFsKGNvZGVwb2ludCwgMSksCisgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVU9UQVRJT05fTUFSS19QUk9QRVJUWV8pOworICAgIAkJfQorICAgIAkJY2FzZSBVUHJvcGVydHkuUkFESUNBTDogeworICAgICAgICAJCXJldHVybiBjb21wYXJlQWRkaXRpb25hbFR5cGUoZ2V0QWRkaXRpb25hbChjb2RlcG9pbnQsIDEpLAorICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkFESUNBTF9QUk9QRVJUWV8pOworICAgIAkJfQorICAgIAkJY2FzZSBVUHJvcGVydHkuU09GVF9ET1RURUQ6IHsKKyAgICAgICAgCQlyZXR1cm4gY29tcGFyZUFkZGl0aW9uYWxUeXBlKGdldEFkZGl0aW9uYWwoY29kZXBvaW50LCAxKSwKKyAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNPRlRfRE9UVEVEX1BST1BFUlRZXyk7CisgICAgCQl9CisgICAgCQljYXNlIFVQcm9wZXJ0eS5URVJNSU5BTF9QVU5DVFVBVElPTjogeworICAgICAgICAJCXJldHVybiBjb21wYXJlQWRkaXRpb25hbFR5cGUoZ2V0QWRkaXRpb25hbChjb2RlcG9pbnQsIDEpLAorICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEVSTUlOQUxfUFVOQ1RVQVRJT05fUFJPUEVSVFlfKTsKKyAgICAJCX0KKwkJICAgIGNhc2UgVVByb3BlcnR5LlVOSUZJRURfSURFT0dSQVBIOiB7CisgICAgICAgIAkJcmV0dXJuIGNvbXBhcmVBZGRpdGlvbmFsVHlwZShnZXRBZGRpdGlvbmFsKGNvZGVwb2ludCwgMSksCisgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVTklGSUVEX0lERU9HUkFQSF9QUk9QRVJUWV8pOworCQkgICAgfQorICAgIAkJY2FzZSBVUHJvcGVydHkuVVBQRVJDQVNFOiB7CisgICAgICAgIAkJLy8gTHUrT3RoZXJfVXBwZXJjYXNlIAorICAgICAgICAJCWludCBnZW5lcmFsdHlwZSA9IGdldFByb3BlcnR5KGNvZGVwb2ludCkgJiBUWVBFX01BU0s7CisgICAgICAgIAkJaWYgKGdlbmVyYWx0eXBlID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5VUFBFUkNBU0VfTEVUVEVSKSB7CisgICAgICAgIAkJCXJldHVybiB0cnVlOworICAgICAgICAJCX0KKyAgICAgICAgCQlyZXR1cm4gY29tcGFyZUFkZGl0aW9uYWxUeXBlKGdldEFkZGl0aW9uYWwoY29kZXBvaW50LCAxKSwKKyAgICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgICBPVEhFUl9VUFBFUkNBU0VfUFJPUEVSVFlfKTsKKyAgICAJCX0KKyAgICAJCWNhc2UgVVByb3BlcnR5LldISVRFX1NQQUNFOiB7CisgICAgICAgIAkJcmV0dXJuIGNvbXBhcmVBZGRpdGlvbmFsVHlwZShnZXRBZGRpdGlvbmFsKGNvZGVwb2ludCwgMSksCisgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXSElURV9TUEFDRV9QUk9QRVJUWV8pOworICAgIAkJfQorICAgIAkJY2FzZSBVUHJvcGVydHkuWElEX0NPTlRJTlVFOiB7CisgICAgICAgIAkJcmV0dXJuIGNvbXBhcmVBZGRpdGlvbmFsVHlwZShnZXRBZGRpdGlvbmFsKGNvZGVwb2ludCwgMSksCisgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYSURfQ09OVElOVUVfUFJPUEVSVFlfKTsKKyAgICAJCX0KKyAgICAJCWNhc2UgVVByb3BlcnR5LlhJRF9TVEFSVDogeworICAgICAgICAJCXJldHVybiBjb21wYXJlQWRkaXRpb25hbFR5cGUoZ2V0QWRkaXRpb25hbChjb2RlcG9pbnQsIDEpLAorICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWElEX1NUQVJUX1BST1BFUlRZXyk7CisgICAgCQl9CisgICAgCQlkZWZhdWx0OgorICAgICAgICAJCS8vIG5vdCBhIGtub3duIGJpbmFyeSBwcm9wZXJ0eQorICAgICAgICAJCXJldHVybiBmYWxzZTsKKyAgICAJfQorCX0KKwkKKwkvKioKKyAgICAqIEZvcm1zIGEgc3VwcGxlbWVudGFyeSBjb2RlIHBvaW50IGZyb20gdGhlIGFyZ3VtZW50IGNoYXJhY3Rlcjxicj4KKyAgICAqIE5vdGUgdGhpcyBpcyBmb3IgaW50ZXJuYWwgdXNlIGhlbmNlIG5vIGNoZWNrcyBmb3IgdGhlIHZhbGlkaXR5IG9mIHRoZQorICAgICogc3Vycm9nYXRlIGNoYXJhY3RlcnMgYXJlIGRvbmUKKyAgICAqIEBwYXJhbSBsZWFkIGxlYWQgc3Vycm9nYXRlIGNoYXJhY3RlcgorICAgICogQHBhcmFtIHRyYWlsIHRyYWlsaW5nIHN1cnJvZ2F0ZSBjaGFyYWN0ZXIKKyAgICAqIEByZXR1cm4gY29kZSBwb2ludCBvZiB0aGUgc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXIKKyAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgaW50IGdldFJhd1N1cHBsZW1lbnRhcnkoY2hhciBsZWFkLCBjaGFyIHRyYWlsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIChsZWFkIDw8IExFQURfU1VSUk9HQVRFX1NISUZUXykgKyB0cmFpbCArIFNVUlJPR0FURV9PRkZTRVRfOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAqIExvYWRzIHRoZSBwcm9wZXJ0eSBkYXRhIGFuZCBpbml0aWFsaXplIHRoZSBVQ2hhcmFjdGVyUHJvcGVydHkgaW5zdGFuY2UuIAorICAgICogQEV4Y2VwdGlvbiB0aHJvd24gd2hlbiBkYXRhIGlzIG1pc3Npbmcgb3IgZGF0YSBoYXMgYmVlbiBjb3JydXB0ZWQuCisgICAgKi8gICAgCisgICAgcHVibGljIHN0YXRpYyBVQ2hhcmFjdGVyUHJvcGVydHkgZ2V0SW5zdGFuY2UoKSB0aHJvd3MgUnVudGltZUV4Y2VwdGlvbgorICAgIHsKKyAgICAJaWYgKElOU1RBTkNFXyA9PSBudWxsKSB7CisgICAgCQl0cnkgeworICAgIAkJCUlOU1RBTkNFXyA9IG5ldyBVQ2hhcmFjdGVyUHJvcGVydHkoKTsKKyAgICAJCX0KKyAgICAgICAgCWNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgCXRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKGUuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgCX0KKyAgICAJfQorICAgIAlyZXR1cm4gSU5TVEFOQ0VfOworICAgIH0KKyAgICAgICAgCisgICAgLyoqCisgICAgKiBTcGVjaWFsIGNhc2luZyBsb3dlcmNhc2UgbWFuYWdlbWVudAorICAgICogQHBhcmFtIGxvY2FsZSBjdXJyZW50IGxvY2FsZQorICAgICogQHBhcmFtIGNoIGNvZGUgcG9pbnQgdG8gY29udmVydAorICAgICogQHBhcmFtIGluZGV4IG9mIGV4Y2VwdGlvbiBjb250YWluaW5nIHNwZWNpYWwgY2FzZSBpbmZvcm1hdGlvbgorICAgICogQHBhcmFtIHVjaGFyaXRlciB0ZXh0IGl0ZXJhdG9yIHdpdGggaW5kZXggYXQgcG9zaXRpb24gb2YgY2gKKyAgICAqIEBwYXJhbSBidWZmZXIgdG8gYWRkIGxvd2VyY2FzZQorICAgICogQHJldHVybiBzaXplIG9mIHRoZSBsb3dlciBjYXNlIGNoYXJhY3RlciBpbiBVVEYxNiBmb3JtYXQKKyAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0U3BlY2lhbExvd2VyQ2FzZShMb2NhbGUgbG9jYWxlLCBpbnQgaW5kZXgsIGludCBjaCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXJJdGVyYXRvciB1Y2hhcml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ0J1ZmZlciBidWZmZXIpCisgICAgeworICAgIAlpbnQgZXhjZXB0aW9uID0gZ2V0RXhjZXB0aW9uKGluZGV4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyUHJvcGVydHkuRVhDX1NQRUNJQUxfQ0FTSU5HXyk7CisgICAgICAgIGlmIChleGNlcHRpb24gPCAwKSB7CisgICAgICAgIAlpbnQgb2Zmc2V0ID0gdWNoYXJpdGVyLmdldEluZGV4KCk7CisgICAgICAgICAgICAvLyBmaWxsIHUgYW5kIGkgd2l0aCB0aGUgY2FzZSBtYXBwaW5nIHJlc3VsdCBzdHJpbmcKKyAgICAgICAgICAgIC8vIHVzZSBoYXJkY29kZWQgY29uZGl0aW9ucyBhbmQgbWFwcGluZ3MKKyAgICAgICAgICAgIC8vIFRlc3QgZm9yIGNvbmRpdGlvbmFsIG1hcHBpbmdzIGZpcnN0CisgICAgICAgICAgICAvLyAob3RoZXJ3aXNlIHRoZSB1bmNvbmRpdGlvbmFsIGRlZmF1bHQgbWFwcGluZ3MgYXJlIGFsd2F5cyB0YWtlbiksCisgICAgICAgICAgICAvLyB0aGVuIHRlc3QgZm9yIGNoYXJhY3RlcnMgdGhhdCBoYXZlIHVuY29uZGl0aW9uYWwgbWFwcGluZ3MgaW4gCisgICAgICAgICAgICAvLyBTcGVjaWFsQ2FzaW5nLnR4dCwgdGhlbiBnZXQgdGhlIFVuaWNvZGVEYXRhLnR4dCBtYXBwaW5ncy4KKyAgICAgICAgICAgIGlmIChsb2NhbGUuZ2V0TGFuZ3VhZ2UoKS5lcXVhbHMoTElUSFVBTklBTl8pICYmCisgICAgICAgICAgICAgICAgLy8gYmFzZSBjaGFyYWN0ZXJzLCBmaW5kIGFjY2VudHMgYWJvdmUKKyAgICAgICAgICAgICAgICAoKChjaCA9PSBMQVRJTl9DQVBJVEFMX0xFVFRFUl9JXyB8fCAKKyAgICAgICAgICAgICAgICAgICBjaCA9PSBMQVRJTl9DQVBJVEFMX0xFVFRFUl9KXyB8fAorICAgICAgICAgICAgICAgICAgIGNoID09IExBVElOX0NBUElUQUxfSV9XSVRIX09HT05FS18pICYmCisgICAgICAgICAgICAgICAgICBpc0ZvbGxvd2VkQnlNT1JFQUJPVkUodWNoYXJpdGVyLCBvZmZzZXQpKSB8fAorICAgICAgICAgICAgICAgICAgLy8gcHJlY29tcG9zZWQgd2l0aCBhY2NlbnQgYWJvdmUsIG5vIG5lZWQgdG8gZmluZCBvbmUKKyAgICAgICAgICAgICAgICAgIChjaCA9PSBMQVRJTl9DQVBJVEFMX0lfV0lUSF9HUkFWRV8gfHwgCisgICAgICAgICAgICAgICAgICAgY2ggPT0gTEFUSU5fQ0FQSVRBTF9JX1dJVEhfQUNVVEVfIHx8IAorICAgICAgICAgICAgICAgICAgIGNoID09IExBVElOX0NBUElUQUxfSV9XSVRIX1RJTERFXykpKSB7CisgICAgICAgICAgICAgICAgICAgLy8gbGl0aHVhbmlhbjogYWRkIGEgZG90IGFib3ZlIGlmIHRoZXJlIGFyZSBtb3JlIGFjY2VudHMgCisgICAgICAgICAgICAgICAgICAgLy8gYWJvdmUgKHRvIGFsd2F5cyBoYXZlIHRoZSBkb3QpCisgICAgICAgICAgICAgICAgICAgLy8gIyBMaXRodWFuaWFuCisgICAgICAgICAgICAgICAgICAgLy8gIyBMaXRodWFuaWFuIHJldGFpbnMgdGhlIGRvdCBpbiBhIGxvd2VyY2FzZSBpIHdoZW4gCisgICAgICAgICAgICAgICAgICAgLy8gICBmb2xsb3dlZCBieSBhY2NlbnRzLgorICAgICAgICAgICAgICAgICAgIC8vICMgSW50cm9kdWNlIGFuIGV4cGxpY2l0IGRvdCBhYm92ZSB3aGVuIGxvd2VyY2FzaW5nIAorICAgICAgICAgICAgICAgICAgIC8vIGNhcGl0YWwgSSdzIGFuZCBKJ3MKKyAgICAgICAgICAgICAgICAgICAvLyB3aGVuZXZlciB0aGVyZSBhcmUgbW9yZSBhY2NlbnRzIGFib3ZlLgorICAgICAgICAgICAgICAgICAgIC8vIChvZiB0aGUgYWNjZW50cyB1c2VkIGluIExpdGh1YW5pYW46IGdyYXZlLCBhY3V0ZSwgdGlsZGUgCisgICAgICAgICAgICAgICAgICAgLy8gYWJvdmUsIGFuZCBvZ29uZWspCisgICAgICAgICAgICAgICAgICAgLy8gMDA0OTsgMDA2OSAwMzA3OyAwMDQ5OyAwMDQ5OyBsdCBNb3JlX0Fib3ZlOyAKKyAgICAgICAgICAgICAgICAgICAvLyAjIExBVElOIENBUElUQUwgTEVUVEVSIEkKKyAgICAgICAgICAgICAgICAgICAvLyAwMDRBOyAwMDZBIDAzMDc7IDAwNEE7IDAwNEE7IGx0IE1vcmVfQWJvdmU7IAorICAgICAgICAgICAgICAgICAgIC8vICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgorICAgICAgICAgICAgICAgICAgIC8vIDAxMkU7IDAxMkYgMDMwNzsgMDEyRTsgMDEyRTsgbHQgTW9yZV9BYm92ZTsgCisgICAgICAgICAgICAgICAgICAgLy8gIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggT0dPTkVLCisgICAgICAgICAgICAgICAgICAgLy8gMDBDQzsgMDA2OSAwMzA3IDAzMDA7IDAwQ0M7IDAwQ0M7IGx0OyAKKyAgICAgICAgICAgICAgICAgICAvLyAjIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBHUkFWRQorICAgICAgICAgICAgICAgICAgIC8vIDAwQ0Q7IDAwNjkgMDMwNyAwMzAxOyAwMENEOyAwMENEOyBsdDsgCisgICAgICAgICAgICAgICAgICAgLy8gIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQUNVVEUKKyAgICAgICAgICAgICAgICAgICAvLyAwMTI4OyAwMDY5IDAzMDcgMDMwMzsgMDEyODsgMDEyODsgbHQ7IAorICAgICAgICAgICAgICAgICAgIC8vICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIFRJTERFCisgICAgICAgICAgICAgICAgICAgc3dpdGNoKGNoKSB7CisgICAgICAgICAgICAgICAgICAgY2FzZSBMQVRJTl9DQVBJVEFMX0xFVFRFUl9JXzogCisgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKChjaGFyKUxBVElOX1NNQUxMX0xFVFRFUl9JXyk7CisgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKChjaGFyKUNPTUJJTklOR19ET1RfQUJPVkVfKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICAgICAgICAgICAgIGNhc2UgTEFUSU5fQ0FQSVRBTF9MRVRURVJfSl86IAorICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZCgoY2hhcilMQVRJTl9TTUFMTF9MRVRURVJfSl8pOworICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZCgoY2hhcilDT01CSU5JTkdfRE9UX0FCT1ZFXyk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgICAgICAgICAgICBjYXNlIExBVElOX0NBUElUQUxfSV9XSVRIX09HT05FS186CisgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKChjaGFyKUxBVElOX1NNQUxMX0xFVFRFUl9JX1dJVEhfT0dPTkVLXyk7CisgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKChjaGFyKUNPTUJJTklOR19ET1RfQUJPVkVfKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICAgICAgICAgICAgIGNhc2UgTEFUSU5fQ0FQSVRBTF9JX1dJVEhfR1JBVkVfOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoKGNoYXIpTEFUSU5fU01BTExfTEVUVEVSX0lfKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoKGNoYXIpQ09NQklOSU5HX0RPVF9BQk9WRV8pOworICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZCgoY2hhcilDT01CSU5JTkdfR1JBVkVfQUNDRU5UXyk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMzsKKyAgICAgICAgICAgICAgICAgICBjYXNlIExBVElOX0NBUElUQUxfSV9XSVRIX0FDVVRFXzogCisgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKChjaGFyKUxBVElOX1NNQUxMX0xFVFRFUl9JXyk7CisgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKChjaGFyKUNPTUJJTklOR19ET1RfQUJPVkVfKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoKGNoYXIpQ09NQklOSU5HX0FDVVRFX0FDQ0VOVF8pOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDM7CisgICAgICAgICAgICAgICAgICAgY2FzZSBMQVRJTl9DQVBJVEFMX0lfV0lUSF9USUxERV86CisgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKChjaGFyKUxBVElOX1NNQUxMX0xFVFRFUl9JXyk7CisgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKChjaGFyKUNPTUJJTklOR19ET1RfQUJPVkVfKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoKGNoYXIpQ09NQklOSU5HX1RJTERFXyk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMzsKKyAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IAorICAgICAgICAgICAgCisgICAgICAgICAgICBTdHJpbmcgbGFuZ3VhZ2UgPSBsb2NhbGUuZ2V0TGFuZ3VhZ2UoKTsKKyAgICAgICAgICAgIGlmIChsYW5ndWFnZS5lcXVhbHMoVFVSS0lTSF8pIHx8IGxhbmd1YWdlLmVxdWFscyhBWkVSQkFJSkFOSV8pKSB7IAorICAgICAgICAgICAgICAgIGlmIChjaCA9PSAweDEzMCkgeworICAgICAgICAgICAgICAgICAgICAvLyAjIEkgYW5kIGktZG90bGVzczsgSS1kb3QgYW5kIGkgYXJlIGNhc2UgcGFpcnMgaW4gVHVya2lzaCAKKyAgICAgICAgICAgICAgICAgICAgLy8gYW5kIEF6ZXJpCisgICAgICAgICAgICAgICAgICAgIC8vICMgVGhlIGZvbGxvd2luZyBydWxlcyBoYW5kbGUgdGhvc2UgY2FzZXMuCisgICAgICAgICAgICAgICAgICAgIC8vIDAxMzA7IDAwNjk7IDAxMzA7IDAxMzA7IHRyIAorICAgICAgICAgICAgICAgICAgICAvLyAjIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBET1QgQUJPVkUKKyAgICAgICAgICAgICAgICAgICAgLy8gMDEzMDsgMDA2OTsgMDEzMDsgMDEzMDsgYXogCisgICAgICAgICAgICAgICAgICAgIC8vICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERPVCBBQk9WRQorICAgICAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKExBVElOX1NNQUxMX0xFVFRFUl9JXyk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgICAgIH0gCisgICAgICAgICAgICAgICAgaWYgKGNoID09IDB4MzA3ICYmIGlzUHJlY2VkZWRCeVNvZnREb3R0ZWQodWNoYXJpdGVyLCBvZmZzZXQpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vICMjIyBUT0RPIHNlZSBjb21tZW50IGFib3ZlIGFib3V0IGlzQWZ0ZXJfSSgpCisgICAgICAgICAgICAgICAgICAgIC8vICMgV2hlbiBsb3dlcmNhc2luZywgcmVtb3ZlIGRvdF9hYm92ZSBpbiB0aGUgc2VxdWVuY2UgCisgICAgICAgICAgICAgICAgICAgIC8vIEkgKyBkb3RfYWJvdmUsIHdoaWNoIHdpbGwgdHVybiBpbnRvIGkuCisgICAgICAgICAgICAgICAgICAgIC8vICMgVGhpcyBtYXRjaGVzIHRoZSBiZWhhdmlvciBvZiB0aGUgY2Fub25pY2FsbHkKKyAgICAgICAgICAgICAgICAgICAgLy8gZXF1aXZhbGVudCBJLWRvdF9hYm92ZQorICAgICAgICAgICAgICAgICAgICAvLyAwMzA3OyA7IDAzMDc7IDAzMDc7IHRyIEFmdGVyX1NvZnRfRG90dGVkOyAKKyAgICAgICAgICAgICAgICAgICAgLy8gIyBDT01CSU5JTkcgRE9UIEFCT1ZFCisgICAgICAgICAgICAgICAgICAgIC8vIDAzMDc7IDsgMDMwNzsgMDMwNzsgYXogQWZ0ZXJfU29mdF9Eb3R0ZWQ7IAorICAgICAgICAgICAgICAgICAgICAvLyAjIENPTUJJTklORyBET1QgQUJPVkUKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7IC8vIHJlbW92ZSB0aGUgZG90IChjb250aW51ZSB3aXRob3V0IG91dHB1dCkKKworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoY2ggPT0gTEFUSU5fQ0FQSVRBTF9MRVRURVJfSV8gJiYgCisgICAgICAgICAgICAgICAgICAgICFpc0ZvbGxvd2VkQnlEb3RBYm92ZSh1Y2hhcml0ZXIsIG9mZnNldCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gdHVya2lzaDogSSBtYXBzIHRvIGRvdGxlc3MgaQorICAgICAgICAgICAgICAgICAgICAvLyBvdGhlciBsYW5ndWFnZXMgb3IgdHVya2lzaCB3aXRoIGRlY29tcG9zZWQgSStkb3QgYWJvdmU6IAorICAgICAgICAgICAgICAgICAgICAvLyBJIG1hcHMgdG8gaQorICAgICAgICAgICAgICAgICAgICAvLyAjIFdoZW4gbG93ZXJjYXNpbmcsIHVubGVzcyBhbiBJIGlzIGJlZm9yZSBhIGRvdF9hYm92ZSwgCisgICAgICAgICAgICAgICAgICAgIC8vIGl0IHR1cm5zIGludG8gYSBkb3RsZXNzIGkuCisgICAgICAgICAgICAgICAgICAgIC8vICAwMDQ5OyAwMTMxOyAwMDQ5OyAwMDQ5OyB0ciBOb3RfQmVmb3JlX0RvdDsgCisgICAgICAgICAgICAgICAgICAgIC8vICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQorICAgICAgICAgICAgICAgICAgICAvLyAwMDQ5OyAwMTMxOyAwMDQ5OyAwMDQ5OyBheiBOb3RfQmVmb3JlX0RvdDsgCisgICAgICAgICAgICAgICAgICAgIC8vICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQorICAgICAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKExBVElOX1NNQUxMX0xFVFRFUl9ET1RMRVNTX0lfKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSAKKyAgICAgICAgICAgIAorCQkJaWYgKGNoID09IDB4MTMwKSB7CisgICAgICAgICAgICAgICAgLy8gZGVjb21wb3NlZCBJK2RvdCBhYm92ZSBiZWNvbWVzIGkgKHNlZSBoYW5kbGluZyBvZiAKKyAgICAgICAgICAgICAgICAvLyBVKzAwNDkgZm9yIHR1cmtpc2gpIGFuZCByZW1vdmVzIHRoZSBkb3QgYWJvdmUKKyAgICAgICAgICAgICAgICAvLyAjIFByZXNlcnZlIGNhbm9uaWNhbCBlcXVpdmFsZW5jZSBmb3IgSSB3aXRoIGRvdC4gVHVya2ljIGlzIAorICAgICAgICAgICAgICAgIC8vIGhhbmRsZWQgYmVsb3cuCisgICAgICAgICAgICAgICAgLy8gMDEzMDsgMDA2OSAwMzA3OyAwMTMwOyAwMTMwOyAKKyAgICAgICAgICAgICAgICAvLyAjIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBET1QgQUJPVkUKKyAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKExBVElOX1NNQUxMX0xFVFRFUl9JXyk7CisgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChDT01CSU5JTkdfRE9UX0FCT1ZFXyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIDI7IC8vIHJlbW92ZSB0aGUgZG90IChjb250aW51ZSB3aXRob3V0IG91dHB1dCkKKyAgICAgICAgICAgIH0gCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChjaCA9PSBHUkVFS19DQVBJVEFMX0xFVFRFUl9TSUdNQV8gJiYgCisgICAgICAgICAgICAgICAgaXNDRklOQUwodWNoYXJpdGVyLCBvZmZzZXQpICYmIAorICAgICAgICAgICAgICAgIGlzTm90Q0lOSVRJQUwodWNoYXJpdGVyLCBvZmZzZXQpKSB7CisgICAgICAgICAgICAgICAgLy8gZ3JlZWsgY2FwaXRhbCBzaWdtYSBtYXBzIGRlcGVuZGluZyBvbiBzdXJyb3VuZGluZyBjYXNlZCAKKyAgICAgICAgICAgICAgICAvLyBsZXR0ZXJzCisgICAgICAgICAgICAgICAgLy8gZ3JlZWsgY2FwaXRhbCBzaWdtYSBtYXBzIGRlcGVuZGluZyBvbiBzdXJyb3VuZGluZyBjYXNlZCAKKyAgICAgICAgICAgICAgICAvLyBsZXR0ZXJzIChzZWUgU3BlY2lhbENhc2luZy50eHQpICovCisgICAgICAgICAgICAgICAgLy8gIyBTcGVjaWFsIGNhc2UgZm9yIGZpbmFsIGZvcm0gb2Ygc2lnbWEKKyAgICAgICAgICAgICAgICAvLyAwM0EzOyAwM0MyOyAwM0EzOyAwM0EzOyBGaW5hbF9TaWdtYTsgCisgICAgICAgICAgICAgICAgLy8gIyBHUkVFSyBDQVBJVEFMIExFVFRFUiBTSUdNQQorICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoR1JFRUtfU01BTExfTEVUVEVSX1JIT18pOworICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgfSAKKyAgICAgICAgICAgIAorCQkJLy8gbm8ga25vd24gY29uZGl0aW9uYWwgc3BlY2lhbCBjYXNlIG1hcHBpbmcsIHVzZSBhIG5vcm1hbCBtYXBwaW5nCisgICAgICAgICAgICBpZiAoaGFzRXhjZXB0aW9uVmFsdWUoaW5kZXgsIFVDaGFyYWN0ZXJQcm9wZXJ0eS5FWENfTE9XRVJDQVNFXykpIHsKKyAgICAgICAgICAgICAgICBpbnQgb2xkbGVuZ3RoID0gYnVmZmVyLmxlbmd0aCgpOworICAgICAgICAgICAgICAgIFVURjE2LmFwcGVuZChidWZmZXIsIGdldEV4Y2VwdGlvbihpbmRleCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXJQcm9wZXJ0eS5FWENfTE9XRVJDQVNFXykpOyAKKyAgICAgICAgICAgICAgICByZXR1cm4gYnVmZmVyLmxlbmd0aCgpIC0gb2xkbGVuZ3RoOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorCQkJVVRGMTYuYXBwZW5kKGJ1ZmZlciwgY2gpOworCQkJcmV0dXJuIFVURjE2LmdldENoYXJDb3VudChjaCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBnZXQgdGhlIHNwZWNpYWwgY2FzZSBtYXBwaW5nIHN0cmluZyBmcm9tIHRoZSBkYXRhIGZpbGUKKyAgICAgICAgICAgIGluZGV4ID0gZXhjZXB0aW9uICYgTEFTVF9DSEFSX01BU0tfOworICAgICAgICAgICAgaW50IG9sZGxlbmd0aCA9IGJ1ZmZlci5sZW5ndGgoKTsKKyAgICAgICAgICAgIGdldExvd2VyQ2FzZShpbmRleCwgYnVmZmVyKTsKKyAgICAgICAgICAgIHJldHVybiBidWZmZXIubGVuZ3RoKCkgLSBvbGRsZW5ndGg7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgbG93ZXIgY2FzZSBtYXAgb2YgdGhlIGFyZ3VtZW50IGNvZGVwb2ludAorICAgICAqIEBwYXJhbSBsb2NhbGUgbG9jYWxlIHdoaWNoIHRoZSBsb3dlcmNhc2UgaXMgbG9va2VkIGZvcgorICAgICAqIEBwYXJhbSBjaCBjb2RlcG9pbnQgd2hvc2UgbG93ZXIgY2FzZSBpcyB0byBiZSBtYXRjaGVkCisgICAgICogQHBhcmFtIHVjaGFyaXRlciB0ZXh0IGl0ZXJhdG9yIHBvc2l0aW9uZWQgYXQgdGhlIGNvZGVwb2ludCBjaAorICAgICAqIEBwYXJhbSBidWZmZXIgYnVmZmVyIHRvIHN0b3JlIHJlc3VsdCBzdHJpbmcKKyAgICAgKiBAcmV0dXJuIHNpemUgb2YgdGhlIGxvd2VyY2FzZWQgY29kZXBvaW50IGluIFVURjE2IGZvcm1hdAorICAgICAqLworICAgIHB1YmxpYyBpbnQgdG9Mb3dlckNhc2UoTG9jYWxlIGxvY2FsZSwgaW50IGNoLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3Rlckl0ZXJhdG9yIHVjaGFyaXRlciwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ0J1ZmZlciBidWZmZXIpCisgICAgeworICAgIAlpbnQgcHJvcHMgPSBnZXRQcm9wZXJ0eShjaCk7CisgICAgICAgIGlmICgocHJvcHMgJiBFWENFUFRJT05fTUFTSykgPT0gMCkgeworICAgICAgICAgICAgaW50IHR5cGUgPSBwcm9wcyAmIFRZUEVfTUFTSzsKKyAgICAgICAgICAgIGlmICh0eXBlID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5VUFBFUkNBU0VfTEVUVEVSIHx8CisgICAgICAgICAgICAgICAgdHlwZSA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuVElUTEVDQVNFX0xFVFRFUikgeworICAgICAgICAgICAgICAgIGNoICs9IFVDaGFyYWN0ZXJQcm9wZXJ0eS5nZXRTaWduZWRWYWx1ZShwcm9wcyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpbnQgaW5kZXggPSBVQ2hhcmFjdGVyUHJvcGVydHkuZ2V0RXhjZXB0aW9uSW5kZXgocHJvcHMpOworICAgICAgICAgICAgaWYgKGhhc0V4Y2VwdGlvblZhbHVlKGluZGV4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3RlclByb3BlcnR5LkVYQ19TUEVDSUFMX0NBU0lOR18pKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdldFNwZWNpYWxMb3dlckNhc2UobG9jYWxlLCBpbmRleCwgY2gsIHVjaGFyaXRlciwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyKTsKKyAgICAgICAgICAgIH0gCisgICAgICAgICAgICBpZiAoaGFzRXhjZXB0aW9uVmFsdWUoaW5kZXgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3RlclByb3BlcnR5LkVYQ19MT1dFUkNBU0VfKSkgeworICAgICAgICAgICAgICAgIGNoID0gZ2V0RXhjZXB0aW9uKGluZGV4LCBVQ2hhcmFjdGVyUHJvcGVydHkuRVhDX0xPV0VSQ0FTRV8pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIFVURjE2LmFwcGVuZChidWZmZXIsIGNoKTsKKyAgICAgICAgcmV0dXJuIFVURjE2LmdldENoYXJDb3VudChjaCk7CisJfQorCisJLyoqCisgICAgICogR2V0cyB0aGUgbG93ZXIgY2FzZSBtYXAgb2YgdGhlIGFyZ3VtZW50IGNvZGVwb2ludAorICAgICAqIEBwYXJhbSBsb2NhbGUgbG9jYWxlIHdoaWNoIHRoZSBsb3dlcmNhc2UgaXMgbG9va2VkIGZvcgorICAgICAqIEBwYXJhbSBjaCBjb2RlcG9pbnQgd2hvc2UgbG93ZXIgY2FzZSBpcyB0byBiZSBtYXRjaGVkCisgICAgICogQHBhcmFtIHVjaGFyaXRlciB0ZXh0IGl0ZXJhdG9yIHBvc2l0aW9uZWQgYXQgdGhlIGNvZGVwb2ludCBjaAorICAgICAqIEBwYXJhbSByZXN1bHQgYXJyYXkgb2YgY2hhciB0byBzdG9yZSB0aGUgcmVzdWx0CisgICAgICogQHJldHVybiBzaXplIG9mbG93ZXJjYXNlZCBjb2RlcG9pbnQgaW4gVVRGMTYgZm9ybWF0CisgICAgICovCisgICAgcHVibGljIGludCB0b0xvd2VyQ2FzZShMb2NhbGUgbG9jYWxlLCBpbnQgY2gsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3Rlckl0ZXJhdG9yIHVjaGFyaXRlciwgY2hhciBidWZmZXJbXSkKKyAgICB7CisgICAgICAgIGludCBwcm9wcyA9IGdldFByb3BlcnR5KGNoKTsKKyAgICAgICAgaWYgKChwcm9wcyAmIEVYQ0VQVElPTl9NQVNLKSA9PSAwKSB7CisgICAgICAgICAgICBpbnQgdHlwZSA9IHByb3BzICYgVFlQRV9NQVNLOworICAgICAgICAgICAgaWYgKHR5cGUgPT0gVUNoYXJhY3RlckNhdGVnb3J5LlVQUEVSQ0FTRV9MRVRURVIgfHwKKyAgICAgICAgICAgICAgICB0eXBlID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5USVRMRUNBU0VfTEVUVEVSKSB7CisgICAgICAgICAgICAgICAgY2ggKz0gVUNoYXJhY3RlclByb3BlcnR5LmdldFNpZ25lZFZhbHVlKHByb3BzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGludCBpbmRleCA9IFVDaGFyYWN0ZXJQcm9wZXJ0eS5nZXRFeGNlcHRpb25JbmRleChwcm9wcyk7CisgICAgICAgICAgICBpZiAoaGFzRXhjZXB0aW9uVmFsdWUoaW5kZXgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXJQcm9wZXJ0eS5FWENfU1BFQ0lBTF9DQVNJTkdfKSkgeworICAgICAgICAgICAgICAgIFN0cmluZ0J1ZmZlciBzdHJidWZmZXIgPSBuZXcgU3RyaW5nQnVmZmVyKDEpOworICAgICAgICAgICAgICAgIGludCByZXN1bHQgPSBnZXRTcGVjaWFsTG93ZXJDYXNlKGxvY2FsZSwgaW5kZXgsIGNoLCB1Y2hhcml0ZXIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmJ1ZmZlcik7CisgICAgICAgICAgICAgICAgc3RyYnVmZmVyLmdldENoYXJzKDAsIHJlc3VsdCwgYnVmZmVyLCAwKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgfSAKKyAgICAgICAgICAgIGlmIChoYXNFeGNlcHRpb25WYWx1ZShpbmRleCwgVUNoYXJhY3RlclByb3BlcnR5LkVYQ19MT1dFUkNBU0VfKSkgeworICAgICAgICAgICAgICAgIGNoID0gZ2V0RXhjZXB0aW9uKGluZGV4LCBVQ2hhcmFjdGVyUHJvcGVydHkuRVhDX0xPV0VSQ0FTRV8pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChjaCA8IFVURjE2LlNVUFBMRU1FTlRBUllfTUlOX1ZBTFVFKSB7CisgICAgICAgIAlidWZmZXJbMF0gPSAoY2hhciljaDsKKyAgICAgICAgCXJldHVybiAxOworICAgICAgICB9CisgICAgICAgIGJ1ZmZlclswXSA9IFVURjE2LmdldExlYWRTdXJyb2dhdGUoY2gpOworICAgICAgICBidWZmZXJbMV0gPSBVVEYxNi5nZXRUcmFpbFN1cnJvZ2F0ZShjaCk7CisgICAgICAgIHJldHVybiAyOworCX0KKyAgICAKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBsb3dlciBjYXNlIG1hcHBpbmdzIG9mIHRoZSBzdWJzdHJpbmcgZnJvbSBpbmRleCBzdGFydCB0byB0aGUKKyAgICAgKiBjaGFyYWN0ZXIgYmVmb3JlIGVuZC4KKyAgICAgKiBAcGFyYW0gbG9jYWxlIGxvY2FsZSB3aGljaCB0aGUgbWFwcGluZ3Mgd2lsbCBiZSBzZWFyY2hlZAorICAgICAqIEBwYXJhbSBzdHIgc3RyaW5nIHRvIG1hcCAKKyAgICAgKiBAcGFyYW0gc3RhcnQgc3RhcnQgaW5kZXggb2YgdGhlIHN1YnN0cmluZyB0byBtYXAKKyAgICAgKiBAcGFyYW0gbGltaXQgb25lIGluZGV4IHBhc3MgdGhlIGxhc3QgY2hhcmFjdGVyIHRvIG1hcAorICAgICAqIEBwYXJhbSByZXN1bHQgc3RyaW5nIGJ1ZmZlciB0byBzdG9yZSBsb3dlciBjYXNlIHN0cmluZworICAgICAqLworICAgIHB1YmxpYyB2b2lkIHRvTG93ZXJDYXNlKExvY2FsZSBsb2NhbGUsIFN0cmluZyBzdHIsIGludCBzdGFydCwgaW50IGxpbWl0LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdCdWZmZXIgcmVzdWx0KSAKKyAgICB7CisgICAgICAgIFVDaGFyYWN0ZXJJdGVyYXRvciB1Y2hhckl0ZXIgPSBVQ2hhcmFjdGVySXRlcmF0b3IuZ2V0SW5zdGFuY2Uoc3RyKTsKKyAgICAgICAgaW50ICAgICAgICAgICAgICAgIHN0ckluZGV4ICA9IHN0YXJ0OworICAgICAgICAKKyAgICAgICAgd2hpbGUgKHN0ckluZGV4IDwgbGltaXQpIHsgCisgICAgICAgIAl1Y2hhckl0ZXIuc2V0SW5kZXgoc3RySW5kZXgpOworCSAgICAgICAgaW50IGNoID0gdWNoYXJJdGVyLmN1cnJlbnRDb2RlUG9pbnQoKTsKKwkgICAgICAgIAorCSAgICAgICAgdG9Mb3dlckNhc2UobG9jYWxlLCBjaCwgdWNoYXJJdGVyLCByZXN1bHQpOworCSAgICAgICAgc3RySW5kZXggKys7CisJICAgICAgICBpZiAoY2ggPj0gVVRGMTYuU1VQUExFTUVOVEFSWV9NSU5fVkFMVUUpIHsKKwkgICAgICAgIAlzdHJJbmRleCArKzsKKwkgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAqIFNwZWNpYWwgY2FzaW5nIHVwcGVyY2FzZSBtYW5hZ2VtZW50CisgICAgKiBAcGFyYW0gbG9jYWxlIGxvY2FsZSB3aGljaCB0aGUgbWFwcGluZ3Mgd2lsbCBiZSBiYXNlZCBvbgorICAgICogQHBhcmFtIGluZGV4IG9mIGV4Y2VwdGlvbiBjb250YWluaW5nIHNwZWNpYWwgY2FzZSBpbmZvcm1hdGlvbgorICAgICogQHBhcmFtIGNoIGNvZGUgcG9pbnQgdG8gY29udmVydAorICAgICogQHBhcmFtIHVjaGFyaXRlciB0ZXh0IGl0ZXJhdG9yIHdoaWNoIGNoIGJlbG9uZ3MgdG8KKyAgICAqIEBwYXJhbSB1cHBlcmZsYWcgdHJ1ZSBpZiB1cHBlcmNhc2UgbWFwcGluZyBpcyBkZXNpcmVkLCBmYWxzZSBmb3IgdGl0bGUgCisgICAgKiAgICAgICAgY2FzaW5nCisgICAgKiBAcGFyYW0gYnVmZmVyIHRvIGFkZCB1cHBlcmNhc2UKKyAgICAqIEByZXR1cm4gc2l6ZSBvZiB1cHBlcmNhc2VkIGNvZGVwb2ludCBpbiBVVEYxNiBmb3JtYXQKKyAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0U3BlY2lhbFVwcGVyT3JUaXRsZUNhc2UoTG9jYWxlIGxvY2FsZSwgaW50IGluZGV4LCBpbnQgY2gsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3Rlckl0ZXJhdG9yIHVjaGFyaXRlciwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIHVwcGVyZmxhZywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdCdWZmZXIgYnVmZmVyKQorICAgIHsKKyAgICAgICAgaW50IGV4Y2VwdGlvbiA9IGdldEV4Y2VwdGlvbihpbmRleCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3RlclByb3BlcnR5LkVYQ19TUEVDSUFMX0NBU0lOR18pOworICAgICAgICBpZiAoZXhjZXB0aW9uIDwgMCkgeworICAgICAgICAgICAgU3RyaW5nIGxhbmd1YWdlID0gbG9jYWxlLmdldExhbmd1YWdlKCk7CisgICAgICAgICAgICAvLyB1c2UgaGFyZGNvZGVkIGNvbmRpdGlvbnMgYW5kIG1hcHBpbmdzCisgICAgICAgICAgICBpZiAoKGxhbmd1YWdlLmVxdWFscyhUVVJLSVNIXykgfHwgbGFuZ3VhZ2UuZXF1YWxzKEFaRVJCQUlKQU5JXykpCisgICAgICAgICAgICAgICAgJiYgY2ggPT0gTEFUSU5fU01BTExfTEVUVEVSX0lfKSB7CisgICAgICAgICAgICAgICAgLy8gdHVya2lzaDogaSBtYXBzIHRvIGRvdHRlZCBJCisgICAgICAgICAgICAgICAgLy8gIyBUdXJraXNoIGFuZCBBemVyaQorICAgICAgICAgICAgICAgIC8vICMgSSBhbmQgaS1kb3RsZXNzOyBJLWRvdCBhbmQgaSBhcmUgY2FzZSBwYWlycyBpbiBUdXJraXNoIGFuZCBBemVyaQorICAgICAgICAgICAgICAgIC8vICMgVGhlIGZvbGxvd2luZyBydWxlcyBoYW5kbGUgdGhvc2UgY2FzZXMuCisgICAgICAgICAgICAgICAgLy8gIyBXaGVuIHVwcGVyY2FzaW5nLCBpIHR1cm5zIGludG8gYSBkb3R0ZWQgY2FwaXRhbCBJCisgICAgICAgICAgICAgICAgLy8gMDA2OTsgMDA2OTsgMDEzMDsgMDEzMDsgdHI7ICMgTEFUSU4gU01BTEwgTEVUVEVSIEkKKyAgICAgICAgICAgICAgICAvLyAwMDY5OyAwMDY5OyAwMTMwOyAwMTMwOyBhejsgIyBMQVRJTiBTTUFMTCBMRVRURVIgSQorICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoTEFUSU5fQ0FQSVRBTF9MRVRURVJfSV9XSVRIX0RPVF9BQk9WRV8pOworICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgfSAKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGxhbmd1YWdlLmVxdWFscyhMSVRIVUFOSUFOXykgJiYgY2ggPT0gQ09NQklOSU5HX0RPVF9BQk9WRV8gCisgICAgICAgICAgICAgICAgJiYgaXNQcmVjZWRlZEJ5U29mdERvdHRlZCh1Y2hhcml0ZXIsIHVjaGFyaXRlci5nZXRJbmRleCgpKSkgeworICAgICAgICAgICAgICAgIC8vICMgTGl0aHVhbmlhbgorICAgICAgICAgICAgICAgIC8vICMgTGl0aHVhbmlhbiByZXRhaW5zIHRoZSBkb3QgaW4gYSBsb3dlcmNhc2UgaSB3aGVuIGZvbGxvd2VkIAorICAgICAgICAgICAgICAgIC8vIGJ5IGFjY2VudHMuCisgICAgICAgICAgICAgICAgLy8gIyBSZW1vdmUgRE9UIEFCT1ZFIGFmdGVyICJpIiB3aXRoIHVwcGVyIG9yIHRpdGxlY2FzZQorICAgICAgICAgICAgICAgIC8vIDAzMDc7IDAzMDc7IDsgOyBsdCBBZnRlcl9Tb2Z0X0RvdHRlZDsgIyBDT01CSU5JTkcgRE9UIEFCT1ZFCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxpdGh1YW5pYW46IHJlbW92ZSBET1QgQUJPVkUgYWZ0ZXIgVSswMDY5ICJpIiB3aXRoIAorICAgICAgICAgICAgICAgIC8vIHVwcGVyIG9yIHRpdGxlY2FzZQorICAgICAgICAgICAgICAgIHJldHVybiAwOyAvLyByZW1vdmUgdGhlIGRvdCAoY29udGludWUgd2l0aG91dCBvdXRwdXQpCisgICAgICAgICAgICB9IAorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBubyBrbm93biBjb25kaXRpb25hbCBzcGVjaWFsIGNhc2UgbWFwcGluZywgdXNlIGEgbm9ybWFsIG1hcHBpbmcKKyAgICAgICAgICAgaWYgKCF1cHBlcmZsYWcgJiYgaGFzRXhjZXB0aW9uVmFsdWUoaW5kZXgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3RlclByb3BlcnR5LkVYQ19USVRMRUNBU0VfKSkgeworICAgICAgICAgICAgICAgY2ggPSBnZXRFeGNlcHRpb24oaW5kZXgsIFVDaGFyYWN0ZXJQcm9wZXJ0eS5FWENfVElUTEVDQVNFXyk7ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgfQorICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgIGlmIChoYXNFeGNlcHRpb25WYWx1ZShpbmRleCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3RlclByb3BlcnR5LkVYQ19VUFBFUkNBU0VfKSkgeworCSAgICAgICAgICAgICAgIGNoID0gZ2V0RXhjZXB0aW9uKGluZGV4LCBVQ2hhcmFjdGVyUHJvcGVydHkuRVhDX1VQUEVSQ0FTRV8pOyAKKyAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgfQorICAgICAgICAgICAKKyAgICAgICAgICAgVVRGMTYuYXBwZW5kKGJ1ZmZlciwgY2gpOworICAgICAgICAgICByZXR1cm4gVVRGMTYuZ2V0Q2hhckNvdW50KGNoKTsKKyAgICAgICAgfQorICAgICAgICAKKwkJLy8gZ2V0IHRoZSBzcGVjaWFsIGNhc2UgbWFwcGluZyBzdHJpbmcgZnJvbSB0aGUgZGF0YSBmaWxlCisgICAgICAgIGluZGV4ID0gZXhjZXB0aW9uICYgTEFTVF9DSEFSX01BU0tfOworICAgICAgICBpbnQgb2xkbGVuZ3RoID0gYnVmZmVyLmxlbmd0aCgpOworICAgICAgICBpZiAodXBwZXJmbGFnKSB7CisJICAgICAgICBnZXRVcHBlckNhc2UoaW5kZXgsIGJ1ZmZlcik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgCWdldFRpdGxlQ2FzZShpbmRleCwgYnVmZmVyKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYnVmZmVyLmxlbmd0aCgpIC0gb2xkbGVuZ3RoOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSB1cHBlciBvciB0aXRsZSBjYXNlIG1hcCBvZiB0aGUgY29kZXBvaW50CisgICAgICogQHBhcmFtIGxvY2FsZSBsb2NhbGUgd2hpY2ggdGhlIG1hcHBpbmdzIHdpbGwgYmUgc2VhcmNoZWQgCisgICAgICogQHBhcmFtIGNoIGNvZGVwb2ludCB3aG9zZSB1cHBlciBvciB0aXRsZSBjYXNlIHdpbGwgYmUgbWFwcGVkCisgICAgICogQHBhcmFtIHVjaGFyaXRlciB0ZXh0IGl0ZXJhdG9yIHBvc2l0aW9uZWQgYXQgdGhlIGNvZGVwb2ludAorICAgICAqIEBwYXJhbSB1cHBlcmZsYWcgZmxhZyB0cnVlIGlmIHVwcGVyY2FzZSBpcyBkZXNpcmVkLCBmYWxzZSBmb3IgdGl0bGUgY2FzZQorICAgICAqIEBwYXJhbSBidWZmZXIgYnVmZmVyIHRvIHN0b3JlIHJlc3VsdCBtYXAKKyAgICAgKiBAcmV0dXJuIHNpemUgb2YgdXBwZXJjYXNlZCBjb2RlcG9pbnQgaW4gVVRGMTYgZm9ybWF0CisgICAgICovCisJcHVibGljIGludCB0b1VwcGVyT3JUaXRsZUNhc2UoTG9jYWxlIGxvY2FsZSwgaW50IGNoLCAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVySXRlcmF0b3IgdWNoYXJpdGVyLCAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIHVwcGVyZmxhZywgU3RyaW5nQnVmZmVyIGJ1ZmZlcikgCisgICAgeworICAgICAgICBpbnQgcHJvcHMgPSBnZXRQcm9wZXJ0eShjaCk7CisgICAgICAgIGlmICgocHJvcHMgJiBFWENFUFRJT05fTUFTSykgPT0gMCkgeworICAgICAgICAgICAgaW50IHR5cGUgPSBwcm9wcyAmIFRZUEVfTUFTSzsKKyAgICAgICAgICAgIGlmICh0eXBlID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5MT1dFUkNBU0VfTEVUVEVSKSB7CisgICAgICAgICAgICAJY2ggLT0gVUNoYXJhY3RlclByb3BlcnR5LmdldFNpZ25lZFZhbHVlKHByb3BzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGludCBpbmRleCA9IFVDaGFyYWN0ZXJQcm9wZXJ0eS5nZXRFeGNlcHRpb25JbmRleChwcm9wcyk7CisgICAgICAgICAgICBpZiAoaGFzRXhjZXB0aW9uVmFsdWUoaW5kZXgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXJQcm9wZXJ0eS5FWENfU1BFQ0lBTF9DQVNJTkdfKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBnZXRTcGVjaWFsVXBwZXJPclRpdGxlQ2FzZShsb2NhbGUsIGluZGV4LCBjaCwgdWNoYXJpdGVyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBwZXJmbGFnLCBidWZmZXIpOworICAgICAgICAgICAgfSAKKyAgICAgICAgICAgIGlmICghdXBwZXJmbGFnICYmIGhhc0V4Y2VwdGlvblZhbHVlKGluZGV4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3RlclByb3BlcnR5LkVYQ19USVRMRUNBU0VfKSkgeworICAgICAgICAgICAgICAgIGNoID0gZ2V0RXhjZXB0aW9uKGluZGV4LCBVQ2hhcmFjdGVyUHJvcGVydHkuRVhDX1RJVExFQ0FTRV8pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgCWlmIChoYXNFeGNlcHRpb25WYWx1ZShpbmRleCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXJQcm9wZXJ0eS5FWENfVVBQRVJDQVNFXykpIHsKKyAgICAgICAgICAgICAgICAgICAgY2ggPSBnZXRFeGNlcHRpb24oaW5kZXgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyUHJvcGVydHkuRVhDX1VQUEVSQ0FTRV8pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBVVEYxNi5hcHBlbmQoYnVmZmVyLCBjaCk7CisgICAgICAgIHJldHVybiBVVEYxNi5nZXRDaGFyQ291bnQoY2gpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSB1cHBlciBvciB0aXRsZSBjYXNlIG1hcCBvZiB0aGUgY29kZXBvaW50CisgICAgICogQHBhcmFtIGxvY2FsZSBsb2NhbGUgd2hpY2ggdGhlIG1hcHBpbmdzIHdpbGwgYmUgc2VhcmNoZWQgCisgICAgICogQHBhcmFtIGNoIGNvZGVwb2ludCB3aG9zZSB1cHBlciBvciB0aXRsZSBjYXNlIHdpbGwgYmUgbWFwcGVkCisgICAgICogQHBhcmFtIHVjaGFyaXRlciB0ZXh0IGl0ZXJhdG9yIHBvc2l0aW9uZWQgYXQgdGhlIGNvZGVwb2ludAorICAgICAqIEBwYXJhbSB1cHBlcmZsYWcgZmxhZyB0cnVlIGlmIHVwcGVyY2FzZSBpcyBkZXNpcmVkLCBmYWxzZSBmb3IgdGl0bGUgY2FzZQorICAgICAqIEBwYXJhbSBidWZmZXIgYnVmZmVyIHRvIHN0b3JlIHJlc3VsdCBtYXAKKyAgICAgKiBAcmV0dXJuIHNpemUgb2YgdXBwZXJjYXNlZCBjb2RlcG9pbnQgaW4gVVRGMTYgZm9ybWF0CisgICAgICovCisJcHVibGljIGludCB0b1VwcGVyT3JUaXRsZUNhc2UoTG9jYWxlIGxvY2FsZSwgaW50IGNoLCAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVySXRlcmF0b3IgdWNoYXJpdGVyLCAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIHVwcGVyZmxhZywgY2hhciBidWZmZXJbXSkgCisgICAgeworICAgICAgICBpbnQgcHJvcHMgPSBnZXRQcm9wZXJ0eShjaCk7CisgICAgICAgIGlmICgocHJvcHMgJiBFWENFUFRJT05fTUFTSykgPT0gMCkgeworICAgICAgICAgICAgaW50IHR5cGUgPSBwcm9wcyAmIFRZUEVfTUFTSzsKKyAgICAgICAgICAgIGlmICh0eXBlID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5MT1dFUkNBU0VfTEVUVEVSKSB7CisgICAgICAgICAgICAJY2ggLT0gVUNoYXJhY3RlclByb3BlcnR5LmdldFNpZ25lZFZhbHVlKHByb3BzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGludCBpbmRleCA9IFVDaGFyYWN0ZXJQcm9wZXJ0eS5nZXRFeGNlcHRpb25JbmRleChwcm9wcyk7CisgICAgICAgICAgICBpZiAoaGFzRXhjZXB0aW9uVmFsdWUoaW5kZXgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXJQcm9wZXJ0eS5FWENfU1BFQ0lBTF9DQVNJTkdfKSkgeworICAgICAgICAgICAgICAgCVN0cmluZ0J1ZmZlciBzdHJidWZmZXIgPSBuZXcgU3RyaW5nQnVmZmVyKDEpOworICAgICAgICAgICAgICAgIGludCByZXN1bHQgPSBnZXRTcGVjaWFsVXBwZXJPclRpdGxlQ2FzZShsb2NhbGUsIGluZGV4LCBjaCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVjaGFyaXRlciwgdXBwZXJmbGFnLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyYnVmZmVyKTsKKyAgICAgICAgICAgICAgICBzdHJidWZmZXIuZ2V0Q2hhcnMoMCwgcmVzdWx0LCBidWZmZXIsIDApOworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICB9IAorICAgICAgICAgICAgaWYgKCF1cHBlcmZsYWcgJiYgaGFzRXhjZXB0aW9uVmFsdWUoaW5kZXgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyUHJvcGVydHkuRVhDX1RJVExFQ0FTRV8pKSB7CisgICAgICAgICAgICAgICAgY2ggPSBnZXRFeGNlcHRpb24oaW5kZXgsIFVDaGFyYWN0ZXJQcm9wZXJ0eS5FWENfVElUTEVDQVNFXyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAJaWYgKGhhc0V4Y2VwdGlvblZhbHVlKGluZGV4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3RlclByb3BlcnR5LkVYQ19VUFBFUkNBU0VfKSkgeworICAgICAgICAgICAgICAgICAgICBjaCA9IGdldEV4Y2VwdGlvbihpbmRleCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXJQcm9wZXJ0eS5FWENfVVBQRVJDQVNFXyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChjaCA8IFVURjE2LlNVUFBMRU1FTlRBUllfTUlOX1ZBTFVFKSB7CisgICAgICAgIAlidWZmZXJbMF0gPSAoY2hhciljaDsKKyAgICAgICAgCXJldHVybiAxOworICAgICAgICB9CisgICAgICAgIGJ1ZmZlclswXSA9IFVURjE2LmdldExlYWRTdXJyb2dhdGUoY2gpOworICAgICAgICBidWZmZXJbMV0gPSBVVEYxNi5nZXRUcmFpbFN1cnJvZ2F0ZShjaCk7CisgICAgICAgIHJldHVybiAyOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSB1cHBlcmNhc2luZyBvZiB0aGUgYXJndW1lbnQgc3RyaW5nLgorICAgICAqIEBwYXJhbSBsb2NhbGUgbG9jYWxlIHdoaWNoIHRoZSBtYXBwaW5ncyB3aWxsIGJlIHNlYXJjaGVkCisgICAgICogQHBhcmFtIHN0ciBzdHJpbmcgdG8gbWFwIAorICAgICAqIEBwYXJhbSBzdGFydCBzdGFydCBpbmRleCBvZiB0aGUgc3Vic3RyaW5nIHRvIG1hcAorICAgICAqIEBwYXJhbSBsaW1pdCBvbmUgaW5kZXggcGFzcyB0aGUgbGFzdCBjaGFyYWN0ZXIgdG8gbWFwCisgICAgICovCisgICAgcHVibGljIFN0cmluZyB0b1VwcGVyQ2FzZShMb2NhbGUgbG9jYWxlLCBTdHJpbmcgc3RyLCBpbnQgc3RhcnQsIGludCBsaW1pdCkgCisgICAgeworICAgICAgICBVQ2hhcmFjdGVySXRlcmF0b3IgdWNoYXJJdGVyID0gVUNoYXJhY3Rlckl0ZXJhdG9yLmdldEluc3RhbmNlKHN0cik7CisgICAgICAgIGludCAgICAgICAgICAgICAgICBzdHJJbmRleCAgPSBzdGFydDsKKyAgICAgICAgU3RyaW5nQnVmZmVyICAgICAgIHJlc3VsdCAgICA9IG5ldyBTdHJpbmdCdWZmZXIobGltaXQgLSBzdGFydCk7CisgICAgICAgIAorICAgICAgICB3aGlsZSAoc3RySW5kZXggPCBsaW1pdCkgeyAKKyAgICAgICAgCXVjaGFySXRlci5zZXRJbmRleChzdHJJbmRleCk7CisJICAgICAgICBpbnQgY2ggPSB1Y2hhckl0ZXIuY3VycmVudENvZGVQb2ludCgpOworCSAgICAgICAgCisJICAgICAgICB0b1VwcGVyT3JUaXRsZUNhc2UobG9jYWxlLCBjaCwgdWNoYXJJdGVyLCB0cnVlLCByZXN1bHQpOworCSAgICAgICAgc3RySW5kZXggKys7CisJICAgICAgICBpZiAoY2ggPj0gVVRGMTYuU1VQUExFTUVOVEFSWV9NSU5fVkFMVUUpIHsKKwkgICAgICAgIAlzdHJJbmRleCArKzsKKwkgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICogPHA+R2V0cyB0aGUgdGl0bGVjYXNlIHZlcnNpb24gb2YgdGhlIGFyZ3VtZW50IHN0cmluZy48L3A+CisgICAgKiA8cD5Qb3NpdGlvbiBmb3IgdGl0bGVjYXNpbmcgaXMgZGV0ZXJtaW5lZCBieSB0aGUgYXJndW1lbnQgYnJlYWsgCisgICAgKiBpdGVyYXRvciwgaGVuY2UgdGhlIHVzZXIgY2FuIGN1c3RvbWl6ZWQgaGlzIGJyZWFrIGl0ZXJhdG9yIGZvciAKKyAgICAqIGEgc3BlY2lhbGl6ZWQgdGl0bGVjYXNpbmcuIEluIHRoaXMgY2FzZSBvbmx5IHRoZSBmb3J3YXJkIGl0ZXJhdGlvbiAKKyAgICAqIG5lZWRzIHRvIGJlIGltcGxlbWVudGVkLgorICAgICogSWYgdGhlIGJyZWFrIGl0ZXJhdG9yIHBhc3NlZCBpbiBpcyBudWxsLCB0aGUgZGVmYXVsdCBVbmljb2RlIGFsZ29yaXRobQorICAgICogd2lsbCBiZSB1c2VkIHRvIGRldGVybWluZSB0aGUgdGl0bGVjYXNlIHBvc2l0aW9ucy4KKyAgICAqIDwvcD4KKyAgICAqIDxwPk9ubHkgcG9zaXRpb25zIHJldHVybmVkIGJ5IHRoZSBicmVhayBpdGVyYXRvciB3aWxsIGJlIHRpdGxlIGNhc2VkLAorICAgICogY2hhcmFjdGVyIGluIGJldHdlZW4gdGhlIHBvc2l0aW9ucyB3aWxsIGFsbCBiZSBpbiBsb3dlciBjYXNlLjwvcD4KKyAgICAqIDxwPkNhc2luZyBpcyBkZXBlbmRlbnQgb24gdGhlIGRlZmF1bHQgbG9jYWxlIGFuZCBjb250ZXh0LXNlbnNpdGl2ZTwvcD4KKyAgICAqIEBwYXJhbSBzdHIgc291cmNlIHN0cmluZyB0byBiZSBwZXJmb3JtZWQgb24KKyAgICAqIEBwYXJhbSBicmVha2l0ZXIgYnJlYWsgaXRlcmF0b3IgdG8gZGV0ZXJtaW5lIHRoZSBwb3NpdGlvbnMgaW4gd2hpY2gKKyAgICAqICAgICAgICB0aGUgY2hhcmFjdGVyIHNob3VsZCBiZSB0aXRsZSBjYXNlZC4KKyAgICAqIEByZXR1cm4gbG93ZXJjYXNlIHZlcnNpb24gb2YgdGhlIGFyZ3VtZW50IHN0cmluZworICAgICovCisgCXB1YmxpYyBTdHJpbmcgdG9UaXRsZUNhc2UoTG9jYWxlIGxvY2FsZSwgU3RyaW5nIHN0ciwgCisgCSAgICAgICAgICAgICAgICAgICAgICAgICAgQnJlYWtJdGVyYXRvciBicmVha2l0ZXIpCisgCXsKKyAJCVVDaGFyYWN0ZXJJdGVyYXRvciB1Y2hhckl0ZXIgPSBVQ2hhcmFjdGVySXRlcmF0b3IuZ2V0SW5zdGFuY2Uoc3RyKTsKKwkJaW50ICAgICAgICAgICAgICAgIGxlbmd0aCAgICA9IHN0ci5sZW5ndGgoKTsKKyAgICAgICAgU3RyaW5nQnVmZmVyICAgICAgIHJlc3VsdCAgICA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgCisgICAgICAgIGJyZWFraXRlci5zZXRUZXh0KHN0cik7CisgICAgICAgIAorICAgICAgICBpbnQgICAgICAgICAgICAgICAgaW5kZXggICAgID0gYnJlYWtpdGVyLmZpcnN0KCk7CisgICAgICAgCS8vIHRpdGxlY2FzaW5nIGxvb3AKKwkgICAgd2hpbGUgKGluZGV4ICE9IEJyZWFrSXRlcmF0b3IuRE9ORSAmJiBpbmRleCA8IGxlbmd0aCkgeworCSAgICAJLy8gdGl0bGVjYXNlIHRoZSBjaGFyYWN0ZXIgYXQgdGhlIGZvdW5kIGluZGV4CisJICAgICAgICBpbnQgY2ggPSBVVEYxNi5jaGFyQXQoc3RyLCBpbmRleCk7CisJICAgICAgICB1Y2hhckl0ZXIuc2V0SW5kZXgoaW5kZXgpOworCSAgICAgICAgaW5kZXggKz0gVVRGMTYuZ2V0Q2hhckNvdW50KGNoKTsKKyAgICAgICAgCXRvVXBwZXJPclRpdGxlQ2FzZShsb2NhbGUsIGNoLCB1Y2hhckl0ZXIsIGZhbHNlLCByZXN1bHQpOworICAgICAgICAJaW50IG5leHQgPSBicmVha2l0ZXIubmV4dCgpOworICAgICAgICAJaWYgKGluZGV4ICE9IEJyZWFrSXRlcmF0b3IuRE9ORSAmJiBpbmRleCA8IG5leHQpIHsKKwkgICAgICAgIAkvLyBsb3dlcmNhc2UgW3ByZXYuLmluZGV4XQorICAgICAgICAJCXRvTG93ZXJDYXNlKGxvY2FsZSwgc3RyLCBpbmRleCwgbmV4dCwgcmVzdWx0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGluZGV4ID0gbmV4dDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CisgCX0KKworICAgIC8qKgorICAgICAqIDxwPgorICAgICAqIFVuaWNvZGUgcHJvcGVydHkgbmFtZXMgYW5kIHByb3BlcnR5IHZhbHVlIG5hbWVzIGFyZSBjb21wYXJlZAorICAgICAqICJsb29zZWx5Ii4gUHJvcGVydHlbVmFsdWVdQWxpYXNlcy50eHQgc2F5OgorICAgICAqIDxxdW90ZT4KKyAgICAgKiAgICJXaXRoIGxvb3NlIG1hdGNoaW5nIG9mIHByb3BlcnR5IG5hbWVzLCB0aGUgY2FzZSBkaXN0aW5jdGlvbnMsIAorICAgICAqICAgIHdoaXRlc3BhY2UsIGFuZCAnXycgYXJlIGlnbm9yZWQuIgorICAgICAqIDwvcXVvdGU+CisgICAgICogPC9wPgorICAgICAqIDxwPgorICAgICAqIFRoaXMgZnVuY3Rpb24gZG9lcyBqdXN0IHRoYXQsIGZvciBBU0NJSSAoY2hhciAqKSBuYW1lIHN0cmluZ3MuCisgICAgICogSXQgaXMgYWxtb3N0IGlkZW50aWNhbCB0byB1Y252X2NvbXBhcmVOYW1lcygpIGJ1dCBhbHNvIGlnbm9yZXMKKyAgICAgKiBBU0NJSSBXaGl0ZV9TcGFjZSBjaGFyYWN0ZXJzIChVKzAwMDkuLlUrMDAwZCkuCisgICAgICogPC9wPgorICAgICAqIEBwYXJhbSBuYW1lMSBuYW1lIHRvIGNvbXBhcmUKKyAgICAgKiBAcGFyYW0gbmFtZTIgbmFtZSB0byBjb21wYXJlCisgICAgICogQHJldHVybiAwIGlmIG5hbWVzIGFyZSBlcXVhbCwgPCAwIGlmIG5hbWUxIGlzIGxlc3MgdGhhbiBuYW1lMiBhbmQgPiAwCisgICAgICogICAgICAgICBpZiBuYW1lMSBpcyBncmVhdGVyIHRoYW4gbmFtZTIuCisgICAgICovCisgICAgLyogdG8gYmUgaW1wbGVtZW50ZWQgaW4gMi40CisgICAgICogcHVibGljIHN0YXRpYyBpbnQgY29tcGFyZVByb3BlcnR5TmFtZXMoU3RyaW5nIG5hbWUxLCBTdHJpbmcgbmFtZTIpIAorICAgIHsKKyAgICAgICAgaW50IHJlc3VsdCA9IDA7CisgICAgICAgIGludCBpMSA9IDA7CisgICAgICAgIGludCBpMiA9IDA7CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBjaGFyIGNoMSA9IDA7CisgICAgICAgICAgICBjaGFyIGNoMiA9IDA7CisgICAgICAgICAgICAvLyBJZ25vcmUgZGVsaW1pdGVycyAnLScsICdfJywgYW5kIEFTQ0lJIFdoaXRlX1NwYWNlIAorICAgICAgICAgICAgaWYgKGkxIDwgbmFtZTEubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICBjaDEgPSBuYW1lMS5jaGFyQXQoaTEgKyspOworICAgICAgICAgICAgfQorICAgICAgICAgICAgd2hpbGUgKGNoMSA9PSAnLScgfHwgY2gxID09ICdfJyB8fCBjaDEgPT0gJyAnIHx8IGNoMSA9PSAnXHQnIAorICAgICAgICAgICAgICAgICAgIHx8IGNoMSA9PSAnXG4nIC8vIHN5bndlZSB3aGF0IGlzIHx8IGNoMSA9PSAnXHYnCisgICAgICAgICAgICAgICAgICAgfHwgY2gxID09ICdcZicgfHwgY2gxPT0nXHInKSB7CisgICAgICAgICAgICAgICAgaWYgKGkxIDwgbmFtZTEubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2gxID0gbmFtZTEuY2hhckF0KGkxICsrKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGNoMSA9IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGkyIDwgbmFtZTIubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICBjaDIgPSBuYW1lMi5jaGFyQXQoaTIgKyspOworICAgICAgICAgICAgfQorICAgICAgICAgICAgd2hpbGUgKGNoMiA9PSAnLScgfHwgY2gyID09ICdfJyB8fCBjaDIgPT0gJyAnIHx8IGNoMiA9PSAnXHQnIAorICAgICAgICAgICAgICAgICAgIHx8IGNoMiA9PSAnXG4nIC8vIHN5bndlZSB3aGF0IGlzIHx8IGNoMSA9PSAnXHYnIAorICAgICAgICAgICAgICAgICAgIHx8IGNoMiA9PSAnXGYnIHx8IGNoMj09J1xyJykgeworICAgICAgICAgICAgICAgIGlmIChpMiA8IG5hbWUyLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGNoMiA9IG5hbWUyLmNoYXJBdChpMiArKyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBjaDIgPSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgIC8vIElmIHdlIHJlYWNoIHRoZSBlbmRzIG9mIGJvdGggc3RyaW5ncyB0aGVuIHRoZXkgbWF0Y2gKKyAgICAgICAgICAgIGlmIChjaDEgPT0gMCAmJiBjaDIgPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBDYXNlLWluc2Vuc2l0aXZlIGNvbXBhcmlzb24KKyAgICAgICAgICAgIGlmIChjaDEgIT0gY2gyKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gQ2hhcmFjdGVyLnRvTG93ZXJDYXNlKGNoMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gQ2hhcmFjdGVyLnRvTG93ZXJDYXNlKGNoMik7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgICovCisgICAgCisgICAgLyoqCisgICAgICogQ2hlY2tzIGlmIHRoZSBhcmd1bWVudCBjIGlzIHRvIGJlIHRyZWF0ZWQgYXMgYSB3aGl0ZSBzcGFjZSBpbiBJQ1UKKyAgICAgKiBydWxlcy4gVXN1YWxseSBJQ1UgcnVsZSB3aGl0ZSBzcGFjZXMgYXJlIGlnbm9yZWQgdW5sZXNzIHF1b3RlZC4KKyAgICAgKiBAcGFyYW0gYyBjb2RlcG9pbnQgdG8gY2hlY2sKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgYyBpcyBhIElDVSB3aGl0ZSBzcGFjZQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc1J1bGVXaGl0ZVNwYWNlKGludCBjKSAKKyAgICB7CisgICAgICAgIC8vICJ3aGl0ZSBzcGFjZSIgaW4gdGhlIHNlbnNlIG9mIElDVSBydWxlIHBhcnNlcnM6IENmK1doaXRlX1NwYWNlCisgICAgICAgIFVDaGFyYWN0ZXJQcm9wZXJ0eSBwcm9wZXJ0eSA9IFVDaGFyYWN0ZXJQcm9wZXJ0eS5nZXRJbnN0YW5jZSgpOworICAgICAgICByZXR1cm4gKHByb3BlcnR5LmdldFByb3BlcnR5KGMpICYgVFlQRV9NQVNLKSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5GT1JNQVQgCisgICAgICAgICAgICAgICB8fCBwcm9wZXJ0eS5oYXNCaW5hcnlQcm9wZXJ0eShjLCBVUHJvcGVydHkuV0hJVEVfU1BBQ0UpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldCB0aGUgdGhlIG1heGltdW0gdmFsdWVzIGZvciBzb21lIGVudW0vaW50IHByb3BlcnRpZXMuCisgICAgICogQHJldHVybiBtYXhpbXVtIHZhbHVlcyBmb3IgdGhlIGludGVnZXIgcHJvcGVydGllcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldE1heEJsb2NrU2NyaXB0VmFsdWVzKCkgCisgICAgeworICAgICAgICByZXR1cm4gbV9tYXhCbG9ja1NjcmlwdFZhbHVlXzsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgdHlwZSBtYXNrCisgICAgICogQHBhcmFtIHR5cGUgY2hhcmFjdGVyIHR5cGUKKyAgICAgKiBAcmV0dXJuIG1hc2sKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludCBnZXRNYXNrKGludCB0eXBlKSAKKyAgICB7CisgICAgICAgIHJldHVybiAxIDw8IHR5cGU7CisgICAgfQorICAgIAorICAgIC8vIHByb3RlY3RlZCB2YXJpYWJsZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgCisgICAgLyoqCisgICAgKiBDYXNlIHRhYmxlCisgICAgKi8KKyAgICBjaGFyIG1fY2FzZV9bXTsKKyAgICAgIAorICAgIC8qKgorICAgICogRXhjZXB0aW9uIHByb3BlcnR5IHRhYmxlCisgICAgKi8KKyAgICBpbnQgbV9leGNlcHRpb25fW107CisgICAgLyoqCisgICAgICogRXh0cmEgcHJvcGVydHkgdHJpZQorICAgICAqLworICAgIENoYXJUcmllIG1fYWRkaXRpb25hbFRyaWVfOworICAgIC8qKgorICAgICAqIEV4dHJhIHByb3BlcnR5IHZlY3RvcnMsIDFzdCBjb2x1bW4gZm9yIGFnZSBhbmQgc2Vjb25kIGZvciBiaW5hcnkgCisgICAgICogcHJvcGVydGllcy4KKyAgICAgKi8KKyAgICBpbnQgbV9hZGRpdGlvbmFsVmVjdG9yc19bXTsKKyAgICAvKioKKyAgICAgKiBOdW1iZXIgb2YgYWRkaXRpb25hbCBjb2x1bW5zCisgICAgICovCisgICAgaW50IG1fYWRkaXRpb25hbENvbHVtbnNDb3VudF87CisgICAgLyoqCisgICAgICogTWF4aW11bSB2YWx1ZXMgZm9yIGJsb2NrIGFuZCBzY3JpcHQgY29kZXMsIGJpdHMgdXNlZCBhcyBpbiB2ZWN0b3Igd29yZAorICAgICAqIDAKKyAgICAgKi8KKyAgICBpbnQgbV9tYXhCbG9ja1NjcmlwdFZhbHVlXzsKKyAgICAKKyAgICAvLyBwcml2YXRlIHZhcmlhYmxlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIAorICAJLyoqCisgICAgICogVW5pY29kZURhdGEudHh0IHByb3BlcnR5IG9iamVjdAorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIFVDaGFyYWN0ZXJQcm9wZXJ0eSBJTlNUQU5DRV8gPSBudWxsOyAgIAorICAgICAgICAKKyAgICAvKioKKyAgICAqIERlZmF1bHQgbmFtZSBvZiB0aGUgZGF0YWZpbGUKKyAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBEQVRBX0ZJTEVfTkFNRV8gPSAiZGF0YS91cHJvcHMuaWN1IjsKKyAgICAgIAorICAgIC8qKgorICAgICogRGVmYXVsdCBidWZmZXIgc2l6ZSBvZiBkYXRhZmlsZQorICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IERBVEFfQlVGRkVSX1NJWkVfID0gMjUwMDA7CisgICAgICAKKyAgICAvKioKKyAgICAqIFRoaXMsIGZyb20gd2hhdCBpIGluZmVyIGlzIHRoZSBtYXggc2l6ZSBvZiB0aGUgaW5kaWNhdG9ycyB1c2VkIGZvciB0aGUKKyAgICAqIGV4Y2VwdGlvbiB2YWx1ZXMuCisgICAgKiBOdW1iZXIgb2YgYml0cyBpbiBhbiA4LWJpdCBpbnRlZ2VyIHZhbHVlIAorICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEVYQ19HUk9VUF8gPSA4OworICAgICAgCisgICAgLyoqCisgICAgKiBNYXNrIHRvIGdldCB0aGUgZ3JvdXAgIAorICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEVYQ19HUk9VUF9NQVNLXyA9IDI1NTsKKyAgICAgIAorICAgIC8qKgorICAgICogTWFzayB0byBnZXQgdGhlIGRpZ2l0IHZhbHVlIGluIHRoZSBleGNlcHRpb24gcmVzdWx0CisgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRVhDX0RJR0lUX01BU0tfID0gMHhGRkZGOworICAgICAgCisgICAgLyoqCisgICAgKiBPZmZzZXQgdGFibGUgZm9yIGRhdGEgaW4gZXhjZXB0aW9uIGJsb2NrLjxicj4KKyAgICAqIFRhYmxlIGZvcm1lZCBieSB0aGUgbnVtYmVyIG9mIGJpdHMgdXNlZCBmb3IgdGhlIGluZGV4LCBlLmcuIDAgPSAwIGJpdHMsIAorICAgICogMSA9IDEgYml0cy4KKyAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJ5dGUgRkxBR1NfT0ZGU0VUX1tdID0gCisgICAgeworICAgICAgICAwLCAxLCAxLCAyLCAxLCAyLCAyLCAzLCAxLCAyLCAyLCAzLCAyLCAzLCAzLCA0LAorICAgICAgICAxLCAyLCAyLCAzLCAyLCAzLCAzLCA0LCAyLCAzLCAzLCA0LCAzLCA0LCA0LCA1LAorICAgICAgICAxLCAyLCAyLCAzLCAyLCAzLCAzLCA0LCAyLCAzLCAzLCA0LCAzLCA0LCA0LCA1LAorICAgICAgICAyLCAzLCAzLCA0LCAzLCA0LCA0LCA1LCAzLCA0LCA0LCA1LCA0LCA1LCA1LCA2LAorICAgICAgICAxLCAyLCAyLCAzLCAyLCAzLCAzLCA0LCAyLCAzLCAzLCA0LCAzLCA0LCA0LCA1LAorICAgICAgICAyLCAzLCAzLCA0LCAzLCA0LCA0LCA1LCAzLCA0LCA0LCA1LCA0LCA1LCA1LCA2LAorICAgICAgICAyLCAzLCAzLCA0LCAzLCA0LCA0LCA1LCAzLCA0LCA0LCA1LCA0LCA1LCA1LCA2LAorICAgICAgICAzLCA0LCA0LCA1LCA0LCA1LCA1LCA2LCA0LCA1LCA1LCA2LCA1LCA2LCA2LCA3LAorICAgICAgICAxLCAyLCAyLCAzLCAyLCAzLCAzLCA0LCAyLCAzLCAzLCA0LCAzLCA0LCA0LCA1LAorICAgICAgICAyLCAzLCAzLCA0LCAzLCA0LCA0LCA1LCAzLCA0LCA0LCA1LCA0LCA1LCA1LCA2LAorICAgICAgICAyLCAzLCAzLCA0LCAzLCA0LCA0LCA1LCAzLCA0LCA0LCA1LCA0LCA1LCA1LCA2LAorICAgICAgICAzLCA0LCA0LCA1LCA0LCA1LCA1LCA2LCA0LCA1LCA1LCA2LCA1LCA2LCA2LCA3LAorICAgICAgICAyLCAzLCAzLCA0LCAzLCA0LCA0LCA1LCAzLCA0LCA0LCA1LCA0LCA1LCA1LCA2LAorICAgICAgICAzLCA0LCA0LCA1LCA0LCA1LCA1LCA2LCA0LCA1LCA1LCA2LCA1LCA2LCA2LCA3LAorICAgICAgICAzLCA0LCA0LCA1LCA0LCA1LCA1LCA2LCA0LCA1LCA1LCA2LCA1LCA2LCA2LCA3LAorICAgICAgICA0LCA1LCA1LCA2LCA1LCA2LCA2LCA3LCA1LCA2LCA2LCA3LCA2LCA3LCA3LCA4CisgICAgfTsKKyAgICAgIAorICAgIC8qKgorICAgICogTnVtZXJpYyB2YWx1ZSBzaGlmdAorICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFZBTFVFX1NISUZUXyA9IDIwOworICAgICAgCisgICAgLyoqCisgICAgKiBNYXNrIHRvIGJlIGFwcGxpZWQgYWZ0ZXIgc2hpZnRpbmcgdG8gb2J0YWluIGFuIHVuc2lnbmVkIG51bWVyaWMgdmFsdWUKKyAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBVTlNJR05FRF9WQUxVRV9NQVNLX0FGVEVSX1NISUZUXyA9IDB4N0ZGOworICAgIAorICAgIC8qKgorCSAqIFNoaWZ0IHRvIGdldCByZXNlcnZlZCB2YWx1ZQorCSAqLworCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBSRVNFUlZFRF9TSElGVF8gPSAxNTsKKwkKKwkvKioKKwkgKiBCaXQgaW5kaWNhdGluZyBleGNlcHRpb24KKwkgKi8KKyAgCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBFWENFUFRJT05fQklUID0gMSA8PCA1OworICAJCisgIAkvKiogCisgIAkgKiBCaXQgdG8gZ2V0IHRoZSBhY3R1YWwgcHJvcGVydHkgdmFsdWUKKyAgCSAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBWQUxVRV9CSVRTXyA9IDB4MTAwMDAgLSBWQUxVRV9TSElGVF87CisKKwkvKioKKwkgKiBNaW5pbXVtIHZhbHVlIG9mIGEgcHJvcGVydHkKKwkgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTUlOX1ZBTFVFXyA9IC0oMSA8PCAoVkFMVUVfQklUU18gLSAxKSk7CisgICAgCisgICAgLyoqCisgICAgICogTWF4aW11bSB2YWx1ZSBvZiBhIHByb3BlcnR5CisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1BWF9WQUxVRV8gPSAoMSA8PCAoVkFMVUVfQklUU18gLSAxKSkgLSAxOworICAgIC8qKgorICAgICAqIE1heGltdW0gbnVtYmVyIG9mIGV4Y2VwdGlvbnMKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBpbnQgTUFYX0VYQ0VQVElPTlNfQ09VTlRfID0gMSA8PCBWQUxVRV9CSVRTXzsKKworICAgIC8qKgorICAgICogVG8gZ2V0IHRoZSBsYXN0IDUgYml0cyBvdXQgZnJvbSBhIGRhdGEgdHlwZQorICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExBU1RfNV9CSVRfTUFTS18gPSAweDFGOworICAgICAgCisgICAgLyoqCisgICAgKiBTaGlmdCA1IGJpdHMKKyAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTSElGVF81XyA9IDU7CisgICAgLyoqCisgICAgKiBTaGlmdCAxMCBiaXRzCisgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU0hJRlRfMTBfID0gMTA7CisgICAgICAKKyAgICAvKioKKyAgICAqIEZvbGRpbmcgaW5kaWNhdG9yIG1hc2sKKyAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTVVBQTEVNRU5UQVJZX0ZPTERfSU5ESUNBVE9SX01BU0tfID0gMHg4MDAwOworICAgIC8qKgorICAgICogRm9sZGluZyBvZmZzZXQgbWFzaworICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNVUFBMRU1FTlRBUllfRk9MRF9PRkZTRVRfTUFTS18gPSAweDdGRkY7CisgICAgLyoqCisgICAgKiBTaGlmdCB2YWx1ZSBmb3IgbGVhZCBzdXJyb2dhdGUgdG8gZm9ybSBhIHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVyLgorICAgICovCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExFQURfU1VSUk9HQVRFX1NISUZUXyA9IDEwOworCS8qKiAKKyAgICAqIE9mZnNldCB0byBhZGQgdG8gY29tYmluZWQgc3Vycm9nYXRlIHBhaXIgdG8gYXZvaWQgbXNraW5nLgorICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNVUlJPR0FURV9PRkZTRVRfID0gCisgICAgICAgICAgICAgICAgICAgICAgICAgICBVVEYxNi5TVVBQTEVNRU5UQVJZX01JTl9WQUxVRSAtIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKFVURjE2LlNVUlJPR0FURV9NSU5fVkFMVUUgPDwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICBMRUFEX1NVUlJPR0FURV9TSElGVF8pIC0gCisgICAgICAgICAgICAgICAgICAgICAgICAgICBVVEYxNi5UUkFJTF9TVVJST0dBVEVfTUlOX1ZBTFVFOyAgIAorICAgIC8qKgorICAgICogTGF0aW4gdXBwZXJjYXNlIEkKKyAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgTEFUSU5fQ0FQSVRBTF9MRVRURVJfSV8gPSAweDQ5OworICAgIC8qKgorICAgICogQ29tYmluaW5nIGRvdCBhYm92ZQorICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciBDT01CSU5JTkdfRE9UX0FCT1ZFXyA9IDB4MzA3OworICAgIC8qKgorICAgICogTEFUSU4gU01BTEwgTEVUVEVSIEoKKyAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBMQVRJTl9TTUFMTF9MRVRURVJfSl8gPSAweDZhOworICAgIC8qKgorICAgICogTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBPR09ORUsKKyAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBMQVRJTl9TTUFMTF9MRVRURVJfSV9XSVRIX09HT05FS18gPSAweDEyZjsKKyAgICAvKioKKyAgICAqIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggVElMREUgQkVMT1cKKyAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBMQVRJTl9TTUFMTF9MRVRURVJfSV9XSVRIX1RJTERFX0JFTE9XXyA9IDB4MWUyZDsKKyAgICAvKioKKyAgICAqIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggRE9UIEJFTE9XCisgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTEFUSU5fU01BTExfTEVUVEVSX0lfV0lUSF9ET1RfQkVMT1dfID0gMHgxZWNiOworICAgIC8qKgorICAgICogQ29tYmluaW5nIGNsYXNzIGZvciBjb21iaW5pbmcgbWFyayBhYm92ZQorICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENPTUJJTklOR19NQVJLX0FCT1ZFX0NMQVNTXyA9IDIzMDsKKyAgICAKKyAgICAvKioKKyAgICAqIExBVElOIENBUElUQUwgTEVUVEVSIEoKKyAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBMQVRJTl9DQVBJVEFMX0xFVFRFUl9KXyA9IDB4NGE7CisgICAgCisgICAgLyoqCisgICAgKiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggT0dPTkVLCisgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTEFUSU5fQ0FQSVRBTF9JX1dJVEhfT0dPTkVLXyA9IDB4MTJlOworICAgIC8qKgorICAgICogTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIFRJTERFCisgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTEFUSU5fQ0FQSVRBTF9JX1dJVEhfVElMREVfID0gMHgxMjg7CisgICAgLyoqCisgICAgKiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggR1JBVkUKKyAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBMQVRJTl9DQVBJVEFMX0lfV0lUSF9HUkFWRV8gPSAweGNjOworICAgIC8qKgorICAgICogTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEFDVVRFCisgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTEFUSU5fQ0FQSVRBTF9JX1dJVEhfQUNVVEVfID0gMHhjZDsKKyAgICAvKioKKyAgICAqIENPTUJJTklORyBHUkFWRSBBQ0NFTlQKKyAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDT01CSU5JTkdfR1JBVkVfQUNDRU5UXyA9IDB4MzAwOworICAgIC8qKgorICAgICogQ09NQklOSU5HIEFDVVRFIEFDQ0VOVAorICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENPTUJJTklOR19BQ1VURV9BQ0NFTlRfID0gMHgzMDE7CisgICAgLyoqCisgICAgKiBDT01CSU5JTkcgVElMREUKKyAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDT01CSU5JTkdfVElMREVfID0gMHgzMDM7CisgICAgLyoqCisgICAgKiBHcmVlayBjYXBpdGFsIGxldHRlciBzaWdtYQorICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciBHUkVFS19DQVBJVEFMX0xFVFRFUl9TSUdNQV8gPSAweDNhMzsKKyAgICAvKioKKyAgICAqIEdyZWVrIHNtYWxsIGxldHRlciBzaWdtYQorICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciBHUkVFS19TTUFMTF9MRVRURVJfU0lHTUFfID0gMHgzYzM7CisgICAgLyoqCisgICAgKiBHcmVlayBzbWFsbCBsZXR0ZXIgcmhvCisgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjaGFyIEdSRUVLX1NNQUxMX0xFVFRFUl9SSE9fID0gMHgzYzI7CisgICAgLyoqCisgICAgKiBIeXBoZW5zCisgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSFlQSEVOXyAgICAgID0gMHgyMDEwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTT0ZUX0hZUEhFTl8gPSAweEFEOworICAgIC8qKgorICAgICogVG8gZ2V0IHRoZSBsYXN0IGNoYXJhY3RlciBvdXQgZnJvbSBhIGRhdGEgdHlwZQorICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExBU1RfQ0hBUl9NQVNLXyA9IDB4RkZGRjsKKyAgICAvKioKKyAgICAqIFRvIGdldCB0aGUgbGFzdCBieXRlIG91dCBmcm9tIGEgZGF0YSB0eXBlCisgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTEFTVF9CWVRFX01BU0tfID0gMHhGRjsKKyAgICAvKioKKyAgICAqIFNoaWZ0IDE2IGJpdHMKKyAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTSElGVF8xNl8gPSAxNjsKKyAgIAorICAgCS8vIGFkZGl0aW9uYWwgcHJvcGVydGllcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAJIAorICAgCS8qKgorICAgCSAqIEFkZGl0aW9uYWwgcHJvcGVydGllcyB1c2VkIGluIGludGVybmFsIHRyaWUgZGF0YQorICAgCSAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBXSElURV9TUEFDRV9QUk9QRVJUWV8gPSAwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBCSURJX0NPTlRST0xfUFJPUEVSVFlfID0gMTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSk9JTl9DT05UUk9MX1BST1BFUlRZXyA9IDI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IERBU0hfUFJPUEVSVFlfID0gMzsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSFlQSEVOX1BST1BFUlRZXyA9IDQ7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFFVT1RBVElPTl9NQVJLX1BST1BFUlRZXyA9IDU7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFRFUk1JTkFMX1BVTkNUVUFUSU9OX1BST1BFUlRZXyA9IDY7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE9USEVSX01BVEhfUFJPUEVSVFlfID0gNzsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSEVYX0RJR0lUX1BST1BFUlRZXyA9IDg7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEFTQ0lJX0hFWF9ESUdJVF9QUk9QRVJUWV8gPSA5OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBPVEhFUl9BTFBIQUJFVElDX1BST1BFUlRZXyA9IDEwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBJREVPR1JBUEhJQ19QUk9QRVJUWV8gPSAxMTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRElBQ1JJVElDX1BST1BFUlRZXyA9IDEyOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBFWFRFTkRFUl9QUk9QRVJUWV8gPSAxMzsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgT1RIRVJfTE9XRVJDQVNFX1BST1BFUlRZXyA9IDE0OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBPVEhFUl9VUFBFUkNBU0VfUFJPUEVSVFlfID0gMTU7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE5PTkNIQVJBQ1RFUl9DT0RFX1BPSU5UX1BST1BFUlRZXyA9IDE2OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBPVEhFUl9HUkFQSEVNRV9FWFRFTkRfUFJPUEVSVFlfID0gMTc7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdSQVBIRU1FX0xJTktfUFJPUEVSVFlfID0gMTg7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IElEU19CSU5BUllfT1BFUkFUT1JfUFJPUEVSVFlfID0gMTk7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IElEU19UUklOQVJZX09QRVJBVE9SX1BST1BFUlRZXyA9IDIwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBSQURJQ0FMX1BST1BFUlRZXyA9IDIxOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBVTklGSUVEX0lERU9HUkFQSF9QUk9QRVJUWV8gPSAyMjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgT1RIRVJfREVGQVVMVF9JR05PUkFCTEVfQ09ERV9QT0lOVF9QUk9QRVJUWV8gPSAyMzsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgREVQUkVDQVRFRF9QUk9QRVJUWV8gPSAyNDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU09GVF9ET1RURURfUFJPUEVSVFlfID0gMjU7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExPR0lDQUxfT1JERVJfRVhDRVBUSU9OX1BST1BFUlRZXyA9IDI2OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBYSURfU1RBUlRfUFJPUEVSVFlfID0gMjc7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFhJRF9DT05USU5VRV9QUk9QRVJUWV8gPSAyODsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQklOQVJZXzFfVE9QX1BST1BFUlRZXyA9IDI5OworICAgIAorICAgIC8qKgorICAgICAqIEZpcnN0IG5pYmJsZSBzaGlmdAorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBGSVJTVF9OSUJCTEVfU0hJRlRfID0gMHg0OworICAgIC8qKgorICAgICAqIFNlY29uZCBuaWJibGUgbWFzaworICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBMQVNUX05JQkJMRV9NQVNLXyA9IDB4RjsKKyAgICAvKioKKyAgICAgKiBBZ2UgdmFsdWUgc2hpZnQKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQUdFX1NISUZUXyA9IDI0OworICAgIAorICAgIC8vIHByaXZhdGUgY29uc3RydWN0b3JzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvcgorICAgICogQGV4Y2VwdGlvbiB0aHJvd24gd2hlbiBkYXRhIHJlYWRpbmcgZmFpbHMgb3IgZGF0YSBjb3JydXB0ZWQKKyAgICAqLworICAgIHByaXZhdGUgVUNoYXJhY3RlclByb3BlcnR5KCkgdGhyb3dzIElPRXhjZXB0aW9uCisgICAgeworICAgICAgICAvLyBqYXIgYWNjZXNzCisgICAgICAgIElucHV0U3RyZWFtIGkgPSBnZXRDbGFzcygpLmdldFJlc291cmNlQXNTdHJlYW0oREFUQV9GSUxFX05BTUVfKTsKKyAgICAgICAgQnVmZmVyZWRJbnB1dFN0cmVhbSBiID0gbmV3IEJ1ZmZlcmVkSW5wdXRTdHJlYW0oaSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEFfQlVGRkVSX1NJWkVfKTsKKyAgICAgICAgVUNoYXJhY3RlclByb3BlcnR5UmVhZGVyIHJlYWRlciA9IG5ldyBVQ2hhcmFjdGVyUHJvcGVydHlSZWFkZXIoYik7CisgICAgICAgIHJlYWRlci5yZWFkKHRoaXMpOworICAgICAgICBiLmNsb3NlKCk7CisgICAgICAgIGkuY2xvc2UoKTsKKyAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJLy8gcHJpdmF0ZSBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvKioKKyAgICAgKiBVbmljb2RlIDMuMiBVQVggMjEgIkNhc2UgTWFwcGluZ3MiIGRlZmluZXMgdGhlIGNvbmRpdGlvbnMgYXMgZm9sbG93czoKKyAgICAgKgorICAgICAqIEZpbmFsX1NpZ21hCisgICAgICogICBDIGlzIHByZWNlZGVkIGJ5IGEgc2VxdWVuY2UgY29uc2lzdGluZyBvZgorICAgICAqICAgICBhIGNhc2VkIGxldHRlciBhbmQgYSBjYXNlLWlnbm9yYWJsZSBzZXF1ZW5jZSwKKyAgICAgKiAgIGFuZCBDIGlzIG5vdCBmb2xsb3dlZCBieSBhIHNlcXVlbmNlIGNvbnNpc3Rpbmcgb2YKKyAgICAgKiAgICAgYW4gaWdub3JhYmxlIHNlcXVlbmNlIGFuZCB0aGVuIGEgY2FzZWQgbGV0dGVyLgorICAgICAqCisgICAgICogTW9yZV9BYm92ZQorICAgICAqICAgQyBpcyBmb2xsb3dlZCBieSBvbmUgb3IgbW9yZSBjaGFyYWN0ZXJzIG9mIGNvbWJpbmluZyBjbGFzcyAyMzAgKEFCT1ZFKQorICAgICAqICAgaW4gdGhlIGNvbWJpbmluZyBjaGFyYWN0ZXIgc2VxdWVuY2UuCisgICAgICoKKyAgICAgKiBBZnRlcl9Tb2Z0X0RvdHRlZAorICAgICAqICAgVGhlIGxhc3QgcHJlY2VkaW5nIGNoYXJhY3RlciB3aXRoIGNvbWJpbmluZyBjbGFzcyBvZiB6ZXJvIGJlZm9yZSBDCisgICAgICogICB3YXMgU29mdF9Eb3R0ZWQsCisgICAgICogICBhbmQgdGhlcmUgaXMgbm8gaW50ZXJ2ZW5pbmcgY29tYmluaW5nIGNoYXJhY3RlciBjbGFzcyAyMzAgKEFCT1ZFKS4KKyAgICAgKgorICAgICAqIEJlZm9yZV9Eb3QKKyAgICAgKiAgIEMgaXMgZm9sbG93ZWQgYnkgY29tYmluaW5nIGRvdCBhYm92ZSAoVSswMzA3KS4KKyAgICAgKiAgIEFueSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIHdpdGggYSBjb21iaW5pbmcgY2xhc3MgdGhhdCBpcyBuZWl0aGVyIDAgCisgICAgICogICBub3IgMjMwIG1heSBpbnRlcnZlbmUgYmV0d2VlbiB0aGUgY3VycmVudCBjaGFyYWN0ZXIgYW5kIHRoZSBjb21iaW5pbmcgCisgICAgICogICBkb3QgYWJvdmUuCisgICAgICoKKyAgICAgKiBIZWxwZXIgZGVmaW5pdGlvbnMgaW4gVW5pY29kZSAzLjIgVUFYIDIxOgorICAgICAqCisgICAgICogRDEuIEEgY2hhcmFjdGVyIEMgaXMgZGVmaW5lZCB0byBiZSBjYXNlZAorICAgICAqICAgICBpZiBpdCBtZWV0cyBhbnkgb2YgdGhlIGZvbGxvd2luZyBjcml0ZXJpYToKKyAgICAgKgorICAgICAqICAgLSBUaGUgZ2VuZXJhbCBjYXRlZ29yeSBvZiBDIGlzIFRpdGxlY2FzZSBMZXR0ZXIgKEx0KQorICAgICAqICAgLSBJbiBbQ29yZVByb3BzXSwgQyBoYXMgb25lIG9mIHRoZSBwcm9wZXJ0aWVzIFVwcGVyY2FzZSwgb3IgTG93ZXJjYXNlCisgICAgICogICAtIEdpdmVuIEQgPSBORkQoQyksIHRoZW4gaXQgaXMgbm90IHRoZSBjYXNlIHRoYXQ6CisgICAgICogICAgIEQgPSBVQ0RfbG93ZXIoRCkgPSBVQ0RfdXBwZXIoRCkgPSBVQ0RfdGl0bGUoRCkKKyAgICAgKiAgICAgKFRoaXMgdGhpcmQgY3JpdGVyaXVtIGRvZXMgbm90IGFkZCBhbnkgY2hhcmFjdGVycyB0byB0aGUgbGlzdAorICAgICAqICAgICAgZm9yIFVuaWNvZGUgMy4yLiBJZ25vcmVkLikKKyAgICAgKgorICAgICAqIEQyLiBBIGNoYXJhY3RlciBDIGlzIGRlZmluZWQgdG8gYmUgY2FzZS1pZ25vcmFibGUKKyAgICAgKiAgICAgaWYgaXQgbWVldHMgZWl0aGVyIG9mIHRoZSBmb2xsb3dpbmcgY3JpdGVyaWE6CisgICAgICoKKyAgICAgKiAgIC0gVGhlIGdlbmVyYWwgY2F0ZWdvcnkgb2YgQyBpcworICAgICAqICAgICBOb25zcGFjaW5nIE1hcmsgKE1uKSwgb3IgRW5jbG9zaW5nIE1hcmsgKE1lKSwgb3IgRm9ybWF0IENvbnRyb2wgKENmKSwgb3IKKyAgICAgKiAgICAgTGV0dGVyIE1vZGlmaWVyIChMbSksIG9yIFN5bWJvbCBNb2RpZmllciAoU2spCisgICAgICogICAtIEMgaXMgb25lIG9mIHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVycyAKKyAgICAgKiAgICAgVSswMDI3IEFQT1NUUk9QSEUKKyAgICAgKiAgICAgVSswMEFEIFNPRlQgSFlQSEVOIChTSFkpCisgICAgICogICAgIFUrMjAxOSBSSUdIVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAgKiAgICAgICAgICAgICh0aGUgcHJlZmVycmVkIGNoYXJhY3RlciBmb3IgYXBvc3Ryb3BoZSkKKyAgICAgKgorICAgICAqIEQzLiBBIGNhc2UtaWdub3JhYmxlIHNlcXVlbmNlIGlzIGEgc2VxdWVuY2Ugb2YKKyAgICAgKiAgICAgemVybyBvciBtb3JlIGNhc2UtaWdub3JhYmxlIGNoYXJhY3RlcnMuCisgICAgICovCisKKyAgICAvKioKKyAgICAqIERldGVybWluZXMgaWYgYSBzdHJpbmcgYXQgb2Zmc2V0IGlzIHByZWNlZGVkIGJ5IGFueSBzb2Z0IGRvdHRlZCBjaGFyYWN0ZXIKKyAgICAqIHdpdGggbm8gaW50ZXJ2ZW5pbmcgY2hhcmFjdGVyIHdpdGggY29tYmluaW5nIGNsYXNzID0gMjMwCisgICAgKiBAcGFyYW0gdWNoYXJpdGVyIHRleHQgaXRlcmF0b3IgdG8gYmUgZGV0ZXJtaW5lZAorICAgICogQHBhcmFtIG9mZnNldCBvZmZzZXQgaW4gc3RyaW5nIHRvIGNoZWNrCisgICAgKiBAcmV0dXJuIHRydWUgaWYgc29tZSBjaGFyYWN0ZXJzIHByZWNlZGluZyB0aGUgb2Zmc2V0IGluZGV4IGJlbG9uZ3MgdG8KKyAgICAqICAgICAgICAgdGhlIHNldCBvZiBzb2Z0IGRvdHRlZCBjaGFyYWN0ZXJzIHdpdGggbm8gaW50ZXJ2ZW5pbmcgY2hhcmFjdGVyCisgICAgKiBAc2VlIFNwZWNpYWxDYXNpbmcudHh0CisgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gaXNQcmVjZWRlZEJ5U29mdERvdHRlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3Rlckl0ZXJhdG9yIHVjaGFyaXRlciwgaW50IG9mZnNldCkgCisgICAgeworICAgIAl1Y2hhcml0ZXIuc2V0SW5kZXgob2Zmc2V0KTsKKyAgICAJCisgICAgCWludCBjaCA9IHVjaGFyaXRlci5wcmV2aW91c0NvZGVQb2ludCgpOworICAgIAkKKyAgICAgICAgd2hpbGUgKGNoICE9IFVDaGFyYWN0ZXJJdGVyYXRvci5ET05FKSB7CisgICAgICAgICAgICBpZiAoaXNTb2Z0RG90dGVkKGNoKSkgeworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOyAvLyBwcmVjZWRlZCBieSBUWVBFX2kKKyAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgIGludCBjYyA9IE5vcm1hbGl6ZXJJbXBsLmdldENvbWJpbmluZ0NsYXNzKGNoKTsKKyAgICAgICAgICAgIGlmIChjYyA9PSAwIHx8IGNjID09IENPTUJJTklOR19NQVJLX0FCT1ZFX0NMQVNTXykgeworICAgICAgICAgICAgICAgIC8vIHByZWNlZGVkIGJ5IGRpZmZlcmVudCBiYXNlIGNoYXJhY3RlciBub3QgVFlQRV9pKSwgb3IgCisgICAgICAgICAgICAgICAgLy8gaW50ZXJ2ZW5pbmcgY2MgPT0gMjMwCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNoID0gdWNoYXJpdGVyLnByZXZpb3VzQ29kZVBvaW50KCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZmFsc2U7IC8vIG5vdCBwcmVjZWRlZCBieSBUWVBFX2kKKyAgICB9CisgICAgCisgICAgLyoqIAorICAgICogRGV0ZXJtaW5lcyBpZiBjb2RlcG9pbnQgYXQgb2Zmc2V0IGlzIG5vdCBmb2xsb3dlZCBieSBhIHNlcXVlbmNlIAorICAgICogY29uc2lzdGluZyBvZiBhbiBpZ25vcmFibGUgc2VxdWVuY2UgYW5kIHRoZW4gYSBjYXNlZCBsZXR0ZXIgCisgICAgKiB7TGwsIEx1LCBMdH0uCisgICAgKiBAcGFyYW0gdWNoYXJpdGVyIFN0cmluZyBpdGVyYXRvciB0byBkZXRlcm1pbmUKKyAgICAqIEBwYXJhbSBvZmZzZXQgY29kZXBvaW50IG9mZnNldCBpbiBzdHJpbmcgdG8gY2hlY2sKKyAgICAqIEByZXR1cm4gZmFsc2UgaWYgYW55IGNoYXJhY3RlciBhZnRlciBvZmZzZXQgaW4gc3JjIGlzIGEgY2FzZWQgbGV0dGVyCisgICAgKiBAc2VlIFNwZWNpYWxDYXNpbmcudHh0CisgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gaXNDRklOQUwoVUNoYXJhY3Rlckl0ZXJhdG9yIHVjaGFyaXRlciwgaW50IG9mZnNldCkgCisgICAgeworICAgIAkvLyBpdGVyYXRvciBzaG91bGQgaGF2ZSBiZWVuIGRldGVybWluZWQgdG8gYmUgbm90IG51bGwgYnkgY2FsbGVyCisgICAgICAgIHVjaGFyaXRlci5zZXRJbmRleChvZmZzZXQpOworICAgIAl1Y2hhcml0ZXIubmV4dENvZGVQb2ludCgpOyAvLyByaWQgb2YgY3VycmVudCBjb2RlcG9pbnQKKyAgICAgICAgaW50IGNoID0gdWNoYXJpdGVyLm5leHRDb2RlUG9pbnQoKTsgLy8gc3RhcnQgY2hlY2tpbmcKKyAgICAJCisgICAgCXdoaWxlIChjaCAhPSBVQ2hhcmFjdGVySXRlcmF0b3IuRE9ORSkgeworICAgICAgICAgICAgaW50IGNhdCA9IGdldFByb3BlcnR5KGNoKSAmIFRZUEVfTUFTSzsKKyAgICAgICAgICAgIGlmIChpc0Nhc2VkKGNoLCBjYXQpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBmb2xsb3dlZCBieSBjYXNlZCBsZXR0ZXIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghaXNDYXNlSWdub3JhYmxlKGNoLCBjYXQpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7IC8vIG5vdCBpZ25vcmFibGUKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNoID0gdWNoYXJpdGVyLm5leHRDb2RlUG9pbnQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8qKgorICAgICogRGV0ZXJtaW5lcyBpZiBjb2RlcG9pbnQgYXQgb2Zmc2V0IGlzIG5vdCBwcmVjZWRlZCBieSBhIHNlcXVlbmNlIAorICAgICogY29uc2lzdGluZyBvZiBhIGNhc2VkIGxldHRlciB7TGwsIEx1LCBMdH0gYW5kIGFuIGlnbm9yYWJsZSBzZXF1ZW5jZS4gCisgICAgKiBAcGFyYW0gdWNoYXJpdGVyIHN0cmluZyBpdGVyYXRvciB0byBkZXRlcm1pbmUKKyAgICAqIEBwYXJhbSBvZmZzZXQgY29kZXBvaW50IG9mZnNldCBpbiBzdHJpbmcgdG8gY2hlY2sKKyAgICAqIEByZXR1cm4gdHJ1ZSBpZiBhbnkgY2hhcmFjdGVyIGJlZm9yZSBpbmRleCBpbiBzcmMgaXMgYSBjYXNlZCBsZXR0ZXIKKyAgICAqIEBzZWUgU3BlY2lhbENhc2luZy50eHQKKyAgICAqLworICAgIHByaXZhdGUgYm9vbGVhbiBpc05vdENJTklUSUFMKFVDaGFyYWN0ZXJJdGVyYXRvciB1Y2hhcml0ZXIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0KSAKKyAgICB7CisgICAgCXVjaGFyaXRlci5zZXRJbmRleChvZmZzZXQpOworICAgIAlpbnQgY2ggPSB1Y2hhcml0ZXIucHJldmlvdXNDb2RlUG9pbnQoKTsKKyAgICAJCisgICAgICAgIHdoaWxlIChjaCAhPSBVQ2hhcmFjdGVySXRlcmF0b3IuRE9ORSkgeworICAgICAgICAgICAgaW50IGNhdCA9IGdldFByb3BlcnR5KGNoKSAmIFRZUEVfTUFTSzsKKyAgICAgICAgICAgIGlmIChpc0Nhc2VkKGNoLCBjYXQpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7IC8vIHByZWNlZGVkIGJ5IGNhc2VkIGxldHRlcgorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFpc0Nhc2VJZ25vcmFibGUoY2gsIGNhdCkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIG5vdCBpZ25vcmFibGUKKyAgICAgICAgICAgIH0KKwkJCWNoID0gdWNoYXJpdGVyLnByZXZpb3VzQ29kZVBvaW50KCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZmFsc2U7IAorICAgIH0KKworICAgIC8qKiAKKyAgICAqIERldGVybWluZXMgaWYgYSBjb2RlcG9pbnQgYXQgb2Zmc2V0IGluIHN0cmluZyBpcyBmb2xsb3dlZCBieSBvbmUgb3IgCisgICAgKiBtb3JlIGNoYXJhY3RlcnMgb2YgY29tYmluaW5nIGNsYXNzID0gMjMwLgorICAgICogQHBhcmFtIHVjaGFyaXRlciB0ZXh0IGl0ZXJhdG9yIHRvIGJlIGRldGVybWluZWQKKyAgICAqIEBwYXJhbSBvZmZzZXQgY29kZXBvaW50IG9mZnNldCBpbiBzdHJpbmcgdG8gY2hlY2sKKyAgICAqIEByZXR1cm4gdHJ1ZSBpZiBhIHN0cmluZyBhdCBvZmZzZXQgaXMgZm9sbG93ZWQgYnkgb25lIG9yIG1vcmUgY2hhcmFjdGVycyAKKyAgICAqICAgICAgICAgb2YgY29tYmluaW5nIGNsYXNzID0gMjMwLgorICAgICogQHNlZSBTcGVjaWFsQ2FzaW5nLnR4dAorICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBpc0ZvbGxvd2VkQnlNT1JFQUJPVkUoVUNoYXJhY3Rlckl0ZXJhdG9yIHVjaGFyaXRlciwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9mZnNldCkgCisgICAgeworICAgICAgICB1Y2hhcml0ZXIuc2V0SW5kZXgob2Zmc2V0KTsKKyAgICAgICAgdWNoYXJpdGVyLm5leHRDb2RlUG9pbnQoKTsgLy8gcmlkIG9mIGN1cnJlbnQgY29kZXBvaW50CisgICAgICAgIGludCBjaCA9IHVjaGFyaXRlci5uZXh0Q29kZVBvaW50KCk7IC8vIHN0YXJ0IGNoZWNraW5nCisgICAgICAgIAorICAgICAgICB3aGlsZSAoY2ggIT0gVUNoYXJhY3Rlckl0ZXJhdG9yLkRPTkUpIHsKKyAgICAgICAgICAgIGludCBjYyA9IE5vcm1hbGl6ZXJJbXBsLmdldENvbWJpbmluZ0NsYXNzKGNoKTsKKyAgICAgICAgICAgIGlmIChjYyA9PSBDT01CSU5JTkdfTUFSS19BQk9WRV9DTEFTU18pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gYXQgbGVhc3Qgb25lIGNjPT0yMzAgZm9sbG93aW5nIAorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNjID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIG5leHQgYmFzZSBjaGFyYWN0ZXIsIG5vIG1vcmUgY2M9PTIzMCBmb2xsb3dpbmcKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNoID0gdWNoYXJpdGVyLm5leHRDb2RlUG9pbnQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsgLy8gbm8gbW9yZSBjYyA9PSAyMzAgZm9sbG93aW5nCisgICAgfQorCisgICAgLyoqIAorICAgICogRGV0ZXJtaW5lcyBpZiBhIGNvZGVwb2ludCBhdCBvZmZzZXQgaW4gc3RyaW5nIGlzIGZvbGxvd2VkIGJ5IGEgZG90IAorICAgICogYWJvdmUgd2l0aCBubyBjaGFyYWN0ZXJzIG9mIGNvbWJpbmluZyBjbGFzcyA9PSAyMzAgaW4gYmV0d2VlbiAKKyAgICAqIEBwYXJhbSB1Y2hhcml0ZXIgdGV4dCBpdGVyYXRvciB0byBiZSBkZXRlcm1pbmVkCisgICAgKiBAcGFyYW0gb2Zmc2V0IGNvZGVwb2ludCBvZmZzZXQgb2YgdGhlIGNoYXJhY3RlciBpbiBzdHJpbmcgdG8gY2hlY2sKKyAgICAqIEByZXR1cm4gdHJ1ZSBpZiBhIHN0cmluZyBhdCBvZmZzZXQgaXMgZm9sbG93ZWQgYnkgb2EgZG90IGFib3ZlIAorICAgICogICAgICAgICB3aXRoIG5vIGNoYXJhY3RlcnMgb2YgY29tYmluaW5nIGNsYXNzID09IDIzMCBpbiBiZXR3ZWVuCisgICAgKiBAc2VlIFNwZWNpYWxDYXNpbmcudHh0CisgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGlzRm9sbG93ZWRCeURvdEFib3ZlKFVDaGFyYWN0ZXJJdGVyYXRvciB1Y2hhcml0ZXIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9mZnNldCkgCisgICAgeworICAgICAgICB1Y2hhcml0ZXIuc2V0SW5kZXgob2Zmc2V0KTsKKyAgICAgICAgdWNoYXJpdGVyLm5leHRDb2RlUG9pbnQoKTsgLy8gcmlkIG9mZiBjdXJyZW50IGNoYXJhY3RlcgorICAgICAgICBpbnQgY2ggPSB1Y2hhcml0ZXIubmV4dENvZGVQb2ludCgpOyAvLyBzdGFydCBjaGVja2luZworICAgICAgICAKKyAgICAgICAgd2hpbGUgKGNoICE9IFVDaGFyYWN0ZXJJdGVyYXRvci5ET05FKSB7CisgICAgICAgICAgICBpZiAoY2ggPT0gQ09NQklOSU5HX0RPVF9BQk9WRV8pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGludCBjYyA9IE5vcm1hbGl6ZXJJbXBsLmdldENvbWJpbmluZ0NsYXNzKGNoKTsKKyAgICAgICAgICAgIGlmIChjYyA9PSAwIHx8IGNjID09IENPTUJJTklOR19NQVJLX0FCT1ZFX0NMQVNTXykgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gbmV4dCBiYXNlIGNoYXJhY3RlciBvciBjYz09MjMwIGluIGJldHdlZW4KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNoID0gdWNoYXJpdGVyLm5leHRDb2RlUG9pbnQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsgLy8gbm8gZG90IGFib3ZlIGZvbGxvd2luZworICAgIH0KKyAgICAKKyAgICAvKiogIAorICAgICogQ2hlY2tzIGlmIHRoZSBjYXNlIGlnbm9yYWJsZQorICAgICogQHBhcmFtIGNoIGNvZGVwb2ludAorICAgICogQHBhcmFtIGNhdCBjYXRlZ29yeSBvZiB0aGUgYXJndW1lbnQgY29kZXBvaW50CisgICAgKiBAcmV0dXJuIHRydWUgaWYgY2ggaXMgY2FzZSBpZ25vcmFibGUuCisgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGlzQ2FzZUlnbm9yYWJsZShpbnQgY2gsIGludCBjYXQpIAorICAgIHsKKyAgICAgICAgcmV0dXJuIGNhdCA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuTk9OX1NQQUNJTkdfTUFSSyAKKyAgICAgICAgICAgICAgIHx8IGNhdCA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuRU5DTE9TSU5HX01BUksgCisgICAgICAgICAgICAgICB8fCBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5LkZPUk1BVAorICAgICAgICAgICAgICAgfHwgY2F0ID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5NT0RJRklFUl9MRVRURVIKKyAgICAgICAgICAgICAgIHx8IGNhdCA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuTU9ESUZJRVJfU1lNQk9MCisgICAgICAgICAgICAgICB8fCBjaCA9PSAweDI3IHx8IGNoID09IDB4YWQgfHwgY2ggPT0gMHgyMDE5OworICAgIH0KKworICAgIC8qKiAKKyAgICAgKiBJcyB0aGlzIGEgImNhc2VkIiBjaGFyYWN0ZXI/IAorICAgICAqIEBwYXJhbSBjaCBjb2RlcG9pbnQKKyAgICAgKiBAcGFyYW0gY2F0IGNhdGVnb3J5IG9mIHRoZSBhcmd1bWVudAorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiBjaCBpcyBhIGNhc2VkIGNoYXJhY3RlcgorICAgICAqLworICAgIHByaXZhdGUgYm9vbGVhbiBpc0Nhc2VkKGludCBjaCwgaW50IGNhdCkgCisgICAgeworICAgICAgICAvLyBMdCArIFVwcGVyY2FzZSArIExvd2VyY2FzZSA9IEx0ICsgTHUgKyBMbCAKKyAgICAgICAgLy8gKyBPdGhlcl9VcHBlcmNhc2UrT3RoZXJfTG93ZXJjYXNlCisgICAgICAgIGJvb2xlYW4gcmVzdWx0ID0gKGNhdCA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuVElUTEVDQVNFX0xFVFRFUiAKKyAgICAgICAgICAgICAgIHx8IGNhdCA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuVVBQRVJDQVNFX0xFVFRFUgorICAgICAgICAgICAgICAgfHwgY2F0ID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5MT1dFUkNBU0VfTEVUVEVSKTsKKyAgICAgICAgaWYgKHJlc3VsdCkgeworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfSAKKyAgICAgICAgaW50IHByb3AgPSBnZXRBZGRpdGlvbmFsKGNoLCAxKTsKKyAgICAgICAgcmV0dXJuIGNvbXBhcmVBZGRpdGlvbmFsVHlwZShwcm9wLCBPVEhFUl9VUFBFUkNBU0VfUFJPUEVSVFlfKSAKKyAgICAgICAgICAgICAgIHx8IGNvbXBhcmVBZGRpdGlvbmFsVHlwZShwcm9wLCBPVEhFUl9MT1dFUkNBU0VfUFJPUEVSVFlfKTsKKyAgICB9CisgICAgCisgICAgLyoqIAorICAgICAqIElzIFNvZnRfRG90dGVkPyAKKyAgICAgKiBAcGFyYW0gY2ggY29kZXBvaW50CisgICAgICogQHJldHVybiB0cnVlIGlmIGNoIGlzIHNvZnQgZG90dGVkCisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIGlzU29mdERvdHRlZChpbnQgY2gpIHsKKyAgICAgICAgcmV0dXJuIGNvbXBhcmVBZGRpdGlvbmFsVHlwZShnZXRBZGRpdGlvbmFsKGNoLCAxKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU09GVF9ET1RURURfUFJPUEVSVFlfKTsKKyAgICB9CisgICAgCisgICAgLyogSXMgZm9sbG93ZWQgYnkge2Nhc2UtaWdub3JhYmxlfSogY2FzZWQgID8gKi8KKyAgICAvKioKKyAgICAqIEdldHRpbmcgdGhlIGNvcnJlY3QgYWRkcmVzcyBmb3IgZGF0YSBpbiB0aGUgZXhjZXB0aW9uIHZhbHVlCisgICAgKiBAcGFyYW0gZXZhbHVlIGV4Y2VwdGlvbiB2YWx1ZQorICAgICogQHBhcmFtIGluZGljYXRvciB0eXBlIG9mIGRhdGEgdG8gcmV0cmlldmUKKyAgICAqIEBwYXJhbSBhZGRyZXNzIGN1cnJlbnQgYWRkcmVzcyB0byBtb3ZlIGZyb20KKyAgICAqIEByZXR1cm4gdGhlIGNvcnJlY3QgYWRkcmVzcworICAgICovCisgICAgcHJpdmF0ZSBpbnQgYWRkRXhjZXB0aW9uT2Zmc2V0KGludCBldmFsdWUsIGludCBpbmRpY2F0b3IsIGludCBhZGRyZXNzKSAKKyAgICB7IAorICAgICAgICBpbnQgcmVzdWx0ID0gYWRkcmVzczsKKyAgICAgICAgaWYgKGluZGljYXRvciA+PSBFWENfR1JPVVBfKSB7CisgICAgICAgIHJlc3VsdCArPSBGTEFHU19PRkZTRVRfW2V2YWx1ZSAmIEVYQ19HUk9VUF9NQVNLX107IAorICAgICAgICBldmFsdWUgPj49IEVYQ19HUk9VUF87IAorICAgICAgICBpbmRpY2F0b3IgLT0gRVhDX0dST1VQXzsgCisgICAgICAgIH0KKyAgICAgICAgaW50IG1hc2sgPSAoMSA8PCBpbmRpY2F0b3IpIC0gMTsKKyAgICAgICAgcmVzdWx0ICs9IEZMQUdTX09GRlNFVF9bZXZhbHVlICYgbWFza107IAorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBDb21wYXJlIGFkZGl0aW9uYWwgcHJvcGVydGllcyB0byBzZWUgaWYgaXQgaGFzIGFyZ3VtZW50IHR5cGUgCisgICAgICogQHBhcmFtIHByb3BlcnR5IDMyIGJpdCBwcm9wZXJ0aWVzCisgICAgICogQHBhcmFtIHR5cGUgY2hhcmFjdGVyIHR5cGUKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgcHJvcGVydHkgaGFzIHR5cGUKKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gY29tcGFyZUFkZGl0aW9uYWxUeXBlKGludCBwcm9wZXJ0eSwgaW50IHR5cGUpIAorICAgIHsKKyAgICAJcmV0dXJuIChwcm9wZXJ0eSAmICgxIDw8IHR5cGUpKSAhPSAwOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL1VDaGFyYWN0ZXJQcm9wZXJ0eVJlYWRlci5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvVUNoYXJhY3RlclByb3BlcnR5UmVhZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDYwODQ4YQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL1VDaGFyYWN0ZXJQcm9wZXJ0eVJlYWRlci5qYXZhCkBAIC0wLDAgKzEsMTczIEBACisvKioKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvVUNoYXJhY3RlclByb3BlcnR5UmVhZGVyLmphdmEsdiAkIAorKiAkRGF0ZTogMjAwMi8xMC8wOSAyMzo1MzoyNCAkIAorKiAkUmV2aXNpb246IDEuOCAkCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworcGFja2FnZSBjb20uaWJtLmljdS5pbXBsOworCitpbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLkRhdGFJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuVmVyc2lvbkluZm87CisKKy8qKgorKiA8cD5JbnRlcm5hbCByZWFkZXIgY2xhc3MgZm9yIElDVSBkYXRhIGZpbGUgdXByb3BzLmljdSBjb250YWluaW5nIAorKiBVbmljb2RlIGNvZGVwb2ludCBkYXRhLjwvcD4gCisqIDxwPlRoaXMgY2xhc3Mgc2ltcGx5IHJlYWRzIHVwcm9wcy5pY3UsIGF1dGhlbnRpY2F0ZXMgdGhhdCBpdCBpcyBhIHZhbGlkCisqIElDVSBkYXRhIGZpbGUgYW5kIHNwbGl0IGl0cyBjb250ZW50cyB1cCBpbnRvIGJsb2NrcyBvZiBkYXRhIGZvciB1c2UgaW4KKyogPGEgaHJlZj1VQ2hhcmFjdGVyUHJvcGVydHkuaHRtbD5jb20uaWJtLmljdS5pbXBsLlVDaGFyYWN0ZXJQcm9wZXJ0eTwvYT4uCisqIDwvcD4gCisqIDxwPkZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBmb3JtYXQgb2YgdXByb3BzLmljdSByZWZlciB0bworKiA8YSBocmVmPW9zcy5zb2Z0d2FyZS5pYm0uY29tL2ljdTRqL2ljdTRqaHRtbC9jb20vaWJtL2ljdS9sYW5nL3JlYWRtZS5odG1sPgorKiBSZWFkTWU8L2E+LjxccD4KKyogPHA+dXByb3BzLmljdSB3aGljaCBpcyBpbiBiaWctZW5kaWFuIGZvcm1hdCBpcyBqYXJlZCB0b2dldGhlciB3aXRoIHRoaXMgCisqIHBhY2thZ2UuPC9wPgorKiBAYXV0aG9yIFN5biBXZWUgUXVlaworKiBAc2luY2UgcmVsZWFzZSAyLjEsIEZlYnJ1YXJ5IDFzdCAyMDAyCisqIEBkcmFmdCAyLjEKKyovCisKK2ZpbmFsIGNsYXNzIFVDaGFyYWN0ZXJQcm9wZXJ0eVJlYWRlciBpbXBsZW1lbnRzIElDVUJpbmFyeS5BdXRoZW50aWNhdGUKK3sKKyAgICAvLyBwdWJsaWMgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgcHVibGljIGJvb2xlYW4gaXNEYXRhVmVyc2lvbkFjY2VwdGFibGUoYnl0ZSB2ZXJzaW9uW10pCisgICAgeworICAgICAgICByZXR1cm4gdmVyc2lvblswXSA9PSBEQVRBX0ZPUk1BVF9WRVJTSU9OX1swXSAKKyAgICAgICAgICAgICAgICYmIHZlcnNpb25bMl0gPT0gREFUQV9GT1JNQVRfVkVSU0lPTl9bMl0gCisgICAgICAgICAgICAgICAmJiB2ZXJzaW9uWzNdID09IERBVEFfRk9STUFUX1ZFUlNJT05fWzNdOworICAgIH0KKyAgICAKKyAgICAvLyBwcm90ZWN0ZWQgY29uc3RydWN0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgKiA8cD5Qcm90ZWN0ZWQgY29uc3RydWN0b3IuPC9wPgorICAgICogQHBhcmFtIGlucHV0U3RyZWFtIElDVSB1cHJvcC5kYXQgZmlsZSBpbnB1dCBzdHJlYW0KKyAgICAqIEBleGNlcHRpb24gSU9FeGNlcHRpb24gdGhyb3cgaWYgZGF0YSBmaWxlIGZhaWxzIGF1dGhlbnRpY2F0aW9uIAorICAgICogQGRyYWZ0IDIuMQorICAgICovCisgICAgcHJvdGVjdGVkIFVDaGFyYWN0ZXJQcm9wZXJ0eVJlYWRlcihJbnB1dFN0cmVhbSBpbnB1dFN0cmVhbSkgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93cyBJT0V4Y2VwdGlvbgorICAgIHsKKyAgICAgICAgbV91bmljb2RlVmVyc2lvbl8gPSBJQ1VCaW5hcnkucmVhZEhlYWRlcihpbnB1dFN0cmVhbSwgREFUQV9GT1JNQVRfSURfLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzKTsKKyAgICAgICAgbV9kYXRhSW5wdXRTdHJlYW1fID0gbmV3IERhdGFJbnB1dFN0cmVhbShpbnB1dFN0cmVhbSk7CisgICAgfQorICAgIAorICAgIC8vIHByb3RlY3RlZCBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgIAorICAgIC8qKgorICAgICogPHA+UmVhZHMgdXByb3BzLmljdSwgcGFyc2UgaXQgaW50byBibG9ja3Mgb2YgZGF0YSB0byBiZSBzdG9yZWQgaW4KKyAgICAqIFVDaGFyYWN0ZXJQcm9wZXJ0eS48L1AKKyAgICAqIEBwYXJhbSB1Y2hhcnBwdHkgVUNoYXJhY3RlclByb3BlcnR5IGluc3RhbmNlCisgICAgKiBAZXhjZXB0aW9uIHRocm93biB3aGVuIGRhdGEgcmVhZGluZyBmYWlscworICAgICogQGRyYWZ0IDIuMQorICAgICovCisgICAgcHJvdGVjdGVkIHZvaWQgcmVhZChVQ2hhcmFjdGVyUHJvcGVydHkgdWNoYXJwcHR5KSB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICB7CisgICAgICAgIC8vIHJlYWQgdGhlIGluZGV4ZXMKKyAgICAgICAgaW50IGNvdW50ID0gSU5ERVhfU0laRV87CisgICAgICAgIG1fcHJvcGVydHlPZmZzZXRfICAgICAgICAgID0gbV9kYXRhSW5wdXRTdHJlYW1fLnJlYWRJbnQoKTsKKyAgICAgICAgY291bnQgLS07CisgICAgICAgIG1fZXhjZXB0aW9uT2Zmc2V0XyAgICAgICAgID0gbV9kYXRhSW5wdXRTdHJlYW1fLnJlYWRJbnQoKTsKKyAgICAgICAgY291bnQgLS07CisgICAgICAgIG1fY2FzZU9mZnNldF8gICAgICAgICAgICAgID0gbV9kYXRhSW5wdXRTdHJlYW1fLnJlYWRJbnQoKTsKKyAgICAgICAgY291bnQgLS07CisgICAgICAgIG1fYWRkaXRpb25hbE9mZnNldF8gICAgICAgID0gbV9kYXRhSW5wdXRTdHJlYW1fLnJlYWRJbnQoKTsKKyAgICAgICAgY291bnQgLS07CisgICAgCW1fYWRkaXRpb25hbFZlY3RvcnNPZmZzZXRfID0gbV9kYXRhSW5wdXRTdHJlYW1fLnJlYWRJbnQoKTsKKyAgICAJY291bnQgLS07CisgICAgCW1fYWRkaXRpb25hbENvbHVtbnNDb3VudF8gID0gbV9kYXRhSW5wdXRTdHJlYW1fLnJlYWRJbnQoKTsKKyAgICAJY291bnQgLS07CisgICAgICAgIG1fcmVzZXJ2ZWRPZmZzZXRfICAgICAgICAgID0gbV9kYXRhSW5wdXRTdHJlYW1fLnJlYWRJbnQoKTsKKyAgICAgICAgY291bnQgLS07CisgICAgICAgIG1fZGF0YUlucHV0U3RyZWFtXy5za2lwQnl0ZXMoMyA8PCAyKTsKKyAgICAgICAgY291bnQgLT0gMzsKKyAgICAgICAgdWNoYXJwcHR5Lm1fbWF4QmxvY2tTY3JpcHRWYWx1ZV8gPSBtX2RhdGFJbnB1dFN0cmVhbV8ucmVhZEludCgpOworICAgICAgICBjb3VudCAtLTsgLy8gMTAKKyAgICAgICAgbV9kYXRhSW5wdXRTdHJlYW1fLnNraXBCeXRlcyhjb3VudCA8PCAyKTsKKyAgICAgICAgCisgICAgICAgIC8vIHJlYWQgdGhlIHRyaWUgaW5kZXggYmxvY2sKKyAgICAgICAgLy8gbV9wcm9wc19pbmRleF8gaW4gdGVybXMgb2YgaW50cworICAgICAgICB1Y2hhcnBwdHkubV90cmllXyA9IG5ldyBDaGFyVHJpZShtX2RhdGFJbnB1dFN0cmVhbV8sIHVjaGFycHB0eSk7CisgICAgICAgIAorICAgICAgICAvLyByZWFkcyB0aGUgMzIgYml0IHByb3BlcnRpZXMgYmxvY2sKKyAgICAgICAgaW50IHNpemUgPSBtX2V4Y2VwdGlvbk9mZnNldF8gLSBtX3Byb3BlcnR5T2Zmc2V0XzsKKyAgICAgICAgdWNoYXJwcHR5Lm1fcHJvcGVydHlfID0gbmV3IGludFtzaXplXTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpICsrKSB7CisgICAgICAgICAgICB1Y2hhcnBwdHkubV9wcm9wZXJ0eV9baV0gPSBtX2RhdGFJbnB1dFN0cmVhbV8ucmVhZEludCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyByZWFkcyB0aGUgMzIgYml0IGV4Y2VwdGlvbnMgYmxvY2sKKyAgICAgICAgc2l6ZSA9IG1fY2FzZU9mZnNldF8gLSBtX2V4Y2VwdGlvbk9mZnNldF87CisgICAgICAgIHVjaGFycHB0eS5tX2V4Y2VwdGlvbl8gPSBuZXcgaW50W3NpemVdOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkgKyspIHsKKyAgICAgICAgICAgIHVjaGFycHB0eS5tX2V4Y2VwdGlvbl9baV0gPSBtX2RhdGFJbnB1dFN0cmVhbV8ucmVhZEludCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyByZWFkcyB0aGUgMzIgYml0IGNhc2UgYmxvY2sKKyAgICAgICAgc2l6ZSA9IChtX2FkZGl0aW9uYWxPZmZzZXRfIC0gbV9jYXNlT2Zmc2V0XykgPDwgMTsKKyAgICAgICAgdWNoYXJwcHR5Lm1fY2FzZV8gPSBuZXcgY2hhcltzaXplXTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpICsrKSB7CisgICAgICAgICAgICB1Y2hhcnBwdHkubV9jYXNlX1tpXSA9IG1fZGF0YUlucHV0U3RyZWFtXy5yZWFkQ2hhcigpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyByZWFkcyB0aGUgYWRkaXRpb25hbCBwcm9wZXJ0eSBibG9jaworICAgICAgICB1Y2hhcnBwdHkubV9hZGRpdGlvbmFsVHJpZV8gPSBuZXcgQ2hhclRyaWUobV9kYXRhSW5wdXRTdHJlYW1fLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVjaGFycHB0eSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAvLyBhZGRpdGlvbmFsIHByb3BlcnRpZXMKKyAgICAgICAgc2l6ZSA9IG1fcmVzZXJ2ZWRPZmZzZXRfIC0gbV9hZGRpdGlvbmFsVmVjdG9yc09mZnNldF87CisgICAgICAgIHVjaGFycHB0eS5tX2FkZGl0aW9uYWxWZWN0b3JzXyA9IG5ldyBpbnRbc2l6ZV07CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSArKykgeworICAgICAgICAgICAgdWNoYXJwcHR5Lm1fYWRkaXRpb25hbFZlY3RvcnNfW2ldID0gbV9kYXRhSW5wdXRTdHJlYW1fLnJlYWRJbnQoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbV9kYXRhSW5wdXRTdHJlYW1fLmNsb3NlKCk7CisgICAgICAgIHVjaGFycHB0eS5tX2FkZGl0aW9uYWxDb2x1bW5zQ291bnRfID0gbV9hZGRpdGlvbmFsQ29sdW1uc0NvdW50XzsKKyAgICAgICAgdWNoYXJwcHR5Lm1fdW5pY29kZVZlcnNpb25fID0gVmVyc2lvbkluZm8uZ2V0SW5zdGFuY2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgKGludCltX3VuaWNvZGVWZXJzaW9uX1swXSwgKGludCltX3VuaWNvZGVWZXJzaW9uX1sxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KW1fdW5pY29kZVZlcnNpb25fWzJdLCAoaW50KW1fdW5pY29kZVZlcnNpb25fWzNdKTsKKyAgICB9CisgICAgCisgICAgLy8gcHJpdmF0ZSB2YXJpYWJsZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgCisgICAgLyoqCisgICAgKiBJbmRleCBzaXplCisgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSU5ERVhfU0laRV8gPSAxNjsKKyAgICAKKyAgICAvKioKKyAgICAqIElDVSBkYXRhIGZpbGUgaW5wdXQgc3RyZWFtCisgICAgKi8KKyAgICBwcml2YXRlIERhdGFJbnB1dFN0cmVhbSBtX2RhdGFJbnB1dFN0cmVhbV87CisgICAgICAKKyAgICAvKioKKyAgICAqIE9mZnNldCBpbmZvcm1hdGlvbiBpbiB0aGUgaW5kZXhlcy4KKyAgICAqLworICAgIHByaXZhdGUgaW50IG1fcHJvcGVydHlPZmZzZXRfOworICAgIHByaXZhdGUgaW50IG1fZXhjZXB0aW9uT2Zmc2V0XzsKKyAgICBwcml2YXRlIGludCBtX2Nhc2VPZmZzZXRfOworICAgIHByaXZhdGUgaW50IG1fYWRkaXRpb25hbE9mZnNldF87CisgICAgcHJpdmF0ZSBpbnQgbV9hZGRpdGlvbmFsVmVjdG9yc09mZnNldF87CisgICAgcHJpdmF0ZSBpbnQgbV9hZGRpdGlvbmFsQ29sdW1uc0NvdW50XzsKKyAgICBwcml2YXRlIGludCBtX3Jlc2VydmVkT2Zmc2V0XzsKKyAgICBwcml2YXRlIGJ5dGUgbV91bmljb2RlVmVyc2lvbl9bXTsgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAvKioKKyAgICAqIEZpbGUgZm9ybWF0IHZlcnNpb24gdGhhdCB0aGlzIGNsYXNzIHVuZGVyc3RhbmRzLgorICAgICogTm8gZ3VhcmFudGVlcyBhcmUgbWFkZSBpZiBhIG9sZGVyIHZlcnNpb24gaXMgdXNlZAorICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYnl0ZSBEQVRBX0ZPUk1BVF9JRF9bXSA9IHsoYnl0ZSkweDU1LCAoYnl0ZSkweDUwLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnl0ZSkweDcyLCAoYnl0ZSkweDZGfTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIERBVEFfRk9STUFUX1ZFUlNJT05fW10gPSB7KGJ5dGUpMHgzLCAoYnl0ZSkweDEsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ5dGUpVHJpZS5JTkRFWF9TVEFHRV8xX1NISUZUXywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnl0ZSlUcmllLklOREVYX1NUQUdFXzJfU0hJRlRffTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL1VDaGFyYWN0ZXJVdGlsaXR5LmphdmEgYi9zcmMvY29tL2libS9pY3UvaW1wbC9VQ2hhcmFjdGVyVXRpbGl0eS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2OGY0YmYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9VQ2hhcmFjdGVyVXRpbGl0eS5qYXZhCkBAIC0wLDAgKzEsMjA5IEBACisvKioKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvVUNoYXJhY3RlclV0aWxpdHkuamF2YSx2ICQgCisqICREYXRlOiAyMDAyLzA5LzE5IDIxOjE5OjA0ICQgCisqICRSZXZpc2lvbjogMS4xICQKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmltcGw7CisKKy8qKgorKiBJbnRlcm5hbCBjaGFyYWN0ZXIgdXRpbGl0eSBjbGFzcyBmb3Igc2ltcGxlIGRhdGEgdHlwZSBjb252ZXJzaW9uIGFuZCBTdHJpbmcgCisqIHBhcnNpbmcgZnVuY3Rpb25zLiBEb2VzIG5vdCBoYXZlIGFuIGFuYWxvZyBpbiB0aGUgSkRLLgorKiBAYXV0aG9yIFN5biBXZWUgUXVlaworKiBAc2luY2Ugc2VwMjkwMAorKi8KKworcHVibGljIGZpbmFsIGNsYXNzIFVDaGFyYWN0ZXJVdGlsaXR5Cit7CisgICAgLy8gcHVibGljIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvKioKKyAgICAqIERldGVybWluZXMgaWYgY29kZXBvaW50IGlzIGEgbm9uIGNoYXJhY3RlcgorICAgICogQHBhcmFtIGNoIGNvZGVwb2ludAorICAgICogQHJldHVybiB0cnVlIGlmIGNvZGVwb2ludCBpcyBhIG5vbiBjaGFyYWN0ZXIgZmFsc2Ugb3RoZXJ3aXNlCisgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNOb25DaGFyYWN0ZXIoaW50IGNoKSAKKyAgICB7CisgICAgICAgIGlmICgoY2ggJiBOT05fQ0hBUkFDVEVSX1NVRkZJWF9NSU5fM18wXykgPT0gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5PTl9DSEFSQUNURVJfU1VGRklYX01JTl8zXzBfKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIGNoID49IE5PTl9DSEFSQUNURVJfTUlOXzNfMV8gJiYgY2ggPD0gIE5PTl9DSEFSQUNURVJfTUFYXzNfMV87CisgICAgfQorICAgIAorICAgIC8vIHBhY2thZ2UgcHJpdmF0ZSBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgCisgICAgLyoqCisgICAgKiBqb2luaW5nIDIgY2hhcnMgdG8gZm9ybSBhbiBpbnQKKyAgICAqIEBwYXJhbSBtc2MgbW9zdCBzaWduaWZpY2FudCBjaGFyCisgICAgKiBAcGFyYW0gbHNjIGxlYXN0IHNpZ25pZmljYW50IGNoYXIKKyAgICAqIEByZXR1cm4gaW50IGZvcm0KKyAgICAqLworICAgIHN0YXRpYyBpbnQgdG9JbnQoY2hhciBtc2MsIGNoYXIgbHNjKQorICAgIHsKKyAgICAgICAgcmV0dXJuICgobXNjIDw8IDE2KSB8IGxzYyk7CisgICAgfQorICAgICAgIAorICAgIC8qKgorICAgICogY29udmVydGluZyAyIGJ5dGVzIGludG8gYSBjaGFyCisgICAgKiBAcGFyYW0gbXNiIHRoZSBtb3N0IHNpZ25pZmljYW50IGJ5dGUKKyAgICAqIEBwYXJhbSBsc2IgdGhlIGxlYXN0IHNpZ25pZmljYW50IGJ5dGUKKyAgICAqIEByZXR1cm4gY2hhciBmb3JtCisgICAgKi8KKyAgICBzdGF0aWMgY2hhciB0b0NoYXIoYnl0ZSBtc2IsIGJ5dGUgbHNiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIChjaGFyKSgobXNiIDw8IDgpIHwgKGxzYiAmIDB4RkYpKTsKKyAgICB9CisgICAgICAgCisgICAgLyoqCisgICAgKiBSZXRyaWV2ZXMgYSBudWxsIHRlcm1pbmF0ZWQgc3Vic3RyaW5nIGZyb20gYW4gYXJyYXkgb2YgYnl0ZXMuCisgICAgKiBTdWJzdHJpbmcgaXMgYSBzZXQgb2Ygbm9uLXplcm8gYnl0ZXMgc3RhcnRpbmcgZnJvbSBhcmd1bWVudCBzdGFydCB0byB0aGUgCisgICAgKiBuZXh0IHplcm8gYnl0ZS4gSWYgdGhlIGZpcnN0IGJ5dGUgaXMgYSB6ZXJvLCB0aGUgbmV4dCBieXRlIHdpbGwgYmUgdGFrZW4gYXMKKyAgICAqIHRoZSBmaXJzdCBieXRlLgorICAgICogQHBhcmFtIHN0ciBzdHJpbmdidWZmZXIgdG8gc3RvcmUgZGF0YSBpbiwgZGF0YSB3aWxsIGJlIHN0b3JlIHdpdGggZWFjaAorICAgICogICAgICAgICAgICBieXRlIGFzIGEgY2hhcgorICAgICogQHBhcmFtIGFycmF5IGJ5dGUgYXJyYXkKKyAgICAqIEBwYXJhbSBpbmRleCB0byBzdGFydCBzdWJzdHJpbmcgaW4gYnl0ZSBjb3VudAorICAgICogQHJldHVybiB0aGUgZW5kIHBvc2l0aW9uIG9mIHRoZSBzdWJzdHJpbmcgd2l0aGluIHRoZSBjaGFyYWN0ZXIgYXJyYXkKKyAgICAqLworICAgIHN0YXRpYyBpbnQgZ2V0TnVsbFRlcm1CeXRlU3ViU3RyaW5nKFN0cmluZ0J1ZmZlciBzdHIsIGJ5dGVbXSBhcnJheSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbmRleCkKKyAgICB7CisgICAgICAgIGJ5dGUgYiA9IDE7CisgICAgICAgIAorICAgICAgICB3aGlsZSAoYiAhPSAwKQorICAgICAgICB7CisgICAgICAgICAgICBiID0gYXJyYXlbaW5kZXhdOworICAgICAgICAgICAgaWYgKGIgIT0gMCkgeworICAgICAgICAgICAgICAgIHN0ci5hcHBlbmQoKGNoYXIpKGIgJiAweDAwRkYpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGluZGV4ICsrOworICAgICAgICB9CisgICAgICAgIHJldHVybiBpbmRleDsKKyAgICB9CisgICAgICAgCisgICAgLyoqCisgICAgKiBDb21wYXJlcyBhIG51bGwgdGVybWluYXRlZCBzdWJzdHJpbmcgZnJvbSBhbiBhcnJheSBvZiBieXRlcy4KKyAgICAqIFN1YnN0cmluZyBpcyBhIHNldCBvZiBub24temVybyBieXRlcyBzdGFydGluZyBmcm9tIGFyZ3VtZW50IHN0YXJ0IHRvIHRoZSAKKyAgICAqIG5leHQgemVybyBieXRlLiBpZiB0aGUgZmlyc3QgYnl0ZSBpcyBhIHplcm8sIHRoZSBuZXh0IGJ5dGUgd2lsbCBiZSB0YWtlbiBhcworICAgICogdGhlIGZpcnN0IGJ5dGUuCisgICAgKiBAcGFyYW0gc3RyIHN0cmluZyB0byBjb21wYXJlCisgICAgKiBAcGFyYW0gYXJyYXkgYnl0ZSBhcnJheQorICAgICogQHBhcmFtIHN0cmluZGV4IGluZGV4IHdpdGhpbiBzdHIgdG8gc3RhcnQgY29tcGFyaW5nCisgICAgKiBAcGFyYW0gYWluZGV4IGFycmF5IGluZGV4IHRvIHN0YXJ0IGluIGJ5dGUgY291bnQKKyAgICAqIEByZXR1cm4gdGhlIGVuZCBwb3NpdGlvbiBvZiB0aGUgc3Vic3RyaW5nIHdpdGhpbiBzdHIgaWYgbWF0Y2hlcyBvdGhlcndpc2UgCisgICAgKiAgICAgICAgIGEgLTEKKyAgICAqLworICAgIHN0YXRpYyBpbnQgY29tcGFyZU51bGxUZXJtQnl0ZVN1YlN0cmluZyhTdHJpbmcgc3RyLCBieXRlW10gYXJyYXksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0cmluZGV4LCBpbnQgYWluZGV4KQorICAgIHsKKyAgICAgICAgYnl0ZSBiID0gMTsKKyAgICAgICAgaW50IGxlbmd0aCA9IHN0ci5sZW5ndGgoKTsKKyAgICAgICAgCisgICAgICAgIHdoaWxlIChiICE9IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGIgPSBhcnJheVthaW5kZXhdOyAgCisgICAgICAgICAgICBhaW5kZXggKys7CisgICAgICAgICAgICBpZiAoYiA9PSAwKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBpZiB3ZSBoYXZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nIGFuZCB5ZXQgdGhlIGFycmF5IGhhcyBub3QgCisgICAgICAgICAgICAvLyByZWFjaGVkIHRoZSBlbmQgb2YgdGhlaXIgc3Vic3RyaW5nIHlldCwgYWJvcnQKKyAgICAgICAgICAgIGlmIChzdHJpbmRleCA9PSBsZW5ndGggCisgICAgICAgICAgICAgICAgfHwgKHN0ci5jaGFyQXQoc3RyaW5kZXgpICE9IChjaGFyKShiICYgMHhGRikpKSB7CisgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0cmluZGV4ICsrOworICAgICAgICB9CisgICAgICAgIHJldHVybiBzdHJpbmRleDsKKyAgICB9CisgICAgICAgCisgICAgLyoqCisgICAgKiBTa2lwIG51bGwgdGVybWluYXRlZCBzdWJzdHJpbmdzIGZyb20gYW4gYXJyYXkgb2YgYnl0ZXMuCisgICAgKiBTdWJzdHJpbmcgaXMgYSBzZXQgb2Ygbm9uLXplcm8gYnl0ZXMgc3RhcnRpbmcgZnJvbSBhcmd1bWVudCBzdGFydCB0byB0aGUgCisgICAgKiBuZXh0IHplcm8gYnl0ZS4gSWYgdGhlIGZpcnN0IGJ5dGUgaXMgYSB6ZXJvLCB0aGUgbmV4dCBieXRlIHdpbGwgYmUgdGFrZW4gYXMKKyAgICAqIHRoZSBmaXJzdCBieXRlLgorICAgICogQHBhcmFtIGFycmF5IGJ5dGUgYXJyYXkKKyAgICAqIEBwYXJhbSBpbmRleCB0byBzdGFydCBzdWJzdHJpbmdzIGluIGJ5dGUgY291bnQKKyAgICAqIEBwYXJhbSBza2lwY291bnQgbnVtYmVyIG9mIG51bGwgdGVybWluYXRlZCBzdWJzdHJpbmdzIHRvIHNraXAKKyAgICAqIEByZXR1cm4gdGhlIGVuZCBwb3NpdGlvbiBvZiB0aGUgc3Vic3RyaW5ncyB3aXRoaW4gdGhlIGNoYXJhY3RlciBhcnJheQorICAgICovCisgICAgc3RhdGljIGludCBza2lwTnVsbFRlcm1CeXRlU3ViU3RyaW5nKGJ5dGVbXSBhcnJheSwgaW50IGluZGV4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBza2lwY291bnQpCisgICAgeworICAgICAgICBieXRlIGI7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2tpcGNvdW50OyBpICsrKQorICAgICAgICB7CisgICAgICAgICAgICBiID0gMTsKKyAgICAgICAgICAgIHdoaWxlIChiICE9IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYiA9IGFycmF5W2luZGV4XTsKKyAgICAgICAgICAgICAgICBpbmRleCArKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gaW5kZXg7CisgICAgfQorICAgICAgIAorICAgIC8qKgorICAgICAqIHNraXAgc3Vic3RyaW5ncyBmcm9tIGFuIGFycmF5IG9mIGNoYXJhY3RlcnMsIHdoZXJlIGVhY2ggY2hhcmFjdGVyIGlzIGEgc2V0IAorICAgICAqIG9mIDIgYnl0ZXMuIHN1YnN0cmluZyBpcyBhIHNldCBvZiBub24temVybyBieXRlcyBzdGFydGluZyBmcm9tIGFyZ3VtZW50IAorICAgICAqIHN0YXJ0IHRvIHRoZSBieXRlIG9mIHRoZSBhcmd1bWVudCB2YWx1ZS4gc2tpcHMgdXAgdG8gYSBtYXggbnVtYmVyIG9mIAorICAgICAqIGNoYXJhY3RlcnMKKyAgICAgKiBAcGFyYW0gYXJyYXkgYnl0ZSBhcnJheSB0byBwYXJzZQorICAgICAqIEBwYXJhbSBpbmRleCB0byBzdGFydCBzdWJzdHJpbmdzIGluIGJ5dGUgY291bnQKKyAgICAgKiBAcGFyYW0gbGVuZ3RoIHRoZSBtYXggbnVtYmVyIG9mIGJ5dGVzIHRvIHNraXAKKyAgICAgKiBAcGFyYW0gc2tpcGVuZCB2YWx1ZSBvZiBieXRlIHRvIHNraXAgdG8KKyAgICAgKiBAcmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgc2tpcHBlZAorICAgICAqLworICAgIHN0YXRpYyBpbnQgc2tpcEJ5dGVTdWJTdHJpbmcoYnl0ZVtdIGFycmF5LCBpbnQgaW5kZXgsIGludCBsZW5ndGgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGUgc2tpcGVuZCkKKyAgICB7CisgICAgICAgIGludCByZXN1bHQ7CisgICAgICAgIGJ5dGUgYjsKKyAgICAgICAgCisgICAgICAgIGZvciAocmVzdWx0ID0gMDsgcmVzdWx0IDwgbGVuZ3RoOyByZXN1bHQgKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGIgPSBhcnJheVtpbmRleCArIHJlc3VsdF07CisgICAgICAgICAgICBpZiAoYiA9PSBza2lwZW5kKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJlc3VsdCArKzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgLy8gcHJpdmF0ZSBkYXRhIG1lbWJlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIC8qKgorICAgICogTWluaW11bSBzdWZmaXggdmFsdWUgdGhhdCBpbmRpY2F0ZXMgaWYgYSBjaGFyYWN0ZXIgaXMgbm9uIGNoYXJhY3Rlci4KKyAgICAqIFVuaWNvZGUgMy4wIG5vbiBjaGFyYWN0ZXJzCisgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTk9OX0NIQVJBQ1RFUl9TVUZGSVhfTUlOXzNfMF8gPSAweEZGRkU7CisgICAgLyoqCisgICAgKiBOZXcgbWluaW11bSBub24gY2hhcmFjdGVyIGluIFVuaWNvZGUgMy4xCisgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTk9OX0NIQVJBQ1RFUl9NSU5fM18xXyA9IDB4RkREMDsKKyAgICAvKioKKyAgICAqIE5ldyBub24gY2hhcmFjdGVyIHJhbmdlIGluIFVuaWNvZGUgMy4xCisgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTk9OX0NIQVJBQ1RFUl9NQVhfM18xXyA9IDB4RkRFRjsKKyAgICAKKyAgICAvLyBwcml2YXRlIGNvbnN0cnVjdG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAKKyAgICAvKioKKyAgICAqIHByaXZhdGUgY29uc3RydWN0b3IgdG8gYXZvaWQgaW5pdGlhbGlzYXRpb24KKyAgICAqLworICAgIHByaXZhdGUgVUNoYXJhY3RlclV0aWxpdHkoKQorICAgIHsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL1VQcm9wZXJ0eUFsaWFzZXMuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL1VQcm9wZXJ0eUFsaWFzZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGEwZjljCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvVVByb3BlcnR5QWxpYXNlcy5qYXZhCkBAIC0wLDAgKzEsNzE4IEBACisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmlnaHQgKGMpIDIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyogQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIEF1dGhvcjogQWxhbiBMaXUKKyogQ3JlYXRlZDogTm92ZW1iZXIgNSAyMDAyCisqIFNpbmNlOiBJQ1UgMi40CisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworcGFja2FnZSBjb20uaWJtLmljdS5pbXBsOworCitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGNvbS5pYm0uaWN1LmxhbmcuKjsKKworLyoqCisgKiBXcmFwcGVyIGZvciB0aGUgcG5hbWVzLmljdSBiaW5hcnkgZGF0YSBmaWxlLiAgVGhpcyBkYXRhIGZpbGUgaXMKKyAqIGltcG9ydGVkIGZyb20gaWN1NGMuICBJdCBjb250YWlucyBwcm9wZXJ0eSBhbmQgcHJvcGVydHkgdmFsdWUKKyAqIGFsaWFzZXMgZnJvbSB0aGUgVUNEIGZpbGVzIFByb3BlcnR5QWxpYXNlcy50eHQgYW5kCisgKiBQcm9wZXJ0eVZhbHVlQWxpYXNlcy50eHQuICBUaGUgZmlsZSBpcyBidWlsdCBieSB0aGUgaWN1NGMgdG9vbAorICogZ2VucG5hbWUuICBJdCBtdXN0IGJlIGJ1aWx0IG9uIGFuIEFTQ0lJIGJpZy1lbmRpYW4gcGxhdGZvcm0gdG8gYmUKKyAqIHVzYWJsZSBpbiBpY3U0ai4KKyAqCisgKiBUaGlzIGNsYXNzIHBlcmZvcm1zIHR3byBmdW5jdGlvbnMuCisgKgorICogKDEpIEl0IGNhbiBpbXBvcnQgdGhlIGZsYXQgYmluYXJ5IGRhdGEgaW50byBhIHRyZWUgb2YgdXNhYmxlCisgKiBvYmplY3RzLgorICoKKyAqICgyKSBJdCBwcm92aWRlcyBhbiBBUEkgdG8gYWNjZXNzIHRoZSB0cmVlIG9mIG9iamVjdHMuCisgKgorICogTmVlZGxlc3MgdG8gc2F5LCB0aGlzIGNsYXNzIGlzIHRpZ2h0bHkgY291cGxlZCB0byB0aGUgYmluYXJ5IGZvcm1hdAorICogb2YgaWN1NGMncyBwbmFtZXMuaWN1IGZpbGUuCisgKgorICogRWFjaCB0aW1lIGEgVVByb3BlcnR5QWxpYXNlcyBpcyBjb25zdHJ1Y3RlZCwgdGhlIHBuYW1lcy5pY3UgZmlsZSBpcworICogcmVhZCwgcGFyc2VkLCBhbmQgYSBkYXRhIHRyZWUgYXNzZW1ibGVkLiAgQ2xpZW50cyBzaG91bGQgY3JlYXRlIG9uZQorICogc2luZ2xldG9uIGluc3RhbmNlIGFuZCBjYWNoZSBpdC4KKyAqCisgKiBAYXV0aG9yIEFsYW4gTGl1CisgKiBAc2luY2UgSUNVIDIuNAorICovCitwdWJsaWMgZmluYWwgY2xhc3MgVVByb3BlcnR5QWxpYXNlcyBpbXBsZW1lbnRzIElDVUJpbmFyeS5BdXRoZW50aWNhdGUgeworCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gUnVudGltZSBkYXRhLiAgVGhpcyBpcyBhbiB1bmZsYXR0ZW5lZCByZXByZXNlbnRhdGlvbiBvZiB0aGUKKyAgICAvLyBkYXRhIGluIHBuYW1lcy5pY3UuCisKKyAgICAvKioKKyAgICAgKiBNYXAgZnJvbSBwcm9wZXJ0eSBlbnVtIHZhbHVlIHRvIG5hbWVHcm91cFBvb2xbXSBpbmRleAorICAgICAqLworICAgIHByaXZhdGUgTm9uQ29udGlndW91c0VudW1Ub1Nob3J0IGVudW1Ub05hbWU7CisKKyAgICAvKioKKyAgICAgKiBNYXAgZnJvbSBwcm9wZXJ0eSBhbGlhcyB0byBwcm9wZXJ0eSBlbnVtIHZhbHVlCisgICAgICovCisgICAgcHJpdmF0ZSBOYW1lVG9FbnVtIG5hbWVUb0VudW07CisKKyAgICAvKioKKyAgICAgKiBNYXAgZnJvbSBwcm9wZXJ0eSBlbnVtIHZhbHVlIHRvIHZhbHVlTWFwQXJyYXlbXSBpbmRleAorICAgICAqLworICAgIHByaXZhdGUgTm9uQ29udGlndW91c0VudW1Ub1Nob3J0IGVudW1Ub1ZhbHVlOworCisgICAgLyoqCisgICAgICogRWFjaCBlbnRyeSByZXByZXNlbnRzIGEgYmluYXJ5IG9yIGVudW1lcmF0ZWQgcHJvcGVydHkKKyAgICAgKi8KKyAgICBwcml2YXRlIFZhbHVlTWFwIHZhbHVlTWFwQXJyYXlbXTsKKworICAgIC8qKgorICAgICAqIFBvb2wgb2YgY29uY2F0ZW5hdGVkIGludGVnZXIgcnVucy4gIEVhY2ggcnVuIGNvbnRhaW5zIG9uZQorICAgICAqIG9yIG1vcmUgZW50cmllcy4gIFRoZSBsYXN0IGVudHJ5IG9mIHRoZSBydW4gaXMgbmVnYXRpdmUuCisgICAgICogQSB6ZXJvIGVudHJ5IGluZGljYXRlcyAibi9hIiBpbiB0aGUgUHJvcGVydHkqQWxpYXNlcy50eHQuCisgICAgICogRWFjaCBlbnRyeSBpcyBhIHN0cmluZ1Bvb2xbXSBpbmRleC4KKyAgICAgKi8KKyAgICBwcml2YXRlIHNob3J0IG5hbWVHcm91cFBvb2xbXTsKKworICAgIC8qKgorICAgICAqIFBvb2wgb2Ygc3RyaW5ncy4KKyAgICAgKi8KKyAgICBwcml2YXRlIFN0cmluZyBzdHJpbmdQb29sW107CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBDb25zdGFudHMKKworICAgIC8qKgorICAgICAqIERlYnVnIGZsYWcgKG5vdCByZWFsbHkgY29uc3RhbnQpCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBERUJVRyA9IElDVURlYnVnLmVuYWJsZWQoInBuYW1lcyIpOworCisgICAgLyoqCisgICAgICogRmlsZSBmb3JtYXQgdGhhdCB0aGlzIGNsYXNzIHVuZGVyc3RhbmRzLgorICAgICAqIFNlZSBpY3U0Yy9zcmMvY29tbW9uL3Byb3BuYW1lLmguCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYnl0ZSBEQVRBX0ZPUk1BVF9JRFtdID0geydwJywgJ24nLCAnYScsICdtJ307CisgICAgCisgICAgLyoqCisgICAgICogRmlsZSB2ZXJzaW9uIHRoYXQgdGhpcyBjbGFzcyB1bmRlcnN0YW5kcy4KKyAgICAgKiBTZWUgaWN1NGMvc3JjL2NvbW1vbi9wcm9wbmFtZS5oLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJ5dGUgREFUQV9GT1JNQVRfVkVSU0lPTiA9IDE7CisgICAgCisgICAgLyoqCisgICAgICogTmFtZSBvZiB0aGUgZGF0YWZpbGUKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgREFUQV9GSUxFX05BTUUgPSAiZGF0YS9wbmFtZXMuaWN1IjsKKyAgICAKKyAgICAvKioKKyAgICAgKiBCdWZmZXIgc2l6ZSBvZiBkYXRhZmlsZS4gIFRoZSB3aG9sZSBmaWxlIGlzIDwgMTZrLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBEQVRBX0JVRkZFUl9TSVpFID0gODE5MjsKKyAgICAKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBDb25zdHJ1Y3RvcgorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIFVQcm9wZXJ0eUFsaWFzZXMgb2JqZWN0LiAgVGhlIGJpbmFyeSBmaWxlCisgICAgICogREFUQV9GSUxFX05BTUUgaXMgcmVhZCBmcm9tIHRoZSBqYXIvY2xhc3NwYXRoIGFuZCB1bmZsYXR0ZW5lZAorICAgICAqIGludG8gbWVtYmVyIHZhcmlhYmxlcyBvZiB0aGlzIG9iamVjdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgVVByb3BlcnR5QWxpYXNlcygpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisKKyAgICAgICAgLy8gT3BlbiB0aGUgLmljdSBmaWxlIGZyb20gdGhlIGphci9jbGFzc3BhdGgKKyAgICAgICAgSW5wdXRTdHJlYW0gaXMgPSBnZXRDbGFzcygpLmdldFJlc291cmNlQXNTdHJlYW0oREFUQV9GSUxFX05BTUUpOworICAgICAgICBCdWZmZXJlZElucHV0U3RyZWFtIGIgPSBuZXcgQnVmZmVyZWRJbnB1dFN0cmVhbShpcywgREFUQV9CVUZGRVJfU0laRSk7CisgICAgICAgIC8vIFJlYWQgYW5kIGRpc2NhcmQgVW5pY29kZSB2ZXJzaW9uLi4uCisgICAgICAgIGJ5dGUgdW5pY29kZVZlcnNpb25bXSA9IElDVUJpbmFyeS5yZWFkSGVhZGVyKGIsIERBVEFfRk9STUFUX0lELCB0aGlzKTsKKyAgICAgICAgRGF0YUlucHV0U3RyZWFtIGQgPSBuZXcgRGF0YUlucHV0U3RyZWFtKGIpOworCisgICAgICAgIC8vIFJlY29yZCB0aGUgb3JpZ2luIHBvc2l0aW9uIG9mIHRoZSBmaWxlLiAgS2VlcCBlbm91Z2ggYXJvdW5kCisgICAgICAgIC8vIHRvIHNlZWsgYmFjayB0byB0aGUgc3RhcnQgb2YgdGhlIGhlYWRlci4KKyAgICAgICAgZC5tYXJrKDI1Nik7CisKKyAgICAgICAgc2hvcnQgZW51bVRvTmFtZV9vZmZzZXQgPSBkLnJlYWRTaG9ydCgpOworICAgICAgICBzaG9ydCBuYW1lVG9FbnVtX29mZnNldCA9IGQucmVhZFNob3J0KCk7CisgICAgICAgIHNob3J0IGVudW1Ub1ZhbHVlX29mZnNldCA9IGQucmVhZFNob3J0KCk7CisgICAgICAgIHNob3J0IHRvdGFsX3NpemUgPSBkLnJlYWRTaG9ydCgpOworICAgICAgICBzaG9ydCB2YWx1ZU1hcF9vZmZzZXQgPSBkLnJlYWRTaG9ydCgpOworICAgICAgICBzaG9ydCB2YWx1ZU1hcF9jb3VudCA9IGQucmVhZFNob3J0KCk7CisgICAgICAgIHNob3J0IG5hbWVHcm91cFBvb2xfb2Zmc2V0ID0gZC5yZWFkU2hvcnQoKTsKKyAgICAgICAgc2hvcnQgbmFtZUdyb3VwUG9vbF9jb3VudCA9IGQucmVhZFNob3J0KCk7CisgICAgICAgIHNob3J0IHN0cmluZ1Bvb2xfb2Zmc2V0ID0gZC5yZWFkU2hvcnQoKTsKKyAgICAgICAgc2hvcnQgc3RyaW5nUG9vbF9jb3VudCA9IGQucmVhZFNob3J0KCk7CisKKyAgICAgICAgaWYgKERFQlVHKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oCisgICAgICAgICAgICAgICAiZW51bVRvTmFtZV9vZmZzZXQ9IiArIGVudW1Ub05hbWVfb2Zmc2V0ICsgIlxuIiArCisgICAgICAgICAgICAgICAibmFtZVRvRW51bV9vZmZzZXQ9IiArIG5hbWVUb0VudW1fb2Zmc2V0ICsgIlxuIiArCisgICAgICAgICAgICAgICAiZW51bVRvVmFsdWVfb2Zmc2V0PSIgKyBlbnVtVG9WYWx1ZV9vZmZzZXQgKyAiXG4iICsKKyAgICAgICAgICAgICAgICJ0b3RhbF9zaXplPSIgKyB0b3RhbF9zaXplICsgIlxuIiArCisgICAgICAgICAgICAgICAidmFsdWVNYXBfb2Zmc2V0PSIgKyB2YWx1ZU1hcF9vZmZzZXQgKyAiXG4iICsKKyAgICAgICAgICAgICAgICJ2YWx1ZU1hcF9jb3VudD0iICsgdmFsdWVNYXBfY291bnQgKyAiXG4iICsKKyAgICAgICAgICAgICAgICJuYW1lR3JvdXBQb29sX29mZnNldD0iICsgbmFtZUdyb3VwUG9vbF9vZmZzZXQgKyAiXG4iICsKKyAgICAgICAgICAgICAgICJuYW1lR3JvdXBQb29sX2NvdW50PSIgKyBuYW1lR3JvdXBQb29sX2NvdW50ICsgIlxuIiArCisgICAgICAgICAgICAgICAic3RyaW5nUG9vbF9vZmZzZXQ9IiArIHN0cmluZ1Bvb2xfb2Zmc2V0ICsgIlxuIiArCisgICAgICAgICAgICAgICAic3RyaW5nUG9vbF9jb3VudD0iICsgc3RyaW5nUG9vbF9jb3VudCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBSZWFkIGl0IGFsbCAobGVzcyB0aGFuIDMyaykuICBTZWVraW5nIGFyb3VuZCAodXNpbmcKKyAgICAgICAgLy8gbWFyay9yZXNldC9za2lwQnl0ZXMpIGRvZXNuJ3Qgd29yayBkaXJlY3RseSBvbiB0aGUgZmlsZSwKKyAgICAgICAgLy8gYnV0IGl0IHdvcmtzIGZpbmUgaWYgd2UgcmVhZCBldmVyeXRoaW5nIGludG8gYSBieXRlW10gYXJyYXkKKyAgICAgICAgLy8gZmlyc3QuCisgICAgICAgIGJ5dGUgcmF3W10gPSBuZXcgYnl0ZVt0b3RhbF9zaXplXTsKKyAgICAgICAgZC5yZXNldCgpOworICAgICAgICBkLnJlYWQocmF3KTsKKyAgICAgICAgZC5jbG9zZSgpOworCisgICAgICAgIEJ1aWxkZXIgYnVpbGRlciA9IG5ldyBCdWlsZGVyKHJhdyk7CisKKyAgICAgICAgc3RyaW5nUG9vbCA9IGJ1aWxkZXIucmVhZFN0cmluZ1Bvb2woc3RyaW5nUG9vbF9vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ1Bvb2xfY291bnQpOworCisgICAgICAgIG5hbWVHcm91cFBvb2wgPSBidWlsZGVyLnJlYWROYW1lR3JvdXBQb29sKG5hbWVHcm91cFBvb2xfb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lR3JvdXBQb29sX2NvdW50KTsKKworICAgICAgICBidWlsZGVyLnNldHVwVmFsdWVNYXBfbWFwKHZhbHVlTWFwX29mZnNldCwgdmFsdWVNYXBfY291bnQpOworCisgICAgICAgIC8vIFNvbWUgb2YgdGhlIGZvbGxvd2luZyBkYXRhIHN0cnVjdHVyZXMgaGF2ZSB0byBiZSBzZXQgdXAKKyAgICAgICAgLy8gaGVyZSwgX25vdF8gaW4gQnVpbGRlci4gIFRoYXQncyBiZWNhdXNlIHRoZXkgYXJlIGluc3RhbmNlcworICAgICAgICAvLyBvZiBub24tc3RhdGljIGlubmVyIGNsYXNzZXMsIGFuZCB0aGV5IGNvbnRhaW4gaW1wbGljaXQKKyAgICAgICAgLy8gcmVmZXJlbmNlcyB0byB0aGlzLgorCisgICAgICAgIGJ1aWxkZXIuc2VlayhlbnVtVG9OYW1lX29mZnNldCk7CisgICAgICAgIGVudW1Ub05hbWUgPSBuZXcgTm9uQ29udGlndW91c0VudW1Ub1Nob3J0KGJ1aWxkZXIpOworICAgICAgICBidWlsZGVyLm5hbWVHcm91cE9mZnNldFRvSW5kZXgoZW51bVRvTmFtZS5vZmZzZXRBcnJheSk7CisKKyAgICAgICAgYnVpbGRlci5zZWVrKG5hbWVUb0VudW1fb2Zmc2V0KTsKKyAgICAgICAgbmFtZVRvRW51bSA9IG5ldyBOYW1lVG9FbnVtKGJ1aWxkZXIpOworCisgICAgICAgIGJ1aWxkZXIuc2VlayhlbnVtVG9WYWx1ZV9vZmZzZXQpOworICAgICAgICBlbnVtVG9WYWx1ZSA9IG5ldyBOb25Db250aWd1b3VzRW51bVRvU2hvcnQoYnVpbGRlcik7CisgICAgICAgIGJ1aWxkZXIudmFsdWVNYXBPZmZzZXRUb0luZGV4KGVudW1Ub1ZhbHVlLm9mZnNldEFycmF5KTsKKworICAgICAgICB2YWx1ZU1hcEFycmF5ID0gbmV3IFZhbHVlTWFwW3ZhbHVlTWFwX2NvdW50XTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPHZhbHVlTWFwX2NvdW50OyArK2kpIHsKKyAgICAgICAgICAgIC8vIE11c3Qgc2VlayB0byB0aGUgc3RhcnQgb2YgZWFjaCBlbnRyeS4KKyAgICAgICAgICAgIGJ1aWxkZXIuc2VlayhidWlsZGVyLnZhbHVlTWFwX21hcFtpXSk7CisgICAgICAgICAgICB2YWx1ZU1hcEFycmF5W2ldID0gbmV3IFZhbHVlTWFwKGJ1aWxkZXIpOworICAgICAgICB9CisKKyAgICAgICAgYnVpbGRlci5jbG9zZSgpOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIFB1YmxpYyBBUEkKKworICAgIC8vIE5PVEUgKElDVSAyLjQpIEZvciB0aGUgMi40IHJlbGVhc2UgaXQgd2FzIGRlY2lkZWQgbGF0ZSBpbiB0aGUgY3ljbGUKKyAgICAvLyB0byBhZGQgYSBuZXcgZW51bSB0byBVUHJvcGVydHksIFVDSEFSX0dFTkVSQUxfQ0FURUdPUllfTUFTSy4gIFRoaXMKKyAgICAvLyBlbnVtIHdvdWxkIHNwZWNpZnkgVUNoYXJDYXRlZ29yeSBtYXNrIHZhbHVlcy4gIEJlY2F1c2Ugb2YgdGltZQorICAgIC8vIGNvbnN0cmFpbnRzLCB0aGUgdW5kZXJseWluZyBiaW5hcnkgZGF0YSBhbmQgZ2VucHJvcCBzY3JpcHRzIHdlcmUKKyAgICAvLyBub3QgdXBkYXRlZC4gIFNvIHRoZSBQTkFNRS0+Li4uIEFQSSB0YWtlcyBVQ0hBUl9HRU5FUkFMX0NBVEVHT1JZCisgICAgLy8gYW5kIGFzc29jaWF0ZXMgaXQgd2l0aCBhIE1BU0sgdmFsdWUuICBXZSBtdW5nZSB0aGluZ3MgdG8gbWFrZSB0aGlzCisgICAgLy8gYXNzb2NpYXRlIHdpdGggYSBVQ2hhckNhdGVnb3J5IHZhbHVlLCBhbmQgd2UgbWFrZQorICAgIC8vIFVDSEFSX0dFTkVSQUxfQ0FURUdPUllfTUFTSyBjb3JyZXNwb25kIHRvIHRoZSBtYXNrIHZhbHVlLgorCisgICAgLy8gV2UgYWRkIGEgc3ludGhldGljIChub3QgaW4gUHJvcGVydHlBbGlhc2VzLnR4dCkgcGFpciBvZiBwcm9wZXJ0eQorICAgIC8vIG5hbWVzIGNvcnJlc3BvbmRpbmcgdG8gVUNIQVJfR0VORVJBTF9DQVRFR09SWV9NQVNLOgorICAgIC8vIGdjbSAgICAgICA7IEdlbmVyYWxfQ2F0ZWdvcnlfTWFzaworCisgICAgLy8gVE9ETzogUmVtb3ZlIHRoZSBtdW5nZSBjb2RlLCBtYXJrZWQgIi8vVE9ETzptdW5nZSIgYmVsb3csIGFmdGVyIHRoZQorICAgIC8vIHNjcmlwdC9iaW5hcnkgZGF0YSBhcmUgdXBkYXRlZCAocHJvYmFibHkgaW4gSUNVIDIuNikuCisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0hPUlRfR0NNX05BTUUgPSAiZ2NtIjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgTE9OR19HQ01fTkFNRSAgPSAiR2VuZXJhbF9DYXRlZ29yeV9NYXNrIjsKKworICAgIC8qKgorICAgICAqIFJldHVybiBhIHByb3BlcnR5IG5hbWUgZ2l2ZW4gYSBwcm9wZXJ0eSBlbnVtLiAgTXVsdGlwbGUKKyAgICAgKiBuYW1lcyBtYXkgYmUgYXZhaWxhYmxlIGZvciBlYWNoIHByb3BlcnR5OyB0aGUgbmFtZUNob2ljZQorICAgICAqIHNlbGVjdHMgYW1vbmcgdGhlbS4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIGdldFByb3BlcnR5TmFtZShpbnQgcHJvcGVydHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5hbWVDaG9pY2UpIHsKKyAgICAgICAgLy9UT0RPOm11bmdlCisgICAgICAgIGlmIChwcm9wZXJ0eSA9PSBVUHJvcGVydHkuR0VORVJBTF9DQVRFR09SWV9NQVNLKSB7CisgICAgICAgICAgICBzd2l0Y2ggKG5hbWVDaG9pY2UpIHsKKyAgICAgICAgICAgIGNhc2UgVVByb3BlcnR5Lk5hbWVDaG9pY2UuU0hPUlQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIFNIT1JUX0dDTV9OQU1FOworICAgICAgICAgICAgY2FzZSBVUHJvcGVydHkuTmFtZUNob2ljZS5MT05HOgorICAgICAgICAgICAgICAgIHJldHVybiBMT05HX0dDTV9OQU1FOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIG5hbWUgY2hvaWNlIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgc2hvcnQgbmFtZUdyb3VwSW5kZXggPSBlbnVtVG9OYW1lLmdldFNob3J0KHByb3BlcnR5KTsKKyAgICAgICAgcmV0dXJuIGNob29zZU5hbWVJbkdyb3VwKG5hbWVHcm91cEluZGV4LCBuYW1lQ2hvaWNlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSBwcm9wZXJ0eSBlbnVtIGdpdmVuIG9uZSBvZiBpdHMgcHJvcGVydHkgbmFtZXMuCisgICAgICovCisgICAgcHVibGljIGludCBnZXRQcm9wZXJ0eUVudW0oU3RyaW5nIHByb3BlcnR5QWxpYXMpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJldHVybiBuYW1lVG9FbnVtLmdldEVudW0ocHJvcGVydHlBbGlhcyk7CisgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAvL1RPRE86bXVuZ2UKKyAgICAgICAgICAgIGlmICgwID09IGNvbXBhcmUocHJvcGVydHlBbGlhcywgU0hPUlRfR0NNX05BTUUpIHx8CisgICAgICAgICAgICAgICAgMCA9PSBjb21wYXJlKHByb3BlcnR5QWxpYXMsIExPTkdfR0NNX05BTUUpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFVQcm9wZXJ0eS5HRU5FUkFMX0NBVEVHT1JZX01BU0s7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0aHJvdyBlOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgdmFsdWUgbmFtZSBnaXZlbiBhIHByb3BlcnR5IGVudW0gYW5kIGEgdmFsdWUgZW51bS4KKyAgICAgKiBNdWx0aXBsZSBuYW1lcyBtYXkgYmUgYXZhaWxhYmxlIGZvciBlYWNoIHZhbHVlOyB0aGUgbmFtZUNob2ljZQorICAgICAqIHNlbGVjdHMgYW1vbmcgdGhlbS4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIGdldFByb3BlcnR5VmFsdWVOYW1lKGludCBwcm9wZXJ0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBuYW1lQ2hvaWNlKSB7CisgICAgICAgIC8vVE9ETzptdW5nZQorICAgICAgICBzd2l0Y2ggKHByb3BlcnR5KSB7CisgICAgICAgIGNhc2UgVVByb3BlcnR5LkdFTkVSQUxfQ0FURUdPUlk6CisgICAgICAgICAgICB2YWx1ZSA9ICh2YWx1ZSA8IDMyKSA/IFVDaGFyYWN0ZXJQcm9wZXJ0eS5nZXRNYXNrKHZhbHVlKSA6IDA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBVUHJvcGVydHkuR0VORVJBTF9DQVRFR09SWV9NQVNLOgorICAgICAgICAgICAgcHJvcGVydHkgPSBVUHJvcGVydHkuR0VORVJBTF9DQVRFR09SWTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIFZhbHVlTWFwIHZtID0gZ2V0VmFsdWVNYXAocHJvcGVydHkpOworICAgICAgICBzaG9ydCBuYW1lR3JvdXBJbmRleCA9IHZtLmVudW1Ub05hbWUuZ2V0U2hvcnQodmFsdWUpOworICAgICAgICByZXR1cm4gY2hvb3NlTmFtZUluR3JvdXAobmFtZUdyb3VwSW5kZXgsIG5hbWVDaG9pY2UpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhIHZhbHVlIGVudW0gZ2l2ZW4gb25lIG9mIGl0cyB2YWx1ZSBuYW1lcyBhbmQgdGhlCisgICAgICogY29ycmVzcG9uZGluZyBwcm9wZXJ0eSBhbGlhcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldFByb3BlcnR5VmFsdWVFbnVtKGludCBwcm9wZXJ0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyB2YWx1ZUFsaWFzKSB7CisgICAgICAgIC8vVE9ETzptdW5nZQorICAgICAgICBpbnQgcCA9IChwcm9wZXJ0eSA9PSBVUHJvcGVydHkuR0VORVJBTF9DQVRFR09SWV9NQVNLKSA/CisgICAgICAgICAgICAgICAgVVByb3BlcnR5LkdFTkVSQUxfQ0FURUdPUlkgOiBwcm9wZXJ0eTsKKyAgICAgICAgVmFsdWVNYXAgdm0gPSBnZXRWYWx1ZU1hcChwKTsKKyAgICAgICAgaW50IHYgPSB2bS5uYW1lVG9FbnVtLmdldEVudW0odmFsdWVBbGlhcyk7CisgICAgICAgIC8vVE9ETzptdW5nZQorICAgICAgICBpZiAocHJvcGVydHkgPT0gVVByb3BlcnR5LkdFTkVSQUxfQ0FURUdPUlkpIHsKKyAgICAgICAgICAgIGludCBnYyA9IDA7CisgICAgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgICAgaWYgKHYgPT0gMSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2M7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICgodiAmIDEpICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gTW9yZSB0aGFuIG9uZSBiaXQgaXMgc2V0OyB3ZSBjYW4ndCBtYXAgdGhpcyBtYXNrIHRvCisgICAgICAgICAgICAgICAgICAgIC8vIGEgVUNoYXJhY3RlckNhdGVnb3J5LgorICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIG5hbWU6ICIgKyB2YWx1ZUFsaWFzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdiA+Pj0gMTsKKyAgICAgICAgICAgICAgICBnYyArPSAxOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiB2OworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIERhdGEgc3RydWN0dXJlcworCisgICAgLyoqCisgICAgICogQSBtYXAgZm9yIHRoZSBsZWdhbCB2YWx1ZXMgb2YgYSBiaW5hcnkgb3IgZW51bWVyYXRlZCBwcm9wZXJ0aWVzLgorICAgICAqLworICAgIHByaXZhdGUgY2xhc3MgVmFsdWVNYXAgeworCisgICAgICAgIC8qKgorICAgICAgICAgKiBNYXBzIHZhbHVlIGVudW0gdG8gaW5kZXggaW50byB0aGUgbmFtZUdyb3VwUG9vbFtdCisgICAgICAgICAqLworICAgICAgICBFbnVtVG9TaG9ydCBlbnVtVG9OYW1lOyAvLyBwb2x5bW9ycGhpYworCisgICAgICAgIC8qKgorICAgICAgICAgKiBNYXBzIHZhbHVlIG5hbWUgdG8gdmFsdWUgZW51bS4KKyAgICAgICAgICovCisgICAgICAgIE5hbWVUb0VudW0gbmFtZVRvRW51bTsKKworICAgICAgICBWYWx1ZU1hcChCdWlsZGVyIGIpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgICAgICBzaG9ydCBlbnVtVG9OYW1lX29mZnNldCA9IGIucmVhZFNob3J0KCk7CisgICAgICAgICAgICBzaG9ydCBuY0VudW1Ub05hbWVfb2Zmc2V0ID0gYi5yZWFkU2hvcnQoKTsKKyAgICAgICAgICAgIHNob3J0IG5hbWVUb0VudW1fb2Zmc2V0ID0gYi5yZWFkU2hvcnQoKTsKKyAgICAgICAgICAgIGlmIChlbnVtVG9OYW1lX29mZnNldCAhPSAwKSB7CisgICAgICAgICAgICAgICAgYi5zZWVrKGVudW1Ub05hbWVfb2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBDb250aWd1b3VzRW51bVRvU2hvcnQgeCA9IG5ldyBDb250aWd1b3VzRW51bVRvU2hvcnQoYik7CisgICAgICAgICAgICAgICAgYi5uYW1lR3JvdXBPZmZzZXRUb0luZGV4KHgub2Zmc2V0QXJyYXkpOworICAgICAgICAgICAgICAgIGVudW1Ub05hbWUgPSB4OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBiLnNlZWsobmNFbnVtVG9OYW1lX29mZnNldCk7CisgICAgICAgICAgICAgICAgTm9uQ29udGlndW91c0VudW1Ub1Nob3J0IHggPSBuZXcgTm9uQ29udGlndW91c0VudW1Ub1Nob3J0KGIpOworICAgICAgICAgICAgICAgIGIubmFtZUdyb3VwT2Zmc2V0VG9JbmRleCh4Lm9mZnNldEFycmF5KTsKKyAgICAgICAgICAgICAgICBlbnVtVG9OYW1lID0geDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGIuc2VlayhuYW1lVG9FbnVtX29mZnNldCk7CisgICAgICAgICAgICBuYW1lVG9FbnVtID0gbmV3IE5hbWVUb0VudW0oYik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBYnN0cmFjdCBtYXAgZnJvbSBlbnVtIHZhbHVlcyB0byBpbnRlZ2Vycy4KKyAgICAgKi8KKyAgICBwcml2YXRlIGludGVyZmFjZSBFbnVtVG9TaG9ydCB7CisgICAgICAgIHNob3J0IGdldFNob3J0KGludCBlbnVtUHJvYmUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdlbmVyaWMgbWFwIGZyb20gZW51bSB2YWx1ZXMgdG8gb2Zmc2V0cy4gIEVudW0gdmFsdWVzIGFyZQorICAgICAqIGNvbnRpZ3VvdXMuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgQ29udGlndW91c0VudW1Ub1Nob3J0IGltcGxlbWVudHMgRW51bVRvU2hvcnQgeworICAgICAgICBpbnQgZW51bVN0YXJ0OworICAgICAgICBpbnQgZW51bUxpbWl0OworICAgICAgICBzaG9ydCBvZmZzZXRBcnJheVtdOworCisgICAgICAgIHB1YmxpYyBzaG9ydCBnZXRTaG9ydChpbnQgZW51bVByb2JlKSB7CisgICAgICAgICAgICBpZiAoZW51bVByb2JlIDwgZW51bVN0YXJ0IHx8IGVudW1Qcm9iZSA+PSBlbnVtTGltaXQpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIGVudW0iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBvZmZzZXRBcnJheVtlbnVtUHJvYmUgLSBlbnVtU3RhcnRdOworICAgICAgICB9CisKKyAgICAgICAgQ29udGlndW91c0VudW1Ub1Nob3J0KElDVUJpbmFyeVN0cmVhbSBzKSB0aHJvd3MgSU9FeGNlcHRpb24gIHsKKyAgICAgICAgICAgIGVudW1TdGFydCA9IHMucmVhZEludCgpOworICAgICAgICAgICAgZW51bUxpbWl0ID0gcy5yZWFkSW50KCk7CisgICAgICAgICAgICBpbnQgY291bnQgPSBlbnVtTGltaXQgLSBlbnVtU3RhcnQ7CisgICAgICAgICAgICBvZmZzZXRBcnJheSA9IG5ldyBzaG9ydFtjb3VudF07CisgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8Y291bnQ7ICsraSkgeworICAgICAgICAgICAgICAgIG9mZnNldEFycmF5W2ldID0gcy5yZWFkU2hvcnQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEdlbmVyaWMgbWFwIGZyb20gZW51bSB2YWx1ZXMgdG8gb2Zmc2V0cy4gIEVudW0gdmFsdWVzIG5lZWQgbm90CisgICAgICogYmUgY29udGlndW91cy4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBOb25Db250aWd1b3VzRW51bVRvU2hvcnQgaW1wbGVtZW50cyBFbnVtVG9TaG9ydCB7CisgICAgICAgIGludCBlbnVtQXJyYXlbXTsKKyAgICAgICAgc2hvcnQgb2Zmc2V0QXJyYXlbXTsKKworICAgICAgICBwdWJsaWMgc2hvcnQgZ2V0U2hvcnQoaW50IGVudW1Qcm9iZSkgeworICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPGVudW1BcnJheS5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChlbnVtQXJyYXlbaV0gPCBlbnVtUHJvYmUpIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGlmIChlbnVtQXJyYXlbaV0gPiBlbnVtUHJvYmUpIGJyZWFrOworICAgICAgICAgICAgICAgIHJldHVybiBvZmZzZXRBcnJheVtpXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgZW51bSIpOworICAgICAgICB9CisKKyAgICAgICAgTm9uQ29udGlndW91c0VudW1Ub1Nob3J0KElDVUJpbmFyeVN0cmVhbSBzKSB0aHJvd3MgSU9FeGNlcHRpb24gIHsKKyAgICAgICAgICAgIGludCBpOworICAgICAgICAgICAgaW50IGNvdW50ID0gcy5yZWFkSW50KCk7CisgICAgICAgICAgICBlbnVtQXJyYXkgPSBuZXcgaW50W2NvdW50XTsKKyAgICAgICAgICAgIG9mZnNldEFycmF5ID0gbmV3IHNob3J0W2NvdW50XTsKKyAgICAgICAgICAgIGZvciAoaT0wOyBpPGNvdW50OyArK2kpIHsKKyAgICAgICAgICAgICAgICBlbnVtQXJyYXlbaV0gPSBzLnJlYWRJbnQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZvciAoaT0wOyBpPGNvdW50OyArK2kpIHsKKyAgICAgICAgICAgICAgICBvZmZzZXRBcnJheVtpXSA9IHMucmVhZFNob3J0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBNYXAgZnJvbSBuYW1lcyB0byBlbnVtIHZhbHVlcy4KKyAgICAgKi8KKyAgICBwcml2YXRlIGNsYXNzIE5hbWVUb0VudW0geworICAgICAgICBpbnQgZW51bUFycmF5W107CisgICAgICAgIHNob3J0IG5hbWVBcnJheVtdOworCisgICAgICAgIGludCBnZXRFbnVtKFN0cmluZyBuYW1lUHJvYmUpIHsKKyAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxuYW1lQXJyYXkubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpbnQgYyA9IFVQcm9wZXJ0eUFsaWFzZXMuY29tcGFyZShuYW1lUHJvYmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nUG9vbFtuYW1lQXJyYXlbaV1dKTsKKyAgICAgICAgICAgICAgICBpZiAoYyA+IDApIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGlmIChjIDwgMCkgYnJlYWs7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVudW1BcnJheVtpXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgbmFtZTogIiArIG5hbWVQcm9iZSk7CisgICAgICAgIH0KKworICAgICAgICBOYW1lVG9FbnVtKEJ1aWxkZXIgYikgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIGludCBpOworICAgICAgICAgICAgaW50IGNvdW50ID0gYi5yZWFkSW50KCk7CisgICAgICAgICAgICBlbnVtQXJyYXkgPSBuZXcgaW50W2NvdW50XTsKKyAgICAgICAgICAgIG5hbWVBcnJheSA9IG5ldyBzaG9ydFtjb3VudF07CisgICAgICAgICAgICBmb3IgKGk9MDsgaTxjb3VudDsgKytpKSB7CisgICAgICAgICAgICAgICAgZW51bUFycmF5W2ldID0gYi5yZWFkSW50KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKGk9MDsgaTxjb3VudDsgKytpKSB7CisgICAgICAgICAgICAgICAgbmFtZUFycmF5W2ldID0gYi5zdHJpbmdPZmZzZXRUb0luZGV4KGIucmVhZFNob3J0KCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gUnVudGltZSBpbXBsZW1lbnRhdGlvbgorCisgICAgLyoqCisgICAgICogQ29tcGFyZSB0d28gcHJvcGVydHkgbmFtZXMsIHJldHVybmluZyA8MCwgMCwgb3IgPjAuICBUaGUKKyAgICAgKiBjb21wYXJpc29uIGlzIHRoYXQgZGVzY3JpYmVkIGFzICJsb29zZSIgbWF0Y2hpbmcgaW4gdGhlCisgICAgICogUHJvcGVydHkqQWxpYXNlcy50eHQgZmlsZXMuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnQgY29tcGFyZShTdHJpbmcgc3RyYSwgU3RyaW5nIHN0cmIpIHsKKyAgICAgICAgLy8gTm90ZTogVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBhIGxpdGVyYWwgY29weSBvZgorICAgICAgICAvLyB1cHJ2X2NvbXBhcmVQcm9wZXJ0eU5hbWVzLiAgSXQgY2FuIHByb2JhYmx5IGJlIGltcHJvdmVkLgorICAgICAgICBpbnQgaXN0cmE9MCwgaXN0cmI9MCwgcmM7CisgICAgICAgIGludCBjc3RyYT0wLCBjc3RyYj0wOworICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAvKiBJZ25vcmUgZGVsaW1pdGVycyAnLScsICdfJywgYW5kIEFTQ0lJIFdoaXRlX1NwYWNlICovCisgICAgICAgICAgICB3aGlsZSAoaXN0cmE8c3RyYS5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIGNzdHJhID0gc3RyYS5jaGFyQXQoaXN0cmEpOworICAgICAgICAgICAgICAgIHN3aXRjaCAoY3N0cmEpIHsKKyAgICAgICAgICAgICAgICBjYXNlICctJzogIGNhc2UgJ18nOiAgY2FzZSAnICc6ICBjYXNlICdcdCc6CisgICAgICAgICAgICAgICAgY2FzZSAnXG4nOiBjYXNlIDB4Yi8qXHYqLzogY2FzZSAnXGYnOiBjYXNlICdccic6CisgICAgICAgICAgICAgICAgICAgICsraXN0cmE7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgd2hpbGUgKGlzdHJiPHN0cmIubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICBjc3RyYiA9IHN0cmIuY2hhckF0KGlzdHJiKTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGNzdHJiKSB7CisgICAgICAgICAgICAgICAgY2FzZSAnLSc6ICBjYXNlICdfJzogIGNhc2UgJyAnOiAgY2FzZSAnXHQnOgorICAgICAgICAgICAgICAgIGNhc2UgJ1xuJzogY2FzZSAweGIvKlx2Ki86IGNhc2UgJ1xmJzogY2FzZSAnXHInOgorICAgICAgICAgICAgICAgICAgICArK2lzdHJiOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIElmIHdlIHJlYWNoIHRoZSBlbmRzIG9mIGJvdGggc3RyaW5ncyB0aGVuIHRoZXkgbWF0Y2ggKi8KKyAgICAgICAgICAgIGJvb2xlYW4gZW5kc3RyYSA9IGlzdHJhPT1zdHJhLmxlbmd0aCgpOworICAgICAgICAgICAgYm9vbGVhbiBlbmRzdHJiID0gaXN0cmI9PXN0cmIubGVuZ3RoKCk7CisgICAgICAgICAgICBpZiAoZW5kc3RyYSkgeworICAgICAgICAgICAgICAgIGlmIChlbmRzdHJiKSByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICBjc3RyYSA9IDA7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGVuZHN0cmIpIHsKKyAgICAgICAgICAgICAgICBjc3RyYiA9IDA7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJjID0gVUNoYXJhY3Rlci50b0xvd2VyQ2FzZShjc3RyYSkgLSBVQ2hhcmFjdGVyLnRvTG93ZXJDYXNlKGNzdHJiKTsKKyAgICAgICAgICAgIGlmIChyYyAhPSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJjOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICArK2lzdHJhOworICAgICAgICAgICAgKytpc3RyYjsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEdpdmVuIGFuIGluZGV4IHRvIGEgcnVuIHdpdGhpbiB0aGUgbmFtZUdyb3VwUG9vbFtdLCBhbmQgYQorICAgICAqIG5hbWVDaG9pY2UgKDAsMSwuLi4pLCBzZWxlY3QgdGhlIG5hbWVDaG9pY2UtdGggZW50cnkgb2YgdGhlIHJ1bi4KKyAgICAgKi8KKyAgICBwcml2YXRlIFN0cmluZyBjaG9vc2VOYW1lSW5Hcm91cChzaG9ydCBuYW1lR3JvdXBJbmRleCwgaW50IG5hbWVDaG9pY2UpIHsKKyAgICAgICAgaWYgKG5hbWVDaG9pY2UgPCAwKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIG5hbWUgY2hvaWNlIik7CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKG5hbWVDaG9pY2UtLSA+IDApIHsKKyAgICAgICAgICAgIGlmIChuYW1lR3JvdXBQb29sW25hbWVHcm91cEluZGV4KytdIDwgMCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgbmFtZSBjaG9pY2UiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBzaG9ydCBhID0gbmFtZUdyb3VwUG9vbFtuYW1lR3JvdXBJbmRleF07CisgICAgICAgIHJldHVybiBzdHJpbmdQb29sWyhhIDwgMCkgPyAtYSA6IGFdOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgdmFsdWVNYXBbXSBlbnRyeSBmb3IgYSBnaXZlbiBwcm9wZXJ0eS4KKyAgICAgKi8KKyAgICBwcml2YXRlIFZhbHVlTWFwIGdldFZhbHVlTWFwKGludCBwcm9wZXJ0eSkgeworICAgICAgICBpbnQgdmFsdWVNYXBJbmRleCA9IGVudW1Ub1ZhbHVlLmdldFNob3J0KHByb3BlcnR5KTsKKyAgICAgICAgcmV0dXJuIHZhbHVlTWFwQXJyYXlbdmFsdWVNYXBJbmRleF07CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gSUNVQmluYXJ5IEFQSQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIGRhdGEgdmVyc2lvbiBjYW4gYmUgdXNlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc0RhdGFWZXJzaW9uQWNjZXB0YWJsZShieXRlIHZlcnNpb25bXSkgICB7CisgICAgICAgIHJldHVybiB2ZXJzaW9uWzBdID09IERBVEFfRk9STUFUX1ZFUlNJT047CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gQnVpbGRlcgorCisgICAgLyoqCisgICAgICogQSBzcGVjaWFsaXplZCBJQ1VCaW5hcnlTdHJlYW0gdGhhdCBjYW4gbWFwIGJldHdlZW4gb2Zmc2V0cyBhbmQKKyAgICAgKiBpbmRleCB2YWx1ZXMgaW50byB2YXJpb3VzIGFycmF5cyAoc3RyaW5nUG9vbCwgbmFtZUdyb3VwUG9vbCwKKyAgICAgKiBhbmQgdmFsdWVNYXApLiAgSXQgYWxzbyBrbm93cyBob3cgdG8gcmVhZCB2YXJpb3VzIHN0cnVjdHVyZXMuCisgICAgICovCisgICAgc3RhdGljIGNsYXNzIEJ1aWxkZXIgZXh0ZW5kcyBJQ1VCaW5hcnlTdHJlYW0geworICAgICAgICAKKyAgICAgICAgLy8gbWFwW2ldID0gb2Zmc2V0IG9mIG9iamVjdCBpLiAgV2UgbmVlZCBtYXBzIGZvciBhbGwgb2Ygb3VyCisgICAgICAgIC8vIGFycmF5cy4gIFRoZSBhcnJheXMgYXJlIGluZGV4ZWQgYnkgb2Zmc2V0IGluIHRoZSByYXcgYmluYXJ5CisgICAgICAgIC8vIGZpbGU7IHdlIG5lZWQgdG8gdHJhbnNsYXRlIHRoYXQgdG8gaW5kZXguCisgICAgICAgIAorICAgICAgICBwcml2YXRlIHNob3J0IHN0cmluZ1Bvb2xfbWFwW107CisgICAgICAgIAorICAgICAgICBwcml2YXRlIHNob3J0IHZhbHVlTWFwX21hcFtdOworICAgICAgICAKKyAgICAgICAgcHJpdmF0ZSBzaG9ydCBuYW1lR3JvdXBfbWFwW107CisKKyAgICAgICAgcHVibGljIEJ1aWxkZXIoYnl0ZSByYXdbXSkgeworICAgICAgICAgICAgc3VwZXIocmF3KTsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBUaGUgdmFsdWVNYXBfbWFwW10gbXVzdCBiZSBzZXR1cCBpbiBhZHZhbmNlLiAgVGhpcyBtZXRob2QKKyAgICAgICAgICogZG9lcyB0aGF0LgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHZvaWQgc2V0dXBWYWx1ZU1hcF9tYXAoc2hvcnQgb2Zmc2V0LCBzaG9ydCBjb3VudCkgeworICAgICAgICAgICAgdmFsdWVNYXBfbWFwID0gbmV3IHNob3J0W2NvdW50XTsKKyAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxjb3VudDsgKytpKSB7CisgICAgICAgICAgICAgICAgLy8gU3RhcnQgb2YgZWFjaCBlbnRyeS4gIEVhY2ggZW50cnkgaXMgNiBieXRlcyBsb25nLgorICAgICAgICAgICAgICAgIHZhbHVlTWFwX21hcFtpXSA9IChzaG9ydCkgKG9mZnNldCArIGkgKiA2KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBSZWFkIHN0cmluZ1Bvb2xbXS4gIEJ1aWxkIHVwIHRyYW5zbGF0aW9uIHRhYmxlIGZyb20gb2Zmc2V0cworICAgICAgICAgKiB0byBzdHJpbmcgaW5kaWNlcyAoc3RyaW5nUG9vbF9tYXBbXSkuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgU3RyaW5nW10gcmVhZFN0cmluZ1Bvb2woc2hvcnQgb2Zmc2V0LCBzaG9ydCBjb3VudCkKKyAgICAgICAgICAgIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgICAgICBzZWVrKG9mZnNldCk7CisgICAgICAgICAgICAvLyBBbGxvY2F0ZSBvbmUgbW9yZSBzdHJpbmdQb29sIGVudHJ5IHRoYW4gbmVlZGVkLiAgVXNlIHRoaXMKKyAgICAgICAgICAgIC8vIHRvIHN0b3JlIGEgIm5vIHN0cmluZyIgZW50cnkgaW4gdGhlIHBvb2wsIGF0IGluZGV4IDAuICBUaGlzCisgICAgICAgICAgICAvLyBtYXBzIHRvIG9mZnNldCAwLCBzbyBsZXQgc3RyaW5nUG9vbF9tYXBbMF0gPSAwLgorICAgICAgICAgICAgU3RyaW5nIHN0cmluZ1Bvb2xbXSA9IG5ldyBTdHJpbmdbY291bnQgKyAxXTsKKyAgICAgICAgICAgIHN0cmluZ1Bvb2xfbWFwID0gbmV3IHNob3J0W2NvdW50ICsgMV07CisgICAgICAgICAgICBzaG9ydCBwb3MgPSBvZmZzZXQ7CisgICAgICAgICAgICBTdHJpbmdCdWZmZXIgYnVmID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICAgICAgc3RyaW5nUG9vbF9tYXBbMF0gPSAwOworICAgICAgICAgICAgZm9yIChpbnQgaT0xOyBpPD1jb3VudDsgKytpKSB7CisgICAgICAgICAgICAgICAgYnVmLnNldExlbmd0aCgwKTsKKyAgICAgICAgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgd29ya3MgYmVjYXVzZSB0aGUgbmFtZSBpcyBpbnZhcmlhbnQtQVNDSUkKKyAgICAgICAgICAgICAgICAgICAgY2hhciBjID0gKGNoYXIpIHJlYWRVbnNpZ25lZEJ5dGUoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gMCkgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoYyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHN0cmluZ1Bvb2xfbWFwW2ldID0gcG9zOworICAgICAgICAgICAgICAgIHN0cmluZ1Bvb2xbaV0gPSBidWYudG9TdHJpbmcoKTsKKyAgICAgICAgICAgICAgICBwb3MgKz0gc3RyaW5nUG9vbFtpXS5sZW5ndGgoKSArIDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoREVCVUcpIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oInJlYWQgc3RyaW5nUG9vbCB4ICIgKyBjb3VudCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI6ICIgKyBzdHJpbmdQb29sWzFdICsgIiwgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ1Bvb2xbMl0gKyAiLCAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nUG9vbFszXSArICIsLi4uIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gc3RyaW5nUG9vbDsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBSZWFkIHRoZSBuYW1lR3JvdXBQb29sW10sIGFuZCBidWlsZCB1cCB0aGUgb2Zmc2V0LT5pbmRleAorICAgICAgICAgKiBtYXAgKG5hbWVHcm91cFBvb2xfbWFwW10pLgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHNob3J0W10gcmVhZE5hbWVHcm91cFBvb2woc2hvcnQgb2Zmc2V0LCBzaG9ydCBjb3VudCkKKyAgICAgICAgICAgIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgICAgICAvLyBSZWFkIG5hbWVHcm91cFBvb2xbXS4gIFRoaXMgY29udGFpbnMgb2Zmc2V0cyBmcm9tIHN0YXJ0IG9mCisgICAgICAgICAgICAvLyBoZWFkZXIuICBXZSB0cmFuc2xhdGUgdGhlc2UgaW50byBpbmRpY2VzIGludG8gc3RyaW5nUG9vbFtdCisgICAgICAgICAgICAvLyBvbiB0aGUgZmx5LiAgVGhlIG9mZnNldCAwLCB3aGljaCBpbmRpY2F0ZXMgIm5vIGVudHJ5Iiwgd2UKKyAgICAgICAgICAgIC8vIHRyYW5zbGF0ZSBpbnRvIGluZGV4IDAsIHdoaWNoIGNvbnRhaW5zIGEgbnVsbCBTdHJpbmcKKyAgICAgICAgICAgIC8vIHBvaW50ZXIuCisgICAgICAgICAgICBzZWVrKG9mZnNldCk7CisgICAgICAgICAgICBzaG9ydCBwb3MgPSBvZmZzZXQ7CisgICAgICAgICAgICBzaG9ydCBuYW1lR3JvdXBQb29sW10gPSBuZXcgc2hvcnRbY291bnRdOworICAgICAgICAgICAgbmFtZUdyb3VwX21hcCA9IG5ldyBzaG9ydFtjb3VudF07CisgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8Y291bnQ7ICsraSkgeworICAgICAgICAgICAgICAgIG5hbWVHcm91cF9tYXBbaV0gPSBwb3M7CisgICAgICAgICAgICAgICAgbmFtZUdyb3VwUG9vbFtpXSA9IHN0cmluZ09mZnNldFRvSW5kZXgocmVhZFNob3J0KCkpOworICAgICAgICAgICAgICAgIHBvcyArPSAyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKERFQlVHKSB7CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJyZWFkIG5hbWVHcm91cFBvb2wgeCAiICsgY291bnQgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOiAiICsgbmFtZUdyb3VwUG9vbFswXSArICIsICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lR3JvdXBQb29sWzFdICsgIiwgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVHcm91cFBvb2xbMl0gKyAiLC4uLiIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG5hbWVHcm91cFBvb2w7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogQ29udmVydCBhbiBvZmZzZXQgaW50byB0aGUgc3RyaW5nIHBvb2wgaW50byBhIHN0cmluZ1Bvb2xbXQorICAgICAgICAgKiBpbmRleC4KKyAgICAgICAgICovCisgICAgICAgIHByaXZhdGUgc2hvcnQgc3RyaW5nT2Zmc2V0VG9JbmRleChzaG9ydCBvZmZzZXQpIHsKKyAgICAgICAgICAgIGludCBwcm9iZSA9IG9mZnNldDsKKyAgICAgICAgICAgIGlmIChwcm9iZSA8IDApIHByb2JlID0gLXByb2JlOworICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPHN0cmluZ1Bvb2xfbWFwLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKHN0cmluZ1Bvb2xfbWFwW2ldID09IHByb2JlKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAoc2hvcnQpICgob2Zmc2V0IDwgMCkgPyAtaSA6IGkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJDYW4ndCBtYXAgc3RyaW5nIHBvb2wgb2Zmc2V0ICIgKyBvZmZzZXQgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiB0byBpbmRleCIpOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIENvbnZlcnQgYW4gYXJyYXkgb2Ygb2Zmc2V0cyBpbnRvIHRoZSBzdHJpbmcgcG9vbCBpbnRvIGFuCisgICAgICAgICAqIGFycmF5IG9mIHN0cmluZ1Bvb2xbXSBpbmRpY2VzLiAgTU9ESUZJRVMgVEhFIEFSUkFZIElOCisgICAgICAgICAqIFBMQUNFLgorICAgICAgICAgKi8KKyAgICAgICAgcHJpdmF0ZSB2b2lkIHN0cmluZ09mZnNldFRvSW5kZXgoc2hvcnQgYXJyYXlbXSkgeworICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPGFycmF5Lmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgYXJyYXlbaV0gPSBzdHJpbmdPZmZzZXRUb0luZGV4KGFycmF5W2ldKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBDb252ZXJ0IGFuIG9mZnNldCBpbnRvIHRoZSB2YWx1ZSBtYXAgaW50byBhIHZhbHVlTWFwW10KKyAgICAgICAgICogaW5kZXguCisgICAgICAgICAqLworICAgICAgICBwcml2YXRlIHNob3J0IHZhbHVlTWFwT2Zmc2V0VG9JbmRleChzaG9ydCBvZmZzZXQpIHsKKyAgICAgICAgICAgIGZvciAoc2hvcnQgaT0wOyBpPHZhbHVlTWFwX21hcC5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIGlmICh2YWx1ZU1hcF9tYXBbaV0gPT0gb2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJDYW4ndCBtYXAgdmFsdWUgbWFwIG9mZnNldCAiICsgb2Zmc2V0ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgdG8gaW5kZXgiKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBDb252ZXJ0IGFuIGFycmF5IG9mIG9mZnNldHMgaW50byB0aGUgdmFsdWUgbWFwIGFycmF5IGludG8KKyAgICAgICAgICogYW4gYXJyYXkgb2YgdmFsdWVNYXBbXSBpbmRpY2VzLiAgTU9ESUZJRVMgVEhFIEFSUkFZIElOCisgICAgICAgICAqIFBMQUNFLgorICAgICAgICAgKi8KKyAgICAgICAgcHJpdmF0ZSB2b2lkIHZhbHVlTWFwT2Zmc2V0VG9JbmRleChzaG9ydCBhcnJheVtdKSB7CisgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8YXJyYXkubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICBhcnJheVtpXSA9IHZhbHVlTWFwT2Zmc2V0VG9JbmRleChhcnJheVtpXSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogQ29udmVydCBhbiBvZmZzZXQgaW50byB0aGUgbmFtZSBncm91cCBwb29sIGludG8gYQorICAgICAgICAgKiBuYW1lR3JvdXBQb29sW10gaW5kZXguCisgICAgICAgICAqLworICAgICAgICBwcml2YXRlIHNob3J0IG5hbWVHcm91cE9mZnNldFRvSW5kZXgoc2hvcnQgb2Zmc2V0KSB7CisgICAgICAgICAgICBmb3IgKHNob3J0IGk9MDsgaTxuYW1lR3JvdXBfbWFwLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKG5hbWVHcm91cF9tYXBbaV0gPT0gb2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJDYW4ndCBtYXAgbmFtZSBncm91cCBvZmZzZXQgIiArIG9mZnNldCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHRvIGluZGV4Iik7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogQ29udmVydCBhbiBhcnJheSBvZiBvZmZzZXRzIGludG8gdGhlIG5hbWUgZ3JvdXAgcG9vbCBpbnRvIGFuCisgICAgICAgICAqIGFycmF5IG9mIG5hbWVHcm91cFBvb2xbXSBpbmRpY2VzLiAgTU9ESUZJRVMgVEhFIEFSUkFZIElOCisgICAgICAgICAqIFBMQUNFLgorICAgICAgICAgKi8KKyAgICAgICAgcHJpdmF0ZSB2b2lkIG5hbWVHcm91cE9mZnNldFRvSW5kZXgoc2hvcnQgYXJyYXlbXSkgeworICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPGFycmF5Lmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgYXJyYXlbaV0gPSBuYW1lR3JvdXBPZmZzZXRUb0luZGV4KGFycmF5W2ldKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL1VTZXJpYWxpemVkU2V0LmphdmEgYi9zcmMvY29tL2libS9pY3UvaW1wbC9VU2VyaWFsaXplZFNldC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzZmZhMTcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9VU2VyaWFsaXplZFNldC5qYXZhCkBAIC0wLDAgKzEsMjI2IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgQ29weXJpZ2h0IChDKSAyMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisgKiAgIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9VU2VyaWFsaXplZFNldC5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzA2LzIwIDAxOjE4OjA5ICQgCisgKiAkUmV2aXNpb246IDEuMyAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LmltcGw7CisvKioKKyAqIEB2ZXJzaW9uIAkxLjAKKyAqIEBhdXRob3IgICAgIE1hcmt1cyBXLiBTY2hlcmVyCisgKi8KKworLyoqCisgKiBTaW1wbGUgY2xhc3MgZm9yIGhhbmRsaW5nIHNlcmlhbGl6ZWQgVVNldC9Vbmljb2RlU2V0IHN0cnVjdHVyZXMKKyAqIHdpdGhvdXQgb2JqZWN0IGNyZWF0aW9uLiBTZWUgSUNVNEMgaWN1L3NvdXJjZS9jb21tb24vdXNldC5jLgorICoKKyAqIEBpbnRlcm5hbAorICovCitwdWJsaWMgZmluYWwgY2xhc3MgVVNlcmlhbGl6ZWRTZXQgeworCQorICAgIHB1YmxpYyBmaW5hbCBib29sZWFuIGdldFNldChjaGFyIHNyY1tdLCBpbnQgc3JjU3RhcnQpIHsKKyAgICAgICAgLy8gbGVhdmUgbW9zdCBhcmd1bWVudCBjaGVja2luZyB1cCB0byBKYXZhIGV4Y2VwdGlvbnMKKyAgICAgICAgYXJyYXk9bnVsbDsKKyAgICAgICAgYXJyYXlPZmZzZXQ9Ym1wTGVuZ3RoPWxlbmd0aD0wOworCisgICAgICAgIGxlbmd0aD1zcmNbc3JjU3RhcnQrK107CisgICAgICAgIAorICAgICAgICAKKyAgICAgICAgaWYoKGxlbmd0aCYweDgwMDApID4wKSB7CisgICAgICAgICAgICAvKiB0aGVyZSBhcmUgc3VwcGxlbWVudGFyeSB2YWx1ZXMgKi8KKyAgICAgICAgICAgIGxlbmd0aCY9MHg3ZmZmOworICAgICAgICAgICAgaWYoc3JjLmxlbmd0aDwoc3JjU3RhcnQrMStsZW5ndGgpKSB7CisgICAgICAgICAgICAgICAgbGVuZ3RoPTA7CisgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbigpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYm1wTGVuZ3RoPXNyY1tzcmNTdGFydCsrXTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qIG9ubHkgQk1QIHZhbHVlcyAqLworICAgICAgICAgICAgaWYoc3JjLmxlbmd0aDwoc3JjU3RhcnQrbGVuZ3RoKSkgeworICAgICAgICAgICAgICAgIGxlbmd0aD0wOworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBibXBMZW5ndGg9bGVuZ3RoOworICAgICAgICB9CisgICAgICAgIGFycmF5ID0gbmV3IGNoYXJbbGVuZ3RoXTsKKyAgICAgICAgU3lzdGVtLmFycmF5Y29weShzcmMsc3JjU3RhcnQsYXJyYXksMCxsZW5ndGgpOworICAgICAgICAvL2FycmF5T2Zmc2V0PXNyY1N0YXJ0OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBwdWJsaWMgZmluYWwgIGJvb2xlYW4gIGNvbnRhaW5zKGludCBjKSB7CisgICAgICAgIGlmKGM8MCB8fCAweDEwZmZmZjxjKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBpZihjPD0weGZmZmYpIHsKKyAgICAgICAgICAgIC8qIGZpbmQgYyBpbiB0aGUgQk1QIHBhcnQgKi8KKyAgICAgICAgICAgIGludCBpLCBibXBMaW1pdD1hcnJheU9mZnNldCtibXBMZW5ndGg7CisgICAgICAgICAgICBmb3IoaT1hcnJheU9mZnNldDsgaTxibXBMaW1pdCAmJiBjPj1hcnJheVtpXTsgKytpKSB7fQorICAgICAgICAgICAgcmV0dXJuICgoKGktYXJyYXlPZmZzZXQpJjEpPjApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyogZmluZCBjIGluIHRoZSBzdXBwbGVtZW50YXJ5IHBhcnQgKi8KKyAgICAgICAgICAgIGludCBpLCBsaW1pdD1hcnJheU9mZnNldCtsZW5ndGg7CisgICAgICAgICAgICBjaGFyIGhpZ2g9KGNoYXIpKGM+PjE2KSwgbG93PShjaGFyKWM7CisgICAgICAgICAgICBmb3IoaT1hcnJheU9mZnNldCtibXBMZW5ndGg7CisgICAgICAgICAgICAgICAgaTxsaW1pdCAmJiAoaGlnaD5hcnJheVtpXSB8fCAoaGlnaD09YXJyYXlbaV0gJiYgbG93Pj1hcnJheVtpKzFdKSk7CisgICAgICAgICAgICAgICAgaSs9Mikge30KKworICAgICAgICAgICAgLyogY291bnQgcGFpcnMgb2YgMTYtYml0IHVuaXRzIGV2ZW4gcGVyIEJNUCBhbmQgY2hlY2sgaWYgdGhlIG51bWJlciBvZiBwYWlycyBpcyBvZGQgKi8KKyAgICAgICAgICAgIHJldHVybiAoKGkrYm1wTGVuZ3RoLWFycmF5T2Zmc2V0KSYyKSE9MDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBmaW5hbCAgYm9vbGVhbiBjb3VudFJhbmdlcygpIHsKKyAgICAgICAgcmV0dXJuICgoYm1wTGVuZ3RoKyhsZW5ndGgtYm1wTGVuZ3RoKS8yKzEpLzIpPjA7CisgICAgfQorCisgICAgcHVibGljIGZpbmFsICBib29sZWFuIGdldFJhbmdlKGludCByYW5nZUluZGV4LCBpbnQgcmFuZ2VbXSkgeworICAgICAgICBpZihyYW5nZUluZGV4PDApIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisJCXJhbmdlPW5ldyBpbnRbMl07CisJCQorICAgICAgICByYW5nZUluZGV4Kj0yOyAvKiBhZGRyZXNzIHN0YXJ0L2xpbWl0IHBhaXJzICovCisgICAgICAgIGlmKHJhbmdlSW5kZXg8Ym1wTGVuZ3RoKSB7CisgICAgICAgICAgICByYW5nZVswXT1hcnJheVthcnJheU9mZnNldCtyYW5nZUluZGV4KytdOworICAgICAgICAgICAgaWYocmFuZ2VJbmRleDxibXBMZW5ndGgpIHsKKyAgICAgICAgICAgICAgICByYW5nZVsxXT1hcnJheVthcnJheU9mZnNldCtyYW5nZUluZGV4XTsKKyAgICAgICAgICAgIH0gZWxzZSBpZihyYW5nZUluZGV4PGxlbmd0aCkgeworICAgICAgICAgICAgICAgIHJhbmdlWzFdPSgoKGludClhcnJheVthcnJheU9mZnNldCtyYW5nZUluZGV4XSk8PDE2KXxhcnJheVthcnJheU9mZnNldCtyYW5nZUluZGV4KzFdOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByYW5nZVsxXT0weDExMDAwMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmFuZ2VJbmRleC09Ym1wTGVuZ3RoOworICAgICAgICAgICAgcmFuZ2VJbmRleCo9MjsgLyogYWRkcmVzcyBwYWlycyBvZiBwYWlycyBvZiB1bml0cyAqLworICAgICAgICAgICAgaW50IHN1cHBMZW5ndGg9bGVuZ3RoLWJtcExlbmd0aDsKKyAgICAgICAgICAgIGlmKHJhbmdlSW5kZXg8c3VwcExlbmd0aCkgeworICAgICAgICAgICAgICAgIGludCBvZmZzZXQ9YXJyYXlPZmZzZXQrYm1wTGVuZ3RoOworICAgICAgICAgICAgICAgIHJhbmdlWzBdPSgoKGludClhcnJheVtvZmZzZXQrcmFuZ2VJbmRleF0pPDwxNil8YXJyYXlbb2Zmc2V0K3JhbmdlSW5kZXgrMV07CisgICAgICAgICAgICAgICAgcmFuZ2VJbmRleCs9MjsKKyAgICAgICAgICAgICAgICBpZihyYW5nZUluZGV4PHN1cHBMZW5ndGgpIHsKKyAgICAgICAgICAgICAgICByYW5nZVsxXT0oKChpbnQpYXJyYXlbb2Zmc2V0K3JhbmdlSW5kZXhdKTw8MTYpfGFycmF5W29mZnNldCtyYW5nZUluZGV4KzFdOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJhbmdlWzFdPTB4MTEwMDAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCXB1YmxpYyBmaW5hbCB2b2lkIHNldFNlcmlhbGl6ZWRUb09uZShpbnQgYykgeworCSAgICBpZiggMHgxMGZmZmY8YykgeworCSAgICAgICAgcmV0dXJuOworCSAgICB9CisKKwkgICAgaWYoYzwweGZmZmYpIHsKKwkgICAgICAgIGJtcExlbmd0aD1sZW5ndGg9MjsKKwkgICAgICAgIGFycmF5WzBdPShjaGFyKWM7CisJICAgICAgICBhcnJheVsxXT0oY2hhcikoYysxKTsKKwkgICAgfSBlbHNlIGlmKGM9PTB4ZmZmZikgeworCSAgICAgICAgYm1wTGVuZ3RoPTE7CisJICAgICAgICBsZW5ndGg9MzsKKwkgICAgICAgIGFycmF5WzBdPTB4ZmZmZjsKKwkgICAgICAgIGFycmF5WzFdPTE7CisJICAgICAgICBhcnJheVsyXT0wOworCSAgICB9IGVsc2UgaWYoYzwweDEwZmZmZikgeworCSAgICAgICAgYm1wTGVuZ3RoPTA7CisJICAgICAgICBsZW5ndGg9NDsKKwkgICAgICAgIGFycmF5WzBdPShjaGFyKShjPj4xNik7CisJICAgICAgICBhcnJheVsxXT0oY2hhciljOworCSAgICAgICAgKytjOworCSAgICAgICAgYXJyYXlbMl09KGNoYXIpKGM+PjE2KTsKKwkgICAgICAgIGFycmF5WzNdPShjaGFyKWM7CisJICAgIH0gZWxzZSAvKiBjPT0weDEwZmZmZiAqLyB7CisJICAgICAgICBibXBMZW5ndGg9MDsKKwkgICAgICAgIGxlbmd0aD0yOworCSAgICAgICAgYXJyYXlbMF09MHgxMDsKKwkgICAgICAgIGFycmF5WzFdPTB4ZmZmZjsKKwkgICAgfQorCX0KKwkKKwkKKwlwdWJsaWMgZmluYWwgYm9vbGVhbiBnZXRTZXJpYWxpemVkUmFuZ2UoIGludCByYW5nZUluZGV4LGludFtdIHJhbmdlKSB7CisJICAgIGlmKCByYW5nZUluZGV4PDApIHsKKwkgICAgICAgIHJldHVybiBmYWxzZTsKKwkgICAgfQorCSAgICBpZihhcnJheT09bnVsbCl7CisJCQlhcnJheSA9IG5ldyBjaGFyWzhdOworCQl9CisgICAgICAgIGlmKHJhbmdlPT1udWxsIHx8IHJhbmdlLmxlbmd0aCA8Mil7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCk7CisgICAgICAgIH0KKyAgICAgICAgcmFuZ2VJbmRleCo9MjsgLyogYWRkcmVzcyBzdGFydC9saW1pdCBwYWlycyAqLworCSAgICBpZihyYW5nZUluZGV4PGJtcExlbmd0aCkgeworCSAgICAgICAgcmFuZ2VbMF09YXJyYXlbcmFuZ2VJbmRleCsrXTsKKwkgICAgICAgIGlmKHJhbmdlSW5kZXg8Ym1wTGVuZ3RoKSB7CisJICAgICAgICAgICAgcmFuZ2VbMV09YXJyYXlbcmFuZ2VJbmRleF07CisJICAgICAgICB9IGVsc2UgaWYocmFuZ2VJbmRleDxsZW5ndGgpIHsKKwkgICAgICAgICAgICByYW5nZVsxXT0oKChpbnQpYXJyYXlbcmFuZ2VJbmRleF0pPDwxNil8YXJyYXlbcmFuZ2VJbmRleCsxXTsKKwkgICAgICAgIH0gZWxzZSB7CisJICAgICAgICAgICAgcmFuZ2VbMV09MHgxMTAwMDA7CisJICAgICAgICB9CisgICAgICAgICAgICByYW5nZVsxXS09MTsKKwkgICAgICAgIHJldHVybiB0cnVlOworCSAgICB9IGVsc2UgeworCSAgICAgICAgcmFuZ2VJbmRleC09Ym1wTGVuZ3RoOworCSAgICAgICAgcmFuZ2VJbmRleCo9MjsgLyogYWRkcmVzcyBwYWlycyBvZiBwYWlycyBvZiB1bml0cyAqLworCSAgICAgICAgbGVuZ3RoLT1ibXBMZW5ndGg7CisJICAgICAgICBpZihyYW5nZUluZGV4PGxlbmd0aCkgeworCSAgICAgICAgICAgIGludCBvZmZzZXQ9YXJyYXlPZmZzZXQrYm1wTGVuZ3RoOworCSAgICAgICAgICAgIHJhbmdlWzBdPSgoKGludClhcnJheVtvZmZzZXQrcmFuZ2VJbmRleF0pPDwxNil8YXJyYXlbb2Zmc2V0K3JhbmdlSW5kZXgrMV07CisJICAgICAgICAgICAgcmFuZ2VJbmRleCs9MjsKKwkgICAgICAgICAgICBpZihyYW5nZUluZGV4PGxlbmd0aCkgeworCSAgICAgICAgICAgICAgICByYW5nZVsxXT0oKChpbnQpYXJyYXlbb2Zmc2V0K3JhbmdlSW5kZXhdKTw8MTYpfGFycmF5W29mZnNldCtyYW5nZUluZGV4KzFdOworCSAgICAgICAgICAgIH0gZWxzZSB7CisJICAgICAgICAgICAgICAgIHJhbmdlWzFdPTB4MTEwMDAwOworCSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByYW5nZVsxXS09MTsKKwkgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKwkgICAgICAgIH0gZWxzZSB7CisJICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCSAgICAgICAgfQorCSAgICB9CisJfQorCXB1YmxpYyBmaW5hbCBib29sZWFuIHNlcmlhbGl6ZWRDb250YWlucyhpbnQgYykgeworCQorCSAgICBpZihjPjB4MTBmZmZmKSB7CisJICAgICAgICByZXR1cm4gZmFsc2U7CisJICAgIH0KKwkgICAgCisJICAgIGlmKGM8PTB4ZmZmZikgeworCSAgICAJaW50IGk7CisJICAgICAgICAvKiBmaW5kIGMgaW4gdGhlIEJNUCBwYXJ0ICovCisJICAgICAgICBmb3IoaT0wOyBpPGJtcExlbmd0aCAmJiAoY2hhciljPj1hcnJheVtpXTsgKytpKSB7fQorCSAgICAgICAgcmV0dXJuIChib29sZWFuKSgoaSYxKSAhPSAwKTsKKwkgICAgfSBlbHNlIHsKKwkgICAgCWludCBpOworCSAgICAgICAgLyogZmluZCBjIGluIHRoZSBzdXBwbGVtZW50YXJ5IHBhcnQgKi8KKwkgICAgICAgIGNoYXIgaGlnaD0oY2hhcikoYz4+MTYpLCBsb3c9KGNoYXIpYzsKKwkgICAgICAgIGZvcihpPWJtcExlbmd0aDsKKwkgICAgICAgICAgICBpPGxlbmd0aCAmJiAoaGlnaD5hcnJheVtpXSB8fCAoaGlnaD09YXJyYXlbaV0gJiYgbG93Pj1hcnJheVtpKzFdKSk7CisJICAgICAgICAgICAgaSs9Mikge30KKwkKKwkgICAgICAgIC8qIGNvdW50IHBhaXJzIG9mIDE2LWJpdCB1bml0cyBldmVuIHBlciBCTVAgYW5kIGNoZWNrIGlmIHRoZSBudW1iZXIgb2YgcGFpcnMgaXMgb2RkICovCisJICAgICAgICByZXR1cm4gKGJvb2xlYW4pKCgoaStibXBMZW5ndGgpJjIpIT0wKTsKKwkgICAgfQorCX0KKwkKKwlwdWJsaWMgZmluYWwgaW50IGNvdW50U2VyaWFsaXplZFJhbmdlcygpIHsKKwkgICAgcmV0dXJuIChibXBMZW5ndGgrKGxlbmd0aC1ibXBMZW5ndGgpLzIrMSkvMjsKKwl9CisKKyAgICBwcml2YXRlIGNoYXIgYXJyYXlbXSA9IG5ldyBjaGFyWzhdOworICAgIHByaXZhdGUgaW50IGFycmF5T2Zmc2V0LCBibXBMZW5ndGgsIGxlbmd0aDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9Vbmljb2RlQ2hhcmFjdGVySXRlcmF0b3IuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL1VuaWNvZGVDaGFyYWN0ZXJJdGVyYXRvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3YmZhNDAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9Vbmljb2RlQ2hhcmFjdGVySXRlcmF0b3IuamF2YQpAQCAtMCwwICsxLDMzOCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvQXR0aWMvVW5pY29kZUNoYXJhY3Rlckl0ZXJhdG9yLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDgvMDcgMTc6NTU6MDMgJCAKKyAqICRSZXZpc2lvbjogMS4yICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmltcGw7CisKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0LlJlcGxhY2VhYmxlOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuUmVwbGFjZWFibGVTdHJpbmc7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC5VVEYxNjsKK2ltcG9ydCBqYXZhLnRleHQuQ2hhcmFjdGVySXRlcmF0b3I7CisKKy8qKgorICogSW50ZXJuYWwgY2xhc3MgdGhhdCBpdGVyYXRlcyB0aHJvdWdoIGEgY29tLmlibS50ZXh0LlJlcGxhY2FibGUgdGV4dCBvYmplY3QgCisgKiB0byByZXR1cm4gZWl0aGVyIFVuaWNvZGUgY2hhcmFjdGVycy4KKyAqIEBhdXRob3Igc3lud2VlCisgKiBAdmVyc2lvbiByZWxlYXNlIDIuMSwgRmVicnVhcnkgMjAwMgorICovCitwdWJsaWMgZmluYWwgY2xhc3MgVW5pY29kZUNoYXJhY3Rlckl0ZXJhdG9yIGltcGxlbWVudHMgQ2hhcmFjdGVySXRlcmF0b3IKK3sKKwkvLyBwdWJsaWMgZGF0YSBtZW1iZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJCisJLyoqCisJICogSW5kaWNhdG9yIHRoYXQgd2UgaGF2ZSByZWFjaGVkIHRoZSBlbmRzIG9mIHRoZSBVVEYxNiB0ZXh0IHdoZW4gcmV0dXJuaW5nCisJICogMTYgYml0IGNoYXJhY3Rlci4KKwkgKi8KKwlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBET05FID0gMHhGRkZGOworCS8qKgorCSAqIEluZGljYXRvciB0aGF0IHdlIGhhdmUgcmVhY2hlZCB0aGUgZW5kcyBvZiB0aGUgVVRGMTYgdGV4dCB3aGVuIHJldHVybmluZworCSAqIGNvZGVwb2ludHMuCisJICovCisJcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRE9ORV9DT0RFUE9JTlQgPSAtMTsKKwkKKwkvLyBwdWJsaWMgY29uc3RydWN0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJCisJLyoqCisJICogUHVibGljIGNvbnN0cnVjdG9yLgorCSAqIEJ5IGRlZmF1bHQgdGhlIGl0ZXJhdGlvbiByYW5nZSB3aWxsIGJlIGZyb20gMCB0byB0aGUgZW5kIG9mIHRoZSB0ZXh0LgorCSAqIEBwYXJhbSByZXBsYWNhYmxlIHRleHQgd2hpY2ggdGhlIGl0ZXJhdG9yIHdpbGwgYmUgYmFzZWQgb24KKwkgKi8KKwlwdWJsaWMgVW5pY29kZUNoYXJhY3Rlckl0ZXJhdG9yKFJlcGxhY2VhYmxlIHJlcGxhY2VhYmxlKQorCXsKKwkJbV9yZXBsYWNlYWJsZV8gID0gcmVwbGFjZWFibGU7CisJCW1faW5kZXhfICAgICAgICA9IDA7CisJCW1fc3RhcnRfICAgICAgICA9IDA7CisJCW1fbGltaXRfICAgICAgICA9IHJlcGxhY2VhYmxlLmxlbmd0aCgpOworCX0KKwkKKwkvKioKKwkgKiBQdWJsaWMgY29uc3RydWN0b3IKKwkgKiBCeSBkZWZhdWx0IHRoZSBpdGVyYXRpb24gcmFuZ2Ugd2lsbCBiZSBmcm9tIDAgdG8gdGhlIGVuZCBvZiB0aGUgdGV4dC4KKwkgKiBAcGFyYW0gc3RyIHRleHQgd2hpY2ggdGhlIGl0ZXJhdG9yIHdpbGwgYmUgYmFzZWQgb24KKwkgKi8KKwlwdWJsaWMgVW5pY29kZUNoYXJhY3Rlckl0ZXJhdG9yKFN0cmluZyBzdHIpCisJeworCQltX3JlcGxhY2VhYmxlXyAgPSBuZXcgUmVwbGFjZWFibGVTdHJpbmcoc3RyKTsKKwkJbV9pbmRleF8gICAgICAgID0gMDsKKwkJbV9zdGFydF8gICAgICAgID0gMDsKKwkJbV9saW1pdF8gICAgICAgID0gbV9yZXBsYWNlYWJsZV8ubGVuZ3RoKCk7CisJfQorCQorCS8qKgorICAgICAqIENvbnN0cnVjdHMgYW4gaXRlcmF0b3Igb3ZlciB0aGUgZ2l2ZW4gcmFuZ2Ugb2YgdGhlIGdpdmVuIHN0cmluZy4KKyAgICAgKiBAcGFyYW0gIHRleHQgIHRleHQgdG8gYmUgaXRlcmF0ZWQgb3ZlcgorICAgICAqIEBwYXJhbSAgc3RhcnQgb2Zmc2V0IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgdG8gaXRlcmF0ZQorICAgICAqIEBwYXJhbSAgbGltaXQgb2Zmc2V0IG9mIHRoZSBjaGFyYWN0ZXIgZm9sbG93aW5nIHRoZSBsYXN0IGNoYXJhY3RlciB0bworICAgICAqIAkJCQkJaXRlcmF0ZQorICAgICAqLworICAgIHB1YmxpYyBVbmljb2RlQ2hhcmFjdGVySXRlcmF0b3IoU3RyaW5nIHN0ciwgaW50IHN0YXJ0LCBpbnQgbGltaXQpIAorICAgIHsKKyAgICAJbV9yZXBsYWNlYWJsZV8gID0gbmV3IFJlcGxhY2VhYmxlU3RyaW5nKHN0cik7CisJCW1fc3RhcnRfICAgICAgICA9IHN0YXJ0OworCQltX2xpbWl0XyAgICAgICAgPSBsaW1pdDsKKwkJbV9pbmRleF8gICAgICAgID0gbV9zdGFydF87CisgICAgfSAgIAorICAgIAorICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYW4gaXRlcmF0b3Igb3ZlciB0aGUgZ2l2ZW4gcmFuZ2Ugb2YgdGhlIGdpdmVuIHJlcGxhY2VhYmxlIAorICAgICAqIHN0cmluZy4KKyAgICAgKiBAcGFyYW0gIHRleHQgIHRleHQgdG8gYmUgaXRlcmF0ZWQgb3ZlcgorICAgICAqIEBwYXJhbSAgc3RhcnQgb2Zmc2V0IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgdG8gaXRlcmF0ZQorICAgICAqIEBwYXJhbSAgbGltaXQgb2Zmc2V0IG9mIHRoZSBjaGFyYWN0ZXIgZm9sbG93aW5nIHRoZSBsYXN0IGNoYXJhY3RlciB0bworICAgICAqIAkJCQkJaXRlcmF0ZQorICAgICAqLworICAgIHB1YmxpYyBVbmljb2RlQ2hhcmFjdGVySXRlcmF0b3IoUmVwbGFjZWFibGUgcmVwbGFjZWFibGUsIGludCBzdGFydCwgaW50IGxpbWl0KSAKKyAgICB7CisgICAgCW1fcmVwbGFjZWFibGVfICA9IHJlcGxhY2VhYmxlOworCQltX3N0YXJ0XyAgICAgICAgPSBzdGFydDsKKwkJbV9saW1pdF8gICAgICAgID0gbGltaXQ7CisJCW1faW5kZXhfICAgICAgICA9IG1fc3RhcnRfOworICAgIH0gICAKKwkKKwkvLyBwdWJsaWMgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJCisJLyoqCisgICAgICogQ3JlYXRlcyBhIGNvcHkgb2YgdGhpcyBpdGVyYXRvci4KKyAgICAgKiBDbG9uaW5nIHdpbGwgbm90IGR1cGxpY2F0ZSBhIG5ldyBSZXBsYWNlYWJsZSBvYmplY3QuCisgICAgICogQHJldHVybiBjb3B5IG9mIHRoaXMgaXRlcmF0b3IKKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0IGNsb25lKCkKKyAgICB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gc3VwZXIuY2xvbmUoKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoCisgICAgICAgICAgICAiQ2xvbmluZyBieSB0aGUgc3VwZXIgY2xhc3MgamF2YS50ZXh0LkNoYXJhY3Rlckl0ZXJhdG9yIGlzIG5vdCAiICsKKyAgICAgICAgICAgICJzdXBwb3J0ZWQiKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKwkvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IFVURjE2IGNoYXJhY3Rlci4KKyAgICAgKiBAcmV0dXJuIGN1cnJlbnQgVVRGMTYgY2hhcmFjdGVyCisgICAgICovCisgICAgcHVibGljIGNoYXIgY3VycmVudCgpCisgICAgeworICAgICAgICBpZiAobV9pbmRleF8gPj0gbV9zdGFydF8gJiYgbV9pbmRleF8gPCBtX2xpbWl0XykgeworICAgICAgICAgICAgcmV0dXJuIG1fcmVwbGFjZWFibGVfLmNoYXJBdChtX2luZGV4Xyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIERPTkU7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnQgY29kZXBvaW50CisgICAgICogQHJldHVybiBjdXJyZW50IGNvZGVwb2ludAorICAgICAqLworICAgIHB1YmxpYyBpbnQgY3VycmVudENvZGVQb2ludCgpCisgICAgeworICAgICAgICBpZiAobV9pbmRleF8gPj0gbV9zdGFydF8gJiYgbV9pbmRleF8gPCBtX2xpbWl0XykgeworICAgICAgICAgICAgcmV0dXJuIG1fcmVwbGFjZWFibGVfLmNoYXIzMkF0KG1faW5kZXhfKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gRE9ORV9DT0RFUE9JTlQ7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEdldHMgdGhlIGZpcnN0IFVURjE2IGNoYXJhY3RlciBpbiB0ZXh0LgorICAgICAqIEByZXR1cm4gdGhlIGZpcnN0IFVURjE2IGluIHRleHQuCisgICAgICovCisgICAgcHVibGljIGNoYXIgZmlyc3QoKQorICAgIHsKKyAgICAgICAgbV9pbmRleF8gPSBtX3N0YXJ0XzsKKyAgICAgICAgcmV0dXJuIGN1cnJlbnQoKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgc3RhcnQgb2YgdGhlIHRleHQgdG8gaXRlcmF0ZS4KKyAgICAgKiBAcmV0dXJuIGJ5IGRlZmF1bHQgdGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gMCwgdW5sZXNzIGEgcmFuZ2UgZm9yIAorICAgICAqIGl0ZXJhdGlvbiBoYWQgYmVlbiBzcGVjaWZpZWQgZHVyaW5nIGNvbnN0cnVjdGlvbi4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldEJlZ2luSW5kZXgoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc3RhcnRfOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGxpbWl0IG9mZnNldCBvZiB0aGUgdGV4dCB0byBpdGVyYXRlCisgICAgICogQHJldHVybiBieSBkZWZhdWx0IHRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUgdGV4dCwgdW5sZXNzIGEgCisgICAgICogcmFuZ2UgZm9yIGl0ZXJhdGlvbiBoYWQgYmVlbiBzcGVjaWZpZWQgZHVyaW5nIGNvbnN0cnVjdGlvbi4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldEVuZEluZGV4KCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2xpbWl0XzsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgY3VycmVudCBpbmRleCBpbiB0ZXh0LgorICAgICAqIEByZXR1cm4gY3VycmVudCBpbmRleCBpbiB0ZXh0LgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0SW5kZXgoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faW5kZXhfOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBsYXN0IFVURjE2IGl0ZXJhdGVhYmxlIGNoYXJhY3RlciBmcm9tIHRoZSB0ZXh0IGFuZCBzaGlmdHMgdGhlIAorICAgICAqIGluZGV4IHRvIHRoZSBlbmQgb2YgdGhlIHRleHQgYWNjb3JkaW5nbHkuCisgICAgICogQHJldHVybiB0aGUgbGFzdCBVVEYxNiBpdGVyYXRlYWJsZSBjaGFyYWN0ZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgY2hhciBsYXN0KCkKKyAgICB7CisgICAgICAgIGlmIChtX2xpbWl0XyAhPSBtX3N0YXJ0XykgeworICAgICAgICAgICAgbV9pbmRleF8gPSBtX2xpbWl0XyAtIDE7CisgICAgICAgICAgICByZXR1cm4gbV9yZXBsYWNlYWJsZV8uY2hhckF0KG1faW5kZXhfKTsKKyAgICAgICAgfSAKKwkJbV9pbmRleF8gPSBtX2xpbWl0XzsKKyAgICAgICAgcmV0dXJuIERPTkU7CisgICAgfQorICAgIAorCS8qKgorICAgICAqIFJldHVybnMgbmV4dCBVVEYxNiBjaGFyYWN0ZXIgYW5kIGluY3JlbWVudHMgdGhlIGl0ZXJhdG9yJ3MgaW5kZXggYnkgMS4gCisJICogSWYgdGhlIHJlc3VsdGluZyBpbmRleCBpcyBncmVhdGVyIG9yIGVxdWFsIHRvIHRoZSBpdGVyYXRpb24gbGltaXQsIHRoZSAKKwkgKiBpbmRleCBpcyByZXNldCB0byB0aGUgdGV4dCBpdGVyYXRpb24gbGltaXQgYW5kIGEgdmFsdWUgb2YgRE9ORV9DT0RFUE9JTlQgaXMgCisJICogcmV0dXJuZWQuIAorCSAqIEByZXR1cm4gbmV4dCBVVEYxNiBjaGFyYWN0ZXIgaW4gdGV4dCBvciBET05FIGlmIHRoZSBuZXcgaW5kZXggaXMgb2ZmIHRoZSAKKwkgKiAgICAgICAgIGVuZCBvZiB0aGUgdGV4dCBpdGVyYXRpb24gbGltaXQuCisgICAgICovCisgICAgcHVibGljIGNoYXIgbmV4dCgpCisgICAgeworICAgICAgICBpZiAobV9pbmRleF8gPCBtX2xpbWl0XykgeworICAgICAgICAJY2hhciByZXN1bHQgPSBtX3JlcGxhY2VhYmxlXy5jaGFyQXQobV9pbmRleF8pOworICAgICAgICAgICAgbV9pbmRleF8gKys7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgICAgIHJldHVybiBET05FOworICAgIH0KKworCS8qKgorCSAqIFJldHVybnMgbmV4dCBjb2RlcG9pbnQgYWZ0ZXIgY3VycmVudCBpbmRleCBhbmQgaW5jcmVtZW50cyB0aGUgaXRlcmF0b3IncyAKKwkgKiBpbmRleCBieSBhIG51bWJlciBkZXBlbmRpbmcgb24gdGhlIHJldHVybmVkIGNvZGVwb2ludC4gCisJICogVGhpcyBhc3N1bWVzIHRoZSB0ZXh0IGlzIHN0b3JlZCBhcyAxNi1iaXQgY29kZSB1bml0cworICAgICAqIHdpdGggc3Vycm9nYXRlIHBhaXJzIGludGVybWl4ZWQuIElmIHRoZSBpbmRleCBvZiBhIGxlYWRpbmcgb3IgdHJhaWxpbmcgCisgICAgICogY29kZSB1bml0IG9mIGEgc3Vycm9nYXRlIHBhaXIgaXMgZ2l2ZW4sIHJldHVybiB0aGUgY29kZSBwb2ludCBhZnRlciB0aGUgCisgICAgICogc3Vycm9nYXRlIHBhaXIuCisJICogSWYgdGhlIHJlc3VsdGluZyBpbmRleCBpcyBncmVhdGVyIG9yIGVxdWFsIHRvIHRoZSB0ZXh0IGl0ZXJhdGVhYmxlIGxpbWl0LAorCSAqIHRoZSBjdXJyZW50IGluZGV4IGlzIHJlc2V0IHRvIHRoZSB0ZXh0IGl0ZXJhdGVhYmxlIGxpbWl0IGFuZCBhIHZhbHVlIG9mIAorCSAqIERPTkVfQ09ERVBPSU5UIGlzIHJldHVybmVkLiAKKwkgKiBAcmV0dXJuIG5leHQgY29kZXBvaW50IGluIHRleHQgb3IgRE9ORV9DT0RFUE9JTlQgaWYgdGhlIG5ldyBpbmRleCBpcyBvZmYgdGhlIAorCSAqICAgICAgICAgZW5kIG9mIHRoZSB0ZXh0IGl0ZXJhdGVhYmxlIGxpbWl0LgorCSAqLwkKKwlwdWJsaWMgaW50IG5leHRDb2RlUG9pbnQoKQorCXsKKyAgICAgICAgaWYgKG1faW5kZXhfIDwgbV9saW1pdF8pIHsKKyAgICAgICAgICAgIGNoYXIgY2ggPSBtX3JlcGxhY2VhYmxlXy5jaGFyQXQobV9pbmRleF8pOworICAgICAgICAgICAgbV9pbmRleF8gKys7CisgICAgICAgICAgICBpZiAoY2ggPj0gVVRGMTYuTEVBRF9TVVJST0dBVEVfTUlOX1ZBTFVFICYmCisgICAgICAgICAgICAgICAgY2ggPD0gVVRGMTYuTEVBRF9TVVJST0dBVEVfTUFYX1ZBTFVFICYmCisgICAgICAgICAgICAgICAgbV9pbmRleF8gPCBtX2xpbWl0XykgeworICAgICAgICAgICAgICAgIGNoYXIgdHJhaWwgPSBtX3JlcGxhY2VhYmxlXy5jaGFyQXQobV9pbmRleF8pOworICAgICAgICAgICAgICAgIGlmICh0cmFpbCA+PSBVVEYxNi5UUkFJTF9TVVJST0dBVEVfTUlOX1ZBTFVFICYmCisgICAgICAgICAgICAgICAgICAgIHRyYWlsIDw9IFVURjE2LlRSQUlMX1NVUlJPR0FURV9NQVhfVkFMVUUpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9pbmRleF8gKys7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBVQ2hhcmFjdGVyUHJvcGVydHkuZ2V0UmF3U3VwcGxlbWVudGFyeShjaCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFpbCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGNoOworICAgICAgICB9CisgICAgICAgIHJldHVybiBET05FX0NPREVQT0lOVDsKKwl9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHByZXZpb3VzIFVURjE2IGNoYXJhY3RlciBhbmQgZGVjcmVtZW50cyB0aGUgaXRlcmF0b3IncyBpbmRleCBieSAKKyAgICAgKiAxLiAKKwkgKiBJZiB0aGUgcmVzdWx0aW5nIGluZGV4IGlzIGxlc3MgdGhhbiB0aGUgdGV4dCBpdGVyYXRlYWJsZSBsaW1pdCwgdGhlIAorCSAqIGluZGV4IGlzIHJlc2V0IHRvIHRoZSBzdGFydCBvZiB0aGUgdGV4dCBpdGVyYXRpb24gYW5kIGEgdmFsdWUgb2YgCisJICogRE9ORV9DT0RFUE9JTlQgaXMgcmV0dXJuZWQuIAorCSAqIEByZXR1cm4gbmV4dCBVVEYxNiBjaGFyYWN0ZXIgaW4gdGV4dCBvciBET05FIGlmIHRoZSBuZXcgaW5kZXggaXMgb2ZmIHRoZSAKKwkgKiAgICAgICAgIHN0YXJ0IG9mIHRoZSB0ZXh0IGl0ZXJhdGlvbiByYW5nZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgY2hhciBwcmV2aW91cygpCisgICAgeworICAgICAgICBpZiAobV9pbmRleF8gPiBtX3N0YXJ0XykgeworICAgICAgICAgICAgbV9pbmRleF8gLS07CisgICAgICAgICAgICByZXR1cm4gbV9yZXBsYWNlYWJsZV8uY2hhckF0KG1faW5kZXhfKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gRE9ORTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJucyBwcmV2aW91cyBjb2RlcG9pbnQgYmVmb3JlIGN1cnJlbnQgaW5kZXggYW5kIGRlY3JlbWVudHMgdGhlIAorICAgICAqIGl0ZXJhdG9yJ3MgaW5kZXggYnkgYSBudW1iZXIgZGVwZW5kaW5nIG9uIHRoZSByZXR1cm5lZCBjb2RlcG9pbnQuIAorCSAqIFRoaXMgYXNzdW1lcyB0aGUgdGV4dCBpcyBzdG9yZWQgYXMgMTYtYml0IGNvZGUgdW5pdHMKKyAgICAgKiB3aXRoIHN1cnJvZ2F0ZSBwYWlycyBpbnRlcm1peGVkLiBJZiB0aGUgaW5kZXggb2YgYSBsZWFkaW5nIG9yIHRyYWlsaW5nIAorICAgICAqIGNvZGUgdW5pdCBvZiBhIHN1cnJvZ2F0ZSBwYWlyIGlzIGdpdmVuLCByZXR1cm4gdGhlIGNvZGUgcG9pbnQgYmVmb3JlIHRoZSAKKyAgICAgKiBzdXJyb2dhdGUgcGFpci4KKwkgKiBJZiB0aGUgcmVzdWx0aW5nIGluZGV4IGlzIGxlc3MgdGhhbiB0aGUgdGV4dCBpdGVyYXRlYWJsZSByYW5nZSwgdGhlIAorCSAqIGN1cnJlbnQgaW5kZXggaXMgcmVzZXQgdG8gdGhlIHN0YXJ0IG9mIHRoZSByYW5nZSBhbmQgYSB2YWx1ZSBvZiAKKwkgKiBET05FX0NPREVQT0lOVCBpcyByZXR1cm5lZC4gCisJICogQHJldHVybiBwcmV2aW91cyBjb2RlcG9pbnQgaW4gdGV4dCBvciBET05FX0NPREVQT0lOVCBpZiB0aGUgbmV3IGluZGV4IGlzIAorCSAqICAgICAgICAgb2ZmIHRoZSBzdGFydCBvZiB0aGUgdGV4dCBpdGVyYXRpb24gcmFuZ2UuCisgICAgICovCisgICAgcHVibGljIGludCBwcmV2aW91c0NvZGVQb2ludCgpCisgICAgeworICAgICAgICBpZiAobV9pbmRleF8gPiBtX3N0YXJ0XykgeworICAgICAgICAgICAgbV9pbmRleF8gLS07CisgICAgICAgICAgICBjaGFyIGNoID0gbV9yZXBsYWNlYWJsZV8uY2hhckF0KG1faW5kZXhfKTsKKyAgICAgICAgICAgIGlmIChjaCA+PSBVVEYxNi5UUkFJTF9TVVJST0dBVEVfTUlOX1ZBTFVFICYmCisgICAgICAgICAgICAgICAgY2ggPD0gVVRGMTYuVFJBSUxfU1VSUk9HQVRFX01BWF9WQUxVRSAmJgorICAgICAgICAgICAgICAgIG1faW5kZXhfID4gbV9zdGFydF8pIHsKKyAgICAgICAgICAgICAgICBtX2luZGV4XyAtLTsKKyAgICAgICAgICAgICAgICBjaGFyIGxlYWQgPSBtX3JlcGxhY2VhYmxlXy5jaGFyQXQobV9pbmRleF8pOworICAgICAgICAgICAgICAgIGlmIChsZWFkID49IFVURjE2LkxFQURfU1VSUk9HQVRFX01JTl9WQUxVRSAmJgorICAgICAgICAgICAgICAgICAgICBsZWFkIDw9IFVURjE2LkxFQURfU1VSUk9HQVRFX01BWF9WQUxVRSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gVUNoYXJhY3RlclByb3BlcnR5LmdldFJhd1N1cHBsZW1lbnRhcnkobGVhZCxjaCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGNoOworICAgICAgICB9CisgICAgICAgIHJldHVybiBET05FX0NPREVQT0lOVDsKKyAgICB9CisKKwkvKioKKwkgKiA8cD5TZXRzIHRoZSBpbmRleCB0byB0aGUgc3BlY2lmaWVkIGluZGV4IGluIHRoZSB0ZXh0IGFuZCByZXR1cm5zIHRoYXQgCisJICogc2luZ2xlIFVURjE2IGNoYXJhY3RlciBhdCBpbmRleC4gCisJICogVGhpcyBhc3N1bWVzIHRoZSB0ZXh0IGlzIHN0b3JlZCBhcyAxNi1iaXQgY29kZSB1bml0cy48L3A+CisJICogQHBhcmFtIGluZGV4IHRoZSBpbmRleCB3aXRoaW4gdGhlIHRleHQuIAorCSAqIEBleGNlcHRpb24gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlzIHRocm93biBpZiBhbiBpbnZhbGlkIGluZGV4IGlzIAorCSAqICAgICAgICAgICAgc3VwcGxpZWQuIGkuZS4gaW5kZXggaXMgb3V0IG9mIGJvdW5kcy4KKwkgKiBAcmV0dXJuIHRoZSBjaGFyYWN0ZXIgYXQgdGhlIHNwZWNpZmllZCBpbmRleCBvciBET05FIGlmIHRoZSBzcGVjaWZpZWQgCisJICogICAgICAgICBpbmRleCBpcyBlcXVhbCB0byB0aGUgbGltaXQgb2YgdGhlIHRleHQgaXRlcmF0aW9uIHJhbmdlLgorCSAqLworCXB1YmxpYyBjaGFyIHNldEluZGV4KGludCBpbmRleCkKKwl7CisJCWlmIChpbmRleCA8IG1fc3RhcnRfIHx8IGluZGV4ID4gbV9saW1pdF8pIHsKKwkJCXRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkluZGV4IGluZGV4IG91dCBvZiBib3VuZHMiKTsKKwkJfQorCQltX2luZGV4XyA9IGluZGV4OworCQlyZXR1cm4gY3VycmVudCgpOworCX0KKwkKKwkvLyBwcml2YXRlIGRhdGEgbWVtYmVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJCisJLyoqCisJICogUmVwbGFjYWJsZSBvYmplY3QKKwkgKi8KKwlwcml2YXRlIFJlcGxhY2VhYmxlIG1fcmVwbGFjZWFibGVfOworCS8qKgorCSAqIEN1cnJlbnQgaW5kZXgKKwkgKi8KKwlwcml2YXRlIGludCBtX2luZGV4XzsKKwkvKioKKwkgKiBTdGFydCBvZmZzZXQgb2YgaXRlcmF0ZWFibGUgcmFuZ2UsIGJ5IGRlZmF1bHQgdGhpcyBpcyAwCisJICovCisJcHJpdmF0ZSBpbnQgbV9zdGFydF87CisJLyoqCisJICogTGltaXQgb2Zmc2V0IG9mIGl0ZXJhdGVhYmxlIHJhbmdlLCBieSBkZWZhdWx0IHRoaXMgaXMgdGhlIGxlbmd0aCBvZiB0aGUKKwkgKiBzdHJpbmcKKwkgKi8KKwlwcml2YXRlIGludCBtX2xpbWl0XzsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL1V0aWxpdHkuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL1V0aWxpdHkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4zZDAwNjFiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvVXRpbGl0eS5qYXZhCkBAIC0wLDAgKzEsMTY1MCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvVXRpbGl0eS5qYXZhLHYgJAorICogJERhdGU6IDIwMDIvMTEvMDcgMjM6MTQ6NDYgJAorICogJFJldmlzaW9uOiAxLjMzICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5pbXBsOworaW1wb3J0IGNvbS5pYm0uaWN1LmxhbmcuKjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0Lio7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5VQ2hhcmFjdGVyUHJvcGVydHk7CisKK3B1YmxpYyBmaW5hbCBjbGFzcyBVdGlsaXR5IHsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgQVBPU1RST1BIRSA9ICdcJyc7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciBCQUNLU0xBU0ggID0gJ1xcJzsKKyAgICAKKyAgICAvKioKKyAgICAgKiBDb252ZW5pZW5jZSB1dGlsaXR5IHRvIGNvbXBhcmUgdHdvIE9iamVjdFtdcy4KKyAgICAgKiBPdWdodCB0byBiZSBpbiBTeXN0ZW0KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGJvb2xlYW4gYXJyYXlFcXVhbHMoT2JqZWN0W10gc291cmNlLCBPYmplY3QgdGFyZ2V0KSB7CisgICAgICAgIGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuICh0YXJnZXQgPT0gbnVsbCk7CisgICAgICAgIGlmICghKHRhcmdldCBpbnN0YW5jZW9mIE9iamVjdFtdKSkgcmV0dXJuIGZhbHNlOworICAgICAgICBPYmplY3RbXSB0YXJnID0gKE9iamVjdFtdKSB0YXJnZXQ7CisgICAgICAgIHJldHVybiAoc291cmNlLmxlbmd0aCA9PSB0YXJnLmxlbmd0aAorICAgICAgICAgICAgICAgICYmIGFycmF5UmVnaW9uTWF0Y2hlcyhzb3VyY2UsIDAsIHRhcmcsIDAsIHNvdXJjZS5sZW5ndGgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb252ZW5pZW5jZSB1dGlsaXR5IHRvIGNvbXBhcmUgdHdvIGludFtdcworICAgICAqIE91Z2h0IHRvIGJlIGluIFN5c3RlbQorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgYm9vbGVhbiBhcnJheUVxdWFscyhpbnRbXSBzb3VyY2UsIE9iamVjdCB0YXJnZXQpIHsKKyAgICAgICAgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4gKHRhcmdldCA9PSBudWxsKTsKKyAgICAgICAgaWYgKCEodGFyZ2V0IGluc3RhbmNlb2YgaW50W10pKSByZXR1cm4gZmFsc2U7CisgICAgICAgIGludFtdIHRhcmcgPSAoaW50W10pIHRhcmdldDsKKyAgICAgICAgcmV0dXJuIChzb3VyY2UubGVuZ3RoID09IHRhcmcubGVuZ3RoCisgICAgICAgICAgICAgICAgJiYgYXJyYXlSZWdpb25NYXRjaGVzKHNvdXJjZSwgMCwgdGFyZywgMCwgc291cmNlLmxlbmd0aCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlbmllbmNlIHV0aWxpdHkgdG8gY29tcGFyZSB0d28gZG91YmxlW11zCisgICAgICogT3VnaHQgdG8gYmUgaW4gU3lzdGVtCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBib29sZWFuIGFycmF5RXF1YWxzKGRvdWJsZVtdIHNvdXJjZSwgT2JqZWN0IHRhcmdldCkgeworICAgICAgICBpZiAoc291cmNlID09IG51bGwpIHJldHVybiAodGFyZ2V0ID09IG51bGwpOworICAgICAgICBpZiAoISh0YXJnZXQgaW5zdGFuY2VvZiBkb3VibGVbXSkpIHJldHVybiBmYWxzZTsKKyAgICAgICAgZG91YmxlW10gdGFyZyA9IChkb3VibGVbXSkgdGFyZ2V0OworICAgICAgICByZXR1cm4gKHNvdXJjZS5sZW5ndGggPT0gdGFyZy5sZW5ndGgKKyAgICAgICAgICAgICAgICAmJiBhcnJheVJlZ2lvbk1hdGNoZXMoc291cmNlLCAwLCB0YXJnLCAwLCBzb3VyY2UubGVuZ3RoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29udmVuaWVuY2UgdXRpbGl0eSB0byBjb21wYXJlIHR3byBPYmplY3RbXXMKKyAgICAgKiBPdWdodCB0byBiZSBpbiBTeXN0ZW0KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGJvb2xlYW4gYXJyYXlFcXVhbHMoT2JqZWN0IHNvdXJjZSwgT2JqZWN0IHRhcmdldCkgeworICAgICAgICBpZiAoc291cmNlID09IG51bGwpIHJldHVybiAodGFyZ2V0ID09IG51bGwpOworICAgICAgICAvLyBmb3Igc29tZSByZWFzb24sIHRoZSBjb3JyZWN0IGFycmF5RXF1YWxzIGlzIG5vdCBiZWluZyBjYWxsZWQKKyAgICAgICAgLy8gc28gZG8gaXQgYnkgaGFuZCBmb3Igbm93LgorICAgICAgICBpZiAoc291cmNlIGluc3RhbmNlb2YgT2JqZWN0W10pCisgICAgICAgICAgICByZXR1cm4oYXJyYXlFcXVhbHMoKE9iamVjdFtdKSBzb3VyY2UsdGFyZ2V0KSk7CisgICAgICAgIGlmIChzb3VyY2UgaW5zdGFuY2VvZiBpbnRbXSkKKyAgICAgICAgICAgIHJldHVybihhcnJheUVxdWFscygoaW50W10pIHNvdXJjZSx0YXJnZXQpKTsKKyAgICAgICAgaWYgKHNvdXJjZSBpbnN0YW5jZW9mIGRvdWJsZVtdKQorICAgICAgICAgICAgcmV0dXJuKGFycmF5RXF1YWxzKChpbnRbXSkgc291cmNlLHRhcmdldCkpOworICAgICAgICByZXR1cm4gc291cmNlLmVxdWFscyh0YXJnZXQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlbmllbmNlIHV0aWxpdHkgdG8gY29tcGFyZSB0d28gT2JqZWN0W11zCisgICAgICogT3VnaHQgdG8gYmUgaW4gU3lzdGVtLgorICAgICAqIEBwYXJhbSBsZW4gdGhlIGxlbmd0aCB0byBjb21wYXJlLgorICAgICAqIFRoZSBzdGFydCBpbmRpY2VzIGFuZCBzdGFydCtsZW4gbXVzdCBiZSB2YWxpZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGJvb2xlYW4gYXJyYXlSZWdpb25NYXRjaGVzKE9iamVjdFtdIHNvdXJjZSwgaW50IHNvdXJjZVN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RbXSB0YXJnZXQsIGludCB0YXJnZXRTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxlbikKKyAgICB7CisgICAgICAgIGludCBzb3VyY2VFbmQgPSBzb3VyY2VTdGFydCArIGxlbjsKKyAgICAgICAgaW50IGRlbHRhID0gdGFyZ2V0U3RhcnQgLSBzb3VyY2VTdGFydDsKKyAgICAgICAgZm9yIChpbnQgaSA9IHNvdXJjZVN0YXJ0OyBpIDwgc291cmNlRW5kOyBpKyspIHsKKyAgICAgICAgICAgIGlmICghYXJyYXlFcXVhbHMoc291cmNlW2ldLHRhcmdldFtpICsgZGVsdGFdKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb252ZW5pZW5jZSB1dGlsaXR5IHRvIGNvbXBhcmUgdHdvIE9iamVjdFtdcworICAgICAqIE91Z2h0IHRvIGJlIGluIFN5c3RlbS4KKyAgICAgKiBAcGFyYW0gbGVuIHRoZSBsZW5ndGggdG8gY29tcGFyZS4KKyAgICAgKiBUaGUgc3RhcnQgaW5kaWNlcyBhbmQgc3RhcnQrbGVuIG11c3QgYmUgdmFsaWQuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBib29sZWFuIGFycmF5UmVnaW9uTWF0Y2hlcyhjaGFyW10gc291cmNlLCBpbnQgc291cmNlU3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJbXSB0YXJnZXQsIGludCB0YXJnZXRTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxlbikKKyAgICB7CisgICAgICAgIGludCBzb3VyY2VFbmQgPSBzb3VyY2VTdGFydCArIGxlbjsKKyAgICAgICAgaW50IGRlbHRhID0gdGFyZ2V0U3RhcnQgLSBzb3VyY2VTdGFydDsKKyAgICAgICAgZm9yIChpbnQgaSA9IHNvdXJjZVN0YXJ0OyBpIDwgc291cmNlRW5kOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChzb3VyY2VbaV0hPXRhcmdldFtpICsgZGVsdGFdKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBDb252ZW5pZW5jZSB1dGlsaXR5IHRvIGNvbXBhcmUgdHdvIGludFtdcy4KKyAgICAgKiBAcGFyYW0gbGVuIHRoZSBsZW5ndGggdG8gY29tcGFyZS4KKyAgICAgKiBUaGUgc3RhcnQgaW5kaWNlcyBhbmQgc3RhcnQrbGVuIG11c3QgYmUgdmFsaWQuCisgICAgICogT3VnaHQgdG8gYmUgaW4gU3lzdGVtCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBib29sZWFuIGFycmF5UmVnaW9uTWF0Y2hlcyhpbnRbXSBzb3VyY2UsIGludCBzb3VyY2VTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50W10gdGFyZ2V0LCBpbnQgdGFyZ2V0U3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZW4pCisgICAgeworICAgICAgICBpbnQgc291cmNlRW5kID0gc291cmNlU3RhcnQgKyBsZW47CisgICAgICAgIGludCBkZWx0YSA9IHRhcmdldFN0YXJ0IC0gc291cmNlU3RhcnQ7CisgICAgICAgIGZvciAoaW50IGkgPSBzb3VyY2VTdGFydDsgaSA8IHNvdXJjZUVuZDsgaSsrKSB7CisgICAgICAgICAgICBpZiAoc291cmNlW2ldICE9IHRhcmdldFtpICsgZGVsdGFdKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlbmllbmNlIHV0aWxpdHkgdG8gY29tcGFyZSB0d28gYXJyYXlzIG9mIGRvdWJsZXMuCisgICAgICogQHBhcmFtIGxlbiB0aGUgbGVuZ3RoIHRvIGNvbXBhcmUuCisgICAgICogVGhlIHN0YXJ0IGluZGljZXMgYW5kIHN0YXJ0K2xlbiBtdXN0IGJlIHZhbGlkLgorICAgICAqIE91Z2h0IHRvIGJlIGluIFN5c3RlbQorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgYm9vbGVhbiBhcnJheVJlZ2lvbk1hdGNoZXMoZG91YmxlW10gc291cmNlLCBpbnQgc291cmNlU3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZVtdIHRhcmdldCwgaW50IHRhcmdldFN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuKQorICAgIHsKKyAgICAgICAgaW50IHNvdXJjZUVuZCA9IHNvdXJjZVN0YXJ0ICsgbGVuOworICAgICAgICBpbnQgZGVsdGEgPSB0YXJnZXRTdGFydCAtIHNvdXJjZVN0YXJ0OworICAgICAgICBmb3IgKGludCBpID0gc291cmNlU3RhcnQ7IGkgPCBzb3VyY2VFbmQ7IGkrKykgeworICAgICAgICAgICAgaWYgKHNvdXJjZVtpXSAhPSB0YXJnZXRbaSArIGRlbHRhXSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb252ZW5pZW5jZSB1dGlsaXR5LiBEb2VzIG51bGwgY2hlY2tzIG9uIG9iamVjdHMsIHRoZW4gY2FsbHMgZXF1YWxzLgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgYm9vbGVhbiBvYmplY3RFcXVhbHMoT2JqZWN0IHNvdXJjZSwgT2JqZWN0IHRhcmdldCkgeworICAgIGlmIChzb3VyY2UgPT0gbnVsbCkKKyAgICAgICAgICAgIHJldHVybiAodGFyZ2V0ID09IG51bGwpOworICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBzb3VyY2UuZXF1YWxzKHRhcmdldCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhlIEVTQ0FQRSBjaGFyYWN0ZXIgaXMgdXNlZCBkdXJpbmcgcnVuLWxlbmd0aCBlbmNvZGluZy4gIEl0IHNpZ25hbHMKKyAgICAgKiBhIHJ1biBvZiBpZGVudGljYWwgY2hhcnMuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciBFU0NBUEUgPSAnXHVBNUE1JzsKKworICAgIC8qKgorICAgICAqIFRoZSBFU0NBUEVfQllURSBjaGFyYWN0ZXIgaXMgdXNlZCBkdXJpbmcgcnVuLWxlbmd0aCBlbmNvZGluZy4gIEl0IHNpZ25hbHMKKyAgICAgKiBhIHJ1biBvZiBpZGVudGljYWwgYnl0ZXMuCisgICAgICovCisgICAgc3RhdGljIGZpbmFsIGJ5dGUgRVNDQVBFX0JZVEUgPSAoYnl0ZSkweEE1OworCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGEgc3RyaW5nIHJlcHJlc2VudGluZyBhbiBpbnQgYXJyYXkuICBVc2UgcnVuLWxlbmd0aCBlbmNvZGluZy4KKyAgICAgKiBBIGNoYXJhY3RlciByZXByZXNlbnRzIGl0c2VsZiwgdW5sZXNzIGl0IGlzIHRoZSBFU0NBUEUgY2hhcmFjdGVyLiAgVGhlbgorICAgICAqIHRoZSBmb2xsb3dpbmcgbm90YXRpb25zIGFyZSBwb3NzaWJsZToKKyAgICAgKiAgIEVTQ0FQRSBFU0NBUEUgICBFU0NBUEUgbGl0ZXJhbAorICAgICAqICAgRVNDQVBFIG4gYyAgICAgIG4gaW5zdGFuY2VzIG9mIGNoYXJhY3RlciBjCisgICAgICogU2luY2UgYW4gZW5jb2RlZCBydW4gb2NjdXBpZXMgMyBjaGFyYWN0ZXJzLCB3ZSBvbmx5IGVuY29kZSBydW5zIG9mIDQgb3IKKyAgICAgKiBtb3JlIGNoYXJhY3RlcnMuICBUaHVzIHdlIGhhdmUgbiA+IDAgYW5kIG4gIT0gRVNDQVBFIGFuZCBuIDw9IDB4RkZGRi4KKyAgICAgKiBJZiB3ZSBlbmNvdW50ZXIgYSBydW4gd2hlcmUgbiA9PSBFU0NBUEUsIHdlIHJlcHJlc2VudCB0aGlzIGFzOgorICAgICAqICAgYyBFU0NBUEUgbi0xIGMKKyAgICAgKiBUaGUgRVNDQVBFIHZhbHVlIGlzIGNob3NlbiBzbyBhcyBub3QgdG8gY29sbGlkZSB3aXRoIGNvbW1vbmx5CisgICAgICogc2VlbiB2YWx1ZXMuCisgICAgICovCisgICAgc3RhdGljIHB1YmxpYyBmaW5hbCBTdHJpbmcgYXJyYXlUb1JMRVN0cmluZyhpbnRbXSBhKSB7CisgICAgICAgIFN0cmluZ0J1ZmZlciBidWZmZXIgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisKKyAgICAgICAgYXBwZW5kSW50KGJ1ZmZlciwgYS5sZW5ndGgpOworICAgICAgICBpbnQgcnVuVmFsdWUgPSBhWzBdOworICAgICAgICBpbnQgcnVuTGVuZ3RoID0gMTsKKyAgICAgICAgZm9yIChpbnQgaT0xOyBpPGEubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGludCBzID0gYVtpXTsKKyAgICAgICAgICAgIGlmIChzID09IHJ1blZhbHVlICYmIHJ1bkxlbmd0aCA8IDB4RkZGRikgeworICAgICAgICAgICAgICAgICsrcnVuTGVuZ3RoOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBlbmNvZGVSdW4oYnVmZmVyLCBydW5WYWx1ZSwgcnVuTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBydW5WYWx1ZSA9IHM7CisgICAgICAgICAgICAgICAgcnVuTGVuZ3RoID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbmNvZGVSdW4oYnVmZmVyLCBydW5WYWx1ZSwgcnVuTGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci50b1N0cmluZygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdCBhIHN0cmluZyByZXByZXNlbnRpbmcgYSBzaG9ydCBhcnJheS4gIFVzZSBydW4tbGVuZ3RoIGVuY29kaW5nLgorICAgICAqIEEgY2hhcmFjdGVyIHJlcHJlc2VudHMgaXRzZWxmLCB1bmxlc3MgaXQgaXMgdGhlIEVTQ0FQRSBjaGFyYWN0ZXIuICBUaGVuCisgICAgICogdGhlIGZvbGxvd2luZyBub3RhdGlvbnMgYXJlIHBvc3NpYmxlOgorICAgICAqICAgRVNDQVBFIEVTQ0FQRSAgIEVTQ0FQRSBsaXRlcmFsCisgICAgICogICBFU0NBUEUgbiBjICAgICAgbiBpbnN0YW5jZXMgb2YgY2hhcmFjdGVyIGMKKyAgICAgKiBTaW5jZSBhbiBlbmNvZGVkIHJ1biBvY2N1cGllcyAzIGNoYXJhY3RlcnMsIHdlIG9ubHkgZW5jb2RlIHJ1bnMgb2YgNCBvcgorICAgICAqIG1vcmUgY2hhcmFjdGVycy4gIFRodXMgd2UgaGF2ZSBuID4gMCBhbmQgbiAhPSBFU0NBUEUgYW5kIG4gPD0gMHhGRkZGLgorICAgICAqIElmIHdlIGVuY291bnRlciBhIHJ1biB3aGVyZSBuID09IEVTQ0FQRSwgd2UgcmVwcmVzZW50IHRoaXMgYXM6CisgICAgICogICBjIEVTQ0FQRSBuLTEgYworICAgICAqIFRoZSBFU0NBUEUgdmFsdWUgaXMgY2hvc2VuIHNvIGFzIG5vdCB0byBjb2xsaWRlIHdpdGggY29tbW9ubHkKKyAgICAgKiBzZWVuIHZhbHVlcy4KKyAgICAgKi8KKyAgICBzdGF0aWMgcHVibGljIGZpbmFsIFN0cmluZyBhcnJheVRvUkxFU3RyaW5nKHNob3J0W10gYSkgeworICAgICAgICBTdHJpbmdCdWZmZXIgYnVmZmVyID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICAvLyBmb3IgKGludCBpPTA7IGk8YS5sZW5ndGg7ICsraSkgYnVmZmVyLmFwcGVuZCgoY2hhcikgYVtpXSk7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQoKGNoYXIpIChhLmxlbmd0aCA+PiAxNikpOworICAgICAgICBidWZmZXIuYXBwZW5kKChjaGFyKSBhLmxlbmd0aCk7CisgICAgICAgIHNob3J0IHJ1blZhbHVlID0gYVswXTsKKyAgICAgICAgaW50IHJ1bkxlbmd0aCA9IDE7CisgICAgICAgIGZvciAoaW50IGk9MTsgaTxhLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBzaG9ydCBzID0gYVtpXTsKKyAgICAgICAgICAgIGlmIChzID09IHJ1blZhbHVlICYmIHJ1bkxlbmd0aCA8IDB4RkZGRikgKytydW5MZW5ndGg7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGVuY29kZVJ1bihidWZmZXIsIHJ1blZhbHVlLCBydW5MZW5ndGgpOworICAgICAgICAgICAgcnVuVmFsdWUgPSBzOworICAgICAgICAgICAgcnVuTGVuZ3RoID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbmNvZGVSdW4oYnVmZmVyLCBydW5WYWx1ZSwgcnVuTGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci50b1N0cmluZygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdCBhIHN0cmluZyByZXByZXNlbnRpbmcgYSBjaGFyIGFycmF5LiAgVXNlIHJ1bi1sZW5ndGggZW5jb2RpbmcuCisgICAgICogQSBjaGFyYWN0ZXIgcmVwcmVzZW50cyBpdHNlbGYsIHVubGVzcyBpdCBpcyB0aGUgRVNDQVBFIGNoYXJhY3Rlci4gIFRoZW4KKyAgICAgKiB0aGUgZm9sbG93aW5nIG5vdGF0aW9ucyBhcmUgcG9zc2libGU6CisgICAgICogICBFU0NBUEUgRVNDQVBFICAgRVNDQVBFIGxpdGVyYWwKKyAgICAgKiAgIEVTQ0FQRSBuIGMgICAgICBuIGluc3RhbmNlcyBvZiBjaGFyYWN0ZXIgYworICAgICAqIFNpbmNlIGFuIGVuY29kZWQgcnVuIG9jY3VwaWVzIDMgY2hhcmFjdGVycywgd2Ugb25seSBlbmNvZGUgcnVucyBvZiA0IG9yCisgICAgICogbW9yZSBjaGFyYWN0ZXJzLiAgVGh1cyB3ZSBoYXZlIG4gPiAwIGFuZCBuICE9IEVTQ0FQRSBhbmQgbiA8PSAweEZGRkYuCisgICAgICogSWYgd2UgZW5jb3VudGVyIGEgcnVuIHdoZXJlIG4gPT0gRVNDQVBFLCB3ZSByZXByZXNlbnQgdGhpcyBhczoKKyAgICAgKiAgIGMgRVNDQVBFIG4tMSBjCisgICAgICogVGhlIEVTQ0FQRSB2YWx1ZSBpcyBjaG9zZW4gc28gYXMgbm90IHRvIGNvbGxpZGUgd2l0aCBjb21tb25seQorICAgICAqIHNlZW4gdmFsdWVzLgorICAgICAqLworICAgIHN0YXRpYyBwdWJsaWMgZmluYWwgU3RyaW5nIGFycmF5VG9STEVTdHJpbmcoY2hhcltdIGEpIHsKKyAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZmZlciA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgYnVmZmVyLmFwcGVuZCgoY2hhcikgKGEubGVuZ3RoID4+IDE2KSk7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQoKGNoYXIpIGEubGVuZ3RoKTsKKyAgICAgICAgY2hhciBydW5WYWx1ZSA9IGFbMF07CisgICAgICAgIGludCBydW5MZW5ndGggPSAxOworICAgICAgICBmb3IgKGludCBpPTE7IGk8YS5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgY2hhciBzID0gYVtpXTsKKyAgICAgICAgICAgIGlmIChzID09IHJ1blZhbHVlICYmIHJ1bkxlbmd0aCA8IDB4RkZGRikgKytydW5MZW5ndGg7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGVuY29kZVJ1bihidWZmZXIsIChzaG9ydClydW5WYWx1ZSwgcnVuTGVuZ3RoKTsKKyAgICAgICAgICAgIHJ1blZhbHVlID0gczsKKyAgICAgICAgICAgIHJ1bkxlbmd0aCA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZW5jb2RlUnVuKGJ1ZmZlciwgKHNob3J0KXJ1blZhbHVlLCBydW5MZW5ndGgpOworICAgICAgICByZXR1cm4gYnVmZmVyLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGEgc3RyaW5nIHJlcHJlc2VudGluZyBhIGJ5dGUgYXJyYXkuICBVc2UgcnVuLWxlbmd0aCBlbmNvZGluZy4KKyAgICAgKiBUd28gYnl0ZXMgYXJlIHBhY2tlZCBpbnRvIGEgc2luZ2xlIGNoYXIsIHdpdGggYSBzaW5nbGUgZXh0cmEgemVybyBieXRlIGF0CisgICAgICogdGhlIGVuZCBpZiBuZWVkZWQuICBBIGJ5dGUgcmVwcmVzZW50cyBpdHNlbGYsIHVubGVzcyBpdCBpcyB0aGUKKyAgICAgKiBFU0NBUEVfQllURS4gIFRoZW4gdGhlIGZvbGxvd2luZyBub3RhdGlvbnMgYXJlIHBvc3NpYmxlOgorICAgICAqICAgRVNDQVBFX0JZVEUgRVNDQVBFX0JZVEUgICBFU0NBUEVfQllURSBsaXRlcmFsCisgICAgICogICBFU0NBUEVfQllURSBuIGIgICAgICAgICAgIG4gaW5zdGFuY2VzIG9mIGJ5dGUgYgorICAgICAqIFNpbmNlIGFuIGVuY29kZWQgcnVuIG9jY3VwaWVzIDMgYnl0ZXMsIHdlIG9ubHkgZW5jb2RlIHJ1bnMgb2YgNCBvcgorICAgICAqIG1vcmUgYnl0ZXMuICBUaHVzIHdlIGhhdmUgbiA+IDAgYW5kIG4gIT0gRVNDQVBFX0JZVEUgYW5kIG4gPD0gMHhGRi4KKyAgICAgKiBJZiB3ZSBlbmNvdW50ZXIgYSBydW4gd2hlcmUgbiA9PSBFU0NBUEVfQllURSwgd2UgcmVwcmVzZW50IHRoaXMgYXM6CisgICAgICogICBiIEVTQ0FQRV9CWVRFIG4tMSBiCisgICAgICogVGhlIEVTQ0FQRV9CWVRFIHZhbHVlIGlzIGNob3NlbiBzbyBhcyBub3QgdG8gY29sbGlkZSB3aXRoIGNvbW1vbmx5CisgICAgICogc2VlbiB2YWx1ZXMuCisgICAgICovCisgICAgc3RhdGljIHB1YmxpYyBmaW5hbCBTdHJpbmcgYXJyYXlUb1JMRVN0cmluZyhieXRlW10gYSkgeworICAgICAgICBTdHJpbmdCdWZmZXIgYnVmZmVyID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBidWZmZXIuYXBwZW5kKChjaGFyKSAoYS5sZW5ndGggPj4gMTYpKTsKKyAgICAgICAgYnVmZmVyLmFwcGVuZCgoY2hhcikgYS5sZW5ndGgpOworICAgICAgICBieXRlIHJ1blZhbHVlID0gYVswXTsKKyAgICAgICAgaW50IHJ1bkxlbmd0aCA9IDE7CisgICAgICAgIGJ5dGVbXSBzdGF0ZSA9IG5ldyBieXRlWzJdOworICAgICAgICBmb3IgKGludCBpPTE7IGk8YS5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgYnl0ZSBiID0gYVtpXTsKKyAgICAgICAgICAgIGlmIChiID09IHJ1blZhbHVlICYmIHJ1bkxlbmd0aCA8IDB4RkYpICsrcnVuTGVuZ3RoOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgZW5jb2RlUnVuKGJ1ZmZlciwgcnVuVmFsdWUsIHJ1bkxlbmd0aCwgc3RhdGUpOworICAgICAgICAgICAgICAgIHJ1blZhbHVlID0gYjsKKyAgICAgICAgICAgICAgICBydW5MZW5ndGggPSAxOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVuY29kZVJ1bihidWZmZXIsIHJ1blZhbHVlLCBydW5MZW5ndGgsIHN0YXRlKTsKKworICAgICAgICAvLyBXZSBtdXN0IHNhdmUgdGhlIGZpbmFsIGJ5dGUsIGlmIHRoZXJlIGlzIG9uZSwgYnkgcGFkZGluZworICAgICAgICAvLyBhbiBleHRyYSB6ZXJvLgorICAgICAgICBpZiAoc3RhdGVbMF0gIT0gMCkgYXBwZW5kRW5jb2RlZEJ5dGUoYnVmZmVyLCAoYnl0ZSkwLCBzdGF0ZSk7CisKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci50b1N0cmluZygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEVuY29kZSBhIHJ1biwgcG9zc2libHkgYSBkZWdlbmVyYXRlIHJ1biAob2YgPCA0IHZhbHVlcykuCisgICAgICogQHBhcmFtIGxlbmd0aCBUaGUgbGVuZ3RoIG9mIHRoZSBydW47IG11c3QgYmUgPiAwICYmIDw9IDB4RkZGRi4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCB2b2lkIGVuY29kZVJ1bihTdHJpbmdCdWZmZXIgYnVmZmVyLCBpbnQgdmFsdWUsIGludCBsZW5ndGgpIHsKKyAgICAgICAgaWYgKGxlbmd0aCA8IDQpIHsKKyAgICAgICAgICAgIGZvciAoaW50IGo9MDsgajxsZW5ndGg7ICsraikgeworICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBFU0NBUEUpIHsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kSW50KGJ1ZmZlciwgdmFsdWUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhcHBlbmRJbnQoYnVmZmVyLCB2YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAobGVuZ3RoID09IChpbnQpIEVTQ0FQRSkgeworICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSAoaW50KSBFU0NBUEUpIHsKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kSW50KGJ1ZmZlciwgRVNDQVBFKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYXBwZW5kSW50KGJ1ZmZlciwgdmFsdWUpOworICAgICAgICAgICAgICAgIC0tbGVuZ3RoOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYXBwZW5kSW50KGJ1ZmZlciwgRVNDQVBFKTsKKyAgICAgICAgICAgIGFwcGVuZEludChidWZmZXIsIGxlbmd0aCk7CisgICAgICAgICAgICBhcHBlbmRJbnQoYnVmZmVyLCB2YWx1ZSk7IC8vIERvbid0IG5lZWQgdG8gZXNjYXBlIHRoaXMgdmFsdWUKKyAgICAgICAgfQorICAgIH0KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCB2b2lkIGFwcGVuZEludChTdHJpbmdCdWZmZXIgYnVmZmVyLCBpbnQgdmFsdWUpIHsKKyAgICAgICAgYnVmZmVyLmFwcGVuZCgoY2hhcikodmFsdWUgPj4+IDE2KSk7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQoKGNoYXIpKHZhbHVlICYgMHhGRkZGKSk7CisgICAgfQorCisKKyAgICAvKioKKyAgICAgKiBFbmNvZGUgYSBydW4sIHBvc3NpYmx5IGEgZGVnZW5lcmF0ZSBydW4gKG9mIDwgNCB2YWx1ZXMpLgorICAgICAqIEBwYXJhbSBsZW5ndGggVGhlIGxlbmd0aCBvZiB0aGUgcnVuOyBtdXN0IGJlID4gMCAmJiA8PSAweEZGRkYuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgdm9pZCBlbmNvZGVSdW4oU3RyaW5nQnVmZmVyIGJ1ZmZlciwgc2hvcnQgdmFsdWUsIGludCBsZW5ndGgpIHsKKyAgICAgICAgaWYgKGxlbmd0aCA8IDQpIHsKKyAgICAgICAgICAgIGZvciAoaW50IGo9MDsgajxsZW5ndGg7ICsraikgeworICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSAoaW50KSBFU0NBUEUpIGJ1ZmZlci5hcHBlbmQoRVNDQVBFKTsKKyAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKChjaGFyKSB2YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAobGVuZ3RoID09IChpbnQpIEVTQ0FQRSkgeworICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSAoaW50KSBFU0NBUEUpIGJ1ZmZlci5hcHBlbmQoRVNDQVBFKTsKKyAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKChjaGFyKSB2YWx1ZSk7CisgICAgICAgICAgICAgICAgLS1sZW5ndGg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBidWZmZXIuYXBwZW5kKEVTQ0FQRSk7CisgICAgICAgICAgICBidWZmZXIuYXBwZW5kKChjaGFyKSBsZW5ndGgpOworICAgICAgICAgICAgYnVmZmVyLmFwcGVuZCgoY2hhcikgdmFsdWUpOyAvLyBEb24ndCBuZWVkIHRvIGVzY2FwZSB0aGlzIHZhbHVlCisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBFbmNvZGUgYSBydW4sIHBvc3NpYmx5IGEgZGVnZW5lcmF0ZSBydW4gKG9mIDwgNCB2YWx1ZXMpLgorICAgICAqIEBwYXJhbSBsZW5ndGggVGhlIGxlbmd0aCBvZiB0aGUgcnVuOyBtdXN0IGJlID4gMCAmJiA8PSAweEZGLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIHZvaWQgZW5jb2RlUnVuKFN0cmluZ0J1ZmZlciBidWZmZXIsIGJ5dGUgdmFsdWUsIGludCBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgIGJ5dGVbXSBzdGF0ZSkgeworICAgICAgICBpZiAobGVuZ3RoIDwgNCkgeworICAgICAgICAgICAgZm9yIChpbnQgaj0wOyBqPGxlbmd0aDsgKytqKSB7CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlID09IEVTQ0FQRV9CWVRFKSBhcHBlbmRFbmNvZGVkQnl0ZShidWZmZXIsIEVTQ0FQRV9CWVRFLCBzdGF0ZSk7CisgICAgICAgICAgICAgICAgYXBwZW5kRW5jb2RlZEJ5dGUoYnVmZmVyLCB2YWx1ZSwgc3RhdGUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKGxlbmd0aCA9PSBFU0NBUEVfQllURSkgeworICAgICAgICAgICAgaWYgKHZhbHVlID09IEVTQ0FQRV9CWVRFKSBhcHBlbmRFbmNvZGVkQnl0ZShidWZmZXIsIEVTQ0FQRV9CWVRFLCBzdGF0ZSk7CisgICAgICAgICAgICBhcHBlbmRFbmNvZGVkQnl0ZShidWZmZXIsIHZhbHVlLCBzdGF0ZSk7CisgICAgICAgICAgICAtLWxlbmd0aDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFwcGVuZEVuY29kZWRCeXRlKGJ1ZmZlciwgRVNDQVBFX0JZVEUsIHN0YXRlKTsKKyAgICAgICAgICAgIGFwcGVuZEVuY29kZWRCeXRlKGJ1ZmZlciwgKGJ5dGUpbGVuZ3RoLCBzdGF0ZSk7CisgICAgICAgICAgICBhcHBlbmRFbmNvZGVkQnl0ZShidWZmZXIsIHZhbHVlLCBzdGF0ZSk7IC8vIERvbid0IG5lZWQgdG8gZXNjYXBlIHRoaXMgdmFsdWUKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEFwcGVuZCBhIGJ5dGUgdG8gdGhlIGdpdmVuIFN0cmluZ0J1ZmZlciwgcGFja2luZyB0d28gYnl0ZXMgaW50byBlYWNoCisgICAgICogY2hhcmFjdGVyLiAgVGhlIHN0YXRlIHBhcmFtZXRlciBtYWludGFpbnMgaW50ZXJtZWRpYXJ5IGRhdGEgYmV0d2VlbgorICAgICAqIGNhbGxzLgorICAgICAqIEBwYXJhbSBzdGF0ZSBBIHR3by1lbGVtZW50IGFycmF5LCB3aXRoIHN0YXRlWzBdID09IDAgaWYgdGhpcyBpcyB0aGUKKyAgICAgKiBmaXJzdCBieXRlIG9mIGEgcGFpciwgb3Igc3RhdGVbMF0gIT0gMCBpZiB0aGlzIGlzIHRoZSBzZWNvbmQgYnl0ZQorICAgICAqIG9mIGEgcGFpciwgaW4gd2hpY2ggY2FzZSBzdGF0ZVsxXSBpcyB0aGUgZmlyc3QgYnl0ZS4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCB2b2lkIGFwcGVuZEVuY29kZWRCeXRlKFN0cmluZ0J1ZmZlciBidWZmZXIsIGJ5dGUgdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICBieXRlW10gc3RhdGUpIHsKKyAgICAgICAgaWYgKHN0YXRlWzBdICE9IDApIHsKKyAgICAgICAgICAgIGNoYXIgYyA9IChjaGFyKSAoKHN0YXRlWzFdIDw8IDgpIHwgKCgoaW50KSB2YWx1ZSkgJiAweEZGKSk7CisgICAgICAgICAgICBidWZmZXIuYXBwZW5kKGMpOworICAgICAgICAgICAgc3RhdGVbMF0gPSAwOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc3RhdGVbMF0gPSAxOworICAgICAgICAgICAgc3RhdGVbMV0gPSB2YWx1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdCBhbiBhcnJheSBvZiBpbnRzIGZyb20gYSBydW4tbGVuZ3RoIGVuY29kZWQgc3RyaW5nLgorICAgICAqLworICAgIHN0YXRpYyBwdWJsaWMgZmluYWwgaW50W10gUkxFU3RyaW5nVG9JbnRBcnJheShTdHJpbmcgcykgeworICAgICAgICBpbnQgbGVuZ3RoID0gZ2V0SW50KHMsIDApOworICAgICAgICBpbnRbXSBhcnJheSA9IG5ldyBpbnRbbGVuZ3RoXTsKKyAgICAgICAgaW50IGFpID0gMCwgaSA9IDE7CisKKyAgICAgICAgaW50IG1heEkgPSBzLmxlbmd0aCgpIC8gMjsKKyAgICAgICAgd2hpbGUgKGFpIDwgbGVuZ3RoICYmIGkgPCBtYXhJKSB7CisgICAgICAgICAgICBpbnQgYyA9IGdldEludChzLCBpKyspOworCisgICAgICAgICAgICBpZiAoYyA9PSBFU0NBUEUpIHsKKyAgICAgICAgICAgICAgICBjID0gZ2V0SW50KHMsIGkrKyk7CisgICAgICAgICAgICAgICAgaWYgKGMgPT0gRVNDQVBFKSB7CisgICAgICAgICAgICAgICAgICAgIGFycmF5W2FpKytdID0gYzsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpbnQgcnVuTGVuZ3RoID0gYzsKKyAgICAgICAgICAgICAgICAgICAgaW50IHJ1blZhbHVlID0gZ2V0SW50KHMsIGkrKyk7CisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGo9MDsgajxydW5MZW5ndGg7ICsraikgeworICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlbYWkrK10gPSBydW5WYWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGFycmF5W2FpKytdID0gYzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChhaSAhPSBsZW5ndGggfHwgaSAhPSBtYXhJKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcigiQmFkIHJ1bi1sZW5ndGggZW5jb2RlZCBpbnQgYXJyYXkiKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBhcnJheTsKKyAgICB9CisgICAgc3RhdGljIGZpbmFsIGludCBnZXRJbnQoU3RyaW5nIHMsIGludCBpKSB7CisgICAgICAgIHJldHVybiAoKChpbnQpIHMuY2hhckF0KDIqaSkpIDw8IDE2KSB8IChpbnQpIHMuY2hhckF0KDIqaSsxKTsKKyAgICB9CisKKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdCBhbiBhcnJheSBvZiBzaG9ydHMgZnJvbSBhIHJ1bi1sZW5ndGggZW5jb2RlZCBzdHJpbmcuCisgICAgICovCisgICAgc3RhdGljIHB1YmxpYyBmaW5hbCBzaG9ydFtdIFJMRVN0cmluZ1RvU2hvcnRBcnJheShTdHJpbmcgcykgeworICAgICAgICBpbnQgbGVuZ3RoID0gKCgoaW50KSBzLmNoYXJBdCgwKSkgPDwgMTYpIHwgKChpbnQpIHMuY2hhckF0KDEpKTsKKyAgICAgICAgc2hvcnRbXSBhcnJheSA9IG5ldyBzaG9ydFtsZW5ndGhdOworICAgICAgICBpbnQgYWkgPSAwOworICAgICAgICBmb3IgKGludCBpPTI7IGk8cy5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBjaGFyIGMgPSBzLmNoYXJBdChpKTsKKyAgICAgICAgICAgIGlmIChjID09IEVTQ0FQRSkgeworICAgICAgICAgICAgICAgIGMgPSBzLmNoYXJBdCgrK2kpOworICAgICAgICAgICAgICAgIGlmIChjID09IEVTQ0FQRSkgeworICAgICAgICAgICAgICAgICAgICBhcnJheVthaSsrXSA9IChzaG9ydCkgYzsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpbnQgcnVuTGVuZ3RoID0gKGludCkgYzsKKyAgICAgICAgICAgICAgICAgICAgc2hvcnQgcnVuVmFsdWUgPSAoc2hvcnQpIHMuY2hhckF0KCsraSk7CisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGo9MDsgajxydW5MZW5ndGg7ICsraikgYXJyYXlbYWkrK10gPSBydW5WYWx1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBhcnJheVthaSsrXSA9IChzaG9ydCkgYzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChhaSAhPSBsZW5ndGgpCisgICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcigiQmFkIHJ1bi1sZW5ndGggZW5jb2RlZCBzaG9ydCBhcnJheSIpOworCisgICAgICAgIHJldHVybiBhcnJheTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgYW4gYXJyYXkgb2Ygc2hvcnRzIGZyb20gYSBydW4tbGVuZ3RoIGVuY29kZWQgc3RyaW5nLgorICAgICAqLworICAgIHN0YXRpYyBwdWJsaWMgZmluYWwgY2hhcltdIFJMRVN0cmluZ1RvQ2hhckFycmF5KFN0cmluZyBzKSB7CisgICAgICAgIGludCBsZW5ndGggPSAoKChpbnQpIHMuY2hhckF0KDApKSA8PCAxNikgfCAoKGludCkgcy5jaGFyQXQoMSkpOworICAgICAgICBjaGFyW10gYXJyYXkgPSBuZXcgY2hhcltsZW5ndGhdOworICAgICAgICBpbnQgYWkgPSAwOworICAgICAgICBmb3IgKGludCBpPTI7IGk8cy5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBjaGFyIGMgPSBzLmNoYXJBdChpKTsKKyAgICAgICAgICAgIGlmIChjID09IEVTQ0FQRSkgeworICAgICAgICAgICAgICAgIGMgPSBzLmNoYXJBdCgrK2kpOworICAgICAgICAgICAgICAgIGlmIChjID09IEVTQ0FQRSkgeworICAgICAgICAgICAgICAgICAgICBhcnJheVthaSsrXSA9IGM7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IHJ1bkxlbmd0aCA9IChpbnQpIGM7CisgICAgICAgICAgICAgICAgICAgIGNoYXIgcnVuVmFsdWUgPSBzLmNoYXJBdCgrK2kpOworICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBqPTA7IGo8cnVuTGVuZ3RoOyArK2opIGFycmF5W2FpKytdID0gcnVuVmFsdWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYXJyYXlbYWkrK10gPSBjOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKGFpICE9IGxlbmd0aCkKKyAgICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKCJCYWQgcnVuLWxlbmd0aCBlbmNvZGVkIHNob3J0IGFycmF5Iik7CisKKyAgICAgICAgcmV0dXJuIGFycmF5OworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdCBhbiBhcnJheSBvZiBieXRlcyBmcm9tIGEgcnVuLWxlbmd0aCBlbmNvZGVkIHN0cmluZy4KKyAgICAgKi8KKyAgICBzdGF0aWMgcHVibGljIGZpbmFsIGJ5dGVbXSBSTEVTdHJpbmdUb0J5dGVBcnJheShTdHJpbmcgcykgeworICAgICAgICBpbnQgbGVuZ3RoID0gKCgoaW50KSBzLmNoYXJBdCgwKSkgPDwgMTYpIHwgKChpbnQpIHMuY2hhckF0KDEpKTsKKyAgICAgICAgYnl0ZVtdIGFycmF5ID0gbmV3IGJ5dGVbbGVuZ3RoXTsKKyAgICAgICAgYm9vbGVhbiBuZXh0Q2hhciA9IHRydWU7CisgICAgICAgIGNoYXIgYyA9IDA7CisgICAgICAgIGludCBub2RlID0gMDsKKyAgICAgICAgaW50IHJ1bkxlbmd0aCA9IDA7CisgICAgICAgIGludCBpID0gMjsKKyAgICAgICAgZm9yIChpbnQgYWk9MDsgYWk8bGVuZ3RoOyApIHsKKyAgICAgICAgICAgIC8vIFRoaXMgcGFydCBvZiB0aGUgbG9vcCBwbGFjZXMgdGhlIG5leHQgYnl0ZSBpbnRvIHRoZSBsb2NhbAorICAgICAgICAgICAgLy8gdmFyaWFibGUgJ2InIGVhY2ggdGltZSB0aHJvdWdoIHRoZSBsb29wLiAgSXQga2VlcHMgdGhlCisgICAgICAgICAgICAvLyBjdXJyZW50IGNoYXJhY3RlciBpbiAnYycgYW5kIHVzZXMgdGhlIGJvb2xlYW4gJ25leHRDaGFyJworICAgICAgICAgICAgLy8gdG8gc2VlIGlmIHdlJ3ZlIHRha2VuIGJvdGggYnl0ZXMgb3V0IG9mICdjJyB5ZXQuCisgICAgICAgICAgICBieXRlIGI7CisgICAgICAgICAgICBpZiAobmV4dENoYXIpIHsKKyAgICAgICAgICAgICAgICBjID0gcy5jaGFyQXQoaSsrKTsKKyAgICAgICAgICAgICAgICBiID0gKGJ5dGUpIChjID4+IDgpOworICAgICAgICAgICAgICAgIG5leHRDaGFyID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBiID0gKGJ5dGUpIChjICYgMHhGRik7CisgICAgICAgICAgICAgICAgbmV4dENoYXIgPSB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGlzIHBhcnQgb2YgdGhlIGxvb3AgaXMgYSB0aW55IHN0YXRlIG1hY2hpbmUgd2hpY2ggaGFuZGxlcworICAgICAgICAgICAgLy8gdGhlIHBhcnNpbmcgb2YgdGhlIHJ1bi1sZW5ndGggZW5jb2RpbmcuICBUaGlzIHdvdWxkIGJlIHNpbXBsZXIKKyAgICAgICAgICAgIC8vIGlmIHdlIGNvdWxkIGxvb2sgYWhlYWQsIGJ1dCB3ZSBjYW4ndCwgc28gd2UgdXNlICdub2RlJyB0bworICAgICAgICAgICAgLy8gbW92ZSBiZXR3ZWVuIHRocmVlIG5vZGVzIGluIHRoZSBzdGF0ZSBtYWNoaW5lLgorICAgICAgICAgICAgc3dpdGNoIChub2RlKSB7CisgICAgICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICAgICAgLy8gTm9ybWFsIGlkbGUgbm9kZQorICAgICAgICAgICAgICAgIGlmIChiID09IEVTQ0FQRV9CWVRFKSB7CisgICAgICAgICAgICAgICAgICAgIG5vZGUgPSAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYXJyYXlbYWkrK10gPSBiOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIHNlZW4gb25lIEVTQ0FQRV9CWVRFOyB3ZSBleHBlY3QgZWl0aGVyIGEgc2Vjb25kCisgICAgICAgICAgICAgICAgLy8gb25lLCBvciBhIHJ1biBsZW5ndGggYW5kIHZhbHVlLgorICAgICAgICAgICAgICAgIGlmIChiID09IEVTQ0FQRV9CWVRFKSB7CisgICAgICAgICAgICAgICAgICAgIGFycmF5W2FpKytdID0gRVNDQVBFX0JZVEU7CisgICAgICAgICAgICAgICAgICAgIG5vZGUgPSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcnVuTGVuZ3RoID0gYjsKKyAgICAgICAgICAgICAgICAgICAgLy8gSW50ZXJwcmV0IHNpZ25lZCBieXRlIGFzIHVuc2lnbmVkCisgICAgICAgICAgICAgICAgICAgIGlmIChydW5MZW5ndGggPCAwKSBydW5MZW5ndGggKz0gMHgxMDA7CisgICAgICAgICAgICAgICAgICAgIG5vZGUgPSAyOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIHNlZW4gYW4gRVNDQVBFX0JZVEUgYW5kIGxlbmd0aCBieXRlLiAgV2UgaW50ZXJwcmV0CisgICAgICAgICAgICAgICAgLy8gdGhlIG5leHQgYnl0ZSBhcyB0aGUgdmFsdWUgdG8gYmUgcmVwZWF0ZWQuCisgICAgICAgICAgICAgICAgZm9yIChpbnQgaj0wOyBqPHJ1bkxlbmd0aDsgKytqKSBhcnJheVthaSsrXSA9IGI7CisgICAgICAgICAgICAgICAgbm9kZSA9IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAobm9kZSAhPSAwKQorICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoIkJhZCBydW4tbGVuZ3RoIGVuY29kZWQgYnl0ZSBhcnJheSIpOworCisgICAgICAgIGlmIChpICE9IHMubGVuZ3RoKCkpCisgICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcigiRXhjZXNzIGRhdGEgaW4gUkxFIGJ5dGUgYXJyYXkgc3RyaW5nIik7CisKKyAgICAgICAgcmV0dXJuIGFycmF5OworICAgIH0KKworICAgIHN0YXRpYyBwdWJsaWMgU3RyaW5nIExJTkVfU0VQQVJBVE9SID0gU3lzdGVtLmdldFByb3BlcnR5KCJsaW5lLnNlcGFyYXRvciIpOworCisgICAgLyoqCisgICAgICogRm9ybWF0IGEgU3RyaW5nIGZvciByZXByZXNlbnRhdGlvbiBpbiBhIHNvdXJjZSBmaWxlLiAgVGhpcyBpbmNsdWRlcworICAgICAqIGJyZWFraW5nIGl0IGludG8gbGluZXMgYW5kIGVzY2FwaW5nIGNoYXJhY3RlcnMgdXNpbmcgb2N0YWwgbm90YXRpb24KKyAgICAgKiB3aGVuIG5lY2Vzc2FyeSAoY29udHJvbCBjaGFyYWN0ZXJzIGFuZCBkb3VibGUgcXVvdGVzKS4KKyAgICAgKi8KKyAgICBzdGF0aWMgcHVibGljIGZpbmFsIFN0cmluZyBmb3JtYXRGb3JTb3VyY2UoU3RyaW5nIHMpIHsKKyAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZmZlciA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPHMubGVuZ3RoKCk7KSB7CisgICAgICAgICAgICBpZiAoaSA+IDApIGJ1ZmZlci5hcHBlbmQoJysnKS5hcHBlbmQoTElORV9TRVBBUkFUT1IpOworICAgICAgICAgICAgYnVmZmVyLmFwcGVuZCgiICAgICAgICBcIiIpOworICAgICAgICAgICAgaW50IGNvdW50ID0gMTE7CisgICAgICAgICAgICB3aGlsZSAoaTxzLmxlbmd0aCgpICYmIGNvdW50PDgwKSB7CisgICAgICAgICAgICBjaGFyIGMgPSBzLmNoYXJBdChpKyspOworICAgICAgICAgICAgaWYgKGMgPCAnXHUwMDIwJyB8fCBjID09ICciJyB8fCBjID09ICdcXCcpIHsKKyAgICAgICAgICAgICAgICAvLyBSZXByZXNlbnQgY29udHJvbCBjaGFyYWN0ZXJzLCBiYWNrc2xhc2ggYW5kIGRvdWJsZSBxdW90ZQorICAgICAgICAgICAgICAgIC8vIHVzaW5nIG9jdGFsIG5vdGF0aW9uOyBvdGhlcndpc2UgdGhlIHN0cmluZyB3ZSBmb3JtCisgICAgICAgICAgICAgICAgLy8gd29uJ3QgY29tcGlsZSwgc2luY2UgVW5pY29kZSBlc2NhcGUgc2VxdWVuY2VzIGFyZQorICAgICAgICAgICAgICAgIC8vIHByb2Nlc3NlZCBiZWZvcmUgdG9rZW5pemF0aW9uLgorICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoJ1xcJyk7CisgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChIRVhfRElHSVRbKGMgJiAwNzAwKSA+PiA2XSk7IC8vIEhFWF9ESUdJVCB3b3JrcyBmb3Igb2N0YWwKKyAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKEhFWF9ESUdJVFsoYyAmIDAwNzApID4+IDNdKTsKKyAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKEhFWF9ESUdJVFsoYyAmIDAwMDcpXSk7CisgICAgICAgICAgICAgICAgY291bnQgKz0gNDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGMgPD0gJ1x1MDA3RScpIHsKKyAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKGMpOworICAgICAgICAgICAgICAgIGNvdW50ICs9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKCJcXHUiKTsKKyAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKEhFWF9ESUdJVFsoYyAmIDB4RjAwMCkgPj4gMTJdKTsKKyAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKEhFWF9ESUdJVFsoYyAmIDB4MEYwMCkgPj4gOF0pOworICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoSEVYX0RJR0lUWyhjICYgMHgwMEYwKSA+PiA0XSk7CisgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChIRVhfRElHSVRbKGMgJiAweDAwMEYpXSk7CisgICAgICAgICAgICAgICAgY291bnQgKz0gNjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoJyInKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYnVmZmVyLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgc3RhdGljIGZpbmFsIGNoYXJbXSBIRVhfRElHSVQgPSB7JzAnLCcxJywnMicsJzMnLCc0JywnNScsJzYnLCc3JywKKyAgICAgICAgICAgICAgICAgICAgICc4JywnOScsJ0EnLCdCJywnQycsJ0QnLCdFJywnRid9OworCisKKyAgICAvKioKKyAgICAgKiBDb252ZXJ0IGNoYXJhY3RlcnMgb3V0c2lkZSB0aGUgcmFuZ2UgVSswMDIwIHRvIFUrMDA3RiB0bworICAgICAqIFVuaWNvZGUgZXNjYXBlcywgYW5kIGNvbnZlcnQgYmFja3NsYXNoIHRvIGEgZG91YmxlIGJhY2tzbGFzaC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBlc2NhcGUoU3RyaW5nIHMpIHsKKyAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPHMubGVuZ3RoKCk7ICkgeworICAgICAgICAgICAgaW50IGMgPSBVVEYxNi5jaGFyQXQocywgaSk7CisgICAgICAgICAgICBpICs9IFVURjE2LmdldENoYXJDb3VudChjKTsKKyAgICAgICAgICAgIGlmIChjID49ICcgJyAmJiBjIDw9IDB4MDA3RikgeworICAgICAgICAgICAgICAgIGlmIChjID09ICdcXCcpIHsKKyAgICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgiXFxcXCIpOyAvLyBUaGF0IGlzLCAiXFwiCisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgoY2hhciljKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGJvb2xlYW4gZm91ciA9IGMgPD0gMHhGRkZGOworICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoZm91ciA/ICJcXHUiIDogIlxcVSIpOworICAgICAgICAgICAgICAgIGhleChjLCBmb3VyID8gNCA6IDgsIGJ1Zik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGJ1Zi50b1N0cmluZygpOworICAgIH0KKworICAgIC8qIFRoaXMgbWFwIG11c3QgYmUgaW4gQVNDRU5ESU5HIE9SREVSIE9GIFRIRSBFU0NBUEUgQ09ERSAqLworICAgIHN0YXRpYyBwcml2YXRlIGZpbmFsIGNoYXJbXSBVTkVTQ0FQRV9NQVAgPSB7CisgICAgICAgIC8qIiAgIDB4MjIsIDB4MjIgKi8KKyAgICAgICAgLyonICAgMHgyNywgMHgyNyAqLworICAgICAgICAvKj8gICAweDNGLCAweDNGICovCisgICAgICAgIC8qXCAgIDB4NUMsIDB4NUMgKi8KKyAgICAgICAgLyphKi8gMHg2MSwgMHgwNywKKyAgICAgICAgLypiKi8gMHg2MiwgMHgwOCwKKyAgICAgICAgLyplKi8gMHg2NSwgMHgxYiwKKyAgICAgICAgLypmKi8gMHg2NiwgMHgwYywKKyAgICAgICAgLypuKi8gMHg2RSwgMHgwYSwKKyAgICAgICAgLypyKi8gMHg3MiwgMHgwZCwKKyAgICAgICAgLyp0Ki8gMHg3NCwgMHgwOSwKKyAgICAgICAgLyp2Ki8gMHg3NiwgMHgwYgorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBDb252ZXJ0IGFuIGVzY2FwZSB0byBhIDMyLWJpdCBjb2RlIHBvaW50IHZhbHVlLiAgV2UgYXR0ZW1wdAorICAgICAqIHRvIHBhcmFsbGVsIHRoZSBpY3U0YyB1bmVzYWNwZUF0KCkgZnVuY3Rpb24uCisgICAgICogQHBhcmFtIG9mZnNldDE2IGFuIGFycmF5IGNvbnRhaW5pbmcgb2Zmc2V0IHRvIHRoZSBjaGFyYWN0ZXIKKyAgICAgKiA8ZW0+YWZ0ZXI8L2VtPiB0aGUgYmFja3NsYXNoLiAgVXBvbiByZXR1cm4gb2Zmc2V0MTZbMF0gd2lsbAorICAgICAqIGJlIHVwZGF0ZWQgdG8gcG9pbnQgYWZ0ZXIgdGhlIGVzY2FwZSBzZXF1ZW5jZS4KKyAgICAgKiBAcmV0dXJuIGNoYXJhY3RlciB2YWx1ZSBmcm9tIDAgdG8gMTBGRkZGLCBvciAtMSBvbiBlcnJvci4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludCB1bmVzY2FwZUF0KFN0cmluZyBzLCBpbnRbXSBvZmZzZXQxNikgeworICAgICAgICBpbnQgYzsKKyAgICAgICAgaW50IHJlc3VsdCA9IDA7CisgICAgICAgIGludCBuID0gMDsKKyAgICAgICAgaW50IG1pbkRpZyA9IDA7CisgICAgICAgIGludCBtYXhEaWcgPSAwOworICAgICAgICBpbnQgYml0c1BlckRpZ2l0ID0gNDsKKyAgICAgICAgaW50IGRpZzsKKyAgICAgICAgaW50IGk7CisKKyAgICAgICAgLyogQ2hlY2sgdGhhdCBvZmZzZXQgaXMgaW4gcmFuZ2UgKi8KKyAgICAgICAgaW50IG9mZnNldCA9IG9mZnNldDE2WzBdOworICAgICAgICBpbnQgbGVuZ3RoID0gcy5sZW5ndGgoKTsKKyAgICAgICAgaWYgKG9mZnNldCA8IDAgfHwgb2Zmc2V0ID49IGxlbmd0aCkgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisKKyAgICAgICAgLyogRmV0Y2ggZmlyc3QgVUNoYXIgYWZ0ZXIgJ1xcJyAqLworICAgICAgICBjID0gVVRGMTYuY2hhckF0KHMsIG9mZnNldCk7CisgICAgICAgIG9mZnNldCArPSBVVEYxNi5nZXRDaGFyQ291bnQoYyk7CisKKyAgICAgICAgLyogQ29udmVydCBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgZXNjYXBlcyAqLworICAgICAgICBzd2l0Y2ggKGMpIHsKKyAgICAgICAgY2FzZSAndSc6CisgICAgICAgICAgICBtaW5EaWcgPSBtYXhEaWcgPSA0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ1UnOgorICAgICAgICAgICAgbWluRGlnID0gbWF4RGlnID0gODsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICd4JzoKKyAgICAgICAgICAgIG1pbkRpZyA9IDE7CisgICAgICAgICAgICBtYXhEaWcgPSAyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBkaWcgPSBVQ2hhcmFjdGVyLmRpZ2l0KGMsIDgpOworICAgICAgICAgICAgaWYgKGRpZyA+PSAwKSB7CisgICAgICAgICAgICAgICAgbWluRGlnID0gMTsKKyAgICAgICAgICAgICAgICBtYXhEaWcgPSAzOworICAgICAgICAgICAgICAgIG4gPSAxOyAvKiBBbHJlYWR5IGhhdmUgZmlyc3Qgb2N0YWwgZGlnaXQgKi8KKyAgICAgICAgICAgICAgICBiaXRzUGVyRGlnaXQgPSAzOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGRpZzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmIChtaW5EaWcgIT0gMCkgeworICAgICAgICAgICAgd2hpbGUgKG9mZnNldCA8IGxlbmd0aCAmJiBuIDwgbWF4RGlnKSB7CisgICAgICAgICAgICAgICAgLy8gVEVNUE9SQVJZCisgICAgICAgICAgICAgICAgLy8gVE9ETzogUmVzdG9yZSB0aGUgY2hhcjMyLWJhc2VkIGNvZGUgd2hlbiBVQ2hhcmFjdGVyLmRpZ2l0CisgICAgICAgICAgICAgICAgLy8gaXMgd29ya2luZyAoQnVnIDY2KS4KKworICAgICAgICAgICAgICAgIC8vYyA9IFVURjE2LmNoYXJBdChzLCBvZmZzZXQpOworICAgICAgICAgICAgICAgIC8vZGlnID0gVUNoYXJhY3Rlci5kaWdpdChjLCAoYml0c1BlckRpZ2l0ID09IDMpID8gOCA6IDE2KTsKKyAgICAgICAgICAgICAgICBjID0gcy5jaGFyQXQob2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBkaWcgPSBDaGFyYWN0ZXIuZGlnaXQoKGNoYXIpYywgKGJpdHNQZXJEaWdpdCA9PSAzKSA/IDggOiAxNik7CisgICAgICAgICAgICAgICAgaWYgKGRpZyA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgPDwgYml0c1BlckRpZ2l0KSB8IGRpZzsKKyAgICAgICAgICAgICAgICAvL29mZnNldCArPSBVVEYxNi5nZXRDaGFyQ291bnQoYyk7CisgICAgICAgICAgICAgICAgKytvZmZzZXQ7CisgICAgICAgICAgICAgICAgKytuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG4gPCBtaW5EaWcpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBvZmZzZXQxNlswXSA9IG9mZnNldDsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICAvKiBDb252ZXJ0IEMtc3R5bGUgZXNjYXBlcyBpbiB0YWJsZSAqLworICAgICAgICBmb3IgKGk9MDsgaTxVTkVTQ0FQRV9NQVAubGVuZ3RoOyBpKz0yKSB7CisgICAgICAgICAgICBpZiAoYyA9PSBVTkVTQ0FQRV9NQVBbaV0pIHsKKyAgICAgICAgICAgICAgICBvZmZzZXQxNlswXSA9IG9mZnNldDsKKyAgICAgICAgICAgICAgICByZXR1cm4gVU5FU0NBUEVfTUFQW2krMV07CisgICAgICAgICAgICB9IGVsc2UgaWYgKGMgPCBVTkVTQ0FQRV9NQVBbaV0pIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8qIE1hcCBcY1ggdG8gY29udHJvbC1YOiBYICYgMHgxRiAqLworICAgICAgICBpZiAoYyA9PSAnYycgJiYgb2Zmc2V0IDwgbGVuZ3RoKSB7CisgICAgICAgICAgICBjID0gVVRGMTYuY2hhckF0KHMsIG9mZnNldCk7CisgICAgICAgICAgICBvZmZzZXQxNlswXSA9IG9mZnNldCArIFVURjE2LmdldENoYXJDb3VudChjKTsKKyAgICAgICAgICAgIHJldHVybiAweDFGICYgYzsKKyAgICAgICAgfQorCisgICAgICAgIC8qIElmIG5vIHNwZWNpYWwgZm9ybXMgYXJlIHJlY29nbml6ZWQsIHRoZW4gY29uc2lkZXIKKyAgICAgICAgICogdGhlIGJhY2tzbGFzaCB0byBnZW5lcmljYWxseSBlc2NhcGUgdGhlIG5leHQgY2hhcmFjdGVyLiAqLworICAgICAgICBvZmZzZXQxNlswXSA9IG9mZnNldDsKKyAgICAgICAgcmV0dXJuIGM7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29udmVydCBhbGwgZXNjYXBlcyBpbiBhIGdpdmVuIHN0cmluZyB1c2luZyB1bmVzY2FwZUF0KCkuCisgICAgICogQGV4Y2VwdGlvbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgYW4gaW52YWxpZCBlc2NhcGUgaXMKKyAgICAgKiBzZWVuLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIHVuZXNjYXBlKFN0cmluZyBzKSB7CisgICAgICAgIFN0cmluZ0J1ZmZlciBidWYgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIGludFtdIHBvcyA9IG5ldyBpbnRbMV07CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxzLmxlbmd0aCgpOyApIHsKKyAgICAgICAgICAgIGNoYXIgYyA9IHMuY2hhckF0KGkrKyk7CisgICAgICAgICAgICBpZiAoYyA9PSAnXFwnKSB7CisgICAgICAgICAgICAgICAgcG9zWzBdID0gaTsKKyAgICAgICAgICAgICAgICBpbnQgZSA9IHVuZXNjYXBlQXQocywgcG9zKTsKKyAgICAgICAgICAgICAgICBpZiAoZSA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBlc2NhcGUgc2VxdWVuY2UgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5zdWJzdHJpbmcoaS0xLCBNYXRoLm1pbihpKzgsIHMubGVuZ3RoKCkpKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFVURjE2LmFwcGVuZChidWYsIGUpOworICAgICAgICAgICAgICAgIGkgPSBwb3NbMF07CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoYyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGJ1Zi50b1N0cmluZygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlcnQgYWxsIGVzY2FwZXMgaW4gYSBnaXZlbiBzdHJpbmcgdXNpbmcgdW5lc2NhcGVBdCgpLgorICAgICAqIExlYXZlIGludmFsaWQgZXNjYXBlIHNlcXVlbmNlcyB1bmNoYW5nZWQuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgdW5lc2NhcGVMZW5pZW50bHkoU3RyaW5nIHMpIHsKKyAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgaW50W10gcG9zID0gbmV3IGludFsxXTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPHMubGVuZ3RoKCk7ICkgeworICAgICAgICAgICAgY2hhciBjID0gcy5jaGFyQXQoaSsrKTsKKyAgICAgICAgICAgIGlmIChjID09ICdcXCcpIHsKKyAgICAgICAgICAgICAgICBwb3NbMF0gPSBpOworICAgICAgICAgICAgICAgIGludCBlID0gdW5lc2NhcGVBdChzLCBwb3MpOworICAgICAgICAgICAgICAgIGlmIChlIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBidWYuYXBwZW5kKGMpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIFVURjE2LmFwcGVuZChidWYsIGUpOworICAgICAgICAgICAgICAgICAgICBpID0gcG9zWzBdOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgYnVmLmFwcGVuZChjKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYnVmLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29udmVydCBhIGNoYXIgdG8gNCBoZXggdXBwZXJjYXNlIGRpZ2l0cy4gIEUuZy4sIGhleCgnYScpID0+CisgICAgICogIjAwNDEiLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGhleChjaGFyIGNoKSB7CisgICAgICAgIFN0cmluZ0J1ZmZlciB0ZW1wID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICByZXR1cm4gaGV4KGNoLCB0ZW1wKS50b1N0cmluZygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlcnQgYSBzdHJpbmcgdG8gY29tbWEtc2VwYXJhdGVkIGdyb3VwcyBvZiA0IGhleCB1cHBlcmNhc2UKKyAgICAgKiBkaWdpdHMuICBFLmcuLCBoZXgoJ2FiJykgPT4gIjAwNDEsMDA0MiIuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgaGV4KFN0cmluZyBzKSB7CisgICAgICAgIFN0cmluZ0J1ZmZlciB0ZW1wID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICByZXR1cm4gaGV4KHMsIHRlbXApLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29udmVydCBhIHN0cmluZyB0byBjb21tYS1zZXBhcmF0ZWQgZ3JvdXBzIG9mIDQgaGV4IHVwcGVyY2FzZQorICAgICAqIGRpZ2l0cy4gIEUuZy4sIGhleCgnYWInKSA9PiAiMDA0MSwwMDQyIi4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBoZXgoU3RyaW5nQnVmZmVyIHMpIHsKKyAgICAgICAgcmV0dXJuIGhleChzLnRvU3RyaW5nKCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlcnQgYSBjaGFyIHRvIDQgaGV4IHVwcGVyY2FzZSBkaWdpdHMuICBFLmcuLCBoZXgoJ2EnKSA9PgorICAgICAqICIwMDQxIi4gIEFwcGVuZCB0aGUgb3V0cHV0IHRvIHRoZSBnaXZlbiBTdHJpbmdCdWZmZXIuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmdCdWZmZXIgaGV4KGNoYXIgY2gsIFN0cmluZ0J1ZmZlciBvdXRwdXQpIHsKKyAgICAgICAgcmV0dXJuIGFwcGVuZE51bWJlcihvdXRwdXQsIGNoLCAxNiwgNCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29udmVydCBhIGludGVnZXIgdG8gc2l6ZSB3aWR0aCBoZXggdXBwZXJjYXNlIGRpZ2l0cy4KKyAgICAgKiBFLmcuLCBoZXgoJ2EnLCA0LCBzdHIpID0+ICIwMDQxIi4KKyAgICAgKiBBcHBlbmQgdGhlIG91dHB1dCB0byB0aGUgZ2l2ZW4gU3RyaW5nQnVmZmVyLgorICAgICAqIElmIHdpZHRoIGlzIHRvbyBzbWFsbCB0byBmaXQsIG5vdGhpbmcgd2lsbCBiZSBhcHBlbmRlZCB0byBvdXRwdXQuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmdCdWZmZXIgaGV4KGludCBjaCwgaW50IHdpZHRoLCBTdHJpbmdCdWZmZXIgb3V0cHV0KSB7CisgICAgICAgIHJldHVybiBhcHBlbmROdW1iZXIob3V0cHV0LCBjaCwgMTYsIHdpZHRoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb252ZXJ0IGEgaW50ZWdlciB0byBzaXplIHdpZHRoIChtaW5pbXVtKSBoZXggdXBwZXJjYXNlIGRpZ2l0cy4KKyAgICAgKiBFLmcuLCBoZXgoJ2EnLCA0LCBzdHIpID0+ICIwMDQxIi4gIElmIHRoZSBpbnRlZ2VyIHJlcXVpcmVzIG1vcmUKKyAgICAgKiB0aGFuIHdpZHRoIGRpZ2l0cywgbW9yZSB3aWxsIGJlIHVzZWQuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgaGV4KGludCBjaCwgaW50IHdpZHRoKSB7CisgICAgICAgIFN0cmluZ0J1ZmZlciBidWYgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIHJldHVybiBhcHBlbmROdW1iZXIoYnVmLCBjaCwgMTYsIHdpZHRoKS50b1N0cmluZygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlcnQgYSBzdHJpbmcgdG8gY29tbWEtc2VwYXJhdGVkIGdyb3VwcyBvZiA0IGhleCB1cHBlcmNhc2UKKyAgICAgKiBkaWdpdHMuICBFLmcuLCBoZXgoJ2FiJykgPT4gIjAwNDEsMDA0MiIuICBBcHBlbmQgdGhlIG91dHB1dAorICAgICAqIHRvIHRoZSBnaXZlbiBTdHJpbmdCdWZmZXIuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmdCdWZmZXIgaGV4KFN0cmluZyBzLCBTdHJpbmdCdWZmZXIgcmVzdWx0KSB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcy5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAoaSAhPSAwKSByZXN1bHQuYXBwZW5kKCcsJyk7CisgICAgICAgICAgICBoZXgocy5jaGFyQXQoaSksIHJlc3VsdCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTcGxpdCBhIHN0cmluZyBpbnRvIHBpZWNlcyBiYXNlZCBvbiB0aGUgZ2l2ZW4gZGl2aWRlciBjaGFyYWN0ZXIKKyAgICAgKiBAcGFyYW0gcyB0aGUgc3RyaW5nIHRvIHNwbGl0CisgICAgICogQHBhcmFtIGRpdmlkZXIgdGhlIGNoYXJhY3RlciBvbiB3aGljaCB0byBzcGxpdC4gIE9jY3VycmVuY2VzIG9mCisgICAgICogdGhpcyBjaGFyYWN0ZXIgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgb3V0cHV0CisgICAgICogQHBhcmFtIG91dHB1dCBhbiBhcnJheSB0byByZWNlaXZlIHRoZSBzdWJzdHJpbmdzIGJldHdlZW4KKyAgICAgKiBpbnN0YW5jZXMgb2YgZGl2aWRlci4gIEl0IG11c3QgYmUgbGFyZ2UgZW5vdWdoIG9uIGVudHJ5IHRvCisgICAgICogYWNjb21vZGF0ZSBhbGwgb3V0cHV0LiAgQWRqYWNlbnQgaW5zdGFuY2VzIG9mIHRoZSBkaXZpZGVyCisgICAgICogY2hhcmFjdGVyIHdpbGwgcGxhY2UgZW1wdHkgc3RyaW5ncyBpbnRvIG91dHB1dC4gIEJlZm9yZQorICAgICAqIHJldHVybmluZywgb3V0cHV0IGlzIHBhZGRlZCBvdXQgd2l0aCBlbXB0eSBzdHJpbmdzLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBzcGxpdChTdHJpbmcgcywgY2hhciBkaXZpZGVyLCBTdHJpbmdbXSBvdXRwdXQpIHsKKyAgICAgICAgaW50IGxhc3QgPSAwOworICAgICAgICBpbnQgY3VycmVudCA9IDA7CisgICAgICAgIGludCBpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcy5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAocy5jaGFyQXQoaSkgPT0gZGl2aWRlcikgeworICAgICAgICAgICAgICAgIG91dHB1dFtjdXJyZW50KytdID0gcy5zdWJzdHJpbmcobGFzdCxpKTsKKyAgICAgICAgICAgICAgICBsYXN0ID0gaSsxOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIG91dHB1dFtjdXJyZW50KytdID0gcy5zdWJzdHJpbmcobGFzdCxpKTsKKyAgICAgICAgd2hpbGUgKGN1cnJlbnQgPCBvdXRwdXQubGVuZ3RoKSB7CisgICAgICAgICAgICBvdXRwdXRbY3VycmVudCsrXSA9ICIiOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogTG9vayB1cCBhIGdpdmVuIHN0cmluZyBpbiBhIHN0cmluZyBhcnJheS4gIFJldHVybnMgdGhlIGluZGV4IGF0CisgICAgICogd2hpY2ggdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdGhlIHN0cmluZyB3YXMgZm91bmQgaW4gdGhlCisgICAgICogYXJyYXksIG9yIC0xIGlmIGl0IHdhcyBub3QgZm91bmQuCisgICAgICogQHBhcmFtIHNvdXJjZSB0aGUgc3RyaW5nIHRvIHNlYXJjaCBmb3IKKyAgICAgKiBAcGFyYW0gdGFyZ2V0IHRoZSBhcnJheSBvZiB6ZXJvIG9yIG1vcmUgc3RyaW5ncyBpbiB3aGljaCB0bworICAgICAqIGxvb2sgZm9yIHNvdXJjZQorICAgICAqIEByZXR1cm4gdGhlIGluZGV4IG9mIHRhcmdldCBhdCB3aGljaCBzb3VyY2UgZmlyc3Qgb2NjdXJzLCBvciAtMQorICAgICAqIGlmIG5vdCBmb3VuZAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgaW50IGxvb2t1cChTdHJpbmcgc291cmNlLCBTdHJpbmdbXSB0YXJnZXQpIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0YXJnZXQubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChzb3VyY2UuZXF1YWxzKHRhcmdldFtpXSkpIHJldHVybiBpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTa2lwIG92ZXIgYSBzZXF1ZW5jZSBvZiB6ZXJvIG9yIG1vcmUgd2hpdGUgc3BhY2UgY2hhcmFjdGVycworICAgICAqIGF0IHBvcy4gIFJldHVybiB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IG5vbi13aGl0ZS1zcGFjZSBjaGFyYWN0ZXIKKyAgICAgKiBhdCBvciBhZnRlciBwb3MsIG9yIHN0ci5sZW5ndGgoKSwgaWYgdGhlcmUgaXMgbm9uZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludCBza2lwV2hpdGVzcGFjZShTdHJpbmcgc3RyLCBpbnQgcG9zKSB7CisgICAgICAgIHdoaWxlIChwb3MgPCBzdHIubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIGludCBjID0gVVRGMTYuY2hhckF0KHN0ciwgcG9zKTsKKyAgICAgICAgICAgIGlmICghVUNoYXJhY3RlclByb3BlcnR5LmlzUnVsZVdoaXRlU3BhY2UoYykpIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBvcyArPSBVVEYxNi5nZXRDaGFyQ291bnQoYyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHBvczsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTa2lwIG92ZXIgYSBzZXF1ZW5jZSBvZiB6ZXJvIG9yIG1vcmUgd2hpdGUgc3BhY2UgY2hhcmFjdGVycworICAgICAqIGF0IHBvc1swXSwgYWR2YW5jaW5nIGl0LgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBza2lwV2hpdGVzcGFjZShTdHJpbmcgc3RyLCBpbnRbXSBwb3MpIHsKKyAgICAgICAgcG9zWzBdID0gc2tpcFdoaXRlc3BhY2Uoc3RyLCBwb3NbMF0pOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlbW92ZSBhbGwgcnVsZSB3aGl0ZSBzcGFjZSBmcm9tIGEgc3RyaW5nLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGRlbGV0ZVJ1bGVXaGl0ZVNwYWNlKFN0cmluZyBzdHIpIHsKKyAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPHN0ci5sZW5ndGgoKTsgKSB7CisgICAgICAgICAgICBpbnQgY2ggPSBVVEYxNi5jaGFyQXQoc3RyLCBpKTsKKyAgICAgICAgICAgIGkgKz0gVVRGMTYuZ2V0Q2hhckNvdW50KGNoKTsKKyAgICAgICAgICAgIGlmIChVQ2hhcmFjdGVyUHJvcGVydHkuaXNSdWxlV2hpdGVTcGFjZShjaCkpIHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFVURjE2LmFwcGVuZChidWYsIGNoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYnVmLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUGFyc2UgYSBzaW5nbGUgbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVyICdjaCcsIG9wdGlvbmFsbHkKKyAgICAgKiBwcmVjZWRlZCBieSB3aGl0ZXNwYWNlLgorICAgICAqIEBwYXJhbSBpZCB0aGUgc3RyaW5nIHRvIGJlIHBhcnNlZAorICAgICAqIEBwYXJhbSBwb3MgSU5QVVQtT1VUUFVUIHBhcmFtZXRlci4gIE9uIGlucHV0LCBwb3NbMF0gaXMgdGhlCisgICAgICogb2Zmc2V0IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgdG8gYmUgcGFyc2VkLiAgT24gb3V0cHV0LCBwb3NbMF0KKyAgICAgKiBpcyB0aGUgaW5kZXggYWZ0ZXIgdGhlIGxhc3QgcGFyc2VkIGNoYXJhY3Rlci4gIElmIHRoZSBwYXJzZQorICAgICAqIGZhaWxzLCBwb3NbMF0gd2lsbCBiZSB1bmNoYW5nZWQuCisgICAgICogQHBhcmFtIGNoIHRoZSBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXIgdG8gYmUgcGFyc2VkLgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiAnY2gnIGlzIHNlZW4gcHJlY2VkZWQgYnkgemVybyBvciBtb3JlCisgICAgICogd2hpdGVzcGFjZSBjaGFyYWN0ZXJzLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBwYXJzZUNoYXIoU3RyaW5nIGlkLCBpbnRbXSBwb3MsIGNoYXIgY2gpIHsKKyAgICAgICAgaW50IHN0YXJ0ID0gcG9zWzBdOworICAgICAgICBza2lwV2hpdGVzcGFjZShpZCwgcG9zKTsKKyAgICAgICAgaWYgKHBvc1swXSA9PSBpZC5sZW5ndGgoKSB8fAorICAgICAgICAgICAgaWQuY2hhckF0KHBvc1swXSkgIT0gY2gpIHsKKyAgICAgICAgICAgIHBvc1swXSA9IHN0YXJ0OworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgICsrcG9zWzBdOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQYXJzZSBhIHBhdHRlcm4gc3RyaW5nIHN0YXJ0aW5nIGF0IG9mZnNldCBwb3MuICBLZXl3b3JkcyBhcmUKKyAgICAgKiBtYXRjaGVkIGNhc2UtaW5zZW5zaXRpdmVseS4gIFNwYWNlcyBtYXkgYmUgc2tpcHBlZCBhbmQgbWF5IGJlCisgICAgICogb3B0aW9uYWwgb3IgcmVxdWlyZWQuICBJbnRlZ2VyIHZhbHVlcyBtYXkgYmUgcGFyc2VkLCBhbmQgaWYKKyAgICAgKiB0aGV5IGFyZSwgdGhleSB3aWxsIGJlIHJldHVybmVkIGluIHRoZSBnaXZlbiBhcnJheS4gIElmCisgICAgICogc3VjY2Vzc2Z1bCwgdGhlIG9mZnNldCBvZiB0aGUgbmV4dCBub24tc3BhY2UgY2hhcmFjdGVyIGlzCisgICAgICogcmV0dXJuZWQuICBPbiBmYWlsdXJlLCAtMSBpcyByZXR1cm5lZC4KKyAgICAgKiBAcGFyYW0gcGF0dGVybiBtdXN0IG9ubHkgY29udGFpbiBsb3dlcmNhc2UgY2hhcmFjdGVycywgd2hpY2gKKyAgICAgKiB3aWxsIG1hdGNoIHRoZWlyIHVwcGVyY2FzZSBlcXVpdmFsZW50cyBhcyB3ZWxsLiAgQSBzcGFjZQorICAgICAqIGNoYXJhY3RlciBtYXRjaGVzIG9uZSBvciBtb3JlIHJlcXVpcmVkIHNwYWNlcy4gIEEgJ34nIGNoYXJhY3RlcgorICAgICAqIG1hdGNoZXMgemVybyBvciBtb3JlIG9wdGlvbmFsIHNwYWNlcy4gIEEgJyMnIGNoYXJhY3RlciBtYXRjaGVzCisgICAgICogYW4gaW50ZWdlciBhbmQgc3RvcmVzIGl0IGluIHBhcnNlZEludHMsIHdoaWNoIHRoZSBjYWxsZXIgbXVzdAorICAgICAqIGVuc3VyZSBoYXMgZW5vdWdoIGNhcGFjaXR5LgorICAgICAqIEBwYXJhbSBwYXJzZWRJbnRzIGFycmF5IHRvIHJlY2VpdmUgcGFyc2VkIGludGVnZXJzLiAgQ2FsbGVyCisgICAgICogbXVzdCBlbnN1cmUgdGhhdCBwYXJzZWRJbnRzLmxlbmd0aCBpcyA+PSB0aGUgbnVtYmVyIG9mICcjJworICAgICAqIHNpZ25zIGluICdwYXR0ZXJuJy4KKyAgICAgKiBAcmV0dXJuIHRoZSBwb3NpdGlvbiBhZnRlciB0aGUgbGFzdCBjaGFyYWN0ZXIgcGFyc2VkLCBvciAtMSBpZgorICAgICAqIHRoZSBwYXJzZSBmYWlsZWQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludCBwYXJzZVBhdHRlcm4oU3RyaW5nIHJ1bGUsIGludCBwb3MsIGludCBsaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHBhdHRlcm4sIGludFtdIHBhcnNlZEludHMpIHsKKyAgICAgICAgLy8gVE9ETyBVcGRhdGUgdGhpcyB0byBoYW5kbGUgc3Vycm9nYXRlcworICAgICAgICBpbnRbXSBwID0gbmV3IGludFsxXTsKKyAgICAgICAgaW50IGludENvdW50ID0gMDsgLy8gbnVtYmVyIG9mIGludGVnZXJzIHBhcnNlZAorICAgICAgICBmb3IgKGludCBpPTA7IGk8cGF0dGVybi5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBjaGFyIGNwYXQgPSBwYXR0ZXJuLmNoYXJBdChpKTsKKyAgICAgICAgICAgIGNoYXIgYzsKKyAgICAgICAgICAgIHN3aXRjaCAoY3BhdCkgeworICAgICAgICAgICAgY2FzZSAnICc6CisgICAgICAgICAgICAgICAgaWYgKHBvcyA+PSBsaW1pdCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGMgPSBydWxlLmNoYXJBdChwb3MrKyk7CisgICAgICAgICAgICAgICAgaWYgKCFVQ2hhcmFjdGVyUHJvcGVydHkuaXNSdWxlV2hpdGVTcGFjZShjKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8vIEZBTEwgVEhST1VHSCB0byBza2lwV2hpdGVzcGFjZQorICAgICAgICAgICAgY2FzZSAnfic6CisgICAgICAgICAgICAgICAgcG9zID0gc2tpcFdoaXRlc3BhY2UocnVsZSwgcG9zKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJyMnOgorICAgICAgICAgICAgICAgIHBbMF0gPSBwb3M7CisgICAgICAgICAgICAgICAgcGFyc2VkSW50c1tpbnRDb3VudCsrXSA9IHBhcnNlSW50ZWdlcihydWxlLCBwLCBsaW1pdCk7CisgICAgICAgICAgICAgICAgaWYgKHBbMF0gPT0gcG9zKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFN5bnRheCBlcnJvcjsgZmFpbGVkIHRvIHBhcnNlIGludGVnZXIKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBwb3MgPSBwWzBdOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBpZiAocG9zID49IGxpbWl0KSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYyA9IChjaGFyKSBVQ2hhcmFjdGVyLnRvTG93ZXJDYXNlKHJ1bGUuY2hhckF0KHBvcysrKSk7CisgICAgICAgICAgICAgICAgaWYgKGMgIT0gY3BhdCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBwb3M7CisgICAgfQorCisgICAgLyoqCisgICAgICogUGFyc2UgYSBwYXR0ZXJuIHN0cmluZyB3aXRoaW4gdGhlIGdpdmVuIFJlcGxhY2VhYmxlIGFuZCBhIHBhcnNpbmcKKyAgICAgKiBwYXR0ZXJuLiAgQ2hhcmFjdGVycyBhcmUgbWF0Y2hlZCBsaXRlcmFsbHkgYW5kIGNhc2Utc2Vuc2l0aXZlbHkKKyAgICAgKiBleGNlcHQgZm9yIHRoZSBmb2xsb3dpbmcgc3BlY2lhbCBjaGFyYWN0ZXJzOgorICAgICAqCisgICAgICogfiAgemVybyBvciBtb3JlIHVwcnZfaXNSdWxlV2hpdGVTcGFjZSBjaGFycworICAgICAqCisgICAgICogSWYgZW5kIG9mIHBhdHRlcm4gaXMgcmVhY2hlZCB3aXRoIGFsbCBtYXRjaGVzIGFsb25nIHRoZSB3YXksCisgICAgICogcG9zIGlzIGFkdmFuY2VkIHRvIHRoZSBmaXJzdCB1bnBhcnNlZCBpbmRleCBhbmQgcmV0dXJuZWQuCisgICAgICogT3RoZXJ3aXNlIC0xIGlzIHJldHVybmVkLgorICAgICAqIEBwYXJhbSBwYXQgcGF0dGVybiB0aGF0IGNvbnRyb2xzIHBhcnNpbmcKKyAgICAgKiBAcGFyYW0gdGV4dCB0ZXh0IHRvIGJlIHBhcnNlZCwgc3RhcnRpbmcgYXQgaW5kZXgKKyAgICAgKiBAcGFyYW0gaW5kZXggb2Zmc2V0IHRvIGZpcnN0IGNoYXJhY3RlciB0byBwYXJzZQorICAgICAqIEBwYXJhbSBsaW1pdCBvZmZzZXQgYWZ0ZXIgbGFzdCBjaGFyYWN0ZXIgdG8gcGFyc2UKKyAgICAgKiBAcmV0dXJuIGluZGV4IGFmdGVyIGxhc3QgcGFyc2VkIGNoYXJhY3Rlciwgb3IgLTEgb24gcGFyc2UgZmFpbHVyZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludCBwYXJzZVBhdHRlcm4oU3RyaW5nIHBhdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVwbGFjZWFibGUgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGltaXQpIHsKKyAgICAgICAgaW50IGlwYXQgPSAwOworCisgICAgICAgIC8vIGVtcHR5IHBhdHRlcm4gbWF0Y2hlcyBpbW1lZGlhdGVseQorICAgICAgICBpZiAoaXBhdCA9PSBwYXQubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIHJldHVybiBpbmRleDsKKyAgICAgICAgfQorCisgICAgICAgIGludCBjcGF0ID0gVVRGMTYuY2hhckF0KHBhdCwgaXBhdCk7CisKKyAgICAgICAgd2hpbGUgKGluZGV4IDwgbGltaXQpIHsKKyAgICAgICAgICAgIGludCBjID0gdGV4dC5jaGFyMzJBdChpbmRleCk7CisKKyAgICAgICAgICAgIC8vIHBhcnNlIFxzKgorICAgICAgICAgICAgaWYgKGNwYXQgPT0gJ34nKSB7CisgICAgICAgICAgICAgICAgaWYgKFVDaGFyYWN0ZXJQcm9wZXJ0eS5pc1J1bGVXaGl0ZVNwYWNlKGMpKSB7CisgICAgICAgICAgICAgICAgICAgIGluZGV4ICs9IFVURjE2LmdldENoYXJDb3VudChjKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCsraXBhdCA9PSBwYXQubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbmRleDsgLy8gc3VjY2VzczsgYyB1bnBhcnNlZAorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIC8vIGZhbGwgdGhydTsgcHJvY2VzcyBjIGFnYWluIHdpdGggbmV4dCBjcGF0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBwYXJzZSBsaXRlcmFsCisgICAgICAgICAgICBlbHNlIGlmIChjID09IGNwYXQpIHsKKyAgICAgICAgICAgICAgICBpbnQgbiA9IFVURjE2LmdldENoYXJDb3VudChjKTsKKyAgICAgICAgICAgICAgICBpbmRleCArPSBuOworICAgICAgICAgICAgICAgIGlwYXQgKz0gbjsKKyAgICAgICAgICAgICAgICBpZiAoaXBhdCA9PSBwYXQubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4OyAvLyBzdWNjZXNzOyBjIHBhcnNlZAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvLyBmYWxsIHRocnU7IGdldCBuZXh0IGNwYXQKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gbWF0Y2ggZmFpbHVyZSBvZiBsaXRlcmFsCisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNwYXQgPSBVVEYxNi5jaGFyQXQocGF0LCBpcGF0KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiAtMTsgLy8gdGV4dCBlbmRlZCBiZWZvcmUgZW5kIG9mIHBhdAorICAgIH0gICAgCisKKyAgICAvKioKKyAgICAgKiBQYXJzZSBhbiBpbnRlZ2VyIGF0IHBvcywgZWl0aGVyIG9mIHRoZSBmb3JtIFxkKyBvciBvZiB0aGUgZm9ybQorICAgICAqIDB4WzAtOUEtRmEtZl0rIG9yIDBbMC03XSssIHRoYXQgaXMsIGluIHN0YW5kYXJkIGRlY2ltYWwsIGhleCwKKyAgICAgKiBvciBvY3RhbCBmb3JtYXQuCisgICAgICogQHBhcmFtIHBvcyBJTlBVVC1PVVRQVVQgcGFyYW1ldGVyLiAgT24gaW5wdXQsIHRoZSBmaXJzdAorICAgICAqIGNoYXJhY3RlciB0byBwYXJzZS4gIE9uIG91dHB1dCwgdGhlIGNoYXJhY3RlciBhZnRlciB0aGUgbGFzdAorICAgICAqIHBhcnNlZCBjaGFyYWN0ZXIuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnQgcGFyc2VJbnRlZ2VyKFN0cmluZyBydWxlLCBpbnRbXSBwb3MsIGludCBsaW1pdCkgeworICAgICAgICBpbnQgY291bnQgPSAwOworICAgICAgICBpbnQgdmFsdWUgPSAwOworICAgICAgICBpbnQgcCA9IHBvc1swXTsKKyAgICAgICAgaW50IHJhZGl4ID0gMTA7CisKKyAgICAgICAgaWYgKHJ1bGUucmVnaW9uTWF0Y2hlcyh0cnVlLCBwLCAiMHgiLCAwLCAyKSkgeworICAgICAgICAgICAgcCArPSAyOworICAgICAgICAgICAgcmFkaXggPSAxNjsKKyAgICAgICAgfSBlbHNlIGlmIChwIDwgbGltaXQgJiYgcnVsZS5jaGFyQXQocCkgPT0gJzAnKSB7CisgICAgICAgICAgICBwKys7CisgICAgICAgICAgICBjb3VudCA9IDE7CisgICAgICAgICAgICByYWRpeCA9IDg7CisgICAgICAgIH0KKworICAgICAgICB3aGlsZSAocCA8IGxpbWl0KSB7CisgICAgICAgICAgICBpbnQgZCA9IFVDaGFyYWN0ZXIuZGlnaXQocnVsZS5jaGFyQXQocCsrKSwgcmFkaXgpOworICAgICAgICAgICAgaWYgKGQgPCAwKSB7CisgICAgICAgICAgICAgICAgLS1wOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKytjb3VudDsKKyAgICAgICAgICAgIGludCB2ID0gKHZhbHVlICogcmFkaXgpICsgZDsKKyAgICAgICAgICAgIGlmICh2IDw9IHZhbHVlKSB7CisgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgYXJlIHRvbyBtYW55IGlucHV0IGRpZ2l0cywgYXQgc29tZSBwb2ludAorICAgICAgICAgICAgICAgIC8vIHRoZSB2YWx1ZSB3aWxsIGdvIG5lZ2F0aXZlLCBlLmcuLCBpZiB3ZSBoYXZlIHNlZW4KKyAgICAgICAgICAgICAgICAvLyAiMHg4MDAwMDAwIiBhbHJlYWR5IGFuZCB0aGVyZSBpcyBhbm90aGVyICcwJywgd2hlbgorICAgICAgICAgICAgICAgIC8vIHdlIHBhcnNlIHRoZSBuZXh0IDAgdGhlIHZhbHVlIHdpbGwgZ28gbmVnYXRpdmUuCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2YWx1ZSA9IHY7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvdW50ID4gMCkgeworICAgICAgICAgICAgcG9zWzBdID0gcDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogUGFyc2UgYSBVbmljb2RlIGlkZW50aWZpZXIgZnJvbSB0aGUgZ2l2ZW4gc3RyaW5nIGF0IHRoZSBnaXZlbgorICAgICAqIHBvc2l0aW9uLiAgUmV0dXJuIHRoZSBpZGVudGlmaWVyLCBvciBudWxsIGlmIHRoZXJlIGlzIG5vCisgICAgICogaWRlbnRpZmllci4KKyAgICAgKiBAcGFyYW0gc3RyIHRoZSBzdHJpbmcgdG8gcGFyc2UKKyAgICAgKiBAcGFyYW0gcG9zIElOUFVULU9VUFVUIHBhcmFtZXRlci4gIE9uIElOUFVULCBwb3NbMF0gaXMgdGhlCisgICAgICogZmlyc3QgY2hhcmFjdGVyIHRvIGV4YW1pbmUuICBJdCBtdXN0IGJlIGxlc3MgdGhhbiBzdHIubGVuZ3RoKCksCisgICAgICogYW5kIGl0IG11c3Qgbm90IHBvaW50IHRvIGEgd2hpdGVzcGFjZSBjaGFyYWN0ZXIuICBUaGF0IGlzLCBtdXN0CisgICAgICogaGF2ZSBwb3NbMF0gPCBzdHIubGVuZ3RoKCkgYW5kCisgICAgICogIVVDaGFyYWN0ZXJQcm9wZXJ0eS5pc1J1bGVXaGl0ZVNwYWNlKFVURjE2LmNoYXJBdChzdHIsIHBvc1swXSkpLiAgT24KKyAgICAgKiBPVVRQVVQsIHRoZSBwb3NpdGlvbiBhZnRlciB0aGUgbGFzdCBwYXJzZWQgY2hhcmFjdGVyLgorICAgICAqIEByZXR1cm4gdGhlIFVuaWNvZGUgaWRlbnRpZmllciwgb3IgbnVsbCBpZiB0aGVyZSBpcyBubyB2YWxpZAorICAgICAqIGlkZW50aWZpZXIgYXQgcG9zWzBdLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIHBhcnNlVW5pY29kZUlkZW50aWZpZXIoU3RyaW5nIHN0ciwgaW50W10gcG9zKSB7CisgICAgICAgIC8vIGFzc2VydChwb3NbMF0gPCBzdHIubGVuZ3RoKCkpOworICAgICAgICAvLyBhc3NlcnQoIVVDaGFyYWN0ZXJQcm9wZXJ0eS5pc1J1bGVXaGl0ZVNwYWNlKFVURjE2LmNoYXJBdChzdHIsIHBvc1swXSkpKTsKKyAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgaW50IHAgPSBwb3NbMF07CisgICAgICAgIHdoaWxlIChwIDwgc3RyLmxlbmd0aCgpKSB7CisgICAgICAgICAgICBpbnQgY2ggPSBVVEYxNi5jaGFyQXQoc3RyLCBwKTsKKyAgICAgICAgICAgIGlmIChidWYubGVuZ3RoKCkgPT0gMCkgeworICAgICAgICAgICAgICAgIGlmIChVQ2hhcmFjdGVyLmlzVW5pY29kZUlkZW50aWZpZXJTdGFydChjaCkpIHsKKyAgICAgICAgICAgICAgICAgICAgVVRGMTYuYXBwZW5kKGJ1ZiwgY2gpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKFVDaGFyYWN0ZXIuaXNVbmljb2RlSWRlbnRpZmllclBhcnQoY2gpKSB7CisgICAgICAgICAgICAgICAgICAgIFVURjE2LmFwcGVuZChidWYsIGNoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwICs9IFVURjE2LmdldENoYXJDb3VudChjaCk7CisgICAgICAgIH0KKyAgICAgICAgcG9zWzBdID0gcDsKKyAgICAgICAgcmV0dXJuIGJ1Zi50b1N0cmluZygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRyaW0gd2hpdGVzcGFjZSBmcm9tIGVuZHMgb2YgYSBTdHJpbmdCdWZmZXIuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmdCdWZmZXIgdHJpbShTdHJpbmdCdWZmZXIgYikgeworICAgICAgICAvLyBUT0RPIHVwZGF0ZSB0byBoYW5kbGUgc3Vycm9nYXRlcworICAgICAgICBpbnQgaTsKKyAgICAgICAgZm9yIChpPTA7IGk8Yi5sZW5ndGgoKSAmJiBDaGFyYWN0ZXIuaXNXaGl0ZXNwYWNlKGIuY2hhckF0KGkpKTsgKytpKSB7fQorICAgICAgICBiLmRlbGV0ZSgwLCBpKTsKKyAgICAgICAgZm9yIChpPWIubGVuZ3RoKCktMTsgaT49MCAmJiBDaGFyYWN0ZXIuaXNXaGl0ZXNwYWNlKGIuY2hhckF0KGkpKTsgLS1pKSB7fQorICAgICAgICByZXR1cm4gYi5kZWxldGUoaSsxLCBiLmxlbmd0aCgpKTsKKyAgICB9CisKKyAgICAvLyAiMDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIgorICAgIHN0YXRpYyBmaW5hbCBjaGFyIERJR0lUU1tdID0geworICAgICAgICA0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1NywKKyAgICAgICAgNjUsNjYsNjcsNjgsNjksNzAsNzEsNzIsNzMsNzQsCisgICAgICAgIDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LAorICAgICAgICA4NSw4Niw4Nyw4OCw4OSw5MAorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBBcHBlbmQgYSBudW1iZXIgdG8gdGhlIGdpdmVuIFN0cmluZ0J1ZmZlciBpbiB0aGUgcmFkaXggMTAKKyAgICAgKiBnZW5lcmF0aW5nIGF0IGxlYXN0IG9uZSBkaWdpdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZ0J1ZmZlciBhcHBlbmROdW1iZXIoU3RyaW5nQnVmZmVyIHJlc3VsdCwgaW50IG4pIHsKKyAgICAgICAgcmV0dXJuIGFwcGVuZE51bWJlcihyZXN1bHQsIG4sIDEwLCAxKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBcHBlbmQgYSBudW1iZXIgdG8gdGhlIGdpdmVuIFN0cmluZ0J1ZmZlciBpbiB0aGUgZ2l2ZW4gcmFkaXguCisgICAgICogU3RhbmRhcmQgZGlnaXRzICcwJy0nOScgYXJlIHVzZWQgYW5kIGxldHRlcnMgJ0EnLSdaJyBmb3IKKyAgICAgKiByYWRpY2VzIDExIHRocm91Z2ggMzYuCisgICAgICogQHBhcmFtIHJlc3VsdCB0aGUgZGlnaXRzIG9mIHRoZSBudW1iZXIgYXJlIGFwcGVuZGVkIGhlcmUKKyAgICAgKiBAcGFyYW0gbiB0aGUgbnVtYmVyIHRvIGJlIGNvbnZlcnRlZCB0byBkaWdpdHM7IG1heSBiZSBuZWdhdGl2ZS4KKyAgICAgKiBJZiBuZWdhdGl2ZSwgYSAnLScgaXMgcHJlcGVuZGVkIHRvIHRoZSBkaWdpdHMuCisgICAgICogQHBhcmFtIHJhZGl4IGEgcmFkaXggZnJvbSAyIHRvIDM2IGluY2x1c2l2ZS4KKyAgICAgKiBAcGFyYW0gbWluRGlnaXRzIHRoZSBtaW5pbXVtIG51bWJlciBvZiBkaWdpdHMsIG5vdCBpbmNsdWRpbmcKKyAgICAgKiBhbnkgJy0nLCB0byBwcm9kdWNlLiAgVmFsdWVzIGxlc3MgdGhhbiAyIGhhdmUgbm8gZWZmZWN0LiAgT25lCisgICAgICogZGlnaXQgaXMgYWx3YXlzIGVtaXR0ZWQgcmVnYXJkbGVzcyBvZiB0aGlzIHBhcmFtZXRlci4KKyAgICAgKiBAcmV0dXJuIGEgcmVmZXJlbmNlIHRvIHJlc3VsdAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nQnVmZmVyIGFwcGVuZE51bWJlcihTdHJpbmdCdWZmZXIgcmVzdWx0LCBpbnQgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJhZGl4LCBpbnQgbWluRGlnaXRzKSB7CisgICAgICAgIGlmIChyYWRpeCA8IDIgfHwgcmFkaXggPiAzNikgeworICAgICAgICAgICAgLy8gQm9ndXMgcmFkaXgKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIklsbGVnYWwgcmFkaXggIiArIHJhZGl4KTsKKyAgICAgICAgfQorICAgICAgICAvLyBIYW5kbGUgbmVnYXRpdmVzCisgICAgICAgIGlmIChuIDwgMCkgeworICAgICAgICAgICAgbiA9IC1uOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnLScpOworICAgICAgICB9CisgICAgICAgIC8vIEZpcnN0IGRldGVybWluZSB0aGUgbnVtYmVyIG9mIGRpZ2l0cworICAgICAgICBpbnQgbm4gPSBuOworICAgICAgICBpbnQgciA9IDE7CisgICAgICAgIHdoaWxlIChubiA+PSByYWRpeCkgeworICAgICAgICAgICAgbm4gLz0gcmFkaXg7CisgICAgICAgICAgICByICo9IHJhZGl4OworICAgICAgICAgICAgLS1taW5EaWdpdHM7CisgICAgICAgIH0KKyAgICAgICAgLy8gTm93IGdlbmVyYXRlIHRoZSBkaWdpdHMKKyAgICAgICAgd2hpbGUgKC0tbWluRGlnaXRzID4gMCkgeworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChESUdJVFNbMF0pOworICAgICAgICB9CisgICAgICAgIHdoaWxlIChyID4gMCkgeworICAgICAgICAgICAgaW50IGRpZ2l0ID0gbiAvIHI7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKERJR0lUU1tkaWdpdF0pOworICAgICAgICAgICAgbiAtPSBkaWdpdCAqIHI7CisgICAgICAgICAgICByIC89IHJhZGl4OworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogUGFyc2UgYW4gdW5zaWduZWQgMzEtYml0IGludGVnZXIgYXQgdGhlIGdpdmVuIG9mZnNldC4gIFVzZQorICAgICAqIFVDaGFyYWN0ZXIuZGlnaXQoKSB0byBwYXJzZSBpbmRpdmlkdWFsIGNoYXJhY3RlcnMgaW50byBkaWdpdHMuCisgICAgICogQHBhcmFtIHRleHQgdGhlIHRleHQgdG8gYmUgcGFyc2VkCisgICAgICogQHBhcmFtIHBvcyBJTlBVVC1PVVRQVVQgcGFyYW1ldGVyLiAgT24gZW50cnksIHBvc1swXSBpcyB0aGUKKyAgICAgKiBvZmZzZXQgd2l0aGluIHRleHQgYXQgd2hpY2ggdG8gc3RhcnQgcGFyc2luZzsgaXQgc2hvdWxkIHBvaW50CisgICAgICogdG8gYSB2YWxpZCBkaWdpdC4gIE9uIGV4aXQsIHBvc1swXSBpcyB0aGUgb2Zmc2V0IGFmdGVyIHRoZSBsYXN0CisgICAgICogcGFyc2VkIGNoYXJhY3Rlci4gIElmIHRoZSBwYXJzZSBmYWlsZWQsIGl0IHdpbGwgYmUgdW5jaGFuZ2VkIG9uCisgICAgICogZXhpdC4gIE11c3QgYmUgPj0gMCBvbiBlbnRyeS4KKyAgICAgKiBAcGFyYW0gcmFkaXggdGhlIHJhZGl4IGluIHdoaWNoIHRvIHBhcnNlOyBtdXN0IGJlID49IDIgYW5kIDw9CisgICAgICogMzYuCisgICAgICogQHJldHVybiBhIG5vbi1uZWdhdGl2ZSBwYXJzZWQgbnVtYmVyLCBvciAtMSB1cG9uIHBhcnNlIGZhaWx1cmUuCisgICAgICogUGFyc2UgZmFpbHMgaWYgdGhlcmUgYXJlIG5vIGRpZ2l0cywgdGhhdCBpcywgaWYgcG9zWzBdIGRvZXMgbm90CisgICAgICogcG9pbnQgdG8gYSB2YWxpZCBkaWdpdCBvbiBlbnRyeSwgb3IgaWYgdGhlIG51bWJlciB0byBiZSBwYXJzZWQKKyAgICAgKiBkb2VzIG5vdCBmaXQgaW50byBhIDMxLWJpdCB1bnNpZ25lZCBpbnRlZ2VyLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgaW50IHBhcnNlTnVtYmVyKFN0cmluZyB0ZXh0LCBpbnRbXSBwb3MsIGludCByYWRpeCkgeworICAgICAgICAvLyBhc3NlcnQocG9zWzBdID49IDApOworICAgICAgICAvLyBhc3NlcnQocmFkaXggPj0gMik7CisgICAgICAgIC8vIGFzc2VydChyYWRpeCA8PSAzNik7CisgICAgICAgIGludCBuID0gMDsKKyAgICAgICAgaW50IHAgPSBwb3NbMF07CisgICAgICAgIHdoaWxlIChwIDwgdGV4dC5sZW5ndGgoKSkgeworICAgICAgICAgICAgaW50IGNoID0gVVRGMTYuY2hhckF0KHRleHQsIHApOworICAgICAgICAgICAgaW50IGQgPSBVQ2hhcmFjdGVyLmRpZ2l0KGNoLCByYWRpeCk7CisgICAgICAgICAgICBpZiAoZCA8IDApIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG4gPSByYWRpeCpuICsgZDsKKyAgICAgICAgICAgIC8vIEFTU1VNRSB0aGF0IHdoZW4gYSAzMi1iaXQgaW50ZWdlciBvdmVyZmxvd3MgaXQgYmVjb21lcworICAgICAgICAgICAgLy8gbmVnYXRpdmUuICBFLmcuLCAyMTQ3NDgzNjQgKiAxMCArIDggPT4gbmVnYXRpdmUgdmFsdWUuCisgICAgICAgICAgICBpZiAobiA8IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICArK3A7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHAgPT0gcG9zWzBdKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgcG9zWzBdID0gcDsKKyAgICAgICAgcmV0dXJuIG47CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhcltdIEhFWCA9IHsnMCcsJzEnLCcyJywnMycsJzQnLCc1JywnNicsJzcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzgnLCc5JywnQScsJ0InLCdDJywnRCcsJ0UnLCdGJ307CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgY2hhcmFjdGVyIGlzIE5PVCBwcmludGFibGUgQVNDSUkuICBUaGUgdGFiLAorICAgICAqIG5ld2xpbmUgYW5kIGxpbmVmZWVkIGNoYXJhY3RlcnMgYXJlIGNvbnNpZGVyZWQgdW5wcmludGFibGUuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzVW5wcmludGFibGUoaW50IGMpIHsKKyAgICAgICAgcmV0dXJuICEoYyA+PSAweDIwICYmIGMgPD0gMHg3RSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogRXNjYXBlIHVucHJpbnRhYmxlIGNoYXJhY3RlcnMgdXNpbmcgPGJhY2tzbGFzaD51eHh4eCBub3RhdGlvbgorICAgICAqIGZvciBVKzAwMDAgdG8gVStGRkZGIGFuZCA8YmFja3NsYXNoPlV4eHh4eHh4eCBmb3IgVSsxMDAwMCBhbmQKKyAgICAgKiBhYm92ZS4gIElmIHRoZSBjaGFyYWN0ZXIgaXMgcHJpbnRhYmxlIEFTQ0lJLCB0aGVuIGRvIG5vdGhpbmcKKyAgICAgKiBhbmQgcmV0dXJuIEZBTFNFLiAgT3RoZXJ3aXNlLCBhcHBlbmQgdGhlIGVzY2FwZWQgbm90YXRpb24gYW5kCisgICAgICogcmV0dXJuIFRSVUUuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGVzY2FwZVVucHJpbnRhYmxlKFN0cmluZ0J1ZmZlciByZXN1bHQsIGludCBjKSB7CisgICAgICAgIGlmIChpc1VucHJpbnRhYmxlKGMpKSB7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdcXCcpOworICAgICAgICAgICAgaWYgKChjICYgfjB4RkZGRikgIT0gMCkgeworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1UnKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKEhFWFsweEYmKGM+PjI4KV0pOworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoSEVYWzB4RiYoYz4+MjQpXSk7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChIRVhbMHhGJihjPj4yMCldKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKEhFWFsweEYmKGM+PjE2KV0pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd1Jyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKEhFWFsweEYmKGM+PjEyKV0pOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChIRVhbMHhGJihjPj44KV0pOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChIRVhbMHhGJihjPj40KV0pOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChIRVhbMHhGJmNdKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIGluIGEgc2V0LCBpZ25vcmluZyBxdW90ZWQgdGV4dC4KKyAgICAgKiBGb3IgZXhhbXBsZSwgaW4gdGhlIHN0cmluZyAiYWJjJ2hpZGUnaCIsIHRoZSAnaCcgaW4gImhpZGUiIHdpbGwgbm90IGJlCisgICAgICogZm91bmQgYnkgYSBzZWFyY2ggZm9yICJoIi4gIFVubGlrZSBTdHJpbmcuaW5kZXhPZigpLCB0aGlzIG1ldGhvZCBzZWFyY2hlcworICAgICAqIG5vdCBmb3IgYSBzaW5nbGUgY2hhcmFjdGVyLCBidXQgZm9yIGFueSBjaGFyYWN0ZXIgb2YgdGhlIHN0cmluZworICAgICAqIDxjb2RlPnNldE9mQ2hhcnM8L2NvZGU+LgorICAgICAqIEBwYXJhbSB0ZXh0IHRleHQgdG8gYmUgc2VhcmNoZWQKKyAgICAgKiBAcGFyYW0gc3RhcnQgdGhlIGJlZ2lubmluZyBpbmRleCwgaW5jbHVzaXZlOyA8Y29kZT4wIDw9IHN0YXJ0CisgICAgICogPD0gbGltaXQ8L2NvZGU+LgorICAgICAqIEBwYXJhbSBsaW1pdCB0aGUgZW5kaW5nIGluZGV4LCBleGNsdXNpdmU7IDxjb2RlPnN0YXJ0IDw9IGxpbWl0CisgICAgICogPD0gdGV4dC5sZW5ndGgoKTwvY29kZT4uCisgICAgICogQHBhcmFtIHNldE9mQ2hhcnMgc3RyaW5nIHdpdGggb25lIG9yIG1vcmUgZGlzdGluY3QgY2hhcmFjdGVycworICAgICAqIEByZXR1cm4gT2Zmc2V0IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gPGNvZGU+c2V0T2ZDaGFyczwvY29kZT4KKyAgICAgKiBmb3VuZCwgb3IgLTEgaWYgbm90IGZvdW5kLgorICAgICAqIEBzZWUgU3RyaW5nI2luZGV4T2YKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludCBxdW90ZWRJbmRleE9mKFN0cmluZyB0ZXh0LCBpbnQgc3RhcnQsIGludCBsaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBzZXRPZkNoYXJzKSB7CisgICAgICAgIGZvciAoaW50IGk9c3RhcnQ7IGk8bGltaXQ7ICsraSkgeworICAgICAgICAgICAgY2hhciBjID0gdGV4dC5jaGFyQXQoaSk7CisgICAgICAgICAgICBpZiAoYyA9PSBCQUNLU0xBU0gpIHsKKyAgICAgICAgICAgICAgICArK2k7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGMgPT0gQVBPU1RST1BIRSkgeworICAgICAgICAgICAgICAgIHdoaWxlICgrK2kgPCBsaW1pdAorICAgICAgICAgICAgICAgICAgICAgICAmJiB0ZXh0LmNoYXJBdChpKSAhPSBBUE9TVFJPUEhFKSB7fQorICAgICAgICAgICAgfSBlbHNlIGlmIChzZXRPZkNoYXJzLmluZGV4T2YoYykgPj0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBGb3IgZGVidWdnaW5nIHB1cnBvc2VzOyBmb3JtYXQgdGhlIGdpdmVuIHRleHQgaW4gdGhlIGZvcm0KKyAgICAgKiBhYWF7YmJifGNjY3xkZGR9ZWVlLCB3aGVyZSB0aGUge30gaW5kaWNhdGUgdGhlIGNvbnRleHQgc3RhcnQKKyAgICAgKiBhbmQgbGltaXQsIGFuZCB0aGUgfHwgaW5kaWNhdGUgdGhlIHN0YXJ0IGFuZCBsaW1pdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBmb3JtYXRJbnB1dChSZXBsYWNlYWJsZVN0cmluZyBpbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xpdGVyYXRvci5Qb3NpdGlvbiBwb3MpIHsKKyAgICAgICAgU3RyaW5nQnVmZmVyIGFwcGVuZFRvID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBmb3JtYXRJbnB1dChhcHBlbmRUbywgaW5wdXQsIHBvcyk7CisgICAgICAgIHJldHVybiBjb20uaWJtLmljdS5pbXBsLlV0aWxpdHkuZXNjYXBlKGFwcGVuZFRvLnRvU3RyaW5nKCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEZvciBkZWJ1Z2dpbmcgcHVycG9zZXM7IGZvcm1hdCB0aGUgZ2l2ZW4gdGV4dCBpbiB0aGUgZm9ybQorICAgICAqIGFhYXtiYmJ8Y2NjfGRkZH1lZWUsIHdoZXJlIHRoZSB7fSBpbmRpY2F0ZSB0aGUgY29udGV4dCBzdGFydAorICAgICAqIGFuZCBsaW1pdCwgYW5kIHRoZSB8fCBpbmRpY2F0ZSB0aGUgc3RhcnQgYW5kIGxpbWl0LgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nQnVmZmVyIGZvcm1hdElucHV0KFN0cmluZ0J1ZmZlciBhcHBlbmRUbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXBsYWNlYWJsZVN0cmluZyBpbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xpdGVyYXRvci5Qb3NpdGlvbiBwb3MpIHsKKyAgICAgICAgaWYgKDAgPD0gcG9zLmNvbnRleHRTdGFydCAmJgorICAgICAgICAgICAgcG9zLmNvbnRleHRTdGFydCA8PSBwb3Muc3RhcnQgJiYKKyAgICAgICAgICAgIHBvcy5zdGFydCA8PSBwb3MubGltaXQgJiYKKyAgICAgICAgICAgIHBvcy5saW1pdCA8PSBwb3MuY29udGV4dExpbWl0ICYmCisgICAgICAgICAgICBwb3MuY29udGV4dExpbWl0IDw9IGlucHV0Lmxlbmd0aCgpKSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFN0cmluZyBhLCBiLCBjLCBkLCBlOworICAgICAgICAgICAgLy9hID0gaW5wdXQuc3Vic3RyaW5nKDAsIHBvcy5jb250ZXh0U3RhcnQpOworICAgICAgICAgICAgYiA9IGlucHV0LnN1YnN0cmluZyhwb3MuY29udGV4dFN0YXJ0LCBwb3Muc3RhcnQpOworICAgICAgICAgICAgYyA9IGlucHV0LnN1YnN0cmluZyhwb3Muc3RhcnQsIHBvcy5saW1pdCk7CisgICAgICAgICAgICBkID0gaW5wdXQuc3Vic3RyaW5nKHBvcy5saW1pdCwgcG9zLmNvbnRleHRMaW1pdCk7CisgICAgICAgICAgICAvL2UgPSBpbnB1dC5zdWJzdHJpbmcocG9zLmNvbnRleHRMaW1pdCwgaW5wdXQubGVuZ3RoKCkpOworICAgICAgICAgICAgYXBwZW5kVG8uLy9hcHBlbmQoYSkuCisgICAgICAgICAgICAgICAgYXBwZW5kKCd7JykuYXBwZW5kKGIpLgorICAgICAgICAgICAgICAgIGFwcGVuZCgnfCcpLmFwcGVuZChjKS5hcHBlbmQoJ3wnKS5hcHBlbmQoZCkuCisgICAgICAgICAgICAgICAgYXBwZW5kKCd9JykKKyAgICAgICAgICAgICAgICAvLy5hcHBlbmQoZSkKKyAgICAgICAgICAgICAgICA7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhcHBlbmRUby5hcHBlbmQoIklOVkFMSUQgUG9zaXRpb24ge2NzPSIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcy5jb250ZXh0U3RhcnQgKyAiLCBzPSIgKyBwb3Muc3RhcnQgKyAiLCBsPSIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcy5saW1pdCArICIsIGNsPSIgKyBwb3MuY29udGV4dExpbWl0ICsgIn0gb24gIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBhcHBlbmRUbzsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb252ZW5pZW5jZSBtZXRob2QuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgZm9ybWF0SW5wdXQoUmVwbGFjZWFibGUgaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsaXRlcmF0b3IuUG9zaXRpb24gcG9zKSB7CisgICAgICAgIHJldHVybiBmb3JtYXRJbnB1dCgoUmVwbGFjZWFibGVTdHJpbmcpIGlucHV0LCBwb3MpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlbmllbmNlIG1ldGhvZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZ0J1ZmZlciBmb3JtYXRJbnB1dChTdHJpbmdCdWZmZXIgYXBwZW5kVG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVwbGFjZWFibGUgaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsaXRlcmF0b3IuUG9zaXRpb24gcG9zKSB7IAorICAgICAgICByZXR1cm4gZm9ybWF0SW5wdXQoYXBwZW5kVG8sIChSZXBsYWNlYWJsZVN0cmluZykgaW5wdXQsIHBvcyk7CisgICAgfQorCisgICAgLyoqCisgICAgKiBTaW1pbGFyIHRvIFN0cmluZ0J1ZmZlci5nZXRDaGFycywgdmVyc2lvbiAxLjMuCisgICAgKiBTaW5jZSBKREsgMS4yIGltcGxlbWVudHMgU3RyaW5nQnVmZmVyLmdldENoYXJzIGRpZmZlcmVudGx5LCB0aGlzIG1ldGhvZCAKKyAgICAqIGlzIGhlcmUgdG8gcHJvdmlkZSBjb25zaXN0ZW50IHJlc3VsdHMuCisgICAgKiBUbyBiZSByZW1vdmVkIGFmdGVyIEpESyAxLjIgY2Vhc2VkIHRvIGJlIHRoZSByZWZlcmVuY2UgcGxhdGZvcm0uCisgICAgKiBAcGFyYW0gc3JjIHNvdXJjZSBzdHJpbmcgYnVmZmVyCisgICAgKiBAcGFyYW0gc3JjQmVnaW4gb2Zmc2V0IHRvIHRoZSBzdGFydCBvZiB0aGUgc3JjIHRvIHJldHJpZXZlIGZyb20KKyAgICAqIEBwYXJhbSBzcmNFbmQgb2Zmc2V0IHRvIHRoZSBlbmQgb2YgdGhlIHNyYyB0byByZXRyaWV2ZSBmcm9tCisgICAgKiBAcGFyYW0gZHN0IGNoYXIgYXJyYXkgdG8gc3RvcmUgdGhlIHJldHJpZXZlZCBjaGFycworICAgICogQHBhcmFtIGRzdEJlZ2luIG9mZnNldCB0byB0aGUgc3RhcnQgb2YgdGhlIGRlc3RpbmF0aW9uIGNoYXIgYXJyYXkgdG8gCisgICAgKiAgICAgICAgICAgICAgICAgc3RvcmUgdGhlIHJldHJpZXZlZCBjaGFycworICAgICogQGRyYWZ0IHNpbmNlIElDVTRKIDIuMAorICAgICovCisgICAgcHVibGljIHN0YXRpYyB2b2lkIGdldENoYXJzKFN0cmluZ0J1ZmZlciBzcmMsIGludCBzcmNCZWdpbiwgaW50IHNyY0VuZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgZHN0W10sIGludCBkc3RCZWdpbikgCisgICAgewkKKyAgICAgICAgaWYgKHNyY0JlZ2luID09IHNyY0VuZCkgewkgICAgCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0JCisgICAgICAgIHNyYy5nZXRDaGFycyhzcmNCZWdpbiwgc3JjRW5kLCBkc3QsIGRzdEJlZ2luKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQXBwZW5kIGEgY2hhcmFjdGVyIHRvIGEgcnVsZSB0aGF0IGlzIGJlaW5nIGJ1aWx0IHVwLiAgVG8gZmx1c2gKKyAgICAgKiB0aGUgcXVvdGVCdWYgdG8gcnVsZSwgbWFrZSBvbmUgZmluYWwgY2FsbCB3aXRoIGlzTGl0ZXJhbCA9PSB0cnVlLgorICAgICAqIElmIHRoZXJlIGlzIG5vIGZpbmFsIGNoYXJhY3RlciwgcGFzcyBpbiAoaW50KS0xIGFzIGMuCisgICAgICogQHBhcmFtIHJ1bGUgdGhlIHN0cmluZyB0byBhcHBlbmQgdGhlIGNoYXJhY3RlciB0bworICAgICAqIEBwYXJhbSBjIHRoZSBjaGFyYWN0ZXIgdG8gYXBwZW5kLCBvciAoaW50KS0xIGlmIG5vbmUuCisgICAgICogQHBhcmFtIGlzTGl0ZXJhbCBpZiB0cnVlLCB0aGVuIHRoZSBnaXZlbiBjaGFyYWN0ZXIgc2hvdWxkIG5vdCBiZQorICAgICAqIHF1b3RlZCBvciBlc2NhcGVkLiAgVXN1YWxseSB0aGlzIG1lYW5zIGl0IGlzIGEgc3ludGFjdGljIGVsZW1lbnQKKyAgICAgKiBzdWNoIGFzID4gb3IgJAorICAgICAqIEBwYXJhbSBlc2NhcGVVbnByaW50YWJsZSBpZiB0cnVlLCB0aGVuIHVucHJpbnRhYmxlIGNoYXJhY3RlcnMKKyAgICAgKiBzaG91bGQgYmUgZXNjYXBlZCB1c2luZyBlc2NhcGVVbnByaW50YWJsZSgpLiAgVGhlc2UgZXNjYXBlcyB3aWxsCisgICAgICogYXBwZWFyIG91dHNpZGUgb2YgcXVvdGVzLgorICAgICAqIEBwYXJhbSBxdW90ZUJ1ZiBhIGJ1ZmZlciB3aGljaCBpcyB1c2VkIHRvIGJ1aWxkIHVwIHF1b3RlZAorICAgICAqIHN1YnN0cmluZ3MuICBUaGUgY2FsbGVyIHNob3VsZCBpbml0aWFsbHkgc3VwcGx5IGFuIGVtcHR5IGJ1ZmZlciwKKyAgICAgKiBhbmQgdGhlcmVhZnRlciBzaG91bGQgbm90IG1vZGlmeSB0aGUgYnVmZmVyLiAgVGhlIGJ1ZmZlciBzaG91bGQgYmUKKyAgICAgKiBjbGVhcmVkIG91dCBieSwgYXQgdGhlIGVuZCwgY2FsbGluZyB0aGlzIG1ldGhvZCB3aXRoIGEgbGl0ZXJhbAorICAgICAqIGNoYXJhY3RlciAod2hpY2ggbWF5IGJlIC0xKS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgYXBwZW5kVG9SdWxlKFN0cmluZ0J1ZmZlciBydWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGlzTGl0ZXJhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gZXNjYXBlVW5wcmludGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdCdWZmZXIgcXVvdGVCdWYpIHsKKyAgICAgICAgLy8gSWYgd2UgYXJlIGVzY2FwaW5nIHVucHJpbnRhYmxlcywgdGhlbiBlc2NhcGUgdGhlbSBvdXRzaWRlCisgICAgICAgIC8vIHF1b3Rlcy4gIFxcdSBhbmQgXFxVIGFyZSBub3QgcmVjb2duaXplZCB3aXRoaW4gcXVvdGVzLiAgVGhlIHNhbWUKKyAgICAgICAgLy8gbG9naWMgYXBwbGllcyB0byBsaXRlcmFscywgYnV0IGxpdGVyYWxzIGFyZSBuZXZlciBlc2NhcGVkLgorICAgICAgICBpZiAoaXNMaXRlcmFsIHx8CisgICAgICAgICAgICAoZXNjYXBlVW5wcmludGFibGUgJiYgVXRpbGl0eS5pc1VucHJpbnRhYmxlKGMpKSkgeworICAgICAgICAgICAgaWYgKHF1b3RlQnVmLmxlbmd0aCgpID4gMCkgeworICAgICAgICAgICAgICAgIC8vIFdlIHByZWZlciBiYWNrc2xhc2ggQVBPU1RST1BIRSB0byBkb3VibGUgQVBPU1RST1BIRQorICAgICAgICAgICAgICAgIC8vIChtb3JlIHJlYWRhYmxlLCBsZXNzIHNpbWlsYXIgdG8gIikgc28gaWYgdGhlcmUgYXJlCisgICAgICAgICAgICAgICAgLy8gZG91YmxlIEFQT1NUUk9QSEVzIGF0IHRoZSBlbmRzLCB3ZSBwdWxsIHRoZW0gb3V0c2lkZQorICAgICAgICAgICAgICAgIC8vIG9mIHRoZSBxdW90ZS4KKworICAgICAgICAgICAgICAgIC8vIElmIHRoZSBmaXJzdCB0aGluZyBpbiB0aGUgcXVvdGVCdWYgaXMgQVBPU1RST1BIRQorICAgICAgICAgICAgICAgIC8vIChkb3VibGVkKSB0aGVuIHB1bGwgaXQgb3V0LgorICAgICAgICAgICAgICAgIHdoaWxlIChxdW90ZUJ1Zi5sZW5ndGgoKSA+PSAyICYmCisgICAgICAgICAgICAgICAgICAgICAgIHF1b3RlQnVmLmNoYXJBdCgwKSA9PSBBUE9TVFJPUEhFICYmCisgICAgICAgICAgICAgICAgICAgICAgIHF1b3RlQnVmLmNoYXJBdCgxKSA9PSBBUE9TVFJPUEhFKSB7CisgICAgICAgICAgICAgICAgICAgIHJ1bGUuYXBwZW5kKEJBQ0tTTEFTSCkuYXBwZW5kKEFQT1NUUk9QSEUpOworICAgICAgICAgICAgICAgICAgICBxdW90ZUJ1Zi5kZWxldGUoMCwgMik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8vIElmIHRoZSBsYXN0IHRoaW5nIGluIHRoZSBxdW90ZUJ1ZiBpcyBBUE9TVFJPUEhFCisgICAgICAgICAgICAgICAgLy8gKGRvdWJsZWQpIHRoZW4gcmVtb3ZlIGFuZCBjb3VudCBpdCBhbmQgYWRkIGl0IGFmdGVyLgorICAgICAgICAgICAgICAgIGludCB0cmFpbGluZ0NvdW50ID0gMDsKKyAgICAgICAgICAgICAgICB3aGlsZSAocXVvdGVCdWYubGVuZ3RoKCkgPj0gMiAmJgorICAgICAgICAgICAgICAgICAgICAgICBxdW90ZUJ1Zi5jaGFyQXQocXVvdGVCdWYubGVuZ3RoKCktMikgPT0gQVBPU1RST1BIRSAmJgorICAgICAgICAgICAgICAgICAgICAgICBxdW90ZUJ1Zi5jaGFyQXQocXVvdGVCdWYubGVuZ3RoKCktMSkgPT0gQVBPU1RST1BIRSkgeworICAgICAgICAgICAgICAgICAgICBxdW90ZUJ1Zi5zZXRMZW5ndGgocXVvdGVCdWYubGVuZ3RoKCktMik7CisgICAgICAgICAgICAgICAgICAgICsrdHJhaWxpbmdDb3VudDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHF1b3RlQnVmLmxlbmd0aCgpID4gMCkgeworICAgICAgICAgICAgICAgICAgICBydWxlLmFwcGVuZChBUE9TVFJPUEhFKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gamRrIDEuMy4xIGRvZXMgbm90IGhhdmUgYXBwZW5kKFN0cmluZ0J1ZmZlcikgeWV0CisgICAgICAgICAgICAgICAgICAgIGlmKElDVURlYnVnLmlzSkRLMTRPckhpZ2hlcil7CisgICAgICAgICAgICAgICAgICAgICAgICBydWxlLmFwcGVuZChxdW90ZUJ1Zik7CisgICAgICAgICAgICAgICAgICAgIH1lbHNleworICAgICAgICAgICAgICAgICAgICAgICAgcnVsZS5hcHBlbmQocXVvdGVCdWYudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcnVsZS5hcHBlbmQoQVBPU1RST1BIRSk7CisgICAgICAgICAgICAgICAgICAgIHF1b3RlQnVmLnNldExlbmd0aCgwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgd2hpbGUgKHRyYWlsaW5nQ291bnQtLSA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgcnVsZS5hcHBlbmQoQkFDS1NMQVNIKS5hcHBlbmQoQVBPU1RST1BIRSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGMgIT0gLTEpIHsKKyAgICAgICAgICAgICAgICAvKiBTaW5jZSBzcGFjZXMgYXJlIGlnbm9yZWQgZHVyaW5nIHBhcnNpbmcsIHRoZXkgYXJlCisgICAgICAgICAgICAgICAgICogZW1pdHRlZCBvbmx5IGZvciByZWFkYWJpbGl0eS4gIFdlIGVtaXQgb25lIGhlcmUKKyAgICAgICAgICAgICAgICAgKiBvbmx5IGlmIHRoZXJlIGlzbid0IGFscmVhZHkgb25lIGF0IHRoZSBlbmQgb2YgdGhlCisgICAgICAgICAgICAgICAgICogcnVsZS4KKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBpZiAoYyA9PSAnICcpIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IGxlbiA9IHJ1bGUubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChsZW4gPiAwICYmIHJ1bGUuY2hhckF0KGxlbi0xKSAhPSAnICcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGUuYXBwZW5kKCcgJyk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFlc2NhcGVVbnByaW50YWJsZSB8fCAhVXRpbGl0eS5lc2NhcGVVbnByaW50YWJsZShydWxlLCBjKSkgeworICAgICAgICAgICAgICAgICAgICBVVEYxNi5hcHBlbmQocnVsZSwgYyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gRXNjYXBlICcgYW5kICdcJyBhbmQgZG9uJ3QgYmVnaW4gYSBxdW90ZSBqdXN0IGZvciB0aGVtCisgICAgICAgIGVsc2UgaWYgKHF1b3RlQnVmLmxlbmd0aCgpID09IDAgJiYKKyAgICAgICAgICAgICAgICAgKGMgPT0gQVBPU1RST1BIRSB8fCBjID09IEJBQ0tTTEFTSCkpIHsKKyAgICAgICAgICAgIHJ1bGUuYXBwZW5kKEJBQ0tTTEFTSCkuYXBwZW5kKChjaGFyKWMpOworICAgICAgICB9CisKKyAgICAgICAgLy8gU3BlY2lhbHMgKHByaW50YWJsZSBhc2NpaSB0aGF0IGlzbid0IFswLTlhLXpBLVpdKSBhbmQKKyAgICAgICAgLy8gd2hpdGVzcGFjZSBuZWVkIHF1b3RpbmcuICBBbHNvIGFwcGVuZCBzdHVmZiB0byBxdW90ZXMgaWYgd2UgYXJlCisgICAgICAgIC8vIGJ1aWxkaW5nIHVwIGEgcXVvdGVkIHN1YnN0cmluZyBhbHJlYWR5LgorICAgICAgICBlbHNlIGlmIChxdW90ZUJ1Zi5sZW5ndGgoKSA+IDAgfHwKKyAgICAgICAgICAgICAgICAgKGMgPj0gMHgwMDIxICYmIGMgPD0gMHgwMDdFICYmCisgICAgICAgICAgICAgICAgICAhKChjID49IDB4MDAzMC8qJzAnKi8gJiYgYyA8PSAweDAwMzkvKic5JyovKSB8fAorICAgICAgICAgICAgICAgICAgICAoYyA+PSAweDAwNDEvKidBJyovICYmIGMgPD0gMHgwMDVBLyonWicqLykgfHwKKyAgICAgICAgICAgICAgICAgICAgKGMgPj0gMHgwMDYxLyonYScqLyAmJiBjIDw9IDB4MDA3QS8qJ3onKi8pKSkgfHwKKyAgICAgICAgICAgICAgICAgVUNoYXJhY3RlclByb3BlcnR5LmlzUnVsZVdoaXRlU3BhY2UoYykpIHsKKyAgICAgICAgICAgIFVURjE2LmFwcGVuZChxdW90ZUJ1ZiwgYyk7CisgICAgICAgICAgICAvLyBEb3VibGUgJyB3aXRoaW4gYSBxdW90ZQorICAgICAgICAgICAgaWYgKGMgPT0gQVBPU1RST1BIRSkgeworICAgICAgICAgICAgICAgIHF1b3RlQnVmLmFwcGVuZCgoY2hhciljKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIE90aGVyd2lzZSBqdXN0IGFwcGVuZAorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFVURjE2LmFwcGVuZChydWxlLCBjKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEFwcGVuZCB0aGUgZ2l2ZW4gc3RyaW5nIHRvIHRoZSBydWxlLiAgQ2FsbHMgdGhlIHNpbmdsZS1jaGFyYWN0ZXIKKyAgICAgKiB2ZXJzaW9uIG9mIGFwcGVuZFRvUnVsZSBmb3IgZWFjaCBjaGFyYWN0ZXIuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyB2b2lkIGFwcGVuZFRvUnVsZShTdHJpbmdCdWZmZXIgcnVsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyB0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBpc0xpdGVyYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGVzY2FwZVVucHJpbnRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nQnVmZmVyIHF1b3RlQnVmKSB7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTx0ZXh0Lmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgIC8vIE9rYXkgdG8gcHJvY2VzcyBpbiAxNi1iaXQgY29kZSB1bml0cyBoZXJlCisgICAgICAgICAgICBhcHBlbmRUb1J1bGUocnVsZSwgdGV4dC5jaGFyQXQoaSksIGlzTGl0ZXJhbCwgZXNjYXBlVW5wcmludGFibGUsIHF1b3RlQnVmKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEdpdmVuIGEgbWF0Y2hlciByZWZlcmVuY2UsIHdoaWNoIG1heSBiZSBudWxsLCBhcHBlbmQgaXRzCisgICAgICogcGF0dGVybiBhcyBhIGxpdGVyYWwgdG8gdGhlIGdpdmVuIHJ1bGUuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyB2b2lkIGFwcGVuZFRvUnVsZShTdHJpbmdCdWZmZXIgcnVsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVNYXRjaGVyIG1hdGNoZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGVzY2FwZVVucHJpbnRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nQnVmZmVyIHF1b3RlQnVmKSB7CisgICAgICAgIGlmIChtYXRjaGVyICE9IG51bGwpIHsKKyAgICAgICAgICAgIGFwcGVuZFRvUnVsZShydWxlLCBtYXRjaGVyLnRvUGF0dGVybihlc2NhcGVVbnByaW50YWJsZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSwgZXNjYXBlVW5wcmludGFibGUsIHF1b3RlQnVmKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBDb21wYXJlcyAyIHVuc2lnbmVkIGludGVnZXJzCisgICAgICogQHBhcmFtIHNvdXJjZSAzMiBiaXQgdW5zaWduZWQgaW50ZWdlcgorICAgICAqIEBwYXJhbSB0YXJnZXQgMzIgYml0IHVuc2lnbmVkIGludGVnZXIKKyAgICAgKiBAcmV0dXJuIDAgaWYgZXF1YWxzLCAxIGlmIHNvdXJjZSBpcyBncmVhdGVyIHRoYW4gdGFyZ2V0IGFuZCAtMSAKKyAgICAgKiAgICAgICAgIG90aGVyd2lzZQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IGNvbXBhcmVVbnNpZ25lZChpbnQgc291cmNlLCBpbnQgdGFyZ2V0KSAKKyAgICB7CisgICAgICAgIGlmIChzb3VyY2UgPT0gdGFyZ2V0KSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBpZiAoc291cmNlID49IDApIHsKKyAgICAgICAgICAgIGlmIChzb3VyY2UgPCB0YXJnZXQgfHwgdGFyZ2V0IDwgMCkgeworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0gCisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoc291cmNlIDwgdGFyZ2V0ICYmIHRhcmdldCA8IDApIHsKKyAgICAgICAgICAgIC8vIHNvdXJjZSA8IDAsIHNvCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9CcmVha0l0ZXJhdG9yUnVsZXMuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQnJlYWtJdGVyYXRvclJ1bGVzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNzc1ODlmYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQnJlYWtJdGVyYXRvclJ1bGVzLmphdmEKQEAgLTAsMCArMSwzOTEgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQnJlYWtJdGVyYXRvclJ1bGVzLmphdmEsdiAkCisgKiAkRGF0ZTogMjAwMi8wMy8wMSAwMjozNzo0NyAkCisgKiAkUmV2aXNpb246IDEuMTAgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmltcGwuZGF0YTsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKKy8qKgorICogRGVmYXVsdCBicmVhay1pdGVyYXRvciBydWxlcy4gIFRoZXNlIHJ1bGVzIGFyZSBtb3JlIG9yIGxlc3MgZ2VuZXJhbCBmb3IKKyAqIGFsbCBsb2NhbGVzLCBhbHRob3VnaCB0aGVyZSBhcmUgcHJvYmFibHkgYSBmZXcgd2UncmUgbWlzc2luZy4gIFRoZQorICogYmVoYXZpb3IgY3VycmVudGx5IG1pbWljcyB0aGUgYmVoYXZpb3Igb2YgQnJlYWtJdGVyYXRvciBpbiBKREsgMS4yLgorICogVGhlcmUgYXJlIGtub3duIGRlZmljaWVuY2llcyBpbiB0aGlzIGJlaGF2aW9yLCBpbmNsdWRpbmcgdGhlIGZhY3QgdGhhdAorICogdGhlIGxvZ2ljIGZvciBoYW5kbGluZyBDSksgY2hhcmFjdGVycyB3b3JrcyBmb3IgSmFwYW5lc2UgYnV0IG5vdCBmb3IKKyAqIENoaW5lc2UsIGFuZCB0aGF0IHdlIGRvbid0IGN1cnJlbnRseSBoYXZlIGFuIGFwcHJvcHJpYXRlIGxvY2FsZSBmb3IKKyAqIFRoYWkuICBUaGUgcmVzb3VyY2VzIHdpbGwgZXZlbnR1YWxseSBiZSB1cGRhdGVkIHRvIGZpeCB0aGVzZSBwcm9ibGVtcy4KKyAqLworCisgLyogTW9kaWZpZWQgZm9yIEhpbmRpIDMvMS85OS4gKi8KKworcHVibGljIGNsYXNzIEJyZWFrSXRlcmF0b3JSdWxlcyBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisgICAgcHVibGljIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7CisgICAgICAgIHJldHVybiBjb250ZW50czsKKyAgICB9CisKKyAgICBzdGF0aWMgZmluYWwgT2JqZWN0W11bXSBjb250ZW50cyA9IHsKKyAgICAgICAgLy8gQnJlYWtJdGVyYXRvckNsYXNzZXMgbGlzdHMgdGhlIGNsYXNzIG5hbWVzIHRvIGluc3RhbnRpYXRlIGZvciBlYWNoCisgICAgICAgIC8vIGJ1aWx0LWluIHR5cGUgb2YgQnJlYWtJdGVyYXRvcgorICAgICAgICB7ICJCcmVha0l0ZXJhdG9yQ2xhc3NlcyIsCisgICAgICAgICAgICBuZXcgU3RyaW5nW10geyAiUnVsZUJhc2VkQnJlYWtJdGVyYXRvciIsICAgICAvLyBjaGFyYWN0ZXItYnJlYWsgaXRlcmF0b3IgY2xhc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIiwgICAgIC8vIHdvcmQtYnJlYWsgaXRlcmF0b3IgY2xhc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIiwgICAgIC8vIGxpbmUtYnJlYWsgaXRlcmF0b3IgY2xhc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIiwgICAgIC8vIHNlbnRlbmNlLWJyZWFrIGl0ZXJhdG9yIGNsYXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiUnVsZUJhc2VkQnJlYWtJdGVyYXRvciJ9ICAgICAvLyBUaXRsZS1DYXNlIGJyZWFrIGl0ZXJhdG9yIGNsYXNzCisgICAgICAgIH0sCisKKyAgICAgICAgLy8gcnVsZXMgZGVzY3JpYmluZyBob3cgdG8gYnJlYWsgYmV0d2VlbiBsb2dpY2FsIGNoYXJhY3RlcnMKKyAgICAgICAgeyAiQ2hhcmFjdGVyQnJlYWtSdWxlcyIsCisgICAgICAgICAgICAvLyBpZ25vcmUgbm9uLXNwYWNpbmcgbWFya3MgYW5kIGVuY2xvc2luZyBtYXJrcyAoc2luY2Ugd2UgbmV2ZXIKKyAgICAgICAgICAgIC8vIHB1dCBhIGJyZWFrIGJlZm9yZSBpZ25vcmUgY2hhcmFjdGVycywgdGhpcyBrZWVwcyBjb21iaW5pbmcKKyAgICAgICAgICAgIC8vIGFjY2VudHMgd2l0aCB0aGUgYmFzZSBjaGFyYWN0ZXJzIHRoZXkgbW9kaWZ5KQorICAgICAgICAgICAgLy8gRklYTUU6IHRoZSB2aXJhbWEgdGhpbmcgaXMgcHJvYmFibHkgYSBoYWNrLi4uCisgICAgICAgICAgICAgICIkZGV2YVZpcmFtYT1bXHUwOTRkXTsiCisgICAgICAgICAgICArICIkX2lnbm9yZV89W1tbOk1uOl0tJGRldmFWaXJhbWFdWzpNZTpdXTsiCisKKyAgICAgICAgICAgIC8vIG90aGVyIGNhdGVnb3J5IGRlZmluaXRpb25zCisgICAgICAgICAgICArICIkY2hvc2Vvbmc9W1x1MTEwMC1cdTExNWZdOyIKKyAgICAgICAgICAgICsgIiRqdW5nc2Vvbmc9W1x1MTE2MC1cdTExYTddOyIKKyAgICAgICAgICAgICsgIiRqb25nc2Vvbmc9W1x1MTFhOC1cdTExZmZdOyIKKyAgICAgICAgICAgICsgIiRzdXJyX2hpPVtcdWQ4MDAtXHVkYmZmXTsiCisgICAgICAgICAgICArICIkc3Vycl9sbz1bXHVkYzAwLVx1ZGZmZl07IgorCisgICAgICAgICAgICAvLyBicmVhayBhZnRlciBldmVyeSBjaGFyYWN0ZXIsIGV4Y2VwdCBhcyBmb2xsb3dzOgorICAgICAgICAgICAgKyAiLjsiCisKKyAgICAgICAgICAgIC8vIGtlZXAgQ1JMRiBzZXF1ZW5jZXMgdG9nZXRoZXIKKyAgICAgICAgICAgICsgIlxyXG47IgorCisgICAgICAgICAgICAvLyBrZWVwIHN1cnJvZ2F0ZSBwYWlycyB0b2dldGhlcgorICAgICAgICAgICAgKyAiJHN1cnJfaGkkc3Vycl9sbzsiCisKKyAgICAgICAgICAgIC8vIGtlZXAgSGFuZ3VsIHN5bGxhYmxlcyBzcGVsbGVkIG91dCB1c2luZyBjb25qb2luaW5nIGphbW8gdG9nZXRoZXIKKyAgICAgICAgICAgICsgIiRjaG9zZW9uZyokanVuZ3Nlb25nKiRqb25nc2VvbmcqOyIKKworICAgICAgICAgICAgLy8gcmV2aXNlZCBEZXZhbmFnYXJpIHN1cHBvcnQgLSBmdWxsIHN5bGxhYmxlcworICAgICAgICAgICAgLy8gc2ltcGxpZmllZCBieSBhbGxvd2luZyBzb21lIG5vbnNlbnNlIHN5bGxhYmxlcworICAgICAgICAgICAgLy8gRklYTUU6IG51a3RhLCBub24tc3BhY2luZyBtYXRyYXMsIGFuZCB0aGUgbW9kaWZpZXJzCisgICAgICAgICAgICAvLyBhcmUgYWxsIGlnbm9yYWJsZSwgc28gdGhleSBkb24ndCBuZWVkIHRvIGJlIG1lbnRpb25lZAorICAgICAgICAgICAgLy8gaGVyZS4uLiAoYnV0IHRoZSBydWxlcyByZWFkIGJldHRlciBpZiB0aGV5IGFyZS4uLikKKyAgICAgICAgICAgICsgIiRkZXZhTnVrdGE9W1x1MDkzY107IgorICAgICAgICAgICAgKyAiJGRldmFWb3dlbD1bXHUwOTA1LVx1MDkxNF07IgorICAgICAgICAgICAgKyAiJGRldmFNYXRyYT1bXHUwOTNlLVx1MDk0Y1x1MDk2Mlx1MDk2M107IgorICAgICAgICAgICAgKyAiJGRldmFDb25zb25hbnQ9W1x1MDkxNS1cdTA5MzlcdTA5NTgtXHUwOTVmXTsiCisgICAgICAgICAgICArICIkZGV2YU1vZGlmaWVyPVtcdTA5MDEtXHUwOTAzXHUwOTUxLVx1MDk1NF07IgorICAgICAgICAgICAgKyAiJHp3bmo9W1x1MjAwY107IgorICAgICAgICAgICAgKyAiJHp3aj1bXHUyMDBkXTsiCisKKyAgICAgICAgICAgIC8vIGNvbnNvbmFudCBmb2xsb3dlZCBvcHRpb25hbGx5IGJ5IGEgbnVrdGEKKyAgICAgICAgICAgICsgIiRkZXZhQ049KCRkZXZhQ29uc29uYW50JGRldmFOdWt0YT8pOyIKKworICAgICAgICAgICAgLy8gYSB2aXJhbWEgZm9sbG93ZWQgYnkgYW4gb3B0aW9uYWwgendqIG9yIHp3bmoKKyAgICAgICAgICAgICsgIiRkZXZhSm9pbj0oJGRldmFWaXJhbWFbJHp3aiR6d25qXT8pOyIKKworICAgICAgICAgICAgLy8gYSBzeWxsYWJsZSB3aXRoIGF0IGxlYXN0IG9uZSBjb25zb25hbnQKKyAgICAgICAgICAgICsgIigkZGV2YUNOJGRldmFKb2luKSokZGV2YUNOKCRkZXZhSm9pbnwkZGV2YU1hdHJhPyRkZXZhTW9kaWZpZXIqKTsiCisKKyAgICAgICAgICAgIC8vIGEgc3lsbGFibGUgd2l0aG91dCBjb25zb25hbnRzCisgICAgICAgICAgICArICIkZGV2YVZvd2VsJGRldmFNb2RpZmllcio7IgorICAgICAgICB9LAorCisgICAgICAgIC8vIGRlZmF1bHQgcnVsZXMgZm9yIGZpbmRpbmcgd29yZCBib3VuZGFyaWVzCisgICAgICAgIHsgIldvcmRCcmVha1J1bGVzIiwKKworICAgICAgICAgICAgLy8gU3Vycm9nYXRlcy4gIFVudGlsIGJldHRlciBzdXBwb3J0IGlzIGF2YWlsYWJsZSwgaWdub3JlIGxvdyBzdXJyb2dhdGVzCisgICAgICAgICAgICAvLyAgICAgICAgICAgICAgYW5kIGNsYXNzaWZ5IGhpZ2ggc3Vycm9nYXRlcyBhY2NvcmRpbmcgdG8gdGhlIGNoYXJhY3RlcnMgd2l0aGluIHRoZSBibG9jay4KKyAgICAgICAgICAgICAgIiRzdXJyX2xvPVtcdWRjMDAtXHVkZmZmXTsiCisgICAgICAgICAgICArICIkc3Vycl9oaV9sZXQ9W1x1ZDgwMFx1ZDgwMVx1ZDgzNFx1ZDgzNV07IiAgIC8vIEhpIFN1cnJvZ2F0ZXMgZm9yIE9sZCBJdGFsaWMsIEdvdGhpYywgRGVzZXJldCwgTXVzaWMsIE1hdGgKKyAgICAgICAgICAgICsgIiRzdXJyX2hpX2lkZW89W1x1ZDg0MC1cdWQ4ODBdOyIgICAgICAgICAgICAgLy8gSGkgU3Vycm9nYXRlcyBmb3IgQ0pLCisJCQkrICIkc3Vycl9oaV90YWc9W1x1ZGI0MF07IiAgICAgICAgICAgICAgICAgICAgIC8vIEhpIFN1cnJvZ2F0ZXMgZm9yIFRhZ3MKKyAgICAgICAgICAgICsgIiRzdXJyX2hpX3B1YT1bXHVkYjgwLVx1ZGJmZl07IiAgICAgICAgICAgICAgLy8gSGkgU3Vycm9nYXRlcyBmb3IgUHJpdmF0ZSBVc2UuCisKKyAgICAgICAgICAgIC8vIFByaXZhdGUgVXNlIEFyZWEuICBUcmVhdCBsaWtlIGlkZW9ncmFwaHMuCisJCQkrICIkcHVhPVtcdWUwMDAtXHVmOGZmJHN1cnJfaGlfcHVhXTsiCisKKyAgICAgICAgICAgIC8vIGlnbm9yZSBub24tc3BhY2luZyBtYXJrcywgZW5jbG9zaW5nIG1hcmtzLCBhbmQgZm9ybWF0IGNoYXJhY3RlcnMsCisgICAgICAgICAgICAvLyBhbGwgb2Ygd2hpY2ggc2hvdWxkIG5vdCBpbmZsdWVuY2UgdGhlIGFsZ29yaXRobQorICAgICAgICAgICAgKyAiJF9pZ25vcmVfPVtbOk1uOl1bOk1lOl1bOkNmOl0kc3Vycl9sbyRzdXJyX2hpX3RhZ107IgorCisgICAgICAgICAgICAvLyBIaW5kaSBwaHJhc2Ugc2VwYXJhdG9yLCBrYW5qaSwga2F0YWthbmEsIGhpcmFnYW5hLCBDSksgZGlhY3JpdGljYWxzLAorICAgICAgICAgICAgLy8gb3RoZXIgbGV0dGVycywgYW5kIGRpZ2l0cworICAgICAgICAgICAgKyAiJGRhbmRhPVtcdTA5NjRcdTA5NjVdOyIKKyAgICAgICAgICAgICsgIiRrYW5qaT1bXHUzMDA1XHUzNDAwLVx1NGRiNVx1NGUwMC1cdTlmYTVcdWY5MDAtXHVmYTZhJHN1cnJfaGlfaWRlbyRwdWFdOyIKKyAgICAgICAgICAgICsgIiRrYXRhPVtcdTMwOTktXHUzMDljXHUzMGExLVx1MzBmZV07IgorICAgICAgICAgICAgKyAiJGhpcmE9W1x1MzA0MS1cdTMwOWVcdTMwZmNdOyIKKyAgICAgICAgICAgICsgIiRsZXQ9W1tbOkw6XVs6TWM6XSRzdXJyX2hpX2xldF0tWyRrYW5qaSRrYXRhJGhpcmFdXTsiCisgICAgICAgICAgICArICIkZGd0PVs6TjpdOyIKKworICAgICAgICAgICAgLy8gcHVuY3R1YXRpb24gdGhhdCBjYW4gb2NjdXIgaW4gdGhlIG1pZGRsZSBvZiBhIHdvcmQ6IGN1cnJlbnRseQorICAgICAgICAgICAgLy8gZGFzaGVzLCBhcG9zdHJvcGhlcywgcXVvdGF0aW9uIG1hcmtzLCBhbmQgcGVyaW9kcworICAgICAgICAgICAgKyAiJG1pZF93b3JkPVtbOlBkOl1cdTAwYWRcdTIwMjdcXFwiXFxcJ1xcLl07IgorCisgICAgICAgICAgICAvLyBwdW5jdHVhdGlvbiB0aGF0IGNhbiBvY2N1ciBpbiB0aGUgbWlkZGxlIG9mIGEgbnVtYmVyOiBjdXJyZW50bHkKKyAgICAgICAgICAgIC8vIGFwb3N0cm9waGVzLCBxb3V0YXRpb24gbWFya3MsIHBlcmlvZHMsIGNvbW1hcywgYW5kIHRoZSBBcmFiaWMKKyAgICAgICAgICAgIC8vIGRlY2ltYWwgcG9pbnQKKyAgICAgICAgICAgICsgIiRtaWRfbnVtPVtcXFwiXFxcJ1xcLFx1MDY2YlxcLl07IgorCisgICAgICAgICAgICAvLyBwdW5jdHVhdGlvbiB0aGF0IGNhbiBvY2N1ciBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbnVtYmVyOiBjdXJyZW50bHkKKyAgICAgICAgICAgIC8vIHRoZSBwZXJpb2QsIHRoZSBudW1iZXIgc2lnbiwgYW5kIGFsbCBjdXJyZW5jeSBzeW1ib2xzIGV4Y2VwdCB0aGUgY2VudHMgc2lnbgorICAgICAgICAgICAgKyAiJHByZV9udW09W1tbOlNjOl0tW1x1MDBhMl1dXFwjXFwuXTsiCisKKyAgICAgICAgICAgIC8vIHB1bmN0dWF0aW9uIHRoYXQgY2FuIG9jY3VyIGF0IHRoZSBlbmQgb2YgYSBudW1iZXI6IGN1cnJlbnRseQorICAgICAgICAgICAgLy8gdGhlIHBlcmNlbnQsIHBlci10aG91c2FuZCwgcGVyLXRlbi10aG91c2FuZCwgYW5kIEFyYWJpYyBwZXJjZW50CisgICAgICAgICAgICAvLyBzaWducywgdGhlIGNlbnRzIHNpZ24sIGFuZCB0aGUgYW1wZXJzYW5kCisgICAgICAgICAgICArICIkcG9zdF9udW09W1xcJVxcJlx1MDBhMlx1MDY2YVx1MjAzMFx1MjAzMV07IgorCisgICAgICAgICAgICAvLyBsaW5lIHNlcGFyYXRvcnM6IGN1cnJlbnRseSBMRiwgRkYsIFBTLCBhbmQgTFMKKyAgICAgICAgICAgICsgIiRscz1bXG5cdTAwMGNcdTIwMjhcdTIwMjldOyIKKworICAgICAgICAgICAgLy8gd2hpdGVzcGFjZTogYWxsIHNwYWNlIHNlcGFyYXRvcnMgYW5kIHRoZSB0YWIgY2hhcmFjdGVyCisgICAgICAgICAgICArICIkd3M9W1s6WnM6XVx0XTsiCisKKyAgICAgICAgICAgIC8vIGEgd29yZCBpcyBhIHNlcXVlbmNlIG9mIGxldHRlcnMgdGhhdCBtYXkgY29udGFpbiBpbnRlcm5hbAorICAgICAgICAgICAgLy8gcHVuY3R1YXRpb24sIGFzIGxvbmcgYXMgaXQgYmVnaW5zIGFuZCBlbmRzIHdpdGggYSBsZXR0ZXIgYW5kCisgICAgICAgICAgICAvLyBuZXZlciBjb250YWlucyB0d28gcHVuY3R1YXRpb24gbWFya3MgaW4gYSByb3cKKyAgICAgICAgICAgICsgIiR3b3JkPSgkbGV0KygkbWlkX3dvcmQkbGV0KykqJGRhbmRhPyk7IgorCisgICAgICAgICAgICAvLyBhIG51bWJlciBpcyBhIHNlcXVlbmNlIG9mIGRpZ2l0cyB0aGF0IG1heSBjb250YWluIGludGVybmFsCisgICAgICAgICAgICAvLyBwdW5jdHVhdGlvbiwgYXMgbG9uZyBhcyBpdCBiZWdpbnMgYW5kIGVuZHMgd2l0aCBhIGRpZ2l0IGFuZAorICAgICAgICAgICAgLy8gbmV2ZXIgY29udGFpbnMgdHdvIHB1bmN0dWF0aW9uIG1hcmtzIGluIGEgcm93LgorICAgICAgICAgICAgKyAiJG51bWJlcj0oJGRndCsoJG1pZF9udW0kZGd0KykqKTsiCisKKyAgICAgICAgICAgIC8vIGJyZWFrIGFmdGVyIGV2ZXJ5IGNoYXJhY3Rlciwgd2l0aCB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbnMKKyAgICAgICAgICAgIC8vICh0aGlzIHdpbGwgY2F1c2UgcHVuY3R1YXRpb24gbWFya3MgdGhhdCBhcmVuJ3QgY29uc2lkZXJlZAorICAgICAgICAgICAgLy8gcGFydCBvZiB3b3JkcyBvciBudW1iZXJzIHRvIGJlIHRyZWF0ZWQgYXMgd29yZHMgdW50byB0aGVtc2VsdmVzKQorICAgICAgICAgICAgKyAiLjsiCisKKyAgICAgICAgICAgIC8vIGtlZXAgdG9nZXRoZXIgYW55IHNlcXVlbmNlIG9mIGNvbnRpZ3VvdXMgd29yZHMgYW5kIG51bWJlcnMKKyAgICAgICAgICAgIC8vIChpbmNsdWRpbmcganVzdCBvbmUgb2YgZWl0aGVyKSwgcGx1cyBhbiBvcHRpb25hbCB0cmFpbGluZworICAgICAgICAgICAgLy8gbnVtYmVyLXN1ZmZpeCBjaGFyYWN0ZXIKKyAgICAgICAgICAgICsgIiR3b3JkPygkbnVtYmVyJHdvcmQpKigkbnVtYmVyJHBvc3RfbnVtPyk/OyIKKworICAgICAgICAgICAgLy8ga2VlcCB0b2dldGhlciBhbmQgc2VxdWVuY2Ugb2YgY29udGlndW91cyB3b3JkcyBhbmQgbnVtYmVycworICAgICAgICAgICAgLy8gdGhhdCBzdGFydHMgd2l0aCBhIG51bWJlci1wcmVmaXggY2hhcmFjdGVyIGFuZCBhIG51bWJlciwKKyAgICAgICAgICAgIC8vIGFuZCBtYXkgZW5kIHdpdGggYSBudW1iZXItc3VmZml4IGNoYXJhY3RlcgorICAgICAgICAgICAgKyAiJHByZV9udW0oJG51bWJlciR3b3JkKSooJG51bWJlciRwb3N0X251bT8pPzsiCisKKyAgICAgICAgICAgIC8vIGtlZXAgdG9nZXRoZXIgcnVucyBvZiB3aGl0ZXNwYWNlIChvcHRpb25hbGx5IHdpdGggYSBzaW5nbGUgdHJhaWxpbmcKKyAgICAgICAgICAgIC8vIGxpbmUgc2VwYXJhdG9yIG9yIENSTEYgc2VxdWVuY2UpCisgICAgICAgICAgICArICIkd3MqXHI/JGxzPzsiCisKKyAgICAgICAgICAgIC8vIGtlZXAgdG9nZXRoZXIgcnVucyBvZiBLYXRha2FuYQorICAgICAgICAgICAgKyAiJGthdGEqOyIKKworICAgICAgICAgICAgLy8ga2VlcCB0b2dldGhlciBydW5zIG9mIEhpcmFnYW5hCisgICAgICAgICAgICArICIkaGlyYSo7IgorCisgICAgICAgICAgICAvLyBrZWVwIHRvZ2V0aGVyIHJ1bnMgb2YgS2FuamkKKyAgICAgICAgICAgICsgIiRrYW5qaSo7IgorICAgICAgICB9LAorCisgICAgICAgIC8vIGRlZmF1bHQgcnVsZXMgZm9yIGRldGVybWluaW5nIGxlZ2FsIGxpbmUtYnJlYWtpbmcgcG9zaXRpb25zCisgICAgICAgIHsgIkxpbmVCcmVha1J1bGVzIiwKKyAgICAgICAgICAgIC8vIFN1cnJvZ2F0ZXMuICBVbnRpbCBiZXR0ZXIgc3VwcG9ydCBpcyBhdmFpbGFibGUsIGlnbm9yZSBsb3cgc3Vycm9nYXRlcworICAgICAgICAgICAgLy8gICAgICAgICAgICAgIGFuZCBjbGFzc2lmeSBoaWdoIHN1cnJvZ2F0ZXMgYWNjb3JkaW5nIHRvIHRoZSBjaGFyYWN0ZXJzIHdpdGhpbiB0aGUgYmxvY2suCisgICAgICAgICAgICAgICIkc3Vycl9sbz1bXHVkYzAwLVx1ZGZmZl07IgorICAgICAgICAgICAgKyAiJHN1cnJfaGlfbGV0PVtcdWQ4MDBcdWQ4MDFcdWQ4MzRcdWQ4MzVdOyIgICAvLyBIaSBTdXJyb2dhdGVzIGZvciBPbGQgSXRhbGljLCBHb3RoaWMsIERlc2VyZXQsIE11c2ljLCBNYXRoCisgICAgICAgICAgICArICIkc3Vycl9oaV9pZGVvPVtcdWQ4NDAtXHVkODgwXTsiICAgICAgICAgICAgIC8vIEhpIFN1cnJvZ2F0ZXMgZm9yIENKSworCQkJKyAiJHN1cnJfaGlfdGFnPVtcdWRiNDBdOyIgICAgICAgICAgICAgICAgICAgICAvLyBIaSBTdXJyb2dhdGVzIGZvciBUYWdzCisgICAgICAgICAgICArICIkc3Vycl9oaV9wdWE9W1x1ZGI4MC1cdWRiZmZdOyIgICAgICAgICAgICAgIC8vIEhpIFN1cnJvZ2F0ZXMgZm9yIFByaXZhdGUgVXNlLgorCisgICAgICAgICAgICAvLyBQcml2YXRlIFVzZSBBcmVhLiAgVHJlYXQgbGlrZSBpZGVvZ3JhcGhzLgorIAkJCSsgIiRwdWE9W1x1ZTAwMC1cdWY4ZmYkc3Vycl9oaV9wdWFdOyIKKworICAgICAgICAgICAgLy8gaWdub3JlIG5vbi1zcGFjaW5nIG1hcmtzLCBlbmNsb3NpbmcgbWFya3MsIGFuZCBmb3JtYXQgY2hhcmFjdGVycworICAgICAgICAgICAgKyAiJF9pZ25vcmVfPVtbOk1uOl1bOk1lOl1bOkNmOl0kc3Vycl9sbyRzdXJyX2hpX3RhZ107IgorCisgICAgICAgICAgICAvLyBIaW5kaSBwaHJhc2Ugc2VwYXJhdG9ycworICAgICAgICAgICAgKyAiJGRhbmRhPVtcdTA5NjRcdTA5NjVdOyIKKworICAgICAgICAgICAgLy8gY2hhcmFjdGVycyB0aGF0IGFsd2F5cyBjYXVzZSBhIGJyZWFrOiBFVFgsIHRhYiwgTEYsIEZGLCBMUywgYW5kIFBTCisgICAgICAgICAgICArICIkYnJlYWs9W1x1MDAwM1x0XG5cZlx1MjAyOFx1MjAyOV07IgorCisgICAgICAgICAgICAvLyBjaGFyYWN0ZXJzIHRoYXQgYWx3YXlzIHByZXZlbnQgYSBicmVhazogdGhlIG5vbi1icmVha2luZyBzcGFjZQorICAgICAgICAgICAgLy8gYW5kIHNpbWlsYXIgY2hhcmFjdGVycworICAgICAgICAgICAgKyAiJG5ic3A9W1x1MDBhMFx1MjAwN1x1MjAxMVx1ZmVmZl07IgorCisgICAgICAgICAgICAvLyB3aGl0ZXNwYWNlOiBzcGFjZSBzZXBhcmF0b3JzIGFuZCBjb250cm9sIGNoYXJhY3RlcnMsIGV4Y2VwdCBmb3IKKyAgICAgICAgICAgIC8vIENSIGFuZCB0aGUgb3RoZXIgY2hhcmFjdGVycyBtZW50aW9uZWQgYWJvdmUKKyAgICAgICAgICAgICsgIiRzcGFjZT1bW1s6WnM6XVs6Q2M6XV0tWyRuYnNwJGJyZWFrXHJdXTsiCisKKyAgICAgICAgICAgIC8vIGRhc2hlczogZGFzaCBwdW5jdHVhdGlvbiBhbmQgdGhlIGRpc2NyZXRpb25hcnkgaHlwaGVuLCBleGNlcHQgZm9yCisgICAgICAgICAgICAvLyBub24tYnJlYWtpbmcgaHlwaGVucworICAgICAgICAgICAgKyAiJGRhc2g9W1tbOlBkOl1cdTAwYWRdLVskbmJzcF1dOyIKKworICAgICAgICAgICAgLy8gY2hhcmFjdGVycyB0aGF0IHN0aWNrIHRvIGEgd29yZCBpZiB0aGV5IHByZWNlZGUgaXQ6IGN1cnJlbmN5IHN5bWJvbHMKKyAgICAgICAgICAgIC8vIChleGNlcHQgdGhlIGNlbnRzIHNpZ24pIGFuZCBzdGFydGluZyBwdW5jdHVhdGlvbgorICAgICAgICAgICAgKyAiJHByZV93b3JkPVtbWzpTYzpdLVtcdTAwYTJdXVs6UHM6XVs6UGk6XVxcXCJcXFwnXTsiCisKKyAgICAgICAgICAgIC8vIGNoYXJhY3RlcnMgdGhhdCBzdGljayB0byBhIHdvcmQgaWYgdGhleSBmb2xsb3cgaXQ6IGVuZGluZyBwdW5jdHVhdGlvbiwKKyAgICAgICAgICAgIC8vIG90aGVyIHB1bmN0dWF0aW9uIHRoYXQgdXN1YWxseSBvY2N1cnMgYXQgdGhlIGVuZCBvZiBhIHNlbnRlbmNlLAorICAgICAgICAgICAgLy8gc21hbGwgS2FuYSBjaGFyYWN0ZXJzLCBzb21lIENKSyBkaWFjcml0aWNzLCBldGMuCisgICAgICAgICAgICArICIkcG9zdF93b3JkPVtbOlBlOl1bOlBmOl1cXCFcXFwiXFxcJ1xcJVxcLlxcLFxcOlxcO1xcP1x1MDBhMlx1MDBiMFx1MDY2YVx1MjAzMC1cdTIwMzQiCisgICAgICAgICAgICAgICAgICAgICsgIlx1MjEwM1x1MjEwNVx1MjEwOVx1MzAwMVx1MzAwMlx1MzAwNVx1MzA0MVx1MzA0M1x1MzA0NVx1MzA0N1x1MzA0OVx1MzA2MyIKKyAgICAgICAgICAgICAgICAgICAgKyAiXHUzMDgzXHUzMDg1XHUzMDg3XHUzMDhlXHUzMDk5LVx1MzA5ZVx1MzBhMVx1MzBhM1x1MzBhNVx1MzBhN1x1MzBhOSIKKyAgICAgICAgICAgICAgICAgICAgKyAiXHUzMGMzXHUzMGUzXHUzMGU1XHUzMGU3XHUzMGVlXHUzMGY1XHUzMGY2XHUzMGZjLVx1MzBmZVx1ZmYwMVx1ZmYwYyIKKyAgICAgICAgICAgICAgICAgICAgKyAiXHVmZjBlXHVmZjFmXTsiCisKKyAgICAgICAgICAgIC8vIEthbmppOiBhY3R1YWxseSBpbmNsdWRlcyBib3RoIEthbmppIGFuZCBLYW5hLCBleGNlcHQgZm9yIHNtYWxsIEthbmEgYW5kCisgICAgICAgICAgICAvLyBDSksgZGlhY3JpdGljcworICAgICAgICAgICAgKyAiJGthbmppPVtbJHN1cnJfaGlfaWRlbyRwdWFcdTM0MDAtXHU0ZGI1XHU0ZTAwLVx1OWZhNVx1ZjkwMC1cdWZhNmFcdTMwNDEtXHUzMDk0XHUzMGExLVx1MzBmYV0tWyRwb3N0X3dvcmQkX2lnbm9yZV9dXTsiCisKKyAgICAgICAgICAgIC8vIGRpZ2l0cworICAgICAgICAgICAgKyAiJGRpZ2l0PVtbOk5kOl1bOk5vOl1dOyIKKworICAgICAgICAgICAgLy8gcHVuY3R1YXRpb24gdGhhdCBjYW4gb2NjdXIgaW4gdGhlIG1pZGRsZSBvZiBhIG51bWJlcjogcGVyaW9kcyBhbmQgY29tbWFzCisgICAgICAgICAgICArICIkbWlkX251bT1bXFwuXFwsXTsiCisKKyAgICAgICAgICAgIC8vIGV2ZXJ5dGhpbmcgbm90IG1lbnRpb25lZCBhYm92ZSwgcGx1cyB0aGUgcXVvdGUgbWFya3MgKHdoaWNoIGFyZSBib3RoCisgICAgICAgICAgICAvLyA8cHJlLXdvcmQ+LCA8cG9zdC13b3JkPiwgYW5kIDxjaGFyPikKKyAgICAgICAgICAgICsgIiRjaGFyPVteJGJyZWFrJHNwYWNlJGRhc2gka2FuamkkbmJzcCRfaWdub3JlXyRwcmVfd29yZCRwb3N0X3dvcmQkbWlkX251bSRkYW5kYVxyXFxcIlxcXCddOyIKKworICAgICAgICAgICAgLy8gYSAibnVtYmVyIiBpcyBhIHJ1biBvZiBwcmVmaXggY2hhcmFjdGVycyBhbmQgZGFzaGVzLCBmb2xsb3dlZCBieSBvbmUgb3IKKyAgICAgICAgICAgIC8vIG1vcmUgZGlnaXRzIHdpdGggaXNvbGF0ZWQgbnVtYmVyLXB1bmN0dWF0aW9uIGNoYXJhY3RlcnMgaW50ZXJzcGVyc2VkCisgICAgICAgICAgICArICIkbnVtYmVyPShbJHByZV93b3JkJGRhc2hdKiRkaWdpdCsoJG1pZF9udW0kZGlnaXQrKSopOyIKKworICAgICAgICAgICAgLy8gdGhlIGJhc2ljIGNvcmUgb2YgYSB3b3JkIGNhbiBiZSBlaXRoZXIgYSAibnVtYmVyIiBhcyBkZWZpbmVkIGFib3ZlLCBhIHNpbmdsZQorICAgICAgICAgICAgLy8gIkthbmppIiBjaGFyYWN0ZXIsIG9yIGEgcnVuIG9mIGFueSBudW1iZXIgb2Ygbm90LWV4cGxpY2l0bHktbWVudGlvbmVkCisgICAgICAgICAgICAvLyBjaGFyYWN0ZXJzICh0aGlzIGluY2x1ZGVzIExhdGluIGxldHRlcnMpCisgICAgICAgICAgICArICIkd29yZF9jb3JlPShbJHByZV93b3JkJGNoYXJdKnwka2Fuaml8JG51bWJlcik7IgorCisgICAgICAgICAgICAvLyBhIHdvcmQgbWF5IGVuZCB3aXRoIGFuIG9wdGlvbmFsIHN1ZmZpeCB0aGF0IGJlIGVpdGhlciBhIHJ1biBvZiBvbmUgb3IKKyAgICAgICAgICAgIC8vIG1vcmUgZGFzaGVzIG9yIGEgcnVuIG9mIHdvcmQtc3VmZml4IGNoYXJhY3RlcnMsIGZvbGxvd2VkIGJ5IGFuIG9wdGlvbmFsCisgICAgICAgICAgICAvLyBydW4gb2Ygd2hpdGVzcGFjZQorICAgICAgICAgICAgKyAiJHdvcmRfc3VmZml4PSgoJGRhc2grfCRwb3N0X3dvcmQqKSRzcGFjZSopOyIKKworICAgICAgICAgICAgLy8gYSB3b3JkLCB0aHVzLCBpcyBhbiBvcHRpb25hbCBydW4gb2Ygd29yZC1wcmVmaXggY2hhcmFjdGVycywgZm9sbG93ZWQgYnkKKyAgICAgICAgICAgIC8vIGEgd29yZCBjb3JlIGFuZCBhIHdvcmQgc3VmZml4ICh0aGUgc3ludGF4IG9mIDx3b3JkLWNvcmU+IGFuZCA8d29yZC1zdWZmaXg+CisgICAgICAgICAgICAvLyBhY3R1YWxseSBhbGxvd3MgZWl0aGVyIG9mIHRoZW0gdG8gbWF0Y2ggdGhlIGVtcHR5IHN0cmluZywgcHV0dGluZyBhIGJyZWFrCisgICAgICAgICAgICAvLyBiZXR3ZWVuIHRoaW5ncyBsaWtlICIpKCIgb3IgImFhYShhYWEiCisgICAgICAgICAgICArICIkd29yZD0oJHByZV93b3JkKiR3b3JkX2NvcmUkd29yZF9zdWZmaXgpOyIKKworICAgICAgICAgICAgLy8gZmluYWxseSwgdGhlIHJ1bGUgdGhhdCBkb2VzIHRoZSB3b3JrOiBLZWVwIHRvZ2V0aGVyIGFueSBydW4gb2Ygd29yZHMgdGhhdAorICAgICAgICAgICAgLy8gYXJlIGpvaW5lZCBieSBydW5zIG9mIG9uZSBvZiBtb3JlIG5vbi1zcGFjaW5nIG1hcmsuICBBbHNvIGtlZXAgYSB0cmFpbGluZworICAgICAgICAgICAgLy8gbGluZS1icmVhayBjaGFyYWN0ZXIgb3IgQ1JMRiBjb21iaW5hdGlvbiB3aXRoIHRoZSB3b3JkLiAgKGxpbmUgc2VwYXJhdG9ycworICAgICAgICAgICAgLy8gIndpbiIgb3ZlciBuYnNwJ3MpCisgICAgICAgICAgICArICIkd29yZCgkbmJzcCskd29yZCkqXHI/JGJyZWFrPzsiCisgICAgICAgIH0sCisKKyAgICAgICAgLy8gZGVmYXVsdCBydWxlcyBmb3IgZmluZGluZyBzZW50ZW5jZSBib3VuZGFyaWVzCisgICAgICAgIHsgIlNlbnRlbmNlQnJlYWtSdWxlcyIsCisgICAgICAgICAgICAvLyBTdXJyb2dhdGVzLiAgVW50aWwgYmV0dGVyIHN1cHBvcnQgaXMgYXZhaWxhYmxlLCBpZ25vcmUgbG93IHN1cnJvZ2F0ZXMKKyAgICAgICAgICAgIC8vICAgICAgICAgICAgICBhbmQgY2xhc3NpZnkgaGlnaCBzdXJyb2dhdGVzIGFjY29yZGluZyB0byB0aGUgY2hhcmFjdGVycyB3aXRoaW4gdGhlIGJsb2NrLgorICAgICAgICAgICAgICAiJHN1cnJfbG89W1x1ZGMwMC1cdWRmZmZdOyIKKworICAgICAgICAgICAgLy8gaWdub3JlIG5vbi1zcGFjaW5nIG1hcmtzLCBlbmNsb3NpbmcgbWFya3MsIGFuZCBmb3JtYXQgY2hhcmFjdGVycworICAgICAgICAgICAgKyAiJF9pZ25vcmVfPVtbOk1uOl1bOk1lOl1bOkNmOl0kc3Vycl9sb107IgorCisgICAgICAgICAgICAvLyBsb3dlcmNhc2UgbGV0dGVycworICAgICAgICAgICAgKyAiJGxjPVs6TGw6XTsiCisKKyAgICAgICAgICAgIC8vIHVwcGVyY2FzZSBMYXRpbiBsZXR0ZXJzCisgICAgICAgICAgICArICIkdWNMYXRpbj1bQS1aXTsiCisKKyAgICAgICAgICAgIC8vIHdoaXRlc3BhY2UgKGxpbmUgc2VwYXJhdG9ycyBhcmUgdHJlYXRlZCBhcyB3aGl0ZXNwYWNlKQorICAgICAgICAgICAgKyAiJHNwYWNlPVtcdFxyXGZcblx1MjAyOFs6WnM6XV07IgorCisgICAgICAgICAgICAvLyBwdW5jdHVhdGlvbiB3aGljaCBtYXkgb2NjdXIgYXQgdGhlIGJlZ2lubmluZyBvZiBhIHNlbnRlbmNlOiAic3RhcnRpbmcKKyAgICAgICAgICAgIC8vIHB1bmN0dWF0aW9uIiBhbmQgcXVvdGF0aW9uIG1hcmtzCisgICAgICAgICAgICArICIkc3RhcnQ9W1s6UHM6XVs6UGk6XVxcXCJcXFwnXTsiCisKKyAgICAgICAgICAgIC8vIHB1bmN0dWF0aW9uIHdpdGggbWF5IG9jY3VyIGF0IHRoZSBlbmQgb2YgYSBzZW50ZW5jZTogImVuZGluZyBwdW5jdHVhdGlvbiIKKyAgICAgICAgICAgIC8vIGFuZCBxdW90YXRpb24gbWFya3MKKyAgICAgICAgICAgICsgIiRlbmQ9W1s6UGU6XVs6UGY6XVxcXCJcXFwnXTsiCisKKyAgICAgICAgICAgIC8vIGRpZ2l0cworICAgICAgICAgICAgKyAiJGRpZ2l0PVs6TjpdOyIKKworICAgICAgICAgICAgLy8gY2hhcmFjdGVycyB0aGF0IHVuYW1iaWd1b3VzbHkgc2lnbmFsIHRoZSBlbmQgb2YgYSBzZW50ZW5jZQorICAgICAgICAgICAgKyAiJHRlcm09W1xcIVxcP1x1MzAwMlx1ZmYwMVx1ZmYxZl07IgorCisgICAgICAgICAgICAvLyBwZXJpb2RzLCB3aGljaCBNQVkgc2lnbmFsIHRoZSBlbmQgb2YgYSBzZW50ZW5jZQorICAgICAgICAgICAgKyAiJHBlcmlvZD1bXFwuXHVmZjBlXTsiCisKKyAgICAgICAgICAgIC8vIGNoYXJhY3RlcnMgdGhhdCBtYXkgb2NjdXIgYXQgdGhlIGJlZ2lubmluZyBvZiBhIHNlbnRlbmNlOiBiYXNpY2FsbHkgYW55dGhpbmcKKyAgICAgICAgICAgIC8vIG5vdCBtZW50aW9uZWQgYWJvdmUgKGxvd2VyY2FzZSBsZXR0ZXJzIGFuZCBkaWdpdHMgYXJlIHNwZWNpZmljYWxseSBleGNsdWRlZCkKKyAgICAgICAgICAgICsgIiRzZW50X3N0YXJ0PVteJGxjJHVjTGF0aW4kc3BhY2Ukc3RhcnQkZW5kJGRpZ2l0JHRlcm0kcGVyaW9kXHUyMDI5JF9pZ25vcmVfXTsiCisKKyAgICAgICAgICAgIC8vIEhpbmRpIHBocmFzZSBzZXBhcmF0b3IKKyAgICAgICAgICAgICsgIiRkYW5kYT1bXHUwOTY0XHUwOTY1XTsiCisKKyAgICAgICAgICAgIC8vIGFsd2F5cyBicmVhayBzZW50ZW5jZXMgYWZ0ZXIgcGFyYWdyYXBoIHNlcGFyYXRvcnMKKyAgICAgICAgICAgICsgIi4qP1x1MjAyOT87IgorCisgICAgICAgICAgICAvLyBhbHdheXMgYnJlYWsgYWZ0ZXIgYSBkYW5kYSwgaWYgaXQncyBmb2xsb3dlZCBieSB3aGl0ZXNwYWNlCisgICAgICAgICAgICArICIuKj8kZGFuZGEkc3BhY2UqOyIKKworICAgICAgICAgICAgLy8gaWYgeW91IHNlZSBhIHBlcmlvZCwgc2tpcCBvdmVyIGFkZGl0aW9uYWwgcGVyaW9kcyBhbmQgZW5kaW5nIHB1bmN0dWF0aW9uCisgICAgICAgICAgICAvLyBhbmQgaWYgdGhlIG5leHQgY2hhcmFjdGVyIGlzIGEgcGFyYWdyYXBoIHNlcGFyYXRvciwgYnJlYWsgYWZ0ZXIgdGhlCisgICAgICAgICAgICAvLyBwYXJhZ3JhcGggc2VwYXJhdG9yCisgICAgICAgICAgICArICIuKj8kcGVyaW9kWyRwZXJpb2QkZW5kXSokc3BhY2UqXHUyMDI5OyIKKworICAgICAgICAgICAgLy8gaWYgeW91IHNlZSBhIHBlcmlvZCwgc2tpcCBvdmVyIGFkZGl0aW9uYWwgcGVyaW9kcyBhbmQgZW5kaW5nIHB1bmN0dWF0aW9uLAorICAgICAgICAgICAgLy8gZm9sbG93ZWQgYnkgb3B0aW9uYWwgd2hpdGVzcGFjZSwgZm9sbG93ZWQgYnkgb3B0aW9uYWwgc3RhcnRpbmcgcHVuY3R1YXRpb24sCisgICAgICAgICAgICAvLyBhbmQgaWYgdGhlIG5leHQgY2hhcmFjdGVyIGlzIHNvbWV0aGluZyB0aGF0IGNhbiBzdGFydCBhIHNlbnRlbmNlCisgICAgICAgICAgICAvLyAoYmFzaWNhbGx5LCBhIGNhcGl0YWwgbGV0dGVyKSwgdGhlbiBwdXQgdGhlIHNlbnRlbmNlIGJyZWFrIGJldHdlZW4gdGhlCisgICAgICAgICAgICAvLyB3aGl0ZXNwYWNlIGFuZCB0aGUgb3BlbmluZyBwdW5jdHVhdGlvbgorICAgICAgICAgICAgKyAiLio/JHBlcmlvZFskcGVyaW9kJGVuZF0qJHNwYWNlKi8oJHN0YXJ0KiRzZW50X3N0YXJ0fCRzdGFydCskdWNMYXRpbik7IgorCisgICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlLCBleGNlcHQgdGhhdCB0aGVyZSdzIGEgc2VudGVuY2UgYnJlYWsgYmVmb3JlIGEgTGF0aW4gY2FwaXRhbAorICAgICAgICAgICAgLy8gbGV0dGVyIG9ubHkgaWYgdGhlcmUncyBhdCBsZWFzdCBvbmUgc3BhY2UgYWZ0ZXIgdGhlIHBlcmlvZAorICAgICAgICAgICAgKyAiLio/JHBlcmlvZFskcGVyaW9kJGVuZF0qJHNwYWNlKy8kdWNMYXRpbjsiCisKKyAgICAgICAgICAgIC8vIGlmIHlvdSBzZWUgYSBzZW50ZW5jZS10ZXJtaW5hdGluZyBjaGFyYWN0ZXIsIHNraXAgb3ZlciBhbnkgYWRkaXRpb25hbAorICAgICAgICAgICAgLy8gdGVybWluYXRvcnMsIHBlcmlvZHMsIG9yIGVuZGluZyBwdW5jdHVhdGlvbiwgZm9sbG93ZWQgYnkgYW55IHdoaXRlc3BhY2UsCisgICAgICAgICAgICAvLyBmb2xsb3dlZCBieSBhIFNJTkdMRSBvcHRpb25hbCBwYXJhZ3JhcGggc2VwYXJhdG9yLCBhbmQgcHV0IHRoZSBicmVhayB0aGVyZQorICAgICAgICAgICAgKyAiLio/JHRlcm1bJHRlcm0kcGVyaW9kJGVuZF0qJHNwYWNlKlx1MjAyOT87IgorCisgICAgICAgICAgICAvLyBUaGUgZm9sbG93aW5nIHJ1bGVzIGFyZSBoZXJlIHRvIGFpZCBpbiBiYWNrd2FyZHMgaXRlcmF0aW9uLiAgVGhlIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgICAgIC8vIGdlbmVyYXRlZCBiYWNrd2FyZHMgc3RhdGUgdGFibGUgd2lsbCByZXdpbmQgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUKKyAgICAgICAgICAgIC8vIHBhcmFncmFwaCBhbGwgdGhlIHRpbWUgKG9yIGFsbCB0aGUgd2F5IHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGRvY3VtZW50CisgICAgICAgICAgICAvLyBpZiB0aGUgZG9jdW1lbnQgZG9lc24ndCB1c2UgdGhlIFVuaWNvZGUgUFMgY2hhcmFjdGVyKSBiZWNhdXNlIHRoZSBvbmx5CisgICAgICAgICAgICAvLyB1bmFtYmlndW91cyBjaGFyYWN0ZXIgcGFpcnMgYXJlIHRob3NlIGludm9sdmluZyBwYXJhZ3JhcGggc2VwYXJhdG9ycy4KKyAgICAgICAgICAgIC8vIFRoZXNlIHNwZWNpZnkgYSBmZXcgbW9yZSB1bmFtYmlndW91cyBicmVha2luZyBzaXR1YXRpb25zLgorCisgICAgICAgICAgICAvLyBpZiB5b3Ugc2VlIGEgc2VudGVuY2Utc3RhcnRpbmcgY2hhcmFjdGVyLCBmb2xsb3dlZCBieSBzdGFydGluZyBwdW5jdHVhdGlvbgorICAgICAgICAgICAgLy8gKHJlbWVtYmVyLCB3ZSdyZSBpdGVyYXRpbmcgYmFja3dhcmRzKSwgZm9sbG93ZWQgYnkgYW4gb3B0aW9uYWwgcnVuIG9mCisgICAgICAgICAgICAvLyB3aGl0ZXNwYWNlLCBmb2xsb3dlZCBieSBhbiBvcHRpb25hbCBydW4gb2YgZW5kaW5nIHB1bmN0dWF0aW9uLCBmb2xsb3dlZAorICAgICAgICAgICAgLy8gYnkgYSBwZXJpb2QsIHRoaXMgaXMgYSBzYWZlIHBsYWNlIHRvIHR1cm4gYXJvdW5kCisgICAgICAgICAgICArICIhWyRzZW50X3N0YXJ0JHVjTGF0aW5dJHN0YXJ0KiRzcGFjZSskZW5kKiRwZXJpb2Q7IgorCisgICAgICAgICAgICAvLyBpZiB5b3Ugc2VlIGEgbGV0dGVyIG9yIGEgZGlnaXQsIGZvbGxvd2VkIGJ5IGFuIG9wdGlvbmFsIHJ1biBvZgorICAgICAgICAgICAgLy8gc3RhcnRpbmcgcHVuY3R1YXRpb24sIGZvbGxvd2VkIGJ5IGFuIG9wdGlvbmFsIHJ1biBvZiB3aGl0ZXNwYWNlLAorICAgICAgICAgICAgLy8gZm9sbG93ZWQgYnkgYW4gb3B0aW9uYWwgcnVuIG9mIGVuZGluZyBwdW5jdHVhdGlvbiwgZm9sbG93ZWQgYnkKKyAgICAgICAgICAgIC8vIGEgc2VudGVuY2UgdGVybWluYXRvciwgdGhpcyBpcyBhIHNhZmUgcGxhY2UgdG8gdHVybiBhcm91bmQKKyAgICAgICAgICAgICsgIiFbJHNlbnRfc3RhcnQkbGMkZGlnaXRdJHN0YXJ0KiRzcGFjZSokZW5kKiR0ZXJtOyIKKyAgICAgICAgfSwKKworCQkvLyBkZWZhdWx0IHJ1bGVzIGZvciBmaW5kaW5nIFRpdGxlIENhc2UgYm91bmRhcmllcy4KKwkJLy8gICBTZWUgIFVuaWNvZGUgVGVjaG5pY2FsIFJlcG9ydCAjMjEgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGVzZSBydWxlcy4KKwkJeyAiVGl0bGVCcmVha1J1bGVzIiwKKyAgICAgICAgICAgICAgICIkY2FzZV9pZ25vcmFibGU9W1s6TW46XVs6TWU6XVs6Q2Y6XVs6TG06XVs6U2s6XVxcdTAwMjdcdTAwQURcdTIwMTldOyIKKyAgICAgICAgICAgICArICIkY2FzZWQ9W1tbOkx1Ol1bOkx0Ol1bOkxsOl0iCisgICAgICAgICAgICAgKyAgICAgIlx1MjE2MC1cdTIxNmYiICAgICAgICAgICAgICAgICAgICAgICAvLyBPdGhlciBVcHBlcmNhc2UKKyAgICAgICAgICAgICArICAgICAiXHUyNGI2LVx1MjRjZiIKKyAgICAgICAgICAgICArICAgICAiXHUwMmIwLVx1MDJiOCIgICAgICAgICAgICAgICAgICAgICAgIC8vIE90aGVyIExvd2VyIGNhc2UKKyAgICAgICAgICAgICArICAgICAiXHUwMmMwLVx1MDJjMSIKKyAgICAgICAgICAgICArICAgICAiXHUwMmUwLVx1MDJlNCIKKyAgICAgICAgICAgICArICAgICAiXHUwMzQ1XHUwMzdhIgorICAgICAgICAgICAgICsgICAgICJcdTIxNzAtXHUyMTdmIgorICAgICAgICAgICAgICsgICAgICJcdTI0ZDAtXHUyNGU5XSIKKyAgICAgICAgICAgICArICAgICAiLSRjYXNlX2lnbm9yYWJsZV07IiAgICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBhbnl0aGluZyB0aGF0IGlzIGNhc2VfaWdub3JhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGZyb20gJGNhc2VkLgorCQkgICAgICsgIiRub3RfY2FzZWQ9W14kY2FzZWQkY2FzZV9pZ25vcmFibGVdOyIKKyAgICAgICAgICAgICAvLyBGaXJzdCB0aW1lIG9ubHksIGVhdCB0aHJvdWdoIGFueSBsZWFkaW5nIG5vbi13b3JkLWxpa2Ugc3R1ZmYuCisJCSAgICAgKyAiWyRub3RfY2FzZWQkY2FzZV9pZ25vcmFibGVdKjsiCisgICAgICAgICAgICAgLy8gIE1hdGNoIGEgd29yZCAoYSBjYXNlZCBpdGVtKSwgcGx1cyBhbnkgZm9sbG93aW5nIHNwYWNlcyBvciBvdGhlciBub24tY2FzZWQganVuaywKKyAgICAgICAgICAgICAvLyAgICB1cCB0byB0aGUgc3RhcnQgb2YgdGhlIG5leHQgY2FzZWQgaXRlbS4KKyAgICAgICAgICAgICArICIkY2FzZWRbJGNhc2VkJGNhc2VfaWdub3JhYmxlXSpbJG5vdF9jYXNlZF0qOyIKKyAgICAgICAgICAgICArICIhJG5vdF9jYXNlZCpbJGNhc2VkJGNhc2VfaWdub3JhYmxlXSokbm90X2Nhc2VkKjsiICAgLy8gQmFja3dhcmRzIHJ1bGUuCisJICAgIH0KKworICAgIH07Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0JyZWFrSXRlcmF0b3JSdWxlc190aC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9CcmVha0l0ZXJhdG9yUnVsZXNfdGguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi40Y2Q2YmYwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9CcmVha0l0ZXJhdG9yUnVsZXNfdGguamF2YQpAQCAtMCwwICsxLDI0MyBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9CcmVha0l0ZXJhdG9yUnVsZXNfdGguamF2YSx2ICQKKyAqICREYXRlOiAyMDAyLzAyLzE2IDAzOjA1OjM5ICQKKyAqICRSZXZpc2lvbjogMS43ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5pbXBsLmRhdGE7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworaW1wb3J0IGphdmEudXRpbC5NaXNzaW5nUmVzb3VyY2VFeGNlcHRpb247CitpbXBvcnQgamF2YS5uZXQuVVJMOworCitwdWJsaWMgY2xhc3MgQnJlYWtJdGVyYXRvclJ1bGVzX3RoIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKyAgICBwdWJsaWMgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsKKworICAgICAgICBVUkwgdXJsID0gZ2V0Q2xhc3MoKS5nZXRSZXNvdXJjZSgidGhhaV9kaWN0Iik7CisKKyAgICAgICAgLy8gaWYgZGljdGlvbmFyeSB3YXNuJ3QgZm91bmQsIHRoZW4gdGhpcyByZXNvdXJjZSBidW5kbGUgZG9lc24ndCBoYXZlCisgICAgICAgIC8vIG11Y2ggdG8gY29udHJpYnV0ZS4uLgorICAgICAgICBpZiAodXJsID09IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgT2JqZWN0WzBdWzBdOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG5ldyBPYmplY3RbXVtdIHsKKyAgICAgICAgICAgIC8vIG5hbWVzIG9mIGNsYXNzZXMgdG8gaW5zdGFudGlhdGUgZm9yIHRoZSBkaWZmZXJlbnQga2luZHMgb2YgYnJlYWsKKyAgICAgICAgICAgIC8vIGl0ZXJhdG9yLiAgTm90aWNlIHdlJ3JlIG5vdyB1c2luZyBEaWN0aW9uYXJ5QmFzZWRCcmVha0l0ZXJhdG9yCisgICAgICAgICAgICAvLyBmb3Igd29yZCBhbmQgbGluZSBicmVha2luZy4KKyAgICAgICAgICAgIHsgIkJyZWFrSXRlcmF0b3JDbGFzc2VzIiwKKyAgICAgICAgICAgICAgICBuZXcgU3RyaW5nW10geyAiUnVsZUJhc2VkQnJlYWtJdGVyYXRvciIsICAgICAgICAgICAvLyBjaGFyYWN0ZXItYnJlYWsgaXRlcmF0b3IgY2xhc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGljdGlvbmFyeUJhc2VkQnJlYWtJdGVyYXRvciIsICAgICAvLyB3b3JkLWJyZWFrIGl0ZXJhdG9yIGNsYXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRpY3Rpb25hcnlCYXNlZEJyZWFrSXRlcmF0b3IiLCAgICAgLy8gbGluZS1icmVhayBpdGVyYXRvciBjbGFzcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIiB9ICAgICAgICAgIC8vIHNlbnRlbmNlLWJyZWFrIGl0ZXJhdG9yIGNsYXNzCisgICAgICAgICAgICB9LAorCisgICAgICAgICAgICB7ICJXb3JkQnJlYWtSdWxlcyIsCisgICAgICAgICAgICAgICAgIiRfZGljdGlvbmFyeV89W1x1MGUwMS1cdTBlMmVcdTBlMzAtXHUwZTNhXHUwZTQwLVx1MGU0NFx1MGU0Ny1cdTBlNGVdOyIgLy8gdGhpcyBydWxlIGJyZWFrcyB0aGUgaXRlcmF0b3Igd2l0aCBtaXhlZCBUaGFpIGFuZCBFbmdsaXNoCisKKyAgICAgICAgICAgICAgICAvLyBTdXJyb2dhdGVzLiAgVW50aWwgYmV0dGVyIHN1cHBvcnQgaXMgYXZhaWxhYmxlLCBpZ25vcmUgbG93IHN1cnJvZ2F0ZXMKKyAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgYW5kIGNsYXNzaWZ5IGhpZ2ggc3Vycm9nYXRlcyBhY2NvcmRpbmcgdG8gdGhlIGNoYXJhY3RlcnMgd2l0aGluIHRoZSBibG9jay4KKyAgICAgICAgICAgICAgICArICIkc3Vycl9sbz1bXHVkYzAwLVx1ZGZmZl07IgorICAgICAgICAgICAgICAgICsgIiRzdXJyX2hpX2xldD1bXHVkODAwXHVkODAxXHVkODM0XHVkODM1XTsiICAgLy8gSGkgU3Vycm9nYXRlcyBmb3IgT2xkIEl0YWxpYywgR290aGljLCBEZXNlcmV0LCBNdXNpYywgTWF0aAorICAgICAgICAgICAgICAgICsgIiRzdXJyX2hpX2lkZW89W1x1ZDg0MC1cdWQ4ODBdOyIgICAgICAgICAgICAgLy8gSGkgU3Vycm9nYXRlcyBmb3IgQ0pLCisgICAgICAgICAgICAgICAgKyAiJHN1cnJfaGlfdGFnPVtcdWRiNDBdOyIgICAgICAgICAgICAgICAgICAgICAvLyBIaSBTdXJyb2dhdGVzIGZvciBUYWdzCisgICAgICAgICAgICAgICAgKyAiJHN1cnJfaGlfcHVhPVtcdWRiODAtXHVkYmZmXTsiICAgICAgICAgICAgICAvLyBIaSBTdXJyb2dhdGVzIGZvciBQcml2YXRlIFVzZS4KKworICAgICAgICAgICAgICAgIC8vIFByaXZhdGUgVXNlIEFyZWEuICBUcmVhdCBsaWtlIGlkZW9ncmFwaHMuCisgICAgICAgICAgICAgICAgKyAiJHB1YT1bXHVlMDAwLVx1ZjhmZiRzdXJyX2hpX3B1YV07IgorCisgICAgICAgICAgICAgICAgLy8gaWdub3JlIG5vbi1zcGFjaW5nIG1hcmtzLCBlbmNsb3NpbmcgbWFya3MsIGFuZCBmb3JtYXQgY2hhcmFjdGVycywKKyAgICAgICAgICAgICAgICAvLyBhbGwgb2Ygd2hpY2ggc2hvdWxkIG5vdCBpbmZsdWVuY2UgdGhlIGFsZ29yaXRobQorICAgICAgICAgICAgICAgICsgIiRfaWdub3JlXz1bW1s6TW46XVs6TWU6XVs6Q2Y6XSRzdXJyX2xvJHN1cnJfaGlfdGFnXS0kX2RpY3Rpb25hcnlfXTsiCisKKyAgICAgICAgICAgICAgICArICIkcGFpeWFubm9pPVtcdTBlMmZdOyIKKyAgICAgICAgICAgICAgICArICIkbWFpeWFtb2s9W1x1MGU0Nl07IgorCisKKyAgICAgICAgICAgICAgICAvLyBIaW5kaSBwaHJhc2Ugc2VwYXJhdG9yLCBrYW5qaSwga2F0YWthbmEsIGhpcmFnYW5hLCBDSksgZGlhY3JpdGljYWxzLAorICAgICAgICAgICAgICAgIC8vIG90aGVyIGxldHRlcnMsIGFuZCBkaWdpdHMKKyAgICAgICAgICAgICAgICArICIkZGFuZGE9W1x1MDk2NFx1MDk2NV07IgorICAgICAgICAgICAgICAgICsgIiRrYW5qaT1bXHUzMDA1XHU0ZTAwLVx1OWZhNVx1ZjkwMC1cdWZhMmQkc3Vycl9oaV9pZGVvJHB1YV07IgorICAgICAgICAgICAgICAgICsgIiRrYXRhPVtcdTMwYTEtXHUzMGZhXTsiCisgICAgICAgICAgICAgICAgKyAiJGhpcmE9W1x1MzA0MS1cdTMwOTRdOyIKKyAgICAgICAgICAgICAgICArICIkY2prX2RpYWNyaXQ9W1x1MzA5OS1cdTMwOWNdOyIKKyAgICAgICAgICAgICAgICArICIkbGV0PVtbWzpMOl1bOk1jOl0kc3Vycl9oaV9sZXRdLVska2Fuamkka2F0YSRoaXJhJGNqa19kaWFjcml0JF9kaWN0aW9uYXJ5X11dOyIKKyAgICAgICAgICAgICAgICArICIkZGd0PVs6TjpdOyIKKworICAgICAgICAgICAgICAgIC8vIHB1bmN0dWF0aW9uIHRoYXQgY2FuIG9jY3VyIGluIHRoZSBtaWRkbGUgb2YgYSB3b3JkOiBjdXJyZW50bHkKKyAgICAgICAgICAgICAgICAvLyBkYXNoZXMsIGFwb3N0cm9waGVzLCBxdW90YXRpb24gbWFya3MsIGFuZCBwZXJpb2RzCisgICAgICAgICAgICAgICAgKyAiJG1pZF93b3JkPVtbOlBkOl1cdTAwYWRcdTIwMjdcXFwiXFxcJ1xcLl07IgorCisgICAgICAgICAgICAgICAgLy8gcHVuY3R1YXRpb24gdGhhdCBjYW4gb2NjdXIgaW4gdGhlIG1pZGRsZSBvZiBhIG51bWJlcjogY3VycmVudGx5CisgICAgICAgICAgICAgICAgLy8gYXBvc3Ryb3BoZXMsIHFvdXRhdGlvbiBtYXJrcywgcGVyaW9kcywgY29tbWFzLCBhbmQgdGhlIEFyYWJpYworICAgICAgICAgICAgICAgIC8vIGRlY2ltYWwgcG9pbnQKKyAgICAgICAgICAgICAgICArICIkbWlkX251bT1bXFxcIlxcXCdcXCxcdTA2NmJcXC5dOyIKKworICAgICAgICAgICAgICAgIC8vIHB1bmN0dWF0aW9uIHRoYXQgY2FuIG9jY3VyIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBudW1iZXI6IGN1cnJlbnRseQorICAgICAgICAgICAgICAgIC8vIHRoZSBwZXJpb2QsIHRoZSBudW1iZXIgc2lnbiwgYW5kIGFsbCBjdXJyZW5jeSBzeW1ib2xzIGV4Y2VwdCB0aGUgY2VudHMgc2lnbgorICAgICAgICAgICAgICAgICsgIiRwcmVfbnVtPVtbWzpTYzpdLVtcdTAwYTJdXVxcI1xcLl07IgorCisgICAgICAgICAgICAgICAgLy8gcHVuY3R1YXRpb24gdGhhdCBjYW4gb2NjdXIgYXQgdGhlIGVuZCBvZiBhIG51bWJlcjogY3VycmVudGx5CisgICAgICAgICAgICAgICAgLy8gdGhlIHBlcmNlbnQsIHBlci10aG91c2FuZCwgcGVyLXRlbi10aG91c2FuZCwgYW5kIEFyYWJpYyBwZXJjZW50CisgICAgICAgICAgICAgICAgLy8gc2lnbnMsIHRoZSBjZW50cyBzaWduLCBhbmQgdGhlIGFtcGVyc2FuZAorICAgICAgICAgICAgICAgICsgIiRwb3N0X251bT1bXFwlXFwmXHUwMGEyXHUwNjZhXHUyMDMwXHUyMDMxXTsiCisKKyAgICAgICAgICAgICAgICAvLyBsaW5lIHNlcGFyYXRvcnM6IGN1cnJlbnRseSBMRiwgRkYsIFBTLCBhbmQgTFMKKyAgICAgICAgICAgICAgICArICIkbHM9W1xuXHUwMDBjXHUyMDI4XHUyMDI5XTsiCisKKyAgICAgICAgICAgICAgICAvLyB3aGl0ZXNwYWNlOiBhbGwgc3BhY2Ugc2VwYXJhdG9ycyBhbmQgdGhlIHRhYiBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICArICIkd3M9W1s6WnM6XVx0XTsiCisKKyAgICAgICAgICAgICAgICAvLyBhIHdvcmQgaXMgYSBzZXF1ZW5jZSBvZiBsZXR0ZXJzIHRoYXQgbWF5IGNvbnRhaW4gaW50ZXJuYWwKKyAgICAgICAgICAgICAgICAvLyBwdW5jdHVhdGlvbiwgYXMgbG9uZyBhcyBpdCBiZWdpbnMgYW5kIGVuZHMgd2l0aCBhIGxldHRlciBhbmQKKyAgICAgICAgICAgICAgICAvLyBuZXZlciBjb250YWlucyB0d28gcHVuY3R1YXRpb24gbWFya3MgaW4gYSByb3cKKyAgICAgICAgICAgICAgICArICIkd29yZD0oKCRsZXQrKCRtaWRfd29yZCRsZXQrKSopJGRhbmRhPyk7IgorCisgICAgICAgICAgICAgICAgLy8gYSBudW1iZXIgaXMgYSBzZXF1ZW5jZSBvZiBkaWdpdHMgdGhhdCBtYXkgY29udGFpbiBpbnRlcm5hbAorICAgICAgICAgICAgICAgIC8vIHB1bmN0dWF0aW9uLCBhcyBsb25nIGFzIGl0IGJlZ2lucyBhbmQgZW5kcyB3aXRoIGEgZGlnaXQgYW5kCisgICAgICAgICAgICAgICAgLy8gbmV2ZXIgY29udGFpbnMgdHdvIHB1bmN0dWF0aW9uIG1hcmtzIGluIGEgcm93LgorICAgICAgICAgICAgICAgICsgIiRudW1iZXI9KCRkZ3QrKCRtaWRfbnVtJGRndCspKik7IgorCisgICAgICAgICAgICAgICAgKyAiJHRoYWlfZXRjPSgkcGFpeWFubm9pXHUwZTI1JHBhaXlhbm5vaSk7IgorCisKKyAgICAgICAgICAgICAgICAvLyBicmVhayBhZnRlciBldmVyeSBjaGFyYWN0ZXIsIHdpdGggdGhlIGZvbGxvd2luZyBleGNlcHRpb25zCisgICAgICAgICAgICAgICAgLy8gKHRoaXMgd2lsbCBjYXVzZSBwdW5jdHVhdGlvbiBtYXJrcyB0aGF0IGFyZW4ndCBjb25zaWRlcmVkCisgICAgICAgICAgICAgICAgLy8gcGFydCBvZiB3b3JkcyBvciBudW1iZXJzIHRvIGJlIHRyZWF0ZWQgYXMgd29yZHMgdW50byB0aGVtc2VsdmVzKQorICAgICAgICAgICAgICAgICsgIi47IgorCisgICAgICAgICAgICAgICAgLy8ga2VlcCB0b2dldGhlciBhbnkgc2VxdWVuY2Ugb2YgY29udGlndW91cyB3b3JkcyBhbmQgbnVtYmVycworICAgICAgICAgICAgICAgIC8vIChpbmNsdWRpbmcganVzdCBvbmUgb2YgZWl0aGVyKSwgcGx1cyBhbiBvcHRpb25hbCB0cmFpbGluZworICAgICAgICAgICAgICAgIC8vIG51bWJlci1zdWZmaXggY2hhcmFjdGVyCisgICAgICAgICAgICAgICAgKyAiJHdvcmQ/KCRudW1iZXIkd29yZCkqKCRudW1iZXIkcG9zdF9udW0/KT87IgorICAgICAgICAgICAgICAgICsgIiRwcmVfbnVtKCRudW1iZXIkd29yZCkqKCRudW1iZXIkcG9zdF9udW0/KT87IgorCisgICAgICAgICAgICAgICAgLy8rICIkX2RpY3Rpb25hcnlfKygkcGFpeWFubm9pJG1haXlhbW9rPyk/OyIKKyAgICAgICAgICAgICAgICArICIkX2RpY3Rpb25hcnlfKygkcGFpeWFubm9pPyRtYWl5YW1vayk/OyIKKworICAgICAgICAgICAgICAgICsgIiRfZGljdGlvbmFyeV8rJHBhaXlhbm5vaS8oW15cdTBlMjUkbWFpeWFtb2skX2lnbm9yZV9dIgorICAgICAgICAgICAgICAgICAgICAgICAgKyAifFx1MGUyNVteJHBhaXlhbm5vaSRfaWdub3JlX10pOyIKKworICAgICAgICAgICAgICAgICsgIiR0aGFpX2V0YzsiCisKKyAgICAgICAgICAgICAgICAvLyBrZWVwIHRvZ2V0aGVyIHJ1bnMgb2Ygd2hpdGVzcGFjZSAob3B0aW9uYWxseSB3aXRoIGEgc2luZ2xlIHRyYWlsaW5nCisgICAgICAgICAgICAgICAgLy8gbGluZSBzZXBhcmF0b3Igb3IgQ1JMRiBzZXF1ZW5jZSkKKyAgICAgICAgICAgICAgICArICIkd3MqXHI/JGxzPzsiCisKKyAgICAgICAgICAgICAgICAvLyBrZWVwIHRvZ2V0aGVyIHJ1bnMgb2YgS2F0YWthbmEKKyAgICAgICAgICAgICAgICArICJbJGthdGEkY2prX2RpYWNyaXRdKjsiCisKKyAgICAgICAgICAgICAgICAvLyBrZWVwIHRvZ2V0aGVyIHJ1bnMgb2YgSGlyYWdhbmEKKyAgICAgICAgICAgICAgICArICJbJGhpcmEkY2prX2RpYWNyaXRdKjsiCisKKyAgICAgICAgICAgICAgICAvLyBrZWVwIHRvZ2V0aGVyIHJ1bnMgb2YgS2FuamkKKyAgICAgICAgICAgICAgICArICIka2FuamkqOyIKKyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIHsgIkxpbmVCcmVha1J1bGVzIiwKKyAgICAgICAgICAgICAgICAiJF9kaWN0aW9uYXJ5Xz1bXHUwZTAxLVx1MGUyZVx1MGUzMC1cdTBlM2FcdTBlNDAtXHUwZTQ0XHUwZTQ3LVx1MGU0ZV07IiAvLyB0aGlzIHJ1bGUgYnJlYWtzIHRoZSBpdGVyYXRvciB3aXRoIG1peGVkIFRoYWkgYW5kIEVuZ2xpc2gKKworICAgICAgICAgICAgICAgIC8vIFN1cnJvZ2F0ZXMuICBVbnRpbCBiZXR0ZXIgc3VwcG9ydCBpcyBhdmFpbGFibGUsIGlnbm9yZSBsb3cgc3Vycm9nYXRlcworICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICBhbmQgY2xhc3NpZnkgaGlnaCBzdXJyb2dhdGVzIGFjY29yZGluZyB0byB0aGUgY2hhcmFjdGVycyB3aXRoaW4gdGhlIGJsb2NrLgorICAgICAgICAgICAgICAgICsgIiRzdXJyX2xvPVtcdWRjMDAtXHVkZmZmXTsiCisgICAgICAgICAgICAgICAgKyAiJHN1cnJfaGlfbGV0PVtcdWQ4MDBcdWQ4MDFcdWQ4MzRcdWQ4MzVdOyIgICAvLyBIaSBTdXJyb2dhdGVzIGZvciBPbGQgSXRhbGljLCBHb3RoaWMsIERlc2VyZXQsIE11c2ljLCBNYXRoCisgICAgICAgICAgICAgICAgKyAiJHN1cnJfaGlfaWRlbz1bXHVkODQwLVx1ZDg4MF07IiAgICAgICAgICAgICAvLyBIaSBTdXJyb2dhdGVzIGZvciBDSksKKyAgICAgICAgICAgICAgICArICIkc3Vycl9oaV90YWc9W1x1ZGI0MF07IiAgICAgICAgICAgICAgICAgICAgIC8vIEhpIFN1cnJvZ2F0ZXMgZm9yIFRhZ3MKKyAgICAgICAgICAgICAgICArICIkc3Vycl9oaV9wdWE9W1x1ZGI4MC1cdWRiZmZdOyIgICAgICAgICAgICAgIC8vIEhpIFN1cnJvZ2F0ZXMgZm9yIFByaXZhdGUgVXNlLgorCisgICAgICAgICAgICAgICAgLy8gUHJpdmF0ZSBVc2UgQXJlYS4gIFRyZWF0IGxpa2UgaWRlb2dyYXBocy4KKyAgICAgICAgICAgICAgICArICIkcHVhPVtcdWUwMDAtXHVmOGZmJHN1cnJfaGlfcHVhXTsiCisKKyAgICAgICAgICAgICAgICAvLyBpZ25vcmUgbm9uLXNwYWNpbmcgbWFya3MsIGVuY2xvc2luZyBtYXJrcywgYW5kIGZvcm1hdCBjaGFyYWN0ZXJzCisgICAgICAgICAgICAgICAgKyAiJF9pZ25vcmVfPVtbWzpNbjpdWzpNZTpdWzpDZjpdJHN1cnJfbG8kc3Vycl9oaV90YWddLVskX2RpY3Rpb25hcnlfXV07IgorCisgICAgICAgICAgICAgICAgLy8gSGluZGkgcGhyYXNlIHNlcGFyYXRvcnMKKyAgICAgICAgICAgICAgICArICIkZGFuZGE9W1x1MDk2NFx1MDk2NV07IgorCisgICAgICAgICAgICAgICAgLy8gY2hhcmFjdGVycyB0aGF0IGFsd2F5cyBjYXVzZSBhIGJyZWFrOiBFVFgsIHRhYiwgTEYsIEZGLCBMUywgYW5kIFBTCisgICAgICAgICAgICAgICAgKyAiJGJyZWFrPVtcdTAwMDNcdFxuXGZcdTIwMjhcdTIwMjldOyIKKworICAgICAgICAgICAgICAgIC8vIGNoYXJhY3RlcnMgdGhhdCBhbHdheXMgcHJldmVudCBhIGJyZWFrOiB0aGUgbm9uLWJyZWFraW5nIHNwYWNlCisgICAgICAgICAgICAgICAgLy8gYW5kIHNpbWlsYXIgY2hhcmFjdGVycworICAgICAgICAgICAgICAgICsgIiRuYnNwPVtcdTAwYTBcdTIwMDdcdTIwMTFcdWZlZmZdOyIKKworICAgICAgICAgICAgICAgIC8vIHdoaXRlc3BhY2U6IHNwYWNlIHNlcGFyYXRvcnMgYW5kIGNvbnRyb2wgY2hhcmFjdGVycywgZXhjZXB0IGZvcgorICAgICAgICAgICAgICAgIC8vIENSIGFuZCB0aGUgb3RoZXIgY2hhcmFjdGVycyBtZW50aW9uZWQgYWJvdmUKKyAgICAgICAgICAgICAgICArICIkc3BhY2U9W1tbOlpzOl1bOkNjOl1dLVskbmJzcCRicmVha1xyXV07IgorCisgICAgICAgICAgICAgICAgLy8gZGFzaGVzOiBkYXNoIHB1bmN0dWF0aW9uIGFuZCB0aGUgZGlzY3JldGlvbmFyeSBoeXBoZW4sIGV4Y2VwdCBmb3IKKyAgICAgICAgICAgICAgICAvLyBub24tYnJlYWtpbmcgaHlwaGVucworICAgICAgICAgICAgICAgICsgIiRkYXNoPVtbWzpQZDpdXHUwMGFkXS0kbmJzcF07IgorCisgICAgICAgICAgICAgICAgKyAiJHBhaXlhbm5vaT1bXHUwZTJmXTsiCisgICAgICAgICAgICAgICAgKyAiJG1haXlhbW9rPVtcdTBlNDZdOyIKKyAgICAgICAgICAgICAgICArICIkdGhhaV9ldGM9KCRwYWl5YW5ub2lcdTBlMjUkcGFpeWFubm9pKTsiCisKKyAgICAgICAgICAgICAgICAvLyBjaGFyYWN0ZXJzIHRoYXQgc3RpY2sgdG8gYSB3b3JkIGlmIHRoZXkgcHJlY2VkZSBpdDogY3VycmVuY3kgc3ltYm9scworICAgICAgICAgICAgICAgIC8vIChleGNlcHQgdGhlIGNlbnRzIHNpZ24pIGFuZCBzdGFydGluZyBwdW5jdHVhdGlvbgorICAgICAgICAgICAgICAgICsgIiRwcmVfd29yZD1bW1s6U2M6XS1bXHUwMGEyXV1bOlBzOl1bOlBpOl1cXFwiXTsiCisKKyAgICAgICAgICAgICAgICAvLyBjaGFyYWN0ZXJzIHRoYXQgc3RpY2sgdG8gYSB3b3JkIGlmIHRoZXkgZm9sbG93IGl0OiBlbmRpbmcgcHVuY3R1YXRpb24sCisgICAgICAgICAgICAgICAgLy8gb3RoZXIgcHVuY3R1YXRpb24gdGhhdCB1c3VhbGx5IG9jY3VycyBhdCB0aGUgZW5kIG9mIGEgc2VudGVuY2UsCisgICAgICAgICAgICAgICAgLy8gc21hbGwgS2FuYSBjaGFyYWN0ZXJzLCBzb21lIENKSyBkaWFjcml0aWNzLCBldGMuCisgICAgICAgICAgICAgICAgKyAiJHBvc3Rfd29yZD1bWzpQZTpdWzpQZjpdXFwhXFwlXFwuXFwsXFw6XFw7XFw/XFxcIlx1MDBhMlx1MDBiMFx1MDY2YVx1MjAzMC1cdTIwMzRcdTIxMDMiCisgICAgICAgICAgICAgICAgICAgICAgICArICJcdTIxMDVcdTIxMDlcdTMwMDFcdTMwMDJcdTMwMDVcdTMwNDFcdTMwNDNcdTMwNDVcdTMwNDdcdTMwNDlcdTMwNjMiCisgICAgICAgICAgICAgICAgICAgICAgICArICJcdTMwODNcdTMwODVcdTMwODdcdTMwOGVcdTMwOTktXHUzMDllXHUzMGExXHUzMGEzXHUzMGE1XHUzMGE3XHUzMGE5IgorICAgICAgICAgICAgICAgICAgICAgICAgKyAiXHUzMGMzXHUzMGUzXHUzMGU1XHUzMGU3XHUzMGVlXHUzMGY1XHUzMGY2XHUzMGZjLVx1MzBmZVx1ZmYwMVx1ZmYwZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIlx1ZmYxZiRtYWl5YW1va107IgorCisgICAgICAgICAgICAgICAgLy8gS2Fuamk6IGFjdHVhbGx5IGluY2x1ZGVzIGJvdGggS2FuamkgYW5kIEthbmEsIGV4Y2VwdCBmb3Igc21hbGwgS2FuYSBhbmQKKyAgICAgICAgICAgICAgICAvLyBDSksgZGlhY3JpdGljcworICAgICAgICAgICAgICAgICsgIiRrYW5qaT1bWyRzdXJyX2hpX2lkZW8kcHVhXHU0ZTAwLVx1OWZhNVx1ZjkwMC1cdWZhMmRcdTMwNDEtXHUzMDk0XHUzMGExLVx1MzBmYV0tWyRwb3N0X3dvcmQkX2lnbm9yZV9dXTsiCisKKyAgICAgICAgICAgICAgICAvLyBkaWdpdHMKKyAgICAgICAgICAgICAgICArICIkZGlnaXQ9W1s6TmQ6XVs6Tm86XV07IgorCisgICAgICAgICAgICAgICAgLy8gcHVuY3R1YXRpb24gdGhhdCBjYW4gb2NjdXIgaW4gdGhlIG1pZGRsZSBvZiBhIG51bWJlcjogcGVyaW9kcyBhbmQgY29tbWFzCisgICAgICAgICAgICAgICAgKyAiJG1pZF9udW09W1xcLlxcLF07IgorCisgICAgICAgICAgICAgICAgLy8gZXZlcnl0aGluZyBub3QgbWVudGlvbmVkIGFib3ZlLCBwbHVzIHRoZSBxdW90ZSBtYXJrcyAod2hpY2ggYXJlIGJvdGgKKyAgICAgICAgICAgICAgICAvLyA8cHJlLXdvcmQ+LCA8cG9zdC13b3JkPiwgYW5kIDxjaGFyPikKKyAgICAgICAgICAgICAgICArICIkY2hhcj1bXiRicmVhayRzcGFjZSRkYXNoJGthbmppJG5ic3AkX2lnbm9yZV8kcHJlX3dvcmQkcG9zdF93b3JkIgorICAgICAgICAgICAgICAgICAgICAgICAgKyAiJG1pZF9udW1cciRkYW5kYSRfZGljdGlvbmFyeV8kcGFpeWFubm9pJG1haXlhbW9rXTsiCisKKyAgICAgICAgICAgICAgICAvLyBhICJudW1iZXIiIGlzIGEgcnVuIG9mIHByZWZpeCBjaGFyYWN0ZXJzIGFuZCBkYXNoZXMsIGZvbGxvd2VkIGJ5IG9uZSBvcgorICAgICAgICAgICAgICAgIC8vIG1vcmUgZGlnaXRzIHdpdGggaXNvbGF0ZWQgbnVtYmVyLXB1bmN0dWF0aW9uIGNoYXJhY3RlcnMgaW50ZXJzcGVyc2VkCisgICAgICAgICAgICAgICAgKyAiJG51bWJlcj0oWyRwcmVfd29yZCRkYXNoXSokZGlnaXQrKCRtaWRfbnVtJGRpZ2l0KykqKTsiCisKKyAgICAgICAgICAgICAgICAvLyB0aGUgYmFzaWMgY29yZSBvZiBhIHdvcmQgY2FuIGJlIGVpdGhlciBhICJudW1iZXIiIGFzIGRlZmluZWQgYWJvdmUsIGEgc2luZ2xlCisgICAgICAgICAgICAgICAgLy8gIkthbmppIiBjaGFyYWN0ZXIsIG9yIGEgcnVuIG9mIGFueSBudW1iZXIgb2Ygbm90LWV4cGxpY2l0bHktbWVudGlvbmVkCisgICAgICAgICAgICAgICAgLy8gY2hhcmFjdGVycyAodGhpcyBpbmNsdWRlcyBMYXRpbiBsZXR0ZXJzKQorICAgICAgICAgICAgICAgICsgIiR3b3JkX2NvcmU9KCRjaGFyKnwka2Fuaml8JG51bWJlcnwkX2RpY3Rpb25hcnlfK3wkdGhhaV9ldGMpOyIKKworICAgICAgICAgICAgICAgIC8vIGEgd29yZCBtYXkgZW5kIHdpdGggYW4gb3B0aW9uYWwgc3VmZml4IHRoYXQgYmUgZWl0aGVyIGEgcnVuIG9mIG9uZSBvcgorICAgICAgICAgICAgICAgIC8vIG1vcmUgZGFzaGVzIG9yIGEgcnVuIG9mIHdvcmQtc3VmZml4IGNoYXJhY3RlcnMsIGZvbGxvd2VkIGJ5IGFuIG9wdGlvbmFsCisgICAgICAgICAgICAgICAgLy8gcnVuIG9mIHdoaXRlc3BhY2UKKyAgICAgICAgICAgICAgICArICIkd29yZF9zdWZmaXg9KCgkZGFzaCt8JHBvc3Rfd29yZCopJHNwYWNlKik7IgorCisgICAgICAgICAgICAgICAgLy8gYSB3b3JkLCB0aHVzLCBpcyBhbiBvcHRpb25hbCBydW4gb2Ygd29yZC1wcmVmaXggY2hhcmFjdGVycywgZm9sbG93ZWQgYnkKKyAgICAgICAgICAgICAgICAvLyBhIHdvcmQgY29yZSBhbmQgYSB3b3JkIHN1ZmZpeCAodGhlIHN5bnRheCBvZiA8d29yZC1jb3JlPiBhbmQgPHdvcmQtc3VmZml4PgorICAgICAgICAgICAgICAgIC8vIGFjdHVhbGx5IGFsbG93cyBlaXRoZXIgb2YgdGhlbSB0byBtYXRjaCB0aGUgZW1wdHkgc3RyaW5nLCBwdXR0aW5nIGEgYnJlYWsKKyAgICAgICAgICAgICAgICAvLyBiZXR3ZWVuIHRoaW5ncyBsaWtlICIpKCIgb3IgImFhYShhYWEiCisgICAgICAgICAgICAgICAgKyAiJHdvcmQ9KCRwcmVfd29yZCokd29yZF9jb3JlJHdvcmRfc3VmZml4KTsiCisKKyAgICAgICAgICAgICAgICAvLyBmaW5hbGx5LCB0aGUgcnVsZSB0aGF0IGRvZXMgdGhlIHdvcms6IEtlZXAgdG9nZXRoZXIgYW55IHJ1biBvZiB3b3JkcyB0aGF0CisgICAgICAgICAgICAgICAgLy8gYXJlIGpvaW5lZCBieSBydW5zIG9mIG9uZSBvZiBtb3JlIG5vbi1zcGFjaW5nIG1hcmsuICBBbHNvIGtlZXAgYSB0cmFpbGluZworICAgICAgICAgICAgICAgIC8vIGxpbmUtYnJlYWsgY2hhcmFjdGVyIG9yIENSTEYgY29tYmluYXRpb24gd2l0aCB0aGUgd29yZC4gIChsaW5lIHNlcGFyYXRvcnMKKyAgICAgICAgICAgICAgICAvLyAid2luIiBvdmVyIG5ic3AncykKKyAgICAgICAgICAgICAgICArICIkd29yZCgkbmJzcCskd29yZCkqKFxyPyRicmVhaz98JHBhaXlhbm5vaVxyJGJyZWFrfCRwYWl5YW5ub2kkYnJlYWspPzsiCisgICAgICAgICAgICAgICAgKyAiJHdvcmQoJG5ic3ArJHdvcmQpKiRwYWl5YW5ub2kvKFteW1x1MGUyNSRfaWdub3JlX11dfCIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIlx1MGUyNVteJHBhaXlhbm5vaSRfaWdub3JlX10pOyIKKyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIHsgIldvcmRCcmVha0RpY3Rpb25hcnkiLCB1cmwgfSwKKyAgICAgICAgICAgIHsgIkxpbmVCcmVha0RpY3Rpb25hcnkiLCB1cmwgfQorICAgICAgICB9OworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQnVkZGhpc3RDYWxlbmRhclN5bWJvbHMuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQnVkZGhpc3RDYWxlbmRhclN5bWJvbHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4yNTUxMmJkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9CdWRkaGlzdENhbGVuZGFyU3ltYm9scy5qYXZhCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQXR0aWMvQnVkZGhpc3RDYWxlbmRhclN5bWJvbHMuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNTozOSAkIAorICogJFJldmlzaW9uOiAxLjQgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmltcGwuZGF0YTsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKKy8qKgorICogRGVmYXVsdCBEYXRlIEZvcm1hdCBzeW1ib2xzIGZvciB0aGUgQnVkZGhpc3QgQ2FsZW5kYXIKKyAqLworcHVibGljIGNsYXNzIEJ1ZGRoaXN0Q2FsZW5kYXJTeW1ib2xzIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKworICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBjb3B5cmlnaHQgPSAiQ29weXJpZ2h0IFx1MDBhOSAxOTk4IElCTSBDb3JwLiBBbGwgUmlnaHRzIFJlc2VydmVkLiI7CisKKyAgICBzdGF0aWMgZmluYWwgT2JqZWN0W11bXSBmQ29udGVudHMgPSB7CisgICAgICAgIHsgIkVyYXMiLCBuZXcgU3RyaW5nW10geworICAgICAgICAgICAgICAgICJCRSIKKyAgICAgICAgICAgIH0gfSwKKyAgICB9OworCisgICAgcHVibGljIHN5bmNocm9uaXplZCBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeworICAgICAgICByZXR1cm4gZkNvbnRlbnRzOworICAgIH0KK307CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0J1ZGRoaXN0Q2FsZW5kYXJTeW1ib2xzX2FyLmphdmEgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0J1ZGRoaXN0Q2FsZW5kYXJTeW1ib2xzX2FyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZTQ4Y2VhYwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQnVkZGhpc3RDYWxlbmRhclN5bWJvbHNfYXIuamF2YQpAQCAtMCwwICsxLDMzIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0F0dGljL0J1ZGRoaXN0Q2FsZW5kYXJTeW1ib2xzX2FyLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDIvMTYgMDM6MDU6MzkgJCAKKyAqICRSZXZpc2lvbjogMS40ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5pbXBsLmRhdGE7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCisvKioKKyAqIERlZmF1bHQgRGF0ZSBGb3JtYXQgc3ltYm9scyBmb3IgdGhlIEJ1ZGRoaXN0IENhbGVuZGFyCisgKi8KK3B1YmxpYyBjbGFzcyBCdWRkaGlzdENhbGVuZGFyU3ltYm9sc19hciBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgY29weXJpZ2h0ID0gIkNvcHlyaWdodCBcdTAwYTkgMTk5OSBJQk0gQ29ycC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4iOworCisgICAgc3RhdGljIGZpbmFsIE9iamVjdFtdW10gZkNvbnRlbnRzID0geworICAgICAgICB7ICJFcmFzIiwgbmV3IFN0cmluZ1tdIHsKKyAgICAgICAgICAgICAgICAiXHUwNjI3XHUwNjQ0XHUwNjJBXHUwNjQyXHUwNjQ4XHUwNjRBXHUwNjQ1IFx1MDYyN1x1MDY0NFx1MDYyOFx1MDY0OFx1MDYzMFx1MDY0QSIKKyAgICAgICAgICAgIH0gfSwKKyAgICB9OworCisgICAgcHVibGljIHN5bmNocm9uaXplZCBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeworICAgICAgICByZXR1cm4gZkNvbnRlbnRzOworICAgIH0KK307CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0J1ZGRoaXN0Q2FsZW5kYXJTeW1ib2xzX2h1LmphdmEgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0J1ZGRoaXN0Q2FsZW5kYXJTeW1ib2xzX2h1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOGE3M2RmNAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQnVkZGhpc3RDYWxlbmRhclN5bWJvbHNfaHUuamF2YQpAQCAtMCwwICsxLDMzIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0F0dGljL0J1ZGRoaXN0Q2FsZW5kYXJTeW1ib2xzX2h1LmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDIvMTYgMDM6MDU6MzkgJCAKKyAqICRSZXZpc2lvbjogMS40ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5pbXBsLmRhdGE7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCisvKioKKyAqIEh1bmdhcmlhbiBEYXRlIEZvcm1hdCBzeW1ib2xzIGZvciB0aGUgQnVkZGhpc3QgQ2FsZW5kYXIKKyAqLworcHVibGljIGNsYXNzIEJ1ZGRoaXN0Q2FsZW5kYXJTeW1ib2xzX2h1IGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKworICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBjb3B5cmlnaHQgPSAiQ29weXJpZ2h0IFx1MDBhOSAxOTk4IElCTSBDb3JwLiBBbGwgUmlnaHRzIFJlc2VydmVkLiI7CisKKyAgICBzdGF0aWMgZmluYWwgT2JqZWN0W11bXSBmQ29udGVudHMgPSB7CisgICAgICAgIHsgIkVyYXMiLCBuZXcgU3RyaW5nW10geworICAgICAgICAgICAgICAgICJCSyIKKyAgICAgICAgICAgIH0gfSwKKyAgICB9OworCisgICAgcHVibGljIHN5bmNocm9uaXplZCBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeworICAgICAgICByZXR1cm4gZkNvbnRlbnRzOworICAgIH0KK307CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0J1ZGRoaXN0Q2FsZW5kYXJTeW1ib2xzX3RoLmphdmEgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0J1ZGRoaXN0Q2FsZW5kYXJTeW1ib2xzX3RoLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNjUyNjliZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQnVkZGhpc3RDYWxlbmRhclN5bWJvbHNfdGguamF2YQpAQCAtMCwwICsxLDMzIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0F0dGljL0J1ZGRoaXN0Q2FsZW5kYXJTeW1ib2xzX3RoLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDIvMTYgMDM6MDU6MzkgJCAKKyAqICRSZXZpc2lvbjogMS40ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5pbXBsLmRhdGE7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCisvKioKKyAqIFRoYWkgdmVyc2lvbiBvZiB0aGUgRGF0ZSBGb3JtYXQgc3ltYm9scyBmb3IgdGhlIEJ1ZGRoaXN0IGNhbGVuZGFyCisgKi8KK3B1YmxpYyBjbGFzcyBCdWRkaGlzdENhbGVuZGFyU3ltYm9sc190aCBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgY29weXJpZ2h0ID0gIkNvcHlyaWdodCBcdTAwYTkgMTk5OCBJQk0gQ29ycC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4iOworCisgICAgc3RhdGljIGZpbmFsIE9iamVjdFtdW10gZkNvbnRlbnRzID0geworICAgICAgICB7ICJFcmFzIiwgbmV3IFN0cmluZ1tdIHsKKyAgICAgICAgICAgICAgICAiXHUwZTFlLlx1MGUyOC4iCisgICAgICAgICAgICB9IH0sCisgICAgfTsKKworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsKKyAgICAgICAgcmV0dXJuIGZDb250ZW50czsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9DYWxlbmRhckRhdGEuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQ2FsZW5kYXJEYXRhLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOGRjZWE0YQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQ2FsZW5kYXJEYXRhLmphdmEKQEAgLTAsMCArMSwzMiBAQAorLyoqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQXR0aWMvQ2FsZW5kYXJEYXRhLmphdmEsdiAkCisgKiAkRGF0ZTogMjAwMi8wOC8xMyAyMzozNjoxOSAkCisgKiAkUmV2aXNpb246IDEuMyAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5pbXBsLmRhdGE7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCisvLyBEZWZhdWx0CitwdWJsaWMgY2xhc3MgQ2FsZW5kYXJEYXRhIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZXMgTGlzdFJlc291cmNlQnVuZGxlCisgICAgICovCisgICAgcHVibGljIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7CisgICAgICAgIHJldHVybiBuZXcgT2JqZWN0W11bXSB7CisgICAgICAgICAgICB7ICJXZWVrZW5kIiwKKyAgICAgICAgICAgICAgICBuZXcgU3RyaW5nW10geyAvLyBTYXR1cmRheTpTdW5kYXkKKyAgICAgICAgICAgICAgICAgICAgIjciLCAiMCIsIC8vIG9uc2V0IGRvdywgbWlsbGlzIGluIGRheQorICAgICAgICAgICAgICAgICAgICAiMiIsICIwIiAgLy8gY2Vhc2UgZG93LCBtaWxsaXMgaW4gZGF5CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgfTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0NhbGVuZGFyRGF0YV9hcl9BRS5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9DYWxlbmRhckRhdGFfYXJfQUUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43ZDI2YzgyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9DYWxlbmRhckRhdGFfYXJfQUUuamF2YQpAQCAtMCwwICsxLDMyIEBACisvKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9BdHRpYy9DYWxlbmRhckRhdGFfYXJfQUUuamF2YSx2ICQKKyAqICREYXRlOiAyMDAyLzA4LzEzIDIzOjM2OjE5ICQKKyAqICRSZXZpc2lvbjogMS4zICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmltcGwuZGF0YTsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKKy8vIEFyYWJpYywgVW5pdGVkIEFyYWIgRW1pcmF0ZXMKK3B1YmxpYyBjbGFzcyBDYWxlbmRhckRhdGFfYXJfQUUgZXh0ZW5kcyBMaXN0UmVzb3VyY2VCdW5kbGUgeworICAgIC8qKgorICAgICAqIE92ZXJyaWRlcyBMaXN0UmVzb3VyY2VCdW5kbGUKKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBPYmplY3RbXVtdIHsKKyAgICAgICAgICAgIHsgIldlZWtlbmQiLAorICAgICAgICAgICAgICAgIG5ldyBTdHJpbmdbXSB7IC8vIFRodXJzZGF5OkZyaWRheQorICAgICAgICAgICAgICAgICAgICAiNSIsICIwIiwgLy8gb25zZXQgZG93LCBtaWxsaXMgaW4gZGF5CisgICAgICAgICAgICAgICAgICAgICI3IiwgIjAiICAvLyBjZWFzZSBkb3csIG1pbGxpcyBpbiBkYXkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICB9OworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQ2FsZW5kYXJEYXRhX2FyX0JILmphdmEgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0NhbGVuZGFyRGF0YV9hcl9CSC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjc1MTIyMzMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0NhbGVuZGFyRGF0YV9hcl9CSC5qYXZhCkBAIC0wLDAgKzEsMzIgQEAKKy8qKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMS0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0F0dGljL0NhbGVuZGFyRGF0YV9hcl9CSC5qYXZhLHYgJAorICogJERhdGU6IDIwMDIvMDgvMTMgMjM6MzY6MTkgJAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuaW1wbC5kYXRhOworCitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKKworLy8gQXJhYmljLCBCYWhyYWluCitwdWJsaWMgY2xhc3MgQ2FsZW5kYXJEYXRhX2FyX0JIIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZXMgTGlzdFJlc291cmNlQnVuZGxlCisgICAgICovCisgICAgcHVibGljIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7CisgICAgICAgIHJldHVybiBuZXcgT2JqZWN0W11bXSB7CisgICAgICAgICAgICB7ICJXZWVrZW5kIiwKKyAgICAgICAgICAgICAgICBuZXcgU3RyaW5nW10geyAvLyBUaHVyc2RheTpGcmlkYXkKKyAgICAgICAgICAgICAgICAgICAgIjUiLCAiMCIsIC8vIG9uc2V0IGRvdywgbWlsbGlzIGluIGRheQorICAgICAgICAgICAgICAgICAgICAiNyIsICIwIiAgLy8gY2Vhc2UgZG93LCBtaWxsaXMgaW4gZGF5CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgfTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0NhbGVuZGFyRGF0YV9hcl9EWi5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9DYWxlbmRhckRhdGFfYXJfRFouamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xNDE3OTVmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9DYWxlbmRhckRhdGFfYXJfRFouamF2YQpAQCAtMCwwICsxLDMyIEBACisvKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9BdHRpYy9DYWxlbmRhckRhdGFfYXJfRFouamF2YSx2ICQKKyAqICREYXRlOiAyMDAyLzA4LzEzIDIzOjM2OjE5ICQKKyAqICRSZXZpc2lvbjogMS4zICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmltcGwuZGF0YTsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKKy8vIEFyYWJpYywgQWxnZXJpYQorcHVibGljIGNsYXNzIENhbGVuZGFyRGF0YV9hcl9EWiBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisgICAgLyoqCisgICAgICogT3ZlcnJpZGVzIExpc3RSZXNvdXJjZUJ1bmRsZQorICAgICAqLworICAgIHB1YmxpYyBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeworICAgICAgICByZXR1cm4gbmV3IE9iamVjdFtdW10geworICAgICAgICAgICAgeyAiV2Vla2VuZCIsCisgICAgICAgICAgICAgICAgbmV3IFN0cmluZ1tdIHsgLy8gVGh1cnNkYXk6RnJpZGF5CisgICAgICAgICAgICAgICAgICAgICI1IiwgIjAiLCAvLyBvbnNldCBkb3csIG1pbGxpcyBpbiBkYXkKKyAgICAgICAgICAgICAgICAgICAgIjciLCAiMCIgIC8vIGNlYXNlIGRvdywgbWlsbGlzIGluIGRheQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgIH07CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9DYWxlbmRhckRhdGFfYXJfRUcuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQ2FsZW5kYXJEYXRhX2FyX0VHLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMjBjZTg5ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQ2FsZW5kYXJEYXRhX2FyX0VHLmphdmEKQEAgLTAsMCArMSwzMiBAQAorLyoqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQXR0aWMvQ2FsZW5kYXJEYXRhX2FyX0VHLmphdmEsdiAkCisgKiAkRGF0ZTogMjAwMi8wOC8xMyAyMzozNjoxOSAkCisgKiAkUmV2aXNpb246IDEuMyAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5pbXBsLmRhdGE7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCisvLyBBcmFiaWMsIEVneXB0CitwdWJsaWMgY2xhc3MgQ2FsZW5kYXJEYXRhX2FyX0VHIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZXMgTGlzdFJlc291cmNlQnVuZGxlCisgICAgICovCisgICAgcHVibGljIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7CisgICAgICAgIHJldHVybiBuZXcgT2JqZWN0W11bXSB7CisgICAgICAgICAgICB7ICJXZWVrZW5kIiwKKyAgICAgICAgICAgICAgICBuZXcgU3RyaW5nW10geyAvLyBGcmlkYXk6U2F0dXJkYXkKKyAgICAgICAgICAgICAgICAgICAgIjYiLCAiMCIsIC8vIG9uc2V0IGRvdywgbWlsbGlzIGluIGRheQorICAgICAgICAgICAgICAgICAgICAiMSIsICIwIiAgLy8gY2Vhc2UgZG93LCBtaWxsaXMgaW4gZGF5CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgfTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0NhbGVuZGFyRGF0YV9hcl9KTy5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9DYWxlbmRhckRhdGFfYXJfSk8uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42MTU3MWE3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9DYWxlbmRhckRhdGFfYXJfSk8uamF2YQpAQCAtMCwwICsxLDMyIEBACisvKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9BdHRpYy9DYWxlbmRhckRhdGFfYXJfSk8uamF2YSx2ICQKKyAqICREYXRlOiAyMDAyLzA4LzEzIDIzOjM2OjE5ICQKKyAqICRSZXZpc2lvbjogMS4zICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmltcGwuZGF0YTsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKKy8vIEFyYWJpYywgSm9yZGFuCitwdWJsaWMgY2xhc3MgQ2FsZW5kYXJEYXRhX2FyX0pPIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZXMgTGlzdFJlc291cmNlQnVuZGxlCisgICAgICovCisgICAgcHVibGljIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7CisgICAgICAgIHJldHVybiBuZXcgT2JqZWN0W11bXSB7CisgICAgICAgICAgICB7ICJXZWVrZW5kIiwKKyAgICAgICAgICAgICAgICBuZXcgU3RyaW5nW10geyAvLyBUaHVyc2RheTpGcmlkYXkKKyAgICAgICAgICAgICAgICAgICAgIjUiLCAiMCIsIC8vIG9uc2V0IGRvdywgbWlsbGlzIGluIGRheQorICAgICAgICAgICAgICAgICAgICAiNyIsICIwIiAgLy8gY2Vhc2UgZG93LCBtaWxsaXMgaW4gZGF5CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgfTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0NhbGVuZGFyRGF0YV9hcl9LVy5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9DYWxlbmRhckRhdGFfYXJfS1cuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5jMDUwYjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9DYWxlbmRhckRhdGFfYXJfS1cuamF2YQpAQCAtMCwwICsxLDMyIEBACisvKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9BdHRpYy9DYWxlbmRhckRhdGFfYXJfS1cuamF2YSx2ICQKKyAqICREYXRlOiAyMDAyLzA4LzEzIDIzOjM2OjE5ICQKKyAqICRSZXZpc2lvbjogMS4zICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmltcGwuZGF0YTsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKKy8vIEFyYWJpYywgS3V3YWl0CitwdWJsaWMgY2xhc3MgQ2FsZW5kYXJEYXRhX2FyX0tXIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZXMgTGlzdFJlc291cmNlQnVuZGxlCisgICAgICovCisgICAgcHVibGljIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7CisgICAgICAgIHJldHVybiBuZXcgT2JqZWN0W11bXSB7CisgICAgICAgICAgICB7ICJXZWVrZW5kIiwKKyAgICAgICAgICAgICAgICBuZXcgU3RyaW5nW10geyAvLyBUaHVyc2RheTpGcmlkYXkKKyAgICAgICAgICAgICAgICAgICAgIjUiLCAiMCIsIC8vIG9uc2V0IGRvdywgbWlsbGlzIGluIGRheQorICAgICAgICAgICAgICAgICAgICAiNyIsICIwIiAgLy8gY2Vhc2UgZG93LCBtaWxsaXMgaW4gZGF5CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgfTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0NhbGVuZGFyRGF0YV9hcl9PTS5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9DYWxlbmRhckRhdGFfYXJfT00uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mZDY3N2FjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9DYWxlbmRhckRhdGFfYXJfT00uamF2YQpAQCAtMCwwICsxLDMyIEBACisvKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9BdHRpYy9DYWxlbmRhckRhdGFfYXJfT00uamF2YSx2ICQKKyAqICREYXRlOiAyMDAyLzA4LzEzIDIzOjM2OjE5ICQKKyAqICRSZXZpc2lvbjogMS4zICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmltcGwuZGF0YTsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKKy8vIEFyYWJpYywgT21hbgorcHVibGljIGNsYXNzIENhbGVuZGFyRGF0YV9hcl9PTSBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisgICAgLyoqCisgICAgICogT3ZlcnJpZGVzIExpc3RSZXNvdXJjZUJ1bmRsZQorICAgICAqLworICAgIHB1YmxpYyBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeworICAgICAgICByZXR1cm4gbmV3IE9iamVjdFtdW10geworICAgICAgICAgICAgeyAiV2Vla2VuZCIsCisgICAgICAgICAgICAgICAgbmV3IFN0cmluZ1tdIHsgLy8gVGh1cnNkYXk6RnJpZGF5CisgICAgICAgICAgICAgICAgICAgICI1IiwgIjAiLCAvLyBvbnNldCBkb3csIG1pbGxpcyBpbiBkYXkKKyAgICAgICAgICAgICAgICAgICAgIjciLCAiMCIgIC8vIGNlYXNlIGRvdywgbWlsbGlzIGluIGRheQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgIH07CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9DYWxlbmRhckRhdGFfYXJfUUEuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQ2FsZW5kYXJEYXRhX2FyX1FBLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOGRkNGRkZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQ2FsZW5kYXJEYXRhX2FyX1FBLmphdmEKQEAgLTAsMCArMSwzMiBAQAorLyoqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQXR0aWMvQ2FsZW5kYXJEYXRhX2FyX1FBLmphdmEsdiAkCisgKiAkRGF0ZTogMjAwMi8wOC8xMyAyMzozNjoxOSAkCisgKiAkUmV2aXNpb246IDEuMyAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5pbXBsLmRhdGE7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCisvLyBBcmFiaWMsIFFhdGFyCitwdWJsaWMgY2xhc3MgQ2FsZW5kYXJEYXRhX2FyX1FBIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZXMgTGlzdFJlc291cmNlQnVuZGxlCisgICAgICovCisgICAgcHVibGljIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7CisgICAgICAgIHJldHVybiBuZXcgT2JqZWN0W11bXSB7CisgICAgICAgICAgICB7ICJXZWVrZW5kIiwKKyAgICAgICAgICAgICAgICBuZXcgU3RyaW5nW10geyAvLyBUaHVyc2RheTpGcmlkYXkKKyAgICAgICAgICAgICAgICAgICAgIjUiLCAiMCIsIC8vIG9uc2V0IGRvdywgbWlsbGlzIGluIGRheQorICAgICAgICAgICAgICAgICAgICAiNyIsICIwIiAgLy8gY2Vhc2UgZG93LCBtaWxsaXMgaW4gZGF5CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgfTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0NhbGVuZGFyRGF0YV9hcl9TQS5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9DYWxlbmRhckRhdGFfYXJfU0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4yM2E5MTY0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9DYWxlbmRhckRhdGFfYXJfU0EuamF2YQpAQCAtMCwwICsxLDMyIEBACisvKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9BdHRpYy9DYWxlbmRhckRhdGFfYXJfU0EuamF2YSx2ICQKKyAqICREYXRlOiAyMDAyLzA4LzEzIDIzOjM2OjE5ICQKKyAqICRSZXZpc2lvbjogMS4zICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmltcGwuZGF0YTsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKKy8vIEFyYWJpYywgU2F1ZGkgQXJhYmlhCitwdWJsaWMgY2xhc3MgQ2FsZW5kYXJEYXRhX2FyX1NBIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZXMgTGlzdFJlc291cmNlQnVuZGxlCisgICAgICovCisgICAgcHVibGljIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7CisgICAgICAgIHJldHVybiBuZXcgT2JqZWN0W11bXSB7CisgICAgICAgICAgICB7ICJXZWVrZW5kIiwKKyAgICAgICAgICAgICAgICBuZXcgU3RyaW5nW10geyAvLyBUaHVyc2RheTpGcmlkYXkKKyAgICAgICAgICAgICAgICAgICAgIjUiLCAiMCIsIC8vIG9uc2V0IGRvdywgbWlsbGlzIGluIGRheQorICAgICAgICAgICAgICAgICAgICAiNyIsICIwIiAgLy8gY2Vhc2UgZG93LCBtaWxsaXMgaW4gZGF5CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgfTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0NhbGVuZGFyRGF0YV9hcl9TWS5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9DYWxlbmRhckRhdGFfYXJfU1kuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi40YWYxOTQyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9DYWxlbmRhckRhdGFfYXJfU1kuamF2YQpAQCAtMCwwICsxLDMyIEBACisvKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9BdHRpYy9DYWxlbmRhckRhdGFfYXJfU1kuamF2YSx2ICQKKyAqICREYXRlOiAyMDAyLzA4LzEzIDIzOjM2OjE5ICQKKyAqICRSZXZpc2lvbjogMS4zICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmltcGwuZGF0YTsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKKy8vIEFyYWJpYywgU3lyaWEKK3B1YmxpYyBjbGFzcyBDYWxlbmRhckRhdGFfYXJfU1kgZXh0ZW5kcyBMaXN0UmVzb3VyY2VCdW5kbGUgeworICAgIC8qKgorICAgICAqIE92ZXJyaWRlcyBMaXN0UmVzb3VyY2VCdW5kbGUKKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBPYmplY3RbXVtdIHsKKyAgICAgICAgICAgIHsgIldlZWtlbmQiLAorICAgICAgICAgICAgICAgIG5ldyBTdHJpbmdbXSB7IC8vIEZyaWRheTpTYXR1cmRheQorICAgICAgICAgICAgICAgICAgICAiNiIsICIwIiwgLy8gb25zZXQgZG93LCBtaWxsaXMgaW4gZGF5CisgICAgICAgICAgICAgICAgICAgICIxIiwgIjAiICAvLyBjZWFzZSBkb3csIG1pbGxpcyBpbiBkYXkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICB9OworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQ2FsZW5kYXJEYXRhX2FyX1lFLmphdmEgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0NhbGVuZGFyRGF0YV9hcl9ZRS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmEzMWY1MWUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0NhbGVuZGFyRGF0YV9hcl9ZRS5qYXZhCkBAIC0wLDAgKzEsMzIgQEAKKy8qKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMS0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0F0dGljL0NhbGVuZGFyRGF0YV9hcl9ZRS5qYXZhLHYgJAorICogJERhdGU6IDIwMDIvMDgvMTMgMjM6MzY6MTkgJAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuaW1wbC5kYXRhOworCitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKKworLy8gQXJhYmljLCBZZW1lbgorcHVibGljIGNsYXNzIENhbGVuZGFyRGF0YV9hcl9ZRSBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisgICAgLyoqCisgICAgICogT3ZlcnJpZGVzIExpc3RSZXNvdXJjZUJ1bmRsZQorICAgICAqLworICAgIHB1YmxpYyBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeworICAgICAgICByZXR1cm4gbmV3IE9iamVjdFtdW10geworICAgICAgICAgICAgeyAiV2Vla2VuZCIsCisgICAgICAgICAgICAgICAgbmV3IFN0cmluZ1tdIHsgLy8gVGh1cnNkYXk6RnJpZGF5CisgICAgICAgICAgICAgICAgICAgICI1IiwgIjAiLCAvLyBvbnNldCBkb3csIG1pbGxpcyBpbiBkYXkKKyAgICAgICAgICAgICAgICAgICAgIjciLCAiMCIgIC8vIGNlYXNlIGRvdywgbWlsbGlzIGluIGRheQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgIH07CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9DYWxlbmRhckRhdGFfaXdfSUwuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQ2FsZW5kYXJEYXRhX2l3X0lMLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZWUyYmQyOQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQ2FsZW5kYXJEYXRhX2l3X0lMLmphdmEKQEAgLTAsMCArMSwzMiBAQAorLyoqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQXR0aWMvQ2FsZW5kYXJEYXRhX2l3X0lMLmphdmEsdiAkCisgKiAkRGF0ZTogMjAwMi8wOC8xMyAyMzozNjoxOSAkCisgKiAkUmV2aXNpb246IDEuMyAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5pbXBsLmRhdGE7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCisvLyBIZWJyZXcsIElzcmFlbAorcHVibGljIGNsYXNzIENhbGVuZGFyRGF0YV9pd19JTCBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisgICAgLyoqCisgICAgICogT3ZlcnJpZGVzIExpc3RSZXNvdXJjZUJ1bmRsZQorICAgICAqLworICAgIHB1YmxpYyBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeworICAgICAgICByZXR1cm4gbmV3IE9iamVjdFtdW10geworICAgICAgICAgICAgeyAiV2Vla2VuZCIsCisgICAgICAgICAgICAgICAgbmV3IFN0cmluZ1tdIHsgLy8gRnJpZGF5OlNhdHVyZGF5CisgICAgICAgICAgICAgICAgICAgICI2IiwgIjAiLCAvLyBvbnNldCBkb3csIG1pbGxpcyBpbiBkYXkKKyAgICAgICAgICAgICAgICAgICAgIjEiLCAiMCIgIC8vIGNlYXNlIGRvdywgbWlsbGlzIGluIGRheQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgIH07CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9DYWxlbmRhckRhdGFfbXNfTVkuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQ2FsZW5kYXJEYXRhX21zX01ZLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYTUwYjdhYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQ2FsZW5kYXJEYXRhX21zX01ZLmphdmEKQEAgLTAsMCArMSwzMiBAQAorLyoqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAxLTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQXR0aWMvQ2FsZW5kYXJEYXRhX21zX01ZLmphdmEsdiAkCisgKiAkRGF0ZTogMjAwMi8wOC8xMyAyMzozNjoxOSAkCisgKiAkUmV2aXNpb246IDEuNCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5pbXBsLmRhdGE7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCisvLyBCYWhhc2EgTWFsYXlzaWEsIE1hbGF5c2lhCitwdWJsaWMgY2xhc3MgQ2FsZW5kYXJEYXRhX21zX01ZIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZXMgTGlzdFJlc291cmNlQnVuZGxlCisgICAgICovCisgICAgcHVibGljIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7CisgICAgICAgIHJldHVybiBuZXcgT2JqZWN0W11bXSB7CisgICAgICAgICAgICB7ICJXZWVrZW5kIiwKKyAgICAgICAgICAgICAgICBuZXcgU3RyaW5nW10geyAvLyBTYXR1cmRheSAtIGhhbGYgZGF5IGluIHNvbWUgb2ZmaWNlczpTdW5kYXkKKyAgICAgICAgICAgICAgICAgICAgIjAiLCAiMCIsIC8vIG9uc2V0IGRvdywgbWlsbGlzIGluIGRheQorICAgICAgICAgICAgICAgICAgICAiMCIsICIwIiAgLy8gY2Vhc2UgZG93LCBtaWxsaXMgaW4gZGF5CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgfTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0NhbGVuZGFyRGF0YV90ZV9JTi5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9DYWxlbmRhckRhdGFfdGVfSU4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41ZTViNWE5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9DYWxlbmRhckRhdGFfdGVfSU4uamF2YQpAQCAtMCwwICsxLDMyIEBACisvKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9BdHRpYy9DYWxlbmRhckRhdGFfdGVfSU4uamF2YSx2ICQKKyAqICREYXRlOiAyMDAyLzA4LzEzIDIzOjM2OjE5ICQKKyAqICRSZXZpc2lvbjogMS4zICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmltcGwuZGF0YTsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKKy8vIFRlbHVndSwgSW5kaWEKK3B1YmxpYyBjbGFzcyBDYWxlbmRhckRhdGFfdGVfSU4gZXh0ZW5kcyBMaXN0UmVzb3VyY2VCdW5kbGUgeworICAgIC8qKgorICAgICAqIE92ZXJyaWRlcyBMaXN0UmVzb3VyY2VCdW5kbGUKKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBPYmplY3RbXVtdIHsKKyAgICAgICAgICAgIHsgIldlZWtlbmQiLAorICAgICAgICAgICAgICAgIG5ldyBTdHJpbmdbXSB7IC8vIFN1bmRheQorICAgICAgICAgICAgICAgICAgICAiMSIsICIwIiwgLy8gb25zZXQgZG93LCBtaWxsaXMgaW4gZGF5CisgICAgICAgICAgICAgICAgICAgICIyIiwgIjAiICAvLyBjZWFzZSBkb3csIG1pbGxpcyBpbiBkYXkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICB9OworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQ2hpbmVzZUNhbGVuZGFyU3ltYm9scy5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9DaGluZXNlQ2FsZW5kYXJTeW1ib2xzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMTc2NmIzNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQ2hpbmVzZUNhbGVuZGFyU3ltYm9scy5qYXZhCkBAIC0wLDAgKzEsNDggQEAKKy8qKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMS0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0F0dGljL0NoaW5lc2VDYWxlbmRhclN5bWJvbHMuamF2YSx2ICQKKyAqICREYXRlOiAyMDAyLzA4LzEzIDIzOjM3OjQ4ICQKKyAqICRSZXZpc2lvbjogMS42ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmltcGwuZGF0YTsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKKy8qKgorICogRGVmYXVsdCBEYXRlIEZvcm1hdCBzeW1ib2xzIGZvciB0aGUgQ2hpbmVzZSBjYWxlbmRhci4KKyAqLworcHVibGljIGNsYXNzIENoaW5lc2VDYWxlbmRhclN5bWJvbHMgZXh0ZW5kcyBMaXN0UmVzb3VyY2VCdW5kbGUgeworCisgICAgc3RhdGljIGZpbmFsIE9iamVjdFtdW10gZkNvbnRlbnRzID0geworICAgICAgICB7ICJJc0xlYXBNb250aCIsCisgICAgICAgICAgICBuZXcgU3RyaW5nW10geworICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAgICAgICIqIgorICAgICAgICAgICAgfSwKKyAgICAgICAgfSwKKyAgICAgICAgeyAiRGF0ZVRpbWVQYXR0ZXJucyIsCisgICAgICAgICAgICBuZXcgU3RyaW5nW10geworICAgICAgICAgICAgICAgICJoOm1tOnNzIGEgeiIsIC8vIGZ1bGwgdGltZSBwYXR0ZXJuCisgICAgICAgICAgICAgICAgImg6bW06c3MgYSB6IiwgLy8gbG9uZyB0aW1lIHBhdHRlcm4KKyAgICAgICAgICAgICAgICAiaDptbTpzcyBhIiwgLy8gbWVkaXVtIHRpbWUgcGF0dGVybgorICAgICAgICAgICAgICAgICJoOm1tIGEiLCAvLyBzaG9ydCB0aW1lIHBhdHRlcm4KKyAgICAgICAgICAgICAgICAvLyBUT0RPIEZpeCB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgIkVFRUUgeSd4J0ctTWwtZCIsIC8vIGZ1bGwgZGF0ZSBwYXR0ZXJuCisgICAgICAgICAgICAgICAgInkneCdHLU1sLWQiLCAvLyBsb25nIGRhdGUgcGF0dGVybgorICAgICAgICAgICAgICAgICJ5J3gnRy1NbC1kIiwgLy8gbWVkaXVtIGRhdGUgcGF0dGVybgorICAgICAgICAgICAgICAgICJ5J3gnRy1NbC1kIiwgLy8gc2hvcnQgZGF0ZSBwYXR0ZXJuCisgICAgICAgICAgICAgICAgInsxfSB7MH0iIC8vIGRhdGUtdGltZSBwYXR0ZXJuCisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgfTsKKworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsKKyAgICAgICAgcmV0dXJuIGZDb250ZW50czsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hlYnJld0NhbGVuZGFyU3ltYm9scy5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9IZWJyZXdDYWxlbmRhclN5bWJvbHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mNjBjMWEzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9IZWJyZXdDYWxlbmRhclN5bWJvbHMuamF2YQpAQCAtMCwwICsxLDQ4IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0F0dGljL0hlYnJld0NhbGVuZGFyU3ltYm9scy5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzAyLzE2IDAzOjA1OjQzICQgCisgKiAkUmV2aXNpb246IDEuNCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuaW1wbC5kYXRhOworCitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKKworLyoqCisgKiBEZWZhdWx0IERhdGUgRm9ybWF0IHN5bWJvbHMgZm9yIHRoZSBIZWJyZXcgQ2FsZW5kYXIKKyAqLworcHVibGljIGNsYXNzIEhlYnJld0NhbGVuZGFyU3ltYm9scyBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgY29weXJpZ2h0ID0gIkNvcHlyaWdodCBcdTAwYTkgMTk5OCBJQk0gQ29ycC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4iOworCisgICAgc3RhdGljIGZpbmFsIE9iamVjdFtdW10gZkNvbnRlbnRzID0geworICAgICAgICB7ICJNb250aE5hbWVzIiwgbmV3IFN0cmluZ1tdIHsgCisgICAgICAgICAgICAgICAgIlRpc2hyaSIsCisgICAgICAgICAgICAgICAgIkhlc2h2YW4iLAorICAgICAgICAgICAgICAgICJLaXNsZXYiLAorICAgICAgICAgICAgICAgICJUZXZldCIsCisgICAgICAgICAgICAgICAgIlNoZXZhdCIsCisgICAgICAgICAgICAgICAgIkFkYXIgSSIsICAgICAgIC8vIExlYXAgeWVhcnMgb25seQorICAgICAgICAgICAgICAgICJBZGFyIiwKKyAgICAgICAgICAgICAgICAiTmlzYW4iLAorICAgICAgICAgICAgICAgICJJeWFyIiwKKyAgICAgICAgICAgICAgICAiU2l2YW4iLAorICAgICAgICAgICAgICAgICJUYW11eiIsCisgICAgICAgICAgICAgICAgIkF2IiwKKyAgICAgICAgICAgICAgICAiRWx1bCIsCisgICAgICAgICAgICB9IH0sCisgICAgICAgIHsgIkVyYXMiLCBuZXcgU3RyaW5nW10geyAKKyAgICAgICAgICAgICAgICAiQU0iCisgICAgICAgICAgICB9IH0sCisgICAgfTsKKyAgICAgICAgCisgICAgcHVibGljIHN5bmNocm9uaXplZCBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeworICAgICAgICByZXR1cm4gZkNvbnRlbnRzOworICAgIH0KK307CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hlYnJld0NhbGVuZGFyU3ltYm9sc19maS5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9IZWJyZXdDYWxlbmRhclN5bWJvbHNfZmkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi40ZjVkY2ZmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9IZWJyZXdDYWxlbmRhclN5bWJvbHNfZmkuamF2YQpAQCAtMCwwICsxLDUxIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0F0dGljL0hlYnJld0NhbGVuZGFyU3ltYm9sc19maS5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzAyLzE2IDAzOjA1OjQzICQgCisgKiAkUmV2aXNpb246IDEuNCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuaW1wbC5kYXRhOworCitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKKworLyoqCisgKiBGaW5uaXNoIGRhdGUgZm9ybWF0IHN5bWJvbHMgZm9yIHRoZSBIZWJyZXcgQ2FsZW5kYXIKKyAqLworcHVibGljIGNsYXNzIEhlYnJld0NhbGVuZGFyU3ltYm9sc19maSBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgY29weXJpZ2h0ID0gIkNvcHlyaWdodCBcdTAwYTkgMTk5OCBJQk0gQ29ycC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4iOworCisgICAgc3RhdGljIGZpbmFsIE9iamVjdFtdW10gZkNvbnRlbnRzID0geworICAgICAgICB7ICJOYW1lIiwgICAgICAgIkp1dXRhbGFpbmVuIGthbGVudGVyaSIgfSwKKyAgICAgICAgCisgICAgICAgIHsgIk1vbnRoTmFtZXMiLCBuZXcgU3RyaW5nW10geworICAgICAgICAgICAgICAgICJUaVx1MDE2MXJcdTAwRUNrdXUiLCAgICAgICAvLyBUaXNocmkKKyAgICAgICAgICAgICAgICAiSGVcdTAxNjF2XHUwMEUxbmt1dSIsICAgICAgLy8gSGVzaHZhbgorICAgICAgICAgICAgICAgICJLaXNsXHUwMEU5dmt1dSIsICAgICAgICAgICAvLyBLaXNsZXYKKyAgICAgICAgICAgICAgICAiVGV2XHUwMEU5dGt1dSIsICAgICAgICAgICAgLy8gVGV2ZXQKKyAgICAgICAgICAgICAgICAiXHUwMTYwZXZhdGt1dSIsICAgICAgICAgICAgLy8gU2hldmF0CisgICAgICAgICAgICAgICAgIkFkXHUwMEUxcmt1dSIsICAgICAgICAgICAgIC8vIEFkYXIgSQorICAgICAgICAgICAgICAgICJBZFx1MDBFMXJrdXUgSUkiLCAgICAgICAgICAvLyBBZGFyCisgICAgICAgICAgICAgICAgIk5pc1x1MDBFMW5rdXUiLCAgICAgICAgICAgIC8vIE5pc2FuCisgICAgICAgICAgICAgICAgIklqalx1MDBFMXJrdXUiLCAgICAgICAgICAgIC8vIEl5YXIKKyAgICAgICAgICAgICAgICAiU2l2XHUwMEUxbmt1dSIsICAgICAgICAgICAgLy8gU2l2YW4KKyAgICAgICAgICAgICAgICAiVGFtbVx1MDBGQXprdXUiLCAgICAgICAgICAgLy8gVGFtdXoKKyAgICAgICAgICAgICAgICAiQWJrdXUiLCAgICAgICAgICAgICAgICAgICAgLy8gQXYKKyAgICAgICAgICAgICAgICAiRWxcdTAwRkFsa3V1IiwgICAgICAgICAgICAgLy8gRWx1bAorICAgICAgICAgICAgfSB9LAorCisgICAgICAgIHsgIkVyYXMiLCBuZXcgU3RyaW5nW10geyAKKyAgICAgICAgICAgICAgICAiQU0iICAgICAgICAgICAgICAgICAgICAgICAgLy8gQW5ubyBNdW5kaQorICAgICAgICAgICAgfSB9LAorICAgIH07CisKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7CisgICAgICAgIHJldHVybiBmQ29udGVudHM7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSGVicmV3Q2FsZW5kYXJTeW1ib2xzX2ZyLmphdmEgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hlYnJld0NhbGVuZGFyU3ltYm9sc19mci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmExMDI0YmYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hlYnJld0NhbGVuZGFyU3ltYm9sc19mci5qYXZhCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQXR0aWMvSGVicmV3Q2FsZW5kYXJTeW1ib2xzX2ZyLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDIvMTYgMDM6MDU6NDMgJCAKKyAqICRSZXZpc2lvbjogMS40ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5pbXBsLmRhdGE7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCisvKioKKyAqIEZyZW5jaCBkYXRlIGZvcm1hdCBzeW1ib2xzIGZvciB0aGUgSGVicmV3IENhbGVuZGFyLgorICogVGhpcyBkYXRhIGFjdHVhbGx5IGFwcGxpZXMgdG8gRnJlbmNoIENhbmFkaWFuLiAgSWYgd2UgcmVjZWl2ZQorICogb2ZmaWNpYWwgRnJlbmNoIGRhdGEgZnJvbSBvdXIgRnJhbmNlIG9mZmljZSwgd2Ugc2hvdWxkIG1vdmUgdGhlIAorICogRnJlbmNoIENhbmFkaWFuIGRhdGEgKGlmIGl0J3MgZGlmZmVyZW50KSBkb3duIGludG8gX2ZyX0NBCisgKi8KK3B1YmxpYyBjbGFzcyBIZWJyZXdDYWxlbmRhclN5bWJvbHNfZnIgZXh0ZW5kcyBMaXN0UmVzb3VyY2VCdW5kbGUgeworCisgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGNvcHlyaWdodCA9ICJDb3B5cmlnaHQgXHUwMGE5IDE5OTggSUJNIENvcnAuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuIjsKKworICAgIHN0YXRpYyBmaW5hbCBPYmplY3RbXVtdIGZDb250ZW50cyA9IHsKKyAgICAgICAgeyAiTW9udGhOYW1lcyIsIG5ldyBTdHJpbmdbXSB7CisgICAgICAgICAgICAgICAgIlRpc3NlcmkiLCAgICAgIC8vIFRpc2hyaQorICAgICAgICAgICAgICAgICJIZXN2YW4iLCAgICAgICAvLyBIZXNodmFuCisgICAgICAgICAgICAgICAgIktpc2xldiIsICAgICAgIC8vIEtpc2xldgorICAgICAgICAgICAgICAgICJUXHUwMGU5YmV0aCIsICAvLyBUZXZldAorICAgICAgICAgICAgICAgICJTY2hcdTAwZTliYXQiLCAvLyBTaGV2YXQKKyAgICAgICAgICAgICAgICAiQWRhciIsICAgICAgICAgLy8gQWRhciBJCisgICAgICAgICAgICAgICAgIkFkYXIgSUkiLCAgICAgIC8vIEFkYXIKKyAgICAgICAgICAgICAgICAiTmlzc2FuIiwgICAgICAgLy8gTmlzYW4KKyAgICAgICAgICAgICAgICAiSXlhciIsICAgICAgICAgLy8gSXlhcgorICAgICAgICAgICAgICAgICJTaXZhbiIsICAgICAgICAvLyBTaXZhbgorICAgICAgICAgICAgICAgICJUYW1vdXoiLCAgICAgICAvLyBUYW11egorICAgICAgICAgICAgICAgICJBYiIsICAgICAgICAgICAvLyBBdgorICAgICAgICAgICAgICAgICJFbGxvdWwiLCAgICAgICAvLyBFbHVsCisgICAgICAgICAgICB9IH0sCisgICAgfTsKKworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsKKyAgICAgICAgcmV0dXJuIGZDb250ZW50czsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9IZWJyZXdDYWxlbmRhclN5bWJvbHNfaHUuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSGVicmV3Q2FsZW5kYXJTeW1ib2xzX2h1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMzY1NGYxZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSGVicmV3Q2FsZW5kYXJTeW1ib2xzX2h1LmphdmEKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9BdHRpYy9IZWJyZXdDYWxlbmRhclN5bWJvbHNfaHUuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNTo0MyAkIAorICogJFJldmlzaW9uOiAxLjQgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmltcGwuZGF0YTsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKKy8qKgorICogSHVuZ2FyaWFuIGRhdGUgZm9ybWF0IHN5bWJvbHMgZm9yIHRoZSBIZWJyZXcgQ2FsZW5kYXIKKyAqLworcHVibGljIGNsYXNzIEhlYnJld0NhbGVuZGFyU3ltYm9sc19odSBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgY29weXJpZ2h0ID0gIkNvcHlyaWdodCBcdTAwYTkgMTk5OCBJQk0gQ29ycC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4iOworCisgICAgc3RhdGljIGZpbmFsIE9iamVjdFtdW10gZkNvbnRlbnRzID0geworICAgICAgICB7ICJNb250aE5hbWVzIiwgbmV3IFN0cmluZ1tdIHsKKyAgICAgICAgICAgICAgICAiVGlzcmkiLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRpc2hyaQorICAgICAgICAgICAgICAgICJIZXN2XHUwMEUxbiIsICAgICAgICAgICAgICAgICAgLy8gSGVzaHZhbgorICAgICAgICAgICAgICAgICJLaXN6bFx1MDBFOXYiLCAgICAgICAgICAgICAgICAgLy8gS2lzbGV2CisgICAgICAgICAgICAgICAgIlRcdTAwRTl2XHUwMEU5c3oiLCAgICAgICAgICAgICAvLyBUZXZldAorICAgICAgICAgICAgICAgICJTdlx1MDBFMXQiLCAgICAgICAgICAgICAgICAgICAgLy8gU2hldmF0CisgICAgICAgICAgICAgICAgIlx1MDBDMWRcdTAwRTFyIHJpc1x1MDBGM24iLCAgICAvLyBBZGFyIEkKKyAgICAgICAgICAgICAgICAiXHUwMEMxZFx1MDBFMXIgc1x1MDBFOW5pIiwgICAgIC8vIEFkYXIKKyAgICAgICAgICAgICAgICAiTmlzelx1MDBFMW4iLCAgICAgICAgICAgICAgICAgIC8vIE5pc2FuCisgICAgICAgICAgICAgICAgIklqXHUwMEUxciIsICAgICAgICAgICAgICAgICAgICAvLyBJeWFyCisgICAgICAgICAgICAgICAgIlN6aXZcdTAwRTFuIiwgICAgICAgICAgICAgICAgICAvLyBTaXZhbgorICAgICAgICAgICAgICAgICJUYW11eiIsICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGFtdXoKKyAgICAgICAgICAgICAgICAiXHUwMEMxdiIsICAgICAgICAgICAgICAgICAgICAgIC8vIEF2CisgICAgICAgICAgICAgICAgIkVsdWwiLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFbHVsCisgICAgICAgICAgICB9IH0sCisgICAgICAgIHsgIkVyYXMiLCBuZXcgU3RyaW5nW10geworICAgICAgICAgICAgICAgICJUXHUwMEM5IgorICAgICAgICAgICAgfSB9LAorICAgIH07CisKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7CisgICAgICAgIHJldHVybiBmQ29udGVudHM7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSGVicmV3Q2FsZW5kYXJTeW1ib2xzX2l3LmphdmEgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hlYnJld0NhbGVuZGFyU3ltYm9sc19pdy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjhiNDUyODcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hlYnJld0NhbGVuZGFyU3ltYm9sc19pdy5qYXZhCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQXR0aWMvSGVicmV3Q2FsZW5kYXJTeW1ib2xzX2l3LmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDIvMTYgMDM6MDU6NDMgJCAKKyAqICRSZXZpc2lvbjogMS40ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5pbXBsLmRhdGE7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCisvKioKKyAqIEhlYnJldy1sYW5ndWFnZSBkYXRlIGZvcm1hdCBzeW1ib2xzIGZvciB0aGUgSGVicmV3IENhbGVuZGFyCisgKi8KK3B1YmxpYyBjbGFzcyBIZWJyZXdDYWxlbmRhclN5bWJvbHNfaXcgZXh0ZW5kcyBMaXN0UmVzb3VyY2VCdW5kbGUgeworCisgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGNvcHlyaWdodCA9ICJDb3B5cmlnaHQgXHUwMGE5IDE5OTggSUJNIENvcnAuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuIjsKKworICAgIHN0YXRpYyBmaW5hbCBPYmplY3RbXVtdIGZDb250ZW50cyA9IHsKKyAgICAgICAgeyAiTW9udGhOYW1lcyIsIG5ldyBTdHJpbmdbXSB7IAorICAgICAgICAgICAgICAgICJcdTA1RUFcdTA1RTlcdTA1RThcdTA1RDkiLCAgICAgICAgICAgICAgICAgLy8gVGlzaHJpCisgICAgICAgICAgICAgICAgIlx1MDVEN1x1MDVFOVx1MDVENVx1MDVERiIsICAgICAgICAgICAgICAgICAvLyBIZXNodmFuCisgICAgICAgICAgICAgICAgIlx1MDVEQlx1MDVFMVx1MDVEQ1x1MDVENSIsICAgICAgICAgICAgICAgICAvLyBLaXNsZXYKKyAgICAgICAgICAgICAgICAiXHUwNUQ4XHUwNUQxXHUwNUVBIiwgICAgICAgICAgICAgICAgICAgICAgIC8vIFRldmV0CisgICAgICAgICAgICAgICAgIlx1MDVFOVx1MDVEMVx1MDVEOCIsICAgICAgICAgICAgICAgICAgICAgICAvLyBTaGV2YXQKKyAgICAgICAgICAgICAgICAiXHUwNUU5XHUwNUQxXHUwNUQ4IiwgICAgICAgICAgICAgICAgICAgICAgIC8vIEFkYXIgSQorICAgICAgICAgICAgICAgICJcdTA1RDBcdTA1RDNcdTA1RTggXHUwNUU5XHUwNUUwXHUwNUQ5IiwgICAgLy8gQWRhcgorICAgICAgICAgICAgICAgICJcdTA1RTBcdTA1RDlcdTA1RTFcdTA1REYiLCAgICAgICAgICAgICAgICAgLy8gTmlzYW4KKyAgICAgICAgICAgICAgICAiXHUwNUQwXHUwNUQ5XHUwNUQ5XHUwNUU4IiwgICAgICAgICAgICAgICAgIC8vIEl5YXIKKyAgICAgICAgICAgICAgICAiXHUwNUUxXHUwNUQ5XHUwNUQ1XHUwNURGIiwgICAgICAgICAgICAgICAgIC8vIFNpdmFuCisgICAgICAgICAgICAgICAgIlx1MDVFQVx1MDVERVx1MDVENVx1MDVENiIsICAgICAgICAgICAgICAgICAvLyBUYW11egorICAgICAgICAgICAgICAgICJcdTA1RDBcdTA1RDEiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXYKKyAgICAgICAgICAgICAgICAiXHUwNUQwXHUwNURDXHUwNUQ1XHUwNURDIiwgICAgICAgICAgICAgICAgIC8vIEVsdWwKKyAgICAgICAgICAgIH0gfSwKKyAgICAgICAgeyAiRXJhcyIsIG5ldyBTdHJpbmdbXSB7IAorICAgICAgICAgICAgICAgICJcdTA1RENcdTA1RDFcdTA1RDRcMDQyXHUwNUUyIgorICAgICAgICAgICAgfSB9LAorICAgIH07CisgICAgICAgIAorICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsKKyAgICAgICAgcmV0dXJuIGZDb250ZW50czsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9IZWJyZXdDYWxlbmRhclN5bWJvbHNfbmwuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSGVicmV3Q2FsZW5kYXJTeW1ib2xzX25sLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZTJjNWNkNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSGVicmV3Q2FsZW5kYXJTeW1ib2xzX25sLmphdmEKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9BdHRpYy9IZWJyZXdDYWxlbmRhclN5bWJvbHNfbmwuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNTo0NCAkIAorICogJFJldmlzaW9uOiAxLjQgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmltcGwuZGF0YTsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKKy8qKgorICogRHV0Y2ggZGF0ZSBmb3JtYXQgc3ltYm9scyBmb3IgdGhlIEhlYnJldyBDYWxlbmRhcgorICovCitwdWJsaWMgY2xhc3MgSGVicmV3Q2FsZW5kYXJTeW1ib2xzX25sIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKworICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBjb3B5cmlnaHQgPSAiQ29weXJpZ2h0IFx1MDBhOSAxOTk4IElCTSBDb3JwLiBBbGwgUmlnaHRzIFJlc2VydmVkLiI7CisKKyAgICBzdGF0aWMgZmluYWwgT2JqZWN0W11bXSBmQ29udGVudHMgPSB7CisgICAgICAgIHsgIk1vbnRoTmFtZXMiLCBuZXcgU3RyaW5nW10geworICAgICAgICAgICAgICAgICJUaXNqcmllIiwgICAgICAvLyBUaXNocmkKKyAgICAgICAgICAgICAgICAiQ2hlc2p3YW4iLCAgICAgLy8gSGVzaHZhbgorICAgICAgICAgICAgICAgICJLaXNsZXYiLCAgICAgICAvLyBLaXNsZXYKKyAgICAgICAgICAgICAgICAiVGV2ZXQiLCAgICAgICAgLy8gVGV2ZXQKKyAgICAgICAgICAgICAgICAiU2pldmF0IiwgICAgICAgLy8gU2hldmF0CisgICAgICAgICAgICAgICAgIkFkYXIiLCAgICAgICAgIC8vIEFkYXIgSQorICAgICAgICAgICAgICAgICJBZGFyIEIiLCAgICAgICAvLyBBZGFyCisgICAgICAgICAgICAgICAgIk5pc2FuIiwgICAgICAgIC8vIE5pc2FuCisgICAgICAgICAgICAgICAgIklqYXIiLCAgICAgICAgIC8vIEl5YXIKKyAgICAgICAgICAgICAgICAiU2l2YW4iLCAgICAgICAgLy8gU2l2YW4KKyAgICAgICAgICAgICAgICAiVGFtbW9leiIsICAgICAgLy8gVGFtdXoKKyAgICAgICAgICAgICAgICAiQXYiLCAgICAgICAgICAgLy8gQXYKKyAgICAgICAgICAgICAgICAiRWxsb2VsIiwgICAgICAgLy8gRWx1bAorICAgICAgICAgICAgfSB9LAorICAgIH07CisKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7CisgICAgICAgIHJldHVybiBmQ29udGVudHM7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSG9saWRheUJ1bmRsZS5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9Ib2xpZGF5QnVuZGxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYTg5MTM5NgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSG9saWRheUJ1bmRsZS5qYXZhCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSG9saWRheUJ1bmRsZS5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzAyLzE2IDAzOjA1OjQ0ICQgCisgKiAkUmV2aXNpb246IDEuMyAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworcGFja2FnZSBjb20uaWJtLmljdS5pbXBsLmRhdGE7CisKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLio7CitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKKworcHVibGljIGNsYXNzIEhvbGlkYXlCdW5kbGUgZXh0ZW5kcyBMaXN0UmVzb3VyY2VCdW5kbGUgeworCisgICAgLy8gTm9ybWFsbHksIGVhY2ggSG9saWRheUJ1bmRsZSB1c2VzIHRoZSBob2xpZGF5J3MgVVMgRW5nbGlzaCBuYW1lCisgICAgLy8gYXMgdGhlIHN0cmluZyBrZXkgZm9yIGxvb2tpbmcgdXAgdGhlIGxvY2FsaXplZCBuYW1lLiAgVGhpcyBtZWFucworICAgIC8vIHRoYXQgdGhlIGtleSBpdHNlbGYgY2FuIGJlIHVzZWQgaWYgbm8gbmFtZSBpcyBmb3VuZCBmb3IgdGhlIHJlcXVlc3RlZAorICAgIC8vIGxvY2FsZS4KKyAgICAvLworICAgIC8vIEZvciBob2xpZGF5cyB3aGVyZSB0aGUga2V5IGlzIF9ub3RfIHRoZSBFbmdsaXNoIG5hbWUsIGUuZy4gaW4gdGhlCisgICAgLy8gY2FzZSBvZiBjb25mbGljdHMsIHRoZSBFbmdsaXNoIG5hbWUgbXVzdCBiZSBnaXZlbiBoZXJlLgorICAgIC8vCisgICAgc3RhdGljIHByaXZhdGUgZmluYWwgT2JqZWN0W11bXSBmQ29udGVudHMgPSB7CisgICAgICAgIHsgICAiIiwgIiIgIH0sICAgICAgLy8gQ2FuJ3QgYmUgZW1wdHkhCisgICAgfTsKKworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsgcmV0dXJuIGZDb250ZW50czsgfTsKKworfTsKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSG9saWRheUJ1bmRsZV9kYS5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9Ib2xpZGF5QnVuZGxlX2RhLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNmE2MWViZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSG9saWRheUJ1bmRsZV9kYS5qYXZhCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSG9saWRheUJ1bmRsZV9kYS5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzAyLzE2IDAzOjA1OjQ0ICQgCisgKiAkUmV2aXNpb246IDEuNCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworcGFja2FnZSBjb20uaWJtLmljdS5pbXBsLmRhdGE7CisKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLio7CitpbXBvcnQgamF2YS51dGlsLkNhbGVuZGFyOworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKK3B1YmxpYyBjbGFzcyBIb2xpZGF5QnVuZGxlX2RhIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlCit7CisgICAgc3RhdGljIHByaXZhdGUgZmluYWwgT2JqZWN0W11bXSBmQ29udGVudHMgPQorICAgIHsKKyAgICAgICAgeyAgICJBcm1pc3RpY2UgRGF5IiwgICAgICAgICJ2XHUwMGU1YmVuaHZpbGUiIH0sCisgICAgICAgIHsgICAiQXNjZW5zaW9uIiwgICAgICAgICAgICAiaGltbWVsZmFydCIgfSwKKyAgICAgICAgeyAgICJCb3hpbmcgRGF5IiwgICAgICAgICAgICJhbmRlbiBqdWxlZGFnIiB9LAorICAgICAgICB7ICAgIkNocmlzdG1hcyBFdmUiLCAgICAgICAgImp1bGVhZnRlbiIgfSwKKyAgICAgICAgeyAgICJFYXN0ZXIiLCAgICAgICAgICAgICAgICJwXHUwMGU1c2tlIiB9LAorICAgICAgICB7ICAgIkVwaXBoYW55IiwgICAgICAgICAgICAgImhlbGxpZ3RyZWtvbmdlcnNkYWciIH0sCisgICAgICAgIHsgICAiR29vZCBGcmlkYXkiLCAgICAgICAgICAibGFuZ2ZyZWRhZyIgfSwKKyAgICAgICAgeyAgICJIYWxsb3dlZW4iLCAgICAgICAgICAgICJhbGxlaGVsZ2Vuc2FmdGVuIiB9LAorICAgICAgICB7ICAgIk1hdW5keSBUaHVyc2RheSIsICAgICAgInNrXHUwMGU2cnRvcnNkYWciIH0sCisgICAgICAgIHsgICAiUGFsbSBTdW5kYXkiLCAgICAgICAgICAicGFsbWVzXHUwMGY4bmRhZyIgfSwKKyAgICAgICAgeyAgICJQZW50ZWNvc3QiLCAgICAgICAgICAgICJwaW5zZSIgfSwKKyAgICAgICAgeyAgICJTaHJvdmUgVHVlc2RheSIsICAgICAgICJodmlkZXRpcnNkYWciIH0sCisgICAgfTsKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7IHJldHVybiBmQ29udGVudHM7IH0KK307CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hvbGlkYXlCdW5kbGVfZGFfREsuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSG9saWRheUJ1bmRsZV9kYV9ESy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjllYmMwYmQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hvbGlkYXlCdW5kbGVfZGFfREsuamF2YQpAQCAtMCwwICsxLDQ0IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hvbGlkYXlCdW5kbGVfZGFfREsuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNTo0NCAkIAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS5pY3UuaW1wbC5kYXRhOworCitpbXBvcnQgY29tLmlibS5pY3UudXRpbC4qOworaW1wb3J0IGphdmEudXRpbC5DYWxlbmRhcjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCitwdWJsaWMgY2xhc3MgSG9saWRheUJ1bmRsZV9kYV9ESyBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZQoreworICAgIHN0YXRpYyBwcml2YXRlIGZpbmFsIEhvbGlkYXlbXSBmSG9saWRheXMgPSB7CisgICAgICAgIFNpbXBsZUhvbGlkYXkuTkVXX1lFQVJTX0RBWSwKKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuQVBSSUwsICAgMzAsIC1DYWxlbmRhci5GUklEQVksICJHZW5lcmFsIFByYXllciBEYXkiKSwKKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuSlVORSwgICAgNSwgICAgICAgICAgICAgICAgICAgICJDb25zdGl0dXRpb24gRGF5IiksCisgICAgICAgIFNpbXBsZUhvbGlkYXkuQ0hSSVNUTUFTX0VWRSwKKyAgICAgICAgU2ltcGxlSG9saWRheS5DSFJJU1RNQVMsCisgICAgICAgIFNpbXBsZUhvbGlkYXkuQk9YSU5HX0RBWSwKKyAgICAgICAgU2ltcGxlSG9saWRheS5ORVdfWUVBUlNfRVZFLAorCisgICAgICAgIC8vIEVhc3RlciBhbmQgcmVsYXRlZCBob2xpZGF5cworICAgICAgICBFYXN0ZXJIb2xpZGF5Lk1BVU5EWV9USFVSU0RBWSwKKyAgICAgICAgRWFzdGVySG9saWRheS5HT09EX0ZSSURBWSwKKyAgICAgICAgRWFzdGVySG9saWRheS5FQVNURVJfU1VOREFZLAorICAgICAgICBFYXN0ZXJIb2xpZGF5LkVBU1RFUl9NT05EQVksCisgICAgICAgIEVhc3RlckhvbGlkYXkuQVNDRU5TSU9OLAorICAgICAgICBFYXN0ZXJIb2xpZGF5LldISVRfTU9OREFZLAorICAgIH07CisKKyAgICBzdGF0aWMgcHJpdmF0ZSBmaW5hbCBPYmplY3RbXVtdIGZDb250ZW50cyA9IHsKKyAgICAgICAgeyAgICJob2xpZGF5cyIsICAgICAgICAgICAgIGZIb2xpZGF5cyB9LAorICAgIH07CisgICAgcHVibGljIHN5bmNocm9uaXplZCBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeyByZXR1cm4gZkNvbnRlbnRzOyB9Cit9OwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9Ib2xpZGF5QnVuZGxlX2RlLmphdmEgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hvbGlkYXlCdW5kbGVfZGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44MzU4YzMxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9Ib2xpZGF5QnVuZGxlX2RlLmphdmEKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9Ib2xpZGF5QnVuZGxlX2RlLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDIvMTYgMDM6MDU6NDQgJCAKKyAqICRSZXZpc2lvbjogMS40ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LmltcGwuZGF0YTsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKK3B1YmxpYyBjbGFzcyBIb2xpZGF5QnVuZGxlX2RlIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKyAgICBzdGF0aWMgcHJpdmF0ZSBmaW5hbCBPYmplY3RbXVtdIGZDb250ZW50cyA9IHsKKyAgICAgICAgeyAgICJBbGwgU2FpbnRzJyBEYXkiLCAgICAgICAgICAgICAgIkFsbGVyaGVpbGlnZW4iIH0sCisgICAgICAgIHsgICAiQWxsIFNvdWxzJyBEYXkiLCAgICAgICAgICAgICAgICJBbGxlcnNlZWxlbiIgfSwKKyAgICAgICAgeyAgICJBcm1pc3RpY2UgRGF5IiwgICAgICAgICAgICAgICAgIldhZmZlbnN0aWxsc3RhbmRzdGFnIiB9LAorICAgICAgICB7ICAgIkFzY2Vuc2lvbiIsICAgICAgICAgICAgICAgICAgICAiQ2hyaXN0aSBIaW1tZWxmYWhydCIgfSwKKyAgICAgICAgeyAgICJBc2ggV2VkbmVzZGF5IiwgICAgICAgICAgICAgICAgIkFzY2hlcm1pdHR3b2NoIiB9LAorICAgICAgICB7ICAgIkFzc3VtcHRpb24iLCAgICAgICAgICAgICAgICAgICAiTWFyaVx1MDBlNCBIaW1tZWxmYWhydCIgfSwKKyAgICAgICAgeyAgICJCb3hpbmcgRGF5IiwgICAgICAgICAgICAgICAgICAgIjIuIFdlaWhuYWNodHN0YWciIH0sCisgICAgICAgIHsgICAiQ2Fybml2YWwiLCAgICAgICAgICAgICAgICAgICAgICJLYXJuZXZhbCIgfSwKKyAgICAgICAgeyAgICJDaHJpc3RtYXMiLCAgICAgICAgICAgICAgICAgICAgIldlaWhuYWNodHN0YWciIH0sCisgICAgICAgIHsgICAiQ2l2aWMgSG9saWRheSIsICAgICAgICAgICAgICAgICJCXHUwMGZjcmdlcmZlaWVydGFnIiB9LAorICAgICAgICB7ICAgIkNvbnN0aXR1dGlvbiBEYXkiLCAgICAgICAgICAgICAiVmVyZmFzc3VuZ3N0YWciIH0sCisgICAgICAgIHsgICAiQ29ycHVzIENocmlzdGkiLCAgICAgICAgICAgICAgICJGcm9ubGVpY2huYW0iIH0sCisgICAgICAgIHsgICAiRGF5IG9mIFByYXllciBhbmQgUmVwZW50YW5jZSIsICJCdVx1MDBkZi0gdW5kIEJldHRhZyIgfSwKKyAgICAgICAgeyAgICJFYXN0ZXIgTW9uZGF5IiwgICAgICAgICAgICAgICAgIk9zdGVybW9ubnRhZyIgfSwKKyAgICAgICAgeyAgICJFYXN0ZXIgU3VuZGF5IiwgICAgICAgICAgICAgICAgIk9zdGVyc29ubnRhZyIgfSwKKyAgICAgICAgeyAgICJFcGlwaGFueSIsICAgICAgICAgICAgICAgICAgICAgIkhlaWxpZ2UgMyBLXHUwMGY2bmlnZSIgfSwKKyAgICAgICAgeyAgICJGYXRoZXIncyBEYXkiLCAgICAgICAgICAgICAgICAgIlZhdGVydGFnIiB9LAorICAgICAgICB7ICAgIkZsYWcgRGF5IiwgICAgICAgICAgICAgICAgICAgICAiSmFocmVzdGFnIGRlciBOYXRpb25hbGZsYWdnZSIgfSwKKyAgICAgICAgeyAgICJHZXJtYW4gVW5pdHkgRGF5IiwgICAgICAgICAgICAgIlRhZyBkZXIgZGV1dHNjaGVuIEVpbmhlaXQiIH0sCisgICAgICAgIHsgICAiR29vZCBGcmlkYXkiLCAgICAgICAgICAgICAgICAgICJLYXJmcmVpdGFnIiB9LAorICAgICAgICB7ICAgIkhhbGxvd2VlbiIsICAgICAgICAgICAgICAgICAgICAiQWJlbmQgdm9yIEFsbGVyaGVpbGlnZW4iIH0sCisgICAgICAgIHsgICAiSW1tYWN1bGF0ZSBDb25jZXB0aW9uIiwgICAgICAgICJNYXJpXHUwMGU0IEVtcGZcdTAwZTRuZ25pcyIgfSwKKyAgICAgICAgeyAgICJJbmRlcGVuZGVuY2UgRGF5IiwgICAgICAgICAgICAgIlVuYWJoXHUwMGU0bmdpZ2tlaXRzdGFnIiB9LAorICAgICAgICB7ICAgIkxhYm9yIERheSIsICAgICAgICAgICAgICAgICAgICAiVGFnIGRlciBBcmJlaXQiIH0sCisgICAgICAgIHsgICAiTGliZXJhdGlvbiBEYXkiLCAgICAgICAgICAgICAgICJCZWZyZWl1bmdzdGFnIiB9LAorICAgICAgICB7ICAgIk1hcmRpIEdyYXMiLCAgICAgICAgICAgICAgICAgICAiRmFzY2hpbmdzZGllbnN0YWciIH0sCisgICAgICAgIHsgICAiTWF1bmR5IFRodXJzZGF5IiwgICAgICAgICAgICAgICJHclx1MDBmY25kb25uZXJzdGFnIiB9LAorICAgICAgICB7ICAgIk1heSBEYXkiLCAgICAgICAgICAgICAgICAgICAgICAiTWFpZmVpZXJ0YWciIH0sCisgICAgICAgIHsgICAiTWVtb3JpYWwgRGF5IiwgICAgICAgICAgICAgICAgICJUYWcgZGVzIEdlZGVua2VucyIgfSwKKyAgICAgICAgeyAgICJNb3RoZXIncyBEYXkiLCAgICAgICAgICAgICAgICAgIk11dHRlcnRhZyIgfSwKKyAgICAgICAgeyAgICJOYXRpb25hbCBIb2xpZGF5IiwgICAgICAgICAgICAgIk5hdGlvbmFsZmVpZXJ0YWciIH0sCisgICAgICAgIHsgICAiTmV3IFllYXIncyBEYXkiLCAgICAgICAgICAgICAgICJOZXVqYWhyIiB9LAorICAgICAgICB7ICAgIk5ldyBZZWFyJ3MgRXZlIiwgICAgICAgICAgICAgICAiU2lsdmVzdGVyYWJlbmQiIH0sCisgICAgICAgIHsgICAiUGFsbSBTdW5kYXkiLCAgICAgICAgICAgICAgICAgICJQYWxtc29ubnRhZyIgfSwKKyAgICAgICAgeyAgICJQZW50ZWNvc3QiLCAgICAgICAgICAgICAgICAgICAgIlBmaW5nc3RlbiIgfSwKKyAgICAgICAgeyAgICJQcmVzaWRlbnRzJyBEYXkiLCAgICAgICAgICAgICAgIlByXHUwMGU0c2lkZW50c3RhZyIgfSwKKyAgICAgICAgeyAgICJSZW1lbWJyYW5jZSBEYXkiLCAgICAgICAgICAgICAgIlZvbGtzdHJhdWVydGFnIiB9LAorICAgICAgICB7ICAgIlJldm9sdXRpb24gRGF5IiwgICAgICAgICAgICAgICAiSmFocmVzdGFnIGRlciBSZXZvbHV0aW9uIiB9LAorICAgICAgICB7ICAgIlJvc2UgTW9uZGF5IiwgICAgICAgICAgICAgICAgICAiUm9zZW5tb250YWciIH0sCisgICAgICAgIHsgICAiU3QuIFN0ZXBoZW4ncyBEYXkiLCAgICAgICAgICAgICJTdGVwaGFuaXRhZyIgfSwKKyAgICAgICAgeyAgICJTaHJvdmUgVHVlc2RheSIsICAgICAgICAgICAgICAgIkZhc2NoaW5nc2RpZW5zdGFnIiB9LAorICAgICAgICB7ICAgIlNwcmluZyBIb2xpZGF5IiwgICAgICAgICAgICAgICAiVGFnIGRlcyBGclx1MDBmY2hsaW5ncyIgfSwKKyAgICAgICAgeyAgICJTdW1tZXIgQmFuayBIb2xpZGF5IiwgICAgICAgICAgIkJhbmtmZWllcnRhZyIgfSwKKyAgICAgICAgeyAgICJUaGFua3NnaXZpbmciLCAgICAgICAgICAgICAgICAgIkRhbmtmZXN0IiB9LAorICAgICAgICB7ICAgIlVuaXR5IERheSIsICAgICAgICAgICAgICAgICAgICAiRWluaGVpdHN0YWciIH0sCisgICAgICAgIHsgICAiVmV0ZXJhbnMnIERheSIsICAgICAgICAgICAgICAgICJWZXRlcmFuc3RhZyIgfSwKKyAgICAgICAgeyAgICJWaWN0b3J5IERheSIsICAgICAgICAgICAgICAgICAgIlRhZyBkZXIgQmVmcmVpdW5nIiB9LAorICAgICAgICB7ICAgIldhc2hpbmd0b24ncyBCaXJ0aGRheSIsICAgICAgICAiV2FzaGluZ3RvbnMgR2VidXJ0c3RhZyIgfSwKKyAgICAgICAgeyAgICJXaGl0IE1vbmRheSIsICAgICAgICAgICAgICAgICAgIlBmaW5nc3Rtb250YWciIH0sCisgICAgICAgIHsgICAiV2hpdCBTdW5kYXkiLCAgICAgICAgICAgICAgICAgICJQZmluZ3N0c29ubnRhZyIgfSwKKyAgICB9OworCisgICAgcHVibGljIHN5bmNocm9uaXplZCBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeyByZXR1cm4gZkNvbnRlbnRzOyB9Cit9OwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9Ib2xpZGF5QnVuZGxlX2RlX0FULmphdmEgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hvbGlkYXlCdW5kbGVfZGVfQVQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5iY2Y2Mzc3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9Ib2xpZGF5QnVuZGxlX2RlX0FULmphdmEKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9Ib2xpZGF5QnVuZGxlX2RlX0FULmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDIvMTYgMDM6MDU6NDUgJCAKKyAqICRSZXZpc2lvbjogMS40ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LmltcGwuZGF0YTsKKworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuKjsKK2ltcG9ydCBqYXZhLnV0aWwuQ2FsZW5kYXI7CitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKKworcHVibGljIGNsYXNzIEhvbGlkYXlCdW5kbGVfZGVfQVQgZXh0ZW5kcyBMaXN0UmVzb3VyY2VCdW5kbGUgeworICAgIHN0YXRpYyBwcml2YXRlIGZpbmFsIEhvbGlkYXlbXSBmSG9saWRheXMgPSB7CisgICAgICAgIFNpbXBsZUhvbGlkYXkuTkVXX1lFQVJTX0RBWSwKKyAgICAgICAgU2ltcGxlSG9saWRheS5FUElQSEFOWSwKKyAgICAgICAgRWFzdGVySG9saWRheS5HT09EX0ZSSURBWSwKKyAgICAgICAgRWFzdGVySG9saWRheS5FQVNURVJfU1VOREFZLAorICAgICAgICBFYXN0ZXJIb2xpZGF5LkVBU1RFUl9NT05EQVksCisgICAgICAgIEVhc3RlckhvbGlkYXkuQVNDRU5TSU9OLAorICAgICAgICBFYXN0ZXJIb2xpZGF5LldISVRfU1VOREFZLAorICAgICAgICBFYXN0ZXJIb2xpZGF5LldISVRfTU9OREFZLAorICAgICAgICBFYXN0ZXJIb2xpZGF5LkNPUlBVU19DSFJJU1RJLAorICAgICAgICBTaW1wbGVIb2xpZGF5LkFTU1VNUFRJT04sCisgICAgICAgIFNpbXBsZUhvbGlkYXkuQUxMX1NBSU5UU19EQVksCisgICAgICAgIFNpbXBsZUhvbGlkYXkuSU1NQUNVTEFURV9DT05DRVBUSU9OLAorICAgICAgICBTaW1wbGVIb2xpZGF5LkNIUklTVE1BUywKKyAgICAgICAgU2ltcGxlSG9saWRheS5TVF9TVEVQSEVOU19EQVksCisKKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuTUFZLCAgICAgICAgMSwgIDAsICAgICAgICAgICAgICAgIk5hdGlvbmFsIEhvbGlkYXkiKSwKKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuT0NUT0JFUiwgICAzMSwgLUNhbGVuZGFyLk1PTkRBWSwgIk5hdGlvbmFsIEhvbGlkYXkiKSwKKyAgICB9OworCisgICAgc3RhdGljIHByaXZhdGUgZmluYWwgT2JqZWN0W11bXSBmQ29udGVudHMgPSB7CisgICAgICAgIHsgImhvbGlkYXlzIiwgICBmSG9saWRheXMgfSwKKworICAgICAgICAvLyBPbmx5IGhvbGlkYXlzIG5hbWVzIGRpZmZlcmVudCBmcm9tIHRob3NlIHVzZWQgaW4gR2VybWFueSBhcmUgbGlzdGVkIGhlcmUKKyAgICAgICAgeyAgICJDaHJpc3RtYXMiLCAgICAgICAgIkNocmlzdHRhZyIgfSwKKyAgICAgICAgeyAgICJOZXcgWWVhcidzIERheSIsICAgIk5ldWphaHJzdGFnIiB9LAorICAgIH07CisgICAgcHVibGljIHN5bmNocm9uaXplZCBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeyByZXR1cm4gZkNvbnRlbnRzOyB9Cit9OwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9Ib2xpZGF5QnVuZGxlX2RlX0RFLmphdmEgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hvbGlkYXlCdW5kbGVfZGVfREUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xNzg0OWViCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9Ib2xpZGF5QnVuZGxlX2RlX0RFLmphdmEKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9Ib2xpZGF5QnVuZGxlX2RlX0RFLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDIvMTYgMDM6MDU6NDUgJCAKKyAqICRSZXZpc2lvbjogMS4zICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LmltcGwuZGF0YTsKKworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuKjsKK2ltcG9ydCBqYXZhLnV0aWwuQ2FsZW5kYXI7CitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKKworcHVibGljIGNsYXNzIEhvbGlkYXlCdW5kbGVfZGVfREUgZXh0ZW5kcyBMaXN0UmVzb3VyY2VCdW5kbGUgeworICAgIHN0YXRpYyBwcml2YXRlIGZpbmFsIEhvbGlkYXlbXSBmSG9saWRheXMgPSB7CisgICAgICAgIFNpbXBsZUhvbGlkYXkuTkVXX1lFQVJTX0RBWSwKKyAgICAgICAgU2ltcGxlSG9saWRheS5NQVlfREFZLAorICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5KVU5FLCAgICAgIDE1LCAgQ2FsZW5kYXIuV0VETkVTREFZLCAgIk1lbW9yaWFsIERheSIpLAorICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5PQ1RPQkVSLCAgICAzLCAgMCwgICAgICAgICAgICAgICAgICAgIlVuaXR5IERheSIpLAorICAgICAgICBTaW1wbGVIb2xpZGF5LkFMTF9TQUlOVFNfREFZLAorICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5OT1ZFTUJFUiwgIDE4LCAgMCwgICAgICAgICAgICAgICAgICAgIkRheSBvZiBQcmF5ZXIgYW5kIFJlcGVudGFuY2UiKSwKKyAgICAgICAgU2ltcGxlSG9saWRheS5DSFJJU1RNQVMsCisgICAgICAgIFNpbXBsZUhvbGlkYXkuQk9YSU5HX0RBWSwKKworICAgICAgICAvLyBFYXN0ZXIgYW5kIHJlbGF0ZWQgaG9saWRheXMKKyAgICAgICAgRWFzdGVySG9saWRheS5HT09EX0ZSSURBWSwKKyAgICAgICAgRWFzdGVySG9saWRheS5FQVNURVJfU1VOREFZLAorICAgICAgICBFYXN0ZXJIb2xpZGF5LkVBU1RFUl9NT05EQVksCisgICAgICAgIEVhc3RlckhvbGlkYXkuQVNDRU5TSU9OLAorICAgICAgICBFYXN0ZXJIb2xpZGF5LldISVRfU1VOREFZLAorICAgICAgICBFYXN0ZXJIb2xpZGF5LldISVRfTU9OREFZLAorICAgIH07CisKKyAgICBzdGF0aWMgcHJpdmF0ZSBmaW5hbCBPYmplY3RbXVtdIGZDb250ZW50cyA9IHsKKyAgICAgICAgeyAiaG9saWRheXMiLCAgIGZIb2xpZGF5cyB9LAorICAgIH07CisgICAgcHVibGljIHN5bmNocm9uaXplZCBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeyByZXR1cm4gZkNvbnRlbnRzOyB9Cit9OwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9Ib2xpZGF5QnVuZGxlX2VsLmphdmEgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hvbGlkYXlCdW5kbGVfZWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4zYmM1NmY5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9Ib2xpZGF5QnVuZGxlX2VsLmphdmEKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9Ib2xpZGF5QnVuZGxlX2VsLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDIvMTYgMDM6MDU6NDUgJCAKKyAqICRSZXZpc2lvbjogMS4zICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LmltcGwuZGF0YTsKKworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuKjsKK2ltcG9ydCBqYXZhLnV0aWwuQ2FsZW5kYXI7CitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKKworcHVibGljIGNsYXNzIEhvbGlkYXlCdW5kbGVfZWwgZXh0ZW5kcyBMaXN0UmVzb3VyY2VCdW5kbGUgeworICAgIHN0YXRpYyBwcml2YXRlIGZpbmFsIE9iamVjdFtdW10gZkNvbnRlbnRzID0KKyAgICB7CisgICAgICAgIHsgICAiQXNzdW1wdGlvbiIsICAgICAgICAgICAiMTUgXHUwMzkxXHUwM2NkXHUwM2IzXHUwM2JmXHUwM2NkXHUwM2MzXHUwM2M0XHUwM2JmXHUwM2M1IiB9LAorICAgICAgICB7ICAgIkJveGluZyBEYXkiLCAgICAgICAgICAgIlx1MDM5NFx1MDNiNVx1MDNjZFx1MDNjNFx1MDNiNVx1MDNjMVx1MDNiNyBcdTAzYmNcdTAzYWRcdTAzYzFcdTAzYjEgXHUwM2M0XHUwM2NlXHUwM2JkIFx1MDNhN1x1MDNjMVx1MDNiOVx1MDNjM1x1MDNjNFx1MDNiZlx1MDNjNVx1MDNiM1x1MDNhZFx1MDNiZFx1MDNiZFx1MDNjOVx1MDNiZCIgfSwKKyAgICAgICAgeyAgICJDaHJpc3RtYXMiLCAgICAgICAgICAgICJcdTAzYTdcdTAzYzFcdTAzYjlcdTAzYzNcdTAzYzRcdTAzYmZcdTAzY2RcdTAzYjNcdTAzYjVcdTAzYmRcdTAzYmRcdTAzYjEiIH0sCisgICAgICAgIHsgICAiQ2xlYW4gTW9uZGF5IiwgICAgICAgICAiXHUwMzlhXHUwM2IxXHUwM2I4XHUwM2IxXHUwM2MxXHUwM2FlIFx1MDM5NFx1MDNiNVx1MDNjNVx1MDNjNFx1MDNhZFx1MDNjMVx1MDNiMSIgfSwKKyAgICAgICAgeyAgICJFYXN0ZXIgTW9uZGF5IiwgICAgICAgICJcdTAzOTRcdTAzYjVcdTAzY2RcdTAzYzRcdTAzYjVcdTAzYzFcdTAzYjcgXHUwM2JjXHUwM2FkXHUwM2MxXHUwM2IxIFx1MDNjNFx1MDNiZlx1MDNjZCBcdTAzYTBcdTAzYWNcdTAzYzNcdTAzYzdcdTAzYjEiIH0sCisgICAgICAgIHsgICAiRXBpcGhhbnkiLCAgICAgICAgICAgICAiXHUwMzg4XHUwM2MwXHUwM2I5XHUwM2M2XHUwM2FjXHUwM2JkXHUwM2I1XHUwM2I5XHUwM2IxIiB9LAorICAgICAgICB7ICAgIkdvb2QgRnJpZGF5IiwgICAgICAgICAgIlx1MDM5Y1x1MDNiNVx1MDNiM1x1MDNhY1x1MDNiYlx1MDNiNyBcdTAzYTBcdTAzYjFcdTAzYzFcdTAzYjFcdTAzYzNcdTAzYmFcdTAzYjVcdTAzYzVcdTAzYWUiIH0sCisgICAgICAgIHsgICAiTWF5IERheSIsICAgICAgICAgICAgICAiXHUwM2EwXHUwM2MxXHUwM2M5XHUwM2M0XHUwM2JmXHUwM2JjXHUwM2IxXHUwM2IzXHUwM2I5XHUwM2FjIiB9LAorICAgICAgICB7ICAgIk5ldyBZZWFyJ3MgRGF5IiwgICAgICAgIlx1MDNhMFx1MDNjMVx1MDNjOVx1MDNjNFx1MDNiZlx1MDNjN1x1MDNjMVx1MDNiZlx1MDNiZFx1MDNiOVx1MDNhYyIgfSwKKyAgICAgICAgeyAgICJPY2hpIERheSIsICAgICAgICAgICAgICIyOCBcdTAzOGNcdTAzYmFcdTAzYzRcdTAzYzlcdTAzYjJcdTAzYzFcdTAzYWZcdTAzYmZcdTAzYzUiIH0sCisgICAgICAgIHsgICAiV2hpdCBNb25kYXkiLCAgICAgICAgICAiXHUwMzk0XHUwM2I1XHUwM2NkXHUwM2M0XHUwM2I1XHUwM2MxXHUwM2I3IFx1MDNiY1x1MDNhZFx1MDNjMVx1MDNiMSBcdTAzYzRcdTAzYmZcdTAzY2QgXHUwM2EwXHUwM2I1XHUwM2JkXHUwM2M0XHUwM2I3XHUwM2JhXHUwM2JmXHUwM2MzXHUwM2M0XHUwM2FlIiB9LAorCisgICAgfTsKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7IHJldHVybiBmQ29udGVudHM7IH0KK307CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hvbGlkYXlCdW5kbGVfZWxfR1IuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSG9saWRheUJ1bmRsZV9lbF9HUi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjlhYWM4M2MKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hvbGlkYXlCdW5kbGVfZWxfR1IuamF2YQpAQCAtMCwwICsxLDQ1IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hvbGlkYXlCdW5kbGVfZWxfR1IuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNTo0NSAkIAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS5pY3UuaW1wbC5kYXRhOworCitpbXBvcnQgY29tLmlibS5pY3UudXRpbC4qOworaW1wb3J0IGphdmEudXRpbC5DYWxlbmRhcjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCitwdWJsaWMgY2xhc3MgSG9saWRheUJ1bmRsZV9lbF9HUiBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisgICAgc3RhdGljIHByaXZhdGUgZmluYWwgSG9saWRheVtdIGZIb2xpZGF5cyA9IHsKKyAgICAgICAgU2ltcGxlSG9saWRheS5ORVdfWUVBUlNfREFZLAorICAgICAgICBTaW1wbGVIb2xpZGF5LkVQSVBIQU5ZLAorCisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLk1BUkNILCAgICAgMjUsICAwLCAgICAiSW5kZXBlbmRlbmNlIERheSIpLAorCisgICAgICAgIFNpbXBsZUhvbGlkYXkuTUFZX0RBWSwKKyAgICAgICAgU2ltcGxlSG9saWRheS5BU1NVTVBUSU9OLAorCisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLk9DVE9CRVIsICAgMjgsICAwLCAgICAiT2NoaSBEYXkiKSwKKworICAgICAgICBTaW1wbGVIb2xpZGF5LkNIUklTVE1BUywKKyAgICAgICAgU2ltcGxlSG9saWRheS5CT1hJTkdfREFZLAorCisgICAgICAgIC8vIEVhc3RlciBhbmQgcmVsYXRlZCBob2xpZGF5cyBpbiB0aGUgT3J0aG9kb3ggY2FsZW5kYXIKKyAgICAgICAgbmV3IEVhc3RlckhvbGlkYXkoLTIsICAgdHJ1ZSwgIkdvb2QgRnJpZGF5IiksCisgICAgICAgIG5ldyBFYXN0ZXJIb2xpZGF5KCAwLCAgIHRydWUsICJFYXN0ZXIgU3VuZGF5IiksCisgICAgICAgIG5ldyBFYXN0ZXJIb2xpZGF5KCAxLCAgIHRydWUsICJFYXN0ZXIgTW9uZGF5IiksCisgICAgICAgIG5ldyBFYXN0ZXJIb2xpZGF5KDUwLCAgIHRydWUsICJXaGl0IE1vbmRheSIpLAorICAgIH07CisgICAgc3RhdGljIHByaXZhdGUgZmluYWwgT2JqZWN0W11bXSBmQ29udGVudHMgPSB7CisgICAgICAgIHsgICAiaG9saWRheXMiLCAgICAgICAgIGZIb2xpZGF5cyAgIH0sCisgICAgfTsKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7IHJldHVybiBmQ29udGVudHM7IH0KK307CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hvbGlkYXlCdW5kbGVfZW4uamF2YSBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSG9saWRheUJ1bmRsZV9lbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjcyZjQ1YzMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hvbGlkYXlCdW5kbGVfZW4uamF2YQpAQCAtMCwwICsxLDM1IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hvbGlkYXlCdW5kbGVfZW4uamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNTo0NSAkIAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS5pY3UuaW1wbC5kYXRhOworCitpbXBvcnQgY29tLmlibS5pY3UudXRpbC4qOworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKK3B1YmxpYyBjbGFzcyBIb2xpZGF5QnVuZGxlX2VuIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKworICAgIC8vIE5vcm1hbGx5LCBlYWNoIEhvbGlkYXlCdW5kbGUgdXNlcyB0aGUgaG9saWRheSdzIFVTIEVuZ2xpc2ggbmFtZQorICAgIC8vIGFzIHRoZSBzdHJpbmcga2V5IGZvciBsb29raW5nIHVwIHRoZSBsb2NhbGl6ZWQgbmFtZS4gIFRoaXMgbWVhbnMKKyAgICAvLyB0aGF0IHRoZSBrZXkgaXRzZWxmIGNhbiBiZSB1c2VkIGlmIG5vIG5hbWUgaXMgZm91bmQgZm9yIHRoZSByZXF1ZXN0ZWQKKyAgICAvLyBsb2NhbGUuCisgICAgLy8KKyAgICAvLyBGb3IgaG9saWRheXMgd2hlcmUgdGhlIGtleSBpcyBfbm90XyB0aGUgRW5nbGlzaCBuYW1lLCBlLmcuIGluIHRoZQorICAgIC8vIGNhc2Ugb2YgY29uZmxpY3RzLCB0aGUgRW5nbGlzaCBuYW1lIG11c3QgYmUgZ2l2ZW4gaGVyZS4KKyAgICAvLworICAgIHN0YXRpYyBwcml2YXRlIGZpbmFsIE9iamVjdFtdW10gZkNvbnRlbnRzID0geworICAgICAgICB7ICAgIiIsICIiICB9LCAgICAgIC8vIENhbid0IGJlIGVtcHR5IQorICAgIH07CisKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7IHJldHVybiBmQ29udGVudHM7IH07CisKK307CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hvbGlkYXlCdW5kbGVfZW5fQ0EuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSG9saWRheUJ1bmRsZV9lbl9DQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmU3NDhjODEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hvbGlkYXlCdW5kbGVfZW5fQ0EuamF2YQpAQCAtMCwwICsxLDQ2IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hvbGlkYXlCdW5kbGVfZW5fQ0EuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNTo0NiAkIAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS5pY3UuaW1wbC5kYXRhOworCitpbXBvcnQgY29tLmlibS5pY3UudXRpbC4qOworaW1wb3J0IGphdmEudXRpbC5DYWxlbmRhcjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCitwdWJsaWMgY2xhc3MgSG9saWRheUJ1bmRsZV9lbl9DQSBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisgICAgc3RhdGljIHByaXZhdGUgZmluYWwgSG9saWRheVtdIGZIb2xpZGF5cyA9IHsKKyAgICAgICAgU2ltcGxlSG9saWRheS5ORVdfWUVBUlNfREFZLAorICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5NQVksICAgICAgIDE5LCAwLCAgICAgICAgICAgICAgICAgICJWaWN0b3JpYSBEYXkiKSwKKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuSlVMWSwgICAgICAgMSwgMCwgICAgICAgICAgICAgICAgICAiQ2FuYWRhIERheSIpLAorICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5BVUdVU1QsICAgICAxLCBDYWxlbmRhci5NT05EQVksICAgICJDaXZpYyBIb2xpZGF5IiksCisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLlNFUFRFTUJFUiwgIDEsIENhbGVuZGFyLk1PTkRBWSwgICAgIkxhYm9yIERheSIpLAorICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5PQ1RPQkVSLCAgICA4LCBDYWxlbmRhci5NT05EQVksICAgICJUaGFua3NnaXZpbmciKSwKKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuTk9WRU1CRVIsICAxMSwgMCwgICAgICAgICAgICAgICAgICAiUmVtZW1icmFuY2UgRGF5IiksCisgICAgICAgIFNpbXBsZUhvbGlkYXkuQ0hSSVNUTUFTLAorICAgICAgICBTaW1wbGVIb2xpZGF5LkJPWElOR19EQVksCisgICAgICAgIFNpbXBsZUhvbGlkYXkuTkVXX1lFQVJTX0VWRSwKKworICAgICAgICAvLyBFYXN0ZXIgYW5kIHJlbGF0ZWQgaG9saWRheXMKKyAgICAgICAgLy9oZXkge2pmfSAtIHdoZXJlIGFyZSB0aGVzZSBmcm9tPworLy8gICAgICAgIEVhc3RlckhvbGlkYXkuR09PRF9GUklEQVksCisvLyAgICAgICAgRWFzdGVySG9saWRheS5FQVNURVJfU1VOREFZLAorLy8gICAgICAgIEVhc3RlckhvbGlkYXkuRUFTVEVSX01PTkRBWSwKKyAgICB9OworCisgICAgc3RhdGljIHByaXZhdGUgZmluYWwgT2JqZWN0W11bXSBmQ29udGVudHMgPSB7CisgICAgICAgIHsgImhvbGlkYXlzIiwgICBmSG9saWRheXMgfSwKKworICAgICAgICB7ICJMYWJvciBEYXkiLCAgIkxhYm91ciBEYXkiIH0sCisgICAgfTsKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7IHJldHVybiBmQ29udGVudHM7IH0KK307CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hvbGlkYXlCdW5kbGVfZW5fR0IuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSG9saWRheUJ1bmRsZV9lbl9HQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmY5ZGJlN2IKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hvbGlkYXlCdW5kbGVfZW5fR0IuamF2YQpAQCAtMCwwICsxLDQyIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hvbGlkYXlCdW5kbGVfZW5fR0IuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNTo0NiAkIAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS5pY3UuaW1wbC5kYXRhOworCitpbXBvcnQgY29tLmlibS5pY3UudXRpbC4qOworaW1wb3J0IGphdmEudXRpbC5DYWxlbmRhcjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCitwdWJsaWMgY2xhc3MgSG9saWRheUJ1bmRsZV9lbl9HQiBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZQoreworICAgIHN0YXRpYyBwcml2YXRlIGZpbmFsIEhvbGlkYXlbXSBmSG9saWRheXMgPSB7CisgICAgICAgIFNpbXBsZUhvbGlkYXkuTkVXX1lFQVJTX0RBWSwKKyAgICAgICAgU2ltcGxlSG9saWRheS5NQVlfREFZLAorICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5NQVksICAgICAgICAzMSwgLUNhbGVuZGFyLk1PTkRBWSwgICAgIlNwcmluZyBIb2xpZGF5IiksCisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLkFVR1VTVCwgICAgIDMxLCAtQ2FsZW5kYXIuTU9OREFZLCAgICAiU3VtbWVyIEJhbmsgSG9saWRheSIpLAorICAgICAgICBTaW1wbGVIb2xpZGF5LkNIUklTVE1BUywKKyAgICAgICAgU2ltcGxlSG9saWRheS5CT1hJTkdfREFZLAorICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5ERUNFTUJFUiwgICAzMSwgLUNhbGVuZGFyLk1PTkRBWSwgICAgIkNocmlzdG1hcyBIb2xpZGF5IiksCisKKyAgICAgICAgLy8gRWFzdGVyIGFuZCByZWxhdGVkIGhvbGlkYXlzCisgICAgICAgIEVhc3RlckhvbGlkYXkuR09PRF9GUklEQVksCisgICAgICAgIEVhc3RlckhvbGlkYXkuRUFTVEVSX1NVTkRBWSwKKyAgICAgICAgRWFzdGVySG9saWRheS5FQVNURVJfTU9OREFZLAorICAgIH07CisgICAgc3RhdGljIHByaXZhdGUgZmluYWwgT2JqZWN0W11bXSBmQ29udGVudHMgPSB7CisgICAgICAgIHsgImhvbGlkYXlzIiwgICBmSG9saWRheXMgfSwKKworICAgICAgICB7ICJMYWJvciBEYXkiLCAgIkxhYm91ciBEYXkiIH0sCisgICAgfTsKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7IHJldHVybiBmQ29udGVudHM7IH0KK307CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hvbGlkYXlCdW5kbGVfZW5fVVMuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSG9saWRheUJ1bmRsZV9lbl9VUy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmRlZGMxOGMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hvbGlkYXlCdW5kbGVfZW5fVVMuamF2YQpAQCAtMCwwICsxLDUyIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hvbGlkYXlCdW5kbGVfZW5fVVMuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNTo0NiAkIAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS5pY3UuaW1wbC5kYXRhOworCitpbXBvcnQgY29tLmlibS5pY3UudXRpbC4qOworaW1wb3J0IGphdmEudXRpbC5DYWxlbmRhcjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCitwdWJsaWMgY2xhc3MgSG9saWRheUJ1bmRsZV9lbl9VUyBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZQoreworICAgIHN0YXRpYyBwcml2YXRlIGZpbmFsIEhvbGlkYXlbXSBmSG9saWRheXMgPSB7CisgICAgICAgIFNpbXBsZUhvbGlkYXkuTkVXX1lFQVJTX0RBWSwKKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuSkFOVUFSWSwgICAxNSwgQ2FsZW5kYXIuTU9OREFZLCAgICAgICJNYXJ0aW4gTHV0aGVyIEtpbmcgRGF5IiwgICAxOTg2KSwKKworICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5GRUJSVUFSWSwgIDE1LCBDYWxlbmRhci5NT05EQVksICAgICAgIlByZXNpZGVudHMnIERheSIsICAgICAgICAgIDE5NzYpLAorICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5GRUJSVUFSWSwgIDIyLCAgICAgICAgICAgICAgICAgICAgICAgIldhc2hpbmd0b24ncyBCaXJ0aGRheSIsICAgIDE3NzYsIDE5NzUpLAorCisgICAgICAgIEVhc3RlckhvbGlkYXkuR09PRF9GUklEQVksCisgICAgICAgIEVhc3RlckhvbGlkYXkuRUFTVEVSX1NVTkRBWSwKKworICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5NQVksICAgICAgICA4LCBDYWxlbmRhci5TVU5EQVksICAgICAgIk1vdGhlcidzIERheSIsICAgICAgICAgICAgIDE5MTQpLAorCisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLk1BWSwgICAgICAgMzEsIC1DYWxlbmRhci5NT05EQVksICAgICAiTWVtb3JpYWwgRGF5IiwgICAgICAgICAgICAgMTk3MSksCisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLk1BWSwgICAgICAgMzAsICAgICAgICAgICAgICAgICAgICAgICAiTWVtb3JpYWwgRGF5IiwgICAgICAgICAgICAgMTg2OCwgMTk3MCksCisKKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuSlVORSwgICAgICAxNSwgQ2FsZW5kYXIuU1VOREFZLCAgICAgICJGYXRoZXIncyBEYXkiLCAgICAgICAgICAgICAxOTU2KSwKKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuSlVMWSwgICAgICAgNCwgICAgICAgICAgICAgICAgICAgICAgICJJbmRlcGVuZGVuY2UgRGF5IiwgICAgICAgICAxNzc2KSwKKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuU0VQVEVNQkVSLCAgMSwgQ2FsZW5kYXIuTU9OREFZLCAgICAgICJMYWJvciBEYXkiLCAgICAgICAgICAgICAgICAxODk0KSwKKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuTk9WRU1CRVIsICAgMiwgQ2FsZW5kYXIuVFVFU0RBWSwgICAgICJFbGVjdGlvbiBEYXkiKSwKKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuT0NUT0JFUiwgICAgOCwgQ2FsZW5kYXIuTU9OREFZLCAgICAgICJDb2x1bWJ1cyBEYXkiLCAgICAgICAgICAgICAxOTcxKSwKKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuT0NUT0JFUiAsICAzMSwgICAgICAgICAgICAgICAgICAgICAgICJIYWxsb3dlZW4iKSwKKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuTk9WRU1CRVIsICAxMSwgICAgICAgICAgICAgICAgICAgICAgICJWZXRlcmFucycgRGF5IiwgICAgICAgICAgICAxOTE4KSwKKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuTk9WRU1CRVIsICAyMiwgQ2FsZW5kYXIuVEhVUlNEQVksICAgICJUaGFua3NnaXZpbmciLCAgICAgICAgICAgICAxODYzKSwKKworICAgICAgICBTaW1wbGVIb2xpZGF5LkNIUklTVE1BUywKKyAgICB9OworICAgIHN0YXRpYyBwcml2YXRlIGZpbmFsIE9iamVjdFtdW10gZkNvbnRlbnRzID0geworICAgICAgICB7ICJob2xpZGF5cyIsICAgZkhvbGlkYXlzIH0sCisgICAgfTsKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7IHJldHVybiBmQ29udGVudHM7IH0KK307CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hvbGlkYXlCdW5kbGVfZXMuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSG9saWRheUJ1bmRsZV9lcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmY3NzQxODAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hvbGlkYXlCdW5kbGVfZXMuamF2YQpAQCAtMCwwICsxLDU3IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hvbGlkYXlCdW5kbGVfZXMuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNTo0NiAkIAorICogJFJldmlzaW9uOiAxLjQgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS5pY3UuaW1wbC5kYXRhOworCitpbXBvcnQgY29tLmlibS5pY3UudXRpbC4qOworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKK3B1YmxpYyBjbGFzcyBIb2xpZGF5QnVuZGxlX2VzIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKyAgICBzdGF0aWMgcHJpdmF0ZSBmaW5hbCBPYmplY3RbXVtdIGZDb250ZW50cyA9IHsKKyAgICAgICAgeyAgICJBbGwgU2FpbnRzJyBEYXkiLCAgICAgICAgICAiVG9kb3MgbG9zIFNhbnRvcyIgfSwKKyAgICAgICAgeyAgICJBcm1pc3RpY2UgRGF5IiwgICAgICAgICAgICAiRFx1MDBlZGEgZGVsIEFybWlzdGljaW8iIH0sCisgICAgICAgIHsgICAiQXNjZW5zaW9uIiwgICAgICAgICAgICAgICAgIkFzY2Vuc2lcdTAwZjNuIiB9LAorICAgICAgICB7ICAgIkJlbml0byBKdVx1MDBlMXJleiBEYXkiLCAgICAgICAgIkRcdTAwZWRhIGRlIGxhIEJlbml0byBKdVx1MDBlMXJleiIgfSwKKyAgICAgICAgeyAgICJCb3hpbmcgRGF5IiwgICAgICAgICAgICAgICAiRFx1MDBlZGEgZW4gcXVlIHNlIGRhbiBBZ3VpbmFsZG9zIE5hdmlkZVx1MDBmMW9zIiB9LAorICAgICAgICB7ICAgIkNhbmFkYSBEYXkiLCAgICAgICAgICAgICAgICJEXHUwMGVkYSBkZWwgQ2FuYWRcdTAwZTEiIH0sCisgICAgICAgIHsgICAiQ2hyaXN0bWFzIEV2ZSIsICAgICAgICAgICAgIlZcdTAwRURzcGVyYSBkZSBOYXZpZGFkIiB9LAorICAgICAgICB7ICAgIkNocmlzdG1hcyIsICAgICAgICAgICAgICAgICJOYXZpZGFkIiB9LAorICAgICAgICB7ICAgIkNvbnN0aXR1dGlvbiBEYXkiLCAgICAgICAgICJEXHUwMGVkYSBkZSBsYSBDb25zdGl0dWNpXHUwMGYzbiIgfSwKKyAgICAgICAgeyAgICJEYXkgb2YgdGhlIERlYWQiLCAgICAgICAgICAiRFx1MDBlZGEgZGUgbG9zIE11ZXJ0b3MiIH0sCisgICAgICAgIHsgICAiRWFzdGVyIFN1bmRheSIsICAgICAgICAgICAgIlBhc2N1YSIgfSwKKyAgICAgICAgeyAgICJFYXN0ZXIgTW9uZGF5IiwgICAgICAgICAgICAiUGFzY3VhIEx1bmVzIiB9LAorICAgICAgICB7ICAgIkVwaXBoYW55IiwgICAgICAgICAgICAgICAgICJFcGlmYW5cdTAwZWRhIiB9LAorICAgICAgICB7ICAgIkZhdGhlcidzIERheSIsICAgICAgICAgICAgICJEXHUwMGVkYSBkZWwgUGFkcmUiIH0sCisgICAgICAgIHsgICAiRmxhZyBEYXkiLCAgICAgICAgICAgICAgICAgIkRcdTAwZWRhIGRlIGxhIEJhbmRlcmEiIH0sCisgICAgICAgIHsgICAiR29vZCBGcmlkYXkiLCAgICAgICAgICAgICAgIlZpZXJuZXMgU2FudG8iIH0sCisgICAgICAgIHsgICAiSGFsbG93ZWVuIiwgICAgICAgICAgICAgICAgInZcdTAwZWRzcGVyYSBkZSBUb2RvcyBsb3MgU2FudG9zIiB9LAorICAgICAgICB7ICAgIkluZGVwZW5kZW5jZSBEYXkiLCAgICAgICAgICJEXHUwMGVkYSBkZSBsYSBJbmRlcGVuZGVuY2lhIiB9LAorICAgICAgICB7ICAgIkxhYm9yIERheSIsICAgICAgICAgICAgICAgICJEXHUwMGVkYSBkZSBUcmFiYWphZG9yZXMiIH0sCisgICAgICAgIHsgICAiTWF1bmR5IFRodXJzZGF5IiwgICAgICAgICAgIkp1ZXZlcyBTYW50byIgfSwKKyAgICAgICAgeyAgICJNYXkgRGF5IiwgICAgICAgICAgICAgICAgICAiUHJpbWVybyBkZSBNYXlvIiB9LAorICAgICAgICB7ICAgIk1lbW9yaWFsIERheSIsICAgICAgICAgICAgICJEXHUwMGVkYSBkZSBsYSBSZW1lbW9yYWNpXHUwMGYzbiIgfSwKKyAgICAgICAgeyAgICJNb3RoZXIncyBEYXkiLCAgICAgICAgICAgICAiRFx1MDBlZGEgZGUgbGEgTWFkcmUiIH0sCisgICAgICAgIHsgICAiTmV3IFllYXIncyBEYXkiLCAgICAgICAgICAgIkFcdTAwZjFvIE51ZXZvIiB9LAorICAgICAgICB7ICAgIlBhbG0gU3VuZGF5IiwgICAgICAgICAgICAgICJEb21pbmdvIGRlIFJhbW9zIiB9LAorICAgICAgICB7ICAgIlBlbnRlY29zdCIsICAgICAgICAgICAgICAgICJQZW50ZWNvc3RcdTAwZTlzIiB9LAorICAgICAgICB7ICAgIlByZXNpZGVudHMnIERheSIsICAgICAgICAgICJEXHUwMGVkYSBkZSBQcmVzaWRlbnRlcyIgfSwKKyAgICAgICAgeyAgICJSZXZvbHV0aW9uIERheSIsICAgICAgICAgICAiRFx1MDBlZGEgZGUgbGEgUmV2b2x1Y2lcdTAwZjNuIiB9LAorICAgICAgICB7ICAgIlNocm92ZSBUdWVzZGF5IiwgICAgICAgICAgICJNYXJ0ZXMgZGUgQ2FybmF2YWwiIH0sCisgICAgICAgIHsgICAiVGhhbmtzZ2l2aW5nIiwgICAgICAgICAgICAgIkRcdTAwZWRhIGRlIEFjY2lcdTAwZjNuIGRlIEdyYWNpYXMiIH0sCisgICAgICAgIHsgICAiVmV0ZXJhbnMnIERheSIsICAgICAgICAgICAgIkRcdTAwZWRhIGRlIFZldGVyYW5vcyIgfSwKKyAgICAgICAgeyAgICJWaWN0b3JpYSBEYXkiLCAgICAgICAgICAgICAiRFx1MDBlZGEgZGUgVmljdG9yaWEiIH0sCisgICAgICAgIHsgICAiV2hpdCBTdW5kYXkiLCAgICAgICAgICAgICAgIlBlbnRlY29zdFx1MDBlOXMiIH0sCisgICAgfTsKKworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsgcmV0dXJuIGZDb250ZW50czsgfQorfTsKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSG9saWRheUJ1bmRsZV9lc19NWC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9Ib2xpZGF5QnVuZGxlX2VzX01YLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uY2Q4MmI4ZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSG9saWRheUJ1bmRsZV9lc19NWC5qYXZhCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSG9saWRheUJ1bmRsZV9lc19NWC5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzAyLzE2IDAzOjA1OjQ2ICQgCisgKiAkUmV2aXNpb246IDEuNCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworcGFja2FnZSBjb20uaWJtLmljdS5pbXBsLmRhdGE7CisKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLio7CitpbXBvcnQgamF2YS51dGlsLkNhbGVuZGFyOworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKK3B1YmxpYyBjbGFzcyBIb2xpZGF5QnVuZGxlX2VzX01YIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKyAgICBzdGF0aWMgcHJpdmF0ZSBmaW5hbCBIb2xpZGF5W10gZkhvbGlkYXlzID0geworICAgICAgICBTaW1wbGVIb2xpZGF5Lk5FV19ZRUFSU19EQVksCisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLkZFQlJVQVJZLCAgIDUsICAwLCAgICAiQ29uc3RpdHV0aW9uIERheSIpLAorICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5NQVJDSCwgICAgIDIxLCAgMCwgICAgIkJlbml0byBKdVx1MDBFMXJleiBEYXkiKSwKKyAgICAgICAgU2ltcGxlSG9saWRheS5NQVlfREFZLAorICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5NQVksICAgICAgICA1LCAgMCwgICAgIkNpbmNvIGRlIE1heW8iKSwKKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuSlVORSwgICAgICAgMSwgIDAsICAgICJOYXZ5IERheSIpLAorICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5TRVBURU1CRVIsIDE2LCAgMCwgICAgIkluZGVwZW5kZW5jZSBEYXkiKSwKKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuT0NUT0JFUiwgICAxMiwgIDAsICAgICJEXHUwMEVEYSBkZSBsYSBSYXphIiksCisgICAgICAgIFNpbXBsZUhvbGlkYXkuQUxMX1NBSU5UU19EQVksCisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLk5PVkVNQkVSLCAgIDIsICAwLCAgICAiRGF5IG9mIHRoZSBEZWFkIiksCisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLk5PVkVNQkVSLCAgMjAsICAwLCAgICAiUmV2b2x1dGlvbiBEYXkiKSwKKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuREVDRU1CRVIsICAxMiwgIDAsICAgICJGbGFnIERheSIpLAorICAgICAgICBTaW1wbGVIb2xpZGF5LkNIUklTVE1BUywKKyAgICB9OworICAgIHN0YXRpYyBwcml2YXRlIGZpbmFsIE9iamVjdFtdW10gZkNvbnRlbnRzID0geworICAgICAgICB7ICJob2xpZGF5cyIsICAgZkhvbGlkYXlzIH0sCisgICAgfTsKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7IHJldHVybiBmQ29udGVudHM7IH0KK307CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hvbGlkYXlCdW5kbGVfZnIuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSG9saWRheUJ1bmRsZV9mci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmE2ZTEyMTgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hvbGlkYXlCdW5kbGVfZnIuamF2YQpAQCAtMCwwICsxLDUwIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hvbGlkYXlCdW5kbGVfZnIuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNTo0NyAkIAorICogJFJldmlzaW9uOiAxLjQgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS5pY3UuaW1wbC5kYXRhOworCitpbXBvcnQgY29tLmlibS5pY3UudXRpbC4qOworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKK3B1YmxpYyBjbGFzcyBIb2xpZGF5QnVuZGxlX2ZyIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKyAgICBzdGF0aWMgcHJpdmF0ZSBmaW5hbCBPYmplY3RbXVtdIGZDb250ZW50cyA9IHsKKyAgICAgICAgeyAgICJBbGwgU2FpbnRzJyBEYXkiLCAgICAgICJUb3Vzc2FpbnQiIH0sCisgICAgICAgIHsgICAiQXJtaXN0aWNlIERheSIsICAgICAgICAiSm91ciBkZSBsJ0FybWlzdGljZSIgfSwKKyAgICAgICAgeyAgICJBc2NlbnNpb24iLCAgICAgICAgICAgICJBc2NlbnNpb24iIH0sCisgICAgICAgIHsgICAiQmFzdGlsbGUgRGF5IiwgICAgICAgICAiRlx1MDBFQXRlIGRlIGxhIEJhc3RpbGxlIiB9LAorICAgICAgICB7ICAgIkJlbml0byBKdVx1MDBFMXJleiBEYXkiLCAgICAiRlx1MDBFQXRlIGRlIEJlbml0byBKdVx1MDBFMXJleiIgfSwKKyAgICAgICAgeyAgICJCb3hpbmcgRGF5IiwgICAgICAgICAgICJMZW5kZW1haW4gZGUgTm9cdTAwRUJsIiB9LAorICAgICAgICB7ICAgIkNocmlzdG1hcyBFdmUiLCAgICAgICAgIlZlaWxsZSBkZSBOb1x1MDBFQmwiIH0sCisgICAgICAgIHsgICAiQ2hyaXN0bWFzIiwgICAgICAgICAgICAiTm9cdTAwRUJsIiB9LAorICAgICAgICB7ICAgIkVhc3RlciBNb25kYXkiLCAgICAgICAgIlBcdTAwRTJxdWVzIGx1bmRpIiB9LAorICAgICAgICB7ICAgIkVhc3RlciBTdW5kYXkiLCAgICAgICAgIlBcdTAwRTJxdWVzIiB9LAorICAgICAgICB7ICAgIkVwaXBoYW55IiwgICAgICAgICAgICAgImwnXHUwMEM5cGlwaGFuaWUiIH0sCisgICAgICAgIHsgICAiRmxhZyBEYXkiLCAgICAgICAgICAgICAiRlx1MDBFQXRlIGR1IERyYXBlYXUiIH0sCisgICAgICAgIHsgICAiR29vZCBGcmlkYXkiLCAgICAgICAgICAiVmVuZHJlZGkgU2FpbnQiIH0sCisgICAgICAgIHsgICAiSGFsbG93ZWVuIiwgICAgICAgICAgICAiVmVpbGxlIGRlIGxhIFRvdXNzYWludCIgfSwKKyAgICAgICAgeyAgICJBbGwgU2FpbnRzJyBEYXkiLCAgICAgICJUb3Vzc2FpbnQiIH0sCisgICAgICAgIHsgICAiSW5kZXBlbmRlbmNlIERheSIsICAgICAiRlx1MDBFQXRlIEluZFx1MDBFOXBlbmRhbmNlIiB9LAorICAgICAgICB7ICAgIk1hdW5keSBUaHVyc2RheSIsICAgICAgIkpldWRpIFNhaW50IiB9LAorICAgICAgICB7ICAgIk1vdGhlcidzIERheSIsICAgICAgICAgIkZcdTAwRUF0ZSBkZXMgbVx1MDBFOHJlcyIgfSwKKyAgICAgICAgeyAgICJOYXRpb25hbCBEYXkiLCAgICAgICAgICJGXHUwMEVBdGUgTmF0aW9uYWxlIiB9LAorICAgICAgICB7ICAgIk5ldyBZZWFyJ3MgRGF5IiwgICAgICAgIkpvdXIgZGUgbCdhbiIgfSwKKyAgICAgICAgeyAgICJQYWxtIFN1bmRheSIsICAgICAgICAgICJsZXMgUmFtZWF1eCIgfSwKKyAgICAgICAgeyAgICJQZW50ZWNvc3QiLCAgICAgICAgICAgICJQZW50ZWNcdTAwRjR0ZSIgfSwKKyAgICAgICAgeyAgICJTaHJvdmUgVHVlc2RheSIsICAgICAgICJNYXJkaSBHcmFzIiB9LAorICAgICAgICB7ICAgIlN0LiBTdGVwaGVuJ3MgRGF5IiwgICAgIlNhaW50LVx1MDBDOXRpZW5uZSIgfSwKKyAgICAgICAgeyAgICJWaWN0b3JpYSBEYXkiLCAgICAgICAgICJGXHUwMEVBdGUgZGUgbGEgVmljdG9yaWEiIH0sCisgICAgICAgIHsgICAiVmljdG9yeSBEYXkiLCAgICAgICAgICAiRlx1MDBFQXRlIGRlIGxhIFZpY3RvaXJlIiB9LAorICAgIH07CisKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7IHJldHVybiBmQ29udGVudHM7IH0KK307CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hvbGlkYXlCdW5kbGVfZnJfQ0EuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSG9saWRheUJ1bmRsZV9mcl9DQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjNjMjBhMzMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hvbGlkYXlCdW5kbGVfZnJfQ0EuamF2YQpAQCAtMCwwICsxLDQzIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hvbGlkYXlCdW5kbGVfZnJfQ0EuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNTo0NyAkIAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS5pY3UuaW1wbC5kYXRhOworCitpbXBvcnQgY29tLmlibS5pY3UudXRpbC4qOworaW1wb3J0IGphdmEudXRpbC5DYWxlbmRhcjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCitwdWJsaWMgY2xhc3MgSG9saWRheUJ1bmRsZV9mcl9DQSBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisgICAgc3RhdGljIHByaXZhdGUgZmluYWwgSG9saWRheVtdIGZIb2xpZGF5cyA9IHsKKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuSkFOVUFSWSwgICAgMSwgIDAsICAgICAgICAgICAgICAgICAgIk5ldyBZZWFyJ3MgRGF5IiksCisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLk1BWSwgICAgICAgMTksICAwLCAgICAgICAgICAgICAgICAgICJWaWN0b3JpYSBEYXkiKSwKKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuSlVORSwgICAgICAyNCwgIDAsICAgICAgICAgICAgICAgICAgIk5hdGlvbmFsIERheSIpLAorICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5KVUxZLCAgICAgICAxLCAgMCwgICAgICAgICAgICAgICAgICAiQ2FuYWRhIERheSIpLAorICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5BVUdVU1QsICAgICAxLCAgQ2FsZW5kYXIuTU9OREFZLCAgICAiQ2l2aWMgSG9saWRheSIpLAorICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5TRVBURU1CRVIsICAxLCAgQ2FsZW5kYXIuTU9OREFZLCAgICAiTGFib3VyIERheSIpLAorICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5PQ1RPQkVSLCAgICA4LCAgQ2FsZW5kYXIuTU9OREFZLCAgICAiVGhhbmtzZ2l2aW5nIiksCisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLk5PVkVNQkVSLCAgMTEsICAwLCAgICAgICAgICAgICAgICAgICJSZW1lbWJyYW5jZSBEYXkiKSwKKyAgICAgICAgU2ltcGxlSG9saWRheS5DSFJJU1RNQVMsCisgICAgICAgIFNpbXBsZUhvbGlkYXkuQk9YSU5HX0RBWSwKKyAgICAgICAgU2ltcGxlSG9saWRheS5ORVdfWUVBUlNfRVZFLAorCisgICAgICAgIC8vIEVhc3RlciBhbmQgcmVsYXRlZCBob2xpZGF5cworICAgICAgICBFYXN0ZXJIb2xpZGF5LkdPT0RfRlJJREFZLAorICAgICAgICBFYXN0ZXJIb2xpZGF5LkVBU1RFUl9TVU5EQVksCisgICAgICAgIEVhc3RlckhvbGlkYXkuRUFTVEVSX01PTkRBWSwKKyAgICB9OworICAgIHN0YXRpYyBwcml2YXRlIGZpbmFsIE9iamVjdFtdW10gZkNvbnRlbnRzID0geworICAgICAgICB7ICJob2xpZGF5cyIsICAgZkhvbGlkYXlzIH0sCisgICAgfTsKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7IHJldHVybiBmQ29udGVudHM7IH0KK307CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hvbGlkYXlCdW5kbGVfZnJfRlIuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSG9saWRheUJ1bmRsZV9mcl9GUi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjNiZTg3YjUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hvbGlkYXlCdW5kbGVfZnJfRlIuamF2YQpAQCAtMCwwICsxLDQyIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hvbGlkYXlCdW5kbGVfZnJfRlIuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNTo0NyAkIAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS5pY3UuaW1wbC5kYXRhOworCitpbXBvcnQgY29tLmlibS5pY3UudXRpbC4qOworaW1wb3J0IGphdmEudXRpbC5DYWxlbmRhcjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCitwdWJsaWMgY2xhc3MgSG9saWRheUJ1bmRsZV9mcl9GUiBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisgICAgc3RhdGljIHByaXZhdGUgZmluYWwgSG9saWRheVtdIGZIb2xpZGF5cyA9IHsKKyAgICAgICAgU2ltcGxlSG9saWRheS5ORVdfWUVBUlNfREFZLAorICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5NQVksICAgICAgICAxLCAgMCwgIkxhYm9yIERheSIpLAorICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5NQVksICAgICAgICA4LCAgMCwgIlZpY3RvcnkgRGF5IiksCisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLkpVTFksICAgICAgMTQsICAwLCAiQmFzdGlsbGUgRGF5IiksCisgICAgICAgIFNpbXBsZUhvbGlkYXkuQVNTVU1QVElPTiwKKyAgICAgICAgU2ltcGxlSG9saWRheS5BTExfU0FJTlRTX0RBWSwKKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuTk9WRU1CRVIsICAxMSwgIDAsICJBcm1pc3RpY2UgRGF5IiksCisgICAgICAgIFNpbXBsZUhvbGlkYXkuQ0hSSVNUTUFTLAorCisgICAgICAgIC8vIEVhc3RlciBhbmQgcmVsYXRlZCBob2xpZGF5cworICAgICAgICBFYXN0ZXJIb2xpZGF5LkVBU1RFUl9TVU5EQVksCisgICAgICAgIEVhc3RlckhvbGlkYXkuRUFTVEVSX01PTkRBWSwKKyAgICAgICAgRWFzdGVySG9saWRheS5BU0NFTlNJT04sCisgICAgICAgIEVhc3RlckhvbGlkYXkuV0hJVF9TVU5EQVksCisgICAgICAgIEVhc3RlckhvbGlkYXkuV0hJVF9NT05EQVksCisgICAgfTsKKyAgICBzdGF0aWMgcHJpdmF0ZSBmaW5hbCBPYmplY3RbXVtdIGZDb250ZW50cyA9IHsKKyAgICAgICAgeyAiaG9saWRheXMiLCAgIGZIb2xpZGF5cyB9LAorICAgIH07CisgICAgcHVibGljIHN5bmNocm9uaXplZCBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeyByZXR1cm4gZkNvbnRlbnRzOyB9Cit9OwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9Ib2xpZGF5QnVuZGxlX2l0LmphdmEgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hvbGlkYXlCdW5kbGVfaXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5jZmUxZTYxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9Ib2xpZGF5QnVuZGxlX2l0LmphdmEKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9Ib2xpZGF5QnVuZGxlX2l0LmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDIvMTYgMDM6MDU6NDcgJCAKKyAqICRSZXZpc2lvbjogMS40ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LmltcGwuZGF0YTsKKworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuKjsKK2ltcG9ydCBqYXZhLnV0aWwuQ2FsZW5kYXI7CitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKKworcHVibGljIGNsYXNzIEhvbGlkYXlCdW5kbGVfaXQgZXh0ZW5kcyBMaXN0UmVzb3VyY2VCdW5kbGUgeworICAgIHN0YXRpYyBwcml2YXRlIGZpbmFsIE9iamVjdFtdW10gZkNvbnRlbnRzID0KKyAgICB7CisgICAgICAgIHsgICAiQWxsIFNhaW50cycgRGF5IiwgICAgICAiT2duaXNzYW50aSIgfSwKKyAgICAgICAgeyAgICJBcm1pc3RpY2UgRGF5IiwgICAgICAgICJhcm1pc3RpemlvIiB9LAorICAgICAgICB7ICAgIkFzY2Vuc2lvbiIsICAgICAgICAgICAgImFzY2Vuc2lvbmUiIH0sCisgICAgICAgIHsgICAiQXNoIFdlZG5lc2RheSIsICAgICAgICAibWVyY29sZWRcdTAwZWMgZGVsbGUgY2VuZXJpIiB9LAorICAgICAgICB7ICAgIkJveGluZyBEYXkiLCAgICAgICAgICAgIlNhbnRvIFN0ZWZhbm8iIH0sCisgICAgICAgIHsgICAiQ2hyaXN0bWFzIiwgICAgICAgICAgICAibmF0YWxlIiB9LAorICAgICAgICB7ICAgIkVhc3RlciBTdW5kYXkiLCAgICAgICAgInBhc3F1YSIgfSwKKyAgICAgICAgeyAgICJFcGlwaGFueSIsICAgICAgICAgICAgICJFcGlmYW5pYSIgfSwKKyAgICAgICAgeyAgICJHb29kIEZyaWRheSIsICAgICAgICAgICJ2ZW5lcmRcdTAwZWMgc2FudG8iIH0sCisgICAgICAgIHsgICAiSGFsbG93ZWVuIiwgICAgICAgICAgICAidmlnaWxpYSBkaSBPZ25pc3NhbnRpIiB9LAorICAgICAgICB7ICAgIk1hdW5keSBUaHVyc2RheSIsICAgICAgImdpb3ZlZFx1MDBlYyBzYW50byIgfSwKKyAgICAgICAgeyAgICJOZXcgWWVhcidzIERheSIsICAgICAgICJhbm5vIG51b3ZvIiB9LAorICAgICAgICB7ICAgIlBhbG0gU3VuZGF5IiwgICAgICAgICAgImRvbWVuaWNhIGRlbGxlIHBhbG1lIiB9LAorICAgICAgICB7ICAgIlBlbnRlY29zdCIsICAgICAgICAgICAgImRpIFBlbnRlY29zdGUiIH0sCisgICAgICAgIHsgICAiU2hyb3ZlIFR1ZXNkYXkiLCAgICAgICAibWFydGVkaSBncmFzc28iIH0sCisgICAgICAgIHsgICAiU3QuIFN0ZXBoZW4ncyBEYXkiLCAgICAiU2FudG8gU3RlZmFubyIgfSwKKyAgICAgICAgeyAgICJUaGFua3NnaXZpbmciLCAgICAgICAgICJHaW9ybm8gZGVsIFJpbmdyYXppYW1lbnRvIiB9LAorCisgICAgfTsKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7IHJldHVybiBmQ29udGVudHM7IH0KK307CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hvbGlkYXlCdW5kbGVfaXRfSVQuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSG9saWRheUJ1bmRsZV9pdF9JVC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjZjNDUzZmEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hvbGlkYXlCdW5kbGVfaXRfSVQuamF2YQpAQCAtMCwwICsxLDQxIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hvbGlkYXlCdW5kbGVfaXRfSVQuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNTo0NyAkIAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS5pY3UuaW1wbC5kYXRhOworCitpbXBvcnQgY29tLmlibS5pY3UudXRpbC4qOworaW1wb3J0IGphdmEudXRpbC5DYWxlbmRhcjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCitwdWJsaWMgY2xhc3MgSG9saWRheUJ1bmRsZV9pdF9JVCBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisgICAgc3RhdGljIHByaXZhdGUgZmluYWwgSG9saWRheVtdIGZIb2xpZGF5cyA9IHsKKyAgICAgICAgU2ltcGxlSG9saWRheS5ORVdfWUVBUlNfREFZLAorICAgICAgICBTaW1wbGVIb2xpZGF5LkVQSVBIQU5ZLAorICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5BUFJJTCwgICAgICAxLCAgMCwgICAgIkxpYmVyYXRpb24gRGF5IiksCisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLk1BWSwgICAgICAgIDEsICAwLCAgICAiTGFib3IgRGF5IiksCisgICAgICAgIFNpbXBsZUhvbGlkYXkuQVNTVU1QVElPTiwKKyAgICAgICAgU2ltcGxlSG9saWRheS5BTExfU0FJTlRTX0RBWSwKKyAgICAgICAgU2ltcGxlSG9saWRheS5JTU1BQ1VMQVRFX0NPTkNFUFRJT04sCisgICAgICAgIFNpbXBsZUhvbGlkYXkuQ0hSSVNUTUFTLAorICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5ERUNFTUJFUiwgIDI2LCAgMCwgICAgIlN0LiBTdGVwaGVucyBEYXkiKSwKKyAgICAgICAgU2ltcGxlSG9saWRheS5ORVdfWUVBUlNfRVZFLAorCisgICAgICAgIC8vIEVhc3RlciBhbmQgcmVsYXRlZCBob2xpZGF5cworICAgICAgICBFYXN0ZXJIb2xpZGF5LkVBU1RFUl9TVU5EQVksCisgICAgICAgIEVhc3RlckhvbGlkYXkuRUFTVEVSX01PTkRBWSwKKyAgICB9OworICAgIHN0YXRpYyBwcml2YXRlIGZpbmFsIE9iamVjdFtdW10gZkNvbnRlbnRzID0geworICAgICAgICB7ICJob2xpZGF5cyIsICAgICAgICAgICBmSG9saWRheXMgfSwKKyAgICB9OworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsgcmV0dXJuIGZDb250ZW50czsgfQorfTsKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSG9saWRheUJ1bmRsZV9pdy5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9Ib2xpZGF5QnVuZGxlX2l3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMDA3M2M0ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSG9saWRheUJ1bmRsZV9pdy5qYXZhCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSG9saWRheUJ1bmRsZV9pdy5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzAyLzE2IDAzOjA1OjQ4ICQgCisgKiAkUmV2aXNpb246IDEuMyAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworcGFja2FnZSBjb20uaWJtLmljdS5pbXBsLmRhdGE7CisKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLio7CitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKKworcHVibGljIGNsYXNzIEhvbGlkYXlCdW5kbGVfaXcgZXh0ZW5kcyBMaXN0UmVzb3VyY2VCdW5kbGUgeworCisgICAgc3RhdGljIHByaXZhdGUgZmluYWwgT2JqZWN0W11bXSBmQ29udGVudHMgPSB7CisgICAgICAgIHsgICAiIiwgIiIgIH0sICAgICAgLy8gQ2FuJ3QgYmUgZW1wdHkhCisgICAgfTsKKworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsgcmV0dXJuIGZDb250ZW50czsgfTsKKworfTsKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSG9saWRheUJ1bmRsZV9pd19JTC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9Ib2xpZGF5QnVuZGxlX2l3X0lMLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNmZlY2JlMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSG9saWRheUJ1bmRsZV9pd19JTC5qYXZhCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSG9saWRheUJ1bmRsZV9pd19JTC5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzAyLzE2IDAzOjA1OjQ4ICQgCisgKiAkUmV2aXNpb246IDEuMyAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworcGFja2FnZSBjb20uaWJtLmljdS5pbXBsLmRhdGE7CisKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLio7CitpbXBvcnQgamF2YS51dGlsLkNhbGVuZGFyOworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKK3B1YmxpYyBjbGFzcyBIb2xpZGF5QnVuZGxlX2l3X0lMIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKyAgICBzdGF0aWMgcHJpdmF0ZSBmaW5hbCBIb2xpZGF5W10gZkhvbGlkYXlzID0geworICAgICAgICBIZWJyZXdIb2xpZGF5LlJPU0hfSEFTSEFOQUgsCisgICAgICAgIEhlYnJld0hvbGlkYXkuWU9NX0tJUFBVUiwKKyAgICAgICAgSGVicmV3SG9saWRheS5IQU5VS0tBSCwKKyAgICAgICAgSGVicmV3SG9saWRheS5QVVJJTSwKKyAgICAgICAgSGVicmV3SG9saWRheS5QQVNTT1ZFUiwKKyAgICAgICAgSGVicmV3SG9saWRheS5TSEFWVU9ULAorICAgICAgICBIZWJyZXdIb2xpZGF5LlNFTElIT1QsCisgICAgfTsKKworICAgIHN0YXRpYyBwcml2YXRlIGZpbmFsIE9iamVjdFtdW10gZkNvbnRlbnRzID0geworICAgICAgICB7ICJob2xpZGF5cyIsICAgZkhvbGlkYXlzIH0sCisgICAgfTsKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7IHJldHVybiBmQ29udGVudHM7IH0KK307CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hvbGlkYXlCdW5kbGVfamFfSlAuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSG9saWRheUJ1bmRsZV9qYV9KUC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmY2YzNmYzYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hvbGlkYXlCdW5kbGVfamFfSlAuamF2YQpAQCAtMCwwICsxLDI4IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0hvbGlkYXlCdW5kbGVfamFfSlAuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNTo0OCAkIAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS5pY3UuaW1wbC5kYXRhOworCitpbXBvcnQgY29tLmlibS5pY3UudXRpbC4qOworaW1wb3J0IGphdmEudXRpbC5DYWxlbmRhcjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCitwdWJsaWMgY2xhc3MgSG9saWRheUJ1bmRsZV9qYV9KUCBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisgICAgc3RhdGljIHByaXZhdGUgZmluYWwgSG9saWRheVtdIGZIb2xpZGF5cyA9IHsKKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuRkVCUlVBUlksICAxMSwgIDAsICAgICJOYXRpb25hbCBGb3VuZGF0aW9uIERheSIpLAorICAgIH07CisgICAgc3RhdGljIHByaXZhdGUgZmluYWwgT2JqZWN0W11bXSBmQ29udGVudHMgPSB7CisgICAgICAgIHsgICAiaG9saWRheXMiLCAgICAgICAgIGZIb2xpZGF5cyAgIH0sCisgICAgfTsKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7IHJldHVybiBmQ29udGVudHM7IH0KK307CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0lDVUxvY2FsZURhdGEuamFyIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9JQ1VMb2NhbGVEYXRhLmphcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZmEzY2RhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9JQ1VMb2NhbGVEYXRhLmphcgpAQCAtMCwwICsxLDMgQEAKK3ZlcnNpb24gaHR0cHM6Ly9naXQtbGZzLmdpdGh1Yi5jb20vc3BlYy92MQorb2lkIHNoYTI1Njo5YmY3NmQ0M2VkY2JjYmM3MDlkOTlkM2Q4YWIwZmJiYjhkYTk2NDBiZTBkNmZhYjU4NjBmYTFmNzg1MmMxNTA3CitzaXplIDEwMTg1MDIKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSXNsYW1pY0NhbGVuZGFyU3ltYm9scy5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9Jc2xhbWljQ2FsZW5kYXJTeW1ib2xzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZTdjY2Q3YwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSXNsYW1pY0NhbGVuZGFyU3ltYm9scy5qYXZhCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQXR0aWMvSXNsYW1pY0NhbGVuZGFyU3ltYm9scy5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzAyLzE2IDAzOjA1OjQ4ICQgCisgKiAkUmV2aXNpb246IDEuNCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuaW1wbC5kYXRhOworCitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKKworLyoqCisgKiBEZWZhdWx0IERhdGUgRm9ybWF0IHN5bWJvbHMgZm9yIHRoZSBJc2xhbWljIENhbGVuZGFyCisgKi8KK3B1YmxpYyBjbGFzcyBJc2xhbWljQ2FsZW5kYXJTeW1ib2xzIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgY29weXJpZ2h0ID0gIkNvcHlyaWdodCBcdTAwYTkgMTk5OC0xOTk5IElCTSBDb3JwLiBBbGwgUmlnaHRzIFJlc2VydmVkLiI7CisKKyAgICBzdGF0aWMgZmluYWwgT2JqZWN0W11bXSBmQ29udGVudHMgPSB7CisgICAgICAgIHsgIk1vbnRoTmFtZXMiLCBuZXcgU3RyaW5nW10geyAKKyAgICAgICAgICAgICAgICAiTXVoYXJyYW0iLAorICAgICAgICAgICAgICAgICJTYWZhciIsCisgICAgICAgICAgICAgICAgIlJhYmknIEkiLAorICAgICAgICAgICAgICAgICJSYWJpJyBJSSIsCisgICAgICAgICAgICAgICAgIkp1bWFkYSBJIiwKKyAgICAgICAgICAgICAgICAiSnVtYWRhIEkiLAorICAgICAgICAgICAgICAgICJSYWphYiIsCisgICAgICAgICAgICAgICAgIlNoYSdiYW4iLAorICAgICAgICAgICAgICAgICJSYW1hZGFuIiwKKyAgICAgICAgICAgICAgICAiU2hhd3dhbCIsCisgICAgICAgICAgICAgICAgIkRodSdsLVFpJ2RhaCIsCisgICAgICAgICAgICAgICAgIkRodSdsLUhpamphaCIsCisgICAgICAgICAgICB9IH0sCisgICAgICAgIHsgIkVyYXMiLCBuZXcgU3RyaW5nW10geyAKKyAgICAgICAgICAgICAgICAiQUgiCisgICAgICAgICAgICB9IH0sCisgICAgfTsKKyAgICAgICAgCisgICAgcHVibGljIHN5bmNocm9uaXplZCBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeworICAgICAgICByZXR1cm4gZkNvbnRlbnRzOworICAgIH0KK307CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0lzbGFtaWNDYWxlbmRhclN5bWJvbHNfYXIuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSXNsYW1pY0NhbGVuZGFyU3ltYm9sc19hci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjUwYmNhYzcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0lzbGFtaWNDYWxlbmRhclN5bWJvbHNfYXIuamF2YQpAQCAtMCwwICsxLDQ3IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0F0dGljL0lzbGFtaWNDYWxlbmRhclN5bWJvbHNfYXIuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNTo0OCAkIAorICogJFJldmlzaW9uOiAxLjQgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LmltcGwuZGF0YTsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKKy8qKgorICogRGVmYXVsdCBEYXRlIEZvcm1hdCBzeW1ib2xzIGZvciB0aGUgSXNsYW1pYyBDYWxlbmRhcgorICovCitwdWJsaWMgY2xhc3MgSXNsYW1pY0NhbGVuZGFyU3ltYm9sc19hciBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGNvcHlyaWdodCA9ICJDb3B5cmlnaHQgXHUwMGE5IDE5OTkgSUJNIENvcnAuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuIjsKKworICAgIHN0YXRpYyBmaW5hbCBPYmplY3RbXVtdIGZDb250ZW50cyA9IHsKKyAgICAgICAgeyAiTW9udGhOYW1lcyIsIG5ldyBTdHJpbmdbXSB7IAorICAgICAgICAgICAgIlx1MDY0NVx1MDYyRFx1MDYzMVx1MDY0NSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTXVoYXJyYW0KKyAgICAgICAgICAgICJcdTA2MzVcdTA2NDFcdTA2MzEiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNhZmFyCisgICAgICAgICAgICAiXHUwNjMxXHUwNjI4XHUwNjRBXHUwNjM5IFx1MDYyN1x1MDY0NFx1MDYyM1x1MDY0OFx1MDY0NCIsICAgICAgICAgICAgICAvLyBSYWJpJyBJCisgICAgICAgICAgICAiXHUwNjMxXHUwNjI4XHUwNjRBXHUwNjM5IFx1MDYyN1x1MDY0NFx1MDYyMlx1MDYyRVx1MDYzMSIsICAgICAgICAgICAgICAvLyBSYWJpJyBJSQorICAgICAgICAgICAgIlx1MDYyQ1x1MDY0NVx1MDYyN1x1MDYyRlx1MDY0OSBcdTA2MjdcdTA2NDRcdTA2MjNcdTA2NDhcdTA2NDRcdTA2NDkiLCAgLy8gSnVtYWRhIEkKKyAgICAgICAgICAgICJcdTA2MkNcdTA2NDVcdTA2MjdcdTA2MkZcdTA2NDkgXHUwNjI3XHUwNjQ0XHUwNjIyXHUwNjJFXHUwNjMxXHUwNjI5IiwgIC8vIEp1bWFkYSBJCisgICAgICAgICAgICAiXHUwNjMxXHUwNjJDXHUwNjI4IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSYWphYgorICAgICAgICAgICAgIlx1MDYzNFx1MDYzOVx1MDYyOFx1MDYyN1x1MDY0NiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2hhJ2JhbgorICAgICAgICAgICAgIlx1MDYzMVx1MDY0NVx1MDYzNlx1MDYyN1x1MDY0NiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmFtYWRhbgorICAgICAgICAgICAgIlx1MDYzNFx1MDY0OFx1MDYyN1x1MDY0NCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2hhd3dhbAorICAgICAgICAgICAgIlx1MDYzMFx1MDY0OCBcdTA2MjdcdTA2NDRcdTA2NDJcdTA2MzlcdTA2MkZcdTA2MjkiLCAgICAgICAgICAgICAgICAgICAgLy8gRGh1J2wtUWknZGFoCisgICAgICAgICAgICAiXHUwNjMwXHUwNjQ4IFx1MDYyN1x1MDY0NFx1MDYyRFx1MDYyQ1x1MDYyOSIsICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEaHUnbC1IaWpqYWgKKyAgICAgICAgfSB9LAorICAgICAgICB7ICJFcmFzIiwgbmV3IFN0cmluZ1tdIHsgCisgICAgICAgICAgICAiXHUwNjQ3XHUyMDBEIiwgIC8vIEFICisgICAgICAgIH0gfSwKKyAgICB9OworICAgICAgICAKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7CisgICAgICAgIHJldHVybiBmQ29udGVudHM7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSXNsYW1pY0NhbGVuZGFyU3ltYm9sc19maS5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9Jc2xhbWljQ2FsZW5kYXJTeW1ib2xzX2ZpLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZGFiNjA5NgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSXNsYW1pY0NhbGVuZGFyU3ltYm9sc19maS5qYXZhCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQXR0aWMvSXNsYW1pY0NhbGVuZGFyU3ltYm9sc19maS5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzAyLzE2IDAzOjA1OjQ5ICQgCisgKiAkUmV2aXNpb246IDEuNCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuaW1wbC5kYXRhOworCitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKKworLyoqCisgKiBGaW5uaXNoIGRhdGUgZm9ybWF0IHN5bWJvbHMgZm9yIHRoZSBJc2xhbWljIENhbGVuZGFyCisgKi8KK3B1YmxpYyBjbGFzcyBJc2xhbWljQ2FsZW5kYXJTeW1ib2xzX2ZpIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKworICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBjb3B5cmlnaHQgPSAiQ29weXJpZ2h0IFx1MDBhOSAxOTk4IElCTSBDb3JwLiBBbGwgUmlnaHRzIFJlc2VydmVkLiI7CisKKyAgICBzdGF0aWMgZmluYWwgT2JqZWN0W11bXSBmQ29udGVudHMgPSB7CisgICAgICAgIHsgIk1vbnRoTmFtZXMiLCBuZXcgU3RyaW5nW10geworICAgICAgICAgICAgIk11aFx1MDBFMXJyYW0iLCAgICAgICAgICAgICAgICAvLyBNdWhhcnJhbQorICAgICAgICAgICAgIlNcdTAwRTFmYXIiLCAgICAgICAgICAgICAgICAgICAvLyBTYWZhcgorICAgICAgICAgICAgIlJhYlx1MDBFRCcgYWwtXHUwMEUxd3dhbCIsICAgICAvLyBSYWJpJyBhbC1hd3dhbAorICAgICAgICAgICAgIlJhYlx1MDBFRCcgYWwtXHUwMEUxa2hpciIsICAgICAvLyBSYWJpJyBhbC10aGFuaQorICAgICAgICAgICAgIkRcdTAxN0V1bWFkYS1sLVx1MDBGQWxhIiwgICAgICAvLyBKdW1hZGEgYWwtYXd3YWwKKyAgICAgICAgICAgICJEXHUwMTdFdW1hZGEtbC1cdTAwRTFraGlyYSIsICAgLy8gSnVtYWRhIGFsLXRoYW5pCisgICAgICAgICAgICAiUmFkXHUwMTdFYWIiLCAgICAgICAgICAgICAgICAgIC8vIFJhamFiCisgICAgICAgICAgICAiXHUwMTYwYSdiXHUwMEUxbiIsICAgICAgICAgICAgIC8vIFNoYSdiYW4KKyAgICAgICAgICAgICJSYW1hZFx1MDBFMW4iLCAgICAgICAgICAgICAgICAgLy8gUmFtYWRhbgorICAgICAgICAgICAgIlx1MDE2MGF3d2FsIiwgICAgICAgICAgICAgICAgICAvLyBTaGF3d2FsCisgICAgICAgICAgICAiRGh1LWwtcWFkYSIsICAgICAgICAgICAgICAgICAgIC8vIERodSBhbC1RaSdkYWgKKyAgICAgICAgICAgICJEaHUtbC1oaWRkXHUwMTdFYSIsICAgICAgICAgICAgLy8gRGh1IGFsLUhpamphaAorICAgICAgICAgICAgfSB9LAorICAgICAgICB7ICJFcmFzIiwgbmV3IFN0cmluZ1tdIHsKKyAgICAgICAgICAgICJBSCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQW5ubyBIaWRcdTAxN0VyYQorICAgICAgICAgICAgfSB9LAorICAgIH07CisKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7CisgICAgICAgIHJldHVybiBmQ29udGVudHM7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSXNsYW1pY0NhbGVuZGFyU3ltYm9sc19mci5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9Jc2xhbWljQ2FsZW5kYXJTeW1ib2xzX2ZyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNmE5NmVkMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSXNsYW1pY0NhbGVuZGFyU3ltYm9sc19mci5qYXZhCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQXR0aWMvSXNsYW1pY0NhbGVuZGFyU3ltYm9sc19mci5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzAyLzE2IDAzOjA1OjQ5ICQgCisgKiAkUmV2aXNpb246IDEuNCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuaW1wbC5kYXRhOworCitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKKworLyoqCisgKiBGcmVuY2ggZGF0ZSBmb3JtYXQgc3ltYm9scyBmb3IgdGhlIElzbGFtaWMgQ2FsZW5kYXIKKyAqIFRoaXMgZGF0YSBhY3R1YWxseSBhcHBsaWVzIHRvIEZyZW5jaCBDYW5hZGlhbi4gIElmIHdlIHJlY2VpdmUKKyAqIG9mZmljaWFsIEZyZW5jaCBkYXRhIGZyb20gb3VyIEZyYW5jZSBvZmZpY2UsIHdlIHNob3VsZCBtb3ZlIHRoZSAKKyAqIEZyZW5jaCBDYW5hZGlhbiBkYXRhIChpZiBpdCdzIGRpZmZlcmVudCkgZG93biBpbnRvIF9mcl9DQQorICovCitwdWJsaWMgY2xhc3MgSXNsYW1pY0NhbGVuZGFyU3ltYm9sc19mciBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgY29weXJpZ2h0ID0gIkNvcHlyaWdodCBcdTAwYTkgMTk5OCBJQk0gQ29ycC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4iOworCisgICAgc3RhdGljIGZpbmFsIE9iamVjdFtdW10gZkNvbnRlbnRzID0geworICAgICAgICB7ICJNb250aE5hbWVzIiwgbmV3IFN0cmluZ1tdIHsKKyAgICAgICAgICAgICJNb3VoYXJyYW0iLCAgICAgICAgICAgIC8vIE11aGFycmFtCisgICAgICAgICAgICAiU2FmYXIiLCAgICAgICAgICAgICAgICAvLyBTYWZhcgorICAgICAgICAgICAgIlJhYmknLW91bC1Bb3VvdWFsIiwgICAgLy8gUmFiaScgYWwtYXd3YWwKKyAgICAgICAgICAgICJSYWJpJy1vdXQtVGFuaSIsICAgICAgIC8vIFJhYmknIGFsLXRoYW5pCisgICAgICAgICAgICAiRGpvdW1hZGEtbC1PdWxhIiwgICAgICAvLyBKdW1hZGEgYWwtYXd3YWwKKyAgICAgICAgICAgICJEam91bWFkYS10LVRhbmlhIiwgICAgIC8vIEp1bWFkYSBhbC10aGFuaQorICAgICAgICAgICAgIlJhZGphYiIsICAgICAgICAgICAgICAgLy8gUmFqYWIKKyAgICAgICAgICAgICJDaGEnYmFuIiwgICAgICAgICAgICAgIC8vIFNoYSdiYW4KKyAgICAgICAgICAgICJSYW1hZGFuIiwgICAgICAgICAgICAgIC8vIFJhbWFkYW4KKyAgICAgICAgICAgICJDaGFvdW91YWwiLCAgICAgICAgICAgIC8vIFNoYXd3YWwKKyAgICAgICAgICAgICJEb3UtbC1RYSdkYSIsICAgICAgICAgIC8vIERodSBhbC1RaSdkYWgKKyAgICAgICAgICAgICJEb3UtbC1IaWRqamEiLCAgICAgICAgIC8vIERodSBhbC1IaWpqYWgKKyAgICAgICAgICAgIH0gfSwKKyAgICAgICAgeyAiRXJhcyIsIG5ldyBTdHJpbmdbXSB7CisgICAgICAgICAgICAiQUgiICAgICAgICAvLyBBbm5vIEhpanJpCisgICAgICAgICAgICB9IH0sCisgICAgfTsKKworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsKKyAgICAgICAgcmV0dXJuIGZDb250ZW50czsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9Jc2xhbWljQ2FsZW5kYXJTeW1ib2xzX2h1LmphdmEgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0lzbGFtaWNDYWxlbmRhclN5bWJvbHNfaHUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hZjFiMDcxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9Jc2xhbWljQ2FsZW5kYXJTeW1ib2xzX2h1LmphdmEKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9BdHRpYy9Jc2xhbWljQ2FsZW5kYXJTeW1ib2xzX2h1LmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDIvMTYgMDM6MDU6NDkgJCAKKyAqICRSZXZpc2lvbjogMS40ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5pbXBsLmRhdGE7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCisvKioKKyAqIEh1bmdhcmlhbiBkYXRlIGZvcm1hdCBzeW1ib2xzIGZvciB0aGUgSXNsYW1pYyBDYWxlbmRhcgorICovCitwdWJsaWMgY2xhc3MgSXNsYW1pY0NhbGVuZGFyU3ltYm9sc19odSBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgY29weXJpZ2h0ID0gIkNvcHlyaWdodCBcdTAwYTkgMTk5OCBJQk0gQ29ycC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4iOworCisgICAgc3RhdGljIGZpbmFsIE9iamVjdFtdW10gZkNvbnRlbnRzID0geworICAgICAgICB7ICJNb250aE5hbWVzIiwgbmV3IFN0cmluZ1tdIHsKKyAgICAgICAgICAgICJNb2hhcnJlbSIsICAgICAgICAgICAgICAgICAvLyBNdWhhcnJhbQorICAgICAgICAgICAgIlNhZmFyIiwgICAgICAgICAgICAgICAgICAgIC8vIFNhZmFyCisgICAgICAgICAgICAiUlx1MDBFOWJpIGVsIGF2dmVsIiwgICAgICAgLy8gUmFiaScgYWwtYXd3YWwKKyAgICAgICAgICAgICJSXHUwMEU5YmkgZWwgYWNjaGVyIiwgICAgICAvLyBSYWJpJyBhbC10aGFuaQorICAgICAgICAgICAgIkRzZW1cdTAwRTFkaSBlbCBhdnZlbCIsICAgIC8vIEp1bWFkYSBhbC1hd3dhbAorICAgICAgICAgICAgIkRzZW1cdTAwRTFkaSBlbCBhY2NoZXIiLCAgIC8vIEp1bWFkYSBhbC10aGFuaQorICAgICAgICAgICAgIlJlZHNlYiIsICAgICAgICAgICAgICAgICAgIC8vIFJhamFiCisgICAgICAgICAgICAiU2FiXHUwMEUxbiIsICAgICAgICAgICAgICAgLy8gU2hhJ2JhbgorICAgICAgICAgICAgIlJhbWFkXHUwMEUxbiIsICAgICAgICAgICAgIC8vIFJhbWFkYW4KKyAgICAgICAgICAgICJTZXZ2XHUwMEUxbCIsICAgICAgICAgICAgICAvLyBTaGF3d2FsCisgICAgICAgICAgICAiRHNcdTAwRkNsIGthZGUiLCAgICAgICAgICAgLy8gRGh1IGFsLVFpJ2RhaAorICAgICAgICAgICAgIkRzXHUwMEZDbCBoZWRzZSIsICAgICAgICAgIC8vIERodSBhbC1IaWpqYWgKKyAgICAgICAgICAgIH0gfSwKKyAgICAgICAgeyAiRXJhcyIsIG5ldyBTdHJpbmdbXSB7CisgICAgICAgICAgICAiTUYiCisgICAgICAgICAgICB9IH0sCisgICAgfTsKKworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsKKyAgICAgICAgcmV0dXJuIGZDb250ZW50czsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9Jc2xhbWljQ2FsZW5kYXJTeW1ib2xzX2l3LmphdmEgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0lzbGFtaWNDYWxlbmRhclN5bWJvbHNfaXcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5iY2Y1MmNmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9Jc2xhbWljQ2FsZW5kYXJTeW1ib2xzX2l3LmphdmEKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9BdHRpYy9Jc2xhbWljQ2FsZW5kYXJTeW1ib2xzX2l3LmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDIvMTYgMDM6MDU6NDkgJCAKKyAqICRSZXZpc2lvbjogMS40ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5pbXBsLmRhdGE7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCisvKioKKyAqIERlZmF1bHQgRGF0ZSBGb3JtYXQgc3ltYm9scyBmb3IgdGhlIElzbGFtaWMgQ2FsZW5kYXIKKyAqLworcHVibGljIGNsYXNzIElzbGFtaWNDYWxlbmRhclN5bWJvbHNfaXcgZXh0ZW5kcyBMaXN0UmVzb3VyY2VCdW5kbGUgeworCisgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGNvcHlyaWdodCA9ICJDb3B5cmlnaHQgXHUwMGE5IDE5OTggSUJNIENvcnAuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuIjsKKworICAgIHN0YXRpYyBmaW5hbCBPYmplY3RbXVtdIGZDb250ZW50cyA9IHsKKyAgICAgICAgeyAiTW9udGhOYW1lcyIsIG5ldyBTdHJpbmdbXSB7CisgICAgICAgICAgICAiXHUwNURFXHUwNUQ1XHUwNUQ3XHUwNUU4XHUwNUREIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE11aGFycmFtCisgICAgICAgICAgICAiXHUwNUUxXHUwNUU0XHUwNUU4IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNhZmFyCisgICAgICAgICAgICAiXHUwNUU4XHUwNUQxXHUwNUQ5XHUwNUUyIFx1MDVEMFx1MDVEQy1cdTA1RDBcdTA1RDVcdTA1RDVcdTA1RDBcdTA1REMiLCAgICAgICAgIC8vIFJhYmknIGFsLWF3d2FsCisgICAgICAgICAgICAiXHUwNUU4XHUwNUQxXHUwNUQ5XHUwNUUyIFx1MDVEMFx1MDVEQy1cdTA1RUFcdTA1RTBcdTA1RDkiLCAgICAgICAgICAgICAgICAgICAgIC8vIFJhYmknIGFsLXRoYW5pCisgICAgICAgICAgICAiXHUwNUQyJ1x1MDVENVx1MDVERVx1MDVEM1x1MDVENCBcdTA1RDBcdTA1REMtXHUwNUQwXHUwNUQ1XHUwNUQ1XHUwNUQwXHUwNURDIiwgIC8vIEp1bWFkYSBhbC1hd3dhbAorICAgICAgICAgICAgIlx1MDVEMidcdTA1RDVcdTA1REVcdTA1RDNcdTA1RDQgXHUwNUQwXHUwNURDLVx1MDVFQVx1MDVFMFx1MDVEOSIsICAgICAgICAgICAgICAvLyBKdW1hZGEgYWwtdGhhbmkKKyAgICAgICAgICAgICJcdTA1RThcdTA1RDInXHUwNUQwXHUwNUQxIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmFqYWIKKyAgICAgICAgICAgICJcdTA1RTlcdTA1RTJcdTA1RDFcdTA1RDBcdTA1REYiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2hhJ2JhbgorICAgICAgICAgICAgIlx1MDVFOFx1MDVEMFx1MDVERVx1MDVEM1x1MDVERiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSYW1hZGFuCisgICAgICAgICAgICAiXHUwNUU5XHUwNUQ1XHUwNUQ1XHUwNUQwXHUwNURDIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNoYXd3YWwKKyAgICAgICAgICAgICJcdTA1RTlcdTA1RDVcdTA1RDVcdTA1RDBcdTA1REMiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGh1IGFsLVFpJ2RhaAorICAgICAgICAgICAgIlx1MDVENlx1MDVENSBcdTA1RDBcdTA1REMtXHUwNUQ3XHUwNUQ5XHUwNUQyJ1x1MDVENCIsICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEaHUgYWwtSGlqamFoCisgICAgICAgICAgICB9IH0sCisgICAgICAgIHsgIkVyYXMiLCBuZXcgU3RyaW5nW10geworICAgICAgICAgICAgIlx1MDVFOVx1MDVFMFx1MDVFQSBcdTA1RDRcdTA1RDlcdTA1RDInXHUwNUU4XHUwNUQ0IgorICAgICAgICAgICAgfSB9LAorICAgIH07CisKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7CisgICAgICAgIHJldHVybiBmQ29udGVudHM7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSXNsYW1pY0NhbGVuZGFyU3ltYm9sc19ubC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9Jc2xhbWljQ2FsZW5kYXJTeW1ib2xzX25sLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZWI1ODhmZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSXNsYW1pY0NhbGVuZGFyU3ltYm9sc19ubC5qYXZhCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQXR0aWMvSXNsYW1pY0NhbGVuZGFyU3ltYm9sc19ubC5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzAyLzE2IDAzOjA1OjQ5ICQgCisgKiAkUmV2aXNpb246IDEuNCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuaW1wbC5kYXRhOworCitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKKworLyoqCisgKiBEdXRjaCBkYXRlIGZvcm1hdCBzeW1ib2xzIGZvciB0aGUgSXNsYW1pYyBDYWxlbmRhcgorICovCitwdWJsaWMgY2xhc3MgSXNsYW1pY0NhbGVuZGFyU3ltYm9sc19ubCBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgY29weXJpZ2h0ID0gIkNvcHlyaWdodCBcdTAwYTkgMTk5OCBJQk0gQ29ycC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4iOworCisgICAgc3RhdGljIGZpbmFsIE9iamVjdFtdW10gZkNvbnRlbnRzID0geworICAgICAgICB7ICJNb250aE5hbWVzIiwgbmV3IFN0cmluZ1tdIHsKKyAgICAgICAgICAgICJNb2VoYXJyYW0iLCAgICAgICAgICAgIC8vIE11aGFycmFtCisgICAgICAgICAgICAiU2FmYXIiLCAgICAgICAgICAgICAgICAvLyBTYWZhcgorICAgICAgICAgICAgIlJhYmknYSBhbCBhd2FsICIsICAgICAgLy8gUmFiaScgYWwtYXd3YWwKKyAgICAgICAgICAgICJSYWJpJ2EgYWwgdGhhbmkiLCAgICAgIC8vIFJhYmknIGFsLXRoYW5pCisgICAgICAgICAgICAiSm9lbWFkJ2FsIGF3YWwiLCAgICAgICAvLyBKdW1hZGEgYWwtYXd3YWwKKyAgICAgICAgICAgICJKb2VtYWQnYWwgdGhhbmkiLCAgICAgIC8vIEp1bWFkYSBhbC10aGFuaQorICAgICAgICAgICAgIlJhamFiIiwgICAgICAgICAgICAgICAgLy8gUmFqYWIKKyAgICAgICAgICAgICJTamEnYWJhbiIsICAgICAgICAgICAgIC8vIFNoYSdiYW4KKyAgICAgICAgICAgICJSYW1hZGFuIiwgICAgICAgICAgICAgIC8vIFJhbWFkYW4KKyAgICAgICAgICAgICJTamF3YWwiLCAgICAgICAgICAgICAgIC8vIFNoYXd3YWwKKyAgICAgICAgICAgICJEb2UgYWwga2EnYWJhIiwgICAgICAgIC8vIERodSBhbC1RaSdkYWgKKyAgICAgICAgICAgICJEb2UgYWwgaGl6amEiLCAgICAgICAgIC8vIERodSBhbC1IaWpqYWgKKyAgICAgICAgICAgIH0gfSwKKyAgICAgICAgeyAiRXJhcyIsIG5ldyBTdHJpbmdbXSB7CisgICAgICAgICAgICAiU2EnbmEgSGl6anJpYSIKKyAgICAgICAgICAgIH0gfSwKKyAgICB9OworCisgICAgcHVibGljIHN5bmNocm9uaXplZCBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeworICAgICAgICByZXR1cm4gZkNvbnRlbnRzOworICAgIH0KK307CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0phcGFuZXNlQ2FsZW5kYXJTeW1ib2xzLmphdmEgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0phcGFuZXNlQ2FsZW5kYXJTeW1ib2xzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZGI2NDhmMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSmFwYW5lc2VDYWxlbmRhclN5bWJvbHMuamF2YQpAQCAtMCwwICsxLDI4MiBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9BdHRpYy9KYXBhbmVzZUNhbGVuZGFyU3ltYm9scy5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzAyLzE2IDAzOjA1OjUwICQgCisgKiAkUmV2aXNpb246IDEuNCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuaW1wbC5kYXRhOworCitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKKworLyoqCisgKiBEZWZhdWx0IERhdGUgRm9ybWF0IHN5bWJvbHMgZm9yIHRoZSBKYXBhbmVzZSBDYWxlbmRhcgorICovCitwdWJsaWMgY2xhc3MgSmFwYW5lc2VDYWxlbmRhclN5bWJvbHMgZXh0ZW5kcyBMaXN0UmVzb3VyY2VCdW5kbGUgeworCisgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGNvcHlyaWdodCA9ICJDb3B5cmlnaHQgXHUwMGE5IDE5OTggSUJNIENvcnAuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuIjsKKworICAgIHN0YXRpYyBmaW5hbCBPYmplY3RbXVtdIGZDb250ZW50cyA9IHsKKyAgICAgICAgeyAiRGF0ZVRpbWVQYXR0ZXJucyIsCisgICAgICAgICAgICBuZXcgU3RyaW5nW10geworICAgICAgICAgICAgICAgICJoOm1tOnNzIGEgeiIsIC8vIGZ1bGwgdGltZSBwYXR0ZXJuCisgICAgICAgICAgICAgICAgImg6bW06c3MgYSB6IiwgLy8gbG9uZyB0aW1lIHBhdHRlcm4KKyAgICAgICAgICAgICAgICAiaDptbTpzcyBhIiwgLy8gbWVkaXVtIHRpbWUgcGF0dGVybgorICAgICAgICAgICAgICAgICJoOm1tIGEiLCAvLyBzaG9ydCB0aW1lIHBhdHRlcm4KKyAgICAgICAgICAgICAgICAiRUVFRSwgTU1NTSBkLCB5eSBHIiwgLy8gZnVsbCBkYXRlIHBhdHRlcm4KKyAgICAgICAgICAgICAgICAiTU1NTSBkLCB5eSBHIiwgLy8gbG9uZyBkYXRlIHBhdHRlcm4KKyAgICAgICAgICAgICAgICAiTU1NIGQsIHl5IEciLCAvLyBtZWRpdW0gZGF0ZSBwYXR0ZXJuCisgICAgICAgICAgICAgICAgIk0vZC95eSIsIC8vIHNob3J0IGRhdGUgcGF0dGVybgorICAgICAgICAgICAgICAgICJ7MX0gezB9IiAvLyBkYXRlLXRpbWUgcGF0dGVybgorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICB7ICJFcmFzIiwgbmV3IFN0cmluZ1tdIHsKKyAgICAgICAgICAgIC8vIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgR3JlZ29yaWFuIFllYXIKKyAgICAgICAgICAgICJUYWlrYSIsICAgICAgICAgICAgICAgICAgICAgICAgLy8gIDY0NQorICAgICAgICAgICAgIkhha3VjaGkiLCAgICAgICAgICAgICAgICAgICAgICAvLyAgNjUwCisgICAgICAgICAgICAiSGFrdWhcdTAxNEQiLCAgICAgICAgICAgICAgICAgIC8vICA2NzIKKyAgICAgICAgICAgICJTaHVjaFx1MDE0RCIsICAgICAgICAgICAgICAgICAgLy8gIDY4NgorICAgICAgICAgICAgIlRhaWhcdTAxNEQiLCAgICAgICAgICAgICAgICAgICAvLyAgNzAxCisgICAgICAgICAgICAiS2VpdW4iLCAgICAgICAgICAgICAgICAgICAgICAgIC8vICA3MDQKKyAgICAgICAgICAgICJXYWRcdTAxNEQiLCAgICAgICAgICAgICAgICAgICAgLy8gIDcwOAorICAgICAgICAgICAgIlJlaWtpIiwgICAgICAgICAgICAgICAgICAgICAgICAvLyAgNzE1CisgICAgICAgICAgICAiWVx1MDE0RHJcdTAxNEQiLCAgICAgICAgICAgICAgIC8vICA3MTcKKyAgICAgICAgICAgICJKaW5raSIsICAgICAgICAgICAgICAgICAgICAgICAgLy8gIDcyNAorICAgICAgICAgICAgIlRlbXB5XHUwMTREIiwgICAgICAgICAgICAgICAgICAvLyAgNzI5CisgICAgICAgICAgICAiVGVtcHlcdTAxNEQta2FtcFx1MDE0RCIsICAgICAgIC8vICA3NDkKKyAgICAgICAgICAgICJUZW1weVx1MDE0RC1zaFx1MDE0RGhcdTAxNEQiLCAgLy8gIDc0OQorICAgICAgICAgICAgIlRlbXB5XHUwMTRELWhcdTAxNERqaSIsICAgICAgICAvLyAgNzU3CisgICAgICAgICAgICAiVGVtcGhcdTAxNEQtamluZ28iLCAgICAgICAgICAgIC8vICA3NjUKKyAgICAgICAgICAgICJKaW5nby1rZWl1biIsICAgICAgICAgICAgICAgICAgLy8gIDc2NworICAgICAgICAgICAgIkhcdTAxNERraSIsICAgICAgICAgICAgICAgICAgICAvLyAgNzcwCisgICAgICAgICAgICAiVGVuLVx1MDE0RCIsICAgICAgICAgICAgICAgICAgIC8vICA3ODEKKyAgICAgICAgICAgICJFbnJ5YWt1IiwgICAgICAgICAgICAgICAgICAgICAgLy8gIDc4MgorICAgICAgICAgICAgIkRhaWRcdTAxNEQiLCAgICAgICAgICAgICAgICAgICAvLyAgODA2CisgICAgICAgICAgICAiS1x1MDE0RG5pbiIsICAgICAgICAgICAgICAgICAgIC8vICA4MTAKKyAgICAgICAgICAgICJUZW5jaFx1MDE0RCIsICAgICAgICAgICAgICAgICAgLy8gIDgyNAorICAgICAgICAgICAgIlNoXHUwMTREd2EiLCAgICAgICAgICAgICAgICAgICAvLyAgODM0CisgICAgICAgICAgICAiS2FqXHUwMTREIiwgICAgICAgICAgICAgICAgICAgIC8vICA4NDgKKyAgICAgICAgICAgICJOaW5qdSIsICAgICAgICAgICAgICAgICAgICAgICAgLy8gIDg1MQorICAgICAgICAgICAgIlNhaWtvIiwgICAgICAgICAgICAgICAgICAgICAgICAvLyAgODU0CisgICAgICAgICAgICAiVGVubmFuIiwgICAgICAgICAgICAgICAgICAgICAgIC8vICA4NTcKKyAgICAgICAgICAgICJKXHUwMTREZ2FuIiwgICAgICAgICAgICAgICAgICAgLy8gIDg1OQorICAgICAgICAgICAgIkdlbmtlaSIsICAgICAgICAgICAgICAgICAgICAgICAvLyAgODc3CisgICAgICAgICAgICAiTmlubmEiLCAgICAgICAgICAgICAgICAgICAgICAgIC8vICA4ODUKKyAgICAgICAgICAgICJLYW1weVx1MDE0RCIsICAgICAgICAgICAgICAgICAgLy8gIDg4OQorICAgICAgICAgICAgIlNoXHUwMTREdGFpIiwgICAgICAgICAgICAgICAgICAvLyAgODk4CisgICAgICAgICAgICAiRW5naSIsICAgICAgICAgICAgICAgICAgICAgICAgIC8vICA5MDEKKyAgICAgICAgICAgICJFbmNoXHUwMTREIiwgICAgICAgICAgICAgICAgICAgLy8gIDkyMworICAgICAgICAgICAgIlNoXHUwMTREaGVpIiwgICAgICAgICAgICAgICAgICAvLyAgOTMxCisgICAgICAgICAgICAiVGVuZ3lcdTAxNEQiLCAgICAgICAgICAgICAgICAgIC8vICA5MzgKKyAgICAgICAgICAgICJUZW5yeWFrdSIsICAgICAgICAgICAgICAgICAgICAgLy8gIDk0NworICAgICAgICAgICAgIlRlbnRva3UiLCAgICAgICAgICAgICAgICAgICAgICAvLyAgOTU3CisgICAgICAgICAgICAiXHUwMTRDd2EiLCAgICAgICAgICAgICAgICAgICAgIC8vICA5NjEKKyAgICAgICAgICAgICJLXHUwMTREaFx1MDE0RCIsICAgICAgICAgICAgICAgLy8gIDk2NAorICAgICAgICAgICAgIkFubmEiLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgOTY4CisgICAgICAgICAgICAiVGVucm9rdSIsICAgICAgICAgICAgICAgICAgICAgIC8vICA5NzAKKyAgICAgICAgICAgICJUZW4tZW4iLCAgICAgICAgICAgICAgICAgICAgICAgLy8gIDk3MworICAgICAgICAgICAgIkpcdTAxNERnZW4iLCAgICAgICAgICAgICAgICAgICAvLyAgOTc2CisgICAgICAgICAgICAiVGVuZ2VuIiwgICAgICAgICAgICAgICAgICAgICAgIC8vICA5NzgKKyAgICAgICAgICAgICJFaWthbiIsICAgICAgICAgICAgICAgICAgICAgICAgLy8gIDk4MworICAgICAgICAgICAgIkthbm5hIiwgICAgICAgICAgICAgICAgICAgICAgICAvLyAgOTg1CisgICAgICAgICAgICAiRWktZW4iLCAgICAgICAgICAgICAgICAgICAgICAgIC8vICA5ODcKKyAgICAgICAgICAgICJFaXNvIiwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIDk4OQorICAgICAgICAgICAgIlNoXHUwMTREcnlha3UiLCAgICAgICAgICAgICAgICAvLyAgOTkwCisgICAgICAgICAgICAiQ2hcdTAxNER0b2t1IiwgICAgICAgICAgICAgICAgIC8vICA5OTUKKyAgICAgICAgICAgICJDaFx1MDE0RGhcdTAxNEQiLCAgICAgICAgICAgICAgLy8gIDk5OQorICAgICAgICAgICAgIkthbmtcdTAxNEQiLCAgICAgICAgICAgICAgICAgICAvLyAxMDA0CisgICAgICAgICAgICAiQ2hcdTAxNER3YSIsICAgICAgICAgICAgICAgICAgIC8vIDEwMTIKKyAgICAgICAgICAgICJLYW5uaW4iLCAgICAgICAgICAgICAgICAgICAgICAgLy8gMTAxNworICAgICAgICAgICAgIkppYW4iLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxMDIxCisgICAgICAgICAgICAiTWFuanUiLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIDEwMjQKKyAgICAgICAgICAgICJDaFx1MDE0RGdlbiIsICAgICAgICAgICAgICAgICAgLy8gMTAyOAorICAgICAgICAgICAgIkNoXHUwMTREcnlha3UiLCAgICAgICAgICAgICAgICAvLyAxMDM3CisgICAgICAgICAgICAiQ2hcdTAxNERreVx1MDE2QiIsICAgICAgICAgICAgIC8vIDEwNDAKKyAgICAgICAgICAgICJLYW50b2t1IiwgICAgICAgICAgICAgICAgICAgICAgLy8gMTA0NAorICAgICAgICAgICAgIkVpc2hcdTAxNEQiLCAgICAgICAgICAgICAgICAgICAvLyAxMDQ2CisgICAgICAgICAgICAiVGVuZ2kiLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIDEwNTMKKyAgICAgICAgICAgICJLXHUwMTREaGVpIiwgICAgICAgICAgICAgICAgICAgLy8gMTA1OAorICAgICAgICAgICAgIkppcnlha3UiLCAgICAgICAgICAgICAgICAgICAgICAvLyAxMDY1CisgICAgICAgICAgICAiRW5reVx1MDE2QiIsICAgICAgICAgICAgICAgICAgIC8vIDEwNjkKKyAgICAgICAgICAgICJTaFx1MDE0RGhvIiwgICAgICAgICAgICAgICAgICAgLy8gMTA3NAorICAgICAgICAgICAgIlNoXHUwMTREcnlha3UiLCAgICAgICAgICAgICAgICAvLyAxMDc3CisgICAgICAgICAgICAiRWlobyIsICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDEwODEKKyAgICAgICAgICAgICJcdTAxNEN0b2t1IiwgICAgICAgICAgICAgICAgICAgLy8gMTA4NAorICAgICAgICAgICAgIkthbmppIiwgICAgICAgICAgICAgICAgICAgICAgICAvLyAxMDg3CisgICAgICAgICAgICAiS2FobyIsICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDEwOTQKKyAgICAgICAgICAgICJFaWNoXHUwMTREIiwgICAgICAgICAgICAgICAgICAgLy8gMTA5NgorICAgICAgICAgICAgIlNoXHUwMTREdG9rdSIsICAgICAgICAgICAgICAgICAvLyAxMDk3CisgICAgICAgICAgICAiS1x1MDE0RHdhIiwgICAgICAgICAgICAgICAgICAgIC8vIDEwOTkKKyAgICAgICAgICAgICJDaFx1MDE0RGppIiwgICAgICAgICAgICAgICAgICAgLy8gMTEwNAorICAgICAgICAgICAgIkthc2hcdTAxNEQiLCAgICAgICAgICAgICAgICAgICAvLyAxMTA2CisgICAgICAgICAgICAiVGVubmluIiwgICAgICAgICAgICAgICAgICAgICAgIC8vIDExMDgKKyAgICAgICAgICAgICJUZW4tZWkiLCAgICAgICAgICAgICAgICAgICAgICAgLy8gMTExMAorICAgICAgICAgICAgIkVpa3lcdTAxNkIiLCAgICAgICAgICAgICAgICAgICAvLyAxMTEzCisgICAgICAgICAgICAiR2VuLWVpIiwgICAgICAgICAgICAgICAgICAgICAgIC8vIDExMTgKKyAgICAgICAgICAgICJIb2FuIiwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMTEyMAorICAgICAgICAgICAgIlRlbmppIiwgICAgICAgICAgICAgICAgICAgICAgICAvLyAxMTI0CisgICAgICAgICAgICAiRGFpamkiLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIDExMjYKKyAgICAgICAgICAgICJUZW5zaFx1MDE0RCIsICAgICAgICAgICAgICAgICAgLy8gMTEzMQorICAgICAgICAgICAgIkNoXHUwMTREc2hcdTAxNEQiLCAgICAgICAgICAgICAvLyAxMTMyCisgICAgICAgICAgICAiSG9lbiIsICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDExMzUKKyAgICAgICAgICAgICJFaWppIiwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMTE0MQorICAgICAgICAgICAgIktcdTAxNERqaSIsICAgICAgICAgICAgICAgICAgICAvLyAxMTQyCisgICAgICAgICAgICAiVGVueVx1MDE0RCIsICAgICAgICAgICAgICAgICAgIC8vIDExNDQKKyAgICAgICAgICAgICJLeVx1MDE2QmFuIiwgICAgICAgICAgICAgICAgICAgLy8gMTE0NQorICAgICAgICAgICAgIk5pbnBlaSIsICAgICAgICAgICAgICAgICAgICAgICAvLyAxMTUxCisgICAgICAgICAgICAiS3lcdTAxNkJqdSIsICAgICAgICAgICAgICAgICAgIC8vIDExNTQKKyAgICAgICAgICAgICJIb2dlbiIsICAgICAgICAgICAgICAgICAgICAgICAgLy8gMTE1NgorICAgICAgICAgICAgIkhlaWppIiwgICAgICAgICAgICAgICAgICAgICAgICAvLyAxMTU5CisgICAgICAgICAgICAiRWlyeWFrdSIsICAgICAgICAgICAgICAgICAgICAgIC8vIDExNjAKKyAgICAgICAgICAgICJcdTAxNENobyIsICAgICAgICAgICAgICAgICAgICAgLy8gMTE2MQorICAgICAgICAgICAgIkNoXHUwMTREa2FuIiwgICAgICAgICAgICAgICAgICAvLyAxMTYzCisgICAgICAgICAgICAiRWltYW4iLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIDExNjUKKyAgICAgICAgICAgICJOaW4tYW4iLCAgICAgICAgICAgICAgICAgICAgICAgLy8gMTE2NgorICAgICAgICAgICAgIkthXHUwMTREIiwgICAgICAgICAgICAgICAgICAgICAvLyAxMTY5CisgICAgICAgICAgICAiU2hcdTAxNERhbiIsICAgICAgICAgICAgICAgICAgIC8vIDExNzEKKyAgICAgICAgICAgICJBbmdlbiIsICAgICAgICAgICAgICAgICAgICAgICAgLy8gMTE3NQorICAgICAgICAgICAgIkppc2hcdTAxNEQiLCAgICAgICAgICAgICAgICAgICAvLyAxMTc3CisgICAgICAgICAgICAiWVx1MDE0RHdhIiwgICAgICAgICAgICAgICAgICAgIC8vIDExODEKKyAgICAgICAgICAgICJKdWVpIiwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMTE4MgorICAgICAgICAgICAgIkdlbnJ5dWt1IiwgICAgICAgICAgICAgICAgICAgICAvLyAxMTg0CisgICAgICAgICAgICAiQnVuamkiLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIDExODUKKyAgICAgICAgICAgICJLZW5reVx1MDE2QiIsICAgICAgICAgICAgICAgICAgLy8gMTE5MAorICAgICAgICAgICAgIlNoXHUwMTREamkiLCAgICAgICAgICAgICAgICAgICAvLyAxMTk5CisgICAgICAgICAgICAiS2VubmluIiwgICAgICAgICAgICAgICAgICAgICAgIC8vIDEyMDEKKyAgICAgICAgICAgICJHZW5reVx1MDE2QiIsICAgICAgICAgICAgICAgICAgLy8gMTIwNAorICAgICAgICAgICAgIktlbi1laSIsICAgICAgICAgICAgICAgICAgICAgICAvLyAxMjA2CisgICAgICAgICAgICAiU2hcdTAxNERnZW4iLCAgICAgICAgICAgICAgICAgIC8vIDEyMDcKKyAgICAgICAgICAgICJLZW5yeWFrdSIsICAgICAgICAgICAgICAgICAgICAgLy8gMTIxMQorICAgICAgICAgICAgIktlbnBcdTAxNEQiLCAgICAgICAgICAgICAgICAgICAvLyAxMjEzCisgICAgICAgICAgICAiU2hcdTAxNERreVx1MDE2QiIsICAgICAgICAgICAgIC8vIDEyMTkKKyAgICAgICAgICAgICJKXHUwMTREXHUwMTREIiwgICAgICAgICAgICAgICAgLy8gMTIyMgorICAgICAgICAgICAgIkdlbm5pbiIsICAgICAgICAgICAgICAgICAgICAgICAvLyAxMjI0CisgICAgICAgICAgICAiS2Fyb2t1IiwgICAgICAgICAgICAgICAgICAgICAgIC8vIDEyMjUKKyAgICAgICAgICAgICJBbnRlaSIsICAgICAgICAgICAgICAgICAgICAgICAgLy8gMTIyNworICAgICAgICAgICAgIkthbmtpIiwgICAgICAgICAgICAgICAgICAgICAgICAvLyAxMjI5CisgICAgICAgICAgICAiSlx1MDE0RGVpIiwgICAgICAgICAgICAgICAgICAgIC8vIDEyMzIKKyAgICAgICAgICAgICJUZW1wdWt1IiwgICAgICAgICAgICAgICAgICAgICAgLy8gMTIzMworICAgICAgICAgICAgIkJ1bnJ5YWt1IiwgICAgICAgICAgICAgICAgICAgICAvLyAxMjM0CisgICAgICAgICAgICAiS2F0ZWkiLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIDEyMzUKKyAgICAgICAgICAgICJSeWFrdW5pbiIsICAgICAgICAgICAgICAgICAgICAgLy8gMTIzOAorICAgICAgICAgICAgIkVuLVx1MDE0RCIsICAgICAgICAgICAgICAgICAgICAvLyAxMjM5CisgICAgICAgICAgICAiTmluamkiLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIDEyNDAKKyAgICAgICAgICAgICJLYW5nZW4iLCAgICAgICAgICAgICAgICAgICAgICAgLy8gMTI0MworICAgICAgICAgICAgIkhcdTAxNERqaSIsICAgICAgICAgICAgICAgICAgICAvLyAxMjQ3CisgICAgICAgICAgICAiS2VuY2hcdTAxNEQiLCAgICAgICAgICAgICAgICAgIC8vIDEyNDkKKyAgICAgICAgICAgICJLXHUwMTREZ2VuIiwgICAgICAgICAgICAgICAgICAgLy8gMTI1NgorICAgICAgICAgICAgIlNoXHUwMTREa2EiLCAgICAgICAgICAgICAgICAgICAvLyAxMjU3CisgICAgICAgICAgICAiU2hcdTAxNERnZW4iLCAgICAgICAgICAgICAgICAgIC8vIDEyNTkKKyAgICAgICAgICAgICJCdW4tXHUwMTREIiwgICAgICAgICAgICAgICAgICAgLy8gMTI2MAorICAgICAgICAgICAgIktcdTAxNERjaFx1MDE0RCIsICAgICAgICAgICAgICAvLyAxMjYxCisgICAgICAgICAgICAiQnVuLWVpIiwgICAgICAgICAgICAgICAgICAgICAgIC8vIDEyNjQKKyAgICAgICAgICAgICJLZW5qaSIsICAgICAgICAgICAgICAgICAgICAgICAgLy8gMTI3NQorICAgICAgICAgICAgIktcdTAxNERhbiIsICAgICAgICAgICAgICAgICAgICAvLyAxMjc4CisgICAgICAgICAgICAiU2hcdTAxNERcdTAxNEQiLCAgICAgICAgICAgICAgIC8vIDEyODgKKyAgICAgICAgICAgICJFaW5pbiIsICAgICAgICAgICAgICAgICAgICAgICAgLy8gMTI5MworICAgICAgICAgICAgIlNoXHUwMTREYW4iLCAgICAgICAgICAgICAgICAgICAvLyAxMjk5CisgICAgICAgICAgICAiS2VuZ2VuIiwgICAgICAgICAgICAgICAgICAgICAgIC8vIDEzMDIKKyAgICAgICAgICAgICJLYWdlbiIsICAgICAgICAgICAgICAgICAgICAgICAgLy8gMTMwMworICAgICAgICAgICAgIlRva3VqaSIsICAgICAgICAgICAgICAgICAgICAgICAvLyAxMzA2CisgICAgICAgICAgICAiRW5rZWkiLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIDEzMDgKKyAgICAgICAgICAgICJcdTAxNENjaFx1MDE0RCIsICAgICAgICAgICAgICAgLy8gMTMxMQorICAgICAgICAgICAgIlNoXHUwMTREd2EiLCAgICAgICAgICAgICAgICAgICAvLyAxMzEyCisgICAgICAgICAgICAiQnVucFx1MDE0RCIsICAgICAgICAgICAgICAgICAgIC8vIDEzMTcKKyAgICAgICAgICAgICJHZW5cdTAxNEQiLCAgICAgICAgICAgICAgICAgICAgLy8gMTMxOQorICAgICAgICAgICAgIkdlbmt5XHUwMTREIiwgICAgICAgICAgICAgICAgICAvLyAxMzIxCisgICAgICAgICAgICAiU2hcdTAxNERjaFx1MDE2QiIsICAgICAgICAgICAgIC8vIDEzMjQKKyAgICAgICAgICAgICJLYXJla2kiLCAgICAgICAgICAgICAgICAgICAgICAgLy8gMTMyNgorICAgICAgICAgICAgIkdlbnRva3UiLCAgICAgICAgICAgICAgICAgICAgICAvLyAxMzI5CisgICAgICAgICAgICAiR2Vua1x1MDE0RCIsICAgICAgICAgICAgICAgICAgIC8vIDEzMzEKKyAgICAgICAgICAgICJLZW1tdSIsICAgICAgICAgICAgICAgICAgICAgICAgLy8gMTMzNAorICAgICAgICAgICAgIkVuZ2VuIiwgICAgICAgICAgICAgICAgICAgICAgICAvLyAxMzM2CisgICAgICAgICAgICAiS1x1MDE0RGtva3UiLCAgICAgICAgICAgICAgICAgIC8vIDEzNDAKKyAgICAgICAgICAgICJTaFx1MDE0RGhlaSIsICAgICAgICAgICAgICAgICAgLy8gMTM0NgorICAgICAgICAgICAgIktlbnRva3UiLCAgICAgICAgICAgICAgICAgICAgICAvLyAxMzcwCisgICAgICAgICAgICAiQnVuY2hcdTAxNjkiLCAgICAgICAgICAgICAgICAgIC8vIDEzNzIKKyAgICAgICAgICAgICJUZW5qdSIsICAgICAgICAgICAgICAgICAgICAgICAgLy8gMTM3NQorICAgICAgICAgICAgIktcdTAxNER3YSIsICAgICAgICAgICAgICAgICAgICAvLyAxMzgxCisgICAgICAgICAgICAiR2VuY2hcdTAxNjkiLCAgICAgICAgICAgICAgICAgIC8vIDEzODQKKyAgICAgICAgICAgICJNZWl0b2t1IiwgICAgICAgICAgICAgICAgICAgICAgLy8gMTM4NAorICAgICAgICAgICAgIktcdTAxNERyeWFrdSIsICAgICAgICAgICAgICAgICAvLyAxMzc5CisgICAgICAgICAgICAiS2FrZWkiLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIDEzODcKKyAgICAgICAgICAgICJLXHUwMTREXHUwMTREIiwgICAgICAgICAgICAgICAgLy8gMTM4OQorICAgICAgICAgICAgIk1laXRva3UiLCAgICAgICAgICAgICAgICAgICAgICAvLyAxMzkwCisgICAgICAgICAgICAiXHUwMTRDZWkiLCAgICAgICAgICAgICAgICAgICAgIC8vIDEzOTQKKyAgICAgICAgICAgICJTaFx1MDE0RGNoXHUwMTREIiwgICAgICAgICAgICAgLy8gMTQyOAorICAgICAgICAgICAgIkVpa3lcdTAxNEQiLCAgICAgICAgICAgICAgICAgICAvLyAxNDI5CisgICAgICAgICAgICAiS2FraXRzdSIsICAgICAgICAgICAgICAgICAgICAgIC8vIDE0NDEKKyAgICAgICAgICAgICJCdW4tYW4iLCAgICAgICAgICAgICAgICAgICAgICAgLy8gMTQ0NAorICAgICAgICAgICAgIkhcdTAxNER0b2t1IiwgICAgICAgICAgICAgICAgICAvLyAxNDQ5CisgICAgICAgICAgICAiS3lcdTAxNER0b2t1IiwgICAgICAgICAgICAgICAgIC8vIDE0NTIKKyAgICAgICAgICAgICJLXHUwMTREc2hcdTAxNEQiLCAgICAgICAgICAgICAgLy8gMTQ1NQorICAgICAgICAgICAgIkNoXHUwMTREcm9rdSIsICAgICAgICAgICAgICAgICAvLyAxNDU3CisgICAgICAgICAgICAiS2Fuc2hcdTAxNEQiLCAgICAgICAgICAgICAgICAgIC8vIDE0NjAKKyAgICAgICAgICAgICJCdW5zaFx1MDE0RCIsICAgICAgICAgICAgICAgICAgLy8gMTQ2NgorICAgICAgICAgICAgIlx1MDE0Q25pbiIsICAgICAgICAgICAgICAgICAgICAvLyAxNDY3CisgICAgICAgICAgICAiQnVubWVpIiwgICAgICAgICAgICAgICAgICAgICAgIC8vIDE0NjkKKyAgICAgICAgICAgICJDaFx1MDE0RGt5XHUwMTREIiwgICAgICAgICAgICAgLy8gMTQ4NworICAgICAgICAgICAgIkVudG9rdSIsICAgICAgICAgICAgICAgICAgICAgICAvLyAxNDg5CisgICAgICAgICAgICAiTWVpXHUwMTREIiwgICAgICAgICAgICAgICAgICAgIC8vIDE0OTIKKyAgICAgICAgICAgICJCdW5raSIsICAgICAgICAgICAgICAgICAgICAgICAgLy8gMTUwMQorICAgICAgICAgICAgIkVpc2hcdTAxNEQiLCAgICAgICAgICAgICAgICAgICAvLyAxNTA0CisgICAgICAgICAgICAiVGFpZWkiLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIDE1MjEKKyAgICAgICAgICAgICJLeVx1MDE0RHJva3UiLCAgICAgICAgICAgICAgICAgLy8gMTUyOAorICAgICAgICAgICAgIlRlbm1vbiIsICAgICAgICAgICAgICAgICAgICAgICAvLyAxNTMyCisgICAgICAgICAgICAiS1x1MDE0RGppIiwgICAgICAgICAgICAgICAgICAgIC8vIDE1NTUKKyAgICAgICAgICAgICJFaXJva3UiLCAgICAgICAgICAgICAgICAgICAgICAgLy8gMTU1OAorICAgICAgICAgICAgIkdlbmtpIiwgICAgICAgICAgICAgICAgICAgICAgICAvLyAxNTcwCisgICAgICAgICAgICAiVGVuc2hcdTAxNEQiLCAgICAgICAgICAgICAgICAgIC8vIDE1NzMKKyAgICAgICAgICAgICJCdW5yb2t1IiwgICAgICAgICAgICAgICAgICAgICAgLy8gMTU5MgorICAgICAgICAgICAgIktlaWNoXHUwMTREIiwgICAgICAgICAgICAgICAgICAvLyAxNTk2CisgICAgICAgICAgICAiR2Vud2EiLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIDE2MTUKKyAgICAgICAgICAgICJLYW4tZWkiLCAgICAgICAgICAgICAgICAgICAgICAgLy8gMTYyNAorICAgICAgICAgICAgIlNoXHUwMTREaG8iLCAgICAgICAgICAgICAgICAgICAvLyAxNjQ0CisgICAgICAgICAgICAiS2VpYW4iLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIDE2NDgKKyAgICAgICAgICAgICJTaFx1MDE0RFx1MDE0RCIsICAgICAgICAgICAgICAgLy8gMTY1MgorICAgICAgICAgICAgIk1laXJ5YWt1IiwgICAgICAgICAgICAgICAgICAgICAvLyAxNjU1CisgICAgICAgICAgICAiTWFuamkiLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIDE2NTgKKyAgICAgICAgICAgICJLYW5idW4iLCAgICAgICAgICAgICAgICAgICAgICAgLy8gMTY2MQorICAgICAgICAgICAgIkVucFx1MDE0RCIsICAgICAgICAgICAgICAgICAgICAvLyAxNjczCisgICAgICAgICAgICAiVGVud2EiLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIDE2ODEKKyAgICAgICAgICAgICJKXHUwMTREa3lcdTAxNEQiLCAgICAgICAgICAgICAgLy8gMTY4NAorICAgICAgICAgICAgIkdlbnJva3UiLCAgICAgICAgICAgICAgICAgICAgICAvLyAxNjg4CisgICAgICAgICAgICAiSFx1MDE0RGVpIiwgICAgICAgICAgICAgICAgICAgIC8vIDE3MDQKKyAgICAgICAgICAgICJTaFx1MDE0RHRva3UiLCAgICAgICAgICAgICAgICAgLy8gMTcxMQorICAgICAgICAgICAgIkt5XHUwMTREaFx1MDE0RCIsICAgICAgICAgICAgICAvLyAxNzE2CisgICAgICAgICAgICAiR2VuYnVuIiwgICAgICAgICAgICAgICAgICAgICAgIC8vIDE3MzYKKyAgICAgICAgICAgICJLYW5wXHUwMTREIiwgICAgICAgICAgICAgICAgICAgLy8gMTc0MQorICAgICAgICAgICAgIkVua3lcdTAxNEQiLCAgICAgICAgICAgICAgICAgICAvLyAxNzQ0CisgICAgICAgICAgICAiS2FuLWVuIiwgICAgICAgICAgICAgICAgICAgICAgIC8vIDE3NDgKKyAgICAgICAgICAgICJIXHUwMTREcnlha3UiLCAgICAgICAgICAgICAgICAgLy8gMTc1MQorICAgICAgICAgICAgIk1laXdhIiwgICAgICAgICAgICAgICAgICAgICAgICAvLyAxNzY0CisgICAgICAgICAgICAiQW4tZWkiLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIDE3NzIKKyAgICAgICAgICAgICJUZW5tZWkiLCAgICAgICAgICAgICAgICAgICAgICAgLy8gMTc4MQorICAgICAgICAgICAgIkthbnNlaSIsICAgICAgICAgICAgICAgICAgICAgICAvLyAxNzg5CisgICAgICAgICAgICAiS3lcdTAxNER3YSIsICAgICAgICAgICAgICAgICAgIC8vIDE4MDEKKyAgICAgICAgICAgICJCdW5rYSIsICAgICAgICAgICAgICAgICAgICAgICAgLy8gMTgwNAorICAgICAgICAgICAgIkJ1bnNlaSIsICAgICAgICAgICAgICAgICAgICAgICAvLyAxODE4CisgICAgICAgICAgICAiVGVucFx1MDE0RCIsICAgICAgICAgICAgICAgICAgIC8vIDE4MzAKKyAgICAgICAgICAgICJLXHUwMTREa2EiLCAgICAgICAgICAgICAgICAgICAgLy8gMTg0NAorICAgICAgICAgICAgIkthZWkiLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxODQ4CisgICAgICAgICAgICAiQW5zZWkiLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIDE4NTQKKyAgICAgICAgICAgICJNYW4tZW4iLCAgICAgICAgICAgICAgICAgICAgICAgLy8gMTg2MAorICAgICAgICAgICAgIkJ1bmt5XHUwMTZCIiwgICAgICAgICAgICAgICAgICAvLyAxODYxCisgICAgICAgICAgICAiR2VuamkiLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIDE4NjQKKyAgICAgICAgICAgICJLZWlcdTAxNEQiLCAgICAgICAgICAgICAgICAgICAgLy8gMTg2NQorICAgICAgICAgICAgIk1laWppIiwgICAgICAgICAgICAgICAgICAgICAgICAvLyAxODY4CisgICAgICAgICAgICAiVGFpc2hcdTAxNEQiLCAgICAgICAgICAgICAgICAgIC8vIDE5MTIKKyAgICAgICAgICAgICJTaFx1MDE0RHdhIiwgICAgICAgICAgICAgICAgICAgLy8gMTkyNgorICAgICAgICAgICAgIkhlaXNlaSIsICAgICAgICAgICAgICAgICAgICAgICAvLyAxOTg5CisgICAgICAgIH0gfSwKKyAgICB9OworCisgICAgcHVibGljIHN5bmNocm9uaXplZCBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeworICAgICAgICByZXR1cm4gZkNvbnRlbnRzOworICAgIH0KK307CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0phcGFuZXNlQ2FsZW5kYXJTeW1ib2xzX2phLmphdmEgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0phcGFuZXNlQ2FsZW5kYXJTeW1ib2xzX2phLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNTE5NjgyOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvSmFwYW5lc2VDYWxlbmRhclN5bWJvbHNfamEuamF2YQpAQCAtMCwwICsxLDI4MSBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9BdHRpYy9KYXBhbmVzZUNhbGVuZGFyU3ltYm9sc19qYS5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzAyLzE2IDAzOjA1OjUwICQgCisgKiAkUmV2aXNpb246IDEuNCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UuaW1wbC5kYXRhOworCitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKKworLyoqCisgKiBKYXBhbmVzZSBLYW5qaSB2ZXJzaW9uIG9mIHRoZSBEYXRlIEZvcm1hdCBzeW1ib2xzIGZvciB0aGUgSmFwYW5lc2UgY2FsZW5kYXIKKyAqLworcHVibGljIGNsYXNzIEphcGFuZXNlQ2FsZW5kYXJTeW1ib2xzX2phIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKworICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBjb3B5cmlnaHQgPSAiQ29weXJpZ2h0IFx1MDBhOSAxOTk4IElCTSBDb3JwLiBBbGwgUmlnaHRzIFJlc2VydmVkLiI7CisKKyAgICBzdGF0aWMgZmluYWwgT2JqZWN0W11bXSBmQ29udGVudHMgPSB7CisgICAgICAgIHsgIkRhdGVUaW1lUGF0dGVybnMiLAorICAgICAgICAgICAgbmV3IFN0cmluZ1tdIHsKKyAgICAgICAgICAgICAgICAiSCdcdTY2NDInbW0nXHU1MjA2J3NzJ1x1NzlkMid6IiwgLy8gZnVsbCB0aW1lIHBhdHRlcm4KKyAgICAgICAgICAgICAgICAiSDptbTpzczp6IiwgLy8gbG9uZyB0aW1lIHBhdHRlcm4KKyAgICAgICAgICAgICAgICAiSDptbTpzcyIsIC8vIG1lZGl1bSB0aW1lIHBhdHRlcm4KKyAgICAgICAgICAgICAgICAiSDptbSIsIC8vIHNob3J0IHRpbWUgcGF0dGVybgorICAgICAgICAgICAgICAgICJHIHl5J1x1NWU3NCdNJ1x1NjcwOCdkJ1x1NjVlNSciLCAvLyBmdWxsIGRhdGUgcGF0dGVybgorICAgICAgICAgICAgICAgICJHIHl5L01NL2RkIiwgLy8gbG9uZyBkYXRlIHBhdHRlcm4KKyAgICAgICAgICAgICAgICAiRyB5eS9NTS9kZCIsIC8vIG1lZGl1bSBkYXRlIHBhdHRlcm4KKyAgICAgICAgICAgICAgICAiRyB5eS9NTS9kZCIsIC8vIHNob3J0IGRhdGUgcGF0dGVybgorICAgICAgICAgICAgICAgICJ7MX0gezB9IiAvLyBkYXRlLXRpbWUgcGF0dGVybgorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICB7ICJFcmFzIiwgbmV3IFN0cmluZ1tdIHsKKyAgICAgICAgICAgICJcdTU5MjdcdTUzMTYiLCAgICAgICAgICAgICAvLyAgNjQ1IFRhaWthCisgICAgICAgICAgICAiXHU3NjdEXHU5NkM5IiwgICAgICAgICAgICAgLy8gIDY1MCBIYWt1Y2hpCisgICAgICAgICAgICAiXHU3NjdEXHU5Q0VGIiwgICAgICAgICAgICAgLy8gIDY3MiBIYWt1aG8KKyAgICAgICAgICAgICJcdTY3MzFcdTlDRTUiLCAgICAgICAgICAgICAvLyAgNjg2IFNodWNobworICAgICAgICAgICAgIlx1NTkyN1x1NUI5RCIsICAgICAgICAgICAgIC8vICA3MDEgVGFpaG8KKyAgICAgICAgICAgICJcdTYxNzZcdTk2RjIiLCAgICAgICAgICAgICAvLyAgNzA0IEtlaXVuCisgICAgICAgICAgICAiXHU1NDhDXHU5Mjg1IiwgICAgICAgICAgICAgLy8gIDcwOCBXYWRvCisgICAgICAgICAgICAiXHU5NzBBXHU0RTgwIiwgICAgICAgICAgICAgLy8gIDcxNSBSZWlraQorICAgICAgICAgICAgIlx1OTkwQVx1ODAwMSIsICAgICAgICAgICAgIC8vICA3MTcgWW9ybworICAgICAgICAgICAgIlx1Nzk1RVx1NEU4MCIsICAgICAgICAgICAgIC8vICA3MjQgSmlua2kKKyAgICAgICAgICAgICJcdTU5MjlcdTVFNzMiLCAgICAgICAgICAgICAvLyAgNzI5IFRlbXB5bworICAgICAgICAgICAgIlx1NTkyOVx1NUU3M1x1NjExRlx1NUI5RCIsIC8vICA3NDkgVGVtcHlvLWthbXBvCisgICAgICAgICAgICAiXHU1OTI5XHU1RTczXHU1MkREXHU1QjlEIiwgLy8gIDc0OSBUZW1weW8tc2hvaG8KKyAgICAgICAgICAgICJcdTU5MjlcdTVFNzNcdTVCOURcdTVCNTciLCAvLyAgNzU3IFRlbXB5by1ob2ppCisgICAgICAgICAgICAiXHU1OTI5XHU1RTczXHU3OTVFXHU4Qjc3IiwgLy8gIDc2NSBUZW1waG8tamluZ28KKyAgICAgICAgICAgICJcdTc5NUVcdThCNzdcdTY2NkZcdTk2RjIiLCAvLyAgNzY3IEppbmdvLWtlaXVuCisgICAgICAgICAgICAiXHU1QjlEXHU0RTgwIiwgICAgICAgICAgICAgLy8gIDc3MCBIb2tpCisgICAgICAgICAgICAiXHU1OTI5XHU1RkRDIiwgICAgICAgICAgICAgLy8gIDc4MSBUZW4tbworICAgICAgICAgICAgIlx1NUVGNlx1NjZBNiIsICAgICAgICAgICAgIC8vICA3ODIgRW5yeWFrdQorICAgICAgICAgICAgIlx1NTkyN1x1NTQwQyIsICAgICAgICAgICAgIC8vICA4MDYgRGFpZG8KKyAgICAgICAgICAgICJcdTVGMThcdTRFQzEiLCAgICAgICAgICAgICAvLyAgODEwIEtvbmluCisgICAgICAgICAgICAiXHU1OTI5XHU5NTc3IiwgICAgICAgICAgICAgLy8gIDgyNCBUZW5jaG8KKyAgICAgICAgICAgICJcdTYyN0ZcdTU0OEMiLCAgICAgICAgICAgICAvLyAgODM0IFNob3dhCisgICAgICAgICAgICAiXHU1NjA5XHU3OTY1IiwgICAgICAgICAgICAgLy8gIDg0OCBLYWpvCisgICAgICAgICAgICAiXHU0RUMxXHU1QkZGIiwgICAgICAgICAgICAgLy8gIDg1MSBOaW5qdQorICAgICAgICAgICAgIlx1NjU4OVx1ODg2MSIsICAgICAgICAgICAgIC8vICA4NTQgU2Fpa28KKyAgICAgICAgICAgICJcdTU5MjlcdTVCODkiLCAgICAgICAgICAgICAvLyAgODU3IFRlbm5hbgorICAgICAgICAgICAgIlx1OEM5RVx1ODlCMyIsICAgICAgICAgICAgIC8vICA4NTkgSm9nYW4KKyAgICAgICAgICAgICJcdTUxNDNcdTYxNzYiLCAgICAgICAgICAgICAvLyAgODc3IEdlbmtlaQorICAgICAgICAgICAgIlx1NEVDMVx1NTQ4QyIsICAgICAgICAgICAgIC8vICA4ODUgTmlubmEKKyAgICAgICAgICAgICJcdTVCREJcdTVFNzMiLCAgICAgICAgICAgICAvLyAgODg5IEthbXB5bworICAgICAgICAgICAgIlx1NjYwQ1x1NkNGMCIsICAgICAgICAgICAgIC8vICA4OTggU2hvdGFpCisgICAgICAgICAgICAiXHU1RUY2XHU1NTlDIiwgICAgICAgICAgICAgLy8gIDkwMSBFbmdpCisgICAgICAgICAgICAiXHU1RUY2XHU5NTc3IiwgICAgICAgICAgICAgLy8gIDkyMyBFbmNobworICAgICAgICAgICAgIlx1NjI3Rlx1NUU3MyIsICAgICAgICAgICAgIC8vICA5MzEgU2hvaGVpCisgICAgICAgICAgICAiXHU1OTI5XHU2MTc2IiwgICAgICAgICAgICAgLy8gIDkzOCBUZW5neW8KKyAgICAgICAgICAgICJcdTU5MjlcdTY2QTYiLCAgICAgICAgICAgICAvLyAgOTQ3IFRlbnJ5YWt1CisgICAgICAgICAgICAiXHU1OTI5XHU1RkIzIiwgICAgICAgICAgICAgLy8gIDk1NyBUZW50b2t1CisgICAgICAgICAgICAiXHU1RkRDXHU1NDhDIiwgICAgICAgICAgICAgLy8gIDk2MSBPd2EKKyAgICAgICAgICAgICJcdTVFQjdcdTRGREQiLCAgICAgICAgICAgICAvLyAgOTY0IEtvaG8KKyAgICAgICAgICAgICJcdTVCODlcdTU0OEMiLCAgICAgICAgICAgICAvLyAgOTY4IEFubmEKKyAgICAgICAgICAgICJcdTU5MjlcdTc5ODQiLCAgICAgICAgICAgICAvLyAgOTcwIFRlbnJva3UKKyAgICAgICAgICAgICJcdTU5MjlcdTVFRjYiLCAgICAgICAgICAgICAvLyAgOTczIFRlbi1lbgorICAgICAgICAgICAgIlx1OEM5RVx1NTE0MyIsICAgICAgICAgICAgIC8vICA5NzYgSm9nZW4KKyAgICAgICAgICAgICJcdTU5MjlcdTUxNDMiLCAgICAgICAgICAgICAvLyAgOTc4IFRlbmdlbgorICAgICAgICAgICAgIlx1NkMzOFx1ODlCMyIsICAgICAgICAgICAgIC8vICA5ODMgRWlrYW4KKyAgICAgICAgICAgICJcdTVCREJcdTU0OEMiLCAgICAgICAgICAgICAvLyAgOTg1IEthbm5hCisgICAgICAgICAgICAiXHU2QzM4XHU1RUY2IiwgICAgICAgICAgICAgLy8gIDk4NyBFaS1lbgorICAgICAgICAgICAgIlx1NkMzOFx1Nzk1QSIsICAgICAgICAgICAgIC8vICA5ODkgRWlzbworICAgICAgICAgICAgIlx1NkI2M1x1NjZBNiIsICAgICAgICAgICAgIC8vICA5OTAgU2hvcnlha3UKKyAgICAgICAgICAgICJcdTk1NzdcdTVGQjMiLCAgICAgICAgICAgICAvLyAgOTk1IENob3Rva3UKKyAgICAgICAgICAgICJcdTk1NzdcdTRGREQiLCAgICAgICAgICAgICAvLyAgOTk5IENob2hvCisgICAgICAgICAgICAiXHU1QkRCXHU1RjE4IiwgICAgICAgICAgICAgLy8gMTAwNCBLYW5rbworICAgICAgICAgICAgIlx1OTU3N1x1NTQ4QyIsICAgICAgICAgICAgIC8vIDEwMTIgQ2hvd2EKKyAgICAgICAgICAgICJcdTVCREJcdTRFQzEiLCAgICAgICAgICAgICAvLyAxMDE3IEthbm5pbgorICAgICAgICAgICAgIlx1NkNCQlx1NUI4OSIsICAgICAgICAgICAgIC8vIDEwMjEgSmlhbgorICAgICAgICAgICAgIlx1NEUwN1x1NUJGRiIsICAgICAgICAgICAgIC8vIDEwMjQgTWFuanUKKyAgICAgICAgICAgICJcdTk1NzdcdTUxNDMiLCAgICAgICAgICAgICAvLyAxMDI4IENob2dlbgorICAgICAgICAgICAgIlx1OTU3N1x1NjZBNiIsICAgICAgICAgICAgIC8vIDEwMzcgQ2hvcnlha3UKKyAgICAgICAgICAgICJcdTk1NzdcdTRFNDUiLCAgICAgICAgICAgICAvLyAxMDQwIENob2t5dQorICAgICAgICAgICAgIlx1NUJEQlx1NUZCMyIsICAgICAgICAgICAgIC8vIDEwNDQgS2FudG9rdQorICAgICAgICAgICAgIlx1NkMzOFx1NjI3RiIsICAgICAgICAgICAgIC8vIDEwNDYgRWlzaG8KKyAgICAgICAgICAgICJcdTU5MjlcdTU1OUMiLCAgICAgICAgICAgICAvLyAxMDUzIFRlbmdpCisgICAgICAgICAgICAiXHU1RUI3XHU1RTczIiwgICAgICAgICAgICAgLy8gMTA1OCBLb2hlaQorICAgICAgICAgICAgIlx1NkNCQlx1NjZBNiIsICAgICAgICAgICAgIC8vIDEwNjUgSmlyeWFrdQorICAgICAgICAgICAgIlx1NUVGNlx1NEU0NSIsICAgICAgICAgICAgIC8vIDEwNjkgRW5reXUKKyAgICAgICAgICAgICJcdTYyN0ZcdTRGREQiLCAgICAgICAgICAgICAvLyAxMDc0IFNob2hvCisgICAgICAgICAgICAiXHU2MjdGXHU2NkE2IiwgICAgICAgICAgICAgLy8gMTA3NyBTaG9yeWFrdQorICAgICAgICAgICAgIlx1NkMzOFx1NEZERCIsICAgICAgICAgICAgIC8vIDEwODEgRWlobworICAgICAgICAgICAgIlx1NUZEQ1x1NUZCMyIsICAgICAgICAgICAgIC8vIDEwODQgT3Rva3UKKyAgICAgICAgICAgICJcdTVCREJcdTZDQkIiLCAgICAgICAgICAgICAvLyAxMDg3IEthbmppCisgICAgICAgICAgICAiXHU1NjA5XHU0RkREIiwgICAgICAgICAgICAgLy8gMTA5NCBLYWhvCisgICAgICAgICAgICAiXHU2QzM4XHU5NTc3IiwgICAgICAgICAgICAgLy8gMTA5NiBFaWNobworICAgICAgICAgICAgIlx1NjI3Rlx1NUZCMyIsICAgICAgICAgICAgIC8vIDEwOTcgU2hvdG9rdQorICAgICAgICAgICAgIlx1NUVCN1x1NTQ4QyIsICAgICAgICAgICAgIC8vIDEwOTkgS293YQorICAgICAgICAgICAgIlx1OTU3N1x1NkNCQiIsICAgICAgICAgICAgIC8vIDExMDQgQ2hvamkKKyAgICAgICAgICAgICJcdTU2MDlcdTYyN0YiLCAgICAgICAgICAgICAvLyAxMTA2IEthc2hvCisgICAgICAgICAgICAiXHU1OTI5XHU0RUMxIiwgICAgICAgICAgICAgLy8gMTEwOCBUZW5uaW4KKyAgICAgICAgICAgICJcdTU5MjlcdTZDMzgiLCAgICAgICAgICAgICAvLyAxMTEwIFRlbi1laQorICAgICAgICAgICAgIlx1NkMzOFx1NEU0NSIsICAgICAgICAgICAgIC8vIDExMTMgRWlreXUKKyAgICAgICAgICAgICJcdTUxNDNcdTZDMzgiLCAgICAgICAgICAgICAvLyAxMTE4IEdlbi1laQorICAgICAgICAgICAgIlx1NEZERFx1NUI4OSIsICAgICAgICAgICAgIC8vIDExMjAgSG9hbgorICAgICAgICAgICAgIlx1NTkyOVx1NkNCQiIsICAgICAgICAgICAgIC8vIDExMjQgVGVuamkKKyAgICAgICAgICAgICJcdTU5MjdcdTZDQkIiLCAgICAgICAgICAgICAvLyAxMTI2IERhaWppCisgICAgICAgICAgICAiXHU1OTI5XHU2MjdGIiwgICAgICAgICAgICAgLy8gMTEzMSBUZW5zaG8KKyAgICAgICAgICAgICJcdTk1NzdcdTYyN0YiLCAgICAgICAgICAgICAvLyAxMTMyIENob3NobworICAgICAgICAgICAgIlx1NEZERFx1NUVGNiIsICAgICAgICAgICAgIC8vIDExMzUgSG9lbgorICAgICAgICAgICAgIlx1NkMzOFx1NkNCQiIsICAgICAgICAgICAgIC8vIDExNDEgRWlqaQorICAgICAgICAgICAgIlx1NUVCN1x1NkNCQiIsICAgICAgICAgICAgIC8vIDExNDIgS29qaQorICAgICAgICAgICAgIlx1NTkyOVx1OTkwQSIsICAgICAgICAgICAgIC8vIDExNDQgVGVueW8KKyAgICAgICAgICAgICJcdTRFNDVcdTVCODkiLCAgICAgICAgICAgICAvLyAxMTQ1IEt5dWFuCisgICAgICAgICAgICAiXHU0RUMxXHU1RTczIiwgICAgICAgICAgICAgLy8gMTE1MSBOaW5wZWkKKyAgICAgICAgICAgICJcdTRFNDVcdTVCRkYiLCAgICAgICAgICAgICAvLyAxMTU0IEt5dWp1CisgICAgICAgICAgICAiXHU0RkREXHU1MTQzIiwgICAgICAgICAgICAgLy8gMTE1NiBIb2dlbgorICAgICAgICAgICAgIlx1NUU3M1x1NkNCQiIsICAgICAgICAgICAgIC8vIDExNTkgSGVpamkKKyAgICAgICAgICAgICJcdTZDMzhcdTY2QTYiLCAgICAgICAgICAgICAvLyAxMTYwIEVpcnlha3UKKyAgICAgICAgICAgICJcdTVGRENcdTRGREQiLCAgICAgICAgICAgICAvLyAxMTYxIE9obworICAgICAgICAgICAgIlx1OTU3N1x1NUJEQiIsICAgICAgICAgICAgIC8vIDExNjMgQ2hva2FuCisgICAgICAgICAgICAiXHU2QzM4XHU0RTA3IiwgICAgICAgICAgICAgLy8gMTE2NSBFaW1hbgorICAgICAgICAgICAgIlx1NEVDMVx1NUI4OSIsICAgICAgICAgICAgIC8vIDExNjYgTmluLWFuCisgICAgICAgICAgICAiXHU1NjA5XHU1RkRDIiwgICAgICAgICAgICAgLy8gMTE2OSBLYW8KKyAgICAgICAgICAgICJcdTYyN0ZcdTVCODkiLCAgICAgICAgICAgICAvLyAxMTcxIFNob2FuCisgICAgICAgICAgICAiXHU1Qjg5XHU1MTQzIiwgICAgICAgICAgICAgLy8gMTE3NSBBbmdlbgorICAgICAgICAgICAgIlx1NkNCQlx1NjI3RiIsICAgICAgICAgICAgIC8vIDExNzcgSmlzaG8KKyAgICAgICAgICAgICJcdTk5MEFcdTU0OEMiLCAgICAgICAgICAgICAvLyAxMTgxIFlvd2EKKyAgICAgICAgICAgICJcdTVCRkZcdTZDMzgiLCAgICAgICAgICAgICAvLyAxMTgyIEp1ZWkKKyAgICAgICAgICAgICJcdTUxNDNcdTY2QTYiLCAgICAgICAgICAgICAvLyAxMTg0IEdlbnJ5dWt1CisgICAgICAgICAgICAiXHU2NTg3XHU2Q0JCIiwgICAgICAgICAgICAgLy8gMTE4NSBCdW5qaQorICAgICAgICAgICAgIlx1NUVGQVx1NEU0NSIsICAgICAgICAgICAgIC8vIDExOTAgS2Vua3l1CisgICAgICAgICAgICAiXHU2QjYzXHU2Q0JCIiwgICAgICAgICAgICAgLy8gMTE5OSBTaG9qaQorICAgICAgICAgICAgIlx1NUVGQVx1NEVDMSIsICAgICAgICAgICAgIC8vIDEyMDEgS2VubmluCisgICAgICAgICAgICAiXHU1MTQzXHU0RTQ1IiwgICAgICAgICAgICAgLy8gMTIwNCBHZW5reXUKKyAgICAgICAgICAgICJcdTVFRkFcdTZDMzgiLCAgICAgICAgICAgICAvLyAxMjA2IEtlbi1laQorICAgICAgICAgICAgIlx1NjI3Rlx1NTE0MyIsICAgICAgICAgICAgIC8vIDEyMDcgU2hvZ2VuCisgICAgICAgICAgICAiXHU1RUZBXHU2NkE2IiwgICAgICAgICAgICAgLy8gMTIxMSBLZW5yeWFrdQorICAgICAgICAgICAgIlx1NUVGQVx1NEZERCIsICAgICAgICAgICAgIC8vIDEyMTMgS2VucG8KKyAgICAgICAgICAgICJcdTYyN0ZcdTRFNDUiLCAgICAgICAgICAgICAvLyAxMjE5IFNob2t5dQorICAgICAgICAgICAgIlx1OEM5RVx1NUZEQyIsICAgICAgICAgICAgIC8vIDEyMjIgSm9vCisgICAgICAgICAgICAiXHU1MTQzXHU0RUMxIiwgICAgICAgICAgICAgLy8gMTIyNCBHZW5uaW4KKyAgICAgICAgICAgICJcdTU2MDlcdTc5ODQiLCAgICAgICAgICAgICAvLyAxMjI1IEthcm9rdQorICAgICAgICAgICAgIlx1NUI4OVx1OEM5RSIsICAgICAgICAgICAgIC8vIDEyMjcgQW50ZWkKKyAgICAgICAgICAgICJcdTVCREJcdTU1OUMiLCAgICAgICAgICAgICAvLyAxMjI5IEthbmtpCisgICAgICAgICAgICAiXHU4QzlFXHU2QzM4IiwgICAgICAgICAgICAgLy8gMTIzMiBKb2VpCisgICAgICAgICAgICAiXHU1OTI5XHU3OThGIiwgICAgICAgICAgICAgLy8gMTIzMyBUZW1wdWt1CisgICAgICAgICAgICAiXHU2NTg3XHU2NkE2IiwgICAgICAgICAgICAgLy8gMTIzNCBCdW5yeWFrdQorICAgICAgICAgICAgIlx1NTYwOVx1Nzk4RSIsICAgICAgICAgICAgIC8vIDEyMzUgS2F0ZWkKKyAgICAgICAgICAgICJcdTY2QTZcdTRFQzEiLCAgICAgICAgICAgICAvLyAxMjM4IFJ5YWt1bmluCisgICAgICAgICAgICAiXHU1RUY2XHU1RkRDIiwgICAgICAgICAgICAgLy8gMTIzOSBFbi1vCisgICAgICAgICAgICAiXHU0RUMxXHU2Q0JCIiwgICAgICAgICAgICAgLy8gMTI0MCBOaW5qaQorICAgICAgICAgICAgIlx1NUJEQlx1NTE0MyIsICAgICAgICAgICAgIC8vIDEyNDMgS2FuZ2VuCisgICAgICAgICAgICAiXHU1QjlEXHU2Q0JCIiwgICAgICAgICAgICAgLy8gMTI0NyBIb2ppCisgICAgICAgICAgICAiXHU1RUZBXHU5NTc3IiwgICAgICAgICAgICAgLy8gMTI0OSBLZW5jaG8KKyAgICAgICAgICAgICJcdTVFQjdcdTUxNDMiLCAgICAgICAgICAgICAvLyAxMjU2IEtvZ2VuCisgICAgICAgICAgICAiXHU2QjYzXHU1NjA5IiwgICAgICAgICAgICAgLy8gMTI1NyBTaG9rYQorICAgICAgICAgICAgIlx1NkI2M1x1NTE0MyIsICAgICAgICAgICAgIC8vIDEyNTkgU2hvZ2VuCisgICAgICAgICAgICAiXHU2NTg3XHU1RkRDIiwgICAgICAgICAgICAgLy8gMTI2MCBCdW4tbworICAgICAgICAgICAgIlx1NUYxOFx1OTU3NyIsICAgICAgICAgICAgIC8vIDEyNjEgS29jaG8KKyAgICAgICAgICAgICJcdTY1ODdcdTZDMzgiLCAgICAgICAgICAgICAvLyAxMjY0IEJ1bi1laQorICAgICAgICAgICAgIlx1NUVGQVx1NkNCQiIsICAgICAgICAgICAgIC8vIDEyNzUgS2VuamkKKyAgICAgICAgICAgICJcdTVGMThcdTVCODkiLCAgICAgICAgICAgICAvLyAxMjc4IEtvYW4KKyAgICAgICAgICAgICJcdTZCNjNcdTVGREMiLCAgICAgICAgICAgICAvLyAxMjg4IFNob28KKyAgICAgICAgICAgICJcdTZDMzhcdTRFQzEiLCAgICAgICAgICAgICAvLyAxMjkzIEVpbmluCisgICAgICAgICAgICAiXHU2QjYzXHU1Qjg5IiwgICAgICAgICAgICAgLy8gMTI5OSBTaG9hbgorICAgICAgICAgICAgIlx1NEU3RVx1NTE0MyIsICAgICAgICAgICAgIC8vIDEzMDIgS2VuZ2VuCisgICAgICAgICAgICAiXHU1NjA5XHU1MTQzIiwgICAgICAgICAgICAgLy8gMTMwMyBLYWdlbgorICAgICAgICAgICAgIlx1NUZCM1x1NkNCQiIsICAgICAgICAgICAgIC8vIDEzMDYgVG9rdWppCisgICAgICAgICAgICAiXHU1RUY2XHU2MTc2IiwgICAgICAgICAgICAgLy8gMTMwOCBFbmtlaQorICAgICAgICAgICAgIlx1NUZEQ1x1OTU3NyIsICAgICAgICAgICAgIC8vIDEzMTEgT2NobworICAgICAgICAgICAgIlx1NkI2M1x1NTQ4QyIsICAgICAgICAgICAgIC8vIDEzMTIgU2hvd2EKKyAgICAgICAgICAgICJcdTY1ODdcdTRGREQiLCAgICAgICAgICAgICAvLyAxMzE3IEJ1bnBvCisgICAgICAgICAgICAiXHU1MTQzXHU1RkRDIiwgICAgICAgICAgICAgLy8gMTMxOSBHZW5vCisgICAgICAgICAgICAiXHU1MTQzXHU0RUE4IiwgICAgICAgICAgICAgLy8gMTMyMSBHZW5reW8KKyAgICAgICAgICAgICJcdTZCNjNcdTRFMkQiLCAgICAgICAgICAgICAvLyAxMzI0IFNob2NodQorICAgICAgICAgICAgIlx1NTYwOVx1NjZBNiIsICAgICAgICAgICAgIC8vIDEzMjYgS2FyZWtpCisgICAgICAgICAgICAiXHU1MTQzXHU1RkIzIiwgICAgICAgICAgICAgLy8gMTMyOSBHZW50b2t1CisgICAgICAgICAgICAiXHU1MTQzXHU1RjE4IiwgICAgICAgICAgICAgLy8gMTMzMSBHZW5rbworICAgICAgICAgICAgIlx1NUVGQVx1NkI2NiIsICAgICAgICAgICAgIC8vIDEzMzQgS2VtbXUKKyAgICAgICAgICAgICJcdTVFRjZcdTUxNDMiLCAgICAgICAgICAgICAvLyAxMzM2IEVuZ2VuCisgICAgICAgICAgICAiXHU4MjA4XHU1NkZEIiwgICAgICAgICAgICAgLy8gMTM0MCBLb2tva3UKKyAgICAgICAgICAgICJcdTZCNjNcdTVFNzMiLCAgICAgICAgICAgICAvLyAxMzQ2IFNob2hlaQorICAgICAgICAgICAgIlx1NUVGQVx1NUZCMyIsICAgICAgICAgICAgIC8vIDEzNzAgS2VudG9rdQorICAgICAgICAgICAgIlx1NjU4N1x1NEUyRCIsICAgICAgICAgICAgIC8vIDEzNzIgQnVuY2h1CisgICAgICAgICAgICAiXHU1OTI5XHU2Mzg4IiwgICAgICAgICAgICAgLy8gMTM3NSBUZW5qdQorICAgICAgICAgICAgIlx1NUYxOFx1NTQ4QyIsICAgICAgICAgICAgIC8vIDEzODEgS293YQorICAgICAgICAgICAgIlx1NTE0M1x1NEUyRCIsICAgICAgICAgICAgIC8vIDEzODQgR2VuY2h1CisgICAgICAgICAgICAiXHU4MUYzXHU1RkIzIiwgICAgICAgICAgICAgLy8gMTM4NCBNZWl0b2t1CisgICAgICAgICAgICAiXHU1RUI3XHU2NkE2IiwgICAgICAgICAgICAgLy8gMTM3OSBLb3J5YWt1CisgICAgICAgICAgICAiXHU1NjA5XHU2MTc2IiwgICAgICAgICAgICAgLy8gMTM4NyBLYWtlaQorICAgICAgICAgICAgIlx1NUVCN1x1NUZEQyIsICAgICAgICAgICAgIC8vIDEzODkgS29vCisgICAgICAgICAgICAiXHU2NjBFXHU1RkIzIiwgICAgICAgICAgICAgLy8gMTM5MCBNZWl0b2t1CisgICAgICAgICAgICAiXHU1RkRDXHU2QzM4IiwgICAgICAgICAgICAgLy8gMTM5NCBPZWkKKyAgICAgICAgICAgICJcdTZCNjNcdTk1NzciLCAgICAgICAgICAgICAvLyAxNDI4IFNob2NobworICAgICAgICAgICAgIlx1NkMzOFx1NEVBQiIsICAgICAgICAgICAgIC8vIDE0MjkgRWlreW8KKyAgICAgICAgICAgICJcdTU2MDlcdTU0MDkiLCAgICAgICAgICAgICAvLyAxNDQxIEtha2l0c3UKKyAgICAgICAgICAgICJcdTY1ODdcdTVCODkiLCAgICAgICAgICAgICAvLyAxNDQ0IEJ1bi1hbgorICAgICAgICAgICAgIlx1NUI5RFx1NUZCMyIsICAgICAgICAgICAgIC8vIDE0NDkgSG90b2t1CisgICAgICAgICAgICAiXHU0RUFCXHU1RkIzIiwgICAgICAgICAgICAgLy8gMTQ1MiBLeW90b2t1CisgICAgICAgICAgICAiXHU1RUI3XHU2QjYzIiwgICAgICAgICAgICAgLy8gMTQ1NSBLb3NobworICAgICAgICAgICAgIlx1OTU3N1x1Nzk4NCIsICAgICAgICAgICAgIC8vIDE0NTcgQ2hvcm9rdQorICAgICAgICAgICAgIlx1NUJEQlx1NkI2MyIsICAgICAgICAgICAgIC8vIDE0NjAgS2Fuc2hvCisgICAgICAgICAgICAiXHU2NTg3XHU2QjYzIiwgICAgICAgICAgICAgLy8gMTQ2NiBCdW5zaG8KKyAgICAgICAgICAgICJcdTVGRENcdTRFQzEiLCAgICAgICAgICAgICAvLyAxNDY3IE9uaW4KKyAgICAgICAgICAgICJcdTY1ODdcdTY2MEUiLCAgICAgICAgICAgICAvLyAxNDY5IEJ1bm1laQorICAgICAgICAgICAgIlx1OTU3N1x1NEVBQiIsICAgICAgICAgICAgIC8vIDE0ODcgQ2hva3lvCisgICAgICAgICAgICAiXHU1RUY2XHU1RkIzIiwgICAgICAgICAgICAgLy8gMTQ4OSBFbnRva3UKKyAgICAgICAgICAgICJcdTY2MEVcdTVGREMiLCAgICAgICAgICAgICAvLyAxNDkyIE1laW8KKyAgICAgICAgICAgICJcdTY1ODdcdTRFODAiLCAgICAgICAgICAgICAvLyAxNTAxIEJ1bmtpCisgICAgICAgICAgICAiXHU2QzM4XHU2QjYzIiwgICAgICAgICAgICAgLy8gMTUwNCBFaXNobworICAgICAgICAgICAgIlx1NTkyN1x1NkMzOCIsICAgICAgICAgICAgIC8vIDE1MjEgVGFpZWkKKyAgICAgICAgICAgICJcdTRFQUJcdTc5ODQiLCAgICAgICAgICAgICAvLyAxNTI4IEt5b3Jva3UKKyAgICAgICAgICAgICJcdTU5MjlcdTY1ODciLCAgICAgICAgICAgICAvLyAxNTMyIFRlbm1vbgorICAgICAgICAgICAgIlx1NUYxOFx1NkNCQiIsICAgICAgICAgICAgIC8vIDE1NTUgS29qaQorICAgICAgICAgICAgIlx1NkMzOFx1Nzk4NCIsICAgICAgICAgICAgIC8vIDE1NTggRWlyb2t1CisgICAgICAgICAgICAiXHU1MTQzXHU0RTgwIiwgICAgICAgICAgICAgLy8gMTU3MCBHZW5raQorICAgICAgICAgICAgIlx1NTkyOVx1NkI2MyIsICAgICAgICAgICAgIC8vIDE1NzMgVGVuc2hvCisgICAgICAgICAgICAiXHU2NTg3XHU3OTg0IiwgICAgICAgICAgICAgLy8gMTU5MiBCdW5yb2t1CisgICAgICAgICAgICAiXHU2MTc2XHU5NTc3IiwgICAgICAgICAgICAgLy8gMTU5NiBLZWljaG8KKyAgICAgICAgICAgICJcdTUxNDNcdTU0OEMiLCAgICAgICAgICAgICAvLyAxNjE1IEdlbndhCisgICAgICAgICAgICAiXHU1QkRCXHU2QzM4IiwgICAgICAgICAgICAgLy8gMTYyNCBLYW4tZWkKKyAgICAgICAgICAgICJcdTZCNjNcdTRGREQiLCAgICAgICAgICAgICAvLyAxNjQ0IFNob2hvCisgICAgICAgICAgICAiXHU2MTc2XHU1Qjg5IiwgICAgICAgICAgICAgLy8gMTY0OCBLZWlhbgorICAgICAgICAgICAgIlx1NjI3Rlx1NUZEQyIsICAgICAgICAgICAgIC8vIDE2NTIgU2hvbworICAgICAgICAgICAgIlx1NjYwRVx1NjZBNiIsICAgICAgICAgICAgIC8vIDE2NTUgTWVpcnlha3UKKyAgICAgICAgICAgICJcdTRFMDdcdTZDQkIiLCAgICAgICAgICAgICAvLyAxNjU4IE1hbmppCisgICAgICAgICAgICAiXHU1QkRCXHU2NTg3IiwgICAgICAgICAgICAgLy8gMTY2MSBLYW5idW4KKyAgICAgICAgICAgICJcdTVFRjZcdTVCOUQiLCAgICAgICAgICAgICAvLyAxNjczIEVucG8KKyAgICAgICAgICAgICJcdTU5MjlcdTU0OEMiLCAgICAgICAgICAgICAvLyAxNjgxIFRlbndhCisgICAgICAgICAgICAiXHU4QzlFXHU0RUFCIiwgICAgICAgICAgICAgLy8gMTY4NCBKb2t5bworICAgICAgICAgICAgIlx1NTE0M1x1Nzk4NCIsICAgICAgICAgICAgIC8vIDE2ODggR2Vucm9rdQorICAgICAgICAgICAgIlx1NUI5RFx1NkMzOCIsICAgICAgICAgICAgIC8vIDE3MDQgSG9laQorICAgICAgICAgICAgIlx1NkI2M1x1NUZCMyIsICAgICAgICAgICAgIC8vIDE3MTEgU2hvdG9rdQorICAgICAgICAgICAgIlx1NEVBQlx1NEZERCIsICAgICAgICAgICAgIC8vIDE3MTYgS3lvaG8KKyAgICAgICAgICAgICJcdTUxNDNcdTY1ODciLCAgICAgICAgICAgICAvLyAxNzM2IEdlbmJ1bgorICAgICAgICAgICAgIlx1NUJEQlx1NEZERCIsICAgICAgICAgICAgIC8vIDE3NDEgS2FucG8KKyAgICAgICAgICAgICJcdTVFRjZcdTRFQUIiLCAgICAgICAgICAgICAvLyAxNzQ0IEVua3lvCisgICAgICAgICAgICAiXHU1QkRCXHU1RUY2IiwgICAgICAgICAgICAgLy8gMTc0OCBLYW4tZW4KKyAgICAgICAgICAgICJcdTVCOURcdTY2QTYiLCAgICAgICAgICAgICAvLyAxNzUxIEhvcnlha3UKKyAgICAgICAgICAgICJcdTY2MEVcdTU0OEMiLCAgICAgICAgICAgICAvLyAxNzY0IE1laXdhCisgICAgICAgICAgICAiXHU1Qjg5XHU2QzM4IiwgICAgICAgICAgICAgLy8gMTc3MiBBbi1laQorICAgICAgICAgICAgIlx1NTkyOVx1NjYwRSIsICAgICAgICAgICAgIC8vIDE3ODEgVGVubWVpCisgICAgICAgICAgICAiXHU1QkRCXHU2NTNGIiwgICAgICAgICAgICAgLy8gMTc4OSBLYW5zZWkKKyAgICAgICAgICAgICJcdTRFQUJcdTU0OEMiLCAgICAgICAgICAgICAvLyAxODAxIEt5b3dhCisgICAgICAgICAgICAiXHU2NTg3XHU1MzE2IiwgICAgICAgICAgICAgLy8gMTgwNCBCdW5rYQorICAgICAgICAgICAgIlx1NjU4N1x1NjUzRiIsICAgICAgICAgICAgIC8vIDE4MTggQnVuc2VpCisgICAgICAgICAgICAiXHU1OTI5XHU0RkREIiwgICAgICAgICAgICAgLy8gMTgzMCBUZW5wbworICAgICAgICAgICAgIlx1NUYxOFx1NTMxNiIsICAgICAgICAgICAgIC8vIDE4NDQgS29rYQorICAgICAgICAgICAgIlx1NTYwOVx1NkMzOCIsICAgICAgICAgICAgIC8vIDE4NDggS2FlaQorICAgICAgICAgICAgIlx1NUI4OVx1NjUzRiIsICAgICAgICAgICAgIC8vIDE4NTQgQW5zZWkKKyAgICAgICAgICAgICJcdTRFMDdcdTVFRjYiLCAgICAgICAgICAgICAvLyAxODYwIE1hbi1lbgorICAgICAgICAgICAgIlx1NjU4N1x1NEU0NSIsICAgICAgICAgICAgIC8vIDE4NjEgQnVua3l1CisgICAgICAgICAgICAiXHU1MTQzXHU2Q0JCIiwgICAgICAgICAgICAgLy8gMTg2NCBHZW5qaQorICAgICAgICAgICAgIlx1NjE3Nlx1NUZEQyIsICAgICAgICAgICAgIC8vIDE4NjUgS2VpbworICAgICAgICAgICAgIlx1NjYwRVx1NkNCQiIsICAgICAgICAgICAgIC8vIDE4NjggTWVpamkKKyAgICAgICAgICAgICJcdTU5MjdcdTZCNjMiLCAgICAgICAgICAgICAvLyAxOTEyIFRhaXNobworICAgICAgICAgICAgIlx1NjYyRFx1NTQ4QyIsICAgICAgICAgICAgIC8vIDE5MjYgU2hvd2EKKyAgICAgICAgICAgICJcdTVFNzNcdTYyMTAiLCAgICAgICAgICAgICAvLyAxOTg5IEhlaXNlaQorICAgICAgICB9IH0sCisgICAgfTsKKworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsKKyAgICAgICAgcmV0dXJuIGZDb250ZW50czsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9Mb2NhbGVTY3JpcHQuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvTG9jYWxlU2NyaXB0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZTE4NGU5MQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvTG9jYWxlU2NyaXB0LmphdmEKQEAgLTAsMCArMSw0MjQgQEAKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIENvcHlyaWdodCAoQykgMjAwMS0yMDAzLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworcGFja2FnZSBjb20uaWJtLmljdS5pbXBsLmRhdGE7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOyAKK2ltcG9ydCBjb20uaWJtLmljdS5sYW5nLlVTY3JpcHQ7CisKK3B1YmxpYyBjbGFzcyBMb2NhbGVTY3JpcHQgZXh0ZW5kcyBMaXN0UmVzb3VyY2VCdW5kbGUgeyAKKworICAgICAgcHVibGljIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7IAorICAgICAgICAgICAgIHJldHVybiBsb2NhbGVTY3JpcHQ7CisgICAgICB9CisKKyAgICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIE9iamVjdFtdW10gbG9jYWxlU2NyaXB0ID0gbmV3IE9iamVjdFtdW10geworICAgICAgICAgICB7CisgICAgICAgICAgICAgICAiYWYiLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuTEFUSU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAiYW0iLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuRVRISU9QSUMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAiYXIiLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuQVJBQklDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgfSwKKyAgICAgICAgICAgeworICAgICAgICAgICAgICAgImF6IiwgbmV3IGludFtdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU2NyaXB0LkNZUklMTElDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgfSwKKyAgICAgICAgICAgeworICAgICAgICAgICAgICAgImJlIiwgbmV3IGludFtdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU2NyaXB0LkNZUklMTElDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgfSwKKyAgICAgICAgICAgeworICAgICAgICAgICAgICAgImJnIiwgbmV3IGludFtdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU2NyaXB0LkNZUklMTElDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgfSwKKyAgICAgICAgICAgeworICAgICAgICAgICAgICAgImJuIiwgbmV3IGludFtdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU2NyaXB0LkJFTkdBTEksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAiY2EiLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuTEFUSU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAiY3MiLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuTEFUSU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAiZGEiLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuTEFUSU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAiZGUiLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuTEFUSU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAiZGl2IiwgbmV3IGludFtdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU2NyaXB0LlRIQUFOQSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgIH0sCisgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICJlbCIsIG5ldyBpbnRbXSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNjcmlwdC5HUkVFSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgIH0sCisgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICJlbiIsIG5ldyBpbnRbXSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNjcmlwdC5MQVRJTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgIH0sCisgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICJlbyIsIG5ldyBpbnRbXSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNjcmlwdC5MQVRJTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgIH0sCisgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICJlcyIsIG5ldyBpbnRbXSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNjcmlwdC5MQVRJTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgIH0sCisgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICJldCIsIG5ldyBpbnRbXSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNjcmlwdC5MQVRJTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgIH0sCisgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICJldSIsIG5ldyBpbnRbXSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNjcmlwdC5MQVRJTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgIH0sCisgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICJmYSIsIG5ldyBpbnRbXSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNjcmlwdC5BUkFCSUMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAiZmkiLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuTEFUSU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAiZm8iLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuTEFUSU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAiZnIiLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuTEFUSU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAiZ2EiLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuTEFUSU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAiZ2wiLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuTEFUSU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAiZ3UiLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuR1VKQVJBVEksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAiZ3YiLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuTEFUSU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAiaGUiLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuSEVCUkVXLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgfSwKKyAgICAgICAgICAgeworICAgICAgICAgICAgICAgImhpIiwgbmV3IGludFtdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU2NyaXB0LkRFVkFOQUdBUkksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAiaHIiLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuTEFUSU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAiaHUiLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuTEFUSU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAiaHkiLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuQVJNRU5JQU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAiaWQiLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuTEFUSU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAiaXMiLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuTEFUSU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAiaXQiLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuTEFUSU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAiaXciLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuSEVCUkVXLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgfSwKKyAgICAgICAgICAgeworICAgICAgICAgICAgICAgImphIiwgbmV3IGludFtdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU2NyaXB0LktBVEFLQU5BLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuSElSQUdBTkEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNjcmlwdC5IQU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAia2EiLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuR0VPUkdJQU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAia2siLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuQ1lSSUxMSUMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAia2wiLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuTEFUSU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAia24iLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuS0FOTkFEQSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgIH0sCisgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICJrbyIsIG5ldyBpbnRbXSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNjcmlwdC5IQU5HVUwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNjcmlwdC5IQU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAia29rIiwgbmV3IGludFtdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU2NyaXB0LkRFVkFOQUdBUkksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAia3ciLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuTEFUSU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAia3kiLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuTEFUSU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAibHQiLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuTEFUSU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAibHYiLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuTEFUSU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAibWsiLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuQ1lSSUxMSUMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAibW4iLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuQ1lSSUxMSUMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAibXIiLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuREVWQU5BR0FSSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgIH0sCisgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICJtcyIsIG5ldyBpbnRbXSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNjcmlwdC5MQVRJTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgIH0sCisgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICJtdCIsIG5ldyBpbnRbXSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNjcmlwdC5MQVRJTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgIH0sCisgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICJuYiIsIG5ldyBpbnRbXSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNjcmlwdC5MQVRJTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgIH0sCisgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICJubCIsIG5ldyBpbnRbXSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNjcmlwdC5MQVRJTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgIH0sCisgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICJubiIsIG5ldyBpbnRbXSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNjcmlwdC5MQVRJTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgIH0sCisgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICJwYSIsIG5ldyBpbnRbXSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNjcmlwdC5HVVJNVUtISSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgIH0sCisgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICJwbCIsIG5ldyBpbnRbXSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNjcmlwdC5MQVRJTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgIH0sCisgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICJwdCIsIG5ldyBpbnRbXSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNjcmlwdC5MQVRJTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgIH0sCisgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICJybyIsIG5ldyBpbnRbXSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNjcmlwdC5MQVRJTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgIH0sCisgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICJyb290IiwgbmV3IGludFtdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU2NyaXB0LkxBVElOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgfSwKKyAgICAgICAgICAgeworICAgICAgICAgICAgICAgInJ1IiwgbmV3IGludFtdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU2NyaXB0LkNZUklMTElDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgfSwKKyAgICAgICAgICAgeworICAgICAgICAgICAgICAgInNhIiwgbmV3IGludFtdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU2NyaXB0LkRFVkFOQUdBUkksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAic2giLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuTEFUSU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAic2siLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuTEFUSU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAic2wiLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuTEFUSU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAic3EiLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuTEFUSU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAic3IiLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuQ1lSSUxMSUMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAic3YiLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuTEFUSU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAic3ciLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuTEFUSU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAic3lyIiwgbmV3IGludFtdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU2NyaXB0LlNZUklBQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgIH0sCisgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICJ0YSIsIG5ldyBpbnRbXSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNjcmlwdC5UQU1JTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgIH0sCisgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICJ0ZSIsIG5ldyBpbnRbXSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNjcmlwdC5URUxVR1UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAidGgiLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuVEhBSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgIH0sCisgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICJ0ciIsIG5ldyBpbnRbXSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNjcmlwdC5MQVRJTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgIH0sCisgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICJ0dCIsIG5ldyBpbnRbXSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNjcmlwdC5DWVJJTExJQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgIH0sCisgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICJ1ayIsIG5ldyBpbnRbXSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNjcmlwdC5DWVJJTExJQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgIH0sCisgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICJ1ciIsIG5ldyBpbnRbXSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNjcmlwdC5BUkFCSUMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAidXoiLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuQ1lSSUxMSUMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAidmkiLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuTEFUSU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9LAorICAgICAgICAgICB7CisgICAgICAgICAgICAgICAiemgiLCBuZXcgaW50W10geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTY3JpcHQuSEFOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgfSwKKyAgICAgICAgICAgeworICAgICAgICAgICAgICAgInpoX1RXIiwgbmV3IGludFtdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU2NyaXB0LkhBTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU2NyaXB0LkJPUE9NT0ZPLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgfSwKKyAgICAgIH07Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9SZXNvdXJjZVJlYWRlci5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9SZXNvdXJjZVJlYWRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmY5MTNjM2QKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL1Jlc291cmNlUmVhZGVyLmphdmEKQEAgLTAsMCArMSwxMjcgQEAKKy8qKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMS0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL1Jlc291cmNlUmVhZGVyLmphdmEsdiAkCisgKiAkRGF0ZTogMjAwMi8wOC8xMyAyMzozNzo0OCAkCisgKiAkUmV2aXNpb246IDEuNSAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS5pbXBsLmRhdGE7CisKK2ltcG9ydCBqYXZhLmlvLio7CisKKy8qKgorICogQSByZWFkZXIgZm9yIHRleHQgcmVzb3VyY2UgZGF0YSBpbiB0aGUgY3VycmVudCBwYWNrYWdlLiAgVGhlCisgKiByZXNvdXJjZSBkYXRhIGlzIGxvYWRlZCB0aHJvdWdoIHRoZSBjbGFzcyBsb2FkZXIsIHNvIGl0IHdpbGwKKyAqIHR5cGljYWxseSBiZSBhIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHRoZSAqLmNsYXNzIGZpbGVzLCBvcgorICogYSBmaWxlIHdpdGhpbiBhIEpBUiBmaWxlIGluIHRoZSBjb3JyZXNwb25kaW5nIHN1YmRpcmVjdG9yeS4gIFRoZQorICogZmlsZSBtdXN0IGJlIGEgdGV4dCBmaWxlIGluIG9uZSBvZiB0aGUgc3VwcG9ydGVkIGVuY29kaW5nczsgd2hlbiB0aGUKKyAqIHJlc291cmNlIGlzIG9wZW5lZCBieSBjb25zdHJ1Y3RpbmcgYSA8Y29kZT5SZXNvdXJjZVJlYWRlcjwvY29kZT4KKyAqIG9iamVjdCB0aGUgZW5jb2RpbmcgaXMgc3BlY2lmaWVkLgorICoKKyAqIDxwPkFsdGhvdWdoIHRoaXMgY2xhc3MgaGFzIGEgcHVibGljIEFQSSwgaXQgaXMgZGVzaWduZWQgZm9yCisgKiBpbnRlcm5hbCB1c2UgYnkgY2xhc3NlcyBpbiB0aGUgPGNvZGU+Y29tLmlibS5pY3UudGV4dDwvY29kZT4gcGFja2FnZS4KKyAqCisgKiBAYXV0aG9yIEFsYW4gTGl1CisgKi8KK3B1YmxpYyBjbGFzcyBSZXNvdXJjZVJlYWRlciB7CisgICAgcHJpdmF0ZSBCdWZmZXJlZFJlYWRlciByZWFkZXI7CisgICAgcHJpdmF0ZSBTdHJpbmcgcmVzb3VyY2VOYW1lOworICAgIHByaXZhdGUgU3RyaW5nIGVuY29kaW5nOyAvLyBudWxsIGZvciBkZWZhdWx0IGVuY29kaW5nCisgICAgcHJpdmF0ZSBib29sZWFuIGlzUmVzZXQ7IC8vIFRSVUUgaWYgd2UgYXJlIGF0IHRoZSBzdGFydCBvZiB0aGUgZmlsZQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGEgcmVhZGVyIG9iamVjdCBmb3IgdGhlIHRleHQgZmlsZSBvZiB0aGUgZ2l2ZW4gbmFtZQorICAgICAqIGluIHRoaXMgcGFja2FnZSwgdXNpbmcgdGhlIGdpdmVuIGVuY29kaW5nLgorICAgICAqIEBwYXJhbSByZXNvdXJjZU5hbWUgdGhlIG5hbWUgb2YgdGhlIHRleHQgZmlsZSBsb2NhdGVkIGluIHRoaXMKKyAgICAgKiBwYWNrYWdlCisgICAgICogQHBhcmFtIGVuY29kaW5nIHRoZSBlbmNvZGluZyBvZiB0aGUgdGV4dCBmaWxlOyBpZiB1bnN1cHBvcnRlZAorICAgICAqIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24KKyAgICAgKiBAZXhjZXB0aW9uIFVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24gaWYKKyAgICAgKiA8Y29kZT5lbmNvZGluZzwvY29kZT4gaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgSkRLLgorICAgICAqLworICAgIHB1YmxpYyBSZXNvdXJjZVJlYWRlcihTdHJpbmcgcmVzb3VyY2VOYW1lLCBTdHJpbmcgZW5jb2RpbmcpCisgICAgICAgIHRocm93cyBVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIHsKKworICAgICAgICB0aGlzLnJlc291cmNlTmFtZSA9IHJlc291cmNlTmFtZTsKKyAgICAgICAgdGhpcy5lbmNvZGluZyA9IGVuY29kaW5nOworICAgICAgICBpc1Jlc2V0ID0gZmFsc2U7CisgICAgICAgIF9yZXNldCgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdCBhIHJlYWRlciBvYmplY3QgZm9yIHRoZSB0ZXh0IGZpbGUgb2YgdGhlIGdpdmVuIG5hbWUKKyAgICAgKiBpbiB0aGlzIHBhY2thZ2UsIHVzaW5nIHRoZSBkZWZhdWx0IGVuY29kaW5nLgorICAgICAqIEBwYXJhbSByZXNvdXJjZU5hbWUgdGhlIG5hbWUgb2YgdGhlIHRleHQgZmlsZSBsb2NhdGVkIGluIHRoaXMKKyAgICAgKiBwYWNrYWdlCisgICAgICovCisgICAgcHVibGljIFJlc291cmNlUmVhZGVyKFN0cmluZyByZXNvdXJjZU5hbWUpIHsKKyAgICAgICAgdGhpcy5yZXNvdXJjZU5hbWUgPSByZXNvdXJjZU5hbWU7CisgICAgICAgIHRoaXMuZW5jb2RpbmcgPSBudWxsOworICAgICAgICBpc1Jlc2V0ID0gZmFsc2U7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBfcmVzZXQoKTsKKyAgICAgICAgfSBjYXRjaCAoVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiBlKSB7fQorICAgIH0KKworICAgIC8qKgorICAgICAqIFJlYWQgYW5kIHJldHVybiB0aGUgbmV4dCBsaW5lIG9mIHRoZSBmaWxlIG9yIDxjb2RlPm51bGw8L2NvZGU+CisgICAgICogaWYgdGhlIGVuZCBvZiB0aGUgZmlsZSBoYXMgYmVlbiByZWFjaGVkLgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgcmVhZExpbmUoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBpZiAoaXNSZXNldCkgeworICAgICAgICAgICAgLy8gUmVtb3ZlIEJPTXMKKyAgICAgICAgICAgIGlzUmVzZXQgPSBmYWxzZTsKKyAgICAgICAgICAgIFN0cmluZyBsaW5lID0gcmVhZGVyLnJlYWRMaW5lKCk7CisgICAgICAgICAgICBpZiAobGluZS5jaGFyQXQoMCkgPT0gJ1x1RkZFRicgfHwKKyAgICAgICAgICAgICAgICBsaW5lLmNoYXJBdCgwKSA9PSAnXHVGRUZGJykgeworICAgICAgICAgICAgICAgIHJldHVybiBsaW5lLnN1YnN0cmluZygxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBsaW5lOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZWFkZXIucmVhZExpbmUoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXNldCB0aGlzIHJlYWRlciBzbyB0aGF0IHRoZSBuZXh0IGNhbGwgdG8KKyAgICAgKiA8Y29kZT5yZWFkTGluZSgpPC9jb2RlPiByZXR1cm5zIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBmaWxlCisgICAgICogYWdhaW4uICBUaGlzIGlzIGEgc29tZXdoYXQgZXhwZW5zaXZlIGNhbGwsIGhvd2V2ZXIsIGNhbGxpbmcKKyAgICAgKiA8Y29kZT5yZXNldCgpPC9jb2RlPiBhZnRlciBjYWxsaW5nIGl0IHRoZSBmaXJzdCB0aW1lIGRvZXMKKyAgICAgKiBub3RoaW5nIGlmIDxjb2RlPnJlYWRMaW5lKCk8L2NvZGU+IGhhcyBub3QgYmVlbiBjYWxsZWQgaW4KKyAgICAgKiBiZXR3ZWVuLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHJlc2V0KCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgX3Jlc2V0KCk7CisgICAgICAgIH0gY2F0Y2ggKFVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24gZSkge30KKyAgICAgICAgLy8gV2Ugc3dhbGxvdyB0aGlzIGV4Y2VwdGlvbiwgaWYgdGhlcmUgaXMgb25lLiAgSWYgdGhlIGVuY29kaW5nIGlzCisgICAgICAgIC8vIGludmFsaWQsIHRoZSBjb25zdHJ1Y3RvciB3aWxsIGhhdmUgdGhyb3duIHRoaXMgZXhjZXB0aW9uIGFscmVhZHkgYW5kCisgICAgICAgIC8vIHRoZSBjYWxsZXIgc2hvdWxkbid0IHVzZSB0aGUgb2JqZWN0IGFmdGVyd2FyZHMuCisgICAgfQorCisgICAgLyoqCisgICAgICogUmVzZXQgdG8gdGhlIHN0YXJ0IGJ5IHJlY29uc3RydWN0aW5nIHRoZSBzdHJlYW0gYW5kIHJlYWRlcnMuCisgICAgICogV2UgY291bGQgYWxzbyB1c2UgbWFyaygpIGFuZCByZXNldCgpIG9uIHRoZSBzdHJlYW0gb3IgcmVhZGVyLAorICAgICAqIGJ1dCB0aGF0IHdvdWxkIGNhdXNlIHRoZW0gdG8ga2VlcCB0aGUgc3RyZWFtIGRhdGEgYXJvdW5kIGluCisgICAgICogbWVtb3J5LiAgV2UgZG9uJ3Qgd2FudCB0aGF0IGJlY2F1c2Ugc29tZSBvZiB0aGUgcmVzb3VyY2UgZmlsZXMKKyAgICAgKiBhcmUgbGFyZ2UsIGUuZy4sIDQwMGsuCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIF9yZXNldCgpIHRocm93cyBVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIHsKKyAgICAgICAgaWYgKGlzUmVzZXQpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBJbnB1dFN0cmVhbSBpcyA9IGdldENsYXNzKCkuZ2V0UmVzb3VyY2VBc1N0cmVhbShyZXNvdXJjZU5hbWUpOworICAgICAgICBpZiAoaXMgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiQ2FuJ3Qgb3BlbiAiICsgcmVzb3VyY2VOYW1lKTsKKyAgICAgICAgfQorICAgICAgICBJbnB1dFN0cmVhbVJlYWRlciBpc3IgPQorICAgICAgICAgICAgKGVuY29kaW5nID09IG51bGwpID8gbmV3IElucHV0U3RyZWFtUmVhZGVyKGlzKSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgSW5wdXRTdHJlYW1SZWFkZXIoaXMsIGVuY29kaW5nKTsKKyAgICAgICAgcmVhZGVyID0gbmV3IEJ1ZmZlcmVkUmVhZGVyKGlzcik7CisgICAgICAgIGlzUmVzZXQgPSB0cnVlOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfQW55X0FjY2VudHMudHh0IGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9UcmFuc2xpdGVyYXRvcl9BbnlfQWNjZW50cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNzk4NzM4NgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfQW55X0FjY2VudHMudHh0CkBAIC0wLDAgKzEsMjk0IEBACisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ29weXJpZ2h0IChjKSAxOTk5LTIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyMgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0F0dGljL1RyYW5zbGl0ZXJhdG9yX0FueV9BY2NlbnRzLnR4dCx2ICQKKyMgJERhdGU6IDIwMDEvMDkvMjUgMjI6NTg6NTUgJAorIyAkUmV2aXNpb246IDEuMyAkCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworOjogTkZEIChORkMpIDsKKworIyB0byBkbzogbWFrZSByZXZlcnNpYmxlCisKKyMgZGVmaW5lIHNwZWNpYWwgY29udmVyc2lvbiBjaGFyYWN0ZXJzLgorIyB2YXJpZW50cyBvZiB0aGlzIGNvdWxkIHVzZSBkaWZmZXJlbnQgY2hhcmFjdGVycywgb3Igc2V0IG9uZSBvciB0aGUgb3RoZXIgdG8gbnVsbC4KKworJHByZSA9IFw8IDsKKyRwb3N0ID0gXD4gOworCisjIFByb3ZpZGUga2V5Ym9hcmQgZXF1aXZhbGVudHMgZm9yIGNvbW1vbiBkaWFjcml0aWNzIHVzZWQgaW4gdHJhbnNsaXRlcmF0aW9uCisKKyRwcmUgXGAgJHBvc3QgPD4gXHUwMzAwIDsgIyBDT01CSU5JTkcgR1JBVkUgQUNDRU5UCiskcHJlIFwnICRwb3N0IDw+IFx1MDMwMSA7ICMgQ09NQklOSU5HIEFDVVRFIEFDQ0VOVAorJHByZSBcXiAkcG9zdCA8PiBcdTAzMDIgOyAjIENPTUJJTklORyBDSVJDVU1GTEVYIEFDQ0VOVAorJHByZSBcfiAkcG9zdCA8PiBcdTAzMDMgOyAjIENPTUJJTklORyBUSUxERQorJHByZSBcLSAkcG9zdCA8PiBcdTAzMDQgOyAjIENPTUJJTklORyBNQUNST04KKyRwcmUgXCIgJHBvc3QgPD4gXHUwMzA4IDsgIyBDT01CSU5JTkcgRElBRVJFU0lTCiskcHJlIFwqICRwb3N0IDw+IFx1MDMwQSA7ICMgQ09NQklOSU5HIFJJTkcgQUJPVkUKKyRwcmUgXCwgJHBvc3QgPD4gXHUwMzI3IDsgIyBDT01CSU5JTkcgQ0VESUxMQQorJHByZSAnLycgJHBvc3QgPD4gXHUwMzM4IDsgIyBDT01CSU5JTkcgTE9ORyBTT0xJRFVTIE9WRVJMQVkKKyRwcmUgXC4gJHBvc3QgPD4gXHUwMzIzIDsgIyBDT01CSU5JTkcgRE9UIEJFTE9XCisKKyMgQ29tYmluZSBjb21tb24gY2hhcmFjdGVycworCiskcHJlIEFFICRwb3N0IDw+IFx1MDBDNiA7ICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQUUKKyRwcmUgYWUgJHBvc3QgPD4gXHUwMEU2IDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgQUUKKyRwcmUgRCAkcG9zdCA8PiBcdTAwRDAgOyAjIExBVElOIENBUElUQUwgTEVUVEVSIEVUSAorJHByZSBkICRwb3N0IDw+IFx1MDBGMCA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIEVUSAorJHByZSBPJy8nICRwb3N0IDw+IFx1MDBEOCA7ICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFNUUk9LRQorJHByZSBvJy8nICRwb3N0IDw+IFx1MDBGOCA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKKyRwcmUgVEggJHBvc3QgPD4gXHUwMERFIDsgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBUSE9STgorJHByZSB0aCAkcG9zdCA8PiBcdTAwRkUgOyAjIExBVElOIFNNQUxMIExFVFRFUiBUSE9STgorJHByZSBPRSAkcG9zdCA8PiBcdTAxNTIgOyAjIExBVElOIENBUElUQUwgTElHQVRVUkUgT0UKKyRwcmUgb2UgJHBvc3QgPD4gXHUwMTUzIDsgIyBMQVRJTiBTTUFMTCBMSUdBVFVSRSBPRQorCiskcHJlIHNzICRwb3N0IDw+IFx1MDBERiA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIFNIQVJQIFMKKworJHByZSBORyAkcG9zdCA8PiBcdTAxNEEgOyAjIExBVElOIENBUElUQUwgTEVUVEVSIEVORworJHByZSBuZyAkcG9zdCA8PiBcdTAxNEIgOyAjIExBVElOIFNNQUxMIExFVFRFUiBFTkcKKworJHByZSBUICRwb3N0IDw+IFx1MDM5OCA7ICMgVEhFVEEKKyRwcmUgdCAkcG9zdCA8PiBcdTAzQjggOyAjIFRIRVRBCiskcHJlIFNIICRwb3N0IDw+IFx1MDFBOSA7ICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRVNICiskcHJlIHNoICRwb3N0IDw+IFx1MDI4MyA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIEVTSAorJHByZSBaSCAkcG9zdCA8PiBcdTAxQjcgOyAjIExBVElOIENBUElUQUwgTEVUVEVSIEVaSAorJHByZSB6aCAkcG9zdCA8PiBcdTAyOTIgOyAjIExBVElOIFNNQUxMIExFVFRFUiBFWkgKKworJHByZSBVICRwb3N0IDw+IFx1MDFCMSA7ICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVVBTSUxPTgorJHByZSB1ICRwb3N0IDw+IFx1MDI4QSA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIFVQU0lMT04KKyRwcmUgQSAkcG9zdCA8PiBcdTAxOEYgOyAjIExBVElOIENBUElUQUwgTEVUVEVSIFNDSFdBCiskcHJlIGEgJHBvc3QgPD4gXHUwMjU5IDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgU0NIV0EKKyRwcmUgTyAkcG9zdCA8PiBcdTAxODYgOyAjIExBVElOIENBUElUQUwgTEVUVEVSIE9QRU4gTworJHByZSBvICRwb3N0IDw+IFx1MDI1NCA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIE9QRU4gTworJHByZSBFICRwb3N0IDw+IFx1MDE5MCA7ICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgT1BFTiBFCiskcHJlIGUgJHBvc3QgPD4gXHUwMjVCIDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgT1BFTiBFCisKKyMgdGhyZWUgdGhhdCBkb24ndCBoYXZlIHVwcGVyY2FzZXMKKworJHByZSAnPycgJHBvc3QgPD4gXHUwMjk0IDsgIyBMQVRJTiBMRVRURVIgR0xPVFRBTCBTVE9QCiskcHJlIGkgJHBvc3QgPD4gXHUwMjZBIDsgIyBMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBJCiskcHJlIHYgJHBvc3QgPD4gXHUwMjhDIDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIFYKKworIyBBZGRpdGlvbmFsIENoYXJhY3RlcnMgdGhhdCBtYXkgYmUgYWRkZWQgaW4gdGhlIGZ1dHVyZQorCisjICRwcmUgWFhYICRwb3N0IDw+IFx1MDMwNiA7ICMgQ09NQklOSU5HIEJSRVZFCisjICRwcmUgWFhYICRwb3N0IDw+IFx1MDMwNyA7ICMgQ09NQklOSU5HIERPVCBBQk9WRQorIyAkcHJlIFhYWCAkcG9zdCA8PiBcdTAzMDkgOyAjIENPTUJJTklORyBIT09LIEFCT1ZFCisjICRwcmUgWFhYICRwb3N0IDw+IFx1MDMwQiA7ICMgQ09NQklOSU5HIERPVUJMRSBBQ1VURSBBQ0NFTlQKKyMgJHByZSBYWFggJHBvc3QgPD4gXHUwMzBDIDsgIyBDT01CSU5JTkcgQ0FST04KKyMgJHByZSBYWFggJHBvc3QgPD4gXHUwMzBGIDsgIyBDT01CSU5JTkcgRE9VQkxFIEdSQVZFIEFDQ0VOVAorIyAkcHJlIFhYWCAkcG9zdCA8PiBcdTAzMTEgOyAjIENPTUJJTklORyBJTlZFUlRFRCBCUkVWRQorIyAkcHJlIFhYWCAkcG9zdCA8PiBcdTAzMTMgOyAjIENPTUJJTklORyBDT01NQSBBQk9WRQorIyAkcHJlIFhYWCAkcG9zdCA8PiBcdTAzMTQgOyAjIENPTUJJTklORyBSRVZFUlNFRCBDT01NQSBBQk9WRQorIyAkcHJlIFhYWCAkcG9zdCA8PiBcdTAzMUIgOyAjIENPTUJJTklORyBIT1JOCisjICRwcmUgWFhYICRwb3N0IDw+IFx1MDMyNCA7ICMgQ09NQklOSU5HIERJQUVSRVNJUyBCRUxPVworIyAkcHJlIFhYWCAkcG9zdCA8PiBcdTAzMjUgOyAjIENPTUJJTklORyBSSU5HIEJFTE9XCisjICRwcmUgWFhYICRwb3N0IDw+IFx1MDMyNiA7ICMgQ09NQklOSU5HIENPTU1BIEJFTE9XCisjICRwcmUgWFhYICRwb3N0IDw+IFx1MDMyOCA7ICMgQ09NQklOSU5HIE9HT05FSworIyAkcHJlIFhYWCAkcG9zdCA8PiBcdTAzMkQgOyAjIENPTUJJTklORyBDSVJDVU1GTEVYIEFDQ0VOVCBCRUxPVworIyAkcHJlIFhYWCAkcG9zdCA8PiBcdTAzMkUgOyAjIENPTUJJTklORyBCUkVWRSBCRUxPVworIyAkcHJlIFhYWCAkcG9zdCA8PiBcdTAzMzAgOyAjIENPTUJJTklORyBUSUxERSBCRUxPVworIyAkcHJlIFhYWCAkcG9zdCA8PiBcdTAzMzEgOyAjIENPTUJJTklORyBNQUNST04gQkVMT1cKKworIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAwQUEgOyAjIEZFTUlOSU5FIE9SRElOQUwgSU5ESUNBVE9SCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDBCQSA7ICMgTUFTQ1VMSU5FIE9SRElOQUwgSU5ESUNBVE9SCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDExMCA7ICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIFNUUk9LRQorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAxMTEgOyAjIExBVElOIFNNQUxMIExFVFRFUiBEIFdJVEggU1RST0tFCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDEyNiA7ICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSCBXSVRIIFNUUk9LRQorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAxMjcgOyAjIExBVElOIFNNQUxMIExFVFRFUiBIIFdJVEggU1RST0tFCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDEzMSA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIERPVExFU1MgSQorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAxMzggOyAjIExBVElOIFNNQUxMIExFVFRFUiBLUkEKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMTNGIDsgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggTUlERExFIERPVAorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAxNDAgOyAjIExBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggTUlERExFIERPVAorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAxNDEgOyAjIExBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBTVFJPS0UKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMTQyIDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIFNUUk9LRQorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAxNDkgOyAjIExBVElOIFNNQUxMIExFVFRFUiBOIFBSRUNFREVEIEJZIEFQT1NUUk9QSEUKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMTY2IDsgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBUIFdJVEggU1RST0tFCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDE2NyA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIFQgV0lUSCBTVFJPS0UKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMTdGIDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgTE9ORyBTCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDE4MCA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIEIgV0lUSCBTVFJPS0UKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMTgxIDsgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBCIFdJVEggSE9PSworIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAxODIgOyAjIExBVElOIENBUElUQUwgTEVUVEVSIEIgV0lUSCBUT1BCQVIKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMTgzIDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgQiBXSVRIIFRPUEJBUgorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAxODQgOyAjIExBVElOIENBUElUQUwgTEVUVEVSIFRPTkUgU0lYCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDE4NSA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIFRPTkUgU0lYCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDE4NyA7ICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIEhPT0sKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMTg4IDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIEhPT0sKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMTg5IDsgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBBRlJJQ0FOIEQKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMThBIDsgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggSE9PSworIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAxOEIgOyAjIExBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBUT1BCQVIKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMThDIDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgRCBXSVRIIFRPUEJBUgorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAxOEQgOyAjIExBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgREVMVEEKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMThFIDsgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBSRVZFUlNFRCBFCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDE5MSA7ICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRiBXSVRIIEhPT0sKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMTkyIDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgRiBXSVRIIEhPT0sKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMTkzIDsgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBHIFdJVEggSE9PSworIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAxOTQgOyAjIExBVElOIENBUElUQUwgTEVUVEVSIEdBTU1BCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDE5NSA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIEhWCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDE5NiA7ICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSU9UQQorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAxOTcgOyAjIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBTVFJPS0UKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMTk4IDsgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBLIFdJVEggSE9PSworIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAxOTkgOyAjIExBVElOIFNNQUxMIExFVFRFUiBLIFdJVEggSE9PSworIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAxOUEgOyAjIExBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggQkFSCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDE5QiA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIExBTUJEQSBXSVRIIFNUUk9LRQorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAxOUMgOyAjIExBVElOIENBUElUQUwgTEVUVEVSIFRVUk5FRCBNCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDE5RCA7ICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIExFRlQgSE9PSworIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAxOUUgOyAjIExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggTE9ORyBSSUdIVCBMRUcKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMTlGIDsgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggTUlERExFIFRJTERFCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDFBMiA7ICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgT0kKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMUEzIDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgT0kKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMUE0IDsgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBQIFdJVEggSE9PSworIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAxQTUgOyAjIExBVElOIFNNQUxMIExFVFRFUiBQIFdJVEggSE9PSworIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAxQTYgOyAjIExBVElOIExFVFRFUiBZUgorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAxQTcgOyAjIExBVElOIENBUElUQUwgTEVUVEVSIFRPTkUgVFdPCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDFBOCA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIFRPTkUgVFdPCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDFBQSA7ICMgTEFUSU4gTEVUVEVSIFJFVkVSU0VEIEVTSCBMT09QCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDFBQiA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIFQgV0lUSCBQQUxBVEFMIEhPT0sKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMUFDIDsgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBUIFdJVEggSE9PSworIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAxQUQgOyAjIExBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggSE9PSworIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAxQUUgOyAjIExBVElOIENBUElUQUwgTEVUVEVSIFQgV0lUSCBSRVRST0ZMRVggSE9PSworIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAxQjIgOyAjIExBVElOIENBUElUQUwgTEVUVEVSIFYgV0lUSCBIT09LCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDFCMyA7ICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIEhPT0sKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMUI0IDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIEhPT0sKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMUI1IDsgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggU1RST0tFCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDFCNiA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBTVFJPS0UKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMUI4IDsgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBFWkggUkVWRVJTRUQKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMUI5IDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgRVpIIFJFVkVSU0VECisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDFCQSA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIEVaSCBXSVRIIFRBSUwKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMUJCIDsgIyBMQVRJTiBMRVRURVIgVFdPIFdJVEggU1RST0tFCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDFCQyA7ICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVE9ORSBGSVZFCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDFCRCA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIFRPTkUgRklWRQorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAxQkUgOyAjIExBVElOIExFVFRFUiBJTlZFUlRFRCBHTE9UVEFMIFNUT1AgV0lUSCBTVFJPS0UKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMUJGIDsgIyBMQVRJTiBMRVRURVIgV1lOTgorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAxQzAgOyAjIExBVElOIExFVFRFUiBERU5UQUwgQ0xJQ0sKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMUMxIDsgIyBMQVRJTiBMRVRURVIgTEFURVJBTCBDTElDSworIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAxQzIgOyAjIExBVElOIExFVFRFUiBBTFZFT0xBUiBDTElDSworIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAxQzMgOyAjIExBVElOIExFVFRFUiBSRVRST0ZMRVggQ0xJQ0sKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMUM0IDsgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBEWiBXSVRIIENBUk9OCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDFDNSA7ICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIFNNQUxMIExFVFRFUiBaIFdJVEggQ0FST04KKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMUM2IDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgRFogV0lUSCBDQVJPTgorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAxQzcgOyAjIExBVElOIENBUElUQUwgTEVUVEVSIExKCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDFDOCA7ICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIFNNQUxMIExFVFRFUiBKCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDFDOSA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIExKCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDFDQSA7ICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTkoKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMUNCIDsgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggU01BTEwgTEVUVEVSIEoKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMUNDIDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgTkoKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMUREIDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIEUKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMUU0IDsgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBHIFdJVEggU1RST0tFCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDFFNSA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIEcgV0lUSCBTVFJPS0UKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMUYxIDsgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBEWgorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAxRjIgOyAjIExBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBTTUFMTCBMRVRURVIgWgorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAxRjMgOyAjIExBVElOIFNNQUxMIExFVFRFUiBEWgorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAxRjYgOyAjIExBVElOIENBUElUQUwgTEVUVEVSIEhXQUlSCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDFGNyA7ICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgV1lOTgorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAyMUMgOyAjIExBVElOIENBUElUQUwgTEVUVEVSIFlPR0gKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMjFEIDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgWU9HSAorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAyMjIgOyAjIExBVElOIENBUElUQUwgTEVUVEVSIE9VCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDIyMyA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIE9VCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDIyNCA7ICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIEhPT0sKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMjI1IDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIEhPT0sKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMjUwIDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIEEKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMjUxIDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgQUxQSEEKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMjUyIDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIEFMUEhBCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDI1MyA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIEIgV0lUSCBIT09LCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDI1NSA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDVVJMCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDI1NiA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIEQgV0lUSCBUQUlMCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDI1NyA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIEQgV0lUSCBIT09LCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDI1OCA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIFJFVkVSU0VEIEUKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMjVBIDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgU0NIV0EgV0lUSCBIT09LCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDI1QyA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIFJFVkVSU0VEIE9QRU4gRQorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAyNUQgOyAjIExBVElOIFNNQUxMIExFVFRFUiBSRVZFUlNFRCBPUEVOIEUgV0lUSCBIT09LCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDI1RSA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIENMT1NFRCBSRVZFUlNFRCBPUEVOIEUKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMjVGIDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgRE9UTEVTUyBKIFdJVEggU1RST0tFCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDI2MCA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIEcgV0lUSCBIT09LCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDI2MSA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIFNDUklQVCBHCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDI2MiA7ICMgTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgRworIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAyNjMgOyAjIExBVElOIFNNQUxMIExFVFRFUiBHQU1NQQorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAyNjQgOyAjIExBVElOIFNNQUxMIExFVFRFUiBSQU1TIEhPUk4KKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMjY1IDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIEgKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMjY2IDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgSCBXSVRIIEhPT0sKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMjY3IDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgSEVORyBXSVRIIEhPT0sKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMjY4IDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIFNUUk9LRQorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAyNjkgOyAjIExBVElOIFNNQUxMIExFVFRFUiBJT1RBCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDI2QiA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBNSURETEUgVElMREUKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMjZDIDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIEJFTFQKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMjZEIDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIFJFVFJPRkxFWCBIT09LCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDI2RSA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIExFWkgKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMjZGIDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIE0KKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMjcwIDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIE0gV0lUSCBMT05HIExFRworIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAyNzEgOyAjIExBVElOIFNNQUxMIExFVFRFUiBNIFdJVEggSE9PSworIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAyNzIgOyAjIExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggTEVGVCBIT09LCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDI3MyA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBSRVRST0ZMRVggSE9PSworIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAyNzQgOyAjIExBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIE4KKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMjc1IDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgQkFSUkVEIE8KKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMjc2IDsgIyBMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBPRQorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAyNzcgOyAjIExBVElOIFNNQUxMIExFVFRFUiBDTE9TRUQgT01FR0EKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMjc4IDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgUEhJCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDI3OSA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIFRVUk5FRCBSCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDI3QSA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIFRVUk5FRCBSIFdJVEggTE9ORyBMRUcKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMjdCIDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIFIgV0lUSCBIT09LCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDI3QyA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBMT05HIExFRworIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAyN0QgOyAjIExBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggVEFJTAorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAyN0UgOyAjIExBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggRklTSEhPT0sKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMjdGIDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgUkVWRVJTRUQgUiBXSVRIIEZJU0hIT09LCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDI4MCA7ICMgTEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgUgorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAyODEgOyAjIExBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIElOVkVSVEVEIFIKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMjgyIDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIEhPT0sKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMjg0IDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgRE9UTEVTUyBKIFdJVEggU1RST0tFIEFORCBIT09LCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDI4NSA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIFNRVUFUIFJFVkVSU0VEIEVTSAorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAyODYgOyAjIExBVElOIFNNQUxMIExFVFRFUiBFU0ggV0lUSCBDVVJMCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDI4NyA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIFRVUk5FRCBUCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDI4OCA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIFQgV0lUSCBSRVRST0ZMRVggSE9PSworIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAyODkgOyAjIExBVElOIFNNQUxMIExFVFRFUiBVIEJBUgorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAyOEIgOyAjIExBVElOIFNNQUxMIExFVFRFUiBWIFdJVEggSE9PSworIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAyOEQgOyAjIExBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgVworIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAyOEUgOyAjIExBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgWQorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAyOEYgOyAjIExBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIFkKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMjkwIDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIFJFVFJPRkxFWCBIT09LCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDI5MSA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBDVVJMCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDI5MyA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIEVaSCBXSVRIIENVUkwKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMjk0IDsgIyBMQVRJTiBMRVRURVIgR0xPVFRBTCBTVE9QCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDI5NSA7ICMgTEFUSU4gTEVUVEVSIFBIQVJZTkdFQUwgVk9JQ0VEIEZSSUNBVElWRQorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAyOTYgOyAjIExBVElOIExFVFRFUiBJTlZFUlRFRCBHTE9UVEFMIFNUT1AKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMjk3IDsgIyBMQVRJTiBMRVRURVIgU1RSRVRDSEVEIEMKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMjk4IDsgIyBMQVRJTiBMRVRURVIgQklMQUJJQUwgQ0xJQ0sKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMjk5IDsgIyBMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBCCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDI5QSA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIENMT1NFRCBPUEVOIEUKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMjlCIDsgIyBMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBHIFdJVEggSE9PSworIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAyOUMgOyAjIExBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIEgKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMjlEIDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgSiBXSVRIIENST1NTRUQtVEFJTAorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAyOUUgOyAjIExBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgSworIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAyOUYgOyAjIExBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIEwKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMkEwIDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgUSBXSVRIIEhPT0sKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMkExIDsgIyBMQVRJTiBMRVRURVIgR0xPVFRBTCBTVE9QIFdJVEggU1RST0tFCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDJBMiA7ICMgTEFUSU4gTEVUVEVSIFJFVkVSU0VEIEdMT1RUQUwgU1RPUCBXSVRIIFNUUk9LRQorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAyQTMgOyAjIExBVElOIFNNQUxMIExFVFRFUiBEWiBESUdSQVBICisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDJBNCA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIERFWkggRElHUkFQSAorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAyQTUgOyAjIExBVElOIFNNQUxMIExFVFRFUiBEWiBESUdSQVBIIFdJVEggQ1VSTAorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAyQTYgOyAjIExBVElOIFNNQUxMIExFVFRFUiBUUyBESUdSQVBICisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDJBNyA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIFRFU0ggRElHUkFQSAorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAyQTggOyAjIExBVElOIFNNQUxMIExFVFRFUiBUQyBESUdSQVBIIFdJVEggQ1VSTAorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAyQTkgOyAjIExBVElOIFNNQUxMIExFVFRFUiBGRU5HIERJR1JBUEgKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMkFBIDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgTFMgRElHUkFQSAorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAyQUIgOyAjIExBVElOIFNNQUxMIExFVFRFUiBMWiBESUdSQVBICisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDJBQyA7ICMgTEFUSU4gTEVUVEVSIEJJTEFCSUFMIFBFUkNVU1NJVkUKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMkFEIDsgIyBMQVRJTiBMRVRURVIgQklERU5UQUwgUEVSQ1VTU0lWRQorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAyQjAgOyAjIE1PRElGSUVSIExFVFRFUiBTTUFMTCBICisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDJCMSA7ICMgTU9ESUZJRVIgTEVUVEVSIFNNQUxMIEggV0lUSCBIT09LCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDJCMiA7ICMgTU9ESUZJRVIgTEVUVEVSIFNNQUxMIEoKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMkIzIDsgIyBNT0RJRklFUiBMRVRURVIgU01BTEwgUgorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAyQjQgOyAjIE1PRElGSUVSIExFVFRFUiBTTUFMTCBUVVJORUQgUgorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAyQjUgOyAjIE1PRElGSUVSIExFVFRFUiBTTUFMTCBUVVJORUQgUiBXSVRIIEhPT0sKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMkI2IDsgIyBNT0RJRklFUiBMRVRURVIgU01BTEwgQ0FQSVRBTCBJTlZFUlRFRCBSCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDJCNyA7ICMgTU9ESUZJRVIgTEVUVEVSIFNNQUxMIFcKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMkI4IDsgIyBNT0RJRklFUiBMRVRURVIgU01BTEwgWQorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAyRTAgOyAjIE1PRElGSUVSIExFVFRFUiBTTUFMTCBHQU1NQQorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAyRTEgOyAjIE1PRElGSUVSIExFVFRFUiBTTUFMTCBMCisjICRwcmUgWVlZICRwb3N0IDw+IFx1MDJFMiA7ICMgTU9ESUZJRVIgTEVUVEVSIFNNQUxMIFMKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUwMkUzIDsgIyBNT0RJRklFUiBMRVRURVIgU01BTEwgWAorIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTAyRTQgOyAjIE1PRElGSUVSIExFVFRFUiBTTUFMTCBSRVZFUlNFRCBHTE9UVEFMIFNUT1AKKyMgJHByZSBZWVkgJHBvc3QgPD4gXHUxRTlBIDsgIyBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFJJR0hUIEhBTEYgUklORworIyAkcHJlIFlZWSAkcG9zdCA8PiBcdTIwN0YgOyAjIFNVUEVSU0NSSVBUIExBVElOIFNNQUxMIExFVFRFUiBOCisKKzo6IE5GQyAoTkZEKSA7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9UcmFuc2xpdGVyYXRvcl9BbnlfUHVibGlzaGluZy50eHQgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL1RyYW5zbGl0ZXJhdG9yX0FueV9QdWJsaXNoaW5nLnR4dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42YWY5MWVlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9UcmFuc2xpdGVyYXRvcl9BbnlfUHVibGlzaGluZy50eHQKQEAgLTAsMCArMSwzOCBAQAor77u/Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENvcHlyaWdodCAoYykgMTk5OS0yMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisjIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9BdHRpYy9UcmFuc2xpdGVyYXRvcl9BbnlfUHVibGlzaGluZy50eHQsdiAkCisjICREYXRlOiAyMDAxLzEwLzIzIDAwOjIzOjQ2ICQKKyMgJFJldmlzaW9uOiAxLjQgJAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMgVGVzdCBjYXNlCisjICJUaGUiICIocXVpY2spIiAoJ2Jyb3duJykgYGZveCcgYCBqdW1wZWQgLS0gICAgICJvdmVyPyIKKworIyBWYXJpYWJsZXMKKworJHNpbmdsZSA9IFwnIDsKKyRzcGFjZSA9ICcgJyA7CiskZG91YmxlID0gXCIgOworJGJhY2sgPSBcYCA7CiskdGFiID0gJ1x1MDAwOCcgOworJG1ha2VSaWdodCA9IFtbOlo6XVs6UHM6XVs6UGk6XSRdIDsKKworIyBmaXggVU5JWCBxdW90ZXMKKworJGJhY2sgJGJhY2sgPiDigJwgOworJGJhY2sgPiDigJggOworCisjIGZpeCB0eXBld3JpdGVyIHF1b3RlcywgYnkgY29udGV4dAorCiskbWFrZVJpZ2h0IHskZG91YmxlfSA8PiDigJwgOworJGRvdWJsZSA8PiDigJ0gOworCiskbWFrZVJpZ2h0IHskc2luZ2xlfSA8PiDigJggOworJHNpbmdsZSA8PiDigJk7CisKKyMgZml4IG11bHRpcGxlIHNwYWNlcyBhbmQgaHlwaGVucworCiskc3BhY2UgeyRzcGFjZX0gPiA7CisnLS0nIDw+IOKAlCA7CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL1RyYW5zbGl0ZXJhdG9yX0FyYWJpY19MYXRpbi50eHQgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL1RyYW5zbGl0ZXJhdG9yX0FyYWJpY19MYXRpbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc0YzBjZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfQXJhYmljX0xhdGluLnR4dApAQCAtMCwwICsxLDE1MCBAQAor77u/Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENvcHlyaWdodCAoYykgMTk5OS0yMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisjIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9BdHRpYy9UcmFuc2xpdGVyYXRvcl9BcmFiaWNfTGF0aW4udHh0LHYgJAorIyAkRGF0ZTogMjAwMi8wNy8xNSAyMzoyNjoyNiAkCisjICRSZXZpc2lvbjogMS4zICQKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIEdlbmVyYWxseSBmb2xsb3dzIFVOR0VHTiA8aHR0cDovL3d3dy5la2kuZWUvd2dycy9yb20xX2FyLnBkZj4KKyMgT2NjYXNpb25hbGx5IGRldmlhdGVzIGluIHRoZSBkaXJlY3Rpb24gb2YgSVNPIDIzMyA8aHR0cDovL2hvbWVwYWdlLm1hYy5jb20vc2lyYmlua3MvcGRmL0FyYWJpYy5wZGY+CisjIGEpIHdoZXJlIHJlcXVpcmVkIGZvciBkaXNhbWJpZ3VhdGlvbi4KKyMgYikgd2l0aCB1bmRlcmRvdCBpbnN0ZWFkIG9mIGNlZGlsbGEgZm9yIGxldHRlciBsaWtlIFNBRCwgc2luY2UKKyMgICAgIHRob3NlIGFyZSBleHBsaWNpdGx5IGluIFVuaWNvZGUgZm9yIHRyYW5zbGl0ZXJhdGlvbi4KKyMgYykgd2l0aCBleHRyYSBub24tQXJhYmljLWxhbmd1YWdlIGxldHRlcnMsIGxpa2UgUEVICisKKyMgRG9lcyAqbm90KiBkbyBhc3NpbWlsYXRpb24gb2YgImFsIiwgbm9yIGh5cGhlbmF0aW9uLgorIyBXaGlsZSBpdCBjb3VsZCBiZSBkb25lLCB3ZSBuZWVkIHRvIGRldGVybWluZSB3aGV0aGVyIGEgcHJlZml4ICJhbCIgY291bGQKKyMgb2NjdXIgb3RoZXIgdGhhbiBhcyB0aGUgZGVmaW5pdGUgYXJ0aWNsZSAoc2luY2Ugbm8gc3BhY2UgaXMgdXNlZCkuCisKKzo6IFtbOkFyYWJpYzpdIFvigI7igb9cdTA2MENcdTA2MUJcdTA2MUZcdTA2NDBcdTA2NEItXHUwNjU1XHUwNjYwLVx1MDY2Q1x1MDZGMC1cdTA2RjlcdUZERkNdXSA7Cis6OiBORktEIChORkMpOworJGRpc2FtYmlnID0gIMyxIDsgCiskZGlzYW1iaWcyID0gIMywIDsKKyR1bmRlciA9ICDMoyA7CisKKyRub3RBYm92ZSA9IFtbOl5jY2M9MDpdJls6XmNjYz0yMzA6XV07CisKKyMgbm9uLWxldHRlcnMKKworINmrIDw+ICcuJyAkZGlzYW1iaWcgOyAjIEFSQUJJQyBERUNJTUFMIFNFUEFSQVRPUgorINmsIDw+ICcsJyAkZGlzYW1iaWcgOyAjIEFSQUJJQyBUSE9VU0FORFMgU0VQQVJBVE9SCisjICDZrSA8PiA7ICMgQVJBQklDIEZJVkUgUE9JTlRFRCBTVEFSIC8vIG5vIG5lZWQgdG8gdHJhbnNsaXRlcmF0ZQorCivYjCA8PiAnLCcgOyAjIEFSQUJJQyBDT01NQQorINibIDw+ICc7JyA7ICMgQVJBQklDIFNFTUlDT0xPTgorINifIDw+ICc/JyA7ICMgQVJBQklDIFFVRVNUSU9OIE1BUksKKyDZqiA8PiAnJScgOyAjIEFSQUJJQyBQRVJDRU5UIFNJR04KKworINuwIDw+IDAgJGRpc2FtYmlnIDsgIyBFWFRFTkRFRCBBUkFCSUMtSU5ESUMgRElHSVQgWkVSTworINuxIDw+IDEgJGRpc2FtYmlnIDsgIyBFWFRFTkRFRCBBUkFCSUMtSU5ESUMgRElHSVQgT05FCisg27IgPD4gMiAkZGlzYW1iaWcgOyAjIEVYVEVOREVEIEFSQUJJQy1JTkRJQyBESUdJVCBUV08KKyDbsyA8PiAzICRkaXNhbWJpZyA7ICMgRVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIFRIUkVFCisg27QgPD4gNCAkZGlzYW1iaWcgOyAjIEVYVEVOREVEIEFSQUJJQy1JTkRJQyBESUdJVCBGT1VSCisg27UgPD4gNSAkZGlzYW1iaWcgOyAjIEVYVEVOREVEIEFSQUJJQy1JTkRJQyBESUdJVCBGSVZFCisg27YgPD4gNiAkZGlzYW1iaWcgOyAjIEVYVEVOREVEIEFSQUJJQy1JTkRJQyBESUdJVCBTSVgKKyDbtyA8PiA3ICRkaXNhbWJpZyA7ICMgRVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIFNFVkVOCisg27ggPD4gOCAkZGlzYW1iaWcgOyAjIEVYVEVOREVEIEFSQUJJQy1JTkRJQyBESUdJVCBFSUdIVAorINu5IDw+IDkgJGRpc2FtYmlnIDsgIyBFWFRFTkRFRCBBUkFCSUMtSU5ESUMgRElHSVQgTklORQorCisg2aAgPD4gMCA7ICMgQVJBQklDLUlORElDIERJR0lUIFpFUk8KKyDZoSA8PiAxIDsgIyBBUkFCSUMtSU5ESUMgRElHSVQgT05FCisg2aIgPD4gMiA7ICMgQVJBQklDLUlORElDIERJR0lUIFRXTworINmjIDw+IDMgOyAjIEFSQUJJQy1JTkRJQyBESUdJVCBUSFJFRQorINmkIDw+IDQgOyAjIEFSQUJJQy1JTkRJQyBESUdJVCBGT1VSCisg2aUgPD4gNSA7ICMgQVJBQklDLUlORElDIERJR0lUIEZJVkUKKyDZpiA8PiA2IDsgIyBBUkFCSUMtSU5ESUMgRElHSVQgU0lYCisg2acgPD4gNyA7ICMgQVJBQklDLUlORElDIERJR0lUIFNFVkVOCisg2aggPD4gOCA7ICMgQVJBQklDLUlORElDIERJR0lUIEVJR0hUCisg2akgPD4gOSA7ICMgQVJBQklDLUlORElDIERJR0lUIE5JTkUKKworIyBsZXR0ZXJzCisKKyMgbG9uZyB2b3dlbHMKKyAg2Y7Ypzw+IGHMhCA7ICMgQVJBQklDIEZBVEhBLCBBUkFCSUMgTEVUVEVSIEFMRUYKKyAg2Y/ZiCA8PiB1zIQgOyAjIEFSQUJJQyBEQU1NQSwgQVJBQklDIExFVFRFUiBXQVcKKyDZkNmKIDw+IGnMhCA7ICMgQVJBQklDIEtBU1JBLCBBUkFCSUMgTEVUVEVSIFlFSAorCisjIGxvbmdlciBpdGVtcyBtb3ZlZCBoZXJlIHRvIHByZXZlbnQgbWFza2luZworINirIDw+IHQgaCAkZGlzYW1iaWcgOyAjIEFSQUJJQyBMRVRURVIgVEhFSAorINiwIDw+IGQgaCAkZGlzYW1iaWcgOyAjIEFSQUJJQyBMRVRURVIgVEhBTAorINi0IDw+IHMgaCAkZGlzYW1iaWcgOyAjIEFSQUJJQyBMRVRURVIgU0hFRU4KKyDYtSA8PiBzICR1bmRlciA7ICMgQVJBQklDIExFVFRFUiBTQUQKKyDYtiA8PiBkICR1bmRlciA7ICMgQVJBQklDIExFVFRFUiBEQUQKKyDYtyA8PiB0ICR1bmRlciA7ICMgQVJBQklDIExFVFRFUiBUQUgKKyDYuCA8PiB6ICR1bmRlciA7ICMgQVJBQklDIExFVFRFUiBaQUgKKyDYuiA8PiBnIGggJGRpc2FtYmlnIDsgIyBBUkFCSUMgTEVUVEVSIEdIQUlOCisKKyMgV0FSTklORzogc3BlY2lhbCBjYXNlCisjIDx0LCB1bWxhdXQsIGhhbGYtcmluZyBiZWxvdz4gd2lsbCBiZSBjYW5vbmljYWxseSBvcmRlcmVkIGFzIDx0LCBoYWxmLXJpbmcgYmVsb3csIHVtbGF1dD4KKyMgc28gb24gdGhlIHJldHVybiwgd2UgaGF2ZSB0byBza2lwIG92ZXIgKGJ1dCBwcmVzZXJ2ZSkgdGhlIGhhbGYtcmluZyBiZWxvdyAob3Igb3RoZXJzIGxpa2UgaXQpCisjINip2ZUgPCB0zLnMiCA7ICMgTEFUSU4gU01BTEwgTEVUVEVSIFQsIENPTUJJTklORyBSSUdIVCBIQUxGIFJJTkcgQkVMT1csIENPTUJJTklORyBESUFFUkVTSVMKKworINipIDw+IHQgXHUwMzA4IDsgIyBBUkFCSUMgTEVUVEVSIFRFSCBNQVJCVVRBCisg2KkgfCAkMSA8IHQgKCRub3RBYm92ZSspIFx1MDMwOCA7ICMgQVJBQklDIExFVFRFUiBURUggTUFSQlVUQQorCisjIG5vbi1BcmFiaWMgbGFuZ3VhZ2UKKyDamCA8PiB6IGggJGRpc2FtYmlnIDsgIyBBUkFCSUMgTEVUVEVSIEpFSAorINqtIDw+IG4gJGRpc2FtYmlnIGcgOyAjIEFSQUJJQyBMRVRURVIgTkcKKyDbiyA8PiB2ICRkaXNhbWJpZyA7ICMgQVJBQklDIExFVFRFUiBWRQorINuMIDw+IHkgJGRpc2FtYmlnMiA7ICMgQVJBQklDIExFVFRFUiBGQVJTSSBZRUgKKworIyBBcmFiaWMgbGFuZ3VhZ2UKKworINihIDw+IMq+IDsgIyBBUkFCSUMgTEVUVEVSIEhBTVpBCisg2KcgPD4gYSAkdW5kZXI7ICMgQVJBQklDIExFVFRFUiBBTEVGCisg2KggPD4gYiA7ICMgQVJBQklDIExFVFRFUiBCRUgKKyDYqiA8PiB0IDsgIyBBUkFCSUMgTEVUVEVSIFRFSAorINisIDw+IGogOyAjIEFSQUJJQyBMRVRURVIgSkVFTQorINitIDw+IGggJHVuZGVyIDsgIyBBUkFCSUMgTEVUVEVSIEhBSAorINiuIDw+IGsgaCAkZGlzYW1iaWcgOyAjIEFSQUJJQyBMRVRURVIgS0hBSAorINivIDw+IGQgOyAjIEFSQUJJQyBMRVRURVIgREFMCisg2LEgPD4gciA7ICMgQVJBQklDIExFVFRFUiBSRUgKKyDYsiA8PiB6IDsgIyBBUkFCSUMgTEVUVEVSIFpBSU4KKyDYsyA8PiBzIDsgIyBBUkFCSUMgTEVUVEVSIFNFRU4KKyDYuSA8PiDKvyA7ICMgQVJBQklDIExFVFRFUiBBSU4KKyAg2YAgPiA7ICMgQVJBQklDIFRBVFdFRUwKKyDZgSA8PiBmIDsgIyBBUkFCSUMgTEVUVEVSIEZFSAorINmCIDw+IHEgOyAjIEFSQUJJQyBMRVRURVIgUUFGCisg2YMgPD4gayA7ICMgQVJBQklDIExFVFRFUiBLQUYKKyDZhCA8PiBsIDsgIyBBUkFCSUMgTEVUVEVSIExBTQorINmFIDw+IG0gOyAjIEFSQUJJQyBMRVRURVIgTUVFTQorINmGIDw+IG4gOyAjIEFSQUJJQyBMRVRURVIgTk9PTgorINmHIDw+IGggOyAjIEFSQUJJQyBMRVRURVIgSEVICisg2YggPD4gdyA7ICMgQVJBQklDIExFVFRFUiBXQVcKKyDZiSA8PiB5ICRkaXNhbWJpZyA7ICMgQVJBQklDIExFVFRFUiBBTEVGIE1BS1NVUkEKKyDZiiA8PiB5IDsgIyBBUkFCSUMgTEVUVEVSIFlFSAorINmLIDw+IGHigb8gOyAjIEFSQUJJQyBGQVRIQVRBTgorINmMIDw+IHXigb8gOyAjIEFSQUJJQyBEQU1NQVRBTgorINmNIDw+IGnigb8gOyAjIEFSQUJJQyBLQVNSQVRBTgorINmOIDw+IGEgOyAjIEFSQUJJQyBGQVRIQQorINmPIDw+IHUgOyAjIEFSQUJJQyBEQU1NQQorINmQIDw+IGkgOyAjIEFSQUJJQyBLQVNSQQorINmRIDw+ICAgzIMgOyAjIEFSQUJJQyBTSEFEREEKKyDZkiA8PiAgIMyKIDsgIyBBUkFCSUMgU1VLVU4KKworIyBzcGVjaWFsIGNvbWJpbmluZyBtYXJrcworINmTIDw+ICDMgiA7ICMgQVJBQklDIE1BRERBSCBBQk9WRQorINmUIDw+ICDMiSA7ICMgQVJBQklDIEhBTVpBIEFCT1ZFCisg2ZUgPD4gIMy5IDsgIyBBUkFCSUMgSEFNWkEgQkVMT1cKKworIyBTb21lIG5vbi1BcmFiaWMgbGFuZ3VhZ2UgKG5vdCBpbiBVTkdFR04pCisg2b4gPD4gcCA7ICMgQVJBQklDIExFVFRFUiBQRUgKKyDahiA8PiBjIGggJGRpc2FtYmlnIDsgIyBBUkFCSUMgTEVUVEVSIFRDSEVICisg2qQgPD4gdiA7ICMgQVJBQklDIExFVFRFUiBWRUgKKyMg2qUgPD4gdiAkZGlzYW1iaWcgOyAjIEFSQUJJQyBMRVRURVIgRkVIIFdJVEggVEhSRUUgRE9UUyBCRUxPVworIyDaoiA8PiBmICRkaXNhbWJpZyA7ICMgQVJBQklDIExFVFRFUiBGRUggV0lUSCBET1QgTU9WRUQgQkVMT1cKKyDaryA8PiBnIDsgIyBBUkFCSUMgTEVUVEVSIEdBRgorCisjIGZhbGxiYWNrcworfCBzIDwgYyB9IFtlaXldOworfCBrIDwgYyA7Cit8IGkgPCBlIDsKK3wgdSA8IG8gOworfCBrcyA8IHggOworfCBuIDwg4oCO4oG/OworCis6OiAobG93ZXIpIDsKKzo6TkZDIChORkQpOworOjogKCBbWzpMYXRpbjpdIFslLC4wLTk7P1x1MDJCRS1cdTAyQkZcdTAzMDItXHUwMzA0XHUwMzA4LVx1MDMwQVx1MDMyM1x1MDMzMC1cdTAzMzFcdTAzMzlcdTAzN0VdXSApOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfQmVuZ2FsaV9JbnRlckluZGljLnR4dCBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfQmVuZ2FsaV9JbnRlckluZGljLnR4dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4zODNkODhmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9UcmFuc2xpdGVyYXRvcl9CZW5nYWxpX0ludGVySW5kaWMudHh0CkBAIC0wLDAgKzEsMTA2IEBACisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ29weXJpZ2h0IChjKSAxOTk5LTIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyMgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0F0dGljL1RyYW5zbGl0ZXJhdG9yX0JlbmdhbGlfSW50ZXJJbmRpYy50eHQsdiAkCisjICREYXRlOiAyMDAyLzA5LzE5IDE4OjExOjIzICQKKyMgJFJldmlzaW9uOiAxLjExICQKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIEJlbmdhbGktSW50ZXJJbmRpYworCitcdTA5QzdcdTA5QkU+XHVFMDRCOyAjIFZPV0VMIFNJR04gTworXHUwOUM3XHUwOUQ3Plx1RTA0QzsgIyBWT1dFTCBTSUdOIEFVCitcdTA5ODE+XHVFMDAxOyAjIFNJR04gQ0FORFJBQklORFUKK1x1MDk4Mj5cdUUwMDI7ICMgU0lHTiBBTlVTVkFSQQorXHUwOTgzPlx1RTAwMzsgIyBTSUdOIFZJU0FSR0EKK1x1MDk4NT5cdUUwMDU7ICMgTEVUVEVSIEEKK1x1MDk4Nj5cdUUwMDY7ICMgTEVUVEVSIEFBCitcdTA5ODc+XHVFMDA3OyAjIExFVFRFUiBJCitcdTA5ODg+XHVFMDA4OyAjIExFVFRFUiBJSQorXHUwOTg5Plx1RTAwOTsgIyBMRVRURVIgVQorXHUwOThBPlx1RTAwQTsgIyBMRVRURVIgVVUKK1x1MDk4Qj5cdUUwMEI7ICMgTEVUVEVSIFZPQ0FMSUMgUgorXHUwOThDPlx1RTAwQzsgIyBMRVRURVIgVk9DQUxJQyBMCitcdTA5OEY+XHVFMDBGOyAjIExFVFRFUiBFCitcdTA5OTA+XHVFMDEwOyAjIExFVFRFUiBBSQorXHUwOTkzPlx1RTAxMzsgIyBMRVRURVIgTworXHUwOTk0Plx1RTAxNDsgIyBMRVRURVIgQVUKK1x1MDk5NT5cdUUwMTU7ICMgTEVUVEVSIEtBCitcdTA5OTY+XHVFMDE2OyAjIExFVFRFUiBLSEEKK1x1MDk5Nz5cdUUwMTc7ICMgTEVUVEVSIEdBCitcdTA5OTg+XHVFMDE4OyAjIExFVFRFUiBHSEEKK1x1MDk5OT5cdUUwMTk7ICMgTEVUVEVSIE5HQQorXHUwOTlBPlx1RTAxQTsgIyBMRVRURVIgQ0EKK1x1MDk5Qj5cdUUwMUI7ICMgTEVUVEVSIENIQQorXHUwOTlDPlx1RTAxQzsgIyBMRVRURVIgSkEKK1x1MDk5RD5cdUUwMUQ7ICMgTEVUVEVSIEpIQQorXHUwOTlFPlx1RTAxRTsgIyBMRVRURVIgTllBCitcdTA5OUY+XHVFMDFGOyAjIExFVFRFUiBUVEEKK1x1MDlBMD5cdUUwMjA7ICMgTEVUVEVSIFRUSEEKK1x1MDlBMT5cdUUwMjE7ICMgTEVUVEVSIEREQQorXHUwOUEyPlx1RTAyMjsgIyBMRVRURVIgRERIQQorXHUwOUEzPlx1RTAyMzsgIyBMRVRURVIgTk5BCitcdTA5QTQ+XHVFMDI0OyAjIExFVFRFUiBUQQorXHUwOUE1Plx1RTAyNTsgIyBMRVRURVIgVEhBCitcdTA5QTY+XHVFMDI2OyAjIExFVFRFUiBEQQorXHUwOUE3Plx1RTAyNzsgIyBMRVRURVIgREhBCitcdTA5QTg+XHVFMDI4OyAjIExFVFRFUiBOQQorXHUwOUFBPlx1RTAyQTsgIyBMRVRURVIgUEEKK1x1MDlBQj5cdUUwMkI7ICMgTEVUVEVSIFBIQQorXHUwOUFDPlx1RTAyQzsgIyBMRVRURVIgQkEKK1x1MDlBRD5cdUUwMkQ7ICMgTEVUVEVSIEJIQQorXHUwOUFFPlx1RTAyRTsgIyBMRVRURVIgTUEKK1x1MDlBRj5cdUUwMkY7ICMgTEVUVEVSIFlBCitcdTA5QjA+XHVFMDMwOyAjIExFVFRFUiBSQQorXHUwOUIyPlx1RTAzMjsgIyBMRVRURVIgTEEKK1x1MDlCNj5cdUUwMzY7ICMgTEVUVEVSIFNIQQorXHUwOUI3Plx1RTAzNzsgIyBMRVRURVIgU1NBCitcdTA5Qjg+XHVFMDM4OyAjIExFVFRFUiBTQQorXHUwOUI5Plx1RTAzOTsgIyBMRVRURVIgSEEKK1x1MDlCQz5cdUUwM0M7ICMgU0lHTiBOVUtUQQorXHUwOUJFPlx1RTAzRTsgIyBWT1dFTCBTSUdOIEFBCitcdTA5QkY+XHVFMDNGOyAjIFZPV0VMIFNJR04gSQorXHUwOUMwPlx1RTA0MDsgIyBWT1dFTCBTSUdOIElJCitcdTA5QzE+XHVFMDQxOyAjIFZPV0VMIFNJR04gVQorXHUwOUMyPlx1RTA0MjsgIyBWT1dFTCBTSUdOIFVVCitcdTA5QzM+XHVFMDQzOyAjIFZPV0VMIFNJR04gVk9DQUxJQyBSCitcdTA5QzQ+XHVFMDQ0OyAjIFZPV0VMIFNJR04gVk9DQUxJQyBSUgorXHUwOUM3Plx1RTA0NzsgIyBWT1dFTCBTSUdOIEUKK1x1MDlDOD5cdUUwNDg7ICMgVk9XRUwgU0lHTiBBSQorXHUwOUNCPlx1RTA0QjsKK1x1MDlDQz5cdUUwNEM7CisjCitcdTA5Q0Q+XHVFMDREOyAjIFNJR04gVklSQU1BCitcdTA5RDc+XHVFMDU3OyAjIEFVIExFTkdUSCBNQVJLCisjCitcdTA5RTA+XHVFMDYwOyAjIExFVFRFUiBWT0NBTElDIFJSCitcdTA5RTE+XHVFMDYxOyAjIExFVFRFUiBWT0NBTElDIExMCitcdTA5RTI+XHVFMDYyOyAjIFZPV0VMIFNJR04gVk9DQUxJQyBMCitcdTA5RTM+XHVFMDYzOyAjIFZPV0VMIFNJR04gVk9DQUxJQyBMTAorXHUwOUU2Plx1RTA2NjsgIyBESUdJVCBaRVJPCitcdTA5RTc+XHVFMDY3OyAjIERJR0lUIE9ORQorXHUwOUU4Plx1RTA2ODsgIyBESUdJVCBUV08KK1x1MDlFOT5cdUUwNjk7ICMgRElHSVQgVEhSRUUKK1x1MDlFQT5cdUUwNkE7ICMgRElHSVQgRk9VUgorXHUwOUVCPlx1RTA2QjsgIyBESUdJVCBGSVZFCitcdTA5RUM+XHVFMDZDOyAjIERJR0lUIFNJWAorXHUwOUVEPlx1RTA2RDsgIyBESUdJVCBTRVZFTgorXHUwOUVFPlx1RTA2RTsgIyBESUdJVCBFSUdIVAorXHUwOUVGPlx1RTA2RjsgIyBESUdJVCBOSU5FCitcdTA5RjA+XHVlMDcxOyAjIEJlbmdhbGktSW50ZXJJbmRpYzogTEVUVEVSIFJBIFdJVEggTUlERExFIERJQUdPTkFMCitcdTA5RjE+XHVlMDcyOyAjIEJlbmdhbGktSW50ZXJJbmRpYzogTEVUVEVSIFJBIFdJVEggTE9XRVIgRElBR09OQUwKK1x1MDlGMj5cdWUwNzM7ICMgQmVuZ2FsaS1JbnRlckluZGljOiBSVVBFRSBNQVJLCitcdTA5RjM+XHVlMDc0OyAjIEJlbmdhbGktSW50ZXJJbmRpYzogUlVQRUUgU0lHTgorXHUwOUY0Plx1ZTA3NTsgIyBCZW5nYWxpLUludGVySW5kaWM6IENVUlJFTkNZIE5VTUVSQVRPUiBPTkUKK1x1MDlGNT5cdWUwNzY7ICMgQmVuZ2FsaS1JbnRlckluZGljOiBDVVJSRU5DWSBOVU1FUkFUT1IgVFdPCitcdTA5RjY+XHVlMDc3OyAjIEJlbmdhbGktSW50ZXJJbmRpYzogQ1VSUkVOQ1kgTlVNRVJBVE9SIFRIUkVFCitcdTA5Rjc+XHVlMDc4OyAjIEJlbmdhbGktSW50ZXJJbmRpYzogQ1VSUkVOQ1kgTlVNRVJBVE9SIEZPVVIKK1x1MDlGOD5cdWUwNzk7ICMgQmVuZ2FsaS1JbnRlckluZGljOiBDVVJSRU5DWSBOVU1FUkFUT1IgT05FIExFU1MgVEhBTiBUSEUgREVOT01JTkFUT1IKK1x1MDlGOT5cdWUwN0E7ICMgQmVuZ2FsaS1JbnRlckluZGljOiBDVVJSRU5DWSBERU5PTUlOQVRPUiBTSVhURUVOCitcdTA5RkE+XHVlMDdCOyAjIElTU0hBUgorCitcdTA5NjQ+XHVlMDY0OyAgICAgICAgIyBEQU5EQQorXHUwOTY1Plx1ZTA2NTsgICAgICAgICMgRE9VQkxFIERBTkRBCisjICAgIDo6IE5GQyAoTkZEKSA7CisjIGVvZgpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9UcmFuc2xpdGVyYXRvcl9DeXJpbGxpY19MYXRpbi50eHQgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL1RyYW5zbGl0ZXJhdG9yX0N5cmlsbGljX0xhdGluLnR4dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45NTNlYzRjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9UcmFuc2xpdGVyYXRvcl9DeXJpbGxpY19MYXRpbi50eHQKQEAgLTAsMCArMSwzMTAgQEAKK++7vyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDb3B5cmlnaHQgKGMpIDE5OTktMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworIyBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQXR0aWMvVHJhbnNsaXRlcmF0b3JfQ3lyaWxsaWNfTGF0aW4udHh0LHYgJAorIyAkRGF0ZTogMjAwMS8xMi8wMSAwMDoxNDo1NSAkCisjICRSZXZpc2lvbjogMS45ICQKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUT0RPOiBhZGQgcmVtYWluaW5nIGNoYXJhY3RlcnMKKyMgU2hvdWxkIGFkZCB2YXJpYW50cyBmb3IgUnVzc2lhbi1FbmdsaXNoLCBSdXNzaWFuLUdlcm1hbgorIyBUaG9zZSBjYW4gdXNlIHRoaXMgYXMgYSBiYXNlLCBhbmQgdGhlbiByZW1hcCBjYXNlcworIyBsaWtlIGEgJGhhdCB0byB5YSBvciBqYS4KKworIyA6OiBbXHUwMDAwLVx1MDA3RSBcdTAyQjkgXHUwMkJBIFs6Q3lyaWxsaWM6XSBbOkxhdGluOl0gWzpub25zcGFjaW5nIG1hcms6XV0gOworIyMjIFdBUk5JTkcsIFx1MDMwOCBtdXN0IGJlIGFkZGVkIHRvIHRoZSBnZW5lcmF0ZWQgZmlsdGVycywgaW4gYm90aCBkaXJlY3Rpb25zICMjIworIyBNSU5JTUFMIEZJTFRFUgorOjogW1x1MDMwOFx1MDEwMi1cdTAxMDNcdTAxMTQtXHUwMTE1XHUwMTFFLVx1MDExRlx1MDEyQy1cdTAxMkRcdTAxNEUtXHUwMTRGXHUwMTZDLVx1MDE2RFx1MDMwNlx1MDQwMC1cdTA0NUZcdTA0OTAtXHUwNDk1XHUwNDk4LVx1MDQ5OVx1MDRDMS1cdTA0QzJcdTA0RDAtXHUwNERGXHUwNEUyLVx1MDRFN1x1MDRFQy1cdTA0RjVcdTA0RjgtXHUwNEY5XHUxRTFDLVx1MUUxRFx1MUVBRS1cdTFFQjdcdTFGQjBcdTFGQjhcdTFGRDBcdTFGRDhcdTFGRTBcdTFGRThdIDsKKzo6IE5GRCAoTkZDKSA7CisKKyRtb2RwcmltZSA9IFx1MDJCOTsKKyRtb2RwcmltZTIgPSBcdTAyQkE7CisKKyRncmF2ZSA9IFx1MDMwMDsKKyRhY3V0ZSA9IFx1MDMwMTsKKyRoYXQgPSBcdTAzMDI7CiskYnJldmUgPSBcdTAzMDYgOworJGRvdCA9IFx1MDMwNyA7CiskY2Fyb24gPSBcdTAzMEMgOworJGNvbW1hID0gXHUwMzI2IDsKKyR1bmRlciA9IFx1MDMzMSA7CisKKyMgbW92ZSB1cCBzbyBub3QgbWFza2VkCisKK9GPIDw+IGEgICRoYXQgOyAjIENZUklMTElDIFNNQUxMIExFVFRFUiBZQQor0K8gPD4gIEEgJGhhdCA7ICMgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUEKKwor0YcgPD4gYyAkY2Fyb24gOyAjIENZUklMTElDIFNNQUxMIExFVFRFUiBDSEUKK9CnIDw+IEMgJGNhcm9uOyAjIENZUklMTElDIENBUElUQUwgTEVUVEVSIENIRQorIyDStyA8PiBYWFggOyAjIENZUklMTElDIFNNQUxMIExFVFRFUiBDSEUgV0lUSCBERVNDRU5ERVIKKyMg0rYgPD4gWFhYIDsgIyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBDSEUgV0lUSCBERVNDRU5ERVIKKyMg04wgPD4gWFhYIDsgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0hBS0FTU0lBTiBDSEUKKyMg04sgPD4gWFhYIDsgIyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLSEFLQVNTSUFOIENIRQorIyDSuSA8PiBYWFggOyAjIENZUklMTElDIFNNQUxMIExFVFRFUiBDSEUgV0lUSCBWRVJUSUNBTCBTVFJPS0UKKyMg0rggPD4gWFhYIDsgIyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBDSEUgV0lUSCBWRVJUSUNBTCBTVFJPS0UKKwor0Y0gPD4gZSAkYWN1dGU7ICMgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEUKK9CtIDw+IEUgJGFjdXRlOyAjIENZUklMTElDIENBUElUQUwgTEVUVEVSIEUKK9GUIDw+IGUgJGhhdDsgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgVUtSQUlOSUFOIElFCivQhCA8PiBFICRoYXQ7ICMgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVUtSQUlOSUFOIElFCisKK9GIIDw+IHMgJGNhcm9uIDsgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hBCivQqCA8PiBTICRjYXJvbiA7ICMgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hBCivRiSA8PiBzICRoYXQgOyAjIENZUklMTElDIFNNQUxMIExFVFRFUiBTSENIQQor0KkgPD4gUyAkaGF0OyAjIENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIQ0hBCisKK9GVIDw+IHogJGhhdCA7ICMgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIERaRQor0IUgPD4gWiAkaGF0OyAjIENZUklMTElDIENBUElUQUwgTEVUVEVSIERaRQorIyDToSA8PiBYWFggOyAjIENZUklMTElDIFNNQUxMIExFVFRFUiBBQktIQVNJQU4gRFpFCisjINOgIDw+IFhYWCA7ICMgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQUJLSEFTSUFOIERaRQorCivRjiA8PiB1ICRoYXQgOyAjIENZUklMTElDIFNNQUxMIExFVFRFUiBZVQor0K4gPD4gIFUgJGhhdCA7ICMgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWVUKKwor0ZYgPD4gaSAkYWN1dGU7ICMgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEJZRUxPUlVTU0lBTi1VS1JBSU5JQU4gSQor0IYgPD4gSSAkYWN1dGU7ICMgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQllFTE9SVVNTSUFOLVVLUkFJTklBTiBJCivRmCA8PiBqICRjYXJvbjsgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgSkUKK9CIIDw+IEogJGNhcm9uOyAjIENZUklMTElDIENBUElUQUwgTEVUVEVSIEpFCisKK9GZIDw+IGwgJGhhdCA7ICMgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIExKRQor0IkgPD4gTCAkaGF0IDsgIyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBMSkUKK9GaIDw+IG4gJGhhdCA7ICMgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIE5KRQor0IogPD4gTiAkaGF0IDsgIyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBOSkUKKwor0ZsgPD4gYyAkYWN1dGUgOyAjIENZUklMTElDIFNNQUxMIExFVFRFUiBUU0hFCivQiyA8PiBDICRhY3V0ZSA7ICMgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVFNIRQorCivRnyA8PiBkICRoYXQgOyAjIENZUklMTElDIFNNQUxMIExFVFRFUiBEWkhFCivQjyA8PiBEICRoYXQgOyAjIENZUklMTElDIENBUElUQUwgTEVUVEVSIERaSEUKKworIyBOb3JtYWwgb3JkZXIKKwor0LAgPD4gYSA7ICMgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEKK9CQIDw+IEEgOyAjIENZUklMTElDIENBUElUQUwgTEVUVEVSIEEKK9OZIDw+ICBcdTAyNTkgOyAjIENZUklMTElDIFNNQUxMIExFVFRFUiBTQ0hXQQor05ggPD4gXHUwMThGIDsgIyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTQ0hXQQor05UgPD4gXHUwMEU2IDsgIyBDWVJJTExJQyBTTUFMTCBMSUdBVFVSRSBBIElFCivTlCA8PiBcdTAwQzYgOyAjIENZUklMTElDIENBUElUQUwgTElHQVRVUkUgQSBJRQor0LEgPD4gYiA7ICMgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEJFCivQkSA8PiBCIDsgIyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCRQor0LIgPD4gdiA7ICMgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFZFCivQkiA8PiBWIDsgIyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBWRQorCivSkSA8PiBnICRncmF2ZSA7ICMgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEdIRSBXSVRIIFVQVFVSTgor0pAgPD4gRyAkZ3JhdmUgOyAjIENZUklMTElDIENBUElUQUwgTEVUVEVSIEdIRSBXSVRIIFVQVFVSTgor0pMgPD4gZyAkZG90IDsgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgR0hFIFdJVEggU1RST0tFCivSkiA8PiBHICRkb3Q7ICMgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0hFIFdJVEggU1RST0tFCivSlSA8PiBnICRicmV2ZTsgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgR0hFIFdJVEggTUlERExFIEhPT0sKK9KUIDw+IEcgJGJyZXZlOyAjIENZUklMTElDIENBUElUQUwgTEVUVEVSIEdIRSBXSVRIIE1JRERMRSBIT09LCivQsyA8PiBnIDsgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgR0hFCivQkyA8PiBHIDsgIyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBHSEUKKwor0LQgPD4gZDsgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgREUKK9CUIDw+IEQ7ICMgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgREUKK9GSIDw+IMSRIDsgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgREpFCivQgiA8PiDEkCA7ICMgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgREpFCivSmSA8PiB6ICRjb21tYSA7ICMgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpFIFdJVEggREVTQ0VOREVSCivSmCA8PiBaICRjb21tYSA7ICMgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkUgV0lUSCBERVNDRU5ERVIKK9C1IDw+IGUgOyAjIENZUklMTElDIFNNQUxMIExFVFRFUiBJRQor0JUgPD4gRTsgIyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJRQorCivQtiA8PiB6ICRjYXJvbjsgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgWkhFCivQliA8PiBaICRjYXJvbjsgIyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaSEUKKworIyDSlyA8PiBYWFggOyAjIENZUklMTElDIFNNQUxMIExFVFRFUiBaSEUgV0lUSCBERVNDRU5ERVIKKyMg0pYgPD4gWFhYIDsgIyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaSEUgV0lUSCBERVNDRU5ERVIKKwor0LcgPD4geiA7ICMgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpFCivQlyA8PiBaOyAjIENZUklMTElDIENBUElUQUwgTEVUVEVSIFpFCisKK9C4zIYgPD4gaiA7ICMgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEkKK9CYzIYgPD4gSiA7ICMgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSQor0LggPD4gaSA7ICMgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEkKK9CYIDw+IEkgOyAjIENZUklMTElDIENBUElUQUwgTEVUVEVSIEkKKwor0LogPD4gayA7ICMgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBCivQmiA8PiBLOyAjIENZUklMTElDIENBUElUQUwgTEVUVEVSIEtBCisKKyMg0psgPD4gWFhYIDsgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EgV0lUSCBERVNDRU5ERVIKKyMg0pogPD4gWFhYIDsgIyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQSBXSVRIIERFU0NFTkRFUgorIyDThCA8PiBYWFggOyAjIENZUklMTElDIFNNQUxMIExFVFRFUiBLQSBXSVRIIEhPT0sKKyMg04MgPD4gWFhYIDsgIyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQSBXSVRIIEhPT0sKKyMg0qEgPD4gWFhYIDsgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkFTSEtJUiBLQQorIyDSoCA8PiBYWFggOyAjIENZUklMTElDIENBUElUQUwgTEVUVEVSIEJBU0hLSVIgS0EKKyMg0p8gPD4gWFhYIDsgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EgV0lUSCBTVFJPS0UKKyMg0p4gPD4gWFhYIDsgIyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQSBXSVRIIFNUUk9LRQorIyDSnSA8PiBYWFggOyAjIENZUklMTElDIFNNQUxMIExFVFRFUiBLQSBXSVRIIFZFUlRJQ0FMIFNUUk9LRQorIyDSnCA8PiBYWFggOyAjIENZUklMTElDIENBUElUQUwgTEVUVEVSIEtBIFdJVEggVkVSVElDQUwgU1RST0tFCivQuyA8PiBsIDsgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRUwKK9CbIDw+IEw7ICMgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRUwKKwor0LwgPD4gbSA7ICMgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVNCivQnCA8PiBNIDsgIyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTQor0L0gPD4gbiA7ICMgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVOCivQnSA8PiBOOyAjIENZUklMTElDIENBUElUQUwgTEVUVEVSIEVOCisjINKjIDw+IFhYWCA7ICMgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVOIFdJVEggREVTQ0VOREVSCisjINKiIDw+IFhYWCA7ICMgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU4gV0lUSCBERVNDRU5ERVIKKyMg04ggPD4gWFhYIDsgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4gV0lUSCBIT09LCisjINOHIDw+IFhYWCA7ICMgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU4gV0lUSCBIT09LCisjINKlIDw+IFhYWCA7ICMgQ1lSSUxMSUMgU01BTEwgTElHQVRVUkUgRU4gR0hFCisjINKkIDw+IFhYWCA7ICMgQ1lSSUxMSUMgQ0FQSVRBTCBMSUdBVFVSRSBFTiBHSEUKKwor0L4gPD4gbyA7ICMgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIE8KK9CeIDw+IE8gOyAjIENZUklMTElDIENBUElUQUwgTEVUVEVSIE8KKyMg06kgPD4gWFhYIDsgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkFSUkVEIE8KKyMg06ggPD4gWFhYIDsgIyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCQVJSRUQgTwor0L8gPD4gcCA7ICMgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFBFCivQnyA8PiBQIDsgIyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBQRQorIyDSpyA8PiBYWFggOyAjIENZUklMTElDIFNNQUxMIExFVFRFUiBQRSBXSVRIIE1JRERMRSBIT09LCisjINKmIDw+IFhYWCA7ICMgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgUEUgV0lUSCBNSURETEUgSE9PSworIyDSgSA8PiBYWFggOyAjIENZUklMTElDIFNNQUxMIExFVFRFUiBLT1BQQQorIyDSgCA8PiBYWFggOyAjIENZUklMTElDIENBUElUQUwgTEVUVEVSIEtPUFBBCivRgCA8PiByIDsgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVIKK9CgIDw+IFIgOyAjIENZUklMTElDIENBUElUQUwgTEVUVEVSIEVSCisjINKPIDw+IFhYWCA7ICMgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSIFdJVEggVElDSworIyDSjiA8PiBYWFggOyAjIENZUklMTElDIENBUElUQUwgTEVUVEVSIEVSIFdJVEggVElDSwor0YEgPD4gcyA7ICMgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTCivQoSA8PiBTIDsgIyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUworIyDSqyA8PiBYWFggOyAjIENZUklMTElDIFNNQUxMIExFVFRFUiBFUyBXSVRIIERFU0NFTkRFUgorIyDSqiA8PiBYWFggOyAjIENZUklMTElDIENBUElUQUwgTEVUVEVSIEVTIFdJVEggREVTQ0VOREVSCivRgiA8PiB0IDsgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgVEUKK9CiIDw+IFQgOyAjIENZUklMTElDIENBUElUQUwgTEVUVEVSIFRFCisjINKtIDw+IFhYWCA7ICMgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRFIFdJVEggREVTQ0VOREVSCisjINKsIDw+IFhYWCA7ICMgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVEUgV0lUSCBERVNDRU5ERVIKKwor0YMgPD4gdSA7ICMgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFUKK9CjIDw+IFUgOyAjIENZUklMTElDIENBUElUQUwgTEVUVEVSIFUKKyMg0q8gPD4gWFhYIDsgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgU1RSQUlHSFQgVQorIyDSriA8PiBYWFggOyAjIENZUklMTElDIENBUElUQUwgTEVUVEVSIFNUUkFJR0hUIFUKKyMg0rEgPD4gWFhYIDsgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgU1RSQUlHSFQgVSBXSVRIIFNUUk9LRQorIyDSsCA8PiBYWFggOyAjIENZUklMTElDIENBUElUQUwgTEVUVEVSIFNUUkFJR0hUIFUgV0lUSCBTVFJPS0UKKyMg0bkgPD4gWFhYIDsgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgVUsKKyMg0bggPD4gWFhYIDsgIyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVSwor0YQgPD4gZiA7ICMgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVGCivQpCA8PiBGIDsgIyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFRgor0YUgPD4gaCA7ICMgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEhBCivQpSA8PiBIOyAjIENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBCisjINKzIDw+IFhYWCA7ICMgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEhBIFdJVEggREVTQ0VOREVSCisjINKyIDw+IFhYWCA7ICMgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSEEgV0lUSCBERVNDRU5ERVIKKyMg0rsgPD4gWFhYIDsgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hIQQorIyDSuiA8PiBYWFggOyAjIENZUklMTElDIENBUElUQUwgTEVUVEVSIFNISEEKKyMg0aEgPD4gWFhYIDsgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgT01FR0EKKyMg0aAgPD4gWFhYIDsgIyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBPTUVHQQorIyDRvyA8PiBYWFggOyAjIENZUklMTElDIFNNQUxMIExFVFRFUiBPVAorIyDRviA8PiBYWFggOyAjIENZUklMTElDIENBUElUQUwgTEVUVEVSIE9UCisjING9IDw+IFhYWCA7ICMgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggVElUTE8KKyMg0bwgPD4gWFhYIDsgIyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFRJVExPCisjING7IDw+IFhYWCA7ICMgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFJPVU5EIE9NRUdBCisjING6IDw+IFhYWCA7ICMgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgUk9VTkQgT01FR0EKK9GGIDw+IGMgOyAjIENZUklMTElDIFNNQUxMIExFVFRFUiBUU0UKK9CmIDw+IEM7ICMgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVFNFCisjINK1IDw+IFhYWCA7ICMgQ1lSSUxMSUMgU01BTEwgTElHQVRVUkUgVEUgVFNFCisjINK0IDw+IFhYWCA7ICMgQ1lSSUxMSUMgQ0FQSVRBTCBMSUdBVFVSRSBURSBUU0UKKworIyDSvSA8PiBYWFggOyAjIENZUklMTElDIFNNQUxMIExFVFRFUiBBQktIQVNJQU4gQ0hFCisjINK8IDw+IFhYWCA7ICMgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQUJLSEFTSUFOIENIRQorIyDSvyA8PiBYWFggOyAjIENZUklMTElDIFNNQUxMIExFVFRFUiBBQktIQVNJQU4gQ0hFIFdJVEggREVTQ0VOREVSCisjINK+IDw+IFhYWCA7ICMgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQUJLSEFTSUFOIENIRSBXSVRIIERFU0NFTkRFUgorCisKK9CqIDw+ICRtb2RwcmltZTIgJHVuZGVyIDsgIyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBIQVJEIFNJR04KK9GKIDw+ICAkbW9kcHJpbWUyIDsgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgSEFSRCBTSUdOCivQrCA8PiAkbW9kcHJpbWUgJHVuZGVyIDsgIyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTT0ZUIFNJR04KK9GMIDw+ICAkbW9kcHJpbWUgOyAjIENZUklMTElDIFNNQUxMIExFVFRFUiBTT0ZUIFNJR04KKwor0YsgPD4geSA7ICMgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlFUlUKK9CrIDw+IFkgOyAjIENZUklMTElDIENBUElUQUwgTEVUVEVSIFlFUlUKKworIyDSjSA8PiBYWFggOyAjIENZUklMTElDIFNNQUxMIExFVFRFUiBTRU1JU09GVCBTSUdOCisjINKMIDw+IFhYWCA7ICMgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0VNSVNPRlQgU0lHTgorIyDRoyA8PiBYWFggOyAjIENZUklMTElDIFNNQUxMIExFVFRFUiBZQVQKKyMg0aIgPD4gWFhYIDsgIyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZQVQKKworIyDRpSA8PiBYWFggOyAjIENZUklMTElDIFNNQUxMIExFVFRFUiBJT1RJRklFRCBFCisjINGkIDw+IFhYWCA7ICMgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSU9USUZJRUQgRQorIyDRpyA8PiBYWFggOyAjIENZUklMTElDIFNNQUxMIExFVFRFUiBMSVRUTEUgWVVTCisjINGmIDw+IFhYWCA7ICMgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgTElUVExFIFlVUworIyDRqyA8PiBYWFggOyAjIENZUklMTElDIFNNQUxMIExFVFRFUiBCSUcgWVVTCisjINGqIDw+IFhYWCA7ICMgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQklHIFlVUworIyDRqSA8PiBYWFggOyAjIENZUklMTElDIFNNQUxMIExFVFRFUiBJT1RJRklFRCBMSVRUTEUgWVVTCisjINGoIDw+IFhYWCA7ICMgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSU9USUZJRUQgTElUVExFIFlVUworIyDRrSA8PiBYWFggOyAjIENZUklMTElDIFNNQUxMIExFVFRFUiBJT1RJRklFRCBCSUcgWVVTCisjINGsIDw+IFhYWCA7ICMgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSU9USUZJRUQgQklHIFlVUworIyDRryA8PiBYWFggOyAjIENZUklMTElDIFNNQUxMIExFVFRFUiBLU0kKKyMg0a4gPD4gWFhYIDsgIyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLU0kKKyMg0bEgPD4gWFhYIDsgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgUFNJCisjINGwIDw+IFhYWCA7ICMgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgUFNJCisjINGzIDw+IFhYWCA7ICMgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEZJVEEKKyMg0bIgPD4gWFhYIDsgIyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBGSVRBCisjING1IDw+IFhYWCA7ICMgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElaSElUU0EKKyMg0bQgPD4gWFhYIDsgIyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJWkhJVFNBCisjINKpIDw+IFhYWCA7ICMgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEFCS0hBU0lBTiBIQQorIyDSqCA8PiBYWFggOyAjIENZUklMTElDIENBUElUQUwgTEVUVEVSIEFCS0hBU0lBTiBIQQorIyDTgCA8PiBYWFggOyAjIENZUklMTElDIExFVFRFUiBQQUxPQ0hLQQorIyMjINCwzIYgPD4gWFhYIDsgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgQQorIyMjINCQzIYgPD4gWFhYIDsgIyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBBCisjIyMg0LDMiCA8PiBYWFggOyAjIENZUklMTElDIFNNQUxMIExFVFRFUiBBCisjIyMg0JDMiCA8PiBYWFggOyAjIENZUklMTElDIENBUElUQUwgTEVUVEVSIEEKKyMjIyDTmcyIIDw+IFhYWCA7ICMgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNDSFdBCisjIyMg05jMiCA8PiBYWFggOyAjIENZUklMTElDIENBUElUQUwgTEVUVEVSIFNDSFdBCisjIyMg0LPMgSA8PiBYWFggOyAjIENZUklMTElDIFNNQUxMIExFVFRFUiBHSEUKKyMjIyDQk8yBIDw+IFhYWCA7ICMgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0hFCisjIyMg0LXMgCA8PiBYWFggOyAjIENZUklMTElDIFNNQUxMIExFVFRFUiBJRQorIyMjINCVzIAgPD4gWFhYIDsgIyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJRQorIyMjINC1zIggPD4gWFhYIDsgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgSUUKKyMjIyDQlcyIIDw+IFhYWCA7ICMgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSUUKKyMjIyDQtcyGIDw+IFhYWCA7ICMgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElFCisjIyMg0JXMhiA8PiBYWFggOyAjIENZUklMTElDIENBUElUQUwgTEVUVEVSIElFCisjIyMg0LbMhiA8PiBYWFggOyAjIENZUklMTElDIFNNQUxMIExFVFRFUiBaSEUKKyMjIyDQlsyGIDw+IFhYWCA7ICMgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkhFCisjIyMg0LbMiCA8PiBYWFggOyAjIENZUklMTElDIFNNQUxMIExFVFRFUiBaSEUKKyMjIyDQlsyIIDw+IFhYWCA7ICMgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkhFCisjIyMg0LfMiCA8PiBYWFggOyAjIENZUklMTElDIFNNQUxMIExFVFRFUiBaRQorIyMjINCXzIggPD4gWFhYIDsgIyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaRQorIyMjINC4zIAgPD4gWFhYIDsgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgSQorIyMjINCYzIAgPD4gWFhYIDsgIyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJCisjIyMg0LjMhCA8PiBYWFggOyAjIENZUklMTElDIFNNQUxMIExFVFRFUiBJCisjIyMg0JjMhCA8PiBYWFggOyAjIENZUklMTElDIENBUElUQUwgTEVUVEVSIEkKKyMjIyDQuMyIIDw+IFhYWCA7ICMgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEkKKyMjIyDQmMyIIDw+IFhYWCA7ICMgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSQorIyMjINGWzIggPD4gWFhYIDsgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgQllFTE9SVVNTSUFOLVVLUkFJTklBTiBJCisjIyMg0IbMiCA8PiBYWFggOyAjIENZUklMTElDIENBUElUQUwgTEVUVEVSIEJZRUxPUlVTU0lBTi1VS1JBSU5JQU4gSQorIyMjINC+zIggPD4gWFhYIDsgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgTworIyMjINCezIggPD4gWFhYIDsgIyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBPCisjIyMg06nMiCA8PiBYWFggOyAjIENZUklMTElDIFNNQUxMIExFVFRFUiBCQVJSRUQgTworIyMjINOozIggPD4gWFhYIDsgIyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCQVJSRUQgTworIyMjINC6zIEgPD4gWFhYIDsgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EKKyMjIyDQmsyBIDw+IFhYWCA7ICMgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EKKyMjIyDRg8yEIDw+IFhYWCA7ICMgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFUKKyMjIyDQo8yEIDw+IFhYWCA7ICMgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVQorIyMjINGDzIYgPD4gWFhYIDsgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgVQorIyMjINCjzIYgPD4gWFhYIDsgIyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVCisjIyMg0YPMiCA8PiBYWFggOyAjIENZUklMTElDIFNNQUxMIExFVFRFUiBVCisjIyMg0KPMiCA8PiBYWFggOyAjIENZUklMTElDIENBUElUQUwgTEVUVEVSIFUKKyMjIyDRg8yLIDw+IFhYWCA7ICMgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFUKKyMjIyDQo8yLIDw+IFhYWCA7ICMgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVQorIyMjINGHzIggPD4gWFhYIDsgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFCisjIyMg0KfMiCA8PiBYWFggOyAjIENZUklMTElDIENBUElUQUwgTEVUVEVSIENIRQorIyMjINGLzIggPD4gWFhYIDsgIyBDWVJJTExJQyBTTUFMTCBMRVRURVIgWUVSVQorIyMjINCrzIggPD4gWFhYIDsgIyBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZRVJVCisjIyMg0Y3MiCA8PiBYWFggOyAjIENZUklMTElDIFNNQUxMIExFVFRFUiBFCisjIyMg0K3MiCA8PiBYWFggOyAjIENZUklMTElDIENBUElUQUwgTEVUVEVSIEUKKyMjIyDRtcyPIDw+IFhYWCA7ICMgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElaSElUU0EKKyMjIyDRtMyPIDw+IFhYWCA7ICMgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSVpISVRTQQorCisjIENvbXBsZXRlbmVzcworJGlnbm9yZSA9IFtbOk1hcms6XScnXSAqIDsKK3wgayA8IHEgOworfCBLIDwgUSA7Cit8IHUgPCB3IDsKK3wgVSA8IFcgOworfCBLUyA8IFggfSAkaWdub3JlIFs6VXBwZXJjYXNlTGV0dGVyOl0gOworfCBLUyA8IFs6VXBwZXJjYXNlTGV0dGVyOl0gJGlnbm9yZSB7IFggOworfCBLcyA8IFggOworfCBrcyA8IHggOworCis6OiBORkMgKE5GRCkgOworIyBub3RlOiBhIGdsb2JhbCBmaWx0ZXIgaXMgbW9yZSBlZmZpY2llbnQsIGJ1dCBNVVNUIGluY2x1ZGUgYWxsIHNvdXJjZSBjaGFycyEhCisjIDo6IChbXHUwMDAwLVx1MDA3RSBcdTAyQjkgXHUwMkJBIFs6Q3lyaWxsaWM6XSBbOkxhdGluOl0gWzpub25zcGFjaW5nIG1hcms6XV0pOworIyBNSU5JTUFMIEZJTFRFUjogTGF0aW4tQ3lyaWxsaWMKKzo6ICggW1x1MDMwOEEtWmEtelx1MDBDMC1cdTAwQ0ZcdTAwRDEtXHUwMEQ2XHUwMEQ5LVx1MDBERFx1MDBFMC1cdTAwRUZcdTAwRjEtXHUwMEY2XHUwMEY5LVx1MDBGRFx1MDBGRi1cdTAxMjVcdTAxMjgtXHUwMTMwXHUwMTM0LVx1MDEzN1x1MDEzOS1cdTAxM0VcdTAxNDMtXHUwMTQ4XHUwMTRDLVx1MDE1MVx1MDE1NC1cdTAxNjVcdTAxNjgtXHUwMTdFXHUwMThGXHUwMUEwLVx1MDFBMVx1MDFBRi1cdTAxQjBcdTAxQ0QtXHUwMURDXHUwMURFLVx1MDFFM1x1MDFFNi1cdTAxRjBcdTAxRjQtXHUwMUY1XHUwMUY4LVx1MDIxQlx1MDIxRS1cdTAyMUZcdTAyMjYtXHUwMjMzXHUwMjU5XHUwMkI5LVx1MDJCQVx1MDMwMC1cdTAzMDJcdTAzMDYtXHUwMzA3XHUwMzBDXHUwMzI2XHUwMzMxXHUwMzQwLVx1MDM0MVx1MDM0NFx1MDM3NFx1MDM4NS1cdTAzODZcdTAzODgtXHUwMzhBXHUwMzhDXHUwMzhFLVx1MDM5MFx1MDNBQy1cdTAzQjBcdTAzQ0MtXHUwM0NFXHUwM0QzXHUwNDAwXHUwNDAzXHUwNDBDLVx1MDQwRVx1MDQxOVx1MDQzOVx1MDQ1MFx1MDQ1M1x1MDQ1Qy1cdTA0NUVcdTA0QzEtXHUwNEMyXHUwNEQwLVx1MDREMVx1MDRENi1cdTA0RDdcdTFFMDAtXHUxRTk5XHUxRTlCXHUxRUEwLVx1MUVGOVx1MUYwMi1cdTFGMDVcdTFGMEEtXHUxRjBEXHUxRjEyLVx1MUYxNVx1MUYxQS1cdTFGMURcdTFGMjItXHUxRjI1XHUxRjJBLVx1MUYyRFx1MUYzMi1cdTFGMzVcdTFGM0EtXHUxRjNEXHUxRjQyLVx1MUY0NVx1MUY0QS1cdTFGNERcdTFGNTItXHUxRjU1XHUxRjVCXHUxRjVEXHUxRjYyLVx1MUY2NVx1MUY2QS1cdTFGNkRcdTFGNzAtXHUxRjdEXHUxRjgyLVx1MUY4NVx1MUY4QS1cdTFGOERcdTFGOTItXHUxRjk1XHUxRjlBLVx1MUY5RFx1MUZBMi1cdTFGQTVcdTFGQUEtXHUxRkFEXHUxRkIwXHUxRkIyXHUxRkI0XHUxRkI4XHUxRkJBLVx1MUZCQlx1MUZDMlx1MUZDNFx1MUZDOC1cdTFGQ0JcdTFGQ0QtXHUxRkNFXHUxRkQwXHUxRkQyLVx1MUZEM1x1MUZEOFx1MUZEQS1cdTFGREJcdTFGREQtXHUxRkRFXHUxRkUwXHUxRkUyLVx1MUZFM1x1MUZFOFx1MUZFQS1cdTFGRUJcdTFGRUQtXHUxRkVFXHUxRkYyXHUxRkY0XHUxRkY4LVx1MUZGQlx1MjEyQS1cdTIxMkJdICkgOwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9UcmFuc2xpdGVyYXRvcl9EZXZhbmFnYXJpX0ludGVySW5kaWMudHh0IGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9UcmFuc2xpdGVyYXRvcl9EZXZhbmFnYXJpX0ludGVySW5kaWMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjgxYmVjZDcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL1RyYW5zbGl0ZXJhdG9yX0RldmFuYWdhcmlfSW50ZXJJbmRpYy50eHQKQEAgLTAsMCArMSwxMjAgQEAKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDb3B5cmlnaHQgKGMpIDE5OTktMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworIyBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQXR0aWMvVHJhbnNsaXRlcmF0b3JfRGV2YW5hZ2FyaV9JbnRlckluZGljLnR4dCx2ICQKKyMgJERhdGU6IDIwMDIvMDkvMTkgMTg6MTE6MjMgJAorIyAkUmV2aXNpb246IDEuMTAgJAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMgRGV2YW5hZ2FyaS1JbnRlckluZGljCisjIDo6IE5GRDsKKyNSdWxlcyBmb3IgRGVjb21wb3NlZCBjaGFyYWN0ZXJzCisKKworIFx1MDkwMT5cdUUwMDE7ICAjIFNJR04gQ0FORFJBQklORFUKKyBcdTA5MDI+XHVFMDAyOyAgIyBTSUdOIEFOVVNWQVJBCisgXHUwOTAzPlx1RTAwMzsgICMgU0lHTiBWSVNBUkdBCisgXHUwOTA1Plx1RTAwNTsgICMgTEVUVEVSIEEKKyBcdTA5MDY+XHVFMDA2OyAgIyBMRVRURVIgQUEKKyBcdTA5MDc+XHVFMDA3OyAgIyBMRVRURVIgSQorIFx1MDkwOD5cdUUwMDg7ICAjIExFVFRFUiBJSQorIFx1MDkwOT5cdUUwMDk7ICAjIExFVFRFUiBVCisgXHUwOTBBPlx1RTAwQTsgICMgTEVUVEVSIFVVCisgXHUwOTBCPlx1RTAwQjsgICMgTEVUVEVSIFZPQ0FMSUMgUgorIFx1MDkwQz5cdUUwMEM7ICAjIExFVFRFUiBWT0NBTElDIEwKKyBcdTA5MEQ+XHVFMDBEOyAgIyBMRVRURVIgQ0FORFJBIEUgKEZvciByZXByZXNlbnRpbmcgRW5nbGlzaCBzb3VuZHMpCisgXHUwOTBFPlx1RTAwRTsgIyBVTk1BUFBFRCBMRVRURVIgU0hPUlQgRShGb3IgU291dGhlcm4gU2NyaXB0cykKKyBcdTA5MEY+XHVFMDBGOyAgIyBMRVRURVIgRQorIFx1MDkxMD5cdUUwMTA7ICAjIExFVFRFUiBBSQorIFx1MDkxMT5cdUUwMTE7ICAjIExFVFRFUiBDQU5EUkEgTyAoRm9yIHJlcHJlc2VudGluZyBFbmdsaXNoIHNvdW5kcykKKyBcdTA5MTI+XHVFMDEyOyAjIFVOTUFQUEVEIExFVFRFUiBTSE9SVCBPIChGb3IgU291dGhlcm4gU2NyaXB0cykKKyBcdTA5MTM+XHVFMDEzOyAgIyBMRVRURVIgTworIFx1MDkxND5cdUUwMTQ7ICAjIExFVFRFUiBBVQorIFx1MDkxNT5cdUUwMTU7ICAjIExFVFRFUiBLQQorIFx1MDkxNj5cdUUwMTY7ICAjIExFVFRFUiBLSEEKKyBcdTA5MTc+XHVFMDE3OyAgIyBMRVRURVIgR0EKKyBcdTA5MTg+XHVFMDE4OyAgIyBMRVRURVIgR0hBCisgXHUwOTE5Plx1RTAxOTsgICMgTEVUVEVSIE5HQQorIFx1MDkxQT5cdUUwMUE7ICAjIExFVFRFUiBDQQorIFx1MDkxQj5cdUUwMUI7ICAjIExFVFRFUiBDSEEKKyBcdTA5MUM+XHVFMDFDOyAgIyBMRVRURVIgSkEKKyBcdTA5MUQ+XHVFMDFEOyAgIyBMRVRURVIgSkhBCisgXHUwOTFFPlx1RTAxRTsgICMgTEVUVEVSIE5ZQQorIFx1MDkxRj5cdUUwMUY7ICAjIExFVFRFUiBUVEEKKyBcdTA5MjA+XHVFMDIwOyAgIyBMRVRURVIgVFRIQQorIFx1MDkyMT5cdUUwMjE7ICAjIExFVFRFUiBEREEKKyBcdTA5MjI+XHVFMDIyOyAgIyBMRVRURVIgRERIQQorIFx1MDkyMz5cdUUwMjM7ICAjIExFVFRFUiBOTkEKKyBcdTA5MjQ+XHVFMDI0OyAgIyBMRVRURVIgVEEKKyBcdTA5MjU+XHVFMDI1OyAgIyBMRVRURVIgVEhBCisgXHUwOTI2Plx1RTAyNjsgICMgTEVUVEVSIERBCisgXHUwOTI3Plx1RTAyNzsgICMgTEVUVEVSIERIQQorIFx1MDkyOD5cdUUwMjg7ICAjIExFVFRFUiBOQQorIFx1MDkyOT5cdUUwMjk7ICAKKyBcdTA5MkE+XHVFMDJBOyAgIyBMRVRURVIgUEEKKyBcdTA5MkI+XHVFMDJCOyAgIyBMRVRURVIgUEhBCisgXHUwOTJDPlx1RTAyQzsgICMgTEVUVEVSIEJBCisgXHUwOTJEPlx1RTAyRDsgICMgTEVUVEVSIEJIQQorIFx1MDkyRT5cdUUwMkU7ICAjIExFVFRFUiBNQQorIFx1MDkyRj5cdUUwMkY7ICAjIExFVFRFUiBZQQorIFx1MDkzMD5cdUUwMzA7ICAjIExFVFRFUiBSQQorIFx1MDkzMT5cdUUwMzE7CisgXHUwOTMyPlx1RTAzMjsgICMgTEVUVEVSIExBCisgXHUwOTMzPlx1RTAzMzsgICMgTEVUVEVSIExMQQorIFx1MDkzND5cdUUwMzQ7CisKKyBcdTA5MzU+XHVFMDM1OyAgIyBMRVRURVIgVkEKKyBcdTA5MzY+XHVFMDM2OyAgIyBMRVRURVIgU0hBCisgXHUwOTM3Plx1RTAzNzsgICMgTEVUVEVSIFNTQQorIFx1MDkzOD5cdUUwMzg7ICAjIExFVFRFUiBTQQorIFx1MDkzOT5cdUUwMzk7ICAjIExFVFRFUiBIQQorIFx1MDkzQz5cdUUwM0M7ICAjIFNJR04gTlVLVEEKKyBcdTA5M0Q+XHVFMDNEOyAgIyBTSUdOIEFWQUdSQUhBCisgXHUwOTNFPlx1RTAzRTsgICMgVk9XRUwgU0lHTiBBQQorIFx1MDkzRj5cdUUwM0Y7ICAjIFZPV0VMIFNJR04gSQorIFx1MDk0MD5cdUUwNDA7ICAjIFZPV0VMIFNJR04gSUkKKyBcdTA5NDE+XHVFMDQxOyAgIyBWT1dFTCBTSUdOIFUKKyBcdTA5NDI+XHVFMDQyOyAgIyBWT1dFTCBTSUdOIFVVCisgXHUwOTQzPlx1RTA0MzsgICMgVk9XRUwgU0lHTiBWT0NBTElDIFIKKyBcdTA5NDQ+XHVFMDQ0OyAgIyBWT1dFTCBTSUdOIFZPQ0FMSUMgUlIKKyBcdTA5NDU+XHVFMDQ1OyAgIyBWT1dFTCBTSUdOIENBTkRSQSBFCisgXHUwOTQ2Plx1RTA0NjsgIyBVTk1BUFBFRCBWT1dFTCBTSUdOIFNIT1JUIEUKKyBcdTA5NDc+XHVFMDQ3OyAgIyBWT1dFTCBTSUdOIEUKKyBcdTA5NDg+XHVFMDQ4OyAgIyBWT1dFTCBTSUdOIEFJCisgXHUwOTQ5Plx1RTA0OTsgICMgVk9XRUwgU0lHTiBDQU5EUkEgTworIFx1MDk0QT5cdUUwNEE7ICMgVU5NQVBQRUQgVk9XRUwgU0lHTiBTSE9SVCBPCisgXHUwOTRCPlx1RTA0QjsgICMgVk9XRUwgU0lHTiBPCisgXHUwOTRDPlx1RTA0QzsgICMgVk9XRUwgU0lHTiBBVQorIFx1MDk0RD5cdUUwNEQ7ICAjIFNJR04gVklSQU1BCisgXHUwOTUwPlx1RTA1MDsgICMgT00KKyBcdTA5NTE+XHVFMDUxOyAgICAgICAjIFVOTUFQUEVEIFNUUkVTUyBTSUdOIFVEQVRUQQorIFx1MDk1Mj5cdUUwNTI7ICAgICAgICMgVU5NQVBQRUQgU1RSRVNTIFNJR04gQU5VREFUVEEKKyBcdTA5NTM+XHVFMDUzOyAgICAgICAjIFVOTUFQUEVEIEdSQVZFIEFDQ0VOVAorIFx1MDk1ND5cdUUwNTQ7ICAgICAgICMgVU5NQVBQRUQgQUNVVEUgQUNDRU5UCisgXHUwOTU4Plx1RTA1ODsKKyBcdTA5NTk+XHVFMDU5OworIFx1MDk1QT5cdUUwNWE7CisgXHUwOTVCPlx1RTA1YjsKKyBcdTA5NUM+XHVFMDVjOworIFx1MDk1RD5cdUUwNWQ7CisgXHUwOTVFPlx1RTA1ZTsKKyBcdTA5NUY+XHVFMDVmOworIFx1MDk2MD5cdUUwNjA7ICAjIExFVFRFUiBWT0NBTElDIFJSCisgXHUwOTYxPlx1RTA2MTsgICMgTEVUVEVSIFZPQ0FMSUMgTEwKKyBcdTA5NjI+XHVFMDYyOyAgIyBWT1dFTCBTSUdOIFZPQ0FMSUMgTAorIFx1MDk2Mz5cdUUwNjM7ICAjIFZPV0VMIFNJR04gVk9DQUxJQyBMTAorIFx1MDk2ND5cdWUwNjQ7ICAjIERBTkRBCisgXHUwOTY1Plx1ZTA2NTsgICMgRE9VQkxFIERBTkRBCisgXHUwOTY2Plx1RTA2NjsgICMgRElHSVQgWkVSTworIFx1MDk2Nz5cdUUwNjc7ICAjIERJR0lUIE9ORQorIFx1MDk2OD5cdUUwNjg7ICAjIERJR0lUIFRXTworIFx1MDk2OT5cdUUwNjk7ICAjIERJR0lUIFRIUkVFCisgXHUwOTZBPlx1RTA2QTsgICMgRElHSVQgRk9VUgorIFx1MDk2Qj5cdUUwNkI7ICAjIERJR0lUIEZJVkUKKyBcdTA5NkM+XHVFMDZDOyAgIyBESUdJVCBTSVgKKyBcdTA5NkQ+XHVFMDZEOyAgIyBESUdJVCBTRVZFTgorIFx1MDk2RT5cdUUwNkU7ICAjIERJR0lUIEVJR0hUCisgXHUwOTZGPlx1RTA2RjsgICMgRElHSVQgTklORQorIFx1MDk3MD5cdUUwNzA7ICAjIERldmFuYWdhcmktSW50ZXJJbmRpYzogQUJCUkVWSUFUSU9OIFNJR04KKyMgICAgOjogTkZDIChORkQpIDsKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfRnVsbHdpZHRoX0hhbGZ3aWR0aC50eHQgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL1RyYW5zbGl0ZXJhdG9yX0Z1bGx3aWR0aF9IYWxmd2lkdGgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjczM2JiY2MKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL1RyYW5zbGl0ZXJhdG9yX0Z1bGx3aWR0aF9IYWxmd2lkdGgudHh0CkBAIC0wLDAgKzEsMjc1IEBACivvu78jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ29weXJpZ2h0IChjKSAxOTk5LTIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyMgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0F0dGljL1RyYW5zbGl0ZXJhdG9yX0Z1bGx3aWR0aF9IYWxmd2lkdGgudHh0LHYgJAorIyAkRGF0ZTogMjAwMi8wMy8wMiAwMDoyNzoyNyAkCisjICRSZXZpc2lvbjogMS4zICQKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIEZ1bGx3aWR0aC1IYWxmd2lkdGgKKworIyBNZWNoYW5pY2FsbHkgZ2VuZXJhdGVkIGZyb20gVW5pY29kZSBDaGFyYWN0ZXIgRGF0YWJhc2UKKyMgSURFT0dSQVBISUMgU1BBQ0UgdGhlbiBhZGRlZCwgYW5kCisjIEZVTExXSURUSCBNQUNST04gY2hhbmdlZCB0byBtYXAgdG8gTUFDUk9OLCBub3QgU1BBQ0UgKyBDT01CSU5JTkcgTUFDUk9OCisKKyMgbXVsdGljaGFyYWN0ZXIKKwor44KsPD7vvbbvvp47ICMgdG8gS0FUQUtBTkEgTEVUVEVSIEdBCivjgq48Pu+9t+++njsgIyB0byBLQVRBS0FOQSBMRVRURVIgR0kKK+OCsDw+7724776eOyAjIHRvIEtBVEFLQU5BIExFVFRFUiBHVQor44KyPD7vvbnvvp47ICMgdG8gS0FUQUtBTkEgTEVUVEVSIEdFCivjgrQ8Pu+9uu++njsgIyB0byBLQVRBS0FOQSBMRVRURVIgR08KK+OCtjw+7727776eOyAjIHRvIEtBVEFLQU5BIExFVFRFUiBaQQor44K4PD7vvbzvvp47ICMgdG8gS0FUQUtBTkEgTEVUVEVSIFpJCivjgro8Pu+9ve++njsgIyB0byBLQVRBS0FOQSBMRVRURVIgWlUKK+OCvDw+772+776eOyAjIHRvIEtBVEFLQU5BIExFVFRFUiBaRQor44K+PD7vvb/vvp47ICMgdG8gS0FUQUtBTkEgTEVUVEVSIFpPCivjg4A8Pu++gO++njsgIyB0byBLQVRBS0FOQSBMRVRURVIgREEKK+ODgjw+776B776eOyAjIHRvIEtBVEFLQU5BIExFVFRFUiBESQor44OFPD7vvoLvvp47ICMgdG8gS0FUQUtBTkEgTEVUVEVSIERVCivjg4c8Pu++g+++njsgIyB0byBLQVRBS0FOQSBMRVRURVIgREUKK+ODiTw+776E776eOyAjIHRvIEtBVEFLQU5BIExFVFRFUiBETwor44OQPD7vvorvvp47ICMgdG8gS0FUQUtBTkEgTEVUVEVSIEJBCivjg5E8Pu++iu++nzsgIyB0byBLQVRBS0FOQSBMRVRURVIgUEEKK+ODkzw+776L776eOyAjIHRvIEtBVEFLQU5BIExFVFRFUiBCSQor44OUPD7vvovvvp87ICMgdG8gS0FUQUtBTkEgTEVUVEVSIFBJCivjg5Y8Pu++jO++njsgIyB0byBLQVRBS0FOQSBMRVRURVIgQlUKK+ODlzw+776M776fOyAjIHRvIEtBVEFLQU5BIExFVFRFUiBQVQor44OZPD7vvo3vvp47ICMgdG8gS0FUQUtBTkEgTEVUVEVSIEJFCivjg5o8Pu++je++nzsgIyB0byBLQVRBS0FOQSBMRVRURVIgUEUKK+ODnDw+776O776eOyAjIHRvIEtBVEFLQU5BIExFVFRFUiBCTwor44OdPD7vvo7vvp87ICMgdG8gS0FUQUtBTkEgTEVUVEVSIFBPCivjg7Q8Pu+9s+++njsgIyB0byBLQVRBS0FOQSBMRVRURVIgVlUKK+ODtzw+776c776eOyAjIHRvIEtBVEFLQU5BIExFVFRFUiBWQQor44O6PD7vvabvvp47ICMgdG8gS0FUQUtBTkEgTEVUVEVSIFZPCisKKyMgc2luZ2xlIGNoYXJhY3RlcgorCivvvIE8PichJzsgIyBmcm9tIEZVTExXSURUSCBFWENMQU1BVElPTiBNQVJLCivvvII8PidcIic7ICMgZnJvbSBGVUxMV0lEVEggUVVPVEFUSU9OIE1BUksKK++8gzw+JyMnOyAjIGZyb20gRlVMTFdJRFRIIE5VTUJFUiBTSUdOCivvvIQ8PickJzsgIyBmcm9tIEZVTExXSURUSCBET0xMQVIgU0lHTgor77yFPD4nJSc7ICMgZnJvbSBGVUxMV0lEVEggUEVSQ0VOVCBTSUdOCivvvIY8PicmJzsgIyBmcm9tIEZVTExXSURUSCBBTVBFUlNBTkQKK++8hzw+Jyc7ICMgZnJvbSBGVUxMV0lEVEggQVBPU1RST1BIRQor77yIPD4nKCc7ICMgZnJvbSBGVUxMV0lEVEggTEVGVCBQQVJFTlRIRVNJUwor77yJPD4nKSc7ICMgZnJvbSBGVUxMV0lEVEggUklHSFQgUEFSRU5USEVTSVMKK++8ijw+JyonOyAjIGZyb20gRlVMTFdJRFRIIEFTVEVSSVNLCivvvIs8PicrJzsgIyBmcm9tIEZVTExXSURUSCBQTFVTIFNJR04KK++8jDw+JywnOyAjIGZyb20gRlVMTFdJRFRIIENPTU1BCivvvI08PictJzsgIyBmcm9tIEZVTExXSURUSCBIWVBIRU4tTUlOVVMKK++8jjw+Jy4nOyAjIGZyb20gRlVMTFdJRFRIIEZVTEwgU1RPUAor77yPPD4nLyc7ICMgZnJvbSBGVUxMV0lEVEggU09MSURVUwor77yQPD4nMCc7ICMgZnJvbSBGVUxMV0lEVEggRElHSVQgWkVSTwor77yRPD4nMSc7ICMgZnJvbSBGVUxMV0lEVEggRElHSVQgT05FCivvvJI8PicyJzsgIyBmcm9tIEZVTExXSURUSCBESUdJVCBUV08KK++8kzw+JzMnOyAjIGZyb20gRlVMTFdJRFRIIERJR0lUIFRIUkVFCivvvJQ8Pic0JzsgIyBmcm9tIEZVTExXSURUSCBESUdJVCBGT1VSCivvvJU8Pic1JzsgIyBmcm9tIEZVTExXSURUSCBESUdJVCBGSVZFCivvvJY8Pic2JzsgIyBmcm9tIEZVTExXSURUSCBESUdJVCBTSVgKK++8lzw+JzcnOyAjIGZyb20gRlVMTFdJRFRIIERJR0lUIFNFVkVOCivvvJg8Pic4JzsgIyBmcm9tIEZVTExXSURUSCBESUdJVCBFSUdIVAor77yZPD4nOSc7ICMgZnJvbSBGVUxMV0lEVEggRElHSVQgTklORQor77yaPD4nOic7ICMgZnJvbSBGVUxMV0lEVEggQ09MT04KK++8mzw+JzsnOyAjIGZyb20gRlVMTFdJRFRIIFNFTUlDT0xPTgor77ycPD4nPCc7ICMgZnJvbSBGVUxMV0lEVEggTEVTUy1USEFOIFNJR04KK++8nTw+Jz0nOyAjIGZyb20gRlVMTFdJRFRIIEVRVUFMUyBTSUdOCivvvJ48Pic+JzsgIyBmcm9tIEZVTExXSURUSCBHUkVBVEVSLVRIQU4gU0lHTgor77yfPD4nPyc7ICMgZnJvbSBGVUxMV0lEVEggUVVFU1RJT04gTUFSSwor77ygPD4nQCc7ICMgZnJvbSBGVUxMV0lEVEggQ09NTUVSQ0lBTCBBVAor77yhPD5BOyAjIGZyb20gRlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEEKK++8ojw+QjsgIyBmcm9tIEZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCivvvKM8PkM7ICMgZnJvbSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgQwor77ykPD5EOyAjIGZyb20gRlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEQKK++8pTw+RTsgIyBmcm9tIEZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCivvvKY8PkY7ICMgZnJvbSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgRgor77ynPD5HOyAjIGZyb20gRlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEcKK++8qDw+SDsgIyBmcm9tIEZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBICivvvKk8Pkk7ICMgZnJvbSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQor77yqPD5KOyAjIGZyb20gRlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEoKK++8qzw+SzsgIyBmcm9tIEZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCivvvKw8Pkw7ICMgZnJvbSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgTAor77ytPD5NOyAjIGZyb20gRlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIE0KK++8rjw+TjsgIyBmcm9tIEZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCivvvK88Pk87ICMgZnJvbSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgTwor77ywPD5QOyAjIGZyb20gRlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFAKK++8sTw+UTsgIyBmcm9tIEZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCivvvLI8PlI7ICMgZnJvbSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgUgor77yzPD5TOyAjIGZyb20gRlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFMKK++8tDw+VDsgIyBmcm9tIEZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBUCivvvLU8PlU7ICMgZnJvbSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgVQor77y2PD5WOyAjIGZyb20gRlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFYKK++8tzw+VzsgIyBmcm9tIEZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBXCivvvLg8Plg7ICMgZnJvbSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgWAor77y5PD5ZOyAjIGZyb20gRlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFkKK++8ujw+WjsgIyBmcm9tIEZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBaCivvvLs8PidbJzsgIyBmcm9tIEZVTExXSURUSCBMRUZUIFNRVUFSRSBCUkFDS0VUCivvvLw8PidcXCc7ICMgZnJvbSBGVUxMV0lEVEggUkVWRVJTRSBTT0xJRFVTIHtkb3VibGUgZXNjYXBlIC0gYWxpdX0KK++8vTw+J10nOyAjIGZyb20gRlVMTFdJRFRIIFJJR0hUIFNRVUFSRSBCUkFDS0VUCivvvL48PideJzsgIyBmcm9tIEZVTExXSURUSCBDSVJDVU1GTEVYIEFDQ0VOVAor77y/PD4nXyc7ICMgZnJvbSBGVUxMV0lEVEggTE9XIExJTkUKK++9gDw+J2AnOyAjIGZyb20gRlVMTFdJRFRIIEdSQVZFIEFDQ0VOVAor772BPD5hOyAjIGZyb20gRlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBBCivvvYI8PmI7ICMgZnJvbSBGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIEIKK++9gzw+YzsgIyBmcm9tIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgQwor772EPD5kOyAjIGZyb20gRlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBECivvvYU8PmU7ICMgZnJvbSBGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIEUKK++9hjw+ZjsgIyBmcm9tIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgRgor772HPD5nOyAjIGZyb20gRlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBHCivvvYg8Pmg7ICMgZnJvbSBGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIEgKK++9iTw+aTsgIyBmcm9tIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgSQor772KPD5qOyAjIGZyb20gRlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBKCivvvYs8Pms7ICMgZnJvbSBGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIEsKK++9jDw+bDsgIyBmcm9tIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgTAor772NPD5tOyAjIGZyb20gRlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBNCivvvY48Pm47ICMgZnJvbSBGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIE4KK++9jzw+bzsgIyBmcm9tIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgTwor772QPD5wOyAjIGZyb20gRlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBQCivvvZE8PnE7ICMgZnJvbSBGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIFEKK++9kjw+cjsgIyBmcm9tIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgUgor772TPD5zOyAjIGZyb20gRlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBTCivvvZQ8PnQ7ICMgZnJvbSBGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIFQKK++9lTw+dTsgIyBmcm9tIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgVQor772WPD52OyAjIGZyb20gRlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBWCivvvZc8Pnc7ICMgZnJvbSBGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIFcKK++9mDw+eDsgIyBmcm9tIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgWAor772ZPD55OyAjIGZyb20gRlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBZCivvvZo8Pno7ICMgZnJvbSBGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIFoKK++9mzw+J3snOyAjIGZyb20gRlVMTFdJRFRIIExFRlQgQ1VSTFkgQlJBQ0tFVAor772cPD4nfCc7ICMgZnJvbSBGVUxMV0lEVEggVkVSVElDQUwgTElORQor772dPD4nfSc7ICMgZnJvbSBGVUxMV0lEVEggUklHSFQgQ1VSTFkgQlJBQ0tFVAor772ePD4nfic7ICMgZnJvbSBGVUxMV0lEVEggVElMREUKK+OAgjw+772hOyAjIHRvIEhBTEZXSURUSCBJREVPR1JBUEhJQyBGVUxMIFNUT1AKK+OAjDw+772iOyAjIHRvIEhBTEZXSURUSCBMRUZUIENPUk5FUiBCUkFDS0VUCivjgI08Pu+9ozsgIyB0byBIQUxGV0lEVEggUklHSFQgQ09STkVSIEJSQUNLRVQKK+OAgTw+772kOyAjIHRvIEhBTEZXSURUSCBJREVPR1JBUEhJQyBDT01NQQor44O7PD7vvaU7ICMgdG8gSEFMRldJRFRIIEtBVEFLQU5BIE1JRERMRSBET1QKK+ODsjw+772mOyAjIHRvIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgV08KK+OCoTw+772nOyAjIHRvIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgU01BTEwgQQor44KjPD7vvag7ICMgdG8gSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTTUFMTCBJCivjgqU8Pu+9qTsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNNQUxMIFUKK+OCpzw+772qOyAjIHRvIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgU01BTEwgRQor44KpPD7vvas7ICMgdG8gSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTTUFMTCBPCivjg6M8Pu+9rDsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNNQUxMIFlBCivjg6U8Pu+9rTsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNNQUxMIFlVCivjg6c8Pu+9rjsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNNQUxMIFlPCivjg4M8Pu+9rzsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNNQUxMIFRVCivjg7w8Pu+9sDsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEtSElSQUdBTkEgUFJPTE9OR0VEIFNPVU5EIE1BUksKK+OCojw+772xOyAjIHRvIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgQQor44KkPD7vvbI7ICMgdG8gSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBJCivjgqY8Pu+9szsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFUKK+OCqDw+7720OyAjIHRvIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgRQor44KqPD7vvbU7ICMgdG8gSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBPCivjgqs8Pu+9tjsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEtBCivjgq08Pu+9tzsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEtJCivjgq88Pu+9uDsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEtVCivjgrE8Pu+9uTsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEtFCivjgrM8Pu+9ujsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEtPCivjgrU8Pu+9uzsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNBCivjgrc8Pu+9vDsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNJCivjgrk8Pu+9vTsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNVCivjgrs8Pu+9vjsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNFCivjgr08Pu+9vzsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNPCivjgr88Pu++gDsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFRBCivjg4E8Pu++gTsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFRJCivjg4Q8Pu++gjsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFRVCivjg4Y8Pu++gzsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFRFCivjg4g8Pu++hDsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFRPCivjg4o8Pu++hTsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE5BCivjg4s8Pu++hjsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE5JCivjg4w8Pu++hzsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE5VCivjg408Pu++iDsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE5FCivjg448Pu++iTsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE5PCivjg488Pu++ijsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEhBCivjg5I8Pu++izsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEhJCivjg5U8Pu++jDsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEhVCivjg5g8Pu++jTsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEhFCivjg5s8Pu++jjsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEhPCivjg548Pu++jzsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE1BCivjg588Pu++kDsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE1JCivjg6A8Pu++kTsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE1VCivjg6E8Pu++kjsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE1FCivjg6I8Pu++kzsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE1PCivjg6Q8Pu++lDsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFlBCivjg6Y8Pu++lTsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFlVCivjg6g8Pu++ljsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFlPCivjg6k8Pu++lzsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFJBCivjg6o8Pu++mDsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFJJCivjg6s8Pu++mTsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFJVCivjg6w8Pu++mjsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFJFCivjg608Pu++mzsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFJPCivjg688Pu++nDsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFdBCivjg7M8Pu++nTsgIyB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE4KK+OCmTw+776eOyAjIHRvIEhBTEZXSURUSCBLQVRBS0FOQSBWT0lDRUQgU09VTkQgTUFSSwor44KaPD7vvp87ICMgdG8gSEFMRldJRFRIIEtBVEFLQU5BIFNFTUktVk9JQ0VEIFNPVU5EIE1BUksKK+GFoDw+776gOyAjIHRvIEhBTEZXSURUSCBIQU5HVUwgRklMTEVSCivhhIA8Pu++oTsgIyB0byBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBLSVlFT0sKK+GEgTw+776iOyAjIHRvIEhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFNTQU5HS0lZRU9LCivhhqo8Pu++ozsgIyB0byBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBLSVlFT0stU0lPUwor4YSCPD7vvqQ7ICMgdG8gSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgTklFVU4KK+GGrDw+776lOyAjIHRvIEhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIE5JRVVOLUNJRVVDCivhhq08Pu++pjsgIyB0byBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBOSUVVTi1ISUVVSAor4YSDPD7vvqc7ICMgdG8gSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgVElLRVVUCivhhIQ8Pu++qDsgIyB0byBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBTU0FOR1RJS0VVVAor4YSFPD7vvqk7ICMgdG8gSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgUklFVUwKK+GGsDw+776qOyAjIHRvIEhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFJJRVVMLUtJWUVPSwor4YaxPD7vvqs7ICMgdG8gSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgUklFVUwtTUlFVU0KK+GGsjw+776sOyAjIHRvIEhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFJJRVVMLVBJRVVQCivhhrM8Pu++rTsgIyB0byBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBSSUVVTC1TSU9TCivhhrQ8Pu++rjsgIyB0byBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBSSUVVTC1USElFVVRICivhhrU8Pu++rzsgIyB0byBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBSSUVVTC1QSElFVVBICivhhJo8Pu++sDsgIyB0byBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBSSUVVTC1ISUVVSAor4YSGPD7vvrE7ICMgdG8gSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgTUlFVU0KK+GEhzw+776yOyAjIHRvIEhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFBJRVVQCivhhIg8Pu++szsgIyB0byBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBTU0FOR1BJRVVQCivhhKE8Pu++tDsgIyB0byBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBQSUVVUC1TSU9TCivhhIk8Pu++tTsgIyB0byBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBTSU9TCivhhIo8Pu++tjsgIyB0byBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBTU0FOR1NJT1MKK+GEizw+7763OyAjIHRvIEhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIElFVU5HCivhhIw8Pu++uDsgIyB0byBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBDSUVVQwor4YSNPD7vvrk7ICMgdG8gSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgU1NBTkdDSUVVQwor4YSOPD7vvro7ICMgdG8gSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgQ0hJRVVDSAor4YSPPD7vvrs7ICMgdG8gSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgS0hJRVVLSAor4YSQPD7vvrw7ICMgdG8gSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgVEhJRVVUSAor4YSRPD7vvr07ICMgdG8gSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgUEhJRVVQSAor4YSSPD7vvr47ICMgdG8gSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgSElFVUgKK+GFoTw+77+COyAjIHRvIEhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEEKK+GFojw+77+DOyAjIHRvIEhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEFFCivhhaM8Pu+/hDsgIyB0byBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBZQQor4YWkPD7vv4U7ICMgdG8gSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgWUFFCivhhaU8Pu+/hjsgIyB0byBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBFTwor4YWmPD7vv4c7ICMgdG8gSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgRQor4YWnPD7vv4o7ICMgdG8gSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgWUVPCivhhag8Pu+/izsgIyB0byBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBZRQor4YWpPD7vv4w7ICMgdG8gSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgTwor4YWqPD7vv407ICMgdG8gSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgV0EKK+GFqzw+77+OOyAjIHRvIEhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFdBRQor4YWsPD7vv487ICMgdG8gSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgT0UKK+GFrTw+77+SOyAjIHRvIEhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFlPCivhha48Pu+/kzsgIyB0byBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBVCivhha88Pu+/lDsgIyB0byBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBXRU8KK+GFsDw+77+VOyAjIHRvIEhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFdFCivhhbE8Pu+/ljsgIyB0byBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBXSQor4YWyPD7vv5c7ICMgdG8gSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgWVUKK+GFszw+77+aOyAjIHRvIEhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEVVCivhhbQ8Pu+/mzsgIyB0byBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBZSQor4YW1PD7vv5w7ICMgdG8gSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgSQor77+gPD4nwqInOyAjIGZyb20gRlVMTFdJRFRIIENFTlQgU0lHTgor77+hPD4nwqMnOyAjIGZyb20gRlVMTFdJRFRIIFBPVU5EIFNJR04KK++/ojw+J8KsJzsgIyBmcm9tIEZVTExXSURUSCBOT1QgU0lHTgor77+jPD4nwq8nOyAjIGZyb20gRlVMTFdJRFRIIE1BQ1JPTgorJ+OAgCc8PicgJzsgIyBpZGVvZ3JhcGhpYyBzcGFjZSAocGxhY2UgdGhpcyBhZnRlciBNQUNST04pCivvv6Q8PifCpic7ICMgZnJvbSBGVUxMV0lEVEggQlJPS0VOIEJBUgor77+lPD4nwqUnOyAjIGZyb20gRlVMTFdJRFRIIFlFTiBTSUdOCivvv6Y8PuKCqTsgIyBmcm9tIEZVTExXSURUSCBXT04gU0lHTgor4pSCPD7vv6g7ICMgdG8gSEFMRldJRFRIIEZPUk1TIExJR0hUIFZFUlRJQ0FMCivihpA8Pu+/qTsgIyB0byBIQUxGV0lEVEggTEVGVFdBUkRTIEFSUk9XCivihpE8Pu+/qjsgIyB0byBIQUxGV0lEVEggVVBXQVJEUyBBUlJPVwor4oaSPD7vv6s7ICMgdG8gSEFMRldJRFRIIFJJR0hUV0FSRFMgQVJST1cKK+KGkzw+77+sOyAjIHRvIEhBTEZXSURUSCBET1dOV0FSRFMgQVJST1cKK+KWoDw+77+tOyAjIHRvIEhBTEZXSURUSCBCTEFDSyBTUVVBUkUKK+KXizw+77+uOyAjIHRvIEhBTEZXSURUSCBXSElURSBDSVJDTEUKKworIyBlb2YKKwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9UcmFuc2xpdGVyYXRvcl9HcmVla19MYXRpbi50eHQgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL1RyYW5zbGl0ZXJhdG9yX0dyZWVrX0xhdGluLnR4dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5jMjQwMTI4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9UcmFuc2xpdGVyYXRvcl9HcmVla19MYXRpbi50eHQKQEAgLTAsMCArMSwzNDIgQEAKK++7vyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDb3B5cmlnaHQgKGMpIDE5OTktMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworIyBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQXR0aWMvVHJhbnNsaXRlcmF0b3JfR3JlZWtfTGF0aW4udHh0LHYgJAorIyAkRGF0ZTogMjAwMi8wNy8yMSAwODozOToyMyAkCisjICRSZXZpc2lvbjogMS4yMSAkCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBSdWxlcyBhcmUgcHJlZGljYXRlZCBvbiBydW5uaW5nIE5GRCBmaXJzdCwgYW5kIE5GQyBhZnRlcndhcmRzCisjIDo6IFtcdTAwMDAtXHUwMDdGIFx1MDM3MC1cdTAzRkYgWzpHcmVlazpdIFs6bm9uc3BhY2luZyBtYXJrOl1dIDsKKyMgTUlOSU1BTCBGSUxURVIgR0VORVJBVEVEIEZPUjogR3JlZWstTGF0aW4KKzo6IFs7XHUwMEI1XHUwMEI3XHUwMEM0XHUwMENCXHUwMENGXHUwMEQ2XHUwMERDXHUwMEU0XHUwMEVCXHUwMEVGXHUwMEY2XHUwMEZDXHUwMEZGLVx1MDEwMVx1MDExMi1cdTAxMTNcdTAxMkEtXHUwMTJCXHUwMTRDLVx1MDE0RFx1MDE2QS1cdTAxNkJcdTAxNzhcdTAxRDUtXHUwMURDXHUwMURFLVx1MDFFM1x1MDFFQy1cdTAxRURcdTAyMkEtXHUwMjJEXHUwMjMwLVx1MDIzM1x1MDMwNFx1MDMwOFx1MDMxMy1cdTAzMTRcdTAzNDItXHUwMzQ1XHUwMzdBXHUwMzdFXHUwMzg2LVx1MDM4QVx1MDM4Q1x1MDM4RS1cdTAzQTFcdTAzQTMtXHUwM0NFXHUwM0QwLVx1MDNEN1x1MDNEQlx1MDNERFx1MDNERlx1MDNFMVx1MDNFM1x1MDNFNVx1MDNFN1x1MDNFOVx1MDNFQlx1MDNFRFx1MDNFRi1cdTAzRjVcdTA0MDFcdTA0MDdcdTA0NTFcdTA0NTdcdTA0RDItXHUwNEQzXHUwNERBLVx1MDRERlx1MDRFMi1cdTA0RTdcdTA0RUEtXHUwNEYxXHUwNEY0LVx1MDRGNVx1MDRGOC1cdTA0RjlcdTFFMTQtXHUxRTE3XHUxRTIwLVx1MUUyMVx1MUUyNi1cdTFFMjdcdTFFMkUtXHUxRTJGXHUxRTM4LVx1MUUzOVx1MUU0RS1cdTFFNTNcdTFFNUMtXHUxRTVEXHUxRTdBLVx1MUU3Qlx1MUU4NC1cdTFFODVcdTFFOEMtXHUxRThEXHUxRTk3XHUxRjAwLVx1MUYxNVx1MUYxOC1cdTFGMURcdTFGMjAtXHUxRjQ1XHUxRjQ4LVx1MUY0RFx1MUY1MC1cdTFGNTdcdTFGNTlcdTFGNUJcdTFGNURcdTFGNUYtXHUxRjdEXHUxRjgwLVx1MUZCNFx1MUZCNi1cdTFGQkNcdTFGQkVcdTFGQzEtXHUxRkM0XHUxRkM2LVx1MUZDQ1x1MUZDRi1cdTFGRDNcdTFGRDYtXHUxRkRCXHUxRkRGLVx1MUZFQ1x1MUZGMi1cdTFGRjRcdTFGRjYtXHUxRkZDXHUyMTI2XSA7CisKKzo6IE5GRCAoTkZDKSA7IAorCisjIFRFU1QgQ0FTRVMKKworIyDhvYjOu86vzrPOv865IOG8lM68z4bOv869zrXPgiDPgM6/zrvOu+G/ts69IOG8gM+Gz4HPjM69z4nOvSDPhs6/zrLOtc+Bz47PhM61z4HOv865IOKAlCDOoM67zqzPhM+Jzr3Ov8+CCisjIOG+giDhvpIg4b6iIOG+gyDhvpMg4b6jCisjIOG+syDhv4Mg4b+zIOG9gyDhvYQKKyMg4b2gz4Ig4b2hz4Ig4b2iz4Ig4b2jz4IKKyMg4b2oz4Ig4b2pz4Ig4b2qz4Ig4b2rz4IKKyMg4b2ozqMg4b2pzqMg4b2qzqMg4b2rzqMKKyMg4bqgLCDhuqEsIOG6uCwg4bq5LCDhu4wsIOG7jQorCisjIFVzZWZ1bCB2YXJpYWJsZXMKKworJGxvd2VyID0gW1s6bGF0aW46XVs6Z3JlZWs6XSAmIFs6TGw6XV07IAorJGdsb3dlciA9IFtbOmdyZWVrOl0gJiBbOkxsOl1dOyAKKyR1cHBlciA9IFtbOmxhdGluOl1bOmdyZWVrOl0gJiBbOkx1Ol1dIDsgCiskYWNjZW50ID0gWzpNOl0gOworCisjIE5PVEU6IHJlc3RyaWN0IHRvIGp1c3QgdGhlIEdyZWVrICYgTGF0aW4gYWNjZW50cyB0aGF0IHdlIGNhcmUgYWJvdXQKKyMgVE9ETzogYnJvYWRlbiBvdXQgb25jZSBpbnRlcmF0aW9uIGlzIGZpeGVkCiskYWNjZW50TWludXMgPSBbIFtcdTAzMDAtXHUwMzQ1XSAmIFs6TTpdIC0gW1x1MDMzOF1dIDsKKworJG1hY3JvbiA9IFx1MDMwNCA7CiskZGRvdCA9IFx1MDMwOCA7CiskZGRvdG1hYyA9IFskZGRvdCRtYWNyb25dOworCiskbGNndm93ZWwgPSBbzrHOtc63zrnOv8+Fz4ldIDsgCiskdWNndm93ZWwgPSBbzpHOlc6XzpnOn86lzqldIDsgCiskZ3Zvd2VsID0gWyRsY2d2b3dlbCAkdWNndm93ZWxdIDsgCiskbGNndm93ZWxDID0gWyRsY2d2b3dlbCAkYWNjZW50XSA7IAorCiskZXZvd2VsID0gW2FlaW91eUFFSU9VWV07CiskZXZvd2VsMiA9IFtpdXlJVVldOworJHZvd2VsID0gWyAkZXZvd2VsICRndm93ZWxdIDsgCisKKyRnYW1tYUxpa2UgPSBbzpPOms6ezqfOs866zr7Ph8+wXSA7IAorJGVnYW1tYUxpa2UgPSBbR0tYQ2dreGNdIDsgCiskc21vb3RoID0gzJMgOyAKKyRyb3VnaCA9IMyUIDsgCiskaW90YXN1YiA9IM2FIDsgCisKKyRldm93ZWxfaSA9IFskZXZvd2VsLVtpSV1dIDsKKyRldm93ZWwyX2kgPSBbdXlVWV07CisKKyR1bmRlcmJhciA9IFx1MDMzMTsKKworJGFmdGVyTGV0dGVyID0gWzpMOl0gW1s6TTpdXCddKiA7CiskYmVmb3JlTGV0dGVyID0gW1s6TTpdXCddKiBbOkw6XSA7CiskYmVmb3JlTG93ZXIgPSAkYWNjZW50ICogJGxvd2VyIDsgCisKKyRub3RMZXR0ZXIgPSBbXls6TDpdWzpNOl1dIDsKKyR1bmRlciA9IMyxOworCisjIEZpeCBwdW5jdHVhdGlvbgorIyBwcmVzZXJ2ZSBvcmlnaW5hbAorXDogPD4gXDogJHVuZGVyIDsKK1w/IDw+IFw/ICR1bmRlciA7CisKK1w7IDw+IFw/IDsKK8K3IDw+IFw6IDsKKworIyBDSVJDVU1GTEVYOiBjb252ZXJ0IGdyZWVrIGNpcmN1bWZsZXggdG8gbm9ybWFsIG9uZS4gQ291bGQgdXNlIHRpbGRlIG9yIGludmVydGVkIGJyZXZlCisKK1x1MDM0MiA8PiBcdTAzMDIgOyAKKworIyBJT1RBOiBjb252ZXJ0IGlvdGEgc3Vic2NyaXB0IHRvIGlvdGEKKyMgZmlyc3QgbWFrZSBwcmV2aW91cyBhbHBoYSBsb25nIQorCiskYWNjZW50X21pbnVzID0gW1skYWNjZW50XS1bJGlvdGFzdWIkbWFjcm9uXV07CisKK86RIH0gJGFjY2VudF9taW51cyAqICRpb3Rhc3ViID4gfCDOkSAkbWFjcm9uIDsgIAorzrEgfSAkYWNjZW50X21pbnVzICogJGlvdGFzdWIgPiB8IM6xICRtYWNyb24gOyAKKworIyBub3cgY29udmVydCB0byB1cHBlcmNhc2UgaWYgYWZ0ZXIgdXBwZXJjYXNlLCBvdyB0byBsb3dlcmNhc2UKKworJHVwcGVyICRhY2NlbnQgKiB7ICRpb3Rhc3ViID4gSSA7IAorJGlvdGFzdWIgPiBpIDsgCisKK3wgJDEgJGlvdGFzdWIgPCAoJGV2b3dlbCAkbWFjcm9uICRhY2NlbnRNaW51cyAqKSBpIDsKK3wgJDEgJGlvdGFzdWIgPCAoJGV2b3dlbCAkbWFjcm9uICRhY2NlbnRNaW51cyAqKSBJIDsKKworIyBCUkVBVEhJTkcKKworIyBDb252ZXJ0IHJvdWdoIGJyZWF0aGluZyB0byBoLCBhbmQgbW92ZSBiZWZvcmUgbGV0dGVycy4KKworIyBNYWtlIEEgYCB4ID0gPiBIIGEgeAorCisgzpEgKCRtYWNyb24/KSAkcm91Z2ggfSAkYmVmb3JlTG93ZXIgPiBIIHwgzrEgJDE7IAorIM6VICRyb3VnaCB9ICRiZWZvcmVMb3dlciA+IEggfCDOtTsgCisgzpcgJHJvdWdoIH0gJGJlZm9yZUxvd2VyID4gSCB8IM63IDsgCisgzpkgKCRkZG90PykgJHJvdWdoIH0gJGJlZm9yZUxvd2VyID4gSCB8IM65ICAkMTsgCisgzp8gJHJvdWdoIH0gJGJlZm9yZUxvd2VyID4gSCB8IM6/IDsgCisgzqUgJHJvdWdoIH0gJGJlZm9yZUxvd2VyID4gSCB8IM+FIDsgCisgzqkgKCRkZG90PykgJHJvdWdoIH0gJGJlZm9yZUxvd2VyID4gSCB8IM+JICQxOyAKKworIyBNYWtlIEEgeCBgID0gPiBIIGEgeAorCivOkSAoJGdsb3dlciAkbWFjcm9uPykgJHJvdWdoID4gSCB8IM6xICQxIDsgCivOlSAoJGdsb3dlcikgJHJvdWdoID4gSCB8IM61ICQxIDsgCivOlyAoJGdsb3dlcikgJHJvdWdoID4gSCB8IM63ICQxIDsgCivOmSAoJGdsb3dlciAkZGRvdD8pICRyb3VnaCA+IEggfCDOuSAkMSA7IAorzp8gKCRnbG93ZXIpICRyb3VnaCA+IEggfCDOvyAkMSA7IAorzqUgKCRnbG93ZXIpICRyb3VnaCA+IEggfCDPhSAkMSA7IAorzqkgKCRnbG93ZXIgICRkZG90PykgJHJvdWdoID4gSCB8IM+JICQxIDsgCisKKyNPdGhlcndpc2UsIG1ha2UgeCBgIGludG8gaCB4IGFuZCBYIGAgaW50byBIIFgKKworKCRsY2d2b3dlbCArICRkZG90bWFjPyApICRyb3VnaCA+IGggfCAkMSA7IAorKCRndm93ZWwgKyAkZGRvdG1hYz8gKSAkcm91Z2ggPiBIIHwgJDEgOyAKKworIyBHbyBiYWNrd2FyZHMgd2l0aCBICisKK3wgJDEgJHJvdWdoIDwgaCAoJGV2b3dlbCAkbWFjcm9uICRkZG90PyAkZXZvd2VsMl9pICRtYWNyb24/KSA7Cit8ICQxICRyb3VnaCA8IGggKCRldm93ZWwgJGRkb3Q/ICRldm93ZWwyICRtYWNyb24/KSA7Cit8ICQxICRyb3VnaCA8IGggKCRldm93ZWwgJG1hY3Jvbj8gJGRkb3Q/KSA7CisKK3wgJDEgJHJvdWdoIDwgSCAoW0FFSU9VWV0gJG1hY3JvbiAkZGRvdD8gJGV2b3dlbDJfaSAkbWFjcm9uPykgOworfCAkMSAkcm91Z2ggPCBIIChbQUVJT1VZXSAkZGRvdD8gJGV2b3dlbDIgJG1hY3Jvbj8pIDsKK3wgJDEgJHJvdWdoIDwgSCAoW0FFSU9VWV0gJG1hY3Jvbj8gJGRkb3Q/KSA7CisKKyMgdGl0bGVjYXNlLCBoYXZlIHRvIGZpeCBpbmRpdmlkdWFsbHkKKyMgaW4gdGhlIGZ1dHVyZSwgd2Ugc2hvdWxkIGFkZCAmdXBwZXJjYXNlKCkgdG8gbWFrZSB0aGlzIGVhc2llcgorCit8IEEgJDEgJHJvdWdoIDwgSCBhICgkbWFjcm9uICAkZGRvdD8gJGV2b3dlbDJfaSAkbWFjcm9uPykgOworfCBFICQxICRyb3VnaCA8IEggZSAoJG1hY3JvbiAgJGRkb3Q/ICRldm93ZWwyX2kgJG1hY3Jvbj8pIDsKK3wgSSAkMSAkcm91Z2ggPCBIIGkgKCRtYWNyb24gICRkZG90PyAkZXZvd2VsMl9pICRtYWNyb24/KSA7Cit8IE8gJDEgJHJvdWdoIDwgSCBvICgkbWFjcm9uICAkZGRvdD8gJGV2b3dlbDJfaSAkbWFjcm9uPykgOworfCBVICQxICRyb3VnaCA8IEggdSAoJG1hY3JvbiAkZGRvdD8gJGV2b3dlbDJfaSAkbWFjcm9uPykgOworfCBZICQxICRyb3VnaCA8IEggeSAoJG1hY3JvbiAkZGRvdD8gJGV2b3dlbDJfaSAkbWFjcm9uPykgOworCit8IEEgJDEgJHJvdWdoIDwgSCBhICgkZGRvdD8gJGV2b3dlbDIgJG1hY3Jvbj8pIDsKK3wgRSAkMSAkcm91Z2ggPCBIIGUgKCRkZG90PyAkZXZvd2VsMiAkbWFjcm9uPykgOworfCBJICQxICRyb3VnaCA8IEggaSAoJGRkb3Q/ICRldm93ZWwyICRtYWNyb24/KSA7Cit8IE8gJDEgJHJvdWdoIDwgSCBvICgkZGRvdD8gJGV2b3dlbDIgJG1hY3Jvbj8pIDsKK3wgVSAkMSAkcm91Z2ggPCBIIHUgKCRkZG90PyAkZXZvd2VsMiAkbWFjcm9uPykgOworfCBZICQxICRyb3VnaCA8IEggeSAoJGRkb3Q/ICRldm93ZWwyICRtYWNyb24/KSA7CisKK3wgQSAkMSAkcm91Z2ggPCBIIGEgKCRtYWNyb24/ICRkZG90PyApIDsKK3wgRSAkMSAkcm91Z2ggPCBIIGUgKCRtYWNyb24/ICRkZG90PyApIDsKK3wgSSAkMSAkcm91Z2ggPCBIIGkgKCRtYWNyb24/ICRkZG90PyApIDsKK3wgTyAkMSAkcm91Z2ggPCBIIG8gKCRtYWNyb24/ICRkZG90PyApIDsKK3wgVSAkMSAkcm91Z2ggPCBIIHUgKCRtYWNyb24/ICRkZG90PyApIDsKK3wgWSAkMSAkcm91Z2ggPCBIIHkgKCRtYWNyb24/ICRkZG90PyApIDsKKworIyBOb3cgZG8gc21vb3RoCisKKyNkZWxldGUgc21vb3RoIGJyZWF0aGluZyBmb3IgTGF0aW4KKyRzbW9vdGggPiA7IAorCisjIGluc2VydCBpbiBHcmVlaworIyB0aGUgYXNzdW1wdGlvbiBpcyB0aGF0IGFsbCBNYXJrcyBhcmUgb24gbGV0dGVycy4KKworIHwgJDEgJHNtb290aCA8ICRub3RMZXR0ZXIgeyAoW3JSXSkgfSBbXmhIJHNtb290aCRyb3VnaF0gOworIHwgJDEgJHNtb290aCA8ICRub3RMZXR0ZXIgeyAoJGV2b3dlbCAkbWFjcm9uPyAkZXZvd2VsMiAkbWFjcm9uPykgfSBbXiRzbW9vdGgkcm91Z2hdIDsKKyB8ICQxICRzbW9vdGggPCAkbm90TGV0dGVyIHsgKCRldm93ZWwgJG1hY3Jvbj8pIH0gW14kZXZvd2VsMiRzbW9vdGgkcm91Z2hdIDsKKworIyBUT0RPOiBwcmVzZXJ2ZSBzbW9vdGgvcm91Z2ggYnJlYXRoaW5nIGlmIG5vdCAKKyMgb24gaW5pdGlhbCB2b3dlbCBzZXF1ZW5jZQorCisjIG5lZWQgdG8gaGF2ZSB0aGVzZSB1cCBoZXJlIHNvIHRoZSBydWxlcyBkb24ndCBtYXNrCisKKyMgcmVtb3ZlIG5vdyBzdXBlcmZsdW91cyBtYWNyb24gd2hlbiByZXR1cm5pbmcKKworzpEgPCBBICRtYWNyb24gOyAgCivOsSA8IGEgJG1hY3JvbiA7IAorCivOtyA8PiBlICRtYWNyb24gOworzpcgPD4gRSAkbWFjcm9uIDsKKworz4YgPD4gcGggOyAKK86oIH0gJGJlZm9yZUxvd2VyIDw+IFBzIDsgCivOqCA8PiBQUyA7IAorCivOpiB9ICRiZWZvcmVMb3dlciA8PiBQaCA7IAorzqYgPD4gUEggOworz4ggPD4gcHMgOyAKKworz4kgPD4gbyAkbWFjcm9uIDsKK86pIDw+ICBPICRtYWNyb247CisKKyMgTk9STUFMCisKK86xIDw+IGEgOyAKK86RIDw+IEEgOyAKKworzrIgPD4gYiA7IAorzpIgPD4gQiA7IAorCivOsyB9ICRnYW1tYUxpa2UgPD4gbiB9ICRlZ2FtbWFMaWtlIDsgCivOsyA8PiBnIDsgCivOkyB9ICRnYW1tYUxpa2UgPD4gTiB9ICRlZ2FtbWFMaWtlIDsgCivOkyA8PiBHIDsgCisKK860IDw+IGQgOyAKK86UIDw+IEQgOyAKKworzrUgPD4gZSA7IAorzpUgPD4gRSA7IAorCivOtiA8PiB6IDsgCivOliA8PiBaIDsgCisKK864IDw+IHRoIDsgCivOmCB9ICRiZWZvcmVMb3dlciA8PiBUaCA7IAorzpggPD4gVEggOyAKKworzrkgPD4gaSA7IAorzpkgPD4gSSA7IAorCivOuiA8PiBrIDsKK86aIDw+IEsgOyAKKworzrsgPD4gbCA7IAorzpsgPD4gTCA7IAorCivOvCA8PiBtIDsgCivOnCA8PiBNIDsgCisKK869IH0gJGdhbW1hTGlrZSA+IG5cJyA7IAorzr0gPD4gbiA7IAorzp0gfSAkZ2FtbWFMaWtlIDw+IE5cJyA7IAorzp0gPD4gTiA7IAorCivOviA8PiB4IDsgCivOniA8PiBYIDsgCisKK86/IDw+IG8gOyAKK86fIDw+IE8gOyAKKworz4AgPD4gcCA7IAorzqAgPD4gUCA7IAorCivPgSAkcm91Z2ggPD4gcmg7IAorzqEgJHJvdWdoIH0gJGJlZm9yZUxvd2VyIDw+IFJoIDsgCivOoSAkcm91Z2ggPD4gUkggOyAKK8+BIDw+IHIgOyAKK86hIDw+IFIgOyAKKworIyBpbnNlcnQgc2VwYXJhdG9yCisKK1tQcF0geyB9IM+CID4gXCcgOyAKK1tQcF0geyB9IM+DID4gXCcgOworCisjIHVuZGVyYmFyIG1lYW5zIGV4Y2VwdGlvbgorCisjIGJlZm9yZSBhIGxldHRlciwgaW5pdGlhbAorz4IgfSAkYmVmb3JlTGV0dGVyIDw+IHMgJHVuZGVyYmFyIH0gJGJlZm9yZUxldHRlcjsKK8+DIH0gJGJlZm9yZUxldHRlciA8PiBzIH0gJGJlZm9yZUxldHRlcjsKKworIyBvdGhlcndpc2UsIGFmdGVyIGEgbGV0dGVyID0gZmluYWwgCiskYWZ0ZXJMZXR0ZXIgeyDPgyA8PiAkYWZ0ZXJMZXR0ZXIgeyBzICR1bmRlcmJhcjsKKyRhZnRlckxldHRlciB7IM+CIDw+ICRhZnRlckxldHRlciB7IHMgOworCisjIG90aGVyd2lzZSAoaXNvbGF0ZWQpID0gaW5pdGlhbAorz4IgPD4gcyAkdW5kZXJiYXI7CivPgyA8PiBzIDsKKworW1BwXSB7IM6jIDw+IFwnUyA7IAorzqMgPD4gUyA7IAorCivPhCA8PiB0IDsgCivOpCA8PiBUIDsgCisKKyR2b3dlbCB7z4UgfSA8PiB1IDsgCivPhSA8PiB5IDsgCiskdm93ZWwgeyDOpSA8PiBVIDsgCivOpSA8PiBZIDsgCisKK8+HIDw+IGNoIDsgCivOpyB9ICRiZWZvcmVMb3dlciA8PiBDaCA7IAorzqcgPD4gQ0ggOyAKKworIyBDb21wbGV0ZW5lc3MgZm9yIEFTQ0lJCisKKyRpZ25vcmUgPSBbWzpNYXJrOl0nJ10gKiA7CisKK3wgayAgPCBjIDsKK3wgcGggPCBmIDsKK3wgaSAgPCBqIDsKK3wgayA8IHEgOworfCBiIDwgdiB9ICR2b3dlbCA7Cit8IGIgPCB3IH0gJHZvd2VsOworfCB1IDwgdiA7Cit8IHUgPCB3OworfCBLIDwgQyA7Cit8IFBoIDwgRiA7Cit8IEkgPCBKIDsKK3wgSyA8IFEgOworfCBCIDwgViAgfSAkdm93ZWwgOworfCBCIDwgVyAgfSAkdm93ZWwgOworfCBVIDwgViA7Cit8IFUgPCBXIDsKKworJHJvdWdoIH0gJGlnbm9yZSBbOlVwcGVyY2FzZUxldHRlcjpdID4gSCA7CiskaWdub3JlIFs6VXBwZXJjYXNlTGV0dGVyOl0geyAkcm91Z2ggPiBIIDsKKyRyb3VnaCA8IEggOworJHJvdWdoIDw+IGggOworCisjIENvbXBsZXRlbmVzcyBmb3IgR3JlZWsKKworz5AgPiB8IM6yIDsKK8+RID4gfCDOuCA7CivPkiA+IHwgzqUgOworz5UgPiB8IM+GIDsKK8+WID4gfCDPgCA7CisKK8+wID4gfCDOuiA7CivPsSA+IHwgz4EgOworz7IgPiB8IM+DIDsKK8+zID4gaiA7CivPtCA+IHwgzpggOworz7UgPiB8IM61IDsKKworwrUgPiB8IM68IDsKKworIM26ID4gaTsKKworIyBkZWxldGUgYW55IHRyYWlsaW5nICcgbWFya3MgdXNlZCBmb3Igcm91bmR0cmlwcGluZworCisgPCBbzqDPgF0geyBcJyB9IFtTc10gOworIDwgW86dzr1dIHsgXCcgfSAkZWdhbW1hTGlrZSA7CisKKzo6TkZDIChORkQpIDsKKyMgKFtcdTAwMDAtXHUwMDdGIFs6TGF0aW46XSBbOkdyZWVrOl0gWzpub25zcGFjaW5nIG1hcms6XV0pIDsKKyMgKFtcdTAwMDAtXHUwMDdGIFx1MDBCNyBbOkxhdGluOl0gWzpub25zcGFjaW5nIG1hcms6XV0pIDsKKyMgTUlOSU1BTCBGSUxURVIgR0VORVJBVEVEIEZPUjogTGF0aW4tR3JlZWsgQkFDS1dBUkQKKzo6ICggWyc6P0EtWmEtelx1MDBDMC1cdTAwQzVcdTAwQzctXHUwMENGXHUwMEQxLVx1MDBENlx1MDBEOS1cdTAwRERcdTAwRTAtXHUwMEU1XHUwMEU3LVx1MDBFRlx1MDBGMS1cdTAwRjZcdTAwRjktXHUwMEZEXHUwMEZGLVx1MDEwRlx1MDExMi1cdTAxMjVcdTAxMjgtXHUwMTMwXHUwMTM0LVx1MDEzN1x1MDEzOS1cdTAxM0VcdTAxNDMtXHUwMTQ4XHUwMTRDLVx1MDE1MVx1MDE1NC1cdTAxNjVcdTAxNjgtXHUwMTdFXHUwMUEwLVx1MDFBMVx1MDFBRi1cdTAxQjBcdTAxQ0QtXHUwMURDXHUwMURFLVx1MDFFM1x1MDFFNi1cdTAxRjBcdTAxRjQtXHUwMUY1XHUwMUY4LVx1MDIxQlx1MDIxRS1cdTAyMUZcdTAyMjYtXHUwMjMzXHUwMzAwLVx1MDMzN1x1MDMzOS1cdTAzNDVcdTAzODUtXHUwMzg2XHUwMzg4LVx1MDM4QVx1MDM4Q1x1MDM4RS1cdTAzOTBcdTAzQUEtXHUwM0IwXHUwM0NBLVx1MDNDRVx1MDNEMy1cdTAzRDRcdTA0MDAtXHUwNDAxXHUwNDAzXHUwNDA3XHUwNDBDLVx1MDQwRVx1MDQxOVx1MDQzOVx1MDQ1MC1cdTA0NTFcdTA0NTNcdTA0NTdcdTA0NUMtXHUwNDVFXHUwNDc2LVx1MDQ3N1x1MDRDMS1cdTA0QzJcdTA0RDAtXHUwNEQzXHUwNEQ2LVx1MDREN1x1MDREQS1cdTA0REZcdTA0RTItXHUwNEU3XHUwNEVBLVx1MDRGNVx1MDRGOC1cdTA0RjlcdTFFMDAtXHUxRTk5XHUxRTlCXHUxRUEwLVx1MUVGOVx1MUYwMC1cdTFGMTVcdTFGMTgtXHUxRjFEXHUxRjIwLVx1MUY0NVx1MUY0OC1cdTFGNERcdTFGNTAtXHUxRjU3XHUxRjU5XHUxRjVCXHUxRjVEXHUxRjVGLVx1MUY3RFx1MUY4MC1cdTFGQjRcdTFGQjYtXHUxRkJDXHUxRkMxLVx1MUZDNFx1MUZDNi1cdTFGRDNcdTFGRDYtXHUxRkRCXHUxRkRELVx1MUZFRVx1MUZGMi1cdTFGRjRcdTFGRjYtXHUxRkZDXHUyMTJBLVx1MjEyQl0gKSA7CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL1RyYW5zbGl0ZXJhdG9yX0dyZWVrX0xhdGluX1VOR0VHTi50eHQgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL1RyYW5zbGl0ZXJhdG9yX0dyZWVrX0xhdGluX1VOR0VHTi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzk4NzY4ZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfR3JlZWtfTGF0aW5fVU5HRUdOLnR4dApAQCAtMCwwICsxLDI0OCBAQAor77u/Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENvcHlyaWdodCAoYykgMTk5OS0yMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisjIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9BdHRpYy9UcmFuc2xpdGVyYXRvcl9HcmVla19MYXRpbl9VTkdFR04udHh0LHYgJAorIyAkRGF0ZTogMjAwMi8wNy8yNiAxNjowOTowNCAkCisjICRSZXZpc2lvbjogMS4yICQKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBGb3IgbW9kZXJuIEdyZWVrLCBiYXNlZCBvbiBVTkdFR04gcnVsZXMuCisKKyMgUnVsZXMgYXJlIHByZWRpY2F0ZWQgb24gcnVubmluZyBORkQgZmlyc3QsIGFuZCBORkMgYWZ0ZXJ3YXJkcworIyBNSU5JTUFMIEZJTFRFUiBHRU5FUkFURUQgRk9SOiBHcmVlay1MYXRpbi9VTkdFR04KKyMgV0FSTklORzogbmVlZCB0byBhZGQgYWNjZW50cyB0byBib3RoIGZpbHRlcnMgIyMjCisjIDo6IFvMgcyEzIbMiDvCtcK3w4DDgsOIw4rDjMOOw5LDlMOZw5vDoMOiw6jDqsOsw67DssO0w7nDu8SILcSJxJwtxJ3EpC3EpcS0LcS1xZwtxZ3FtC3Ft8ebLcecx7gtx7nMgMyCzJMtzJTNgM2CLc2DzYXNus2+zoYtzorOjM6OLc6hzqMtz47PkC3Pls+wLc+10IDQjdGQ0Z3huJQt4biV4bmQLeG5keG6gC3huoHhupAt4bqR4bqkLeG6reG6sC3hurHhur4t4buH4buQLeG7meG7nC3hu53hu6ot4bur4buyLeG7s+G8gC3hvJXhvJgt4byd4bygLeG9heG9iC3hvY3hvZAt4b2X4b2Z4b2b4b2d4b2fLeG9veG+gC3hvrThvrYt4b684b6+4b+BLeG/hOG/hi3hv43hv48t4b+T4b+WLeG/m+G/neG/ny3hv63hv7It4b+04b+2LeG/vOKEpl0gOworCis6OiBbW1s6R3JlZWs6XVs6TW46XVs6TWU6XV0gW1w6LTs/XHUwMEI3XHUwMzdFXHUwMzg3XV0gOworOjpORkQgKE5GQykgOworCisjIFVzZWZ1bCB2YXJpYWJsZXMKKworJGxvd2VyID0gW1s6bGF0aW46XVs6Z3JlZWs6XSAmIFs6TGw6XV0gOworJHVwcGVyID0gW1s6bGF0aW46XVs6Z3JlZWs6XSAmIFs6THU6XV0gOworJGFjY2VudCA9IFtbOk1uOl1bOk1lOl1dIDsKKworJG1hY3JvbiA9IMyEIDsKKyRkZG90ID0gzIggOworCiskbGNndm93ZWwgPSBbzrHOtc63zrnOv8+Fz4ldIDsKKyR1Y2d2b3dlbCA9IFvOkc6VzpfOmc6fzqXOqV0gOworJGd2b3dlbCA9IFskbGNndm93ZWwgJHVjZ3Zvd2VsXSA7CiskbGNndm93ZWxDID0gWyRsY2d2b3dlbCAkYWNjZW50XSA7CisKKyRldm93ZWwgPSBbYWVpb3V5QUVJT1VZXTsKKyR2b3dlbCA9IFsgJGV2b3dlbCAkZ3Zvd2VsXSA7CisKKyRiZWZvcmVMb3dlciA9ICRhY2NlbnQgKiAkbG93ZXIgOworCiskZ2FtbWFMaWtlID0gW86TzprOns6nzrPOus6+z4fPsF0gOworJGVnYW1tYUxpa2UgPSBbR0tYQ2dreGNdIDsKKyRzbW9vdGggPSDMkyA7Ciskcm91Z2ggPSDMlCA7CiskaW90YXN1YiA9IM2FIDsKKworJHNvZnRlbmVyID0gW86yzpLOs86TzrTOlM62zpbOu86bzrzOnM69zp3Pgc6hJGd2b3dlbF0gOworCiskdW5kZXIgPSDMsTsKKworJGNhcm9uID0gzIw7CisKKyRhZnRlckxldHRlciA9IFs6TDpdIFtcJyRhY2NlbnRdKiA7CiskYmVmb3JlTGV0dGVyID0gW1wnJGFjY2VudF0qIFs6TDpdIDsKKworIyBGaXggcHVuY3R1YXRpb24KKworIyBwcmVzZXJ2ZSBvcmdpbmFsCitcOiA8PiBcOiAkdW5kZXIgOworXD8gPD4gXD8gJHVuZGVyIDsKKworXDsgPD4gXD8gOworwrcgPD4gXDogOworCisjIEZpeCBhbnkgYW5jaWVudCBjaGFyYWN0ZXJzIHRoYXQgY3JlZXAgaW4KKworzYIgPiDMgSA7CivMgiA+IMyBIDsKK8yAID4gzIEgOworJHNtb290aCA+IDsKKyRyb3VnaCA+IDsKKyRpb3Rhc3ViID4gOworzbogPiA7CisKKyMgbmVlZCB0byBoYXZlIHRoZXNlIHVwIGhlcmUgc28gdGhlIHJ1bGVzIGRvbid0IG1hc2sKKworzrcgPD4gaSAkdW5kZXIgOworzpcgPD4gSSAkdW5kZXIgOworCivOqCB9ICRiZWZvcmVMb3dlciA8PiBQcyA7CivOqCA8PiBQUyA7CivPiCA8PiBwcyA7CisKK8+JIDw+IG8gJHVuZGVyIDsKK86pIDw+ICBPICR1bmRlcjsKKworIyBhdCBiZWdpbmluZyBvciBlbmQgb2Ygd29yZCwgY29udmVydCBtcCB0byBiCisKK1teWzpMOl0kYWNjZW50XSB7IM68z4AgPiBiIDsKK868z4AgfSBbXls6TDpdJGFjY2VudF0gPiBiIDsKK1teWzpMOl0kYWNjZW50XSB7IFvOnM68XVvOoM+AXSA+IEIgOworW86czrxdW86gz4BdIH0gW15bOkw6XSRhY2NlbnRdID4gQiA7CisKK868z4AgPCBiIDsKK86cz4AgPCBCIH0gJGJlZm9yZUxvd2VyIDsKK86czqAgPCBCIDsKKworIyBoYW5kbGUgZGlwaHRob25ncyBlbmRpbmcgd2l0aCB1cHNpbG9uCisKK86/z4UgPD4gb3UgOworzp/OpSA8PiBPVSA7CivOn8+FIDw+IE91IDsKK86/zqUgPD4gb1UgOworCiskZm1ha2VyID0gW2FlaUFFSV0gJHVuZGVyID8gOworJHNoaWZ0Rm9yd2FyZFZvd2VscyA9IFtbOk1uOl0tW1x1MDMwOF1dOyAjIG5vdGU6IGEgZGlhZXJlc2lzIGtlZXBzIHRoZSBpdGVtcyBzZXBhcmF0ZQorCiskZm1ha2VyIHsgz4UgKCAkc2hpZnRGb3J3YXJkVm93ZWxzICkqIH0gJHNvZnRlbmVyID4gJDEgdiAkdW5kZXIgOworz4UgJDEgPCAoICRzaGlmdEZvcndhcmRWb3dlbHMgKSogdiAkdW5kZXIgOworCiskZm1ha2VyIHsgz4UgKCAkc2hpZnRGb3J3YXJkVm93ZWxzICkqIH0gPiAkMSBmICR1bmRlcjsKK8+FICQxIDwgKCAkc2hpZnRGb3J3YXJkVm93ZWxzICkqIGYgJHVuZGVyIDsKKworJGZtYWtlciB7IM6lIH0gJHNvZnRlbmVyIDw+IFYgJHVuZGVyIDsKKyRmbWFrZXIgeyDOpSA8PiBVICR1bmRlciA7CisKK8+FIDw+IHkgOworzqUgPD4gWSA7CisKKyMgTk9STUFMCisKK86xIDw+IGEgOworzpEgPD4gQSA7CisKK86yIDw+IHYgOworzpIgPD4gViA7CisKK86zIH0gJGdhbW1hTGlrZSA8PiBuIH0gJGVnYW1tYUxpa2UgOworzrMgPD4gZyA7CivOkyB9ICRnYW1tYUxpa2UgPD4gTiB9ICRlZ2FtbWFMaWtlIDsKK86TIDw+IEcgOworCivOtCA8PiBkIDsKK86UIDw+IEQgOworCivOtSA8PiBlIDsKK86VIDw+IEUgOworCivOtiA8PiB6IDsKK86WIDw+IFogOworCivOuCA8PiB0aCA7CivOmCB9ICRiZWZvcmVMb3dlciA8PiBUaCA7CivOmCA8PiBUSCA7CisKK865IDw+IGkgOworzpkgPD4gSSA7CisKK866IDw+IGsgOworzpogPD4gSyA7CisKK867IDw+IGwgOworzpsgPD4gTCA7CisKK868IDw+IG0gOworzpwgPD4gTSA7CisKK869IH0gJGdhbW1hTGlrZSA+IG5cJyA7CivOvSA8PiBuIDsKK86dIH0gJGdhbW1hTGlrZSA8PiBOXCcgOworzp0gPD4gTiA7CisKK86+IDw+IHggOworzp4gPD4gWCA7CisKK86/IDw+IG8gOworzp8gPD4gTyA7CisKK8+AIDw+IHAgOworzqAgPD4gUCA7CisKK8+BIDw+IHIgOworzqEgPD4gUiA7CisKK1tQcF0geyB9IM+CID4gXCcgOworW1BwXSB7IH0gz4MgPiBcJyA7CisKKyMgQ2Fyb24gbWVhbnMgZXhjZXB0aW9uCisKKyMgYmVmb3JlIGEgbGV0dGVyLCBpbml0aWFsCivPgiB9ICRiZWZvcmVMZXR0ZXIgPD4gcyAkdW5kZXIgfSAkYmVmb3JlTGV0dGVyOworz4MgfSAkYmVmb3JlTGV0dGVyIDw+IHMgfSAkYmVmb3JlTGV0dGVyOworCisjIG90aGVyd2lzZSwgYWZ0ZXIgYSBsZXR0ZXIgPSBmaW5hbAorJGFmdGVyTGV0dGVyIHsgz4MgPD4gJGFmdGVyTGV0dGVyIHsgcyAkdW5kZXI7CiskYWZ0ZXJMZXR0ZXIgeyDPgiA8PiAkYWZ0ZXJMZXR0ZXIgeyBzIDsKKworIyBvdGhlcndpc2UgKGlzb2xhdGVkKSA9IGluaXRpYWwKK8+CIDw+IHMgJHVuZGVyOworz4MgPD4gcyA7CisKK1tQcF0geyDOoyA8PiBcJ1MgOworzqMgPD4gUyA7CisKK8+EIDw+IHQgOworzqQgPD4gVCA7CisKK8+GIDw+IGYgOworzqYgPD4gRiA7CisKK8+HIDw+IGNoIDsKK86nIH0gJGJlZm9yZUxvd2VyIDw+IENoIDsKK86nIDw+IENIIDsKKworIyBDb21wbGV0ZW5lc3MgZm9yIEFTQ0lJCisKKyMgJGlnbm9yZSA9IFtbOk1hcms6XScnXSAqIDsKKworfCBjaCA8IGggOworfCBrICA8IGMgOworfCBpICA8IGogOworfCBrIDwgcSA7Cit8IGIgPCB1IH0gJHZvd2VsIDsKK3wgYiA8IHcgfSAkdm93ZWwgOworfCB5IDwgdSA7Cit8IHkgPCB3IDsKKworfCBDaCA8IEggOworfCBLIDwgQyA7Cit8IEkgPCBKIDsKK3wgSyA8IFEgOworfCBCIDwgVyB9ICR2b3dlbCA7Cit8IEIgPCBVIH0gJHZvd2VsIDsKK3wgWSA8IFcgOworfCBZIDwgVSA7CisKKyMgQ29tcGxldGVuZXNzIGZvciBHcmVlaworCivPkCA+IHwgzrIgOworz5EgPiB8IM64IDsKK8+SID4gfCDOpSA7CivPlSA+IHwgz4YgOworz5YgPiB8IM+AIDsKKworz7AgPiB8IM66IDsKK8+xID4gfCDPgSA7CivPsiA+IHwgz4MgOworz7MgPiBqIDsKK8+0ID4gfCDOmCA7CivPtSA+IHwgzrUgOworwrUgPiB8IM68IDsKKworIyBkZWxldGUgYW55IHRyYWlsaW5nICcgbWFya3MgdXNlZCBmb3Igcm91bmR0cmlwcGluZworCisgPCBbzqDPgF0geyBcJyB9IFtTc10gOworIDwgW86dzr1dIHsgXCcgfSAkZWdhbW1hTGlrZSA7CisKKzo6TkZDIChORkQpIDsKKworIyBNSU5JTUFMIEZJTFRFUiBHRU5FUkFURUQgRk9SOiBMYXRpbi1HcmVlay9VTkdFR04gQkFDS1dBUkQKKzo6IChbW1s6TGF0aW46XVs6TW46XVs6TWU6XV0gWydcOj9dXSkgOwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9UcmFuc2xpdGVyYXRvcl9HdWphcmF0aV9JbnRlckluZGljLnR4dCBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfR3VqYXJhdGlfSW50ZXJJbmRpYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOWYyNjhkYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfR3VqYXJhdGlfSW50ZXJJbmRpYy50eHQKQEAgLTAsMCArMSw5MyBAQAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENvcHlyaWdodCAoYykgMTk5OS0yMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisjIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9BdHRpYy9UcmFuc2xpdGVyYXRvcl9HdWphcmF0aV9JbnRlckluZGljLnR4dCx2ICQKKyMgJERhdGU6IDIwMDIvMDkvMTkgMTg6MTE6MjMgJAorIyAkUmV2aXNpb246IDEuNiAkCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBHdWphcmF0aS1JbnRlckluZGljCisjOjogTkZEIChORkMpIDsKK1x1MGE4MT5cdWUwMDE7ICMgU0lHTiBDQU5EUkFCSU5EVQorXHUwYTgyPlx1ZTAwMjsgIyBTSUdOIEFOVVNWQVJBCitcdTBhODM+XHVlMDAzOyAjIFNJR04gVklTQVJHQQorXHUwYTg1Plx1ZTAwNTsgIyBMRVRURVIgQQorXHUwYTg2Plx1ZTAwNjsgIyBMRVRURVIgQUEKK1x1MGE4Nz5cdWUwMDc7ICMgTEVUVEVSIEkKK1x1MGE4OD5cdWUwMDg7ICMgTEVUVEVSIElJCitcdTBhODk+XHVlMDA5OyAjIExFVFRFUiBVCitcdTBhOGE+XHVlMDBhOyAjIExFVFRFUiBVVQorXHUwYThiPlx1ZTAwYjsgIyBMRVRURVIgVk9DQUxJQyBSCitcdTBhOGQ+XHVlMDBkOyAjIFZPV0VMIENBTkRSQSBFCitcdTBhOGY+XHVlMDBmOyAjIExFVFRFUiBFCitcdTBhOTA+XHVlMDEwOyAjIExFVFRFUiBBSQorXHUwYTkxPlx1ZTAxMTsgIyBWT1dFTCBDQU5EUkEgTworXHUwYTkzPlx1ZTAxMzsgIyBMRVRURVIgTworXHUwYTk0Plx1ZTAxNDsgIyBMRVRURVIgQVUKK1x1MGE5NT5cdWUwMTU7ICMgTEVUVEVSIEtBCitcdTBhOTY+XHVlMDE2OyAjIExFVFRFUiBLSEEKK1x1MGE5Nz5cdWUwMTc7ICMgTEVUVEVSIEdBCitcdTBhOTg+XHVlMDE4OyAjIExFVFRFUiBHSEEKK1x1MGE5OT5cdWUwMTk7ICMgTEVUVEVSIE5HQQorXHUwYTlhPlx1ZTAxYTsgIyBMRVRURVIgQ0EKK1x1MGE5Yj5cdWUwMWI7ICMgTEVUVEVSIENIQQorXHUwYTljPlx1ZTAxYzsgIyBMRVRURVIgSkEKK1x1MGE5ZD5cdWUwMWQ7ICMgTEVUVEVSIEpIQQorXHUwYTllPlx1ZTAxZTsgIyBMRVRURVIgTllBCitcdTBhOWY+XHVlMDFmOyAjIExFVFRFUiBUVEEKK1x1MGFhMD5cdWUwMjA7ICMgTEVUVEVSIFRUSEEKK1x1MGFhMT5cdWUwMjE7ICMgTEVUVEVSIEREQQorXHUwYWEyPlx1ZTAyMjsgIyBMRVRURVIgRERIQQorXHUwYWEzPlx1ZTAyMzsgIyBMRVRURVIgTk5BCitcdTBhYTQ+XHVlMDI0OyAjIExFVFRFUiBUQQorXHUwYWE1Plx1ZTAyNTsgIyBMRVRURVIgVEhBCitcdTBhYTY+XHVlMDI2OyAjIExFVFRFUiBEQQorXHUwYWE3Plx1ZTAyNzsgIyBMRVRURVIgREhBCitcdTBhYTg+XHVlMDI4OyAjIExFVFRFUiBOQQorXHUwYWFhPlx1ZTAyYTsgIyBMRVRURVIgUEEKK1x1MGFhYj5cdWUwMmI7ICMgTEVUVEVSIFBIQQorXHUwYWFjPlx1ZTAyYzsgIyBMRVRURVIgQkEKK1x1MGFhZD5cdWUwMmQ7ICMgTEVUVEVSIEJIQQorXHUwYWFlPlx1ZTAyZTsgIyBMRVRURVIgTUEKK1x1MGFhZj5cdWUwMmY7ICMgTEVUVEVSIFlBCitcdTBhYjA+XHVlMDMwOyAjIExFVFRFUiBSQQorXHUwYWIyPlx1ZTAzMjsgIyBMRVRURVIgTEEKK1x1MGFiMz5cdWUwMzM7ICMgTEVUVEVSIExMQQorXHUwYWI1Plx1ZTAzNTsgIyBMRVRURVIgVkEKK1x1MGFiNj5cdWUwMzY7ICMgTEVUVEVSIFNIQQorXHUwYWI3Plx1ZTAzNzsgIyBMRVRURVIgU1NBCitcdTBhYjg+XHVlMDM4OyAjIExFVFRFUiBTQQorXHUwYWI5Plx1ZTAzOTsgIyBMRVRURVIgSEEKK1x1MGFiYz5cdWUwM2M7ICMgU0lHTiBOVUtUQQorXHUwYWJkPlx1ZTAzZDsgIyBTSUdOIEFWQUdSQUhBCitcdTBhYmU+XHVlMDNlOyAjIFZPV0VMIFNJR04gQUEKK1x1MGFiZj5cdWUwM2Y7ICMgVk9XRUwgU0lHTiBJCitcdTBhYzA+XHVlMDQwOyAjIFZPV0VMIFNJR04gSUkKK1x1MGFjMT5cdWUwNDE7ICMgVk9XRUwgU0lHTiBVCitcdTBhYzI+XHVlMDQyOyAjIFZPV0VMIFNJR04gVVUKK1x1MGFjMz5cdWUwNDM7ICMgVk9XRUwgU0lHTiBWT0NBTElDIFIKK1x1MGFjND5cdWUwNDQ7ICMgVk9XRUwgU0lHTiBWT0NBTElDIFJSCitcdTBhYzU+XHVlMDQ1OyAjIFZPV0VMIFNJR04gQ0FORFJBIEUKK1x1MGFjNz5cdWUwNDc7ICMgVk9XRUwgU0lHTiBFCitcdTBhYzg+XHVlMDQ4OyAjIFZPV0VMIFNJR04gQUkKK1x1MGFjOT5cdWUwNDk7ICMgVk9XRUwgU0lHTiBDQU5EUkEgTworXHUwYWNiPlx1ZTA0YjsgIyBWT1dFTCBTSUdOIE8KK1x1MGFjYz5cdWUwNGM7ICMgVk9XRUwgU0lHTiBBVQorXHUwYWNkPlx1ZTA0ZDsgIyBTSUdOIFZJUkFNQQorXHUwYWQwPlx1ZTA1MDsgIyBPTQorXHUwYWUwPlx1ZTA2MDsgIyBMRVRURVIgVk9DQUxJQyBSUgorXHUwYWU2Plx1ZTA2NjsgIyBESUdJVCBaRVJPCitcdTBhZTc+XHVlMDY3OyAjIERJR0lUIE9ORQorXHUwYWU4Plx1ZTA2ODsgIyBESUdJVCBUV08KK1x1MGFlOT5cdWUwNjk7ICMgRElHSVQgVEhSRUUKK1x1MGFlYT5cdWUwNmE7ICMgRElHSVQgRk9VUgorXHUwYWViPlx1ZTA2YjsgIyBESUdJVCBGSVZFCitcdTBhZWM+XHVlMDZjOyAjIERJR0lUIFNJWAorXHUwYWVkPlx1ZTA2ZDsgIyBESUdJVCBTRVZFTgorXHUwYWVlPlx1ZTA2ZTsgIyBESUdJVCBFSUdIVAorXHUwYWVmPlx1ZTA2ZjsgIyBESUdJVCBOSU5FCitcdTA5NjQ+XHVlMDY0OyAgICAgICAgIyBEQU5EQQorXHUwOTY1Plx1ZTA2NTsgICAgICAgICMgRE9VQkxFIERBTkRBCisjICAgIDo6IE5GQyAoTkZEKSA7CisjIGVvZgpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9UcmFuc2xpdGVyYXRvcl9HdXJtdWtoaV9JbnRlckluZGljLnR4dCBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfR3VybXVraGlfSW50ZXJJbmRpYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uM2ZlNGZjOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfR3VybXVraGlfSW50ZXJJbmRpYy50eHQKQEAgLTAsMCArMSw5OSBAQAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENvcHlyaWdodCAoYykgMTk5OS0yMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisjIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9BdHRpYy9UcmFuc2xpdGVyYXRvcl9HdXJtdWtoaV9JbnRlckluZGljLnR4dCx2ICQKKyMgJERhdGU6IDIwMDIvMDkvMTkgMTg6MTE6MjMgJAorIyAkUmV2aXNpb246IDEuMTIgJAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMgR3VybXVraGktSW50ZXJJbmRpYworIzo6IE5GRCAoTkZDKSA7CisKKyNcdTBBMTZcdTBBM0M+XHVFMDU5OyAjIExFVFRFUiBLSEhBCisjXHUwQTE3XHUwQTNDPlx1RTA1QTsgIyBMRVRURVIgR0hIQQorI1x1MEExQ1x1MEEzQz5cdUUwNUI7ICMgTEVUVEVSIFpBCisjXHUwQTM4XHUwQTNDPlx1RTAzNjsgIyBMRVRURVIgU0hBCisjXHUwQTMyXHUwQTNDPlx1RTAzMzsgIyBMRVRURVIgTExBCisjXHUwQTJCXHUwQTNDPlx1RTA1RTsgIyBMRVRURVIgRkEKKworXHUwQTAyPlx1RTAwMjsgICMgU0lHTiBCSU5ESQorXHUwQTA1Plx1RTAwNTsgICMgTEVUVEVSIEEKK1x1MEEwNj5cdUUwMDY7ICAjIExFVFRFUiBBQQorXHUwQTA3Plx1RTAwNzsgICMgTEVUVEVSIEkKK1x1MEEwOD5cdUUwMDg7ICAjIExFVFRFUiBJSQorXHUwQTA5Plx1RTAwOTsgICMgTEVUVEVSIFUKK1x1MEEwQT5cdUUwMEE7ICAjIExFVFRFUiBVVQorXHUwQTBDPlx1RTAzMjsgICMgRkFMTEJBQ0sgOiBWT0NBTExJQyBMQSAKK1x1MEEwRj5cdUUwMEY7ICAjIExFVFRFUiBFRQorXHUwQTEwPlx1RTAxMDsgICMgTEVUVEVSIEFJCitcdTBBMTM+XHVFMDEzOyAgIyBMRVRURVIgT08KK1x1MEExND5cdUUwMTQ7ICAjIExFVFRFUiBBVQorXHUwQTE1Plx1RTAxNTsgICMgTEVUVEVSIEtBCitcdTBBMTY+XHVFMDE2OyAgIyBMRVRURVIgS0hBCitcdTBBMTc+XHVFMDE3OyAgIyBMRVRURVIgR0EKK1x1MEExOD5cdUUwMTg7ICAjIExFVFRFUiBHSEEKK1x1MEExOT5cdUUwMTk7ICAjIExFVFRFUiBOR0EKK1x1MEExQT5cdUUwMUE7ICAjIExFVFRFUiBDQQorXHUwQTFCPlx1RTAxQjsgICMgTEVUVEVSIENIQQorXHUwQTFDPlx1RTAxQzsgICMgTEVUVEVSIEpBCitcdTBBMUQ+XHVFMDFEOyAgIyBMRVRURVIgSkhBCitcdTBBMUU+XHVFMDFFOyAgIyBMRVRURVIgTllBCitcdTBBMUY+XHVFMDFGOyAgIyBMRVRURVIgVFRBCitcdTBBMjA+XHVFMDIwOyAgIyBMRVRURVIgVFRIQQorXHUwQTIxPlx1RTAyMTsgICMgTEVUVEVSIEREQQorXHUwQTIyPlx1RTAyMjsgICMgTEVUVEVSIERESEEKK1x1MEEyMz5cdUUwMjM7ICAjIExFVFRFUiBOTkEKK1x1MEEyND5cdUUwMjQ7ICAjIExFVFRFUiBUQQorXHUwQTI1Plx1RTAyNTsgICMgTEVUVEVSIFRIQQorXHUwQTI2Plx1RTAyNjsgICMgTEVUVEVSIERBCitcdTBBMjc+XHVFMDI3OyAgIyBMRVRURVIgREhBCitcdTBBMjg+XHVFMDI4OyAgIyBMRVRURVIgTkEKK1x1MEEyQT5cdUUwMkE7ICAjIExFVFRFUiBQQQorXHUwQTJCPlx1RTAyQjsgICMgTEVUVEVSIFBIQQorXHUwQTJDPlx1RTAyQzsgICMgTEVUVEVSIEJBCitcdTBBMkQ+XHVFMDJEOyAgIyBMRVRURVIgQkhBCitcdTBBMkU+XHVFMDJFOyAgIyBMRVRURVIgTUEKK1x1MEEyRj5cdUUwMkY7ICAjIExFVFRFUiBZQQorXHUwQTMwPlx1RTAzMDsgICMgTEVUVEVSIFJBCitcdTBBMzI+XHVFMDMyOyAgIyBMRVRURVIgTEEKK1x1MGEzMz5cdUUwMzM7ICMgRkFMTEJBQ0sKK1x1MEEzNT5cdUUwMzU7ICAjIExFVFRFUiBWQQorXHUwYTM2Plx1ZTAzNjsKK1x1MEEzOFwwYTNjPlx1ZTAzNjsgIyBGQUxMQkFDSworXHUwQTM4Plx1RTAzODsgICMgTEVUVEVSIFNBCitcdTBBMzk+XHVFMDM5OyAgIyBMRVRURVIgSEEKK1x1MEEzQz5cdUUwM0M7ICAjIFNJR04gTlVLVEEKK1x1MEEzRT5cdUUwM0U7ICAjIFZPV0VMIFNJR04gQUEKK1x1MEEzRj5cdUUwM0Y7ICAjIFZPV0VMIFNJR04gSQorXHUwQTQwPlx1RTA0MDsgICMgVk9XRUwgU0lHTiBJSQorXHUwQTQxPlx1RTA0MTsgICMgVk9XRUwgU0lHTiBVCitcdTBBNDI+XHVFMDQyOyAgIyBWT1dFTCBTSUdOIFVVCitcdTBBNDc+XHVFMDQ3OyAgIyBWT1dFTCBTSUdOIEVFCitcdTBBNDg+XHVFMDQ4OyAgIyBWT1dFTCBTSUdOIEFJCitcdTBBNEI+XHVFMDRCOyAgIyBWT1dFTCBTSUdOIE9PCitcdTBBNEM+XHVFMDRDOyAgIyBWT1dFTCBTSUdOIEFVCitcdTBBNEQ+XHVFMDREOyAgIyBTSUdOIFZJUkFNQQorCitcdTBBNUM+XHVFMDVDOyAgIyBMRVRURVIgUlJBCisKK1x1MEE2Nj5cdUUwNjY7ICAjIERJR0lUIFpFUk8KK1x1MEE2Nz5cdUUwNjc7ICAjIERJR0lUIE9ORQorXHUwQTY4Plx1RTA2ODsgICMgRElHSVQgVFdPCitcdTBBNjk+XHVFMDY5OyAgIyBESUdJVCBUSFJFRQorXHUwQTZBPlx1RTA2QTsgICMgRElHSVQgRk9VUgorXHUwQTZCPlx1RTA2QjsgICMgRElHSVQgRklWRQorXHUwQTZDPlx1RTA2QzsgICMgRElHSVQgU0lYCitcdTBBNkQ+XHVFMDZEOyAgIyBESUdJVCBTRVZFTgorXHUwQTZFPlx1RTA2RTsgICMgRElHSVQgRUlHSFQKK1x1MEE2Rj5cdUUwNkY7ICAjIERJR0lUIE5JTkUKK1x1MEE3MD5cdUUwN0M7ICAjIFRJUFBJCitcdTBBNzE+XHVFMDdEOyAgIyBBRERBSworXHUwQTcyPlx1RTA3RTsgICMgSVJJCitcdTBBNzM+XHVFMDdGOyAgIyBVUkEKK1x1MEE3ND5cdUUwODA7ICAjIEVLIE9OS0FSCitcdTA5NjQ+XHVlMDY0OyAgICAgICAgIyBEQU5EQQorXHUwOTY1Plx1ZTA2NTsgICAgICAgICMgRE9VQkxFIERBTkRBCisjICAgIDo6IE5GQyAoTkZEKSA7CisjIGVvZgorCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL1RyYW5zbGl0ZXJhdG9yX0hhbl9MYXRpbi50eHQgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL1RyYW5zbGl0ZXJhdG9yX0hhbl9MYXRpbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjdhNGE5NgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfSGFuX0xhdGluLnR4dApAQCAtMCwwICsxLDI1NDI3IEBACivvu78jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ29weXJpZ2h0IChjKSAxOTk5LTIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyMgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0F0dGljL1RyYW5zbGl0ZXJhdG9yX0hhbl9MYXRpbi50eHQsdiAkCisjICREYXRlOiAyMDAyLzEyLzExIDIzOjE4OjA0ICQKKyMgJFJldmlzaW9uOiAxLjggJAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMgV2FybmluZzogZG9lcyBub3QgZG8gcm91bmQtdHJpcCBtYXBwaW5nISEKKworIyBDb252ZXJ0IENKSyBjaGFyYWN0ZXJzCisjIyA6OiAoaGFsZndpZHRoLWZ1bGx3aWR0aCk7CisKKyR0ZXJtaW5hbFB1bmN0ID0gW1wuXCxcOlw7XD9cIe+8ju+8jO+8mu+8n++8geOAguOAge+8m1s6UGU6XVs6UGY6XV07CiskaW5pdGlhbFB1bmN0ID0gWzpQczpdWzpQaTpdOworCisjIGFkZCBzcGFjZSBiZXR3ZWVuIGFueSB0ZXJtaW5hbCBwdW5jdHVhdGlvbiBhbmQgbGV0dGVycywgYW5kCisjIGJldHdlZW4gbGV0dGVycyBhbmQgSGFuIG9yIGluaXRpYWwgcHVuY3QKKworJHRlcm1pbmFsUHVuY3QgeyB9IFs6TDpdID4gJyAnOworWzpMOl0geyB9IFtbOkhhbjpdICRpbml0aWFsUHVuY3RdID4gJyAnOworCisjIGJlbG93LCB0aGUgcnVsZXMgYWRkIHNwYWNlIGFmdGVyIGlkZW9ncmFwaHMuIFJlbW92ZSB0aGF0IHNwYWNlIGJlZm9yZSB0ZXJtaW5hbHMKK3sgJyAnIH0gJHRlcm1pbmFsUHVuY3QgPiA7CisKKyMgcmVtb3ZlIGFsbCBzcGFjZXMgZ29pbmcgYmFja3dhcmRzCisjIyA8ICcgJzsKKworIyBTdGFydCBSQVcgZGF0YSBmb3IgY29udmVydGluZyBDSksgY2hhcmFjdGVycwor5Y+MPnNodcSBbmd8XCA7Civoo4U+emh1xIFuZ3xcIDsKK+WImz5jaHXDoG5nfFwgOwor56qXPmNodcSBbmd8XCA7CivnirY+emh1w6BuZ3xcIDsKK+W6ij5jaHXDoW5nfFwgOwor5bqEPnpodcSBbmd8XCA7Civmkp4+emh1w6BuZ3xcIDsKK+Wjrj56aHXDoG5nfFwgOwor6ZevPmNodceObmd8XCA7CivniL0+c2h1x45uZ3xcIDsKK+Wmhj56aHXEgW5nfFwgOwor5qGpPnpodcSBbmd8XCA7CivpnJw+c2h1xIFuZ3xcIDsKK+W5oj5jaHXDoW5nfFwgOwor55auPmNodcSBbmd8XCA7CivmgIY+Y2h1w6BuZ3xcIDsKK+WtgD5zaHXEgW5nfFwgOwor5rO2PnNodcSBbmd8XCA7CivnlpI+Y2h1w6FuZ3xcIDsKK+Ohlj5jaHXDoW5nfFwgOwor46a8PnNodcOgbmd8XCA7CivjtYI+Y2h1x45uZ3xcIDsKK+O8vT5zaHXHjm5nfFwgOwor5IOlPmNodcOhbmd8XCA7Civkh6w+Y2h1x45uZ3xcIDsKK+SOqz5jaHXDoG5nfFwgOwor5JeuPnNodceObmd8XCA7CivkmpI+Y2h1w6FuZ3xcIDsKK+Shrz5zaHXDoG5nfFwgOwor5KG0PmNodcOhbmd8XCA7Civkq6o+c2h1x45uZ3xcIDsKK+Stmj5jaHXDoW5nfFwgOwor5YiFPmNodcSBbmd8XCA7CivliJM+Y2h1xIFuZ3xcIDsKK+WIsT5jaHXDoG5nfFwgOwor5YmPPmNodcSBbmd8XCA7CivliZk+Y2h1w6BuZ3xcIDsKK+WJrT5jaHXEgW5nfFwgOwor5Ym1PmNodcOgbmd8XCA7CivlmYc+Y2h1w6FuZ3xcIDsKK+WhvT5zaHXHjm5nfFwgOwor5aOvPnpodcOgbmd8XCA7Civlo7U+emh1w6BuZ3xcIDsKK+WmnT56aHXEgW5nfFwgOwor5aikPnpodcSBbmd8XCA7CivlrYc+c2h1xIFuZ3xcIDsKK+aEtD5jaHXDoG5nfFwgOwor5oWhPnNodceObmd8XCA7CivmiIc+emh1w6BuZ3xcIDsKK+aIpz5jaHXEgW5nfFwgOwor5pGQPmNodcSBbmd8XCA7CivmkaQ+Y2h1x45uZ3xcIDsKK+aSnT5jaHXDoW5nfFwgOwor5qKJPnpodcSBbmd8XCA7CivmqIE+emh1xIFuZ3xcIDsKK+aoiT5zaHXHjm5nfFwgOwor5qmmPmNodcOhbmd8XCA7CivmrIY+c2h1xIFuZ3xcIDsKK+a8uj5jaHXHjm5nfFwgOwor54GAPnNodcOgbmd8XCA7CivnhIs+emh1w6BuZ3xcIDsKK+eIvD5zaHXEgW5nfFwgOwor54mAPmNodcOhbmd8XCA7CivniY4+Y2h1xIFuZ3xcIDsKK+eJlT5jaHXEgW5nfFwgOwor54uAPnpodcOgbmd8XCA7CivnjYo+Y2h1w6BuZ3xcIDsKK+eYoT5jaHXEgW5nfFwgOwor56S1PnNodcSBbmd8XCA7CivnqpM+Y2h1xIFuZ3xcIDsKK+equz5jaHXEgW5nfFwgOwor57KnPnpodcSBbmd8XCA7Civns5o+emh1xIFuZ3xcIDsKK+e4lD5zaHXHjm5nfFwgOwor6ImtPnNodcSBbmd8XCA7CivojZg+emh1xIFuZ3xcIDsKK+iOij56aHXEgW5nfFwgOwor6KOdPnpodcSBbmd8XCA7Civpl5Y+Y2h1x45uZ3xcIDsKK+mbmT5zaHXEgW5nfFwgOwor6ai6PnNodcSBbmd8XCA7CivpqLs+c2h1x45uZ3xcIDsKK+mppj5zaHXEgW5nfFwgOwor6aqmPnNodcSBbmd8XCA7Civpt54+c2h1xIFuZ3xcIDsKK+m4mD5zaHXEgW5nfFwgOwor6bm0PnNodcSBbmd8XCA7CivkuK0+emjFjW5nfFwgOwor5LiKPnNow6BuZ3xcIDsKK+eUnz5zaMSTbmd8XCA7CivmiJA+Y2jDqW5nfFwgOwor5oOzPnhpx45uZ3xcIDsKK+S4pD5saceObmd8XCA7Civplb8+Y2jDoW5nfFwgOwor5bCGPmppxIFuZ3xcIDsKK+enjT56aMeSbmd8XCA7Civlo7A+c2jEk25nfFwgOwor5ZCRPnhpw6BuZ3xcIDsKK+atoz56aMOobmd8XCA7Civph40+Y2jDs25nfFwgOwor55u4PnhpxIFuZ3xcIDsKK+aUvz56aMOobmd8XCA7CivlnLo+Y2jDoW5nfFwgOwor5bygPnpoxIFuZ3xcIDsKK+W4uD5jaMOhbmd8XCA7CivlhYk+Z3XEgW5nfFwgOwor6LGhPnhpw6BuZ3xcIDsKK+S8oD5jaHXDoW58XCA7Civln44+Y2jDqW5nfFwgOwor5by6PnFpw6FuZ3xcIDsKK+i9rD56aHXHjm58XCA7Civph48+bGnDoW5nfFwgOwor5LyXPnpow7JuZ3xcIDsKK+eoiz5jaMOpbmd8XCA7CivmsZ8+amnEgW5nfFwgOwor6buEPmh1w6FuZ3xcIDsKK+WVhj5zaMSBbmd8XCA7Civlg48+eGnDoG5nfFwgOwor5bm/Pmd1x45uZ3xcIDsKK+mmmT54acSBbmd8XCA7CivkuJM+emh1xIFufFwgOwor5LqJPnpoxJNuZ3xcIDsKK+iusj5qaceObmd8XCA7Civnu4g+emjFjW5nfFwgOwor5YayPmNoxY1uZ3xcIDsKK+ivgT56aMOobmd8XCA7Civlk40+eGnHjm5nfFwgOwor56ewPmNoxJNuZ3xcIDsKK+aVtD56aMSbbmd8XCA7CivkvKQ+c2jEgW5nfFwgOwor5o6MPnpox45uZ3xcIDsKK+ecgT5zaMSbbmd8XCA7CivlhrU+a3XDoG5nfFwgOwor5aiYPm5pw6FuZ3xcIDsKK+mhuT54acOgbmd8XCA7Civnq6A+emjEgW5nfFwgOwor5YWEPnhpxY1uZ3xcIDsKK+aJvz5jaMOpbmd8XCA7CivkuaE+eGnEgW5nfFwgOwor56m/PmNodcSBbnxcIDsKK+iDnD5zaMOobmd8XCA7Civnmoc+aHXDoW5nfFwgOwor5LquPmxpw6BuZ3xcIDsKK+mbhD54acOzbmd8XCA7CivlpZY+amnHjm5nfFwgOwor6Ii5PmNodcOhbnxcIDsKK+Wwmj5zaMOgbmd8XCA7Civpkp8+emjFjW5nfFwgOwor5Y6CPmNox45uZ3xcIDsKK+WFhT5jaMWNbmd8XCA7Civoia8+bGnDoW5nfFwgOwor5LiIPnpow6BuZ3xcIDsKK+aeqj5xacSBbmd8XCA7CivpmY0+amnDoG5nfFwgOwor5Y2HPnNoxJNuZ3xcIDsKK+WUsT5jaMOgbmd8XCA7CivlvoE+emjEk25nfFwgOwor5aKZPnFpw6FuZ3xcIDsKK+Wcoz5zaMOobmd8XCA7CivmiqI+cWnHjm5nfFwgOwor6IO4PnhpxY1uZ3xcIDsKK+S5mD5jaMOpbmd8XCA7Civnm5s+c2jDqG5nfFwgOwor6K+aPmNow6luZ3xcIDsKK+eLgj5rdcOhbmd8XCA7Civlt50+Y2h1xIFufFwgOwor57KuPmxpw6FuZ3xcIDsKK+i+hj5sacOgbmd8XCA7Civkuqs+eGnHjm5nfFwgOwor56m3PnFpw7NuZ3xcIDsKK+aigT5sacOhbmd8XCA7CivotY8+c2jHjm5nfFwgOwor5YeJPmxpw6FuZ3xcIDsKK+iNkj5odcSBbmd8XCA7Civlv6A+emjFjW5nfFwgOwor566xPnhpxIFuZ3xcIDsKK+W4kD56aMOgbmd8XCA7Civpg5E+emjDqG5nfFwgOwor5YmpPnNow6huZ3xcIDsKK+aZgz5odcOgbmd8XCA7Civlh7Y+eGnFjW5nfFwgOwor5bSHPmNow7NuZ3xcIDsKK+ivpj54acOhbmd8XCA7CivmjKM+emjEk25nfFwgOwor6JKLPmppx45uZ3xcIDsKK+elpT54acOhbmd8XCA7CivmkZQ+c2h1xIFpfFwgOwor5LuXPnpow6BuZ3xcIDsKK+manD56aMOgbmd8XCA7Civnhoo+eGnDs25nfFwgOwor5bCdPmNow6FuZ3xcIDsKK+eblz5jaMOpbmd8XCA7CivmhYw+aHXEgW5nfFwgOwor54myPnNoxJNuZ3xcIDsKK+S4sj5jaHXDoG58XCA7Civlgb8+Y2jDoW5nfFwgOwor5piMPmNoxIFuZ3xcIDsKK+aAlD56aMSTbmd8XCA7CivnloY+amnEgW5nfFwgOwor6JmrPmNow7NuZ3xcIDsKK+e7sz5zaMOpbmd8XCA7Civmtqg+emjHjm5nfFwgOwor55+/Pmt1w6BuZ3xcIDsKK+eVhT5jaMOgbmd8XCA7Civku7I+emjDsm5nfFwgOwor5pKRPmNoxJNuZ3xcIDsKK+iwhT5sacOgbmd8XCA7CivmnZY+emjDoG5nfFwgOwor6IKgPmNow6FuZ3xcIDsKK+i1mj56aHXDoG58XCA7Civov4g+Z3XHjm5nfFwgOwor5ZGIPmNow6luZ3xcIDsKK+ihtz56aMWNbmd8XCA7Civnl4c+emjEk25nfFwgOwor56CWPnpodcSBbnxcIDsKK+ilhD54acSBbmd8XCA7CivluIU+c2h1w6BpfFwgOwor5oO2Pmh1w6FuZ3xcIDsKK+WWmD5jaHXHjm58XCA7CivohZQ+cWnEgW5nfFwgOwor5YygPmppw6BuZ3xcIDsKK+a5mD54acSBbmd8XCA7CivnhYw+aHXDoW5nfFwgOwor5be3Pnhpw6BuZ3xcIDsKK+iwjj5odceObmd8XCA7CivljqI+eGnEgW5nfFwgOwor6IK/Pnpox5JuZ3xcIDsKK+iDgD56aMOgbmd8XCA7CivnkLw+cWnDs25nfFwgOwor5aecPmppxIFuZ3xcIDsKK+WAoT5jaMOgbmd8XCA7CivmmYw+c2jHjm5nfFwgOwor5YO1PmppxIFuZ3xcIDsKK+aBjT5odceObmd8XCA7Civmg6k+Y2jDqW5nfFwgOwor5a6gPmNox5JuZ3xcIDsKK+eUqT5zaHXHjml8XCA7CivmvoQ+Y2jDqW5nfFwgOwor6YWxPmppw6BuZ3xcIDsKK+i0pj56aMOgbmd8XCA7CivmkrA+emh1w6BufFwgOwor6JK4PnpoxJNuZ3xcIDsKK+aXtz5rdcOgbmd8XCA7CivmoYY+a3XDoG5nfFwgOwor6YCbPmd1w6BuZ3xcIDsKK+WMiD54acWNbmd8XCA7Civpk64+emjEk25nfFwgOwor5rWGPmppxIFuZ3xcIDsKK+mFvz5uacOgbmd8XCA7CivmlZ4+Y2jHjm5nfFwgOwor57+UPnhpw6FuZ3xcIDsKK+aPoz5jaHXHjml8XCA7Civmsbk+eGnFjW5nfFwgOwor6KOzPmNow6FuZ3xcIDsKK+esmT5zaMSTbmd8XCA7CivnnLY+a3XDoG5nfFwgOwor6ZS6PnpoxY1uZ3xcIDsKK+etnT56aMSTbmd8XCA7CivplbY+eGnEgW5nfFwgOwor5oCFPmNow6BuZ3xcIDsKK+eqmD5qaceSbmd8XCA7CivlvbA+emjEgW5nfFwgOwor5qmhPnhpw6BuZ3xcIDsKK+WRmz5xacOgbmd8XCA7Civngq8+amnHkm5nfFwgOwor5YewPmh1w6FuZ3xcIDsKK+mAnj5jaMSbbmd8XCA7Civnkos+emjEgW5nfFwgOwor562QPmt1xIFuZ3xcIDsKK+i4iT5sacOgbmd8XCA7Civmi70+emh1w6BpfFwgOwor6LeEPnFpxIFuZ3xcIDsKK+ahqD5qaceObmd8XCA7CivluYw+aHXHjm5nfFwgOwor57KxPmxpw6FuZ3xcIDsKK+aLtD5zaHXEgW58XCA7Civnkpw+aHXDoW5nfFwgOwor57ywPmppxIFuZ3xcIDsKK+W/oT5jaMWNbmd8XCA7CivlqLw+Y2jEgW5nfFwgOwor5ouvPnpoxJtuZ3xcIDsKK+eMlj5jaMSBbmd8XCA7Civpl6k+c2h1xIFufFwgOwor5oanPmNoxY1uZ3xcIDsKK+W+tT56aMSTbmd8XCA7CivnlKU+c2jEk25nfFwgOwor56ekPmNow6huZ3xcIDsKK+a2rj5zaHXDoG58XCA7Civmmb4+bGnDoG5nfFwgOwor6Li5PmNodcOgaXxcIDsKK+auhz5zaMSBbmd8XCA7CivluKc+emjDqG5nfFwgOwor6aqLPmNoxJtuZ3xcIDsKK+WMoT5rdcSBbmd8XCA7CivouLU+emjHkm5nfFwgOwor56m5PnFpw7NuZ3xcIDsKK+evhj56aHXDoG58XCA7Civni7A+emjEk25nfFwgOwor5qmZPmNow6luZ3xcIDsKK+ewpz5odcOhbmd8XCA7Civlvqg+aHXDoW5nfFwgOwor5LiePmNow6luZ3xcIDsKK+agkz5zaHXEgW58XCA7Civov6U+amnHkm5nfFwgOwor55uFPnpoxY1uZ3xcIDsKK+idlz5odcOhbmd8XCA7CivplLU+cWnEgW5nfFwgOwor57ubPmppw6BuZ3xcIDsKK+iMpz5jaMOzbmd8XCA7CivmvLM+emjEgW5nfFwgOwor556gPmNoxJNuZ3xcIDsKK+e+jD5xacSBbmd8XCA7Civppbc+eGnHjm5nfFwgOwor6J+APnNodcOgaXxcIDsKK+W5mz56aMOgbmd8XCA7Civpo6g+eGnHjm5nfFwgOwor5r2iPmh1w6FuZ3xcIDsKK+WGoj56aMeSbmd8XCA7CivnmLQ+emjDoG5nfFwgOwor5bOlPnpoxJNuZ3xcIDsKK+iUtz5xacOhbmd8XCA7Civlk5A+a3XEgW5nfFwgOwor5oiVPnFpxIFuZ3xcIDsKK+ejuj5odcOhbmd8XCA7Civnip8+amnDoG5nfFwgOwor54q3Pmd1x45uZ3xcIDsKK+WSoz5ndcSBbmd8XCA7Civlv6o+emjFjW5nfFwgOwor5qifPnpoxIFuZ3xcIDsKK+mCnT5rdcOgbmd8XCA7Civlq6Y+Y2jDoW5nfFwgOwor6ZSDPnpow6huZ3xcIDsKK+mBkT5odcOhbmd8XCA7CivnjZA+emjEgW5nfFwgOwor5b6cPmNow6FuZ3xcIDsKK+a5nz5odcOhbmd8XCA7Civpmo0+aHXDoW5nfFwgOwor5baCPnpow6BuZ3xcIDsKK+akvT5jaHXDoW58XCA7Civog7E+Z3XEgW5nfFwgOwor54i/PnFpw6FuZ3xcIDsKK+ivsz5rdcOhbmd8XCA7Civon5E+emjEgW5nfFwgOwor6KWBPnFpx45uZ3xcIDsKK+iCkz5odcSBbmd8XCA7Civpk7M+Y2jDsm5nfFwgOwor5LylPmNoxIFuZ3xcIDsKK+innj5zaMSBbmd8XCA7CivoiII+Y2jFjW5nfFwgOwor6K+kPnpoxJNuZ3xcIDsKK+eGtT5zaMSBbmd8XCA7CivmsIU+Y2jHjm5nfFwgOwor6aqnPnhpxIFuZ3xcIDsKK+ivrj5rdcOgbmd8XCA7Civnr4E+aHXDoW5nfFwgOwor6IibPmNodceObnxcIDsKK+WVrT56aHXDoG58XCA7CivpppQ+emh1w6BufFwgOwor6ZKPPmNodcOgbnxcIDsKK+aIlz5xacSBbmd8XCA7CivlopI+c2jEgW5nfFwgOwor6K+TPmt1xIFuZ3xcIDsKK+iMlT5xacOzbmd8XCA7Civon6U+aHXDoW5nfFwgOwor5pmfPnNow6huZ3xcIDsKK+WcuT5rdcOgbmd8XCA7Civngp0+cWnDoG5nfFwgOwor5bWKPnNow6huZ3xcIDsKK+e8gz54acSBbmd8XCA7CivpgYQ+Y2h1w6FufFwgOwor6bKePnhpx45uZ3xcIDsKK+ixhz5qacSBbmd8XCA7Civplao+cWnEgW5nfFwgOwor6a2JPmxpx45uZ3xcIDsKK+ibqT5xacOzbmd8XCA7Civoj5Y+Y2jEgW5nfFwgOwor5auxPnFpw6FuZ3xcIDsKK+mCmz5xacOzbmd8XCA7Civpops+emh1xIFufFwgOwor6KOOPmNow6luZ3xcIDsKK+aYtj5jaMeObmd8XCA7CivonKM+cWnEgW5nfFwgOwor6JuPPmNoxJNuZ3xcIDsKK+iAqT5qaceObmd8XCA7CivpsrM+Y2jEgW5nfFwgOwor6LS2Pmt1w6BuZ3xcIDsKK+W6oD54acOhbmd8XCA7Civoipc+eGnEgW5nfFwgOwor5Z+VPmNow6luZ3xcIDsKK+ievT56aMWNbmd8XCA7CivplJY+cWnEgW5nfFwgOwor5qSLPmxpw6FuZ3xcIDsKK+msrz5jaMOgbmd8XCA7Civot6s+cWnDs25nfFwgOwor5aGNPmNow6luZ3xcIDsKK+awmj5jaHXEgW58XCA7Civlnqc+amnFjW5nfFwgOwor6YSjPnpoxIFuZ3xcIDsKK+ecmj5zaMSbbmd8XCA7CivmtYg+Y2jDqW5nfFwgOwor6ZiKPmNoxIFuZ3xcIDsKK+iKjj5xacWNbmd8XCA7Civpio4+cWnFjW5nfFwgOwor56STPmppxIFuZ3xcIDsKK+aJgz5qacWNbmd8XCA7CivmoYQ+Z3XEgW5nfFwgOwor5aucPnpoxIFuZ3xcIDsKK+S7iT56aMeObmd8XCA7CivjkLo+emjDsm5nfFwgOwor45C8PmNow6huZ3xcIDsKK+ORiz5qacOybmd8XCA7Civjkow+cWnDs25nfFwgOwor45KzPmxpx45uZ3xcIDsKK+OTjz5qaceSbmd8XCA7Civjk70+Y2jDs25nfFwgOwor45SdPmxpx45uZ3xcIDsKK+OVqT56aMOgbmd8XCA7CivjlqU+amnHkm5nfFwgOwor45eCPnNoxJtuZ3xcIDsKK+OXvT54aceObmd8XCA7CivjmYo+Y2jDoW5nfFwgOwor45mjPnpow6BuZ3xcIDsKK+ObqD5xaceObmd8XCA7Civjnrc+aHXDoW5nfFwgOwor4568PmNow6luZ3xcIDsKK+OfhD54acOhbmd8XCA7Civjn58+eGnDoG5nfFwgOwor46GgPnpow6huZ3xcIDsKK+Ohpz56aMOobmd8XCA7CivjoqA+amnHkm5nfFwgOwor46KhPmppx45uZ3xcIDsKK+Ojqz56aMeSbmd8XCA7CivjpK4+a3XDoW5nfFwgOwor46SvPmppx5JuZ3xcIDsKK+Okuj5odceObmd8XCA7CivjpoI+Y2jDoW5nfFwgOwor46ekPmNow7JuZ3xcIDsKK+OnrT5xacOzbmd8XCA7CivjqIM+Y2jDqW5nfFwgOwor46iqPmh1w6BuZ3xcIDsKK+Oplj5xacOhbmd8XCA7CivjqpM+Y2h1w6FpfFwgOwor46qcPmNodceOaXxcIDsKK+Ormz5ndcOgbmd8XCA7Civjq6Q+Y2jHjm5nfFwgOwor46y7Pmh1x45uZ3xcIDsKK+Ouqj5xacOzbmd8XCA7Civjr4w+Y2h1w6FufFwgOwor46+NPmppx45uZ3xcIDsKK+Oxjz56aMOobmd8XCA7CivjsZs+Y2h1x45ufFwgOwor47KCPmNow6luZ3xcIDsKK+OytD56aMOybmd8XCA7Civjtog+bGnHjm5nfFwgOwor47eAPnFpw7NuZ3xcIDsKK+O3lz5qaceSbmd8XCA7Civjt6E+amnHkm5nfFwgOwor47mBPmxpw6FuZ3xcIDsKK+O5kD5jaMOzbmd8XCA7CivjvIc+cWnDs25nfFwgOwor47ypPmNow6luZ3xcIDsKK+O8sz5zaMSbbmd8XCA7CivjvLc+Y2h1w6FufFwgOwor472APnpow6huZ3xcIDsKK+O9tD56aMOgbmd8XCA7CivjvqA+aHXDoW5nfFwgOwor476qPnNoxJtuZ3xcIDsKK+O+rj5odcOhbmd8XCA7CivkgJU+Y2jDqG5nfFwgOwor5IGOPmNow6luZ3xcIDsKK+SBnD5odceObmd8XCA7CivkgZ4+c2jEm25nfFwgOwor5IGjPmNodcOhbnxcIDsKK+SBsD5qaceObmd8XCA7Civkgrs+emjDqG5nfFwgOwor5ISHPmNow6luZ3xcIDsKK+SFgz5xacOzbmd8XCA7CivkhZo+cWnHjm5nfFwgOwor5IWjPmh1w6FuZ3xcIDsKK+SGkT5jaMOpbmd8XCA7CivkhrM+cWnDs25nfFwgOwor5Ia1PmNow6luZ3xcIDsKK+SGuD5jaMOpbmd8XCA7Civkh7g+Y2jDqW5nfFwgOwor5IijPnpow6huZ3xcIDsKK+SJgz5qaceObmd8XCA7CivkibU+emh1w6BufFwgOwor5IqEPnFpw7NuZ3xcIDsKK+SKkT54aceObmd8XCA7Civkipc+aHXDoW5nfFwgOwor5IqjPmh1w6FuZ3xcIDsKK+SKrz5rdcOgbmd8XCA7Civki4w+amnHjm5nfFwgOwor5IyZPmh1x45uZ3xcIDsKK+SMrD5jaMOzbmd8XCA7CivkjLk+amnHkm5nfFwgOwor5I2/Pmh1w6FuZ3xcIDsKK+SOtD5zaMOobmd8XCA7CivkkIM+amnHkm5nfFwgOwor5JCfPnhpw6BuZ3xcIDsKK+SQoD5odceObmd8XCA7CivkkLU+aHXDoW5nfFwgOwor5JGfPmh1w6FuZ3xcIDsKK+SSgj5qaceObmd8XCA7Civkk5Y+cWnDs25nfFwgOwor5JOjPmxpx45uZ3xcIDsKK+SUlz54acOhbmd8XCA7CivklLI+Y2jDqW5nfFwgOwor5JWLPmNox45uZ3xcIDsKK+SWhj5uacOgbmd8XCA7Civklp0+Y2jDs25nfFwgOwor5JauPnhpx45uZ3xcIDsKK+SXhT5jaMOhbmd8XCA7Civkl4o+Y2jDqW5nfFwgOwor5Jm5Pmppx45uZ3xcIDsKK+Sahz5zaMSbbmd8XCA7Civkm6o+cWnDs25nfFwgOwor5JurPnpow6huZ3xcIDsKK+Sctj54acOhbmd8XCA7CivknbY+bGnDoW5nfFwgOwor5J6JPnNow6huZ3xcIDsKK+Seqj5qacOgbmd8XCA7Civknrk+aHXDoW5nfFwgOwor5KCAPmNox45uZ3xcIDsKK+Sggz5saceObmd8XCA7CivkoIY+Y2jDoW5nfFwgOwor5KC7PnFpw7NuZ3xcIDsKK+ShlT56aMSbbmd8XCA7CivkobE+emh1x45ufFwgOwor5KKbPmppx5JuZ3xcIDsKK+Sipj5zaHXDoGl8XCA7Civkor0+eGnDoG5nfFwgOwor5KO8Pmxpw6FuZ3xcIDsKK+SljD56aMOobmd8XCA7Civkpa0+emjDqG5nfFwgOwor5KabPnpow6huZ3xcIDsKK+Smnz5jaHXDoGl8XCA7CivkpqQ+Y2h1w6BpfFwgOwor5Ka2Pnpow6huZ3xcIDsKK+Smtz5jaHXDoGl8XCA7Civkp5U+Y2jDqW5nfFwgOwor5KegPnNodcOgbnxcIDsKK+Snuj54acOzbmd8XCA7Civkqag+Y2jDoG5nfFwgOwor5KmrPmxpx45uZ3xcIDsKK+SqhD5odcOhbmd8XCA7Civkqr8+c2jEm25nfFwgOwor5KuEPmNodcOgaXxcIDsKK+Srhj5jaMOpbmd8XCA7CivkrJU+c2jHjm5nfFwgOwor5K2qPmxpw6FuZ3xcIDsKK+Suqj5jaMOpbmd8XCA7CivkrrI+aHXDoW5nfFwgOwor5K+0PmNow6FuZ3xcIDsKK+Sxhj5zaMOpbmd8XCA7CivksbA+emjDsm5nfFwgOwor5LOoPmh1w6FuZ3xcIDsKK+Szrz5jaMOzbmd8XCA7CivktYE+cWnDoG5nfFwgOwor5LWDPmt1w6BuZ3xcIDsKK+S4hD5zaMOgbmd8XCA7CivkuKE+bGnHjm5nfFwgOwor5LisPnFpw6FuZ3xcIDsKK+S5kT5zaMOobmd8XCA7CivkuZc+Y2jDqW5nfFwgOwor5LqvPnhpx45uZ3xcIDsKK+S7pz5jaMOhbmd8XCA7CivkvIA+emjFjW5nfFwgOwor5LydPmNodcOhbnxcIDsKK+S9gj56aMSTbmd8XCA7Civkva0+eGnDoW5nfFwgOwor5L6KPmd1xIFuZ3xcIDsKK+S+sT5jaMSbbmd8XCA7Civkv4c+a3XHjm5nfFwgOwor5YCAPmNoxIFuZ3xcIDsKK+WAhj5saceObmd8XCA7CivlgYE+Y2jEk25nfFwgOwor5YGFPnpow7JuZ3xcIDsKK+WBlz5zaMSbbmd8XCA7CivlgZ8+aHXDoW5nfFwgOwor5YKzPmNodcOhbnxcIDsKK+WCtz5zaMSBbmd8XCA7Civlgrg+cWnHjm5nfFwgOwor5YK9PnpoxIFuZ3xcIDsKK+WDjj56aHXDoG58XCA7Civlg5I+amnHkm5nfFwgOwor5YOYPmNox45uZ3xcIDsKK+WDmT5ndcSBbmd8XCA7Civlg6I+Y2h1x45ufFwgOwor5YSdPnFpw7NuZ3xcIDsKK+WEnz5jaMOhbmd8XCA7CivlhKM+a3XDoG5nfFwgOwor5YWHPnhpxY1uZ3xcIDsKK+WFjz5jaMOhbmd8XCA7CivlhaQ+aHXDoW5nfFwgOwor5YWpPmxpx45uZ3xcIDsKK+WGgj5qacWNbmd8XCA7Civlhos+amnFjW5nfFwgOwor5YaPPmppx5JuZ3xcIDsKK+WIoz56aMWNbmd8XCA7CivlibA+c2jDqG5nfFwgOwor5Yq7Pmt1xIFuZ3xcIDsKK+WLnT5zaMOobmd8XCA7Civli6U+cWnHjm5nfFwgOwor5YyUPnFpxY1uZ3xcIDsKK+WMnj5qacOgbmd8XCA7CivljZs+c2h1w6BpfFwgOwor5Y2dPmt1w6BuZ3xcIDsKK+WNrT5xacOzbmd8XCA7CivljrA+Y2jHjm5nfFwgOwor5ZGPPnNoxJNuZ3xcIDsKK+WSsD5zaHXDoGl8XCA7Civlk4U+eGnFjW5nfFwgOwor5ZO0Pmxpw6BuZ3xcIDsKK+WUoT5saceObmd8XCA7CivllLQ+cWnDoG5nfFwgOwor5ZWMPnhpxIFuZ3xcIDsKK+WVoj5saceObmd8XCA7CivllqA+emjHkm5nfFwgOwor5ZakPmh1w6FuZ3xcIDsKK+WWqD5sacOgbmd8XCA7Civll4Y+cWnDoG5nfFwgOwor5ZiDPmNoxY1uZ3xcIDsKK+WYlz5jaMOhbmd8XCA7CivlmpA+Y2jDoW5nfFwgOwor5ZqdPmh1xIFuZ3xcIDsKK+Warj54acOgbmd8XCA7Civlm4A+emh1w6BufFwgOwor5ZunPmppx5JuZ3xcIDsKK+WcsT5jaMeObmd8XCA7CivlnbA+amnFjW5nfFwgOwor5Z6ZPmd1xIFuZ3xcIDsKK+Wfmz5qacWNbmd8XCA7Civln6U+Y2jEk25nfFwgOwor5Z+pPnpoxJNuZ3xcIDsKK+Wfqz5jaMeSbmd8XCA7CivloJg+Y2jDqW5nfFwgOwor5aCfPnpodcOgbnxcIDsKK+WgqT5jaMeObmd8XCA7CivloK0+aHXDoW5nfFwgOwor5aC0PmNox45uZ3xcIDsKK+WguT56aMOybmd8XCA7CivloL4+Y2h1x45ufFwgOwor5aGCPnhpw6BuZ3xcIDsKK+Whgz5odcSBbmd8XCA7CivloZY+Y2jDqW5nfFwgOwor5aGaPnpox5JuZ3xcIDsKK+Whoz5jaMSbbmd8XCA7CivlobI+Y2jDoW5nfFwgOwor5aG8PnpodcSBbnxcIDsKK+Wihz56aMSBbmd8XCA7Civloo8+cWnHjm5nfFwgOwor5aKaPmxpw6FuZ3xcIDsKK+WirT5zaMOobmd8XCA7CivlorQ+aHXDoW5nfFwgOwor5aK7PnFpw6FuZ3xcIDsKK+Wjgz5qacSBbmd8XCA7Civlo5k+a3XDoG5nfFwgOwor5aSFPmppw6BuZ3xcIDsKK+WkvD5rdceObmd8XCA7Civlpag+amnHjm5nfFwgOwor5aWsPmppx45uZ3xcIDsKK+WmkD56aMWNbmd8XCA7CivlppU+emjDsm5nfFwgOwor5aeDPnpoxJNuZ3xcIDsKK+WnoD5zaMOgbmd8XCA7Civlp68+Z3XEgW5nfFwgOwor5aiNPmNow6luZ3xcIDsKK+WqkT56aMOybmd8XCA7CivlqpM+aHXDoW5nfFwgOwor5aulPnpodcSBbnxcIDsKK+WsmT5xacOhbmd8XCA7CivlrKI+bmnDoW5nfFwgOwor5a2DPm5pw6FuZ3xcIDsKK+WtiD5zaHXEgWl8XCA7Civlrag+emh1x45ufFwgOwor5a6GPnFpw7NuZ3xcIDsKK+WurD5jaMOpbmd8XCA7Civlrro+aHXHjm5nfFwgOwor5a+1PmNox5JuZ3xcIDsKK+Wwgj56aHXEgW58XCA7CivlsIc+amnEgW5nfFwgOwor5bCIPnpodcSBbnxcIDsKK+WwmT5zaMOgbmd8XCA7CivlsrI+a3XDoG5nfFwgOwor5bO4PmNow6luZ3xcIDsKK+W0iD5jaMOzbmd8XCA7CivltJ0+emjEk25nfFwgOwor5bSiPnpoxJNuZ3xcIDsKK+W0sj5odcOhbmd8XCA7Civltbk+amnDoG5nfFwgOwor5baIPnFpxIFuZ3xcIDsKK+W2kT54aceObmd8XCA7Civlt5s+Y2h1xIFufFwgOwor5befPmh1xIFuZ3xcIDsKK+W4pT5zaHXDoGl8XCA7CivluLM+emjDoG5nfFwgOwor5bmAPnpow6huZ3xcIDsKK+W5kj56aMWNbmd8XCA7CivluZw+amnHkm5nfFwgOwor5bqDPmd1x45uZ3xcIDsKK+W6sT5jaMSbbmd8XCA7Civlu4I+eGnEgW5nfFwgOwor5bugPmNox45uZ3xcIDsKK+W7oz5ndceObmd8XCA7Civlu6c+cWnDoW5nfFwgOwor5bycPmppw6BuZ3xcIDsKK+W8tT56aMSBbmd8XCA7CivlvLY+amnDoG5nfFwgOwor5by3PnFpw6FuZ3xcIDsKK+W9iT5qacSBbmd8XCA7CivlvYo+amnEgW5nfFwgOwor5b6OPmNoxJtuZ3xcIDsKK+W+tD56aMSTbmd8XCA7Civlvrg+Y2jFjW5nfFwgOwor5b+APnhpxIFuZ3xcIDsKK+W/tz54acWNbmd8XCA7CivmgLM+aHXHjm5nfFwgOwor5oGHPmt1xIFuZ3xcIDsKK+aBnz54acWNbmd8XCA7CivmgaY+eGnDoG5nfFwgOwor5oKcPmNoxJtuZ3xcIDsKK+aCoj5sacOgbmd8XCA7CivmgrU+Y2jDoG5nfFwgOwor5oO4PnFpw7NuZ3xcIDsKK+aEsD5odceObmd8XCA7CivmhLg+emjEm25nfFwgOwor5oWvPnNoxIFuZ3xcIDsKK+aGgz5jaMWNbmd8XCA7CivmhoY+Y2jEk25nfFwgOwor5oaVPmNow6luZ3xcIDsKK+aGtD5zaMOpbmd8XCA7Civmh6w+a3XDoG5nfFwgOwor5oetPmt1w6BuZ3xcIDsKK+aHsj5jaMOpbmd8XCA7CivmiZk+emjDoG5nfFwgOwor5oqCPmt1w6FuZ3xcIDsKK+aMsD5jaMOpbmd8XCA7CivmjoE+Y2jDqW5nfFwgOwor5o6ZPnpoxJNuZ3xcIDsKK+aOmj5saceObmd8XCA7Civmj5c+Y2h1xIFpfFwgOwor5o+oPmNow6luZ3xcIDsKK+aPsD5jaMOybmd8XCA7CivmkLY+cWnHjm5nfFwgOwor5pGPPmNoxY1uZ3xcIDsKK+aRqj5qacSBbmd8XCA7Civmkb4+amnDoG5nfFwgOwor5pKQPmNoxJNuZ3xcIDsKK+aSlz5jaMOpbmd8XCA7Civmkpw+emjEm25nfFwgOwor5pW7Pnhpw7JuZ3xcIDsKK+aWqD5xacSBbmd8XCA7CivmmIc+c2jEk25nfFwgOwor5pi/Pmt1w6BuZ3xcIDsKK+aZhD5odceObmd8XCA7CivmmZE+eGnHjm5nfFwgOwor5pmgPnNow6luZ3xcIDsKK+aZvz5jaMSBbmd8XCA7CivmmqI+Y2jDoG5nfFwgOwor5pqyPnpoxIFuZ3xcIDsKK+aatz5jaHXDoW58XCA7Civmm4I+aHXDoG5nfFwgOwor5puPPnhpw6BuZ3xcIDsKK+aboD5rdcOgbmd8XCA7CivmnJo+aHXEgW5nfFwgOwor5p6oPmNoxJNuZ3xcIDsKK+afij56aMWNbmd8XCA7Civmn7w+Y2jEk25nfFwgOwor5qKsPmNoxJtuZ3xcIDsKK+ajlj5jaMOpbmd8XCA7Civmo6Y+Y2jEk25nfFwgOwor5qO+PnFpw7NuZ3xcIDsKK+akiT5jaMOpbmd8XCA7CivmpIw+cWnEgW5nfFwgOwor5qadPmh1w6BuZ3xcIDsKK+ampT5odceObmd8XCA7Civmpro+c2jDqG5nfFwgOwor5qeNPnFpxIFuZ3xcIDsKK+ansz5qaceObmd8XCA7CivmqIA+Y2jFjW5nfFwgOwor5qiRPmxpw6FuZ3xcIDsKK+aolT5jaMSTbmd8XCA7CivmqKQ+Z3XEgW5nfFwgOwor5qmVPmNoxJNuZ3xcIDsKK+apoz5jaMWNbmd8XCA7Civmqak+cWnDs25nfFwgOwor5qm/PmppxIFuZ3xcIDsKK+aqiT5jaMSTbmd8XCA7CivmqqM+cWnDoW5nfFwgOwor5qq+Pmppx5JuZ3xcIDsKK+arjj5ndcOgbmd8XCA7CivmrIA+eGnEgW5nfFwgOwor5qy7PmNodcOgaXxcIDsKK+atgj5jaHXDoW58XCA7CivmrZY+Y2h1w6BpfFwgOwor5q6FPnNoxJNuZ3xcIDsKK+aupD5zaMSBbmd8XCA7Civmrq0+amnEgW5nfFwgOwor5rC2PnpoxJtuZ3xcIDsKK+axjD5jaHXDoG58XCA7CivmsZE+c2h1w6BufFwgOwor5rKWPmNoxY1uZ3xcIDsKK+azgT5rdcOgbmd8XCA7Civms4I+amnHkm5nfFwgOwor5rOIPnpoxY1uZ3xcIDsKK+aznz5jaMSTbmd8XCA7Civms6k+c2jEk25nfFwgOwor5rSGPmNow6luZ3xcIDsKK+a0mj5qacOgbmd8XCA7CivmtK0+a3XEgW5nfFwgOwor5rS2PnhpxY1uZ3xcIDsKK+a0uD5ndcSBbmd8XCA7CivmtYQ+amnDoG5nfFwgOwor5rW6PmNoxY1uZ3xcIDsKK+a1vj5jaMSTbmd8XCA7Civmtos+Y2jFjW5nfFwgOwor5raxPnpow6BuZ3xcIDsKK+a2uT5sacOgbmd8XCA7Civmtrw+bGnDoW5nfFwgOwor5reQPmNoxIFuZ3xcIDsKK+a5nj5jaMOpbmd8XCA7CivmuaY+c2jEk25nfFwgOwor5rm4Pmxpw6BuZ3xcIDsKK+a6lz5zaMOpbmd8XCA7Civmuqw+cWnEgW5nfFwgOwor5ruJPmh1x45uZ3xcIDsKK+a7sD5qaceObmd8XCA7Civmu7M+c2jEgW5nfFwgOwor5rySPnFpw6FuZ3xcIDsKK+a8oT5zaMSBbmd8XCA7CivmvLI+emjHjm5nfFwgOwor5ry0PmNow7NuZ3xcIDsKK+a8vz5qacSBbmd8XCA7Civmvag+emjFjW5nfFwgOwor5r6CPmNow6luZ3xcIDsKK+a+gz5qacOybmd8XCA7CivmvqA+c2jDqW5nfFwgOwor54CCPmppxY1uZ3xcIDsKK+eAkz5jaMOpbmd8XCA7Civnga4+Z3XEgW5nfFwgOwor54G3PnpodcOgbnxcIDsKK+eCgj56aMWNbmd8XCA7Civngpc+Z3XEgW5nfFwgOwor54KaPmd1xIFuZ3xcIDsKK+eCmz5ndcSBbmd8XCA7CivngqE+emjEk25nfFwgOwor54K+Pmh1x45uZ3xcIDsKK+eDnT56aMSTbmd8XCA7Civng6E+Z3XEgW5nfFwgOwor54OxPmppx5JuZ3xcIDsKK+eEqj5xacWNbmd8XCA7CivnhK0+cWnDs25nfFwgOwor54S6PnNoxJNuZ3xcIDsKK+eEuz5jaMOgbmd8XCA7CivnhYQ+emjFjW5nfFwgOwor54WaPmppx5JuZ3xcIDsKK+eFmz5qaceSbmd8XCA7CivnhaI+cWnDs25nfFwgOwor54aAPmh1x45uZ3xcIDsKK+eGjT5xacWNbmd8XCA7CivnhpA+amnHkm5nfFwgOwor54aXPnFpw6BuZ3xcIDsKK+eGsj5qaceSbmd8XCA7Civnhr8+aHXDoW5nfFwgOwor54iMPmh1w6BuZ3xcIDsKK+eInj5jaMOzbmd8XCA7CivniK0+emjEk25nfFwgOwor54ivPmNoxJNuZ3xcIDsKK+eJhD5xacSBbmd8XCA7CivniYY+cWnDoW5nfFwgOwor54maPmNoxJNuZ3xcIDsKK+eLhj56aMOybmd8XCA7Civni4w+c2jEk25nfFwgOwor54yQPnFpxIFuZ3xcIDsKK+eMmT56aMSTbmd8XCA7CivnjY4+amnHjm5nfFwgOwor542aPmh1w6FuZ3xcIDsKK+eNtz5ndceObmd8XCA7Civnjow+Y2h1w6BufFwgOwor546UPmNodcOgbnxcIDsKK+eOmT5jaMOgbmd8XCA7CivnjrE+cWnEgW5nfFwgOwor54+EPnNoxJNuZ3xcIDsKK+ePlj5ndcSBbmd8XCA7Civnj6Y+eGnDoG5nfFwgOwor54+rPmNoxY1uZ3xcIDsKK+ePtT5jaMOpbmd8XCA7Civnj7k+Y2jDqW5nfFwgOwor55CePnNow6huZ3xcIDsKK+eQpD5jaMSTbmd8XCA7CivnkKk+Y2jEgW5nfFwgOwor55GPPmNodcSBbnxcIDsKK+eRkT56aHXDoG58XCA7CivnkZ0+aHXDoW5nfFwgOwor55GyPnFpxIFuZ3xcIDsKK+eRuj5jaMOhbmd8XCA7Civnkbw+emh1xIFufFwgOwor55OKPnFpw7NuZ3xcIDsKK+eTlj54acSBbmd8XCA7Civnk7o+Y2jDoW5nfFwgOwor55SOPnpodcSBbnxcIDsKK+eUnj5jaMOhbmd8XCA7CivnlZU+amnEgW5nfFwgOwor55W6PmppxIFuZ3xcIDsKK+eVuz5zaMOpbmd8XCA7Civnlbw+Y2jDoG5nfFwgOwor55aFPmppxIFuZ3xcIDsKK+eXiz5jaMOzbmd8XCA7Civnl64+emjDoG5nfFwgOwor55iHPnpox5JuZ3xcIDsKK+eYrD56aMOgbmd8XCA7CivnmYA+aHXDoW5nfFwgOwor55mlPnpoxJNuZ3xcIDsKK+eamz5qaceSbmd8XCA7Civnmqk+aHXDoG5nfFwgOwor55yQPnpoxJNuZ3xcIDsKK+eclj5rdcOgbmd8XCA7CivnnL4+emjDsm5nfFwgOwor552IPmNoxJtuZ3xcIDsKK+edmD5xacOzbmd8XCA7CivnnZw+emjEk25nfFwgOwor556PPnFpw7NuZ3xcIDsKK+eelT56aMOgbmd8XCA7Civnn4w+a3XDoG5nfFwgOwor55+8PmppxIFuZ3xcIDsKK+ehhD5rdcSBbmd8XCA7Civno5o+emh1xIFufFwgOwor56OiPnFpx45uZ3xcIDsKK+ekgz56aMeObmd8XCA7CivnpKY+a3XDoG5nfFwgOwor56WMPnpow7JuZ3xcIDsKK+eopj5jaMOzbmd8XCA7CivnqK4+emjHkm5nfFwgOwor56mUPmh1w6FuZ3xcIDsKK+epnj5rdcOgbmd8XCA7Civnqao+Y2jEk25nfFwgOwor56qaPmNow6luZ3xcIDsKK+eqrj5xacOzbmd8XCA7Civnq4A+Y2jEk25nfFwgOwor56uGPnFpw7NuZ3xcIDsKK+ersT56aHXHjm58XCA7CivnrLs+cWnDs25nfFwgOwor562HPnFpw7NuZ3xcIDsKK+etlz56aMOybmd8XCA7Civnraw+Y2jDqW5nfFwgOwor566PPnpoxJNuZ3xcIDsKK+eutT5zaMSbbmd8XCA7Civnr5w+emjEk25nfFwgOwor56+sPnFpxIFuZ3xcIDsKK+evuT56aHXDoG58XCA7Civnr78+emh1xIFufFwgOwor57GRPnpodcOgbnxcIDsKK+expj56aMWNbmd8XCA7Civnsrs+emjEgW5nfFwgOwor57OhPmppw6BuZ3xcIDsKK+ezpz5sacOhbmd8XCA7Civns6g+amnDoG5nfFwgOwor57O9PnpoxJtuZ3xcIDsKK+e1gj56aMWNbmd8XCA7CivntYU+amnHkm5nfFwgOwor57WWPmt1w6BuZ3xcIDsKK+e1sz5qacOgbmd8XCA7CivntbQ+eGnDoW5nfFwgOwor57W+PmNow6luZ3xcIDsKK+e2lz5qaceSbmd8XCA7Civnt4k+bGnHjm5nfFwgOwor57eUPnpow6BuZ3xcIDsKK+e3lz54acSBbmd8XCA7Civnt58+emjDsm5nfFwgOwor57e9PmNoxJNuZ3xcIDsKK+e4sz56aHXDoG58XCA7CivnuYg+cWnHjm5nfFwgOwor57mmPnFpx45uZ3xcIDsKK+e5qT5zaMOpbmd8XCA7Civnua4+amnEgW5nfFwgOwor57qKPmt1w6BuZ3xcIDsKK+e6lT54acSBbmd8XCA7Civnuqk+a3XDoG5nfFwgOwor576XPnFpxIFuZ3xcIDsKK+e+pT5xaceObmd8XCA7Civnvqs+cWnEgW5nfFwgOwor5767PnFpw6BuZ3xcIDsKK+e+vj5jaMWNbmd8XCA7Civnv4A+Y2jFjW5nfFwgOwor57+ePmppxIFuZ3xcIDsKK+iAkT56aHXEgW58XCA7CivogYc+emjEk25nfFwgOwor6IGWPnNow6huZ3xcIDsKK+iBsj5zaMSTbmd8XCA7Civog5g+c2jEk25nfFwgOwor6ISAPmNow6luZ3xcIDsKK+iErT5jaMOpbmd8XCA7CivohLc+Y2jDoW5nfFwgOwor6IS5Pnpow6BuZ3xcIDsKK+iEvD5saceObmd8XCA7CivohYQ+Y2h1w6FpfFwgOwor6IWoPmNodceObnxcIDsKK+iFqz56aMeSbmd8XCA7Civohbg+Y2jDoW5nfFwgOwor6IaTPmNow6FuZ3xcIDsKK+iGlz5jaHXDoWl8XCA7Civohpk+amnHjm5nfFwgOwor6IaePnpodcSBbnxcIDsKK+iGtz54acSBbmd8XCA7Civoh6Y+Z3XDoG5nfFwgOwor6IepPmd1w6BuZ3xcIDsKK+iIqT5jaHXDoW58XCA7CivoiK8+emjFjW5nfFwgOwor6ImOPmh1w6FuZ3xcIDsKK+iKlj54aceObmd8XCA7Civoi5g+cWnHkm5nfFwgOwor6IyqPmd1xIFuZ3xcIDsKK+iMsz5qacSBbmd8XCA7CivojLo+Y2jFjW5nfFwgOwor6Iy9Pnpow7JuZ3xcIDsKK+iNiD5jaHXHjm58XCA7Civojb8+Y2jDqW5nfFwgOwor6JCHPmNow6FuZ3xcIDsKK+iQqz54acOgbmd8XCA7CivokYE+amnEgW5nfFwgOwor6JGZPnhpxIFuZ3xcIDsKK+iRnz5odcOhbmd8XCA7CivokoM+emh1w6BufFwgOwor6JSDPmppw6BuZ3xcIDsKK+iUjz5zaMSBbmd8XCA7CivolKI+amnEgW5nfFwgOwor6JSjPmppx45uZ3xcIDsKK+iWjD54acSBbmd8XCA7CivolpE+amnEgW5nfFwgOwor6JaUPnFpw6FuZ3xcIDsKK+iXrT5xacOzbmd8XCA7CivomIw+amnHkm5nfFwgOwor6JiPPmppxY1uZ3xcIDsKK+iYlD5qacWNbmd8XCA7CivomKA+cWnDoW5nfFwgOwor6JmwPmNow6luZ3xcIDsKK+iagz54aceObmd8XCA7Civomps+emjDsm5nfFwgOwor6Jy9Pmxpx45uZ3xcIDsKK+idqT5jaMOzbmd8XCA7CivonoA+amnEgW5nfFwgOwor6J6qPnNoxIFuZ3xcIDsKK+ievz5qacSBbmd8XCA7Civon7I+Y2jDs25nfFwgOwor6J+2PmNoxJNuZ3xcIDsKK+iggT54acOgbmd8XCA7CivooLA+c2jDoG5nfFwgOwor6KGBPmh1xIFuZ3xcIDsKK+ihhj56aMOybmd8XCA7CivooZ0+Y2jFjW5nfFwgOwor6KGzPnpoxY1uZ3xcIDsKK+ihtj5jaMWNbmd8XCA7CivoorY+amnDoG5nfFwgOwor6KOuPmNoxIFuZ3xcIDsKK+ijsj5saceObmd8XCA7Civoo78+Y2jFjW5nfFwgOwor6KSIPmNow7NuZ3xcIDsKK+ikpz5qaceSbmd8XCA7CivopLw+cWnHjm5nfFwgOwor6KWIPnpodcOgbnxcIDsKK+ilkD54acOgbmd8XCA7Civop7Q+c2jEgW5nfFwgOwor6KipPnhpxY1uZ3xcIDsKK+iovD56aMOobmd8XCA7CivoqZc+eGnDsm5nfFwgOwor6KmkPmh1x45uZ3xcIDsKK+ipsz54acOhbmd8XCA7Civoqb4+eGnFjW5nfFwgOwor6KqGPmt1xIFuZ3xcIDsKK+iqkT5rdcOhbmd8XCA7CivoqqA+Y2jDqW5nfFwgOwor6KqvPmNow6BuZ3xcIDsKK+irjT56aMSTbmd8XCA7Civoq5A+bGnDoW5nfFwgOwor6KuSPmxpw6BuZ3xcIDsKK+irpT56aMOybmd8XCA7Civoq68+Y2h1w6FufFwgOwor6KyKPmh1x45uZ3xcIDsKK+iskj5xacSBbmd8XCA7CivorJs+amnHjm5nfFwgOwor6KyqPnNoxIFuZ3xcIDsKK+isvT5qacOgbmd8XCA7CivorYk+emjDqG5nfFwgOwor6K2UPnpodcOgbnxcIDsKK+itnT5zaMOpbmd8XCA7Civorrs+eGnFjW5nfFwgOwor6K+HPnhpw7JuZ3xcIDsKK+iyuj5rdcOgbmd8XCA7Civos5c+Y2h1w6BufFwgOwor6LOePnNox45uZ3xcIDsKK+izrD56aMOgbmd8XCA7Civos68+eGnFjW5nfFwgOwor6LO4PnNow6huZ3xcIDsKK+izuj56aHXDoG58XCA7CivotIM+emh1w6BufFwgOwor6LWoPnhpw7NuZ3xcIDsKK+i1qj5jaMSTbmd8XCA7Civotaw+Y2jEk25nfFwgOwor6LW5PnFpw7NuZ3xcIDsKK+i2mj5jaMSTbmd8XCA7Civotqo+aHXDoW5nfFwgOwor6LepPnpodceOaXxcIDsKK+i4rT56aMSTbmd8XCA7CivouYw+cWnDoG5nfFwgOwor6LmWPmNoxY1uZ3xcIDsKK+i5oT5xacSBbmd8XCA7CivoubE+emjFjW5nfFwgOwor6LqAPmt1w6BuZ3xcIDsKK+i7lj5xacOhbmd8XCA7Civou6I+emh1x45ufFwgOwor6LutPmt1xIFuZ3xcIDsKK+i8gT5xacOzbmd8XCA7CivovIQ+Z3XEgW5nfFwgOwor6LyMPmxpw6BuZ3xcIDsKK+i8mz5sacOgbmd8XCA7CivovKw+bGnDoW5nfFwgOwor6LyyPmNodcOhbnxcIDsKK+i9iT56aHXHjml8XCA7Civovow+bGnDoW5nfFwgOwor6YCIPmppx5JuZ3xcIDsKK+mBpz56aMSBbmd8XCA7Civpgrw+a3XEgW5nfFwgOwor6YOVPmNow6luZ3xcIDsKK+mDtz54acSBbmd8XCA7CivphIk+eGnEgW5nfFwgOwor6YSVPnhpxIFuZ3xcIDsKK+mEnz56aHXEgW58XCA7CivphK0+emjDqG5nfFwgOwor6YS6Pmt1w6BuZ3xcIDsKK+mFqz5jaMOzbmd8XCA7CivphbI+Y2jDqW5nfFwgOwor6YaOPmNow6luZ3xcIDsKK+mGpD5qacOgbmd8XCA7Civphqw+amnDoG5nfFwgOwor6Ya4Pm5pw6BuZ3xcIDsKK+mHgD5uacOgbmd8XCA7Civph6c+Y2h1w6BufFwgOwor6YihPnpoxY1uZ3xcIDsKK+mJpj56aMSTbmd8XCA7CivpibE+a3XDoG5nfFwgOwor6YqDPmNow7JuZ3xcIDsKK+mKhD5zaMOgbmd8XCA7Civpiqc+Z3XEgW5nfFwgOwor6Yq/PnpoxY1uZ3xcIDsKK+mLrj5jaMOpbmd8XCA7Civpi7k+Y2jHjm5nfFwgOwor6Yu/PmNow6FuZ3xcIDsKK+mMhj5xacSBbmd8XCA7CivpjJo+emjEk25nfFwgOwor6YypPmNoxIFuZ3xcIDsKK+mNoD5odcOhbmd8XCA7Civpjb4+emjFjW5nfFwgOwor6Y6RPmNoxJNuZ3xcIDsKK+mOlz5xacSBbmd8XCA7CivpjqM+amnHkm5nfFwgOwor6Y6kPmh1x45uZ3xcIDsKK+mPmD5xacSBbmd8XCA7Civpj5s+Y2jDoW5nfFwgOwor6Y+zPnpoxJNuZ3xcIDsKK+mPuT5xacSBbmd8XCA7Civpj78+Y2jEk25nfFwgOwor6ZCYPnpoxY1uZ3xcIDsKK+mQuj5jaMSTbmd8XCA7CivpkZs+a3XDoG5nfFwgOwor6ZGcPnNow6BuZ3xcIDsKK+mRsj54acSBbmd8XCA7Civpk5Y+Y2jDqW5nfFwgOwor6ZSgPmNoxIFuZ3xcIDsKK+mUvT5odcOhbmd8XCA7Civplbc+Y2jDoW5nfFwgOwor6ZaCPnNodcSBbnxcIDsKK+mWtj5jaMSBbmd8XCA7Civpl4A+eGnDoG5nfFwgOwor6ZeCPnhpw6BuZ3xcIDsKK+mXmz5jaMSBbmd8XCA7CivpmLc+Y2jEk25nfFwgOwor6ZmePnNoxJNuZ3xcIDsKK+mZuT5zaMSTbmd8XCA7CivpnZc+Y2jDqG5nfFwgOwor6Z6dPnpox45uZ3xcIDsKK+mfgT5qacSBbmd8XCA7Civpn5Q+Y2jDoG5nfFwgOwor6Z+5Pmh1w6FuZ3xcIDsKK+mfvz54aceObmd8XCA7CivpoIU+eGnDoG5nfFwgOwor6aCzPmNoxJNuZ3xcIDsKK+mhiD5qaceSbmd8XCA7CivpoZM+emh1xIFufFwgOwor6aGcPmppx45uZ3xcIDsKK+mijj5qaceSbmd8XCA7CivppIk+eGnHjm5nfFwgOwor6aSmPnpoxIFuZ3xcIDsKK+mkrT5odcOhbmd8XCA7CivppYw+emh1w6BufFwgOwor6aWTPmNoxJNuZ3xcIDsKK+mllz54aceObmd8XCA7CivppZ8+eGnHjm5nfFwgOwor6aeJPmppx5JuZ3xcIDsKK+mnqz5qacWNbmd8XCA7Civpp7o+bGnDoW5nfFwgOwor6aiBPmNoxJtuZ3xcIDsKK+monD5odcOhbmd8XCA7CivpqKw+Y2jDqW5nfFwgOwor6ai/PnpoxIFuZ3xcIDsKK+mppD54acSBbmd8XCA7CivprIc+emjEk25nfFwgOwor6ay6PnNoxIFuZ3xcIDsKK+mtjj5saceObmd8XCA7Civprp0+eGnHjm5nfFwgOwor6a+XPnhpx45uZ3xcIDsKK+mvpz5jaMSBbmd8XCA7CivpsIk+aHXDoW5nfFwgOwor6bGCPmppxIFuZ3xcIDsKK+mxhD56aHXEgW58XCA7CivpsYY+emjEgW5nfFwgOwor6bGMPnhpw6BuZ3xcIDsKK+mxkT5odcOhbmd8XCA7CivpsaY+c2jDqW5nfFwgOwor6bGoPmNow6FuZ3xcIDsKK+mxtj54aceObmd8XCA7Civpsr8+Y2jDoW5nfFwgOwor6bOHPmh1w6FuZ3xcIDsKK+mziT5qacSBbmd8XCA7CivptKQ+emjFjW5nfFwgOwor6bWfPmt1w6FuZ3xcIDsKK+m1vz5zaMSTbmd8XCA7Civpt5I+emh1xIFufFwgOwor6besPmh1w6FuZ3xcIDsKK+m6nj56aMSBbmd8XCA7Civpu4M+aHXDoW5nfFwgOwor6buGPmd1xIFuZ3xcIDsKK+m7ij5rdcOgbmd8XCA7Civpu4s+a3XHjm5nfFwgOwor6byaPmNoxIFuZ3xcIDsKK+m8qj5zaMSTbmd8XCA7Civwopi4Pmppw6BuZ3xcIDsKK/CipZ4+Y2jFjW5nfFwgOwor6K+0PnNodcWNfFwgOwor5bm0Pm5pw6FufFwgOwor552APnpow6FvfFwgOwor5bCPPnhpx45vfFwgOwor5aSpPnRpxIFufFwgOwor6IO9Pm7DqW5nfFwgOwor6L+YPmh1w6FufFwgOwor5b2TPmTEgW5nfFwgOwor5omLPnNox5J1fFwgOwor55SoPnnDsm5nfFwgOwor6KGMPmjDoW5nfFwgOwor5pa5PmbEgW5nfFwgOwor5YmNPnFpw6FufFwgOwor6KeBPmppw6BufFwgOwor57uPPmrEq25nfFwgOwor6Z2iPm1pw6BufFwgOwor5YWsPmfFjW5nfFwgOwor5ZCMPnTDs25nfFwgOwor5LuOPmPDs25nfFwgOwor5YqoPmTDsm5nfFwgOwor5qC3PnnDoW5nfFwgOwor546wPnhpw6BufFwgOwor6LqrPnNoxJNufFwgOwor54K5PmRpx45ufFwgOwor5piOPm3DrW5nfFwgOwor5YWoPnF1w6FufFwgOwor5belPmfFjW5nfFwgOwor5oOFPnHDrW5nfFwgOwor5ZCNPm3DrW5nfFwgOwor5a6aPmTDrG5nfFwgOwor562JPmTEm25nfFwgOwor6Ze0PmppxIFufFwgOwor5L6/PmJpw6BufFwgOwor55S1PmRpw6BufFwgOwor5LicPmTFjW5nfFwgOwor5pWZPmppxIFvfFwgOwor5bmzPnDDrW5nfFwgOwor55yfPnpoxJNufFwgOwor5ZCsPnTEq25nfFwgOwor5bCRPnNox45vfFwgOwor5YWzPmd1xIFufFwgOwor5bm2PmLDrG5nfFwgOwor5LqnPmNox45ufFwgOwor5YWIPnhpxIFufFwgOwor5bGxPnNoxIFufFwgOwor5rC0PnNodceQfFwgOwor5oC7PnrHkm5nfFwgOwor5ZGYPnl1w6FufFwgOwor56yRPnhpw6BvfFwgOwor5oCnPnjDrG5nfFwgOwor6YCaPnTFjW5nfFwgOwor5ZG9Pm3DrG5nfFwgOwor56WePnNow6lufFwgOwor5Lu2Pmppw6BufFwgOwor6KGoPmJpx45vfFwgOwor5Y6fPnl1w6FufFwgOwor5bqUPnnDrG5nfFwgOwor5Y+rPmppw6BvfFwgOwor5pu0PmfDqG5nfFwgOwor5pS+PmbDoG5nfFwgOwor5Y+XPnNow7J1fFwgOwor546LPnfDoW5nfFwgOwor5LqsPmrEq25nfFwgOwor5riFPnHEq25nfFwgOwor6L65PmJpxIFufFwgOwor5YWxPmfDsm5nfFwgOwor6aOOPmbEk25nfFwgOwor5oiYPnpow6BufFwgOwor5pybPnfDoG5nfFwgOwor5bu6Pmppw6BufFwgOwor57ufPnTHkm5nfFwgOwor6K+3PnHHkG5nfFwgOwor5LqkPmppxIFvfFwgOwor6K6pPnLDoG5nfFwgOwor566XPnN1w6BufFwgOwor5YWDPnl1w6FufFwgOwor5YqfPmfFjW5nfFwgOwor6Z2SPnHEq25nfFwgOwor566hPmd1x45ufFwgOwor6L+ePmxpw6FufFwgOwor6L+cPnl1x45ufFwgOwor5b+rPmt1w6BpfFwgOwor5p2hPnRpw6FvfFwgOwor6ZmiPnl1w6BufFwgOwor5Y+YPmJpw6BufFwgOwor6IGUPmxpw6FufFwgOwor5p2DPnF1w6FufFwgOwor5b6APnfHjm5nfFwgOwor5bGVPnpox45ufFwgOwor6aKGPmzHkG5nfFwgOwor57qiPmjDs25nfFwgOwor5ZGoPnpoxY11fFwgOwor5rexPnNoxJNufFwgOwor56m6PmvFjW5nfFwgOwor55SaPnNow6hufFwgOwor6L27PnHEq25nfFwgOwor6IuxPnnEq25nfFwgOwor5LukPmzDrG5nfFwgOwor5pS2PnNoxY11fFwgOwor6IS4Pmxpx45ufFwgOwor6ZKxPnFpw6FufFwgOwor5YWaPmTHjm5nfFwgOwor5Y2DPnFpxIFufFwgOwor54mHPnBpw6BufFwgOwor5a65PnLDs25nfFwgOwor5om+Pnpox45vfFwgOwor56uZPnpow6BufFwgOwor5b2iPnjDrW5nfFwgOwor5oi/PmbDoW5nfFwgOwor6aaWPnNox5J1fFwgOwor5b2xPnnHkG5nfFwgOwor572RPnfHjm5nfFwgOwor5YW1PmLEq25nfFwgOwor6LCBPnNodcOtfFwgOwor5qChPnhpw6BvfFwgOwor6KeCPmd1xIFufFwgOwor57yWPmJpxIFufFwgOwor5YmRPmppw6BufFwgOwor6LCDPmRpw6BvfFwgOwor5pu+PmPDqW5nfFwgOwor5YeGPnpox5RufFwgOwor5ZuiPnR1w6FufFwgOwor5q61PmR1w6BufFwgOwor57K+PmrEq25nfFwgOwor5a6YPmd1xIFufFwgOwor56ufPmrDrG5nfFwgOwor54WnPnpow6BvfFwgOwor5oubPnpoxIFvfFwgOwor5YW0PnjEq25nfFwgOwor6ZizPnnDoW5nfFwgOwor5oOKPmrEq25nfFwgOwor6YCJPnh1x45ufFwgOwor5qyiPmh1xIFufFwgOwor5Y+mPmzDrG5nfFwgOwor5rivPmfHjm5nfFwgOwor5pifPnjEq25nfFwgOwor5patPmR1w6BufFwgOwor6ZmIPmNow6lufFwgOwor5YacPm7Ds25nfFwgOwor5b+1Pm5pw6BufFwgOwor5YiaPmfEgW5nfFwgOwor5pi+Pnhpx45ufFwgOwor5raIPnhpxIFvfFwgOwor6YCBPnPDsm5nfFwgOwor5biuPmLEgW5nfFwgOwor57q/Pnhpw6BufFwgOwor5oS/Pnl1w6BufFwgOwor5aKePnrEk25nfFwgOwor5p2oPnnDoW5nfFwgOwor5paZPmxpw6BvfFwgOwor5beePnpoxY11fFwgOwor5LuNPnLDqW5nfFwgOwor6ISaPmppx45vfFwgOwor5qCHPmJpxIFvfFwgOwor55eFPmLDrG5nfFwgOwor5aKDPmrDrG5nfFwgOwor6L2vPnJ1x45ufFwgOwor5pydPmNow6FvfFwgOwor5pyLPnDDqW5nfFwgOwor5L6bPmfDsm5nfFwgOwor5LmxPmx1w6BufFwgOwor6b6ZPmzDs25nfFwgOwor5pilPmNoxatufFwgOwor5b+ZPm3DoW5nfFwgOwor55ebPnTDsm5nfFwgOwor5rKJPmNow6lufFwgOwor54G1PmzDrW5nfFwgOwor5YGcPnTDrW5nfFwgOwor5Z2XPmt1w6BpfFwgOwor5Ya3PmzEm25nfFwgOwor5oCqPmd1w6BpfFwgOwor6Z2ZPmrDrG5nfFwgOwor5peBPnDDoW5nfFwgOwor5ZutPnl1w6FufFwgOwor55m7PmTEk25nfFwgOwor6L6DPmppw6BvfFwgOwor5a6jPnh1xIFufFwgOwor5aCCPnTDoW5nfFwgOwor5aSuPnnEgW5nfFwgOwor5oCAPmh1w6FpfFwgOwor6JClPnnDrW5nfFwgOwor5aeTPnjDrG5nfFwgOwor5YW7PnnHjm5nfFwgOwor5pmvPmrHkG5nfFwgOwor5riQPmppw6BufFwgOwor6JePPmPDoW5nfFwgOwor5pGYPnpoxIFpfFwgOwor6KeSPmppx45vfFwgOwor556nPnFpw6FvfFwgOwor6Zi1Pnpow6hufFwgOwor5bGCPmPDqW5nfFwgOwor6aaGPmd1x45ufFwgOwor55SwPnRpw6FufFwgOwor566APmppx45ufFwgOwor5YWNPm1px45ufFwgOwor5Z6LPnjDrW5nfFwgOwor5o2iPmh1w6BufFwgOwor5rSLPnnDoW5nfFwgOwor552hPnNodcOsfFwgOwor5bq3PmvEgW5nfFwgOwor6K+EPnDDrW5nfFwgOwor6L+9PnpodcSrfFwgOwor5bqXPmRpw6BufFwgOwor546vPmh1w6FufFwgOwor6LaFPmNoxIFvfFwgOwor5Y2gPnpoxIFufFwgOwor5rC4PnnHkm5nfFwgOwor5rqQPnl1w6FufFwgOwor6ZmpPnhpx45ufFwgOwor6K6/PmbHjm5nfFwgOwor5Ly4PnNoxJNufFwgOwor6ZmQPnhpw6BufFwgOwor6LezPnRpw6BvfFwgOwor57uDPmxpw6BufFwgOwor5bm4PnjDrG5nfFwgOwor5pWIPnhpw6BvfFwgOwor5bCBPmbEk25nfFwgOwor5pS7PmfFjW5nfFwgOwor6aG2PmTHkG5nfFwgOwor5a6BPm7DrW5nfFwgOwor6ZiyPmbDoW5nfFwgOwor5oqTPnpodcSBfFwgOwor6aG6PnNow7lufFwgOwor6K2mPmrHkG5nfFwgOwor5qKmPm3DqG5nfFwgOwor5ZaEPnNow6BufFwgOwor6JKZPm3DqW5nfFwgOwor56WoPnBpw6BvfFwgOwor5Z2aPmppxIFufFwgOwor56uvPmR1xIFufFwgOwor5o6JPmRpw6BvfFwgOwor5o6IPnNow7J1fFwgOwor5a6IPnNox5J1fFwgOwor5Y6/Pnhpw6BufFwgOwor5bqtPnTDrW5nfFwgOwor5omsPnnDoW5nfFwgOwor5b+YPnfDoG5nfFwgOwor5rSyPnpoxY11fFwgOwor5p2+PnPFjW5nfFwgOwor5Z2PPmh1w6BpfFwgOwor6YKTPmTDqG5nfFwgOwor6bKcPnhpxIFufFwgOwor55+tPmR1x45ufFwgOwor5oqXPmvDoG5nfFwgOwor552bPmrEq25nfFwgOwor6ZSAPnhpxIFvfFwgOwor5a6XPnrFjW5nfFwgOwor6LW1Pnpow6BvfFwgOwor54GvPmTEk25nfFwgOwor5bOwPmbEk25nfFwgOwor5qy+Pmt1x45ufFwgOwor5rSqPmjDs25nfFwgOwor6K6iPmTDrG5nfFwgOwor6ZWHPnpow6hufFwgOwor6Z2WPmrDrG5nfFwgOwor55SzPnNoxJNufFwgOwor6L+OPnnDrW5nfFwgOwor5LiBPmTEq25nfFwgOwor5a6hPnNoxJtufFwgOwor6YGNPmJpw6BufFwgOwor5qGMPnpodcWNfFwgOwor5pmTPnhpx45vfFwgOwor5byEPm7Dsm5nfFwgOwor5LqhPnfDoW5nfFwgOwor5qGlPnFpw6FvfFwgOwor6ZeqPnNox45ufFwgOwor5YqyPmrDrG5nfFwgOwor5oGQPmvHkm5nfFwgOwor5pWsPmrDrG5nfFwgOwor55uRPmppxIFufFwgOwor5Y6FPnTEq25nfFwgOwor6ZyHPnpow6hufFwgOwor5YawPmLEq25nfFwgOwor6YaSPnjHkG5nfFwgOwor5bqGPnHDrG5nfFwgOwor56GsPnnDrG5nfFwgOwor5ZSuPnNow7J1fFwgOwor56ulPnTDs25nfFwgOwor57yTPmh1x45ufFwgOwor54OnPnNoxIFvfFwgOwor5o6nPmvDsm5nfFwgOwor56+HPnBpxIFufFwgOwor5rSePmTDsm5nfFwgOwor6I2jPnLDs25nfFwgOwor5oeCPmTHkm5nfFwgOwor5oulPnnHkm5nfFwgOwor54yuPnhpw6BufFwgOwor5qiqPmjDqW5nfFwgOwor5YGlPmppw6BufFwgOwor562+PnFpxIFufFwgOwor6JOJPnLDs25nfFwgOwor5r2uPmNow6FvfFwgOwor5ZyGPnl1w6FufFwgOwor5Y23Pmp1x45ufFwgOwor5aaZPm1pw6BvfFwgOwor5rWqPmzDoG5nfFwgOwor5oq9PmNoxY11fFwgOwor5YGPPnBpxIFufFwgOwor57q1PnrDsm5nfFwgOwor6IiqPmjDoW5nfFwgOwor5ouzPnF1w6FufFwgOwor5ZSQPnTDoW5nfFwgOwor5qOAPmppx45ufFwgOwor5a6rPmfFjW5nfFwgOwor6KKBPnl1w6FufFwgOwor5Y+sPnpoxIFvfFwgOwor54ybPm3Em25nfFwgOwor5a69Pmt1xIFufFwgOwor57uNPnNow6BvfFwgOwor5YW4PmRpx45ufFwgOwor5ZyIPnF1xIFufFwgOwor5LiwPmbEk25nfFwgOwor5oyRPnRpxIFvfFwgOwor6IKpPmppxIFufFwgOwor5YePPmppx45ufFwgOwor6ZKIPnpoxJNufFwgOwor56uePmrDrG5nfFwgOwor5oy6PnTHkG5nfFwgOwor5a6LPnPDsm5nfFwgOwor6ZKiPmfEgW5nfFwgOwor5oKEPnFpx45vfFwgOwor5LmUPnFpw6FvfFwgOwor5LuHPmNow7N1fFwgOwor5ZC5PmNodcSrfFwgOwor6J6NPnLDs25nfFwgOwor5YeAPmrDrG5nfFwgOwor5LuZPnhpxIFufFwgOwor5benPnFpx45vfFwgOwor6Zu2PmzDrW5nfFwgOwor6I2hPmTDoG5nfFwgOwor54+NPnpoxJNufFwgOwor5YuHPnnHkm5nfFwgOwor56iOPnNodcOsfFwgOwor5YOnPnPEk25nfFwgOwor6ZSLPmbEk25nfFwgOwor5oOvPmd1w6BufFwgOwor5YetPnDDrW5nfFwgOwor5YagPmd1w6BufFwgOwor56KwPnDDqG5nfFwgOwor5YC+PnHEq25nfFwgOwor5bCWPmppxIFufFwgOwor5Lu/PmbHjm5nfFwgOwor6aOYPnBpxIFvfFwgOwor5pmoPmNow6lufFwgOwor57qvPmNow7pufFwgOwor57yYPnl1w6FufFwgOwor5YasPmTFjW5nfFwgOwor6YOOPmzDoW5nfFwgOwor6ZeyPnhpw6FufFwgOwor6ZWcPmrDrG5nfFwgOwor576KPnnDoW5nfFwgOwor6JCNPnDDrW5nfFwgOwor5YiRPnjDrW5nfFwgOwor5YekPmbDqG5nfFwgOwor5a2UPmvHkm5nfFwgOwor6KemPmjDs25nfFwgOwor5oGLPmxpw6BufFwgOwor6ZqGPmzDs25nfFwgOwor6JCnPnhpxIFvfFwgOwor5oCoPnl1w6BufFwgOwor6b6EPmzDrW5nfFwgOwor5b6EPmrDrG5nfFwgOwor5LuwPnnHjm5nfFwgOwor5pigPnnDrG5nfFwgOwor6IW+PnTDqW5nfFwgOwor56iNPnNoxIFvfFwgOwor5bKXPmfHjm5nfFwgOwor5oyhPmTHjm5nfFwgOwor5aWJPmbDqG5nfFwgOwor5pyXPmzHjm5nfFwgOwor5YW8PmppxIFufFwgOwor5YqdPnF1w6BufFwgOwor55uIPnnDrW5nfFwgOwor6Zm3Pnhpw6BufFwgOwor6bijPm3DrW5nfFwgOwor5YCYPnTHjm5nfFwgOwor5oyvPnpow6hufFwgOwor5LinPnPDoG5nfFwgOwor54SmPmppxIFvfFwgOwor5YeMPmzDrW5nfFwgOwor6aqXPnBpw6BufFwgOwor55aXPmxpw6FvfFwgOwor5bCYPmNow6lufFwgOwor6Lq6PnTHjm5nfFwgOwor5b2qPmJpxIFvfFwgOwor5LqVPmrHkG5nfFwgOwor5rGqPnfEgW5nfFwgOwor5ryCPnBpx45vfFwgOwor6IGKPmxpw6FvfFwgOwor5YedPm7DrW5nfFwgOwor5b2tPnDDqW5nfFwgOwor5YyGPmPFjW5nfFwgOwor5o+PPm1pw6FvfFwgOwor5oSBPmNow7N1fFwgOwor5raMPnnHkm5nfFwgOwor5rGkPnTEgW5nfFwgOwor546EPnh1w6FufFwgOwor6L2wPmjFjW5nfFwgOwor5aW4PmppxIFufFwgOwor5oCcPmxpw6FufFwgOwor6bifPm5px45vfFwgOwor6YKmPmLEgW5nfFwgOwor6IGqPmPFjW5nfFwgOwor6L6pPmJpw6BufFwgOwor55O2PnDDrW5nfFwgOwor5rKIPnNoxJtufFwgOwor5p6rPmbEk25nfFwgOwor6IejPmNow6lufFwgOwor5o+0Pnl1w6FufFwgOwor6YW4PnN1xIFufFwgOwor55ufPm3DqW5nfFwgOwor6IOWPnDDoG5nfFwgOwor5ZO8PmjEk25nfFwgOwor55imPnNow7J1fFwgOwor566tPmppw6BufFwgOwor5r2cPnFpw6FufFwgOwor6bi/PmjDs25nfFwgOwor5LqtPnTDrW5nfFwgOwor54u8PmzDoW5nfFwgOwor6IiwPmppw6BufFwgOwor54m1PnFpxIFufFwgOwor55avPmbEk25nfFwgOwor6aKkPnpow6BufFwgOwor6KGrPnNoxIFufFwgOwor6ImwPmppxIFufFwgOwor6IuNPmPEgW5nfFwgOwor5peLPnh1w6FufFwgOwor5qGRPnPEgW5nfFwgOwor6I6yPmxpw6FufFwgOwor6ZK7Pnp1xIFufFwgOwor5a6PPmjDs25nfFwgOwor5bm7Pmh1w6BufFwgOwor6L69Pmxpw6FvfFwgOwor5oKjPmh1w6BufFwgOwor6KGhPmjDqW5nfFwgOwor5LiRPmNox5J1fFwgOwor5pqWPm51x45ufFwgOwor5rWTPm7Ds25nfFwgOwor6ZSuPmppw6BufFwgOwor6IetPmNow7J1fFwgOwor6IqzPmbEgW5nfFwgOwor5Z6CPmNodcOtfFwgOwor5o2JPnpodcWNfFwgOwor5oGtPmfFjW5nfFwgOwor5rOJPnF1w6FufFwgOwor6ISPPnrEgW5nfFwgOwor55a8PnTDqW5nfFwgOwor6ZOcPnTDs25nfFwgOwor5qGjPmTHjm5nfFwgOwor6IuXPm1pw6FvfFwgOwor5p+EPmLHkG5nfFwgOwor6IifPnpoxY11fFwgOwor56aFPnNow6BufFwgOwor5pWyPnFpxIFvfFwgOwor5625PmNow7N1fFwgOwor5rWFPnFpx45ufFwgOwor5p+0PmNow6FpfFwgOwor6ZuVPmRpxIFvfFwgOwor5a+/PnNow7J1fFwgOwor6JGjPmTHkm5nfFwgOwor6Ym0Pmppw6BufFwgOwor5Yi3PnNodcSBfFwgOwor5o2QPmp1xIFufFwgOwor6LSvPmd1w6BufFwgOwor5q6/PmRpw6BufFwgOwor6L+BPnFpxIFufFwgOwor6Z6tPmJpxIFufFwgOwor6IyrPm3DoW5nfFwgOwor6YCiPmbDqW5nfFwgOwor5ZyzPnpow6hufFwgOwor6LiqPmNodcOyfFwgOwor5LibPmPDs25nfFwgOwor5ZC1PmNox45vfFwgOwor6LShPmfDsm5nfFwgOwor6LWiPmfDsm5nfFwgOwor5qOSPmLDoG5nfFwgOwor5oGSPmjDqW5nfFwgOwor6LSkPnhpw6FufFwgOwor5ouGPmNoxIFpfFwgOwor57ygPmNow6FufFwgOwor57ydPmbDqW5nfFwgOwor6IKWPnhpw6BvfFwgOwor54K8Pmxpw6BufFwgOwor5a6qPnhpw6BufFwgOwor5bqZPm1pw6BvfFwgOwor5YavPmbDqW5nfFwgOwor5ZSkPmh1w6BufFwgOwor55ScPnRpw6FufFwgOwor5bq4PnnFjW5nfFwgOwor6bmPPnDDqW5nfFwgOwor546yPmzDrW5nfFwgOwor57u8PnrDsm5nfFwgOwor5auMPnhpw6FufFwgOwor5omUPnLEk25nfFwgOwor5oKsPnh1w6FufFwgOwor5bu3PnTDrW5nfFwgOwor56y8PmzDs25nfFwgOwor6aKgPmRpxIFufFwgOwor5omHPnNow6BufFwgOwor5ZSHPmNow7pufFwgOwor5o2nPnDEm25nfFwgOwor5YakPnl1xIFufFwgOwor55qxPnpow7J1fFwgOwor6YGjPnFpx45ufFwgOwor57+BPnfEk25nfFwgOwor6ZWWPmJpxIFvfFwgOwor5bGPPnDDrW5nfFwgOwor5qOJPm1pw6FufFwgOwor5a2fPm3DqG5nfFwgOwor6JGsPnrDoG5nfFwgOwor5re7PnRpxIFufFwgOwor5YWGPnpow6BvfFwgOwor5qygPnFpw6BufFwgOwor6ZKTPmRpw6BvfFwgOwor5ZCKPmRpw6BvfFwgOwor5aGrPnRpw6FufFwgOwor5oqEPmNoxIFvfFwgOwor556qPmTDqG5nfFwgOwor5YmqPmppx45ufFwgOwor5YC6Pnpow6BpfFwgOwor5pm2PmrEq25nfFwgOwor5Y2TPnpodcOzfFwgOwor57OWPnTDoW5nfFwgOwor57u1Pm1pw6FufFwgOwor5aaoPmbDoW5nfFwgOwor54+KPnNoxIFufFwgOwor5Zq3PnLHjm5nfFwgOwor55uyPm3DoW5nfFwgOwor6L6oPmJpw6BufFwgOwor5rOzPnnHkm5nfFwgOwor5a6FPnpow6FpfFwgOwor6IaAPmLHjm5nfFwgOwor6aKIPmfEm25nfFwgOwor6Le1Pmppw6BufFwgOwor6L2/Pmppw6BvfFwgOwor5aiHPmppxIFvfFwgOwor5r2HPnhpxIFvfFwgOwor6aKCPnLDs25nfFwgOwor5p2tPmjDoW5nfFwgOwor556sPnNow7lufFwgOwor5LmWPmd1xIFpfFwgOwor54KSPmNox45vfFwgOwor6aW8PmLHkG5nfFwgOwor6ZKJPmTEq25nfFwgOwor6LWgPnrDqG5nfFwgOwor5ZOEPmjFjW5nfFwgOwor6ZODPmzDrW5nfFwgOwor6bmwPnnEq25nfFwgOwor5q2JPnFpw6BufFwgOwor55uvPmTEq25nfFwgOwor5YW9PnNow7J1fFwgOwor572pPnpow6BvfFwgOwor5bWpPnPFjW5nfFwgOwor6Zm1PmzDrW5nfFwgOwor6JyCPmbEk25nfFwgOwor5buJPmxpw6FufFwgOwor6aqEPmppxIFvfFwgOwor6L6wPmNow6lufFwgOwor5Z2RPmvEk25nfFwgOwor55ygPm1pw6FufFwgOwor5a2dPnhpw6BvfFwgOwor6Jm5PmjDs25nfFwgOwor5YuJPm1px45ufFwgOwor5oWOPnNow6hufFwgOwor5papPnpox45ufFwgOwor6YOKPmppxIFvfFwgOwor6byOPmTHkG5nfFwgOwor5Ya7PmTDsm5nfFwgOwor5qGQPnTDs25nfFwgOwor6ImHPnTHkG5nfFwgOwor6LCmPnFpxIFufFwgOwor5bKtPmzDrW5nfFwgOwor5qG2PnTHkm5nfFwgOwor5ZeTPnPHjm5nfFwgOwor5biYPmxpw6FufFwgOwor5LuTPmPEgW5nfFwgOwor5ouQPmd1x45pfFwgOwor57uRPmLHjm5nfFwgOwor6I2QPmppw6BufFwgOwor5buKPmzDoW5nfFwgOwor6K+KPnpoxJtufFwgOwor5qOaPnDDqW5nfFwgOwor5o6APnhpxIFufFwgOwor562SPnTHkm5nfFwgOwor56eSPm1px45vfFwgOwor5rK+PnpoxIFufFwgOwor5bqePnDDoW5nfFwgOwor5Yi4PnF1w6BufFwgOwor6LafPnTDoG5nfFwgOwor54GMPmd1w6BufFwgOwor5aaEPnfDoG5nfFwgOwor5a6ZPnpow7J1fFwgOwor5L6oPnFpw6FvfFwgOwor5ZW4Pnhpw6BvfFwgOwor572QPmd1w6BufFwgOwor6LaBPmNow6hufFwgOwor5am0PnnEq25nfFwgOwor6LqsPmfFjW5nfFwgOwor5Y+uPmTEq25nfFwgOwor5pm0PnHDrW5nfFwgOwor5reuPmh1w6FpfFwgOwor5pe6PnfDoG5nfFwgOwor56qcPmN1w6BufFwgOwor5a+oPnpow6BpfFwgOwor5bC/Pm5pw6BvfFwgOwor5pitPnpoxIFvfFwgOwor5ZuKPm7DoW5nfFwgOwor6JOsPnDDqW5nfFwgOwor6LSxPmppw6BufFwgOwor5ZiyPmNow6FvfFwgOwor5YKNPmLDoG5nfFwgOwor57qyPmfEgW5nfFwgOwor6ICVPmfEk25nfFwgOwor6IixPmPEgW5nfFwgOwor56CwPnDEk25nfFwgOwor5aGYPnTDoW5nfFwgOwor57qkPnhpxIFufFwgOwor6ZO+Pmxpw6BufFwgOwor5ouxPmfHkm5nfFwgOwor6ZOtPm3DrW5nfFwgOwor5rezPmNow7pufFwgOwor5qacPmLHjm5nfFwgOwor5riKPnl1xIFufFwgOwor576hPnhpw6BufFwgOwor5Y2/PnHEq25nfFwgOwor5ZanPnh1xIFufFwgOwor5p6JPnfHjm5nfFwgOwor6KGsPmNow6hufFwgOwor5YezPmTDqG5nfFwgOwor57yFPm1px45ufFwgOwor5bymPnhpw6FufFwgOwor5YCmPmp1w6BufFwgOwor6YWsPmNow7N1fFwgOwor5ZKSPnpow7J1fFwgOwor5bSpPmLEk25nfFwgOwor6aG3PnHHkG5nfFwgOwor5L6mPnpoxJNufFwgOwor6ZmVPnNox45ufFwgOwor6IC4PnPHkm5nfFwgOwor56qEPnpox45pfFwgOwor55eSPnnHjm5nfFwgOwor5rKnPmPEgW5nfFwgOwor6LSePnpoxJNufFwgOwor6KCiPmNox5RufFwgOwor6YCNPnhpxIFvfFwgOwor5YOaPmxpw6FvfFwgOwor6ICNPnNodceOfFwgOwor5p6VPnpoxJtufFwgOwor5o2hPmppx45ufFwgOwor5pymPm3DqW5nfFwgOwor5623Pmt1w6BpfFwgOwor57y4PmfEgW5nfFwgOwor5byTPmfFjW5nfFwgOwor54iqPnpodceOfFwgOwor6IqSPm3DoW5nfFwgOwor57y0Pmppx45vfFwgOwor5ZOoPnNow6BvfFwgOwor6aKWPnnHkG5nfFwgOwor5reAPmRpw6BufFwgOwor6aqkPnpow7J1fFwgOwor6Iu5PnDDrW5nfFwgOwor5pmSPnNow6BpfFwgOwor5ouiPmzHkm5nfFwgOwor6IOnPmzDs25nfFwgOwor6IO2PmppxIFvfFwgOwor5LmSPnDEq25nfFwgOwor6K69PmbEm25nfFwgOwor5oizPmNodcWNfFwgOwor5oujPmppx45ufFwgOwor6IC/PmfEm25nfFwgOwor5bu/Pm5pw6BufFwgOwor5qO6Pmd1xIFufFwgOwor5Z2gPnpodcOsfFwgOwor6K+1PnPDsm5nfFwgOwor5YaIPmfEgW5nfFwgOwor6I65PnnDrW5nfFwgOwor6KGUPnhpw6FufFwgOwor55S4PmRpw6BufFwgOwor6LSsPmJpx45ufFwgOwor5oSjPmzDqG5nfFwgOwor5pCFPmppx45vfFwgOwor54KVPmvDoG5nfFwgOwor6IWlPnjEq25nfFwgOwor6JekPnTDqW5nfFwgOwor5q28PmppxIFufFwgOwor6I69Pm3Hjm5nfFwgOwor54OrPnTDoG5nfFwgOwor6ZKePmNoxIFvfFwgOwor5Z2KPmbEgW5nfFwgOwor566rPnhpxIFvfFwgOwor5ZehPnfEk25nfFwgOwor5rqFPmppw6BufFwgOwor5qCLPmTDsm5nfFwgOwor56aAPmLHkG5nfFwgOwor54OBPnNodcOyfFwgOwor57KYPm5pw6FufFwgOwor5pyUPnNodcOyfFwgOwor5ZK4Pnhpw6FufFwgOwor57q6PmbHjm5nfFwgOwor6ZSkPmNodcOtfFwgOwor5ai0Pnhpw6FufFwgOwor6L6rPmJpw6BufFwgOwor54qsPnF1x45ufFwgOwor5YalPm3DrW5nfFwgOwor55uPPnpox45ufFwgOwor54SVPmh1w6BufFwgOwor5byYPmjDs25nfFwgOwor5pOFPnNow6BufFwgOwor5rCTPm3DoW5nfFwgOwor5oCmPnDEk25nfFwgOwor6Km5PnpoxIFufFwgOwor5omBPmJpx45ufFwgOwor5oW3PmvEgW5nfFwgOwor56+3PnDDqW5nfFwgOwor6I2GPmrEq25nfFwgOwor57u4PmNow7N1fFwgOwor5a+lPmxpw6FvfFwgOwor5rWHPmppxIFvfFwgOwor5Z6rPmRpw6BufFwgOwor5LmTPnDEgW5nfFwgOwor6IabPnTDoW5nfFwgOwor55CiPnpodcOzfFwgOwor6ZiuPnJ1x45ufFwgOwor5L+PPnFpw6BvfFwgOwor57u9Pnpow6BufFwgOwor5qWePmzDqW5nfFwgOwor5ouZPnpodcOzfFwgOwor5aWgPmRpw6BufFwgOwor6IKYPnpox5J1fFwgOwor6IaoPnDDqW5nfFwgOwor5aOkPnLHjm5nfFwgOwor5riXPnNow6hufFwgOwor6L2pPnh1xIFufFwgOwor6IuRPnl1w6BufFwgOwor6JGxPmPFjW5nfFwgOwor5bepPmfHkm5nfFwgOwor57KlPnpoxY11fFwgOwor5paLPnpoxIFpfFwgOwor5pafPnpoxJNufFwgOwor5qKiPnNoxIFvfFwgOwor6ZOFPnFpxIFufFwgOwor57uSPnLDs25nfFwgOwor6ZS7PmR1w6BufFwgOwor6LC0PnFpx45ufFwgOwor5rKFPnl1w6FufFwgOwor5a61PnhpxIFvfFwgOwor54+RPmzDs25nfFwgOwor5ZKaPmTFjW5nfFwgOwor5LqoPmjEk25nfFwgOwor5reMPnTHjm5nfFwgOwor5ombPmvDoW5nfFwgOwor5p2JPnNoxIFufFwgOwor5b2kPnTDs25nfFwgOwor5rCnPnnHjm5nfFwgOwor54uhPmppx45vfFwgOwor5am3PnTDrW5nfFwgOwor5ri6Pm1px45vfFwgOwor5bWMPnFpw6BufFwgOwor6Z6YPnFpw6BvfFwgOwor5ZCtPmvEk25nfFwgOwor57uwPmNodcOyfFwgOwor6J2HPnnDrW5nfFwgOwor57uePmppx45vfFwgOwor6L20Pnpow7N1fFwgOwor6YK1PnNow6BvfFwgOwor5oaOPnrEk25nfFwgOwor56qNPnFpw6BvfFwgOwor5Z2qPnDDrW5nfFwgOwor5L2jPnnDsm5nfFwgOwor5Y21Pmx1x45ufFwgOwor55CFPmzDoW5nfFwgOwor5pi8Pnpow7J1fFwgOwor5YWiPmrEq25nfFwgOwor54WOPmppxIFufFwgOwor556FPmNox5J1fFwgOwor54aUPnLDs25nfFwgOwor57uFPnNoxJNufFwgOwor6LmmPmLDqG5nfFwgOwor6IGLPmzDs25nfFwgOwor5Z6EPmzHkm5nfFwgOwor54W9PnNoxIFufFwgOwor5ZG7PnNoxJNufFwgOwor57+YPnFpw6FvfFwgOwor5p2PPnjDrG5nfFwgOwor6JmUPnFpw6FufFwgOwor5ounPm7DrW5nfFwgOwor54OYPmjFjW5nfFwgOwor5YigPnNoxIFufFwgOwor6ZyEPnhpxIFvfFwgOwor5ouOPmzEq25nfFwgOwor55y3Pmp1w6BufFwgOwor6ZiQPmNox45ufFwgOwor6K68PnPDsm5nfFwgOwor5bStPnpox45ufFwgOwor5Ly2PmzDrW5nfFwgOwor5beiPmNow6FvfFwgOwor5ZW3PmzEgW5nfFwgOwor5L+tPmppx45ufFwgOwor5rq2PnLDs25nfFwgOwor5rmbPnpow6BufFwgOwor57+pPnBpxIFufFwgOwor5ZqjPnhpxIFvfFwgOwor55CbPmNoxJNufFwgOwor5rWKPnpodcOzfFwgOwor5p2gPmfDoG5nfFwgOwor556EPm1pw6FvfFwgOwor5pKpPmxpw6FvfFwgOwor54y/Pnl1w6FufFwgOwor54G8PnpodcOzfFwgOwor5qSSPmppxIFvfFwgOwor5buWPmxpw6BvfFwgOwor55StPmLDqW5nfFwgOwor6L+iPnRpw6FvfFwgOwor5pSYPnLHjm5nfFwgOwor57yOPmR1w6BufFwgOwor55+rPmppx45vfFwgOwor5b6KPmh1w6FpfFwgOwor55GbPnnEq25nfFwgOwor54ypPnjEq25nfFwgOwor5ZKZPmzDs25nfFwgOwor5ZeUPmNoxJNufFwgOwor6LiMPmNow7N1fFwgOwor57u3PmLEk25nfFwgOwor57yAPnpodcOsfFwgOwor5am2PnNoxJtufFwgOwor6LmsPmTDqG5nfFwgOwor5Yu6PnNow6FvfFwgOwor5567PnpoxIFufFwgOwor6LiKPnnHkm5nfFwgOwor55ypPnh1w6BufFwgOwor6L+4PmLDqG5nfFwgOwor5LiZPmLHkG5nfFwgOwor6aW6Pmppx45vfFwgOwor6ZOyPmNox45ufFwgOwor5pWbPmxpw6BufFwgOwor5o2FPnTHkm5nfFwgOwor5ruVPnTDqW5nfFwgOwor55y6PnRpw6BvfFwgOwor5qOVPnrFjW5nfFwgOwor57uiPmp1w6BufFwgOwor5aifPmp1xIFufFwgOwor6JCMPm3DqW5nfFwgOwor5ZO9PmfEm25nfFwgOwor54O5PnDEk25nfFwgOwor54KKPmNodcSrfFwgOwor5Ym/Pmppx45vfFwgOwor54KrPnh1w6BufFwgOwor6ZSlPnpodcSrfFwgOwor5YiBPmRpxIFvfFwgOwor5LqiPmvDoG5nfFwgOwor5YaVPm1px45ufFwgOwor54CbPnnDrW5nfFwgOwor5bqaPmfEk25nfFwgOwor5bOtPnFpw6BvfFwgOwor56OFPmLDoG5nfFwgOwor6ZuNPnnFjW5nfFwgOwor5ZKPPnnHkm5nfFwgOwor5YCpPnFpw6BufFwgOwor6JKcPnN1w6BufFwgOwor54KzPmLHkG5nfFwgOwor5oOYPnfHjm5nfFwgOwor6LWDPnrEgW5nfFwgOwor5qeQPmh1w6FpfFwgOwor5amKPmJpx45vfFwgOwor6L6XPnpox45ufFwgOwor56eJPmLHkG5nfFwgOwor5L6lPmppx45vfFwgOwor6aaFPnhpw6BufFwgOwor6KKFPm5px45vfFwgOwor5b23PnDDoW5nfFwgOwor6Ie7PnpoxJNufFwgOwor5qixPnnEq25nfFwgOwor5b+PPmNow6BufFwgOwor56qWPmppw6BvfFwgOwor56K+Pm5px45ufFwgOwor6aaLPmNow6FufFwgOwor5ry+PnnDoG5nfFwgOwor56enPnnEgW5nfFwgOwor6K6qPnNow6BufFwgOwor6YaHPmNow7pufFwgOwor5oaUPnFpw6FvfFwgOwor56GdPnhpxIFvfFwgOwor6LmtPmPDqG5nfFwgOwor6b6aPmfFjW5nfFwgOwor54uePm7DrW5nfFwgOwor57ytPmxpw6FvfFwgOwor5pCAPmNoxIFufFwgOwor56WvPnpoxJNufFwgOwor6IicPnNow7lufFwgOwor6YKiPnjDrW5nfFwgOwor5qebPmppw6BufFwgOwor55W0PmNow7N1fFwgOwor6IiUPnRpx45ufFwgOwor5oO6PnjEq25nfFwgOwor556fPnBpx45vfFwgOwor6J2JPmNow6FufFwgOwor5q+hPnpoxIFufFwgOwor5oqoPnDEk25nfFwgOwor5oO0PnpodcOsfFwgOwor5pOOPnHDrW5nfFwgOwor6JWJPmppxIFvfFwgOwor5rOTPmjDs25nfFwgOwor5o2OPnNoxIFvfFwgOwor5r6OPnDDqW5nfFwgOwor5o22PmNodcOtfFwgOwor5ruHPmRpxIFufFwgOwor6K+PPnpow6BvfFwgOwor6IK+PnNow6hufFwgOwor6bizPnl1xIFufFwgOwor5oiOPnLDs25nfFwgOwor6ZStPmTDrG5nfFwgOwor5pSlPnp1w6BufFwgOwor5ouIPm5pw6FufFwgOwor5p+sPmppx45ufFwgOwor55eqPmh1w6BufFwgOwor5oGZPnnDoG5nfFwgOwor6LKCPmRpxIFvfFwgOwor6Iy4PnLDs25nfFwgOwor5Z6jPnl1w6FufFwgOwor5qOxPmzDqW5nfFwgOwor6IGGPmzDrW5nfFwgOwor55mrPmRpxIFufFwgOwor5qKXPmfEm25nfFwgOwor5oOGPmNow7N1fFwgOwor6IKHPnpow6BvfFwgOwor6I+xPmzDrW5nfFwgOwor56SBPmppxIFvfFwgOwor5biaPnpox5J1fFwgOwor5pK1Pm5px45ufFwgOwor5q6DPnnEgW5nfFwgOwor5oGsPnRpw6FufFwgOwor5rafPmxpw6FufFwgOwor6ZWRPmLDoG5nfFwgOwor6bivPnnEgW5nfFwgOwor5auWPnBpw6FvfFwgOwor6Ii3Pnhpw6FufFwgOwor5qGTPmh1w6FufFwgOwor5qSOPnpodcSrfFwgOwor6ZWjPmxpw6FvfFwgOwor6YWMPnpodcOzfFwgOwor6I2nPnnDrW5nfFwgOwor5765PmfEk25nfFwgOwor6Ji4Pnpow6BufFwgOwor5oOmPmRpw6BufFwgOwor6LCkPmLDoG5nfFwgOwor562bPnNoxIFpfFwgOwor5pKCPmxpw6BvfFwgOwor6Ia6PnnEq25nfFwgOwor5oasPmrHkG5nfFwgOwor6ZKzPnFpw6FufFwgOwor56+hPmN1w6BufFwgOwor55eKPnF1w6FufFwgOwor6ZixPmrHkG5nfFwgOwor5oKaPnPHkm5nfFwgOwor6Le3PnFpxIFvfFwgOwor5aeXPnNoxIFufFwgOwor6ZKXPmNoxIFpfFwgOwor5qOgPnTDoW5nfFwgOwor5ZCuPnNox5RufFwgOwor5riyPnh1w6BufFwgOwor5Yy+PmJpx45ufFwgOwor5ZuUPm7EgW5nfFwgOwor6JeQPm1px45vfFwgOwor5beFPmRpxIFufFwgOwor5YeLPmRpxIFvfFwgOwor6LekPmppxIFvfFwgOwor5oe1Pm3Em25nfFwgOwor6bK4PmrEq25nfFwgOwor56y6PmppxIFufFwgOwor5rGAPnTEq25nfFwgOwor6IazPnNow6BufFwgOwor57K9PnrDsm5nfFwgOwor6YW1Pnhpw6BvfFwgOwor6Jy3PnF1w6FufFwgOwor56igPmNow7N1fFwgOwor6LeaPnNoxIFufFwgOwor5rK8Pnpox45vfFwgOwor56KxPmppx45ufFwgOwor6ZWwPmxpw6FufFwgOwor5oK7PnjDrG5nfFwgOwor6IWGPnRpx45ufFwgOwor5raOPnhpw6FufFwgOwor55OiPnBpw6FvfFwgOwor56q/PmzDs25nfFwgOwor6I2DPnF1w6FufFwgOwor5o6CPmRpxIFufFwgOwor6JCmPnnDrW5nfFwgOwor5Y+8PmRpxIFvfFwgOwor55SsPnnHkm5nfFwgOwor6I66PnnEq25nfFwgOwor5qi1PnFpw6FvfFwgOwor6LWTPmfEk25nfFwgOwor5p6tPnhpxIFvfFwgOwor5YOuPnTDs25nfFwgOwor6LWYPnpodcOsfFwgOwor5qS/PmNoxatufFwgOwor6ZKKPnpoxIFvfFwgOwor5ranPmppw6BufFwgOwor57uaPnh1w6BufFwgOwor6IW6Pnhpw6BufFwgOwor5rCiPnHEq25nfFwgOwor5rGVPnNow6BufFwgOwor6J2ZPmJpxIFufFwgOwor5ZOuPnhpxIFvfFwgOwor5bOSPnTDs25nfFwgOwor6ISTPm7Ds25nfFwgOwor5bSGPmvFjW5nfFwgOwor6LCPPmppw6BufFwgOwor5L2vPnnDoW5nfFwgOwor5a6mPmh1w6BufFwgOwor55KHPnh1w6FufFwgOwor5r26PmNow6FufFwgOwor5L+RPnnHkm5nfFwgOwor5b+xPmNow6lufFwgOwor6IW8Pm1px45ufFwgOwor6JCkPnnDrW5nfFwgOwor55OuPnfDqG5nfFwgOwor5qCIPnpow6BufFwgOwor6Jm7Pm3DqW5nfFwgOwor6JqMPmLDoG5nfFwgOwor5o27Pm5px45ufFwgOwor5L28Pmppx45vfFwgOwor6LCGPnpoxatufFwgOwor5ZOdPm7Ds25nfFwgOwor6Z+2PnNow6FvfFwgOwor6JqjPmfFjW5nfFwgOwor5pqEPnh1xIFufFwgOwor6J6DPnDDoW5nfFwgOwor5a+wPmh1w6FufFwgOwor5pyVPnpow6hufFwgOwor5pCqPnTDoW5nfFwgOwor5bOmPmx1w6FufFwgOwor6aqBPnhpxIFvfFwgOwor6IyXPm3DrW5nfFwgOwor6J++PmNow6FufFwgOwor6ZWvPnpodcOzfFwgOwor6ayfPmh1w6FufFwgOwor572CPnnEq25nfFwgOwor5rOePm7DrG5nfFwgOwor6ZmHPmzHkm5nfFwgOwor6ZyGPnTDrW5nfFwgOwor54SYPmNow7N1fFwgOwor57yIPm1px45vfFwgOwor5pKsPnFpw6BvfFwgOwor5ZWEPnpodcOzfFwgOwor6Lm/PmN1xIFufFwgOwor6ZO/PmvEk25nfFwgOwor57ylPnBpx45vfFwgOwor5L6sPm7Ds25nfFwgOwor5YaXPnLHkm5nfFwgOwor5qaVPnLDs25nfFwgOwor6IKqPmbDoW5nfFwgOwor55SEPnpoxJNufFwgOwor57OgPmvEgW5nfFwgOwor5ZWcPmNodcOyfFwgOwor5qKGPmLEgW5nfFwgOwor57+OPmzDrW5nfFwgOwor6LidPmh1w6FpfFwgOwor6KOGPmTEgW5nfFwgOwor5463PmRpw6BufFwgOwor54eOPmxpw6FvfFwgOwor6J+SPm3Hjm5nfFwgOwor6L6VPnl1w6FufFwgOwor6bmDPmp1xIFufFwgOwor6ZObPmTEgW5nfFwgOwor6L+zPmrDrG5nfFwgOwor6IyOPmrEq25nfFwgOwor5Z+CPmfEm25nfFwgOwor5ZitPnDDqW5nfFwgOwor5oG4PnTDsm5nfFwgOwor556zPnTDs25nfFwgOwor6bmqPmppxIFvfFwgOwor6Ia7PnNoxIFufFwgOwor5oCCPnPHkm5nfFwgOwor556RPm3DrW5nfFwgOwor6LWIPnpow6hufFwgOwor6K+gPnF1w6FufFwgOwor5oG/PnnHkm5nfFwgOwor54O9PmbEk25nfFwgOwor6JKvPmt1x45pfFwgOwor57yoPnnEq25nfFwgOwor6IirPmbHjm5nfFwgOwor5o64PmNow6FufFwgOwor5ZikPnnEq25nfFwgOwor6JyVPnNodcOsfFwgOwor6JufPmppxIFvfFwgOwor5qGiPnpoxJNufFwgOwor5raTPmp1xIFufFwgOwor5ZSwPnNodcSBfFwgOwor5L2DPmRpw6BufFwgOwor5ZuxPmPFjW5nfFwgOwor6bOdPnNow6BufFwgOwor6buPPm5pw6FufFwgOwor5L2fPnTDs25nfFwgOwor57yEPmppxIFufFwgOwor6Zq9Pmp1w6BufFwgOwor5rypPnh1w6FufFwgOwor54upPnNow7J1fFwgOwor6IycPnFpw6BufFwgOwor6buUPnFpw6FufFwgOwor5qeMPmNodcOtfFwgOwor5parPnpodcOzfFwgOwor54KAPnnDoW5nfFwgOwor6L6NPmNodcOyfFwgOwor5ZKbPm7DrW5nfFwgOwor5oCPPnnDoG5nfFwgOwor6IOEPnpow7J1fFwgOwor5Ym9PnBpxIFvfFwgOwor6JyTPnTDrW5nfFwgOwor55qOPmppx45vfFwgOwor55CPPmxpw6FufFwgOwor5Zi5Pmxpw6FvfFwgOwor55eJPmrDrG5nfFwgOwor5pChPnPHjm5nfFwgOwor5a2qPmx1w6FufFwgOwor5oybPmx1w6FufFwgOwor5peMPmrEq25nfFwgOwor576aPmzDrW5nfFwgOwor5rOxPnnEgW5nfFwgOwor5rO+PmrDrG5nfFwgOwor6Jy7PnHEq25nfFwgOwor5bWYPnLDs25nfFwgOwor5YCMPmd1xIFufFwgOwor6J6CPmzDoW5nfFwgOwor6IuTPmzDrW5nfFwgOwor6JSrPm5pxIFufFwgOwor5rG0PmJpw6BufFwgOwor5pGSPmLDrG5nfFwgOwor5oGrPmTDsm5nfFwgOwor57uMPnpodcOzfFwgOwor6LiuPmRpx45ufFwgOwor5aqbPnl1w6FufFwgOwor6LG6PmNow6FpfFwgOwor5660PnpoxJNufFwgOwor5L+4PmbDqG5nfFwgOwor572UPnfHjm5nfFwgOwor5rmNPnR1xIFufFwgOwor5LuDPmTEq25nfFwgOwor6bmmPnnEq25nfFwgOwor6ISNPmt1w6BpfFwgOwor6IOrPmrDrG5nfFwgOwor56G3Pmppx45ufFwgOwor57uJPnpow7J1fFwgOwor5rajPmh1w6BufFwgOwor6ZezPmjDs25nfFwgOwor6IeDPnnFjW5nfFwgOwor5a+uPmxpw6FvfFwgOwor57yuPnNow6BufFwgOwor6aKnPnF1w6FufFwgOwor56KJPmRpxIFvfFwgOwor5rO1PmLDqG5nfFwgOwor6LWhPnNow6BufFwgOwor5a6VPmTDoG5nfFwgOwor5rKUPm1px45ufFwgOwor5aCRPnFpw6BufFwgOwor572hPmfEgW5nfFwgOwor6IqNPnNow6FvfFwgOwor6Z2TPmrDrG5nfFwgOwor6ZWMPmp1xIFufFwgOwor5r28PnTDs25nfFwgOwor5Z64Pmh1w6BufFwgOwor6LCEPmNox45ufFwgOwor5o68Pmd1w6BufFwgOwor5YSGPmrHkG5nfFwgOwor57qCPnp1x45ufFwgOwor546OPmTEq25nfFwgOwor5qqsPm3DqW5nfFwgOwor55ulPmd1w6BufFwgOwor5ZmUPmTEk25nfFwgOwor55a5PnpoxJtufFwgOwor5reZPmPDs25nfFwgOwor5qmHPnFpxIFvfFwgOwor5p+gPm7DrW5nfFwgOwor6ImEPnNoxIFvfFwgOwor6ZiGPmzHjm5nfFwgOwor55ahPnnDoW5nfFwgOwor6aWvPmppw6BufFwgOwor6ayDPnrFjW5nfFwgOwor5q6TPmxpw6BufFwgOwor6I+BPmrEq25nfFwgOwor5r+vPnpodcOzfFwgOwor6Zq8Pnpox5RufFwgOwor57+mPmppx45ufFwgOwor5reePnPFjW5nfFwgOwor5qGnPmt1w6BpfFwgOwor5r24PnNoxIFufFwgOwor6b6KPmNodcOyfFwgOwor5oSGPnFpxIFufFwgOwor5aejPmppxIFvfFwgOwor6IaYPmJpxIFvfFwgOwor5Y2ePmJpw6BufFwgOwor6bi+Pmx1w6FufFwgOwor6ZWXPnTEgW5nfFwgOwor5aipPm1px45ufFwgOwor562xPnhpx45vfFwgOwor6KOxPmJpx45vfFwgOwor5rqfPm3DrW5nfFwgOwor6ZmyPmNodcOtfFwgOwor56qVPnRpx45vfFwgOwor6ZSPPmppx45ufFwgOwor55S6PnTHkG5nfFwgOwor57qjPnpow7J1fFwgOwor6LC2PmNow6hufFwgOwor6ZWzPmJpxIFvfFwgOwor5b6JPnnDoW5nfFwgOwor6LCqPmppw6BufFwgOwor5L27PnRpxIFvfFwgOwor6aOZPmJpxIFvfFwgOwor5o6uPnFpw6FufFwgOwor5LyJPmvDoG5nfFwgOwor6ZSoPnhpxIFufFwgOwor56OsPnHDrG5nfFwgOwor55GtPnTDoW5nfFwgOwor5a2xPmNow6FufFwgOwor6aqePnFpxIFufFwgOwor6ZWrPmTDqG5nfFwgOwor6IenPnrEgW5nfFwgOwor5YKlPnTHjm5nfFwgOwor5oW1PnnFjW5nfFwgOwor5r+CPmxpw6FufFwgOwor5Zu5PmzDrW5nfFwgOwor5ay0PnnDrW5nfFwgOwor5L6pPmt1w6BpfFwgOwor5p6wPnDDrW5nfFwgOwor5ruCPnDEgW5nfFwgOwor6IqrPnl1w6FufFwgOwor6ZOkPnTHkG5nfFwgOwor5qOCPmzDrW5nfFwgOwor5LynPmPEgW5nfFwgOwor6LCXPmNow6FufFwgOwor6J6zPnTDoW5nfFwgOwor6ZS3PmNoxIFpfFwgOwor57urPmzDrW5nfFwgOwor6IyBPnpodcOzfFwgOwor6JyDPnNow6hufFwgOwor6ZOEPnNodcOyfFwgOwor57ycPnpoxJNufFwgOwor6YCEPnDDoW5nfFwgOwor6L62PmNodcOyfFwgOwor6IiiPnNoxIFufFwgOwor5re8Pm1px45vfFwgOwor572EPnHDrG5nfFwgOwor56KcPmNoxJtufFwgOwor55SPPnDDqG5nfFwgOwor5rOgPmzDrW5nfFwgOwor5YOtPmppw6BufFwgOwor56KYPmRpx45ufFwgOwor5q6NPnBpx45vfFwgOwor5pOkPnjHkG5nfFwgOwor6I2ePnFpw6FvfFwgOwor6ZihPnFpxIFufFwgOwor5rGePmfHkm5nfFwgOwor5am1PmNow6FufFwgOwor5ZijPmLEk25nfFwgOwor5aiJPnDEq25nfFwgOwor6K6nPmjDs25nfFwgOwor56CnPnpoxJNufFwgOwor6aqIPnBpw6FufFwgOwor6YKIPm1px45vfFwgOwor6IKbPmfEgW5nfFwgOwor542gPmxpw6FvfFwgOwor5ZOCPnNoxJtufFwgOwor5qaUPmzDoW5nfFwgOwor57u2PnNow7J1fFwgOwor5ZmMPmPEk25nfFwgOwor6KqKPnTDqW5nfFwgOwor5a64PmNow6lufFwgOwor5L2ePm7DrG5nfFwgOwor6YKVPnnFjW5nfFwgOwor5L+mPmNow7N1fFwgOwor6biiPnl1xIFufFwgOwor5rmOPm1px45ufFwgOwor5Za1Pm1pxIFvfFwgOwor5oydPnpodcSBfFwgOwor6aOaPmJpxIFvfFwgOwor55CuPmPDs25nfFwgOwor6Z6FPnnEgW5nfFwgOwor6ZWbPnnFjW5nfFwgOwor6ZK/PmRpw6BufFwgOwor5oq7PnNow6hufFwgOwor5rumPmx1w6FufFwgOwor5qW5PnnDrW5nfFwgOwor5ra/PnpodcOzfFwgOwor5rCwPnHEq25nfFwgOwor6ayIPnF1w6FufFwgOwor54+pPmjDqW5nfFwgOwor5ZGkPmzDrW5nfFwgOwor5aSvPmjEgW5nfFwgOwor6Le5PnhpxIFufFwgOwor552RPmppx45ufFwgOwor5pmBPmNow6FvfFwgOwor5ayXPnNow6BufFwgOwor5b+dPnRpx45ufFwgOwor5aKJPnnFjW5nfFwgOwor5YeHPnPDsm5nfFwgOwor6bKgPmfEm25nfFwgOwor6YauPmppw6BvfFwgOwor56mwPnLDoW5nfFwgOwor5qWdPmxpw6BufFwgOwor5qC+Pmx1w6FufFwgOwor5pq5PnhpxIFufFwgOwor5rKjPmbEk25nfFwgOwor6IyPPmzDs25nfFwgOwor6IqhPnFpw6BufFwgOwor6bOPPmd1xIFufFwgOwor5q6EPnRpx45ufFwgOwor5qGBPmjDqW5nfFwgOwor57ySPnpodcOsfFwgOwor6aqgPnBpw6BvfFwgOwor6I+FPmppxIFufFwgOwor6IyUPnnDrW5nfFwgOwor6J28PmLHjm5nfFwgOwor54OKPnnDoW5nfFwgOwor57u7PnF1x45ufFwgOwor5YqtPnNow6BvfFwgOwor6Ju5PnnHkm5nfFwgOwor6LGiPmh1w6BufFwgOwor5L6XPnTDs25nfFwgOwor6YWpPm3DrW5nfFwgOwor5pK6PmN1xIFufFwgOwor55mjPnhpx45ufFwgOwor55yHPm1px45vfFwgOwor5aavPnpow7N1fFwgOwor5aWYPnrDoG5nfFwgOwor6JCxPnh1xIFufFwgOwor6ZSwPm3Em25nfFwgOwor6ZOJPnh1w6BufFwgOwor6LmHPmppx45ufFwgOwor5oKtPnFpxIFufFwgOwor5byBPmJpw6BufFwgOwor6YWuPnTDs25nfFwgOwor6ZKOPnFpxIFufFwgOwor6bipPnpow6hufFwgOwor6IWaPmTDrG5nfFwgOwor6IO0PmTDsm5nfFwgOwor6aqiPmPFjW5nfFwgOwor5YuQPm3Em25nfFwgOwor6KiHPmjFjW5nfFwgOwor5L6qPmNow6FpfFwgOwor54ODPmrHkG5nfFwgOwor6YWKPmTHkG5nfFwgOwor6ZOoPnF1w6FufFwgOwor56CtPmJpxIFufFwgOwor6aqTPnpodcSrfFwgOwor6JeTPnhpx45ufFwgOwor6YquPmx1w6FufFwgOwor6byLPnl1w6FufFwgOwor57yxPnFpx45ufFwgOwor5rOrPnh1w6BufFwgOwor5Ze1PnTFjW5nfFwgOwor5aWCPmh1w6BufFwgOwor5L2lPnFpxIFufFwgOwor6IWxPmppw6BufFwgOwor5bSnPnPFjW5nfFwgOwor5ZycPnl1w6FufFwgOwor5aOFPnnFjW5nfFwgOwor5Ya8Pnhpx45ufFwgOwor57KzPmfEk25nfFwgOwor6YO0PmNoxJNufFwgOwor6b6JPmzHkm5nfFwgOwor56yKPnpow6BvfFwgOwor6ZSSPmzDoW5nfFwgOwor5pqdPm3DrW5nfFwgOwor5r62PmNow6FufFwgOwor5pCgPnNodcOyfFwgOwor6IytPmppxIFvfFwgOwor6IuVPnRpw6FvfFwgOwor5aigPnNoxJNufFwgOwor56C3PnNoxJNufFwgOwor6KelPmfFjW5nfFwgOwor5oiGPmfDoG5nfFwgOwor54WKPmppx45ufFwgOwor5p2TPnNow6FvfFwgOwor6LCMPmNow6lufFwgOwor55OkPnLDoW5nfFwgOwor54ioPmN1w6BufFwgOwor57y1Pmd1w6BufFwgOwor5riWPnNoxJtufFwgOwor5ZudPmppx45ufFwgOwor56ykPnRpw6FvfFwgOwor55erPnhpw6FufFwgOwor6bmRPmNow7pufFwgOwor5qO5PnpodcWNfFwgOwor6IuLPnhpw6BufFwgOwor5Z6FPmzHkm5nfFwgOwor6bmzPmd1w6BufFwgOwor6ZKkPnFpw6FufFwgOwor5qivPmPDs25nfFwgOwor6aqfPnNow6BufFwgOwor5oyiPmppx45vfFwgOwor5oqfPnR1w6FufFwgOwor54e5Pnhpx45ufFwgOwor5rmrPmppx45vfFwgOwor5ZWBPnpoxY11fFwgOwor5aGsPnl1w6FufFwgOwor6bKHPm5pw6FufFwgOwor566dPnFpw6FufFwgOwor55O0PmzDrW5nfFwgOwor5rKGPmjDoW5nfFwgOwor5oSAPnFpx45vfFwgOwor5pOiPnpodcOzfFwgOwor6ZOjPnhpx45ufFwgOwor5LufPnFpxIFufFwgOwor54qNPmppxIFufFwgOwor5aiIPmx1w6FufFwgOwor5aaBPnNodcOyfFwgOwor5768PmNow6BufFwgOwor5YClPmvFjW5nfFwgOwor57G8PnhpxIFufFwgOwor6JyiPm3Em25nfFwgOwor6KOiPmxpw6FufFwgOwor56umPnPHkm5nfFwgOwor57uhPnhpxIFvfFwgOwor5rS5Pmh1w6FufFwgOwor5bubPmNow6FufFwgOwor5pKEPnnEq25nfFwgOwor5bClPmxpw6BvfFwgOwor6LCvPnFpw6FvfFwgOwor6ZOwPmppx45vfFwgOwor6auLPmt1xIFufFwgOwor6bKmPnRpw6FvfFwgOwor6IKxPmfFjW5nfFwgOwor5badPmTDqG5nfFwgOwor6IqKPnFpxIFufFwgOwor5YGsPnrHkm5nfFwgOwor5YCsPnpodcWNfFwgOwor56G8PnDDqW5nfFwgOwor6Z2bPmRpw6BufFwgOwor6ZywPnhpw6BufFwgOwor57CfPmRpw6BufFwgOwor55aUPmTEq25nfFwgOwor56i5PnpoxJtufFwgOwor56KHPmTDrG5nfFwgOwor54WFPmR1w6BufFwgOwor5peDPnpoxIFufFwgOwor6IKrPnpoxatufFwgOwor55SRPnrDqG5nfFwgOwor55GXPnl1w6BufFwgOwor54yDPnhpx45ufFwgOwor5ZOZPmt1w6BpfFwgOwor6JOKPnfEm25nfFwgOwor6I2lPnFpw6FufFwgOwor6YWwPnhpxIFufFwgOwor576fPnFpxIFufFwgOwor6KCTPm3Em25nfFwgOwor6KOjPmxpw6BufFwgOwor5q+9Pmppw6BufFwgOwor5oiLPmppxIFufFwgOwor5qm8Pnl1w6FufFwgOwor5qabPnpoxJNufFwgOwor54+ZPmfHkm5nfFwgOwor5rqPPnTDoW5nfFwgOwor6YOiPnnHkG5nfFwgOwor6LC1PnpoxIFufFwgOwor6IurPnNoxIFufFwgOwor5ommPnFpxIFufFwgOwor6a2NPnfHjm5nfFwgOwor54W4PmJpxIFufFwgOwor54SvPmNoxIFvfFwgOwor6IO8PnBpw6FufFwgOwor54iwPnl1w6FufFwgOwor54qPPnBpxIFufFwgOwor5qOwPmNodcOtfFwgOwor57ugPmfEm25nfFwgOwor5rWePnpodcOzfFwgOwor5oKbPnF1xIFufFwgOwor54u3Pmp1w6BufFwgOwor5bOkPmppw6BvfFwgOwor5ZiMPnBpxIFvfFwgOwor5ZOTPnhpxIFvfFwgOwor6JK5PmppxIFufFwgOwor5aGEPmzDqW5nfFwgOwor6YSEPmp1w6BufFwgOwor6Z6vPmppxIFufFwgOwor6bKiPmxpw6FufFwgOwor6LqcPnp1xIFufFwgOwor6LmBPnBpw6FufFwgOwor56C7PmzDs25nfFwgOwor56CAPmTDoG5nfFwgOwor6IWIPmrEq25nfFwgOwor6ISYPmd1x45ufFwgOwor6L6HPm5px45ufFwgOwor5qS5PnNow6hufFwgOwor55KOPnnEq25nfFwgOwor6LCgPmTHjm5nfFwgOwor5YqBPnFpxIFvfFwgOwor6J6fPm3DrW5nfFwgOwor6LejPnhpx45ufFwgOwor57GAPnpow7J1fFwgOwor55mcPmRpw6BufFwgOwor56CmPnpow6BpfFwgOwor5p6LPmbEgW5nfFwgOwor5r2LPmxpw6BufFwgOwor6aWnPnjDrW5nfFwgOwor5o6+Pnl1w6BufFwgOwor6JW7PmjDsm5nfFwgOwor6I68PmNow7pufFwgOwor6I6oPmzDoG5nfFwgOwor6LCdPnBpw6FufFwgOwor6bKbPmppx45vfFwgOwor6KymPnHDrG5nfFwgOwor6ImPPnNox5J1fFwgOwor56yVPmppx45ufFwgOwor6JuJPmzDrW5nfFwgOwor6ZOrPnRpw6FvfFwgOwor6KCyPmp1xIFufFwgOwor55yEPm1px45ufFwgOwor56O0PmTDqG5nfFwgOwor5aq1PnnDrG5nfFwgOwor6IOXPnpoxJNufFwgOwor6L24PnpoxJtufFwgOwor5qKDPnTHkG5nfFwgOwor6aaVPm7DoW5nfFwgOwor542+Pmh1xIFufFwgOwor6a2IPnhpxIFvfFwgOwor6bKuPmzDrW5nfFwgOwor6bu+Pm3DqW5nfFwgOwor55adPnNow6BufFwgOwor5oisPmppx45ufFwgOwor6KyHPmppx45ufFwgOwor5ry2Pmh1w6BufFwgOwor5biRPnTHjm5nfFwgOwor5o+OPnh1xIFufFwgOwor6JKXPmzDoG5nfFwgOwor6YWDPmzDrW5nfFwgOwor6ZmJPmrDrG5nfFwgOwor5YmhPnNow6BufFwgOwor6bKCPmbDoW5nfFwgOwor57KcPnRpw6BvfFwgOwor562yPnNoxIFvfFwgOwor6J6IPnl1w6FufFwgOwor6aKDPmfEgW5nfFwgOwor6KSKPmJpx45ufFwgOwor6ZKNPnNoxIFufFwgOwor55WbPnpoxJtufFwgOwor5pupPm7Hjm5nfFwgOwor6L6LPnfHjm5nfFwgOwor5rqxPnpoxJNufFwgOwor5b+tPmJpw6BufFwgOwor5pSuPm7Hjm5nfFwgOwor6I2HPnjDrG5nfFwgOwor6IuOPm3DqW5nfFwgOwor6YKhPmbEgW5nfFwgOwor6LCWPnh1xIFufFwgOwor6YabPnF1w6FufFwgOwor6ICqPnDHjm5nfFwgOwor6bulPnHDrW5nfFwgOwor6aurPnRpw6FvfFwgOwor6Z6SPnFpxIFvfFwgOwor6bOUPmJpw6BvfFwgOwor6LiUPnpodcOzfFwgOwor566cPmvFjW5nfFwgOwor562MPnF1w6FufFwgOwor6J+uPnNow6BufFwgOwor6aKhPmNow6BufFwgOwor6IGNPm7DrW5nfFwgOwor6IC1PnTEq25nfFwgOwor6KOlPmppx45ufFwgOwor56C8PnTDs25nfFwgOwor56azPnLDoW5nfFwgOwor6KeHPnpoxIFufFwgOwor5qeKPnNodcOyfFwgOwor57yzPmh1w6FufFwgOwor5amnPmrDrG5nfFwgOwor5r2yPnNow6BvfFwgOwor5ruiPnnDrW5nfFwgOwor5rWNPmt1w6BpfFwgOwor5ZW2PmTDrG5nfFwgOwor6JaoPmjFjW5nfFwgOwor556iPm3DqW5nfFwgOwor6JO8Pmxpx45vfFwgOwor6JOBPnpoxJNufFwgOwor6I+YPnPFjW5nfFwgOwor6IyRPm5px45vfFwgOwor6YKZPm3DoW5nfFwgOwor6aWUPnnFjW5nfFwgOwor6bK3PmRpxIFvfFwgOwor6Zq5PnpodcSrfFwgOwor6ImoPm3DqW5nfFwgOwor6ImfPnTDs25nfFwgOwor6IihPmfEgW5nfFwgOwor6bmHPnhpw6FufFwgOwor6ZS2PnPFjW5nfFwgOwor6ZKHPmTDrG5nfFwgOwor56GOPnjDrW5nfFwgOwor56WnPnRpxIFvfFwgOwor5pWrPmppw6BvfFwgOwor5qWmPnh1w6BufFwgOwor5qS0PmR1w6BufFwgOwor57yvPnrEk25nfFwgOwor5ayyPm5px45vfFwgOwor5oOdPnTHjm5nfFwgOwor5ZmNPmppxIFvfFwgOwor5ZSqPmbEm25nfFwgOwor6JCRPmh1w6FufFwgOwor6IqfPnNoxIFufFwgOwor6IuMPmPHjm5nfFwgOwor5Z+dPm5pw6BufFwgOwor6YSvPnNow6BufFwgOwor6ISUPmx1w6FufFwgOwor5rGGPmN1xIFufFwgOwor5YSHPnh1xIFufFwgOwor5YitPmrHkG5nfFwgOwor6bK2Pm5pw6FufFwgOwor6bKjPmppxIFufFwgOwor6b6APmNow6hufFwgOwor576wPnTEgW5nfFwgOwor6ImLPm3Em25nfFwgOwor57CmPmTEk25nfFwgOwor6KCKPmxpw6FufFwgOwor6J61PnBpxIFvfFwgOwor6J6XPnTDoW5nfFwgOwor6J2+PnLDs25nfFwgOwor6JypPnRpw6FvfFwgOwor6Ju4PnNoxIFvfFwgOwor6JqsPnhpw6BufFwgOwor55i/PnnHkG5nfFwgOwor55ilPmNow6BpfFwgOwor6birPmTFjW5nfFwgOwor56iCPmzDoW5nfFwgOwor6ZS+Pmh1w6FufFwgOwor6ZSpPmp1w6BufFwgOwor56GQPnTDs25nfFwgOwor6IKcPnLDs25nfFwgOwor5rChPmTFjW5nfFwgOwor5qaHPmNow6hufFwgOwor5p61PnhpxIFvfFwgOwor5p6ePmPFjW5nfFwgOwor5p2qPm1px45vfFwgOwor57ysPmPDqW5nfFwgOwor5b2WPnR1w6BufFwgOwor5rmUPmppxIFufFwgOwor5riRPm1px45ufFwgOwor5rO3PmzDs25nfFwgOwor5oWKPnFpw6BufFwgOwor5ZyJPmNodcOtfFwgOwor5bCiPnfEgW5nfFwgOwor6JiFPmjDqW5nfFwgOwor6JKhPmLDoG5nfFwgOwor6IuEPmJpw6BufFwgOwor6YOQPmt1w6BpfFwgOwor6K+8PnNow6lpfFwgOwor6aufPmJpxIFvfFwgOwor6bOZPnnDs25nfFwgOwor6bOKPmJpxIFufFwgOwor6bKtPnHEq25nfFwgOwor6b6GPnRpw6FvfFwgOwor6La8Pmppx45ufFwgOwor6YajPnTDoW5nfFwgOwor57CWPmR1w6BufFwgOwor566QPmrEq25nfFwgOwor6JuYPnnDoW5nfFwgOwor6Jm/PmNow6BpfFwgOwor6aKlPmbEm25nfFwgOwor55izPmNoxY11fFwgOwor6bmpPmxpw6FvfFwgOwor55+nPnNoxJtufFwgOwor6ZOePmRpw6BvfFwgOwor6ZKqPmvDoG5nfFwgOwor6ZKrPmbEgW5nfFwgOwor6ZKQPnNow6BufFwgOwor572+PnrEk25nfFwgOwor55WOPnF1x45ufFwgOwor56OJPnPHjm5nfFwgOwor56GXPnFpxIFvfFwgOwor56GtPm3DoW5nfFwgOwor56WGPnhpxIFufFwgOwor6IOCPnNow6hufFwgOwor6IOoPmTDsm5nfFwgOwor5rCZPnhpxIFufFwgOwor6L6BPnF1w6FufFwgOwor5qqgPnHDrW5nfFwgOwor5qWXPmppw6BufFwgOwor5qSgPnFpw6BufFwgOwor5qCKPmzDs25nfFwgOwor55KBPmPFjW5nfFwgOwor57yjPmppxIFufFwgOwor57yPPmJpw6BufFwgOwor57uXPmjDqG5nfFwgOwor6YCtPmh1w6BufFwgOwor5pC0PnFpxIFufFwgOwor5a6APm1pw6FufFwgOwor6Ze2PmvDoG5nfFwgOwor542NPmrDrG5nfFwgOwor5b68Pmppx45vfFwgOwor6JW5PnnFjW5nfFwgOwor55SNPm3DqW5nfFwgOwor6JOlPnnDrG5nfFwgOwor6Im9PmppxIFvfFwgOwor5Z6MPmTDsm5nfFwgOwor6YWGPmbEk25nfFwgOwor6Zi9PmRpw6BufFwgOwor6K+cPnNoxJNufFwgOwor5LudPnTDs25nfFwgOwor5L+cPnDEq25nfFwgOwor45CBPnRpx45ufFwgOwor45CcPmNow7N1fFwgOwor45CpPnjDrW5nfFwgOwor45CxPnpoxJtufFwgOwor45C4PnFpw6BufFwgOwor45GCPmbHjm5nfFwgOwor45GHPnpow7J1fFwgOwor45GIPmTDsm5nfFwgOwor45GdPmzDsm5nfFwgOwor45GePnnDrG5nfFwgOwor45GfPmLEm25nfFwgOwor45GkPm1pw6FvfFwgOwor45GqPmNow6FpfFwgOwor45GzPnpow7J1fFwgOwor45G9PnTDoW5nfFwgOwor45G+Pnhpw6FvfFwgOwor45G/PnRpw6FvfFwgOwor45KEPm7DoG5nfFwgOwor45KJPnTHjm5nfFwgOwor45KZPm1pw6FufFwgOwor45KbPmRpw6BvfFwgOwor45KfPm5px45vfFwgOwor45KwPnF1w6FufFwgOwor45OBPnfHjm5nfFwgOwor45ODPmNodcOtfFwgOwor45OEPnpow6hufFwgOwor45OJPmh1w6BufFwgOwor45OKPmTDsm5nfFwgOwor45OLPmfDsm5nfFwgOwor45OOPmxpw6FufFwgOwor45ORPnjDrG5nfFwgOwor45OdPnjDrW5nfFwgOwor45OgPmRpw6BufFwgOwor45OqPmzHjm5nfFwgOwor45OyPnBpw6BufFwgOwor45O6Pmppw6BufFwgOwor45SFPnhpw6BvfFwgOwor45SGPmNow6FufFwgOwor45SLPmppw6BufFwgOwor45SMPnpow7J1fFwgOwor45STPmppx45ufFwgOwor45SZPmLHjm5nfFwgOwor45SePmt1w6BpfFwgOwor45SkPnNoxJtufFwgOwor45SmPnnHjm5nfFwgOwor45SvPnN1x45ufFwgOwor45SwPmjDqW5nfFwgOwor45S1Pnhpw6BufFwgOwor45S2PmfDsm5nfFwgOwor45WLPmrDrG5nfFwgOwor45WVPmh1w6BufFwgOwor45WaPnpox45vfFwgOwor45WrPmbHjm5nfFwgOwor45WsPnPDsm5nfFwgOwor45W0PmNow6lufFwgOwor45aTPmjDs25nfFwgOwor45afPnNow7J1fFwgOwor45amPmTHkm5nfFwgOwor45arPmzDrW5nfFwgOwor45atPnRpx45ufFwgOwor45a6PmNox5RufFwgOwor45ebPnhpw6BvfFwgOwor45eiPmTDsm5nfFwgOwor45iFPnhpw6FufFwgOwor45iHPnLDs25nfFwgOwor45iLPnhpw6FufFwgOwor45idPm5px45ufFwgOwor45iiPnfEm25nfFwgOwor45ijPnh1w6FufFwgOwor45irPmrHkG5nfFwgOwor45i4PnrDoG5nfFwgOwor45mBPm3Hjm5nfFwgOwor45mJPnRpx45ufFwgOwor45mVPmt1w6BpfFwgOwor45mXPmt1w6BpfFwgOwor45mZPmzHkm5nfFwgOwor45mfPmzHjm5nfFwgOwor45mpPmxpw6FvfFwgOwor45myPnnHkm5nfFwgOwor45m0PmNow6BufFwgOwor45m2PnTDoW5nfFwgOwor45m5Pm3DqW5nfFwgOwor45m7PmNow6FufFwgOwor45qBPnFpw6FvfFwgOwor45qCPnLDoW5nfFwgOwor45qFPmzDs25nfFwgOwor45qSPnNox45ufFwgOwor45qePm3Em25nfFwgOwor45qfPmNodcOyfFwgOwor45qjPnhpw6FvfFwgOwor45qyPmRpx45ufFwgOwor45q9PnFpx45vfFwgOwor45uUPnDDqW5nfFwgOwor45uaPnTHkm5nfFwgOwor45uePmzDsm5nfFwgOwor45upPnpow7N1fFwgOwor45uvPm1px45ufFwgOwor45u2PmNow7N1fFwgOwor45u5PnBpw6FufFwgOwor45u+Pnhpw6FufFwgOwor45yDPmxpw6BufFwgOwor45yKPnDDoG5nfFwgOwor45yNPnTDoW5nfFwgOwor45yVPmxpw6FufFwgOwor45yePnFpw6BufFwgOwor45ykPnNoxJtufFwgOwor45yqPnhpx45ufFwgOwor45yxPmTDsm5nfFwgOwor45yyPnfEm25nfFwgOwor45yzPmh1w6FpfFwgOwor45y0Pm3DqG5nfFwgOwor45y1Pm5px45vfFwgOwor45y7Pmxpw6BufFwgOwor452EPmNow7pufFwgOwor452HPmNow7pufFwgOwor452IPmx1w6FufFwgOwor452KPnNox5J1fFwgOwor452LPmxpw6FvfFwgOwor452OPmTDrG5nfFwgOwor452QPnLDs25nfFwgOwor452RPm3DoW5nfFwgOwor452VPm7DrW5nfFwgOwor452XPmzDoW5nfFwgOwor452YPnnDs25nfFwgOwor452gPm3DrW5nfFwgOwor452qPmRpw6BufFwgOwor452rPmzDs25nfFwgOwor452tPnjHkG5nfFwgOwor452vPnFpw6FvfFwgOwor452wPm1pw6FufFwgOwor452xPm3DqG5nfFwgOwor4524PmJpw6BufFwgOwor4526Pmxpw6FufFwgOwor4529PmNodcOtfFwgOwor456LPm5px45ufFwgOwor456ZPm5pw6BvfFwgOwor456fPmRpw6BufFwgOwor456hPnpox45ufFwgOwor456yPnnDsm5nfFwgOwor45+APmxpw6FufFwgOwor45+FPnnDoW5nfFwgOwor45+MPm3DoW5nfFwgOwor45+NPmzDoW5nfFwgOwor45+QPm3Hjm5nfFwgOwor45+WPmzDsm5nfFwgOwor45+YPnRpw6FvfFwgOwor45+ePnpow6BufFwgOwor45+gPmfHjm5nfFwgOwor45+oPnF1w6FufFwgOwor45+rPnF1w6FufFwgOwor45+wPm3HkG5nfFwgOwor45+0Pmt1w6BpfFwgOwor45+1PmfHjm5nfFwgOwor45+2Pnl1w6FufFwgOwor45+7PnFpw6BufFwgOwor45+9PmJpx45vfFwgOwor45+/Pm3DoW5nfFwgOwor46CJPnTDs25nfFwgOwor46CQPmppw6BvfFwgOwor46CSPmJpx45vfFwgOwor46CTPm3DqW5nfFwgOwor46CdPmN1w6FufFwgOwor46ChPm5px45vfFwgOwor46CtPnpox45ufFwgOwor46C6Pm1pw6FvfFwgOwor46C9PnTDs25nfFwgOwor46GJPnhpw6FufFwgOwor46GRPnFpx45vfFwgOwor46GYPmxpw6FufFwgOwor46GbPm3DoW5nfFwgOwor46GdPmbDqG5nfFwgOwor46GjPmzDs25nfFwgOwor46GoPnFpxIFufFwgOwor46GpPmx1w6FufFwgOwor46GvPnpow6FpfFwgOwor46GyPmh1w6FufFwgOwor46G1PmzDrW5nfFwgOwor46G7Pmxpw6BvfFwgOwor46G9Pnpow6BvfFwgOwor46G+Pnhpw6BufFwgOwor46KDPmzDoW5nfFwgOwor46KFPmzDsm5nfFwgOwor46KGPmNow6FufFwgOwor46KNPnnDrW5nfFwgOwor46KUPnrHkm5nfFwgOwor46KXPnFpw6BvfFwgOwor46KYPmxpw6FufFwgOwor46KfPmNox45ufFwgOwor46KjPmrDrG5nfFwgOwor46KlPmTDsm5nfFwgOwor46KnPmp1w6BufFwgOwor46KsPmjDs25nfFwgOwor46K6Pnhpw6FufFwgOwor46K+Pmp1w6BufFwgOwor46OAPnpow6hufFwgOwor46OMPnNow6BufFwgOwor46OPPmrDrG5nfFwgOwor46OQPmJpw6BufFwgOwor46ORPnLDs25nfFwgOwor46OSPmPDqG5nfFwgOwor46OaPnTDs25nfFwgOwor46OcPnjDrW5nfFwgOwor46OgPnTDs25nfFwgOwor46OjPnNox45ufFwgOwor46OkPmppw6BufFwgOwor46OqPmh1x45ufFwgOwor46O3Pm7DrG5nfFwgOwor46O/PnpodcOzfFwgOwor46SBPm1px45ufFwgOwor46SDPmbDoW5nfFwgOwor46SKPnhpw6BvfFwgOwor46SNPnFpx45vfFwgOwor46SPPnTDs25nfFwgOwor46SaPmjDoW5nfFwgOwor46SfPmvHkm5nfFwgOwor46SoPmfHkm5nfFwgOwor46SqPnl1w6BufFwgOwor46S2PnDDoW5nfFwgOwor46S9PmNow7N1fFwgOwor46WEPmzDrW5nfFwgOwor46WFPnNow7J1fFwgOwor46WGPmRpw6BufFwgOwor46WKPnDDqW5nfFwgOwor46WPPnRpx45ufFwgOwor46WQPnl1w6BufFwgOwor46WVPmxpw6FufFwgOwor46WnPnNow7lufFwgOwor46WoPmNodcOtfFwgOwor46WsPnDDoW5nfFwgOwor46WuPnpow7J1fFwgOwor46WyPnNow6hufFwgOwor46WzPnl1w6FufFwgOwor46aAPmbDqW5nfFwgOwor46aBPmxpw6FufFwgOwor46aDPmNox45ufFwgOwor46aRPmxpx45ufFwgOwor46aTPnhpw6BufFwgOwor46aVPmzDs25nfFwgOwor46aXPmppw6BufFwgOwor46aaPmJpx45ufFwgOwor46adPm1px45vfFwgOwor46aePmNow7N1fFwgOwor46alPmh1w6FufFwgOwor46atPmzDrW5nfFwgOwor46auPnFpw6FufFwgOwor46a3PnnHkm5nfFwgOwor46eCPnRpw6FufFwgOwor46eEPnFpx45ufFwgOwor46eLPnhpx45ufFwgOwor46eNPmbHjm5nfFwgOwor46eQPnPHkm5nfFwgOwor46eUPmd1w6BpfFwgOwor46efPmt1x45pfFwgOwor46elPnhpx45ufFwgOwor46emPnh1w6BufFwgOwor46esPmfHkm5nfFwgOwor46exPmNow6hufFwgOwor46e8PmJpw6BvfFwgOwor46iAPmLHkG5nfFwgOwor46iCPmTHkm5nfFwgOwor46iEPnpow6BvfFwgOwor46iVPnnDrW5nfFwgOwor46iYPnjHkG5nfFwgOwor46ibPnNox45ufFwgOwor46icPnFpw6FufFwgOwor46imPnPHkm5nfFwgOwor46i0Pmppw6BufFwgOwor46i1Pmppx45ufFwgOwor46i2PmNow7N1fFwgOwor46i+PnnDoG5nfFwgOwor46mIPnhpw6BufFwgOwor46maPm3DqW5nfFwgOwor46mbPnR1w6FufFwgOwor46mfPnpow6BpfFwgOwor46mgPnBpx45vfFwgOwor46muPnFpw6FufFwgOwor46mwPmppx45vfFwgOwor46mzPnPHkm5nfFwgOwor46m+PmNodcOtfFwgOwor46qHPnhpw6BufFwgOwor46qMPnTHkm5nfFwgOwor46qOPnNox45ufFwgOwor46qVPmRpw6BvfFwgOwor46qYPmxpx45ufFwgOwor46qbPnpoxJtufFwgOwor46qdPmxpw6BufFwgOwor46qgPnFpw6BufFwgOwor46qiPnNox45vfFwgOwor46qjPnFpw6BvfFwgOwor46qoPnNow6BufFwgOwor46qsPnpodcOzfFwgOwor46quPmzDrW5nfFwgOwor46qxPmh1w6BufFwgOwor46q7Pmp1w6BufFwgOwor46uAPmTHkG5nfFwgOwor46uBPmR1w6BufFwgOwor46uEPnDDoW5nfFwgOwor46uSPmfHkm5nfFwgOwor46ulPm3HkG5nfFwgOwor46urPnhpx45ufFwgOwor46uwPmzHjm5nfFwgOwor46uzPmNow6lufFwgOwor46yEPmNow6BufFwgOwor46yGPm1pw6FufFwgOwor46yHPmh1w6BufFwgOwor46yJPm51x45ufFwgOwor46yKPmh1x45ufFwgOwor46yMPmrDrG5nfFwgOwor46yOPnhpx45ufFwgOwor46ySPm3Hjm5nfFwgOwor46yTPnBpw6BvfFwgOwor46yVPnnDoW5nfFwgOwor46yXPnhpw6BufFwgOwor46ydPmPDqW5nfFwgOwor46ygPnNow6BpfFwgOwor46yhPmzDrW5nfFwgOwor46ytPmppw6BvfFwgOwor46yuPmt1w6BpfFwgOwor46y0PmjHkm5nfFwgOwor46y1Pnhpw6FvfFwgOwor462BPnLDqW5nfFwgOwor462CPmppx45vfFwgOwor462HPnl1w6BufFwgOwor462LPmLDoG5nfFwgOwor462TPmJpw6BufFwgOwor462cPnLDs25nfFwgOwor462fPmfHkm5nfFwgOwor462gPnhpx45ufFwgOwor462kPm5px45vfFwgOwor462rPmN1w6FufFwgOwor462sPnpodcOzfFwgOwor4625Pnhpw6FufFwgOwor4627PnTDoW5nfFwgOwor466EPmLHjm5nfFwgOwor466HPnRpw6BufFwgOwor466MPm1pw6FufFwgOwor466QPnjHkG5nfFwgOwor466UPnTDs25nfFwgOwor466hPmd1w6BufFwgOwor466tPnhpw6FufFwgOwor466zPnpow6hufFwgOwor4664PnPDsm5nfFwgOwor466+PmzHjm5nfFwgOwor46+APnhpx45ufFwgOwor46+BPmLDoG5nfFwgOwor46+GPmNox45ufFwgOwor46+LPnnHkG5nfFwgOwor46+QPmbHjm5nfFwgOwor46+YPmt1x45ufFwgOwor46+ePmp1w6BufFwgOwor46+gPnFpw6BufFwgOwor46+iPnpow6hufFwgOwor46+qPmzDrW5nfFwgOwor46+sPmxpx45ufFwgOwor46+vPmfDsm5nfFwgOwor46+xPmJpx45vfFwgOwor46+zPnHDrW5nfFwgOwor46+5PmJpx45vfFwgOwor46+6Pmppw6BufFwgOwor47CCPnNoxJtufFwgOwor47CDPm1pw6FufFwgOwor47CEPmppw6BufFwgOwor47CIPmxpx45ufFwgOwor47CNPmzDs25nfFwgOwor47CgPmvDoG5nfFwgOwor47CuPnNow6hufFwgOwor47C4Pmxpx45ufFwgOwor47C+Pmppw6BvfFwgOwor47GNPmx1w6FufFwgOwor47GiPmzDoW5nfFwgOwor47GlPmzDrW5nfFwgOwor47GoPmxpw6BufFwgOwor47GtPmR1w6BufFwgOwor47GuPmt1w6BpfFwgOwor47G2PmLDqG5nfFwgOwor47KAPmNow6lufFwgOwor47KGPmzDrW5nfFwgOwor47KIPnNow6FvfFwgOwor47KLPmNodcOyfFwgOwor47KMPm7DqG5nfFwgOwor47KTPnLDs25nfFwgOwor47KdPnLHkm5nfFwgOwor47KfPnnHkG5nfFwgOwor47KiPmJpw6BufFwgOwor47KlPnTDoW5nfFwgOwor47KoPnLDs25nfFwgOwor47KwPm7DrW5nfFwgOwor47K9Pm5pw6BufFwgOwor47K/PnfHjm5nfFwgOwor47OEPnhpw6FufFwgOwor47OFPmppx45vfFwgOwor47OOPmJpw6BufFwgOwor47OSPmJpw6BufFwgOwor47OXPmNow6BpfFwgOwor47OZPnh1w6BufFwgOwor47OoPmppx45ufFwgOwor47OsPnh1w6FufFwgOwor47OtPnhpw6FufFwgOwor47OuPm5pw6BvfFwgOwor47O5PnfHjm5nfFwgOwor47SEPnnDrW5nfFwgOwor47SPPnfHjm5nfFwgOwor47SQPm1pw6BufFwgOwor47ScPmJpw6BufFwgOwor47SlPnFpw6BvfFwgOwor47SmPmd1w6BufFwgOwor47SoPnpow6hufFwgOwor47SwPm7DqW5nfFwgOwor47SzPmzHkm5nfFwgOwor47S0PmNow6lufFwgOwor47S/PmTHkG5nfFwgOwor47WAPmN1w6BufFwgOwor47WKPnNoxJtufFwgOwor47WMPmNow6BufFwgOwor47WVPnNow6hufFwgOwor47WePmNow7N1fFwgOwor47WkPmRpw6BufFwgOwor47WqPnhpw6FufFwgOwor47WsPnnDrW5nfFwgOwor47WuPmNow7pufFwgOwor47WvPmbDqW5nfFwgOwor47WxPnBpx45vfFwgOwor47WzPmxpw6FvfFwgOwor47W0PmPDoW5nfFwgOwor47W3PmJpw6BufFwgOwor47W5Pmh1w6FufFwgOwor47W+PmrDrG5nfFwgOwor47aHPmjDqW5nfFwgOwor47aMPmxpw6FufFwgOwor47aNPnhpx45ufFwgOwor47aOPmh1w6FufFwgOwor47aRPmxpw6BufFwgOwor47aSPnNox45ufFwgOwor47aTPmPDoW5nfFwgOwor47aVPmppx45ufFwgOwor47aYPmRpw6BufFwgOwor47aePm7Hjm5nfFwgOwor47ajPmNow6FufFwgOwor47akPmNox45vfFwgOwor47arPmxpx45vfFwgOwor47ayPnnDsm5nfFwgOwor47a2Pm7Ds25nfFwgOwor47a5PmjDsm5nfFwgOwor47a6PnRpw6BufFwgOwor47eFPmNox45vfFwgOwor47eHPmd1w6BpfFwgOwor47ePPnnHkm5nfFwgOwor47eTPnrHkm5nfFwgOwor47eWPnpow6BvfFwgOwor47erPnHHkG5nfFwgOwor47evPmLDqG5nfFwgOwor47e3Pmp1x45ufFwgOwor47e5PnNow6BvfFwgOwor47iDPmRpx45ufFwgOwor47iRPmN1w6BufFwgOwor47iXPnTDs25nfFwgOwor47ibPnNow6FvfFwgOwor47icPmvDsm5nfFwgOwor47igPnRpx45vfFwgOwor47ikPnBpw6BufFwgOwor47ilPmNow6FufFwgOwor47iqPmNow7pufFwgOwor47irPnFpw6FufFwgOwor47izPmzDrW5nfFwgOwor47mFPnrHkm5nfFwgOwor47mJPnl1w6FufFwgOwor47mMPmNox45ufFwgOwor47mWPmh1w6BufFwgOwor47mZPnnDrW5nfFwgOwor47maPnnDrW5nfFwgOwor47mhPnh1w6FufFwgOwor47myPnhpw6BvfFwgOwor47m1PmrDrG5nfFwgOwor47m2PnTDrW5nfFwgOwor47m9PmNox45ufFwgOwor47m+PnBpx45vfFwgOwor47m/PmRpx45vfFwgOwor47qKPnnDoG5nfFwgOwor47qMPnhpw6BufFwgOwor47qOPnLDs25nfFwgOwor47qQPnpox45vfFwgOwor47qSPmxpw6BvfFwgOwor47qTPnBpw6BvfFwgOwor47qYPnpow6BufFwgOwor47qdPmppw6BufFwgOwor47qfPnpodcOzfFwgOwor47qlPmNow6FufFwgOwor47qmPmxpw6FufFwgOwor47qsPmfHkm5nfFwgOwor47qxPnLDqW5nfFwgOwor47q4PnDDrW5nfFwgOwor47q5PmJpw6BufFwgOwor47uCPnDDrW5nfFwgOwor47uKPm3DoW5nfFwgOwor47uPPmzDrW5nfFwgOwor47uePmJpw6BufFwgOwor47uwPm1px45ufFwgOwor47u1Pnpow6BufFwgOwor47yQPnBpw6FufFwgOwor47yRPmxpw6BufFwgOwor47yTPmxpw6FufFwgOwor47yXPmTHkG5nfFwgOwor47yZPnpow7J1fFwgOwor47ybPnjDrW5nfFwgOwor47yePnDDqG5nfFwgOwor47ymPmfHkm5nfFwgOwor47ynPnTDs25nfFwgOwor47yrPmh1w6BufFwgOwor47ysPnjDrG5nfFwgOwor47ytPmRpw6BufFwgOwor47yvPmTDsm5nfFwgOwor47yxPnJ1x45ufFwgOwor47y4PnLDs25nfFwgOwor47y6PnTDoW5nfFwgOwor47y7PmPDs25nfFwgOwor47y8PnBpw6FvfFwgOwor47y/PnTDs25nfFwgOwor472HPmd1w6BpfFwgOwor472YPmfHjm5nfFwgOwor472qPnrEm25nfFwgOwor472rPnnHkm5nfFwgOwor472tPnJ1x45ufFwgOwor472xPmppx45vfFwgOwor472yPmppx45vfFwgOwor4723PnNodcOsfFwgOwor4724PmNow6lufFwgOwor476JPmzDrW5nfFwgOwor476MPnh1x45ufFwgOwor476VPnNoxJtufFwgOwor476XPmzHjm5nfFwgOwor476YPmfEm25nfFwgOwor476mPmLDoG5nfFwgOwor476tPnpow7J1fFwgOwor4765PmNow6FpfFwgOwor476+Pmxpw6FufFwgOwor476/PmzDoW5nfFwgOwor47+FPnhpx45ufFwgOwor47+YPnnDrW5nfFwgOwor47+kPmNox5RufFwgOwor47+mPm7DrG5nfFwgOwor47+nPmNow7N1fFwgOwor47+pPnTHjm5nfFwgOwor47+qPmh1w6FufFwgOwor47+uPnnDoG5nfFwgOwor5ICEPm3DqW5nfFwgOwor5ICJPnFpw6FvfFwgOwor5ICKPmppx45vfFwgOwor5ICOPm1px45ufFwgOwor5ICPPnhpw6BufFwgOwor5ICTPmh1w6BufFwgOwor5IChPmNow6BufFwgOwor5ICiPnNow7lufFwgOwor5IClPnNodcOyfFwgOwor5ICnPmjHkm5nfFwgOwor5ICoPmh1w6BufFwgOwor5ICqPmjDoW5nfFwgOwor5ICsPnF1w6FufFwgOwor5ICuPm3DoW5nfFwgOwor5IC0PnnHkG5nfFwgOwor5IC1PnNow7lufFwgOwor5IC2PmzHjm5nfFwgOwor5IGBPmzHjm5nfFwgOwor5IGCPnhpw6BufFwgOwor5IGEPnjDrG5nfFwgOwor5IGQPnnDrG5nfFwgOwor5IGRPnnDoW5nfFwgOwor5IGdPnnDrW5nfFwgOwor5IGgPmxpw6FufFwgOwor5IGiPnh1w6FufFwgOwor5IGnPm1pw6FvfFwgOwor5IGsPmPDqW5nfFwgOwor5IGuPnFpw6FufFwgOwor5IGzPm3Hjm5nfFwgOwor5IG0Pnpox45ufFwgOwor5IG1PmJpx45ufFwgOwor5IG2Pmppx45vfFwgOwor5IG4Pm7Ds25nfFwgOwor5IKBPmNow6FufFwgOwor5IKDPmppw6BvfFwgOwor5IKHPm7DoW5nfFwgOwor5IKIPnTDs25nfFwgOwor5IKOPnp1x45ufFwgOwor5IKQPmNodcOyfFwgOwor5IKUPnjDrG5nfFwgOwor5IKcPmLDoG5nfFwgOwor5IKiPmTHkm5nfFwgOwor5IKmPnpoxJtufFwgOwor5IKnPnpoxJtufFwgOwor5IKqPmRpw6BvfFwgOwor5IKrPmjDs25nfFwgOwor5IKsPmfHkm5nfFwgOwor5IKvPmd1w6BpfFwgOwor5IK9PmRpw6BvfFwgOwor5IOHPm1pw6FufFwgOwor5IONPnpow6BvfFwgOwor5IOUPmjDs25nfFwgOwor5IOXPmNodcOyfFwgOwor5IObPmxpw6FufFwgOwor5IOdPnFpw6BvfFwgOwor5IOnPmzDs25nfFwgOwor5IOxPnhpw6BufFwgOwor5IO1Pm5px45vfFwgOwor5IO2Pmh1w6FpfFwgOwor5IO3PnnDrW5nfFwgOwor5IO4Pnhpw6BufFwgOwor5ISFPmp1w6BufFwgOwor5ISMPnpodcOsfFwgOwor5ISQPnF1w6BufFwgOwor5ISTPmjDqW5nfFwgOwor5ISYPnDDqW5nfFwgOwor5ISZPm3DrW5nfFwgOwor5ISdPmNox5RufFwgOwor5ISgPnNow6BufFwgOwor5ISlPmzDrW5nfFwgOwor5ISmPmxpx45vfFwgOwor5ISnPnLDqW5nfFwgOwor5ISqPmNodcOyfFwgOwor5IStPm5pw6FufFwgOwor5ISvPmppx45ufFwgOwor5ISyPmNodcOtfFwgOwor5IS5Pm5pw6FufFwgOwor5IS7PmNow6FvfFwgOwor5IS8PnRpx45ufFwgOwor5IS9PnRpx45ufFwgOwor5IWIPnl1w6BufFwgOwor5IWNPmTDsm5nfFwgOwor5IWQPmppx45ufFwgOwor5IWSPm3DoW5nfFwgOwor5IWtPnDDoW5nfFwgOwor5IWuPmPDoG5nfFwgOwor5IWvPnTDoW5nfFwgOwor5IW1PnpodcOzfFwgOwor5IW6Pm1px45vfFwgOwor5IaCPmxpw6FufFwgOwor5IaEPnNow6BufFwgOwor5IaNPmzDs25nfFwgOwor5IaWPmjDs25nfFwgOwor5IaXPmppw6BvfFwgOwor5IaYPmN1w6FufFwgOwor5IaaPnTDs25nfFwgOwor5IagPmh1w6BufFwgOwor5IahPmzDoW5nfFwgOwor5IajPmNow6lufFwgOwor5IamPnNow6hufFwgOwor5IaoPm3DrW5nfFwgOwor5IapPm3DrW5nfFwgOwor5IavPmNodcOyfFwgOwor5Ia5PnTHkm5nfFwgOwor5Ia7PnFpw6BvfFwgOwor5IeAPnLDs25nfFwgOwor5IeHPm3DqW5nfFwgOwor5IeMPnFpw6BvfFwgOwor5IeNPmNodcOyfFwgOwor5IecPmxpx45ufFwgOwor5IefPmppw6BufFwgOwor5IegPnpow7J1fFwgOwor5IemPnnHjm5nfFwgOwor5IeoPmfDsm5nfFwgOwor5IevPnLDs25nfFwgOwor5Ie6PmNow7N1fFwgOwor5IiCPmLDrG5nfFwgOwor5IiDPnpox45vfFwgOwor5IiHPnpow6BvfFwgOwor5IiKPmzDrW5nfFwgOwor5IiNPm3DoW5nfFwgOwor5IiZPnpow7J1fFwgOwor5IibPmt1w6BpfFwgOwor5IigPmh1x45ufFwgOwor5IikPnFpw6FufFwgOwor5IitPmh1w6FpfFwgOwor5Ii0PnFpw6BufFwgOwor5Ii2PnLDs25nfFwgOwor5Ii+PnNodcOyfFwgOwor5ImBPmzDrW5nfFwgOwor5ImEPmzDqW5nfFwgOwor5ImGPmRpx45vfFwgOwor5ImNPmppx45ufFwgOwor5ImOPnTDoW5nfFwgOwor5ImVPmPDqW5nfFwgOwor5ImWPmzDrW5nfFwgOwor5ImYPmPDs25nfFwgOwor5ImaPm3DqW5nfFwgOwor5ImlPnPHkm5nfFwgOwor5ImvPnhpw6BufFwgOwor5ImzPnhpx45ufFwgOwor5Im0PnLDoW5nfFwgOwor5Im4PmJpw6BufFwgOwor5Im5PmzDrW5nfFwgOwor5Im6PmjDs25nfFwgOwor5Im8Pmxpw6BvfFwgOwor5IqFPm3DrW5nfFwgOwor5IqOPnF1x45ufFwgOwor5IqcPnR1w6FufFwgOwor5IqlPnhpw6BvfFwgOwor5IqtPmNow7N1fFwgOwor5IqyPmNox45ufFwgOwor5Iq0PnFpw6BufFwgOwor5Iq2Pnpow6hufFwgOwor5Iq9Pmd1w6BpfFwgOwor5IuBPmfEm25nfFwgOwor5IuEPnfHjm5nfFwgOwor5IuOPnpow6BufFwgOwor5IuRPmLHkG5nfFwgOwor5IuTPnpow7J1fFwgOwor5IuYPmNodcOyfFwgOwor5IucPnHDrG5nfFwgOwor5IuePnfHjm5nfFwgOwor5Iu8PnTHkG5nfFwgOwor5Iu9PmLEm25nfFwgOwor5IyDPnNodcOyfFwgOwor5IyEPmfEm25nfFwgOwor5IyFPnTDoW5nfFwgOwor5IyePmxpx45ufFwgOwor5IygPnHDrG5nfFwgOwor5IyiPmzDrW5nfFwgOwor5IyjPnp1x45ufFwgOwor5IynPmNow7N1fFwgOwor5IyvPmd1w6BufFwgOwor5Iy4Pmp1w6BufFwgOwor5I2EPmRpx45ufFwgOwor5I2FPmzDrW5nfFwgOwor5I2IPnDDrW5nfFwgOwor5I2JPnFpw6FufFwgOwor5I2LPmNodcOtfFwgOwor5I2UPmjDs25nfFwgOwor5I2XPnh1w6BufFwgOwor5I2aPmzDoG5nfFwgOwor5I2cPnpow6BvfFwgOwor5I2fPnrDsm5nfFwgOwor5I2hPmxpw6BvfFwgOwor5I2uPnpow6BvfFwgOwor5I2zPmNodcOyfFwgOwor5I22PmTDsm5nfFwgOwor5I26Pmh1w6FufFwgOwor5I27Pnh1x45ufFwgOwor5I6EPnRpw6FvfFwgOwor5I6GPmxpw6BvfFwgOwor5I6QPmNox45vfFwgOwor5I6SPnpox45ufFwgOwor5I6XPnFpw6FvfFwgOwor5I6aPmd1w6BufFwgOwor5I6hPm51x45ufFwgOwor5I6nPmLDoG5nfFwgOwor5I67Pnpox5J1fFwgOwor5I+DPm1pw6FufFwgOwor5I+HPnBpw6BvfFwgOwor5I+IPmxpw6FufFwgOwor5I+KPmzDs25nfFwgOwor5I+NPnl1w6BufFwgOwor5I+OPmbDqW5nfFwgOwor5I+SPnBpw6BufFwgOwor5I+TPmd1x45ufFwgOwor5I+WPnpow6hufFwgOwor5I+aPmNox45vfFwgOwor5I+bPmNox5RufFwgOwor5I+dPmNow7pufFwgOwor5I+0PnNow6BvfFwgOwor5I+1Pm3Em25nfFwgOwor5I+5Pnhpw6BufFwgOwor5I+7Pm7DqW5nfFwgOwor5JCBPm5px45vfFwgOwor5JCHPmNow7pufFwgOwor5JCMPnRpx45ufFwgOwor5JCNPnpow7J1fFwgOwor5JCPPmNox5RufFwgOwor5JClPnfEm25nfFwgOwor5JCuPmNox45ufFwgOwor5JGDPm3DqW5nfFwgOwor5JGFPm3DqW5nfFwgOwor5JGGPnnHjm5nfFwgOwor5JGJPnnDrW5nfFwgOwor5JGOPmNox45ufFwgOwor5JGPPnF1w6FufFwgOwor5JGQPnpoxJtufFwgOwor5JGXPmTDoG5nfFwgOwor5JGaPnRpw6FufFwgOwor5JGePnNow7lufFwgOwor5JGgPmxpx45vfFwgOwor5JKFPnTDqW5nfFwgOwor5JKLPnnHjm5nfFwgOwor5JKMPm3DrG5nfFwgOwor5JKNPnDHjm5nfFwgOwor5JKOPm3Hjm5nfFwgOwor5JKQPm3DqW5nfFwgOwor5JKSPnRpw6FvfFwgOwor5JKVPnhpx45vfFwgOwor5JKaPnNox45vfFwgOwor5JKbPmjDqW5nfFwgOwor5JKdPnhpw6FvfFwgOwor5JKePmNow6lufFwgOwor5JKqPmJpw6BufFwgOwor5JKtPmTEm25nfFwgOwor5JK4Pnhpw6FufFwgOwor5JOOPmNodcOyfFwgOwor5JOQPmNow7pufFwgOwor5JORPmLHkG5nfFwgOwor5JOSPmt1x45pfFwgOwor5JOTPmNow7N1fFwgOwor5JOdPm3DqW5nfFwgOwor5JOmPmRpx45ufFwgOwor5JOxPmNow6FpfFwgOwor5JO0PnJ1w6FufFwgOwor5JO3PnjDrG5nfFwgOwor5JSPPmNow7J1fFwgOwor5JSUPmrDrG5nfFwgOwor5JSWPmzDrW5nfFwgOwor5JSZPmRpw6BvfFwgOwor5JSaPmNow7pufFwgOwor5JSbPnHHkG5nfFwgOwor5JSgPnNox45vfFwgOwor5JStPm7DrG5nfFwgOwor5JS4PmJpx45vfFwgOwor5JWAPmt1x45ufFwgOwor5JWUPnhpw6FufFwgOwor5JWYPmzDrW5nfFwgOwor5JWePmzDoG5nfFwgOwor5JWmPnnDrW5nfFwgOwor5JWnPnhpw6BvfFwgOwor5JWoPnTDqW5nfFwgOwor5JWtPnFpw6FufFwgOwor5JWvPnBpw6FvfFwgOwor5JW0PnpodcOzfFwgOwor5JW6PmPDs25nfFwgOwor5JaCPmx1w6FufFwgOwor5JaFPmzDrW5nfFwgOwor5JaNPnFpw6FufFwgOwor5JaePnpox5J1fFwgOwor5JafPm3Hjm5nfFwgOwor5JagPnl1w6FufFwgOwor5JaiPm1pw6FvfFwgOwor5JarPmLDoG5nfFwgOwor5JatPmp1w6BufFwgOwor5Ja5PnnDoW5nfFwgOwor5Ja6PnRpw6FvfFwgOwor5JeDPnpow6BufFwgOwor5JeGPmd1x45ufFwgOwor5JeIPm3DqW5nfFwgOwor5JeSPmLDrG5nfFwgOwor5JegPnh1w6FufFwgOwor5JekPnnDs25nfFwgOwor5JewPmd1w6BufFwgOwor5Je0PnTDrW5nfFwgOwor5Je+Pnhpx45ufFwgOwor5Je/Pm7DrW5nfFwgOwor5JiGPnhpx45ufFwgOwor5JiNPmNow6BpfFwgOwor5JiVPmjDoW5nfFwgOwor5JioPmppx45vfFwgOwor5JipPnh1w6BufFwgOwor5JisPnLDs25nfFwgOwor5Ji6Pnpow6BufFwgOwor5Ji+Pmd1x45ufFwgOwor5JmAPmLEm25nfFwgOwor5JmHPm51x45ufFwgOwor5JmaPm5px45vfFwgOwor5JmbPmd1w6BufFwgOwor5JmcPmbDqW5nfFwgOwor5JmiPnrDqG5nfFwgOwor5JmlPmzDrW5nfFwgOwor5JmmPm3DqW5nfFwgOwor5JmpPm3DqW5nfFwgOwor5JmqPmzDs25nfFwgOwor5JmsPnnDrG5nfFwgOwor5JmuPmd1w6BufFwgOwor5Jm6Pmxpw6FufFwgOwor5Jm8PnNow6BvfFwgOwor5JqIPmp1w6BufFwgOwor5JqPPmzDqG5nfFwgOwor5JqTPm5px45ufFwgOwor5JqWPmzDrW5nfFwgOwor5JqYPmNow6lufFwgOwor5JqaPnhpx45ufFwgOwor5JqpPmppx45vfFwgOwor5JquPnLDqW5nfFwgOwor5JqyPnNow6BufFwgOwor5JuDPnfDoG5nfFwgOwor5JuEPnl1x45ufFwgOwor5JuGPnpow7J1fFwgOwor5JuHPnl1x45ufFwgOwor5JuSPmJpw6BufFwgOwor5JumPnPDsm5nfFwgOwor5JusPmNow7N1fFwgOwor5JutPnjDrG5nfFwgOwor5JuzPmppx45ufFwgOwor5Ju1PnNow7J1fFwgOwor5JyMPmx1w6FufFwgOwor5JyNPmxpw6FvfFwgOwor5JyYPmrHkG5nfFwgOwor5JybPmNow6FufFwgOwor5JydPnR1x45ufFwgOwor5JyfPmNow6lufFwgOwor5JyiPnhpx45ufFwgOwor5JyrPmjDs25nfFwgOwor5JysPnPHkm5nfFwgOwor5JyuPmxpw6FvfFwgOwor5J2APmxpw6FvfFwgOwor5J2LPnrDsm5nfFwgOwor5J2WPnpox45vfFwgOwor5J2gPmh1w6FufFwgOwor5J2oPnhpw6FufFwgOwor5J2pPnpow6hufFwgOwor5J2uPnh1w6BufFwgOwor5J26Pmd1w6BufFwgOwor5J28PnHDrW5nfFwgOwor5J6BPnhpw6BufFwgOwor5J6CPnJ1x45ufFwgOwor5J6EPmJpw6BvfFwgOwor5J6LPmNow6hufFwgOwor5J6NPnHDrW5nfFwgOwor5J6QPmNox5RufFwgOwor5J6RPmjDs25nfFwgOwor5J6SPmTDsm5nfFwgOwor5J67PnnHkm5nfFwgOwor5J68PmNodceQfFwgOwor5J+FPmppw6BufFwgOwor5J+LPnpox45ufFwgOwor5J+NPmRpw6FufFwgOwor5J+SPnF1w6FufFwgOwor5J+WPnTDoG5nfFwgOwor5J+YPmjDoG5nfFwgOwor5J+iPmNow6lufFwgOwor5J+lPm3DoW5nfFwgOwor5J+nPnRpw6FufFwgOwor5J+qPmbEm25nfFwgOwor5J+tPnRpw6FvfFwgOwor5J+wPmppx45ufFwgOwor5J+0Pnpow6hufFwgOwor5J+6PmLHjm5nfFwgOwor5KCEPnRpx45ufFwgOwor5KCbPmppx45vfFwgOwor5KCcPnLDs25nfFwgOwor5KCiPm3DqG5nfFwgOwor5KCjPnh1x45ufFwgOwor5KCoPmNow6BufFwgOwor5KCqPmR1w6BufFwgOwor5KCsPmTDqG5nfFwgOwor5KCuPnTDqW5nfFwgOwor5KCwPnF1w6FufFwgOwor5KCyPmzDrW5nfFwgOwor5KC3PnRpx45vfFwgOwor5KC8PmRpw6BvfFwgOwor5KC+PnNox45ufFwgOwor5KGAPnpox45ufFwgOwor5KGBPmzHkm5nfFwgOwor5KGGPnLDs25nfFwgOwor5KGJPmvHjm5nfFwgOwor5KGMPmjDs25nfFwgOwor5KGPPmjDs25nfFwgOwor5KGSPnRpw6FufFwgOwor5KGTPmp1w6BufFwgOwor5KGWPmrDrG5nfFwgOwor5KGXPmfHkm5nfFwgOwor5KGYPnRpw6FufFwgOwor5KGZPmzDoW5nfFwgOwor5KGiPmJpw6BufFwgOwor5KGlPnLDs25nfFwgOwor5KGmPnPHjm5nfFwgOwor5KGqPmNow6FufFwgOwor5KGrPnDDqW5nfFwgOwor5KGwPmvEm25nfFwgOwor5KGyPmNow6FufFwgOwor5KG8PmzDrW5nfFwgOwor5KG/PmzDrW5nfFwgOwor5KKFPmNow6lufFwgOwor5KKHPnLHkm5nfFwgOwor5KKIPmNow6lufFwgOwor5KKJPm7Ds25nfFwgOwor5KKNPmbHjm5nfFwgOwor5KKaPmfDsm5nfFwgOwor5KKgPnPDsm5nfFwgOwor5KKiPmPDoG5nfFwgOwor5KKnPmxpw6BvfFwgOwor5KK7PmNow6lufFwgOwor5KK+Pnhpx45ufFwgOwor5KOFPmNow6lufFwgOwor5KOGPnjDrW5nfFwgOwor5KOIPmjDoG5nfFwgOwor5KOKPmTHjm5nfFwgOwor5KORPmNow6FufFwgOwor5KOYPnTDoW5nfFwgOwor5KOjPmTHjm5nfFwgOwor5KOkPmppw6BvfFwgOwor5KOoPmNow7pufFwgOwor5KOpPmNow7pufFwgOwor5KSEPm1px45ufFwgOwor5KSKPnLDs25nfFwgOwor5KSRPnfDoG5nfFwgOwor5KSTPm3DqW5nfFwgOwor5KSUPmppw6BufFwgOwor5KSYPmNox45ufFwgOwor5KSdPnnDrG5nfFwgOwor5KSfPmNow6lufFwgOwor5KSrPmNow6FufFwgOwor5KStPmt1w6BufFwgOwor5KSvPnjDrW5nfFwgOwor5KSwPnfEm25nfFwgOwor5KS4Pnp1w6BufFwgOwor5KS8Pnhpw6BufFwgOwor5KWAPmNox45ufFwgOwor5KWCPm3DqG5nfFwgOwor5KWFPnFpw6BufFwgOwor5KWHPnNow6BufFwgOwor5KWOPmNow7pufFwgOwor5KWSPmNow7N1fFwgOwor5KWWPnRpw6FufFwgOwor5KWXPmt1x45ufFwgOwor5KWcPmppw6BufFwgOwor5KWePmppx45vfFwgOwor5KWiPmzDs25nfFwgOwor5KWlPmxpw6FufFwgOwor5KWnPmh1w6FufFwgOwor5KWqPnhpx45ufFwgOwor5KWwPm3DqG5nfFwgOwor5KW1Pnhpx45vfFwgOwor5KaCPnNow6BufFwgOwor5KaFPnNow6BufFwgOwor5KaIPmbHjm5nfFwgOwor5KaKPm5px45vfFwgOwor5KaOPmd1x45ufFwgOwor5KaQPnTHkG5nfFwgOwor5KaSPmTDoG5nfFwgOwor5KahPmh1w6FufFwgOwor5KalPnhpw6FufFwgOwor5KauPmNox5RufFwgOwor5KayPnFpw6BufFwgOwor5KazPmjDoG5nfFwgOwor5KeDPmRpw6BufFwgOwor5KeGPmjDs25nfFwgOwor5KeLPnhpx45ufFwgOwor5KeOPnh1w6BufFwgOwor5KeWPmppw6BufFwgOwor5KeZPmzDrW5nfFwgOwor5KebPmLDoG5nfFwgOwor5KecPnTDoW5nfFwgOwor5KefPnhpw6BufFwgOwor5KeuPnhpx45ufFwgOwor5KevPmNow6FufFwgOwor5KiFPmxpw6FvfFwgOwor5KiNPnnHkG5nfFwgOwor5KiOPmjDs25nfFwgOwor5KiYPnhpw6BufFwgOwor5KimPnDDoW5nfFwgOwor5KipPmzDrW5nfFwgOwor5KisPmxpw6FufFwgOwor5KivPnpow6hufFwgOwor5Ki3Pnhpw6BufFwgOwor5Ki7PmLDqG5nfFwgOwor5Ki/PnFpw6FufFwgOwor5KmEPnRpx45ufFwgOwor5KmFPnpox45ufFwgOwor5KmGPmppx45ufFwgOwor5KmMPnFpw6FvfFwgOwor5KmNPmxpx45vfFwgOwor5KmRPmjDs25nfFwgOwor5KmZPnh1w6BufFwgOwor5KmcPnpow7J1fFwgOwor5KmePm5pw6FufFwgOwor5KmmPnRpw6FvfFwgOwor5KmpPnl1x45ufFwgOwor5KmqPmd1x45ufFwgOwor5KmsPmLEm25nfFwgOwor5KmwPnh1w6BufFwgOwor5Km2PmNox45ufFwgOwor5Km4PnLDs25nfFwgOwor5Km8PmbDqW5nfFwgOwor5KqAPmd1x45ufFwgOwor5KqIPnFpx45ufFwgOwor5KqKPmzDs25nfFwgOwor5KqMPnpow6BufFwgOwor5KqSPmppw6BvfFwgOwor5KqcPmNow6BufFwgOwor5KqmPmjDs25nfFwgOwor5KqtPnJ1x45ufFwgOwor5KquPmNox5J1fFwgOwor5KqvPnnDrW5nfFwgOwor5Kq0PnpoxJtufFwgOwor5Kq7PmJpw6BufFwgOwor5KuDPmNow7pufFwgOwor5KuWPmNoxJtufFwgOwor5KuZPnPHjm5nfFwgOwor5KuhPnFpw6BufFwgOwor5KukPm3DrW5nfFwgOwor5KusPnpoxJtufFwgOwor5Ku1Pm1pw6FufFwgOwor5Ku5PmjDs25nfFwgOwor5Ku6PmjDs25nfFwgOwor5KyHPnl1w6BufFwgOwor5KyLPmzDqW5nfFwgOwor5KyWPmjDqW5nfFwgOwor5KyXPnnDoW5nfFwgOwor5KydPmjDqW5nfFwgOwor5KykPmNow6FvfFwgOwor5KynPnl1w6FufFwgOwor5KysPnnHjm5nfFwgOwor5KyvPm5pw6FufFwgOwor5KywPnNow6BvfFwgOwor5Ky6PnnDoG5nfFwgOwor5Ky7Pmppw6BufFwgOwor5Ky8Pnl1w6BufFwgOwor5K2IPmppw6BufFwgOwor5K2KPnnHkG5nfFwgOwor5K2QPnnDoG5nfFwgOwor5K2RPmxpw6FufFwgOwor5K2VPmppw6BufFwgOwor5K2XPnnHkG5nfFwgOwor5K2dPmt1w6BpfFwgOwor5K2gPmppx45ufFwgOwor5K2iPm7DrW5nfFwgOwor5K2kPnFpx45ufFwgOwor5K2oPnNodcOsfFwgOwor5K2tPnNox5J1fFwgOwor5K2wPmLEm25nfFwgOwor5K20Pmh1w6FufFwgOwor5K6BPnBpw6FufFwgOwor5K6EPnh1w6FufFwgOwor5K6NPm5px45vfFwgOwor5K6TPnpow6BvfFwgOwor5K6VPmNodcOyfFwgOwor5K6aPmzDqG5nfFwgOwor5K6dPmh1w6FufFwgOwor5K60PmTDqG5nfFwgOwor5K61PnTDs25nfFwgOwor5K6+PnDDoW5nfFwgOwor5K6/Pmppx45ufFwgOwor5K+NPmzDrW5nfFwgOwor5K+SPmjDqW5nfFwgOwor5K+WPmzDoW5nfFwgOwor5K+YPmh1w6BufFwgOwor5K+bPmppx45ufFwgOwor5K+hPmppx45ufFwgOwor5K+kPmt1w6BpfFwgOwor5K+nPnHHkG5nfFwgOwor5K++PnRpw6FvfFwgOwor5LCDPnDDqW5nfFwgOwor5LCMPnrHkm5nfFwgOwor5LCSPm3DqW5nfFwgOwor5LCTPm1pw6FufFwgOwor5LCWPmN1w6FufFwgOwor5LCdPnrDqG5nfFwgOwor5LCgPnNow6lufFwgOwor5LCiPnjDrG5nfFwgOwor5LCjPnfHjm5nfFwgOwor5LCrPmNow6FvfFwgOwor5LCxPmzDrW5nfFwgOwor5LC3PmLDoG5nfFwgOwor5LGBPnFpw6FvfFwgOwor5LGHPnNow6BufFwgOwor5LGJPnNow6BufFwgOwor5LGNPmfDqG5nfFwgOwor5LGOPmfDqG5nfFwgOwor5LGTPnTDrW5nfFwgOwor5LGUPnRpw6FvfFwgOwor5LGgPnpow6BufFwgOwor5LGkPnhpw6BufFwgOwor5LGtPmfDqG5nfFwgOwor5LG0PmfDqG5nfFwgOwor5LG2PmzDoW5nfFwgOwor5LG8Pnpox45ufFwgOwor5LG/PmNow6BufFwgOwor5LKCPnh1w6FufFwgOwor5LKMPmt1x45ufFwgOwor5LKNPnTDqW5nfFwgOwor5LKUPnHDrW5nfFwgOwor5LKWPmNow7N1fFwgOwor5LKXPnhpw6FufFwgOwor5LKYPmd1x45ufFwgOwor5LKbPm3DqW5nfFwgOwor5LKiPnTDqW5nfFwgOwor5LKoPmjDs25nfFwgOwor5LKuPnl1w6FufFwgOwor5LKxPmbHjm5nfFwgOwor5LKzPmjDoW5nfFwgOwor5LK0Pnpow6hufFwgOwor5LK7Pnh1w6FufFwgOwor5LK+PnFpx45vfFwgOwor5LOCPnRpw6FvfFwgOwor5LOLPnTDs25nfFwgOwor5LOSPnl1w6FufFwgOwor5LOZPnjHkG5nfFwgOwor5LOePmLEm25nfFwgOwor5LOgPmNodcOtfFwgOwor5LOjPnl1w6FufFwgOwor5LOqPmp1w6BufFwgOwor5LOyPnpow6hufFwgOwor5LO3PmPDs25nfFwgOwor5LSAPnTDs25nfFwgOwor5LSCPmjDoG5nfFwgOwor5LSHPmzDrW5nfFwgOwor5LSJPnh1w6FufFwgOwor5LSLPnh1w6FufFwgOwor5LSMPm3DqW5nfFwgOwor5LSSPmzDrW5nfFwgOwor5LSaPmfHjm5nfFwgOwor5LSbPmppx45vfFwgOwor5LScPmh1w6FpfFwgOwor5LSfPmh1w6FufFwgOwor5LSpPnBpw6FvfFwgOwor5LSrPmzDrW5nfFwgOwor5LSuPnNow6BufFwgOwor5LS1PmLHkG5nfFwgOwor5LS2PnDDqW5nfFwgOwor5LS8PmNox45ufFwgOwor5LS/Pm3DqW5nfFwgOwor5LWGPm3DqW5nfFwgOwor5LWHPnhpw6BufFwgOwor5LWQPmNox45ufFwgOwor5LWUPmTHkm5nfFwgOwor5LWWPmppw6BufFwgOwor5LWbPmppw6BufFwgOwor5LWcPm7Hkm5nfFwgOwor5LWePmrDrG5nfFwgOwor5LWhPmppx45ufFwgOwor5LWkPmppx45ufFwgOwor5LWoPm3DoW5nfFwgOwor5LWuPnnDoG5nfFwgOwor5LWvPnR1x45ufFwgOwor5LWyPmRpw6BvfFwgOwor5LW6PnTHkG5nfFwgOwor5LaCPnpodcOzfFwgOwor5LaEPnDDrW5nfFwgOwor5LaHPnpow7J1fFwgOwor5LaQPmt1w6BpfFwgOwor5LafPnhpw6BufFwgOwor5LagPmppx45ufFwgOwor5LaiPnhpw6FufFwgOwor5LaxPnTDs25nfFwgOwor5LiPPm1px45ufFwgOwor5LiSPmNox5J1fFwgOwor5LimPmLDrG5nfFwgOwor5LiuPmd1w6BufFwgOwor5LixPmd1w6BufFwgOwor5LizPmNox45ufFwgOwor5Li8PmrHkG5nfFwgOwor5LmqPm7EgW5nfFwgOwor5LqCPmx1w6BufFwgOwor5LqQPmfDqG5nfFwgOwor5LqjPnDEk25nfFwgOwor5LqwPmrEq25nfFwgOwor5Lq3Pmxpw6FufFwgOwor5Lq+PnfDoW5nfFwgOwor5LuMPmLEq25nfFwgOwor5LuaPnhpxIFufFwgOwor5LucPmjDs25nfFwgOwor5LumPmNow6BvfFwgOwor5Lu5PmbEk25nfFwgOwor5Lu6PmPEgW5nfFwgOwor5LyEPmRpw6BvfFwgOwor5LyWPnTHjm5nfFwgOwor5LyjPnhpw6BufFwgOwor5LytPnh1w6FufFwgOwor5Ly3Pnpow7J1fFwgOwor5Ly7PmLEk25nfFwgOwor5L2LPnNow6BvfFwgOwor5L2SPnnEgW5nfFwgOwor5L2UPnpow6BufFwgOwor5L2hPnh1xIFufFwgOwor5L2yPm3DrW5nfFwgOwor5L21PmLDrG5nfFwgOwor5L26PnF1w6FufFwgOwor5L6APnjDrW5nfFwgOwor5L6BPnNoxJNufFwgOwor5L6cPnpoxY11fFwgOwor5L6fPmppw6BufFwgOwor5L6rPm7DrG5nfFwgOwor5L6yPnpow6hufFwgOwor5L60PmNox5J1fFwgOwor5L65PnTHkG5nfFwgOwor5L66PnNow6hufFwgOwor5L+NPmzDoW5nfFwgOwor5L+TPmrDrG5nfFwgOwor5L+UPnhpw6BufFwgOwor5L+bPm1px45ufFwgOwor5L+yPnhpw6BvfFwgOwor5L+0Pmppw6BufFwgOwor5L+1PmJpx45vfFwgOwor5L+/Pmppw6BufFwgOwor5YCCPmLDrG5nfFwgOwor5YCJPmPEgW5nfFwgOwor5YCKPnrDsm5nfFwgOwor5YCOPnRpxIFufFwgOwor5YCVPmNodcOtfFwgOwor5YCWPnjDrG5nfFwgOwor5YCXPnDDqW5nfFwgOwor5YCePmrDrG5nfFwgOwor5YCjPmbHjm5nfFwgOwor5YCnPnrFjW5nfFwgOwor5YCvPnPFjW5nfFwgOwor5YCwPmzDqW5nfFwgOwor5YCyPmTFjW5nfFwgOwor5YC5Pmppx45ufFwgOwor5YGAPnnEq25nfFwgOwor5YGCPmppxIFufFwgOwor5YGEPm51w6BufFwgOwor5YGGPmNox5RufFwgOwor5YGLPmLHkG5nfFwgOwor5YGRPmbEk25nfFwgOwor5YGSPnTHjm5nfFwgOwor5YGhPnpow6BufFwgOwor5YGiPmNox5J1fFwgOwor5YGtPm1px45ufFwgOwor5YGzPmR1xIFufFwgOwor5YG1PnpoxJNufFwgOwor5YKGPnl1w6BufFwgOwor5YKHPnLHkm5nfFwgOwor5YKOPmRpxIFufFwgOwor5YKPPnTDoW5nfFwgOwor5YKTPnNow6BufFwgOwor5YKUPnFpw6BufFwgOwor5YKWPmPEgW5nfFwgOwor5YKaPnhpw6BvfFwgOwor5YKbPnnHkm5nfFwgOwor5YKfPnnHjm5nfFwgOwor5YKhPmLDrG5nfFwgOwor5YKtPnnFjW5nfFwgOwor5YKvPnrHkm5nfFwgOwor5YKwPnDDqW5nfFwgOwor5YKxPnPHkm5nfFwgOwor5YK1Pnpow6BpfFwgOwor5YK5PmrDrG5nfFwgOwor5YK+PnHEq25nfFwgOwor5YOEPnBpw6BvfFwgOwor5YOGPmxpw6FufFwgOwor5YOJPnFpxIFufFwgOwor5YOKPnhpxIFufFwgOwor5YOMPnnDrW5nfFwgOwor5YONPmTDsm5nfFwgOwor5YOQPnNow6BufFwgOwor5YORPnFpw6FvfFwgOwor5YOcPmTDqG5nfFwgOwor5YOdPmNow6FufFwgOwor5YOjPmppw6BufFwgOwor5YOlPmppx45vfFwgOwor5YOpPnhpw6BufFwgOwor5YOsPmppxIFvfFwgOwor5YO0Pnhpw6BufFwgOwor5YO6PnFpw6BvfFwgOwor5YO8PmbEk25nfFwgOwor5YO9Pnpow7J1fFwgOwor5YSCPm7Ds25nfFwgOwor5YSDPmNow6FufFwgOwor5YSFPmTEgW5nfFwgOwor5YSIPmt1w6BpfFwgOwor5YSJPmppx45ufFwgOwor5YSMPmppx45vfFwgOwor5YSUPmNow7N1fFwgOwor5YSVPmNow6FpfFwgOwor5YSZPnFpw6BufFwgOwor5YSaPm3DqW5nfFwgOwor5YScPm7DrW5nfFwgOwor5YSmPmJpxIFvfFwgOwor5YSsPmNow6hufFwgOwor5YStPmNow6hufFwgOwor5YSvPnTDqW5nfFwgOwor5YSxPmzHkm5nfFwgOwor5YSzPmNow6BufFwgOwor5YS0PnLDoW5nfFwgOwor5YS7PnTHjm5nfFwgOwor5YS+Pm7DoG5nfFwgOwor5YWbPnFpxIFufFwgOwor5YWfPnNoxJNufFwgOwor5YWmPnfDoW5nfFwgOwor5YWyPnRpxIFufFwgOwor5YaBPmNox45ufFwgOwor5YaGPnl1xIFufFwgOwor5YaRPnpow7J1fFwgOwor5YahPm3DqW5nfFwgOwor5YarPmLEq25nfFwgOwor5YauPmfEgW5nfFwgOwor5Ya/PmppxIFufFwgOwor5YeIPmrDrG5nfFwgOwor5YeKPnHDrW5nfFwgOwor5YeNPmTDsm5nfFwgOwor5YeUPmPEgW5nfFwgOwor5YeVPm3HkG5nfFwgOwor5YeWPnpox5RufFwgOwor5YeoPmbEk25nfFwgOwor5YesPmbEk25nfFwgOwor5YeuPmbEk25nfFwgOwor5Ye0PnDDrW5nfFwgOwor5Ye3Pmt1w6BpfFwgOwor5Ye8PmTDoG5nfFwgOwor5YiLPnFpw6BufFwgOwor5YiiPmzDrW5nfFwgOwor5YiqPnNoxIFufFwgOwor5YisPmNox45ufFwgOwor5YmEPmrHkG5nfFwgOwor5YmIPnl1xIFufFwgOwor5YmXPmNox45ufFwgOwor5YmbPmfEgW5nfFwgOwor5YmgPnHDrW5nfFwgOwor5YmiPnpodcOzfFwgOwor5YmjPmppw6BufFwgOwor5YmsPmR1xIFufFwgOwor5YmxPmppw6BufFwgOwor5Ym2Pmp1xIFufFwgOwor5Ym3PmNox45ufFwgOwor5Ym4PnR1w6FufFwgOwor5Ym5PmNoxIFvfFwgOwor5Ym8PnNoxIFufFwgOwor5YqGPmxpw6FufFwgOwor5YqLPmppx45vfFwgOwor5YqNPmppw6BufFwgOwor5YqOPmppw6BufFwgOwor5YqPPnTEgW5nfFwgOwor5YqSPmppw6BufFwgOwor5YqUPmppw6BufFwgOwor5YqWPmNow6FufFwgOwor5YqXPmN1w6FufFwgOwor5YqlPmvEk25nfFwgOwor5YqwPm1px45vfFwgOwor5Yq1Pmp1w6BufFwgOwor5Yq3PnnDoW5nfFwgOwor5Yq5Pnhpw6BvfFwgOwor5YuGPmzDoW5nfFwgOwor5YuIPnnHkm5nfFwgOwor5YuMPmp1w6BufFwgOwor5YuNPnHDrW5nfFwgOwor5YuUPm1px45ufFwgOwor5YuVPmTDsm5nfFwgOwor5YucPnfEm25nfFwgOwor5YuhPnBpw6BvfFwgOwor5YumPmNoxIFvfFwgOwor5YunPnF1w6BufFwgOwor5YuoPnnHjm5nfFwgOwor5YusPmp1w6BufFwgOwor5YutPnTDs25nfFwgOwor5Yu3PnLDoW5nfFwgOwor5Yu4PnF1w6BufFwgOwor5YyJPnDEk25nfFwgOwor5YyRPmfFjW5nfFwgOwor5YyaPmbEgW5nfFwgOwor5YyfPmvDoG5nfFwgOwor5YylPmJpw6BufFwgOwor5YyoPnrEgW5nfFwgOwor5YyyPmxpw6FufFwgOwor5YyzPmxpw6FufFwgOwor5Yy0PnN1x45ufFwgOwor5Y2EPm5pw6BufFwgOwor5Y2yPnNow6BvfFwgOwor5Y6QPnDDoW5nfFwgOwor5Y6WPnDDoW5nfFwgOwor5Y6bPnTEq25nfFwgOwor5Y6hPnl1w6FufFwgOwor5Y61Pnl1w6FufFwgOwor5Y63PmfFjW5nfFwgOwor5Y+OPnNoxY11fFwgOwor5Y+PPmd1w6BpfFwgOwor5Y+VPnpodcOzfFwgOwor5Y+iPmPDs25nfFwgOwor5Y+/PmjFjW5nfFwgOwor5ZCCPm3DoW5nfFwgOwor5ZCFPnh1xIFufFwgOwor5ZCcPmNox5J1fFwgOwor5ZCwPmjDs25nfFwgOwor5ZC3PmNodcSrfFwgOwor5ZC9PmjFjW5nfFwgOwor5ZGMPmppw6BvfFwgOwor5ZGNPmjFjW5nfFwgOwor5ZGfPnF1x45ufFwgOwor5ZGqPnpow7J1fFwgOwor5ZGvPnDDrW5nfFwgOwor5ZG6PnhpxIFvfFwgOwor5ZKJPnnEgW5nfFwgOwor5ZKePnhpw6BufFwgOwor5ZKuPnpow7J1fFwgOwor5ZKyPnhpw6BvfFwgOwor5ZK2Pmh1w6BpfFwgOwor5ZK6Pnh1x45ufFwgOwor5ZODPnTDs25nfFwgOwor5ZOhPnl1w6FufFwgOwor5ZOiPmzDsm5nfFwgOwor5ZOkPm3DoW5nfFwgOwor5ZOvPnhpw6BufFwgOwor5ZO+PnNodcWNfFwgOwor5ZSMPnhpw6FufFwgOwor5ZSNPmh1x45ufFwgOwor5ZSVPmfDsm5nfFwgOwor5ZSdPmjHkm5nfFwgOwor5ZS4Pm5pw6BufFwgOwor5ZS6PnRpx45ufFwgOwor5ZWFPnpodcOzfFwgOwor5ZWIPmjDqG5nfFwgOwor5ZWLPnhpxIFvfFwgOwor5ZWjPnhpw6FufFwgOwor5ZWoPnHEq25nfFwgOwor5ZWzPnF1w6FufFwgOwor5ZW0PmNox45ufFwgOwor5ZW6PnTDoW5nfFwgOwor5ZaMPnpoxY11fFwgOwor5ZaNPmNow6FpfFwgOwor5ZaVPm1px45ufFwgOwor5ZaaPmh1w6BufFwgOwor5ZabPmh1w6BufFwgOwor5ZaqPnPEgW5nfFwgOwor5ZasPnFpw6FvfFwgOwor5Za2PnnDrW5nfFwgOwor5ZeIPnnFjW5nfFwgOwor5ZeKPmjHkm5nfFwgOwor5ZeZPnDHjm5nfFwgOwor5ZebPnhpw6FufFwgOwor5Ze5Pmxpw6FufFwgOwor5ZiCPmppw6BvfFwgOwor5ZiEPmppxIFvfFwgOwor5ZiLPnhpxIFvfFwgOwor5ZiQPnhpxIFvfFwgOwor5ZiVPnhpxIFufFwgOwor5ZihPnTEgW5nfFwgOwor5ZimPmppw6BvfFwgOwor5ZioPnhpw6BvfFwgOwor5ZivPnhpw6BvfFwgOwor5Zi1PnhpxIFvfFwgOwor5Zi6PnFpw6FvfFwgOwor5ZmSPmxpw6FufFwgOwor5ZmfPnnDrG5nfFwgOwor5ZmjPnpodcOzfFwgOwor5ZmlPm7Ds25nfFwgOwor5ZmtPmppw6BvfFwgOwor5ZmuPnl1xIFufFwgOwor5ZmwPnnFjW5nfFwgOwor5ZmyPmt1w6BpfFwgOwor5Zm5PmTEgW5nfFwgOwor5ZqAPm7DrW5nfFwgOwor5ZqLPmNow7N1fFwgOwor5ZqiPm7DoW5nfFwgOwor5ZqoPmzDs25nfFwgOwor5ZqqPnLEgW5nfFwgOwor5ZqrPmNow6hufFwgOwor5Zq1PmNow6FufFwgOwor5Zq2PnnEq25nfFwgOwor5Zq4PmRpx45ufFwgOwor5Zq7PnhpxIFvfFwgOwor5Zq9PmNodcOyfFwgOwor5Zq+Pmh1xIFufFwgOwor5ZuCPnhpxIFvfFwgOwor5ZuFPmNox45ufFwgOwor5ZuGPmNow6BpfFwgOwor5ZuPPmppxIFufFwgOwor5ZujPnR1w6FufFwgOwor5ZulPmvDoG5nfFwgOwor5ZumPnl1xIFufFwgOwor5ZuoPnBpxIFufFwgOwor5ZuqPmPFjW5nfFwgOwor5ZuyPnTFjW5nfFwgOwor5ZuzPmp1w6BufFwgOwor5ZyKPnHEq25nfFwgOwor5ZyMPmNodcOtfFwgOwor5ZyOPnl1w6FufFwgOwor5ZyPPnF1xIFufFwgOwor5ZySPnl1w6FufFwgOwor5ZyTPnl1w6FufFwgOwor5ZyYPnR1w6FufFwgOwor5ZydPmx1w6FufFwgOwor5ZyePmx1w6FufFwgOwor5ZyiPnTEq25nfFwgOwor5ZyyPnFpxIFufFwgOwor5Zy0PnpodcOzfFwgOwor5Zy1PmTDoG5nfFwgOwor5Z2IPmbDoW5nfFwgOwor5Z2TPnjDrW5nfFwgOwor5Z2VPmrEq25nfFwgOwor5Z2ZPmrEq25nfFwgOwor5Z2rPmRpw6BufFwgOwor5Z2xPnnEgW5nfFwgOwor5Z29PmzDrW5nfFwgOwor5Z6XPnpow6BvfFwgOwor5Z6fPnnDoW5nfFwgOwor5Z6oPnNox5J1fFwgOwor5Z6sPmjDs25nfFwgOwor5Z6xPmTDoG5nfFwgOwor5Z62PnjEq25nfFwgOwor5Z63Pnhpw6BufFwgOwor5Z65PmLEgW5nfFwgOwor5Z+APmNodcOtfFwgOwor5Z+EPnDDqW5nfFwgOwor5Z+FPmbDoW5nfFwgOwor5Z+HPnnHkm5nfFwgOwor5Z+MPmzDoG5nfFwgOwor5Z+NPnh1w6BufFwgOwor5Z+iPmp1x45ufFwgOwor5Z+qPmvFjW5nfFwgOwor5Z+sPmTFjW5nfFwgOwor5Z+yPmLEm25nfFwgOwor5Z+7Pnpox5RufFwgOwor5aCFPmppxIFufFwgOwor5aCIPmfEgW5nfFwgOwor5aCLPnDDqW5nfFwgOwor5aCOPmzDrW5nfFwgOwor5aCcPmxpw6BufFwgOwor5aCnPnJ1w6FufFwgOwor5aCrPnrFjW5nfFwgOwor5aC4PmbDqW5nfFwgOwor5aC7PnpoxJNufFwgOwor5aC8PmbEk25nfFwgOwor5aC9PmfEgW5nfFwgOwor5aC/Pmppx45ufFwgOwor5aGFPmR1w6BufFwgOwor5aGHPnh1xIFufFwgOwor5aGKPmt1w6BpfFwgOwor5aGLPnnDrW5nfFwgOwor5aGOPnnHkm5nfFwgOwor5aGVPnfEm25nfFwgOwor5aGcPnDDqW5nfFwgOwor5aGdPmLDoG5nfFwgOwor5aGfPnrDoG5nfFwgOwor5aGhPnRpw6FufFwgOwor5aGmPnpow6hufFwgOwor5aGoPmfFjW5nfFwgOwor5aGxPmzHjm5nfFwgOwor5aGzPnDDqW5nfFwgOwor5aG0PmLDqG5nfFwgOwor5aG1PmNow6lufFwgOwor5aG5PnFpw6BufFwgOwor5aKCPmJpxIFvfFwgOwor5aKKPmRpw6BufFwgOwor5aKLPmNoxJtufFwgOwor5aKXPnrEk25nfFwgOwor5aKcPnpodcOsfFwgOwor5aKdPnFpxIFvfFwgOwor5aKgPnNow6BufFwgOwor5aKhPnNow6BufFwgOwor5aKlPmTHkm5nfFwgOwor5aKxPmTDqG5nfFwgOwor5aK9PnFpxIFvfFwgOwor5aOCPmRpw6BufFwgOwor5aOGPnh1xIFufFwgOwor5aOKPmh1w6BpfFwgOwor5aOLPmTDoG5nfFwgOwor5aOMPnLHjm5nfFwgOwor5aONPnFpw6BufFwgOwor5aOWPnJ1w6FufFwgOwor5aOePmh1w6BpfFwgOwor5aOfPmzHkm5nfFwgOwor5aOgPmzHkm5nfFwgOwor5aO9PnNow7J1fFwgOwor5aO+Pm3Hjm5nfFwgOwor5aSAPnNow7J1fFwgOwor5aSGPmbEk25nfFwgOwor5aSJPmJpw6BufFwgOwor5aSMPmzDrW5nfFwgOwor5aSXPnl1w6BufFwgOwor5aSdPnHDrW5nfFwgOwor5aSiPm3DqG5nfFwgOwor5aSmPmNow6hufFwgOwor5aSsPmd1w6BpfFwgOwor5aWGPnF1x45ufFwgOwor5aWMPmRpx45ufFwgOwor5aWQPmh1w6BufFwgOwor5aWdPmRpxIFvfFwgOwor5aWfPmvEk25nfFwgOwor5aWjPnfEm25nfFwgOwor5aWpPmxpw6FufFwgOwor5aWxPmxpw6FufFwgOwor5aW1PmTEq25nfFwgOwor5aW3PnFpxIFufFwgOwor5aW+PnhpxIFufFwgOwor5aaFPmjDs25nfFwgOwor5aaMPmrDrG5nfFwgOwor5aaUPmvEk25nfFwgOwor5aamPmbEk25nfFwgOwor5aanPnl1w6FufFwgOwor5aaxPnpoxIFvfFwgOwor5aa2Pnh1w6FufFwgOwor5aa9PnNoxJNufFwgOwor5aeIPmzDrW5nfFwgOwor5aeNPnNoxIFufFwgOwor5aeOPnnEgW5nfFwgOwor5aeVPmppx45vfFwgOwor5aebPnTHkm5nfFwgOwor5aeiPmp1xIFufFwgOwor5aemPmppxIFufFwgOwor5aenPmppxIFufFwgOwor5aepPm5pw6BufFwgOwor5aetPnhpw6BufFwgOwor5aeuPmjDqW5nfFwgOwor5aezPm3HkG5nfFwgOwor5ae6PnNoxJNufFwgOwor5ae+PnF1xIFufFwgOwor5aiAPnPFjW5nfFwgOwor5aiCPmjDs25nfFwgOwor5aiKPnhpw6BufFwgOwor5aiLPnNow6BvfFwgOwor5aiOPnhpw6BvfFwgOwor5aiPPm3DoW5nfFwgOwor5aiWPmNodcOyfFwgOwor5aiXPmTDrG5nfFwgOwor5aiZPnjDrW5nfFwgOwor5ai3PnNodcOsfFwgOwor5ai5Pnhpw6FufFwgOwor5ai6PnpodcSrfFwgOwor5ai7PmTFjW5nfFwgOwor5amCPm1pw6FufFwgOwor5amDPmPDs25nfFwgOwor5amIPmTDrW5nfFwgOwor5amLPnhpxIFvfFwgOwor5amRPmp1w6BufFwgOwor5amWPnRpxIFufFwgOwor5amYPnF1w6FufFwgOwor5amZPmrDrG5nfFwgOwor5ambPmrEq25nfFwgOwor5amcPnFpxIFufFwgOwor5amdPmRpw6BufFwgOwor5amePnjDrG5nfFwgOwor5amhPmNodcOyfFwgOwor5amkPmNoxY11fFwgOwor5amlPmNodcOyfFwgOwor5amwPmRpx45ufFwgOwor5amxPnhpw6FufFwgOwor5am4PmTDoG5nfFwgOwor5aqGPnJ1x45ufFwgOwor5aqKPnFpw6FufFwgOwor5aqLPmNoxatufFwgOwor5aqPPmR1xIFufFwgOwor5aqUPm1pw6FufFwgOwor5aqWPnnEq25nfFwgOwor5aqXPnh1xIFufFwgOwor5aqcPnpoxJNufFwgOwor5aqhPmxpw6BufFwgOwor5aqlPnBpxIFufFwgOwor5aq0Pnl1w6FufFwgOwor5aq2PnLDs25nfFwgOwor5auDPnpoxJNufFwgOwor5auEPnl1w6FufFwgOwor5auGPnnDs25nfFwgOwor5auHPm3DrW5nfFwgOwor5auIPnnEq25nfFwgOwor5auLPm5px45vfFwgOwor5auOPnDDoW5nfFwgOwor5auPPmzDoW5nfFwgOwor5auZPnh1w6FufFwgOwor5audPmvEgW5nfFwgOwor5auePnnDs25nfFwgOwor5au2Pmppw6FvfFwgOwor5au4Pnpox45ufFwgOwor5au6Pnhpw6FufFwgOwor5au7Pnhpw6FufFwgOwor5au9Pmxpw6FvfFwgOwor5au+Pmxpw6FufFwgOwor5ayBPmTEk25nfFwgOwor5ayLPmNow6FufFwgOwor5ayMPmppxIFvfFwgOwor5ayQPnhpxIFufFwgOwor5ayTPmppw6BvfFwgOwor5ayaPmxpx45ufFwgOwor5aybPmh1w6FufFwgOwor5aydPm5px45vfFwgOwor5ayePmTHkm5nfFwgOwor5ayjPm7DqW5nfFwgOwor5aylPnRpx45vfFwgOwor5aymPmNow7N1fFwgOwor5ayrPnnFjW5nfFwgOwor5ayvPm5px45vfFwgOwor5aywPnnEq25nfFwgOwor5ay1Pm1pw6FufFwgOwor5ay4PnNoxJtufFwgOwor5ay5PnjDrG5nfFwgOwor5ay9Pnl1xIFufFwgOwor5a2BPmzDrW5nfFwgOwor5a2CPmppx45vfFwgOwor5a2FPnhpxIFufFwgOwor5a2GPnnEq25nfFwgOwor5a2JPnF1w6FufFwgOwor5a2MPmx1w6FufFwgOwor5a2uPmPDs25nfFwgOwor5a2vPnFpxIFufFwgOwor5a2+PnnEq25nfFwgOwor5a2/Pmx1w6FufFwgOwor5a6RPmrHkG5nfFwgOwor5a6SPnpoxatufFwgOwor5a6UPnl1xIFufFwgOwor5a6WPmjDs25nfFwgOwor5a6oPnRpx45vfFwgOwor5a6uPmfFjW5nfFwgOwor5a6vPnhpxIFvfFwgOwor5a+DPnl1xIFufFwgOwor5a+IPnHEq25nfFwgOwor5a+KPnpoxJNufFwgOwor5a+LPmppx45ufFwgOwor5a+NPm7DrW5nfFwgOwor5a+OPmLDrG5nfFwgOwor5a+PPmh1w6FufFwgOwor5a+VPm7DrW5nfFwgOwor5a+XPm7DrW5nfFwgOwor5a+bPmt1xIFufFwgOwor5a+cPm7DrW5nfFwgOwor5a+nPm7DrW5nfFwgOwor5a+pPnNoxJtufFwgOwor5a+sPmt1xIFufFwgOwor5a+3PmbEk25nfFwgOwor5bCePmxpw6BvfFwgOwor5bCfPnhpx45ufFwgOwor5bCgPnhpx45ufFwgOwor5bCjPm3DqW5nfFwgOwor5bCmPmxpw6BvfFwgOwor5bCoPm3DoW5nfFwgOwor5bCqPnfEgW5nfFwgOwor5bCrPnfEgW5nfFwgOwor5bGHPnRpw6FufFwgOwor5bGMPmRpx45vfFwgOwor5bGSPmNow6lufFwgOwor5bGbPnDDrW5nfFwgOwor5bGkPmPDqW5nfFwgOwor5bGqPmxpw6FvfFwgOwor5bGzPnhpxIFufFwgOwor5bG4PmzDs25nfFwgOwor5bG+PnNoxJNufFwgOwor5bKNPnFpxIFufFwgOwor5bKPPnl1w6FufFwgOwor5bKSPnFpw6FufFwgOwor5bKfPnnHjm5nfFwgOwor5bKhPmfEgW5nfFwgOwor5bKnPnRpw6FvfFwgOwor5bK5PnRpw6FvfFwgOwor5bK6PmzDrW5nfFwgOwor5bK9PmTFjW5nfFwgOwor5bOCPnTDs25nfFwgOwor5bORPnF1w6FufFwgOwor5bOaPmTDsm5nfFwgOwor5bOdPnTDs25nfFwgOwor5bOePnFpw6FvfFwgOwor5bOnPmppxIFvfFwgOwor5bOvPmbEk25nfFwgOwor5bO0Pnhpw6BufFwgOwor5bO1PmjDs25nfFwgOwor5bO3PnNoxJNufFwgOwor5bO6PmfEm25nfFwgOwor5bSAPmzDoG5nfFwgOwor5bSEPnhpx45ufFwgOwor5bSXPmfEgW5nfFwgOwor5bSaPmzDqW5nfFwgOwor5bSgPmTFjW5nfFwgOwor5bSsPmTFjW5nfFwgOwor5bS1PnnDoW5nfFwgOwor5bS2PmbEk25nfFwgOwor5bWIPmh1x45ufFwgOwor5bWJPnTDrW5nfFwgOwor5bWPPnrFjW5nfFwgOwor5bWiPmPEgW5nfFwgOwor5bWjPmTEgW5nfFwgOwor5bWkPmjDs25nfFwgOwor5bWqPnFpxIFvfFwgOwor5bWtPmLEk25nfFwgOwor5bWuPmRpxIFufFwgOwor5bWxPnnHkm5nfFwgOwor5bW3PnPHkm5nfFwgOwor5bW4PnrFjW5nfFwgOwor5bW7PmvEgW5nfFwgOwor5bW8PmNox45ufFwgOwor5bW/PmTHkG5nfFwgOwor5baDPnpox45ufFwgOwor5baEPnpox45ufFwgOwor5baQPmzDs25nfFwgOwor5baSPmPDqW5nfFwgOwor5baVPmppxIFvfFwgOwor5baYPnpow6BufFwgOwor5baaPmxpw6FvfFwgOwor5babPmxpw6FvfFwgOwor5bagPmppw6BvfFwgOwor5bajPnFpw6FvfFwgOwor5bamPnpoxIFufFwgOwor5bauPnhpx45ufFwgOwor5ba4PnLDs25nfFwgOwor5ba6PmzHkG5nfFwgOwor5beDPmzDs25nfFwgOwor5beEPmzDs25nfFwgOwor5beGPnnDrW5nfFwgOwor5beJPmNow6FufFwgOwor5beKPnnHkG5nfFwgOwor5bePPnF1w6FufFwgOwor5beQPmNox45vfFwgOwor5beRPmN1w6FufFwgOwor5beSPmx1w6FufFwgOwor5beTPmRpxIFufFwgOwor5beUPmRpxIFufFwgOwor5begPmrEq25nfFwgOwor5bejPmNow6FvfFwgOwor5be2PnpoxIFvfFwgOwor5be4Pmp1x45ufFwgOwor5be7Pmp1w6BufFwgOwor5biEPmTEq25nfFwgOwor5bihPnDDrW5nfFwgOwor5bijPmp1w6BufFwgOwor5bioPnNodcOsfFwgOwor5bipPnFpw6BvfFwgOwor5biqPnpoxJNufFwgOwor5bixPmNow7N1fFwgOwor5biyPmppxIFufFwgOwor5bmHPmLEgW5nfFwgOwor5bmIPnDDrW5nfFwgOwor5bmKPmfFjW5nfFwgOwor5bmQPmrHkG5nfFwgOwor5bmTPnNoxIFufFwgOwor5bmWPmJpxIFvfFwgOwor5bmaPmLEgW5nfFwgOwor5bmdPmNox45ufFwgOwor5bmnPnFpxIFvfFwgOwor5bmoPmNoxIFufFwgOwor5bmqPm3DqW5nfFwgOwor5bmrPmLEgW5nfFwgOwor5bmsPmNow7N1fFwgOwor5bmwPnhpx45ufFwgOwor5bm1PnFpxIFufFwgOwor5bm3PmLDrG5nfFwgOwor5bqBPnTEq25nfFwgOwor5bqdPnTDs25nfFwgOwor5bqjPnRpxIFvfFwgOwor5bqoPnhpxIFvfFwgOwor5bqsPnDDoW5nfFwgOwor5bqwPmTEq25nfFwgOwor5bq6PnPFjW5nfFwgOwor5bq/Pm1pw6BvfFwgOwor5buMPmppw6BufFwgOwor5buOPnHHkG5nfFwgOwor5bufPm1pw6BvfFwgOwor5bulPmt1w6BpfFwgOwor5bupPmLHkG5nfFwgOwor5burPmxpw6FvfFwgOwor5buuPnnDrW5nfFwgOwor5buvPnhpxIFufFwgOwor5buwPnTEq25nfFwgOwor5buxPnnFjW5nfFwgOwor5buzPnTEq25nfFwgOwor5bu+PmfHkm5nfFwgOwor5byJPnrDoG5nfFwgOwor5byUPmRpw6BvfFwgOwor5byePnNoxJtufFwgOwor5byoPmNoxIFvfFwgOwor5byqPmrDrG5nfFwgOwor5byrPnpoxJtufFwgOwor5byuPnF1xIFufFwgOwor5bywPnNoxIFvfFwgOwor5byyPnh1xIFufFwgOwor5byzPmrDrG5nfFwgOwor5by4PmLEk25nfFwgOwor5by/Pmppx45ufFwgOwor5b2HPnhpxIFvfFwgOwor5b2LPmjDs25nfFwgOwor5b2hPnNoxIFufFwgOwor5b2rPmRpxIFvfFwgOwor5b2uPnnHkm5nfFwgOwor5b2vPnBpxIFvfFwgOwor5b20PnpodcOzfFwgOwor5b24PnfDoG5nfFwgOwor5b26PnfDoW5nfFwgOwor5b2+PmzHkG5nfFwgOwor5b6DPnfHjm5nfFwgOwor5b6RPmrDrG5nfFwgOwor5b6TPmPDs25nfFwgOwor5b6WPmPDs25nfFwgOwor5b6ePmPFjW5nfFwgOwor5b6kPmppw6BufFwgOwor5b6nPmJpw6BufFwgOwor5b6sPnDDoW5nfFwgOwor5b6wPmJpxIFvfFwgOwor5b6xPnBpw6BvfFwgOwor5b66Pmppx45vfFwgOwor5b6/PmzDsm5nfFwgOwor5b+KPmTDrG5nfFwgOwor5b+cPnnEq25nfFwgOwor5b+pPmPFjW5nfFwgOwor5b+6PnhpxIFufFwgOwor5b+8PmvEgW5nfFwgOwor5oCKPmNoxIFvfFwgOwor5oCePmNoxY11fFwgOwor5oCwPnh1w6BufFwgOwor5oCxPmPFjW5nfFwgOwor5oCyPmLHkG5nfFwgOwor5oGGPmjDqW5nfFwgOwor5oGMPnRpxIFvfFwgOwor5oGUPnhpw6BvfFwgOwor5oGgPmd1w6BpfFwgOwor5oGuPnF1w6FufFwgOwor5oGyPnDEk25nfFwgOwor5oG+Pm3DoW5nfFwgOwor5oKAPnnHkm5nfFwgOwor5oKBPmp1xIFufFwgOwor5oKTPnFpw6BufFwgOwor5oKZPmjEk25nfFwgOwor5oKkPmPFjW5nfFwgOwor5oKwPmPDs25nfFwgOwor5oK5Pmd1w6BufFwgOwor5oK6Pmd1w6BufFwgOwor5oK+PmvFjW5nfFwgOwor5oK/PnRpx45ufFwgOwor5oOJPmNoxIFufFwgOwor5oOMPnl1xIFufFwgOwor5oOTPnF1w6FufFwgOwor5oOZPmNodcOyfFwgOwor5oOkPmppxIFufFwgOwor5oOlPnnHkm5nfFwgOwor5oO3PmNox5RufFwgOwor5oO8PmJpx45ufFwgOwor5oO+PnrFjW5nfFwgOwor5oSDPnh1xIFufFwgOwor5oSLPnh1xIFufFwgOwor5oSMPmh1w6BufFwgOwor5oSQPm1px45ufFwgOwor5oSRPnnHkm5nfFwgOwor5oSTPmTDoG5nfFwgOwor5oSWPmNow6lufFwgOwor5oShPmzDqG5nfFwgOwor5oSpPmfFjW5nfFwgOwor5oSvPnPHkm5nfFwgOwor5oS5PnnHkm5nfFwgOwor5oS8PnNow6hufFwgOwor5oWCPnnHkm5nfFwgOwor5oWDPnnHjm5nfFwgOwor5oWPPm3HkG5nfFwgOwor5oWSPmPDs25nfFwgOwor5oWTPnBpw6BvfFwgOwor5oWfPnTDsm5nfFwgOwor5oWjPmd1w6BufFwgOwor5oWpPmxpw6FufFwgOwor5oWrPnPHkm5nfFwgOwor5oWxPnR1w6FufFwgOwor5oWzPnFpxIFufFwgOwor5oW2PnHDrG5nfFwgOwor5oW7Pmp1w6BufFwgOwor5oW/PnDDrW5nfFwgOwor5oaAPmxpw6FvfFwgOwor5oaBPmPFjW5nfFwgOwor5oaFPnTDsm5nfFwgOwor5oaJPnDDqW5nfFwgOwor5oaMPmNow7pufFwgOwor5oaNPmppxIFvfFwgOwor5oaQPmxpw6FufFwgOwor5oaRPnDDrW5nfFwgOwor5oaiPnhpxIFvfFwgOwor5oaqPnhpw6FufFwgOwor5oatPmxpx45vfFwgOwor5oayPnhpw6BufFwgOwor5oa4PnhpxIFufFwgOwor5oa8PmrHkG5nfFwgOwor5oa9PnPFjW5nfFwgOwor5oa/PmppxIFvfFwgOwor5oeBPmh1w6FufFwgOwor5oeJPnnEq25nfFwgOwor5oeQPmh1w6FpfFwgOwor5oecPm3DqG5nfFwgOwor5oeePm3DqW5nfFwgOwor5oekPmNow7N1fFwgOwor5oepPnnHjm5nfFwgOwor5oe0PmNow6BufFwgOwor5oe3Pmh1w6FpfFwgOwor5oe4Pnh1w6FufFwgOwor5oe5PnLDoG5nfFwgOwor5oe6PmNow6BufFwgOwor5oe9Pmh1xIFufFwgOwor5oiAPmxpw6BufFwgOwor5oiDPnTHjm5nfFwgOwor5oiFPmfDoG5nfFwgOwor5oiUPmppxIFufFwgOwor5oiZPmTDsm5nfFwgOwor5oilPmTEm25nfFwgOwor5oimPnpow6BufFwgOwor5oipPmppx45ufFwgOwor5oiwPnpow6BufFwgOwor5omCPmRpw6BufFwgOwor5omEPnNoxIFufFwgOwor5omaPmRpxIFvfFwgOwor5omfPnNoxJNufFwgOwor5omyPnFpw6FufFwgOwor5oqDPmJpw6BufFwgOwor5oqMPnpoxJtufFwgOwor5oqmPmLHkG5nfFwgOwor5oquPnpoxJtufFwgOwor5oqwPnnHjm5nfFwgOwor5oq6PmNoxJNufFwgOwor5ouRPnFpw6FufFwgOwor5ouyPmfHkm5nfFwgOwor5oyKPm7Dsm5nfFwgOwor5oyLPnpow6hufFwgOwor5oyNPmppw6BvfFwgOwor5oyPPmTDsm5nfFwgOwor5oypPnNodcOsfFwgOwor5oytPmfEm25nfFwgOwor5oyzPmvEk25nfFwgOwor5oy1PmzDsm5nfFwgOwor5oy3PnDDqW5nfFwgOwor5oy4Pmppx45ufFwgOwor5oy7PnNoxIFufFwgOwor5o2APmbEk25nfFwgOwor5o2BPmppx45vfFwgOwor5o2SPnPHkm5nfFwgOwor5o2WPmh1w6FufFwgOwor5o2aPnpoxIFpfFwgOwor5o2gPmLEgW5nfFwgOwor5o2wPnF1w6FufFwgOwor5o2yPmp1x45ufFwgOwor5o2zPmNoxJNufFwgOwor5o20PnrHkm5nfFwgOwor5o21PmNoxJtufFwgOwor5o6GPmfEgW5nfFwgOwor5o6UPnFpxIFufFwgOwor5o6VPmzDrG5nfFwgOwor5o6ePnNow6BufFwgOwor5o6kPmLEq25nfFwgOwor5o6xPnNox5J1fFwgOwor5o69PnDDqG5nfFwgOwor5o+APmppx45ufFwgOwor5o+BPnpoxJNufFwgOwor5o+DPmppxIFufFwgOwor5o+IPmjFjW5nfFwgOwor5o+UPnrHkm5nfFwgOwor5o+VPnpow6hufFwgOwor5o+YPmjDqW5nfFwgOwor5o+ZPmJpw6BufFwgOwor5o+aPnnDoW5nfFwgOwor5o+bPmh1w6BufFwgOwor5o+dPnp1w6BufFwgOwor5o+vPmfEk25nfFwgOwor5o+xPnNodcOyfFwgOwor5o+1PnFpw6FufFwgOwor5pCDPnrHkm5nfFwgOwor5pCEPmfEk25nfFwgOwor5pCIPnnHkm5nfFwgOwor5pCKPmNoxY11fFwgOwor5pCMPnpox45ufFwgOwor5pCRPmLDoG5nfFwgOwor5pCSPmLDqG5nfFwgOwor5pCbPmppxIFufFwgOwor5pCfPnhpx45ufFwgOwor5pClPmNodcOtfFwgOwor5pCnPnNoxIFufFwgOwor5pC3PnNoxJNufFwgOwor5pC8PnF1w6FufFwgOwor5pGDPmfEgW5nfFwgOwor5pGMPmNox45ufFwgOwor5pGOPmxpw6FvfFwgOwor5pGTPmbDqW5nfFwgOwor5pGaPnTDoW5nfFwgOwor5pGcPmd1w6BufFwgOwor5pGgPnrHkm5nfFwgOwor5pGlPnTDoG5nfFwgOwor5pGsPnnDrG5nfFwgOwor5pGyPnNow6BufFwgOwor5pG2PnR1w6FufFwgOwor5pG3Pmppx45vfFwgOwor5pG7PmNoxIFufFwgOwor5pG8PmJpxIFvfFwgOwor5pG9PmJpxIFvfFwgOwor5pKBPnFpxIFufFwgOwor5pKKPnhpw6BufFwgOwor5pKLPnJ1w6FufFwgOwor5pKNPnhpw6FufFwgOwor5pKUPmjDqG5nfFwgOwor5pKaPm5px45ufFwgOwor5pKfPmppx45vfFwgOwor5pKoPmxpxIFvfFwgOwor5pKvPnN1w6BufFwgOwor5pK5Pmppx45vfFwgOwor5pK9PnFpw6BvfFwgOwor5pK+PnpodcSBfFwgOwor5pK/Pmppx45ufFwgOwor5pOBPnnFjW5nfFwgOwor5pOGPnpodcOzfFwgOwor5pOJPmNodcWNfFwgOwor5pOLPmTHjm5nfFwgOwor5pOPPmrDrG5nfFwgOwor5pOQPmh1w6BufFwgOwor5pOTPmt1x45pfFwgOwor5pOwPm7DrW5nfFwgOwor5pO2Pmppw6BufFwgOwor5pSBPnnHjm5nfFwgOwor5pSGPm5px45ufFwgOwor5pSHPnhpx45ufFwgOwor5pSKPmh1x45ufFwgOwor5pSNPnhpxIFufFwgOwor5pSPPmzHkm5nfFwgOwor5pSQPnFpxIFufFwgOwor5pSRPnFpxIFufFwgOwor5pSTPnFpxIFufFwgOwor5pSWPnnEq25nfFwgOwor5pSZPmNoxIFufFwgOwor5pSbPmN1xIFufFwgOwor5pSiPmN1w6FufFwgOwor5pSjPmx1w6FufFwgOwor5pSnPmRpxIFufFwgOwor5pSoPnTHjm5nfFwgOwor5pSpPmTHjm5nfFwgOwor5pSqPmppx45vfFwgOwor5pWBPmRpxIFufFwgOwor5pWOPmppw6BvfFwgOwor5pWQPmNow6lufFwgOwor5pWSPnpow6hufFwgOwor5pWfPmRpx45ufFwgOwor5pWkPmRpxIFvfFwgOwor5pWnPmppx45vfFwgOwor5pWpPnhpw6BvfFwgOwor5pWtPnnDoW5nfFwgOwor5pW2Pnpow6hufFwgOwor5pW5Pmxpw6FvfFwgOwor5pW9Pmppx45vfFwgOwor5pW/Pmppx45vfFwgOwor5paAPnpodcOzfFwgOwor5paCPmxpx45ufFwgOwor5paFPmppx45vfFwgOwor5paGPmppx45vfFwgOwor5paOPnpoxIFpfFwgOwor5paYPmxpw6FvfFwgOwor5pagPmppw6BvfFwgOwor5pasPnpox45ufFwgOwor5pauPnpodcOzfFwgOwor5paxPnpodcOzfFwgOwor5payPnpodcOzfFwgOwor5pa1PnpodcOzfFwgOwor5pa3PmR1w6BufFwgOwor5pa7PmjDoW5nfFwgOwor5peKPmbHjm5nfFwgOwor5peNPmrEq25nfFwgOwor5peQPnpow6BvfFwgOwor5peTPnNoxIFvfFwgOwor5peUPmppw6BufFwgOwor5peaPnBpxIFvfFwgOwor5pecPnpoxIFufFwgOwor5pedPmd1w6BpfFwgOwor5perPnRpxIFvfFwgOwor5pe1PmNox45ufFwgOwor5pe4PnnDoW5nfFwgOwor5pe+PmNoxatufFwgOwor5piJPmbHjm5nfFwgOwor5piNPnh1xIFufFwgOwor5piYPmbHjm5nfFwgOwor5piaPnNow6hufFwgOwor5picPnnDoW5nfFwgOwor5piePmLHkG5nfFwgOwor5pihPnh1w6BufFwgOwor5pijPmNox5RufFwgOwor5pikPmzEq25nfFwgOwor5piqPmJpw6BufFwgOwor5piuPnrDsm5nfFwgOwor5pi4PmTFjW5nfFwgOwor5pi6PmLHkG5nfFwgOwor5pi9PmzDs25nfFwgOwor5pmAPnRpx45vfFwgOwor5pmFPnh1xIFufFwgOwor5pmIPmppx45vfFwgOwor5pmNPnTDs25nfFwgOwor5pmOPmjHkm5nfFwgOwor5pmbPnhpw6BufFwgOwor5pmdPnpow7J1fFwgOwor5pmqPnRpx45ufFwgOwor5pmrPnpodcOzfFwgOwor5pmtPnpox5J1fFwgOwor5pmxPnNox45ufFwgOwor5pm4PnpoxJtufFwgOwor5pqAPnfHjm5nfFwgOwor5pqBPmfEm25nfFwgOwor5pqFPnh1x45ufFwgOwor5pqSPnHDrW5nfFwgOwor5pqVPmppx45ufFwgOwor5pqYPnnDoW5nfFwgOwor5pqZPmNoxatufFwgOwor5pqwPmPFjW5nfFwgOwor5pq2Pnh1w6FufFwgOwor5pq4Pmxpw6FvfFwgOwor5pq7PmrHkG5nfFwgOwor5puIPnTDs25nfFwgOwor5puJPnhpx45vfFwgOwor5puMPnpow6BvfFwgOwor5puSPmppx45vfFwgOwor5puUPmrDrG5nfFwgOwor5puaPm3DqW5nfFwgOwor5pufPmNow6lufFwgOwor5punPnLDs25nfFwgOwor5puoPmzDs25nfFwgOwor5purPmx1w6FufFwgOwor5pusPnNow6BpfFwgOwor5putPnTHjm5nfFwgOwor5pu9PmPEk25nfFwgOwor5pyKPnJ1x45ufFwgOwor5pyOPmzDrW5nfFwgOwor5pyTPnRpw6BvfFwgOwor5pyWPmzHjm5nfFwgOwor5pyYPmp1xIFufFwgOwor5pyZPm3DrW5nfFwgOwor5pygPmzHkm5nfFwgOwor5pyhPnrFjW5nfFwgOwor5pyiPnfDoG5nfFwgOwor5pyjPnTDs25nfFwgOwor5pykPmzHjm5nfFwgOwor5pynPmzDs25nfFwgOwor5pypPmTEm25nfFwgOwor5pyyPnBpw6FvfFwgOwor5py+PnTDrW5nfFwgOwor5p2EPnFpxIFufFwgOwor5p2KPmJpxIFvfFwgOwor5p2XPm3DoW5nfFwgOwor5p2bPmfFjW5nfFwgOwor5p2sPnl1w6FufFwgOwor5p2xPmTFjW5nfFwgOwor5p20PnhpxIFufFwgOwor5p22PmNoxatufFwgOwor5p27PmNox5J1fFwgOwor5p29PmNox5J1fFwgOwor5p6APnPFjW5nfFwgOwor5p6bPnpow6BvfFwgOwor5p6nPmppw6BufFwgOwor5p6uPnhpxIFufFwgOwor5p+DPmzDrW5nfFwgOwor5p+NPnnEgW5nfFwgOwor5p+WPnpoxIFvfFwgOwor5p+XPnPFjW5nfFwgOwor5p+hPnnHkm5nfFwgOwor5p+6Pmd1x45pfFwgOwor5qCEPnLDs25nfFwgOwor5qCVPnpoxJNufFwgOwor5qCaPnpow6hufFwgOwor5qCfPmLEq25nfFwgOwor5qCgPmppx45vfFwgOwor5qCkPmLDrG5nfFwgOwor5qCmPmNow7N1fFwgOwor5qCrPmppw6BufFwgOwor5qCxPmfHkm5nfFwgOwor5qC0PnpoxIFufFwgOwor5qGKPmp1w6BufFwgOwor5qGSPnPEgW5nfFwgOwor5qGYPmNodcOtfFwgOwor5qGcPnnEq25nfFwgOwor5qGfPnpow6BufFwgOwor5qGtPnpoxJNufFwgOwor5qGvPnTEq25nfFwgOwor5qGxPmrDrG5nfFwgOwor5qG5PmzDoW5nfFwgOwor5qG7PmbEk25nfFwgOwor5qKHPmzDsm5nfFwgOwor5qKIPnDEk25nfFwgOwor5qKLPnh1xIFufFwgOwor5qKYPmppw6BufFwgOwor5qKZPmh1w6BufFwgOwor5qKdPnRpw6FvfFwgOwor5qKfPnhpxIFvfFwgOwor5qKhPmt1x45ufFwgOwor5qKlPnPFjW5nfFwgOwor5qKyPnpodcOzfFwgOwor5qK0PmNoxIFufFwgOwor5qK3PmrDrG5nfFwgOwor5qK5PmLEq25nfFwgOwor5qK/Pmxpw6FufFwgOwor5qOBPnpodcOzfFwgOwor5qOFPmLDrG5nfFwgOwor5qOGPnpoxatufFwgOwor5qOHPmPFjW5nfFwgOwor5qOIPnFpw6BufFwgOwor5qOfPmTDsm5nfFwgOwor5qOhPmfEgW5nfFwgOwor5qOiPnfHjm5nfFwgOwor5qOkPnF1w6BufFwgOwor5qOnPnpow6BufFwgOwor5qOpPnl1xIFufFwgOwor5qOsPnF1xIFufFwgOwor5qOtPm5pw6BufFwgOwor5qO9PmNoxJNufFwgOwor5qSGPmNow7N1fFwgOwor5qSKPmNodcOtfFwgOwor5qSTPnpodcOzfFwgOwor5qSWPnDDqW5nfFwgOwor5qSXPmTDrG5nfFwgOwor5qScPmppx45ufFwgOwor5qSqPnDDqG5nfFwgOwor5qSrPnpox45ufFwgOwor5qS3PmppxIFufFwgOwor5qS6PmppxIFufFwgOwor5qS+Pnpow6BufFwgOwor5qWEPnBpw6FufFwgOwor5qWKPnnDoW5nfFwgOwor5qWTPmbEk25nfFwgOwor5qWfPnTDrW5nfFwgOwor5qWkPnPHkm5nfFwgOwor5qWlPnh1w6BufFwgOwor5qWnPnnEq25nfFwgOwor5qWoPnpoxJNufFwgOwor5qWpPnBpw6FufFwgOwor5qWvPnNox5RufFwgOwor5qW7PmjDqW5nfFwgOwor5qaQPnpox45ufFwgOwor5qaSPmzHjm5nfFwgOwor5qaXPmppw6BufFwgOwor5qaePnl1w6FufFwgOwor5qagPm3DrW5nfFwgOwor5qapPnFpw6FufFwgOwor5qasPnl1w6FufFwgOwor5qauPnLDs25nfFwgOwor5qazPnTDrW5nfFwgOwor5qa1PnLDs25nfFwgOwor5qa2PnTDoW5nfFwgOwor5qa4PnpoxIFpfFwgOwor5qeHPmRpxIFufFwgOwor5qeTPmfDoG5nfFwgOwor5qeVPnpodcOzfFwgOwor5qeZPmRpxIFufFwgOwor5qecPmLEq25nfFwgOwor5qekPmxpw6FufFwgOwor5qemPnnDs25nfFwgOwor5qenPnFpw6BufFwgOwor5qerPnR1w6FufFwgOwor5qewPmLDqG5nfFwgOwor5qe1Pmh1w6BufFwgOwor5qe6PmvEgW5nfFwgOwor5qiDPmzDoW5nfFwgOwor5qiEPmNow6lufFwgOwor5qiFPmPFjW5nfFwgOwor5qiIPnHDrW5nfFwgOwor5qiMPmd1w6BufFwgOwor5qiUPmNow6FvfFwgOwor5qiYPnTDoW5nfFwgOwor5qiZPmJpxIFvfFwgOwor5qiiPm5px45vfFwgOwor5qijPnnDoG5nfFwgOwor5qilPnDDqW5nfFwgOwor5qipPnF1w6FufFwgOwor5qirPmppxIFufFwgOwor5qisPmPFjW5nfFwgOwor5qi3PmPFjW5nfFwgOwor5qi8PnpoxJNufFwgOwor5qi/Pnpox45ufFwgOwor5qmAPmNoxatufFwgOwor5qmCPmRpw6BufFwgOwor5qmLPnFpw6FvfFwgOwor5qmMPnhpw6BufFwgOwor5qmPPnpox45ufFwgOwor5qmSPmNow6lufFwgOwor5qmTPnNow7lufFwgOwor5qmWPnTDoW5nfFwgOwor5qmXPm3DqW5nfFwgOwor5qmnPnrEk25nfFwgOwor5qmrPmjDqW5nfFwgOwor5qqCPm7Ds25nfFwgOwor5qqGPnNoxIFufFwgOwor5qqIPnh1w6FufFwgOwor5qqSPmTDoG5nfFwgOwor5qqUPmTDoG5nfFwgOwor5qqZPmTHkG5nfFwgOwor5qqbPnpodcSBfFwgOwor5qqiPmppx45ufFwgOwor5qqmPmJpx45vfFwgOwor5qqnPnPFjW5nfFwgOwor5qqwPm1pw6FufFwgOwor5qqyPmLEq25nfFwgOwor5qq4Pm7DrW5nfFwgOwor5qq7Pmppw6BufFwgOwor5quCPnpow6BvfFwgOwor5quEPmNoxatufFwgOwor5quIPmTDqG5nfFwgOwor5quLPm1pw6FufFwgOwor5quVPmN1w6FufFwgOwor5quePnl1w6FufFwgOwor5quhPnpodcOzfFwgOwor5quiPmd1w6BufFwgOwor5qujPmxpw6FufFwgOwor5qusPmNow6hufFwgOwor5quwPmh1w6FpfFwgOwor5quzPmzDs25nfFwgOwor5qu2Pnhpx45ufFwgOwor5qu5PnhpxIFvfFwgOwor5qu6PmzDrW5nfFwgOwor5qu7PnnEq25nfFwgOwor5qu8PmppxIFufFwgOwor5qu/Pmxpw6BufFwgOwor5qyBPm7Ds25nfFwgOwor5qyDPmNow6FufFwgOwor5qyJPmPDsm5nfFwgOwor5qyKPnF1w6FufFwgOwor5qySPmx1w6FufFwgOwor5qyTPmTHjm5nfFwgOwor5qycPm7DoW5nfFwgOwor5qyePmzDrW5nfFwgOwor5qymPnFpxIFufFwgOwor5qypPmNoxIFvfFwgOwor5qyzPmt1w6BpfFwgOwor5qy0PmzDoW5nfFwgOwor5qy1Pmt1x45ufFwgOwor5qy2PnNodcOyfFwgOwor5q2APmt1x45ufFwgOwor5q2KPnhpxIFvfFwgOwor5q2TPmh1xIFufFwgOwor5q2XPnhpw6BvfFwgOwor5q2bPmxpx45ufFwgOwor5q2gPmNodcOyfFwgOwor5q2hPmh1xIFufFwgOwor5q2sPnFpw6FufFwgOwor5q6OPmrDrG5nfFwgOwor5q6RPnHDrW5nfFwgOwor5q6dPnpoxJNufFwgOwor5q6gPmNow7J1fFwgOwor5q6mPmRpxIFvfFwgOwor5q6pPmN1w6BufFwgOwor5q6uPmxpw6BufFwgOwor5q6yPmppxIFufFwgOwor5q64PnHDrG5nfFwgOwor5q+IPmR1w6BufFwgOwor5q+KPnhpxIFvfFwgOwor5q+MPmd1w6BufFwgOwor5q+aPmNow6FufFwgOwor5q+nPnLDs25nfFwgOwor5q+oPnhpx45ufFwgOwor5rCDPmLHjm5nfFwgOwor5rCEPnLHkm5nfFwgOwor5rCIPnpoxIFufFwgOwor5rCKPnpoxIFufFwgOwor5rCLPm3DqW5nfFwgOwor5rCgPnNoxJNufFwgOwor5rCrPnHEq25nfFwgOwor5rCtPmTFjW5nfFwgOwor5rCxPm5pw6BvfFwgOwor5rC3PmLEq25nfFwgOwor5rC5PmTDoG5nfFwgOwor5rGFPm1px45ufFwgOwor5rGIPmRpxIFvfFwgOwor5rGLPnpodcOzfFwgOwor5rGSPm3DoW5nfFwgOwor5rGYPnFpxIFufFwgOwor5rGnPnFpxIFufFwgOwor5rGsPmrHkG5nfFwgOwor5rGvPmjDs25nfFwgOwor5rGxPnF1x45ufFwgOwor5rGzPmJpw6BufFwgOwor5rG4PmbEgW5nfFwgOwor5rG7PmjHjm5nfFwgOwor5rKXPnRpxIFufFwgOwor5rKdPnpodceQfFwgOwor5rKoPmbDqW5nfFwgOwor5rOOPnpodcOzfFwgOwor5rOZPnDDrW5nfFwgOwor5rO0Pmd1w6BufFwgOwor5rSAPnpoxY11fFwgOwor5rSKPmppw6BufFwgOwor5rSQPnjDrW5nfFwgOwor5rSYPmjDs25nfFwgOwor5rSkPnF1w6FufFwgOwor5rSoPnhpw6FvfFwgOwor5rS0PnDDrW5nfFwgOwor5rS6Pm3DrW5nfFwgOwor5rWQPmNox45ufFwgOwor5rWkPmjDs25nfFwgOwor5rWnPnnHkG5nfFwgOwor5rWtPmfEk25nfFwgOwor5rWxPmNow7pufFwgOwor5rWyPmbDqW5nfFwgOwor5rW1PnTDs25nfFwgOwor5rW7PnfEm25nfFwgOwor5raAPnhpw6BufFwgOwor5raBPnNow6hufFwgOwor5raHPmrEq25nfFwgOwor5raKPm5px45ufFwgOwor5raNPmRpw6BufFwgOwor5raXPnNodcOsfFwgOwor5raaPnNodcOsfFwgOwor5rarPmd1w6BufFwgOwor5rasPnjDrG5nfFwgOwor5ratPnNow7J1fFwgOwor5rawPmNodcOyfFwgOwor5razPmvFjW5nfFwgOwor5ra2PmTDsm5nfFwgOwor5ra3PmTFjW5nfFwgOwor5reDPmp1w6BufFwgOwor5reOPnDEm25nfFwgOwor5reTPmbEgW5nfFwgOwor5recPnDDqW5nfFwgOwor5refPnRpx45ufFwgOwor5rejPmd1xIFufFwgOwor5reoPmrDrG5nfFwgOwor5repPmzDrW5nfFwgOwor5retPmxpx45ufFwgOwor5rewPm5px45ufFwgOwor5reyPnBpw6FvfFwgOwor5re1Pnl1xIFufFwgOwor5re4PnHEq25nfFwgOwor5re6PnFpx45ufFwgOwor5riBPnl1xIFufFwgOwor5riVPnl1xIFufFwgOwor5riZPmh1w6BufFwgOwor5ribPmppx45ufFwgOwor5ricPm51x45ufFwgOwor5rifPnTDrW5nfFwgOwor5riiPmbDqW5nfFwgOwor5ri2PnnEq25nfFwgOwor5ri5PmjFjW5nfFwgOwor5ri7PnjHkG5nfFwgOwor5rmFPmxpw6BufFwgOwor5rmJPnRpw6FufFwgOwor5rmVPmNow6lufFwgOwor5rmXPmbDqG5nfFwgOwor5rmnPnnHkm5nfFwgOwor5rmpPmTDsm5nfFwgOwor5rmqPmppx45vfFwgOwor5rmsPmppx45vfFwgOwor5rmvPnTEgW5nfFwgOwor5rmwPmzDs25nfFwgOwor5rmyPnl1w6FufFwgOwor5rm2PnF1w6FufFwgOwor5rm3PmNodcOtfFwgOwor5rm5PmNow6FufFwgOwor5rm7PmNow7pufFwgOwor5rqAPmppxIFufFwgOwor5rqBPnnDrW5nfFwgOwor5rqMPmxpx45ufFwgOwor5rqSPnl1w6FufFwgOwor5rqTPmxpw6FufFwgOwor5rqVPm3DqG5nfFwgOwor5rqWPnpox5RufFwgOwor5ruDPnfEm25nfFwgOwor5ruEPmPEgW5nfFwgOwor5ruOPnjDrW5nfFwgOwor5ruYPmppw6BvfFwgOwor5rudPmzDs25nfFwgOwor5rujPmNow7pufFwgOwor5ruuPmJpxIFvfFwgOwor5ruyPnNow6hufFwgOwor5ru7PmNox45ufFwgOwor5ru9PnnDs25nfFwgOwor5ryAPmJpxIFvfFwgOwor5ryFPmppx45vfFwgOwor5ryLPmzDs25nfFwgOwor5ryOPmPDs25nfFwgOwor5ryWPmNow7pufFwgOwor5ryXPmPFjW5nfFwgOwor5ryYPmNow7pufFwgOwor5ryZPnR1w6FufFwgOwor5ryfPnTDoW5nfFwgOwor5ryjPmxpw6FufFwgOwor5rynPnFpw6FufFwgOwor5ryoPmbDqW5nfFwgOwor5rytPm3Hjm5nfFwgOwor5ryuPmvEgW5nfFwgOwor5rywPnDEk25nfFwgOwor5ry4PmppxIFufFwgOwor5ry7Pmxpw6FvfFwgOwor5r2APmPDs25nfFwgOwor5r2BPnnHkG5nfFwgOwor5r2CPmjDs25nfFwgOwor5r2FPmd1w6BufFwgOwor5r2aPnhpxIFvfFwgOwor5r2bPnFpw6FufFwgOwor5r2nPnNow6BufFwgOwor5r25PmNow6FufFwgOwor5r29PmTDqG5nfFwgOwor5r6GPmppxIFvfFwgOwor5r6LPmjDqG5nfFwgOwor5r6SPmjDsm5nfFwgOwor5r6WPnhpxIFufFwgOwor5r6XPmppw6BufFwgOwor5r6YPnNoxIFufFwgOwor5r6iPmTEgW5nfFwgOwor5r6jPmh1x45ufFwgOwor5r6tPnnFjW5nfFwgOwor5r6uPmt1w6BpfFwgOwor5r6wPmxpw6BufFwgOwor5r6xPmRpw6BufFwgOwor5r60Pmh1w6FufFwgOwor5r61PnpoxJNufFwgOwor5r66PmppxIFvfFwgOwor5r+BPnpodcOzfFwgOwor5r+DPm7Ds25nfFwgOwor5r+NPnPFjW5nfFwgOwor5r+OPmTHkG5nfFwgOwor5r+TPmxpw6FufFwgOwor5r+YPm7DrG5nfFwgOwor5r+ZPnnDrW5nfFwgOwor5r+bPm3DqW5nfFwgOwor5r+iPmNow6FvfFwgOwor5r+qPmppw6BufFwgOwor5r+zPnFpw6FufFwgOwor5r+0PnjDrW5nfFwgOwor5r+2PmppxIFufFwgOwor5r+6Pmppw6BufFwgOwor5r+9PmN1w6FufFwgOwor54CBPnnDoG5nfFwgOwor54CFPnnDrW5nfFwgOwor54CHPmNow6hufFwgOwor54CLPnNoxJtufFwgOwor54CMPmJpxIFvfFwgOwor54CNPmNow6FufFwgOwor54CXPnhpw6BufFwgOwor54CcPnnFjW5nfFwgOwor54CePmrDrG5nfFwgOwor54CfPnhpxIFvfFwgOwor54CgPnnDrW5nfFwgOwor54CkPmh1w6FpfFwgOwor54CnPmzDs25nfFwgOwor54CvPnnDrW5nfFwgOwor54CyPmxpw6BufFwgOwor54CzPmppw6BufFwgOwor54C0PnnHkG5nfFwgOwor54C4PmppxIFufFwgOwor54C6PmNow6FufFwgOwor54C8PnLDoW5nfFwgOwor54C9Pmppx45ufFwgOwor54GBPnl1xIFufFwgOwor54GCPnpodcOzfFwgOwor54GDPmbEk25nfFwgOwor54GFPmh1w6BufFwgOwor54GHPmPDs25nfFwgOwor54GJPnnFjW5nfFwgOwor54GKPnFpw6FufFwgOwor54GTPmx1w6FufFwgOwor54GXPnNow6BufFwgOwor54GZPmTHjm5nfFwgOwor54GaPmppx45vfFwgOwor54GbPmNox45ufFwgOwor54GiPm7Hjm5nfFwgOwor54GkPmx1w6FufFwgOwor54GmPnhpx45ufFwgOwor54GxPnhpxIFvfFwgOwor54GyPnhpxIFvfFwgOwor54G0PmjDs25nfFwgOwor54KBPmfEm25nfFwgOwor54KPPmfEm25nfFwgOwor54KQPnDDoG5nfFwgOwor54KTPmxpw6BvfFwgOwor54KkPnpow6BvfFwgOwor54KpPmzDrG5nfFwgOwor54KqPnpodcOzfFwgOwor54K0PnnHjm5nfFwgOwor54K1PnTFjW5nfFwgOwor54OEPmppx45vfFwgOwor54OGPnjDrW5nfFwgOwor54OHPnF1w6BufFwgOwor54OJPmh1w6BufFwgOwor54OLPnhpxIFvfFwgOwor54ONPnhpx45ufFwgOwor54OUPnTDs25nfFwgOwor54OcPnh1x45ufFwgOwor54O0PnTEq25nfFwgOwor54O1PnNow6FufFwgOwor54O2PnTHkG5nfFwgOwor54O6PmzHjm5nfFwgOwor54O7PnNoxIFufFwgOwor54O/PnLDs25nfFwgOwor54SHPnhpxIFvfFwgOwor54SiPmjFjW5nfFwgOwor54SnPmPFjW5nfFwgOwor54SoPmbDqG5nfFwgOwor54SpPnDEq25nfFwgOwor54SyPmppxIFvfFwgOwor54S0PnNow6lufFwgOwor54S1PmfDoG5nfFwgOwor54S8PnNoxIFvfFwgOwor54WBPmNow6lufFwgOwor54WIPmbDqG5nfFwgOwor54WJPmxpw6BufFwgOwor54WLPnjEq25nfFwgOwor54WNPmppx45vfFwgOwor54WQPnnEq25nfFwgOwor54WTPnFpw6FufFwgOwor54WUPnRpw6BufFwgOwor54WWPm51x45ufFwgOwor54WYPmNow6FufFwgOwor54WlPmh1w6BufFwgOwor54WsPnnDoW5nfFwgOwor54W1PnNow6BufFwgOwor54W7PnTDoW5nfFwgOwor54W8PmNox45vfFwgOwor54aMPnNow6BufFwgOwor54aRPmxpw6FufFwgOwor54aSPnnDrW5nfFwgOwor54abPmJpxIFvfFwgOwor54acPnrHkm5nfFwgOwor54aePmppxIFufFwgOwor54aiPmbEk25nfFwgOwor54alPnTFjW5nfFwgOwor54anPnrFjW5nfFwgOwor54auPmxpw6FvfFwgOwor54a2PmN1w6BufFwgOwor54a3PnrEk25nfFwgOwor54a4PmppxIFufFwgOwor54a9Pnhpw6BvfFwgOwor54eAPmNox45ufFwgOwor54eCPnFpw6FufFwgOwor54eFPnhpw6FufFwgOwor54eIPmTEk25nfFwgOwor54eKPnNoxJNufFwgOwor54eLPmppxIFvfFwgOwor54eNPmxpw6FvfFwgOwor54eRPnTDs25nfFwgOwor54eSPnNoxIFvfFwgOwor54eXPmTDoG5nfFwgOwor54eZPnTDoG5nfFwgOwor54ebPmrHkG5nfFwgOwor54efPnnDrW5nfFwgOwor54eqPmPFjW5nfFwgOwor54erPmxpw6FufFwgOwor54evPmzDrW5nfFwgOwor54ezPnpow6BvfFwgOwor54e9PmNow7N1fFwgOwor54iCPmJpxIFvfFwgOwor54iDPnLDs25nfFwgOwor54iNPnNodcOyfFwgOwor54iSPmxpw6BvfFwgOwor54iUPnNodcOyfFwgOwor54iWPmzDs25nfFwgOwor54iZPnLHjm5nfFwgOwor54icPmPDs25nfFwgOwor54ifPmd1w6BufFwgOwor54ijPnTHjm5nfFwgOwor54inPmzDrW5nfFwgOwor54mCPnrEgW5nfFwgOwor54mFPnnDs25nfFwgOwor54mKPnNow6FvfFwgOwor54mLPmppxIFufFwgOwor54mQPmPFjW5nfFwgOwor54mRPmJpxIFufFwgOwor54mTPmLHjm5nfFwgOwor54mkPm3DoW5nfFwgOwor54mlPmbEgW5nfFwgOwor54moPmfEgW5nfFwgOwor54muPmppw6BufFwgOwor54m2PnF1w6BufFwgOwor54m3PnF1w6FufFwgOwor54m7Pm3DoW5nfFwgOwor54m8PmvEk25nfFwgOwor54m9PnFpxIFufFwgOwor54qFPmfEgW5nfFwgOwor54qIPnF1w6FufFwgOwor54qOPmbEk25nfFwgOwor54qdPnTDs25nfFwgOwor54qoPmNoxY11fFwgOwor54qqPmNow6FpfFwgOwor54qrPmNoxY11fFwgOwor54q6PmvDoG5nfFwgOwor54q/Pmh1xIFufFwgOwor54uFPnHEq25nfFwgOwor54uRPmzDrW5nfFwgOwor54udPnhpx45ufFwgOwor54ufPmh1w6FufFwgOwor54ujPnpow6BvfFwgOwor54umPmt1w6BpfFwgOwor54uoPnLDs25nfFwgOwor54uqPnTFjW5nfFwgOwor54u1Pm3DoW5nfFwgOwor54u7PnN1xIFufFwgOwor54yEPmrEq25nfFwgOwor54yLPmJpxIFvfFwgOwor54yPPmppxIFufFwgOwor54yjPnrFjW5nfFwgOwor54ymPmbEk25nfFwgOwor54yoPnl1w6FufFwgOwor54ytPnl1w6FufFwgOwor54yvPnR1xIFufFwgOwor54y1PmJpxIFufFwgOwor542CPmh1w6FufFwgOwor542JPnpoxJNufFwgOwor542RPmNow6FufFwgOwor542ePnTDs25nfFwgOwor542nPmp1w6BufFwgOwor542qPmt1w6BpfFwgOwor542rPnhpx45ufFwgOwor542uPnhpx45ufFwgOwor542wPm7DrW5nfFwgOwor5420Pm3DqW5nfFwgOwor5424PnNow7J1fFwgOwor5427Pnhpw6BufFwgOwor5429PnLDoW5nfFwgOwor546BPnhpx45ufFwgOwor546FPm1pw6BvfFwgOwor546SPmjDs25nfFwgOwor546aPnnDoW5nfFwgOwor546cPmfFjW5nfFwgOwor546jPmLDoG5nfFwgOwor546kPmLDoG5nfFwgOwor546qPmppxIFufFwgOwor5462PnDDrW5nfFwgOwor5465Pnh1w6FufFwgOwor546/PnNow6FvfFwgOwor54+FPnNoxJNufFwgOwor54+OPnpoxJNufFwgOwor54+TPmppw6BvfFwgOwor54+UPmppw6BufFwgOwor54+XPnhpxIFufFwgOwor54+YPnpoxY11fFwgOwor54+cPnnDoW5nfFwgOwor54+wPmTEgW5nfFwgOwor54+9PnTHkG5nfFwgOwor54++Pnhpw6BufFwgOwor54+/PmNodcOyfFwgOwor55CBPnh1xIFufFwgOwor55CCPmp1xIFufFwgOwor55CEPnF1x45ufFwgOwor55CMPmzDrW5nfFwgOwor55CUPmRpw6BufFwgOwor55CWPnpox45ufFwgOwor55CgPmRpx45ufFwgOwor55CrPmLEm25nfFwgOwor55CvPmd1x45ufFwgOwor55CxPmRpxIFvfFwgOwor55C4PnpodcOzfFwgOwor55GDPmNoxatufFwgOwor55GEPnh1xIFufFwgOwor55GGPnjEq25nfFwgOwor55GKPnpoxJNufFwgOwor55GMPnJ1x45ufFwgOwor55GNPmh1w6BufFwgOwor55GQPmppx45ufFwgOwor55GSPnnDoW5nfFwgOwor55GTPmh1w6FufFwgOwor55GUPnF1w6FufFwgOwor55GWPmR1w6BufFwgOwor55GiPnLDs25nfFwgOwor55GpPnnDrW5nfFwgOwor55GvPmzDoW5nfFwgOwor55GxPnRpw6BufFwgOwor55G1Pnpox45vfFwgOwor55G9PmPFjW5nfFwgOwor55KEPmxpx45ufFwgOwor55KJPmxpw6FufFwgOwor55KSPmTEk25nfFwgOwor55KUPnrEk25nfFwgOwor55KXPmTDoG5nfFwgOwor55KZPmxpw6FvfFwgOwor55KfPmrHkG5nfFwgOwor55KiPmh1w6BufFwgOwor55KlPmrHkG5nfFwgOwor55KrPmTEgW5nfFwgOwor55KsPmppx45vfFwgOwor55KwPmh1w6FufFwgOwor55KzPnRpw6FufFwgOwor55K5PnNow7J1fFwgOwor55K/Pnh1w6FufFwgOwor55OAPnJ1x45ufFwgOwor55OPPmzDs25nfFwgOwor55OUPnnEq25nfFwgOwor55OYPmd1w6BufFwgOwor55ObPmh1w6FufFwgOwor55OoPmjDs25nfFwgOwor55OpPnFpxIFufFwgOwor55OsPmbHjm5nfFwgOwor55O5Pmp1w6BufFwgOwor55O9PmTDoG5nfFwgOwor55O+Pm3Em25nfFwgOwor55SAPnpodcOsfFwgOwor55SBPnDDrW5nfFwgOwor55SCPmJpxIFufFwgOwor55SDPnpow7J1fFwgOwor55SHPnnEq25nfFwgOwor55SJPnhpw6FufFwgOwor55SVPnfDqG5nfFwgOwor55SWPnnEq25nfFwgOwor55SgPnHDrW5nfFwgOwor55ShPnNoxJNufFwgOwor55SiPmNox45ufFwgOwor55SjPmNox45ufFwgOwor55SuPmbDqG5nfFwgOwor55SvPm7DrW5nfFwgOwor55S5PnDEq25nfFwgOwor55S8PnTHkG5nfFwgOwor55S9PnF1x45ufFwgOwor55S/Pm3DqW5nfFwgOwor55WKPmfEk25nfFwgOwor55WLPnRpw6FufFwgOwor55WRPnRpw6FufFwgOwor55WzPmTDoG5nfFwgOwor55W2PmTEgW5nfFwgOwor55W3PmNodcOyfFwgOwor55W9PnR1x45ufFwgOwor55aDPnR1x45ufFwgOwor55aHPmNow7N1fFwgOwor55aYPmfEgW5nfFwgOwor55abPnpox5J1fFwgOwor55aiPmNow6hufFwgOwor55atPnrDsm5nfFwgOwor55eBPmRpw6BufFwgOwor55eDPnhpw6FufFwgOwor55eMPnTFjW5nfFwgOwor55eZPmrDrG5nfFwgOwor55eaPnhpxIFvfFwgOwor55edPm3DoW5nfFwgOwor55efPnhpxIFvfFwgOwor55egPnN1xIFufFwgOwor55epPnNow7J1fFwgOwor55etPnDDqW5nfFwgOwor55evPmd1x45ufFwgOwor55e2PmRpx45ufFwgOwor55iGPnNow6hufFwgOwor55iLPmbEk25nfFwgOwor55iNPnnDoW5nfFwgOwor55iOPnNow6hufFwgOwor55iTPmh1w6BufFwgOwor55idPmd1xIFufFwgOwor55ioPmRpxIFufFwgOwor55itPmJpxIFvfFwgOwor55iuPnNoxJNufFwgOwor55iyPnrDsm5nfFwgOwor55i1Pnpow6BpfFwgOwor55i5PmRpw6BvfFwgOwor55mCPmxpw6FvfFwgOwor55mDPmzDs25nfFwgOwor55mEPnFpw6FvfFwgOwor55mHPnhpw6FufFwgOwor55mOPnhpw6FufFwgOwor55mPPmd1xIFufFwgOwor55mQPmd1w6BpfFwgOwor55mRPm7Ds25nfFwgOwor55mVPnnFjW5nfFwgOwor55miPnnHjm5nfFwgOwor55msPnh1x45ufFwgOwor55mtPnnHkG5nfFwgOwor55mwPnnFjW5nfFwgOwor55myPmRpxIFufFwgOwor55m0Pmx1w6FufFwgOwor55m1Pmx1w6FufFwgOwor55qKPmzDrW5nfFwgOwor55qPPnDEm25nfFwgOwor55qXPmNow7N1fFwgOwor55qYPnFpw6BufFwgOwor55qiPnhpx45vfFwgOwor55qmPmppx45vfFwgOwor55qoPnjEq25nfFwgOwor55qrPnBpx45vfFwgOwor55qtPmppw6BvfFwgOwor55q6Pnpow7J1fFwgOwor55q7Pm3HkG5nfFwgOwor55q9Pnpox45ufFwgOwor55uAPmRpw6BvfFwgOwor55uBPnnDrW5nfFwgOwor55uEPnpoxIFvfFwgOwor55uePnpox45ufFwgOwor55uiPmppw6BufFwgOwor55ujPmppxIFufFwgOwor55upPnpoxY11fFwgOwor55uqPmTDoG5nfFwgOwor55uzPm3DoW5nfFwgOwor55u2PnJ1x45ufFwgOwor55u3PnRpw6FufFwgOwor55u9PmbEk25nfFwgOwor55yAPm3DrW5nfFwgOwor55yCPm1pw6BvfFwgOwor55yGPmbHjm5nfFwgOwor55yMPmTDqG5nfFwgOwor55yPPnnEgW5nfFwgOwor55ySPnNow6hufFwgOwor55yVPnpoxJtufFwgOwor55yYPnNow6hufFwgOwor55ydPm1px45ufFwgOwor55yePnpoxJNufFwgOwor55yiPnl1xIFufFwgOwor55ynPmNox45vfFwgOwor55yqPmLHkG5nfFwgOwor55ysPmzDs25nfFwgOwor55yuPmTDsm5nfFwgOwor55yzPm3DrW5nfFwgOwor55y0Pnh1w6BufFwgOwor55y5Pnpow6hufFwgOwor55y7PnnDoW5nfFwgOwor552EPnNow6BvfFwgOwor552GPmh1x45ufFwgOwor552KPmp1w6BufFwgOwor552NPnhpw6BufFwgOwor552SPnNox45ufFwgOwor552TPnRpx45ufFwgOwor552WPmzDqG5nfFwgOwor552gPmp1w6BufFwgOwor552tPnpox5J1fFwgOwor5522PmNox5RufFwgOwor5523PmppxIFufFwgOwor5527Pnh1xIFufFwgOwor556IPnfEm25nfFwgOwor556KPmTDoG5nfFwgOwor556LPmNoxJNufFwgOwor556XPmRpxIFvfFwgOwor556aPnNow7lufFwgOwor556bPmPFjW5nfFwgOwor556mPmxpw6BvfFwgOwor556rPnNoxJtufFwgOwor556tPmxpx45vfFwgOwor556vPnhpw6FufFwgOwor5563Pmppw6BufFwgOwor5568Pmppx45ufFwgOwor556+Pnpow6BvfFwgOwor55+BPmNox5J1fFwgOwor55+DPm7HkG5nfFwgOwor55+HPm3Ek25nfFwgOwor55+IPm1pw6FufFwgOwor55+KPm3DoW5nfFwgOwor55+OPnh1xIFufFwgOwor55+PPm1pw6FufFwgOwor55+SPm3DqW5nfFwgOwor55+TPmzDs25nfFwgOwor55+UPmd1w6BufFwgOwor55+YPnTHjm5nfFwgOwor55+fPnNodcOyfFwgOwor55+kPnNoxJtufFwgOwor55+oPnnHkG5nfFwgOwor55+qPnpoxY11fFwgOwor55+vPmppx45vfFwgOwor55+wPnrEk25nfFwgOwor55+0PmTDrG5nfFwgOwor56CKPmvEgW5nfFwgOwor56CcPmbEk25nfFwgOwor56CvPnDEq25nfFwgOwor56GBPmvEk25nfFwgOwor56GCPnF1w6FufFwgOwor56GRPnDEk25nfFwgOwor56GUPmjDs25nfFwgOwor56GaPnFpw6FvfFwgOwor56GcPmvEk25nfFwgOwor56GePmzDoW5nfFwgOwor56GfPmNow6BufFwgOwor56GgPmzHjm5nfFwgOwor56GhPmjFjW5nfFwgOwor56GjPnhpxIFvfFwgOwor56GlPm3Hjm5nfFwgOwor56GmPmzDsm5nfFwgOwor56GnPnnHkm5nfFwgOwor56G2PmNoxJtufFwgOwor56G5PnPFjW5nfFwgOwor56G6PnpodcOzfFwgOwor56G7PmvEk25nfFwgOwor56G+PnpodcOsfFwgOwor56G/PmvFjW5nfFwgOwor56KAPmPDqW5nfFwgOwor56KCPnrDsm5nfFwgOwor56KDPnHDrG5nfFwgOwor56KKPmppxIFufFwgOwor56KQPmzDrW5nfFwgOwor56KZPmfEgW5nfFwgOwor56KdPnJ1x45ufFwgOwor56KgPmTDrG5nfFwgOwor56KlPmJpx45ufFwgOwor56KpPnNodcOyfFwgOwor56KqPnpoxJNufFwgOwor56KrPmR1w6BufFwgOwor56KtPmTDoG5nfFwgOwor56K4PmbEk25nfFwgOwor56K5Pnh1w6BufFwgOwor56K9PmfFjW5nfFwgOwor56K/PnDEgW5nfFwgOwor56OEPnTDoW5nfFwgOwor56OMPnpoxJNufFwgOwor56OYPnHDrG5nfFwgOwor56ObPmNow6FufFwgOwor56OePnDEk25nfFwgOwor56OmPmJpxIFvfFwgOwor56OrPnrFjW5nfFwgOwor56OtPmNodcOyfFwgOwor56OwPnNow6BufFwgOwor56OzPnrEk25nfFwgOwor56O1Pmppw6BufFwgOwor56O4PmTDrG5nfFwgOwor56O5PmRpw6BufFwgOwor56O9PnFpxIFvfFwgOwor56SEPnFpw6FvfFwgOwor56SGPnhpx45ufFwgOwor56SIPnpodcOsfFwgOwor56SLPnpow6FpfFwgOwor56SRPmTDoG5nfFwgOwor56SbPmppxIFufFwgOwor56SdPnJ1x45ufFwgOwor56SePm3DqW5nfFwgOwor56SlPnhpw6FufFwgOwor56SvPnnEq25nfFwgOwor56SxPmzDs25nfFwgOwor56SyPmzDs25nfFwgOwor56S2Pmd1w6BufFwgOwor56S9PnLDqW5nfFwgOwor56WKPmLEk25nfFwgOwor56WSPnRpw6FvfFwgOwor56WYPnN1w6BufFwgOwor56WhPmNow6FpfFwgOwor56WpPnpow6BpfFwgOwor56WxPnNodcOsfFwgOwor56WzPmNoxJtufFwgOwor56W8Pmd1w6BufFwgOwor56W+PmzDrW5nfFwgOwor56aCPmNow6FufFwgOwor56aIPmNox45vfFwgOwor56aOPnpoxJNufFwgOwor56aQPnl1w6BufFwgOwor56aSPnhpx45ufFwgOwor56aTPnnDoW5nfFwgOwor56aaPnpodcOzfFwgOwor56abPnpoxJNufFwgOwor56acPnnHkm5nfFwgOwor56afPnTDoW5nfFwgOwor56akPnh1xIFufFwgOwor56apPnNow6BufFwgOwor56aqPmNow6FufFwgOwor56avPm7Ds25nfFwgOwor56eIPnhpxIFufFwgOwor56eKPm5pw6FufFwgOwor56eUPmfEk25nfFwgOwor56eiPmzDrW5nfFwgOwor56elPm5pw6FufFwgOwor56e+Pm7Ds25nfFwgOwor56iEPnR1w6BufFwgOwor56iFPnNodcOsfFwgOwor56iGPmrEq25nfFwgOwor56iJPmfEk25nfFwgOwor56iPPmzDqG5nfFwgOwor56iVPnpow7lufFwgOwor56iWPmLDoG5nfFwgOwor56icPmzDqW5nfFwgOwor56ifPmLHkG5nfFwgOwor56ioPmJpxIFufFwgOwor56ivPmNow6hufFwgOwor56ixPmNow6hufFwgOwor56i0Pmxpw6FufFwgOwor56i4PmJpxIFufFwgOwor56mFPmvEgW5nfFwgOwor56mHPnNoxIFufFwgOwor56mOPnnHkG5nfFwgOwor56mYPnhpxIFvfFwgOwor56maPmppxIFvfFwgOwor56mbPnpodcWNfFwgOwor56mcPnTDs25nfFwgOwor56mgPm7Ds25nfFwgOwor56mjPnLDoW5nfFwgOwor56msPmfHkm5nfFwgOwor56muPmJpxIFvfFwgOwor56m9PmrHkG5nfFwgOwor56qAPnpoxatufFwgOwor56qGPmJpx45ufFwgOwor56qJPmLHkG5nfFwgOwor56qMPmppw6BvfFwgOwor56qOPmRpw6BvfFwgOwor56qZPnhpxIFvfFwgOwor56qhPnpodcOsfFwgOwor56qkPmd1xIFufFwgOwor56qxPnRpw6BvfFwgOwor56qyPmNow6FvfFwgOwor56q0PnRpw6FufFwgOwor56q1PmRpw6BvfFwgOwor56q8PnpoxIFvfFwgOwor56q+Pmt1x45ufFwgOwor56uCPnBpw6FvfFwgOwor56uEPmN1w6BufFwgOwor56uFPnFpw6BvfFwgOwor56uJPmzHkm5nfFwgOwor56uPPnFpxIFufFwgOwor56uRPmjDs25nfFwgOwor56uTPnFpxIFufFwgOwor56uUPmfFjW5nfFwgOwor56uXPm1pw6BvfFwgOwor56uaPmLDoG5nfFwgOwor56ubPmzDrW5nfFwgOwor56ucPmzDs25nfFwgOwor56udPmLDrG5nfFwgOwor56ukPmjDs25nfFwgOwor56unPmrDrG5nfFwgOwor56uoPmRpw6BvfFwgOwor56urPmrDrG5nfFwgOwor56uuPnDDrW5nfFwgOwor56uwPnNow6FvfFwgOwor56uyPmPDqW5nfFwgOwor56uzPmTEk25nfFwgOwor56u1Pmh1xIFpfFwgOwor56u2PmrDrG5nfFwgOwor56u4PmrDrG5nfFwgOwor56u8PnDDqW5nfFwgOwor56yAPm3DoW5nfFwgOwor56yFPnhpw6FvfFwgOwor56yHPnN1w6BufFwgOwor56yJPnpoxJtufFwgOwor56yNPnpodcOsfFwgOwor56yOPnl1w6FufFwgOwor56yQPmfEgW5nfFwgOwor56yXPmTFjW5nfFwgOwor56yYPnNoxIFufFwgOwor56ytPmzDrW5nfFwgOwor56y+PmJpxIFufFwgOwor562FPnhpx45ufFwgOwor562KPmppx45vfFwgOwor562VPmjDoW5nfFwgOwor562cPmTEgW5nfFwgOwor562hPmppw6BufFwgOwor562kPmzDoW5nfFwgOwor562mPmd1x45ufFwgOwor562nPmppx45ufFwgOwor562pPnTHkm5nfFwgOwor562tPnN1w6BufFwgOwor562zPnTDrW5nfFwgOwor5627PmfDoG5nfFwgOwor562/Pnhpx45vfFwgOwor566JPmd1x45pfFwgOwor566LPmppxIFufFwgOwor566MPnpow6BvfFwgOwor566ePnF1xIFufFwgOwor566gPmNodcOtfFwgOwor566iPnl1xIFufFwgOwor566uPnh1xIFufFwgOwor566vPmJpxIFufFwgOwor566yPnhpx45ufFwgOwor566zPnDDrW5nfFwgOwor5665PnNodcOyfFwgOwor5666PmNox5RufFwgOwor5669PmTHkm5nfFwgOwor566+PnNodcOyfFwgOwor56+CPnjEq25nfFwgOwor56+FPmNodcOtfFwgOwor56+IPmbEk25nfFwgOwor56+KPmjDs25nfFwgOwor56+OPm1px45vfFwgOwor56+PPnFpw6BufFwgOwor56+WPnTDoW5nfFwgOwor56+YPmNoxY11fFwgOwor56+fPnFpw6BufFwgOwor56+gPnhpx45vfFwgOwor56+iPmfFjW5nfFwgOwor56+jPnDDoW5nfFwgOwor56+nPnpodcOzfFwgOwor56+pPnNoxIFpfFwgOwor56+tPmzDs25nfFwgOwor56+vPmppxIFufFwgOwor56+1PmPFjW5nfFwgOwor56+7PnBpw6BvfFwgOwor57CBPmNodcOyfFwgOwor57CFPmNox45ufFwgOwor57CIPnDDrW5nfFwgOwor57CJPmNow7J1fFwgOwor57COPnhpx45vfFwgOwor57CQPm5px45ufFwgOwor57CSPmN1w6BufFwgOwor57CYPnhpxIFvfFwgOwor57CcPmTDoG5nfFwgOwor57CdPmxpw6FvfFwgOwor57ChPmppx45ufFwgOwor57ClPmppxIFvfFwgOwor57CrPnhpxIFvfFwgOwor57C5PmTEgW5nfFwgOwor57C9PnFpxIFufFwgOwor57C+Pmxpw6FufFwgOwor57GIPnpoxJNufFwgOwor57GMPmNow7N1fFwgOwor57GQPnTDqW5nfFwgOwor57GVPmzHkm5nfFwgOwor57GXPnpodcOzfFwgOwor57GYPnTDqW5nfFwgOwor57GbPmppxIFufFwgOwor57GdPnnDrW5nfFwgOwor57GgPmzDs25nfFwgOwor57GkPnFpxIFufFwgOwor57GoPmxpw6FufFwgOwor57GpPmJpxIFufFwgOwor57GqPmR1w6BufFwgOwor57GrPnp1x45ufFwgOwor57GvPnnDrW5nfFwgOwor57GxPnpodcOzfFwgOwor57G2PnNoxJNufFwgOwor57G4PnNoxJNufFwgOwor57KBPnFpxIFufFwgOwor57KHPmvEgW5nfFwgOwor57KgPmjDs25nfFwgOwor57KhPnTDs25nfFwgOwor57KvPnhpw6BufFwgOwor57ODPnTDoW5nfFwgOwor57OEPmJpxIFufFwgOwor57OJPnrDsm5nfFwgOwor57OLPmppw6BufFwgOwor57ObPnTDoW5nfFwgOwor57OpPmt1w6BpfFwgOwor57OrPmh1w6FufFwgOwor57OtPnrDsm5nfFwgOwor57OuPnhpw6BufFwgOwor57OwPnR1w6FufFwgOwor57O2PnRpw6BvfFwgOwor57O8PmfFjW5nfFwgOwor57SCPnpow7J1fFwgOwor57SFPmjDs25nfFwgOwor57SUPmNow7pufFwgOwor57SYPmjDs25nfFwgOwor57ShPmbHjm5nfFwgOwor57SsPmNow7N1fFwgOwor57StPmjDs25nfFwgOwor57SzPnNoxJNufFwgOwor57S3PmzDrW5nfFwgOwor57S5PnNow6BvfFwgOwor57S7PnnEgW5nfFwgOwor57S+PnpoxJtufFwgOwor57WDPnhpw6FufFwgOwor57WMPmrEq25nfFwgOwor57WOPmjDoW5nfFwgOwor57WRPmfDqG5nfFwgOwor57WSPmNow7N1fFwgOwor57WZPmfEk25nfFwgOwor57WaPmfEk25nfFwgOwor57WePmppx45vfFwgOwor57WiPnh1w6BufFwgOwor57WjPmLEk25nfFwgOwor57WnPmp1w6BufFwgOwor57WoPnLDs25nfFwgOwor57WpPnRpw6BvfFwgOwor57WtPnF1w6BufFwgOwor57WxPnTHkm5nfFwgOwor57W4Pmppx45ufFwgOwor57W5Pmp1w6BufFwgOwor57W7Pm1px45ufFwgOwor57W8PnpoxJtufFwgOwor57aBPmLHjm5nfFwgOwor57aCPnTHkm5nfFwgOwor57aDPnhpxIFvfFwgOwor57aEPmh1x45ufFwgOwor57aGPmfEm25nfFwgOwor57aKPnTDrW5nfFwgOwor57aLPmjDs25nfFwgOwor57aOPnTEq25nfFwgOwor57aTPmrEq25nfFwgOwor57aYPmbDqW5nfFwgOwor57acPnrFjW5nfFwgOwor57adPmNoxJNufFwgOwor57ahPmRpw6BvfFwgOwor57aiPmNow7N1fFwgOwor57ajPnF1x45ufFwgOwor57akPnNow6BvfFwgOwor57anPnpox5RufFwgOwor57aqPnFpw6BufFwgOwor57arPnhpw6BufFwgOwor57asPnNow7J1fFwgOwor57axPmfEgW5nfFwgOwor57ayPnfHjm5nfFwgOwor57azPmLEk25nfFwgOwor57a0PmNodcOyfFwgOwor57a7Pnpow6BufFwgOwor57a9PmNodcOyfFwgOwor57a+PmzDrW5nfFwgOwor57a/Pm1pw6FufFwgOwor57eIPnjDrG5nfFwgOwor57ePPnrHkm5nfFwgOwor57eTPnnEq25nfFwgOwor57eYPmppxIFufFwgOwor57eaPnhpw6BufFwgOwor57ebPnJ1x45ufFwgOwor57ecPm1pw6FufFwgOwor57eePmR1w6BufFwgOwor57eiPm1pw6FvfFwgOwor57ejPnl1w6FufFwgOwor57ekPmJpx45ufFwgOwor57eoPmJpxIFufFwgOwor57epPmh1x45ufFwgOwor57eqPmfEk25nfFwgOwor57erPmPFjW5nfFwgOwor57esPm1px45ufFwgOwor57eyPm1px45vfFwgOwor57e0Pmxpw6BufFwgOwor57e1PnrFjW5nfFwgOwor57e2PmJpw6BufFwgOwor57e+PmNow6FufFwgOwor57iBPnl1w6FufFwgOwor57iCPnrHkm5nfFwgOwor57iGPmfEk25nfFwgOwor57iIPnnDrW5nfFwgOwor57iLPnpodcOsfFwgOwor57iNPmLEgW5nfFwgOwor57iQPnpow7J1fFwgOwor57iRPmppxIFufFwgOwor57iTPnF1x45ufFwgOwor57iYPmNoxJNufFwgOwor57iZPnLDs25nfFwgOwor57idPnpoxJtufFwgOwor57iiPnTDqW5nfFwgOwor57ijPnhpw6BufFwgOwor57ikPmPDs25nfFwgOwor57ilPnpoxJtufFwgOwor57imPnrDsm5nfFwgOwor57inPmbDqG5nfFwgOwor57irPmbDqW5nfFwgOwor57iwPmPDs25nfFwgOwor57ixPnrFjW5nfFwgOwor57i0PnFpw6BufFwgOwor57i5PnBpx45vfFwgOwor57i6Pmxpw6FufFwgOwor57i8Pnh1w6BufFwgOwor57i9PnrHkm5nfFwgOwor57i/PnNoxIFufFwgOwor57mCPmLEm25nfFwgOwor57mDPmLEk25nfFwgOwor57mGPm1pw6BvfFwgOwor57mPPnh1w6BufFwgOwor57mRPmPDqW5nfFwgOwor57mSPnrEk25nfFwgOwor57mVPnNow6BufFwgOwor57maPmxpw6FvfFwgOwor57mbPmNoxIFvfFwgOwor57mdPmppw6BufFwgOwor57mfPmNox45ufFwgOwor57mkPnp1x45ufFwgOwor57msPmh1w6BufFwgOwor57mtPmppx45ufFwgOwor57mvPmh1w6FufFwgOwor57mwPnFpxIFvfFwgOwor57mxPmPFjW5nfFwgOwor57mzPmppx45vfFwgOwor57m1PmNow6FufFwgOwor57m+PnFpx45ufFwgOwor57qEPnDDqW5nfFwgOwor57qJPnp1x45ufFwgOwor57qOPnLDoW5nfFwgOwor57qPPmNow6FufFwgOwor57qSPmNow6FufFwgOwor57qTPnnEq25nfFwgOwor57qWPnhpxIFufFwgOwor57qYPnp1x45ufFwgOwor57qcPmppx45vfFwgOwor57qePmxpw6BufFwgOwor57quPmjDs25nfFwgOwor57q7Pnpow6hufFwgOwor57yQPmJpw6BufFwgOwor57y+PnDDrW5nfFwgOwor572BPmfEgW5nfFwgOwor572DPnnEq25nfFwgOwor572GPmd1w6BufFwgOwor572LPnfDqG5nfFwgOwor572MPnnEq25nfFwgOwor572SPnfHjm5nfFwgOwor572TPmfEgW5nfFwgOwor572lPmp1w6BufFwgOwor5726PmNoxIFvfFwgOwor572/PnTDs25nfFwgOwor576CPmp1w6BufFwgOwor576EPnpow6BvfFwgOwor576JPmx1w6FufFwgOwor576PPnnDoW5nfFwgOwor576VPnnDoG5nfFwgOwor576YPnrEgW5nfFwgOwor576gPnhpw6BufFwgOwor576iPnLDs25nfFwgOwor576mPmh1w6FufFwgOwor576oPnhpw6BufFwgOwor576sPnhpw6FufFwgOwor576uPmfEk25nfFwgOwor576xPnl1w6FufFwgOwor5760PnNoxIFufFwgOwor5762PnNoxIFufFwgOwor5763Pmxpx45ufFwgOwor57+DPmjDs25nfFwgOwor57+QPnFpw6BvfFwgOwor57+dPmjDs25nfFwgOwor57+nPnh1xIFufFwgOwor57+qPnrFjW5nfFwgOwor57+yPnBpxIFvfFwgOwor57+0Pmxpw6FufFwgOwor57+5PnFpw6FvfFwgOwor57++Pnh1xIFufFwgOwor6ICOPnJ1x45ufFwgOwor6ICTPnTEq25nfFwgOwor6ICWPmNow6BvfFwgOwor6ICyPmh1w6FpfFwgOwor6IC0PmTEq25nfFwgOwor6IC+PmjDs25nfFwgOwor6IGEPnpoxJtufFwgOwor6IGZPmrEq25nfFwgOwor6IGgPnDDrW5nfFwgOwor6IGhPmPFjW5nfFwgOwor6IGkPnTDrW5nfFwgOwor6IGmPmPFjW5nfFwgOwor6IGrPmxpw6FufFwgOwor6IGsPnfEm25nfFwgOwor6IGuPmxpw6FufFwgOwor6IGvPmxpw6FufFwgOwor6IGwPmPFjW5nfFwgOwor6IGzPnPHkm5nfFwgOwor6IG0PnTEq25nfFwgOwor6IG5Pm7DrW5nfFwgOwor6IG8PnTEq25nfFwgOwor6IG9PnTEq25nfFwgOwor6IG+PmzDs25nfFwgOwor6IKBPnpow6BvfFwgOwor6IKIPnpow6BvfFwgOwor6IKSPmh1w6FufFwgOwor6IKZPnl1xIFufFwgOwor6IKoPnDDoG5nfFwgOwor6IK3PnFpxIFufFwgOwor6IK7PmNoxJNufFwgOwor6IK8PmrHkG5nfFwgOwor6IOLPnRpw6FufFwgOwor6IOTPnDDrW5nfFwgOwor6IOmPmvEk25nfFwgOwor6IOuPnDDoW5nfFwgOwor6IO7PmjDqW5nfFwgOwor6ISBPnRpx45vfFwgOwor6ISbPmrDrG5nfFwgOwor6ISdPmjEk25nfFwgOwor6ISgPmNoxIFufFwgOwor6IShPnTHkG5nfFwgOwor6ISjPmNow7pufFwgOwor6ISkPnNow6hufFwgOwor6ISlPnFpx45ufFwgOwor6ISnPmp1xIFufFwgOwor6ISyPm5pw6BvfFwgOwor6IS9PnpoxY11fFwgOwor6IS/PmJpxIFvfFwgOwor6IWAPmp1w6BufFwgOwor6IWBPnBpw6FufFwgOwor6IWOPnNow6hufFwgOwor6IWPPmNodcOyfFwgOwor6IWWPmTDsm5nfFwgOwor6IWZPnrFjW5nfFwgOwor6IWdPnJ1x45ufFwgOwor6IWzPmppx45vfFwgOwor6IW2PmR1w6BufFwgOwor6IaBPmxpw6FufFwgOwor6IaFPnTDoW5nfFwgOwor6IaHPnpodcOsfFwgOwor6IaLPmxpw6FvfFwgOwor6IaQPmJpxIFvfFwgOwor6IaWPnDEgW5nfFwgOwor6IagPmppxIFvfFwgOwor6IalPmNoxatufFwgOwor6IanPnDDqG5nfFwgOwor6IarPmxpw6FvfFwgOwor6IauPnhpxIFvfFwgOwor6IavPnTEk25nfFwgOwor6Ia+Pmt1w6BpfFwgOwor6Ia/Pm7Ds25nfFwgOwor6IeBPmxpw6FufFwgOwor6IeHPmp1x45ufFwgOwor6IeJPmxpx45ufFwgOwor6IeTPnrDoG5nfFwgOwor6IeUPnhpw6BufFwgOwor6IeVPmJpxIFvfFwgOwor6IeXPmt1xIFufFwgOwor6IecPnrEgW5nfFwgOwor6IefPnrDoG5nfFwgOwor6IegPmx1w6FufFwgOwor6IeiPnrEgW5nfFwgOwor6IekPnFpxIFufFwgOwor6IerPmppx45vfFwgOwor6IewPmNow7J1fFwgOwor6IexPm1pw6FufFwgOwor6Ie2Pmppw6BufFwgOwor6Ie9Pnhpw6BufFwgOwor6IiDPnFpx45vfFwgOwor6IiIPnjEq25nfFwgOwor6IiYPmd1x45ufFwgOwor6IiyPmzDrW5nfFwgOwor6Ii8PmjDs25nfFwgOwor6Ii9PnDDoW5nfFwgOwor6ImCPmbDqW5nfFwgOwor6ImGPmzDoW5nfFwgOwor6ImMPm5pw6BufFwgOwor6ImQPnrFjW5nfFwgOwor6ImRPmJpw6BufFwgOwor6ImVPmLDoG5nfFwgOwor6ImZPmPEgW5nfFwgOwor6ImhPmTEgW5nfFwgOwor6ImmPmppw6BufFwgOwor6ImsPmNow6FufFwgOwor6ImxPmppxIFufFwgOwor6Im1PnDDrW5nfFwgOwor6Im8PmTHkG5nfFwgOwor6IqBPmppxIFvfFwgOwor6IqDPmNoxIFpfFwgOwor6IqGPmNoxIFpfFwgOwor6Iq/Pmh1w6FufFwgOwor6IuAPmjDoW5nfFwgOwor6IuBPmPFjW5nfFwgOwor6IuWPm1pw6FvfFwgOwor6IuaPnnDsm5nfFwgOwor6IuoPmNoxIFufFwgOwor6IuqPmLHkG5nfFwgOwor6IuuPnhpxIFufFwgOwor6IuwPmjDs25nfFwgOwor6IuzPmTFjW5nfFwgOwor6IyYPmppw6BufFwgOwor6IyZPnLDs25nfFwgOwor6IydPmNox45pfFwgOwor6IyePmNow6lufFwgOwor6Iy7Pm3Hjm5nfFwgOwor6Iy8PnTDs25nfFwgOwor6I2BPmh1w6FufFwgOwor6I2KPmrEq25nfFwgOwor6I2NPnNoxY11fFwgOwor6I2TPnDEq25nfFwgOwor6I2tPmjDs25nfFwgOwor6I2uPnpow7J1fFwgOwor6I6APmNow6lufFwgOwor6I6EPmfEm25nfFwgOwor6I6QPmNow6lufFwgOwor6I6RPmbEk25nfFwgOwor6I6UPm3DqW5nfFwgOwor6I6VPnjDrG5nfFwgOwor6I6WPmrEq25nfFwgOwor6I6bPnTDrW5nfFwgOwor6I6jPnfDoW5nfFwgOwor6I6mPnNoxIFvfFwgOwor6I6nPnhpw6BufFwgOwor6I6sPm1px45ufFwgOwor6I62Pmxpx45ufFwgOwor6I6+Pm3Hjm5nfFwgOwor6I+DPmd1xIFufFwgOwor6I+EPmTFjW5nfFwgOwor6I+XPmNow7N1fFwgOwor6I+ZPmNodcOtfFwgOwor6I+aPnpow6BufFwgOwor6I+kPmp1x45ufFwgOwor6I+qPmTDoG5nfFwgOwor6I+uPmfEk25nfFwgOwor6I+1PnDDqW5nfFwgOwor6I+2PmLEm25nfFwgOwor6I+6PmppxIFufFwgOwor6I++PnRpw6FufFwgOwor6JCCPmNox5RufFwgOwor6JCFPmNoxatufFwgOwor6JCIPmh1w6FufFwgOwor6JCUPnRpw6FvfFwgOwor6JCgPm3DqW5nfFwgOwor6JCuPnh1xIFufFwgOwor6JCwPmxpw6BufFwgOwor6JCyPnl1w6FufFwgOwor6JC2PmNox5RufFwgOwor6JC3PnhpxIFvfFwgOwor6JC5PnBpxIFufFwgOwor6JC+PnnDrW5nfFwgOwor6JGCPm1px45ufFwgOwor6JGMPmppxIFufFwgOwor6JGPPmrEq25nfFwgOwor6JGRPmbEk25nfFwgOwor6JGSPmjDs25nfFwgOwor6JGTPmjDs25nfFwgOwor6JGgPnNoxJNufFwgOwor6JGlPnFpw6FufFwgOwor6JGuPmR1w6BufFwgOwor6JGyPnF1w6FufFwgOwor6JG0PnpoxJNufFwgOwor6JG2PnTDrW5nfFwgOwor6JG8PnrFjW5nfFwgOwor6JG+Pnl1xIFufFwgOwor6JKEPmd1xIFufFwgOwor6JKHPmNox45ufFwgOwor6JKTPmNow7pufFwgOwor6JKVPm3DoW5nfFwgOwor6JKWPnpoxJNufFwgOwor6JKdPnl1w6FufFwgOwor6JKnPmRpx45ufFwgOwor6JKoPnFpw6BufFwgOwor6JKsPnl1xIFufFwgOwor6JK0PnNodcOyfFwgOwor6JK2PmPHjm5nfFwgOwor6JK8PmPEgW5nfFwgOwor6JOIPmzDoW5nfFwgOwor6JOOPnTDoW5nfFwgOwor6JOiPmzDoW5nfFwgOwor6JOnPmRpw6BvfFwgOwor6JOoPnRpxIFvfFwgOwor6JOqPnTFjW5nfFwgOwor6JOuPmxpw6FufFwgOwor6JOvPmPFjW5nfFwgOwor6JOxPnDDrW5nfFwgOwor6JO0PmNow7pufFwgOwor6JSGPmzDrW5nfFwgOwor6JSIPmJpxIFvfFwgOwor6JSZPnh1w6BufFwgOwor6JSlPmPFjW5nfFwgOwor6JSmPm5px45vfFwgOwor6JSqPmppw6BufFwgOwor6JSuPmPDoW5nfFwgOwor6JSvPmNow6lufFwgOwor6JSzPnFpw6BufFwgOwor6JS1PnrEgW5nfFwgOwor6JS5Pmxpw6BufFwgOwor6JWEPm3DqW5nfFwgOwor6JWGPmNox45ufFwgOwor6JWHPmRpx45ufFwgOwor6JWLPmppxIFvfFwgOwor6JWOPnFpw6FvfFwgOwor6JWRPmppxIFufFwgOwor6JWbPnTDqW5nfFwgOwor6JWgPmt1w6BpfFwgOwor6JWjPnNow7lufFwgOwor6JWpPmTDoG5nfFwgOwor6JWrPmTHkm5nfFwgOwor6JWtPnhpxIFvfFwgOwor6JWvPmzDs25nfFwgOwor6JWzPmppxIFufFwgOwor6JW2PmzDrW5nfFwgOwor6JW9Pm7Ds25nfFwgOwor6JW/Pnh1xIFufFwgOwor6JaNPmx1w6BufFwgOwor6JaQPmzDqW5nfFwgOwor6JaTPnNoxJNufFwgOwor6JaVPmxpw6FufFwgOwor6JaXPnl1w6FufFwgOwor6JaaPnTDoW5nfFwgOwor6JafPmxpx45ufFwgOwor6JahPmTHkG5nfFwgOwor6JamPmppw6BufFwgOwor6Ja0Pm7DqW5nfFwgOwor6Ja1PmNow7N1fFwgOwor6Ja4PnBpxIFvfFwgOwor6Ja7PmPDs25nfFwgOwor6Ja8PmNow6lufFwgOwor6Ja9PnpoxJNufFwgOwor6JeAPnnDrW5nfFwgOwor6JeCPmPDsm5nfFwgOwor6JeGPmppx45ufFwgOwor6JeKPmJpx45ufFwgOwor6JeLPmRpw6BvfFwgOwor6JeRPmppw6BvfFwgOwor6JeWPnhpw6FufFwgOwor6JegPnhpw6BvfFwgOwor6JenPmJpxIFvfFwgOwor6JeoPmJpxIFvfFwgOwor6JeuPnFpw6FvfFwgOwor6Je8Pnh1xIFufFwgOwor6Je9PmNow6hufFwgOwor6JiJPm3DoW5nfFwgOwor6JiQPnhpxIFufFwgOwor6JiYPnLDoW5nfFwgOwor6JiaPnhpx45ufFwgOwor6JidPmxpw6BufFwgOwor6JiePmxpw6FufFwgOwor6JifPmzHkm5nfFwgOwor6JihPnnEq25nfFwgOwor6JiiPmzDs25nfFwgOwor6JimPmzDrW5nfFwgOwor6JioPmh1w6FpfFwgOwor6JivPmTDoG5nfFwgOwor6Ji0PmbEk25nfFwgOwor6Ji5Pmh1w6BpfFwgOwor6Ji+Pmh1w6BpfFwgOwor6JmDPmppxIFufFwgOwor6JmHPnF1x45ufFwgOwor6JmIPnhpxIFvfFwgOwor6JmKPmx1w6FufFwgOwor6JmTPnhpxIFvfFwgOwor6JmgPmppx45vfFwgOwor6JmlPnpow6BufFwgOwor6JmmPnpow6BufFwgOwor6JmtPmRpxIFvfFwgOwor6Jm4PmfDsm5nfFwgOwor6JqEPmLDqG5nfFwgOwor6JqIPnFpxIFufFwgOwor6JqfPnfDoW5nfFwgOwor6JqiPmjDoW5nfFwgOwor6JqrPnBpw6FvfFwgOwor6JqyPnDDrW5nfFwgOwor6Jq/Pnhpw6FufFwgOwor6JuBPmRpxIFvfFwgOwor6JuDPmLHkG5nfFwgOwor6JuNPnnDrW5nfFwgOwor6JuWPm3DoW5nfFwgOwor6JudPnhpw6FufFwgOwor6JuiPnDDrW5nfFwgOwor6JulPmfHkm5nfFwgOwor6JunPnfHjm5nfFwgOwor6JusPmfHkm5nfFwgOwor6Ju1PnjEq25nfFwgOwor6JyBPnh1w6FufFwgOwor6JyEPnpow6hufFwgOwor6JyGPnhpx45ufFwgOwor6JyLPmzDoW5nfFwgOwor6JyOPnl1xIFufFwgOwor6JyUPmRpw6BufFwgOwor6JyZPnPFjW5nfFwgOwor6JyvPmLDoG5nfFwgOwor6Jy1Pmp1x45ufFwgOwor6Jy4PmrEq25nfFwgOwor6J2APmTFjW5nfFwgOwor6J2EPnfHjm5nfFwgOwor6J2GPnnHjm5nfFwgOwor6J2PPnTDrW5nfFwgOwor6J2SPm1pw6FufFwgOwor6J2WPnh1xIFufFwgOwor6J2dPnl1w6FufFwgOwor6J2hPnJ1x45ufFwgOwor6J2qPnTEgW5nfFwgOwor6J2sPnrFjW5nfFwgOwor6J2vPnl1w6FufFwgOwor6J2/PnnDrW5nfFwgOwor6J6JPnfEk25nfFwgOwor6J6KPmxpw6FufFwgOwor6J6OPnLDs25nfFwgOwor6J6iPnnDrW5nfFwgOwor6J6jPnTDqW5nfFwgOwor6J6lPmPEgW5nfFwgOwor6J60PmNow6lufFwgOwor6J62PmLDqG5nfFwgOwor6J64PmNow6FufFwgOwor6J65Pmppw6BufFwgOwor6J+CPmppxIFvfFwgOwor6J+JPmxpw6BvfFwgOwor6J+MPmPFjW5nfFwgOwor6J+PPnhpxIFvfFwgOwor6J+aPnDDqW5nfFwgOwor6J+bPnDDqW5nfFwgOwor6J+cPmppx45vfFwgOwor6J+fPmxpw6FvfFwgOwor6J+sPmNow6FufFwgOwor6J+tPmppxIFvfFwgOwor6J+3PmTEgW5nfFwgOwor6J+6PnNow6BufFwgOwor6KCEPm3Em25nfFwgOwor6KCFPnnDrW5nfFwgOwor6KCGPmNow6BpfFwgOwor6KCJPnh1xIFufFwgOwor6KCOPm3Hjm5nfFwgOwor6KCRPnLDs25nfFwgOwor6KCSPmppx45ufFwgOwor6KCXPnpodcOzfFwgOwor6KCoPnhpxIFvfFwgOwor6KCqPmzDs25nfFwgOwor6KCsPmzDs25nfFwgOwor6KCtPmbEk25nfFwgOwor6KCvPmLDqG5nfFwgOwor6KCzPnnEq25nfFwgOwor6KC4PnF1w6FufFwgOwor6KGJPmjDoW5nfFwgOwor6KGPPnl1w6BufFwgOwor6KGRPmzDrW5nfFwgOwor6KGSPnh1w6BufFwgOwor6KGVPnTDsm5nfFwgOwor6KGWPmzDsm5nfFwgOwor6KGYPnhpw6FufFwgOwor6KGgPnpoxatufFwgOwor6KKKPmzHkG5nfFwgOwor6KKRPnNow6BvfFwgOwor6KKXPnpoxJtufFwgOwor6KKoPnhpw6BufFwgOwor6KOKPm5px45vfFwgOwor6KOQPmp1xIFufFwgOwor6KORPnNoxJNufFwgOwor6KOWPnpoxJtufFwgOwor6KOXPmxpx45ufFwgOwor6KOePnNodcOsfFwgOwor6KOnPmNoxIFufFwgOwor6KOrPnl1w6BufFwgOwor6KOsPmzDrW5nfFwgOwor6KOvPmNow7N1fFwgOwor6KO3Pnl1xIFufFwgOwor6KSJPnBpxIFufFwgOwor6KSNPmR1xIFufFwgOwor6KSRPnl1w6BufFwgOwor6KSWPnR1w6BufFwgOwor6KSiPmh1w6FpfFwgOwor6KSjPnLDs25nfFwgOwor6KSkPnl1w6BufFwgOwor6KSsPnPHjm5nfFwgOwor6KStPm5px45vfFwgOwor6KSuPnnEq25nfFwgOwor6KSwPnFpxIFufFwgOwor6KSxPmh1w6FpfFwgOwor6KSzPmxpw6FufFwgOwor6KS+PmJpx45vfFwgOwor6KWHPmppx45ufFwgOwor6KWJPmppw6BufFwgOwor6KWYPmNoxIFufFwgOwor6KWbPm7Ds25nfFwgOwor6KWcPmNoxIFufFwgOwor6KWdPmxpw6BufFwgOwor6KWgPmTEgW5nfFwgOwor6KWvPmNow6hufFwgOwor6KWxPmzDs25nfFwgOwor6KWzPnhpxIFufFwgOwor6KW6Pmppx45ufFwgOwor6KaCPmbEm25nfFwgOwor6KaFPmJpw6BvfFwgOwor6KaLPmppw6BufFwgOwor6KaMPmd1xIFufFwgOwor6KaNPmJpw6BufFwgOwor6KaQPmppw6BvfFwgOwor6KaRPnBpx45ufFwgOwor6KaYPnpoxIFufFwgOwor6KacPnRpw6BvfFwgOwor6KadPmxpw6FufFwgOwor6KaiPnNox45ufFwgOwor6KalPnRpx45ufFwgOwor6KatPm3DrW5nfFwgOwor6KauPnnDrW5nfFwgOwor6KaxPnpow6BufFwgOwor6KazPmd1xIFufFwgOwor6Ka0PmTEk25nfFwgOwor6Ka1Pmppw6BufFwgOwor6Ka4Pmppw6BufFwgOwor6Ka5Pmppw6BvfFwgOwor6KeAPmd1xIFufFwgOwor6KeNPnRpx45ufFwgOwor6KeYPmNow6BvfFwgOwor6KeqPnjEq25nfFwgOwor6KeyPnjEq25nfFwgOwor6Ke1PmfFjW5nfFwgOwor6KiBPmjEk25nfFwgOwor6KiCPmTDrG5nfFwgOwor6KiGPmppw6BvfFwgOwor6KiLPmRpw6BvfFwgOwor6KiMPmjDs25nfFwgOwor6KiVPnNow6BufFwgOwor6KifPnPDsm5nfFwgOwor6KikPnhpw6FvfFwgOwor6KimPmNow6lufFwgOwor6KiqPmbHjm5nfFwgOwor6KisPmNoxIFvfFwgOwor6KiuPnhpxIFufFwgOwor6Ki3PnNoxJNufFwgOwor6Ki6PnpoxJtufFwgOwor6KmDPnF1x45ufFwgOwor6KmFPmzDrW5nfFwgOwor6KmLPnpow7J1fFwgOwor6KmUPnpow6BvfFwgOwor6KmVPnDDrW5nfFwgOwor6KmgPnnHkm5nfFwgOwor6KmoPmppxIFvfFwgOwor6KmuPnF1w6FufFwgOwor6Km1PnNoxJNufFwgOwor6Km2PmNow7N1fFwgOwor6KqBPmLEm25nfFwgOwor6KqCPnRpx45vfFwgOwor6KqPPmzHjm5nfFwgOwor6KqUPnTHkG5nfFwgOwor6KqXPmNow6FufFwgOwor6KqZPmjDqW5nfFwgOwor6KqaPnFpw6BvfFwgOwor6KqcPnNodcOgfFwgOwor6KqiPnhpw6BufFwgOwor6KqmPnPDsm5nfFwgOwor6KqpPmrDrG5nfFwgOwor6KqqPnNodcWNfFwgOwor6KqrPnNodcOsfFwgOwor6KqsPnNodcWNfFwgOwor6KqwPnNow6lpfFwgOwor6Kq0PmPDs25nfFwgOwor6Kq1Pnhpw6FvfFwgOwor6Kq3PnfHjm5nfFwgOwor6Kq4Pnh1w6FufFwgOwor6Kq/PmRpw6BvfFwgOwor6KuBPmNodcOyfFwgOwor6KuCPmNox45ufFwgOwor6KuDPmNoxJNufFwgOwor6KuEPnpoxatufFwgOwor6KuIPnpodcOsfFwgOwor6KuLPnHHkG5nfFwgOwor6KuMPmTHkm5nfFwgOwor6KuRPnpodcOzfFwgOwor6KuTPmppw6BufFwgOwor6KuXPnNoxJtufFwgOwor6KuYPmJpx45vfFwgOwor6KuZPmh1w6BpfFwgOwor6KuaPnBpw6FufFwgOwor6KuePnBpx45ufFwgOwor6KugPnh1xIFufFwgOwor6KuqPnTDrW5nfFwgOwor6KurPmppw6BufFwgOwor6Ku0Pnhpw6FufFwgOwor6Ku2PmNow6lufFwgOwor6Ku3PmbDqG5nfFwgOwor6Ku5PmNox45vfFwgOwor6Ku7PmjEk25nfFwgOwor6Ku8Pnh1xIFufFwgOwor6KyEPnTDqW5nfFwgOwor6KyGPnNow6BufFwgOwor6KyNPnnDrW5nfFwgOwor6KyTPmNoxJNufFwgOwor6KyVPnFpw6BufFwgOwor6KyXPmLDoG5nfFwgOwor6KyZPnFpxIFufFwgOwor6KycPnl1w6BufFwgOwor6KyfPnHHkG5nfFwgOwor6KykPmJpxIFvfFwgOwor6KylPmPDsm5nfFwgOwor6KytPmppx45ufFwgOwor6KywPmxpw6FufFwgOwor6Ky2PnpodcOzfFwgOwor6Ky/PmNow6FvfFwgOwor6K2CPmNox45ufFwgOwor6K2EPnrEk25nfFwgOwor6K2NPnnDrG5nfFwgOwor6K2RPmppx45vfFwgOwor6K2ZPnFpw6FvfFwgOwor6K2ePnh1xIFufFwgOwor6K2hPmTHjm5nfFwgOwor6K2jPnFpxIFufFwgOwor6K2lPmppw6BvfFwgOwor6K2nPmxpw6FufFwgOwor6K2rPnpoxIFufFwgOwor6K2xPnNow6BufFwgOwor6K2yPnLDoG5nfFwgOwor6K20PnFpx45ufFwgOwor6K21PnpodcOsfFwgOwor6K24PnpoxY11fFwgOwor6K26PmppxIFufFwgOwor6K27PnnEq25nfFwgOwor6K28Pmppw6BufFwgOwor6K2+Pmppx45ufFwgOwor6K6CPnh1w6BufFwgOwor6K6FPnNoxJtufFwgOwor6K6HPmNox45ufFwgOwor6K6KPmJpw6BufFwgOwor6K6OPmNow7N1fFwgOwor6K6QPmNow7N1fFwgOwor6K6SPmNow6FufFwgOwor6K6TPnLDoG5nfFwgOwor6K6WPmNow6hufFwgOwor6K6ZPmh1xIFufFwgOwor6K6cPmTHjm5nfFwgOwor6K6dPmjDsm5nfFwgOwor6K+qPnpoxY11fFwgOwor6LCCPnNoxJtufFwgOwor6LCJPnNoxJtufFwgOwor6LCrPmppx45ufFwgOwor6LC5PmjDs25nfFwgOwor6LC8PmjDs25nfFwgOwor6LC+PmjFjW5nfFwgOwor6LGFPmzDs25nfFwgOwor6LGKPmbEk25nfFwgOwor6LGLPmTEk25nfFwgOwor6LGPPnhpw6BufFwgOwor6LGQPmbEk25nfFwgOwor6LGcPmppxIFufFwgOwor6LGjPmppxIFufFwgOwor6LGyPmh1w6FufFwgOwor6LG1PnrFjW5nfFwgOwor6LG8Pmh1xIFufFwgOwor6LKGPmh1w6FufFwgOwor6LKSPnR1xIFufFwgOwor6LKbPmh1xIFufFwgOwor6LKePnpoxJNufFwgOwor6LKfPnl1w6FufFwgOwor6LKiPmfDsm5nfFwgOwor6LKlPmjDoW5nfFwgOwor6LKrPmd1w6BufFwgOwor6LK1PnBpx45ufFwgOwor6LK2PmJpx45ufFwgOwor6LOGPnBpw6FufFwgOwor6LOOPmppw6BufFwgOwor6LOPPnnDrG5nfFwgOwor6LORPnpow6hufFwgOwor6LOYPnrEgW5nfFwgOwor6LOZPnpoxY11fFwgOwor6LOdPmNoxJNufFwgOwor6LOfPnRpx45ufFwgOwor6LOhPmfEk25nfFwgOwor6LOiPnhpw6FufFwgOwor6LOkPmppw6BufFwgOwor6LOoPmPDs25nfFwgOwor6LOpPmPDs25nfFwgOwor6LO1PmbDqG5nfFwgOwor6LO2PmPDoG5nfFwgOwor6LO/Pmxpw6FvfFwgOwor6LSCPmNoxJtufFwgOwor6LSFPnpodcOsfFwgOwor6LSGPmJpxIFvfFwgOwor6LSIPnrDqG5nfFwgOwor6LSNPnNow6BufFwgOwor6LSPPnnDrW5nfFwgOwor6LSTPnrEgW5nfFwgOwor6LSZPnh1w6BufFwgOwor6LSaPmzDsm5nfFwgOwor6LSgPnl1w6FufFwgOwor6LWSPnpoxY11fFwgOwor6LWXPmbDqG5nfFwgOwor6LWvPnTDoW5nfFwgOwor6LW4PnNow6BufFwgOwor6LW7Pnhpx45ufFwgOwor6LaAPmNow6lufFwgOwor6LaCPmNow6hufFwgOwor6LaIPnpoxIFufFwgOwor6LaSPmRpw6BvfFwgOwor6LaZPnpow6BvfFwgOwor6LadPmppw6BufFwgOwor6LagPmNow6BvfFwgOwor6LarPnFpw6FvfFwgOwor6LasPnFpw6FvfFwgOwor6LatPmppw6BvfFwgOwor6La7PmNoxJtufFwgOwor6La9PmbDoG5nfFwgOwor6LeIPm5px45ufFwgOwor6LenPnF1w6FufFwgOwor6LewPmLDqG5nfFwgOwor6LiBPmrDrG5nfFwgOwor6LiDPnhpxIFvfFwgOwor6LiHPmzDoG5nfFwgOwor6LiLPmppx45vfFwgOwor6LiNPnFpxIFvfFwgOwor6LiQPmppw6BufFwgOwor6LiSPmNodcWNfFwgOwor6LicPmzDqG5nfFwgOwor6LihPnF1w6FufFwgOwor6LirPnDDqG5nfFwgOwor6LizPmNox5RufFwgOwor6Li0PnnHkm5nfFwgOwor6Li3PmR1w6BufFwgOwor6Li4PmNoxJtufFwgOwor6Li6Pmppw6BufFwgOwor6Li8PnTDoW5nfFwgOwor6LmNPm5px45ufFwgOwor6LmOPmRpxIFufFwgOwor6LmYPmxpw6FvfFwgOwor6LmaPnTEgW5nfFwgOwor6LmkPnrFjW5nfFwgOwor6LmlPmxpw6FufFwgOwor6LmoPm5px45ufFwgOwor6Lm6PnFpxIFvfFwgOwor6Lm7PnFpxIFvfFwgOwor6LqGPmNodcOyfFwgOwor6LqIPnFpw6BvfFwgOwor6LqKPmNow7N1fFwgOwor6LqUPmNow6FufFwgOwor6LqWPmR1w6BufFwgOwor6LqYPmzDs25nfFwgOwor6LqaPnhpxIFufFwgOwor6LqfPnLDoW5nfFwgOwor6LqlPmN1xIFufFwgOwor6LqmPnp1xIFufFwgOwor6LqzPmfFjW5nfFwgOwor6Lq0PmzDoW5nfFwgOwor6Lq/PmvEgW5nfFwgOwor6LuSPnh1xIFufFwgOwor6LuVPnNoxIFufFwgOwor6LuZPmNow6lufFwgOwor6LufPnJ1x45ufFwgOwor6LujPmjFjW5nfFwgOwor6LuoPmzDrW5nfFwgOwor6LurPnpoxJtufFwgOwor6Lu1PnLHkm5nfFwgOwor6Lu4Pnpow7N1fFwgOwor6Lu9PnDEk25nfFwgOwor6Lu/PnDDrW5nfFwgOwor6LyDPmppw6BvfFwgOwor6LyGPmNoxatufFwgOwor6LyHPnF1w6FufFwgOwor6LyIPnpoxY11fFwgOwor6LyOPnNoxIFvfFwgOwor6LyQPmh1x45ufFwgOwor6LyRPnHDrG5nfFwgOwor6LyVPnHEq25nfFwgOwor6LyWPmzDqW5nfFwgOwor6LyYPmzDrW5nfFwgOwor6LyaPnpow6BufFwgOwor6LyePnfHjm5nfFwgOwor6LyfPmNodcOyfFwgOwor6LyjPnDDqW5nfFwgOwor6LykPnFpw6BufFwgOwor6LymPm5px45ufFwgOwor6LynPnBpw6FufFwgOwor6LyoPmd1x45ufFwgOwor6LytPnJ1x45ufFwgOwor6LywPnnDoW5nfFwgOwor6LyxPnhpw6FufFwgOwor6Ly0PmNoxatufFwgOwor6Ly3PmjFjW5nfFwgOwor6Ly+Pnpox45ufFwgOwor6L2FPnl1w6FufFwgOwor6L2IPmNow6FvfFwgOwor6L2OPmppw6BvfFwgOwor6L2PPnpow6BufFwgOwor6L2YPmh1w6BufFwgOwor6L2ePnhpw6BufFwgOwor6L2fPmjFjW5nfFwgOwor6L6APnpoxY11fFwgOwor6L6hPmJpw6BufFwgOwor6L6nPmJpw6BufFwgOwor6L6uPmJpw6BufFwgOwor6L6vPmJpw6BufFwgOwor6L6yPm7Ds25nfFwgOwor6L6zPm7Ds25nfFwgOwor6L60PnpoxJtufFwgOwor6L61PmNodcOyfFwgOwor6L64PnLDqW5nfFwgOwor6L66PmJpxIFufFwgOwor6L6/PmNoxIFufFwgOwor6L+LPnfDoG5nfFwgOwor6L+NPnpoxatufFwgOwor6L+SPmjDoW5nfFwgOwor6L+nPmNow6lufFwgOwor6L+sPnfHjm5nfFwgOwor6L+1PnTDs25nfFwgOwor6YCVPmrDrG5nfFwgOwor6YCjPmxpw6FufFwgOwor6YCsPmLDqG5nfFwgOwor6YCxPnpoxY11fFwgOwor6YC0PmNodcOyfFwgOwor6YC6Pnl1x45ufFwgOwor6YC/PmTDoG5nfFwgOwor6YGJPnpoxJNufFwgOwor6YGgPnl1x45ufFwgOwor6YGhPnFpw6BufFwgOwor6YGmPmd1w6BufFwgOwor6YG3PnFpxIFufFwgOwor6YG4Pnh1x45ufFwgOwor6YG8Pmxpw6FvfFwgOwor6YKFPnpoxIFufFwgOwor6YKGPnTDqW5nfFwgOwor6YKJPmJpxIFufFwgOwor6YKKPmJpxIFufFwgOwor6YKNPnl1w6FufFwgOwor6YKWPmvDoW5nfFwgOwor6YKfPmvDoG5nfFwgOwor6YKlPnNoxJtufFwgOwor6YKnPnl1w6FufFwgOwor6YKrPmLEgW5nfFwgOwor6YK0PmLHkG5nfFwgOwor6YOGPmh1w6FufFwgOwor6YOJPnjDrW5nfFwgOwor6YOePmzDoW5nfFwgOwor6YOgPmfEm25nfFwgOwor6YOsPnHEq25nfFwgOwor6YOuPnpoxY11fFwgOwor6YOxPnDDrW5nfFwgOwor6YO6PnnFjW5nfFwgOwor6YO7PnFpxIFvfFwgOwor6YSMPnTDoW5nfFwgOwor6YSNPm3DrW5nfFwgOwor6YSYPnnFjW5nfFwgOwor6YSbPmNow6FvfFwgOwor6YSdPmxpx45vfFwgOwor6YShPnFpxIFvfFwgOwor6YSlPnFpxIFvfFwgOwor6YSnPmTDqG5nfFwgOwor6YSrPmPDqW5nfFwgOwor6YS2Pmt1w6BpfFwgOwor6YS3PmbEk25nfFwgOwor6YS4Pm3DqW5nfFwgOwor6YS7Pmxpx45ufFwgOwor6YS9PmNow6FufFwgOwor6YWBPmNow6FufFwgOwor6YWEPmh1xIFufFwgOwor6YWOPnpow7J1fFwgOwor6YWZPnpoxJNufFwgOwor6YWfPnRpxIFufFwgOwor6YWnPmNow7N1fFwgOwor6YaGPnpox45ufFwgOwor6YaKPmNodcOyfFwgOwor6YaVPmNow7pufFwgOwor6YacPmNox5J1fFwgOwor6YafPnnDsm5nfFwgOwor6YalPnBpx45vfFwgOwor6YamPnNox45ufFwgOwor6YayPm7Ds25nfFwgOwor6Ya2Pmppw6BvfFwgOwor6Ya7PmNow7N1fFwgOwor6Ya9PmzDrW5nfFwgOwor6YeCPmppw6BvfFwgOwor6YeGPmJpw6BufFwgOwor6YeVPmxpx45vfFwgOwor6YeXPnpoxIFvfFwgOwor6YeYPmTEq25nfFwgOwor6YedPnpoxJNufFwgOwor6YegPmx1w6BufFwgOwor6YejPmRpw6BvfFwgOwor6YekPnNoxIFufFwgOwor6YetPmfEgW5nfFwgOwor6YevPm3DoW5nfFwgOwor6Ye1PmNoxIFpfFwgOwor6Ye6PnFpxIFufFwgOwor6Ye8Pmppw6BufFwgOwor6YiBPmbEgW5nfFwgOwor6YiCPmNow6lufFwgOwor6YiDPnjDrW5nfFwgOwor6YiQPnFpw6FufFwgOwor6YiTPmNox45vfFwgOwor6YiUPmNoxIFvfFwgOwor6YicPmjDs25nfFwgOwor6YinPmvDoG5nfFwgOwor6Yi0PmzDrW5nfFwgOwor6Yi1PmLDrG5nfFwgOwor6Yi/PmRpw6BufFwgOwor6YmGPnp1xIFufFwgOwor6YmKPnpoxIFvfFwgOwor6YmXPnFpw6FufFwgOwor6YmZPnpox45pfFwgOwor6YmbPnFpxIFufFwgOwor6YmgPnnEgW5nfFwgOwor6YmuPnNoxJNufFwgOwor6Ym1PnTDs25nfFwgOwor6Ym2PnjDrW5nfFwgOwor6Ym3PmjDs25nfFwgOwor6Ym4Pmppx45vfFwgOwor6Ym8PmLHkG5nfFwgOwor6YqCPnpoxY11fFwgOwor6YqFPnTDs25nfFwgOwor6YqPPnNow6BufFwgOwor6YqRPnhpx45ufFwgOwor6YqSPnjDrW5nfFwgOwor6YqTPnF1w6FufFwgOwor6YqYPm3DrW5nfFwgOwor6YqaPmRpw6BvfFwgOwor6YqbPnhpxIFufFwgOwor6YqcPnhpw6FufFwgOwor6YqtPnFpw6FufFwgOwor6YqxPmRpw6BvfFwgOwor6Yq1PmvEk25nfFwgOwor6Yq3PnhpxIFvfFwgOwor6Yq6PnrDoG5nfFwgOwor6Yq+PmfHkm5nfFwgOwor6YuDPmzDoW5nfFwgOwor6YuLPmNow6FufFwgOwor6YuMPmTDrG5nfFwgOwor6YuQPmjDs25nfFwgOwor6YuRPmN1xIFufFwgOwor6YuSPmbEk25nfFwgOwor6YuTPmNoxIFufFwgOwor6YuXPnh1xIFufFwgOwor6YubPmfHkm5nfFwgOwor6YucPnpodcOzfFwgOwor6YuePnjDrW5nfFwgOwor6YufPnFpxIFufFwgOwor6YugPnNow6hufFwgOwor6YulPnrDqG5nfFwgOwor6YupPm3DoW5nfFwgOwor6Yu6Pnl1xIFufFwgOwor6Yu7Pmppw6BufFwgOwor6Yu8PmfEgW5nfFwgOwor6Yu9PmRpw6BvfFwgOwor6YyIPmLDqG5nfFwgOwor6YyLPnDDqW5nfFwgOwor6YyQPnpodcSrfFwgOwor6YyYPmNodcOtfFwgOwor6YydPmNow7pufFwgOwor6YyePmNow7pufFwgOwor6YygPmTDrG5nfFwgOwor6YyiPnFpw6FufFwgOwor6YyjPnpodcOsfFwgOwor6YynPmd1x45ufFwgOwor6YyqPnRpx45ufFwgOwor6YysPmRpxIFvfFwgOwor6YyxPnpoxJNufFwgOwor6YyzPm3Em25nfFwgOwor6Yy2PmJpx45vfFwgOwor6Y2BPnhpxIFufFwgOwor6Y2KPmxpw6BufFwgOwor6Y2MPnhpx45ufFwgOwor6Y2QPmPFjW5nfFwgOwor6Y2WPmNoxJtufFwgOwor6Y2ZPmjDsm5nfFwgOwor6Y2aPnnDoW5nfFwgOwor6Y2bPmR1w6BufFwgOwor6Y2ePmvEk25nfFwgOwor6Y2fPnjEq25nfFwgOwor6Y2jPnpoxIFvfFwgOwor6Y2nPmjFjW5nfFwgOwor6Y2pPnRpx45ufFwgOwor6Y2rPnFpxIFvfFwgOwor6Y2sPnFpxIFvfFwgOwor6Y2vPmPFjW5nfFwgOwor6Y2wPmh1w6FufFwgOwor6Y2zPmppw6BufFwgOwor6Y20PmR1xIFufFwgOwor6Y21Pmppw6BufFwgOwor6Y25Pnh1xIFufFwgOwor6Y28PnpoxJNufFwgOwor6Y29PmJpxIFufFwgOwor6Y6IPmNodcWNfFwgOwor6Y6KPmLDoG5nfFwgOwor6Y6MPmxpw6FufFwgOwor6Y6TPnfEk25nfFwgOwor6Y6UPnLDs25nfFwgOwor6Y6VPnTDoW5nfFwgOwor6Y6aPmNodcOtfFwgOwor6Y6fPnPHjm5nfFwgOwor6Y6gPmfEgW5nfFwgOwor6Y6lPnRpw6FvfFwgOwor6Y6qPmppx45ufFwgOwor6Y6tPnRpw6FufFwgOwor6Y6uPnpow6hufFwgOwor6Y6vPmzDoW5nfFwgOwor6Y6xPnl1w6FufFwgOwor6Y6yPnTHjm5nfFwgOwor6Y64Pmp1xIFufFwgOwor6Y+EPnR1w6FufFwgOwor6Y+GPmd1w6BufFwgOwor6Y+HPnh1w6BufFwgOwor6Y+IPmxpw6BufFwgOwor6Y+SPnFpxIFvfFwgOwor6Y+TPmPFjW5nfFwgOwor6Y+UPmJpxIFvfFwgOwor6Y+XPmvEk25nfFwgOwor6Y+cPnTEgW5nfFwgOwor6Y+ePnnFjW5nfFwgOwor6Y+fPmNox45ufFwgOwor6Y+gPmbEk25nfFwgOwor6Y+hPmrDrG5nfFwgOwor6Y+iPmJpxIFvfFwgOwor6Y+lPmppw6BufFwgOwor6Y+mPmPFjW5nfFwgOwor6Y+nPmzDs25nfFwgOwor6Y+pPmppw6BufFwgOwor6Y+uPmvEgW5nfFwgOwor6Y+wPmLDqG5nfFwgOwor6ZCEPmjDqW5nfFwgOwor6ZCIPnFpw6FvfFwgOwor6ZCJPnF1xIFufFwgOwor6ZCKPnnDoW5nfFwgOwor6ZCLPnTDoG5nfFwgOwor6ZCMPmxpw6BvfFwgOwor6ZCOPmppxIFvfFwgOwor6ZCQPmxpw6FvfFwgOwor6ZCVPmTDqG5nfFwgOwor6ZCXPmppx45ufFwgOwor6ZCZPmTDqG5nfFwgOwor6ZCbPnnDrG5nfFwgOwor6ZCkPmTHkG5nfFwgOwor6ZClPmppxIFufFwgOwor6ZCnPmppx45ufFwgOwor6ZCrPmp1xIFufFwgOwor6ZCuPmxpw6FufFwgOwor6ZCvPnpodcOzfFwgOwor6ZCwPnFpxIFvfFwgOwor6ZCxPnFpxIFufFwgOwor6ZCyPnpodcOzfFwgOwor6ZC2Pmh1w6FufFwgOwor6ZGBPnrFjW5nfFwgOwor6ZGDPmRpw6BvfFwgOwor6ZGFPmjDqW5nfFwgOwor6ZGGPnpodcOsfFwgOwor6ZGLPnHDrG5nfFwgOwor6ZGNPnnEq25nfFwgOwor6ZGPPm7DrW5nfFwgOwor6ZGRPmppw6BufFwgOwor6ZGSPmppw6BufFwgOwor6ZGaPnp1w6BufFwgOwor6ZGdPnDDqW5nfFwgOwor6ZGgPnNodcOyfFwgOwor6ZGhPmNodcOyfFwgOwor6ZGjPmJpxIFvfFwgOwor6ZGoPmzDs25nfFwgOwor6ZGsPmppw6BufFwgOwor6ZGvPmppxIFufFwgOwor6ZGxPmNow6FufFwgOwor6ZG1Pmd1w6BufFwgOwor6ZG2PmPDoW5nfFwgOwor6ZG5PmN1w6BufFwgOwor6ZG9Pnp1xIFufFwgOwor6ZG+Pmx1w6FufFwgOwor6ZKCPnTHjm5nfFwgOwor6ZKMPmRpx45vfFwgOwor6ZKYPnjDrW5nfFwgOwor6ZOPPnjDrW5nfFwgOwor6ZOTPm3DoW5nfFwgOwor6ZOmPnhpxIFufFwgOwor6ZO0PnTDoG5nfFwgOwor6ZSTPnFpxIFufFwgOwor6ZSzPnnEq25nfFwgOwor6ZWLPnTHjm5nfFwgOwor6ZWVPnLDs25nfFwgOwor6ZWaPmLDqG5nfFwgOwor6ZWfPnh1w6BufFwgOwor6ZWoPmN1xIFufFwgOwor6ZWpPmN1w6BufFwgOwor6ZWuPmh1w6FufFwgOwor6ZW1PmNow6FufFwgOwor6ZW9Pmxpx45vfFwgOwor6ZaDPnNox45ufFwgOwor6ZaMPmvDoG5nfFwgOwor6ZaNPmLEk25nfFwgOwor6ZaOPmjDs25nfFwgOwor6ZaRPnhpw6FufFwgOwor6ZaSPmppw6BufFwgOwor6ZaTPmppxIFufFwgOwor6ZaaPmppxIFufFwgOwor6ZabPnDEk25nfFwgOwor6ZaePmJpw6BufFwgOwor6ZaiPmd1xIFufFwgOwor6ZanPmjDsm5nfFwgOwor6ZasPmzHjm5nfFwgOwor6ZauPnTDrW5nfFwgOwor6ZazPmNox45ufFwgOwor6ZeQPnRpw6FufFwgOwor6ZeXPmd1xIFufFwgOwor6ZecPmd1xIFufFwgOwor6ZedPnBpw6FvfFwgOwor6ZehPmNox45ufFwgOwor6ZejPmTDoG5nfFwgOwor6ZekPmh1w6FufFwgOwor6ZibPmh1w6FufFwgOwor6ZisPmvEk25nfFwgOwor6ZitPmp1w6BufFwgOwor6ZmDPmLHkG5nfFwgOwor6ZmXPnFpw6BvfFwgOwor6ZmYPnjDrW5nfFwgOwor6ZmZPmNow7pufFwgOwor6ZmcPnNox45ufFwgOwor6ZmdPnNox45ufFwgOwor6ZmjPnpow6hufFwgOwor6ZmlPnhpw6BufFwgOwor6ZmzPmNow6lufFwgOwor6Zm6Pnhpx45ufFwgOwor6Zm9PnnDoW5nfFwgOwor6Zm+PnLDqW5nfFwgOwor6Zm/PnNox45ufFwgOwor6ZqaPnTDoW5nfFwgOwor6ZqlPmTDqG5nfFwgOwor6ZqqPnhpx45ufFwgOwor6Zq0PmzHkm5nfFwgOwor6Zq/PnFpxIFvfFwgOwor6ZuIPmh1w6FufFwgOwor6ZuUPmNow7N1fFwgOwor6ZuaPmd1w6BufFwgOwor6ZudPnnFjW5nfFwgOwor6ZuxPnDDoW5nfFwgOwor6Zu6Pm3DqW5nfFwgOwor6Zu7PmRpw6BufFwgOwor6Zu8PmTDoG5nfFwgOwor6Zu9PnjDrW5nfFwgOwor6Zu/Pnpow6BvfFwgOwor6ZyDPmNow6lufFwgOwor6ZyKPmzDrW5nfFwgOwor6ZyMPmNoxY11fFwgOwor6ZyQPnfEk25nfFwgOwor6ZyRPnpoxIFufFwgOwor6ZyUPmNow7J1fFwgOwor6ZyYPmTDsm5nfFwgOwor6ZyZPnnEq25nfFwgOwor6ZybPmzDrW5nfFwgOwor6ZydPmzDrW5nfFwgOwor6ZyfPmjDs25nfFwgOwor6ZylPm3DqG5nfFwgOwor6ZyvPmTDqG5nfFwgOwor6ZyzPmzDs25nfFwgOwor6Zy2PnDDoW5nfFwgOwor6Zy/Pm3DqW5nfFwgOwor6Z2HPmzDs25nfFwgOwor6Z2IPmzDrW5nfFwgOwor6Z2KPmbEk25nfFwgOwor6Z2QPmLDrG5nfFwgOwor6Z2RPnHEq25nfFwgOwor6Z2UPnRpxIFufFwgOwor6Z2VPnpoxJNufFwgOwor6Z2YPnHDrG5nfFwgOwor6Z2aPmrDrG5nfFwgOwor6Z2cPmrDrG5nfFwgOwor6Z2dPnRpxIFufFwgOwor6Z2jPm1pw6BufFwgOwor6Z2mPm1px45ufFwgOwor6Z2qPmNoxIFpfFwgOwor6Z2sPmppxIFufFwgOwor6Z6DPmjDs25nfFwgOwor6Z6PPmfHkm5nfFwgOwor6Z6TPnTEq25nfFwgOwor6Z6VPnNoxIFvfFwgOwor6Z6XPnRpw6FvfFwgOwor6Z6ZPmp1xIFufFwgOwor6Z6aPmvDsm5nfFwgOwor6Z6bPmLEm25nfFwgOwor6Z6ePmLHkG5nfFwgOwor6Z6kPmLEgW5nfFwgOwor6Z6sPmppxIFufFwgOwor6Z66PnTEgW5nfFwgOwor6Z69PnFpw6FvfFwgOwor6Z+APmppxIFufFwgOwor6Z+CPmNow6BufFwgOwor6Z+FPnhpx45ufFwgOwor6Z+GPnFpxIFufFwgOwor6Z+JPmppxIFufFwgOwor6Z+PPmp1w6BufFwgOwor6Z+SPnFpw6BvfFwgOwor6Z+vPnhpxIFufFwgOwor6Z+xPnhpxIFufFwgOwor6Z+4PnDDqW5nfFwgOwor6Z+6PnnEq25nfFwgOwor6Z+8PnDDqW5nfFwgOwor6aCCPmTHkG5nfFwgOwor6aCDPnHHkG5nfFwgOwor6aCGPnNow7lufFwgOwor6aCMPnPDsm5nfFwgOwor6aCPPmjDoW5nfFwgOwor6aCYPmzHkG5nfFwgOwor6aCaPmrHkG5nfFwgOwor6aCjPnNoxJtufFwgOwor6aClPnNoxJtufFwgOwor6aCoPnBpxIFufFwgOwor6aCpPnDEq25nfFwgOwor6aCyPnTHkG5nfFwgOwor6aC0PnnHkG5nfFwgOwor6aC2PmfEm25nfFwgOwor6aC4PmfEm25nfFwgOwor6aGAPmNodcOtfFwgOwor6aGBPmTDrG5nfFwgOwor6aGFPmppxIFufFwgOwor6aGSPnnDs25nfFwgOwor6aGVPnRpw6FufFwgOwor6aGYPnl1w6BufFwgOwor6aGZPnPHjm5nfFwgOwor6aGaPmRpxIFufFwgOwor6aGbPmRpxIFufFwgOwor6aGfPmxpw6FvfFwgOwor6aGgPnBpw6BvfFwgOwor6aGmPnFpw6FvfFwgOwor6aGpPnFpxIFufFwgOwor6aGrPnpow6BufFwgOwor6aGtPmjFjW5nfFwgOwor6aGvPnhpx45ufFwgOwor6aG0PnF1w6FufFwgOwor6aKLPnRpYW58XCA7CivpopU+eceQbmd8XCA7Civpoqg+ZsSTbmd8XCA7Civpoqk+YmnEgW98XCA7Civpoq0+emjHjm58XCA7Civpoq4+YmnEgW98XCA7CivporQ+eHXDoG58XCA7CivporU+c2jDoG98XCA7Civporo+ecOhbmd8XCA7Civpo4I+bGnDoW98XCA7Civpo4M+YmnEgW98XCA7Civpo4Q+cGnEgW98XCA7Civpo4Y+YmnEgW98XCA7Civpo4c+YmnEgW98XCA7Civpo4g+YmnHjm98XCA7Civpo4k+bGnDoW98XCA7Civpo4w+ZsSTbmd8XCA7Civpo40+YmnEgW98XCA7Civpo5A+emjHjm58XCA7Civpo5E+YmnEgW98XCA7Civpo6M+ZMOsbmd8XCA7Civpo6Y+emjEgW58XCA7Civpo6w+anXDoG58XCA7Civpo7U+emjHjml8XCA7CivppII+dGnHjm58XCA7CivppIM+amnHjm98XCA7CivppIU+YseQbmd8XCA7CivppIc+dMOzbmd8XCA7CivppIo+eceObmd8XCA7CivppJ4+amnDoG58XCA7CivppJ8+emh1w6x8XCA7CivppKA+YseQbmd8XCA7CivppKE+eGnDoG58XCA7CivppKg+Z3XHjm58XCA7CivppKo+bnXHjm58XCA7CivppLA+amnEgW58XCA7CivppLM+dMOhbmd8XCA7CivppLg+c8Oybmd8XCA7CivppLk+dMOhbmd8XCA7CivppYQ+dMOhbmd8XCA7CivppY0+c2jDoG58XCA7CivppZg+emjEgW58XCA7CivppZs+bcOpbmd8XCA7CivppZ4+Y2jDoW58XCA7CivppaE+enXDoG58XCA7CivppaI+bsOhbmd8XCA7CivppaQ+ZMOsbmd8XCA7CivppqI+amnEgW58XCA7CivppqY+eGnEgW58XCA7Civppqs+eMSrbmd8XCA7Civppq4+ZsOpbmd8XCA7Civpp4M+a3XDoGl8XCA7Civpp4s+emjEgW98XCA7Civpp4w+eXXEgW58XCA7Civpp40+cMSTbmd8XCA7Civpp44+emjDsnV8XCA7Civpp5Q+eseObmd8XCA7Civpp5c+emjEk258XCA7Civpp5o+eceObmd8XCA7Civpp6I+cGnDoW58XCA7Civpp6U+csOzbmd8XCA7Civpp6c+ZMOybmd8XCA7Civpp6k+cXXDoW58XCA7Civpp6o+c2jEk258XCA7Civpp7c+c8eSbmd8XCA7Civpp7k+bcOhbmd8XCA7Civpp70+eHXDoG58XCA7CivpqII+eMSrbmd8XCA7CivpqIU+emh1xKt8XCA7CivpqIY+emjFjXV8XCA7CivpqIw+esWNbmd8XCA7CivpqJc+cGnDoG58XCA7CivpqJg+Y8WNbmd8XCA7CivpqJk+cGnDoG58XCA7CivpqJo+cWnDoW58XCA7CivpqJ0+amnEgW58XCA7CivpqKE+cXXDoW58XCA7CivpqKM+esWNbmd8XCA7CivpqKs+cWnEgW58XCA7CivpqK8+cMOhbmd8XCA7CivpqLA+dMOpbmd8XCA7CivpqLU+eXXDoW58XCA7CivpqLg+c2jDoG58XCA7CivpqYM+cGnDoG98XCA7CivpqYQ+Y8WNbmd8XCA7CivpqY0+eGnEgW98XCA7CivpqY8+Y2jHjm58XCA7CivpqZA+ZGnDoG58XCA7CivpqZM+esSTbmd8XCA7CivpqZU+amnEgW98XCA7CivpqZk+emjEgW58XCA7CivpqZo+asSrbmd8XCA7CivpqaE+cMOpbmd8XCA7CivpqaM+dMOpbmd8XCA7Civpqak+aHXEgW58XCA7Civpqas+YmnEgW98XCA7CivpqbU+eseObmd8XCA7Civpqok+YmnEgW98XCA7CivpqpQ+esWNbmd8XCA7CivpqqM+Y2jHjm58XCA7Civpqqk+a8eObmd8XCA7Civpqrk+cWnEgW98XCA7Civpqr4+Z8Sbbmd8XCA7Civpqr8+cGnDoW58XCA7Civpq4M+YseObmd8XCA7Civpq4c+eGnEgW98XCA7Civpq4g+cMOhbmd8XCA7Civpq44+bGnDoW98XCA7Civpq5I+esSBbmd8XCA7Civpq5Y+a3XEgW58XCA7Civpq5o+cWnDoG98XCA7Civpq5w+cWnEgW98XCA7Civpq6M+ZseObmd8XCA7Civpq6w+cMSTbmd8XCA7Civpq7Y+csOzbmd8XCA7Civpq7g+Z8WNbmd8XCA7Civpq7w+cMOpbmd8XCA7Civpq70+emh1xIF8XCA7Civpq74+c2jEgW98XCA7CivprIU+cMOpbmd8XCA7CivprIY+c8WNbmd8XCA7CivprIk+esWNbmd8XCA7CivprIo+c2jDuW58XCA7CivprIs+amnEgW58XCA7CivprJE+bGnDoW58XCA7CivprJI+emjEm258XCA7CivprJQ+cMOpbmd8XCA7CivprJk+c8STbmd8XCA7CivprJw+cWnEgW58XCA7CivprJ0+cWnEgW58XCA7CivprJ4+bsOzbmd8XCA7CivprKA+a3XDoGl8XCA7CivprKE+aMeSbmd8XCA7CivprKQ+csOhbmd8XCA7CivprKg+aMOybmd8XCA7CivprLM+anXDoG58XCA7CivprLU+cWnDoW58XCA7CivprLc+esWNbmd8XCA7CivprZA+Y2jDs3V8XCA7CivprZI+cGnEgW98XCA7CivprZc+Y2jHknV8XCA7CivprZk+emjHjm58XCA7CivprZ8+Z8WNbmd8XCA7CivpraE+ZGnDoG98XCA7Civprac+aMOhbmd8XCA7Civpras+c2jEm258XCA7CivprbQ+ZsOhbmd8XCA7CivproM+cMOtbmd8XCA7Civprok+ZGnEgW98XCA7Civpro8+eMSrbmd8XCA7CivprqE+dGnEgW98XCA7CivprqI+emjDsnV8XCA7CivprqY+dMOzbmd8XCA7Civprqk+YsOsbmd8XCA7Civprqs+amnEgW98XCA7Civprq4+eGnEgW58XCA7Civprrg+bWnHjm58XCA7Civprrk+c2jEgW58XCA7Civpr4E+Z8Sbbmd8XCA7Civpr4U+dMOtbmd8XCA7Civpr4c+aHXDoG58XCA7Civpr4g+Y2jDs3V8XCA7Civpr40+bcOpbmd8XCA7Civpr5I+eceSbmd8XCA7Civpr5Y+ccSrbmd8XCA7Civpr5k+Y2jDum58XCA7Civpr5s+ZGnEgW98XCA7Civpr54+emjHknV8XCA7Civpr58+ZMWNbmd8XCA7Civpr6g+asSrbmd8XCA7Civpr6k+aHXDoG58XCA7Civpr6o+bMOtbmd8XCA7Civpr60+bcSbbmd8XCA7Civpr64+esWNbmd8XCA7Civpr7A+bmnDoW58XCA7Civpr7U+c2jEk258XCA7Civpr7k+eMSrbmd8XCA7Civpr7w+esWNbmd8XCA7Civpr74+YmnEgW58XCA7Civpr78+YmnEgW58XCA7CivpsIA+aHXDoG58XCA7CivpsIE+cXXDoW58XCA7CivpsIY+Y2jFq258XCA7CivpsIo+bGnDoG58XCA7CivpsI4+amnDoG58XCA7CivpsJE+ecOhbmd8XCA7CivpsJQ+amnHjm58XCA7CivpsJw+amnEgW58XCA7CivpsJ8+ZsOhbmd8XCA7CivpsKA+Z3XEgW58XCA7CivpsKU+Z3XEgW58XCA7CivpsKs+csOzbmd8XCA7CivpsLE+bGnDoW58XCA7CivpsLc+dGnDoW98XCA7CivpsLk+amnEgW58XCA7CivpsL4+YmnDoG98XCA7CivpsYU+ecWNbmd8XCA7CivpsYc+a8SBbmd8XCA7CivpsY4+amnHjm98XCA7CivpsZM+c2jDoG58XCA7CivpsZQ+c2jDoG58XCA7CivpsZk+bWnDoW98XCA7CivpsZ4+Z3XEgW58XCA7CivpsaA+a3XDoGl8XCA7CivpsaM+emjEgW58XCA7CivpsbU+emjEk258XCA7Civpsbk+Z3XDoG58XCA7CivpsoY+cMOtbmd8XCA7CivpspY+dMOzbmd8XCA7Civpspc+amnEgW98XCA7Civpspk+a3XDoGl8XCA7Civpsp0+aHXDoG58XCA7Civpsqw+eceSbmd8XCA7Civps4g+cXXDoW58XCA7Civps5E+ZsOhbmd8XCA7Civps5I+amnEgW58XCA7Civps6M+emjEgW58XCA7Civps6U+bmnHjm98XCA7Civps60+ZGnEgW98XCA7Civps68+ZsOobmd8XCA7Civps7M+ZsOobmd8XCA7Civps7Q+bcOtbmd8XCA7Civps7Y+eXXEgW58XCA7Civps70+amnEgW58XCA7CivptIU+aHXEgW58XCA7CivptIY+emjDqG58XCA7CivptIs+ZsSBbmd8XCA7CivptIw+ZsOobmd8XCA7CivptJI+bMOtbmd8XCA7CivptJg+YmnDoG58XCA7CivptJs+eXXEgW58XCA7CivptJ4+eGnEgW98XCA7CivptKY+ecSBbmd8XCA7CivptKc+csOybmd8XCA7CivptKo+aMOhbmd8XCA7CivptKw+ecSrbmd8XCA7CivptK0+emh1xKt8XCA7CivptLQ+aMOpbmd8XCA7CivptLU+aMOybmd8XCA7CivptLs+aMOzbmd8XCA7CivptYE+amnEgW98XCA7CivptYM+emjFjXV8XCA7CivptYk+bHXDoW58XCA7CivptZE+anXEgW58XCA7CivptZs+asSrbmd8XCA7CivptaI+c2jEk258XCA7CivptaY+YsOsbmd8XCA7Civptac+cMOtbmd8XCA7Civptas+ZsOobmd8XCA7Civptaw+cMOpbmd8XCA7Civpta4+cWnEgW58XCA7CivptbA+ZGnEgW98XCA7CivptbM+amnEgW58XCA7Civptbc+eXXEgW58XCA7Civptbs+emh1xKt8XCA7Civptbw+a8WNbmd8XCA7Civptb0+emh1w6x8XCA7CivptoE+asSrbmd8XCA7CivptoQ+asSrbmd8XCA7Civptoc+ZMWNbmd8XCA7Civptok+Y2jDum58XCA7Civptoo+Z8STbmd8XCA7CivptpM+bWnDoW98XCA7Civptp4+Y2jFq258XCA7CivptqM+cGnEgW58XCA7Civptqc+ecSrbmd8XCA7Civptqw+Y8SBbmd8XCA7Civptq0+ZseObmd8XCA7Civptq8+ecSrbmd8XCA7CivptrA+eXXDoW58XCA7CivptrE+eHXEgW58XCA7CivptrI+d8STbmd8XCA7CivptrY+dMOhbmd8XCA7Civptrw+amnEgW58XCA7Civpt4Y+dGnDoW58XCA7Civpt40+amnEgW98XCA7Civpt48+dGnDoW58XCA7Civpt5A+Y2jDqW58XCA7Civpt5o+bGnDoW98XCA7Civpt5s+csOzbmd8XCA7Civpt58+emh1w7N8XCA7Civpt6Q+cXXDoW58XCA7Civpt6Y+amnEgW98XCA7Civpt64+amnEgW98XCA7Civpt68+bGnDoW98XCA7Civpt7M+eGnDoW58XCA7Civpt7Q+eGnDoW58XCA7Civpt7k+ecSrbmd8XCA7Civpt7s+dHXDoW58XCA7Civpt7w+eGnDoW58XCA7CivpuIc+emjEgW58XCA7CivpuIk+ecOhbmd8XCA7CivpuI4+ecSrbmd8XCA7CivpuI8+bcOpbmd8XCA7CivpuJc+bMOzbmd8XCA7CivpuJo+ecSrbmd8XCA7CivpuJs+Z3XDoG58XCA7CivpuJw+ZGnHjm98XCA7CivpuJ4+bHXDoW58XCA7CivpuKc+Y8SBbmd8XCA7CivpuK4+eGnEgW98XCA7CivpuLA+bMOtbmd8XCA7CivpuLs+aMOpbmd8XCA7CivpuLw+emjEgW98XCA7CivpuYs+bWnDoW98XCA7CivpuZA+cWnEgW58XCA7CivpuZI+Z8STbmd8XCA7CivpuZM+eXXEgW58XCA7CivpuZ8+d8STbmd8XCA7Civpuag+bGnDoW98XCA7Civpua4+eHXDoW58XCA7Civpua8+emjEgW58XCA7CivpubI+bcOpbmd8XCA7Civpubc+bMOtbmd8XCA7Civpubg+amnHjm58XCA7Civpubk+eGnDoW58XCA7Civpubs+amnHjm58XCA7Civpubw+amnHjm58XCA7CivpuoM+YmnEgW98XCA7CivpuoU+YmnEgW98XCA7Civpuok+amnEgW58XCA7Civpuo4+Y2jDqW58XCA7CivpupY+asSrbmd8XCA7CivpuqA+asSrbmd8XCA7CivpuqI+bMOtbmd8XCA7Civpuqg+Y2jHjm98XCA7Civpuqo+bWnHjm58XCA7Civpuqs+bWnHjm58XCA7CivpurI+eGnDoG58XCA7CivpurU+bWnDoG58XCA7Civpurc+ZsSTbmd8XCA7Civpuro+bWnDoG58XCA7Civpu4c+dGnEgW58XCA7Civpu4k+aMOpbmd8XCA7Civpu4w+aMOpbmd8XCA7Civpu5c+dHXHjm58XCA7Civpu5o+cWnDoW58XCA7Civpu54+ZGnHjm58XCA7Civpu6g+ZMeObmd8XCA7Civpu7A+emjEm258XCA7Civpu78+eXXDoW58XCA7CivpvII+Y2jDoW98XCA7CivpvIM+bcSbbmd8XCA7CivpvIY+bcOhbmd8XCA7CivpvIw+Y2jDoW98XCA7CivpvJE+ZMeQbmd8XCA7CivpvJU+ZMWNbmd8XCA7CivpvJg+eXXEgW58XCA7CivpvJ0+eXXEgW58XCA7CivpvJ4+dMSBbmd8XCA7CivpvJ8+dMSTbmd8XCA7CivpvKY+ZGnEgW98XCA7CivpvKg+dMOzbmd8XCA7CivpvK4+dMOtbmd8XCA7CivpvLA+bmnDoG58XCA7CivpvLE+asSrbmd8XCA7CivpvYY+d8Oobmd8XCA7CivpvYg+bsOzbmd8XCA7CivpvYk+bsOgbmd8XCA7CivpvYs+emjEgWl8XCA7CivpvZM+Y2jDqG58XCA7CivpvZQ+Y2jDqG58XCA7CivpvZs+Y2jDoWl8XCA7CivpvZ4+bmnDoG58XCA7CivpvaA+dGnDoW98XCA7CivpvaE+bMOtbmd8XCA7CivpvaI+bMOtbmd8XCA7CivpvaQ+cXXDoW58XCA7Civpvao+Y2h1w7J8XCA7CivpvbE+Y2h1w7J8XCA7CivpvbQ+eGnHjm58XCA7Civpvbk+Y2h1xY18XCA7Civpvbs+ZGnEgW58XCA7Civpvo0+bMOzbmd8XCA7Civpvo8+Z8WNbmd8XCA7CivpvpA+cMOhbmd8XCA7CivpvpI+bMOzbmd8XCA7CivpvpM+bMOzbmd8XCA7CivpvpQ+Z8WNbmd8XCA7CivpvpY+bMeSbmd8XCA7Civpvpc+bMOtbmd8XCA7CivpvqE+Y2h1w6x8XCA7CivwqLq5PmppxIFvfFwgOwor5pivPnNow6x8XCA7Civkuro+csOpbnxcIDsKK+WcqD56w6BpfFwgOwor5pyJPnnHknV8XCA7Civov5k+emjDqHxcIDsKK+adpT5sw6FpfFwgOwor5Zu9Pmd1w7N8XCA7CivliLA+ZMOgb3xcIDsKK+S7rD5tZW58XCA7CivkuLo+d8OoaXxcIDsKK+WHuj5jaMWrfFwgOwor6YGTPmTDoG98XCA7Civml7Y+c2jDrXxcIDsKK+WwsT5qacO5fFwgOwor6KaBPnnDoG98XCA7CivkuIs+eGnDoHxcIDsKK+S8mj5odcOsfFwgOwor5LmLPnpoxKt8XCA7Civov4c+Z3XFjXxcIDsKK+Wutj5qacSBfFwgOwor5a2mPnh1w6l8XCA7Civlr7k+ZHXDrHxcIDsKK+WQjj5ow7J1fFwgOwor5b+DPnjEq258XCA7CivlpJo+ZHXFjXxcIDsKK+WlvT5ox45vfFwgOwor6YO9PmTFjXV8XCA7CivnhLY+csOhbnxcIDsKK+ayoT5tw6lpfFwgOwor5LqLPnNow6x8XCA7Civlj6o+emjEq3xcIDsKK+S9nD56dcOyfFwgOwor55yLPmvDoG58XCA7Civmloc+d8OpbnxcIDsKK+W8gD5rxIFpfFwgOwor5Y2BPnNow618XCA7CivkuLs+emjHlHxcIDsKK+WPiD55w7J1fFwgOwor5omAPnN1x5J8XCA7CivmnKw+YsSbbnxcIDsKK+WktD50w7N1fFwgOwor5LiJPnPEgW58XCA7CivogIE+bMeOb3xcIDsKK+efpT56aMSrfFwgOwor5rCRPm3DrW58XCA7CivliIY+ZsSTbnxcIDsKK+Wklj53w6BpfFwgOwor5L2GPmTDoG58XCA7Civkups+eGnEk3xcIDsKK+mrmD5nxIFvfFwgOwor6L+bPmrDrG58XCA7Civlrp4+c2jDrXxcIDsKK+Wbnj5odcOtfFwgOwor576OPm3Em2l8XCA7CivmnIg+eXXDqHxcIDsKK+ivnT5odcOgfFwgOwor6ICFPnpoxJt8XCA7Civpl64+d8OobnxcIDsKK+e7mT5nxJtpfFwgOwor5b6IPmjEm258XCA7CivmnIA+enXDrHxcIDsKK+aWsD54xKtufFwgOwor5LuAPnNow618XCA7CivkvY0+d8OoaXxcIDsKK+WboD55xKtufFwgOwor6KKrPmLDqGl8XCA7CivotbA+eseSdXxcIDsKK+mXqD5tw6lufFwgOwor5rW3PmjHjml8XCA7Civlj6M+a8eSdXxcIDsKK+S9vz5zaMeQfFwgOwor5YaNPnrDoGl8XCA7CivkuJY+c2jDrHxcIDsKK+S/oT54w6xufFwgOwor5YyXPmLEm2l8XCA7CivlhoU+bsOoaXxcIDsKK+WKoD5qacSBfFwgOwor5YyWPmh1w6B8XCA7CivnlLE+ecOzdXxcIDsKK+WNtD5xdcOofFwgOwor5LujPmTDoGl8XCA7Civlhps+asWrbnxcIDsKK+Wkqj50w6BpfFwgOwor5LiHPnfDoG58XCA7CivluII+c2jDrHxcIDsKK+ecvD55x45ufFwgOwor5YirPmJpw6l8XCA7CivlpIQ+Y2jDuXxcIDsKK+aJjT5jw6FpfFwgOwor5biIPnNoxKt8XCA7CivkuaY+c2jFq3xcIDsKK+S9jz56aMO5fFwgOwor5LmdPmppx5R8XCA7CivljY4+aHXDoXxcIDsKK+aKpT5iw6BvfFwgOwor5rS7Pmh1w7N8XCA7Civpmr4+bsOhbnxcIDsKK+aVsD5zaMO5fFwgOwor6L2mPmNoxJN8XCA7Civnmb0+YsOhaXxcIDsKK+aEnz5nx45ufFwgOwor6YeRPmrEq258XCA7Civlj40+ZseObnxcIDsKK+WBmj56dcOyfFwgOwor5oiWPmh1w7J8XCA7Civmnpw+Z3XHknxcIDsKK+S6sj5xxKtufFwgOwor55WMPmppw6h8XCA7Civku4o+asSrbnxcIDsKK+WItj56aMOsfFwgOwor6KejPmppxJt8XCA7Civku7s+csOobnxcIDsKK+iHsz56aMOsfFwgOwor5Y+wPnTDoWl8XCA7CivlubI+Z8OgbnxcIDsKK+aOpT5qacSTfFwgOwor6KeJPmp1w6l8XCA7Civnm7Q+emjDrXxcIDsKK+avmz5tw6FvfFwgOwor5p6XPmzDrW58XCA7CivljZc+bsOhbnxcIDsKK+iupD5yw6hufFwgOwor6K66PmzDuW58XCA7Civnmb4+YseOaXxcIDsKK+WQgz5jaMSrfFwgOwor5oCOPnrEm258XCA7CivnpL4+c2jDqHxcIDsKK+acrz5zaMO5fFwgOwor57uTPmppw6l8XCA7Civlha0+bGnDuXxcIDsKK+aMhz56aMeQfFwgOwor6Z2ePmbEk2l8XCA7CivmtYE+bGnDunxcIDsKK+avjz5txJtpfFwgOwor6ZifPmR1w6x8XCA7Civot58+Z8STbnxcIDsKK+W4pj5kw6BpfFwgOwor6IqxPmh1xIF8XCA7CivoqIA+ecOhbnxcIDsKK+ivpT5nxIFpfFwgOwor6L+RPmrDrG58XCA7CivnlZk+bGnDunxcIDsKK+ayuz56aMOsfFwgOwor5YazPmp1w6l8XCA7Civkv50+YseOb3xcIDsKK+WKnj5iw6BufFwgOwor6L+QPnnDuW58XCA7CivljYo+YsOgbnxcIDsKK+WAmT5ow7J1fFwgOwor5a6MPnfDoW58XCA7CivmsYI+cWnDunxcIDsKK+WTgT5wx5BufFwgOwor5aOrPnNow6x8XCA7CivlkYo+Z8Ogb3xcIDsKK+a0vj5ww6BpfFwgOwor5ruhPm3Hjm58XCA7CivlvI8+c2jDrHxcIDsKK+WGmT54acSbfFwgOwor6K+GPnNow6x8XCA7CivlgJI+ZMeOb3xcIDsKK+acqj53w6hpfFwgOwor5oyBPmNow618XCA7Civorr4+c2jDqHxcIDsKK+Wniz5zaMeQfFwgOwor54mIPmLHjm58XCA7Civotoo+eXXDqHxcIDsKK+WPsj5zaMeQfFwgOwor56CUPnnDoW58XCA7Civlj4s+eceSdXxcIDsKK+WtqT5ow6FpfFwgOwor5pS5PmfHjml8XCA7Civlp5Q+d8SbaXxcIDsKK+aXqT56x45vfFwgOwor6Z+zPnnEq258XCA7Civngas+aHXHknxcIDsKK+WNlT5kxIFufFwgOwor5a+8PmTHjm98XCA7CivlpLE+c2jEq3xcIDsKK+efsz5zaMOtfFwgOwor6IulPnJ1w7J8XCA7Civlv5c+emjDrHxcIDsKK+mjnj5mxJNpfFwgOwor56m2Pmppxat8XCA7CivljIU+YsSBb3xcIDsKK+mAoD56w6BvfFwgOwor6JC9Pmx1w7J8XCA7Civop4Y+c2jDrHxcIDsKK+iZvT5zdcSrfFwgOwor5Z2QPnp1w7J8XCA7Civlrp0+YseOb3xcIDsKK+iwiD50w6FufFwgOwor6buRPmjEk2l8XCA7CivkuJQ+cWnEm3xcIDsKK+majz5zdcOtfFwgOwor5bC9PmrHkG58XCA7CivmnYA+c2jEgXxcIDsKK+W+rj53xJNpfFwgOwor5qC5PmfEk258XCA7CivliIc+cWnEk3xcIDsKK+ekuj5zaMOsfFwgOwor55S3Pm7DoW58XCA7Civms6g+emjDuXxcIDsKK+i0uT5mw6hpfFwgOwor576kPnHDum58XCA7Civmjqg+dHXEq3xcIDsKK+aZmj53x45ufFwgOwor5b6FPmTEgWl8XCA7CivnuqY+eXXEk3xcIDsKK+aUrz56aMSrfFwgOwor5Y+3PmjDoW98XCA7Civnu50+anXDqXxcIDsKK+WPgj5jxIFufFwgOwor5YiKPmvEgW58XCA7Civnsbs+bMOoaXxcIDsKK+Wkhz5iw6hpfFwgOwor5Yq/PnNow6x8XCA7CivoiKw+YsSBbnxcIDsKK+S7tz5qacOgfFwgOwor6ISRPm7Hjm98XCA7Civop4Q+Z3XEq3xcIDsKK+ehrj5xdcOofFwgOwor57SnPmrHkG58XCA7CivlrZg+Y8O6bnxcIDsKK+Wusz5ow6BpfFwgOwor6IqCPmppw6l8XCA7Civlt6Y+enXHknxcIDsKK+iRlz56aMO5fFwgOwor5LmFPmppx5R8XCA7CivlsoE+c3XDrHxcIDsKK+mFkj5qaceUfFwgOwor5YidPmNoxat8XCA7CivmuLg+ecOzdXxcIDsKK+S4pT55w6FufFwgOwor6ZOBPnRpxJt8XCA7CivpmaQ+Y2jDunxcIDsKK+S7vT5mw6hufFwgOwor5pWiPmfHjm58XCA7CivooYA+eGnEm3xcIDsKK+aKlT50w7N1fFwgOwor6Ze7PnfDqW58XCA7Civmlpc+ZMOydXxcIDsKK+WPsz55w7J1fFwgOwor6aWtPmbDoG58XCA7CivkupE+ecO6bnxcIDsKK+iAgz5rx45vfFwgOwor5p2RPmPFq258XCA7CivliIA+ZMSBb3xcIDsKK+S7hT5qx5BufFwgOwor5p+lPmNow6F8XCA7CivlvJU+eceQbnxcIDsKK+e9lz5sdcOzfFwgOwor5LmwPm3Hjml8XCA7Civog4w+YsOoaXxcIDsKK+WNqz53w6hpfFwgOwor5YiXPmxpw6h8XCA7CivlrqQ+c2jDrHxcIDsKK+WImD5sacO6fFwgOwor5ZKxPnrDoW58XCA7CivplJk+Y3XDsnxcIDsKK+aOkj5ww6FpfFwgOwor5qCRPnNow7l8XCA7CivogYw+emjDrXxcIDsKK+aAgT50w6BpfFwgOwor5Y2wPnnDrG58XCA7CivlpI8+eGnDoHxcIDsKK+WKqT56aMO5fFwgOwor55CDPnFpw7p8XCA7CivliJI+aHXDoXxcIDsKK+i0qD56aMOtfFwgOwor6Ie0Pnpow6x8XCA7Civmub4+d8SBbnxcIDsKK+a8lD55x45ufFwgOwor6Z+mPnfDqWl8XCA7Civlm7Q+d8OpaXxcIDsKK+WQpj5mx5J1fFwgOwor6YeHPmPHjml8XCA7Civpo58+c2jDrXxcIDsKK+Wknz5nw7J1fFwgOwor6LWbPnPDoGl8XCA7CivlgYc+amnHjnxcIDsKK+WnkD5qacSbfFwgOwor5qW8PmzDs3V8XCA7Civojrc+aHXDsnxcIDsKK+WtmT5zxatufFwgOwor6K+XPnNoxKt8XCA7Civor5U+c2jDrHxcIDsKK+iwoj54acOofFwgOwor6aqMPnnDoG58XCA7CivmraI+emjHkHxcIDsKK+Wxnj5zaMeUfFwgOwor6YOtPmd1xY18XCA7CivlqIE+d8STaXxcIDsKK+aFoj5tw6BufFwgOwor5bqnPnp1w7J8XCA7Civnvao+enXDrHxcIDsKK+e7tD53w6lpfFwgOwor6KGXPmppxJN8XCA7Civmlr0+c2jEq3xcIDsKK+iNiT5jx45vfFwgOwor5p+QPm3HknV8XCA7Civpk7Y+ecOtbnxcIDsKK+WAvD56aMOtfFwgOwor54+tPmLEgW58XCA7Civkv64+eGnFq3xcIDsKK+W3rj5jaMOgfFwgOwor5ZGzPnfDqGl8XCA7Civnu4c+emjEq3xcIDsKK+iNrz55w6BvfFwgOwor5b2SPmd1xKt8XCA7CivmlZE+amnDuXxcIDsKK+mAgD50dcOsfFwgOwor5YqzPmzDoW98XCA7CivlqZo+aMWrbnxcIDsKK+e7nD5sdcOyfFwgOwor57+7PmbEgW58XCA7Civot5E+cMeOb3xcIDsKK+WPtj54acOpfFwgOwor5Z2HPmrFq258XCA7Civng4g+bGnDqHxcIDsKK+i1tj5nx45ufFwgOwor5YWwPmzDoW58XCA7CivnlLs+aHXDoHxcIDsKK+mhvz5kw7lufFwgOwor5YikPnDDoG58XCA7CivlmLQ+enXHkHxcIDsKK+Wvnz5jaMOhfFwgOwor5LyYPnnFjXV8XCA7Civmgqg+bsOtbnxcIDsKK+eDnz55xIFufFwgOwor6Zi2PmppxJN8XCA7Civmi4U+ZMOgbnxcIDsKK+aVoz5zx45ufFwgOwor5p2/PmLHjm58XCA7Civlprk+bcOoaXxcIDsKK+iuqD50x45vfFwgOwor5Li0PmzDrW58XCA7CivmkYc+ecOhb3xcIDsKK+aehD5nxY11fFwgOwor546pPnfDoW58XCA7Civniq8+ZsOgbnxcIDsKK+iCrz5rxJtufFwgOwor5Y2PPnhpw6l8XCA7CivmjKU+aHXEq3xcIDsKK+a4qT53xJNufFwgOwor6IKJPnLDsnV8XCA7Civnurg+emjHkHxcIDsKK+Wvuz54w7pufFwgOwor5rKZPnNoxIF8XCA7CivljZY+bcOgaXxcIDsKK+iMgz5mw6BufFwgOwor6Z2gPmvDoG98XCA7CivotLU+Z3XDrHxcIDsKK+eovz5nx45vfFwgOwor5ouNPnDEgWl8XCA7Civml6c+amnDuXxcIDsKK+ayuT55w7N1fFwgOwor6ZuqPnh1xJt8XCA7Civoj5w+Y8OgaXxcIDsKK+eJjD5ww6FpfFwgOwor54mbPm5pw7p8XCA7CivohLE+dHXFjXxcIDsKK+W8uT5kw6BufFwgOwor572uPnpow6x8XCA7CivmpZo+Y2jHlHxcIDsKK+eVpT5sw7zDqHxcIDsKK+aZuj56aMOsfFwgOwor5bKbPmTHjm98XCA7CivmirE+YsOgb3xcIDsKK+i9vT56w6BpfFwgOwor6LSlPmLDoGl8XCA7CivpgII+c2jDrHxcIDsKK+eIuT5kacSTfFwgOwor57q3PmbEk258XCA7Civku4s+amnDqHxcIDsKK+aLrD5rdcOyfFwgOwor5aWUPmLEk258XCA7Civlv40+csSbbnxcIDsKK+ebmD5ww6FufFwgOwor6K6vPnjDuW58XCA7CivphY0+cMOoaXxcIDsKK+emgT5qw6xufFwgOwor57SiPnN1x5J8XCA7CivmnrY+amnDoHxcIDsKK+aJmD50dcWNfFwgOwor5LyZPmh1x5J8XCA7Civmr6s+aMOhb3xcIDsKK+Wllz50w6BvfFwgOwor6YCDPnTDoW98XCA7CivovpM+c2jFq3xcIDsKK+WbsD5rw7lufFwgOwor5rOqPmzDqGl8XCA7Civnhp8+c2jDunxcIDsKK+i0oj5jw6FpfFwgOwor6ay8Pmd1x5B8XCA7Civnp4s+cWnFq3xcIDsKK+engD54acO5fFwgOwor5pCePmfHjm98XCA7CivmnLE+emjFq3xcIDsKK+i3gz55dcOofFwgOwor5omnPnpow618XCA7CivmgrI+YsSTaXxcIDsKK+i+iD5iw6hpfFwgOwor6ZqQPnnHkG58XCA7Civpl7k+bsOgb3xcIDsKK+adkD5jw6FpfFwgOwor6IW/PnR1x5B8XCA7Civov7A+c2jDuXxcIDsKK+Wwij56xatufFwgOwor5YCfPmppw6h8XCA7Civmipg+emjDqXxcIDsKK+aatD5iw6BvfFwgOwor57y6PnF1xJN8XCA7CivmjqI+dMOgbnxcIDsKK+i0pz5odcOyfFwgOwor5LyfPnfEm2l8XCA7CivlkJs+asWrbnxcIDsKK+WHoT5mw6FufFwgOwor5Y2xPnfEk2l8XCA7Civlvak+Y8eOaXxcIDsKK+adnz5zaMO5fFwgOwor6LCTPnfDqGl8XCA7CivmpoI+Z8OgaXxcIDsKK+WwhD5zaMOofFwgOwor5p2vPmLEk2l8XCA7CivpgI8+dMOydXxcIDsKK+mCrj55w7N1fFwgOwor5LyRPnhpxat8XCA7Civlj7k+dMOgbnxcIDsKK+eLlz5nx5J1fFwgOwor5YG3PnTFjXV8XCA7CivpmLQ+ecSrbnxcIDsKK+aLnD5iw6BpfFwgOwor5Y6aPmjDsnV8XCA7CivkuLk+ZMSBbnxcIDsKK+a0mz5sdcOyfFwgOwor5ZaKPmjHjm58XCA7Civova4+bMO6bnxcIDsKK+Wltj5ux45pfFwgOwor5rehPmTDoG58XCA7Civorq0+eMO5bnxcIDsKK+mHij5zaMOsfFwgOwor6K+4Pnpoxat8XCA7CivllK8+d8OpaXxcIDsKK+Wkuj5kdcOzfFwgOwor6YCQPnpow7p8XCA7Civnh5U+ecOgbnxcIDsKK+WRhj5kxIFpfFwgOwor55uWPmfDoGl8XCA7CivpmIU+eXXDqHxcIDsKK+i0rT5nw7J1fFwgOwor5oyCPmd1w6B8XCA7Civmgag+aMOobnxcIDsKK+iIjT5zaMSbfFwgOwor56u5Pnpow7p8XCA7CivlvLE+cnXDsnxcIDsKK+WQqz5ow6FufFwgOwor5Z2APnpox5B8XCA7CivmkYY+YseOaXxcIDsKK+eVqj5mxIFufFwgOwor5re3PmjDum58XCA7Civnga0+bWnDqHxcIDsKK+iiiz5kw6BpfFwgOwor6LWePnrDoG58XCA7CivojLY+Y2jDoXxcIDsKK+eosz53xJtufFwgOwor5rGHPmh1w6x8XCA7CivlsYo+amnDqHxcIDsKK+mbtz5sw6lpfFwgOwor5a+SPmjDoW58XCA7Civpga0+esSBb3xcIDsKK+aflD5yw7N1fFwgOwor5oi0PmTDoGl8XCA7Civosao+aMOhb3xcIDsKK+eRnj5ydcOsfFwgOwor5pONPmPEgW98XCA7CivohbA+ecSBb3xcIDsKK+aihT5tw6lpfFwgOwor5LymPmzDum58XCA7Civor7o+bnXDsnxcIDsKK+auiz5jw6FufFwgOwor5bu2PnnDoW58XCA7Civov4U+eMO5bnxcIDsKK+eBvj56xIFpfFwgOwor5bKzPnl1w6h8XCA7Civnj6A+emjFq3xcIDsKK+WPlD5zaMWrfFwgOwor6LCLPm3Ds3V8XCA7CivnoYA+Y2jHlHxcIDsKK+S7gT5yw6lufFwgOwor5o2fPnPHlG58XCA7CivmlY8+bceQbnxcIDsKK+e0rz5sw6hpfFwgOwor5Ly0PmLDoG58XCA7CivlpYs+ZsOobnxcIDsKK+iDhj5kx45ufFwgOwor54OmPmbDoW58XCA7Civnirk+ecOzdXxcIDsKK+WfuT5ww6lpfFwgOwor5LmDPm7Hjml8XCA7CivpgaU+ecOhb3xcIDsKK+Wdpj50x45ufFwgOwor5b6MPmjDsnV8XCA7CivnnIk+bcOpaXxcIDsKK+mkkD5jxIFufFwgOwor5oqsPnTDoWl8XCA7CivlhpI+bcOgb3xcIDsKK+axlz5ow6BufFwgOwor54GwPmh1xKt8XCA7Civpn6k+aMOhbnxcIDsKK+i0uD5tw6BvfFwgOwor5ryrPm3DoG58XCA7Civmsr8+ecOhbnxcIDsKK+iilj54acO5fFwgOwor5pemPmTDoG58XCA7Civmias+c8eOb3xcIDsKK+WwpD55w7N1fFwgOwor54KuPnDDoG98XCA7Civnopc+d8eObnxcIDsKK+i0tD50acSTfFwgOwor5o+SPmNoxIF8XCA7Civmu5o+Z8eUbnxcIDsKK+i0nT5iw6hpfFwgOwor5ramPnLDuW58XCA7CivmsI8+c2jDrHxcIDsKK+aJqT5rdcOyfFwgOwor5qCPPmzDoW58XCA7Civlk7I+emjDqXxcIDsKK+WQkz54acOgfFwgOwor5aCGPmR1xKt8XCA7Civkv6k+bGnHjnxcIDsKK+iTnT5sw6FufFwgOwor6L6bPnjEq258XCA7Civpmao+cMOpaXxcIDsKK+ibiz5kw6BufFwgOwor6aKcPnnDoW58XCA7CivotKs+cMOtbnxcIDsKK+mpuz56aMO5fFwgOwor5p2wPmppw6l8XCA7Civlv6c+ecWNdXxcIDsKK+iyjD5tw6BvfFwgOwor5aGePnPDoGl8XCA7Civmo64+c8STbnxcIDsKK+e5gT5mw6FufFwgOwor56KOPnN1w6x8XCA7CivmtKU+asSrbnxcIDsKK+S+oD54acOhfFwgOwor6L+fPmNow618XCA7Civovok+aHXEq3xcIDsKK+eLoD5oxJtufFwgOwor57ypPnN1xY18XCA7CivnqbQ+eHXDqHxcIDsKK+i1lj5sw6BpfFwgOwor5oSkPmbDqG58XCA7Civor6I+eMO6bnxcIDsKK+aDqD5jx45ufFwgOwor6bqmPm3DoGl8XCA7CivlgI0+YsOoaXxcIDsKK+aIqj5qacOpfFwgOwor5p+TPnLHjm58XCA7Civmn7M+bGnHlHxcIDsKK+a2iT5zaMOofFwgOwor6LqyPmR1x5J8XCA7Civoo4E+Y8OhaXxcIDsKK+mcnj54acOhfFwgOwor54yqPnpoxat8XCA7CivmiY4+emjEgXxcIDsKK+etkT56aMO6fFwgOwor5L+KPmrDuW58XCA7Civpnos+eGnDqXxcIDsKK+S+tT5xxKtufFwgOwor5qyjPnjEq258XCA7CivlqpI+bcOpaXxcIDsKK+mtgj5ow7pufFwgOwor5rSBPmppw6l8XCA7Civmnp0+emjEq3xcIDsKK+eUsj5qaceOfFwgOwor5ouWPnR1xY18XCA7CivoiJI+c2jFq3xcIDsKK+aDoD5odcOsfFwgOwor5piPPmjFq258XCA7CivmiJI+amnDqHxcIDsKK+aFpz5odcOsfFwgOwor5qGDPnTDoW98XCA7CivotaQ+Y2jDrHxcIDsKK+eDgj5sw6BufFwgOwor5o6qPmN1w7J8XCA7Civms7A+dMOgaXxcIDsKK+WwuD5zaMSrfFwgOwor5q6KPnNoxat8XCA7CivmhbA+d8OoaXxcIDsKK+Wdmz50w6FufFwgOwor55SYPmfEgW58XCA7Civlkqw+eceOb3xcIDsKK+eCuD56aMOgfFwgOwor6aWuPnnHkG58XCA7CivnpZ0+emjDuXxcIDsKK+eJoj5sw6FvfFwgOwor5qGCPmd1w6x8XCA7CivlsL4+d8SbaXxcIDsKK+aBsD5xacOgfFwgOwor55+bPm3DoW98XCA7Civlrr4+YsSrbnxcIDsKK+eyiT5mxJtufFwgOwor6LS8PnrDqWl8XCA7Civnm74+ZMO5bnxcIDsKK+aWnD54acOpfFwgOwor6KOCPmxpw6h8XCA7Civmu5E+aHXDoXxcIDsKK+aWkD5mxJtpfFwgOwor5bqfPmbDqGl8XCA7Civlvbs+Y2jDqHxcIDsKK+aWpD5qxKtufFwgOwor5py1PmR1x5J8XCA7CivkvbM+amnEgXxcIDsKK+eahj5qacSTfFwgOwor5q+BPmh1x5B8XCA7Civom4c+c2jDqXxcIDsKK+aQrD5ixIFufFwgOwor6IiFPmppw7l8XCA7Civlub0+ecWNdXxcIDsKK+eQtD5xw61ufFwgOwor6IGYPnDDrG58XCA7CivlvK8+d8SBbnxcIDsKK+i/lD5mx45ufFwgOwor6L+dPnfDqWl8XCA7Civkuo8+a3XEq3xcIDsKK+S4oj5kacWrfFwgOwor6a2PPnfDqGl8XCA7CivogJA+bsOgaXxcIDsKK+S9qT5ww6hpfFwgOwor5YK7PnNox458XCA7Civnu5U+csOgb3xcIDsKK+enpj5xw61ufFwgOwor5pioPnp1w7N8XCA7CivmmoI+esOgbnxcIDsKK+e9sj5zaMeUfFwgOwor54ycPmPEgWl8XCA7CivogIA+ecOgb3xcIDsKK+ixhj5kw7J1fFwgOwor6Ze3Pm3DqG58XCA7Civms5s+ZsOgbnxcIDsKK+aClD5odceQfFwgOwor54iGPmLDoG98XCA7Civlubw+ecOydXxcIDsKK+WkuT5qacSBfFwgOwor6YKAPnnEgW98XCA7CivlhYE+eceUbnxcIDsKK+aBvD5ux45vfFwgOwor5bC6PmNox5B8XCA7Civkvo0+c2jDrHxcIDsKK+aJrT5uaceUfFwgOwor6I+yPmbEk2l8XCA7CivlpY8+esOydXxcIDsKK+autz55xKtufFwgOwor5Z+LPm3DoWl8XCA7Civnm7w+cMOgbnxcIDsKK+WQnz55w61ufFwgOwor6LeoPmt1w6B8XCA7Civphok+enXDrHxcIDsKK+aOqT55x45ufFwgOwor5o+tPmppxJN8XCA7CivliIM+csOobnxcIDsKK+WzoT54acOhfFwgOwor5YevPmvHjml8XCA7CivkuJA+Z8OgaXxcIDsKK+eMqz5txIFvfFwgOwor5rabPnTEgW98XCA7Civmupw+bGnFq3xcIDsKK+mUhT5ndcWNfFwgOwor5aWIPm7DoGl8XCA7Civmi74+c2jDrXxcIDsKK+iEiT5tw6BpfFwgOwor6ZSBPnN1x5J8XCA7Civpgrs+bMOtbnxcIDsKK+aBoj5odcSrfFwgOwor56CNPmvHjm58XCA7Civpqb4+amnDoHxcIDsKK+eluD5odcOyfFwgOwor5pu5PmPDoW98XCA7CivmipY+ZMeSdXxcIDsKK+iniD5sx45ufFwgOwor576ePnhpxat8XCA7Civmips+cMSBb3xcIDsKK+aDkT5odcOyfFwgOwor6IKlPmbDqWl8XCA7Civog54+YsSBb3xcIDsKK+mYlD5rdcOyfFwgOwor5YukPnHDrW58XCA7CivluL0+bcOgb3xcIDsKK+aSpD5jaMOofFwgOwor6aKRPnDDrW58XCA7CivojrE+bMOhaXxcIDsKK+Wgqj5rxIFufFwgOwor5a+4PmPDuW58XCA7Civlt6E+eMO6bnxcIDsKK+aJoz5rw7J1fFwgOwor5rGgPmNow618XCA7Civlq4E+amnDoHxcIDsKK+aemj5tw6lpfFwgOwor55OcPmd1xIF8XCA7Civot4w+ZGnEk3xcIDsKK+aJrz5jaMSbfFwgOwor6ZSmPmrHkG58XCA7CivpgIo+c2jFq3xcIDsKK+i1lD5ww6lpfFwgOwor5piGPmvFq258XCA7Civmn48+YseOaXxcIDsKK+mptj5zaMeQfFwgOwor5qSNPnpow618XCA7Civnur0+bmnHlHxcIDsKK+aNtz5qacOpfFwgOwor6ZSQPmR1w6x8XCA7Civkub4+Z8SBbnxcIDsKK+mcjT5odcOyfFwgOwor5rm/PnNoxKt8XCA7CivnnYE+c3XFjXxcIDsKK+aCoD55xY11fFwgOwor5rKfPmfFjXV8XCA7CivpmbY+dMOhb3xcIDsKK+a1kT5ow7pufFwgOwor6amwPmNow618XCA7Civmi7w+cMSrbnxcIDsKK+mCqj54acOpfFwgOwor6ISGPmN1w6x8XCA7Civns58+esSBb3xcIDsKK+aJrj5iw6BufFwgOwor6aWwPnNow6x8XCA7CivmkYQ+bmnDqHxcIDsKK+WYvz5oxJNpfFwgOwor5peoPnpox5B8XCA7Civnv6A+Y3XDrHxcIDsKK+mlsT5ix45vfFwgOwor5YqrPmppw6l8XCA7Civlj5s+cMOgbnxcIDsKK+WCqD5jaMeUfFwgOwor6LSqPnTEgW58XCA7CivmibA+cseOb3xcIDsKK+iDgT54acOpfFwgOwor6LeqPmd1w6x8XCA7CivnopE+YsSTaXxcIDsKK+iOjj5zaMSBfFwgOwor5aicPm51w7N8XCA7Civkvq8+aMOzdXxcIDsKK+S4mD5xacWrfFwgOwor5pmVPnnFq258XCA7Civmi6Y+bMOhbnxcIDsKK+eHgz5yw6FufFwgOwor5ZCePnTFq258XCA7CivoiIw+c2jDqXxcIDsKK+eQsz5sw61ufFwgOwor5pu8Pm3DoG58XCA7CivogLs+Y2jHkHxcIDsKK+afnD5ndcOsfFwgOwor5pGKPnTEgW58XCA7CivliYo+eHXEk3xcIDsKK+adhj5nx45ufFwgOwor5bKpPnnDoW58XCA7CivlloI+d8OoaXxcIDsKK+mAnT5zaMOsfFwgOwor6K+ePmTDoG58XCA7CivltJQ+Y3XEq3xcIDsKK+WHkT5jw7J1fFwgOwor55e0PmNoxKt8XCA7Civnm4Y+cMOpbnxcIDsKK+WnpT5sx45vfFwgOwor5ae7PnnEq258XCA7CivmhKc+a3XDrHxcIDsKK+iKrD5mxJNufFwgOwor5o63Pnpow618XCA7Civoiq8+eMSrbnxcIDsKK+m8oD5zaMeUfFwgOwor57qgPmppxat8XCA7Civmm7A+eXXEk3xcIDsKK+iijT5ww6FvfFwgOwor5Yu+PmfFjXV8XCA7Civmhag+a8eOaXxcIDsKK+etiz5qxKtufFwgOwor5p+xPnpow7l8XCA7CivljZE+YsSTaXxcIDsKK+WSvT55xIFufFwgOwor5ZCoPmTFq258XCA7Civljqg+Y2jDunxcIDsKK+mltj5yw6FvfFwgOwor54WkPm3DqWl8XCA7CivohZU+d8eObnxcIDsKK+WWtz5wxJNufFwgOwor5rWpPmjDoG98XCA7CivlkKk+ZsSTbnxcIDsKK+azhD54acOofFwgOwor5pCcPnPFjXV8XCA7CivpgbU+esWrbnxcIDsKK+S8qj53xJtpfFwgOwor54KOPnnDoW58XCA7CivmsJs+ZsSTbnxcIDsKK+eejj54acSBfFwgOwor6KqTPnNow6x8XCA7Civms6E+cMSBb3xcIDsKK+WYiT5qacSBfFwgOwor54ObPnpow7p8XCA7CivljqY+c2jDoHxcIDsKK+ihsD5jdcSrfFwgOwor6JabPnh1xJN8XCA7Civpvb8+Y2jHkHxcIDsKK+iwqD5qx5BufFwgOwor5piCPsOhbmd8XCA7Civnlo8+c2jFq3xcIDsKK+iAlz5ow6BvfFwgOwor5palPmNow6x8XCA7CivlpLg+a3XEgXxcIDsKK+eXlT5ow6lufFwgOwor5aeaPnnDoW98XCA7CivlpqU+dHXHknxcIDsKK+aOjz50xIFvfFwgOwor5Yi5PmNow6B8XCA7Civmi5M+dHXDsnxcIDsKK+mSpj5xxKtufFwgOwor6K+xPnnDsnV8XCA7CivmrYc+eGnEk3xcIDsKK+ajjT5nw7lufFwgOwor5pmLPmrDrG58XCA7Civmt4s+bMOsbnxcIDsKK+aCpj55dcOofFwgOwor5pWmPmTFq258XCA7CivnvZU+aMeObnxcIDsKK+i0tz5kw6BpfFwgOwor5o2PPm5pxJN8XCA7CivotL4+amnHjnxcIDsKK+WgoT5ix45vfFwgOwor5rWZPnpow6h8XCA7CivliqM+bGnDqHxcIDsKK+mZgD50dcOzfFwgOwor5Z2fPmbDqW58XCA7CivmvI8+bMOydXxcIDsKK+iMhT5tw6FvfFwgOwor5rupPnTEgW58XCA7Civpob0+d8OhbnxcIDsKK+aulj56aMOtfFwgOwor6JShPmPDoGl8XCA7Civlgqw+Y3XEq3xcIDsKK+W9rD5ixKtufFwgOwor5ouaPnDDoG58XCA7Civovag+ZMOgaXxcIDsKK+ehlT5zaMOtfFwgOwor5oa+PmjDoG58XCA7Civmh5I+bMeObnxcIDsKK+ebkD55w6FufFwgOwor5ZaJPmjDs3V8XCA7CivlrrQ+ecOgbnxcIDsKK+e/sD5ow6BufFwgOwor6YC7Pmx1w7N8XCA7Civoo7k+Z3XHknxcIDsKK+i0qT5mw6BufFwgOwor57uYPmh1w6x8XCA7Civpga4+emjEk3xcIDsKK+aTkj5xw61ufFwgOwor6JuuPm3DoW58XCA7Civoirc+emjHkHxcIDsKK+aMvT53x45ufFwgOwor5ZC7PnfEm258XCA7Civnsrk+Y3XDrHxcIDsKK+errT5qacOpfFwgOwor5q2qPnfEgWl8XCA7CivmorA+eGnDqHxcIDsKK+aWkT5ixIFufFwgOwor5a+hPmd1x458XCA7Civlvqo+eMO6bnxcIDsKK+aOoD5sw7zDqHxcIDsKK+eItT5qdcOpfFwgOwor5b69Pmh1xKt8XCA7CivosK0+dMOhbnxcIDsKK+Wrgj5zx45vfFwgOwor5amJPnfHjm58XCA7CivpqoY+bHXDsnxcIDsKK+eVjz53w6hpfFwgOwor6bKNPmLDoG98XCA7CivllaU+c2jDoHxcIDsKK+e6uT53w6lufFwgOwor6LmyPmTFq258XCA7Civpqpo+c8SBb3xcIDsKK+iJmD5zxY11fFwgOwor6IqdPnpoxKt8XCA7Civlk5c+aHXDoXxcIDsKK+W3vj5qxKtufFwgOwor5rerPnnDrW58XCA7Civnr64+bMOhbnxcIDsKK+S+hD56aMOtfFwgOwor5Y+JPmNoxIF8XCA7CivlrrA+eseOaXxcIDsKK+eekj5tw6FufFwgOwor5ZC8PmjHknV8XCA7Civlj6A+ZGnDqXxcIDsKK+ijmT5xw7pufFwgOwor5oGzPmvEm258XCA7CivpooE+YsSBbnxcIDsKK+iWqj54xKtufFwgOwor6aKKPmppw6F8XCA7CivpgK4+ZMeOaXxcIDsKK+a1uD5qw6xufFwgOwor5YiuPmd1xIF8XCA7Civlrps+d8eObnxcIDsKK+WYsT56aMeUfFwgOwor5oyqPm51w7N8XCA7CivlhZw+ZMWNdXxcIDsKK+WWgz5uw6FufFwgOwor6Ii1PmR1w7J8XCA7Civns5U+Z8SBb3xcIDsKK+enqT56aMOsfFwgOwor6ZKpPmfFjXV8XCA7Civnha4+emjHlHxcIDsKK+erlj5zaMO5fFwgOwor5qCqPnpoxat8XCA7Civnu6M+eGnDuXxcIDsKK+Wmlj55xIFvfFwgOwor6IOOPnTEgWl8XCA7Civmu6g+YsSrbnxcIDsKK+WXpD5jaMSrfFwgOwor5YyqPmbEm2l8XCA7Civog4M+d8OoaXxcIDsKK+i6gT56w6BvfFwgOwor54uuPnNoxKt8XCA7Civlh5s+bMeQbnxcIDsKK+m+nz5ndcSrfFwgOwor6KO4Pmx1x5J8XCA7Civlq6M+ecSBbnxcIDsKK+eqkT55w6FvfFwgOwor5bC5PnnHkG58XCA7Civmjpg+anXDqXxcIDsKK+eLrT54acOhfFwgOwor6aaoPnjEq258XCA7CivmvZg+cMSBbnxcIDsKK+eMtD5ow7N1fFwgOwor55WUPnDDoG58XCA7CivnlZw+Y2jDuXxcIDsKK+aQgj5sx5J1fFwgOwor5pesPnjDum58XCA7Civpqoc+aMOgaXxcIDsKK+eBvz5jw6BufFwgOwor6ZuBPnnDoG58XCA7Civpn7U+ecO5bnxcIDsKK+Wqmj5tw6hpfFwgOwor5pSAPnDEgW58XCA7CivnqoM+cWnDqHxcIDsKK+ijmD5xacO6fFwgOwor5aupPm7DqG58XCA7CivpgYI+c3XDrHxcIDsKK+mZiz5sw7J1fFwgOwor56yoPmLDqG58XCA7CivljJk+Y2jDrXxcIDsKK+i4qT5jx45pfFwgOwor5ZWhPmbEk2l8XCA7Civpu5s+ZMOgaXxcIDsKK+mciT5tw6lpfFwgOwor5Z2kPmvFq258XCA7CivluJY+dGnEm3xcIDsKK+eEsD55w6BufFwgOwor5ZuaPnFpw7p8XCA7CivkvoM+a8eObnxcIDsKK+S9kD56dceSfFwgOwor6ZuAPnF1w6h8XCA7CivluIY+ZsSBbnxcIDsKK+aDrT5jw6FufFwgOwor5ra1PmjDoW58XCA7CivpgJc+ZMOydXxcIDsKK+a+oT56x45vfFwgOwor57KqPmbDqG58XCA7CivprYE+a3XDrXxcIDsKK+aNhj5rx5RufFwgOwor6IKdPmfEgW58XCA7Civmu6U+bMOgbnxcIDsKK+mpvD50dcOzfFwgOwor5rqDPmt1w6x8XCA7Civng6Q+a8eOb3xcIDsKK+a9rT50w6FufFwgOwor6K+APmp1w6l8XCA7Civls7s+asO5bnxcIDsKK+mDoT5qw7lufFwgOwor5oCvPnFpw6h8XCA7CivojII+bcOgb3xcIDsKK+iCoj56aMSrfFwgOwor5bC0PmfEgW58XCA7CivnqLs+ZMOgb3xcIDsKK+agvT56xIFpfFwgOwor6LG5PmLDoG98XCA7CivouYg+ZMeOb3xcIDsKK+S9kT55w7J1fFwgOwor5re5PnnEgW58XCA7Civlmrw+anXDqXxcIDsKK+iAvT5kxIFufFwgOwor5pqRPnNox5R8XCA7CivopZ8+asSrbnxcIDsKK+ivpz5jaMOgfFwgOwor5o+qPmppxat8XCA7Civnv4U+Y2jDrHxcIDsKK+i+lj54acOhfFwgOwor5oK8PmTDoG98XCA7CivpmI4+ecOhbnxcIDsKK+aYpz5tw6hpfFwgOwor5Ye9PmjDoW58XCA7Civlk4k+esSBaXxcIDsKK+eltz5kx45vfFwgOwor5oqSPnNoxat8XCA7Civmrbk+ZMeOaXxcIDsKK+aXsT5ow6BufFwgOwor5oOfPnfDqWl8XCA7CivosKM+ecOhb3xcIDsKK+a7nj56aMOsfFwgOwor5a2VPnnDuW58XCA7CivmorM+c2jFq3xcIDsKK+iCuj5mw6hpfFwgOwor5Li4PnfDoW58XCA7CivmsYE+emjEq3xcIDsKK+e6sT5zaMSBfFwgOwor6K+hPmd1x5B8XCA7CivlnY4+a8eObnxcIDsKK+eovD5qacOgfFwgOwor6ISCPnpoxKt8XCA7CivokIQ+dMOhb3xcIDsKK+aNnj5sxIFvfFwgOwor5bGRPnhpw6h8XCA7CivkvJ4+c8eObnxcIDsKK+idtj5kacOpfFwgOwor6ZO4Pnpow7l8XCA7CivnqJo+emjDrHxcIDsKK+iBgj5uacOofFwgOwor6ZmhPmTHknV8XCA7Civku5E+bMO6bnxcIDsKK+eEiT55xIFufFwgOwor5reYPnTDoW98XCA7Civlnq4+a3XHjnxcIDsKK+WwiT53w6hpfFwgOwor5ruUPnTEgW98XCA7CivmjaM+ZMeOb3xcIDsKK+eRsD5ndcSrfFwgOwor57yGPmzDoG58XCA7CivmtY8+bGnDunxcIDsKK+eOqz5tw6lpfFwgOwor5qWjPm3DqWl8XCA7Civor4g+emjDoHxcIDsKK+aMnz54acOpfFwgOwor54WePnNow6B8XCA7CivnhJo+ZsOpbnxcIDsKK+mcjj5zaMOgfFwgOwor5pGnPmN1xKt8XCA7Civmr68+dMeObnxcIDsKK+aMqz5jdcWNfFwgOwor6L+mPmppxIF8XCA7CivmnL0+eGnHlHxcIDsKK+iZkD5uw7zDqHxcIDsKK+WFkT5kdcOsfFwgOwor6a2FPm3DqGl8XCA7Civll70+c8OydXxcIDsKK+WglT5kdcOyfFwgOwor6LCQPnhpw6l8XCA7CivolJE+bWnDqHxcIDsKK+ixgT5odcOyfFwgOwor5rK4PmbDqGl8XCA7Civol4k+amnDqHxcIDsKK+Wxjj5zaMeQfFwgOwor5Y24Pnhpw6h8XCA7CivpkqU+ecOgb3xcIDsKK+eCrT50w6BufFwgOwor55yoPnpox458XCA7CivnnqU+cGnEk3xcIDsKK+WPqD5kxIFvfFwgOwor6JSsPnNoxat8XCA7CivnmL4+eceQbnxcIDsKK+mCsT5xacWrfFwgOwor6IaPPmfEgW98XCA7Civpl7U+bceQbnxcIDsKK+iQgz5jdcOsfFwgOwor5aaePm5pxat8XCA7Civlrb0+bmnDqHxcIDsKK+a3kT5zaMO6fFwgOwor54G2PnrDoG98XCA7Civmlow+YsSrbnxcIDsKK+Wvhz5rw7J1fFwgOwor5rKbPnDDqGl8XCA7Civlsa8+dMO6bnxcIDsKK+aBlT5zaMO5fFwgOwor5aaDPmbEk2l8XCA7CivpuKA+amnFq3xcIDsKK+aypj5sw7pufFwgOwor5pqHPnhpw6F8XCA7Civmj4k+csOzdXxcIDsKK+iQnT5sdcOzfFwgOwor5r6cPmzDoW58XCA7CivlkLE+emjEq3xcIDsKK+ibmz56aMWrfFwgOwor5o+9PmzHjm58XCA7Civojas+ecOsbnxcIDsKK+WysT5kw6BpfFwgOwor552sPmPHjml8XCA7CivmnqM+eseOb3xcIDsKK+aShz5wacSbfFwgOwor5aWiPnNoxJN8XCA7CivluJw+emjDrHxcIDsKK+iPjD5qxatufFwgOwor5a+FPnnDrW58XCA7Civolb4+bMSbaXxcIDsKK+i0vz5odcOsfFwgOwor6ZKnPmrFq258XCA7CivorrM+aHXDrHxcIDsKK+eqpT5rdcSrfFwgOwor6KGNPnnHjm58XCA7CivplKM+bHXDs3xcIDsKK+aSvD5ow6BufFwgOwor6LWOPnNow7p8XCA7CivlspQ+Y2jDoHxcIDsKK+eGjz54xatufFwgOwor57ulPnN1xKt8XCA7Civlkqc+bGnEk3xcIDsKK+WAjz5zaMWrfFwgOwor55CQPnN1x5J8XCA7Civnh6U+esOgb3xcIDsKK+mrpj5tw6FvfFwgOwor5YyAPnnDum58XCA7Civnop8+ZGnDqXxcIDsKK+WJlj5wxY11fFwgOwor5pCTPmN1xY18XCA7CivltYs+bcOpaXxcIDsKK+WXpj5zdcWNfFwgOwor5Z6SPmzEm2l8XCA7Civlmao+esOgb3xcIDsKK+iVtD55w7lufFwgOwor6L+tPmRpw6l8XCA7Civlh78+esOhb3xcIDsKK+S7nj5yw6hufFwgOwor5omzPmLEgW58XCA7CivnmKs+dMSBbnxcIDsKK+WihT5zaMO5fFwgOwor5oaLPmJpxJN8XCA7CivlpY4+a3XDrXxcIDsKK+envT5odcOsfFwgOwor5Y2mPmd1w6B8XCA7Civkvaw+bMeOb3xcIDsKK+iUmj53w6hpfFwgOwor5rS9PnFpw6B8XCA7CivomoA+c2jDrXxcIDsKK+WQhj55xIFvfFwgOwor6Jm+PnhpxIF8XCA7CivllL4+dHXDsnxcIDsKK+iwrD5tacO5fFwgOwor6JqVPmPDoW58XCA7CivotaY+c2jDqHxcIDsKK+eLiD5iw6hpfFwgOwor6YK5PnrFjXV8XCA7Civlr50+cceQbnxcIDsKK+iLnz5nx5J1fFwgOwor55G2PnnDoW98XCA7Civmoq0+c3XFjXxcIDsKK+W9pj55w6BufFwgOwor5oKNPmjDoG58XCA7CivmjJo+emjDrHxcIDsKK+aCrz5tx5BufFwgOwor6JaHPnfDqWl8XCA7CivljqU+anXDqXxcIDsKK+eeqT56aMeUfFwgOwor6YOdPmjHjm98XCA7CivmqpA+ecOhbnxcIDsKK+eJnz5tw7N1fFwgOwor5ZeFPnhpw7l8XCA7CivltJs+anXDqXxcIDsKK+aeoj5zaMWrfFwgOwor56OKPmzEm2l8XCA7Civms7s+eGnDqHxcIDsKK+W/vz5mw6hufFwgOwor5LmNPnpow6B8XCA7Civnlpo+amnDuXxcIDsKK+maiz5zdcOtfFwgOwor5YuYPmvEgW58XCA7CivmmaY+aHXDrHxcIDsKK+ivqz5qacOofFwgOwor6J66Pmx1w7N8XCA7Civloqk+ZMWrbnxcIDsKK+anvT5jw6FvfFwgOwor5oOrPmLDqGl8XCA7Civnpr0+ccOtbnxcIDsKK+iaij53w6lufFwgOwor5beNPnfEk2l8XCA7CivmlJI+eseObnxcIDsKK+elnz5zdcOsfFwgOwor5bCnPnnDoW98XCA7CivmjKA+bsOhb3xcIDsKK+e7ij5iw6BufFwgOwor5oeIPnhpw6h8XCA7CivltL0+eseOaXxcIDsKK+iUkz5tw6BufFwgOwor6JepPmbEgW58XCA7Civli4s+eMWrbnxcIDsKK+iQjj53xJtpfFwgOwor5Y+pPmvDsnV8XCA7CivpnbQ+eHXEk3xcIDsKK+eagj56w6BvfFwgOwor6J+5Pnhpw6h8XCA7Civmg64+ZMOgbnxcIDsKK+aQlD5zxIFvfFwgOwor5YaJPnLHjm58XCA7CivpppI+bcOhbnxcIDsKK+mXuj5ndcSrfFwgOwor5ZqOPmjDoW98XCA7Civpqo8+asO5bnxcIDsKK+eToz5iw6BufFwgOwor6IWuPnPEgWl8XCA7CivmtoU+bmnDqHxcIDsKK+mTkD5rw6BvfFwgOwor5qmxPmNow7p8XCA7CivlnK0+Z3XEq3xcIDsKK+m7nT55x5J1fFwgOwor5pKuPmN1xY18XCA7Civouoc+Y2jDunxcIDsKK+i4sT5kdcOyfFwgOwor5ZOGPmR1xY18XCA7CivlpK0+ecSBb3xcIDsKK+aoij5mw6FufFwgOwor5b6YPnDDoWl8XCA7CivkuqU+aMOgaXxcIDsKK+ikmj5jaMeUfFwgOwor54ysPnfDqGl8XCA7Civoi5Q+dMOhaXxcIDsKK+aBgz5zaMOsfFwgOwor6YWjPmjEgW58XCA7CivmgKA+ZMOgaXxcIDsKK+auiT54w7lufFwgOwor5o+NPnrDsnV8XCA7Civmk4I+bMOoaXxcIDsKK+aLlz5uacO5fFwgOwor6ZyWPmzDrW58XCA7CivplIQ+Y2jDunxcIDsKK+m6nz5sw61ufFwgOwor6Iy1PnnEq258XCA7CivogrQ+ecOhb3xcIDsKK+mqsD50w7N1fFwgOwor6KSCPmd1w6B8XCA7Civoirg+ecO6bnxcIDsKK+ervz5nxIFufFwgOwor57OZPmPEgW98XCA7CivnoJo+ecOgbnxcIDsKK+eggj5zaMSBfFwgOwor6Ze4Pnpow6F8XCA7CivmjY0+aMOgbnxcIDsKK+iCrj7EgW5nfFwgOwor5ZKEPmR1xY18XCA7CivllKA+bMOhb3xcIDsKK+mikz50dcOtfFwgOwor5qa0Pmxpw7p8XCA7CivmsbA+dMOgaXxcIDsKK+i+mT5jaMOofFwgOwor6IuHPnfEm2l8XCA7CivluLc+d8OpaXxcIDsKK+iwjT5kacOpfFwgOwor6IeAPnTDum58XCA7CivllYM+a8SbbnxcIDsKK+e+lD5nxIFvfFwgOwor6Iq5PnHDrW58XCA7Civmi4w+YsOgbnxcIDsKK+icgD5zaMeUfFwgOwor6K+bPnpoxat8XCA7CivplIg+eGnDuXxcIDsKK+mSnT5kw7lufFwgOwor5qCFPnpow6B8XCA7Civls5k+emjDrHxcIDsKK+mfpz5yw6hufFwgOwor5puZPnNow7l8XCA7Civlu5M+a3XDsnxcIDsKK+iMhD5xacOpfFwgOwor5ZG4PnDEk2l8XCA7Civku5U+c2jDrHxcIDsKK+a4rT53w6hpfFwgOwor5aa+PnFpw6h8XCA7Civogos+bMOoaXxcIDsKK+eMvj5odcOhfFwgOwor56qSPnpow6x8XCA7CivnmpM+aMOgb3xcIDsKK+aOkD5xacSBfFwgOwor5oemPm51w7J8XCA7CivlgJQ+anXDqXxcIDsKK+WlhD55x45ufFwgOwor6IWTPmbDqWl8XCA7CivmuKM+emjEgXxcIDsKK+eYpD5sacO6fFwgOwor6JavPnNox5R8XCA7Civmpbc+a8eOaXxcIDsKK+aFkT5zaMOofFwgOwor6Ze9Pm3HkG58XCA7CivmsZs+eMO5bnxcIDsKK+WYiD5jw6FvfFwgOwor5qK1PmbDoG58XCA7Civps54+bMOtbnxcIDsKK+aLtz5rx45vfFwgOwor6JOTPmLDqGl8XCA7Civmi60+c2jDrHxcIDsKK+aZlj5odcSrfFwgOwor55G+PmrHkG58XCA7Civpqrg+aMOhaXxcIDsKK+mqoT5sdcOzfFwgOwor56GFPmd1xKt8XCA7Civkvog+Y2jHkHxcIDsKK+WkpT5odceSfFwgOwor56mXPnN1w6x8XCA7CivmsoE+ccOsbnxcIDsKK+aCtD5jdcOsfFwgOwor55CJPmxpw7p8XCA7Civpqa8+eMO6bnxcIDsKK+e6rD53xJtpfFwgOwor57KkPnl1w6h8XCA7Civll5w+c2jDrHxcIDsKK+mapz5zdcOsfFwgOwor5r6IPmNow6h8XCA7Civpkq4+bmnHlHxcIDsKK+WTpz5jaMSrfFwgOwor5o66PmPDoG58XCA7Civlv5Y+Y8eUbnxcIDsKK+a8sT5zaMO5fFwgOwor54OZPmzDoG98XCA7Civnm5Q+a3XEq3xcIDsKK+eYqj5iacSTfFwgOwor55y4Pm3Ds3V8XCA7CivolYM+ZsOhbnxcIDsKK+WUhj5zdcWNfFwgOwor56OLPmN1xY18XCA7CivkvL0+amnEgXxcIDsKK+Weoj5nw7J1fFwgOwor6KSqPnTDuW58XCA7CivnmLg+cXXDqXxcIDsKK+Wymj5sw6FufFwgOwor5ZazPmNoxIF8XCA7Civmn78+c2jDrHxcIDsKK+WPsT5jaMOsfFwgOwor5YyjPnhpw6F8XCA7Civmg4s+d8eObnxcIDsKK+eXsD50w6FufFwgOwor5qGmPmh1w6B8XCA7Civlko4+amnDuXxcIDsKK+aGqD5oxIFufFwgOwor6auTPnN1x5B8XCA7Civotr4+emjHkHxcIDsKK+eCvT5jaMOsfFwgOwor5a2wPnNow7p8XCA7Civmj6k+a8SBaXxcIDsKK+eqpj5kw7J1fFwgOwor55+iPnNox5B8XCA7CivphZ0+ecO5bnxcIDsKK+a9pj5sx45vfFwgOwor5YioPnDDoW98XCA7CivprJM+YsOsbnxcIDsKK+acrT56aMOhfFwgOwor5Lq1Pnhpw6h8XCA7Civkv6g+eceObnxcIDsKK+i3uj5kdcOyfFwgOwor6LSuPnpox5R8XCA7CivmgpY+YsOoaXxcIDsKK+iMrD5jaMOhfFwgOwor54KZPnpow6x8XCA7Civmv5I+YsSrbnxcIDsKK+edkD5sw6BpfFwgOwor5YGOPnfEk2l8XCA7CivonY4+eGnEk3xcIDsKK+adtT5jaMeUfFwgOwor6KGFPnjDrG58XCA7CivmpaA+bsOhbnxcIDsKK+mfrD50xIFvfFwgOwor5oq/Pm3HkG58XCA7CivlnqY+a8SbbnxcIDsKK+ettT55w6FufFwgOwor55ifPnfEk258XCA7Civlqao+bMOhbnxcIDsKK+iRtT5rdcOtfFwgOwor6aOVPnPFjXV8XCA7CivouZE+bmnDqHxcIDsKK+eruj56aMO6fFwgOwor5ZCdPmzDrG58XCA7Civnnas+amnDqXxcIDsKK+m5ij5xdcOofFwgOwor5Y2JPmh1w6x8XCA7CivpgYE+ZMO5bnxcIDsKK+W6tj5zaMO5fFwgOwor6JWKPnJ1x5B8XCA7Civor7I+aHXDrHxcIDsKK+e8qj5tacO5fFwgOwor6ZGrPnjEq258XCA7Civnnb0+a3XDrXxcIDsKK+i1oz5nw6BufFwgOwor5Za9PmxvdXxcIDsKK+eroz5qw7lufFwgOwor6aaIPmt1w6x8XCA7Civllos+ZGnDqXxcIDsKK+WBjD5ydcOyfFwgOwor546uPnfEm2l8XCA7CivnorM+dMOgbnxcIDsKK+aqgD50w6FufFwgOwor5q6GPmTDoGl8XCA7CivopJI+YsSBb3xcIDsKK+i+hD56aMOpfFwgOwor5ZeoPmjEgWl8XCA7Civor5g+amnDqXxcIDsKK+aKoT5sw7pufFwgOwor6bmrPmppw7l8XCA7CivmmZc+aMOhbnxcIDsKK+ayjD5kw7lufFwgOwor6I2kPmjFq258XCA7Civnoas+bGnDunxcIDsKK+WvkD5tw6hpfFwgOwor5qmEPmfHjm58XCA7CivmpoQ+bMeObnxcIDsKK+esiz5zx5RufFwgOwor6by+PmjEgW58XCA7Civlmaw+c2jDrHxcIDsKK+mbrz53w6lufFwgOwor6J+gPnDDoW58XCA7CivpmIk+ecSBbnxcIDsKK+ahhT53w6lpfFwgOwor5aOVPmjDoW98XCA7Civojp4+d8eObnxcIDsKK+mUmj5tw6FvfFwgOwor6LWBPnLDqG58XCA7CivliYE+ZHXDsnxcIDsKK+iFjD55xIFufFwgOwor57ykPmLEq258XCA7Civll5Y+c8WNdXxcIDsKK+ickj55w6FufFwgOwor5reGPnnDoW98XCA7Civnnb8+cnXDrHxcIDsKK+ixmj50w7pufFwgOwor6ZuPPmNow7p8XCA7CivpgZA+eGnDoXxcIDsKK+iWsD54xatufFwgOwor56+TPmzHknV8XCA7CivokYY+YseOb3xcIDsKK+W8mz5jaMOtfFwgOwor5Z6bPmR1x5J8XCA7CivmkoU+anXEk3xcIDsKK+WQoD5mw6hpfFwgOwor6aaEPmjDum58XCA7Civppag+dMO6bnxcIDsKK+aetz5qacSBfFwgOwor6IOvPmt1w6B8XCA7CivlkZc+YsOgaXxcIDsKK+efnD5qxKtufFwgOwor54KWPmTDuW58XCA7Civpl6s+ecOgbnxcIDsKK+i5kj5tw6FufFwgOwor5rOvPm3HkG58XCA7CivoopI+dMeObnxcIDsKK+icmD56aMSrfFwgOwor5oqgPmvFjXV8XCA7Civnn5c+Y2jDuXxcIDsKK+mzlj5iacSTfFwgOwor6ICYPnnDum58XCA7Civphro+eMWrbnxcIDsKK+eDrD5qw6xufFwgOwor5ZmkPmrDrG58XCA7Civpq68+csOhbnxcIDsKK+icvz53xIFufFwgOwor5oqJPmp1w6l8XCA7CivnsYE+bMOgaXxcIDsKK+WNrz5tx45vfFwgOwor6KO0PnDDqWl8XCA7Civnm44+w6BuZ3xcIDsKK+aOsD5ixIFpfFwgOwor6ZiqPmLHjm58XCA7CivpmJE+bMOhbnxcIDsKK+WVkD5jdcOsfFwgOwor5rmDPnDDoGl8XCA7CivllZU+dMOhb3xcIDsKK+ivvT5mxJtpfFwgOwor5paTPmzDoW58XCA7CivlqJM+d8SbaXxcIDsKK+aRnj5sdcOyfFwgOwor5YiOPnfEm258XCA7CivnmZ4+bMOgaXxcIDsKK+WIvT5ndcOsfFwgOwor5qaoPnpow6B8XCA7Civog60+ecSBbnxcIDsKK+S8qz56aMO5fFwgOwor6Je7PnrHjm98XCA7CivliZA+Z3XHjnxcIDsKK+mprj50dcOzfFwgOwor6IOaPnDEk2l8XCA7Civmg7A+ZHXDsnxcIDsKK+mrhT5sw7N1fFwgOwor5ZerPm5pw6h8XCA7Civnh5Q+ZsOhbnxcIDsKK+iHij5zw6BvfFwgOwor5radPmzDoG98XCA7CivoiIA+eceOb3xcIDsKK+WShj5ww6FvfFwgOwor6ZewPnLDuW58XCA7Civmi4Q+emjHlHxcIDsKK+aYij5ow6BvfFwgOwor5YGVPmppxJN8XCA7CivkvZc+dHXDs3xcIDsKK+i1sz5qaceUfFwgOwor5L6PPnpoxat8XCA7Civouo8+bMOsbnxcIDsKK+e0ij53w6hufFwgOwor566pPmx1w7N8XCA7Civlkqs+emjHkHxcIDsKK+mdsz5qw6xufFwgOwor6bKoPnNoxIF8XCA7CivpgoM+c3XDrHxcIDsKK+iktD5ix45vfFwgOwor5Z2NPnTEgW58XCA7CivmiYk+ZsSTaXxcIDsKK+mYmT5xdcOofFwgOwor5raUPmPDqW58XCA7Civnmr8+bceQbnxcIDsKK+WCoz5kx45pfFwgOwor6LmCPnLDs3V8XCA7CivngJo+aMOgbnxcIDsKK+ealj53x45ufFwgOwor55yIPmTEgW58XCA7CivphYs+cWnDunxcIDsKK+mbuT5iw6FvfFwgOwor5b+QPnTHjm58XCA7CivmrqE+YsOsbnxcIDsKK+eMpT53xJtpfFwgOwor5LqYPmfDqG58XCA7CivnmIE+Y3XDrHxcIDsKK+eRlT54acOhfFwgOwor56O3PmzDrW58XCA7CivnjZc+anXDqXxcIDsKK+mFiT55x5J1fFwgOwor6ZWQPmfHjm98XCA7Civomaw+cWnDunxcIDsKK+WgsD55w6BufFwgOwor6IqlPmppw6h8XCA7Civnv6E+ZsSbaXxcIDsKK+ebuT5kx5RufFwgOwor57CqPnrEgW58XCA7Civmg6w+cWnDqHxcIDsKK+ezrz5udcOyfFwgOwor5ZSBPnnDoG58XCA7CivosJo+ecOgbnxcIDsKK+W5uj55xIFvfFwgOwor6JmxPnNoxKt8XCA7Civngpw+d8SbaXxcIDsKK+eRmT5ux45vfFwgOwor57qtPnnDum58XCA7CivpgZs+bGnDunxcIDsKK+iOmD54xKtufFwgOwor6aqFPmh1w6F8XCA7Civmgbo+a8eOaXxcIDsKK+WMrj5ndcOsfFwgOwor5pOePnPHknV8XCA7CivluaE+ZsSBbnxcIDsKK+Whvj5zaMO6fFwgOwor56OQPnDDoW58XCA7CivnhIo+aMOgbnxcIDsKK+aVlT5jaMOsfFwgOwor6aaBPm7Em2l8XCA7Civmsb4+ZsOpbnxcIDsKK+aZjz55w6BufFwgOwor6YCFPmjDsnV8XCA7CivltII+bMOhb3xcIDsKK+WohD5sw7N1fFwgOwor5o6jPmNow6h8XCA7CivpgoI+eGnDqHxcIDsKK+WPnz5zx5J1fFwgOwor6Ie8Pmppw7l8XCA7Civnr74+bWnDqHxcIDsKK+aQkD5jaMO5fFwgOwor6JqqPmTHknV8XCA7Civmt6Y+Z8OgbnxcIDsKK+eXmD5kw7J1fFwgOwor6IuePmLEgW98XCA7CivmiJs+amnDoXxcIDsKK+annz5ixKtufFwgOwor5pSrPmp1w6l8XCA7Civngbg+amnHlHxcIDsKK+e6qz5yw6hufFwgOwor5rqJPmfDoGl8XCA7CivosJE+bsO8w6h8XCA7Civlhr0+bGnDqHxcIDsKK+ivjD56xY11fFwgOwor5qStPnR1x5J8XCA7Civpn60+amnHlHxcIDsKK+m6vj5odcSrfFwgOwor6KOfPnNoxIF8XCA7CivmgYE+bcOzdXxcIDsKK+axtj53w6hufFwgOwor5oiNPnNow7l8XCA7Civnp7g+amnEk3xcIDsKK+eitD5jaMOhfFwgOwor5qatPnhpw6h8XCA7Civnuqg+d8OhbnxcIDsKK+mFqj5sw6BvfFwgOwor57K8PmzDrW58XCA7CivnkoA+Y3XHkHxcIDsKK+WEoT5sxJtpfFwgOwor5YKAPmt1x5B8XCA7Civnmog+Z3XEq3xcIDsKK+mTgD55w7N1fFwgOwor5pG6Pnpow6l8XCA7Civooog+amnEgXxcIDsKK+WPgT5zxIFufFwgOwor5rWcPmLEq258XCA7CivplYE+bcSbaXxcIDsKK+W/uD5uaceUfFwgOwor556wPmvDoG58XCA7Civnj54+bHXDsnxcIDsKK+WCqT5udcOzfFwgOwor6ZKFPmrEq258XCA7CivmoYA+amnDqXxcIDsKK+e7rz5mxJNpfFwgOwor5rmuPnnEgW58XCA7Civpoo8+aMOhaXxcIDsKK+mTjj5kdcOzfFwgOwor5pS4PmLEq258XCA7CivpuKg+YseOb3xcIDsKK+WeoD55w61ufFwgOwor6JyXPmd1xIF8XCA7CivomqQ+eseOb3xcIDsKK+evmT5nxIFvfFwgOwor5rCuPmTDoG58XCA7Civpu6A+eGnDoXxcIDsKK+eXoz56aMOsfFwgOwor5qa3PnF1w6h8XCA7CivosKk+bcOhbnxcIDsKK+iJrj5nw6hufFwgOwor6L28PnNow6x8XCA7CivpppE+aseQbnxcIDsKK+mmij5zxY11fFwgOwor6aWqPnLDqG58XCA7Civooak+Y2jHjnxcIDsKK+eGqD55w7lufFwgOwor5YmcPnfEgW58XCA7CivmtZo+asO5bnxcIDsKK+mSmT5nw6BpfFwgOwor6ZWsPmh1w7J8XCA7CivmhKA+ecO5bnxcIDsKK+WZmT5xw61ufFwgOwor5bKRPmPDqW58XCA7CivnurY+bMO6bnxcIDsKK+aQvT5jaMOhfFwgOwor56KjPmppw6l8XCA7Civmiao+bcOpbnxcIDsKK+WVvj5qacWrfFwgOwor5ZG3PnhpxIF8XCA7Civooa4+Z8eUbnxcIDsKK+W/vj5rw6BpfFwgOwor6JK/PmjEgW98XCA7CivphbY+bcOpaXxcIDsKK+iarz5xacWrfFwgOwor5p2zPnnHjm98XCA7Civoiq4+cnXDrHxcIDsKK+mZqD55x5RufFwgOwor56+dPmfFjXV8XCA7Civnkqg+Y8OgbnxcIDsKK+W2mT5sw61ufFwgOwor6JyaPmbEm2l8XCA7CivojpM+bcOpaXxcIDsKK+ixjD53xIFufFwgOwor6JORPnN1xY18XCA7CivlqJE+c3XFjXxcIDsKK+S7qD5mx45ufFwgOwor6Lm2Pmp1w6l8XCA7CivompM+eceQbnxcIDsKK+mthz55x45ufFwgOwor6KS2Pnpow6l8XCA7Civom7A+emjDrXxcIDsKK+i5qT5iacOpfFwgOwor5oC1PmNow7l8XCA7Civkurs+csOpbnxcIDsKK+eZuD5ndceQfFwgOwor6IiQPnNow6x8XCA7CivoooI+bcOoaXxcIDsKK+aLrj5qacOpfFwgOwor54mSPmRpw6l8XCA7Civll58+amnEk3xcIDsKK+eWnz5uw7zDqHxcIDsKK+WnmD5wxKtufFwgOwor5rWjPnfHjm58XCA7CivmsrE+dHXDs3xcIDsKK+WXpT5ow6FvfFwgOwor5ZeyPmRpx458XCA7CivlkqQ+emjDoHxcIDsKK+WOqT5qacO5fFwgOwor5piZPnTDoW58XCA7CivmpYI+Y2jDoXxcIDsKK+aTgD5nx45ufFwgOwor5Z6TPmfEgWl8XCA7CivolJc+emjDqHxcIDsKK+eqiD55x45vfFwgOwor5b6VPmzDoWl8XCA7CivluZQ+bcOgbnxcIDsKK+WVuz5jaMOsfFwgOwor5qeBPmfHjm98XCA7Civlpo0+ecOhbnxcIDsKK+mCrz5ow6FufFwgOwor5oyyPnN1xY18XCA7CivpgbQ+bMOtbnxcIDsKK+Wziz54w7pufFwgOwor6K+ZPmh1xKt8XCA7CivlgYM+eceObnxcIDsKK+WjrD5yw6lufFwgOwor5o6HPmR1w7N8XCA7Civlm6Q+dMO6bnxcIDsKK+iAqD5uw7J1fFwgOwor57u6Pmxpx5R8XCA7Civmj78+ccOsbnxcIDsKK+iipD5tw6BvfFwgOwor6YeJPnnDsnV8XCA7Civpup0+c2jDqHxcIDsKK+W9lz5odcOsfFwgOwor5ZuhPm7EgW58XCA7CivovpQ+cMOoaXxcIDsKK+iNnz5odcOsfFwgOwor6ZyPPmbEk2l8XCA7Civog6Q+ecOsbnxcIDsKK+m4tT50dcOzfFwgOwor55qLPmfEgW98XCA7CivnpZc+emjEq3xcIDsKK+agiT5qacOpfFwgOwor5aedPnNoxat8XCA7CivkvZg+c2jDqXxcIDsKK+ibgD56aMO5fFwgOwor6LaUPmxpw6h8XCA7CivpopQ+aMOgbnxcIDsKK+aHkT5tw6hufFwgOwor5a2sPm7EgW98XCA7Civlla4+bmnDqHxcIDsKK+a8lT5jw6FvfFwgOwor6JS7PmvDsnV8XCA7Civlgbs+bMOzdXxcIDsKK+mDuD5kxIFufFwgOwor5L2wPmLHjml8XCA7Civpvps+a8SBbnxcIDsKK+eQqD5rxatufFwgOwor546zPmTDoGl8XCA7CivpgrA+dMOhaXxcIDsKK+mSvj5qaceOfFwgOwor6bKlPnNow618XCA7CivlrZE+amnDqXxcIDsKK+mAtT5rdcOtfFwgOwor5ZafPmt1w6x8XCA7Civnups+ZMOgb3xcIDsKK+eCtz56aMO5fFwgOwor54qSPmvDoG98XCA7Civnj4g+amnEgXxcIDsKK+WRpj55xY11fFwgOwor6ZWCPmzDsnV8XCA7CivnhbI+YseOb3xcIDsKK+Wytz5tw61ufFwgOwor5ZaRPnnEq258XCA7Civpsb8+ecOzdXxcIDsKK+euuD56aMO5fFwgOwor6ZOgPmvHjml8XCA7CivlqIY+cseOb3xcIDsKK+S9nT5nxY11fFwgOwor6bOFPnFpxat8XCA7CivomrE+emjDoHxcIDsKK+eXqD5sw6FvfFwgOwor6ZSyPnFpw6h8XCA7CivnpZo+enXDsnxcIDsKK+afmj55w7J1fFwgOwor54uvPmh1w6F8XCA7CivotYo+c2jEk3xcIDsKK+enhj5nx45ufFwgOwor6bucPmNow7l8XCA7CivopJM+YseOb3xcIDsKK+afqT5qacO5fFwgOwor6YGSPnFpw7p8XCA7CivlvJE+c2jDrHxcIDsKK+iwsj5qdcOpfFwgOwor6buNPnNox5R8XCA7Civng6k+aHXDrHxcIDsKK+ivvz53xJtpfFwgOwor5pGIPmLDrG58XCA7Civonqs+c2jDrHxcIDsKK+mipj5ww61ufFwgOwor6KaDPnTDoW58XCA7CivmmJU+eMSrbnxcIDsKK+a3lj5uw6BvfFwgOwor562gPnnDum58XCA7CivmgZo+aHXDrHxcIDsKK+iOoD55x5J1fFwgOwor552+PmfEgW98XCA7CivojZo+amnDoXxcIDsKK+mUiT5jdcOyfFwgOwor5qmbPmp1w6l8XCA7CivpmJU+cXXDqHxcIDsKK+mYhD5qacWrfFwgOwor5bOBPm3Hjm98XCA7Civlkrs+eGnFq3xcIDsKK+mUjD54xKtufFwgOwor5r2NPnfDqWl8XCA7Civppo8+bGnDuXxcIDsKK+iLrz5ixJtufFwgOwor5qGOPnpow6x8XCA7Civoir4+ZsOoaXxcIDsKK+efjT5qdcOpfFwgOwor5b+7PnjEq258XCA7Civnr5E+a3XDrHxcIDsKK+mVoj5qdcOpfFwgOwor6ZKbPnTDoGl8XCA7CivnpYk+emjHkHxcIDsKK+awpD55xKtufFwgOwor54uyPnPFq258XCA7CivlpJQ+a3XDrXxcIDsKK+mVlD5ixKtufFwgOwor5rCyPnnFq258XCA7CivmnYg+Y2jEgXxcIDsKK+iNgD54w7pufFwgOwor6ZK6Pnl1w6h8XCA7CivmtYM+amnDoXxcIDsKK+eXlD56aMOsfFwgOwor6KG9PnLDqG58XCA7Civnh6c+c3XDrHxcIDsKK+Wbvz55w7J1fFwgOwor5ZaZPmh1w6x8XCA7Civmn5E+Z8SBbnxcIDsKK+icjT5jaMO6fFwgOwor57yZPmrDrG58XCA7Civlkqk+bWnEk3xcIDsKK+mcvj5tw6FpfFwgOwor56iUPnLEm258XCA7CivplJs+YsSTbnxcIDsKK+egoz50dcOzfFwgOwor54+JPm3DrW58XCA7Civlq5Q+cMOtbnxcIDsKK+WbtT5sw7pufFwgOwor6LmJPmN1xY18XCA7CivnrJ4+Y2jEq3xcIDsKK+miiT5qacOhfFwgOwor6ZOiPnpoxat8XCA7Civmh4s+bcOgb3xcIDsKK+eMsT5uw6FvfFwgOwor5ZmxPmp1w6l8XCA7CivplY0+bmnDqHxcIDsKK+ihvj5xxKtufFwgOwor55yZPmNow6x8XCA7Civog5s+amnHjnxcIDsKK+iAhD5tw6BvfFwgOwor5qmQPnR1w7N8XCA7CivmtJk+emjFq3xcIDsKK+aBuT55w6BufFwgOwor5LmcPm1pxJN8XCA7Civom60+emjDrHxcIDsKK+mfqj53xJtpfFwgOwor6K+oPmjDuW58XCA7CivotZ0+ecOgbnxcIDsKK+Wyvz5rdcSrfFwgOwor55W5PnfHjm58XCA7CivlvYA+Z8OydXxcIDsKK+aAqz5mw6hpfFwgOwor6I2PPnLEm258XCA7Civom5Q+aHXDrXxcIDsKK+i3jj50dcOzfFwgOwor6IGSPmd1xIF8XCA7CivpuZ4+ecOhb3xcIDsKK+mAoT5xxatufFwgOwor5qWUPnhpxJN8XCA7CivnjpY+amnHlHxcIDsKK+i1rT56aMSbfFwgOwor576vPmppw6l8XCA7CivonYg+Z3XFjXxcIDsKK+iBqT5rdcOsfFwgOwor55eCPmppxIF8XCA7CivmrpI+eceUbnxcIDsKK+mAtj53xJNpfFwgOwor5a6lPnnDsnV8XCA7CivllZY+ZMOgbnxcIDsKK+eHrj54acOofFwgOwor57KyPmPDoG58XCA7Civop5A+aseQbnxcIDsKK+ayrT5zaMO5fFwgOwor5bi8Pmd1w7N8XCA7Civnhag+d8STaXxcIDsKK+iGkT5iw6xufFwgOwor6L6aPmzDrW58XCA7CivmqL0+esWrbnxcIDsKK+Wqvj5nw7J1fFwgOwor5ae5PmNow6B8XCA7Civlvoc+eMO5bnxcIDsKK+iWrj5zx5J1fFwgOwor5Z2CPmLHjm58XCA7CivlupY+cMOhb3xcIDsKK+mynz54w7pufFwgOwor6ZOnPmh1w6F8XCA7CivnhJY+bcOobnxcIDsKK+iCvT50w6BpfFwgOwor54mmPm3DoW98XCA7CivnjLc+ecOzdXxcIDsKK+WplT5qacOpfFwgOwor5ZOePm3FjXV8XCA7CivlkJI+emjDoHxcIDsKK+iwpT5zaMOsfFwgOwor6ZOhPnpow6F8XCA7CivnhJk+YsOoaXxcIDsKK+amqz5zx5RufFwgOwor5rSHPnnEq258XCA7CivppZU+dMSBb3xcIDsKK+aumj5kxIFufFwgOwor57u+PnfHjm58XCA7Civpl7E+d8OpaXxcIDsKK+WZmD5qdcSTfFwgOwor5ZSjPnrDoG98XCA7CivokbM+d8STaXxcIDsKK+ivnz5nw7J1fFwgOwor6ZWtPmzDqWl8XCA7CivnpIU+ZMWrbnxcIDsKK+a5hD5tw6lpfFwgOwor54uOPnhpw6F8XCA7Civmkrc+eGnDqXxcIDsKK+ivsD5nw6BvfFwgOwor6LG4Pnpow6x8XCA7Civotac+bseObnxcIDsKK+iIqD5ix45ufFwgOwor6JyHPnpow6l8XCA7CivnoYw+bHXDsnxcIDsKK+a7nz55w6BufFwgOwor5rS1PnjDum58XCA7Civll4Q+c2jDoHxcIDsKK+WIjT5jaMO6fFwgOwor5YWWPnnHjm58XCA7Civlt70+eMO5bnxcIDsKK+mThj5tx45vfFwgOwor6JmiPmd1w7N8XCA7Civmv6A+aMOhb3xcIDsKK+a4mj56aMeUfFwgOwor5rC1PnPEgW58XCA7CivlkbY+bsOhb3xcIDsKK+iNqj5zxatufFwgOwor5ZypPnfDqWl8XCA7Civnvrg+bMOpaXxcIDsKK+e7pj50xIFvfFwgOwor55alPmppw6h8XCA7Civpsqc+Z8eUbnxcIDsKK+eYoj5ixIFufFwgOwor5q2DPnNow6B8XCA7Civop48+Z8OydXxcIDsKK+eRgT5tw6BvfFwgOwor54+yPmjDum58XCA7Civmvrk+ZMOgbnxcIDsKK+mYlz5qdcOpfFwgOwor54yhPmx1w7N8XCA7Civpppc+a3XDrXxcIDsKK+azhT5xacO6fFwgOwor55++PmbDoW58XCA7Civmt6w+Y3XDrHxcIDsKK+eolz5iw6BpfFwgOwor6LqFPnpow7p8XCA7CivouK8+emjDrXxcIDsKK+iaqT5jaMSrfFwgOwor6aKAPmvEm258XCA7Civnlrg+ZMeObnxcIDsKK+m4tz56aMOsfFwgOwor5p+YPnpow6h8XCA7Civmnbw+emjDuXxcIDsKK+e8nz5nx45vfFwgOwor5a2iPmLEgW98XCA7CivmtK4+dMOhb3xcIDsKK+WyrD5qaceOfFwgOwor5ZisPnp1xY18XCA7CivpsrI+a8WrbnxcIDsKK+iAiz5kacOofFwgOwor6ZOKPnNow6l8XCA7Civoi5I+cseObnxcIDsKK+afnj56dcOyfFwgOwor54O3PnfDoW58XCA7Civnp6s+c2jDunxcIDsKK+mbiT56aMOsfFwgOwor55+4PmfEgW58XCA7CivnhLE+ecOgbnxcIDsKK+i1hT5nxIFpfFwgOwor5pm3Pmd1x5B8XCA7CivmpIE+Z3XHknxcIDsKK+a+jT5zaMO5fFwgOwor6IqpPnHDrW58XCA7Civlpoo+csOobnxcIDsKK+mFvT55w6BufFwgOwor6aKiPmjDoG98XCA7Civnl7E+ZsOoaXxcIDsKK+eJnT5ww6xufFwgOwor5pucPnnDoG98XCA7CivpgJE+cWnDunxcIDsKK+mlrD5jaMOsfFwgOwor5bKrPnhpw7l8XCA7CivluI8+d8OpaXxcIDsKK+WTjz5oxJtufFwgOwor5Z2oPnR1w7N8XCA7CivorqY+amnDqXxcIDsKK+eXiD5sacSTfFwgOwor6LiFPmNow6x8XCA7CivosZU+c2jHkHxcIDsKK+eWsT5ww6BvfFwgOwor56OUPnpow6l8XCA7CivmgrE+ZsSbaXxcIDsKK+aPhj5rdcOtfFwgOwor6JWoPmp1w6l8XCA7CivphZo+ZsSTbnxcIDsKK+mzlz5tw6FufFwgOwor572FPnhpw6B8XCA7Civpuac+emjDqHxcIDsKK+eViD5mw6BufFwgOwor55OSPnrDoG58XCA7CivlpKQ+ecOtbnxcIDsKK+Wblz53w6lpfFwgOwor6IyxPnpoxat8XCA7CivppK4+dGnDqHxcIDsKK+mFoT50dcOzfFwgOwor5pqMPmt1w618XCA7CivmoIA+emjEq3xcIDsKK+a/kT5sw6BpfFwgOwor5bqlPnhpxat8XCA7CivmjrQ+Z3XDs3xcIDsKK+mDlz5jaMSrfFwgOwor5Y6dPmN1w7J8XCA7CivnrLM+amnEgXxcIDsKK+eXpz5zaMSBfFwgOwor6ZOpPnNoxIF8XCA7CivnnYM+asO5bnxcIDsKK+ePjz5qdcOpfFwgOwor5rGKPmNow6B8XCA7Civmgb0+ecO5bnxcIDsKK+aBgj54w7pufFwgOwor5b+EPnNow7l8XCA7CivmsKY+aMOgaXxcIDsKK+msoz5sacOofFwgOwor6Z6jPnLDs3V8XCA7Civpop8+bcOhbnxcIDsKK+aAvD5kdcOsfFwgOwor54SQPnTEgW98XCA7Civpn6s+ecO5bnxcIDsKK+W0tD53xJNpfFwgOwor6aSNPnnDoG58XCA7CivouJ8+Y2jDrXxcIDsKK+eatD5jxatufFwgOwor6KGkPmNox458XCA7Civml4Q+bcOhb3xcIDsKK+e8pj5tw6BufFwgOwor57yXPm3DrW58XCA7Civlu6o+bMeQbnxcIDsKK+i2uD5kx5RufFwgOwor6LGJPmNox5B8XCA7Civnl78+d8SbaXxcIDsKK+edoj5zdcSrfFwgOwor54CjPnhpw6h8XCA7Civmt50+ZsOpaXxcIDsKK+aAjT56dcOyfFwgOwor6aaQPnhpxat8XCA7Civlvq0+ecOhb3xcIDsKK+Warz5odcOyfFwgOwor5pSJPmh1w7J8XCA7CivolZk+aHXDrHxcIDsKK+mCsz5ww6lpfFwgOwor6LKJPmjDoW98XCA7Civmu4E+Y2jDunxcIDsKK+m+iD5rxJtufFwgOwor57mHPnnDoW98XCA7CivnlpY+amnDqXxcIDsKK+athj54xKtufFwgOwor6LWJPmzDoGl8XCA7CivnkLA+eceObnxcIDsKK+e6vj5zaMWrfFwgOwor6L+oPmTDoGl8XCA7Civni7o+ecOtbnxcIDsKK+W4lD5ww6hpfFwgOwor5biZPnpow6x8XCA7CivlkrQ+aHXDoXxcIDsKK+iWhT5oxIFvfFwgOwor6bqIPnpox5R8XCA7CivpspE+Z3XEq3xcIDsKK+i5sD5jaMO6fFwgOwor57OMPnrDoW58XCA7CivopKs+Y2jHkHxcIDsKK+alrj5jaMeUfFwgOwor54GPPmjDoG98XCA7Civmja0+YseOaXxcIDsKK+iVpD5ydcOtfFwgOwor6JGtPmppxIF8XCA7CivokZo+csOobnxcIDsKK+iNqD54w7pufFwgOwor6YOFPnpow6x8XCA7CivplJc+ZHXHknxcIDsKK+mzgz5zxIFpfFwgOwor6ZWKPm5pw6h8XCA7Civpjo8+bGnDunxcIDsKK+i2tT5iw6BvfFwgOwor6YW5PmzDqGl8XCA7Civnrqo+ZMSBbnxcIDsKK+iatj5oxIFufFwgOwor6ZWFPm3DqWl8XCA7CivnlbI+c2jEk3xcIDsKK+ahoT5uw6FvfFwgOwor5p64PmfHknV8XCA7CivmurQ+eGnDuXxcIDsKK+a1lD54w7pufFwgOwor54uSPmbDqGl8XCA7Civni4E+eceUbnxcIDsKK+aPuD56aMSBfFwgOwor6Iy0Pmh1w618XCA7Civlgqc+YsOsbnxcIDsKK+mDpz5wx5J1fFwgOwor6L6KPmfHlG58XCA7CivpkpI+ZsOhbnxcIDsKK+m6hz5qxatufFwgOwor6YWiPnp1w7J8XCA7Civoh6w+bmnDqHxcIDsKK+ihvz5qxKtufFwgOwor55iZPnPEgW98XCA7Civmr7U+c8SBbnxcIDsKK+i9qz5yw6hufFwgOwor55CsPnfHjm58XCA7CivlrZM+anXDqXxcIDsKK+a0jD5sacOofFwgOwor6ZiaPmvDoG58XCA7Civpl7w+a8SBaXxcIDsKK+iLtz5nxIFufFwgOwor5aCePmRpw6l8XCA7CivlnYw+YsOobnxcIDsKK+WLsD54acOpfFwgOwor6ICSPmzEm2l8XCA7CivnnZo+ecOhaXxcIDsKK+aYgD55w7pufFwgOwor5qSkPmx1w7N8XCA7Civnu4A+Z8OgbnxcIDsKK+Wmlz5qw6xufFwgOwor5oKdPmt1xKt8XCA7Civlta8+Y3XDs3xcIDsKK+WYnj5sZWl8XCA7CivmsL0+dMeUbnxcIDsKK+mMvj5odcOyfFwgOwor6YWvPnpox5B8XCA7Civnrqc+cWnDqHxcIDsKK+eWoz55w7N1fFwgOwor6ZWTPmppxIF8XCA7CivplLg+Y2jDoXxcIDsKK+iDnT56aMSrfFwgOwor5qqpPmzHkG58XCA7Civmp44+Y2jDoXxcIDsKK+aesz56aMeQfFwgOwor5bC7PmvEgW98XCA7Civmsqk+aHXDrHxcIDsKK+aCgz5rx5RufFwgOwor6JWePnp1w6x8XCA7Civojb0+c3XEq3xcIDsKK+WigT5tw6BufFwgOwor55WaPmLEm258XCA7Civkv4U+cWnDunxcIDsKK+mVjz5sacO6fFwgOwor56KTPmR1w6x8XCA7CivnpLs+c2jDrHxcIDsKK+aMiD5xacOofFwgOwor5p2yPmfHjm98XCA7Civmpbg+cWnFq3xcIDsKK+ahlT5nxIFvfFwgOwor5rq3PmjDuW58XCA7Civms5Q+Z8SBbnxcIDsKK+aEpj5rdcOsfFwgOwor5bSkPnnDoW98XCA7Civoj70+c2jDunxcIDsKK+S/sz5ww6FpfFwgOwor6ZugPmNoxKt8XCA7CivotrE+eseObnxcIDsKK+e/pT56aMO5fFwgOwor562uPnNow6x8XCA7Civpop4+bmnDqHxcIDsKK+m4sT56aMSrfFwgOwor6ZS0PmvHjml8XCA7CivohKw+cMSBb3xcIDsKK+aIoT5rxIFufFwgOwor57yrPnPEgW98XCA7CivpqpY+Y8SBbnxcIDsKK+Wmqz5ndcSrfFwgOwor5raePmd1xY18XCA7CivmtIQ+aHXDrXxcIDsKK+eNrz54xatufFwgOwor54uNPnDDoW98XCA7Civltaw+d8OpaXxcIDsKK+WRlD5kxIFpfFwgOwor5aKAPmNow618XCA7CivphKI+ecSBbnxcIDsKK+mDrz50w6FufFwgOwor6byQPm7DoGl8XCA7CivosLA+bMOhbnxcIDsKK+m8uT55x45ufFwgOwor6a2RPmNoxKt8XCA7Civps5U+eHXEm3xcIDsKK+i3hj50w6FpfFwgOwor6KKiPnDDoG58XCA7Civnn6w+Y3XDs3xcIDsKK+mVnj54w61ufFwgOwor56KaPmLDqGl8XCA7CivmhI0+bceQbnxcIDsKK+atmT5zaMOofFwgOwor5pq+PnTFq258XCA7Civmv4k+c3XEq3xcIDsKK+a6sj5zxY11fFwgOwor6aOnPnPFq258XCA7Civniq0+ZseObnxcIDsKK+WWiD5qacSTfFwgOwor5o2pPmxpw6h8XCA7Civoj4A+d8eObnxcIDsKK+iNpj5sdcOyfFwgOwor5Z+ZPnjFq258XCA7CivpmZ8+emjDrHxcIDsKK+S+iT5rdcSBfFwgOwor5rCWPm7Hjml8XCA7CivpqrE+eGnDqHxcIDsKK+mznz56w7lufFwgOwor6ZyIPnDDqGl8XCA7CivooJY+aHXDsnxcIDsKK+easj5qxatufFwgOwor55iKPmjDs3V8XCA7CivpuLk+Z3XEgXxcIDsKK+mTmT5uw6FvfFwgOwor6IWpPm7Hjm58XCA7CivliJY+eXXDqHxcIDsKK+awmD5kxIFvfFwgOwor5pubPnjFq258XCA7Civmp78+aseQbnxcIDsKK+ampz5mxJtpfFwgOwor6aqYPnpow6x8XCA7CivmvbQ+emjFq3xcIDsKK+azrj5ww6BufFwgOwor5pCmPm51w7J8XCA7CivloIc+aseQbnxcIDsKK+iOsz5zaMOtfFwgOwor5aCZPnnEq258XCA7CivlnrQ+bseOb3xcIDsKK+malz53xJtpfFwgOwor5Y6jPnnHjm58XCA7Civlm58+eMOsbnxcIDsKK+S4vz5wacSbfFwgOwor6bysPnnDsnV8XCA7Civpqro+Z8OydXxcIDsKK+mNqj5tw7N1fFwgOwor6LePPmppxIF8XCA7Civot5Y+emjDrXxcIDsKK+mGqj5sw6FvfFwgOwor57OFPnLHknV8XCA7Civomos+cnXDrHxcIDsKK+iitz5qacOhfFwgOwor55mNPmLEgW58XCA7Civplac+bMOgbnxcIDsKK+mTlz5qacOhfFwgOwor6L6PPmPDsnV8XCA7CivmqaU+emjFq3xcIDsKK+ahqz5zdcWNfFwgOwor6aqdPmxpw7p8XCA7CivpqoA+dMOhaXxcIDsKK+WrmD5sw6lpfFwgOwor5oeUPmzHkG58XCA7Civmhrc+Y2jHlHxcIDsKK+eMnj5zaMOofFwgOwor5bWdPmzHknV8XCA7Civmka0+emjDrXxcIDsKK+iXvz5odcOyfFwgOwor6JKMPmxpx5R8XCA7Civln5I+bMOoaXxcIDsKK+mEnj55w61ufFwgOwor6YOcPmfDoG98XCA7CivlhIs+ZMSBbnxcIDsKK+WNoz55x5J1fFwgOwor54i7PnnDoW98XCA7CivngpQ+cXXEk3xcIDsKK+mbkj5sdcOyfFwgOwor6ZyqPnnDrW58XCA7Civns5c+cWnHlHxcIDsKK+eurD5ydcOyfFwgOwor55ekPmN1w7N8XCA7CivplbI+Y2jHjnxcIDsKK+mUnz5rxatufFwgOwor55ytPnN1xKt8XCA7Civml5I+bGnDunxcIDsKK+aXhj5ww6hpfFwgOwor5pewPmfDoG58XCA7CivmqL4+eXXDqHxcIDsKK+aemD5ydcOsfFwgOwor6ZiNPmjFq258XCA7Civlv4k+ZMSBb3xcIDsKK+W7qD54acOofFwgOwor5b2zPmNow6x8XCA7CivlsqM+Z8eSdXxcIDsKK+WXvj5zx5J1fFwgOwor5ZOaPmR1x5J8XCA7Civmjoo+cMOzdXxcIDsKK+aLtj56x45ufFwgOwor6JONPnNoxKt8XCA7Civoiqo+Y2jDrXxcIDsKK+iJuT5jx45vfFwgOwor5Z2pPmfEgW58XCA7Civpg4c+eMO6bnxcIDsKK+maiD53xJNpfFwgOwor6LCzPnnDoG58XCA7CivorqA+ecOhbnxcIDsKK+S+kT55w7J1fFwgOwor5LqNPmNow7l8XCA7CivoupA+bGnDqHxcIDsKK+i5rz5mw6FufFwgOwor6LisPnpow6x8XCA7Civns4E+c8SBbnxcIDsKK+evmj5mxJtpfFwgOwor56+MPmjDs3V8XCA7Civom7E+amnDoXxcIDsKK+ijsD5kdcWNfFwgOwor6ZWZPmx1w7N8XCA7CivplIc+dGnEm3xcIDsKK+mSvT5kw6BufFwgOwor6ZKjPmLHjm58XCA7CivnoJg+ZMO5bnxcIDsKK+eglz5jaMSTfFwgOwor54aYPmxpxat8XCA7Civog5k+enXDsnxcIDsKK+avsz5jdcOsfFwgOwor5qiXPmNoxat8XCA7Civmn7A+bsOgaXxcIDsKK+eOoj5ixKtufFwgOwor57ynPmzDqWl8XCA7Civnu5A+ZMOgaXxcIDsKK+e7gT54acOofFwgOwor5r2GPnBpxJN8XCA7CivpmIM+a8eUbnxcIDsKK+W0gz5sw6FpfFwgOwor5Zm7PnNhaXxcIDsKK+aSmT56x5RufFwgOwor6JS4PmTFjXV8XCA7Civoj6E+aMOgbnxcIDsKK+mDkz55w7lufFwgOwor6ZmnPm5pw6h8XCA7Civor5Q+bMSbaXxcIDsKK+m+oD55dcOofFwgOwor5YG+PmbDqG58XCA7CivliYA+a8eOaXxcIDsKK+WNrj56aMSrfFwgOwor6ZKhPmLDqGl8XCA7Civpq6E+a8WrbnxcIDsKK+mznD5qdcOpfFwgOwor6byNPnR1w7N8XCA7CivouYA+ZGnDqXxcIDsKK+ierT5jaMSrfFwgOwor6J2kPnFpw7p8XCA7CivonaM+ecOzdXxcIDsKK+iapz5qacOofFwgOwor6Jm6Pmh1xKt8XCA7Civopbs+cMOgbnxcIDsKK+ikmT5iw6hpfFwgOwor56qoPnjFq258XCA7CivplI4+a8SBaXxcIDsKK+mTiD5zaMOsfFwgOwor6ZKUPm3DqW58XCA7CivnoIk+aHXDsnxcIDsKK+eFuj50dcOsfFwgOwor5qCyPmvHjm98XCA7Civmn50+dHXDsnxcIDsKK+eUvj56xIFpfFwgOwor5rW8Pm3Em2l8XCA7CivllJE+enXDsnxcIDsKK+iViD54w7lufFwgOwor6I+4PnnEgW58XCA7Civln60+ZMOgaXxcIDsKK+WfvT5zw6BvfFwgOwor5Z+0Pnpow618XCA7Civlnbw+Y2jDqHxcIDsKK+WKoj5tw6BpfFwgOwor6YOPPmTDsnV8XCA7Civor5Y+Z3XDoHxcIDsKK+iggz5sdceSfFwgOwor5Y6NPnNow6h8XCA7CivprI8+amnFq3xcIDsKK+mruT54acWrfFwgOwor6bKxPmbEk2l8XCA7Civpsqk+d8eObnxcIDsKK+mykj5qacOpfFwgOwor6KeWPmp1w6l8XCA7CivosoU+eGnFq3xcIDsKK+i6nj54acOofFwgOwor6YaiPmjHjml8XCA7CivphoU+cMSTaXxcIDsKK+iJiT53xJtpfFwgOwor6IizPnpow7p8XCA7CivnrZg+a8OydXxcIDsKK+essT5nx5J1fFwgOwor57y2PmbHknV8XCA7Civon6o+aHXDrHxcIDsKK+ifij5tw6FvfFwgOwor6J6TPnHDrW58XCA7CivonL4+Z3XHknxcIDsKK+iasD55w7N1fFwgOwor6IGDPmTEgW58XCA7Civnk54+ZGnDqXxcIDsKK+mUnj5rdceOfFwgOwor6ZOfPnnEq258XCA7Civpk5U+eceSdXxcIDsKK+eegD5tw6BvfFwgOwor55y1PmNoxKt8XCA7Civmhp0+ZHXDrHxcIDsKK+eInT5qdcOpfFwgOwor54azPm3DoG58XCA7CivnhJM+aMOhbnxcIDsKK+ausz5zaMWrfFwgOwor6IWnPnNow7l8XCA7Civog40+Z3XEgXxcIDsKK+eJlj55x5J1fFwgOwor6LWGPmrDrG58XCA7CivmmLQ+bceOb3xcIDsKK+aYnT56x45ufFwgOwor54KFPmd1w6x8XCA7Civnk78+cMeSdXxcIDsKK+ahtz5qdcOpfFwgOwor5p+9Pmp1w6l8XCA7Civmn5k+eGnDoXxcIDsKK+e8kT5nxY11fFwgOwor6am6PnrFjXV8XCA7CivlvZg+emjDrHxcIDsKK+mBmD5nw7J1fFwgOwor6ZqzPmh1xKt8XCA7Civlu5E+aseQbnxcIDsKK+W6uT50dceSfFwgOwor6aaTPnPHjm58XCA7Civni4M+bmnHlHxcIDsKK+ixsz5ixKtufFwgOwor5bSePmd1xY18XCA7CivllLw+c2jDoHxcIDsKK+WTsz56aMSBfFwgOwor5pGFPmppxat8XCA7Civmj7I+c2jDqXxcIDsKK+WMjz5ww6FvfFwgOwor6JipPmbDoW58XCA7Civol4E+Z8eOb3xcIDsKK+iNrD5tx45pfFwgOwor6I2pPmrDrG58XCA7CivojJs+Z8OobnxcIDsKK+iMjD5jaMOtfFwgOwor6Im/Pm7Hjml8XCA7CivlnrI+a8eOaXxcIDsKK+WepD5kacOpfFwgOwor6YKXPmjDoW58XCA7CivpmZQ+Z8SBaXxcIDsKK+WNuj5qx5BufFwgOwor5L6UPm3Ds3V8XCA7CivliL8+Z3XDrHxcIDsKK+WYjz5qaceOfFwgOwor6byiPmbDqW58XCA7Civpq4w+YsOsbnxcIDsKK+mzmD5tx5BufFwgOwor6bK9PmRpw6l8XCA7CivpspQ+d8SbaXxcIDsKK+mykD50w6FpfFwgOwor6b6FPnDDoW98XCA7Civop68+emjDrHxcIDsKK+mFkD5nxIFufFwgOwor57W3Pnpow618XCA7Civns4c+aMOzdXxcIDsKK+iJmj5jw6FvfFwgOwor57CLPmd1x5B8XCA7Civnr7w+ZMWNdXxcIDsKK+ieqD5tx45ufFwgOwor6JuRPm3Ds3V8XCA7Civom54+a3XDsnxcIDsKK+ibsj5yw6FvfFwgOwor6Jq6PnLDoW58XCA7Civoo4k+a8OobnxcIDsKK+iivD5sdcOyfFwgOwor55iVPmppx458XCA7CivnlrM+Z8SBbnxcIDsKK+mVpD5sw6FufFwgOwor6ZWYPm3DoG58XCA7CivplYQ+ZsOoaXxcIDsKK+mTuT5sw6FvfFwgOwor6ZKGPnFpw7p8XCA7Civnvag+eceObnxcIDsKK+ejmT5nx5RufFwgOwor56GHPm7DoW98XCA7CivnoKk+ZsOoaXxcIDsKK+aCqz5xdcOofFwgOwor54KxPnTDoWl8XCA7Civngrs+bHXDsnxcIDsKK+iGpj5sw6xufFwgOwor6IaqPnpow6B8XCA7CivohJ4+Y3XHknxcIDsKK+avuT5zaMWrfFwgOwor6LWHPnFpw7p8XCA7Civovbo+ecOhb3xcIDsKK+i9tT5kacOpfFwgOwor5qqrPmNow6F8XCA7Civmpo0+eGnDqHxcIDsKK+amgD5wx5BufFwgOwor5qO8PmbDqW58XCA7CivmoJ0+Z3XEgXxcIDsKK+agsz5sx45vfFwgOwor57uyPmfHlG58XCA7Civlqrg+Y2jEq3xcIDsKK+WuhD5ndceQfFwgOwor5rykPmfEgW58XCA7Civmu6A+c2jDqHxcIDsKK+mYjD53w6lufFwgOwor5bqLPmd1x5B8XCA7Civppoc+Y2jEgXxcIDsKK+mloz5zaMOtfFwgOwor5aSCPmNox5R8XCA7Civnjaw+eGnDqHxcIDsKK+W0pj55xIFufFwgOwor5ZqGPmjEgW98XCA7CivlkLI+eceQbnxcIDsKK+eUmT5kw6BpfFwgOwor5pKWPmjDoG58XCA7Civolrk+dMOhaXxcIDsKK+iWpD54acOofFwgOwor6JCPPmTDoG58XCA7CivojrA+a8eObnxcIDsKK+iMhj5tx45vfFwgOwor5aCgPmjDsnV8XCA7Civln5g+c2jDrXxcIDsKK+Wfjz55w6FufFwgOwor6YO+PnnHjm58XCA7Civpg4Q+cXXDqHxcIDsKK+WNqT5qacOpfFwgOwor6LCuPnrDqG58XCA7CivosIc+c3XDrHxcIDsKK+WDpj5qacO5fFwgOwor5YCuPmx1x5J8XCA7CivljKY+Z3XHkHxcIDsKK+S5hz56aMOpfFwgOwor6YWePnTDoGl8XCA7CivjkIY+eceQbnxcIDsKK+OQoT5udcOyfFwgOwor45CkPnFpw7p8XCA7CivjkKw+bGnDunxcIDsKK+OQrT5sx5BufFwgOwor45CwPnjDrG58XCA7CivjkLI+ZMOgaXxcIDsKK+ORhT56dcOyfFwgOwor45GNPmzEm2l8XCA7CivjkY4+bseOb3xcIDsKK+ORjz56aMO5fFwgOwor45GYPmppw6h8XCA7CivjkZk+ZGnDqXxcIDsKK+ORmj5udcOzfFwgOwor45GjPmzDoW58XCA7Civjkak+bHXDs3xcIDsKK+ORrj5ow7pufFwgOwor45GwPmh1w6x8XCA7CivjkbE+cseOb3xcIDsKK+ORtT5ow6BufFwgOwor45G3PnTDoGl8XCA7Civjkbk+aHXDrHxcIDsKK+ORuj5qw7lufFwgOwor45G8Pmxpw7l8XCA7CivjkoA+emjHjnxcIDsKK+OShj5jaMOsfFwgOwor45KIPmjDoG58XCA7Civjko0+bMOpaXxcIDsKK+OSkT5odcOsfFwgOwor45KUPnNox5R8XCA7Civjkpc+dMOhaXxcIDsKK+OSmj53xJtufFwgOwor45KdPm1pw6h8XCA7Civjkp4+asO5bnxcIDsKK+OSoD54acOofFwgOwor45KhPnnDs3V8XCA7CivjkqQ+c2jDqHxcIDsKK+OSpj5sxJtpfFwgOwor45KpPmx1x5J8XCA7CivjkrI+Y8OhaXxcIDsKK+OStT5tw6BvfFwgOwor45K3Pmd1x458XCA7Civjkrg+c3XDrHxcIDsKK+OSuz5tw6BvfFwgOwor45K8Pm3DoW58XCA7Civjkr4+c2jDrHxcIDsKK+OTgj5rw7J1fFwgOwor45OIPmLDqGl8XCA7Civjk5M+bsOhbnxcIDsKK+OTlD54acOofFwgOwor45OXPmppw6l8XCA7Civjk5w+ecOydXxcIDsKK+OToj5sdcOyfFwgOwor45OjPnFpw6B8XCA7Civjk6Q+amnDqXxcIDsKK+OTpz55x45ufFwgOwor45OwPmh1w6B8XCA7Civjk7E+dMOzdXxcIDsKK+OTtD5qw7lufFwgOwor45O2PnFpw6h8XCA7Civjk7g+anXDqXxcIDsKK+OTuT5ydcOsfFwgOwor45O8PmNow6x8XCA7Civjk74+Y2jDrXxcIDsKK+OUgD5sw7zDqHxcIDsKK+OUgj5sw61ufFwgOwor45SDPmp1w6l8XCA7CivjlIk+emjDunxcIDsKK+OUij5kx45ufFwgOwor45SNPmR1x5J8XCA7CivjlI4+eGnDqHxcIDsKK+OUkT5jaMOsfFwgOwor45SXPmbDqGl8XCA7CivjlJg+Y2jDuXxcIDsKK+OUmj5rx5J1fFwgOwor45SiPmp1w6l8XCA7CivjlKM+bMOpaXxcIDsKK+OUpz5sacO5fFwgOwor45SoPmLDqGl8XCA7CivjlK0+Y2jDqHxcIDsKK+OUrj5udcOzfFwgOwor45SzPmd1x5B8XCA7CivjlLc+bMOydXxcIDsKK+OUuj5zaMOsfFwgOwor45S8PnPHlG58XCA7CivjlL0+ecOgb3xcIDsKK+OUvj5qacOpfFwgOwor45S/PnrDsnV8XCA7CivjlYE+cXXDqHxcIDsKK+OVgj55w61ufFwgOwor45WEPnpow6x8XCA7CivjlYU+amnHjnxcIDsKK+OViD5ow7J1fFwgOwor45WPPmNow7p8XCA7CivjlZA+eGnEm3xcIDsKK+OVkT5jaMO6fFwgOwor45WSPnfDqWl8XCA7CivjlZc+ecOydXxcIDsKK+OVmT5qw7lufFwgOwor45WcPnNox5B8XCA7CivjlZ8+a3XDrHxcIDsKK+OVoj5nw6BpfFwgOwor45WjPnnHjm58XCA7CivjlaQ+cWnDunxcIDsKK+OVpj5odcOgfFwgOwor45WoPmbDoG58XCA7Civjlao+ZMeObnxcIDsKK+OVrz5uw6hpfFwgOwor45WxPnnDs3V8XCA7CivjlbI+aHXDoXxcIDsKK+OVtT5ndcOzfFwgOwor45W2Pm5nzIB8XCA7Civjlbc+aHXDoHxcIDsKK+OVuj5ow6FvfFwgOwor45W7PnDHknV8XCA7CivjloE+bMOsbnxcIDsKK+OWgz5ox5J1fFwgOwor45aPPm7DqGl8XCA7CivjlpA+d8SbaXxcIDsKK+OWkT54acOofFwgOwor45aUPnTHlG58XCA7CivjlpY+bmnDqHxcIDsKK+OWlz55w61ufFwgOwor45ajPnTDsnV8XCA7CivjlqQ+aMOhbnxcIDsKK+OWpz53xJtufFwgOwor45apPnPHknV8XCA7Civjlqo+Z3XDs3xcIDsKK+OWrj5sw7pufFwgOwor45a3PnNow618XCA7Civjlrg+eHXDqXxcIDsKK+OWuT5mw6hufFwgOwor45a7PnLDs3V8XCA7Civjlrw+ZHXHknxcIDsKK+OWvz54acOpfFwgOwor45eDPnfEm258XCA7Civjl4Q+bcOhbnxcIDsKK+OXhz54acOhfFwgOwor45eIPm3DoG58XCA7Civjl4s+aMOzdXxcIDsKK+OXjD56aMOsfFwgOwor45eRPmLDoGl8XCA7Civjl5U+Z8OydXxcIDsKK+OXlj5kw6BufFwgOwor45eXPmLHjml8XCA7Civjl5w+eGnDuXxcIDsKK+OXpT5rdcOyfFwgOwor45emPmzDoW98XCA7Civjl6c+emjDrHxcIDsKK+OXqz5xacOofFwgOwor45ewPmNow7l8XCA7Civjl7I+aHXDsnxcIDsKK+OXtD55w6FufFwgOwor45e3PnPHjml8XCA7Civjl78+eGnDoHxcIDsKK+OYgD56dcOyfFwgOwor45iGPnTDoWl8XCA7CivjmIk+emjDrHxcIDsKK+OYjj5ox45ufFwgOwor45iQPnDDoG98XCA7CivjmJM+bMOhbnxcIDsKK+OYlD5jx45ufFwgOwor45iVPmjHjm58XCA7CivjmJY+ecOhbnxcIDsKK+OYmT55w6FufFwgOwor45iaPmjHjm58XCA7CivjmJw+Y2jHkHxcIDsKK+OYnj5odcOyfFwgOwor45ihPnhpw6F8XCA7CivjmKU+ecOzdXxcIDsKK+OYpj5xw61ufFwgOwor45ioPm7DqGl8XCA7CivjmKo+aMOgb3xcIDsKK+OYtD56dcOyfFwgOwor45i2Pmppw6l8XCA7CivjmL8+bmnDqHxcIDsKK+OZgD5sacO5fFwgOwor45mCPmR1w6x8XCA7CivjmYU+YseOb3xcIDsKK+OZhz5jaMO5fFwgOwor45mIPmjDoW58XCA7CivjmZA+ZHXHknxcIDsKK+OZkz5rdcOtfFwgOwor45mUPmjDoW58XCA7CivjmZw+Y2jDrXxcIDsKK+OZnT54acOpfFwgOwor45mePm5pw6h8XCA7CivjmaI+bcOhbnxcIDsKK+OZpD54acOgfFwgOwor45mlPmfHlG58XCA7Civjmaw+ecOtbnxcIDsKK+OZsD54acOofFwgOwor45mxPmjDoG98XCA7CivjmbM+aMeObnxcIDsKK+OZtT50w6FpfFwgOwor45m3Pnpow618XCA7Civjmbg+YsOgb3xcIDsKK+OZuj5ndcOsfFwgOwor45m8PmzEm2l8XCA7CivjmoM+ecO6bnxcIDsKK+OajD5odcOgfFwgOwor45qNPmd1w7N8XCA7Civjmo8+Z8eOb3xcIDsKK+OakD50w6BvfFwgOwor45qTPmzDoWl8XCA7CivjmpQ+bmnDqHxcIDsKK+Oalj5nx45vfFwgOwor45qXPnFpw6l8XCA7Civjmpg+YsOgbnxcIDsKK+OanT5rdcOtfFwgOwor45qnPnnHjm58XCA7Civjmqk+cseObnxcIDsKK+Oaqj5ow6BvfFwgOwor45qrPnNow6B8XCA7Civjmq0+ecOzdXxcIDsKK+Oarz54w61ufFwgOwor45q5Pm3Hjm98XCA7Civjmro+ecO5bnxcIDsKK+Oavz5ww6FvfFwgOwor45uCPm51x5J8XCA7Civjm4M+amnDqXxcIDsKK+Obhj5kdceSfFwgOwor45uKPmR1x5J8XCA7Civjm40+cWnDqHxcIDsKK+ObkD5zx5J1fFwgOwor45uRPmPDoG58XCA7Civjm5I+ZMOydXxcIDsKK+Oblz56dcOyfFwgOwor45uZPnFpw6h8XCA7Civjm5s+eMOsbnxcIDsKK+ObnD55w7N1fFwgOwor45udPmLDqGl8XCA7Civjm6Y+bMeObnxcIDsKK+Obpz5tx45ufFwgOwor45uqPnnDoG58XCA7Civjm64+c8eOb3xcIDsKK+ObsT5ydcOsfFwgOwor45uzPmNow6B8XCA7Civjm7Q+bseOb3xcIDsKK+ObuD5zaMO5fFwgOwor45u7Pmt1x5B8XCA7Civjm7w+c2jDoHxcIDsKK+Obvz56aMOsfFwgOwor45yEPnjDum58XCA7CivjnIc+aHXDrHxcIDsKK+OcjD5nw7J1fFwgOwor45yPPnnDum58XCA7CivjnJA+c2jDuXxcIDsKK+Oclj5jw6FvfFwgOwor45yXPmPHjm58XCA7CivjnJs+bsOobnxcIDsKK+Ocoz5yw6FufFwgOwor45ylPm3DoWl8XCA7CivjnKY+aMOgbnxcIDsKK+Ocpz55dcOofFwgOwor45yuPmzDoG58XCA7CivjnLA+eXXDqHxcIDsKK+Octj53x45ufFwgOwor45y4Pm5pw6h8XCA7CivjnLo+esOgbnxcIDsKK+OcvD56aMOtfFwgOwor45y+PmjDoWl8XCA7CivjnYA+aMOgb3xcIDsKK+OdgT54w7pufFwgOwor452CPnpow6x8XCA7CivjnYM+ZsOgbnxcIDsKK+OdhT5nw7J1fFwgOwor452JPnpow7l8XCA7CivjnYw+amnDqXxcIDsKK+OdjT54acSbfFwgOwor452PPmppw6h8XCA7CivjnZQ+ecOgb3xcIDsKK+OdmT55w61ufFwgOwor452dPmzDrW58XCA7CivjnZ8+bcOhb3xcIDsKK+OdoT56dcOsfFwgOwor452kPmfDsnV8XCA7CivjnaY+asO5bnxcIDsKK+Odpz53xJtufFwgOwor452uPmN1w6x8XCA7CivjnbI+cceQbnxcIDsKK+OdtD53w6FufFwgOwor4525Pm7Ds3V8XCA7Civjnbs+aseQbnxcIDsKK+Odvj56dceSfFwgOwor456BPnnDoG98XCA7CivjnoI+dHXHkHxcIDsKK+OehT5ndceSfFwgOwor456HPnfEm2l8XCA7Civjnow+ecO5bnxcIDsKK+Oejz56aMOpfFwgOwor456RPnfEm2l8XCA7CivjnpU+eGnDqHxcIDsKK+Oelz5xacO6fFwgOwor456YPnTDum58XCA7CivjnqA+bMOhb3xcIDsKK+OepD55w61ufFwgOwor456lPmPDqW58XCA7Civjnqc+aHXDrHxcIDsKK+OeqD56x45pfFwgOwor456pPmzDoW58XCA7Civjnqo+bsOhb3xcIDsKK+OerD5xw6xufFwgOwor456tPmTDoGl8XCA7Civjnq8+amnDqXxcIDsKK+Oesz5kx5J1fFwgOwor4560PmNow618XCA7CivjnrY+bceQbnxcIDsKK+OeuD5zdcOsfFwgOwor4567PmjDoG98XCA7Civjnr0+eHXDqHxcIDsKK+Oevz5jaMOsfFwgOwor45+CPmNox5B8XCA7Civjn4Y+aHXDoXxcIDsKK+Ofhz5jdcOzfFwgOwor45+IPnFpw7p8XCA7Civjn4k+bMOhb3xcIDsKK+Ofiz5kdcOsfFwgOwor45+OPnR1x5J8XCA7Civjn48+aMOhbnxcIDsKK+OflD5ow6FufFwgOwor45+ZPmzHjm98XCA7Civjn5s+esOgbnxcIDsKK+OfnT5ww6lpfFwgOwor45+mPnnDuW58XCA7Civjn6k+bcOtbnxcIDsKK+Ofqj53xJtpfFwgOwor45+sPnNox5R8XCA7Civjn60+bcOtbnxcIDsKK+OfsT55x45vfFwgOwor45+yPmp1w6l8XCA7Civjn7k+bMOhb3xcIDsKK+Ofuj5sw7N1fFwgOwor46CAPmTHjm98XCA7CivjoIc+amnDuXxcIDsKK+OgiD5yw7lufFwgOwor46CPPmh1w6F8XCA7CivjoJE+enXDrHxcIDsKK+OglD5iw6BpfFwgOwor46CVPnfEm2l8XCA7CivjoJk+aMOhb3xcIDsKK+Ogmj5kdcOsfFwgOwor46CiPmh1w6B8XCA7CivjoKM+bMOgaXxcIDsKK+OgtD5yw6hufFwgOwor46C2PmbDoW58XCA7CivjoLk+amnDqHxcIDsKK+OhgT5rx45pfFwgOwor46GEPnPHlG58XCA7CivjoYU+bnXHknxcIDsKK+OhiD5tw6lufFwgOwor46GKPnFpw6B8XCA7CivjoYw+bcOgb3xcIDsKK+Ohjz50w7N1fFwgOwor46GcPnh1xJt8XCA7CivjoZ4+bMSbaXxcIDsKK+OhoT5jaMO6fFwgOwor46GiPm3DoG58XCA7CivjoaU+eceQbnxcIDsKK+Ohqj5uacOpfFwgOwor46GxPmppx5R8XCA7Civjobc+YsSbbnxcIDsKK+OhuD56aMeOfFwgOwor46G6PmTDoG58XCA7Civjob8+Y2jDrHxcIDsKK+OigT5jaMeQfFwgOwor46KCPnnHjm58XCA7CivjooQ+ZMOydXxcIDsKK+OiiD50dcOtfFwgOwor46KJPmNow6F8XCA7Civjoos+Y2jHkHxcIDsKK+Oijj5jaMOgfFwgOwor46KPPnTDs3V8XCA7CivjopE+dHXDrXxcIDsKK+Oikj5jaMOhfFwgOwor46KTPnnHjm98XCA7Civjopk+ccOtbnxcIDsKK+Oimz55w6BufFwgOwor46KoPmjDoG58XCA7Civjoq4+Y2jDrXxcIDsKK+Oirz5tw61ufFwgOwor46KyPnjDuW58XCA7CivjorU+c2jDqHxcIDsKK+Oiuz53xJtpfFwgOwor46K8PmJpw6h8XCA7Civjo4E+YsOoaXxcIDsKK+OjhT56w6BufFwgOwor46ONPnTDoWl8XCA7Civjo5M+Y8OgbnxcIDsKK+Ojnj5kdcOzfFwgOwor46OlPnpow6x8XCA7Civjo6c+ecOsbnxcIDsKK+Ojrz54acOofFwgOwor46OwPnhpw6h8XCA7Civjo7I+d8OpaXxcIDsKK+OjvD5yxJtufFwgOwor46O9PnNow7l8XCA7Civjo74+Y2jDoHxcIDsKK+OkhD5ww6hpfFwgOwor46SGPmbDoG58XCA7CivjpIg+ccOsbnxcIDsKK+OkiT5xacOgfFwgOwor46SRPnnDsnV8XCA7CivjpJM+YsOobnxcIDsKK+OklT5jaMO5fFwgOwor46SWPnpow7l8XCA7CivjpJg+Y2jDuXxcIDsKK+Okmz5uw61ufFwgOwor46ScPmp1w6l8XCA7CivjpJ4+Y2jDoHxcIDsKK+OkoD5sacOofFwgOwor46SlPmjDoGl8XCA7CivjpKc+aMOzdXxcIDsKK+OkrD5odcOsfFwgOwor46SwPnrHjm58XCA7CivjpLI+cWnDqHxcIDsKK+Oksz5ixJtpfFwgOwor46S5PnFpw7p8XCA7CivjpL4+c8OgbnxcIDsKK+Olgz5tw6hufFwgOwor46WHPmPDoW58XCA7CivjpYg+ZGnDqXxcIDsKK+OliT5jaMOofFwgOwor46WOPmzDoWl8XCA7CivjpZI+Y8eOaXxcIDsKK+OlnD53w6hpfFwgOwor46WePmN1w6x8XCA7CivjpZ8+eGnDqXxcIDsKK+Oloj5xacO6fFwgOwor46WjPmh1w6x8XCA7CivjpaY+cWnDqHxcIDsKK+OlqT5kdceSfFwgOwor46WqPmzDs3V8XCA7Civjpa0+dMOgaXxcIDsKK+Olrz55x5BufFwgOwor46WxPmbEm2l8XCA7CivjpbU+aMO5bnxcIDsKK+OluD5tx5BufFwgOwor46W5PmbEm258XCA7Civjpbw+eceQbnxcIDsKK+Omij5odcOhfFwgOwor46aMPnR1w6x8XCA7Civjpo4+aHXDoHxcIDsKK+Omjz5zx5RufFwgOwor46aUPnnDoG58XCA7CivjppY+bcOobnxcIDsKK+OmnD5odcOyfFwgOwor46afPmjDoGl8XCA7CivjpqI+amnDqXxcIDsKK+Omoz53w6hpfFwgOwor46anPmPHjm58XCA7Civjpqg+bMOhbnxcIDsKK+OmqT55x5BufFwgOwor46aqPnhpw6h8XCA7Civjpqw+bHXHknxcIDsKK+Omrz5odcOyfFwgOwor46a2PmRpw6l8XCA7Civjprk+w6BuZ3xcIDsKK+Onhz5tx45vfFwgOwor46eIPnnHkG58XCA7Civjp4k+Z8OgaXxcIDsKK+OnjD5tw6BvfFwgOwor46eRPnfDqWl8XCA7Civjp5I+eHXDqXxcIDsKK+OnlT5qacO5fFwgOwor46eYPmN1w6x8XCA7Civjp5w+bGnDqHxcIDsKK+OnoT5ow6BpfFwgOwor46ejPnpow7l8XCA7Civjp6g+cWnDunxcIDsKK+OnqT5ww6hpfFwgOwor46eqPmd1x5B8XCA7Civjp68+bMeOb3xcIDsKK+Onsj5zx45ufFwgOwor46e1PnDDs3V8XCA7Civjp7c+ZHXDsnxcIDsKK+Onuz56aMeQfFwgOwor46iBPnpow618XCA7CivjqIU+bsOoaXxcIDsKK+Oohj5sx5BufFwgOwor46iJPm3HkG58XCA7CivjqIo+d8SbaXxcIDsKK+Ooiz5jaMSbfFwgOwor46iMPmfDsnV8XCA7CivjqJI+a3XDrXxcIDsKK+Ookz5sw6FvfFwgOwor46iUPmjDoG58XCA7CivjqJY+emjDrHxcIDsKK+Oolz5qacOpfFwgOwor46iZPnhpw6l8XCA7CivjqJo+eMO6bnxcIDsKK+OonT54acOofFwgOwor46ifPmjDoWl8XCA7CivjqKE+aMO6bnxcIDsKK+OopD5odcOsfFwgOwor46inPmLDqG58XCA7CivjqKg+bGnDuXxcIDsKK+OoqT5qacOpfFwgOwor46irPmzHjm58XCA7CivjqK8+aHXDsnxcIDsKK+OosT55w6FvfFwgOwor46izPmd1x5B8XCA7CivjqLc+asOsbnxcIDsKK+OouT5odcOsfFwgOwor46i6Pm3DqW58XCA7CivjqLs+Y8OhbnxcIDsKK+OovD5sw7zDqHxcIDsKK+OpgT5xdcOofFwgOwor46mGPmppw7l8XCA7CivjqYc+aHXDoHxcIDsKK+OpiT54acOpfFwgOwor46mMPmbDqGl8XCA7CivjqZI+ccOtbnxcIDsKK+Opkz5odceQfFwgOwor46mUPnTDum58XCA7CivjqZw+bMeObnxcIDsKK+OpnT5ow6FvfFwgOwor46mhPmx1x5J8XCA7CivjqaY+eGnDqXxcIDsKK+OpqD5odcOsfFwgOwor46mqPnhpw6l8XCA7Civjqa8+YseObnxcIDsKK+OpsT5qdcOpfFwgOwor46myPmvHlG58XCA7CivjqbY+bmnDqHxcIDsKK+OpuD5kacOpfFwgOwor46m5PmRpw6l8XCA7Civjqbs+Z3XHkHxcIDsKK+OqgT5xw61ufFwgOwor46qIPmd1w6x8XCA7Civjqoo+ccO6bnxcIDsKK+Oqiz5ow6BufFwgOwor46qUPnPDoG58XCA7Civjqpc+dMeSdXxcIDsKK+Oqmj5zw6BufFwgOwor46qePm3DoG98XCA7CivjqqY+ecOsbnxcIDsKK+Oqqz5ydcOsfFwgOwor46qvPmNow6F8XCA7CivjqrQ+amnDoXxcIDsKK+OqtT5iw6BufFwgOwor46q3PmTHknV8XCA7Civjqrk+bMeSdXxcIDsKK+OqvT5zdceSfFwgOwor46q/Pnpow6l8XCA7Civjq4I+emjDuXxcIDsKK+Orgz55x45ufFwgOwor46uFPmNow6F8XCA7Civjq40+ecOzdXxcIDsKK+Orjj5nx5RufFwgOwor46uPPnnHjm98XCA7Civjq5A+eceOb3xcIDsKK+OrkT5zaMOtfFwgOwor46uUPmfDqG58XCA7Civjq5c+aMOydXxcIDsKK+OrnD5kw6BufFwgOwor46ufPnnDoW58XCA7Civjq6c+YsOgb3xcIDsKK+Orrz5tw6BvfFwgOwor46uxPm7Hjm58XCA7Civjq7I+cMOoaXxcIDsKK+Ortj5jx5J1fFwgOwor46u4PnFpw6h8XCA7Civjq7k+ZMOgaXxcIDsKK+Oruz5rw7lufFwgOwor46u8PmRpw6l8XCA7CivjrIM+dMOhaXxcIDsKK+OshT5tw6BufFwgOwor46yLPmjDs3V8XCA7CivjrJA+aseQbnxcIDsKK+OslD5ow6FvfFwgOwor46yZPnfEm2l8XCA7CivjrJo+Y2jDqHxcIDsKK+OsnD5qw6xufFwgOwor46yjPmR1w6x8XCA7CivjrKY+eXXDqHxcIDsKK+OsqT5odcOsfFwgOwor46yqPmRpw6l8XCA7CivjrKs+ecOgbnxcIDsKK+Osrz5sacOofFwgOwor46y2PmjDoG98XCA7CivjrL8+ZMO5bnxcIDsKK+OthD54w6xufFwgOwor462IPmp1w6l8XCA7CivjrYk+aHXDoXxcIDsKK+OtjD5tw7N1fFwgOwor462PPnfEm2l8XCA7CivjrZE+bcOoaXxcIDsKK+OtmT5zaMOpfFwgOwor462bPnDDoGl8XCA7CivjrZ0+cWnDunxcIDsKK+Otnj5sacOofFwgOwor462oPnhpw6l8XCA7Civjrak+bMOoaXxcIDsKK+OtrT5mw6hpfFwgOwor462uPnp1w7J8XCA7Civjra8+ZGnDqXxcIDsKK+Otuj55x45ufFwgOwor462+Pmp1w6l8XCA7Civjrb8+w6FuZ3xcIDsKK+OugD5ow6FufFwgOwor466BPnnDoW98XCA7CivjroM+cnXDrXxcIDsKK+Ouhj5uacOofFwgOwor466IPm7DoGl8XCA7Civjros+eceSdXxcIDsKK+Oujz5uw6BpfFwgOwor466TPmfDqG58XCA7CivjrpY+amnDoXxcIDsKK+Oulz5xw61ufFwgOwor466YPm3DoG98XCA7Civjrps+Y2jDrXxcIDsKK+Ounj5qacOpfFwgOwor466iPmjDs3V8XCA7CivjrqM+Z8OgaXxcIDsKK+OupT5mw6hufFwgOwor466uPmppw6l8XCA7Civjrq8+aHXDoXxcIDsKK+Outj5zaMOsfFwgOwor4665Pnpox5B8XCA7Civjrro+YsSbbnxcIDsKK+Ovgj5kw6BpfFwgOwor46+JPmh1w7J8XCA7Civjr4o+aMOpbnxcIDsKK+Ovjj5uw6hufFwgOwor46+UPmN1w6x8XCA7Civjr5c+cseObnxcIDsKK+OvmT5jaMOofFwgOwor46+cPmN1w6x8XCA7Civjr6E+cMOgb3xcIDsKK+OvpT5jw6FvfFwgOwor46+uPnNox5R8XCA7Civjr7A+emjDqXxcIDsKK+Ovsj5qw6xufFwgOwor46+4PmrHkG58XCA7Civjr7s+Z8eUbnxcIDsKK+Ovvz5sacOofFwgOwor47CBPmx1x5J8XCA7CivjsIY+YsOoaXxcIDsKK+Owij54w7pufFwgOwor47CLPnDDrW58XCA7CivjsIw+cXXDqHxcIDsKK+Owjj56dcOsfFwgOwor47CQPmp1w6l8XCA7CivjsJI+c2jDqXxcIDsKK+OwlD54acOofFwgOwor47CWPmzHjm58XCA7CivjsJk+bnXDs3xcIDsKK+Owmz55dcOofFwgOwor47ChPnhpw6h8XCA7CivjsKU+aHXDrHxcIDsKK+OwrD54w7pufFwgOwor47CvPmvDsnV8XCA7CivjsLA+cWnDqHxcIDsKK+OwsT5zaMOgfFwgOwor47C2PnnHknV8XCA7CivjsLk+asOsbnxcIDsKK+Owuj54acOhfFwgOwor47C8PnFpw6h8XCA7CivjsYA+Y2jHkHxcIDsKK+OxgT5zaMOsfFwgOwor47GDPnnHkG58XCA7CivjsYg+asOsbnxcIDsKK+Oxiz5xdcOofFwgOwor47GMPmNow6h8XCA7CivjsZY+Y3XDrHxcIDsKK+OxmT54aceUfFwgOwor47GaPmPDoW58XCA7CivjsZw+emjDoXxcIDsKK+Oxoz50dceQfFwgOwor47GqPm3DqG58XCA7Civjsas+bMOgbnxcIDsKK+OxrD53xJtpfFwgOwor47GwPnrHjml8XCA7CivjsbE+aHXDrHxcIDsKK+OxtT5iw6hufFwgOwor47G7Pmx1x5J8XCA7Civjsb0+ZMOgbnxcIDsKK+Oxvz5xdcOofFwgOwor47KDPmppw7l8XCA7CivjsoQ+a8OydXxcIDsKK+OyiT5rw6BpfFwgOwor47KKPnJ1w6x8XCA7Civjso4+bMOzdXxcIDsKK+Oyjz5ix45vfFwgOwor47KSPmLDoG98XCA7CivjspU+bMOoaXxcIDsKK+Oymz56aMeQfFwgOwor47KcPnTDoW58XCA7CivjsqA+bcOhb3xcIDsKK+OyoT5uw6BpfFwgOwor47KmPmjDoG58XCA7Civjsqc+esOgb3xcIDsKK+OyrT50x45ufFwgOwor47KvPnLDoW58XCA7CivjsrE+bGnDqHxcIDsKK+Oysj5kacOpfFwgOwor47KzPmRpw6l8XCA7Civjsrc+ZMOgbnxcIDsKK+OyuT5ndceQfFwgOwor47OAPmd1w7J8XCA7Civjs4I+ecOhbnxcIDsKK+Ozgz5jdcOsfFwgOwor47OGPnNox5R8XCA7Civjs4g+cMOoaXxcIDsKK+Ozjz5jaMeQfFwgOwor47OUPmR1w6x8XCA7Civjs5U+bMOhbnxcIDsKK+Ozpj54acOofFwgOwor47OqPnDDoG58XCA7Civjs7Y+Z8OydXxcIDsKK+Oztz53xJtufFwgOwor47O6PnnDs3V8XCA7Civjs78+eGnDqHxcIDsKK+O0gD5mw6BufFwgOwor47SDPmzDqGl8XCA7CivjtIY+asOsbnxcIDsKK+O0hz5zaMOofFwgOwor47SIPnnDrG58XCA7CivjtJM+eseOaXxcIDsKK+O0lj5sdcOyfFwgOwor47SYPm3DoG98XCA7CivjtJk+emjDoXxcIDsKK+O0mj5zdcOsfFwgOwor47SbPnpow6x8XCA7CivjtKo+bmnDqHxcIDsKK+O0qz5qw7lufFwgOwor47SsPnhpw6h8XCA7CivjtK0+eceOb3xcIDsKK+O0rj54acOofFwgOwor47S2PnF1w6h8XCA7CivjtL0+eGnDqHxcIDsKK+O1gz5jaMOofFwgOwor47WEPmjDoG58XCA7CivjtYU+ZMOgbnxcIDsKK+O1hj5ow6BvfFwgOwor47WNPm3DqG58XCA7CivjtY4+aMeObnxcIDsKK+O1jz5jdceQfFwgOwor47WQPmp1w6l8XCA7CivjtZI+ZsOoaXxcIDsKK+O1kz5zaMOtfFwgOwor47WUPmNoxJt8XCA7CivjtZg+bcOgbnxcIDsKK+O1oT5iw6FvfFwgOwor47WiPmzDqWl8XCA7CivjtaY+c3XDrXxcIDsKK+O1rT56aMeUfFwgOwor47W1PnrDsnV8XCA7Civjtbg+ecOgb3xcIDsKK+O1uj5ww6FpfFwgOwor47W7PnPDsnV8XCA7Civjtb0+ZHXDrHxcIDsKK+O2gT5ndcOzfFwgOwor47aEPnnDoW58XCA7CivjtoU+eHXDqXxcIDsKK+O2hj5jaMO6fFwgOwor47aUPmLDqGl8XCA7CivjtpY+c2jDuXxcIDsKK+O2lz5mw6BufFwgOwor47afPmzEm2l8XCA7CivjtqE+ZMOgaXxcIDsKK+O2pj5qw6xufFwgOwor47anPm7DqG58XCA7Civjtqw+bcOpaXxcIDsKK+O2rT5qacO5fFwgOwor47avPmxpw7l8XCA7CivjtrA+aMOhbnxcIDsKK+O2sz5qw6xufFwgOwor47a0PmNox5B8XCA7CivjtrU+csOobnxcIDsKK+O3gj5zaMO5fFwgOwor47eDPmN1x5B8XCA7Civjt4Q+aHXDrHxcIDsKK+O3hj5kw7J1fFwgOwor47eJPnfDqGl8XCA7Civjt4o+ZsOpbnxcIDsKK+O3iz50w6FufFwgOwor47eNPmzDum58XCA7Civjt5A+aHXHkHxcIDsKK+O3lD55w6BufFwgOwor47eVPnFpw7p8XCA7Civjt5g+dMOhaXxcIDsKK+O3nz50dcOsfFwgOwor47egPmzDrW58XCA7Civjt6I+emjHjnxcIDsKK+O3qj5jdcOsfFwgOwor47ezPnnDoG58XCA7Civjt7Y+YsOoaXxcIDsKK+O3uD5kacOpfFwgOwor47e8PnnDoG58XCA7Civjt74+anXDqXxcIDsKK+O4gD50w6FpfFwgOwor47iBPmjHjm58XCA7CivjuIU+amnDqXxcIDsKK+O4iT54acOofFwgOwor47iLPmbDoW58XCA7CivjuIw+aHXDsnxcIDsKK+O4jj5uacOofFwgOwor47iQPnLDoW58XCA7CivjuJI+ecOtbnxcIDsKK+O4lT5qdcOpfFwgOwor47iYPnfDoG58XCA7CivjuJ0+a8eObnxcIDsKK+O4nj5ix45ufFwgOwor47iiPmLDqGl8XCA7CivjuKc+a8OobnxcIDsKK+O4rD5iw6hpfFwgOwor47iuPmbDqW58XCA7CivjuLA+dHXDs3xcIDsKK+O4sT50dcOzfFwgOwor47iyPnp1w7N8XCA7CivjuLU+Z3XHkHxcIDsKK+O4tz5zaMOsfFwgOwor47i4PmjHknV8XCA7CivjuLk+bGnDqHxcIDsKK+O4vT5iw6hpfFwgOwor47i+PnLDqG58XCA7CivjuYo+eXXDqHxcIDsKK+O5jj5sw6lpfFwgOwor47mPPmrHkG58XCA7CivjuZc+dMOhb3xcIDsKK+O5mz5yw6FvfFwgOwor47mcPnnDrW58XCA7CivjuZ0+c2jDrHxcIDsKK+O5nj55w61ufFwgOwor47mfPmp1w6l8XCA7CivjuaA+dMO6bnxcIDsKK+O5pD5xacOofFwgOwor47mlPnpow7l8XCA7Civjuag+ecOydXxcIDsKK+O5rD5zaMeQfFwgOwor47m3PnNox5B8XCA7Civjubw+Y2jHlHxcIDsKK+O6gD5uw6FvfFwgOwor47qBPm7Hjm98XCA7CivjuoI+Z8eObnxcIDsKK+O6gz5nx5J1fFwgOwor47qFPmjDs3V8XCA7Civjuo8+bMOzdXxcIDsKK+O6kT5jw6FufFwgOwor47qUPmjDoGl8XCA7CivjupU+ZsOhbnxcIDsKK+O6lj5ox45ufFwgOwor47qXPmTDoG58XCA7Civjups+emjDuXxcIDsKK+O6nD5ix45ufFwgOwor47qgPnnDsnV8XCA7Civjuqk+amnDuXxcIDsKK+O6qz5xacO6fFwgOwor47qyPm5px5R8XCA7CivjurM+bcOpaXxcIDsKK+O6tT5qacO6fFwgOwor47q6Pm3DoG98XCA7Civju4A+ecOzdXxcIDsKK+O7hD5ix45vfFwgOwor47uFPmh1w6x8XCA7Civju5I+asO5bnxcIDsKK+O7lD5kdceSfFwgOwor47uVPmp1w6l8XCA7Civju5Y+ZMOgaXxcIDsKK+O7lz5iw6hpfFwgOwor47ufPnN1w618XCA7Civju6E+ZGnDqXxcIDsKK+O7pz5kdcOyfFwgOwor47uqPnN1w6x8XCA7Civju64+Y8OgbnxcIDsKK+O7uD5jw6lufFwgOwor47u9PnN1w6x8XCA7Civju78+c2jHlHxcIDsKK+O8iD5sdcOzfFwgOwor47yJPnnDrG58XCA7CivjvIo+dMO6bnxcIDsKK+O8jT5sxJtpfFwgOwor47yOPmLDqGl8XCA7CivjvI8+bsSbaXxcIDsKK+O8kj5xaceUfFwgOwor47ycPsOgbmd8XCA7CivjvJ0+ZsOgbnxcIDsKK+O8nz5iw6FpfFwgOwor47ygPnR1w7N8XCA7CivjvKM+YseOaXxcIDsKK+O8pT5jaMO6fFwgOwor47yoPmjDoW58XCA7CivjvKo+amnDoXxcIDsKK+O8rj5tw6FpfFwgOwor47yyPmxpw6h8XCA7CivjvYk+aMeObnxcIDsKK+O9ij54acOofFwgOwor472LPmx1w7N8XCA7CivjvYw+bGnDuXxcIDsKK+O9jj5kx45ufFwgOwor472RPnTDoW58XCA7CivjvZU+ecOzdXxcIDsKK+O9lj5uw6FufFwgOwor472ZPmrDuW58XCA7CivjvZo+Y2jDrHxcIDsKK+O9mz5rw7J1fFwgOwor472cPnfHjm58XCA7CivjvZ4+bGnDunxcIDsKK+O9nz5sacOofFwgOwor472gPnhpw6F8XCA7CivjvaU+csOzdXxcIDsKK+O9pj54w7pufFwgOwor472oPmN1w7N8XCA7Civjvak+Y8OgbnxcIDsKK+O9sD5zaMO5fFwgOwor472zPmjDoG58XCA7Civjvbk+ZsOgbnxcIDsKK+O+gD5xacOofFwgOwor476BPnNow7l8XCA7CivjvoM+dHXDs3xcIDsKK+O+hj5yw6FufFwgOwor476LPnhpw7l8XCA7Civjvo0+bsOhaXxcIDsKK+O+jz5qacOofFwgOwor476ZPnnHkG58XCA7Civjvps+cceQbnxcIDsKK+O+nD5xacOofFwgOwor476dPmNow6h8XCA7Civjvp4+eceSdXxcIDsKK+O+oT5xdcOofFwgOwor476iPmzDoGl8XCA7Civjvq8+dHXDrXxcIDsKK+O+sT5iw6hpfFwgOwor4764PmfHjm98XCA7Civjvrs+emjDuXxcIDsKK+O+vD50dceQfFwgOwor4769PnR1w618XCA7Civjv4M+ZMOgaXxcIDsKK+O/iT50dcOtfFwgOwor47+KPmPHjm58XCA7Civjv4s+c8Ogb3xcIDsKK+O/jT5qacOofFwgOwor47+OPmbDqG58XCA7Civjv48+ccO6bnxcIDsKK+O/kT55w6BvfFwgOwor47+SPmTHjm98XCA7Civjv5M+amnDoXxcIDsKK+O/lD5sxJtpfFwgOwor47+VPnnDoW58XCA7Civjv5c+dHXDrXxcIDsKK+O/mj5sdcOyfFwgOwor47+cPmJpxJt8XCA7Civjv54+bcOgb3xcIDsKK+O/nz5iw6FpfFwgOwor47+iPnnDoG98XCA7Civjv60+Y2jDqHxcIDsKK+O/sT54dcOpfFwgOwor47+1PnLHjm58XCA7Civjv7c+esOgb3xcIDsKK+O/uD53x45ufFwgOwor47+6PmLDoW98XCA7Civjv7w+ecOhbnxcIDsKK+O/vj56aMO5fFwgOwor5ICAPmbDoW58XCA7CivkgIE+ecOydXxcIDsKK+SAgz50dcOtfFwgOwor5ICFPnNow6h8XCA7CivkgIY+asOsbnxcIDsKK+SAiz55w6FufFwgOwor5ICNPmvDoG58XCA7CivkgJA+c8eObnxcIDsKK+SAlD5uacO6fFwgOwor5ICXPmp1w6l8XCA7CivkgJo+w6FuZ3xcIDsKK+SAmz5tw6hpfFwgOwor5ICfPmbDoW58XCA7CivkgKQ+bcOgb3xcIDsKK+SAqT5sdcOyfFwgOwor5ICrPmppw6F8XCA7CivkgLc+amnDqXxcIDsKK+SAuT5qacOhfFwgOwor5IC7PnDDrG58XCA7CivkgLw+csOobnxcIDsKK+SAvT55w6FufFwgOwor5IGFPmLDqGl8XCA7CivkgYs+c2jDqXxcIDsKK+SBjT5qacOgfFwgOwor5IGPPnnHjm98XCA7CivkgZM+amnDqHxcIDsKK+SBlD5ow6BufFwgOwor5IGVPm3DrW58XCA7CivkgZc+a8eOaXxcIDsKK+SBmD55x45vfFwgOwor5IGZPnnHjm58XCA7CivkgZo+c8eUbnxcIDsKK+SBmz5ndceQfFwgOwor5IGfPmNow6F8XCA7CivkgaQ+Y2jDqHxcIDsKK+SBqD5odcOyfFwgOwor5IGqPm7Hjm58XCA7Civkga8+c2jDqHxcIDsKK+SBsj5tw6FpfFwgOwor5IG3Pmp1w6l8XCA7Civkgbo+c2jDrHxcIDsKK+SBvT5sacOofFwgOwor5IG+Pm1pw6h8XCA7CivkgoQ+aHXDsnxcIDsKK+SCiT5ow7N1fFwgOwor5IKSPmppw6l8XCA7CivkgpU+aHXDrHxcIDsKK+SClj5zaMOtfFwgOwor5IKaPnnDoW98XCA7Civkgp0+amnDqXxcIDsKK+SCnj56aMOofFwgOwor5IKgPnNow6l8XCA7CivkgqU+bcOtbnxcIDsKK+SCqT55w6BufFwgOwor5IKuPmzDvMOofFwgOwor5IKxPmN1w6x8XCA7CivkgrM+Y3XHknxcIDsKK+SCtD55w6FufFwgOwor5IK2Pmppw6l8XCA7Civkgrg+Z3XDs3xcIDsKK+SCuT5zdceSfFwgOwor5IK6PnfHjm58XCA7Civkgrw+bmnDqHxcIDsKK+SCvj5sx45pfFwgOwor5IOAPmN1w6x8XCA7Civkg4I+Z8eUbnxcIDsKK+SDiT5tw61ufFwgOwor5IORPnDDoW58XCA7Civkg5M+Z8OydXxcIDsKK+SDlT5sw6FvfFwgOwor5IOePnNow7p8XCA7Civkg6E+Y8OpbnxcIDsKK+SDoz5odceQfFwgOwor5IOpPm7DoW98XCA7Civkg6o+dMOhbnxcIDsKK+SDqz5kx45ufFwgOwor5IOsPnfEm2l8XCA7Civkg60+Z8eObnxcIDsKK+SDsj5ww6FufFwgOwor5IO5PmzDoG58XCA7CivkhIA+aHXDsnxcIDsKK+SEgj5sacO5fFwgOwor5ISGPmh1w7N8XCA7CivkhIg+ZMOydXxcIDsKK+SEiz55x45ufFwgOwor5ISRPmh1w7N8XCA7CivkhJI+bmnDqHxcIDsKK+SElT5zaMOofFwgOwor5ISaPmPDoW98XCA7CivkhJs+bMOzdXxcIDsKK+SEnz5jdcOsfFwgOwor5ISkPmzDoGl8XCA7CivkhKk+bsOhb3xcIDsKK+SEtz5kw6BufFwgOwor5IS6Pnpow6x8XCA7CivkhL4+csOydXxcIDsKK+SFgD5sacOofFwgOwor5IWLPnfHjm58XCA7CivkhY4+eceSdXxcIDsKK+SFjz5odcOsfFwgOwor5IWRPnJ1w618XCA7CivkhZc+c3XDrHxcIDsKK+SFmD5sw6FpfFwgOwor5IWZPmjDuW58XCA7CivkhZw+ZHXDsnxcIDsKK+SFnz5jx45ufFwgOwor5IWiPmppw7l8XCA7CivkhaU+amnDqXxcIDsKK+SFpj5tw6FvfFwgOwor5IWnPnnDoG58XCA7Civkhak+emjHkHxcIDsKK+SFqj50dcOtfFwgOwor5IWxPmjDuW58XCA7CivkhbM+Y2jDunxcIDsKK+SFtD5zdceSfFwgOwor5IW2Pm7DsnV8XCA7Civkhbk+bMOzdXxcIDsKK+SFvD5tw6FufFwgOwor5IW+PmPDqW58XCA7Civkhb8+aHXDoXxcIDsKK+SGgD5txJtpfFwgOwor5IaDPmTHjm98XCA7Civkhog+emjDrHxcIDsKK+SGij5jdcOsfFwgOwor5IaPPmbDqGl8XCA7CivkhpA+Z3XDs3xcIDsKK+SGkj5qacO5fFwgOwor5IaVPmp1w6l8XCA7Civkhpk+ecOhb3xcIDsKK+SGmz5jaMOhfFwgOwor5IacPnnDsnV8XCA7Civkhp0+c2jDuXxcIDsKK+SGnj55x45vfFwgOwor5IaiPmp1w6l8XCA7Civkhqw+eceUbnxcIDsKK+SGrj5qw6xufFwgOwor5IaxPnTHjm58XCA7Civkhr4+bMOhbnxcIDsKK+SHiD5ndcOsfFwgOwor5IeLPmjDoGl8XCA7Civkh44+cXXDqHxcIDsKK+SHjz5kdcOsfFwgOwor5IeSPmppw6h8XCA7Civkh5Q+bHXDsnxcIDsKK+SHlj55x5RufFwgOwor5IeZPnnHkG58XCA7Civkh5s+emjHkHxcIDsKK+SHnj5nx45ufFwgOwor5IehPnpow7l8XCA7Civkh6Q+ZHXDrHxcIDsKK+SHpz56aMO5fFwgOwor5IetPmzHjm98XCA7Civkh64+csOobnxcIDsKK+SHtj5qdcOpfFwgOwor5Ie5PmrDuW58XCA7Civkh7s+aHXDrHxcIDsKK+SHvD5jaMOsfFwgOwor5Ie9Pnpow6x8XCA7Civkh74+ecOhbnxcIDsKK+SIgT5sw7pufFwgOwor5IiEPmjDoW58XCA7CivkiIY+ZMOgaXxcIDsKK+SIiD5mw6lpfFwgOwor5IiJPnNow6B8XCA7CivkiI8+YsOhb3xcIDsKK+SIkD5rdcOsfFwgOwor5IiRPmd1x458XCA7CivkiJI+bseObnxcIDsKK+SIlT5jaMOtfFwgOwor5IiXPnN1x5J8XCA7CivkiJo+dMOhaXxcIDsKK+SInD5xw6xufFwgOwor5IiiPnPHjml8XCA7CivkiKc+d8SbaXxcIDsKK+SIsj5ww6FufFwgOwor5Ii3Pmx1w7J8XCA7CivkiLk+c8eSdXxcIDsKK+SIvD5tacOofFwgOwor5Ii/Pm3DoGl8XCA7CivkiYA+c2jDuXxcIDsKK+SJgj5sxJtpfFwgOwor5ImFPnpow6x8XCA7CivkiYg+c8eObnxcIDsKK+SJij5mw6BufFwgOwor5ImLPm3DqGl8XCA7CivkiYw+c3XDrHxcIDsKK+SJjz54acOofFwgOwor5ImSPmbDoW58XCA7CivkiZM+bMOpaXxcIDsKK+SJmT55w7pufFwgOwor5ImcPnpow6x8XCA7CivkiZ4+ZMeObnxcIDsKK+SJnz5odcOyfFwgOwor5ImgPnfDqWl8XCA7CivkiaE+dMOhbnxcIDsKK+SJoz54acOofFwgOwor5ImkPnPHknV8XCA7Civkiac+bGnDunxcIDsKK+SJqj5sw6hpfFwgOwor5ImsPmbDqGl8XCA7Civkia0+bGnDqHxcIDsKK+SJrj5sw6xufFwgOwor5ImwPnnDoW98XCA7CivkibI+YmnDqHxcIDsKK+SJtz5kw6BufFwgOwor5Im9PmLHjm58XCA7CivkioM+cMOoaXxcIDsKK+SKhj5qacO5fFwgOwor5IqIPm3DqWl8XCA7Civkiok+c8eObnxcIDsKK+SKij5tw6hpfFwgOwor5IqTPnNow6x8XCA7CivkipY+bMeObnxcIDsKK+SKmD5qacO5fFwgOwor5IqZPnnDoW58XCA7Civkip0+eGnDqHxcIDsKK+SKnj56aMOpfFwgOwor5IqfPm3DqW58XCA7CivkiqE+bcOhbnxcIDsKK+SKpD50w6FufFwgOwor5IqoPmx1w7N8XCA7Civkiqk+ZsOhbnxcIDsKK+SKqz5jdceQfFwgOwor5IqsPmNow6B8XCA7CivkirA+Y2jHlHxcIDsKK+SKtT5xacO6fFwgOwor5Iq7PnnHjm58XCA7Civkirw+Y2jHkHxcIDsKK+SLgD5rdcOgfFwgOwor5IuCPnnDoW98XCA7Civki4M+bcOgb3xcIDsKK+SLiT5qdcOpfFwgOwor5IuLPm3DrW58XCA7Civki48+enXDsnxcIDsKK+SLkD55dcOofFwgOwor5IuVPnLDqG58XCA7Civki6I+YmnDqHxcIDsKK+SLoz5mw6FufFwgOwor5IukPnnDoG98XCA7Civki6Y+ZsOhbnxcIDsKK+SLrT5odcOyfFwgOwor5IuuPmrDrG58XCA7Civki7E+bMOhaXxcIDsKK+SLsj5jaMSbfFwgOwor5IuzPmLDqGl8XCA7Civki7Q+bmnDuXxcIDsKK+SLtz5sacO6fFwgOwor5Iu4PnjDum58XCA7Civki7s+bsOtbnxcIDsKK+SLvj56aMeOfFwgOwor5IyGPmd1w6x8XCA7CivkjIc+aHXDrHxcIDsKK+SMij55w6FvfFwgOwor5IyNPmjDoG58XCA7CivkjI4+bMO8w6h8XCA7CivkjJM+ZsOhbnxcIDsKK+SMlj5qacOpfFwgOwor5IybPnnDoW98XCA7CivkjJw+bmnDqHxcIDsKK+SMnT5qw6xufFwgOwor5IykPnpox5B8XCA7CivkjKU+eceQbnxcIDsKK+SMpj5kx45vfFwgOwor5IyoPmPDoGl8XCA7CivkjKo+ecOhbnxcIDsKK+SMqz5sx45ufFwgOwor5IywPnNow6h8XCA7CivkjLE+bHXDsnxcIDsKK+SMtD5sdcOyfFwgOwor5Iy1Pnpow7p8XCA7CivkjLw+cnXDrHxcIDsKK+SMvT5jx45pfFwgOwor5Iy+PnLDqW58XCA7CivkjYA+bMOhbnxcIDsKK+SNgT5zdcOsfFwgOwor5I2DPnnDoW98XCA7CivkjYY+emjDuXxcIDsKK+SNij5qdcOpfFwgOwor5I2OPmPDuW58XCA7CivkjZA+aMeObnxcIDsKK+SNkT5ox45ufFwgOwor5I2SPm3HknV8XCA7CivkjZk+bcOpaXxcIDsKK+SNoz5sw6lpfFwgOwor5I2lPmzDqGl8XCA7Civkjak+x45uZ3xcIDsKK+SNqj5rdcOsfFwgOwor5I2rPnR1w7N8XCA7Civkja8+Z3XHkHxcIDsKK+SNsj5uw6FpfFwgOwor5I20PmR1w7J8XCA7Civkjbc+Z3XDrHxcIDsKK+SNvD5jw6FufFwgOwor5I2+PnR1w618XCA7CivkjoA+eHXDqHxcIDsKK+SOgj5ix45vfFwgOwor5I6DPnLHjm58XCA7Civkjok+c2jDuXxcIDsKK+SOnT5jaMO6fFwgOwor5I6kPmNow7p8XCA7CivkjqY+eceObnxcIDsKK+SOrz5ow6BufFwgOwor5I6wPnp1w7N8XCA7CivkjrI+emjDqXxcIDsKK+SOtz56aMO5fFwgOwor5I65PnfDqW58XCA7Civkjro+emjHkHxcIDsKK+SOvT53w6lufFwgOwor5I6+PmfHlG58XCA7Civkjr8+cWnDunxcIDsKK+SPgT56x45pfFwgOwor5I+CPnPHknV8XCA7Civkj4Q+emjDrHxcIDsKK+SPhj5jw6FvfFwgOwor5I+QPmp1w6l8XCA7Civkj5Q+bmnHlHxcIDsKK+SPlT5yxJtufFwgOwor5I+XPmfDoGl8XCA7Civkj5k+dMeObnxcIDsKK+SPnz5iacOofFwgOwor5I+hPnNow6x8XCA7Civkj6M+anXDqXxcIDsKK+SPpj5odcOhfFwgOwor5I+oPmh1x5B8XCA7Civkj6w+bcOzdXxcIDsKK+SPrz56aMOsfFwgOwor5I+wPnLEm258XCA7Civkj7I+ZGnDqXxcIDsKK+SPsz56aMOofFwgOwor5I+3PmjDoG58XCA7Civkj7w+Y8OhbnxcIDsKK+SQhD5ow6BufFwgOwor5JCGPmPHjml8XCA7CivkkIg+emjDrXxcIDsKK+SQkT56aMOpfFwgOwor5JCTPnLDs3V8XCA7CivkkJQ+YsOsbnxcIDsKK+SQmD5qdcOpfFwgOwor5JCdPnN1x5J8XCA7CivkkJ4+cnXDsnxcIDsKK+SQoj56aMO5fFwgOwor5JCjPmN1w7J8XCA7CivkkKQ+Y2jDrXxcIDsKK+SQpz5rw6BvfFwgOwor5JCpPmvHjml8XCA7CivkkKo+ZsOgbnxcIDsKK+SQrD5jw6FvfFwgOwor5JCtPnpow6x8XCA7CivkkK8+bMOpaXxcIDsKK+SQsj56aMOpfFwgOwor5JC0Pmd1w6x8XCA7CivkkLY+aseQbnxcIDsKK+SQuD5ndcOzfFwgOwor5JC5PnPDoG98XCA7CivkkLo+dMOgbnxcIDsKK+SQvT5tw6FufFwgOwor5JC+PmR1w7N8XCA7CivkkYc+emjDrHxcIDsKK+SRij53w6lpfFwgOwor5JGLPm7DoW98XCA7CivkkYw+bMOhbnxcIDsKK+SRjT55w6BufFwgOwor5JGTPnTDoWl8XCA7CivkkZQ+ZsOoaXxcIDsKK+SRlT5zaMeUfFwgOwor5JGYPmNow6F8XCA7CivkkZk+csOhbnxcIDsKK+SRmz5jaMeQfFwgOwor5JGdPmppx458XCA7CivkkaQ+asOsbnxcIDsKK+SRqD5kdcOyfFwgOwor5JGsPnnDoG98XCA7CivkkbE+bcOhbnxcIDsKK+SRsj5jaMOofFwgOwor5JGzPmzDum58XCA7CivkkbY+Y8OhbnxcIDsKK+SRuz55w7N1fFwgOwor5JKDPmPDoG98XCA7CivkkoY+Y2jDqHxcIDsKK+SSkT5jx45vfFwgOwor5JKTPmvHjml8XCA7CivkkpQ+YsOgaXxcIDsKK+SSlj54w6xufFwgOwor5JKcPm5pw7p8XCA7CivkkqA+ZseObnxcIDsKK+SSoT55x5BufFwgOwor5JKiPsOhbmd8XCA7CivkkqM+cseObnxcIDsKK+SSpj5mw6BufFwgOwor5JKoPnNox5B8XCA7Civkkqs+ZMOgaXxcIDsKK+SSsj5jaMOgfFwgOwor5JKzPmR1x5J8XCA7CivkkrQ+eceSdXxcIDsKK+SStT5ow6BvfFwgOwor5JK5PmzDqGl8XCA7Civkkro+aseQbnxcIDsKK+SSvT5tw6lpfFwgOwor5JOCPnnDoW58XCA7Civkk4Q+ecOtbnxcIDsKK+SThj56aMOpfFwgOwor5JOMPnpow6x8XCA7Civkk40+aMeObnxcIDsKK+STlT50dceSfFwgOwor5JOYPmppw7l8XCA7Civkk58+bGnDqHxcIDsKK+STrT5jaMOgfFwgOwor5JOuPm3DoG98XCA7Civkk7I+cnXDrHxcIDsKK+STsz5oxJtufFwgOwor5JO2PmzDoGl8XCA7Civkk7o+bcSbaXxcIDsKK+STvz5ox45ufFwgOwor5JSEPnnDoW98XCA7CivklIg+Z8eObnxcIDsKK+SUkT54acOpfFwgOwor5JSSPmLDqGl8XCA7CivklJg+enXDsnxcIDsKK+SUnD5uw6FufFwgOwor5JSfPmNow618XCA7CivklKI+aHXDoXxcIDsKK+SUqj5kdcOsfFwgOwor5JSzPm7Hjm58XCA7CivklLc+ccOtbnxcIDsKK+SUuT5zdcOsfFwgOwor5JS6PnfDqWl8XCA7CivklL8+amnDqHxcIDsKK+SVgT5mxJtpfFwgOwor5JWDPnnDrG58XCA7CivklYU+c8eOb3xcIDsKK+SVhj5kw7J1fFwgOwor5JWHPmh1w6x8XCA7CivklYg+eGnDqHxcIDsKK+SVij50w6FufFwgOwor5JWMPnpow6x8XCA7CivklZE+asO5bnxcIDsKK+SVkz5jaMOhfFwgOwor5JWVPm3DoG58XCA7CivklZk+amnDqXxcIDsKK+SVmj5rdcOsfFwgOwor5JWbPmppw6F8XCA7CivklaA+ZsOoaXxcIDsKK+SVoj56aMeOfFwgOwor5JWpPmzHjm98XCA7Civklas+a3XDrXxcIDsKK+SVsD5iw6BufFwgOwor5JWxPmTHknV8XCA7CivklbI+bMeQbnxcIDsKK+SVtT54acOpfFwgOwor5JW8Pm7DoW58XCA7Civklb0+emjDunxcIDsKK+SVvj55w6FufFwgOwor5JW/PmjDoG58XCA7CivkloM+eXXDqHxcIDsKK+SWhD5yw6FufFwgOwor5JaIPm7DvMOofFwgOwor5JaLPm7DvMOofFwgOwor5JaMPnHDrW58XCA7Civklo4+eGnDoXxcIDsKK+SWjz5jaMeUfFwgOwor5JaQPmrDrG58XCA7CivklpQ+aMOgbnxcIDsKK+SWlj54acOhfFwgOwor5JaXPnnDoW58XCA7Civklps+c3XHknxcIDsKK+SWnD55w61ufFwgOwor5JajPnPDoG98XCA7CivklqQ+d8eObnxcIDsKK+SWqD5zaMOtfFwgOwor5JavPmd1w6x8XCA7CivklrA+cMOgaXxcIDsKK+SWsj54w7pufFwgOwor5JazPnpow6B8XCA7CivklrQ+ecOhb3xcIDsKK+SWuz55w7N1fFwgOwor5Ja8Pmp1w6l8XCA7Civkl4s+bcOzdXxcIDsKK+SXlD5ow7N1fFwgOwor5JeVPnfHjm58XCA7Civkl5Y+Y2jDrHxcIDsKK+SXmT5ow6FufFwgOwor5JecPmxpw7p8XCA7Civkl50+Y8OhbnxcIDsKK+SXnj5jw6FufFwgOwor5JehPnnDoW58XCA7Civkl6I+c3XHknxcIDsKK+SXoz5nx45vfFwgOwor5JeqPnpow6h8XCA7Civkl68+asOsbnxcIDsKK+SXsj5sw6xufFwgOwor5Je6PnnHjm58XCA7Civkl7s+amnDqXxcIDsKK+SXvT53w6hpfFwgOwor5JiFPm7DoWl8XCA7CivkmIc+d8OpbnxcIDsKK+SYiT5jw6FufFwgOwor5JiKPm1pw6h8XCA7CivkmJE+bcOgaXxcIDsKK+SYkz5rw6BufFwgOwor5JiZPnfDqGl8XCA7CivkmJo+emjDunxcIDsKK+SYoj56aMeUfFwgOwor5JikPnNow7l8XCA7CivkmKU+eGnDoXxcIDsKK+SYqz5uw7J1fFwgOwor5JitPmRpw6l8XCA7CivkmLY+aMOgbnxcIDsKK+SYuT56dcOsfFwgOwor5Ji8PnfHjm58XCA7CivkmL8+anXDqXxcIDsKK+SZgT5jw6FufFwgOwor5JmDPmR1w7J8XCA7CivkmYU+ecOgb3xcIDsKK+SZhj5ndcOsfFwgOwor5JmIPmjDs3V8XCA7CivkmYk+eMO6bnxcIDsKK+SZij54acOofFwgOwor5JmMPmh1w6x8XCA7CivkmY4+eGnDqXxcIDsKK+SZkz5ix45pfFwgOwor5JmVPmNow7l8XCA7CivkmZg+Y2jHlHxcIDsKK+SZmT5jaMOtfFwgOwor5JmdPnhpw6h8XCA7CivkmZ8+ZHXDsnxcIDsKK+SZoD5qdcOpfFwgOwor5JmhPmh1w6x8XCA7CivkmaQ+ZHXHknxcIDsKK+SZqD5ndceSfFwgOwor5Jm/PnfDqGl8XCA7CivkmoM+ecOzdXxcIDsKK+SahT5sw6FpfFwgOwor5JqLPnnDuW58XCA7CivkmpE+bcOhaXxcIDsKK+Sanj5kx45pfFwgOwor5JqfPmTHjml8XCA7CivkmqA+aMO5bnxcIDsKK+Saoj5jaMOofFwgOwor5JqlPm51w7J8XCA7CivkmqY+emjDrHxcIDsKK+Sapz5sacO6fFwgOwor5JqoPmbDqGl8XCA7Civkmqw+bMOtbnxcIDsKK+Sarz50x45vfFwgOwor5JqxPnjDrG58XCA7CivkmrM+eGnDqHxcIDsKK+SatT50x45vfFwgOwor5Jq4Pnhpw6h8XCA7Civkmro+ecOhb3xcIDsKK+Sauz55w6FvfFwgOwor5Jq9PmjDoG98XCA7Civkmr4+bsOtbnxcIDsKK+Savz55w6xufFwgOwor5JuAPmbHjm58XCA7Civkm4E+bsOhbnxcIDsKK+Sbgj5jaMOtfFwgOwor5JuFPnhpw6F8XCA7Civkm4g+c2jDrHxcIDsKK+SbjD5ww6FvfFwgOwor5JuNPmbDqGl8XCA7Civkm5c+emjHkHxcIDsKK+SbmD5uw61ufFwgOwor5JuaPmzDvMOofFwgOwor5JubPmh1w6x8XCA7Civkm5w+eMO5bnxcIDsKK+SbnT5uw6FvfFwgOwor5JuePmjHjm58XCA7Civkm58+amnDoXxcIDsKK+SboD5kw7J1fFwgOwor5JuhPmh1w6B8XCA7Civkm6g+eMOsbnxcIDsKK+Sbrj5qacO5fFwgOwor5JuwPmjDum58XCA7Civkm7I+bcOhbnxcIDsKK+Sbtj5sxJtpfFwgOwor5Ju3PnfHjm58XCA7Civkm7g+Y2jDqHxcIDsKK+SbuT5jw6BufFwgOwor5Ju6Pmppw6h8XCA7Civkm7s+ecOydXxcIDsKK+SbvD5odceQfFwgOwor5Ju9Pnpox458XCA7CivknIA+bseOb3xcIDsKK+SchD5jaMOtfFwgOwor5JyFPnfDqWl8XCA7CivknIc+Z8eUbnxcIDsKK+Scij56w6BvfFwgOwor5JyLPmh1w6x8XCA7CivknI4+bMOhb3xcIDsKK+SckT5xacOgfFwgOwor5JyTPm5pw6h8XCA7CivknJQ+c3XDrXxcIDsKK+SclT5tw6BpfFwgOwor5JyWPnTDoG58XCA7CivknJc+eMOsbnxcIDsKK+ScnD53w6hpfFwgOwor5JygPmNow6h8XCA7CivknKc+bseOb3xcIDsKK+ScqT55w6BufFwgOwor5JyqPnFpw7p8XCA7CivknK0+asO5bnxcIDsKK+ScsT5tx45ufFwgOwor5JyyPmxpw6h8XCA7CivknLQ+Y2jDuXxcIDsKK+SctT5jaMeQfFwgOwor5Jy4Pm3Em2l8XCA7CivknLk+c2jDuXxcIDsKK+Scuz5jaMeQfFwgOwor5J2BPmzDoW98XCA7CivknYI+c2jDuXxcIDsKK+Sdgz56aMOpfFwgOwor5J2KPnNow6B8XCA7CivknYw+anXDqXxcIDsKK+SdjT5qw7lufFwgOwor5J2PPmzDs3V8XCA7CivknZA+d8OpaXxcIDsKK+Sdkj56aMO5fFwgOwor5J2VPnpow6l8XCA7CivknZ4+aMOgb3xcIDsKK+SdoT5tw6BufFwgOwor5J2iPm3DoG58XCA7CivknaQ+bMeOb3xcIDsKK+SdpT5ow6FvfFwgOwor5J2nPm3DqW58XCA7Civknao+c2jDunxcIDsKK+Sdqz56dcOzfFwgOwor5J2sPnpow7l8XCA7Civkna0+Z8OydXxcIDsKK+Sdsj5qw6xufFwgOwor5J2zPmPDoW58XCA7Civknbc+emjDrHxcIDsKK+SduT53x45ufFwgOwor5J2/Pmd1w6x8XCA7CivknoA+Z8OydXxcIDsKK+Segz56aMOsfFwgOwor5J6GPnN1x5J8XCA7Civknoc+ZGnDqXxcIDsKK+SeiD5ndceQfFwgOwor5J6KPnjDuW58XCA7Civknow+c2jDqXxcIDsKK+SelD53xJtpfFwgOwor5J6VPmRpw6l8XCA7CivknpY+c2jHlHxcIDsKK+SeoT50x45ufFwgOwor5J6iPnpow6B8XCA7CivknqM+Y2jEm3xcIDsKK+SepT55w7J1fFwgOwor5J6nPmjDsnV8XCA7Civknqg+Z3XHkHxcIDsKK+Seqz55x5RufFwgOwor5J6sPnTDsnV8XCA7Civknq0+cWnHlHxcIDsKK+SesD56dcOzfFwgOwor5J61Pmp1xJt8XCA7Civknrc+anXDqXxcIDsKK+SevT5zdceSfFwgOwor5J6+PmNow618XCA7Civkn4I+bcOhbnxcIDsKK+SfiD56aMOtfFwgOwor5J+JPnpow7p8XCA7Civkn5U+Y2jDoHxcIDsKK+Sflz5zaMOsfFwgOwor5J+ZPnFpw6h8XCA7Civkn50+dMOydXxcIDsKK+Sfnj5jaMO6fFwgOwor5J+gPnl1w6h8XCA7Civkn6M+Y2jDuXxcIDsKK+SfqD5tw61ufFwgOwor5J+pPmxpxJt8XCA7Civkn6w+cWnDuXxcIDsKK+Sfrz5rdcOyfFwgOwor5J+1PnFpw7p8XCA7Civkn7Y+Y3XDsnxcIDsKK+Sftz5jaMOsfFwgOwor5J+4Pmt1w618XCA7Civkn7k+bGnDqHxcIDsKK+Sfvj5qdcSbfFwgOwor5KCCPmNow7p8XCA7CivkoIU+a8eUbnxcIDsKK+Sghz5qdcOpfFwgOwor5KCJPmh1w6B8XCA7CivkoIo+ZsOoaXxcIDsKK+SgjT5xacOhfFwgOwor5KCRPmt1x5B8XCA7CivkoJQ+c3XDrHxcIDsKK+Sglz5xacO5fFwgOwor5KCZPmLDqGl8XCA7CivkoJ8+ZGnDqXxcIDsKK+SgoD5jaMOsfFwgOwor5KChPmN1w7N8XCA7CivkoKQ+ZHXHknxcIDsKK+SgpT5iacOpfFwgOwor5KCmPnpow6h8XCA7CivkoKc+Y2jDunxcIDsKK+SgqT5ndcOsfFwgOwor5KCrPnrDsnV8XCA7CivkoK0+bMOhaXxcIDsKK+Sgrz55dcOofFwgOwor5KCxPnNox5R8XCA7CivkoLQ+cceQbnxcIDsKK+Sgtj5zaMOofFwgOwor5KC9PmjDoWl8XCA7CivkoL8+d8OgaXxcIDsKK+Shgj5qacO5fFwgOwor5KGFPm3HkG58XCA7CivkoYc+eXXDqHxcIDsKK+ShiD5qdcOpfFwgOwor5KGKPmbDoW58XCA7CivkoZA+dHXDs3xcIDsKK+ShkT5tw61ufFwgOwor5KGaPm3DoG98XCA7CivkoZs+ecOsbnxcIDsKK+ShnT55x5RufFwgOwor5KGhPnhpw6l8XCA7Civkoag+Y2jDoHxcIDsKK+ShrD5tw6BufFwgOwor5KG1PnN1w6x8XCA7CivkobY+YsOoaXxcIDsKK+Shtz5rw6BpfFwgOwor5KG5Pnpow6x8XCA7Civkobo+d8OoaXxcIDsKK+Shuz5tw61ufFwgOwor5KG+Pm7DqGl8XCA7CivkooE+eXXDqHxcIDsKK+Siij55w7N1fFwgOwor5KKZPmLDoGl8XCA7Civkop8+ecOzdXxcIDsKK+SioT54acOofFwgOwor5KKjPnnDoW98XCA7CivkoqQ+c2jDuXxcIDsKK+SipT55w6FufFwgOwor5KKrPnN1w618XCA7Civkoq0+ecOgbnxcIDsKK+Sirj5sw6hpfFwgOwor5KKvPmzDrW58XCA7CivkorA+dMOhaXxcIDsKK+Sisj55dcOofFwgOwor5KK1PnnDum58XCA7Civko4A+Z3XHkHxcIDsKK+Sjgj5sxJtpfFwgOwor5KOHPnFpw7p8XCA7Civko4s+Y8eOaXxcIDsKK+SjjT55x45ufFwgOwor5KOUPnN1x5J8XCA7Civko5k+cMOpaXxcIDsKK+Sjmj5sw7N1fFwgOwor5KOcPmN1w7N8XCA7Civko58+Y8OhbnxcIDsKK+SjoD5qacOpfFwgOwor5KOmPmzDqGl8XCA7Civko6w+eseOaXxcIDsKK+SjrT50w6BpfFwgOwor5KOyPmbDoG58XCA7Civko7Y+aHXDs3xcIDsKK+SjuD5yx45ufFwgOwor5KSBPmPDqW58XCA7CivkpII+bcOpaXxcIDsKK+Skgz55w6xufFwgOwor5KSGPmt1w618XCA7CivkpIs+Z3XDs3xcIDsKK+SkkD5qx5BufFwgOwor5KSVPnh1w6h8XCA7CivkpJY+YsOgb3xcIDsKK+Sklz5nx45ufFwgOwor5KSbPnFpw7p8XCA7CivkpJw+ZMO5bnxcIDsKK+Sknj55x5RufFwgOwor5KShPnLHjm58XCA7CivkpKM+bMO8w6h8XCA7CivkpKU+Z3XHkHxcIDsKK+Skpj55dcOofFwgOwor5KSnPmh1w6x8XCA7CivkpKk+Y2jDoXxcIDsKK+Skqj5kdceSfFwgOwor5KSuPnNow6h8XCA7CivkpLE+c2jDrHxcIDsKK+Sksj5jaMOsfFwgOwor5KS0PmjDoW58XCA7CivkpLU+ZsOoaXxcIDsKK+Sktz55w6FufFwgOwor5KS6PnnHkG58XCA7CivkpLs+ZHXDsnxcIDsKK+Skvz5xacOofFwgOwor5KWBPmjDoW58XCA7CivkpYM+eXXDqHxcIDsKK+Slhj5qx5BufFwgOwor5KWNPnpow6x8XCA7CivkpZA+bcOzdXxcIDsKK+SlkT53w6BufFwgOwor5KWVPnBpxJt8XCA7CivkpZk+c3XDrHxcIDsKK+Slmz5qacOpfFwgOwor5KWjPnrDoW98XCA7CivkpaQ+YsOhb3xcIDsKK+SlqT53w6lpfFwgOwor5KWrPnRpxJt8XCA7Civkpa4+emjDunxcIDsKK+SlsT54acSbfFwgOwor5KW3Pnpow6F8XCA7Civkpb4+eGnEm3xcIDsKK+Smhj5qdcOpfFwgOwor5KaMPmNow7l8XCA7Civkpo8+eGnDqHxcIDsKK+SmkT54acOofFwgOwor5KaUPnTHjm58XCA7CivkppY+eGnDoXxcIDsKK+Smmj5odcOyfFwgOwor5KaePnLDuW58XCA7CivkpqA+c2jHkHxcIDsKK+Smoj5rdcOyfFwgOwor5KamPnHDrW58XCA7Civkpqc+cWnDqXxcIDsKK+SmqD5sw6FufFwgOwor5KasPnF1w6h8XCA7Civkpq8+emjDrHxcIDsKK+SmsT5rdceQfFwgOwor5Ka5PnNow618XCA7Civkprw+anXDqXxcIDsKK+Smvj55x5RufFwgOwor5KeBPmNow7l8XCA7Civkp4I+ZMOgb3xcIDsKK+Snkj5sw6FpfFwgOwor5KeaPmjDoG98XCA7Civkp6U+aHXDrHxcIDsKK+Snpj53w6lpfFwgOwor5KeqPmNow6h8XCA7Civkp6s+aMOhb3xcIDsKK+SnsD5ow7lufFwgOwor5KeyPmjDoG58XCA7Civkp7Y+a3XDrXxcIDsKK+Sntz5yw7N1fFwgOwor5Ke9PmN1x5B8XCA7Civkp78+cXXDqHxcIDsKK+SogT5jaMOofFwgOwor5KiEPnnDoG58XCA7CivkqIs+bsO8w6h8XCA7CivkqIw+YsOhb3xcIDsKK+SokD5xacOgfFwgOwor5KiTPmzDqWl8XCA7CivkqJQ+YsOhb3xcIDsKK+SomT5jw6lufFwgOwor5KihPmjDoW58XCA7CivkqKI+ZMOgbnxcIDsKK+Soqj5tw6FpfFwgOwor5KirPm3DoGl8XCA7CivkqK4+eHXEm3xcIDsKK+Sosj5uw7N1fFwgOwor5Ki0PmR1w6x8XCA7CivkqLU+ZMOgbnxcIDsKK+Sotj55x5RufFwgOwor5Ki4PnnHkG58XCA7CivkqLo+ZHXDrHxcIDsKK+SovT5mxJtpfFwgOwor5Ki+PmbEm2l8XCA7CivkqYA+YsOoaXxcIDsKK+Spgz5zaMOsfFwgOwor5KmIPmh1w6x8XCA7CivkqYo+d8eObnxcIDsKK+Spjz5tacOofFwgOwor5KmUPmR1w7J8XCA7CivkqZU+w6FuZ3xcIDsKK+SpnT5ww6FvfFwgOwor5KmhPmppw6F8XCA7CivkqaM+ZHXHknxcIDsKK+SppT5kw6BufFwgOwor5KmnPnhpw6h8XCA7CivkqbE+c2jDuXxcIDsKK+Spsz5zaMeUfFwgOwor5Km1PnnDuW58XCA7Civkqb4+emjDqHxcIDsKK+Spvz5mw6lufFwgOwor5KqLPnfDqGl8XCA7Civkqo0+bMOhbnxcIDsKK+SqkT50dcOzfFwgOwor5KqXPnhpw6F8XCA7Civkqpg+d8SbaXxcIDsKK+Sqmz5mw6FufFwgOwor5KqkPmbDoW58XCA7CivkqqU+ZGnDqXxcIDsKK+Sqpz5jaMOtfFwgOwor5KqoPmLDoW98XCA7Civkqqk+ecOtbnxcIDsKK+SqsT5nx45pfFwgOwor5KqzPnnHlG58XCA7Civkqrc+aMOydXxcIDsKK+SquD5tw61ufFwgOwor5Kq5PnDDqWl8XCA7Civkqr0+aMOgb3xcIDsKK+SrgD5nxJtufFwgOwor5KuCPmR1x5J8XCA7Civkq4U+c8OgbnxcIDsKK+Srhz5yw6FufFwgOwor5KuIPnrDqG58XCA7Civkq4k+bcOgb3xcIDsKK+Sriz50dcOtfFwgOwor5KuQPmzDrW58XCA7Civkq5I+bcOpbnxcIDsKK+SrlT56aMOsfFwgOwor5KuXPnhpw6F8XCA7Civkq5s+aMOzdXxcIDsKK+Srnj5yw6FvfFwgOwor5KufPmjDum58XCA7Civkq6A+cMOpaXxcIDsKK+SrpT5rdceQfFwgOwor5KupPnPHjm58XCA7Civkq6s+bMOzdXxcIDsKK+SrrT5odcOsfFwgOwor5KuuPmPDoW58XCA7Civkq7A+bMOsbnxcIDsKK+Srsj5ow6BufFwgOwor5Ku0PmrDrG58XCA7Civkq7Y+ZsOhbnxcIDsKK+SruD5uw6FvfFwgOwor5Ku7Pnh1w6l8XCA7Civkq7w+eHXDqHxcIDsKK+SsgD55x5J1fFwgOwor5KyCPnh1w6h8XCA7CivkrIg+ZHXDrHxcIDsKK+SsiT5ow6BvfFwgOwor5KyKPnFpw6h8XCA7CivkrI4+Z3XDs3xcIDsKK+SskD53xJtpfFwgOwor5KyRPnfDqGl8XCA7CivkrJk+ecOhb3xcIDsKK+Ssnj50w6FvfFwgOwor5KyfPmxpw7p8XCA7CivkrKE+emjDuXxcIDsKK+Sspj5kw7J1fFwgOwor5KyrPmPHjm58XCA7CivkrLE+YsOobnxcIDsKK+Sssz5ix45ufFwgOwor5Ky3PnNoxJt8XCA7CivkrLk+emjDrHxcIDsKK+SsvT5kdcOsfFwgOwor5Ky/PnfEm2l8XCA7CivkrYA+eMO5bnxcIDsKK+StgT56aMOsfFwgOwor5K2DPnLEm258XCA7CivkrYQ+c2jDrHxcIDsKK+StiT5zdceQfFwgOwor5K2LPmLHjm98XCA7CivkrY4+eGnDqXxcIDsKK+Stlj56aMO5fFwgOwor5K2YPnnDoG58XCA7CivkrZk+aseQbnxcIDsKK+Stmz5kw6BufFwgOwor5K2lPnh1w6h8XCA7CivkrbE+YmnDqXxcIDsKK+Stsz53w6hpfFwgOwor5K21PmbDoW58XCA7Civkrbc+bGnDunxcIDsKK+StuT7DoW5nfFwgOwor5K26PsOhbmd8XCA7Civkrb0+ccO6bnxcIDsKK+Stvj50dcOzfFwgOwor5K6IPmNow618XCA7CivkrpE+bMOoaXxcIDsKK+SulD56dceQfFwgOwor5K6cPnNow6B8XCA7Civkrp4+Y2jDuXxcIDsKK+Sunz5zx5J1fFwgOwor5K6iPmRpw6l8XCA7Civkrqc+aMOhbnxcIDsKK+SuqD56x45pfFwgOwor5K6rPmzDs3V8XCA7Civkrq4+bcOgaXxcIDsKK+SusD5kx45ufFwgOwor5K6xPnpow7p8XCA7CivkrrM+ZsOhbnxcIDsKK+SuuT53w6hpfFwgOwor5K67PmNow6x8XCA7Civkrrw+bMOtbnxcIDsKK+SvgD5uacOofFwgOwor5K+BPmx1w7N8XCA7Civkr4U+bmnDqHxcIDsKK+SviD53w6FufFwgOwor5K+KPnFpw6B8XCA7Civkr44+Z8OgbnxcIDsKK+Svjz5odcOzfFwgOwor5K+QPmjDoWl8XCA7Civkr5M+a3XDrXxcIDsKK+SvlD5jw6lufFwgOwor5K+dPnN1x5B8XCA7Civkr58+ZHXDrHxcIDsKK+Svoz5ndcOsfFwgOwor5K+oPmbDqW58XCA7Civkr6o+a8eOb3xcIDsKK+Svqz5ow6BvfFwgOwor5K+sPmR1x5J8XCA7Civkr64+bsOhaXxcIDsKK+SvsD5qacOofFwgOwor5K+1Pm5pw6h8XCA7Civkr7Y+bcOhbnxcIDsKK+Svuj5rdcOyfFwgOwor5LCBPmbDqGl8XCA7CivksII+Y8OgaXxcIDsKK+SwhD5zaMOsfFwgOwor5LCGPnLDs3V8XCA7CivksIg+Y2jHjnxcIDsKK+SwiT5ww6FufFwgOwor5LCLPm3DoW58XCA7CivksI4+Z3XDrHxcIDsKK+SwkD5sw6FufFwgOwor5LCUPnDDoW58XCA7CivksJg+bGnDunxcIDsKK+Swmj53w6lufFwgOwor5LCePnpox5R8XCA7CivksJ8+aMO6bnxcIDsKK+SwoT5jaMOsfFwgOwor5LClPmh1w7J8XCA7CivksKg+bcOoaXxcIDsKK+SwqT5jaMSbfFwgOwor5LCqPm3DqGl8XCA7CivksK0+bsOydXxcIDsKK+Swuj5qacOofFwgOwor5LC8PnjDrW58XCA7CivksL0+YsOoaXxcIDsKK+Swvz50dcOzfFwgOwor5LGCPnnHknV8XCA7CivksYQ+amnDqHxcIDsKK+Sxiz5kx45ufFwgOwor5LGPPnTHknV8XCA7CivksZE+eHXDqXxcIDsKK+SxlT5tw7N1fFwgOwor5LGWPmxpw7p8XCA7CivksZw+Y3XDsnxcIDsKK+Sxnj5sacO6fFwgOwor5LGlPnpow618XCA7Civksag+emjDrHxcIDsKK+Sxsj55w6FufFwgOwor5LG6PmjDoWl8XCA7Civksbs+aHXDoXxcIDsKK+Sxvj5sw7N1fFwgOwor5LKAPmRpw6l8XCA7CivksoE+d8OoaXxcIDsKK+Sygz56x45vfFwgOwor5LKEPm3DrW58XCA7Civksoo+dHXHknxcIDsKK+Syiz5jw6lufFwgOwor5LKOPm7Em2l8XCA7Civkso8+bMOhb3xcIDsKK+Sykj54acOofFwgOwor5LKTPnnHjm58XCA7Civkspk+amnDqXxcIDsKK+Symj5sw6BpfFwgOwor5LKfPnnDrG58XCA7CivksqY+Y2jDoXxcIDsKK+SysD55w7lufFwgOwor5LK4Pmppw6h8XCA7Civksrk+cMOpaXxcIDsKK+Syuj5nw6BufFwgOwor5LK9PmTHjm98XCA7Civks4A+ZGnDqXxcIDsKK+Szgz53x45ufFwgOwor5LOFPnpox5B8XCA7Civks4Y+YsOhaXxcIDsKK+SziD5ix45vfFwgOwor5LOJPmTDoG58XCA7Civks44+amnDuXxcIDsKK+Szjz5ndcOsfFwgOwor5LORPnnHknV8XCA7Civks5M+bMeOb3xcIDsKK+SzlD5qacO5fFwgOwor5LOVPmbDs3V8XCA7Civks5Y+bsOoaXxcIDsKK+Szmz55w6BufFwgOwor5LOfPmvDsnV8XCA7Civks6c+aMOzdXxcIDsKK+Szqz5rdcOtfFwgOwor5LOwPmLHjm98XCA7Civks7U+Y2jDrHxcIDsKK+SzuT5rw7J1fFwgOwor5LO6PnnDoG58XCA7Civks7s+Y8OhbnxcIDsKK+Szvz5sw6FufFwgOwor5LSDPm7DoW98XCA7CivktIU+ZsOpbnxcIDsKK+S0jj5sxJtpfFwgOwor5LSPPnnDoG58XCA7CivktJA+YseOb3xcIDsKK+S0kT5kacOpfFwgOwor5LSVPmxpw6h8XCA7CivktKA+eceOb3xcIDsKK+S0pj5yw6lufFwgOwor5LStPmPDoWl8XCA7CivktLA+c2jDunxcIDsKK+S0sT50dcOzfFwgOwor5LS0PnRpw6h8XCA7CivktLc+aMO6bnxcIDsKK+S0uT5ndceSfFwgOwor5LS9PmLDoGl8XCA7CivktL4+Y3XDs3xcIDsKK+S1gD5zdceSfFwgOwor5LWCPnpow618XCA7CivktYk+dMOzdXxcIDsKK+S1iz53xJtpfFwgOwor5LWPPmzHjm98XCA7CivktZg+c2jDoHxcIDsKK+S1mT56aMeOfFwgOwor5LWaPnTHjm98XCA7CivktZ8+Z8eObnxcIDsKK+S1oj5tw6hpfFwgOwor5LWlPnNow6h8XCA7CivktaY+eGnDqHxcIDsKK+S1pz56w6BpfFwgOwor5LWqPmfDuW58XCA7Civkta0+emjDqHxcIDsKK+S1sz53w6hpfFwgOwor5LW0PnnDuW58XCA7CivktbU+emjDoXxcIDsKK+S1vz50acOofFwgOwor5LaDPmjDoW58XCA7Civktok+bGnDunxcIDsKK+S2jD5ww6BvfFwgOwor5LaOPnNow6B8XCA7CivktpQ+Y2jDrXxcIDsKK+S2lj5qw6xufFwgOwor5LadPnFpw6B8XCA7CivktqE+c2jDrXxcIDsKK+S2pD5odcOhfFwgOwor5LanPnnHjm98XCA7Civktqo+Y2jDoXxcIDsKK+S2qz5rx45ufFwgOwor5LauPnnDoW58XCA7CivktrI+bsOhbnxcIDsKK+S2sz55dcOofFwgOwor5La1PmNow618XCA7CivkuII+a8eOb3xcIDsKK+S4hT53w6BufFwgOwor5LiXPnNow6x8XCA7CivkuJ8+ZGnFq3xcIDsKK+S4oD5xacWrfFwgOwor5LijPnnHknV8XCA7CivkuKk+amnFq3xcIDsKK+S4rz5qacOofFwgOwor5Li1PnfDqWl8XCA7CivkuLY+emjHlHxcIDsKK+S5hj5qaceUfFwgOwor5LmaPnnHkG58XCA7CivkuaI+Z8OgaXxcIDsKK+S5oz5kacWrfFwgOwor5LmoPnNox5B8XCA7Civkuas+amnEgXxcIDsKK+S5rT5zaMOtfFwgOwor5Lm0Pnh1w6l8XCA7CivkubU+eceObnxcIDsKK+S5tz5zaMSBfFwgOwor5Lm5PmfEgW58XCA7CivkuoA+Z3XEq3xcIDsKK+S6gT5nxIFufFwgOwor5LqDPmzDrW58XCA7CivkuoU+anXDqXxcIDsKK+S6ij5zaMOsfFwgOwor5LqXPnN1w6x8XCA7Civkupk+Z8OobnxcIDsKK+S6oD50w7N1fFwgOwor5Lq0PnnDsnV8XCA7CivkurY+ZMeObnxcIDsKK+S6uD5kdceSfFwgOwor5Lq5PnfEm2l8XCA7Civku5A+c8eObnxcIDsKK+S7mz50dcWNfFwgOwor5LugPmfDoW58XCA7Civku60+csOobnxcIDsKK+S7rj5qaceOfFwgOwor5LuvPsOhbmd8XCA7Civku7Q+amnDoHxcIDsKK+S7uD5yw6lufFwgOwor5Lu8PmLEq258XCA7CivkvII+cMOoaXxcIDsKK+S8hT5kw7lufFwgOwor5LyGPnfDqG58XCA7CivkvIg+eMeQbnxcIDsKK+S8kj5qw6xufFwgOwor5LyTPmLEk2l8XCA7CivkvJQ+ZMeObnxcIDsKK+S8nD5jdcOsfFwgOwor5LyhPmNoxJN8XCA7CivkvKg+d8OoaXxcIDsKK+S8qT54w6xufFwgOwor5LyzPnDDoG58XCA7CivkvYQ+YsOobnxcIDsKK+S9hT5tw6BpfFwgOwor5L2HPnpow7l8XCA7Civkvao+aHXDrXxcIDsKK+S9tz5oxJtufFwgOwor5L24Pmh1w7N8XCA7Civkvbk+Z3XHkHxcIDsKK+S+gj50dcWNfFwgOwor5L6FPmfEgWl8XCA7CivkvoY+bMOhaXxcIDsKK+S+jD55xKtufFwgOwor5L6WPmzDum58XCA7Civkvpg+Y2jDoHxcIDsKK+S+mT5jaMOsfFwgOwor5L6aPnjDuW58XCA7CivkvqE+amnDoHxcIDsKK+S+oj56w6BpfFwgOwor5L6tPmrHkG58XCA7CivkvrA+Y3XDsnxcIDsKK+S+sz56dcOyfFwgOwor5L64PnNow7l8XCA7Civkvrs+dHXFjXxcIDsKK+S+vT5uw6FufFwgOwor5L6+PmjEgW98XCA7Civkv4A+c2jFq3xcIDsKK+S/kj5ow7lufFwgOwor5L+VPnPDoG58XCA7Civkv5Y+cMeOaXxcIDsKK+S/oD54acOhfFwgOwor5L+iPnhpxat8XCA7Civkv6U+Y2jEk3xcIDsKK+S/qz5sw6FpfFwgOwor5L+2PmNow7l8XCA7Civkv7c+ZsOoaXxcIDsKK+S/uz5iw6hpfFwgOwor5L+9PnjEq258XCA7CivlgIE+Y2jDrXxcIDsKK+WAgz56w6FufFwgOwor5YCEPnnDoW98XCA7CivlgIU+Y3XDrHxcIDsKK+WAhz53x45ufFwgOwor5YCIPmzDoWl8XCA7CivlgJA+c2jFq3xcIDsKK+WAkT5tZW58XCA7CivlgJM+anXDqHxcIDsKK+WAnT5nw6BufFwgOwor5YCgPnN1xKt8XCA7CivlgKI+amnDqXxcIDsKK+WApD56aMOtfFwgOwor5YCrPmzDum58XCA7CivlgLE+aMO5bnxcIDsKK+WAtD5iw6hufFwgOwor5YC3Pm7DoGl8XCA7CivlgLg+Y8eOaXxcIDsKK+WAvT54acOhfFwgOwor5YGJPnfEm2l8XCA7CivlgZA+ecOgbnxcIDsKK+WBlj5jaMSbfFwgOwor5YGYPmvHjm58XCA7CivlgZs+Y2jEgXxcIDsKK+WBnT5iw6hpfFwgOwor5YGgPnnHjm98XCA7CivlgaM+ecSBbnxcIDsKK+WBpD55x5J1fFwgOwor5YGnPnpoxIF8XCA7Civlgas+emjDrHxcIDsKK+WBsD54acOofFwgOwor5YGxPnjDum58XCA7Civlgbg+dMWNdXxcIDsKK+WBuT5iw6hpfFwgOwor5YG8Pmppw6l8XCA7Civlgb0+d8SbaXxcIDsKK+WCgT5zx5J1fFwgOwor5YKCPnpow6x8XCA7CivlgoQ+eGnEgXxcIDsKK+WCij55x5RufFwgOwor5YKLPmfDsnV8XCA7CivlgpA+aMOgb3xcIDsKK+WCkT5qacOpfFwgOwor5YKVPmp1w6l8XCA7Civlgpc+Y2jDuXxcIDsKK+WCmD5zx45ufFwgOwor5YKZPmLDqGl8XCA7Civlgpw+ecOhb3xcIDsKK+WCnT50w6BufFwgOwor5YKePnN1xY18XCA7CivlgqI+amnEgXxcIDsKK+WCpD56w6BpfFwgOwor5YKqPmPEgW58XCA7Civlgqs+bMSbaXxcIDsKK+WCrj5jw6FvfFwgOwor5YK2PmPDsnV8XCA7Civlgro+Y2jDrHxcIDsKK+WCvD5ow6BufFwgOwor5YK/PnnDoG58XCA7Civlg4I+bMOzdXxcIDsKK+WDgz5iw6hpfFwgOwor5YOFPmrHkG58XCA7Civlg4g+bcOgbnxcIDsKK+WDiz50w6BufFwgOwor5YOTPnR1x5B8XCA7Civlg5Q+eseUbnxcIDsKK+WDlz5sw6FvfFwgOwor5YOePnfEm2l8XCA7Civlg6A+ZsSBbnxcIDsKK+WDoT5odcOsfFwgOwor5YOkPmTDoG58XCA7Civlg6g+ZsOobnxcIDsKK+WDqj5qdcOpfFwgOwor5YOvPmzHkG58XCA7Civlg7Y+bceQbnxcIDsKK+WDuD5qw6xufFwgOwor5YO5Pmppw6B8XCA7Civlg78+c8OgaXxcIDsKK+WEgT5qw7lufFwgOwor5YSKPmNow7l8XCA7CivlhI0+c2jHjnxcIDsKK+WEjj56w6BpfFwgOwor5YSQPmLEq258XCA7CivlhJM+dMOhaXxcIDsKK+WElj5sw6FufFwgOwor5YSYPmrHkG58XCA7CivlhKA+bGnDqHxcIDsKK+WEpD5iw6BvfFwgOwor5YSnPnrHjm58XCA7CivlhKg+emjDrXxcIDsKK+WEqj55xY11fFwgOwor5YSrPmjDoW98XCA7CivlhLA+d8SbaXxcIDsKK+WEsj5jaMeUfFwgOwor5YS1PnNoxat8XCA7CivlhLY+aHXDrHxcIDsKK+WEuD5sdcOzfFwgOwor5YS5PnrHjm58XCA7CivlhLo+bnXDs3xcIDsKK+WEvD55x45ufFwgOwor5YS9PmzEm2l8XCA7CivlhYI+esSBbnxcIDsKK+WFij5kdcOsfFwgOwor5YWMPmR1w6x8XCA7CivlhZc+eceObnxcIDsKK+WFmD5zaMeQfFwgOwor5YWZPnNow618XCA7CivlhZ0+ZsSTbnxcIDsKK+WFnj5tw6FvfFwgOwor5YWgPmTFjXV8XCA7CivlhaE+YseOaXxcIDsKK+WFpz5uw6hpfFwgOwor5YaDPm3EgW98XCA7CivlhoQ+cseObnxcIDsKK+WGhz5tx45vfFwgOwor5YaOPmd1x458XCA7CivlhpA+bcOgb3xcIDsKK+WGkz5nw7J1fFwgOwor5YaYPnnDrW58XCA7Civlhpo+a8eObnxcIDsKK+WGnz5zaMOsfFwgOwor5YamPmvDsnV8XCA7Civlhqk+eGnEm3xcIDsKK+WGrT50w6FpfFwgOwor5Ya4PnDDoG58XCA7Civlhro+bceQbnxcIDsKK+WGvj54acOhfFwgOwor5YeBPnNow7l8XCA7Civlh4I+bcSbaXxcIDsKK+WHjj5nw6BufFwgOwor5YeQPnnEq258XCA7Civlh5c+Y3XDrXxcIDsKK+WHmT5kdcOzfFwgOwor5YeaPmrDrG58XCA7Civlh5w+bMeQbnxcIDsKK+WHoj5mw6FufFwgOwor5YejPmbDoW58XCA7Civlh6Y+Y2jHlHxcIDsKK+WHsT5rx45pfFwgOwor5YeyPmfEgW58XCA7Civlh74+aMOhbnxcIDsKK+WIgj5kxIFvfFwgOwor5YiEPnLDqG58XCA7CivliIw+Y8eUbnxcIDsKK+WIkD5kx45ufFwgOwor5YiUPmp1w6l8XCA7CivliKE+bceQbnxcIDsKK+WIpT5iacOpfFwgOwor5YimPmppw6l8XCA7CivliKc+amnDqXxcIDsKK+WIrz5nxJNufFwgOwor5YiyPmt1xKt8XCA7CivliLQ+ZHXDsnxcIDsKK+WIvD5qacOpfFwgOwor5YmFPmzDs3V8XCA7CivliYY+Z8STbnxcIDsKK+WJiT5jdcOyfFwgOwor5YmOPnNow6B8XCA7CivliZI+Y3XDsnxcIDsKK+WJlT5mw6hpfFwgOwor5YmfPmR1xY18XCA7CivliaY+ecSBbnxcIDsKK+WJqD5odcOyfFwgOwor5YmrPmR1w7N8XCA7Civlia4+Z3XHjnxcIDsKK+WJsz56aMSBfFwgOwor5Ym0PmvHjml8XCA7Civlibs+ZsOzdXxcIDsKK+WJvj5rxY11fFwgOwor5YqAPmd1xIF8XCA7CivlioI+anXDqXxcIDsKK+WKgz5odcOgfFwgOwor5YqEPnpow6F8XCA7Civliok+bGnDunxcIDsKK+WKij5ndcOsfFwgOwor5YqMPmd1w6x8XCA7CivlipA+aHXFjXxcIDsKK+WKlT56aMOtfFwgOwor5YqaPnpow7p8XCA7CivliqQ+asOsbnxcIDsKK+WKpj54acOpfFwgOwor5YqnPnpox5B8XCA7Civliq8+emjFq3xcIDsKK+WKtD5sw6FvfFwgOwor5Yq2PmrDrG58XCA7Civliro+bcOzdXxcIDsKK+WKvD5qacOpfFwgOwor5Yq9Pmxpw6h8XCA7Civli4E+asOsbnxcIDsKK+WLgj5ow6FvfFwgOwor5YuEPm3HkG58XCA7Civli4U+Y2jDrHxcIDsKK+WLjz5wx5J1fFwgOwor5YuRPmzDoGl8XCA7Civli5M+a8OgaXxcIDsKK+WLmz54xatufFwgOwor5YuePmzDoW98XCA7Civli6I+c2jDrHxcIDsKK+WLqj5qdcOpfFwgOwor5YurPmbDoW58XCA7Civli68+ZMSBbnxcIDsKK+WLsT5tw6BpfFwgOwor5YuyPnjFq258XCA7Civli7M+eMWrbnxcIDsKK+WLtj5jaMOofFwgOwor5Yu5PmLEgW98XCA7Civli7s+ecO6bnxcIDsKK+WLvD5qacWrfFwgOwor5Yu9PmLDoG98XCA7CivljIM+Z8OgaXxcIDsKK+WMhD5nw6BpfFwgOwor5YyLPnTDoW98XCA7CivljJM+amnDuXxcIDsKK+WMmD5ux45vfFwgOwor5YybPmppw7l8XCA7CivljKc+cWnDqHxcIDsKK+WMqT5mxJNpfFwgOwor5YysPnTDs3V8XCA7CivljK0+Z3XHkHxcIDsKK+WMrz5odcOsfFwgOwor5YywPmTEgW58XCA7CivljLE+a3XDrHxcIDsKK+WMtj5qacO5fFwgOwor5Yy9PnnHjm58XCA7CivljYI+eMOsbnxcIDsKK+WNiz5zaMOsfFwgOwor5Y2NPnfDoG58XCA7CivljZA+d8OgbnxcIDsKK+WNlD54acOpfFwgOwor5Y2YPmTEgW58XCA7Civljag+eGnDqHxcIDsKK+WNqj5qacOpfFwgOwor5Y2sPsOhbmd8XCA7CivljbY+c2jDrHxcIDsKK+WNuz5xdcOofFwgOwor5Y6HPnpow6l8XCA7Civljog+aMeObnxcIDsKK+WOjj56aMeQfFwgOwor5Y6PPnpox458XCA7CivljpQ+emjDrHxcIDsKK+WOmT5zaMOofFwgOwor5Y6cPnp1xKt8XCA7Civljp4+ZsOoaXxcIDsKK+WOpz5qx5BufFwgOwor5Y6qPnHDrW58XCA7Civljqw+Z3XHkHxcIDsKK+WOrT55w6BufFwgOwor5Y6xPmzDoW58XCA7CivljrM+ecOhbnxcIDsKK+WOtD55x45ufFwgOwor5Y64PmzDrW58XCA7Civljrk+cWnDunxcIDsKK+WOvT5sxJtpfFwgOwor5Y+APmh1w6x8XCA7Civlj4M+Y8SBbnxcIDsKK+WPhD5jxIFufFwgOwor5Y+FPmPEgW58XCA7Civlj4c+ZMOgaXxcIDsKK+WPkz5zaMOsfFwgOwor5Y+aPmppx458XCA7Civlj5w+c8eSdXxcIDsKK+WPnT5nw6BvfFwgOwor5Y+ePnfDqGl8XCA7Civlj6E+cnXDrHxcIDsKK+WPpz5ndceOfFwgOwor5Y+0PnFpw7p8XCA7Civlj7o+Y2jHkHxcIDsKK+WQgD5tacSTfFwgOwor5ZCLPmPDuW58XCA7CivlkJk+eHXEk3xcIDsKK+WQoj5xw6xufFwgOwor5ZCjPnHDrG58XCA7CivlkKQ+amnDqHxcIDsKK+WQuj5kxY11fFwgOwor5ZC/PmfDoG98XCA7CivlkYE+asO5bnxcIDsKK+WRhT5tw6lpfFwgOwor5ZGOPmNox5B8XCA7CivlkZE+dMWrbnxcIDsKK+WRmT5ndcWNfFwgOwor5ZGePnNoxKt8XCA7CivlkaA+cMSTbnxcIDsKK+WRoT53xJtufFwgOwor5ZGlPnLHjm58XCA7Civlkak+c2jDrHxcIDsKK+WRqz50acSTfFwgOwor5ZKBPmfDoG58XCA7CivlkoM+dHXFjXxcIDsKK+WShT5ww7J1fFwgOwor5ZKNPmjEgWl8XCA7CivlkpE+cXXDqHxcIDsKK+WSlz56dceSfFwgOwor5ZKfPmNow6B8XCA7CivlkqU+ZGnDqXxcIDsKK+WStT5rdcSBfFwgOwor5ZK3PnTDoW98XCA7Civlkrw+Z3XFjXxcIDsKK+WSvj5sx45vfFwgOwor5ZOMPnDDoGl8XCA7Civlk5U+eXXEm3xcIDsKK+WToD5ow6BvfFwgOwor5ZOjPnDHknV8XCA7Civlk7A+bMOhb3xcIDsKK+WTtj5tacSTfFwgOwor5ZO4PnN1xKt8XCA7Civlk7k+ZsOzdXxcIDsKK+WTuz5ow6BufFwgOwor5ZSAPnnHknV8XCA7CivllIQ+YsOgaXxcIDsKK+WUhT5oxIFufFwgOwor5ZSKPmppw6F8XCA7CivllJI+cWnDunxcIDsKK+WUkz5jaMSTfFwgOwor5ZSXPmTFjXV8XCA7CivllJo+ccOsbnxcIDsKK+WUnj5kx5J1fFwgOwor5ZSmPnNoxIF8XCA7CivllKs+ecOtbnxcIDsKK+WUtj5qacOofFwgOwor5ZS7PmzHjml8XCA7CivllYI+bsOydXxcIDsKK+WViT5sw6FufFwgOwor5ZWNPnTFq258XCA7CivllY8+d8OobnxcIDsKK+WVkT5zaMOgfFwgOwor5ZWXPmTDoG58XCA7CivllZs+Y3XDrHxcIDsKK+WVoD56aMOpfFwgOwor5ZWpPmd1w6B8XCA7Civllas+emjEm3xcIDsKK+WVrz5ndW98XCA7CivllbA+bHXFjXxcIDsKK+WVsT5qdcOpfFwgOwor5ZW/PmTDoG58XCA7CivlloY+emjDqXxcIDsKK+WWjj53xIFpfFwgOwor5ZaQPnnDrG58XCA7CivllpI+esOhbnxcIDsKK+WWkz55xIFvfFwgOwor5ZaXPnnHlG58XCA7CivllqE+d8SbaXxcIDsKK+WWoj5zaMOgfFwgOwor5ZamPm5pw6h8XCA7Civllqs+Y2jEq3xcIDsKK+WWrT55w6BufFwgOwor5ZauPmTEgW58XCA7Civllq8+cMSTbnxcIDsKK+WWsD5jxIFufFwgOwor5Za0PnfEk2l8XCA7Civllrk+a3XDrXxcIDsKK+WWvD5qacOpfFwgOwor5Za/PnPDoG98XCA7Civll4A+aHXDsnxcIDsKK+WXgj55w6FvfFwgOwor5ZePPmNoxIF8XCA7Civll5A+aMOgaXxcIDsKK+WXoD5sdcOyfFwgOwor5ZenPmppxIF8XCA7Civll6k+c3XHknxcIDsKK+WXqj5xw61ufFwgOwor5ZeuPnPDoGl8XCA7Civll7o+Y3XEq3xcIDsKK+WXuz56aMSTfFwgOwor5Ze/PnTHjm58XCA7CivlmIU+a8eOaXxcIDsKK+WYhj50w6BufFwgOwor5ZiHPnPEgW58XCA7CivlmI0+bMOzdXxcIDsKK+WYkj5odcOsfFwgOwor5ZiTPmd1xY18XCA7CivlmKk+aHXEgXxcIDsKK+WYqj5tx45pfFwgOwor5ZirPnLDoW58XCA7CivlmK4+bMOhb3xcIDsKK+WYsz5rdcOsfFwgOwor5Zi3PmjDoW98XCA7CivlmLw+eGnDuXxcIDsKK+WYvT50xIFufFwgOwor5Zi+PnTDoW58XCA7CivlmYA+eMO5bnxcIDsKK+WZgj56x5RufFwgOwor5ZmDPmbEgW58XCA7CivlmYQ+Y2jEq3xcIDsKK+WZhT5odcSrfFwgOwor5ZmGPnrHjm58XCA7CivlmYk+ZMOgbnxcIDsKK+WZiz50xatufFwgOwor5ZmRPmjDoW98XCA7CivlmZU+aHXEq3xcIDsKK+WZlj55w61ufFwgOwor5ZmaPnjDum58XCA7CivlmZs+bmnDqHxcIDsKK+WZnj55x45ufFwgOwor5ZmhPmTEgW58XCA7CivlmaY+eXXEm3xcIDsKK+WZtD5wxJNufFwgOwor5Zm1PmTDoG98XCA7Civlmbc+aMSTbnxcIDsKK+WZuD5kw7lufFwgOwor5Zm+PnnEq258XCA7Civlmb8+enXHkHxcIDsKK+Wagj5sw6BufFwgOwor5ZqEPmh1w7J8XCA7Civlmoc+eGnDoHxcIDsKK+WaiT5kdcWNfFwgOwor5ZqNPmrDrG58XCA7CivlmpY+aHXDrHxcIDsKK+WamD55xY11fFwgOwor5ZqZPm5pw6h8XCA7Civlmpo+ecOtbnxcIDsKK+Wanj56aMOpfFwgOwor5ZqgPmxpw7p8XCA7CivlmqU+ecOgbnxcIDsKK+WarD5ww61ufFwgOwor5ZqyPmR1x5J8XCA7CivlmrQ+ecOhbnxcIDsKK+Wavz5odcOyfFwgOwor5ZuBPm5pw6h8XCA7Civlm4k+bHXFjXxcIDsKK+Wbiz56w6BufFwgOwor5ZuRPnpox5R8XCA7Civlm5I+bMOhbnxcIDsKK+Wbkz5uacOofFwgOwor5ZuYPmh1w618XCA7Civlm5k+ecSrbnxcIDsKK+WbnD5uw61ufFwgOwor5ZupPnnDuW58XCA7Civlm6w+aHXDrXxcIDsKK+Wbrz5ndcOzfFwgOwor5Zu2Pmd1w7N8XCA7Civlm7c+ccWrbnxcIDsKK+Wbuz5ndcOzfFwgOwor5Zu8PnTEgWl8XCA7CivlnIA+Z3XDs3xcIDsKK+WcgT55w61ufFwgOwor5ZyCPmjDuW58XCA7CivlnIU+aMOhbnxcIDsKK+Wchz5sw7pufFwgOwor5ZyLPmd1w7N8XCA7CivlnI0+d8OpaXxcIDsKK+WcmT5sw7zDqHxcIDsKK+Wcmj5odcOsfFwgOwor5Zy2PnFpw6B8XCA7CivlnL8+amnDoXxcIDsKK+WdgT56aMeQfFwgOwor5Z2DPnjFq258XCA7CivlnYQ+dMOzdXxcIDsKK+WdhT5xx5BufFwgOwor5Z2GPmbDqW58XCA7CivlnYk+dMO6bnxcIDsKK+Wdiz5mw6hufFwgOwor5Z2iPnDHjm58XCA7Civlnac+emjEq3xcIDsKK+WdrD5ndcOgfFwgOwor5Z2uPnTDoWl8XCA7CivlnbU+cWnFq3xcIDsKK+WduT54dcOofFwgOwor5Z2+Pnpow7l8XCA7CivlnoE+emjDrHxcIDsKK+WeiT5ww6FvfFwgOwor5Z6RPmNox5B8XCA7CivlnpQ+ecSrbnxcIDsKK+WelT5ow7J1fFwgOwor5Z6WPmR1xKt8XCA7Civlnpo+ecOhb3xcIDsKK+WenD5kdceSfFwgOwor5Z6dPmd1x5B8XCA7Civlnp4+Y2jDoXxcIDsKK+WepT54acOpfFwgOwor5Z66PnDEk2l8XCA7Civlnr0+ecOsbnxcIDsKK+Wevj5ow6BufFwgOwor5Z+BPmPDqW58XCA7Civln4Y+cXXDqHxcIDsKK+WfiD54w7lufFwgOwor5Z+JPmppw6F8XCA7Civln5A+asSrbnxcIDsKK+WfkT56aMOpfFwgOwor5Z+TPmxpw6h8XCA7Civln6M+c3XDrHxcIDsKK+Wfpj53x45ufFwgOwor5Z+oPmzHlG58XCA7Civln64+dMOgbnxcIDsKK+WfsD5jw6BpfFwgOwor5Z+xPnNow7p8XCA7Civln7M+a8eObnxcIDsKK+WftT5kdceSfFwgOwor5Z+3Pnpow618XCA7CivloIM+a8WrbnxcIDsKK+Wglj5ux45vfFwgOwor5aCaPmjDum58XCA7CivloJ0+Z3XFjXxcIDsKK+Wgoj5ix45vfFwgOwor5aCmPmppxJN8XCA7CivloK8+ecOhb3xcIDsKK+WgsT5iw6BvfFwgOwor5aCzPm3DqWl8XCA7CivloLY+dHXDs3xcIDsKK+Wgtz55w6xufFwgOwor5aC6Pmppw6h8XCA7CivloY8+a8eOaXxcIDsKK+Whkj5zaMOtfFwgOwor5aGZPnF1w6h8XCA7CivloaA+ZHXEq3xcIDsKK+WhpD54xatufFwgOwor5aGpPnnDoW58XCA7Civloao+a8eObnxcIDsKK+WhrT53xJNufFwgOwor5aGuPnhpw6h8XCA7Civloa8+bGnDuXxcIDsKK+Whuj5tw6lpfFwgOwor5aG/PmzHknV8XCA7Civloog+a8OgbnxcIDsKK+WijD56aMSrfFwgOwor5aKOPmd1xY18XCA7CivlopA+aseQbnxcIDsKK+WilD5jdcSrfFwgOwor5aKVPnnDoG58XCA7CivloqQ+dHXDrXxcIDsKK+Wipj5mw6FufFwgOwor5aKnPnF1w6h8XCA7Civloqo+ZMWrbnxcIDsKK+Wiqz56xatufFwgOwor5aKuPmR1w7J8XCA7Civloq8+ZHXDsnxcIDsKK+WisD50w6FufFwgOwor5aKzPmbDqW58XCA7CivlorU+dMOhbnxcIDsKK+Wivj5rxJtufFwgOwor5aOHPnTDoW58XCA7Civlo4g+bMeObnxcIDsKK+Wjjj54xatufFwgOwor5aOPPmjHjm58XCA7Civlo5Q+ZMeOb3xcIDsKK+WjmD5sxJtpfFwgOwor5aObPnnDoW58XCA7Civlo5w+dMOhbnxcIDsKK+WjnT53w6lpfFwgOwor5aOhPnJ1w6x8XCA7Civlo6M+bMOtbnxcIDsKK+Wjpj54xatufFwgOwor5aOnPnnDoW58XCA7Civlo6g+bMOpaXxcIDsKK+Wjsj5tw6BpfFwgOwor5aO4PmvHlG58XCA7Civlo7w+a8eUbnxcIDsKK+Wjvz56xatufFwgOwor5aSKPnN1xKt8XCA7CivlpIs+ccWrbnxcIDsKK+Wkjj5qaceOfFwgOwor5aSSPm7DoW98XCA7CivlpJM+eGnDoHxcIDsKK+WkmD5tx45vfFwgOwor5aSbPmR1xY18XCA7CivlpKA+Z8OydXxcIDsKK+Wkoz5kw6BpfFwgOwor5aSwPmfHjm98XCA7CivlpLI+YsSbbnxcIDsKK+Wksz50w6BpfFwgOwor5aS1Pmppw6F8XCA7CivlpL0+ecO5bnxcIDsKK+Wkvj5qacOhfFwgOwor5aWKPnhpw6l8XCA7CivlpZI+a8SBaXxcIDsKK+Wlkz5zaMSTfFwgOwor5aWZPmLEm258XCA7CivlpZw+ZsSbaXxcIDsKK+Wlnj54w7lufFwgOwor5aWkPnDHjm58XCA7Civlpao+ZHXDs3xcIDsKK+Wlqz55xatufFwgOwor5aWtPnNow6x8XCA7Civlpa4+ZsOobnxcIDsKK+Wlrz5odcOyfFwgOwor5aWyPmR1x5J8XCA7Civlpbo+amnHlHxcIDsKK+Wluz5uw6FufFwgOwor5aW8PmNow6B8XCA7Civlpb8+ZsOgbnxcIDsKK+WmiT5kxIFufFwgOwor5aaOPnhpw6h8XCA7Civlpo8+d8OobnxcIDsKK+WmmD55w7pufFwgOwor5aaaPnDEk2l8XCA7Civlppw+eXXDqHxcIDsKK+Wmnz55w6BufFwgOwor5aahPnjEq258XCA7CivlpqI+ZsOpbnxcIDsKK+Wmsz5ux45pfFwgOwor5aa1PnTHknV8XCA7Civlprc+emjDrXxcIDsKK+WnhD5tw61ufFwgOwor5aeFPmLDoG58XCA7Civlp4w+cseObnxcIDsKK+Wnjz5tw6FufFwgOwor5aeZPnLDqG58XCA7Civlp58+Z8SBaXxcIDsKK+WnoT5rdcOyfFwgOwor5aekPmfDsnV8XCA7Civlp6o+emjDrXxcIDsKK+WnsD5qxatufFwgOwor5aexPmt1xIF8XCA7Civlp7I+ecOgbnxcIDsKK+WntD5sacOofFwgOwor5ae1PnDDqGl8XCA7Civlp7Y+eceObnxcIDsKK+Wntz55w7J1fFwgOwor5ae4PnnDoW58XCA7Civlp7w+Y2jHkHxcIDsKK+WnvT5ndceQfFwgOwor5aiVPmzDoGl8XCA7CivlqJo+bsOhbnxcIDsKK+WonT5wxJNpfFwgOwor5aiePm7Em2l8XCA7CivlqKE+emjDrHxcIDsKK+Wooj5ow6FufFwgOwor5aimPnDDrW58XCA7CivlqKc+dHXDrHxcIDsKK+WoqD5ow6BufFwgOwor5airPnnDoW58XCA7CivlqK4+ecOhbnxcIDsKK+WpgT5sw7N1fFwgOwor5amEPnDHknV8XCA7CivlqYc+Y8eOaXxcIDsKK+WpjD5zaMeUfFwgOwor5amOPmh1xKt8XCA7CivlqZI+dMOhbnxcIDsKK+Wpkz5mxJNpfFwgOwor5amUPnfEk2l8XCA7CivlqaM+ecSrbnxcIDsKK+WpqD5sw7pufFwgOwor5ampPnnDoG58XCA7Civlqas+a8WrbnxcIDsKK+WprD55w61ufFwgOwor5amzPmh1w6B8XCA7Civlqbk+eceOb3xcIDsKK+Wpuz5uw6BufFwgOwor5am8PnJ1w7J8XCA7Civlqb0+amnHjnxcIDsKK+Wpvj50xY11fFwgOwor5aqBPnfEk2l8XCA7CivlqoM+csOzdXxcIDsKK+WqhD5txJtpfFwgOwor5aqFPmTEgW58XCA7Civlqoc+ccSrbnxcIDsKK+WqiD5odcSrfFwgOwor5aqMPm3DoW98XCA7Civlqo4+amnEm3xcIDsKK+WqmD5qacSTfFwgOwor5aqZPnfEk2l8XCA7Civlqp0+cWnFq3xcIDsKK+Wqnz54acOofFwgOwor5aqgPnR1x5J8XCA7CivlqqI+bcOgb3xcIDsKK+Wqoz5yx45ufFwgOwor5aqmPnfDqGl8XCA7Civlqqg+amnDuXxcIDsKK+WqrD5ix45vfFwgOwor5aquPnTFjXV8XCA7Civlqq8+Z3XHkHxcIDsKK+WqsD56xY11fFwgOwor5aqxPnnDoW98XCA7Civlqrk+bGnDunxcIDsKK+Wquj5txJtpfFwgOwor5aq7PnDDoW58XCA7Civlqr8+a3XDrHxcIDsKK+WrgD5xw61ufFwgOwor5auFPmNoxIF8XCA7Civlq40+dMSBb3xcIDsKK+WrkD5ux45vfFwgOwor5auRPmLDoW98XCA7Civlq5o+bcOgbnxcIDsKK+Wroj5ndcSrfFwgOwor5aukPmrDrG58XCA7Civlq6g+aMSBbnxcIDsKK+Wrqj5sw6BvfFwgOwor5ausPnpoxJN8XCA7Civlq7A+bsOobnxcIDsKK+Wrsz5wacOofFwgOwor5au3PnR1x5J8XCA7Civlq7k+bcOhb3xcIDsKK+Wrvz5odcOgfFwgOwor5ayAPmd1xKt8XCA7CivlrII+emjEq3xcIDsKK+WshT5odcOhfFwgOwor5ayHPmh1w6x8XCA7CivlrIg+csOhb3xcIDsKK+Wsij55w6BufFwgOwor5ayNPm3Em2l8XCA7CivlrI4+ZsOgbnxcIDsKK+Wsjz5mxIFufFwgOwor5aySPnfDqGl8XCA7CivlrJU+c2jDrHxcIDsKK+WsmD5zdcOsfFwgOwor5aycPnjEq258XCA7CivlrKA+Y8OhbnxcIDsKK+Wspz5qw6xufFwgOwor5ayqPnDDrW58XCA7CivlrK0+bseOaXxcIDsKK+Wsrj55xIFufFwgOwor5ayxPmPDoW58XCA7CivlrLw+bGnHlHxcIDsKK+Wsvj5sx45ufFwgOwor5ay/PnnDoG58XCA7CivlrYQ+bMeObnxcIDsKK+WtjT55w6FufFwgOwor5a2OPnpox5R8XCA7CivlrY8+bMeObnxcIDsKK+Wtkj5qdcOpfFwgOwor5a2ePnjDrG58XCA7CivlraE+dMSBaXxcIDsKK+Wtqz5zxatufFwgOwor5a2tPmPDoG58XCA7Civlrbg+eHXDqXxcIDsKK+Wtuz5sw6FpfFwgOwor5a28Pm5pw6h8XCA7CivlroI+dMSBaXxcIDsKK+WujT5yw7J1fFwgOwor5a6OPnnHjm98XCA7Civlrp8+c2jDrXxcIDsKK+WuqT5zaMeQfFwgOwor5a6tPnHDum58XCA7CivlrrE+emjDoHxcIDsKK+Wusj5ix45vfFwgOwor5a63PmLDrG58XCA7Civlrrw+a8OydXxcIDsKK+WvgD5jw6BpfFwgOwor5a+BPnrHjm58XCA7Civlr4k+cXXDqHxcIDsKK+WvkT5xx5BufFwgOwor5a+UPnNow618XCA7Civlr5Y+ccOsbnxcIDsKK+WvmD56aMOsfFwgOwor5a+aPmLHjm98XCA7Civlr6I+cceQbnxcIDsKK+Wvpj5zaMOtfFwgOwor5a+qPnfEm2l8XCA7Civlr6s+eGnEm3xcIDsKK+WvrT5odcOsfFwgOwor5a+vPmrDuW58XCA7Civlr7M+YseOb3xcIDsKK+WvtD5xw6xufFwgOwor5a+2PmLHjm98XCA7Civlr74+ZHXDrHxcIDsKK+Wwiz54w7pufFwgOwor5bCMPmTDoG98XCA7CivlsI0+ZHXDrHxcIDsKK+Wwjj5kx45vfFwgOwor5bCXPnNow7p8XCA7CivlsKk+a3XHkHxcIDsKK+WwrT55w6FvfFwgOwor5bCuPmR1w7J8XCA7CivlsK8+a3XDrHxcIDsKK+WwsD5jaMSbfFwgOwor5bCyPmfEgW58XCA7CivlsLU+dHXDrXxcIDsKK+Wwtj5nxIFufFwgOwor5bC3PmfEgW58XCA7CivlsYY+amnDqHxcIDsKK+WxjT5zaMSrfFwgOwor5bGYPm3Hjm58XCA7CivlsZo+bMOydXxcIDsKK+WxnT5mw6hpfFwgOwor5bGfPnhpw6h8XCA7Civlsac+eGnDqHxcIDsKK+WxqT5qdcOpfFwgOwor5bGrPmp1w6l8XCA7Civlsaw+c2jHlHxcIDsKK+Wxrj5jaMOofFwgOwor5bG7PnLDqG58XCA7Civlsb0+aMOgbnxcIDsKK+WygD5jaMWrfFwgOwor5bKEPnl1w6h8XCA7CivlsoU+YseObnxcIDsKK+Wyhj55x45vfFwgOwor5bKHPsOhbmd8XCA7Civlsoo+amnDqXxcIDsKK+Wyjj5mxJNufFwgOwor5bKVPmppw6h8XCA7Civlsp0+enXDsnxcIDsKK+Wynj56dcOyfFwgOwor5bKkPnh1w6h8XCA7CivlsqU+YsSTaXxcIDsKK+Wyrj50dcOzfFwgOwor5bKvPnDEk2l8XCA7CivlsrA+eceSdXxcIDsKK+Wyuz5jaMOtfFwgOwor5bOAPnhpw7l8XCA7Civls4M+eHXDqXxcIDsKK+WziD5sdcOyfFwgOwor5bOMPmRpw6l8XCA7Civls5A+Z8SBaXxcIDsKK+WzlT5zaMOtfFwgOwor5bOXPnfDqWl8XCA7Civls58+ecOydXxcIDsKK+Wzoz55w6FvfFwgOwor5bOuPnHFq258XCA7Civls7E+bsOhb3xcIDsKK+Wzsz55w7N1fFwgOwor5bO2PmTHjm98XCA7Civls7w+aMOgb3xcIDsKK+WzvT54acOhfFwgOwor5bO+PnnEq258XCA7CivltIE+a8eObnxcIDsKK+W0hT5xdcOofFwgOwor5bSKPmzEq258XCA7CivltIs+aHXDoXxcIDsKK+W0jT5sw6FpfFwgOwor5bSPPm3DrW58XCA7CivltJA+a8WrbnxcIDsKK+W0kT5rxatufFwgOwor5bSYPmzDum58XCA7CivltJk+bMO6bnxcIDsKK+W0nD5kdcWNfFwgOwor5bSfPnnDrW58XCA7CivltKE+aMOhbnxcIDsKK+W0oz53xJtpfFwgOwor5bSoPmppw6l8XCA7CivltKs+anXDqXxcIDsKK+W0rz55w61ufFwgOwor5bS3PnFpw7p8XCA7CivltLg+ZMO5bnxcIDsKK+W0uz56aMOsfFwgOwor5bS8PnNow6x8XCA7CivltL4+eceOb3xcIDsKK+W1gD56aMO5fFwgOwor5bWBPmvEgW58XCA7CivltYM+eceObnxcIDsKK+W1hD5txJtpfFwgOwor5bWFPmfEgW58XCA7CivltZA+bMOhbnxcIDsKK+W1kT5qdcOpfFwgOwor5bWSPnnDoW58XCA7CivltZM+ecOhbnxcIDsKK+W1lD53xJtpfFwgOwor5bWWPmNow6F8XCA7CivltZc+c3XDrHxcIDsKK+W1mj5xxKtufFwgOwor5bWfPmR1xKt8XCA7CivltaU+amnDqXxcIDsKK+W1pz5sacO6fFwgOwor5bWyPm5pw6h8XCA7CivltbM+Y3XDs3xcIDsKK+W1vT5kacOpfFwgOwor5bW+PmPEk258XCA7CivltoE+bMeSdXxcIDsKK+W2hj5jw6FvfFwgOwor5baJPnp1xKt8XCA7Civltoo+enXHkHxcIDsKK+W2iz5kx45vfFwgOwor5baMPmTHjm98XCA7CivltpQ+ccSrbnxcIDsKK+W2lj55x45ufFwgOwor5baXPmzDoW98XCA7Civltpw+asSrbnxcIDsKK+W2nj5kdcOyfFwgOwor5bafPnrFq258XCA7CivltqE+Z3XDrHxcIDsKK+W2oj55w6FvfFwgOwor5bakPnnDoW98XCA7CivltqU+anXDqXxcIDsKK+W2qD54dcOpfFwgOwor5bapPm7DoW98XCA7CivltrA+eGnDqHxcIDsKK+W2tT56dceQfFwgOwor5ba5PmTHjm98XCA7Civltr0+eXXDqHxcIDsKK+W2vj55x5BufFwgOwor5beAPmppxJN8XCA7Civlt4I+c3XHkHxcIDsKK+W3iz5rdcSrfFwgOwor5beMPnnDoW58XCA7Civlt44+a8WrbnxcIDsKK+W3lj55w6FufFwgOwor5beXPnnDoW58XCA7Civlt5g+eceObnxcIDsKK+W3mT5uw6FvfFwgOwor5beaPnnHjm58XCA7Civlt5w+Z3XDrHxcIDsKK+W3pD5sacSTfFwgOwor5bevPnFpw7p8XCA7Civlt7A+cWnDunxcIDsKK+W3tT56aMSrfFwgOwor5be5PmrHkG58XCA7Civlt7o+eMO5bnxcIDsKK+W4hz5uacOofFwgOwor5biJPmbEk258XCA7CivluIs+emjHkHxcIDsKK+W4jj5kw6BufFwgOwor5biSPmTDoGl8XCA7CivluKI+cWnDoHxcIDsKK+W4qz5zaMSrfFwgOwor5bisPnHDum58XCA7CivluK8+ZMOgaXxcIDsKK+W4sD5ndcSrfFwgOwor5bi0PnNoxIF8XCA7CivluLU+amnDoHxcIDsKK+W4tj5kw6BpfFwgOwor5bi5PnNow6B8XCA7CivluL8+aMOzdXxcIDsKK+W5gz53w6lpfFwgOwor5bmLPnDDoW58XCA7CivluY0+ZMSBb3xcIDsKK+W5jz5qacSBfFwgOwor5bmRPmh1xKt8XCA7CivluZc+Z3XDs3xcIDsKK+W5nz56aMOsfFwgOwor5bmpPmbDqW58XCA7Civlua0+bWnDqHxcIDsKK+W5rj5jaMO6fFwgOwor5bmvPmppw6l8XCA7CivlubE+bMOhbnxcIDsKK+W5uT5nw6BufFwgOwor5bqIPnHDrW58XCA7Civluok+ZMO5bnxcIDsKK+W6jT5iw6BpfFwgOwor5bqOPmppw6h8XCA7CivluqI+emjDrHxcIDsKK+W6pD56aMOsfFwgOwor5bqqPmd1x5B8XCA7Civluq4+ecOzdXxcIDsKK+W6sj5sw6FpfFwgOwor5bq7PnNow7l8XCA7Civlu4A+c8WNdXxcIDsKK+W7gz5mw6hpfFwgOwor5buEPmppw7l8XCA7Civlu4Y+aHXDrHxcIDsKK+W7hz5sacO5fFwgOwor5buIPnNow6B8XCA7Civlu4s+c8WNdXxcIDsKK+W7jT5qx5BufFwgOwor5buPPmppw7l8XCA7Civlu5A+amnDuXxcIDsKK+W7lD5sw7N1fFwgOwor5buVPnnDrG58XCA7Civlu5c+ZMOgaXxcIDsKK+W7mj5jaMO6fFwgOwor5buePnjEq258XCA7Civlu6I+ZsOoaXxcIDsKK+W7tD55x5BufFwgOwor5bu1PnjDum58XCA7Civlu7s+aHXDrXxcIDsKK+W7vD5ux45pfFwgOwor5bu9Pmh1w618XCA7CivlvIU+ZsOpbnxcIDsKK+W8hz55x45ufFwgOwor5byOPnPEgW58XCA7CivlvJI+c2jDrHxcIDsKK+W8mj50dcOtfFwgOwor5byhPmp1w6l8XCA7CivlvKI+dMSBb3xcIDsKK+W8tD5kxatufFwgOwor5by9PnNow6h8XCA7CivlvL4+ZMOgbnxcIDsKK+W9hD5rxY11fFwgOwor5b2GPmJpw6h8XCA7CivlvYg+ZMOgbnxcIDsKK+W9jT5rdcOyfFwgOwor5b2OPnfEgW58XCA7CivlvY8+anXDqXxcIDsKK+W9mT5odcOsfFwgOwor5b2aPmh1w6x8XCA7CivlvZ8+aHXDsnxcIDsKK+W9oD5odcOyfFwgOwor5b2jPnfDqW58XCA7CivlvaU+ecOgbnxcIDsKK+W9qD5jaMSrfFwgOwor5b2yPmNoxKt8XCA7CivlvbU+dHXHknxcIDsKK+W9vT5jaMOtfFwgOwor5b6PPnpow6x8XCA7Civlvp0+emjDrHxcIDsKK+W+nz5sw6FpfFwgOwor5b6gPmzDoWl8XCA7CivlvqI+ZsOydXxcIDsKK+W+oz5qacOofFwgOwor5b6lPmNow618XCA7CivlvqY+amnHjnxcIDsKK+W+qz53xJtpfFwgOwor5b6yPmNow618XCA7CivlvrY+YmnDqHxcIDsKK+W+uT5jaMOofFwgOwor5b67PnfDqGl8XCA7Civlvr4+bcOpaXxcIDsKK+W/gT5iw6BvfFwgOwor5b+IPnLDqW58XCA7Civlv4s+Z8eOaXxcIDsKK+W/jj5yw6lufFwgOwor5b+TPmfEgW58XCA7Civlv5U+c2jDrHxcIDsKK+W/mz5mw6FufFwgOwor5b+ePm3DrW58XCA7Civlv58+bcOtbnxcIDsKK+W/qD53w6BufFwgOwor5b+uPnpow6x8XCA7Civlv7A+Y3XDrHxcIDsKK+W/sj50w6BpfFwgOwor5b+zPnTDum58XCA7Civlv7Q+bmnHlHxcIDsKK+W/tj5ow7pufFwgOwor5b+5PnPEgWl8XCA7CivmgIk+YseOb3xcIDsKK+aAiz5tw61ufFwgOwor5oCMPnDEk2l8XCA7CivmgJA+a8OydXxcIDsKK+aAkT5iw6BufFwgOwor5oCTPm7DoW98XCA7CivmgJc+dGnEk3xcIDsKK+aAoz55w7N1fFwgOwor5oCuPnnFjXV8XCA7CivmgLk+dMSBbnxcIDsKK+aBgD5jaMeQfFwgOwor5oGFPmzHjm98XCA7CivmgYk+emjHkHxcIDsKK+aBij54acOpfFwgOwor5oGOPmRpw6l8XCA7CivmgY8+aMeOb3xcIDsKK+aBkT5ndceQfFwgOwor5oGXPmt1x458XCA7CivmgZg+cWnFq3xcIDsKK+aBmz5odcOtfFwgOwor5oGcPmNow6x8XCA7CivmgZ0+amnDoXxcIDsKK+aBoT5sw6xufFwgOwor5oGlPmNox5B8XCA7CivmgbE+eXXDqHxcIDsKK+aBtT5odcOsfFwgOwor5oKFPnl1w6h8XCA7Civmgog+amnDqHxcIDsKK+aCij56aMOpfFwgOwor5oKLPmzDrG58XCA7Civmgo4+aMOgb3xcIDsKK+aCjz5xacOofFwgOwor5oKXPm3DoW58XCA7Civmgpg+aHXEq3xcIDsKK+aCqT5ux45vfFwgOwor5oKzPmR1w7N8XCA7CivmgrY+bcSTbnxcIDsKK+aDgD5sw7pufFwgOwor5oOCPmvHjm58XCA7Civmg4M+a8WrbnxcIDsKK+aDhz5kxatufFwgOwor5oOIPmd1x5J8XCA7Civmg40+asSrbnxcIDsKK+aDjz5sw61ufFwgOwor5oOQPmTDoG58XCA7Civmg5Q+dMOhbnxcIDsKK+aDlz5uacSTfFwgOwor5oObPmjFq258XCA7Civmg54+eMSrbnxcIDsKK+aDoj5ydceQfFwgOwor5oOjPmLEm2l8XCA7Civmg7E+bseOb3xcIDsKK+aDsj55w7lufFwgOwor5oO1PmRpw6h8XCA7Civmg70+aMWrbnxcIDsKK+aEgj5iw6hpfFwgOwor5oSEPnTFjXV8XCA7CivmhIc+d8SbaXxcIDsKK+aEkj5rw6BpfFwgOwor5oSUPnnEq258XCA7CivmhJc+bcOydXxcIDsKK+aEnD5xacOofFwgOwor5oSdPnnHjm58XCA7CivmhJ4+bnXDsnxcIDsKK+aEoj5zxIFpfFwgOwor5oSoPnF1w6h8XCA7CivmhKo+ecO6bnxcIDsKK+aErj55w6FvfFwgOwor5oS2Pnhpw6l8XCA7CivmhLc+a8eOaXxcIDsKK+aEuj5jx45vfFwgOwor5oS7PnPDuW58XCA7CivmhL4+a8OgaXxcIDsKK+aFgD54acOpfFwgOwor5oWBPmjDuW58XCA7CivmhYU+c8SBb3xcIDsKK+aFhj50xIFvfFwgOwor5oWHPnnEq258XCA7CivmhYs+dMOgaXxcIDsKK+aFjT55w7lufFwgOwor5oWWPmd1w7N8XCA7CivmhZc+Y2jDrHxcIDsKK+aFmD5jx45ufFwgOwor5oWZPmPDoW58XCA7CivmhZo+Y8OhbnxcIDsKK+aFmz5jdcOtfFwgOwor5oWcPm3HkG58XCA7CivmhZ4+Y8Ogb3xcIDsKK+aFpD5xdcOofFwgOwor5oWlPnrDoG98XCA7CivmhaY+asOsbnxcIDsKK+aFrD5qx5BufFwgOwor5oWtPnnDrG58XCA7CivmhbI+bcOhbnxcIDsKK+aFtD56aMOpfFwgOwor5oW5Pnpow618XCA7Civmhbo+bMOzdXxcIDsKK+aGgj55xY11fFwgOwor5oaEPnpow6x8XCA7Civmhoc+ZsSBbnxcIDsKK+aGij5iw6hpfFwgOwor5oaPPmNow6x8XCA7CivmhpI+a3XDrHxcIDsKK+aGkz5odcOsfFwgOwor5oaWPnnDrG58XCA7Civmhpc+ecOsbnxcIDsKK+aGmj5kw6BufFwgOwor5oabPnTDoW58XCA7Civmhpw+ZHXHknxcIDsKK+aGnj5kdcOsfFwgOwor5oagPmp1w6l8XCA7CivmhqM+ZsOhbnxcIDsKK+aGpD5mw6hufFwgOwor5oalPmzDoW98XCA7CivmhqY+bMOgb3xcIDsKK+aGqz5tx5BufFwgOwor5oavPmPHjm58XCA7CivmhrA+anXDqXxcIDsKK+aGsz50x45ufFwgOwor5oa5Pm7DoW98XCA7Civmhro+ZMOgbnxcIDsKK+aGuz50x45ufFwgOwor5oeAPnfDoGl8XCA7Civmh4M+ccOtbnxcIDsKK+aHhD5xw61ufFwgOwor5oeGPmPHjm98XCA7Civmh4c+a8SbbnxcIDsKK+aHjT5sx5BufFwgOwor5oePPmrDuW58XCA7Civmh5U+ecSBbnxcIDsKK+aHlj5ndcSBfFwgOwor5oeXPnhpw6B8XCA7Civmh5g+Y2jDrHxcIDsKK+aHmj55w6xufFwgOwor5oebPmTEgWl8XCA7Civmh58+ZHXDrHxcIDsKK+aHoj5sw6FufFwgOwor5oejPm3DqG58XCA7Civmh6U+emjDrHxcIDsKK+aHpz5udcOyfFwgOwor5oeoPnnEgW58XCA7Civmh6s+emjDrXxcIDsKK+aHrj55x5J1fFwgOwor5oewPmxpw7p8XCA7Civmh7E+bWnDqHxcIDsKK+aHtj5sx45ufFwgOwor5oe+PnNow6h8XCA7CivmiIE+bseObnxcIDsKK+aIhD5qdcOpfFwgOwor5oiJPnl1w6h8XCA7CivmiJw+ZGnDqXxcIDsKK+aInT56w6lpfFwgOwor5oiePmppw6F8XCA7CivmiKA+c2jDrHxcIDsKK+aIoz5rdcOtfFwgOwor5oikPmfDoGl8XCA7CivmiK0+eceObnxcIDsKK+aIuj5zaMOsfFwgOwor5oi8Pm3Hjm98XCA7CivmiYo+eceObnxcIDsKK+aJlz56w6BpfFwgOwor5omePmfHjm58XCA7CivmiaA+Y2jEgXxcIDsKK+aJoT5jaMeQfFwgOwor5omlPnR1xY18XCA7Civmiag+csOobnxcIDsKK+aJtD5qacOhfFwgOwor5om6Pnpox5B8XCA7Civmib0+ZMO5bnxcIDsKK+aKgT55x45ufFwgOwor5oqGPnfDqG58XCA7Civmios+ccOsbnxcIDsKK+aKjT53w6BufFwgOwor5oqOPnnHlG58XCA7Civmio8+d8OhbnxcIDsKK+aKlD5ww7N1fFwgOwor5oqnPnpox5B8XCA7Civmiqk+dMSBbnxcIDsKK+aKrT55x45vfFwgOwor5oqvPnpoxIF8XCA7CivmirY+Y2jDrHxcIDsKK+aLgD5jaMO5fFwgOwor5ouBPmppxIF8XCA7Civmi4M+emjDoHxcIDsKK+aLiz5wxIFvfFwgOwor5ouVPm5pw7l8XCA7Civmi50+YsOgaXxcIDsKK+aLoT5rdcOyfFwgOwor5ouqPmt1w7J8XCA7Civmi6s+aMOpbnxcIDsKK+aLsD5ux5BufFwgOwor5ou1PmPDum58XCA7Civmi7g+Y2jHkHxcIDsKK+aLuT54acOpfFwgOwor5ou7Pmh1xKt8XCA7CivmjIM+emjDrHxcIDsKK+aMhD5rdcOyfFwgOwor5oyFPmR1x5J8XCA7CivmjIY+ZHXHknxcIDsKK+aMkj5sacOofFwgOwor5oyTPnpoxIF8XCA7CivmjJU+ZGnDqXxcIDsKK+aMlz5qdcOpfFwgOwor5oymPnjDum58XCA7CivmjLE+c3XFjXxcIDsKK+aMtD5txJtpfFwgOwor5oy8Pm51w7J8XCA7CivmjL4+amnEgXxcIDsKK+aMvz5jaMSBfFwgOwor5o2DPmrDuW58XCA7CivmjYQ+amnDuXxcIDsKK+aNhz5odcOyfFwgOwor5o2KPnDDs3V8XCA7CivmjZE+Z3XEgXxcIDsKK+aNlD5qdcOpfFwgOwor5o2YPnrDuW58XCA7CivmjZw+c8WNdXxcIDsKK+aNnT50dcWNfFwgOwor5o2lPnfDoG58XCA7CivmjaY+ccOtbnxcIDsKK+aNqD5zaMSbfFwgOwor5o2rPm3DqW58XCA7Civmja8+ZMOhb3xcIDsKK+aNuD5uacSTfFwgOwor5o25PmLDqG58XCA7Civmjbw+bnXDs3xcIDsKK+aNvj5zw6BvfFwgOwor5o6DPnPHjm98XCA7CivmjoQ+bMO6bnxcIDsKK+aOhT5kdcWNfFwgOwor5o6NPmfHlG58XCA7CivmjpM+c2jDunxcIDsKK+aOmz5ndcOgfFwgOwor5o6dPmh1w7J8XCA7Civmjp8+bMO8xJt8XCA7CivmjqE+Y8eOaXxcIDsKK+aOqz56xY11fFwgOwor5o6vPmvDqG58XCA7CivmjrI+amnEk3xcIDsKK+aOuz5zxIFvfFwgOwor5o6/Pm51w7J8XCA7Civmj4I+amnFq3xcIDsKK+aPhT55w6FufFwgOwor5o+HPm7Hjm58XCA7Civmj4s+d8STaXxcIDsKK+aPjD5zxIFpfFwgOwor5o+RPm5pxJN8XCA7Civmj5M+c2jDrHxcIDsKK+aPnD55x45ufFwgOwor5o+rPmppxat8XCA7Civmj64+aHXEq3xcIDsKK+aPsz54acSTfFwgOwor5o+3PmNoxIF8XCA7Civmj7k+YsSTaXxcIDsKK+aPuj55w6FvfFwgOwor5o++PnfDqG58XCA7CivmkIY+Z8OydXxcIDsKK+aQhz5xw6xufFwgOwor5pCJPnF1w6h8XCA7CivmkIs+Y2jHkHxcIDsKK+aQjT5zx5RufFwgOwor5pCOPnPFq258XCA7CivmkJY+ecOhb3xcIDsKK+aQlz5kx45vfFwgOwor5pCYPnpoxKt8XCA7CivmkJo+eGnDqXxcIDsKK+aQnT5xaceUfFwgOwor5pCiPmrDrG58XCA7CivmkKM+bWnDqHxcIDsKK+aQqT5qacOpfFwgOwor5pCrPnDDoW58XCA7CivmkK8+dMSBb3xcIDsKK+aQsT5odcOhfFwgOwor5pCzPnhpw6F8XCA7CivmkLU+d8OobnxcIDsKK+aQuz5uacOofFwgOwor5pC+Pnpow6B8XCA7CivmkYI+c2jDqHxcIDsKK+aRiT5zxY11fFwgOwor5pGNPnN1xY18XCA7CivmkZE+Z3XDs3xcIDsKK+aRlz5zxY11fFwgOwor5pGbPmNoxKt8XCA7CivmkZ8+bMWNdXxcIDsKK+aRoT5nw6BpfFwgOwor5pGjPnpoxIF8XCA7CivmkaY+aHXDoHxcIDsKK+aRqz5ndcSrfFwgOwor5pGvPnpow6x8XCA7CivmkbA+bmnDqHxcIDsKK+aRsT5tw6FufFwgOwor5pGzPmvFjXV8XCA7CivmkbQ+c2jFq3xcIDsKK+aRtT5zdceSfFwgOwor5pG/PnnEq258XCA7CivmkoA+Z8OydXxcIDsKK+aSgz5ndcOsfFwgOwor5pKGPnBpxJN8XCA7Civmkog+bMSBb3xcIDsKK+aSiT5kxatufFwgOwor5pKMPmd1w6x8XCA7Civmko8+eMO6bnxcIDsKK+aSkz5uw6FvfFwgOwor5pKbPmzHkG58XCA7CivmkqE+Y8SBb3xcIDsKK+aSoj5kx45ufFwgOwor5pKjPmTHjm58XCA7CivmkqY+Y2jEm3xcIDsKK+aSpz5qdcOpfFwgOwor5pKqPmLDqG58XCA7CivmkrE+dHXHknxcIDsKK+aSsz5xw6xufFwgOwor5pK0PmTFq258XCA7Civmk4M+a3XHknxcIDsKK+aTjD5jw6BvfFwgOwor5pORPmNoxIF8XCA7Civmk5Q+ZMSBbnxcIDsKK+aToT50w6FpfFwgOwor5pOjPmTHjm98XCA7Civmk6U+bMeObnxcIDsKK+aTqj5odcOyfFwgOwor5pOtPmh1w7J8XCA7Civmk68+YsOsbnxcIDsKK+aTsj56aMOsfFwgOwor5pOzPmppw6l8XCA7Civmk7Q+a3XDsnxcIDsKK+aTtz54acOpfFwgOwor5pO4Pmxpw6h8XCA7Civmk7k+c8OydXxcIDsKK+aTuj5ix45pfFwgOwor5pO7PnPHknV8XCA7Civmk70+bMO8w6h8XCA7Civmk74+cseOb3xcIDsKK+aUgj5sw6hpfFwgOwor5pSDPmh1xY18XCA7CivmlIQ+c2jFq3xcIDsKK+aUhT56x45ufFwgOwor5pSIPmrDuW58XCA7CivmlIw+aMOgbnxcIDsKK+aUlD5sw6FufFwgOwor5pSVPnPEgW58XCA7CivmlJc+bcOpaXxcIDsKK+aUnD54acOpfFwgOwor5pSdPnNow6h8XCA7CivmlJ4+bHXFjXxcIDsKK+aUnz5qw7lufFwgOwor5pShPmNoxKt8XCA7CivmlKQ+dMSBbnxcIDsKK+aUrD5sx45ufFwgOwor5pSwPmd1w6x8XCA7CivmlLE+Z3XHkHxcIDsKK+aUtT5rx45vfFwgOwor5pS3PmvHjm98XCA7CivmlLw+Z8SBbnxcIDsKK+aUvT5ixIFufFwgOwor5pWCPmvDsnV8XCA7CivmlYM+bceQbnxcIDsKK+aVhj5ndcOzfFwgOwor5pWKPmNow7l8XCA7CivmlZM+ZHXDs3xcIDsKK+aVlz5iw6BpfFwgOwor5pWaPmR1w7N8XCA7CivmlZw+bmnDqHxcIDsKK+aVoD5kdcOzfFwgOwor5pWlPnnDoG58XCA7Civmlag+ZMeSdXxcIDsKK+aVqj5kdcOzfFwgOwor5pWuPnhpw6F8XCA7Civmla8+aMWrbnxcIDsKK+aVuD5zaMeUfFwgOwor5paIPmbEk2l8XCA7Civmlo0+anXDqXxcIDsKK+aWkj5ixIFufFwgOwor5paVPmzDoW58XCA7CivmlpY+d8SbaXxcIDsKK+aWmj5qaceOfFwgOwor5padPmppx458XCA7CivmlqI+dMeSdXxcIDsKK+aWoz5jaMO5fFwgOwor5pamPnnDrW58XCA7CivmlrM+ccOtbnxcIDsKK+aWtD5sw61ufFwgOwor5pa2PmNow7l8XCA7Civmlrg+emjHlHxcIDsKK+aWvj5sacO6fFwgOwor5pa/PnnDs3V8XCA7Civml4g+bGnDunxcIDsKK+aXmD56aMOsfFwgOwor5peZPmbEgW58XCA7Civml5s+ZsSBbnxcIDsKK+aXpD5odcOyfFwgOwor5peqPnhpw6l8XCA7Civml7I+dMOhaXxcIDsKK+aXuT5zaMOtfFwgOwor5pe7Pm3DrW58XCA7Civml7w+bcOtbnxcIDsKK+aXvT50xatufFwgOwor5pe/PmjDuW58XCA7CivmmIE+YsOoaXxcIDsKK+aYhD5ix45ufFwgOwor5piFPmppw6l8XCA7CivmmIs+Z3XDrHxcIDsKK+aYkD5jdcOyfFwgOwor5piRPnHHkG58XCA7CivmmJY+ecOhbnxcIDsKK+aYoj5wxJtpfFwgOwor5pimPmjDoG98XCA7CivmmKw+aMWrbnxcIDsKK+aYsD5zaMOsfFwgOwor5piyPmbDqGl8XCA7CivmmLM+ZGnDqXxcIDsKK+aYtz53xJNufFwgOwor5pi7PsOhbmd8XCA7CivmmYI+c2jDrXxcIDsKK+aZhj5rdcSBfFwgOwor5pmJPmrDrG58XCA7CivmmYo+emjHkHxcIDsKK+aZkD5nxIFpfFwgOwor5pmYPmjDoG58XCA7CivmmZk+asO5bnxcIDsKK+aZnD5rxatufFwgOwor5pmiPnpow6l8XCA7CivmmaM+emjEk3xcIDsKK+aZpT5ow6BufFwgOwor5pmnPmjDoG98XCA7Civmmak+d8eObnxcIDsKK+aZrD56dcOsfFwgOwor5pm8PnfHjm58XCA7Civmmb0+bMOtbnxcIDsKK+aahj54acOgfFwgOwor5pqIPnnFq258XCA7Civmmok+aHXEq3xcIDsKK+aaiz5tx5BufFwgOwor5pqOPmzDoW58XCA7CivmmpA+d8SbaXxcIDsKK+aakz5tw6BvfFwgOwor5pqUPm7DoW58XCA7Civmmpo+ecOhb3xcIDsKK+aamz5zdceSfFwgOwor5pqcPmrDrG58XCA7Civmmp4+aMOgb3xcIDsKK+aanz5rx45pfFwgOwor5pqgPmfHjm98XCA7CivmmqQ+aMOgb3xcIDsKK+aapT55w6BufFwgOwor5pqpPmd1w6x8XCA7Civmmqo+bcSbbnxcIDsKK+aaqz56w6BufFwgOwor5pqsPnhpw6h8XCA7Civmmq0+aMOgb3xcIDsKK+aasz5odcOsfFwgOwor5pq1PmjDoG58XCA7Civmmro+ZMOgbnxcIDsKK+aavD5wacSTfFwgOwor5pq9PmzDrW58XCA7Civmm4M+dMOgaXxcIDsKK+abhz50w6FufFwgOwor5puKPmbDqGl8XCA7Civmm4s+cceQbnxcIDsKK+abjT5ow6BvfFwgOwor5puRPnPEk258XCA7Civmm5M+YsOgb3xcIDsKK+ablT55w6BufFwgOwor5puhPmRpw6l8XCA7Civmm6M+ecOgbnxcIDsKK+abpD5odcOyfFwgOwor5puqPmx1x5J8XCA7Civmm64+eceObnxcIDsKK+abrz5jaMO6fFwgOwor5puxPnl1xJN8XCA7Civmm7g+c2jFq3xcIDsKK+abuj5jw6FvfFwgOwor5pyBPmPHjm58XCA7CivmnIM+aHXDrHxcIDsKK+achD55x5BufFwgOwor5pyFPnFpw6h8XCA7CivmnIY+ZsSTbnxcIDsKK+acjD5ixIFufFwgOwor5pyPPmbEm2l8XCA7CivmnJw+dMWrbnxcIDsKK+acrj5zaMO5fFwgOwor5py2PmR1x5J8XCA7CivmnLc+ZMSBb3xcIDsKK+acuT5ndceQfFwgOwor5py7Pmppxat8XCA7CivmnYs+ZsSBbnxcIDsKK+adkj5yw6hufFwgOwor5p2UPmR1w7J8XCA7CivmnZg+Y2jDrHxcIDsKK+adrj5iw6hpfFwgOwor5p24Pm5px5R8XCA7Civmnbk+aHXDoHxcIDsKK+aduj54xKtufFwgOwor5p6CPnl1w6h8XCA7CivmnoM+asOsbnxcIDsKK+aeij7DoG5nfFwgOwor5p6MPmbDqW58XCA7Civmno8+bsOhbnxcIDsKK+aekz5kx5J1fFwgOwor5p6UPnjDum58XCA7Civmnp8+ecO6bnxcIDsKK+aeoT5kx5J1fFwgOwor5p6sPm7DoW58XCA7CivmnrQ+Z8WNdXxcIDsKK+aeuj5kdcOyfFwgOwor5p6+PnNow6x8XCA7Civmnr8+bmnDqHxcIDsKK+afgT50dcOzfFwgOwor5p+IPnDDoW58XCA7Civmn4k+ZsOhbnxcIDsKK+afiz5kw6BpfFwgOwor5p+VPm3DoG98XCA7Civmn5s+Z3XDrHxcIDsKK+afnz5uw6FufFwgOwor5p+jPnpow618XCA7Civmn6Q+emjEgXxcIDsKK+afpj5kw6BufFwgOwor5p+uPmR1w7J8XCA7Civmn7U+emjDoHxcIDsKK+aftz56aMO5fFwgOwor5p+4PnDEk2l8XCA7Civmn7k+c2jDrHxcIDsKK+afuz5jaMOhfFwgOwor5qCBPmxpx5R8XCA7CivmoII+bcOpaXxcIDsKK+agkD5zx5RufFwgOwor5qCSPnjDum58XCA7CivmoJk+c2jDqHxcIDsKK+agnj5ixJNufFwgOwor5qCiPmLHjml8XCA7CivmoKM+csSbbnxcIDsKK+agqD5qacOpfFwgOwor5qCsPnp1w6x8XCA7CivmoK8+eceSdXxcIDsKK+agtj55xKtufFwgOwor5qC6Pnpox5B8XCA7CivmoLs+c2jDrHxcIDsKK+ahlj5kdceSfFwgOwor5qGXPmR1w7J8XCA7CivmoZk+bcOzdXxcIDsKK+ahmj5yw6FvfFwgOwor5qGqPnjDrW58XCA7Civmoaw+c2jEgXxcIDsKK+ahrj5ixJNpfFwgOwor5qGwPmd1xIF8XCA7CivmobM+YsOobnxcIDsKK+ahtT5ydceQfFwgOwor5qG6Pmxpx5R8XCA7Civmob0+d8SbbnxcIDsKK+ahvj5qxatufFwgOwor5qG/PmfHjm58XCA7CivmooI+cWnDunxcIDsKK+aihD55x5J1fFwgOwor5qKNPnrDoG98XCA7CivmopI+aMOhbnxcIDsKK+ailD56aMSrfFwgOwor5qKVPnLDqG58XCA7CivmopY+YsOoaXxcIDsKK+aimj53x45ufFwgOwor5qKbPm51w7N8XCA7Civmopw+amnDoXxcIDsKK+aioz5jw6lufFwgOwor5qKkPmbDqW58XCA7Civmoqo+ZMOydXxcIDsKK+aiqz5jxJNufFwgOwor5qKxPmvHlG58XCA7CivmorY+d8SbaXxcIDsKK+aivD5kx45vfFwgOwor5qK9PnR1xY18XCA7Civmor4+bMOhaXxcIDsKK+ajjj5iw6BpfFwgOwor5qOQPmbEm2l8XCA7Civmo5E+cMOhaXxcIDsKK+ajkz5wx5J1fFwgOwor5qOUPmTDoGl8XCA7Civmo5c+eseOb3xcIDsKK+ajnj5ow7pufFwgOwor5qOlPmbDoW58XCA7Civmo6o+eceObnxcIDsKK+ajrz5yxJtufFwgOwor5qO2PmzDoWl8XCA7Civmo7c+esWNdXxcIDsKK+ajuD56xY11fFwgOwor5qO7PmbEk258XCA7Civmo78+bmnDqHxcIDsKK+akgD53x45ufFwgOwor5qSDPmjDoW98XCA7CivmpIQ+amnEk3xcIDsKK+akkT5ixJNpfFwgOwor5qSVPmLEq258XCA7CivmpJg+Y2jHlHxcIDsKK+aknT5ndcSrfFwgOwor5qSlPnpoxKt8XCA7CivmpK4+c8STbnxcIDsKK+akrz5kdcOzfFwgOwor5qSxPmbDsnV8XCA7CivmpLI+d8SbaXxcIDsKK+aksz53xJNpfFwgOwor5qS1Pmppx458XCA7CivmpLY+aMOhbnxcIDsKK+akuz55w6BufFwgOwor5qS8PnnHjm58XCA7CivmpYE+Y2jEgXxcIDsKK+algz5odcSrfFwgOwor5qWGPnnEgW98XCA7CivmpYc+aHXDsnxcIDsKK+aliT5ydcOyfFwgOwor5qWMPnnDoW58XCA7CivmpY0+YsSbbnxcIDsKK+aljj5ow7pufFwgOwor5qWPPmt1w618XCA7CivmpZA+amnDqHxcIDsKK+alkT5rdcOtfFwgOwor5qWWPnpow6x8XCA7CivmpZk+bcOgb3xcIDsKK+aloj55w7N1fFwgOwor5qWsPmppw6l8XCA7CivmpbE+Y8OydXxcIDsKK+alsj5qacSTfFwgOwor5qWzPm3DqWl8XCA7CivmpbY+amnDqXxcIDsKK+aluj5yw7N1fFwgOwor5qaFPnnDum58XCA7Civmpo4+amnHjnxcIDsKK+ammj55x45vfFwgOwor5qaiPmppw6B8XCA7CivmpqM+ecOhb3xcIDsKK+ampD5qacOpfFwgOwor5qamPmfDoG58XCA7Civmpq8+c2jDrXxcIDsKK+amsD56aMSrfFwgOwor5qaxPmN1xKt8XCA7CivmprI+ecO6bnxcIDsKK+amvz5nx45vfFwgOwor5qeAPmvHjm98XCA7Civmp4M+cMOhbnxcIDsKK+anhD50xIFvfFwgOwor5qeGPmR1xKt8XCA7Civmp4g+bsOydXxcIDsKK+aniz5nw7J1fFwgOwor5qePPmNow7l8XCA7Civmp5E+bcOpaXxcIDsKK+anlD5nxIFvfFwgOwor5qeWPnR1w7N8XCA7Civmp5g+a8eObnxcIDsKK+anmj5qaceOfFwgOwor5qelPmh1w6x8XCA7Civmp6g+Z3XHknxcIDsKK+anqT5nw6BpfFwgOwor5qeqPmfDoGl8XCA7Civmp6w+aHXDoHxcIDsKK+anrj5zxJNufFwgOwor5qevPmN1xKt8XCA7Civmp7E+eceSdXxcIDsKK+antj5rdcOsfFwgOwor5qe4Pm5pw6h8XCA7Civmp7k+Z8SBb3xcIDsKK+anuz5ndcSrfFwgOwor5qe8Pmd1xKt8XCA7Civmp74+bcOhbnxcIDsKK+aohj5mw6BufFwgOwor5qiHPnhpxat8XCA7CivmqIs+bMOpaXxcIDsKK+aojj5zdcWNfFwgOwor5qiPPmzEm2l8XCA7CivmqJM+bMOzdXxcIDsKK+aomz5qacWrfFwgOwor5qicPnNow7l8XCA7CivmqJ0+emjEgXxcIDsKK+aonj5zaMWrfFwgOwor5qigPm3DqW58XCA7CivmqKY+emjDuXxcIDsKK+aopz5zaMSBfFwgOwor5qizPnjDrW58XCA7CivmqLQ+emjDrXxcIDsKK+aotj56dcSrfFwgOwor5qi5PnNow7l8XCA7CivmqLo+aHXDoHxcIDsKK+aouz5rdcOsfFwgOwor5qmBPnjDum58XCA7CivmqYY+Y3XDrHxcIDsKK+apiD5uw6FvfFwgOwor5qmJPmzDrG58XCA7CivmqYo+bGnDunxcIDsKK+apjT5yw7lufFwgOwor5qmOPmbDoW58XCA7CivmqZE+bMeOb3xcIDsKK+aplD50dcOtfFwgOwor5qmcPmp1w6l8XCA7CivmqZ0+dMSBbnxcIDsKK+apnj5kdceSfFwgOwor5qmgPm51x5J8XCA7CivmqaI+dHXHknxcIDsKK+appD5ydceQfFwgOwor5qmoPmbDqW58XCA7Civmqao+cseObnxcIDsKK+aprD5jw6lufFwgOwor5qmuPmxpx5R8XCA7Civmqa8+bMOgb3xcIDsKK+apsD5nxIFvfFwgOwor5qm3PmTFjXV8XCA7Civmqb4+c2jFq3xcIDsKK+aqgT5sx5BufFwgOwor5qqDPnnHkG58XCA7CivmqoU+c3XDrHxcIDsKK+aqhz56dcOsfFwgOwor5qqKPmfDoG58XCA7Civmqo4+ccOtbnxcIDsKK+aqkT5sw6lpfFwgOwor5qqTPmh1x5B8XCA7CivmqpY+c3XDrHxcIDsKK+aqmj5jaMeUfFwgOwor5qqcPmd1w6x8XCA7Civmqp4+amnEm3xcIDsKK+aqnz5qaceOfFwgOwor5qqhPnNow6x8XCA7CivmqqQ+ZMOgb3xcIDsKK+aqqD5zaMSTfFwgOwor5qqtPnnDrW58XCA7Civmqq4+dMOhb3xcIDsKK+aqrz50w6FpfFwgOwor5qqzPmLEq258XCA7CivmqrQ+aHXDsnxcIDsKK+aqtj5rx45ufFwgOwor5qq6PmfHjm98XCA7Civmqrw+eceQbnxcIDsKK+aqvz55x45ufFwgOwor5quDPmd1w6x8XCA7Civmq4Y+a3XDrXxcIDsKK+ariT5jaMO6fFwgOwor5quMPnnFjXV8XCA7Civmq40+emjDrHxcIDsKK+arjz5sw6lpfFwgOwor5quQPmzEm2l8XCA7Civmq5E+bMSbaXxcIDsKK+arlz5tacOofFwgOwor5quYPmh1w6x8XCA7Civmq5s+amnDqXxcIDsKK+arnD5nxIFvfFwgOwor5qugPmbDqGl8XCA7Civmq6U+Y2jDunxcIDsKK+arpz56aMWrfFwgOwor5qupPnnDoW58XCA7Civmq6s+emjFq3xcIDsKK+arsT5uacOofFwgOwor5qu0PmzDoGl8XCA7Civmq70+eceQbnxcIDsKK+arvj55w7N1fFwgOwor5qyEPmzDoW58XCA7CivmrIc+c2jDqHxcIDsKK+asiD53w6lpfFwgOwor5qyPPmx1w7N8XCA7CivmrJE+esOgbnxcIDsKK+aslD5qdcOpfFwgOwor5qyWPmzHjm58XCA7CivmrJc+bMOhbnxcIDsKK+asmD56aMeUfFwgOwor5qyZPmzDqWl8XCA7CivmrKo+Y2jDuXxcIDsKK+asqz5jaMSrfFwgOwor5qysPmvDoGl8XCA7CivmrK4+anXDqXxcIDsKK+assT54acOgfFwgOwor5qy8PmNox5B8XCA7CivmrL0+ccSrbnxcIDsKK+asvz5rx45ufFwgOwor5q2BPmvHjm58XCA7CivmrYQ+Z3XEgXxcIDsKK+athT55xKtufFwgOwor5q2OPnTDoG58XCA7CivmrY8+asOsbnxcIDsKK+atlT5wxJNufFwgOwor5q2cPmNow7l8XCA7CivmrZ4+a8eObnxcIDsKK+atrT5jaMOtfFwgOwor5q2vPmNox5B8XCA7CivmrbE+a3XDrHxcIDsKK+atsj5zdcOsfFwgOwor5q2zPnN1w6x8XCA7CivmrbU+Y3XDsnxcIDsKK+atuD5ndcSrfFwgOwor5q26PmTHjml8XCA7Civmrb0+emjDqXxcIDsKK+augD55x45vfFwgOwor5q6MPmp1w6l8XCA7Civmro8+cWnDuXxcIDsKK+aulT5mx5J1fFwgOwor5q6XPmRpw6l8XCA7Civmrpg+Y8OhbnxcIDsKK+aumT5oxatufFwgOwor5q6ePnnHlG58XCA7Civmrp8+d8STbnxcIDsKK+auoz5qw6xufFwgOwor5q6lPnnDrW58XCA7Civmrqg+aHXDrHxcIDsKK+auqz5kxIFufFwgOwor5q6vPmLDrG58XCA7CivmrrY+emjDuXxcIDsKK+auuj5zaMSBfFwgOwor5q69PnnDoW98XCA7Civmrr4+aHXDrHxcIDsKK+avgD5odceQfFwgOwor5q+DPnF1w6h8XCA7Civmr4c+aHXHkHxcIDsKK+avjj5txJtpfFwgOwor5q+RPnp1x5J8XCA7Civmr54+bcOgb3xcIDsKK+avoD5qacSBfFwgOwor5q+iPnPEgWl8XCA7Civmr6U+eMO6bnxcIDsKK+avrD5xacO6fFwgOwor5q+tPmTDsnV8XCA7Civmr7A+cMOpaXxcIDsKK+avsj5kdcOzfFwgOwor5q+3Pm3DoG98XCA7Civmr7g+c3XEq3xcIDsKK+avuj5tw6FvfFwgOwor5q+7PnR1w7J8XCA7Civmr78+c8SBbnxcIDsKK+awgj5tw6FvfFwgOwor5rCJPnPDoG98XCA7CivmsIw+bHXDs3xcIDsKK+awjj5kacOpfFwgOwor5rCSPmp1w6l8XCA7CivmsJU+cGnEk3xcIDsKK+awnT5uw6hpfFwgOwor5rCzPnnFq258XCA7CivmsL4+ZsOgbnxcIDsKK+awvz5ndceQfFwgOwor5rGDPmLEq258XCA7CivmsYQ+aMOgbnxcIDsKK+axjT53w6FufFwgOwor5rGOPmbDoG58XCA7CivmsZM+cWnDunxcIDsKK+axlj5nxIFufFwgOwor5rGmPmNow618XCA7Civmsas+bcOpbnxcIDsKK+axrT5ydcOsfFwgOwor5rGuPmrFq258XCA7CivmsbU+Z8OgbnxcIDsKK+axtz5nxIFpfFwgOwor5rG6Pmp1w6l8XCA7Civmsbw+bmnFq3xcIDsKK+ayhD55w7pufFwgOwor5rKHPnnHjm58XCA7Civmsoo+ZMOgbnxcIDsKK+ayiz55w7N1fFwgOwor5rKOPmh1w7J8XCA7CivmspE+csOzdXxcIDsKK+aykj5tw6lpfFwgOwor5rKaPnpox5B8XCA7Civmspw+cMOgbnxcIDsKK+ayoD5sacO6fFwgOwor5rKsPm3DqGl8XCA7Civmsq8+Y2jDrXxcIDsKK+aysD50dcWNfFwgOwor5rKyPmR1w7J8XCA7Civmsro+Y2jDrXxcIDsKK+azhz5qacSBfFwgOwor5rONPmLEk258XCA7Civms48+Y2jDuXxcIDsKK+azkT55x5J1fFwgOwor5rOWPm3Hjm98XCA7Civms5w+Y2jDrXxcIDsKK+azpz55dcOofFwgOwor5rOsPmp1w6l8XCA7Civms78+ecOtbnxcIDsKK+a0gj5odcOsfFwgOwor5rSDPmh1xKt8XCA7CivmtIU+ecSBbnxcIDsKK+a0iD53w6lpfFwgOwor5rSJPmjDsnV8XCA7CivmtJM+c3XHknxcIDsKK+a0lD56aMeQfFwgOwor5rSVPnnEq258XCA7CivmtKE+bMSbaXxcIDsKK+a0pz53xJtpfFwgOwor5rSpPnhpw6h8XCA7CivmtKw+ZMOgb3xcIDsKK+a0rz5qacOpfFwgOwor5rS3Pnpow6x8XCA7CivmtYk+c2jEq3xcIDsKK+a1lT5qw6xufFwgOwor5rWWPmxpw6h8XCA7CivmtZc+cWnDunxcIDsKK+a1mD53xJtpfFwgOwor5rWbPmjDoW58XCA7CivmtZ8+ecOzdXxcIDsKK+a1oj5kw7J1fFwgOwor5rWoPmzHjm58XCA7Civmtas+aMeOaXxcIDsKK+a1tj5sw6FvfFwgOwor5rW5PmppxIF8XCA7Civmtb0+c3XEq3xcIDsKK+a1vz5ww6hpfFwgOwor5raDPmvDuW58XCA7CivmtoQ+cMSrbnxcIDsKK+a2hj5ow6BufFwgOwor5raPPnNow7l8XCA7CivmtpI+dMWrbnxcIDsKK+a2mT5sw6hpfFwgOwor5ragPnfDqWl8XCA7CivmtqI+ecO6bnxcIDsKK+a2uz5nw6BufFwgOwor5ra9PmjFq258XCA7Civmt4E+cWnDqHxcIDsKK+a3iT5ndceSfFwgOwor5reKPnnEgW58XCA7Civmt40+Y2jDuXxcIDsKK+a3jz5ow6BvfFwgOwor5reUPmNow6x8XCA7Civmt5o+bMOoaXxcIDsKK+a3mz56aMOofFwgOwor5reqPmzDum58XCA7Civmt7Y+bMOhaXxcIDsKK+a3vT56aMeQfFwgOwor5re+PnnHkG58XCA7CivmuIA+YsSTbnxcIDsKK+a4gj53w6hufFwgOwor5riEPmbEk2l8XCA7CivmuIY+ZGnDqXxcIDsKK+a4iT5zaMOofFwgOwor5riYPmh1w6x8XCA7CivmuJ4+cWnDunxcIDsKK+a4pj5ndcWNfFwgOwor5rioPnfEk2l8XCA7CivmuKo+ZGnDqXxcIDsKK+a4qz54acOofFwgOwor5riwPnnEgW58XCA7CivmuLU+bGnDunxcIDsKK+a4tz55x45ufFwgOwor5ri8Pm3Em2l8XCA7CivmuL0+esSBaXxcIDsKK+a4vj5ow7pufFwgOwor5rmAPmt1w618XCA7CivmuYE+c2jDrXxcIDsKK+a5iD5tw6lpfFwgOwor5rmKPmPDsnV8XCA7CivmuYs+d8OpaXxcIDsKK+a5jD5jxIFufFwgOwor5rmPPmh1w6x8XCA7CivmuZM+cMOpbnxcIDsKK+a5mj55w6xufFwgOwor5rmcPnNow618XCA7CivmuZ0+amnEk3xcIDsKK+a5oD5oxatufFwgOwor5rmjPm3HkG58XCA7Civmua0+cWnDunxcIDsKK+a5sT5odcOyfFwgOwor5rmzPm7Hjm58XCA7CivmubQ+YsOgbnxcIDsKK+a5tT55x5J1fFwgOwor5rm6PnnDoW58XCA7Civmubw+bmnDqHxcIDsKK+a6iD5ndcSrfFwgOwor5rqNPmrDrG58XCA7Civmuo4+Z3XDrHxcIDsKK+a6kT5zdceSfFwgOwor5rqUPmvDoGl8XCA7Civmupk+bGnDunxcIDsKK+a6nT5nxY11fFwgOwor5rqgPnpow6B8XCA7CivmuqM+bMO6bnxcIDsKK+a6qD5jw6FpfFwgOwor5rqrPnfEk258XCA7Civmuq4+c2jEq3xcIDsKK+a6sD5xw61ufFwgOwor5rqzPmjDum58XCA7CivmurU+ecSrbnxcIDsKK+a6vD5zaMSrfFwgOwor5rq+PnfEk2l8XCA7Civmur8+cMOgbnxcIDsKK+a7gD5jaMO5fFwgOwor5ruFPm1pw6h8XCA7Civmu4g+aMOgb3xcIDsKK+a7jT56aMeQfFwgOwor5ruQPmppw6l8XCA7Civmu5Y+c3XEq3xcIDsKK+a7mT5odcOsfFwgOwor5rubPnnDrW58XCA7Civmu5w+Z8SBb3xcIDsKK+a7qz54acWrfFwgOwor5ruvPnpow6x8XCA7Civmu7E+a8OydXxcIDsKK+a7vD5mw6BufFwgOwor5ru+PmfHlG58XCA7Civmu78+bceObnxcIDsKK+a8jD5qx5BufFwgOwor5ryNPmd1w7N8XCA7CivmvJA+ecOgbnxcIDsKK+a8kT5nw6BpfFwgOwor5rybPnTEgW58XCA7CivmvKI+aMOgbnxcIDsKK+a8tz5rdcOyfFwgOwor5ry5Pmxpw7p8XCA7CivmvLw+Y3XHkHxcIDsKK+a9gz54w7pufFwgOwor5r2EPnNow7l8XCA7CivmvYw+emjDrHxcIDsKK+a9jz5qdcOpfFwgOwor5r2TPmh1w6x8XCA7CivmvZQ+amnDqXxcIDsKK+a9mT5ndcSrfFwgOwor5r2gPnjDuW58XCA7CivmvaE+ZMO5bnxcIDsKK+a9oz5sw6FvfFwgOwor5r2kPnLDuW58XCA7Civmvas+d8SBbnxcIDsKK+a9rD5kw6BufFwgOwor5r2vPnjDum58XCA7CivmvbA+a3XDrHxcIDsKK+a9tT5zw6BufFwgOwor5r27PnNox5R8XCA7Civmvb4+bMOtbnxcIDsKK+a9vz53w6lpfFwgOwor5r6HPmzDoG98XCA7Civmvok+Z8eObnxcIDsKK+a+ij5jxatufFwgOwor5r6PPmjDoG58XCA7CivmvpA+ecO6bnxcIDsKK+a+kT5sacO5fFwgOwor5r6UPmjDoG98XCA7Civmvp8+bMeQbnxcIDsKK+a+pT54acOofFwgOwor5r6oPnNow6x8XCA7Civmvqk+eHXDqXxcIDsKK+a+qj5odcOhfFwgOwor5r6rPm3DoG58XCA7Civmvq8+Y8OgbnxcIDsKK+a+tz5kxIFufFwgOwor5r64PmTHjm58XCA7Civmvrs+c3XDrHxcIDsKK+a+vz5xw61ufFwgOwor5r+EPmd1xY18XCA7Civmv4U+ZsOobnxcIDsKK+a/hj5mw6lufFwgOwor5r+KPmh1w6x8XCA7Civmv4s+Y2jHlHxcIDsKK+a/lT5zaMSrfFwgOwor5r+cPmrDrG58XCA7Civmv6Q+dMSBb3xcIDsKK+a/pj55x5BufFwgOwor5r+nPmR1w6x8XCA7Civmv6k+aHXDsnxcIDsKK+a/qz5sw6BufFwgOwor5r+sPmrDuW58XCA7Civmv7A+d8OpaXxcIDsKK+a/sT5ixKtufFwgOwor5r+3PmbDqGl8XCA7Civmv7s+ZHXDrHxcIDsKK+a/vD5sdcOyfFwgOwor54CAPnnFjXV8XCA7CivngIQ+amnDqXxcIDsKK+eAiD5odcSrfFwgOwor54CJPnhpw6h8XCA7CivngIo+cMOhbnxcIDsKK+eAjz5sacO6fFwgOwor54CQPmLDoG98XCA7CivngJI+ccOsbnxcIDsKK+eAlT5ixKtufFwgOwor54CWPmh1w7J8XCA7CivngJk+ccSrbnxcIDsKK+eAoT5zdceQfFwgOwor54CiPnfDqWl8XCA7CivngKU+aMOgb3xcIDsKK+eApj56aMWrfFwgOwor54CoPmzDoGl8XCA7CivngKk+ZHXDrHxcIDsKK+eAqj5mw6FufFwgOwor54CsPmzDoGl8XCA7CivngLU+ZsOobnxcIDsKK+eAtj5sw61ufFwgOwor54C5Pnl1w6h8XCA7CivngLs+ZMOgaXxcIDsKK+eAvj5sw6FufFwgOwor54C/PmbDoW58XCA7CivngYQ+c2jDqHxcIDsKK+eBhj5sw6FufFwgOwor54GOPnnDoG58XCA7CivngZI+aMOgbnxcIDsKK+eBlD55w6BufFwgOwor54GYPnTEgW58XCA7CivngZ0+aMOgb3xcIDsKK+eBnz56aMO6fFwgOwor54GgPmzHjm58XCA7CivngaE+bMOhbnxcIDsKK+eBoz53xIFufFwgOwor54GlPnjDum58XCA7Civngac+ecOgbnxcIDsKK+eBqD5nx45ufFwgOwor54GpPnnDoG58XCA7CivngbM+aHXEq3xcIDsKK+eBuT56aMOgfFwgOwor54G6Pnhpw6h8XCA7Civngbs+Y2jDrHxcIDsKK+eBvT56xIFpfFwgOwor54KDPmbDqW58XCA7CivngoQ+bmnHlHxcIDsKK+eChj53w6lufFwgOwor54KMPmvDoGl8XCA7Civngo0+cMOgbnxcIDsKK+eCmD54xKtufFwgOwor54KgPnhpw6F8XCA7CivngqI+emjDunxcIDsKK+eCpz5kdcOyfFwgOwor54KoPmLEgW98XCA7CivngrA+cMOhb3xcIDsKK+eCsj50w6FpfFwgOwor54K2PmjEgW58XCA7Civngro+d8OoaXxcIDsKK+eDjj55w61ufFwgOwor54OQPm1pw6h8XCA7Civng5E+ecOhb3xcIDsKK+eDkj5zaMOsfFwgOwor54OTPnfEk2l8XCA7Civng5U+eHXDqHxcIDsKK+eDlz5rw6BpfFwgOwor54OaPmh1x5B8XCA7Civng6A+aHXHkHxcIDsKK+eDoj56aMOofFwgOwor54OjPmh1xKt8XCA7Civng7I+Y2jDqHxcIDsKK+eDuD5ox45pfFwgOwor54O+PmNow6x8XCA7CivnhII+c2jDunxcIDsKK+eEhD54xatufFwgOwor54SGPmp1w6l8XCA7CivnhIw+asO5bnxcIDsKK+eEjj54acOofFwgOwor54SUPnnDoG58XCA7CivnhJs+aMeUbnxcIDsKK+eEnD5rxatufFwgOwor54SdPmjDuW58XCA7CivnhJ4+dMWrbnxcIDsKK+eEoD5jdcOsfFwgOwor54SrPnJ1w7J8XCA7CivnhK4+eMOsbnxcIDsKK+eEsz5qdcOpfFwgOwor54WDPmt1x5B8XCA7CivnhYY+eGnEgXxcIDsKK+eFhz5odcSrfFwgOwor54WRPnpox5R8XCA7CivnhZI+d8SbaXxcIDsKK+eFlz5tw6lpfFwgOwor54WZPnnEgW58XCA7CivnhZ0+bcOoaXxcIDsKK+eFnz53w6hpfFwgOwor54WhPnjDrG58XCA7CivnhaM+cseSdXxcIDsKK+eFqT5mw6FufFwgOwor54WqPnFpw7p8XCA7Civnhas+c3XDrHxcIDsKK+eFrT5ixIFvfFwgOwor54WvPmppxJN8XCA7CivnhbA+Z8Ogb3xcIDsKK+eFsT5ndcSBfFwgOwor54W0PnnFq258XCA7Civnhbk+Z8OydXxcIDsKK+eGgT54acOpfFwgOwor54aFPnnDuW58XCA7Civnhoc+a8eOb3xcIDsKK+eGiT55w7pufFwgOwor54aLPm7DoWl8XCA7Civnho4+ecOgb3xcIDsKK+eGkz5sacO5fFwgOwor54ahPmzDs3V8XCA7CivnhqM+c3XEq3xcIDsKK+eGpj5qdcOpfFwgOwor54arPnpow6x8XCA7Civnhq0+ZMeObnxcIDsKK+eGrz5ow6BufFwgOwor54a+PmNow6x8XCA7Civnh4Q+ecOgbnxcIDsKK+eHhj5kxatufFwgOwor54eHPnrDuW58XCA7Civnh4k+ZMO5bnxcIDsKK+eHjD5iw6hufFwgOwor54eQPmzDrW58XCA7Civnh5M+ZsSTbnxcIDsKK+eHlj54w7pufFwgOwor54eYPm3Em2l8XCA7Civnh5o+Y3XFjXxcIDsKK+eHnD5tw6hufFwgOwor54eiPnh1w6l8XCA7Civnh6M+bMOhbnxcIDsKK+eHpD50w6BpfFwgOwor54emPmPDoG58XCA7Civnh6k+cXXDqHxcIDsKK+eHrD5odceQfFwgOwor54etPnpow7p8XCA7Civnh7A+d8STaXxcIDsKK+eHsj54acOpfFwgOwor54e0Pmh1w6x8XCA7Civnh7c+bMOhbnxcIDsKK+eHuj5kw6BvfFwgOwor54e7PnjFq258XCA7Civnh7w+asOsbnxcIDsKK+eHvj5kw6BvfFwgOwor54e/PnnDoG98XCA7CivniIE+bMOgbnxcIDsKK+eIiD5sacOofFwgOwor54iLPnjFq258XCA7CivniJE+anXDqXxcIDsKK+eIkz55w6BufFwgOwor54iVPnhpw6h8XCA7CivniJo+eXXDqHxcIDsKK+eImz5sw6BufFwgOwor54ihPmNow6h8XCA7CivniKQ+bMOgbnxcIDsKK+eIpT56aMO6fFwgOwor54iuPnDDoW98XCA7CivniLI+d8OoaXxcIDsKK+eJgz5kacOpfFwgOwor54mJPnDDoG58XCA7CivniY8+dMOzdXxcIDsKK+eJnj5qacWrfFwgOwor54mjPnLDqG58XCA7Civniao+ecOgbnxcIDsKK+eJrD5iw6hpfFwgOwor54mwPnnDsnV8XCA7CivnioM+cMeSdXxcIDsKK+eKhz5ixJNufFwgOwor54qJPnLDum58XCA7Civniow+amnEgXxcIDsKK+eKkz5jaMO6fFwgOwor54qVPmLDqGl8XCA7CivnipY+bHXDsnxcIDsKK+eKlz5qacOofFwgOwor54qZPnPEgW58XCA7Civnipo+d8OoaXxcIDsKK+eKnD5ixJNpfFwgOwor54qjPmxpw6h8XCA7CivniqY+YsOgb3xcIDsKK+eKqT53w6hpfFwgOwor54qwPnFpw7p8XCA7CivnirI+Y8OhaXxcIDsKK+eKvD5ox5J1fFwgOwor54q+PnnDrW58XCA7Civni48+dHXDs3xcIDsKK+eLlj55w7J1fFwgOwor54uYPnl1w6h8XCA7Civni5o+ZMOgbnxcIDsKK+eLpT54w7lufFwgOwor54urPmzHjm98XCA7Civni7k+eGnDoXxcIDsKK+eLvT5iw6hpfFwgOwor54u+Pnpow6x8XCA7Civni78+ecOhbnxcIDsKK+eMgD5zaMSBfFwgOwor54yCPmjDoG58XCA7CivnjIU+cMOhaXxcIDsKK+eMhj5mxJNpfFwgOwor54yHPnnDoW98XCA7CivnjIw+ecOsbnxcIDsKK+eMjT5sw6FpfFwgOwor54yRPmvFq258XCA7CivnjJI+ecSBbnxcIDsKK+eMkz5ndceSfFwgOwor54yYPnpow6x8XCA7CivnjLM+amnEgXxcIDsKK+eMtj55w7N1fFwgOwor54y4Pm3DqWl8XCA7CivnjLk+emjEgXxcIDsKK+eMuj55w6FvfFwgOwor54y7PnPFq258XCA7CivnjYA+c8WNdXxcIDsKK+eNgz5kxIFpfFwgOwor542FPnNoxKt8XCA7CivnjYY+aMOhb3xcIDsKK+eNiz5ow6FvfFwgOwor542MPm3DoG58XCA7CivnjZQ+aMOhb3xcIDsKK+eNlT5jdcSrfFwgOwor542WPmbDqW58XCA7CivnjZw+bMOtbnxcIDsKK+eNnz55w6BvfFwgOwor542hPnF1w6h8XCA7CivnjaI+aHXDoXxcIDsKK+eNqT5odcOsfFwgOwor542xPnDDrW58XCA7CivnjbI+aHXDsnxcIDsKK+eNsz5uw7J1fFwgOwor5421Pmxpw6h8XCA7CivnjbY+bsOhb3xcIDsKK+eOgD5sdcOzfFwgOwor546DPmp1w6l8XCA7CivnjpU+Z8SBbnxcIDsKK+eOnz5tw61ufFwgOwor546gPmppw6h8XCA7CivnjqU+eXXDqHxcIDsKK+eOpj5qdcOpfFwgOwor546nPnnHlG58XCA7Civnjqg+anXDqXxcIDsKK+eOrD5kx45ufFwgOwor5469PmfHknV8XCA7Civnjr4+amnHjnxcIDsKK+ePgz5yx45ufFwgOwor54+LPmxpx5R8XCA7Civnj5I+asSrbnxcIDsKK+ePmj55xIFufFwgOwor54+bPnhpw7l8XCA7Civnj6E+ccOtbnxcIDsKK+ePoj5rw6hufFwgOwor54+jPnjDum58XCA7Civnj6Q+YseOb3xcIDsKK+ePpz55w6FvfFwgOwor54+oPnhpw6F8XCA7Civnj6o+Z3XEq3xcIDsKK+ePrj5ww6hpfFwgOwor54+zPmjDoG58XCA7Civnj7o+asO5bnxcIDsKK+ePuz5tw6lpfFwgOwor54+8PmLDqGl8XCA7CivnkIA+aMOhbnxcIDsKK+eQhz54acO5fFwgOwor55COPmrEq258XCA7CivnkJM+d8OhbnxcIDsKK+eQlT5ww61ufFwgOwor55CXPmN1w6x8XCA7CivnkJg+bcOtbnxcIDsKK+eQnD5sw6FpfFwgOwor55CdPnfDqW58XCA7CivnkJ8+d8OpaXxcIDsKK+eQoT5jaMO5fFwgOwor55CjPmh1xKt8XCA7CivnkLI+YsOoaXxcIDsKK+eQtz5xdcOofFwgOwor55C5PnHDrW58XCA7CivnkL4+amnDqHxcIDsKK+eQvz5ow7pufFwgOwor55GCPm3DqWl8XCA7CivnkYc+ZMOgaXxcIDsKK+eRiD5yw7N1fFwgOwor55GJPm3DrW58XCA7CivnkYs+d8SbaXxcIDsKK+eRjj5qacSTfFwgOwor55GgPmxpw7p8XCA7CivnkaE+c2jEq3xcIDsKK+eRoz5zdceSfFwgOwor55GkPnnDoW98XCA7CivnkaU+d8STbnxcIDsKK+eRpz5qxKtufFwgOwor55GoPmrDrG58XCA7Civnkas+dMSBb3xcIDsKK+eRrD5sacO6fFwgOwor55GzPmN1x5J8XCA7CivnkbQ+asOsbnxcIDsKK+eRuD5ixKtufFwgOwor55G7PmvFq258XCA7CivnkoU+c3XHknxcIDsKK+eShj5xacO6fFwgOwor55KKPm3DqW58XCA7Civnkow+ecOtbnxcIDsKK+eSjz56aMOsfFwgOwor55KTPnhpw7l8XCA7CivnkpU+eMO6bnxcIDsKK+eSmD5sw61ufFwgOwor55KaPmp1w6l8XCA7Civnkps+asSrbnxcIDsKK+eSnT5ndcSrfFwgOwor55KgPmbDoW58XCA7CivnkqE+asOsbnxcIDsKK+eSqj56x45vfFwgOwor55KtPmfDuW58XCA7Civnkq4+dMeObnxcIDsKK+eSrz5odcOsfFwgOwor55KyPnN1w6x8XCA7CivnkrY+asOsbnxcIDsKK+eSuD5ixKtufFwgOwor55K6PnfDqG58XCA7Civnkrs+enXHkHxcIDsKK+eSvD5sw6FufFwgOwor55OBPmh1w7J8XCA7Civnk4I+Z8OgaXxcIDsKK+eTgz5sw6lpfFwgOwor55OGPnpow618XCA7Civnk4c+csOzdXxcIDsKK+eTiT56w6BufFwgOwor55OMPmd1xKt8XCA7Civnk40+c3XDrHxcIDsKK+eTkz5sw6BufFwgOwor55OZPmTDoG98XCA7Civnk5o+esOgbnxcIDsKK+eTnz5iw6FvfFwgOwor55OrPnDDqW58XCA7Civnk60+ZMeObnxcIDsKK+eTuz5jaMSrfFwgOwor55SKPmzHknV8XCA7CivnlJA+bMOtbnxcIDsKK+eUlD5kxIFufFwgOwor55SXPnnHjm58XCA7CivnlJs+aMOhbnxcIDsKK+eUnT5oxIFufFwgOwor55SkPnJ1w618XCA7CivnlKc+c8STbnxcIDsKK+eUtD56aMOhfFwgOwor55WCPmppw7l8XCA7CivnlYM+d8STaXxcIDsKK+eVhD5sacO6fFwgOwor55WHPnnDum58XCA7CivnlY0+amnDqHxcIDsKK+eVmD5saceUfFwgOwor55WhPmfEgWl8XCA7CivnlaQ+emjDrHxcIDsKK+eVpz5mxIFufFwgOwor55WoPnDEgW58XCA7Civnlas+aHXDoHxcIDsKK+eVrT5saceUfFwgOwor55WvPmrDuW58XCA7CivnlbE+bGnDunxcIDsKK+eVtT5odcOgfFwgOwor55W+PmzDqWl8XCA7CivnloA+Y2jEgXxcIDsKK+eWgT5sacO6fFwgOwor55aEPmzDrW58XCA7Civnlok+ZGnDqXxcIDsKK+eWij5kacOpfFwgOwor55aMPm5pw6h8XCA7Civnlo0+ZMOgbnxcIDsKK+eWjj5zaMWrfFwgOwor55aQPnpow6x8XCA7CivnlpM+bseOaXxcIDsKK+eWnD54acOgfFwgOwor55amPmp1w6l8XCA7Civnlqc+emjEq3xcIDsKK+eWqD54acSBfFwgOwor55apPmN1w6x8XCA7CivnlrA+emjDuXxcIDsKK+eWtj54acOofFwgOwor55a7Pnpox5B8XCA7Civnlr8+ZsOoaXxcIDsKK+eXgD5nxY11fFwgOwor55eEPnpow6B8XCA7Civnl44+a8SBaXxcIDsKK+eXjz53xJtpfFwgOwor55eQPmh1w618XCA7Civnl5E+ZHXHknxcIDsKK+eXkz5jaMOsfFwgOwor55eXPm3DqGl8XCA7Civnl6U+ZHXDs3xcIDsKK+eXsz5sw61ufFwgOwor55e4PmNow6x8XCA7Civnl7s+bcOtbnxcIDsKK+eXvT5kdcSrfFwgOwor55iDPnpow7p8XCA7CivnmIU+ZMOgbnxcIDsKK+eYkT5ndcSBfFwgOwor55iSPnfDqW58XCA7CivnmJY+ecSrbnxcIDsKK+eYmj5qdcOpfFwgOwor55ibPmNow6x8XCA7CivnmKM+bMSbaXxcIDsKK+eYpz5uw7zDqHxcIDsKK+eYsD5sdceSfFwgOwor55i2PmzDsnV8XCA7CivnmLc+c3XHknxcIDsKK+eYuj5sw7J1fFwgOwor55i9PmrDrG58XCA7CivnmYU+bGnDunxcIDsKK+eZhj5sw6FvfFwgOwor55mIPmbDqGl8XCA7CivnmYk+ZMSBbnxcIDsKK+eZkz53w6lpfFwgOwor55mXPmzEm2l8XCA7CivnmZk+c2jHlHxcIDsKK+eZmj5kw6BufFwgOwor55mbPmzHkG58XCA7CivnmZ0+bMeQbnxcIDsKK+eZnz5iacSbfFwgOwor55mhPmNoxKt8XCA7CivnmaQ+amnDqXxcIDsKK+eZqD5odcOyfFwgOwor55mpPmzDoGl8XCA7Civnma4+eceQbnxcIDsKK+eZsT50xIFufFwgOwor55mzPmx1x5J8XCA7CivnmoM+bcOgb3xcIDsKK+eajD5odcSrfFwgOwor55qQPmfEgW98XCA7CivnmpQ+aMOgbnxcIDsKK+eanD5ow6BvfFwgOwor55qdPmN1w6x8XCA7Civnmp4+aMOgb3xcIDsKK+eaoD5jdceQfFwgOwor55qhPmjDoG98XCA7CivnmqU+aMOgb3xcIDsKK+earz5nx45ufFwgOwor55qwPnDDoG98XCA7CivnmrM+cWnDunxcIDsKK+eatT5xdcOofFwgOwor55q2PnpoxIF8XCA7Civnmrg+asWrbnxcIDsKK+eauT5qxatufFwgOwor55uDPmLEk2l8XCA7Civnm4w+d8eObnxcIDsKK+eblT5mw6BufFwgOwor55uaPnFpw7p8XCA7Civnm5w+ZMOgb3xcIDsKK+eboD5qx5BufFwgOwor55uhPmrDrG58XCA7Civnm6Q+cMOhbnxcIDsKK+ebqD5zaMeUfFwgOwor55uwPmfHjm58XCA7Civnm7o+ZsOpbnxcIDsKK+ebvz5tw61ufFwgOwor55yDPnnDum58XCA7CivnnIU+cMSBbnxcIDsKK+ecij5tw6BvfFwgOwor55yOPnNow6x8XCA7CivnnJE+eceOb3xcIDsKK+eckz5odcOyfFwgOwor55ybPm3DqGl8XCA7CivnnKM+ZGnDqXxcIDsKK+ecsD5kacOpfFwgOwor55y/Pm3DoGl8XCA7CivnnYI+bcOpaXxcIDsKK+edhT5ow6BufFwgOwor552JPmN1xY18XCA7CivnnYw+d8eObnxcIDsKK+edjz5rw7lufFwgOwor552UPmjHlG58XCA7CivnnZU+d8SBbnxcIDsKK+edlz5zaMOsfFwgOwor552ZPmxpw6h8XCA7CivnnZ4+bMOgaXxcIDsKK+ednz5zdcOsfFwgOwor552nPmjFq258XCA7Civnna8+aMWrbnxcIDsKK+edsT54acOgfFwgOwor5520PmfDuW58XCA7CivnnbU+Y8SBaXxcIDsKK+eduD5tw6hpfFwgOwor5526PmjDs3V8XCA7CivnnoM+Z3XDrHxcIDsKK+eehj5rdcOsfFwgOwor556JPmvDsnV8XCA7Civnno0+c8eSdXxcIDsKK+eekD5tw6BvfFwgOwor556TPm3DqW58XCA7Civnnpw+bMWNdXxcIDsKK+eenT5jaMSrfFwgOwor556ePm3DoW58XCA7Civnnq4+Y2jDqHxcIDsKK+eetD5tw7N1fFwgOwor5561PmzDrW58XCA7CivnnrY+Z3XDrHxcIDsKK+eeuj5odcOsfFwgOwor55+APnfDqWl8XCA7Civnn4I+c8Ogb3xcIDsKK+efhD54xatufFwgOwor55+FPnnDoG98XCA7Civnn4Y+aHXDsnxcIDsKK+efiT5ixKtufFwgOwor55+QPmh1w7J8XCA7Civnn5U+bceObnxcIDsKK+efmT5rw6BufFwgOwor55+aPnpox5R8XCA7Civnn50+anXDqXxcIDsKK+efoT5qdcOpfFwgOwor55+mPmjDs3V8XCA7Civnn7E+aHXDsnxcIDsKK+efsj5ix45pfFwgOwor55+6PnR1xY18XCA7CivnoIM+ZMSBbnxcIDsKK+eghD5qdcOpfFwgOwor56CHPm3DrW58XCA7CivnoIg+bnXHknxcIDsKK+egiz5xacOofFwgOwor56COPmppw6h8XCA7CivnoI8+ZsSTbnxcIDsKK+egkz56aMOpfFwgOwor56CVPnN1w6x8XCA7CivnoJk+cMSBbnxcIDsKK+egnz56aMeOfFwgOwor56CiPmx1x5J8XCA7CivnoKQ+dHXDs3xcIDsKK+egqz56aMeUfFwgOwor56CyPnDDoG98XCA7CivnoLk+bnXHknxcIDsKK+ehgz56aMWrfFwgOwor56GIPmppw6F8XCA7CivnoYo+d8SbaXxcIDsKK+ehjT5rw6hufFwgOwor56GPPnnDoW58XCA7CivnoZk+d8OoaXxcIDsKK+ehpD54acOhfFwgOwor56GoPmNoxJN8XCA7Civnoak+Y2jDqHxcIDsKK+ehrz55w6BufFwgOwor56GwPnNoxIF8XCA7CivnobE+a8eUbnxcIDsKK+ehuD5uw7zDqHxcIDsKK+ehvT5sacO5fFwgOwor56KEPmzDrW58XCA7CivnooU+asWrbnxcIDsKK+eiiD5tw61ufFwgOwor56KPPnF1w6h8XCA7CivnopI+ecOtbnxcIDsKK+eilj5sw7lufFwgOwor56KePnnDoW58XCA7CivnoqQ+d8SbaXxcIDsKK+eiqD53xJNpfFwgOwor56KsPnhpw6F8XCA7Civnoq8+bseOb3xcIDsKK+eiuj5xdcOofFwgOwor56K7PnF1w6h8XCA7Civno4I+bGnDuXxcIDsKK+ejhj5odcOhfFwgOwor56OIPnfEm2l8XCA7Civno5E+d8OoaXxcIDsKK+ejkz5kdcSrfFwgOwor56OhPmvDoG58XCA7Civno6Q+ecSrbnxcIDsKK+ejpT5sxJtpfFwgOwor56OqPmN1xKt8XCA7Civno7E+bMOhb3xcIDsKK+ejuz5ww6FufFwgOwor56SKPmh1w7J8XCA7CivnpIw+bMOpaXxcIDsKK+ekjj5jaMeUfFwgOwor56SQPnF1w6h8XCA7CivnpJc+cMSrbnxcIDsKK+ekmj5rw6BpfFwgOwor56ScPmzDqWl8XCA7CivnpJ8+cMOgb3xcIDsKK+ekoz5tacOofFwgOwor56SnPmzDqGl8XCA7CivnpKg+bMSbaXxcIDsKK+ekqT56aMOsfFwgOwor56SsPmbDoW58XCA7CivnpK0+cXXDqHxcIDsKK+ekrj5ww6BvfFwgOwor56S3PmzDoW58XCA7CivnpLg+eseObnxcIDsKK+ekuT55w6FufFwgOwor56S/Pnl1w6h8XCA7CivnpYQ+eGnDqHxcIDsKK+elhT55xIFvfFwgOwor56WLPmR1w6x8XCA7CivnpY4+ZsOoaXxcIDsKK+eljz5zaMOtfFwgOwor56WQPnnDsnV8XCA7CivnpZE+emjDrHxcIDsKK+elmT5tw6hpfFwgOwor56WqPmd1x5B8XCA7Civnpas+eGnDoXxcIDsKK+elrD56aMSrfFwgOwor56WuPmfDoG98XCA7CivnpbA+Z8Ogb3xcIDsKK+elsj5qxKtufFwgOwor56W0PmfEgWl8XCA7CivnpbU+a8eUbnxcIDsKK+eltj5ix5BufFwgOwor56W5PnTDoW98XCA7Civnpb0+enXDrHxcIDsKK+emgz56aMOtfFwgOwor56aGPmLEk2l8XCA7Civnpoc+emjEm3xcIDsKK+emiT55x5J1fFwgOwor56aLPnnEq258XCA7Civnpo0+aHXDsnxcIDsKK+emlj5tw6lpfFwgOwor56aePmfDoG98XCA7Civnpqs+dMeObnxcIDsKK+emrD5ndcOsfFwgOwor56axPmTHjm98XCA7CivnprQ+eXXDqHxcIDsKK+emtj56x45ufFwgOwor56a3PmzDqGl8XCA7Civnprg+csOzdXxcIDsKK+emvD54acOofFwgOwor56eCPnLDqW58XCA7Civnp4U+Y2jDoXxcIDsKK+enjD5xacWrfFwgOwor56eOPmbDqW58XCA7Civnp48+aMOgb3xcIDsKK+enkD55w7pufFwgOwor56eTPnpoxKt8XCA7Civnp5Y+emjEq3xcIDsKK+enmj5iw6BufFwgOwor56eePnnDs3V8XCA7Civnp6g+enXDs3xcIDsKK+enqj56aMSrfFwgOwor56euPmh1w7N8XCA7Civnp7I+emjDrHxcIDsKK+ensz5odcOzfFwgOwor56e1PnnEq258XCA7Civnp7c+emjDrXxcIDsKK+enuT5jaMeQfFwgOwor56e8PmfDoG98XCA7CivnqIE+a8eOb3xcIDsKK+eohz5rx5RufFwgOwor56iIPmfHjm58XCA7CivnqJA+bMeUbnxcIDsKK+eokz56dcOzfFwgOwor56iZPnpow618XCA7CivnqJs+a8eUbnxcIDsKK+eonT5odcOgfFwgOwor56ihPmzDvMSbfFwgOwor56ikPmzDvMOofFwgOwor56isPm51w7J8XCA7CivnqK0+amnEk3xcIDsKK+eosj5kw6BvfFwgOwor56i+PmfHjm98XCA7CivnqYE+Y8eObnxcIDsKK+epgj5zdcOsfFwgOwor56mIPm3DqW58XCA7CivnqYk+emjDrHxcIDsKK+epjz53xJtufFwgOwor56mQPnFpxat8XCA7CivnqZU+cWnDqHxcIDsKK+epnz5zdcOsfFwgOwor56miPmh1w6x8XCA7CivnqaQ+bnXDsnxcIDsKK+eppj5ixKtufFwgOwor56moPnR1w618XCA7Civnqak+d8SbbnxcIDsKK+epqz5odcOyfFwgOwor56mxPmp1w6l8XCA7CivnqbM+esOgbnxcIDsKK+epuz50w7pufFwgOwor56m8PnPEk258XCA7Civnqb4+ecOgb3xcIDsKK+eqgj5sw6FvfFwgOwor56qFPnnHjm98XCA7Civnqoc+YsOhb3xcIDsKK+eqiz56aMO6fFwgOwor56qQPmd1xKt8XCA7CivnqpQ+eceOb3xcIDsKK+eqmz5rw7J1fFwgOwor56qePmTDoG58XCA7Civnqq8+ecOhb3xcIDsKK+eqsD55w6FvfFwgOwor56q3Pmt1x5B8XCA7Civnqro+a3XEq3xcIDsKK+ergT5jdcOsfFwgOwor56uDPnrDoG98XCA7Civnq4c+ZMOydXxcIDsKK+eriD53w6hpfFwgOwor56uKPnFpw6h8XCA7Civnq4w+Y2jDuXxcIDsKK+erjT5zaMOtfFwgOwor56uOPmbDsnV8XCA7Civnq5A+Y2jDuXxcIDsKK+erlT5zaMOtfFwgOwor56uqPnNow7l8XCA7Civnq7Q+Y3XEq3xcIDsKK+ertz5rw6BufFwgOwor56u7PmfHjm58XCA7Civnq74+Y2jDrXxcIDsKK+esgT56aMO6fFwgOwor56ySPmPDqW58XCA7CivnrJo+eGnDoXxcIDsKK+esnD56aMO6fFwgOwor56yhPnFpw6h8XCA7CivnrKI+bceQbnxcIDsKK+esoz5ixIFvfFwgOwor56ypPnDDqGl8XCA7CivnrK8+ZsOhbnxcIDsKK+essj5mw6FufFwgOwor56y1PmbDoG58XCA7CivnrLY+c2jHkHxcIDsKK+estz5tx45vfFwgOwor56y/Pmx1w7J8XCA7CivnrYA+Z3XDrHxcIDsKK+etgj5jaMOtfFwgOwor562DPnnEq258XCA7CivnrYQ+ecOgb3xcIDsKK+etiD5ndcSBfFwgOwor562NPnPHlG58XCA7CivnrZk+bMOhaXxcIDsKK+etqD5ow6FufFwgOwor562qPmppxIF8XCA7Civnras+emjDrHxcIDsKK+etrz56aMO5fFwgOwor562wPnp1w7N8XCA7CivnrbY+Z8eOb3xcIDsKK+etuD5nxIFufFwgOwor5628PnnDum58XCA7CivnroI+bMOhaXxcIDsKK+eugz56xY11fFwgOwor566IPmNow618XCA7Civnro4+Y2jDrXxcIDsKK+eukT5zaMOgfFwgOwor566WPmzDrW58XCA7Civnrpg+asO5bnxcIDsKK+eumj56aMOhfFwgOwor566fPmrDuW58XCA7Civnrqg+dHXDsnxcIDsKK+eusD5zx5RufFwgOwor5663PnNoxKt8XCA7Civnr4A+amnDqXxcIDsKK+evgz5tw6lpfFwgOwor56+EPmbDoG58XCA7Civnr4k+emjDunxcIDsKK+eviz5xacOofFwgOwor56+NPnFpxat8XCA7Civnr5Q+ecO6bnxcIDsKK+evlz55dcOofFwgOwor56+bPnJ1w7J8XCA7Civnr54+bmnDqHxcIDsKK+evqD5jaMO6fFwgOwor56+qPmNow618XCA7Civnr6s+emjDunxcIDsKK+evsj5odcOsfFwgOwor56+2PnnEgW58XCA7Civnr7g+c8STbnxcIDsKK+evuj5ww6FpfFwgOwor57CCPmd1w7N8XCA7CivnsIY+a8OydXxcIDsKK+ewjT5sx5J1fFwgOwor57CRPnN1xY18XCA7CivnsJQ+c3XFjXxcIDsKK+ewnj5kxIFufFwgOwor57CiPm3HkG58XCA7CivnsKM+a3XDrHxcIDsKK+ewpD5kw6BpfFwgOwor57CoPnPHlG58XCA7CivnsKk+bMOhb3xcIDsKK+ewrT5zaMOsfFwgOwor57CuPnrEgW58XCA7CivnsLA+cMOhaXxcIDsKK+ewsj5nx45ufFwgOwor57CzPmfDoG58XCA7CivnsLc+ecOhbnxcIDsKK+ewuj5zw6BpfFwgOwor57GDPmzDoW58XCA7CivnsYQ+a3XDrHxcIDsKK+exhj55dcOofFwgOwor57GHPmjDoW98XCA7CivnsYk+dMOhaXxcIDsKK+exkj5mw6FufFwgOwor57GTPmbEgW58XCA7CivnsZQ+c8eSdXxcIDsKK+exnD50dcOyfFwgOwor57GfPmzDoGl8XCA7CivnsaM+bMOhbnxcIDsKK+expT55dcOofFwgOwor57GuPmx1w7N8XCA7CivnsbA+eXXDqHxcIDsKK+extT5mw6FufFwgOwor57G3Pnpow6l8XCA7Civnsbo+eGnDqXxcIDsKK+exvz5jw7lufFwgOwor57KEPmLHjm58XCA7CivnsoY+c2jEgXxcIDsKK+eyiD5yx5J1fFwgOwor57KLPmN1w6x8XCA7Civnso4+Y2jHkHxcIDsKK+eykz5nxIFufFwgOwor57KmPmzDrW58XCA7Civnsqg+YseOaXxcIDsKK+eytT55dcOofFwgOwor57K6PmLDoGl8XCA7Civnsr8+Z3XHknxcIDsKK+ezgj5yw7N1fFwgOwor57OPPnhpw6h8XCA7Civns5I+YsOoaXxcIDsKK+ezlD54aceUfFwgOwor57OdPnPHjm58XCA7Civns54+ZsOobnxcIDsKK+ezoz5zx45ufFwgOwor57OkPmNow6x8XCA7Civns6U+bnXDsnxcIDsKK+ezsT5uacOofFwgOwor57OzPnp1w7J8XCA7Civns7U+bmnDqHxcIDsKK+eztz5sw6FufFwgOwor57O6Pmppxat8XCA7Civns74+amnFq3xcIDsKK+e0gT5jaMOgfFwgOwor57SDPnjDum58XCA7CivntIQ+ecSBb3xcIDsKK+e0iD53w6FufFwgOwor57SJPnLDqG58XCA7CivntIs+d8OpbnxcIDsKK+e0jz50x5J1fFwgOwor57SQPm5px5R8XCA7CivntJE+ZsOzdXxcIDsKK+e0kj5qacOofFwgOwor57STPnNoxat8XCA7CivntJY+eceQbnxcIDsKK+e0lz5zaMSBfFwgOwor57SZPnpox5B8XCA7CivntJs+ZsSTbnxcIDsKK+e0nD55w7pufFwgOwor57SdPnLDqG58XCA7CivntJ4+ZMeObnxcIDsKK+e0nz5qxKtufFwgOwor57SjPmN1w6x8XCA7CivntKQ+amnHlHxcIDsKK+e0pT56aMOhfFwgOwor57SpPnpow6x8XCA7CivntLI+eGnDqHxcIDsKK+e0tD5iw6hpfFwgOwor57S1Pnpow7l8XCA7CivntLg+emjDuXxcIDsKK+e0uj5nw6BufFwgOwor57S9PnR1w7N8XCA7CivntL8+ZMOgaXxcIDsKK+e1gD5jaMO5fFwgOwor57WGPmLDoG58XCA7CivntYk+c2jDuXxcIDsKK+e1ij56dcOsfFwgOwor57WNPnLDqW58XCA7CivntY8+eGnDqHxcIDsKK+e1kD5qacSTfFwgOwor57WTPmd1w6B8XCA7CivntZQ+YseOaXxcIDsKK+e1lT5qdcOpfFwgOwor57WbPnTEgW98XCA7CivntZw+amnDqXxcIDsKK+e1nz5sw6BvfFwgOwor57WgPmfHjml8XCA7CivntaE+bMOgb3xcIDsKK+e1pD5iw6hpfFwgOwor57WmPmfEm2l8XCA7Civntao+ecSrbnxcIDsKK+e1qz5sxJtpfFwgOwor57WsPnhpw6h8XCA7Civnta8+Z8SBaXxcIDsKK+e1sD5kacOpfFwgOwor57W1Pmh1w6x8XCA7CivntbY+anXDqXxcIDsKK+e1uj5jaMSrfFwgOwor57W/PnFpw7p8XCA7CivntoA+c2jFq3xcIDsKK+e2hT5xxKtufFwgOwor57aJPnTDsnV8XCA7Civnto8+c3XDrXxcIDsKK+e2kD5kdcOsfFwgOwor57aRPmvHlG58XCA7CivntpU+emjEq3xcIDsKK+e2lj55w6FufFwgOwor57aePmR1x5J8XCA7Civntqk+d8eObnxcIDsKK+e2rT53w6lpfFwgOwor57avPnTDoW98XCA7CivntrA+d8eObnxcIDsKK+e2tT5jx45pfFwgOwor57a2Pmd1x5J8XCA7Civntrc+Y3XDrHxcIDsKK+e2uD5sw7pufFwgOwor57a5Pmxpx5R8XCA7Civntrw+YsSTaXxcIDsKK+e3gT5xacOofFwgOwor57eCPnTEgW58XCA7Civnt4M+aMO6bnxcIDsKK+e3hD5nx5RufFwgOwor57eFPnrFjXV8XCA7Civnt4o+aseQbnxcIDsKK+e3iz5mxJNpfFwgOwor57eMPnJ1w618XCA7Civnt40+bcOtbnxcIDsKK+e3kD5mw6FufFwgOwor57ehPm3DrW58XCA7Civnt6U+YseOb3xcIDsKK+e3pz5xacWrfFwgOwor57etPnfDqGl8XCA7Civnt68+d8SbaXxcIDsKK+e3sT5nxY11fFwgOwor57ezPnhpw6l8XCA7Civnt7c+Z3XFjXxcIDsKK+e3uD55xKtufFwgOwor57e6Pmd1xIF8XCA7Civnt7s+emjDrHxcIDsKK+e3vD55xatufFwgOwor57e/PmTDoGl8XCA7CivnuIA+eGnDoXxcIDsKK+e4iT5qw6xufFwgOwor57iPPnDDoW58XCA7CivnuJI+Y3XHknxcIDsKK+e4lT55xatufFwgOwor57iWPmN1xKt8XCA7CivnuJc+Y3XEq3xcIDsKK+e4mj50xIFvfFwgOwor57icPnnDum58XCA7CivnuJ4+Z8eOb3xcIDsKK+e4oT56x45pfFwgOwor57ipPmPDoGl8XCA7CivnuK4+c3XFjXxcIDsKK+e4rz55x45ufFwgOwor57iyPmzDqWl8XCA7CivnuLU+bcOgbnxcIDsKK+e4tj56aMOtfFwgOwor57mAPnN1w6x8XCA7CivnuYU+c8SBb3xcIDsKK+e5iT5ow7pufFwgOwor57mNPnhpw7l8XCA7CivnuY4+csOhbnxcIDsKK+e5kD5zdcOsfFwgOwor57mTPnpow6x8XCA7CivnuZQ+emjEq3xcIDsKK+e5lj5zx45ufFwgOwor57mXPmzDrW58XCA7CivnuZk+ZsSBbnxcIDsKK+e5nD56xatufFwgOwor57mePnLDoG98XCA7CivnuaA+cnXHkHxcIDsKK+e5oT54acO5fFwgOwor57miPmh1w6x8XCA7CivnuaM+aHXDoHxcIDsKK+e5qj5odcOsfFwgOwor57myPmppw6h8XCA7Civnubc+bsOhb3xcIDsKK+e5uD5zdcOsfFwgOwor57m9PmLEq258XCA7Civnub8+bMOhbnxcIDsKK+e6gT54xatufFwgOwor57qDPmzEm2l8XCA7Civnuoc+bMOoaXxcIDsKK+e6iD54acOpfFwgOwor57qLPnnFjXV8XCA7Civnuo0+bMOpaXxcIDsKK+e6lD5jw6FpfFwgOwor57qZPmx1w7J8XCA7Civnup0+bMOpaXxcIDsKK+e6tD5yw6lufFwgOwor57q8PnnHkG58XCA7Civnu5Y+ZGnDqXxcIDsKK+e7sT5tx5BufFwgOwor57u5PnTDoW98XCA7CivnvIo+d8STbnxcIDsKK+e8iz5odcOsfFwgOwor57yNPmR1x5J8XCA7CivnvJ4+Y3XEq3xcIDsKK+e8sj56x45vfFwgOwor57y3Pnhpw6h8XCA7CivnvLk+ZseSdXxcIDsKK+e8uz5mx5J1fFwgOwor57y/PmjDsnV8XCA7CivnvYc+esWrbnxcIDsKK+e9iD50w6FufFwgOwor572NPmzDqWl8XCA7CivnvY4+dMOhbnxcIDsKK+e9nD5qacSTfFwgOwor572gPm3DrW58XCA7CivnvaM+Z3XDoHxcIDsKK+e9pz5sw61ufFwgOwor572rPmd1w6B8XCA7Civnvaw+bMeObnxcIDsKK+e9sT5ux45ufFwgOwor5722Pmxpx5R8XCA7Civnvbs+d8OoaXxcIDsKK+e+gD5saceUfFwgOwor576FPmx1w7N8XCA7CivnvpA+eceSdXxcIDsKK+e+kT55x5J1fFwgOwor576SPmbDqW58XCA7Civnvpk+Z8SBb3xcIDsKK+e+nD56aMO5fFwgOwor576jPnHDum58XCA7Civnvqc+c3XFjXxcIDsKK+e+sz5mw6FufFwgOwor5761PmbEm258XCA7Civnv4I+ZsSTbnxcIDsKK+e/hD5jaMOsfFwgOwor57+GPmN1w6x8XCA7Civnv4g+eGnDoXxcIDsKK+e/iT5wxJtufFwgOwor57+PPmxpw7l8XCA7Civnv5M+eGnDqXxcIDsKK+e/mT5odcOsfFwgOwor57+aPmh1xKt8XCA7Civnv5s+c2jDuXxcIDsKK+e/oj50xIFvfFwgOwor57+jPnNow6B8XCA7Civnv6Q+Y2jDrHxcIDsKK+e/qD5zaMOsfFwgOwor57+rPnfDoG58XCA7Civnv6w+aHXEq3xcIDsKK+e/rT5ow7N1fFwgOwor57+3PmzDrW58XCA7Civnv7g+cMSbbnxcIDsKK+e/vT5odcOsfFwgOwor57+/PmTDoG98XCA7CivogIc+Z8eSdXxcIDsKK+iAiD5nx5J1fFwgOwor6ICJPmfHknV8XCA7CivogIo+ZGnDqHxcIDsKK+iAmj5odcWNfFwgOwor6ICbPmNow618XCA7CivogJ0+Y2jDunxcIDsKK+iAnj5qacSBfFwgOwor6IChPmNow7p8XCA7CivogKI+bMOgb3xcIDsKK+iAoz5sx5RufFwgOwor6IClPmzHknV8XCA7CivogKc+bMOzdXxcIDsKK+iArD5sw7N1fFwgOwor6ICuPmzDoG98XCA7CivogK8+aHXDsnxcIDsKK+iAsD55xY11fFwgOwor6IC5PnHDrW58XCA7CivogLo+ecO6bnxcIDsKK+iAvD5kxIFufFwgOwor6IGAPnpow618XCA7CivogYU+Y2jDqHxcIDsKK+iBiD55x5J1fFwgOwor6IGOPmd1xY18XCA7CivogZE+ZGnDqXxcIDsKK+iBlT5ow6BvfFwgOwor6IGXPmxpw6h8XCA7CivogZ0+Z3XDs3xcIDsKK+iBnj53w6lufFwgOwor6IGnPmt1w618XCA7Civoga0+a3XDrHxcIDsKK+iBtT5rdcOsfFwgOwor6IG2Pm5pw6h8XCA7Civogbc+emjDrXxcIDsKK+iBuD5kxIFufFwgOwor6IG6PnFpxJN8XCA7Civogoo+asSrbnxcIDsKK+iCjT5xacO6fFwgOwor6IKOPmvEm258XCA7Civogo8+Y8Ogb3xcIDsKK+iClT5yw6hufFwgOwor6IKePmNoxIF8XCA7CivogqY+YsSBbnxcIDsKK+iCpz5wxJNpfFwgOwor6IKwPnLDoW58XCA7CivogrU+asOsbnxcIDsKK+iDhT5kacOpfFwgOwor6IOHPmLEk2l8XCA7Civog5E+emjEq3xcIDsKK+iDnz5jaMeQfFwgOwor6IOyPmjHjml8XCA7Civog7U+emjDrHxcIDsKK+iDvz5ndcSrfFwgOwor6ISDPmN1w6x8XCA7CivohIQ+bcOpaXxcIDsKK+iEhT54acOpfFwgOwor6ISHPnhpw6l8XCA7CivohIg+bcOgaXxcIDsKK+iElT53x45ufFwgOwor6ISXPnfEm258XCA7CivohJk+anXDqXxcIDsKK+iEnD5xacSTfFwgOwor6ISiPm3DqWl8XCA7CivohKk+eGnFq3xcIDsKK+iEqj50dcOsfFwgOwor6ISrPnR1xY18XCA7CivohK4+bsSbaXxcIDsKK+iEsD5kw7J1fFwgOwor6IS2Pmd1xIF8XCA7CivohLo+Y3XDrHxcIDsKK+iEuz5qacOpfFwgOwor6IWCPmd1w7J8XCA7CivohYM+a3XDrHxcIDsKK+iFhT5kw6BufFwgOwor6IWHPm7Em2l8XCA7CivohYk+amnEk3xcIDsKK+iFjT5yxJtufFwgOwor6IWcPm3DqWl8XCA7CivohZ4+ZMO5bnxcIDsKK+iFnz5sdcOzfFwgOwor6IWgPmPDsnV8XCA7CivohaE+Z3XEgXxcIDsKK+iFoj5uw6BvfFwgOwor6IWmPm7Hjm98XCA7Civohao+ecO5bnxcIDsKK+iFrD5yw7N1fFwgOwor6IWyPmp1w6l8XCA7CivohbU+amnEgXxcIDsKK+iGhD5zw7J1fFwgOwor6IaOPnhpw6l8XCA7CivohpU+Z3XDs3xcIDsKK+iGoT5sacO6fFwgOwor6IajPmzDrG58XCA7Civohqw+Y3XDrHxcIDsKK+iGrT5ndcSrfFwgOwor6IawPmbDoW58XCA7CivohrE+emjDrXxcIDsKK+iGtT5jdcOsfFwgOwor6Ia2PnLDuW58XCA7Civohrg+c3XHkHxcIDsKK+iGuT5mw6hufFwgOwor6Ia8PmLDqGl8XCA7Civohr0+ZMeObnxcIDsKK+iHhD5qdcOpfFwgOwor6IeFPmNow7l8XCA7Civoh44+Y3XDrHxcIDsKK+iHjz5iw6xufFwgOwor6IeQPnjFq258XCA7Civoh5I+aHXDsnxcIDsKK+iHmT55xIFufFwgOwor6IebPmh1w7J8XCA7Civoh50+bHXHknxcIDsKK+iHqD5sw61ufFwgOwor6IeuPmRpw6l8XCA7Civoh68+Z8SBb3xcIDsKK+iHsj5uacOofFwgOwor6Ie3PmRpw6l8XCA7Civoh7g+emjDrHxcIDsKK+iHuT54acWrfFwgOwor6Ie6PnTDoWl8XCA7Civoh78+Y2jEgXxcIDsKK+iIij5qacO5fFwgOwor6IiLPnjDrG58XCA7CivoiI8+amnHlHxcIDsKK+iIkT50xIFufFwgOwor6IiTPnNow6x8XCA7CivoiJU+ZMOgbnxcIDsKK+iImT5odcOgfFwgOwor6IiaPnTEgW58XCA7CivoiJ0+eGnDoXxcIDsKK+iIoD5kxIFvfFwgOwor6IimPnTDoGl8XCA7CivoiKc+ZsOhbnxcIDsKK+iIuj54acOhfFwgOwor6ImBPnrDoG98XCA7CivoiZI+bcOgb3xcIDsKK+iJkz5kacOpfFwgOwor6ImWPmNoxIF8XCA7CivoiZs+bMOzdXxcIDsKK+iJnD5kw6BpfFwgOwor6ImePnnDoG98XCA7CivoiaI+dMOhbnxcIDsKK+iJpT5qacOofFwgOwor6ImnPmh1w7J8XCA7CivoibY+ecOgbnxcIDsKK+iJtz55w6BufFwgOwor6Im4PmPHjm98XCA7CivoioA+amnEk3xcIDsKK+iKhD53w6FufFwgOwor6IqIPm1pxJN8XCA7Civoiok+Z8SBbnxcIDsKK+iKlD5odceQfFwgOwor6IqVPnN1xKt8XCA7Civoipo+dMO6bnxcIDsKK+iKmz53xJtpfFwgOwor6IqgPmbDs3V8XCA7CivoiqI+csOpbnxcIDsKK+iKoz5mw7N1fFwgOwor6IqkPmvFjXV8XCA7CivoirI+aHXEgXxcIDsKK+iKtT5qdcOpfFwgOwor6Iq2PmfFjXV8XCA7Civoirs+Y2jDunxcIDsKK+iKvD5tw6BvfFwgOwor6IuCPnnDrW58XCA7Civoi4M+eceSdXxcIDsKK+iLnT5ww6hpfFwgOwor6IugPm3DrW58XCA7Civoi6Q+cGnEm3xcIDsKK+iLpz56aMO5fFwgOwor6IusPnFpw7p8XCA7Civoi60+eceOb3xcIDsKK+iLsj56aMeOfFwgOwor6Iu1PmRpw6l8XCA7Civoi7Y+bmnDqXxcIDsKK+iLuj5tw6lpfFwgOwor6Iu/PnfDqGl8XCA7CivojI0+Z8eSdXxcIDsKK+iMkz54dcOpfFwgOwor6IyaPnnDrG58XCA7CivojKA+eGnFq3xcIDsKK+iMoT5kdcWNfFwgOwor6IyiPmxpw6h8XCA7CivojKU+Z3XEq3xcIDsKK+iMqT5nx5J1fFwgOwor6Iy/Pnpow7p8XCA7CivojYI+a3XEgXxcIDsKK+iNhD5nxIFpfFwgOwor6I2OPmNow618XCA7CivojZU+asSrbnxcIDsKK+iNlj5sx45vfFwgOwor6I2XPnNow7l8XCA7CivojZs+csOhb3xcIDsKK+iNsT53xJtpfFwgOwor6I2yPmNow7l8XCA7CivojbM+ZMOydXxcIDsKK+iNtT5yxJtufFwgOwor6I22PnnDrW58XCA7Civojbo+ecO6bnxcIDsKK+iOgj5iacOpfFwgOwor6I6HPmNow618XCA7Civojow+ZHXDs3xcIDsKK+iOjT5xacO6fFwgOwor6I6PPm3DqGl8XCA7Civojpc+Y2jEk3xcIDsKK+iOmT5qxatufFwgOwor6I6aPnnDoW58XCA7Civojp0+Y3XDsnxcIDsKK+iOnz5ow6BufFwgOwor6I6hPmN1w7J8XCA7CivojqI+amnDoXxcIDsKK+iOpD55w7N1fFwgOwor6I6lPm5px5R8XCA7Civojq0+amnDqXxcIDsKK+iOrj5uw6FufFwgOwor6I64PnnDs3V8XCA7Civoj4Y+esWNdXxcIDsKK+iPiz53w6hpfFwgOwor6I+NPmrDuW58XCA7Civoj44+a8WrbnxcIDsKK+iPkz5ndceSfFwgOwor6I+VPmzDum58XCA7Civoj5s+bcOpbnxcIDsKK+iPoj5iw6BvfFwgOwor6I+jPnHDrG58XCA7Civoj6Y+YsOoaXxcIDsKK+iPqD5qacSTfFwgOwor6I+rPmrHkG58XCA7Civoj6w+aHXEgXxcIDsKK+iPrT50w6FpfFwgOwor6I+vPmh1w6F8XCA7Civoj7s+bMeQbnxcIDsKK+iPvD50x45ufFwgOwor6I+/PmTDoG98XCA7CivokIk+ZsOpaXxcIDsKK+iQij5sw6FpfFwgOwor6JCQPnNow6B8XCA7CivokJY+d8eObnxcIDsKK+iQmD5uw6BpfFwgOwor6JCaPnR1w7J8XCA7CivokJs+amnFq3xcIDsKK+iQnD50acSTfFwgOwor6JCpPnFpxat8XCA7CivokKw+d8OgbnxcIDsKK+iQvz5odcOzfFwgOwor6JGAPmd1xIF8XCA7CivokYM+enXDs3xcIDsKK+iRhD56dcOyfFwgOwor6JGHPnLDs3V8XCA7CivokZA+cMOpbnxcIDsKK+iRlD5ow7N1fFwgOwor6JGVPnnDoW58XCA7CivokZg+csOobnxcIDsKK+iRnD5qacOpfFwgOwor6JGdPmLDqGl8XCA7CivokaI+Z8OgaXxcIDsKK+iRpD5qacOofFwgOwor6JGmPnfEm2l8XCA7Civokag+d8STaXxcIDsKK+iRrz55w6BvfFwgOwor6JGwPmrDuW58XCA7Civokbc+aMWrbnxcIDsKK+iRuT5zaMSrfFwgOwor6JG7PmzDoW58XCA7Civokb0+ecSBb3xcIDsKK+iRvz5tw6lpfFwgOwor6JKAPnnFq258XCA7CivokoE+c2jDuXxcIDsKK+iShj54dcSTfFwgOwor6JKIPmvHjml8XCA7Civokok+a3XDrHxcIDsKK+iSjT53w6lpfFwgOwor6JKOPnDDoGl8XCA7CivokpA+c8WNdXxcIDsKK+iSkT55xKtufFwgOwor6JKSPnNoxKt8XCA7CivokpQ+c2jDrXxcIDsKK+iSmz5xdcSTfFwgOwor6JKiPmNow7p8XCA7CivokqU+bGnDunxcIDsKK+iSqz5jdcWNfFwgOwor6JKtPmNow7p8XCA7Civokrc+ecO6bnxcIDsKK+iSuz5ydcOyfFwgOwor6JOAPnPFq258XCA7Civok4I+aHXDsnxcIDsKK+iTgz5zxY11fFwgOwor6JOFPmxpw7p8XCA7Civok4s+Z8OgaXxcIDsKK+iTjD5jdcOyfFwgOwor6JOPPmx1x5J8XCA7Civok5Q+eceOb3xcIDsKK+iTlT5ndcOsfFwgOwor6JOYPmfHlG58XCA7Civok5o+eGnFq3xcIDsKK+iToT5jxIFufFwgOwor6JOpPm3DoG98XCA7Civok6s+emjDunxcIDsKK+iTsj5xacWrfFwgOwor6JOzPmrDrG58XCA7Civok7U+amnDqXxcIDsKK+iTtj53xJtpfFwgOwor6JO3PnR1xKt8XCA7Civok7g+Y8Ohb3xcIDsKK+iUgj5sdcOzfFwgOwor6JSEPm3DoG58XCA7CivolIU+ecOhbnxcIDsKK+iUiT5nx5RufFwgOwor6JSKPmjHjm58XCA7CivolI4+c2jDqHxcIDsKK+iUkj54xatufFwgOwor6JSWPmN1w7N8XCA7CivolJg+c8STbnxcIDsKK+iUnj5sw7N1fFwgOwor6JSnPmh1w6x8XCA7CivolKg+asO5bnxcIDsKK+iUqT55w61ufFwgOwor6JStPnnDrG58XCA7CivolLE+c2jEgXxcIDsKK+iUsj5rw7J1fFwgOwor6JS/PnfDqWl8XCA7CivolYE+eMO6bnxcIDsKK+iVjD5sxJtpfFwgOwor6JWPPmNow7p8XCA7CivolZA+aHXDoXxcIDsKK+iVkj5tx45pfFwgOwor6JWTPnnDum58XCA7CivolZQ+YsSBb3xcIDsKK+iVlT55w7N1fFwgOwor6JWYPnLDoW98XCA7CivolZw+ZsSbaXxcIDsKK+iVnT5qdcOpfFwgOwor6JWhPmbDqW58XCA7CivolaI+a3XDrHxcIDsKK+iVsD55w7lufFwgOwor6JW1PnPFq258XCA7Civolbg+eGnDoXxcIDsKK+iVvD5ox45vfFwgOwor6JaAPnnDuW58XCA7CivoloM+aMOgb3xcIDsKK+iWiD5odcOsfFwgOwor6JaJPnfDqGl8XCA7Civolo4+bWnDqHxcIDsKK+iWkj5jw6BufFwgOwor6JadPmvDoG58XCA7Civolp4+c8WrbnxcIDsKK+iWoD5mw6FufFwgOwor6JaiPmppxJN8XCA7CivolqU+c2jHlHxcIDsKK+iWpz5rx45vfFwgOwor6JarPnjFq258XCA7Civolqw+ecOgb3xcIDsKK+iWsT5kdcOsfFwgOwor6JayPnDDrW58XCA7CivolrM+d8SbaXxcIDsKK+iXgz5ow6BvfFwgOwor6JeNPmzDoW58XCA7Civol44+asOsbnxcIDsKK+iXkj5xacOofFwgOwor6JebPnhpxJt8XCA7Civol58+bMSbaXxcIDsKK+iXoj56aMeQfFwgOwor6JejPmLEk2l8XCA7Civol6U+ecOgb3xcIDsKK+iXqj5zx5J1fFwgOwor6JerPmh1w618XCA7Civol6w+dHXEq3xcIDsKK+iXrz53w6hpfFwgOwor6JewPmxpw7p8XCA7Civol7E+aHXDrHxcIDsKK+iXsz5nx45vfFwgOwor6Je0PnnDuW58XCA7Civol7c+c2jHlHxcIDsKK+iXuD5jaMO6fFwgOwor6Je6PmzDrG58XCA7Civol74+bMOgaXxcIDsKK+iYgD50dcOyfFwgOwor6JiDPnJ1x5B8XCA7CivomIg+dHXDrXxcIDsKK+iYij55w7lufFwgOwor6JiLPnDDrW58XCA7CivomI0+eMWrbnxcIDsKK+iYlz5uacOofFwgOwor6JijPmh1xIF8XCA7CivomKQ+d8SbaXxcIDsKK+iYqz5sw6FufFwgOwor6JisPmt1xKt8XCA7CivomK0+bMOhbnxcIDsKK+iYsT5sw6hpfFwgOwor6JiyPmzDqWl8XCA7CivomLM+aHXHjnxcIDsKK+iYtT56aMOtfFwgOwor6Ji2PnfDqGl8XCA7CivomLc+a3XDrXxcIDsKK+iYvT5sxJtpfFwgOwor6Ji/Pmx1w7N8XCA7CivomYE+a3XDrXxcIDsKK+iZhj5sw6lpfFwgOwor6JmLPm3DqW58XCA7CivomYw+YmnEk3xcIDsKK+iZlT5jaMeUfFwgOwor6JmYPmN1w7N8XCA7CivomZ8+aMOhb3xcIDsKK+iZoz5iw6BvfFwgOwor6JmkPnnDoW58XCA7Civomac+a3XEq3xcIDsKK+iZqD5ixIFufFwgOwor6JmqPnNow7p8XCA7Civoma8+cWnDunxcIDsKK+iZtD56aMOpfFwgOwor6Jm1PnNow6l8XCA7CivombY+aMOhbnxcIDsKK+iZtz5nxIFufFwgOwor6JqHPmNox5B8XCA7Civomok+d8OpbnxcIDsKK+iajj5jw6FufFwgOwor6JqPPnl1w6h8XCA7CivompA+asWrbnxcIDsKK+iakj5yw6FufFwgOwor6JqWPmjDoW98XCA7Civompc+anXDqXxcIDsKK+iamD5odcOtfFwgOwor6JqZPnHDrW58XCA7CivomqA+ZsOpbnxcIDsKK+iaoT5mw6lufFwgOwor6JqmPnLDoW58XCA7CivomrM+Y2jDrXxcIDsKK+iatD55w7J1fFwgOwor6Jq7Pnpow6F8XCA7Civomrw+Z8eSdXxcIDsKK+ibgj5iacSbfFwgOwor6JuFPnLDoW58XCA7Civom4g+dGnDqHxcIDsKK+iblT5odcOtfFwgOwor6JuaPmxpw6h8XCA7Civom6M+amnDqXxcIDsKK+ibqj5xacOofFwgOwor6JurPmd1x5B8XCA7Civom7Y+bGnDqHxcIDsKK+ibtz5xacO6fFwgOwor6Ju6Pmppw6F8XCA7Civom7s+dHXDrHxcIDsKK+ibvD5jaMSTfFwgOwor6Ju9PmLDoGl8XCA7Civom78+aMOgbnxcIDsKK+icjz5kw6BufFwgOwor6JyQPmppw6l8XCA7CivonJE+ZMOgbnxcIDsKK+iclj5odcOtfFwgOwor6JygPmrHlG58XCA7CivonKY+bMO6bnxcIDsKK+icqD5kacOpfFwgOwor6JyqPmd1xY18XCA7CivonKs+a8WrbnxcIDsKK+icrD5nxIFufFwgOwor6JytPmjDoG58XCA7CivonLA+ZsOpaXxcIDsKK+icsj53xJtpfFwgOwor6JyzPmTFq258XCA7CivonLk+cnXDrHxcIDsKK+icvD53xJtpfFwgOwor6J2CPmLHjm58XCA7CivonYU+Y8OhbnxcIDsKK+idkD5tw6BpfFwgOwor6J2UPmppxJN8XCA7CivonZU+c2jDrXxcIDsKK+idmD55x45ufFwgOwor6J2aPnLDs3V8XCA7CivonZs+d8STaXxcIDsKK+idnj5tw6hpfFwgOwor6J2fPnfDqGl8XCA7CivonaI+amnFq3xcIDsKK+idpT5tw6FvfFwgOwor6J2mPnhpxIF8XCA7Civonac+a3XDrXxcIDsKK+idqD5zaMSrfFwgOwor6J2rPnpoxat8XCA7CivonbA+aHXHkHxcIDsKK+idsT5kw6BpfFwgOwor6J21PnFpxat8XCA7Civonbc+Z3XHknxcIDsKK+iduD5ndcSBfFwgOwor6J27Pm7Hjm58XCA7Civonb0+cceUbnxcIDsKK+ieiz5ww6FufFwgOwor6J6MPmLEgW58XCA7CivonpE+cWnDuXxcIDsKK+iekj5ow6BufFwgOwor6J6WPmh1w6F8XCA7Civonpo+bsOgaXxcIDsKK+ienT5odcOsfFwgOwor6J6hPnfDqW58XCA7CivonqQ+c2jDrHxcIDsKK+ierD5jw6FvfFwgOwor6J6xPnfDqGl8XCA7CivonrI+emjDrHxcIDsKK+ieuz5sw7N1fFwgOwor6J68PnHHkG58XCA7Civonr4+eceQbnxcIDsKK+ifgT53w6lufFwgOwor6J+DPnfDoG58XCA7Civon4Q+emjDqXxcIDsKK+ifiD5ndcWNfFwgOwor6J+OPm3Hjm58XCA7Civon5M+ZsOhbnxcIDsKK+iflT56dcSrfFwgOwor6J+XPnFpxat8XCA7Civon5k+emjDrXxcIDsKK+ifnj5iacOpfFwgOwor6J+hPmd1x5B8XCA7Civon6Q+YsSTbnxcIDsKK+ifpj5mw6hpfFwgOwor6J+nPmzDoW98XCA7Civon6g+anXDqXxcIDsKK+ifqT5qdcOpfFwgOwor6J+rPnnDrW58XCA7Civon68+csOhb3xcIDsKK+ifsT5tw7N1fFwgOwor6J+zPnjDum58XCA7CivooII+c2jDqHxcIDsKK+igiz56aMO6fFwgOwor6KCNPnhpxJN8XCA7CivooJQ+aMOhb3xcIDsKK+igmD5qacOpfFwgOwor6KCZPmLEq258XCA7CivooJs+bWnDqHxcIDsKK+ignD5mw6FufFwgOwor6KCdPmzDqWl8XCA7CivooJ4+amnDqXxcIDsKK+igpD5xacWrfFwgOwor6KClPm5pw6h8XCA7CivooKk+emjFq3xcIDsKK+igtj5jw6FufFwgOwor6KC6PmPDoW58XCA7CivooLs+bcOhbnxcIDsKK+igvD5qdcOpfFwgOwor6KC9Pmppw6l8XCA7CivooL4+emjDunxcIDsKK+igvz56aMOhfFwgOwor6KGCPm5pw7l8XCA7CivooYM+bcOgaXxcIDsKK+ihij5tacOofFwgOwor6KGOPmvDoG58XCA7CivooZM+c2jDuXxcIDsKK+ihmz53w6hpfFwgOwor6KGcPmTDoG98XCA7CivooZ4+d8OoaXxcIDsKK+ihnz5kw6BvfFwgOwor6KGmPmfHjm58XCA7Civooa8+ZsSTbnxcIDsKK+ihsT5qacOpfFwgOwor6KG0PmTHjm58XCA7Civoobg+eGnDqHxcIDsKK+ihuj5xw6xufFwgOwor6KG7PnLDoW58XCA7Civoobw+emjEq3xcIDsKK+iigD5qxatufFwgOwor6KKDPmLDoG98XCA7CivoooY+aHXEq3xcIDsKK+iihz5yw6FufFwgOwor6KKJPnR1w7N8XCA7Civooow+YsOgb3xcIDsKK+iijj55w6BvfFwgOwor6KKPPnp1w7J8XCA7CivoopU+c2jDuXxcIDsKK+iinT5mw6FufFwgOwor6KKePmfHlG58XCA7Civoop8+emjDrHxcIDsKK+iioD56aMOsfFwgOwor6KKhPnLDoW58XCA7CivooqM+bcOzdXxcIDsKK+iipT50dcWNfFwgOwor6KKnPmvFjXV8XCA7Civooqw+ZHXHknxcIDsKK+iisz5jaMeQfFwgOwor6KK0Pmppw6l8XCA7CivoorU+csOobnxcIDsKK+iiuD5jw7pufFwgOwor6KK6Pmppw6l8XCA7Civoor4+emjFq3xcIDsKK+iivz5ndcSrfFwgOwor6KOAPnnEq258XCA7Civoo4g+a8WrbnxcIDsKK+ijiz5zaMO5fFwgOwor6KOMPmppw6F8XCA7Civoo40+a8eUbnxcIDsKK+ijjz5ixIFvfFwgOwor6KOSPnDDs3V8XCA7Civoo6A+ccO6bnxcIDsKK+ijpj5mw7N1fFwgOwor6KOpPmTEgW98XCA7Civoo6o+dMOhb3xcIDsKK+ijrT5jaMeQfFwgOwor6KO1PmfHlG58XCA7Civoo7Y+ZsSTaXxcIDsKK+ijuj55x45ufFwgOwor6KO9Pnpow6x8XCA7CivopIE+emjDrXxcIDsKK+ikgz5rw6hufFwgOwor6KSLPmRpw6l8XCA7CivopIw+aHXEq3xcIDsKK+ikjj54acO5fFwgOwor6KSPPnhpw7l8XCA7CivopJc+eceObnxcIDsKK+ikmD5odcSrfFwgOwor6KSePnnHlG58XCA7CivopKA+Z8WNdXxcIDsKK+ikpj5uw6BpfFwgOwor6KSoPnN1x5J8XCA7CivopKk+YsSBbnxcIDsKK+ikrz5qacOofFwgOwor6KS3PmRpw6l8XCA7CivopLo+ZGnDqXxcIDsKK+ikuz54acOofFwgOwor6KS9PnfDqGl8XCA7CivopL8+Y8Ohb3xcIDsKK+ilgj5zxJNufFwgOwor6KWDPmLEgW98XCA7CivopYo+enXDrHxcIDsKK+iljD5kxIFufFwgOwor6KWOPmbDoW58XCA7CivopZE+eMOtbnxcIDsKK+ilkj5iacOpfFwgOwor6KWTPnLDoW98XCA7CivopZQ+bceObnxcIDsKK+illT5sw6FufFwgOwor6KWXPmR1w7N8XCA7CivopZk+Y8Ogb3xcIDsKK+ilmj5zdcOsfFwgOwor6KWhPnNow7p8XCA7CivopaI+dMeObnxcIDsKK+ilpD5sw6FufFwgOwor6KWnPnpox5B8XCA7Civopak+c2jHlHxcIDsKK+ilqz5zaMOsfFwgOwor6KWsPmLHjml8XCA7Civopa0+eGnDqXxcIDsKK+ilsD5sw6BpfFwgOwor6KW0PmzDoW58XCA7CivopbU+emjDqXxcIDsKK+iltj5kw6BpfFwgOwor6KW4PnrDoG58XCA7Civopbk+c2jEq3xcIDsKK+imjj5ndcOsfFwgOwor6KaPPmd1xKt8XCA7CivoppI+bcOhb3xcIDsKK+imlT5tacOofFwgOwor6KaWPnNow6x8XCA7Civoppk+bHXDs3xcIDsKK+immj5qdcOpfFwgOwor6KaePnnDoG98XCA7Civopp8+emjDrHxcIDsKK+imoD5qxatufFwgOwor6KajPnfEk2l8XCA7Civopqc+bMeObnxcIDsKK+imqj5xxKtufFwgOwor6KarPmrDrG58XCA7Civopq8+Z8OydXxcIDsKK+imsj5qx5BufFwgOwor6Ka2Pmx1w7N8XCA7Civopro+anXDqXxcIDsKK+imuz5sw6BufFwgOwor6Ka8Pmx1w7N8XCA7Civopr0+bMeObnxcIDsKK+ingz5rdcSrfFwgOwor6KeTPmppxat8XCA7Civop5Q+asSrbnxcIDsKK+inlz5mw6FufFwgOwor6KebPmTDoG58XCA7Civop58+aHXDoHxcIDsKK+inoD5qacOofFwgOwor6KeiPmNow6x8XCA7Civop6Q+Y2jDuXxcIDsKK+inpz5qacSbfFwgOwor6KeoPmjDuW58XCA7Civop6k+cWnDunxcIDsKK+intj56aMOsfFwgOwor6Ke3Pnh1w6l8XCA7Civop7g+Y2jDuXxcIDsKK+inuj55w6BufFwgOwor6Ke8Pmp1w6l8XCA7Civop74+ecOgbnxcIDsKK+iohD5xacO6fFwgOwor6KiFPnFpw7p8XCA7CivoqIk+ZsOgbnxcIDsKK+ioij54w7lufFwgOwor6KiNPmNow6B8XCA7CivoqI4+dMeOb3xcIDsKK+iokD5qacOpfFwgOwor6KiSPnLDqG58XCA7CivoqJM+eMO5bnxcIDsKK+iolD55w61ufFwgOwor6KiXPnR1xY18XCA7CivoqJk+eMO5bnxcIDsKK+iomj55w61ufFwgOwor6KicPmbEk258XCA7CivoqJ4+ecSBb3xcIDsKK+iooD5qw6xufFwgOwor6KihPnnDrW58XCA7CivoqKI+eMSrbnxcIDsKK+iooz5qdcOpfFwgOwor6KinPnnDs3V8XCA7CivoqKg+emjHkHxcIDsKK+ioqz54w6xufFwgOwor6KitPnNow6h8XCA7CivoqK8+c2jHjnxcIDsKK+iosD50w7pufFwgOwor6Ki1PmNoxKt8XCA7CivoqLs+emjDuXxcIDsKK+iovT5nw7J1fFwgOwor6KmAPmNow6h8XCA7CivoqYQ+ZGnDqXxcIDsKK+iphz5kw6BpfFwgOwor6KmJPm7DoW98XCA7CivoqYo+cMOgbnxcIDsKK+ipjD5nw6BufFwgOwor6KmQPnpow6B8XCA7CivoqZE+dHXDs3xcIDsKK+ipnD50xIFvfFwgOwor6KmdPnpox5R8XCA7CivoqZ8+emjDqXxcIDsKK+ipoj54w7pufFwgOwor6KmmPnNow6x8XCA7Civoqac+Y2jDoXxcIDsKK+ipqT5zaMSrfFwgOwor6KmqPmjEm258XCA7Civoqas+Y2jDoHxcIDsKK+iprD5nw7J1fFwgOwor6KmtPmd1x5B8XCA7Civoqa8+aHXDrHxcIDsKK+ipsD5qacOpfFwgOwor6KmxPmh1w6B8XCA7CivoqbI+Z8SBaXxcIDsKK+iptD53xJNpfFwgOwor6Km3PmTDoG58XCA7Civoqbo+bHXDsnxcIDsKK+ipvD5odcSrfFwgOwor6Km9PnnDoW58XCA7Civoqb8+Z3XDoHxcIDsKK+iqgz5jaMeQfFwgOwor6KqEPmzEm2l8XCA7CivoqoU+emjFq3xcIDsKK+iqhz5rdcSBfFwgOwor6KqMPnpow6x8XCA7Civoqo0+csOobnxcIDsKK+iqlT5kw6BufFwgOwor6KqYPnnDsnV8XCA7Civoqps+ccSrbnxcIDsKK+iqoT5qacOofFwgOwor6KqlPmfDoG98XCA7Civoqqg+aHXDrHxcIDsKK+iqsT5qacOpfFwgOwor6Kq2PnN1w6x8XCA7Civoqrk+ZsSbaXxcIDsKK+iquj5jaMSrfFwgOwor6Kq+PnnDrW58XCA7Civoq4c+dMOhbnxcIDsKK+iriT53xJtpfFwgOwor6KuPPnrFjXV8XCA7Civoq5Q+emjDuXxcIDsKK+irlT5ow6FvfFwgOwor6KuWPmzDuW58XCA7Civoq5w+ZGnDqXxcIDsKK+irnz5zaMOsfFwgOwor6KuhPnNow6x8XCA7Civoq6I+aMO5bnxcIDsKK+iroz5odcOgfFwgOwor6KunPnhpw6l8XCA7Civoq7E+aHXDrHxcIDsKK+irsj55xKtufFwgOwor6Ku1Pm7DoW58XCA7Civoq7g+emjFq3xcIDsKK+iruj55w6BufFwgOwor6Ku+Pm51w7J8XCA7CivorIA+bcOzdXxcIDsKK+isgj53w6hpfFwgOwor6KyFPnrFjXV8XCA7CivorIk+a3XDrHxcIDsKK+isiz5odcOyfFwgOwor6KyPPnPHknV8XCA7CivorJQ+bsO8w6h8XCA7CivorJg+Y2jDrXxcIDsKK+ismj5zaMOsfFwgOwor6KydPnhpw6h8XCA7CivorJ4+eHXDqHxcIDsKK+isoD55w6FvfFwgOwor6KyhPnnDoW98XCA7CivorKs+emjDqXxcIDsKK+isrD5tacO5fFwgOwor6KyvPmppxJN8XCA7CivorLE+bMOzdXxcIDsKK+issj5jxIFufFwgOwor6Ky5PmrHkG58XCA7CivorLo+emjDqXxcIDsKK+isvj5tw6FufFwgOwor6K2APmjDoG58XCA7CivorYE+aHXDoXxcIDsKK+ithz5zaMSTfFwgOwor6K2IPmR1w6x8XCA7CivorYo+bsOhb3xcIDsKK+itiz5sw6FufFwgOwor6K2OPmp1w6l8XCA7CivorZA+eseUbnxcIDsKK+itkz5odcOsfFwgOwor6K2WPnrDqG58XCA7CivorZc+c2jDrXxcIDsKK+itmD5zaMOtfFwgOwor6K2aPnTDoW58XCA7CivorZs+esOobnxcIDsKK+itnz56w6BvfFwgOwor6K2gPnTEgW58XCA7CivoraI+c3XDrHxcIDsKK+itqD5uw7N1fFwgOwor6K2pPnhpw6B8XCA7Civora0+aHXHkHxcIDsKK+itrj5odcOgfFwgOwor6K2zPm7DsnV8XCA7Civorbk+aMOhb3xcIDsKK+itvz5odcOsfFwgOwor6K6BPnNow6h8XCA7CivoroM+esOgbnxcIDsKK+iuhD5sxJtpfFwgOwor6K6GPnfDqGl8XCA7Civoros+emjDqXxcIDsKK+iujD55w6BufFwgOwor6K6PPnfDqGl8XCA7CivorpE+ecOgb3xcIDsKK+iulD55x5BufFwgOwor6K6VPmzDoW58XCA7Civorpc+aHXDsnxcIDsKK+iumD56aMOpfFwgOwor6K6aPnrDoG58XCA7Civorp4+ecOgbnxcIDsKK+iurD50dcWNfFwgOwor6K6xPnLDqG58XCA7Civor7k+esWNdXxcIDsKK+iwuj54acSBfFwgOwor6LC7Pmp1w6l8XCA7CivosL0+aMSBbnxcIDsKK+ixgj5rx45pfFwgOwor6LGDPmjHjm58XCA7CivosY4+c2jDuXxcIDsKK+ixkT56aMOsfFwgOwor6LGSPnpow6x8XCA7CivosZM+ecOgbnxcIDsKK+ixlD55w6BufFwgOwor6LGWPmNow7l8XCA7CivosZc+aHXEq3xcIDsKK+ixmD50w7pufFwgOwor6LGbPnnDoG58XCA7CivosZ4+aMOydXxcIDsKK+ixpD5rxJtufFwgOwor6LGlPmfEgWl8XCA7Civosak+YsSrbnxcIDsKK+ixrD56aMWrfFwgOwor6LGtPmppxIF8XCA7CivosbE+d8STbnxcIDsKK+ixtj5mw6lufFwgOwor6LG/PmfHknV8XCA7CivosoE+ecOydXxcIDsKK+iyhz5ow6FvfFwgOwor6LKLPmjDoG58XCA7CivospE+amnEgXxcIDsKK+iykz5txIFvfFwgOwor6LKZPmNoxat8XCA7Civospo+dMOhbnxcIDsKK+iynD5qdcOpfFwgOwor6LKdPmLDqGl8XCA7CivosqE+Y8OhaXxcIDsKK+iypj53w6BufFwgOwor6LKnPnDDrW58XCA7Civosqg+aHXDsnxcIDsKK+iyqT5mw6BufFwgOwor6LKqPnTEgW58XCA7Civosq0+emjDrHxcIDsKK+iyrz56aMeUfFwgOwor6LKwPnNow6x8XCA7CivosrQ+Z3XDrHxcIDsKK+iytz5tx45pfFwgOwor6LK4PmTDoGl8XCA7Civosrs+ZsOoaXxcIDsKK+iyvD50acSTfFwgOwor6LK+PmNow618XCA7Civosr8+bcOgb3xcIDsKK+izgT5ixJNufFwgOwor6LODPmzDrG58XCA7Civos4Q+aHXDrHxcIDsKK+izhT5nxIFpfFwgOwor6LOKPnrDqWl8XCA7Civos4s+Z8SBaXxcIDsKK+izjD5nw6BpfFwgOwor6LONPnNoxIF8XCA7Civos5A+eMO5bnxcIDsKK+izkj5zaMSTfFwgOwor6LOTPmLEq258XCA7Civos5Q+YsSrbnxcIDsKK+izlT5xacO6fFwgOwor6LOWPnNoxJN8XCA7Civos5o+bMOgaXxcIDsKK+izmz56w6BufFwgOwor6LOgPnDDqWl8XCA7Civos6M+bcOgaXxcIDsKK+izpT5zdcOsfFwgOwor6LOnPnTDoG58XCA7Civos6o+emjDrHxcIDsKK+izrj5qw6xufFwgOwor6LOxPnnHlG58XCA7Civos7I+YseOb3xcIDsKK+izsz56xIFpfFwgOwor6LO0PmzDoGl8XCA7Civos7w+Z8OydXxcIDsKK+izvT5zw6BpfFwgOwor6LSAPnfDqGl8XCA7CivotIE+YsOgaXxcIDsKK+i0hD56aMOsfFwgOwor6LSHPnnFq258XCA7CivotIk+dMeObnxcIDsKK+i0ij56w6BufFwgOwor6LSLPnnDoG58XCA7CivotI4+Z8OgbnxcIDsKK+i0kD5qw6xufFwgOwor6LSRPmfHjm58XCA7CivotJI+c2jDuXxcIDsKK+i0lj5zaMO6fFwgOwor6LSXPnnDoG58XCA7CivotJs+Z8OgbnxcIDsKK+i0nD55w7pufFwgOwor6LSzPnNow6x8XCA7CivotZU+dMOgbnxcIDsKK+i1nz55xatufFwgOwor6LWpPnNow6x8XCA7Civota4+eGnDoXxcIDsKK+i1sT56x5J1fFwgOwor6LW6PnHDrW58XCA7Civotb0+anXDqXxcIDsKK+i1vj5xx5BufFwgOwor6LW/PmNow618XCA7CivotoM+ZGnDqXxcIDsKK+i2iT56aMO6fFwgOwor6LaMPmppw6l8XCA7Civoto0+Y2jDrXxcIDsKK+i2jj5jaMO6fFwgOwor6LaPPmd1xIF8XCA7CivotpA+eHXDqHxcIDsKK+i2kz5kdceSfFwgOwor6LaVPmfHjm58XCA7CivotpY+c3XFjXxcIDsKK+i2mz55x5BufFwgOwor6LaePnF1w6h8XCA7CivotqE+Y3XHkHxcIDsKK+i2pD5jx5J1fFwgOwor6LalPnFpxat8XCA7Civotqk+Y2jDrHxcIDsKK+i2rj55dcOofFwgOwor6LayPnrHjm58XCA7CivotrY+Z3XDrHxcIDsKK+i2uT5qdcOpfFwgOwor6LeAPnl1w6h8XCA7Civot4U+dHXDsnxcIDsKK+i3iT5iw6hpfFwgOwor6LeKPm3DqGl8XCA7Civot40+Y8eOaXxcIDsKK+i3kj5xaceOfFwgOwor6LeTPnpow7l8XCA7Civot5U+ZGnDqXxcIDsKK+i3mD5ww6FufFwgOwor6LecPmx1w7J8XCA7Civot6I+ZMOgaXxcIDsKK+i3pT5kdcOyfFwgOwor6LemPnpoxat8XCA7Civot6w+a3XHkHxcIDsKK+i3rT5kacOpfFwgOwor6LeuPmNow6x8XCA7Civot7E+emjDrHxcIDsKK+i3sj5qacOhfFwgOwor6Le0PmPHjml8XCA7Civot74+c2jDunxcIDsKK+i4gD5jaMO5fFwgOwor6LiCPm5pw6h8XCA7CivouIY+Y8WrbnxcIDsKK+i4iD5zaMWrfFwgOwor6LiTPnfEm2l8XCA7CivouJU+amnDqXxcIDsKK+i4lz5uacSTfFwgOwor6LiZPmh1w6B8XCA7CivouJo+bMO6bnxcIDsKK+i4oD53x45ufFwgOwor6LioPmt1w618XCA7CivouLI+ZMO5bnxcIDsKK+i4uz5ndcSBfFwgOwor6LmFPmNox458XCA7CivouYY+dHXHkHxcIDsKK+i5kz5sacO5fFwgOwor6LmUPnrDoG58XCA7CivouZs+ZMOgaXxcIDsKK+i5nj5rdceQfFwgOwor6LmgPnpow618XCA7CivouaM+cMOhbnxcIDsKK+i5pz56xIFvfFwgOwor6LmqPnR1w618XCA7Civoua4+ZsSBbnxcIDsKK+i5tz5qdcOpfFwgOwor6Lm4PmzDrG58XCA7Civoub4+ZMWrbnxcIDsKK+i6iT5kx5RufFwgOwor6LqNPnl1w6h8XCA7Civouo4+bHXDsnxcIDsKK+i6kT56aMOtfFwgOwor6LqTPnpow6x8XCA7CivoupU+Y2jDunxcIDsKK+i6lz53w6hpfFwgOwor6LqZPmzDrG58XCA7Civoups+d8OoaXxcIDsKK+i6nT5sw6FufFwgOwor6LqgPnhpxJt8XCA7CivouqE+bmnDqHxcIDsKK+i6pD5qacOofFwgOwor6LqnPmzDrG58XCA7Civouqg+a3XDrXxcIDsKK+i6qT5qdcOpfFwgOwor6LqqPmzDrG58XCA7Civouq0+ZMSBbnxcIDsKK+i6sT5kdceSfFwgOwor6Lq2Pmx1x5J8XCA7Civour0+eceObnxcIDsKK+i7gT5sw7N1fFwgOwor6LuCPmzDoG98XCA7Civou4M+dHXHknxcIDsKK+i7hz5kw6BvfFwgOwor6LuKPmNoxJN8XCA7Civou4w+Z3XHkHxcIDsKK+i7jT5qxatufFwgOwor6LuOPnfDqGl8XCA7Civou48+eXXDqHxcIDsKK+i7kD54w6xufFwgOwor6LuRPmTDoGl8XCA7Civou5M+ZsOgbnxcIDsKK+i7lD5yw6hufFwgOwor6LuXPnNoxat8XCA7Civou5g+dMO6bnxcIDsKK+i7mj5kw6BpfFwgOwor6LuePm3DoW98XCA7Civou6A+csOobnxcIDsKK+i7oT5mx45ufFwgOwor6LumPmLDqG58XCA7Civou6k+ZMOgaXxcIDsKK+i7rD5mw6BufFwgOwor6LuuPseObmd8XCA7Civou7A+YsOoaXxcIDsKK+i7sz5ww6FvfFwgOwor6Lu0Pnpow7l8XCA7Civou7k+emjHkHxcIDsKK+i7uj55w6FvfFwgOwor6Lu+PnNow6x8XCA7CivovIk+eseOaXxcIDsKK+i8ij56aMOsfFwgOwor6LyLPnNoxJN8XCA7CivovI8+ecOzdXxcIDsKK+i8kj56aMOpfFwgOwor6LyTPnfHjm58XCA7CivovJk+emjDqXxcIDsKK+i8nT5odcSrfFwgOwor6LygPmd1x5J8XCA7CivovKE+a8eObnxcIDsKK+i8pT5nx5RufFwgOwor6LypPmLDqGl8XCA7CivovKo+bMO6bnxcIDsKK+i8qz5ww6FpfFwgOwor6LyuPnLDs3V8XCA7CivovLM+Y8OydXxcIDsKK+i8tj55w7N1fFwgOwor6Ly4PnNoxat8XCA7CivovLw+d8STbnxcIDsKK+i8vT5iw6hufFwgOwor6L2APnfEk258XCA7CivovYE+dMSBb3xcIDsKK+i9hD54acOhfFwgOwor6L2HPmppxat8XCA7CivovYo+d8OoaXxcIDsKK+i9iz5ow7pufFwgOwor6L2NPmNow6h8XCA7CivovZE+bMeOb3xcIDsKK+i9kj5mw6lufFwgOwor6L2TPmbEgW58XCA7CivovZQ+bMOtbnxcIDsKK+i9lz5rx45ufFwgOwor6L2ZPmzDqWl8XCA7CivovZs+ZHXDrHxcIDsKK+i9oD5sxJtpfFwgOwor6L2hPnDDqGl8XCA7CivovaU+bMOsbnxcIDsKK+i+kj53xJNufFwgOwor6L6gPmLEgW58XCA7CivovqU+eHXEk3xcIDsKK+i+pj5iw6BufFwgOwor6L6sPmLEgW58XCA7Civov4A+Z8SBbnxcIDsKK+i/jD5qacSBfFwgOwor6L+gPmNow6h8XCA7Civov6M+emjDrHxcIDsKK+i/rz5tw6hpfFwgOwor6L+xPnR1w7N8XCA7Civov7Q+aHXDrXxcIDsKK+i/tj55w7J1fFwgOwor6L+6Pm7Hjml8XCA7Civov7w+amnDqXxcIDsKK+i/vj5rdcOyfFwgOwor6L+/PnjDuW58XCA7CivpgIc+ZMO5bnxcIDsKK+mAjD55w7N1fFwgOwor6YCOPnFpw7p8XCA7CivpgJg+ecOgbnxcIDsKK+mAmT56aMOofFwgOwor6YCkPmLEk258XCA7CivpgKU+aHXDrXxcIDsKK+mAqD5sw6FpfFwgOwor6YCpPmLDqG58XCA7CivpgKo+Y3XDsnxcIDsKK+mAqz5qdcOpfFwgOwor6YCwPnnDs3V8XCA7CivpgLI+asOsbnxcIDsKK+mAvT5udcOyfFwgOwor6YGAPnHFq258XCA7CivpgYM+eceObnxcIDsKK+mBhT5jaMOtfFwgOwor6YGIPnNow618XCA7CivpgYo+ecOzdXxcIDsKK+mBiz55w7lufFwgOwor6YGOPmd1w7J8XCA7CivpgZU+d8OpaXxcIDsKK+mBmT55w6FvfFwgOwor6YGaPmNow7l8XCA7CivpgZw+eMO5bnxcIDsKK+mBnz5jaMOtfFwgOwor6YGpPnNow6x8XCA7Civpga8+ZMO5bnxcIDsKK+mBsT5sw7N1fFwgOwor6YGyPmNow618XCA7CivpgbM+Y3XFjXxcIDsKK+mBtj5yw6BvfFwgOwor6YG+PmjDoWl8XCA7CivpgoE+bcOgaXxcIDsKK+mChD5ow6FpfFwgOwor6YKOPnnDoW98XCA7Civpgo8+bHXDs3xcIDsKK+mCoD5ixKtufFwgOwor6YKkPnjEq258XCA7Civpgqg+Y8WrbnxcIDsKK+mCqT5odceSfFwgOwor6YK2PmLDqGl8XCA7Civpgr0+Z3XEq3xcIDsKK+mCvj56aMWrfFwgOwor6YK/PnNoxKt8XCA7Civpg4I+Z8SBaXxcIDsKK+mDiD5ow7J1fFwgOwor6YOMPmd1xKt8XCA7Civpg40+bnXDs3xcIDsKK+mDlD55w6FufFwgOwor6YOWPmTFjXV8XCA7Civpg58+amnDoXxcIDsKK+mDpT5iw6hpfFwgOwor6YOwPnrFjXV8XCA7Civpg7I+bMOhaXxcIDsKK+mDtT55w7N1fFwgOwor6YO/Pm3DqWl8XCA7CivphIA+cnXDsnxcIDsKK+mEgT5iw6hpfFwgOwor6YSGPnnDuW58XCA7CivphIc+aMOydXxcIDsKK+mEiD5rdcOtfFwgOwor6YSLPnPFjXV8XCA7CivphJA+Y2jDuXxcIDsKK+mEkj56xY11fFwgOwor6YSWPnnDum58XCA7CivphJc+aMOgb3xcIDsKK+mEpD5tw6BufFwgOwor6YSpPnjDrW58XCA7CivphKw+bMOsbnxcIDsKK+mErj5tw6BvfFwgOwor6YSwPmzDrW58XCA7CivphLI+ZMSBbnxcIDsKK+mEsz5jw6BvfFwgOwor6YS1PmPEgW98XCA7CivphLk+esWNdXxcIDsKK+mEvD56w6BufFwgOwor6YS+PnnFjXV8XCA7CivphYA+ecSBbnxcIDsKK+mFgj56w6BufFwgOwor6YWHPnrDoG58XCA7CivphZM+eceObnxcIDsKK+mFlD56dcOsfFwgOwor6YWVPm3DoW98XCA7CivphZY+ZMSBbnxcIDsKK+mFmD50w7N1fFwgOwor6YWgPnFpx458XCA7Civphag+esOgaXxcIDsKK+mFrT55w7J1fFwgOwor6YWzPnnDrG58XCA7Civphbs+enXDrHxcIDsKK+mFvD5ox45pfFwgOwor6YaAPnfDqWl8XCA7CivphoI+bMeObnxcIDsKK+mGgz55xIFufFwgOwor6YaEPnTDoW98XCA7Civphog+dMOhbnxcIDsKK+mGjD5rxatufFwgOwor6YaTPnTHjm58XCA7CivphpQ+amnFq3xcIDsKK+mGlj55w7lufFwgOwor6YaZPnPFjXV8XCA7Civphp0+Y3XDs3xcIDsKK+mGnj55w7lufFwgOwor6YagPsOgbmd8XCA7CivphqE+emjDoHxcIDsKK+mGqT56w6FvfFwgOwor6YawPnTDoW58XCA7Civphrw+ecOgbnxcIDsKK+mHgT54w6xufFwgOwor6YeEPmPHjml8XCA7Civph4U+ecOgbnxcIDsKK+mHiD5zaMOsfFwgOwor6YeLPnNow6x8XCA7Civph5Y+ZMSBb3xcIDsKK+mHmj5xacO6fFwgOwor6YeePnpow618XCA7Civph6I+bsOhaXxcIDsKK+mHpT5mx45ufFwgOwor6YemPmvDsnV8XCA7Civph6k+ZsOhbnxcIDsKK+mHqj5nxIFufFwgOwor6YerPmh1w6F8XCA7Civph6w+aMOgbnxcIDsKK+mHrj5kw6BpfFwgOwor6YeyPmNoxIF8XCA7Civph7Y+c2jDqXxcIDsKK+mHvj5qxKtufFwgOwor6Ye/PnnDrW58XCA7CivpiIQ+ZMeSdXxcIDsKK+mIhT55dcOofFwgOwor6YiGPnnDoW58XCA7CivpiIo+eMSrbnxcIDsKK+mIjD5qdcOpfFwgOwor6YiNPmTDuW58XCA7CivpiI4+Z8WNdXxcIDsKK+mIjz55x5BufFwgOwor6YiRPmLHjm58XCA7CivpiJU+bmnHlHxcIDsKK+mIlj5mxJNufFwgOwor6YiXPnnHlG58XCA7CivpiJk+ccOtbnxcIDsKK+mImz5ndcWNfFwgOwor6YidPnnDrW58XCA7CivpiJ4+asWrbnxcIDsKK+mInz5zaMSrfFwgOwor6YiiPm5pxJN8XCA7CivpiKM+Z8OgaXxcIDsKK+mIpT5odceSfFwgOwor6YimPnTDoGl8XCA7CivpiKw+ZHXDs3xcIDsKK+mIsD5zaMOsfFwgOwor6YixPm3DrW58XCA7CivpiLw+enXDs3xcIDsKK+mIvj55w7N1fFwgOwor6YmAPmppx458XCA7CivpiYE+c2jDqXxcIDsKK+mJgj5zaMeQfFwgOwor6YmDPnNow6x8XCA7CivpiYQ+dGnEm3xcIDsKK+mJhz5zaMSrfFwgOwor6YmJPnDDoW98XCA7CivpiYs+YsOgb3xcIDsKK+mJjz5jaMO6fFwgOwor6YmSPnpow7l8XCA7CivpiZM+Y2jDrHxcIDsKK+mJmj5tx45vfFwgOwor6YmePnl1w6h8XCA7CivpiZ8+Z8OydXxcIDsKK+mJoT5iw6BufFwgOwor6YmjPmppw6l8XCA7CivpiaQ+Z8WNdXxcIDsKK+mJpT5zaMO5fFwgOwor6YmpPm5pxJN8XCA7Civpias+amnEgXxcIDsKK+mJrT5kw6BufFwgOwor6YmzPmLEm2l8XCA7Civpibk+Y2jHkHxcIDsKK+mJvT5zaMOsfFwgOwor6Ym+Pm3Ds3V8XCA7CivpioA+ecOtbnxcIDsKK+mKgT5qxatufFwgOwor6YqHPmzDqGl8XCA7Civpios+csOpbnxcIDsKK+mKjD56w7lufFwgOwor6YqNPnpow6x8XCA7CivpipA+Y2jDrHxcIDsKK+mKlT50acSbfFwgOwor6YqWPnpoxat8XCA7Civpipc+aMOzdXxcIDsKK+mKmT5rdceOfFwgOwor6YqdPnhpxat8XCA7Civpip4+asWrbnxcIDsKK+mKnz5jaMSBfFwgOwor6YqgPmzHjm98XCA7CivpiqY+ecSrbnxcIDsKK+mKqT5kacWrfFwgOwor6YqqPnnHknV8XCA7Civpiqw+a8Ogb3xcIDsKK+mKsj5ow6BufFwgOwor6YqzPnJ1w6x8XCA7CivpirQ+c2jDrHxcIDsKK+mKtj5xacO6fFwgOwor6Yq4Pnpow6l8XCA7Civpirk+eGnDuXxcIDsKK+mKvD5jdcOyfFwgOwor6Yq9Pmd1xIF8XCA7Civpi4A+ZMOydXxcIDsKK+mLgj5tw6lpfFwgOwor6YuEPnfHjm58XCA7Civpi4U+eMSrbnxcIDsKK+mLhj55w7pufFwgOwor6YuHPmLDqGl8XCA7Civpi44+aMOgbnxcIDsKK+mLjz5qacOhfFwgOwor6YuUPnfHjm58XCA7Civpi5U+emjDrHxcIDsKK+mLmj5qw6xufFwgOwor6YudPmzDvMOofFwgOwor6YuhPmjDoW58XCA7Civpi6I+bMO8w6h8XCA7Civpi6M+eGnDqXxcIDsKK+mLpD5jaMO6fFwgOwor6YurPmR1w6x8XCA7Civpi6w+cMOgbnxcIDsKK+mLrT5ydcOsfFwgOwor6YuvPmfDoG98XCA7Civpi7M+emjDuXxcIDsKK+mLtj5saceUfFwgOwor6Yu3Pnp1w6x8XCA7Civpi74+dMOhb3xcIDsKK+mMgD5sw7pufFwgOwor6YyDPmLEk2l8XCA7CivpjIc+cMOzdXxcIDsKK+mMiT5tw61ufFwgOwor6YyKPnp1w6x8XCA7CivpjJE+bMOoaXxcIDsKK+mMkz5nx5RufFwgOwor6YyVPmvFq258XCA7CivpjJc+d8OoaXxcIDsKK+mMmz5ixJNufFwgOwor6YycPm5pxJN8XCA7CivpjJ8+dMOhbnxcIDsKK+mMpj5qx5BufFwgOwor6YyoPm3DoW98XCA7CivpjK0+dMOhb3xcIDsKK+mMrz5jdcOyfFwgOwor6Yy1Pmh1xIF8XCA7CivpjLg+bMOhaXxcIDsKK+mMuT5rxJtufFwgOwor6Yy8Pm7DoGl8XCA7CivpjL0+d8eObnxcIDsKK+mNgz5odcWNfFwgOwor6Y2EPmppxJN8XCA7CivpjYY+bcOpbnxcIDsKK+mNhz5rx45pfFwgOwor6Y2IPmNow618XCA7CivpjYs+Z3XFjXxcIDsKK+mNjz53w6lpfFwgOwor6Y2SPnLDs3V8XCA7CivpjZU+csOzdXxcIDsKK+mNmD56aMOhfFwgOwor6Y2cPnhpxIF8XCA7CivpjZ0+Y2jEgXxcIDsKK+mNoT53xJtpfFwgOwor6Y2kPmNow6F8XCA7CivpjaU+cWnDqHxcIDsKK+mNpj5zaMOpfFwgOwor6Y2oPmt1w618XCA7Civpja0+aMOzdXxcIDsKK+mNrj50xY11fFwgOwor6Y2yPm3DrW58XCA7Civpjbo+emjEm3xcIDsKK+mNuz5qacOpfFwgOwor6Y6APnhpxat8XCA7CivpjoI+bcSbaXxcIDsKK+mOgz5ww6BpfFwgOwor6Y6FPmppw6h8XCA7Civpjoc+bcOpaXxcIDsKK+mOiz54acOhfFwgOwor6Y6NPnN1x5J8XCA7CivpjpI+bsOydXxcIDsKK+mOlj5zdceSfFwgOwor6Y6cPnDDoW58XCA7CivpjqY+bGnDunxcIDsKK+mOpz5rx45pfFwgOwor6Y6oPnPHlG58XCA7Civpjqk+c2jEgXxcIDsKK+mOqz53w6BufFwgOwor6Y6sPmfHjm98XCA7CivpjrM+bmnDqHxcIDsKK+mOtT5qacSBfFwgOwor6Y67PnN1x5J8XCA7Civpj4E+c3XHknxcIDsKK+mPhT54acWrfFwgOwor6Y+NPmx1w7N8XCA7Civpj48+d8OoaXxcIDsKK+mPkD5sacO6fFwgOwor6Y+ZPmN1xKt8XCA7Civpj50+bcOgbnxcIDsKK+mPoz5zaMO5fFwgOwor6Y+kPmzDsnV8XCA7Civpj6g+esOgbnxcIDsKK+mPqj5jw6FvfFwgOwor6Y+sPnhpw6B8XCA7Civpj7U+aHXDoXxcIDsKK+mPuD5odcOsfFwgOwor6Y+7PmzDrW58XCA7Civpj7w+c3XHknxcIDsKK+mPvT54acO5fFwgOwor6Y++PnPHjm58XCA7CivpkIA+a3XDrHxcIDsKK+mQgT5sacO6fFwgOwor6ZCCPmxpw7l8XCA7CivpkIM+bsOhb3xcIDsKK+mQhT5wacSbfFwgOwor6ZCGPnN1w6x8XCA7CivpkIc+ZsOhbnxcIDsKK+mQjT5qdcOpfFwgOwor6ZCPPnrFq258XCA7CivpkJE+ZHXEq3xcIDsKK+mQkj5sw6FvfFwgOwor6ZCTPmTFq258XCA7CivpkJQ+dMOhbnxcIDsKK+mQnD5kdcOsfFwgOwor6ZCdPmp1w6l8XCA7CivpkJ4+bsOydXxcIDsKK+mQoT50acSbfFwgOwor6ZCmPmvEgWl8XCA7CivpkKg+ZsOoaXxcIDsKK+mQqT5zdcOsfFwgOwor6ZCsPmh1w6x8XCA7CivpkLM+bMOpaXxcIDsKK+mQtT50acSbfFwgOwor6ZC4PmR1w7N8XCA7CivpkLk+Z3XHknxcIDsKK+mQvD5ixJNufFwgOwor6ZC+PmLDqGl8XCA7CivpkYI+eMO5bnxcIDsKK+mRhD56aMO5fFwgOwor6ZGIPm5pxJN8XCA7CivpkYo+aHXDsnxcIDsKK+mRjD5ixKtufFwgOwor6ZGOPmt1w6x8XCA7CivpkZQ+Y2jHjnxcIDsKK+mRlT56aMOsfFwgOwor6ZGWPm1pw6h8XCA7CivpkZg+bMOpaXxcIDsKK+mRpD5iw6BvfFwgOwor6ZGtPmzDoW58XCA7CivpkbA+ecOgb3xcIDsKK+mRsz5odcSrfFwgOwor6ZG3Pm5pw6h8XCA7Civpkbg+bMSbaXxcIDsKK+mRuz5ww6BufFwgOwor6ZG8Pmx1w7N8XCA7Civpkb8+esOhb3xcIDsKK+mSgD5uacOofFwgOwor6ZKBPmp1w6l8XCA7CivpkoM+c2jHlHxcIDsKK+mSrD5odcOzfFwgOwor6ZOHPmLDoG98XCA7Civpk5E+bMeOb3xcIDsKK+mTmj56aMOsfFwgOwor6ZOlPmRpxat8XCA7Civpk6o+amnDoXxcIDsKK+mTvD5sw6FpfFwgOwor6ZSGPmfDoG98XCA7CivplIo+bMO8w6h8XCA7CivplI0+bGnHlHxcIDsKK+mUmD5udcOyfFwgOwor6ZSnPnpow6x8XCA7CivplKo+aHXFjXxcIDsKK+mUqz5ww6lpfFwgOwor6ZSsPnTDoW58XCA7CivplLw+c8WNdXxcIDsKK+mVoD5sacO6fFwgOwor6ZWhPnTDoW58XCA7CivplaY+ZHXDrHxcIDsKK+mVuT5qaceUfFwgOwor6ZW7PmRpw6l8XCA7CivploA+bcOpbnxcIDsKK+mWhD5odcOyfFwgOwor6ZaFPm3DqW58XCA7CivploY+ecOhbnxcIDsKK+mWiD5ow6BufFwgOwor6ZaLPmvEgWl8XCA7Civplo8+csO5bnxcIDsKK+mWkD5zw6BufFwgOwor6ZaUPm3HkG58XCA7CivplpU+eGnEgXxcIDsKK+mWlz5kw7J1fFwgOwor6ZaYPnpow6F8XCA7Civplpk+bsOgb3xcIDsKK+mWnD54aceOfFwgOwor6ZagPnLDuW58XCA7CivplqY+Y2jDuXxcIDsKK+mWqD5ndcSrfFwgOwor6ZapPm3HkG58XCA7Civplqs+a8eUbnxcIDsKK+mWrz5zaMOgfFwgOwor6ZaxPnl1w6h8XCA7CivplrI+eXXDqHxcIDsKK+mWtT5sw6xufFwgOwor6Za3PnNoxIF8XCA7Civplrg+a8eUbnxcIDsKK+mWuT55xIFufFwgOwor6Za6PnfDqW58XCA7Civplrs+ecOhbnxcIDsKK+mWvT5oxatufFwgOwor6Za/PnfDqW58XCA7Civpl4E+YsSBb3xcIDsKK+mXhD55x45vfFwgOwor6ZeFPnfDqW58XCA7Civpl4Y+YseObnxcIDsKK+mXiD53w6lpfFwgOwor6ZeJPnnEq258XCA7Civpl4o+a3XDsnxcIDsKK+mXiz5xdcOofFwgOwor6ZeMPmzDoW58XCA7Civpl5E+bmnDqHxcIDsKK+mXkz5rx45pfFwgOwor6ZeVPnF1xJN8XCA7Civpl5g+ZMOydXxcIDsKK+mXmj5rdcSrfFwgOwor6ZeePmvDoG58XCA7Civpl6A+aHXDrHxcIDsKK+mXpj53w6lufFwgOwor6ZesPmjDoG58XCA7Civpl78+a8eOaXxcIDsKK+mYkz5odcOsfFwgOwor6ZigPnfDqGl8XCA7CivpmKQ+dHXDs3xcIDsKK+mYpz5kx5J1fFwgOwor6ZipPnDEk2l8XCA7CivpmKs+cMOpaXxcIDsKK+mYrz56aMeQfFwgOwor6Zi8Pnp1w7J8XCA7CivpmYE+dHXDs3xcIDsKK+mZij5kdcOyfFwgOwor6ZmOPnNoxat8XCA7CivpmY8+ZHXDsnxcIDsKK+mZkj5ndceQfFwgOwor6ZmWPnjDuW58XCA7Civpmas+cMOpaXxcIDsKK+mZrD56xY11fFwgOwor6ZmvPmzDum58XCA7CivpmbA+ecSrbnxcIDsKK+mZuz55xKtufFwgOwor6Zm8Pnpox5R8XCA7CivpmoE+ecOgbnxcIDsKK+magj55xKtufFwgOwor6ZqHPnN1w6x8XCA7Civpmok+bmnDqHxcIDsKK+maij5kdcOsfFwgOwor6ZqOPmppxJN8XCA7CivpmpE+Z8SBaXxcIDsKK+makz5odcSrfFwgOwor6ZqVPnnHlG58XCA7CivpmpY+Z3XEq3xcIDsKK+manT5kx45vfFwgOwor6ZqgPnnHkG58XCA7CivpmqI+csOgb3xcIDsKK+maoz5sw61ufFwgOwor6ZqkPnR1w618XCA7Civpmqg+c3XDrXxcIDsKK+maqz5mxJNufFwgOwor6ZqvPmTHjm98XCA7CivpmrE+eceQbnxcIDsKK+masj5kw6BpfFwgOwor6Zq3PmN1xKt8XCA7Civpmrs+emjEq3xcIDsKK+mbgj5xw61ufFwgOwor6ZuKPmfDsnV8XCA7Civpm4s+asO5bnxcIDsKK+mblj5zdcSrfFwgOwor6ZuXPmjDoG58XCA7Civpm5g+aHXDsnxcIDsKK+mbmz5jaMO6fFwgOwor6ZuhPmxpw7l8XCA7Civpm6M+bsOhbnxcIDsKK+mbpD54dcOpfFwgOwor6ZusPmbHknV8XCA7Civpm7A+ZsSTbnxcIDsKK+mbsj55w7pufFwgOwor6Zu1PseObmd8XCA7CivpnIU+emjDoXxcIDsKK+mckj55xKtufFwgOwor6ZyVPnTDum58XCA7CivpnKA+ecSrbnxcIDsKK+mcoz55x5RufFwgOwor6ZykPmxpw7l8XCA7CivpnKY+YsSrbnxcIDsKK+mcqD53w6hpfFwgOwor6ZypPmh1w7J8XCA7CivpnK4+ZMOgbnxcIDsKK+mctD5kw6BpfFwgOwor6Zy6PnfDqWl8XCA7CivpnYA+bMOoaXxcIDsKK+mdgT5sw6lpfFwgOwor6Z2DPmh1w7J8XCA7CivpnYU+ZsOoaXxcIDsKK+mdhj5kw6BpfFwgOwor6Z2MPmLHjm98XCA7CivpnZ8+ZsSTaXxcIDsKK+mdpD5ww6BvfFwgOwor6Z2nPmh1w6x8XCA7Civpnas+Y2jEgXxcIDsKK+mdrT5yw6hufFwgOwor6Z2xPnLDqG58XCA7CivpnbI+ccOtbnxcIDsKK+mdtT5uaceUfFwgOwor6Z23PnnHkG58XCA7Civpnb0+YsOgbnxcIDsKK+mdvz5iw6hpfFwgOwor6Z6APnTDoW98XCA7CivpnoE+dHXDs3xcIDsKK+megj5iw6BvfFwgOwor6Z6EPnDDoW98XCA7Civpnog+amnDoXxcIDsKK+meiT50w6FvfFwgOwor6Z6OPmjDqW58XCA7CivpnpQ+d8eObnxcIDsKK+melj5zdcSrfFwgOwor6Z6hPsSTbmd8XCA7CivpnqI+eGnDqHxcIDsKK+mepj5xacWrfFwgOwor6Z6nPnFpxat8XCA7Civpnqk+bcOzdXxcIDsKK+mesT50xIFvfFwgOwor6Z6yPmfFjXV8XCA7CivpnrQ+YsOoaXxcIDsKK+metj5ww6FufFwgOwor6Z65Pmt1w7J8XCA7Civpnrs+bMOzdXxcIDsKK+mevD5ndcOsfFwgOwor6Z6+Pnh1xJN8XCA7Civpn4o+bMOhbnxcIDsKK+mfiz53w6lpfFwgOwor6Z+MPnLDqG58XCA7Civpn44+bcOoaXxcIDsKK+mfkT53xJtpfFwgOwor6Z+TPmjDoW58XCA7Civpn5Y+csOzdXxcIDsKK+mflz54w7lufFwgOwor6Z+YPnNow6h8XCA7Civpn5k+d8SbaXxcIDsKK+mfmz5iw6hpfFwgOwor6Z+cPnTEgW98XCA7Civpn50+Z8WNdXxcIDsKK+mfnj55w7lufFwgOwor6Z+hPnfEm2l8XCA7Civpn6I+aHXDrHxcIDsKK+mfrj5qaceUfFwgOwor6Z+wPnhpw6h8XCA7Civpn7s+ecO5bnxcIDsKK+mfvT55xKtufFwgOwor6Z++Pmh1w7J8XCA7CivpoIQ+cWnDunxcIDsKK+mghz5oxIFufFwgOwor6aCNPmt1x5B8XCA7CivpoJE+d8OhbnxcIDsKK+mgkj5ixIFufFwgOwor6aCTPmTDuW58XCA7CivpoJU+ZMSBbnxcIDsKK+mglj5ww6BufFwgOwor6aCbPmzEm2l8XCA7CivpoJ0+amnDoXxcIDsKK+mgoD53xJtpfFwgOwor6aChPnhpw6l8XCA7CivpoKI+Z3XEgXxcIDsKK+mgpz5kdcSrfFwgOwor6aCqPmzDqGl8XCA7CivpoKw+amnDoXxcIDsKK+mgrT50w7N1fFwgOwor6aCuPmh1w6x8XCA7CivpoK8+a3XDrXxcIDsKK+mgsD5qacOhfFwgOwor6aC1PmrFq258XCA7CivpoLc+aMOgbnxcIDsKK+mguT50dcOtfFwgOwor6aC6PnR1w618XCA7CivpoLs+cMOtbnxcIDsKK+mgvT50dcOtfFwgOwor6aGCPmzDoGl8XCA7CivpoYM+ecOhbnxcIDsKK+mhhD5ow6BufFwgOwor6aGHPmN1w6x8XCA7CivpoYk+ccSrbnxcIDsKK+mhiz5zxIFpfFwgOwor6aGPPnnDoW58XCA7CivpoZA+aMO6bnxcIDsKK+mhkT5rx45ufFwgOwor6aGUPnnDoW58XCA7CivpoZY+eMOsbnxcIDsKK+mhnj5sw6hpfFwgOwor6aGhPm3EgW58XCA7CivpoaI+bcSBbnxcIDsKK+mhpD5xxKtufFwgOwor6aGlPmjDoG98XCA7Civpoag+eMO5bnxcIDsKK+mhqj5odcSrfFwgOwor6aGsPmt1x5B8XCA7Civpoa4+YsSrbnxcIDsKK+mhsD5ww61ufFwgOwor6aGyPmzHjm58XCA7CivpobM+bmnDqHxcIDsKK+mikj5odcOsfFwgOwor6aKZPm3EgW58XCA7CivpoqM+bMOoaXxcIDsKK+mirD54acSBfFwgOwor6aKxPnTDoWl8XCA7CivporI+bGnDqHxcIDsKK+misz5ndcSBfFwgOwor6aK5PnfEm2l8XCA7Civpors+ecOhb3xcIDsKK+mivD5zxY11fFwgOwor6aK9PmvHjml8XCA7Civpor4+c8SBb3xcIDsKK+mivz5mw6FufFwgOwor6aOAPmxpw7p8XCA7Civpo4U+bGnDunxcIDsKK+mjlj55w6FvfFwgOwor6aOXPmxpw7p8XCA7Civpo5s+ZsSTaXxcIDsKK+mjnD5mxIFufFwgOwor6aOdPmbEk2l8XCA7Civpo6A+c2jDrXxcIDsKK+mjoT5jxIFufFwgOwor6aOlPnR1xY18XCA7Civpo6k+dMO6bnxcIDsKK+mjqj5yw6hufFwgOwor6aOtPmNow6x8XCA7Civpo64+eceQbnxcIDsKK+mjrz5mw6BufFwgOwor6aOwPmbDoG58XCA7Civpo7E+c8WrbnxcIDsKK+mjsj55x5BufFwgOwor6aO3PmppxJt8XCA7Civpo7g+dMSBb3xcIDsKK+mjuT5saceUfFwgOwor6aO7PnRpw6h8XCA7Civpo70+YseOb3xcIDsKK+mjvj5zaMOsfFwgOwor6aO/PmR1w7J8XCA7CivppIA+aMOgaXxcIDsKK+mkgT5yw6hufFwgOwor6aSGPnnDoW98XCA7CivppIs+c8O5bnxcIDsKK+mkkj5uxJtpfFwgOwor6aSVPmrDuW58XCA7CivppJY+ZMOydXxcIDsKK+mkmT5rxatufFwgOwor6aSaPnnDoW98XCA7CivppJs+aMO6bnxcIDsKK+mknD5ndceSfFwgOwor6aSdPnNow6x8XCA7CivppKQ+dMOhbnxcIDsKK+mkpT5mxJtpfFwgOwor6aSnPnfDqGl8XCA7CivppKs+aMO6bnxcIDsKK+mkrz5odcOsfFwgOwor6aSxPmjDs3V8XCA7CivppLQ+ZsSTbnxcIDsKK+mktT53w6hpfFwgOwor6aS3PmNoxIF8XCA7CivppLs+Z8SBb3xcIDsKK+mkvT5rdcOsfFwgOwor6aS+Pmxpw7l8XCA7CivppL8+c8WNdXxcIDsKK+mlgD50w6FvfFwgOwor6aWCPnnDum58XCA7CivppYU+bcOhbnxcIDsKK+mliD54acWrfFwgOwor6aWJPmrHkG58XCA7CivppYo+c8eObnxcIDsKK+mliz5rdcOsfFwgOwor6aWOPmNow6x8XCA7CivppY8+ZMOgbnxcIDsKK+mlkj5yw6FvfFwgOwor6aWWPmh1w6x8XCA7CivppZk+ZsSTbnxcIDsKK+mlmj5ow6BpfFwgOwor6aWcPnnDoG58XCA7CivppaA+bHXDs3xcIDsKK+mlpj50dcWNfFwgOwor6aWzPmR1w7J8XCA7Civppbg+amnDoXxcIDsKK+mlvj5kw7J1fFwgOwor6aaCPmrDuW58XCA7CivppoM+Z3XHknxcIDsKK+mmmD5ndcOzfFwgOwor6aaaPmbDqW58XCA7CivppqA+aMSBbnxcIDsKK+mmoT5mxJNpfFwgOwor6aajPnnHjm58XCA7Civppqc+d8STbnxcIDsKK+mmqT5mw6lufFwgOwor6aaqPmLEq258XCA7Civppq8+aMOhbnxcIDsKK+mmsD5kw6BpfFwgOwor6aaxPmR1w7J8XCA7CivpprI+dHXFjXxcIDsKK+mmsz5jaMOtfFwgOwor6aa0PnjDum58XCA7CivpprU+emjDuXxcIDsKK+mmtj56aMSrfFwgOwor6aa3PnDDqGl8XCA7Civpprg+eMOsbnxcIDsKK+mmuz55x5BufFwgOwor6aa8PnfDqW58XCA7Civppr0+emjDrXxcIDsKK+mmvj5kw6BufFwgOwor6aeAPnnDs3V8XCA7Civpp4I+YseOb3xcIDsKK+mnkD56aMO5fFwgOwor6aeVPmppw6B8XCA7Civpp5Y+ZMOgaXxcIDsKK+mnmD50w6FpfFwgOwor6aebPnNox5B8XCA7Civpp50+dHXDs3xcIDsKK+mnnj50dcOzfFwgOwor6aegPmxpw7p8XCA7Civpp6M+dMOhb3xcIDsKK+mnpD56aMOsfFwgOwor6aemPmppw6B8XCA7Civpp6g+eMO6bnxcIDsKK+mnrT5ow6BpfFwgOwor6aevPnpoxat8XCA7Civpp7A+ecSrbnxcIDsKK+mnsT5sdcOyfFwgOwor6aezPmTDoG58XCA7Civpp7Q+eGnDqHxcIDsKK+mntT5sacO6fFwgOwor6ae4PnHEq258XCA7Civpp7s+aMOgbnxcIDsKK+mnvj50dcOsfFwgOwor6ae/PmrDuW58XCA7CivpqIc+c2jEm3xcIDsKK+moiT5rxatufFwgOwor6aiKPnTDoW98XCA7CivpqIs+bMOhaXxcIDsKK+mokD55w6BufFwgOwor6aiRPmbEk2l8XCA7CivpqJI+c8SBb3xcIDsKK+mokz55x45ufFwgOwor6aiUPmppw6l8XCA7CivpqJU+eceOb3xcIDsKK+momz5mxJNpfFwgOwor6aiePmh1w7J8XCA7CivpqJ8+Z3XEq3xcIDsKK+mooj54acOhfFwgOwor6aikPmt1w618XCA7CivpqKU+csOzdXxcIDsKK+mopz5ndcSBfFwgOwor6aioPnR1w7N8XCA7CivpqKk+a3XDrHxcIDsKK+moqj5zxY11fFwgOwor6aitPnpow6x8XCA7CivpqK4+bGnDunxcIDsKK+mosj5jx45vfFwgOwor6ai0PnnDoG58XCA7CivpqLY+esWNdXxcIDsKK+motz5zxIFvfFwgOwor6ai+Pmx1w7N8XCA7CivpqYI+Y8SBbnxcIDsKK+mphz56aMOsfFwgOwor6amKPmh1w6F8XCA7CivpqY4+bMOtbnxcIDsKK+mpkT5sacO6fFwgOwor6amSPnR1w7N8XCA7CivpqZQ+dMOhbnxcIDsKK+mplj50acSbfFwgOwor6amXPnnDoG58XCA7CivpqZg+bHXDs3xcIDsKK+mpnT50dcWNfFwgOwor6amePmLEq258XCA7CivpqZ8+esOydXxcIDsKK+mpoD5jaMOtfFwgOwor6aqDPnnEq258XCA7Civpqo0+eMSrbnxcIDsKK+mqjj5xxKtufFwgOwor6aqZPmt1w618XCA7Civpqqo+d8SbaXxcIDsKK+mqqz53xJtpfFwgOwor6aqtPmfDoG58XCA7Civpqq8+xIFuZ3xcIDsKK+mqsj5ixIFvfFwgOwor6aq0PmNoxKt8XCA7Civpqrs+a3XDoHxcIDsKK+mqvT50dceQfFwgOwor6auEPnN1x5B8XCA7Civpq48+bMOzdXxcIDsKK+mrkD5uw6FvfFwgOwor6auVPmLDrG58XCA7Civpq5k+Z8SBb3xcIDsKK+mrmz5rxIFvfFwgOwor6audPmzDoG98XCA7Civpq54+esOgb3xcIDsKK+mrpD54acWrfFwgOwor6aulPnLDoW58XCA7Civpq6c+ZMOgbnxcIDsKK+mrqD5rxatufFwgOwor6aupPmLDrG58XCA7Civpq7E+cMOgb3xcIDsKK+mrsz5tw6FvfFwgOwor6au6Pmd1w6B8XCA7Civpq78+c2jEgXxcIDsKK+msgj5iw6xufFwgOwor6ayMPmR1x5J8XCA7CivprJY+c8SBbnxcIDsKK+mslz5tw6BufFwgOwor6ayYPm3DoW58XCA7CivprJs+bGnDqHxcIDsKK+msoj5iw6xufFwgOwor6aylPmTDsnV8XCA7CivprKY+ZMOydXxcIDsKK+mspz5uw6BvfFwgOwor6ayqPmTDsnV8XCA7CivprKs+aMeObnxcIDsKK+msrD5kw7J1fFwgOwor6aytPmTDsnV8XCA7CivprK4+amnFq3xcIDsKK+mstj5ndcSrfFwgOwor6ay4Pmxpw7l8XCA7CivprLk+Z3XEq3xcIDsKK+msvT5tw6hpfFwgOwor6a2APmppw6h8XCA7CivprYs+dHXDrXxcIDsKK+mtmD55x45ufFwgOwor6a2bPmTEgW98XCA7CivprZw+csOpbnxcIDsKK+mtoD50dcWNfFwgOwor6a2kPmLHjm58XCA7CivpraY+c2jEgXxcIDsKK+mtqD50w7pufFwgOwor6a2qPmppw6h8XCA7Civpraw+ZseObnxcIDsKK+mtrT53x45ufFwgOwor6a2wPnfDqW58XCA7CivprbU+ZsOpbnxcIDsKK+mttz55w7N1fFwgOwor6a27Pnhpw6F8XCA7Civprb0+aMSBbnxcIDsKK+mugD50dcOzfFwgOwor6a6HPnfDqGl8XCA7Civprow+Z8eUbnxcIDsKK+mujj5ixIFvfFwgOwor6a6QPnTDoWl8XCA7CivprpE+YsOgb3xcIDsKK+mukz56aMeOfFwgOwor6a6aPmppw6l8XCA7Civprps+c2jFq3xcIDsKK+munD5ow7J1fFwgOwor6a6gPnfDqWl8XCA7CivprqM+ecOsbnxcIDsKK+mupD5sacOofFwgOwor6a6lPmx1w7J8XCA7Civprqo+d8SbaXxcIDsKK+murT5ndcSrfFwgOwor6a6wPmh1w618XCA7CivprrM+a8eOb3xcIDsKK+mutT5kdcOzfFwgOwor6a62PmrFq258XCA7Civprrs+c2jEgXxcIDsKK+muvD5xxKtufFwgOwor6a6+Pm7Em2l8XCA7Civprr8+emjDqXxcIDsKK+mvgD5nx5RufFwgOwor6a+EPnFpw7p8XCA7Civpr4o+c2jEgXxcIDsKK+mviz5zaMSBfFwgOwor6a+MPmfDoG98XCA7Civpr5g+bsSbaXxcIDsKK+mvnD5xacOofFwgOwor6a+gPmzDoWl8XCA7Civpr6E+ZsSTaXxcIDsKK+mvpD5rxatufFwgOwor6a+mPmppw7l8XCA7Civpr6s+esWNdXxcIDsKK+mvrz56aMOsfFwgOwor6a+0PnNoxKt8XCA7Civpr7Y+aMeUbnxcIDsKK+mvtz5zaMOsfFwgOwor6a+4PmjDs3V8XCA7Civpr7o+esOpaXxcIDsKK+mwgz53xJNpfFwgOwor6bCEPnfEk2l8XCA7CivpsIc+cWnDqHxcIDsKK+mwiD5kacOpfFwgOwor6bCLPnnHjm58XCA7CivpsIw+cWnDunxcIDsKK+mwjT5xacWrfFwgOwor6bCTPnPEgWl8XCA7CivpsJU+eGnDoXxcIDsKK+mwlj50dceSfFwgOwor6bCZPnJ1w7J8XCA7CivpsJs+d8STbnxcIDsKK+mwnT5ow6BvfFwgOwor6bChPmxpw7p8XCA7CivpsKM+c2jDrXxcIDsKK+mwpD5zaMSrfFwgOwor6bCnPmRpw6l8XCA7CivpsKk+ecOhb3xcIDsKK+mwrD5jxIFufFwgOwor6bCuPnfEk258XCA7CivpsK8+cnXDsnxcIDsKK+mwtD5odcSrfFwgOwor6bC1Pm3HkG58XCA7CivpsLo+c8SBb3xcIDsKK+mwuz5tw6FufFwgOwor6bC9PnFpw7p8XCA7CivpsYE+emjDunxcIDsKK+mxgz5xacWrfFwgOwor6bGIPnh1xJt8XCA7CivpsYk+YmnEk3xcIDsKK+mxij5qdcOpfFwgOwor6bGPPnjDum58XCA7CivpsZI+esO5bnxcIDsKK+mxlT5mxIFufFwgOwor6bGWPmd1w6x8XCA7CivpsZc+bMOtbnxcIDsKK+mxmD54w7pufFwgOwor6bGdPmbDqG58XCA7CivpsZ8+aMOydXxcIDsKK+mxoT56w6lpfFwgOwor6bGiPnPEgW98XCA7CivpsaQ+Z8eObnxcIDsKK+mxpT5ndcOsfFwgOwor6bGvPmh1w7J8XCA7CivpsbI+bGnDqHxcIDsKK+mxtD5tacOofFwgOwor6bG9PmTEgW98XCA7CivpsoA+dMO6bnxcIDsKK+myiT55w7N1fFwgOwor6bKKPnpox458XCA7Civpso4+aMOydXxcIDsKK+mykz5rx45vfFwgOwor6bKYPmjDsnV8XCA7Civpsqo+asWrbnxcIDsKK+mysD56xY11fFwgOwor6bK6PnNoxKt8XCA7Civpsrw+ZsOobnxcIDsKK+mzgD5zaMOsfFwgOwor6bOBPnfEk258XCA7Civps4I+d8STaXxcIDsKK+mziz5zxIFvfFwgOwor6bOQPnnDoW98XCA7Civps5o+Z3XDrHxcIDsKK+mzoT5nx45ufFwgOwor6bOkPmTHjm98XCA7Civps6k+amnFq3xcIDsKK+mzqz55w6BufFwgOwor6bOuPmjDoG58XCA7Civps7E+Z8SBbnxcIDsKK+mzsj5zaMSrfFwgOwor6bO1PmLHjm98XCA7Civps7c+emjEq3xcIDsKK+mzuT5xw61ufFwgOwor6bO7PmbEk258XCA7Civps7w+d8OpbnxcIDsKK+mzvj5zaMSrfFwgOwor6bSAPmbHknV8XCA7CivptIE+anXDqXxcIDsKK+m0gj5qdcOofFwgOwor6bSDPmp1w6l8XCA7CivptIc+YseOb3xcIDsKK+m0iD55w6BufFwgOwor6bSKPmppxIF8XCA7CivptI0+d8OpbnxcIDsKK+m0kD5qacSBfFwgOwor6bSTPm1pw6h8XCA7CivptJU+dHXDs3xcIDsKK+m0lj53w6lufFwgOwor6bSZPnpow6x8XCA7CivptJ8+Y2jEq3xcIDsKK+m0oD5kw6BufFwgOwor6bSiPnnDsnV8XCA7CivptKk+dGnEm3xcIDsKK+m0sD5ndcSBfFwgOwor6bSyPnpoxKt8XCA7CivptLM+ecOgbnxcIDsKK+m0tz5sacOofFwgOwor6bS4Pnpoxat8XCA7CivptLk+csOpbnxcIDsKK+m0vD5sdcOyfFwgOwor6bS+Pm3Ds3V8XCA7CivptYA+csOobnxcIDsKK+m1gj54acWrfFwgOwor6bWEPmNoxKt8XCA7CivptYU+bHXDsnxcIDsKK+m1ij5qacOhfFwgOwor6bWOPnR1x5J8XCA7CivptZA+asO5bnxcIDsKK+m1lD54w7lufFwgOwor6bWYPmrDuW58XCA7CivptaM+bMOgaXxcIDsKK+m1qD5zaMWrfFwgOwor6bWtPmR1w7J8XCA7Civpta8+YsSTaXxcIDsKK+m1sj5xdcOofFwgOwor6bW+PmvFq258XCA7CivptoY+bMOhaXxcIDsKK+m2kD5zaMO5fFwgOwor6baSPmNow6x8XCA7CivptpQ+csOzdXxcIDsKK+m2lj5xacWrfFwgOwor6babPmppxJN8XCA7Civptpw+bcOhb3xcIDsKK+m2oD55x45ufFwgOwor6baiPmvFq258XCA7CivptqQ+ecO5bnxcIDsKK+m2pT5tw6lpfFwgOwor6baoPmTDuW58XCA7CivptrM+c2jEq3xcIDsKK+m2tT5jaMO6fFwgOwor6ba3Pnhpw6B8XCA7Civptrg+cnXDsnxcIDsKK+m2uT5sacO6fFwgOwor6ba9PnPHlG58XCA7Civpt4I+ecOgb3xcIDsKK+m3gz55w6BufFwgOwor6beHPmvDsnV8XCA7Civpt44+Z8SBb3xcIDsKK+m3kz56aMOofFwgOwor6beVPnnHjm98XCA7Civpt5g+Y2jDrHxcIDsKK+m3mT56aMOsfFwgOwor6becPmzDs3V8XCA7Civpt6I+anXDqXxcIDsKK+m3oz55w61ufFwgOwor6beoPmh1xIF8XCA7Civpt6o+ecSBbnxcIDsKK+m3rT5mw6FufFwgOwor6bewPnnDoG58XCA7Civpt7E+a8SBb3xcIDsKK+m3sj5qacO5fFwgOwor6be2Pm3Hjml8XCA7Civpt7c+esWrbnxcIDsKK+m3vT54dcOpfFwgOwor6biAPnNow7p8XCA7CivpuIE+bHXDs3xcIDsKK+m4hT56aMOpfFwgOwor6biMPmh1w7J8XCA7CivpuJE+eXXDqHxcIDsKK+m4kz5sxJtpfFwgOwor6biUPmLDoG98XCA7CivpuJk+eXXDqHxcIDsKK+m4pD5zaMSrfFwgOwor6bi0Pnh1w6l8XCA7CivpuLo+eGnFq3xcIDsKK+m5jT5rxatufFwgOwor6bmOPmLEk2l8XCA7CivpuZs+bcOpaXxcIDsKK+m5oD5sacO6fFwgOwor6bmxPmh1w7J8XCA7CivpubY+asSrbnxcIDsKK+m5uj5jdcOzfFwgOwor6bm9PnnDoW58XCA7Civpub4+Y3XDs3xcIDsKK+m6gD55xY11fFwgOwor6bqGPmNow7p8XCA7Civpuo0+bGnDunxcIDsKK+m6jz5qxatufFwgOwor6bqQPmzDrW58XCA7CivpupQ+amnDuXxcIDsKK+m6lT5qxatufFwgOwor6bqZPnnDoW58XCA7Civpupo+amnEgXxcIDsKK+m6oz55w6FufFwgOwor6bqlPm3DoGl8XCA7Civpuq0+cMOgb3xcIDsKK+m6sD5tw7N1fFwgOwor6bqzPmzDoWl8XCA7Civpu4A+esWNdXxcIDsKK+m7gT5uxJNufFwgOwor6buCPmbDqW58XCA7Civpu4U+asSrbnxcIDsKK+m7iD50x5J1fFwgOwor6buQPmNoxKt8XCA7Civpu5I+aMSTaXxcIDsKK+m7lT5kxIFufFwgOwor6buhPnnHjm58XCA7Civpu6M+bcSbaXxcIDsKK+m7pD55x45ufFwgOwor6buqPmPHjm58XCA7Civpu6s+ecSrbnxcIDsKK+m7rT55xIFufFwgOwor6buuPmTHjm58XCA7Civpu7E+ZMOgaXxcIDsKK+m7sj5jx45ufFwgOwor6bu0Pm3DqWl8XCA7Civpu7U+ZMeObnxcIDsKK+m7tj55x45ufFwgOwor6bu5Pnpox5B8XCA7Civpu7o+ZsSbbnxcIDsKK+m7vT5tx5BufFwgOwor6byEPnpoxat8XCA7CivpvIU+emjEq3xcIDsKK+m8iD5iacSTfFwgOwor6byJPnR1w7N8XCA7CivpvJY+ZsOpbnxcIDsKK+m8lz50w6FvfFwgOwor6bybPmfEgW98XCA7CivpvKE+c2jHlHxcIDsKK+m8oz5mw6hpfFwgOwor6bykPnfDqW58XCA7CivpvKc+dHXDs3xcIDsKK+m8qz5zaMOtfFwgOwor6bytPnNow618XCA7CivpvLI+aMO6bnxcIDsKK+m8tD55x45ufFwgOwor6by4PmjFjXV8XCA7CivpvLo+bMOpaXxcIDsKK+m8vD55x45vfFwgOwor6by9PnFpw7p8XCA7CivpvYE+aMWNdXxcIDsKK+m9hT54acO5fFwgOwor6b2HPnpoxIF8XCA7CivpvZI+Y2jHkHxcIDsKK+m9lz5rxJtufFwgOwor6b2YPnhpw6h8XCA7CivpvZk+cMOhb3xcIDsKK+m9mj5jdcOyfFwgOwor6b2dPmNoxKt8XCA7CivpvaM+Y2jFq3xcIDsKK+m9pT54acOofFwgOwor6b2mPnnDrW58XCA7Civpvac+bmnDqHxcIDsKK+m9qD5qacO5fFwgOwor6b2pPnnHjm98XCA7Civpvas+a8eUbnxcIDsKK+m9rT5jaMeUfFwgOwor6b2wPmN1w7J8XCA7CivpvbM+bsSbbnxcIDsKK+m9uj56xY11fFwgOwor6b28PmNox5R8XCA7Civpvb0+asOsbnxcIDsKK+m+gj5rxJtufFwgOwor6b6RPnnHjm58XCA7CivpvpU+a8SBbnxcIDsKK+m+nD5ndcSrfFwgOwor6b6dPmrFq258XCA7Civpvp4+YmnEk3xcIDsKK+m+oz5kxY11fFwgOwor6b6kPnhpw6l8XCA7CivwoICFPmjDoGl8XCA7CivwoICJPnFpxat8XCA7CivwoICNPnNow6x8XCA7Civwob2xPmppw6h8XCA7CivwoqaPPnrEgWl8XCA7Civwo460PmTHlG58XCA7CivwpomGPmNow6F8XCA7CivnmoQ+ZMSTfFwgOwor5LiAPnnEq3xcIDsKK+S4jT5iw7l8XCA7CivkuoY+bMSTfFwgOwor5oiRPnfHknxcIDsKK+S7lj50xIF8XCA7CivlpKc+ZMOgfFwgOwor5LiqPmfDqHxcIDsKK+WtkD56x5B8XCA7Civlkow+aMOpfFwgOwor5L2gPm7HkHxcIDsKK+WcsD5kxJN8XCA7CivkuZ8+ecSbfFwgOwor5b6XPmTDqXxcIDsKK+mCoz5uw6B8XCA7Civku6U+eceQfFwgOwor6IeqPnrDrHxcIDsKK+WOuz5xw7l8XCA7Civlj68+a8SbfFwgOwor5aW5PnTEgXxcIDsKK+mHjD5sx5B8XCA7CivkuYg+bcSTfFwgOwor6ICMPsOpcnxcIDsKK+aXpT5yw6x8XCA7Civkuo4+ecO6fFwgOwor6LW3PnHHkHxcIDsKK+WPkT5mxIF8XCA7Civml6A+d8O6fFwgOwor5aaCPnLDunxcIDsKK+W3sj55x5B8XCA7CivkuI4+ecO6fFwgOwor5oSPPnnDrHxcIDsKK+aKij5ix458XCA7Civms5U+ZseOfFwgOwor5q2kPmPHkHxcIDsKK+S6jD7DqHJ8XCA7CivnkIY+bMeQfFwgOwor5YW2PnHDrXxcIDsKK+W3sT5qx5B8XCA7CivlhL8+w6lyfFwgOwor6YOoPmLDuXxcIDsKK+Wlsz5ux5p8XCA7Civlips+bMOsfFwgOwor5py6PmrEq3xcIDsKK+WHoD5qx5B8XCA7CivkuJo+ecOofFwgOwor5omTPmTHjnxcIDsKK+Wbmz5zw6x8XCA7CivnrKw+ZMOsfFwgOwor5qyhPmPDrHxcIDsKK+ilvz54xKt8XCA7CivmsJQ+ccOsfFwgOwor5YWlPnLDuXxcIDsKK+S6lD53x5R8XCA7CivkvZM+dMeQfFwgOwor5q+UPmLHkHxcIDsKK+ebrj5tw7l8XCA7Civnq4s+bMOsfFwgOwor6amsPm3HjnxcIDsKK+WuiT7EgW58XCA7Civot68+bMO5fFwgOwor5pyfPnHEq3xcIDsKK+atuz5zx5B8XCA7Civmj5A+dMOtfFwgOwor5L2VPmjDqXxcIDsKK+WQiD5ow6l8XCA7Civns7s+eMOsfFwgOwor6K6hPmrDrHxcIDsKK+WPuD5zxKt8XCA7CivliKk+bMOsfFwgOwor5Y+KPmrDrXxcIDsKK+WKoT53w7l8XCA7CivlkIQ+Z8OofFwgOwor54mpPnfDuXxcIDsKK+iusD5qw6x8XCA7CivlroM+dMSBfFwgOwor6K64PnjHlHxcIDsKK+WFqz5ixIF8XCA7Civnibk+dMOofFwgOwor5pyNPmbDunxcIDsKK+mimD50w618XCA7CivluqY+ZMO5fFwgOwor6ImyPnPDqHxcIDsKK+Wtlz56w6x8XCA7CivniLE+w6BpfFwgOwor5LmJPnfDuXxcIDsKK+enkT5rxJN8XCA7CivmgJ0+c8SrfFwgOwor5aSrPmbFq3xcIDsKK+i1hD56xKt8XCA7Civovr4+ZMOhfFwgOwor5q2mPnfHlHxcIDsKK+S4gz5xxKt8XCA7Civlv4U+YsOsfFwgOwor54i2PmbDuXxcIDsKK+atpT5iw7l8XCA7Civpnak+Z8OpfFwgOwor5Yy6PnHFq3xcIDsKK+WNsz5qw618XCA7CivmioA+asSrfFwgOwor6K+tPnnHlHxcIDsKK+Wfuj5qxKt8XCA7CivmnY4+bMeQfFwgOwor5oGvPnjEq3xcIDsKK+WRoj5uxJN8XCA7CivmnoE+asOtfFwgOwor5b63PmTDqXxcIDsKK+WPlj5xx5R8XCA7CivljoY+bMOsfFwgOwor6K6uPnnDrHxcIDsKK+mZhT5qw6x8XCA7CivliJk+esOpfFwgOwor5o2uPmrDuXxcIDsKK+aLvz5uw6F8XCA7CivkvLw+c8OsfFwgOwor5pavPnPEq3xcIDsKK+W8nz5kw6x8XCA7Civor7s+ZMO6fFwgOwor57uEPnrHlHxcIDsKK+a1jj5qw6x8XCA7Civllpw+eMeQfFwgOwor56a7PmzDrXxcIDsKK+mbhj5qw618XCA7Civlupw+ZseUfFwgOwor5ouJPmzEgXxcIDsKK+agvD5nw6l8XCA7CivluIM+YsO5fFwgOwor5oCVPnDDoHxcIDsKK+avjT5tx5R8XCA7CivlsYA+asO6fFwgOwor5LmQPmzDqHxcIDsKK+e6pz5qw618XCA7CivlhYs+a8OofFwgOwor5ZOqPm7HjnxcIDsKK+S5jj5oxat8XCA7CivkuL4+aseUfFwgOwor5a6iPmvDqHxcIDsKK+iLpj5rx5R8XCA7CivotrM+esO6fFwgOwor5bCUPsSbcnxcIDsKK+eDrT5yw6h8XCA7Civlk6U+Z8STfFwgOwor5ZCXPm1hfFwgOwor5Y+kPmfHlHxcIDsKK+axiT55w6x8XCA7CivnqoE+dMWrfFwgOwor5ZCnPmLEgXxcIDsKK+S6mj55w6B8XCA7CivlpI0+ZsO5fFwgOwor5Yi7PmvDqHxcIDsKK+WknD55w6h8XCA7CivlupU+ZMeQfFwgOwor5pWFPmfDuXxcIDsKK+WmiD5txIF8XCA7Civlj6U+asO5fFwgOwor6KGjPnnEq3xcIDsKK+mZhj5sw7l8XCA7Civlmag+ccOsfFwgOwor56C0PnDDsnxcIDsKK+WFtz5qw7l8XCA7CivlsYU+asWrfFwgOwor5om5PnDEq3xcIDsKK+azvT56w6l8XCA7CivlpYc+ccOtfFwgOwor5piTPnnDrHxcIDsKK+aApT5qw618XCA7CivkvY4+ZMSrfFwgOwor6ZyAPnjFq3xcIDsKK+aysz5ow6l8XCA7Civml48+esO6fFwgOwor6IOhPmjDunxcIDsKK+S8gT5xx5B8XCA7Civnuqo+asOsfFwgOwor6IuPPnPFq3xcIDsKK+WMuz55xKt8XCA7CivnrZQ+ZMOhfFwgOwor5ZyfPnTHlHxcIDsKK+WHuz5qw618XCA7CivogrI+ecO5fFwgOwor57utPnjDuXxcIDsKK+eLrD5kw7p8XCA7CivmiLc+aMO5fFwgOwor5oqkPmjDuXxcIDsKK+WWnT5oxJN8XCA7CivotKM+esOpfFwgOwor5L2ZPnnDunxcIDsKK+W4jD54xKt8XCA7Civlm74+dMO6fFwgOwor54i3PnnDqXxcIDsKK+W4rT54w618XCA7Civmmpc+w6BufFwgOwor6aG7PnjFq3xcIDsKK+ahiD7DoG58XCA7Civlkbw+aMWrfFwgOwor57uGPnjDrHxcIDsKK+iviT5zw7l8XCA7CivnrJQ+YseQfFwgOwor56aPPmbDunxcIDsKK+WnkT5nxat8XCA7Civml6I+asOsfFwgOwor5be0PmLEgXxcIDsKK+acqD5tw7l8XCA7Civlia8+ZsO5fFwgOwor6L6RPmrDrXxcIDsKK+exsz5tx5B8XCA7CivmrYw+Z8STfFwgOwor6YCfPnPDuXxcIDsKK+W/vT5oxat8XCA7CivmlYw+ZMOtfFwgOwor6aG+PmfDuXxcIDsKK+S4vT5sw6x8XCA7Civkvp0+ecSrfFwgOwor5oyJPsOgbnxcIDsKK+a/gD5qxKt8XCA7CivlvII+ecOsfFwgOwor6LSfPmbDuXxcIDsKK+aooT5tw7N8XCA7CivpnLI+bMO5fFwgOwor5a+GPm3DrHxcIDsKK+W+iz5sx5x8XCA7CivkuaA+eMOtfFwgOwor5q+SPmTDunxcIDsKK+azoj5ixY18XCA7CivlsYs+d8WrfFwgOwor5a+EPmrDrHxcIDsKK+W4nT5kw6x8XCA7CivkuJ0+c8SrfFwgOwor5rmWPmjDunxcIDsKK+Wmhz5mw7l8XCA7CivkvK8+YsOzfFwgOwor5bC8Pm7DrXxcIDsKK+earj5ww618XCA7CivnpZY+eseUfFwgOwor5ZOIPmjEgXxcIDsKK+ekvD5sx5B8XCA7Civljos+ecSBfFwgOwor5amGPnDDs3xcIDsKK+WvjD5mw7l8XCA7CivlvZU+bMO5fFwgOwor6YGHPnnDuXxcIDsKK+iJuj55w6x8XCA7Civmma4+cMeUfFwgOwor5Lq/PnnDrHxcIDsKK+e0oD5zw7l8XCA7Civnu6c+asOsfFwgOwor6ZuoPnnHlHxcIDsKK+S9mz5mw7p8XCA7CivlkLQ+d8O6fFwgOwor5puyPnHHlHxcIDsKK+eOiT55w7l8XCA7CivpvZA+ccOtfFwgOwor55aRPnnDrXxcIDsKK+etlj5jw6h8XCA7Civkvos+bMOsfFwgOwor6IKhPmfHlHxcIDsKK+WJpz5qw7l8XCA7CivmnYI+esOhfFwgOwor5oCSPm7DuXxcIDsKK+eOhz5sx5x8XCA7CivllaY+bMSBfFwgOwor6I6rPm3DsnxcIDsKK+aBqT7Ek258XCA7Civnp68+asSrfFwgOwor55uKPnnDrHxcIDsKK+WTrT5rxat8XCA7CivnvaI+YsOgfFwgOwor5Y2IPnfHlHxcIDsKK+WNoT5rx458XCA7CivljZo+YsOzfFwgOwor5q+VPmLDrHxcIDsKK+aspz7FjXV8XCA7Civlprs+ccSrfFwgOwor6JmaPnjFq3xcIDsKK+mihD55w7l8XCA7CivliLo+Y8OsfFwgOwor6bG8PnnDunxcIDsKK+iAsz7Em3J8XCA7Civph44+ecSbfFwgOwor6buYPm3DsnxcIDsKK+W+kj50w7p8XCA7Civnp7s+ecOtfFwgOwor54i4PmLDoHxcIDsKK+eLkD5ow7p8XCA7CivkupI+aMO5fFwgOwor5peFPmzHmnxcIDsKK+mqgj5tw6B8XCA7Civnp5g+bcOsfFwgOwor6K+NPmPDrXxcIDsKK+mqqD5nx5R8XCA7CivmrLI+ecO5fFwgOwor56eBPnPEq3xcIDsKK+iInj53x5R8XCA7Civlt6g+asO5fFwgOwor5ZC4PnjEq3xcIDsKK+mBvz5iw6x8XCA7Civlv4w+asOsfFwgOwor5Z+fPnnDuXxcIDsKK+WRgD55xIF8XCA7Civku5g+ZsO5fFwgOwor5bqTPmvDuXxcIDsKK+e7vz5sx5x8XCA7CivlvpA+eMO6fFwgOwor6K+vPnfDuXxcIDsKK+e6sz5uw6B8XCA7CivpgZc+ecOtfFwgOwor6L+3Pm3DrXxcIDsKK+mygT5sx5R8XCA7CivmiI8+eMOsfFwgOwor6LajPnHDuXxcIDsKK+ivvj5rw6h8XCA7Civpurs+bcOhfFwgOwor5rSXPnjHkHxcIDsKK+i/qz5ww7J8XCA7Civmsb0+ccOsfFwgOwor6byTPmfHlHxcIDsKK+WyuD7DoG58XCA7CivmtYs+Y8OofFwgOwor6YCUPnTDunxcIDsKK+iAtj55xJN8XCA7Civmkbg+bcWNfFwgOwor5oupPnrDqXxcIDsKK+iqiT55w7l8XCA7Civku6o+ecOtfFwgOwor5peXPnHDrXxcIDsKK+WlpT7DoG98XCA7Civmj6E+d8OyfFwgOwor54mZPnnDoXxcIDsKK+iZkT5sx5x8XCA7CivmoLg+aMOpfFwgOwor6KGlPmLHlHxcIDsKK+mbhT55x458XCA7CivlkIk+asOtfFwgOwor5LqmPnnDrHxcIDsKK+iwtz5nx5R8XCA7Civljok+bMOsfFwgOwor6L+5PmrDrHxcIDsKK+W6jz54w7l8XCA7CivpmYQ+ZsO5fFwgOwor6bihPmrEq3xcIDsKK+W/hj55w6x8XCA7Civmg5w+eMSrfFwgOwor6ZqUPmfDqXxcIDsKK+aSrT5ixY18XCA7Civpur0+bcSBfFwgOwor5qOLPnHDrXxcIDsKK+iHgj5iw6x8XCA7Civmm78+dMOsfFwgOwor5Zu6PmfDuXxcIDsKK+iZjj5ox5R8XCA7CivlraM+asOsfFwgOwor6IGaPmrDuXxcIDsKK+ivkT55w6x8XCA7CivkvIo+ecSrfFwgOwor5pyrPm3DsnxcIDsKK+W8gz5xw6x8XCA7Civns4o+aMO6fFwgOwor5oq1PmTHkHxcIDsKK+aRqT5tw7N8XCA7CivluIE+YsOsfFwgOwor5ZCvPnHHkHxcIDsKK+eggT5tx458XCA7Civkv5c+c8O6fFwgOwor552jPmTFq3xcIDsKK+mihz5wx5J8XCA7CivlraQ+Z8WrfFwgOwor5LqIPnnHlHxcIDsKK+e0qz56x5B8XCA7Civkvqc+Y8OofFwgOwor5ouUPmLDoXxcIDsKK+W5lT5tw7l8XCA7Civlo4E+YsOsfFwgOwor6ZetPmLDrHxcIDsKK+Wvuj5zw6x8XCA7CivpgLw+YsSrfFwgOwor6aqRPnHDrXxcIDsKK+S/gz5jw7l8XCA7Civlrpw+ecOtfFwgOwor5ZibPm1hfFwgOwor5bmFPmbDunxcIDsKK+axoT53xat8XCA7CivmiZE+cMWrfFwgOwor6JCoPnPDoHxcIDsKK+eLsT55w7l8XCA7CivlsoI+cceQfFwgOwor5p6QPnjEq3xcIDsKK+ejqD5tw7N8XCA7CivkvI8+ZsO6fFwgOwor6L6ePmPDrXxcIDsKK+azpT5uw618XCA7CivpvLs+YsOtfFwgOwor5oWVPm3DuXxcIDsKK+Wuvz5zw7l8XCA7Civnspc+Y8WrfFwgOwor5LmMPnfFq3xcIDsKK+aEiD55w7l8XCA7Civpk7o+cMWrfFwgOwor55a+PmrDrXxcIDsKK+i4jz50w6B8XCA7CivkvI0+d8eUfFwgOwor57GNPmrDrXxcIDsKK+WKqj5ux5R8XCA7Civlvbw+YseQfFwgOwor5oKJPnjEq3xcIDsKK+iWhD5iw7N8XCA7Civot50+asO5fFwgOwor5oykPmrHkHxcIDsKK+WQkD50x5R8XCA7CivpmLs+eseUfFwgOwor6aKXPmvEk3xcIDsKK+eIrD5ww6F8XCA7CivlgbY+x5J1fFwgOwor6aG1PnnDqHxcIDsKK+WdoT5wxY18XCA7Civli5I+bMOofFwgOwor5aGUPnTHjnxcIDsKK+aLkj5qw7l8XCA7CivmkpI+c8eOfFwgOwor5pa8PnnDunxcIDsKK+e7qj54w7l8XCA7Civogpo+ZMO5fFwgOwor5LmPPmbDoXxcIDsKK+Wvgj5qw6x8XCA7CivmibY+ZsO6fFwgOwor5o2VPmLHlHxcIDsKK+mtlD5tw7N8XCA7CivlopM+bcO5fFwgOwor5qy6PnHEq3xcIDsKK+aCnz53w7l8XCA7Civotas+aMOofFwgOwor5bGIPnHFq3xcIDsKK+i+sT5yx5R8XCA7CivotbQ+ZsO5fFwgOwor6YCSPmTDrHxcIDsKK+e7qT5qw6x8XCA7CivmtoI+dMO6fFwgOwor5YmyPmfEk3xcIDsKK+WKsT5sw6x8XCA7Civlroc+eceUfFwgOwor5pCtPmTEgXxcIDsKK+a1rj5mw7p8XCA7CivnrKY+ZsO6fFwgOwor6IKDPnPDuXxcIDsKK+WltD5uw7p8XCA7Civlp4o+eseQfFwgOwor56efPnrFq3xcIDsKK+akhT55x5B8XCA7CivohZA+ZseUfFwgOwor55OmPnfHjnxcIDsKK+aTpj5jxIF8XCA7CivovqM+bMOgfFwgOwor5rihPmTDuXxcIDsKK+iNtz5ow6l8XCA7CivlqIM+d8OhfFwgOwor572aPmbDoXxcIDsKK+Wnhj5tx5R8XCA7CivmjKg+xIFpfFwgOwor5oWIPmPDrXxcIDsKK+a+sz7DoG98XCA7CivpqbE+ccWrfFwgOwor56qdPnfFjXxcIDsKK+ijpD5rw7l8XCA7CivkvLA+Z8WrfFwgOwor5p2cPmTDuXxcIDsKK+eOmz5tx458XCA7Civmn68+a8STfFwgOwor5ZOAPsSBaXxcIDsKK+iFuT5mw7l8XCA7Civli4M+YsOzfFwgOwor5Z+DPsSBaXxcIDsKK+eogD54xKt8XCA7Civljow+ecSBfFwgOwor6LaLPmPDuXxcIDsKK+WCsj7DoG98XCA7Civmi6g+YsWNfFwgOwor6LiiPnTEq3xcIDsKK+Wnvz56xKt8XCA7Civpu44+bMOtfFwgOwor56WtPmrDrHxcIDsKK+a7tD5kxKt8XCA7Civooq0+eMOtfFwgOwor5bGgPnTDunxcIDsKK+WSkD5mw7l8XCA7Civmg6c+asO5fFwgOwor5rygPm3DsnxcIDsKK+WWhz5sxIF8XCA7Civku5Q+esSrfFwgOwor5aKoPm3DsnxcIDsKK+S/sT5qw7l8XCA7CivlsYE+cMOsfFwgOwor5Yy5PnDEq3xcIDsKK+aLnz5ux5B8XCA7Civmu4s+esSrfFwgOwor6LS6PmjDqHxcIDsKK+aKmj5mx5R8XCA7CivmjJY+d8SBfFwgOwor5YaMPmPDqHxcIDsKK+eGmT54xKt8XCA7Civnoqc+YsOsfFwgOwor55uSPmjDqXxcIDsKK+iwij55w618XCA7Civljac+d8OyfFwgOwor57+8PnnDrHxcIDsKK+WRtT5oxJN8XCA7CivmtJI+c8eOfFwgOwor6LCxPnDHlHxcIDsKK+mYgT5nw6l8XCA7CivopoY+ZsO5fFwgOwor5oq5Pm3HknxcIDsKK+WNoj5sw7p8XCA7Civnoo0+w6BpfFwgOwor54uEPmTDrXxcIDsKK+aKvD55xIF8XCA7Civpm74+d8O5fFwgOwor5oiaPnHEq3xcIDsKK+W+oT55w7l8XCA7Civphbc+a8O5fFwgOwor6Im+PsOgaXxcIDsKK+WUiT7EgWl8XCA7CivmkLo+eMSrfFwgOwor56mGPm3DuXxcIDsKK+mDgT55w7l8XCA7CivlgoU+ZsO5fFwgOwor56ijPnPFq3xcIDsKK+eJpz5tw7l8XCA7CivlhJI+csO6fFwgOwor55ayPnDDrXxcIDsKK+i1jD5kx5R8XCA7Civlkqg+esSrfFwgOwor5Zi7PnjEq3xcIDsKK+eCiT5sw7p8XCA7Civov6o+ZMOtfFwgOwor5oqrPnDEq3xcIDsKK+WJpT5ixY18XCA7Civlvbk+ecOsfFwgOwor6YCGPm7DrHxcIDsKK+efrj7Hjml8XCA7CivlpJU+eMOsfFwgOwor5rayPnnDqHxcIDsKK+S7hj5wxat8XCA7CivlvKU+bcOtfFwgOwor5ri0PmvEm3xcIDsKK+airz50xKt8XCA7CivokoI+ZMOsfFwgOwor5ai2PnHHlHxcIDsKK+W8lz5mw7p8XCA7CivnkoM+bMOtfFwgOwor6IKkPmbFq3xcIDsKK+m5vz5sw7l8XCA7Civlk6k+bMSrfFwgOwor5p6vPmvFq3xcIDsKK+WhkT5zw7l8XCA7Civosas+ecO5fFwgOwor5oqRPnnDrHxcIDsKK+iJsz5iw7N8XCA7Civnjrs+YsWNfFwgOwor56C4PnrDoXxcIDsKK+iRmz5nw6l8XCA7Civnn6k+aseUfFwgOwor6ISWPmLDs3xcIDsKK+iEvj5ww618XCA7CivotZA+c8OsfFwgOwor6JOEPnjDuXxcIDsKK+m5pD5ow6h8XCA7Civovp8+YsOsfFwgOwor5riUPnnDunxcIDsKK+mcuD5iw6B8XCA7Civlk5E+eceOfFwgOwor5rWmPnDHlHxcIDsKK+eJuj54xKt8XCA7CivlkIE+ecO5fFwgOwor6ZShPnjDrXxcIDsKK+iKmT5mw7p8XCA7Civlk58+eW98XCA7Civmg7k+csSbfFwgOwor5aWRPnHDrHxcIDsKK+aEmj55w7p8XCA7Civlp6g+ecOtfFwgOwor6ZmMPm3DsnxcIDsKK+eMjj54w618XCA7CivppaU+asSrfFwgOwor5YeEPnHEq3xcIDsKK+iGnT54xKt8XCA7Civliog+cMSrfFwgOwor5bSWPnnDoXxcIDsKK+a2rz55w6F8XCA7CivmiIg+Z8STfFwgOwor5aC1PmTHlHxcIDsKK+mbhz5nw7l8XCA7Civms4o+YsOzfFwgOwor5pKVPnPEq3xcIDsKK+WPmT54w7l8XCA7Civmo7U+a8STfFwgOwor5py0PnDDsnxcIDsKK+a6qj54xKt8XCA7Civojok+bMOsfFwgOwor56OVPmvEk3xcIDsKK+WQlT5sx5p8XCA7CivmmJQ+eMSrfFwgOwor56OBPmPDrXxcIDsKK+S/rz5mx5R8XCA7Civmi4I+ZsO6fFwgOwor5L+6PseObnxcIDsKK+W4lT5ww6B8XCA7Civll68+xJNufFwgOwor5rO8PnDFjXxcIDsKK+Wmkz5qw6x8XCA7Civoj6k+cMO6fFwgOwor5Y6VPmPDqHxcIDsKK+S/mD5mw7p8XCA7Civmr4U+ecOsfFwgOwor5LirPnnEgXxcIDsKK+eykj5sw6x8XCA7Civnp4M+dMWrfFwgOwor6IWKPmzDoHxcIDsKK+WAqj5uw618XCA7CivnkZ8+c8OofFwgOwor6bitPnnEgXxcIDsKK+icnD5tw6x8XCA7CivlqrM+eMOtfFwgOwor5q2nPnHDrXxcIDsKK+S6qT5tx5R8XCA7Civlr54+bcOyfFwgOwor5pCBPmfEk3xcIDsKK+S/nj55w7p8XCA7CivkvJA+ZsOhfFwgOwor5ryGPnHEq3xcIDsKK+aAlj5iw7l8XCA7CivlkL4+d8O6fFwgOwor6IKGPnPDrHxcIDsKK+azoz5xw6x8XCA7CivotYs+ZsO5fFwgOwor54asPsOhb3xcIDsKK+WSsz5rw6l8XCA7CivmhIk+ecO6fFwgOwor6L6cPmfFq3xcIDsKK+iCjD5qxKt8XCA7Civnvr0+eceUfFwgOwor5q+ZPmLDrHxcIDsKK+aLmD5qxat8XCA7Civlk4c+d8SBfFwgOwor6LCcPm3DrXxcIDsKK+mAuD55w6x8XCA7CivlkZw+d8WrfFwgOwor5Y2cPmLFjXxcIDsKK+Wvkz55w7l8XCA7CivpqbM+YsOzfFwgOwor5rW0PnnDuXxcIDsKK+WSlT5nxat8XCA7CivmkI8+YsOzfFwgOwor5rigPnHDunxcIDsKK+Wktz55w618XCA7Civmsqo+aMO5fFwgOwor6a2EPnDDsnxcIDsKK+aZsD54xKt8XCA7Civoo5Q+ecOsfFwgOwor5YCaPnnHkHxcIDsKK+WhjD50xIF8XCA7Civoo5U+ecO5fFwgOwor5LmzPnLHlHxcIDsKK+WLvz53w7l8XCA7Civnnbk+ZMeUfFwgOwor6K62PnnDoHxcIDsKK+WSlj5rxIF8XCA7CivlqLE+ecO6fFwgOwor6bimPnnEgXxcIDsKK+Wmrj5uxKt8XCA7CivnlKs+ZseUfFwgOwor5Z2dPmLDoHxcIDsKK+aykD5tw7l8XCA7Civkvq4+d8eUfFwgOwor5YWAPnfDuXxcIDsKK+WxpT5sx5p8XCA7Civnsp4+eMSrfFwgOwor5rqiPnnDrHxcIDsKK+S5nj5xx5B8XCA7CivnvJo+ZsO6fFwgOwor6IiGPnnDunxcIDsKK+WgpD5kxKt8XCA7CivouYQ+dMOtfFwgOwor5rKrPm3DsnxcIDsKK+Wjtj5ow7p8XCA7Civnoow+bMO5fFwgOwor6am0PmzHmHxcIDsKK+mEmT5ix5B8XCA7Civlo7M+a8OpfFwgOwor6IqmPmzDunxcIDsKK+iDsz5nxJN8XCA7Civnn6M+eceQfFwgOwor6ISKPmrDrXxcIDsKK+i+hT5mx5R8XCA7Civohoo+YsOzfFwgOwor5Z6DPmzEgXxcIDsKK+matj5sw6x8XCA7Civlk44+xIFpfFwgOwor5YWUPnTDuXxcIDsKK+Wcvj5qw618XCA7Civllrs+ecO5fFwgOwor5bCsPmfDoHxcIDsKK+WRkD5uw6h8XCA7Civoj4o+asO6fFwgOwor5ZaAPmvEgXxcIDsKK+eTtz5jw618XCA7CivlsaE+bMeafFwgOwor6JyhPmzDoHxcIDsKK+WJgj5qw6x8XCA7CivlupA+bMO6fFwgOwor5aWaPnjEq3xcIDsKK+iRoT5ww7p8XCA7Civok6Y+bcOyfFwgOwor5LmZPnnHkHxcIDsKK+elgT5xw618XCA7Civmmq4+bcO5fFwgOwor6IW7Pm7DrHxcIDsKK+WVpD5ww618XCA7Civnpr4+aMOpfFwgOwor6LqvPnHFq3xcIDsKK+mmgD55w7p8XCA7Civmoqg+bMOtfFwgOwor55CqPnHDrXxcIDsKK+WDuz5ww6x8XCA7CivljJU+YsOsfFwgOwor6ZqZPnjDrHxcIDsKK+WFuT56xKt8XCA7CivmgKE+ecOtfFwgOwor54+CPmvEk3xcIDsKK+a2qT5zw6h8XCA7CivnmYw+w6FpfFwgOwor5Y6uPnPEq3xcIDsKK+iGnD5tw7N8XCA7CivojKg+Y8OtfFwgOwor55arPnnDrHxcIDsKK+axnT5yx5R8XCA7CivpnpE+ZMOhfFwgOwor56qfPmvFq3xcIDsKK+esmz5kw618XCA7Civop4U+bcOsfFwgOwor6JS9PmLDrHxcIDsKK+WNkj56w7p8XCA7CivnhoQ+eMOtfFwgOwor57uuPnHHkHxcIDsKK+WQjz5sw6x8XCA7Civoraw+cMOsfFwgOwor5am/PnjDuXxcIDsKK+mAvj55w7p8XCA7CivlppI+ZMO5fFwgOwor5ZKqPm3Eq3xcIDsKK+eliD5xx5B8XCA7Civpu68+w6BufFwgOwor56a5PnnHlHxcIDsKK+mejT7EgW58XCA7Civllao+cMSBfFwgOwor5Y+tPmLEgXxcIDsKK+WYtj5zxKt8XCA7CivlvIo+YsOsfFwgOwor5ZW8PnTDrXxcIDsKK+mGiz5jw7l8XCA7CivnnK8+bceQfFwgOwor56i9PmrEq3xcIDsKK+WYnz5kxat8XCA7CivnvJU+bMeafFwgOwor6KKcPnfDoHxcIDsKK+WGtj55xJt8XCA7Civmg5U+dMOsfFwgOwor5qCXPmzDrHxcIDsKK+aWpz5mx5R8XCA7CivorqU+asSrfFwgOwor6L+EPnHDrHxcIDsKK+S+oz5sx5p8XCA7CivmvJM+bMOtfFwgOwor5YWuPnjEq3xcIDsKK+aVtz5mxat8XCA7Civmr5M+ecO5fFwgOwor55GcPnnDunxcIDsKK+aikz56x5B8XCA7CivmlZ0+YsOsfFwgOwor6KKxPmbDunxcIDsKK+iZjz5sx5R8XCA7CivliYM+dMOsfFwgOwor6bOMPsOhb3xcIDsKK+aygz53w7J8XCA7Civmoqc+d8O6fFwgOwor5aesPmrEq3xcIDsKK+mckz5uw618XCA7Civokas+aMO6fFwgOwor5raVPnTDrHxcIDsKK+esgz5kx5R8XCA7Civlkos+eseOfFwgOwor5ZGVPsWNdXxcIDsKK+WSpj55w618XCA7Civml60+eMO5fFwgOwor5o2CPnfHlHxcIDsKK+W3qz53xat8XCA7CivlnZ4+d8O5fFwgOwor5auJPmrDrXxcIDsKK+emhD5sw7l8XCA7CivlmJg+eMWrfFwgOwor6K+sPnfDunxcIDsKK+WLnz5tw7l8XCA7Civoiq0+YsSBfFwgOwor5Y+9PmrEq3xcIDsKK+i2tD5wxIF8XCA7CivmvKo+ecSrfFwgOwor55akPmLEgXxcIDsKK+iagT55x5B8XCA7CivlqIU+ecOgfFwgOwor57KfPnPDuXxcIDsKK+mikD55w618XCA7CivkvLo+Y8OsfFwgOwor6KeRPnHDuXxcIDsKK+WZnD5sxat8XCA7CivokrI+cMO6fFwgOwor5Ye4PnTFq3xcIDsKK+WsiT54xKt8XCA7CivmoJY+ccSrfFwgOwor6LeLPmLDoXxcIDsKK+ayrj5qx5R8XCA7CivlmI4+Z8SBfFwgOwor5ZKvPmfEk3xcIDsKK+eAkT5ww7l8XCA7CivmiZI+YsSBfFwgOwor5ZyqPmfEk3xcIDsKK+mpuT5qxat8XCA7Civmmqg+asOsfFwgOwor57WuPnjDuXxcIDsKK+idtD5ow7p8XCA7CivpuL0+Z8STfFwgOwor5Ye5PsSBb3xcIDsKK+aDmj5oxat8XCA7CivmuJ0+ecO6fFwgOwor6ZKwPnnDuXxcIDsKK+mdoT5tw618XCA7Civmj5Y+ecSrfFwgOwor5q60PsWNdXxcIDsKK+WYgD5kw618XCA7CivlmZc+cMWrfFwgOwor57yJPnHDrHxcIDsKK+eftj5qxKt8XCA7CivnsIc+Y8O5fFwgOwor6Iq9PnnDoXxcIDsKK+aHij7DoG98XCA7CivppbI+c8OsfFwgOwor6ZiAPmbDoXxcIDsKK+iwlT55w7l8XCA7CivnvJQ+ZMOsfFwgOwor5bqHPmLDrHxcIDsKK+aLhz5tx5R8XCA7CivljL8+bsOsfFwgOwor5Y6YPmzDrXxcIDsKK+iihD7Hjm98XCA7CivomoI+bceOfFwgOwor5YmUPnTEq3xcIDsKK+Wxvz55x5R8XCA7CivlurU+xIFufFwgOwor5L+QPmzDrHxcIDsKK+WtnD56xKt8XCA7Civmuq8+c8O5fFwgOwor56anPnjHkHxcIDsKK+ihmT55w6F8XCA7CivpnqA+asWrfFwgOwor5YaAPmrDrHxcIDsKK+aZpD53w7l8XCA7CivlpZU+ecOsfFwgOwor5bGJPnTDrHxcIDsKK+ivoz55w6x8XCA7CivnpaA+Y8OtfFwgOwor57CMPnPDuXxcIDsKK+ajmD5qw618XCA7CivmjrM+bMeUfFwgOwor54u4PmzDrXxcIDsKK+iLmz5rxJN8XCA7CivnsL8+YsO5fFwgOwor5bG5PnnDrHxcIDsKK+egjD5xw6x8XCA7CivoobI+bsOgfFwgOwor5rS8PnfEgXxcIDsKK+amuz50w6B8XCA7CivomZ4+ecO6fFwgOwor6JuZPnfEgXxcIDsKK+mUrz5qw7l8XCA7Civnnr8+ccO6fFwgOwor5ZWnPnrDqXxcIDsKK+WUrD5ox5R8XCA7CivohK8+cMO6fFwgOwor6K+FPnrHlHxcIDsKK+eJoT5tx5R8XCA7Civll5I+dMOgfFwgOwor6L6QPmbDunxcIDsKK+Winz54xat8XCA7CivmgaQ+eMO5fFwgOwor6KSlPnLDuXxcIDsKK+eWmT5nxJN8XCA7CivmtqE+d8WNfFwgOwor5amiPmLDrHxcIDsKK+a8iT5sw7l8XCA7Civppo0+bcOzfFwgOwor54qBPmzDrXxcIDsKK+aygj55w618XCA7Civmm7M+ecOofFwgOwor6YWlPnPFq3xcIDsKK+ahlD5qw7p8XCA7CivpooU+bMO6fFwgOwor6ZK1PmLFjXxcIDsKK+ibpD5nw6l8XCA7Civpmpg+w6BpfFwgOwor55ipPmTEgXxcIDsKK+aIrj5sw7l8XCA7CivmuKU+d8OyfFwgOwor6LmLPnTDoHxcIDsKK+edpj5tw7l8XCA7Civpm4w+Y8OtfFwgOwor6L2nPmfDoXxcIDsKK+WflD5wx5R8XCA7Civmuro+bsOsfFwgOwor6J2gPmbDunxcIDsKK+WZjj55xJN8XCA7Civoipw+d8O6fFwgOwor576BPmrEq3xcIDsKK+WSgD5qx5R8XCA7CivpmJw+ZsO5fFwgOwor6Z22PmLHjnxcIDsKK+WRsT5nxat8XCA7CivlvKc+aMO6fFwgOwor6IWRPmbHlHxcIDsKK+iwmz5kw6x8XCA7Civngqw+asO5fFwgOwor5Zm2PmfDoXxcIDsKK+iUvD7Hjml8XCA7CivoiLY+YsOzfFwgOwor5riOPmTDunxcIDsKK+eXnj5wx5B8XCA7Civmjbo+bsOgfFwgOwor5q+LPnfDunxcIDsKK+ewuD5ix5J8XCA7CivmiIo+d8O5fFwgOwor6Iy5PnLDunxcIDsKK+ibkD5xxat8XCA7CivpmZs+YsOsfFwgOwor55KnPmLDrHxcIDsKK+WUlD53w7p8XCA7Civnr7E+bMOtfFwgOwor6L+CPnnFq3xcIDsKK+iFiz55w6h8XCA7CivmtZI+aMeUfFwgOwor5bSOPnHDrXxcIDsKK+aBqj5rw6h8XCA7CivovbY+ecOsfFwgOwor55C2PnDDoXxcIDsKK+WJjD5sw6F8XCA7CivotYI+bMO5fFwgOwor5pWWPsOhb3xcIDsKK+eQtT5ww618XCA7Civku4Q+esOofFwgOwor5rakPmTDrXxcIDsKK+mCrD53xat8XCA7CivmsqU+bMOsfFwgOwor5Z23PmvEm3xcIDsKK+m6kz5sw7l8XCA7CivopJA+aMOofFwgOwor5ZqTPmPEgXxcIDsKK+e7jj55w6x8XCA7Civlk7o+YseUfFwgOwor5Y2FPnPDoHxcIDsKK+a4jT56w6x8XCA7CivmiJ8+aseQfFwgOwor6LebPmLHknxcIDsKK+ifhj5tw6F8XCA7CivpgpE+ecOsfFwgOwor55KQPmzDuXxcIDsKK+W/kj50w6h8XCA7CivpmoU+ecO6fFwgOwor5Z+gPmLDuXxcIDsKK+esiD5qw618XCA7CivmoKk+eMeUfFwgOwor5oK4PmrDrHxcIDsKK+axsj5qw618XCA7Civnnag+bsOsfFwgOwor5rekPnnFq3xcIDsKK+eujT5nxat8XCA7Civll6M+c8OsfFwgOwor5oyOPmvFq3xcIDsKK+i4nj5qw7l8XCA7Civmgbs+Y8OofFwgOwor5ZS3PnnFjXxcIDsKK+iglT5yw7p8XCA7CivpnLk+cMSrfFwgOwor6LmKPnjEq3xcIDsKK+eSnj5ww7p8XCA7CivnrKA+bMOsfFwgOwor5ZSnPmrEq3xcIDsKK+eluj5xw618XCA7CivpkqA+bsOgfFwgOwor6I+HPmfFq3xcIDsKK+m4pT7FjXV8XCA7Civpm7M+bMOsfFwgOwor5qaGPnnDunxcIDsKK+aRuT5tw7N8XCA7CivmspM+dMOgfFwgOwor54ydPmPDuXxcIDsKK+W8qT5ux5R8XCA7Civmm50+cMO5fFwgOwor5LyOPmrDrHxcIDsKK+eKgD54xKt8XCA7Civmm6Y+eMSrfFwgOwor6JuKPmfHlHxcIDsKK+mpuD5mw7l8XCA7CivnmZY+cMeQfFwgOwor6K63Pm7DqHxcIDsKK+a4pD5iw7N8XCA7Civng6g+ecOofFwgOwor6L6YPmzDuXxcIDsKK+eQpj5xw618XCA7Civol5U+x5J1fFwgOwor5Ze3PsOhb3xcIDsKK+mTnT5sx5p8XCA7Civot7s+asSrfFwgOwor5ZOSPmTEgXxcIDsKK+aIjD54xat8XCA7CivmjYs+bMeafFwgOwor6YecPmbHlHxcIDsKK+iNvD50w7p8XCA7Civnlbg+asSrfFwgOwor576yPnjEq3xcIDsKK+aapz7DoGl8XCA7Civnv4w+ecOsfFwgOwor6JyIPnfDunxcIDsKK+W8iD55w6x8XCA7CivotLs+ecOtfFwgOwor56WAPnPDrHxcIDsKK+eejD5rxJN8XCA7CivlrZo+ZsO6fFwgOwor5LqfPmrDrXxcIDsKK+aEqz5zw7l8XCA7CivosJk+xIFufFwgOwor6IG/PnnDuXxcIDsKK+eGuT54xKt8XCA7CivlmoU+csO6fFwgOwor6ZWAPmTDuXxcIDsKK+WNpD5sx5R8XCA7CivnmpE+w6FpfFwgOwor5aijPmTDrHxcIDsKK+WSlD5rx458XCA7CivnrY8+ZsOhfFwgOwor6aOSPnPDoHxcIDsKK+aoqD54xKt8XCA7Civmu6Q+bMecfFwgOwor6LmZPmPDuXxcIDsKK+iDpT54xat8XCA7Civnsb0+eseQfFwgOwor5b6ZPnjHkHxcIDsKK+WUjz54xKt8XCA7CivojZQ+bMOsfFwgOwor54qKPmTDunxcIDsKK+eFpj54x5R8XCA7Civmsak+Z8eUfFwgOwor5q+XPnDDrXxcIDsKK+Wdsz7DoG98XCA7CivohJA+asSrfFwgOwor5ZyDPnDHlHxcIDsKK+eGoD55w6x8XCA7CivpsqQ+bMeQfFwgOwor5bibPmLDs3xcIDsKK+mqtz5rxat8XCA7Civpq7s+asOsfFwgOwor6KChPmzDrXxcIDsKK+S4lT5wx5B8XCA7CivllpQ+d8WNfFwgOwor5Z2vPnDEq3xcIDsKK+awrz5sx5x8XCA7Civlpqk+d8eUfFwgOwor5auhPmTDrXxcIDsKK+ayvT5nxat8XCA7Civpqa0+ecO5fFwgOwor5pahPnfDsnxcIDsKK+WVrD5zw6h8XCA7Civoios+ecO5fFwgOwor6JiRPm3Ds3xcIDsKK+W/kT50w6h8XCA7Civnj6U+xJtyfFwgOwor5ZaPPnLEm3xcIDsKK+WSgj56xIF8XCA7Civpgrg+ZMeQfFwgOwor5o6sPmrDunxcIDsKK+eshj5ixIF8XCA7CivlgK0+d8WNfFwgOwor5aORPmjDqHxcIDsKK+iHhj55w6x8XCA7Civlrbo+csO6fFwgOwor6aalPmbDuXxcIDsKK+WSvz55xKt8XCA7Civkv74+YseQfFwgOwor5rOMPmLDrHxcIDsKK+mcrT7Hjml8XCA7CivpqqU+asOsfFwgOwor5pi1Pm7DrHxcIDsKK+mpvz55w6x8XCA7CivltYc+asSrfFwgOwor6ZiCPmjDqXxcIDsKK+mqvD5nw6l8XCA7Civnia8+Z8eUfFwgOwor6YSxPnDDs3xcIDsKK+ayjz5xxKt8XCA7CivnqLc+asOsfFwgOwor5Yq+PmjDqXxcIDsKK+iwpz5tw6x8XCA7CivopJs+bMeafFwgOwor546RPmrEq3xcIDsKK+S/nz5zw6x8XCA7Civls6o+ecO5fFwgOwor5ZqPPnTDrHxcIDsKK+egvj5sw6x8XCA7CivnrpU+asSrfFwgOwor5by8PmLDrHxcIDsKK+iAmT5ww6F8XCA7CivplKI+Z8O5fFwgOwor5bKcPmLEgXxcIDsKK+iAtz5kxIF8XCA7Civoj6A+YsWNfFwgOwor5Zm8PnDEq3xcIDsKK+ivgz5oxJN8XCA7CivlrbU+ZsWrfFwgOwor6aW1PsSbcnxcIDsKK+a/oT5yw7p8XCA7Civnpro+ecO6fFwgOwor6J2MPmvEk3xcIDsKK+a2uD5ow6l8XCA7Civnl7k+YsOsfFwgOwor5rCoPsSBbnxcIDsKK+aJiD5ow7l8XCA7Civmt4U+eMSrfFwgOwor6ZiWPmfDqXxcIDsKK+W3sz5zw6x8XCA7CivlqrI+cMOsfFwgOwor6Ze+PmzHmHxcIDsKK+azlz5zw6x8XCA7Civpqbc+c8OsfFwgOwor6ZS5PmzDrHxcIDsKK+aAqT5uw618XCA7CivlvZ0+ecOtfFwgOwor5o6WPnnEk3xcIDsKK+a3hz5xw618XCA7Civor4s+ZMeQfFwgOwor5bKWPnHFq3xcIDsKK+aGqT5xw6x8XCA7CivmiL4+bMOsfFwgOwor5ZesPmjEk3xcIDsKK+ifiz54xKt8XCA7CivnmKA+asOtfFwgOwor6IaCPmzHmnxcIDsKK+apmD5qw7p8XCA7CivmuqU+cMeUfFwgOwor6LCSPnTDrXxcIDsKK+aBoz56w6x8XCA7Civop44+ecO6fFwgOwor5qm5PmzHlHxcIDsKK+WRkz55w6x8XCA7CivmpLA+ecOpfFwgOwor56C6PmzDrHxcIDsKK+inij5nx5R8XCA7Civll50+Z8OpfFwgOwor5ZSiPmrEq3xcIDsKK+WMnT56xIF8XCA7CivosIA+ecO6fFwgOwor55eiPmzDrHxcIDsKK+edhz5kw6x8XCA7CivniY0+ZMO6fFwgOwor5Y+1PnDHknxcIDsKK+eznD5tw618XCA7Civll5E+a8OofFwgOwor5ZezPsOgaXxcIDsKK+eRmj5ow7p8XCA7Civnmpk+eMSrfFwgOwor5o2xPsOhaXxcIDsKK+ebgj55w7p8XCA7Civlo7k+ecSrfFwgOwor6KGiPnHDunxcIDsKK+adnj5xx5B8XCA7Civnv7E+w6FvfFwgOwor54+APnDDsnxcIDsKK+WyjD5qw618XCA7CivlgYg+asOsfFwgOwor6K+pPnjHlHxcIDsKK+iAhj5xw618XCA7Civnjro+eMeQfFwgOwor55a1PmPEq3xcIDsKK+i/pD55w618XCA7Civnv58+ZMOtfFwgOwor5qaIPmzHmHxcIDsKK+mBoj50w6B8XCA7CivojIk+bcOyfFwgOwor6YWXPnjDuXxcIDsKK+ajoz5kw6x8XCA7CivnuqU+Z8STfFwgOwor6JecPmzDrXxcIDsKK+ektD5iw7N8XCA7Civmu5M+eseQfFwgOwor6ZyBPmrDrHxcIDsKK+m5gj5sw618XCA7Civnvbk+bMOtfFwgOwor5aaqPnnDuXxcIDsKK+WkmT5zw7l8XCA7CivlspA+ccOtfFwgOwor5ZS/PmjFq3xcIDsKK+WSnT5zxKt8XCA7CivpnaU+ecOofFwgOwor6bmYPmfDunxcIDsKK+aPhD55w7p8XCA7CivpuYk+d8eUfFwgOwor54uZPmrFq3xcIDsKK+eykT5ixIF8XCA7CivlnLs+ccOtfFwgOwor5aayPmTDoXxcIDsKK+mDpj5sw6x8XCA7CivorrQ+xY11fFwgOwor5b+kPnfHlHxcIDsKK+m+jD53w7J8XCA7Civpua0+bMO5fFwgOwor5ZKtPmrEq3xcIDsKK+S9mj55w6x8XCA7CivoubQ+Y8O5fFwgOwor6LaEPmrFq3xcIDsKK+mCiz5sw6F8XCA7CivlrpM+bcOsfFwgOwor5o+2PnnDqXxcIDsKK+eylT5ww7J8XCA7Civpgag+w6FvfFwgOwor5YyNPnDDunxcIDsKK+Wtmz5iw7N8XCA7Civov6k+xJtyfFwgOwor5ZmrPnnEq3xcIDsKK+W8iz55w6x8XCA7Civkv44+eseUfFwgOwor6ZOCPmLDs3xcIDsKK+mqmz7DoG98XCA7CivlmIE+ccSrfFwgOwor6L2yPmvEk3xcIDsKK+S/mj5sx5B8XCA7Civpkrk+YsOhfFwgOwor6Z28PmTDoXxcIDsKK+iFtD55w7p8XCA7CivmqoQ+eMOtfFwgOwor6I6GPnDDunxcIDsKK+axqD5tw6x8XCA7Civmh78+ecOsfFwgOwor5YCcPnTDrHxcIDsKK+S/qj5sw6x8XCA7CivmjJ4+dMOgfFwgOwor6JuGPnHFq3xcIDsKK+mTrD5nw6l8XCA7Civpoow+aMOpfFwgOwor6LSyPmLDrHxcIDsKK+iTnz5qw6x8XCA7CivpuZw+bcO5fFwgOwor6L6OPnrEq3xcIDsKK+iDsD55w618XCA7Civoh74+ecO6fFwgOwor5rO4PmzDunxcIDsKK+mPlj7DoW98XCA7CivlnIQ+eceUfFwgOwor6aOTPmrDuXxcIDsKK+mBvT5qw7l8XCA7CivmsZA+eMSrfFwgOwor6LSwPsOocnxcIDsKK+mlvT5iw7N8XCA7CivlkbI+esSrfFwgOwor5YCoPmrDuXxcIDsKK+iuoz5mw7l8XCA7Civmoo8+Z8O5fFwgOwor56WbPnHFq3xcIDsKK+aXjj5ux5B8XCA7CivmoaA+ecOhfFwgOwor5reEPnrEq3xcIDsKK+eVpj5xw618XCA7Civoo74+asWrfFwgOwor5bGQPmrEq3xcIDsKK+aRgT7DqG58XCA7Civojbs+ZMOtfFwgOwor5rSxPsSbcnxcIDsKK+ijqD5iw6x8XCA7CivnjKI+aMO6fFwgOwor6JK6PmrDrXxcIDsKK+eDrz54xKt8XCA7Civotr8+c8OgfFwgOwor5peWPnnHkHxcIDsKK+iNoD5xw618XCA7CivljJA+ZsO6fFwgOwor6bKrPmrDrHxcIDsKK+e/lT54w6x8XCA7CivnvKI+ecOsfFwgOwor6aqKPmzDrXxcIDsKK+Wbqz5ow7p8XCA7Civmn6I+ZMeQfFwgOwor55W/PmrEq3xcIDsKK+mTsT55x5B8XCA7CivnuLs+bcOtfFwgOwor6b6HPnrEq3xcIDsKK+i4vT5qx5R8XCA7CivopKE+ZMSBfFwgOwor56qgPmvEk3xcIDsKK+iPjz5ow6l8XCA7CivoiLg+Z8SbfFwgOwor55uxPnjFq3xcIDsKK+eFnD55w7l8XCA7Civmnbc+cMOhfFwgOwor5ZaBPnnDunxcIDsKK+iRqT5wxIF8XCA7Civog7o+w6BufFwgOwor6autPnrEq3xcIDsKK+m4qj5nxat8XCA7Civml68+bMOhfFwgOwor5peuPnjDuXxcIDsKK+eQpT5ox5R8XCA7CivpupI+ccOtfFwgOwor56ClPmTHkHxcIDsKK+idrj5mw7l8XCA7CivnmIA+ecWrfFwgOwor6JC4PnnDunxcIDsKK+ianT5jw6x8XCA7Civmnoc+cMOtfFwgOwor5ZOUPmLDrHxcIDsKK+aMuT55w6x8XCA7Civmlps+aMO6fFwgOwor56ejPm3DsnxcIDsKK+elnD5ow7l8XCA7Civmk5g+YsOyfFwgOwor54qEPmrEq3xcIDsKK+i9sT5rxat8XCA7CivmhI4+YsOsfFwgOwor5ZSzPmzDrHxcIDsKK+awkD5kxKt8XCA7CivnoJI+cMSrfFwgOwor5rKkPsOydXxcIDsKK+awnz5mw7p8XCA7Civpuos+bcOtfFwgOwor55eNPnnDrXxcIDsKK+mCuj55w6h8XCA7Civnja0+dMeOfFwgOwor6buiPnHFq3xcIDsKK+a9nj5sw7l8XCA7CivmmLE+ecO5fFwgOwor6L2zPmzDunxcIDsKK+Wosj53xIF8XCA7CivokIs+ccSrfFwgOwor6LCYPnrEq3xcIDsKK+extD5kw618XCA7Civnlr0+asWrfFwgOwor6aKNPmvEk3xcIDsKK+ehkj54xKt8XCA7Civps40+ccOtfFwgOwor5raqPmbDunxcIDsKK+eulD5iw7N8XCA7CivpuYQ+aMO6fFwgOwor6IOqPmzDunxcIDsKK+ahpD5xxKt8XCA7CivlvK0+bceQfFwgOwor5oCEPsOydXxcIDsKK+iMrz5mw7p8XCA7Civpho0+dMOtfFwgOwor6ZSCPmzHkHxcIDsKK+edpT5iw6x8XCA7Civnk68+xY11fFwgOwor6I6FPmzDrHxcIDsKK+iwnz5tw7N8XCA7Civorqs+ccOsfFwgOwor57+zPnnDrHxcIDsKK+eZrz5xw7p8XCA7Civpkrg+YsOzfFwgOwor55ymPnrDrHxcIDsKK+alqz5qw618XCA7CivlqIw+bMeQfFwgOwor6YCmPmzHkHxcIDsKK+W5hD53w7J8XCA7CivkurM+YsOzfFwgOwor6IKEPnnDrHxcIDsKK+egnT5mw6F8XCA7Civpqpw+w6FvfFwgOwor5Y2fPmLHlHxcIDsKK+S9tj5qw618XCA7CivpvoM+aseUfFwgOwor6JyuPnnDuXxcIDsKK+asuT55xKt8XCA7CivmmZQ+ecSTfFwgOwor57ybPnLDuXxcIDsKK+iUuj5mw7l8XCA7Civor4I+Z8eUfFwgOwor576/PnnDrHxcIDsKK+ibjj5sw6x8XCA7Civmppg+aseUfFwgOwor57qwPmLHkHxcIDsKK+mAiz5ixat8XCA7Civlh6s+ZsO6fFwgOwor6b6LPnHHlHxcIDsKK+icpT54xKt8XCA7Civnl7w+Z8O5fFwgOwor6ay7PnnDuXxcIDsKK+a/rj5ww7p8XCA7Civmuqc+bMOsfFwgOwor6ZiSPnHDuXxcIDsKK+m7qT5kw7p8XCA7CivphpA+aMO6fFwgOwor6KC5PmTDuXxcIDsKK+aCjD50w6x8XCA7CivppbQ+ecOtfFwgOwor5pK4PmzHlHxcIDsKK+ictD55w6x8XCA7Civpkpw+asO5fFwgOwor5r6nPmzHkHxcIDsKK+aCkj55w6x8XCA7CivnjJU+bcOtfFwgOwor6JG6PnHDrHxcIDsKK+ezjT5jw618XCA7CivnlrQ+a8STfFwgOwor57uUPmvDuXxcIDsKK+aAgz53x5R8XCA7CivlkZI+ZseUfFwgOwor6Ki+PnrEq3xcIDsKK+mhuD5kw7p8XCA7CivlrLc+bcSBfFwgOwor5ryvPnTDoHxcIDsKK+a6mD5rw6h8XCA7Civok78+c8O5fFwgOwor6Iu7PmbDunxcIDsKK+Wcrj5wx5B8XCA7Civor5I+ecOtfFwgOwor5LyiPnnDoXxcIDsKK+myiD5sw7p8XCA7Civnq70+ecO6fFwgOwor6JuzPnPEq3xcIDsKK+abtz5ow6l8XCA7CivlsJU+Z8eOfFwgOwor5oCbPmTDoXxcIDsKK+aAmT5ow7l8XCA7Civmi4o+ZseUfFwgOwor6ZmCPnDDrXxcIDsKK+eYjD5sw6B8XCA7CivpuYw+xIFufFwgOwor6ZKaPmLDuXxcIDsKK+eRtz7DoGl8XCA7Civlur4+eceUfFwgOwor5ZaxPmzDrXxcIDsKK+iTlj5iw6x8XCA7CivogKY+x5J1fFwgOwor6bi2PnPEq3xcIDsKK+mStD5nxat8XCA7CivlpqM+YseQfFwgOwor5bSuPmfDuXxcIDsKK+WymT7DoG98XCA7CivlkZY+bMOsfFwgOwor6YaaPm3DrXxcIDsKK+evpj5iw6x8XCA7Civonq8+w6FvfFwgOwor6JyJPmbDunxcIDsKK+icij5sw618XCA7Civnl5Y+cMSrfFwgOwor6IaIPmfDqXxcIDsKK+i9vj55w6B8XCA7CivmroE+bcOyfFwgOwor542SPsOhb3xcIDsKK+aepT5sw6x8XCA7CivojrQ+d8WNfFwgOwor6KeaPmfFq3xcIDsKK+e2pj5xw618XCA7Civpuaw+ecO5fFwgOwor56iePmvEk3xcIDsKK+eevT5nx5R8XCA7CivotYA+esSrfFwgOwor6LS9PmfHlHxcIDsKK+WmpD55w7p8XCA7Civlgog+bMOsfFwgOwor5q+WPmLDrHxcIDsKK+m6gj5qx5B8XCA7CivphrQ+bMeQfFwgOwor6ZSxPnrEq3xcIDsKK+i+gj5sw7l8XCA7Civpqb0+bsO6fFwgOwor5aqqPseOb3xcIDsKK+i/kz55w6B8XCA7CivngZ4+YsOgfFwgOwor6Ji8Pm3DrXxcIDsKK+S7tT53x5R8XCA7Civnk6A+aMO5fFwgOwor5qykPnnDunxcIDsKK+Wxoz54x5B8XCA7CivmuIw+bMO5fFwgOwor5bKYPnDDrXxcIDsKK+iWjz55w6x8XCA7Civoi5w+bcO5fFwgOwor6IqoPmrEq3xcIDsKK+WOtj5zxKt8XCA7Civnj5A+ZsOgfFwgOwor6bunPmzDrXxcIDsKK+i5vD5ww7p8XCA7Civot7g+YsOsfFwgOwor56y4PnDHknxcIDsKK+esjz5ow7l8XCA7Civom4Q+Z8WrfFwgOwor6JqNPmLHkHxcIDsKK+ipiD5sw6x8XCA7CivnoqE+ZMO6fFwgOwor56WiPm3DrXxcIDsKK+eFsz5ow7p8XCA7CivpvZE+asSrfFwgOwor5q+CPmfHlHxcIDsKK+eJvj53w7p8XCA7CivnvIE+asSrfFwgOwor5a2zPnrEq3xcIDsKK+mYiz54w6x8XCA7Civolpw+YsOsfFwgOwor6IujPmrDuXxcIDsKK+iutT5qw7l8XCA7Civkuak+asSrfFwgOwor6ZKoPnfDuXxcIDsKK+i2uj5mxat8XCA7CivnmJc+ecOsfFwgOwor56mRPnPDqHxcIDsKK+mTiz5iw6x8XCA7Civnops+ccOsfFwgOwor5oi9PmjDuXxcIDsKK+ahtD5mw7p8XCA7CivmoYk+xIFufFwgOwor5a+kPnfDuXxcIDsKK+a1oD54xKt8XCA7CivlpYE+ZMSrfFwgOwor6I24PmLDrXxcIDsKK+Wcrz55w618XCA7Civnn70+eMSrfFwgOwor57+KPnnDrHxcIDsKK+e9tD5ww618XCA7CivotY0+asSrfFwgOwor5q6bPmrDrXxcIDsKK+akkD5qxat8XCA7CivnjJc+ecSrfFwgOwor5ba3PnnDrXxcIDsKK+WVtT5ixY18XCA7CivojpI+aseUfFwgOwor6byZPnDDrXxcIDsKK+WfuD55w6x8XCA7Civlg5Y+eMSrfFwgOwor5L2kPnfHjnxcIDsKK+mssj5nw6l8XCA7Civlg7M+c8O5fFwgOwor6auAPmLDrHxcIDsKK+mPij7DoW98XCA7Civpurg+ZsWrfFwgOwor6JyePnHDrXxcIDsKK+eYkD55x5R8XCA7CivnuqE+ecWrfFwgOwor5auSPsOgaXxcIDsKK+mYiD55w7l8XCA7CivomJY+YsOsfFwgOwor6JOgPmzDrXxcIDsKK+WLlj54w7l8XCA7CivkvJs+eceUfFwgOwor6bq0PnHDunxcIDsKK+eqsz55x5R8XCA7CivnmZQ+ecOsfFwgOwor6bmaPnrEq3xcIDsKK+enrT56x5B8XCA7CivplZI+ecOsfFwgOwor6bu7PmbDunxcIDsKK+mhvD54w7l8XCA7CivmtI4+asOsfFwgOwor5bKIPnnDoXxcIDsKK+WQoT5ix5B8XCA7Civoj7A+Z8WrfFwgOwor6JCBPnHDrXxcIDsKK+iOnD5kw618XCA7CivlnKw+d8WrfFwgOwor5YizPmvFq3xcIDsKK+aNjD5ixIF8XCA7Civpm44+asWrfFwgOwor576dPmTEq3xcIDsKK+espT5zw6x8XCA7CivpuYg+dMOtfFwgOwor54egPnnDuXxcIDsKK+aIoj5qw618XCA7CivmroI+Y8O6fFwgOwor5qSfPmTDunxcIDsKK+mqkD5xw618XCA7Civlqbo+d8O5fFwgOwor5bqRPnfHlHxcIDsKK+WgjT50w7l8XCA7Civlnbs+ZMeQfFwgOwor5YqsPnHDunxcIDsKK+mDqz5ww618XCA7CivpmJ0+ZsO5fFwgOwor5YiIPnnDrHxcIDsKK+inqz5zw7l8XCA7CivnrZo+YsOsfFwgOwor56yEPmrEq3xcIDsKK+eXpj53w7l8XCA7CivplYk+Z8OpfFwgOwor6ZO1PsSBbnxcIDsKK+awqT55w6B8XCA7CivpqpI+a8OofFwgOwor5ayWPmLDrHxcIDsKK+Wnkj5zw6x8XCA7Civmv54+cMOsfFwgOwor5rGUPnHDrHxcIDsKK+W+gj5jw7p8XCA7Civll4k+c8O5fFwgOwor5o+gPnnDoHxcIDsKK+iTsD54x5B8XCA7Civokbg+eMeQfFwgOwor6I+fPnTDuXxcIDsKK+WerT53w7l8XCA7CivlnqE+ZsOhfFwgOwor6LChPnPDuXxcIDsKK+ianD55w6F8XCA7CivotpE+Y8SrfFwgOwor57O4Pm3DrHxcIDsKK+eWiz5wx5B8XCA7CivnlqA+bMOsfFwgOwor6bmVPmjDunxcIDsKK+m4rD5sw7p8XCA7CivplbE+ecOsfFwgOwor6ZKVPm7HmnxcIDsKK+ehlj7DoWl8XCA7CivmsKo+a8OofFwgOwor5qCMPmzDunxcIDsKK+eQij55w6l8XCA7Civnup8+c8SrfFwgOwor5a2lPm7DunxcIDsKK+i/rj56w6l8XCA7Civmu7k+aMWrfFwgOwor5rq9PnLDuXxcIDsKK+aAvz55w6x8XCA7Civojqk+ZsO6fFwgOwor6I2cPmLDrHxcIDsKK+iLtD5qxat8XCA7CivlnoY+bMO6fFwgOwor5YqTPnnDrHxcIDsKK+mUkT50xKt8XCA7Civpq5E+ZMO6fFwgOwor6KecPnrEq3xcIDsKK+i3vT5qw6x8XCA7Civphq8+eMSrfFwgOwor6YWkPmfFq3xcIDsKK+eynT5sw6x8XCA7CivmlYk+bceQfFwgOwor57CPPmzDuXxcIDsKK+etoj5ww6F8XCA7Civomqg+ZsO6fFwgOwor6JmuPmrEq3xcIDsKK+enlT5ix5B8XCA7CivplZ0+ZMOtfFwgOwor6ZKvPmLHjnxcIDsKK+ebjT5ow6l8XCA7CivnorI+ZMOsfFwgOwor54OAPmjFq3xcIDsKK+astz54xKt8XCA7Civoh4w+Z8eUfFwgOwor5pyQPnHDunxcIDsKK+aqlz5iw7J8XCA7Civmpok+aseUfFwgOwor5qCOPmzDrHxcIDsKK+eSqT5xw7p8XCA7CivnkJo+asWrfFwgOwor57uCPmbDunxcIDsKK+Wrqz5tw7N8XCA7CivmuoY+eMO5fFwgOwor5rWvPnfDunxcIDsKK+mlqz55w7l8XCA7CivnjIE+bMOsfFwgOwor5ZeNPm3DoXxcIDsKK+iVsj5xw618XCA7CivolIw+c8O5fFwgOwor6I2RPnTDrXxcIDsKK+WggD5rxat8XCA7Civor7Y+xIFpfFwgOwor6bK1Pm7DrXxcIDsKK+iylD5ww618XCA7Civot5c+ZsWrfFwgOwor57auPnHHkHxcIDsKK+e/rj5ow6l8XCA7CivnrKs+eseQfFwgOwor6J6FPnjEq3xcIDsKK+iBsT7DoW98XCA7Civnqqw+ecO6fFwgOwor55asPmzDrHxcIDsKK+mTkj7DqHJ8XCA7CivnvZg+ZsO6fFwgOwor56OyPnHDunxcIDsKK+insz5ow7p8XCA7CivmsIY+cMeUfFwgOwor5rCHPmzHlHxcIDsKK+eKiz5qw7l8XCA7Civop4w+ZMOtfFwgOwor5piDPnrDqHxcIDsKK+anoD5xxKt8XCA7CivmnYw+d8O5fFwgOwor57yhPmzDrXxcIDsKK+e7qD50w618XCA7Civmurs+dMSBfFwgOwor5raRPnPDuXxcIDsKK+azuj5iw7N8XCA7CivmsZw+c8OsfFwgOwor54q4Pm3DoHxcIDsKK+W1qz56xKt8XCA7Civll4w+ecOsfFwgOwor5pOXPnDHkHxcIDsKK+iUnz5jw7l8XCA7Civoi6E+eceQfFwgOwor6IqwPmrDrHxcIDsKK+mDmz5mw7p8XCA7Civkv6M+eceUfFwgOwor5LyyPm7HkHxcIDsKK+S7sz5wx5B8XCA7CivpvK8+d8O6fFwgOwor6a2DPmLDoXxcIDsKK+mrgj5nw6l8XCA7CivpsrQ+Z8O5fFwgOwor6bKFPmLFjXxcIDsKK+mbqT55w7p8XCA7Civosoo+bcOyfFwgOwor6LijPmLDs3xcIDsKK+mGtT5qw7l8XCA7CivnsqI+esSrfFwgOwor6KWePmLDrHxcIDsKK+iIhD54w6x8XCA7CivoiIE+ecO6fFwgOwor56yqPmTDoXxcIDsKK+ibtD5xw618XCA7CivogJw+c8OsfFwgOwor6KO8PnTDrHxcIDsKK+epuD54w6x8XCA7CivnmqQ+cMOzfFwgOwor6ZWGPm3DsnxcIDsKK+mUlD5qxat8XCA7Civpk7c+cseUfFwgOwor6ZONPnDEq3xcIDsKK+mTjD5ux5B8XCA7Civpkrw+bcO5fFwgOwor6ZKLPnDDsnxcIDsKK+eVgD5iw6x8XCA7CivnnI0+xY11fFwgOwor6bu8PmbHlHxcIDsKK+egkT55w6B8XCA7CivmhZ0+dMOofFwgOwor6ISSPm3HkHxcIDsKK+eJvz5nw7l8XCA7CivnlJM+cMOsfFwgOwor5qetPmPDuXxcIDsKK+Wxpj5qw7l8XCA7CivpgJY+dMOsfFwgOwor6L+VPnfDuXxcIDsKK+a7lz5ix5B8XCA7CivmtLM+csO5fFwgOwor5rSrPnjDuXxcIDsKK+W6sz5iw6x8XCA7Civlsbo+cceQfFwgOwor5bmePmbDunxcIDsKK+W4uz56w6l8XCA7Civlk5w+asOsfFwgOwor5o+ePseObnxcIDsKK+iVlj5xw7p8XCA7Civok5A+csO5fFwgOwor6I+5PmrFq3xcIDsKK+Wfrz7Hjm58XCA7Civln5o+YsO5fFwgOwor6ZqwPnjDrXxcIDsKK+mYoj53w7l8XCA7Civkvb4+ecOsfFwgOwor5p+SPnHEq3xcIDsKK+W5gj5tw6x8XCA7CivpqrY+ZMeQfFwgOwor6bOOPnTDoHxcIDsKK+mzhj5mw7l8XCA7Civpsrs+esSrfFwgOwor6bKhPmzDrXxcIDsKK+mLiD53w7l8XCA7CivoiL4+eMSrfFwgOwor6IitPmLHkHxcIDsKK+iIoz55x5B8XCA7CivooYQ+bsecfFwgOwor566mPnrDqXxcIDsKK+iZvD5nw6h8XCA7CivomY0+aMWrfFwgOwor6ICxPm3DsnxcIDsKK+eYmD5sx5h8XCA7CivpuLg+w6lyfFwgOwor6ZWOPm7DoXxcIDsKK+mSsj5nw7p8XCA7Civpkq0+cMOhfFwgOwor5oGnPm7HnHxcIDsKK+elkz5mw7p8XCA7Civop4s+eMOtfFwgOwor5pmhPmLFq3xcIDsKK+i9uT5sw6x8XCA7Civmrqo+ecOsfFwgOwor57yCPmvDqHxcIDsKK+WroD5sw618XCA7CivoibQ+ZsO6fFwgOwor6YCvPmzDuXxcIDsKK+a+jD5zxKt8XCA7Civmu48+ZseUfFwgOwor5buSPsOhb3xcIDsKK+W6gD5wx5B8XCA7CivnjIo+bsOtfFwgOwor54u0PmLDrHxcIDsKK+eKtD7DoG58XCA7Civls4Q+ecOsfFwgOwor5bK1PmjDuXxcIDsKK+WYpz5tw6x8XCA7CivlkYs+ZsWrfFwgOwor6JinPnHDunxcIDsKK+iPlD5mw7p8XCA7CivoirQ+d8O5fFwgOwor5aGlPmfDqXxcIDsKK+WfpD5ww618XCA7Civlna0+bsOtfFwgOwor5Ye1PnHFq3xcIDsKK+WTvz5nxJt8XCA7Civor44+ccO5fFwgOwor5YWVPnPDrHxcIDsKK+S7oT55w6x8XCA7CivotZw+esOpfFwgOwor45CFPnfHlHxcIDsKK+OQjD5zw6x8XCA7CivjkJY+ecOofFwgOwor45CoPnjDuXxcIDsKK+OQsz53w7l8XCA7CivjkLc+bceOfFwgOwor45C5PnnDrHxcIDsKK+ORgz7Hjm98XCA7CivjkYQ+d8eUfFwgOwor45GJPnPDuXxcIDsKK+ORij55w6x8XCA7CivjkZQ+eMeUfFwgOwor45GbPnPDuXxcIDsKK+ORnD55w6x8XCA7CivjkaU+ecOsfFwgOwor45GmPmzDrHxcIDsKK+ORpz5qw6x8XCA7Civjkag+eceUfFwgOwor45GvPnjHlHxcIDsKK+ORtj54w6x8XCA7Civjkbg+x45pfFwgOwor45G7Pm3DoHxcIDsKK+OSgT55x5R8XCA7CivjkoI+a8O5fFwgOwor45KDPsOocnxcIDsKK+OShT5xx5B8XCA7Civjkoc+bcO5fFwgOwor45KKPnPDqHxcIDsKK+OSjj5zx458XCA7CivjkpI+cMO6fFwgOwor45KTPnTDoHxcIDsKK+OSlj7HknV8XCA7Civjkpw+ecO6fFwgOwor45KnPmzDrHxcIDsKK+OSqz5qw6x8XCA7CivjkrQ+Z8eUfFwgOwor45K/PmzDrXxcIDsKK+OTkD5sw7l8XCA7Civjk5Y+YsOsfFwgOwor45OYPnPDuXxcIDsKK+OTnj5xw6x8XCA7Civjk6E+ZseUfFwgOwor45OoPmPDrXxcIDsKK+OTrT5ow6l8XCA7Civjk68+bMOtfFwgOwor45O3PnnDrHxcIDsKK+OUhD5zw7l8XCA7CivjlI8+bMOsfFwgOwor45SSPnjDrXxcIDsKK+OUlT5qw618XCA7CivjlJw+YsOhfFwgOwor45SgPmjDqXxcIDsKK+OUpT5ww618XCA7CivjlKo+bMeUfFwgOwor45SxPnnHlHxcIDsKK+OUtD55w6x8XCA7CivjlLk+bMOofFwgOwor45WGPmjDuXxcIDsKK+OVhz5sw6F8XCA7CivjlYk+a8OofFwgOwor45WMPsOgaXxcIDsKK+OVlj5zw7l8XCA7CivjlZs+eMO5fFwgOwor45WhPmjDqXxcIDsKK+OVpT55x5B8XCA7Civjla0+w6BvfFwgOwor45WuPmbHlHxcIDsKK+OVsD5ow6h8XCA7Civjlbg+bMOsfFwgOwor45W5PmbDoXxcIDsKK+OVvT5zw6x8XCA7CivjloA+bMOofFwgOwor45aCPnnDrHxcIDsKK+OWhT54w7l8XCA7CivjloY+ccO6fFwgOwor45aHPsOpcnxcIDsKK+OWkj50w618XCA7CivjlpU+YsOyfFwgOwor45agPmLDoHxcIDsKK+OWoT55w6h8XCA7CivjlqI+asOtfFwgOwor45aoPmzDuXxcIDsKK+OWtj55w6h8XCA7Civjlr0+esOpfFwgOwor45eFPmjDunxcIDsKK+OXhj5nw6l8XCA7Civjl4k+YsOsfFwgOwor45eKPmrDrXxcIDsKK+OXkj7DoGl8XCA7Civjl5g+YsOzfFwgOwor45eZPm7DoHxcIDsKK+OXmj5sw6x8XCA7Civjl6M+dMOsfFwgOwor45ekPmPDuXxcIDsKK+OXqD7Hjml8XCA7Civjl7E+asOtfFwgOwor45ezPnTHjnxcIDsKK+OXtT54w7l8XCA7Civjl7w+ecOofFwgOwor45iBPnnDrHxcIDsKK+OYgj5jw618XCA7CivjmIg+ecSrfFwgOwor45iKPnnDrHxcIDsKK+OYjD5qw7l8XCA7CivjmI0+asOtfFwgOwor45iRPmzDrHxcIDsKK+OYoD5iw6x8XCA7CivjmKc+eMO5fFwgOwor45ipPmLDrHxcIDsKK+OYrD7DoG98XCA7CivjmK0+w6BvfFwgOwor45iyPmrDunxcIDsKK+OYtT5iw7l8XCA7CivjmLc+w6BpfFwgOwor45i5PmPDrXxcIDsKK+OYuj5mw6F8XCA7CivjmYQ+YsOsfFwgOwor45mPPmbDuXxcIDsKK+OZkT55x5R8XCA7CivjmZI+ecSbfFwgOwor45mbPmLHlHxcIDsKK+OZoD55w6x8XCA7Civjmag+asOsfFwgOwor45mqPnnDqHxcIDsKK+OZqz5qw618XCA7Civjma8+ecOsfFwgOwor45m+PnjDrHxcIDsKK+Oahj5mw7l8XCA7Civjmok+Z8eUfFwgOwor45qVPmbDunxcIDsKK+Oamz54w6x8XCA7Civjmpw+eMO5fFwgOwor45qhPmrHkHxcIDsKK+Oaoj5uw7p8XCA7CivjmqQ+ecOsfFwgOwor45qlPnnDunxcIDsKK+Oapj55w618XCA7CivjmrA+YseQfFwgOwor45q0PmLDuXxcIDsKK+Oatj5zw6x8XCA7Civjmrc+xJtyfFwgOwor45uFPsOocnxcIDsKK+Objz7DsnV8XCA7Civjm5U+ecOsfFwgOwor45uYPnDDsnxcIDsKK+ObpT50w6B8XCA7Civjm6w+bMO5fFwgOwor45uyPmbDoHxcIDsKK+OchT54w7l8XCA7CivjnIY+bcOsfFwgOwor45yIPm3DuXxcIDsKK+Ociz55w6x8XCA7CivjnI4+ccOtfFwgOwor45yRPmbDunxcIDsKK+Ockj55w6x8XCA7CivjnJM+ZMOhfFwgOwor45yYPmrDuXxcIDsKK+OcmT5sw7l8XCA7CivjnJo+c8O5fFwgOwor45ycPsOgb3xcIDsKK+OcnT7Hjm58XCA7CivjnKg+w6lyfFwgOwor45ypPsOgb3xcIDsKK+Ocqz5tw6B8XCA7CivjnLc+bcOtfFwgOwor45y5PnHDunxcIDsKK+OcvT56x5B8XCA7CivjnL8+eMO5fFwgOwor452TPmfDqXxcIDsKK+Odlj55w618XCA7CivjnZs+c8O5fFwgOwor452ePnnDoHxcIDsKK+Odoj55x5R8XCA7CivjnaM+ecOofFwgOwor452lPm3HkHxcIDsKK+OdtT5kw6l8XCA7CivjnbY+w6BpfFwgOwor452/PmLDs3xcIDsKK+Oegz5qw618XCA7CivjnoY+aseQfFwgOwor456KPnjDuXxcIDsKK+Oejj5ix458XCA7CivjnpA+asWrfFwgOwor456SPnjDrHxcIDsKK+Oekz5xx5B8XCA7CivjnpQ+ecOtfFwgOwor456WPmPDrHxcIDsKK+Oemj5xw6x8XCA7Civjnps+aseQfFwgOwor456mPmrHkHxcIDsKK+Oeqz5qw7l8XCA7CivjnrA+eMeUfFwgOwor4565PmvEm3xcIDsKK+Oeuj56w7p8XCA7Civjnr4+bsOtfFwgOwor45+BPsOgbnxcIDsKK+Ofij5mw7p8XCA7Civjn5E+YsOzfFwgOwor45+TPnHDrXxcIDsKK+Ofmj5xw618XCA7Civjn5w+bcOtfFwgOwor45+iPnHDrXxcIDsKK+OfpD5sw7l8XCA7Civjn7M+bMOsfFwgOwor45+3PmTEgXxcIDsKK+OfvD7DoW98XCA7CivjoII+w6FvfFwgOwor46CEPnjDrXxcIDsKK+OghT5mw7p8XCA7CivjoI0+asOtfFwgOwor46COPmrDrXxcIDsKK+Oglj5qw6x8XCA7CivjoJc+w6BvfFwgOwor46CYPnnHlHxcIDsKK+Ogmz53w7J8XCA7CivjoJw+bsOsfFwgOwor46CfPmzDrXxcIDsKK+OgoD5sw7p8XCA7CivjoKU+bMecfFwgOwor46CnPm3DrXxcIDsKK+OgqD55w7l8XCA7CivjoKo+asO5fFwgOwor46CvPnnHkHxcIDsKK+OgsT5qw6x8XCA7CivjoLI+YseQfFwgOwor46C3PmfDqXxcIDsKK+OguD5rw7l8XCA7CivjoL8+Y8eQfFwgOwor46GAPmLDrHxcIDsKK+Ohgj5sw6x8XCA7CivjoYc+asOtfFwgOwor46GUPnfDuXxcIDsKK+Ohlz50w618XCA7CivjoZk+YsOsfFwgOwor46GrPnnDrHxcIDsKK+OhrT5qw6x8XCA7Civjoa4+asOtfFwgOwor46GwPnnHlHxcIDsKK+Ohsz5kx5B8XCA7CivjobY+asOsfFwgOwor46G5PmPDrHxcIDsKK+OhvD55w6x8XCA7CivjooA+Y8OsfFwgOwor46KKPseOaXxcIDsKK+Oimj5sx5R8XCA7Civjop4+ecOsfFwgOwor46KpPmTDrHxcIDsKK+OisD5iw6x8XCA7CivjorM+bMO6fFwgOwor46K2PmLDrHxcIDsKK+OiuD5iw6x8XCA7Civjor0+xJtyfFwgOwor46OCPnnDrHxcIDsKK+Ojgz55x5R8XCA7Civjo4Q+ccO6fFwgOwor46OGPm3DrXxcIDsKK+Ojhz5ux5B8XCA7Civjo4g+c8OsfFwgOwor46OOPm3DuXxcIDsKK+OjmT5kw618XCA7Civjo5s+dMOgfFwgOwor46OfPnjDrHxcIDsKK+Ojoj50w618XCA7Civjo6w+ccOsfFwgOwor46OxPnrDqXxcIDsKK+OjtT50w6B8XCA7Civjo7s+ecOsfFwgOwor46SCPmrDrXxcIDsKK+OkhT7DoGl8XCA7CivjpIc+x45vfFwgOwor46SUPmbDunxcIDsKK+OkoT5sw6x8XCA7CivjpKI+eMO5fFwgOwor46SkPnnDunxcIDsKK+Okpj5sw6x8XCA7CivjpKk+a8OofFwgOwor46SrPmTDqXxcIDsKK+OksT5mw7l8XCA7CivjpLQ+eMOtfFwgOwor46S1PmPDrXxcIDsKK+OkuD54w6x8XCA7CivjpYA+ZMOpfFwgOwor46WBPmTDqXxcIDsKK+Olgj50w6h8XCA7CivjpYw+asO6fFwgOwor46WNPmrDrHxcIDsKK+Olkz5xx5B8XCA7CivjpZQ+ecO6fFwgOwor46WaPnnDunxcIDsKK+Olmz5qw618XCA7CivjpZ0+bceQfFwgOwor46WgPnjHlHxcIDsKK+OloT54w6x8XCA7CivjpaU+ecO6fFwgOwor46W0PnnDrXxcIDsKK+Oltj5zw6h8XCA7Civjpbc+ecOofFwgOwor46W6PmjDqXxcIDsKK+OlvT5jw6h8XCA7Civjpb4+bsOsfFwgOwor46W/PsOgb3xcIDsKK+OmhD5tw6F8XCA7CivjpoU+ZMOsfFwgOwor46aHPmzDuXxcIDsKK+OmiT55w6x8XCA7CivjppA+bsOsfFwgOwor46aSPmzDrXxcIDsKK+Ommz55w7p8XCA7CivjpqE+bMOofFwgOwor46akPnnDrHxcIDsKK+Ompj5ow6h8XCA7CivjprE+d8eSfFwgOwor46a0PmfDqXxcIDsKK+OmuD5qx5B8XCA7Civjpro+cseUfFwgOwor46a7PnjDrXxcIDsKK+OmvT54w7l8XCA7Civjpr4+ecOtfFwgOwor46a/PmjDuXxcIDsKK+OngD5qw618XCA7Civjp4E+ccO5fFwgOwor46eFPm3DuXxcIDsKK+Onij5iw6F8XCA7Civjp44+ecOhfFwgOwor46eXPnrHkHxcIDsKK+OnmT5iw6x8XCA7Civjp5o+d8eOfFwgOwor46erPsOpcnxcIDsKK+OnsD5sw6x8XCA7Civjp7M+YsOzfFwgOwor46e0PnfHknxcIDsKK+OnuT50w6h8XCA7Civjp7o+dMOgfFwgOwor46e9PmfDuXxcIDsKK+Oohz5ww7N8XCA7CivjqIg+aseQfFwgOwor46iOPnLDunxcIDsKK+OokD5ix5R8XCA7CivjqJ4+c8O5fFwgOwor46igPm3DrHxcIDsKK+OopT5uw6B8XCA7CivjqK0+aMO5fFwgOwor46iwPmfDqXxcIDsKK+Oosj5jw6h8XCA7CivjqLg+bcOgfFwgOwor46i9PnDHkHxcIDsKK+Oovz5qw7l8XCA7CivjqYA+asO5fFwgOwor46mLPnPDuXxcIDsKK+OpjT5jw6h8XCA7CivjqY4+ecOofFwgOwor46mXPnjDrXxcIDsKK+OpmD55x5B8XCA7CivjqZ4+Y8OsfFwgOwor46miPm3DrXxcIDsKK+Oppz5iw7N8XCA7Civjqak+cceQfFwgOwor46mtPmLDs3xcIDsKK+OptD5qw7p8XCA7Civjqb0+ccOtfFwgOwor46qAPnnDunxcIDsKK+Oqgz5rxJt8XCA7CivjqoQ+ZsO6fFwgOwor46qGPmTHkHxcIDsKK+OqiT5ow6l8XCA7Civjqo0+YsOzfFwgOwor46qPPmLHkHxcIDsKK+OqkD5sw7l8XCA7CivjqpE+ecOofFwgOwor46qSPm7DrXxcIDsKK+Oqlj5sw7l8XCA7Civjqpk+a8SbfFwgOwor46qhPmvEm3xcIDsKK+OqpD5iw6x8XCA7Civjqqk+c8O5fFwgOwor46qqPnPDoHxcIDsKK+OqrT5sw7p8XCA7CivjqrY+aMO6fFwgOwor46q8PmvEm3xcIDsKK+Oqvj5nw6l8XCA7Civjq4o+eceQfFwgOwor46uTPnHHkHxcIDsKK+OrmD5tw6x8XCA7Civjq5k+ZsO6fFwgOwor46uiPnHDuXxcIDsKK+OrvT5sw7l8XCA7CivjrII+ecO6fFwgOwor46yNPmLDs3xcIDsKK+Osjz5sw6x8XCA7CivjrJg+c8O5fFwgOwor46yePmjDqHxcIDsKK+OspT5ww7l8XCA7CivjrKc+YsOzfFwgOwor46ysPmrDuXxcIDsKK+OssD55w7p8XCA7CivjrLE+dMOsfFwgOwor46yzPnfHlHxcIDsKK+OsvD5mw7l8XCA7CivjrZI+c8OsfFwgOwor462UPmzDunxcIDsKK+OtmD5ow6l8XCA7CivjrZo+bMeafFwgOwor462hPnjDrHxcIDsKK+OtsD5qw6x8XCA7CivjrbE+aMOpfFwgOwor462yPmrDrXxcIDsKK+OtuD50w7p8XCA7Civjrbw+dMOgfFwgOwor4629PmTHkHxcIDsKK+Ougj5qw7p8XCA7CivjrpE+ccOsfFwgOwor466VPsOpcnxcIDsKK+Oumj5sw6x8XCA7Civjrp0+aMOpfFwgOwor466fPmrDrXxcIDsKK+Oupj5zw6h8XCA7Civjrqg+asOtfFwgOwor466rPmjDqXxcIDsKK+OusD5iw618XCA7Civjrr8+YsOsfFwgOwor46+FPnDDrXxcIDsKK+Ovhz5iw6x8XCA7Civjr4g+c8O5fFwgOwor46+PPmfHlHxcIDsKK+Ovkz50w6B8XCA7Civjr5Y+ZMOpfFwgOwor46+aPmTDoXxcIDsKK+Ovmz5ow7p8XCA7Civjr50+bMO5fFwgOwor46+fPmzDuXxcIDsKK+OvpD5sw6x8XCA7Civjr6Y+ccOtfFwgOwor46+pPnTDrHxcIDsKK+Ovqz5xw7p8XCA7Civjr60+bMeUfFwgOwor46+3PnDDunxcIDsKK+OwgD5sw618XCA7CivjsIU+ZMOtfFwgOwor47CXPmPDuXxcIDsKK+OwmD55w618XCA7CivjsJo+bMOtfFwgOwor47CdPnnHkHxcIDsKK+Ownz5qw6x8XCA7CivjsKM+esOsfFwgOwor47CkPmvEm3xcIDsKK+Owpj5xw7l8XCA7CivjsKo+d8OhfFwgOwor47CyPnjDuXxcIDsKK+Owsz55w6B8XCA7CivjsLQ+cMOzfFwgOwor47C1PnrDunxcIDsKK+Owtz56w6x8XCA7CivjsLs+eceQfFwgOwor47C9Pm3HkHxcIDsKK+OxhD5tw7J8XCA7CivjsYU+ecOsfFwgOwor47GHPnPDqHxcIDsKK+OxiT55w6h8XCA7CivjsZg+w6BufFwgOwor47GePmrDrXxcIDsKK+Oxnz5iw7N8XCA7Civjsac+d8OyfFwgOwor47GpPmTDunxcIDsKK+Oxrz7DoWl8XCA7CivjsbI+ecOsfFwgOwor47GzPm3DsnxcIDsKK+OxtD56w6x8XCA7Civjsbg+YsOsfFwgOwor47G5PmzDrHxcIDsKK+Oxuj5sw7p8XCA7CivjsoU+asOsfFwgOwor47KYPnHDunxcIDsKK+Oynj56w7p8XCA7Civjsqs+cMO6fFwgOwor47K2PmzHnHxcIDsKK+Oyuj5qw618XCA7Civjsrs+bsOsfFwgOwor47K8PnnDrHxcIDsKK+Oyvj55x5R8XCA7Civjs4E+esOofFwgOwor47OHPmbDuXxcIDsKK+OzjT5iw7l8XCA7Civjs5A+c8OgfFwgOwor47ORPnnDrHxcIDsKK+Ozmj55w7l8XCA7Civjs5s+ecO6fFwgOwor47OgPnTDoHxcIDsKK+OzpT5qw7l8XCA7Civjs6c+eMOtfFwgOwor47OrPnTDoHxcIDsKK+OztD5tw6x8XCA7Civjs7U+asOsfFwgOwor47O7PnrDqXxcIDsKK+OzvD5iw6x8XCA7Civjs70+bceQfFwgOwor47SBPnnDrHxcIDsKK+O0iT5qx5B8XCA7CivjtIs+c8O5fFwgOwor47SRPnPDuXxcIDsKK+O0kj55w6x8XCA7CivjtJQ+c8OofFwgOwor47SVPmrDrXxcIDsKK+O0nT5sw618XCA7CivjtLU+bcOsfFwgOwor47S4Pm7DoHxcIDsKK+O0vD5zw7l8XCA7CivjtL4+YsOzfFwgOwor47WLPm3DrHxcIDsKK+O1kT5ow6h8XCA7CivjtZY+bsecfFwgOwor47WXPmbDuXxcIDsKK+O1nT55w6x8XCA7CivjtaM+a8SbfFwgOwor47WlPmLDrHxcIDsKK+O1pz5nw6l8XCA7Civjtag+YsOsfFwgOwor47WpPnnDrHxcIDsKK+O1qz5ux5B8XCA7CivjtbA+eMO5fFwgOwor47WyPnfHlHxcIDsKK+O1vz54w618XCA7Civjtpo+YsOgfFwgOwor47abPnnDunxcIDsKK+O2oD55w6x8XCA7Civjtr8+YsOzfFwgOwor47eOPmjDqHxcIDsKK+O3kj55w7p8XCA7Civjt6Q+aMOofFwgOwor47emPnjDuXxcIDsKK+O3rD5tw7J8XCA7Civjt7A+bMOtfFwgOwor47e0PmfDqXxcIDsKK+O3tT5tw7J8XCA7Civjt7s+d8O6fFwgOwor47iEPmrDrHxcIDsKK+O4ij5sw6B8XCA7CivjuI0+eMOsfFwgOwor47iPPm3DrXxcIDsKK+O4kz5tw6x8XCA7CivjuJo+bMeQfFwgOwor47ijPnnDqHxcIDsKK+O4pj5ow7l8XCA7CivjuKk+w6BufFwgOwor47i7PnPDrHxcIDsKK+O4vz5kw7p8XCA7CivjuYA+YsOzfFwgOwor47mCPmPDrHxcIDsKK+O5gz5iw6x8XCA7CivjuYQ+asOsfFwgOwor47mHPmjDqXxcIDsKK+O5iD5sw618XCA7CivjuY0+ZMOtfFwgOwor47mRPnPDrHxcIDsKK+O5kj5wx5R8XCA7CivjuZM+ecOsfFwgOwor47mYPnLDunxcIDsKK+O5qz54w6x8XCA7Civjua0+ecOsfFwgOwor47muPm3DsnxcIDsKK+O5sT5ow7p8XCA7CivjubM+d8O6fFwgOwor47m4Pm7DrXxcIDsKK+O5uj50w6B8XCA7CivjuoQ+eceUfFwgOwor47qJPmjDuXxcIDsKK+O6mj50x458XCA7Civjup4+ecO6fFwgOwor47qhPmzDrHxcIDsKK+O6qj5ww7p8XCA7Civjuq0+eseQfFwgOwor47quPnnDunxcIDsKK+O6tz54w7l8XCA7Civjur8+ecOtfFwgOwor47uJPmLDuXxcIDsKK+O7iz5sw6B8XCA7Civju4w+dMO6fFwgOwor47uNPnfDunxcIDsKK+O7jj5sw6x8XCA7Civju5E+asOsfFwgOwor47udPmzDoHxcIDsKK+O7oD50w7p8XCA7Civju6s+YsOsfFwgOwor47usPnTDunxcIDsKK+O7rT5zw6h8XCA7Civju68+dMO6fFwgOwor47uyPmzHmnxcIDsKK+O7tj5ix5B8XCA7Civju7c+asOtfFwgOwor47u6PmzDrHxcIDsKK+O8iz5nx5R8XCA7CivjvIw+eceUfFwgOwor47yWPmzDrHxcIDsKK+O8mD53x458XCA7CivjvKQ+ccOsfFwgOwor47y0PseSdXxcIDsKK+O8tT5kw6x8XCA7CivjvLY+ecO6fFwgOwor47y+PmzDuXxcIDsKK+O9gT5sw6x8XCA7CivjvYI+c8OgfFwgOwor472IPnnDrHxcIDsKK+O9nT5sw6x8XCA7CivjvaI+x45ufFwgOwor472jPnnDuXxcIDsKK+O9pD5qw7p8XCA7Civjvaw+ZsO5fFwgOwor472vPnjDrXxcIDsKK+O9uj5qw618XCA7Civjvb0+Z8O5fFwgOwor472+PnfDuXxcIDsKK+O+hD5kw7p8XCA7CivjvoU+c8OsfFwgOwor476HPm3DuXxcIDsKK+O+iD5mw7l8XCA7Civjvoo+asOtfFwgOwor476QPmzDrHxcIDsKK+O+kT5kw6F8XCA7CivjvpI+asOsfFwgOwor476UPmzHmnxcIDsKK+O+lj5sx5B8XCA7Civjvp8+YsO5fFwgOwor476lPnjDuXxcIDsKK+O+pz5rw6h8XCA7Civjvqg+cceQfFwgOwor476wPmjDunxcIDsKK+O+tT5qw6x8XCA7CivjvrY+Z8eUfFwgOwor4766Pm3DoHxcIDsKK+O/hD7DoGl8XCA7Civjv4c+eMOtfFwgOwor47+WPmzDunxcIDsKK+O/mT5ww6x8XCA7Civjv5s+bMOtfFwgOwor47+jPmjDqXxcIDsKK+O/pT5ow7p8XCA7Civjv6g+bMOsfFwgOwor47+rPmLDrHxcIDsKK+O/rz5kw6F8XCA7Civjv7A+w6FvfFwgOwor47+5PnTDoHxcIDsKK+O/vz55x458XCA7CivkgIc+Z8eUfFwgOwor5ICIPnHDrHxcIDsKK+SAkT5uw6B8XCA7CivkgJg+eMOtfFwgOwor5ICZPnHDrHxcIDsKK+SAnD5nx5R8XCA7CivkgKA+ccO6fFwgOwor5ICjPmLDrHxcIDsKK+SApj5nx5R8XCA7CivkgK8+YseUfFwgOwor5ICwPmfHlHxcIDsKK+SAsj5tw7l8XCA7CivkgLM+w6BpfFwgOwor5IC4PmTDrHxcIDsKK+SAvj5kx5R8XCA7CivkgL8+ZMOsfFwgOwor5IGGPseObnxcIDsKK+SBhz5tw6x8XCA7CivkgYg+ccOsfFwgOwor5IGJPnHDrHxcIDsKK+SBij53w7J8XCA7CivkgYw+ecO5fFwgOwor5IGSPmrDrXxcIDsKK+SBpT5uw6x8XCA7CivkgaY+ccO5fFwgOwor5IGpPnnDunxcIDsKK+SBqz5ow7p8XCA7CivkgbE+w6BvfFwgOwor5IG5PmLDrHxcIDsKK+SBuz5sw6x8XCA7Civkgbw+bcOyfFwgOwor5IG/Pm3DsnxcIDsKK+SCgj5xw7p8XCA7CivkgoY+eMO5fFwgOwor5IKKPnnDuXxcIDsKK+SCjT5iw7N8XCA7Civkgps+ecO6fFwgOwor5IKhPmTHkHxcIDsKK+SCoz5jw618XCA7CivkgqQ+ZsO5fFwgOwor5IKwPmzDoHxcIDsKK+SCsj5mx458XCA7Civkgr8+dMOgfFwgOwor5IOKPmrHlHxcIDsKK+SDiz55w7p8XCA7Civkg44+esOpfFwgOwor5IOSPmjDqXxcIDsKK+SDlj53w7l8XCA7Civkg5k+bMO5fFwgOwor5IOaPmPDuXxcIDsKK+SDpD5zw7l8XCA7Civkg64+ZMOhfFwgOwor5IOvPmzDrHxcIDsKK+SDsz5sw6B8XCA7Civkg7o+bcOzfFwgOwor5IO7PmLDoHxcIDsKK+SDvT5mw7p8XCA7Civkg74+YseQfFwgOwor5ISBPnnDrHxcIDsKK+SEjT5kw7l8XCA7CivkhI4+cceQfFwgOwor5ISPPnnDunxcIDsKK+SElD5qx5R8XCA7CivkhJw+bMOtfFwgOwor5ISiPnHDrXxcIDsKK+SEqD55w7p8XCA7CivkhKs+cceQfFwgOwor5ISsPnnDrXxcIDsKK+SEsD55w6F8XCA7CivkhLY+YsOsfFwgOwor5IS4PnDDsnxcIDsKK+SEvz55w6x8XCA7CivkhYE+w6BufFwgOwor5IWCPmjDqXxcIDsKK+SFhD5sw6x8XCA7CivkhYY+esOsfFwgOwor5IWHPnPDuXxcIDsKK+SFiT55w6B8XCA7CivkhYo+ZMO5fFwgOwor5IWTPmrHlHxcIDsKK+SFlj7Hjm58XCA7CivkhZ4+bsOgfFwgOwor5IWgPnTDrXxcIDsKK+SFoT54x5R8XCA7CivkhaQ+ccOsfFwgOwor5IWsPsOgaXxcIDsKK+SFsD7Em258XCA7CivkhbI+ccOtfFwgOwor5IW3PnTDunxcIDsKK+SFuD56w7p8XCA7Civkhbs+bMOtfFwgOwor5IW9PmfHlHxcIDsKK+SGhT5jw618XCA7Civkhok+YsOgfFwgOwor5IafPmfDqXxcIDsKK+SGtz55w7l8XCA7Civkhr0+asO5fFwgOwor5Ia/PnnDrHxcIDsKK+SHgz5zw6x8XCA7Civkh4U+ZsOhfFwgOwor5IeQPmzDrHxcIDsKK+SHkT5iw6B8XCA7Civkh5g+aMO5fFwgOwor5IeiPmvHlHxcIDsKK+SHoz5uw6B8XCA7Civkh6U+esOpfFwgOwor5IepPnnDrHxcIDsKK+SHsT5uw6B8XCA7Civkh7U+ecOtfFwgOwor5Ie3PmLHkHxcIDsKK+SIhT55w7l8XCA7CivkiIs+dMOgfFwgOwor5IiOPnnDqHxcIDsKK+SIkz5nw6l8XCA7CivkiJg+Y8OtfFwgOwor5IiePmTHlHxcIDsKK+SInz5jw6h8XCA7CivkiKo+eMOsfFwgOwor5IirPm7DoHxcIDsKK+SIrD5ww7p8XCA7CivkiK4+aseUfFwgOwor5IizPnTDoHxcIDsKK+SIuD5ow7p8XCA7CivkiLs+cMO6fFwgOwor5ImJPmjDunxcIDsKK+SJkT5tw7N8XCA7CivkiZs+ecO5fFwgOwor5ImdPnHHkHxcIDsKK+SJoj5zw6h8XCA7Civkiag+ecOsfFwgOwor5ImrPmzDrXxcIDsKK+SJuz5xw618XCA7Civkib4+bcOsfFwgOwor5Im/PmjDunxcIDsKK+SKgD5ow7p8XCA7CivkioI+Y8OofFwgOwor5IqHPmLDuXxcIDsKK+SKjT5sw618XCA7CivkipA+w6hufFwgOwor5IqbPnPHjnxcIDsKK+SKoD54w6x8XCA7CivkiqY+ecOhfFwgOwor5IqnPmLDrHxcIDsKK+SKqj5sw6x8XCA7Civkiq4+ZMOtfFwgOwor5IqzPm3DrXxcIDsKK+SKuj5nx5R8XCA7Civkir4+bcO5fFwgOwor5Iq/PmLDs3xcIDsKK+SLiD5yw7p8XCA7Civki5Q+YsOsfFwgOwor5IuWPnnDuXxcIDsKK+SLmT7Em3J8XCA7Civki5o+ecOsfFwgOwor5IubPm3DrXxcIDsKK+SLnz5qw6x8XCA7Civki6A+YseUfFwgOwor5IulPmzDrXxcIDsKK+SLpz5xw7p8XCA7Civki6g+ZseUfFwgOwor5IupPsOpcnxcIDsKK+SLrz5xx5B8XCA7Civki7A+asO6fFwgOwor5Iu1PnnDrHxcIDsKK+SLtj54w7l8XCA7Civki7k+ZsO6fFwgOwor5IyCPsOydXxcIDsKK+SMiD50w6B8XCA7CivkjIw+ccOsfFwgOwor5IyPPm3DrHxcIDsKK+SMkD5tw6x8XCA7CivkjJI+bMO5fFwgOwor5IyUPsOydXxcIDsKK+SMlT5tw618XCA7CivkjJc+ZseUfFwgOwor5IyYPm3DrXxcIDsKK+SMmj5zw7l8XCA7CivkjJ8+YsOsfFwgOwor5IyhPnTHkHxcIDsKK+SMqT5tw6x8XCA7CivkjLo+xJtyfFwgOwor5Iy7PnnDrHxcIDsKK+SMvz5mw7p8XCA7CivkjYI+ecO6fFwgOwor5I2HPnTDoHxcIDsKK+SNjD5iw7l8XCA7CivkjY0+Z8eUfFwgOwor5I2TPmjDuXxcIDsKK+SNlT5kx5B8XCA7CivkjZY+ZsO6fFwgOwor5I2YPm3DrXxcIDsKK+SNmz5nw7l8XCA7CivkjZ0+dMOgfFwgOwor5I2ePnnDuXxcIDsKK+SNoD5sw618XCA7CivkjaI+d8O6fFwgOwor5I2kPmrHkHxcIDsKK+SNpj5sw618XCA7Civkjag+YsOzfFwgOwor5I2xPnjDunxcIDsKK+SNuD5iw7N8XCA7Civkjb0+bMOsfFwgOwor5I6BPmjDunxcIDsKK+SOhT5mw7l8XCA7Civkjog+ecOsfFwgOwor5I6KPnDDsnxcIDsKK+SOiz5ow6h8XCA7Civkjow+Y8O5fFwgOwor5I6OPm7DoHxcIDsKK+SOjz7DoG58XCA7CivkjpE+bMO5fFwgOwor5I6TPnTDoHxcIDsKK+SOmD5zw7l8XCA7Civkjp8+w6lyfFwgOwor5I6gPsOpcnxcIDsKK+SOoj5xx5B8XCA7CivkjqM+c8OsfFwgOwor5I6oPsOgbnxcIDsKK+SOqj5uw6h8XCA7Civkjqw+YsOgfFwgOwor5I6uPnTDrHxcIDsKK+SOsT5iw6B8XCA7CivkjrM+d8OgfFwgOwor5I61PmLDrHxcIDsKK+SOtj7DqHJ8XCA7Civkjrg+d8O5fFwgOwor5I68PmzDuXxcIDsKK+SPgD5sw6B8XCA7Civkj4U+ccOsfFwgOwor5I+LPnPDuXxcIDsKK+SPjD5xw6x8XCA7Civkj5E+ZMOsfFwgOwor5I+YPnDHkHxcIDsKK+SPnj5tw7J8XCA7Civkj6A+ccOsfFwgOwor5I+iPmLHkHxcIDsKK+SPpD5zw6x8XCA7Civkj6c+bsOhfFwgOwor5I+qPsOocnxcIDsKK+SPrj54w618XCA7Civkj7E+asO6fFwgOwor5I+2PmLDrHxcIDsKK+SPuD55w7p8XCA7Civkj70+YsO5fFwgOwor5I+/PnHHkHxcIDsKK+SQgD5qw6x8XCA7CivkkII+bMO5fFwgOwor5JCFPnnDrXxcIDsKK+SQiT56w6x8XCA7CivkkIo+ZMOhfFwgOwor5JCVPmrDrXxcIDsKK+SQlj55w618XCA7CivkkJc+ZMeUfFwgOwor5JCZPmfDqXxcIDsKK+SQmj5qw618XCA7CivkkKE+ccOtfFwgOwor5JCoPmfHlHxcIDsKK+SQsz55w7p8XCA7CivkkLw+eMOsfFwgOwor5JC/PsOhb3xcIDsKK+SRgD5ww6x8XCA7CivkkYE+d8O5fFwgOwor5JGCPseOaXxcIDsKK+SRhD5ww6x8XCA7CivkkYg+YsOzfFwgOwor5JGRPnDDunxcIDsKK+SRnD50w6B8XCA7Civkkac+ZsO6fFwgOwor5JGtPmTDrHxcIDsKK+SRrz5kw6x8XCA7CivkkbA+YsO5fFwgOwor5JG0PnHDrXxcIDsKK+SRtT5tw7l8XCA7Civkkb0+ZMOhfFwgOwor5JG/PnPDuXxcIDsKK+SSgD5mw7p8XCA7CivkkoE+asOsfFwgOwor5JKEPmLDs3xcIDsKK+SShz5mw7l8XCA7Civkkog+YseUfFwgOwor5JKJPnfHlHxcIDsKK+SSlz5xw6x8XCA7CivkkqQ+csOsfFwgOwor5JKlPmbDoHxcIDsKK+SSpz5xw7l8XCA7Civkkqk+aMOpfFwgOwor5JKsPm3DsnxcIDsKK+SSuz5xx5B8XCA7Civkk4M+ecOsfFwgOwor5JOFPnHDrXxcIDsKK+SThz54w6x8XCA7Civkk4g+ecOsfFwgOwor5JOJPnnDqXxcIDsKK+STmj5jw7p8XCA7Civkk5s+ZseUfFwgOwor5JOePmzDrHxcIDsKK+SToD50w6B8XCA7Civkk6I+Z8O5fFwgOwor5JOlPmzDoHxcIDsKK+STpz5jw6x8XCA7Civkk6s+asOsfFwgOwor5JOvPmTDunxcIDsKK+STuT55w6x8XCA7Civkk7w+aMOofFwgOwor5JO9PmrDrHxcIDsKK+SUgT5sw6x8XCA7CivklII+eseQfFwgOwor5JSDPnrHlHxcIDsKK+SUhj5sw618XCA7CivklIc+cceQfFwgOwor5JSJPmzDrHxcIDsKK+SUjj5zw7l8XCA7CivklJM+eMeUfFwgOwor5JSVPnDDunxcIDsKK+SUnj5sx5x8XCA7CivklKE+ecO6fFwgOwor5JSjPmzDrXxcIDsKK+SUpz5sw618XCA7CivklKw+ecOsfFwgOwor5JSvPmjDunxcIDsKK+SUsD5mw7p8XCA7CivklLQ+Y8OofFwgOwor5JS2PnTDrXxcIDsKK+SUvD5zw6h8XCA7CivklL0+w6BpfFwgOwor5JWJPnrDqXxcIDsKK+SVjT55w6x8XCA7CivklY4+ZsO6fFwgOwor5JWXPmLDrHxcIDsKK+SVoT5sx5R8XCA7CivklaM+aMOpfFwgOwor5JWlPm7HkHxcIDsKK+SVqj56w6l8XCA7Civkla4+asO6fFwgOwor5JWzPm3DrXxcIDsKK+SVtj5ow7l8XCA7Civklbc+bcOtfFwgOwor5JW5PnrDoXxcIDsKK+SVuz5nw6l8XCA7CivkloE+ecOsfFwgOwor5JaHPnnDuXxcIDsKK+SWij55w618XCA7CivklpE+bcOsfFwgOwor5JaTPm7DoHxcIDsKK+SWlT56x5R8XCA7Civklpg+dMO6fFwgOwor5JahPm7HnHxcIDsKK+SWpT5sw618XCA7Civklqc+bsOgfFwgOwor5JapPmLDrHxcIDsKK+SWqj5jw618XCA7Civklr0+bMOtfFwgOwor5Ja/PmzDrXxcIDsKK+SXgT5qw6x8XCA7Civkl4I+aMeUfFwgOwor5JeEPmbHlHxcIDsKK+SXhz5qw7p8XCA7Civkl40+bMeQfFwgOwor5JeRPnnDrHxcIDsKK+SXmD5nw6l8XCA7Civkl5o+YsOzfFwgOwor5JefPnnDrHxcIDsKK+SXqD55w7p8XCA7Civkl6s+bcOhfFwgOwor5JexPnDDunxcIDsKK+SXtj5sw6B8XCA7Civkl7c+ecOsfFwgOwor5Je5PmPDrHxcIDsKK+SYgD5mw7l8XCA7CivkmIE+Z8OpfFwgOwor5JiDPm3DsnxcIDsKK+SYhD5mw7l8XCA7CivkmIg+bMOsfFwgOwor5JiMPm7DrHxcIDsKK+SYjz54w7l8XCA7CivkmJA+bsecfFwgOwor5JiYPnnDuXxcIDsKK+SYnT55w6x8XCA7CivkmKA+ZsO6fFwgOwor5JihPmLHkHxcIDsKK+SYoz56x5B8XCA7CivkmKY+bsOtfFwgOwor5JiuPnPDoHxcIDsKK+SYsT55w7l8XCA7CivkmLU+bMO5fFwgOwor5Ji4PnnDrHxcIDsKK+SYuz5zw7l8XCA7CivkmL0+bsOtfFwgOwor5JmEPnHDrHxcIDsKK+SZjz5iw7N8XCA7CivkmZA+a8OofFwgOwor5JmSPnjDuXxcIDsKK+SZlz50w6x8XCA7CivkmaM+c8OgfFwgOwor5JmvPmPDuXxcIDsKK+SZsD5sw618XCA7CivkmbE+ZMO6fFwgOwor5Jm3PmTDqXxcIDsKK+SZuD5kw6l8XCA7Civkmb0+eMOsfFwgOwor5JqCPmjDqHxcIDsKK+SahD5sw7l8XCA7CivkmoY+x5J1fFwgOwor5JqJPnHDrHxcIDsKK+SajT5xw6x8XCA7CivkmpA+asOtfFwgOwor5JqVPmzDrHxcIDsKK+Samz5ow7p8XCA7Civkmp0+esO6fFwgOwor5JqjPnTDrXxcIDsKK+Saqz7DoW98XCA7CivkmrA+cMeQfFwgOwor5Jq0PnfDoHxcIDsKK+Satz54w6x8XCA7Civkmrk+cMeQfFwgOwor5Jq8Pm7HnHxcIDsKK+SbiT5tw6x8XCA7Civkm4s+Z8OpfFwgOwor5JuOPmjDuXxcIDsKK+Sbjz5uw618XCA7Civkm5A+Y8OtfFwgOwor5JuRPm3DrHxcIDsKK+SblD5uw6F8XCA7Civkm5U+ecO5fFwgOwor5JuZPnjDuXxcIDsKK+SbpD5jw7l8XCA7Civkm6U+eMOsfFwgOwor5JunPm3DrXxcIDsKK+SbqT53w7l8XCA7Civkm68+asO5fFwgOwor5JuxPnTDrXxcIDsKK+SbtD5xx5B8XCA7Civkm74+c8O5fFwgOwor5Ju/PmfDqXxcIDsKK+ScgT54w6x8XCA7CivknIY+bcOyfFwgOwor5JySPsOgb3xcIDsKK+ScmT7DoW58XCA7CivknJo+dMOgfFwgOwor5JyePmrDrHxcIDsKK+ScoT54w7l8XCA7CivknK8+asO6fFwgOwor5Jy6PmPDqHxcIDsKK+ScvD5nw7p8XCA7CivknL0+ecO6fFwgOwor5J2TPmzDoHxcIDsKK+SdmD55w6x8XCA7CivknZo+bsOtfFwgOwor5J2dPnnHkHxcIDsKK+Sdnz55w6B8XCA7CivknaM+ccO6fFwgOwor5J2vPnnDrHxcIDsKK+SdsD50w618XCA7CivknbU+YsO5fFwgOwor5J24PmrDrHxcIDsKK+SdvT7DoGl8XCA7Civknb4+ZsO5fFwgOwor5J6FPnnDrXxcIDsKK+SemD5qw618XCA7Civknpk+esOhfFwgOwor5J6aPnHDrXxcIDsKK+SenD5mw7l8XCA7Civknp0+x45vfFwgOwor5J6ePmbDunxcIDsKK+Senz5ww7J8XCA7CivknqQ+ccO6fFwgOwor5J6mPmjDqXxcIDsKK+Serz5mw7l8XCA7CivknrE+aMO6fFwgOwor5J6zPmLDs3xcIDsKK+Setj5kw6x8XCA7Civknrg+ZsO5fFwgOwor5J+DPmPDoHxcIDsKK+SfhD5xw6x8XCA7Civkn4Y+YsOsfFwgOwor5J+KPnHDunxcIDsKK+SfjD5qw618XCA7Civkn48+bMOsfFwgOwor5J+QPmzDrHxcIDsKK+SfkT5sx458XCA7Civkn5Q+ZsO5fFwgOwor5J+aPnHDrXxcIDsKK+Sfmz5iw7N8XCA7Civkn5w+bsOgfFwgOwor5J+fPmPDuXxcIDsKK+SfoT5kw6x8XCA7Civkn6Q+YsOsfFwgOwor5J+mPmLDoXxcIDsKK+Sfrj5mw7p8XCA7Civkn7s+ZMO5fFwgOwor5J+8PnfHlHxcIDsKK+Sfvz5sw7l8XCA7CivkoIg+dMO6fFwgOwor5KCLPmLHkHxcIDsKK+Sgjj53w7J8XCA7CivkoI8+asOsfFwgOwor5KCQPnHDuXxcIDsKK+Sgkj5ow7p8XCA7CivkoJM+Y8O5fFwgOwor5KCYPnDDrHxcIDsKK+Sgmj53w6B8XCA7CivkoJ4+Y8O5fFwgOwor5KC1PmbDuXxcIDsKK+SguT7DoWl8XCA7CivkoYM+bMOsfFwgOwor5KGLPnHDrXxcIDsKK+ShjT5mw7p8XCA7CivkoY4+bMO6fFwgOwor5KGUPnHHkHxcIDsKK+ShnD5sw7l8XCA7CivkoZ4+asO6fFwgOwor5KGfPnDDrHxcIDsKK+Shpz53x5R8XCA7Civkoak+Z8eUfFwgOwor5KKAPnHDrHxcIDsKK+Sigz55w6x8XCA7CivkooQ+eMeQfFwgOwor5KKLPmrDrHxcIDsKK+SijD5iw7N8XCA7CivkopA+Y8O6fFwgOwor5KKRPmTHkHxcIDsKK+Sikz55w7p8XCA7CivkopQ+Z8OpfFwgOwor5KKVPnjDuXxcIDsKK+Silj5sx5x8XCA7Civkopc+aMOpfFwgOwor5KKdPnnDoHxcIDsKK+Sinj5uw7l8XCA7Civkoqk+ecO5fFwgOwor5KKqPmLDs3xcIDsKK+SisT5kw7p8XCA7CivkorM+aseQfFwgOwor5KK5PmrHlHxcIDsKK+SjgT55x5R8XCA7Civko4Q+dMO6fFwgOwor5KOMPmTHkHxcIDsKK+Sjkz5sw618XCA7Civko5U+bceOfFwgOwor5KOWPm3HjnxcIDsKK+SjnT50w7p8XCA7Civko6E+dMOtfFwgOwor5KOiPmrDrXxcIDsKK+SjpT5ix5B8XCA7Civko6c+ecOsfFwgOwor5KOqPnDDsnxcIDsKK+Sjqz5sw618XCA7Civko64+cMOyfFwgOwor5KOwPmrDuXxcIDsKK+SjsT54w7l8XCA7Civko7Q+eMO5fFwgOwor5KO1PsOocnxcIDsKK+SjuT5mw6F8XCA7Civko70+dMeQfFwgOwor5KO+Pm3DrHxcIDsKK+SkhT50w7p8XCA7CivkpIk+bcOsfFwgOwor5KSNPm3DrXxcIDsKK+Skjj5qw7p8XCA7CivkpI8+cMeQfFwgOwor5KSSPmrHkHxcIDsKK+SkmT5sw6x8XCA7CivkpJo+bMeQfFwgOwor5KSgPmrEq3xcIDsKK+SkqD5ww6x8XCA7CivkpLM+ecOofFwgOwor5KS2PnnDqHxcIDsKK+SlhD5jw7l8XCA7CivkpYg+bceUfFwgOwor5KWPPnnHlHxcIDsKK+SllD5zw7l8XCA7CivkpZg+Y8O5fFwgOwor5KWdPsOhb3xcIDsKK+Slnz55w6h8XCA7CivkpaE+ecOofFwgOwor5KWoPmzHnHxcIDsKK+SlrD5iw7N8XCA7Civkpa8+YsOgfFwgOwor5KW2PmzDrHxcIDsKK+SluD5tw618XCA7Civkpbo+ecOpfFwgOwor5KaHPmrDrHxcIDsKK+Smiz7DoW98XCA7Civkpo0+d8O5fFwgOwor5KaXPnjDuXxcIDsKK+SmmD5iw6x8XCA7Civkppk+c8OsfFwgOwor5KacPnfDunxcIDsKK+Smoz5mw7l8XCA7Civkpqo+ecOgfFwgOwor5Ka0PnnDrHxcIDsKK+SmtT5ux5B8XCA7Civkprs+Y8OsfFwgOwor5Ka9PnjDuXxcIDsKK+SnhD5nw6h8XCA7Civkp4U+dMOsfFwgOwor5KeHPm7HkHxcIDsKK+SniT5sx5B8XCA7Civkp40+eMOsfFwgOwor5KeUPm3DuXxcIDsKK+Snlz5iw6x8XCA7Civkp5g+ccOtfFwgOwor5KedPmTDrHxcIDsKK+Snnj5mw7l8XCA7Civkp6Q+cMO6fFwgOwor5KenPnnHkHxcIDsKK+SnqD55w6h8XCA7Civkp7M+Y8OtfFwgOwor5Ke1PnHDrXxcIDsKK+SnvD5ow7p8XCA7CivkqIA+ZMOtfFwgOwor5KiGPmLDrXxcIDsKK+Sojz5jw618XCA7CivkqJE+dMOtfFwgOwor5KiSPnnDuXxcIDsKK+Solj5qw6x8XCA7CivkqJc+ZsO6fFwgOwor5KibPnPDqHxcIDsKK+Sonj55x5R8XCA7CivkqKA+x45pfFwgOwor5KijPmfDqXxcIDsKK+SopD5kw618XCA7CivkqKU+aMO5fFwgOwor5KiwPnDDsnxcIDsKK+SosT5mw7l8XCA7CivkqLM+eMOsfFwgOwor5Ki8PmjDuXxcIDsKK+SpiT5mx5R8XCA7CivkqYs+bceSfFwgOwor5KmQPmfDqXxcIDsKK+Spkj55w7p8XCA7CivkqZM+ccOtfFwgOwor5KmXPmLDoHxcIDsKK+SpmD5kw6x8XCA7CivkqZo+ZMOsfFwgOwor5KmbPmLDrHxcIDsKK+Spnz55w618XCA7CivkqaI+ZMOhfFwgOwor5KmkPnjDrHxcIDsKK+Sprj5sw7l8XCA7Civkqa8+asOtfFwgOwor5Km0PmjDunxcIDsKK+Spuz5iw6B8XCA7CivkqoE+YseUfFwgOwor5KqCPmfDqXxcIDsKK+SqhT5kw7p8XCA7CivkqoY+dMeQfFwgOwor5KqHPmLDs3xcIDsKK+SqiT5sw6B8XCA7Civkqo8+bsOgfFwgOwor5KqQPmLDrHxcIDsKK+SqlD5ix5R8XCA7CivkqpU+asO6fFwgOwor5KqWPnDDsnxcIDsKK+SqmT5mw7p8XCA7Civkqpo+aMOofFwgOwor5KqdPmjDuXxcIDsKK+Sqnj56w6F8XCA7Civkqqw+YsOzfFwgOwor5Kq1PnnHjnxcIDsKK+Squj5nw6l8XCA7Civkqr4+bcOtfFwgOwor5KuBPmLDrHxcIDsKK+Srij5iw7N8XCA7Civkq4w+cMeQfFwgOwor5KuNPmbHlHxcIDsKK+Srkz53w7p8XCA7Civkq5Q+ccOsfFwgOwor5KuYPmjDqXxcIDsKK+SrnT5mx5R8XCA7Civkq6M+eMOtfFwgOwor5KumPmfDqXxcIDsKK+SrqD7DoG98XCA7Civkq7E+bsOhfFwgOwor5KuzPmTDunxcIDsKK+Srvj5iw6x8XCA7CivkrIE+ecOtfFwgOwor5KyDPnPDoHxcIDsKK+SshD55w7l8XCA7CivkrIU+bMOsfFwgOwor5KyGPmzDrHxcIDsKK+Ssjz5iw7l8XCA7CivkrJM+w6BufFwgOwor5KyUPnjDuXxcIDsKK+Ssmz5iw6x8XCA7CivkrKM+ccOsfFwgOwor5KylPnnDrHxcIDsKK+SsqD5jw7l8XCA7CivkrKo+YsOzfFwgOwor5KyuPnnDrXxcIDsKK+SstD5tw7J8XCA7CivkrLU+w6BpfFwgOwor5Ky2PsOobnxcIDsKK+Ssvj50w618XCA7CivkrYI+ecOsfFwgOwor5K2FPmjDunxcIDsKK+Sthj5uw6h8XCA7CivkrYc+ecOsfFwgOwor5K2MPmjDunxcIDsKK+StjT5ow7p8XCA7CivkrZM+w6hufFwgOwor5K2ePnnDrHxcIDsKK+Stnz55w6h8XCA7CivkraE+w6hufFwgOwor5K2jPmPDrXxcIDsKK+Stpj5iw7N8XCA7Civkrac+bceQfFwgOwor5K2pPm3DrHxcIDsKK+Stqz5xx5B8XCA7Civkraw+cceQfFwgOwor5K2uPmLDrHxcIDsKK+Strz5iw7N8XCA7CivkrbI+bseQfFwgOwor5K22PnHDrXxcIDsKK+StuD5mw7l8XCA7Civkrbw+ccOtfFwgOwor5K2/PnnDrHxcIDsKK+SugD5iw7N8XCA7CivkroI+YsOzfFwgOwor5K6HPnnDuXxcIDsKK+SuiT5sw7p8XCA7Civkroo+ecOtfFwgOwor5K6LPmzDrHxcIDsKK+Sujj54w6x8XCA7Civkro8+d8O6fFwgOwor5K6XPsOgbnxcIDsKK+SumD7DqXJ8XCA7Civkrpk+ecO5fFwgOwor5K6bPmbDuXxcIDsKK+SuoT5iw6x8XCA7CivkrqQ+ZMOtfFwgOwor5K6lPmzDrHxcIDsKK+SuqT5nw7p8XCA7Civkrqw+bcOyfFwgOwor5K6tPm3DrHxcIDsKK+Surz7DoG98XCA7Civkrrc+ZMO6fFwgOwor5K64PmjDunxcIDsKK+Suuj5qw6x8XCA7Civkr4I+asOtfFwgOwor5K+GPnnDrHxcIDsKK+SviT55w6B8XCA7Civkr4s+YsOzfFwgOwor5K+XPmLDrHxcIDsKK+SvmT5ww7J8XCA7Civkr5o+x5J1fFwgOwor5K+cPnTDrHxcIDsKK+SvoD7Hjm98XCA7Civkr6I+bcOzfFwgOwor5K+lPsOgbnxcIDsKK+Svpj5tw6B8XCA7Civkr7E+ZsO5fFwgOwor5K+yPnDDoXxcIDsKK+SvuD5jw6x8XCA7Civkr7w+ZMOtfFwgOwor5K+9PmbHlHxcIDsKK+Svvz56w7p8XCA7CivksIA+d8eSfFwgOwor5LCHPnHDrXxcIDsKK+Swij5iw7N8XCA7CivksI0+Y8OsfFwgOwor5LCPPmrDrHxcIDsKK+SwlT5sw7p8XCA7CivksJk+eceQfFwgOwor5LCbPmzDrHxcIDsKK+SwnD5sw6x8XCA7CivksKY+cMeQfFwgOwor5LCsPmrDunxcIDsKK+Swrz5ux5B8XCA7CivksLA+csO6fFwgOwor5LCyPnnDoHxcIDsKK+SwtD5xw6x8XCA7CivksLk+esOpfFwgOwor5LC7PnnDunxcIDsKK+Swvj5iw6B8XCA7CivksYM+ZMeQfFwgOwor5LGFPm3DsnxcIDsKK+SxiD5xw618XCA7CivksYo+bceQfFwgOwor5LGMPnnDrXxcIDsKK+Sxkj55w6x8XCA7CivksZg+bMOtfFwgOwor5LGaPmzDuXxcIDsKK+Sxmz54w7l8XCA7CivksZ0+YsOgfFwgOwor5LGfPmrDuXxcIDsKK+SxoT5qw7p8XCA7CivksaM+esO6fFwgOwor5LGrPmzDoHxcIDsKK+Sxrz5tw7p8XCA7CivksbE+ZMOsfFwgOwor5LG3PnnDunxcIDsKK+SxuT5uw6B8XCA7CivkspA+bMeUfFwgOwor5LKRPnnDrXxcIDsKK+SylT5wx5R8XCA7Civkspw+ecOofFwgOwor5LKePmzDrHxcIDsKK+Syoz55w7p8XCA7Civksqc+ZMO5fFwgOwor5LKqPnjDrHxcIDsKK+SyrD5xw618XCA7Civksq8+asOtfFwgOwor5LK1PmjDuXxcIDsKK+Syvz5jw618XCA7Civks4E+YsOhfFwgOwor5LOEPmPDrXxcIDsKK+Szhz53x5R8XCA7Civks4o+YsOhfFwgOwor5LOQPmPDrHxcIDsKK+Szmj5ow6l8XCA7Civks5w+dMO6fFwgOwor5LOdPmLDuXxcIDsKK+Szoj5xw618XCA7Civks60+asOtfFwgOwor5LOuPm3DsnxcIDsKK+SzsT53w7l8XCA7Civks7M+eMO5fFwgOwor5LO0PmTDoXxcIDsKK+SzuD5tw6F8XCA7Civks70+aMOofFwgOwor5LSBPnnDuXxcIDsKK+S0hD5sw6x8XCA7CivktIY+cMO6fFwgOwor5LSIPseOb3xcIDsKK+S0ij55w618XCA7CivktJc+asO6fFwgOwor5LSZPnDDrHxcIDsKK+S0nT5iw7l8XCA7CivktJ4+ZMOtfFwgOwor5LShPmzDrHxcIDsKK+S0oj5tw618XCA7CivktKo+bMO5fFwgOwor5LSsPnnDrHxcIDsKK+S0sj5tw7J8XCA7CivktLM+aMOofFwgOwor5LS6PmLDuXxcIDsKK+S0uz5sw618XCA7CivktYQ+YsOtfFwgOwor5LWFPsOhb3xcIDsKK+S1kT5uw6x8XCA7CivktZI+bsOsfFwgOwor5LWTPmzDrXxcIDsKK+S1lT5qw7l8XCA7CivktZc+ZsO6fFwgOwor5LWdPnnDoHxcIDsKK+S1oD5kw618XCA7CivktaM+ZMOhfFwgOwor5LWpPmzDrXxcIDsKK+S1qz55w7l8XCA7Civktaw+dMOgfFwgOwor5LWxPmjDqHxcIDsKK+S1tj5xw7p8XCA7Civktbs+Z8eUfFwgOwor5LW9PmPDoHxcIDsKK+S1vj5mw7p8XCA7CivktoA+dMOgfFwgOwor5LaBPnTDoHxcIDsKK+S2hT5ow6l8XCA7Civktog+YsOzfFwgOwor5LaKPm7HnHxcIDsKK+S2jT5kw6x8XCA7Civkto8+dMeQfFwgOwor5LaRPnTDrHxcIDsKK+S2kj5xw618XCA7CivktpM+asOsfFwgOwor5LaVPnDDoXxcIDsKK+S2lz5rw6h8XCA7Civktpg+bMOsfFwgOwor5LaZPmrDuXxcIDsKK+S2mj5xx5R8XCA7Civktps+bMOgfFwgOwor5LacPmfDuXxcIDsKK+S2nj5xw618XCA7CivktqM+w6FpfFwgOwor5LalPmrHlHxcIDsKK+S2pj56w6l8XCA7Civktqk+asOsfFwgOwor5LiMPmrEq3xcIDsKK+S4qD5nxJt8XCA7CivkuYA+ZsO6fFwgOwor5LmBPnnDrXxcIDsKK+S5gj7DoGl8XCA7CivkuZU+aMeUfFwgOwor5Lm2PmbHlHxcIDsKK+S5uD5ux458XCA7Civkub8+bMSTfFwgOwor5LqEPnnDrHxcIDsKK+S6kz5xw618XCA7CivkupY+c8OsfFwgOwor5LqcPnnDoHxcIDsKK+S6nT5xw618XCA7Civkup4+ecOgfFwgOwor5LqxPnnDqHxcIDsKK+S6vD5qw618XCA7Civku4I+bMOofFwgOwor5LuIPmLEgXxcIDsKK+S7jz5mw7N8XCA7Civku6I+ZMOtfFwgOwor5LurPm3DuXxcIDsKK+S7sT5ww618XCA7Civku74+ZMSrfFwgOwor5LyDPnnDunxcIDsKK+S8hz55w6x8XCA7CivkvIs+asOtfFwgOwor5LyMPsOgaXxcIDsKK+S8lT5mxat8XCA7CivkvK4+bsO6fFwgOwor5LyxPm7HkHxcIDsKK+S8tT5jw6x8XCA7CivkvLk+ccWrfFwgOwor5Ly+PnDEq3xcIDsKK+S8vz55w6x8XCA7CivkvYA+c8OsfFwgOwor5L2BPseOaXxcIDsKK+S9iD5iw7l8XCA7CivkvYk+ccWrfFwgOwor5L2KPmLHkHxcIDsKK+S9jD5jx5B8XCA7CivkvZY+YsOsfFwgOwor5L2iPnHDunxcIDsKK+S9pz5rx458XCA7Civkvas+aMOofFwgOwor5L2uPmfDqXxcIDsKK+S9sT5mx458XCA7CivkvbQ+w6hyfFwgOwor5L29PmPDrHxcIDsKK+S+hz55w618XCA7Civkvo4+bceQfFwgOwor5L6QPnjDuXxcIDsKK+S+kj7EgW58XCA7CivkvpM+bMO5fFwgOwor5L6VPsOpcnxcIDsKK+S+nj5yx5R8XCA7CivkvrY+bMeafFwgOwor5L63PmrDunxcIDsKK+S+vD5iw7N8XCA7Civkv4E+eceUfFwgOwor5L+CPnjDrHxcIDsKK+S/hj54w7p8XCA7Civkv4g+a8O5fFwgOwor5L+JPnfDuXxcIDsKK+S/iz55w6x8XCA7Civkv4w+ZseUfFwgOwor5L+ZPnjEq3xcIDsKK+S/pD50w6x8XCA7Civkv7A+aMOofFwgOwor5L+5PnnDoHxcIDsKK+S/vD55w7l8XCA7CivlgIs+Z8OofFwgOwor5YCbPnHEq3xcIDsKK+WAsz56w6x8XCA7CivlgLU+d8eUfFwgOwor5YC2PmrDuXxcIDsKK+WAuz55xJN8XCA7CivlgYo+eceUfFwgOwor5YGNPnTDrXxcIDsKK+WBkz53w7J8XCA7CivlgZk+ZMOsfFwgOwor5YGePnnDqHxcIDsKK+WBpj54xat8XCA7Civlgag+Y8SrfFwgOwor5YGpPmbDuXxcIDsKK+WBqj5ixKt8XCA7Civlga4+asOtfFwgOwor5YGvPnnHkHxcIDsKK+WBsj5zxKt8XCA7CivlgbQ+Y8OofFwgOwor5YG6PnrDoXxcIDsKK+WCgz5zw7l8XCA7Civlgok+csO5fFwgOwor5YKMPm3DoHxcIDsKK+WCkj54xKt8XCA7CivlgqA+ZsSBfFwgOwor5YK0PnnHlHxcIDsKK+WDgD5kw6x8XCA7Civlg4E+eMSrfFwgOwor5YOHPmzDuXxcIDsKK+WDlT5ww7p8XCA7Civlg5s+ccSrfFwgOwor5YOfPmrEq3xcIDsKK+WDsD5iw7N8XCA7Civlg7E+Z8O5fFwgOwor5YO3PnnDqHxcIDsKK+WDvj7DoGl8XCA7CivlhIA+ecOtfFwgOwor5YSEPnnDrHxcIDsKK+WEkT7DoG58XCA7CivlhJc+bseQfFwgOwor5YSbPnfHlHxcIDsKK+WEnj5ux5B8XCA7CivlhKI+bMeafFwgOwor5YSlPmTDunxcIDsKK+WEqT5zw6x8XCA7CivlhK4+bMOsfFwgOwor5YS3PmzDrHxcIDsKK+WFjj50w7l8XCA7CivlhZA+w6lyfFwgOwor5YWSPsOpcnxcIDsKK+WFkz5rw6h8XCA7CivlhaM+bMeQfFwgOwor5YWqPnnDunxcIDsKK+WFvj5qw6x8XCA7Civlhb8+ecOsfFwgOwor5YaKPmPDqHxcIDsKK+WGlD54x5R8XCA7CivlhpY+bcOsfFwgOwor5YadPnnDrXxcIDsKK+WGnj5tw618XCA7CivlhqM+asO5fFwgOwor5YaoPmbDuXxcIDsKK+WGqj5tw6x8XCA7CivlhrE+aMO5fFwgOwor5Ya0PmjDuXxcIDsKK+WGuT5mw7p8XCA7Civlh4M+dMO6fFwgOwor5YeFPmfDuXxcIDsKK+WHkj55w618XCA7Civlh5M+bMOsfFwgOwor5YeYPnPEq3xcIDsKK+WHnj54xKt8XCA7Civlh58+ZMO6fFwgOwor5YelPmrFq3xcIDsKK+WIiT5qxKt8XCA7CivliI8+asSrfFwgOwor5YiVPmzDrXxcIDsKK+WInD5mw7p8XCA7CivliJ4+ccO5fFwgOwor5YifPmrFq3xcIDsKK+WItT7DqHJ8XCA7CivliL4+Y8OsfFwgOwor5YmHPnrDqXxcIDsKK+WJiz5rw6h8XCA7CivliZM+bMOtfFwgOwor5YmYPnHDrXxcIDsKK+WJmj56w6x8XCA7CivliZ0+YsWNfFwgOwor5YmePmrEq3xcIDsKK+WJpD5qw6x8XCA7Civlibo+bMOtfFwgOwor5YqFPnDHkHxcIDsKK+WKhz5qw7l8XCA7CivlipE+asOsfFwgOwor5YqYPm3Ds3xcIDsKK+WKmT5sw618XCA7Civlipw+ecSBfFwgOwor5YquPnnDrHxcIDsKK+WKuD53xIF8XCA7Civli4A+a8OofFwgOwor5YuKPmvDqHxcIDsKK+WLjj5sw7l8XCA7Civli5c+eMO5fFwgOwor5YuZPnfDuXxcIDsKK+WLmj55w6x8XCA7Civli6A+bMO5fFwgOwor5YujPmrEq3xcIDsKK+WLqT55w6x8XCA7Civli64+asO5fFwgOwor5Yu0PmzHnHxcIDsKK+WLtT5sw6x8XCA7CivljIo+asO6fFwgOwor5YyMPmfDqXxcIDsKK+WMjj7DoG58XCA7CivljJI+ZMOhfFwgOwor5YycPnnDrXxcIDsKK+WMoj5oxat8XCA7CivljKQ+ccWrfFwgOwor5YyrPmjFq3xcIDsKK+WMtT5kw7p8XCA7CivljLc+ccO6fFwgOwor5Yy4PnjHkHxcIDsKK+WMvD7Hjm58XCA7CivljYA+ccWrfFwgOwor5Y2GPnrDunxcIDsKK+WNjD54w6x8XCA7CivljZk+asOtfFwgOwor5Y2lPnjEq3xcIDsKK+WNuT54w7l8XCA7Civljbw+d8O5fFwgOwor5Y29PmrDrXxcIDsKK+WOgD54xKt8XCA7CivljoM+w6BufFwgOwor5Y6KPnnHjnxcIDsKK+WOkj5ow6l8XCA7CivljpM+ecOhfFwgOwor5Y6XPnTDrXxcIDsKK+WOoD5jw6h8XCA7CivljqQ+bMOsfFwgOwor5Y6rPsOhb3xcIDsKK+WOrz5sw6x8XCA7CivljrI+bMOsfFwgOwor5Y66PnHDuXxcIDsKK+WOvj5kxat8XCA7Civlj4Y+w6BpfFwgOwor5Y+QPmLDoXxcIDsKK+WPkj5sw6x8XCA7Civlj7s+bMOofFwgOwor5ZCHPnrHkHxcIDsKK+WQlD55xJt8XCA7CivlkJg+x5J1fFwgOwor5ZCaPnnEq3xcIDsKK+WQpT5iw7l8XCA7CivlkLM+d8O6fFwgOwor5ZC2Pm7DoHxcIDsKK+WRgj5sx5p8XCA7CivlkYQ+Z8OpfFwgOwor5ZGHPm7DoHxcIDsKK+WRiT53w7p8XCA7Civlkac+ZMeQfFwgOwor5ZGsPnjDrHxcIDsKK+WRrT55w6x8XCA7Civlka4+ccOsfFwgOwor5ZGwPnrHkHxcIDsKK+WRtD54xat8XCA7Civlkbk+ecOsfFwgOwor5ZG+PmTDoXxcIDsKK+WRvz5xxat8XCA7Civlkoc+YsOsfFwgOwor5ZKIPmbDunxcIDsKK+WSij5ow6l8XCA7CivlkpM+d8eOfFwgOwor5ZKYPmLDuXxcIDsKK+WSoD5xw6x8XCA7CivlkqE+w6hyfFwgOwor5ZOKPnnDuXxcIDsKK+WTiz5kw6x8XCA7Civlk6s+esO6fFwgOwor5ZOsPmjDqXxcIDsKK+WTsT5ixY18XCA7Civlk7U+YsSBfFwgOwor5ZO3PmzDqHxcIDsKK+WUgj5nx5R8XCA7CivllIM+Z8eUfFwgOwor5ZSIPnnDrHxcIDsKK+WUiz50x5R8XCA7CivllI4+bMOsfFwgOwor5ZSWPnnHjnxcIDsKK+WUmD5xx5B8XCA7CivllJk+ZMOtfFwgOwor5ZSbPm3DoHxcIDsKK+WUqD56x5R8XCA7CivllKk+d8WNfFwgOwor5ZStPnHEq3xcIDsKK+WUsj7DqXJ8XCA7CivllLU+x45ufFwgOwor5ZS5PnnFq3xcIDsKK+WUvT54xKt8XCA7CivllYA+w6FpfFwgOwor5ZWHPmTDrXxcIDsKK+WVjj53x5R8XCA7CivllZI+d8SBfFwgOwor5ZWTPnHHkHxcIDsKK+WVlD5xx5B8XCA7CivllZg+ecOofFwgOwor5ZWZPnrHkHxcIDsKK+WVmj5ix5B8XCA7CivllZ0+aMOpfFwgOwor5ZWePnnHjnxcIDsKK+WVnz5xx5B8XCA7CivllbI+ZMOsfFwgOwor5ZW9PsOhbnxcIDsKK+WWhT55w7l8XCA7CivllpY+aMO6fFwgOwor5ZaePmrEq3xcIDsKK+WWoz54x5R8XCA7CivllqU+ZMO5fFwgOwor5ZapPnnDuXxcIDsKK+WWsj55b3xcIDsKK+WWuj54w6x8XCA7Civllr4+a8O5fFwgOwor5ZeBPnTDrXxcIDsKK+WXgz5ow6h8XCA7Civll4c+c8OofFwgOwor5ZeLPsOgaXxcIDsKK+WXjj5tx458XCA7Civll5U+csO5fFwgOwor5ZeXPnfEgXxcIDsKK+WXmD5qxKt8XCA7Civll5o+d8WrfFwgOwor5ZeePnrEq3xcIDsKK+WXoj53w6B8XCA7Civll7A+Z8OofFwgOwor5ZexPm7DoXxcIDsKK+WXtj5iw6x8XCA7Civll7g+w6FvfFwgOwor5Ze8Pm3DsnxcIDsKK+WYij7DoWl8XCA7CivlmJE+aMWrfFwgOwor5ZiUPseSdXxcIDsKK+WYlj56w6l8XCA7CivlmJk+cMOzfFwgOwor5ZiaPmTDqXxcIDsKK+WYnD5tw6B8XCA7CivlmJ0+aMO6fFwgOwor5ZigPmfEgXxcIDsKK+WYoj55xJt8XCA7CivlmLA+asSrfFwgOwor5Zi4PmbHlHxcIDsKK+WZiD5jw7l8XCA7CivlmYo+ecO5fFwgOwor5ZmPPnjEq3xcIDsKK+WZkD5xw6x8XCA7CivlmZM+eMWrfFwgOwor5ZmdPnPEq3xcIDsKK+WZoD5kxIF8XCA7Civlmac+xIFpfFwgOwor5ZmvPseOaXxcIDsKK+WZsz55x5R8XCA7Civlmb0+cMeQfFwgOwor5ZqBPmTDrXxcIDsKK+Wagz50w6B8XCA7Civlmog+ecOgfFwgOwor5ZqKPnjDrHxcIDsKK+WajD5qw6x8XCA7CivlmpQ+dMOsfFwgOwor5ZqVPmzFq3xcIDsKK+Walz5iw7N8XCA7Civlmps+aMO5fFwgOwor5ZqcPm3DsnxcIDsKK+Wanz5sw618XCA7CivlmqQ+bcOzfFwgOwor5ZqmPmzDrHxcIDsKK+Wapz5sw7p8XCA7Civlmqk+ZsO6fFwgOwor5ZqtPnDHkHxcIDsKK+WasD5tw7N8XCA7CivlmrE+eMOsfFwgOwor5ZqzPmvDuXxcIDsKK+WauT5sxIF8XCA7Civlmro+dMOgfFwgOwor5ZuDPmPDoHxcIDsKK+WbhD5sw618XCA7Civlm4c+bMOsfFwgOwor5ZuIPnnDrHxcIDsKK+WbjD5zxat8XCA7Civlm40+eMeQfFwgOwor5ZuQPnrDoXxcIDsKK+WbuD5yw6x8XCA7CivlnJA+a8WrfFwgOwor5ZyRPmbDuXxcIDsKK+WclT50w7p8XCA7CivlnJY+dMO6fFwgOwor5ZyXPnTDunxcIDsKK+Wcmz55w6x8XCA7CivlnKA+ecOgfFwgOwor5ZyhPnTHlHxcIDsKK+WcpD5ww7p8XCA7CivlnKU+bMO5fFwgOwor5ZynPnnEgXxcIDsKK+Wcqz55w7l8XCA7CivlnLw+asSrfFwgOwor5Zy9Pm3DsnxcIDsKK+Wdkj5iw6x8XCA7CivlnZQ+ZMOsfFwgOwor5Z2WPmrDrHxcIDsKK+WdmD5kx5B8XCA7CivlnZw+bMOsfFwgOwor5Z2jPm7DrHxcIDsKK+WdpT5xxat8XCA7CivlnbI+ZsOzfFwgOwor5Z20PmvEk3xcIDsKK+Wdtj5tw7l8XCA7Civlnbg+YsWNfFwgOwor5Z26PmLDoXxcIDsKK+Wdvz5mw7l8XCA7CivlnoA+aMWrfFwgOwor5Z6HPsOgb3xcIDsKK+WejT5qw6x8XCA7Civlno4+a8OofFwgOwor5Z6PPmzDuXxcIDsKK+WekD5jw618XCA7Civlnpg+ZsO6fFwgOwor5Z61PseObnxcIDsKK+Weuz5iw6B8XCA7Civlnrw+ecOsfFwgOwor5Z6/PnjDuXxcIDsKK+Wfij5kw6x8XCA7Civln5c+YsO5fFwgOwor5Z+cPnnEm3xcIDsKK+Wfnj5kx5B8XCA7Civln6E+ecOgfFwgOwor5Z+nPmrDuXxcIDsKK+Wftj55w6x8XCA7Civln7w+ccOtfFwgOwor5Z++PmrDuXxcIDsKK+Wfvz5uw618XCA7CivloIE+a8OofFwgOwor5aCEPm7DrHxcIDsKK+WgiT55w7l8XCA7CivloIw+Z8O5fFwgOwor5aCQPnnDoXxcIDsKK+Wgkz7DoG58XCA7CivloJc+dMWrfFwgOwor5aCbPmLDrHxcIDsKK+Wgoz55w7p8XCA7CivloKU+w6BpfFwgOwor5aCsPnnDunxcIDsKK+Wgsj5qw618XCA7CivloYg+asOsfFwgOwor5aGJPmrDrXxcIDsKK+WhkD5zw7l8XCA7CivloZM+bcOsfFwgOwor5aGXPnTDunxcIDsKK+Whmz5sw6x8XCA7CivloaI+d8O5fFwgOwor5aGnPsOgaXxcIDsKK+Whtj5jw7l8XCA7Civlobc+bMeUfFwgOwor5aG4PseSdXxcIDsKK+Whuz5tw7J8XCA7CivlooQ+ccSrfFwgOwor5aKGPmTDrHxcIDsKK+WijT54w6x8XCA7CivlopE+ZMSrfFwgOwor5aKWPnTHjnxcIDsKK+WimD5xw618XCA7CivloqI+YsOhfFwgOwor5aKjPnDFq3xcIDsKK+WirD5kxJN8XCA7CivlorI+d8eUfFwgOwor5aK2PmTEgXxcIDsKK+Witz7DoG98XCA7Civloro+w6BvfFwgOwor5aK8PmrEq3xcIDsKK+Wivz55w6x8XCA7Civlo4A+cMOtfFwgOwor5aOEPnnEm3xcIDsKK+WjiT5qw7l8XCA7Civlo5A+eMeQfFwgOwor5aOSPsOgaXxcIDsKK+Wjkz55xIF8XCA7Civlo5o+bMO6fFwgOwor5aOiPmzDrHxcIDsKK+WjqT5iw6B8XCA7Civlo7E+ecSrfFwgOwor5aO0PnnDrHxcIDsKK+Wjtz5ow7p8XCA7Civlo7o+aMO6fFwgOwor5aO7PnjDuXxcIDsKK+WkgT55xKt8XCA7CivlpIM+Z8WrfFwgOwor5aSQPnjDrHxcIDsKK+WkoT5xw6x8XCA7CivlpKg+ZsO6fFwgOwor5aS2PmLHkHxcIDsKK+Wkvz5ixIF8XCA7CivlpYA+xJNufFwgOwor5aWDPmTDrHxcIDsKK+WlhT5qxKt8XCA7CivlpZs+aMeOfFwgOwor5aWhPsOgb3xcIDsKK+Wlpj53w7l8XCA7Civlpac+w6BvfFwgOwor5aWwPmLDrHxcIDsKK+WmgD5qx5B8XCA7Civlpos+ZsWrfFwgOwor5aaRPnDEgXxcIDsKK+WmoD5uw6B8XCA7Civlpqw+ZMO5fFwgOwor5aatPmLDoXxcIDsKK+WmsD5ux5B8XCA7CivlprQ+ccSrfFwgOwor5aa6Pm3DsnxcIDsKK+WmvD5iw6x8XCA7Civlp4A+aMOpfFwgOwor5aeBPnjHlHxcIDsKK+Wngj5mw6F8XCA7Civlp4c+ZsWrfFwgOwor5aeJPnrHkHxcIDsKK+Wnlj5qw7l8XCA7Civlp54+asOtfFwgOwor5aerPmrEq3xcIDsKK+WokD5mxat8XCA7CivlqJI+d8eUfFwgOwor5aiUPmvDqHxcIDsKK+Womz55w7p8XCA7CivlqKo+d8O6fFwgOwor5aisPnfHlHxcIDsKK+WorT54xKt8XCA7CivlqK8+ecO6fFwgOwor5aiwPnPDrHxcIDsKK+WotT5qxat8XCA7CivlqLg+ccOtfFwgOwor5ai9PmzDuXxcIDsKK+Wovj7Hjml8XCA7CivlqYU+asO6fFwgOwor5amNPnHHkHxcIDsKK+Wpjz5mw7l8XCA7CivlqZc+bsOtfFwgOwor5amfPmjDuXxcIDsKK+WpoD53w6B8XCA7CivlqaY+ZsO5fFwgOwor5amtPnnDoHxcIDsKK+Wprj5qxat8XCA7Civlqa8+bMOsfFwgOwor5aqAPnnDunxcIDsKK+Wqgj50w618XCA7Civlqok+d8WrfFwgOwor5aqNPmbDuXxcIDsKK+WqkD54xKt8XCA7CivlqpU+xIFufFwgOwor5aqePnTDrXxcIDsKK+WqpD5zxKt8XCA7Civlqqc+d8SBfFwgOwor5aqpPmjDunxcIDsKK+WqrT54xat8XCA7Civlqrc+csO5fFwgOwor5aq8PseOb3xcIDsKK+WqvT5txIF8XCA7Civlq4o+c8O5fFwgOwor5auTPnDDrHxcIDsKK+WrlT55w6x8XCA7Civlq5c+ecO5fFwgOwor5aubPnnEq3xcIDsKK+Wrnz5uw6x8XCA7Civlq6c+Y8OofFwgOwor5autPmjDuXxcIDsKK+Wrrj5ow7l8XCA7Civlq68+w6BvfFwgOwor5au0PmfFq3xcIDsKK+WrtT53x5R8XCA7Civlq7w+bcOyfFwgOwor5ayDPnjFq3xcIDsKK+WshD55xKt8XCA7CivlrIY+eMSrfFwgOwor5ayRPnnDrHxcIDsKK+WslD5mw7l8XCA7CivlrJ8+ecOsfFwgOwor5ayhPsOgaXxcIDsKK+WspD5txIF8XCA7CivlrKg+Y8OtfFwgOwor5aypPnnDunxcIDsKK+WsrD54xat8XCA7CivlrLM+d8WNfFwgOwor5ay6Pm7DrHxcIDsKK+Wsuz5kw7p8XCA7CivlrYo+bceQfFwgOwor5a2LPmzDrXxcIDsKK+Wtlj56xKt8XCA7CivlraA+c8OsfFwgOwor5a2yPnnEgXxcIDsKK+WttD5ux5B8XCA7CivlrbY+esSrfFwgOwor5a23PmzDrXxcIDsKK+WtuT5iw7J8XCA7Civlroo+dMO6fFwgOwor5a6QPnnDrXxcIDsKK+Wupz55w618XCA7Civlrrs+bcOsfFwgOwor5a+ZPnnHlHxcIDsKK+WvoD5qw7l8XCA7Civlr6M+aMWrfFwgOwor5a+xPnnDrHxcIDsKK+Wvsj55w618XCA7Civlr70+bMecfFwgOwor5bCAPnDHknxcIDsKK+Wwgz5mxat8XCA7CivlsIU+a8OofFwgOwor5bCQPmrEq3xcIDsKK+Wwkj7Em3J8XCA7CivlsJM+xJtyfFwgOwor5bCbPm3FjXxcIDsKK+WwnD5nw6F8XCA7CivlsLM+Z8eUfFwgOwor5bGDPnjDrHxcIDsKK+WxhD5ixKt8XCA7CivlsZM+eMOsfFwgOwor5bGUPm7DrXxcIDsKK+Wxlj54xKt8XCA7CivlsZw+dMOsfFwgOwor5bGiPmzHmnxcIDsKK+WxqD5qw7l8XCA7Civlsa0+eMOsfFwgOwor5bGwPmzDqHxcIDsKK+WxtD5sw6x8XCA7CivlsbU+eMO5fFwgOwor5bG8PnfDuXxcIDsKK+WyiT53w7l8XCA7CivlspM+ccOtfFwgOwor5bKgPmrDuXxcIDsKK+Wyoj5rxJt8XCA7CivlsqY+aseUfFwgOwor5bKoPnHFq3xcIDsKK+Wyqj5mw7p8XCA7CivlsrQ+ccWrfFwgOwor5bK2PnDDsnxcIDsKK+Wzhj5oxJN8XCA7Civls4c+a8STfFwgOwor5bOKPmbDuXxcIDsKK+WzjT5sw7l8XCA7Civls44+xIFufFwgOwor5bOPPsSbcnxcIDsKK+Wzkz55w618XCA7Civls5Q+bceUfFwgOwor5bOWPsSBbnxcIDsKK+WzmD5oxat8XCA7Civls5s+bMeQfFwgOwor5bOcPmrEq3xcIDsKK+Wzoj5sx5B8XCA7Civls6s+ecOpfFwgOwor5bOsPmLFq3xcIDsKK+Wzsj5sx5B8XCA7Civls7k+dMO6fFwgOwor5bO/PnfDunxcIDsKK+W0iT50w6B8XCA7CivltIw+asWrfFwgOwor5bSSPnrDunxcIDsKK+W0kz5nw7l8XCA7CivltJU+ecOhfFwgOwor5bSlPnDHkHxcIDsKK+W0qj56w7p8XCA7CivltLE+esOpfFwgOwor5bSzPnnDunxcIDsKK+W0uT50w618XCA7CivltLo+eceQfFwgOwor5bWCPmzHnHxcIDsKK+W1hj5qxKt8XCA7CivltY0+aMOpfFwgOwor5bWOPnnDunxcIDsKK+W1lT5sx5p8XCA7CivltZs+ecO6fFwgOwor5bWePmrEq3xcIDsKK+W1oD54xKt8XCA7CivltaE+Y8SrfFwgOwor5bWmPsOhaXxcIDsKK+W1qD53x5R8XCA7CivltbA+Y8SrfFwgOwor5bW0PmrDrXxcIDsKK+W1uj5kw6x8XCA7CivltoA+dMWrfFwgOwor5baFPsOhb3xcIDsKK+W2hz5xxat8XCA7Civlto0+eMOtfFwgOwor5baOPnnDuXxcIDsKK+W2jz5iw7N8XCA7CivltpM+YsWNfFwgOwor5banPnnDrHxcIDsKK+W2qj55w6h8XCA7Civltqs+ecOofFwgOwor5basPnnDrXxcIDsKK+W2rz5qw618XCA7CivltrE+a8SbfFwgOwor5bayPnjEq3xcIDsKK+W2sz5kw6x8XCA7CivltrQ+w6BvfFwgOwor5ba7PnrDoXxcIDsKK+W2vD55x5R8XCA7Civlt4E+bMOsfFwgOwor5beHPnjEq3xcIDsKK+W3iD5qw7p8XCA7Civlt78+ZsO6fFwgOwor5biAPnrEgXxcIDsKK+W4ij5ww6B8XCA7CivluI0+aMO5fFwgOwor5biTPm3DoHxcIDsKK+W4lz5mw7p8XCA7CivluJ4+bcOyfFwgOwor5bifPnnDrHxcIDsKK+W4oD55w6x8XCA7CivluKQ+csO6fFwgOwor5bi6PnHDrXxcIDsKK+W4vj5kx5R8XCA7CivluYE+eMWrfFwgOwor5bmGPnnDrHxcIDsKK+W5jj5tw6x8XCA7CivluZg+esOpfFwgOwor5bmZPm3DuXxcIDsKK+W5oD5oxat8XCA7CivluaM+YsOsfFwgOwor5bmmPm3DrHxcIDsKK+W5vj5qx5B8XCA7CivluoI+esOofFwgOwor5bqFPm1vfFwgOwor5bqMPnnHjnxcIDsKK+W6mD55xIF8XCA7Civlups+Y8SrfFwgOwor5bqhPnnHkHxcIDsKK+W6qT50w7p8XCA7Civluqs+a8O5fFwgOwor5bqvPmLHkHxcIDsKK+W6tD5qw618XCA7Civlurw+Y8OofFwgOwor5bq9PnnDuXxcIDsKK+W7gT5jw6h8XCA7Civlu4U+aMOpfFwgOwor5buYPmzDuXxcIDsKK+W7mT55w6x8XCA7Civlu5w+dMWrfFwgOwor5budPnPEq3xcIDsKK+W7oT53x5R8XCA7Civlu6Y+YsOsfFwgOwor5busPmzDunxcIDsKK+W7sj5sw618XCA7Civlu7g+ZMOtfFwgOwor5bu5PnDDsnxcIDsKK+W8hj5qx5R8XCA7CivlvIw+ecSrfFwgOwor5byNPsOocnxcIDsKK+W8kD7DqHJ8XCA7CivlvJY+aMO5fFwgOwor5byZPnfFq3xcIDsKK+W8nT5iw6B8XCA7CivlvKM+ZseUfFwgOwor5bykPmTHkHxcIDsKK+W8rD55w618XCA7CivlvLs+YsOsfFwgOwor5b2CPmbEgXxcIDsKK+W9gz5iw6x8XCA7CivlvYw+bcOtfFwgOwor5b2QPmrDrHxcIDsKK+W9kT5qw6x8XCA7CivlvZQ+bMO5fFwgOwor5b2bPnnDrXxcIDsKK+W9nD55w618XCA7CivlvZ4+ecOtfFwgOwor5b2nPnnDuXxcIDsKK+W9tj5qw618XCA7Civlvb8+ZsO6fFwgOwor5b6GPnjEq3xcIDsKK+W+jT53xIF8XCA7Civlvps+ccOsfFwgOwor5b6pPmbDuXxcIDsKK+W+rz54xKt8XCA7CivlvrM+ZMOpfFwgOwor5b+CPnHDunxcIDsKK+W/hz5sw6h8XCA7Civlv5Q+ccOsfFwgOwor5b+aPnjEq3xcIDsKK+W/oj53w7l8XCA7Civlv6M+asOtfFwgOwor5b+lPnjDrHxcIDsKK+W/pj55w6h8XCA7Civlv6w+ecO5fFwgOwor5b+vPnHDrXxcIDsKK+aAhz5qw7l8XCA7CivmgIg+ecOsfFwgOwor5oCYPmfDuXxcIDsKK+aAmj5qw7l8XCA7CivmgJ8+ZMOsfFwgOwor5oCiPnTDunxcIDsKK+aApD5mxat8XCA7CivmgKw+eMOsfFwgOwor5oCtPmLDrHxcIDsKK+aAtD54w7l8XCA7CivmgLY+cMSrfFwgOwor5oC3PnjEq3xcIDsKK+aAuD54xKt8XCA7CivmgYQ+eMOsfFwgOwor5oGIPm3DunxcIDsKK+aBkz54xKt8XCA7CivmgZY+c8SrfFwgOwor5oGePnnDrXxcIDsKK+aBtD5kw6l8XCA7CivmgoI+cMSrfFwgOwor5oKGPnnDuXxcIDsKK+aChz55w7l8XCA7CivmgpA+dMOsfFwgOwor5oKRPmLDuXxcIDsKK+aClT54xKt8XCA7Civmgp4+d8O5fFwgOwor5oKhPmzDrXxcIDsKK+aCpT55w6x8XCA7Civmgqc+bMOsfFwgOwor5oKuPnfDuXxcIDsKK+aCtz5sw6x8XCA7Civmgr0+ccSrfFwgOwor5oOBPnjEq3xcIDsKK+aDhD5uw6x8XCA7Civmg44+asOsfFwgOwor5oOSPmjDqXxcIDsKK+aDlj50w6x8XCA7Civmg6o+ZMOpfFwgOwor5oO7PmPDqHxcIDsKK+aDvz50w618XCA7CivmhIU+Z8OpfFwgOwor5oSKPmLDrHxcIDsKK+aEmD5rw6h8XCA7CivmhJk+a8OofFwgOwor5oSbPsOgaXxcIDsKK+aErD5zw7l8XCA7CivmhK0+ccOtfFwgOwor5oSxPmrDrXxcIDsKK+aEsj5nx5R8XCA7CivmhLM+asO5fFwgOwor5oS1Pm7DrHxcIDsKK+aEvT5iw7N8XCA7CivmhYQ+bMOsfFwgOwor5oWJPnjDuXxcIDsKK+aFlD5tw7J8XCA7CivmhaA+w6BvfFwgOwor5oWqPsOydXxcIDsKK+aFrj5sx5x8XCA7Civmhbg+ZMOsfFwgOwor5oW8PnHEq3xcIDsKK+aFvT5xxKt8XCA7Civmhb4+ecO5fFwgOwor5oaIPnHFq3xcIDsKK+aGmD54x5B8XCA7Civmhpk+eMeQfFwgOwor5oafPnPDuXxcIDsKK+aGoT5jw6h8XCA7Civmhq4+d8eUfFwgOwor5oaxPmPDuXxcIDsKK+aGtT5wxKt8XCA7CivmhrY+ecOsfFwgOwor5oeFPnHDunxcIDsKK+aHjD55w6x8XCA7Civmh44+c8OofFwgOwor5oeTPsOgaXxcIDsKK+aHmT55x5R8XCA7Civmh50+w6BpfFwgOwor5oegPnHDrXxcIDsKK+aHoT5tx5J8XCA7Civmh6o+YsOzfFwgOwor5oevPmbFq3xcIDsKK+aHuz5qw6x8XCA7Civmh7w+asO5fFwgOwor5oiCPm3DrXxcIDsKK+aIkz5nxJN8XCA7CivmiKg+Z8STfFwgOwor5oirPnnDuXxcIDsKK+aIrz54w6x8XCA7CivmiLE+eMOsfFwgOwor5oiyPnjDrHxcIDsKK+aItT5xw7p8XCA7CivmiLY+aMO5fFwgOwor5oi4PmjDuXxcIDsKK+aIuz5sw6x8XCA7CivmiYU+ecOtfFwgOwor5omGPnnHkHxcIDsKK+aJjz5wxat8XCA7CivmiZA+bMOofFwgOwor5omVPmbDunxcIDsKK+aJnD53xat8XCA7CivmiZ0+a8WrfFwgOwor5omiPmfHlHxcIDsKK+aJpD53w7l8XCA7CivmibE+eMSrfFwgOwor5om1PnnDunxcIDsKK+aJtz7DoG98XCA7Civmibg+eMSrfFwgOwor5om7PnrDrHxcIDsKK+aKhT5qxat8XCA7Civmioc+Z8eUfFwgOwor5oqIPmLDoHxcIDsKK+aKkD5uw7l8XCA7Civmipk+ZsWrfFwgOwor5oqcPmLDoXxcIDsKK+aKnT7Hjm98XCA7Civmip4+esOpfFwgOwor5oqqPnDFq3xcIDsKK+aKsj5oxJN8XCA7CivmirM+bseQfFwgOwor5oq0PnnDrHxcIDsKK+aKtz5wxKt8XCA7Civmirg+esSBfFwgOwor5oq+PnHFq3xcIDsKK+aLjz5uw6F8XCA7Civmi54+ZMeQfFwgOwor5ougPmrDuXxcIDsKK+aLuj5jw6h8XCA7CivmjIA+YsOyfFwgOwor5oyMPmfDqXxcIDsKK+aMkD5uw6F8XCA7CivmjJQ+bMeafFwgOwor5oyZPmrHlHxcIDsKK+aMnD55w6B8XCA7CivmjKw+YsOzfFwgOwor5oyuPnTHkHxcIDsKK+aMtj5qw7p8XCA7CivmjYg+dMO6fFwgOwor5o2TPnnDqXxcIDsKK+aNlz5iw7l8XCA7CivmjZk+ecOsfFwgOwor5o2bPmzHmnxcIDsKK+aNqj5qxat8XCA7Civmjaw+ZseUfFwgOwor5o29PnrDunxcIDsKK+aNvz54xKt8XCA7Civmjos+ZMeQfFwgOwor5o6OPmrHkHxcIDsKK+aOkT5xw618XCA7Civmjpc+ecOgfFwgOwor5o6cPnnHkHxcIDsKK+aOpj50w6x8XCA7Civmjq0+cMOhfFwgOwor5o+KPnDDrHxcIDsKK+aPnz54xat8XCA7Civmj6I+a8OofFwgOwor5o+kPmrDrXxcIDsKK+aPpT50w6x8XCA7Civmj6Y+bMOhfFwgOwor5o+nPmzDoHxcIDsKK+aPrD50w7p8XCA7CivmkJU+a8OofFwgOwor5pCZPm7DuXxcIDsKK+aQqD50w6B8XCA7CivmkK4+Z8eUfFwgOwor5pCwPmjDunxcIDsKK+aQsj53xIF8XCA7CivmkLg+eMOtfFwgOwor5pC/PmfDqXxcIDsKK+aRgD53x5R8XCA7CivmkYs+c8OgfFwgOwor5pGVPmTDrHxcIDsKK+aRlj5xw6x8XCA7CivmkZk+bMOtfFwgOwor5pGdPmzDuXxcIDsKK+aRoj5ow7l8XCA7Civmkag+bcSBfFwgOwor5pGuPsOhb3xcIDsKK+aSjj55w6x8XCA7Civmkpg+ZMSBfFwgOwor5pKgPmrHkHxcIDsKK+aSpT5ixY18XCA7Civmkqs+ZseUfFwgOwor5pKyPnDFq3xcIDsKK+aSuz50w6B8XCA7Civmk4Q+bMeUfFwgOwor5pOHPnrDqXxcIDsKK+aTiD5ix5R8XCA7Civmk4o+asSrfFwgOwor5pOVPnjEq3xcIDsKK+aTlj5nxJt8XCA7Civmk5k+w6BvfFwgOwor5pOaPmrDuXxcIDsKK+aTmz55w6h8XCA7Civmk58+bcOtfFwgOwor5pOgPmrHkHxcIDsKK+aTpz5qx5R8XCA7Civmk6g+ecOpfFwgOwor5pOpPnLHlHxcIDsKK+aTqz55w6h8XCA7Civmk6w+bseQfFwgOwor5pOuPmrDrXxcIDsKK+aTsT5nxJN8XCA7Civmk7U+bcOzfFwgOwor5pO8PmzDrHxcIDsKK+aTvz50w6x8XCA7CivmlIs+bMOgfFwgOwor5pSOPmzDunxcIDsKK+aUoD5tw618XCA7CivmlKY+bMOsfFwgOwor5pStPmzDrHxcIDsKK+aUsj5xxKt8XCA7CivmlLM+cMWNfFwgOwor5pS0PnDFq3xcIDsKK+aUuj55x5B8XCA7CivmlYA+YsOzfFwgOwor5pWEPnfDuXxcIDsKK+aVhz5jw6h8XCA7CivmlYs+Z8OpfFwgOwor5pWNPnjDuXxcIDsKK+aVlD55x5R8XCA7CivmlZg+eMO5fFwgOwor5pWhPnnDrHxcIDsKK+aVsT7DoWl8XCA7CivmlbM+w6FpfFwgOwor5pW1PmTDrXxcIDsKK+aVuj5xxat8XCA7Civmlbw+eMeQfFwgOwor5paBPnnDrHxcIDsKK+aWgz5iw6x8XCA7CivmloQ+bMOsfFwgOwor5paJPnHDrXxcIDsKK+aWij5xw618XCA7CivmlpQ+eceUfFwgOwor5paePnnHlHxcIDsKK+aWqj5xw7p8XCA7Civmlro+d8WrfFwgOwor5peCPnHDrXxcIDsKK+aXhz5wxKt8XCA7Civml4k+ZsWrfFwgOwor5peRPnnHkHxcIDsKK+aXnj5tw7N8XCA7Civml58+ecO6fFwgOwor5pehPmrDrHxcIDsKK+aXoz5qxKt8XCA7Civml7M+ZMOsfFwgOwor5pe0PnjFq3xcIDsKK+aYiD5ow7l8XCA7CivmmJI+aMWrfFwgOwor5piXPnrDqHxcIDsKK+aYmz5qw7l8XCA7CivmmKk+bcOyfFwgOwor5pirPnjHlHxcIDsKK+aYuT7Hjml8XCA7CivmmYc+eMWrfFwgOwor5pmePnjEq3xcIDsKK+aZsj55x5B8XCA7CivmmbM+eMSrfFwgOwor5pm1PnHHkHxcIDsKK+aZuT55w6x8XCA7Civmmbs+x45ufFwgOwor5pqKPmbHlHxcIDsKK+aajT5ow6h8XCA7Civmmo8+ZMeUfFwgOwor5pqhPmLDs3xcIDsKK+aaoz5xw6x8XCA7CivmmqY+bMOsfFwgOwor5pqvPm3DsnxcIDsKK+aasT5uw6x8XCA7Civmmr8+eMeQfFwgOwor5puAPnnDrHxcIDsKK+abgT5qw6x8XCA7Civmm4Q+ecOofFwgOwor5puFPnnDqHxcIDsKK+abhj5sw6x8XCA7Civmm44+ecOsfFwgOwor5puQPmLDs3xcIDsKK+ablj7DoGl8XCA7Civmm5c+ecOofFwgOwor5puYPnLDunxcIDsKK+abnj5sw6x8XCA7Civmm6U+bMO6fFwgOwor5pu1PnnDqHxcIDsKK+abtj5oxat8XCA7CivmnII+eMO5fFwgOwor5pyHPnDDrXxcIDsKK+ackj5ux5x8XCA7CivmnJ4+asSrfFwgOwor5pyzPmLEgXxcIDsKK+acuD5sw6x8XCA7CivmnLw+YseQfFwgOwor5py/PmPDrHxcIDsKK+adhT55w7p8XCA7CivmnYc+d8WrfFwgOwor5p2NPnrHkHxcIDsKK+adlT5kw6x8XCA7CivmnZk+ecOsfFwgOwor5p2aPmfHlHxcIDsKK+adnT55w618XCA7Civmnac+bceOfFwgOwor5p2pPm3DoHxcIDsKK+adqz5zw6x8XCA7CivmnoU+asSrfFwgOwor5p6GPmLHkHxcIDsKK+aeiD5iw6x8XCA7Civmno0+ecOsfFwgOwor5p6OPmbDunxcIDsKK+aekT5ow7l8XCA7CivmnpI+ecOhfFwgOwor5p6WPmvDqHxcIDsKK+aesT55w618XCA7CivmnrI+eMeQfFwgOwor5p65PmbFq3xcIDsKK+aeuz55w6x8XCA7Civmnrw+ecOofFwgOwor5p69PnnDqHxcIDsKK+afgD5ix5B8XCA7Civmn4I+ecOtfFwgOwor5p+FPm7HkHxcIDsKK+afhj5sxIF8XCA7Civmn4c+aMOpfFwgOwor5p+MPmPDrXxcIDsKK+afjj5mxat8XCA7Civmn6c+Z8WrfFwgOwor5p+oPnDFq3xcIDsKK+afqj7EgW98XCA7Civmn6s+ZsO6fFwgOwor5p+tPmLFjXxcIDsKK+afsj5iw6x8XCA7Civmn7Y+c8OsfFwgOwor5p++PmPDqHxcIDsKK+aglD5xw6x8XCA7CivmoJg+eceQfFwgOwor5qCbPmzDrHxcIDsKK+agnD5zw7l8XCA7CivmoKU+esSrfFwgOwor5qCnPnnDrHxcIDsKK+agrT7DqXJ8XCA7CivmoK4+xJtyfFwgOwor5qCwPmbDoXxcIDsKK+agtT5sw6x8XCA7CivmoL8+ZsO6fFwgOwor5qGHPsSBbnxcIDsKK+ahiz55w618XCA7CivmoY0+a8WrfFwgOwor5qGPPmrDunxcIDsKK+ahsj5iw7N8XCA7Civmobg+eMSrfFwgOwor5qG8PnHEq3xcIDsKK+aigD5jw7l8XCA7Civmooo+ZMOsfFwgOwor5qKMPnTDunxcIDsKK+aijj7EgW98XCA7CivmopA+YsOsfFwgOwor5qKRPmTDrXxcIDsKK+ainj5qw6x8XCA7CivmoqA+bMeafFwgOwor5qKpPmzDrXxcIDsKK+airj5qw7p8XCA7Civmorg+bMOtfFwgOwor5qODPmzDrXxcIDsKK+ajhD5xw6x8XCA7Civmo4o+ccOtfFwgOwor5qOMPsSBb3xcIDsKK+ajjz50w6h8XCA7Civmo5k+bMOsfFwgOwor5qObPnnDuXxcIDsKK+ajnD55w7l8XCA7Civmo50+Z8O5fFwgOwor5qOoPnHHkHxcIDsKK+ajqz55w7l8XCA7Civmo7I+ccSrfFwgOwor5qOzPmvEm3xcIDsKK+ajtD5mw7p8XCA7CivmpII+bMO5fFwgOwor5qSHPmrHlHxcIDsKK+akiD5qw7p8XCA7CivmpI8+ecSBfFwgOwor5qSUPnrEq3xcIDsKK+aknj54w6x8XCA7CivmpLg+ecOtfFwgOwor5qWAPnnHlHxcIDsKK+alhT5iw6x8XCA7CivmpYg+eMWrfFwgOwor5qWLPmzDoHxcIDsKK+alkj5zxKt8XCA7CivmpZU+asOtfFwgOwor5qWYPm3DuXxcIDsKK+almz5ow7l8XCA7CivmpZw+aMO6fFwgOwor5qWhPnnDunxcIDsKK+alqj55w6h8XCA7Civmpa0+ecOofFwgOwor5qWwPnnDunxcIDsKK+altD5kw6x8XCA7CivmpbU+asOtfFwgOwor5qW9PmzDqHxcIDsKK+amgz5mw7p8XCA7Civmpo8+ecOsfFwgOwor5qaRPmbDuXxcIDsKK+amkz5tw6x8XCA7CivmppY+Z8eUfFwgOwor5qaZPnTHjnxcIDsKK+amnz56x5B8XCA7CivmpqE+c8O5fFwgOwor5qaqPm3DoHxcIDsKK+amuT5zxKt8XCA7Civmprw+a8OofFwgOwor5qa9PnjEq3xcIDsKK+amvj5nx5R8XCA7Civmp4I+aMOpfFwgOwor5qeFPmfDqXxcIDsKK+aniT5qw618XCA7Civmp5I+eMO5fFwgOwor5qeiPnjDrXxcIDsKK+anoz5xx5B8XCA7Civmp7I+aMO6fFwgOwor5qe0PmjDuXxcIDsKK+antz55w6x8XCA7CivmqII+bMOofFwgOwor5qiNPmrEq3xcIDsKK+aokD5sx5R8XCA7CivmqJI+bcOsfFwgOwor5qiWPmvEk3xcIDsKK+aomj5sw7l8XCA7CivmqLI+w6hyfFwgOwor5qi4PnDDunxcIDsKK+apgz5mxIF8XCA7CivmqYU+bcOzfFwgOwor5qmaPnPDuXxcIDsKK+apnz5qxKt8XCA7Civmqa0+Z8WrfFwgOwor5qm2PmrDrXxcIDsKK+apvT50w6B8XCA7Civmqos+asWrfFwgOwor5qqMPnDDunxcIDsKK+aqjT55w6x8XCA7Civmqo8+cMeUfFwgOwor5qqVPmrDrHxcIDsKK+aqmD5iw6x8XCA7Civmqp0+asOtfFwgOwor5qqlPnnHkHxcIDsKK+aqsT5xw618XCA7CivmqrU+asOsfFwgOwor5qq3Pm3DrXxcIDsKK+aquT55xKt8XCA7Civmqr0+w6lyfFwgOwor5quAPnHDrXxcIDsKK+argT5tw6x8XCA7Civmq4U+asSrfFwgOwor5quHPnDDs3xcIDsKK+arkj5zw6B8XCA7Civmq5M+bMeUfFwgOwor5quUPmzDrHxcIDsKK+arlj5sx5h8XCA7Civmq5k+xY11fFwgOwor5quaPmzHmHxcIDsKK+arnT5kw7p8XCA7Civmq58+bMOsfFwgOwor5quoPmzDunxcIDsKK+arqj5sw6x8XCA7Civmq60+asOsfFwgOwor5quvPnPFq3xcIDsKK+arsj55w7l8XCA7Civmq7g+aseUfFwgOwor5qyCPmLDs3xcIDsKK+ashT5qx5R8XCA7CivmrIs+ccO6fFwgOwor5qyOPnnDuXxcIDsKK+askD5sx5B8XCA7CivmrJo+bMeQfFwgOwor5qybPmLDoHxcIDsKK+asnT55w7l8XCA7CivmrKU+ecO5fFwgOwor5qyoPmvDqXxcIDsKK+asrT5oxJN8XCA7CivmrK8+eMOtfFwgOwor5qywPnjFq3xcIDsKK+asuD7Hjml8XCA7CivmrYg+x5J1fFwgOwor5q2LPnnDrXxcIDsKK+atjT53xat8XCA7CivmrZA+xY11fFwgOwor5q2RPmjFq3xcIDsKK+atkj50w6x8XCA7CivmrZQ+eMWrfFwgOwor5q2YPnjFq3xcIDsKK+atnT55w6x8XCA7CivmrZ8+ecO6fFwgOwor5q2oPmLDuXxcIDsKK+atqT5iw7l8XCA7Civmras+asO5fFwgOwor5q2uPnPDqHxcIDsKK+atsD5zw6h8XCA7CivmrbQ+bMOsfFwgOwor5q22PnnDunxcIDsKK+attz5sw6x8XCA7Civmrb4+bcOyfFwgOwor5q2/Pm3DsnxcIDsKK+auiD54w7l8XCA7CivmrpA+c8O5fFwgOwor5q6UPnnDrHxcIDsKK+aunD55w6h8XCA7CivmrqI+dMOsfFwgOwor5q6nPmPDuXxcIDsKK+aurD5kw7l8XCA7CivmrrA+ZMO6fFwgOwor5q65PnnDrHxcIDsKK+auuz5rw6l8XCA7Civmrrw+a8OpfFwgOwor5q+EPmrEq3xcIDsKK+avhj7FjXV8XCA7Civmr4k+ecSrfFwgOwor5q+QPseOaXxcIDsKK+avmD5ww618XCA7Civmr6M+bcO5fFwgOwor5q+kPsSbcnxcIDsKK+avpj7DqHJ8XCA7Civmr6k+asO6fFwgOwor5q+qPm3DunxcIDsKK+avsT5qw7p8XCA7Civmr7Q+YsSrfFwgOwor5q+8PmjDqXxcIDsKK+avvj50w6B8XCA7CivmsIA+bMeYfFwgOwor5rCBPm3DunxcIDsKK+awjT5xw7p8XCA7CivmsJc+ccOsfFwgOwor5rCcPnLDrHxcIDsKK+awoz5xw6x8XCA7CivmsKU+eMSrfFwgOwor5rCsPnnDoHxcIDsKK+awuz5sw6h8XCA7CivmsLw+bsOsfFwgOwor5rGPPmTDoHxcIDsKK+axmT53xat8XCA7CivmsZo+d8SBfFwgOwor5rGlPmfHlHxcIDsKK+axvz54w7l8XCA7CivmsoA+eMO5fFwgOwor5rKNPmjDuXxcIDsKK+aylT53w7l8XCA7Civmspg+YseQfFwgOwor5rKePnrEgXxcIDsKK+ayoj7FjXV8XCA7CivmsrQ+bMOsfFwgOwor5rK1Pm3HkHxcIDsKK+aytj5mw7p8XCA7Civmsrc+ZsSBfFwgOwor5rOAPmrFq3xcIDsKK+azgz5qw7l8XCA7Civms4Y+ecSrfFwgOwor5rOLPmLDrHxcIDsKK+azkD5sw6h8XCA7Civms5I+Z8WrfFwgOwor5rOYPmjFq3xcIDsKK+azmj5jx5B8XCA7Civms50+c8O5fFwgOwor5rOkPm7HkHxcIDsKK+azpj5qw7p8XCA7Civms60+ZsWrfFwgOwor5rOyPmrHkHxcIDsKK+a0jT5zw6x8XCA7CivmtI8+w6lyfFwgOwor5rSRPmbDunxcIDsKK+a0lj53w7p8XCA7CivmtJ0+w6BufFwgOwor5rSfPnnDrXxcIDsKK+a0oD53xat8XCA7CivmtKI+ecSrfFwgOwor5rSjPm3HkHxcIDsKK+a0pj5tw7J8XCA7CivmtLA+asO5fFwgOwor5rS/PnfFq3xcIDsKK+a1gD5xx5R8XCA7CivmtYI+ecOsfFwgOwor5rWdPmTDrXxcIDsKK+a1oT5iw7N8XCA7CivmtaU+ecOsfFwgOwor5rWsPmzHkHxcIDsKK+a1sD5sw6x8XCA7CivmtbM+ecOsfFwgOwor5raWPmzDrHxcIDsKK+a2mD5zw6x8XCA7Civmtpw+ZMO6fFwgOwor5ra0PnfDsnxcIDsKK+a2uj5qxat8XCA7Civmtr4+dMOgfFwgOwor5reCPmTDqXxcIDsKK+a3iD5nx5R8XCA7Civmt5I+ccSrfFwgOwor5reVPmzDuXxcIDsKK+a3lz5qw7p8XCA7Civmt6A+cMOsfFwgOwor5reiPnnDuXxcIDsKK+a3pT5sw7l8XCA7Civmt6c+bcOsfFwgOwor5revPnnDuXxcIDsKK+a3tD5oxat8XCA7Civmt78+bcOsfFwgOwor5riDPnLDqHxcIDsKK+a4hz5rxJt8XCA7CivmuIg+asOsfFwgOwor5riSPnDDrHxcIDsKK+a4pz5kw6x8XCA7CivmuKw+Y8OofFwgOwor5riuPmfEk3xcIDsKK+a4sT7Em3J8XCA7CivmuLM+bceQfFwgOwor5ri/PmLDoXxcIDsKK+a5hj5xw6x8XCA7CivmuYc+ccOsfFwgOwor5rmQPm3DsnxcIDsKK+a5kT54x5R8XCA7CivmuZI+asOtfFwgOwor5rmZPnnDrHxcIDsKK+a5oT55w7p8XCA7CivmuaI+YsOsfFwgOwor5rmkPmrDunxcIDsKK+a5pT50w7p8XCA7Civmuag+ccO5fFwgOwor5rm9PnrEq3xcIDsKK+a6hz5sx5p8XCA7Civmupo+ZMOhfFwgOwor5rqbPnfEgXxcIDsKK+a6nj5tw6x8XCA7CivmuqE+YsOzfFwgOwor5rqkPm3HjnxcIDsKK+a6pj5xxKt8XCA7Civmuqk+d8O5fFwgOwor5rqtPnrDqXxcIDsKK+a6uD5zw7l8XCA7Civmurk+c8O5fFwgOwor5ruGPmjDqXxcIDsKK+a7ij5jw618XCA7Civmu4w+ZMOtfFwgOwor5ruSPmLDrHxcIDsKK+a7qj55w7l8XCA7Civmu6w+aMO5fFwgOwor5rutPmLDrHxcIDsKK+a7tT5tw6x8XCA7Civmu7Y+w6FvfFwgOwor5ru3PmzHlHxcIDsKK+a7uD5ox5R8XCA7Civmu7o+ZMOtfFwgOwor5ryBPnnDunxcIDsKK+a8gz5qw618XCA7CivmvIQ+ecOhfFwgOwor5ryHPnjHkHxcIDsKK+a8iD5qw6x8XCA7CivmvIo+bMeafFwgOwor5ryaPsWNdXxcIDsKK+a8nD55xJt8XCA7CivmvJ0+eMOtfFwgOwor5ryePm3DrHxcIDsKK+a8pT53xIF8XCA7CivmvKY+bMOtfFwgOwor5rysPnrDrHxcIDsKK+a8tT54w7l8XCA7CivmvL0+dMOtfFwgOwor5r2KPnjDuXxcIDsKK+a9jj5ww6x8XCA7CivmvZA+YsWNfFwgOwor5r2RPnDFjXxcIDsKK+a9kj5ixY18XCA7CivmvZU+d8eUfFwgOwor5r2WPnDDoXxcIDsKK+a9lz5qw618XCA7CivmvZ0+eMSrfFwgOwor5r2fPnjDrHxcIDsKK+a9pT5zw7l8XCA7Civmvak+ecOsfFwgOwor5r2qPmTDrXxcIDsKK+a9sT55xJN8XCA7CivmvbM+dMO6fFwgOwor5r22PmLDrHxcIDsKK+a9tz5ix5B8XCA7CivmvoA+c8OofFwgOwor5r6BPnPDqHxcIDsKK+a+hT7DoG98XCA7CivmvpM+ZsO6fFwgOwor5r6VPmjDqXxcIDsKK+a+mT54w6x8XCA7Civmvp4+ecO6fFwgOwor5r6kPnrDqXxcIDsKK+a+pj55w7l8XCA7Civmvqw+esSrfFwgOwor5r6yPnnDqHxcIDsKK+a+vD5ww6x8XCA7Civmvr0+asO5fFwgOwor5r6+PnTDoHxcIDsKK+a/hz5zw6h8XCA7Civmv4g+asOtfFwgOwor5r+MPnTDoHxcIDsKK+a/kD5tw618XCA7Civmv5Q+bceQfFwgOwor5r+WPm7DrHxcIDsKK+a/lz5tw6x8XCA7Civmv5o+YsOsfFwgOwor5r+dPnHDrXxcIDsKK+a/nz5qw6x8XCA7Civmv6M+d8OyfFwgOwor5r+lPnjEq3xcIDsKK+a/qD5jw618XCA7Civmv60+w6BpfFwgOwor5r+yPmfHlHxcIDsKK+a/vj5sx5x8XCA7Civmv78+bMOsfFwgOwor54CDPnPDrHxcIDsKK+eAhj5kw7p8XCA7CivngI4+bcOyfFwgOwor54CUPmfHlHxcIDsKK+eAmD5sw7p8XCA7CivngJ0+bMOsfFwgOwor54CrPmjDunxcIDsKK+eAsD5tw618XCA7CivngLE+asOsfFwgOwor54C3PnnDrHxcIDsKK+eBiD5xw7p8XCA7CivngYs+ZseOfFwgOwor54GNPmzDrXxcIDsKK+eBkT5zx458XCA7CivngZU+bMOtfFwgOwor54GWPm3HkHxcIDsKK+eBqj55w7l8XCA7Civngoc+cMOyfFwgOwor54KIPnnDrHxcIDsKK+eCiz5wxKt8XCA7CivngpE+bcO5fFwgOwor54KfPmTDoXxcIDsKK+eCoz5rxJt8XCA7CivngqU+ZsO6fFwgOwor54KmPmLDoXxcIDsKK+eDhT54w7l8XCA7Civng4w+d8O5fFwgOwor54OPPnfFq3xcIDsKK+eDlj5nw6l8XCA7Civng54+cMOyfFwgOwor54OwPmbDunxcIDsKK+eDsz5wx5R8XCA7Civng7w+aMWrfFwgOwor54SAPmjDunxcIDsKK+eEgT54xKt8XCA7CivnhIM+aMOofFwgOwor54SFPmvDuXxcIDsKK+eEiD54xKt8XCA7CivnhI0+ZMOsfFwgOwor54SPPmrDrXxcIDsKK+eElz5qw7p8XCA7CivnhJ8+eMOtfFwgOwor54ShPnfDunxcIDsKK+eEoz5qw7l8XCA7CivnhKQ+ZseUfFwgOwor54SlPnfDsnxcIDsKK+eErD54w618XCA7CivnhLc+cMOtfFwgOwor54S4PmfHlHxcIDsKK+eFgj5ow6h8XCA7CivnhY8+YsOsfFwgOwor54WVPnjEq3xcIDsKK+eFoD55w6h8XCA7Civnhb4+bsyEfFwgOwor54W/PmLDs3xcIDsKK+eGgj54w6x8XCA7CivnhoM+d8O5fFwgOwor54aGPmjDqXxcIDsKK+eGiD54xKt8XCA7Civnhpo+YsOsfFwgOwor54adPmzDuXxcIDsKK+eGpD55w6x8XCA7Civnhqk+xIFvfFwgOwor54aqPnnDrXxcIDsKK+eGsD7FjXV8XCA7CivnhrE+csOofFwgOwor54a6PnjEq3xcIDsKK+eGuz54xKt8XCA7Civnhrw+ecOsfFwgOwor54eBPnnDqHxcIDsKK+eHjz55w7l8XCA7Civnh6E+ecOsfFwgOwor54eoPnjEq3xcIDsKK+eHsT55w6x8XCA7Civnh7g+csO6fFwgOwor54iAPmLDs3xcIDsKK+eIhD5sw6x8XCA7CivniIU+bcOyfFwgOwor54iHPnLDqHxcIDsKK+eIiT5sw6B8XCA7CivniIo+xIFvfFwgOwor54iPPmzDrHxcIDsKK+eIkD5sw7p8XCA7CivniJc+ecOofFwgOwor54iiPm3DrXxcIDsKK+eIqT55w7l8XCA7CivniLQ+ZseUfFwgOwor54i6PnnDqXxcIDsKK+eIvj7Em3J8XCA7CivniYE+Z8STfFwgOwor54mUPmLDs3xcIDsKK+eJmD5kw7p8XCA7CivniaA+dMSBfFwgOwor54mrPmfEk3xcIDsKK+eJrT5zw6x8XCA7CivnibE+Z8STfFwgOwor54mzPm3HlHxcIDsKK+eJtD5kx5B8XCA7Civnibg+esOsfFwgOwor54qCPmzDrXxcIDsKK+eKhj50w6h8XCA7CivnipA+a8STfFwgOwor54qRPmrDunxcIDsKK+eKlD54w6x8XCA7Civnipg+bcOhfFwgOwor54qbPmzDrXxcIDsKK+eKoT5sw6x8XCA7CivniqI+ZMO6fFwgOwor54qkPnDDrXxcIDsKK+eKpT5iw7N8XCA7Civniqc+eMSrfFwgOwor54quPmLDoXxcIDsKK+eKsT5qx5B8XCA7CivnirM+w6FufFwgOwor54q1PnHDrHxcIDsKK+eKuz5iw7N8XCA7Civnir0+ecOhfFwgOwor54uHPm3DuXxcIDsKK+eLiT5wxKt8XCA7Civni4o+asO6fFwgOwor54uLPm7DrXxcIDsKK+eLkz5wxKt8XCA7Civni5Q+bseQfFwgOwor54uVPseOb3xcIDsKK+eLmz5ww7J8XCA7Civni5w+Z8eUfFwgOwor54uiPmjDqXxcIDsKK+eLpD5qw618XCA7Civni6c+dMOgfFwgOwor54uzPnnDunxcIDsKK+eLtj54x5B8XCA7CivnjIg+YsOgfFwgOwor54yJPnHDrXxcIDsKK+eMmj55w6F8XCA7CivnjKQ+asOsfFwgOwor54ynPnfFjXxcIDsKK+eMsD55w6B8XCA7CivnjLI+aMOofFwgOwor54y8PmLDs3xcIDsKK+eMvT5tx458XCA7CivnjYE+bcOgfFwgOwor542EPnnDuXxcIDsKK+eNiD55w6x8XCA7CivnjY8+bcO6fFwgOwor542TPsOhb3xcIDsKK+eNmD5iw6x8XCA7CivnjZk+YsOsfFwgOwor542bPnDDunxcIDsKK+eNnT55w7l8XCA7CivnjaU+eMOtfFwgOwor542mPmfDqXxcIDsKK+eNqD5kw7p8XCA7Civnjbk+bMO6fFwgOwor5426PnTHjnxcIDsKK+eNvD5tw618XCA7CivnjoI+ccOtfFwgOwor546GPnrEq3xcIDsKK+eOiD5sw7p8XCA7Civnjoo+c8O5fFwgOwor546NPmfHjnxcIDsKK+eOjz5sw6h8XCA7CivnjpA+YsSBfFwgOwor546TPmTDrHxcIDsKK+eOlz55w7p8XCA7Civnjpg+aseQfFwgOwor546dPnfHlHxcIDsKK+eOnj5mxat8XCA7CivnjqE+ecOgfFwgOwor546tPnDDrXxcIDsKK+eOtD55w6x8XCA7CivnjrU+w6FufFwgOwor5464PmPEq3xcIDsKK+eOvD5jx5B8XCA7Civnj4E+Y8OtfFwgOwor54+GPnnDrXxcIDsKK+ePhz56x5R8XCA7Civnj4w+YsOsfFwgOwor54+VPmzDrHxcIDsKK+ePnT54x5R8XCA7Civnj58+c8O5fFwgOwor54+sPnjDuXxcIDsKK+ePtj5kw6x8XCA7Civnj7c+d8eUfFwgOwor54+4PnfDunxcIDsKK+eQiD5mw7p8XCA7CivnkIs+bMOtfFwgOwor55CNPmzDrHxcIDsKK+eQmT55w7l8XCA7CivnkK0+bMO5fFwgOwor55C6PmbDoHxcIDsKK+eQvT5kx5R8XCA7CivnkYA+eceUfFwgOwor55GFPnTDrXxcIDsKK+eRmD55w6l8XCA7CivnkaY+d8WrfFwgOwor55GqPm3HjnxcIDsKK+eRrj5sw6x8XCA7Civnkbk+dMO6fFwgOwor55G/PmzEq3xcIDsKK+eSgj5xw618XCA7Civnkog+w6FvfFwgOwor55KRPnfDunxcIDsKK+eSlj5xw7p8XCA7CivnkqM+asSrfFwgOwor55KmPsOgaXxcIDsKK+eSsT5zw6h8XCA7CivnkrU+ecO6fFwgOwor55K3PmzDunxcIDsKK+eSvT54x5B8XCA7Civnkr4+asOsfFwgOwor55OEPmTDunxcIDsKK+eThT5sw6x8XCA7Civnk4g+bMOtfFwgOwor55OLPmLDs3xcIDsKK+eTjj5sw6B8XCA7Civnk5A+bMO6fFwgOwor55ORPmzDrHxcIDsKK+eTlT5tw618XCA7Civnk5c+eMSrfFwgOwor55OdPmLDs3xcIDsKK+eToT53w6B8XCA7Civnk6U+bMOsfFwgOwor55OqPmLDuXxcIDsKK+eTsz5ow7p8XCA7Civnk7U+ecOtfFwgOwor55SGPmPDrXxcIDsKK+eUiD5xw6x8XCA7CivnlIs+ZMOsfFwgOwor55SMPsWNdXxcIDsKK+eUkj53x5R8XCA7CivnlKY+c8WrfFwgOwor55SqPmzDuXxcIDsKK+eUtj5mw7p8XCA7CivnlYE+ccOtfFwgOwor55WGPm3HlHxcIDsKK+eViT5mw7p8XCA7CivnlZA+ZsO6fFwgOwor55WSPm3HlHxcIDsKK+eVlj53xIF8XCA7CivnlZc+ZMOhfFwgOwor55WdPm3HlHxcIDsKK+eVnj5tx5R8XCA7CivnlZ8+Y8OofFwgOwor55WiPmLDrHxcIDsKK+eVoz5kw6F8XCA7Civnlaw+ecO6fFwgOwor55WuPm3HlHxcIDsKK+eVsD55w6x8XCA7Civnlog+YsOyfFwgOwor55aVPmLHkHxcIDsKK+eWnj54xat8XCA7Civnlqo+YsOsfFwgOwor55a3PnHDrXxcIDsKK+eWuj5mw6F8XCA7Civnl4Y+bsOsfFwgOwor55ecPnTFq3xcIDsKK+eXoT5wxat8XCA7Civnl6w+ecOsfFwgOwor55eyPm3DoXxcIDsKK+eXtT5qw6x8XCA7Civnl7c+xIFufFwgOwor55e6PmLDrHxcIDsKK+eYgj55x458XCA7CivnmIQ+Y8O5fFwgOwor55iIPmrDrHxcIDsKK+eYiT55w7l8XCA7CivnmI8+dMO6fFwgOwor55iUPmvDuXxcIDsKK+eYnD54w618XCA7CivnmJ4+ecOsfFwgOwor55ivPmPDuXxcIDsKK+eYsT55w6x8XCA7CivnmLs+bMeYfFwgOwor55i8Pm3DsnxcIDsKK+eZgT5mw7p8XCA7CivnmYo+w6FpfFwgOwor55mLPmjDqHxcIDsKK+eZkj55w7l8XCA7CivnmZg+bMOsfFwgOwor55mgPmrDrHxcIDsKK+eZpz5sw6x8XCA7CivnmbY+YsWNfFwgOwor55m5PnDFjXxcIDsKK+eZuj5mxIF8XCA7Civnmbw+ZsSBfFwgOwor55m/PmrDrXxcIDsKK+eagD5ixKt8XCA7CivnmoE+ZMOtfFwgOwor55qFPnDEgXxcIDsKK+eaiT5jx5B8XCA7Civnmo0+asOtfFwgOwor55qVPmLEq3xcIDsKK+eamj7DoWl8XCA7Civnmp8+esOpfFwgOwor55qjPnnDqHxcIDsKK+eapz7DoGl8XCA7Civnmqo+bMOsfFwgOwor55qsPmjDqHxcIDsKK+eatz5nx5R8XCA7Civnmrw+Z8eUfFwgOwor55q+PmTDunxcIDsKK+ebhz5ow6l8XCA7Civnm4k+aMOpfFwgOwor55uLPmLFjXxcIDsKK+ebkz5nxJt8XCA7Civnm5k+ZseUfFwgOwor55udPmzDuXxcIDsKK+ebpj7EgW58XCA7Civnm6c+bMO6fFwgOwor55urPsSBbnxcIDsKK+ebrD5nx5R8XCA7Civnm60+bMOsfFwgOwor55u1PnHDrHxcIDsKK+ebuz54w6x8XCA7CivnnJQ+ZMOgfFwgOwor55yXPmrFq3xcIDsKK+ecnD5tw7J8XCA7CivnnKE+ZMSrfFwgOwor55ykPnnDrXxcIDsKK+ecpT56w6x8XCA7CivnnKs+bceQfFwgOwor55yxPnnDrXxcIDsKK+ecsj7DqHJ8XCA7CivnnL0+bcOyfFwgOwor552OPnjEq3xcIDsKK+ednT5sw618XCA7CivnnaQ+YsOsfFwgOwor552pPmzDuXxcIDsKK+edqj55w6x8XCA7Civnna4+ecO6fFwgOwor552wPm3DoHxcIDsKK+edsj5qw6x8XCA7CivnnbM+eMSrfFwgOwor5528PnTDrHxcIDsKK+eegT5mw6F8XCA7CivnnoI+ZsSBfFwgOwor556HPm3Eq3xcIDsKK+eelD56w6l8XCA7CivnnpY+ecOsfFwgOwor556YPsWNdXxcIDsKK+eemT5tw7J8XCA7CivnnqE+asOsfFwgOwor556kPmLDrHxcIDsKK+eeqD5ww7p8XCA7CivnnrE+ecOofFwgOwor556yPnjDuXxcIDsKK+eeuD5qw618XCA7Civnnrk+w6BpfFwgOwor55+LPmzDrHxcIDsKK+efkT5sw7p8XCA7Civnn5Y+eMeQfFwgOwor55+ePnnDuXxcIDsKK+efoD5jw6h8XCA7Civnn7U+ccOsfFwgOwor55+3PnrHkHxcIDsKK+efuT5rxat8XCA7Civnn7s+a8O5fFwgOwor56CFPmzDrHxcIDsKK+eghj5mxat8XCA7CivnoJ4+bcOyfFwgOwor56CgPnHFq3xcIDsKK+egoT5rxJN8XCA7CivnoKg+w6BpfFwgOwor56CqPm3HlHxcIDsKK+egrD5sw6F8XCA7CivnoK4+bseUfFwgOwor56CxPsOgaXxcIDsKK+egsz5sw6h8XCA7CivnoLU+YsWNfFwgOwor56C2PnDDsnxcIDsKK+ehiT5sw7l8XCA7CivnoYs+w6BpfFwgOwor56GiPnfDsnxcIDsKK+ehsj55w7l8XCA7CivnobU+bMeUfFwgOwor56KBPnHDrXxcIDsKK+eihj5ixY18XCA7Civnoos+aMOofFwgOwor56KUPnfHlHxcIDsKK+eilT5xw618XCA7CivnoqI+a8OofFwgOwor56KmPmvDqHxcIDsKK+eirj50w618XCA7CivnorY+ccOsfFwgOwor56K8Pm3HjnxcIDsKK+ejgz5zxKt8XCA7Civno4c+cMSrfFwgOwor56ONPnjEq3xcIDsKK+ejjj5xxKt8XCA7Civno48+w6FpfFwgOwor56OSPmvEm3xcIDsKK+ejlj5sxIF8XCA7Civno5w+ccOsfFwgOwor56OdPsOhb3xcIDsKK+ejnz5sw7l8XCA7Civno6A+bMeUfFwgOwor56OjPmPDoHxcIDsKK+ejpz5xw6x8XCA7Civno6k+ccSrfFwgOwor56OvPmrEq3xcIDsKK+ejtj54w6x8XCA7Civno7w+w6FvfFwgOwor56O+PmTEq3xcIDsKK+ejvz5sw6x8XCA7CivnpIc+ecO5fFwgOwor56SJPmjDqXxcIDsKK+ekjT5rxJN8XCA7CivnpI8+asOtfFwgOwor56SSPnnHkHxcIDsKK+eklD5ww6x8XCA7CivnpJU+cMSrfFwgOwor56SWPnnDuXxcIDsKK+ekmD5xw6x8XCA7CivnpJk+w6BpfFwgOwor56SgPmPDrXxcIDsKK+ekoT5iw7N8XCA7CivnpKQ+Y8eOfFwgOwor56SqPmzDrHxcIDsKK+ekqz5sw6x8XCA7CivnpLA+bMOsfFwgOwor56SzPm3DsnxcIDsKK+elgj50xIF8XCA7CivnpYM+bcOgfFwgOwor56WHPnHDrXxcIDsKK+ellD5mw7l8XCA7CivnpZU+bcOsfFwgOwor56WjPmzHmnxcIDsKK+elpD55x5R8XCA7CivnpaY+d8O6fFwgOwor56W7PmfDuXxcIDsKK+elvz5sw7l8XCA7Civnpoo+eMOsfFwgOwor56aMPnrEq3xcIDsKK+emkT53w7p8XCA7CivnppQ+dMOtfFwgOwor56aVPnnEq3xcIDsKK+emlz5zxKt8XCA7Civnppg+ZMOsfFwgOwor56adPmrDrXxcIDsKK+emoD5zxKt8XCA7CivnpqE+bcOgfFwgOwor56aiPnTEgXxcIDsKK+empT5xw618XCA7CivnpqY+ecO5fFwgOwor56aoPmrEq3xcIDsKK+emrT5tw618XCA7Civnpq4+bMeQfFwgOwor56awPm3DrXxcIDsKK+emsj5sw6x8XCA7CivnprU+dMOtfFwgOwor56a/PnTFq3xcIDsKK+enhD56x5B8XCA7Civnp4c+ecOsfFwgOwor56eXPmLDrHxcIDsKK+enmT5rw7l8XCA7Civnp5s+cMSrfFwgOwor56ecPm7DrXxcIDsKK+ennT5qxat8XCA7Civnp6A+cMSrfFwgOwor56ehPmLDoXxcIDsKK+enrD5qw7l8XCA7Civnp7E+Y8OtfFwgOwor56e0PmjDqXxcIDsKK+entj56xKt8XCA7Civnp7o+ZMO5fFwgOwor56e/PmbHlHxcIDsKK+eogz5mxat8XCA7CivnqIo+dMOtfFwgOwor56iMPnTDunxcIDsKK+eokT5sw7l8XCA7CivnqJI+Z8O5fFwgOwor56iYPmrEq3xcIDsKK+eooj55w7l8XCA7CivnqKc+eMOsfFwgOwor56ipPmrDrHxcIDsKK+eoqj5mw7l8XCA7CivnqKs+YsSrfFwgOwor56iwPnjFq3xcIDsKK+eotT56xKt8XCA7CivnqLY+ecO5fFwgOwor56i6PnHHkHxcIDsKK+epgD5nx5R8XCA7CivnqYQ+asOsfFwgOwor56mKPmrDrHxcIDsKK+epiz5sw7l8XCA7CivnqYw+c8WrfFwgOwor56mNPmrEq3xcIDsKK+epkz55w6x8XCA7CivnqZY+aseQfFwgOwor56mZPnDDunxcIDsKK+epoT5zw6h8XCA7CivnqaU+ecO5fFwgOwor56mnPmrDrHxcIDsKK+eprT5sx5p8XCA7CivnqbI+bMOtfFwgOwor56m1PnfEgXxcIDsKK+eqij53xIF8XCA7Civnqo8+d8WrfFwgOwor56qiPnjDuXxcIDsKK+eqoz5zw7l8XCA7Civnqqk+d8WNfFwgOwor56qqPnfEgXxcIDsKK+eqqz55w6B8XCA7Civnqq0+asO5fFwgOwor56q2PmrDuXxcIDsKK+equD54xKt8XCA7Civnqrk+d8O5fFwgOwor56uSPnHDrXxcIDsKK+ermD5qx5R8XCA7Civnq6E+ecSrfFwgOwor56uiPnPDrHxcIDsKK+erqT55w6x8XCA7Civnq6w+cceUfFwgOwor56yMPnnDoXxcIDsKK+eskz5ww618XCA7CivnrJY+eceQfFwgOwor56ydPm7DoHxcIDsKK+esnz5nxat8XCA7CivnrKc+Y8OofFwgOwor56yuPnrDqXxcIDsKK+essD5mw7p8XCA7CivnrLQ+Z8SbfFwgOwor562BPnHHlHxcIDsKK+ethj5ix5B8XCA7CivnrY4+csO6fFwgOwor562TPmTEgXxcIDsKK+etnj5jw6h8XCA7CivnrZ8+ZsWrfFwgOwor562jPmzDrHxcIDsKK+etpT5qx5R8XCA7CivnrbQ+Y8OofFwgOwor566BPnDDunxcIDsKK+euhD5iw6x8XCA7CivnroU+YsOsfFwgOwor566GPmLDrHxcIDsKK+euhz5nw6h8XCA7Civnroo+ecWrfFwgOwor566SPmTDoXxcIDsKK+eukz5sw7l8XCA7Civnrpk+ZsO6fFwgOwor566bPmfFq3xcIDsKK+euoz5jw6h8XCA7CivnrqQ+asO6fFwgOwor566lPmLHknxcIDsKK+eutj5ow7p8XCA7Civnrrs+bMecfFwgOwor5668PnfFq3xcIDsKK+euvz5qw618XCA7Civnr5U+aMOpfFwgOwor56+kPmTHlHxcIDsKK+evpT5sw6x8XCA7Civnr7A+YsO5fFwgOwor56+zPmLDrHxcIDsKK+evtD5kw618XCA7Civnr70+eceUfFwgOwor57CAPnrDqXxcIDsKK+ewgz55w618XCA7CivnsIQ+aMO5fFwgOwor57CKPmrEq3xcIDsKK+ewlT5sw6h8XCA7CivnsJk+YsOzfFwgOwor57CaPm3DrHxcIDsKK+ewmz5zxKt8XCA7CivnsKA+ZseUfFwgOwor57CsPmzDuXxcIDsKK+ewtD5qw7l8XCA7CivnsLU+ZMO5fFwgOwor57C2PmLHknxcIDsKK+ewuz5rxJN8XCA7CivnsLw+YsO5fFwgOwor57GFPnnDunxcIDsKK+exij50w6x8XCA7CivnsYs+bcOtfFwgOwor57GZPmzDuXxcIDsKK+exmj5sw7p8XCA7CivnsZ4+ecO5fFwgOwor57GiPmrHlHxcIDsKK+expz5xw7p8XCA7Civnsaw+bMOtfFwgOwor57GtPnPEq3xcIDsKK+exsj55w7l8XCA7Civnsbk+bseafFwgOwor57G+Pm7DrXxcIDsKK+eygz5ix5B8XCA7CivnsoU+d8O5fFwgOwor57KKPmLDrHxcIDsKK+eyjT5sw618XCA7CivnspQ+asO5fFwgOwor57KWPm3DsnxcIDsKK+eymT54xKt8XCA7Civnspo+bMOtfFwgOwor57KbPnPDuXxcIDsKK+eyoz5jw6h8XCA7CivnsrA+ZsO6fFwgOwor57K0PmzHkHxcIDsKK+eytj5sw7l8XCA7Civnsrc+asO6fFwgOwor57K4PnHDrXxcIDsKK+ezhj5oxat8XCA7Civns4g+eMeUfFwgOwor57OOPmzDrXxcIDsKK+ezkD5mxat8XCA7Civns5E+bsOsfFwgOwor57OTPmfHlHxcIDsKK+ezoj5tw7N8XCA7Civns6Y+eMSrfFwgOwor57OqPmLDs3xcIDsKK+ezsj5sw6x8XCA7Civns7Q+ZMOtfFwgOwor57O5PnPEq3xcIDsKK+ezvz5qx5B8XCA7CivntIA+asOsfFwgOwor57SGPnnFq3xcIDsKK+e0hz5nxJN8XCA7CivntIw+asOsfFwgOwor57SNPm7DoHxcIDsKK+e0jj56xKt8XCA7CivntJU+cMSrfFwgOwor57SaPmrDrXxcIDsKK+e0qD5mw7l8XCA7CivntKo+Y8eQfFwgOwor57SuPnrEgXxcIDsKK+e0sD54w6x8XCA7CivntLE+ZsO6fFwgOwor57S2PnHHlHxcIDsKK+e0vD5mw7p8XCA7CivntYE+ccWrfFwgOwor57WEPnrHlHxcIDsKK+e1hz5qw7l8XCA7CivntYg+bcOyfFwgOwor57WXPmjDunxcIDsKK+e1mD5jw6x8XCA7CivntZ0+a8O5fFwgOwor57WlPmbDunxcIDsKK+e1sj5zxKt8XCA7Civntb0+bMeafFwgOwor57aHPnTDrHxcIDsKK+e2iD50w618XCA7Civntow+eMOsfFwgOwor57aNPmbDunxcIDsKK+e2kj5mxat8XCA7CivntpQ+aMO5fFwgOwor57aZPmrDrHxcIDsKK+e2nz5sw6x8XCA7CivntqA+bMecfFwgOwor57alPnHDrHxcIDsKK+e2qD5xw618XCA7Civntro+cceQfFwgOwor57eAPnHEq3xcIDsKK+e3hj55w6x8XCA7Civnt4c+esSrfFwgOwor57eOPnnDuXxcIDsKK+e3kT5qxKt8XCA7Civnt5I+eMO5fFwgOwor57eWPnjDuXxcIDsKK+e3mT5rw6h8XCA7Civnt50+ccSrfFwgOwor57egPmTDrHxcIDsKK+e3pj5zxKt8XCA7Civnt64+ZsO5fFwgOwor57ewPnnDunxcIDsKK+e3uT50w618XCA7CivnuIM+eMWrfFwgOwor57iKPnnDrHxcIDsKK+e4jD5uw6x8XCA7CivnuI4+Z8eUfFwgOwor57ibPmbDunxcIDsKK+e4nz5yw7l8XCA7CivnuKA+aMO6fFwgOwor57iqPmLDrHxcIDsKK+e4rD5jw7l8XCA7CivnuK0+bMOtfFwgOwor57i3PmzHmnxcIDsKK+e4uD5tw7J8XCA7CivnuL4+asSrfFwgOwor57mEPnnEq3xcIDsKK+e5iz54w6x8XCA7CivnuZg+ecO5fFwgOwor57mlPnjEq3xcIDsKK+e5qD5kw6F8XCA7Civnuas+eMOsfFwgOwor57m0PmLDrHxcIDsKK+e5tj55w6x8XCA7Civnubk+ecOsfFwgOwor57m6PnLDunxcIDsKK+e5uz54xat8XCA7Civnubw+asOsfFwgOwor57qAPnDDunxcIDsKK+e6hT5sw6x8XCA7CivnuoY+bcOyfFwgOwor57qMPnjDuXxcIDsKK+e6kT5sw7p8XCA7Civnupc+bMOtfFwgOwor57qaPnjHkHxcIDsKK+e7iz5mw7p8XCA7Civnu6Q+eMOsfFwgOwor57yHPnTDrXxcIDsKK+e8jD5zxKt8XCA7CivnvL0+YsWNfFwgOwor572KPnHDrHxcIDsKK+e9jz5sw7p8XCA7CivnvZk+bcOtfFwgOwor572bPmfFq3xcIDsKK+e9nT5qxat8XCA7CivnvZ4+YsSBfFwgOwor572fPmfHlHxcIDsKK+e9pD50w618XCA7CivnvaY+ZsO6fFwgOwor572tPnnDuXxcIDsKK+e9rz7Hjm58XCA7CivnvbA+ZsOhfFwgOwor572zPnPEq3xcIDsKK+e9tT5tw6B8XCA7Civnvbc+YsOgfFwgOwor5724PmbDoXxcIDsKK+e9vD5iw6x8XCA7Civnvb0+asOsfFwgOwor576DPm3DrHxcIDsKK+e+hj5ww618XCA7Civnvoc+asSrfFwgOwor576IPmrEq3xcIDsKK+e+iz5tx5B8XCA7Civnvo0+dMOgfFwgOwor576TPmLEgXxcIDsKK+e+lj5nx5R8XCA7Civnvps+ecOsfFwgOwor576pPnnDrHxcIDsKK+e+rT55w7p8XCA7Civnvro+aMO5fFwgOwor57+HPmbDunxcIDsKK+e/iz5sxIF8XCA7Civnv40+cMSrfFwgOwor57+RPnHDunxcIDsKK+e/kj54w618XCA7Civnv5Y+eMOsfFwgOwor57+XPnHDrXxcIDsKK+e/nD5zw6h8XCA7Civnv68+aMOofFwgOwor57+1PnHDunxcIDsKK+e/uj7DoW98XCA7CivogI8+w6lyfFwgOwor6ICUPnrHkHxcIDsKK+iAnz5qw7l8XCA7CivogKA+aMOpfFwgOwor6ICkPmrDrXxcIDsKK+iAqz56w6l8XCA7CivogK0+asSrfFwgOwor6IGJPnfEgXxcIDsKK+iBjz7DqXJ8XCA7CivogZA+ecOgfFwgOwor6IGbPmLDrHxcIDsKK+iBnD5kx5B8XCA7CivogZ8+eMO5fFwgOwor6IGlPnnHlHxcIDsKK+iBuz5qxKt8XCA7CivogoA+ecO5fFwgOwor6IKCPnPDrHxcIDsKK+iChT5zw7l8XCA7CivogpA+Z8STfFwgOwor6IKRPmTDrHxcIDsKK+iClD55x5B8XCA7Civogpc+ZMeUfFwgOwor6IKfPnfDsnxcIDsKK+iCoz5ix5B8XCA7Civogqw+bsecfFwgOwor6IKtPm7DoHxcIDsKK+iCsz5xw618XCA7CivogrY+cMOtfFwgOwor6IK4PnjDrHxcIDsKK+iCuT5iw6x8XCA7Civog4g+YsOhfFwgOwor6IOJPmLDs3xcIDsKK+iDij5xw7p8XCA7Civog48+eseQfFwgOwor6IOQPmvFq3xcIDsKK+iDkj5mxat8XCA7Civog5Q+esOsfFwgOwor6IOVPmbDuXxcIDsKK+iDoD5xxat8XCA7Civog6I+a8STfFwgOwor6IOjPnnHkHxcIDsKK+iDqT5rx458XCA7Civog6w+bsO6fFwgOwor6IO3PsOgbnxcIDsKK+iDuT7DqXJ8XCA7Civog74+esOsfFwgOwor6ISOPnPDoHxcIDsKK+iEnz5sw6h8XCA7CivohKY+ZMSTfFwgOwor6ISoPmPDuXxcIDsKK+iEtD5wx5B8XCA7CivohLU+Z8eUfFwgOwor6IWSPmrFq3xcIDsKK+iFlz5ww618XCA7CivohZg+w6lyfFwgOwor6IWbPnfFq3xcIDsKK+iFoz5kw6x8XCA7CivohaQ+xIFufFwgOwor6IWvPnTDunxcIDsKK+iFtz5iw6x8XCA7Civohb0+d8OgfFwgOwor6IaDPnfDoHxcIDsKK+iGhj5zw7l8XCA7Civohok+ecOsfFwgOwor6IaMPmrDrXxcIDsKK+iGjT5ww618XCA7CivohpI+xY11fFwgOwor6IaUPmzDuXxcIDsKK+iGmj5mxat8XCA7Civohp8+bMecfFwgOwor6IaiPmzHmHxcIDsKK+iGqT5uw6x8XCA7CivohrI+aMWrfFwgOwor6Ia0PmjFq3xcIDsKK+iHiD5sw6B8XCA7Civoh4s+w6lyfFwgOwor6IeNPnHDrXxcIDsKK+iHkT5yw7p8XCA7Civoh5Y+bMeafFwgOwor6IeYPmzDoHxcIDsKK+iHmj5sw7p8XCA7Civoh54+ccO6fFwgOwor6IehPm7DrXxcIDsKK+iHpT53w7J8XCA7Civoh7U+Z8OpfFwgOwor6IiHPnnDunxcIDsKK+iIiT5qx5R8XCA7CivoiJY+cMO5fFwgOwor6IiXPnDFq3xcIDsKK+iIpT5wxIF8XCA7CivoiLQ+esOpfFwgOwor6Ii7PmzDunxcIDsKK+iJgD5mw7p8XCA7CivoiYM+bMOtfFwgOwor6ImFPm3DuXxcIDsKK+iJij5iw7N8XCA7CivoiY0+asWrfFwgOwor6ImXPnnDrHxcIDsKK+iJoz5sx5R8XCA7CivoiaQ+eceQfFwgOwor6ImpPnHDrXxcIDsKK+iJqj5sx5R8XCA7Civoias+bMO6fFwgOwor6Im7PmzDqHxcIDsKK+iKhT55w6x8XCA7Civoioc+bceQfFwgOwor6IqMPnjFq3xcIDsKK+iKjz5kw7l8XCA7CivoipA+aMO5fFwgOwor6IqRPnHHkHxcIDsKK+iKkz56x5B8XCA7Civoipg+cMOtfFwgOwor6IqePnHHkHxcIDsKK+iKpz54w7l8XCA7Civoiro+x45vfFwgOwor6IuFPnnDrHxcIDsKK+iLiD5sw6x8XCA7Civoi4k+cMeQfFwgOwor6IuQPnnDrXxcIDsKK+iLmT5sw6x8XCA7Civoi6I+cceUfFwgOwor6IupPmLDs3xcIDsKK+iLuD5oxat8XCA7Civoi7w+YsOzfFwgOwor6Iu9PmfFq3xcIDsKK+iLvj5iw6x8XCA7CivojIA+ZsO6fFwgOwor6IyHPmLDoXxcIDsKK+iMiD5jw618XCA7CivojIo+esSrfFwgOwor6IyLPmTHkHxcIDsKK+iMlj5nw6l8XCA7CivojJ8+ecO5fFwgOwor6IyjPnfDunxcIDsKK+iMpD5qw6x8XCA7CivojKY+Y8OofFwgOwor6IyuPmPEq3xcIDsKK+iMsD55w7p8XCA7CivojLI+esSrfFwgOwor6Iy3PmbDoXxcIDsKK+iNhT5kxIF8XCA7CivojYs+w6lyfFwgOwor6I2MPsOgbnxcIDsKK+iNmT5kw6F8XCA7CivojZ0+esOpfFwgOwor6I2wPmTDuXxcIDsKK+iNtD5mxat8XCA7Civojbk+YsO5fFwgOwor6I2+PnDDunxcIDsKK+iOgT53w7p8XCA7CivojoM+eMSrfFwgOwor6I6IPm3DsnxcIDsKK+iOiz5qw618XCA7Civojq8+bcO5fFwgOwor6I6/PmPDrHxcIDsKK+iPgj5kxKt8XCA7Civoj4g+bMSBfFwgOwor6I+JPmzDuXxcIDsKK+iPkD5ww7p8XCA7Civoj5E+esSrfFwgOwor6I+SPmLDs3xcIDsKK+iPnT5iw6F8XCA7Civoj54+bMOtfFwgOwor6I+lPnjEq3xcIDsKK+iPpz5kx5B8XCA7Civoj7M+x45ufFwgOwor6I+0PsSBbnxcIDsKK+iPtz55xat8XCA7CivokIA+aMeUfFwgOwor6JCGPmLDrHxcIDsKK+iQkj5qx5R8XCA7CivokJM+ecOtfFwgOwor6JCVPnHDrXxcIDsKK+iQlz5jw6h8XCA7CivokKo+a8STfFwgOwor6JCtPnnHlHxcIDsKK+iQrz5mw7l8XCA7CivokLM+Y8OofFwgOwor6JC0PnrDqXxcIDsKK+iQtT53xY18XCA7CivokLo+bMOgfFwgOwor6JC7PsSBbnxcIDsKK+iRhT5qxat8XCA7CivokYg+eMeQfFwgOwor6JGJPnnDqHxcIDsKK+iRij7EgW58XCA7CivokYs+ccO6fFwgOwor6JGNPmbDunxcIDsKK+iRjj5sx5x8XCA7CivokZY+dMO6fFwgOwor6JGePm3HkHxcIDsKK+iRpz5iw7N8XCA7Civokao+asOsfFwgOwor6JKYPm7DunxcIDsKK+iSmj5ow6l8XCA7Civokp4+bMOsfFwgOwor6JKfPmrHlHxcIDsKK+iSoD54w618XCA7CivokqM+eMO6fFwgOwor6JKkPnTDunxcIDsKK+iSpj53w7J8XCA7Civokqk+esWrfFwgOwor6JKqPnDDsnxcIDsKK+iSrj55w7l8XCA7CivokrA+YsOzfFwgOwor6JKxPnDDunxcIDsKK+iSsz5uw6B8XCA7CivokrU+eMSrfFwgOwor6JK9PsSTbnxcIDsKK+iSvj5tw618XCA7Civok4Y+eMOtfFwgOwor6JOHPmfHlHxcIDsKK+iTkj5iw6x8XCA7Civok5c+bMSBfFwgOwor6JObPmPDqHxcIDsKK+iToz55w7l8XCA7Civok60+xIFufFwgOwor6JO5PnnHlHxcIDsKK+iTuj55w6x8XCA7Civok7s+asOtfFwgOwor6JO9PmLDrHxcIDsKK+iTvj5sx5R8XCA7CivolIA+YsO5fFwgOwor6JSBPnjDrHxcIDsKK+iUhz5qw6x8XCA7CivolIs+ZMOtfFwgOwor6JSNPmzDuXxcIDsKK+iUkD5kw618XCA7CivolJQ+YsWNfFwgOwor6JSVPmTDrHxcIDsKK+iUmz5ow7p8XCA7CivolJw+w6FvfFwgOwor6JSdPm3HkHxcIDsKK+iUoD5jxIF8XCA7CivolKQ+bcOsfFwgOwor6JSwPmjDuXxcIDsKK+iUtD5tw6F8XCA7CivolL4+bMOtfFwgOwor6JWAPmrDrXxcIDsKK+iVgj5ixY18XCA7CivolYU+x5J1fFwgOwor6JWNPnnDunxcIDsKK+iVlz5sw7l8XCA7CivolZ8+ZsOgfFwgOwor6JWlPnnHjnxcIDsKK+iVpj54xat8XCA7Civolac+ZsO5fFwgOwor6JWqPnfDunxcIDsKK+iVrD5zxKt8XCA7Civola4+eMOsfFwgOwor6JW3PnnDuXxcIDsKK+iVuj5qw618XCA7CivoloE+ecO5fFwgOwor6JaCPnjDrXxcIDsKK+iWhj7DoGl8XCA7Civoloo+asOsfFwgOwor6JaLPmPEq3xcIDsKK+iWlj5rxJN8XCA7Civolpg+ZMOhfFwgOwor6JaZPnTDrHxcIDsKK+iWoz5nx5R8XCA7Civolqk+c8OgfFwgOwor6Ja2PmzDrXxcIDsKK+iWtz5yw7p8XCA7Civolro+asOsfFwgOwor6Ja+PsSbcnxcIDsKK+iWvz5ux5B8XCA7Civol4Q+ccOtfFwgOwor6JeFPmbDoXxcIDsKK+iXhz54w7l8XCA7Civol4g+asOtfFwgOwor6JeMPmzEgXxcIDsKK+iXlz5zw7l8XCA7Civol5g+bMeYfFwgOwor6JeZPnnDrHxcIDsKK+iXmj54w7l8XCA7Civol50+ecOsfFwgOwor6JeePmzHjnxcIDsKK+iXoT5kw618XCA7Civol6Y+bcOzfFwgOwor6Je2PmzDrHxcIDsKK+iXuT7Hjml8XCA7CivomIE+d8O5fFwgOwor6JiCPmrEq3xcIDsKK+iYhD5xw618XCA7CivomIY+bMO6fFwgOwor6JiHPnPFq3xcIDsKK+iYjj5qw6x8XCA7CivomJM+c8WrfFwgOwor6JiZPnnDrHxcIDsKK+iYmz55w7p8XCA7CivomJw+asO6fFwgOwor6JilPnHDuXxcIDsKK+iYqj5tw618XCA7CivomK4+asOsfFwgOwor6Ji6PmzDrXxcIDsKK+iYuz5qw6x8XCA7CivomYA+asSrfFwgOwor6JmCPmzDuXxcIDsKK+iZiT55w6x8XCA7CivomZI+c8SrfFwgOwor6JmWPmjFq3xcIDsKK+iZlz5xxat8XCA7CivomZk+ZsO6fFwgOwor6JmbPnjFq3xcIDsKK+iZnD5sx5R8XCA7CivomZ0+aMeUfFwgOwor6JmhPmrDuXxcIDsKK+iZqT54w6x8XCA7CivombM+ZMOsfFwgOwor6JqGPnDEgXxcIDsKK+iakT5xw618XCA7CivompQ+ccOtfFwgOwor6JqaPnHDrXxcIDsKK+ianj5tw7l8XCA7CivomqU+ZseUfFwgOwor6JqtPm7DrXxcIDsKK+iarj50w6h8XCA7Civomrc+asO5fFwgOwor6Jq4PmzDrHxcIDsKK+iauT5mw7l8XCA7Civomr0+cMOtfFwgOwor6Jq+PmLHknxcIDsKK+ibjD5nx5R8XCA7Civom5I+Z8OpfFwgOwor6JuTPmPDrHxcIDsKK+iblz5mw7l8XCA7Civom5w+ecSrfFwgOwor6JugPmzDrHxcIDsKK+iboT55w6x8XCA7Civom6Y+ecOtfFwgOwor6JuoPm3DsnxcIDsKK+ichT5mx5R8XCA7CivonIw+YsOsfFwgOwor6JybPmrFq3xcIDsKK+icnT5xw618XCA7CivonJ8+ecO5fFwgOwor6JykPnPEq3xcIDsKK+icpz5sw6x8XCA7CivonLE+cMOtfFwgOwor6Jy2PnPDuXxcIDsKK+icuj5uw618XCA7CivonYM+ZMOsfFwgOwor6J2LPmzDoHxcIDsKK+idjT5qw618XCA7CivonZE+bMOsfFwgOwor6J2TPnnDunxcIDsKK+idnD5mw7l8XCA7Civona0+dMOtfFwgOwor6J2yPmzDoHxcIDsKK+idsz5kw7p8XCA7Civonbk+w6FufFwgOwor6J26PmrHlHxcIDsKK+iehD5zxKt8XCA7CivonoY+Y8OsfFwgOwor6J6HPnjEq3xcIDsKK+iejz5qw618XCA7CivonpA+d8WrfFwgOwor6J6UPnnDrXxcIDsKK+ielT5ixKt8XCA7Civonpg+eceQfFwgOwor6J6ZPmTDuXxcIDsKK+iemz5ow6l8XCA7Civonpw+aMO6fFwgOwor6J6ePm3EgXxcIDsKK+ieoD55w6x8XCA7Civonq4+ZMOsfFwgOwor6J6wPmzDuXxcIDsKK+ietz5ww618XCA7Civon4U+bcOyfFwgOwor6J+HPm3DoXxcIDsKK+ifjT5sw618XCA7Civon5Q+bcOyfFwgOwor6J+WPnPEq3xcIDsKK+ifmD50w6h8XCA7Civon50+ccO6fFwgOwor6J+iPnjHkHxcIDsKK+ifoz5qx5B8XCA7Civon7A+bMOtfFwgOwor6J+0PnPEq3xcIDsKK+ifuD5sx5B8XCA7Civon7s+eceQfFwgOwor6J+8PmrDrHxcIDsKK+ifvT5kw6F8XCA7Civon78+ccOsfFwgOwor6KCAPmPEq3xcIDsKK+ighz5sw6x8XCA7CivooIg+esOpfFwgOwor6KCMPnrDqXxcIDsKK+igjz5yw7p8XCA7CivooJA+ccOtfFwgOwor6KCaPmjEk3xcIDsKK+ignz5sw6B8XCA7CivooKA+bcOsfFwgOwor6KCjPmzDrHxcIDsKK+igpj5sw7p8XCA7CivooKc+ZMO5fFwgOwor6KCrPmzDrHxcIDsKK+igrj55xJN8XCA7CivooLE+Z8eUfFwgOwor6KC1PnjEq3xcIDsKK+igtz5xw7p8XCA7CivooYc+bcOyfFwgOwor6KGIPsSbcnxcIDsKK+ihiz54w6x8XCA7CivooZo+aMO6fFwgOwor6KGnPnnDunxcIDsKK+ihqj55x5B8XCA7Civooa0+ZsWrfFwgOwor6KG1Pm7DrHxcIDsKK+ihuT5xw618XCA7CivoopA+YsOsfFwgOwor6KKTPmrHlHxcIDsKK+iilD5ow6h8XCA7Civoopg+ecOtfFwgOwor6KKZPm3DsnxcIDsKK+iimj5mw7p8XCA7Civoops+ZMSrfFwgOwor6KKmPm7DoHxcIDsKK+iiqT5iw6x8XCA7Civooqo+ccWrfFwgOwor6KKvPmLDs3xcIDsKK+iisj55w618XCA7Civoork+bcOyfFwgOwor6KK7PsOpcnxcIDsKK+iivT5yw7p8XCA7Civoo5M+Z8OpfFwgOwor6KOaPmrDrHxcIDsKK+ijmz55w6x8XCA7Civoo5w+YseUfFwgOwor6KOhPmzHkHxcIDsKK+ijuz5kx5R8XCA7CivopIA+asOsfFwgOwor6KSFPnTDrHxcIDsKK+ikhj50w618XCA7CivopIc+ZsO5fFwgOwor6KSUPmbDuXxcIDsKK+iklT55w7p8XCA7CivopJ8+ZMOhfFwgOwor6KSyPmvDuXxcIDsKK+iktT5sw618XCA7CivopLg+bMeafFwgOwor6KS5PnnDrHxcIDsKK+ilgD5qxKt8XCA7CivopYY+cMO6fFwgOwor6KWLPmrDrXxcIDsKK+iljT56w6F8XCA7CivopY8+YsOzfFwgOwor6KWWPseOb3xcIDsKK+iloz5iw618XCA7CivopaU+cMO6fFwgOwor6KWmPnLDunxcIDsKK+ilqj53w6B8XCA7Civopa4+YsOzfFwgOwor6KWyPnjDrXxcIDsKK+ilvD55w6x8XCA7Civopb4+ecOgfFwgOwor6KaAPnjEq3xcIDsKK+imhz5iw6B8XCA7Civopog+aMOpfFwgOwor6KaJPmrEq3xcIDsKK+imij5qxKt8XCA7CivoppM+bcOsfFwgOwor6KaUPm3DrHxcIDsKK+imlz5zxKt8XCA7Civopps+bcOsfFwgOwor6KahPnjDrXxcIDsKK+impD54w6x8XCA7CivopqY+ecO6fFwgOwor6KapPmTHlHxcIDsKK+imrD5qw6x8XCA7CivoprA+ccO5fFwgOwor6Ka3PnHDuXxcIDsKK+imvj5qw618XCA7Civopr8+ZMOtfFwgOwor6KeVPmPFq3xcIDsKK+inmT5qw618XCA7Civop50+ZMeQfFwgOwor6KehPmfDqXxcIDsKK+inrD5uw618XCA7Civop60+asSrfFwgOwor6KeuPmzDuXxcIDsKK+insD5kx458XCA7Civop7E+YsOsfFwgOwor6Ke5PnjEq3xcIDsKK+inuz5sw7l8XCA7Civop70+eMSrfFwgOwor6Ke/PnjEq3xcIDsKK+iogz5mw7l8XCA7CivoqIg+asOsfFwgOwor6KiPPnjFq3xcIDsKK+iokT55w618XCA7CivoqJY+ccOsfFwgOwor6KiYPmrDrHxcIDsKK+ionT55w6B8XCA7CivoqKU+bsOofFwgOwor6KixPnjHlHxcIDsKK+iosj5jxKt8XCA7CivoqLM+ecOsfFwgOwor6Ki0PnPDuXxcIDsKK+iotj5oxJN8XCA7CivoqLg+aMOpfFwgOwor6Ki5PnjDuXxcIDsKK+iovz56xKt8XCA7CivoqYE+Z8eUfFwgOwor6KmCPmbDuXxcIDsKK+iphj5kx5B8XCA7CivoqY0+ecOsfFwgOwor6KmOPmrDuXxcIDsKK+ipjz7DoG98XCA7CivoqZI+ecOtfFwgOwor6KmTPnHHlHxcIDsKK+iplj5iw6x8XCA7CivoqZg+ccWrfFwgOwor6KmZPmLDoXxcIDsKK+ipmj5kw6F8XCA7CivoqZs+eseUfFwgOwor6KmePmPDrXxcIDsKK+ipoT54x5R8XCA7CivoqaM+ecOsfFwgOwor6KmlPmjDqXxcIDsKK+ipuD5tw618XCA7CivoqoA+w6hyfFwgOwor6KqIPnfDunxcIDsKK+iqiz5qw6x8XCA7Civoqo4+c8O5fFwgOwor6KqSPsSBaXxcIDsKK+iqlj5iw7N8XCA7Civoqp0+xIFufFwgOwor6KqePnnHlHxcIDsKK+iqnz53xat8XCA7CivoqqM+d8WrfFwgOwor6KqkPnfDuXxcIDsKK+iqpz5wx5R8XCA7Civoqq0+ZMO6fFwgOwor6KqyPmvDqHxcIDsKK+iqsz5xxat8XCA7Civoqrs+dMOgfFwgOwor6Kq8PnnDrHxcIDsKK+iqvT5uw6F8XCA7Civoq4A+cMeQfFwgOwor6KuFPmrEq3xcIDsKK+irhj5xxKt8XCA7Civoq4o+asO6fFwgOwor6KuOPnrDqXxcIDsKK+irmz55w7p8XCA7Civoq50+eMeUfFwgOwor6KumPmTDrHxcIDsKK+irqD5mw7p8XCA7Civoq6k+cMeUfFwgOwor6KusPnHHkHxcIDsKK+irrT55w7l8XCA7Civoq64+esSrfFwgOwor6KuwPnjHkHxcIDsKK+irsz7EgW58XCA7Civoq70+Z8OpfFwgOwor6Ku/PnHDrHxcIDsKK+isgT55w6h8XCA7CivorIg+YsOzfFwgOwor6KyMPmfEk3xcIDsKK+isjj5tw618XCA7CivorJA+bcOsfFwgOwor6KyRPnjDrHxcIDsKK+islj5zw7l8XCA7CivorKM+ecO6fFwgOwor6KynPmzDrXxcIDsKK+isqD5tw7N8XCA7CivorKk+bcOyfFwgOwor6KyuPnrDqXxcIDsKK+issz7FjXV8XCA7CivorLQ+w6BvfFwgOwor6Ky1PnjDrXxcIDsKK+istz7DoW98XCA7CivorLg+w6FvfFwgOwor6Ky7PnnDrXxcIDsKK+isvD5oxat8XCA7CivorYM+eMWrfFwgOwor6K2FPnPDqHxcIDsKK+ithj54xKt8XCA7CivorY8+asSrfFwgOwor6K2SPmLDsnxcIDsKK+itlT5tw7p8XCA7CivorZw+cMeUfFwgOwor6K2kPmrEq3xcIDsKK+itqj7DoGl8XCA7Civora8+ecOsfFwgOwor6K2wPnnDrHxcIDsKK+ittj50w6B8XCA7Civorbc+aMO5fFwgOwor6K29PnnDuXxcIDsKK+iugD5kw7p8XCA7Civorog+bMOsfFwgOwor6K6JPnnDrXxcIDsKK+iumz55w6x8XCA7Civorp8+ZMO6fFwgOwor6K+QPmLDrHxcIDsKK+iwnj54xat8XCA7CivosLg+ccSrfFwgOwor6LC/PnHEq3xcIDsKK+ixgD54xKt8XCA7CivosYQ+ZMO6fFwgOwor6LGIPnHHkHxcIDsKK+ixjT5ixKt8XCA7CivosZk+ecOsfFwgOwor6LGdPmLEgXxcIDsKK+ixoD5jw7p8XCA7CivosaY+ccO6fFwgOwor6LGnPmbFq3xcIDsKK+ixqD54xKt8XCA7Civosa8+eMSrfFwgOwor6LGwPmLDs3xcIDsKK+ixtD5kw618XCA7Civosbc+ecOsfFwgOwor6LG7PsOgbnxcIDsKK+ixvT5uw6B8XCA7Civosb4+cMSrfFwgOwor6LKAPm7DoHxcIDsKK+iygz5tw7J8XCA7CivosoQ+c8OsfFwgOwor6LKIPmjDqXxcIDsKK+iyjT5sw618XCA7Civoso4+bsOtfFwgOwor6LKPPmLHkHxcIDsKK+iykD55x5R8XCA7CivospU+eMSrfFwgOwor6LKXPmrDuXxcIDsKK+iymD5tw7J8XCA7CivosqA+ZsO5fFwgOwor6LKjPnTDqHxcIDsKK+iypD55w618XCA7Civosqw+esOpfFwgOwor6LKuPsOocnxcIDsKK+iysT5iw6x8XCA7CivosrI+esSrfFwgOwor6LKzPsOocnxcIDsKK+iyuT5iw6x8XCA7Civosr0+ecOtfFwgOwor6LOAPmjDqHxcIDsKK+izgj5sw7l8XCA7Civos4c+esSrfFwgOwor6LOIPmfHlHxcIDsKK+iziT54w7l8XCA7Civos5w+Y8OsfFwgOwor6LOmPmbDuXxcIDsKK+izqz5qxKt8XCA7Civos60+ZMeUfFwgOwor6LOwPnHDrXxcIDsKK+iztz5qxKt8XCA7Civos7k+w6BpfFwgOwor6LO7PmbDuXxcIDsKK+izvj56w6l8XCA7CivotJQ+YsOsfFwgOwor6LSVPmTDunxcIDsKK+i1kT5iw6x8XCA7CivotZk+ZsO5fFwgOwor6LWlPnjDrHxcIDsKK+i1sj5sw6x8XCA7Civotbw+Y8SrfFwgOwor6LaGPmTEq3xcIDsKK+i2hz5zw6h8XCA7Civotpc+Y8O5fFwgOwor6LaYPnjDrXxcIDsKK+i2nD5qw7p8XCA7CivotqI+bMO5fFwgOwor6LamPnrEq3xcIDsKK+i2pz50w618XCA7Civotqg+ccWrfFwgOwor6LavPnTDrHxcIDsKK+i2tz5rxJN8XCA7Civot4E+cMOhfFwgOwor6LeCPnHDrXxcIDsKK+i3hz55w6x8XCA7Civot5A+Y8eQfFwgOwor6LeUPmrFq3xcIDsKK+i3mT5qx5R8XCA7Civot54+bMOsfFwgOwor6LegPnnDrXxcIDsKK+i3oT5qxKt8XCA7Civot7Y+dMOgfFwgOwor6Le8PmrDunxcIDsKK+i3vz50w7p8XCA7CivouIQ+YsOzfFwgOwor6LiRPnHDrXxcIDsKK+i4lj5qw618XCA7CivouJg+asO6fFwgOwor6LibPmzDuXxcIDsKK+i4pD5jw7l8XCA7CivouKU+asSrfFwgOwor6LimPmrHkHxcIDsKK+i4pz5jw7l8XCA7CivouLA+ecO6fFwgOwor6Li2PmTDrHxcIDsKK+i4vj5mw7p8XCA7CivouL8+esO6fFwgOwor6LmDPmTDrHxcIDsKK+i5jz50w618XCA7CivouZA+asOtfFwgOwor6LmVPmLDrHxcIDsKK+i5lz5sw7l8XCA7CivouZw+c8O5fFwgOwor6LmdPnjHkHxcIDsKK+i5nz5qxKt8XCA7CivouaI+ZMOtfFwgOwor6LmrPmrDunxcIDsKK+i5sz5ixY18XCA7CivoubU+Y8O5fFwgOwor6Lm5PnTDoHxcIDsKK+i5vT5kxIF8XCA7CivouoI+dMOgfFwgOwor6LqDPmLDrHxcIDsKK+i6hD5iw6x8XCA7Civouos+asSrfFwgOwor6LqMPnfHlHxcIDsKK+i6kj5sw6x8XCA7CivouqI+dMOgfFwgOwor6LqjPnHDunxcIDsKK+i6sD50x5B8XCA7Civourc+x45pfFwgOwor6Lq4PmrEq3xcIDsKK+i6uT5qw7p8XCA7Civou4A+ccWrfFwgOwor6LuEPmrFq3xcIDsKK+i7hj50x5B8XCA7Civou4k+ecO5fFwgOwor6LuLPnnDoHxcIDsKK+i7nD5uw6B8XCA7Civou50+ccOtfFwgOwor6LukPmjFq3xcIDsKK+i7pT5xw7p8XCA7Civou6c+ZMeQfFwgOwor6LuqPsSBb3xcIDsKK+i7rz5mx5R8XCA7Civou7E+Z8WrfFwgOwor6LuyPmvFq3xcIDsKK+i7tz5iw6F8XCA7Civou7s+a8STfFwgOwor6Lu8PnnDrHxcIDsKK+i8gD7DqXJ8XCA7CivovII+asO6fFwgOwor6LyFPmzDuXxcIDsKK+i8jT55w7l8XCA7CivovJQ+ZseUfFwgOwor6LyXPm7DrXxcIDsKK+i8nD56xKt8XCA7CivovKI+eceQfFwgOwor6LyvPmrDrXxcIDsKK+i8tT5nw6l8XCA7CivovLk+ZsO5fFwgOwor6Ly6PnrEq3xcIDsKK+i8uz5mw7p8XCA7CivovL8+ecO6fFwgOwor6L2CPmfFq3xcIDsKK+i9gz5ow6l8XCA7CivovYY+bMO5fFwgOwor6L2QPnDDunxcIDsKK+i9lT5nw6l8XCA7CivovZY+c8OofFwgOwor6L2aPmrDrXxcIDsKK+i9nD7DqXJ8XCA7CivovZ0+ecO6fFwgOwor6L2iPmzDrHxcIDsKK+i9oz5sw6x8XCA7CivovaQ+bMO6fFwgOwor6L2qPmTDrHxcIDsKK+i9tz5oxat8XCA7Civovp0+Y8OtfFwgOwor6L6iPmzDoHxcIDsKK+i+pD5jw618XCA7Civovq0+Y8OtfFwgOwor6L+DPnnDrXxcIDsKK+i/hj55x5B8XCA7Civov4k+ccOtfFwgOwor6L+KPnrEgXxcIDsKK+i/jz5qw6x8XCA7Civov5Y+ZMOhfFwgOwor6L+hPm7DrHxcIDsKK+i/uz55w618XCA7CivpgJM+ZMOsfFwgOwor6YCcPnfDuXxcIDsKK+mAsz55w7l8XCA7CivpgLc+dMOsfFwgOwor6YC5PmTDoXxcIDsKK+mBhj50w618XCA7CivpgZQ+ZMOhfFwgOwor6YGdPnTDoHxcIDsKK+mBnj5kw6x8XCA7Civpgao+Y8OofFwgOwor6YGrPnPDuXxcIDsKK+mBrD5zw7l8XCA7CivpgbA+ZMOsfFwgOwor6YG5PnnDuXxcIDsKK+mBuj55w618XCA7Civpgbs+d8O5fFwgOwor6YKHPsSbcnxcIDsKK+mCjD5sw618XCA7CivpgpA+bMeQfFwgOwor6YKSPmrDrHxcIDsKK+mClD5xx5B8XCA7Civpgpg+ecO6fFwgOwor6YKaPnLDunxcIDsKK+mCnj5mxat8XCA7Civpgq0+asO5fFwgOwor6YKyPmLDrHxcIDsKK+mCtz53x458XCA7Civpg4A+a8WrfFwgOwor6YODPmjDqXxcIDsKK+mDiz54w618XCA7Civpg5g+bMeafFwgOwor6YOZPmbHlHxcIDsKK+mDmj53w7p8XCA7Civpg6M+YsOzfFwgOwor6YOkPnjDrHxcIDsKK+mDqT5jxKt8XCA7Civpg6o+ccSrfFwgOwor6YOzPm7DrXxcIDsKK+mDtj5iw7l8XCA7Civpg7k+asO6fFwgOwor6YO8PnnEq3xcIDsKK+mEgz55w7p8XCA7CivphIU+eceUfFwgOwor6YSKPnLHlHxcIDsKK+mEjj54w6x8XCA7CivphI8+csO5fFwgOwor6YSRPnrEq3xcIDsKK+mEkz5qw7p8XCA7CivphJQ+d8WrfFwgOwor6YSaPm3DsnxcIDsKK+mEnD5mxat8XCA7CivphKA+aMO5fFwgOwor6YSmPnjHlHxcIDsKK+mEqD5iw6x8XCA7CivphKo+YsOsfFwgOwor6YS0PnnDqHxcIDsKK+mEvz5xw618XCA7CivphYU+eMSrfFwgOwor6YWIPmzDrHxcIDsKK+mFjz55w618XCA7CivphZE+eceUfFwgOwor6YWmPnDDsnxcIDsKK+mFtD50w7p8XCA7Civphbo+cMO6fFwgOwor6YW+PnjHkHxcIDsKK+mGgT5sw7l8XCA7Civpho8+ZMWrfFwgOwor6YaRPnjHlHxcIDsKK+mGlz5ww7J8XCA7Civphpg+a8OofFwgOwor6YanPnnDuXxcIDsKK+mGqD5sw618XCA7Civphqs+ecSrfFwgOwor6YatPmLDunxcIDsKK+mGsT5ww7J8XCA7CivphrM+ecOsfFwgOwor6Ya3PnnDrHxcIDsKK+mGuT5yw7p8XCA7Civphr4+bcOtfFwgOwor6Ya/Pm3DrXxcIDsKK+mHgz54x5B8XCA7Civph5A+bMOtfFwgOwor6YeSPmfDoXxcIDsKK+mHkz5nw6F8XCA7Civph5Q+eceQfFwgOwor6YeZPnDFjXxcIDsKK+mHmz5ow6l8XCA7Civph58+YsSBfFwgOwor6YehPmbHlHxcIDsKK+mHqD56x5B8XCA7Civph7A+csOsfFwgOwor6YexPmTDrHxcIDsKK+mHsz54w6x8XCA7Civph7Q+ecOsfFwgOwor6Ye3PnTHlHxcIDsKK+mHuD54w6x8XCA7Civph7k+bseafFwgOwor6Ye9PnDEq3xcIDsKK+mIgD5ix458XCA7CivpiIc+ZsWrfFwgOwor6YiIPmLDuXxcIDsKK+mIiT5uw6B8XCA7CivpiJI+asOtfFwgOwor6YiYPmrHkHxcIDsKK+mImj5ww618XCA7CivpiKA+ecOsfFwgOwor6YikPnLDrHxcIDsKK+mIrT56xKt8XCA7CivpiK4+bsOtfFwgOwor6YivPmvEk3xcIDsKK+mIsj5nxat8XCA7CivpiLM+a8STfFwgOwor6Yi2PnnDrXxcIDsKK+mItz5nx5R8XCA7CivpiLg+YsOzfFwgOwor6Yi5PnDDrXxcIDsKK+mIuj55w7l8XCA7CivpiLs+c8OsfFwgOwor6Yi9PmLDuXxcIDsKK+mJhT5qw7l8XCA7CivpiYg+dMSBfFwgOwor6YmMPmjDqXxcIDsKK+mJjT5iw6x8XCA7CivpiY4+aseUfFwgOwor6YmQPnDHknxcIDsKK+mJkT5iw7N8XCA7CivpiZQ+esSBfFwgOwor6YmVPnDFjXxcIDsKK+mJlj7EgW58XCA7CivpiZg+ZsO6fFwgOwor6YmcPmbDunxcIDsKK+mJnT5sw6x8XCA7CivpiaI+YsWNfFwgOwor6YmnPm3HlHxcIDsKK+mJqD5ux5B8XCA7Civpiao+ZMOsfFwgOwor6YmsPm3DuXxcIDsKK+mJrz7Em3J8XCA7CivpibA+c8SrfFwgOwor6YmyPmvHjnxcIDsKK+mJuj7Em3J8XCA7Civpibs+Z8OofFwgOwor6Ym/PmjEgXxcIDsKK+mKhj5tw7J8XCA7Civpiog+asSrfFwgOwor6YqJPnnDuXxcIDsKK+mKij54w7l8XCA7CivpipQ+cMSrfFwgOwor6YqhPmrDrXxcIDsKK+mKoj5wx5B8XCA7CivpiqM+csO6fFwgOwor6YqkPm3HkHxcIDsKK+mKpT55xKt8XCA7Civpiqg+x45ufFwgOwor6YqrPnPDqHxcIDsKK+mKsD7EgWl8XCA7Civpirs+dMSrfFwgOwor6YuBPmzHmnxcIDsKK+mLiT5zw7l8XCA7Civpi4o+ecO5fFwgOwor6YuNPmLDs3xcIDsKK+mLlj5zxKt8XCA7Civpi5g+d8O6fFwgOwor6YuZPnfDunxcIDsKK+mLpj5qxat8XCA7Civpi6o+cMWrfFwgOwor6YuwPmzHkHxcIDsKK+mLsT50w6h8XCA7Civpi7U+dMWrfFwgOwor6Yu4PmrFq3xcIDsKK+mMgT5rw6h8XCA7CivpjII+ZsO6fFwgOwor6YyEPmzDuXxcIDsKK+mMhT5sw618XCA7CivpjIw+w6BufFwgOwor6YyNPnDDrXxcIDsKK+mMjj5rxJN8XCA7CivpjI8+ecOgfFwgOwor6YyUPnTDoHxcIDsKK+mMlj5kx5R8XCA7CivpjJk+esSrfFwgOwor6YyhPnHDrXxcIDsKK+mMpD5qxKt8XCA7CivpjKU+dMOsfFwgOwor6YyrPnjDrXxcIDsKK+mMrj5nw7l8XCA7CivpjLA+bMecfFwgOwor6YyyPmzDuXxcIDsKK+mMtD5sw7l8XCA7CivpjLc+Z8OhfFwgOwor6Y2APmTDqXxcIDsKK+mNiT5kxKt8XCA7CivpjY0+ZMO5fFwgOwor6Y2OPnTDunxcIDsKK+mNkT5mw7l8XCA7CivpjZM+asOtfFwgOwor6Y2XPnTDrXxcIDsKK+mNoj5mw7l8XCA7CivpjbE+ecOofFwgOwor6Y22PnPEq3xcIDsKK+mNtz5kx5R8XCA7Civpjbg+aMO6fFwgOwor6Y2/PnrEq3xcIDsKK+mOgT55w6l8XCA7CivpjoQ+xIFpfFwgOwor6Y6JPnTDoHxcIDsKK+mOjj54w6x8XCA7CivpjpA+esO6fFwgOwor6Y6YPmfDqXxcIDsKK+mOmT5kxIF8XCA7Civpjps+YsOzfFwgOwor6Y6dPnPDoHxcIDsKK+mOnj5ixKt8XCA7CivpjqE+esSrfFwgOwor6Y6iPnfFq3xcIDsKK+mOsD55w6x8XCA7CivpjrQ+eMOtfFwgOwor6Y62PmfEk3xcIDsKK+mOtz5tx458XCA7Civpjr8+bsOhfFwgOwor6Y+APmzHlHxcIDsKK+mPgj7FjXV8XCA7Civpj4M+esO6fFwgOwor6Y+JPsOgb3xcIDsKK+mPiz5kxKt8XCA7Civpj4w+bcOyfFwgOwor6Y+OPmLDrHxcIDsKK+mPkT5kxKt8XCA7Civpj5U+bMO5fFwgOwor6Y+aPnHDrHxcIDsKK+mPqz5sw618XCA7Civpj60+eMSrfFwgOwor6Y+0PmzDuXxcIDsKK+mPtj5qw618XCA7Civpj7c+cMO6fFwgOwor6Y+6PnDFjXxcIDsKK+mQlj5qxKt8XCA7CivpkJo+ecOgfFwgOwor6ZCfPnTDrHxcIDsKK+mQoD5wx5R8XCA7CivpkKo+bMeUfFwgOwor6ZCtPnnDuXxcIDsKK+mQtD5iw6x8XCA7CivpkLc+ecOofFwgOwor6ZC7PmrDuXxcIDsKK+mQvT5iw6x8XCA7CivpkL8+ecOsfFwgOwor6ZGAPsOgaXxcIDsKK+mRhz5qxKt8XCA7CivpkYk+dMOgfFwgOwor6ZGQPnjFq3xcIDsKK+mRlz5sw618XCA7CivpkZk+asSrfFwgOwor6ZGePmzDoHxcIDsKK+mRnz5kw7p8XCA7CivpkaI+bMecfFwgOwor6ZGlPmzHlHxcIDsKK+mRqj5sw7p8XCA7Civpka4+YsOzfFwgOwor6ZG0PnjEq3xcIDsKK+mRuj5xw7p8XCA7CivpkoQ+Z8OhfFwgOwor6ZKRPmrDrXxcIDsKK+mSlj54w618XCA7Civpkrc+cMWNfFwgOwor6ZOUPnnDoHxcIDsKK+mTmD55w6l8XCA7Civpk68+c8OofFwgOwor6ZO7PnfDunxcIDsKK+mTvT50w6h8XCA7CivplJw+ccOtfFwgOwor6ZSdPmTDqXxcIDsKK+mUvz7EgWl8XCA7CivplYM+esSrfFwgOwor6ZWIPmLDs3xcIDsKK+mVpT5sx5R8XCA7CivplbQ+bMOgfFwgOwor6ZW4PsOgb3xcIDsKK+mVuj7Hjm98XCA7Civplbw+ccWrfFwgOwor6ZW+Pm3DrXxcIDsKK+mWgT5tw6B8XCA7Civploc+YsOsfFwgOwor6ZaJPmLDrHxcIDsKK+mWnT7DoGl8XCA7Civplp8+YsOsfFwgOwor6ZahPmjDqXxcIDsKK+mWoz5nw6l8XCA7CivplqQ+Z8OpfFwgOwor6ZalPmbDoXxcIDsKK+mWrT5sx5h8XCA7CivplrA+asO6fFwgOwor6Za0PnHDuXxcIDsKK+mWvj55w7l8XCA7Civpl4M+ccO5fFwgOwor6ZeHPsOgbnxcIDsKK+mXjT5kxat8XCA7Civpl5I+dMOgfFwgOwor6ZeUPmjDqXxcIDsKK+mXmT5xx5B8XCA7Civpl58+c8OgfFwgOwor6ZeiPmLDrHxcIDsKK+mXpT50w6B8XCA7CivpmIc+ZMWrfFwgOwor6ZiYPnTDoHxcIDsKK+mYnj5sw6h8XCA7CivpmKM+eceQfFwgOwor6ZilPsSBbnxcIDsKK+mYpj7DoGl8XCA7CivpmLA+cMOtfFwgOwor6Zi5PnHFq3xcIDsKK+mYuj5kx5B8XCA7CivpmZE+w6lyfFwgOwor6ZmTPnnFq3xcIDsKK+mZmj5mw7l8XCA7CivpmaA+cMWrfFwgOwor6ZmtPnHEq3xcIDsKK+mZrj7EgW58XCA7CivpmbE+asWrfFwgOwor6Zm0PnDDrXxcIDsKK+mZuD5sw7l8XCA7CivpmoA+xIFufFwgOwor6ZqDPnnDunxcIDsKK+mahD5kxKt8XCA7Civpmow+x45ufFwgOwor6ZqSPmrEq3xcIDsKK+mamz5qw6x8XCA7Civpmp4+w6FvfFwgOwor6ZqfPnjDrHxcIDsKK+mapj5wx5B8XCA7Civpmqk+ecO5fFwgOwor6ZqsPm7HkHxcIDsKK+marT7DqXJ8XCA7Civpmq4+asSrfFwgOwor6Zq1PnjEq3xcIDsKK+mauD5sw6x8XCA7Civpmro+aMOofFwgOwor6ZuDPnnHjnxcIDsKK+mbkD5oxat8XCA7Civpm5E+esOhfFwgOwor6ZuTPnnDunxcIDsKK+mbnD56w6F8XCA7Civpm54+asSrfFwgOwor6ZufPnjEq3xcIDsKK+mboj5sw618XCA7Civpm6U+esOhfFwgOwor6ZumPmrDrXxcIDsKK+mbpz5qw618XCA7Civpm6s+bseOfFwgOwor6ZutPnPDqHxcIDsKK+mbrj5tw7l8XCA7Civpm7Q+bMOsfFwgOwor6Zu4PsOhbnxcIDsKK+mcgj5tw7l8XCA7CivpnIs+ccSrfFwgOwor6ZyaPnfDuXxcIDsKK+mcoT5tw7J8XCA7CivpnKI+bcOyfFwgOwor6ZynPnfDuXxcIDsKK+mcqz54w618XCA7CivpnKw+ecOsfFwgOwor6ZyxPnnDuXxcIDsKK+mctT5qw618XCA7CivpnLc+cMOyfFwgOwor6Zy8PnjHkHxcIDsKK+mcvT5qw6x8XCA7CivpnYI+bMOsfFwgOwor6Z2EPseOaXxcIDsKK+mdiT7DoGl8XCA7CivpnYs+bMOsfFwgOwor6Z2OPmjDqHxcIDsKK+mdjz5ow6h8XCA7Civpnag+ecOofFwgOwor6Z2uPmTDrXxcIDsKK+mdrz5kw7l8XCA7CivpnbA+d8O5fFwgOwor6Z24PnPHjnxcIDsKK+mduT5uw6B8XCA7Civpnbo+bcOyfFwgOwor6Z27PnrHlHxcIDsKK+mdvj55w6x8XCA7Civpnoc+Z8OpfFwgOwor6Z6KPmrDrXxcIDsKK+mejD7EgW58XCA7Civpnpw+dMOgfFwgOwor6Z6fPmrFq3xcIDsKK+mepT55w6x8XCA7Civpnqg+aMOpfFwgOwor6Z6qPm3DuXxcIDsKK+meqz5qxat8XCA7Civpnq4+ZMSrfFwgOwor6Z6zPnTDoHxcIDsKK+metT5sx5p8XCA7Civpnrc+Z8OpfFwgOwor6Z64PmLDrHxcIDsKK+mevz5qxKt8XCA7Civpn4M+ZMOhfFwgOwor6Z+EPmjDuXxcIDsKK+mfhz5kw7p8XCA7Civpn4g+d8OgfFwgOwor6Z+NPmbDunxcIDsKK+mfkD5nw6l8XCA7Civpn5o+Z8OpfFwgOwor6Z+gPmLDrHxcIDsKK+mfoz5kw7p8XCA7Civpn6Q+d8OgfFwgOwor6Z+lPmTDunxcIDsKK+mfqD5mw7p8XCA7Civpn7I+asSrfFwgOwor6Z+0PsSBbnxcIDsKK+mftz5sw6h8XCA7CivpoIA+aMO5fFwgOwor6aCBPnnDqHxcIDsKK+mgiD54xat8XCA7CivpoIk+ecOtfFwgOwor6aCKPnjDuXxcIDsKK+mgiz5nw7l8XCA7CivpoI4+ccOtfFwgOwor6aCQPnnDuXxcIDsKK+mglD5kw618XCA7CivpoJc+cMeSfFwgOwor6aCZPmPDqHxcIDsKK+mgnD5ow6l8XCA7CivpoKQ+ecOtfFwgOwor6aCmPmvEk3xcIDsKK+mgqz5mx5R8XCA7CivpoLE+bMOofFwgOwor6aC8PmvEm3xcIDsKK+mgvj56xKt8XCA7CivpoL8+esSrfFwgOwor6aGGPmvEk3xcIDsKK+mhij5kw6x8XCA7CivpoYw+dMOtfFwgOwor6aGXPnnHkHxcIDsKK+mhnT5rxat8XCA7CivpoaM+Y8O5fFwgOwor6aGnPmfDuXxcIDsKK+mhsT5sw7p8XCA7Civpoqs+ZsO6fFwgOwor6aKvPnPDoHxcIDsKK+misD5iw6F8XCA7CivporY+asO5fFwgOwor6aK3PmLEq3xcIDsKK+miuD5zxKt8XCA7Civpo4E+eMOtfFwgOwor6aOLPnPDqHxcIDsKK+mjjz5zw6x8XCA7Civpo5Q+c8SrfFwgOwor6aOiPmrEq3xcIDsKK+mjpD5zw6x8XCA7Civpo6s+ecO5fFwgOwor6aOzPnPDrHxcIDsKK+mjtD55w618XCA7Civpo7Y+YsOsfFwgOwor6aO6PmPDrXxcIDsKK+mjvD5zw6x8XCA7CivppIQ+aMOpfFwgOwor6aSIPmPDrXxcIDsKK+mkjD7Em3J8XCA7CivppI4+bGV8XCA7CivppI8+ecSrfFwgOwor6aSRPmLFjXxcIDsKK+mklD5ixat8XCA7CivppJc+c8O5fFwgOwor6aSYPnnDunxcIDsKK+mkoj5iw7l8XCA7CivppKM+ecOofFwgOwor6aSsPmjDunxcIDsKK+mksj5ow6l8XCA7CivppLY+Z8eUfFwgOwor6aS6PmLDs3xcIDsKK+mkvD54w6x8XCA7CivppYE+ecOofFwgOwor6aWDPm3Ds3xcIDsKK+mlhj5iw6x8XCA7CivppYc+ecO5fFwgOwor6aWQPnnDrHxcIDsKK+mlkT5qxKt8XCA7CivppZ0+bcOzfFwgOwor6aWpPnjDrHxcIDsKK+mluT5ixY18XCA7Civppbs+ecSrfFwgOwor6aaJPmfHlHxcIDsKK+mmjD55w6h8XCA7Civppo4+YsOzfFwgOwor6aabPmLDoXxcIDsKK+mmnD5ux5B8XCA7Civppp0+YsOsfFwgOwor6aaePmLDs3xcIDsKK+mmnz50w7p8XCA7CivppqQ+x45pfFwgOwor6aasPm3HjnxcIDsKK+mmrT55w7l8XCA7Civpprk+csOsfFwgOwor6aa6PnPDoHxcIDsKK+mmvz5sx5h8XCA7Civpp4E+YsOzfFwgOwor6aeEPnDHknxcIDsKK+mnhT55w6x8XCA7Civpp4Y+ccWrfFwgOwor6aeIPnHFq3xcIDsKK+mnij5ix5J8XCA7Civpp48+asO5fFwgOwor6aeRPm7DunxcIDsKK+mnkj5qxat8XCA7Civpp5M+cMSrfFwgOwor6aeZPmbDuXxcIDsKK+mnnD5iw6x8XCA7Civpp58+c8OsfFwgOwor6aehPm3DoHxcIDsKK+mnrD7Em3J8XCA7Civpp64+YsOzfFwgOwor6ae2PmrDunxcIDsKK+mnvD50w7p8XCA7CivpqIM+w6FpfFwgOwor6aiEPmzDuXxcIDsKK+moiD5qw6x8XCA7CivpqI0+a8OofFwgOwor6aiOPnHDrXxcIDsKK+mojz5xw618XCA7CivpqJY+d8O5fFwgOwor6aigPnTDrXxcIDsKK+mopj5zxKt8XCA7CivpqLE+eMSrfFwgOwor6aizPmTDunxcIDsKK+mouT5sw618XCA7CivpqLw+bMO5fFwgOwor6ai9PnjDrXxcIDsKK+mpgD5tw7J8XCA7CivpqYE+w6BvfFwgOwor6amFPnHFq3xcIDsKK+mphj5iw6x8XCA7CivpqYg+ecO5fFwgOwor6amJPnjFq3xcIDsKK+mpiz5ixY18XCA7CivpqYw+c8O5fFwgOwor6ambPnnDrHxcIDsKK+mpnD55w6h8XCA7CivpqaI+bMeYfFwgOwor6amlPmrDrHxcIDsKK+mppz5qw7p8XCA7Civpqag+eMSrfFwgOwor6amqPmzDrXxcIDsKK+mpsj5yw6x8XCA7CivpqpU+c8O5fFwgOwor6aqsPnnDunxcIDsKK+mqrj55w6x8XCA7CivpqrM+YsOsfFwgOwor6aq1PnTEq3xcIDsKK+mrgT5rxJN8XCA7Civpq4Y+YsOzfFwgOwor6auJPmLFjXxcIDsKK+mrij5jxKt8XCA7Civpq40+bcOzfFwgOwor6auUPnTHkHxcIDsKK+mrlz5sw7p8XCA7Civpq6A+ZMOtfFwgOwor6auiPnTDrHxcIDsKK+mrqj5mw6B8XCA7Civpq64+ZsOgfFwgOwor6auwPnTDrHxcIDsKK+mrsj5wxKt8XCA7Civpq7Q+ZsO6fFwgOwor6au1PsOpcnxcIDsKK+mrtz5xxat8XCA7CivprIA+ZMOtfFwgOwor6ayBPmzDrHxcIDsKK+mshD50w6x8XCA7CivprI0+aMO6fFwgOwor6ayOPmzDoHxcIDsKK+mskD5xw618XCA7CivprJU+bcOyfFwgOwor6ayaPnjFq3xcIDsKK+msqT5ow6h8XCA7CivprLA+ecO5fFwgOwor6ayxPnnDuXxcIDsKK+mstD5mx5R8XCA7CivprL4+asOsfFwgOwor6ay/PnHDrXxcIDsKK+mthj54w7l8XCA7CivprYo+ecO5fFwgOwor6a2MPnHEq3xcIDsKK+mtkz5iw6x8XCA7CivprZU+aseQfFwgOwor6a2WPnjFq3xcIDsKK+mtmj55w7p8XCA7CivprZ0+asOsfFwgOwor6a2iPmrHkHxcIDsKK+mtoz54w7l8XCA7Civprak+bcOyfFwgOwor6a2uPmLDrXxcIDsKK+mtrz5sx5R8XCA7CivprbE+aMO6fFwgOwor6a2yPmzDunxcIDsKK+mtsz56w6F8XCA7CivprbY+bsOgfFwgOwor6a26PmjDqXxcIDsKK+mtvD5xxat8XCA7Civprb4+cMOtfFwgOwor6a2/PmLDoHxcIDsKK+mugT5ixY18XCA7CivproI+YsOgfFwgOwor6a6EPmbDunxcIDsKK+muhT5iw6x8XCA7CivproY+asOsfFwgOwor6a6IPmrFq3xcIDsKK+muij5iw7N8XCA7Civpros+cMOtfFwgOwor6a6NPnDEq3xcIDsKK+mukj5mw7l8XCA7CivprpQ+asO5fFwgOwor6a6VPmfFq3xcIDsKK+mumT50w6B8XCA7Civprp4+w6lyfFwgOwor6a6fPsOgbnxcIDsKK+mupz50w618XCA7Civprqg+ccOtfFwgOwor6a6sPmLDuXxcIDsKK+murz5nw6l8XCA7Civprrc+dMOtfFwgOwor6a66PnrHjnxcIDsKK+muvT55w7p8XCA7Civpr4I+c8WrfFwgOwor6a+DPnfDunxcIDsKK+mvhj5mx5R8XCA7Civpr4k+bMeQfFwgOwor6a+TPm7DrXxcIDsKK+mvlD56xKt8XCA7Civpr5U+ccOtfFwgOwor6a+aPmrDrHxcIDsKK+mvnT5nw7l8XCA7Civpr6I+bsOtfFwgOwor6a+jPnnDrHxcIDsKK+mvpT5sw7l8XCA7Civpr6w+bMOtfFwgOwor6a+7PmzDoHxcIDsKK+mvvT5qw6x8XCA7CivpsII+esOpfFwgOwor6bCFPnnDunxcIDsKK+mwjz5iw6x8XCA7CivpsJI+ZsO5fFwgOwor6bCXPmjDunxcIDsKK+mwnj53xat8XCA7CivpsKI+bceOfFwgOwor6bCoPnTDoHxcIDsKK+mwqj5nw6l8XCA7CivpsK0+ccOtfFwgOwor6bCyPsOhb3xcIDsKK+mwsz5sw6h8XCA7CivpsLY+asOsfFwgOwor6bC4PnHFq3xcIDsKK+mwvD54w618XCA7CivpsL8+asSrfFwgOwor6bGAPmrDrHxcIDsKK+mxiz5xxat8XCA7CivpsY0+YsWNfFwgOwor6bGQPnPDuXxcIDsKK+mxmj54x5B8XCA7Civpsac+bMeQfFwgOwor6bGsPnLDunxcIDsKK+mxrT5qw6x8XCA7Civpsa4+eMO5fFwgOwor6bGxPmzHkHxcIDsKK+mxsz5sw6x8XCA7Civpsbg+bMO6fFwgOwor6bG6PmzDrXxcIDsKK+mxuz5iw6B8XCA7Civpsb4+aseQfFwgOwor6bKDPmLEgXxcIDsKK+myhD5iw6B8XCA7Civpsos+YsOgfFwgOwor6bKMPmLDs3xcIDsKK+myjz5wxKt8XCA7CivpspU+w6lyfFwgOwor6bKaPmrDrHxcIDsKK+myrz5xw618XCA7Civpsrk+YsSrfFwgOwor6bK+PmLDrHxcIDsKK+mzkz5sw6h8XCA7Civps5s+eMOtfFwgOwor6bOgPmjDuXxcIDsKK+mzoj5sx5B8XCA7Civps6Y+eceQfFwgOwor6bOnPmbDunxcIDsKK+mzqD5sw6x8XCA7Civps6o+YseUfFwgOwor6bOsPmbDunxcIDsKK+mzuD5ow7l8XCA7Civps7o+ZsWrfFwgOwor6bO/PnnDuXxcIDsKK+m0hD5wxKt8XCA7CivptIk+ecSBfFwgOwor6bSOPsWNdXxcIDsKK+m0jz50w6h8XCA7CivptJE+bsO6fFwgOwor6bSUPmbDunxcIDsKK+m0lz5sw6x8XCA7CivptJo+Z8STfFwgOwor6bScPnrEq3xcIDsKK+m0nT5xw7p8XCA7CivptKE+asWrfFwgOwor6bSjPmfFq3xcIDsKK+m0pT55w7l8XCA7CivptKg+ecSBfFwgOwor6bSuPnfFq3xcIDsKK+m0rz7DqXJ8XCA7CivptLE+w6BpfFwgOwor6bS2PmrDrXxcIDsKK+m0uj55w618XCA7CivptL0+csO6fFwgOwor6bS/PmfEk3xcIDsKK+m1iz5qw6x8XCA7CivptYw+ecO6fFwgOwor6bWNPmLHlHxcIDsKK+m1jz5ixat8XCA7CivptZI+ecO5fFwgOwor6bWTPmLDs3xcIDsKK+m1lT5ixKt8XCA7CivptZY+YsOsfFwgOwor6bWXPnTEq3xcIDsKK+m1mT5qw7p8XCA7CivptZo+dMO6fFwgOwor6bWcPnTDrXxcIDsKK+m1oD5nx5R8XCA7CivptaE+d8eUfFwgOwor6bWpPmbDunxcIDsKK+m1qj7EgW58XCA7CivptbE+bMO5fFwgOwor6bW0PmrDunxcIDsKK+m1tT50w7l8XCA7CivptbY+ecSBfFwgOwor6bW4PnHDrXxcIDsKK+m1uT5sw618XCA7Civptbo+ecOofFwgOwor6baAPnHDrXxcIDsKK+m2gj55w6x8XCA7CivptoM+ecOsfFwgOwor6baFPnrEq3xcIDsKK+m2iD5xxKt8XCA7Civptos+asWrfFwgOwor6baMPnHFq3xcIDsKK+m2jz5qxKt8XCA7CivptpU+xIFufFwgOwor6baXPnTDrXxcIDsKK+m2mD5ow7p8XCA7Civptpk+dMOtfFwgOwor6badPmbDunxcIDsKK+m2nz50w7p8XCA7CivptqE+aMOpfFwgOwor6bamPmjDunxcIDsKK+m2qT53w7l8XCA7Civptqo+asO6fFwgOwor6bauPmfDuXxcIDsKK+m2tD5ow6h8XCA7Civptro+asOtfFwgOwor6ba7PmjDunxcIDsKK+m2vj5jw618XCA7Civptr8+esSrfFwgOwor6beAPmPDrXxcIDsKK+m3gT5uw6x8XCA7Civpt4Q+asSrfFwgOwor6beFPmzDrHxcIDsKK+m3iD50xKt8XCA7Civpt4k+dMSrfFwgOwor6beKPm7DrHxcIDsKK+m3iz50w7p8XCA7Civpt4w+bceOfFwgOwor6beRPmzDrHxcIDsKK+m3lD7DoW98XCA7Civpt5Y+ecSrfFwgOwor6beXPsWNdXxcIDsKK+m3nT5iw6x8XCA7Civpt6A+ecO6fFwgOwor6behPnfDunxcIDsKK+m3pT5zxKt8XCA7Civpt6c+ecOsfFwgOwor6bepPmLDrHxcIDsKK+m3qz5zw7l8XCA7Civpt7U+dMO6fFwgOwor6be4PnnDuXxcIDsKK+m3uj5sw7l8XCA7Civpt74+ecOsfFwgOwor6be/PnDDrHxcIDsKK+m4gj5xxKt8XCA7CivpuIM+YsOsfFwgOwor6biEPmrDrXxcIDsKK+m4hj55w7p8XCA7CivpuIg+ecOofFwgOwor6biKPnDDrHxcIDsKK+m4iz5ow7l8XCA7CivpuI0+bcOtfFwgOwor6biQPmTDrXxcIDsKK+m4kj55w7p8XCA7CivpuJU+bMO6fFwgOwor6biWPmjDqHxcIDsKK+m4nT5sw618XCA7CivpuLI+ccO6fFwgOwor6bmAPnfDunxcIDsKK+m5gT5iw7N8XCA7CivpuYY+ecO5fFwgOwor6bmUPnPDuXxcIDsKK+m5lj5ow6l8XCA7CivpuZk+Y8OtfFwgOwor6bmdPm7DrHxcIDsKK+m5oT5qw618XCA7CivpuaI+bsOsfFwgOwor6bmjPmjDuXxcIDsKK+m5pT55xKt8XCA7CivpubU+bMeUfFwgOwor6bqBPmPFq3xcIDsKK+m6hD5jxat8XCA7Civpuoo+bcOtfFwgOwor6bqMPnfDunxcIDsKK+m6kT5uw618XCA7Civpupc+bMOsfFwgOwor6bqYPmjDqXxcIDsKK+m6mz5tw618XCA7Civpupw+bMOsfFwgOwor6bqhPmrEq3xcIDsKK+m6pD5jxat8XCA7Civpuqc+Z8STfFwgOwor6bqpPmbFq3xcIDsKK+m6rD5mxat8XCA7Civpuq4+ccO5fFwgOwor6bqvPnHDunxcIDsKK+m6sT5mxat8XCA7Civpurk+ccO6fFwgOwor6bq8Pm3EgXxcIDsKK+m7kz55w6x8XCA7Civpu5Y+eMOsfFwgOwor6buZPm3DsnxcIDsKK+m7nz55xKt8XCA7Civpu6Y+ecO5fFwgOwor6busPsOgbnxcIDsKK+m7sz55xKt8XCA7Civpu7c+ZMO6fFwgOwor6bu4PmzDunxcIDsKK+m8gD5jw7l8XCA7CivpvIE+ccO5fFwgOwor6byHPsOhb3xcIDsKK+m8ij5iw6x8XCA7CivpvI8+bcOsfFwgOwor6bySPnrEq3xcIDsKK+m8lD5nx5R8XCA7CivpvJw+ccOsfFwgOwor6bylPmLDoXxcIDsKK+m8qT5xw7p8XCA7CivpvLM+asO6fFwgOwor6by1PnTDunxcIDsKK+m8tj5zxKt8XCA7CivpvLc+eMSrfFwgOwor6by/PnfFq3xcIDsKK+m9gD53w7l8XCA7CivpvYM+Z8OpfFwgOwor6b2EPmrEq3xcIDsKK+m9ij5xw618XCA7CivpvYw+asOsfFwgOwor6b2NPnHDrXxcIDsKK+m9jj5qxKt8XCA7CivpvY8+asSrfFwgOwor6b2VPmjDqXxcIDsKK+m9lj55w6F8XCA7CivpvZw+esSrfFwgOwor6b2fPmrHlHxcIDsKK+m9rD55x5R8XCA7Civpva4+eceQfFwgOwor6b2vPm7DrXxcIDsKK+m9sj5xx5R8XCA7CivpvbU+w7N1fFwgOwor6b23PnfDsnxcIDsKK+m9uD55w6x8XCA7Civpvb4+ecOgfFwgOwor6b6BPmjDqXxcIDsKK+m+jj5rw6h8XCA7Civpvpg+dMOgfFwgOwor6b6iPmjDqXxcIDsKK+m+pT55w7l8XCA7CivwoICAPmjEgXxcIDsKK/CggIE+ccSrfFwgOwor8KCBpT5nx458XCA7CivwoLy7PmrEq3xcIDsKK/ChnLE+asOsfFwgOwor8KWcjD7Hjm98XCA7CivpmL8+xIF8XCA7CivllYo+xIF8XCA7CivmgbY+w6h8XCA7Civpop0+w6l8XCA7Civkv4Q+w6l8XCA7Civppb8+w6h8XCA7Civlk6Y+xY18XCA7CivpuYU+w6l8XCA7CivlqKU+w6l8XCA7CivlmaI+xY18XCA7Civls6g+w6l8XCA7Civps4Q+w6h8XCA7CivmhJU+w6h8XCA7CivpgY8+w6h8XCA7CivljoQ+w6h8XCA7Civmibw+w6h8XCA7CivokLw+w6h8XCA7Civlmak+w6h8XCA7CivphII+w6h8XCA7Civom74+w6l8XCA7Civorrk+w6l8XCA7CivlkYM+w6h8XCA7CivpuZc+w6h8XCA7CivlqYA+xJN8XCA7Civpopo+w6h8XCA7CivlsZk+xJN8XCA7Civova0+w6h8XCA7CivosJQ+w6h8XCA7Civlnqk+w6h8XCA7Civoha0+w6h8XCA7CivpmI8+w6h8XCA7Civojqo+w6l8XCA7CivomrU+w6l8XCA7CivjkLs+xYh8XCA7Civjk7U+w6h8XCA7CivjlKk+w6h8XCA7CivjlY4+w6h8XCA7Civjlr4+w6h8XCA7Civjl4E+w6h8XCA7Civjn6c+w6h8XCA7CivjoIs+w6h8XCA7CivjoYs+w6h8XCA7Civjpo0+w6h8XCA7Civjp5Y+w6h8XCA7CivjqbU+w6h8XCA7Civjrpk+w6h8XCA7CivjsaY+w6h8XCA7Civjt4g+w6h8XCA7CivjvII+w6l8XCA7CivjvKI+xJt8XCA7CivjvLA+w6l8XCA7CivkhIk+w6l8XCA7CivkhpM+w6h8XCA7CivkkaU+w6h8XCA7Civkkao+w6h8XCA7Civkk4o+w6h8XCA7CivklL4+w6h8XCA7CivklY8+w6l8XCA7Civklrg+w6l8XCA7CivkmbM+w6h8XCA7Civkm5Y+w6h8XCA7CivknYg+w6h8XCA7Civknqk+w6h8XCA7Civko54+w6h8XCA7Civkqbk+w6l8XCA7Civkq7c+w6h8XCA7Civksa4+w6l8XCA7Civks5c+w6l8XCA7Civks5g+w6l8XCA7Civks6w+w6h8XCA7CivlgZQ+w6h8XCA7Civlg6s+w6h8XCA7Civljb4+w6h8XCA7CivlkJY+xIF8XCA7CivlkKo+w6l8XCA7CivlkZ0+w6h8XCA7CivlkaM+4bi/fFwgOwor5ZKiPsOofFwgOwor5ZK5PsOofFwgOwor5ZmBPsSbfFwgOwor5ZuuPsOpfFwgOwor5ZyUPsOofFwgOwor5aCKPsOofFwgOwor5aCoPsOofFwgOwor5aCuPsOofFwgOwor5aa4PsSTfFwgOwor5aa/PsSTfFwgOwor5ai/PsSTfFwgOwor5amQPsSTfFwgOwor5bKLPsOofFwgOwor5bOJPsSTfFwgOwor5bOpPsOpfFwgOwor5bS/PsOofFwgOwor5batPsOofFwgOwor5oKqPsOofFwgOwor5oOhPsOofFwgOwor5oi5PsOofFwgOwor5pCkPsOofFwgOwor5pC5PsOofFwgOwor5p6ZPsOofFwgOwor5quuPsOofFwgOwor5raQPsOpfFwgOwor5rmCPsOofFwgOwor54yUPsSTfFwgOwor542/PsSbfFwgOwor54+0PsOpfFwgOwor55CnPsOofFwgOwor55e+PsSTfFwgOwor55qSPsOpfFwgOwor552LPsOpfFwgOwor56CQPsOofFwgOwor56GGPsOofFwgOwor56GqPsOpfFwgOwor56OAPsOpfFwgOwor6IuKPsOofFwgOwor6JWaPsOofFwgOwor6JqFPsOofFwgOwor6J2BPsOofFwgOwor6KaoPsOofFwgOwor6KibPsOpfFwgOwor6Km7PsOofFwgOwor6KqQPsOpfFwgOwor6KukPsOofFwgOwor6K2MPsOpfFwgOwor6K6NPsOofFwgOwor6LGfPsOofFwgOwor6LKWPsOofFwgOwor6LubPsOofFwgOwor6Lu2PsOofFwgOwor6L+XPsOpfFwgOwor6YGMPsOofFwgOwor6YiLPsOpfFwgOwor6YunPsOpfFwgOwor6YuoPsOpfFwgOwor6YySPsSBfFwgOwor6Y2UPsOofFwgOwor6ZGpPsOofFwgOwor6ZK2PsSTfFwgOwor6ZSVPsSBfFwgOwor6Za8PsOofFwgOwor6ZioPsOofFwgOwor6Zi4PsOofFwgOwor6Zi+PseOfFwgOwor6aCePsOofFwgOwor6aCfPsOpfFwgOwor6aGNPsOpfFwgOwor6aGOPsOofFwgOwor6aSTPsOofFwgOwor6aSpPsOofFwgOwor6aiAPsOpfFwgOwor6a2lPsOofFwgOwor6bCQPsOofFwgOwor6bG3PsOofFwgOwor6bWdPsOpfFwgOwor6bWePsOpfFwgOwor6baaPsOofFwgOwor6b2CPsOofFwgOwor6b22PsOofFwgOwor44CCIDw+ICcuJzsKKyMgRW5kIFJBVyBkYXRhIGZvciBjb252ZXJ0aW5nIENKSyBjaGFyYWN0ZXJzCisKKyMgZmFsbGJhY2tzCisKKyMjIHwgeWkgPCBpOworIyMgfCB3dSA8IHU7CisjIyB8IGJpIDwgYjsKKyMjIHwgY2kgPCBjOworIyMgfCBkaSA8IGQ7CisjIyB8IGZ1IDwgZjsKKyMjIHwgZ3UgPCBnOworIyMgfCBoZSA8IGg7CisjIyB8IGppIDwgajsKKyMjIHwga3UgPCBrOworIyMgfCBsaSA8IGw7CisjIyB8IG1pIDwgbTsKKyMjIHwgcGkgPCBwOworIyMgfCBxaSA8IHE7CisjIyB8IGwgPCByOworIyMgfCBzaSA8IHM7CisjIyB8IHRpIDwgdDsKKyMjIHwgZiA8IHY7CisjIyB8IHdhIDwgdzsKKyMjIHwgeGkgPCB4OworIyMgfCB5aSA8IHk7CisjIyB8IHppIDwgejsKKworIyBmaWx0ZXIgb3V0IHRoZSBoYWxmLXdpZHRoIGhhbmd1bAorOjogW15cdUZGQkUtXHVGRkVFXSBmdWxsd2lkdGgtaGFsZndpZHRoICgpOworIyMgOjogKGxvd2VyKSA7CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL1RyYW5zbGl0ZXJhdG9yX0hhbl9MYXRpbl9EZWZpbml0aW9uLnR4dCBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfSGFuX0xhdGluX0RlZmluaXRpb24udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkMzk5YWYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL1RyYW5zbGl0ZXJhdG9yX0hhbl9MYXRpbl9EZWZpbml0aW9uLnR4dApAQCAtMCwwICsxLDU1ODAyIEBACivvu78jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ29weXJpZ2h0IChjKSAxOTk5LTIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyMgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL1RyYW5zbGl0ZXJhdG9yX0hhbl9MYXRpbl9EZWZpbml0aW9uLnR4dCx2ICQKKyMgJERhdGU6IDIwMDIvMDcvMTQgMjE6NTk6MTUgJAorIyAkUmV2aXNpb246IDEuMiAkCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ29udmVydCBDSksgY2hhcmFjdGVycywgYWNjb3JkaW5nIHRvIHRoZSBkZWZpbnRpb25zIGluIENFRElDVCBhbmQgVW5paGFuLnR4dAorIyBOb3RlOiBhZGRzIHNwYWNlIGJldHdlZW4gdGhlbSBhbmQgbGV0dGVycy4KK3sgKFs6SGFuOl0pIH0gWzpMOl0gPiB8ICQxICcgJzsKK1tcLlwsXD9cIe+8ju+8jO+8n++8geOAgeOAgls6UGU6XVs6UGY6XV0geyB9IFs6TDpdID4gJyAnOworWzpMOl0geyB9IFtbOkhhbjpdWzpQczpdWzpQaTpdXT4gJyAnOworCivorormlocgPCBhXC1wb3B1bGFyXC1mb3JtXC1vZlwtbmFycmF0aXZlXC1saXRlcmF0dXJlXC1mbG91cmlzaGluZ1wtaW5cLXRoZVwtdGFuZ1wtZHluYXN0eVwtXCg2MThcLTkwN1wpXC13aXRoXC1hbHRlcm5hdGVcLXByb3NlXC1hbmRcLXJoeW1lZFwtcGFydHNcLWZvclwtcmVjaXRhdGlvblwtYW5kXC1zaW5naW5nXC1cKG9mdGVuXC1vblwtYnVkZGhpc3RpY1wtdGhlbWVzXCk7CivpgorluaMgPCBib3JkZXJcLXJlZ2lvblwtY3VycmVuY3lcLVwoY29uc2lzdGluZ1wtb2ZcLXRoZVwtY3VycmVuY3lcLW5vdGVzXC1pc3N1ZWRcLWJ5XC10aGVcLWJvcmRlclwtcmVnaW9uXC1nb3Zlcm5tZW50c1wtZHVyaW5nXC10aGVcLXdhclwtb2ZcLXJlc2lzdGFuY2VcLWFnYWluc3RcLWphcGFuXC1hbmRcLXRoZVwtd2FyXC1vZlwtbGliZXJhdGlvblwpOwor55u06YCa6LuKIDwgXCJ0aHJvdWdoXC10cmFpblwiXC1cKHJlZmVyc1wtdG9cLXRoZVwtaWRlYVwtb2ZcLXJldGFpbmluZ1wtcHJldmlvdXNcLWxlZ2lzbGF0dXJlXC1hZnRlclwtdHJhbnNpdGlvblwtdG9cLWNoaW5lc2VcLXJ1bGVcLWluXC1ob25nXC1rb25nXC1vclwtbWFjYXVcKTsKK+Wwj+iHn+msvCA8IGRpcnR5XC1saXR0bGVcLW1vbnN0ZXJcLVwoc3Bva2VuXC1hZmZlY3Rpb25hdGVseVwtdG9cLWFcLWNoaWxkXC13aG9cLWhhc1wtZ290dGVuXC1oaW1cKGhlclwpc2VsZlwtZGlydHlcO1wtbGl0ZXJhbGx5XC1cImxpdHRsZVwtZGlydHlcLWdob3N0XCJcKTsKK+auuumbnue1pueMtOeciyA8IFwia2lsbFwtYVwtY2hpY2tlblwtaW5cLWZyb250XC1vZlwtYVwtbW9ua2V5XCJcLVwtXC1cLW1ha2VcLWFuXC1leGFtcGxlXC1vdXRcLW9mXC1zb21lb25lXC1cKGJ5XC1wdW5pc2hpbmdcLXRoZW1cKVwtdG9cLWZyaWdodGVuXC1vdGhlcnM7CivmirHolqrmlZHngasgPCBjYXJyeVwtZmFnZ290c1wtdG9cLXB1dFwtb3V0XC1hXC1maXJlXC1cLVwtYWRvcHRcLWFcLXdyb25nXC1tZXRob2RcLXRvXC1zYXZlXC1hXC1zaXR1YXRpb25cLWFuZFwtZW5kXC11cFwtYnlcLW1ha2luZ1wtaXRcLXdvcnNlOwor5LiN6KaL5qO65p2Q5LiN6JC95reaIDwgbm90XC1zaGVkXC1hXC10ZWFyXC11bnRpbFwtb25lXC1zZWVzXC10aGVcLWNvZmZpblwtXC1cLXJlZnVzZVwtdG9cLWJlXC1jb252aW5jZWRcLXVudGlsXC1vbmVcLWlzXC1mYWNlZFwtd2l0aFwtZ3JpbVwtcmVhbGl0eTsKK+WQjOacnyA8IHRoZVwtY29ycmVzcG9uZGluZ1wtdGltZVwtcGVyaW9kXC1cKGVnXCxcLWNvbXBhcmVcLWluZmxhdGlvblwtbm93XC13aXRoXC10aGVcLXJhdGVcLWR1cmluZ1wtdGhlXC1zYW1lXC1tb250aFwtbGFzdFwteWVhclwpOwor46GOIDwgdGhlXC1sb25nXC1iYW5kc1wtb3JcLXJpYmJvbnNcLWF0dHJhY2hlZFwtdG9cLWZsYWdzXC1hbmRcLWJhbm5lcnNcLXRoZVwtZmVhdGhlclwtZGVjb3JlY3RlZFwtY2FycmlhZ2VzXC1vclwtZHJlc3NlczsKK+mDryA8IG5hbWVcLW9mXC1hXC1zbWFsbFwtYW5jaWVudFwtcHJpbmNpcGFsaXR5XC13aGljaFwtd2FzXC1zaXR1YXRlZFwtaW5cLXdoYXRcLWlzXC1ub3dcLXBhcnRcLW9mXC1zaGFudHVuZ1wtYW5kXC1raWFuZ3N1Owor5p2v5rC06LuK6JaqIDwgdHJ5aW5nXC10b1wtcHV0XC1vdXRcLWFcLWJ1cm5pbmdcLWNhcnRsb2FkXC1vZlwtZmFnZ290c1wtd2l0aFwtYVwtY3VwXC1vZlwtd2F0ZXJcLVwtXC1hblwtdXR0ZXJseVwtaW5hZGVxdWF0ZVwtbWVhc3VyZTsKK+SQniA8IHRoZVwtdGhpblwtbWVtYnJhbmVcLWJldHdlZW5cLXNraW5cLWFuZFwtZmxlc2hcLXRoYXRcLXByb3RlY3RzXC1pbnRlcm5hbFwtb3JnYW5zXC1vclwtdGlzc3Vlc1wtaW5cLXRoZVwtaHVtYW5cLWJvZHk7CivlgY/lgY8gPCBcKGluZGljYXRlc1wtdGhhdFwtc3RoXC5cLXR1cm5zXC1vdXRcLWp1c3RcLXRoZVwtb3Bwb3NpdGVcLW9mXC13aGF0XC1vbmVcLXdvdWxkXC1leHBlY3RcLW9yXC13aGF0XC13b3VsZFwtYmVcLW5vcm1hbFwpOwor5pWs56WdIDwgdG9cLXJlc3BlY3RmdWxseVwtb2ZmZXJcLVwod3JpdHRlblwtYXRcLXRoZVwtZW5kXC1vZlwtbGV0dGVyXC1mcm9tXC1zb21lb25lXC1vZlwtbG93ZXJcLXN0YXR1c1wtdG9cLWhpZ2hlclwtc3RhdHVzXCk7CivljZzovq0gPCBvcmFjbGVcLWluc2NyaXB0aW9uc1wtb2ZcLXRoZVwtc2hhbmdcLWR5bmFzdHlcLVwoMTZ0aFwtMTF0aFwtY2VudHVyeVwtYmNcKVwtb25cLXRvcnRvaXNlc2hlbGxzXC1vclwtYW5pbWFsXC1ib25lczsKK+eXheaApeS6guaKlemGqyA8IHR1cm5cLXRvXC1hbnlcLWRvY3Rvclwtb25lXC1jYW5cLWZpbmRcLXdoZW5cLWNyaXRpY2FsbHlcLWlsbFwtXC1cLXRyeVwtYW55dGhpbmdcLXdoZW5cLWluXC1hXC1kZXNwZXJhdGVcLXNpdHVhdGlvbjsKK+i+r+iovOaWveayuyA8IGRpYWdub3Npc1wtYW5kXC10cmVhdG1lbnRcLWJhc2VkXC1vblwtYW5cLW92ZXJhbGxcLWFuYWx5c2lzXC1vZlwtdGhlXC1pbGxuZXNzXC1hbmRcLXRoZVwtcGF0aWVudCcnc1wtY29uZGl0aW9uOwor54+qIDwgYVwtamFkZVwtdGFibGVcLWNvbmZlcnJlZFwtdXBvblwtZmV1ZGFsXC1wcmluY2VzXC1ieVwtdGhlXC1lbXBlcm9yXC1hc1wtYVwtc3ltYm9sXC1vZlwtZGlnbml0eVwtYW5kXC1hdXRob3JpdHk7CivmlZ3luJroh6rnj40gPCB2YWx1ZVwtb25lJydzXC1vd25cLW9sZFwtYnJvb21cLVwtXC1jaGVyaXNoXC1zb21ldGhpbmdcLW9mXC1saXR0bGVcLXZhbHVlXC1zaW1wbHlcLWJlY2F1c2VcLWl0XC1pc1wtb25lJydzXC1vd247CivkuI3nn6XlpKnpq5jlnLDljpogPCBub3RcLWtub3dcLXRoZVwtaW1tZW5zaXR5XC1vZlwtaGVhdmVuXC1hbmRcLWVhcnRoXC1cLVwtaGF2ZVwtYW5cLWV4YWdnZXJhdGVkXC1vcGluaW9uXC1vZlwtb25lJydzXC1hYmlsaXRpZXM7CivjurogPCBhXC12ZXJ5XC1wcmVjaW91c1wtcGllY2VcLW9mXC1qYWRlXC13b3JuXC1ieVwtYW5jaWVudFwtZW1wZXJvcnNcLXRvXC1tYXRjaFwtdGFibGVzXC1ib3JuZVwtYnlcLXRoZVwtbm9ibGVzOwor5ICYIDwgdG9cLWNvdmVyXC10aGVcLWxpbmVcLW9mXC12aXNpb25cLW9yXC1zaWdodFwtXC1cLXRoZVwtc3RyYWlnaHRcLWxpbmVcLWJldHdlZW5cLWFuXC1vYmplY3RcLWFuZFwtb25lJydzXC1leWVzOwor5YW15LiN6KGA5YiDIDwgdGhlXC1lZGdlc1wtb2ZcLXRoZVwtc3dvcmRzXC1ub3RcLWJlaW5nXC1zdGFpbmVkXC13aXRoXC1ibG9vZFwtXC1cLXdpblwtdmljdG9yeVwtd2l0aG91dFwtZmlyaW5nXC1hXC1zaG90Owor46inIDwgd29vZGVuXC1zdGlja1wtb3JcLWJhbWJvb1wtY2FuZVwtdXNlZFwtdG9cLXN1cHBvcnRcLXRoZVwtY292ZXJpbmdcLW9mXC1hXC1jYXJyaWFnZVwtaW5cLWFuY2llbnRcLXRpbWVzOwor45SjIDwgaW5cLWFuY2llbnRcLXRpbWVzXC10b1wtZmlnaHRcLWFnYWluc3RcLXRoZVwtZW5lbXlcLWJ5XC1wdXNoaW5nXC1kb3duXC10aGVcLWJpZ1wtcm9ja3NcLWZyb21cLXVwXC1oaWdoOwor5rSb5b63IDwgXCh3aW5zdG9uXClcLWxvcmRcLVwoZm9ybWVyXC1hc3Npc3RhbnRcLXNlY3JldGFyeVwtb2ZcLXN0YXRlXC1mb3JcLWVhc3RcLWFzaWFcLWFuZFwtcGFjaWZpY1wtYWZmYWlyc1wpOwor5LiN5Yiw6buD5rKz5b+D5LiN5q27IDwgbm90XC1zdG9wXC11bnRpbFwtb25lXC1yZWFjaGVzXC10aGVcLWh1YW5naGVcLXJpdmVyXC1cLVwtbm90XC1zdG9wXC11bnRpbFwtb25lXC1yZWFjaGVzXC1vbmUnJ3NcLWdvYWw7CivlvbflvqggPCBuYW1lXC1vZlwtYVwtY29sbGVjdGlvblwtb2ZcLXNob3J0XC1zdG9yaWVzXCxcLXBhbmdcLWh1YW5nXCxcLVwid2FuZGVyaW5nXC1hYm91dFwiXCxcLWJ5XC1sdTNcLXh1bjRcLemtr+i/hTsKK+SaqyA8IG9ybmFtZW50YWxcLWFydGljbGVzXC1tYWRlXC1vZlwtaG9ybnNcLXVzZWRcLXRvXC1kZWNvcmF0ZVwtdGhlXC10b3BcLW9mXC1hXC1zdGlja1wtb3JcLWhvcnNld2hpcDsKK+mkiuWFkumYsuiAgSA8IFwob2ZcLXBhcmVudHNcKVwtdG9cLWJyaW5nXC11cFwtY2lobGRyZW5cLWZvclwtdGhlXC1wdXJwb3NlXC1vZlwtYmVpbmdcLWxvb2tlZFwtYWZ0ZXJcLWluXC1vbGRcLWFnZTsKK+mZs+avhSA8IGNoZW5cLXlpXCxcLWZvcm1lclwtbWF5b3JcLW9mXC1zaGFuZ2hhaVwtYW5kXC1oaWdoZXN0XC1yYW5raW5nXC1taWxpdGFyeVwtY29tbWFuZGVyXC1pblwtY2hpbmE7CivntrroibLkvbMgPCBpdGhhY2FcLFwtbnlcLVwoYnV0XC1wcm9ub3VuY2VkXC15aTNcLXNlNFwtamlhMVwsXC1mb2xsb3dpbmdcLWFcLW1pc3Rha2VcLW1hZGVcLWJ5XC1odTJcLXNoaTRcLeiDoemBqVwpOwor56yQIDwgYmFtYm9vc1wtcGxhY2VkXC1hY3Jvc3NcLXdvb2RlblwtZnJhbWVzXC1vblwtd2hpY2hcLWdyYWluXC1tYXlcLWJlXC1zdG9yZWRcLWluXC1kYW1wXC1jbGltYXRlczsKK+SjniA8IG5hbWVcLW9mXC1hblwtYW5jaWVudFwtc3RhdGVcLXdoaWNoXC1vY2N1cGllZFwtdGhlXC1zaXRlXC1vZlwtdGhlXC1wcmVzZW50XC1wcm92aW5jZVwtb2ZcLWh1YmVpOwor5Ie2IDwgYVwtc21hbGxcLXJhZnRlcnNcLW1hZGVcLW9mXC1iYW1ib29cLXdoaWNoXC1wcm9qZWN0XC1mb3JtXC10aGVcLWVhdmVzXC1hbmRcLXN1cHBvcnRcLXRoZVwtdGlsZXM7Civpm7fls7DloZQgPCBsZWlmZW5nXC1wYWdvZGFcLFwtYnlcLXdlc3RcLWxha2VcLXVudGlsXC1pdFwtd2FzXC1kZXN0cm95ZWRcLVwoYWxzb1wtZnJvbVwtbWFkYW1cLXdoaXRlXC1zbmFrZVwpOwor6LOoIDwgdHJpYnV0ZVwtcGFpZFwtaW5cLWNsb3RoXC1ieVwtdGhlXC10cmliZXNcLWluXC1zemVjaHdhblwtYW5kXC15dW5uYW5cLXVuZGVyXC10aGVcLWhhblwtZHluYXN0eTsKK+S4jeWFseaItOWkqSA8IHdpbGxcLW5vdFwtbGl2ZVwtdW5kZXJcLXRoZVwtc2FtZVwtc2t5XC1cKHdpdGhcLW9uZScnc1wtZW5lbXlcKVwtXC1cLWFic29sdXRlbHlcLWlycmVjb25jaWxhYmxlOwor56arIDwgc2FjcmlmaWNlXC1vZmZlcmVkXC1hdFwtdGhlXC1lbmRcLW9mXC10aGVcLXRocmVlXC15ZWFycycnXC1tb3VybmluZ1wtdGhlXC1kZWF0aFwtb2ZcLWFcLXBhcmVudDsKK+SCqSA8IGFuXC1pblwtc2xhYlwtb3JcLWlua1wtc3RvbmVcLXNvdW5kXC1vZlwtcGViYmxlc1wtb3JcLXN0b25lc1wtcnViYmluZ1wtb3JcLWtub2NraW5nXC10b2dldGhlcjsKK+SCjSA8IGFcLWtpbmRcLW9mXC13ZWFwb25cLWNhcnJpZWRcLWJ5XC10aGVcLWhvbm9yXC1ndWFyZFwtYmVmb3JlXC10aGVcLWVtcGVyb3JcLWluXC1hbmNpZW50XC10aW1lczsKK+aTiuWFtuaDsOatuCA8IGF2b2lkXC10aGVcLWVuZW15XC13aGVuXC1oZVwtaXNcLWZyZXNoXC1hbmRcLXN0cmlrZVwtaGltXC13aGVuXC1oZVwtaXNcLXRpcmVkXC1hbmRcLXdpdGhkcmF3czsKK+S/neeUsuWItuW6piA8IHRoZVwtYmFvXC1qaWFcLXN5c3RlbVwtXChhblwtYWRtaW5pc3RyYXRpdmVcLXN5c3RlbVwtb3JnYW5pemVkXC1vblwtYmFzaXNcLW9mXC1ob3VzZWhvbGRzXCk7CivljIXlt6UgPCB1bmRlcnRha2VcLXRvXC1wZXJmb3JtXC13b3JrXC13aXRoaW5cLWFcLXRpbWVcLWxpbWl0XC1hbmRcLWFjY29yZGluZ1wtdG9cLXNwZWNpZmljYXRpb25zOwor6YOo6aaWIDwgcmFkaWNhbHNcLWJ5XC13aGljaFwtY2hhcmFjdGVyc1wtYXJlXC1hcnJhbmdlZFwtaW5cLXRyYWRpdGlvbmFsXC1jaGluZXNlXC1kaWN0aW9uYXJpZXM7CivpnLjkuLsgPCBhXC1wb3dlcmZ1bFwtY2hpZWZcLW9mXC10aGVcLXByaW5jZXNcLW9mXC10aGVcLXNwcmluZ1wtYW5kXC1hdXR1bW5cLXBlcmlvZFwtXCg3NzBcLTQ3NlwtYmNcKTsKK+ihiCA8IHRoZVwtYmxvb2RcLW9mXC1hXC1zYWNyaWZpY2lhbFwtZm93bFwtd2hpY2hcLXdhc1wtc3ByaW5rbGVkXC1vblwtdGhlXC1kb29yc1wtYW5kXC12ZXNzZWxzOwor46+pIDwgdG9cLXB1dFwtdGhlXC1ncm93aW5nXC11cFwtc2lsa3dvcm1zXC1pblwtZGlmZmVyZW50XC1mcmFtZXNcLWFjY29yZGluZ1wtdG9cLXRoZWlyXC1zaXplczsKK+OasyA8IGFcLWxhZHlcLXRlYWNoZXJcLXRvXC10ZWFjaFwtdGhlXC1wcm9wZXJcLXJ1bGVzXC1vZlwtZmVtYWxlXC1iZWhhdmlvclwtaW5cLWFuY2llbnRcLXRpbWVzOwor5LiN6L6o6I+96bqlIDwgYmVcLXVuYWJsZVwtdG9cLXRlbGxcLWJlYW5zXC1mcm9tXC13aGVhdFwtXC1cLWhhdmVcLW5vXC1rbm93bGVkZ2VcLW9mXC1wcmFjdGljYWxcLW1hdHRlcnM7CivntaUgPCB0b1wtaGFybmVzc1wtYVwtaG9yc2VcLWFcLWJvYXJkXC1pblwtZnJvbnRcLW9mXC1hXC1jYXJyaWFnZVwtZm9yXC10aGVcLWRyaXZlclwtdG9cLWxlYW5cLW9uOwor5IutIDwgdG9cLXdlYXZlXC1zaWxrXC1mYWJyaWNzXC13aXRoXC1ncmVlblwtY29sb3JcLWZvclwtbG9uZ2l0dWRlXC1hbmRcLXdoaXRlXC1mb3JcLWxhdGl0dWRlOwor4628IDwgYVwtcmVjdGFuZ2xlXC1zaGFwZWRcLXBlZ1wtb3JcLXNob3J0XC1wb3N0XC1iZXR3ZWVuXC10aGVcLWJlYW5zXC1hbmRcLXRoZVwtcm9vZlwtdGltYmVyczsKK+aBreWWnOeZvOiyoSA8IGNvbmdyYXR1bGF0aW9uc1wtZm9yXC1nZXR0aW5nXC1yaWNoXC1cKHRyYWRpdGlvbmFsXC1jaGluZXNlXC1uZXdcLXllYXInJ3NcLWZ1dHVyZVwtdXNlOwor55GEIDwgYVwtb3JuYW1lbnRhbFwtcGllY2VcLW9mXC1qYWRlXC1zZXZlcmFsXC1pbmNoZXNcLWFjcm9zc1wtd2l0aFwtYVwtaG9sZVwtaW5cLXRoZVwtY2VudGVyOwor54mh5Li55Y2hIDwgcGVvbnlcLWNhcmRcLVwoY3JlZGl0XC1jYXJkXC1pc3N1ZWRcLWJ5XC1pbmR1c3RyaWFsXC1hbmRcLWNvbW1lcmNpYWxcLWJhbmtcLW9mXC1jaGluYVwpOwor5KykIDwgdG9cLXB1dFwtdGhlXC10aGlja1wtc291cFwtb3JcLWJyb3RoXC1vblwtdG9wXC1vZlwtdGhlXC1yaWNlXC10aGlja1wtY29uZ2VlXC1vclwtcG9ycmlkZ2U7CivlnKjmlrwgPCBcKHRoZVwtcHJvYmxlbVwtb3JcLWV4cGxhbmF0aW9uXC1vclwtYWR2YW50YWdlXC1ldGNcLlwpXC1saWVzXC1pblwtXCh0aGVcLWZhY3RcLXRoYXRcLlwuXC5cKTsKK+SlryA8IGFcLWZhcm1cLXRvb2xcLXRvXC1jcnVzaFwtdGhlXC1jbG9kXC1vZlwtZWFydGhcLWludG9cLXBpZWNlc1wtYW5kXC1tYWtlXC10aGVcLWxhbmRcLWZsYXQ7CivkjZYgPCBhXC1raW5kXC1vZlwtbmV0XC1lcXVpcHRlZFwtd2l0aFwtdHJpY2t5XC1tYWNoaW5lXC11c2VkXC10b1wtY2F0Y2hcLWJpcmRzXC1hbmRcLWJlYXN0czsKK+Whnumfi+ijoeirviA8IFxbamVhblwtbWljaGVsXF1cLXNldmVyaW5vXC1cW3dvcmxkXC1iYW5rXC12aWNlXC1wcmVzaWRlbnRcLFwtZWFzdFwtYXNpYVwtYW5kXC1wYWNpZmljXF07Civkjq0gPCBhXC1raW5kXC1vZlwtZmFybVwtdG9vbFwtbWFkZVwtb2ZcLXR3aXN0ZWRcLXRocm9uXC1zdHJpcHNcLXVzZWRcLXRvXC1mbGF0ZW5cLXRoZVwtbGFuZDsKK+aVmeiokyA8IFwodGVhY2hcLXNvbWVvbmVcLW9yXC1sZWFyblwtYVwpXC1sZXNzb25cLVwoaWVcLFwtb2J0YWluXC13aXNkb21cLWZyb21cLWFuXC1leHBlcmllbmNlXCk7CivkuInlspTlj6MgPCBhdFwtdGhlXC1jcm9zc3JvYWRzXCxcLXRoZVwtbmFtZVwtb2ZcLWFcLWZhbW91c1wtb3BlcmFcLFwtc3RvcnlcLWZyb21cLXNodWlcLWh1XC16aHVhbjsKK+etkyA8IGFcLWhhaXJwaW5cLW9uXC13aGljaFwtdGhlXC1oYWlyXC1pc1wtYm91bmRcLWF0XC10aGVcLWJhY2tcLW9mXC10aGVcLWhlYWRcLlwtMTVcLW9mXC1hZ2U7CivmnY7oh6rmiJAgPCBuYW1lXC1vZlwtYVwtcGVyc29uXCxcLWxpXC16aVwtY2hlbmdcLFwtbGVhZGVyXC1vZlwtbWluZ1wtZHluYXN0eVwtcGVhc2FudFwtcmViZWxsaW9uOwor5pyJ5pyf5b6S5YiRIDwgbGltaXRlZFwtdGVybVwtb2ZcLWltcHJpc29ubWVudFwtXChpZVwsXC1hbnl0aGluZ1wtbGVzc1wtdGhhblwtbGlmZVwtaW1wcmlzb25tZW50XCk7CivmsZ/lhavpu54gPCBcImppYW5nXC16ZW1pbicnc1wtZWlnaHRcLXBvaW50XC1mb3JtdWxhXCJcLVwoZm9yXC1yZXN1bWluZ1wtYVwtZGlhbG9nXC13aXRoXC10YWl3YW5cKTsKK+mEp+S6rua0qiA8IHRhbmdcLWxpYW5nXC1ob25nXC1cKG9wcG9zaXRpb25cLWNhbmRpZGF0ZVwtaW5cLWphblwtMTk5Nlwtc2luZ2Fwb3JlXC1lbGVjdGlvbnNcKTsKK+mWieebruWhnuiBvSA8IHNodXRzXC1vbmUnJ3NcLWV5ZXNcLWFuZFwtc3RvcFwtdXBcLW9uZScnc1wtZWFyc1wtXC1cLWJlXC1vdXRcLW9mXC10b3VjaFwtd2l0aFwtcmVhbGl0eTsKK+esqOmzpeWFiOmjmyA8IGNsdW1zeVwtYmlyZHNcLWhhdmVcLXRvXC1zdGFydFwtZmx5aW5nXC1lYXJseVwtXC1cLXRoZVwtc2xvd1wtbmVlZFwtdG9cLXN0YXJ0XC1lYXJseTsKK+OusiA8IGFcLXNtYWxsXC1yaW5nXC1vclwtYVwtc21hbGxcLXBpZWNlXC1vZlwtYm9hcmRcLWF0dGFjaGVkXC10b1wtdGhlXC1tdXp6bGVcLW9mXC1hblwtb3g7Civpp4HlsrggPCBhXC1sb3dcLXN0b25lXC13YWxsXC1idWlsdFwtYWxvbmdcLXRoZVwtd2F0ZXInJ3NcLWVkZ2VcLXRvXC1wcm90ZWN0XC1hblwtZW1iYW5rbWVudDsKK+eZvuiBnuS4jeWmguS4gOimiyA8IHNlZWluZ1wtZm9yXC1vbmVzZWxmXC1pc1wtYVwtaHVuZHJlZFwtdGltZXNcLWJldHRlclwtdGhhblwtaGVhcmluZ1wtZnJvbVwtb3RoZXJzOwor6KOc5rOVIDwgdHJlYXRtZW50XC1pbnZvbHZpbmdcLXRoZVwtdXNlXC1vZlwtdG9uaWNzXC10b1wtcmVzdG9yZVwtdGhlXC1wYXRpZW50JydzXC1oZWFsdGg7CivktbsgPCBhXC1zbWFsbFwtdHJpcG9kXC1vZlwtYnJvbnplXC13aXRoXC10d29cLWVhcnNcLXRyaXBvZFwtb2ZcLWJyb256ZVwtd2l0aFwtdHdvXC1lYXJzOwor5LiJ5LiNIDwgXCJ0aGVcLXRocmVlXC1ubycnc1wiXC1cKGFuXC1leGFtcGxlXC1vZlwtYW5cLWFiYnJldmlhdGVkXC1zbG9nYW5cLW9yXC1jYXRjaHBocmFzZVwpOwor55m95pyuIDwgdGhlXC1yaGl6b21lXC1vZlwtbGFyZ2VcLWhlYWRlZFwtYXRyYWN0eWxvZGVzXC1cKGF0cmFjdHlsb2Rlc1wtbWFjcm9jZXBoYWlhXCk7CivmnKzojYnntrHnm64gPCBhblwtb3V0bGluZVwtdHJlYXRpc2VcLW9mXC1tZWRpY2FsXC1oZXJic1wsXC1jb21waWxlZFwtYnlcLWxpM1wtc2hpMlwtemhlbjFcLeadjuaZguePjTsKK+eOoCA8IGxhcmdlXC1qYWRlXC10YWJsZXRcLXVzZWRcLWJ5XC1vZmZpY2lhbHNcLWF0XC1jb3VydFwtdG9cLWluZGljYXRlXC10aGVpclwtcmFua3M7CivlkIPlpKfmiLYgPCBtYXNzXC1zZWl6dXJlXC1vZlwtZm9vZFwtZnJvbVwtbGFuZGxvcmRzXC1kdXJpbmdcLWZhbWluZXNcLWJlZm9yZVwtbGliZXJhdGlvbjsKK+SCnCA8IHJvY2t5XC1maW5lXC1zdG9uZVwtd2hpY2hcLWlzXC1saXR0bGVcLWxlc3NcLXZhbHVhYmxlXC10aGFuXC1qYWRlXC10b1wtY29sbGFwc2U7CivjoYYgPCBhblwtYXJ0aXNhblwtdG9cLXNvZnRlblwtcmF3XC1zaWxrXC1ieVwtYm9pbGluZ1wtYW5kXC10b1wtZHllXC10aGVcLWRyZXNzZWRcLXNpbGs7CivmnY7mmYLnj40gPCBsaVwtc2hpXC16aGVuXC1cKDE1MThcLTE1OTNcLFwtZmFtb3VzXC1kb2N0b3JcLFwtYXV0aG9yXC1vZlwtYmVuM1wtY2FvM1wtZ2FuZzFcLW11NDsKK+WFteW8t+mmrOWjryA8IHN0cm9uZ1wtc29sZGllcnNcLWFuZFwtc3R1cmR5XC1ob3JzZXNcLVwtXC1hXC13ZWxsXC10cmFpbmVkXC1hbmRcLXBvd2VyZnVsXC1hcm15Owor6KOOIDwgdG9cLXRha2VcLW9mZlwtdGhlXC1jbG90aGVzXC1hbmRcLWV4cG9zZVwtdGhlXC1ib2R5XC5cLXRvXC1jYXJyeVwtaW5cLXRoZVwtZ2lyZGxlOwor6Y6LIDwgdGhlXC1saW5jaFwtcGluXC1vZlwtYVwtd2hlZWxcLXRvXC1nb3Zlcm5cLW9yXC1jb250cm9sXC10aGVcLW5vaXNlXC1vZlwtYVwtYmFycm93Owor56a95rWB5oSfIDwgXCJiaXJkXC1mbHVcIlwtXChmbHVcLWNhcnJpZWRcLWJ5XC1iaXJkc1wtXC1cLWZvdW5kXC1pblwtaG9uZ1wta29uZ1wtaW5cLWxhdGVcLTE5OTdcKTsKK+SqkCA8IHNvbWV0aGluZ1wtbWFkZVwtb2ZcLWJhbWJvb1wtcHV0XC1pblwtdGhlXC1ib3dcLWNhc2VcLXRvXC1wcmV0ZWN0XC1mcm9tXC1kYW1hZ2U7Civmpa3kvZnlpKflrbggPCBjb2xsZWdlXC1mb3JcLXBlb3BsZVwtd2hvXC1hdHRlbmRcLWFmdGVyXC13b3JrXC1cKGxpdFwuXDpcLXNwYXJlXC10aW1lXC1jb2xsZWdlXCk7Civkh60gPCBjb250YWluZXJzXC1tYWRlXC1vZlwtdGhpblwtYW5kXC1sb25nXC1zdHJpcFwtb2ZcLWJhbWJvb1wtb3JcLXdpbGxvd1wtYnJhbmNoZXM7Civjn6wgPCBhXC1tb3VudGFpblwtaW5cLXRvZGF5JydzXC1zaGFuZG9uZ1wtcHJvdmluY2VcLXNvdXRod2VzdFwtb2ZcLW1lbmd5aW5cLWNvdW50eTsKK+OapSA8IHRvXC1iZWNvbWVcLWFzc29jaWF0ZWRcLXdpdGhcLWVhY2hcLW90aGVyXC1pblwtZ29vZFwtbWFubmVyc1wtYW5kXC1wb2xpdGVuZXNzOwor5a6j5YikIDwgcHJvbm91bmNlXC1hXC1cKGp1ZGljaWFsXClcLXNlbnRlbmNlXC1cKGFmdGVyXC1hXC12ZXJkaWN0XC1pblwtYVwtY291cnRcLW9mXC1sYXdcKTsKK+iSmeS7o+eIviA8IFwod2FsdGVyXClcLW1vbmRhbGVcLVwodXNcLWFtYmFzc2Fkb3JcLXRvXC1qYXBhblwsXC1mb3JtZXJcLXVzXC12aWNlXC1wcmVzaWRlbnRcKTsKK+mZs+e0jeW+tyA8IFwoY2xhaXJlXClcLWNoZW5uYXVsdFwsXC1jb21tYW5kZXJcLW9mXC1mbHlpbmdcLXRpZ2Vyc1wtZHVyaW5nXC13b3JsZFwtd2FyXC1paTsKK+eXheWPiyA8IGFcLWZyaWVuZFwtbWFkZVwtaW5cLWhvc3BpdGFsXC1vclwtcGVvcGxlXC13aG9cLWJlY29tZVwtZnJpZW5kc1wtaW5cLWhvc3BpdGFsOwor5o2V6aKo5o2J5b2xIDwgY2hhc2VcLXRoZVwtd2luZFwtYW5kXC1jbHV0Y2hcLWF0XC1zaGFkb3dzXC1cLVwtbWFrZVwtZ3JvdW5kbGVzc1wtYWNjdXNhdGlvbnM7CivlsLHmmK8gPCBcKGVtcGhhc2l6ZXNcLXRoYXRcLXNvbWV0aGluZ1wtaXNcLXByZWNpc2VseVwtb3JcLWV4YWN0bHlcLXdoYXRcLWlzXC1zdGF0ZWRcKTsKK+SkniA8IGFcLWtpbmRcLW9mXC13ZWFwb25zXC1oZWxkXC1ieVwtdGhlXC1vZmZpY2lhbHNcLWluXC1hdHRlbmRhbmNlXC1pblwtb2xkXC10aW1lczsKK+O5qyA8IGFcLWtpbmRcLW9mXC1hbmltYWxcLWdlbmVyYWxseVwtY2FsbGVkXC1mb3JcLW1pbm9yaXR5XC1ncm91cHNcLWluXC1vbGRcLWNoaW5hOwor47O7IDwgYVwtYmFua1wtb2ZcLWVhcnRoXC1vclwtYW5cLWVtYmFua21lbnRcLXRvXC1ibG9ja1wtdGhlXC1jdXJyZW50XC1vZlwtdGhlXC13YXRlcjsKK+OvoiA8IGFcLXBpZWNlXC1vZlwtY3Jvc3NcLXdpc2VcLWJvYXJkXC11c2VkXC1mb3JcLWZyYW1lXC1vblwtd2hpY2hcLXNpbGt3b3Jtc1wtc3BpbjsKK+e2reeIvuWuuSA8IFwoam9oYW5uZXNcLWxvZGV3aWt1c1wpXC12aWxqb2VuXC1cKHNvdXRoXC1hZnJpY2FuXC1hbWJhc3NhZG9yXC10b1wtdGFpd2FuXCk7CivokZvmtLLlo6kgPCBuYW1lXC1vZlwtYVwtcGxhY2VcLFwtZ2V6aG91YmFcLWRhbVwtb25cLXRoZVwtY2hhbmdqaWFuZ1wtcml2ZXJcLFwtaW5cLXNpY2h1YW47Civkg5ggPCBzaW1wbGVcLWFuZFwtY3J1ZGVcLXRoZVwtc291bmRcLW9mXC1wZWJibGVzXC1vclwtc3RvbmVzXC1rbm9ja2luZ1wtdG9nZXRoZXI7CivjsLEgPCB0b1wtc21lYXJcLXRoZVwtbW91dGhcLXdpdGhcLXRoZVwtYmxvb2RcLW9mXC1hXC12aWN0aW1cLXdoZW5cLXRha2luZ1wtYW5cLW9hdGg7CivkuI3liIblvbzmraQgPCBtYWtlXC1ub1wtZGlzdGluY3Rpb25cLWJldHdlZW5cLXdoYXQnJ3NcLW9uZScnc1wtb3duXC1hbmRcLXdoYXQnJ3NcLWFub3RoZXInJ3M7CivogIHpqaXkvI/mq6rlv5flnKjljYPph4wgPCBcKGxpdFwuXClcLWFuXC1vbGRcLXN0ZWVkXC1pblwtdGhlXC1zdGFibGVcLXN0aWxsXC1hc3BpcmVzXC10b1wtZ2FsbG9wXC0xMDAwXC1saTsKK+Wkp+emuSA8IGRhXC15dVwsXC1uYW1lXC1vZlwtYW5cLWFuY2llbnRcLWhlcm9cLXdob1wtc3VjY2Vzc2Z1bGx5XC1jb250cm9sbGVkXC1mbG9vZHM7Civnja8gPCBhXC10cmliZVwtb2ZcLXNjeXRoaWFuc1wtd2hpY2hcLWludmFkZWRcLWNoaW5hXC1kdXJpbmdcLXRoZVwtaHNpYVwtZHluYXN0eTsKK+melCA8IHNpZGVzXC1vclwtdXBwZXJzXC1vZlwtc2hvZXNcLXRvXC1zdHJldGNoXC1hXC1za2luXC1vblwtYVwtZnJhbWVcLWZvclwtYVwtZHJ1bTsKK+ihqOitiSA8IGlsbG5lc3NcLXRoYXRcLWhhc1wtbm90XC1hdHRhY2tlZFwtdGhlXC12aXRhbFwtb3JnYW5zXC1vZlwtdGhlXC1odW1hblwtYm9keTsKK+Wci+mam+mbu+ipsembu+WgseirruipouWnlOWToeacgyA8IGludGVybmF0aW9uYWxcLWNvbnN1bHRhdGl2ZVwtY29tbWl0dGVlXC1mb3JcLXRlbGVwaG9uZVwtYW5kXC10ZWxlZ3JhcGg7CivkuI3nn6Xlh6Hlub4gPCBjYW4nJ3RcLXRlbGxcLWhvd1wtbWFueVwtdGhlcmVcLWFyZVwtXC1cLXRoZXJlXC1hcmVcLW51bWVyb3VzXC1zaW1pbGFyXC1jYXNlczsKK+SVvSA8IHRoZVwtcmhvZG9kZW5kcm9uXC1cLVwtXC1pdFwtaXNcLXNhaWRcLXRvXC1jYXVzZVwtc2hlZXBcLXRvXC1zdGFnZ2VyXC1hbmRcLWRpZTsKK+m8u+mfu+avjSA8IFwob2ZcLWNoaW5lc2VcLXByb251bmNpYXRpb25cKVwtYVwtdm93ZWxcLWZvbGxvd2VkXC1ieVwtYVwtbmFzYWxcLWNvbnNvbmFudDsKK+W5q+mWkSA8IGhhbmdcLW9uXC10b1wtYW5kXC1zZXJ2ZVwtdGhlXC1yaWNoXC1hbmRcLXBvd2VyZnVsXC1ieVwtbGl0ZXJhcnlcLWhhY2tcLXdvcms7Civpg5wgPCBuYW1lXC1vZlwtZmllZlwtaW5cLXNoYW50b25nXC1iZXN0b3dlZFwtb25cLXRoZVwtZWxkZXN0XC1zb25cLW9mXC13ZW5cLXdhbmc7Civmj4/ntIUgPCB0b1wtdHJhY2VcLW92ZXJcLXJlZFwtY2hhcmFjdGVyc1wtXChhc1wtYVwtbWV0aG9kXC1vZlwtbGVhcm5pbmdcLXRvXC13cml0ZVwpOwor6YeR5rC45Y2XIDwga2ltXC15b25nXC1uYW1cLVwobm9ydGhcLWtvcmVhblwtZGVwdXR5XC1wcmVtaWVyXC1hbmRcLWZvcmVpZ25cLW1pbmlzdGVyXCk7CivmipfmiLAgPCB3YXJcLW9mXC1yZXNpc3RhbmNlXCxcLWVzcGVjaWFsbHlcLXRoZVwtd2FyXC1hZ2FpbnN0XC1qYXBhblwtXCgxOTM3XC0xOTQ1XCk7CivmirHmrpjlrojnvLogPCBjaGVyaXNoXC10aGVcLW91dG1vZGVkXC1hbmRcLXByZXNlcnZlXC10aGVcLW91dHdvcm5cLVwtXC1iZVwtY29uc2VydmF0aXZlOwor6ZaJ5aGe55y8552b5o2J6bq76ZuAIDwgdHJ5XC10b1wtY2F0Y2hcLXNwYXJyb3dzXC13aXRoXC1vbmUnJ3NcLWV5ZXNcLWJsaW5kZm9sZGVkXC1cLVwtYWN0XC1ibGluZGx5Owor5I2/IDwgYVwta2luZFwtb2ZcLWRhbmNlXC1hY2NvbXBhbmllZFwtYnlcLW11c2ljXC1wZXJmb3JtZWRcLWluXC1hbmNpZW50XC10aW1lczsKK+SMniA8IGFcLWtub3RcLXRvXC1oYW5nXC10aGVcLWFwcGFyYXR1c1wtbWFkZVwtb2ZcLXJlZWRcLWZvclwtcmFpc2luZ1wtc2lsa3dvcm1zOwor5IeJIDwgY2FwYWNpdHlcLXVuaXRcLWluXC1mcmFuY2VcLWVxdWFsXC10b1wtb25lXC1odW5kcmVkXC10aW1lc1wtb2ZcLW9uZVwtbGl0cmU7CivjvYggPCBhXC1sYXJnZVwtZWFydGhlbndhcmVcLWphclwtd2l0aFwtYVwtc21hbGxcLW1vdXRoXC1hbmRcLXR3b1wtb3JcLWZvdXJcLWVhcnM7CivjuZAgPCB0b1wtdG93XC1hXC1ib2F0XC1hZ2FpbnN0XC10aGVcLWN1cnJlbnRcLWluXC1zd2lmdFwtc3RyZWFtXC1mcm9tXC10aGVcLWJhbms7CivmsoUgPCBuYW1lXC1vZlwtYVwtcml2ZXJcLWluXC13ZXN0ZXJuXC1odW5hblwtdGhhdFwtZmxvd3NcLWludG9cLWRvbmd0aW5nXC1sYWtlOwor57CLIDwgYVwtc3F1YXJlXC1iYXNrZXRcLW9mXC1iYW1ib29cLWZvclwtaG9sZGluZ1wtZ3JhaW5cLXVzZWRcLWF0XC1zYWNyaWZpY2VzOwor5LiN6LK75ZC554Gw5LmL5YqbIDwgYXNcLWVhc3lcLWFzXC1ibG93aW5nXC1vZmZcLWR1c3RcLVwtXC1ub3RcLW5lZWRpbmdcLXRoZVwtc2xpZ2h0ZXN0XC1lZmZvcnQ7CivmlpfmibnmlLkgPCBzdHJ1Z2dsZVwtY3JpdGljaXNtXC10cmFuc2Zvcm1hdGlvblwtXChjdWx0dXJhbFwtcmV2b2x1dGlvblwtc2xvZ2FuXCk7CivpmL/kuI3kvobmj5BcLumYv+S4jemDveeGseilv+aPkCA8IGFiZHVsYWlkaVwtYW11ZHVyZXhpdGlcLVwoY2hhaXJtYW5cLW9mXC14aW5qaWFuZ1wtYXV0b25vbW91c1wtcmVnaW9uXCk7Civpt7QgPCBzaWx2ZXJcLXBoZWFzYW50XC1iYWRnZVwtd29yblwtYnlcLWNpdmlsXC1vZmZpY2lhbHNcLW9mXC10aGVcLTV0aFwtZ3JhZGU7CivljZrlj6TpgJrku4ogPCBjb252ZXJzYW50XC13aXRoXC10aGluZ3NcLXBhc3RcLWFuZFwtcHJlc2VudFwtXC1cLWVydWRpdGVcLWFuZFwtaW5mb3JtZWQ7Civon5UgPCBhXC1zcGVjaWVzXC1vZlwtdG9ydG9pc2VcLWZvdW5kXC1uZWFyXC10aGVcLW1vdXRoXC1vZlwtdGhlXC15ZWxsb3dcLXJpdmVyOwor5LuK6Z+zIDwgbW9kZXJuXC1cKGlcLmVcLlwtbm90XC1hbmNpZW50XClcLXByb251bmNpYXRpb25cLW9mXC1hXC1jaGluZXNlXC1jaGFyYWN0ZXI7Civmlq/nibnlh6Hoq77mma7mtJvmlq8gPCBzdGVwaGFub3BvdWxvc1wtXChlZ1wsXC1mb3JtZXJcLWNsaW50b25cLWFpZGVcLWdlb3JnZVwtc3RlcGhhbm9wb3Vsb3NcKTsKK+OshiA8IHBvc3RodW1vdXNcLXRpdGxlXC1jb25mZXJyZWRcLXVwb25cLWVtcGVyb3JzXC1hbmRcLWVtaW5lbnRcLW9mZmljaWFsczsKK+S4jeWFpeiZjueptOeEieW+l+iZjuWtkCA8IGhvd1wtY2FuXC15b3VcLWNhdGNoXC10aWdlclwtY3Vic1wtd2l0aG91dFwtZW50ZXJpbmdcLXRoZVwtdGlnZXInJ3NcLWxhaXI7Civpnp0gPCB0aGVcLXBpZWNlXC1vZlwtbGVhdGhlclwtdXNlZFwtZm9yXC1zb2xlc1wtb25cLWNoaW5lc2VcLXNob2VzXC5cLWFcLXBhdGNoOwor5aSn6ayn5aSp5a6uIDwgXCJ0aGVcLW1vbmtleVwtY3JlYXRlc1wtaGF2b2NcLWluXC1oZWF2ZW5cIlwsXC1zdG9yeVwtYWJvdXRcLXN1blwtd3VcLWtvbmc7CivolJsgPCBhXC1zbWFsbFwtb3JjaGlkXC1saWtlXC1wbGFudFwtaXRcLWJlYXJzXC13aGl0ZVwtZmxvd2Vyc1wtYVwtZGVuZHJvYml1bTsKK+err+WNiOevgCA8IHRoZVwtZHJhZ29uXC1ib2F0XC1mZXN0aXZhbFwtXCh0aGVcLTV0aFwtZGF5XC1vZlwtdGhlXC01dGhcLWx1bmFyXC1tb250aFwpOwor5LCZIDwgYW5cLWFuY2llbnRcLXVuaXRcLW9mXC1jYXBhY2l0eVwtd2l0aFwtdGhyZWVcLWZlZXRcLWFuZFwtYVwtYmlnXC1vcGVuaW5nOwor5JS5IDwgYVwtZnVuZ3VzXC13aGljaFwtZ3Jvd3NcLW9uXC1yb3R0ZW5cLXBsYW50c1wtYW5kXC1pc1wtZWF0ZW5cLXdoZW5cLWZyZXNoOwor46+jIDwgYVwta2luZFwtb2ZcLWZyYWdyYW50XC10cmVlXC11c2VkXC10b1wtcHJvZHVjZVwtcGVyZnVtZVwtYnlcLWJ1cm5pbmdcLWl0Owor46+hIDwgdG9cLWxhY3F1ZXJcLXNvbWVcLWtpbmRcLW9mXC1hc2hlc1wtb25cLXdvb2RlblwtYXJ0aWNhbHNcLW9yXC1mdXJuaXR1cmU7CivmgrLlpKnmhqvkurogPCBiZW1vYW5cLXRoZVwtc3RhdGVcLW9mXC10aGVcLXVuaXZlcnNlXC1hbmRcLXBpdHlcLXRoZVwtZmF0ZVwtb2ZcLW1hbmtpbmQ7Civmg4vmg5wgPCB0b1wtZmVlbFwtc29ycnlcLWZvclwtYVwtcGVyc29uXC1vdmVyXC1zdGhcLXRoYXRcLXNob3VsZFwtaGF2ZVwtaGFwcGVuZWQ7Civls4sgPCByYW5nZXNcLW9mXC1oaWxsc1wtc3RyZXRjaGluZ1wtb25cLWJleW9uZFwtYW5vdGhlclwtaXJyZWd1bGFyXC1wZWFrczsKK+atgyA8IHNtZWFyXC1vbmUnJ3NcLW1vdXRoXC13aXRoXC1ibG9vZFwtb2ZcLWFcLXZpY3RpbVwtd2hlblwtdGFraW5nXC1hblwtb2F0aDsKK+eZveiMq+iMqyA8IFwob2ZcLW1pc3RcLFwtc25vd1wsXC1mbG9vZHdhdGVyXCxcLWV0Y1wpXC1hXC12YXN0XC1leHBhbnNlXC1vZlwtd2hpdGVuZXNzOwor552l552oIDwgbG9va1wtYXRcLXNvbWVib2R5XC1kaXNkYWluZnVsbHlcLW91dFwtb2ZcLXRoZVwtY29ybmVyXC1vZlwtb25lJydzXC1leWU7CivnvpcgPCB0cmliZXNcLWluXC13ZXN0XC1jaGluYVwtc3Ryb25nXC5cLWVkdWNhdGVkXC5cLW9ic3RpbmF0ZVwuXC1hXC1wYXJ0aWNsZTsKK+iDoemBqSA8IGh1XC1zaGlcLVwoMTg5MVwtMTk2MlwpXCxcLW9yaWdpbmFsXC1wcm9wb25lbnRcLW9mXC1iYWkyXC1odWE0XC13ZW4yXC3nmb3oqbHmloc7Civou43lp5QgPCBtaWxpdGFyeVwtY29tbWlzc2lvblwtb2ZcLXRoZVwtY29tbXVuaXN0XC1wYXJ0eVwtY2VudHJhbFwtY29tbWl0dGVlOwor5LiN5pyN5rC05ZyfIDwgXChvZlwtYVwtc3RyYW5nZXJcKVwtbm90XC1hY2N1c3RvbWVkXC10b1wtdGhlXC1jbGltYXRlXC1vZlwtYVwtbmV3XC1wbGFjZTsKK+aWr+S9qee+hSA8IFwoam9hblwpXC1zcGVyb1wtXCh1bmRlclwtc2VjcmV0YXJ5XC1vZlwtc3RhdGVcLWZvclwtZWNvbm9taWNcLWFmZmFpcnNcKTsKK+S4oyA8IGFuY2llbnRcLWZvcm1cLW9mXC10aGVcLXRlbnRoXC1vZlwtdGhlXC10d2VsdmVcLXRlcnJlc3RyaWFsXC1icmFuY2hlczsKK+ShhSA8IHNvbWV0aGluZ1wtdXNlZFwtdG9cLWJpbmRcLXRoZVwtZnJhbWVcLXdvcmtcLWluXC1hXC1jYXJ0XC1vZlwtb2xkXC10aW1lczsKK+SaqCA8IGFcLXN0cmluZ1wtZmFzdGVuZWRcLXRvXC1hblwtYXJyb3dcLXRvXC1kcmF3XC1pdFwtYmFja1wtYWZ0ZXJcLXNob290aW5nOwor5I6gIDwgdG9cLXR3aXN0XC1vclwtdG9cLWNydW1wbGVcLWJldHdlZW5cLWhhbmRzXC1hbmRcLW1ha2VcLXNvbWV0aGluZ1wtdHVybjsKK+OfuSA8IHRoZVwtYXBwZWFyYW5jZVwtb2ZcLWFcLW1vdW50YWluXC1pc1wtbG9mdHlcLWFuZFwtc3RlZXBcLWFuZFwtcHJvZm91bmQ7CivjnbggPCBhXC1jb25pY2FsXC1jYXBcLXdvcm5cLW9uXC1jZXJlbW9uaW91c1wtb2NjYXNpb25zXC1pblwtYW5jaWVudFwtdGltZXM7CivjmaggPCB0aGVcLXJveWFsXC1kb21haW5zXC1zZXRcLWFwYXJ0XC1pblwtYW5jaWVudFwtdGltZXNcLWZvclwtdGhlXC1lbXBlcm9yOwor54eI56+AIDwgdGhlXC1sYW50ZXJuXC1mZXN0aXZhbFwtXCgxNXRoXC1vZlwtZmlyc3RcLW1vbnRoXC1vZlwtbHVuYXJcLWNhbGVuZGFyXCk7CivooakgPCB0aGVcLW9wZW5cLXNlYW1cLW9mXC1hXC1nYXJtZW50XC13aGljaFwtYWxsb3dzXC1mcmVlZG9tXC1vZlwtbW92ZW1lbnQ7CivlsbogPCBhXC1oaWxsXC13aXRoXC10cmVlc1wtb3JcLWdyYXNzXC1cLVwtc29tZVwtZ2l2ZVwtdGhlXC1vcHBvc2l0ZVwtbWVhbmluZzsKK+WMl+a0iyA8IHRoZVwtcWluZ1wtZHluYXN0eVwtbmFtZVwtZm9yXC10aGVcLWNvYXN0YWxcLXByb3ZpbmNlc1wtb2ZcLWxpYW9uaW5nOwor5YWr5peXIDwgdGhlXC1cImVpZ2h0XC1iYW5uZXJzXCJcLVwobWlsaXRhcnlcLW9yZ2FuaXNhdGlvblwtaW5cLXFpbmdcLWR5bmFzdHlcKTsKK+S2piA8IHVwcGVyXC1hbmRcLWxvd2VyXC10ZWV0aFwtaW5cLW9yZGVyXC1hbmRcLWNvcnJlc3BvbmRpbmdcLWVhY2hcLW90aGVyOwor5KeCIDwgdG9cLXR1cm5cLW92ZXJcLXRoZVwtY2xvZFwtb2ZcLXRoZVwtZWFydGhcLXdpdGhcLWFcLXNob3ZlbFwtb3JcLWFcLXNwYWRlOwor6Jek6YeOIDwgbmFtZVwtb2ZcLWFcLXBlcnNvblwsXC10ZW5nXC15ZVwsXC1hXC1qYXBhbmVzZVwtZnJpZW5kXC1vZlwtbHUzXC14dW40XC3pra/ov4U7Civoj6/ooaggPCBtYXJibGVcLXBpbGxhclwtXChvcm5hbWVudGFsXC1jb2x1bW5cLWluXC1mcm9udFwtb2ZcLXBsYWNlc1wsXC10b21ic1wpOwor5b6F5qWtIDwgdG9cLWF3YWl0XC1qb2JcLWFzc2lnbm1lbnRcLVwodGVybVwtdXNlZFwtb25seVwtaW5cLW1haW5sYW5kXC1jaGluYVwpOwor5aSq5qW15ouzIDwgYVwta2luZFwtb2ZcLXRyYWRpdGlvbmFsXC1jaGluZXNlXC1zaGFkb3dib3hpbmdcLVwodGFpXC1jaGlcLWNodWFuXCk7Civlk4DlhbXlv4Xli50gPCBhblwtYXJteVwtYnVybmluZ1wtd2l0aFwtcmlnaHRlb3VzXC1pbmRpZ25hdGlvblwtaXNcLWJvdW5kXC10b1wtd2luOwor5pyD5LiN5pyDIDwgXChwb3NpbmdcLWFcLXF1ZXN0aW9uXDpcLXdoZXRoZXJcLXNvbWVvbmVcLFwtc29tZXRoaW5nXClcLWNhblwtb3JcLW5vdDsKK+aJruebuCA8IHRoZVwtYXBwZWFyYW5jZVwtb2ZcLWFuXC1hY3Rvclwtb3JcLWFjdHJlc3NcLWluXC1jb3N0dW1lXC1vclwtbWFrZXVwOwor5oqx5L2b6IWzIDwgY2xhc3BcLWJ1ZGRhJydzXC1mZWV0XC1cLVwtcHJvZmVzc1wtZGV2b3Rpb25cLW9ubHlcLXdoZW5cLWluXC10cm91YmxlOwor5ZmeIDwgdGhlXC1tb3ZlbWVudFwtb2ZcLWFcLWZpc2gnJ3NcLW1vdXRoXC1hdFwtdGhlXC1zdXJmYWNlXC1vZlwtdGhlXC13YXRlcjsKK+WUtSA8IHVzZWRcLWluXC1idWRkaGlzdFwtdGV4dHNcLXRvXC10cmFuc2xpdGVyYXRlXC1ub25cLWNoaW5lc2VcLXNvdW5kczsKK+SggiA8IG5hbWVcLW9mXC1hXC1wb3dlcmZ1bFwtZmV1ZGFsXC1zdGF0ZVwtd2hpY2hcLWV4aXN0ZWRcLTc0MFwtMzMwXC1iXC5jXC47CivklrYgPCB0b1wtcmFpc2VcLXVwXC10aGVcLW5vc2VcLWluXC1vcmRlclwtdG9cLWdldFwtdGhlXC1idWdzXC1pblwtdGhlXC1lYXJ0aDsKK+ibi+iKsea5ryA8IGNsZWFyXC1zb3VwXC1jb250YWluaW5nXC1iZWF0ZW5cLWVnZ1wtYW5kXC1ncmVlblwtbGVhZnlcLXZlZ2V0YWJsZTsKK+SEmyA8IHNlcnZpY2VcLW9yXC1yaXRlc1wtb2ZcLW9mZmVyaW5nXC1zYWNyaWZpY2VzXC1mb3JcLWRyaW5rXC1hbmRcLWZvb2Q7CivjvLAgPCBhblwtZWFydGhlbndhcmVcLWphclwtd2l0aFwtYVwtc21hbGxcLW1vdXRoXC1hbmRcLXR3b1wtb3JcLWZvdXJcLWVhcnM7CivjuJYgPCBoaWRlXC1vclwtdG9cLWtlZXBcLWluXC1zdG9yZVwtdGhlXC12ZWdldGFibGVcLWluXC1jb2xkXC13aW50ZXJcLWRheXM7Civjt58gPCB0b1wtc2NhbGRcLXRoZVwtYnJpc3RsZXNcLW9mZlwtYVwtcGlnXC1vclwtdGhlXC1mZWF0aGVyc1wtb2ZmXC1hXC1iaXJkOwor47CHIDwgdGhlXC1zcXVhcmVcLXBlY2tcLXNoYXBlZFwtYm94XC1oYWxmXC13YXlcLXVwXC1hXC1jaGluZXNlXC1mbGFnc3RhZmY7CivjprwgPCBhXC13b29kZW5cLXBpbGVzXC11c2VkXC1hc1wtYVwtY2FibGVcLXRvXC1tYWtlXC1pbW1vdmFibGVcLW9mXC1hXC1ib2F0Owor46KnIDwgYVwtYm9va1wtb3JcLXBhaW50aW5nXC13aGljaFwtY2FuXC1iZVwtZWFzaWx5XC1mb2xkZWRcLW9yXC1yb2xsZWRcLXVwOwor6YeR5bGx5a+6IDwgamluc2hhblwtdGVtcGxlXCxcLXdoZXJlXC1mYWhhaVwtbGl2ZXNcLVwoZnJvbVwtbWFkYW1cLXdoaXRlXC1zbmFrZVwpOwor5Lim6JKC6JOuIDwgdHdpblwtbG90dXNcLWZsb3dlcnNcLW9uXC1vbmVcLXN0YWxrXC1cLVwtYVwtZGV2b3RlZFwtbWFycmllZFwtY291cGxlOwor5q2m6KGTIDwgd3VzaHVcLFwtbWFydGlhbFwtYXJ0c1wtc3VjaFwtYXNcLXNoYWRvd1wtYm94aW5nXCxcLXN3b3JkcGxheVwsXC1ldGNcLjsKK+S4reWFsSA8IFwoYWJicmV2aWF0aW9uXC1mb3JcKVwtY2hpbmVzZVwtY29tbXVuaXN0XC1cKHBhcnR5XCxcLXJlZ2ltZVwsXC1ldGNcLlwpOwor6ZKyIDwga2luZFwtb2ZcLWdvbmdcLXVzZWRcLWluXC1hbmNpZW50XC10aW1lc1wtYnlcLXRyb29wc1wtb25cLXRoZVwtbWFyY2g7CivmlL/ljZQgPCBjcHBjY1wtXChjaGluZXNlXC1wZW9wbGUnJ3NcLXBvbGl0aWNhbFwtY29uc3VsdGF0aXZlXC1jb21taXR0ZWVcKTsKK+aOoeWPliA8IGFkb3B0XC1vclwtY2FycnlcLW91dFwtXChtZWFzdXJlc1wsXC1wb2xpY2llc1wsXC1jb3Vyc2VcLW9mXC1hY3Rpb25cKTsKK+eZn+S4iSA8IGFcLXdyZXRjaGVkXC1sb29raW5nXC10cmFtcFwtd2hvXC1saXZlc1wtYnlcLWJlZ2dpbmdcLW9yXC1zdGVhbGluZzsKK+ihqOWFhCA8IG1hbGVcLWNvdXNpblwtd2l0aFwtYVwtZGlmZmVyZW50XC1zdXJuYW1lXC1cKG9sZGVyXC10aGFuXC1vbmVzZWxmXCk7Civnn5vpoK3mjIflkJEgPCB0YXJnZXRcLXNvbWVvbmVcLW9yXC1zb21ldGhpbmdcLVwoZm9yXC1hdHRhY2tcLFwtY3JpdGljaXNtXCxcLWV0Y1wuXCk7Civku5nojYkgPCBhXC1raW5kXC1vZlwtcGxhbnRcLXVzZWRcLWFzXC1hXC1tZWRpY2luYWxcLWhlcmJcLWluXC1hbmNpZW50XC10aW1lczsKK+SqsyA8IHNsYW50ZWRcLWZhY2VcLWNhdXNpbmdcLWJ5XC10aGVcLXBhcmFseXplZFwtb2ZcLXRoZVwtZmFjaWFsXC1uZXJ2ZTsKK+adv+iDoSA8IGFcLWJvd2VkXC1zdHJpbmdlZFwtaW5zdHJ1bWVudFwtd2l0aFwtYVwtdGhpblwtd29vZGVuXC1zb3VuZGJvYXJkOwor5J6LIDwgdG9cLWRvXC1hbG1zXC1mb3JcLXRoZVwtYnVkZGhpc3RcLXByaWVzdHNcLW9yXC1tb25rc1wtaW5cLW9sZFwtdGltZXM7CivkmYYgPCBzbGl0c1wtb25cLXRoZVwtbG93ZXJcLXBhcnRcLW9mXC1hXC1nb3duXC1mb3JcLWZyZWVkb21cLW9mXC1tb3ZlbWVudDsKK+SAjyA8IHRvXC1tb3ZlXC1vbmUnJ3NcLWV5ZXNcLXRvXC1leHByZXNzXC1vclwtaW5kaWNhdGVcLXdpdGhcLWV5ZXNcLWRpenp5Owor47+EIDwgdGhlXC1ncm9hbnNcLW9yXC1tb2Fuc1wtZnJvbVwtYVwtcGVyc29uXC1pblwtYVwtY3JpdGljYWxcLWNvbmRpdGlvbjsKK+O2jyA8IGFuXC1hbmNpZW50XC1uYW1lXC1vZlwtYVwtcml2ZXJcLWluXC1oZW5hblwtcHJvdmluY2VcLWRlbmdmZW5neGlhbjsKK+OzhyA8IG5hbWVcLW9mXC1hXC1wbGFjZVwtaW5cLXRvZGF5JydzXC1qaWFuZ3N1XC1wcm92aW5jZVwteWl4aW5nXC1jb3VudHk7Civjq4sgPCBhXC1zaWxrZW5cLWJhbm5lclwtaGFuZ2luZ1wtZnJvbVwtYVwtc3RhZmZcLWJlbnRcLW92ZXJcLWF0XC10aGVcLXRvcDsKK+aWr+WNoeS8r+WLkuekgSA8IHNjYXJib3JvdWdoXC1zaG9hbFwtXChwaGlsaXBwaW5lcycnXC1uYW1lXC1mb3JcLWh1YW5neWFuXC1pc2xhbmRcKTsKK+S4jeaBpeS4i+WVjyA8IG5vdFwtZmVlbFwtYXNoYW1lZFwtdG9cLWFza1wtYW5kXC1sZWFyblwtZnJvbVwtb25lJydzXC1zdWJvcmRpbmF0ZXM7Civni70gPCBhXC1sZWdlbmRhcnlcLWFuaW1hbFwtd2l0aFwtc2hvcnRcLWZvcmVsZWdzXC13aGljaFwtcm9kZVwtYVwtd29sZjsKK+atkCA8IHVzZWRcLWluXC10cmFuc2xpdGVyYXRpbmdcLW5vblwtY2hpbmVzZVwtd29yZHNcLXN1Y2hcLWFzXC1ldXJvcGU7CivmsaggPCBtaVwtcml2ZXJcLWluXC1odW5hblwtcHJvdmluY2VcLXdoZXJlXC1xdVwteXVhblwtZHJvd25lZFwtaGltc2VsZjsKK+axnCA8IGFcLXN0cmVhbVwtd2hpY2hcLWxlYXZlc1wtdGhlXC1tYWluXC1icmFuY2hcLXRoZW5cLWxhdGVyXC1yZXR1cm5zOwor5Y2h5ouJT0sgPCBrYXJhb2tlXC1cKHNpbmdpbmdcLXRvXC1yZWNvcmRlZFwtaW5zdHJ1bWVudGFsXC1hY2NvbXBhbmltZW50XCk7CivkuK3lnIvmsJHoiKogPCBnZW5lcmFsXC1hZG1pbmlzdHJhdGlvblwtb2ZcLWNpdmlsXC1hdmlhdGlvblwtb2ZcLWNoaW5hXC1cKGNhYWNcKTsKK+ijnOmkiiA8IHRha2VcLWFcLXRvbmljXC1vclwtbm91cmlzaGluZ1wtZm9vZFwtdG9cLWJ1aWxkXC11cFwtb25lJydzXC1oZWFsdGg7CivmspnliKnnp5Hku4Dntq3liKkgPCBnZW5lcmFsXC1zaGFsaWthc2h2aWxpXC1cKGhlYWRcLW9mXC11c1wtam9pbnRcLWNoaWVmc1wtb2ZcLXN0YWZmXCk7CivnsIggPCBiYW1ib29cLW1hdFwtdXNlZFwtdG9cLXByb3RlY3RcLWNhcnJpYWdlXC1wYXNzZW5nZXJzXC1mcm9tXC1kdXN0Owor54i8IDwgYVwtc21hbGxcLXRhYmxlXC1vclwtdGllcmVkXC1zdGFuZFwtZmlsbGVkXC13aXRoXC1tZWF0XC1vZmZlcmluZ3M7CivkuInlnIvmvJTnvqkgPCBuYW1lXC1vZlwtYVwtY2xhc3NpY1wtbm92ZWxcLFwtXCJyb21hbmNlXC1vZlwtdGhlXC10aHJlZVwta2luZ2RvbXNcIjsKK+aLvOWRvSA8IHRvXC1iZVwtcmVhZHlcLXRvXC1yaXNrXC1vbmUnJ3NcLWxpZmVcLVwoaW5cLWZpZ2h0aW5nXCxcLXdvcmtcLFwtZXRjXC5cKTsKK+iDjOawtOS4gOaIsCA8IGZpZ2h0XC13aXRoXC1vbmUnJ3NcLWJhY2tcLXRvXC10aGVcLXJpdmVyXC1cLVwtZmlnaHRcLXRvXC13aW5cLW9yXC1kaWU7Civks5ogPCBhXC1zb3J0XC1vZlwtbmlnaHRpbmdhbGVcLXdoaWNoXC1pc1wtc2FpZFwtdG9cLXNpbmdcLWZvclwtdGhlXC1kYXduOwor5KGCIDwgdGhlXC1sb25nXC13b29kZW5cLWJ1bXBlclwtYXRcLXRoZVwtcmVhclwtb2ZcLWFcLWNhcnRcLW9yXC1jYXJyaWFnZTsKK+adr+W8k+ibh+W9sSA8IG1pc3Rha2luZ1wtdGhlXC1yZWZsZWN0aW9uXC1vZlwtYVwtYm93XC1pblwtdGhlXC1jdXBcLWZvclwtYVwtc25ha2U7Civkg74gPCB0b1wtb2ZmZXJcLXNtYWxsXC1waWdcLWFzXC1zYWNyaWZpY2VcLXdoZW5cLXdhcnNoaXBcLWdvZFwtb2ZcLWxpZmU7CivjvKogPCBmcmFnbWVudHNcLW9mXC1hXC10aWxlXC1oYXZlbicndFwtdFwtYmVlblwta2lsblwtZHJpZWRcLWNvbXBsZXRlbHk7CivjtJYgPCBuYW1lXC1vZlwtYVwtc3RyZWFtXC1pblwtc2hhbmRvbmdcLXByb3ZpbmNlXC1zb3V0aHdlc3RcLW9mXC1qaW5hbjsKK+OdiSA8IHNwYWNlXC1iZXR3ZWVuXC10aGVcLXRocm9uZVwtYW5kXC10aGVcLXJldGlyaW5nXC1yb29tXC1iZWhpbmRcLWl0Owor45arIDwgdXNlZFwtaW5cLW5hbWVzXC1mb3JcLW1pbm9yaXR5XC1ldGhuaWNcLWdyb3VwXC1pblwtYW5jaWVudFwtY2hpbmE7Civog4zkupXpm6LphIkgPCBsZWF2ZVwtb25lJydzXC1uYXRpdmVcLXBsYWNlXC1cKGVzcGVjaWFsbHlcLWFnYWluc3RcLW9uZScnc1wtd2lsbFwpOwor54KdIDwgc3RpclwtZnJ5XC1vclwtYm9pbFwtaW5cLXdhdGVyXC1vclwtb2lsXC10aGVuXC1jb29rXC13aXRoXC1hXC1zYXVjZTsKK+mBt+aAkiA8IHRvXC10YWtlXC1vbmUnJ3NcLWFuZ2VyXC1vdXRcLW9uXC1zYlwtXCh3aG9cLWRvZXNcLW5vdFwtZGVzZXJ2ZVwtaXRcKTsKK+azoueAvui1t+S8jyA8IG9mXC1hXC1waWVjZVwtb2ZcLXdyaXRpbmdcLXdpdGhcLW9uZVwtY2xpbWF4XC1mb2xsb3dpbmdcLWFub3RoZXI7CivkuI3ngrrlt7LnlJogPCByZWZyYWluXC1mcm9tXC1nb2luZ1wtdG9cLWV4dHJlbWVzXC1pblwtbWV0aW5nXC1vdXRcLXB1bmlzaG1lbnQ7CivkuI3ntITogIzlkIwgPCB0YWtlXC10aGVcLXNhbWVcLWFjdGlvblwtb3JcLXZpZXdcLXdpdGhvdXRcLXByaW9yXC1jb25zdWx0YXRpb247Civpo5vomY7pmoogPCBmbHlpbmdcLXRpZ2Vyc1wtXCh1c1wtYWlybWVuXC1pblwtY2hpbmFcLWR1cmluZ1wtd29ybGRcLXdhclwtdHdvXCk7Civmjpvlpb0gPCB0b1wtaGFuZ1wtdXBcLXByb3Blcmx5XC1cKHRlbGVwaG9uZVwsXC1waWN0dXJlXCxcLWNsb3RoZXNcLFwtZXRjXC5cKTsKK+aLlOavkiA8IGRyYXdcLW91dFwtcHVzXC1ieVwtYXBwbHlpbmdcLWFcLXBsYXN0ZXJcLXRvXC10aGVcLWFmZmVjdGVkXC1hcmVhOwor5byuIDwgYVwtY3Jvd3dib3dcLXdoaWNoXC1kaXNjaGFyZ2VkXC1zZXZlcmFsXC1ib2x0c1wtaW5cLXN1Y2Nlc3Npb247CivkqpkgPCBsZWF0aGVyXC13cmFwcGVkXC1jb2xsYXJcLWZvclwtYVwtZHJhZnRcLWFuaW1hbFwtb2ZcLWFcLWNhcnJpYWdlOwor5KeaIDwgdGhlXC1uYW1lXC1vZlwtYVwtcGxhY2VcLWluXC10aGVcLXNvdXRoXC13ZXN0XC1vZlwtaGViZWlcLXByb3ZpbmNlOwor55Wc5YqbIDwgYW5pbWFsXC1wb3dlcmVkXC1cKGFzXC1vcHBvc2VkXC10b1wtaHVtYW5cLW9yXC1tYWNoaW5lXC1wb3dlcmVkXCk7CivkoZ4gPCBsZWF0aGVyXC10aGF0XC13aW5kXC1yb3VuZFwtb25cLXRoZVwtc2hhZnRzXC1vZlwtYVwtYmlnXC1jYXJyaWFnZTsKK+SNnCA8IGFcLWJhc2tldFwtb3JcLWFcLWNhZ2VcLXVzZWRcLXRvXC1rZWVwXC13aWxkXC1hbmRcLWRvbWVzdGljXC1mb3dsczsKK+SHhiA8IGNhcGFjaXR5XC11bml0XC1pblwtZnJhbmNlXC1lcXVhbFwtdG9cLXRlblwtdGltZXNcLW9mXC1vbmVcLWxpdHJlOwor5IKFIDwgdG9cLWhhdmVcLWluc2lnaHRcLW9yXC12aXNpb25cLW9mXC1hXC1zaW1wbGVcLWFuZFwtaG9uZXN0XC1wZXJzb247Civjsr0gPCBuYW1lXC1vZlwtYVwtcml2ZXJcLWluXC10b2RheScnc1wtc291dGh3ZXN0XC1vZlwtc2hhbnhpXC1wcm92aW5jZTsKK+OukCA8IGFcLXJhY2tcLW9yXC1hXC1zdGFuZFwtd2l0aFwtdGhyZWVcLXN0aWNrc1wtdG9cLWNyb3NzXC1lYWNoXC1vdGhlcjsKK+OsuCA8IGFcLWtpbmRcLW9mXC1zZXJ2aWNlc1wtb3JcLWNlcmVtb25pZXNcLW9mXC1vZmZlcmluZ1wtc2FjcmlmaWNlczsKK+aal+iKseWFkiA8IGFcLXZlaWxlZFwtZGVzaWduXC1pbmNpc2VkXC1pblwtcG9yY2VsYWluXC1vclwtd292ZW5cLWluXC1mYWJyaWM7CivlhrDngq3kuI3nm7jlrrkgPCBhc1wtaW5jb21wYXRpYmxlXC1vclwtaXJyZWNvbmNpbGFibGVcLWFzXC1pY2VcLWFuZFwtaG90XC1jb2FsczsKK+W5q+iFlCA8IHZvY2FsXC1hY2NvbXBhbmltZW50XC1pblwtc29tZVwtdHJhZGl0aW9uYWxcLWNoaW5lc2VcLW9wZXJhczsKK+WllOWWqiA8IGhhc3RlblwtaG9tZVwtZm9yXC10aGVcLWZ1bmVyYWxcLW9mXC1hXC1wYXJlbnRcLW9yXC1ncmFuZHBhcmVudDsKK+eZveiKjSA8IFwocGVlbGVkXClcLXJvb3RcLW9mXC1oZXJiYWNlb3VzXC1wZW9ueVwtXChwYWVvbmlhXC1sYWN0aWZsb3JhXCk7Civpg4wgPCBuYW1lXC1vZlwtYW5cLWFuY2llbnRcLWhzaWVuXC1pblwtbW9kZXJuXC1nYW5zdVwvc2hhYW54aVwtYXJlYVwuOwor6IiI6LajIDwgaW50ZXJlc3RcLVwoZGlyZWN0ZWRcLXRvd2FyZHNcLFwtbm90XC1pbmhlcmVudFwtaW5cLXNvbWV0aGluZ1wpOwor5ouU572Q5a2QIDwgY3VwcGluZ1wtdGVjaG5pcXVlXC11c2VkXC1pblwtdHJhZGl0aW9uYWxcLWNoaW5lc2VcLW1lZGljaW5lOwor6ICwIDwgdG9vdGhsZXNzXC1yYWtlXC1mb3JcLWRyYXdpbmdcLWVhcnRoXC1vdmVyXC1uZXdseVwtc293blwtZ3JhaW47CivnkIAgPCBnZW1zXC1vZlwtcGVhcmxzXC1mb3JtZXJseVwtcHV0XC1pbnRvXC10aGVcLW1vdXRoXC1vZlwtYVwtY29ycHNlOwor5qiZ5YW1IDwgcGFyYWRlXC1ndWFyZHNcLVwodXN1YWxseVwtc3BhY2VkXC1vdXRcLWFsb25nXC1wYXJhZGVcLXJvdXRlc1wpOwor5KqDIDwgd2luZVwtY29udGFpbmVyXC11c2VkXC1ieVwtbWlub3JpdHlcLXRyaWJlXC1pblwtYW5jaWVudFwtdGltZXM7CivkpbcgPCBhXC1oaW5nZWRcLXNoZWFyXC1vclwtbG9uZ1wta25pZmVcLWZvclwtY3V0dGluZ1wtZm9kZGVyXC1vclwtaGF5Owor5KSpIDwgYW5cLW9ybmFtZW50XC1hdFwtdGhlXC1lbmRcLW9mXC1hXC1iZWx0XC11c2VkXC1pblwtYW5jaWVudFwtdGltZXM7CivknaogPCB0b1wtcHJvdmlkZVwtbW9uZXlcLW9yXC1naWZ0XC1hbmRcLXRvXC1jb25zdWx0XC1mb3J0dW5lXC10ZWxsZXI7CivkmZsgPCBjZXJlbW9uaWFsXC1kcmVzc1wtb2ZcLXRoZVwtZW1wZXJvclwtb3JcLXZlcnlcLWhpZ2hcLW9mZmljaWFsczsKK+SYpiA8IGFcLWtpbmRcLW9mXC1oZWFkXC1kcmVzc1wtd29yZVwtaW5cLWZ1bmVyYWxcLXJpdGVzXC1pblwtb2xkXC1kYXlzOwor5JifIDwga2luZFwtb2ZcLXNpbGtcLXdvdmVuXC13aXRoXC1kb3VibGVcLXRocmVhZHNcLWFuZFwtd2F0ZXJcLXByb29mOwor5JSRIDwgYVwtd2hpdGVcLWNvbG9yZWRcLWNsdXN0ZXJcLWdyb3duXC1hdFwtdGhlXC10aXBcLW9mXC1jb2dvbmdyYXNzOwor5ImyIDwgdGhpblwtYW5kXC1mbGF0XC1zbGlwc1wtb2ZcLWJhbWJvb1wtdXNlZFwtZm9yXC13ZWF2aW5nXC1wdXJwb3NlOwor47y9IDwgZnJhZ21lbnRzXC1vZlwtYVwtdGlsZVwtaGF2ZW4nJ3RcLWJlZW5cLWtpbG5cLWRyaWVkXC1jb21wbGV0ZWx5Owor47aBIDwgYWZ0ZXJcLWJsb2NraW5nXC10aGVcLXdhdGVyXC1mbG93XC10YWtlc1wtZGlmZmVyZW50XC13YXRlcndheTsKK+OvgCA8IGJvbmRzXC1hbmRcLWZldHRlcnNcLWZvclwtZmFsY29uc1wtYW5kXC1kb2dzXC11c2VkXC1pblwtaHVudGluZzsKK+OSviA8IGFcLWtpbmRcLW9mXC13cmFwcGVyXC11c2VkXC10b1wtY292ZXJcLW92ZXJcLXRoZVwtZmFjZVwtYW5kXC1oZWFkOwor5YWr6Z2i546y55OPIDwgYmVcLXNtb290aFwtYW5kXC1zbGlja1wtXChpblwtZXN0YWJsaXNoaW5nXC1zb2NpYWxcLXJlbGF0aW9uc1wpOwor5YWD5a6156+AIDwgdGhlXC1sYW50ZXJuXC1mZXN0aXZhbFwsXC1qYW51YXJ5XC0xNVwtb25cLXRoZVwtbHVuYXJcLWNhbGVuZGFyOwor55y+5b+X5oiQ5Z+OIDwgXCJ1bml0eVwtb2ZcLXdpbGxcLWlzXC1hblwtaW1wcmVnbmFibGVcLXN0cm9uZ2hvbGRcIlwtXChwcm92ZXJiXCk7CivlgIvpq5TmiLYgPCBhXC1zbWFsbFwtcHJpdmF0ZVwtYnVzaW5lc3NcLVwodXNlZFwtaW5cLW1haW5sYW5kXC1jaGluYVwtb25seVwpOwor5rOV5rW3IDwgbmFtZVwtb2ZcLWFcLWJ1ZGRoaXN0XC1tb25rXCxcLWZhaGFpXCxcLWZyb21cLW1hZGFtXC13aGl0ZVwtc25ha2U7CivooLIgPCB0aGVcLW1pbGxpcGVkZVwtc29tZXRpbWVzXC1jb25mb3VuZGVkXC13aXRoXC10aGVcLWdyb3dcLXdvcm07CivomKcgPCBhXC1wbGFudFwtd2hpY2hcLXJlc2VtYmxlc1wtd2hlYXRcLWJ1dFwtaGFzXC1ub1wtZWRpYmxlXC1ncmFpbjsKK+aZr+W+t+mOriA8IGppbmdcLWRlXC16aGVuXC1cKGFcLWNoaW5lc2VcLWNpdHlcLWluXC1qaWFuZ1wteGlcLeaxn+ilv1wtcHJvdmluY2VcKTsKK+mfi+eIvuW8l+mbt+iMsiA8IFwoZ2VvcmdlXClcLXdlaHJmcml0elwtXChiZWlqaW5nXC1idXJlYXVcLWNoaWVmXC1vZlwtbmV3c3dlZWtcKTsKK+mVt+WfjuWNoSA8IGdyZWF0XC13YWxsXC1jYXJkXC1cKGNyZWRpdFwtY2FyZFwtaXNzdWVkXC1ieVwtYmFua1wtb2ZcLWNoaW5hXCk7Civlk4josp3niL4gPCBcKHdlYnN0ZXJcKVwtaHViYmVsbFwtXChmb3JtZXJcLWFzc29jaWF0ZVwtYXR0b3JuZXlcLWdlbmVyYWxcKTsKK+iQrOWjveWxsSA8IG5hbWVcLW9mXC1hXC1wbGFjZVwsXC1sb25nZXZpdHlcLWhpbGxcLFwtaW5cLXN1bW1lclwtcGFsYWNlXC3poKTlkozlnJI7Civmi4npgqPng4ggPCBcKHByaW5jZVwpXC1yYW5hcmlkZGhcLVwoc29uXC1vZlwta2luZ1wtc2loYW5vdWtcLW9mXC1jYW1ib2RpYVwpOwor5KG0IDwgY2FycmlhZ2VcLXVzZWRcLWluXC1hbmNpZW50XC10aW1lc1wtdG9cLXRha2VcLWVuZW15XC1wb3NpdGlvbjsKK+SfuiA8IHdhbGtcLXNsb3dseVwtYmVjYXVzZVwtb2ZcLXRoZVwtd3JvbmdcLXBvc2l0aW9uXC1vZlwtdGhlXC1mZWV0Owor5ImjIDwgc2xpcHNcLW9mXC1iYW1ib29cLXByb3ZpZGVkXC1mb3JcLXdyaXRpbmdcLWluXC1hbmNpZW50XC10aW1lczsKK+SBuSA8IHRvXC1sb29rXC1hc2thbmNlXC1cLVwtXC1hXC1leHByZXNzaW9uXC1vZlwtZGlzZGFpblwtb3JcLWRlc3Bpc2U7CivjvIwgPCBsb3RcLW9mXC1tZWxvbnNcLWdyb3dpbmdcLWJ1dFwtdGhlXC1yb290XC1pc1wtd2Vha1wtYW5kXC1mZWVibGU7Civju6AgPCBqYWRlXC1oYW5naW5nXC1vblwtdGhlXC1zaWRlc1wtb2ZcLXRoZVwtY2FwXC1pblwtYW5jaWVudFwtdGltZXM7CivjrqMgPCBhXC1waWVjZVwtb2ZcLXdvb2RcLXVzZWRcLXRvXC1zdHJpa2VcLW9mZlwtZ3JhaW5cLWluXC1hXC1tZWFzdXJlOwor45OkIDwgdG9cLXN0cmlwXC10aGVcLXNraW5cLW9mXC10aGVcLWZhY2VcLVwtXC1cLWFuXC1pbW1pbmVudFwtY2FsYW1pdHk7CivljIXlubLliLYgPCBhXC1zeXN0ZW1cLW9mXC1wYXltZW50XC1wYXJ0bHlcLWluXC1raW5kXC1hbmRcLXBhcnRseVwtaW5cLWNhc2g7Civmipfml6XmiLDniK0gPCBcKGNoaW5hJydzXClcLXdhclwtb2ZcLXJlc2lzdGFuY2VcLWFnYWluc3RcLWphcGFuXC1cKDE5MzdcLTE5NDVcKTsKK+mhj+ecn+WNvyA8IG5hbWVcLW9mXC1hXC1wZXJzb25cLFwteWFuXC16aGVucWluZ1wsXC1hXC1mYW1vdXNcLWNhbGxpZ3JhcGhlcjsKK+eZvee0oOiyniA8IFwobmFtZVwtb2ZcLWFcLXBlcnNvblwpXC1iYWlcLXN1emhlblwsXC1mcm9tXC1tYWRhbVwtd2hpdGVcLXNuYWtlOwor56CAIDwgYnJpbGxpYW50bHlcLWNvbG9yZWRcLXN0b25lXC13aXRoXC12ZWluZWRcLXBhdHRlcm5zXC1pblwtaXQ7CivlvYjnkLQgPCB0b1wtcGxheVwtb3JcLXN0cnVtXC1hXC1sdXRlXC1vclwtb3RoZXJcLXN0cmluZ2VkXC1pbnN0cnVtZW50Owor55m96Zm2IDwgd2hpdGVcLXBvdHRlcnlcLVwob2ZcLXNoYW5nXC1keW5hc3RyeVwtMTZcLTExdGhcLWNlbnR1cnlcLWJjXCk7CivljIXlubIgPCBiZVwtcmVzcG9uc2libGVcLWZvclwtYVwtdGFza1wtdW5pdFwtdW50aWxcLWl0XC1pc1wtY29tcGxldGVkOwor5aSn5p2Q5bCP55SoIDwgdXNpbmdcLWFcLXRhbGVudGVkXC1wZXJzb25cLWluXC1hblwtaW5zaWduaWZpY2FudFwtcG9zaXRpb247CivnkLNcLuaItOe2reaWryA8IGx5bm5cLWRhdmlzXC1cKHVzXC1zdGF0ZVwtZGVwYXJ0bWVudFwtYXJtc1wtY29udHJvbFwtZXhwZXJ0XCk7CivlubPmlrkgPCBzcXVhcmVcLVwoYXNcLWluXC1zcXVhcmVcLWZvb3RcLFwtc3F1YXJlXC1taWxlXCxcLXNxdWFyZVwtcm9vdFwpOwor6JmSIDwgYW5cLWFtcGhpYmlvdXNcLWJlYXN0XC1yZXNlbWJsaW5nXC1hXC10aWdlclwtd2l0aFwtb25lXC1ob3JuOwor562BIDwgYVwtYmFtYm9vXC1mcmFtZVwtb25cLXdoaWNoXC1zaWxrd29ybXNcLXNwaW5cLXRoZWlyXC1jb2Nvb25zOwor5Lq65rCR6Iux6ZuE57SA5b+156KRIDwgbW9udW1lbnRcLXRvXC10aGVcLXBlb3BsZScnc1wtaGVyb2VzXCxcLWF0XC10aWFuYW5tZW5cLXNxdWFyZTsKK+WGiyA8IGFcLWRlc2VydFwtYVwtYm9yZGVyXC1wcmFpcmllXC10aGVcLTFzdFwtZm9ybVwtaXNcLXJhZGljYWxcLTEzOwor5LS3IDwgdXNlXC10aGVcLXdob2xlXC1waWVjZVwtb2ZcLWJhcmxleVwtdG9cLWZlcm1lbnRcLWZvclwtYnJld2luZzsKK+StniA8IGFcLWtpbmRcLW9mXC1zYWNyaWZpY2VzXC1vZmZlcmVkXC10b1wtZ29kc1wtb3JcLXRoZVwtZGVjZWFzZWQ7Civkp6AgPCBuYW1lXC1vZlwtYVwtcGxhY2VcLWluXC13aGF0XC1pc1wtdG9kYXknJ3NcLXNoYW5kb25nXC1wcm92aW5jZTsKK+SRqSA8IGFcLWtpbmRcLW9mXC1pbmxhbmRcLXJpdmVyc1wtd2Fyc2hpcFwtdXNlZFwtaW5cLXFpbmdcLWR5bmFzdHk7CivkjbggPCBhXC1sZWdlbmRhcnlcLWdvYXRcLWxpa2VcLWFuaW1hbFwtd2l0aFwtNFwtZWFyc1wtYW5kXC05XC10YWlsczsKK+SDqyA8IGFcLXNpbGljYXRlXC1zdWJzdGFuY2VcLWZyb21cLXRoZVwtc2FsdFwtd2VsbHNcLWluXC1zemVjaHdhbjsKK+O4nCA8IHRvXC1nZXRcLXRocm91Z2hcLXRoZVwtc3BhY2VcLWVuY2xvc2VkXC1ieVwtYVwtY29uc3RlbGxhdGlvbjsKK+O3rSA8IGFcLWNvbmljYWxcLWJyaWNrXC1zdHJ1Y3R1cmVcLWluXC13aGljaFwtdG9cLWxpZ2h0XC1hXC1iZWFjb247CivkuI3ogZ7kuI3llY8gPCBub3RcLWJvdGhlclwtdG9cLWFza1wtcXVlc3Rpb25zXC1vclwtbGlzdGVuXC10b1wtd2hhdCcnc1wtc2FpZDsKK+S4puihjOS4jeaCliA8IGJvdGhcLWNhblwtYmVcLWltcGxlbWVudGVkXC13aXRob3V0XC1jb21pbmdcLWludG9cLWNvbmZsaWN0Owor5q2l5q2l54K654efIDwgYWR2YW5jZVwtZ3JhZHVhbGx5XC1hbmRcLWVudHJlbmNoXC1vbmVzZWxmXC1hdFwtZXZlcnlcLXN0ZXA7CivnlL4gPCBncm91bmRcLXRoYXRcLWhhc1wtYmVlblwtdW5kZXJcLWN1bHRpdmF0aW9uXC1mb3JcLW9uZVwteWVhcjsKK+S4gOacm+eEoemamyA8IGFzXC1mYXJcLWFzXC10aGVcLWV5ZVwtY2FuXC1zZWVcLVwobGl0XDpcLWxvb2tcLWFmYXJcLW5vXC1ib3VuZFwpOwor5LiN6KaL57aT5YKzIDwgbm90XC10b1wtYmVcLWZvdW5kXC1pblwtdGhlXC1jbGFzc2ljc1wtXC1cLW5vdFwtYXV0aG9yaXRhdGl2ZTsKK+aSpembsuimi+aXpSA8IGRpc3BlbFwtdGhlXC1jbG91ZHNcLWFuZFwtc2VlXC10aGVcLXN1blwtXC1cLXJlc3RvcmVcLWp1c3RpY2U7Civmr5TkuIrkuI3otrPmr5TkuIvmnInkvZkgPCBmYWxsXC1zaG9ydFwtb2ZcLXRoZVwtYmVzdFwtYnV0XC1iZVwtYmV0dGVyXC10aGFuXC10aGVcLXdvcnN0Owor55m95Yaw5YawIDwgcGFpXC1waW5nXC1waW5nXC1cKHdlbGxcLWtub3duXC10YWl3YW5cLXBlcmZvcm1pbmdcLWFydGlzdFwpOwor5ouJ6LKdIDwgXChqb2huXClcLXJhYmVcLVwoZ2VybWFuXC1leWV3aXRuZXNzXC10b1wtbmFuamluZ1wtbWFzc2FjcmVcKTsKK+W3q+WxsSA8IG10XC5cLXd1XCxcLW9uXC10aGVcLWNoYW5namlhbmdcLXJpdmVyXC1ieVwtdGhlXC10aHJlZVwtZ29yZ2VzOwor56ahIDwgYVwtc2FjcmlmaWNlXC1hdFwtdGhlXC1iZWdpbm5pbmdcLW9mXC1hXC1taWxpdGFyeVwtY2FtcGFpZ247CivnpK4gPCBhbmNpZW50XC1iYWxsaXN0YVwtZm9yXC10aHJvd2luZ1wtaGVhdnlcLXN0b25lc1wtYVwtY2Fubm9uOwor5o2V5L+YIDwgY2FwdHVyZVwtZW5lbXlcLXBlcnNvbm5lbFwtXChmb3JcLWludGVsbGlnZW5jZVwtcHVycG9zZXNcKTsKK+S8r+aBqeaWryA8IFwobmljaG9sYXNcKVwtYnVybnNcLVwodXNcLXN0YXRlXC1kZXBhcnRtZW50XC1zcG9rZXNwZXJzb25cKTsKK+SvoCA8IHRoZVwtZml2ZVwtbG93ZXN0XC1waWVjZXNcLW9mXC1ib25lXC1vZlwtdGhlXC1zcGluYWxcLWNvbHVtbjsKK+SspiA8IGZvb2RcLWl0ZW1zXC1tZXJlbHlcLWFycmFuZ2VkXC1mb3JcLWRpc3BsYXlcLXB1cnBvc2VcLW9ubHk7CivkmZEgPCBhXC1waWVjZVwtb2ZcLXNhY2tjbG90aFwtd29yblwtb25cLXRoZVwtYnJlYXN0XC1pblwtbW91cm5pbmc7Civpj6LlrqIgPCBhcm1lZFwtZXNjb3J0XC1cKG9mXC10cmF2ZWxsZXJzXC1vclwtbWVyY2hhbnRzJydcLWNhcmF2YW5zXCk7CivkiLEgPCBhblwtb3BlblwtYmFtYm9vXC1iYXNrZXRcLXVzZWRcLXRvXC1mZWVkXC1kb21lc3RpY1wtYW5pbWFsczsKK+OqtSA8IGhhbGZcLW9mXC1hXC11bml0XC1vZlwtbWVhc3VyZW1lbnRcLXVzZWRcLWluXC1hbmNpZW50XC10aW1lczsKK+OhiCA8IHRoZVwtcm9wZXNcLWF0dGFjaGVkXC10b1wtdGhlXC1iaWVyXC1hbmRcLWhlbGRcLWJ5XC1tb3VybmVyczsKK+OapCA8IGFcLWxhZHlcLW9mZmljZXJcLW9mXC10aGVcLW1vbmFyY2gnJ3NcLXBhbGFjZVwtaW5cLW9sZFwtdGltZXM7CivlronmraXnlbbou4ogPCB3YWxrXC1vdmVyXC1sZWlzdXJlbHlcLWluc3RlYWRcLW9mXC1yaWRpbmdcLWluXC1hXC1jYXJyaWFnZTsKK+iyneavjSA8IHRoZVwtYnVsYlwtb2ZcLXRoZVwtZnJpdGlsbGFyeVwtXChmcml0aWxsYXJpYVwtdGh1bmJlcmdpaVwpOwor5ZCN5YudIDwgYVwtcGxhY2VcLWZhbW91c1wtZm9yXC1pdHNcLXNjZW5lcnlcLW9yXC1oaXN0b3JpY2FsXC1yZWxpY3M7CivmsJHmqIIgPCBtdXNpY1wsXC1lc3BcLlwtZm9sa1wtbXVzaWNcLFwtZm9yXC10cmFkaXRpb25hbFwtaW5zdHJ1bWVudHM7CivlkYAgPCBwYXJ0aWNsZVwtdXNlZFwtdG9cLWV4cHJlc3NcLXN1cnByaXNlXC1vclwtbWlsZFwtZW1waGFzaXM7CivpmZ3opb8gPCBzaGFhbnhpXC1wcm92aW5jZVwsXC1jaGluYVwtXChjYXBpdG9sXC1jaXR5XC1pc1wteGknJ2FuXC3opb/lrolcKTsKK+aXpeaWuSA8IHRoZVwtamFwYW5lc2VcLXNpZGVcLW9yXC1wYXJ0eVwtXChpblwtbmVnb3RpYXRpb25zXCxcLWV0Y1wuXCk7CivkuI3li53mnproiIkgPCB0b29cLW51bWVyb3VzXC10b1wtbWVudGlvblwtaW5kaXZpZHVhbGx5XC1vclwtb25lXC1ieVwtb25lOwor6Z23IDwgdGhlXC1sZWF0aGVyXC1iZWx0XC10aGF0XC1jb25uZWN0c1wtYVwtaG9yc2VcLXdpdGhcLWFcLWNhcnQ7CivorbwgPCB0b1wtc3VwZXJ2aXNlXC10b1wtY29uZmluZVwtYVwtZ292ZXJubWVudFwtZXN0YWJsaXNobWVudDsKK+apq+aKmCA8IFwoaG9yaXpvbnRhbFwtc3RhcnRpbmdcLXJpZ2h0XC1hbmdsZVwtY2hhcmFjdGVyXC1zdHJva2VcKTsKK+ilv+WuiSA8IHhpJydhblwtXChjaXR5XClcLFwtdGhlXC1jYXBpdG9sXC1jaXR5XC1vZlwtc2hhYW54aVwtcHJvdmluY2U7CivlsI/pnZIgPCBuYW1lXC1vZlwtYVwtcGVyc29uXCxcLXhpYW9xaW5nXCxcLWZyb21cLW1hZGFtXC13aGl0ZVwtc25ha2U7Civoh6jmkbkgPCB0b1wtY29weVwtXChhXC1tb2RlbFwtb2ZcLWNhbGxpZ3JhcGh5XC1vclwtcGFpbnRpbmdcLFwtZXRjXC5cKTsKK+WdqyA8IGFcLXN0YW5kXC1vblwtd2hpY2hcLXRvXC1yZXBsYWNlXC1nb2JsZXRzXC1hZnRlclwtZHJpbmtpbmc7Civlgpnlj5YgPCBiZVwtb25cLXRoZVwtd2FpdGluZ1wtbGlzdFwtXChmb3JcLWFkbWlzc2lvblwtdG9cLWFcLXNjaG9vbFwpOwor5LS9IDwgYVwtc21hbGxcLXJvdW5kXC1waWVjZVwtb2ZcLWRpc3RpbGxlcicnc1wtZ3JhaW5zXC1vclwteWVhc3Q7CivksI4gPCB0b1wtdHdpc3RcLXRoZVwtaGFpclwtaW5cLWFcLWtub3RcLW9uXC10aGVcLXRvcFwtb2ZcLXRoZVwtaGVhZDsKK+SqnSA8IGxlYXRoZXJcLWNvcmRcLXRoYXRcLXdpbmRpbmdcLW9uXC10aGVcLWhhbmRsZVwtb2ZcLWFcLWtuaWZlOwor6LOT6Iez5aaC5q24IDwgZ3Vlc3RzXC1mZWVsXC1hdFwtaG9tZVwtXChpblwtYVwtaG90ZWxcLFwtZ3Vlc3Rob3VzZVwsXC1ldGNcLlwpOwor5KGHIDwgdGhlXC1jcm9zc1wtYmFyXC1hdFwtdGhlXC1lbmRcLW9mXC10aGVcLXBvbGVcLW9mXC1hXC1jYXJyaWFnZTsKK+SegCA8IHRvXC1kZXNpcmVcLWZvclwtbW9yZVwtbW9uZXlcLXRoYW5cLW9uZScnc1wtcmlnaHRmdWxcLXNoYXJlOwor5JitIDwgdGhlXC1wbGVhdGVzXC1vblwtdGhlXC1sYXBlbFwtb2ZcLWFcLWdhcm1lbnRcLW9mXC10aGluXC1zaWxrOwor5JCIIDwgYVwtcGllY2VcLW9mXC1vbmVcLWZvb3RcLXR3b1wtaW5jaGVzXC1kcmllZFwtc2Vhc29uZWRcLW1lYXQ7CivkjYUgPCBjb250YWluZXJzXC1mb3JcLXdhdGVyXC1vclwtd2luZVwtdXNlZFwtaW5cLWFuY2llbnRcLXRpbWVzOwor5Iu+IDwgY290dG9uXC1hbmRcLXNpbGtcLXRvXC1iZVwtbGFpZFwtYW5kXC1hdHRhY2hlZFwtZWFjaFwtb3RoZXI7CivkiZAgPCBhXC10aGluXC1hbmRcLWxvbmdcLXN0cmlwXC1vZlwtYmFtYm9vXC1mb3JcLW1ha2luZ1wtYmFza2V0czsKK+SIuyA8IGFcLWhlYXZ5XC1tYXRzXC1vZlwtYmFtYm9vXC11c2VkXC1mb3JcLWRlZXBcLXdhdGVyXC1maXNoaW5nOwor5IegIDwgd3JlbmNoXC10b1wtYWRqdXN0XC10aGVcLXN0cmluZ1wtb25cLXN0cmluZ2VkXC1pbnN0cnVtZW50Owor5ISMIDwgdG9cLXBlcmZvcm1cLXJpdGllc1wtaW5cLWhvbm9yXC1vZlwtdGhlXC1hbmNlc3RyYWxcLXRlbXBsZTsKK+SDpiA8IGFcLWZsYXRcLWFuZFwtZ3JlYXRcLXJvY2tcLXBlb3BsZVwtc3F1YXRcLW9yXC1jcm91Y2hcLW9uXC1pdDsKK+O7gCA8IGZpbmVcLXN0b25lXC13aGljaFwtaXNcLWxpdHRsZVwtbGVzc1wtdmFsdWFibGVcLXRoYW5cLWphZGU7CivjsqwgPCBoYWlyXC1kZWNvcmF0aW9uc1wtb25cLWFcLWhlbG1ldFwtdXNlZFwtaW5cLWFuY2llbnRcLXRpbWVzOwor47GvIDwgZ2V0XC10aGVcLXVuYm9yblwtYmFieVwtZ29hdFwtYnlcLWtpbGxuZ1wtdGhlXC1tb3RoZXJcLWdvYXQ7CivjrrAgPCB0aGVcLXNtYWxsXC1iZWFtXC1zdXBwb3J0aW5nXC10aGVcLXJhZnRlcnNcLWF0XC10aGVcLWVhdmVzOwor46q2IDwgYVwtZHJ5XC1tZWFzdXJlXC0xMFwtb3JcLTVcLXRpbWVzXC10aGF0XC1vZlwtYVwtY2hpbmVzZVwtcGVjazsKK+WwvOi1q+mtryA8IFwoamF3YWhhcmxhbFwpXC1uZWhydVwtXChmaXJzdFwtcHJpbWVcLW1pbmlzdGVyXC1vZlwtaW5kaWFcKTsKK+OflyA8IG5hbWVcLW9mXC1hXC1zbWFsbFwtcHJpbmNpcGFsaXR5XC1pblwtd2hhdFwtaXNcLW5vd1wtc2hhbnhpOwor5pKl5rWq6byTIDwgYVwtZHJ1bVwtc2hhcGVkXC1yYXR0bGVcLVwodXNlZFwtYnlcLXBlZGxhcnNcLW9yXC1hc1wtYVwtdG95XCk7CivlsJbplqPliJfls7YgPCBzZW5rYWt1XC1pc2xhbmRzXC1cKGphcGFuZXNlXC1uYW1lXC1mb3JcLWRpYW95dVwtaXNsYW5kc1wpOwor5pys5pyrIDwgdGhlXC13aG9sZVwtY291cnNlXC1vZlwtYW5cLWV2ZW50XC1mcm9tXC1iZWdpbm5pbmdcLXRvXC1lbmQ7CivpoJPmjKsgPCB3aXRoXC1zeW5jb3BhdGVkXC1jYWRlbmNlXC1cKGJydXNoXC1zdHJva2VcLWluXC1wYWludGluZ1wpOwor57at5ZC+54i+5pePIDwgdGhlXC11eWd1clwtXCh1aWdodXJcKVwtbmF0aW9uYWxpdHlcLFwtbGl2aW5nXC1pblwteGluamlhbmc7CivniYjnlasgPCBhXC1waWN0dXJlXC1wcmludGVkXC1mcm9tXC1hblwtZW5ncmF2ZWRcLW9yXC1ldGNoZWRcLXBsYXRlOwor6YG/6KuxIDwgdGFib29cLWFnYWluc3RcLXVzaW5nXC10aGVcLXBlcnNvbmFsXC1uYW1lc1wtb2ZcLWVtcGVyb3JzOwor5oyJ5LiL6JGr6JiG5rWu6LW355OiIDwgc29sdmVcLW9uZVwtcHJvYmxlbVwtb25seVwtdG9cLWZpbmRcLWFub3RoZXJcLWNyb3BwaW5nXC11cDsKK+S8vSA8IHRyYW5zY3JpcHRpb25cLW9mXC1zYW5za3JpdFwtJydnaGEnJ1wtaW5cLWJ1ZGRoaXN0XC10ZXh0czsKK+WxoyA8IHN0cmF3XC1zYW5kYWxzXC1vclwtc2xpcHBlcnNcLXRoYXRcLWhhdmVcLW5vXC1oZWVsXC1iYWNrczsKK+WMl+Wkp+iNkiA8IHRoZVwtZ3JlYXRcLW5vcnRoZXJuXC13aWxkZXJuZXNzXC1cKGluXC1ub3J0aGVyblwtY2hpbmFcKTsKK+atpuadviA8IHd1c29uZ1wsXC1uYW1lXC1vZlwtYVwtcGVyc29uXCxcLWFcLWhlcm9cLWluXC1zaHVpXC1odVwtemh1YW47CivljYHkupTlpKcgPCAxXC01dGhcLXBhcnR5XC1jb25ncmVzc1wtXChvZlwtY2hpbmVzZVwtY29tbXVuaXN0XC1wYXJ0eVwpOwor5p2O5YWJ6ICAIDwgbGVlXC1rdWFuXC15ZXdcLVwoZm9ybWVyXC1wcmltZVwtbWluaXN0ZXJcLW9mXC1zaW5nYXBvcmVcKTsKK+ioseS7mSA8IG5hbWVcLW9mXC1hXC1wZXJzb25cLFwteHVcLXhpYW5cLFwtZnJvbVwtbWFkYW1cLXdoaXRlXC1zbmFrZTsKK+WEkOebuCA8IGF0dGVuZGFudFwtb2ZcLXRoZVwtYnJpZGVcLW9yXC1icmlkZWdyb29tXC1hdFwtYVwtd2VkZGluZzsKK+ijnOeAiSA8IHJlaW5mb3JjaW5nXC1hbmRcLXJlZHVjaW5nXC1tZXRob2RzXC1cKGluXC1hY3VwdW5jdHVyZVwpOwor5Y2X6I+v5pep5aCxIDwgc291dGhcLWNoaW5hXC1tb3JuaW5nXC1wb3N0XC1cKG5ld3NwYXBlclwtaW5cLWhvbmdcLWtvbmdcKTsKK+W5ueS6iyA8IGFkbWluaXN0cmF0aXZlXC1zZWNyZXRhcnlcLVwoaW5cLWNoYXJnZVwtb2ZcLXNvbWV0aGluZ1wpOwor55eF5YWl6IaP6IKTIDwgdGhlXC1kaXNlYXNlXC1oYXNcLWF0dGFja2VkXC10aGVcLXZpdGFsc1wtXC1cLWJleW9uZFwtY3VyZTsKK+W3q+WzvSA8IHd1eGlhXC1nb3JnZVwsXC1pblwtdGhlXC1jaGFuZ2ppYW5nXC1yaXZlclwtdGhyZWVcLWdvcmdlczsKK+a8jiA8IGFcLXBsYWNlXC13aGVyZVwtc21hbGxcLXN0cmVhbXNcLWZsb3dcLWludG9cLWFcLWxhcmdlXC1vbmU7CivmipjnrYYgPCBhZ2FpbnN0XC10aGVcLWJyaXN0bGVzXC1cKGJydXNoXC1tb3ZlbWVudFwtaW5cLXBhaW50aW5nXCk7Civmqr4gPCBncmFzc3lcLXBsYW50XC13aXRoXC1maWJyZXNcLWZyb21cLXdoaWNoXC1jbG90aFwtaXNcLW1hZGU7CivlsIjnt5ogPCBzcGVjaWFsXC1wdXJwb3NlXC1waG9uZVwtbGluZVwtb3JcLWNvbW11bmljYXRpb25zXC1saW5rOwor5ZyW5YWLIDwgXChnYXJ5XC1sXC5cKVwtdG9va2VyXC1cKG1vdG9yb2xhXC1jaGFpcm1hblwtb2ZcLXRoZVwtYm9hcmRcKTsKK+SwjCA8IHRvXC1iaW5kXC10aGVcLWhhaXJcLWluXC1hXC1rbm90XC1vblwtdGhlXC10b3BcLW9mXC10aGVcLWhlYWQ7CivkqbUgPCB0YW5uZXJcLXdob1wtbWFkZVwtdGhlXC1sZWF0aGVyXC1kcnVtXC1pblwtYW5jaWVudFwtdGltZXM7CivkurrmsJHooYzli5Xpu6ggPCBwZW9wbGUnJ3NcLWFjdGlvblwtcGFydHlcLVwocnVsaW5nXC1wYXJ0eVwtaW5cLXNpbmdhcG9yZVwpOwor5JqZIDwgYVwtc3Bvb25cLWZvclwtY29va2VkXC1yaWNlXC1tYWRlXC1vZlwtaG9yblwtb2ZcLWFuXC1hbmltYWw7CivkjLMgPCBhXC1raW5kXC1vZlwtdW5yZWZpbmVkXC1vclwtdW5wb2xpc2hlZFwtc2lsa2VuXC10ZXh0aWxlczsKK+SKuiA8IGFuXC1pbXBsZW1lbnRcLXRvXC1kcmF3XC1vclwtdG9cLWNvbGxlY3RcLXJvcGVzXC1vclwtY29yZHM7CivkiYMgPCBzbGlwZWRcLW9wZW5cLWJhbWJvb1wtd2l0aFwtdGhlXC1qb2ludHNcLXVzZWRcLWFzXC1hblwtb2FyOwor5ImAIDwgcmVjdGFuZ3VsYXJcLWNoZXN0XC1vclwtYm94XC13b3ZlblwtZnJvbVwtYmFtYm9vXC1zdHJpcHM7CivkhIsgPCB0b1wtcHJheVwtZm9yXC1wcmV2ZW50aW5nXC1vclwtZm9yZXN0YWxsaW5nXC1jYWxhbWl0aWVzOwor5IOuIDwgYVwtc3RvbmVcLWJ1aWxkXC1oeWRyYXVsaWNcLW1lYXN1cmVzXC1pblwtYW5jaWVudFwtdGltZXM7Civjvr8gPCByb2FyXC1vZlwtYXN0aG1hXC1vclwtZXhwZWN0b3JhdGVcLWZyb21cLWFcLWR5aW5nXC1wZXJzb247Civju6ggPCBpbmVcLXN0b25lXC13aGljaFwtaXNcLWxpdHRsZVwtbGVzc1wtdmFsdWFibGVcLXRoYW5cLWphZGU7CivjupAgPCBnZW5lcmFsbHlcLWNhbGxlZFwtZm9yXC1taW5vcml0eVwtZ3JvdXBzXC1pblwtb2xkXC1jaGluYTsKK+OvgiA8IHBpbGxhclwtb3JcLXBvc3RcLW9mXC1hXC1mcmFtZVwtb25cLXdoaWNoXC1zaWxrd29ybXNcLXNwaW47Civjn4sgPCBkZWVwXC1hbmRcLWxldmVsXC1ncm91bmRcLWd1bGx5XC1hdFwtdGhlXC1mb290XC1vZlwtYVwtaGlsbDsKK+OeqiA8IHRoZVwtYXBwZWFyYW5jZVwtb2ZcLXRoZVwtbW91bnRhaW5cLWlzXC1mbGF0XC1hbmRcLXNtb290aDsKK+aWnOmJpCA8IFwoZG93bndhcmRzXC1yaWdodFwtY29uY2F2ZVwtaG9va2VkXC1jaGFyYWN0ZXJcLXN0cm9rZVwpOwor6LGO5oqYIDwgXChkb3dud2FyZHNcLXN0YXJ0aW5nXC1yaWdodFwtYW5nbGVcLWNoYXJhY3Rlclwtc3Ryb2tlXCk7CivogIHlhYQgPCAnJ29sZFwtY2hhcCcnXC1cKGZvcm1cLW9mXC1hZGRyZXNzXC1iZXR3ZWVuXC1tYWxlXC1mcmllbmRzXCk7CivntITnv7Dmi4nosp0gPCBqb2huXC1yYWJlXC1cKGdlcm1hblwtZXlld2l0bmVzc1wtdG9cLW5hbmppbmdcLW1hc3NhY3JlXCk7CivooYUgPCBjb25zZWNyYXRlXC1zYWNyaWZpY2lhbFwtdmVzc2Vsc1wtYnlcLXNtZWFyaW5nXC1ibG9vZDsKK+iZoiA8IG5hbWVcLW9mXC1hbmNpZW50XC1mZXVkYWxcLXN0YXRlXC1pblwtc2hlbnhpXC1hbmRcLWh1bmFuOwor6LeR5rGf5rmWIDwgdG9cLW1ha2VcLWFcLWxpdmluZ1wtYXNcLWFcLXRyYXZlbGxpbmdcLXBlcmZvcm1lclwsXC1ldGNcLjsKK+S6pOaYk+mhjSA8IHN1bVwtb3JcLXZvbHVtZVwtb3JcLWFtb3VudFwtb2ZcLWJ1c2luZXNzXC10cmFuc2FjdGlvbnM7CivpvYkgPCBzdG9wcGFnZVwtb2ZcLXRoZVwtbm9zZVwtdG9cLXNwZWFrXC13aXRoXC1hXC1uYXNhbFwtdHdhbmc7CivmqavnrYYgPCBicmlzdGxlc1wtbHlpbmdcLWRvd25cLVwoYnJ1c2hcLW1vdmVtZW50XC1pblwtcGFpbnRpbmdcKTsKK+S4jeaVoui2iumbt+axoOS4gOatpSA8IGRhcmVcLW5vdFwtZ29cLW9uZVwtc3RlcFwtYmV5b25kXC10aGVcLXByZXNjcmliZWRcLWxpbWl0Owor5o6h6LO8IDwgbWFrZVwtcHVyY2hhc2VzXC1mb3JcLWFuXC1vcmdhbml6YXRpb25cLW9yXC1lbnRlcnByaXNlOwor5q2j5ZyoIDwgaW5cLXRoZVwtcHJvY2Vzc1wtb2ZcLVwoZG9pbmdcLXNvbWV0aGluZ1wtb3JcLWhhcHBlbmluZ1wpOwor6KSvIDwgY2hpbGRyZW4nJ3NcLWdhcm1lbnRzXC5cLWFcLW1hdFwtZm9yXC13cmFwcGluZ1wtZ2FybWVudHM7CivmnpfosZDmraMgPCBsaW5cLWZlbmdcLWNoZW5nXC1cKHRhaXdhblwtbWluaXN0ZXJcLW9mXC10aGVcLWludGVyaW9yXCk7CivloLHlnIsgPCBkZWRpY2F0ZVwtb25lc2VsZlwtdG9cLXRoZVwtc2VydmljZVwtb2ZcLW9uZScnc1wtY291bnRyeTsKK+iRo+W7uuiPryA8IHR1bmdcLWNoZWVcLWh3YVwtXChob25nXC1rb25nXC1sZWFkZXJcLWFmdGVyXC1qdWx5XC0xOTk3XCk7CivnrYbop7ggPCBicnVzaFwtc3Ryb2tlXC1pblwtY2hpbmVzZVwtcGFpbnRpbmdcLWFuZFwtY2FsbGlncmFwaHk7CivkuI3noLTkuI3nq4sgPCB3aXRob3V0XC1kZXN0cnVjdGlvblwtdGhlcmVcLWNhblwtYmVcLW5vXC1jb25zdHJ1Y3Rpb247CivljZfkuqzot68gPCBuYW5qaW5nXC1zdFwuXCxcLWxhcmdlXC1jb21tZXJjaWFsXC1zdHJlZXRcLWluXC1zaGFuZ2hhaTsKK+aioCA8IGFcLXNtYWxsXC1iZWFtXC1zdXBwb3J0aW5nXC10aGVcLXJhZnRlcnNcLWF0XC10aGVcLWVhdmVzOwor5pGjIDwgYVwtaGFuZGZ1bFwuXC10b1wtcGlja1wtdXBcLXdpdGhcLXRoZVwtZmluZ2Vyc1wuXC10b1wtc2VpemU7CivloJggPCBhXC1yYWlzZWRcLXBhdGhcLWJldHdlZW5cLWZpZWxkXC13aGljaFwtYWN0c1wtYXNcLWFcLWR5a2U7CivktpwgPCB0aGVcLXByb2Nlc3NcLXRvXC13aGl0ZW5cLXRoZVwtaXZvcnlcLW9yXC1lbGVwaGFudFwtdHVzazsKK+SuiSA8IGhvcnNlc1wta2VwdFwtYXRcLWFcLWNvdXJpZXJcLXN0YXRpb25cLWluXC1mb3JtZXJcLXRpbWVzOwor5KK1IDwgbmFtZVwtb2ZcLWFuXC1vbGRcLWNvdW50cnlcLWluXC10b2RheScnc1wtaHViZWlcLXByb3ZpbmNlOwor5KGfIDwgYVwtcmluZ1wtb2ZcLXRoZVwtaG9yaXpvbnRhbFwtZnJvbnRcLWJhclwtb25cLWFcLWNhcnJpYWdlOwor5J6bIDwgZGFuY2luZ1wtb2ZcLWFcLWVhc3Rlcm5cLW1pbm9yaXR5XC1ncm91cFwtaW5cLW9sZFwtY2hpbmE7CivknYwgPCBhXC1waWdcLXNlZWtcLWZvclwtZm9vZFwtdGhyb3VnaFwtZGlnZ2luZ1wtb25cLXRoZVwtZWFydGg7CivkkoEgPCBhXC1zbWFsbFwtYm9hdFwtY29ubmVjdGVkXC10b1wtdGhlXC1iYWNrXC1vZlwtYVwtYmlnXC1ib2F0Owor5ImLIDwgYVwtdmFyaWV0eVwtb2ZcLWJhbWJvb1wtc2hvb3RzXC10aGF0XC1zcHJvdXRcLWluXC13aW50ZXI7CivkiJQgPCB3aGlzdGxlXC1tYWRlXC1vZlwtcmVlZFwtd2l0aG91dFwtaG9sZXNcLWZvclwtZmluZ2VyaW5nOwor472ZIDwgb2ZmaWNpYWxcLWluXC1jaGFyZ2VcLW9mXC1mYXJtbGFuZHNcLWluXC1hbmNpZW50XC10aW1lczsKK+OzjiA8IGd1aWRlXC1vclwtbGVhZFwtdG9cLW1ha2VcLXRoZVwtd2F0ZXJcLWZsb3dpbmdcLXNtb290aGx5Owor47KqIDwgd29vbGVuXC1ibGFua2V0XC13aXRoXC1kZWNvcmF0aXZlXC1kZXNpZ25cLW9yXC1wYXR0ZXJuOwor47KoIDwgYVwtZGVjb3JhdGl2ZVwtZmluZVwtYmxhbmtldFwtb25cLXRoZVwtdG9wXC1vZlwtYVwtc2FkZGxlOwor46eLIDwgdG9cLWxlbmd0aGVuXC1hbmRcLWV4dGVudWF0ZVwtXC1cLVwtYXNcLWluXC1tYWtpbmdcLW5vb2RsZTsKK+OgnCA8IHlvdW5nXC1raWRzXC1zbWFydFwtYW5kXC1mYW1pbGlhclwtd2l0aFwtaHVtYW5cLWFmZmFpcnM7Civkvr/kurogPCBzb21lYm9keVwtd2hvXC1oYXBwZW5zXC10b1wtYmVcLW9uXC1oYW5kXC1mb3JcLWFuXC1lcnJhbmQ7CivjmbEgPCBlYXJ0aGVud2FyZVwtdXNlZFwtdG9cLWJha2VcLWNha2VzXC1pblwtbm9ydGhlcm5cLWNoaW5hOwor6Kyd6L6bIDwgY2hlYVwtc2ltXC1cKGNhbWJvZGlhblwtbmF0aW9uYWxcLWFzc2VtYmx5XC1wcmVzaWRlbnRcKTsKK+WklumbuyA8IHJlcG9ydHNcLWZyb21cLWZvcmVpZ25cLVwobm9uXC1jaGluZXNlXClcLW5ld3NcLWFnYW5jaWVzOwor5ZaBIDwgdGhlXC1tb3V0aFwtb2ZcLWFcLWZpc2hcLWF0XC10aGVcLXN1cmZhY2VcLW9mXC10aGVcLXdhdGVyOwor5o+OIDwgdG9cLXB1bGxcLXVwXC10aGVcLXNsZWV2ZXNcLWFuZFwtc3RyZXRjaFwtb3V0XC10aGVcLWFybXM7CivnrqwgPCB0aGVcLWN1dGljbGVcLW9mXC10aGVcLWJhbWJvb1wtYVwtYnJvYWRcLWxlYXZlZFwtYmFtYm9vOwor57235LqGIDwgYVwtbW9kYWxcLXBhcnRpY2xlXC1pbmRpY2F0aW5nXC1cKGRvbicndFwtbWluZFwtaXRcLFwtb2tcKTsKK+mdnOWxsSA8IGNoZW5nXC1zYW5cLVwoZWxlY3RvcmFsXC1jb25zdGl0dWVuY3lcLWluXC1zaW5nYXBvcmVcKTsKK+WFq+S7meahjCA8IG9sZFwtZmFzaGlvbmVkXC1zcXVhcmVcLXRhYmxlXC10b1wtc2VhdFwtZWlnaHRcLXBlb3BsZTsKK+WMheeUouWIsOaItiA8IGZpeGluZ1wtb2ZcLWZhcm1cLW91dHB1dFwtcXVvdGFzXC1mb3JcLWVhY2hcLWhvdXNlaG9sZDsKK+i7viA8IGhvcml6b250YWxcLXdvb2RlblwtYmFyXC1pblwtZnJvbnRcLW9mXC1hXC1zZWRhblwtY2hhaXI7CivmipPpo68gPCBhXC1raW5kXC1vZlwtZm9vZFwtcG9wdWxhclwtYW1vbmdcLWJlbGlldmVyc1wtaW5cLWlzbGFtOwor6JCGIDwgdGhlXC1jYXN0b3JcLW9pbFwtcGxhbnRcLWFsc29cLXVzZWRcLWZvclwtb3RoZXJcLXBsYW50czsKK+WhnuaLieWHoSA8IFwoc29ubnlcKVwtc2VyYXBoaW5cLVwoaGFpdGlhblwtYW1iYXNzYWRvclwtdG9cLXRhaXdhblwpOwor6YeR5aSn5LitIDwga2ltXC1kYWVcLWp1bmdcLVwobmV3bHlcLWVsZWN0ZWRcLXByZXNpZGVudFwtb2ZcLWtvcmVhXCk7Civnmb3mj48gPCBsaW5lXC1kcmF3aW5nXC1pblwtdHJhZGl0aW9uYWxcLWlua1wtYW5kXC1icnVzaFwtc3R5bGU7CivnsKAgPCBhblwtYW5jaWVudFwtdmVzc2VsXC11c2VkXC1mb3JcLWhvbGRpbmdcLWJvaWxlZFwtZ3JhaW47CivojIPmlq/lnaYgPCBcKGRpYW5uZVwpXC1mZWluc3RlaW5cLVwodXNcLXNlbmF0b3JcLWZyb21cLWNhbGlmb3JuaWFcKTsKK+mnsemnneelpeWtkCA8IG5hbWVcLW9mXC1hXC1ub3ZlbFwsXC1sdW9cLXR1b1wteGlhbmd6aVwsXC1ieVwtbGFvXC1zaGVcLeiAgeiIjTsKK+SysCA8IGFcLXNlY29uZFwtbmFtZVwtZm9yXC10aGVcLXBpZ2Vvblwtb3JcLXRoZVwtdHVydGxlXC1kb3ZlOwor6IC256mM5Z+6552j5pyr5LiW6IGW5b6S5pWZ5pyDIDwgdGhlXC1jaHVyY2hcLW9mXC1qZXN1c1wtY2hyaXN0XC1vZlwtbGF0dGVyXC1kYXlcLXNhaW50czsKK+SdpSA8IHRvXC1yb2FyXC1vclwtaG93bFwtZnJhbnRpY1wtYmFya3NcLW9mXC1kb2dzXC1vclwtd29sdmVzOwor5JSkIDwgdGhlXC1sdXNoXC1hbmRcLWx1eHVyaWFudFwtb2ZcLXRoZVwtZ3Jhc3NcLWFuZFwtZmxvd2VyczsKK+a2suaFi+awtCA8IGxpcXVpZFwtd2F0ZXJcLVwoYXNcLW9wcG9zZWRcLXRvXC1zdGVhbVwtb3JcLWljZVwsXC1lXC5nXC5cKTsKK+OvriA8IGFcLWtpbmRcLW9mXC10cmVlXC13aXRoXC1iaWdcLWxlYXZlc1wtYW5kXC1pblwtcmVkXC1jb2xvcjsKK+mAvOS4iuaokeWxsSA8IGJlXC1kcml2ZW5cLXRvXC1qb2luXC10aGVcLWxpYW5nc2hhblwtbW91bnRhaW5cLXJlYmVsczsKK+OUjSA8IGFcLWhpbmdlZFwtc2hlYXJcLW9yXC1sb25nXC1rbmlmZVwtZm9yXC1jdXR0aW5nXC1mb2RkZXI7Civop6PmlL7ou40gPCBwZW9wbGUnJ3NcLWxpYmVyYXRpb25cLWFybXlcLVwoaWVcLFwtdGhlXC1jaGluZXNlXC1hcm15XCk7CivllJDlsbEgPCB0YW5nXC1zaGFuXC1cKGFcLWNoaW5lc2VcLWNpdHlcLWluXC1oZWJlaVwt5rKz5YyXXC1wcm92aW5jZVwpOwor5bi45Lu755CG5LqL5ZyLIDwgcGVybWFuZW50XC1tZW1iZXJcLXN0YXRlXC1cKG9mXC11blwtc2VjdXJpdHlcLWNvdW5jaWxcKTsKK+eSnCA8IGFcLXNlbWljaXJjdWxhclwtamFkZVwtb3JuYW1lbnRcLXVzZWRcLWFzXC1hXC1wZW5kYW50Owor6YG/5auMIDwgYXZvaWRcLWRvaW5nXC1hbnl0aGluZ1wtdGhhdFwtbWF5XC1hcm91c2VcLXN1c3BpY2lvbjsKK+i2mee0q+mZvSA8IHpoYW9cLXppeWFuZ1wtXChmb3JtZXJcLWNoaW5lc2VcLWxlYWRlcnNoaXBcLWZpZ3VyZVwpOwor5aCx5bmVIDwgYW5ub3VuY2VcLXRoZVwtaXRlbXNcLW9uXC1hXC1cKHRoZWF0cmljYWxcKVwtcHJvZ3JhbW1lOwor6KusIDwgdG9cLW9wZW5cLXRvXC1iZWdpblwtdG9cLWV4cGxhaW5cLXRvXC1pbmZvcm1cLWFcLWxldHRlcjsKK+imquWutiA8IHBhcmVudHNcLW9mXC1vbmUnJ3NcLWRhdWdodGVyXC1pblwtbGF3XC1vclwtc29uXC1pblwtbGF3Owor5Y2X6L2F5YyX6L2NIDwgXChmaWdcLlwpXC1hY3RcLWluXC1hXC13YXlcLXRoYXRcLWRlZmVhdHNcLW9uZScnc1wtcHVycG9zZTsKK+eMuSA8IHdpbGRcLWFuaW1hbFwtbWVudGlvbmVkXC1pblwtc2hvcnRcLXN0b3J5XC1ieVwtbHVcLXh1bjsKK+eKvCA8IGFcLWZpZXJjZVwtbW9uZ29saWFuXC13b2xmXC1kcmFnb24nJ3NcLWhlYWRcLW9uXC1yb29mczsKK+a5kyA8IGFuXC1hZmZsdWVudFwtb2ZcLXRoZVwtcml2ZXJcLXlhbmd0emVcLW5lYXJcLWtpdWtpYW5nOwor5q2aIDwgdXNlZFwtaW5cLW5hbWVcLW9mXC1mYW1vdXNcLWtvcmVhblwtcGFpbnRlclwtY2VuZ1wtc2VuOwor5L+d5aSW5bCx6YarIDwgXChvZlwtYVwtcHJpc29uZXJcKVwtcmVsZWFzZWRcLWZvclwtbWVkaWNhbFwtdHJlYXRtZW50Owor5Zac57OWIDwgc3dlZXRcLWdpdmVuXC1vblwtYVwtaGFwcHlcLW9jY2FzaW9uXC1cKGVzcFwuXC13ZWRkaW5nXCk7Civmi5zlo70gPCBjb25ncmF0dWxhdGVcLWFuXC1lbGRlcmx5XC1wZXJzb25cLW9uXC1oaXNcLWJpcnRoZGF5Owor6JK46JK45pel5LiKIDwgYmVjb21pbmdcLW1vcmVcLXByb3NwZXJvdXNcLXdpdGhcLWVhY2hcLXBhc3NpbmdcLWRheTsKK+S2myA8IHRvXC1zZXBhcmF0ZVwtdGhlXC1tZWF0XC1mcm9tXC10aGVcLWJvbmVzXC13aXRoXC10ZWV0aDsKK+SznCA8IGFcLWtpbmRcLW9mXC1iaXJkXC13aGljaFwtc2hhcmVzXC1pdHNcLW5lc3RcLXdpdGhcLXJhdHM7Civkso0gPCBhXC1wZXJjaFwtbGlrZVwtZmlzaFwtd2l0aFwtd2hpdGVcLWJvZHlcLWFuZFwtcmVkXC10YWlsOwor5Km2IDwgc2FkZGxlXC1hbmRcLXJlaW5cLWV0Y1wuXC1mb3JcLXRoZVwtaW1wZXJpYWxcLWNhcnJpYWdlOwor54OP6a2v5pyo6b2KIDwgdXJ1bXFpXC1cKGNhcGl0YWxcLW9mXC14aW5qaWFuZ1wtYXV0b25vbW91c1wtcmVnaW9uXCk7CivlronlnJ/ph43pgbcgPCBoYXRlXC10b1wtbGVhdmVcLWFcLXBsYWNlXC13aGVyZVwtb25lXC1oYXNcLWxpdmVkXC1sb25nOwor5Je9IDwgYVwtc21hbGxcLWdhZGZseVwtdGhhdFwtc3Vja1wtYmxvb2RcLW9mXC1ob3JzZVwtb3JcLWNvdzsKK+SJtCA8IGFcLWJhbWJvb1wtd2FyZVwtdG9cLWNvbGxlY3RcLWFuZFwta2VlcFwtc29tZXRoaW5nXC1pbjsKK+SJhSA8IHNtYWxsXC1iYW1ib29cLXdob3NlXC1qb2ludHNcLWFyZVwtdGhyZWVcLWZlZXRcLWFwYXJ0Owor5ISmIDwgdG9cLXB1dFwtZm9ydGhcLWVhcnNcLWFuZFwtdG9cLWJsb3Nzb21cLW9mXC10aGVcLWdyYWluczsKK+aUv+W6nOapn+mXnOmWi+aUvuezu+e1seS6kumAo+e4veWJhyA8IGdvdmVybm1lbnRcLW9wZW5cLXN5c3RlbVwtaW50ZXJjb25uZWN0aW9uXC1wcm9maWxlOwor472pIDwgY29ubmVjdGVkXC1iYW5rc1wtb2ZcLWVhcnRoXC1vclwtcGF0aHNcLWluXC10aGVcLWZpZWxkOwor5Lim6KGMIDwgaW5cLXBhcmFsbGVsXC1cW2RldmVsb3BtZW50XCxcLWltcGxlbWVudGF0aW9uXCxcLWV0Y1xdOwor47mDIDwgdHdvXC1icmluZGxlZFwtY293c1wtdG9cLXBsb3VnaFwtZmFjZVwtdG9cLWVhY2hcLW90aGVyOwor5Lyv5p2wIDwgXChzYW11ZWxcKVwtYmVyZ2VyXC1cKHVzXC1uYXRpb25hbFwtc2VjdXJpdHlcLWFkdmlzb3JcKTsKK+O2nyA8IGFuXC1hbmNpZW50XC1uZW1lXC1vZlwtYVwtcml2ZXJcLWluXC1zaGFueGlcLWFuZFwtaGViZWk7CivmnbHnm58gPCBhc2VhblwtXChhc3NvY2lhdGlvblwtb2ZcLXNvdXRoZWFzdFwtYXNpYW5cLW5hdGlvbnNcKTsKK+OyiCA8IHRoZVwtbmFtZVwtb2ZcLXRoZVwtbXVzaWNcLW9mXC10aGVcLWxlZ2VuZGFyeVwtZW1wZXJvcjsKK+OskCA8IGFcLXN0YXRlXC1kdXJpbmdcLXRoZVwtcGVyaW9kXC1vZlwtc3ByaW5nXC1hbmRcLWF1dHVtbjsKK+OhmyA8IG5hbWVcLWZvclwtYVwtd29ya21hblwtd2hvXC1hcHBseVwtY29sb3JcLWluXC1wYWludGluZzsKK+W3peWVhumKgOihjCA8IGluZHVzdHJpYWxcLWFuZFwtY29tbWVyY2lhbFwtYmFua1wtb2ZcLWNoaW5hXC1cKGljYmNcKTsKK+OfoiA8IHRoZVwtcm9ja3NcLW9uXC10aGVcLWhpbGxzXC1hcmVcLW9mXC1kaWZmZXJlbnRcLXNoYXBlczsKK+OcvCA8IGNoaWxkcmVuXC1vZlwtb25lJydzXC1icm90aGVyXC1cLVwtXC1uZXBoZXdzXC1vclwtbmllY2VzOwor5pu+57aTIDwgXChyZWZlcnNcLXRvXC1zb21ldGhpbmdcLXRoYXRcLWhhcHBlbmVkXC1wcmV2aW91c2x5XCk7CivjlL0gPCBhXC1raW5kXC1vZlwtd2luZVwtcG90XC1vclwtamFyXC11c2VkXC1pblwtYW5jaWVudFwtdGltZTsKK+OTgyA8IHRvXC1zYWNyaWZpY2VcLWJ5XC1wb3VyaW5nXC1vdXRcLWFcLWxpYmF0aW9uXC1vZlwtd2luZTsKK+ORniA8IGFcLW1haWRcLXdob1wtYWNjb21wYW5pZXNcLWFcLWJyaWRlXC10b1wtaGVyXC1uZXdcLWhvbWU7Civlj6/oposgPCBpdFwtY2FuXC1jbGVhcmx5XC1iZVwtc2VlblwtXCh0aGF0XC10aGlzXC1pc1wtdGhlXC1jYXNlXCk7CivkuovoiIfpoZjpgZUgPCB0aGluZ3NcLWRvbicndFwtdHVyblwtb3V0XC10aGVcLXdheVwteW91XC13YW50XC1vclwtcGxhbjsKK+aFsOWVjyA8IGV4cHJlc3NcLXN5bXBhdGh5XCxcLWdyZWV0aW5nc1wsXC1jb25zb2xhdGlvblwsXC1ldGNcLjsKK+a1t+W+tyA8IGh5ZGVcLVwoZWdcLFwtaG91c2VcLWp1ZGljaWFyeVwtY2hhaXJtYW5cLWhlbnJ5XC1oeWRlXCk7CivlvLXnh4jntZDntrUgPCBiZVwtZGVjb3JhdGVkXC13aXRoXC1sYW50ZXJuc1wtYW5kXC1jb2xvcmVkXC1iYW5uZXJzOwor6ZaJ6ZaA5oCd6YGOIDwgc2h1dFwtb25lc2VsZlwtdXBcLWFuZFwtcG9uZGVyXC1vdmVyXC1vbmUnJ3NcLW1pc3Rha2VzOwor576F5pavIDwgcm90aFwtXChlZ1wsXC1ocndcLWV4ZWN1dGl2ZVwtZGlyZWN0b3JcLWtlbm5ldGhcLXJvdGhcKTsKK+mWiemXnOiHquWuiCA8IGNsb3NlXC10aGVcLWNvdW50cnlcLXRvXC1pbnRlcm5hdGlvbmFsXC1pbnRlcmNvdXJzZTsKK+aXgeiBvSA8IGJlXC1hXC12aXNpdG9yXC1cKGF0XC1hXC1tZWV0aW5nXCxcLWNsYXNzXCxcLXRyaWFsXCxcLWV0Y1wpOwor5LqS6YCa5oCnIDwgaW50ZXJvcGVyYWJpbGl0eVwtXChvZlwtY29tbXVuaWNhdGlvbnNcLWVxdWlwbWVudFwpOwor55WyIDwgdG9cLWN1bHRpdmF0ZVwtbGFuZFwtYnlcLWZpcnN0XC1zZXR0aW5nXC1maXJlXC10b1wtaXQ7Civnr5ogPCByb3VuZFwtb3JcLW92YWxcLWNvdmVyZWRcLWJhc2tldHNcLXdpdGhcLXNob3J0XC1sZWdzOwor5o6o6L6tIDwgdG9cLWRlY2xpbmVcLVwoYW5cLWFwcG9pbnRtZW50XCxcLWludml0YXRpb25cLFwtZXRjXC5cKTsKK+S4jemBv+iJsemaqiA8IHNocmlua1wtb3JcLWZsaW5jaFwtZnJvbVwtbm9cLWRpZmZpY3VsdHlcLW9yXC1kYW5nZXI7Civnmb3nl6IgPCBkeXNlbnRlcnlcLWNoYXJhY3Rlcml6ZWRcLWJ5XC13aGl0ZVwtbXVjb3VzXC1zdG9vbDsKK+iPr+S9lyA8IG5hbWVcLW9mXC1hXC1mYW1vdXNcLWRvY3RvclwtaW5cLW9sZFwtdGltZXNcLFwtaHVhXC10dW87CivnspQgPCBjYWtlc1wtbWFkZVwtZnJvbVwtcmljZVwtZmxvdXJcLXR3aXN0ZWRcLWludG9cLXJpbmdzOwor5oikIDwgdG9cLWluZnJpbmdlXC1hXC10cmFkZVwtbWFya1wtdG9cLXBsZWRnZVwtYW5cLWFydGljbGU7CivpmL/ml7rmm7LmspsgPCBuZ2F3YW5nXC1jaG9lcGVsXC1cKHRpYmV0YW5cLFwtZnVsbGJyaWdodFwtc2Nob2xhclwpOwor5qOS5qeMIDwgd29vZGVuXC1jbHViXC1cKHVzZWRcLXRvXC1iZWF0XC1jbG90aGVzXC1pblwtd2FzaGluZ1wpOwor5YWo5paX54WlIDwgY2h1blwtZG9vXC1od2FuXC1cKGZvcm1lclwtc291dGhcLWtvcmVhblwtcHJlc2lkZW50XCk7CivkuaQgPCBmaXJzdFwtY2hhcmFjdGVyXC1vZlwta29yZWFuXC1wbGFjZVwtbmFtZVwtJydoYWxwaG8nJzsKK+S2qCA8IGluXC10aGVcLW1hbm5lclwtYVwtdG9vdGhsZXNzXC1wZXJzb25cLWNoZXdpbmdcLWZvb2Q7CivkrpsgPCBleHRyYVwtaG9yc2VcLWhhcm5lc3NlZFwtYnlcLXRoZVwtc2lkZVwtb2ZcLXRoZVwtdGVhbTsKK+SjoCA8IG5hbWVcLW9mXC1hXC12aWxsYWdlXC1pblwtdG9kYXknJ3NcLXNpY2h1YW5cLXByb3ZpbmNlOwor5KOfIDwgbmFtZVwtb2ZcLXBhdmlsaW9uXC1pblwtdG9kYXknJ3NcLXNoYW5kb25nXC1wcm92aW5jZTsKK+SgkiA8IGNvdXJ0ZXN5XC1vZlwtYVwtbWlub3JpdHlcLWdyb3VwXC1pblwtYW5jaWVudFwtdGltZXM7CivknbAgPCB0b1wtc3RvcmVcLW9yXC10b1wtYWNjdW11bGF0ZVwtcmljaGVzXC1vclwtdmFsdWFibGVzOwor5JyxIDwgbmFtZVwtb2ZcLWFcLXBhdmlsaW9uXC1pblwtdG9kYXknJ3NcLXNoYW54aVwtcHJvdmluY2U7Civkk50gPCBjaGluZXNlXC1wZW5uaXNldHVtXClcLXBlbm5pc2V0dW1cLWFsb3BlY3Vyb2lkZXNcKTsKK+SLiSA8IGFcLW51bWVyYXJ5XC1hZGp1bmN0XC1mb3JcLXByYWN0aWNhbGx5XC1ldmVyeXRoaW5nOwor5IqjIDwgbGlnaHRcLXllbGxvd1wtZHVzdFwtbGlrZVwtZnVuZ29pZFwtZ3Jvd3RoXC1vblwtd2luZTsKK+SHkiA8IG51bWVyYXJ5XC1hZGp1bmN0XC1mb3JcLXBlcmlvZGljXC10ZXJtc1wtb3JcLWV2ZW50czsKK+O/lyA8IGRpc2Vhc2VcLW9mXC10aGVcLXByaXZhdGVcLXBhcnRcLW9mXC10aGVcLWh1bWFuXC1ib2R5Owor476rIDwgaGVtaXBsZWdpYVwtXC1cLVwtcGFyYWx5c2lzXC1vZlwtaGFsZlwtb2ZcLW9uZScnc1wtYm9keTsKK+O7niA8IGZsb3VyaXNoaW5nXC1hbmRcLXJhZGlhbnRcLW9mXC10aGVcLWNvbG9yZnVsXC1qYWRlczsKK+O5sSA8IG5hbWVcLW9mXC1hXC1kb2dcLWluXC10aGVcLXBlcmlvZFwtb2ZcLXdhcnJpbmdcLXN0YXRlczsKK+OypSA8IGFcLWtpbmRcLW9mXC13b29sZW5cLXRleHRpbGVzXC13aXRoXC1jdXJ2ZWRcLXBhdHRlcm47CivjrbkgPCBuYW1lXC1vZlwtYVwtY291bnR5XC1pblwtdG9kYXknJ3NcLXNoYW5kb25nXC1wcm92aW5jZTsKK+OjryA8IHRoZVwtZHJlc3Nlc1wtdG9zc1wtYW5kXC1mbHlpbmdcLWFib3V0XC1pblwtdGhlXC13aW5kOwor46KvIDwgYm93c1wtdXNlZFwtYnlcLXRoZVwtc29uXC1vZlwtaGVhdmVuXC1cLVwtXC10aGVcLWVtcGVyb3I7CivjoYogPCBhXC1raW5kXC1vZlwtY2FwXC13b3JuXC1ieVwtYW5cLW9mZmljZXJcLWluXC1vbGRcLWNoaW5hOwor5Lq65rCR5aSn5pyD5aCCIDwgZ3JlYXRcLWhhbGxcLW9mXC10aGVcLXBlb3BsZVwsXC1hdFwtdGlhbmFubWVuXC1zcXVhcmU7CivjmasgPCBhXC1mb3VudGFpblwtb3JcLXNwcmluZ1wtb3V0XC1mcm9tXC10aGVcLXVuZGVyZ3JvdW5kOwor45mNIDwgbmFtZVwtb2ZcLWFcLXBsYWNlXC1pblwtdG9kYXknJ3NcLWd1YW5nZG9uZ1wtcHJvdmluY2U7CivmjqLot6/ogIUgPCBwYXRoZmluZGVyXC1cKHNwYWNlXC1jcmFmdFwtc2VudFwtdG9cLW1hcnNcLWJ5XC1uYXNhXCk7Civnlavom4fmt7votrMgPCBydWluXC10aGVcLWVmZmVjdFwtYnlcLWFkZGluZ1wtd2hhdFwtaXNcLXN1cGVyZmx1b3VzOwor5bSU5Lqe55CzIDwgY2hhcmxlc1wteWFoXC1saW5cLXRyaWVcLVwoYXJrYW5zYXNcLXJlc3RhdXJhbnRldXJcKTsKK+WMl+Wkp+ilv+a0i+WFrOe0hOe1hOe5lCA8IHRoZVwtbm9ydGhcLWF0bGFudGljXC10cmVhdHlcLW9yZ2FuaXphdGlvblwtXChuYXRvXCk7CivlsIjmoYjntYQgPCBzcGVjaWFsXC1cKGxlZ2FsXHxqdWRpY2lhbFwpXC1pbnZlc3RpZ2F0aW9uc1wtZ3JvdXA7Civku5fnvqnln7foqIAgPCBzcGVha1wtb3V0XC1vblwtYVwtbWF0dGVyXC1vZlwtcHJpbmNpcGxlXC1vclwtanVzdGljZTsKK+WFteiHqOWfjuS4iyA8IHRoZVwtYXR0YWNraW5nXC1hcm15XC1oYXNcLXJlYWNoZWRcLXRoZVwtY2l0eVwtZ2F0ZXM7CivlkJ7lkJAgPCB0b1wtdGFrZVwtaW5cLWFuZFwtc2VuZFwtb3V0XC1cKGluXC1sYXJnZVwtcXVhbnRpdGllc1wpOwor6ZKnIDwgdW5pdFwtb2ZcLW1lYXN1cmVcLWVxdWl2YWxlbnRcLXRvXC10aGlydHlcLWNhdHRpZXM7CivlprIgPCBjb25jdWJpbmVcLW9mXC1sYXN0XC1ydWxlclwtb2ZcLXRoZVwtc2hhbmdcLWR5bmFzdHk7Civnk7QgPCBjb25jYXZlXC1jaGFubmVsc1wtb2ZcLXRpbGluZ1wtYVwtbG9uZ1wtbmVja2VkXC1qYXI7CivlqrUgPCBhXC1tYWlkXC13aG9cLWFjY29tcGFuaWVzXC1icmlkZVwtdG9cLWhlclwtbmV3XC1ob21lOwor6IOZIDwgbWVhdFwtb2ZmZXJlZFwtaW5cLXNhY3JpZmljZVwtdG9cLW9uZScnc1wtYW5jZXN0b3JzOwor6J+KIDwgYVwtZmx5XC13aGljaFwtaXNcLXVzZWRcLXNpbWlsYXJseVwtdG9cLWNhbnRoYXJpZGVzOwor5pa35qmLIDwgdGhlXC1icm9rZW5cLWJyaWRnZVwtXChhdFwtd2VzdFwtbGFrZVwtaW5cLWhhbmd6aG91XCk7CivlpLHmlZfmmK/miJDlip/kuYvmr40gPCBcImZhaWx1cmVcLWlzXC10aGVcLW1vdGhlclwtb2ZcLXN1Y2Nlc3NcIlwtXChwcm92ZXJiXCk7CivmsKPlip8gPCBxaWdvbmdcLFwtYVwtc3lzdGVtXC1vZlwtZGVlcFwtYnJlYXRoaW5nXC1leGVyY2lzZXM7CivnnIHntJogPCBwcm92aW5jaWFsXC1sZXZlbFwtXChlZ1wsXC1wcm92aW5jaWFsXC1nb3Zlcm5tZW50XCk7CivmrabmiZMgPCBhY3JvYmF0aWNcLWZpZ2h0aW5nXC1pblwtY2hpbmVzZVwtb3BlcmFcLW9yXC1kYW5jZTsKK+api+acrOm+jeWkqumDjiA8IGhhc2hpbW90b1wsXC1yeXV0YXJvXC1cKHByaW1lXC1taW5pc3Rlclwtb2ZcLWphcGFuXCk7CivpqLIgPCB0aGVcLWZlbWFsZVwtb2ZcLWNlcnRhaW5cLWFuaW1hbHNcLXN1Y2hcLWFzXC1ob3JzZXM7CivloLHlpLEgPCByZXBvcnRcLXRoZVwtbG9zc1wtdG9cLXRoZVwtYXV0aG9yaXRpZXNcLWNvbmNlcm5lZDsKK+S/nemkiiA8IHRha2VcLWdvb2RcLWNhcmVcLW9mXC1cKG9yXC1jb25zZXJ2ZVwpXC1vbmUnJ3NcLWhlYWx0aDsKK+W5s+S/oSA8IG9yZGluYXJ5XC1tYWlsXC1cKGFzXC1vcHBvc2VkXC10b1wtYWlyXC1tYWlsXCxcLWV0Y1wuXCk7CivliIbkuqsgPCBvYnRhaW5cLW9uZScnc1wtc2hhcmVcLVwob2ZcLXdlYWx0aFwsXC1yaWdodHNcLFwtZXRjXC5cKTsKK+e0heWgoSA8IHJlZFwtZm9ydFwtXChoaXN0b3JpY1wtYnVpbGRpbmdcLWluXC1kZWxoaVwsXC1pbmRpYVwpOwor54+TIDwgdHdvXC1oZW1pc3BoZXJpY2FsXC1vYmplY3RzXC11c2VkXC1pblwtZGl2aW5hdGlvbjsKK+WFg+WutSA8IHN3ZWV0XC1kdW1wbGluZ3NcLW1hZGVcLW9mXC1nbHV0aW5vdXNcLXJpY2VcLWZsb3VyOwor6IOM5Z+O5YCf5LiAIDwgbWFrZVwtYVwtbGFzdFwtZGl0Y2hcLXN0YW5kXC1iZWZvcmVcLXRoZVwtY2l0eVwtd2FsbDsKK+aVpyA8IHRvXC1waWNrXC11cFwtdGhpbmdcLXdpdGhcLWNob3BzdGlja3NcLW9yXC1waW5jZXJzXC47CivmiYQgPCBsYXJnZVwtcmluZ1wtb25cLWFcLWZyb250XC1kb29yXC11c2VkXC1hc1wtYVwta25vY2tlcjsKK+WrjyA8IHRoZVwtcGxhY2VcLXdoZXJlXC10aGVcLXN1cHJlbWVcLXN0b3Jlc1wtaGlzXC1ib29rczsKK+iHqOWvqyA8IHRvXC1jb3B5XC1cKGFcLW1vZGVsXC1vZlwtY2FsbGlncmFwaHlcLW9yXC1wYWludGluZ1wpOwor5pyI6aSFIDwgbW9vblwtY2FrZVwtXChlc3BcLlwtZm9yXC10aGVcLW1pZFwtYXV0dW1uXC1mZXN0aXZhbFwpOwor55m+5oSf5Lqk6ZuGIDwgYWxsXC1zb3J0c1wtb2ZcLWZlZWxpbmdzXC13ZWxsXC11cFwtaW5cLW9uZScnc1wtaGVhcnQ7CivksYEgPCBhXC1raW5kXC1vZlwtbWVkaXVtXC1zaXplZFwtZmlzaFwtZ3Jvd25cLWluXC10aGVcLXNlYTsKK+SwjyA8IHNwYXJzZVwtaGFpclwtb25cLWFcLWtub3RcLW9uXC10aGVcLXRvcFwtb2ZcLXRoZVwtaGVhZDsKK+SuhiA8IGFcLWhvcnNlXC13aXRoXC1taXhlZFwtY29sb3JcLW9mXC15ZWxsb3dcLWFuZFwtd2hpdGU7CivkqZsgPCBsZWF0aGVyXC1iZWx0XC11c2VkXC10b1wtYmluZFwtb3JcLXJlc3RyYWluXC1hXC1jYXJ0Owor5oqE5a62IDwgdG9cLXNlYXJjaFwtYVwtaG91c2VcLWFuZFwtY29uZmlzY2F0ZVwtcG9zc2Vzc2lvbnM7CivkprkgPCBuYW1lXC1vZlwtYVwtY291bnR5XC1pblwtdG9kYXknJ3NcLXNpY2h1YW5cLXByb3ZpbmNlOwor5KOUIDwgbmFtZVwtb2ZcLWFcLXBhdmlsaW9uXC1pblwtdG9kYXknJ3NcLWhlbmFuXC1wcm92aW5jZTsKK+SjkSA8IGxpdmluZ1wtc3BhY2VcLWZvclwtb25lXC1mYW1pbHlcLWluXC1hbmNpZW50XC10aW1lczsKK+SjhCA8IG5hbWVcLW9mXC1hXC1wbGFjZVwtaW5cLXRvZGF5JydzXC1zaGFuZG9uZ1wtcHJvdmluY2U7CivkorkgPCBuYW1lXC1vZlwtYVwtcGF2aWxpb25cLWluXC10b2RheScnc1wtaHVuYW5cLXByb3ZpbmNlOwor5KKqIDwgYVwtc2xlZGdlXC1mb3JcLXRyYW5zcG9ydGF0aW9uXC1vdmVyXC1tdWRcLW9yXC1zbm93Owor5J+GIDwgdG9cLWtlZXBcLXBlcnNvbnNcLW9mZlwtdGhlXC1yb3V0ZVwtb2ZcLXRoZVwtZW1wZXJvcjsKK+acg+imiyA8IHRvXC1tZWV0XC13aXRoXC1cKHNvbWVvbmVcLXdob1wtaXNcLXBheWluZ1wtYVwtdmlzaXRcKTsKK+SIkCA8IGFuXC1hcmNoZWRcLWZyYW1lXC1tYWRlXC1vZlwtYmFtYm9vXC1vZlwtd29vZFwtYm9hcmQ7Civkhb8gPCBsdXh1cmlhbnRcLW9yXC1leHViZXJhbnRcLW9mXC10aGVcLWdyYWluc1wtZmxvd2VyeTsKK+SDiCA8IG1vdW50YWluXC1yb2Nrc1wtYVwtYmxhY2tcLXN0b25lXC1yZXNlbWJsaW5nXC1qYWRlOwor5IKsIDwgYmlnXC1yb2Nrc1wtb25cLXRoZVwtcml2ZXJzaWRlXC1hblwtYXJjaGVkXC1vcGVuaW5nOwor5IGdIDwgZGVsdWRpbmdcLWFuZFwtY2F1c2luZ1wtZGlzb3JkZXJcLWxpZ2h0c1wtc2hpbmluZzsKK+O9nyA8IHRvXC10aWxsXC1vclwtdG9cLXBsb3VnaFwtdGhlXC1maWVsZHNcLWFuXC1lbmNsb3N1cmU7CivjroQgPCBwdWJsaWNseVwtcG9zdGVkXC1yb2xsXC1vZlwtc3VjY2Vzc2Z1bFwtZXhhbWluZWVzOwor4624IDwgdGhlXC1icmFuY2hlc1wtdG9cLXNwcmVhZFwtb3V0XC1pblwtYWxsXC1kaXJlY3Rpb25zOwor46mJIDwgdG9cLXRha2VcLWFcLXJ1YmJpbmdcLW9mXC1hblwtaW5zY3JpcHRpb25cLW9uXC1zdG9uZTsKK+OjgSA8IHRvXC1lcXVpcHRcLWFcLWJvd1wtd2l0aFwtc2lsa1wtYW5kXC1tdXNjdWxhclwtZmlicmU7CivjnZkgPCB0aGVcLXRoaXJkXC1vZlwtdGhlXC10d2VsdmVcLXRlcnJlc3RyaWFsXC1icmFuY2hlczsKK+mVt+aymeeBoyA8IGNoZXVuZ1wtc2hhXC13YW5cLVwocG91bHRyeVwtbWFya2V0XC1pblwtaG9uZ1wta29uZ1wpOwor5aWn54i+5biD6LO054m5IDwgXChtYWRlbGVpbmVcKVwtYWxicmlnaHRcLVwodXNcLXNlY3JldGFyeVwtb2ZcLXN0YXRlXCk7CivmraPluLjljJYgPCBub3JtYWxpemF0aW9uXC1cKG9mXC1kaXBsb21hdGljXC1yZWxhdGlvbnNcLFwtZXRjXCk7CivlhbXkuI3ljq3oqZAgPCB0aGVyZVwtY2FuXC1uZXZlclwtYmVcLXRvb1wtbXVjaFwtZGVjZXB0aW9uXC1pblwtd2FyOwor5LqU5YWt5Y2B5q2yIDwgXChpblwtb25lJydzXClcLWZpZnRpZXNcLW9yXC1zaXh0aWVzXC1cKHllYXJzXC1vZlwtYWdlXCk7Civpgb/ph43lsLHovJUgPCBhdm9pZFwtdGhlXC1pbXBvcnRhbnRcLWFuZFwtZHdlbGxcLW9uXC10aGVcLXRyaXZpYWw7CivlpKfoiIkgPCBjYXJyeVwtb3V0XC1hXC1sYXJnZVwtc2NhbGVcLVwobWlsaXRhcnlcKVwtb3BlcmF0aW9uOwor5pel5ry4IDwgXChrZWVwXC1pbmNyZWFzaW5nXCxcLWNoYW5naW5nXCxcLWV0Y1wuXClcLWRheVwtYnlcLWRheTsKK+aomeaWsOeri+eVsCA8IHN0YXJ0XC1zb21ldGhpbmdcLW5ld1wtaW5cLW9yZGVyXC10b1wtYmVcLWRpZmZlcmVudDsKK+itsOW4rSA8IHNlYXRcLWluXC1hXC1wYXJsaWFtZW50XC1vclwtbGVnaXNsYXRpdmVcLWFzc2VtYmx5Owor5LmOIDwgaW50ZXJyb2dhdGl2ZVwtb3JcLWV4Y2xhbWF0b3J5XC1maW5hbFwtcGFydGljbGU7CivmvoQgPCBwdXJpZnlcLXdhdGVyXC1ieVwtYWxsb3dpbmdcLXNlZGltZW50XC10b1wtc2V0dGxlOwor5q2fIDwgYVwtZmluYWxcLXBhcnRpY2xlXC11c2VkXC10b1wtZXhwcmVzc1wtYWRtaXJhdGlvbjsKK+aioiA8IHBvaW50ZWRcLXRpcFwtb2ZcLXNvbWV0aGluZ1wtbG9uZ1wtbGlrZVwtYVwtYnJhbmNoOwor5ZOSIDwgYVwtc291bmRcLW1hZGVcLXRvXC1nZXRcLWFcLWhvcnNlXC10b1wtbW92ZVwtZm9yd2FyZDsKK+eQriA8IG9jdGFnb25hbFwtcGllY2VcLW9mXC1qYWRlXC13aXRoXC1ob2xlXC1pblwtbWlkZGxlOwor5ZS8IDwgc3BlYWtpbmdcLWV2aWxcLlwtZ29iYmxpbmdcLXNvdW5kXC1tYWRlXC1ieVwtZHVja3M7CivlpKflip/lkYrmiJAgPCBzdWNjZXNzZnVsbHlcLWFjY29tcGxpc2hlZFwtXChwcm9qZWN0XC1vclwtZ29hbFwpOwor6YCa57edIDwgd2FudGVkXC1ieVwtdGhlXC1wb2xpY2VcLVwoZnVnaXRpdmVcLW9yXC1jcmltaW5hbFwpOwor55yf57SNIDwgXChtb2hhbW1hZFwtYWxpXClcLWppbm5haFwtXChmb3VuZGVyXC1vZlwtcGFraXN0YW5cKTsKK+isneijoeWkqyA8IFwobmF3YXpcKVwtc2hhcmlmXC1cKHByaW1lXC1taW5pc3Rlclwtb2ZcLXBha2lzdGFuXCk7Civpra/os5MgPCBydWJpblwtXChlZ1wsXC10cmVhc3VyeVwtc2VjcmV0YXJ5XC1yb2JlcnRcLXJ1YmluXCk7Civlipvlr7YgPCBsaXBwb1wtXChncm91cFwpXC1cKGluZG9uZXNpYW5cLWJ1c2luZXNzXC1jb25jZXJuXCk7CivlkLPkvZzmo58gPCBnb2hcLWNob2tcLXRvbmdcLVwocHJpbWVcLW1pbmlzdGVyXC1vZlwtc2luZ2Fwb3JlXCk7CivnhKHmiYDnlKjlv4MgPCBlYXRcLXRocmVlXC1zcXVhcmVcLW1lYWxzXC1hXC1kYXlcLWFuZFwtZG9cLW5vXC13b3JrOwor5YG06YuSIDwgb2JsaXF1ZVwtYXR0YWNrXC1cKGJydXNoXC1tb3ZlbWVudFwtaW5cLXBhaW50aW5nXCk7CivpgrQgPCBuYW1lXC1vZlwtYVwtY2l0eVwtaW5cLXRoZVwtYW5jaWVudFwtc3RhdGVcLW9mXC1zb25nOwor54+t6ZaA5byE5panIDwgZGlzcGxheVwtb25lJydzXC1zbGlnaHRcLXNraWxsXC1iZWZvcmVcLWFuXC1leHBlcnQ7CivkuK3lnIvml6XloLEgPCBjaGluYVwtZGFpbHlcLVwoYW5cLWVuZ2xpc2hcLWxhbmd1YWdlXC1uZXdzcGFwZXJcKTsKK+W0h+emjiA8IGNob25nemhlblwsXC1sYXN0XC1lbXBlcm9yXC1vZlwtdGhlXC1taW5nXC1keW5hc3R5Owor55m95a2XIDwgd3JvbmdseVwtd3JpdHRlblwtYW5kXC1taXNwcm9ub3VuY2VkXC1jaGFyYWN0ZXI7CivkuI3lj6/ntYLml6UgPCBiZVwtdW5hYmxlXC10b1wtY2FycnlcLW9uXC1ldmVuXC1mb3JcLWFcLXNpbmdsZVwtZGF5Owor5a+E5LqI5b6I5aSn5pyf5pybIDwgdG9cLXBsYWNlXC1ncmVhdFwtaG9wZVwtb3JcLWV4cGVjdGF0aW9uXC1vblwtXChzdGhcKTsKK+W3peS6uum7qCA8IHdvcmtlcnMnJ1wtcGFydHlcLVwoc2luZ2Fwb3JlXC1vcHBvc2l0aW9uXC1wYXJ0eVwpOwor5bCN562WIDwgY291bnRlcm1lYXN1cmVcLWZvclwtZGVhbGluZ1wtd2l0aFwtYVwtc2l0dWF0aW9uOwor5LaYIDwgdGhlXC1zb3VuZFwtb2ZcLWNoZXdpbmdcLXNvbWV0aGluZ1wtZHJ5XC1hbmRcLWhhcmQ7CivkrrIgPCBob3JzZVwtd2l0aFwtbWl4ZWRcLWNvbG9yc1wtb2ZcLXllbGxvd1wtYW5kXC13aGl0ZTsKK+SmvCA8IHRvXC1kaWdcLWFcLXBhc3NhZ2VcLXRocm91Z2hcLWFcLW1vdW50YWluXC1vclwtaGlsbDsKK+SlkSA8IGFcLWtpbmRcLW9mXC1kZWNvcmF0aW9uXC1vblwtdGhlXC1oZWFkXC1vZlwtYVwtaG9yc2U7Civko68gPCB3aW5lXC1vclwtYW55XC10aGlja1wtZmx1aWRcLW9mXC10aGVcLWJlc3RcLXF1YWxpdHk7Civko5ogPCBuYW1lXC1vZlwtYVwtdmlsbGFnZVwtaW5cLXRvZGF5JydzXC1oZW5hblwtcHJvdmluY2U7Civko5kgPCBuYW1lXC1vZlwtYVwtY291bnR5XC1pblwtdG9kYXknJ3NcLXNoYW54aVwtcHJvdmluY2U7CivkorogPCBuYW1lXC1vZlwtYVwtcGxhY2VcLWluXC10b2RheScnc1wtc2ljaHVhblwtcHJvdmluY2U7Civkob8gPCBmcmFtZXNcLW9uXC10aGVcLXNpZGVzXC1hbmRcLWZyb250XC1vZlwtYVwtY2FycmlhZ2U7CivknK8gPCBuYW1lXC1vZlwtYVwtdmFsbGV5XC1pblwtdG9kYXknJ3NcLXNoYW54aVwtcHJvdmluY2U7CivkmL8gPCBzaGlydFwtb3JcLWFcLWphY2tldFwtd2l0aG91dFwtYW55XC1kZWNvcmF0ZWRcLWhlbTsKK+SWgiA8IGFuXC1lZGliXC1sZVwtd2F0ZXJcLXBsYW50XC1cLVwtXC1icmFzZW5pYVwtcHVycHVyY2E7Civkj64gPCB0aGVcLXNpZGVzXC1vZlwtdGhlXC10cnVua1wtZnJvbVwtYXJtcGl0c1wtdG9cLXJpYnM7CivkhY0gPCBzdHJhaWdodFwtdXB3YXJkXC1vZlwtdGhlXC13aGVhdFwtYW5kXC1yaWNlXC1wbGFudDsKK+SCuCA8IHRvXC1zbWFzaFwtb3JcLXRvXC1rbm9ja1wtdG9cLXBpZWNlc1wtb2ZcLXRoZVwtc3RvbmU7CivnrYblipsgPCB2aWdvdXJcLW9mXC1zdHJva2VzXC1pblwtY2FsbGlncmFwaHlcLW9yXC1kcmF3aW5nOwor572w6YWSIDwgdG9cLWRyaW5rXC1hc1wtdGhlXC1yZXN1bHRcLW9mXC1oYXZpbmdcLWxvc3RcLWFcLWJldDsKK+O+vCA8IHRvXC1zdWZmZXJcLWFcLXN0cm9rZVwtb2ZcLXBhcmFseXNpc1wtb3JcLWFwb3BsZXh5Owor472rIDwgc2VlZHNcLW9mXC10aGVcLXBsYW50XC1hbGxpZWRcLXRvXC10aGVcLXdhdGVyXC1saWx5Owor47i3IDwgYVwta2luZFwtb2ZcLWNhdHRsZVwtd2l0aFwtdHdvXC1ob3Juc1wtc3RyYWlnaHRcLXVwOwor47asIDwgYnJpZ2h0XC1saWdodHNcLWFuZFwtaWxsdW1pbmF0aW9uc1wtb2ZcLXRoZVwtZmlyZTsKK+O2hiA8IG5hbWVcLW9mXC1hXC1zdHJlYW1cLWluXC1oZWJlaVwtcHJvdmluY2VcLWhlbmdzaGFuOwor5pav5L2p5p6XIDwgc3BlbGxpbmdcLVwoZWdcLFwtc3BlbGxpbmdcLWVudGVydGFpbm1lbnRcLWdyb3VwXCk7CivjrqsgPCBhXC13b29kZW5cLWFydGljYWxcLXRvXC1iZVwtdXNlZFwtdG9cLWFkanVzdFwtYVwtYm93Owor46uNIDwgdGhlXC1zY2FsbG9wc1wtYWxvbmdcLXRoZVwtbG93ZXJcLWVkZ2VcLW9mXC1hXC1mbGFnOwor46ePIDwgdG9cLWNhcnJ5XC1vblwtdGhlXC1zaG91bGRlcnNvZlwtdHdvXC1vclwtbW9yZVwtbWVuOwor5pif6auUIDwgY2VsZXN0aWFsXC1ib2R5XC1cKGVnXCxcLXBsYW5ldFwsXC1zYXRlbGxpdGVcLFwtZXRjXCk7Civjm7YgPCBkb1wtbm90XC1jYXJlXC1hYm91dFwtYXBwZWFyYW5jZVwtYW5kXC1kZXBvcnRtZW50Owor45qUIDwgaW5zdHJ1bWVudFwtb2ZcLXRvcnR1cmVcLXVzZWRcLWluXC1hbmNpZW50XC10aW1lczsKK+OZhyA8IHRoZVwtY2F0dGxlXC1hbmRcLWhvcnNlc1wtdHJhbXBsZWRcLW9uXC10aGVcLWZpZWxkOwor5Li7566hIDwgXChiZVwpXC1wZXJzb25cLWluXC1jaGFyZ2VcLW9mXC1cKGFcLXBvc2l0aW9uXCxcLWV0Y1wuXCk7Civllq7mp43ljLnppqwgPCBzaW5nbGVcLWhhbmRlZFwtXChsaXRcOlwtc2luZ2xlXC1zcGVhclwtb25lXC1ob3JzZVwpOwor55un5rOw5oSaIDwgcm9oXC10YWVcLXdvb1wtXChmb3JtZXJcLXNvdXRoXC1rb3JlYW5cLXByZXNpZGVudFwpOwor5q2l6Z+7IDwgdG9cLXdyaXRlXC1hXC1wb2VtXC11c2luZ1wtYW5vdGhlclwtcG9lbScnc1wtcmh5bWVzOwor5Y+j5rCjIDwgXChmcmllbmRseVwtb3JcLXVuZnJpZW5kbHlcKVwtdG9uZVwtXChvZlwtY29tbWVudHNcKTsKK+ato+mLkiA8IGZyb250YWxcLWF0dGFja1wtXChicnVzaFwtbW92ZW1lbnRcLWluXC1wYWludGluZ1wpOwor6b2K55m955+zIDwgbmFtZVwtb2ZcLWFcLWZhbW91c1wtY2hpbmVzZVwtYXJ0aXN0XCxcLXFpXC1iYWlcLXNoaTsKK+S4i+S+hiA8IFwodmVyYlwtc3VmZml4XC1pbmRpY2F0aW5nXC1jb250aW51YXRpb25cLFwtZXRjXC5cKTsKK+W5uemDqCA8IGFcLWNhZHJlXC1cKGllXCxcLW1hbmFnZXJcLFwtc3RhZmZcLFwtb2ZmaWNlclwsXC1ldGNcLlwpOwor5aiFIDwgbXV0dWFsXC10ZXJtXC1vZlwtYWRkcmVzc1wtdXNlZFwtYnlcLXNvbnNcLWluXC1sYXc7CivllYbli5npg6ggPCBjb21tZXJjZVwtZGVwYXJ0bWVudFwtXChvZlwtdGhlXC11c1wtZ292ZXJubWVudFwpOwor5ZCN5Ymv5YW25a+mIDwgbm90XC1qdXN0XC1pblwtbmFtZVwtb25seVwsXC1idXRcLWFsc29cLWluXC1yZWFsaXR5Owor5LiN55W25LiA5Zue5LqLIDwgbm90XC1yZWdhcmRcLWFzXC1hXC1tYXR0ZXJcLVwob2ZcLWFueVwtaW1wb3J0YW5jZVwpOwor6ICB5Ly05YWSIDwgXChvZlwtYW5cLW9sZFwtbWFycmllZFwtY291cGxlXClcLWh1c2JhbmRcLW9yXC13aWZlOwor5LiN5omT5LiN55u46K2YIDwgZnJvbVwtYW5cLWV4Y2hhbmdlXC1vZlwtYmxvd3NcLWZyaWVuZHNoaXBcLWdyb3dzOwor5be054i+6IiN5aSr5pav5Z+6IDwgXChjaGFybGVuZVwpXC1iYXJzaGVmc2t5XCxcLXVzXC10cmFkZVwtbmVnb3RpYXRvcjsKK+muoCA8IGFcLWtpbmRcLW9mXC1zaGFkXC13aXRoXC1hXC1oZWFkXC1saWtlXC1hXC1zdHVyZ2VvbjsKK+aOpee0jSA8IGFkbWl0XC1cKGludG9cLW1lbWJlcnNoaXBcLW9mXC1hblwtb3JnYW5pemF0aW9uXCk7CivllpzmlrDljq3oiIogPCBsaXRlcmFsXDpcLXRvXC1saWtlXC10aGVcLW5ld1wsXC1hbmRcLWhhdGVcLXRoZVwtb2xkOwor5oqK6aKoIDwga2VlcFwtd2F0Y2hcLVwoZHVyaW5nXC1hXC1jbGFuZGVzdGluZVwtYWN0aXZpdHlcKTsKK+WCmeiAlSA8IG1ha2VcLXByZXBhcmF0aW9uc1wtZm9yXC1wbG91Z2hpbmdcLWFuZFwtc293aW5nOwor5pKl5YaXIDwgZmluZFwtdGltZVwtaW5cLXRoZVwtbWlkc3RcLW9mXC1wcmVzc2luZ1wtYWZmYWlyczsKK+iDkSA8IHRoZVwtbGltYnNcLlwtd2luZ3NcLW9mXC1iaXJkc1wuXC1sZWdzXC1vZlwtYW5pbWFsczsKK+etrSA8IGFuXC1hbmNpZW50XC1kZXZpY2VcLWZvclwtd29ya2luZ1wtd2l0aFwtbnVtYmVyczsKK+aihuWtkOiFlCA8IGFcLWdlbmVyYWxcLXRlcm1cLWZvclwtbG9jYWxcLW9wZXJhc1wtaW5cLXNoYW5neGk7Civmu50gPCBvbm9tYXRvcG9laWNcLWZvclwtdGhlXC1zb3VuZFwtb2ZcLWZhbGxpbmdcLXJhaW47CivmoL3otJMgPCB0b1wtZnJhbWVcLXNvbWVvbmVcLVwoYnlcLXBsYW50aW5nXC1zdGhcLW9uXC10aGVtXCk7Civmj5vlj5YgPCBnaXZlXC1zb21ldGhpbmdcLWFuZFwtZ2V0XC1zb21ldGhpbmdcLWluXC1yZXR1cm47Civmi43moYjlj6vntZUgPCBsaXRcLlw6XC1zbGFwXC10aGVcLXRhYmxlXC1hbmRcLXNob3V0XC13aXRoXC1wcmFpc2U7Civlgb3mm7ggPCBcKGZvcmdlZFwsXC1kdWJpb3VzXCxcLW1pc2NsYXNzaWZpZWRcKVwtb2xkXC1ib29rczsKK+aiheiYreiKsyA8IG5hbWVcLW9mXC1hXC12ZXJ5XC1mYW1vdXNcLWJlaWppbmdcLW9wZXJhXC1hcnRpc3Q7CivnsL/lhoogPCBib29rc1wtZm9yXC10YWtpbmdcLW5vdGVzXC1vclwta2VlcGluZ1wtYWNjb3VudHM7Civks7UgPCBhXC1raW5kXC1vZlwtd2F0ZXJcLWJpcmRcLXdpdGhcLWNvbG9yZnVsXC1mZWF0aGVyOwor5LObIDwgYVwtc21hbGxcLWJyb3duXC1zcGVja2xlZFwtYmlyZFwtbGlrZVwtdGhlXC1xdWFpbDsKK+SpkSA8IGhvcml6b250YWxcLWZyb250XC1iYXJcLW9uXC1hXC1jYXJ0XC1vclwtY2FycmlhZ2U7CivkppMgPCB0b1wtd2FpdFwtZm9yXC1zb21ldGhpbmdcLXRvaGFwcGVuXC1pbW1lZGlhdGVseTsKK+SjpCA8IG5hbWVcLW9mXC12aWxsYWdlXC1pblwtdG9kYXknJ3NcLXNoYW54aVwtcHJvdmluY2U7Civko50gPCBuYW1lXC1vZlwtYVwtcGxhY2VcLWluXC10b2RheScnc1wtc2hhbnhpXC1wcm92aW5jZTsKK+SjgiA8IG5hbWVcLW9mXC1hXC1jb3VudHlcLWluXC10b2RheScnc1wtaHVuYW5cLXByb3ZpbmNlOwor5KGpIDwgc291bmRcLW9mXC1jYXJ0c1wtb3JcLXN0b25lc1wta25vY2tpbmdcLXRvZ2V0aGVyOwor5KCAIDwgdG9cLXNpdFwtY3Jvc3NcLWxlZ2dlZFwtbGlrZVwtYVwtYnVkZGhpc3RcLXByaWVzdDsKK+ScqyA8IG5hbWVcLW9mXC1hXC12YWxsZXlcLWluXC10b2RheScnc1wtaG9iZWlcLXByb3ZpbmNlOwor5JyaIDwgdG9cLXNwZWFrXC1yZWNrbGVzc2x5XC1vclwtd2l0aG91dFwtZm9yZXRob3VnaHQ7Civkk6UgPCBzb3VuZFwtb2ZcLXRoZVwtd3JpZ2dsZWRcLWluc2VjdHNcLW9uXC10aGVcLWdyYXNzOwor5JCEIDwgdGhlXC11bnNhdGlzZmFjdGlvblwtb2ZcLWh1bmdlclwtcmVxdWlyZXNcLW1lYXQ7CivkjbQgPCB0b1wtc3F1ZWV6ZVwtYW5kXC10b1wtY3Jvd2RcLWFnYWluc3RcLWVhY2hcLW90aGVyOwor5I2GIDwgY29udGFpbmVyXC1mb3JcLWdyYWluc1wtdXNlZFwtaW5cLWFuY2llbnRcLXRpbWVzOwor5LiK6LuKIDwgdG9cLWdldFwtb25cLW9yXC1pbnRvXC1cKGFcLWJ1c1wsXC10cmFpblwsXC1jYXJcLWV0Y1wuXCk7Civkh68gPCBhXC1raW5kXC1vZlwtYmFtYm9vXC13aXRoXC1wYXR0ZXJuc1wtb25cLXRoZVwtaGVhZDsKK+ihjOaUv+mZoiA8IGV4ZWN1dGl2ZVwteXVhblwtXChnb3Zlcm5tZW50XC1ib2R5XC1pblwtdGFpd2FuXCk7CivjvLEgPCB0b1wtbWFuYWdlXC1vclwtcmVndWxhdGVcLXRoZVwtbGVhdGhlclwtbWF0ZXJpYWw7Civjr4ogPCBldmVuXC1tZWFzdXJpbmdcLWJvYXJkXC1mb3JcLXBlY2tzXC1hbmRcLWJ1c2hlbHM7CivnrYbkuIsgPCB0aGVcLXdvcmRpbmdcLWFuZFwtcHVycG9ydFwtb2ZcLXdoYXRcLW9uZVwtd3JpdGVzOwor5L6/5Ye9IDwgYW5cLWluZm9ybWFsXC1sZXR0ZXJcLXNlbnRcLWJ5XC1hblwtb3JnYW5pemF0aW9uOwor46iQIDwgdG9cLXNsYXBcLWxpZ2h0bHlcLW9uXC10aGVcLWNsb3RoZXNcLW9yXC1jb3ZlcmxldDsKK+OipSA8IGFcLWJpZ1wtcGllY2VcLW9mXC1sb2dcLXRvXC1qb2luXC10aGVcLXRoaWNrXC1yb3BlczsKK+mmluW4rSA8IGNoaWVmXC1cKHJlcHJlc2VudGF0aXZlXCxcLWNvcnJlc3BvbmRlbnRcLFwtZXRjXCk7CivotIXlqb8gPCBzb25cLWluXC1sYXdcLWxpdmluZ1wtYXRcLXdpZmUnJ3NcLXBhcmVudCcnc1wtaG91c2U7CivmnbDkvZvojLIgPCBcKGphbWVzXClcLWplZmZvcmRzXC1cKHVzXC1zZW5hdG9yXC1mcm9tXC12ZXJtb250XCk7CivomZXmlrwgPCBiZVwtXChpblwtc29tZVwtc3RhdGVcLFwtcG9zaXRpb25cLFwtb3JcLWNvbmRpdGlvblwpOwor6aKo5Zyf5Lq65oOFIDwgbG9jYWxcLWNvbmRpdGlvbnNcLVwoaHVtYW5cLWFuZFwtZW52aXJvbm1lbnRhbFwpOwor6Zi/5ouJ5aGU5pavIDwgXChhbGlcKVwtYWxhdGFzXC1cKGluZG9uZXNpYW5cLWZvcmVpZ25cLW1pbmlzdGVyXCk7CivnvoXluIPms4ogPCBsb3BcLW5vclwtXChudWNsZWFyXC10ZXN0aW5nXC1zaXRlXC1pblwteGluamlhbmdcKTsKK+awkemAsum7qCA8IGRwcFwtXChkZW1vY3JhdGljXC1wcm9ncmVzc2l2ZVwtcGFydHlcLFwtdGFpd2FuXCk7CivmlZfnrYYgPCBhXC1mYXVsdHlcLXN0cm9rZVwtaW5cLWNhbGxpZ3JhcGh5XC1vclwtcGFpbnRpbmc7Civnj4ggPCBhblwtb3JuYW1lbnRcLWF0dGFjaGVkXC10b1wtYVwtd29tYW4nJ3NcLWhhaXJwaW47CivonIMgPCBtYXJpbmVcLW1vbnN0ZXJcLXdoaWNoXC1jYW5cLWNoYW5nZVwtaXRzXC1zaGFwZTsKK+aWmyA8IGRyeVwtbWVhc3VyZVwtZXF1YWxcLXRvXC1zb21lXC1maXZlXC1vclwtdGVuXC1kb3U7CivphK8gPCBkaXN0cmljdFwtaW5cLWdhbnN1XC1kdXJpbmdcLXRoZVwtdGFuZ1wtZHluYXN0eTsKK+W6uSA8IHRoZVwtbGVuZ3RoXC1vZlwtb25lJydzXC10d29cLW91dHN0cmV0Y2hlZFwtYXJtczsKK+aPsiA8IHRvXC1zb3J0XC1vdXRcLXRoZVwtc3RhbGtzXC11c2VkXC1pblwtZGl2aW5hdGlvbjsKK+WHuui3ryA8IGFcLXdheVwtb3V0XC1cKG9mXC1hXC1kaWZmaWN1bHRcLXNpdHVhdGlvblwsXC1ldGNcKTsKK+e0hOWumuizh+ioiumAn+eOhyA8IGNvbW1pdHRlZFwtaW5mb3JybWF0aW9uXC1yYXRlXC1cKGZyYW1lXC1yZWxheVwpOwor55m96Iqx6JuHIDwgbG9uZ1wtbm9zZWRcLXBpdFwtdmlwZXJcLVwoYWdraXN0cm9kb25cLWFjdXR1c1wpOwor5Lit5YWx5Lit5aSuIDwgY2hpbmVzZVwtY29tbXVuaXN0XC1wYXJ0eVwtY2VudHJhbFwtY29tbWl0dGVlOwor5Y2a6IGe5by36KiYIDwgaGF2ZVwtd2lkZVwtbGVhcm5pbmdcLWFuZFwtYVwtcmV0ZW50aXZlXC1tZW1vcnk7Civluqbml6UgPCBzY3JhdGNoXC1vdXRcLWFcLWRpZmZpY3VsdFwsXC1tZWFnZXJcLWV4aXN0ZW5jZTsKK+ecvuitsOWToSA8IG1lbWJlclwtb2ZcLXRoZVwtdXNcLWhvdXNlXC1vZlwtcmVwcmVzZW50YXRpdmVzOwor6Z+NIDwgYVwtbGVhdGhlclwta25lZVwtcGFkXC13b3JuXC1kdXJpbmdcLXNhY3JpZmljZXM7CivloLHmoYggPCByZXBvcnRcLWFcLWNhc2VcLXRvXC10aGVcLXNlY3VyaXR5XC1hdXRob3JpdGllczsKK+mPniA8IGFcLWxhcmdlXC1iZWxsXC11c2VkXC1hc1wtYVwtbXVzaWNhbFwtaW5zdHJ1bWVudDsKK+i7jiA8IGFcLWJyYXNzXC1wYXJ0c1wtZm9yXC1hXC1jYXJ0XC1pblwtYW5jaWVudFwtY2hpbmE7CivlhbXmupAgPCBtYW5wb3dlclwtcmVzb3VyY2VzXC1cKGZvclwtbWlsaXRhcnlcLXNlcnZpY2VcKTsKK+iZiyA8IGFzcGFyYWd1c1wtYVwtdmFyaWV0eVwtb2ZcLXJlZFwtc3RhbGtlZFwtbWlsbGV0Owor55m+5bm05aSn6KiIIDwgYVwtcHJvamVjdFwtb2ZcLXZpdGFsXC1hbmRcLWxhc3RpbmdcLWltcG9ydGFuY2U7CivpgoHnp5Hoo6EgPCBcKG1pa2VcKVwtbWNjdXJyeVwtXCh3aGl0ZVwtaG91c2VcLXNwb2tlc3BlcnNvblwpOwor5ouU6IuX5Yqp6ZW3IDwgc3BvaWxcLXRoaW5nc1wtdGhyb3VnaFwtZXhjZXNzaXZlXC1lbnRodXNpYXNtOwor5aCx5ZGK5pyDIDwgcHVibGljXC1sZWN0dXJlXC1cKHdpdGhcLWd1ZXN0XC1zcGVha2Vyc1wsXC1ldGNcKTsKK+WIqeS8r+abvCA8IFwoY29ubmVjdGljdXRcLXNlbmF0b3JcLWpvc2VwaFwtaVwuXClcLWxpZWJlcm1hbjsKK+iCr+aZrue0ouaBqSA8IFwoZGlya1wpXC1rZW1wdGhvcm5lXC1cKHVzXC1zZW5hdG9yXC1mcm9tXC1pZGFob1wpOwor5bueIDwgdG9cLXByZXBhcmVcLWhvcnNlc1wtYW5kXC1jaGFyaW90c1wtZm9yXC1iYXR0bGU7CivlqZcgPCBhXC1uZXdcLWJvcm5cLWNoaWxkXC10aGVcLXdoaW1wZXJcLW9mXC1hblwtaW5mYW50Owor5aa6IDwgd2lmZVwtb2ZcLXRoZVwtbGFzdFwtcnVsZXJcLW9mXC10aGVcLXhpYVwtZHluYXN0eTsKK+WZoCA8IHNvdW5kXC1tYWRlXC10b1wtZ2V0XC1hXC1ob3JzZVwtdG9cLW1vdmVcLWZvcndhcmQ7CivlpJblravlpbPlhZIgPCBncmFuZGRhdWdodGVyXC1cKGRhdWdodGVyXC1vZlwtb25lJydzXC1kYXVnaGVyXCk7CivmnInpm7sgPCBcKG9mXC1hXC1kd2VsbGluZ1wpXC1zdXBwbGllZFwtd2l0aFwtZWxlY3RyaWNpdHk7Civnmb7mipjkuI3mkpMgPCBrZWVwXC1vblwtZmlnaHRpbmdcLWluXC1zcGl0ZVwtb2ZcLWFsbFwtc2V0YmFja3M7CivnpZ7lpbPls7AgPCBuYW1lXC1vZlwtYVwtcGVha1wtYnlcLWNoYW5namlhbmdcLXRocmVlXC1nb3JnZXM7CivkuIIgPCBvYnN0cnVjdGlvblwtb2ZcLWJyZWF0aFwtYXNcLWl0XC1zZWVrc1wtcmVsZWFzZTsKK+izgeiHqCA8IFwob2ZcLWRpc3Rpbmd1aXNoZWRcLWd1ZXN0c1wpXC1ob25vdXJcLW15XC1ob3VzZTsKK+SwvyA8IGFcLWtpbmRcLW9mXC1zbWFsbFwtZmlzaFwtZ3Jvd25cLWluXC1mcmVzaFwtd2F0ZXI7Civlronouqvnq4vlkb0gPCBzZXR0bGVcLWRvd25cLWFuZFwtZ2V0XC1vblwtd2l0aFwtb25lJydzXC1wdXJzdWl0Owor5KK/IDwgbmFtZVwtb2ZcLWFcLXBsYWNlXC1pblwtdG9kYXknJ3NcLWhvYmVpXC1wcm92aW5jZTsKK+ShiCA8IHRoZVwtY3Jvc3NcLWJhclwtYXRcLXRoZVwtc2lkZXNcLW9mXC1hXC1jYXJyaXRhZ2U7CivklIkgPCBzY2F0dGVyZWRcLW9yXC1kaXNwZXJzZWRcLW9mXC1ncmFzc1wtYW5kXC10cmVlczsKK+SRkiA8IGFcLWtpbmRcLW9mXC1mYXJtXC10b29sXC11c2VkXC1pblwtYW5jaWVudFwtdGltZXM7CivkkKMgPCBzb3VwXC1tYWRlXC1vZlwtY3V0dGVkXC1tZWF0XC1taXhlZFwtd2l0aFwtYmxvb2Q7CivkjK4gPCBzaWxrXC1mYWJyaWNzXC13aXRoXC10aGVcLWNvbG9yXC1vZlwtbmV3XC1sZWF2ZXM7CivkhKggPCBncmFpbnNcLXByb2R1Y2luZ1wtbmVpdGhlclwtZmxvd2VyXC1ub3JcLWZydWl0Owor5ISdIDwgc2hvd1wtbm9cLXJlc3BlY3RcLXRvXC10aGVcLXNlcnZpY2VcLW9mXC13b3JzaGlwOwor47ytIDwgdG9cLXN0ZWFkeVwtYnlcLXB1dHRpbmdcLXNvbWV0aGluZ1wtdW5kZXJuZWF0aDsKK+O7siA8IGFcLXJpdGVcLW9yXC1zZXJ2aWNlXC1mb3JcLWJlZ2lubmluZ1wtb2ZcLWF1dHVtbjsKK+mAhuWQkeaTgeWhnumAmuefpSA8IGJhY2t3YXJkXC1leHBsaWNpdFwtY29uZ2VzdGlvblwtbm90aWZpY2F0aW9uOwor57aT54ef566h55CG5ZKM57at6K23IDwgb3BlcmF0aW9uc1wtYWRtaW5pc3RyYXRpb25cLWFuZFwtbWFpbnRlbmFuY2U7CivjqqogPCB0b1wtdXNlXC1hXC13b29kZW5cLXBvbGVcLXRvXC1zdXBwb3J0XC1zb21ldGhpbmc7CivjoqYgPCB3b29kZW5cLXBvc3RcLW9yXC1waWxlXC1mb3JcLXRldGhlcmluZ1wtYW5pbWFsczsKK+OcoiA8IGFcLWJhZFwtdGVybVwtYnlcLXdoaWNoXC1vbmVcLWFkZHJlc3Nlc1wtYVwtd29tYW47CivjmpIgPCBjb25jZWFsZWRcLXRoZVwtc3RvbGVuXC1nb29kc1wtaW5cLW9uZScnc1wtZHJlc3M7Civnmb3mm4nnh5UgPCBwYWlcLWhzaWFvXC15ZW5cLVwoZGF1Z2h0ZXJcLW9mXC1wYWlcLXBpbmdcLXBpbmdcKTsKK+S4jee2k+S4gOS6i+S4jemVt+S4gOaZuiA8IHlvdVwtY2FuJyd0XC1nYWluXC1rbm93bGVkZ2VcLXdpdGhvdXRcLXByYWN0aWNlOwor5p2+5LiLIDwgbWF0c3VzaGl0YVwtXChqYXBhbmVzZVwtZWxlY3Ryb25pY3NcLWNvbXBhbnlcKTsKK+S4jeWmmSA8IFwob2ZcLWFcLXR1cm5cLW9mXC1ldmVudHNcKVwtbm90XC10b29cLWVuY291cmFnaW5nOwor6LijIDwgdG9cLXN0dW1ibGVcLWFuZFwtZmFsbFwtcHJvbmVcLXN0aWZmXC1pblwtZGVhdGg7Civpu7wgPCBlbWJyb2lkZXJlZFwtb2ZmaWNpYWxcLW9yXC1zYWNyaWZpY2lhbFwtcm9iZTsKK+WzhCA8IGFcLXJhbmdlXC1vZlwtcGVha3NcLWluXC1zaGFuZG9uZ1wtYW5kXC1qaWFuZ3N1Owor5YuJ5by3IDwgbWFuYWdlXC1cKHRvXC1kb1wtc29tZXRoaW5nXClcLXdpdGhcLWRpZmZpY3VsdHk7CivliKXnhKEgPCBoYXZlXC1ub1wtb3RoZXJcLVwoY2hvaWNlXCxcLWFsdGVybmF0aXZlXCxcLWV0Y1wpOwor5LiN5Y+v5LiA5LiWIDwgY29uc2lkZXJcLW9uZXNlbGZcLXVuZXhjZWxsZWRcLWluXC10aGVcLXdvcmxkOwor6YeR5pel5oiQIDwga2ltXC1pbFwtc3VuZ1wtXChmb3JtZXJcLW5vcnRoXC1rb3JlYW5cLWxlYWRlclwpOwor5YWs57SEIDwgY29udmVudGlvblwtXChpZVwsXC1pbnRlcm5hdGlvbmFsXC1hZ3JlZW1lbnRcKTsKK+mXlyA8IGFcLWZyb250aWVyXC1wYXNzXC1vclwtZ2F0ZVwtdG9cLXNodXRcLW9yXC1jbG9zZTsKK+mCviA8IGFcLWZldWRhbFwtc3RhdGVcLXdoaWNoXC1leGlzdGVkXC1iXC5jXC43MDBcLTQ2OTsKK+WkqualteWKjSA8IGFcLWtpbmRcLW9mXC10cmFkaXRpb25hbFwtY2hpbmVzZVwtc3dvcmRcLXBsYXk7CivlubTluqYgPCB5ZWFyXC1cKGVnXCxcLXNjaG9vbFwteWVhclwsXC1maXNjYWxcLXllYXJcLFwtZXRjXCk7CivntZXlsI3mlbjlrZcgPCBhYnNvbHV0ZVwtXChhc1wtb3Bwb3NlZFwtdG9cLXJlbGF0aXZlXClcLW51bWJlcjsKK+iWqSA8IHRyYW5zbGl0ZXJhdGlvblwtb2ZcLScnc2F0JydcLWluXC0nJ2JvZGhpc2F0dHZhOwor562G6aCGIDwgb3JkZXJcLW9mXC1zdHJva2VzXC1vYnNlcnZlZFwtaW5cLWNhbGxpZ3JhcGh5Owor6IawIDwgdG9cLWNvb2tcLW1lYXRcLWZvclwtYVwtc2FjcmlmaWNlXC1vclwtb2ZmZXJpbmc7CivmiY7ph50gPCB0b1wtZ2l2ZVwtb3JcLWhhdmVcLWFuXC1hY3VwdW5jdHVyZVwtdHJlYXRtZW50Owor5Y+45rOV6YOoIDwganVzdGljZVwtZGVwYXJtZW50XC1cKG9mXC10aGVcLXVzXC1nb3Zlcm5tZW50XCk7CivnkYwgPCBhXC13aGl0ZVwtb3BhcXVlXC1xdWFydHpcLXVzZWRcLWZvclwtb3JuYW1lbnRzOwor5r2fIDwgbGFuZFwtaW1wcmVnbmF0ZWRcLXdpdGhcLXNhbHRcLWZyb21cLXRoZVwtdGlkZTsKK+ijveWKkSA8IFwoY2hlbWljYWxcLW9yXC1waGFybWFjZXV0aWNhbFwpXC1wcmVwYXJhdGlvbjsKK+mrlOacgyA8IGtub3dcLVwodGhyb3VnaFwtbGVhcm5pbmdcLW9yXC1ieVwtZXhwZXJpZW5jZVwpOwor5YG95omYIDwgZmFraW5nXC1hXC1tb2Rlcm5cLW9iamVjdFwtYXNcLWFuXC1hbmNpZW50XC1vbmU7CivluqvntI3ljZcgPCBcKGFuZHJld1wpXC1jdW5hbmFuXC1cKGFsbGVnZWRcLXNlcmlhbFwta2lsbGVyXCk7Civmtbfpl5wgPCBjdXN0b21zXC1cKGllXCxcLWJvcmRlclwtY3Jvc3NpbmdcLWluc3BlY3Rpb25cKTsKK+aKsemgrem8oOerhCA8IGNvdmVyXC10aGVcLWhlYWRcLWFuZFwtc25lYWtcLWF3YXlcLWxpa2VcLWFcLXJhdDsKK+m7g+W7uuWNlyA8IGpvaG5cLWh1YW5nXC1cKGRlbW9jcmF0aWNcLXBhcnR5XC1mdW5kcmFpc2VyXCk7CivktZ4gPCBhbmNpZW50XC1wdW5pc2htZW50XC1vZlwtdGF0dG9vaW5nXC10aGVcLWZhY2U7CivksbkgPCBhXC1jb25kaW1lbnRcLW1hZGVcLWZyb21cLW1pbmNlZFwtZmlzaFwtc2FsdGVkOwor5K+wIDwgdXNlXC1hXC1oYWlyXC1waW5cLXRvXC1zZXRcLWFuZFwtZHJlc3NcLXRoZVwtaGFpcjsKK+SsryA8IHRvXC1oYXZlXC1jb25nZWVcLXdpdGhcLWZyaWVuZHNcLWluXC1vbGRcLXRpbWVzOwor5KGLIDwgZGVjb3JhdGlvblwtb25cLXRoZVwtbmF2ZVwtb3JcLWh1Ylwtb2ZcLWFcLXdoZWVsOwor5J6DIDwgdG9cLXJlbGlldmVcLW9yXC1naXZlXC1haWRcLXRvXC10aGVcLWRpc3RyZXNzZWQ7CivkmK8gPCB0aGVcLWxhcGVsXC1vclwtY29sbGFyXC1vZlwtYVwtZ2FybWVudFwtb3JcLXJvYmU7CivkmKQgPCBhXC1zd29yZFwtY292ZXJpbmdcLXRvXC1wcm90ZWN0XC10aGVcLXNjYWJiYXJkOwor5JGMIDwgbHdoYXRcLWlzXC1sZWZ0XC1vdmVyXC1vZlwtdGhlXC1mb29kXC1cLW92ZXJyaXBlOwor5IunIDwgb3JuYW1lbm50c1wtZm9yXC10aGVcLWZyb250YWxcLXBhcnRcLW9mXC1zaG9lczsKK+SLoyA8IGRlY29yYXRpb25zXC1wdXRcLW9uXC10aGVcLW1hbmVcLW9yXC1ob3JzZWhhaXI7CivkiJUgPCB0aGVcLW1ldGFsXC10b25ndWVcLWluXC10aGVcLXJlZWRcLWluc3RydW1lbnRzOwor5IO0IDwgYVwtd2hldHN0b25lXC11c2VkXC10b1wtZ3JpbmRcLXByZWNpb3VzXC1zdG9uZTsKK+SBvCA8IHRvXC1sb29rXC1idXRcLXNlZVwtbm90aGluZ1wtXC1cLVwtYWJzZW50XC1taW5kZWQ7Civjv4YgPCBkYW1hZ2VcLWJ5XC10aGVcLXBlc3RzXC10b1wtdGhlXC1yaWNlXC1zZWVkbGluZzsKK+O7tiA8IGFcLWphZGVcLXR1YmVcLXdpdGhcLXdoaXRlXC1hbmRcLW5hdHVyZVwtY29sb3JzOwor47uwIDwgZGVjb3JhdGVkXC1qYWRlXC1vclwtb3JuYW1lbnRcLW9uXC1hXC1zY2FiYmFyZDsKK+O7oSA8IGFcLWphZGVcLXJpbmdcLXdpdGhcLWFcLXNtYWxsXC1zZWdtZW50XC1jdXRcLW9mZjsKK+OuhiA8IGVhdmVzXC1zcHJvdXRpbmdcLWZyb21cLXRoZVwtc3R1bXBcLW9mXC1hXC10cmVlOwor46uUIDwgb25lXC1vZlwtdGhlXC1laWdodFwtZGlhZ3JhbXNcLWZvclwtZGl2aW5hdGlvbjsKK+OquyA8IGFcLWtpbmRcLW9mXC11dGVuc2lsXC11c2VkXC10b1wtbGFkbGVcLW91dFwtd2luZTsKK+OpiiA8IHRvXC1wdWxsXC11cFwtdGhlXC1zbGVldmVzXC1hbmRcLXNob3dcLXRoZVwtYXJtczsKK+OnrSA8IHRvXC1nZXRcLXNvbWV0aGluZ1wtd2l0aFwtYm90aFwtcmFpc2luZ1wtaGFuZHM7Civjp5ogPCB0aGVcLWdlc3R1cmVcLW9mXC11c2luZ1wtYW5cLWluZGVudGVkXC1jb250YWluOwor46eGIDwgdG9cLWNvdmVyXC1zb21ldGhpbmdcLXdpdGhcLWFcLXBpZWNlXC1vZlwtY2xvdGg7Civnmb7lu6Lkv7HoiIggPCBhbGxcLW5lZ2xlY3RlZFwtdGFza3NcLWFyZVwtYmVpbmdcLXVuZGVydGFrZW47CivjoYsgPCBhXC1raW5kXC1vZlwtaGVhZGRyZXNzXC1mb3JcLW1hblwtaW5cLW9sZFwtY2hpbmE7CivjoLggPCB0aGVcLWxhcGVsXC1vclwtY29sbG9yXC1vZlwtYVwtZ2FybWVudFwtb3JcLXJvYmU7CivjnJogPCBhXC1sb2NhbFwtZ292ZXJubWVudFwtcG9zdFwtaW5cLWFuY2llbnRcLXRpbWVzOwor45mfIDwgbG93XC1seWluZ1wtb25cLXRoZVwtc2lkZVwtb2ZcLWFcLXJpdmVyXC1vclwtbGFrZTsKK+mBv+WvpuWwseiZmyA8IHN0YXlcLWNsZWFyXC1vZlwtdGhlXC1lbmVteScnc1wtbWFpblwtZm9yY2VcLWFuZDsKK+S4jeaxgueUmuinoyA8IG5vdFwtc2Vla1wtdG9cLXVuZGVyc3RhbmRcLXRoaW5nc1wtdGhvcm91Z2hseTsKK+eikeiomCA8IGFcLXJlY29yZFwtb2ZcLWV2ZW50c1wtaW5zY3JpYmVkXC1vblwtYVwtdGFibGV0Owor5Lit5aSu5YWo5pyDIDwgcGxlbmFyeVwtc2Vzc2lvblwtb2ZcLXRoZVwtY2VudHJhbFwtY29tbWl0dGVlOwor5YyF6L6mIDwgdGFrZVwtY2FyZVwtb2ZcLWV2ZXJ5dGhpbmdcLWNvbmNlcm5pbmdcLWFcLWpvYjsKK+WPpOadsOaLieeIviA8IFwoaVwuXC1rXC5cKVwtZ3VqcmFsXC1cKHByaW1lXC1taW5pc3Rlclwtb2ZcLWluZGlhXCk7Civpu4Plsqnls7YgPCBodWFuZ3lhblwtaXNsYW5kXC1cKGluXC10aGVcLXNvdXRoXC1jaGluYVwtc2VhXCk7CivmqZ/pl5zloLEgPCBvZmZpY2lhbFwtXChnb3Zlcm5tZW50XC1vcGVyYXRlZFwpXC1uZXdzcGFwZXI7CivliY3lkJHmk4HloZ7pgJrnn6UgPCBmb3J3YXJkXC1leHBsaWNpdFwtY29uZ2VzdGlvblwtbm90aWZpY2F0aW9uOwor5Ye66Z2iIDwgYWN0XC1pblwtYVwtXChvZmZpY2lhbFwtb3JcLXBlcnNvbmFsXClcLWNhcGFjaXR5Owor5ZaPIDwgcmVzcGVjdGZ1bFwtcmVwbHlcLW9mXC1hc3NlbnRcLXRvXC1zdXBlcmlvcnM7CivnrI8gPCB0YWJsZXRcLWhlbGRcLWJ5XC1zb21lb25lXC1oYXZpbmdcLWF1dGhvcml0eTsKK+i2vCA8IGNhbGxvdXNcLXNraW5cLW9uXC1oYW5kc1wtb3JcLWZlZXRcLlwtYmxpc3RlcnM7Civnm7jpmpQgPCBiZVwtc2VwYXJhdGVkXC1ieVwtXChkaXN0YW5jZVwtb3JcLXRpbWVcLFwtZXRjXCk7Civnvo7lnIvlu6Pmkq3lhazlj7ggPCBhYmNcLVwoYW1lcmljYW5cLWJyb2FkY2FzdGluZ1wtY29ycG9yYXRpb25cKTsKK+aZguWgsSA8IFwidGltZXNcIlwtXChuZXdzcGFwZXJcLFwtZWdcLFwtbmV3XC15b3JrXC10aW1lc1wpOwor6YCa6IiqIDwgY29ubmVjdGVkXC1ieVwtYWlyXHxzZWFcLXRyYWZmaWNcLW9yXC1zZXJ2aWNlOwor5qC45q2m5Zmo56CU6KO96KiI5YqDIDwgbnVjbGVhclwtd2VhcG9uc1wtXChtYW51ZmFjdHVyaW5nXClcLXByb2dyYW07Civlhrfmt6Hpl5zkv4IgPCBjb2xkXC1yZWxhdGlvbnNcLVwoZVwuZ1wuXC1iZXR3ZWVuXC1jb3VudHJpZXNcKTsKK+S4jeS6huS6huS5iyA8IHNldHRsZVwtYVwtbWF0dGVyXC1ieVwtbGVhdmluZ1wtaXRcLXVuc2V0dGxlZDsKK+mBt+WxhSA8IHRvXC1tb3ZlXC1cKGZyb21cLW9uZVwtcmVzaWRlbmNlXC10b1wtYW5vdGhlclwpOwor6aWdIDwgdG9cLWZlZWRcLWFuXC1pbmZhbnRcLWJ5XC1oYW5kXC1zdGVhbWVkXC1icmVhZDsKK+S4jeWNs+S4jemboiA8IGJlXC1uZWl0aGVyXC10b29cLWZhbWlsaWFyXC1ub3JcLXRvb1wtZGlzdGFudDsKK+e4veaUv+ayu+mDqCA8IFwobWlsaXRhcnlcKVwtZ2VuZXJhbFwtcG9saXRpY2FsXC1kZXBhcnRtZW50Owor5ZOI6KOh5qOu5Y+y5a+G54m5IDwgaGFycmlzb25cLXNjaG1pdHRcLVwoYXBvbGxvXC0xXC03XC1hc3Ryb25hdXRcKTsKK+WFpeWtuOeOhyA8IHBlcmNlbnRhZ2VcLW9mXC1jaGlsZHJlblwtd2hvXC1lbnRlclwtc2Nob29sOwor6KONIDwgYVwtYm9yZGVyXC1vclwtYmFuZFwtb25cLXRoZVwtZWRnZVwtb2ZcLWFcLWRyZXNzOwor5bm05LujIDwgYVwtZGVjYWRlXC1vZlwtYVwtY2VudHVyeVwtXChlZ1wsXC10aGVcLXNpeHRpZXNcKTsKK+eVouWFtuWKn+S6juS4gOW9uSA8IGFjY29tcGxpc2hcLXRoZVwtd2hvbGVcLXRhc2tcLWF0XC1vbmVcLXN0cm9rZTsKK+WNiui3r+WHuuWutiA8IHN3aXRjaFwtdG9cLWFcLWpvYlwtb25lXC13YXNcLW5vdFwtdHJhaW5lZFwtZm9yOwor57GqIDwgYVwtd2Vpclwtb2ZcLWJhbWJvb1wtdG9cLWNhdGNoXC1maXNoXC1vclwtY3JhYnM7CivnmLIgPCBzcGFzbXNcLW9yXC1jb252dWxzaW9uc1wtaW5cLXlvdW5nXC1jaGlsZHJlbjsKK+eRsiA8IHRpbmtsaW5nXC1zb3VuZFwtdGlua2xpbmdcLW9mXC1wZW5kYW50XC1nZW1zOwor55eF5q+S5a245a62IDwgdmlyb2xvZ2lzdFwtXChwZXJzb25cLXdob1wtc3R1ZGllc1wtdmlydXNlc1wpOwor5bu656uL5q2j5byP5aSW5Lqk6Zec5L+CIDwgZm9ybWFsbHlcLWVzdGFibGlzaFwtZGlwbG9tYXRpY1wtcmVsYXRpb25zOwor6IyF6Ie66YWSIDwgbWFvdGFpXC1vclwtbWFpdGFpXC1cKGNoaW5lc2VcLXN0cm9uZ1wtZHJpbmtcKTsKK+e1kOekvuiHqueUsSA8IFwoY29uc3RpdHV0aW9uYWxcKVwtZnJlZWRvbVwtb2ZcLWFzc29jaWF0aW9uOwor5bydIDwgdGhlXC1wYXJ0XC1vZlwtYVwtYm93XC1ncmFzcGVkXC13aGVuXC1zaG9vdGluZzsKK+WWrOefsyA8IHFpYW9cLXNoaVwtXChjaGluZXNlXC1sZWFkZXJzaGlwXC1jb250ZW5kZXJcKTsKK+ixjumJpCA8IFwoc3RyYWlnaHRcLWRvd25cLWhvb2tlZFwtY2hhcmFjdGVyXC1zdHJva2VcKTsKK+SlnCA8IHByb3RlY3RpdmVcLW1ldGFsXC1vblwtdGhlXC1heGlzXC1vZlwtYVwtd2hlZWw7CivmiJDmnKwgPCBcKG1hbnVmYWN0dXJpbmdcLFwtcHJvZHVjdGlvblwsXC1ldGNcLlwpXC1jb3N0czsKK+SZliA8IGFcLWNsb3RoXC10b1wtY2FycnlcLWFuXC1paW5mYW50XC1vblwtdGhlXC1iYWNrOwor546L576y5LmLIDwgbmFtZVwtb2ZcLWFcLXBlcnNvblwsXC1hXC1mYW1vdXNcLWNhbGxpZ3JhcGhlcjsKK+SPqyA8IGluXC1iZXR3ZWVuXC1vZlwtdGhlXC1hYmRvbWVuXC1hbmRcLXRoZVwtc3BpbmU7CivkjYkgPCB0cmFjZXNcLW9yXC1tYXJrc1wtb2ZcLWluY29tcGxldGVcLW9yXC1kYW1hZ2U7CivkjLggPCBmaW5lXC1zaWxrXC1mYWJyaWNcLW9mXC1icmlnaHRcLXdoaXRlXC1jb2xvdXI7Civpgorop5Lnp5EgPCBsZWZ0b3ZlclwtYml0c1wtYW5kXC1waWVjZXNcLVwob2ZcLWluZHVzdHJpYWw7Civki78gPCBhXC1kZWNvcmF0aXZlXC1rbm90XC1tYWRlXC1vZlwtY29sb3JmdWxcLXNpbGs7CivkiJwgPCBhXC10aHJlYWRcLXVzZWRcLWJ5XC1jYXJwZW50ZXJzXC1mb3JcLW1hcmtpbmc7CivkiIYgPCBhXC1zaGFsbG93XC1hbmRcLWxvbmdcLXNoYXBlZFwtYmFtYm9vXC1iYXNrZXQ7Civku6PnkIYgPCBhY3RpbmdcLVwodGVtcG9yYXJpbHlcLWZpbGxpbmdcLWFcLXBvc2l0aW9uXCk7Civjv7kgPCBqdXR0aW5nXC1vblwtdGhlXC1lcGlkZXJtaXNcLW9yXC10aGVcLWN1dGljbGU7CivjvKsgPCBlYXJ0aGVud2FyZVwtb3JcLXBvdHRlcnlcLXdpdGhcLWJpZ1wtb3BlbmluZzsKK+O1uyA8IHRvXC1wZXJzcGlyZVwtZnJvbVwtZW1iYXJyYXNzbWVudFwtb3JcLXNoYW1lOwor6JST5bu25YWo5ZyLIDwgdG9cLXNwcmVhZFwtdGhyb3VnaG91dFwtdGhlXC1lbnRpcmVcLWNvdW50cnk7CivjrakgPCBhXC1raW5kXC1vZlwtdHJlZVwtY2FuXC1iZVwtdXNlZFwtYXNcLWR5ZVwtc3R1ZmY7Civjo5kgPCB0b1wtd2Fsa1wtaW5cLWFuXC1lYXN5XC1hbmRcLWxlaXN1cmVseVwtbWFubmVyOwor46KqIDwgdG9cLWRyYXdcLWFcLWZ1bGxcLWJvd1wtdG9cLWFpbVwtYXRcLXRoZVwtdGFyZ2V0Owor5a6i5buzIDwgZHJhd2luZ1wtcm9vbVwtXChyb29tXC1mb3JcLWFycml2aW5nXC1ndWVzdHNcKTsKK+OYiiA8IHRoZVwtYWJydXB0XC1hbmRcLWhhc3R5XC1zb3VuZFwtb2ZcLXRoZVwtY3Jvd2Q7Civjlq4gPCBhblwtaW50ZXJqZWN0aW9uXC11c2VkXC1pblwtcG9lbXNcLWFuZFwtc29uZ3M7CivjlK4gPCBhXC1raW5kXC1vZlwtYW5pbWFsXC13aGljaFwtbG9va3NcLWxpa2VcLWFcLXJhdDsKK+iTrumcpyA8IHdheFwtYXBwbGVcLVwoYVwtcmVkZGlzaFwtcGVhclwtc2hhcGVkXC1mcnVpdFwpOwor6aGM57C9IDwgdG9cLXdyaXRlXC10aGVcLXRpdGxlXC1vZlwtYVwtYm9va1wtb25cLWFcLWxhYmVsOwor55m+5oCd5LiN6KejIDwgcmVtYWluXC1wdXp6bGVkXC1hZnRlclwtcG9uZGVyaW5nXC1vdmVyXC1zdGg7CivljYrli57li5XlipsgPCBvbmVcLWFibGVcLXRvXC1kb1wtbGlnaHRcLW1hbnVhbFwtbGFib3VyXC1vbmx5Owor57i95b6M5Yuk6YOoIDwgXChtaWxpdGFyeVwpXC1nZW5lcmFsXC1sb2dpc3RpY3NcLWRlcGFydG1lbnQ7CivkuIDlnIvlhanliLYgPCBvbmVcLWNvdW50cnlcLFwtdHdvXC1zeXN0ZW1zXC1cKGNoaW5hXC10YWl3YW5cKTsKK+aTuuS6i+Wvpuism+mBk+eQhiA8IHByZXNlbnRcLXRoZVwtZmFjdHNcLWFuZFwtcmVhc29uXC10aGluZ3NcLW91dDsKK+iAgeS6jCA8IHRoZVwtc2Vjb25kXC1jaGlsZFwtb3JcLWJyb3RoZXJcLVwob3JcLXNpc3RlclwpOwor5Lit5Y2XIDwgXChhYmJyZXZpYXRpb25cLWZvclwpXC1jaGluYVwtXC1cLXNvdXRoXC1hZnJpY2E7CivpmL/mmIzml48gPCB0aGVcLWFjaGFuZ1wtbmF0aW9uYWxpdHlcLWxpdmluZ1wtaW5cLXl1bm5hbjsKK+eJiOasoSA8IHRoZVwtb3JkZXJcLWluXC13aGljaFwtZWRpdGlvbnNcLWFyZVwtcHJpbnRlZDsKK+WVpyA8IGludGVyamVjdGlvblwtb2ZcLWFwcHJvdmFsXC1vclwtYWRtaXJhdGlvbjsKK+aNuiA8IHRvXC1wcmVzc1wtZG93blwtaGVhdmlseVwtd2l0aFwtdGhlXC1maW5nZXJzOwor5YKjIDwgdGhlXC1kYWlcLW1pbm9yaXR5XC1saXZpbmdcLWluXC1zb3V0aFwtY2hpbmE7CivpuKkgPCBhXC1iaXJkXC1yZXNlbWJsaW5nXC10aGVcLXNlY3JldGFyeVwtZmFsY29uOwor5redIDwgbmFtZVwtb2ZcLWFuXC1hZmZsdWVudFwtb2ZcLXRoZVwtcG95YW5nXC1sYWtlOwor6YOFIDwgdG9cLWdvXC11cFwtdG9cLlwtZmxvdXJpc2hpbmdcLWFcLXN1cGVybGF0aXZlOwor6L2rIDwgYVwtYmxvY2tcLXRoYXRcLWtlZXBzXC1hXC13aGVlbFwtZnJvbVwtbW92aW5nOwor5ba3IDwgYVwtcmFuZ2VcLW9mXC1tb3VudGFpbnNcLWluXC1odW5hblwtcHJvdmluY2U7CivprLIgPCB0eXBlXC1vZlwtY2FsZHJvblwtd2l0aFwtdGhyZWVcLWhvbGxvd1wtbGVnczsKK+WIliA8IGN1dHRpbmdcLW9mZlwtZmVldFwtYXNcLWZvcm1cLW9mXC1wdW5pc2htZW50Owor56m4IDwgdGhlXC1nbG9vbVwtb2ZcLXRoZVwtZ3JhdmVcLWFcLXRvbWJcLW9yXC1ncmF2ZTsKK+iYhSA8IGFcLWZyYWdyYW50XC1wbGFudFwtdGhlXC1yb290XC1pc1wtbWVkaWNpbmFsOwor55m96aCt6Kun6ICBIDwgbGl2ZVwtdG9cLXJpcGVcLW9sZFwtYWdlXC1pblwtY29uanVnYWxcLWJsaXNzOwor5Y+X5YK3IDwgc3VmZmVyXC1pbmp1cmllc1wtXChpblwtYW5cLWFjY2lkZW50XCxcLWV0Y1wuXCk7CivoqILnq4sgPCBhZ3JlZVwtdG9cLVwodHJlYXR5XCxcLWNvbnRyYWN0XCxcLWFncmVlbWVudFwpOwor5aSP5puGIDwgdGhlXC10cmFkaXRpb25hbFwtY2hpbmVzZVwtbHVuYXJcLWNhbGVuZGFyOwor5oiQ5Y2D5LiK6JCsIDwgYnlcLXRoZVwtdGhvdXNhbmRzXC1hbmRcLXRlbnNcLW9mXC10aG91c2FuZHM7CivluKvnr4QgPCBub3JtYWxcLVwoZWdcLFwtYmVpamluZ1wtbm9ybWFsXC11bml2ZXJzaXR5XCk7CivkvanmtJvopb8gPCBcKG5hbmN5XClcLXBlbG9zaVwtXChtZW1iZXJcLW9mXC11c1wtY29uZ3Jlc3NcKTsKK+mphiA8IHVzZWRcLWluXC10cmFuc2xpdGVyYXRpbmdcLWJ1ZGRoaXN0XC1ib29rczsKK+mnjyA8IG9mZnNwcmluZ1wtb2ZcLWFcLXN0YWxsaW9uXC1hbmRcLWFcLXNoZVwtbXVsZTsKK+W7o+WgtCA8IGFcLXB1YmxpY1wtc3F1YXJlXC1cKGVnXCxcLXRpYW5hbm1lblwtc3F1YXJlXCk7CivpiYwgPCB0aGVcLWJlbGxzXC1vblwtdGhlXC1jYXJ0XC1pblwtYW5jaWVudFwtY2hpbmE7Civoo5znpaggPCBidXlcLW9uZScnc1wtdGlja2V0XC1hZnRlclwtdGhlXC1ub3JtYWxcLXRpbWU7Civnmbznh5IgPCBoYXZlXC1hXC1oaWdoXC10ZW1wZXJhdHVyZVwtXChmcm9tXC1pbGxuZXNzXCk7CivoqacgPCB0b1wtZXhhbWluZVwtaW50b1wtanVkaWNpYWxseVwtdG9cLWZpbmRcLW91dDsKK+e2syA8IGFcLWNsb3RoXC10b1wtY2FycnlcLWFuXC1pbmZhbnRcLW9uXC10aGVcLWJhY2s7CivntpYgPCB0aGVcLWhhbmdpbmdcLWZsYXBcLWluXC10aGVcLWZyb250XC1vZlwtYVwtaGF0Owor56WrIDwgdHJpZW5uaWFsXC1zYWNyaWZpY2VcLXRvXC1vbmUnJ3NcLWFuY2VzdG9yczsKK+ebhuWcsCA8IGJhc2luXC1cKGxvd1wtbHlpbmdcLWdlb2dyYXBoaWNhbFwtZmVhdHVyZVwpOwor56O7IDwgYVwtdHJpYnV0YXJ5XC1vZlwtdGhlXC13ZWlcLXJpdmVyXC1pblwtc2hhbnhpOwor5omL6LehIDwgc2JcLicnc1wtb3JpZ2luYWxcLWhhbmR3cml0aW5nXC1vclwtcGFpbnRpbmc7CivnkqfpgoQgPCByZXR1cm5cLVwoYVwtYm9ycm93ZWRcLW9iamVjdFwpXC13aXRoXC10aGFua3M7CivkuI3lrqPogIzmiLAgPCBvcGVuXC1ob3N0aWxpdGllc1wtd2l0aG91dFwtZGVjbGFyaW5nXC13YXI7CivlnIvpmpvpm7vkv6Hoga/nm58gPCBpbnRlcm5hdGlvbmFsXC10ZWxlY29tbXVuaWNhdGlvbnNcLXVuaW9uOwor5LiN6YGg5Y2D6YeMIDwgbWFrZVwtbGlnaHRcLW9mXC10cmF2ZWxsaW5nXC1hXC10aG91c2FuZFwtbGk7CivmlrQgPCB0aGVcLXNvdW5kXC1vZlwtd2F0ZXJcLWZsb3dpbmdcLWFtb25nXC1yb2NrczsKK+WuieWxheaogualrSA8IGxpdmVcLWFuZFwtd29ya1wtaW5cLXBlYWNlXC1hbmRcLWNvbnRlbnRtZW50Owor6KGo5aa5IDwgZmVtYWxlXC1jb3VzaW5cLXdpdGhcLWFcLWRpZmZlcmVudFwtc3VybmFtZTsKK+W0kSA8IGt1bmx1blwtbW91bnRhaW5zXC1pblwtamlhbmdcLXN1XC1wcm92aW5jZVwuOwor5ouG5pWjIDwgdG9cLWJyZWFrXC11cFwtXChhXC1tYXJyaWFnZVwsXC1mYW1pbHlcLFwtZXRjXC5cKTsKK+WQkOmtr+eVqiA8IHRoZVwtdHVyZmFuXC1iYXNpblwsXC1pblwteGluamlhbmdcLXByb3ZpbmNlOwor5YKZ5ZOBIDwgbWFjaGluZVwtcGFydHNcLW9yXC10b29sc1wta2VwdFwtaW5cLXJlc2VydmU7CivksJggPCB0b1wta2lsbFwtYnlcLWhhbmdpbmdcLW9yXC10b1wtc3RyYW5ndWxhdGlvbjsKK+SulyA8IHdoaXRlXC1mcm9tXC1mb3JlaGVhZFwtdG9cLWxpcHNcLW9mXC1hXC1ob3JzZTsKK+SqsiA8IGFuY2llbnRcLXB1bmlzaG1lbnRcLW9mXC1zaGF2aW5nXC10aGVcLWhlYWQ7CivkqbggPCBmaW5lXC13b29sZW5cLWJsYW5rZXRcLW9uXC10b3BcLW9mXC1hXC1zYWRkbGU7CivkqasgPCBhXC11bml0XC10b1wtY291bnRcLXNob2VzXC1pblwtYW5jaWVudFwtdGltZXM7CivkpoUgPCBhXC1raW5kXC1vZlwtd2VhcG9uXC11c2VkXC1pblwtYW5jaWVudFwtdGltZXM7CivkpZAgPCBjb29raW5nXC11dGVuc2lsc1wtdXNlZFwtaW5cLWFuY2llbnRcLXRpbWVzOwor5KKHIDwgYVwtc29uXC13aG9cLWlzXC1ub3RcLXNvXC1nb29kXC1hc1wtaGlzXC1mYXRoZXI7Civkm5cgPCB0b1wtcHJ5XC1pbnRvXC1vclwtZXhwb3NlXC1hbm90aGVyJydzXC1zZWNyZXQ7CivkmoUgPCB0b1wtbG9va1wtYWZ0ZXJcLWhvbWVcLW9yXC1kb21lc3RpY1wtYWZmYWlyczsKK+SYqCA8IHNob3J0XC1sZWdnaW5nc1wtZHJhd25cLW92ZXJcLXRoZVwtdHJvdXNlcnM7Civklr8gPCBhXC1raW5kXC1vZlwtY2xhbVwtd2l0aFwtdGhpY2tcLXdoaXRlXC1zaGVsbHM7CivklbAgPCBhXC1zZWNvbmRcLW5hbWVcLWZvclwtcmhpem9tZVwtb2ZcLXdpbmRcLXdlZWQ7Civkk60gPCB3ZWVkXC1vclwtZ3Jhc3NcLXdpdGhcLW5hcnJvd1wtdGhpY2tcLWdsYWRlczsKK+WNiuiEq+eUoiA8IHBhcnRseVwtcmVsZWFzZWRcLWZyb21cLXByb2R1Y3RpdmVcLWxhYm91cjsKK+SNuyA8IHlvdW5nXC1nb2F0XC1vZlwtc2hlZXBcLXVuZGVyXC1vbmVcLXllYXJcLW9sZDsKK+SNpiA8IGFcLWtpbmRcLW9mXC10dXJiYW5cLXVzZWRcLWluXC1hbmNpZW50XC10aW1lczsKK+SMuSA8IGFcLWdhcm1lbnRcLW9mXC1vbmVcLWNvbG91clwtd2l0aFwtbm9cLWxpbmluZzsKK+S4jeWPr+WQjOaXpeiAjOiqniA8IGNhbm5vdFwtYmVcLW1lbnRpb25lZFwtaW5cLXRoZVwtc2FtZVwtYnJlYXRoOwor5ISqIDwgaGFuZ2luZ1wtZG93blwtb2ZcLXRoZVwtZWFyc1wtb2ZcLXRoZVwtZ3JhaW5zOwor5ISNIDwgeWVhclwtZW5kXC1zYWNyaWZpY2VcLW9mXC10aGVcLXpob3VcLWR5bmFzdHk7CivjvaAgPCBjb25uZWN0aW9uXC1vZlwtdGhlXC1kaXRjaGVzXC1vclwtd2F0ZXJ3YXlzOwor47yuIDwgdG9cLXJ1Ylwtb3V0XC10aGVcLWZpbHRoXC13aXRoXC1icm9rZW5cLXRpbGVzOwor46upIDwgdGhlXC1maXJzdFwtb2ZcLXRoZVwtZm91clwtc2Vhc29uXC1cLVwtXC1zcHJpbmc7CivjpJ0gPCBwYWxwaXRhdGlvblwtb3JcLWZsdXR0ZXJpbmdcLW9mXC10aGVcLWhlYXJ0Owor45+MIDwgYVwtbW91bnRhaW5cLWluXC10b2RheScnc1wtc2ljaHVhblwtcHJvdmluY2U7CivjlK8gPCBhXC1sYXJnZVwtYmFza2V0XC1mb3JcLWhvbGRpbmdcLWNvb2tlZFwtcmljZTsKK+mmluS7uyA8IGZpcnN0XC1wZXJzb25cLXRvXC1iZVwtYXBwb2ludGVkXC10b1wtYVwtcG9zdDsKK+e4veabuOiomCA8IGdlbmVyYWxcLXNlY3JldGFyeVwtXChvZlwtY29tbXVuaXN0XC1wYXJ0eVwpOwor6YOo6ZW3IDwgaGVhZFwtb2ZcLWFcLVwoZ292ZXJubWVudFwsXC1ldGNcKVwtZGVwYXJ0bWVudDsKK+avlOmHjyA8IHRha2VcLXJvdWdoXC1tZWFzdXJlbWVudHNcLVwod2l0aFwtdGhlXC1oYW5kOwor6YGN6auU6bGX5YK3IDwgY292ZXJlZFwtYWxsXC1vdmVyXC13aXRoXC1jdXRzXC1hbmRcLWJydWlzZXM7CivnrJkgPCBzbWFsbFwtZ291cmRcLXNoYXBlZFwtbXVzaWNhbFwtaW5zdHJ1bWVudDsKK+a7lSA8IGFuXC1hbmNpZW50XC1zdGF0ZVwtaW5cLXNoYW5kb25nXC1wcm92aW5jZTsKK+mVmyA8IGxhcmdlXC1iZWxsXC11c2VkXC1hc1wtbXVzaWNhbFwtaW5zdHJ1bWVudDsKK+iutSA8IGFuXC1pbnRlcmplY3Rpb25cLXVzZWRcLWV4cHJlc3NcLXN1cnByaXNlOwor5rOUIDwgd2F0ZXJcLWZyb21cLXdhc2hpbmdcLXJpY2VcLXRvXC1ib2lsXC10aGljazsKK+eYkCA8IHRvXC1kaWVcLWluXC1wcmlzb25cLWZyb21cLWNvbGRcLWFuZFwtaHVuZ2VyOwor5qO8IDwgYmVhbXNcLWluXC10aGVcLXJvb2ZcLW9mXC1hXC1ob3VzZVwtY29uZnVzZWQ7CivmlZnmjojnlaLnq5/mmK/mlZnmjoggPCBwcm9mZXNzb3JzXC1hcmVcLVwoYWZ0ZXJcLWFsbFwpXC1wcm9mZXNzb3JzOwor55m+6Laz5LmL6J+y5q276ICM5LiN5YO1IDwgYVwtY2VudGlwZWRlXC1kaWVzXC1idXRcLW5ldmVyXC1mYWxsc1wtZG93bjsKK+WNmuaEmyA8IHVuaXZlcnNhbFwtZnJhdGVybml0eVwtXChvclwtYnJvdGhlcmhvb2RcKTsKK+aVl+eBqyA8IHJlbGlldmVcLWluZmxhbW1hdGlvblwtb3JcLWludGVybmFsXC1oZWF0Owor57aT54efIDwgZW5nYWdlXC1pblwtXChhXC1idXNpbmVzc1wtYWN0aXZpdHlcLFwtZXRjXC5cKTsKK+mbhuaIkCA8IGludGVncmF0ZWRcLVwoYXNcLWluXC1pbnRlZ3JhdGVkXC1jaXJjdWl0XCk7CivpuoUgPCBhXC1zbWFsbFwtc3BvdHRlZFwtZGVlclwtZm91bmRcLWluXC1uXC5jaGluYTsKK+WFp+aHruWkluaCoyA8IGRvbWVzdGljXC1zdHJpZmVcLWFuZFwtZm9yZWlnblwtYWdyZXNzaW9uOwor5a6J5YWo6IiH5Lqk5o+b5aeU5ZOh5pyDIDwgc2VjdXJpdGllc1wtYW5kXC1leGNoYW5nZVwtY29tbXVuaWNhdGlvbjsKK+aUv+WnlCA8IHBvbGl0aWNhbFwtY29tbWlzc2FyXC1cKHdpdGhpblwtdGhlXC1hcm15XCk7CivmsojlnIvmlL4gPCBjaGluZXNlXC1mb3JlaWduXC1taW5pc3RyeVwtc3Bva2VzcGVyc29uOwor57eo5bCOIDwgd3JpdGVcLWFuZFwtZGlyZWN0XC1cKGFcLXBsYXlcLFwtZmlsbVwsXC1ldGNcLlwpOwor6KGM6aebIDwgXCh2ZWhpY2xlc1wsXC1ldGNcLlwpXC10cmF2ZWxcLWFsb25nXC1hXC1yb3V0ZTsKK+WFteeoriA8IFwobWlsaXRhcnlcKVwtYnJhbmNoXC1vZlwtdGhlXC1hcm1lZFwtZm9yY2VzOwor6Zi8IDwgdGhlXC1zdGVwc1wtbGVhZGluZ1wtdG9cLXRoZVwtZWFzdGVyblwtZG9vcjsKK+mAvOWuriA8IGZvcmNlXC10aGVcLWtpbmdcLW9yXC1lbXBlcm9yXC10b1wtYWJkaWNhdGU7CivovJcgPCBhXC1jcm9zc1wtYmFyXC1hdFwtZW5kXC1vZlwtYVwtY2FycmlhZ2VcLXBvbGU7CivoiKrooYwgPCBzYWlsXC1vclwtZmx5XC1cKGluXC1haXJcLFwtd2F0ZXJcLFwtb3JcLXNwYWNlXCk7CivoqY4gPCBpbnRlcmplY3Rpb25cLXVzZWRcLXRvXC1leHByZXNzXC1zdXJwcmlzZTsKK+e8jCA8IGNvYXJzZVwtY290dG9uXC1jbG90aFwtdXNlZFwtZm9yXC1tb3VybmluZzsKK+ehnCA8IHRoZVwtc291bmRcLW9mXC1zdG9uZXNcLWtub2NraW5nXC10b2dldGhlcjsKK+ebuOS/oSA8IGJlXC1jb252aW5jZWRcLVwodGhhdFwtc29tZXRoaW5nXC1pc1wtdHJ1ZVwpOwor54qJIDwgYW5cLW94XC13aXRoXC15ZWxsb3dcLWhhaXJcLWFuZFwtYmxhY2tcLWxpcHM7Civmi5Tnp6cgPCBwdWxsXC11cFwtc2VlZGxpbmdzXC1cKGZvclwtdHJhbnNwbGFudGluZ1wpOwor54WdIDwgdHdpc3RlZFwtcGFwZXJcLWZvclwtbGlnaHRpbmdcLWNpZ2FyZXR0ZXM7CivmiYvoo6EgPCBcKGFcLXNpdHVhdGlvblwtaXNcKVwtaW5cLVwoc29tZW9uZScnc1wpXC1oYW5kczsKK+aNleaSiCA8IGZpc2hcLWZvclwtXChhcXVhdGljXC1hbmltYWxzXC1hbmRcLXBsYW50c1wpOwor56mG5qGC6IuxIDwgbXVcLWd1aVwteWluZ1wtXChuYW1lXC1vZlwtYVwtd29tYW5cLXdhcnJpb3JcKTsKK+ewveWQjSA8IHRvXC1zaWduXC1cKG9uZScnc1wtbmFtZVwtd2l0aFwtYVwtcGVuXCxcLWV0Y1wuXCk7Civmv5/ljZcgPCBqaScnbmFuXC1cKGNhcGl0YWxcLW9mXC1zaGFuZG9uZ1wtcHJvdmluY2VcKTsKK+W4rCA8IHRoZVwtc2tpcnRcLW9mXC1hXC1sYWR5JydzXC1kcmVzc1wtcGV0dGljb2F0Owor5bWgIDwgYVwtdmFsbGV5XC13aXRoXC1hXC1zdHJlYW1cLWluXC1pdFwuXC1hXC1nb3JnZTsKK+iZm+aTrOmAmumBk+aomeiqjOespiA8IHZpcnR1YWxcLWNoYW5uZWxcLWNvbm5lY3Rpb25cLWlkZW50aWZpZXI7CivlsY/mop0gPCBzZXRcLW9mXC1cKHVzdWFsbHlcLWZvdXJcKVwtaGFuZ2luZ1wtc2Nyb2xsczsKK+Wtq+Wls+WFkiA8IGdyYW5kZGF1Z2h0ZXJcLVwoZGF1Z2h0ZXJcLW9mXC1vbmUnJ3NcLXNvblwpOwor56m256ufIDwgYWZ0ZXJcLWFsbFwtXCh3aGVuXC1hbGxcLWlzXC1zYWlkXC1hbmRcLWRvbmVcKTsKK+mOruaxnyA8IHpoZW5qaWFuZ1wtXChjaXR5XClcLFwtaW5cLWppYW5nc3VcLXByb3ZpbmNlOwor5LGXIDwgYVwtbG9uZ1wtbmFycm93XC1maXNoXC10cmljaGl1cnVzXC1hcm1hdHVzOwor5LGUIDwgYVwtbG9uZ1wtbmFycm93XC1hbmRcLXNpbHZlclwtY29sb3JlZFwtZmlzaDsKK+SqkyA8IGFcLW1ldGFsXC1vcm5hbWVudFwtb25cLXNvbWVcLWtpbmRcLW9mXC1iZWx0Owor5KiZIDwgdG9cLXJhaW5cLWNhdHNcLWFuZFwtZG9nc1wtZm9yXC1hXC1sb25nXC10aW1lOwor5KaKIDwgYW5cLWFwcGxpYW5jZVwtZm9yXC13YWxraW5nXC1vblwtdGhlXC1zYW5kczsKK+SlgiA8IHRoZVwtc2hhcnBcLWVkZ2VcLW9mXC1hXC1zaG92ZWxcLW9yXC1hXC1zcGFkZTsKK+ShlSA8IHRoZVwtcmVhclwtcGxhdGZvcm1cLW9mXC1hXC1saWdodFwtY2FycmlhZ2U7CivknJQgPCB0b1wtc3BlYWtcLW9uXC10aGVcLWlkZWFzXC1vZlwtc29tZW9uZVwtZWxzZTsKK+ayu+eXheaVkeS6uiA8IGN1cmVcLXRoZVwtc2lja25lc3NcLXRvXC1zYXZlXC10aGVcLXBhdGllbnQ7CivklqAgPCBhXC1raW5kXC1vZlwtbGl6YXJkXC1mb3VuZFwtaW5cLWRhbXBcLXBsYWNlczsKK+SWnCA8IHRoZVwtZmlnaHRpbmdcLXNvdW5kXC1tYWRlXC1ieVwtdHdvXC10aWdlcnM7CivmnInlv5fogIXkuovnq5/miJAgPCB3aGVyZVwtdGhlcmVcLWlzXC1hXC13aWxsXCxcLXRoZXJlXC1pc1wtYVwtd2F5Owor5I6SIDwgZmx5aW5nXC1xdWlja2x5XC1hbmRcLXRvXC1hdHRhY2tcLXN1ZGRlbmx5Owor5IuKIDwgZGVjb3JhdGlvbnNcLW9mXC10aGVcLWVtcGVyb3InJ3NcLWNhcnJpYWdlOwor5ICbIDwgdG9cLWxvb2tcLWZhclwtd2l0aFwtdGhlXC1leWVzXC1oYWxmXC1jbG9zZWQ7CivjvKggPCBhXC13YXRlclwtamFyXC13aXRoXC1lYXJzXC1mb3JcLWNhcnJ5aW5nXC1pdDsKK+O7jiA8IGFcLWxhcmdlXC1ob3Jpem9udGFsXC1tdXNpY2FsXC1pbnN0cnVtZW50Owor47qqIDwgYW5cLXVuY2FydmVkXC1vZlwtdW5wb2xpc2hlZFwtamFkZVwtb3JcLWdlbTsKK+O1vyA8IGVuZGxlc3NseVwtbG9uZ1wtb3JcLXZhc3RcLXdhdGVyXC1jdXJyZW50czsKK+O0qSA8IG5hbWVcLW9mXC1hXC1zdHJlYW1cLWluXC1zaGFuZG9uZ1wtcHJvdmluY2U7Civjr5ggPCBhXC1zbWFsbFwtd29vZGVuXC1zdGFuZFwtaGF2aW5nXC1mb3VyXC1sZWdzOwor46SNIDwgbmV2ZXJcLXJldmVhbFwtb25lJydzXC1mZWVsaW5nXC1vclwtZW1vdGlvbjsKK+OjoCA8IGFcLXJvcGVcLWRlY29yYXRlZFwtd2l0aFwtYnJvbnplXC1vcm5hbWVudDsKK+OhkSA8IGFuY2llbnRcLW1vdXJuaW5nXC10dXJiYW5cLXdvcm5cLWJ5XC13b21lbjsKK+OgkSA8IGhpZ2hcLW1vdW50YWluXC1zdGVlcFwtcnVnZ2VkXC1hbmRcLXVuZXZlbjsKK+OghCA8IG5hbWVcLW9mXC1hXC1tb3VudGFpblwtaW5cLXl1bm5hblwtcHJvdmluY2U7CivjoIEgPCBpcnJlZ3VsYXJcLW91dGxpbmVcLW9mXC1hXC1yYW5nZVwtb2ZcLWhpbGxzOwor45+aIDwgbmFtZVwtb2ZcLWFcLW1vdW50YWluXC1pblwtc2hhbnhpXC1wcm92aW5jZTsKK+OatiA8IHdpZmVcLW9mXC1vbmUnJ3NcLWh1c2JhbmQnJ3NcLWVsZGVyXC1icm90aGVyOwor45iIIDwgYWJsZVwtdG9cLXRha2VcLWFcLWNvcnJlY3RcLXZpZXdcLW9mXC10aGluZ3M7Civjl7AgPCB0aGVcLWNoYXJhY3RlclwtdXNlZFwtaW5cLXRyYW5zbGl0ZXJhdGlvbjsKK+OSvyA8IGFcLWtpbmRcLW9mXC10dXJiYW5cLXVzZWRcLWluXC1hbmNpZW50XC10aW1lOwor5Li756eRIDwgcmVxdWlyZWRcLWNvdXJzZXNcLWluXC10aGVcLW1ham9yXC1zdWJqZWN0Owor5bCa5oWV5p2wIDwgamFtZXNcLXNhc3NlclwtXCh1c1wtYW1iYXNzYWRvclwtdG9cLWNoaW5hXCk7Civlk4DptLvpgY3ph44gPCBhXC1sYW5kXC1zd2FybWluZ1wtd2l0aFwtZGlzYXN0ZXJcLXZpY3RpbXM7Civnl4Xlvp7lj6PlhaUgPCBpbGxuZXNzXC1maW5kc1wtaXRzXC13YXlcLWluXC1ieVwtdGhlXC1tb3V0aDsKK+ePreW6lSA8IG9yZGluYXJ5XC1tZW1iZXJzXC1vZlwtdGhlYXRyaWNhbFwtdHJvdXBlOwor6YeR57y9IDwgXChnb2xkXClcLWFsbXNcLWJvd2xcLVwob2ZcLWFcLWJ1ZGRoaXN0XC1tb25rXCk7CivloZ7niL7ljZcgPCBcKGV1Z2VuZVwpXC1jZXJuYW5cLVwoYXBvbGxvXC0xN1wtYXN0cm9uYXV0XCk7Civoga/lkI0gPCBqb2ludGx5XC1cKHNpZ25lZFwsXC1kZWNsYXJlZFwsXC1zcG9uc29yZWRcKTsKK+e4veWPg+isgOmDqCA8IFwobWlsaXRhcnlcKVwtZ2VuZXJhbFwtc3RhZmZcLWhlYWRxdWFydGVyczsKK+S4i+amuyA8IHN0YXlcLWF0XC1cKGFcLWhvdGVsXCxcLWV0Y1wuXC1kdXJpbmdcLWFcLXRyaXBcKTsKK+W5tOeVq+WFkiA8IG5ld1wteWVhclwtXChvclwtc3ByaW5nXC1mZXN0aXZhbFwpXC1waWN0dXJlOwor6ZC16aOv56KXIDwgXCJpcm9uXC1yaWNlXC1ib3dsXCJcLVwtXC1cLXNlY3VyZVwtZW1wbG95bWVudDsKK+iBr+mCpuiqv+afpeWxgCA8IGZiaVwtXChmZWRlcmFsXC1idXJlYXVcLW9mXC1pbnZlc3RpZ2F0aW9uXCk7Civog6Hlv5fmmI4gPCBob1wtY2hpXC1taW5oXC1cKHZpZXRuYW1lc2VcLWxlYWRlclwsXC1jaXR5XCk7CivoqJjov7AgPCBtYWtlXC1hXC1kZXNjcmlwdGl2ZVwtcmVjb3JkXC1cKG9mXC1ldmVudHNcKTsKK+aSpee1g+aoguWZqCA8IHBsdWNrZWRcLXN0cmluZ1wtb3JcLXN0cmluZ2VkXC1pbnN0cnVtZW50Owor5byBIDwgY29uaWNhbFwtY2FwXC13b3JuXC1kdXJpbmdcLXpob3VcLWR5bmFzdHk7CivphYkgPCB0ZW50aFwtb2ZcLXRoZVwtdHdlbHZlXC1lYXJ0aGx5XC1icmFuY2hlczsKK+aXjCA8IGJhbm5lclwtb3JcLWZsYWdcLWFkb3JuZWRcLXdpdGhcLWZlYXRoZXJzOwor6KGuIDwgY2VyZW1vbmlhbFwtZHJlc3NcLXdvcm5cLWJ5XC10aGVcLWVtcGVyb3I7CivmuqcgPCByaXZlclwtaW5cLWFuaHVpXC1hbmRcLWppYW5nc3VcLXByb3ZpbmNlczsKK+ezjSA8IGZvb2RcLW1hZGVcLW9mXC1jcnVzaGVkXC1hbmRcLWNvb2tlZFwtcmljZTsKK+aumyA8IHRvXC1wdXRcLXRvXC1kZWF0aFwtdG9cLWltcHJpc29uXC1mb3JcLWxpZmU7Civni40gPCBzcGVjaWVzXC1vZlwtZGVlclwtZm91bmRcLWluXC1ub3J0aFwtY2hpbmE7Civnu4IgPCByaWJib25cLW9yXC1jb3JkXC11c2VkXC1hdHRhY2hcLW9ybmFtZW50czsKK+ejiSA8IHRoZVwtc3RvbmVcLWJhc2VcLW9yXC1wbGludGhcLW9mXC1hXC1waWxsYXI7CivolbkgPCBpcG9tb2VhXC1hcXVhdGljYVwtdXNlZFwtYXNcLWFcLXZlZ2V0YWJsZTsKK+aal+WCtyA8IGludGVybmFsXC1cKGludmlzaWJsZVwpXC1pbmp1cnlcLVwoZGFtYWdlXCk7CivmqpTmoYjovYnpgIHlrZjlj5blj4rnrqHnkIYgPCBmaWxlXC10cmFuc2ZlclwsXC1hY2Nlc3NcLWFuZFwtbWFuYWdlbWVudDsKK+Wkqua5liA8IHRhaVwtaHVcLWxha2VcLFwtYVwtYmlnXC1sYWtlXC1ieVwtd3V4aVwtY2l0eTsKK+apq+mJpCA8IFwoaG9yaXpvbnRhbFwtaG9va2VkXC1jaGFyYWN0ZXJcLXN0cm9rZVwpOwor5YyX5a6LIDwgdGhlXC1ub3J0aGVyblwtc29uZ1wtZHluYXN0eVwtXCg5NjBcLTExMjdcKTsKK+m9iCA8IGNvbGRcLWluXC10aGVcLWhlYWRcLWNhdGFycmhcLW9mXC10aGVcLW5vc2U7CivpubsgPCBpbXB1cmVcLWNhcmJvbmF0ZVwtb2ZcLXNvZGl1bVwtb2ZcLW5hdHJvbjsKK+mEieS4iyA8IGNvdW50cnlcLVwoYXNcLW9wcG9zZWRcLXRvXC10b3duXC1vclwtY2l0eVwpOwor6baiIDwgYVwtYmlyZFwtd2hpY2hcLWZyZXF1ZW50c1wtdGhlXC1zZWFcLXNob3JlOwor5Yil5YW35LiA5qC8IDwgaGF2aW5nXC1hXC11bmlxdWVcLW9yXC1kaXN0aW5jdGl2ZVwtc3R5bGU7CivnsL3oqIIgPCB0b1wtYWdyZWVcLXRvXC1hbmRcLXNpZ25cLVwoYVwtdHJlYXR5XCxcLWV0Y1wpOwor6YOqIDwgbmFtZVwtb2ZcLWFcLXN0cmVhbVwtaW5cLXNpY2h1YW5cLXByb3ZpbmNlOwor5b6Q5oKy6bS7IDwgbmFtZVwtb2ZcLWFcLWZhbW91c1wtcGFpbnRlclwsXC14dVwtYmVpaG9uZzsKK+i9niA8IGFcLXZlaGljbGVcLWZvclwtdHJhbnNwb3J0aW5nXC1wcmlzb25lcnM7CivovLkgPCB0d29cLXBpZWNlc1wtb2ZcLXdvb2RcLXVuZGVybmVhdGhcLWFcLWNhcnQ7CivoroDos6PmlrDogZ4gPCB5b21pdXJpXC1zaGltYnVuXC1cKGphcGFuZXNlXC1uZXdzcGFwZXJcKTsKK+WinuWAvCA8IGFwcHJlY2lhdGlvblwtXChvZlwtYVwtY2FyXCxcLWhvdXNlXCxcLWV0Y1wuXCk7CivkuIDkuZ3lm5vkuZ3lubQgPCB0aGVcLXllYXJcLTE5NDlcLVwoY29tbXVuaXN0XC1yZXZvbHV0aW9uXCk7Civoir8gPCBncmFzc1wtd2hpY2hcLWhhc1wtYmVlblwtY3V0XC1hbmRcLXJlZ3Jvd247Civog6wgPCBhXC1kaXNlYXNlJydzXC1uYW1lXC1pblwtY2hpbmVzZVwtbWVkaWNpbmU7CivnpoogPCBzZW1pXC1hbm51YWxcLWNlcmVtb255XC1vZlwtcHVyaWZpY2F0aW9uOwor5YW15a62IDwgbWlsaXRhcnlcLXN0cmF0ZWdpc3RcLWluXC1hbmNpZW50XC1jaGluYTsKK+iLseWwuiA8IFwoZW5nbGlzaFwpXC1mb290XC1cKHVuaXRcLW9mXC1tZWFzdXJlbWVudFwpOwor5ZyL6Zqb5qiZ5rqW57WE57mUIDwgaW50ZXJuYXRpb25hbFwtc3RhbmRhcmRzXC1vcmdhbml6YXRpb247CivmiY3nlo/lrbjmt7ogPCBoYXZlXC1saXR0bGVcLXRhbGVudFwtYW5kXC1sZXNzXC1sZWFybmluZzsKK+a3qumZtyA8IFwodGVycml0b3J5XClcLWZhbGxcLXRvXC1lbmVteVwtb2NjdXBhdGlvbjsKK+aIpSA8IGFcLXNtYWxsXC1zdGVlbHlhcmRcLWZvclwtd2VpZ2hpbmdcLW1vbmV5Owor6Iqx5pyo6JitIDwgaHVhXC1tdVwtbGFuXC1cKG5hbWVcLW9mXC1hXC13b21hblwtd2FycmlvclwpOwor5omT5LiN6YGOIDwgbm90XC10b1wtYmVcLWFibGVcLXRvXC1iZWF0XC1vclwtZGVmZWF0XC1zYlwuOwor5LiW55WM5oCn5Y+k6ICB5ZWP6aGMIDwgYVwtcHJvYmxlbVwtYXNcLW9sZFwtYXNcLXRoZVwtd29ybGRcLWl0c2VsZjsKK+mBv+WdkeiQveS6lSA8IGRvZGdlXC1hXC1waXRcLW9ubHlcLXRvXC1mYWxsXC1pbnRvXC1hXC13ZWxsOwor5a+NIDwgdXNlZFwtYXNcLWFcLXRlcm1cLW9mXC1jb21wYXJpc29uXDpcLXJhdGhlcjsKK+S6uumBuCA8IHBlcnNvblwoc1wpXC1zZWxlY3RlZFwtXChmb3JcLWFcLWpvYlwsXC1ldGNcLlwpOwor55m85LqG6KiAIDwgXChcInBhc3RcLXRlbnNlXCJcLW9mXC1cOueZvOiogFwpXC1zcG9rZVwtcHVibGljbHk7CivlkpcgPCB2ZXJiYWxcLXBhcnRpY2xlXC1vZlwtcGVyZmVjdGl2ZVwtYXNwZWN0Owor6K6K5rqr5YuV54mpIDwgcG9pa2lsb3RoZXJtYWxcLVwoY29sZFwtYmxvb2RlZFwpXC1hbmltYWw7CivmnIPplbcgPCBwcmVzaWRlbnRcLW9mXC1hXC1jbHViXCxcLWNvbW1pdHRlZVwsXC1ldGNcLjsKK+S4sSA8IGNoaWxkJydzXC1oYWlyc3R5bGVcLWJvdW5kXC1pblwtdHdvXC10dWZ0czsKK+S4jeiHqumHjyA8IG5vdFwtdGFrZVwtYVwtcHJvcGVyXC1tZWFzdXJlXC1vZlwtb25lc2VsZjsKK+SupCA8IG9uZVwtb2ZcLXRoZVwtMzZcLWdhcmRlbnNcLWluXC1oYW5cLWR5bmFzdHk7CivkrK0gPCBuYW1lXC1vZlwtYVwtbGVnZW5kYXJ5XC1mZXJvY2lvdXNcLWFuaW1hbDsKK+SqlCA8IGNyb3NzXC1iYXJcLW9mXC13b29kXC11bmRlclwtdGhlXC1jYXJyaWFnZTsKK+SnpCA8IG5hbWVcLW9mXC1hXC1yaXZlclwtaW5cLXNoYW5kb25nXC1wcm92aW5jZTsKK+SkjCA8IGFcLWtpbmRcLW9mXC13aW5lXC1iZVwtYnJld2VkXC1mcm9tXC1ncmFpbnM7CivkoLcgPCB0aGVcLWFwcGVhcmFuY2VcLW9mXC1oZWlnaHRcLWluXC1hXC1wZXJzb247CivkoIUgPCBoYW5kc1wtYW5kXC1mZWV0XC1jaGFwcGVkXC1mcm9tXC10aGVcLWNvbGQ7CivknaQgPCBhXC1wcmltaXRpdmVcLXRyaWJlXC1pblwtc291dGh3ZXN0XC1jaGluYTsKK+SdnyA8IGFcLWZpZXJjZVwtbWFuXC1lYXRpbmdcLWFuaW1hbFwtaW5cLWxlZ2VuZDsKK+SdnSA8IGFuXC1leGNsYW1hdGlvblwtaW5kaWNhdGluZ1wtYWRtaXJhdGlvbjsKK+SbkyA8IGFuXC1vZmZpY2lhbFwtcG9zaXRpb25cLWluXC1mb3JtZXJcLXRpbWVzOwor5JqYIDwgdGhlXC1sb25nXC1hbmRcLXVwcmlnaHRcLWhvcm5zXC1vZlwtY2F0dGxlOwor5JaSIDwgZWFydGhlbndhcmVcLXdpdGhcLXRoZVwtc2hhcGVcLW9mXC1hXC1iZWFuOwor5JWOIDwgbmFtZVwtb2ZcLWFcLXZhcmlldHlcLW9mXC1ncmFzc1wtcGVyZW5uaWFsOwor5JORIDwgbmFtZVwtb2ZcLWFcLXZhcmlldHlcLW9mXC1ncmFzc1wtZHVja3dlZWRzOwor5JGXIDwgdG9cLXBvdW5kXC1pblwtb3JkZXJcLXRvXC1yZW1vdmVcLXRoZVwtaHVzazsKK+SQsSA8IHRvXC1waWNrXC10aGVcLW1lYXRcLWluXC1iZXR3ZWVuXC1vZlwtYm9uZXM7Civkj4EgPCB1bmFibGVcLXRvXC1oZWFyXC1kaXN0aW5jdGx5XC1vclwtY2xlYXJseTsKK+Wvq+aIkCA8IHRvXC1jb21waWxlXC1cKGZhc2hpb25cLXRocm91Z2hcLXdyaXRpbmdcKTsKK+SKoCA8IHRvXC1naXZlXC1hXC1zdXBwbHlcLWZcLWdyYWluXC1mb3JcLXJhdGlvbnM7CivkiZ8gPCBhXC1iYW1ib29cLWJhc2tldFwtdXNlZFwtdG9cLWNhdGNoXC1maXNoZXM7CivkiLAgPCBhXC1icnVzaFwtZm9yXC13YXNoaW5nXC1raXRjaGVuXC11dGVuc2lsczsKK+SHvCA8IGFcLWJhbWJvb1wtdmVzc2VsXC11c2VkXC10b1wtY2F0Y2hcLWZpc2hlczsKK+WQnumHkSA8IHRvXC1jb21taXRcLXN1aWNpZGVcLWJ5XC1zd2FsbG93aW5nXC1nb2xkOwor5ISrIDwgYVwta2luZFwtb2ZcLXNvcmdodW1cLXdpdGhcLXdoaXRlXC1zcHJvdXRzOwor5ISIIDwgc2FjcmlmaWNlXC10b1wtaGFwcGluZXNzXC1hbmRcLWdvb2RcLWx1Y2s7Civkg6QgPCBibGFja1wtY29sb3JlZFwtZ3JpbmRzdG9uZVwtb3JcLXdoZXN0b25lOwor5IOOIDwgbmFtZVwtb2ZcLWFcLXBsYWNlXC1cLXNtYWxsXC1waWVjZVwtb2ZcLWNvYWw7CivkgrkgPCBzb3VuZFwtb2ZcLXRoZVwtZmFsbGluZ1wtcGllY2VzXC1vZlwtcm9ja3M7CivkgbYgPCB0b1wtbG9va1wtYXRcLXNvbWV0aGluZ1wtd2l0aG91dFwtd2lua2luZzsKK+SBtSA8IG5ld2Jvcm5cLWJhYnlcLXdpdGhcLXRoZVwtZXllbGlkc1wtY2xvc2VkOwor5p2/55y8IDwgbWVhc3VyZVwtaW5cLXRyYWRpdGlvbmFsXC1jaGluZXNlXC1tdXNpYzsKK+O9hSA8IHZlc3NlbFwtZm9yXC1jZXJlbW9ueVwtaW5cLWFuY2llbnRcLXRpbWVzOwor47i5IDwgY2F0dGxlXC13aXRoXC13aGl0ZVwtc3RyaXBlXC1vblwtdGhlXC1iYWNrOwor47iXIDwgbm90XC1hXC1yZWFsXC1mYXRoZXJcLW9yXC1hXC1uYXR1cmVcLWZhdGhlcjsKK+OzmCA8IGFcLWZvdW50YWluXC1vclwtc3ByaW5nXC1mbG93c1wtZG93bndhcmRzOwor466vIDwgd2hvbGVcLXBpZWNlXC1vZlwtb3JcLXVuYnJva2VuXC1maXJld29vZHM7CivjrpwgPCBhXC1ibG9ja3NcLWVuZ3JhdmVkXC1mb3JcLWhvbGRpbmdcLXRoaW5nczsKK+OfvCA8IG5hbWVcLW9mXC1hXC1wbGFjZVwtaW5cLXNoYW5kb25nXC1wcm92aW5jZTsKK+mmluW6nCA8IGNhcGl0YWxcLWNpdHlcLW9mXC1hblwtYXV0b25vbW91c1wtcmVnaW9uOwor456UIDwgdGhlXC11cHJpZ2h0XC1iYXJcLWZvclwtZmFzdGVuaW5nXC1hXC1kb29yOwor452eIDwgcHJldGVuZFwtdG9cLWJlXC1kZWxpY2F0ZVwtYW5kXC1iZWF1dGlmdWw7CivjnLkgPCBuYW1lXC1vZlwtYVwtZm9sa1wtc29uZ1wtaW5cLWFuY2llbnRcLXRpbWVzOwor45qBIDwgdGhlXC1sb25nXC10YWlsXC1mZWF0aGVyc1wtd2hpY2hcLWN1cmxcLXVwOwor54+t5qyhIDwgb3JkZXJcLW9mXC1jbGFzc2VzXC1vclwtZ3JhZGVzXC1hdFwtc2Nob29sOwor5oqE5b6M6LevIDwgdG9cLW91dGZsYW5rXC1hbmRcLWF0dGFja1wtZnJvbVwtdGhlXC1yZWFyOwor57eo5bm06auUIDwgYW5uYWxpc3RpY1wtc3R5bGVcLVwoaW5cLWhpc3RvcmlvZ3JhcGh5XCk7CivlrrbphInpm54gPCAnJ2hvbWVcLXRvd25cLWNoaWNrZW4nJ1wtXChhXC10eXBlXC1vZlwtZGlzaFwpOwor56ug5a2d5Zq0IDwgam9oblwtY2hhbmdcLVwodGFpd2FuXC1mb3JlaWduXC1taW5pc3RlclwpOwor6LK05beeIDwgbmFtZVwtb2ZcLWFcLXByb3ZpbmNlXC1pblwtY2hpbmFcLFwtZ3VpemhvdTsKK+iTi+iMqCA8IFwoYmlsbFwpXC1nYXRlc1wtXChjaGFpcm1hblwtb2ZcLW1pY3Jvc29mdFwpOwor5ZC45byVIDwgYXR0cmFjdFwtXChpbnRlcmVzdFwsXC1pbnZlc3RtZW50XCxcLWV0Y1wuXCk7CivkvobkuI3lj4ogPCB0aGVyZScnc1wtbm90XC1lbm91Z2hcLXRpbWVcLVwodG9cLWRvXC1zdGhcLlwpOwor5pqX5ai8IDwgdW5saWNlbnNlZFwtXCh1bnJlZ2lzdGVyZWRcKVwtcHJvc3RpdHV0ZTsKK+mdnuWwjeeoseW8j+aVuOaTmueUqOaItue3miA8IGFzeW1tZXRyaWNhbFwtZGlnaXRhbFwtc3Vic2NyaWJlclwtbGluZTsKK+mcuOeOiyA8IHhpYW5nNHl1M1wtXCgyMzJcLTIwMlwtYmNcKVwtdGhlXC1jb25xdWVyb3I7Civlo73npq4gPCBiaXJ0aGRheVwtcHJlc2VudFwtXChmb3JcLWFuXC1vbGRcLXBlcnNvblwpOwor6ZiuIDwgYW5jaWVudFwtbXVzaWNhbFwtaW5zdHJ1bWVudFw6XC1zdXJuYW1lOwor5ZaUIDwgZGVzY3JpcHRpdmVcLW9mXC1jcnlpbmdcLW9yXC1vZlwtY3Jvd2luZzsKK+eQjyA8IHZlc3NlbFwtdXNlZFwtdG9cLWhvbGRcLWdyYWluXC1vZmZlcmluZ3M7CivpgpUgPCBmb3JtZXJcLW9yXC1saXRlcmFyeVwtbmFtZVwtZm9yXC1uYW5uaW5nOwor6a2RIDwgYVwtbW91bnRhaW5cLWRlbW9uXC1yZXNlbWJsaW5nXC1hXC10aWdlcjsKK+aYtiA8IGFcLWxvbmdcLWRheVwuXC1icmlnaHRcLlwtZXh0ZW5kZWRcLlwtY2xlYXI7CivnvKcgPCBhXC1jaGFpblwtb3JcLXJvcGVcLXVzZWRcLWJpbmRcLWNyaW1pbmFsczsKK+ierSA8IGFcLWRyYWdvblwtd2hvc2VcLWhvcm5zXC1oYXZlXC1ub3RcLWdyb3duOwor6b6AIDwgbG9zZVwtYmFieVwtdGVldGhcLWFuZFwtZ2V0XC1hZHVsdFwtdGVldGg7CivogpwgPCB0b1wtc2FjcmlmaWNlXC1vblwtdHdvXC1zdWNjZXNzaXZlXC1kYXlzOwor6YKXIDwgYW5cLWFuY2llbnRcLXBsYWNlXC1pblwtdGhlXC1zdGF0ZVwtb2ZcLXd1Owor6JCs57ijIDwgd2FueGlhblwtY291bnR5XCxcLWluXC1zaWNodWFuXC1wcm92aW5jZTsKK+atu+S4jeS6hiA8IHBvcnR1bGFjYVwtc3VuZGlhbFwtXChhXC10eXBlXC1vZlwtcGxhbnRcKTsKK+Wkp+S4reWtuOeUnyA8IHVuaXZlcnNpdHlcLWFuZFwtaGlnaFwtc2Nob29sXC1zdHVkZW50czsKK+i/juaYpeiKsSA8IHdpbnRlclwtamFzbWluZVwsXC1qYXNtaW51bVwtbnVkaWZsb3J1bTsKK+e0hOe/sOWFp+aWr+WgoSA8IGpvaGFubmVzYnVyZ1wtXChjaXR5XC1pblwtc291dGhcLWFmcmljYVwpOwor5Li75Lq657+BIDwgbWFzdGVyXC1cKG9mXC1vbmUnJ3NcLW93blwtZGVzdGlueVwsXC1ldGNcLlwpOwor5YiG5L2I5byP55Kw5aKDIDwgZGlzdHJpYnV0ZWRcLVwoY29tcHV0aW5nXClcLWVudmlyb25tZW50Owor5YW16YOoIDwgdGhlXC1taW5pc3RyeVwtb2ZcLXdhclwtaW5cLWZldWRhbFwtY2hpbmE7CivljJflkaggPCB0aGVcLW5vcnRoZXJuXC16aG91XC1keW5hc3R5XC1cKDU1N1wtNTgxXCk7CivlronliIblrojlt7EgPCBhYmlkZVwtYnlcLXRoZVwtbGF3XC1hbmRcLWJlaGF2ZVwtb25lc2VsZjsKK+WMl+S6rCA8IGJlaWppbmdcLVwoY2FwaXRhbFwtb2ZcLW1haW5sYW5kXC1jaGluYVwpOwor5aSn6aGv6Lqr5omLIDwgZnVsbHlcLWRpc3BsYXlpbmdcLW9uZScnc1wtY2FwYWJpbGl0aWVzOwor6Zu75L+h5pyN5YuZ5L6b5oeJ5ZWGIDwgdGVsZWNvbW11bmljYXRpb25zXC1zZXJ2aWNlXC1wcm92aWRlcjsKK+WTiOWvhueTnCA8IGhhbWlcLW1lbG9uXC1cKGFcLXZhcmlldHlcLW9mXC1tdXNrbWVsb25cKTsKK+mQpCA8IGh1Z2VcLXRyaXBvZFwtb2ZcLWJyb256ZVwtd2l0aFwtdHdvXC1lYXJzOwor6LK/5piT6aGNIDwgdm9sdW1lXC1vZlwtdHJhZGVcLVwoYmV0d2VlblwtY291bnRyaWVzXCk7CivojYnmoYggPCBkcmFmdFwtXChsZWdpc2xhdGlvblwsXC1wcm9wb3NhbFwsXC1ldGNcLlwpOwor6Kaq5oSbIDwgZGVhclwtXC5cLlwuXC1cKHdheVwtb2ZcLXN0YXJ0aW5nXC1hXC1sZXR0ZXJcKTsKK+inrSA8IG9uZVwtdHVybmluZ1wtdXBcLWFuZFwtb25lXC10dXJuaW5nXC1kb3duOwor6KOc55m9IDwgZmlsbGVyXC1cKGluXC1hXC1uZXdzcGFwZXJcLW9yXC1tYWdhemluZVwpOwor6KSxIDwgdG9cLWNhcnJ5XC1pblwtdGhlXC1ib3NvbVwtb3JcLXRoZVwtc2xlZXZlOwor5rOi54C+5aOv6ZeKIDwgc3VyZ2luZ1wtZm9yd2FyZFwtd2l0aFwtZ3JlYXRcLW1vbWVudHVtOwor6IiJ6KGMIDwgdG9cLWhvbGRcLVwoYVwtbWVldGluZ1wsXC1jZXJlbW9ueVwsXC1ldGNcLlwpOwor5Zue5q245Lit5ZyLIDwgdG9cLXJldHVyblwtdG9cLWNoaW5hXC1cKGVcLmdcLlwtaG9uZ1wta29uZ1wpOwor6ImcIDwgYVwtbG9uZ1wtbmFycm93XC12ZXNzZWxcLXdpdGhcLXR3b1wtbWFzdHM7CivnuL3li5Xlk6EgPCBnZW5lcmFsXC1tb2JpbGl6YXRpb25cLVwoZm9yXC13YXJcLFwtZXRjXCk7Civoh78gPCB0b1wtc2VwYXJhdGVcLXRoZVwtZ3JhaW5cLWZyb21cLXRoZVwtaHVzazsKK+e1sCA8IHdoaXRlXC1oZW1wZW5cLWNsb3RoXC13b3JuXC1ieVwtbW91cm5lcnM7Civkv53pgIEgPCByZWNvbW1lbmRcLVwoZm9yXC1hZG1pc3Npb25cLXRvXC1zY2hvb2xcKTsKK+aEm+iOq+iDveWKqSA8IHdpbGxpbmdcLXRvXC1oZWxwXC1idXRcLXVuYWJsZVwtdG9cLWRvXC1zbzsKK+eiqiA8IHN0b25lXC1zbGFiXC11c2VkXC1mb3JcLXdhc2hpbmdcLWNsb3RoZXM7CivovYnluLMgPCB0cmFuc2ZlclwtbW9uZXlcLWZyb21cfGludG9cLWFuXC1hY2NvdW50Owor5bit5L2NIDwgcGFybGlhbWVudGFyeVwtb3JcLWNvbmdyZXNzaW9uYWxcLXNlYXQ7Civnm4cgPCB3aHlcLW5vdFw/XC13b3VsZFwtaXRcLW5vdFwtYmVcLWJldHRlclwtdG9cPzsKK+W4g+S7gCA8IFwoZ2VvcmdlXClcLWJ1c2hcLVwoZm9ybWVyXC11c1wtcHJlc2lkZW50XCk7CivltKnpvo3ml48gPCB0aGVcLWJlbmdsb25nXC1cKHBlbmdsdW5nXClcLW5hdGlvbmFsaXR5Owor5rurIDwgd2F0ZXJcLWluXC13aGljaFwtcmljZVwtaGFzXC1iZWVuXC1ib2lsZWQ7CivpnZ7mlL/lupzntYTnuZQgPCBub25cLWdvdmVybm1lbnRhbFwtb3JnYW5pemF0aW9uXC1cKG5nb1wpOwor5a+p6KiKIDwgYVwtXChqdWRpY2lhbFwpXC10cmlhbFwtXChpblwtYVwtY291cnRyb29tXCk7CivmqpEgPCBsb2dzXC1yb2xsZWRcLWRvd25cLWluXC1kZWZlbnNlXC1vZlwtY2l0eTsKK+ajsyA8IHNtYWxsXC1waWxsYXJzXC10aGF0XC1zdXBwb3J0XC10aGVcLXJvb2Y7CivluJcgPCBhXC1tdWx0aWNvbG9yZWRcLXByb3BcLXVzZWRcLWluXC1kYW5jaW5nOwor57ac5ZCI5pyN5YuZ5pW45L2N57ay57WhIDwgaW50ZWdyYXRlZFwtc2VydmljZXNcLWRpZ2l0YWxcLW5ldHdvcms7CivlmKAgPCB0aGVcLWNoaXJwaW5nXC1vZlwtYmlyZHNcLWxvdWRcLWxhdWdodGVyOwor562G5qG/IDwgdGhlXC1zaGFmdFwtb2ZcLWFcLXBlblwtb3JcLXdyaXRpbmdcLWJydXNoOwor55eF5YuiIDwgZGVncmVlXC1vZlwtc2VyaW91c25lc3NcLW9mXC1hblwtaWxsbmVzczsKK+WUhCA8IGZpbmFsXC1wYXJ0aWNsZVwtb2ZcLWFzc2VydGlvblwtcGF0aGFrYTsKK+WAuyA8IHBob25ldGljXC11c2VkXC1pblwta29yZWFuXC1wbGFjZVwtbmFtZXM7CivktbogPCBib3VuZGFyeVwtYmV0d2VlblwtYWdyaWN1bHR1cmFsXC1sYW5kczsKK+S1uSA8IGluc2VjdHNcLXRoYXRcLWFyZVwtaW5qdXJpb3VzXC10b1wtY3JvcHM7CivkrY0gPCB0b1wtbGl2ZVwtd2l0aFwtYW5vdGhlclwtYXRcLWhpc1wtZXhwZW5zZTsKK+SspSA8IGNvb2tlZFwtZm9vZFwtd2hpY2hcLWhhc1wtYmVjb21lXC1tb3VsZHk7CivkrJkgPCB0b1wtZGFuY2VcLWFuZFwtdG9zc1wtYWJvdXRcLWluXC10aGVcLXdpbmQ7CivkuLvovqYgPCBob3N0XC1cKGFcLWNvbmZlcmVuY2VcLW9yXC1zcG9ydHNcLWV2ZW50XCk7CivkoKsgPCB0b1wtc3VjY3VtYlwtdG9cLXRoZVwtZWZmZWN0XC1vZlwtYWxjb2hvbDsKK+SdpiA8IGFcLWtpbmRcLW9mXC1hbmltYWxcLWxvb2tzXC1saWtlXC1sZW9wYXJkOwor5JygIDwgbGFuZ3VhZ2VcLW9mXC10aGVcLXNhdmFnZVwtb3JcLWJhcmJhcmlhbjsKK+SWuiA8IGFcLWxlZ2VuZGFyeVwtYW5pbWFsXC1pblwtYW5jaWVudFwtdGltZXM7CivkkrwgPCBhXC1iYW1ib29cLXRyYXlcLWZvclwtcmFpc2luZ1wtc2lsa3dvcm1zOwor5JGzIDwgYVwtaG9yaXpvbnRhbFwtYmFyXC1pblwtZnJvbnRcLW9mXC1hXC1ib2F0Owor5JCnIDwgdG9cLXJld2FyZFwtb3JcLWNoZWVyXC10cm9vcHNcLXdpdGhcLWZvb2Q7CivkjrAgPCBuYW1lXC1vZlwtYVwtcGxhY2VcLWluXC1zaWNodWFuXC1wcm92aW5jZTsKK+SNnyA8IGFcLWtpbmRcLW9mXC1maXNoXC1uZXRcLXdpdGhcLWZpbmVcLW1lc2hlczsKK+SHqCA8IGFcLWJhbWJvb1wtYmFza2V0XC1mb3JcLWZvb2RcLWNvbnRhaW5lcnM7CivpnLjnjovpnq0gPCBhXC1yYXR0bGVcLXN0aWNrXC11c2VkXC1pblwtZm9sa1wtZGFuY2luZzsKK+acrOiNiSA8IGFcLWJvb2tcLW9uXC1jaGluZXNlXC1cKGhlcmJhbFwpXC1tZWRpY2luZTsKK+SGjiA8IGdyYXNzXC1hbmRcLWdyYWluc1wtcHJvZHVjaW5nXC1ub1wtZnJ1aXQ7CivkhLsgPCBhXC1zZWNvbmRcLXRpbWVcLWdyb3dpbmdcLW9mXC1yaWNlXC1wbGFudDsKK+SAmiA8IHRvXC1saWZ0XC11cFwtdGhlXC1leWVzXC1hbmRcLWxvb2tcLWFyb3VuZDsKK+O/liA8IGNhcmJ1bmNsZVwtdXNlZFwtaW5cLW5hbWluZ1wtb2ZcLWFcLXBsYWNlOwor47qbIDwgbmFtZVwtb2ZcLWFcLXZpbGxhZ2VcLWluXC1oZW5hblwtcHJvdmluY2U7Civjt4ggPCBlbWJlcnNcLWtlcHRcLWZvclwtc3RhcnRpbmdcLWFcLW5ld1wtZmlyZTsKK+O1gSA8IHZhc3RcLWFuZFwtYm91bmRsZXNzXC1vZlwtZmxvd2luZ1wtd2F0ZXI7Civjs5UgPCB3YXRlclwtaW5cLXdoaWNoXC1yaWNlXC1oYXNcLWJlZW5cLXdhc2hlZDsKK+OvqiA8IGNhcnZlZFwtb3JcLXBhdHRlcm5lZFwtd2luZG93XC1yYWlsaW5nczsKK+S6uueJqSA8IGNoYXJhY3RlcnNcLVwoaW5cLWFcLXBsYXlcLFwtbm92ZWxcLFwtZXRjXC5cKTsKK+itsOmVtyA8IHNwZWFrZXJcLVwob2ZcLWFcLWxlZ2lzbGF0aXZlXC1hc3NlbWJseVwpOwor46CZIDwgYVwtbW91bnRhaW5cLXBhdGhzXC1uYW1lXC1vZlwtYVwtbW91bnRhaW47Civoqr/mn6XntZDmnpwgPCByZXN1bHRzXC1cKG9mXC1hblwtaW52ZXN0aWdhdGlvblwsXC1wb2xsXCk7Civjk60gPCB0b1wtbWFrZVwtcmVhZHlcLXRoZVwtbGVhdGhlclwtZm9yXC1zaG9lczsKK+OQtyA8IGFcLWtpbmRcLW9mXC1wdW5pc2htZW50XC1pblwtaGFuXC1keW5hc3R5Owor55m+56uv5b6F6IiJIDwgYVwtdGhvdXNhbmRcLXRoaW5nc1wtcmVtYWluXC10b1wtYmVcLWRvbmU7CivlronljZcgPCBcW2tvZmlcXVwtYW5uYW5cLVxbdW5cLXNlY3JldGFyeVwtZ2VuZXJhbFxdOwor5YyF6aOvIDwgZ2V0XC1vclwtc3VwcGx5XC1tZWFsc1wtYXRcLWFcLWZpeGVkXC1yYXRlOwor5pyJ5rC0IDwgXChvZlwtYVwtZHdlbGxpbmdcKVwtc3VwcGxpZWRcLXdpdGhcLXdhdGVyOwor55m95q6t6KC2IDwgdGhlXC1sYXJ2YVwtb2ZcLXNpbGt3b3JtXC13aXRoXC1iYXRyeXRpczsKK+ipsemhjCA8IHN1YmplY3RcLVwob2ZcLWFcLXRhbGtcLW9yXC1jb252ZXJzYXRpb25cKTsKK+S6i+WLmSA8IFwocG9saXRpY2FsXCxcLWVjb25vbWljXCxcLWV0Y1wuXClcLWFmZmFpcnM7CivlkrHlgJEgPCB3ZVwtXChpbmNsdWRpbmdcLXRoZVwtcGVyc29uXC1zcG9rZW5cLXRvXCk7CivlsKTph5HloZ7niL7ljZcgPCBldWdlbmVcLWNlcm5hblwtXChhcG9sbG9cLTE3XC1hc3Ryb25hdXRcKTsKK+eOh+WFiCA8IHRha2VcLXRoZVwtbGVhZFwtXChzaG93aW5nXC1pbml0aXRhdGl2ZVwpOwor55uu5YmN6YKE5LiN5riF5qWaIDwgYXRcLXByZXNlbnRcLWl0XC1pc1wtc3RpbGxcLXVuY2xlYXJcLVwuXC5cLlwuOwor56eL6auY5rCj54i9IDwgY2xlYXJcLWFuZFwtcmVmcmVzaGluZ1wtYXV0dW1uXC13ZWF0aGVyOwor5YyF56efIDwgcmVudFwtbGFuZFwtb3JcLWFcLWhvdXNlXC1mb3JcLXN1YmxldHRpbmc7CivmmI7mlocgPCBcKGxhd3NcLFwtcnVsZXNcLFwtZXRjXClcLXN0YXRlXC1pblwtd3JpdGluZzsKK+iisSA8IGFcLXBpZWNlXC1vZlwtY2xvdGhcLXVzZWRcLXdyYXBcLWJ1bmRsZXM7CivmjLIgPCB0b1wtZmVlbFwtb3JcLWZvbmRsZVwtd2l0aFwtdGhlXC1maW5nZXJzOwor56+RIDwgYVwtYmFtYm9vXC1iYXNrZXRcLWZvclwtY2FycnlpbmdcLWVhcnRoOwor6IKTIDwgcmVnaW9uXC1iZXR3ZWVuXC1oZWFydFwtYW5kXC1kaWFwaHJhZ207Civmu6YgPCByaXZlclwtYW5kXC1jb3VudHlcLWluXC1oZWJlaVwtcHJvdmluY2U7Civpg5cgPCBjaXR5XC11bmRlclwtdGhlXC1jaG91XC1keW5cLlwtYVwtc3VybmFtZTsKK+ePjyA8IHR3b1wtcGllY2VzXC1vZlwtamFkZVwtam9pbmVkXC10b2dldGhlcjsKK+e2piA8IGRhcmtcLWdyZXlcLlwtdmFyaWVnYXRlZFwuXC1zdXBlcmxhdGl2ZTsKK+m6hyA8IGdlbmVyYWxcLW5hbWVcLWZvclwtdGhlXC1ob3JubGVzc1wtZGVlcjsKK+eSjiA8IGFcLW5lY2tsYWNlXC1tYWRlXC1vZlwtcHJlY2lvdXNcLXN0b25lczsKK+aOviA8IGFcLWdlbmVyYWxcLWRlc2lnbmF0aW9uXC1vZlwtb2ZmaWNpYWxzOwor6YOHIDwgYW5cLWFuY2llbnRcLWZldWRhbFwtc3RhdGVcLWluXC1zaGFhbnhpOwor6YCP6KaWIDwgdG9cLWV4YW1pbmVcLWJ5XC1mbHVvcm9zY29wZVwtb3JcLXhcLXJheTsKK+WgseitpiA8IHJlcG9ydFwtXChhblwtaW5jaWRlbnRcKVwtdG9cLXRoZVwtcG9saWNlOwor56KR5biWIDwgYVwtcnViYmluZ1wtZnJvbVwtYVwtc3RvbmVcLWluc2NyaXB0aW9uOwor54mb5bm0IDwgeWVhclwtb2ZcLXRoZVwtb3hcLVwoaW5cLWNoaW5lc2VcLXpvZGlhY1wpOwor57Ch5Zau57ay57Wh566h55CG5Y2U6K2wIDwgc2ltcGxlXC1uZXR3b3JrXC1tYW5hZ2VtZW50XC1wcm90b2NvbDsKK+iHqOaZgueahOacrOWcsOeuoeeQhuaOpeWPoyA8IGludGVyaW1cLWxvY2FsXC1tYW5hZ2VtZW50XC1pbnRlcmZhY2U7CivljIXlu4IgPCBib3hcLVwoaW5cLWFcLXRoZWF0cmVcLW9yXC1jb25jZXJ0XC1oYWxsXCk7CivovYnorpMgPCB0cmFuc2ZlclwtXCh0ZWNobm9sb2d5XCxcLWdvb2RzXCxcLWV0Y1wuXCk7CivlhrDmtojnk6bop6MgPCBtZWx0XC1saWtlXC1pY2VcLWFuZFwtYnJlYWtcLWxpa2VcLXRpbGVzOwor6b6YIDwgdGhlXC1hcHBlYXJhbmNlXC1vZlwtYVwtZHJhZ29uXC13YWxraW5nOwor5Y2K5pak5YWr5YWpIDwgbm90XC1tdWNoXC10b1wtY2hvb3NlXC1iZXR3ZWVuXC10aGVcLXR3bzsKK+m0vSA8IGFcLXNwZWNpZXNcLW9mXC1iaXJkXC1yZXNlbWJsaW5nXC1xdWFpbDsKK+ebnOeJiCA8IHBpcmF0ZVwtdmVyc2lvblwtXChvZlwtc29mdHdhcmVcLFwtZVwuZ1wuXCk7CivmraXkurrlvozlobUgPCBmb2xsb3dcLWluXC1vdGhlclwtcGVvcGxlJydzXC1mb290c3RlcHM7CivphKsgPCBzdGF0ZVwtaW5cLXRvZGF5JydzXC1zaGFuZG9uZ1wtcHJvdmluY2U7CivphIcgPCBhXC1uYW1lXC1vZlwtYVwtdG93blwtaW5cLWhlbmFuXC1wcm92aW5jZTsKK+i/vyA8IHRvXC1iZVwtdGhlXC1maXJzdFwtdG9cLWJlZ2luXC1hXC1xdWFycmVsOwor6L2VIDwgZ3JlYXRcLWFycmF5XC1vZlwtc3BlYXJzXC1hbmRcLWNoYXJpb3RzOwor6LygIDwgZ3JlYXNlXC1wb3RcLWh1bmdcLXVuZGVyXC1heGxlXC1vZlwtY2FydDsKK+m+jemjm+mzs+iIniA8IGxpdFwuXDpcLWRyYWdvblwtZmxpZXNcLFwtcGhvZW5peFwtZGFuY2VzOwor57ej5Lu9IDwgZmF0ZVwtXCh3aGljaFwtYnJpbmdzXC1wZW9wbGVcLXRvZ2V0aGVyOwor5bmz5aOkIDwgcHlvbmd5YW5nXC1cKGNhcGl0YWxcLW9mXC1ub3J0aFwta29yZWFcKTsKK+Wci+mam+imi+iBniA8IGludGVybmF0aW9uYWxcLWJhY2tncm91bmRcLWtub3dsZWRnZTsKK+aTlOS7uyA8IGhvbGRcLWFcLWdvdmVybm1lbnRhbFwtb2ZmaWNlXC1vclwtcG9zdDsKK+iGsiA8IHRoZVwtdGhyZWVcLWRpdmlzaW9uc1wtb2ZcLXRoZVwtdmlzY2VyYTsKK+WFi+acjSA8IFwodHJ5XC10b1wpXC1vdmVyY29tZVwtXChoYXJkc2hpcHNcLFwtZXRjXCk7CivmioTpgIEgPCB0b1wtbWFrZVwtYVwtY29weVwtXChhbmRcLXNlbmRcLWl0XC10b1wtc2JcKTsKK+S4jeWkseeCuiA8IGNhblwtc3RpbGxcLWJlXC1jb25zaWRlcmVkXC1cKHRvXC1iZVwuXC5cLlwpOwor57SWIDwgYVwtcm9wZVwtZm9yXC1sZWFkaW5nXC1jYXR0bGVcLW9yXC1ob3JzZTsKK+acgOaDoOWciyA8IG1vc3RcLWZhdm9yZWRcLW5hdGlvblwtXCh0cmFkZVwtc3RhdHVzXCk7CivnrK4gPCBib2FyZHNcLXdoaWNoXC1zdXBwb3J0XC10aWxlc1wtb25cLXJvb2Y7CivmoYjpqZcgPCBpbnZlc3RpZ2F0ZVwtdGhlXC1ldmlkZW5jZVwtb2ZcLWFcLWNhc2U7CivmiZjpgYsgPCB0b1wtYm9va1wtb3JcLWNoZWNrXC10aHJvdWdoXC1cKGJhZ2dhZ2VcKTsKK+eghSA8IGNyb3NzXC1zdHJlYW1cLWJ5XC1zdGVwcGluZ1wtb25cLXN0b25lczsKK+Wci+WLmeWnlOWToSA8IG1lbWJlclwtb2ZcLXN0YXRlXC1jb3VuY2lsXC1cKGluXC1jaGluYVwpOwor5oi26YOoIDwgZmV1ZGFsXC1jaGluZXNlXC1taW5pc3RyeVwtb2ZcLXJldmVudWU7CivnkokgPCBhXC12ZXNzZWxcLXVzZWRcLWhvbGRcLWdyYWluXC1vZmZlcmluZ3M7CivmoqEgPCB0cmF5XC1mb3JcLWNhcnJ5aW5nXC1zYWNyaWZpY2lhbFwtbWVhdDsKK+WPr+enu+akjeaApyA8IHBvcnRhYmlsaXR5XC1cKHByb2dyYW1taW5nXC1sYW5ndWFnZVwpOwor5o6o5YuVIDwgdG9cLXB1c2hcLVwoZm9yXC1hY2NlcHRhbmNlXC1vZlwtYVwtcGxhblwpOwor5bm1IDwgZXZlblwtbGV2ZWxcLlwtdG9cLXJhaXNlXC1pblwtYm90aFwtaGFuZHM7Civlq4QgPCBhblwtYW5jaWVudFwtZW1wZXJvcicnc1wtbW90aGVyJydzXC1uYW1lOwor5pW06auU5pW45L2N5pyN5YuZ57ay6LevIDwgaW50ZWdyYXRlZFwtc2VydmljZVwtZGlnaXRhbFwtbmV0d29yazsKK+WbtyA8IHJvdW5kXC1zaGFwZWRcLXN0b3JhZ2VcLWJpblwtZm9yXC1ncmFpbjsKK+S6nui7jSA8IHNlY29uZFwtcGxhY2VcLVwoaW5cLWFcLXNwb3J0c1wtY29udGVzdFwpOwor5ZG85ZKM5rWp54m5IDwgaG9oaG90XC1cKGNhcGl0YWxcLW9mXC1pbm5lclwtbW9uZ29saWFcKTsKK+WfuumHkeacgyA8IGFcLWZvdW5kYXRpb25cLVwoaWVcLFwtYW5cLW9yZ2FuaXphdGlvblwpOwor5LSZIDwgYVwta2luZFwtb2ZcLWJpcmRcLXJlc2VtYmxpbmdcLXRoZVwtZHVjazsKK+SygyA8IGFcLWNhcnBcLWxpa2VcLWZpc2hcLXdpdGhcLWNoaWNrZW5cLWZlZXQ7CivpoY/pq5QgPCB5YW5cLXN0eWxlXC1cKGluXC1jaGluZXNlXC1jYWxsaWdyYXBoeVwpOwor5LmF6YGVIDwgXChoYXZlbicndFwtZG9uZVwtc3RoXClcLWZvclwtYVwtbG9uZ1wtdGltZTsKK+SplyA8IHRvXC1ydWxlXC1ieVwtbWlnaHRcLXJhdGhlclwtdGhhblwtcmlnaHQ7CivkopUgPCBhXC1ncm91cFwtb2ZcLXBlb3BsZVwtd2Fsa2luZ1wtdG9nZXRoZXI7CivkmqEgPCBib25lc1wtaW5cLWFcLWhvcm5cLW9mXC1jYXR0bGVcLWFuZFwtZ29hdDsKK+SZrCA8IHBsYWl0c1wtb25cLXRoZVwtc2lkZXNcLW9mXC1hXC1wZXR0aWNvYXQ7CivkkIAgPCB0b1wtZGlzbWVtYmVyXC1ib2R5XC1vZlwtdGhlXC1saXZlc3RvY2s7Civkjo4gPCB0b1wtZ2xpZGVcLW9yXC10b1wtaG92ZXJcLXVwXC1pblwtdGhlXC1haXI7CivkjYogPCBjbGF5XC1tYWRlXC1ibG93aW5nXC13aW5kXC1pbnN0cnVtZW50czsKK+SIvyA8IGJlbHRcLW9mXC10aGVcLWNhbnZhc1wtdG9wXC1vblwtdmVoaWNsZXM7Civkh64gPCBhXC1iYW1ib29cLW1hdFwtdXNlZFwtaW5cLWFuY2llbnRcLXRpbWVzOwor5bCP6aGM5aSn5YGaIDwgbWFrZVwtYVwtYmlnXC1mdXNzXC1vdmVyXC1hXC1taW5vclwtaXNzdWU7CivkhZogPCBjbG9zZWx5XC1ncm93aW5nXC1vZlwtdGhlXC1yaWNlXC1wbGFudHM7CivkhLYgPCByaWNlXC1wbGFudFwtZ3Jvd2luZ1wtdGhlXC1zZWNvbmRcLXRpbWU7Civkgb4gPCByZWRcLWFuZFwtc3dlbGxpbmdcLW9mXC10aGVcLWV5ZVwtc29ja2V0Owor5IGoIDwgdG9cLW9wZW5cLXRoZVwtZXllc1wtd2l0aFwtYXN0b25pc2htZW50Owor472bIDwgbmFycm93XC10cmFpbFwtb2ZcLXBhdGhcLWluXC10aGVcLWZpZWxkczsKK+O6kSA8IGRvZ3NcLXdvcm1lZFwtdGhyb3VnaFwtYVwtbmFycm93XC1wbGFjZTsKK+O5oiA8IGFcLWxhcmdlXC1hcGVcLWZvdW5kXC1pblwtd2VzdGVyblwtY2hpbmE7CivjuZwgPCB0d29cLWRvZ3NcLWFyZVwtYmFya2luZ1wtdG9cLWVhY2hcLW90aGVyOwor47mJIDwgYVwtbGVnZW5kYXJ5XC1hbmltYWxcLXdpdGhcLXRocmVlXC1mZWV0Owor47aAIDwgZGVlcFwtYW5kXC12YXN0XC1vZlwtdGhlXC1mbG93aW5nXC13YXRlcjsKK+aJk+mMr+S6hiA8IFwieW91XC1oYXZlXC1kaWFsZWRcLXRoZVwtd3JvbmdcLW51bWJlclwiOwor47C2IDwgdG9cLXdyaW5rbGVcLXRoZVwtbm9zZVwtd2l0aFwtc29ycm93ZnVsOwor462yIDwgYVwtd29vZGVuXC1mcmFtZVwtZm9yXC1jYXJyeWluZ1wtdGhpbmdzOwor55eF5YyF5YWSIDwgYVwtcGVyc29uXC13aG9cLWlzXC1hbHdheXNcLWZhbGxpbmdcLWlsbDsKK+OhoSA8IHNjcmVlblwtdG9cLW1ha2VcLWFcLXRlbXBvcmFyeVwta2l0Y2hlbjsKK+OgvyA8IGFcLWtpbmRcLW9mXC1kZWxpY2F0ZVwtYW5kXC1maW5lXC1mYWJyaWM7CivjnLogPCBuaWNlXC13aGl0ZVwtY29sb3JcLWFuZFwtbG9va3NcLXNvXC1nb29kOwor45y1IDwgd2l0aFwtYVwtY2hhcm1pbmdcLXNwcmlnaHRseVwtY2FycmlhZ2U7CivjmYggPCBuYW1lXC1vZlwtYVwtcGxhY2VcLWluXC1zaGFueGlcLXByb3ZpbmNlOwor6aaZ5bGxIDwgZnJhZ3JhbmNlXC1oaWxsXC1cKGFcLXBhcmtcLWluXC1iZWlqaW5nXCk7CivjlqEgPCB0aGVcLWJpcmRzXC1zaW5naW5nXC1kdXJpbmdcLXRoZVwtbmlnaHQ7CivjlbogPCBsb29rc1wtYmlnXC1vdXRzaWRlXC1idXRcLWVtcHR5XC1pbnNpZGU7CivjlYQgPCB0b1wtYXBwbHlcLWtub3dsZWRnZVwtdG9cLWZpbmFsXC1jYXVzZXM7CivkuI3omZvmraTooYwgPCB0aGVcLXRyaXBcLWhhc1wtbm90XC1iZWVuXC1tYWRlXC1pblwtdmFpbjsKK+mKt+avgCA8IHRvXC1kZXN0cm95XC1cKGJ5XC1tZWx0aW5nXC1vclwtYnVybmluZ1wpOwor5ouJ6I6r5pavIDwgXChwaGlsaXBwaW5lXC1wcmVzaWRlbnRcLWZpZGVsXClcLXJhbW9zOwor5q+U5YuS6ZmA5Yip5LqeIDwgcHJldG9yaWFcLVwoY2FwaXRhbFwtb2ZcLXNvdXRoXC1hZnJpY2FcKTsKK+WMl+mtjyA8IHRoZVwtbm9ydGhlcm5cLXdlaVwtZHluYXN0eVwtXCgzODZcLTUzNFwpOwor6KiA6KuW6Ieq55SxIDwgXChjb25zdGl0dXRpb25hbFwpXC1mcmVlZG9tXC1vZlwtc3BlZWNoOwor5pq055eFIDwgc3VkZGVuXC1hdHRhY2tcLW9mXC1hXC1zZXJpb3VzXC1pbGxuZXNzOwor5Lq65aSnIDwgXChjaGluYVwpXC1uYXRpb25hbFwtcGVvcGxlJydzXC1jb25ncmVzczsKK+eGsemspyA8IGJ1c3RsaW5nXC13aXRoXC1ub2lzZVwtYW5kXC1leGNpdGVtZW50Owor5ZGI5paHIDwgcGV0aXRpb25cLVwoc3VibWl0dGVkXC10b1wtYVwtc3VwZXJpb3JcKTsKK+aYpeevgCA8IHNwcmluZ1wtZmVzdGl2YWxcLVwoY2hpbmVzZVwtbmV3XC15ZWFyXCk7CivplovnmbznkrDlooMgPCBkZXZlbG9wbWVudFwtZW52aXJvbm1lbnRcLVwoY29tcHV0ZXJcKTsKK+S4jeitmOaZguWLmSA8IHNob3dcLW5vXC11bmRlcnN0YW5kaW5nXC1vZlwtdGhlXC10aW1lczsKK/CgvLsgPCBhXC1wYXJ0aWNsZVwtdXNlZFwtaW5cLXRyYW5zbGl0ZXJhdGlvbjsKK+iDoeW/l+W8tyA8IGphc29uXC1odVwtXCh0YWl3YW5cLWZvcmVpZ25cLW1pbmlzdGVyXCk7CivmlrDnloYgPCB4aW5qaWFuZ1wtXCh1eWd1clwtYXV0b25vbW91c1wtcmVnaW9uXCk7CivluavlgJLlv5kgPCBiZVwtbW9yZVwtb2ZcLWFcLWhpbmRyYW5jZVwtdGhhblwtYVwtaGVscDsKK+S/seaogumDqCA8IGNsdWJcLVwoaWVcLFwtYVwtZ3JvdXBcLW9yXC1vcmdhbml6YXRpb25cKTsKK+ekviA8IGdvZFwtb2ZcLXRoZVwtc29pbFwtYW5kXC1hbHRhcnNcLXRvXC1oaW07CivnkZ8gPCBsYXJnZVwtc3RyaW5nZWRcLW11c2ljYWxcLWluc3RydW1lbnQ7CivmpZ4gPCB1c2VkXC1mb3JcLWNleWxvblwtaW5cLWJ1ZGRoaXN0XC10ZXh0czsKK+WWvSA8IHVzZWRcLWluXC1vbm9tYXRvcG9ldGljXC1leHByZXNzaW9uczsKK+WahSA8IHRhbGtcLWluZGlzdGluY3RseVwtYW5kXC1mYWx0ZXJpbmdseTsKK+ijsSA8IHRvXC1tb3VudFwtbWFwc1wtb3JcLXNjcm9sbHNcLXRvXC1wYXN0ZTsKK+eMoiA8IGFcLWtpbmRcLW9mXC1tb25rZXlcLWZvdW5kXC1pblwtd1wuY2hpbmE7CivonK4gPCBhXC1mYWJ1bG91c1wtY3JlYXR1cmVcLWxpa2VcLWFcLXR1cnRsZTsKK+eioSA8IHN0b25lXC1yb2xsZXJcLXVzZWRcLXRvXC1sZXZlbFwtZmllbGRzOwor6YSjIDwgbmFtZVwtb2ZcLWFuY2llbnRcLWNpdHlcLWluXC1uXC5qaWFuZ3N1Owor57KiIDwgZ3JhaW5cLW9mZmVyZWRcLWluXC1yaXR1YWxcLXNhY3JpZmljZTsKK+ewpiA8IGxhcmdlXC11bWJyZWxsYVwtd2l0aFwtYVwtbG9uZ1wtaGFuZGxlOwor6J6TIDwgYVwtc21hbGxcLWNpY2FkYVwtd2l0aFwtYVwtc3F1YXJlXC1oZWFkOwor5LiN5pmC5LmL6ZyAIDwgYVwtcG9zc2libGVcLXBlcmlvZFwtb2ZcLXdhbnRcLW9yXC1uZWVkOwor5YWs5YWx5Lqk5o+b6Zu76Kmx57ay6LevIDwgcHVibGljXC1zd2l0Y2hlZFwtdGVsZXBob25lXC1uZXR3b3JrOwor57ay57WhIDwgXChjb21wdXRlclwsXC10ZWxlY29tXCxcLWV0Y1wuXClcLW5ldHdvcms7Civku6XniZnpgoTniZkgPCBhXC10b290aFwtZm9yXC1hXC10b290aFwtXChyZXRhbGlhdGlvblwpOwor5aOB5q+vIDwgdGFwZXN0cnlcLVwodXNlZFwtYXNcLWFcLXdhbGxcLWhhbmdpbmdcKTsKK+aTpua+oSA8IHJ1Ylwtb25lc2VsZlwtZG93blwtd2l0aFwtYVwtd2V0XC10b3dlbDsKK+iqjeWumiA8IG1haW50YWluXC1cKHRoYXRcLXNvbWV0aGluZ1wtaXNcLXRydWVcKTsKK+eZvuaIsOeZvuWLnSA8IGVtZXJnZVwtdmljdG9yaW91c1wtaW5cLWV2ZXJ5XC1iYXR0bGU7CivprYogPCBhXC1teXRoaWNhbFwtY3JlYXR1cmVcLXNhaWRcLWh1cmxcLXNhbjsKK+WIhuatpyA8IGRpZmZlcmVuY2VcLVwob2ZcLW9waW5pb25cLFwtcG9zaXRpb25cKTsKK+WLnuWLleevgCA8IGludGVybmF0aW9uYWxcLWxhYm9yXC1kYXlcLVwobWF5XC1kYXlcKTsKK+mfkCA8IGtuZWVcLXBhZFwtbWFkZVwtb2ZcLXJlZFwtZHllZFwtbGVhdGhlcjsKK+mAo+aIsCA8IGxpZW5cLWNoYW5cLVwodGFpd2FuXC12aWNlXC1wcmVzaWRlbnRcKTsKK+aKseeyl+iFvyA8IGxhdGNoXC1vblwtdG9cLXRoZVwtcmljaFwtYW5kXC1wb3dlcmZ1bDsKK+WItuW6piA8IFwocG9saXRpY2FsXClcLXN5c3RlbVwtb3JcLWluc3RpdHV0aW9uOwor6KOc57+SIDwgdGFrZVwtbGVzc29uc1wtYWZ0ZXJcLXNjaG9vbFwtb3JcLXdvcms7CivnlLHmraTlj6/oposgPCBmcm9tXC10aGlzXCxcLWl0XC1jYW5cLWJlXC1zZWVuXC10aGF0XC5cLlwuOwor6IGv6YKm6Zu75L+h5Lqk6YCa5aeU5ZOh5pyDIDwgZmVkZXJhbFwtY29tbXVuaWNhdGlvbnNcLWNvbW1pc3Npb247Civlu7rkuqQgPCB0b1wtZXN0YWJsaXNoXC1kaXBsb21hdGljXC1yZWxhdGlvbnM7Civou48gPCBjcm9zc1wtYmFyXC1hdFwtZW5kXC1vZlwtcG9sZXNcLW9mXC1jYXJ0Owor54Gr54G9IDwgZmlyZVwtXCh0aGF0XC1idXJuc1wtYnVpbGRpbmdzXCxcLWV0Y1wuXCk7CivlgpnoqrIgPCBcKG9mXC1hXC10ZWFjaGVyXClcLXRvXC1wcmVwYXJlXC1sZXNzb25zOwor6YeR5q2j5pelIDwga2ltXC1qb25nXC1pbFwtXChub3J0aFwta29yZWFuXC1sZWFkZXJcKTsKK+mWi+a8lCA8IFwob2ZcLWFcLXBsYXlcLFwtbW92aWVcLFwtZXRjXC5cKVwtdG9cLWJlZ2luOwor5YKZ6I2SIDwgcHJlcGFyZVwtYWdhaW5zdFwtbmF0dXJhbFwtZGlzYXN0ZXJzOwor6JaAIDwgdGhlXC1oaXBwdXJpc1wtb3JcLW1hcmUnJ3NcLXRhaWxcLXBsYW50Owor5LiN5pG46aCtIDwgbm90XC1hY3F1YWludGVkXC13aXRoXC10aGVcLXNpdHVhdGlvbjsKK+WFqOacgyA8IHBsZW5hcnlcLXNlc3Npb25cLVwoYXRcLWFcLWNvbmZlcmVuY2VcKTsKK+mtj+S6rOeUnyA8IHdlaVwtamluZ3NoZW5nXC1cKGNoaW5lc2VcLWRpc3NpZGVudFwpOwor6IGdIDwgdG9cLWN1dFwtdGhlXC1sZWZ0XC1lYXJzXC1vZlwtdGhlXC1zbGFpbjsKK+iAlCA8IHRvXC1ob2VcLXVwXC10aGVcLWVhcnRoXC1hcm91bmRcLXBsYW50czsKK+S+v+mboyA8IHJldG9ydFwtd2l0aFwtY2hhbGxlbmdpbmdcLXF1ZXN0aW9uczsKK+etlOi+ryA8IHRvXC1yZXBseVwtXCh0b1wtYW5cLWFjY3VzYXRpb25cLFwtZVwuZ1wuXCk7CivnsKsgPCBtdXNpY2FsXC1pbnN0cnVtZW50XC1saWtlXC1wYW5cLXBpcGVzOwor57CoIDwgYVwtYmVhbVwtZm9yXC1oYW5naW5nXC1iZWxsc1wtb3JcLWRydW1zOwor56SzIDwgbmFtZVwtb2ZcLXBsYWNlXC1pblwtc2hhblwteGlcLXByb3ZpbmNlOwor5a+46I2J5LiN55SfIDwgXCJub3RcLWV2ZW5cLWFcLWJsYWRlXC1vZlwtZ3Jhc3NcLWdyb3dzXCI7CivnoqsgPCBjb2Fyc2VcLXN0b25lXC1cKHVzZWRcLWZvclwtd2hldHN0b25lXCk7Civnkq8gPCBqYWRlXC1vcm5hbWVudFwtaW5cLXRoZVwtc2VhbXNcLW9mXC1jYXA7CivnkK8gPCBhXC1qYWRlXC10dWJlXC11c2VkXC1hc1wtYW5cLWluc3RydW1lbnQ7CivnjoEgPCBhXC1kb2dcLXdpdGhcLWFcLWxvbmdcLXNub3V0XC1vclwtbXV6emxlOwor5ZyW5pu4IDwgYm9va3NcLVwoaW5cLWFcLWxpYnJhcnlcLW9yXC1ib29rc3RvcmVcKTsKK+WutumVtyA8IHRoZVwtcGFyZW50XC1vclwtZ3VhcmRpYW5cLW9mXC1hXC1jaGlsZDsKK+WbnuatuCA8IHRvXC1yZXR1cm5cLVwodG9cLXByZXZpb3VzXC1jb25kaXRpb25cKTsKK+aTpuS6ruecvOedmyA8IHJlbW92ZVwtdGhlXC1zY2FsZXNcLWZyb21cLW9uZScnc1wtZXllczsKK+ijnOWBj+aVkeW8iiA8IHJlbWVkeVwtZGVmZWN0c1wtYW5kXC1yZWN0aWZ5XC1lcnJvcnM7Civmo58gPCB0aGVcLW1haW5cLWJlYW1zXC1zdXBwb3J0aW5nXC1hXC1ob3VzZTsKK+mqqOazlSA8IGJvbmVcLVwocHJvcGVydHlcLW9mXC1hXC1icnVzaFwtc3Ryb2tlXCk7Civnmb7lt53mrbjmtbcgPCBhbGxcLXRoaW5nc1wtdGVuZHNcLWluXC1vbmVcLWRpcmVjdGlvbjsKK+iqk+S4jeWPjeaClCA8IHRvXC12b3dcLW5vdFwtdG9cLWJyZWFrXC1vbmUnJ3NcLXByb21pc2U7CivlkIPkuI3kuIogPCBiZVwtdW5hYmxlXC10b1wtZ2V0XC1zb21ldGhpbmdcLXRvXC1lYXQ7CivmiKAgPCBhXC1zd29yZFwuXC1wb3R0ZXInJ3NcLWNsYXlcLlwtdG9cLWdhdGhlcjsKK+enkeWtuOe3qOi8ryA8IHNjaWVuY2VcLWVkaXRvclwtXChvZlwtYVwtcHVibGljYXRpb25cKTsKK+aYgummlumXiuatpSA8IHN0cmlkZVwtZm9yd2FyZFwtd2l0aFwtb25lJydzXC1jaGluXC11cDsKK+aXpee2k+aMh+aVuCA8IG5pa2tlaVwtaW5kZXhcLVwob2ZcLWphcGFuZXNlXC1zdG9ja3NcKTsKK+enkemahiA8IGNvbG9nbmVcLFwtZ2VybWFueVwtb3JcLWNvbG9uXCxcLXBhbmFtYTsKK+aJk+a2iCA8IGRpc3BlbFwtXChkb3VidHNcLFwtbWlzZ2l2aW5nc1wsXC1ldGNcLlwpOwor5ZGtIDwgZmluYWxcLXBhcnRpY2xlXC1leHByZXNzaW5nXC1jb25zZW50Owor5ZGhIDwgdGhlXC1jb3JuZXJzXC1vZlwtdGhlXC1tb3V0aFwtdGhlXC1saXBzOwor55a+55eF6aCQ6Ziy5Lit5b+DIDwgXCh1XC5zXC5cKVwtY2VudGVyXC1mb3JcLWRpc2Vhc2VcLWNvbnRyb2w7CivktqwgPCBoYXJkXC1maW5zXC1vblwtdGhlXC1iYWNrXC1vZlwtYVwtZHJhZ29uOwor5LaFIDwgYVwtbWFybW90XC1saWtlXC1yYXRcLXdpdGhcLWFcLWJpZ1wtaGVhZDsKK+S0kyA8IGdlbmVyYWxcLXRlcm1cLWZvclwtc21hbGxcLWJpcmRcLWdyb3VwOwor5KyXIDwgYmxvd25cLW9yXC10b3NzZWRcLWFib3V0XC1ieVwtdGhlXC13aW5kOwor5KeJIDwgbmFtZVwtb2ZcLWFcLXBhdmlsaW9uXC1pblwtaGFuXC1keW5hc3R5Owor5KW2IDwgY29va2luZ1wtdXRlbnNpbFwtdXNlZFwtaW5cLW9sZFwtdGltZXM7CivkpawgPCBhXC1tdXNpY2FsXC1pbnN0cnVtZW50XC1pblwtb2xkXC10aW1lczsKK+SjnCA8IG5hbWVcLW9mXC1hXC1jb3VudHlcLWluXC1hbmNpZW50XC10aW1lczsKK+SjjCA8IHJlc2lkZW5jZVwtb2ZcLWFcLXByaW5jZVwtb3JcLW5vYmlsaXR5Owor5KGdIDwgYVwtcmVhclwtY292ZXJpbmdcLW9mXC1hXC1iaWdcLWNhcnJpYWdlOwor5KGKIDwgdGhlXC1wcm90cnVkZWRcLXNpZGVzXC1vZlwtYVwtY2FycmlhZ2U7CivkoJogPCB0b1wtc3RlcFwtb25cLXRoZVwtZ3JvdW5kXC13aXRoXC1hXC1iYW5nOwor5JaDIDwgdGhlXC13YXRlclwtaXNcLXdhdmluZ1wtaW5cLXRoZVwtYnJlZXplOwor5JKnIDwgYVwtdmVzc2VsXC1vclwtdXRlbnNpbFwtbWFkZVwtb2ZcLXN0cmF3Owor5I2yIDwgYVwta2luZFwtb2ZcLXNoZWVwXC13aXRoXC1jdXJsZWRcLWhhaXJzOwor5Iu4IDwgYmFja1wtY2VudGVyXC1zdXR1cmVcLW9mXC10aGVcLWNsb3RoZXM7Civki5sgPCB0aGVcLWNsdXN0ZXJlZFwtZW1icm9pZGVyeVwtcGF0dGVybnM7CivkipYgPCB0b1wtZWF0XC1yaWNlXC1ncnVlbFwtbWl4ZWRcLXdpdGhcLW1lYXQ7CivkhoUgPCB0b1wtYWNjdW11bGF0ZVwtb3JcLXRvXC1zdG9yZVwtdXBcLXJpY2U7CivkgqcgPCByb2Nrc1wtY2x1c3RlcmVkXC1waWxlXC11cFwtdG9nZXRoZXJzOwor5IC/IDwgdG9cLWhhdmVcLWFcLWNhc3VhbFwtYW5kXC1zaG9ydFwtZ2xhbmNlOwor5om+5YiwIDwgZmluZFwtXCh3aGF0XC1vbmVcLXdhc1wtc2VhcmNoaW5nXC1mb3JcKTsKK+WPrOmWiyA8IGNvbnZlbmVcLVwoYVwtY29uZmVyZW5jZVwtb3JcLW1lZXRpbmdcKTsKK+O5lyA8IGNhdHRsZVwtYW5kXC1zaGVlcFwtaGF2ZVwtbm9cLWNoaWxkcmVuOwor47ayIDwgbWVhc3VyaW5nXC11bml0XC1mb3JcLXRoZXJtb2R5bmFtaWNzOwor47W6IDwgbmFtZVwtb2ZcLWFcLXN0cmVhbVwtaW5cLWFuY2llbnRcLXRpbWVzOwor47WQIDwgbmFtZVwtb2ZcLWFcLXJpdmVyXC1pblwtaHViZWlcLXByb3ZpbmNlOwor47WLIDwgbmFtZVwtb2ZcLWFcLXJpdmVyXC1pblwtaHVuYW5cLXByb3ZpbmNlOwor47GSIDwgdG9cLXNjb2xkXC1vclwtYmxhbWVcLWluXC1hXC1sb3VkXC12b2ljZTsKK+OuviA8IGFcLXBsYWNlXC1pblwtdG9kYXknJ3NcLWh1bmFuXC1wcm92aW5jZTsKK+OsiCA8IHRoZVwtc3VuXC13YXNcLXNoaW5pbmdcLWFuZFwtaXQnJ3NcLXdhcm07CivjqoogPCBpbmZlc3RlZFwtd2l0aFwtYmFuZGl0c1wtYW5kXC1yb2JiZXJzOwor46iYIDwgdG9cLWJsb3dcLXRoZVwtbm9zZVwtd2l0aFwtdGhlXC1maW5nZXJzOwor45++IDwgbmFtZVwtb2ZcLWFcLW1vdW50YWluXC1pblwtY291bnR5XC1qaWFuOwor45+4IDwgbmFtZVwtb2ZcLXBhdmlsaW9uXC1pblwtYW5jaWVudFwtY2hpbmE7Civjn4IgPCBuYW1lXC1vZlwtY2FwZVwtaW5cLXNoYW5kb25nXC1wcm92aW5jZTsKK+WRvOexsiA8IGNhbGxcLW9uXC1cKHNvbWVvbmVcLXRvXC1kb1wtc29tZXRoaW5nXCk7CivjmqogPCB0b1wtbWFrZVwtYVwtZGVjZXB0aXZlXC1zaG93XC1vZlwtcG93ZXI7Civpm7vohabovJTliqnoqK3oqIjoiIfnuarlnJYgPCBjb21wdXRlclwtYWlkZWRcLWRlc2lnblwtYW5kXC1kcmF3aW5nOwor45KNIDwgdXR0ZXJseVwtd2VhcnlcLWluXC1ib2R5XC1hbmRcLXNwaXJpdHM7CivjkIwgPCBhXC10cmliZVwtb2ZcLXNhdmFnZXNcLWluXC1zb3V0aFwtY2hpbmE7Civnp5HniL4gPCBcKGhlbG11dFwpXC1rb2hsXC1cKGdlcm1hblwtY2hhbmNlbGxvclwpOwor6b2L5pyIIDwgcmFtYWRhblwtXChtdXNsaW1cLW1vbnRoXC1vZlwtZmFzdGluZ1wpOwor5b6X5a+46YCy5bC6IDwgbGl0ZXJhbFw6XC1nZXRcLWFuXC1pbmNoXCxcLXdhbnRcLWFcLWZvb3Q7CivotbfkvoYgPCBiZWdpbm5pbmdcLW9yXC1jb250aW51aW5nXC1hblwtYWN0aW9uOwor5YyX6b2KIDwgdGhlXC1ub3J0aGVyblwtcWlcLWR5bmFzdHlcLVwoNTUwXC01NTdcKTsKK+WMl+a0i+i7jemWpSA8IHRoZVwtbm9ydGhlcm5cLXdhcmxvcmRzXC1cKDE5MTJcLTE5MjdcKTsKK+WQkOeplyA8IHRvXC1oYXZlXC10aGVcLWVhcnNcLW9mXC1ncmFpblwtY29tZVwtdXA7CivlpKfmg5HkuI3op6MgPCBkb1wtbm90XC11bmRlcnN0YW5kXC1hXC1jZXJ0YWluXC10aGluZzsKK+iri+mhmCA8IHBldGl0aW9uXC1cKGZvclwtYWN0aW9uXC10b1wtYmVcLXRha2VuXCk7CivljYrml6XliLblrbjmoKEgPCBoYWxmXC1kYXlcLVwob3JcLWRvdWJsZVwtc2hpZnRcLXNjaG9vbFwpOwor5piO5paH6KaP5a6aIDwgZXhwcmVzc2x5XC1zdGlwdWxhdGVkXC1cKGluXC13cml0aW5nXCk7Civkuqvlj5cgPCB0b1wtZW5qb3lcLVwocmlnaHRzXCxcLWJlbmVmaXRzXCxcLWV0Y1wuXCk7CivlpKfluq3lu6PnnL4gPCBwdWJsaWNcLXBsYWNlXC13aXRoXC1udW1lcm91c1wtcGVvcGxlOwor55m+54Sh5LiA5aSxIDwgbm9cLWRhbmdlclwtb2ZcLWFueXRoaW5nXC1nb2luZ1wtd3Jvbmc7CivkuInls70gPCB0aGVcLXRocmVlXC1jaGFuZ2ppYW5nXC1yaXZlclwtZ29yZ2VzOwor5Y+W5pqWIDwgdG9cLXdhcm1cLW9uZXNlbGZcLVwoYnlcLWFcLWZpcmVcLFwtZXRjXC5cKTsKK+S6uuasiuingOWvnyA8IGh1bWFuXC1yaWdodHNcLXdhdGNoXC1cKG9yZ2FuaXphdGlvblwpOwor6Zmi6ZW3IDwgcHJlc2lkZW50XC1cKG9mXC1hXC11bml2ZXJzaXR5XCxcLWV0Y1wuXCk7CivmqqLlr5/lrpggPCB0aGVcLXByb3NlY3V0aW9uXC1cKGluXC1hXC1jb3VydFwtY2FzZVwpOwor5YKZ6ICM5LiN55SoIDwgaGF2ZVwtc29tZXRoaW5nXC1yZWFkeVwtanVzdFwtaW5cLWNhc2U7CivoqIDoq5YgPCBleHByZXNzaW9uXC1vZlwtXChwb2xpdGljYWxcKVwtb3BpbmlvbjsKK+aHieeUqOeoi+W8j+S7i+mdoiA8IGFwcGxpY2F0aW9uXC1wcm9ncmFtbWluZ1wtaW50ZXJmYWNlOwor5o27IDwgdG9cLXR3aXN0XC1vclwtbmlwXC13aXRoXC10aGVcLWZpbmdlcnM7CivmiIwgPCBlbGV2ZW50aFwtb2ZcLXRlcnJlc3RyaWFsXC1icmFuY2hlczsKK+aQkyA8IHRvXC1ydWJcLW9yXC1yb2xsXC1iZXR3ZWVuXC10aGVcLWhhbmRzOwor5bCnIDwgYVwtbGVnZW5kYXJ5XC1hbmNpZW50XC1lbXBlcm9yXC1zYWdlOwor5am2IDwgd2lmZVwtb2ZcLWZhdGhlcicnc1wteW91bmdlclwtYnJvdGhlcjsKK+aOrCA8IHRvXC1ncmFzcFwtb3JcLWhvbGRcLXdpdGhcLWJvdGhcLWhhbmRzOwor5bmbIDwgc2Nyb2xsXC1vZlwtc2lsa1wtb3JcLWNsb3RoXC1wcmVzZW50ZTsKK+ajgiA8IGNhcnZlZFwtb3JcLXBhdHRlcm5lZFwtd2luZG93XC1zaWxsczsKK+awsiA8IGxpZmVcLWdpdmluZ1wtaW5mbHVlbmNlc1wtb2ZcLW5hdHVyZTsKK+ianSA8IGhhaXJ5XC1hbmRcLXBvaXNvbm91c1wtY2F0ZXJwaWxsYXJzOwor5r6nIDwgcml2ZXJcLWluXC1ub3J0aGVyblwtaHVuYW5cLXByb3ZpbmNlOwor562uIDwgZGl2aW5hdGlvblwtd2l0aFwtc3RhbGtzXC1vZlwtcGxhbnRzOwor56yqIDwgYVwtY29hcnNlXC1tYXRcLW9mXC1ydXNoZXNcLW9yXC1iYW1ib287CivpppMgPCBmcmllZFwtcm91bmRcLWNha2VzXC1vZlwtd2hlYXRcLWZsb3VyOwor566QIDwgdG9cLWRyYXdcLWFcLWJhbWJvb1wtYm93XC1vclwtY3Jvc3Nib3c7CivmiYMgPCBhXC1kb29yXC1iYXJcLXBsYWNlZFwtb3V0c2lkZVwtYVwtZG9vcjsKK+S7iSA8IHN1cm5hbWVcLW9mXC10aGVcLW1vdGhlclwtb2ZcLW1lbmNpdXM7Civnr4DlpJbnlJ/mnp0gPCBuZXdcLXByb2JsZW1zXC1jb21wbGljYXRlXC1hblwtaXNzdWU7CivpvLvpnZLoh4nohasgPCBhXC1ibG9vZHlcLW5vc2VcLWFuZFwtYVwtc3dvbGxlblwtZmFjZTsKK+aUv+eVjCA8IHBvbGl0aWNhbFwtYW5kXC1nb3Zlcm5tZW50XC1jaXJjbGVzOwor5oCn5YilIDwgZGlzdGluZ3Vpc2hpbmdcLWJldHdlZW5cLXRoZVwtc2V4ZXM7CivpgZXnpoEgPCB0b1wtdmlvbGF0ZVwtYVwtcHJvaGlidGl0aW9uXC1vclwtYmFuOwor6YWs5ZKMIDwgdG9cLXJlc3BvbmRcLXRvXC1hXC1wb2VtXC13aXRoXC1hXC1wb2VtOwor5aCx6ICDIDwgZW50ZXJcLW9uZXNlbGZcLWZvclwtYW5cLWV4YW1pbmF0aW9uOwor5YyX5ZyLIDwgdGhlXC1ub3J0aGVyblwtcGFydFwtb2ZcLXRoZVwtY291bnRyeTsKK+S8gealreeuoeeQhiA8IGJ1c2luZXNzXC1tYW5hZ2VtZW50XC1cKGFzXC1hXC1zdHVkeVwpOwor5aSW5a2rIDwgZ3JhbmRzb25cLVwoc29uXC1vZlwtb25lJydzXC1kYXVnaHRlclwpOwor5YWJ57qW5YiG5L2I5byP5pW45pOa5LuL6Z2iIDwgZmliZXJcLWRpc3RyaWJ1dGVkXC1kYXRhXC1pbnRlcmZhY2U7CivlnoPlnL7ou4ogPCBnYXJiYWdlXC10cnVja1wtXChvclwtb3RoZXJcLXZlaGljbGVcKTsKK+Wkp+WciyA8IGFcLXBvd2VyXC1cKGllXCxcLWFcLWRvbWluYW50XC1jb3VudHJ5XCk7Civpqr4gPCBhbnlcLW9iamVjdFwtdGhhdFwtc3RpY2tzXC1pblwtdGhyb2F0Owor5o6i6KaqIDwgdG9cLWdvXC1ob21lXC10b1wtdmlzaXRcLW9uZScnc1wtZmFtaWx5Owor5biD5rOV576FIDwgYnVmZmFsb1wtXChjaXR5XC1pblwtbmV3XC15b3JrXC1zdGF0ZVwpOwor5YWr5pyD56m0IDwgdGhlXC1laWdodFwtc3RyYXRlZ2ljXC1uZXJ2ZVwtcG9pbnRzOwor6Zuj5LulIDwgaGFyZFwtdG9cLVwocHJlZGljdFwsXC1pbWFnaW5lXCxcLWV0Y1wuXCk7CivloLHmlYggPCByZW5kZXJcLXNlcnZpY2VcLXRvXC1yZXBheVwta2luZG5lc3M7CivphrwgPCBvZmZlclwtZm9vZFwtYW5kXC13aW5lXC1vbmUnJ3NcLWd1ZXN0czsKK+i8pyA8IGN1cnRhaW5lZFwtY2FycmlhZ2VcLXVzZWRcLWJ5XC13b21lbjsKK+i7mSA8IGFcLWNoaW5lc2VcLWZhbWlseVwtbmFtZVwtdG9cLWFycmFuZ2U7CivopqrmiJogPCBcKGFcKVwtcmVsYXRpdmVcLVwoaWVcLFwtZmFtaWx5XC1tZW1iZXJcKTsKK+eCuuacnyA8IFwodG9cLWJlXC1kb25lXClcLWJ5XC1cKGFcLWNlcnRhaW5cLWRhdGVcKTsKK+i+suabhiA8IHRoZVwtdHJhZGl0aW9uYWxcLWNoaW5lc2VcLWNhbGVuZGFyOwor6LSBIDwgdG9cLWRlZmVhdFwtdG9cLXNwb2lsXC1vclwtYmVcLXNwb2lsZWQ7Civos48gPCBwZWFybHNcLW9yXC1zaGVsbHNcLXN0cnVuZ1wtdG9nZXRoZXI7Civoq4ogPCB0b1wtbWFrZVwtYVwtanVkaWNpYWxcLWludmVzdGlnYXRpb247CivmjInoqqogPCBpblwtdGhlXC1vcmRpbmFyeVwtY291cnNlXC1vZlwtZXZlbnRzOwor6YCj5Lu7IDwgY29udGludWVcLWluXC1cKGFcLXBvbGl0aWNhbFwpXC1vZmZpY2U7Civnn67lrZDoo6Hmi5TlsIfou40gPCBjaG9vc2VcLXRoZVwtYmVzdFwtcGVyc29uXC1hdmFpbGFibGU7Civoh4norZwgPCB0eXBlc1wtb2ZcLWZhY2lhbFwtbWFrZXVwXC1pblwtb3BlcmFzOwor57qZIDwgc3RyaW5nXC1vblwtd2hpY2hcLWNvaW5zXC1hcmVcLXN0cnVuZzsKK+ettCA8IHR5cGVcLW9mXC1ncmFzc1wtdXNlZFwtaW5cLWRpdmluYXRpb247Civplovluq0gPCBiZWdpblwtYVwtXChqdWRpY2lhbFwpXC1jb3VydFwtc2Vzc2lvbjsKK+WFrOWvqSA8IHB1YmxpY1wtdHJpYWxcLVwoaW5cLWFcLWNvdXJ0XC1vZlwtbGF3XCk7CivnkIcgPCBjb2Fyc2VcLXZhcmlldHlcLW9mXC1qYXNwZXJcLW9yXC1qYWRlOwor5L2G6aGYIDwgaWZcLW9ubHlcLVwoaXRcLXdlcmVcLXBvc3NpYmxlXC10b1wuXC5cLlwpOwor6ZaL5pmu5pWmIDwgY2FwZVwtdG93blwtXChjaXR5XC1pblwtc291dGhcLWFmcmljYVwpOwor6LaK5L6G6LaK5Zq06YeNIDwgdG9cLWJlY29tZVwtbW9yZVwtc2VyaW91c1wtZXZlcnlcLWRheTsKK+S4jeisgOiAjOWQiCA8IGFncmVlXC13aXRob3V0XC1wcmlvclwtY29uc3VsdGF0aW9uOwor5o2o5b6XIDwgdG9cLWJlXC13aWxsaW5nXC10b1wtcGFydFwtd2l0aFwtXChzdGhcKTsKK+ajqyA8IHRob3JueVwtc2hydWJcLXdpdGhcLXllbGxvd1wtZmxvd2VyczsKK+imi+S4jeW+lyA8IG1heVwtbm90XC1iZVwtc2VlblwtYnlcLW9yXC1leHBvc2VkXC10bzsKK+aXkyA8IHNlcnJhdGVkXC1lZGdlc1wtb25cLWFcLWNoaW5lc2VcLWZsYWc7CivmjIHmnIkgPCBob2xkXC1cKGVnXCxcLXBhc3Nwb3J0XCxcLXZpZXdzXCxcLWV0Y1wuXCk7CivmipfniK0gPCBtYWtlXC1hXC1zdGFuZFwtYW5kXC1maWdodFwtXChhZ2FpbnN0XCk7Civov5HkuY7lkIzmraXmlbjkvY3pmo7lsaQgPCBwbGVzaW9jaHJvbm91c1wtZGlnaXRhbFwtaGllcmFyY2h5Owor5oyJ5YW15LiN5YuVIDwgbm90XC10aHJvd1wtdGhlXC10cm9vcHNcLWludG9cLWJhdHRsZTsKK+W2siA8IGFcLW5hbWVcLW9mXC1hblwtb2xkXC10b3duXC1pblwtc2ljaHVhbjsKK+evpuWtkCA8IGFcLWRvdWJsZVwtZWRnZWRcLWZpbmVcLXRvb3RoZWRcLWNvbWI7CivmipXmqZ8gPCBiZVwtYVwtc3BlY3VsYXRvclwtXChwcm9maXRcLXNlZWtpbmdcKTsKK+WhsSA8IHBsYWNlXC1uYW1lXC1pblwtZ3Vhbmdkb25nXC1wcm92aW5jZTsKK+WJqCA8IHNvdW5kXC1vZlwtc29tZXRoaW5nXC1iZWluZ1wtc21hc2hlZDsKK+aMquWAnyA8IHRvXC1ib3Jyb3dcLW1vbmV5XC1mb3JcLWFcLXNob3J0XC10aW1lOwor5a6w55u4IDwgcHJpbWVcLW1pbmlzdGVyXC1cKGluXC1mZXVkYWxcLWNoaW5hXCk7CivkuIDkuK3kuIDoh7ogPCBcIm9uZVwtY2hpbmFcLFwtb25lXC10YWl3YW5cIlwtXChwb2xpY3lcKTsKK+S1rCA8IGJsYWNrXC1zb3VuZFwtb2ZcLXRoZVwtZmxvd2luZ1wtd2F0ZXI7CivktI0gPCBhXC1raW5kXC1vZlwtc3RyYW5nZVwtYW5kXC13ZWlyZFwtYmlyZDsKK+S0iSA8IGdlbmVyYWxcLXRlcm1cLWZvclwtYVwtZ3JvdXBcLW9mXC1iaXJkOwor5LOwIDwgYVwtYmlyZFwtcmVzZW1ibGluZ1wtdGhlXC13aWxkXC1nb29zZTsKK+SxmSA8IGFcLXNtYWxsXC1raW5kXC1vZlwtdHVuYVwtb3JcLXN0dXJnZW9uOwor5LCUIDwgZHJlc3NlZFwtaGFpclwtaW5cLWFcLWhvcml6b250YWxcLXdheTsKK+SqrCA8IHNvdW5kXC1vZlwtcHJlc3NpbmdcLXNvbWV0aGluZ1wtZG93bjsKK+SprCA8IGFuXC1vcm5hbWVudGFsXC1pdGVtXC1vblwtYVwtc2NhYmJhcmQ7Civkp7UgPCBhXC1iaXJkXC1saWtlXC10aGVcLXNlY3JldGFyeVwtZmFsY29uOwor5KaOIDwgYVwtbWVjaGFuaWNhbFwtZGV2aWNlXC1mb3JcLWxlYWRcLW9yZTsKK+SlviA8IHRvXC1tZWx0XC1vclwtY2FzdFwtYnlcLXVzaW5nXC1hXC1tb3VsZDsKK+SlmSA8IGFcLXNwZWN1bHVtXC11c2VkXC1pblwtYW5jaWVudFwtdGltZXM7CivkpLcgPCBhXC1sYW5jZVwtd2l0aFwtdGhyZWVcLW9yXC10d29cLXBvaW50czsKK+S4reaXpemfk+i2iiA8IGNoaW5hXCxcLWphcGFuXCxcLWtvcmVhXCxcLWFuZFwtdmlldG5hbTsKK+SjoiA8IG5hbWVcLW9mXC1hXC1wbGFjZVwtaW5cLWFuY2llbnRcLXRpbWVzOwor5J2BIDwgYVwta2luZFwtb2ZcLXdpbGRcLWxlZ3VtaW5vdXNcLXBsYW50czsKK+SbtiA8IHdyaXRpbmdzXC1ldWxvZ2l6aW5nXC1hZGVhZFwtcGVyc29uOwor6Jmb6IWVIDwgZW1wdHlcLXdyaXN0XC1cKG1ldGhvZFwtb2ZcLXBhaW50aW5nXCk7Civkl6QgPCBhXC1raW5kXC1vZlwtd29ybVwtcHJvZHVjZWRcLWluXC13YXRlcjsKK+WPluW+l+Wkp+WtuOWtuOS9jSA8IHRvXC1vYnRhaW5cLWFcLXVuaXZlcnNpdHlcLWVkdWNhdGlvbjsKK+SNsCA8IGFcLXBsYWd1ZVwtb3JcLWFcLXBlc3RpbGVuY2VcLW9mXC1nb2F0Owor5IqKIDwgd2VsbFwtYm9pbGVkXC1jb25nZWVcLW9yXC1yaWNlXC1ncnVlbDsKK+SJiCA8IGFcLWtpbmRcLW9mXC1iYW1ib29cLXdpdGhcLWFcLXJlZFwtc2tpbjsKK+SHiCA8IHRvXC1wdXRcLWludG9cLWFcLWN1cGJvYXJkXC1vclwtY2xvc2V0Owor5IeAIDwgb3JuYW1lbnRzXC1vZlwtZmluZVwtZmVhdGhlclwtb3JcLWZ1cjsKK+SFuSA8IGFcLWtpbmRcLW9mXC1kcmlsbFwtZm9yXC1zb3dpbmdcLWdyYWluOwor5IWpIDwgY3Jvb2tlZFwtYW5kXC13aW5kaW5nXC1vZlwtdGhlXC1ncmFzczsKK+SEtyA8IGFcLW1lYXN1cmVtZW50XC1lcXVhbFwtdG9cLTEyMFwtY2F0dHk7Civkg6ogPCBhXC1wbGF0Zm9ybVwtZm9yXC1zYWNyaWZpY2lhbFwtcml0ZXM7Civkgp4gPCBhXC10aG9ybnlcLXRyZWVcLWFib3V0XC0xNVwtZmVldFwtaGlnaDsKK+WJtei+puS6uiA8IGZvdW5kZXJcLVwob2ZcLWFuXC1pbnN0aXR1dGlvblwsXC1ldGNcKTsKK+O6nCA8IGZpZXJjZVwtZG9nXC13aXRoXC1sb25nXC1zaGFnZ3lcLWhhaXI7CivjuokgPCBhXC1maWVyY2VcLWFuaW1hbFwtb2ZcLXRoZVwtZG9nXC10cmliZTsKK+S4jeirliA8IG5vXC1tYXR0ZXJcLVwod2hhdFwsXC13aG9cLFwtaG93XCxcLWV0Y1wuXCk7CivjuaEgPCBhXC1ydXNoXC1hbmRcLWltcGF0aWVudFwtZGlzcG9zaXRpb247CivjuKEgPCBib2FyZFwtdG9cLWJsb2NrXC10aGVcLXdhdGVyXC1jdXJyZW50Owor47iaIDwgc2NhdHRlcmVkXC1vclwtZGlzcGVyc2VkXC1hbmRcLWNsZWFyOwor47StIDwgaW1tZWFzdXJhYmxlXC1kZXB0aFwtb3JcLXByb2Z1bmRpdHk7CivjsaggPCB0b1wtcHJlcGFyZVwtYVwtYm9keVwtZm9yXC10aGVcLWNvZmZpbjsKK+S/neS/riA8IGd1YXJhbnRlZVwtdG9cLWtlZXBcLWluXC1nb29kXC1yZXBhaXI7CivjrIcgPCBuYW1lXC1vZlwtYVwtc3RhdGVcLWluXC1hbmNpZW50XC1jaGluYTsKK+OpvSA8IGJyYW5jaGVzXC10b1wtYmVcLWFcLXBhcmFzaXRlXC1hXC10cmVlOwor46iSIDwgdG9cLWN1dFwtb3BlblwtYW5kXC1jbGVhblwtXC1cLVwtYXNcLWZpc2g7Civph5HpgoogPCBwaG5vbVwtcGVuaFwtXChjYXBpdGFsXC1vZlwtY2FtYm9kaWFcKTsKK+OisiA8IHRoZVwtNXRoXC1vZlwtdGhlXC1laWdodFwtZGlhZ3JhbXNcLeWFq+WNpjsKK+OfqCA8IGFcLWZvdW50YWluXC1pblwtdGhlXC1zaWRlXC1vZlwtYVwtaGlsbDsKK+ObjSA8IHRvXC1oYXZlXC1vbmUnJ3NcLWFtYml0aW9uXC1mdWxmaWxsZWQ7CivjmqEgPCBzdGFuZGluZ1wtd2l0aG91dFwtYVwtc3RyYWlnaHRcLWJhY2s7CivjmokgPCB0b1wtbWFrZVwtYVwtcHJvZml0XC1vblwtc2VsbFwtYW5kXC1idXk7CivkvrXkvZQgPCB0b1wtaW52YWRlXC1hbmRcLW9jY3VweVwtXCh0ZXJyaXRvcnlcKTsKK+OVoyA8IGFcLW1hcnNoXC1hdFwtdGhlXC1mb290XC1vZlwtdGhlXC1oaWxsczsKK+afr+WvhiA8IGtlcm1pdFwtXChjb21tdW5pY2F0aW9uc1wtcHJvdG9jb2xcKTsKK+S6q+aciSA8IGVuam95XC1cKHJpZ2h0c1wsXC1wcml2aWxlZ2VzXCxcLWV0Y1wuXCk7Civnpq7ngq4gPCBhXC1ndW5cLXNhbHV0ZVwtXChlZ1wsXC0yMVwtZ3VuXC1zYWx1dGVcKTsKK+eqgeWOpSA8IHR1cmtpY1wtXChtaW5vcml0eVwtZ3JvdXBcLWluXC1jaGluYVwpOwor5oiI54i+5be05Zas5aSrIDwgXChmb3JtZXJcLXNvdmlldFwtbGVhZGVyXClcLWdvcmJhY2hldjsKK+mAvOS+m+S/oSA8IG9idGFpblwtY29uZmVzc2lvbnNcLWJ5XC1jb21wdWxzaW9uOwor5a6J5L+dIDwgXChhYmJyZXZpYXRpb25cKVwtbWFpbnRhaW5cLXNlY3VyaXR5Owor5aO96bq1IDwgYmlydGhkYXlcLW5vb2RsZXNcLVwoZm9yXC1sb25nZXZpdHlcKTsKK+a1tOWupCA8IGJhdGhyb29tXC1cKHJvb21cLXVzZWRcLWZvclwtYmF0aGluZ1wpOwor5Luk5Lq6IDwgY2F1c2VcLXNvbWVvbmVcLXRvXC1cKGJlXCxcLWZlZWxcLFwtZXRjXCk7CivlvaLlvbHkuI3pm6IgPCBpbnNlcGFyYWJsZVwtXChhc1wtZm9ybVwtYW5kXC1zaGFkb3dcKTsKK+WVhualreeJiOacrCA8IGNvbW1lcmNpYWxcLXZlcnNpb25cLVwob2ZcLXNvZnR3YXJlXCk7Civnmb7oroDkuI3ljq0gPCBiZVwtd29ydGhcLXJlYWRpbmdcLWFcLWh1bmRyZWRcLXRpbWVzOwor6Zmk6Z2eIDwgb25seVwtaWZcLVwoXC5cLlwuXCxcLW9yXC1vdGhlcndpc2VcLFwtXC5cLlwuXCk7CivmrafoppYgPCBkaXNjcmltaW5hdGlvblwtXChhZ2FpbnN0XC1zb21lb25lXCk7CivmlZfokL0gPCBkZWNsaW5lXC1cKGluXC13ZWFsdGhcLWFuZFwtcG9zaXRpb25cKTsKK+eEoemMqyA8IHd1eGlcLVwoY2l0eVwpXCxcLWluXC1qaWFuZ3N1XC1wcm92aW5jZTsKK+WIhuazouWkmuW3pSA8IHdhdmVsZW5ndGhcLWRpdmlzaW9uXC1tdWx0aXBsZXhpbmc7Civlv4XnlLHkuYvot68gPCB0aGVcLXJvYWRcLW9uZVwtbXVzdFwtZm9sbG93XC1vclwtdGFrZTsKK+S7rCA8IGFkanVuY3RcLXByb25vdW5cLWluZGljYXRlXC1wbHVyYWw7CivlkaIgPCBpbnRlcnJvZ2F0aXZlXC1vclwtZW1waGF0aWNcLWZpbmFsOwor5qW8IDwgYnVpbGRpbmdcLW9mXC10d29cLW9yXC1tb3JlXC1zdG9yaWVzOwor6I2vIDwgbGVhZlwtb2ZcLWRhaHVyaWFuXC1hbmdlbGljYVwtcGxhbnQ7CivpvY4gPCB0YWtlXC1pblwtYm90aFwtaGFuZHNcLWFuZFwtb2ZmZXJcLXRvOwor5LiIIDwgdW5pdFwtb2ZcLWxlbmd0aFwtZXF1YWxcLTNcLjNcLW1ldGVyczsKK+aMkSA8IGFcLWxvYWRcLWNhcnJpZWRcLW9uXC10aGVcLXNob3VsZGVyczsKK+elnSA8IHByYXlcLWZvclwtaGFwcGluZXNzXC1vclwtYmxlc3NpbmdzOwor5p2JIDwgdmFyaW91c1wtc3BlY2llc1wtb2ZcLXBpbmVcLWFuZFwtZmlyOwor5pynIDwgY29uZGl0aW9uXC1vclwtYXBwZWFyYW5jZVwtb2ZcLW1vb247CivpnLggPCBydWxlXC1ieVwtbWlnaHRcLXJhdGhlclwtdGhhblwtcmlnaHQ7CivnrqogPCBzbWFsbFwtYmFtYm9vXC1iYXNrZXRcLWZvclwtaG9sZGluZzsKK+mGpCA8IGFueVwtamFtXC1saWtlXC1vclwtcGFzdGVcLWxpa2VcLWZvb2Q7CivngpUgPCB0aGVcLWJyaWNrXC1iZWRcLWluXC1ub3J0aGVyblwtY2hpbmE7CivkuqUgPCBsYXN0XC1vZlwtdHdlbHZlXC1lYXJ0aGx5XC1icmFuY2hlczsKK+eypCA8IGd1YW5nZG9uZ1wtYW5kXC1ndWFuZ3hpXC1wcm92aW5jZXM7Civnsr0gPCBkdW1wbGluZ1wtbWFkZVwtb2ZcLWdsdXRpbm91c1wtcmljZTsKK+mZhyA8IG1vdW50YWluXC1sb2NhdGVkXC1iZXR3ZWVuXC1zaGFueGk7Civpl74gPCB2aWxsYWdlXC1vZlwtdHdlbnR5XC1maXZlXC1mYW1pbGllczsKK+mDpiA8IHBsYWNlXC1pblwtdG9kYXknJ3NcLWhlbmFuXC1wcm92aW5jZTsKK+mehSA8IGxlYXRoZXJcLXN0cmFwXC1vdmVyXC1ob3JzZScnc1wtbmVjazsKK+mToSA8IHNpY2tsZVwtZm9yXC1jdXR0aW5nXC1ncmFzc1wtb3JcLWhheTsKK+mqpyA8IGdhbGxvcFwtYWJvdXRcLXdpdGhcLWhlYWRcLXVwbGlmdGVkOwor6aqiIDwgaG9yc2VcLXdpdGhcLWFcLWJsdWlzaFwtd2hpdGVcLWNvbG9yOwor6JuzIDwga2luZFwtb2ZcLXNuYWlsXC13aXRoXC1zcGlyYWxcLXNoZWxsOwor6YKzIDwgYVwtZGVwYXJ0bWVudFwtaW5cLXRoZVwtc3RhdGVcLW9mXC1sdTsKK+mDoiA8IHN0YXRlXC1pblwtdG9kYXknJ3NcLWh1YmVpXC1wcm92aW5jZTsKK+mqliA8IHR3b1wtb3V0c2lkZVwtb25lc1wtaW5cLXRocmVlXC1ob3JzZTsKK+i9uCA8IGNyb3NzXC1ib2FyZFwtYXRcLXJlYXJcLW9mXC1jYXJyaWFnZTsKK+eunCA8IGFuY2llbnRcLXN0cmluZ1wtbXVzaWNcLWluc3RydW1lbnQ7Civpg5AgPCBzdGF0ZVwtaW5cLXRvZGF5JydzXC1oZW5hblwtcHJvdmluY2U7CivovbkgPCBydW5cLW92ZXJcLXNvbWV0aGluZ1wtd2l0aFwtdmVoaWNsZTsKK+agnSA8IGFcLWJ1aWxkZXInJ3NcLWZyYW1lXC1mb3JcLW1lYXN1cmluZzsKK+eNjSA8IGFuXC1hbmltYWxcLXdoaWNoXC1lYXRzXC1pdHNcLW1vdGhlcjsKK+iyoOiyrOS6uiA8IHBlcnNvblwtaW5cLWNoYXJnZVwtXChvZlwtc29tZXRoaW5nXCk7Civlp5DlpKsgPCBicm90aGVyXC1pblwtbGF3XC1cKGh1c2JhbmQnJ3NcLXNpZGVcKTsKK+WNgeS4iee2kyA8IHRoZVwtdGhpcnRlZW5cLWNvbmZ1Y2lhblwtY2xhc3NpY3M7Civlr6bmmYLmk43kvZznkrDlooMgPCByZWFsXC10aW1lXC1vcGVyYXRpbmdcLWVudmlyb25tZW50Owor54m55Y2AIDwgc3BlY2lhbFwtXChhZG1pbmlzdHJhdGl2ZVwpXC1yZWdpb247Civml6XlnJMgPCBqYXBhbmVzZVwteWVuXC1cKHVuaXRcLW9mXC1jdXJyZW5jeVwpOwor55eF6J+y5a6zIDwgcGxhbnRcLWRpc2Vhc2VzXC1hbmRcLWluc2VjdFwtcGVzdHM7Civkuqjnibnms7DnvoUgPCBodW50ZXJcLXR5bG9cLVwoaG9sbHl3b29kXC1hY3RyZXNzXCk7Civlo4Hmq6UgPCBhXC1idWlsdFwtaW5cLXdhcmRyb2JlXC1vclwtY3VwYm9hcmQ7CivplonploDpgKDou4ogPCBtYWtlXC1hXC1jYXJ0XC1iZWhpbmRcLWNsb3NlZFwtZG9vcnM7Civpgb/mmpEgPCBiZVwtYXdheVwtZm9yXC10aGVcLXN1bW1lclwtaG9saWRheXM7CivmraXmkJYgPCBkYW5nbGluZ1wtb3JuYW1lbnRcLXdvcm5cLWJ5XC13b21lbjsKK+Wci+mam+WVhualreapn+WZqCA8IGludGVybmF0aW9uYWxcLWJ1c2luZXNzXC1tYWNoaW5lczsKK+m8lyA8IHNtYWxsXC1yZXZvbHZpbmdcLWRydW1cLXdpdGhcLWtub2JzOwor6bySIDwgbGFyZ2VcLXRyaXBvZFwtY2FsZHJvblwtd2l0aFwtc21hbGw7CivptpYgPCBsYXJnZVwtd2F0ZXJmb3dsXC13aXRoXC1uYWtlZFwtaGVhZDsKK+mohCA8IG5hbWVcLW9mXC1hXC1sZWdlbmRhcnlcLXN3aWZ0XC1ob3JzZTsKK+mkliA8IGZvb2RcLWl0ZW1cLXNldFwtb3V0XC1mb3JcLXNob3dcLW9ubHk7CivpoKMgPCB0b1wtdmlld1wtb3RoZXJzXC13aXRoXC1yYWlzZWRcLWV5ZXM7CivpgqbkuqQgPCByZWxhdGlvbnNcLWJldHdlZW5cLXR3b1wtY291bnRyaWVzOwor6YS0IDwgcGxhY2VcLWluXC10b2RheScnc1wtaG9uYW5cLXByb3ZpbmNlOwor6YSaIDwgcGxhY2VcLWluXC10b2RheScnc1wtaGViZWlcLXByb3ZpbmNlOwor6YOUIDwgcGxhY2VcLW5hbWVcLWluXC1zaGFuZG9uZ1wtcHJvdmluY2U7Civpgr0gPCBuYW1lXC1vZlwtYVwtY291bnR5XC1pblwtaGFuXC1keW5hc3R5Owor6LuoIDwgbGF0dGljZVwtd29ya1wtb25cLWZyb250XC1hbmRcLXNpZGVzOwor6LiLIDwgdGhlXC1mb290XC1vclwtZmVldFwtY2FzdFwtb2ZcLWFcLXBsYXk7Civmlbjmk5rpj4jot6/pgKPmjqXorZjliKXnorwgPCBkYXRhXC1saW5rXC1jb25uZWN0aW9uXC1pZGVudGlmaWVyOwor6KWtIDwgdHVja1wtdXBcLWhlbVwtb2ZcLWdhcm1lbnRcLWFuZFwtd3JhcDsKK+ijiyA8IGNvdHRvblwtY2xvdGhlc1wtb2ZcLWFcLWJveVwtc2VydmFudDsKK+ihuiA8IHNsaXRcLWluXC1nYXJtZW50XC10b1wtYWlkXC1tb3ZlbWVudDsKK+igqCA8IGFcLWtpbmRcLW9mXC1zcGlkZXJcLXdpdGhcLWxvbmdcLWxlZ3M7CivonqMgPCBteXRob2xvZ2ljYWxcLXdpbmdsZXNzXC1kcmFnb25cLW9mOwor5o+Q54WJIDwgdG9cLWV4dHJhY3RcLVwob3JlXCxcLW1pbmVyYWxzXCxcLWV0Y1wpOwor6IukIDwgYnJhc3NpY2FcLWNhbXBlc3RyaXNcLXN1YnNwXC5cLXJhcGE7CivmqYvmjqUgPCBicmlkZ2luZ1wtXChpblwtY29tcHV0ZXJcLW5ldHdvcmtzXCk7CivoiZUgPCB0d29cLWJvYXRzXC1mYXN0ZW5lZFwtc2lkZVwtYnlcLXNpZGU7CivlhavmlrkgPCB0aGVcLWVpZ2h0XC1wb2ludHNcLW9mXC10aGVcLWNvbXBhc3M7CivohqsgPCB0aGVcLWZhdFwtY292ZXJpbmdcLXRoZVwtaW50ZXN0aW5lczsKK+aCsuWWnOS6pOmbhiA8IG1peGVkXC1mZWVsaW5nc1wtb2ZcLWdyaWVmXC1hbmRcLWpveTsKK+WFp+aUvyA8IGludGVybmFsXC1hZmZhaXJzXC1cKG9mXC1hXC1jb3VudHJ5XCk7CivnuJcgPCBzYWNrY2xvdGhcLXdvcm5cLW9uXC1icmVhc3RcLWR1cmluZzsKK+i/q+S9vyA8IGZvcmNlXC1cKHNvbWVvbmVcLXRvXC1kb1wtc29tZXRoaW5nXCk7Civnr6ogPCBhXC1iYW1ib29cLWZsdXRlXC13aXRoXC1zZXZlblwtaG9sZXM7CivlkIPkuI3mnI0gPCBub3RcLWJlXC1hY2N1c3RvbWVkXC10b1wtZWF0aW5nXC1zdGg7Civplbflu4ogPCB0aGVcLWxvbmdcLWNvcnJpZG9yXC1hdFwteWlcLWhlXC15dWFuOwor556WIDwgYVwtY2F0YXJhY3RcLW9yXC1maWxtXC1vdmVyXC10aGVcLWV5ZTsKK+S4jeS/rumCiuW5hSA8IG5vdFwtY2FyZVwtYWJvdXRcLW9uZScnc1wtYXBwZWFyYW5jZTsKK+eVpCA8IHBsYWNlXC1mb3JcLXdvcnNoaXBwaW5nXC10aGVcLWhhdmVuOwor5YWD5bilIDwgYVwtbWFyc2hhbFwtXChpblwtdGhlXC1hcm1lZFwtZm9yY2VzXCk7CivnlJcgPCBlYXJ0aGVud2FyZVwtdmVzc2VsXC1pblwtdHdvXC1wYXJ0czsKK+espuWQiOe+juWci+WIqeebiiA8IGluXC1saW5lXC13aXRoXC1hbWVyaWNhblwtaW50ZXJlc3RzOwor5aSn5b+r5Lq65b+DIDwgdG9cLXRoZVwtc2F0aXNmYWN0aW9uXC1vZlwtZXZlcnlvbmU7CivmoKHplbcgPCBcKGNvbGxlZ2VcLFwtdW5pdmVyc2l0eVwpXC1wcmVzaWRlbnQ7Civng7MgPCB0b1wtdHJhdmVsXC1ieVwtdGhlXC1saWdodFwtb2ZcLXRvcmNoOwor54GVIDwgc2hvcnRcLW5hbWVcLWZvclwtZ3Vhbmd4aVwtcHJvdmluY2U7CivppqzlsLzmi4kgPCBtYW5pbGFcLVwoY2FwaXRhbFwtb2ZcLXBoaWxpcHBpbmVzXCk7CivplovliIAgPCB0b1wtcGVyZm9ybVwtb3JcLWhhdmVcLWFuXC1vcGVyYXRpb247CivmsrQgPCBmb3VsXC1hbmRcLXBvaXNvbm91c1wtaW5cLWNvbmZ1c2lvbjsKK+aokCA8IGFcLWxvb2tvdXRcLXR1cnJldFwtb25cLWFcLWNpdHlcLXdhbGw7Civmo7sgPCBraW5kXC1vZlwtd29vZFwtZnJvbVwtd2hpY2hcLXBlcmZ1bWU7CivovKnliIYgPCBzZW5pb3JpdHlcLWluXC10aGVcLWZhbWlseVwtb3JcLWNsYW47CivmnowgPCB2YXJpZXR5XC1vZlwtZWxtXC13aXRoXC1zbWFsbFwtc2VlZHM7Civpnq3plbfojqvlj4ogPCBiZXlvbmRcLXRoZVwtcmVhY2hcLW9mXC1vbmUnJ3NcLXBvd2VyOwor5LiN5a2454Sh6KGTIDwgaGF2ZVwtbmVpdGhlclwtbGVhcm5pbmdcLW5vclwtc2tpbGw7Civmh4noqbLoqqogPCBpdFwtc2hvdWxkXC1iZVwtbWVudGlvbmVkXC10aGF0XC1cLlwuXC47CivkuI3lvpfkuI0gPCBoYXZlXC1ub1wtY2hvaWNlXC1vclwtb3B0aW9uXC1idXRcLXRvOwor5LiN5a+S6ICM5oWEIDwgc2hpdmVyXC1hbGxcLW92ZXJcLXRob3VnaFwtbm90XC1jb2xkOwor5bC+54mZIDwgYVwteWVhclwtZW5kXC1kaW5uZXJcLWZvclwtZW1wbG95ZWVzOwor54+t6LyqIDwgcmVndWxhclwtcGFzc2VuZ2VyXC1vclwtY2FyZ29cLXNoaXA7Civlnp8gPCBjbGF5XC1zaGVlcFwtYnVyaWVkXC13aXRoXC10aGVcLWRlYWQ7Civmiqjmk4ogPCBhdHRhY2tcLVwodmVyYmFsbHlcLW9yXC1pblwtd3JpdGluZ1wpOwor6Iie5Y+wIDwgXCh0aGVhdHJpY2FsXC1vclwtcG9saXRpY2FsXClcLXN0YWdlOwor5ZKgIDwgdG9cLXdoaXNwZXJcLlwtdG9cLWJsYW1lXC10b1wtc2xhbmRlcjsKK+WPpyA8IHRvXC1jdXRcLW1lYXRcLW9mZlwtYXdheVwtZnJvbVwtYm9uZXM7CivlhpQgPCBjYXBcLXdvcm5cLWR1cmluZ1wtdGhlXC15aW5cLWR5bmFzdHk7CivkurwgPCB0b1wtYXNzZW1ibGVcLlwtdG9cLWdhdGhlclwtdG9nZXRoZXI7CivkuYQgPCBzaGltZVw6XC10b1wtZmluZFwtYVwtcGxhY2VcLXRvXC1kd2VsbDsKK+S1uCA8IHRoZVwtdG9hZFwtdGhhdFwtbGl2ZXNcLWluXC10aGVcLW1vb247Civks6EgPCBhXC1raW5kXC1vZlwtYmlyZFwtaW5cLWFuY2llbnRcLWJvb2tzOwor5YyX5LyQ6LuNIDwgdGhlXC1ub3J0aGVyblwtZXhwZWRpdGlvbmFyeVwtYXJteTsKK+SyniA8IGFcLXNlY29uZFwtZ2VuZXJhbFwtbmFtZVwtZm9yXC1wZXJjaDsKK+SxjCA8IGFcLXNlY29uZFwtbmFtZVwtZm9yXC10aGVcLWdsb2JlZmlzaDsKK+SwnSA8IGFcLWxhcmdlXC1lYXJ0aGVuXC1wb3RcLWZvclwtY29va2luZzsKK+SwgCA8IGRyZXNzZWRcLWhhaXJcLW9mXC1hXC1jaGluZXNlXC13b21hbjsKK+SuuCA8IHRvXC1tb3ZlXC1zbG93bHlcLWFuZFwtdGhlblwtc3dpZnRseTsKK+SsuyA8IHRvXC1lbnRlcnRhaW5cLWFcLWRlcGFydGluZ1wtZnJpZW5kOwor5Kq+IDwgdG9cLWRlYWxcLXdpdGhcLWFmZmFpcnNcLWNhdXRpb3VzbHk7Civkqo0gPCBhXC1jb250YWluZXJcLWZvclwtYm93c1wtYW5kXC1hcnJvd3M7CivkqKMgPCBsZWF0aGVyXC10b1wtYmVcLW1vaXN0ZW5lZFwtYnlcLXJhaW47Civou5/pq5Tlh7rniYjljZTmnIMgPCBzb2Z0d2FyZVwtcHVibGlzaGVyc1wtYXNzb2NpYXRpb247Civko6MgPCBuYW1lXC1vZlwtYVwtcGxhY2VcLW5hbWVcLW9mXC1hXC1wbGFjZTsKK+SfmiA8IHRvXC1zaXRcLXdpdGhcLXRoZVwtbGVnc1wtc3ByZWFkXC1vdXQ7CivknLcgPCBmZXJtZW50ZWRcLWFuZFwtc2Vhc29uZWRcLXNveWJlYW5zOwor5JyqIDwgbmFtZVwtb2ZcLWFcLXBhdmlsaW9uXC1pblwtb2xkXC10aW1lczsKK+SbgCA8IHJlYXNvbmFibGVcLWF1dGhvcml0eVwtc3RhdGVtZW50czsKK+SYhSA8IGFcLXNtYWxsXC1nYWRmbGllc1wtYW5kXC1tb3NxdWl0b2VzOwor5Y+v56e75qSNIDwgcG9ydGFibGVcLVwocHJvZ3JhbW1pbmdcLWxhbmd1YWdlXCk7CivkkIMgPCBmYXRcLWluXC10aGVcLWFiZG9tZW5cLW9yXC1pbnRlc3RpbmU7CivkjZsgPCBhXC1raW5kXC1vZlwtdG9vbFwtdXNlZFwtdG9cLWdldFwtZmlzaDsKK+SKpCA8IHZlZ2V0YWJsZVwtbWl4ZWRcLXdpdGhcLXRoaWNrXC1zb3VwOwor5IKyIDwgc3RhbmRhcmRcLXdlaWdodHNcLXVzZWRcLWluXC1zY2FsZXM7CivkgbAgPCB0b1wtbG9va1wtaW5cLWFcLWV2aWxcLW9yXC13aWNrZWRcLXdheTsKK+O8liA8IGdvdXJkXC11c2VkXC1hc1wtYVwtbGFkbGVcLW9yXC1kaXBwZXI7Civju6sgPCBhXC1nZW1cLW9yXC1vcm5hbWVudFwtb25cLWFcLXNjYWJiYXJkOwor54yb6LeMIDwgZHJvcFwtc2hhcnBseVwtXChlZ1wsXC1zdG9ja1wtcHJpY2VzXCk7CivlsaTlh7rkuI3nqq4gPCB0b1wtY29tZVwtb3V0XC1vbmVcLWFmdGVyXC10aGVcLW90aGVyOwor5L+h5Lu2IDwgYVwtbGV0dGVyXC1cKGllXCxcLXNlbnRcLWluXC10aGVcLW1haWxcKTsKK+OsuSA8IHRlbmRvbnNcLW9mXC10aGVcLWhlZWxcLW9mXC10aGVcLWZvb3Q7CivjrIEgPCB0aGVcLXN1blwtaXNcLXNoaW5pbmdcLW9uXC10aGVcLXdhdGVyOwor46WGIDwgaW5kdWxnZW50XC1hbmRcLXdpdGhvdXRcLXJlc3RyYWludDsKK+WFq+e0muW3peizh+WItiA8IGVpZ2h0XC1ncmFkZVwtd2FnZVwtc2NhbGVcLVwoc3lzdGVtXCk7Civjl5ggPCB0b1wtYml0ZVwtdGhlXC1oYXJkXC1hbmRcLXNvbGlkXC1mb29kOwor5L2/5ZG9IDwgYVwtXChkaXBsb21hdGljXC1vclwtb3RoZXJcKVwtbWlzc2lvbjsKK+OToiA8IHRvXC1jdXRcLXRoZVwtZmxlc2hcLWZyb21cLXRoZVwtYm9uZXM7Civjk5QgPCBmYWRlZFwtYW5kXC1mYWxsZW5cLVwtXC1cLWFzXC1ibG9zc29tczsKK+OSuyA8IHRvXC1nb1wtZm9yd2FyZFwtd2l0aFwtZXllc1wtY292ZXJlZDsKK+S4ueeariA8IHRoZVwtcm9vdFwtYmFya1wtb2ZcLXRoZVwtcGVvbnlcLXRyZWU7CivlrprlgZogPCB0b1wtaGF2ZVwtc29tZXRoaW5nXC1tYWRlXC10b1wtb3JkZXI7CivlnKjlr4bliIfms6jmhI8gPCB0b1wtcGF5XC1jbG9zZVwtYXR0ZW50aW9uXC1cKHRvXC1zdGhcKTsKK+WuieawkeWRiuekuiA8IGFcLW5vdGljZVwtdG9cLXJlYXNzdXJlXC10aGVcLXB1YmxpYzsKK+advuS4i+mbu+awo+W3pealrSA8IG1hdHN1c2hpdGFcLWVsZWN0cm9uaWNzXC1pbmR1c3RyeTsKK+mHjeeUqCA8IHRvXC1wdXRcLWluXC1hblwtaW1wb3J0YW50XC1wb3NpdGlvbjsKK+e0sOiPjOatpuWZqCA8IGJpb2xvZ2ljYWxcLXdlYXBvblwtXCh1c2luZ1wtZ2VybXNcKTsKK+avlOizvSA8IFxbYXRobGV0aWNcLW9yXC1vdGhlclxdXC1jb21wZXRpdGlvbjsKK+WIpemWi+eUn+mdoiA8IHN0YXJ0XC1zb21ldGhpbmdcLW5ld1wtb3JcLW9yaWdpbmFsOwor5pWY6L+wIDwgcmVsYXRlXC1cKGFcLXN0b3J5XC1vclwtaW5mb3JtYXRpb25cKTsKK+WKoOmHjSA8IGJlY29tZVx8bWFrZVwtbW9yZVwtc2VyaW91c1x8Z3JhdmVyOwor6JSa54K6IDwgdG9cLWFmZm9yZFwtXChhXC12aWV3XC1vZlwtc3RoXCxcLWVcLmdcLlwpOwor57aT5r+f5a24IDwgZWNvbm9taWNzXC1cKGFzXC1hXC1maWVsZFwtb2ZcLXN0dWR5XCk7Civpm7voh7ogPCByYWRpb1wtXChvclwtYnJvYWRjYXN0aW5nXClcLXN0YXRpb247CivlpoLpo6LkvLzmuLQgPCB0aGlyc3RpbmdcLW9yXC1odW5nZXJpbmdcLWZvclwtc3RoXC47CivplovlnIvlhYPli5sgPCBmb3VuZGluZ1wtZmF0aGVyc1wtXChvZlwtYVwtY291bnRyeVwpOwor56KR5p6XIDwgdGhlXC1mb3Jlc3RcLW9mXC1zdGVsZXNcLVwoaW5cLXhpJydhblwpOwor5bm5IDwgdHJ1bmtcLW9mXC10cmVlXC1vclwtb2ZcLWh1bWFuXC1ib2R5Owor5bC6IDwgY2hpbmVzZVwtbWVhc3VyZVwtYXBwcm94XC5cLScnZm9vdCcnOwor57GzIDwgaHVsbGVkXC1vclwtaHVza2VkXC11bmNvb2tlZFwtcmljZTsKK+m5jyA8IGZhYnVsb3VzXC1iaXJkXC1vZlwtZW5vcm1vdXNcLXNpemU7CivlloIgPCBpbnRlcmplY3Rpb25cLXRvXC1jYWxsXC1hdHRlbnRpb247CivmvYcgPCBzb3VuZFwtb2ZcLWJlYXRpbmdcLXdpbmRcLWFuZFwtcmFpbjsKK+emuSA8IGxlZ2VuZGFyeVwtaHNpYVwtZHluYXN0eVwtZm91bmRlcjsKK+aWnyA8IHRvXC1wb3VyXC13aW5lXC1vclwtdGVhXC1pbnRvXC1hXC1jdXA7CivokLwgPCB0aGVcLXN0ZW1cLWFuZFwtY2FseXhcLW9mXC1hXC1mbG93ZXI7CivpmIAgPCBwb3dlcmZ1bFwtYW5kXC1pbmZsdWVudGlhbFwtZ3JvdXA7CivmpbcgPCBtb2RlbFwtc3R5bGVcLW9mXC1jaGluZXNlXC13cml0aW5nOwor6L6EIDwgc2lkZXNcLW9mXC1jaGFyaW90XC13aGVyZVwtd2VhcG9uczsKK+S/kSA8IHdvb2RlblwtZmlndXJlXC1idXJpZWRcLXdpdGhcLWRlYWQ7CivlmLkgPCB1c2VkXC1kZXNjcmliZVwtY2xhcml0eVwtb2ZcLXZvaWNlOwor6L28IDwgaG9yaXpvbnRhbFwtd29vZGVuXC1iYXJcLWluXC1mcm9udDsKK+mmkSA8IHRpbWVcLW9mXC1mYW1pbmVcLW9yXC1jcm9wXC1mYWlsdXJlOwor5LylIDwgZ2hvc3RcLW9mXC1vbmVcLWRldm91cmVkXC1ieVwtdGlnZXI7Civnu7YgPCBzaWxrXC1yaWJib25cLWF0dGFjaGVkXC1hc1wtYVwtc2VhbDsKK+msiCA8IGZpbmVcLWdyb3d0aFwtb2ZcLWhhaXJcLWN1cmx5XC1oYWlyOwor56OUIDwgZG93bndhcmRcLXN0cm9rZVwtc2xhbnRpbmdcLXJpZ2h0Owor6KOiIDwgZm9sZGluZ1wtcHVyc2VcLWluc2VydGVkXC1pblwtYmVsdDsKK+aeuCA8IGtpbmRcLW9mXC1hc3BlblwtZm91bmRcLWluXC1zaWNodWFuOwor6IqKIDwgZXh1YmVyYW50XC1hbmRcLXZpZ29yb3VzXC1mb2xpYWdlOwor6YSEIDwgbmFtZVwtb2ZcLWFcLWRpc3RyaWN0XC1pblwtc2hhbmRvbmc7CivpvLkgPCBhXC1raW5kXC1vZlwtaW5zZWN0aXZvcm91c1wtcm9kZW50Owor6I68IDwgYW5cLWVkaWJsZVwtd2F0ZXJcLXBsYW50XC1icmFzZW5pYTsKK+WcrCA8IHBsYXN0ZXJcLW92ZXJcLXdpdGhcLWxheWVyXC1vZlwtbXVkOwor6I6pIDwgbWVtYnJhbmVcLWxpbmluZ1wtaW5zaWRlXC1vZlwtcmVlZDsKK+ivtiA8IGFuXC1leGNsYW1hdGlvblwtb2ZcLWNvbmZpcm1hdGlvbjsKK+ikmSA8IHBhcGVyXC1vclwtY2xvdGhcLXBhc3RlZFwtdG9nZXRoZXI7Civnm7TmjqXmlbjmk5ogPCBkYXRhXC1kaXJlY3RcLVwoaW5cLWxhblwtZW11bGF0aW9uXCk7CivlpJbngZggPCB3YWl0YW5cLVwodGhlXC1idW5kXClcLFwtaW5cLXNoYW5naGFpOwor6K2J5a+mIDwgY29uZmlybVwtXChzb21ldGhpbmdcLXRvXC1iZVwtdHJ1ZVwpOwor5oSb6Z2i5a2QIDwgYmVcLWNvbmNlcm5lZFwtYWJvdXRcLWZhY2VcLXNhdmluZzsKK+itsOWToSA8IG1lbWJlclwtXChvZlwtYVwtbGVnaXNsYXRpdmVcLWJvZHlcKTsKK+WgseihqCA8IGZvcm1zXC1mb3JcLXJlcG9ydGluZ1wtc3RhdGlzdGljczsKK+aYjuWgsSA8IG1pbmdcLXBhb1wtbmV3c3BhcGVyXC1cKGhvbmdcLWtvbmdcKTsKK+WJjeeoiyA8IGZ1dHVyZVwtXChjYXJlZXJcLFwtZXRjXClcLXByb3NwZWN0czsKK+eZu+mWgCA8IHBheVwtYVwtdmlzaXRcLXRvXC1zb21lb25lJydzXC1ob3VzZTsKK+mCiuawkSA8IHBlb3BsZVwtbGl2aW5nXC1vblwtdGhlXC1mcm9udGllcnM7CivpgqPmnKsgPCBpZlwtdGhhdCcnc1wtdGhlXC1jYXNlXCxcLXRoZW5cLVwoXC5cLlwuXCk7CivmlYjmh4kgPCBlZmZlY3RcLVwoZWdcLFwtZ3JlZW5ob3VzZVwtZWZmZWN0XCk7CivloqjniL7nvL0gPCBtZWxib3VybmVcLVwoYW5cLWF1c3RyYWxpYW5cLWNpdHlcKTsKK+atueW+kiA8IGV2aWxcLXBlcnNvblwtd2hvXC1jb21taXRzXC1jcmltZXM7CivmlLblvqkgPCByZWNvdmVyXC1cKGxvc3RcLXRlcnJpdG9yeVwsXC1ldGNcLlwpOwor5YKy6aqoIDwgbG9mdHlcLWFuZFwtdW55aWVsZGluZ1wtY2hhcmFjdGVyOwor5pa35LqkIDwgYnJlYWtcLW9mZlwtZGlwbG9tYXRpY1wtcmVsYXRpb25zOwor6Zu76IWm6IiH6Zu76Kmx57O757Wx5pW05ZCIIDwgY29tcHV0ZXJcLXRlbGVwaG9ueVwtaW50ZWdyYXRpb247CivptosgPCBhXC1zZWFcLWJpcmRcLXdpdGhcLWFcLXdoaXRlXC1icmVhc3Q7Civpr48gPCBhXC1kaWFsZWN0XC5cLlwuXC5cLlwuXC5cLlwtbmFtZVwtb2ZcLWZpc2g7CivppYEgPCBjYXJyeVwtbWVhbFwtdG9cLXdvcmtlcnNcLWluXC1maWVsZDsKK+aXpeacrOmbu+Wgsembu+ipseWFrOWPuCA8IG5pcHBvblwtdGVsZWdyYXBoXC1hbmRcLXRlbGVwaG9uZTsKK+mOqyA8IG9ybmFtZW50XC1vdmVyXC10aGVcLWhvcnNlJydzXC1oZWFkOwor5YKz57Wx6Yar6JelIDwgXChjaGluZXNlXClcLXRyYWRpdGlvbmFsXC1tZWRpY2luZTsKK+i1mSA8IGdpZnRcLW9mXC1tb25leVwtaGVscFwtcGF5XC1mdW5lcmFsOwor5pyJ5Y+y5Lul5L6GIDwgc2luY2VcLXRoZVwtYmVnaW5uaW5nXC1vZlwtaGlzdG9yeTsKK+W4s+aItiA8IFwoYmFua1wsXC1jb21wdXRlclwsXC1ldGNcLlwpXC1hY2NvdW50Owor6KmkIDwgdG9cLW1ha2VcLXdpbGRcLXN0YXRlbWVudHNcLXRvXC1saWU7CivmoLjlqIHmh77mlL/nrZYgPCBwb2xpY3lcLW9mXC1udWNsZWFyXC1pbnRpbWlkYXRpb247CivomLQgPCB5b3VuZ1wtc2hvb3RzXC1vZlwtdGhlXC1yYXBldHVybmlwOwor6I6dIDwgdG9cLWNob3BcLXN0cmF3XC1maW5lXC1mb3JcLWFuaW1hbHM7CivntKLmnbDntI0gPCBzb2pvdXJuZXJcLVwobWFydGlhblwtbGFuZFwtcm92ZXJcKTsKK+iFoCA8IGJldHdlZW5cLXRoZVwtc2tpblwtYW5kXC10aGVcLWZsZXNoOwor5YyF5rK755m+55eFIDwgZ3VhcmFudGVlXC10b1wtY3VyZVwtYWxsXC1kaXNlYXNlczsKK+e/vyA8IHN0cmVhbWVyXC1hZG9ybmVkXC13aXRoXC1mZWF0aGVyczsKK+etpSA8IHJvdW5kXC1zaGFwZWRcLWJhbWJvb1wtYmFza2V0XC1mb3I7Civlm7rnhLYgPCBhZG1pdHRlZGx5XC1cKGl0JydzXC10cnVlXC10aGF0XC5cLlwuXCk7Civnl4QgPCBzY3JvZnVsb3VzXC1zd2VsbGluZ3NcLWFuZFwtc29yZXM7CivkuK3oj6/kurrmsJHlhbHlkozlnIsgPCB0aGVcLXBlb3BsZScnc1wtcmVwdWJsaWNcLW9mXC1jaGluYTsKK+eOpCA8IGFcLWtpbmRcLW9mXC1nZW1cLWluZmVyaW9yXC10b1wtamFkZTsKK+acjeWLmeW7o+WRiuWNlOitsCA8IHNlcnZpY2VcLWFkdmVydGlzZW1lbnRcLXByb3RvY29sOwor54WgIDwgdG9cLWZyeVwtaW5cLWZhdFwtb3JcLW9pbFwuXC10b1wtc2NhbGQ7Civoh7rnjaggPCB0YWl3YW5cLWluZGVwZW5kZW5jZVwtXChtb3ZlbWVudFwpOwor5r2PIDwgZmFyZXNoYXJlXC1yZWNsYWltZWRcLWZyb21cLXJpdmVyOwor5ry8IDwgaGF2aW5nXC10aGVcLWFwcGVhcmFuY2VcLW9mXC1kZXB0aDsKK+S/neiLlyA8IGtlZXBcLWFcLWZ1bGxcLXN0YW5kXC1vZlwtc2VlZGxpbmdzOwor5qyeIDwgdGhlXC1sYXR0aWNlXC1vZlwtYVwtd2luZG93XC1hXC1zaWxsOwor5oyJ6ZyA5YiG6YWNIDwgZGlzdHJpYnV0aW9uXC1hY2NvcmRpbmdcLXRvXC1uZWVkOwor5LiW6LK/57WE57mUIDwgd3RvXC1cKHdvcmxkXC10cmFkZVwtb3JnYW5pemF0aW9uXCk7Civmm5ogPCB0d2lsaWdodFwtanVzdFwtYmVmb3JlXC1zdW5cLXJpc2VzOwor5rKS5pyJ5LuA6bq8IDwgdGhlcmUnJ3NcLW5vdGhpbmdcLVwoXC5cLlwuXC1hYm91dFwtaXRcKTsKK+aWmiA8IGFcLXNtYWxsXC1jdXBcLW9mXC1zdG9uZVwtd2l0aFwtZWFyczsKK+aMieWLnuWIhumFjSA8IGRpc3RyaWJ1dGlvblwtYWNjb3JkaW5nXC10b1wtd29yazsKK+i3r+eUsSA8IHJvdXRpbmdcLVwoaW5cLWNvbXB1dGVyXC1uZXR3b3Jrc1wpOwor5bCN576OIDwgXChwb2xpY3lcLFwtZXRjXC5cKVwtdG93YXJkc1wtYW1lcmljYTsKK+aMh+aVuCA8IFwobnVtZXJpY2FsXCxcLXN0YXRpc3RpY2FsXClcLWluZGV4Owor562G55WrIDwgc3Ryb2tlc1wtb2ZcLWFcLWNoaW5lc2VcLWNoYXJhY3RlcjsKK+aJiiA8IHVwcmlnaHRcLWJhclwtZm9yXC1mYXN0ZW5pbmdcLWRvb3I7CivmhZwgPCBuYW1lXC1vZlwtYVwtbW9ua1wtaW5cLXRhbmdcLWR5bmFzdHk7CivnqbropbIgPCBcKG1pbGl0YXJ5XClcLWF0dGFja1wtZnJvbVwtdGhlXC1haXI7CivltKAgPCBwbGFjZVwtbmFtZVwtaW5cLWd1YW5neGlcLXByb3ZpbmNlOwor6KGo5aCxIDwgc3RhdGlzdGljYWxcLXRhYmxlc1wtYW5kXC1yZXBvcnRzOwor5bKdIDwgbmFtZVwtb2ZcLWFcLW1vdW50YWluXC1pblwtc2hhbmRvbmc7Civmi5jmirwgPCBcKGFycmVzdFwtYW5kXClcLXRha2VcLWludG9cLWN1c3RvZHk7Civoq4flvpfkvoYgPCBhYmxlXC10b1wtdGFsa1wtdG9cLW9yXC1nZXRcLW9uXC13aXRoOwor5aCtIDwgYVwtZHJ5XC1tb2F0XC1vdXRzaWRlXC1hXC1jaXR5XC13YWxsOwor5aCOIDwgY2hhcmFjdGVyXC11c2VkXC1mb3JcLXBsYWNlXC1uYW1lczsKK+WauSA8IGFcLXBhcnRpY2xlXC1pbXBseWluZ1wtY29tcGxldGlvbjsKK+mYv+aLieacqOWcliA8IGFsbWF0eVwtXChjYXBpdGFsXC1vZlwta2F6YWtoc3RhblwpOwor5YyzIDwgbGFkaWVzXC10b2lsZXRcLWNhc2VcLXdpdGhcLW1pcnJvcjsKK+WItSA8IHB1bmlzaG1lbnRcLWJ5XC1jdXR0aW5nXC1vZmZcLWVhcnM7CivlsJrmm7ggPCBoaWdoXC1vZmZpY2lhbFwtaW5cLWFuY2llbnRcLWNoaW5hOwor5LKBIDwgZ2VuZXJhbFwtdGVybVwtb2ZcLWFcLWtpbmRcLW9mXC1maXNoOwor5LiD5bGk5p625qeLIDwgc2V2ZW5cLWxheWVyXC1hcmNoaXRlY3R1cmVcLVwob3NpXCk7CivksJogPCB0aGVcLXRvcFwtcGFydFwtb2ZcLXRoZVwtcmljZVwtZ3J1ZWw7Civkr7UgPCBoYWlyXC1zdHlsZVwtZm9yXC1saXR0bGVcLWNoaWxkcmVuOwor5K+kIDwgYm9uZXdhcmVcLXVzZWRcLXRvXC1jb21iXC10aGVcLWhhaXI7Civkr5IgPCB0aGVcLXVwcGVyXC1wYXJ0XC1vZlwtdGhlXC1zaGluYm9uZTsKK+SulCA8IGFcLXlvdW5nXC1hbmRcLWZsZWV0XC1mb290ZWRcLWhvcnNlOwor5K26IDwgYVwtaG9yc2VcLXRvXC1yYWlzZVwtaXRzXC1oZWFkXC1oaWdoOwor5KuuIDwgdG9cLWJlbmRcLW9yXC1sb3dlclwtb2ZcLW9uZScnc1wtaGVhZDsKK+SrhiA8IHRoZVwtZnJvbnRcLWFuZFwtYmFja1wtb2ZcLXRoZVwtbmVjazsKK+SnkiA8IHN0ZXBzXC1sZWFkaW5nXC11cFwtdG9cLWFcLWJ1aWxkaW5nOwor5KSbIDwgY29tcG9uZW50XC1wYXJ0c1wtb2ZcLWFcLWNyb3NzXC1ib3c7Civko7kgPCB0b1wtYnJld1wtMTBcLXBlcmNlbnRcLW9mXC10aGVcLXdpbmU7Civko7UgPCB0b1wtYnJld1wtdGhlXC13aW5lXC1hXC1zZWNvbmRcLXRpbWU7Civko6wgPCB0aGVcLXNoaW55XC1jb2xvcmZ1bFwtb2ZcLXRoZVwtd2luZTsKK+iBs+eriyA8IHRvXC10b3dlclwtYWJvdmVcLVwob25cLXRvcFwtb2ZcLXN0aFwpOwor5KK+IDwgbmFtZVwtb2ZcLWFuXC1hbmNpZW50XC1zbWFsbFwtc3RhdGU7CivkoYMgPCBhXC10b29sXC1mb3JcLWJydXNoaW5nXC10aGVcLXRocmVhZDsKK+ScsiA8IG5hbWVcLW9mXC1hXC12aWxsYWdlXC1pblwtb2xkXC1jaGluYTsKK+ePree1hCA8IHRlYW1zXC1hbmRcLWdyb3Vwc1wtXChpblwtZmFjdG9yaWVzOwor5JiTIDwgdGhpY2tcLWJsb29kXC1vZlwtY2F0dGxlXC1hbmRcLWdvYXQ7Civkk78gPCBhXC1zZWNvbmRcLW5hbWVcLWZvclwtbG90dXNcLWZsb3dlcjsKK+STuSA8IHRvXC1zdHVmZlwtZnVsbFwtYW5kXC10b1wtZ3VscFwtZG93bjsKK+SNgSA8IHRoZVwtaGVtXC1vclwtYm9yZGVyXC1vZlwtYVwtZ2FybWVudDsKK+SLtCA8IHNpbGtcLWZhYnJpY3NcLXdpdGhcLW1peGVkXC1jb2xvcnM7Civki7MgPCBjbG90aFwtb3JcLXBhcGVyXC1wYXN0ZWRcLXRvZ2V0aGVyOwor5Lyv5q+NIDwgd2lmZVwtb2ZcLWZhdGhlcicnc1wtZWxkZXJcLWJyb3RoZXI7CivkiaQgPCBhXC1iYW1ib29cLXdhcmVcLWZvclwtd2FzaGluZ1wtcmljZTsKK+SJmyA8IGJhbWJvb1wtYmFza2V0XC1mb3JcLXdhc2hpbmdcLXJpY2U7CivkiZMgPCBtYXR0cmVzc1wtbWFkZVwtb2ZcLWJhbWJvb1wtc3RyaXBzOwor5IesIDwgdGhpblwtYmFtYm9vXC1sYXRoc1wta25pdHRlZFwtc2FpbDsKK+SHpyA8IHRvXC1maWxsXC1hblwtb3BlbmluZ1wtd2l0aFwtYmFtYm9vOwor5IShIDwgbm9ydGhlcm5cLW1pbm9yaXR5XC1ldGhuaWNcLWdyb3VwOwor5IO2IDwgcnVnZ2VkXC1hbmRcLXVuZXZlblwtb2ZcLXRoZVwtcm9ja3M7Civkg5ogPCBydWdnZWRcLWxhbmRcLW9mXC1zYW5kXC1hbmRcLXBlYmJsZTsKK+SDgiA8IGR1bGxcLXNvdW5kXC1vZlwtdGhlXC10b2xsaW5nXC1iZWxsOwor47yhIDwgYVwtc21hbGxcLWphclwtd2l0aFwtYVwtc21hbGxcLW1vdXRoOwor47W3IDwgdHVyYnVsZW50XC1mbG93aW5nXC1vZlwtdGhlXC13YXRlcjsKK+S4reiXpSA8IFwodHJhZGl0aW9uYWxcKVwtY2hpbmVzZVwtbWVkaWNpbmU7Civoqp7pn7PpgJroqIrpgJrpgZMgPCB2b2ljZVwtXChjb21tdW5pY2F0aW9uc1wpXC1jaGFubmVsOwor47K5IDwgdGhlXC1kcnlcLXNvaWxcLW9uXC10aGVcLXJpdmVyXC1zaWRlOwor47KdIDwgZmluZVwtaGFpclwtb2ZcLWJpcmRzXC1hbmRcLWFuaW1hbHM7Civjr4UgPCB0aGVcLWJyYW5jaGVzXC1ncm93aW5nXC1kb3dud2FyZHM7CivjroIgPCBhblwtYXBwbGlhbmNlXC11c2VkXC10b1wtbGlmdFwtZm9vZDsKK+OspCA8IHdldFwtY2xvdGhlc1wtbm90XC1jb21wbGV0ZWx5XC1kcnk7Civjqr4gPCB0b1wtY3V0XC10aGVcLWZsZXNoXC1mcm9tXC10aGVcLWJvbmU7CivjqJkgPCB0b1wtY2xhc3BcLW9yXC1ob2xkXC11bmRlclwtdGhlXC1hcm07CivjprIgPCBhXC1wYXJ0aWNsZVwtZXhwcmVzc2luZ1wtc3VycHJpc2U7CivjpYsgPCBzb3VuZFwtb2ZcLXRoZVwtYW5ndWlzaFwtb2ZcLXNvcnJvdzsKK+OkryA8IGNsZXZlclwtb3JcLXNtYXJ0XC1pblwtYVwtc21hbGxcLXdheTsKK+OklCA8IHRvXC1jb25jZWRlXC1vclwtc3VibWl0XC13aWxsaW5nbHk7Civjo4cgPCBhXC1raW5kXC1vZlwtYmVhc3RcLXdpdGhcLWxvbmdcLWhhaXI7CivjoZ4gPCBhXC1zYWNrXC11c2VkXC10b1wtZmVlZFwtdGhlXC1ob3JzZXM7CivjoKMgPCBhXC1tb3VudGFpblwtaW5cLWppYW5neGlcLXByb3ZpbmNlOwor456vIDwgdGhlXC10dXJuaW5nXC1hcmVhXC1vZlwtYVwtbW91bnRhaW47Civnj63kuLvku7sgPCBhXC10ZWFjaGVyXC1pblwtY2hhcmdlXC1vZlwtYVwtY2xhc3M7CivjnIYgPCBjb21tb25seVwta25vd25cLWFzXC1tb3RoZXJcLWluXC13dTsKK+OZmiA8IHJlZFwtY29sb3JlZFwtaGFyZFwtYW5kXC1zb2xpZFwtbXVkOwor45ieIDwgeWVsbGluZ1wtc291bmRcLW9mXC10b3dpbmdcLWFcLWJvYXQ7CivjlKkgPCBoYWlyXC1vcm5tZW50c1wtdXNlZFwtaW5cLW9sZFwtdGltZTsKK+OUgCA8IHRvXC1icmFuZFwtY3JpbWluYWxzXC1vblwtdGhlXC1mYWNlOwor5pqX6KKLIDwgY2FtZXJhXC1iYWdcLVwoZm9yXC1jaGFuZ2luZ1wtZmlsbVwpOwor5Y+v6YG45pOH5Lif5qOEIDwgZGlzY2FyZFwtZWxpZ2libGVcLVwoZnJhbWVcLXJlbGF5XCk7CivomZXmsbogPCBleGVjdXRlXC1cKGFcLWNvbmRlbW5lZFwtY3JpbWluYWxcKTsKK+aHieacieeboeaciSA8IGV2ZXJ5dGhpbmdcLVwob25lXC1jb3VsZFwtaW1hZ2luZVwpOwor5paw6a6uIDwgZnJlc2hcLVwoZXhwZXJpZW5jZVwsXC1mb29kXCxcLWV0Y1wuXCk7CivlsI7oiKrlk6EgPCBuYXZpZ2F0b3JcLVwob25cLWFcLXBsYW5lXC1vclwtYm9hdFwpOwor5Y+r6IGyIDwgeWVsbGluZ1wtXChzb3VuZFwtbWFkZVwtYnlcLXBlcnNvblwpOwor54+t5birIDwgd2l0aGRyYXdcLXRyb29wc1wtZnJvbVwtdGhlXC1mcm9udDsKK+WTgOaCvCA8IGdyaWV2ZVwtXChtb3VyblwpXC1vdmVyXC1zYicnc1wtZGVhdGg7Civnp5HmgakgPCBjb2hlblwtXCh1XC5zXC5cLWRlZmVuY2VcLXNlY3JldGFyeVwpOwor5pWX6ZmjIDwgYmVcLWRlZmVhdGVkXC1vblwtdGhlXC1iYXR0bGVmaWVsZDsKK+ecvuitsOmZoiA8IGhvdXNlXC1vZlwtcmVwcmVzZW50YXRpdmVzXC1cKHVzYVwpOwor5YyF6LOgIDwgZ3VhcmFudGVlXC10b1wtcGF5XC1jb21wZW5zYXRpb25zOwor5ZCN5qyhIDwgcG9zaXRpb25cLWluXC1hXC1yYW5raW5nXC1vZlwtbmFtZXM7Civlq4Llq4IgPCBzaXN0ZXJcLWluXC1sYXdcLVwoaHVzYmFuZCcnc1wtc2lkZVwpOwor5aWJ6KGMIDwgdG9cLXB1cnN1ZVwtXChhXC1jb3Vyc2VcLFwtYVwtcG9saWN5XCk7CivpnZLlsbHntqDmsLQgPCB2ZXJkYW50XC1oaWxsc1wtYW5kXC1ncmVlblwtd2F0ZXJzOwor5ZG85ZaaIDwgY2FsbFwtb3V0XC1cKHNvbWVvbmUnJ3NcLW5hbWVcLFwtZXRjXCk7CivwoICBIDwgdGhlXC1vcmlnaW5hbFwtZm9ybVwtZm9yXC3kuINcLXVcKzRlMDM7CivwoICAIDwgdGhlXC1zb3VuZFwtbWFkZVwtYnlcLWJyZWF0aGluZ1wtaW47CivombnmqYvmqZ/loLQgPCBob25ncWlhb1wtYWlycG9ydFwtXChpblwtc2hhbmdoYWlcKTsKK+e1seS4gOaLm+eUnyA8IG5hdGlvbmFsXC11bmlmaWVkXC1lbnRyYW5jZVwtZXhhbTsKK+ekuuWogSA8IGhvbGRcLWFcLVwocHJvdGVzdFwpXC1kZW1vbnN0cmF0aW9uOwor5p2x6YOo5pmC6ZaTIDwgXCh1XC5zXC5cKVwtZWFzdGVyblwtXChzdGFuZGFyZFwpXC10aW1lOwor55W25LqL5Lq6IDwgcGVyc29uc1wtaW52b2x2ZWRcLW9yXC1pbXBsaWNhdGVkOwor5pmC5aSn5pmC5bCPIDwgc29tZXRpbWVzXC1iaWdcLFwtc29tZXRpbWVzXC1zbWFsbDsKK+W4uOimj+mKhembu+ipsee3miA8IG9yZGluYXJ5XC1jb3BwZXJcLXRlbGVwaG9uZVwtbGluZTsKK+i/piA8IGNoYXJhY3RlclwtZm9yXC10cmFuc2xpdGVyYXRpb247CivlurUgPCBidWRkaGlzdFwtbW9uYXN0ZXJ5XC1vclwtbnVubmVyeTsKK+W6miA8IHNldmVudGhcLW9mXC10ZW5cLWN5Y2xpY2FsXC1zdGVtczsKK+i2oyA8IHdoYXRcLWF0dHJhY3RzXC1vbmUnJ3NcLWF0dGVudGlvbjsKK+eVlCA8IGJvdW5kYXJ5XC1wYXRoXC1kaXZpZGluZ1wtZmllbGRzOwor5aS+IDwgYmVcLXdlZGdlZFwtb3JcLWluc2VydGVkXC1iZXR3ZWVuOwor6L6GIDwgbnVtZXJhcnlcLWFkanVuY3RcLWZvclwtdmVoaWNsZXM7CivmgJQgPCBhXC1kaXNlYXNlXC1yZXNlbWJsaW5nXC1uZXVyb3NpczsKK+mZjCA8IGZvb3RcLXBhdGhcLWJldHdlZW5cLXJpY2VcLWZpZWxkczsKK+mqhiA8IGFcLXdoaXRlXC1ob3JzZVwtd2l0aFwtYmxhY2tcLW1hbmU7CivmpaMgPCBjcm9zc2JlYW1cLWFib3ZlXC1vclwtdW5kZXJcLWdhdGU7CivnkqcgPCBwaWVjZVwtb2ZcLWphZGVcLXdpdGhcLWhvbGVcLWluXC1pdDsKK+iGuyA8IHJhbmtcLW9kb3JcLVwob2ZcLXNoZWVwXC1vclwtZ29hdHNcKTsKK+eOkSA8IHBlYXJsXC10aGF0XC1pc1wtbm90XC1xdWl0ZVwtcm91bmQ7CivllKIgPCBmbHV0ZVwtbGlrZVwtbXVzaWNhbFwtaW5zdHJ1bWVudDsKK+algiA8IGFcLXJhZnRcLlwtdG9cLWhld1wuXC10b1wtZmVsbFwtdHJlZXM7CivnipIgPCBlbnRlcnRhaW5cLXZpY3RvcmlvdXNcLXNvbGRpZXJzOwor55+NIDwgbG9va1wtYWJvdXRcLWluXC1mcmlnaHRcLW9yXC1hbGFybTsKK+aTpCA8IHRvXC1ibG93XC10aGVcLW5vc2VcLXdpdGhcLWZpbmdlcnM7CivoiqEgPCBwbGFudFwtYWxsaWVkXC10b1wtdGhlXC13YXRlcmxpbHk7CivnsbwgPCBub25cLWdsdXRpbm91c1wtbG9uZ1wtZ3JhaW5cLXJpY2U7CivmoaEgPCBiZW50XC1vclwtdHdpc3RlZFwtcGllY2VcLW9mXC13b29kOwor6bu7IDwgc3BlY2lhbFwtcGF0dGVyblwtb2ZcLWVtYnJvaWRlcnk7CivltZ0gPCBnb3Vsb3VcLW1vdW50YWluXC1wZWFrXC1pblwtaHVuYW47Civlnq0gPCBjaGFyYWN0ZXJcLXVzZWRcLWluXC1wbGFjZVwtbmFtZXM7CivnoZYgPCBcPGFyY2hcPlwtdG93blwtaW5cLWhlYmVpXC1wcm92aW5jZTsKK+mCoSA8IG5hbWVcLW9mXC1hXC1kaXN0cmljdFwtaW5cLXNpY2h1YW47CivorqAgPCBzaW1wbGlmaWVkXC1rYW5neGlcLXJhZGljYWxcLTE0OTsKK+WZuyA8IGNoYXJhY3RlclwtdXNlZFwtaW5cLXRyYW5zbGF0aW9uOwor55asIDwgc2Nyb2Z1bG91c1wtbHVtcHNcLW9yXC1zd2VsbGluZ3M7CivolJ8gPCBmcmFtZVwtb25cLXdoaWNoXC1zaWxrd29ybXNcLXNwaW47CivlnqcgPCB2YXJpYWJsZVwtdW5pdFwtb2ZcLWxhbmRcLW1lYXN1cmU7CivprI8gPCBhXC1jb2lmZnVyZVwtb25cLXRvcFwtb2ZcLXRoZVwtaGVhZDsKK+etmCA8IFwoYVwtbWVhc3VyZVwtb2ZcLXdpZHRoXC1vZlwtY2xvdGhcKTsKK+e8kSA8IGNvcmRcLWJpbmRpbmdcLW9uXC1oaWx0XC1vZlwtc3dvcmQ7CivnsJYgPCBiYW1ib29cLXRyYXBcLWZvclwtY2F0Y2hpbmdcLWZpc2g7CivluosgPCBhXC1jdXBib2FyZFwtb3JcLXBhbnRyeVwtdG9cLXN0b3JlOwor55SNIDwgcmFmdGVyc1wtc3VwcG9ydGluZ1wtcm9vZlwtdGlsZXM7CivlkIPliIAgPCBwZW5ldHJhdGlvblwtb2ZcLWFcLWN1dHRpbmdcLXRvb2w7CivlkITkvY0gPCBldmVyeWJvZHlcLVwoYVwtdGVybVwtb2ZcLWFkZHJlc3NcKTsKK+mfk+WckyA8IGtvcmVhblwtd29uXC1cKHVuaXRcLW9mXC1jdXJyZW5jeVwpOwor5LiN6L6t6ICM5YilIDwgbGVhdmVcLXdpdGhvdXRcLXNheWluZ1wtZ29vZFwtYnllOwor55m+6IG95LiN5Y6tIDwgd29ydGhcLWhlYXJpbmdcLWFcLWh1bmRyZWRcLXRpbWVzOwor5L2O6ZqO6Kqe6KiAIDwgbG93XC1sZXZlbFwtXChjb21wdXRlclwpXC1sYW5ndWFnZTsKK+S4jei2s+eCuuiokyA8IG5vdFwtdG9cLWJlXC10YWtlblwtYXNcLWFuXC1leGFtcGxlOwor5aCx56S+IDwgZ2VuZXJhbFwtb2ZmaWNlXC1vZlwtYVwtbmV3c3BhcGVyOwor55m86LehIDwgdG9cLXJpc2VcLXRvXC1wb3dlclwtYW5kXC1wb3NpdGlvbjsKK+aUr+aPtCA8IHByb3ZpZGVcLWFzc2lzdGFuY2VcLW9yXC1iYWNraW5nOwor6KeA5risIDwgXChzY2llbnRpZmljXCxcLWV0Y1wpXC1vYnNlcnZhdGlvbjsKK+mBleW/gyA8IGFnYWluc3RcLW9uZXNcLXdpbGxcLW9yXC1mZWVsaW5nczsKK+mnuSA8IGJsYWNrXC1ob3JzZVwtd2l0aFwtYVwtd2hpdGVcLWZhY2U7CivppY4gPCB3aW5lXC1hbmRcLWZvb2RcLWVhdGVuXC13aXRoXC13aW5lOwor5ZCM5q2l5pW45L2N6ZqO5bGkIDwgc3luY2hyb25vdXNcLWRpZ2l0YWxcLWhpZXJhcmNoeTsKK+aLvOmfsyA8IHBpbnlpblwtXChjaGluZXNlXC1yb21hbml6YXRpb25cKTsKK+Wkp+WQueWkp+aTgiA8IG1ha2VcLWFuXC1leGhpYml0aW9uXC1vZlwtb25lc2VsZjsKK+mHhCA8IHdpbmVcLWJyZXdcLWZvclwtdGhlXC1zZWNvbmRcLXRpbWU7Civph4EgPCBzbWVhclwtd2l0aFwtYmxvb2RcLWluXC1zYWNyaWZpY2U7CivlooPlpJYgPCBvdXRzaWRlXC1cKGFcLWNvdW50cnknJ3NcKVwtYm9yZGVyczsKK+S4iua1t+aIsuWKh+WtuOmZoiA8IHNoYW5naGFpXC10aGVhdHJpY2FsXC1pbnN0aXR1dGU7Civov6cgPCBhXC1jaGluZXNlXC1mYW1pbHlcLW5hbWVcLWFycmFuZ2U7CivovZggPCB0ZWFyXC1hc3VuZGVyXC1iZXR3ZWVuXC1jaGFyaW90czsKK+i8mSA8IHNpZGVzXC1vZlwtY2hhcmlvdFwtd2VyZVwtd2VhcG9uczsKK+aLjOmdoiA8IG5vb2RsZXNcLXNlcnZlZFwtd2l0aFwtc295XC1zYXVjZTsKK+ebtOaOpSA8IGRpcmVjdFwtXChvcHBvc2l0ZVwtb2ZcLWluZGlyZWN0XCk7CivoqYAgPCBnYXJydWxvdXNcLXRvXC13aGlzcGVyXC5cLXRvXC1qb2tlOwor6Ki5IDwgdG9cLWJlZ3VpbGVcLXdpdGhcLWZhbHNlXC1zdG9yaWVzOwor6JeKIDwgYVwta2luZFwtb2ZcLWJlYW5cLXdpdGhcLWZsYXRcLXBvZHM7CivlronkuYvoi6XntKAgPCBiZWFyXC1oYXJkc2hpcFwtd2l0aFwtZXF1YW5pbWl0eTsKK+iIoCA8IGxvbmdcLW5hcnJvd1wta25pZmVcLXNoYXBlZFwtYm9hdDsKK+mPoemgrSA8IGNhbWVyYVwtc2hvdFwtXChpblwtYVwtbW92aWVcLFwtZXRjXCk7Civnv6MgPCBmZWF0aGVyc1wtdXNlZFwtZGVjb3JhdGVcLWNvZmZpbjsKK+iOq+S4jSA8IHRoZXJlXC1pc1wtbm9cLW9uZVwtXCh3aG9cLWRvZXNuJyd0XCk7CivpgIHkurogPCB0b1wtc2VlXC1cKG9yXC13YWxrXClcLXNvbWVvbmVcLWhvbWU7Civnmb3mlocgPCB0aGVcLXRleHRcLW9mXC1hblwtYW5ub3RhdGVkXC1ib29rOwor57iTIDwgb3JhbmdlXC1vclwtcmVkZGlzaFwteWVsbG93XC1zaWxrOwor6KW/5ZOI5Yqq5YWLIDwgXChraW5nXClcLXNpaGFub3VrXC1cKG9mXC1jYW1ib2RpYVwpOwor5bCH6aCYIDwgaGlnaFwtcmFua2luZ1wtbWlsaXRhcnlcLW9mZmljZXI7CivmrrrkurrmoYjku7YgPCBcKGNhc2VcLW9mXCxcLWluY2lkZW50XC1vZlwpXC1tdXJkZXI7Civns48gPCByaWNlXC1ncml0c1wtbGVmdFwtYWZ0ZXJcLWh1bGxpbmc7Civnr5ggPCBhXC11dGVuc2lsXC11c2VkXC10b1wtZmlsdGVyXC13aW5lOwor57SF57ag54eIIDwgXChyZWRcLWFuZFwtZ3JlZW5cKVwtdHJhZmZpY1wtbGlnaHQ7CivmjozmrIogPCB3aWVsZFwtXChwb2xpdGljYWxcLFwtZXRjXC5cKVwtcG93ZXI7Civkv4PpgLIgPCB0b1wtcHJvbW90ZVwtXChhblwtaWRlYVwtb3JcLWNhdXNlXCk7Civnn7AgPCBhcnJvd1wtd2l0aFwtYXR0YWNoZWRcLXNpbGtcLWNvcmQ7CivlhazlrokgPCBcKG1pbmlzdHJ5XC1vZlwpXC1wdWJsaWNcLXNlY3VyaXR5Owor546DIDwgYVwtbGFyZ2VcLWFwZVwtZm91bmRcLWluXC13XC5cLWNoaW5hOwor54yHIDwgdGhlXC1zY3JlYW1cLW9yXC1yb2FyXC1vZlwtYVwtdGlnZXI7CivnibggPCB0aGVcLWZlbWFsZVwtb2ZcLWNlcnRhaW5cLWFuaW1hbHM7Civog4zpgZPogIzpprMgPCBydW5cLWluXC10aGVcLW9wcG9zaXRlXC1kaXJlY3Rpb247Civmu5kgPCB3YXRlcnNcLWNvbnZlcmdpbmdcLXRvXC1vbmVcLXNwb3Q7CivlgrPovLjmjqfliLbljZTlrpogPCB0cmFuc21pc3Npb25cLWNvbnRyb2xcLXByb3RvY29sOwor55eF5qC5IDwgYW5cLWluY29tcGxldGVseVwtY3VyZWRcLWlsbG5lc3M7Civoo5zloLEgPCBtYWtlXC1hXC1yZXBvcnRcLWFmdGVyXC10aGVcLWV2ZW50Owor6YeN6KSH56+AIDwgcmVwZWF0ZWRcLXNlZ21lbnRcLVwobmV0d29ya2luZ1wpOwor5qSKIDwgdG9cLWZpdFwtYVwtaGFuZGxlXC1pbnRvXC1hXC1zb2NrZXQ7CivkuI3lkI3kuIDmlocgPCB3aXRob3V0XC1hXC1wZW5ueVwtdG9cLW9uZScnc1wtbmFtZTsKK+S4jeeEoeWwj+ijnCA8IG5vdFwtYmVcLXdpdGhvdXRcLXNvbWVcLWFkdmFudGFnZTsKK+WwjeiHuiA8IFwocG9saWN5XCxcLWV0Y1wuXClcLXRvd2FyZHNcLXRhaXdhbjsKK+adv+m8kyA8IGFcLXNtYWxsXC1kcnVtXC1mb3JcLW1hcmtpbmdcLXRpbWU7CivmmpAgPCB0aGVcLWJyaWdodFwtc2hpbmluZ1wtb2ZcLXRoZVwtc3VuOwor5pizIDwgdGhlXC1kZWNsaW5pbmdcLXN1blwtaW5cLXRoZVwtd2VzdDsKK+eJueWIpeihjOaUv+WNgCA8IHNwZWNpYWxcLWFkbWluaXN0cmF0aXZlXC1yZWdpb247CivotIXov7AgPCB0b1wtc2F5XC1tb3JlXC10aGFuXC1pc1wtbmVjZXNzYXJ5Owor5o2sIDwgcHJlc3NcLWRvd25cLWhlYXZpbHlcLXdpdGhcLWhhbmRzOwor5oqUIDwgdGFrZVwtb3JcLWhvbGRcLXVwXC1pblwtYm90aFwtaGFuZHM7Civlr6bogpggPCBmdWxsXC1hcm1cLVwobWV0aG9kXC1vZlwtcGFpbnRpbmdcKTsKK+a3mOmHkSA8IHBhbm5pbmdcLVwoZm9yXC1wcmVjaW91c1wtbWV0YWxzXCk7CivltL4gPCBwbGFjZVwtbmFtZVwtaW5cLXNoYW54aVwtcHJvdmluY2U7Civls6sgPCBtb3VudGFpblwtaW5cLXNoYW5kb25nXC1wcm92aW5jZTsKK+WnhSA8IHdvbWFuXC1hdFwtdGltZVwtb2ZcLW1lbnN0cnVhdGlvbjsKK+WjvCA8IHBhbGFjZVwtY29ycmlkb3JcLW9yXC1wYXNzYWdld2F5Owor5aONIDwgbW9hdFwtYXJvdW5kXC1hXC1jaXR5XC5cLWFcLWNoYW5uZWw7CivliqDlvLfnrqHliLYgPCB0b1wtdGlnaHRlblwtY29udHJvbFwtXChvdmVyXC1zdGhcKTsKK+WVqSA8IHBhcnRpY2xlXC1pbXBseWluZ1wtcHJvYmFiaWxpdHk7Civlj5AgPCB0b1wtcHJpY2tcLWFcLWRvZ1wtdG9cLW1ha2VcLWhpbVwtZ287CivljZAgPCBzd2FzdGlrYVwtZm91cnRoXC1vZlwtYXVzcGljaW91czsKK+aIiOeIviA8IFwoYWxcKVwtZ29yZVwtXCh1c1wtdmljZVwtcHJlc2lkZW50XCk7CivktpUgPCBpcnJlZ3VsYXJcLWFuZFwtcHJvbWluZW50XC10ZWV0aDsKK+S1mCA8IGRvc2VuJyd0XC10XC1zdGlja1wtdG9cLWVhY2hcLW90aGVyOwor5LK1IDwgYVwtZ2VuZXJhbFwtbmFtZVwtb2ZcLXNtYWxsXC1iaXJkczsKK+S6guiqqiA8IHRvXC1tYWtlXC1pcnJlc3BvbnNpYmxlXC1yZW1hcmtzOwor5K+GIDwgc21hbGxcLWFuZFwtdGhpblwtcGllY2VcLW9mXC1ib25lczsKK+S6uuawkeaXpeWgsSA8IHJlbm1pblwtcmliYW9cLVwocGVvcGxlJydzXC1kYWlseVwpOwor5KuyIDwgdGhpblwtYW5kXC1zaWNrbHlcLWluXC1hcHBlYXJhbmNlOwor5KukIDwgYmV0d2VlblwtdGhlXC1leWVicm93c1wtYW5kXC1leWVzOwor5KuhIDwgYVwtbG9uZ1wtc2hhcGVcLW9mXC1oZWFkXC1hbmRcLWZhY2U7Civkq4sgPCBmZW1hbGVcLWF0dGVuZGFudHNcLW9yXC1zZXJ2YW50czsKK+mWi+Wni+S7peWJjSA8IGJlZm9yZVwtdGhlXC1iZWdpbm5pbmdcLVwob2ZcLXN0aFwpOwor5KeQIDwgYVwtbW91bnRhaW5cLWluXC1zaGFueGlcLXByb3ZpbmNlOwor5KWjIDwgYW5cLWluc3RydW1lbnRcLWZvclwtYm9yaW5nXC13b29kOwor5KWJIDwgdGhlXC1jdXJ2ZWRcLWlyb25cLXBhcnRcLW9mXC1hXC1ob2U7CivkpJIgPCB3aW5lXC1tYWRlXC1mcm9tXC1nbHV0aW5vdXNcLXJpY2U7CivkpI0gPCByb3R0ZW5cLXBhc3RlXC1vclwtc295YmVhblwtc2F1Y2U7CivkuI3orZjlpKfpq5QgPCBmYWlsXC10b1wtc2VlXC10aGVcLWxhcmdlclwtaXNzdWVzOwor5KC9IDwgaGVpZ2h0XC1vclwtc3RhdHVyZVwtb2ZcLWFcLXBlcnNvbjsKK+SgsSA8IHRvXC13YWxrXC1zbG93bHlcLWFuZFwtY2F1dGlvdXNseTsKK+SfpyA8IHNvdW5kXC1vZlwtdHJlYWRpbmdcLW9yXC1zdGVwcGluZzsKK+SehyA8IGdpZnRzXC10b1wtc3VwZXJpb3JzXC1vclwtZnJpZW5kczsKK+SdvSA8IG5hbWVcLW9mXC1hXC1wZXJzb25cLWluXC1vbGRcLWNoaW5hOwor5YW15bel5bugIDwgbXVuaXRpb25zXC1vclwtb3JkbmFuY2VcLWZhY3Rvcnk7CivknZkgPCBhXC1raW5kXC1vZlwtYW5pbWFsXC1saWtlXC1hXC10aWdlcjsKK+SciCA8IHRvXC1zcGVha1wtb25cLWJlaGFsZlwtb2ZcLWFub3RoZXI7CivkmLMgPCBhXC1nYXJtZW50XC1vZlwtc2luZ2xlXC10aGlja25lc3M7Civkj7wgPCB3aGF0XC1pc1wtbGVmdFwtb3Zlclwtb2ZcLXRoZVwtZm9vZDsKK+S4jeaJk+iHquaLmyA8IGNvbmZlc3NcLXdpdGhvdXRcLWJlaW5nXC1wcmVzc2VkOwor5I6iIDwgdG9cLW1lYXN1cmVcLWJ5XC1waW50c1wtYW5kXC1wZWNrczsKK+SOkSA8IGZseWluZ1wtb3ZlclwtdGhlXC13YXRlclwtc3VyZmFjZTsKK+SNriA8IHlvdW5nXC1nb2F0XC11bmRlclwtb25lXC15ZWFyXC1vbGQ7CivkjYIgPCB0b29sc1wtdG9cLWRyYXdcLXdhdGVyXC1vclwtbGlxdWlkOwor5Iy/IDwgdGhlXC1icmVhZHRoXC1vZlwtY2xvdGhcLW9yXC1wYXBlcjsKK+SMlyA8IHRoZVwtbGVmdFwtb3Zlclwtb2ZcLWRyYXdpbmdcLXNpbGs7CivkjIggPCB0b1wtZ2V0XC1zb21ldGhpbmdcLXdpdGhcLWFcLWxhc3NvOwor5LiA6IiJ5YWp5b6XIDwga2lsbFwtdHdvXC1iaXJkc1wtd2l0aFwtb25lXC1zdG9uZTsKK+S4jei7jCA8IGFnYWluc3RcLXRoZVwtbGF3XC1vclwtZGlzY2lwbGluZTsKK+SJpSA8IGFcLXNtYWxsXC1iYXNrZXRcLWZvclwtY2hvcHN0aWNrczsKK+WNiui6q+WDjyA8IGhhbGZcLWxlbmd0aFwtcGhvdG9cLW9yXC1wb3J0cmFpdDsKK+SGuiA8IHdoaXJsaW5nXC1vZlwtdGhlXC1mbG93aW5nXC13YXRlcjsKK+SFoiA8IG1hdHVyZVwtb3JcLXJpcGVuXC1vZlwtdGhlXC1ncmFpbnM7Civkv53llYYgPCBwcmVzZXJ2YXRpb25cLW9mXC1zb2lsXC1tb2lzdHVyZTsKK+O/tiA8IHRoZVwtc2lkZXNcLW9mXC1hXC1zaG9lXC1vclwtZ3V0dGVyOwor472wIDwgY2FydmVkXC13aW5kb3dcLWZyYW1lXC1vblwtYVwtZG9vcjsKK+S9nOaIsCA8IGNvbmR1Y3RcLVwobWlsaXRhcnlcLW9wZXJhdGlvbnNcKTsKK+O5giA8IHVudGFtZWRcLWFuZFwtaW5kb2NpbGl0eVwtY2F0dGxlOwor47SEIDwgdGhlXC13YXRlclwtZmxvd2luZ1wtaW5cLWFcLXR1cm5lZDsKK+S4luihjCA8IFxbYWJicmV2aWF0aW9uXC1mb3JcXVwtd29ybGRcLWJhbms7CivjsIkgPCB0aGVcLWhhemVsXC1udXRcLW9yXC1maWxiZXJ0XC10cmVlOwor5Lit6I+vIDwgY2hpbmFcLVwoYWx0ZXJuYXRlXC1mb3JtYWxcLW5hbWVcKTsKK+OtnyA8IHRvcnR1cmVcLXVzZWRcLWluXC1hbmNpZW50XC10aW1lczsKK+OrkCA8IGRpc3RhbnRcLWFuZFwtaW5kaXN0aW5ndWlzaGFibGU7CivjobsgPCBuYW1lXC1vZlwtYVwtc21hbGxcLWFuY2llbnRcLXN0YXRlOwor5L615YWlIDwgdG9cLW1ha2VcLVwobWlsaXRhcnlcKVwtaW5jdXJzaW9uczsKK+eQg+aqryA8IHRhYmxlXC1cKGZvclwtZ2FtZXNcLXVzaW5nXC1iYWxsc1wpOwor45uQIDwgd2lmZVwtb2ZcLW9uZScnc1wtZWxkZXInJ3NcLWJyb3RoZXI7CivjmoYgPCB0b1wtZG9cLXNvbWV0aGluZ1wtaW5cLWFuXC1vbGRcLXdheTsKK+OWnyA8IHRvXC1kZWxpdmVyXC1vdmVyXC10b1wtcGVyc29uYWxseTsKK+S4i+iHuiA8IHN0ZXBcLWRvd25cLVwoZnJvbVwtb2ZmaWNlXCxcLWV0Y1wuXCk7CivosqrmsaEgPCBcKHBvbGl0aWNhbFwsXC1tb3JhbFwpXC1jb3JydXB0aW9uOwor5Lit57SaIDwgbWlkZGxlXC1sZXZlbFwtXChpblwtYVwtaGllcmFyY2h5XCk7CivmnInnmoQgPCBcKHRoZXJlXC1hcmVcKVwtc29tZVwtXCh3aG9cLWFyZVwuXC5cLlwpOwor6JOL6aOvIDwgcmljZVwtd2l0aFwtbWVhdFwtYW5kXC12ZWdpdGFibGVzOwor5LiN6YCf5LmL5a6iIDwgdW5pbnZpdGVkXC1vclwtdW5leHBlY3RlZFwtZ3Vlc3Q7CivkuIvnj60gPCB0b1wtY29tZVwtb3JcLWdvXC1vclwtZ2V0XC1vZmZcLXdvcms7Civnmbzpm7vph48gPCBcKGdlbmVyYXRlZFwpXC1lbGVjdHJpY2FsXC1lbmVyZ3k7CivkuI3lvpfopoHpoJggPCBmYWlsXC10b1wtZ3Jhc3BcLXRoZVwtbWFpblwtcG9pbnRzOwor5YyF6Yq3IDwgaGF2ZVwtZXhjbHVzaXZlXC1zZWxsaW5nXC1yaWdodHM7CivpgLLooYzoqr/mn6UgPCB0b1wtY2FycnlcLW91dFwtYW5cLWludmVzdGlnYXRpb247CivorpPnkIMgPCB0b1wtY29uY2VkZVwtcG9pbnRzXC1cKGluXC1hXC1nYW1lXCk7Civmm7jmiL8gPCBzdHVkeVwtXChpXC5lXC5cLXRoZVwta2luZFwtb2ZcLXJvb21cKTsKK+mAmueUqOizh+a6kOitmOWIpeiZnyA8IHVuaXZlcnNhbFwtcmVzb3VyY2VcLWlkZW50aWZpZXI7Civoqo3orZggPCBiZVwtYWNxdWFpbnRlZFwtd2l0aFwtXChhXC1wZXJzb25cKTsKK+WNu+eXhSA8IHRvXC1wcmV2ZW50XC1vclwtdHJlYXRcLWFcLWRpc2Vhc2U7CivpgbLpgbIgPCBcKGJlXClcLWxhdGVcLVwod2l0aFwtYVwtdGFza1wsXC1ldGNcLlwpOwor5aSn6KGX5bCP5be3IDwgbGFyZ2VcLXN0cmVldHNcLWFuZFwtc21hbGxcLWxhbmVzOwor8KCAhSA8IGFuXC1hbHRlcm5hdGVcLWZvcm1cLW9mXC11XCs0ZWE1XC3kuqU7Civlvrfnj60gPCBkdXJiYW5cLVwoY2l0eVwtaW5cLXNvdXRoXC1hZnJpY2FcKTsKK+S/neWuieaXjyA8IHRoZVwtYmFvYW5cLVwocGFvYW5cKVwtbmF0aW9uYWxpdHk7Civmk7rovKogPCBiYWxhbmNlXC1cKG9mXC1hXC13YXRjaFwtb3JcLWNsb2NrXCk7Civmk7roqK0gPCBmdXJuaXNoXC1hbmRcLWRlY29yYXRlXC1cKGFcLXJvb21cKTsKK+axn+a+pOawkSA8IGppYW5nXC16ZW1pblwtXChjaGluZXNlXC1wcmVtaWVyXCk7CivnhrHnt5ogPCBob3RsaW5lXC1cKGNvbW11bmljYXRpb25zXC1saW5rXCk7Civms5XliLYgPCBsZWdhbFwtc3lzdGVtXC1hbmRcLWluc3RpdHV0aW9uczsKK+S7tiA8IG51bWVyYXJ5XC1hZGp1bmN0XC1mb3JcLWFydGljbGU7CivlkJcgPCBmaW5hbFwtaW50ZXJyb2dhdGl2ZVwtcGFydGljbGU7Civpur0gPCBpbnRlcnJvZ2F0aXZlXC1maW5hbFwtcGFydGljbGU7Civnn6MgPCBwYXJ0aWNsZVwtb2ZcLWNvbXBsZXRlZFwtYWN0aW9uOwor5LmSIDwgdXNlZFwtd2l0aFwtcG9uZ1wtZm9yXC1waW5nXC1wb25nOwor5LmTIDwgdXNlZFwtd2l0aFwtcGluZ1wtZm9yXC1waW5nXC1wb25nOwor5ZKaIDwgdXNlZFwtYXNcLWRlc2NyaXB0aW9uXC1vZlwtc291bmQ7CivnkIUgPCBhXC12YXJpZXR5XC1vZlwtd2hpdGVcLWNhcm5lbGlhbjsKK+WtsCA8IHdob1w/XC13aGljaFw/XC13aGF0XD9cLXdoaWNoXC1vbmVcPzsKK+aIiiA8IGZpZnRoXC1vZlwtdGVuXC1jZWxlc3RpYWxcLXN0ZW1zOwor5riyIDwgYWRkXC1yZXBlYXRlZFwtd2FzaGVzXC1vZlwtY29sb3I7CivlkqsgPCBmb290XC1tZWFzdXJlXC1vZlwtemhvdVwtZHluYXN0eTsKK+mltyA8IHJhdGlvbnNcLWFuZFwtcGF5XC1mb3JcLXNvbGRpZXJzOwor5rG2IDwgYVwtcml2ZXJcLWluXC1zaGFuZG9uZ1wtcHJvdmluY2U7Civlj4EgPCBiYW5rXC1mb3JtXC1vZlwtbnVtZXJhbFwtJyd0aHJlZScnOwor5aOsIDwgbmludGhcLW9mXC10ZW5cLWNlbGVzdGlhbFwtc3RlbXM7Civmn6kgPCBjb2ZmaW5cLXdoaWNoXC1jb250YWluc1wtY29ycHNlOwor5qGgIDwgdGhlXC1mb3JraW5nXC1icmFuY2hcLW9mXC1hXC10cmVlOwor55SPIDwgYVwtc3F1YXRcLWphclwtZm9yXC1ob2xkaW5nXC13aW5lOwor56yeIDwgYmFtYm9vXC1yb2RcLXVzZWRcLWZvclwtYmVhdGluZ3M7CivpmJcgPCBhXC1wbGFjZVwtaW5cLXhpbmppYW5nXC1wcm92aW5jZTsKK+mTiSA8IGRldmljZVwtZm9yXC1jYXJyeWluZ1wtYVwtdHJpcG9kOwor6KelIDwgYVwtY3VwXC1tYWRlXC1vZlwtaG9yblwtb2JzdGluYXRlOwor6KOjIDwgZHJhd1wtb25lJydzXC1oYW5kc1wtaW50b1wtc2xlZXZlOwor5bSDIDwgbW91bnRhaW5cLWluXC1zaWNodWFuXC1wcm92aW5jZTsKK+e9mCA8IHNjcmVlblwtdXNlZFwtaW5cLWFuY2llbnRcLXRpbWVzOwor5rCHIDwgdGhpY2tcLXJvdWdoXC1zZXJnZVwtZnJvbVwtdGliZXQ7Civln7QgPCBzb2lsXC13aXRoXC1sYXJnZVwtY2xheVwtY29udGVudDsKK+aYtCA8IG9uZVwtb2ZcLXRoZVwtMjhcLWNvbnN0ZWxsYXRpb25zOwor6I+5IDwgc2FsdGVkXC1vclwtcGlja2xlZFwtdmVnZXRhYmxlczsKK+WQhOWkp+i7jeWNgCA8IFwidGhlXC1ncmVhdGVyXC1taWxpdGFyeVwtYXJlYXNcIjsKK+awtOW5syA8IGxldmVsXC1cKG9mXC1hY2hpZXZlbWVudFwsXC1ldGNcLlwpOwor5aSr5qyKIDwgYXV0aG9yaXR5XC1vdmVyXC10aGVcLWhvdXNlaG9sZDsKK+WNsOWwvCA8IFwoYWJicmV2aWF0aW9uXC1mb3JcKVwtaW5kb25lc2lhOwor6K6K5YO5IDwgYXBwcmFpc2VcLWF0XC10aGVcLWN1cnJlbnRcLXJhdGU7CivlubTlpJzpo68gPCBuZXdcLXllYXInJ3NcLWV2ZVwtZmFtaWx5XC1kaW5uZXI7CivlprnlpKsgPCBicm90aGVyXC1pblwtbGF3XC1cKHdpZmUnJ3NcLXNpZGVcKTsKK+mAsuiAjCA8IGFuZFwtdGhlblwtXCh3aGF0XC1mb2xsb3dzXC1uZXh0XCk7CivmnY7nmbvovJ0gPCBsZWVcLXRlbmdcLWh1aVwtXCh0YWl3YW5cLWxlYWRlclwpOwor6Zmj57eaIDwgYVwtZnJvbnRcLVwoaWVcLFwtbWlsaXRhbnRcLWdyb3VwXCk7CivlkbznsbLnvo7lnIsgPCB0b1wtY2FsbFwtb25cLXRoZVwtdW5pdGVkXC1zdGF0ZXM7CivlgrPntbHkuK3lnIvphqvol6UgPCBjaGluZXNlXC10cmFkaXRpb25hbFwtbWVkaWNpbmU7CivmrbLmnIggPCB0aGVcLXllYXJzXC1vZlwtYVwtcGVyc29uJydzXC1saWZlOwor6LGQ6KGj6Laz6aOfIDwgaGF2ZVwtYW1wbGVcLWZvb2RcLWFuZFwtY2xvdGhpbmc7CivkuI3nn6Xlpb3mrbkgPCBub3RcLWtub3dcLXdoYXQnJ3NcLWdvb2RcLWZvclwtb25lOwor5q245bGsIDwgYmVcLXVuZGVyXC10aGVcLWp1cmlzZGljdGlvblwtb2Y7CivlnKjph44gPCBiZVwtb3V0XC1vZlwtXChwb2xpdGljYWxcKVwtb2ZmaWNlOwor5bug5oi/IDwgYVwtYnVpbGRpbmdcLXVzZWRcLWFzXC1hXC1mYWN0b3J5Owor5Yik5rG6IDwganVkZ21lbnRcLVwoYnlcLWFcLWNvdXJ0XC1vZlwtbGF3XCk7Civlm7Dpm6MgPCBcKGZpbmFuY2lhbFwsXC1ldGNcLlwpXC1kaWZmaWN1bHR5Owor6bWtIDwgYVwtc21hbGxcLWJpcmRcLXdpdGhcLWJsYWNrXC1uZWNrOwor5aSn6Ieq54S2IDwgbmF0dXJlXC1cKGFzXC1pblwtbW90aGVyXC1uYXR1cmVcKTsKK+e2sueuoeaOpeWPoyA8IG5ldHdvcmtcLW1hbmFnZW1lbnRcLWludGVyZmFjZTsKK+makiA8IHRoZVwtYXBwZWFyYW5jZVwtb2ZcLWFcLW1vdW50YWluOwor5o6b6JmfIDwgdG9cLXJlZ2lzdGVyXC1cKGFcLWxldHRlclwsXC1ldGNcLlwpOwor6KOc6IuXIDwgZmlsbFwtdGhlXC1nYXBzXC13aXRoXC1zZWVkbGluZ3M7CivmoLnmk5rkuIrooaggPCBhY2NvcmRpbmdcLXRvXC10aGVcLWFib3ZlXC10YWJsZTsKK+atpuWKmyA8IFwobWFrZVwtdXNlXC1vZlwpXC1taWxpdGFyeVwtZm9yY2U7CivmlL7lgYcgPCB0b1wtaGF2ZVwtYVwtaG9saWR5XC1vclwtdmFjYXRpb247CivphoEgPCBhXC1raW5kXC1vZlwtZ3JlZW5cLWNvbG9yZWRcLXdpbmU7CivoiInph40gPCBcKHRoZVwtc3BvcnRcLW9mXClcLXdlaWdodGxpZnRpbmc7Civpgr8gPCBhXC1zdGF0ZVwtaW5cLXNoYW5kb25nXC1wcm92aW5jZTsKK+i9liA8IGZyYW1ld29ya1wtb2ZcLWxhdHRpY2VcLW9uXC1jYXJ0Owor5Zq06KmeIDwgXChjcml0aWNpemVcLFwtZXRjXC5cKVwtZm9yY2VmdWxseTsKK+intSA8IGFcLWN1cFwtbWFkZVwtb2ZcLWNvcm5cLW9ic3RpbmF0ZTsKK+iPr+ebm+mgk+aZguWgsSA8IHdhc2hpbmd0b25cLXRpbWVzXC1cKG5ld3NwYXBlclwpOwor5aKD5YWnIDwgd2l0aGluXC1cKGFcLWNvdW50cnknJ3NcKVwtYm9yZGVyczsKK+iPr+S6uiA8IGV0aG5pY1wtY2hpbmVzZVwtcGVyc29uXHxwZW9wbGU7CivmqYvmnKwgPCBcKGphcGFuZXNlXC1zdXJuYW1lXClcLWhhc2hpbW90bzsKK+WcsOeariA8IGxvdFwsXC1zZWN0aW9uXC1vZlwtbGFuZFwsXC1ncm91bmQ7Civnq4vmlrnnsbMgPCBjdWJpY1wtbWV0ZXJcLVwodW5pdFwtb2ZcLXZvbHVtZVwpOwor6L2J5qmfIDwgXCh0YWtlXC1hXClcLXR1cm5cLWZvclwtdGhlXC1iZXR0ZXI7Civlm7rlrpromZvmk6zpgKPmjqUgPCBwZXJtYW5lbnRcLXZpcnR1YWxcLWNvbm5lY3Rpb247CivluLjlp5QgPCBtZW1iZXJcLW9mXC1zdGFuZGluZ1wtY29tbWl0dGVlOwor5ZCD5LiN5raIIDwgYmVcLXVuYWJsZVwtdG9cLXN0YW5kXC1cKGV4ZXJ0aW9uOwor5oqV56Wo56uZIDwgcG9sbGluZ1wtc3RhdGlvblwtXChmb3JcLWFcLXZvdGVcKTsKK+iAhyA8IHdyaW5rbGVkXC1mYWNlXC1vZlwtdGhlXC1lbGRlcmx5Owor5760IDwgcmFua1wtb2RvdXJcLW9mXC1zaGVlcFwtb3JcLWdvYXRzOwor5b6X56Wo546HIDwgcGVyY2VudGFnZVwtb2ZcLXZvdGVzXC1vYnRhaW5lZDsKK+e1gyA8IHN0cmluZ1wtb25cLW11c2ljYWxcLWluc3RydW1lbnQ7CivlnIvpmLLliKnnm4ogPCBcKG5hdGlvbmFsXClcLWRlZmVuY2VcLWludGVyZXN0czsKK+mWi+aUvuezu+e1seS6kumAoyA8IG9wZW5cLXN5c3RlbXNcLWludGVyY29ubmVjdGlvbjsKK+etuyA8IHBsYWNlXC1uYW1lXC1pblwtaHVuYW5cLXByb3ZpbmNlOwor56uaIDwgc3RhbmRcLWFuZFwtd2FpdFwtZm9yXC1sb25nXC10aW1lOwor6LW36aObIDwgdG9cLXRha2VcLW9mZlwtXChpblwtYW5cLWFpcnBsYW5lXCk7CivplovluZUgPCB0b1wtb3BlblwtXChhXC1jb25mZXJlbmNlXCxcLWVcLmdcLlwpOwor5omT6YedIDwgdG9cLWdpdmVcLW9yXC1oYXZlXC1hblwtaW5qZWN0aW9uOwor552ZIDwgdG9cLXJvbGxcLXRoZVwtZXllYmFsbHNcLXRvXC1sb29rOwor55GCIDwgXChzdG9uZVwtd2hpY2hcLXJlc2VtYmxlc1wtamFkZVwpOwor5pys5pyr5YCS572uIDwgdGFrZVwtdGhlXC1icmFuY2hcLWZvclwtdGhlXC1yb290Owor54e6IDwgdGhlXC1kcnlcLWF0XC10aGVcLWZpcmVcLXRvXC1yb2FzdDsKK+eAlCA8IHJpdmVyXC1uYW1lXC1pblwtaGVuYW5cLXByb3ZpbmNlOwor5oqx6aCt55eb5ZOtIDwgY3J5XC1vblwtZWFjaFwtb3RoZXInJ3NcLXNob3VsZGVyOwor5rGnIDwgbmFtZVwtb2ZcLWFcLXJpdmVyXC1pblwtc2hhbmdkb25nOwor55Kn6KydIDwgZGVjbGluZVwtXChhXC1naWZ0XClcLXdpdGhcLXRoYW5rczsKK+aptSA8IHdvb2RcLXBsYWNlZFwtdW5kZXJcLXJvb2ZcLXRpbGVzOwor5bCN6I+vIDwgXChwb2xpY3lcLFwtZXRjXC5cKVwtdG93YXJkc1wtY2hpbmE7CivkuI3kuIDogIzotrMgPCBieVwtbm9cLW1lYW5zXC1hblwtaXNvbGF0ZWRcLWNhc2U7Civmm4ggPCB0d2lsaWdodFwtanVzdFwtYmVmb3JlXC1zdW5yaXNlOwor5pefIDwgYW5cLW1pbGl0YXJ5XC1mbGFnXC1vYVwtc3RhbmRhcmQ7CivlhIDlmaggPCBcKHNjaWVudGlmaWNcLFwtZXRjXClcLWluc3RydW1lbnQ7Civljp/lrZDnp5HlrbjlrrbpgJrloLEgPCBqb3VybmFsXC1vZlwtYXRvbWljXC1zY2llbnRpc3RzOwor56m26L6mIDwgdG9cLWludmVzdGlnYXRlXC1hbmRcLWRlYWxcLXdpdGg7CivlkIPkuI3kvY8gPCBiZVwtdW5hYmxlXC10b1wtYmVhclwtb3JcLXN1cHBvcnQ7CivmiaggPCBwaWNrXC11cFwtd2l0aFwtZm9ya1wtb3JcLXBpbmNlcnM7CivlubAgPCBjdXJ0YWluXC1hdFwtZnJvbnRcLW9mXC1jYXJyaWFnZTsKK+WogCA8IG5hbWVcLW9mXC1hXC1jb25jdWJpbmVcLW9mXC1kaVwta3U7Civnmb3ntJnpu5HlrZcgPCBcKHdyaXR0ZW5cKVwtaW5cLWJsYWNrXC1hbmRcLXdoaXRlOwor5Z+EIDwgd2hpcmxpbmdcLW9mXC1kdXN0XC1pblwtdGhlXC13aW5kOwor5a6a572qIDwgY29udmljdFwtXChzb21lb25lXC1vZlwtYVwtY3JpbWVcKTsKK+acrOmhjCA8IHRoZVwtc3ViamVjdFwtdW5kZXJcLWRpc2N1c3Npb247Civog4znsI0gPCBhXC1iYXNrZXRcLWNhcnJpZWRcLW9uXC10aGVcLWJhY2s7CivljJfkuqzol53ooZPlrbjpmaIgPCBiZWlqaW5nXC1hY2FkZW15XC1vZlwtZmluZVwtYXJ0czsKK+S4jeeijueOu+eSgyA8IHNoYXR0ZXJwcm9vZlwtb3JcLXNhZmV0eVwtZ2xhc3M7CivmnInpl5wgPCB0b1wtaGF2ZVwtc29tZXRoaW5nXC10b1wtZG9cLXdpdGg7CivkvobmupAgPCBzb3VyY2VcLVwob2ZcLWluZm9ybWF0aW9uXCxcLWV0Y1wpOwor5LWgIDwgcnVzaGVzXC11c2VkXC1mb3JtXC1tYWtpbmdcLW1hdHM7Civks40gPCBhXC1raW5kXC1vZlwtcGhlYXNhbnRcLWxpa2VcLWJpcmQ7CivnjbLph4sgPCBvYnRhaW5cLXJlbGVhc2VcLVwoZnJvbVwtcHJpc29uXCk7CivksbEgPCBhXC1raW5kXC1vZlwtc2xpcHBlcnlcLWxvbmdcLWZpc2g7CivkrocgPCBibGFja1wtaG9yc2VcLXdpdGhcLXdoaXRlXC10aGlnaDsKK+WwjeaXpSA8IFwocG9saWN5XCxcLWV0Y1wuXClcLXRvd2FyZHNcLWphcGFuOwor5KygIDwgdGhlXC1mYWxsaW5nXC1vZlwtc25vd1wtYW5kXC1yYWluOwor5KqtIDwgYVwta2luZFwtb2ZcLW11c2ljYWxcLWluc3RydW1lbnQ7CivkqokgPCBtZXRhbFwtZGVjb3JhdGlvblwtb25cLWFcLWhhbHRlcjsKK+SpoSA8IGFcLWtpbmRcLW9mXC1ib290c1wtaW5cLW9sZFwtdGltZXM7CivojqvoobfkuIDmmK8gPCBjYW5ub3RcLWRlY2lkZVwtd2hpY2hcLWlzXC1yaWdodDsKK+SmnCA8IG5hbWVcLW9mXC1hXC1zdGF0ZVwtaW5cLW9sZFwtdGltZXM7CivkpbogPCBuYW1lXC1vZlwtYVwtZG91YmxlXC1lZGdlZFwtc3dvcmQ7CivkpZUgPCB0aGVcLWJsYWRlXC1vclwtZWRnZVwtb2ZcLWFcLXNwYWRlOwor5KSJIDwgZW1wdGllZFwtdGhlXC1kcmlua1wtY29tcGxldGVseTsKK+SjoSA8IG5hbWVcLW9mXC1hXC1wbGFjZVwtaW5cLW9sZFwtdGltZXM7CivkoZEgPCB0aGVcLXJpbVwtb3JcLWZlbGxvZVwtb2ZcLWFcLXdoZWVsOwor5KC0IDwgd2l0aFwtYVwtc3ltbWV0cmljXC13ZWxsXC1mb3JtZWQ7CivknbUgPCB0b1wtdGhhbmtcLXdpdGhcLW1vbmV5XC1vclwtZ2lmdHM7CivkmZcgPCBhXC1zd2FkZGxpbmdcLWNsb3RoXC1mb3JcLWluZmFudDsKK+SYuyA8IGN1cnRhaW5cLW9uXC1hXC1jYXJyaWFnZVwtb3JcLWNhcjsKK+SYuiA8IGFcLXNlYW1cLXdoaWNoXC1oYXNcLWNvbWVcLXVuc2V3bjsKK+SYtSA8IGhpc3NpbmdcLXNvdW5kXC1vZlwtdGhlXC1jbG90aGVzOwor5JSbIDwgZmlicm91c1wtcGxhbnRcLW9mXC13aGljaFwtY2xvdGg7CivkkbkgPCBhXC1udW1lcmFyeVwtYWRqdW5jdFwtZm9yXC1zaGlwczsKK+SNoCA8IHR1cmJhblwtdXNlZFwtaW5cLWFuY2llbnRcLXRpbWVzOwor5IyLIDwgYVwtaGVyY2hpZWZcLWh1bmdcLWF0XC10aGVcLXdhaXN0Owor5IupIDwgcHJldHR5XC1hbmRcLWZpbmVcLXNpbGtcLWZhYnJpY3M7Civki48gPCB0aGlja1wtYW5kXC1iaWdcLXJvcGVzXC1vclwtY29yZHM7Civki4sgPCBhXC1raW5kXC1vZlwtc3ByaW5nXC1maXNoaW5nXC1uZXQ7CivlhavlnIvoga/ou40gPCB0aGVcLWVpZ2h0XC1wb3dlclwtYWxsaWVkXC1mb3JjZTsKK+SGtiA8IG5vaXNlXC1vZlwtYVwtbW91c2VcLWluXC10aGVcLWNhdmU7CivkhbMgPCBzdGFsa1wtb2ZcLXRoZVwtcGFuaWNsZWRcLW1pbGxldDsKK+SFrSA8IGFcLXZhcmlldHlcLW9mXC1wYW5pY2xlZFwtbWlsbGV0Owor5IWMIDwgc3RhbGtcLW9mXC13aGVhdFwtb3JcLXJpY2VcLXBsYW50Owor5IOLIDwgYVwtZmluZVwtc3RvbmVcLXJlc2VtYmxpbmdcLWphZGU7CivkgrUgPCBzb3VuZFwtb2ZcLWJ1bXBpbmdcLW9yXC1zdHJpa2luZzsKK+SCqyA8IG5vaXNlXC1vZlwtc3RvbmVzXC1yb2xsaW5nXC1kb3duOwor5ICzIDwgbm90XC10b1wtbG9va1wtc3RyYWlnaHRcLWZvcndhcmQ7CivjvrQgPCB0aGVcLWVyeXRoZW1hXC1vZlwtYWNuZVwtcm9zYWNlYTsKK+WkmuW5tOS7peS+hiA8IGZvclwtbWFueVwteWVhcnNcLVwoaW5cLXRoZVwtcGFzdFwpOwor47mlIDwgYVwteWVsbG93XC1kb2dcLXdpdGhcLWJsYWNrXC1oZWFkOwor47mBIDwgZ2VuZXJhbGx5XC1jYWxsZWRcLXRoZVwtYW5pbWFsczsKK+O1tSA8IHN3aWZ0XC1jdXJyZW50c1wtb2ZcLXRoZVwtc3RyZWFtOwor47WOIDwgYVwtbW91bnRhaW5cLXN0cmVhbVwtb3JcLXRvcnJlbnQ7CivjtJogPCB0aGVcLXNtYWxsXC1kaXRjaFwtaW5cLXRoZVwtZmllbGQ7Civnn6XorZjnlKLmrIogPCBpbnRlbGxlY3R1YWxcLXByb3BlcnR5XC1yaWdodHM7CivmhovmsKMgPCBmZWVsXC1zdWZmb2NhdGVkXC1vclwtb3BwcmVzc2VkOwor47CGIDwgYW5cLWluc3RydW1lbnRcLXRvXC1ibG93XC1hXC1maXJlOwor47CBIDwgYVwtdHJlZVwtd2l0aFwtc2xhbnRlZFwtYnJhbmNoZXM7Civjr7MgPCBhXC1raW5kXC1vZlwtdG9vbFwtdG9cLWFkanVzdFwtYm93Owor46WcIDwgdW5zdWNjZXNzZnVsXC1pblwtb25lJydzXC1jYXJlZXI7CivjobEgPCB0b1wtY2F1dGVyaXplXC1ieVwtYnVybmluZ1wtbW94YTsKK+OgsSA8IHRvXC1zZXRcLXdpdGhcLXRoZVwtbGVnc1wtY2xvc3NlZDsKK+OcjCA8IGFcLWRpZmZlcmVudFwtbmFtZVwtZm9yXC1icmVhc3RzOwor45m+IDwgaGlsbHNcLXdpdGhcLWxvdHNcLW9mXC1iaWdcLXJvY2tzOwor45mbIDwgYVwtcGVyc29uJydzXC1uYW1lXC1pblwtb2xkXC10aW1lczsKK+OXviA8IHRvXC1naXZlXC12ZW50XC10b1wtdGhlXC1mZWVsaW5nczsKK+OXhiA8IHNvdW5kXC1vZlwtdGhlXC1yaW5nZWRcLXBoZWFzYW50Owor45OzIDwgdXNlXC1rbmlmZVwtdG9cLXNwbGl0XC1zb21ldGhpbmc7CivjkZ8gPCBpbnNpbmNlcmVcLWFuZFwtY3VubmluZ1wtcGVyc29uOwor6Ieq5rK75Y2AIDwgYXV0b25vbW91c1wtcmVnaW9uXC1cKGluXC1jaGluYVwpOwor5ZCM6IOeIDwgZmVsbG93XC1jaXRpemVuXC1vclwtY291bnRyeW1hbjsKK+WMvumhjSA8IGFcLWhvcml6b250YWxcLWluc2NyaWJlZFwtYm9hcmQ7Civlu6Pmkq3lkozmnKrnn6XmnI3li5nlmaggPCBicm9hZGNhc3RcLWFuZFwtdW5rbm93blwtc2VydmVyOwor56K66Ki6IDwgdG9cLW1ha2VcLWFcLWRlZmluaXRlXC1kaWFnbm9zaXM7CivlvLXntJTlpoIgPCBcKGFtZXJpY2FuXC1hdXRob3JcKVwtaXJpc1wtY2hhbmc7CivlroPlgJEgPCB0aGV5XC1cKGZvclwtaW5hbmltYXRlXC1vYmplY3RzXCk7Civnj77loLQgPCBzY2VuZVwtXChvZlwtZXZlbnRcLW9yXC1pbmNpZGVudFwpOwor5oSb5oOFIDwgbG92ZVwtXChiZXR3ZWVuXC1tYW5cLWFuZFwtd29tYW5cKTsKK+iuiuevgCA8IG1ha2VcLWFcLXBvbGl0aWNhbFwtcmVjYW50YXRpb247CivoqpPmrbvkuI3pmY0gPCB0b1wtdm93XC10b1wtZmlnaHRcLXRvXC10aGVcLWRlYXRoOwor5rKS5pyJ5b+F6KaBIDwgdGhlcmVcLWlzXC1ub1wtbmVlZFwtdG9cLVwoZG9cLXN0aFwpOwor5raJ5auMIDwgdG9cLWJlXC1hXC1zdXNwZWN0XC1cKGluXC1hXC1jcmltZVwpOwor54+t5YuZ5pyDIDwgYVwtcm91dGluZVwtbWVldGluZ1wtb2ZcLWFcLXNxdWFkOwor5paw5b636KOhIDwgbmV3XC1kZWxoaVwtXChjYXBpdGFsXC1vZlwtaW5kaWFcKTsKK+WPjeWwjem7qCA8IG9wcG9zaXRpb25cLVwocG9saXRpY2FsXClcLXBhcnR5Owor5aSx6LazIDwgdG9cLXRha2VcLWFcLXdyb25nXC1zdGVwXC1pblwtbGlmZTsKK+S4reaWh+W7o+aSrSA8IGNoaW5lc2VcLVwobGFuZ3VhZ2VcKVwtYnJvYWRjYXN0Owor56e75q6W5omL6KGTIDwgXChvcmdhblwpXC10cmFuc3BsYW50XC1vcGVyYXRpb247CivniqfnibIgPCBzYWNyaWZpY2VcLVwob25lJydzXC1saWZlXCxcLWV0Y1wuXCk7Civkup7kvK8gPCBhYmVcLVwoc2hvcnRcLWZvcm1cLWZvclwtYWJyYWhhbVwpOwor54yc5b+MIDwgYmVcLXN1c3BpY2lvdXNcLWFuZFwtamVhbG91c1wtb2Y7Civpu6jlhacgPCB3aXRoaW5cLXRoZVwtXChjb21tdW5pc3RcKVwtcGFydHk7CivoqqrmmI7mm7ggPCBzeW5vcHNpc1wtXChvZlwtYVwtcGxheVwtb3JcLWZpbG1cKTsKK+WLleiVqSA8IFwoc29jaWFsXC1vclwtcG9saXRpY2FsXClcLXVucmVzdDsKK+eOi+S4uSA8IHdhbmdcLWRhblwtXChjaGluZXNlXC1kaXNzaWRlbnRcKTsKK+WPm+S6gue9qiA8IHRoZVwtY3JpbWVcLW9mXC1hcm1lZFwtcmViZWxsaW9uOwor5rWq5a2Q5Zue6aCtIDwgdGhlXC1yZXR1cm5cLW9mXC1hXC1wcm9kaWdhbFwtc29uOwor5beu5b6X5aSaIDwgZmFsbFwtc2hvcnRcLWJ5XC1hXC1sYXJnZVwtYW1vdW50Owor5LiN5oCl5LmL5YuZIDwgYVwtbWF0dGVyXC1vZlwtbm9cLWdyZWF0XC11cmdlbmN5Owor6Zu756OB5bmy5pO+IDwgZWxlY3Ryb21hZ25ldGljXC1pbnRlcmZlcmVuY2U7Civlj7DngaPoqbEgPCB0YWl3YW5lc2VcLWNoaW5lc2VcLVwobGFuZ3VhZ2VcKTsKK+WVpiA8IGZpbmFsXC1wYXJ0aWNsZVwtb2ZcLWFzc2VydGlvbjsKK+e7vCA8IGFycmFuZ2VcLXRocmVhZHNcLWZvclwtd2VhdmluZzsKK+aLrSA8IHdpcGVcLWF3YXlcLXN0YWluc1wtd2l0aFwtY2xvdGg7Civlj64gPCBleGhvcnRcLW9yXC1lbmpvaW5cLXJlcGVhdGVkbHk7CivmiJ8gPCBoYWxiZXJkXC13aXRoXC1jcmVzY2VudFwtYmxhZGU7Civlh5sgPCB0b1wtc2hpdmVyXC13aXRoXC1jb2xkXC1vclwtZmVhcjsKK+agiyA8IG1haW5cLWJlYW1zXC1zdXBwb3J0aW5nXC1ob3VzZTsKK+mrpiA8IGZsb3dpbmdcLWhhaXJcLW9mXC15b3VuZ1wtY2hpbGQ7CivnrZ0gPCBzdHJpbmdlZFwtbXVzaWNhbFwtaW5zdHJ1bWVudDsKK+S4mSA8IHRoaXJkXC1vZlwtdGhlXC1oZWF2ZW5seVwtc3RlbXM7CivmsoIgPCByaXZlclwtaW5cLXNvdXRoZWFzdFwtc2hhbmRvbmc7CivnrIggPCBiYW1ib29cLWJveFwtdXNlZFwtY2FycnlcLWJvb2tzOwor55OiIDwgbGFkbGVcLW1hZGVcLWZyb21cLWRyaWVkXC1nb3VyZDsKK+ewpyA8IHJlZWRcLW9mXC13b29kd2luZFwtaW5zdHJ1bWVudDsKK+ibnyA8IHNjYWx5XC1kcmFnb25cLXdpdGhcLWZvdXJcLWxlZ3M7CivmlZUgPCBhblwtaW1wZXJpYWxcLW9yZGVyXC1vclwtZGVjcmVlOwor6KOfIDwgYVwtY2Fzc29ja1wtb3JcLXJvYmVcLW9mXC1hXC1tb25rOwor56K0IDwgY2hpcHBlZFwtZWRnZVwtb2ZcLWFcLWNvbnRhaW5lcjsKK+eYtCA8IG1hbGFyaWFcLXBlc3RpbGVudGlhbFwtdmFwb3JzOwor57q2IDwgZ3JlZW5cLXNpbGtcLXRocmVhZFwtb3JcLXRhc3NlbDsKK+e9oSA8IHRoZVwtbmFtZVwtb2ZcLWFcLWNlcnRhaW5cLXN0YXJzOwor55m4IDwgbGFzdFwtb2ZcLXRlblwtY2VsZXN0aWFsXC1zdGVtczsKK+aphyA8IGFcLXNsZWRnZVwtZm9yXC10cmFuc3BvcnRhdGlvbjsKK+eaiyA8IHRoZVwtaGlnaFwtbGFuZFwtYWxvbmdcLWFcLXJpdmVyOwor5r2NIDwgY291bnR5XC1pblwtc2hhbmRvbmdcLXByb3ZpbmNlOwor5rSZIDwgbmFtZVwtb2ZcLWFcLXJpdmVyXC1pblwtc2hhbmRvbmc7CivnjaAgPCB0b1wtaHVudFwtYXRcLW5pZ2h0XC1ieVwtdG9yY2hlczsKK+m6kiA8IGxlZ2VuZGFyeVwtYXVzcGljaW91c1wtYW5pbWFsOwor54+pIDwgdGhlXC10b3BcLWdlbVwtb2ZcLXRoZVwtcGVuZGFudHM7CivosKUgPCB0b1wtY29uZmVyXC1wb3N0aHVtb3VzXC10aXRsZXM7Civnp6sgPCBnbHV0aW5vdXNcLXZhcmlldHlcLW9mXC1taWxsZXQ7Civnq70gPCBhbmNpZW50XC13b29kd2luZFwtaW5zdHJ1bWVudDsKK+W0riA8IFwoZWxlbWVudFwtaW5cLW1vdW50YWluXC1uYW1lc1wpOwor5oSAIDwgdG9cLWNoYW5nZVwtb25lJydzXC1jb3VudGVuYW5jZTsKK+mEoiA8IG5hbWVcLW9mXC1hXC1kaXN0cmljdFwtaW5cLWhvbmFuOwor55mNIDwgdW5oZWFsdGh5XC1tYXJrc1wtb25cLXRoZVwtc2tpbjsKK+mEniA8IGNvdW50eVwtaW5cLXpoZWppYW5nXC1wcm92aW5jZTsKK+mbkiA8IGJsYWNrXC1ob3JzZVwtd2l0aFwtd2hpdGVcLW1hbmU7Civml5IgPCBmcmluZ2VzXC1vZlwtcGVhcmxzXC1vblwtY3Jvd25zOwor55CKIDwgYVwtcGxhY2VcLWluXC1lYXN0ZXJuXC1zaGFuZG9uZzsKK+iaqCA8IGFcLWtpbmRcLW9mXC13YXRlclwtYmVldGxlXC1jYXNoOwor5q+zIDwgZmluZVwtaGFpclwtb3JcLWZ1clwtb25cLWFuaW1hbHM7CivnmKUgPCB0b1wtcmVjb3ZlclwtZnJvbVwtYW55XC1kaXNlYXNlOwor5rWIIDwgcml2ZXJcLWluXC1ndWFuZ2RvbmdcLXByb3ZpbmNlOwor5ZinIDwgXChwaG9uZXRpY1wpXC1hc1wtaW5cLXB5cmltaWRpbmU7CivkuI3mmJPkuYvoq5YgPCBwZXJmZWN0bHlcLXNvdW5kXC1wcm9wb3NpdGlvbjsKK+S8vOS5juW+iOWuieWFqCA8IHRvXC1hcHBlYXJcLVwodG9cLWJlXClcLXZlcnlcLXNhZmU7CivmsbrlrpogPCB0b1wtZGVjaWRlXC1cKHRvXC1kb1wtc29tZXRoaW5nXCk7Civlp4rlprkgPCBcKG9sZGVyXC1hbmRcLXlvdW5nZXJcKVwtc2lzdGVyczsKK+mAvOiCliA8IGJlYXJcLWFcLWNsb3NlXC1yZXNlbWJsYW5jZVwtdG87CivokYnliKnmrL0gPCBcKHJ1c3NpYW5cLXByZXNpZGVudFwpXC15ZWx0c2luOwor5b6p5a+pIDwgcmVleGFtaW5lXC1cKGFcLWp1ZGljaWFsXC1jYXNlXCk7CivlhaXploAgPCBpbnRyb2R1Y3Rpb25cLVwodG9cLWFcLXN1YmplY3RcKTsKK+eZvemcsiA8IHdoaXRlXC1kZXdcLVwoMTV0aFwtc29sYXJcLXRlcm1cKTsKK+WQhOeoruWQhOaooyA8IHZhcmlvdXNcLXNvcnRzXC1hbmRcLXZhcmlldGllczsKK+ijnOmrlCA8IGNvbXBsZW1lbnRcLVwoaW5cLWJsb29kXC1zZXJ1bVwpOwor6KmV5q+UIDwgdG9cLWV2YWx1YXRlXC1cKGJ5XC1jb21wYXJpc29uXCk7CivkuI3pgZXovrLmmYIgPCBub3RcLW1pc3NcLXRoZVwtZmFybWluZ1wtc2Vhc29uOwor6buD5rWm5rGfIDwgaHVhbmdwdVwtcml2ZXJcLVwoaW5cLXNoYW5naGFpXCk7CivovYnouqsgPCBcKG9mXC1hXC1wZXJzb25cKVwtdG9cLXR1cm5cLXJvdW5kOwor54iq5ZOHIDwgamF2YVwtXChwcm9ncmFtbWluZ1wtbGFuZ3VhZ2VcKTsKK+aViOW/oCA8IHZvd1wtbG95YWx0eVwtYW5kXC1kZXZvdGlvblwtdG87CivkuoLkvZzmsbrlrpogPCB0b1wtbWFrZVwtYXJiaXRyYXJ5XC1kZWNpc2lvbnM7CivmjqHovqYgPCBidXlcLW9uXC1hXC1jb25zaWRlcmFibGVcLXNjYWxlOwor5byf5aa5IDwgc2lzdGVyXC1pblwtbGF3XC1cKHdpZmUnJ3NcLXNpZGVcKTsKK+mZt+aWvCA8IGNhdWdodFwtaW5cLVwoYVwtYmFkXC1zaXR1YXRpb25cKTsKK+m1viA8IGFcLWJpcmRcLXJlc2VtYmxpbmdcLXRoZVwtY3JhbmU7CivlpJbljK8gPCBmb3JlaWduXC1cKGN1cnJlbmN5XClcLWV4Y2hhbmdlOwor5aSn5Zmo5pma5oiQIDwgZ3JhbmRcLXRhbGVudHNcLW1hdHVyZVwtc2xvd2x5Owor5pGY55SxIDwgaGlnaFwtcG9pbnRzXC1cKG9mXC1hXC1kb2N1bWVudFwpOwor6a6oIDwgZXBpbmVwaGVsdXNcLXNlcHRlbWZhc2NpYXR1czsKK+mjpiA8IHdlbGxcLWJvaWxlZFwtY29uZ2VlXC1vclwtZ3J1ZWw7Civpm4ogPCB0aGVcLWNyb3dcLW9mXC1hXC1tYWxlXC1waGVhc2FudDsKK+mauiA8IGFcLWJpcmRcLWZseWluZ1wtaGlnaFwtYW1iaXRpb247Civog4zljIXoorEgPCBoYXZlXC1hXC13ZWlnaHRcLW9uXC1vbmUnJ3NcLW1pbmQ7CivmjInmraXlsLHnj60gPCBmb2xsb3dcLXRoZVwtcHJlc2NyaWJlZFwtb3JkZXI7CivlpJbkuqTpg6jplbcgPCBtaW5pc3Rlclwtb2ZcLWZvcmVpZ25cLWFmZmFpcnM7CivphrEgPCB0b1wtYnJld1wtZm9yXC10aGVcLXNlY29uZFwtdGltZTsKK+mFliA8IHdpbmVcLXdpdGhcLWJpcmRcLXBvaXNvblwtYWRkZWQ7Civnmb7lsLrmnYbpoK3mm7Tnm6HkuIDmraUgPCBtYWtlXC1zdGlsbFwtZnVydGhlclwtcHJvZ3Jlc3M7CivphL8gPCBjb3VudHlcLWluXC14aW5qaWFuZ1wtcHJvdmluY2U7CivphI0gPCBhXC10b3duXC1pblwtc2hhbmRvbmdcLXByb3ZpbmNlOwor6LmaIDwgdHJlYWRcLXRocm91Z2hcLW11ZFwtYW5kXC13YXRlcjsKK+S4reWkruaDheWgseWxgCA8IGNlbnRyYWxcLWludGVsbGlnZW5jZVwtYWdlbmN5Owor5YG06Lq6IDwgdG9cLWxpZVwtZG93blwtXChvblwtb25lJydzXC1zaWRlXCk7CivloLHmiLblj6MgPCBhcHBseVwtZm9yXC1hXC1yZXNpZGVudFwtcGVybWl0Owor6KSYIDwgY2VyZW1vbmlhbFwtZ293bnNcLW9mXC1hXC1xdWVlbjsKK+ifsCA8IHNtYWxsXC1zcGlkZXJcLXdpdGhcLWxvbmdcLWxlZ3M7Civom5UgPCB0aGVcLWNvbW1vblwtaW50ZXN0aW5hbFwtd29ybXM7CivmnI3li5nmj5DkvpvllYYgPCBcKGludGVybmV0XClcLXNlcnZpY2VcLXByb3ZpZGVyOwor5pCc5o2VIDwgaHVudFwtYW5kXC1hcnJlc3RcLVwoZnVnaXRpdmVzXCk7Civmj7nmm7ggPCByZWNpdGVcLWFcLWxlc3NvblwtZnJvbVwtbWVtb3J5Owor5bm45YWNIDwgbmFycm93bHlcLWFuZFwtbHVja2lseVwtZXNjYXBlOwor5LiN55m75aSn6ZuF5LmL5aCCIDwgbm90XC1hcHBlYWxcLXRvXC1yZWZpbmVkXC10YXN0ZTsKK+iCtyA8IGFyZWFcLWJldHdlZW5cLXdhaXN0XC1hbmRcLWhpcHM7CivoiInkuJbnn5rnm64gPCBhdHRyYWN0XC13b3JsZHdpZGVcLWF0dGVudGlvbjsKK+eNqOaWt+WwiOihjCA8IGFjdFwtaW5cLWFuXC1hcmJpdHJhcnlcLWZhc2hpb247CivnsYQgPCBhXC1iYXNrZXRcLWZvclwtY2FycnlpbmdcLWVhcnRoOwor5ZyL6Zqb57SaIDwgXChhdFwtYW5cKVwtaW50ZXJuYXRpb25hbFwtbGV2ZWw7CivnrY4gPCB0aGluXC1vdXRzaWRlXC1za2luXC1vZlwtYmFtYm9vOwor556kIDwgdG9cLWJsaW5rXC1vclwtdHdpdGNoXC10aGVcLWV5ZXM7CivnrqHnkIbkv6Hmga/luqsgPCBtYW5hZ2VtZW50XC1pbmZvcm1hdGlvblwtYmFzZTsKK+iPr+ebm+mgk+mDteWgsSA8IHdhc2hpbmd0b25cLXBvc3RcLVwobmV3c3BhcGVyXCk7CivlnIvmqJkgPCBndW9iaWFvXC1cKGVuY29kaW5nXC1zdGFuZGFyZFwpOwor5L6/6KGAIDwgaGF2aW5nXC1ibG9vZFwtaW5cLW9uZScnc1wtc3Rvb2w7Civmt6AgPCBsdXh1cmlhbnRcLVwob2ZcLXdhdGVyXC1wbGFudHNcKTsKK+a1sCA8IGF0dGVuZFwtXChvZmZpY2lhbFwtZnVuY3Rpb25zXCk7Civnl4XmqZ8gPCBpbnRlcnByZXRhdGlvblwtb2ZcLXRoZVwtY2F1c2U7Civms5EgPCB0aGVcLXZpdHJlb3VzXC1nbGF6ZVwtb25cLWNoaW5hOwor5q6oIDwgdG9cLW9wZW5cLWFzXC1hblwtdWxjZXJcLW9yXC1zb3JlOwor5omN6I+vIDwgbGl0ZXJhcnlcLW9yXC1hcnRpc3RpY1wtdGFsZW50Owor5oyH5rOVIDwgZmluZ2VyXC1tZXRob2RcLVwoaW5cLXBhaW50aW5nXCk7Civlr7bol48gPCBwcmVjaW91c1wtXChtaW5lcmFsXClcLWRlcG9zaXRzOwor5o+Q5YmNIDwgdG9cLXNoaWZ0XC10b1wtYW5cLWVhcmxpZXJcLWRhdGU7CivovKnlh7ogPCBjb21lXC1mb3J0aFwtaW5cLWxhcmdlXC1udW1iZXJzOwor5p6PIDwgYVwtdmFyaWV0eVwtb2ZcLWV2ZXJncmVlblwtdHJlZTsKK+adv+m0qCA8IHByZXNzZWRcLVwoZHJpZWRcKVwtc2FsdGVkXC1kdWNrOwor5ouU5rW3IDwgZWxldmF0aW9uXC1cKGFib3ZlXC1zZWFcLWxldmVsXCk7CivpoZjmhI/kuI3poZjmhI8gPCB3aGV0aGVyXC1vbmVcLXdhbnRzXC10b1wtb3JcLW5vdDsKK+WQg+S4jeS+hiA8IG5vdFwtYmVcLWZvbmRcLW9mXC1jZXJ0YWluXC1mb29kOwor5pCHIDwgdG9cLXByZXNzXC1kb3duXC13aXRoXC10aGVcLWhhbmQ7Civmk5rloLHlsI4gPCBhY2NvcmRpbmdcLXRvXC1cKG5ld3NcKVwtcmVwb3J0czsKK+i2heaWh+S7tuWCs+i8uOWNlOWumiA8IGh5cGVydGV4dFwtdHJhbnNmZXJcLXByb3RvY29sOwor5by4IDwgYVwtYm93XC1zdHJldGNoZWRcLXRvXC10aGVcLWZ1bGw7Civlt6AgPCBzdHJlYW1zXC1ydW5uaW5nXC11bmRlcmdyb3VuZDsKK+W0mSA8IGt1bmx1blwtbW91bnRhaW5zXC1pblwtamlhbmdzdTsKK+WAq+aVpiA8IGxvbmRvblwtXChjYXBpdGFsXC1vZlwtZW5nbGFuZFwpOwor5aCzIDwgbGFuZFwtYWxsb3RtZW50XC1mZXVkYWxcLW5vYmxlOwor5YyX5Lqs6Kqe6KiA5a246ZmiIDwgYmVpamluZ1wtbGFuZ3VhZ2VzXC1pbnN0aXR1dGU7CivlmZUgPCB0b1wtc3BlYWtcLWZhbHNlbHlcLW9yXC13cm9uZ2x5Owor5qKd5qy+IDwgY2xhdXNlXC1cKG9mXC1jb250cmFjdFwtb3JcLWxhd1wpOwor55eF5L6LIDwgXFttZWRpY2FsXF1cLWNhc2VcLVxbb2ZcLWlsbG5lc3NcXTsKK+WZqOWumCA8IG9yZ2FuXC1cKHBhcnRcLW9mXC1ib2R5XC10aXNzdWVcKTsKK+S4qSA8IHRvXC1qb2luXC1vclwtY29ubmVjdFwtdGhlXC12aW5lOwor5LiSIDwgdGhlXC1wZXJpb2RcLWZyb21cLTFcLXRvXC0zXC1hXC5tXC47CivktYUgPCB0b1wtZXh0cmFjdFwtYnlcLWFwcGx5aW5nXC1oZWF0Owor5LSzIDwgZGlzdGlsbGVyJydzXC1ncmFpbnNcLW9yXC15ZWFzdDsKK+SzniA8IGJpcmRzXC1mbHlpbmdcLWFsbFwtZGlyZWN0aW9uczsKK+SziiA8IGFcLXdpbGRcLWR1Y2tcLWxpa2VcLXdhdGVyXC1iaXJkOwor5LODIDwgYVwta2luZFwtb2ZcLXBob2VuaXhcLWxpa2VcLWJpcmQ7CivkqrcgPCB0b1wtdG9pbFwtb3JcLWxhYm9yXC1zZWR1bG91c2x5Owor5KqHIDwgY3VzaGlvbmVkXC1zZWF0XC1vblwtYVwtdmVoaWNsZTsKK+SpvyA8IGFcLWJpZ1wtZHJ1bVwtdXNlZFwtaW5cLXRoZVwtYXJteTsKK+SnmCA8IGFcLWxvd1wtd2FsbFwtb25cLXRoZVwtcm9hZFwtc2lkZTsKK+SmsiA8IGVhdmVzXC1vZlwtYVwtYW5jZXN0cmFsXC10ZW1wbGU7CivkpLsgPCBoZWF2eVwtaXJvblwtcGFydFwtb2ZcLWFcLXBsb3VnaDsKK+SjsiA8IHRvXC1oZWF0XC10aGVcLXdpbmVcLW92ZXJcLW5pZ2h0Owor5KKvIDwgdG9cLWNob29zZVwtb3JcLXNlbGVjdFwtY2FyZWZ1bDsKK+SgiyA8IGJlbGxcLXNoYXBlZFwtd2l0aFwtbGFyZ2VcLWJhc2U7Civkn64gPCB0b1wtY3Jhd2xcLW9uXC1oYW5kc1wtYW5kXC1rbmVlczsKK+ScuCA8IHNtYWxsXC1waWVjZXNcLW9mXC1iZWFuXC1zdGFsa3M7CivknIcgPCB0b1wtc3BlYWtcLW5vdFwtaW5cLWFcLWNsZWFyXC13YXk7Civnj63ntJogPCBjbGFzc2VzXC1vclwtZ3JhZGVzXC1pblwtc2Nob29sOwor5JqjIDwgY3Jvb2tlZFwtaG9ybnNcLW9mXC10aGVcLWFuaW1hbDsKK+SanCA8IGNhdHRsZVwtd2l0aFwtY3Jvc3N3aXNlXC1ob3JuczsKK+SZoyA8IHJhZ2dlZFwtZ2FybWVudHNcLW9yXC1jbG90aGluZzsKK+SZlSA8IGNsb3RoZXNcLXRoYXRcLWhhdmVcLW5vXC1saW5pbmc7CivkmZQgPCBjbG90aGVzXC1tYWRlXC1vZlwtcG9vclwtZmFicmljOwor5JmTIDwgdGhlXC1sb3dlclwtcGFydFwtb2ZcLWFcLWdhcm1lbnQ7CivkmKUgPCB0aGVcLWZyb250XC1vZlwtYVwtY2hpbmVzZVwtZ293bjsKK+SYgSA8IGFcLWJsdWVcLWdyZWVuXC1jb2xvcmVkXC1jaWNhZGE7Civkl7UgPCBhXC1kaXNlYXNlXC1hdHRhY2tlZFwtc2lsa3dvcm07Civkla4gPCBmbG93ZXJcLW9mXC10aGVcLWNocnlzYW50aGVtdW07CivklKUgPCBjb21tb25cLXZhcmlldHlcLW9mXC1hcnRlbWlzaWE7CivklJ8gPCBzaGFrZVwtYW5kXC13YXZlXC1vZlwtdGhlXC1ncmFzczsKK+eXheavkuWtuCA8IHZpcm9sb2d5XC1cKHN0dWR5XC1vZlwtdmlydXNlc1wpOwor5JC8IDwgdGhpblwtbWVtYnJhbmVcLW9mXC10aGVcLXRocm9hdDsKK+SQryA8IHVnbHlcLWFwcGVhcmFuY2VcLW9mXC1hXC1wZXJzb247CivkkJEgPCB0aGluXC1jdXRcLW9mXC10aGVcLXNsaWNlZFwtbWVhdDsKK+SNuiA8IGFcLWxlZ2VuZGFyeVwtZ29hdFwtbGlrZVwtYmVhc3Q7CivkjLwgPCBhXC1raW5kXC1vZlwtZmluZVwtc2lsa1wtZmFicmljczsKK+SMhCA8IGFcLXJvcGVcLWZvclwtZHJhd2luZ1wtdXBcLXdhdGVyOwor56eB5Lq66ZGw5YyZIDwgcHJpdmF0ZVwta2V5XC1cKGluXC1lbmNyeXB0aW9uXCk7Civkip4gPCB0b1wtcm9sbFwtcm91bmRcLXdpdGhcLXRoZVwtaGFuZDsKK+SJuiA8IGRldGVyaW9yYXRlZFwtYW5kXC1iZWNvbWVcLXJlZDsKK+SJuSA8IG5hbWVcLW9mXC1hXC12YXJpZXR5XC1vZlwtYmFtYm9vOwor5Im4IDwgc2xpcHNcLW9mXC1iYW1ib29cLWZvclwtd3JpdGluZzsKK+SIsiA8IGFcLWJhbWJvb1wtYmFza2V0XC1mb3JcLWZpc2hpbmc7Civkh7ogPCBiZWFuc1wtYW5kXC1wZWFzXC1jb2xsZWN0aXZlbHk7Civkh7UgPCBvbmVcLW9mXC10aGVcLXdpbmRcLWluc3RydW1lbnRzOwor5oay5rOVIDwgY29uc3RpdHV0aW9uXC1cKG9mXC1hXC1jb3VudHJ5XCk7CivkhaogPCBkaXNlYXNlXC1vZlwtdGhlXC1wcml2YXRlXC1wYXJ0Owor5ISwIDwgZm9ydHlcLWJ1bmRsZXNcLW9mXC1yaWNlXC1wbGFudDsKK+SDhyA8IGlua1wtZm9yXC1pbXByaW50aW5nXC1vZlwtc2VhbHM7CivkgJEgPCB0b1wtZ291Z2VcLW91dFwtYW5cLWV5ZVwtb3JcLWV5ZXM7CivjvY4gPCB0aGVcLXByb2Z1bmRpdHlcLW9mXC10aGVcLWhhcmVtOwor47ygIDwgYVwtY3JvY2tcLXdpdGhcLW5hcnJvd1wtb3BlbmluZzsKK+O6rCA8IGFcLWxhcmdlXC1waWVjZVwtb2ZcLWphZGVcLXN0b25lOwor47qSIDwgYmFya2luZ1wtb2ZcLWFcLWZyaWdodGVuZWRcLWRvZzsKK+S4jeirsSA8IHdpdGhvdXRcLWNvbmNlYWxpbmdcLWFueXRoaW5nOwor47mWIDwgdG9cLWZlZWRcLWFuaW1hbHNcLXdpdGhcLWdyYWluczsKK+O4kiA8IHRvXC1hYnN1cmRcLXB1cnN1aXRcLW9yXC1kZXNpcmU7CivlnLDlnYDop6PmnpDljZTorbAgPCBhZGRyZXNzXC1yZXNvbHV0aW9uXC1wcm90b2NvbDsKK+OugCA8IHRvb2xcLXRvXC1jbGVhclwtb3V0XC10aGVcLXdhdGVyOwor462VIDwgYVwtYm9hcmRcLWZvclwtY2FycnlpbmdcLXRoaW5nczsKK+OphiA8IHRvXC1iZVwtaW5cLWZ1bGxcLXBvc3Nlc3Npb25cLW9mOwor6ICM5LiN6ZyAIDwgd2l0aG91dFwtbmVlZGluZ1wtXCh0b1wtc29cLXN0aFwpOwor46eVIDwgdG9cLWZlZWxcLW9yXC10b3VjaFwtd2l0aFwtaGFuZHM7Civjp4IgPCBhXC1jYXZlXC1hXC1ob2xkXC1pblwtdGhlXC1ncm91bmQ7CivjppAgPCBhXC1zdHJhaWdodGZvcndhcmRcLWNoYXJhY3RlcjsKK+WuieaPkiA8IHBsYWNlXC1pblwtYVwtY2VydGFpblwtcG9zaXRpb247CivjpbQgPCBkb1wtbm90XC1jYXJlXC1hYm91dFwtc29tZXRoaW5nOwor5Lqk5o+b5qmfIDwgc3dpdGNoXC1cKHRlbGVjb21tdW5pY2F0aW9uc1wpOwor76SaIDwgd2hpdGVcLWhvcnNlXC13aXRoXC1ibGFja1wtbWFuZTsKK+OhtSA8IHJvb2ZcLW9mXC10aGVcLWhvdXNlXC1jb25uZWN0ZWQ7CivjoJ8gPCBhXC1tb3VudGFpblwtaW5cLWFuY2llbnRcLXRpbWVzOwor5Y+k6LmfIDwgcGxhY2VzXC1vZlwtaGlzdG9yaWNcLWludGVyZXN0Owor45u9IDwgdG9cLXdhbGtcLXNsb3dseVwtbGlrZVwtYVwtd29tYW47Civjm64gPCB3aWZlXC1vZlwtb25lJydzXC1lbGRlclwtYnJvdGhlcjsKK+OTiCA8IHNvdW5kXC1vZlwtZmx5aW5nXC1vclwtc3BlZWRpbmc7CivjkqsgPCBjaG9rZWRcLWFuZFwtdW5hYmxlXC10b1wtYnJlYXRoOwor45KWIDwgdGhlXC1yb290XC1zdG9ja1wtb2ZcLXRoZVwtbG90dXM7CivmsKPpq5QgPCBnYXNcLVwoaWVcLFwtZ2FzZW91c1wtc3Vic3RhbmNlXCk7CivlpKfpmbjoqbEgPCBtYWlubGFuZFwtY2hpbmVzZVwtXChsYW5ndWFnZVwpOwor5a2r5a2QIDwgZ3JhbmRzb25cLVwoc29uXC1vZlwtb25lJydzXC1zb25cKTsKK+WllOmosCA8IFwob2ZcLXdhdmVzXClcLXRvXC1zdXJnZVwtZm9yd2FyZDsKK+WNu+S5i+S4jeaBrSA8IHRvXC1yZWZ1c2VcLXdvdWxkXC1iZVwtaW1wb2xpdGU7CivkuqTmj5vlmaggPCBcKHRlbGVjb21cLW9yXC1uZXR3b3JrXClcLXN3aXRjaDsKK+mAmuioiuekviA8IGFcLW5ld3NcLXNlcnZpY2VcLVwoZWdcLFwteGluaHVhXCk7Civpg7Xpm7sgPCBwb3N0XC1hbmRcLXRlbGVjb21tdW5pY2F0aW9uczsKK+WVj+WAmSA8IGdpdmVcLXNvbWVvbmVcLW9uZScnc1wtcmVzcGVjdHM7CivnpZbniLYgPCBncmFuZGZhdGhlclwtXChmYXRoZXInJ3NcLXNpZGVcKTsKK+aEm+WlveiAhSA8IGxvdmVyXC1cKG9mXC1hcnRcLFwtc3BvcnRzXCxcLWV0Y1wpOwor5rG6562WIDwgXChtYWtlXC1hXClcLXN0cmF0ZWdpY1wtZGVjaXNpb247CivnpZbmr40gPCBncmFuZG1vdGhlclwtXChmYXRoZXInJ3NcLXNpZGVcKTsKK+Wci+mam+iyqOW5o+WfuumHkee1hOe5lCA8IGludGVybmF0aW9uYWxcLW1vbmV0YXJ5XC1mdW5kOwor6aas5aSq56aP6Z+zIDwgZ29zcGVsXC1hY2NvcmRpbmdcLXRvXC1tYXR0aGV3Owor6Yed54G4IDwgYWN1cHVuY3R1cmVcLWFuZFwtbW94aWJ1c3Rpb247Civpm7voqbHmnIPorbAgPCBcKHRlbGVwaG9uZVwpXC1jb25mZXJlbmNlXC1jYWxsOwor5LiA5pemIDwgaW5cLWNhc2VcLVwoc29tZXRoaW5nXC1oYXBwZW5zXCk7Civlo73ovrAgPCBiaXJ0aGRheVwtXChvZlwtYW5cLW9sZFwtcGVyc29uXCk7CivkuI3okL3nqqDoh7wgPCBub3RcLWZvbGxvd1wtdGhlXC1iZWF0ZW5cLXRyYWNrOwor5oyJ54Wn6KiI5YqDIDwgYWNjb3JkaW5nXC10b1wtXCh0aGVcKVwtcGxhblwtXC5cLlwuOwor5YWs5a6J6YOoIDwgbWluaXN0cnlcLW9mXC1wdWJsaWNcLXNlY3VyaXR5Owor5oqx5LiN5bmzIDwgYmVcLW91dHJhZ2VkXC1ieVwtYW5cLWluanVzdGljZTsKK+S6i+aDheimgeWBmiA8IHRoaW5nXC10aGF0XC1uZWVkc1wtdG9cLWJlXC1kb25lOwor5b6p55SmIDwgcmVjb3ZlcnlcLVwoaGVhbHRoXCxcLWVjb25vbWljXCk7CivmmYLmnJ8gPCBhXC1wZXJpb2RcLWluXC10aW1lXC1vclwtaGlzdG9yeTsKK+WQhOWcsCA8IGluXC1hbGxcLXBhcnRzXC1vZlwtXChhXC1jb3VudHJ5XCk7CivnlLflrZDmvKIgPCBtYW5cLVwoaVwuZVwuXC1tYW5seVwsXC1tYXNjdWxpbmVcKTsKK+eVpiA8IHNlY3Rpb25zXC1pblwtdmVnZXRhYmxlXC1mYXJtOwor55S6IDwgcmFpc2VkXC1wYXRoXC1iZXR3ZWVuXC1maWVsZHM7Civlm4EgPCBtb3ZlXC1saXBzXC1hc1wtd2hlblwtc3BlYWtpbmc7CivkvKYgPCBub3JtYWxcLWh1bWFuXC1yZWxhdGlvbnNoaXBzOwor5ZibIDwgZmluYWxcLWV4Y2xhbWF0b3J5XC1wYXJ0aWNsZTsKK+iQqCA8IGJ1ZGRoaXN0XC1nb2RzXC1vclwtaW1tb3J0YWxzOwor5qGQIDwgbmFtZVwtYXBwbGllZFwtdmFyaW91c1wtdHJlZXM7CivokoIgPCBwZWR1bmNsZVwtb3JcLXN0ZW1cLW9mXC1wbGFudHM7CivntLogPCBkYXJrXC1ibHVlXC1vclwtcmVkZGlzaFwtY29sb3I7Civmo7UgPCBudW1lcmFyeVwtYWRqdW5jdFwtZm9yXC10cmVlczsKK+aGiyA8IHRvXC1zdXBwcmVzc1wtaW5uZXJcLWZlZWxpbmdzOwor5a2cIDwgYmVcLWFzXC1kaWxpZ2VudFwtYXNcLXBvc3NpYmxlOwor57KxIDwgYmV0dGVyXC12YXJpZXRpZXNcLW9mXC1taWxsZXQ7Civls5IgPCBtb3VudGFpblwtaW5cLWdhbnN1XC1wcm92aW5jZTsKK+amqCA8IHRvXC1wcmVzc1wtb3JcLWV4dHJhY3RcLWp1aWNlczsKK+mEsSA8IGNvdW50eVwtYW5kXC1sYWtlXC1pblwtamlhbmd4aTsKK+iPoCA8IHNwaW5hY2hcLWFuZFwtc2ltaWxhclwtZ3JlZW5zOwor5reeIDwgbmFtZVwtb2ZcLWFcLXJpdmVyXC1pblwtamlhbmdzdTsKK+a3hCA8IHJpdmVyXC1pblwtc2hhbmRvbmdcLXByb3ZpbmNlOwor5oKxIDwgdG9cLWJlXC1kZXNpcm91c1wtb2ZcLXNwZWFraW5nOwor5ryvIDwgcml2ZXJcLWluXC1ub3J0aGVyblwtc2hhbmRvbmc7CivolZkgPCBzcGVjaWVzXC1vZlwtZnJhZ3JhbnRcLW9yY2hpZDsKK+a7gSA8IGRpc3RyaWN0XC1pblwtYW5odWlcLXByb3ZpbmNlOwor54uBIDwgYVwtdHJpYmVcLW9mXC1zY3l0aGlhblwtbm9tYWRzOwor6YWiIDwgdG9hc3RcLW9uZScnc1wtaG9zdFwtd2l0aFwtd2luZTsKK+ihvyA8IGNvbGxhclwtb3JcLWxhcGVsXC1vZlwtZ2FybWVudDsKK+W2nSA8IHBhdGhcLWxlYWRpbmdcLXVwXC1hXC1tb3VudGFpbjsKK+aXgyA8IHNpbGtcLWJhbm5lclwtd2l0aFwtYmVudFwtcG9sZTsKK+m9kSA8IGJyZWFrXC1vclwtc21hc2hcLWludG9cLXBpZWNlczsKK+iEmCA8IGludGVybmFsXC1jYXZpdHlcLW9mXC1zdG9tYWNoOwor6ZWSIDwgbWVhc3VyZVwtb2ZcLXdlaWdodFwtZm9yXC1nb2xkOwor55ytIDwgZXZpbFwtbG9va1wtb2ZcLWRlZXBcLXNldFwtZXllczsKK+mUliA8IHRoZVwtY29sb3JcLW9mXC10aGVcLWFcLW1pbmVyYWw7CivpgpkgPCBtb3VudGFpblwtaW5cLWhlbmFuXC1wcm92aW5jZTsKK+aVqyA8IGFuY2llbnRcLW11c2ljYWxcLWluc3RydW1lbnQ7CivokJEgPCBncmFzc1wtdXNlZFwtZm9yXC1tYWtpbmdcLW1hdHM7Civop68gPCB3aW5lXC1nb2JsZXRcLW1hZGVcLWZyb21cLWhvcm47CivoiKMgPCB0b1wtbW9vclwtYVwtYm9hdFwtdG9cLXRoZVwtYmFuazsKK+eikeaWhyA8IGFuXC1pbnNjcmlwdGlvblwtb25cLWFcLXRhYmxldDsKK+W3tOWFkueLlyA8IHBla2luZ2VzZVwtXChhXC1icmVlZFwtb2ZcLWRvZ1wpOwor5LiA6Lev5bmz5a6JIDwgdG9cLWhhdmVcLWFcLXBsZWFzYW50XC1qb3VybmV5Owor57SQ57SE5pmC5aCxIDwgbmV3XC15b3JrXC10aW1lc1wtXChuZXdzcGFwZXJcKTsKK+WPsOWMlyA8IHRhaXBlaVwtXChjYXBpdGFsXC1vZlwtdGFpd2FuXCk7CivluLjllY/llY/poYwgPCBmcmVxdWVudGx5XC1hc2tlZFwtcXVlc3Rpb25zOwor55m+5a2U5Y2D55ihIDwgcmlkZGxlZFwtd2l0aFwtZ2FwaW5nXC13b3VuZHM7CivlhbXpgKPnpo3ntZAgPCByYXZhZ2VkXC1ieVwtc3VjY2Vzc2l2ZVwtd2FyczsKK+ays+WFpyA8IGhhbm9pXC1cKGNhcGl0YWxcLW9mXC12aWV0bmFtXCk7Civph4/lipsgPCB0b1wtZXN0aW1hdGVcLW9uZScnc1wtc3RyZW5ndGg7CivmnKzlnLDnrqHnkIbnlYzpnaIgPCBsb2NhbFwtbWFuYWdlbWVudFwtaW50ZXJmYWNlOwor6ZW35pyf5Lul5L6GIDwgZXZlclwtc2luY2VcLWFcLWxvbmdcLXRpbWVcLWFnbzsKK+WtmOi7iuiZlSA8IHBhcmtpbmdcLWxvdFwtXChmb3JcLWJpY3ljbGVzXCk7CivmlqHml4sgPCBtZWRpYXRlXC1cKGFcLWNvbmZsaWN0XCxcLWV0Y1wuXCk7CivnmbzlsZXmoLjmrablmaggPCB0b1wtZGV2ZWxvcFwtbnVjbGVhclwtd2VhcG9uczsKK+WuieWutuiQveaItiA8IG1ha2VcLW9uZScnc1wtaG9tZVwtaW5cLWFcLXBsYWNlOwor5YWl5pyo5LiJ5YiGIDwgd3JpdHRlblwtaW5cLWFcLWZvcmNlZnVsXC1oYW5kOwor54mM5Yy+IDwgYm9hcmRcLVwoYXR0YWNoZWRcLXRvXC1hXC13YWxsXCk7Civli5XmiYsgPCB0b1wtaGl0XC13aXRoXC1oYW5kc1wtb3JcLWZpc3RzOwor6by754mb5YWSIDwgaGFyZGVuZWRcLW11Y3VzXC1pblwtbm9zdHJpbHM7CivmraXmnIggPCB0b1wtc3Ryb2xsXC1iZW5lYXRoXC10aGVcLW1vb247CivnlbDmraXlgrPovLjmqKHlvI8gPCBhc3luY2hyb25vdXNcLXRyYW5zZmVyXC1tb2RlOwor6KqT5birIDwgdG9cLXZvd1wtYmVmb3JlXC1vbmUnJ3NcLXRyb29wczsKK+mDqOWnlCA8IG1pbmlzdHJpZXNcLWFuZFwtY29tbWlzc2lvbnM7Civpm6PmgKogPCBcKGl0JydzXClcLW5vXC13b25kZXJcLVwodGhhdFwuXC5cLlwpOwor5YeN57WQIDwgXChsb2FuXCxcLXdhZ2VcLFwtcHJpY2VcKVwtZnJlZXplOwor5pa95YqgIDwgZXhlcnRcLVwoZWZmb3J0XC1vclwtcHJlc3N1cmVcKTsKK+imlueqlyA8IHdpbmRvd3NcLVwob3BlcmF0aW5nXC1zeXN0ZW1cKTsKK+W3qOiRlyA8IG1vbnVtZW50YWxcLVwobGl0ZXJhcnlcKVwtd29yazsKK+WIhuaZguWkmuW3pSA8IHRpbWVcLWRpdmlzaW9uXC1tdWx0aXBsZXhpbmc7Civli5/ljJYgPCB0b1wtY29sbGVjdFwtYWxtc1wtXChidWRkaGlzbVwpOwor5qC55rex6JKC5Zu6IDwgZGVlcFwtcm9vdGVkXC1cKHByb2JsZW1cLFwtZXRjXCk7Civlj5vorornmoTnnIHku70gPCByZW5lZ2FkZVwtcHJvdmluY2VcLVwodGFpd2FuXCk7Civpg6jkuIsgPCB0cm9vcHNcLXVuZGVyXC1vbmUnJ3NcLWNvbW1hbmQ7CivpprUgPCBob3JzZVwtd2l0aFwtd2hpdGVcLWJhY2tcLWxlZ3M7Civpo6MgPCBkaXNwbGF5XC1mb29kXC1mb3JcLXNob3dcLW9ubHk7CivmmJ/ls7bml6XloLEgPCBzaW5nXC10YW9cLWRhaWx5XC1cKG5ld3NwYXBlclwpOwor6ZeSIDwgdXBwZXJcLXN0b3J5XC1kb29yXC1vclwtd2luZG93Owor5YWo56iLIDwgXChkdXJpbmdcLWFuXClcLWVudGlyZVwtam91cm5leTsKK+mVt+evhyA8IGxlbmd0aHlcLVwocmVwb3J0XC1vclwtc3BlZWNoXCk7Civpm7vohabovJTliqnmlZnmnZAgPCBjb21wdXRlclwtYWlkZWRcLWluc3RydWN0aW9uOwor6KW/5rmWIDwgdGhlXC13ZXN0XC1sYWtlXCxcLWluXC1oYW5nemhvdTsKK+WuouaItuapn+acjeWLmeWZqOeSsOWigyA8IGNsaWVudFwtc2VydmVyXC1lbnZpcm9uZW1lbnQ7CivpioEgPCBhXC13ZWlnaHRcLW9mXC10aGlydHlcLWNhdHRpY3M7CivphoogPCB0b1wtcG91clwtd2luZVwtaW5cLWFcLWxpYmF0aW9uOwor6YO/IDwgY291bnR5XC1pblwtc2hhYW54aVwtcHJvdmluY2U7Civpg7MgPCBzdGF0ZVwtaW5cLXNoYW5kb25nXC1wcm92aW5jZTsKK+mDoCA8IHBsYWNlXC1pblwtc2hhbmRvbmdcLXByb3ZpbmNlOwor6YOaIDwgdG93bnNcLWluXC1zaGFuZG9uZ1wtcHJvdmluY2U7CivovKQgPCBhXC1wYWxsXC10b1wtY292ZXJcLXRoZVwtaGVhcnNlOwor5pKl5byEIDwgbW92ZVwtdG9cLWFuZFwtZnJvXC1cKHdpdGhcLWhhbmQ7CivooajoqJggPCBzb21ldGhpbmdcLWdpdmVuXC1hc1wtYVwtdG9rZW47CivouJIgPCB0b1wtc2xpcFwtYW5kXC1zcHJhaW5cLWFcLWJsaW1iOwor6KGo6KOhIDwgdGhlXC1vdXRzaWRlXC1hbmRcLXRoZVwtaW5zaWRlOwor6KaQIDwgYVwtc2xlZXBcLXRvXC1yZWFsaXplXC10b1wtZmVlbDsKK+ahg+iKsemBiyA8IGx1Y2tcLXdpdGhcLXRoZVwtb3Bwb3NpdGVcLXNleDsKK+mbu+S/oeacjeWLmSA8IHRlbGVjb21tdW5pY2F0aW9uc1wtc2VydmljZTsKK+mAvOWCtSA8IHByZXNzXC1mb3JcLXBheW1lbnRcLW9mXC1kZWJ0czsKK+WFrOmWi+mRsOWMmSA8IHB1YmxpY1wta2V5XC1cKGluXC1lbmNyeXB0aW9uXCk7CivomaEgPCBzdXBwb3J0XC1zdHJ1Y3R1cmVcLWZvclwtYmVsbDsKK+iWviA8IGx1eHVyaWFudFwtZ3Jvd3RoXC1vZlwtZmxvd2VyOwor5byX5aGe5aWHIDwgdmVyc2FjZVwtXChmYXNoaW9uXC1kZXNpZ25lclwpOwor6IyIIDwgYVwtcGxhbnRcLXlpZWxkaW5nXC1hXC1yZWRcLWR5ZTsKK+aZrumAmuipsSA8IG1hbmRhcmluXC1cKGNvbW1vblwtbGFuZ3VhZ2VcKTsKK+mbu+S/oee2sui3ryA8IHRlbGVjb21tdW5pY2F0aW9uc1wtbmV0d29yazsKK+iGhiA8IHRoZVwtY29ycFwtb2ZcLWFcLWJpcmRcLW9yXC1mb3dsOwor6Zu76IWm6LyU5Yqp5bel56iLIDwgY29tcHV0ZXJcLWFpZGVkXC1lbmdpbmVlcmluZzsKK+aEn+afk+S6uuaVuCA8IG51bWJlclwtb2ZcLWluZmVjdGVkXC1wZXJzb25zOwor562G6YuSIDwgdGhlXC10aXBcLW9mXC1hXC13cml0aW5nXC1icnVzaDsKK+WgseWIiiA8IG5ld3NwYXBlcnNcLWFuZFwtcGVyaW9kaWNhbHM7Civnmb7mraXnqb/mpYogPCBzaG9vdFwtd2l0aFwtZ3JlYXRcLXByZWNpc2lvbjsKK+e9rSA8IGRyYWdcLW5ldFwtbWFkZVwtb2ZcLWZpbmVcLW1lc2g7CivnvY8gPCBlYXJ0aGVuXC1zdGFuZFwtZm9yXC13aW5lXC1qdWc7CivnvY0gPCBsYXJnZVwtZWFydGhlbndhcmVcLXdpbmVcLWphcjsKK+a8lOismyA8IFwoZ2l2ZVwpXC1hXC1zcGVlY2hcLW9yXC1sZWN0dXJlOwor57m4IDwgaGVtXC1vclwtYm9yZGVyXC1vZlwtYVwtZ2FybWVudDsKK+Wci+eItiA8IGZhdGhlclx8Zm91bmRlclwtb2ZcLWFcLW5hdGlvbjsKK+evnyA8IGx1eHVyaWFudFwtZ3Jvd3RoXC1vZlwtYmFtYm9vOwor5L6d6Z2gIDwgcmVseVwtb25cLVwoZm9yXC1zdXBwb3J0XCxcLWV0Y1wpOwor5omA6ZW3IDwgaGVhZFwtb2ZcLWFuXC1pbnN0aXR1dGVcLFwtZXRjXC47CivnqoYgPCB0b1wtcHV0XC1hXC1jb2ZmaW5cLWluXC1hXC1ncmF2ZTsKK+elsiA8IG9taW5vdXNcLW9yXC1zaW5pc3Rlclwtc3Bpcml0Owor5bm+5bm05L6GIDwgZm9yXC10aGVcLXBhc3RcLXNldmVyYWxcLXllYXJzOwor6Iul5bmyIDwgYVwtY2VydGFpblwtbnVtYmVyXHxhbW91bnRcLW9mOwor55mVIDwgbG9zc1wtb2ZcLXRoZVwtc2Vuc2VcLW9mXC1zbWVsbDsKK+mgpOWSjOWckiA8IHN1bW1lclwtcGFsYWNlXC1cKGluXC1iZWlqaW5nXCk7Civnq7bpgbggPCBydW5cLWZvclwtXChlbGVjdG9yYWxcKVwtb2ZmaWNlOwor5pC25YWIIDwgdG9cLXJ1c2hcLVwodG9cLWRvXC1zdGhcLXVyZ2VudFwpOwor54+bIDwgcXVpY2tseVwtZGV0ZXJpb3JhdGluZ1wtamFkZTsKK+WBnOeVmSA8IHN0YXlcLXNvbWV3aGVyZVwtdGVtcG9yYXJpbHk7CivmvrcgPCB3YXRlclwtb3ZlcmZsb3dpbmdcLWRpZmZ1c2VkOwor5Ye654++5oSP5aSWIDwgXCh0b1wtYXBwZWFyXClcLXVuZXhwZWN0ZWRcKGx5XCk7Civmr6kgPCBhXC1sZWF0aGVyXC1iYWxsXC1mb3JcLWtpY2tpbmc7Civnl4XmoKogPCBkaXNlYXNlZFwtb3JcLWluZmVjdGVkXC1wbGFudDsKK+S/l+eosSA8IGJlXC1jb21tb25seVwtcmVmZXJyZWRcLXRvXC1hczsKK+aPuSA8IGNhcnJ5XC10aGluZ3NcLW9uXC1vbmUnJ3NcLWJhY2s7Civmj4EgPCBzb3VuZFwtb2ZcLXNldHRpbmdcLXVwXC1hXC1rb3RvOwor5LiA6Ke45Y2z55m8IDwgY291bGRcLWhhcHBlblwtYXRcLWFueVwtbW9tZW50Owor6KGM5bCHIDwgYmVcLWFib3V0XC10b1wtXChkb1wtc29tZXRoaW5nXCk7CivotrPnkIMgPCBmb290YmFsbFwtXChicml0aXNoXC1lbmdsaXNoXCk7Civnupboiq/nm7TlvpEgPCBjb3JlXC1kaWFtZXRlclwtXChvZlwtYVwtZmliZXJcKTsKK+WqpyA8IG15dGhvbG9naWNhbFwtc25haWxcLWdvZGRlc3M7Civog4zohIogPCB0aGVcLWJhY2tcLW9mXC10aGVcLWh1bWFuXC1ib2R5Owor5ZuJIDwgZXhjbGFtYXRvcnlcLWZpbmFsXC1wYXJ0aWNsZTsKK+WuouaItuacjeWLmeWZqOe1kOaniyA8IGNsaWVudFwtc2VydmVyXC1hcmNoaXRlY3R1cmU7CivlmLcgPCB0aGVcLXJvYXJpbmdcLW9mXC13aWxkXC1iZWFzdHM7CivpgLLooYzkuqTmmJMgPCB0b1wtY2FycnlcLW91dFwtYVwtdHJhbnNhY3Rpb247Civmipfmk4ogPCByZXNpc3RcLVwoYVwtbWlsaXRhcnlcLWF0dGFja1wpOwor5YmeIDwgY2FydmluZ1wtb3JcLWVuZ3JhdmluZ1wta25pZmU7CivppqzkvobkurogPCBtYWxheXNpYW5cLXBlcnNvblwtb3JcLXBlb3BsZTsKK+WGjyA8IGFidXRpbG9uXC1hdmljZW5uYWVcLVwocGxhbnRcKTsKK+WIpeWHuuW/g+ijgSA8IGFkb3B0XC1hblwtb3JpZ2luYWxcLWFwcHJvYWNoOwor5bCL5qmfIDwgdG9cLWxvb2tcLWZvclwtYW5cLW9wcG9ydHVuaXR5Owor5LmrIDwgdXNlZFwtaW5cLWtvcmVhblwtcGxhY2VcLW5hbWVzOwor5a+m5rOBIDwgd2hhdFwtaXNcLWFjdHVhbGx5XC1oYXBwZW5pbmc7CivktYYgPCBncmFpbnNcLWZyb21cLXRoZVwtZGlzdGlsbGVyeTsKK+SyryA8IGFcLWtpbmRcLW9mXC1ibGFja1wtc21hbGxcLWJpcmQ7Civkr5MgPCB0aGVcLWhlYWRcLWJvbmVcLW9mXC1saXZlc3RvY2s7CivkrrYgPCBmbG9ja1wtb2ZcLWhvcnNlc1wtc3RhbXBlZGluZzsKK+SuoyA8IGFcLXllbGxvd1wtd2l0aFwtYVwtd2hpdGVcLXRhaWw7CivlqpLpq5TmjqXlj6PpgKPmjqXlmaggPCBtZWRpdW1cLWludGVyZmFjZVwtY29ubmVjdG9yOwor5bqV54m55b6LIDwgZGV0cm9pdFwtXChhXC1jaXR5XC1pblwtdGhlXC11c1wpOwor5KyxIDwgY29hcnNlXC1ncmFpbnNcLXN1Y2hcLWFzXC1jb3JuOwor5Lit5ZyL56eR5a246ZmiIDwgY2hpbmVzZVwtYWNhZGFteVwtb2ZcLXNjaWVuY2U7CivkqbIgPCBhXC10b29sXC11c2VkXC10b1wtY3V0XC1sZWF0aGVyOwor5KmaIDwgdG9cLW1lbmRcLXRoZVwtc29sZXNcLW9mXC1zaG9lczsKK+eZvueZvOeZvuS4rSA8IGV2ZXJ5XC1zaG90XC1oaXRzXC10aGVcLXRhcmdldDsKK+S4gembsiA8IGRpbmdcLXl1blwtXChhXC1wZXJzb25hbFwtbmFtZVwpOwor6Jmb5pOs6YCa6YGT6YCj5o6lIDwgdmlydHVhbFwtY2hhbm5lbFwtY29ubmVjdGlvbjsKK+ShpiA8IHRoZVwtZW1wdHlcLXNwYWNlXC1vZlwtYVwtd2hlZWw7CivmoYjmnb8gPCBrbmVhZGluZ1wtb3JcLWNob3BwaW5nXC1ib2FyZDsKK+SgiSA8IHRvXC1ydW5cLWF3YXlcLW9yXC1lc2NhcGVcLWZyb207CivknpEgPCBhXC1yZWRcLXN3ZWxsaW5nXC1vZlwtdGhlXC1za2luOwor5L+d5a6IIDwgXChwb2xpdGljYWxseVwpXC1jb25zZXJ2YXRpdmU7Civkm68gPCB0aGVcLXJlYXNvbmFibGVcLW9mXC1zcGVla2luZzsKK+SWhSA8IG5hbWVcLW9mXC1hXC12YXJpZXR5XC1vZlwtZ3Jhc3M7CivklIUgPCBuYW1lXC1vZlwtYVwtdmFyaWV0eVwtb2ZcLXRyZWVzOwor5JKxIDwgdHdpZ3NcLW9mXC1oZW1wXC11c2VkXC1mb1wtZnVlbDsKK+SOtyA8IGFuXC1vbGRcLW1hblwtd2l0aFwtd2hpdGVcLWhhaXI7CivkuI3pgIEgPCBkb24nJ3RcLWJvdGhlclwtdG9cLXNlZVwtbWVcLW91dDsKK+SMoCA8IGhvbGRcLW9uXC10b1wtb25lJydzXC1vd25cLXZpZXdzOwor6Z2i5Zqu5bCN6LGh55qE5oqA6KGTIDwgb2JqZWN0XC1vcmllbnRlZFwtdGVjaG5vbG9neTsKK+elnumBkyA8IHNoaW50b1wtXChqYXBhbmVzZVwtcmVsaWdpb25cKTsKK+SLgCA8IHNob2VzXC1tYWRlXC1vZlwtaGVtcFwtb3JcLWhhaXI7Civkiq4gPCBuYW1lXC1vZlwtYVwtdmFyaWV0eVwtb2ZcLWdyYWluOwor5ImCIDwgYVwtYmFza2V0XC1mb3JcLWVhcnRoXC1vclwtc29pbDsKK+SHliA8IHJvcGVcLW1hZGVcLW9mXC1iYW1ib29cLXN0cmlwczsKK+SGgCA8IHRvXC1jb3JydXB0XC1vclwtYmVcLWNvcnJ1cHRlZDsKK+SFviA8IHN0YXJ0aW5nXC10b1wtcHV0XC1mb3J0aFwtZWFyczsKK+SFrCA8IHNtYWxsXC1idW5kbGVcLW9mXC1yaWNlXC1wbGFudDsKK+Wwh+WwsSA8IGFjY2VwdFwtXChhXC1iaXRcLXJlbHVjdGFudGx5XCk7CivkuI3kuqLkuI3ljZEgPCBuZWl0aGVyXC1oYXVnaHR5XC1ub3JcLWh1bWJsZTsKK+SBjiA8IHRvXC1tYWtlXC1hXC1jbG9zZVwtaW5zcGVjdGlvbjsKK+SAiiA8IGFcLWtpbmRcLW9mXC13YXRlclwtY29udGFpbmVyczsKK+aHt+aKsSA8IFwod2l0aGluXC1zb21lb25lJydzXClcLWVtYnJhY2U7CivjvKkgPCBjb25jYXZlXC1jaGFubmVsc1wtb2ZcLXRpbGluZzsKK+eUqOaItuerr+ioreWCmSA8IGN1c3RvbWVyXC1wcmVtaXNlXC1lcXVpcG1lbnQ7Civmg4Xms4HkuIsgPCB1bmRlclwtXCh0aGlzXClcLWNpcmN1bXN0YW5jZXM7CivjuqAgPCBhXC1ibGFja1wtYXBlXC13aXRoXC1sb25nXC10YWlsOwor47qVIDwgdGhlXC1maWdodGluZ1wtc291bmRcLW9mXC1kb2dzOwor47maIDwgc291bmRcLW9mXC1jYWxsaW5nXC10b1wtYVwtY2FsZjsKK+O3tiA8IHRvXC1kcnlcLW9yXC13YXJtXC1uZWFyXC1hXC1maXJlOwor5rqr5ZOl6I+vIDwgdmFuY291dmVyXC1cKGNpdHlcLWluXC1jYW5hZGFcKTsKK+O3gyA8IGZpcmVcLWJ1cm5zXC1mb3JcLWFcLWxvbmdcLXRpbWU7CivjtJQgPCB0aGVcLW5vaXNlXC1vZlwtZmxvd2luZ1wtd2F0ZXI7CivjtIsgPCBkZWVwXC1hbmRcLWNsZWFyXC1cLXRvXC11cmluYXRlOwor47OnIDwgdGhlXC13YXRlclwtZmxvd2luZ1wtZnJvbVwtXC5cLlwuOwor47G9IDwgdG9cLWhpdFwtb3JcLXRvXC1zdHJpa2VoZWF2aWx5Owor47G7IDwgZGlzZWFzZXNcLW9mXC1kdW1iXC1jcmVhdHVyZXM7CivjsaEgPCB0aGVcLXNvdWxcLW91dFwtb2ZcLW9uZScnc1wtYm9keTsKK+OxlCA8IGFcLXNtYWxsXC1xdWFudGl0eVwtb3JcLW51bWJlcjsKK+OvnyA8IGZvb3RcLW9mXC1hXC1oaWxsXC1vclwtbW91bnRhaW47Civjra4gPCBhXC1raW5kXC1vZlwtbGlxdW9yXC1jb250YWluZXI7Civlj7PpgoogPCByaWdodFwtXChhc1wtb3Bwb3NlZFwtdG9cLWxlZnRcKTsKK+S4jeetieWDueS6pOaPmyA8IGV4Y2hhbmdlXC1vZlwtdW5lcXVhbFwtdmFsdWVzOwor55m96aCt57+BIDwgcm9vdFwtb2ZcLWNoaW5lc2VcLXB1bHNhdGlsbGE7CivvqIwgPCBkdXBsaWNhdGVcLW9mXC1iaWdcLWZpdmVcLWE0NjE7Civnmb3lo4HnhKHnkZUgPCBpbXBlY2NhYmxlXC1tb3JhbFwtaW50ZWdyaXR5Owor46aDIDwgcGVyZmVjdFwtcGVyc29uYWxcLWNoYXJhY3RlcjsKK+ekvuirliA8IGVkaXRvcmlhbFwtXChpblwtYVwtbmV3c3BhcGVyXCk7CivlrrbluLggPCB0aGVcLWRhaWx5XC1saWZlXC1vZlwtYVwtZmFtaWx5Owor46WNIDwgdG9cLWJlYXJcLWplYWxvdXNcLWhhdHJlZFwtZm9yOwor46SsIDwgZnVsbFwtb2ZcLWFuZ2VyXC1hbmRcLXZleGF0aW9uOwor46SOIDwgYVwtbW9kZWxcLW9yXC10eXBpY2FsXC1leGFtcGxlOwor46SEIDwgcmFnaW5nXC1hbmltb3NpdHlcLW9yXC1oYXRyZWQ7Civjo6cgPCB0aGVcLXN1Y2Nlc3Npb25cLWluXC1hXC1mYW1pbHk7Civjo6MgPCB0b1wtd2Fsa1wtaW5cLWFuXC11bnN0ZWFkeVwtd2F5Owor46K4IDwgZGV2aWNlXC1mb3JcLXJlZ3VsYXRpbmdcLWJvd3M7CivjopIgPCBhblwtYWxtb3N0XC1jb2xsYXBzaW5nXC1ob3VzZTsKK+abuOiBliA8IGFcLWdyZWF0XC1jYWxsaWdyYXBoeVwtbWFzdGVyOwor45yqIDwgbmFtZVwtb2ZcLWFcLWZhbWlseVwtb3JcLWFcLWNsYW47CivjnJUgPCByZWxhdGl2ZXNcLXRocm91Z2hcLW1hcnJpYWdlOwor45uyIDwgdGhlXC1oYWlyXC1vblwtdGhlXC1odW1hblwtaGVhZDsKK+OavyA8IGFcLWdvZGRlc3MnJ3NcLW5hbWVcLWluXC1sZWdlbmQ7CivjmaEgPCBhXC1raW5kXC1vZlwtZWF0YWJsZVwtbXVzaHJvb207CivjmLkgPCB0b1wtc3ByZWFkXC1zb2lsXC1vblwtdGhlXC1yb2FkOwor5Lit5paH54mIIDwgY2hpbmVzZVwtXChsYW5ndWFnZVwpXC12ZXJzaW9uOwor45ikIDwgY2lyY2xlXC1vZlwtdGhlXC1tb3ZpbmdcLXdhdGVyOwor45aoIDwgaW5kaXN0aW5jdFwtbmFzYWxcLXV0dGVyYW5jZTsKK+OSvSA8IGFcLWtpbmRcLW9mXC1jYXBcLWZvclwtY2hpbGRyZW47Civpq5jkuK3nlJ8gPCBzZW5pb3JcLWhpZ2hcLXNjaG9vbFwtc3R1ZGVudDsKK+OQliA8IGFcLXRyYW5zbGF0ZWRcLW5hbWVcLW9mXC1pbmRpYTsKK+izh+acrCA8IGNhcGl0YWxcLVwoYXNcLWluXC1jYXBpdGFsaXNtXCk7Civmnb/nvr3nkIMgPCBiYXR0bGVkb3JlXC1hbmRcLXNodXR0bGVjb2NrOwor6aKo55C0IDwgb3JnYW5cLVwobXVzaWNhbFwtaW5zdHJ1bWVudFwpOwor5a2X5biWIDwgY29weWJvb2tcLVwoZm9yXC1jYWxsaWdyYXBoeVwpOwor5pWX5a2Q5Zue6aCtIDwgcmV0dXJuXC1vZlwtdGhlXC1wcm9kaWdhbFwtc29uOwor6Kiq5ZWP576O5ZyLIDwgdG9cLXZpc2l0XC10aGVcLXVuaXRlZFwtc3RhdGVzOwor5LiN5aSx5pmC5qmfIDwgc2VpemVcLXRoZVwtb3Bwb3J0dW5lXC1tb21lbnQ7CivlronliIYgPCBub3RcLWdvXC1iZXlvbmRcLW9uZScnc1wtYm91bmRzOwor5pqX56yRIDwgbGF1Z2hcLWluXC1cKHVwXClcLW9uZScnc1wtc2xlZXZlOwor5bCO5b2I5r2b6ImHIDwgXChndWlkZWRcKVwtbWlzc2lsZVwtc3VibWFyaW5lOwor576O546yIDwgbWVpXC1saW5nXC1cKGFcLXBlcnNvbicnc1wtbmFtZVwpOwor56Kn6KGAIDwgYmxvb2RcLXNoZWRcLWluXC1hXC1qdXN0XC1jYXVzZTsKK+WPg+WFqemZoiA8IGJvdGhcLWhvdXNlc1wtb2ZcLXVzXC1jb25ncmVzczsKK+a0quajriA8IGh1blwtc2VuXC1cKGNhbWJvZGlhblwtbGVhZGVyXCk7CivnqJ/lkYogPCByZXBvcnRcLVwodG9cLW9uZScnc1wtc3VwZXJpb3JcKTsKK+mBuumrlCA8IHJlbWFpbnNcLVwob2ZcLWFcLWRlYWRcLXBlcnNvblwpOwor6YG/6aKoIDwgdGFrZVwtc2hlbHRlclwtZnJvbVwtdGhlXC13aW5kOwor56aP5bu6IDwgZnVqaWFuXC1cKHByb3ZpbmNlXC1vZlwtY2hpbmFcKTsKK+WuieWmguazsOWxsSA8IGFzXC1zZWN1cmVcLWFzXC1tb3VudFwtdGFpc2hhbjsKK+WLmOiqpCA8IHRvXC1jb3JyZWN0XC1wcmludGluZ1wtZXJyb3JzOwor5Y2H57SaIDwgdG9cLWVzY2FsYXRlXC1cKGluXC1pbnRlbnNpdHlcKTsKK+W8t+iqvyA8IHRvXC1lbXBoYXNpemVcLVwoYVwtc3RhdGVtZW50XCk7CivogIzkuJQgPCBub3RcLW9ubHlcLVwuXC5cLlwtYnV0XC1hbHNvXC1cLlwuXC5cLjsKK+mBt+mDvSA8IHRvXC1tb3ZlXC10aGVcLWNhcGl0b2xcLVwoY2l0eVwpOwor5LiN576p5LmL6LKhIDwgaWxsXC1nb3R0ZW5cLXdlYWx0aFwtb3JcLWdhaW5zOwor6YeN6KaB55qE5pivIDwgaXRcLWlzXC1pbXBvcnRhbnRcLVwodGhhdFwpXC1cLlwuXC47CivkuI3kvYYgPCBub3RcLW9ubHlcLVwoXC5cLlwuXC1idXRcLWFsc29cLlwuXC5cKTsKK+WMheeUoiA8IG1ha2VcLWFcLXByb2R1Y3Rpb25cLWNvbnRyYWN0Owor55mf6J6655enIDwgY2hvbGVyYVwtXCh3aXRoXC1kZWh5ZHJhdGlvblwpOwor5bGKIDwgbnVtZXJhcnlcLWFkanVuY3RcLWZvclwtdGltZTsKK+iwgSA8IHdob1w/XC13aG9tXD9cLXdob3NlXD9cLWFueW9uZVw/Owor6Zi/IDwgcHJlZml4XC1mb3JcLXBlb3BsZScnc1wtbmFtZXM7CivojqIgPCBwb2RzXC1vZlwtbGVndW1pbm91c1wtcGxhbnRzOwor54uEIDwgdHJpYmVcLWZyb21cLW5vcnRoZXJuXC1jaGluYTsKK+e5sCA8IHRvXC1yZWVsXC1zaWxrXC1mcm9tXC1jb2Nvb25zOwor5ryTIDwgcml2ZXJcLWluXC1ndWFuZ3hpXC1wcm92aW5jZTsKK+WSiyA8IHF1ZXN0aW9uXC1mb3JtaW5nXC1wYXJ0aWNsZTsKK+m6nyA8IGZlbWFsZVwtb2ZcLWNoaW5lc2VcLXVuaWNvcm47CivmuK0gPCBuYW1lXC1vZlwtYVwtcml2ZXJcLWluXC1zaGFueGk7CivoipwgPCBsdXh1cmlvdXNcLWdyb3d0aFwtb2ZcLXdlZWRzOwor57uOIDwgdG9cLXVucmF2ZWxcLW9yXC11bnJlZWxcLXNpbGs7CivnkpAgPCBiZWF1dGlmdWxcLXZhcmlldHlcLW9mXC1qYWRlOwor6Z+2IDwgbXVzaWNcLW9mXC10aGVcLWVtcGVyb3JcLXNodW47CivprJ8gPCBkcmVzc1wtaGFpclwtaW5cLWNvaWxlZFwta25vdDsKK+e9giA8IGxvbmdcLW5lY2tlZFwtamFyXC1vclwtYm90dGxlOwor6Z2zIDwgc3RyYXBcLW9uXC1hXC1ob3JzZScnc1wtYnJlYXN0Owor5remIDwgcml2ZXJcLWluXC1qaWFuZ3hpXC1wcm92aW5jZTsKK+aQoSA8IHRvXC1wdXNoXC1vdmVyXC1vclwtcHVzaFwtYmFjazsKK+iJriA8IHNldmVudGhcLW9mXC1laWdodFwtZGlhZ3JhbXM7CivmuZ8gPCByaXZlclwtaW5cLXFpbmdoYWlcLXByb3ZpbmNlOwor54yxIDwgYVwtbW9ua2V5XC13aXRoXC15ZWxsb3dcLWhhaXI7CivmtqogPCByaXZlclwtaW5cLXNpY2h1YW5cLXByb3ZpbmNlOwor5LqzIDwgbmFtZVwtb2ZcLWRpc3RyaWN0XC1pblwtYW5odWk7CivolLogPCBydXNoXC11c2VkXC1mb3JcLW1ha2luZ1wtbWF0czsKK+eQrCA8IHRoZVwtdmlydHVlXC1vZlwtYVwtZ2VudGxlbWFuOwor54yXIDwgZXhjbGFtYXRpb25cLW9mXC1hZG1pcmF0aW9uOwor6byZIDwgZHJ1bVwtY2FycmllZFwtb25cLWhvcnNlYmFjazsKK+iVsiA8IHZhcmlldHlcLW9mXC1hcnRlbWlzaWFcLXNlZWs7Civnk54gPCB5b3VuZ1wtbWVsb25zXC1qdXN0XC1mb3JtaW5nOwor6L6BIDwgY2FydFwtd2hlZWxcLXdpdGhcLW5vXC1zcG9rZXM7CivphYYgPCBuYW1lXC1vZlwtemhvdVwtcGVyaW9kXC1zdGF0ZTsKK+WMl+acnSA8IHRoZVwtbm9ydGhlcm5cLWR5bmFzdGllc1wtXChhOwor6LaF5paH5pys5qiZ6KiY6Kqe6KiAIDwgaHlwZXJ0ZXh0XC1tYXJrdXBcLWxhbmd1YWdlOwor5rC45LmF6Jmb6Zu76LevIDwgcGVybWFuZW50XC12aXJ0dWFsXC1jaXJjdWl0Owor5YyF5pSsIDwgdW5kZXJ0YWtlXC10aGVcLXdob2xlXC10aGluZzsKK+WLnuaVmSA8IHJlZWR1Y2F0aW9uXC10aHJvdWdoXC1sYWJvcjsKK+WNiuWgtCA8IGhhbGZcLW9mXC1hXC1nYW1lXC1vclwtY29udGVzdDsKK+mAmuS/oeaKgOihkyA8IGNvbW11bmljYXRpb25zXC10ZWNobm9sb2d5Owor55m86YGUIDwgZGV2ZWxvcGVkXC1cKGNvdW50cnlcLFwtZXRjXC5cKTsKK+WhnueIvue2reS6nuWFi+e+heWcsOS6nuiqniA8IHNlcmJvXC1jcm9hdGlhblwtXChsYW5ndWFnZVwpOwor54CJ6ZyyIDwgdG9cLWxlYWtcLW91dFwtXChpbmZvcm1hdGlvblwpOwor5q2y5pW4IDwgYWdlXC1cKG51bWJlclwtb2ZcLXllYXJzXC1vbGRcKTsKK+WkluWMr+WEsuWCmSA8IGZvcmVpZ25cLWV4Y2hhbmdlXC1yZXNlcnZlczsKK+mWi+iorSA8IG9mZmVyXC1cKGdvb2RzXC1vclwtc2VydmljZXNcKTsKK+W7o+adsSA8IGd1YW5nZG9uZ1wtcHJvdmluY2VcLFwtY2hpbmE7CivmlL7lv4MgPCB0b1wtc2V0XC1vbmUnJ3NcLW1pbmRcLWF0XC1yZXN0Owor6a2v6L+FIDwgbmFtZVwtb2ZcLWFuXC1hdXRob3JcLFwtbHVcLXh1bjsKK+mBmeacmyA8IHRvXC1sb29rXC1pbnRvXC10aGVcLWRpc3RhbmNlOwor6Zu75a2Q6YO15Lu25YKz6YCB5pyN5YuZIDwgXChlXC1cKW1haWxcLWRlbGl2ZXJ5XC1zZXJ2aWNlOwor6KOc6LazIDwgYnJpbmdcLXVwXC10b1wtZnVsbFwtc3RyZW5ndGg7CivpgI/pgJrmgKcgPCB0cmFuc3BhcmVuY3lcLVwobmV0d29ya2luZ1wpOwor54as5aScIDwgc3RheVwtdXBcLWxhdGVcLW9yXC1hbGxcLW5pZ2h0Owor6bC8IDwgdGhlXC13ZWF0aGVyXC1vclwtZG9qb1wtbG9hY2g7Civpq5TpqZcgPCB0b1wtZXhwZXJpZW5jZVwtZm9yXC1vbmVzZWxmOwor5pKV5q+AIDwgdGVhclwtdXBcLVwoYVwtY29udHJhY3RcLFwtZXRjXCk7Civlgr7pircgPCB0b1wtZHVtcFwtXChnb29kc1wsXC1wcm9kdWN0c1wpOwor6Z+UIDwgYVwtd3JhcHBlclwtb3JcLWNhc2VcLWZvclwtYm93Owor55yL5rOVIDwgd2F5XC1vZlwtbG9va2luZ1wtYXRcLWFcLXRoaW5nOwor6ZmXIDwgYVwtc3RlZXBcLWhpbGxcLlwtcHJlY2lwaXRvdXM7Civnh5/mpa3poY0gPCBzdW1cLW9yXC12b2x1bWVcLW9mXC1idXNpbmVzczsKK+mPviA8IHRoZVwtdHJpZ2dlclwtb2ZcLWFcLWNyb3NzYm93Owor6Zec5rOoIDwgZm9sbG93XC1cKGFuXC1pc3N1ZVwpXC1jbG9zZWx5Owor6YSgIDwgY291bnR5XC1pblwtc2hhbnhpXC1wcm92aW5jZTsKK+mEjiA8IGFcLXBsYWNlXC1pblwtaGVuYW5cLXByb3ZpbmNlOwor5Ymd5ZWEIDwgdGFwXC1cKG9uXC1hXC1kb29yXC1vclwtd2luZG93XCk7CivovqjmnpAgPCBkaWZmZXJlbnRpYXRlXC1hbmRcLWFuYWx5c2U7CivkuI3ovq3ovpvoi6YgPCBtYWtlXC1ub3RoaW5nXC1vZlwtaGFyZHNoaXBzOwor56iL5byP55CG5ZOhIDwgcHJvZ3JhbVwtbWFuYWdlclwtXCh3aW5kb3dzXCk7Civop7cgPCB0b1wtcHJvY2Vzc1wtb3JcLWNhcnZlXC1ob3JuczsKK+awkeS4u+m7qOS6uiA8IGFcLWRlbW9jcmF0aWNcLXBhcnR5XC1tZW1iZXI7CivonbAgPCB2aXBlcmFcLXJ1c3NlbGlpXC1zaWFtZW5zaXM7CivljYHlhITkvY3lhYPku6XlpKrntrLntaHoga/nm58gPCBnaWdhYml0XC1ldGhlcm5ldFwtYWxsaWFuY2U7CivokbYgPCBkcmFiYVwtbmVtZXJvc2FcLWJlYmVcLWNhcnBhOwor6IqUIDwgYVwtZ2VuZXJhbFwtdGVybVwtZm9yXC1wbGFudHM7CivohqUgPCBlZ2dzXC1vZlwtYmlyZHNcLW9yXC1yZXB0aWxlczsKK+S4ieWNgeW5tOS+hiA8IGZvclwtdGhlXC1wYXN0XC10aGlydHlcLXllYXJzOwor5oqA6KGT55m85bGVIDwgdGVjaG5vbG9naWNhbFwtZGV2ZWxvcG1lbnQ7CivlnIvnlKIgPCBtYWRlXC1pblwtb25lJydzXC1vd25cLWNvdW50cnk7Civpq5jnrYnlrbjmoKEgPCBjb2xsZWdlc1wtYW5kXC11bml2ZXJzaXRpZXM7Civnmb3ml48gPCB0aGVcLWJhaVwtXChwYWlcKVwtbmF0aW9uYWxpdHk7CivnupEgPCB0b1wtc29mdGVuXC1oZW1wXC1ieVwtYm9pbGluZzsKK+WOn+WboOW+iOewoeWWriA8IHRoZVwtcmVhc29uXC1pc1wtdmVyeVwtc2ltcGxlOwor57GpIDwgYmFtYm9vXC1jb250YWluZXJcLWZvclwtZm9vZDsKK+exnSA8IGFcLXR1YmVcLXRvXC1ob2xkXC1jaG9wc3RpY2tzOwor5bq35raF54uE5qC8IDwgY29ubmVjdGljdXRcLVwoc3RhdGVcLWluXC11c1wpOwor56yOIDwgYmFtYm9vXC13aXRoXC1ibGFja1wtcGF0Y2hlczsKK+WWrumAo+aOpeermSA8IHNpbmdsZVwtYXR0YWNobWVudFwtc3RhdGlvbjsKK+emmCA8IGltcGVyaWFsXC1hbmNlc3Rvclwtd29yc2hpcDsKK+efruWAi+WFkiA8IGFcLXBlcnNvblwtb2ZcLXNob3J0XC1zdGF0dXJlOwor55eF55mSIDwgcmVjb3ZlclwtXChmcm9tXC1hblwtaWxsbmVzc1wpOwor56SEIDwgcGxhY2VcLWluXC1zaWNodWFuXC1wcm92aW5jZTsKK+WvrOmZkCA8IGV4dGVuZFwtXChhXC1kZWFkbGluZVwsXC1ldGNcLlwpOwor55KqIDwgcGVhcmxcLXBlbmRhbnRzXC1vblwtY29yb25ldDsKK+eRvSA8IHRpbmtsaW5nXC1vZlwtamFkZVwtcGVuZGFudHM7CivnjLIgPCBzbW9rZVwtb3JcLWZsYW1lc1wtZnJvbVwtZmlyZTsKK+espuWQiOaomea6liA8IHRvXC1jb21wbHlcLXdpdGhcLWFcLXN0YW5kYXJkOwor56S65aiB6YGK6KGMIDwgYVwtXChwcm90ZXN0XClcLWRlbW9uc3RyYXRpb247Civms5wgPCBhXC1yaXZlclwtaW5cLWhlYmVpXC1wcm92aW5jZTsKK+azkiA8IGFcLXJpdmVyXC1pblwtaHViZWlcLXByb3ZpbmNlOwor5rGtIDwgY29uZmx1ZW5jZVwtb2ZcLXR3b1wtc3RyZWFtczsKK+arvSA8IHNoYXBlXC13b29kXC1ieVwtdXNlXC1vZlwtaGVhdDsKK+aZrCA8IGZpcnN0XC1iaXJ0aGRheVwtb2ZcLWFcLWNoaWxkOwor6KGo5oWLIDwgbWFrZVwta25vd25cLW9uZScnc1wtcG9zaXRpb247CivlrqPoqpMgPCBzd2VhclwtYW5cLW9hdGhcLVwob2ZcLW9mZmljZVwpOwor5aSn5pW155W25YmNIDwgY29uZnJvbnRcLWFcLXBvd2VyZnVsXC1lbmVteTsKK+aCiiA8IHdpc2VcLlwtdG9cLWtub3dcLWludHVpdGl2ZWx5Owor5ouc5pybIDwgY2FsbFwtdG9cLXBheVwtb25lJydzXC1yZXNwZWN0Owor5b2NIDwgdG9cLWRyYXdcLWFcLWJvd1wtdG9cLXRoZVwtZnVsbDsKK+aguOWkp+WciyA8IGFcLW51Y2xlYXJcLXBvd2VyXC1cKGNvdW50cnlcKTsKK+W6hSA8IGFuXC1pbnRlcnJvZ2F0aXZlXC1wYXJ0aWNsZTsKK+eglOijvemBjueoiyA8IG1hbnVmYWN0dXJpbmdcLWVudmlyb25tZW50Owor56+H5bmFIDwgXCh0YWtlXC11cFwtb3JcLWRldm90ZVwpXC1zcGFjZTsKK+WPjeWUh+ebuOitjyA8IGFuc3dlclwtYmFja1wtc2FyY2FzdGljYWxseTsKK+aguOi9n+eCuOapnyA8IG51Y2xlYXJcLWJvbWJlclwtXChhaXJjcmFmdFwpOwor5biM6IeY6KqeIDwgXChtb2Rlcm5cKVwtZ3JlZWtcLVwobGFuZ3VhZ2VcKTsKK+mmluebuCA8IFwoamFwYW5lc2VcKVwtcHJpbWVcLW1pbmlzdGVyOwor5pmC6ZaT5YWnIDwgd2l0aGluXC1cKGFcLXBlcmlvZFwtb2ZcLXRpbWVcKTsKK+e2sue1oeeuoeeQhuezu+e1sSA8IG5ldHdvcmtcLW1hbmFnZW1lbnRcLXN5c3RlbTsKK+aKiuW8jyA8IHBlcnNvblwtc2tpbGxlZFwtaW5cLWFcLXRyYWRlOwor5LW1IDwgeWVsbG93aXNoXC1ibGFja1wtYW5kXC13aGl0ZTsKK+S1qyA8IGxpZ2h0XC1yZWRcLXllbGxvd2lzaFwtYmxhY2s7CivktJsgPCB0b1wtbWFrZVwtZGVjb2N0aW9uXC1vZlwtc2FsdDsKK+SztyA8IGFcLXNlY29uZFwtbmFtZVwtZm9yXC1jaGlja2VuOwor5LOGIDwgYVwta2luZFwtb2ZcLXNwZWNpZXNcLW9mXC1teW5hOwor5LCCIDwgYVwtY29pZmZ1cmVcLXdpdGhcLWFcLXRvcGtub3Q7CivkrpUgPCBob3JzZVwtd2l0aFwtd2hpdGVcLWZvcmVoZWFkOwor5K2oIDwgd2luZVwtcG91cmVkXC1pblwtYVwtbGliYXRpb247Civkq4AgPCB0aGVcLWxvd2VyXC1lbmRcLW9mXC10aGVcLWphd3M7CivkqZ0gPCB0b1wtdGFuXC1hbmRcLXNvZnRlblwtbGVhdGhlcjsKK+S4jeW+l+S6uuW/gyA8IG5vdFwtZW5qb3lcLXBvcHVsYXJcLXN1cHBvcnQ7Civmt5jnsa4gPCBiYXNrZXRcLVwoZm9yXC13YXNoaW5nXC1yaWNlXCk7CivkpIIgPCBhXC1zZWNvbmRcLW5hbWVcLWZvclwtdmluZWdhcjsKK+eUpeWlsyA8IG5pZWNlXC1cKHNpc3Rlcicnc1wtZGF1Z2h0ZXJcKTsKK+SjtCA8IHRvXC1sb3NlXC10ZW1wZXJcLXdoZW5cLWRydW5rOwor5KOGIDwgbmFtZVwtb2ZcLWFcLWNvdW50eVwtaW5cLWdhb21pOwor5KKyIDwgdG9cLWdvXC1hbGxcLXRoZVwtd2F5XC1mb3J3YXJkOwor5KKuIDwgcmFwaWRcLW1hcmNoaW5nXC1vclwtcnVubmluZzsKK+SioSA8IHRvXC1zdGFtcFwtdGhlXC1mb290XC1mb3J3YXJkOwor5KG5IDwgdGhlXC1sb3dcLXJlYXJcLW9mXC1hXC1jaGFyaW90Owor5KGvIDwgc291bmRcLW9mXC1tb3ZpbmdcLWNhcnJpYWdlczsKK+ShoSA8IHRvXC1nZXRcLXVwXC1pbnRvXC1hXC1jYXJyaWFnZTsKK+ebtOiogOS4jeirsSA8IHNwZWFrXC1mcmFua2x5XC1hbmRcLWJsdW50bHk7Civmma/lsbHlhazlnJIgPCBuYW1lXC1vZlwtYVwtcGFya1wtaW5cLWJlaWppbmc7CivkmLggPCB0aGVcLWxvd2VyXC1mcm9udFwtb2ZcLWFcLXJvYmU7CivkmJIgPCBib3knJ3NcLXJlcHJvZHVjdGl2ZVwtb3JnYW5zOwor5JWEIDwgbWVhdFwtaW5cLXRoZVwtZm9ybVwtb2ZcLXBhc3RlOwor5JOLIDwgZWxtXC1zZWVkc1wtXC1cLVwtdXNlZFwtYXNcLWZvb2Q7CivkkaIgPCBhXC1rbmlmZVwtc2hhcGVkXC1zbWFsbFwtYm9hdDsKK+SRiCA8IG1lYXRcLXRvXC1vZmZlclwtZm9yXC13b3JzaGlwOwor5ryi5Lq6IDwgaGFuXC1jaGluZXNlXC1wZXJzb25cfHBlb3BsZTsKK+SNryA8IGdhb3RcLXdpdGhcLWRpZmZlcmVudFwtaG9ybnM7CivkjaIgPCBuZXR0ZWRcLXZlaW5lZFwtd2luZG93XC1zaWxsOwor5IufIDwgdGhlXC13ZWlnaHRcLW9uXC1hXC1zdGVlbHlhcmQ7CivkirYgPCBhXC1yb3BlXC1mb3JcLWxlYWRpbmdcLWNhdHRsZTsKK+S4lueVjOihm+eUn+e1hOe5lCA8IHdvcmxkXC1oZWFsdGhcLW9yZ2FuaXphdGlvbjsKK+S8uuapnyA8IHRvXC13YXRjaFwtZm9yXC1vbmUnJ3NcLWNoYW5jZTsKK+SJlyA8IGFcLXJlY2VwdGFjbGVcLW9yXC1jb250YWluZXI7CivkhLggPCBncmFpbnNcLXByb2R1Y2luZ1wtbm9cLWZydWl0Owor5ISSIDwgcmlwZW5pbmdcLW9mXC1wYWRkeVwtb3JcLXJpY2U7Civkg4EgPCB1bmV2ZW5cLW9yXC1ydWdnZWRcLXRlcnJhaW5zOwor5IGUIDwgYmlnXC1leWVzXC1wcm90dWJlcmFudFwtZXllczsKK+O/sCA8IGR1cmFibGVcLWFuZFwtc29saWRcLWxlYXRoZXI7CivpoLjpg6ggPCB0aGVcLW5lY2tcLWFyZWFcLW9mXC10aGVcLWJvZHk7Civjv4IgPCBvYnN0cmFjdGlvblwtb2ZcLXRoZVwtYm93ZWxzOwor4761IDwgYVwtZGFya1wtY29sb3JlZFwtYmlydGhcLW1hcms7CivjvpwgPCB3ZWFrXC1icmVhdGhcLW9mXC1hXC1zaWNrXC1tYW47Civjvb4gPCBhXC1raW5kXC1vZlwtd29tYW4nJ3NcLWRpc2Vhc2U7CivpgJroqIroh6rli5XljJYgPCBjb21tdW5pY2F0aW9uc1wtYXV0b21hdGlvbjsKK+O4siA8IGFcLWtpbmRcLW9mXC1tb3VudGFpblwtY2F0dGxlOwor47evIDwgc21va2VcLWFuZFwtZHVzdFwtZXZlcnl3aGVyZTsKK+O2uiA8IHRoZVwtbGlnaHRcLW9yXC1nbG93XC1vZlwtZmlyZTsKK+O1vSA8IHRoZVwtc3RyZW5ndGhcLW9mXC1hXC1jdXJyZW50Owor47GlIDwgdGhlXC1ldmlsXC1zcGlyaXRzXC1jb21lXC1vdXQ7CivjsKYgPCB0b1wtYnJlYXRoXC13aXRoXC1tb3V0aFwtb3BlbjsKK+OwlCA8IGFcLWtpbmRcLW9mXC1lZGlibGVcLW11c2hyb29tOwor47COIDwgYVwtd29vZGVuXC1wZXN0bGVcLW9yXC1yYW1tZXI7CivjrZsgPCBhXC1raW5kXC1vZlwtY2xpbWJpbmdcLXBsYW50czsKK+OpoCA8IGFcLWZpZXJjZVwtb3JcLWJsb29keVwtYmF0dGxlOwor46abIDwgdG9cLXdhbGtcLWluXC1hXC1jb21wb3NlZFwtd2F5Owor6Z2i6Ieo5Zuw6ZujIDwgdG9cLWJlXC1mYWNlZFwtd2l0aFwtcHJvYmxlbXM7Civog4zlvbEgPCBhXC12aWV3XC1vZlwtc29tZWJvZHknJ3NcLWJhY2s7CivjoJ0gPCBsb2Z0eVwtYW5kXC1zdGVlcFwtbW91bnRhaW5zOwor46CQIDwgaGlnaFwtYW5kXC1wb2ludGVkXC1tb3VudGFpbjsKK+OemiA8IHRvXC1waWxlXC11cFwtbGF5ZXJcLWJ5XC1sYXllcjsKK+OcryA8IGFcLXdvcmRcLXRvXC1kZXNpZ25hdGVcLXdvbWFuOwor45yuIDwgdG9cLWdvXC1iZXlvbmRcLW5vcm1hbFwtbGltaXQ7CivkuI3li5nmraPmpa0gPCBub3RcLWVuZ2FnZVwtaW5cLWhvbmVzdFwtd29yazsKK+OakyA8IHRpZVwtYmVhbXNcLW9mXC1hXC1zbWFsbFwtYm9hdDsKK+eLoeiztCA8IHRvXC1kZW55XC1cKHRocm91Z2hcLXNvcGhpc21cKTsKK+OYjCA8IHRvXC1sYXVnaFwtd2l0aG91dFwtc3RvcHBpbmc7Civjl6YgPCBhXC1sb3VkXC1hbmRcLWNvbmZ1c2VkXC1ub2lzZTsKK+OXmiA8IHZleGluZ2x5XC12ZXJib3NlXC1vclwtd29yZHk7Civjl5UgPCB0aGVcLWNyb3dpbmdcLW9mXC1hXC1waGVhc2FudDsKK+OWhCA8IHNvdW5kXC1vZlwtY2FsbGluZ1wtY2hpY2tlbnM7CivjlZogPCBjbGF3c1wtb2ZcLWJpcmRzXC1vclwtYW5pbWFsczsKK+aEm+eQhuS4jeeQhiA8IGxvb2tcLWNvbGRcLWFuZFwtaW5kaWZmZXJlbnQ7CivjkLMgPCBoaWdoXC1hbmRcLWxldmVsXC1vblwtdGhlXC10b3A7Civororos6MgPCBzZWxsXC1vZmZcLVwob25lJydzXC1wcm9wZXJ0eVwpOwor5LiL5bel5aSrIDwgdG9cLXB1dFwtaW5cLXRpbWVcLWFuZFwtZW5lcmd5Owor5rG66LO9IDwgZmluYWxzXC1cKG9mXC1hXC1jb21wZXRpdGlvblwpOwor5p2/5pu4IDwgd3JpdGluZ1wtb25cLXRoZVwtYmxhY2tib2FyZDsKK+ePgOaWryA8IHBlcnRoXC1cKGNpdHlcLWluXC1hdXN0cmFsaWFcKTsKK+aUueWWhOmAmuioiiA8IHRvXC1pbXByb3ZlXC1jb21tdW5pY2F0aW9uczsKK+e4veWPg+isgOmVtyA8IFwobWlsaXRhcnlcKVwtY2hpZWZcLW9mXC1zdGFmZjsKK+aEm+aGkCA8IHNob3dcLXRlbmRlclwtYWZmZWN0aW9uXC1mb3I7CivmmrTmvLIgPCByaXNlXC1zdWRkZW5seVwtYW5kXC1zaGFycGx5Owor6YyE5YWxIDwgdG9cLXRha2VcLWRvd25cLWFcLWNvbmZlc3Npb247CivmnKzlrrYgPCBhXC1tZW1iZXJcLW9mXC10aGVcLXNhbWVcLWNsYW47CivpnaLoh6ggPCBiZVwtZmFjZWRcLXdpdGhcLVwoYVwtcHJvYmxlbVwpOwor6IOM5L+h5qOE576pIDwgYnJlYWtcLWZhaXRoXC13aXRoXC1zb21lYm9keTsKK+WAvOW+l+azqOaEj+eahOaYryA8IGl0JydzXC13b3J0aFwtbm90aW5nXC10aGF0XC5cLlwuOwor6Leo5ZyL5YWs5Y+4IDwgdHJhbnNuYXRpb25hbFwtY29ycG9yYXRpb247Civml6XmnKzkurogPCBqYXBhbmVzZVwtcGVyc29uXC1vclwtcGVvcGxlOwor5YWx5ZKM6buo5Lq6IDwgYVwtcmVwdWJsaWNhblwtcGFydHlcLW1lbWJlcjsKK+axoOa5ryA8IGxhcmdlXC1wb29sXC1pblwtYVwtYmF0aGhvdXNlOwor54Sh6ZmQ5pyfIDwgdW5saW1pdGVkXC1cKHRpbWVcKVwtZHVyYXRpb247CivnjY7li7UgPCByZXdhcmRcLVwoYXNcLWVuY291cmFnZW1lbnRcKTsKK+mghuW3riA8IFwodHJhZGVcLW9yXC1idWRnZXRcKVwtc3VycGx1czsKK+eSsOeQg+WumuS9jeezu+e1sSA8IGdsb2JhbFwtcG9zaXRpb25pbmdcLXN5c3RlbTsKK+WInemBuCA8IFwodXNcKVwtcHJpbWFyaWVzXC1cKGVsZWN0aW9uXCk7CivluJXomK3ljaEgPCBwYWxhbmthXC1cKGFcLXBlcnNvbmFsXC1uYW1lXCk7CivloLHpircgPCBzdWJtaXRcLWFuXC1leHBlbnNlXC1hY2NvdW50Owor6JyAIDwgbmFtZVwtb2ZcLWFuXC1hbmNpZW50XC1zdGF0ZTsKK+a0myA8IHJpdmVyXC1pblwtc2hhbnhpXC1wcm92aW5jZTsKK+WPlCA8IGZhdGhlcicnc1wteW91bmdlclwtYnJvdGhlcjsKK+e1uSA8IGtpbmRcLW9mXC10aGlja1wtc3RpZmZcLXNpbGs7CivnvakgPCBiYXNrZXRcLWZvclwtY2F0Y2hpbmdcLWZpc2g7CivlpLcgPCBhbmNpZW50XC1iYXJiYXJpYW5cLXRyaWJlczsKK+egsCA8IHNvdW5kXC1vZlwtY3Jhc2hpbmdcLXN0b25lczsKK+WTjiA8IGludGVyamVjdGlvblwtb2ZcLXN1cnByaXNlOwor5pyUIDwgZmlyc3RcLWRheVwtb2ZcLWx1bmFyXC1tb250aDsKK+aPoyA8IHB1dFwtdGhpbmdzXC11bmRlclwtY2xvdGhlczsKK+W1iyA8IG9tZWlcLW1vdW50YWluXC1pblwtc2ljaHVhbjsKK+e8iSA8IHRvXC1zZXdcLWluXC1jbG9zZVwtc3RpdGNoZXM7CivlmbYgPCB1c2VkXC1pblwtdHJhbnNsaXRlcmF0aW9uczsKK+aOsCA8IHRvXC1icmVha1wtd2l0aFwtYm90aFwtaGFuZHM7CivpnIYgPCBhXC1zdWRkZW5cLXBlYWxcLW9mXC10aHVuZGVyOwor5ryzIDwgbmFtZVwtb2ZcLWFcLXJpdmVyXC1pblwtaGVuYW47Civlt7MgPCBzaXh0aFwtb2ZcLXR3ZWx2ZVwtYnJhbmNoZXM7Civll50gPCBjYWNrbGluZ1wtb2ZcLWZvd2xzXC10b1wtZ2FnOwor5aeYIDwgaWxsaWNpdFwtc2V4dWFsXC1yZWxhdGlvbnM7CivpnI8gPCBmYWxsaW5nXC1vZlwtc25vd1wtYW5kXC1yYWluOwor6YO4IDwgY291bnR5XC1pblwtaGViZWlcLXByb3ZpbmNlOwor5ZGmIDwgdGhlXC1ibGVhdGluZ1wtb2ZcLXRoZVwtZGVlcjsKK+aOriA8IHRvXC1iZWFyXC1vblwtdGhlXC1zaG91bGRlcnM7CivojoYgPCBhXC1raW5kXC1vZlwtbGVnZW5kYXJ5XC10cmVlOwor6ZihIDwgZm9vdHBhdGhzXC1iZXR3ZWVuXC1maWVsZHM7CivpuKogPCBzcGVjaWVzXC1vZlwtdGFpd2FuXC1waWdlb247CivmsJAgPCBuYW1lXC1vZlwtYW5cLWFuY2llbnRcLXRyaWJlOwor5ZGkIDwgcHVyaW5lXC1pblwtY2hlbVwuXC1jb21wb3VuZDsKK+WslyA8IHN1Y2Nlc3Npb25cLXRvXC10aGVcLXRocm9uZTsKK+injyA8IG1lZXRcLW9yXC1zZWVcLXVuZXhwZWN0ZWRseTsKK+a/riA8IGNvdW50eVwtaW5cLWhlbmFuXC1wcm92aW5jZTsKK+mDtCA8IGNvdW50eVwtaW5cLWh1bmFuXC1wcm92aW5jZTsKK+i9viA8IGxvd1wtcmVhclwtcG9ydGlvblwtb2ZcLWNhcnQ7CivnqJ4gPCBncmFpblwtcmVhZHlcLWZvclwtZ3JpbmRpbmc7Civpg6cgPCBjb3VudHlcLWluXC1odWJlaVwtcHJvdmluY2U7CivoubwgPCB3ZWJiZWRcLWZlZXRcLW9mXC13YXRlcmZvd2w7CivnlJEgPCBib2lsZXJcLWZvclwtc3RlYW1pbmdcLXJpY2U7CivlppcgPCB3aWZlXC1vZlwtbW90aGVyJydzXC1icm90aGVyOwor5rWgIDwgbmFtZVwtb2ZcLWFcLXJpdmVyXC1pblwtaHViZWk7Civps5QgPCBzd2ltbWluZ1wtYmxhZGRlclwtb2ZcLWZpc2g7Civnr4wgPCBhbmNpZW50XC1tdXNpY1wtaW5zdHJ1bWVudDsKK+enlSA8IGVtcHR5XC1ncmFpblwtb3JcLXJpY2VcLWh1c2s7CivnkJogPCBvcm5hbWVudGFsXC1nZW1zXC1mb3JcLWJlbHQ7CivpsrUgPCBjcnlwdG9icmFuY2h1c1wtamFwb25pY3VzOwor6ImoIDwgbG9uZ1wtYW5kXC1uYXJyb3dcLXdhclwtYm9hdDsKK+a2kSA8IHJpdmVyXC1pblwtc2hhbnNpXC1wcm92aW5jZTsKK+mbqSA8IG9mZmVyXC1zYWNyaWZpY2VcLWZvclwtcmFpbjsKK+S9viA8IGFcLXJvd1wtb3JcLWZpbGVcLW9mXC1kYW5jZXJzOwor57yCIDwgdGhlXC13b29mXC1vZlwtYVwtd292ZW5cLWl0ZW07CivoibQgPCB0aGVcLWNvdW50ZW5hbmNlXC1jaGFuZ2luZzsKK+a7jyA8IG5hbWVcLW9mXC1hXC1yaXZlclwtaW5cLWhlYmVpOwor5Lq65rCR5bmjIDwgY2hpbmVzZVwtdW5pdFwtb2ZcLWN1cnJlbmN5Owor6aas5Y+v56aP6Z+zIDwgZ29zcGVsXC1hY2NvcmRpbmdcLXRvXC1tYXJrOwor5rWB5rCT572qIDwgdGhlXC1jcmltZVwtb2ZcLWhvb2xpZ2FuaXNtOwor5Z+O6ZecIDwgYXJlYVwtb3V0c2lkZVwtYVwtY2l0eVwtZ2F0ZTsKK+mMhOmfs+apnyA8IFwodGFwZVwpXC1yZWNvcmRpbmdcLW1hY2hpbmU7CivpgYvnrpcgPCBcKG1hdGhlbWF0aWNhbFwpXC1vcGVyYXRpb247Civlt57plbcgPCBnb3Zlcm5vclwtXChvZlwtYVwtdXNcLXN0YXRlXCk7Civmr4/lubTkuIDluqYgPCBvbmNlXC1hXC15ZWFyXC1cKGV2ZXJ5XC15ZWFyXCk7Civln5/lkI3oqLvlhoogPCBkb21haW5cLW5hbWVcLXJlZ2lzdHJhdGlvbjsKK+S7o+S5i+S7pSA8IFwoaGFzXC1iZWVuXClcLXJlcGxhY2VkXC13aXRoOwor6YOo5bGsIDwgYWZmaWxpYXRlZFwtdG9cLWFcLW1pbmlzdHJ5Owor5byV5pOOIDwgZW5naW5lXC1cKHRyYW5zbGl0ZXJhdGlvblwpOwor5YW16LK056We6YCfIDwgc3BlZWRcLWlzXC1wcmVjaW91c1wtaW5cLXdhcjsKK+iuiuaIsuazlSA8IHBlcmZvcm1cLWNvbmp1cmluZ1wtdHJpY2tzOwor5aSa6YKK5ZCI5L2cIDwgbXVsdGlsYXRlcmFsXC1jb29wZXJhdGlvbjsKK+eZvOihjOmhjSA8IFwocGVyaW9kaWNhbFwpXC1jaXJjdWxhdGlvbjsKK+eZu+iomCA8IHRvXC1yZWdpc3RlclwtXChvbmUnJ3NcLW5hbWVcKTsKK+WNgeS4ieaXpSA8IHRoaXJ0aWV0aFwtZGF5XC1vZlwtYVwtbW9udGg7CivluYDpppblrprnlYznrKYgPCBzdGFydFwtb2ZcLWZyYW1lXC1kZWxpbWl0ZXI7CivmipXmlL7luILloLQgPCB0b1wtcHV0XC1zdGhcLW9uXC10aGVcLW1hcmtldDsKK+apn+e1hCA8IGZsaWdodFwtY3Jld1wtXChvblwtYVwtcGxhbmVcKTsKK+m3niA8IHRoZVwtdHVycXVvaXNlXC1raW5nZmlzaGVyOwor5LiL5Y2K6LqrIDwgbG93ZXJcLWhhbGZcLW9mXC1vbmUnJ3NcLWJvZHk7CivptYEgPCBteWN0aWNvcmF4XC1wcmFzaW5vc2NlbGVzOwor6I2S54Sh5Lq654WZIDwgZGVzb2xhdGVcLWFuZFwtdW5pbmhhYml0ZWQ7CivprrAgPCBhXC1zbWFsbFwta2luZFwtb2ZcLXN0dXJnZW9uOwor6YG85a+nIDwgbGlhb25pbmdcLXByb3ZpbmNlXCxcLWNoaW5hOwor6augIDwgc2hhdmVcLWhlYWRcLWFzXC1wdW5pc2htZW50Owor6aiVIDwgbmFtZVwtb2ZcLWFcLWZhYnVsb3VzXC1ob3JzZTsKK+eFp+W4uCA8IFwoYnVzaW5lc3NcLFwtZXRjXClcLWFzXC11c3VhbDsKK+mfgiA8IGFcLXNhZGRsZVwtZmxhcFwuXC10cmFwcGluZ3M7Civlm6DnibnntrLmj5DkvpvllYYgPCBpbnRlcm5ldFwtc2V2aWNlXC1wcm92aWRlcjsKK+e0hOe/sOemj+mfsyA8IGdvc3BlbFwtYWNjb3JkaW5nXC10b1wtam9objsKK+mZtCA8IGFcLXBhcmFwZXRcLW9uXC1hXC1jaXR5XC13YWxsOwor6ZekIDwgd2FsbFwtYXJvdW5kXC1tYXJrZXRcLXBsYWNlOwor5Y2w5q2Q6Kqe6KiAIDwgaW5kb1wtZXVyb3BlYW5cLVwobGFuZ3VhZ2VcKTsKK+aSq+aRuCA8IGdlbnRseVwtY2FyZXNzXC1hbmRcLXN0cm9rZTsKK+WIh+aWtyA8IGN1dFwtb2ZmXC1cKGFcLXN1cHBseVwsXC1ldGNcLlwpOwor57ay57Wh5pON5L2c57O757WxIDwgbmV0d29ya1wtb3BlcmF0aW5nXC1zeXN0ZW07Civnv5Lku6XngrrluLggPCBiZVwtYWNjdXN0b21lZFwtb3JcLXVzZWRcLXRvOwor5YW16I2S6aas5LqCIDwgdHVybW9pbFwtYW5kXC1jaGFvc1wtb2ZcLXdhcjsKK+W7uuWItiA8IG9yZ2FuaXphdGlvbmFsXC1zdHJ1Y3R1cmU7CivkuI3mib/oqo3kuLvnvqkgPCBwb2xpY3lcLW9mXC1ub25yZWNvZ25pdGlvbjsKK+mAgOW9uSA8IHJldGlyZVwtZnJvbVwtdGhlXC1taWxpdGFyeTsKK+mBleWPjSA8IHRvXC12aW9sYXRlXC1cKGFcLWxhd1wsXC1lXC5nXC5cKTsKK+W5q+W7miA8IGhlbHBcLWluXC10aGVcLW1lc3NcLWtpdGNoZW47CivkuI3li5XogbLoibIgPCBtYWludGFpblwtb25lJydzXC1jb21wb3N1cmU7Civmta7pu57pgYvnrpcgPCBmbG9hdGluZ1wtcG9pbnRcLW9wZXJhdGlvbjsKK+i0kSA8IFw8YWJicnZcPlwtamlhbmd4aVwtcHJvdmluY2U7Civoo5znqIUgPCBwYXlcLWFcLXRheFwtb25lXC1oYXNcLWV2YWRlZDsKK+iooSA8IHRvXC1jaGFudFwtdG9cLW1vYW5cLXRvXC1zaWdoOwor6KWy5pOKIDwgXChtYWtlXC1hXClcLXN1cnByaXNlXC1hdHRhY2s7CivlhafmlL/pg6jplbcgPCBtaW5pc3Rlclwtb2ZcLXRoZVwtaW50ZXJpb3I7Civnmb3mt6ggPCBcKG9mXC1za2luXClcLWZhaXJcLWFuZFwtY2xlYXI7Civom4EgPCBwb21wb25pYVwtbWFjdWxhdGlvY29sbGlzOwor5beh5p+lIDwgdG9cLWdvXC1hcm91bmRcLWFuZFwtaW5zcGVjdDsKK+iYgCA8IGZhbGxpbmdcLWxlYXZlc1wtYW5kXC1iYXJrczsKK+iXuiA8IHJ1c2hcLXVzZWRcLWluXC1tYWtpbmdcLW1hdHM7CivlhbXmm7ggPCBhXC1ib29rXC1vblwtdGhlXC1hcnRcLW9mXC13YXI7Civoj7QgPCBzbWFsbFwtYnVkZGhpc3RcLW1vbmFzdGVyeTsKK+m8u+mHneeZguazlSA8IG5vc2VcLWFjdXB1bmN0dXJlXC10aGVyYXB5Owor6I6UIDwgZnJpdGlsbGFyaWFcLXZlcnRpY2lsbGF0YTsKK+iMvCA8IGNocnlzYW50aGVtdW1cLWNvcm9uYXJpdW07CivoiaUgPCBhblwtb2FyXC1vclwtcGFkZGxlXC5cLXRvXC1yb3c7CivnlKLpircgPCBwcm9kdWN0aW9uXC1hbmRcLW1hcmtldGluZzsKK+iGmSA8IGNhbGxvdXNcLXNraW5cLW9uXC10aGVcLWZlZXQ7CivohZwgPCBxdWlja2VuaW5nXC1vZlwtdGhlXC1mb2V0dXM7CivogrMgPCB0aGVcLWNvcm5lcnNcLW9mXC10aGVcLW1vdXRoOwor6ZeM5bC+IDwgYXBwZW5kaXhcLVwoaW5cLWh1bWFuXC1ib2R5XCk7Civnv5sgPCBsb29rXC1vZlwtcnVtcGxlZFwtZmVhdGhlcnM7CivnvZ0gPCBuZXRcLWZvclwtY2F0Y2hpbmdcLXJhYmJpdHM7CivluYXlk6EgPCBhXC1jb3VudHJ5JydzXC1zdXJmYWNlXC1hcmVhOwor6Jmb5pOs55Kw5aKDIDwgdGhlb3JoZXRpY2FsXC1lbnZpcm9ubWVudDsKK+aSpeS7mCA8IGFwcHJvcHJpYXRlXC1zdW1cLW9mXC1tb25leTsKK+e3jCA8IHRhc3NlbHNcLWhhbmdpbmdcLWZyb21cLWhhdDsKK+WvhuWIh+azqOaEjyA8IGNsb3NlXC1hdHRlbnRpb25cLVwodG9cLXN0aFwpOwor5ZyL54efIDwgc3RhdGVcLXJ1blwtXChjb21wYW55XCxcLWV0Y1wpOwor5ZyW5YOP55So5oi25LuL6Z2iIDwgZ3JhcGhpY2FsXC11c2VyXC1pbnRlcmZhY2U7CivnrbggPCBuYW1lXC1vZlwtYVwtcGxhY2VcLWluXC1ob25hbjsKK+mdouWaruWwjeixoeiqnuiogCA8IG9iamVjdFwtb3JpZW50ZWRcLWxhbmd1YWdlOwor5pCN5aSxIDwgYVwtXChmaW5hbmNpYWxcLFwtZXRjXC5cKVwtbG9zczsKK+i+puWFrCA8IGhhbmRsZVwtb2ZmaWNpYWxcLWJ1c2luZXNzOwor5qWK55m+57+w5aSn5a24IDwgYnJpZ2hhbVwteW91bmdcLXVuaXZlcnNpdHk7CivnkqAgPCBhXC1waWVjZVwtb2ZcLXByZWNpb3VzXC1qYWRlOwor5462IDwgbmFtZVwtb2ZcLW9uZVwta2luZFwtb2ZcLWphZGU7CivnjZ4gPCBuYW1lXC1vZlwtYVwtdmFyaWV0eVwtb2ZcLWRvZzsKK+S4jeaLmOS4gOagvCA8IG5vdFwtc3RpY2tcLXRvXC1vbmVcLXBhdHRlcm47CivkvZnpnIcgPCBcKGVhcnRocXVha2VcKVwtYWZ0ZXJzaG9ja3M7CivnlZrnrpUgPCBhXC1iYW1ib29cLW9yXC13aWNrZXJcLXNjb29wOwor54GoIDwgdGhlXC1yaXZlclwtZ2FuXC1pblwtamlhbmd4aTsKK+a/siA8IG5hbWVcLW9mXC1hXC1yaXZlclwtaW5cLWh1bmFuOwor5a6M5YWo5oeC5b6XIDwgdG9cLXVuZGVyc3RhbmRcLWNvbXBsZXRlbHk7CivnqoHpoa8gPCBtYWtlXC1zb21ldGhpbmdcLXN0YW5kXC1vdXQ7CivkuI3lubPliYfps7QgPCB3aGVyZVwtdGhlcmVcLWlzXC1pbmp1c3RpY2U7CivmtKcgPCBuYW1lXC1vZlwtYVwtcml2ZXJcLWluXC1ob25hbjsKK+aguOS4jeaTtOaVoyA8IG51Y2xlYXJcLW5vbnByb2xpZmVyYXRpb247Civmj6HlipsgPCBcKHN0cmVuZ3RoXC1vZlwtb25lJydzXClcLWdyaXA7CivmqKcgPCB6YW50aG94eWx1bVwtYWlsYW50aG9pZGVzOwor5qakIDwgcGVyY2hcLWZvclwtZm93bHNcLXJvb3N0XC1vbjsKK+WFp+aUv+mDqCA8IG1pbmlzdHJ5XC1vZlwtdGhlXC1pbnRlcmlvcjsKK+WFseWQjOmWmOmBk+S7i+mdoiA8IGNvbW1vblwtZ2F0ZXdheVwtaW50ZXJmYWNlOwor5pO66ISr5Y2x5qmfIDwgdG9cLWJyZWFrXC1vdXRcLW9mXC1hXC1jcmlzaXM7CivmoIIgPCBhXC1raW5kXC1vZlwtZXZlcmdyZWVuXC10cmVlOwor5a+M5biD6LO054m5IDwgZnVsbGJyaWdodFwtXChzY2hvbGFyc2hpcFwpOwor5pehIDwgY2hva2VcLW9uXC1zb21ldGhpbmdcLWVhdGVuOwor6aas6KOhIDwgbWFsaVwtXChuYW1lXC1vZlwtYVwtY291bnRyeVwpOwor5pKLIDwgdG9cLXJ1YlwtYmV0d2VlblwtdGhlXC1oYW5kczsKK+eXheaFiyA8IG1vcmJpZFwtb3JcLWFibm9ybWFsXC1zdGF0ZTsKK+aOp+WItiA8IHRvXC1cKGhhdmVcKVwtY29udHJvbFwtXChvdmVyXCk7CivmkqXkuoLlj43mraMgPCBicmluZ1wtb3JkZXJcLW91dFwtb2ZcLWNoYW9zOwor5oOMIDwgdG9cLWJlYXJcLWFcLWdydWRnZVwtYWdhaW5zdDsKK+S9s+iDvSA8IGNhbm9uXC1cKGphcGFuZXNlXC1jb21wYW55XCk7Civnl4XlrrYgPCBhXC1wYXRpZW50XC1hbmRcLWhpc1wtZmFtaWx5Owor55aR5oORIDwgXChhXC1zZW5zZVwtb2ZcKVwtdW5jZXJ0YWludHk7CivltLYgPCBuYW1lXC1vZlwtYVwtbGVnZW5kYXJ5XC1oaWxsOwor5bSBIDwgYVwtcGxhY2VcLWluXC10YWl3YW5cLXRhaW5hbjsKK+WwniA8IGZ1ZWxcLXVzZWRcLWZvclwtc2FjcmlmaWNlczsKK+eEoem7qOa0viA8IHBvbGl0aWNhbGx5XC11bmFmZmlsaWF0ZWQ7CivmiZPniYwgPCB0b1wtcGxheVwtbWFoam9uZ1wtb3JcLWNhcmRzOwor5aWeIDwgdGhlXC1zdHJpZGVcLW1hZGVcLWJ5XC1hXC1tYW47CivlpJcgPCB0b1wtdHVyblwtb3Zlclwtd2hlblwtYXNsZWVwOwor6K6K6Zu756uZIDwgXCh0cmFuc2Zvcm1lclwpXC1zdWJzdGF0aW9uOwor5YGa5a6iIDwgdG9cLWJlXC1hXC1ndWVzdFwtb3JcLXZpc2l0b3I7CivlronnrKzmlq/lsbEgPCB0aGVcLWFuZGVzXC1tb3VudGFpblwtcmFuZ2U7Civlh5wgPCBzaGl2ZXJcLXdpdGhcLWNvbGRcLW9yXC1mZWFyOwor5YOwIDwgYW5jaWVudFwtYWJvcmlnaW5hbFwtdHJpYmU7Civnmb7nhYnmiJDpi7wgPCBiZVwtdGVtcGVyZWRcLWludG9cLWFcLXN0ZWVsOwor6KGM5L2/IDwgZXhlcmNpc2VcLVwoYVwtcmlnaHRcLFwtZXRjXC5cKTsKK+ethuaMuiA8IFwoc3RhbmRpbmdcKVwtdmVyeVwtc3RyYWlnaHQ7CivliIbkvYjlvI/ntZDmp4sgPCBkaXN0cmlidXRlZFwtYXJjaGl0ZWN0dXJlOwor5a6J56WeIDwgY2FsbVwtXChzb290aGVcKVwtdGhlXC1uZXJ2ZXM7CivogbPogqkgPCB0b1wtc2hydWdcLW9uZScnc1wtc2hvdWxkZXJzOwor5LqDIDwgbmFtZVwtb2ZcLWFcLWtpbmRcLW9mXC1hbmltYWw7CivkubogPCBwYWludGluZ1wtdG9vbFwtcGxhY2VcLW5hbWU7CivkubYgPCBrb3JlYW5cLXBsYWNlXC1uYW1lXC1waG9saGE7CivktYIgPCB0b1wtZ3JpbmRcLXdoZWF0XC10b1wtcG93ZGVyOwor5LKzIDwgYmlyZHNcLWZseWluZ1wtdXBcLWFuZFwtZG93bjsKK+Wci+WLmeasoeWNvyA8IHVuZGVyXC1zZWNyZXRhcnlcLW9mXC1zdGF0ZTsKK+SymyA8IGFuXC1hbmNpZW50XC1uYW1lXC1mb3JcLXR1bmE7CivksoQgPCBhXC1raW5kXC1vZlwtZmlpc2hcLWluXC1vY2VhbjsKK+SwjSA8IGFcLWtpbmRcLW9mXC1kYXJrXC1yZWRcLXBhaW50Owor5LCGIDwgYmVhdXRpZnVsXC1hbmRcLWhhaXJ5XC1tYW5lOwor5K+WIDwgdGhlXC1tdXNjbGVzXC1vZlwtdGhlXC10aGlnaDsKK+WNiuS/oeWNiueWkSA8IGhhbGZcLWJlbGlldmVcLFwtaGFsZlwtZG91YnQ7CivkrLMgPCBjYWtlc1wtbWFkZVwtb2ZcLXJpY2VcLWZsb3VyOwor5KuvIDwgdG9cLXRha2VcLWFcLWNhc3VhbFwtbG9va1wtYXQ7Civmt7HnqbogPCBkZWVwXC1zcGFjZVwtXChvdXRlclwtc3BhY2VcKTsKK+SqgCA8IGtub3duXC10b2dldGhlclwtYXNcLXNhZGRsZTsKK+SokiA8IHNvdW5kXC1vZlwtdGhlXC13YXRlclwtZHJvcHM7CivllJDntI0gPCB0YW5uZXJcLVwoZW5nbGlzaFwtc3VybmFtZVwpOwor5KaoIDwgYVwtZG9vclwtY3VydGFpblwtb3JcLXNjcmVlbjsKK+SkryA8IGNvbnRhaW5lclwtZm9yXC10aGlja1wtc291cDsKK+acqOS5g+S8iiA8IG11bW15XC1cKHByZXNlcnZlZFwtY29ycHNlXCk7CivkoY0gPCB0aGVcLWxpbmNoXC1waW5cLW9mXC1hXC1zaGVlbDsKK+SflyA8IHRvXC1zdGFuZFwtZm9yXC1hXC1sb25nXC10aW1lOwor5J+DIDwgdG9cLW1vdmVcLW9yXC1tYXJjaFwtc3dpZnRseTsKK+SatiA8IHRvXC1zY29sZFwtaW5cLWFcLWxvdWRcLXZvaWNlOwor5JmcIDwgbGVnZW5kYXJ5XC1tb3VudGFpblwtZGVpdHk7CivkmYggPCBhXC1sb29zZVwtZ2FybWVudFwtb3JcLWNsb2FrOwor5JmHIDwgY2xvdGhlc1wtb2ZcLWNvYXJzZVwtZmFicmljOwor5JeCIDwgZGllbXljdHlsdXNcLXB5cnJob2dhc3RlcjsKK+SUoyA8IGFcLXRyaWJlXC1pblwtYW5jaWVudFwtdGltZXM7Civkk7QgPCBlZGlibGVcLWZ1bmd1c1wtZnJvbVwtdHJlZXM7CivkkY4gPCBzb3VwXC1vZlwtcGlnJydzXC1pbnRlc3RpbmVzOwor5JC7IDwgYmlnXC1waWVjZXNcLW9mXC1kcmllZFwtbWVhdDsKK+SQuSA8IHBlcnNlcnZlZFwtYW5kXC1kcmllZFwtbWVhdDsKK+SQsCA8IHRvXC1vZmZlclwtZm9vZFwtYXNcLXRyaWJ1dGU7CivlpJbkuqTpg6ggPCBmb3JlaWduXC1hZmZhaXJzXC1taW5pc3RyeTsKK+SQgiA8IGZhdFwtb2ZcLWFuaW1hbHNcLW9yXC1wbGFudHM7CivkjrUgPCB0b1wtbG9va1wtc3RyYWlnaHRcLWZvcndhcmQ7CivkipAgPCBmbHVmZnlcLXN0dWZmZWRcLWR1bXBsaW5nczsKK+SKjSA8IHRoaWNrXC1jb25nZWVcLW9yXC1wb3JyaWRnZTsKK+aMgeS4jeWQjOaUv+imiyA8IFwocG9saXRpY2FsbHlcKVwtZGlzc2VudGluZzsKK+SHjyA8IHRvXC1waWxlXC1vbmVcLXVwb25cLWFub3RoZXI7CivkhJwgPCBoYXBwaW5lc3NcLWFuZFwtd2VsbFwtYmVpbmc7CivkhJYgPCB1c2VkXC1pblwtbmFtZVwtb2ZcLWFcLXBlcnNvbjsKK+SDoiA8IG5hbWVcLW9mXC1hXC1tb3VudGFpblwtbG9mdHk7CivkgYcgPCB0b1wtbG9va1wtZm9yXC1hXC1zaG9ydFwtdGltZTsKK+SAqyA8IG5hcnJvd1wtYW5kXC1kaW1cLWV5ZVwtc2lnaHQ7Civjv7ogPCBqdXR0aW5nXC1vblwtdGhlXC1lcGlkZXJtaXM7CivlkYjoq4sgPCB0b1wtc3VibWl0XC1cKHRvXC1zdXBlcmlvcnNcKTsKK+O9kiA8IHRoZVwtY2hpbGRyZW5cLW9mXC1hXC1zaXN0ZXI7CivjvL8gPCB0aGVcLWJyaWNrXC13YWxsXC1vZlwtYVwtd2VsbDsKK+O8myA8IGxvbmdcLW5lY2tlZFwtd2luZVwtdmVzc2VsczsKK+O7qiA8IGFcLWtpbmRcLW9mXC1qYWRlXC1maW5lXC1qYWRlOwor47aFIDwgZHJpZWRcLXVwXC1tb3VudGFpblwtY3JlZWtzOwor5LiK6Ki0IDwgYXBwZWFsXC1cKGFcLWp1ZGljaWFsXC1jYXNlXCk7CivjtaIgPCBhXC1tYXJzaFwtaW5cLWFuY2llbnRcLXRpbWVzOwor47SwIDwgYVwtcml2ZXJcLWluXC1hbmNpZW50XC10aW1lczsKK+aHt+W/tSA8IHRvXC1jaGVyaXNoXC10aGVcLW1lbW9yeVwtb2Y7Civjs40gPCBhXC1wbGFjZVwtaW5cLWFuY2llbnRcLXRpbWVzOwor47OKIDwgdGhlXC1mbG93aW5nXC1vZlwtdGhlXC13YXRlcjsKK+OyiiA8IHRvXC11bmRlcnN0YW5kXC10aG9yb3VnaGx5Owor47C+IDwgc29uZ3NcLW9mXC10aGVcLXBlb3BsZVwtb2ZcLealmjsKK+OwvSA8IHRvXC1leGVydFwtb25lc2VsZlwtdG9cLXllbGw7Civjr6sgPCBhXC13YXR0bGVcLW9yXC1iYW1ib29cLWZlbmNlOwor466mIDwgYnJhbmNoZXNcLWdyb3dpbmdcLXVwd2FyZHM7Civnibnpu54gPCBjaGFyYWN0ZXJpc3RpY1wtXChmZWF0dXJlXCk7CivlrZfmr40gPCBsZXR0ZXJcLVwob2ZcLXRoZVwtYWxwaGFiZXRcKTsKK+OqmyA8IHRvXC1wb3VuZFwtcm9ja3NcLXRvXC1waWVjZXM7CivjqpkgPCB0b1wtZ29cLXRvXC10aGVcLXZlcnlcLXNvdXJjZTsKK+OprSA8IHRvXC1kaXN0dXJiXC1vclwtdG9cLWFnaXRhdGU7Civmi5TngavnvZDlhZIgPCBkZXRhY2hhYmxlXC1zdG92ZVwtY2hpbW5leTsKK+WQjOisgCA8IHRvXC1jb25zcGlyZVwtd2l0aFwtc29tZW9uZTsKK+OhqiA8IHRoZVwtdmFybmlzaFwtb25cLXRoZVwtZmxvb3I7CivjoacgPCB0b1wtc3RyZXRjaFwtb3BlblwtcGFpbnRpbmc7CivjoIcgPCBuYW1lXC1vZlwtYVwtbW91bnRhaW5cLXJpZGdlOwor5qGD5ZySIDwgdGFveXVhblwtXChjaXR5XC1pblwtdGFpd2FuXCk7CivjnL8gPCBuYW1lXC1vZlwtYVwtZmlzaFwtaW5cLWxlZ2VuZDsKK+axn+mdoiA8IHRoZVwtc3VyZmFjZVwtb2ZcLXRoZVwtcml2ZXI7Civjl6kgPCBzb3VuZFwtb2ZcLWVuZHVyZVwtY29sZG5lc3M7Civjl6cgPCB0b1wtc2NvbGRcLXdpdGhcLWxvdWRcLXZvaWNlOwor5Y+k5biM6IeY6KqeIDwgYW5jaWVudFwtZ3JlZWtcLVwobGFuZ3VhZ2VcKTsKK+OToSA8IHRoZVwtbWlkZGxlXC1wYXJ0XC1vZlwtYVwtYm93Owor45CoIDwgYVwta2luZFwtb2ZcLWZpc2hcLWluXC1sZWdlbmQ7CivpgbLmtannlLAgPCBjaGluZXNlXC1kZWZlbnNlXC1taW5pc3RlcjsKK+eikemhjSA8IHRoZVwtdG9wXC1wYXJ0XC1vZlwtYVwtdGFibGV0Owor5Ly05aWPIDwgdG9cLWFjY29tcGFueVwtXChtdXNpY2FsbHlcKTsKK+WMl+a6q+W4tiA8IHRoZVwtbm9ydGhcLXRlbXBlcmF0ZVwtem9uZTsKK+aJk+mbu+ipsSA8IHRvXC1tYWtlXC1hXC10ZWxlcGhvbmVcLWNhbGw7Civlj7Pnv7wgPCBcKHBvbGl0aWNhbGx5XClcLXJpZ2h0XC13aW5nOwor5rWZ5rGfIDwgemhlamlhbmdcLXByb3ZpbmNlXCxcLWNoaW5hOwor5Lq65rCR6Kej5pS+6LuNIDwgcGVvcGxlJydzXC1saWJlcmF0aW9uXC1hcm15Owor6K2Y6KaLIDwga25vd2xlZGdlXC1hbmRcLWV4cGVyaWVuY2U7CivosrfluLMgPCB0b1wtc2hvd1wtcmVzcGVjdFwtXChmb3JcLXNiXCk7Civmmpfnrq0gPCBhdHRhY2tcLWJ5XC1hXC1oaWRkZW5cLWVuZW15Owor5rex5ZyzIDwgc2hlbnpoZW5cLVwoY2l0eVwtaW5cLWNoaW5hXCk7CivnqIvluqYgPCBkZWdyZWVcLVwobGV2ZWxcLW9yXC1leHRlbnRcKTsKK+Wkp+mXnCA8IFwocmVhY2hcLWFcKVwtY3JpdGljYWxcLXBvaW50Owor5b6e5aSW6KGo5L6G55yLIDwgbG9va2luZ1wtZnJvbVwtdGhlXC1vdXRzaWRlOwor6aCt54mIIDwgXChuZXdzcGFwZXInJ3NcKVwtZnJvbnRcLXBhZ2U7CivljYPntbLokKznuLcgPCBsaW5rZWRcLWluXC1jb3VudGxlc3NcLXdheXM7CivmmKXoga8gPCBzcHJpbmdcLWZlc3RpdmVsXC1jb3VwbGV0czsKK+WFrOecvumbu+S/oee2sui3ryA8IHB1YmxpY1wtdGVsZXBob25lXC1uZXR3b3JrOwor5Lqk5o+b6Jmb6Zu76LevIDwgc3dpdGNoZWRcLXZpcnR1YWxcLWNpcmN1aXQ7Civku6XkvoYgPCBzaW5jZVwtXChhXC1wcmV2aW91c1wtZXZlbnRcKTsKK+iTruiKsSA8IGxvdHVzXC1cKGNvbXB1dGVyXC1jb21wYW55XCk7CivkuI3ml6UgPCB3aXRoaW5cLXRoZVwtbmV4dFwtZmV3XC1kYXlzOwor6KuS6KejIDwgXChyZWFjaFwpXC1hblwtdW5kZXJzdGFuZGluZzsKK+egtOWcn+WFuOemriA8IGdyb3VuZFwtYnJlYWtpbmdcLWNlcmVtb255Owor5pWZ5a245qmf5qeLIDwgZWR1Y2F0aW9uYWxcLW9yZ2FuaXphdGlvbjsKK+S4jemBuuS9meWKmyA8IHNwYXJlXC1ub1wtcGFpbnNcLW9yXC1lZmZvcnQ7CivooajnpLrmlazmhI8gPCByZXNwZWN0ZnVsXCxcLXNob3dcLXJlc3BlY3Q7Civok4vnq6AgPCB0b1wtYWZmaXhcLWFcLXNlYWxcLVwodG9cLXN0aFwpOwor5q2i55eb5rOVIDwgbWV0aG9kXC1vZlwtcmVsaWV2aW5nXC1wYWluOwor6Ke46Zu7IDwgdG9cLWdldFwtYW5cLWVsZWN0cmljXC1zaG9jazsKK+S4u+WLlSA8IFwodG9cLXRha2VcLXRoZVwpXC1pbml0aWF0aXZlOwor6Lev5Yqg56aP6Z+zIDwgZ29zcGVsXC1hY2NvcmRpbmdcLXRvXC1sdWtlOwor6Ki06KqqIDwgdGVsbFwtXCh0b1wtYW5vdGhlclwtcGVyc29uXCk7CivnuL3ntbEgPCBwcmVzaWRlbnRcLVwob2ZcLWFcLWNvdW50cnlcKTsKK+WgsemgrSA8IG1hc3RoZWFkXC1cKG9mXC1hXC1uZXdzcGFwZXI7CivljZfmspkgPCBuYW5zaGFcLVwoc3ByYXRseVwpXC1pc2xhbmRzOwor6YCa6YGTIDwgXChjb21tdW5pY2F0aW9uc1wpXC1jaGFubmVsOwor5pS/57i+IDwgXChwb2xpdGljYWxcKVwtYWNoaWV2ZW1lbnRzOwor556lIDwgdGFrZVwtZmxlZXRpbmdcLWdsYW5jZVwtYXQ7Civlt54gPCBhZG1pbmlzdHJhdGl2ZVwtZGl2aXNpb247CivlkKcgPCBlbXBoYXRpY1wtZmluYWxcLXBhcnRpY2xlOwor5p+QIDwgY2VydGFpblwtdGhpbmdcLW9yXC1wZXJzb247CivnpaggPCBzbGlwXC1vZlwtcGFwZXJcLW9yXC1iYW1ib287CivogLYgPCB1c2VkXC1pblwtdHJhbnNsaXRlcmF0aW9uOwor5Y6YIDwgdGhvdXNhbmR0aFwtcGFydFwtb2ZcLXRhZWw7Civlva0gPCBuYW1lXC1vZlwtYW5jaWVudFwtY291bnRyeTsKK+iCtCA8IGNvb2tlZFwtb3JcLXByZXBhcmVkXC1tZWF0Owor5L+OIDwgY2hvcHBpbmdcLWJvYXJkXC1vclwtYmxvY2s7Civmt64gPCByaXZlclwtaW5cLWFuaHVpXC1wcm92aW5jZTsKK+WTpiA8IG9oXD9cLXJlYWxseVw/XC1pc1wtdGhhdFwtc29cPzsKK+mUpCA8IGJhbGFuY2VcLXdlaWdodFwtb25cLXNjYWxlOwor5LueIDwgYW5jaWVudFwtdW5pdFwtb2ZcLW1lYXN1cmU7Civoiq0gPCBwbGFudGFpblwtb3JcLWJhbmFuYVwtcGFsbTsKK+ejiiA8IHBpbGVcLW9mXC1yb2Nrc1wtb3JcLXN0b25lczsKK+WRuCA8IGV4cHJlc3Npb25cLW9mXC1yZXByaW1hbmQ7Civmi7cgPCB0b3J0dXJlXC1hbmRcLWludGVycm9nYXRlOwor5oq/IDwgcHVja2VyXC11cFwtbGlwc1wtaW5cLXNtaWxlOwor5Y2JIDwgZ2VuZXJhbFwtdGVybVwtZm9yXC1wbGFudHM7Civpq7sgPCBoYWlyXC1yb2xsZWRcLXVwXC1pblwtYVwtYnVuOwor6KOGIDwgY3JvdGNoXC1vclwtc2VhdFwtb2ZcLXBhbnRzOwor6JiRIDwgdHlwZVwtb2ZcLWVkaWJsZVwtbXVzaHJvb207Civlkr8gPCBkZXNjcmlwdGl2ZVwtb2ZcLWNyZWFraW5nOwor56++IDwgYmFtYm9vXC1zcGxpbnRzXC1vclwtc2xhdHM7Civmt4cgPCByaXZlclwtaW5cLWhlbmFuXC1wcm92aW5jZTsKK+iTkSA8IHJhaW5cLWNvYXRcLW1hZGVcLW9mXC1zdHJhdzsKK+aqrCA8IHR5cGVcLW9mXC1sb2N1c3RcLW9yYWNhY2lhOwor5reZIDwgZ3VyZ2xpbmdcLXNvdW5kXC1vZlwtd2F0ZXI7CivmrpMgPCBkcmVzc1wtY29ycHNlXC1mb3JcLWJ1cmlhbDsKK+eQpSA8IGpld2VsXC1pblwtc2hhcGVcLW9mXC10aWdlcjsKK+a9niA8IHJpdmVyXC1pblwtbm9ydGhlcm5cLWNoaW5hOwor6YaNIDwgZXNzZW50aWFsXC1vaWxcLW9mXC1idXR0ZXI7Civlpq8gPCB3aXZlc1wtb2ZcLW9uZScnc1wtYnJvdGhlcnM7CivluI8gPCBjdXJ0YWluXC10aGF0XC1mb3Jtc1wtd2FsbDsKK+eTkiA8IGNlcmVtb25pYWxcLWxpYmF0aW9uXC1jdXA7CivnkZcgPCBsYXJnZVwtcmluZ1wtb2ZcLWZpbmVcLWphZGU7Civmtp4gPCByaXZlclwtaW5cLWhlYmVpXC1wcm92aW5jZTsKK+eIuyA8IGRpYWdyYW1zXC1mb3JcLWRpdmluYXRpb247CivplJ8gPCBhbmNpZW50XC10cmVhc3VyZWRcLXN3b3JkOwor6IqXIDwgZnJhZ3JhbnRcLXNtZWxsXC1vZlwtZ3JhaW47CivmpaYgPCBhXC1sYXN0XC1mb3JcLW1ha2luZ1wtc2hvZXM7CivoiIEgPCBjYXJyeVwtb25cLW9uZScnc1wtc2hvdWxkZXI7Civmu6AgPCByaXZlclwtaW5cLWh1YmVpXC1wcm92aW5jZTsKK+W/jOaBqCA8IGhhdGVcLVwoZHVlXC10b1wtZW52eVwsXC1ldGNcKTsKK+mbueeBvSA8IGRpc2FzdGVyXC1jYXVzZWRcLWJ5XC1oYWlsOwor5Ye66KiqIDwgdmlzaXRcLWFcLWZvcmVpZ25cLWNvdW50cnk7CivmoLjmrablmajmnZDmlpkgPCBudWNsZWFyXC13ZWFwb25cLW1hdGVyaWFsOwor6YCa6KiK6KGM5qWtIDwgY29tbXVuaWNhdGlvbnNcLWluZHVzdHJ5Owor5YyX5Y2K55CDIDwgdGhlXC1ub3J0aGVyblwtaGVtaXNwaGVyZTsKK+mbmee1nue3miA8IHVuc2hpZWxkZWRcLXR3aXN0ZWRcLXBhaXQ7CivnmbzkvYjmlrDou5/ku7YgPCB0b1wtcmVsZWFzZVwtbmV3XC1zb2Z0d2FyZTsKK+aWkeaWkSA8IGZ1bGxcLW9mXC1zdGFpbnNcLW9yXC1zcG90czsKK+ilv+ijnSA8IFwod2VzdGVyblwtc3R5bGVcKVwtY2xvdGhlczsKK+WKoOayuSA8IHRvXC1tYWtlXC1hblwtZXh0cmFcLWVmZm9ydDsKK+WLn+aNkCA8IHRvXC1zb2xpY3RcLWNvbnRyaWJ1dGlvbnM7CivlsIjlsazntpPmv5/ljYAgPCBleGNsdXNpdmVcLWVjb25vbWljXC16b25lOwor55q06KOCIDwgY2hhcFwtXChsaXBzXCxcLXNraW5cLFwtZXRjXC5cKTsKK+imi+iBniA8IHdoYXRcLW9uZVwtc2Vlc1wtYW5kXC1oZWFyczsKK+WMheaJv+WItiA8IHJlc3BvbnNpYmxlXC1jcmV3XC1zeXN0ZW07CivljZfkuqwgPCBuYW5qaW5nXC1cKGNpdHlcLWluXC1jaGluYVwpOwor6KaP57SEIDwgdGVybXNcLVwob2ZcLWFuXC1hZ3JlZW1lbnRcKTsKK+atuOW/gyA8IGNvbnZlcnRlZFwtdG9cLVwocmVsaWdpb25cKTsKK+mAvOatuyA8IGhvdW5kXC1zb21lYm9keVwtdG9cLWRlYXRoOwor5pys5L2N5Li7576pIDwgc2VsZmlzaFwtZGVwYXJ0bWVudGFsaXNtOwor54K65omA5qyy54K6IDwgZG9cLXdoYXRldmVyXC1vbmVcLXBsZWFzZXM7CivkurrmsJHms5XpmaIgPCBwZW9wbGUnJ3NcLWNvdXJ0XC1cKG9mXC1sYXdcKTsKK+WVhualreapn+aniyA8IGNvbW1lcmNpYWxcLW9yZ2FuaXphdGlvbjsKK+m8jyA8IGNvdmVyXC1vZlwtdHJpcG9kXC1jYWxkcm9uOwor6buwIDwgeW91bmdcLWdpcmwnJ3NcLWhhaXJcLXN0eWxlOwor57Wx5rK7IDwgXChwb2xpdGljYWxcKVwtcnVsZVwtXChvdmVyXCk7Civoo5zoqrIgPCBtYWtlXC11cFwtYVwtbWlzc2VkXC1sZXNzb247CivpgJnmqKMgPCB0aGlzXC1cKGtpbmRcLW9mXCxcLXNvcnRcLW9mXCk7Civmkq3mlL7mqZ8gPCBwbGF5ZXJcLVwoZVwuZ1wuXC1jZFwtcGxheWVyXCk7CivpgZTmiJAgPCB0b1wtcmVhY2hcLVwoYW5cLWFncmVlbWVudFwpOwor55m+6IisIDwgaW5cLWh1bmRyZWRcLWFuZFwtb25lXC13YXlzOwor6ayCIDwgdGhlXC1oYWlyXC1vblwtdGhlXC10ZW1wbGVzOwor56aB5q2i5qC45q2m5Zmo6Kmm6amX5qKd57SEIDwgbnVjbGVhclwtdGVzdFwtYmFuXC10cmVhdHk7Civpp64gPCBhXC1raW5kXC1vZlwtZmllcmNlXC1hbmltYWw7CivkuI3nv7zogIzpo5sgPCBkaXNhcHBlYXJcLXdpdGhvdXRcLXRyYWNlOwor5o6I6KiIIDwgdG9cLWNvbmZpZGVcLWFcLXBsYW5cLXRvXC1zYjsKK+eVouaBreeVouaVrCA8IHJldmVyZW50XC1hbmRcLXJlc3BlY3RmdWw7Civnp5HnoJTkurrlk6EgPCBcKHNjaWVudGlmaWNcKVwtcmVzZWFyY2hlcjsKK+WgseabiSA8IGhlcmFsZFwtdGhlXC1icmVha1wtb2ZcLWRheTsKK+aTmue1seioiCA8IGFjY29yZGluZ1wtdG9cLXN0YXRpc3RpY3M7CivpgI/pnLLmtojmga8gPCB0b1wtZGlzY2xvc2VcLWluZm9ybWF0aW9uOwor5Lit5ZyL5pmC5aCxIDwgY2hpbmFcLXRpbWVzXC1cKG5ld3NwYXBlclwpOwor6YS+IDwgcGxhY2VcLWluXC1odWJlaVwtcHJvdmluY2U7CivphKwgPCBwbGFjZVwtaW5cLWhlbmFuXC1wcm92aW5jZTsKK+mEmCA8IHN0YXRlXC1pblwtaGVuYW5cLXByb3ZpbmNlOwor5Yip5biCIDwgXCJsYWlcLXNlZVwiXC1cKGx1Y2t5XC1tb25leVwpOwor6YOwIDwgYmlydGhwbGFjZVwtb2ZcLWNvbmZ1Y2l1czsKK+mCpyA8IHRvd25cLWluXC1zaGFueGlcLXByb3ZpbmNlOwor5YG06YeNIDwgcGxhY2VcLWV4dHJhXC1lbXBoYXNpc1wtb247CivloLHmgakgPCBwYXlcLWFcLWRlYnRcLW9mXC1ncmF0aXR1ZGU7CivnlZnlrbjnlJ8gPCBzdHVkZW50XC1zdHVkeWluZ1wtYWJyb2FkOwor5aiB5buJ5pav5aChIDwgd2lsbGlhbXNidXJnXC1cKHZpcmdpbmlhXCk7Civkvr/lrpzooYzkuosgPCBhY3RcLWF0XC1vbmUnJ3NcLWRpc2NyZXRpb247CivluavlrZAgPCBvdXRlclwtXChvZlwtY2FiYmFnZVwsXC1ldGNcKTsKK+iHquixqiA8IFwoZmVlbFwtYVwtc2Vuc2VcLW9mXClcLXByaWRlOwor5Y+N6Imm6ImH5beh6Iiq5bCO5b2IIDwgYW50aVwtc2hpcFwtY3J1aXNlXC1taXNzbGU7CivomrsgPCBzbWFsbFwtc3BlY2llc1wtb2ZcLWNpY2FkYTsKK+iSsSA8IGdhbWJsaW5nXC1nYW1lXC13aXRoXC1kaWNlOwor6JGnIDwgaGVsZW9jaGFyaXNcLXBsYW50YWdpbmVhOwor5rWB5Lqh5Zyo5rW35aSWIDwgdG9cLWJlXC1pblwtZXhpbGVcLW92ZXJzZWFzOwor6Ziy5YuZIDwgXChwZXJ0YWluaW5nXC10b1wpXC1kZWZlbnNlOwor5qWt57i+IDwgb3V0c3RhbmRpbmdcLWFjaGlldmVtZW50Owor6IiyIDwgc21hbGxcLWJvYXRcLXdpdGhcLXdpbmRvd3M7CivllYbmpa3nrqHnkIYgPCBidXNpbmVzc1wtYWRtaW5pc3RyYXRpb247CivnlZnoqIAgPCB0b1wtbGVhdmVcLW9uZScnc1wtY29tbWVudHM7CivnvqsgPCB0aGVcLXNrZWxldG9uXC1vZlwtYVwtc2hlZXA7CivlubTkvoYgPCBvdmVyXC10aGVcLWxhc3RcLVwuXC5cLlwteWVhcnM7Civnvb0gPCBhXC1raW5kXC1vZlwtd29vbGVuXC1mYWJyaWM7Civplovmi40gPCBiZWdpblwtc2hvb3RpbmdcLVwoYVwtZmlsbVwpOwor5YiG5LmLIDwgXChpbmRpY2F0aW5nXC1hXC1mcmFjdGlvblwpOwor57K6IDwgcG9saXNoZWRcLXJpY2VcLW9yXC1taWxsZXQ7CivlpJrlubTkvoYgPCBmb3JcLXRoZVwtcGFzdFwtbWFueVwteWVhcnM7Civnr6cgPCBjcmVlbFwtZm9yXC10cmFwcGluZ1wtZmlzaDsKK+evmyA8IGN1dGljbGVcLW9mXC1iYW1ib29cLXBsYW50Owor5Z+656SO6YCf546HIDwgYmFzaWNcLXJhdGVcLVwoYXNcLWluXC1pc2RuXCk7CivnrZTorJ0gPCB0b1wtZXhwcmVzc1wtb25lJydzXC10aGFua3M7CivnpZQgPCB3b3JzaGlwXC1vbmUnJ3NcLWFuY2VzdG9yczsKK+ethuirhyA8IGNvbnZlcnNhdGlvblwtYnlcLXdyaXRpbmc7CivnkarpupcgPCBtYWxpXC1cKGFcLXBlcnNvbicncycnXC1uYW1lXCk7CivnnZYgPCB0b1wtc3RhcmVcLXN0cmFpZ2h0XC1haGVhZDsKK+ecoiA8IGV5ZXNcLXdpdGhvdXRcLWJyaWdodG5lc3M7Civnl4fni4AgPCBzeW1wdG9tXC1cKG9mXC1hblwtaWxsbmVzc1wpOwor55W+IDwgZmllbGRzXC1kaXZpZGVkXC1ieVwtZGlrZXM7CivnkrIgPCBwZW5kYW50XC1naXJkbGVcLW9ybmFtZW50Owor55G/IDwgYVwtYmxhY2tcLXN0b25lXC1saWtlXC1qYWRlOwor55GvIDwga2luZFwtb2ZcLXdoaXRlXC1jb3JuZWxpYW47CivnkaIgPCBnZW1cLW9ybmFtZW50c1wtZm9yXC1iZWx0czsKK+ePtiA8IHdoaXRlXC1qYWRlXC13b3JuXC1vblwtYmVsdDsKK+S4reeni+evgCA8IHRoZVwtbWlkXC1hdXR1bW5cLWZlc3RpdmFsOwor546VIDwgaW5mZXJpb3JcLXZhcmlldHlcLW9mXC1nZW07CivkvZTpoJggPCB0b1wtb2NjdXB5XC1cKGFcLXRlcnJpdG9yeVwpOwor54yIIDwgZG9nXC13aXRoXC1zaG9ydFwtc2hpbmJvbmU7CivmiYvlr6vorZjliKUgPCBoYW5kd3JpdGluZ1wtcmVjb2duaXRpb247CivmvokgPCB0b1wtd2FzaFwtbmFtZVwtb2ZcLWFcLXBsYWNlOwor5r2WIDwgbmFtZVwtb2ZcLWFcLWNlcnRhaW5cLXJpdmVyOwor6Z2e55uI5Yip55qE57WE57mUIDwgbm9uXC1wcm9maXRcLW9yZ2FuaXphdGlvbjsKK+aumSA8IHRvXC1kaWVcLWJ5XC10YWtpbmdcLXBvaXNvbjsKK+atgSA8IHVuc2F0aXNmaWVkXC1cKG9mXC1lYXRpbmdcKTsKK+asqCA8IHRvXC1ibG93XC1vclwtYnJlYXRoZVwtdXBvbjsKK+asjyA8IHRyZWVcLXRoZVwtaG9yc2VcLWNoZXN0bnV0Owor5qqHIDwgd29vZGVuXC1yYW1tZXJcLW9yXC1wZXN0bGU7CivmqZQgPCBhXC13b29kZW5cLWNob3BwaW5nXC1ibG9jazsKK+ioiuaBr+iZleeQhuezu+e1sSA8IG1lc3NhZ2VcLWhhbmRsaW5nXC1zeXN0ZW07CivlgpnmlpkgPCBnZXRcLXRoZVwtbWF0ZXJpYWxzXC1yZWFkeTsKK+WdpuWFiyA8IHRhbmtcLVwobWlsaXRhcnlcLXZlaGljbGVcKTsKK+mmrOi3r+WPoyA8IGludGVyc2VjdGlvblwtXChvZlwtcm9hZHNcKTsKK+Wbm+W3nSA8IHNpY2h1YW5cLXByb3ZpbmNlXCxcLWNoaW5hOwor5oC4IDwgY25zXC0yXC0yYTQwXC1pc1wtZGlmZmVyZW50Owor5q+U5q+U55qG5pivIDwgY2FuXC1iZVwtZm91bmRcLWV2ZXJ5d2hlcmU7CivkuI3mirXmipfkuLvnvqkgPCBwb2xpY3lcLW9mXC1ub25yZXNpc3RhbmNlOwor6LKp6YGLIDwgdG9cLXRyYW5zcG9ydFwtXChmb3JcLXNhbGVcKTsKK+WihCA8IHRoZVwtc3RlcHNcLW9mXC1hXC1zdGFpcndheTsKK+aVuOWtl+ioguizvOe3mui3ryA8IGRpZ2l0YWxcLXN1YnNjcmliZXJcLWxpbmU7Civmo4ToiIrmj5vmlrAgPCB0b1wtdHVyblwtb3ZlclwtYVwtbmV3XC1sZWFmOwor5LuK6K2vIDwgbW9kZXJuXC1sYW5ndWFnZVwtdmVyc2lvbjsKK+S4jeaDheS5i+iriyA8IG15XC1wcmVzdW1wdHVvdXNcLXJlcXVlc3Q7CivllasgPCBpbnRlcmplY3Rpb25cLW9mXC13YXJuaW5nOwor5oqV5pS+IDwgdG9cLXB1dFwtaW5cLVwoY2lyY3VsYXRpb25cKTsKK+WQmiA8IHVzZWRcLXRvXC1yZXByZXNlbnRcLXNvdW5kOwor5YyBIDwgamFwYW5lc2VcLXVuaXRcLW9mXC13ZWlnaHQ7Civnl4XlgJIgPCBiZVwtZG93blwtd2l0aFwtYW5cLWlsbG5lc3M7Civmi7fllY8gPCB0b1wtcXVlc3Rpb25cLXZpYVwtdG9ydHVyZTsKK+S7viA8IHRvXC1oYW5nXC1vclwtYm93XC10aGVcLWhlYWQ7Civktp0gPCBncm93aW5nXC1pcnJlZ3VsYXJcLXRlZXRoOwor5LWIIDwgdW5zbWVsdGVkXC1oZW1wXC1hbmRcLXNpbGs7CivktYAgPCBjb2Fyc2VcLWNydW1ic1wtb2ZcLWJhcmxleTsKK+S0kSA8IGFcLWxlZ2VuZGFyeVwtd2VpcmVkXC1iaXJkOwor5LSHIDwgYVwtc2Vjb25kXC1uYW1lXC1mb3JcLWNyYW5lOwor5LSBIDwgYVwta2luZFwtb2ZcLXJhdFwtbGlrZVwtYmlyZDsKK+SzsiA8IGFcLXN3YXJtXC1vZlwtZmx5aW5nXC1iaXJkczsKK+SytCA8IGFcLWtpbmRcLW9mXC12ZW5vbW91c1wtYmlyZDsKK+SxviA8IGFcLWNhcnBcLWxpa2VcLXNhdm9yeVwtZmlzaDsKK+SwqyA8IG5pbWJsZVwtYW5kXC1hY3RpdmVcLWdob3N0Owor6ZuZ6YCj5o6l56uZIDwgZHVhbFwtYXR0YWNobWVudFwtc3RhdGlvbjsKK+SthyA8IHRvXC1iZVwtY2hvY2tlZFwtd2l0aFwtZm9vZDsKK+SthiA8IHNtYWxsXC1jaGlsZHJlblwtZWF0XC1sZXNzOwor5KyyIDwgdG9cLWVhdFwtdG9cLXRoZVwtaGFsZlwtZnVsbDsKK+SsqiA8IGFcLWtpbmRcLW9mXC1jb29rZWRcLW5vb2RsZTsKK+SsmyA8IHRoZVwtcm9hcmluZ1wtb2ZcLXRoZVwtd2luZDsKK+aCo+mboyA8IHRyaWFsc1wtYW5kXC10cmlidWxhdGlvbnM7CivkqJcgPCBleGNlc3NpdmVcLXJhaW5cLWFuZFwtc25vdzsKK+SohSA8IHNtYWxsXC1iaXJkc1wtXC1cLVwtdGhlXC13cmVuOwor6Y2b54WJIDwgdG9cLWRvXC1waHlzaWNhbFwtdHJhaW5pbmc7CivkpZYgPCBzaWx2ZXJcLW9mXC1nb2xkXC1maWxhZ3JlZTsKK+SljyA8IHVuZml0dGVkXC1mb3JcLWVhY2hcLW90aGVyOwor5KSlIDwgYWdyaWN1bHR1cmFsXC1pbXBsZW1lbnRzOwor5KKcIDwgdGhlXC1tYXJyaWFnZVwtb2ZcLWFcLXdvbWFuOwor5KG9IDwgdGhlXC1zaGFmdHNcLW9mXC1hXC12ZWhpY2xlOwor5KG6IDwgdGhlXC1lbmRcLW9mXC1hblwtYXhsZVwtdHJlZTsKK+ShoyA8IGFcLXBpZWNlXC1vZlwtY3VydmVkXC1ib2FyZDsKK+SgoyA8IG5ldFwtdG9cLXRyYXBcLXRoZVwtYW5pbWFsczsKK+SdiCA8IGFcLWJpZ1wtYW5kXC1zdHJlbnVvdXNcLXBpZzsKK+SakCA8IGdldHRpbmdcLXJlZFwtaW5cLXRoZVwtZXllczsKK+SaiiA8IHRvXC1sb29rXC1mcm9tXC1hXC1kaXN0YW5jZTsKK+SZkCA8IGZ1cnNcLWFuZFwtbGluZW5cLWdhcm1lbnRzOwor5JiGIDwgYVwtc2Vjb25kXC1mb3JtXC1lYXJ0aHdvcm07Civkl6AgPCB0aGVcLWxhcnZhXC1vZlwtbW9zcXVpdG9lczsKK+SXlCA8IGFcLWhvdXNlXC1saXphcmRcLW9yXC1nZWNrbzsKK+SWsSA8IGxhcmdlXC1zaHJpbXBcLWluXC10aGVcLXNlYTsKK+SUviA8IGFcLWtpbmRcLW9mXC1mcmFncmFudFwtaGVyYjsKK+STsSA8IGFcLWtpbmRcLW9mXC1oZXJiXC1tZWRpY2luZTsKK+aItOe2reaWryA8IGRhdmlzXC1cKGVuZ2xpc2hcLXN1cm5hbWVcKTsKK+ijnOWKqee1hOe5lCA8IGF1eGlsaWFyeVwtb3JnYW5pemF0aW9uczsKK+SQpCA8IGRyaWVkXC1hbmRcLXNlYXNvbmVkXC1tZWF0Owor5JCQIDwgY3VydmVkXC1wYXJ0XC1vZlwtdGhlXC1rbmVlOwor5I+ZIDwgYnJpbmVcLWZyb21cLXBpY2tsZWRcLW1lYXQ7Civkj5UgPCB0b1wtY29va1wtZm9vZFwtdGhvcm91Z2hseTsKK+e0heaok+WkoiA8IGFcLWRyZWFtXC1vZlwtcmVkXC1tYW5zaW9uczsKK+SNuSA8IG9kb3JcLW9mXC1hXC1zaGVlcFwtb3JcLWdvYXQ7CivkjZkgPCBuZXRzXC1mb3JcLWNhdGNoaW5nXC1iaXJkczsKK+SNmCA8IGFcLWdlbmVyYWxcLXRlcm1cLWZvclwtbmV0czsKK+SNkyA8IG5ldFwtZm9yXC1jYXRjaGluZ1wtcmFiYml0Owor5IurIDwgdG9cLXdpbmRcLXJvdW5kXC10aGVcLXJvcGVzOwor5IuoIDwgdG9cLXNldFwtaW5cLW9yZGVyXC10aGVcLW9sZDsKK+SKtCA8IGZvb2RcLW1hZGVcLW9mXC1yaWNlXC1mbG91cjsKK+SKqiA8IGNvYXJzZVwtcmljZVwtXC1cLVwtdW5odWxsZWQ7CivkiZwgPCB5b3VuZ1wtYW5kXC10ZW5kZXJcLWJhbWJvbzsKK+SJliA8IGZyYW1ld29ya1wtb2ZcLWFcLWNhcnJpYWdlOwor5IeXIDwgYmFtYm9vXC13aXRoXC1sb25nXC1qb2ludHM7Civkh5EgPCBhXC1zdGFuZGluZ1wtc2hvcnRcLXBlcnNvbjsKK+SGiiA8IHVuaHVza2VkXC1nbHV0aW5vdXNcLXJpY2U7CivkhokgPCB0aGVcLXN3aW5nXC1vZlwtcmljZVwtcGxhbnQ7Civom5nms7MgPCBcKHN3aW1taW5nXClcLWJyZWFzdHN0cm9rZTsKK+SDiSA8IGFcLXN0b25lXC1yZXNlbWJsaW5nXC1qYWRlOwor5oCO6bq8IDwgXChpbnRlcnJvZ2F0aXZlXC1wcm9ub3VuXCk7CivkgYwgPCB0b1wtc2VlXC1mb3JcLWFcLXNob3J0XC10aW1lOwor476AIDwgdG9cLWJlXC13ZWFrZWRcLWJ5XC1kaXNlYXNlOwor4724IDwgZGlzZWFzZXNcLW9mXC10aGVcLWFiZG9tZW47CivlnKjku4rlubTlubTlupUgPCBhdFwtdGhlXC1lbmRcLW9mXC10aGlzXC15ZWFyOwor47ynIDwgdGlsZXNcLWluXC1jeWxpbmRlclwtc2hhcGU7CivpgY7kuI3ljrsgPCBtYWtlXC1saWZlXC1kaWZmaWN1bHRcLWZvcjsKK+O5siA8IGFcLWZyaWdodGVuZWRcLXBpZ1wtb3JcLWRvZzsKK+O5riA8IGFcLWtpbmRcLW9mXC1hbmltYWxcLVwtdGFwaXI7CivjuZ0gPCBhXC1sZWdlbmRhcnlcLXdpbGRcLWFuaW1hbDsKK+O5kSA8IGFcLWZvdXJcLXllYXJzXC1vbGRcLWNhdHRsZTsKK+O5iiA8IGFcLWNhdHRsZVwtb2ZcLXdoaXRlXC1jb2xvcjsKK+O5hiA8IHRoZVwtY291bHRlclwtb2ZcLWFcLXBsb3VnaDsKK+Wbnumhp+att+WPsiA8IHRvXC1sb29rXC1iYWNrXC1hdFwtaGlzdG9yeTsKK+mAmuioiuWNlOWumiA8IGNvbW11bmljYXRpb25zXC1wcm90b2NvbDsKK+O4iyA8IG1lYXRzXC11c2VkXC1pblwtc2FjcmlmaWNlOwor47euIDwgc2NvcmNoZWRcLW9yXC1idXJuZWRcLXdvb2Q7Civjt6sgPCBmaXJlXC1jYXVzaW5nXC1ieVwtZHJ5bmVzczsKK+O2kiA8IHRoZVwtY3VycmVudFwtb2ZcLWFcLXN0cmVhbTsKK+O0siA8IGFcLXJpdmVyXC1pblwtYW5jaWVudFwtdGltZTsKK+O0kSA8IHRvXC10cmFjZVwtdXBcLXRvXC1hXC1zb3VyY2U7CivjtI8gPCB0aGVcLXBvbmRcLXdhdGVyXC1pc1wtc3RpbGw7Civjsr8gPCBleHRlbnNpdmVcLWJvZHlcLW9mXC13YXRlcjsKK+OyhCA8IHVuYnVybnRcLWJyaWNrc1wtb3JcLXRpbGVzOwor47GsIDwgY2Fubm90XC1yZWNvZ25pemVcLXBlb3BsZTsKK+OvmSA8IHRoZVwtYnVja3Rob3JuXC1vclwtanVqdWJlOwor6aeQ5a6IIDwgXChtYW5cLWFcLXBvc3RcLWFuZFwpXC1kZWZlbmQ7Civjrb4gPCB0b1wtY3V0XC10aGVcLXRpbWJlclwtYXBhcnQ7CivmuqvlkowgPCBtb2RlcmF0ZVwtXChwb2xpY3lcLFwtZXRjXC5cKTsKK+OtgyA8IHRoZVwtbGFyZ2VcLXJvcGVcLW9mXC1hXC1uZXQ7CivjrYIgPCBoZWlnaHRcLW9mXC10aGVcLWVuZFwtcG9pbnQ7CivjrLsgPCBpblwtYmV0d2Vlblwtb2ZcLXRoZVwtZmxlc2g7CivlkKboqo0gPCB0b1wtZGVjbGFyZVwtdG9cLWJlXC11bnRydWU7Civjp68gPCBhXC1idWNrZXRcLW1hZGVcLW9mXC13aWxsb3c7Civjp6UgPCB0b1wtbmlwXC13aXRoXC10aGVcLWZpbmdlcnM7Civjpr0gPCB3aXRoXC1lbGVnYW50XC1hcHBlYXJhbmNlOwor5oOF5aCx6JmVIDwgc291cmNlXC1cKG9mXC1pbmZvcm1hdGlvblwpOwor46a6IDwgYVwtbGFuY2VcLXdpdGhcLXR3b1wtcG9pbnRzOwor46aHIDwgYVwtcGVhY2VmdWxcLW9yXC1lYXN5XC1tb29kOwor46WFIDwgdXNlZFwtaW5cLWFcLXBlcnNvbicnc1wtbmFtZTsKK+OkjCA8IHRvXC1oYXZlXC1vbmUnJ3NcLWhlYXJ0XC1vd247Civjo7sgPCB0b1wtcmVtZWR5XC1ieVwtcHVuaXNobWVudDsKK+OjqiA8IHRvXC13YWxrXC13aXRoXC1zbG93XC1zdGVwczsKK+OjhiA8IHRvXC1sb29zZVwtdGhlXC1ib3dcLXN0cmluZzsKK+OiviA8IHRoZVwtY3VydmVkXC1lbmRcLW9mXC1hXC1ib3c7CivjorUgPCBwb3dlcmZ1bFwtYW5kXC1zdHJvbmdcLWJvdzsKK+OhuSA8IHRvXC1yZWx5XC11cG9uXC1lYWNoXC1vdGhlcjsKK+OhkiA8IGFcLWNhbGljb1wtc2Fja1wtZm9yXC1ncmFpbjsKK+OhjyA8IHRvXC1jdXRcLWFcLXN0cmlwXC1vZlwtY2xvdGg7CivjnrwgPCB0b1wtcmVzcGVjdGZ1bGx5XC1yZWNlaXZlOwor45qsIDwgYVwtbGFkeVwtc3RhcnRcLXRvXC1kb2xsXC11cDsKK+OaliA8IHRvXC1jb21lXC1vdXRcLXRvXC10aGVcLW9wZW47CivjmYogPCBhblwtYXJlYVwtb2ZcLWxldmVsXC1ncm91bmQ7CivjlbggPCBzb3VuZFwtb2ZcLXJvbGxpbmdcLWFcLWJvYXQ7CivjlKQgPCB0b1wtZXhlcnRcLW9uZScnc1wtc3RyZW5ndGg7CivohZDmlZfnvaogPCB0aGVcLWNyaW1lXC1vZlwtY29ycnVwdGlvbjsKK+OSpCA8IHRvXC1oYXZlXC1vbmUnJ3NcLWhlYXJ0XC13b247CivjkpkgPCB0b1wtaGFuZFwtb3JcLWJvd1wtdGhlXC1oZWFkOwor5q2l5bGl57at6ImxIDwgaGF2ZVwtZGlmZmljdWx0eVwtd2Fsa2luZzsKK+WFseWQjOevqemBuCA8IGNvbGxhYm9yYXRpdmVcLWZpbHRlcmluZzsKK+eZveibh+WCsyA8IHRhbGVcLW9mXC10aGVcLXdoaXRlXC1zbmFrZTsKK+Wkp+mpmuWwj+aAqiA8IG11Y2hcLWZ1c3NcLWFib3V0XC1ub3RoaW5nOwor6L6v6Ki85ZSv54mp5Li7576pIDwgZGlhbGVjdGljYWxcLW1hdGVyaWFsaXNtOwor5rGf6KW/IDwgamlhbmd4aVwtcHJvdmluY2VcLFwtY2hpbmE7CivmhJvmkqsgPCB0b1wtc2hvd1wtdGVuZGVyXC1jYXJlXC1mb3I7Civlj4PoiIcgPCB0b1wtcGFydGljaXBhdGVcLVwoaW5cLXN0aFwpOwor5riv5Lq6IDwgaG9uZ1wta29uZ1wtcGVyc29uXHxwZW9wbGU7Civpu4PmsrMgPCB5ZWxsb3dcLXJpdmVyXC1cKGh1YW5nXC1oZVwpOwor5rGf6JiHIDwgamlhbmdzdVwtcHJvdmluY2VcLFwtY2hpbmE7Civku7vlkb0gPCB0b1wtYXBwb2ludFwtYW5kXC1ub21pbmF0ZTsKK+WFrOWuieWumOWToSA8IHB1YmxpY1wtc2FmZXR5XC1vZmZpY2lhbHM7CivppIXlrZAgPCBtYWl6ZVwtb3JcLW1pbGxldFwtcGFuY2FrZTsKK+acn+aUtyA8IGVuZFwtb2ZcLXRlcm1cLWV4YW1pbmF0aW9uOwor57i96aGNIDwgdG90YWxcLVwoYW1vdW50XC1vclwtdmFsdWVcKTsKK+isguiqniA8IFwoZ3JhbW1hdGljYWxcKVwtcHJlZGljYXRlOwor5Y2K5oiQ5ZOBIDwgc2VtaVwtbWFudWZhY3R1cmVkXC1nb29kczsKK+S4reaXrCA8IG1pZGRsZVwtdGhpcmRcLW9mXC1hXC1tb250aDsKK+S4i+aXrCA8IGxhc3RcLXRoaXJkXC1vZlwtdGhlXC1tb250aDsKK+WCs+i8uOaKgOihkyA8IHRyYW5zbWlzc2lvblwtdGVjaG5vbG9neTsKK+iyneWFiyA8IGJha2VyXC1cKGVuZ2xpc2hcLXN1cm5hbWVcKTsKK+S6guWQgyA8IHRvXC1lYXRcLWluZGlzY3JpbWluYW50bHk7CivlpZTpoK3lhZIgPCBzb21ldGhpbmdcLXRvXC1zdHJpdmVcLWZvcjsKK+WGsOWkqembquWcsCA8IGFcLXdvcmxkXC1vZlwtaWNlXC1hbmRcLXNub3c7CivmlL/lupzmqZ/mp4sgPCBnb3Zlcm5tZW50XC1vcmdhbml6YXRpb247CivkuK3ovYnnq5kgPCBodWJcLVwobmV0d29ya1wtZXF1aXBtZW50XCk7CivmganmgKggPCBcKGZlZWxpbmdcLW9mXClcLXJlc2VudG1lbnQ7CivkuI3lpJYgPCBub3RcLWJleW9uZFwtdGhlXC1zY29wZVwtb2Y7CivmnI3liJEgPCBzZXJ2ZVwtYVwtcHJpc29uXC1zZW50ZW5jZTsKK+iOq+mdniA8IGNhblwtaXRcLWJlXC1wb3NzaWJsZVwtdGhhdDsKK+W7o+ilvyA8IGd1YW5neGlcLXByb3ZpbmNlXCxcLWNoaW5hOwor5LiN5Y+v55CG5Za7IDwgYmVcLWltcGVydmlvdXNcLXRvXC1yZWFzb247CivlpZTngIkgPCBcKG9mXC10b3JyZW50c1wpXC1ydXNoXC1kb3duOwor5LmIIDwgaW50ZXJyb2dhdGl2ZVwtcGFydGljbGU7CivooqsgPCBwYXNzaXZlXC1pbmRpY2F0b3JcLScnYnknJzsKK+eUsyA8IHRvXC1zdGF0ZVwtdG9cLWFcLXN1cGVyaW9yOwor5bKhIDwgcmlkZ2VcLW9yXC1jcmVzdFwtb2ZcLWhpbGw7CivnkLQgPCBjaGluZXNlXC1sdXRlXC1vclwtZ3VpdGFyOwor5ayMIDwgc2VkdWN0aXZlXC1hbmRcLWxvdmVhYmxlOwor572XIDwgbmV0XC1mb3JcLWNhdGNoaW5nXC1iaXJkczsKK+aRuCA8IGdlbnRseVwtdG91Y2hcLXdpdGhcLWhhbmQ7Civku7AgPCByYWlzZVwtdGhlXC1oZWFkXC10b1wtbG9vazsKK+iHjSA8IGFiZG9taW5hbFwtYXJlYVwtb2ZcLWNyYWI7Civpg5EgPCBzdGF0ZVwtaW5cLXRvZGF5JydzXC1oZW5hbjsKK+i0ryA8IGFcLXN0cmluZ1wtb2ZcLTEwMDBcLWNvaW5zOwor56utIDwgcHV0XC1mb3J0aFwtZ3JlYXRcLWVmZm9ydDsKK+enkiA8IGJlYXJkXC1vZlwtZ3JhaW5cLW9yXC1jb3JuOwor5aWaIDwgd2hlcmVcP1wtd2hhdFw/XC1ob3dcP1wtd2h5XD87Civnm48gPCBzbWFsbFwtY3VwXC1vclwtY29udGFpbmVyOwor6JCdIDwgdHlwZVwtb2ZcLWNyZWVwaW5nXC1wbGFudDsKK+aipyA8IHN0ZXJjdWxpYVwtcGxhdGFuaWZvbGlhOwor5ZKmIDwgZXhwcmVzc2lvblwtb2ZcLXN1cnByaXNlOwor562QIDwgYmFtYm9vXC1iYXNrZXRcLW9yXC1jaGVzdDsKK+iwjSA8IGFuXC1pbnRlbGxpZ2VuY2VcLXJlcG9ydDsKK+evsSA8IGJhbWJvb1wtb3JcLXdvb2RlblwtZmVuY2U7CivnkLYgPCBndWl0YXJcLWxpa2VcLWluc3RydW1lbnQ7CivmvbogPCBzb3VuZFwtb2ZcLWZsb3dpbmdcLXdhdGVyOwor5Z2zIDwgYVwtaG9sbG93XC1pblwtdGhlXC1ncm91bmQ7Civln4IgPCBkaXRjaGVzXC1mb3JcLWlycmlnYXRpb247CivlgIwgPCBhc3Npc3RhbnRcLWluXC13aW5lXC1zaG9wOwor6ZyBIDwgdG9cLWNsZWFyXC11cFwtYWZ0ZXJcLXJhaW47Civpgq8gPCBjaXR5XC1pblwtaGViZWlcLXByb3ZpbmNlOwor57KRIDwgdHNhbWJhXC1cKGZvb2RcLWluXC10aWJldFwpOwor6JuAIDwgaW5zZWN0c1wtdGhhdFwtZWF0XC1ib29rczsKK+WrpiA8IG5hbWVcLW9mXC1hXC1tb29uXC1nb2RkZXNzOwor6LWKIDwgYnV5XC1hbmRcLXNlbGxcLW9uXC1jcmVkaXQ7CivlvJEgPCB0b1wta2lsbFwtb25lJydzXC1zdXBlcmlvcjsKK+aRgSA8IHRvXC1wcmVzc1wtd2l0aFwtdGhlXC1oYW5kOwor55W5IDwgYVwtZmllbGRcLW9mXC0yMFwtb3JcLTMwXC1tdTsKK+inkCA8IGhhdmVcLWltcGVyaWFsXC1hdWRpZW5jZTsKK+iupiA8IGV4cG9zZVwtb3RoZXInJ3NcLXNlY3JldHM7Civml4QgPCBhXC1raW5kXC1vZlwtYW5jaWVudFwtZmxhZzsKK+i2tSA8IG5vaXNlXC1vZlwtdHJhbXBpbmdcLWZlZXQ7CivphbkgPCB0b1wtcG91clwtb3V0XC1hXC1saWJhdGlvbjsKK+WtsyA8IGJyZWVkXC1pblwtbGFyZ2VcLW51bWJlcnM7CivloYQgPCBlbGV2YXRlZFwtYmFua1wtaW5cLWZpZWxkOwor6J6IIDwgZGllbXllbGlsdXNcLXB5cm9nYXN0ZXI7CivnqqwgPCBhXC1zbWFsbFwtZG9vclwtb3JcLXdpbmRvdzsKK+essSA8IGFcLWJhc2tldFwtdHJhcFwtZm9yXC1maXNoOwor54m/IDwgc2hlZFwtb3JcLXBlblwtZm9yXC1jYXR0bGU7Civom5ggPCBhXC13ZWV2aWxcLWZvdW5kXC1pblwtcmljZTsKK+eVjiA8IGFcLWRyYWluXC1iZXR3ZWVuXC1maWVsZHM7Civogbfmpa3kuK3lrbggPCB2b2NhdGlvbmFsXC1oaWdoXC1zY2hvb2w7CivntrLot6/nr4Dpu57ku4vpnaIgPCBuZXR3b3JrXC1ub2RlXC1pbnRlcmZhY2U7CivmraPlnKjkuK3lnIvoqKrllY8gPCBkdXJpbmdcLWFcLXRyaXBcLXRvXC1jaGluYTsKK+mBuueVmSA8IFwobGVhdmVcLW9yXC1iZVwtYVwpXC1sZWdhY3k7CivluLjopo8gPCBjb252ZW50aW9uYWxcLVwod2VhcG9uc1wpOwor6Ieq6aOf5YW25p6cIDwgcmVhcFwtd2hhdFwtb25lXC1oYXNcLXNvd247CivorYnliLggPCBcKGZpbmFuY2lhbFwpXC1zZWN1cml0aWVzOwor5LiN6Zyy6IGy6ImyIDwgbm90XC1zaG93XC1vbmUnJ3NcLWZlZWxpbmc7CivmhZXpgZPlj4sgPCByZWxpZ2lvdXNcLWludmVzdGlnYXRvcjsKK+W+gOW4uCA8IGhhYml0dWFsbHlcLWluXC10aGVcLXBhc3Q7CivlpKfnhZ7poqjmma8gPCBkYW1wZW5pbmdcLW9uZScnc1wtc3Bpcml0Owor5Ymd5o6h5q+UIDwgc3RyaXBwaW5nXC10b1wtb3JlXC1yYXRpbzsKK+e+heabvOiqnuaXjyA8IHJvbWFuY2VcLWxhbmd1YWdlXC1ncm91cDsKK+WtsOiDveeUn+W3pyA8IHByYWN0aWNlXC1tYWtlc1wtcGVyZmVjdDsKK+WmluWGtiA8IHByZXR0eVwtYW5kXC1mbGlydGF0aW91czsKK+mdqeWRvSA8IFwocG9saXRpY2FsXClcLXJldm9sdXRpb247Civoq5blo4cgPCBmb3J1bVwtXChmb3JcLWRpc2N1c3Npb25cKTsKK+Wjn+aWtyA8IGVuam95XC1tYXJrZXRcLWRvbWluYW5jZTsKK+eJoeS4uSA8IHBlb255XC1cKHR5cGVcLW9mXC1mbG93ZXJcKTsKK+WgseeohSA8IGRlY2xhcmVcLWR1dGlhYmxlXC1nb29kczsKK+ebrueahOWcsCA8IGRlc3RpbmF0aW9uXC1cKGxvY2F0aW9uXCk7Civlhazoqo0gPCBwdWJsaWNseVwta25vd25cLVwodG9cLWJlXCk7Civll7fll7flvoXlk7ogPCBjcnlcLXBpdGVvdXNseVwtZm9yXC1mb29kOwor55m86KGoIDwgdG9cLWlzc3VlXC1cKGFcLXN0YXRlbWVudFwpOwor5LiN55eb5LiN55eSIDwgc2NyYXRjaGluZ1wtdGhlXC1zdXJmYWNlOwor5ZyL5YuZ6ZmiIDwgc3RhdGVcLWRlcGFydG1lbnRcLVwodXNhXCk7Civpva8gPCB0ZWV0aFwtZ3Jvd25cLWluXC1vbGRcLWFnZTsKK+mbu+WZqCA8IFwoZWxlY3RyaWNhbFwpXC1hcHBsaWFuY2U7CivpuaMgPCBmYWJ1bG91c1wtbXl0aGljYWxcLWJpcmQ7Civmrrfli6QgPCBwb2xpdGVseVwsXC1zb2xpY2l0b3VzbHk7CivljYHkupTlhIQgPCBvbmVcLWFuZFwtYVwtaGFsZlwtYmlsbGlvbjsKK+mwhiA8IHNjb21iZXJvbW9ydXNcLXNpbmVuc2lzOwor6a6TIDwgbWluY2VkXC1hbmRcLXNhbHRlZFwtZmlzaDsKK+e0heeHkuiCiSA8IHJlZFwtY29va2VkXC1cKHBvcmtcKVwtbWVhdDsKK+WIsOacnyA8IGJlY29tZVwtZHVlXC1cKGVnXCxcLWxvYW5zXCk7CivpqYwgPCBuYW1lXC1vZlwtYVwtZmFtb3VzXC1ob3JzZTsKK+WFrOWuieWxgCA8IHB1YmxpY1wtc2VjdXJpdHlcLWJ1cmVhdTsKK+eXhemZoiA8IGFcLXNwZWNpYWxpemVkXC1ob3NwaXRhbDsKK+iBr+e2sueSsOWigyA8IG5ldHdvcmtpbmdcLWVudmlyb25tZW50Owor6Z+5IDwgbXVzaWNcLW9mXC1iZWxsXC1hbmRcLWRydW07Civop6Pph4vln7fooYwgPCBpbnRlcnByZXRlZFwtXChjb21wdXRlclwpOwor5YWr5bCP5pmC5bel5L2c5Yi2IDwgZWlnaHRcLWhvdXJcLXdvcmtpbmdcLWRheTsKK+a2iOaBr+mdiOmAmuS6uuWjqyA8IGFcLXdlbGxcLWluZm9ybWVkXC1zb3VyY2U7Civpm5ggPCBkeWVcLW1hZGVcLWZyb21cLXJlZFwtc29pbDsKK+mYhyA8IGFcLWJ1ZGRoaXN0XC1oaWdoXC1wcmllc3Q7CivkuI3ov5Hkurrmg4UgPCBub3RcLWFtZW5hYmxlXC10b1wtcmVhc29uOwor6ZGQIDwgYm9sdFwtb2ZcLWFcLWNoaW5lc2VcLWxvY2s7CivmlL/msrvmqZ/mp4sgPCBwb2xpdGljYWxcLW9yZ2FuaXphdGlvbjsKK+mMhiA8IHRoZVwtY29sb3JcLW9mXC1hXC1taW5lcmFsOwor6YSQIDwgdG93blwtaW5cLWhlbmFuXC1wcm92aW5jZTsKK+mBsCA8IGdydW50aW5nXC1zb3VuZFwtb2ZcLXBpZ3M7CivovqUgPCB2YXJpZXR5XC1vZlwtbWFyc2hcLWdyYXNzOwor55eF6LGhIDwgc3ltcHRvbVwtXChvZlwtYVwtZGlzZWFzZVwpOwor5pel5pys57aT5r+f5paw6IGeIDwgamFwYW5lc2VcLWVjb25vbWljXC1uZXdzOwor5qy65YeMIDwgdG9cLWJ1bGx5XC1hbmRcLWh1bWlsaWF0ZTsKK+mBjeWPiiA8IHRvXC1leHRlbmRcLVwoZXZlcnl3aGVyZVwpOwor6LCCIDwgY29uc3VsdFwtY2FyZWZ1bGx5XC13aXRoOwor57C9572yIDwgdG9cLXNpZ25cLVwoYW5cLWFncmVlbWVudFwpOwor6KmqIDwgZGlmZmljdWx0eVwtaW5cLXNwZWFraW5nOwor5aCx5bCOIDwgdG9cLWNvdmVyXC1cKHJlcG9ydFwpXC1uZXdzOwor6Ke/IDwgYVwtYm9ka2luXC1tYWRlXC1vZlwtaXZvcnk7CivluIPmnJcgPCBlbmdsaXNoXC1zdXJuYW1lXCxcLWJyb3duOwor6KaAIDwgdmFyaWFudFwtb2ZcLXJhZGljYWxcLTE0NjsKK+iknyA8IGlubmVyXC1zaGlydFwtb3JcLXNpbmdsZXQ7Civooa0gPCB0aGVcLWxhcGVsXC1vZlwtYVwtZ2FybWVudDsKK+ihpiA8IHNtb290aFwtb3V0XC10aGVcLWNsb3RoZXM7CivmqJnmupYgPCBcKGFuXC1vZmZpY2lhbFwpXC1zdGFuZGFyZDsKK+ioiuaBr+WCs+mBnuS4reS7iyA8IG1lc3NhZ2VcLXRyYW5zZmVyXC1hZ2VudDsKK+WPpuecvOebuOeciyA8IHRvXC12aWV3XC1pblwtYVwtbmV3XC1saWdodDsKK+iVlSA8IGNhcnlvcHRlcmlzXC1kaXZhcmljYXRhOwor6JSvIDwgYVwtdmFyaWV0eVwtb2ZcLWFydGVtaXNpYTsKK+iQtCA8IG1lZGljaW5hbFwtcG9pc29uXC1wbGFudDsKK+iPtiA8IHNwZWNpZXNcLW9mXC13YXRlclwtcGxhbnQ7Civkv6Hmga/mioDooZMgPCBpbmZvcm1hdGlvblwtdGVjaG5vbG9neTsKK+iEpCA8IHJhd1wtbWVhdFwtZm9yXC1zYWNyaWZpY2U7Civnmbznl4XnjocgPCBpbmNpZGVuY2VcLW9mXC1hXC1kaXNlYXNlOwor6ICsIDwgZHJpbGxcLWZvclwtc293aW5nXC1ncmFpbjsKK+eWkeWVj+WPpSA8IGludGVycm9nYXRpdmVcLXNlbnRhbmNlOwor6ICCIDwgdmFyaWFudFwtb2ZcLXJhZGljYWxcLTEyNTsKK+mAgOS8kSA8IHJldGlyZW1lbnRcLVwoZnJvbVwtd29ya1wpOwor57mmIDwgc3RyaW5nXC1vZlwtY29wcGVyXC1jb2luczsKK+S+huWbnuS+huWOu+WcsCA8IGJhY2t3YXJkc1wtYW5kXC1mb3J3YXJkczsKK+WuieWFqOiAg+aFriA8IHNlY3VyaXR5XC1jb25zaWRlcmF0aW9uOwor57eFIDwgc2lsa1wtb2ZcLXB1cnBsaXNoXC1jb2xvcjsKK+i2qOmZhCA8IHRvXC1pbmdyYXRpYXRpb25cLW9uc2VsZjsKK+atpOS4gOaZgiA8IHRoYXRcLXdhc1wtb25lXC1zaXR1YXRpb247Civnr6IgPCB0aGVcLW5hbWVcLW9mXC1iYW1ib29cLWhhdDsKK+ethui3oSA8IGFcLXBlcnNvbicnc1wtaGFuZHdyaXRpbmc7Civkv6Hmga/nrqHnkIYgPCBpbmZvcm1hdGlvblwtbWFuYWdlbWVudDsKK+eboeWKmyA8IGRvXC1vbmUnJ3NcLWJlc3RcLVwoZWZmb3J0XCk7CivntrLntaHlsaTljZTorbAgPCBuZXR3b3JrXC1sYXllclwtcHJvdG9jb2w7CivnrYboqJggPCB0YWtlXC1kb3duXC1cKGluXC13cml0aW5nXCk7CivkuI3lpb3mg7kgPCBub3RcLXRvXC1iZVwtdHJpZmxlZFwtd2l0aDsKK+ikpeWtkCA8IGNvdHRvblwtcGFkZGVkXC1tYXR0cmVzczsKK+eZiiA8IGFcLWRpc2Vhc2VcLW9mXC10aGVcLWhlYXJ0Owor55GxIDwgYVwtZ2VtXC11c2VkXC1hc1wtZWFyXC1wbHVnOwor6Lmm6Lmm6Lez6LezIDwgYm91bmNpbmdcLWFuZFwtdml2YWNpb3VzOwor54+jIDwgbmFtZVwtb2ZcLWFcLWtpbmRcLW9mXC1qYWRlOwor5468IDwgYmVhdXRpZnVsXC1jb2xvclwtb2ZcLWdlbTsKK+eJtyA8IGNvd1wtb3JcLW94XC1vZlwtb25lXC1jb2xvcjsKK+WEmOW/qyA8IGFzXC1xdWlja2x5XC1hc1wtcG9zc2libGU7CivpgJrkv6Hlr4bluqYgPCBjb21tdW5pY2F0aW9uc1wtZGVuc2l0eTsKK+S4jeW+l+W3siA8IGFjdFwtYWdhaW5zdFwtb25lJydzXC13aWxsOwor54SEIDwgcmlzaW5nXC1mbGFtZXNcLW9yXC1mdW1lczsKK+eDliA8IGNhbGFtaXRpZXNcLWZyb21cLWhlYXZlbjsKK+aykuacieW3ruWIpSA8IHRoZXJlXC1pc1wtbm9cLWRpZmZlcmVuY2U7Civmv4DmmIIgPCBhcm91c2VkXC10b1wtaW5kaWduYXRpb247CivkuI3oqIDogIzllrsgPCBpdFwtZ29lc1wtd2l0aG91dFwtc2F5aW5nOwor5bel5qWt5YyW5ZyL5a62IDwgaW5kdXN0cmlhbGl6ZWRcLWNvdW50cnk7CivmraXoqr/kuIDoh7QgPCB0b1wtYmVcLXVuaXRlZFwtaW5cLWFjdGlvbjsKK+erpeipsSA8IGNoaWxkcmVuJydzXC1mYWlyeVwtdGFsZXM7CivmrqIgPCBiZVwtaW5cLWdyZWF0XC1kaWZmaWN1bHR5Owor5qexIDwgZmlyZXdvb2RcLWZvclwtc2FjcmlmaWNlOwor5LiK5Y2K5bm0IDwgZmlyc3RcLWhhbGZcLVwob2ZcLWFcLXllYXJcKTsKK+S4jeimgeiHiSA8IGhhdmVcLW5vXC1zZW5zZVwtb2ZcLXNoYW1lOwor6IOM5Zyw6aKoIDwgYmVoaW5kXC1zb21lYm9keScnc1wtYmFjazsKK+eUqOaItuWIsOe2sue1oeeahOaOpeWPoyA8IHVzZXJcLW5ldHdvcmtcLWludGVyZmFjZTsKK+acjyA8IGxpZ2h0XC1vZlwtY3Jlc2NlbnRcLW1vb247Civml5AgPCBhblwtZW1icm9pZGVyZWRcLXBlbm5hbnQ7CivmlJkgPCB0b1wtZ2l2ZVwtYVwtaGVscGluZ1wtaGFuZDsKK+aPkOS6pCA8IHN1Ym1pdFwtXChhXC1yZXBvcnRcLFwtZXRjXCk7CivmkbAgPCB0b1wtc2VpemVcLXdpdGhcLXRoZVwtaGFuZDsKK+S+m+iBtyA8IGhvbGRcLWFuXC1vZmZpY2VcLW9yXC1wb3N0Owor5pGAIDwgdG9cLWNvdmVyXC13aXRoXC10aGVcLWhhbmQ7CivmkL4gPCB0b1wtY3J1c2hcLXdpdGhcLXRoZVwtaGFuZDsKK+S+huiHqiA8IHRvXC1jb21lXC1mcm9tXC1cKGFcLXBsYWNlXCk7Civlrproqp4gPCBhdHRyaWJ1dGl2ZVwtXChtb2RpZmllclwpOwor6L+R5bm05L6GIDwgZm9yXC10aGVcLXBhc3RcLWZld1wteWVhcnM7CivmgLkgPCBhXC1wb2xpdGVcLXZlcnNpb25cLW9mXC1oZTsKK+a8gua1gSA8IGNhcnJpZWRcLWJ5XC10aGVcLWN1cnJlbnQ7CivluoggPCB1c2VkXC1pblwtcGVyc29uJydzXC1uYW1lczsKK+W1tiA8IGxvd1wtcGFydFwtb2ZcLWFcLW1vdW50YWluOwor5a2SIDwgbGFydmFlXC1vZlwtdGhlXC1tb3NxdWl0bzsKK+ajhOasiiA8IHRvXC1hYnN0YWluXC1mcm9tXC12b3Rpbmc7CivmjY/lkIggPCB0b1wtYWN0XC1hc1wtYVwtZ29cLWJldHdlZW47Civlo5YgPCBvcGVuXC1zcGFjZVwtYWxvbmdcLXdhdGVyOwor55Sy5p2/IDwgZGVja1wtXChvZlwtYVwtYm9hdFwsXC1ldGNcLlwpOwor5YW26Ieq6LqrIDwgb25lJydzXC1vd25cLVwocmVzcGVjdGl2ZVwpOwor5pWZ576p5ZKM6IGW57SEIDwgZG9jdHJpbmVcLWFuZFwtY292ZW5hbnRzOwor5ZmAIDwgc3BpcnRcLW91dFwtb2ZcLXRoZVwtbW91dGg7CivmooXmtL4gPCB0aGVcLW1laVwtbGFuZmFuZ1wtc2Nob29sOwor54Gr54Sw5bGxIDwgdGhlXC1tb3VudGFpblwtb2ZcLWZsYW1lczsKK+a2iemBjiA8IGZvcmRcLVwoYVwtc3RyZWFtXCxcLXJpdmVyXCk7Civlj50gPCB0b1wtcmVzcGVjdGZ1bGx5XC1pbmZvcm07Civlt6XkvZznq5kgPCBcKGNvbXB1dGVyXClcLXdvcmtzdGF0aW9uOwor6auU5YWnIDwgaW50ZXJuYWxcLVwodG9cLXRoZVwtYm9keVwpOwor5LyuIDwgdG9cLW1ha2VcLWFcLWdyZWF0XC1lZmZvcnQ7CivpgJroqIrpgJrpgZMgPCBjb21tdW5pY2F0aW9uc1wtY2hhbm5lbDsKK+S2pSA8IHVuZXZlbmx5XC1maXR0aW5nXC10ZWV0aDsKK+S2pCA8IHNvdW5kXC1vZlwtY2hld2luZ1wtYm9uZXM7CivktoIgPCBhXC1zcXVpcnJlbFwtbGlrZVwtYW5pbWFsOwor5LOuIDwgdG9cLWxvb2tcLWF0XC1pblwtc3VycHJpc2U7CivkspogPCBhXC1zZWNvbmRcLW5hbWVcLWZvclwtc2hhZDsKK+aOoeioquiomOiAhSA8IGludmVzdGlnYXRpdmVcLXJlcG9ydGVyOwor5LC1IDwgbG9va3NcLWxpa2VcLWNvbW1vblwtY2FycDsKK+SwsCA8IGRyZWFyeVwtY3JpZXNcLW9mXC1naG9zdHM7CivkrrogPCBsdXh1cmlhbnRcLW9mXC10aGVcLWdyYXNzOwor5K6qIDwgdG9cLWdlbGRcLWFcLWhvcnNlXC1vclwtYXNzOwor5Km8IDwgc3RpdGNoZXNcLW9uXC1hXC1jb3ZlcmxldDsKK+SpjSA8IHRvXC1sb29rXC1wYWxlXC1vclwtcGFsbGlkOwor5Ki1IDwgcmFpbmVkXC1mb3JcLWFcLWxvbmdcLXRpbWU7CivkpoggPCB0b1wtc2lnaFwtaW5cLWxhbWVudGF0aW9uOwor5KWfIDwgYVwtbWV0YWxcLW1hcmtpbmdcLVwtc3Rha2U7CivohIrmpI4gPCBiYWNrXC1cKG9mXC1hXC12ZXJ0aWJyYXRlXCk7CivkvK/niLYgPCBmYXRoZXInJ3NcLWVsZGVyXC1icm90aGVyOwor5KKOIDwgaW5kaWNhdGluZ1wtZXhjbGFtYXRpb247CivkobUgPCBkZWNvcmF0aW9uXC1vblwtY2FycmlhZ2U7CivkobAgPCBzdHJvbmdcLWFuZFwtZHVyYWJsZVwtaHViOwor5KGsIDwgY292ZXJpbmdcLW9mXC1hXC1jYXJyaWFnZTsKK+ShgSA8IG5vdFwtd2VsbFwtZm9ybWVkXC1maWd1cmU7Civkn70gPCBzY2F0dGVyZWRcLW9yXC1kaXNwZXJzZWQ7CivknpggPCB0b1wtZ29cLXN0cmFpZ2h0XC1mb3J3YXJkOwor5J2iIDwgYW5cLWFuaW1hbFwtaW5cLW9sZFwtdGltZXM7Civkv53lrokgPCBlbnN1cmVcLXB1YmxpY1wtc2VjdXJpdHk7CivknZMgPCBsb25nXC1iZWFyZFwtb3JcLXdoaXNrZXJzOwor5Jy6IDwgaHVza2luZ1wtYmVhbnNcLWZvclwtY2FrZTsKK+ScoSA8IHRvXC1zbWVsbFwtdGhlXC1mcmFncmFudHM7Civkm5kgPCB0b1wtc21lbGxcLXRoZVwtZnJhZ3JhbmNlOwor5JqeIDwgdGhlXC1taWRkbGVcLW9mXC10aGVcLWhvcm47CivljbDmrZDkurogPCBpbmRvXC1ldXJvcGVhblwtXChwZXJzb25cKTsKK+SZhCA8IGNsb3RoZXNcLXdpdGhcLXRoaWNrXC1oZW07CivkmL0gPCBjbG90aGluZ1wtYW5kXC1vcm5hbWVudHM7CivklbQgPCBhXC1zZWNvbmRcLWZvclwtbW9ua3Nob29kOwor5JSgIDwgdGhpblwtcm9vdFwtb2ZcLXRoZVwtbG90dXM7Civkj6kgPCB0b1wtc2hydWdcLXRoZVwtc2hvdWxkZXJzOwor5I2xIDwgdGhlXC13aWxkXC1nb2F0XC1vclwtc2hlZXA7Civki6ogPCBmaW5lXC1hbmRcLWRlbGljYXRlXC1zaWxrOwor5IqPIDwgbWl4aW5nXC1yaWNlXC13aXRoXC1icm90aDsKK+SIhCA8IGFcLWtpbmRcLW9mXC1zb2xpZFwtYmFtYm9vOwor5LiK6LqrIDwgdXBwZXJcLXBhcnRcLW9mXC10aGVcLWJvZHk7Civkh6MgPCBiYW1ib29cLXdpdGhcLXdoaXRlXC1iYXJrOwor5ISgIDwgdG9cLXNhY3JpZmljZVwtdG9cLWhlYXZlbjsKK+SDpyA8IHNvdW5kXC1vZlwtZmFsbGluZ1wtcm9ja3M7CivkgIQgPCBjb250YWluZXJcLWZ1bGxcLW9mXC1mb29kOwor47+LIDwgYVwta2luZFwtb2ZcLXNraW5cLWRpc2Vhc2U7CivjvJ4gPCBqYXJcLXdpdGhcLWFcLXNtYWxsXC1tb3V0aDsKK+O6niA8IHRvXC1zaWduXC1pblwtbGFtZW50YXRpb247CivlnablhYvou4ogPCB0YW5rXC1cKGFybW9yZWRcLXZlaGljbGVcKTsKK+O4ryA8IGFcLWZpbmVcLWJyZWVkXC1vZlwtY2F0dGxlOwor5q+U6LyD6ICM6KiAIDwgY29tcGFyYXRpdmVseVwtc3BlYWtpbmc7Civjta8gPCBzb3VuZFwtb2ZcLXdhdGVyXC1mbG93aW5nOwor47OvIDwgZ29kZGVzc1wtb2ZcLWFuXC1pbmtcLXNsYWI7CivjsYYgPCB0b1wtc21pbGVcLWF0XC1lYWNoXC1vdGhlcjsKK+OwqCA8IHRvXC10YWtlXC1icmVhdGhcLW9yXC1yZXN0Owor466RIDwgc291bmRcLW9mXC1icm9rZW5cLXN0aWNrczsKK+OtryA8IHRyZWVcLXdpdGhcLXNtYWxsXC1sZWF2ZXM7CivlrZfmrrUgPCBcKG51bWVyaWNcLFwtZGF0ZGFcKVwtZmllbGQ7Civjq4ogPCBmbHV0dGVyaW5nXC1vZlwtdGhlXC1mbGFnOwor46qjIDwgYVwtcGxhY2VcLWluXC1oYW5cLWR5bmFzdHk7Civjqp8gPCB0b1wtcmVnYXJkXC1hc1wtaW1wb3J0YW50Owor46qeIDwgdG9cLWJlXC1oZWxkXC1ieVwtdGhlXC1oYW5kOwor46m6IDwgYVwtY3JhY2tcLW9uXC10aGVcLXV0ZW5zaWw7CivjqZwgPCB0b1wtYmVcLWluXC1wb3NzZXNzaW9uXC1vZjsKK+OpjiA8IHRvXC1wcmVzc1wtd2l0aFwtYVwtZmluZ2VyOwor46e2IDwgdGhlXC1qaW5nbGluZ1wtb2ZcLW1ldGFsczsKK+OnmSA8IHRvXC1naXZlXC1hXC1wbGF5ZnVsXC1ibG93Owor46eDIDwgdG9cLXJlY2VpdmVcLXdoYXRcLWlzXC1kdWU7CivjpqMgPCB0b1wtdGFsa1wtaW5cLW9uZScnc1wtc2xlZXA7CivjpoQgPCBoYXJkXC10b1wtc2F5XC1vclwtcHJlZGljdDsKK+OkiiA8IGNoZWVyZnVsXC1hbmRcLWV4dWJlcmFudDsKK+S4puiIiSA8IGRldmVsb3BcLXNpbXVsdGFuZW91c2x5Owor46KJIDwgYVwtcm9vbVwtd2l0aFwtb3Blblwtc3BhY2U7CivkuIDomZ8gPCBmaXJzdFwtZGF5XC1vZlwtdGhlXC1tb250aDsKK+OglCA8IHNoYXBlc1wtb2ZcLXRoZVwtbW91bnRhaW47Civjn7sgPCB0aGVcLW1vYXRcLWFyb3VuZFwtYVwtY2l0eTsKK+mboumWi+aVhemEiSA8IHRvXC1sZWF2ZVwtb25lJydcLWhvbWVsYW5kOwor45uzIDwgYW5cLWFibm9tYWxcLXVuYm9yblwtYmFieTsKK+OatyA8IHRoZVwtYnJlYXN0c1wtb2ZcLWFcLXdvbWFuOwor45mzIDwgcnVnZ2VkbmVzc1wtb2ZcLXRoZVwtcm9hZDsKK+OZpCA8IGFcLWNyYWNrXC1pblwtZWFydGhlbndhcmU7CivjmZggPCB1c2VkXC1pblwtbmFtaW5nXC1hXC1wbGFjZTsKK+OXgiA8IHRvXC1rZWVwXC10aGVcLW1vdXRoXC1zaHV0Owor45aQIDwgc291bmRcLW9mXC1jYWxsaW5nXC1kdWNrczsKK+OUtCA8IGFncmljdWx0dXJhbFwtaW1wbGVtZW50Owor45O5IDwgYVwtc2hhcnBcLXBvaW50ZWRcLXdlYXBvbjsKK+OTpiA8IHRvXC1kZWxpYmVyYXRlXC1hbmRcLXBsYW47Civjk5ggPCBqYWRlXC13aXRoXC1zb21lXC1kZWZlY3RzOwor5LiN5YOP5qijIDwgaW5cLW5vXC1zaGFwZVwtdG9cLWJlXC1zZWVuOwor5a+p5YikIDwgcHV0XC1cKHNvbWVvbmVcKVwtdG9cLXRyaWFsOwor5ZCQ6JWDIDwgYW5jaWVudFwtbmFtZVwtZm9yXC10aWJldDsKK+a4rOWumiA8IHRvXC1zdXJ2ZXlcLWFuZFwtZXZhbHVhdGU7Civms7DnvoUgPCBcKGVuZ2xpc2hcLXN1cm5hbWVcKVwtdHlsbzsKK+WQnuiBsiA8IHRvXC1zd2FsbG93XC1vbmUnJ3NcLWNyaWVzOwor6K6K5YiG5rOVIDwgY2FsY3VsdXNcLW9mXC12YXJpYXRpb25zOwor6LKh5pyDIDwgZmluYW5jZVwtYW5kXC1hY2NvdW50aW5nOwor6YCa5L+h57ay57WhIDwgY29tbXVuaWNhdGlvbnNcLW5ldHdvcms7CivkuqTmmJMgPCBcKGJ1c2luZXNzXClcLXRyYW5zYWN0aW9uOwor6KW/6YGK6KiYIDwgcGlsZ3JpbWFnZVwtdG9cLXRoZVwtd2VzdDsKK+aVuOWtl+mAmuS/oSA8IGRpZ2l0YWxcLWNvbW11bmljYXRpb25zOwor54++5b25IDwgXChtaWxpdGFyeVwpXC1hY3RpdmVcLWR1dHk7CivlhbHnlKLpu6jlk6EgPCBjb21tdW5pc3RcLXBhcnR5XC1tZW1iZXI7CivmsJHpgbggPCBkZW1vY3JhdGljYWxseVwtZWxlY3RlZDsKK+a1t+aLlCA8IGhlaWdodFwtYWJvdmVcLXNlYVwtbGV2ZWw7CivntrLot6/mnrbmp4sgPCBuZXR3b3JrXC1pbmZyYXN0cnVjdHVyZTsKK+enkeaKgCA8IHNjaWVuY2VcLWFuZFwtdGVjaG5vbG9neTsKK+S7u+WFjSA8IHRvXC1hcHBvaW50XC1hbmRcLWRpc21pc3M7CivnlaLmpa3nlJ8gPCBncmFkdWF0ZVwtXChvZlwtYVwtc2Nob29sXCk7CivkuoLlr6sgPCB0b1wtd3JpdGVcLXdpdGhvdXRcLWJhc2lzOwor6Zu26YyiIDwgY2hhbmdlXC1cKHNhaWRcLW9mXC1tb25leVwpOwor5LiN5pyNIDwgbm90XC1hY2NlcHRcLVwoc29tZXRoaW5nXCk7CivpvLvlhZIgPCBhXC1ob2xlXC1pblwtYW5cLWltcGxlbWVudDsKK+aEn+WYhiA8IHRvXC1zaWdoXC1cKHdpdGhcLWZlZWxpbmdcKTsKK+WMluijnSA8IFwob2ZcLWFjdG9yc1wpXC10b1wtbWFrZVwtdXA7CivkupHljZcgPCB5dW5uYW5cLXByb3ZpbmNlXCxcLWNoaW5hOwor5pyN5a6MIDwgc2VydmVcLW91dFwtXChhXC1zZW50ZW5jZVwpOwor6buD5bGxIDwgbXRcLlwtaHVhbmdcLVwoaHVhbmdcLXNoYW5cKTsKK+WPpOazoiA8IGd1Ym9cLVwoYVwtcGVyc29uYWxcLW5hbWVcKTsKK+eMnOaLsyA8IGFcLWZpbmdlclwtZ3Vlc3NpbmdcLWdhbWU7Civnvo7lnIvkuYvpn7MgPCB2b2ljZVwtb2ZcLWFtZXJpY2FcLXJhZGlvOwor6IOM6buR6Y2LIDwgdG9cLWJlXC1tYWRlXC1hXC1zY2FwZWdvYXQ7CivliqnoqZ4gPCBwYXJ0aWNsZVwtXChncmFtbWF0aWNhbFwpOwor6Z2I5pWP5bqmIDwgXChsZXZlbFwtb2ZcKVwtc2Vuc2l0aXZpdHk7CivmqJnmupbntYTnuZQgPCBzdGFuZGFyZHNcLW9yZ2FuaXphdGlvbjsKK+eNqOaUrOW4guWgtCA8IHRvXC1tb25vcG9saXplXC1hXC1tYXJrZXQ7Civop4kgPCB0b1wtd2FrZVwtdXBcLWZyb21cLXNsZWVwOwor55KwIDwgamFkZVwtcmluZ1wtb3JcLWJyYWNlbGV0Owor5YiSIDwgdG9cLXJvd1wtb3JcLXBhZGRsZVwtYm9hdDsKK+WgqiA8IGFkZXF1YXRlbHlcLWNhcGFibGVcLW9mOwor5ZC0IDwgbmFtZVwtb2ZcLXdhcnJpbmdcLXN0YXRlOwor6bO0IDwgY3J5XC1vZlwtYmlyZFwtb3JcLWFuaW1hbDsKK+WRiSA8IG9uZVwtb2ZcLXdhcnJpbmdcLXN0YXRlczsKK+mmsyA8IGdvXC1xdWlja2x5XC1vclwtc3dpZnRseTsKK+amjiA8IHNtYWxsXC1ldmVyZ3JlZW5cLXNocnViOwor5ae7IDwgcmVsYXRpdmVzXC1ieVwtbWFycmlhZ2U7CivnrZIgPCB0aGlja1wtcGllY2VcLW9mXC1iYW1ib287CivluJggPCBmbGFnXC1zaWduXC1vZlwtYVwtdGF2ZXJuOwor56i7IDwgcmljZVwtZ3Jvd2luZ1wtaW5cLWZpZWxkOwor56awIDwgb25lJydzXC1kZWNlYXNlZFwtZmF0aGVyOwor5YmCIDwgbWVkaWNpbmFsXC1wcmVwYXJhdGlvbjsKK+ePgiA8IGluZmVyaW9yXC1raW5kXC1vZlwtamFkZTsKK+WYnyA8IHNvdW5kXC1vZlwtaG9yblwtdG9vdGluZzsKK+eRnCA8IGZsYXdsZXNzXC1nZW1cLW9yXC1qZXdlbDsKK+ePkSA8IGFcLWdlbVwtY3V0XC1saWtlXC1kcmFnb247Civor6wgPCBtYWtlXC1mYWxzZVwtYWNjdXNhdGlvbjsKK+WrliA8IHBhdHJvbml6ZVwtcHJvc3RpdHV0ZXM7Civpo5IgPCB0aGVcLXNvdW5kXC1vZlwtdGhlXC13aW5kOwor6ZSiIDwgcnVuXC1tZXRhbFwtaW50b1wtY3JhY2tzOwor5o6WIDwgc3VwcG9ydFwtd2l0aFwtdGhlXC1hcm1zOwor5qOjIDwga2VycmlhXC1qYXBvbmljYVwtcGxhbnQ7Civoj4EgPCBmbG93ZXJcLW9mXC1sZWVrXC1mYW1pbHk7CivlkqkgPCB0aGVcLWJsZWF0aW5nXC1vZlwtc2hlZXA7Civnj4kgPCBzdG9uZVwtcmVzZW1ibGluZ1wtamFkZTsKK+mSjiA8IHRvb2xcLWZvclwtYm9yaW5nXC1ob2xlczsKK+aKnyA8IHJvbGxcLWFyb3VuZFwtd2l0aFwtaGFuZDsKK+i2uCA8IHNlbGxcLW9yXC1idXlcLXdob2xlc2FsZTsKK+WmoyA8IG9uZScnc1wtZGVjZWFzZWRcLW1vdGhlcjsKK+W1iiA8IGRpc3RyaWN0XC1pblwtc2hhb2hzaW5nOwor56y4IDwgZmxhdFwtYmFza2V0XC1mb3JcLWdyYWluOwor6IKrIDwgdGhlXC1naXp6YXJkXC1vZlwtYVwtZm93bDsKK+iLqyA8IHJ1c2hcLW9yXC1zdHJhd1wtbWF0dGluZzsKK+WzpCA8IGhpZ2hcLXBvaW50ZWRcLW1vdW50YWluOwor56etIDwgb25lXC10aG91c2FuZFwtbWlsbGlvbnM7Civlp5IgPCB3aWZlXC1vZlwtZWxkZXJcLWJyb3RoZXI7Civok7AgPCB0b1wtaW5jcmVhc2VcLWZpdmVcLWZvbGQ7CivokowgPCBhcnRlbWlzaWFcLXN0ZWxsZXJpYW5hOwor6YWDIDwgdGhlXC1zcGlyaXRcLW9mXC1hXC1iZWluZzsKK+ezlyA8IHBhcmNoZWRcLXdoZWF0XC1vclwtcmljZTsKK+i+iyA8IGV4dGVyaW9yXC1yaW1cLW9mXC13aGVlbDsKK+mrqyA8IGNoaWxkcmVuJydzXC1oYWlyXC1zdHlsZTsKK+iZuiA8IGxhcmdlXC1wb2lzb25vdXNcLXNuYWtlOwor6Ya1IDwgY29udHJpYnV0ZVwtZm9yXC1kcmlua3M7CivomqwgPCBhXC12YXJpZXR5XC1vZlwtYml2YWx2ZXM7Civoo7wgPCB0b1wtdGFrZVwtb2ZmXC1vbmUnJ3NcLXRvcDsKK+ectSA8IGV5ZXNcLWRpc2Vhc2VkXC1hbmRcLWRpbTsKK+aetSA8IGhvbGxvXC1zdHVtcFwtb2ZcLWFcLXRyZWU7CivomKkgPCBhcnRlbWlzaWFcLXN0ZWxsYXJpYW5hOwor6K6T5Z2QIDwgdG9cLWdpdmVcLXVwXC1vbmUnJ3NcLXNlYXQ7CivlvazlvazmnInnpq4gPCByZWZpbmVkXC1hbmRcLWNvdXJ0ZW91czsKK+e2sue1oeeuoeeQhuWToSA8IG5ldHdvcmtcLWFkbWluaXN0cmF0b3I7Civmsrnlg7kgPCBvaWxcLVwocGV0cm9sZXVtXClcLXByaWNlOwor6Luf56Gs5Lu2IDwgc29mdHdhcmVcLWFuZFwtaGFyZHdhcmU7Civlt6jpoY0gPCBhXC1odWdlXC1zdW1cLVwob2ZcLW1vbmV5XCk7CivlpZTmlL4gPCBib2xkXC1hbmRcLXVucmVzdHJhaW5lZDsKK+W+l+aEjyA8IFwoYmVcKVwtcHJvdWRcLW9mXC1vbmVzZWxmOwor5a6M5YWo5YW85a65IDwgY29tcGxldGVseVwtY29tcGF0aWJsZTsKK+eGsemWgOiyqCA8IGdvb2RzXC1pblwtZ3JlYXRcLWRlbWFuZDsKK+mAmuS/oemHjyA8IGNvbW11bmljYXRpb25zXC12b2x1bWU7CivlpZTlv5kgPCBiZVwtYnVzeVwtcnVzaGluZ1wtYWJvdXQ7Civop4DmuKzooZvmmJ8gPCBvYnNlcnZhdGlvblwtc2F0ZWxsaXRlOwor5Ymb55u0IDwgdXByaWdodFwtYW5kXC1vdXRzcG9rZW47Civlt6Hpgo8gPCBiZVwtb25cLVwocG9saWNlXClcLXBhdHJvbDsKK+elneizgOipniA8IGNvbmdyYXR1bGF0b3J5XC1zcGVlY2g7Civpm7vohabovJTliqnoqK3oqIggPCBjb21wdXRlclwtYWlkZWRcLWRlc2lnbjsKK+mZjeemjyA8IGJsZXNzaW5nc1wtZnJvbVwtaGVhdmVuOwor54K46JelIDwgZXhwbG9zaXZlXC1cKHN1YnN0YW5jZVwpOwor5bm+5Y2B5bm0IDwgc2V2ZXJhbFwtdGVuc1wtb2ZcLXllYXJzOwor5aSi5oOzIDwgdG9cLWRyZWFtXC1vZlwtXChpblwtdmFpblwpOwor6Ziy56m6IDwgYW50aVwtYWlyY3JhZnRcLWRlZmVuc2U7CivkuInokKzkuIPljYMgPCB0aGlydHlcLXNldmVuXC10aG91c2FuZDsKK+WFiOmAsiA8IGFkdmFuY2VkXC1cKHRlY2hub2xvZ3lcKTsKK+Wkp+i1puWci+mamyA8IGFtbmVzdHlcLWludGVybmF0aW9uYWw7Civmg4XloLHlrpjlk6EgPCBpbnRlbGxpZ2VuY2VcLW9mZmljaWFsOwor5aWU5ZG9IDwgcnVzaFwtYWJvdXRcLW9uXC1lcnJhbmRzOwor5q+U5pa56KqqIDwgdG9cLW1ha2VcLWFuXC1hbmFsb2d5XC5cLlwuOwor6Zu756OB5Zmq6IGyIDwgZWxlY3Ryb21hZ25ldGljXC1ub2lzZTsKK+mVt+mAlOe2sui3ryA8IGxvbmdcLWRpc3RhbmNlXC1uZXR3b3JrOwor6Iqd5Yqg5ZOl5aSn5a24IDwgdW5pdmVyc2l0eVwtb2ZcLWNoaWNhZ287Civop6PmsbogPCB0b1wtc2V0dGxlXC1cKGFcLWRpc3B1dGVcKTsKK+m8gyA8IHRoZVwtZWRpYmxlXC13YXRlclwtZnJvZzsKK+m6peiKveezliA8IG1hbHRvc2VcLVwoc3dlZXRcLXN5cnVwXCk7Civpt4AgPCB0aGVcLWZpc2hpbmdcLWNvcm1vcmFudDsKK+e+juiBr+ekviA8IGFzc29jaWF0ZWRcLXByZXNzXC1cKGFwXCk7CivptKAgPCBhXC1raW5kXC1vZlwtbmlnaHRpbmdhbGU7CivpmLLmsrsgPCBcKHByZXZlbnRpb25cLWFuZFwpXC1jdXJlOwor6bCkIDwgc2VyaW9sYVwtcWlucXVlcmFkaWF0YTsKK+avlOiJsuWIhuaekCA8IGNvbG9yaW1ldHJpY1wtYW5hbHlzaXM7Civpr4QgPCBsZXBpZG90cmlnbGFcLXN0cmF1Y2hpOwor6auIIDwgZGVmaW5lZFwtYXNcLXRoZVwtcGVsdmlzOwor5o6o6Jam5L+hIDwgcmVjb21tZW5kYXRpb25cLWxldHRlcjsKK+W6q+eIvuW+t+S6uiA8IGt1cmRpc2hcLXBlcnNvblx8cGVvcGxlOwor5b6u6Luf5YWs5Y+4IDwgbWljcm9zb2Z0XC1jb3Jwb3JhdGlvbjsKK+WIhuapnyA8IFwodGVsZXBob25lXClcLWV4dGVuc2lvbjsKK+miuCA8IGNvb2xcLWJyZWV6ZVwtb2ZcLWF1dHVtbjsKK+ecvuacmyA8IHBlb3BsZScnc1wtZXhwZWN0YXRpb25zOwor5LiN6K2Y5oqs6IiJIDwgZmFpbFwtdG9cLWFwcHJlY2lhdGVcLXNiOwor55m957OWIDwgXChyZWZpbmVkXClcLXdoaXRlXC1zdWdhcjsKK+aTgeaItCA8IHRvXC1zdXBwb3J0XC1cKGFcLXBlcnNvblwpOwor5bit5Y235Lqe5rSyIDwgdG9cLXN3ZWVwXC10aHJvdWdoXC1hc2lhOwor6KGo6YGUIDwgdG9cLXZvaWNlXC1cKGFuXC1vcGluaW9uXCk7Civlub7lpKnkvoYgPCBmb3JcLXRoZVwtcGFzdFwtZmV3XC1kYXlzOwor5aCx5pmCIDwgZ2l2ZVwtdGhlXC1jb3JyZWN0XC10aW1lOwor6Zqo5ZKMIDwgYW1pYWJsZVwtXChkaXNwb3NpdGlvblwpOwor5L2c5qWt55Kw5aKDIDwgb3BlcmF0aW5nXC1lbnZpcm9ubWVudDsKK+mFjiA8IGRvdWJsZVwtZmVybWVudGVkXC13aW5lOwor5Ye95o6IIDwgY29ycmVzcG9uZGVuY2VcLWNvdXJzZTsKK+i/t+aIgCA8IHRvXC1iZVwtaW5mYXR1YXRlZFwtd2l0aDsKK+mZuOa1t+epuuS4iei7jSA8IGFybXlcLFwtbmF2eVwsXC1haXJcLWZvcmNlOwor5oqV5LqG56WoIDwgcGFzdFwtdGVuc2VcLW9mXC10b1wtdm90ZTsKK+iCr+WwvOi/qiA8IGtlbm5lZHlcLVwocHJvcGVyXC1uYW1lXCk7Civmi5fpmbcgPCBnZW9sb2dpY2FsXC1kZXByZXNzaW9uOwor5YWN55arIDwgaW1tdW5pdHlcLVwodG9cLWRpc2Vhc2VcKTsKK+WFrOeEtiA8IFwoZG9cLXNvbWV0aGluZ1wpXC1vcGVubHk7CivmmbrmhafnlKLmrIogPCBpbnRlbGxlY3R1YWxcLXByb3BlcnR5Owor6LC6IDwgdGhlXC1tb3V0aFwtb2ZcLWFcLXZhbGxleTsKK+WgheaMgSA8IHRvXC1jb250aW51ZVwtdXBob2xkaW5nOwor5Ye65beuIDwgYmVcLW9uXC1hXC1idXNpbmVzc1wtdHJpcDsKK+iguCA8IGF1bGFjb3Bob3JhXC1mZW1vcmFsaXM7CivmvLjpgLIgPCBwcm9ncmVzc1wtc3RlcFwtYnlcLXN0ZXA7CivonLogPCByZWZsZWN0aW9uXC1vZlwtcmFpbmJvdzsKK+acrOWcn+WMlui7n+S7tiA8IHNvZnR3YXJlXC1sb2NhbGl6YXRpb247CivomJggPCBhXC1raW5kXC1vZlwtd2lsZFwtZ2luZ2VyOwor6ZmQ5Yi2IDwgXChpbXBvc2VcKVwtcmVzdHJpY3Rpb25zOwor6JWaIDwgdGhlXC1jYWx5eFwtb2ZcLWFcLWZsb3dlcjsKK+S/neitt+WNgCA8IGNvbnNlcnZhdGlvblwtZGlzdHJpY3Q7CivokbkgPCBraW5kXC1vZlwtY2hyeXNhbnRoZW11bTsKK+iQuyA8IHNtYWxsXC1idWRkaGlzdFwtdGVtcGxlOwor5bm05YidIDwgYmVnaW5uaW5nXC1vZlwtdGhlXC15ZWFyOwor6IiaIDwgdG9cLXB1dFwtb3V0XC10aGVcLXRvbmd1ZTsKK+Wlp+W+t+izvSA8IHRoZVwtb2R5c3NleVwsXC1ieVwtaG9tZXI7Civpq5jntJrlrpjlk6EgPCBoaWdoXC1yYW5raW5nXC1vZmZpY2lhbDsKK+WNiuWknOS4ieabtCA8IGluXC10aGVcLWRlcHRoXC1vZlwtbmlnaHQ7CivnrYbpjIQgPCBwdXRcLWRvd25cLVwoaW5cLXdyaXRpbmdcKTsKK+aMieiEiCA8IGZlZWxcLVwodGFrZVwpXC10aGVcLXB1bHNlOwor57m0IDwgYVwta2luZFwtb2ZcLWZpc2hpbmdcLW5ldDsKK+ervCA8IGJhbWJvb1wtY292ZXJcLWZvclwtYm9hdDsKK+WPlua2iOemgeS7pCA8IHRvXC1saWZlXC1hXC1wcm9oaWJpdGlvbjsKK+emqCA8IHByYXlcLWZvclwtZ29vZFwtZm9ydHVuZTsKK+aLm+iBmCA8IHRha2VcLWpvYlwtYXBwbGljYXRpb25zOwor6LaK5Y2X6KqeIDwgdmlldG5hbWVzZVwtXChsYW5ndWFnZVwpOwor55mlIDwgb2JzdHJ1Y3Rpb25cLW9mXC1ib3dlbHM7Civnl48gPCBhXC1icnVpc2VcLW9yXC1jb250dXNpb247CivmjIHkuI3lkIzmlL/opovogIUgPCBcKHBvbGl0aWNhbFwpXC1kaXNzaWRlbnQ7CivlhYnlt54gPCBrd2FuZ2p1XC1cKHNvdXRoXC1rb3JlYVwpOwor5a+m6Zqb5oeJ55SoIDwgcHJhY3RpY2FsXC1hcHBsaWNhdGlvbjsKK+eSoSA8IGphZGVcLWxvb2tcLWFsaWtlXC1zdG9uZTsKK+W3peWVhiA8IGluZHVzdHJ5XC1hbmRcLWNvbW1lcmNlOwor5r6z5rSyIDwgYXVzdHJhbGlhXC1cKGNvbnRpbmVudFwpOwor55Sf55Si6IO95YqbIDwgbWFudWZhY3R1cmluZ1wtYWJpbGl0eTsKK+e4vee1semBuOiIiSA8IHByZXNpZGVudGlhbFwtZWxlY3Rpb247Civnmq7lhZIgPCBcKGRvdWdoXCxcLWV0Y1wuXCl3cmFwcGVyczsKK+a+giA8IGNsZWFyXC1hbmRcLXN0aWxsXC13YXRlcjsKK+eUmOiChSA8IGdhbnN1XC1wcm92aW5jZVwsXC1jaGluYTsKK+S4jeaTh+aJi+autSA8IGJ5XC1mYWlyXC1tZWFuc1wtb3JcLWZvdWw7Civmt5wgPCByb2FyXC1vZlwtZGFzaGluZ1wtd2F2ZXM7CivmsocgPCBmbG93aW5nXC1hbmRcLWVuZ3VsZmluZzsKK+WuiemWkiA8IHBlYWNlZnVsXC1hbmRcLWNhcmVmcmVlOwor6Imx5beoIDwgdmVyeVwtZGlmZmljdWx0XC1cKHRhc2tcKTsKK+igu+apqyA8IHJ1ZGVcLWFuZFwtdW5yZWFzb25hYmxlOwor57C95a2XIDwgdG9cLXNpZ25cLVwoYVwtc2lnbmF0dXJlXCk7Civmmo4gPCBzdW5cLWJlZ2lubmluZ1wtZGVjbGluZTsKK+WuiemBqSA8IHF1aWV0XC1hbmRcLWNvbWZvcnRhYmxlOwor5ZyL6Zqb5qiZ5rqWIDwgaW50ZXJudGlvbmFsXC1zdGFuZGFyZDsKK+mHkemZteWkp+WtuCA8IHVuaXZlcnNpdHlcLW9mXC1uYW5raW5nOwor55Ww6LOq57ay6LevIDwgaGV0ZXJvZ2VuZW91c1wtbmV0d29yazsKK+eZveaJi+i1t+WutiA8IGJ1aWxkXC11cFwtZnJvbVwtbm90aGluZzsKK+W1vCA8IHdpbmRpbmdcLW1vdW50YWluXC1wYXRoOwor6JGh6JCE54mZ6KqeIDwgcG9ydHVndWVzZVwtXChsYW5ndWFnZVwpOwor5ris6ImvIDwgdG9cLXN1cnZleVwtYW5kXC1tZWFzdXJlOwor6LOH5paZ5YKz6YCB5pyN5YuZIDwgZGF0YVwtZGVsaXZlcnlcLXNlcnZpY2U7Civnj63ou4ogPCByZWd1bGFyXC1idXNcLVwoc2VydmljZVwpOwor5Z+1IDwgaGFyZGVuZWRcLWRpcnRcLW9yXC1jbGF5Owor5Ze7IDwgdG9cLXNjcmVlblwuXC1sb3F1YWNpb3VzOwor5qGI55SxIDwgbWFpblwtcG9pbnRzXC1vZlwtYVwtY2FzZTsKK+iytuisqyA8IGJhbmlzaFwtZnJvbVwtdGhlXC1jb3VydDsKK+m7g+mtmiA8IHllbGxvd1wtY3JvYWtlclwtXChmaXNoXCk7CivouqvkuJYgPCBvbmUnJ3NcLWxpZmVcLWV4cGVyaWVuY2U7CivmirHmgaggPCBoYXZlXC1hXC1nbmF3aW5nXC1yZWdyZXQ7CivljJ8gPCBkaXZhblwtZm9yXC10d29cLXBlcnNvbnM7Civlib4gPCB0b1wtcGlja1wtdXBcLXdpdGhcLWtuaWZlOwor5Zub5bm05YmNIDwgZm91clwteWVhcnNcLXByZXZpb3VzbHk7Civoh6rlj6QgPCBcKHNpbmNlXClcLWFuY2llbnRcLXRpbWVzOwor5LWXIDwgdG9cLWNsZWFuXC10aGVcLXdpdGhlcmVkOwor5LWEIDwgdG9cLWJvaWxcLW9yXC1zdGV3XC13aGVhdDsKK+SzuSA8IGFcLWtpbmRcLWRvdmVcLWxpa2VcLWJpcmQ7Civks50gPCBhXC1raW5kXC1vZlwtc21hbGxcLWJpcmRzOwor5LGfIDwgYVwta2luZFwtb2ZcLXNpbHZlclwtZmlzaDsKK+S7i+izquioquWVj+aOp+WItiA8IG1lZGl1bVwtYWNjZXNzXC1jb250cm9sOwor5K+vIDwgaGFuZ1wtZG93blwtb2ZcLXRoZVwtaGFpcjsKK+SvrSA8IG9mXC1uaWNlXC1hbmRcLWdvb2RcLWhhaXI7CivkroQgPCBhblwtb25lXC15ZWFyXC1vbGRcLWhvcnNlOwor56yG5paXIDwgcm91bmRcLWJvdHRvbWVkXC1iYXNrZXQ7CivkuIDoh4LkuYvlipsgPCBcKGxlbmRcKVwtYVwtaGVscGluZ1wtaGFuZDsKK+SqpSA8IHNoYWxsb3RzXC1vclwtc2NhbGxpb25zOwor5KmpIDwgYVwtbWVhc3VyZVwtb2ZcLWNhcGFjaXR5Owor5Ka9IDwgYW5cLWVhc3RcLWFuZFwtd2VzdFwtd2FsbDsKK+ijvemAoOWVhiA8IG1hbnVmYWN0dXJpbmdcLWNvbXBhbnk7CivkppogPCB3aWRlXC1vcGVuXC1vZlwtdGhlXC1kb29yOwor5KaMIDwgdGhlXC1kb29yXC1pc1wtd2lkZVwtb3BlbjsKK+S6jOiZnyA8IDJcLW5kXC1kYXlcLW9mXC10aGVcLW1vbnRoOwor5KWIIDwgdGhlXC1zeW1ib2xcLWZvclwtY29iYWx0Owor5LiN5YCr5LiN6aGeIDwgbmVpdGhlclwtZmlzaFwtbm9yXC1mb3dsOwor5KSXIDwgdGFzdGVcLW9mXC1zdHJvbmdcLWRyaW5rOwor5KKpIDwgdG9cLWZvcmJpZFwtdG9cLXByb2hpYml0Owor5KG2IDwgdmVoaWNsZXNcLWFuZFwtZ2FybWVudHM7CivknpogPCB0b1wtaGFuZ1wtb25cLWFcLWJpZ1wtdHJlZTsKK+SdliA8IHJlcHRpbGVzXC13aXRob3V0XC1mZWV0Owor5JuxIDwgdG9cLXRhbGtcLXVucmVtaXR0aW5nbHk7Civkm4ogPCBjaGVlcmZ1bFwtYWxsXC10aGVcLXRpbWU7Civkm4MgPCB1c2VkXC1pblwtcGVyc29uJydzXC1uYW1lOwor5JiQIDwgdGhlXC1ibGVlZFwtYXRcLXRoZVwtbm9zZTsKK+SXiSA8IGFcLXNtYWxsXC1zb2xpdGFyeVwtd2FzcDsKK+WfuuacrOWOn+eQhiA8IGZ1bmRhbWVudGFsXC1wcmluY2lwbGU7CivklpQgPCBhXC1raW5kXC1vZlwtd2hpdGVcLXRpZ2VyOwor5JaNIDwgdG9cLWFjdFwtd2l0aFwtcmV2ZXJlbmNlOwor5JS1IDwgZnJhZ3JhbnRcLXRob3JvdWdod29ydDsKK+iyoee2kyA8IGZpbmFuY2VcLWFuZFwtZWNvbm9taWNzOwor5JSKIDwgZGVuc2VcLWdyb3d0aFwtb2ZcLWdyYXNzOwor5JOSIDwgc2NpcnB1c1wtY3lwZXJpbnVzXC12YXI7CivmkqvppIrmiJDkurogPCB0b1wtYnJpbmdcLXVwXC1cKGFcLWNoaWxkXCk7CivkkqYgPCBncmFzc1wtZmxvYXRzXC1vblwtd2F0ZXI7CivkkoQgPCBmdWxseVwtbGFkZW5cLW9mXC1hXC1ib2F0Owor5JGdIDwgYVwtc21hbGxcLWN1cFwtd2l0aFwtZWFyczsKK+SPpCA8IHRvcFwtb2ZcLXRoZVwtaHVtYW5cLWhlYWQ7CivkuLvoqp4gPCBcKGdyYW1tYXRpY2FsXClcLXN1YmplY3Q7CivkjrYgPCBvZmZlcmluZ1wtYmxvb2RcLXRvXC1nb2Q7CivpgJrkv6HmnI3li5kgPCBjb21tdW5pY2F0aW9uXC1zZXJ2aWNlOwor5I6aIDwgdGhlXC1lbmRcLW9mXC1iaXJkXC13aW5nczsKK+SOliA8IHNvYXJpbmdcLXVwXC1pblwtdGhlXC1za3k7CivkjKcgPCBhXC1raW5kXC1vZlwtc2lsa1wtZmFicmljOwor5IyfIDwgdG9cLXdlYXZlXC1zaWxrXC1yaWJib25zOwor5ZiW5ZiWIDwgdG9cLWNsaWNrXC1vbmUnJ3NcLXRvbmd1ZTsKK+SLgiA8IGRyZXNzZXNcLWZvclwtdGhlXC1icmlkZTsKK+SIpyA8IHNraW5cLW9mXC1iYW1ib29cLXNob290czsKK+SIniA8IGFuY2llbnRcLW5hbWVcLW9mXC1pbmRpYTsKK+SHviA8IGFcLWZsdXRlXC13aXRoXC0yM1wtdHViZXM7Civkh7AgPCBhXC1iYW1ib29cLWJpbmRlZFwtdG9yY2g7Civkh6EgPCB0aGVcLXNodXR0bGVcLW9mXC1hXC1sb29tOwor5IagIDwgYVwtZ292ZXJubWVudFwtb2ZmaWNpYWw7CivkhpsgPCBzb21ldGhpbmdcLWluXC10aGVcLWNhdmU7CivpvLvnpZYgPCB0aGVcLWVhcmxpZXN0XC1hbmNlc3RvcjsKK+SFlyA8IGZvdXJcLWJ1bmRsZVwtb2ZcLWdyYWluczsKK+WPjemdqeWRvSA8IGNvdW50ZXJcLXJldm9sdXRpb25hcnk7Civkga0gPCB0b1wtZ2l2ZVwtYW5cLWFuZ3J5XC1sb29rOwor5IGaIDwgYVwta2luZFwtb2ZcLWV5ZVwtZGlzZWFzZTsKK+SAvSA8IHRvXC1sb29rXC1hdFwtZWFjaFwtb3RoZXI7CivkgKAgPCBhXC1jaGluZXNlXC1mYW1pbHlcLW5hbWU7CivkgJMgPCB0b1wtdHVyblwtb25lJydzXC1leWVzXC10bzsKK+O/tCA8IHdpZGVcLXBpZWNlXC1vZlwtbGVhdGhlcjsKK+O/qyA8IHRvXC1zcGxpdFwtdGFuZ2xlZFwtaGVtcDsKK+O/jyA8IHBhcmFseXNpc1wtb2ZcLXRoZVwtYm9keTsKK+O+viA8IGRpc2Vhc2VcLW9mXC10aGVcLXRocm9hdDsKK+O8siA8IHNvdW5kXC1vZlwtYnJva2VuXC10aWxlczsKK+aIgOaEmyA8IHRvXC1oYXZlXC1hXC1sb3ZlXC1hZmZhaXI7CivjvJAgPCBhXC1raW5kXC1vZlwtd2hpdGVcLW1lbG9uOwor47m2IDwgYVwta2luZFwtb2ZcLXdpbGRcLWFuaW1hbDsKK+O5piA8IGRvZ1wtd2l0aFwtYVwtc2hvcnRcLXRhaWw7CivjuZQgPCBjYXR0bGVcLXdpdGhcLWxvbmdcLWJhY2s7CivmmrTot4wgPCBzdGVlcFwtZmFsbFwtXChpblwtcHJpY2VcKTsKK+O1qCA8IGFcLWRyeVwtbGFuZFwtaW5cLWFcLXJpdmVyOwor47OIIDwgYVwtZ3JlYXRcLWZsb3dcLW9mXC13YXRlcjsKK+iuk+mWiyA8IHRvXC1nZXRcLW91dFwtb2ZcLXRoZVwtd2F5Owor47GfIDwgdG9cLXJpcFwtb3BlblwtdGhlXC1mbGVzaDsKK+OwhCA8IGFcLXNtYWxsXC1jaGVzdG51dFwtdHJlZTsKK+OulyA8IHRoZVwtaGFuZGxlXC1vZlwtYVwtc3BlYXI7CivjrY0gPCBjYXBpdGFsXC1mb3JtXC1vZlwtc2V2ZW47CivjrKAgPCB0b1wtZXhwb3NlXC10b1wtc3VubGlnaHQ7CivmqpTmoYjliIbphY3ljYAgPCBmaWxlXC1hbGxvY2F0aW9uXC10YWJsZTsKK+OpnyA8IHRvXC1zZXdcLXNvbWVcLW9ybmFtZW50czsKK+OojCA8IHRvXC1taWxrXC1hXC1jb3dcLW9yXC1nb2F0Owor5bCx5L6/IDwgYXRcLVwoeW91clwpXC1jb252ZW5pZW5jZTsKK+WPr+i6qyA8IHRvXC1maXRcLXdlbGxcLVwoY2xvdGhlc1wpOwor56eR56CUIDwgXChzY2llbnRpZmljXClcLXJlc2VhcmNoOwor46CLIDwgYVwtbG9mdHlcLW1vdW50YWluXC1wZWFrOwor45+eIDwgcHJlY2lwaXRvdXNcLWFuZFwtbG9mdHk7Civjn50gPCB0b1wtYmFua1wtdXBcLXdpdGhcLWVhcnRoOwor45+cIDwgc2hhcGVcLW9mXC10aGVcLW1vdW50YWluOwor45+WIDwgYVwtZGlhbGVjdFwtb2ZcLW1pbm9yaXR5Owor45+OIDwgYVwtbG9uZ1wtbW91bnRhaW5cLXJpZGdlOwor456BIDwgY2FuXC1ub3RcLXdhbGtcLW5vcm1hbGx5Owor45iwIDwgbmFtZVwtb2ZcLWFcLW9sZFwtY291bnRyeTsKK+OYoSA8IGFcLXBlblwtZm9yXC13aWxkXC1iZWFzdHM7CivjmJYgPCB0b1wtbWFrZVwtYVwtZGlzdHVyYmFuY2U7CivogIHlhanlj6MgPCBhblwtb2xkXC1tYXJyaWVkXC1jb3VwbGU7Civjl4EgPCB0aGVcLXJvb2ZcLW9mXC10aGVcLW1vdXRoOwor45aXIDwgaGlnaFwtcmlkZ2VzXC1vZlwtY2xpZmZzOwor5Zyw5bCN56m65bCO5b2IIDwgZ3JvdW5kXC10b1wtYWlyXC1taXNzaWxlOwor45WiIDwgcHJvZm91bmRcLXNpZ25pZmljYW5jZTsKK+WPr+isgiA8IGl0XC1jb3VsZFwtZXZlblwtYmVcLXNhaWQ7CivorpPot68gPCB0b1wtbWFrZVwtd2F5XC1cKGZvclwtc3RoXCk7CivjkoYgPCB0b1wtZ2F0aGVyXC10aGVcLWhhcnZlc3Q7CivmiLbkuLsgPCBoZWFkXC1vZlwtdGhlXC1ob3VzZWhvbGQ7CivpoJLooYwgPCBpc3N1ZVwtZm9yXC1lbmZvcmNlbWVudDsKK+Wci+eHn+S8gealrSA8IG5hdGlvbmFsaXplZFwtaW5kdXN0cnk7CivkuozljYHlhavomZ8gPCAyOHRoXC1kYXlcLW9mXC10aGVcLW1vbnRoOwor5rmW5Y2XIDwgaHVuYW5cLXByb3ZpbmNlXCxcLWNoaW5hOwor5pys5Zu65p6d5qauIDwgd2hlblwtdGhlXC1yb290XC1pc1wtZmlybTsKK+WCs+i8uOioreWCmSA8IHRyYW5zbWlzc2lvblwtZmFjaWxpdHk7CivppJjmlbggPCBcKG51bWVyaWNhbFwpXC1yZW1haW5kZXI7CivkuI3nrqEgPCBub1wtbWF0dGVyXC1cKHdoYXRcLFwtaG93XCk7CivniYjpnaIgPCBzcGFjZVwtb2ZcLWFcLXdob2xlXC1wYWdlOwor5LiN5piv5ZGz5YWSIDwgbm90XC10aGVcLXJpZ2h0XC1mbGF2b3VyOwor5LiN56aBIDwgY2FuJyd0XC1oZWxwXC1cKGRvaW5nXC1zdGg7CivpmqjmqZ/mmYLplpMgPCByYW5kb21cLXBlcmlvZFwtb2ZcLXRpbWU7CivmmI/ov7cgPCB0b1wtbG9zZVwtY29uc2Npb3VzbmVzczsKK+WQkOe1riA8IHRoZVwtb3BlbmluZ1wtb2ZcLWFcLWJvbGw7Civpi6rlubMgPCBzcHJlYWRcLW91dFwtXChtYXRlcmlhbFwpOwor5YKz6Ly46Led6ZuiIDwgdHJhbnNtaXNzaW9uXC1kaXN0YW5jZTsKK+aLnOaKiuWtkCA8IGJlY29tZVwtc3dvcm5cLWJyb3RoZXJzOwor5YyX5a+S5bi2IDwgdGhlXC1ub3J0aFwtZnJpZ2lkXC16b25lOwor5LiN55CGIDwgcmVmdXNlXC10b1wtYWNrbm93bGVkZ2U7Civororoh4kgPCBzdWRkZW5seVwtdHVyblwtaG9zdGlsZTsKK+WNsOW6puWwvOilv+S6nuiqniA8IGluZG9uZXNpYW5cLVwobGFuZ3VhZ2VcKTsKK+a1t+aWryA8IGhheWVzXC1cKG1pY3JvY29tcHV0ZXJcKTsKK+adseW+tyA8IFwoZm9ybWVyXClcLWVhc3RcLWdlcm1hbnk7CivmmpfnpIEgPCBzdWJtZXJnZWRcLXJlZWZcLVwocm9ja1wpOwor6LK35aW9IDwgdG9cLWluZ3JhdGlhdGVcLW9uZXNlbGY7Civlhavot6/ou40gPCB0aGVcLWVpZ2h0aFwtcm91dGVcLWFybXk7Civmmpfnlr4gPCB1bm1lbnRpb25hYmxlXC1kaXNlYXNlOwor6IGz5YuVIDwgdG9cLWNyZWF0ZVwtYVwtc2Vuc2F0aW9uOwor5Y+m6LW354iQ54G2IDwgdG9cLXN0YXJ0XC1mcm9tXC1zY3JhdGNoOwor6aaW6IWm5pyD6K2wIDwgbGVhZGVyc2hpcFwtY29uZmVyZW5jZTsKK+adv+WHsyA8IHdvb2RlblwtYmVuY2hcLW9yXC1zdG9vbDsKK+S4jeaahyA8IGhhdmVcLW5vXC10aW1lXC1cKGZvclwtc3RoOwor5oKy5oakIDwgZ3JpZWZcLWFuZFwtaW5kaWduYXRpb247CivkuI3kv6Hku7vmipXnpaggPCB2b3RlXC1vZlwtbm9cLWNvbmZpZGVuY2U7CivljZfljJfmpbUgPCBzb3V0aFwtYW5kXC1ub3J0aFwtcG9sZXM7CivlpoLlh7rkuIDovY0gPCBiZVwtcHJlY2lzZWx5XC10aGVcLXNhbWU7CivokaPkuovplbcgPCBjaGFpcm1hblwtb2ZcLXRoZVwtYm9hcmQ7CivmnKzkurrnmoTop4Dpu54gPCBcKG9uZScnc1wpXC1wZXJzb25hbFwtdmlldzsKK+eJueeUoiA8IHNwZWNpYWxcLWxvY2FsXC1wcm9kdWN0Owor6JWt5qKdIDwgXChlY29ub21pY1wpXC1kZXByZXNzaW9uOwor5LiN6KGM5LqGIDwgb25cLXRoZVwtcG9pbnRcLW9mXC1kZWF0aDsKK+efruadhuWTgeeoriA8IHNob3J0XC1zdGFsa2VkXC12YXJpZXR5Owor5q6v6JGsIDwgZnVuZXJhbFwtYW5kXC1pbnRlcm1lbnQ7Civlkb3ku6QgPCBcKGFuXClcLW9yZGVyXC1vclwtY29tbWFuZDsKK+a1geS6oSA8IHRvXC1cKGZvcmNlXC1pbnRvXClcLWV4aWxlOwor57We55uh6IWm5rGBIDwgdG9cLXdyYWNrXC1vbmUnJ3NcLWJyYWluczsKK+WFieejgeein+apnyA8IG1hZ25ldG9cLW9wdGljYWxcLWRyaXZlOwor5Y2h6KW/5bC8IDwgY2Fzc2luaVwtXChwcm9wZXJcLW5hbWVcKTsKK+WNkeaxoSA8IGRlc3BpY2FibGVcLWFuZFwtZmlsdGh5Owor5ZyL5pyJ5LyB5qWtIDwgbmF0aW9uYWxpemVkXC1idXNpbmVzczsKK+aatOWNkiA8IGRpZVwtb2ZcLXN1ZGRlblwtaWxsbmVzczsKK+mAvOimliA8IGxvb2tcLWF0XC1mcm9tXC1jbG9zZVwtdXA7Civml7rmnIggPCBidXN5XC1cKGJ1c2luZXNzXClcLW1vbnRoOwor5LuAIDwgZmlsZVwtb2ZcLXRlblwtc29sZGllcnM7CivosqwgPCBvbmUnJ3NcLXJlc3BvbnNpYmlsaXR5Owor54i1IDwgZmV1ZGFsXC10aXRsZVwtb3JcLXJhbms7CivllYogPCBleGNsYW1hdG9yeVwtcGFydGljbGU7CivmpZogPCBuYW1lXC1vZlwtZmV1ZGFsXC1zdGF0ZTsKK+aJmCA8IHRvXC1ob2xkXC11cFwtd2l0aFwtcGFsbTsKK+axsiA8IGRyYXdcLXdhdGVyXC1mcm9tXC13ZWxsOwor6a2FIDwga2luZFwtb2ZcLWZvcmVzdFwtZGVtb247CivkvIogPCB0aGlyZFwtcGVyc29uXC1wcm9ub3VuOwor6bi/IDwgc3BlY2llc1wtb2ZcLXdpbGRcLXN3YW47Civlp6UgPCBtYXRlcm5hbFwtZ3JhbmRtb3RoZXI7CivmjacgPCBob2xkXC11cFwtaW5cLXR3b1wtaGFuZHM7CivkuZkgPCBzZWNvbmRcLWhlYXZlbicnc1wtc3RlbTsKK+WQgSA8IGludGVyamVjdGlvblwtJydhbGFzXCEnJzsKK+WnqCA8IG1vdGhlclwvd2lmZScnc1wtc2lzdGVyOwor5LqpIDwgY2hpbmVzZVwtbGFuZFwtbWVhc3VyZTsKK+WDtSA8IHN0aWZmXC1hbmRcLW1vdGlvbmxlc3M7Civmi7EgPCBmb2xkXC1oYW5kc1wtb25cLWJyZWFzdDsKK+emviA8IGdyYWluXC1zdGlsbFwtb25cLXN0YWxrOwor5ZehIDwgc291bmRcLW9mXC1mbHlpbmdcLWJlZXM7CivnjKkgPCBzcGVjaWVzXC1vZlwtb3Jhbmd1dGFuOwor54ueIDwgZmVyb2Npb3VzXC1hcHBlYXJhbmNlOwor5ouIIDwgcGlja1wtdXBcLXdpdGhcLWZpbmdlcnM7CivpmZsgPCBzdGVwc1wtbGVhZGluZ1wtdGhyb25lOwor6bivIDwgZmVtYWxlXC1tYW5kYXJpblwtZHVjazsKK+WNryA8IHRoXC1vZlwtZWFydGhcLWJyYW5jaGVzOwor54agIDwgYnJpZ2h0XC1hbmRcLXNwYXJrbGluZzsKK+mYgiA8IGJsb2NrZWRcLW9yXC1zZXBhcmF0ZWQ7Civmt4UgPCB3YXRlclwtdXNlZFwtd2FzaFwtcmljZTsKK+S9miA8IGluZHVsZ2VcLWluXC1wbGVhc3VyZXM7CivovpogPCBydW1ibGluZ1wtb2ZcLXZlaGljbGVzOwor5be9IDwgdGhcLW9mXC10aGVcLThcLXRyaWdyYW1zOwor6KiHIDwgdGhlXC1zb3VuZFwtb2ZcLWFcLWNyYXNoOwor54u6IDwgdGhlXC1zbmFybGluZ1wtb2ZcLWRvZ3M7CivmtZQgPCBzdGVlcFwtYmFua1wtYnlcLXN0cmVhbTsKK+iTiiA8IGx1eHVyaWFudFwtdmVnZXRhdGlvbjsKK+iToCA8IGdyYWNpbGFyaWFcLXZlcnJ1Y29zYTsKK+iPgCA8IGx1eHVyaWFuY2VcLW9mXC1ncm93dGg7Civog5cgPCBwdXN0dWxlc1wtb2ZcLWFueVwta2luZDsKK+migyA8IGZseVwtZG93blwtb3JcLWRvd253YXJkOwor5Z6GIDwgYmxhY2tcLWNsb2RzXC1vZlwtZWFydGg7CivmqJcgPCBhaWxhbnRodXNcLWdsYW5kdWxvc2E7CivomqcgPCBhXC1yZWRcLXNwb3R0ZWRcLWxpemFyZDsKK+e8tiA8IGVhcnRoZW5cLWNyb2NrXC1vclwtamFyOwor6LGzIDwgYVwtemhvdVwtZHluYXN0eVwtc3RhdGU7CivovbogPCBzbWFsbFwtbGlnaHRcLWNhcnJpYWdlOwor6YCvIDwgbGVhdmVcLXdpdGhvdXRcLXJlYXNvbjsKK+WIl+i7iiA8IHRyYWluXC1cKHJhaWx3YXlcLXRlcm1cKTsKK+WPi+WlvSA8IGZyaWVuZGx5XC1cKHJlbGF0aW9uc1wpOwor5quD6YKKIDwgdG9cLWxpZVwtb25cLW9uZScnc1wtc2lkZTsKK+WItuijgSA8IFwoZWNvbm9taWNcKVwtc2FuY3Rpb25zOwor56S+5LqkIDwgXChzb2NpYWxcKVwtaW50ZXJhY3Rpb247Civmk43ooYwgPCBcKHN0dWRlbnQnJ3NcKVwtYmVoYXZpb3I7CivlhYnno4Hnop8gPCBtYWduZXRvXC1vcHRpY2FsXC1kaXNrOwor57eo57WEIDwgb3JnYW5pemVcLWludG9cLWdyb3VwczsKK+imqui/kSA8IGdldFwtY2xvc2VcLXRvXC1zb21lb25lOwor5Y2a6Ka95pyDIDwgXChpbnRlcm5hdGlvbmFsXClcLWZhaXI7CivlpJrnqK7oqp7oqIDmlK/mjIEgPCBtdWx0aWxpbmd1YWxcLXN1cHBvcnQ7CivntZDoq5YgPCBcKHJlYWNoXC1hXClcLWNvbmNsdXNpb247Civpl6Hov7AgPCBleHBvdW5kXC1cKGFcLXBvc2l0aW9uXCk7Civntq3lkL7niL7kurogPCB1aWdodXJcLXBlcnNvblx8cGVvcGxlOwor6ZaL6Zmk5a2457GNIDwgdG9cLWV4cGVsXC1mcm9tXC1zY2hvb2w7Civlv4Plr5IgPCBiZVwtdmVyeVwtZGlzYXBwb2ludGVkOwor57WE6KOdIDwgYXNzZW1ibGVcLWFuZFwtaW5zdGFsbDsKK+iqk+atuyA8IHRvXC1wbGVkZ2VcLW9uZScnc1wtbGlmZTsKK+S4gOiIrOaApyA8IFwoaW5cKVwtZ2VuZXJhbFwtXCh0ZXJtc1wpOwor5Z+O6YSJIDwgY2l0eVwtYW5kXC1jb3VudHJ5c2lkZTsKK+WNlOWumiA8IFwocmVhY2hcLWFuXClcLWFncmVlbWVudDsKK+mAi+mAg+iXqiA8IHJlZnVnZVwtZm9yXC1mdWdpdGl2ZXM7CivpppbluK3ku6PooaggPCBjaGllZlwtcmVwcmVzZW50YXRpdmU7CivmsLTln58gPCBcKHRlcnJpdG9yaWFsXClcLXdhdGVyczsKK+WLu+aVtCA8IG5lYXRcLWFuZFwtd2VsbFwtc3BhY2VkOwor55m955y854+gIDwgdGhlXC13aGl0ZVwtb2ZcLXRoZVwtZXllOwor54mp55CG57WQ5qeLIDwgcGh5c2ljYWxcLWNvbXBvc2l0aW9uOwor5YWn6ZajIDwgXChnb3Zlcm5tZW50XClcLWNhYmluZXQ7Civlu6DniYwgPCBicmFuZFwtXChvZlwtYVwtcHJvZHVjdFwpOwor5aW25aW2IDwgcGF0ZXJuYWxcLWdyYW5kbW90aGVyOwor57eo5qyhIDwgb3JkZXJcLW9mXC1hcnJhbmdlbWVudDsKK+Wci+acg+itsOmVtyA8IHNwZWFrZXJcLW9mXC10aGVcLWhvdXNlOwor5oeJ55So5bmz5Y+wIDwgYXBwbGljYXRpb25cLXBsYXRmb3JtOwor5pWZ5o6IIDwgdW5pdmVyc2l0eVwtcHJvZmVzc29yOwor5Yui5b+FIDwgaXNcLWJvdW5kXC10b1wtXChoYXBwZW5cKTsKK+WiqOaxgSA8IHByZXBhcmVkXC1jaGluZXNlXC1pbms7CivlpKflsIcgPCBhXC1nZW5lcmFsXC1vclwtYWRtaXJhbDsKK+awo+S6uiA8IHRvXC1nZXRcLXNvbWVvbmVcLWFuZ3J5Owor5YyF5aC0IDwgYm9va1wtYVwtd2hvbGVcLXRoZWF0cmU7Civlha3omZ8gPCA2dGhcLWRheVwtb2ZcLXRoZVwtbW9udGg7CivljIjniZnliKnoqp4gPCBodW5nYXJpYW5cLVwobGFuZ3VhZ2VcKTsKK+ipnuW9mSA8IFwobGlzdFwtb2ZcKVwtdm9jYWJ1bGFyeTsKK+i7n+mrlOmFjemAgeiAhSA8IHNvZnR3YXJlXC1kaXN0cmlidXRvcjsKK+S4jeS/oeS7u+ahiCA8IG5vXC1jb25maWRlbmNlXC1tb3Rpb247CivpvZ4gPCB0b1wtZGlzcGxheVwtdGhlXC10ZWV0aDsKK+m8iCA8IGFcLWZyZXNoXC13YXRlclwtdHVydGxlOwor6byCIDwgYVwta2luZFwtb2ZcLXNlYVwtdHVydGxlOwor5o2V6J+y6JGJIDwgaW5zZWN0XC1jYXRjaGluZ1wtbGVhZjsKK+m4hyA8IGtpbmRcLW9mXC1iaXJkXC1vZlwtcHJleTsKK+aUneW9sSA8IHRvXC10YWtlXC1hXC1waG90b2dyYXBoOwor6biCIDwgYVwta2luZFwtb2ZcLXdhdGVyXC1iaXJkOwor6berIDwgdHVycXVvaXNlXC1raW5nZmlzaGVyOwor6beBIDwgZmlzaGhhd2tcLWJvd1wtb3JcLXByb3c7CivmlLnlloTpl5zkv4IgPCB0b1wtaW1wcm92ZVwtcmVsYXRpb25zOwor6L6v55m9IDwgb2ZmZXJcLWFuXC1leHBsYW5hdGlvbjsKK+mwnCA8IGJpZ1wtbW91dGhlZFwtZmxvdW5kZXI7Civpq7ogPCB0aGVcLWhhaXJcLWRpc2hldmVsbGVkOwor5o6h6KiqIDwgY292ZXJcLVwoYVwtbmV3c1wtc3RvcnlcKTsKK+mqoyA8IGhvcnNlXC13aXRob3V0XC1zYWRkbGU7CivlgZzngavljZTorbAgPCBjZWFzZVwtZmlyZVwtYWdyZWVtZW50Owor6aS9IDwgbWFrZVwtcHJlc2VudFwtb2ZcLWZvb2Q7CivlhbXnq5kgPCBhcm15XC1zZXJ2aWNlXC1zdGF0aW9uOwor6Z+xIDwgd2lsZFwtb25pb25zXC1vclwtbGVla3M7Civou43osrsgPCBtaWxpdGFyeVwtZXhwZW5kaXR1cmU7CivkuozljYHkuozomZ8gPCAyMlwtbmRcLWRheVwtb2ZcLWFcLW1vbnRoOwor6ZyDIDwgbG9uZ1wtY29udGludWVkXC1yYWluczsKK+aTmuaCiSA8IGFjY29yZGluZ1wtdG9cLXJlcG9ydHM7CivliY3lubQgPCB0aGVcLXllYXJcLWJlZm9yZVwtbGFzdDsKK+mXjSA8IHRvd2VyXC1vdmVyXC1jaXR5XC1nYXRlOwor6KOc6ImyIDwgY29tcGxlbWVudGFyeVwtY29sb3VyOwor5pS75YuiIDwgXChtaWxpdGFyeVwpXC1vZmZlbnNpdmU7CivnorrmnInlhbbkuosgPCBcKGNvbmZpcm1cLXRvXC1iZVwpXC10cnVlOwor5aSn5Z6L5LyB5qWtIDwgbGFyZ2VcLXNjYWxlXC1pbmR1c3RyeTsKK+WIhuaTlCA8IHNoYXJlXC1yZXNwb25zaWJpbGl0eTsKK+mNsSA8IHRoaW5cLXBsYXRlc1wtb2ZcLW1ldGFsOwor5L2/5b6S6KGM5YKzIDwgYWN0c1wtb2ZcLXRoZVwtYXBvc3RsZXM7CivpibYgPCBzYWNyaWZpY2lhbFwtY2F1bGRyb247CivplovnmbwgPCBleHBsb2l0XC1cKGFcLXJlc291cmNlXCk7Civmrbfku6MgPCBzdWNjZXNzaXZlXC1keW5hc3RpZXM7CivphrAgPCBiaXR0ZXJcLXRhc3RlXC1pblwtd2luZTsKK+i/keaXpSA8IGluXC10aGVcLXBhc3RcLWZld1wtZGF5czsKK+WbnuioqiA8IFwocGF5XC1hXClcLXJldHVyblwtdmlzaXQ7Civlv4XkuI3lj6/lsJEgPCBhYnNvbHV0ZWx5XC1uZWNlc3Nhcnk7Civnl4XoroogPCBwYXRob2xvZ2ljYWxcLWNoYW5nZXM7Civlh4zmmaggPCBlYXJseVwtaW5cLXRoZVwtbW9ybmluZzsKK+i2giA8IHRvXC10YWtlXC1hZHZhbnRhZ2VcLW9mOwor5LiN6ZuF6KeAIDwgb2ZmZW5zaXZlXC10b1wtdGhlXC1leWU7CivmjqXmlLblmajpnYjmlY/luqYgPCByZWNlaXZlclwtc2Vuc2l0aXZpdHk7CivkuI3lnKjoqbHkuIsgPCBiZVwtbm90aGluZ1wtZGlmZmljdWx0Owor6Zmz6L+w5Y+lIDwgZGVjbGFyYXRpdmVcLXNlbnRlbmNlOwor6KWsIDwgbG93ZXJcLXBhcnRcLW9mXC1hXC1yb2JlOwor6YCZ5YCL5pyIIDwgdGhpc1wtXChjdXJyZW50XClcLW1vbnRoOwor6KKzIDwgc3ByZWFkXC1vbmUnJ3NcLWNsb3RoZXM7CivmrbfkvobmnIDkvY7pu54gPCBhbGxcLXRpbWVcLWxvd1wtXChwb2ludFwpOwor5YCN6aC75ZmoIDwgZnJlcXVlbmN5XC1tdWx0aXBsaWVyOwor5qez54uAIDwgY2VydGlmaWNhdGVcLW9mXC1tZXJpdDsKK+icmyA8IGh5ZHJvcGhpbHVzXC1jb2duYXR1czsKK+ibmiA8IGN5cnRveGlwaHVzXC1yaXRzZW1hZTsKK+awkeaXj+S4u+e+qeaDhee3kiA8IG5hdGlvbmFsaXN0XC1mZWVsaW5nczsKK+mgmOWwjuasiiA8IGxlYWRlcnNoaXBcLWF1dGhvcml0eTsKK+iWoiA8IHdvb2R5XC1jbGltYmluZ1wtcGxhbnQ7CivlgJrph40gPCB0b1wtcmVseVwtaGVhdmlseVwtdXBvbjsKK+e0gOW/teaXpSA8IGRheVwtb2ZcLWNvbW1lbW9yYXRpb247CivojIAgPCBvdmVyZ3Jvd25cLXdpdGhcLWdyYXNzOwor6IqEIDwgbWV0YXBsZXhpc1wtc3RhdW50b25pOwor5oeJ55So6Luf5Lu2IDwgYXBwbGljYXRpb25cLXNvZnR3YXJlOwor6Ii6IDwgcGxhY2VcLW5hbWVcLWluXC10YWl3YW47CivohKEgPCBzdHJpcHNcLW9mXC1kcmllZFwtbWVhdDsKK+aKiumFkiA8IHJhaXNlXC1vbmUnJ3NcLXdpbmVcLWN1cDsKK+i7jeeUqCA8IFwoZm9yXClcLW1pbGl0YXJ5XC1cKHVzZVwpOwor5Lqk5o+b5oqA6KGTIDwgc3dpdGNoaW5nXC10ZWNobm9sb2d5Owor57Gz5b6354i+5Lyv6KOhIDwgbWlkZGxlYnVyeVwtXChjb2xsZWdlXCk7Civkv53ph40gPCB0YWtlXC1jYXJlXC1vZlwtb25lc2VsZjsKK+WgseS7hyA8IHRvXC1yZXZlbmdlXC1cKG9uZXNlbGZcKTsKK+aKhOi6qyA8IHRvXC1zZWFyY2hcLVwoYVwtcGVyc29uXCk7CivnsoMgPCBlbXB0eVwtaHVza3NcLW9mXC1ncmFpbjsKK+eoi+W8j+iqnuiogCA8IHByb2dyYW1taW5nXC1sYW5ndWFnZTsKK+eZveajiee0mSA8IHN0ZW5jaWxcLXRpc3N1ZVwtcGFwZXI7CivnqqMgPCB0b1wtcnVzaFwtb3V0XC1vZlwtYVwtZGVuOwor56mHIDwgcGFuaWN1bVwtZnJ1bWVudGFjZXVtOwor5qOJ6KWWIDwgY290dG9uXC1wYWRkZWRcLWphY2tldDsKK+ejkiA8IHRvXC1mYWxsXC1mcm9tXC1vclwtaW50bzsKK+WEmOaXqSA8IGFzXC1lYXJseVwtYXNcLXBvc3NpYmxlOwor55+RIDwgdGhlXC1wdXBpbFwtb2ZcLXRoZVwtZXllOwor552NIDwgdG9cLWxvb2tcLWF0XC1mZWFyZnVsbHk7Civln7nkv64gPCB0b1wtcmVwYWlyXC1lYXJ0aHdvcmtzOwor5bCK6YeNIDwgdG9cLXZhbHVlXC1cKHNvbWV0aGluZ1wpOwor55S9IDwgZHJhaW5cLWJldHdlZW5cLWZpZWxkczsKK+eUgyA8IGJyaWNrXC13YWxsXC1vZlwtYVwtd2VsbDsKK+eZvOihqOiBsuaYjiA8IHRvXC1pc3N1ZVwtYVwtc3RhdGVtZW50Owor55CWIDwgY2FydmVkXC1qYWRlXC13aW5lXC1jdXA7CivnjqYgPCBicm9rZW5cLXBpZWNlXC1vZlwtamFkZTsKK+eXheeBtiA8IGZvY3VzXC1cKG9mXC1pbmZlY3Rpb25cKTsKK+WFqem7nuWNgeS5neWIhiA8IDJcLVw6MVwtOVwtXCh0aW1lXC1vZlwtZGF5XCk7CivkvrXopbIgPCB0b1wtaW52YWRlXC1hbmRcLWF0dGFjazsKK+eAsyA8IHRvXC1hcnJpdmVcLVwob2ZcLXdhdGVyXCk7Civpm7vlrZDlt6Xmpa0gPCBlbGVjdHJvbmljc1wtaW5kdXN0cnk7CivmvqwgPCB0b1wtcmFpblwtY29udGludW91c2x5Owor57Ch5py0IDwgc2ltcGxlXC1hbmRcLXVuYWRvcm5lZDsKK+mngemBiyA8IHRyYW5zcG9ydFwtYnlcLWxpZ2h0ZXI7CivmjKrnqqnlhZIgPCB0b1wtbW92ZVwtXCh0b1wtYVwtaG91c2VcKTsKK+WPrOmWi+acg+itsCA8IHRvXC1jYWxsXC1hXC1jb25mZXJlbmNlOwor5rSkIDwgYVwtZm91bnRhaW5cLW9yXC1zcHJpbmc7CivkvovoqIAgPCBpbnRyb2R1Y3RvcnlcLXJlbWFya3M7Civlgpnmn6UgPCBmb3JcLWZ1dHVyZVwtcmVmZXJlbmNlOwor5qe+IDwgcGFzdGVcLXdhbGxcLXdpdGhcLWRpcnQ7CivlvrflnIvkurogPCBnZXJtYW5cLXBlcnNvblx8cGVvcGxlOwor5qOoIDwgdGFsbHlcLW9yXC13b29kZW5cLXBhc3M7CivmoawgPCBwZWFyXC1hbmRcLW90aGVyXC10cmVlczsKK+WuiemAuCA8IGVhc3lcLWFuZFwtY29tZm9ydGFibGU7CivmlbMgPCB0b1wtZ292ZXJuXC1mb3JjZWZ1bGx5Owor5pWBIDwgdG9cLXdlaWdoXC1pblwtdGhlXC1oYW5kOwor55eF5oi/IDwgd2FyZFwtXChvZlwtYVwtaG9zcGl0YWxcKTsKK+eZvuS6i+mAmiA8IGtub3dsZWRnZWFibGVcLXBlcnNvbjsKK+ihqOW9sCA8IGNpdGVcLVwoaW5cLWRpc3BhdGNoZXNcKTsKK+aQjiA8IHRvXC1ydWJcLXdpdGhcLXRoZVwtaGFuZDsKK+S4jeatu+W/gyA8IHVud2lsbGluZ1wtdG9cLWdpdmVcLXVwOwor56Sm5rOJ5rC0IDwgbWluZXJhbFwtc3ByaW5nXC13YXRlcjsKK+WQg+S4jeS4iyA8IG5vdFwtZmVlbFwtbGlrZVwtZWF0aW5nOwor5bmA5qqi6amX5bqP5YiXIDwgZnJhbWVcLWNoZWNrXC1zZXF1ZW5jZTsKK+iQrOe2ree2siA8IHdvcmxkXC13aWRlXC13ZWJcLVwod3d3XCk7CivllYbmpa3mh4nnlKggPCBidXNpbmVzc1wtYXBwbGljYXRpb247Civmr4/ms4HmhIjkuIsgPCBzdGVhZGlseVwtZGV0ZXJpb3JhdGU7Civmi5zmnIMgPCBwYXlcLWFuXC1vZmZpY2lhbFwtY2FsbDsKK+WwiOeoiyA8IHNwZWNpYWxcLXB1cnBvc2VcLXRyaXA7CivlqpLpq5ToqKrllY/mjqfliLYgPCBtZWRpYVwtYWNjZXNzXC1jb250cm9sOwor5YG95bmjIDwgY291bnRlcmZlaXRcLWN1cnJlbmN5Owor6LuN5LqL5qmf5qeLIDwgbWlsaXRhcnlcLWluc3RpdHV0aW9uOwor5bWPIDwgYVwtbW91bnRhaW5cLWluXC1zaGVueGk7CivmiY3nlaUgPCBhYmlsaXR5XC1hbmRcLXNhZ2FjaXR5Owor5a2tIDwgdG9cLWNhcnJ5XC1vblwtdGhlXC1iYWNrOwor5Zub5bm05Yi255qE5aSn5a24IDwgZm91clwteWVhclwtdW5pdmVyc2l0eTsKK+WxpOasoSA8IGFycmFuZ2VtZW50XC1vZlwtaWRlYXM7CivliKTomZXmrbvliJEgPCB0b1wtc2VudGFuY2VcLXRvXC1kZWF0aDsKK+WriyA8IHNsZW5kZXJcLWFuZFwtZGVsaWNhdGU7CivlqaMgPCBtYXJyaWFnZVwtY29ubmVjdGlvbnM7CivnrYbms5UgPCB0ZWNobmlxdWVcLW9mXC13cml0aW5nOwor5a+m6auU5bGkIDwgcGh5c2ljYWxcLWxheWVyXC1cKG9zaVwpOwor5ZusIDwgdG9cLXJldHVyblwtdG9cLW9yXC1mcm9tOwor5Lqk6YCaIDwgXChhdXRvbW9iaWxlXClcLXRyYWZmaWM7Civnj77pmo7mrrUgPCBhdFwtdGhlXC1wcmVzZW50XC1zdGFnZTsKK+iyqOW5o+iytuWAvCA8IGN1cnJlbmN5XC1kZXZhbHVhdGlvbjsKK+WPm+Wci+e9qiA8IHRoZVwtY3JpbWVcLW9mXC10cmVhc29uOwor5oyJ54Wn5rOV5b6LIDwgYWNjb3JkaW5nXC10b1wtdGhlXC1sYXc7CivlioIgPCBjaGlzZWxcLWZvclwtZW5ncmF2aW5nOwor5ZWf56iLIDwgc2V0XC1vdXRcLW9uXC1hXC1qb3VybmV5Owor5LiN5a6M5YWo5Lit56uLIDwgaW1wZXJmZWN0XC1uZXV0cmFsaXR5Owor55Wr5aCxIDwgcGljdG9yaWFsXC1cKG1hZ2F6aW5lXCk7CivljJflm57mrbjnt5ogPCB0aGVcLXRyb3BpY1wtb2ZcLWNhbmNlcjsKK+WFi+mHjOaWr+aJmOW8lyA8IFwod2FycmVuXClcLWNocmlzdG9waGVyOwor6Zu75a2Q5YWD5Lu2IDwgZWxlY3Ryb25pY1wtY29tcG9uZW50Owor57aT5r+f6KGw6YCAIDwgXChlY29ub21pY1wpXC1yZWNlc3Npb247CivktpkgPCBzd2VsbGluZ1wtb2ZcLXRoZVwtZ3VtczsKK+S2iiA8IHRvXC1ibGVlZFwtYXRcLXRoZVwtbm9zZTsKK+WFieS6jOalteeuoSA8IGxpZ2h0XC1lbWl0dGluZ1wtZGlvZGU7CivktJ8gPCBhblwtb25lXC15ZWFyXC1vbGRcLWRlZXI7Civks7MgPCBhXC1raW5kXC1vZlwtc21hbGxcLWJpcmQ7Civks5EgPCBhXC1waGVhc2FudFwtbGlrZVwtYmlyZDsKK+SysSA8IGFcLWtpbmRcLW9mXC1ibGFja1wtYmlyZDsKK+SylSA8IHRoZVwteWFuZ3R6ZVwtcG9ycG9pc2U7CivksZAgPCBhXC1raW5kXC1vZlwtYmxhY2tcLWZpc2g7CivksYAgPCBhXC1raW5kXC1vZlwtc21hbGxcLWZpc2g7CivkvrXmk74gPCB0b1wtaW52YWRlXC1hbmRcLWhhcmFzczsKK+Wxj+W5lSA8IFwodHZcLW9yXC1tb3ZpZVwpXC1zY3JlZW47CivkrqEgPCBhXC1zdXBlcm5hdHVyYWxcLWhvcnNlOwor5K6CIDwgaG9yc2VcLXdpdGhcLWxvbmdcLWhhaXI7CivkrbcgPCBob3JzZVwtd2l0aFwtbG9uZ1wtbWFuZTsKK+SsqSA8IHRvXC1hYnN0YWluXC1mcm9tXC1tZWF0Owor5KyjIDwgYVwtc2FjcmlmaWNpYWxcLXZpY3RpbTsKK+SroCA8IHNob3J0XC1oYWlyXC1hbmRcLWJlYXJkOwor6Yym5qiZ6LO9IDwgY2hhbXBpb25zaGlwXC1jb250ZXN0Owor5Km9IDwgYVwtcXVpdmVyXC1vbmVcLWFcLWhvcnNlOwor5KmCIDwgdG9cLWNvbWVcLXRvXC10aGVcLWZyb250Owor55CD57ayIDwgbmV0XC1cKGZvclwtYmFsbFwtZ2FtZXNcKTsKK+SnlyA8IG1vdW50YWluc1wtY29sbGFwc2luZzsKK+SmpiA8IGFcLW11c2ljYWxcLWluc3RydW1lbnQ7CivkpaQgPCB0aGVcLW5lY2tcLW9mXC1hXC1wZXN0bGU7CivkpYQgPCB0b1wtcGxhc3Rlclwtd2l0aFwtZ29sZDsKK+SkuCA8IHNob3J0XC1zcGVhclwtb3JcLWxhbmNlOwor5LiN56mp5bmz6KGhIDwgdW5zdGFibGVcLWVxdWlsaWJyaXVtOwor5ryi5YyWIDwgY2hpbmVzZVwtbG9jYWxpemF0aW9uOwor5KCRIDwgYmV0d2VlblwtdGhlXC1idXR0b2NrczsKK+SgiCA8IGhhcmRcLXRvXC1tb3ZlXC1mb3J3YXJkOwor5J+pIDwgaGFyZFwtb2ZcLXdhbGtcLWZvcndhcmQ7CivknpkgPCB0b1wtd2Fsa1wtaW5cLWh1cnJpZWRseTsKK+SdkSA8IGFcLWxvY2FsXC1wcm9kdWNlZFwtcGlnOwor5JynIDwgdG9cLWluc3VsdFwtd2l0aFwtd29yZHM7CivknJMgPCBhXC1zbGlwXC1vZlwtdGhlXC10b25ndWU7Civkm4wgPCB0b1wtcHJvdm9rZVwtb3JcLWFyb3VzZTsKK+SZriA8IHN0cmlwXC1vZlwtdGhlXC1jbG90aGVzOwor5Ji+IDwgbGVnc1wtb2ZcLXRoZVwtdHJvdXNlcnM7Civkv6Hmga/os4fmupAgPCBpbmZvcm1hdGlvblwtcmVzb3VyY2U7CivklasgPCBhXC1vbmVcLWxlZ2dlZFwtbW9uc3RlcjsKK+SUiCA8IGx1c2hcLWdyb3d0aFwtb2ZcLWdyYXNzOwor5YWt5Y2B5LqU5q2yIDwgc2l4dHlcLWZpdmVcLXllYXJzXC1vbGQ7CivkkaAgPCBsb25nXC1hbmRcLW5hcnJvd1wtYm9hdDsKK+SQuCA8IHRoZVwtYmFja1wtb2ZcLXRoZVwta25lZTsKK+SPvyA8IHRoZVwtY2FsZlwtb2ZcLXRoZVwtbGVnczsKK+SPoSA8IHVuY29va2VkXC1vclwtcmF3XC1tZWF0Owor5IqzIDwgdG9cLWJyZWFrXC1pbnRvXC1waWVjZXM7CivkirIgPCB0b1wtaHVsbFwtcmljZVwtcm91Z2hseTsKK+SKgiA8IHBvb3JcLXF1YWxpdHlcLW9mXC1yaWNlOwor5bCN5bOZIDwgbXV0dWFsXC1jb25mcm9udGF0aW9uOwor5ImRIDwgYmxhY2tcLXNraW5uZWRcLWJhbWJvbzsKK+SIpiA8IGFcLWN1cnZlZFwtYmFtYm9vXC13aGlwOwor5IiRIDwgdG9vbHNcLXRvXC11bnJlZWxcLXNpbGs7CivkiIEgPCB0b29sc1wtdXNlZFwtb25cLWFcLWJvYXQ7Civkh5ggPCB0b29sXC10b1wtY29sbGVjdFwtcm9wZTsKK+SGoyA8IGFib2RlXC1vZlwtdGhlXC1lbXBlcm9yOwor5IaPIDwgYVwta2luZFwtb2ZcLXJpY2VcLXBsYW50Owor5IWuIDwgYVwtZnVsbFwtaGVhZFwtb2ZcLWdyYWluOwor5IWTIDwgY3VydmVkXC1waWVjZVwtb2ZcLXdvb2Q7CivkhY8gPCByaWNlXC1ib2lsZWRcLXRvXC1ncnVlbDsKK+SEryA8IHRlblwtaGFuZGxlXC1vZlwtZ3JhaW5zOwor576O6LuNIDwgdXNcLWFybXlcfGFybWVkXC1mb3JjZXM7CivkhIIgPCB0b1wtcHJheVwtYW5kXC10b1wtY3Vyc2U7Civkg7AgPCBicmlja1wtb3JcLXN0b25lXC1zdGVwczsKK+SCkiA8IHNob3J0XC10b1wtY3VycnlcLWZhdm9yOwor5IKCIDwgdG9cLWdhemVcLWF0XC1pblwtdGVycm9yOwor5IGsIDwgdG9cLWFjdFwtcHJldGVudGlvdXNseTsKK+SAtyA8IHRvXC1oYXZlXC1xdWlja1wtZ2xhbmNlOwor5ICyIDwgZGlzZWFzZXNcLWluXC10aGVcLWV5ZXM7CivkvY3mlrwgPCBiZVwtc2l0dWF0ZWRcLVwoaW5cLFwtYXRcKTsKK+O/uCA8IHRvXC1jYXN0XC1vZmZcLXRoZVwtc2tpbjsKK+O/niA8IGFuXC1vbGRcLW1hblwtb2ZcLWVpZ2h0eTsKK+O9pCA8IGFcLXNtYWxsXC1wbG90XC1vZlwtbGFuZDsKK+O9oiA8IHRvXC1wbG91Z2hcLXRoZVwtZmllbGRzOwor472VIDwgbmV3XC1icmFuY2hlc1wtZ3Jvd2luZzsKK+O9gyA8IGFcLWJpZ1wtcGllY2VcLW9mXC1icmljazsKK+O8oiA8IGJyaWNrc1wtYW5cLWVhdGhlblwtamFyOwor47yJIDwgZ3JlZW5cLWNvbG9yZWRcLW1lbG9uczsKK+O7riA8IGJyaWdodFwtYW5kXC1icmlsbGlhbnQ7Civjuq4gPCBmaW5lXC1zdG9uZVwtbGlrZVwtamFkZTsKK+O6giA8IGJpZ1wtYW5kXC1zdHJvbmdcLXNoZWVwOwor47mYIDwgc2hpbmJvbmVcLW9mXC1hXC1jYXR0bGU7CivjuKogPCBhblwtb3hcLXdhbGtpbmdcLXNsb3dseTsKK+iuiumguyA8IGZyZXF1ZW5jeVwtY29udmVyc2lvbjsKK+ertueIreWKmyA8IGNvbXBldGl0aXZlXC1zdHJlbmd0aDsKK+O3mSA8IHRvXC1mcnlcLWluXC1mYXRcLW9yXC1vaWw7CivjtpQgPCBzd2lmdFwtYW5kXC10b3JyZW50aWFsOwor47WeIDwgYmVsbGllZFwtaW5cLXdhdGVyXC1nYXM7Civjs7wgPCBidWJibGluZ1wtb2ZcLWZvdW50YWluOwor47OaIDwgZmxvd2luZ1wtb2ZcLXRoZVwtd2F0ZXI7Civjs5QgPCB0b1wtc29ha1wtb3JcLWJlXC1zb2FrZWQ7CivjsqsgPCBoYWlyXC1rbm90c1wtaW5cLWFcLW1lc3M7CivjsIsgPCBhXC1raW5kXC1vZlwtZnJ1aXRcLXRyZWU7Civjr4wgPCB0b1wtb3BlcmF0ZVwtb3JcLW1hbmFnZTsKK+aZuuiDveWkp+aokyA8IGludGVsbGlnZW50XC1idWlsZGluZzsKK+WwkeaVuOawkeaXjyA8IG1pbm9yaXR5XC1uYXRpb25hbGl0eTsKK+WWruWtlyA8IGluZGl2aWR1YWxcLWNoYXJhY3RlcjsKK+OtniA8IGFcLWtpbmRcLWluZmVyaW9yXC13b29kOwor462SIDwgYVwtZmFybWluZ1wtaW5zdHJ1bWVudDsKK+OpuyA8IHJ1Z2dlZFwtbW91bnRhaW5cLXBhdGg7CivjqZQgPCBhXC10b29sXC10b1wtbWFrZVwtYVwtYm93Owor46e5IDwgdG9cLXN0cmlrZVwtd2l0aFwtZmlzdHM7Civog4zlv4MgPCBhXC1zbGVldmVsZXNzXC1nYXJtZW50Owor5oi25Y+jIDwgcmVnaXN0ZXJlZFwtcmVzaWRlbmNlOwor46GZIDwgY3VydGFpblwtZm9yXC1jYXJyaWFnZTsKK+acrOenkSA8IHVuZGVyZ3JhZHVhdGVcLWNvdXJzZTsKK+OglyA8IGRlZXBcLWluXC10aGVcLW1vdW50YWluOwor456fIDwgc2F2aW5nc1wtYW5kXC1yZXNlcnZlczsKK+OZoyA8IHRvXC1waWxlXC1hXC1zYW5kXC1oaWxsczsKK+S+v+S4rSA8IGF0XC1vbmUnJ3NcLWNvbnZlbmllbmNlOwor45mRIDwgdGhlXC1jYW5vcHlcLW9mXC1oZWF2ZW47CivjmI4gPCB0aGVcLXJvYXJzXC1vZlwtYVwtdGlnZXI7CivpkZLlrprlp5Tlk6HmnIMgPCBldmFsdWF0aW9uXC1jb21taXR0ZWU7CivjmIUgPCB0b1wtaG9sZFwtaW5cLXRoZVwtbW91dGg7Civlr7blio0gPCBhXC1kb3VibGVcLWVkZ2VkXC1zd29yZDsKK+OVoSA8IHRoZVwtYmVkXC1vZlwtYVwtdG9ycmVudDsKK+OVjCA8IHRvXC1yYWlzZVwtdGhlXC1jdXJ0YWluOwor45SLIDwgY3V0XC1pbnRvXC10aGluXC1zbGljZXM7CivjkoUgPCB0b1wtdW5iaW5kXC10aGVcLWNvbGxhcjsKK+ORiSA8IGNhbm5vdFwtc3RyYWlnaHRlblwtdXA7Civphp7ph4AgPCBtdWxsXC1vdmVyXC1cKGFuXC1pc3N1ZVwpOwor5YWo6Z2i56aB5q2iIDwgY29tcGxldGVcLXByb2hpYml0aW9uOwor5pqX6JmfIDwgc2VjcmV0XC1zaWduYWxcLVwoc2lnblwpOwor6ICB54i6IDwgbWF0ZXJuYWxcLWdyYW5kZmF0aGVyOwor54+t5pyfIDwgc2NoZWR1bGVcLVwoZm9yXC1mbGlnaHQ7CivosrfmlrkgPCBidXllclwtXChpblwtY29udHJhY3RzXCk7CivlronlqJwgPCBhbm5hXC1cKHBlcnNvbicnc1wtbmFtZVwpOwor6ai+6aas5aSn6LuKIDwgbXVsZVwtYW5kXC1ob3JzZVwtY2FydHM7CivntpPmv5/nmbzlsZUgPCBlY29ub21pY1wtZGV2ZWxvcG1lbnQ7CivpgJroqIrns7vntbEgPCBjb21tdW5pY2F0aW9uXC1zeXN0ZW07CivosqzmiJAgPCBnaXZlXC1zb21lYm9keVwtYVwtdGFzazsKK+S4jeS6jOazlemWgCA8IHRoZVwtb25lXC1hbmRcLW9ubHlcLXdheTsKK+mCj+i8r+mPiOi3r+aOp+WItiA8IGxvZ2ljYWxcLWxpbmtcLWNvbnRyb2w7CivlpJrpurwgPCBob3dcLVwod29uZGVyZnVsXCxcLWV0Y1wpOwor6YWs6KydIDwgdG9cLXRoYW5rXC13aXRoXC1hXC1naWZ0Owor54Sh5YO554+N54+gIDwgcGVhcmxcLW9mXC1ncmVhdFwtcHJpY2U7CivlvoDov5QgPCB0b1wtZ29cLWJhY2tcLWFuZFwtZm9ydGg7CivljIXph5EgPCBjb3Zlclwtd2l0aFwtZ29sZFwtbGVhZjsKK+acquaIkOW5tOiAhSA8IG1pbm9yXC1cKG5vdFwtYW5cLWFkdWx0XCk7CivmmpHnhrEgPCBob3RcLVwoc3VtbWVyXClcLXdlYXRoZXI7Civlt6Hov7TliIbmnpDnq6/lj6MgPCByb3ZpbmdcLWFuYWx5c2lzXC1wb3J0Owor5LyK5pav6Jit5aChIDwgaXNsYW1hYmFkXC1cKHBha2lzdGFuXCk7CivpgYvli5XmnIMgPCBhXC1zcG9ydHNcLWNvbXBldGl0aW9uOwor5LiN5pu+IDwgbmV2ZXJcLVwoaGF2ZVwtZG9uZVwtc3RoOwor57i96YOoIDwgZ2VuZXJhbFwtaGVhZHF1YXJ0ZXJzOwor6LK25YC8IDwgdG9cLWJlY29tZVwtZGV2YWx1YXRlZDsKK+mBuumquCA8IFwoZGVhZFwpXC1odW1hblwtcmVtYWluczsKK+S6jOWNgeWbm+iZnyA8IDI0XC10aFwtZGF5XC1vZlwtYVwtbW9udGg7CivpoZ7mjqggPCB0b1wtcmVhc29uXC1ieVwtYW5hbG9neTsKK+Wkp+WkseaJgOacmyA8IGdyZWF0bHlcLWRpc3NhcG9pbnRlZDsKK+WSjOWlvSA8IHRvXC1iZWNvbWVcLXJlY29uY2lsZWQ7CivmnKzlnJ8gPCBvbmUnJ3NcLW5hdGl2ZVwtY291bnRyeTsKK+S6nuWAqyA8IGFhcm9uXC1cKGFcLW1hbicnc1wtbmFtZVwpOwor576e5oGlIDwgXChhXC1mZWVsaW5nXC1vZlwpXC1zaGFtZTsKK+WTiOS9myA8IGhhcnZhcmRcLVwodW5pdmVyc2l0eVwpOwor5pqR5pyfIDwgc3VtbWVyXC12YWNhdGlvblwtdGltZTsKK+S8gealrembhuWcmCA8IGluZHVzdHJ5XC1hc3NvY2lhdGlvbjsKK+euoeeQhuaOpeWPoyA8IG1hbmFnZW1lbnRcLWludGVyZmFjZTsKK+WRvOWWiiA8IHNob3V0XC1cKHNsb2dhbnNcLFwtZXRjXCk7Civnub3ntJsgPCBpblwtcmlvdG91c1wtcHJvZnVzaW9uOwor5ZGI5aCxIDwgdG9cLVwoc3VibWl0XC1hXClcLXJlcG9ydDsKK+eUn+eUouioreWCmSA8IHByb2R1Y3Rpb25cLWVxdWlwbWVudDsKK+WNiueZvSA8IGZpZnR5XC1cKHllYXJzXC1vZlwtYWdlXCk7CivwoIGlIDwgdGhlXC1ob3Juc1wtb2ZcLWFcLXNoZWVwOwor6LeR6b6N5aWXIDwgdG9cLXBsYXlcLWFcLXNtYWxsXC1yb2xlOwor5piC54S2IDwgdXByaWdodFwtYW5kXC11bmFmcmFpZDsKK+mChOiqqiA8IHRvXC1hZGRcLVwoaW5cLXNwZWFraW5nXCk7Civmm7TliqAgPCBtb3JlXC1cKHRoYW5cLXN0aFwtZWxzZVwpOwor5b636Zu354i+IDwgXChqdW5lXC10ZXVmZWxcKVwtZHJleWVyOwor576p5YuZ5pWZ6IKyIDwgY3VtcHVsc29yeVwtZWR1Y2F0aW9uOwor54i654i6IDwgcGF0ZXJuYWxcLWdyYW5kZmF0aGVyOwor5YKz6Ly45o6n5Yi2IDwgdHJhbnNtaXNzaW9uXC1jb250cm9sOwor5LiN5YudIDwgY2Fubm90XC1iZWFyXC1vclwtc3RhbmQ7CivmlZfog4MgPCBzcG9pbFwtb25lJydzXC1hcHBldGl0ZTsKK+iuiuW/gyA8IGNlYXNlXC10b1wtYmVcLWZhaXRoZnVsOwor5LiN5oe35aW95oSPIDwgaGFyYm91clwtZXZpbFwtZGVzaWduczsKK+S4iuWAiyA8IGZpcnN0XC1cKG9mXC10d29cLXBhcnRzXCk7Civlj6rkuI3pgY7lub7lubTliY0gPCBvbmx5XC1hXC1mZXdcLXllYXJzXC1hZ287Civlub4gPCBob3dcLW1hbnlcP1wtaG93XC1tdWNoXD87CivlpY8gPCBtZW1vcmlhbGl6ZVwtZW1wZXJvcjsKK+aCqCA8IGhvbm9yaWZpY1wtZm9yXC0nJ3lvdScnOwor5ZCPIDwgZ292ZXJubWVudFwtb2ZmaWNpYWw7CivlhYAgPCB0b1wtY3V0XC1vZmZcLXRoZVwtZmVldDsKK+iDtCA8IHRoZVwtbGFyZ2VcLWludGVzdGluZTsKK+enpiA8IGZldWRhbFwtc3RhdGVcLW9mXC1xaW47CivmoYEgPCBjcm9zc1wtYmVhbXNcLW9mXC1yb29mOwor6I6OIDwga2luZFwtb2ZcLXNlZGdlXC1ncmFzczsKK+iWmyA8IGtpbmRcLW9mXC1tYXJzaFwtZ3Jhc3M7CivntaMgPCB0b1wtYmFzdGVcLWZvclwtc2V3aW5nOwor5oKWIDwgYmVcLWNvbnRyYWRpY3RvcnlcLXRvOwor6IqSIDwgbWlzY2FudGh1c1wtc2luZW5zaXM7CivlmLYgPCBuZWlnaGluZ1wtb2ZcLWFcLWhvcnNlOwor5Y+9IDwgc2lnaFwtaW5cLWRpc2FwcHJvdmFsOwor5Y6lIDwgcGVyc29uYWxcLXByb25vdW5cLWhlOwor5ZytIDwgamFkZVwtcG9pbnRlZFwtYXRcLXRvcDsKK+W+mCA8IHdhbGtcLWJhY2tcLWFuZFwtZm9ydGg7CivmmaQgPCBoYXZlXC1pbnRlcnZpZXdcLXdpdGg7CivoiLcgPCB0aGVcLXNpZGVzXC1vZlwtYVwtYm9hdDsKK+mCrCA8IHZhcmlvdXNcLXBsYWNlXC1uYW1lczsKK+ikkCA8IGNvYXJzZVwtd29vbGVuXC1jbG90aDsKK+mmiCA8IG9mZmVyXC1mb29kXC1zdXBlcmlvcjsKK+WUpyA8IGNoaXJwaW5nXC1vZlwtaW5zZWN0czsKK+WSlCA8IHVzZWRcLWluXC10cmFuc2xhdGlvbjsKK+eBuCA8IGNhdXRlcml6ZVwtd2l0aFwtbW94YTsKK+mptyA8IHRlYW1cLW9mXC1mb3VyXC1ob3JzZXM7CivnsrwgPCBjbGVhclwtXChhc1wtb2ZcLXdhdGVyXCk7CivnvpogPCBzcGVjaWVzXC1vZlwtYW50ZWxvcGU7CivlkZMgPCB0YWxrXC1pblwtb25lJydzXC1zbGVlcDsKK+evmSA8IHBvbGVcLXVzZWRcLXB1bnRcLWJvYXQ7CivmuY0gPCByYXBpZFwtd2F0ZXJcLWN1cnJlbnQ7CivohI0gPCBtaW5jZWRcLW1lYXRcLW9yXC1maXNoOwor6Y+WIDwgdG9cLWZpZ2h0XC10b1wtdGhlXC1lbmQ7Civogr0gPCBhXC1jaGVtaWNhbFwtY29tcG91bmQ7Civpiq4gPCBiZWxsc1wtaHVuZ1wtb25cLWhvcnNlOwor56yzIDwgYVwtcmVlZFwtbGVhZlwtd2hpc3RsZTsKK+iWjyA8IHNlZWRcLW9mXC1qb2InJ3NcLXRlYXJzOwor5oKdIDwgdG9cLWxhdWdoXC1hdFwtdG9cLXBpdHk7CivosYcgPCBhXC1zbWFsbFwta2lkbmV5XC1iZWFuOwor5qGJIDwgZXVjYWx5cHR1c1wtZ2xvYnVsdXM7CivouYEgPCB0b1wtd2Fsa1wtd2l0aFwtYVwtbGltcDsKK+iFiCA8IGFuXC1vcmdhbmljXC1jb21wb3VuZDsKK+ienyA8IGtpbmRcLW9mXC1jYXRlcnBpbGxhcjsKK+azriA8IHpob3VcLWR5bmFzdHlcLXNjaG9vbDsKK+mysyA8IHRoZVwtc2lsdmVyeVwtcG9tZnJldDsKK+mcqiA8IGxvbmdcLWFuZFwtaGVhdnlcLXJhaW47CivmnpggPCB0aGVcLWhhbmRsZVwtb2ZcLXRvb2xzOwor5ru5IDwgdGhlXC1iYW5rXC1vZlwtYVwtc3RlYW07CivlvbMgPCBzdGVwXC13aXRoXC1sZWZ0XC1mb290Owor5LqNIDwgdG9cLXRha2VcLXNtYWxsXC1zdGVwczsKK+egmCA8IGFcLWtpbmRcLW9mXC1mYXJtXC10b29sOwor5qCOIDwgY2hlc3RudXRcLWxlYXZlZFwtb2FrOwor6bmHIDwgdGhlXC1zaWx2ZXJcLXBoZWFzYW50Owor6IuMIDwgYXZlcnJob3JhXC1jYXJhbWJvbGE7Civpg5sgPCBvdXRlclwtd2FsbHNcLW9mXC1jaXR5Owor6YaiIDwgbWluY2VkXC1waWNrbGVkXC1tZWF0Owor55yaIDwgZGlzZWFzZVwtb2ZcLXRoZVwtZXllczsKK+ijiSA8IHNcLXNlYW1cLWluXC1hXC1nYXJtZW50Owor5bSmIDwgYVwtbW91bnRhaW5cLWluXC1rYW5zdTsKK+WFlSA8IGFcLWZlbWFsZVwtcmhpbm9jZXJvczsKK+iouuaWt+WKn+iDvSA8IGRpYWdub3N0aWNcLWZ1bmN0aW9uOwor6LKh5pS/6YOoIDwgbWluaXN0cnlcLW9mXC1maW5hbmNlOwor5aWU5rWBIDwgZmxvd1wtYXRcLWdyZWF0XC1zcGVlZDsKK+W7o+WRiuWVhiA8IGFkdmVydGlzaW5nXC1jb21wYW55Owor5LiA55m+5LqU5Y2B5aSa5bm0IDwgbW9yZVwtdGhhblwtMTUwXC15ZWFyczsKK+aXpeaWhyA8IGphcGFuZXNlXC1cKGxhbmd1YWdlXCk7Civppqzkvobopb/kup7oqp4gPCBtYWxhc2lhblwtXChsYW5ndWFnZVwpOwor5pKe6KaLIDwgdG9cLW1lZXRcLWJ5XC1hY2NpZGVudDsKK+W3rumhjSA8IGJhbGFuY2VcLVwoZmluYW5jaWFsXCk7CivljYrmiKogPCBoYWxmXC1cKG9mXC1hXC1zZWN0aW9uXCk7CivliZvnupQgPCBcKGp1c3RcKVwtYVwtbW9tZW50XC1hZ287CivmhbDlronlqaYgPCBjb21mb3J0XC13b21hblx8d29tZW47CivmipjlsITnjocgPCBpbmRleFwtb2ZcLXJlZnJhY3Rpb247Civlu6DnpKYgPCBmYWN0b3JpZXNcLWFuZFwtbWluZXM7CivlgrPovLjlqpLpq5QgPCB0cmFuc21pc3Npb25cLW1lZGl1bTsKK+i1t+atu+WbnueUnyA8IGFyaXNlXC1mcm9tXC10aGVcLWRlYWQ7CivnhrHng4ggPCB3YXJtXC1cKHdlbGNvbWVcLFwtZXRjXCk7Civpq5jpmo7oqp7oqIAgPCBoaWdoXC1sZXZlbFwtbGFuZ3VhZ2U7CivlubTku6PliJ0gPCBiZWdpbm5pbmdcLW9mXC1hblwtYWdlOwor5Lqe5rSy6IiH5aSq5bmz5rSL5Zyw5Y2AIDwgYXNpYVwtcGFjaWZpY1wtcmVnaW9uOwor6L6v6K23IDwgc3BlYWtcLWluXC1kZWZlbmNlXC1vZjsKK+e+juWci+S6uuawkSA8IHRoZVwtYW1lcmljYW5cLXBlb3BsZTsKK+WTpeWAq+avlOS6nuWkp+WtuCA8IGNvbHVtYmlhXC11bml2ZXJzaXR5Owor6Ziy56am5oCnIDwgZGVmZW5zaXZlXC1cKHdlYXBvbnNcKTsKK+mBjuS6huS6lOWIhumQmCA8IGZpdmVcLW1pbnV0ZXNcLXBhc3NlZDsKK+aJk+apq+eCriA8IHNwZWFrXC11bndhcnJhbnRlZGx5Owor5aSn5om5IDwgbGFyZ2VcLXF1YW50aXRpZXNcLW9mOwor6Z2i5Zqu6YCj5o6lIDwgY29ubmVjdGlvblwtb3JpZW50ZWQ7CivlsIjmpa3kurrmiY0gPCBleHBlcnRcLVwoaW5cLWFcLWZpZWxkXCk7CivnhKHnuKvpgKPmjqUgPCBzZWFtbGVzc1wtY29ubmVjdGlvbjsKK+e2geelqCA8IGtpZG5hcFwtXChmb3JcLXJhbnNvbVwpOwor55m96YqFIDwgY29wcGVyXC1uaWNrZWxcLWFsbG95Owor5YWL576F5Zyw5Lqe6KqeIDwgY3JvYXRpYW5cLVwobGFuZ3VhZ2VcKTsKK+e1seeosSA8IGNvbGxlY3RpdmVseVwtY2FsbGVkOwor55m86KiA5qyKIDwgdGhlXC1yaWdodFwtb2ZcLXNwZWVjaDsKK+W7ouawoyA8IHdhc3RlXC1cKGV4aGF1c3RcKVwtZ2FzOwor6KiO6KuW55qE6K2w6aGMIDwgdG9waWNcLW9mXC1kaXNjdXNzaW9uOwor5YyF5a2QIDwgc3RlYW1lZFwtc3R1ZmZlZFwtYnVuOwor57SF6JGJIDwgcmVkXC1hdXR1bW5hbFwtbGVhdmVzOwor5bGk6KaL6L+t5Ye6IDwgdG9cLW9jY3VyXC1mcmVxdWVudGx5Owor55m+6LKoIDwgZ2VuZXJhbFwtbWVyY2hhbmRpc2U7CivprKLpq64gPCBoYWlyXC1vblwtdGhlXC10ZW1wbGVzOwor576O5ZyL5Lul5aSWIDwgb3V0c2lkZVwtb2ZcLXRoZVwtdVwuc1wuOwor5YSY6YePIDwgYXNcLW11Y2hcLWFzXC1wb3NzaWJsZTsKK+i6q+mrmCA8IFwoYVwtcGVyc29uJydzXClcLWhlaWdodDsKK+aVmeWtuCA8IHRlYWNoZXJcLWFuZFwtc3R1ZGVudDsKK+mEmeS6uiA8IHlvdXJcLWh1bWJsZVwtc2VydmFudDsKK+WcsOWdgOeahOi9ieaPmyA8IGFkZHJlc3NcLXRyYW5zbGF0aW9uOwor5pWF5a6uIDwgdGhlXC1pbXBlcmlhbFwtcGFsYWNlOwor5pS/5bGAIDwgcG9saXRpY2FsXC1zaXR1YXRpb247Civnnb/mmbogPCB3aXNlXC1hbmRcLWZhcnNpZ2h0ZWQ7Civoh6rli5XlnLDlt6XkvZwgPCBhdXRvbWF0aWNcLW9wZXJhdGlvbjsKK+atpOaZguatpOWIuyA8IGF0XC10aGlzXC12ZXJ5XC1tb21lbnQ7CivpuJIgPCB0aGVcLWVhc3Rlcm5cLWphY2tkYXc7CivptrIgPCBzaWJlcmlhblwtZmx5Y2F0Y2hlcjsKK+W5tOS5i+S5hSA8IHBlcmlvZFwtb2ZcLVwuXC5cLlwteWVhcnM7Civoo5zop5IgPCBzdXBwbGVtZW50YXJ5XC1hbmdsZTsKK+mwtiA8IGtvbm9zaXJ1c1wtcHVuY3RhdHVzOwor6a+lIDwgcG9tYXRvbXVzXC1zYWx0YXRyaXg7Civpr5UgPCBjb3J5cGhhZW5hXC1oaXBwdXJ1czsKK+mutiA8IHNlYmFzdG9kZXNcLWd1bnRoZXJpOwor6YCy5pS7IDwgYXR0YWNrXC1cKG1pbGl0YXJpbHlcKTsKK+aTuuW8hCA8IG1vdmVcLWJhY2tcLWFuZFwtZm9ydGg7CivkuI3kuK3mhI8gPCBub3RcLXRvXC1vbmUnJ3NcLWxpa2luZzsKK+mjgiA8IHdpbmRcLWluXC1oaWdoXC1wbGFjZXM7Civpor4gPCBibG93aW5nXC1vZlwtdGhlXC13aW5kOwor6aCNIDwgdG9cLXJhaXNlXC1vbmUnJ3NcLWhlYWQ7Civpn5ggPCBhcmNoZXInJ3NcLXRodW1iXC1yaW5nOwor6Z6sIDwgYVwtcXVpdmVyXC1vblwtYVwtaG9yc2U7Civosr/mmJPkv53orbfkuLvnvqkgPCB0cmFkZVwtcHJvdGVjdGlvbmlzbTsKK+mBjeW4gyA8IGJlXC1mb3VuZFwtZXZlcnl3aGVyZTsKK+Wkmum7qOmBuOiIiSA8IG11bHRpcGFydHlcLWVsZWN0aW9uOwor6Zy2IDwgZG93bnBvdXJpbmdcLW9mXC1yYWluOwor6ZyuIDwgZGVuc2VuZXNzXC1vZlwtY2xvdWRzOwor5YWJ57qW6KGw5ribIDwgb3B0aWNhbFwtYXR0ZW51YXRpb247CivmlLnlkI0gPCB0b1wtY2hhbmdlXC1vbmVzXC1uYW1lOwor6ZG0IDwgdG9cLWVuZ3JhdmVcLW9yXC1jYXJ2ZTsKK+S4jeWLnuiAjOeNsiA8IHJlYXBcLXdpdGhvdXRcLXNvd2luZzsKK+mOhCA8IGlyaWRpdW1cLWVpbnN0ZWluaXVtOwor5oqA6KGT5qiZ5rqWIDwgdGVjaG5vbG9neVwtc3RhbmRhcmQ7Civoo5zogIMgPCBtYWtlXC11cFwtZXhhbWluYXRpb247CivplovnmbzpgY7nqIsgPCBkZXZlbG9wbWVudFwtcHJvY2VzczsKK+eZvuWIhuWItiA8IGh1bmRyZWRcLW1hcmtcLXN5c3RlbTsKK+mIgyA8IGFuY2llbnRcLXdpbmVcLXZlc3NlbDsKK+mFpyA8IHRvXC1wbGVkZ2VcLXdpdGhcLXdpbmU7CivliIbmnpDlrrYgPCBcKHBvbGl0aWNhbFwpXC1hbmFseXN0Owor5pKt5byEIDwgb3JkZXJcLXN1YmplY3RcLWFib3V0Owor5bm05bqVIDwgdGhlXC1lbmRcLW9mXC10aGVcLXllYXI7CivntITmq4MgPCBhcmtcLW9mXC10aGVcLWNvdmVuYW50Owor5bmr5belIDwgaGVscFwtd2l0aFwtZmFybVwtd29yazsKK+WgseW7oiA8IHJlcG9ydFwtYXNcLXdvcnRobGVzczsKK+mAmuS/oeiyoOi8iSA8IGNvbW11bmljYXRpb25zXC1sb2FkOwor5bi46KaP5q2m5ZmoIDwgY29udmVudGlvbmFsXC13ZWFwb247CivntbHoqIjntZDmnpwgPCBzdGF0aXN0aWNhbFwtcmVzdWx0czsKK+WPuOepuuimi+aFoyA8IGFcLWNvbW1vblwtb2NjdXJyZW5jZTsKK+eri+azleacgyA8IGxlZ2lzbGF0aXZlXC1jb3VuY2lsOwor5Z+35o6MIDwgd2llbGRcLVwocG93ZXJcLFwtZXRjXC5cKTsKK+iltCA8IGFcLW9uZVwtcGllY2VcLWdhcm1lbnQ7CivopIMgPCBhXC1zZWFtXC1pblwtYVwtZ2FybWVudDsKK+W8leWKm+WgtCA8IGdyYXZpdGF0aW9uYWxcLWZpZWxkOwor5YW15qyKIDwgbWlsaXRhcnlcLWxlYWRlcnNoaXA7CivooLAgPCBjZXJhbWJ5eFwtcnVnaWNvbGxpczsKK+ifqCA8IHRoZVwtc2liZXJpYW5cLWplcmJvYTsKK+idnSA8IHRoZVwtbGFydmFcLW9mXC1sb2N1c3Q7CivkuozljYHkuIPomZ8gPCAyN3RoXC1kYXlcLW9mXC1hXC1tb250aDsKK+mAvOS+myA8IGV4dG9ydFwtYVwtY29uZmVzc2lvbjsKK+imluiAjOS4jeimiyA8IHR1cm5cLWFcLWJsaW5kXC1leWVcLXRvOwor5L+d5a6J6Ieq5YuV5YyWIDwgc2VjdXJpdHlcLWF1dG9tYXRpb247CivolIogPCBuYXN0dXJ0aXVtXC1tb250YW51bTsKK+iThyA8IGZvbGxpY2xlc1wtb2ZcLXBsYW50czsKK+iRhyA8IGVsc2hvbHRyaWFcLXBhbHRyaW5pOwor6I6VIDwgbnltcGhvaWRlc1wtcGVsdGF0dW07CivojLMgPCBjeXBlcnVzXC1tYWxhY2NlbnNpczsKK+iLsyA8IHBldGFzaXRlc1wtamFwb25pY3VzOwor6ImrIDwgYm93XC1vclwtcHJvd1wtb2ZcLWJvYXQ7CivmtojogJfph48gPCByYXRlXC1vZlwtY29uc3VtcHRpb247Civpm7vlrZDmlofku7YgPCBlbGVjdHJvbmljXC1kb2N1bWVudDsKK+mWi+aUviA8IGxpZnRcLVwocmVzdHJpY3Rpb25zXCk7CivnmbvmnIggPCBnb1wtXCh1cFwpXC10b1wtdGhlXC1tb29uOwor576iIDwgZmluZVwtd29vbGVuXC1mYWJyaWNzOwor5qC46Zu756uZIDwgbnVjbGVhclwtcG93ZXJcLXBsYW50Owor576RIDwgYVwtZ3VpZGVcLXRvXC1nb29kbmVzczsKK+e1kOani+WKqeipniA8IHN0cnVjdHVyYWxcLXBhcnRpY2xlOwor5a2X5paf5Y+l6YWMIDwgd2VpZ2hpbmdcLWV2ZXJ5XC13b3JkOwor57myIDwgdG9cLXdvcmtcLWFzXC1hXC10YWlsb3I7CivluaPlgLwgPCB2YWx1ZVwtb2ZcLWFcLWN1cnJlbmN5Owor57aAIDwgYVwta2luZFwtb2ZcLXNhY2tjbG90aDsKK+aUv+ayu+mXnOS/giA8IHBvbGl0aWNhbFwtcmVsYXRpb25zOwor5Yaw5aC0IDwgc2thdGluZ1wtb3JcLWljZVwtcmluazsKK+ebuOS6kuWFvOWuuSA8IG11dHVhbGx5XC1jb21wYXRpYmxlOwor5bCL5LqL55Sf6Z2eIDwgdG9cLWxvb2tcLWZvclwtdHJvdWJsZTsKK+erkSA8IGJlXC12YXN0XC1hbmRcLWVuZGxlc3M7CivnppMgPCB0b1wtZHJpdmVcLW91dFwtZGVtb25zOwor56WQIDwgZGl2aW5lXC1pbnRlcnZlbnRpb247Civnm67liY0gPCBhdFwtdGhlXC1wcmVzZW50XC10aW1lOwor6KGo6Z2i5YyWIDwgY29tZVwtdG9cLXRoZVwtc3VyZmFjZTsKK+ethuitryA8IHdyaXR0ZW5cLXRyYW5zbGF0aW9uOwor562G6KmmIDwgd3JpdHRlblwtZXhhbWluYXRpb247Civnn5QgPCBicmlsbGlhbnRcLVwob2ZcLWV5ZXNcKTsKK+mXnOWIhyA8IGJlXC1kZWVwbHlcLWNvbmNlcm5lZDsKK+Wwj+Wvq+Wtl+avjSA8IGxvd2VyY2FzZVwtXChsZXR0ZXJzXCk7CivnnpUgPCBjYXRhcmFjdFwtaW5cLXRoZVwtZXllOwor6LWw6ZaLIDwgZ2V0XC1vdXRcLW9mXC10aGVcLXdheVwhOwor6KaG5LqhIDwgZmFsbFwtXChvZlwtYW5cLWVtcGlyZVwpOwor6Zu76Kmx5qmfIDwgdGVsZXBob25lXC1lcXVpcG1lbnQ7Civoo4HmlrcgPCBjb25zaWRlclwtYW5kXC1kZWNpZGU7CivnuL3ntbHlupwgPCBwcmVzaWRlbnRpYWxcLXBhbGFjZTsKK+e0gOWFgyA8IGJlZ2lubmluZ1wtb2ZcLWFuXC1lcmE7CivlhbXlnJggPCBsYXJnZVwtbWlsaXRhcnlcLXVuaXQ7CivovqbkuosgPCB0b1wtaGFuZGxlXC1cKGFmZmFpcnNcKTsKK+ezvuWBjyA8IHRvXC1jb3JyZWN0XC1hblwtZXJyb3I7CivmiY3orZggPCBhYmlsaXR5XC1hbmRcLWluc2lnaHQ7CivmjInnkIYgPCBhY2NvcmRpbmdcLXRvXC1yZWFzb247CivovJTluaMgPCBmcmFjdGlvbmFsXC1jdXJyZW5jeTsKK+aQreS8tCA8IHRyYXZlbFwtd2l0aFwtYW5vdGhlcjsKK+WcqOafkOeorueoi+W6puS4iiA8IHRvXC1hXC1jZXJ0YWluXC1leHRlbnQ7CivlnIvml5cgPCBmbGFnXC1cKG9mXC1hXC1jb3VudHJ5XCk7Civou43mlL8gPCBhcm15XC1hbmRcLWdvdmVybm1lbnQ7Civnl4Xms4EgPCBzdGF0ZVwtb2ZcLWFuXC1pbGxuZXNzOwor5YiG5L2I5byP57ay57WhIDwgZGlzdHJpYnV0ZWRcLW5ldHdvcms7CivnrqHnkIblip/og70gPCBtYW5hZ2VtZW50XC1mdW5jdGlvbjsKK+i9ieWQkSA8IGNoYW5nZVwtb2ZcLWRpcmVjdGlvbjsKK+api+aOpeWZqCA8IGJyaWRnZVwtXChuZXR3b3JraW5nXCk7Civnmb3ljbcgPCBibGFua1wtZXhhbWluZVwtcGFwZXI7Civmm7zlvrnmlq/nibnnt6jnorwgPCBtYW5jaGVzdGVyXC1lbmNvZGluZzsKK+WFq+S7mSA8IHRoZVwtZWlnaHRcLWltbW9ydGFsczsKK+i8g+WkpyA8IGNvbXBhcmF0aXZlbHlcLWxhcmdlOwor562G566XIDwgZG9cLWFcLXN1bVwtaW5cLXdyaXRpbmc7CivmoaogPCBteXRoaWNhbFwtZ2lhbnRcLXRyZWU7Civmj5Dlh7ogPCB0b1wtcmFpc2VcLVwoYW5cLWlzc3VlXCk7Civnmb3kurogPCB3aGl0ZVwtbWFuXC1hbmRcLXdvbWFuOwor5p+uIDwgZmxhdFwtcGllY2VzXC1vZlwtd29vZDsKK+WBmuazlSA8IHdheVwtb2ZcLWRvaW5nXC10aGluZ3M7CivmmrUgPCBkcnlcLWJ5XC1leHBvc2luZ1wtc3VuOwor5oq954WZIDwgc21va2VcLVwoYVwtY2lnYXJldHRlXCk7Civmlp0gPCBzbWFsbFwtamFkZVwtd2luZVwtY3VwOwor6KGo5oOFIDwgXChmYWNpYWxcKVwtZXhwcmVzc2lvbjsKK+ijnOWKqSA8IFwoZmluYW5jaWFsXClcLXN1YnNpZHk7CivmlYQgPCB0b1wtcHV0XC1mb3J0aFwtZWZmb3J0Owor6Iag54mHIDwgXChwaG90b2dyYXBoaWNcKVwtZmlsbTsKK+aSjSA8IHRvXC1ob2xkXC1pblwtdGhlXC1oYW5kOwor5LiN5pyf54S26ICM54S2IDwgaGFwcGVuXC11bmV4cGVjdGVkbHk7Civmj5UgPCByb2xsXC11cFwtdGhlXC1zbGVldmVzOwor5p+U6YGTIDwgXCh0aGVcLXNwb3J0XC1vZlwpXC1qdWRvOwor5Yqg5YC85Z6L57ay6LevIDwgdmFsdWVcLWFkZGVkXC1uZXR3b3JrOwor5o6h5Yi2IDwgY29sbGVjdFwtYW5kXC1wcm9jZXNzOwor5LiN5b6X5LqGIDwgZGVzcGVyYXRlbHlcLXNlcmlvdXM7CivmioTnjbIgPCB0b1wtc2VhcmNoXC1hbmRcLXNlaXplOwor6KGo5aeQIDwgb2xkZXJcLWZlbWFsZVwtY291c2luOwor5YiG5L2I5o6n5Yi2IDwgZGlzdHJpYnV0ZWRcLWNvbnRyb2w7CivlsJcgPCB5b3VuZ2VyXC1vZlwtYnJvdGhlcnM7Civou5/ku7YgPCBcKGNvbXB1dGVyXClcLXNvZnR3YXJlOwor5aOQIDwgdGhlXC1pbXBlcmlhbFwtc2lnbmV0Owor5oub5b6FIDwgdG9cLXJlY2VpdmVcLVwoZ3Vlc3RzXCk7Civmnb/mooHmqYsgPCBwbGF0ZVwtZ2lyZGVyXC1icmlkZ2U7CivlnpUgPCB1c2VkXC1pblwtcGxhY2VcLW5hbWVzOwor5ouc5bm0IDwgcGF5XC1hXC1uZXdcLXllYXJcLWNhbGw7CivmoL3ot5/poK0gPCB0b1wtc3VmZmVyXC1hXC1zZXRiYWNrOwor5ZSaIDwgdm9taXRpbmdcLW9mXC1hbmltYWxzOwor5qC45bel56iLIDwgbnVjbGVhclwtZW5naW5lZXJpbmc7Civlm6DnibnntrLoga/pgJogPCBpbnRlcm5ldFwtY29ubmVjdGlvbjsKK+WRuiA8IHZvaWNlXC1vZlwtYW5nZXJcLXZhc3Q7CivkupLpgJogPCB0b1wtaW50ZXJjb21tdW5pY2F0ZTsKK+enkeWtuOeahOS6pOa1gSA8IHNjaWVudGlmaWNcLWV4Y2hhbmdlOwor5a6J55CG5pyDIDwgdW5cLXNlY3VyaXR5XC1jb3VuY2lsOwor57ay57Wh5oeJ55SoIDwgbmV0d29ya1wtYXBwbGljYXRpb247CivlgZggPCBhbmNpZW50XC1mYW1pbHlcLW5hbWU7Civnr6HkvY0gPCB0b1wtc2VpemVcLXRoZVwtdGhyb25lOwor5qmf5qKw57+76K2vIDwgbWFjaGluZVwtdHJhbnNsYXRpb247Civnvbfpu5wgPCBkaXNtaXNzXC1mcm9tXC1vZmZpY2U7Civktq8gPCB1c2VkXC1pblwtZ2lybCcnc1wtbmFtZTsKK+S2kiA8IG91dHN0YW5kaW5nXC1hYmlsaXR5Owor5LaMIDwgYVwtcHVzdHVsZVwtb3JcLXBpbXBsZTsKK+S2hCA8IHN0cmlwZWRcLW1vdHRsZWRcLXJhdDsKK+S1sSA8IHJlZFwtYW5kXC1ibGFja1wtY29sb3I7CivktZQgPCB0b1wtdHVyblwtb25cLXRoZVwtaGVlbDsKK+S0qiA8IGFcLWZhYnVsb3VzXC1jcmVhdHVyZTsKK+S0oCA8IGFcLXlvdW5nXC10YWlsZWRcLWRlZXI7Civlsazlr6YgPCB0dXJuXC1vdXRcLXRvXC1iZVwtdHJ1ZTsKK+SxpyA8IGFcLWtpbmRcLW9mXC1maXNoXC1lZWxzOwor5LCcIDwgYVwtbGFyZ2VcLWVhcnRoZW5cLXBvdDsKK+SutyA8IG1vdmVtZW50XC1vZlwtYVwtaG9yc2U7CivkroMgPCB0b1wtZ29cLWJlZm9yZVwtb3RoZXJzOwor5rS+6YGjIDwgc2VuZFwtXChvblwtYVwtbWlzc2lvblwpOwor5KuxIDwgYVwtcGFydFwtb2ZcLXRoZVwtc2t1bGw7Civkq6kgPCB0b1wtc2hha2VcLW9uZScnc1wtaGVhZDsKK+SqvyA8IHRoZVwtdG9wXC1vZlwtdGhlXC1oZWFkOwor5Kq9IDwgaG9hcnlcLWhhaXJlZFwtcGVyc29uOwor5Km3IDwgdGhlXC1zaWRlc1wtb2ZcLWFcLXNob2U7CivkqacgPCB0b1wtdGllXC11cFwtaHVycmllZGx5Owor5KmMIDwgdG9cLWhhdmVcLWFcLXdvcm5cLWxvb2s7Civkp5QgPCB0b1wtbWVldFwtYXRcLXRoZVwtYmFuazsKK+SmmSA8IGFcLWdvdmVybm1lbnRcLWFnZW5jeTsKK+SlpyA8IGFcLWZpbmVcLWtpbmRcLW9mXC1qYWRlOwor6KiK5qGG5YKz6YCB5pyN5YuZIDwgZnJhbWVcLXJlbGF5XC1zZXJ2aWNlOwor5KSGIDwgYVwta2luZFwtb2ZcLXJpY2VcLXdpbmU7CivkpIEgPCBjb29rZWRcLW9yXC13ZWxsXC1kb25lOwor5KKLIDwgYVwtbWFyc2hhbFwtb3JcLWhlcmFsZDsKK+S4pumHjSA8IGxheVwtZXF1YWxcLXN0cmVzc1wtb247Civou5/ku7bmioDooZMgPCBzb2Z0d2FyZVwtdGVjaG5vbG9neTsKK+SfoyA8IGFuXC1hbmltYWxcLWluXC1sZWdlbmQ7CivknrMgPCB0b1wtc3R1bWJsZVwtYW5kXC1mYWxsOwor5J2gIDwgYVwta2luZFwtb2ZcLXdpbGRcLWJvYXI7CivknIEgPCB0b1wtYWJ1c2VcLWFuZFwtaW5zdWx0Owor5JmSIDwgdG9cLXN0b3JlXC1vclwtc2F2ZVwtdXA7CivkmY8gPCBzaG9ydFwtc2xlZXZlc1wtc2hpcnQ7CivkmYEgPCBjaGlsZHJlbicnc1wtZ2FybWVudHM7CivkmKogPCBjbG90aGVzXC13aXRob3V0XC1oZW07CivklqIgPCBmaXJzdFwtYm9yblwtc2lsa3dvcm07CivklpYgPCB0b1wtc2hvd1wtZmFtaWxpYXJpdHk7Civklb4gPCBhXC1raW5kXC1vZlwtdmVnZXRhYmxlOwor5JWYIDwgYVwtdmFyaWV0eVwtb2ZcLWZ1bmd1czsKK+SVgyA8IHRoZVwtc2hhZGVcLW9mXC1hXC10cmVlOwor5JO3IDwgbnltcGhvaWRlc1wtcGVsdGFsdW07Civkk40gPCBjcnVjaWZlcm91c1wtZmxvd2VyczsKK+SSiCA8IHNpZGVcLWJlYW1cLW9mXC1hXC1ib2F0Owor5JKAIDwgc2hvcnRcLWFuZFwtZGVlcFwtYm9hdDsKK+SRhyA8IG1lZGljaW5lXC1mb3JcLWFcLXNvcmU7CivkkK0gPCBhXC1kaXNjaGFyZ2VcLW9yXC1mbHV4Owor5I+5IDwgdG9cLXdhdGNoXC1zdGVhbHRoaWx5Owor5I+oIDwgdG9cLXN3ZWxsXC11cFwtZ3JlYXRseTsKK+SPhiA8IGJ1enppbmdcLWluXC10aGVcLWVhcnM7CivkjbcgPCB0b1wtY2hhc2VcLWVhY2hcLW90aGVyOwor5Iu5IDwgYnJlYWR0aFwtb2ZcLW1hdGVyaWFsOwor5IuwIDwgdG9cLWJpbmRcLW9yXC1yZXN0cmFpbjsKK+aJjeWtuCA8IHRhbGVudFwtYW5kXC1sZWFybmluZzsKK+iAleiAmCA8IHBsb3dpbmdcLWFuZFwtd2VlZGluZzsKK+aTuumWgOmdoiA8IGtlZXBcLXVwXC1hcHBlYXJhbmNlczsKK+ioiuahhuWCs+mAgee2sui3ryA8IGZyYW1lXC1yZWxheVwtbmV0d29yazsKK+SHvSA8IGFcLWNvYXJzZVwtYmFtYm9vXC1tYXQ7Civkhq8gPCBhXC1zaG9ydFwtc2hhcGVkXC1mYWNlOwor5IWvIDwgYVwtdmFyaWV0eVwtb2ZcLW1pbGxldDsKK+SFnyA8IHZhcmlldGllc1wtb2ZcLW1pbGxldDsKK+SFkiA8IGFcLXNoYXJwXC1lZGdlZFwtZ3Jhc3M7CivmhYjnpaUgPCBcKGFcKVwta2luZGx5XC1cKHBlcnNvblwpOwor5IGLIDwgd2l0aFwtb25lXC1leWVcLWNsb3NlZDsKK+SBgyA8IHRvXC1sb29rXC1hdHRlbnRpdmVseTsKK+SApCA8IGluc2lnaHRcLW9mXC1qZWFsb3VzeTsKK+SAoyA8IHRvXC1sb29rXC1zdGVhZGlseVwtYXQ7Civlpbbmsrnoj5zoirEgPCBjcmVhbWVkXC1jYXVsaWZsb3dlcjsKK+O/kyA8IGRpc2Vhc2VcLW9mXC10aGVcLWhvb2Y7CivlhYnnmbzpgIHlmaggPCBvcHRpY2FsXC10cmFuc21pdHRlcjsKK+O+uyA8IG5vdFwtYW55XC1wcm9ncmVzc2l2ZTsKK+O+tiA8IGRpc2Vhc2VcLW9mXC10aGVcLWtuZWU7CivlronmqIIgPCBwZWFjZVwtYW5kXC1oYXBwaW5lc3M7CivjvqIgPCBhXC1tYWxpZ25hbnRcLWRpc2Vhc2U7Civjva0gPCB2YWNhbnRcLWxvdFwtb3JcLXNwYWNlOwor472MIDwgdGhlXC1yaWRnZVwtb2ZcLWFcLXJvb2Y7CivjvYIgPCBhXC1jcmFja2VkXC1jb250YWluZXI7CivjvJkgPCBicmlja3dvcmtcLW9mXC1hXC13ZWxsOwor47ySIDwgYVwta2luZFwtb2ZcLWJpZ1wtbWVsb247CivntrLntaHnkrDlooMgPCBuZXR3b3JrXC1lbnZpcm9ubWVudDsKK+aEm+S6uuWmguW3sSA8IGxvdmVcLW90aGVyc1wtYXNcLXNlbGY7CivjuLYgPCBjb2xvclwtb2ZcLXRoZVwtb3h0YWlsOwor47i1IDwgdGhlXC1sb3dpbmdcLW9mXC1hblwtb3g7CivjuKUgPCBob3VzZWhvbGRcLXJlZ2lzdGVyczsKK+O4oiA8IGNyb3NzXC1iZWFtXC1vZlwtYVwtYmVkOwor47ieIDwgYmxvY2tzXC1mb3JcLXByaW50aW5nOwor47iTIDwgdG9cLWhhdmVcLWRpc2FwcGVhcmVkOwor47iAIDwgYmxhY2tlbmVkXC13aXRoXC1zb290Owor47ekIDwgcm9zeVwtY2xvdWRzXC1vZlwtZGF3bjsKK+momeWPliA8IHRvXC1nYWluXC1ieVwtY2hlYXRpbmc7CivjsocgPCB0aGVcLXJhdHRsZVwtb2ZcLWRydW1zOwor47G+IDwgYVwta2luZFwtb2ZcLW9ybmFtZW50czsKK+OxuSA8IHRvXC1kaWVcLWZyb21cLWRpc2Vhc2U7CivjsasgPCBkZXN0cm95ZWRcLW9yXC1ydWluZWQ7CivjsaogPCBzdHVwaWRcLWFuZFwtY29uZnVzZWQ7CivjsYogPCBhc3RobWF0aWNcLWJyZWF0aGluZzsKK+OxiSA8IG1vdmluZ1wtb2ZcLXRoZVwtbW91dGg7CivjsLQgPCB0b1wtZ3JhdGVcLW9uXC10aGVcLWVhcjsKK+OwryA8IHRoZVwtd2F5XC1vZlwtc3BlYWtpbmc7Civot6/pgI/npL4gPCByZXV0ZXJzXC1uZXdzXC1hZ2VuY3k7CivmtrzniL0gPCBjb29sXC1hbmRcLXJlZnJlc2hpbmc7Civpu6jntYQgPCBsZWFkaW5nXC1wYXJ0eVwtZ3JvdXA7CivkvovlpJYgPCBcKG1ha2VcLWFuXClcLWV4Y2VwdGlvbjsKK+OrryA8IGluXC1jb250cmF2ZW50aW9uXC1vZjsKK+izh+a6kCA8IFwobmF0dXJhbFwpXC1yZXNvdXJjZXM7CivllYbmnIMgPCBjaGFtYmVyXC1vZlwtY29tbWVyY2U7CivotaTlrZcgPCBcKGZpbmFuY2lhbFwpXC1kZWZpY2l0Owor46mmIDwgdG9cLWxlYWRcLWJ5XC10aGVcLWhhbmQ7CivjqZggPCB0b1wtbW9vclwtdG9cLXRoZVwtYmFuazsKK+OonSA8IHRoZVwtdmVyeVwtaGFyZFwtc3R1ZmY7Civjp4UgPCB0b1wtdHVyblwtdXBzaWRlXC1kb3duOwor46aTIDwgZGlmZmljdWx0XC1pbnRlbnRpb247CivjpZ0gPCB0b1wtYXJvdXNlXC10b1wtYWN0aW9uOwor6Zi/5ouJ5be06aasIDwgYWxhYmFtYVwtXCh1XC5zXC5zdGF0ZVwpOwor46KKIDwgdG9cLXNldFwtc2lkZVwtYnlcLXNpZGU7CivjooIgPCBvZlwtaGlnaGx5XC1zdHJhdGVnaWM7Civpi7Dpm6LlrZDpm7vmsaAgPCBsaXRoaXVtXC1pb25cLWJhdHRlcnk7CivntYLpu57lnLDlnYAgPCBkZXN0aW5hdGlvblwtYWRkcmVzczsKK+OfsSA8IHNoYXBlXC1vZlwtYVwtbW91bnRhaW47Civjn5MgPCBsb2Z0eVwtYW5kXC1kYW5nZXJvdXM7Civjn5IgPCBtb3VudGFpbnNcLWFkam9pbmluZzsKK+S4puiBryA8IHBhcmFsbGVsXC1jb25uZWN0aW9uOwor45irIDwgdG9cLWZhbGxcLWludG9cLWFcLXdlbGw7CivosqHmupAgPCBmaW5hbmNpYWxcLXJlc291cmNlczsKK+OXtiA8IHRvXC1leHBlbFwtdGhlXC1icmVhdGg7Civnp5HlrbjpmaIgPCBhY2FkZW15XC1vZlwtc2NpZW5jZXM7CivjlqogPCBzb3VuZFwtb2ZcLXN1cnByaXNpbmc7CivjlLkgPCBhXC1zdXJwbHVzXC1vclwtZXhjZXNzOwor45O3IDwgdG9cLWN1dFwtb2ZmXC10aGVcLW5vc2U7CivjkoQgPCBicml0dGxlXC1hbmRcLWZyaWFibGU7CivjkoMgPCBjYXBpdGFsXC1mb3JtXC1vZlwtdHdvOwor6YeP6K6KIDwgcXVhbnRpdGF0aXZlXC1jaGFuZ2U7CivogJDnhakgPCBwYXRpZW50XC1cKGFkamVjdGl2ZVwpOwor5LiZ57a4IDwgcG9seXByb3B5bGVuZVwtZmlicmU7CivkuozljYHlha3omZ8gPCAyNnRoXC1kYXlcLW9mXC1hXC1tb250aDsKK+atpemAsuWItiA8IHN0ZXBcLWJ5XC1zdGVwXC1zeXN0ZW07CivliY3omIfoga8gPCBmb3JtZXJcLXNvdmlldFwtdW5pb247CivkuI3lnKjmhI8gPCBwYXlcLW5vXC1hdHRlbnRpb25cLXRvOwor5rG66K2wIDwgXChwYXNzXC1hXClcLXJlc29sdXRpb247CivpjK/lrZcgPCBpbmNvcnJlY3RcLWNoYXJhY3RlcjsKK+S4reWci+eVtuWxgCA8IGNoaW5lc2VcLWF1dGhvcml0aWVzOwor5Ly05ZSxIDwgdm9jYWxcLWFjY29tcGFuaW1lbnQ7CivorZjosqggPCB0b1wta25vd1wtd2hhdCcnc1wtd2hhdDsKK+eon+aApyA8IG5hdHVyYWxcLWRpc3Bvc2l0aW9uOwor6aCQ57+SIDwgdG9cLXByZXBhcmVcLWFcLWxlc3NvbjsKK+WQiOaDheWQiOeQhiA8IHJlYXNvbmFibGVcLWFuZFwtZmFpcjsKK+a1gea0viA8IHNjaG9vbFwtXChvZlwtdGhvdWdodFwpOwor55m+5L6d55m+6aCGIDwgZG9jaWxlXC1hbmRcLW9iZWRpZW50Owor5Y2K6Ieq6ICV6L6yIDwgc2VtaVwtdGVuYW50XC1wZWFzYW50Owor5ZOA5oaQIDwgZmVlbFwtY29tcGFzc2lvblwtZm9yOwor5Y+N5b2I5bCO5b2IIDwgYW50aW1pc3NpbGVcLW1pc3NpbGU7CivosqHlr7YgPCBtb25leVwtYW5kXC12YWx1YWJsZXM7CivnlJ/nlKLoqK3mlr0gPCBwcm9kdWN0aW9uXC1mYWNpbGl0eTsKK+iRoeiQhOeJmeS6uiA8IHBvcnR1Z3Vlc2VcLVwocGVyc29uXCk7CivkuovlrpwgPCBcKG1ha2VcKVwtYXJyYW5nZW1lbnRzOwor5pWX6aGeIDwgc2N1bVwtb2ZcLWFcLWNvbW11bml0eTsKK+S4jee1leWmgue4tyA8IGhhbmdpbmdcLWJ5XC1hXC10aHJlYWQ7Civml5fooo0gPCBjaGluZXNlXC1zdHlsZVwtZHJlc3M7CivplbfmnJ/nqanlrprmgKcgPCBsb25nXC10ZXJtXC1zdGFiaWxpdHk7CivmioDooZPnn6XorZggPCB0ZWNobmljYWxcLWtub3dsZWRnZTsKK+W+kOihjCA8IHdhbGtcLXNsb3dseVwsXC1zdHJvbGw7Civol4/ml48gPCB0aWJldGFuXC1uYXRpb25hbGl0eTsKK+aok+Wuh+iHquWLleWMliA8IGJ1aWxkaW5nXC1hdXRvbWF0aW9uOwor5aSW5a2r5aWzIDwgZGF1Z2h0ZXInJ3NcLWRhdWdodGVyOwor5Yaw6YaL6YW4IDwgZ2xhY2lhbFwtYWNldGljXC1hY2lkOwor576O5ZyL6LuN5Lq6IDwgYW1lcmljYW5cLXNlcnZpY2VtYW47CivpmL/mr5Topb/lsLzkup7kurogPCBhYnlzc2luaWFuXC1cKHBlcnNvblwpOwor5raI54KO6JelIDwgYW50aWJpb3RpY1wtbWVkaWNpbmU7CivnhafpoacgPCB0YWtlXC1cKGdvb2RcKVwtY2FyZVwtb2Y7Civlp5Tlk6HplbcgPCBoZWFkXC1vZlwtYVwtY29tbWl0dGVlOwor6KaW56qX5Yqg6YCf5ZmoIDwgd2luZG93c1wtYWNjZWxhcmF0b3I7CivorpPmraUgPCBcKG1ha2VcLWFcKVwtY29uY2Vzc2lvbjsKK+mCiumBoCA8IGZhclwtZnJvbVwtdGhlXC1jZW50ZXI7Civoj6/niL7ooZfml6XloLEgPCB3YWxsXC1zdHJlZXRcLWpvdXJuYWw7Civmk7rpl4ogPCBwYXJhZGVcLW9uZScnc1wtd2VhbHRoOwor5oOF5aCx5bGAIDwgaW50ZWxsaWdlbmNlXC1hZ2VuY3k7CivmmbTmnJcgPCBzdW5ueVwtYW5kXC1jbG91ZGxlc3M7CivmgrLlo68gPCBzb2xlbW5cLWFuZFwtc3RpcnJpbmc7CivlnIvpmpvosr/mmJMgPCBpbnRlcm5hdGlvbmFsXC10cmFkZTsKK+e9t+W4giA8IHNob3BrZWVwZXInJ3NcLXN0cmlrZTsKK+S4jeWmqCA8IHRoZXJlXC1pc1wtbm9cLWhhcm1cLWluOwor5Lq66YCg6Kqe6KiAIDwgYXJ0aWZpY2lhbFwtbGFuZ3VhZ2U7Civkup7lpKrntpPlkIjntYTnuZQgPCBhcGVjXC1cKG9yZ2FuaXphdGlvblwpOwor5Li55Y+DIDwgc2FsdmlhXC1taWx0aW9ycmhpemE7Civpm7bokL0gPCB3aXRoZXJlZFwtYW5kXC1mYWxsZW47CivljIXouqvlt6UgPCBpbmRlbnR1cmVkXC1sYWJvdXJlcjsKK+W+l+efpSA8IFwoZmluZFwtb3V0XC1hbmRcKVwta25vdzsKK+iuiuaVhSA8IGFuXC11bmZvcmVzZWVuXC1ldmVudDsKK+S4jeaVl+S5i+WcsCA8IGludmluY2libGVcLXBvc2l0aW9uOwor5oGQ5oCVIDwgXChpJydtXClcLWFmcmFpZFwtXCh0aGF0XCk7Civoh6rouqvliKnnm4ogPCBvbmUnJ3NcLW93blwtaW50ZXJlc3RzOwor5bug6KaPIDwgZmFjdG9yeVwtcmVndWxhdGlvbnM7CivpoJDlrpogPCBzY2hlZHVsZVwtaW5cLWFkdmFuY2U7CivkuI3lh6EgPCBvdXRcLW9mXC10aGVcLW9yZGluYXJ5Owor56u254it55Si5ZOBIDwgY29tcGV0aXRpdmVcLXByb2R1Y3Q7CivmlZfnuL4gPCBiZVwtdXR0ZXJseVwtZGVmZWF0ZWQ7CivmmrTliKkgPCBzdWRkZW5cLWh1Z2VcLXByb2ZpdHM7CivpnZ7moLjlnIvlrrYgPCBub25cLW51Y2xlYXJcLWNvdW50cnk7CivnvarlkI0gPCBhXC1cKGNyaW1pbmFsXClcLWNoYXJnZTsKK+S4jeS5jyA8IHRoZXJlXC1pc1wtbm9cLWxhY2tcLW9mOwor5ZCI5ZCMIDwgXChidXNpbmVzc1wpXC1jb250cmFjdDsKK+WMl+S6rOS6uiA8IHBlcnNvblwtZnJvbVwtYmVpamluZzsKK+awo+WAmeeLgOazgSA8IGNsaW1hdGljXC1jb25kaXRpb25zOwor546WIDwgYmxhY2tcLWNvbG9yZWRcLWphZGU7Civlk6ogPCB3aGljaFw/XC13aGVyZVw/XC1ob3dcPzsKK+eJsiA8IHNhY3JpZmljaWFsXC1hbmltYWw7CivmvKIgPCB0aGVcLWNoaW5lc2VcLXBlb3BsZTsKK+a8lSA8IHRyYW5zcG9ydFwtYnlcLXdhdGVyOwor6Zi0IDwgJydmZW1hbGUnJ1wtcHJpbmNpcGxlOwor5LuZIDwgdGFvaXN0XC1zdXBlclwtYmVpbmc7CivpqbsgPCB0b1wtYmVcLXN0YXRpb25lZFwtYXQ7Civoha4gPCBsb3dlclwtcGFydFwtb2ZcLWZhY2U7Civmi5IgPCB3YXJkXC1vZmZcLXdpdGhcLWhhbmQ7CivmoYIgPCBjYXNzaWFcLW9yXC1jaW5uYW1vbjsKK+actSA8IGNsdXN0ZXJcLW9mXC1mbG93ZXJzOwor5pu5IDwgbWluaXN0cnlcLW9mZmljaWFsczsKK+e9jiA8IGFuXC1lYXJ0aGVud2FyZVwtamFyOwor5Li4IDwgc21hbGxcLXJvdW5kXC1vYmplY3Q7Civnn6kgPCBjYXJwZW50ZXInJ3NcLXNxdWFyZTsKK+iFiiA8IHllYXJcLWVuZFwtc2FjcmlmaWNlOwor6b6fIDwgdHVydGxlXC1vclwtdG9ydG9pc2U7CivpgrggPCBvZmZpY2lhbFwtcmVzaWRlbmNlOwor5L6DIDwgdXByaWdodFwtYW5kXC1zdHJvbmc7CivpgoIgPCB1bmV4cGVjdGVkXC1tZWV0aW5nOwor5oCvIDwgbGFja2luZ1wtaW5cLWNvdXJhZ2U7CivnlLggPCBzdWJ1cmJzXC1vZlwtY2FwaXRhbDsKK+aNniA8IHNjb29wXC1vdXRcLW9mXC13YXRlcjsKK+aJmyA8IGNhcnJ5XC1vblwtc2hvdWxkZXJzOwor6JmUIDwgYWN0XC13aXRoXC1yZXZlcmVuY2U7CivpnJYgPCBsb25nXC1zcGVsbFwtb2ZcLXJhaW47Civpn6cgPCBzdHJvbmdcLWFuZFwtcGxpYWJsZTsKK+eRviA8IGJyaWxsaWFuY2VcLW9mXC1nZW1zOwor5qGUIDwgY2hpbmVzZVwtYmVsbGZsb3dlcjsKK+m4syA8IG1hbGVcLW1hbmRhcmluXC1kdWNrOwor6ZKXIDwgb3JuYW1lbnRhbFwtaGFpcnBpbjsKK+W3hSA8IHN1bW1pdFwtb2ZcLW1vdW50YWluOwor5qioIDwgb3NtYW50aHVzXC1mcmFncmFuczsKK+igoSA8IHdvb2RcLWJvcmluZ1wtaW5zZWN0Owor6LmCIDwgdHJhbXBsZVwtdW5kZXJcLWZvb3Q7CivpqqUgPCB0aG9yb3VnaGJyZWRcLWhvcnNlOwor5ZSBIDwgZXhwcmVzc1wtY29uZG9sZW5jZTsKK+mqhSA8IGFuXC1leGNlbGxlbnRcLWhvcnNlOwor56KJIDwgcm9vbVwtbWFkZVwtb2ZcLXN0b25lOwor55afIDwgaW50ZXJtaXR0ZW50XC1mZXZlcjsKK+e6oyA8IG5hbWVcLW9mXC1hblwtZW1wZXJvcjsKK+ejrCA8IG11c2ljYWxcLWluc3RydW1lbnQ7CivniL8gPCBoYWxmXC1vZlwtdHJlZVwtdHJ1bms7Civml44gPCBmbHV0dGVyaW5nXC1vZlwtZmxhZzsKK+WklCA8IG9uZVwtbGVnZ2VkXC1tb25zdGVyOwor5q6NIDwgdG9cLXN0YXJ2ZVwtdG9cLWRlYXRoOwor6aqKIDwgYVwtcHVyZVwtYmxhY2tcLWhvcnNlOwor5rmOIDwgZmx1c2hlZFwtd2l0aFwtZHJpbms7CivllrUgPCB0aGVcLW1ld1wtb2ZcLXRoZVwtY2F0Owor54SZIDwgZHJ5XC1vdmVyXC1zbG93XC1maXJlOwor57u+IDwgdG9cLXN0cmluZ1wtdG9nZXRoZXI7CivnnKYgPCBjb3JuZXJcLW9mXC10aGVcLWV5ZXM7CivnkYEgPCBmaW5lXC1waWVjZVwtb2ZcLWphZGU7CivnsrMgPCBub25cLWdsdXRpbm91c1wtcmljZTsKK+mkriA8IGFcLWxlZ2VuZGFyeVwtYW5pbWFsOwor5rGKIDwgYVwtYnJhbmNoaW5nXC1zdHJlYW07CivnvIMgPCBsaWdodFwteWVsbG93XC1jb2xvcjsKK+aqqSA8IHRoZVwtYm9sZVwtb2ZcLWFcLXRyZWU7CivlpYEgPCBsYWR5JydzXC12YW5pdHlcLWNhc2U7CivmpbggPCBtYWxsb3R1c1wtamFwb25pY3VzOwor6aq6IDwgdGlwXC1vZlwtYVwtbG9uZ1wtYm9uZTsKK+iXvyA8IGxvcGhhbnRodXNcLXJ1Z29zdXM7CivmqL4gPCB0aGVcLXNoYWRlXC1vZlwtdHJlZXM7CivphaQgPCB0b1wtZGVhbFwtaW5cLXNwaXJpdHM7Civoh4wgPCBkcm9wc2ljYWxcLXN3ZWxsaW5nOwor6LerIDwgc291bmRcLW9mXC1mb290c3RlcHM7Civntq4gPCBlbWJyb2lkZXJlZFwtYmFubmVyOwor6KezIDwgYW5cLWFuY2llbnRcLW1lYXN1cmU7CivmnYwgPCB0aGVcLXN0dW1wXC1mXC1hXC10cmVlOwor5bWrIDwgYVwtaGlsbFwtaW5cLXNoYW50dW5nOwor5pOXIDwgdG9cLWJlYXRcLXRoZVwtYnJlYXN0Owor6ISUIDwgc21hbGxcLWx1bXBcLW9mXC1tZWF0Owor6YaFIDwgdW5zdHJhaW5lZFwtc3Bpcml0czsKK+e+sCA8IGNhcmJvbnlsXC1cKHJhZGljYWxcKTsKK+ibuCA8IGxvbmdcLWxlZ2dlZFwtc3BpZGVyOwor556AIDwgdG9cLWxvb2tcLWF0XC1jbG9zZWx5Owor5q6zIDwgbmFtZVwtb2ZcLW9sZFwtd2VhcG9uOwor5bSeIDwgbW91bnRhaW5cLWluXC1zaGFueGk7CivlnrIgPCBoaWdoXC1hbmRcLWRyeVwtcGxhY2U7Civomb8gPCBhXC1raW5kXC1vZlwtc2NvcnBpb247CivnlrMgPCBjaGlsZGhvb2RcLWRpc2Vhc2VzOwor572+IDwgYVwtbGFyZ2VcLXNxdWFyZVwtbmV0Owor542sIDwgYVwtZmFidWxvdXNcLW1vbnN0ZXI7CivosqDosqzku7sgPCByZXNwb25zaWJpbGl0eVwtZm9yOwor5bmr6L6mIDwgYXNzaXN0XC1pblwtbWFuYWdpbmc7Civphazmh4kgPCBzb2NpYWxcLWludGVyYWN0aW9uOwor54Sh6KuWIDwgbm9cLW1hdHRlclwtd2hhdFx8aG93Owor5Y6f5a6aIDwgb3JpZ2luYWxseVwtcGxhbm5lZDsKK+mAmuihjCA8IGxpY2VuY2VcLVwoY29tcHV0ZXJcKTsKK+eSsOW9oue1kOaniyA8IHJpbmdcLWNvbmZpZ3VyYXRpb247Civlj7jku6QgPCBjb21tYW5kaW5nXC1vZmZpY2VyOwor57O+6ZuGIDwgdG9cLWdhdGhlclwtdG9nZXRoZXI7CivpgIHooYwgPCB0b1wtc2VlXC1zb21lb25lXC1vZmY7Civopb/nj63niZnoqp4gPCBzcGFuaXNoXC1cKGxhbmd1YWdlXCk7CivpgZXntIQgPCB0b1wtYnJlYWtcLWFcLXByb21pc2U7CivljbHlsYAgPCBwZXJpbG91c1wtc2l0dWF0aW9uOwor5LiA6Iis5L6G6KqqIDwgZ2VuZXJhbGx5XC1zcGVha2luZzsKK+i7n+S7tumWi+eZvOS6uuWToSA8IHNvZnR3YXJlXC1kZXZlbG9wZXI7CivmkqXomZ8gPCBkaWFsXC1cKGFcLXRlbGVwaG9uZVwpOwor5ZyL5rCR6buo6LuN6ZqKIDwgbmF0aW9uYWxpc3RcLWZvcmNlczsKK+mmluiFpuacg+aZpCA8IGxlYWRlcnNoaXBcLW1lZXRpbmc7Civororkv64gPCBiZWNvbWVcLXJldmlzaW9uaXN0Owor6YGV56ugIDwgdG9cLWJyZWFrXC10aGVcLXJ1bGVzOwor6YeN6KaB5ZWP6aGMIDwgYW5cLWltcG9ydGFudFwtaXNzdWU7CivntrLnrqEgPCBuZXR3b3JrXC1tYW5hZ2VtZW50Owor6JKZ5paHIDwgbW9uZ29saWFuXC1sYW5ndWFnZTsKK+aAp+S6pCA8IHNleHVhbFwtaW50ZXJjb3Vyc2U7CivkuK3lsbHoo50gPCBjaGluZXNlXC10dW5pY1wtc3VpdDsKK+e3rOeUuOiqniA8IGJ1cm1lc2VcLVwobGFuZ3VhZ2VcKTsKK+aUv+ayu+eKryA8IHBvbGl0aWNhbFwtcHJpc29uZXI7CivlubTku6XkvoYgPCBzaW5jZVwtdGhlXC15ZWFyXC1cLlwuXC47CivmlrDoj6/npL4gPCB4aW5odWFcLW5ld3NcLWFnZW5jeTsKK+S4jeS4reeUqCA8IHVuZml0XC1mb3JcLWFueXRoaW5nOwor5LiA5bCP5pmC5Lul5b6MIDwgYVwtc2hvcnRcLXRpbWVcLWxhdGVyOwor6aCY5YWI5Zyw5L2NIDwgbGVhZFwoaW5nXClcLXBvc2l0aW9uOwor6YCy5LiA5q2lIDwgXChvbmVcLXN0ZXBcKVwtZnVydGhlcjsKK+eJqeWDuSA8IFwoY29tbW9kaXR5XClcLXByaWNlczsKK+S/oeaBr+ezu+e1sSA8IGluZm9ybWF0aW9uXC1zeXN0ZW07CivlvozlpKkgPCBkYXlcLWFmdGVyXC10b21vcnJvdzsKK+aPkOS+m+WVhiA8IHByb3ZpZGVyXC1cKGNvbXBhbnlcKTsKK+WkquW5syA8IHBlYWNlXC1hbmRcLXNlY3VyaXR5Owor55+a5pybIDwgdG9cLWxvb2tcLWZvcndhcmRcLXRvOwor5Y2U5YqpIDwgcHJvdmlkZVwtYXNzaXN0YW5jZTsKK+aOoemiqCA8IGNvbGxlY3RcLWZvbGtcLXNvbmdzOwor56iu5peP5riF5rSXIDwgXCJldGhuaWNcLWNsZWFuc2luZ1wiOwor5o+P6YeRIDwgdG9cLW91dGxpbmVcLWluXC1nb2xkOwor5Yqp5pWZIDwgdGVhY2hpbmdcLWFzc2lzdGFudDsKK+Wkq+WppiA8IGFcLVwobWFycmllZFwpXC1jb3VwbGU7CivkuZLkuZPnkIPmqq8gPCB0YWJsZVwtdGVubmlzXC10YWJsZTsKK+iLseiqniA8IGVuZ2xpc2hcLVwobGFuZ3VhZ2VcKTsKK+mBi+awoyA8IGx1Y2tcLVwoZ29vZFwtb3JcLWJhZFwpOwor6Z2e5bi45Zq05Y6yIDwgdG9cLXB1bmlzaFwtc2V2ZXJlbHk7Civljp/omIfoga8gPCBmb21lclwtc292aWV0XC11bmlvbjsKK+aOoemMhCA8IGNvbGxlY3RcLWFuZFwtcmVjb3JkOwor54aK5o6MIDwgYmVhclwtcGF3XC1cKGFzXC1mb29kXCk7Civlhafpg6jntZDmp4sgPCBpbnRlcm5hbFwtc3RydWN1dHJlOwor5paw5YW1IDwgbmV3XC1cKGFybXlcKVwtcmVjcnVpdDsKK+aVuOaTmumAmuS/oSA8IGRhdGFcLWNvbW11bmljYXRpb247CivlpKnlronploAgPCB0aWFuYW5tZW5cLVwoc3F1YXJlXCk7CivpnZ7luLjmhJ/orJ0gPCBleHRyZW1lbHlcLWdyYXRlZnVsOwor6b6WIDwgZmxpZ2h0XC1vZlwtYVwtZHJhZ29uOwor5paD5ZG9IDwgbWVldFwtdmlvbGVudFwtZGVhdGg7CivpuJwgPCBhXC1zcGVjaWVzXC1vZlwtbXluYWg7Civpt70gPCBvcmllbnRhbFwtYnVsbGZpbmNoOwor5YWL6ZqG5oqA6KGTIDwgY2xvbmluZ1wtdGVjaG5vbG9neTsKK+mbu+WtkOe2sue1oSA8IGVsZWN0cm9uaWNcLW5ldHdvcms7CivptJcgPCBhbGNlZG9cLWJlbmdhbGVuc2lzOwor6bG1IDwgaHlwb3JoYW1wdXNcLXNhanVyaTsKK+WkseS6iyA8IFwoaGF2ZVwtYW5cKVwtYWNjaWRlbnQ7CivkuI3lj5fnkIYgPCByZWplY3RcLWFcLWNvbXBsYWludDsKK+msoCA8IHRvXC1tYWtlXC1hXC10b3BcLWtub3Q7CivnmbzpgZTlnIsgPCBkZXZlbG9waW5nXC1jb3VudHJ5Owor55m96bq15pu455SfIDwgcGFsZVwtZmFjZWRcLXNjaG9sYXI7Civot5HorabloLEgPCB0b1wtcnVuXC1mb3JcLXNoZWx0ZXI7CivppLwgPCBzYWNyaWZpY2lhbFwtdmljdGltOwor6Zu75L+hIDwgdGVsZWNvbW11bmljYXRpb25zOwor5o2o6LqrIDwgdG9cLWdpdmVcLW9uZScnc1wtbGlmZTsKK+mglCA8IGdvb2RcLWFuZFwtYmVhdXRpZnVsOwor6Iqd6JitIDwgaXJpc2VzXC1hbmRcLW9yY2hpZHM7CivosqHli5nou5/ku7YgPCBmaW5hbmNpYWxcLXNvZnR3YXJlOwor5pS55Y+jIDwgdG9cLWNvcnJlY3RcLW9uZXNlbGY7Civnmb3plovmsLQgPCBwbGFpblwtYm9pbGVkXC13YXRlcjsKK+aUv+WLmSA8IGdvdmVybm1lbnRcLWFmZmFpcnM7Civlhafnp5EgPCBtZWRpY2FsXC1kZXBhcnRtZW50Owor5YWD57SgIDwgXChjaGVtaWNhbFwpXC1lbGVtZW50Owor5Yqg5YWlIDwgdG9cLWJlY29tZVwtYVwtbWVtYmVyOwor5oub5b6F5pyDIDwgXChwcmVzc1wpXC1jb25mZXJlbmNlOwor6YG45Y2AIDwgZWxlY3RvcmFsXC1kaXN0cmljdDsKK+mHkiA8IGthbmd4aVwtcmFkaWNhbFwtMTY3Owor6YSuIDwgYW5jaWVudFwtcGxhY2VcLW5hbWU7CivlnJ/okZcgPCBuYXRpdmVcLFwtYWJvcmlnaW5hbDsKK+aHt+S/hOaYjiA8IHd5b21pbmdcLVwodXNcLXN0YXRlXCk7CivljaHmi4nlpYcgPCBrYXJhY2hpXC1cKHBha2lzdGFuXCk7Civmk43lroggPCBwZXJzb25hbFwtaW50ZWdyaXR5Owor6L2ZIDwgcmluZ3NcLW9uXC10aGVcLXlva2VzOwor5YKy6KaWIDwgdHVyblwtdXBcLW9uZScnc1wtbm9zZTsKK+i7sCA8IGFcLXJvd1wtb2ZcLWNhcnJpYWdlczsKK+WNiuimj+euoSA8IHNlbWljaXJjdWxhclwtY2FuYWw7Civppqzkvoboqp4gPCBtYWxheXNpYW5cLWxhbmd1YWdlOwor5Y+k5YW46Kqe6KiAIDwgY2xhc3NpY2FsXC1sYW5ndWFnZTsKK+iwvSA8IGFcLW1vdXRoXC1vclwtb3BlbmluZzsKK+iOq+WmgiA8IGl0XC13b3VsZFwtYmVcLWJldHRlcjsKK+e1kOW4syA8IHRvXC1zZXR0bGVcLWFjY291bnRzOwor5Zub6JmVIDwgYWxsXC1vdmVyXC10aGVcLXBsYWNlOwor5q+U5LiN5LiKIDwgY2FuJyd0XC1jb21wYXJlXC13aXRoOwor57ay6Lev6YCj5o6l5bGkIDwgbmV0d29ya1wtbGlua1wtbGF5ZXI7CivoqIEgPCBrYW5neGlcLXJhZGljYWxcLTE0OTsKK+iltSA8IGFcLXBsZWF0XC1pblwtYVwtc2tpcnQ7CivopLAgPCBsaWZ0XC11cFwtdGhlXC1za2lydHM7CivlnabnjocgPCBmcmFua1wtXChkaXNjdXNzaW9uXCk7CivpgYvkvZwgPCB0aHJlYWRcLVwoY29tcHV0aW5nXCk7CivlpJrnsbPlsLzliqDlhbHlkozlnIsgPCBkb21pbmljYW5cLXJlcHVibGljOwor6YCx5YiKIDwgd2Vla2x5XC1wdWJsaWNhdGlvbjsKK+iauSA8IGV1bG90YVwtcGVsaW9tcGhhbGE7CivolrcgPCBlbHNob3RyaWFcLXBhbHRyaW5pOwor5L+d6aeVIDwgZXNjb3J0XC10aGVcLWVtcGVyb3I7CivolbogPCBob3V0dHV5bmlhXC1jb3JkYXRhOwor6JO0IDwgZWRpYmxlXC13YXRlclwtcGxhbnQ7CivlhanlgIvkuK3lnIsgPCB0d29cLWNoaW5hXC1cKHBvbGljeVwpOwor6JG0IDwgcGh5c2FsaXNcLWFsa2VrZW5naTsKK+WFseaciSA8IHRvXC1oYXZlXC1hbHRvZ2V0aGVyOwor5aCx5ZacIDwgYW5ub3VuY2VcLWdvb2RcLW5ld3M7Civot5Hpm7sgPCBlbGVjdHJpY2FsXC1sZWFrYWdlOwor6I2FIDwgYW5zd2VyXDpcLXNtYWxsXC1iZWFuOwor6IyWIDwgYWxsaXVtXC12aWN0b3JpYWxpczsKK+Wci+mYsumDqCA8IGRlZmVuc2VcLWRlcGFydG1lbnQ7CivoiqMgPCBtZWRpY2luYWxcLXBsYW50YWdvOwor5pKl5Yi6IDwgc3BsYXNoXC1cKG9mXC1hXC1maXNoXCk7Civmi5zoposgPCBwYXlcLWFcLWZvcm1hbFwtdmlzaXQ7CivlpJbkvobmipXos4cgPCBmb3JlaWduXC1pbnZlc3RtZW50Owor6LaV5LiN5LiKIDwgY2FuJyd0XC1rZWVwXC11cFwtd2l0aDsKK+e/ryA8IGdsaXN0ZW5pbmdcLXBsdW1hZ2U7Civnv5YgPCBrc2NcLWV4dGVuc2lvblwtMzEwODsKK+WIneS4rSA8IGp1bmlvclwtaGlnaFwtc2Nob29sOwor576nIDwgY2FyYm94eWxcLVwocmFkaWNhbFwpOwor5Zyf6ICz5YW26KqeIDwgdHVya2lzaFwtXChsYW5ndWFnZVwpOwor5LiN5q2j5LmL6aKoIDwgdW5oZWFsdGh5XC10ZW5kZW5jeTsKK+aKhOmBkyA8IHRvXC10YWtlXC1hXC1zaG9ydGN1dDsKK+a8lOiqqiA8IFwoZGVsaXZlclwtYVwpXC1zcGVlY2g7CivopoHlnLAgPCBzdHJhdGVnaWNcLWxvY2F0aW9uOwor6L6m5aCxIDwgdG9cLXJ1blwtYVwtbmV3c3BhcGVyOwor6ZuG5oiQ6Zu76LevIDwgaW50ZWdyYXRlZFwtY2lyY3VpdDsKK+ezkiA8IGZvb2RcLWZvclwtYVwtam91cm5leTsKK+WHuuS7uyA8IHN0YXJ0XC1pblwtYVwtbmV3XC1qb2I7Civplonpl5zmlL/nrZYgPCBjbG9zZWRcLWRvb3JcLXBvbGljeTsKK+WFp+aDhSA8IGluc2lkZVwtaW5mb3JtYXRpb247Civmi7/kuLvmhI8gPCB0b1wtbWFrZVwtYVwtZGVjaXNpb247CivntrLntaHmioDooZMgPCBuZXR3b3JrXC10ZWNobm9sb2d5Owor5bi45aeU5pyDIDwgc3RhbmRpbmdcLWNvbW1pdHRlZTsKK+S4reWci+aUv+W6nCA8IGNoaW5lc2VcLWdvdmVybm1lbnQ7CivplovlsZUgPCBcKGJlZ2luXC10b1wpXC1kZXZlbG9wOwor5Luk54mM55Kw57ayIDwgdG9rZW5cLXJpbmdcLW5ldHdvcms7CivnmqogPCBsdXN0ZXJcLVwob2ZcLXBlYXJsc1wpOwor5aSn5piO6byO6byOIDwgYVwtZ3JhbmRcLXJlcHV0YXRpb247Civnl5wgPCBhXC1zY2FiYnlcLWJhbGRcLWhlYWQ7CivlpKflrbjnlJ8gPCB1bml2ZXJzaXR5XC1zdHVkZW50Owor55S/IDwgZmFybWluZ1wtcG9wdWxhdGlvbjsKK+iyv+aYk+e1hOe5lCA8IHRyYWRlXC1vcmdhbml6YXRpb247CivnlIsgPCBhXC1qYXJcLXdpdGhvdXRcLWVhcnM7CivnkKQgPCBqYWRlXC1vZlwtamFkZVwtYmVpbmc7CivnjpggPCBjb3VydFwtZHJlc3NcLWpld2VsczsKK+mBjeWcsOmWi+iKsSA8IGJsb3Nzb21cLWV2ZXJ5d2hlcmU7CivnjbMgPCBmaWVyY2VcLWRvZ1wtbG9va2luZzsKK+S/hOiqniA8IHJ1c3NpYW5cLVwobGFuZ3VhZ2VcKTsKK+WxseiFsyA8IGZvb3RcLW9mXC1hXC1tb3VudGFpbjsKK+eFjSA8IHRvXC1jb2xvdXJcLWJ5XC1zbW9rZTsKK+mrmOmAn+e2sue1oSA8IGhpZ2hcLXNwZWVkXC1uZXR3b3JrOwor54GlIDwgYVwtZ3JvdXBcLW9mXC1zcHJpbmdzOwor5bq35aWI54i+5aSn5a24IDwgY29ybmVsbFwtdW5pdmVyc2l0eTsKK+WFrOWPuCA8IFwoYnVzaW5lc3NcKVwtY29tcGFueTsKK+aLieelqCA8IGNhbXBhaWduXC1mb3JcLXZvdGVzOwor5omL6KGTIDwgc3VyZ2ljYWxcLW9wZXJhdGlvbjsKK+WFq+WNpiA8IHRoZVwtZWlnaHRcLWRpYWdyYW1zOwor54CP6Ka95ZmoIDwgYnJvd3NlclwtXChzb2Z0d2FyZVwpOwor6auU5rqrIDwgXChib2R5XClcLXRlbXBlcmF0dXJlOwor5pu46Z2i6Kix5Y+vIDwgd3JpdHRlblwtcGVybWlzc2lvbjsKK+azsiA8IGtpbmRcLW9mXC13aGl0ZVwtd2luZTsKK+S4lue0gOacqyA8IGVuZFwtb2ZcLXRoZVwtY2VudHVyeTsKK+awjSA8IGZpbmVcLXdvb2xsZW5cLWNsb3RoOwor5ryC56e7IDwgZHJpZnRcLVwoZWxlY3RyaWNhbFwpOwor6IGv5ZCI5YWs5aCxIDwgam9pbnRcLWFubm91bmNlbWVudDsKK+eglOeptuapn+aniyA8IHJlc2VhcmNoXC1pbnN0aXR1dGU7CivkvZvomK3oipLoqp4gPCBmbGVtaXNoXC1cKGxhbmd1YWdlXCk7CivlgZzmu68gPCBiZVwtYXRcLWFcLXN0YW5kc3RpbGw7CivlnIvmnIPorbDlk6EgPCBtZW1iZXJcLW9mXC1jb25ncmVzczsKK+acgOi/keW5vuW5tCA8IHRoZVwtbGFzdFwtZmV3XC15ZWFyczsKK+eyvuewoemWi+aUryA8IHRvXC1yZWR1Y2VcLXNwZW5kaW5nOwor5p+6IDwgYW5cLW9sZFwtbWFuJydzXC1zdGFmZjsKK+aduyA8IGxpZ3VzdHJ1bVwtc2luZW5lc2U7CivmnZkgPCBhXC10aW55XC13b29kZW5cLXBvc3Q7CivkuI3nva7lj6/lkKYgPCBkZWNsaW5lXC10b1wtY29tbWVudDsKK+i7jeWumCA8IFwobWlsaXRhcnlcKVwtb2ZmaWNlcjsKK+aYtyA8IHRvXC1mZWVkXC1hXC1wcmlzb25lcjsKK+aXvCA8IGdlbnRsZVwtYW5kXC1hZmZhYmxlOwor5aGe54i+57at5Lqe6KqeIDwgc2VyYmlhblwtXChsYW5ndWFnZVwpOwor5pOtIDwgdHJhcFwtY2F0Y2hcLWFuaW1hbHM7CivkuInop5LohbnluLYgPCBhdGhsZXRpY1wtc3VwcG9ydGVyOwor562G55u0IDwgcGVyZmVjdGx5XC1zdHJhaWdodDsKK+eUoueUnyA8IHRvXC1jb21lXC1pbnRvXC1iZWluZzsKK+mnkOiPryA8IHN0YXRpb25lZFwtaW5cLWNoaW5hOwor5pav55Om5biM6KOh6KqeIDwgc3dhaGlsaVwtXChsYW5ndWFnZVwpOwor5o6I5Y+XIDwgdG9cLWdpdmVcLWFuZFwtYWNjZXB0Owor55ar5oOFIDwgZXBpZGVtaWNcLXNpdHVhdGlvbjsKK+a3semAoCA8IGFkdmFuY2VkXC1cKHN0dWRpZXNcKTsKK+ihm+eUn+ioreWCmSA8IHNhbml0YXJ5XC1lcXVpcG1lbnQ7CivpgKDmiJDllY/poYwgPCB0b1wtY3JlYXRlXC1hblwtaXNzdWU7CivlvYQgPCBub2NrXC1hdFwtZW5kXC1vZlwtYm93Owor5o2o5ZG9IDwgdG9cLXJpc2tcLW9uZScnc1wtbGlmZTsKK+aTgeitt+iAhSA8IHN1cHBvcnRlclwtXChwZXJzb25cKTsKK+Wci+WLmeWNvyA8IHNlY3JldGFyeVwtb2ZcLXN0YXRlOwor5baoIDwgYmlnXC1yb2NreVwtbW91bnRhaW47Civoo4HkuKYgPCBjdXRcLWRvd25cLWFuZFwtbWVyZ2U7CivltZYgPCBuYW1lXC1vZlwtYVwtbW91bnRhaW47Civkvb/nr4AgPCBcKGRpcGxvbWF0aWNcKVwtZW52b3k7CivlnIvlrrbmqJnmupbnorwgPCBnYlwtXChndW9cLWJpYW9cKVwtY29kZTsKK+WNiui8qeWtkCA8IGhhbGZcLW9mXC1hXC1saWZldGltZTsKK+acrOWIneWtkOWNiOe3miA8IHRoZVwtZmlyc3RcLW1lcmlkaWFuOwor5a625bqt5raI6LK76ICFIDwgaG91c2Vob2xkXC1jb25zdW1lcjsKK+WjnCA8IGVhcnRoZW5cLWphclwtb3JcLWp1ZzsKK+iHs+WwkSA8IFwodG9cLXNheVwtdGhlXClcLWxlYXN0Owor5aKQIDwgdG9cLWJ1aWxkXC13aXRoXC1zb2lsOwor56uZ566h55CGIDwgc3RhdGlvblwtbWFuYWdlbWVudDsKK+iyt+izoyA8IGJ1eWluZ1wtYW5kXC1zZWxsaW5nOwor5ZmLIDwgdG9cLXN3YWxsb3dcLWhhc3RpbHk7CivmuKznuaogPCB0b1wtc3VydmV5XC1hbmRcLWRyYXc7Civog4zntIQgPCBicmVha1wtYW5cLWFncmVlbWVudDsKK+iJsuaDheWwj+iqqiA8IHBvcm5vZ3JhcGhpY1wtbm92ZWw7Civlk7AgPCBpbmNvaGVyZW50XC1jaGF0dGVyOwor6Iqs6Jit6KqeIDwgZmlubmlzaFwtXChsYW5ndWFnZVwpOwor6LK05aaD6YaJ6YWSIDwgdGhlXC1kcnVua2VuXC1iZWF1dHk7Civororms5XlhZIgPCB0cnlcLWRpZmZlcmVudFwtd2F5czsKK+a1t+epuui7jSA8IG5hdnlcLWFuZFwtYWlyXC1mb3JjZTsKK+mbu+WtkOS/oeeusSA8IGVsZWN0cm9uaWNcLW1haWxib3g7Civot6/lvpEgPCByb3V0ZVwtXChuZXR3b3JraW5nXCk7CivkvbcgPCB0b1wtYWN0XC1jb250cmFyeVwtdG87CivoiInkvosgPCB0b1wtZ2l2ZVwtYW5cLWV4YW1wbGU7CivmkpLlk4jmi4nku6XljZfpnZ7mtLIgPCBzdWJcLXNhaGFyYW5cLWFmcmljYTsKK+S5kSA8IHN0YW5kXC1zaWRlXC1ieVwtc2lkZTsKK+aJjeaZuiA8IGFiaWxpdHlcLWFuZFwtd2lzZG9tOwor5LajIDwgdG9cLWdyaW5kXC10aGVcLXRlZXRoOwor5LafIDwgdG9cLWduYXNoXC10aGVcLXRlZXRoOwor5LWVIDwgYVwtdmFyaWV0eW9mXC1taWxsZXQ7CivktLEgPCBjYWtlc1wtYW5kXC1iaXNjdWl0czsKK+SzqCA8IHRoZVwtZmVtYWxlXC1waG9lbml4Owor5LOUIDwgYVwtcGlnZW9uXC1saWtlXC1iaXJkOwor5LGzIDwgYVwta2luZFwtb2ZcLXN0dXJnZW9uOwor5LGjIDwgYVwtbG9uZ1wtbmFycm93XC1maXNoOwor5LCqIDwgbWlzY2hpZXZvdXNcLXNwaXJpdDsKK+SvsSA8IHRoZVwtaGFpclwtc3RhbmRzXC11cDsKK+SvjyA8IHRoZVwtc2hvdWxkZXJcLWJsYWRlOwor5K6lIDwgY29sb3JcLW9mXC10aGVcLWhvcnNlOwor57Sw6I+M5oiwIDwgYmlvbG9naWNhbFwtd2FyZmFyZTsKK+StsCA8IHN0cm9uZ1wtc3dlZXRcLXNtZWxsOwor5K2LIDwgdG9cLWVhdFwtdG9cLXRoZVwtZnVsbDsKK+StgyA8IHRvXC1lYXRcLXRvXC10aGVcLWZvb2w7CivkrLQgPCBmb2RkZXJcLWZvclwtYW5pbWFsczsKK+SspyA8IHJvdW5kXC1zaGFwZWRcLWNha2VzOwor5omT5ouzIDwgdG9cLWRvXC1zaGFkb3dib3hpbmc7CivohIjmrIIgPCBiZWF0aW5nXC1cKG9mXC1oZWFydFwpOwor5KuQIDwgdG9cLWJlbmRcLW9uZScnc1wtaGVhZDsKK+SqjCA8IGN1c2hpb25cLWZvclwtc2FkZGxlOwor5KiGIDwgYVwta2luZFwtb2ZcLXBoZWFzYW50Owor5Ke8IDwgdGhlXC10aGVcLXNub3dcLWdvb3NlOwor5KemIDwgbmFtZVwtb2ZcLWFcLWhpbGxzaWRlOwor5paw5Yqg5Z2h5Lq6IDwgc2luZ2Fwb3JlYW5cLXBlcnNvbjsKK+SmriA8IGRvb3JcLW9mXC10aGVcLWNlbnRlcjsKK+iHquS4uyA8IHRvXC1hY3RcLWZvclwtb25lc2VsZjsKK+SmkiA8IHRoZVwtZG9vclwtaXNcLWNsb3NlZDsKK+SmkCA8IHRoZVwtYm9sdFwtb2ZcLWFcLWRvb3I7CivmnJ/osqggPCBmdXR1cmVzXC1cKG9uXC1nb29kc1wpOwor5KWzIDwgYVwtY2hlbWljYWxcLWVsZW1lbnQ7CivkpZ4gPCB0b1wtY3V0XC13aXRoXC1zaGVhcnM7CivkpZ0gPCBkZXNwZXJhdGVcLWZpZ2h0aW5nOwor5L615oiqIDwgdG9cLWhhY2tcLVwoY29tcHV0ZXJcKTsKK+SjuiA8IGZpbHRyYXRlZFwtdGhlXC13aW5lOwor6aCt6auuIDwgaGFpclwtXChvblwtdGhlXC1oZWFkXCk7CivkoaAgPCBzdHJvbmdcLWFuZFwtZHVyYWJsZTsKK+ShmyA8IG5hbWVcLW9mXC1hXC1jYXJyaWFnZTsKK+SgpyA8IGhhcmRcLXRvXC1nb1wtZm9yd2FyZDsKK+SfnSA8IHRvXC13YWxrXC1yaWdodFwtaW50bzsKK+SdniA8IG5hbWVcLW9mXC1hXC1pbW1vcnRhbDsKK+SbiSA8IHRvXC1pbmR1Y2VcLWJ5XC13b3JkczsKK+SapyA8IGN1cnZlZFwtd2l0aFwtYW5nbGVzOwor5aSn5Yqb55m85bGVIDwgdmlnb3JvdXNcLWV4cGFuc2lvbjsKK+SZgyA8IHNsZWV2ZWxlc3NcLWNsb3RoZXM7Civos6rnlpEgPCBjYWxsXC1pbnRvXC1xdWVzdGlvbjsKK+SXuyA8IGFcLWtpbmRcLW9mXC1zZWFcLWNyYWI7Civkl6ggPCBsZXBzaW1hXC1zYWNjaGFyaW5hOwor5JejIDwgaW5zZWN0XC1vZlwtbXVsYmVycnk7CivmnI3li5nopo/nq6AgPCBzZXJ2aWNlXC1yZWd1bGF0aW9uOwor5JanIDwgYVwtcG9pc29ub3VzXC1pbnNlY3Q7CivklpMgPCBvZlwtYVwtd2Fsa2luZ1wtdGlnZXI7CivklaogPCB0aGVcLXdhdGVyXC1wbGFudGFpbjsKK+SUvCA8IHNvdW5kXC1vZlwtdGhlXC1ncmFzczsKK+SUgyA8IGNvcmRhdGVcLWhvdXR0dXluaWE7Civkk6ggPCBsb25nXC1uZWNrZWRcLWJvdHRsZTsKK+STliA8IGNuaWRpdW1cLW9mZmljaW5hbGU7Civkk4MgPCBtZWxhbmNob2x5XC1hbmRcLXNhZDsKK+SSnSA8IHJvb3RcLW9mXC10aGVcLXRoYXRjaDsKK+mmluasoSA8IGZvclwtdGhlXC1maXJzdFwtdGltZTsKK+SRmSA8IHB1dFwtb3V0XC10aGVcLXRvbmd1ZTsKK+SRhiA8IGZlZWxcLWxpa2VcLXZvbWl0aW5nOwor5Zyo5YKz6Ly46YGO56iL5LitIDwgd2hpbGVcLXRyYW5zbWl0dGluZzsKK+SQlCA8IG11c2NsZVwtb2ZcLXRoZVwtY2FsZjsKK+SOviA8IGJpZ1wtYW5kXC1yb3VuZFwtZXllczsKK+Wfn+WQjeacjeWLmeWZqCA8IGRvbWFpblwtbmFtZVwtc2VydmVyOwor5I60IDwgYVwtbGVnZW5kYXJ5XC1zcGlyaXQ7CivkjqogPCB0aGVcLXN0YWxrXC1vZlwtZ3JhaW47CivmooblrZAgPCB3YXRjaG1hbicnc1wtY2xhcHBlcjsKK+SOlCA8IGZpbmVcLWFuZFwtc29mdFwtaGFpcjsKK+SOjyA8IHlvdW5nXC1iaXJkc1wtZmx5aW5nOwor5rK56aSFIDwgZGVlcFwtZnJpZWRcLXBhbmNha2U7CivkjakgPCB0b1wtb2ZmZXJcLXByb3Zpc2lvbjsKK+SNoyA8IGFcLWtpbmRcLW9mXC1maXNoXC1uZXQ7CivkjI0gPCBmaW5lXC13b3ZlblwtcGF0dGVybjsKK+SMiSA8IHRoZVwtbGFyZ2VcLW9mXC1hXC1uZXQ7Civms4TpnLIgPCBsZWFrXC1cKGluZm9ybWF0aW9uXCk7Civki4ggPCB0b1wtYmluZFwtbG9vc2VcLWhlbXA7CivkiawgPCBjb2Fyc2VcLWJhbWJvb1wtbWF0czsKK+SIriA8IGFcLXdvdmVuXC1pbnN0cnVtZW50Owor5IezIDwgYVwtbWVtb3JhZHVtXC10YWJsZXQ7CivkhqogPCBjb2xvclwtb2ZcLXRoZVwtbGlnaHQ7CivkhqUgPCB0b1wtcGllcmNlXC10aHJvdWdoajsKK+SGkSA8IGFcLWxpdHRsZVwtcHJvdHJ1ZGVkOwor5oqV5YWlIDwgcHV0XC1pbnRvXC1vcGVyYXRpb247Civkhb0gPCBmcmFncmFuY2VcLW9yXC1hcm9tYTsKK+SFpyA8IGZpbmVcLXJpY2VcLXNlZWRsaW5nOwor5IWcIDwgdG9cLXN0b3JlXC11cFwtZ3JhaW5zOwor5ISaIDwgdG9cLXdvcnNoaXBcLXRoZVwtZ29kOwor5IOcIDwgYVwtZmluZVwtYmxhY2tcLXN0b25lOwor5IGKIDwgZGFya1wtYW5kXC1kZWVwXC1leWVkOwor5ICeIDwgd2l0aFwtaGVhdnlcLWV5ZWxpZHM7CivkgJcgPCB0b1wtbG9va1wtYXNrYW5jZVwtYXQ7CivmnpDnlpEgPCB0b1wtcmVzb2x2ZVwtYVwtZG91YnQ7Civjv4wgPCBsdW1wXC1pblwtdGhlXC10aHJvYXQ7Civnq63nm6HlhajlipsgPCB0b1wtc3BhcmVcLW5vXC1lZmZvcnQ7CivnkZ7lhbjoqp4gPCBzd2VkaXNoXC1cKGxhbmd1YWdlXCk7CivjvKMgPCBicmlja3NcLW9mXC10aGVcLXdlbGw7CivjvIcgPCBmaW5lXC1qYWRlXC1vclwtYWdhdGU7Civmtonlq4zkurogPCBcKGNyaW1pbmFsXClcLXN1c3BlY3Q7Civju5cgPCBhXC1zdHJpbmdcLW9mXC1wZWFybHM7Civju4ogPCBhXC1yZWRcLWNvbG9yZWRcLWphZGU7Civju4UgPCBqYWRlXC1kZWNvcmF0ZWRcLWNhcDsKK+iXj+iqniA8IHRpYmV0YW5cLVwobGFuZ3VhZ2VcKTsKK+S4jeaKmOS4jeaJoyA8IGFcLWh1bmRyZWRcLXBlclwtY2VudDsKK+O6pyA8IGFcLXdoaXRlXC15ZWxsb3dcLWRvZzsKK+O4vSA8IGFcLXR3b1wteWVhcnNcLW9sZFwtb3g7CivmnKjogLMgPCBlZGlibGVcLXRyZWVcLWZ1bmd1czsKK+O4iCA8IHNjb3JjaGVkXC1vclwtYnVybmVkOwor47ezIDwgY29sb3JcLW9mXC10aGVcLWZsYW1lOwor5ZaY5oGvIDwgdG9cLWdhc3BcLWZvclwtYnJlYXRoOwor5qOE5LiWIDwgdG9cLWxlYXZlXC10aGlzXC13b3JkOwor47eiIDwgYnVuZGxlXC1vZlwtY2hhcmNvYWw7Civjt6AgPCBhXC13aWxsXC1vJydcLXRoZVwtd2lzcDsKK+O1kyA8IHRoZVwtd2F0ZXJcLWlzXC1jbGVhcjsKK+O0viA8IHN3ZWxsaW5nXC1vclwtcmlzaW5nOwor5L215o2y5qmfIDwgcmliYm9uXC1sYXBcLW1hY2hpbmU7CivliKXli5XpmoogPCBzcGVjaWFsXC1kZXRhY2htZW50Owor47OCIDwgdG9cLWZvbGxvd1wtYVwtY291cnNlOwor47KhIDwgdGhpY2tcLWNvYXRcLW9mXC1oYWlyOwor47KXIDwgdG9cLXNtb290aFwtdGhlXC1oYWlyOwor5oSb56ixIDwgdGVybVwtb2ZcLWVuZGVhcm1lbnQ7Civnp5HnoJTmqKPmqZ8gPCByZXNlYXJjaFwtcHJvdG90eXBlOwor46+2IDwgdGhlXC1jb2lyXC1wYWxtXC10cmVlOwor46+yIDwgYVwtd29vZGVuXC1mcmFtZXdvcms7Civjr5sgPCBnb3VyZFwtc2hhcGVkXC1kYXRlczsKK+OuuyA8IHRvXC1zY3JhdGNoXC1saWdodGx5Owor5Y2A5Z+f57ay6LevIDwgbG9jYWxcLWFyZWFcLW5ldHdvcms7Civjro0gPCBhbWVtb3JhbmR1bVwtdGFibGV0Owor462oIDwgdGhlXC1jb2NvYVwtbnV0XC1wYWxtOwor462dIDwgbmFtZVwtb2ZcLWFcLXBhdmlsaW9uOwor55m86YCB5Yqf546HIDwgdHJhbnNtaXNzaW9uXC1wb3dlcjsKK+OstCA8IHRoZVwtbW9vblwtaXNcLWRpbW1lZDsKK+OskiA8IHRoZVwtc3VuXC1hcmVcLWRpbW1lZDsKK+OsjiA8IG1vdGVzXC1pblwtYVwtc3VuYmVhbTsKK+aUv+W6nOitpuWRiiA8IGdvdmVybm1lbnRcLXdhcm5pbmc7Civjq6YgPCBvZlwtbG9va1wtb2ZcLXRoZVwtc3VuOwor46q4IDwgdG9cLWZpbGxcLWFcLWN1cFwtd2l0aDsKK+OpgyA8IHRvXC10YWtlXC1vclwtY2FwdHVyZTsKK+OovSA8IHRvXC1jdXRcLW9yXC1yaXBcLW9wZW47CivjqKEgPCB0b1wtcHVzaFwtd2l0aFwtaGFuZHM7CivjqJwgPCB0b1wtaGVscFwtZWFjaFwtb3RoZXI7CivmoLjog73mioDooZMgPCBudWNsZWFyXC10ZWNobm9sb2d5Owor5bm06LyV5YyWIDwgbWFrZVwtbW9yZVwteW91dGhmdWw7CivlsIjlk6EgPCBhc3Npc3RhbnRcLWRpcmVjdG9yOwor46W4IDwgdG9cLXN5bXBhdGhpemVcLXdpdGg7CivjpaggPCB1bmhhcHB5XC1kaXNwbGVhc2VkOwor46SqIDwgdG9cLWZpbmRcLWZhdWx0XC13aXRoOwor46OMIDwgdG9cLWpvaW5cLXR3b1wtdGhpbmdzOwor46GvIDwgd2FsbFwtb2ZcLWFcLWJ1aWxkaW5nOwor6aCT6LazIDwgc3RhbXBcLVwob25lJydzXC1mZWV0XCk7CivliqDpgJ/lmaggPCBhY2NlbGVyYXRvclwtXChjb21wXCk7CivjmLMgPCBhXC1oaWxsb2NrXC1vclwtbW91bmQ7CivjmLEgPCB0b1wtZmFsbFwtaW50b1wtcnVpbnM7CivmhI/lpKfliKnoqp4gPCBpdGFsaWFuXC1cKGxhbmd1YWdlXCk7CivjmJwgPCBhXC1raW5kXC1vZlwtc2lsa3dvcm07CivjloUgPCBzb3VuZFwtb2ZcLWFcLXdoaXN0bGU7CivjloMgPCB0b1wtcm9hclwtb2ZcLWFuaW1hbHM7CivjlKIgPCB0b1wtYnJlYWtcLXNvbWV0aGluZzsKK+S4jeetieiZnyA8IHNpZ25cLW9mXC1pbmVxdWFsaXR5Owor54++5pyJIDwgY3VycmVudGx5XC1leGlzdGluZzsKK+ilv+WNiueQgyA8IHdlc3Rlcm5cLWhlbWlzcGhlcmU7CivpvLvmqJEgPCBicmlkZ2VcLW9mXC10aGVcLW5vc2U7Civlj4PotIogPCBkaXBsb21hdGljXC1vZmZpY2VyOwor5Lim56uLIDwgZXhpc3RcLXNpZGVcLWJ5XC1zaWRlOwor6LK/5piTIDwgXChjb21tZXJjaWFsXClcLXRyYWRlOwor5aSa56uv5Lit57m85ZmoIDwgbXVsdGlwb3J0XC1yZXBlYXRlcjsKK+WMl+S6rOWkp+WtuCA8IGJlaWppbmdcLXVuaXZlcnNpdHk7CivloLHli5nlk6EgPCB0ZWxlZ3JhcGhcLW9wZXJhdG9yOwor6YWs6YWiIDwgdG9cLWV4Y2hhbmdlXC10b2FzdHM7CivmtarmtowgPCBcKGVsZWN0cmljYWxcKVwtc3VyZ2U7CivkvZTlhYggPCB0b1wtdGFrZVwtcHJlY2VkZW5jZTsKK+iDjOWFiSA8IGJlXC1pblwtYVwtcG9vclwtbGlnaHQ7CivlhYnms6LplbcgPCBvcHRpY2FsXC13YXZlbGVuZ3RoOwor5rex5aScIDwgdmVyeVwtbGF0ZVwtYXRcLW5pZ2h0Owor5ZaJ5pOm6Z+zIDwgZ3V0dHVyYWxcLWZyaWNhdGl2ZTsKK+WFq+e0muW3pSA8IGVpZ2h0XC1ncmFkZVwtd29ya2VyOwor5L2b6JKZ54m5IDwgdmVybW9udFwtXFt1c1wtc3RhdGVcXTsKK+mcsumdoiA8IGFwcGVhclwtXChpblwtcHVibGljXCk7CivllYbli5kgPCBjb21tZXJjaWFsXC1hZmZhaXJzOwor6IGv6YKm5pS/5bqcIDwgZmVkZXJhbFwtZ292ZXJubWVudDsKK+eMnOeWkSA8IGhhcmJvdXJcLXN1c3BpY2lvbnM7CivnlJ/mtLvlv4XpnIDlk4EgPCBsaWZlJydzXC1uZWNlc3NpdGllczsKK+iytOWnkyA8IHdoYXRcLWlzXC15b3VyXC1uYW1lXD87CivnjJnnjbAgPCBtZWFuXC1hbmRcLWZlcm9jaW91czsKK+mAsuihjOe3qOeoiyA8IGV4ZWN1dGFibGVcLXByb2dyYW07CivmtrLlo5MgPCBoeWRyYXVsaWNcLXByZXNzdXJlOwor566h55CG56uZIDwgbWFuYWdlbWVudFwtc3RhdGlvbjsKK+m8u+WhniA8IGhhdmVcLWFcLXN0dWZmeVwtbm9zZTsKK+iZm+aTrOmAo+aOpSA8IHZpcnR1YWxcLWNvbm5lY3Rpb247Civpu57lv4MgPCBsaWdodFwtcmVmcmVzaG1lbnRzOwor5a6i5oi25oeJ55SoIDwgY2xpZW50XC1hcHBsaWNhdGlvbjsKK+S4jemaqOaEj+iCjCA8IGludm9sdW50YXJ5XC1tdXNjbGU7CivoqqrkuI3lrpogPCBjYW4nJ3RcLXNheVwtZm9yXC1zdXJlOwor5rOi5pav6KqeIDwgYm9zbmlhblwtXChsYW5ndWFnZVwpOwor5rW35Z+fIDwgdGVycml0b3JpYWxcLXdhdGVyczsKK+avlOippiA8IGhhdmVcLWFcLWNvbXBldGl0aW9uOwor5o6h5Y+W5o6q5pa9IDwgdG9cLWFkb3B0XC1hXC1tZWFzdXJlOwor5YSY5Y+v6IO9IDwgYXNcLWZhclwtYXNcLXBvc3NpYmxlOwor5ZOI5L2b5aSn5a24IDwgaGFydmFyZFwtdW5pdmVyc2l0eTsKK+mbu+i3ryA8IFwoZWxlY3RyaWNcKVwtY2lyY3VpdDsKK+S4reWwhyA8IGxpZXV0ZW5hbnRcLWdlbmVyYWw7CivljIXmib/ntYQgPCBcKHJlc3BvbnNpYmxlXClcLWNyZXc7Civnmb7okYnnrrEgPCB0aGVybW9tZXRlclwtc2NyZWVuOwor5pqX57ea5YWJ6K2cIDwgZGFya1wtbGluZVwtc3BlY3RydW07Civmlofol50gPCBsaXRlcmF0dXJlXC1hbmRcLWFydDsKK+eJiOeohSA8IHJveWFsdHlcLVwob25cLWJvb2tzXCk7Civpm7voppbnr4Dnm64gPCB0ZWxldmlzaW9uXC1wcm9ncmFtOwor5oOF5aCxIDwgXChzcHlcKVwtaW50ZWxsaWdlbmNlOwor57eo6YGjIDwgcmVvcmdhbml6ZVwtXCh0cm9vcHM7Civpgb/pm7flmaggPCBsaWdodG5pbmdcLWFycmVzdGVyOwor5b+F5LiN5Y+v5bCR57WE5oiQIDwgYWJzb2x1dGVcLW5lY2Vzc2l0eTsKK+azsOWxsSA8IHRhaXNoYW5cLVwobW91bnRhaW5cKTsKK+aCieWwvCA8IHN5ZG5leVwtXChhdXN0cmFsaWFcKTsKK+aIsOmspeapnyA8IGZpZ2h0ZXJcLVwoYWlyY3JhZnRcKTsKK+iWhOaDhSA8IGluY29uc3RhbnRcLWluXC1sb3ZlOwor5rCR55SoIDwgXChmb3JcKVwtY2l2aWxpYW5cLXVzZTsKK+e3qOitryA8IHRyYW5zbGF0ZVwtYW5kXC1lZGl0Owor56aP5YipIDwgXChtYXRlcmlhbFwpXC13ZWxmYXJlOwor57Ch55+t5LuL57S5IDwgYnJpZWZcLWludHJvZHVjdGlvbjsKK+a1t+eBo+aIsOeIrSA8IFwocGVyc2lhblwpXC1ndWxmXC13YXI7CivlnLDnkIPlpKfmsKMgPCBlYXJ0aCcnc1wtYXRtb3NwaGVyZTsKK+WQjOWtuCA8IFwoZmVsbG93XClcLWNsYXNzbWF0ZTsKK+S4jeWSjCA8IG5vdFwtZ2V0XC1hbG9uZ1wtd2VsbDsKK+S4jeWOrSA8IG5vdFwtbWluZFwtZG9pbmdcLXN0aDsKK+WPjeaEnyA8IFwoc3Ryb25nbHlcKVwtZGlzbGlrZTsKK+mHneWwjSA8IGluXC1jb25uZWN0aW9uXC13aXRoOwor5pyN5YuZ6LOq6YePIDwgcXVhbGl0eVwtb2ZcLXNlcnZpY2U7Civlj6blr4QgPCB0b1wtbWFpbFwtc2VwYXJhdGVseTsKK+iuiuW5uyA8IGNoYW5nZVwtaXJyZWd1bGFybHk7CivloLHpl5wgPCBkZWNsYXJlXC1hdFwtY3VzdG9tczsKK+e9suWQjSA8IHNpZ25cLVwoYVwtc2lnbmF0dXJlXCk7CivpgYropr0gPCB0b1wtZ29cLXNpZ2h0XC1zZWVpbmc7CivkuI3mlLvoh6rnoLQgPCBjb2xsYXBzZVwtb2ZcLWl0c2VsZjsKK+aWh+WMluWCs+e1sSA8IGN1bHR1cmFsXC10cmFkaXRpb247Civpoa/npLrlmaggPCBtb25pdG9yXC1cKGNvbXB1dGVyXCk7Civnmr8gPCBzaGFsbG93XC1jb250YWluZXI7CivlsZMgPCBnaWdhbnRpY1wtc3RyZW5ndGg7CivmtL4gPCBzY2hvb2xcLW9mXC10aG91Z2h0Owor5aeTIDwgb25lJydzXC1mYW1pbHlcLW5hbWU7CivnhY4gPCBmcnlcLWluXC1mYXRcLW9yXC1vaWw7CivopYEgPCBzd2FkZGxpbmdcLWNsb3RoZXM7Civlk4ggPCBzb3VuZFwtb2ZcLWxhdWdodGVyOwor6biaIDwgc3BlY2llc1wtb2ZcLXBhcnJvdDsKK+aspyA8IHRyYW5zbGl0XC5cOlwtZXVyb3BlOwor6K6iIDwgZHJhd1wtdXBcLWFncmVlbWVudDsKK+WBjyA8IGluY2xpbmVkXC1vbmVcLXNpZGU7CivmrZQgPCBibG93XC10aHJvdWdoXC1ub3NlOwor5Z+5IDwgYmFua1wtdXBcLXdpdGhcLWRpcnQ7CivmvKsgPCBvdmVyZmxvd1wtb2ZcLXdhdGVyOwor5L6gIDwgY2hpdmFscm91c1wtcGVyc29uOwor5aeGIDwgY2hpbGQnJ3NcLWdvdmVybmVzczsKK+ebkiA8IHNtYWxsXC1ib3hcLW9yXC1jYXNlOwor5YSSIDwgY29uZnVjaWFuXC1zY2hvbGFyOwor6ZiqIDwgaGlsbHNpZGVcLWZhcm1sYW5kOwor6L+IIDwgdGFrZVwtYVwtYmlnXC1zdHJpZGU7CivmjY8gPCBwaWNrXC13aXRoXC1maW5nZXJzOwor5rWZIDwgemhlamlhbmdcLXByb3ZpbmNlOwor562nIDwgYmFtYm9vXC13YXRlclwtcGlwZTsKK+iJmCA8IGNvdW50ZXJcLWZvclwtc2hpcHM7CivotoEgPCB0YWtlXC1hZHZhbnRhZ2VcLW9mOwor6YmiIDwgZWFydGhlbndhcmVcLWJhc2luOwor6JOsIDwgdHlwZVwtb2ZcLXJhc3BiZXJyeTsKK+i+liA8IGxpbmNocGluXC1vZlwtd2hlZWw7CivpgIUgPCBtZWV0XC11bmV4cGVjdGVkbHk7CivphaMgPCBlbmpveVwtaW50b3hpY2FudHM7CivppbogPCBzdHVmZmVkXC1kdW1wbGluZ3M7Civlko8gPCBzaW5nXC1zb25nXC1vclwtcG9lbTsKK+aQgCA8IGdpdmVcLWhlbHBpbmdcLWhhbmQ7CivmjbYgPCBzdHJpa2VcLXdpdGhcLXN0aWNrOwor5YioIDwgY2FycGVudGVyJydzXC1wbGFuZTsKK+iglSA8IGV1bWVuZXNcLXBvbGlmb21pczsKK+W0hiA8IGtvbmd0b25nXC1tb3VudGFpbjsKK+ebhSA8IHNtYWxsXC1jdXBcLW9yXC1ib3dsOwor5qKGIDwgd2F0Y2htYW4nJ3NcLXJhdHRsZTsKK+W1hyA8IG1vdW50YWluXC1pblwtaGVuYW47CivogLcgPCBlYXJzXC1oYW5naW5nXC1kb3duOwor576MIDwgcWlhbmdcLW5hdGlvbmFsaXR5Owor6IueIDwgYVwtdmFyaWV0eVwtb2ZcLXJ1c2g7Civol5wgPCBjaGVub3BvZGl1bVwtYWxidW07CivoiYQgPCBzdGVyblwtb2ZcLWFcLXZlc3NlbDsKK+WzgSA8IHllbGxvd1wtZGlydFwtbW91bnQ7CivplZQgPCBoaWdoXC1xdWFsaXR5XC1pcm9uOwor6bKrIDwgY2FyYXNzaXVzXC1hdXJhdHVzOwor6b6HIDwgdG9cLXNob3dcLXRoZVwtdGVldGg7Civmsq0gPCByaXZlclwtaW5cLXNoYW50dW5nOwor5qarIDwgbW9ydGlzZVwtYW5kXC10ZW5vbjsKK+iQiyA8IGx1eHVyaWFudFwtZm9saWFnZTsKK+mGriA8IHJlbGlnaW91c1wtc2VydmljZTsKK+eJnSA8IGZlbWFsZVwtb2ZcLXNwZWNpZXM7Civmm7cgPCB3aHlcP1wtd2hhdFw/XC13aGVyZVw/Owor55G3IDwgZmluZVwtcXVhbGl0eVwtamFkZTsKK+iApiA8IHBsb3dcLXNpZGVcLWJ5XC1zaWRlOwor6bi2IDwgdGhlXC1lYXN0ZXJuXC1lZ3JldDsKK+evpiA8IGZpbmVcLXRvb3RoZWRcLWNvbWI7CivlpoEgPCBhY3RcLWFzXC1nb1wtYmV0d2VlbjsKK+iNpSA8IGFcLWNvdW50eVwtaW5cLWhlbmFuOwor5oi9IDwgdG9cLWJhbGVcLW91dFwtd2F0ZXI7CivmnrMgPCB0cmlmb2xpYXRlXC1vcmFuZ2U7CivmpJAgPCB6ZWxrb3dhXC1hY3VtaW5hdGE7CivprYkgPCBhXC1raW5kXC1vZlwtbW9uc3RlcjsKK+miniA8IHRoZVwtdGVtcG9yYWxcLWJvbmU7CivogKkgPCB0b1wtcGxvdWdoXC5cLXRvXC1zb3c7Civlu6ggPCBnb3Zlcm5tZW50XC1vZmZpY2U7Civon64gPCB0eXBlXC1vZlwtZWFydGh3b3JtOwor6JuxIDwga2luZFwtb2ZcLWJ1dHRlcmZseTsKK+emsyA8IHByYXlcLW9yXC1zYWNyaWZpY2U7CivnnqIgPCBleWVzaWdodFwtb2JzY3VyZWQ7CivolLggPCBjb3VudGVyXC1mb3JcLXBsYW50Owor6J6FIDwgXChpbnRlc3RpbmFsXC13b3JtXCk7CivnpacgPCBhblwtYW5jZXN0cmFsXC1oYWxsOwor6KCDIDwgdGhlXC1zb2xpdGFyeVwtd2FzcDsKK+iBgyA8IGVhcnNcLXdpdGhvdXRcLXJpbXM7CivogJwgPCBzcGFkZVwtc2hhcGVkXC10b29sOwor5oWdIDwgZG9cLWV2aWxcLWluXC1zZWNyZXQ7CivlurMgPCBhXC1sb3dcLWJ1aWx0XC1ob3VzZTsKK+m8oiA8IGFcLXZhcmlldHlcLW9mXC1tb2xlOwor6Jq6IDwgYVwtYm9hXC1jb25zdHJpY3RvcjsKK+ehhyA8IGFcLWtpbmRcLW9mXC1taW5lcmFsOwor56GtIDwgYVwtY3J1ZGVcLXNhbHRwZXRyZTsKK+iDqCA8IGFcLWtpbmRcLW9mXC1wcm90ZWluOwor5aSW55WMIDwgdGhlXC1vdXRzaWRlXC13b3JsZDsKK+iuiuWkqSA8IGNoYW5nZVwtb2ZcLXdlYXRoZXI7Civmr5Tmv5UgPCBzcGVjaWZpY1wtaHVtaWRpdHk7Civlj6/ooYzmgKfnoJTnqbYgPCBmZWFzaWJpbGl0eVwtc3R1ZHk7CivntrLntaHpgbfnp7sgPCBuZXR3b3JrXC1taWdyYXRpb247Civpm7vohabou5/ku7YgPCBjb21wdXRlclwtc29mdHdhcmU7Civlv4Xkv67oqrIgPCBhXC1yZXF1aXJlZFwtY291cnNlOwor5b635paHIDwgZ2VybWFuXC1cKGxhbmd1YWdlXCk7Civlg4XmrKHkuo4gPCBzZWNvbmRcLW9ubHlcLXRvXC5cLlwuOwor5pyd6a6u6KqeIDwga29yZWFuXC1cKGxhbmd1YWdlXCk7Civos4fmlpnlgrPovLggPCBkYXRhXC10cmFuc21pc3Npb247CivljZHmgK8gPCBtZWFuXC1hbmRcLWNvd2FyZGx5Owor5YW16aasIDwgdHJvb3BzXC1hbmRcLWhvcnNlczsKK+aVuOaTmuW6q+i7n+S7tiA8IGRhdGFiYXNlXC1zb2Z0d2FyZTsKK+eiqeWjqyA8IG1hc3Rlcicnc1wtXChkZWdyZWVcKTsKK+ilv+ijoeeIvuWtl+avjSA8IGN5cmlsbGljXC1hbHBoYWJldDsKK+Wci+mYsumDqOmVtyA8IGRlZmVuY2VcLXNlY3JldGFyeTsKK+eZvemqqCA8IGJvbmVzXC1vZlwtdGhlXC1kZWFkOwor5beo5aSn5aOT5YqbIDwgZW5vcm1vdXNcLXByZXNzdXJlOwor54Wn55u4IDwgdGFrZVwtYVwtcGhvdG9ncmFwaDsKK+eZvemjryA8IHBsYWluXC1jb29rZWRcLXJpY2U7Civml6XlrZAgPCBhXC1cKGNhbGVuZGFyXClcLWRhdGU7Civlu7rnr4nmpa0gPCBidWlsZGluZ1wtaW5kdXN0cnk7CivmlL/msrvmsKPlgJkgPCBwb2xpdGljYWxcLWNsaW1hdGU7Civlu6Pln5/ntrLot68gPCB3aWRlXC1hcmVhXC1uZXR3b3JrOwor5pWZ5Y+L5aSn5pyDIDwgY2h1cmNoXC1jb25mZXJlbmNlOwor576O5ZyL6Iiq56m65YWs5Y+4IDwgYW1lcmljYW5cLWFpcmxpbmVzOwor5pWZ5p2QIDwgdGVhY2hpbmdcLW1hdGVyaWFsOwor6YSw5ZyLIDwgYm9yZGVyaW5nXC1jb3VudHJ5Owor5qmf6KO9IDwgbWFjaGluZVwtcHJvY2Vzc2VkOwor6ZW36YGUIDwgZXh0ZW5kXC1hc1wtbG9uZ1wtYXM7CivljJblpp0gPCB0b1wtcHV0XC1vblwtbWFrZVwtdXA7Civpm6PmjbEgPCB0cnlpbmdcLFwtZGlmZmljdWx0Owor5aSn5bGAIDwgZ2VuZXJhbFwtc2l0dWF0aW9uOwor5pKS6L+m5Yip5Lqe5pu4IDwgYm9va1wtb2ZcLXplY2hhcmlhaDsKK+aVj+aEnyA8IHNlbnNpdGl2ZVwtXChpc3N1ZVwpOwor57Sh57mUIDwgc3Bpbm5pbmdcLVwodGhyZWFkXCk7CivlpKflpJogPCBmb3JcLXRoZVwtbW9zdFwtcGFydDsKK+W+kuWIkSA8IFwocHJpc29uXClcLXNlbnRlbmNlOwor6LuN5LqL5Yqb6YePIDwgbWlsaXRhcnlcLXN0cmVuZ3RoOwor5rOi5aOr6aCT5aSn5a24IDwgYm9zdG9uXC11bml2ZXJzaXR5Owor5pSv5oyBIDwgdG9cLWJlXC1pblwtZmF2b3JcLW9mOwor57Sb57SbIDwgb25lXC1hZnRlclwtYW5vdGhlcjsKK+m6peWFi+e2rSA8IFwodGltb3RoeVwpXC1tY3ZlaWdoOwor5oeJ55So5bGkIDwgYXBwbGljYXRpb25cLWxheWVyOwor5qGM5Yil5p6XIDwgXChjaGFybGllXClcLWNoYXBsaW47Civpm7voqbHmnI3li5kgPCB0ZWxlcGhvbmVcLXNlcnZpY2U7Civok4vniL7oqp4gPCBnYWVsaWNcLVwobGFuZ3VhZ2VcKTsKK+S6pOaPm+S7peWkque2sue1oSA8IHN3aXRjaGVkXC1ldGhlcm5ldDsKK+WkluWciyA8IGZvcmVpZ25cLVwoY291bnRyeVwpOwor6Zi/5ouJ5Lyv6KqeIDwgYXJhYmljXC1cKGxhbmd1YWdlXCk7CivmjZXpo58gPCBjYXRjaFwtYW5kXC1mZWVkXC1vbjsKK+aUr+afseeUoualrSA8IG1haW5zdGF5XC1pbmR1c3RyeTsKK+eEoeaJgOisgiA8IHRvXC1iZVwtaW5kaWZmZXJlbnQ7CivlpJrnq5nlnLDlnYAgPCBtdWx0aWNhc3RcLWFkZHJlc3M7CivpvYQgPCByZWRcLXNvcmVzXC1vblwtbm9zZTsKK+e2k+a/n+WuieWFqCA8IGVjb25vbWljXC1zZWN1cml0eTsKK+m7nyA8IGJsYWNrXC1hbmRcLXNoaW5pbmc7CivpuYEgPCBzcGVjaWVzXC1vZlwtcGlnZW9uOwor6LyU6KqyIDwgc3Vic2lkaWFyeVwtY291cnNlOwor5aSW5Lqk6aKo5rOiIDwgZGlwbG9tYXRpY1wtY3Jpc2lzOwor6bW1IDwgc2NvcHNcLXNlbWl0b3JxdWVzOwor5YWr6IKhIDwgZWlnaHRcLVwtcGFydFwtZXNzYXk7CivlubPmsJEgPCBcKG9yZGluYXJ5XClcLXBlb3BsZTsKK+mDiuWNgCA8IHN1YnVyYmFuXC1kaXN0cmljdDsKK+WFqeiAhSA8IGJvdGhcLXNpZGVzXHx0aGluZ3M7CivprrggPCBzY2lhZW5hXC1hbGJpZmxvcmE7CivprasgPCB0aGVcLXlvdW5nXC1vZlwtZmlzaDsKK+mDqOS7vSA8IHBhcnRcLVwob2ZcLWFcLXdob2xlXCk7Civpq70gPCB0b1wtZHJlc3NcLXRoZVwtaGFpcjsKK+mbu+ipsee2sui3ryA8IHRlbGVwaG9uZVwtbmV0d29yazsKK+eZveiCiSA8IHBsYWluXC1ib2lsZWRcLXBvcms7CivppakgPCBzYWNyZmljaWFsXC12aWN0aW07CivpgorloZ4gPCBmcm9udGllclwtZm9ydHJlc3M7CivppIIgPCB0b1wtb2J0YWluXC1ieVwtaG9vazsKK+efs+WIuyA8IHN0b25lXC1pbnNjcmlwdGlvbjsKK+meuCA8IGxlYXRoZXJcLWFybVwtZ3VhcmQ7Civpnb8gPCB0aGVcLWxlZ1wtb2ZcLWFcLWJvb3Q7Civnt4rlr4YgPCBpbnNlcGFyYWJseVwtY2xvc2U7CivpmrggPCBiZVwtc3Vic2VydmllbnRcLXRvOwor5qmf5Zmo5Lq6IDwgbWVjaGFuaWNhbFwtcGVyc29uOwor6ZaqIDwgdG9cLWxvc2VcLWxvc3RcLWl0ZW07CivpgorljaEgPCBib3JkZXJcLWNoZWNrcG9pbnQ7Civnt6nlkowgPCB0b1wtZWFzZVwtXCh0ZW5zaW9uXCk7Civlj43pgY7kvoboqqogPCBvblwtdGhlXC1vdGhlclwtaGFuZDsKK+e2reaMgeiyuyA8IG1haW50ZW5hbmNlXC1jb3N0czsKK+mKoCA8IHJob2RpdW1cLXJ1dGhlbml1bTsKK+e3qOWNsCA8IGNvbXBpbGVcLWFuZFwtcHJpbnQ7CivpiZUgPCBwcm9tZXRoaXVtXC1icm9uemU7Civovqblhazoh6rli5XljJYgPCBvZmZpY2VcLWF1dG9tYXRpb247CivpiLMgPCBjb2x1bWJpdW1cLW5pb2JpdW07Civlh7Hml4sgPCByZXR1cm5cLXRyaXVtcGhhbnQ7CivmrZDmtLLoqp7oqIAgPCBldXJvcGVhblwtbGFuZ3VhZ2U7CivngInogpogPCB0b1wtaGF2ZVwtZGlhcnJob2VhOwor6YatIDwgbW91bGRzXC1vblwtbGlxdWlkczsKK+mGkSA8IHRvXC1zdHJhaW5cLXNwaXJpdHM7CivphbogPCBkcmlua1wtd2l0aFwtb3RoZXJzOwor57ay57Wh6Kit5YKZIDwgbmV0d29ya1wtZXF1aXBtZW50Owor55m955y8IDwgc3VwZXJjaWxpb3VzXC1sb29rOwor5p2/5pOm5YWSIDwgYmxhY2tib2FyZFwtZXJhc2VyOwor5pel55uK5aKe5YqgIDwgdG9cLWluY3JlYXNlXC1kYWlseTsKK+iyjSA8IGFcLWZveFwtbGlrZVwtYW5pbWFsOwor55y85bCWIDwgdG9cLWhhdmVcLWdvb2RcLWV5ZXM7CivosYsgPCBjZXJlbW9uaWFsXC12ZXNzZWw7CivloLHluLMgPCByZW5kZXJcLWFuXC1hY2NvdW50Owor57aT5r+f5Yqb6YePIDwgZWNvbm9taWNcLXN0cmVuZ3RoOwor6Ka8IDwgZXhwbGFpblwtaW5cLWRldGFpbDsKK+WQjOaAp+aIgCA8IGhvbW9zZXh1YWxcLVwobG92ZVwpOwor6KOc55m8IDwgc3VwcGx5XC1hZ2FpblwtXChzdGg7CivorormnKzliqDljrIgPCBiZWNvbWVcLWFnZ3JhdmF0ZWQ7CivkuI3lj4rnianli5XoqZ4gPCBpbnRyYW5zaXRpdmVcLXZlcmI7CivlhYnnupbmjqXlj6MgPCBvcHRpY2FsXC1pbnRlcmZhY2U7Civoq77osp3niL7lkozlubPnjY4gPCBub2JlbFwtcGVhY2VcLXByaXplOwor6JyUIDwgaW5sYWlkXC1zaGVsbFwtd29yazsKK+aKiumgrSA8IGxhYm91clwtY29udHJhY3RvcjsKK+WVhualreihjOeCuiA8IGJ1c2luZXNzXC1hY3Rpdml0eTsKK+i7jeiyu+mWi+aUryA8IG1pbGl0YXJ5XC1zcGVuZGluZzsKK+iYtSA8IHBoeXNhbGlzXC1hbmd1bGF0YTsKK+aAp+mot+aTviA8IHNleHVhbFwtaGFyYXNzbWVudDsKK+iXqCA8IGtpbmRcLW9mXC1yYXNwYmVycnk7CivolbggPCB3YXRlclwtbGlseScnc1wtbGVhZjsKK+iVkSA8IHZhbGVyaWFuYVwtdmlsbG9zYTsKK+i7n+S7tuW5s+iHuiA8IHNvZnR3YXJlXC1wbGF0Zm9ybTsKK+iRjiA8IGh1bXVsdXNcLWphcG9uaWN1czsKK+Wxj+manCA8IHByb3RlY3RpdmVcLXNjcmVlbjsKK+iPoyA8IGFydGVtaXNpYVwtYXBpYWNlYTsKK+iOmyA8IHN0YWxrc1wtb2ZcLWdyYXNzZXM7CivngavmmJ8gPCBtYXJzXC1cKHRoZVwtcGxhbmV0XCk7CivojI0gPCB0b1wtYmVcLWNpcmN1bXNwZWN0Owor6aiO6aasIDwgcmlkZVwtb25cLWhvcnNlYmFjazsKK+apq+aWt+eJqSA8IHRyYW5zdmVyc2VcLW9iamVjdDsKK+aKhOmMhCA8IHRvXC1tYWtlXC1hXC1jb3B5XC1vZjsKK+aPreabiSA8IGFubm91bmNlXC1wdWJsaWNseTsKK+e9myA8IGxhcmdlXC1maXNoaW5nXC1uZXQ7Civnmb3lsYjoj5wgPCBncmVhdGVyXC1jZWxhbmRpbmU7CivnuLAgPCBiYW5kXC1mb3JcLXRoZVwtaGFpcjsKK+e2jiA8IHNpbGtcLWJyYWlkZWRcLWNvcmQ7CivmjInlnJbntKLpqaUgPCB0cnlcLXRvXC1sb2NhdGVcLXN0aDsKK+e0rCA8IGtpbmRcLW9mXC10aGluXC1zaWxrOwor55eF56iLIDwgY291cnNlXC1vZlwtZGlzZWFzZTsKK+WCs+i8uOeOhyA8IHRyYW5zbWlzc2lvblwtcmF0ZTsKK+exuCA8IHBvd2RlcnlcLXN1YnN0YW5jZTsKK+W4jOS8r+S+huiqniA8IGhlYnJld1wtXChsYW5ndWFnZVwpOwor57GTIDwgYmlnXC13aW5ub3dcLWJhc2tldDsKK+mWi+eZvOmAseacnyA8IGRldmVsb3BtZW50XC1jeWNsZTsKK+evqCA8IGNvYXJzZVwtYmFtYm9vXC1tYXQ7CivnlLPoqLQgPCB0b1wtYXBwZWFsXC1cKHRvXC1zYlwpOwor5Ly65pyN5ZmoIDwgc2VydmVyXC1cKGNvbXB1dGVyXCk7CivkvpvpnIAgPCBzdXBwbHlcLWFuZFwtZGVtYW5kOwor5Zyw5q68IDwgdGhlXC1lYXJ0aCcnc1wtY3J1c3Q7CivplonluZUgPCB0aGVcLWN1cnRhaW5cLWZhbGxzOwor56WKIDwgcml2ZXJcLWluXC1zaGFuZG9uZzsKK+ebm+WQjSA8IGZhbW91c1wtcmVwdXRhdGlvbjsKK+W3peWnlCA8IHdvcmtpbmdcLWNvbW1pdHRlZTsKK+aIsOeVpeWkpeS8tCA8IHN0cmF0ZWdpY1wtcGFydG5lcjsKK+ethuiqvyA8IFwob2ZcLXdyaXRpbmdcKVwtdG9uZTsKK+WxleimvSA8IHRvXC1wdXRcLW9uXC1kaXNwbGF5Owor55m95biDIDwgcGxhaW5cLXdoaXRlXC1jbG90aDsKK+mdnOiEiOWQuOavkiA8IGludHJhdmVuZW91c1wtZHJ1ZzsKK+eYtSA8IGFcLXdhc3RpbmdcLWRpc2Vhc2U7CivnhKHmnJ/lvpLliJEgPCBsaWZlXC1pbXByaXNvbm1lbnQ7Civlt6XlnLAgPCBjb25zdHJ1Y3Rpb25cLXNpdGU7CivnkqsgPCBwZW5kYW50XC1vcm5hbWVudHM7Civnmb7liIbkuYvnmb4gPCBhXC1odW5kcmVkXC1wZXJjZW50Owor5qOV6ImyIDwgYnJvd25cLVwodGhlXC1jb2xvclwpOwor56+H55uuIDwgdGFibGVcLW9mXC1jb250ZW50czsKK+eOniA8IGFuXC1pbmZlcmlvclwtYWdhdGU7Civohp3kuIrlnovpm7vohaYgPCBsYXB0b3BcLVwoY29tcHV0ZXJcKTsKK+iQiua6q+aWr+WfuiA8IFwobW9uaWNhXClcLWxld2luc2t5Owor54aAIDwgdGhlXC1ibGF6ZVwtb2ZcLWZpcmU7CivkvY/pmaIgPCB0b1wtYmVcLWluXC1ob3NwaXRhbDsKK+WCs+i8uOacjeWLmSA8IHRyYW5zcG9ydFwtc2VydmljZTsKK+aQj+WLlSA8IGJlYXRcLXJoeXRobWljYWxseTsKK+aOpeW+hSA8IHJlY2VpdmVcLVwoYVwtdmlzaXRcKTsKK+eBjiA8IG1vdmVtZW50XC1vZlwtd2F0ZXI7Civlhazli5kgPCBvZmZpY2lhbFwtYnVzaW5lc3M7CivmuLAgPCBmb3JtaW5nXC1vclwtcmlzaW5nOwor5ouY55WZIDwgZGV0YWluXC1cKHByaXNvbmVyXCk7CivmtLYgPCB0aGVcLXJ1c2hcLW9mXC13YXRlcjsKK+e2nOWQiOW4g+e3miA8IGludGVncmF0ZWRcLXdpcmluZzsKK+Wci+mam+azlSA8IGludGVybmF0aW9uYWxcLWxhdzsKK+WFrOS9iCA8IHB1YmxpY2x5XC1hbm5vdW5jZTsKK+WFp+S6giA8IGludGVybmFsXC1kaXNvcmRlcjsKK+ihm+aYnyA8IFwoc3BhY2VcKVwtc2F0ZWxsaXRlOwor5ouN54WnIDwgdG9cLXRha2VcLWFcLXBpY3R1cmU7Civnl4XmlYUgPCBkaWVcLW9mXC1hblwtaWxsbmVzczsKK+ihneaTiiA8IFwoYmVcLXVuZGVyXClcLWF0dGFjazsKK+mVt+S5hSA8IFwoZm9yXC1hXClcLWxvbmdcLXRpbWU7CivmnKAgPCBjb2xvclwtb2ZcLXRoZVwtbW9vbjsKK+WCs+i8uOmAmumBkyA8IHRyYW5zcG9ydFwtY2hhbm5lbDsKK+aUv+W6nOmDqOmWgCA8IGdvdmVybm1lbnRcLWJyYW5jaDsKK+aalCA8IG5hbWVcLW9mXC1hXC1jb3VudHJ5Owor6YyE6Z+zIDwgXChzb3VuZFwpXC1yZWNvcmRpbmc7CivmlrDogZ7pgLHliIogPCBuZXdzd2Vla1wtbWFnYXppbmU7CivmlLAgPCB0b3RhbGx5XC1leGhhdXN0ZWQ7Civkv53npZAgPCBibGVzc1wtYW5kXC1wcm90ZWN0Owor5o6rIDwgYmVcLW9uXC1uaWdodFwtd2F0Y2g7CivmjbfloLEgPCByZXBvcnRcLW9mXC1zdWNjZXNzOwor5o2lIDwgdG9cLWJlbmRcLXRoZVwtd3Jpc3Q7CivlnJjlnJMgPCB0b1wtaGF2ZVwtYVwtcmV1bmlvbjsKK+ebtOaOpeertueIrSA8IGRpcmVjdFwtY29tcGV0aXRvcjsKK+S4reWkruWnlOWToeacgyA8IGNlbnRyYWxcLWNvbW1pdHRlZTsKK+mGq+eZgue2k+mplyA8IG1lZGljYWxcLWV4cGVydGlzZTsKK+W7o+aSreWcsOWdgCA8IGJyb2FkY2FzdFwtYWRkcmVzczsKK+aEsCA8IGNsZWFybmVzc1wtb2ZcLW1pbmQ7Civmjojli5sgPCB0b1wtYXdhcmRcLWFuXC1ob25vcjsKK+WTgOmztCA8IGFcLXBsYWludGl2ZVwtd2hpbmU7CivnlJ/nianmrablmaggPCBiaW9sb2dpY2FsXC13ZWFwb247CivlvJYgPCBwaG9uZXRpY1wtZm9yXC0nJ3RlJyc7Civmh4LooYwgPCB0b1wta25vd1wtdGhlXC1yb3BlczsKK+i7jeWNgCA8IGFcLW1pbGl0YXJ5XC1yZWdpb247Civkv53niL4gPCBcKGFcLXBlcnNvbmFsXC1uYW1lXCk7CivosqHplqUgPCBmaW5hbmNpYWxcLW1hZ25hdGU7CivmmpfnhKHlpKnml6UgPCBjb21wbGV0ZVwtZGFya25lc3M7CivlsKggPCBzaGFnZ3lcLWhhaXJlZFwtZG9nOwor5ouN5pSdIDwgXChzaG9vdFwtYVwpXC1waWN0dXJlOwor5L615oiq6ICFIDwgXChjb21wdXRlclwpXC1oYWNrZXI7CivogIPpqZcgPCBcKHB1dFwtdG9cLXRoZVwpXC10ZXN0Owor5L+d5rqrIDwgaGVhdFwtcHJlc2VydmF0aW9uOwor6auY57Sa56CU56m2IDwgYWR2YW5jZWRcLXJlc2VhcmNoOwor5bGP5rCjIDwgaG9sZFwtb25lJydzXC1icmVhdGg7Civoh6rkuLvns7vntbEgPCBhdXRvbm9tb3VzXC1zeXN0ZW07Civnmb3ph5HmvKLlrq4gPCBidWNraW5naGFtXC1wYWxhY2U7CivpgYvooYzni4Dms4EgPCBvcGVyYXRpb25hbFwtc3RhdGU7CivlpIogPCBrYW5neGlcLXJhZGljYWxcLTM1Owor5Zuw6Zuj5Zyo5pa8IDwgdGhlXC1wcm9ibGVtXC1pc1wuXC5cLjsKK+aXpeiAs+abvOiqniA8IGdlcm1hbmljXC1sYW5ndWFnZTsKK+eon+izpiA8IG5hdHVyYWxcLWVuZG93bWVudDsKK+eXheWNsSA8IGJlXC1jcml0aWNhbGx5XC1pbGw7CivlgrPovLjljZTlrpogPCB0cmFuc2ZlclwtcHJvdG9jb2w7Civllr8gPCBjaGlycGluZ1wtb2ZcLWJpcmRzOwor5Za8IDwgdXNlZFwtcGhvbmV0aWNhbGx5Owor5Za5IDwgY2hlbWljYWxcLWNvbXBvdW5kOwor5L2155m8IDwgYmVcLWNvbXBsaWNhdGVkXC1ieTsKK+WTtSA8IHRoZVwtY3J5XC1vZlwtYVwtYmlyZDsKK+WTtCA8IGNyeWluZ1wtb2ZcLWluZmFudHM7CivosqHosr8gPCBmaW5hbmNlXC1hbmRcLXRyYWRlOwor5aSn5YiA6ZeK5panIDwgYm9sZFwtYW5kXC1kZWNpc2l2ZTsKK+eJueWIpeW+hemBhyA8IHNwZWNpYWxcLXRyZWF0bWVudDsKK+WQoiA8IHZvbWl0aW5nXC1vZlwtYVwtZG9nOwor5Yid5a246ICFIDwgYmVnaW5uaW5nXC1zdHVkZW50Owor5bCI55So57ay6LevIDwgZGVkaWNhdGVkXC1uZXR3b3JrOwor6KW/546L5q+NIDwgbmFtZVwtb2ZcLWFcLWdvZGRlc3M7CivkupTop5LlpKfmqJPlrpjlk6EgPCBwZW50YWdvblwtb2ZmaWNpYWw7CivmlZjliKnkup7mlocgPCBzeXJpYWNcLVwobGFuZ3VhZ2VcKTsKK+a8ouWtlyA8IGNoaW5lc2VcLWNoYXJhY3RlcjsKK+WuieepqSA8IHNtb290aFwtYW5kXC1zdGVhZHk7CivlgIggPCB0b1wtaW5kdWNlXC10b1wtY29tZTsKK+S/iCA8IHRvXC1pbmZvcm1cLXF1aWNrbHk7CivliLDpgqPlgIvmmYLlgJkgPCB1bnRpbFwtdGhpc1wtbW9tZW50Owor5LuCIDwgc3VycGx1c1wtb3JcLWV4Y2VzczsKK+WcqOmgreeJiCA8IG9uXC10aGVcLWZyb250XC1wYWdlOwor5bCI5qWtIDwgc3BlY2lhbGl6ZWRcLWZpZWxkOwor5LmqIDwgYVwtYmVuZFwtaW5cLWFcLXJpdmVyOwor6Lao5pmCIDwgdG9cLWZvbGxvd1wtZmFzaGlvbjsKK+S2sCA8IGZlYXRoZXJcLW9ybmFtZW50czsKK+S2liA8IGRpc2Vhc2VcLW9mXC10b25ndWU7CivktZwgPCB0b1wtcGxvdWdoXC1hbmRcLXNvdzsKK+S0iiA8IHRoZVwtY3Jvd1wtcGhlYXNhbnQ7Civku43oiIogPCBzdGlsbFwtXChyZW1haW5pbmdcKTsKK+SzpCA8IGFcLWtpbmRcLW9mXC1zdHJhbmdlOwor5LOZIDwgYVwtZWdyZXRcLWxpa2VcLWJpcmQ7Civmi5flj6MgPCBoYXJkXC10b1wtcHJvbm91bmNlOwor5K+lIDwgd2l0aFwtYVwtaGlnaFwtc2t1bGw7Civkr6IgPCBwYXJ0aWFsXC1wYXJhbHlzaXM7CivkrqsgPCBhXC1iaWdcLW11bGVcLWFuXC1hc3M7CivkrpogPCBkaXNlYXNlc1wtb2ZcLWhvcnNlOwor5K6QIDwgaW5cLWdvb2RcLWNvbmRpdGlvbjsKK+StlCA8IHN0ZWFtZWRcLWR1bXBsaW5nczsKK+SssCA8IGxpZ2h0XC1yZWZyZXNobWVudDsKK+SslSA8IHNvdW5kXC1vZlwtdGhlXC13aW5kOwor5KyNIDwgdGhlXC1zb3VuZFwtb2ZcLXdpbmQ7CivkrIYgPCBhXC1ibHVzdGVyaW5nXC1nYWxlOwor5KumIDwgdGhlXC1sb3dlclwtamF3Ym9uZTsKK+SrnyA8IGZhY2lhbFwtY29tcGxleGlvbjsKK+SrjSA8IHRvXC1ib3dcLW9uZScnc1wtaGVhZDsKK+SriSA8IGZhY2lhbFwtYXBwZWFyYW5jZTsKK+S4jeatoeiAjOaVoyA8IHBhcnRcLW9uXC1iYWRcLXRlcm1zOwor5KiVIDwgcG91cmluZ1wtd2l0aFwtcmFpbjsKK+S4reiPr+awkeWciyA8IHJlcHVibGljXC1vZlwtY2hpbmE7Civkp7ogPCB0aGVcLW1hbGVcLW9mXC1iaXJkczsKK+SmqiA8IHNvdW5kXC1vZlwtdGhlXC1kb29yOwor5ZaY5rCjIDwgdG9cLWJyZWF0aGVcLWRlZXBseTsKK+SmgyA8IHRvXC1kaWdcLXdpdGhcLWFcLWhvZTsKK+SjuyA8IGNvbG9yXC1vZlwtdGhlXC13aW5lOwor5ouc5YCSIDwgcHJvc3RyYXRlXC1vbmVzZWxmOwor5rOi6Jit6KqeIDwgcG9saXNoXC1cKGxhbmd1YWdlXCk7Civkop0gPCB0aGVcLW5leHRcLWluXC1vcmRlcjsKK+ShtyA8IG5vaXNlXC1vZlwtdmVoaWNsZXM7CivkoaogPCBmYW5cLW9mXC1hXC1jYXJyaWFnZTsKK+ShmSA8IGFuXC1hcm1lZFwtY2FycmlhZ2U7CivknpUgPCBjb2xvclwtb2ZcLXRoZVwtZmlyZTsKK+SegiA8IGZhaXJseVwtcHJvc3Blcm91czsKK+aJjeaAnSA8IGltYWdpbmF0aXZlXC1wb3dlcjsKK+SduiA8IHRvXC1waWVyY2VcLXRocm91Z2g7CivknbMgPCB0b1wta2lsbFwtZm9yXC1tb25leTsKK+SdsiA8IGZhcmV3ZWxsXC1wcmVzZW50czsKK+S4pumnlem9iumphSA8IHJ1blwtbmVja1wtYW5kXC1uZWNrOwor5rOi6Z+zIDwgYm9laW5nXC1cKGFpcmNyYWZ0XCk7CivovZ/ngrjmqZ8gPCBib21iZXJcLVwoYWlyY3JhZnRcKTsKK+ScoiA8IGNydWVsXC1hbmRcLXZpb2xlbnQ7Civpm6Pku6Xmh4nku5ggPCBoYXJkXC10b1wtZGVhbFwtd2l0aDsKK+SaoCA8IHVuYnJva2VuXC1maXJld29vZDsKK+SanSA8IG5ld1wtZ3Jvd2luZ1wtaG9ybnM7CivkmpogPCBob3JuXC1vZlwtYW5cLWFuaW1hbDsKK+SakSA8IHRvXC1zdGVhbFwtYVwtZ2xhbmNlOwor5JqAIDwgdG9cLXNlZVwtc3RlYWx0aGlseTsKK+SZtCA8IHRvXC1zb2FyXC1hc1wtYVwtYmlyZDsKK+SZqiA8IGFcLWxvb3BcLWZvclwtYnV0dG9uOwor5rSb5p2J56Ov5pmC5aCxIDwgbG9zXC1hbmdlbGVzXC10aW1lczsKK+SYjiA8IG5hbWVcLW9mXC1hblwtaW5zZWN0Owor56Gs5Lu25bmz6Ie6IDwgaGFyZHdhcmVcLXBsYXRmb3JtOwor5Je5IDwgaGFpcnlcLWNhdGVycGlsbGFyOwor5L2c5qWtIDwgc2Nob29sXC1hc3NpZ25tZW50Owor5a6Y5pa56Kqe6KiAIDwgb2ZmaWNpYWxcLWxhbmd1YWdlOwor6byT6IieIDwgaGVhcnRlbmluZ1wtXChuZXdzXCk7CivklacgPCB6aXphbmlhXC1sYXRpZm9saWE7CivklYYgPCByb3VuZFwtc3RyYXdcLXF1aWx0Owor6Yar5a245a62IDwgbWVkaWNhbFwtc2NpZW50aXN0Owor5JObIDwgbW9sZWN1bGFyXC1mb3JtdWxhOwor5JK9IDwgaWxsaWNpdW1cLWFuaXNhdHVtOwor5JKQIDwgZGlzdHVyYmVkXC1pblwtbWluZDsKK+SRvCA8IG9jZWFuXC1nb2luZ1wtbGluZXI7CivljJfkuqzov5Hpg4ogPCBzdWJ1cmJcLW9mXC1iZWlqaW5nOwor5JCgIDwgYmV0d2VlblwtdGhlXC1mbGVzaDsKK+SQmCA8IHRvXC1sYXVnaFwtaGVhcnRpbHk7Civkj7AgPCBhXC1raW5kXC1vZlwtaW5zZWN0czsKK+iPr+ebm+mgkyA8IHdhc2hpbmd0b25cLVwoZFwuY1wuXCk7Civkja0gPCBhXC1ld2VcLW9yXC1zaGVcLWdvYXQ7CivkjYcgPCBmbGF0XC1ib3R0b21cLWNyb2NrOwor5IyoIDwgdGhpblwtc2lsa1wtZmFicmljczsKK+SLuyA8IHRvXC1zcGluXC1hbmRcLXdlYXZlOwor5Iu6IDwgYVwtc3dpbmdcLWFcLWNydXBwZXI7Civki5ggPCB0b1wtaGFuZFwtYnlcLWFcLXJvcGU7CivmlofljJbnmoTkuqTmtYEgPCBjdWx0dXJhbFwtZXhjaGFuZ2U7Civkiq8gPCBncmFpbnNcLXdpdGhcLWJlYXJkOwor5ImMIDwgY3J1ZGVcLWJhbWJvb1wtbWF0czsKK+SIoCA8IGJvb2tzXC1hbmRcLXZvbHVtZXM7Civmlq/mtJvkvJDlhYvoqp4gPCBzbG92YWtcLVwobGFuZ3VhZ2VcKTsKK+ahiOaDhSA8IGRldGFpbHNcLW9mXC1hXC1jYXNlOwor5Lif6aOv56KXIDwgdG9cLWxvc2VcLW9uZScnc1wtam9iOwor5ISJIDwgYVwtcml0ZVwtb3JcLXNlcnZpY2U7CivosqHnpZ4gPCB0aGVcLWdvZFwtb2ZcLXdlYWx0aDsKK+SBhCA8IHRvXC1jbG9zZVwtdGhlXC1leWVzOwor5IC5IDwgdG9cLXdpbmtcLWV5ZWxhc2hlczsKK+avlOi8g+aWsCA8IGNvbXBhcmF0aXZlbHlcLW5ldzsKK+O/gyA8IGFuXC1veFwtaGVhZGVkXC1ib2lsOwor476xIDwgaW5jdXJhYmxlXC1kaXNlYXNlOwor472NIDwgYW5cLWVhcnRoZW5cLXZlc3NlbDsKK+O6vyA8IGFcLWphZGVcLWxpa2VcLXN0b25lOwor5aSW5ZyL5peF6YGK6ICFIDwgZm9yZWlnblwtdHJhdmVsbGVyOwor54++54uAIDwgY3VycmVudFwtc2l0dWF0aW9uOwor5bCP5aCxIDwgdGFibG9pZFwtbmV3c3BhcGVyOwor47a/IDwgdGhlXC1zbW9rZVwtd2VudFwtdXA7CivjtrQgPCBhXC12ZXJ5XC1ncmVhdFwtZmlyZTsKK+S4gOiIrOWOn+WJhyA8IGdlbmVyYWxcLXByaW5jaXBsZTsKK+O1qyA8IHdhdGVyXC1ndXNoaW5nXC1vdXQ7CivjtY0gPCBmaWxsZWRcLXdpdGhcLXdhdGVyOwor47WEIDwgbmFtZVwtb2ZcLWFcLWR5bmFzdHk7CivmnJ3ogZYgPCBtYWtlXC1hXC1waWxncmltYWdlOwor47OcIDwgdGhlXC1mbG93aW5nXC13YXRlcjsKK+OysiA8IGZpbmVcLWNvdHRvblwtY2xvdGg7CivjspggPCBmaW5lXC13b29sZW5cLWNsb3RoOwor47KLIDwgYVwta2luZFwtb2ZcLWFuaW1hbHM7CivjsoMgPCBzbW9vdGhcLWFuZFwtY3VydmVkOwor5L+d5YGlIDwgaGVhbHRoXC1wcm90ZWN0aW9uOwor46+/IDwgaGFuZGxlXC1vZlwtYVwtbGFkbGU7Civjr6YgPCB0aGVcLWdhbWVcLW9mXC1jaGVzczsKK+a3q+awtCA8IHNleHVhbFwtc2VjcmV0aW9uczsKK+OutSA8IGNvbW1vblwtc2FuZGFsd29vZDsKK+OuqCA8IGNvZGl1bVwtbWFjcm9uYXR1bTsKK+OumiA8IHRoZVwtY2hlc3RudXRcLXRyZWU7CivjrJsgPCB0b1wtZHJ5XC1pblwtdGhlXC1zdW47CivlsITpoLvlubLmk74gPCByYWRpb1wtaW50ZXJmZXJlY2U7Civjqa4gPCB0b1wtbGlmdFwtdXBcLW9yXC1vZmY7CivjqakgPCB0b1wtY29tZVwtdG9cLWFuXC1lbmQ7CivjqZkgPCBhXC1jb3JrXC1vclwtc3RvcHBlcjsKK+OooiA8IHRvXC1yaXBcLW9wZW5cLWZsZXNoOwor6Zu75L+h6JmfIDwgZWxlY3RyaWNhbFwtc2lnbmFsOwor5bCL5ZGzIDwgdG9cLXRoaW5rXC1zdGhcLW92ZXI7Civmnb/nhZkgPCBwbHVnXC1cKG9mXC10b2JhY2NvXCk7Civms6joppYgPCB3YXRjaFwtYXR0ZW50aXZlbHk7Civjo6IgPCB0b1wtcmVzdFwtZnJvbVwtd29yazsKK+OjkyA8IGxpdGVyYXJ5XC1pblwtdGFzdGU7Civjo40gPCBhXC1yYWlzZWRcLXBsYXRmb3JtOwor46KuIDwgdG9cLXVuc3RyaW5nXC1hXC1ib3c7CivjopEgPCBhXC1jb2xsYXBzZWRcLWhvdXNlOwor46KEIDwgYVwta2luZFwtb2ZcLXV0ZW5zaWw7Civms5Xoqp4gPCBmcmVuY2hcLVwobGFuZ3VhZ2VcKTsKK+OhnyA8IGJlZFwtbWF0c1wtZm9yXC1iYWJ5Owor46C3IDwgYVwtdmVzc2VsXC1mb3JcLXJpY2U7CivjoKUgPCBydWdnZWRcLWFuZFwtdW5ldmVuOwor45+0IDwgbHVtcFwtb25cLXRoZVwtaGlsbHM7Civjn6QgPCB6aHVhbmdcLWluXC1ndWFuZ3hpOwor45+DIDwgdG9cLWhhdmVcLWNoYXJnZVwtb2Y7Civjnq0gPCBuYW1lXC1vZlwtYW5cLWlzbGFuZDsKK+Wbm+mdouWFq+aWuSA8IGluXC1hbGxcLWRpcmVjdGlvbnM7CivjnYwgPCBwcm9sb25nZWRcLWlsbG5lc3M7Civjm7QgPCB0b1wtYW5nZXJcLXRvXC1hbm5veTsKK+OahSA8IHRvXC13b3JzaGlwXC1vZlwtZ29kOwor45mpIDwgYW5cLWVuY2xvc2luZ1wtd2FsbDsKK+OYpiA8IHdhbGxcLW1hZGVcLW9mXC1zb2lsOwor45iaIDwgYW5ncnlcLWFpclwtb2ZcLWxvb2s7Civjl7wgPCBlYXRpbmdcLW9yXC10YWxraW5nOwor45elIDwgc291bmRcLW9mXC1zdHJpa2luZzsKK+OWpyA8IGNhblwtbm90XC1zZWVcLWNsZWFyOwor45SdIDwgc3Ryb25nXC1yZXNpc3RhbmNlOwor45O+IDwgdG9cLXdvdW5kXC10aGVcLXNraW47Civnjajnq4sgPCB0b1wtYmVcLWluZGVwZW5kZW50Owor45GdIDwgdG9cLW1ha2VcLWFcLWZvb2xcLW9mOwor45GPIDwgdG9cLXN0YW5kXC1hbmRcLXdhaXQ7CivjkYogPCBhXC1raW5kXC1vZlwtZGlzZWFzZTsKK+enmOabuOmVtyA8IHNlY3JldGFyeVwtZ2VuZXJhbDsKK+i1sOWHuiA8IHRvXC1tb3ZlXC1hd2F5XC1mcm9tOwor6IGy5o+0IDwgc3VwcG9ydFwtXChhXC1jYXVzZVwpOwor56Sm6JePIDwgbWluZXJhbFwtcmVzb3VyY2VzOwor5a+r5L+hIDwgdG9cLXdyaXRlXC1hXC1sZXR0ZXI7CivkuInntq0gPCB0aHJlZVwtZGltZW5zaW9uYWw7CivnqbTlsYUgPCB0b1wtbGl2ZVwtaW5cLWFcLWNhdmU7Civni4Doqp4gPCBhZHZlcmJpYWxcLWFkanVuY3Q7CivlnKjlpKflpJrmlbjmg4Xms4HkuIsgPCBpblwtbW9zdFwtaW5zdGFuY2VzOwor6YWs6YeRIDwgXChtb25ldGFyeVwpXC1yZXdhcmQ7CivlnIvlrrblronlhaggPCBuYXRpb25hbFwtc2VjdXJpdHk7CivosqHmlL8gPCBmaW5hbmNlc1wtXChwdWJsaWNcKTsKK+a1t+a0i+a6q+W6piA8IG9jZWFuXC10ZW1wZXJhdHVyZTsKK+e2sumam+WNlOWumiA8IGludGVybmV0XC1wcm90b2NvbDsKK+WkluS6pOmXnOS/giA8IGZvcmVpZ25cLXJlbGF0aW9uczsKK+WuieWNsSA8IHNhZmV0eVwtYW5kXC1kYW5nZXI7Civlt7TlhYvlpI/osawgPCBiZXJrc2hpcmVcLVwoc3dpbmVcKTsKK+WQjeeosSA8IG5hbWVcLVwob2ZcLWFcLXRoaW5nXCk7Civnianos6ogPCBcKHBoeXNpY2FsXClcLW1hdHRlcjsKK+WQg+epvyA8IGZvb2RcLWFuZFwtY2xvdGhpbmc7CivoqIrmoYblgrPpgIHoq5blo4cgPCBmcmFtZVwtcmVsYXlcLWZvcnVtOwor56m05L2NIDwgYWN1cHVuY3R1cmVcLXBvaW50Owor5a245L2NIDwgZWR1Y2F0aW9uYWxcLWxldmVsOwor5ZCE55WMIDwgYWxsXC13YWxrc1wtb2ZcLWxpZmU7CivogLPlrZAgPCBoYW5kbGVcLVwob25cLWFcLXBvdFwpOwor5q2Q5rSy5Lq6IDwgZXVyb3BlYW5cLVwocGVyc29uXCk7CivmgJ3ntq0gPCBcKGxpbmVcLW9mXClcLXRob3VnaHQ7CivooZvnlJ/pg6ggPCBoZWFsdGhcLWRlcGFydG1lbnQ7Civmpa3nlYzmqJnmupYgPCBpbmR1c3RyeVwtc3RhbmRhcmQ7Civku6XlhY0gPCBpblwtb3JkZXJcLXRvXC1hdm9pZDsKK+S4gOWNg+S4g+eZvuiQrCA8IHNldmVudGVlblwtbWlsbGlvbjsKK+S6i+WvpiA8IFwodGhlXClcLWZhY3RcLVwodGhhdFwpOwor5pys5oCnIDwgbmF0dXJhbFwtaW5zdGluY3RzOwor6Zuj6aGMIDwgZGlmZmljdWx0XC1wcm9ibGVtOwor5aeU5ZOh5pyD5pyD6K2wIDwgY29tbWl0dGVlXC1tZWV0aW5nOwor6K6K55u4IDwgaW5cLWRpc2d1aXNlZFwtZm9ybTsKK+iyoeWLmSA8IGZpbmFuY2lhbFwtYWZmYWlyczsKK+acjeW9uSA8IHNlcnZlXC1pblwtdGhlXC1hcm15Owor6Yar55mCIDwgbWVkaWNhbFwtdHJlYXRtZW50Owor6Zm45Z+65bCO5b2IIDwgbGFuZFwtYmFzZWRcLW1pc3NsZTsKK+aVrOmHjSA8IHRvXC1yZXNwZWN0XC1kZWVwbHk7CivmmpfmsrMgPCB1bmRlcmdyb3VuZFwtcml2ZXI7CivpoLjmpI4gPCBjZXJ2aWNhbFwtdmVydGlicmE7CivntrLpu54gPCBub2RlXC1pblwtYVwtbmV0d29yazsKK+m7keWuoiA8IGhhY2tlclwtXChjb21wdXRlclwpOwor57qW6IqvIDwgY29yZVwtXChvZlwtYVwtZmliZXJcKTsKK+e3qOmaiiA8IGZvcm1cLWludG9cLWNvbHVtbnM7CivmlZfpgIAgPCByZXRyZWF0XC1pblwtZGVmZWF0Owor5pys5ZyLIDwgb25lJydzXC1vd25cLWNvdW50cnk7CivlpKrlubPmtIsgPCB0aGVcLXBhY2lmaWNcLW9jZWFuOwor5Y6f5Zug5pivIDwgdGhlXC1yZWFzb25cLWlzXC1cLlwuXC47CivoqIjnrpfmqZ/lt6Xmpa0gPCBjb21wdXRlclwtaW5kdXN0cnk7Civopb/nlarpm4Xmm7ggPCBib29rXC1vZlwtemVwaGFuaWFoOwor6Kqe6KiAIDwgXChzcG9rZW5cKVwtbGFuZ3VhZ2U7CivkuIDlubTljYogPCBhXC15ZWFyXC1hbmRcLWFcLWhhbGY7CivlsIjlrrboqZXoq5YgPCBleHBlcnRcLWNvbW1lbnRhcnk7CivpmL/niL7lt7TlsLzkup7kurogPCBhbGJhbmlhblwtXChwZXJzb25cKTsKK+S4jeWxkSA8IGRpc2RhaW5cLXRvXC1kb1wtc3RoOwor5ZqH5b6X55m85oqWIDwgdHJlbWJsZVwtd2l0aFwtZmVhcjsKK+WNiuelqCA8IGhhbGZcLXByaWNlXC10aWNrZXQ7CivnjajllLEgPCBcKGluXC1zaW5naW5nXClcLXNvbG87CivkuI3nlJjlv4MgPCBub3RcLXJlY29uY2lsZWRcLXRvOwor5Zub6ZaA6L2O6LuKIDwgc2VkYW5cLVwobW90b3JcLWNhclwpOwor56eB5Lq6IDwgcHJpdmF0ZVwtXChjaXRpemVuXCk7CivnjbLlh4YgPCBvYnRhaW5cLXBlcm1pc3Npb247CivlrqLmiLbmqZ8gPCBjbGllbnRcLVwoY29tcHV0ZXJcKTsKK+asiumRsCA8IGtleXNcLW9mXC1hdXRob3JpdHk7CivlpLHmpa3njocgPCB1bmVtcGxveW1lbnRcLXJhdGU7CivniIbnrqEgPCBjYXJ0cmlkZ2VcLWlnbml0ZXI7CivnpKbluoogPCBcKG1pbmVyYWxcKVwtZGVwb3NpdDsKK+aEm+S4jemHi+aJiyA8IGZvbmRsZVwtYWRtaXJpbmdseTsKK+atouihgCA8IHN0YW5jaFwtXChibGVlZGluZ1wpOwor5ZCN5a2XIDwgXChhXC1wZXJzb24nJ3NcKVwtbmFtZTsKK+itpuWvn+WxgCA8IHBvbGljZVwtZGVwYXJ0bWVudDsKK+WPsOW5oyA8IG5ld1wtdGFpd2FuXC1kb2xsYXI7Civpoaflj4ogPCB0YWtlXC1pbnRvXC1hY2NvdW50Owor5q245b+D6ICFIDwgcmVsaWdpb3VzXC1jb252ZXJ0Owor5rKS6Zec5L+CIDwgaXRcLWRvZXNuJyd0XC1tYXR0ZXI7CivkuIvljrsgPCBnb1wtZG93blwtXChkZXNjZW5kXCk7Civlvp7poK3liLDohbMgPCBmcm9tXC1oZWFkXC10b1wtZm9vdDsKK+WLu+eosSA8IHdlbGxcLXByb3BvcnRpb25lZDsKK+S4jeWKmyA8IG5vdFwtZG9cLW9uZScnc1wtYmVzdDsKK+mBk+isnSA8IHRvXC1leHByZXNzXC10aGFua3M7CivnoZ3nhZkgPCBzbW9rZVwtXChmcm9tXC1ndW5zXCk7Civol53kurogPCBwZXJmb3JtaW5nXC1hcnRpc3Q7CivljIXlnJLlhZIgPCBidXlcLXRoZVwtd2hvbGVcLWxvdDsKK+aVmee3tCA8IFwoYXRobGV0ZScnc1wpXC1jb2FjaDsKK+WHuumZoiA8IHRvXC1sZWF2ZVwtaG9zcGl0YWw7CivpmL/ph4wgPCBhbGlcLVwocHJvcGVyXC1uYW1lXCk7CivkuIDouqvmsZcgPCBzd2VhdGluZ1wtYWxsXC1vdmVyOwor6ZmE6L+RIDwgXChpblwtdGhlXClcLXZpY2luaXR5Owor5buj5pKt57ay6LevIDwgYnJvYWRjYXN0XC1uZXR3b3JrOwor56yo5Y+j5ouZ6IiMIDwgYXdrd2FyZFwtaW5cLXNwZWVjaDsKK+eJjOaokyA8IGRlY29yYXRlZFwtYXJjaHdheTsKK+W3tOaWr+WFi+iqniA8IGJhc3F1ZVwtXChsYW5ndWFnZVwpOwor54i25q+NIDwgZmF0aGVyXC1hbmRcLW1vdGhlcjsKK+iPr+WMl+W5s+WOnyA8IG5vcnRoXC1jaGluYVwtcGxhaW47CivmlZHmganoqIjlioMgPCBwbGFuXC1vZlwtc2FsdmF0aW9uOwor5LiqIDwgbnVtZXJhcnlcLWFkanVuY3Q7Civph4wgPCB1bml0XC1vZlwtZGlzdGFuY2U7CivpmLMgPCAnJ21hbGUnJ1wtcHJpbmNpcGxlOwor6KidIDwgZXhwcmVzc1wtc3VycHJpc2U7Civpu40gPCBnbHV0aW5vdXNcLW1pbGxldDsKK+WJpyA8IHRoZWF0cmljYWxcLXBsYXlzOwor6JiCIDwgc3RhbWVuXC1vclwtcGlzdGlsOwor5oy6IDwgdG9cLXN0YW5kXC11cHJpZ2h0Owor56GAIDwgZm91bmRhdGlvblwtc3RvbmU7CivoiIUgPCBtb3RoZXInJ3NcLWJyb3RoZXI7CivokKcgPCBjb21tb25cLWFydGVtaXNpYTsKK+S/uiA8IHBlcnNvbmFsXC1wcm9ub3VuOwor546yIDwgdGlua2xpbmdcLW9mXC1qYWRlOwor5o2pIDwgdHdpc3RcLXdpdGhcLWhhbmRzOwor6bubIDwgYmxhY2tlblwtZXllYnJvd3M7CivlpoYgPCB0b1wtYWRvcm5cLW9uZXNlbGY7CivluaIgPCBjYXJyaWFnZVwtY3VydGFpbjsKK+airSA8IHdlYXZlcicnc1wtc2h1dHRsZTsKK+a8qiA8IHJpcHBsZXNcLW9uXC13YXRlcjsKK+ectyA8IHRha2VcLWludGVyZXN0XC1pbjsKK+WLiyA8IG1lcml0b3Jpb3VzXC1kZWVkOwor55StIDwgdGhlcmVcLWlzXC1ub1wtbmVlZDsKK+eloCA8IGFuY2VzdHJhbFwtdGVtcGxlOwor6IiUIDwgbGlja1wtd2l0aFwtdG9uZ3VlOwor6JWKIDwgdW5vcGVuZWRcLWZsb3dlcnM7CivotaMgPCBqaWFuZ3hpXC1wcm92aW5jZTsKK+i3tyA8IHJhaXNlXC1vbmUnJ3NcLWZvb3Q7CivliYEgPCBjaG9wXC1ieVwtcG91bmRpbmc7CivolrAgPCBhXC1tZWRpY2luYWxcLWhlcmI7Civlj7wgPCBob2xkaW5nXC1pblwtbW91dGg7CivojbwgPCBiaXR0ZXJcLXZlZ2V0YWJsZTsKK+W+mSA8IG1vdmVcLW9uZScnc1wtYWJvZGU7CivmtpQgPCByaXZlclwtaW5cLXNoYWFueGk7CivmvaIgPCBleHBhbnNlXC1vZlwtd2F0ZXI7Civnp7ggPCBzdGFsa3NcLW9mXC1taWxsZXQ7CivoooggPCBidWRkaGlzdFwtY2Fzc29jazsKK+ePniA8IGtpbmRcLW9mXC1uZWNrbGFjZTsKK+WVviA8IHdhaWxpbmdcLW9mXC1jaGlsZDsKK+S6uyA8IHJhZGljYWxcLW51bWJlclwtOTsKK+WkmSA8IGVhcmx5XC1pblwtbW9ybmluZzsKK+m5mCA8IGFcLWtpbmRcLW9mXC1waWdlb247CivlqKkgPCBnaXZlXC1iaXJ0aFwtY2hpbGQ7Civlp50gPCBhXC1iZWF1dGlmdWxcLWdpcmw7Civmh5EgPCBiZVwtc2lja1wtYXRcLWhlYXJ0Owor6ZSJIDwgY2FycGVudGVyJydzXC1maWxlOwor5rSxIDwgYVwtbGFrZVwtaW5cLXl1bm5hbjsKK+idiCA8IHNtYWxsXC1ncmVlblwtZnJvZzsKK+W4vCA8IHdvbWVuJydzXC1oZWFkZ2VhcjsKK+eLjiA8IGJlXC1mYW1pbGlhclwtd2l0aDsKK+iDqiA8IGFycmFuZ2VcLWluXC1vcmRlcjsKK+ixoiA8IGRvbWVzdGljXC1hbmltYWxzOwor55yHIDwgYmxpbmRcLWluXC1vbmVcLWV5ZTsKK+e+vyA8IGxlZ2VuZGFyeVwtYXJjaGVyOwor6IqpIDwgc2FsdFwtbWFyc2hcLXBsYW50Owor6IytIDwgYW5cLWFxdWF0aWNcLWdyYXNzOwor6JOWIDwgY2FzdG9yXC1vaWxcLXBsYW50Owor5YKnIDwgZW50ZXJ0YWluXC1ndWVzdHM7CivolpwgPCBldmVyZ3JlZW5cLXNocnViczsKK+i2uiA8IHNpdFwtY3Jvc3NcLWxlZ2dlZDsKK+akuSA8IGFcLWNob3BwaW5nXC1ib2FyZDsKK+mciCA8IHRvcnJlbnRpYWxcLXJhaW5zOwor5pupIDwgaW5cLWFuY2llbnRcLXRpbWVzOwor5qCMIDwgc3VwcG9ydGluZ1wtYmxvY2s7Civlk5ogPCBjaGVtaWNhbFwtZWxlbWVudDsKK+etjCA8IGJhbWJvb1wtZmlzaFwtdHJhcDsKK+a1jSA8IGlycmlnYXRpb25cLWRpdGNoOwor54yBIDwgYVwta2luZFwtb2ZcLW1vbmtleTsKK+WVtiA8IFwtZFwtXCtcLWluZVwtXChjaGVtXC5cKTsKK+msryA8IHNhY3JpZmljaWFsXC13aW5lOwor6bK3IDwgcGFncm9zb211c1wtbWFqb3I7CivogbEgPCBiZW50XC1hbmRcLXR3aXN0ZWQ7CivliqIgPCBwdXRcLWZvcnRoXC1lZmZvcnQ7Civon6ogPCBhXC1raW5kXC1vZlwtY2ljYWRhOwor6LWGIDwgZmFyZXdlbGxcLXByZXNlbnQ7Civln68gPCBjb3Zlclwtd2l0aFwtZWFydGg7CivpspQgPCBraW5kXC1vZlwtc3R1cmdlb247CivnvaggPCBtZWRpY2FsXC1jb21wcmVzczsKK+WrnCA8IGh1c2JhbmQnJ3NcLXBhcmVudDsKK+a8pCA8IG1hcmluYXRlXC1pblwtc2FsdDsKK+WahiA8IGdpdmVcLWZvcnRoXC1zb3VuZDsKK+iWuSA8IGN5cGVydXNcLXJvdHVuZHVzOwor6IyGIDwgc3BlY2llc1wtb2ZcLWdyYXNzOwor56Oo5a2QIDwgbWlsbFwsXC1taWxsc3RvbmVzOwor5YWx55Si6buo6YOo6ZqKIDwgY29tbXVuaXN0XC1mb3JjZXM7CivlkI7kurogPCBsYXRlclwtZ2VuZXJhdGlvbjsKK+iIquepuuavjeiJpiA8IGFpcmNyYWZ0XC1jYXJyaWVyOwor6K2Y5a2XIDwgdG9cLWxlYXJuXC10b1wtcmVhZDsKK+S4reWci+Wkp+mZuCA8IGNoaW5lc2VcLW1haW5sYW5kOwor5b2x5YOP5pyD6K2wIDwgdmlkZW9cLWNvbmZlcmVuY2U7Civlv4PlvpcgPCBrbm93bGVkZ2VcLWdhaW5lZDsKK+aCsuatoembouWQiCA8IGpveXNcLWFuZFwtc29ycm93czsKK+eZvumHjOaMkeS4gCA8IG9uZVwtaW5cLWFcLWh1bmRyZWQ7Civnmb3ntLDog54gPCB3aGl0ZVwtYmxvb2RcLWNlbGw7Civoqp7ms5XooZPoqp4gPCBncmFtbWF0aWNhbFwtdGVybTsKK+axguWpmiA8IHByb3Bvc2VcLW1hcnJpYWdlOwor57eo55uuIDwgbWFrZVwtYVwtY2F0YWxvZ3VlOwor6Zu75rWBIDwgZWxlY3RyaWNcLWN1cnJlbnQ7Civln47pjq4gPCBjaXRpZXNcLWFuZFwtdG93bnM7Civlp5Tlk6EgPCBjb21taXR0ZWVcLW1lbWJlcjsKK+WjgeeVqyA8IG11cmFsXC1cKHBhaW50aW5nXCk7Civlp5PlkI0gPCBuYW1lXC1hbmRcLXN1cm5hbWU7CivmmK/lkKYgPCB3aGV0aGVyXC1cKG9yXC1ub3RcKTsKK+e4veapnyA8IGNlbnRyYWxcLWV4Y2hhbmdlOwor6YGO56iLIDwgY291cnNlXC1vZlwtZXZlbnRzOwor54aK54y0IDwgYXNzYW1lc2VcLW1hY2FxdWU7CivlpKfmnIMgPCBnZW5lcmFsXC1hc3NlbWJseTsKK+WfuuiqvyA8IFwoc3BlZWNoXClcLWtleW5vdGU7CivoqqTmnIMgPCB0b1wtbWlzdW5kZXJzdGFuZDsKK+abtOmrmOaAp+iDvSA8IGhpZ2hcLXBlcmZvcm1hbmNlOwor6LaF6auY6YCf5LmZ5aSq57ay6LevIDwgZ2lnYWJpdFwtZXRoZXJuZXQ7CivoqILnpaggPCB0b1wtaXNzdWVcLXRpY2tldHM7Civlo73moYMgPCBiaXJ0aGRheVwtcGVhY2hlczsKK+i7jeS6i+enkeWtuCA8IG1pbGl0YXJ5XC1zY2llbmNlOwor5pyN5YuZ5o+Q5L6b6ICFIDwgc2VydmljZVwtcHJvdmlkZXI7Civlmajlrpjnp7vmrpYgPCBvcmdhblwtdHJhbnNwbGFudDsKK+enu+WLleW8j+mbu+ipsSA8IG1vYmlsZVwtdGVsZXBob25lOwor5be06LGGIDwgXChwdXJnaW5nXClcLWNyb3RvbjsKK+WjveaYnyA8IGdvZFwtb2ZcLWxvbmdldml0eTsKK+W9seWDj+iZleeQhiA8IGltYWdlXC1wcm9jZXNzaW5nOwor5YWl6L+3IDwgdG9cLWJlXC1mYXNjaW5hdGVkOwor5piO5LujIDwgdGhlXC1taW5nXC1keW5hc3R5Owor5oCn6Zec5L+CIDwgc2V4dWFsXC1yZWxhdGlvbnM7Civkurrkuovpg6jploAgPCBwZXJzb25uZWxcLW9mZmljZTsKK+mAgOelqCA8IGJvdW5jZVwtXChhXC1jaGVja1wpOwor5r2b5Zyo5aiB6ISFIDwgcG90ZW50aWFsXC10aHJlYXQ7Civmrq/lhIDppKggPCB0aGVcLXVuZGVydGFrZXInJ3M7CivntbHoqIjmlbjmk5ogPCBzdGF0aXN0aWNhbFwtZGF0YTsKK+e5g+WtkCA8IGVtYnJvaWRlcnlcLWZyYW1lOwor5b6X5Ye6IDwgb2J0YWluXC1cKHJlc3VsdHNcKTsKK+WFjeiyuyA8IGZyZWVcLVwob2ZcLWNoYXJnZVwpOwor6YGy5pquIDwgcGFzdFwtb25lJydzXC1wcmltZTsKK+eglOiojuacgyA8IGRpc2N1c3Npb25cLWZvcnVtOwor5LiN5YiG6Z2S57SF55qC55m9IDwgaW5kaXNjcmltaW5hdGVseTsKK+eJueWumuWQq+e+qSA8IHNwZWNpZmljXC1tZWFuaW5nOwor6YeR6J6N57O757WxIDwgZmluYW5jaWFsXC1zeXN0ZW07CivlsI7oh7TmrbvkuqEgPCB0b1wtbGVhZFwtdG9cLWRlYXRoOwor5p2/5LiK6YeY6YeYIDwgdGhhdFwtY2xpbmNoZXNcLWl0Owor57ay5qmLIDwgXChuZXR3b3JrXClcLWJyaWRnZTsKK+WIl+eCuiA8IGJlXC1jbGFzc2lmaWVkXC1hczsKK+WpmuWkluaAp+aOpeinuCA8IGV4dHJhbWFyaXRhbFwtc2V4Owor5ZyL6ZiyIDwgbmF0aW9uYWxcLWRlZmVuY2U7CivmlYXlsYUgPCBmb3JtZXJcLXJlc2lkZW5jZTsKK+azoue+juavlOmHjeioiCA8IGJhdW1lXC1oeWRyb21ldGVyOwor6b2ZIDwgcHJvamVjdGluZ1wtdGVldGg7CivpubYgPCBzYWx0eVwtYW5kXC1iaXR0ZXI7Civlib3mgo0gPCBzd2lmdFwtYW5kXC1maWVyY2U7CivmrablrpggPCBtaWxpdGFyeVwtYXR0YWNoZTsKK+S4jeetiemCiuS4ieinkuW9oiA8IHNjYWxlbmVcLXRyaWFuZ2xlOwor6YGV5oayIDwgdW5jb25zdGl0dXRpb25hbDsKK+mvhiA8IHRoZVwtc2thdGVcLW9yXC1yYXk7Civli57li5UgPCBcKHBoeXNpY2FsXClcLWxhYm9yOwor54K655SfIDwgdG9cLW1ha2VcLWFcLWxpdmluZzsKK+mbu+iFpuS8gealrSA8IGNvbXB1dGVyXC1jb21wYW55Owor5YWs576KIDwgcmFtXC1cKG1hbGVcLXNoZWVwXCk7CivoiLnpmoogPCBmbGVldFwtXChvZlwtc2hpcHNcKTsKK+mtrCA8IHNvbGVcLW9yXC1mbG91bmRlcjsKK+W7o+W3niA8IGd1YW5nemhvdVwtXChjaXR5XCk7CivllInogbLlmIbmsKMgPCBoZWF2ZVwtZGVlcFwtc2lnaHM7CivkuI3lpb3mhI/mgJ0gPCBmZWVsXC1lbWJhcnJhc3NlZDsKK+mbu+WKmyA8IGVsZWN0cmljYWxcLXBvd2VyOwor6KOc6KGAIDwgZW5yaWNoXC10aGVcLWJsb29kOwor6aq0IDwgYVwtcHV0cmlkXC1jYXJjYXNlOwor5aSW5ZyL5oqV6LOH6ICFIDwgZm9yZWlnblwtaW52ZXN0b3I7CivpppggPCBjdXRcLW9mZlwtbGVmdFwtZWFyOwor5be05biD5Lqe5paw5bm+5YWn5LqeIDwgcGFwYXVcLW5ld1wtZ3VpbmVhOwor6LOH5paZ6YePIDwgcXVhbnRpdHlcLW9mXC1kYXRhOwor57eo6Lyv5a6kIDwgZWRpdG9yaWFsXC1vZmZpY2U7Civpo4AgPCBzb3VnaGluZ1wtb2ZcLXdpbmQ7Civnh4jlhYkgPCBcKHN0YWdlXClcLWxpZ2h0aW5nOwor6Z+dIDwgbGVhdGhlclwtYXJtXC1iYW5kOwor6Z+KIDwgYVwtY2FzZVwtZm9yXC1hXC1ib3c7CivpnrYgPCBiaWdcLWxlYXRoZXJcLWJlbHQ7CivpgI/mlK8gPCBcKGJhbmtcKVwtb3ZlcmRyYWZ0Owor5q2j5bi45bel5L2cIDwgbm9ybWFsXC1vcGVyYXRpb247Civpm5cgPCBhXC13aGl0ZVwtcGhlYXNhbnQ7CivpmqQgPCB0b1wtZmFsbFwtaW5cLXJ1aW5zOwor5YKz55yf55m86YCBIDwgZmF4XC10cmFuc21pc3Npb247Civpl6AgPCBnYXRlXC1vZlwtYVwtbWFya2V0Owor55Ww5oCn5oCn5o6l6Ke4IDwgaGV0ZXJvc2V4dWFsXC1zZXg7Civov7Tml4sgPCBtYW5ldXZlcmluZ1wtcm9vbTsKK+aLieS4geiqniA8IGxhdGluXC1cKGxhbmd1YWdlXCk7Civmk43kvZzns7vntbEgPCBvcGVyYXRpbmdcLXN5c3RlbTsKK+mKuyA8IGFudGltb255XC1zdGliaXVtOwor6YqnIDwgcG9pbnRcLW9mXC1hXC1zd29yZDsKK+mJgCA8IHBvdGFzc2l1bVwta2FsaXVtOwor55m956O3IDwgd2hpdGVcLXBob3NwaG9ydXM7CivpganphY3lsaQgPCBhZGFwdGF0aW9uXC1sYXllcjsKK+WHuumiqOmgrSA8IHRvXC1jcmVhdGVcLWFcLXN0aXI7CivloLHmjbcgPCByZXBvcnRcLWFcLXN1Y2Nlc3M7CivoqKrllY8gPCBwYXlcLWFcLXZpc2l0XC1cKHRvXCk7CivlgrPovLjlqpLnlYwgPCB0cmFuc3BvcnRcLW1ldGhvZDsKK+mZpOWklSA8IFwobmV3XC15ZWFyJydzXClcLWV2ZTsKK+i6tyA8IG9mXC1zaG9ydFwtc3RhdHVyZTsKK+i5sSA8IHRvXC1zdGFnZ2VyXC1hbG9uZzsKK+i5kCA8IHRha2VcLXNob3J0XC1zdGVwczsKK+ahjOS4iuWei+mbu+iFpiA8IGRlc2t0b3BcLWNvbXB1dGVyOwor6L6m5qGIIDwgdG9cLWhhbmRsZVwtYVwtY2FzZTsKK+izmSA8IGdpdmVcLWZvclwtY2hhcml0eTsKK+i2iumHjui7iiA8IG9mZlwtcm9hZFwtdmVoaWNhbDsKK+ixjyA8IGhhbGZcLWdyb3duXC1iZWFuczsKK+e2sue1oeebtOW+kSA8IG5ldHdvcmtcLWRpYW1ldGVyOwor6KiC5ZauIDwgXChwdXJjaGFzZVwpXC1vcmRlcjsKK+aIkOe+pOe1kOmaiiA8IGluXC1sYXJnZVwtbnVtYmVyczsKK+mBqemFjeWZqCA8IGFkYXB0ZXJcLVwoZGV2aWNlXCk7Civlia/kuLvluK0gPCB2aWNlXC1jaGFpcnBlcnNvbjsKK+iPr+WDkSA8IG92ZXJzZWFzXC1jaGluZXNlOwor6KqVIDwgdG9cLWJlYXJcLWNoaWxkcmVuOwor5ruR6bygIDwgbW91c2VcLVwoY29tcHV0ZXJcKTsKK+imgiA8IHRvXC10aHJvd1wtYVwtcmlkZXI7CivopbEgPCBsZWdzXC1vZlwtdHJvdXNlcnM7Civoo5sgPCB0b1wtd3JhcFwtYW5kXC1iaW5kOwor6KKXIDwgdW5saW5lZFwtZ2FybWVudHM7CivnhKHmiYDkuI3os6MgPCB0b1wtc2VsbFwtYW55dGhpbmc7CivooY4gPCB0b1wtZ2l2ZVwtcGxlYXN1cmU7Civon78gPCBhY3JpZGFcLWNoaW5lbnNpczsKK+ieiyA8IHNwaWRlclwtbWlsbGlwZWRlOwor6J27IDwgaW1tYXR1cmVcLWxvY3VzdHM7Civnl4Xoj4wgPCBoYXJtZnVsXC1iYWN0ZXJpYTsKK+iomOiAheaLm+W+heacgyA8IHByZXNzXC1jb25mZXJlbmNlOwor5o235YWL6KqeIDwgY3plY2hcLVwobGFuZ3VhZ2VcKTsKK+iZpSA8IHN0cmlwZWRcLXdpbGRcLWNhdDsKK+ethuW6leS4iyA8IGFiaWxpdHlcLXRvXC13cml0ZTsKK+mAsuS/riA8IGFkdmFuY2VkXC1zdHVkaWVzOwor6JemIDwgZWRpYmxlXC1tdXNocm9vbXM7CivplbfmsZ8gPCBjaGFuZ2ppYW5nXC1yaXZlcjsKK+iXiyA8IHNhbWJ1Y3VcLWphdmluaWNhOwor6JaDIDwgY3lwZXJ1c1wtYW11cmljdXM7CivpgJrnlKjpm7vlmaggPCBnZW5lcmFsXC1lbGVjdHJpYzsKK+iUhyA8IGx1eHVyaWFudFwtZ3Jvd3RoOwor5bm+5Y2DIDwgc2V2ZXJhbFwtdGhvdXNhbmQ7CivmnJ3prq7ljYrls7YgPCBrb3JlYW5cLXBlbmluc3VsYTsKK+iRmSA8IGNlbG9zaWFcLWFyZ2VudGVhOwor6I+JIDwgdGhlXC1ncmVlblwtYmFtYm9vOwor6IqYIDwgbWFsdmFcLXN5bHZlc3RyaXM7CivliLDkuoYgPCBpblwtXChhXC1wYXN0XC10aW1lXCk7CivmoLjljp/mlpkgPCBudWNsZWFyXC1tYXRlcmlhbDsKK+aciemXnOS6uuWjqyA8IHBlcnNvbnNcLWludm9sdmVkOwor5aCx5ZCNIDwgZW50ZXJcLW9uZScnc1wtbmFtZTsKK+WHuuWQjSA8IHdlbGxcLWtub3duXC1cKGZvclwpOwor5o6I542OIDwgdG9cLWF3YXJkXC1hXC1wcml6ZTsKK+mrlOiCsiA8IHBoeXNpY2FsXC1jdWx0dXJlOwor6IC25Yip57Gz5pu4IDwgYm9va1wtb2ZcLWplcmVtaWFoOwor6IC8IDwgZWFyc1wtd2l0aG91dFwtcmltOwor5LiN54it5rCjIDwgYmVcLWRpc2FwcG9pbnRpbmc7CivmvKLoqp4gPCBjaGluZXNlXC1sYW5ndWFnZTsKK+mHkeiejeW4guWgtCA8IGZpbmFuY2lhbFwtbWFya2V0Owor57a1IDwgdmFyaWNvbG9yZWRcLXNpbGs7CivntL0gPCBhXC1zdHJhbmRcLW9mXC1zaWxrOwor57O1IDwgZmVybWVudGluZ1wtZ3JhaW47Civns4ggPCBzYWNyaWZpY2lhbFwtcmljZTsKK+WFteW9uSA8IG1pbGl0YXJ5XC1zZXJ2aWNlOwor57GnIDwgY3J1ZGVcLWJhbWJvb1wtbWF0Owor5YyX5Yaw5rSLIDwgdGhlXC1hcmN0aWNcLW9jZWFuOwor5YWp5bK45bCN6KmxIDwgYmlsYXRlcmlhbFwtdGFsa3M7Civnrq8gPCBiYW1ib29cLXBhbGFucXVpbjsKK+euiiA8IGJhbWJvb1wtd2l0aFwtdGhpbjsKK+entyA8IHNvdW5kXC1vZlwtcmVhcGluZzsKK+ejpSA8IGFcLWhlYXBcLW9mXC1zdG9uZXM7CivnvoXlr4bmrZDoiIfmnLHpupfokYkgPCByb21lb1wtYW5kXC1qdWxpZXQ7CivnoKsgPCBhbmNlc3RyYWxcLXRhYmxldDsKK+eemCA8IGRlZXBseVwtc3Vua1wtZXllczsKK+eeiyA8IGdsYXJlXC13aXRoXC1hbmdlcjsKK+eVouiCliA8IHJlc2VtYmxlXC1jbG9zZWx5Owor552cIDwgdG9cLW9wZW5cLXRoZVwtZXllczsKK+S4jee2k+S5i+irhyA8IGFic3VyZFwtc3RhdGVtZW50Owor5bSp5ryPIDwgdXRlcmluZVwtYmxlZWRpbmc7Civnm6YgPCBsaWRcLW9mXC1hXC1jYWxkcm9uOwor55mJIDwgdG9cLWhhdGVcLWJpdHRlcmx5Owor5YaX5ZOhIDwgZXhjZXNzXC1wZXJzb25uZWw7CivlhbXlo6sgPCBvcmRpbmFyeVwtc29sZGllcjsKK+imgeS6uiA8IGltcG9ydGFudFwtcGVyc29uOwor5o6h5pOHIDwgc2VsZWN0XC1hbmRcLWFkb3B0Owor6Lip57eaIDwgc3RlcFwtb25cLXRoZVwtbGluZTsKK+eTnyA8IHRoZVwtYm90dGxlXC1nb3VyZDsKK+eMuCA8IGFcLWtpbmRcLW9mXC1hbmltYWw7Civlj4jkvobkuoYgPCBoZXJlXC13ZVwtZ29cLWFnYWluOwor55mx5a2QIDwgcGFyYWx5emVkXC1wZXJzb247Civni7sgPCBhXC1mYWJ1bG91c1wtYmVhc3Q7Civlt6jljKAgPCBtYXN0ZXJcLWNyYWZ0c21hbjsKK+mWseWFtSA8IHRvXC1yZXZpZXdcLXRyb29wczsKK+WCsuawoyA8IGFpclwtb2ZcLWFycm9nYW5jZTsKK+eDnCA8IGxpZ2h0XC1vZlwtdGhlXC1zdW47Civkvr/ooaMgPCBjaXZpbGlhblwtY2xvdGhlczsKK+e2sumam+e2sui3r+WNlOacgyA8IGludGVybmV0XC1zb2NpZXR5Owor6Lev55Sx5Y2U5a6aIDwgcm91dGluZ1wtcHJvdG9jb2w7CivmvqYgPCBwbGFjZVwtaW5cLXNpY2h1YW47CivmvqUgPCBhXC1ibG9ja2VkXC1zdHJlYW07CivmvpQgPCByYWRpYW5jZVwtb2ZcLWdlbXM7CivlsIvoqKogPCB0b1wtaW5xdWlyZVwtYWZ0ZXI7Civlr7bosp0gPCB0cmVhc3VyZWRcLW9iamVjdDsKK+mWseS4liA8IHRvXC1zZWVcLXRoZVwtd29ybGQ7CivmuKsgPCBiZWF0aW5nXC1vZlwtb2NlYW47CivnsKHmmI4gPCBzaW1wbGVcLWFuZFwtY2xlYXI7CivntrLot6/lubPlj7AgPCBuZXR3b3JrXC1wbGF0Zm9ybTsKK+WuiemgkyA8IGZpbmRcLWFcLXBsYWNlXC1mb3I7CivlhazlhawgPCBodXNiYW5kJydzXC1mYXRoZXI7Civkvovoqp4gPCBleGFtcGxlXC1zZW50YW5jZTsKK+avriA8IHRvXC1wdWxsXC1vdXRcLWhhaXI7Civmr6ogPCBzZXJnZVwtZnJvbVwtdGliZXQ7CivmqJsgPCBiZW5kaW5nXC1icmFuY2hlczsKK+mWg+S6riA8IGJyaWxsaWFudFwsXC1zaGlueTsKK+WFieaqoua4rOWZqCA8IG9wdGljYWxcLWRldGVjdG9yOwor5p6yIDwgbWFsZVwtbmV0dGxlXC1oZW1wOwor6Zu76IWm57ay6LevIDwgY29tcHV0ZXJcLW5ldHdvcms7CivmnpIgPCB0aGVcLWNvY29udXRcLXRyZWU7Civms6LniL7lpJrmtrIgPCBib3JkZWF1eFwtbWl4dHVyZTsKK+aWtSA8IHRvXC1jdXRcLXRvXC1waWVjZXM7Civmlp4gPCBhXC1zdGFja1wtb2ZcLWdyYWluOwor5pKaIDwgdHdpcmxcLWluXC1maW5nZXJzOwor5Y6f5a2Q56eR5a245a62IDwgYXRvbWljXC1zY2llbnRpc3Q7CivlnYfli6IgPCBiYWxhbmNlXC1vZlwtcG93ZXI7CivnmbzpgZTlnIvlrrYgPCBkZXZlbG9wZWRcLW5hdGlvbjsKK+WNgeWkmuWEhCA8IG92ZXJcLW9uZVwtYmlsbGlvbjsKK+W3sue2k+mAsuihjCA8IGFscmVhZHlcLXVuZGVyd2F5Owor5YKz6YCB5pyN5YuZIDwgZGVsaXZlcnlcLXNlcnZpY2U7CivmjLcgPCB0b1wtcHJvcGVsXC1hXC1ib2F0Owor5L+d55WZIDwgY29udGludWVcLXRvXC1oYXZlOwor5Lq66aCtIDwgbnVtYmVyXC1vZlwtcGVvcGxlOwor5o6l5Lq6IDwgdG9cLW1lZXRcLWFcLXBlcnNvbjsKK+iugOiAheS+huS/oSA8IHJlYWRlcicnc1wtbGV0dGVyczsKK+W8syA8IGNpcmN1bGFyXC1tZWFzdXJlOwor5bu1IDwgdG9cLWdvXC1vblwtY2lyY3VpdDsKK+S4gOS4i+WtkCA8IGluXC1hXC1zaG9ydFwtd2hpbGU7Civlk4jlt7TosLfmm7ggPCBib29rXC1vZlwtaGFiYWtrdWs7CivmoLjoqK3mlr0gPCBudWNsZWFyXC1mYWNpbGl0eTsKK+Wci+WKmyA8IGFcLW5hdGlvbicnc1wtcG93ZXI7Civnmb3lo4Hlvq7nkZUgPCBhXC1zbGlnaHRcLWJsZW1pc2g7CivljYHlub7lgIvmnIggPCB0ZW5cLW1vbnRoc1wtb3JcLXNvOwor6Z2e5pS/5bqcIDwgbm9uXC1nb3Zlcm5tZW50YWw7CivkuLvlubnnt5ogPCBiYWNrYm9uZVwtXChjYWJsZVwpOwor5ayOIDwgdG9cLWJlYXJcLW11bHRpcGxlOwor6Zu76KaW5qmfIDwgdGVsZXZpc2lvblwtXChzZXRcKTsKK+WqpCA8IGh1c2JhbmQnJ3NcLWZhbWlseTsKK+aJrua8lCA8IHBsYXlcLXRoZVwtcGFydFwtb2Y7CivmtYHooYznl4UgPCBlcGlkZW1pY1wtZGlzZWFzZTsKK+eXheWboCA8IGNhdXNlXC1vZlwtZGlzZWFzZTsKK+i7jeS6iyA8IG1pbGl0YXJ5XC1hZmZhaXJzOwor5L2U57eaIDwgYnVzeVwtXCh0ZWxlcGhvbmVcKTsKK+WxseadkSA8IG1vdW50YWluXC12aWxsYWdlOwor5L+h55So6K2JIDwgbGV0dGVyXC1vZlwtY3JlZGl0Owor5LiN5Yqg5oCd57SiIDwgd2l0aG91dFwtdGhpbmtpbmc7Civlm40gPCBkb3VibGVcLWhhcHBpbmVzczsKK+WasyA8IG15dGhpY2FsXC1lbXBlcm9yOwor5a246KGT55WMIDwgYWNhZGVtaWNcLWNpcmNsZXM7Civmi5DlvY4gPCB0b1wtdHVyblwtYVwtY29ybmVyOwor6IGa6K6KIDwgXChudWNsZWFyXClcLWZ1c2lvbjsKK+ihqOWGiiA8IHN0YXRpc3RpY2FsXC1mb3JtOwor5ZiFIDwgc291bmRcLW9mXC1zaWdoaW5nOwor5Zau5qih5YWJ57qWIDwgc2luZ2xlbW9kZVwtZmliZXI7CivmnIDlpKfog73lipsgPCBtYXhpbXVtXC1jYXBhY2l0eTsKK+ihm+aYn+WfjiA8IFwic2F0ZWxsaXRlXCJcLXRvd247Civll54gPCB0b1wtY29uc3VsdFwtYWJvdXQ7CivllrogPCB0b1wtYmVcLWxvY2F0ZWRcLWF0Owor5a+p55CGIDwgdG9cLWhlYXJcLVwoYVwtY2FzZVwpOwor5oqE5pysIDwgaGFuZHdyaXR0ZW5cLWNvcHk7CivoiJTlkK4gPCB0b1wtbGlja1wtYW5kXC1zdWNrOwor55qE5LiA56iuIDwgaXNcLW9uZVwtXChraW5kXC1vZlwpOwor5pu85b635ouJIDwgXChuZWxzb25cKVwtbWFuZGVsYTsKK+aciee3mumbu+imliA8IGNhYmxlXC10ZWxldmlzaW9uOwor5Y2w5Zyw6KqeIDwgaGluZGlcLVwobGFuZ3VhZ2VcKTsKK+S+v+apiyA8IHRlbXBvcmFyeVwtYnJpZGdlOwor5bel5qWt5YyWIDwgdG9cLWluZHVzdHJpYWxpemU7CivlhpMgPCBhXC1zZWNsdWRlZFwtcGxhY2U7CivkuI3ororos4fmnKwgPCBjb25zdGFudFwtY2FwaXRhbDsKK+WEiiA8IHJvdWdoXC1hbmRcLXJ1Z2dlZDsKK+WCnCA8IGFcLW1pbm9yaXR5XC10cmliZTsKK+ethuaIsCA8IHdyaXR0ZW5cLXBvbGVtaWNzOwor5L6/5pyNIDwgZXZlcnlkYXlcLWNsb3RoZXM7CivmhJ/orJ0gPCBcKGV4cHJlc3NcKVwtdGhhbmtzOwor5LaxIDwgYVwta2luZFwtb2ZcLXR1cnRsZTsKK+S1pCA8IHRvXC1jcmFja1wtb3JcLWNoYXA7CivktaMgPCB3aGl0ZVwtd2l0aFwtYmxhY2s7CivktYMgPCBhXC1raW5kXC1vZlwtYmFybGV5Owor5LSsIDwgY3J1bWJzXC1vZlwtYmFybGV5Owor5Ye654mI56S+IDwgcHVibGlzaGluZ1wtaG91c2U7CivkuIvppqwgPCBkaXNtb3VudFwtYVwtaG9yc2U7CivktIUgPCBhXC1sZWdlbmRhcnlcLWJpcmQ7Civmspbnuanls7YgPCBva2luYXdhXC1cKGlzbGFuZFwpOwor5LOiIDwgc21hbGxcLXdpbGRcLWdvb3NlOwor5LOQIDwgYW5cLW93bFwtbGlrZVwtYmlyZDsKK+WuieecoCA8IHNsZWVwXC1wZWFjZWZ1bGx5Owor5LKyIDwgYVwtaGF3a1wtbGlrZVwtYmlyZDsKK+WxpOWxpCA8IGxheWVyXC11cG9uXC1sYXllcjsKK+SwgyA8IGRpc2hldmVsbGVkXC1oYWlyOwor5K+zIDwgbG9vc2VseVwtYXJyYW5nZWQ7CivnrYbluL0gPCB0aGVcLWNhcFwtb2ZcLWFcLXBlbjsKK+SvhyA8IHRvXC1leGVydFwtb25lc2VsZjsKK+SutCA8IHVuc3RhYmxlXC13YWxraW5nOwor5K6zIDwgdG9cLWdpdmVcLWJpcnRoXC10bzsKK+SugSA8IGFcLXBhaXJcLW9mXC1ob3JzZXM7Civkq4wgPCBib3dlZFwtb25lJydzXC1oZWFkOwor5KqOIDwgc3RyaW5nc1wtb2ZcLWFcLWNhcDsKK+SppSA8IGFcLWJlbHRcLWZvclwtaG9yc2U7CivkqLsgPCByb2FyXC1vZlwtdGh1bmRlcnM7CivkqLQgPCBnYXRoZXJpbmdcLWNsb3VkczsKK+SosyA8IHRoZVwtcmFpblwtc3RvcHBlZDsKK+SojyA8IHNvdW5kXC1vZlwtcmFpbmluZzsKK+SoiiA8IGFcLWZsb2NrXC1vZlwtYmlyZHM7Civkp6EgPCBhXC1mb3J0aWZpZWRcLXdhbGw7CivosrbnvqkgPCBkZXJvZ2F0b3J5XC1zZW5zZTsKK+SnhCA8IG5hbWVcLW9mXC1hXC1wZXJzb247CivkppUgPCBiYW5nXC1vZlwtdGhlXC1kb29yOwor5KWbIDwgYVwta2luZFwtb2ZcLXNpY2tsZTsKK+mVt+W6puaMh+ekuuespiA8IGxlbmd0aFwtaW5kaWNhdG9yOwor5L2c5rOVIDwgY291cnNlXC1vZlwtYWN0aW9uOwor5KOuIDwgc21lbGxcLW9mXC1hbGNvaG9sOwor5KOrIDwgc291cmVkXC1iZWFuXC1jdXJkOwor5KKeIDwgcm93c1wtYW5kXC1jb2x1bW5zOwor5KGuIDwgdHJhY2VcLW9mXC1hXC13aGVlbDsKK+ShoiA8IGFcLXNtYWxsXC1jYXJyaWFnZTsKK+a8lOWToSA8IGFjdG9yXC1vclwtYWN0cmVzczsKK+SguyA8IHRvXC1iZW5kXC10aGVcLWJvZHk7CivpkZLliKUgPCB0b1wtZGlmZmVyZW50aWF0ZTsKK+SfiyA8IHRvXC1wcmVzc1wtZm9yd2FyZDsKK+S/neWvhiA8IG1haW50YWluXC1zZWNyZWN5Owor5J6MIDwgdG9cLWxvc2VcLWluXC10cmFkZTsKK+SdiyA8IGFcLWxpdHRsZVwtb2ZcLXBpZ3M7CivknYcgPCBncnVudGluZ1wtb2ZcLXBpZ3M7Civkm48gPCB0b1wtY2FsbFwtc29tZWJvZHk7Civkm44gPCB0b1wtc2hvdXRcLWluXC1yYWdlOwor5JuCIDwgdG9cLXNlcGFyYXRlXC1mcm9tOwor5JqUIDwgdG9cLWxvb2tcLXN1ZGRlbmx5Owor5JqSIDwgZXllc2lnaHRcLWJsdXJyZWQ7CivkmoMgPCB0b1wtcmVhbGl6ZVwtZnVsbHk7CivlgJ/liqkgPCB0b1wtZ2V0XC1oZWxwXC1mcm9tOwor5JmtIDwgdG9cLWxpZnRcLW9yXC1yYWlzZTsKK+mbu+ipseS/oeiZnyA8IHRlbGVwaG9uZVwtc2lnbmFsOwor5JiLIDwgYVwta2luZFwtb2ZcLWluc2VjdDsKK+awkeS4u+m7qCA8IGRlbW9jcmF0aWNcLXBhcnR5Owor5JePIDwgbmFtZVwtb2ZcLWFcLWluc2VjdDsKK+SWryA8IHBvaXNvbm91c1wtaW5zZWN0Owor5JaQIDwgc291bmRcLW9mXC1hXC10aWdlcjsKK+eUmOWcsCA8IFwobWFoYXRtYVwpXC1nYW5kaGk7Civku7/nnJ/mnI3li5nlmaggPCBlbXVsYXRpb25cLXNlcnZlcjsKK+SSoyA8IGx1c2hcLW9yXC1kZWxpY2F0ZTsKK+SRuCA8IGFcLWdyb3VwXC1vZlwtYm9hdHM7CivkkYUgPCBkaXp6eVwtYW5kXC1zbGVlcHk7CivkkKggPCBiYWNrXC1vZlwtdGhlXC1mb290Owor5I+SIDwgaGFsZlwtb2ZcLXRoZVwtYm9keTsKK+SPjyA8IHNpZ25zXC1hbmRcLWdyb2FuczsKK+SOryA8IHdpbnRlclwtcGxvdWdoaW5nOwor5I6CIDwgY29sb3JmdWxcLWZlYXRoZXI7Civpm7voppbliocgPCB0dlwtZHJhbWFcLXByb2dyYW07Civki6QgPCBwbGFpblwtd2hpdGVcLXNpbGs7Civki5QgPCB0b1wtYmFuZFwtdG9nZXRoZXI7CivkibcgPCBhXC1mZWF0aGVyXC1zY3JlZW47CivkiYkgPCBhXC13cml0aW5nXC10YWJsZXQ7CivkiJkgPCBiYW1ib29cLXRvXC13aXRoZXI7CivkiIggPCBhXC1raW5kXC1vZlwtYmFtYm9vOwor5rOo6YeNIDwgcGF5XC1hdHRlbnRpb25cLXRvOwor5Ia/IDwgdG9cLXRhbGtcLWluXC1zbGVlcDsKK+SGsiA8IGFcLXNwYWNpb3VzXC1ob3VzZTsKK+SGiCA8IHlvdW5nXC1hbmRcLXRlbmRlcjsKK+SFvCA8IGFcLWtpbmRcLW9mXC1ncmFpbnM7CivkhbogPCBncmFpblwtaW5cLXRoZVwtZWFyOwor6Ly75bCE5rOiIDwgcmFkaWF0aW9uXC1cKHdhdmVcKTsKK+aHuOaOmyA8IFwoY2FyXClcLXN1c3BlbnNpb247CivkgqogPCBoYXJkXC1iYXJyZW5cLWxhbmQ7CivkgIMgPCBhXC1raW5kXC1vZlwtdmVzc2VsOwor476mIDwgc2NhYlwtb3ZlclwtYVwtc29yZTsKK+O+gSA8IHdhbGtpbmdcLWxpa2VcLW1hZDsKK+O9riA8IGFcLXBvaW50XC1vZlwtbGlnaHQ7CivjvYogPCBjcmFja2luZ1wtb2ZcLXRpbGU7Civju5IgPCByZWRcLWNvbG9yZWRcLWphZGU7Civju4EgPCBhXC1raW5kXC1vZlwtamFzcGVyOwor5LiN6KydIDwgZG9uJyd0XC1tZW50aW9uXC1pdDsKK+O6tSA8IGJsYWNrXC1qYWRlXC1zdG9uZTsKK+O6tCA8IG5hbWVcLW9mXC1hXC1zcGlyaXQ7CivjuqYgPCBhXC1ydW5uaW5nXC1hbmltYWw7CivjubogPCBkb2dcLXRvXC10YWtlXC1mb29kOwor47mHIDwgYVwta2luZFwtb2ZcLWNhdHRsZTsKK+O4oyA8IGluXC1hbmNpZW50XC1jaGluYTsKK+acrOe+qSA8IG9yaWdpbmFsXC1tZWFuaW5nOwor47a+IDwgdG91Z2hcLWFuZFwtaG9uZXN0Owor47aNIDwgbmFtZVwtb2ZcLWFcLXN0cmVhbTsKK+S8tOaYnyA8IGNvbXBhbmlvblwtXChzdGFyXCk7Civkv53lhaggPCBzYXZlXC1mcm9tXC1kYW1hZ2U7CivjtKcgPCBvZlwtZmxvd2luZ1wtd2F0ZXI7CivlqIHniL7lo6voqp4gPCB3ZWxzaFwtXChsYW5ndWFnZVwpOwor5oqE5Lu2IDwgZHVwbGljYXRlXC1cKGNvcHlcKTsKK+OzvSA8IGFcLXdhdGVyeVwtZXhwYW5zZTsKK+OxtiA8IGFcLXN3ZWxsZW5cLWNvcnBzZTsKK+OxrSA8IGFuXC1pbmZlcnRpbGVcLWVnZzsKK+OwpCA8IHRvXC1sYXVnaFwtaGVydGlseTsKK+OwmyA8IG5hbWVcLW9mXC1hXC1jb3VudHk7CivjsIUgPCBlYXZlc1wtb2ZcLWFcLWhvdXNlOwor46+VIDwgc3RpY2tzXC1vclwtZnJhbWVzOwor46+DIDwgdGhlXC12YXJuaXNoXC10cmVlOwor55S35a2Q57GD55CDIDwgbWVuJydzXC1iYXNrZXRiYWxsOwor466TIDwgYW5cLWV4dHJlbWVcLWxpbWl0Owor4626IDwgdGhlXC1jaGVycnlcLWFwcGxlOwor6IGv6YKm5aSn5qiTIDwgZmVkZXJhbFwtYnVpbGRpbmc7Civjqq0gPCB0b1wtZHJhd1wtdG9nZXRoZXI7CivjqpYgPCBzb3VuZFwtb2ZcLWJlYXRpbmc7Civmma7pgJrllY/poYwgPCBjb21tb25cLXF1ZXN0aW9uczsKK+OovCA8IHRvXC10YWtlXC1ieVwtZm9yY2U7CivnvbfoqrIgPCBzdHVkZW50JydzXC1zdHJpa2U7Civjp7ogPCBhXC1maW5nZXJcLXdyYXBwZXI7CivovLjpgIHlqpLku4sgPCB0cmFuc3BvcnRcLW1lZGl1bTsKK+OmnCA8IHRvXC1tb3ZlXC10aGVcLW1pbmQ7Civmh4nmiLAgPCBmYWNlXC1hXC1jaGFsbGVuZ2U7CivmoLjlqIEgPCBudWNsZWFyXC1zdHJlbmd0aDsKK+OisCA8IHRvXC1zdHJldGNoXC1hXC1ib3c7CivomZznjbIgPCBjYXB0dXJlXC1cKHBlb3BsZVwpOwor46G9IDwgZGVwcmF2ZWRcLXRhbGtpbmc7CivjoYkgPCBhXC1raW5kXC1vZlwtZmFicmljOwor46CnIDwgYVwtbGl0dGxlXC1zbGFudGVkOwor46COIDwgYVwtbG9mdHlcLW1vdW50YWluOwor5pys56WoIDwgY2FzaGllcicnc1wtY2hlcXVlOwor6Ziy6KGb5q2m5ZmoIDwgZGVmZW5zaXZlXC13ZWFwb247CivjnasgPCBzaGFwZVwtb2ZcLXRoZVwtc2t5Owor452qIDwgYVwtc2xhbnRpbmdcLWhvdXNlOwor452pIDwgc3BhY2lvdXNseVwtcm9vbXM7CivpgY7ku73nsKHllq7ljJYgPCBvdmVyc2ltcGxpY2F0aW9uOwor45y0IDwgZGFya1wtYW5kXC1vYnNjdXJlOwor45ydIDwgdG9cLWNoZXJpc2hcLWFuZ2VyOwor45yIIDwgYVwtYmVhdWdpZnVsXC1mYWNlOwor6auU6IKy5LmL56qXIDwgd2luZG93XC1vblwtc3BvcnRzOwor5pu45a+r6Kqe6KiAIDwgd3JpdHRlblwtbGFuZ3VhZ2U7CivjmpwgPCB3aXRoXC1ncmVhdFwtcG93ZXI7CivjmpcgPCB3aXRoXC1hXC1iaWdcLW1vdXRoOwor45qHIDwgZHJhd1wtdGhlXC1mZWV0XC11cDsKK+OZniA8IGFcLXNtYWxsXC1tb3VudGFpbjsKK+OZjiA8IGJyZWFjaFwtb2ZcLWFcLXRhbms7CivjmYUgPCBhXC13YWxsZWRcLXZpbGlhZ2U7CivjmYAgPCBhXC12ZWdldGFibGVcLXBsb3Q7Civjl7sgPCBiYWJ5JydzXC1hbnN3ZXJpbmc7Civjl5kgPCB0b1wtc2hvdXRcLW9yXC1iYXdsOwor45WtIDwgdG9cLWJhcmtcLWFzXC1hXC1kb2c7CivjlakgPCBzb3VuZFwtb2ZcLXRhcHBpbmc7Civlronlvr0gPCBhbmh1aVwtXChwcm92aW5jZVwpOwor45WHIDwgcm9ja3NcLWNvbGxhcHNpbmc7CivjlJEgPCBhblwtaW5jaXNlZFwtd291bmQ7CivllYbmpa3ljJYgPCB0b1wtY29tbWVyY2lhbGl6ZTsKK+OSrSA8IGFuXC1lbGRlclwtYnJvdGhlcjsKK+OSgSA8IG9mXC1ncmVhdFwtc3RhdHVyZTsKK+ermeWPsCA8IHJhaWx3YXlcLXBsYXRmb3JtOwor5YWx5Lqr5bi25a+sIDwgc2hhcmVkXC1iYW5kd2lkdGg7CivjkIAgPCBoaWxsb2NrXC1vclwtbW91bmQ7CivmlofljJbpmpznpJkgPCBjdWx0dXJhbFwtYmFycmllcjsKK+ebtOaOpeW9semfvyA8IGRpcmVjdFwtaW5mbHVlbmNlOwor6IiH5q2k5ZCM5pmCIDwgYXRcLXRoZVwtc2FtZVwtdGltZTsKK+S4u+imgeS+hua6kCA8IHByaW5jaXBsZVwtc291cmNlOwor5Lq65rCR5YWs56S+IDwgcGVvcGxlJydzXC1jb21tdW5lOwor542y55uKIDwgb2J0YWluXC1hXC1iZW5lZml0Owor5LiL6Z2i6KuL55yLIDwgcGxlYXNlXC1zZWVcLWJlbG93Owor5LuK5piUIDwgcGFzdFwtYW5kXC1wcmVzZW50Owor5p2/5qCXIDwgY2hpbmVzZVwtY2hlc3RudXQ7CivlkLjnrqEgPCBcKGRyaW5raW5nXClcLXN0cmF3Owor5a625YuZIDwgaG91c2Vob2xkXC1kdXRpZXM7Civph5Hono3poqjms6IgPCBmaW5hbmNpYWxcLWNyaXNpczsKK+mWi+W5leW8jyA8IG9wZW5pbmdcLWNlcmVtb255Owor5a+m57+S55SfIDwgaW50ZXJuXC1cKHN0dWRlbnRcKTsKK+awkemWkyA8IGFtb25nXC10aGVcLXBlb3BsZTsKK+WpmuemriA8IHdlZGRpbmdcLWNlcmVtb255Owor6K2m6KGbIDwgXChzZWN1cml0eVwpXC1ndWFyZDsKK+efpeitmOW3peeoi+W4qyA8IGtub3dsZWRnZVwtd29ya2VyOwor5ZyL6LOT6aSoIDwgc3RhdGVcLWd1ZXN0aG91c2U7Civkub7mna8gPCB0b1wtZHJpbmtcLWFcLXRvYXN0Owor54y/54y0IDwgYXBlc1wtYW5kXC1tb25rZXlzOwor57ay57Wh5Y2U6K2wIDwgbmV0d29ya1wtcHJvdG9jb2w7CivkuKbmv4AgPCBzaHVudFwtZXhjaXRhdGlvbjsKK+mHj+e2sSA8IGRpbWVuc2lvblwtXCh1bml0XCk7Civos6rllY8gPCBcKGFza1wtYVwpXC1xdWVzdGlvbjsKK+iSkOmbhiA8IHRvXC1nYXRoZXJcLVwoZGF0YVwpOwor5LiJ5Y2D5Yiw5LqU5Y2D6JCsIDwgMzBcLXRvXC01MFwtbWlsbGlvbjsKK+S4jeiHs+aWvCA8IGNhbm5vdFwtZ29cLXNvXC1mYXI7CivmmpHnmJ8gPCB0cm9waWNhbFwtZGlzZWFzZTsKK+WNmuimvSA8IHJlYWRcLWV4dGVuc2l2ZWx5Owor5rex5YWlIDwgcGVuZXRyYXRlXC1kZWVwbHk7CivkuLnmoYIgPCBvcmFuZ2VcLW9zbWFudGh1czsKK+adv+WjgSA8IHdvb2RlblwtcGFydGl0aW9uOwor5p+Q5Lq6IDwgYVwtY2VydGFpblwtcGVyc29uOwor5pyI5puGIDwgbW9udGhseVwtY2FsZW5kYXI7Civmsrvnl4UgPCB0cmVhdFwtYW5cLWlsbG5lc3M7CivljYHoqqEgPCB0ZW5cLWNvbW1hbmRtZW50czsKK+eZveiho+aIsOWjqyA8IHdhcnJpb3JcLWluXC13aGl0ZTsKK+WuieWmguejkOefsyA8IGFzXC1zb2xpZFwtYXNcLXJvY2s7CivlpJbplbcgPCBmb3JlaWduXC1taW5pc3RlcjsKK+eZvuWIhum7niA8IHBlcmNlbnRhZ2VcLXBvaW50Owor6YWN6JelIDwgZGlzcGVuc2VcLVwoZHJ1Z3NcKTsKK+WKn+iDvembhiA8IGZ1bmN0aW9uXC1saWJyYXJ5Owor5a2X5LiyIDwgY2hhcmFjdGVyXC1zdHJpbmc7CivmlYXpmpzmjpLpmaQgPCBmYXVsdFwtcmVzb2x1dGlvbjsKK+mHkeiejeaUuemdqSA8IGZpbmFuY2lhbFwtcmVmb3JtOwor5LiA5YCL5Lit5ZyL5pS/562WIDwgb25lXC1jaGluYVwtcG9saWN5Owor5YyW5a245oiwIDwgY2hlbWljYWxcLXdhcmZhcmU7CivlpKflpJrmlbggPCBcKGdyZWF0XClcLW1ham9yaXR5Owor5aSn6YG4IDwgZ2VuZXJhbFwtZWxlY3Rpb247CivllJDku6MgPCB0aGVcLXRhbmdcLWR5bmFzdHk7CivmgKfnl4UgPCB2ZW5lcmVhbFwtZGlzZWFzZTsKK+WQm+asiiA8IG1vbmFyY2hpYWxcLXBvd2VyOwor6ZuM5oCn5o6l5Y+jIDwgZmVtYWxlXC1jb25uZWN0b3I7Civol4/mlocgPCB0aWJldGFuXC1sYW5ndWFnZTsKK+W/g+iHn+enu+auliA8IGhlYXJ0XC10cmFuc3BsYW50Owor6I+P6Jit6KqeIDwgZHV0Y2hcLVwobGFuZ3VhZ2VcKTsKK+S4gOW5tOWkmiA8IG1vcmVcLXRoYW5cLWFcLXllYXI7CivpgZnmjqfmk43kvZwgPCByZW1vdGVcLW9wZXJhdGlvbjsKK+ewoeWWrueahOiqqiA8IHRvXC1wdXRcLWl0XC1zaW1wbHk7CivlhYnmjqXmlLblmaggPCBvcHRpY2FsXC1yZWNlaXZlcjsKK+apn+aisOiqnuiogCA8IG1hY2hpbmVcLWxhbmd1YWdlOwor6IOh5b+X5piO5biCIDwgaG9cLWNoaVwtbWluaFwtY2l0eTsKK+iugOeJqSA8IHJlYWRpbmdcLW1hdGVyaWFsOwor6YKK6ZiyIDwgZnJvbnRpZXJcLWRlZmVuY2U7CivlhbHlkozpu6ggPCByZXB1YmxpY2FuXC1wYXJ0eTsKK+iElumguOWFkiA8IGJhY2tcLW9mXC10aGVcLW5lY2s7CivlkJHmnbEgPCB0b3dhcmRzXC10aGVcLWVhc3Q7CivlpKfnhKHnlY8gPCB1dHRlcmx5XC1mZWFybGVzczsKK+mbhumMpiA8IGJlc3RcLW9mXC10aGVcLWJlc3Q7CivnvbfmlZkgPCB0ZWFjaGVyJydzXC1zdHJpa2U7CivlpJboqp4gPCBmb3JlaWduXC1sYW5ndWFnZTsKK+iqsuihqCA8IHNjaG9vbFwtdGltZXRhYmxlOwor6Kqk6KejIDwgbWlzdW5kZXJzdGFuZGluZzsKK+S4jeefpeaJgOS6kSA8IG5vdFwta25vd1wtd2hhdFwtc2I7CivkuI3lv5kgPCB0aGVyZScnc1wtbm9cLWh1cnJ5Owor6LaF6auY6YCfIDwgdWx0cmFcLWhpZ2hcLXNwZWVkOwor6ZuG6YO1IDwgc3RhbXBcLWNvbGxlY3Rpbmc7Civlu6DplbcgPCBmYWN0b3J5XC1kaXJlY3RvcjsKK+iuiuazlSA8IHBvbGl0aWNhbFwtcmVmb3JtOwor5rOi5oqYIDwgdHdpc3RzXC1hbmRcLXR1cm5zOwor576k5bO2IDwgZ3JvdXBcLW9mXC1pc2xhbmRzOwor5aSq6Zm95b6u57O757Wx5YWs5Y+4IDwgc3VuXC1taWNyb3N5c3RlbXM7Civoga/luK3mnIPorbAgPCBqb2ludFwtY29uZmVyZW5jZTsKK+S6pOaPm+e2sui3ryA8IHN3aXRjaGVkXC1uZXR3b3JrOwor54qv5rOVIDwgdG9cLWJyZWFrXC10aGVcLWxhdzsKK+S4jeWwkSA8IG5vdFwtXChqdXN0XClcLWFcLWZldzsKK+W5tOm9oSA8IFwoYVwtcGVyc29uJydzXClcLWFnZTsKK+aAp+aOpeinuCA8IHNleHVhbFwtZW5jb3VudGVyOwor5q+U57+8IDwgZmx5XC13aW5nXC10b1wtd2luZzsKK+mqqOW5uee2sui3ryA8IGJhY2tib25lXC1uZXR3b3JrOwor6Luf5Lu25LyB5qWtIDwgc29mdHdhcmVcLWNvbXBhbnk7Civmi7/miYvoj5wgPCBzcGVjaWFsdHlcLVwoZGlzaFwpOwor5pa95rSX57SE57+wIDwgam9oblwtdGhlXC1iYXB0aXN0Owor56We5aWHIDwgbWFnaWNhbFwtbXlzdGljYWw7CivnpoHlk4EgPCBjb250cmFiYW5kXC1nb29kczsKK+WwvOW4jOexs+iomCA8IGJvb2tcLW9mXC1uZWhlbWlhaDsKK+Wgsee0meWgseWwjiA8IG5ld3NwYXBlclwtcmVwb3J0Owor5pyA5YWIIDwgXCh0aGVcKVwtdmVyeVwtZmlyc3Q7CivmmI7mt6ggPCBicmlnaHRcLWFuZFwtY2xlYW47Civph43mhbYgPCBjaG9uZ3FpbmdcLVwoY2l0eVwpOwor5amG5amGIDwgaHVzYmFuZCcnc1wtbW90aGVyOwor5LqS5pON5oCnIDwgaW50ZXJvcGVyYWJpbGl0eTsKK+WQg+WujCA8IHRvXC1maW5pc2hcLWVhdGluZzsKK+mAvOi/kSA8IHByZXNzXC1vblwtdG93YXJkczsKK+WgsemkqCA8IG5ld3NwYXBlclwtb2ZmaWNlOwor6Zu757qcIDwgXChlbGVjdHJpY1wpXC1jYWJsZTsKK+WKn+iDvee+pCA8IGZ1bmN0aW9uYWxcLWdyb3VwOwor54uA5oWLIDwgc3RhdGVcLW9mXC1hZmZhaXJzOwor5Lit5LuLIDwgYWdlbnRcLVwoY29tcHV0ZXJcKTsKK+S4jeWFiSA8IG5vdFwtdGhlXC1vbmx5XC1vbmU7CivmmpHlpKkgPCBob3RcLVwoc3VtbWVyXClcLWRheTsKK+WPjeWwjSA8IHRvXC1maWdodFwtYWdhaW5zdDsKK+S4jeS5hSA8IG5vdFwtbG9uZ1wtXChhZnRlclwpOwor6Zui6ZaL5YyX5LqsIDwgdG9cLWxlYXZlXC1iZWlqaW5nOwor5LiA6Lyp5a2QIDwgXChmb3JcKVwtYVwtbGlmZXRpbWU7CivnnaggPCBsb29rXC1hc2thbmNlXC1hdDsKK+aAjiA8IHdoYXRcP1wtd2h5XD9cLWhvd1w/Owor5pS2IDwgZ2F0aGVyXC10b2dldGhlcjsKK+WFmiA8IHBvbGl0aWNhbFwtcGFydHk7CivniYggPCBwcmludGluZ1wtYmxvY2tzOwor5a2jIDwgcXVhcnRlclwtb2ZcLXllYXI7CivniaEgPCBtYWxlXC1vZlwtYW5pbWFsczsKK+iouiA8IGV4YW1pbmVcLXBhdGllbnQ7Civlp5EgPCBmYXRoZXInJ3NcLXNpc3RlcjsKK+ikkyA8IHN3YWRkbGluZ1wtY2xvdGg7CivppoYgPCBwdWJsaWNcLWJ1aWxkaW5nOwor5ry/IDwgYW55XC10aGlja1wtZmx1aWQ7Civpm4QgPCBtYWxlXC1vZlwtc3BlY2llczsKK+S6vyA8IGh1bmRyZWRcLW1pbGxpb247Civlm7ogPCB0b1wtYmVjb21lXC1zb2xpZDsKK+a6qiA8IG1vdW50YWluXC1zdHJlYW07CivomZ4gPCBjb25jZXJuZWRcLWFib3V0Owor5ZeaIDwgc291bmRcLW9mXC1jcnlpbmc7CivolocgPCBvc211bmRhXC1yZWdhbGlzOwor5oiPIDwgdGhlYXRyaWNhbFwtcGxheTsKK+WPrCA8IGltcGVyaWFsXC1kZWNyZWU7CivnkZ4gPCBmZWxpY2l0b3VzXC1vbWVuOwor6ayiIDwgaGFpclwtb25cLXRlbXBsZXM7Civlg6cgPCBidWRkaGlzdFwtcHJpZXN0Owor5qqcIDwgY2hpbmVzZVwtY3lwcmVzczsKK+aqjiA8IHNtYWxsXC1yZWRcLWFwcGxlOwor6amFIDwgc3B1clwtYVwtaG9yc2VcLW9uOwor6IefIDwgaW50ZXJuYWxcLW9yZ2FuczsKK+WcsyA8IGZ1cnJvd1wtaW5cLWZpZWxkOwor57m7IDwgZmluZVwtc2lsa1wtZ3VhemU7CivlrZ8gPCBmaXJzdFwtaW5cLXNlcmllczsKK+e4iyA8IGNsaW1iXC1kb3duXC1yb3BlOwor6ZakIDwgc21hbGxcLXNpZGVcLWRvb3I7Civmlo4gPCB2ZWdldGFyaWFuXC1kaWV0Owor55uvIDwgcml2ZXRcLWdhemVcLXVwb247Civnsp8gPCB1bmh1c2tlZFwtbWlsbGV0Owor57GQIDwgY2xpbWJpbmdcLXBsYW50czsKK+aOuyA8IHNjcmF0Y2hcLWxpZ2h0bHk7Civkv5ggPCBwcmlzb25lclwtb2ZcLXdhcjsKK+aMviA8IGNsYXNwXC11bmRlclwtYXJtOwor5aqzIDwgZGF1Z2h0ZXJcLWluXC1sYXc7CivlrpkgPCB0aW1lXC1hc1wtY29uY2VwdDsKK+WNnCA8IGZvcnR1bmVcLXRlbGxpbmc7CivluJYgPCBpbnZpdGF0aW9uXC1jYXJkOwor6YCeIDwgaW5kdWxnZVwtb25lc2VsZjsKK+aPqiA8IGdyYXNwXC13aXRoXC1oYW5kOwor5LuRIDwgbG9naWNhbFwtcmVhc29uczsKK+eFniA8IG1hbGlnbmFudFwtZGVpdHk7Civps4wgPCBodWdlXC1zZWFcLXR1cnRsZTsKK+eeqSA8IHdhdGNoXC1jYXJlZnVsbHk7CivnlpogPCBjaHJvbmljXC1kaXNlYXNlOwor6JSTIDwgY3JlZXBpbmdcLXBsYW50czsKK+mqjyA8IGV4Y2VsbGVudFwtaG9yc2U7Civpl70gPCBmdWppYW5cLXByb3ZpbmNlOwor6KKFIDwgY3VybGluZ1wtdXB3YXJkczsKK+i+kCA8IHNwb2tlc1wtb2ZcLXdoZWVsOwor55CJIDwgc3BhcmtsaW5nXC1zdG9uZTsKK+iInCA8IGxlZ2VuZGFyeVwtcnVsZXI7CivovacgPCBjcnVzaFwtYnlcLXdlaWdodDsKK+a7hyA8IHl1bm5hblwtcHJvdmluY2U7CivmoZMgPCB2YXJpZXR5XC1vZlwtdHJlZTsKK+ajoCA8IGNyYWJcLWFwcGxlXC10cmVlOwor5ZCuIDwgc3Vja1wtd2l0aFwtbW91dGg7CivonLcgPCBjcmVlcFwtbGlrZVwtd29ybTsKK+aetyA8IGNhbmd1ZVwtc2NhZmZvbGQ7CivnvrIgPCBhbmNpZW50XC1lbXBlcm9yOwor5a2aIDwgYnJvb2RcLW92ZXJcLWVnZ3M7CivnmpEgPCBicmlsbGlhbnRcLXdoaXRlOwor57ylIDwgbGlnaHRcLWJsdWVcLXNpbGs7Civor4wgPCBwbGF5XC13aXRoXC13b3JkczsKK+azviA8IG5hbWVcLW9mXC1hXC1yaXZlcjsKK+injiA8IGRlc2lyZVwtc3Ryb25nbHk7CivnjrogPCBpbXBlcmlhbFwtc2lnbmV0Owor5Y2eIDwgdG9cLWJlXC1pbXBhdGllbnQ7CivovpQgPCBicmlkbGVcLW9mXC1ob3JzZTsKK+i2lCA8IG5vdFwtcHJvZ3Jlc3Npbmc7CivlvpwgPCB3YWxraW5nXC1hbmRcLWZybzsKK+iNoCA8IHdhdGVyXC1jaGVzdG51dHM7CivmsZ4gPCBlbGVtZW50XC1tZXJjdXJ5Owor55W/IDwgaW1wZXJpYWxcLWRvbWFpbjsKK+iIgiA8IGdyaW5kXC1pblwtbW9ydGFyOwor57G0IDwgcHVyY2hhc2VcLWdyYWluczsKK+epsCA8IHN0YWxrc1wtb2ZcLWdyYWluOwor5ZeEIDwgaG9hcnNlXC1vZlwtdm9pY2U7CivmuJogPCBzbWFsbFwtc2FuZFwtYmFuazsKK+egnSA8IGJhbGFuY2VcLXdlaWdodHM7CivmnbwgPCBzaHV0dGxlXC1vZlwtbG9vbTsKK+m+gyA8IGlycmVndWxhclwtdGVldGg7Civli5AgPCBpbXBlcmlhbFwtZGVncmVlOwor55+4IDwgYVwtcm9ja1wtb3JcLWNsaWZmOwor6JWoIDwgcHRlcmlzXC1hcXVpbGluYTsKK+ixiSA8IGZlcm1lbnRlZFwtYmVhbnM7Civlvq0gPCBjb25zY3JpcHRcLWxhYm9yOwor6bqIIDwgc3BlY2llc1wtb2ZcLWRlZXI7CivolaQgPCBkcm9vcGluZ1wtbGVhdmVzOwor57uhIDwgcmF3XC1zaWxrXC1mYWJyaWM7CivoiqggPCBuYW1lXC1vZlwtYVwtcGxhbnQ7Civoi6MgPCBraW5kXC1vZlwtbGV0dHVjZTsKK+eimyA8IHNhbmRcLWFuZFwtZ3JhdmVsOwor6I6SIDwgaGVtcFwtbGlrZVwtcGxhbnQ7CivokIEgPCBraW5kXC1vZlwtZ3Jhc3NlczsKK+echCA8IHRvXC1sb29rXC1hc2thbmNlOwor5ZufIDwgdG9wXC1vZlwtdGhlXC1oZWFkOwor5bKjIDwgYVwtaGlsbFwtaW5cLWh1bmFuOwor5Ze+IDwgdG9cLXNldFwtYVwtZG9nXC1vbjsKK+iNnCA8IHNwZWNpZXNcLW9mXC1iZWFuOwor57OBIDwgYVwtZ3JhaW5cLW9mXC1yaWNlOwor57KdIDwgdW5wb2xpc2hlZFwtcmljZTsKK+ijsCA8IHRvXC1tZW5kXC1jbG90aGVzOwor6JaoIDwgZGVhdGhcLW9mXC1wcmluY2U7CivojJEgPCB0aGVcLWNvbnZvdnVsdnVzOwor57+uIDwgc3RlbVwtb2ZcLWZlYXRoZXI7CivoiZ8gPCBhbmNpZW50XC13YXJzaGlwOwor6byvIDwgZmx5aW5nXC1zcXVpcnJlbDsKK+egqSA8IG5hbWVcLW9mXC1hXC1zdG9uZTsKK+eCuyA8IGFcLWtpbmRcLW9mXC1jaGluYTsKK+aqqyA8IHNhc3NhZnJhc1wtdHp1bXU7Civni7QgPCBhXC1raW5kXC1vZlwtdGFwaXI7Civpq5jmlYjnjocgPCBoaWdoXC1lZmZpY2llbmN5Owor5aSp54i2IDwgaGVhdmVubHlcLWZhdGhlcjsKK+W5vuS5juWujOWFqCA8IGFsbW9zdFwtZW50aXJlbHk7CivnibnlvrUgPCBjaGFyYWN0ZXJpc3RpY3M7Civkv6Hmga/mmYLku6MgPCBpbmZvcm1hdGlvblwtYWdlOwor5pqR5YGHIDwgc3VtbWVyXC12YWNhdGlvbjsKK+aTuuiEqyA8IGJyZWFrXC1hd2F5XC1mcm9tOwor5Y2K5pW4IDwgaGFsZlwtdGhlXC1udW1iZXI7CivlhrDpnJwgPCBtb3JhbFwtaW50ZWdyaXR5Owor5Yu75rqcIDwgZXZlblwtYW5kXC1zbW9vdGg7Civljp/lp5QgPCB0aGVcLXdob2xlXC1zdG9yeTsKK+eUouWTgee2k+eQhiA8IHByb2R1Y3RcLW1hbmFnZXI7Civos4fmlpnpj4jntZDlsaQgPCBkYXRhXC1saW5rXC1sYXllcjsKK+i7jeS6i+WogeiEhSA8IG1pbGl0YXJ5XC10aHJlYXQ7Civnibnlr6sgPCBmZWF0dXJlXC1hcnRpY2xlOwor5pil5aSpIDwgc3ByaW5nXC1cKHNlYXNvblwpOwor57ay6Lev5pyN5YuZIDwgbmV0d29ya1wtc2VydmljZTsKK+eglOeptuS4reW/gyA8IHJlc2VhcmNoXC1jZW50ZXI7CivmraLnl5sgPCB0b1wtcmVsaWV2ZVwtcGFpbjsKK+WJjeS4jeS5hSA8IG5vdFwtbG9uZ1wtYmVmb3JlOwor5Y+b5LqCIDwgYXJtZWRcLXJlYmVsbGlvbjsKK+aWh+aqlCA8IFwoY29tcHV0ZXJcKVwtZmlsZTsKK+W0h+aLnOWEgOW8jyA8IHdvcnNoaXBcLXNlcnZpY2U7Civnt6znlLggPCBteWFubWFyXC1cKGJ1cm1hXCk7CivmlrnoiIjmnKroib4gPCB0b1wtYmVcLXVuZm9sZGluZzsKK+mbmemCiuiyv+aYkyA8IGJpbGF0ZXJhbFwtdHJhZGU7CivlpLHmnJsgPCBiZVwtZGlzYXBwb2ludGVkOwor6LuN5LqL6YOo6ZaAIDwgbWlsaXRhcnlcLWJyYW5jaDsKK+e2suermSA8IG5ldHdvcmtcLXN0YXRpb247CivpmaTmraTkuYvlpJYgPCBhcGFydFwtZnJvbVwtdGhpczsKK+WkqumZveWFrOWPuCA8IHN1blwtY29ycG9yYXRpb247CivlpJblnIvos4fmnKwgPCBmb3JlaWduXC1jYXBpdGFsOwor6ZaL6ZaAIDwgb3BlblwtXCh0aGVcKVwtZG9vcjsKK+eUn+eUoumaiiA8IHByb2R1Y3Rpb25cLXRlYW07CivntpPnrqEgPCBiZVwtaW5cLWNoYXJnZVwtb2Y7CivnlKjmiLbnt5ogPCBzdWJzY3JpYmVyXC1saW5lOwor576O5ZyL5Lq6IDwgYW1lcmljYW5cLXBlcnNvbjsKK+WNiuWkqSA8IGhhbGZcLW9mXC10aGVcLWRheTsKK+iqnuaXjyA8IGxhbmd1YWdlXC1icmFuY2g7CivlvoDlubQgPCBpblwtZm9ybWVyXC15ZWFyczsKK+aXpeWgsSA8IGRhaWx5XC1uZXdzcGFwZXI7CivlhYnpm7sgPCBvcHRvXC1lbGVjdHJpY2FsOwor55m96ZC1IDwgZ2FsdmFuaXplZFwtaXJvbjsKK+mbheatjCA8IHNvbmdcLW9mXC1zb2xvbW9uOwor5b285bK4IDwgdGhlXC1vdGhlclwtc2hvcmU7CivphY3lkIggPCBjb29yZGluYXRlXC13aXRoOwor5aCx57O7IDwgbmV3c3BhcGVyXC1jaGFpbjsKK+ixkOWvjOWkmuW9qSA8IHJpY2hseVwtY29sb3JmdWw7CivmqJnph48gPCBzY2FsYXJcLXF1YW50aXR5Owor5Y2X5YyXIDwgbm9ydGhcLWFuZFwtc291dGg7Civmr5TlrrkgPCBzcGVjaWZpY1wtdm9sdW1lOwor55yL5LiK5Y67IDwgaXRcLXdvdWxkXC1hcHBlYXI7Civnm4jomacgPCBwcm9maXRcLWFuZFwtbG9zczsKK+WLuOWwjiA8IHRyeVwtdG9cLWNvbnZpbmNlOwor6Zmj54efIDwgZ3JvdXBcLW9mXC1wZW9wbGU7Civlub7nmb4gPCBzZXZlcmFsXC1odW5kcmVkOwor5aSn5a+rIDwgY2FwaXRhbFwtbGV0dGVyczsKK+mBjua0uyA8IGxpdmVcLW9uZScnc1wtbGlmZTsKK+eJjOS9jSA8IG1lbW9yaWFsXC10YWJsZXQ7Civml6nkupsgPCBcKGFcLWJpdFwpXC1lYXJsaWVyOwor6Kqy5aSWIDwgZXh0cmFjdXJyaWN1bGFyOwor6Zu2562J5b6F54uA5oWLIDwgemVyb1wtd2FpdFwtc3RhdGU7CivmlLbmi74gPCB0b1wtcHV0XC1pblwtb3JkZXI7CivkuI3nmb3kuYvlhqQgPCB1bnJpZ2h0ZWRcLXdyb25nOwor57ay5q61IDwgbmV0d29ya1wtc2VnbWVudDsKK+W8n+W8nyA8IHlvdW5nZXJcLWJyb3RoZXI7CivpgbLml6kgPCBzb29uZXJcLW9yXC1sYXRlcjsKK+aIkuWCmeajruWatCA8IGhlYXZpbHlcLWd1YXJkZWQ7Civnn67lsI8gPCBzaG9ydFwtYW5kXC1zbWFsbDsKK+WNiumAlOiAjOW7oiA8IGdpdmVcLXVwXC1oYWxmd2F5Owor5q+U5YO5IDwgcHJpY2VcLXJlbGF0aW9uczsKK+m+kSA8IGhpZ2hcLWFuZFwtYnJpZ2h0Owor5paw5Lu7IDwgbmV3bHlcLWFwcG9pbnRlZDsKK+mcuOS9lCA8IGZvcmNpYmx5XC1vY2N1cHk7CivpvJUgPCByYXR0bGVcLW9mXC1kcnVtczsKK+W5vuWNgeWEhCA8IHNldmVyYWxcLWJpbGxpb247Civnl4XprZQgPCBzZXJpb3VzXC1pbGxuZXNzOwor5bi455SoIDwgaW5cLWNvbW1vblwtdXNhZ2U7CivlhrDno5ogPCBpY2VcLWNyZWFtXC1icmljazsKK+m0kiA8IHNwZWNpZXNcLW9mXC1sYXJrOwor55m96I+cIDwgY2hpbmVzZVwtY2FiYmFnZTsKK+m0giA8IHRoZVwtdGFpbG9yXC1iaXJkOwor6bO7IDwgdGhlXC13aWxkXC1waWdlb247Civps5MgPCBjaGluZXNlXC1oZXJyaW5nOwor6bGhIDwgdGhlXC1jdXR0bGVcLWZpc2g7CivpsYUgPCBhXC1raW5kXC1vZlwtdGVuY2g7CivkuI3lvoXoqqogPCBuZWVkbGVzc1wtdG9cLXNheTsKK+aJuemHj+eUn+eUoiA8IHRvXC1tYXNzXC1wcm9kdWNlOwor6a2wIDwgdGhlXC1mbHlpbmdcLWZpc2g7CivlnKjlvojlpJrmlrnpnaIgPCBpblwtbWFueVwtYXNwZWN0czsKK+mrviA8IHRhaWxcLW9mXC1hXC1jb21ldDsKK+mrtCA8IGRpc2hldmVsZWRcLWhhaXI7Civmk43kvZzpgJ/njocgPCBvcGVyYXRpbmdcLXNwZWVkOwor5by35YqgIDwgaW1wb3NlXC1ieVwtZm9yY2U7CivpqJggPCBhXC1waWViYWxkXC1ob3JzZTsKK+mlhyA8IHRvXC1lYXRcLXRvb1wtbXVjaDsKK+miuyA8IGZsb2F0aW5nXC1pblwtYWlyOwor6aKuIDwgc3Rvcm1cLXdoaXJsd2luZDsKK+WkluS6iyA8IGZvcmVpZ25cLWFmZmFpcnM7Civoga/lkIjnmbzooaggPCBqb2ludFwtc3RhdGVtZW50Owor6YKK5ZywIDwgYm9yZGVyXC1kaXN0cmljdDsKK+mfniA8IGFuXC1vcmFuZ2VcLWNvbG9yOwor6Z60IDwgc2FkZGxlXC11cFwtaG9yc2U7CivpnbggPCBhXC1jaGlsZCcnc1wtc2hvZXM7Civpm7EgPCBzbm93aW5nXC1oZWF2aWx5Owor6IiM6Z2iIDwgYmxhZGVcLW9mXC10b25ndWU7CivlibXoqJjpjIQgPCB0b1wtc2V0XC1hXC1yZWNvcmQ7CivokZfkvZwgPCBhXC1saXRlcmFyeVwtd29yazsKK+eZveexsyA8IFwocG9saXNoZWRcKVwtcmljZTsKK+eAleiHqCA8IG9uXC10aGVcLXZlcmdlXC1vZjsKK+S4jeWujOWFqOiRiSA8IGluY29tcGxldGVcLWxlYWY7Civpgbjllq4gPCBcKHNvZnR3YXJlXClcLW1lbnU7Civln7fms5UgPCBsYXdcLWVuZm9yY2VtZW50Owor6Y6kIDwgc291bmRcLW9mXC1hXC1iZWxsOwor5LiN5ZCN5pW4IDwgYWJzdHJhY3RcLW51bWJlcjsKK+mAsuWxlSA8IHRvXC1tYWtlXC1oZWFkd2F5Owor54K65q2kIDwgZm9yXC10aGlzXC1yZWFzb247Civphr4gPCB1bmZpbHRlcmVkXC13aW5lOwor5qC45Y+N5oeJ5aCGIDwgbnVjbGVhclwtcmVhY3RvcjsKK+e2k+a/n+aUuemdqSA8IGVjb25vbWljXC1yZWZvcm07CivphLkgPCBuYW1lXC1vZlwtYVwtc3RhdGU7Civlu6Dlj7IgPCBmYWN0b3J5XC1oaXN0b3J5Owor5YWJ56OBIDwgbWFnbmV0b1wtb3B0aWNhbDsKK+mamOWPoyA8IFwobW91bnRhaW5cKVwtcGFzczsKK+e2suWdgCA8IFwoaW50ZXJuZXRcKVwtc2l0ZTsKK+eVq+mdoiA8IFwocGljdHVyZVwpXC1mcmFtZTsKK+iPnOWcsCA8IHZlZ2V0YWJsZVwtZmllbGQ7CivnlZzpoZ4gPCBkb21lc3RpY1wtYW5pbWFsOwor6LqAIDwgdG9cLXN0dW1ibGVcLW92ZXI7CivnuL3ntpPnkIYgPCBnZW5lcmFsXC1tYW5hZ2VyOwor6LauIDwgZWFzaWx5XC1wcm92b2tlZDsKK+WNiuWjgeaxn+WxsSA8IGhhbGZcLW9mXC1jb3VudHJ5Owor5oqx6aSKIDwgYWRvcHRcLVwoYVwtY2hpbGRcKTsKK+WfjuaokyA8IGNpdHlcLWdhdGVcLXRvd2VyOwor6KuhIDwgcG9zdGh1bW91c1wtbmFtZTsKK+aOoeeoriA8IHNlZWRcLWNvbGxlY3Rpbmc7Civkv4Tlt7TlupXkup7mm7ggPCBib29rXC1vZlwtb2JhZGlhaDsKK+iokiA8IGhlc2l0YXRlXC10b1wtc2F5Owor5Y+k5YW46Z+z5qiCIDwgY2xhc3NpY2FsXC1tdXNpYzsKK+iKseeZvSA8IGdyaXp6bGVkXC1cKGhhaXJcKTsKK+S4jeWPr+WkmuW+lyA8IGhhcmRcLXRvXC1jb21lXC1ieTsKK+ilvCA8ICcna2ltb25vJydcLXNsZWV2ZTsKK+iljCA8IHVubGluZWRcLWdhcm1lbnQ7CivopKcgPCB1bmxpbmVkXC1jbG90aGVzOwor6YeN5paw6ZaL5aeLIDwgcmVzdW1lXCxcLXJlc3RhcnQ7CivlsY3pq5QgPCBcKGxpZmVsZXNzXClcLWJvZHk7CivlnJbnsL0gPCBcKGNvbXB1dGVyXClcLWljb247Civlt7TmnJsgPCBsb29rXC1mb3J3YXJkXC10bzsKK+iemiA8IGVyaXN0YWxpc1wtdGVuYXg7CivlsaTpm7IgPCBzdHJhdHVzXC1cKGNsb3VkXCk7Civmlbjnmb7okKwgPCBzZXZlcmFsXC1taWxsaW9uOwor5ou86LW35L6GIDwgdG9cLXB1dFwtdG9nZXRoZXI7CivnsYznorwgPCBiYXJnYWluaW5nXC1jaGlwOwor6Je2IDwgYVwta2luZFwtb2ZcLXBsYW50Owor6JWiIDwgZWRpYmxlXC1hbWFyYW50aDsKK+iVjSA8IGFsaXNtYVwtcGxhbnRhZ3M7CivolL4gPCBraW5kXC1vZlwtYnJhbWJsZTsKK+iSqCA8IGx1c2hcLXZlZ2V0YXRpb247CivokpMgPCBhblwtZWRpYmxlXC13YXRlcjsKK+mbu+WtkOmDteS7tiA8IGVsZWN0cm9uaWNcLW1haWw7CivpmY3lg7kgPCBwcmljZVwtcmVkdWN0aW9uOwor6JGRIDwgdGhlXC1yYXBlXC10dXJuaXA7CivnsbPnsonogokgPCByaWNlXC1mbG91clwtbWVhdDsKK+aomeaogSA8IFwobWFya2luZ1wpXC1zdGFrZTsKK+mWieacgyA8IGNsb3NlXC1hXC1tZWV0aW5nOwor6ImFIDwgYVwtZGVzcGF0Y2hcLWJvYXQ7CivntJTlsawgPCBwdXJlXC1hbmRcLXNpbXBsZTsKK+WFieamriA8IGhvbm9yXC1hbmRcLWdsb3J5Owor6IWiIDwgdGhlXC1jb2xsYXJcLWJvbmU7CivovqblrbggPCB0b1wtcnVuXC1hXC1zY2hvb2w7CivmqJnmnYYgPCBzdXJ2ZXlvcicnc1wtcG9sZTsKK+W5o+WItiA8IGN1cnJlbmN5XC1zeXN0ZW07CivloLHliLAgPCByZXBvcnRcLWZvclwtZHV0eTsKK+e9vyA8IG5ldFwtY2F0Y2hcLWJpcmRzOwor57aT5r+f5YmN6YCUIDwgZWNvbm9taWNcLWZ1dHVyZTsKK+W5tOS7vSA8IHBhcnRpY3VsYXJcLXllYXI7Civlt6XoroDlrbjmoKEgPCB0aGVcLXJlZm9ybWF0b3J5Owor5Z+65ZywIDwgXChtaWxpdGFyeVwpXC1iYXNlOwor5Zq06YeN6Zec5YiHIDwgc2VyaW91c1wtY29uY2VybjsKK+WFieaYjiA8IGJyaWdodFwtXChmdXR1cmVcKTsKK+mrmOaKgOihkyA8IGhpZ2hcLXRlY2hub2xvZ3k7Civkv53ph4sgPCByZWxlYXNlXC1vblwtYmFpbDsKK+e1jSA8IHRvXC1sYXlcLXRoZVwtd2FycDsKK+e2k+a/n+WNseapnyA8IGVjb25vbWljXC1jcmlzaXM7CivlsITpoLsgPCByYWRpb1wtZnJlcXVlbmN5Owor5YuV5oWL5Yqp6KmeIDwgYXNwZWN0XC1wYXJ0aWNsZTsKK+mWiemfs+evgCA8IGNsb3NlZFwtc3lsbGFibGU7CivnsJQgPCBhXC1jb2F0XC1yYWluY29hdDsKK+evsCA8IGFcLWJhbWJvb1wtYmFza2V0Owor6ayl54itIDwgc3RydWdnbGVcLVwod2l0aFwpOwor6KOh5qC5IDwgXChyb25hbGRcKVwtcmVhZ2FuOwor56mEIDwgcGFuaWNsZWRcLW1pbGxldDsKK+emiyA8IG9mZmVyXC1zYWNyaWZpY2U7Civno6ogPCBhXC1oaWdoXC1tb3VudGFpbjsKK+aatOi3s+WmgumbtyA8IHN0YW1wXC13aXRoXC1mdXJ5Owor5oqX6KGhIDwgY29udGVuZFwtYWdhaW5zdDsKK+e0muWIpSA8IFwobWlsaXRhcnlcKVwtcmFuazsKK+ethuiqpCA8IGFcLXNsaXBcLW9mXC1hXC1wZW47Civlhavlr7YgPCBlaWdodFwtdHJlYXN1cmVzOwor55m+5bm0IDwgYVwtaHVuZHJlZFwteWVhcnM7Civku6Xopb/ntZDmm7ggPCBib29rXC1vZlwtZXpla2llbDsKK+aRmOWAnyA8IHRvXC1ib3Jyb3dcLW1vbmV5Owor5YyW5a245q2m5ZmoIDwgY2hlbWljYWxcLXdlYXBvbjsKK+eYiCA8IHByb2xvbmdlZFwtZmV2ZXI7CivnmIMgPCBzb3Jlc1wtZnJvbVwtY29sZDsKK+eXviA8IGNocm9uaWNcLWlsbG5lc3M7Civnl7UgPCBhXC1oZWFydFwtc3ltcHRvbTsKK+eXriA8IGFcLXN3ZWxsZWRcLWJlbGx5Owor55egIDwgYWNoaW5nXC1vZlwtbGltYnM7Civnl4EgPCBjaHJvbmljXC1tYWxhcmlhOwor55WsIDwgcmVjbGFpbWVkXC1maWVsZDsKK+mVt+WumCA8IHNlbmlvclwtb2ZmaWNpYWw7CivomZvpm7vot68gPCB2aXJ0dWFsXC1jaXJjdWl0Owor55m76KiY55So5oi2IDwgcmVnaXN0ZXJlZFwtdXNlcjsKK+eoruaXj+S4u+e+qeiAhSA8IHJhY2lzdFwtXChwZXJzb25cKTsKK+eQrSA8IGphZGVcLWxpa2VcLXN0b25lOwor5b6e5Y675bm0IDwgc2luY2VcLWxhc3RcLXllYXI7Civnj6cgPCBtb3RoZXJcLW9mXC1wZWFybDsKK+WFpeWigyA8IGVudGVyXC1hXC1jb3VudHJ5Owor54+HIDwgY2FydmluZ1wtb25cLWphZGU7CivlmrTph43llY/poYwgPCBzZXJpb3VzXC1wcm9ibGVtOwor6IeC57SXIDwgXChibGFja1wpXC1hcm1iYW5kOwor546fIDwgc3RyZWFrc1wtaW5cLWphZGU7Civnlbbli5nkuYvmgKUgPCB1cmdlbnRcLXByaW9yaXR5Owor542xIDwgYVwta2luZFwtb2ZcLW90dGVyOwor6LuN5qChIDwgbWlsaXRhcnlcLXNjaG9vbDsKK+eLqyA8IG5hbWVcLW9mXC1hXC10cmliZTsKK+i7n+S7tuezu+e1sSA8IHNvZnR3YXJlXC1zeXN0ZW07CivniYQgPCB0b1wtd2Fsa1wtcmFwaWRseTsKK+eGkyA8IHRoZVwtYmFua1wtYVwtZmlyZTsKK+eEtSA8IHRvXC10ZW1wZXJcLXN0ZWVsOwor5oqK6Ii1IDwgaG9sZFwtdGhlXC1ydWRkZXI7Civoj7Llvovos5MgPCB0aGVcLXBoaWxpcHBpbmVzOwor6KKr5o2VIDwgYmVcLXVuZGVyXC1hcnJlc3Q7CivngJ4gPCBwb29sXC1pblwtYVwtcml2ZXI7CivmvZkgPCByaXZlclwtaW5cLXNoYW54aTsKK+e2sue1oeeAj+imveWZqCA8IG5ldHdvcmtcLWJyb3dzZXI7Civmu44gPCBjb3VudHlcLWluXC1oZW5hbjsKK+acrOaXj+iqniA8IG5hdGl2ZVwtbGFuZ3VhZ2U7Civms6kgPCByaXNpbmdcLW9mXC13YXRlcjsKK+izvOeJqeS4reW/gyA8IHNob3BwaW5nXC1jZW50ZXI7CivmspogPCBpc2xldFwtaW5cLXN0cmVhbTsKK+eZvuWNgSA8IGFcLWh1bmRyZWRcLW9yXC1zbzsKK+WdkOWlvSA8IHRvXC1zaXRcLXByb3Blcmx5Owor57WG6IWz55+zIDwgc3R1bWJsaW5nXC1ibG9jazsKK+aEn+afk+iAhSA8IGluZmVjdGVkXC1wZXJzb247CivlpJrmqKPljJYgPCBkaXZlcnNpZmljYXRpb247CivmpqEgPCBxdWVyY3VzXC1kZW50YXRhOwor5aOB5aOY5qOu5Zq0IDwgY2xvc2VseVwtZ3VhcmRlZDsKK+akuiA8IGJlYW1cLW9mXC1hXC1ob3VzZTsKK+e2sueuoeWToSA8IG5ldHdvcmtcLW1hbmFnZXI7CivluJbmkpLnvoXlsLzov6blvozmm7ggPCAyXC10aGVzc2Fsb25pYW5zOwor6Yym6ZueIDwgZ29sZGVuXC1waGVhc2FudDsKK+afjiA8IGNhbHl4XC1vZlwtZmxvd2VyOwor5p+BIDwgbGFyZ2VcLXRpZVwtYmVhbXM7CivmnqwgPCBhblwtZXZlblwtZ3JhaW5lZDsKK+iHquauuiA8IHRvXC1raWxsXC1vbmVzZWxmOwor5pyjIDwgdGhlXC1yaXNpbmdcLW1vb247Civnkarmi4nln7rmm7ggPCBib29rXC1vZlwtbWFsYWNoaTsKK+mrmOaYgiA8IGluXC1oaWdoXC1zcGlyaXRzOwor6LK/5piT5aSl5Ly0IDwgdHJhZGluZ1wtcGFydG5lcjsKK+epv+mBjiA8IHRvXC1wYXNzXC10aHJvdWdoOwor5YKZ5oiwIDwgcHJlcGFyZVwtZm9yXC13YXI7CivmnIjku73mnIPorbAgPCBtb250aGx5XC1tZWV0aW5nOwor5pG7IDwgYVwtZGVsaWNhdGVcLWhhbmQ7CivlronouqsgPCBtYWtlXC1vbmUnJ3NcLWhvbWU7CivmuLjoqqogPCBkcnVtXC11cFwtc3VwcG9ydDsKK+iHs+aWvCA8IGdvXC1zb1wtZmFyXC1hc1wtdG87CivmiIQgPCB0b1wtYmVcLWluXC1hd2VcLW9mOwor56CU56m25aCx5ZGKIDwgcmVzZWFyY2hcLXJlcG9ydDsKK+WFiOmAsuatpuWZqCA8IGFkdmFuY2VkXC13ZWFwb247CivnlJ/niakgPCBsaXZpbmdcLWNyZWF0dXJlOwor5oi257GNIDwgY2Vuc3VzXC1yZWdpc3RlcjsKK+Wkp+eZvOmbt+mchiA8IGV4dHJlbWVseVwtYW5ncnk7CivlvqwgPCB0b1wtd2FuZGVyXC1hYm91dDsKK+W8tCA8IHJlZFwtbGFjcXVlclwtYm93Owor576O5ZyL5pS/5bqcIDwgdVwuc1wuXC1nb3Zlcm5tZW50Owor5qCh6IiNIDwgc2Nob29sXC1idWlsZGluZzsKK+W3uSA8IG51cHRpYWxcLXdpbmVjdXA7CivkuI3lubLmtokgPCBub25pbnRlcmZlcmVuY2U7CivlloToia8gPCBnb29kXC1hbmRcLWhvbmVzdDsKK+W1jiA8IG1vdW50YWluXC1yZWNlc3M7Civkup7niL7nmbzlkozlpafnsbPliqAgPCBhbHBoYVwtYW5kXC1vbWVnYTsKK+WzniA8IGhpZ2hcLWFuZFwtdW5ldmVuOwor5aGe54i+54m56KqeIDwgY2VsdGljXC1sYW5ndWFnZTsKK+aguOatpuW6qyA8IG51Y2xlYXJcLWFyc2VuYWw7CivlrqLmiLbmqZ/ou5/ku7YgPCBjbGllbnRcLXNvZnR3YXJlOwor5o6q6L6t5by356GsIDwgc3Ryb25nbHlcLXdvcmRlZDsKK+i7jeWCmSA8IFwobWlsaXRhcnlcKVwtYXJtczsKK+mmluiFpiA8IGhlYWRcLVwob2ZcLXN0YXRlXCk7CivlronokawgPCBidXJ5XC1cKHRoZVwtZGVhZFwpOwor6Ieq5YuV5ZSu6LKo5qmfIDwgdmVuZGluZ1wtbWFjaGluZTsKK+WksiA8IGFkdmFuY2VcLXF1aWNrbHk7CivkuK3nvo7mtLIgPCBjZW50cmFsXC1hbWVyaWNhOwor5qW15YqbIDwgZG9cLWF0XC1hbGxcLWNvc3RzOwor6LeR5q2lIDwgdG9cLXdhbGtcLXF1aWNrbHk7CivlnbQgPCBhXC1jbG9kXC1vZlwtZWFydGg7CivllqMgPCB0b1wtYnJlYXRoZVwtdXBvbjsKK+WUsiA8IGZvcmNlZFwtbGF1Z2h0ZXI7Civlhazlj7jmnIPorbAgPCBjb21wYW55XC1tZWV0aW5nOwor6LK26KmeIDwgZGVyb2dhdG9yeVwtdGVybTsKK+S6kumAoyA8IGludGVyY29ubmVjdGlvbjsKK+WOnCA8IGFcLW1vdW50YWluXC1wZWFrOwor5aSp5Li75pWZIDwgY2F0aG9saWNcLWNodXJjaDsKK+WMiSA8IG5vaXNlXC1vZlwtd2F0ZXJzOwor5YyEIDwgdG9cLWJlZ1wtZm9yXC1hbG1zOwor5pS56K6K5b2i5YOPIDwgdHJhbnNmaWd1cmF0aW9uOwor5YqYIDwgbWFrZVwtaW50b1wtbWluY2U7CivmgrLps7QgPCB1dHRlclwtc2FkXC1jYWxsczsKK+a7v+aEjyA8IHRvXC1iZVwtc2F0aXNmaWVkOwor5rW36YGLIDwgc2hpcHBpbmdcLWJ5XC1zZWE7CivnlZnlrbggPCB0b1wtc3R1ZHlcLWFicm9hZDsKK+mHkeijoeWlhyA8IFwobmV3dFwpXC1naW5ncmljaDsKK+S+v+ainSA8IFwoaW5mb3JtYWxcKVwtbm90ZTsKK+WCvSA8IHRlcnJvclwtc3RyaWNrZW47CivnlJrmiJYgPCBzb1wtbXVjaFwtc29cLXRoYXQ7CivkvZQgPCBvY2N1cHlcLWJ5XC1mb3JjZTsKK+WxseWzsCA8IFwobW91bnRhaW5cKVwtcGVhazsKK+a6q+aflCA8IGdlbnRsZVwtYW5kXC1zb2Z0Owor5Lm4IDwgZmVtaW5pbmVcLXN1ZmZpeDsKK+mrmOS4rSA8IGhpZ2hcLWFuZFwtbWlkZGxlOwor55m+5YWS5YWr5Y2BIDwgYWJvdXRcLWFcLWh1bmRyZWQ7CivluJbmkpLnvoXlsLzov6bliY3mm7ggPCAxXC10aGVzc2Fsb25pYW5zOwor5LahIDwgc291bmRcLW9mXC1iaXRpbmc7Civkto4gPCBzb3VuZFwtb2ZcLWJyZWF0aDsKK+iDg+eXhSA8IHN0b21hY2hcLXRyb3VibGU7CivktL4gPCB0b1wtZ3JpbmRcLWJhcmxleTsKK+S0riA8IGNha2VzXC1wZlwtbGVhdmVuOwor5aSa5qih5YWJ57qWIDwgbXVsdGltb2RlXC1maWJlcjsKK+WQjOm9oSA8IG9mXC10aGVcLXNhbWVcLWFnZTsKK+i7n+S7tuW4guWgtCA8IHNvZnR3YXJlXC1tYXJrZXQ7CivmoKHlnJLpqqjlubkgPCBjYW1wdXNcLWJhY2tib25lOwor5K+EIDwgYVwtcGllYmFsa1wtaG9yc2U7Civkrr0gPCBiaXRcLWZvclwtYVwtaG9yc2U7CivkrrUgPCBuYW1lXC1vZlwtYVwtaG9yc2U7CivkrrEgPCBhXC1raW5kXC1vZlwtYmVhc3Q7CivkrqcgPCBsb25nXC1oYWlyXC1ob3JzZTsKK+SuoiA8IGFcLXdhbGtpbmdcLWhvcnNlOwor5K6OIDwgYVwtcnVubmluZ1wtaG9yc2U7CivkrbwgPCBkYXJrXC1ibHVlXC1ob3JzZTsKK+SsqyA8IGNsYXJmaWVkXC1idXR0ZXI7CivkrIEgPCBhXC1saWdodFwtY3ljbG9uZTsKK+WQuOmfsyA8IHNvdW5kXC1hYnNvcmJpbmc7CivmspLmnInoga/nuasgPCB0b1wtYmVcLXVucmVsYXRlZDsKK+SqriA8IGJlYXV0aWZ1bFwtc291bmQ7CivkqpUgPCB0b1wtd3JhcFwtb3JcLWJhbmQ7CivkqbkgPCB0b1wtcmVwYWlyXC1zaG9lczsKK+SpkiA8IGRyZXNzZWRcLWxlYXRoZXI7CivpurvphokgPCB0b1wtYW5hZXN0aGV0aXplOwor5KmEIDwgdG9cLWZhY2VcLXRvXC1mYWNlOwor5KiiIDwgYVwtcGFzc2luZ1wtY2xvdWQ7CivkqJYgPCB0b1wtc3RvcFwtcmFpbmluZzsKK+SogCA8IHRvXC1sYXlcLWluXC1ncmFpbjsKK+SnryA8IG5hbWVcLW9mXC1hXC1wbGFjZTsKK+e2sue1oeimj+WKg+S6uuWToSA8IG5ldHdvcmtcLXBsYW5uZXI7CivkpqsgPCBpbnNpZGVcLXRoZVwtZG9vcjsKK+aKleWllCA8IHRvXC1zZWVrXC1zaGVsdGVyOwor5KWXIDwgYVwtYnJhbmRpbmdcLWlyb247CivkpLEgPCBhXC1zb2xlbW5cLXBsZWRnZTsKK+SjtiA8IHVuc3RyYWluZWRcLXdpbmU7CivkvovmnIMgPCByZWd1bGFyXC1tZWV0aW5nOwor5YWx55Si6buoIDwgY29tbXVuaXN0XC1wYXJ0eTsKK+SipiA8IHRvXC1sZWFkXC10aGVcLXdheTsKK+SiliA8IHRvXC1iZVwtc2NhdHRlcmVkOwor5KKBIDwgdGlyZVwtb2ZcLWFcLXdoZWVsOwor5KG7IDwgc2hha2VcLW9mXC1hXC1jYXJ0Owor5KGoIDwgY29ubmVjdGVkXC1jYXJ0czsKK+mkheiCpSA8IGNha2VcLWZlcnRpbGl6ZXI7CivkoZAgPCB0b1wtbW92ZVwtc3dpZnRseTsKK+S4lueVjOacgOWkpyA8IHdvcmxkJydzXC1sYXJnZXN0Owor5KC1IDwgdG9cLXdlYXJcLWNsb3RoZXM7CivkoKggPCB3YWxraW5nXC1yYXBpZGx5Owor5bCW6Yqz5om56KmVIDwgc2hhcnBcLWNyaXRpY2lzbTsKK+S4jeimi+W+lyA8IG5vdFwtbmVjZXNzYXJpbHk7Civkna8gPCB0b1wtY2hhbmdlXC1oYW5kczsKK+SdkCA8IGFcLWNhc3RyYXRlZFwtaG9nOwor5JyEIDwgc2xvd1wtb25cLXRhbGtpbmc7Civkm7UgPCB0b1wtdGVhY2hcLW9yYWxseTsKK+SbnyA8IHdpbGRcLXN0YXRlbWVudHM7Civkm5QgPCB0b1wtaG9sZFwtaW5cLWhhbmQ7CivmmrTpm6ggPCB0b3JyZW50aWFsXC1yYWluOwor5JqmIDwgc2xhbnRlZFwtY29ybmVyczsKK+SapSA8IHRvXC1hZGp1c3RcLWFcLWJvdzsKK+SZuyA8IHRvXC1zdGVhbFwtYVwtbG9vazsKK+SZqCA8IHRvXC13cmFwXC1vclwtYmluZDsKK+SZnSA8IHVuZGVyXC1nYXJybWVudHM7Civkl74gPCBjb3JiaWN1bGFcLWxlYW5hOwor5Ja8IDwgdGhlXC1kdW5nXC1iZWV0bGU7CivklpkgPCBhXC1yZXN0aW5nXC10aWdlcjsKK+SWiSA8IHRvXC1yb2FyXC1vclwtaG93bDsKK+SVmSA8IHRvXC1zZXRcLWluXC1vcmRlcjsKK+SSjCA8IGRhcmtcLWJsdWVcLWNvbG9yOwor5I+yIDwgcHJvdHJ1ZGVkXC1ib25lczsKK+S+v+WutCA8IGluZm9ybWFsXC1kaW5uZXI7CivkjrMgPCBsb3NlXC1vZlwtdGhlXC1lYXI7CivkjokgPCB0b1wtd2Fsa1wtc3dpZnRseTsKK+S4iui/sCA8IGFib3ZlXC1tZW50aW9uZWQ7Civki7cgPCBhXC1raW5kXC1vZlwtdGhpY2s7CivkirUgPCB5b3VuZ1wtYW5kXC1zbWFsbDsKK+SKlyA8IGFcLWtpbmRcLW9mXC1ncmFpbjsKK+SKiSA8IHByZXNlcnZlZFwtZnJ1aXQ7CivkiacgPCBzb3VuZFwtb2ZcLWJhbWJvbzsKK+izgOW5tOeJhyA8IG5ld1wteWVhcicnc1wtY2FyZDsKK+SFtyA8IGFuXC1lYXJcLW9mXC1ncmFpbjsKK+SFsCA8IGFcLWtpbmRcLW9mXC1ncmFzczsKK+aomea6luWMliA8IHN0YW5kYXJkaXphdGlvbjsKK+SEriA8IGRhcmtcLXJpY2VcLXBsYW50Owor5ISVIDwgZ29kXC1vZlwtdGhlXC1sYW5kOwor6Zu76IWm57O757WxIDwgY29tcHV0ZXJcLXN5c3RlbTsKK+SDtyA8IGFcLWtpbmRcLW9mXC1zdG9uZTsKK+SDkiA8IHBvb3JcLWFuZFwtYmFycmVuOwor5IG0IDwga2VlcFwtb25cLWxvb2tpbmc7CivkgbMgPCB0b1wtbG9zZVwtb25lXC1leWU7Civlr6blvYggPCBsaXZlXC1hbW11bml0aW9uOwor6LKo5bmj5Y2x5qmfIDwgbW9uZXRhcnlcLWNyaXNpczsKK+SAiSA8IGZvb2RcLWNvbnRhaW5lcnM7Civjv7EgPCBkcnlcLWFuZFwtZGVjYXllZDsKK+O+qSA8IG1hbGlnbmFudFwtYm9pbHM7CivlhbHkuqvku6XlpKrntrLntaEgPCBzaGFyZWRcLWV0aGVybmV0Owor55Si5YC8IDwgdmFsdWVcLW9mXC1vdXRwdXQ7CivmmpfpgIHnp4vms6IgPCBtYWtlXC1leWVzXC1hdFwtc2I7Civkvb/mu7/mhI8gPCB0b1wtbWFrZVwtY29udGVudDsKK+elneizgCA8IHRvXC1jb25ncmF0dWxhdGU7CivjvJUgPCBwdWxwXC1vZlwtYVwtbWVsb247CivjvJQgPCBhXC1raW5kXC1vZlwtbWVsb247CivkuI3pj73pi7wgPCBzdGFpbmxlc3NcLXN0ZWVsOwor47yCIDwgYVwtY3JhY2tcLWluXC1qYWRlOwor47uNIDwgbmFtZVwtb2ZcLWFcLXN3b3JkOwor47qMIDwgZW5kbGVzc1wtYmFya2luZzsKK+S7peeCuiA8IGNvbnNpZGVyXC1cKHRoYXRcKTsKK+O5pyA8IGZveFwtbGlrZVwtYW5pbWFsOwor47ixIDwgaG9ybmxlc3NcLWNhdHRsZTsKK+O4qSA8IHRvXC1kZXNpc3RcLWFuXC1veDsKK+aguOW9iCA8IG51Y2xlYXJcLXdhcmhlYWQ7CivjuJEgPCBhXC1jb29raW5nXC1zdG92ZTsKK+WNsOW6puS6uiA8IGluZGlhblwtXChwZXJzb25cKTsKK+S4iuiqsiA8IHRvXC1hdHRlbmRcLWNsYXNzOwor5aWn6YGL5p2RIDwgb2x5bXBpY1wtdmlsbGFnZTsKK+O3jSA8IGFcLWNoZW1pY2FsXC10ZXJtOwor56ym5ZCIIDwgaW5cLWtlZXBpbmdcLXdpdGg7CivmioDlgIYgPCB0cmlja3lcLW1hbmV1dmVyOwor5pqX6YGp5oeJIDwgZGFya1wtYWRhcHRhdGlvbjsKK+aVuOS9jee2sui3ryA8IGRpZ2l0YWxcLW5ldHdvcms7Civjs78gPCByb2xsaW5nXC1iaWxsb3dzOwor47OXIDwgYmFua1wtb2ZcLWFcLXJpdmVyOwor47KUIDwgd29vbGVuXC10ZXh0aWxlczsKK+OxjiA8IGNhbm5vdFwtYmVcLWtub3duOwor47CsIDwgc2hvcnR3aW5kZWRuZXNzOwor47CXIDwgYVwta2luZFwtb2ZcLW1hcGxlOwor47CIIDwgbmljZVwtYW5kXC1wcmV0dHk7Civjr7EgPCBhblwtZW5sYXJnZWRcLWJhZzsKK+OvpCA8IHRoZVwtanVqdWJlXC10cmVlOwor46+UIDwgdG9cLWh1bGxcLWhlYXZpbHk7Civms7Doqp4gPCB0aGFpXC1cKGxhbmd1YWdlXCk7CivjrqEgPCB0b1wtbGlnaHRcLWFcLWZpcmU7Civlr7Xlo54gPCBzcG9pbFwtXChhXC1jaGlsZFwpOwor462kIDwgdGhlXC1jb252b2x2dWx1czsKK+S6pOeVjCA8IGNvbW1vblwtYm91bmRhcnk7CivomZvmk6zntrLntaEgPCB2aXJ0dWFsXC1uZXR3b3JrOwor5YWJ5piO5pel5aCxIDwgZ3VhbmdtaW5nXC1kYWlseTsKK+OroCA8IGFcLWtpbmRcLW9mXC13YXRlcjsKK+OqqyA8IHdpc2VcLWFuZFwtY2xldmVyOwor5q235Y+y5LmF6YGgIDwgYW5jaWVudFwtaGlzdG9yeTsKK+OnjiA8IGZvcmtlZFwtYnJhbmNoZXM7CivogIHnmb7lp5MgPCBvcmRpbmFyeVwtcGVvcGxlOwor46WeIDwgdG9cLXRoaW5rXC1kZWVwbHk7CivjpZsgPCB3aXRoXC1leHBlZGl0aW9uOwor46KeIDwgcm9vbXNcLWNvbm5lY3RlZDsKK+OijSA8IGFcLWxvbmdcLXZlcmFiZGFoOwor5aSr5aa75bqXIDwgZmFtaWx5XC1ydW5cLXNob3A7CivjobIgPCB0aWxlc1wtb25cLWFcLXJvb2Y7CivjoYAgPCByYWdnZWRcLWNsb3RoaW5nOwor45+UIDwgc3RlZXBcLWFuZFwtbG9mdHk7CivjnaUgPCBoYXZlXC1hXC1uaWdobWFyZTsKK+S4ieiQrCA8IHRoaXJ0eVwtdGhvdXNhbmQ7CivjnYUgPCB0b1wtZ2l2ZVwtc3Vja1wtdG87CivjnLIgPCB0b1wtaGF2ZVwtc3VycGx1czsKK+iyqOa6kCA8IHN1cHBseVwtb2ZcLWdvb2RzOwor45uwIDwgdG9cLW1hcnJ5XC1hXC13aWZlOwor45qmIDwgYVwtY2hhcm1pbmdcLWdpcmw7CivjmbwgPCBhXC1taWxpdGFyeVwtd2FsbDsKK+eql+W4mCA8IHdpbmRvd1wtY3VydGFpbnM7CivjmZcgPCBhXC1sdW1wXC1vZlwtZWFydGg7CivjmLogPCBjdWx0aXZhdGVkXC1sYW5kOwor5pyf56WoIDwgcHJvbWlzc29yeVwtbm90ZTsKK+OXvyA8IHRvXC1sYXVnaFwtbG91ZGx5Owor45WyIDwgdG9cLWdhZ1wtb3JcLWJyaWJlOwor45WYIDwgdG9cLXRha2VcLXBhcnRcLWluOwor45KfIDwgd2l0aFwtYVwtY2hhcm1pbmc7Civlj6Poqp4gPCBzcG9rZW5cLWxhbmd1YWdlOwor5pav5ouJ5aSr6KqeIDwgc2xhdmljXC1sYW5ndWFnZTsKK+engeeHnyA8IHByaXZhdGVseVwtb3duZWQ7CivlpJblnIvlhazlj7ggPCBmb3JlaWduXC1jb21wYW55Owor5a+S5YGHIDwgd2ludGVyXC12YWNhdGlvbjsKK+WTgOatjCA8IGFcLW1vdXJuZnVsXC1zb25nOwor5YWS5YyW6Z+7IDwgcmV0cm9mbGV4XC1maW5hbDsKK+eJvemAoyA8IFwoYmVcKVwtaW1wbGljYXRlZDsKK+aAp+ihjCA8IHNleHVhbFwtYWN0aXZpdHk7Civlrbjlo6sgPCBiYWNoZWxvclwtZGVncmVlOwor6LKg5pOUIDwgXChiZWFyXC1hXClcLWJ1cmRlbjsKK+WVhualreS4reW/gyA8IGJ1c2luZXNzXC1jZW50ZXI7CivkuIDnp5ggPCBmaXJzdFwtc2VjcmV0YXJ5Owor6Jel55O2IDwgbWVkaWNpbmVcLWJvdHRsZTsKK+aFmuaEpyA8IFwodG9cLWJlXClcLWFzaGFtZWQ7CivkurrmiY0gPCB0YWxlbnRlZFwtcGVyc29uOwor5LiN55SYIDwgdW5yZWNvbmNpbGVkXC10bzsKK+S4jeebuOS4iuS4iyA8IGVxdWFsbHlcLW1hdGNoZWQ7Civnj63lrZAgPCBvcmdhbml6ZWRcLWdyb3VwOwor5q+P6ZqUIDwgYXRcLWludGVydmFsc1wtb2Y7CivmhJvmiLQgPCBsb3ZlXC1hbmRcLWVzdGVlbTsKK+aEm+aIgCA8IGJlXC1pblwtbG92ZVwtd2l0aDsKK+apn+WvhuaWh+S7tiA8IHNlY3JldFwtZG9jdW1lbnQ7Civmna3lt54gPCBoYW5nemhvdVwtXChjaXR5XCk7CivllY/kuJYgPCB0b1wtYmVcLXB1Ymxpc2hlZDsKK+aCsuazoyA8IHdlZXBcLXdpdGhcLWdyaWVmOwor5rOV55CGIDwgbGVnYWxcLXByaW5jaXBsZTsKK+enqeW6jyA8IG9yZGVyXC1cKG9yZGVybHlcKTsKK+e2sue1oeaJk+WNsOapnyA8IG5ldHdvcmtcLXByaW50ZXI7CivlkI3niYcgPCBcKGJ1c2luZXNzXClcLWNhcmQ7Civml4XosrsgPCB0cmF2ZWxcLWV4cGVuc2VzOwor6LKh5ZyYIDwgZmluYW5jaWFsXC1ncm91cDsKK+aymeefsyA8IHNhbmRcLWFuZFwtc3RvbmVzOwor56aB5p6cIDwgZm9yYmlkZGVuXC1mcnVpdDsKK+mDtemBniA8IHRvXC1zZW5kXC1ieVwtbWFpbDsKK+adv+adv+WFreWNgeWbmyA8IHVuYWNjb21tb2RhdGluZzsKK+aekOWHuiA8IHRvXC1zZXBlcmF0ZVwtb3V0Owor56ys5LiA5YCL5bGk5qyhIDwgdGhlXC1maXJzdFwtc3RhZ2U7Civlhbfpq5ToqIjlioMgPCBhXC1jb25jcmV0ZVwtcGxhbjsKK+WllOilsiA8IGxvbmdcLXJhbmdlXC1yYWlkOwor5p2/5Yi3IDwgc2NydWJiaW5nXC1icnVzaDsKK+acjeW+niA8IG9iZXlcLVwoYW5cLW9yZGVyXCk7Civmlr3ooYwgPCB0b1wtcHV0XC1pblwtcGxhY2U7CivojqvlsLzljaHokIrmuqvmlq/ln7ogPCBtb25pY2FcLWxld2luc2t5Owor5paH5pu46JmV55CGIDwgd29yZFwtcHJvY2Vzc2luZzsKK+e9sOasviA8IFwoaW1wb3NlXC1hXClcLWZpbmU7Civpm4zpm4QgPCBtYWxlXC1hbmRcLWZlbWFsZTsKK+mCiumfsyA8IGxhdGVyYWxcLVwoc291bmRcKTsKK+avjeimqiA8IG1vdGhlclwtXChmb3JtYWxcKTsKK+acieiBr+e5qyA8IHRvXC1iZVwtY29ubmVjdGVkOwor56OB55ukIDwgXChjb21wdXRlclwpXC1kaXNrOwor6aCQ6Ziy5o6q5pa9IDwgcHJvdGVjdGl2ZVwtc3RlcDsKK+ekpualrSA8IG1pbmluZ1wtaW5kdXN0cnk7CivlhaznhLbooajnpLogPCB0b1wtc3RhdGVcLW9wZW5seTsKK+a1geWksSA8IGJlXC1kcmFpbmVkXC1hd2F5Owor5byV6LW3IDwgdG9cLWdpdmVcLXJpc2VcLXRvOwor8KOOtCA8IHN0dW1wXC1vZlwtYVwtdHJlZTsKK+itieeJqSA8IGV4aGliaXRcLVwobGVnYWxcKTsKK+e4q+ijnCA8IGRhcm5cLVwoY2xvdGhpbmdcKTsKK+e3qOmBuCA8IHNlbGVjdFwtYW5kXC1lZGl0Owor6LKg5YK157qN57qNIDwgaGVhdmlseVwtaW5cLWRlYnQ7Civlr6nliKTplbcgPCBwcmVzaWRpbmdcLWp1ZGdlOwor5LiK5a24IDwgdG9cLWdvXC10b1wtc2Nob29sOwor6aC75bi2IDwgZnJlcXVlbmN5XC1yYW5nZTsKK+aUv+imiyA8IHBvbGl0aWNhbFwtdmlld3M7CivmgrLlmIYgPCBzaWdoXC1tb3VybmZ1bGx5Owor5Y2K55SfIDwgaGFsZlwtYVwtbGlmZXRpbWU7CivljZrniakgPCBuYXR1cmFsXC1zY2llbmNlOwor57aT5r+f6auU5Yi2IDwgZWNvbm9taWNcLXN5c3RlbTsKK+S4jemBjueIvueIviA8IG1lcmVseVwtbWVkaW9jcmU7Civnm5zniYjogIUgPCBzb2Z0d2FyZVwtcGlyYXRlOwor5aSn6YOo5Lu9IDwgXChpblwpXC1sYXJnZVwtcGFydDsKK+a1geaEn+eXheavkiA8IGluZmx1ZW56YVwtdmlydXM7Civpg7XnpaggPCBcKHBvc3RhZ2VcKVwtc3RhbXA7CivmgbDlpb0gPCBhc1wtaXRcLXR1cm5zXC1vdXQ7CivmsKPmuqsgPCBhaXJcLXRlbXBlcmF0dXJlOwor55+u6IOWIDwgc2hvcnRcLWFuZFwtc3RvdXQ7Civoqp7ns7sgPCBsYW5ndWFnZVwtc3lzdGVtOwor6K6K5b2iIDwgYmVcLW91dFwtb2ZcLXNoYXBlOwor5Y2X5rW3IDwgc291dGhcLWNoaW5hXC1zZWE7CivlhrfmsKPmqZ8gPCBhaXJcLWNvbmRpdGlvbmVyOwor576O5YWDIDwgYW1lcmljYW5cLWRvbGxhcjsKK+S4luS6uiA8IFwoY29tbW9uXClcLXBlb3BsZTsKK+WQjeWWriA8IGxpc3RcLVwob2ZcLW5hbWVzXCk7Civpm7vno4EgPCBlbGVjdHJvbWFnbmV0aWM7CivmsJHmrIogPCBjaXZpbFwtbGliZXJ0aWVzOwor5pOa6KqqIDwgaXRcLWlzXC1zYWlkXC10aGF0Owor5Y6f5oCnIDwgb3JpZ2luYWxcLW5hdHVyZTsKK+ihm+eUn+WumOWToSA8IGhlYWx0aFwtb2ZmaWNpYWw7CivouoUgPCB3YWxrXC1jYXJlZnVsbHk7Civlt7QgPCBncmVhdGx5XC1kZXNpcmU7CivmnJ8gPCBwZXJpb2RcLW9mXC10aW1lOwor5Y+4IDwgdGFrZVwtY2hhcmdlXC1vZjsKK+eUpSA8IHNpc3Rlcicnc1wtY2hpbGQ7CivlsY8gPCBmb2xkaW5nXC1zY3JlZW47Civni5AgPCBzcGVjaWVzXC1vZlwtZm94Owor5rGJIDwgY2hpbmVzZVwtcGVvcGxlOwor5aa5IDwgeW91bmdlclwtc2lzdGVyOwor5LyBIDwgcGxhblwtYVwtcHJvamVjdDsKK+illiA8IG91dGVyXC1nYXJtZW50czsKK+WjgSA8IHBhcnRpdGlvblwtd2FsbDsKK+mfpiA8IHRhbm5lZFwtbGVhdGhlcjsKK+a9sCA8IGZsb29kaW5nXC1yaXZlcjsKK+ePoCA8IHByZWNpb3VzXC1zdG9uZTsKK+mUiyA8IHBvaW50XC1vZlwtc3BlYXI7Civkv5cgPCBzb2NpYWxcLWN1c3RvbXM7CivmqpAgPCBlYXZlc1wtb2ZcLWhvdXNlOwor6aqRIDwgcmlkZVwtaG9yc2ViYWNrOwor5Ye9IDwgY29ycmVzcG9uZGVuY2U7CivprY8gPCBraW5nZG9tXC1vZlwtd2VpOwor5p6aIDwgc3RhbGtcLW9mXC1zaHJ1YjsKK+S7siA8IG1pZGRsZVwtYnJvdGhlcjsKK+eQsyA8IGJlYXV0aWZ1bFwtamFkZTsKK+WHkSA8IHBpZWNlXC10b2dldGhlcjsKK+mDgSA8IHN3ZWV0XC1zbWVsbGluZzsKK+iKryA8IHBpdGhcLWZyb21cLXJ1c2g7CivnuJ4gPCB3aGl0ZVwtcmF3XC1zaWxrOwor5pesIDwgdGVuXC1kYXlcLXBlcmlvZDsKK+e2uiA8IGZpbmVcLXRoaW5cLXNpbGs7CivlpqggPCBpbnRlcmZlcmVcLXdpdGg7CivpqoQgPCBzcGlyaXRlZFwtaG9yc2U7CivmjrQgPCBib3hcLW9uZScnc1wtZWFyczsKK+WXryA8IGZpbmFsXC1wYXJ0aWNsZTsKK+WyrSA8IG1vdW50YWluXC1yaWRnZTsKK+a5mCA8IGh1bmFuXC1wcm92aW5jZTsKK+mKgyA8IGFuY2llbnRcLXdlYXBvbjsKK+mTriA8IGNsYW5naW5nXC1zb3VuZDsKK+iOuSA8IGx1c3Rlclwtb2ZcLWdlbXM7Civlg7sgPCBvdXRcLW9mXC10aGVcLXdheTsKK+a4uiA8IGVuZGxlc3NseVwtbG9uZzsKK+S9oyA8IGNvbW1pc3Npb25cLWZlZTsKK+WRmyA8IGNob2tlXC1ieVwtc21va2U7Civlh7AgPCBmZW1hbGVcLXBob2VuaXg7Civpl7ogPCBzbWFsbFwtZW50cmFuY2U7CivnvIAgPCBwYXRjaFwtdG9nZXRoZXI7CivnkosgPCBqYWRlXC1wbGF5dGhpbmc7Civmi7QgPCBiaW5kXC13aXRoXC1yb3BlOwor56enIDwgcmljZVwtc2VlZGxpbmdzOwor6JWDIDwgZm9yZWlnblwtdGhpbmdzOwor6YSCIDwgaHViZWlcLXByb3ZpbmNlOwor5qOxIDwgc3F1YXJlZFwtdGltYmVyOwor5qKXIDwgc3RlbVwtb2ZcLWZsb3dlcjsKK+iPsSA8IHdhdGVyXC1jaGVzdG51dDsKK+mVkSA8IHBvdW5kXC1zdGVybGluZzsKK+agqSA8IHNwZWNpZXNcLW9mXC1vYWs7Civnkp4gPCB1bnBvbGlzaGVkXC1nZW07Civpm68gPCBjbG91ZFwtcGF0dGVybnM7CivorrcgPCBzbG93XC1vZlwtc3BlZWNoOwor54uwIDwgZmllcmNlXC1sb29raW5nOwor5bOmIDwgbW91bnRhaW5cLXJhbmdlOwor5rmDIDwgc291bmRcLW9mXC13YXZlczsKK+idlyA8IGtpbmRcLW9mXC1sb2N1c3Q7CivnmpYgPCBhbmh1aVwtcHJvdmluY2U7CivphYsgPCBjaGllZlwtb2ZcLXRyaWJlOwor5aORIDwgYmVkXC1vZlwtdG9ycmVudDsKK+ezryA8IGdsdXRpbm91c1wtcmljZTsKK+eotyA8IGdvZFwtb2ZcLWNlcmVhbHM7Civlob4gPCB2aWxsYWdlXC1zY2hvb2w7Civni6kgPCB3aW50ZXJcLWh1bnRpbmc7CivmiI0gPCBkZWZlbmRcLWJvcmRlcnM7CivnkoAgPCBsdXN0cmVcLW9mXC1nZW1zOwor54mNIDwgd3JpdGluZ1wtdGFibGV0Owor6ZWMIDwgZW5ncmF2aW5nXC10b29sOwor6aWvIDwgZmFyZXdlbGxcLXBhcnR5Owor6bmCIDwgY2hpbmVzZVwtb3Jpb2xlOwor5ZuhIDwgb25lJydzXC1kYXVnaHRlcjsKK+a6nyA8IGRyaXp6bGluZ1wtcmFpbjsKK+mUjyA8IGtpbmRcLW9mXC1yYXBpZXI7CivlsZkgPCB0b1wtZWFzZVwtbmF0dXJlOwor546zIDwgdG9ydG9pc2VcLXNoZWxsOwor55GtIDwgYVwta2luZFwtb2ZcLWphZGU7CivmnYggPCBmb3JrXC1vZlwtYVwtdHJlZTsKK+WMkCA8IGZhbGxcLXByb3N0cmF0ZTsKK+egoyA8IGFcLXN0b25lXC1yb2xsZXI7Civpk6IgPCB1bml0XC1vZlwtd2VpZ2h0Owor6aqIIDwgdGVhbVwtb2ZcLWhvcnNlczsKK+WZsSA8IGxhdWdoXC1oZWFydGlseTsKK+ebsSA8IHdpZGVcLW9wZW5cLWV5ZXM7CivogIQgPCBlbGRlcmx5XC1wZXJzb247CivmppQgPCBiZXRlbFwtbnV0XC10cmVlOwor6K+kIDwgdG9cLWV4cG9zdHVsYXRlOwor6J2uIDwgdmVub21vdXNcLXNuYWtlOwor6aKNIDwgcml2ZXJcLWluXC1hbmh1aTsKK+alnSA8IG1lbGlhXC1qYXBvbmljYTsKK+idvCA8IGFcLW1vbGVcLWNyaWNrZXQ7CivojaogPCBhcm9tYXRpY1wtZ3Jhc3M7CivlqIwgPCBicm90aGVyJydzXC13aWZlOwor5pm3IDwgc2hhZG93c1wtb2ZcLXN1bjsKK+WXtSA8IHVzZWRcLWZvclwtc291bmQ7CivouIUgPCB0b1wtd2Fsa1wtYXJvdW5kOwor5o+GIDwgcHJpbWVcLW1pbmlzdGVyOwor54yVIDwgbWFjYWN1c1wtbW9ua2V5Owor5Y6dIDwgY3V0XC1vclwtZW5ncmF2ZTsKK+iRmiA8IG11bGJlcnJ5XC1mcnVpdDsKK+iAkiA8IGhhbmRsZVwtb2ZcLXBsb3c7Civkv4UgPCBvcm5hbWVudGFsXC1jYXA7Civoj70gPCBiZWFuc1wtYW5kXC1wZWFzOwor6Z6vIDwgc2FkZGxlXC1ibGFua2V0Owor6byQIDwgaW5jZW5zZVwtdHJpcG9kOwor6LCwIDwgYWNjdXNlXC1mYWxzZWx5Owor6aqxIDwgam9pbnRcLW9mXC1ib25lczsKK+ispiA8IHRcLXNwZWFrXC1zb2Z0bHk7Civno7QgPCBzdGVwc1wtb25cLWxlZGdlOwor5am6IDwgbmFtZVwtb2ZcLWFcLXN0YXI7CivloI0gPCBzaWRlXC1vZlwtYnJpZGdlOwor5qGrIDwgaG9yc2VcLWNoZXN0bnV0Owor5ry2IDwgaW5kZWNpcGhlcmFibGU7CivlraUgPCBvbmUnJ3NcLWNoaWxkcmVuOwor5rqxIDwgcml2ZXJcLWluXC1oZW5hbjsKK+m7pSA8IHRhdHRvb2luZ1wtZmFjZTsKK+i6kCA8IHRvXC1zdHJpZGVcLW92ZXI7Civoua8gPCBwYXdzXC1vZlwtYW5pbWFsOwor55uNIDwgd2hhdFw/XC13aHlcLW5vdFw/Owor5rqGIDwgcml2ZXJcLWluXC1odW5hbjsKK+ejsiA8IHRyaWRhY25hXC1naWdhczsKK+aYnSA8IGFcLWR1YWxcLXByb25vdW47Civmn70gPCB0eXBlXC1vZlwtd2lsbG93Owor57ysIDwgcGF0dGVybmVkXC1zaWxrOwor6am6IDwgbW91bnRlZFwtZXNjb3J0Owor6ZiKIDwgZ2F0ZVwtb2ZcLWhlYXZlbjsKK+iNqSA8IGFcLWtpbmRcLW9mXC13ZWVkOwor6IqOIDwgYVwta2luZFwtb2ZcLWhlcmI7Civpi4ggPCBzaWx2ZXJcLXBsYXRpbmc7CivpvoUgPCB0ZWV0aFwtcHJvdHJ1ZGU7CivmmaEgPCBsYXRlXC1hZnRlcm5vb247CivmqqAgPCBzdGFuZFwtZm9yXC1sYW1wOwor6YCtIDwgdG9cLWVzY2FwZVwtZnJvbTsKK+aTjeiqsiA8IG1pbGl0YXJ5XC1kcmlsbDsKK+S8iueUuOWckiA8IGdhcmRlblwtb2ZcLWVkZW47CivmiJDlk6HlnIsgPCBtZW1iZXJcLWNvdW50cnk7Civlhbfpq5TllY/poYwgPCBjb25jcmV0ZVwtaXNzdWU7CivljZTmnIMgPCBhblwtYXNzb2NpYXRpb247CivmlofniakgPCBjdWx0dXJhbFwtcmVsaWM7CivpgJroqIogPCBjb21tdW5pY2F0aW9uczsKK+WNseaIvyA8IGRlY3JlcGl0XC1ob3VzZTsKK+eJueW3pSA8IHNlY3JldFwtc2VydmljZTsKK+mbu+eHiCA8IGVsZWN0cmljXC1saWdodDsKK+mHo+mtmuiHuiA8IGRpYW95dVwtaXNsYW5kczsKK+WMl+altSA8IHRoZVwtbm9ydGhcLXBvbGU7CivopIfpn7vmr40gPCBjb21wb3VuZFwtZmluYWw7CivpoJDku5ggPCBwYXlcLWluXC1hZHZhbmNlOwor5ZyL6Ziy6aCQ566XIDwgZGVmZW5jZVwtYnVkZ2V0Owor5q665rCjIDwgbXVyZGVyb3VzXC1sb29rOwor56OB5aC0IDwgbWFnbmV0aWNcLWZpZWxkOwor6KOB5rib6LuN5YKZIDwgYXJtc1wtcmVkdWN0aW9uOwor54mZ5bqKIDwgYWx2ZW9sYXJcLXJpZGdlOwor5Y+D5YqgIDwgdG9cLXBhcnRpY2lwYXRlOwor5rCR5oSPIDwgcHVibGljXC1vcGluaW9uOwor5Ye65Y+j5ZWG5ZOBIDwgZXhwb3J0XC1wcm9kdWN0Owor5b6A5pelIDwgaW5cLWZvcm1lclwtZGF5czsKK+WLmOa4rCA8IHRvXC1pbnZlc3RpZ2F0ZTsKK+WGsOmHiyA8IFwob2ZcLW1pc2dpdmluZ3M7CivlpKfmqJMgPCBsYXJnZVwtYnVpbGRpbmc7CivmlLnpnanpgLLnqIsgPCByZWZvcm1cLXByb2Nlc3M7CivlhajnkIPos4foqIrntrIgPCB3b3JsZFwtd2lkZVwtd2ViOwor6JaE6IOO55O35ZmoIDwgZWdnc2hlbGxcLWNoaW5hOwor5oCq5Lq6IDwgc3RyYW5nZVwtcGVyc29uOwor54ef5qWtIDwgdG9cLWRvXC1idXNpbmVzczsKK+WhkeiGoCA8IHBsYXN0aWNcLWNlbWVudDsKK+aZmuS4iiA8IGluXC10aGVcLWV2ZW5pbmc7CivmlaPmraUgPCB0b1wtdGFrZVwtYVwtd2FsazsKK+itmOWIpSA8IHRvXC1kaXN0aW5ndWlzaDsKK+W5gOWkqumVtyA8IG92ZXJzaXplXC1mcmFtZTsKK+aTuuiVqeWQiueSsCA8IHN3aW5naW5nXC1yaW5nczsKK+WFqOeQg+awo+WAmSA8IGdsb2JhbFwtY2xpbWF0ZTsKK+WkseaOpyA8IG91dFwtb2ZcLWNvbnRyb2w7CivmlbjmnIggPCBzZXZlcmFsXC1tb250aHM7CivlvoDlvqkgPCB0b1wtcmVjaXByb2NhdGU7CivlsI3lpJbmlL/nrZYgPCBmb3JlaWduXC1wb2xpY3k7CivpnbbloLQgPCBzaG9vdGluZ1wtcmFuZ2U7Civns5bphosgPCBzd2VldFwtYW5kXC1zb3VyOwor5Ly055Sf5rCjIDwgYXNzb2NpYXRlZFwtZ2FzOwor5biz6JmfIDwgYWNjb3VudFwtbnVtYmVyOwor54iq5a2QIDwgXChhbmltYWwnJ3NcKVwtcGF3Owor5Yil566hIDwgbm9cLW1hdHRlclwtXCh3aG87CivpgLLooYzpgJrkv6EgPCB0b1wtY29tbXVuaWNhdGU7CivliKjnqIsgPCBwbGFuaW5nXC1sZW5ndGg7CivntKDoj5wgPCB2ZWdldGFibGVcLWRpc2g7CivkuI3lko7ml6LlvoAgPCBub3RcLWNlbnN1cmVcLXNiOwor6ZaL6LuKIDwgdG9cLWRyaXZlXC1hXC1jYXI7CivnhZnngasgPCBzbW9rZVwtYW5kXC1maXJlOwor6L2J6YGLIDwgdHJhbnNwb3J0YXRpb247Civlt6HoraYgPCBwb2xpY2VcLW9mZmljZXI7CivmoKHlnJLntrLntaEgPCBjYW1wdXNcLW5ldHdvcms7CivmlbjkvY3kv6HomZ8gPCBkaWdpdGFsXC1zaWduYWw7CivmlL7mmKAgPCBzaG93XC1cKGFcLW1vdmllXCk7CivniannkIblsaQgPCBwaHlzaWNhbFwtbGF5ZXI7Civoga/lkIjlnIsgPCB1bml0ZWRcLW5hdGlvbnM7Civoo73pgKAgPCB0b1wtbWFudWZhY3R1cmU7CivliKnnjocgPCBpbnRlcmVzdFwtcmF0ZXM7Civoi7HlnIvkurogPCBicml0aXNoXC1wZXJzb247CivnlJ/plbfmv4DntKAgPCBncm93dGhcLWhvcm1vbmU7Civnmb3nhrHljJYgPCB0dXJuXC13aGl0ZVwtaG90Owor5byx5bCPIDwgc21hbGxcLWFuZFwtd2VhazsKK+aVneWxoyA8IHdvcm5cLW91dFwtc2hvZXM7CivljYHkuIDmnIggPCBlbGV2ZW50aFwtbW9udGg7CivmjIfmj67kuK3lv4MgPCBjb21tYW5kXC1jZW50ZXI7Civnn67lrZAgPCBhXC1zaG9ydFwtcGVyc29uOwor5Y6f5a2Q5qC4IDwgYXRvbWljXC1udWNsZXVzOwor5oqK5YWE5byfIDwgc3dvcm5cLWJyb3RoZXJzOwor6YCf5rG6IDwgcXVpY2tcLWRlY2lzaW9uOwor6Zec56iFIDwgXChjdXN0b21zXClcLWR1dHk7Civnmb3omIcgPCBjb21tb25cLXBlcmlsbGE7Civmr5TlgLwgPCBzcGVjaWZpY1wtdmFsdWU7Civpm7voqbHnt5rot68gPCB0ZWxlcGhvbmVcLWxpbmU7Civln7rnnaMgPCBqZXN1c1wtXChjaHJpc3RcKTsKK+aOoui3ryA8IHRvXC1maW5kXC1hXC1wYXRoOwor6YGZ5o6nIDwgcmVtb3RlXC1jb250cm9sOwor5YyX5paX5pifIDwgdGhlXC1iaWdcLWRpcHBlcjsKK+mWi+eOqeeskSA8IHRvXC1wbGF5XC1hXC1qb2tlOwor6biOIDwgdGhlXC1tYW5nb1wtYmlyZDsKK+m2lyA8IGFcLWtpbmRcLW9mXC1oYXdrOwor5Lul5aSq57ay57Wh5bmAIDwgZXRoZXJuZXRcLWZyYW1lOwor6YGZ5oSfIDwgcmVtb3RlXC1zZW5zaW5nOwor55m96ImyIDwgd2hpdGVcLVwoY29sb3VyXCk7CivprqcgPCB0aGVcLXNoZWF0XC1maXNoOwor5pKl5qy+IDwgYWxsb2NhdGVcLWZ1bmRzOwor6ayYIDwgYmVhdXRpZnVsXC1oYWlyOwor6ayXIDwgaGVhZFwtb3JuYW1lbnRzOwor5bug5belIDwgZmFjdG9yeVwtd29ya2VyOwor6Kqe5rCj5Yqp6KmeIDwgbW9kYWxcLXBhcnRpY2xlOwor6auGIDwgc2hvdWxkZXJcLWJsYWRlOwor5q2j5aW9IDwganVzdFwtXChpblwtdGltZVwpOwor57SE5pu45Lqe6KiYIDwgYm9va1wtb2ZcLWpvc2h1YTsKK+aOouimliA8IHBheVwtYVwtdmlzaXRcLXRvOwor6aiMIDwgYVwtaG9yc2UnJ3NcLW1hbmU7CivppKEgPCBwYXN0cnlcLWZpbGxpbmc7CivppJcgPCBmb29kXC1pblwtdHJpcG9kOwor5byV5ZKOIDwgdGFrZVwtdGhlXC1ibGFtZTsKK+WvqeWIpOW4rSA8IGp1ZGdlbWVudFwtc2VhdDsKK+eZveeyieeXhSA8IHBvd2RlcnlcLW1pbGRldzsKK+WjgeWgsSA8IHdhbGxcLW5ld3NwYXBlcjsKK+aUueWWhCA8IHRvXC1tYWtlXC1iZXR0ZXI7CivntpPmv5/mnInmlYggPCBjb3N0XC1lZmZlY3RpdmU7CivloIXmsbrlkKboqo0gPCB0b1wtZmlybWx5XC1kZW55Owor6YCg5oiQIDwgdG9cLWJyaW5nXC1hYm91dDsKK+W5q+acgyA8IHNlY3JldFwtc29jaWV0eTsKK+mUqiA8IGFcLWtpbmRcLW9mXC10b29sOwor5pON5b+DIDwgdG9cLXdvcnJ5XC1hYm91dDsKK+mPtCA8IHRvXC1wbHVnXC1hXC1ob2xlOwor6Y6pIDwgbW91bHRcLXNhbWFyaXVtOwor5pu45a+r56ym6JmfIDwgd3JpdGluZ1wtc3ltYm9sOwor55m956iuIDwgdGhlXC13aGl0ZVwtcmFjZTsKK+mNhiA8IG1kXC1tZW5kZWxldml1bTsKK+mLqSA8IHBvaW50XC1vZlwtc3dvcmQ7Civpi4MgPCBsb2NrXC1sYW50aGFudW07Civoo5znvLogPCBmaWxsXC1hXC12YWNhbmN5Owor5Y+k5biM6IeYIDwgYW5jaWVudFwtZ3JlZWNlOwor6KW/5q2QIDwgd2VzdGVyblwtZXVyb3BlOwor5Lit5ZyL5Lq6IDwgY2hpbmVzZVwtcGVyc29uOwor6YCV5bqtIDwgdmVyeVwtZGlmZmVyZW50Owor5Y2h57SN57at5ouJ54i+6KeSIDwgY2FwZVwtY2FuYXZlcmFsOwor6KOc57a0IDwgbWVuZFwtXChjbG90aGVzXCk7CivkuI3nn6XmrbvmtLsgPCBhY3RcLXJlY2tsZXNzbHk7Civnm6PnnaPkurogPCBzdXBlcmludGVuZGVudDsKK+mbhuS4rSA8IHRvXC1jb25jZW50cmF0ZTsKK+mAqSA8IHRvXC1ydW5cLXF1aWNrbHk7CivpgbLliLAgPCB0b1wtYXJyaXZlXC1sYXRlOwor6Ly2IDwgbGlnaHRcLWNhcnJpYWdlOwor5rOi576F55qE5rW3IDwgdGhlXC1iYWx0aWNcLXNlYTsKK+i2uSA8IGtpY2tcLXdpdGhcLWhvb2Y7CivloLHlvqkgPCBtYWtlXC1yZXByaXNhbHM7CivnnJ/mg4UgPCByZWFsXC1zaXR1YXRpb247CivmoYzpnaLns7vntbEgPCBkZXNrdG9wXC1zeXN0ZW07CivmnbHljZfkup7lnIsgPCBzb3V0aGVhc3RcLWFzaWE7Civlt6jmtYEgPCBzdHJvbmdcLWN1cnJlbnQ7CivosaMgPCBwaWdcLW9mXC0zXC15ZWFyczsKK+ixliA8IGFcLXNoYWNrbGVkXC1waWc7CivpgIDlrbggPCB0b1wtcXVpdFwtc2Nob29sOwor6K6FIDwga25vd1wtaW5cLWRldGFpbDsKK+W7ieWDuSA8IGNoZWFwbHlcLXByaWNlZDsKK+Wwj+Wei+S8gealrSA8IHNtYWxsXC1idXNpbmVzczsKK+ipqCA8IGtpbmRcLW9mXC1jaWNhZGE7CivpoIbluo/mlbggPCBvcmRpbmFsXC1udW1iZXI7Civnl4XomZ8gPCBzaWNrXC1wZXJzb25uZWw7CivlnJjntZAgPCBcKGhvbGRcLWFcKVwtcmFsbHk7CivopIkgPCBzaG9ydFwtZ2FybWVudHM7CivlnI3nuZ4gPCByZXZvbHZlXC1hcm91bmQ7Civov5HlubQgPCByZWNlbnRcLXllYXJcKHNcKTsKK+ihgiA8IHRvXC1iZVwtZGVmZWF0ZWQ7CivooIIgPCBwb2Rpc21hXC1taWthZG87Civon7MgPCBhXC1raW5kXC1vZlwtY3JhYjsKK+ifrSA8IHZlcnlcLXNtYWxsXC1idWc7CivlgJLplokgPCB0b1wtZ29cLWJhbmtydXB0Owor6J6sIDwgZ3J1YnNcLWluXC1mcnVpdDsKK+WGt+aIsCA8IFwodGhlXClcLWNvbGRcLXdhcjsKK+icjiA8IG1vc3F1aXRvXC1sYXJ2YTsKK+izh+aWmeS7i+mdoiA8IGRhdGFcLWludGVyZmFjZTsKK+iZgCA8IG1pbmNlZFwtcGlja2xlczsKK+iWsyA8IG5hbWVcLW9mXC1hXC1oZXJiOwor6JaYIDwgcGxhbnRhZ29cLW1ham9yOwor5YO555uuIDwgXChtYXJrZWRcKVwtcHJpY2U7Civok68gPCBtZWRpY2luYWxcLWhlcmI7Civok48gPCBmcnVpdFwtb2ZcLXBsYW50Owor6JGlIDwgcnVidXNcLXBhbG1hdHVzOwor55eF6ISIIDwgYWJub3JtYWxcLXB1bHNlOwor5LiN5oCO6bq85qijIDwgbm90XC11cFwtdG9cLW11Y2g7CivmvLjoroogPCBncmFkdWFsXC1jaGFuZ2U7CivojJ4gPCBmcmFncmFudFwtcGxhbnQ7CivpnZ7luLjph43opoEgPCB2ZXJ5XC1pbXBvcnRhbnQ7CivntIDlv7UgPCB0b1wtY29tbWVtb3JhdGU7CivplovmnIMgPCBoYXZlXC1hXC1tZWV0aW5nOwor6Yar5a245bCI5a62IDwgbWVkaWNhbFwtZXhwZXJ0Owor6IqIIDwgYmxlYXRcLW9mXC1zaGVlcDsKK+WFiOmAsuawtOW5syA8IGFkdmFuY2VkXC1sZXZlbDsKK+WNgOWfn+e2sui3r+aKgOihkyA8IGxhblwtdGVjaG5vbG9neTsKK+WFqOaZryA8IHBhbm9yYW1pY1wtdmlldzsKK+WIgOWPiSA8IGtuaWZlXC1hbmRcLWZvcms7CivohKYgPCB1c2VkXC1pblwtJydsZWRlJyc7CivpgKPpjpblj43mh4kgPCBjaGFpblwtcmVhY3Rpb247CivnibnliKXmhJ/orJ0gPCBzcGVjaWFsXC10aGFua3M7Civkurrlo73kv53pmqogPCBsaWZlXC1pbnN1cmFuY2U7CivluIPluJsgPCBjbG90aFwtYW5kXC1zaWxrOwor5om+6YyiIDwgdG9cLWdpdmVcLWNoYW5nZTsKK+ijnOa2siA8IGZsdWlkXC1pbmZ1c2lvbjsKK+i1t+m7niA8IHN0YXJ0aW5nXC1wb2ludDsKK+WwseaYr+iqqiA8IGluXC1vdGhlclwtd29yZHM7CivloLHliIYgPCBjYWxsXC10aGVcLXNjb3JlOwor5pWZ6IKy55WMIDwgYWNhZGVtaWNcLXdvcmxkOwor5oy656uLIDwgdG9cLXN0YW5kXC1lcmVjdDsKK+S4jeW5s+etieainee0hCA8IHVuZXF1YWxcLXRyZWF0eTsKK+WFq+aIkCA8IGVpZ2h0eVwtcGVyY2VudDsKK+WFqeaJiyA8IGRvdWJsZVwtdGFjdGljczsKK+e1nCA8IGFcLW1hcmtpbmdcLWxpbmU7CivmjqHmsrkgPCBvaWxcLWV4dHJhY3Rpb247CivntL4gPCB0dXJuc1wtb3JcLXR3aXN0Owor57O6IDwgdG9cLWNvbGxhYm9yYXRlOwor6Leo6LaKIDwgdG9cLXN0ZXBcLWFjcm9zczsKK+i3kemBkyA8IGF0aGxldGljXC10cmFjazsKK+S4jeaVoueVtiA8IHlvdVwtZmxhdHRlclwtbWU7CivnsasgPCBiYW1ib29cLXV0ZW5zaWw7CivnrawgPCByZWVkXC1vZlwtYVwtbG9vbTsKK+WWmOS4jemBjuawo+S+hiA8IGNhbm5vdFwtYnJlYXRoZTsKK+aPoeaLsyA8IHRvXC1tYWtlXC1hXC1maXN0Owor5Ymv57i957WxIDwgdmljZVwtcHJlc2lkZW50Owor55Sa6Iez5pa8IDwgc29cLW11Y2hcLVwodGhhdFwpOwor5o+h5omLIDwgdG9cLXNoYWtlXC1oYW5kczsKK+eorSA8IHN0YWxrXC1vZlwtZ3JhaW47Civnsr7lubIgPCBjcmFja1wtXCh0cm9vcHNcKTsKK+mVt+W+gSA8IHRoZVwtbG9uZ1wtbWFyY2g7Civnl4Xnl5sgPCBzbGlnaHRcLWlsbG5lc3M7CivkuI3lubPooaEgPCBkaXNlcXVpbGlicml1bTsKK+egoiA8IHBpbGVcLW9mXC1zdG9uZXM7Civnn4kgPCBhblwtYW5ncnlcLWdsYXJlOwor552xIDwgdG9cLWdhemVcLXNsb3dseTsKK+edryA8IHRvXC1iZVwtYWdvbml6ZWQ7Civoi7Hlr7ggPCBcKGVuZ2xpc2hcKVwtaW5jaDsKK+ecoyA8IHByb21pbmVudFwtZXllczsKK+aOoeaUtueOhyA8IHJlY292ZXJ5XC1yYXRpbzsKK+iHqueUseWMliA8IGxpYmVyYWxpemF0aW9uOwor5qiZ5bC6IDwgc3VydmV5b3InJ3NcLXJvZDsKK+iWqemBlOWnhuS+r+izveWboCA8IHNhZGRhbVwtaHVzc2VpbjsKK+eSuCA8IGphZGUnJ3NcLXN0cmVha3M7CivnkpggPCBsdXN0ZXJcLW9mXC1qYWRlOwor5bCH6LuNIDwgXChhcm15XClcLWdlbmVyYWw7CivnjqUgPCBteXN0ZXJpb3VzXC1nZW07Civni6ggPCBoYXBhbGVcLWphY2NodXM7CivlhanlnIsgPCBib3RoXC1jb3VudHJpZXM7CivlhajlnIsgPCBlbnRpcmVcLWNvdW50cnk7CivniqggPCBwYW50aW5nXC1vZlwtY293Owor5LiN6YGp55SoIDwgbm90XC1hcHBsaWNhYmxlOwor5L2G5Lul55CG5pu4IDwgYm9va1wtb2ZcLWRhbmllbDsKK+eHiSA8IGhlYXRcLXdpdGhcLWZpcmU7Civnh4AgPCB0b1wtbWFrZVwtYVwtZmlyZTsKK+eGiSA8IFwoeWVsbG93XC1jb2xvclwpOwor6Lyp5a2QIDwgYWxsXC1vbmUnJ3NcLWxpZmU7Civplbfln44gPCB0aGVcLWdyZWF0XC13YWxsOwor6KGo5rG6IDwgZGVjaWRlXC1ieVwtdm90ZTsKK+aIkOmDvSA8IGNoZW5nZHVcLVwoY2l0eVwpOwor6ayl5pm6IDwgYmF0dGxlXC1vZlwtd2l0czsKK+WFq+WNgyA8IGVpZ2h0XC10aG91c2FuZDsKK+a6myA8IHRvXC1mb3JtXC1ob2xsb3c7CivmubEgPCBzb3VuZFwtb2ZcLXdhdGVyOwor5o235YWL5YWx5ZKM5ZyLIDwgY3plY2hcLXJlcHVibGljOwor55eF5q23IDwgbWVkaWNhbFwtcmVjb3JkOwor5riiIDwgcGxlYXNhbnRcLXNvdW5kOwor5rasIDwgd2F0ZXJ5XC1leHBhbnNlOwor57Ch5Zau5YyWIDwgc2ltcGxpZmljYXRpb247CivkvLjplosgPCB0b1wtc3RyZXRjaFwtb3V0Owor5rS/IDwgc3RhZ25hbnRcLXdhdGVyOwor6L+r5LiN5b6X5beyIDwgaGF2ZVwtbm9cLWNob2ljZTsKK+ipleWDueWIhumhniA8IHJhbmtcLFwtY2xhc3NpZnk7Civms4IgPCBjbGVhclwtYW5kXC1kZWVwOwor5ryU56S6IDwgdG9cLWRlbW9uc3RyYXRlOwor5rK3IDwgdG9cLXJlbW92ZVwtZXZpbDsKK+W+nuS6i+eglOeptiA8IHRvXC1kb1wtcmVzZWFyY2g7Civmrq0gPCBhXC1zdGlmZlwtY29ycHNlOwor5Lul6LO95Lqe5pu4IDwgYm9va1wtb2ZcLWlzYWlhaDsKK+m5vea5luWfjiA8IHNhbHRcLWxha2VcLWNpdHk7CivmqpYgPCB3aWxkXC1wZWFyXC10cmVlOwor5qm/IDwgcXVlcmN1c1wtZ2xhdWNhOwor5YKz5pKtIDwgdG9cLWRpc3NlbWluYXRlOwor5YWl5LyNIDwgZW50ZXJcLXRoZVwtYXJteTsKK+mmlumDvSA8IGNhcGl0YWxcLVwoY2l0eVwpOwor5qa+IDwgcGllY2VzXC1vZlwtd29vZDsKK+amoCA8IGNoaW5lc2VcLXF1aW5jZTsKK+amliA8IHBhcGVyXC1tdWxiZXJyeTsKK+akqiA8IG1hY2hpbHVzXC1uYW5tdTsKK+a9lOa3qCA8IGNsZWFuc2VcLVwoc2luc1wpOwor5qOQIDwgc3BlY2llc1wtb2ZcLXlldzsKK+aiiiA8IHNxdWVlemVcLW91dFwtb2Y7CivljYrmlbjku6XkuIogPCBtb3JlXC10aGFuXC1oYWxmOwor5p++IDwgc3RyYWlnaHRcLWdyYWluOwor5p+DIDwgZXVyeWFcLWphcG9uaWNhOwor6IiM5qC5IDwgYmFja1wtb2ZcLXRvbmd1ZTsKK+aqlOahiOWxrOaApyA8IGZpbGVcLWF0dHJpYnV0ZTsKK+abjyA8IG9uY2VcLXVwb25cLXRpbWU7CivooYzmlL8gPCBhZG1pbmlzdHJhdGlvbjsKK+ihgOijveWTgSA8IGJsb29kXC1wcm9kdWN0czsKK+aZoiA8IGxpZ2h0XC1vZlwtc3RhcnM7CivlsI/ogbIgPCBpblwtYVwtbG93XC12b2ljZTsKK+aYsCA8IHZhclwtb2ZcLScndG9cLWJlJyc7Civnr6HmlLkgPCB0b1wtdGFtcGVyXC13aXRoOwor5oiq6IezIDwgdXBcLXRvXC1cKGFcLXRpbWVcKTsKK+aUgiA8IHRvXC1iZWF0XC1hXC1kcnVtOwor6LW36I2JIDwgZHJhZnRcLVwoYVwtYmlsbFwpOwor5oyo5omTIDwgdGFrZVwtYVwtYmVhdGluZzsKK+WxpOeQhiA8IHN0cmF0aWZpY2F0aW9uOwor55CD6Z6LIDwgYXRobGV0aWNcLXNob2VzOwor6Y2L6LK8IDwgZnJpZWRcLWR1bXBsaW5nOwor5Ye56Z2i6Y+hIDwgY29uY2F2ZVwtbWlycm9yOwor5o6I5ZG9IDwgdG9cLWdpdmVcLW9yZGVyczsKK+mWi+W/g+aenCA8IHBpc3RhY2hpb1wtbnV0czsKK+W+nuS+huaykuaciSA8IGhhdmVcfGhhc1wtbmV2ZXI7Civku6Xmlq/luJboqJggPCBib29rXC1vZlwtZXN0aGVyOwor5pyA5L2z5Yip55uKIDwgYmVzdFwtaW50ZXJlc3RzOwor5LiW55WM6KqeIDwgd29ybGRcLWxhbmd1YWdlOwor5oOh5oCn5b6q55KwIDwgdmljaW91c1wtY2lyY2xlOwor5qC46IO9IDwgbnVjbGVhclwtZW5lcmd5Owor5rWu6bueIDwgZmxvYXRpbmdcLXBvaW50Owor5bmxIDwgb2ZmaWNpYWxcLWRyZXNzOwor5LiN55yB5Lq65LqLIDwgYmVcLXVuY29uc2Npb3VzOwor5befIDwgYVwtd2F0ZXJ5XC13YXN0ZTsKK+eZvueEoeiBiuiztCA8IGJvcmVkXC10b1wtZGVhdGg7CivooYzmmJ/pmpsgPCBpbnRlcnBsYW5ldGFyeTsKK+S4reW/g+iqniA8IHF1YWxpZmllZFwtd29yZDsKK+WPg+isgOmVtyA8IGNoaWVmXC1vZlwtc3RhZmY7Civoh6rlvp4gPCBzaW5jZVwtXChhXC10aW1lXCk7Civmo4Tmq7sgPCBhYmFuZG9uZWRcLWJhYnk7CivnlKLmrIogPCBwcm9wZXJ0eVwtcmlnaHQ7CivpvZLovKogPCBcKG1hY2hpbmVcKVwtZ2VhcjsKK+S+teeKryA8IHRvXC1pbmZyaW5nZVwtb247CivphqvlrbjkuK3lv4MgPCBtZWRpY2FsXC1jZW50ZXI7CivooYDlo5MgPCBibG9vZFwtcHJlc3N1cmU7CivpjITlg4/mqZ8gPCB2aWRlb1wtcmVjb3JkZXI7CivloZUgPCBhXC1ndXN0XC1vZlwtd2luZDsKK+WfhyA8IG5hbWVcLW9mXC1icmlkZ2U7CivlhYnkv6HomZ8gPCBvcHRpY2FsXC1zaWduYWw7CivntpzlkIjloLHlsI4gPCBzdW1tYXJ5XC1yZXBvcnQ7CivlmbkgPCBzb3VuZFwtb2ZcLWJlbGxzOwor5ZiTIDwgZ3VyZ2xpbmdcLXNvdW5kOwor5rib6IKlIDwgdG9cLWxvc2VcLXdlaWdodDsKK+S7o+ihqCA8IHJlcHJlc2VudGF0aXZlOwor5aSn5ZCM5bCP55WwIDwgYWxtb3N0XC1zaW1pbGFyOwor5ZWMIDwgYW5pbWFsXC1kaXNlYXNlOwor55Wr5bGVIDwgYXJ0XC1leGhpYml0aW9uOwor55Sf5pWIIDwgdG9cLXRha2VcLWVmZmVjdDsKK+aguOatpuWZqCA8IG51Y2xlYXJcLXdlYXBvbjsKK+mBlOS4jeWIsCA8IGNhbm5vdFwtYWNoaWV2ZTsKK+aJjeawoyA8IGxpdGVhcnlcLXRhbGVudDsKK+WOgyA8IHRvXC1sb29rXC11cHdhcmQ7Civlja0gPCBoaWdoXC5cLXRvXC1yYWlzZTsKK+WNgiA8IHRvXC1mbHlcLXJhcGlkbHk7CivljZHouqzlsYjnr4AgPCBib3dcLWFuZFwtc2NyYXBlOwor5oGt6LOA5paw56anIDwgaGFwcHlcLW5ld1wteWVhcjsKK+WwiOashCA8IHNwZWNpYWxcLWNvbHVtbjsKK+WtuOexjSA8IHNjaG9vbFwtcm9sbFwoc1wpOwor56aB6aOfIDwgZmFzdFwtXChub3RcLWVhdFwpOwor5YWL5p6X6aCTIDwgXChiaWxsXClcLWNsaW50b247CivkvJUgPCBjb21tb25cLWxhYm9yZXI7CivkuocgPCBrd3VreWVsXC1oYW1tZXI7CivktpQgPCBwcm9taW5lbnRcLWd1bXM7CivktpAgPCB0b1wtdGFrZVwtYnJlYXRoOwor5LaAIDwgc291bmRcLW9mXC1kcnVtczsKK+S1tiA8IGFcLWtpbmRcLW9mXC1mcm9nOwor5LWMIDwgcmVkZGlzaFwteWVsbG93Owor5LS0IDwgYVwta2luZFwtb2ZcLWNha2U7CivktKkgPCBhXC1raW5kXC1vZlwtZGVlcjsKK+S0mCA8IGFcLWtpbmRcLW9mXC1iaXJkOwor5LO4IDwgdGhlXC13aWxkXC1nb29zZTsKK+SzqyA8IGFcLXNtYWxsXC1waWdlb247CivksqIgPCBhXC1raW5kXC1vZlwtZmlzaDsKK+afkOeoriA8IHNvbWVcLWtpbmRcLVwob2ZcKTsKK+SwuSA8IHRoZVwtY3V0dGxlZmlzaDsKK+SwtCA8IGFcLXdhZnRpbmdcLWZpc2g7CivksKEgPCBhXC1maWVyY2VcLWdob3N0Owor5bCH5pyDIDwgd2lsbFwsXC1nb2luZ1wtdG87Civkr5sgPCB0aGVcLWtuZWVcLWJvbmVzOwor5K65IDwgYW5cLWFuZ3J5XC1ob3JzZTsKK+SuriA8IGFcLWtpbmRcLW9mXC1tdWxlOwor5K27IDwgYVwtc3dpZnR5XC1ob3JzZTsKK+StrSA8IHRoZVwtZWxkZXN0XC1zb247CivkrakgPCB0b1wtZmVlZFwtYVwtYmFieTsKK+WJjeeUn+WPrOWWmiA8IGZvcmVvcmRpbmF0aW9uOwor5K2BIDwgc3RpbmtpbmdcLXNtZWxsOwor5Ky6IDwgc2FtZVwtYXNcLXVcKzRiNTA7CivkrJggPCB0aGVcLXdpbmRcLWJsb3dzOwor5KySIDwgdG9cLWJsb3dcLWNoaWxseTsKK+ixjui1tyA8IGhvbGRcLXVwXC1cKGhpZ2hcKTsKK+e2sumam+mbu+ipsSA8IGludGVybmV0XC1waG9uZTsKK+SrqyA8IGh1bWFuXC1za2VsZXRvbjsKK+SqvCA8IHRoZVwtY2hlZWtcLWJvbmU7CivkqoggPCBhXC1sZWF0aGVyXC1iZWx0Owor5KmQIDwgdGllXC1pdFwtdGlnaHRseTsKK+SopSA8IGFcLXBvdXJpbmdcLXJhaW47Civkp6cgPCBoaWdoXC1tb3VudGFpbnM7Civlr7bmm7ggPCB0cmVhc3VyZWRcLWJvb2s7CivkprogPCBuYW1lXC1vZlwtYVwtaGlsbDsKK+SmpCA8IHNlZWRcLW9mXC1ncmFpbnM7CivkppEgPCB3aXRob3V0XC1hXC1kb29yOwor5KaPIDwgd2luZ1wtb2ZcLWFcLWRvb3I7CivogZboqpXnr4AgPCBjaHJpc3RtYXNcLXRpbWU7CivkpJYgPCBhXC1raW5kXC1vZlwtd2luZTsKK+SjjiA8IG5hbWVcLW9mXC1jb3VudHk7Civnmb3ku6TmtbcgPCB0aGVcLWJlcmluZ1wtc2VhOwor5KKoIDwgdG9cLXdhbGtcLXNsb3dseTsKK+ShviA8IGhpZ2hcLWNhcnRsb2FkczsKK+ShsiA8IHJpbVwtb2ZcLWFcLXdoZWVsOwor5pGp6ZaA57aTIDwgYm9va1wtb2ZcLW1vcm1vbjsKK+ShiSA8IGFcLWtpbmRcLW9mXC1jYXJ0Owor6JiL5p6c6Zu76IWmIDwgYXBwbGVcLWNvbXB1dGVyOwor5Jy9IDwgYVwta2luZFwtb2ZcLWJlYW47CivknJwgPCB3b3Jkc1wtb2ZcLWFuZ2VyOwor5JugIDwgdW5hYmxlXC10b1wtdGFsazsKK+WQg+mpmiA8IHRvXC1iZVwtc3RhcnRsZWQ7CivkmpYgPCBtb3VudGFpblwtZGVpdHk7CivkmoQgPCB0b1wtbWFrZVwtZnVuXC1vZjsKK+SZsyA8IHNwaXRpbmdcLWZsYW1lczsKK+SZpiA8IHVwcGVyXC1nYXJtZW50czsKK+SYoiA8IG9sZFwtYW5kXC1zaGFiYnk7Civkl7cgPCBhXC1raW5kXC1vZlwtd2FzcDsKK+SXqiA8IGFcLWtpbmRcLW9mXC13b3JtOwor5JeaIDwgZWdnc1wtb2ZcLW1hbnRpczsKK+SXkiA8IGFcLWtpbmRcLW9mXC1jbGFtOwor5JawIDwgYVwta2luZFwtb2ZcLWduYXQ7Civmkp7mk4rlvI/ljbDooajmqZ8gPCBpbXBhY3RcLXByaW50ZXI7CivklZogPCBhXC1zdHJhd1wtYmFza2V0Owor5JSVIDwgY2hpY2tlblwtYnJlYXN0Owor5JSLIDwgYVwta2luZFwtb2ZcLXRyZWU7CivlsI7lvYggPCBndWlkZWRcLW1pc3NpbGU7CivklIIgPCB2ZWdldGFibGVcLXNvdXA7CivmuIXniL0gPCBmcmVzaFwtYW5kXC1jb29sOwor5JOhIDwgYVwtbWVkaWNhbFwtaGVyYjsKK+SSkyA8IHRvXC1kb1wtdmlvbGVuY2U7CivkkocgPCBuYW1lXC1vZlwtYVwtc2hpcDsKK+SShSA8IGJlYXV0aWZ1bFwtZXllczsKK+SRtiA8IHNwcmlnaHRseVwtYm9hdDsKK+SRqyA8IHRvb2xzXC1mb3JcLWJvYXQ7CivkkaMgPCBhXC1zYWlsaW5nXC1ib2F0Owor5JGcIDwgdG9cLWVhdFwtaGVhdmlseTsKK+S6kuiBryA8IGludGVyY29ubmVjdGVkOwor5JCVIDwgb2lsXC1hbmRcLWdyZWFzZTsKK+SQjSA8IGV4Y2VsbGVudFwtZm9vZDsKK+SNoSA8IHNtYWxsXC1maXNoXC1uZXQ7CivkjZEgPCBhXC1uZXRcLW9yXC1zbmFyZTsKK+SNjSA8IHVuYnVybnRcLWJyaWNrczsKK+WUseeJhyA8IFwodmlueWxcKVwtcmVjb3JkOwor5Iy1IDwgbGFwZWxcLWFuZFwtYmVsdDsKK+SMsCA8IGNvbm5lY3RlZFwtc2lsazsKK+SMpSA8IHRvXC1zZXdcLWNsb3RoZXM7CivkjKEgPCB0b1wtd2luZFwtYXJvdW5kOwor5LqM6ICFIDwgYm90aFwtXFtvZlwtdGhlbVxdOwor5Iu9IDwgaGVtcGVuXC1zYW5kYWxzOwor5IuvIDwgY3J1Y2lhbFwtcG9pbnRzOwor5IuiIDwgdG9cLXR3aXN0XC1yb3BlczsKK+SKvCA8IG1lYXN1cmluZ1wtdW5pdDsKK+aJjeWtkCA8IGdpZnRlZFwtc2Nob2xhcjsKK+S+teWusyA8IHRvXC1lbmNyb2FjaFwtb247CivkiqggPCBzdG9yaW5nXC1ncmFpbnM7CivkiLcgPCBhXC1iYW1ib29cLWZlbmNlOwor5IiaIDwgYVwtYmFtYm9vXC1zaG9vdDsKK+S4jeiEm+iAjOi1sCA8IGdldFwtcm91bmRcLWZhc3Q7Civkh6sgPCBiYW1ib29cLXNwbGludHM7Civkh4UgPCB0b1wtc3RhbmRcLXN0aWxsOwor5LiJ6Lyq6LuK5LyVIDwgcGVkaWNhYlwtZHJpdmVyOwor5a+25bqrIDwgdHJlYXN1cmVcLWhvdXNlOwor5L+d5ZauIDwgZ3VhcmFudGVlXC1zbGlwOwor6aO957aT6aKo6ZycIDwgd2VhdGhlclwtYmVhdGVuOwor5IWlIDwgcmlwZW5pbmdcLWNyb3BzOwor5bCP5a24IDwgcHJpbWFyeVwtc2Nob29sOwor5LuU55WcIDwgbmV3Ym9yblwtYW5pbWFsOwor5IO5IDwgamFkZVwtYW5kXC1zdG9uZTsKK+SDoSA8IGFcLXNtYWxsXC1wZWJibGU7CivmnKzoibIgPCBuYXR1cmFsXC1jb2xvdXI7Civkg48gPCBhXC1raW5kXC1vZlwtcm9jazsKK+SDjCA8IHJvY2t5XC1tb3VudGFpbjsKK+S+huW+gCA8IHRvXC1jb21lXC1hbmRcLWdvOwor5IKMIDwgYVwtc2hvcnRcLXdlYXBvbjsKK+WFqOW/g+WFqOaEjyA8IGhlYXJ0XC1hbmRcLXNvdWw7CivkgaQgPCBtb2lzdGVuZWRcLWV5ZXM7CivkgY8gPCBmYXJzaWdodGVkbmVzczsKK+SAuiA8IHNxdWludGluZ1wtZXllczsKK+W3pealreeahOW3qOmgrSA8IGluZHVzdHJ5XC1tb2dvbDsKK+O9piA8IHJlY2xhaW1lZFwtbGFuZDsKK+O9pSA8IGZlcnRpbGVcLWZpZWxkczsKK+O9iyA8IGFcLWtpbmRcLW9mXC10aWxlOwor472EIDwgYW5cLWVhcnRoZW5cLWphcjsKK+mhjOi3iyA8IHNob3J0XC1jb21tZW50czsKK+O4qyA8IGNhc3RyYXRlZFwtYnVsbDsKK+O4pCA8IGJyb2tlblwtbGVhdGhlcjsKK+O4iiA8IGZpZXJjZVwtb2ZcLWZpcmU7CivjtqAgPCB3YXRlclwtY3VycmVudHM7CivkuI3op6MgPCBub3RcLXVuZGVyc3RhbmQ7Civms7DnsbPniL7oqp4gPCB0YW1pbFwtbGFuZ3VhZ2U7CivjtZggPCBncmVhdFwtY3VycmVudHM7Civmh67mha4gPCBcKGZlZWxcKVwtYW54aWV0eTsKK+O0uCA8IHN3aWZ0XC1jdXJyZW50czsKK+eKr+S4jeiRlyA8IG5vdFwtd29ydGh3aGlsZTsKK+O0mSA8IHdhdGVyXC1kcmlwcGluZzsKK+OzgyA8IHRvXC10ZW1wZXJcLWlyb247Civjso8gPCBmbHlpbmdcLWZlYXRoZXI7CivkvZnmgrggPCBsaW5nZXJpbmdcLWZlYXI7CivjsY8gPCB0aGVcLXJpZ2h0XC1zaWRlOwor5oiQ5bCxIDwgYWNjb21wbGlzaG1lbnQ7CivjrbsgPCB0aGVcLWNyYWJcLWFwcGxlOwor5LiN55So6KydIDwgeW91JydyZVwtd2VsY29tZTsKK+OtjyA8IGFcLWtpbmRcLW9mXC13b29kOwor462EIDwgYVwta2luZ1wtb2ZcLXRyZWU7Civlrrnlv40gPCB0b1wtcHV0XC11cFwtd2l0aDsKK+OrjyA8IGFcLWtpbmRcLW9mXC1mbGFnOwor46uCIDwgdG9cLWNob3BcLW9yXC1jdXQ7Civnvbfoq5YgPCBhYmFuZG9uZWRcLWlkZWE7CivmgqPomZUgPCBhZmZsaWN0ZWRcLXBhcnQ7CivjqIcgPCB0b1wtc3dlZXBcLWNsZWFuOwor46W6IDwgdG9cLWJsb3dcLWFcLWZpcmU7CivkuI3mnJ/ogIzpgYcgPCBtZWV0XC1ieVwtY2hhbmNlOwor46WJIDwgYVwtbGl0dGxlXC1hbmdyeTsKK+OlhyA8IHRvXC1iZVwtcGVydmVyc2U7CivjpL4gPCBub3RcLWRvaW5nXC13ZWxsOwor46SWIDwgdG9cLWhhdmVcLXdpc2RvbTsKK+OjpiA8IGFcLXdpbmRpbmdcLXBhdGg7Civmnrbmp4sgPCBpbmZyYXN0cnVjdHVyZTsKK+eptOaSrSA8IGJ1bmNoXC1wbGFudGluZzsKK+WNiuiHquWLlSA8IHNlbWlcLWF1dG9tYXRpYzsKK+OhnCA8IHJhZ2dlZFwtY2xvdGhlczsKK+aHt+WtlSA8IHRvXC1iZVwtcHJlZ25hbnQ7CivjoKggPCBtaXN0eVwtbW91bnRhaW47CivjoKEgPCBoaWdoXC1hbmRcLWxvZnR5Owor45+/IDwgaGlnaFwtYW5kXC1zdGVlcDsKK+iBt+alrSA8IGpvYlwtb2NjdXBhdGlvbjsKK+WFp+iSmeWPpCA8IGlubmVyXC1tb25nb2xpYTsKK+mAgOS8kemHkSA8IHJldGlyZW1lbnRcLXBheTsKK+eVmeiogOewvyA8IHZpc2l0b3InJ3NcLWJvb2s7CivjnqkgPCBtb3VudGFpblwtdmFwb3I7CivjnpcgPCB0aGVcLW1hbGVcLW9yZ2FuOwor5Lu75pyfIDwgdGVybVwtb2ZcLW9mZmljZTsKK+OeiiA8IHVuYWJsZVwtdG9cLXdhbGs7CivjnbAgPCB1bmFibGVcLXRvXC1tZWV0Owor452bIDwgYWhhbHRpbmdcLXBsYWNlOwor45ykIDwgZm9vbGluZ1wtYXJvdW5kOwor45yRIDwgYW5cLW9sZGVyXC13b21hbjsKK+i/keS5juWQjOatpSA8IHBsZXNpb2Nocm9ub3VzOwor45upIDwgc2lzdGVyc1wtaW5cLWxhdzsKK+ObgiA8IHdlYWtcLWFuZFwtc21hbGw7CivjmoMgPCB0b1wtdGFrZVwtYVwtaGludDsKK+OZtyA8IGxvd1wtbHlpbmdcLWFyZWE7CivkuI3oiIggPCBvdXRcLW9mXC1mYXNoaW9uOwor45aiIDwgdG9cLXJlamVjdFwtZm9vZDsKK+OVpCA8IGFcLXByb3VkXC10ZW1wZXI7CivnkIPmo5IgPCBcKGJhc2ViYWxsXClcLWJhdDsKK+OUmSA8IGdyZWF0XC1zdHJlbmd0aDsKK+OSmyA8IHRvXC1zdGFuZFwtYWxvbmU7CivjkoAgPCBkb1wtbm90XC1mZWFyXC10bzsKK+izh+agvCA8IHF1YWxpZmljYXRpb25zOwor5p2x5rW3IDwgZWFzdFwtY2hpbmFcLXNlYTsKK+atu+S6oeeOhyA8IG1vcnRhbGl0eVwtcmF0ZTsKK+WTpeacrOWTiOaguSA8IGNvcGVuaGFnZW5cLVw/XD9cPzsKK+adseatkCA8IGVhc3Rlcm5cLWV1cm9wZTsKK+S7u+aGkSA8IG5vXC1tYXR0ZXJcLXdoYXQ7Civku4rmnJ0gPCBhdFwtdGhlXC1wcmVzZW50Owor5L2c5ZOBIDwgd29ya3NcLVwob2ZcLWFydFwpOwor5oaL5oK2IDwgZmVlbFwtb3BwcmVzc2VkOwor6aO85qe9IDwgZmVlZGluZ1wtdHJvdWdoOwor6K2m6LuKIDwgcG9saWNlXC12ZWhpY2xlOwor5a+S5Ya3IDwgY29sZFwtXChjbGltYXRlXCk7Civlk4joqbLmm7ggPCBib29rXC1vZlwtaGFnZ2FpOwor5a6J5aW9IDwgc2FmZVwtYW5kXC1zb3VuZDsKK+a2suaZtiA8IGxpcXVpZFwtY3J5c3RhbDsKK+WPg+ingCA8IHRvXC1sb29rXC1hcm91bmQ7CivpmL/kvI/kvL3lvrfnvoXlrprlvosgPCBhdm9nYWRybycnc1wtbGF3Owor5pO65pSk5a2QIDwgc2V0XC11cFwtYVwtc3RhbGw7Civlj6/og70gPCBtaWdodFwtXChoYXBwZW5cKTsKK+mmluWFiCA8IGZpcnN0XC1cKG9mXC1hbGxcKTsKK+eRnuWjq+S6uiA8IHN3aXNzXC1cKHBlcnNvblwpOwor5q+P56uv5Y+j5YO55qC8IDwgcHJpY2VcLXBlclwtcG9ydDsKK+a2suaFiyA8IGxpcXVpZFwtXChzdGF0ZVwpOwor5a2V5ammIDwgcHJlZ25hbnRcLXdvbWFuOwor5LmY5rOVIDwgbXVsdGlwbGljYXRpb247Civlt67kuI3lpJogPCBhbG1vc3RcLFwtbmVhcmx5Owor5a6a5YO5IDwgdG9cLXNldFwtYVwtcHJpY2U7Civmi6zlvKfoo6EgPCBpblwtcGFyZW50aGVzZXM7CivmmpfnrrEgPCBjYW1lcmFcLWJlbGxvd3M7CivmuJvliJEgPCByZWR1Y2VcLXBlbmFsdHk7Civnmb7nsbPos73ot5EgPCAxMDBcLW1ldHJlXC1kYXNoOwor5L+h6Jmf6Ie6IDwgc2lnbmFsXC1zdGF0aW9uOwor5LiW55WM5LiKIDwgXChvZlwtdGhlXClcLXdvcmxkOwor6Kq/5p+l5aCx5ZGKIDwgbWVtb2lyXCxcLXJlcG9ydDsKK+Wck+ePoOethiA8IGJhbGxcLXBvaW50XC1wZW47CivkuK3mrZAgPCBjZW50cmFsXC1ldXJvcGU7CivlhajnkIPmsKPlgJnljYfmuqsgPCBnbG9iYWxcLXdhcm1pbmc7Civniq/nvaogPCBcKGNvbW1pdFwpXC1jcmltZTsKK+S7veWFkiA8IGRlZ3JlZVwsXC1leHRlbnQ7Civot5Hohb/lhZIgPCB0b1wtcnVuXC1lcnJhbmRzOwor5LiN5q2j5bi454uA5rOBIDwgYWJub3JtYWxcLXN0YXRlOwor54m56ImyIDwgY2hhcmFjdGVyaXN0aWM7CivkuK3mlrcgPCB0b1wtZGlzY29udGludWU7Civnp5XlrZAgPCBibGlnaHRlZFwtZ3JhaW47CivkuJbnlYzntpPmv58gPCBnbG9iYWxcLWVjb25vbXk7CivmnInlvoUgPCBub3RcLXlldFwtXChkb25lXCk7CivpoYzmnZAgPCBzdWJqZWN0XC1tYXR0ZXI7CivnpKbms4kgPCBtaW5lcmFsXC1zcHJpbmc7CivpgJrnlKjmsb3ou4ogPCBnZW5lcmFsXC1tb3RvcnM7Civmr5vooaMgPCBcKHdvb2xcKVwtc3dlYXRlcjsKK+iyrOS7uyA8IHJlc3BvbnNpYmlsaXR5Owor5YyX5Lqs6YCx5aCxIDwgYmVpamluZ1wtcmV2aWV3Owor5Y2K6IG3IDwgcGFydFwtdGltZVwtd29yazsKK+azoueLgOeGsSA8IHVuZHVsYW50XC1mZXZlcjsKK+mhr+W+lyA8IGFwcGVhclwtXCh0b1wtYmVcKTsKK+S4jeW/jSA8IGNhbm5vdFwtYmVhclwtdG87Civnn6XorZjluqsgPCBrbm93bGVkZ2VcLWJhc2U7CivmupDpu57lnLDlnYAgPCBzb3VyY2VcLWFkZHJlc3M7CivpgJnmrKHljbHmqZ8gPCBwcmVzZW50XC1jcmlzaXM7CivlpJrlt6XpgYvkvZwgPCBtdWx0aXRocmVhZGluZzsKK+WqveWSqiA8IG11bW15XC1cKG1vdGhlclwpOwor5rOi5oGpIDwgYm9ublwtXChnZXJtYW55XCk7CivmlZfoqLQgPCBsb3NlXC1hXC1sYXdzdWl0Owor6Zu75L+h5bGAIDwgY2VudHJhbFwtb2ZmaWNlOwor5aO96KGjIDwgYnVyaWFsXC1jbG90aGVzOwor6KW/5Y2X5LqeIDwgc291dGh3ZXN0XC1hc2lhOwor5LqM5rCn5YyW56KzIDwgY2FyYm9uXC1kaW94aWRlOwor5pO66ZCYIDwgcGVuZHVsdW1cLWNsb2NrOwor5pKl6Jmf55ukIDwgdGVsZXBob25lXC1kaWFsOwor5YyX57evIDwgbm9ydGhcLWxhdGl0dWRlOwor5Y+K5qC8IDwgdG9cLXBhc3NcLWFcLXRlc3Q7Civms5Xluq0gPCBjb3VydFwtXChvZlwtbGF3XCk7CivpgJnpoZ4gPCB0aGlzXC1raW5kXC1cKG9mXCk7CivntrLntaHoqK3oqIggPCBuZXR3b3JrXC1kZXNpZ247CivlvozlhanogIUgPCB0aGVcLWxhdHRlclwtdHdvOwor5Li75L+uIDwgXChzY2hvb2xcKVwtbWFqb3I7CivorormiJAgPCB0b1wtY2hhbmdlXC1pbnRvOwor5bug56au5oucIDwgZGF5XC1vZmZcLVwod29ya1wpOwor5LiN5ZCIIDwgbm90XC1jb25mb3JtXC10bzsKK+mWi+aUvuW8j+ezu+e1sSA8IG9wZW5cLXN5c3RlbVwoc1wpOwor5paR56u5IDwgbW90dGxlZFwtYmFtYm9vOwor5LiN5Y+KIDwgbm90XC1hc1wtZ29vZFwtYXM7CivliIbpoZ4gPCBjbGFzc2lmaWNhdGlvbjsKK+WFqeeZvuWEhCA8IHR3ZW50eVwtYmlsbGlvbjsKK+eEoemAo+aOpSA8IGNvbm5lY3Rpb25sZXNzOwor6YeN5bu6IDwgcmVjb25zdHJ1Y3Rpb247CivnjJzorI7lhZIgPCBndWVzc1wtYVwtcmlkZGxlOwor6KuL55yLIDwgcGxlYXNlXC1zZWVcLVwuXC5cLjsKK+S6lOW5tOioiOWKgyA8IGZpdmVcLXllYXJcLXBsYW47CivmsKvmsKMgPCBoeWRyb2dlblwtXChnYXNcKTsKK+W4guWgtOe2k+a/nyA8IG1hcmtldFwtZWNvbm9teTsKK+aqlOahiOWft+ihjCA8IGZpbGVcLWV4ZWN1dGlvbjsKK+S6kuWLlembu+imliA8IGludGVyYWN0aXZlXC10djsKK+e+juW3ruS6iyA8IGFcLXRlcnJpZmljXC1qb2I7CivmlbjnqK4gPCBudW1lcm91c1wtdHlwZXM7CivlhrDpu54gPCBmcmVlemluZ1wtcG9pbnQ7CivmrZDmtLLoga/nm58gPCBldXJvcGVhblwtdW5pb247Civoj6/oo5QgPCBldGhuaWNcLWNoaW5lc2U7CivkuI3ku4EgPCBub3RcLWJlbmV2b2xlbnQ7CivmlLbogb0gPCB0b1wtbGlzdGVuXC1cKHRvXCk7Civnu48gPCBjbGFzc2ljXC13b3JrczsKK+W8nyA8IHlvdW5nXC1icm90aGVyOwor5bu7IDwgY2lyY2xlXC1hcm91bmQ7CivlhbMgPCBmcm9udGllclwtcGFzczsKK+W4nSA8IHN1cHJlbWVcLXJ1bGVyOwor55WqIDwgdG9cLXRha2VcLXR1cm5zOwor55WlIDwgYXBwcm94aW1hdGVseTsKK+WFsSA8IHRvZ2V0aGVyXC13aXRoOwor5LmJIDwgcmlnaHRcLWNvbmR1Y3Q7Civlq4IgPCBzaXN0ZXJcLWluXC1sYXc7Civlk6UgPCBlbGRlclwtYnJvdGhlcjsKK+WppiA8IG1hcnJpZWRcLXdvbWVuOwor6KijIDwgdGFrZVwtbGVhdmVcLW9mOwor5pePIDwgYVwtZmFtaWx5XC1jbGFuOwor5aWqIDwgdGFrZVwtYnlcLWZvcmNlOwor56yUIDwgd3JpdGluZ1wtYnJ1c2g7CivoorcgPCBsaW5lZFwtZ2FybWVudDsKK+eArCA8IHN3aWZ0XC1jdXJyZW50Owor5LyvIDwgb2xkZXJcLWJyb3RoZXI7CivmvLIgPCByaXNlXC1pblwtcHJpY2U7CivnpLwgPCBzb2NpYWxcLWN1c3RvbTsKK+WYqSA8IHJ1c2hpbmdcLXNvdW5kOwor5ZWjIDwgaG9sZFwtaW5cLW1vdXRoOwor5rOKIDwgYW5jaG9yXC12ZXNzZWw7Civmsr8gPCBmb2xsb3dcLWNvdXJzZTsKK+WShCA8IG5vaXNlXC1vZlwtcmFnZTsKK+iPiiA8IGNocnlzYW50aGVtdW07CivlsrMgPCBtb3VudGFpblwtcGVhazsKK+WMuSA8IGJvbHRcLW9mXC1jbG90aDsKK+mihyA8IGxlYW5cLW9uZVwtc2lkZTsKK+aZqCA8IGVhcmx5XC1tb3JuaW5nOwor5pKeIDwga25vY2tcLWFnYWluc3Q7CivmhIggPCBtb3JlXC1hbmRcLW1vcmU7Civmp4cgPCB0aXBcLW9mXC1hXC10cmVlOwor6aeFIDwgcmVsYXlcLXN0YXRpb247CivppYUgPCBzdGVhbWVkXC1icmVhZDsKK+eCuCA8IHRvXC1mcnlcLWluXC1vaWw7CivohIggPCBibG9vZFwtdmVzc2VsczsKK+e7qiA8IGVuZFwtb2ZcLXRocmVhZDsKK+mjvCA8IHJhaXNlXC1hbmltYWxzOwor5qKTIDwgY2F0YWxwYVwtb3ZhdGE7CivogowgPCBtdXNjbGVcLXRpc3N1ZTsKK+S9qSA8IGJlbHRcLW9ybmFtZW50Owor572yIDwgcHVibGljXC1vZmZpY2U7CivmkK0gPCBqb2luXC10b2dldGhlcjsKK+aglyA8IGNoZXN0bnV0XC10cmVlOwor5qGRIDwgbXVsYmVycnlcLXRyZWU7CivpnoQgPCB0b1wtd29ya1wtaGlkZXM7CivmnZMgPCBoYW5kbGVcLW9mXC1jdXA7CivkvYMgPCB0ZW5hbnRcLWZhcm1lcjsKK+i0oSA8IG9mZmVyXC10cmlidXRlOwor5puHIDwgYmVjb21lXC1jbG91ZHk7CivkupkgPCBleHRlbmRcLWFjcm9zczsKK+ivniA8IGJlYXJcLWNoaWxkcmVuOwor5pm0IDwgY2xlYXJcLXdlYXRoZXI7CivloZEgPCBtb2RlbFwtaW5cLWNsYXk7CivmtaYgPCBiYW5rXC1vZlwtcml2ZXI7CivnsZQgPCBiYW1ib29cLWJhc2tldDsKK+aFjiA8IGFjdFwtd2l0aFwtY2FyZTsKK+iOiSA8IHdoaXRlXC1qYXNtaW5lOwor5o2XIDwgbWFrZVwtcHJvZ3Jlc3M7CivloYwgPCBmYWxsXC1pblwtcnVpbnM7Civnq5YgPCBwZXJwZW5kaWN1bGFyOwor6ZmVIDwgbW91bnRhaW5cLXBhc3M7Civmg5ogPCBhYnNlbnRcLW1pbmRlZDsKK+a3gCA8IHNoYWxsb3dcLXdhdGVyOwor5reYIDwgd2FzaFwtaW5cLXNpZXZlOwor55GwIDwgZXh0cmFvcmRpbmFyeTsKK+WeqyA8IGFkdmFuY2VcLW1vbmV5Owor54G2IDwga2l0Y2hlblwtcmFuZ2U7Civmr5MgPCBnaXZlXC1iaXJ0aFwtdG87CivlkqcgPCBzdHJldGNoXC1tb3V0aDsKK+WljiA8IHN0cmlkZVwtb2ZcLW1hbjsKK+a0vSA8IHRvXC1ibGVuZFwtd2l0aDsKK+eRtiA8IHByZWNpb3VzXC1qYWRlOwor6ZKwIDwgcmFyZVwtdHJlYXN1cmU7CivnkZsgPCBsdXN0ZXJcLW9mXC1nZW07CivmrokgPCBkaWVcLWZvclwtY2F1c2U7CivllKwgPCB0b1wtaW50aW1pZGF0ZTsKK+eYqiA8IHNocml2ZWxsZWRcLXVwOwor5ZSGIDwgbWFrZVwtbWlzY2hpZWY7CivlspogPCBtb3VudGFpblwtbWlzdDsKK+ahpiA8IHR5cGVcLW9mXC1iaXJjaDsKK+a2nyA8IGZsb3dpbmdcLXdhdGVyOwor6aOVIDwgc291bmRcLW9mXC13aW5kOwor5Z23IDwgY2xvZFwtb2ZcLWVhcnRoOwor6ZGrIDwgdXNlZFwtaW5cLW5hbWVzOwor56yLIDwgYmFtYm9vXC1zaG9vdHM7CivojYMgPCBhcm9tYXRpY1wtaGVyYjsKK+mmhCA8IGR1bXBsaW5nXC1zb3VwOwor56m5IDwgaGlnaFwtYW5kXC12YXN0Owor5byIIDwgY2hpbmVzZVwtY2hlc3M7Civpqa4gPCBjYXJyeVwtb25cLWJhY2s7CivoiqUgPCBtdXN0YXJkXC1wbGFudDsKK+eCnCA8IGJyaWxsaWFudFwtcmVkOwor5bKcIDwgcm9ja1wtbW91bnRhaW47CivnuqsgPCB0aHJlYWRcLW5lZWRsZTsKK+ahgCA8IGNoaWNrZW5cLXJvb3N0Owor5ouuIDwgbGFib3JpbmdcLWhhcmQ7CivnuqUgPCBpbmZlcmlvclwtc2lsazsKK+W/pCA8IGluc3Vib3JkaW5hdGU7CivpuL4gPCBmYWJ1bG91c1wtYmlyZDsKK+WYgSA8IHRvXC1iZVwtZ3JpZXZlZDsKK+i+jiA8IGFcLXN1cHBseVwtY2FydDsKK+iKqyA8IGRhcGhuZVwtZ2Vua3dhOwor5LynIDwgdnVsZ2FyXC1wZXJzb247Civms6AgPCBuaWNlXC1hbmRcLWNvb2w7CivnuLsgPCBoYWx0ZXJcLWZvclwtb3g7CivouL0gPCB0b1wtd2Fsa1wtYWxvbmU7Civota0gPCByZWRkaXNoXC1icm93bjsKK+migCA8IHRhbGxcLWFuZFwtc2xpbTsKK+afmCA8IGFcLXRob3JueVwtdHJlZTsKK+iwlCA8IGhvbmVzdFwtc3BlZWNoOwor6aqTIDwgcGllYmFsZFwtaG9yc2U7CivltKcgPCBoaWdoXC1tb3VudGFpbjsKK+mFmiA8IGNhcmJvbGljXC1hY2lkOwor5aSkIDwgZGlzdGFudFwtcGxhY2U7CivmmowgPCBpblwtb3Bwb3NpdGlvbjsKK+aAjSA8IHRvXC1iZVwtYXNoYW1lZDsKK+i0vSA8IGdpZnRcLXN1cGVyaW9yOwor5q+WIDwgZ3VhcmRcLWFnYWluc3Q7Civov5MgPCB0b1wtZ29cLXRvXC1tZWV0Owor5q+1IDwgbG9uZ1wtZmVhdGhlcnM7CivnnZogPCBjb3JuZXJcLW9mXC1leWU7Civmr70gPCBhXC1zaHV0dGxlY29jazsKK+WDsyA8IG1pbm9yaXR5XC1uYW1lOwor6L6PIDwgaHVic1wtb2ZcLXdoZWVsOwor5peGIDwgZmxhZ1wtb3JuYW1lbnQ7CivojYcgPCBhXC13YXRlclwtcGxhbnQ7Civlja4gPCBtZWFzdXJpbmdcLWN1cDsKK+mroSA8IHRvXC1zaGVhclwtdHJlZTsKK+mznCA8IG1hbmRhcmluXC1maXNoOwor6byNIDwgbGFyZ2VcLXJlcHRpbGU7CivnrKsgPCBwbGFua3NcLW9mXC1iZWQ7CivnvKEgPCBhXC1icmlkYWxcLXZlaWw7Civnu6ggPCBjb2Fyc2VcLXBvbmdlZTsKK+iKsCA8IHdhdGVyXC1jYWx0cm9wOwor6a2DIDwgZHJvdWdodFwtZGVtb247CivoiLMgPCBzdGVyblwtb2ZcLXNoaXA7CivlsaYgPCBzdHJhd1wtc2FuZGFsczsKK+iTkCA8IHN0cmF3XC1iZWRcLW1hdDsKK+mKjiA8IGV5ZVwtb2ZcLWFuXC1heGU7CivphqMgPCBjYXJib2h5ZHJhdGVzOwor6JuRIDwgYVwtbWFyaW5lXC1jcmFiOwor5qSgIDwgd29vZGVuXC10YWJsZXQ7CivlqrggPCBhblwtdWdseVwtd29tYW47CivppocgPCBzdGlyXC1hbmRcLWNvb2s7CivnlJkgPCBzdWdhclwtcHJvZHVjdDsKK+iWpCA8IGFsbGl1bVwtYmFrZXJpOwor5aGlIDwgZHJ5XC1jbGF5XC1sdW1wOwor5qqU5qGI6L2J6YCBIDwgZmlsZVwtdHJhbnNmZXI7Civoq77osp3niL4gPCBub2JlbFwtXChwcml6ZVwpOwor6I+y6I+yIDwgdmVyeVwtZnJhZ3JhbnQ7CivmmILmj5ogPCBoaWdoXC1zcGlyaXRlZDsKK+S/neitiemHkSA8IGVhcm5lc3RcLW1vbmV5Owor56OB5bi2IDwgbWFnbmV0aWNcLXRhcGU7Civop6Poqr8gPCB0b1wtZGVtb2R1bGF0ZTsKK+WMl+a1tyA8IHRoZVwtbm9ydGhcLXNlYTsKK+iWhOWIqSA8IHNtYWxsXC1wcm9maXRzOwor5o6S5bGx5YCS5rW3IDwgZWFydGhcLXNoYWtpbmc7CivmmZrloLEgPCBldmVuaW5nXC1wYXBlcjsKK+aYn+W6pyA8IGNvbnN0ZWxsYXRpb247Civmv4DlhYnmiZPlvJXmqZ8gPCBsYXNlclwtcHJpbnRlcjsKK+WGsOmeiyA8IHNrYXRpbmdcLWJvb3RzOwor5o6b6Jmf6K2JIDwgcmVnaXN0ZXJcLWNhcmQ7Civlu6DntbIgPCBmaWxhdHVyZVwtc2lsazsKK+efm+ebviA8IGNvbnRyYWRpY3Rvcnk7Civlh7ros6MgPCB0b1wtc2VsbFwtXChvZmZcKTsKK+WIsOiZlSA8IGluXC1hbGxcLXBsYWNlczsKK+e2k+eHn+iyu+eUqCA8IGJ1c2luZXNzXC1jb3N0Owor5Y6f5a2Q6IO9IDwgYXRvbWljXC1lbmVyZ3k7Civlj6Tku6MgPCBhbmNpZW50XC10aW1lczsKK+aWsOaciCA8IGNyZXNjZW50XC1tb29uOwor57SA5b+16aSoIDwgbWVtb3JpYWxcLWhhbGw7Civllq7pn7vmr40gPCBzaW1wbGVcLWZpbmFsczsKK+WNs+WwhyA8IG9uXC10aGVcLWV2ZVwtb2Y7CivljZHlvq4gPCBwZXR0eVwtYW5kXC1sb3c7CivljbHlrrMgPCB0b1wtamVvcGFyZGl6ZTsKK+ebtOaIquS6hueVtiA8IHBsYWluXC10YWxraW5nOwor5Ya35oiw5Lul5b6MIDwgcG9zdFwtY29sZFwtd2FyOwor5pyJ5Y+v6IO9IDwgaXQnJ3NcLXBvc3NpYmxlOwor5Yio6IqxIDwgd29vZFwtc2hhdmluZ3M7Civojqjoj6ogPCBibGFja1wtaGVuYmFuZTsKK+iqv+afpSA8IGludmVzdGlnYXRpb247CivntoHohb8gPCBsZWdcLXdyYXBwaW5nczsKK+WIl+iIiSA8IFwobWFrZVwtYVwpXC1saXN0Owor6YGp55SoIDwgYmVcLWFwcGxpY2FibGU7CivmkZjoqJggPCB0b1wtdGFrZVwtbm90ZXM7CivlhYPpppYgPCBoZWFkXC1vZlwtc3RhdGU7CivmnKrmj5Dlj4ogPCBub3RcLW1lbnRpb25lZDsKK+aWueW8jyA8IHdheVwtXChvZlwtbGlmZVwpOwor5pel5aScIDwgZGF5XC1hbmRcLW5pZ2h0Owor6Iqd6bq7IDwgc2VzYW1lXC1cKHNlZWRcKTsKK+acrOeUn+eHiCA8IGJ1bnNlblwtYnVybmVyOwor54mM5Z2KIDwgbWVtb3JpYWxcLWFyY2g7Civlv4Poh5/nl4UgPCBoZWFydFwtZGlzZWFzZTsKK+WJjeeUnyA8IHByZVwtZXhpc3RlbmNlOwor5Yui5Zyo5b+F6KGMIDwgYmVcLWltcGVyYXRpdmU7CivmmIflgLwgPCByaXNlXC1pblwtdmFsdWU7CivljYHkupTlubQgPCBmaWZ0ZWVuXC15ZWFyczsKK+exs+mjryA8IFwoY29va2VkXClcLXJpY2U7CivphKflsI/lubMgPCBkZW5nXC14aWFvcGluZzsKK+i9iemBkyA8IG1ha2VcLWFcLWRldG91cjsKK+iIiue0hOWFqOabuCA8IG9sZFwtdGVzdGFtZW50Owor6ZW36YCUIDwgbG9uZ1wtZGlzdGFuY2U7Civml6XliY0gPCB0aGVcLW90aGVyXC1kYXk7Civlub7lgIvlsI/mmYIgPCBzZXZlcmFsXC1ob3VyczsKK+mCo+m0u+abuCA8IGJvb2tcLW9mXC1uYWh1bTsKK+e2sue1oeWxpCA8IG5ldHdvcmtcLWxheWVyOwor5aKc5q+AIDwgXChwbGFuZVwpXC1jcmFzaDsKK+mbmeaJiyA8IHBhaXJcLW9mXC1oYW5kczsKK+WTpeael+WkmuW+jOabuCA8IDJcLWNvcmludGhpYW5zOwor5Y2X5LqeIDwgc291dGhlcm5cLWFzaWE7CivliIrnmbsgPCBjYXJyeVwtYVwtc3Rvcnk7CivoqoflvLUgPCB0b1wtZXhhZ2dlcmF0ZTsKK+mbo+W/mCA8IHVuZm9yZ2V0dGFibGU7CivlpKrlpKogPCBtYXJyaWVkXC13b21hbjsKK+aSpeeUqCA8IGFwcHJvcHJpYXRpb247Civlr6nliKTmrIQgPCBqdWRnZW1lbnRcLWJhcjsKK+Wig+azgSA8IGNpcmN1bXN0YW5jZXM7CivmsJHkuosgPCBjaXZpbFwtbWF0dGVyczsKK+Wls+S9oyA8IFwoZmVtYWxlXClcLW1haWQ7CivkuI3lj6/nvLrlsJEgPCBpbmRpc3BlbnNhYmxlOwor5YuY5a+fIDwgcmVjb25uYWlzYW5jZTsKK+exjOmbhiA8IGNvbGxlY3RcLW1vbmV5Owor5pON5ryUIDwgZGVtb25zdHJhdGlvbjsKK+eZveiKseiKsSA8IHNoaW5pbmdcLXdoaXRlOwor5bu656+J5a24IDwgYXJjaGl0ZWN0dXJhbDsKK+imlueql+Wfuua6liA8IHdpbmRvd3NcLWJhc2VkOwor6Zu76YO15L2N572uIDwgZW1haWxcLWFkZHJlc3M7Civlubvnh4ggPCBsYXRlcm5cLXNsaWRlczsKK+eglOeptumgmOWfnyA8IHJlc2VhcmNoXC1hcmVhOwor5Lit5ZyL5byPIDwgY2hpbmVzZVwtc3R5bGU7CivliqDlv6sgPCB0b1wtYWNjZWxlcmF0ZTsKK+WGsOezliA8IGNyeXN0YWxcLXN1Z2FyOwor5ZyL6ZqbIDwgaW50ZXJuYXRpb25hbDsKK+WNiuWksealrSA8IHNlbWlcLWVtcGxveWVkOwor6ayl6ZueIDwgY29ja1wtZmlnaHRpbmc7CivpgY7mmYIgPCBvbGRcLWZhc2hpb25lZDsKK+mAsuaOpeacjeWLmSA8IGFjY2Vzc1wtc2VydmVyOwor6Zqo5oSPIDwgYXNcLW9uZVwtd2lzaGVzOwor5aSx5YipIDwgc3VmZmVyXC1kZWZlYXQ7CivooajmsbrmrIogPCByaWdodFwtdG9cLXZvdGU7CivnqbrplpPnq5kgPCBzcGFjZVwtc3RhdGlvbjsKK+aQjeiAlyA8IHdlYXJcLWFuZFwtdGVhcjsKK+ebuOeVtiA8IGVxdWl2YWxlbnRcLXRvOwor6YCQ5q2lIDwgcHJvZ3Jlc3NpdmVseTsKK+m1qSA8IG93bFwtbGlrZVwtYmlyZDsKK+Wkp+WFrOWPuCA8IGxhcmdlXC1jb21wYW55Owor5LiN6KiY5ZCN5oqV56WoIDwgc2VjcmV0XC1iYWxsb3Q7CivkuozmrKHlpKfmiLAgPCB3b3JsZFwtd2FyXC10d287Civlub7mrKEgPCBzZXZlcmFsXC10aW1lczsKK+W3qOe0sCA8IGJpZ1wtYW5kXC1zbWFsbDsKK+W5vuaooyA8IHNldmVyYWxcLWtpbmRzOwor5aSn5L2/IDwgYW5cLWFtYmFzc2Fkb3I7Civnt6jlr6kgPCByZWFkXC1hbmRcLWVkaXQ7CivlvLfljJYgPCB0b1wtc3RyZW5ndGhlbjsKK+mBv+WtlSA8IGNvbnRyYWNlcHRpb247Civpq4MgPCBzaG91bGRlclwtYm9uZTsKK+S4jeWIl+mhm+iruOWztiA8IGJyaXRpc2hcLWlzbGVzOwor6aqqIDwgY3Jvb2tlZFwtYm9uZXM7CivlpKflrrnph48gPCBoaWdoXC1jYXBhY2l0eTsKK+Wkp+S6iyA8IGFcLW1ham9yXC1ldmVudDsKK+aliueZvue/sCA8IGJyaWdoYW1cLXlvdW5nOwor5aSn5ZWP6aGMIDwgZ3JlYXRcLXByb2JsZW07CivppqMgPCBmcmFncmFudFwtb2RvcjsKK+aVmeWPiyA8IGNodXJjaFwtbWVtYmVyOwor5YWJ5Yqf546HIDwgb3B0aWNhbFwtcG93ZXI7CivpgJ/mlYggPCBxdWlja1wtcmVzdWx0czsKK+mkmiA8IHByZXBhcmVkXC1tZWF0Owor5qyK5aiB5oCnIDwgYXV0aG9yaXRhdGl2ZTsKK+WIqeaWvCA8IGJlXC1iZW5lZmljaWFsOwor5Yid5pyfIDwgaW5pdGlhbFwtc3RhZ2U7CivlpbPmnIvlj4sgPCBmZW1hbGVcLWZyaWVuZDsKK+WfuuacrOamguW/tSA8IGJhc2ljXC1jb25jZXB0Owor5LiN5ZGo5bu2IDwgdW5kaXN0cmlidXRlZDsKK+meriA8IGxlYXRoZXJcLXNob2VzOwor6Kmi5ZWPIDwgaW5xdWlyZVwtYWJvdXQ7CivpnJ0gPCBkcm9wc1wtb2ZcLXJhaW47CivmkYHph6blhZIgPCBzbmFwXC1mYXN0ZW5lcjsKK+atu+WIkSA8IGRlYXRoXC1wZW5hbHR5Owor6ZOWIDwgcGVyc29uJydzXC1uYW1lOwor55m955qu5p2+IDwgbGFjZWJhcmtcLXBpbmU7CivpjKEgPCBhXC1raW5kXC1vZlwtcGVuOwor5YW155eeIDwgYXJteVwtcmlmZnJhZmY7CivlrZjlhLLlmaggPCBtZW1vcnlcLVwodW5pdFwpOwor6LK/5piT6aCG5beuIDwgdHJhZGVcLXN1cnBsdXM7CivlvYzov6bmm7ggPCBib29rXC1vZlwtbWljYWg7CivpiIQgPCBhXC13aW5lXC1mbGFnb247Civmrablmajns7vntbEgPCB3ZWFwb25cLXN5c3RlbTsKK+mHrSA8IHRpcmVcLW9mXC13aGVlbDsKK+mGqCA8IGRyZWdzXC1vZlwtd2luZTsKK+mrlOmHjSA8IFwoYm9keVwpXC13ZWlnaHQ7Civnmb3noJIgPCB3aGl0ZVwtYXJzZW5pYzsKK+aiheWhnui/quaWr+WllOmmsyA8IG1lcmNlZGVzXC1iZW56Owor55u45p62IDwgcGljdHVyZVwtZnJhbWU7CivovqEgPCByZWNyaW1pbmF0aW9uOwor5a6255So6Zu76IWmIDwgaG9tZVwtY29tcHV0ZXI7Civnj77ku6PljJYgPCBtb2Rlcm5pemF0aW9uOwor6L2PIDwgc2xlZXBpbmdcLWNhcnQ7CivlhbXnh58gPCBtaWxpdGFyeVwtY2FtcDsKK+S4u+emseaWhyA8IGxvcmQnJ3NcLXByYXllcjsKK+W4guawkSA8IGNpdHlcLXJlc2lkZW50Owor5bqt5ZySIDwgZmxvd2VyXC1nYXJkZW47Civot64gPCBoYXN0eVwtd2Fsa2luZzsKK+i9n+eCuCA8IFwoZHJvcFwtYVwpXC1ib21iOwor6YGO5Y67IDwgXChpblwtdGhlXClcLXBhc3Q7Civos64gPCBmYXJld2VsbFwtZ2lmdDsKK+iJpuiJhyA8IG5hdmFsXC12ZXNzZWxzOwor5aSn5YWs54Sh56eBIDwganVzdFwtYW5kXC1mYWlyOwor5ZOl5p6X5aSa5YmN5pu4IDwgMVwtY29yaW50aGlhbnM7CivlhrDmnJ8gPCBnbGFjaWFsXC1lcG9jaDsKK+mXnOaWvCA8IHBlcnRhaW5pbmdcLXRvOwor5Ymb5YmbIDwganVzdFwtcmVjZW50bHk7Civlu6DkuLsgPCBmYWN0b3J5XC1vd25lcjsKK+WGjeasoSA8IG9uZVwtbW9yZVwtdGltZTsKK+isjSA8IGh1bW1pbmdcLXNvdW5kOwor5paw57SE5YWo5pu4IDwgbmV3XC10ZXN0YW1lbnQ7CivoprYgPCB0b1wtbG9va1wtYWJvdXQ7CivoppQgPCB0b1wtc2VhcmNoXC1mb3I7CivopZogPCBncmF2ZVwtY2xvdGhlczsKK+asiuWKmyA8IFwod2llbGRcKVwtcG93ZXI7CivooLUgPCBsYXJnZVwtdHVydGxlczsKK+ewv+exjSA8IGFjY291bnRcLWJvb2tzOwor6J6+IDwgdGhlXC1lYXJ0aHdvcm07CivonqUgPCB0aGVcLWhvdXNlXC1mbHk7CivonpkgPCBncnVic1wtaW5cLXdvb2Q7Civom4UgPCBhXC1jYXRlcnBpbGxhcjsKK+apq+aOgyA8IHRvXC1zd2VlcFwtYXdheTsKK+W6puWBhyA8IGdvXC1vblwtaG9saWRheTsKK+iYryA8IHRvXC10b3NzXC1hYm91dDsKK+eVsOizqiA8IGhldGVyb2dlbmVvdXM7Civou4rnq5kgPCBcKGJ1c1wpXC1zdGF0aW9uOwor5Lqe5rSy5ZyL5a62IDwgYXNpYW5cLWNvdW50cnk7CivmmrTpoqjpqZ/pm6ggPCB2aW9sZW50XC1zdG9ybTsKK+iUjiA8IHRoZWFcLXNpbmVuc2lzOwor5YKZ6IezIDwgdG9cLXRoZVwtdXRtb3N0Owor6JG9IDwgdHlwZVwtb2ZcLWdyYWluOwor6I+8IDwgcnVzaFwtb3JcLXNlZGdlOwor6I+6IDwgYWx0aGFlYVwtcm9zZWE7Civot5HpnosgPCBydW5uaW5nXC1zaG9lczsKK+iPkSA8IHRvXC13ZWVkXC1ncmFzczsKK+WgseWWriA8IHRheGF0aW9uXC1mb3JtOwor6I6nIDwgZWRpYmxlXC1ncmVlbnM7CivojKUgPCBydWJ1c1wtdG9ra3VyYTsKK+mRkuizniA8IHRvXC1hcHByZWNpYXRlOwor6IuYIDwgaW5kaWFuXC1tYWxsb3c7CivpgJnkvY0gPCB0aGlzXC1cKHBlcnNvblwpOwor5Zuw56qYIDwgZW1iYXJyYXNzbWVudDsKK+mZjeS4liA8IGNvbWVcLXRvXC1lYXJ0aDsKK+iEpSA8IHBlbHZpY1wtY2F2aXR5Owor5L6/6aOvIDwgYVwtc2ltcGxlXC1tZWFsOwor6IOyIDwgaHlkcm94eWxhbWluZTsKK+i8u+ainSA8IFwod2hlZWxcKVwtc3Bva2U7Civlpb3lub7lubQgPCBzZXZlcmFsXC15ZWFyczsKK+e9syA8IHdvb2Rlblwtc2NyZWVuOwor57yHIDwgcmVkZGlzaFwtY29sb3I7CivmiZPplosgPCB0b1wtYnJlYWtcLW9wZW47CivllK7npajomZUgPCB0aWNrZXRcLW9mZmljZTsKK+eZvOaPriA8IGJyaW5nXC10b1wtYmVhcjsKK+ezrSA8IHJpY2VcLWR1bXBsaW5nOwor5o2J5Y+W5ZyW5YOPIDwgY2FwdHVyZVwtaW1hZ2U7Civnsb4gPCB1bmh1bGxlZFwtcmljZTsKK+exnCA8IGJhbWJvb1wtc2hlYXRoOwor5YWt6bue5Y2KIDwgaGFsZlwtcGFzdFwtc2l4Owor6ZaL5b+DIDwgdG9cLWZlZWxcLWhhcHB5Owor54Sh5oSP6K2YIDwgdW5jb25zY2lvdXNseTsKK+WvpumplyA8IHRvXC1leHBlcmltZW50Owor56y1IDwgYVwtYmFtYm9vXC1mb3JtOwor56ytIDwgYmFtYm9vXC1zY3JlZW47CivovYnlvY4gPCB0dXJuXC1cKGFyb3VuZFwpOwor5qGI6aCtIDwgb25cLW9uZScnc1wtZGVzazsKK+aLnOmHkeS4u+e+qSA8IG1vbmV5XC13b3JzaGlwOwor5rC45LmF5ZKM5bmzIDwgbGFzdGluZ1wtcGVhY2U7CivnoJ4gPCB0b1wtc21hc2hcLXJvY2s7Civnn54gPCBib3JlXC13aXRoXC1hd2w7CivovqjliKUgPCBkaWZmZXJlbnRpYXRlOwor5oqE6KWyIDwgdG9cLXBsYWdpYXJpemU7CivovqbliLAgPCB0b1wtYWNjb21wbGlzaDsKK+WFiOW+jCA8IGluXC1zdWNjZXNzaW9uOwor55Wc6IKlIDwgYW5pbWFsXC1tYW51cmU7Civmjqjli5XlipsgPCBkcml2aW5nXC1mb3JjZTsKK+aLiee+jiA8IGxhdGluXC1hbWVyaWNhOwor5qC46Zu7IDwgbnVjbGVhclwtcG93ZXI7Civotorph44gPCBjcm9zc1wtY291bnRyeTsKK+eSgiA8IGphZGVcLW9ybmFtZW50Owor55CVIDwgdHlwZVwtb2ZcLXBlYXJsOwor542ZIDwgZGllXC12aW9sZW50bHk7CivlhazlnJIgPCBhXC1wdWJsaWNcLXBhcms7Civnmb7lp5MgPCBjb21tb25cLXBlb3BsZTsKK+WTiOiWqeWFi+S6uiA8IGthemFraFwtcGVyc29uOwor54G95Y2AIDwgZGlzYXN0ZXJcLWFyZWE7Civpgb/poqjomZUgPCBsZWVcLFwtd2luZHN0b3A7CivniYEgPCBtb29yaW5nXC1zdGFrZTsKK+ani+aIkCA8IHRvXC1jb25zdGl0dXRlOwor54awIDwgZ3JlYXRcLWRyb3VnaHQ7Civkv53ol48gPCBrZWVwXC1pblwtc3RvcmU7CivnkZ7pppkgPCB3aW50ZXJcLWRhcGhuZTsKK+aLjOeoriA8IHNlZWRcLWRyZXNzaW5nOwor57GM5o6qIDwgcmFpc2VcLVwobW9uZXlcKTsKK+ajhOe9riA8IHRvXC10aHJvd1wtYXdheTsKK+S9v+eUqOmHjyA8IHZvbHVtZVwtb2ZcLXVzZTsKK+izo+m7niA8IHNlbGxpbmdcLXBvaW50Owor55im5byxIDwgdGhpblwtYW5kXC13ZWFrOwor5rWsIDwgbmF1dGljYWxcLW1pbGU7Civnmb3ljKogPCB3aGl0ZVwtYmFuZGl0czsKK+iCiemrlCA8IHBoeXNpY2FsXC1ib2R5Owor5qy1IDwgdG9cLXRyZWF0XC13ZWxsOwor5qyTIDwgYVwtY3Jvc3NcLXBpZWNlOwor5Y2K5bCO6auUIDwgc2VtaWNvbmR1Y3RvcjsKK+WCmeahiCA8IHB1dFwtb25cLXJlY29yZDsKK+arjCA8IGFcLWtpbmRcLW9mXC1ob2U7Civmqq4gPCBibG9ja1wtb2ZcLXdvb2Q7Civlt6HoiKrlsI7lvYggPCBjcnVpc2VcLW1pc3NsZTsKK+S4jeWPr+iDveeahOS6iyA8IGltcG9zc2liaWxpdHk7CivmpowgPCB3b29kZW5cLWxhZGRlcjsKK+eZvuWIhuS5i+S6lOWNgSA8IGZpZnR5XC1wZXJjZW50Owor6ayl5b+XIDwgd2lsbFwtdG9cLWZpZ2h0Owor5omB6I2zIDwgaHlhY2ludGhcLWJlYW47Civnmb7lgI0gPCBhXC1odW5kcmVkZm9sZDsKK+almSA8IG5hbWVcLW9mXC1wbGFudDsKK+ethuetkiA8IHBlblwtY29udGFpbmVyOwor5qK5IDwgdGhlXC1hcmVjYVwtbnV0Owor5a+26JeNIDwgc2FwcGhpcmVcLWJsdWU7Civmoo4gPCBzaWNrbGVcLWhhbmRsZTsKK+agsCA8IGFcLWJhbWJvb1wtcmFmdDsKK+a7sueisyA8IGNhcmJ1cml6YXRpb247CivmmrTlipvniq/nvaogPCB2aW9sZW50XC1jcmltZTsKK+acqSA8IGt3dWt5ZWxcOlwtcmFuazsKK+a4oemBjiA8IHRvXC1jcm9zc1wtb3ZlcjsKK+Wtl+mbhiA8IGNoYXJhY3Rlclwtc2V0Owor6aeB5q685qeNIDwgbWF1c2VyXC1waXN0b2w7CivkvZXopb/pmL/mm7ggPCBib29rXC1vZlwtaG9zZWE7CivnqbrpgYsgPCBhaXJcLXRyYW5zcG9ydDsKK+Wlp+WFi+aLieiNt+mmrOW4giA8IG9rbGFob21hXC1jaXR5Owor5pCiIDwgdG9cLXN0aWNrXC1pbnRvOwor5o6tIDwgdG9cLW1hbmlwdWxhdGU7CivmjLYgPCBob2xkXC1pblwtaGFuZHM7Civmi5UgPCB0b1wtZHJhZ1wtYWZ0ZXI7CivmioMgPCB0b1wtY2xhcFwtaGFuZHM7CivkuI3miJDmlofms5UgPCB1bndyaXR0ZW5cLWxhdzsKK+aIuiA8IHN0b25lXC1ib2FyZGVyOwor5oi5IDwgaW5cLWRpZmZpY3VsdHk7Civpq5jpgJ/kuZnlpKrntrLot68gPCBmYXN0XC1ldGhlcm5ldDsKK+S4jeaWueS+vyA8IGluY29udmVuaWVuY2U7CivmspLntpPpqZcgPCBpbmV4cGVyaWVuY2VkOwor6KGo5bGkIDwgc3VyZmFjZVwtbGF5ZXI7CivmgL4gPCBtb3VudGFpblwtbmFtZTsKK+Wck+WRqCA8IGNpcmN1bWZlcmVuY2U7Civlvb0gPCBnb1wtdG9cLWFuZFwtZnJvOwor5b2yIDwgeWVsbG93XC1kcmFnb247CivlvZQgPCB0b1wtY2FydmVcLXdvb2Q7CivkuLvml6XlrbggPCBzdW5kYXlcLXNjaG9vbDsKK+eXheWusyA8IHBsYW50XC1kaXNlYXNlOwor5bewIDwgYW5cLWF0b21cLWdyb3VwOwor5ZSu6LKoIDwgdG9cLXNlbGxcLWdvb2RzOwor5bOCIDwgbmFtZVwtb2ZcLXBsYWNlOwor5pyJ5Yqp5LqOIDwgY29udHJpYnV0ZVwtdG87Civlr4AgPCBmZXVkYWxcLWVzdGF0ZTsKK+iIjOWwliA8IHRpcFwtb2ZcLXRvbmd1ZTsKK+ahiOeosSA8IGNvdW50ZXJcLXNjYWxlOwor5aqiIDwgYmVcLWplYWxvdXNcLW9mOwor5raI6ZiyIDwgZmlyZVwtZmlnaHRpbmc7CivllonntZAgPCBhZGFtJydzJydcLWFwcGxlOwor5bO25ZyLIDwgaXNsYW5kXC1uYXRpb247CivprKfkuosgPCBjYXVzZVwtdHJvdWJsZTsKK+S6rOmDvSA8IGt5b3RvXC1cKGphcGFuXCk7Civlm5vljYMgPCBmb3VyXC10aG91c2FuZDsKK+eVtuW5tCA8IGluXC10aG9zZVwtZGF5czsKK+WeuyA8IGFuXC1lbWJhbmttZW50Owor6LKh6L+3IDwgbW9uZXlcLWdydWJiZXI7CivkuInljYHlhIQgPCB0aHJlZVwtYmlsbGlvbjsKK+eQhuinoyA8IHRvXC1jb21wcmVoZW5kOwor5ZqaIDwgYXJndW1lbnRhdGl2ZTsKK+S4jeWHjea4ryA8IGljZVwtZnJlZVwtcG9ydDsKK+atpeipseapnyA8IHdhbGtpZVwtdGFsa2llOwor5a+G56K8IDwgXChzZWNyZXRcKVwtY29kZTsKK+evieWfjiA8IGZvcnRpZmljYXRpb247CivlkqEgPCBzaWRlXC1vZlwtbW91dGg7CivooZvlhbUgPCBcKGJvZHlcKVwtZ3VhcmRcKTsKK+iJvua7i+eXheaKl+mrlCA8IGFpZHNcLWFudGlib2R5Owor6ZuG57ea5ZmoIDwgaHViXC1cKG5ldHdvcmtcKTsKK+eWkeWVjyA8IGludGVycm9nYXRpb247Civlh58gPCB0b1wtYmVcLXJ1ZGVcLXRvOwor5ZaJ55enIDwgc2NhcmxldFwtZmV2ZXI7CivlgIvmgKcgPCBpbmRpdmlkdWFsaXR5Owor5YS5IDwgdG9cLWFjY3VtdWxhdGU7CivlhLIgPCB0b1wtc2F2ZVwtbW9uZXk7CivlhJsgPCB0b1wtc2tpcFwtYWJvdXQ7CivkuI3oiJLpgakgPCB1bmNvbWZvcnRhYmxlOwor5YKSIDwgcGVyc29uYWxcLW5hbWU7CivlhanljYPlubQgPCB0aGVcLXllYXJcLTIwMDA7CivmqJnmnKzon7IgPCBzcGlkZXJcLWJlZXRsZTsKK+WVn+ekuiA8IGVubGlnaHRlbm1lbnQ7CivpgLLlh7rlj6MgPCBpbXBvcnRcfGV4cG9ydDsKK+S4jeWPr+S+teeKr+asiiA8IGludmlvbGFiaWxpdHk7CivkvoIgPCB0b1wtY29tbWlzc2lvbjsKK+WQkeilv+WNlyA8IHNvdXRod2VzdHdhcmQ7Civoh7Tlh70gPCBzZW5kXC1hXC1sZXR0ZXI7CivkuaggPCB0aGVcLWJlZ2lubmluZzsKK+S2miA8IGRlY2F5ZWRcLXRvb3RoOwor5LaIIDwgYVwta2luZFwtb2ZcLXJhdDsKK+S1vyA8IGFcLXNpbGVudFwtZHJ1bTsKK+S1gSA8IGRlY2F5ZWRcLWRvdWdoOwor5LSwIDwgYVwtZmFtaWx5XC1uYW1lOwor5LK6IDwgYmlyZHNcLXNpbmdpbmc7CivksoUgPCB0aGVcLWdsb2JlZmlzaDsKK+SwuyA8IHRvXC1jYXRjaFwtZmlzaDsKK+aEj+itmCA8IGNvbnNjaW91c25lc3M7CivksLEgPCBuYW1lXC1vZlwtYVwtZ29kOwor5ZSu56Wo5ZOhIDwgdGlja2V0XC1zZWxsZXI7Civkr4UgPCBhXC1zd2lmdFwtaG9yc2U7CivkroggPCB0b1wtZ29cLXN3aWZ0bHk7Civkq78gPCBhXC1jb29sXC1icmVlemU7Civkq7QgPCB3ZWFrXC1hbmRcLWR1bGw7Civoga/ntaEgPCBjb21tdW5pY2F0aW9uOwor5ZSu56Wo5Y+jIDwgdGlja2V0XC13aW5kb3c7CivmiYHmk5QgPCBjYXJyeWluZ1wtcG9sZTsKK+SrgSA8IHRoZVwtZmlyc3RcLXNvbjsKK+SqqyA8IGFuY2llbnRcLW11c2ljOwor5KqSIDwgbGVhdGhlclwtcGFudHM7Civkqb4gPCBoZXJiXC1tZWRpY2luZTsKK+SppCA8IHRvXC1sZWFkXC1hblwtb3g7CivkqaMgPCBzaG9lXC1jdXNoaW9uczsKK+SpniA8IGFcLXNhZGRsZVwtZmxhcDsKK+SojiA8IGRlZXBcLWFuZFwtZGFyazsKK+WuieWumuWMliA8IHN0YWJpbGl6YXRpb247Civkp5YgPCBhXC1zbWFsbFwtbW91bmQ7CivkprQgPCBvcGVuXC10aGVcLWRvb3I7CivkprMgPCBiZXR3ZWVuXC1zdGVwczsKK+S6pOaPm+erryA8IHN3aXRjaGVkXC1wb3J0Owor5ZOA6JmfIDwgY3J5XC1waXRlb3VzbHk7CivkpqEgPCBhXC1kb29yXC1rZWVwZXI7CivkpakgPCBob29rc1wtdG9cLWhhbmc7CivkpLUgPCBhXC10aW55XC1uZWVkbGU7CivkpI4gPCBzb3liZWFuXC1zYXVjZTsKK+SkgyA8IGRydW5rZW5cLXNvdW5kOwor5KOwIDwgdG9cLXBvb2xcLW1vbmV5Owor5KKnIDwgdG9cLWdvXC1mb3J3YXJkOwor5KKaIDwgYVwtbmFycm93XC1wYXRoOwor5KKDIDwgdG9cLWFkbWluaXN0ZXI7CivkoaUgPCBhXC1tb3ZpbmdcLWNhcnQ7Civkn5ggPCB0b1wtc3RyYWlnaHRlbjsKK+SfiiA8IHNob3J0XC1zdHJpZGVzOwor5qGC5p6XIDwgZ3VpbGluXC1cKGNpdHlcKTsKK+SegSA8IGNvcnJlc3BvbmRpbmc7CivknbYgPCB0b1wtbGV2eVwtdGF4ZXM7CivknawgPCBhXC13ZWFsdGh5XC1tYW47Civph5Hpu4MgPCBnb2xkZW5cLXllbGxvdzsKK+SbviA8IGZhbWlsaWFyXC13aXRoOwor5LiN55u45bmyIDwgYmVcLWlycmVsZXZhbnQ7Civnm67mqJnluILloLQgPCB0YXJnZXRcLW1hcmtldDsKK+SbkCA8IGFuXC1leHByZXNzaW9uOwor5aSp5puJ5b6XIDwgaGVhdmVuXC1rbm93c1whOwor5JqVIDwgdG9cLXNlYXJjaFwtb3V0Owor5Jm5IDwgdG9cLXZvbWl0XC1taWxrOwor5JmlIDwgc2hpbnlcLWRyZXNzZXM7CivkmaIgPCBzaG9ydFwtdFwtc2hpcnQ7CivkmaAgPCBzaG9ydFwtY2xvdGhlczsKK+SZnyA8IGhlYXZ5XC1jbG90aGVzOwor5JmeIDwgd29vbGVuXC1zdHJpbmc7CivkmYUgPCB0aGVcLXdhaXN0bGluZTsKK+i3qOWciyA8IHRyYW5zbmF0aW9uYWw7Civkl5cgPCB0aGVcLW1pbGxpcGVkZTsKK+SWqSA8IGFcLWtpbmRcLW9mXC1iZWU7CivklpEgPCBhXC13aGl0ZVwtdGlnZXI7CivklocgPCBmcmFncmFudFwtaGVyYjsKK+a8lOWHuiA8IFwoYWN0aW5nXClcLXBsYXk7CivlkIPpo68gPCB0b1wtZWF0XC1hXC1tZWFsOwor5JKOIDwgd2l0aG91dFwtY29sb3I7CivkkbIgPCB0b1wtcm93XC1hXC1ib2F0Owor5JGlIDwgYVwtbW92aW5nXC1ib2F0Owor5JCyIDwgaGFsZlwtcmF3XC1tZWF0Owor5JCZIDwgdGhlXC1kaWFwaHJhZ207Civkj5ggPCBhXC1iaWdcLWFiZG9tZW47Civkj4QgPCBub3RcLXRvXC1saXN0ZW47CivkuI3pgJogPCBiZVwtb2JzdHJ1Y3RlZDsKK+acgOmrmOazlemZoiA8IHN1cHJlbWVcLWNvdXJ0Owor5I29IDwgYVwtZmllcmNlXC1nb2F0Owor5I28IDwgc2FsdGVkXC1tdXR0b247CivkjaogPCBjYXN0cmF0ZWRcLXJhbTsKK+SNpCA8IHRvXC1zdHJhaW5cLW91dDsKK+aIkuaMhyA8IFwoZmluZ2VyXClcLXJpbmc7CivmnIDlvozmm7TmlrAgPCBsYXRlc3RcLXVwZGF0ZTsKK+SMmSA8IGhhbmtcLW9mXC1yb3BlczsKK+SMhSA8IGFcLXRoaWNrXC1yb3BlczsKK+SLpiA8IHJhdmVsbGVkXC1zaWxrOwor5IudIDwgYVwtdGhyb2F0XC1iYW5kOwor5p2P5LuB6LGG6IWQIDwgYWxtb25kXC1qdW5rZXQ7Civkir0gPCBhXC1maW5lXC10aHJlYWQ7CivkipQgPCBwb2xpc2hlZFwtcmljZTsKK+SJqSA8IGFcLWJhbWJvb1wtd2FyZTsKK+SJqCA8IGJhbWJvb1wtam9pbnRzOwor5Ii+IDwgbW92ZVwtYVwtbGl0dGxlOwor5IizIDwgYVwtd2luZG93XC1sZWFmOwor5bCR5bCHIDwgbWFqb3JcLWdlbmVyYWw7CivkhpogPCB0b1wtZ29cLXRocm91Z2g7CivmnZzntZUgPCBwdXRcLWFuXC1lbmRcLXRvOwor5IWbIDwgaHVza3NcLW9mXC1yaWNlOwor5IOzIDwgZmFsbGluZ1wtc3RvbmU7CivkgrYgPCB0aGVcLWNydXN0YWNlYTsKK+SClyA8IHRvXC1iZVwtY2FyZWZ1bDsKK+SCjiA8IGFcLXNob3J0XC1zcGVhcjsKK+SCgSA8IGFuXC1hbmdyeVwtbG9vazsKK+SBmSA8IGVsb3F1ZW50XC1leWVzOwor5ICuIDwgc2lnaHRcLWJsdXJyZWQ7CivkgK0gPCB3aXRoXC1iaWdcLWV5ZXM7CivkgJYgPCB0b1wtbG9va1wtdXBcLXRvOwor5ICVIDwgYW5ncnlcLWdsYW5jZXM7CivmmpfpjpYgPCBidWlsdFwtaW5cLWxvY2s7Civjv6wgPCBuYXNhbFwtZGlzZWFzZTsKK+O+vSA8IHN3ZWxsaW5nXC1mZWV0Owor472yIDwgZ3JpcGluZ1wtY29saWM7CivjvYcgPCB1bmJ1cm50XC10aWxlczsKK+O8tSA8IGFcLXNtYWxsXC1iYXNpbjsKK+O8nyA8IGFcLXRpbGVkXC1ob3VzZTsKK+O8jiA8IGFcLXNtYWxsXC1tZWxvbjsKK+O7viA8IGphZGVcLWFydGljbGVzOwor5ZCM55uf5ZyLIDwgY29uZmVkZXJhdGlvbjsKK+O6iCA8IHRvXC1nb1wtaHVudGluZzsKK+O5uSA8IGFcLWtpbmRcLW9mXC1kb2c7CivjubUgPCBhXC1odW50aW5nXC1kb2c7CivjubMgPCBhXC1raW5kXC1vZlwtYXBlOwor5oey5oiSIDwgdG9cLWRpc2NpcGxpbmU7CivpgJnnqK7mlrnlvI8gPCBcKGluXClcLXRoaXNcLXdheTsKK+S4i+iqsiA8IGNsYXNzXC1pc1wtb3ZlcjsKK+S4jeipsyA8IG5vdFwtaW5cLWRldGFpbDsKK+O4hCA8IGFcLXJhZ2luZ1wtZmlyZTsKK+O3viA8IGJsYXplXC1vZlwtZmlyZTsKK+WPjemfvyA8IHJlcGVyY3Vzc2lvbnM7Civjt5YgPCB0b1wtc2hpbmVcLXVwb247Civjt5UgPCBoZWFyaW5nXC1zb3VuZDsKK+O3kiA8IHRvXC1jb29rXC1tZWFsczsKK+O2mCA8IGZ1bGxcLW9mXC13YXRlcjsKK+Wlp+mBi+acgyA8IG9seW1waWNcLWdhbWVzOwor47WzIDwgY3J5c3RhbFwtY2xlYXI7CivjtaAgPCB0b1wtZ3VzaFwtZm9ydGg7CivjtL0gPCB3YXRlclwtY3VycmVudDsKK+O0qyA8IGdyZWF0XC1mbG93aW5nOwor47SmIDwgdG9cLXdhc2hcLWhhbmRzOwor47SlIDwgZ3JlYXRcLWJpbGxvd3M7CivjtJAgPCBncmVhdFwtY3VycmVudDsKK+S/neitt+S4u+e+qSA8IHByb3RlY3Rpb25pc207CivjspsgPCBoYWlyeVwtYW5pbWFsczsKK+WcqOacquS+hiA8IGluXC10aGVcLWZ1dHVyZTsKK+Wuv+aAqCA8IGFuXC1vbGRcLWdydWRnZTsKK+OwuyA8IGFzc2VzXC1icmF5aW5nOwor47CPIDwgYVwtYmFtYm9vXC1wb2xlOwor47CMIDwgdG9cLW1vbm9wb2xpemU7Civjrb8gPCBvYmxpcXVlXC1hbmdsZTsKK+WWruWtkCA8IGxpc3RcLW9mXC1pdGVtczsKK+OtkyA8IGFcLXBpbGxhclwtYXJjaDsKK+iyoueNuyA8IHRvXC1jb250cmlidXRlOwor46ylIDwgdG9cLXN1blwtdG9cLWFpcjsKK+WPq+mGkiA8IHRvXC1jYWxsXC1hd2FrZTsKK+OshCA8IHdhcm1cLWFuZFwtZGFtcDsKK+OrnyA8IGRheVwtYWZ0ZXJcLWRheTsKK+WNl+e+jua0siA8IHNvdXRoXC1hbWVyaWNhOwor576O6KGTIDwgdGhlXC1maW5lXC1hcnRzOwor46mlIDwgZGVsaWNhdGVcLWhhbmQ7CivjqJ4gPCB0b1wtZmVlbFwtYWJvdXQ7Civjp7wgPCB0b1wtZGlzdHJpYnV0ZTsKK+OntyA8IHRvXC13aXBlXC10ZWFyczsKK+OmqyA8IGxheFwtYW5kXC1jcnVkZTsKK+OmjCA8IGtlZW5cLW9yXC1zaGFycDsKK+OlvCA8IHRvXC1iZVwtbmVhclwtdG87Civjo78gPCBwYWluZnVsbHlcLXNhZDsKK+OjpCA8IHRvXC10cmVhZFwtdXBvbjsKK+OiuyA8IHRvXC1kcmF3XC1hXC1ib3c7CivjopYgPCBhXC1zdG9yZVwtaG91c2U7CivkuIPnmb7okKwgPCBzZXZlblwtbWlsbGlvbjsKK+OgtCA8IGFcLXBpbGxvd1wtY2FzZTsKK+OgmyA8IG5hbWVcLWFcLWNvdW50eTsKK+aciOeQg+ihqOmdoiA8IGx1bmFyXC1zdXJmYWNlOwor45+tIDwgdGhlXC1taW5cLXJpdmVyOwor6IO95aSgIDwgYmVcLWNhcGFibGVcLW9mOwor456sIDwgY2xvc2VcLW9yXC1uZWFyOwor456LIDwgc29mdFwtYW5kXC1tZWVrOwor5a625bGsIDwgZmFtaWx5XC1tZW1iZXI7CivjnbsgPCBiYXJlbHlcLWVub3VnaDsKK+OdgyA8IHRvXC1iZWFyXC1hXC1zb247CivlnLDmlrnlgZzou4ogPCBwYXJraW5nXC1wbGFjZTsKK+ObkiA8IGNhblwtbm90XC1zcGVhazsKK+OatCA8IGFcLXByZXR0eVwtZ2lybDsKK+m8u+a3tSA8IG5hc29zaW51c2l0aXM7Civmh4LlvpcgPCB0b1wtdW5kZXJzdGFuZDsKK+OYmyA8IGFcLWRlZXBcLXZhbGxleTsKK+acieiJr+W/gyA8IGNvbnNjaWVudGlvdXM7CivjmJMgPCBwcm9saXhcLXNwZWVjaDsKK+OYiSA8IHRvXC1tYWtlXC1zb3VuZDsKK+OXtCA8IGRvZ3NcLWZpZ2h0aW5nOwor45WwIDwgc291bmRcLWFuZ3JpbHk7CivjlaogPCBiaXJkcycnXC1jaGlycHM7CivjlZkgPCBhXC13aWx5XC1yYWJiaXQ7CivjlYkgPCB0b1wtZGlnXC1hXC1ob2xlOwor45SlIDwgZnVsbFwtb2ZcLWFuZ2VyOwor45O0IDwgdG9cLWN1dFwtaW5cLXR3bzsKK+WNium7niA8IHRoZVwtbGVhc3RcLWJpdDsKK+OTliA8IGJpdHRlcmx5XC1jb2xkOwor5Lul5aSq57ay57Wh56uv5Y+jIDwgZXRoZXJuZXRcLXBvcnQ7CivjkaUgPCBkaXNyZXNwZWN0ZnVsOwor6Ymb562GIDwgXChsZWFkXClcLXBlbmNpbDsKK+WWruWQkSA8IHVuZGlyZWN0aW9uYWw7CivjkLAgPCB0b1wtYmVsaWV2ZVwtaW47Civlj5fos4QgPCBhY2NlcHRcLWJyaWJlczsKK+m8u+mjvOazlSA8IG5hc2FsXC1mZWVkaW5nOwor55+l5ZCN5Lq65aOrIDwgcHVibGljXC1maWd1cmU7CivntITmi7/mm7ggPCBib29rXC1vZlwtam9uYWg7CivkvovlgYcgPCBsZWdhbFwtaG9saWRheTsKK+awtOmdoiA8IHdhdGVyXC1zdXJmYWNlOwor5q2l6KGM6J+yIDwgZ3JvdW5kXC1iZWV0bGU7Civnp7vmrpYgPCB0b1wtdHJhbnNwbGFudDsKK+i1t+S8jyA8IHVwc1wtYW5kXC1kb3duczsKK+iuiuiqvyA8IG1vZGlmaWVkXC10b25lOwor5Y+L6Kq8IDwgY29tcGFuaW9uc2hpcDsKK+e+juWci+Wci+acgyA8IHVcLnNcLlwtY29uZ3Jlc3M7Civlk4DmqIIgPCBmdW5lcmFsXC1tdXNpYzsKK+S4jeW5uOeahOaYryA8IHVuZm9ydHVuYXRlbHk7Civlr4zkuo4gPCB0b1wtYmVcLWZ1bGxcLW9mOwor5L6/5q2l6LWwIDwgbWFyY2hcLWF0XC1lYXNlOwor6IGy5bi2IDwgdm9jYWxcLWNvcmRcKHNcKTsKK+S4jeefpSA8IHVua25vd2luZ1wobHlcKTsKK+Wtq+WlsyA8IGdyYW5kZGF1Z2h0ZXI7CivlhYnnupbpm7vnupwgPCBvcHRpY2FsXC1maWJlcjsKK+ekvuS6pOiqnuiogCA8IGxpbmd1YVwtZnJhbmNhOwor5ra85b+rIDwgbmljZVwtYW5kXC1jb2xkOwor5LiJ55m+IDwgdGhyZWVcLWh1bmRyZWQ7CivpgKPmjqXoh7MgPCB0b1wtY29ubmVjdFwtdG87CivkuqzmiLIgPCBiZWlqaW5nXC1vcGVyYTsKK+S9juS6jiA8IGJlXC1sb3dlclwtdGhhbjsKK+mztuWwvuiKsSA8IGlyaXNcLVwoZmxvd2VyXCk7CivljZfpg6ggPCBzb3V0aGVyblwtcGFydDsKK+iuiuiJsiA8IGNoYW5nZVwtY29sb3VyOwor5Y2K5a6Y5pa5IDwgc2VtaVwtb2ZmaWNpYWw7CivljJfpnaIgPCBub3J0aGVyblwtc2lkZTsKK+S4iuePrSA8IHRvXC1nb1wtdG9cLXdvcms7Civnmb7np5Hlhajmm7ggPCBlbmN5Y2xvcGFlZGlhOwor5ZCE56iuIDwgZXZlcnlcLWtpbmRcLW9mOwor6LKd5b2rIDwgc2hlbGxcLWNhcnZpbmc7Civml6Xou40gPCBqYXBhbmVzZVwtYXJteTsKK+WKn+eOh+aDoeWMliA8IHBvd2VyXC1wZW5hbHR5Owor5Y2X6LaKIDwgc291dGhcLXZpZXRuYW07CivmhJvmho4gPCBsb3ZlXC1hbmRcLWhhdGU7Civogbflk6EgPCBvZmZpY2VcLXdvcmtlcjsKK+a0i+a6oiA8IGJyaW1taW5nXC13aXRoOwor5LiN5Y+v5oqX5YqbIDwgZm9yY2VcLW1hamV1cmU7CivljZToqr8gPCB0b1wtY29vcmRpbmF0ZTsKK+Wkp+mYqiA8IG9zYWthXC1cKGphcGFuXCk7CivogIPmha4gPCB0b1wtdGhpbmtcLW92ZXI7CivnlJ/lkb3nmoTpgbrot6EgPCB0cmFjZVwtb2ZcLWxpZmU7CivljJfpg6ggPCBub3J0aGVyblwtcGFydDsKK+WFvOWuueaApyA8IGNvbXBhdGliaWxpdHk7Civop6Plo5PnuK4gPCB0b1wtZGVjb21wcmVzczsKK+acrOaEjyA8IG9yaWdpbmFsXC1pZGVhOwor5ZC45q+SIDwgdG9cLXRha2VcLWRydWdzOwor5Lit5ZyL6YqA6KGMIDwgYmFua1wtb2ZcLWNoaW5hOwor5rOz5rGgIDwgc3dpbW1pbmdcLXBvbmQ7CivkuIDmraUgPCBcKHNpbmdsZVwpXC1zdGVwOwor5YyX6LaKIDwgbm9ydGhcLXZpZXRuYW07Civpn7/mh4nmmYLplpMgPCByZXNwb25zZVwtdGltZTsKK+mbnOmghSA8IG1pc2NlbGxhbmVvdXM7CivlgrPovLjmqKHlvI8gPCB0cmFuc2ZlclwtbW9kZTsKK+aOoeajieapnyA8IGNvdHRvblwtcGlja2VyOwor5aSW6YOoIDwgZXh0ZXJuYWxcLXBhcnQ7CivogZ7kurogPCBmYW1vdXNcLXBlcnNvbjsKK+WJjeaJgOacquaciSA8IHVucHJlY2VkZW50ZWQ7CivlkozlsJogPCBidWRkaGlzdFwtbW9uazsKK+iYh+W3niA8IHN1emhvdVwtXChjaXR5XCk7CivnpKbmsLQgPCBtaW5lcmFsXC13YXRlcjsKK+aakeawoyA8IFwoc3VtbWVyXClcLWhlYXQ7CivkuIDkuZ3kuZ3kuIPlubQgPCB0aGVcLXllYXJcLTE5OTc7Civlk4DlkYogPCBiZWdcLXBpdGVvdXNseTsKK+WkluiyvyA8IGZvcmVpZ25cLXRyYWRlOwor6YG/6ZujIDwgXFt0YWtlXF1cLXJlZnVnZTsKK+WMheiisSA8IGNsb3RoXC13cmFwcGVyOwor5oSf5YaSIDwgdG9cLWNhdGNoXC1jb2xkOwor5b2p6JqMIDwgcGFpbnRlZFwtc2hlbGw7Civoiq3olYnmiYcgPCBwYWxtXC1sZWFmXC1mYW47Civnpq7loIIgPCBhc3NlbWJseVwtaGFsbDsKK+e4veioiCA8IFwoZ3JhbmRcKVwtdG90YWw7CivlqJvmqIIgPCBlbnRlcnRhaW5tZW50Owor5Lit5a24IDwgbWlkZGxlXC1zY2hvb2w7CivkupTkuIAgPCA1XC0xXC1cKG1heVwtMXN0XCk7Civno4HniYcgPCBtYWduZXRpY1wtZGlzazsKK+acg+WgtCA8IG1lZXRpbmdcLXBsYWNlOwor5aq+5ZKMIDwgdG9cLW1ha2VcLXBlYWNlOwor5YWs5YWD5YmNIDwgYmVmb3JlXC1jaHJpc3Q7CivkuIrluIIgPCBvblwtdGhlXC1tYXJrZXQ7CivoqKrllY/mlrnlvI8gPCBhY2Nlc3NcLW1ldGhvZDsKK+aqlOahiOW7uueriyA8IGZpbGVcLWNyZWF0aW9uOwor56eB5YipIDwgcGVyc29uYWxcLWdhaW47CivpgbLpiI0gPCBzbG93XC1cKHdpdHRlZFwpOwor5rOi576O5bqmIDwgYmF1bWVcLWRlZ3JlZXM7CivljJfnvo4gPCBub3J0aFwtYW1lcmljYTsKK+e2k+mplyA8IHRvXC1leHBlcmllbmNlOwor5Ye655Sf5pel5pyfIDwgZGF0ZVwtb2ZcLWJpcnRoOwor5LiN5Y+v5oCd6K2wIDwgaW5jb25jZWl2YWJsZTsKK+agvOWtkOiKseWRoiA8IHBsYWlkXCxcLXRhcnRhbjsKK+axsuawtCA8IHRvXC1kcmF3XC13YXRlcjsKK+eNsuWLnSA8IGJlXC12aWN0b3Jpb3VzOwor6KeA6bueIDwgcG9pbnRcLW9mXC12aWV3Owor5Y2K5b6p6LO9IDwgZWlnaHRoXC1maW5hbHM7CivmsLTniZsgPCB3YXRlclwtYnVmZmFsbzsKK+mbmeeUn+WFhOW8nyA8IHR3aW5cLWJyb3RoZXJzOwor5ZCM5bm0IDwgdGhlXC1zYW1lXC15ZWFyOwor5pyA5aSn6YCf546HIDwgbWF4aW11bVwtc3BlZWQ7CivorormmJ8gPCB2YXJpYWJsZVwtc3RhcjsKK+mCiueVjOe3miA8IGJvdW5kYXJ5XC1saW5lOwor6JiH5L+EIDwgc292aWV0XC1ydXNzaWE7Civnj77lr6bmg4Xms4EgPCBjdXJyZW50XC1zdGF0ZTsKK+atpeihjCA8IHRvXC1nb1wtb25cLWZvb3Q7Civmk4XplbcgPCB0b1wtYmVcLWdvb2RcLWF0Owor5LiN5ZW7IDwgbm90XC1sZXNzXC10aGFuOwor54mM54WnIDwgbGljZW5zZVwtcGxhdGU7CivmlK/mjIHnjocgPCBzdXBwb3J0XC1sZXZlbDsKK+ippuS4gOippiA8IHRvXC1oYXZlXC1hXC10cnk7CivmmpflrrMgPCBraWxsXC1zZWNyZXRseTsKK+WMhee+heiQrOixoSA8IGFsbFwtZW1icmFjaW5nOwor5YuD6IiIIDwgcmlzZVwtc3VkZGVubHk7CivorormhYsgPCBtZXRhbW9ycGhvc2lzOwor5oCn5oW+IDwgc2V4dWFsXC1kZXNpcmU7CivljK/njocgPCBleGNoYW5nZVwtcmF0ZTsKK+ayu+WuiSA8IGxhd1wtYW5kXC1vcmRlcjsKK+imlumgu+evgOebriA8IHZpZGVvXC1wcm9ncmFtOwor6ZuM6IqxIDwgZmVtYWxlXC1mbG93ZXI7CivlhajkuJbnlYznrKzkuIAgPCB3b3JsZCcnc1wtZmlyc3Q7CivlpJrnqK4gPCBtYW55XC1raW5kc1wtb2Y7CivlkLjlhaUgPCB0b1wtYnJlYXRoZVwtaW47Civororlt6UgPCBleGNoYW5nZVwtd29yazsKK+S4i+iHs+S4iiA8IGJvdHRvbVwtdG9cLXRvcDsKK+WPl+WusyA8IHRvXC1iZVwtaW5qdXJlZDsKK+aJvuS4jeWIsCA8IGNvdWxkbicndFwtZmluZDsKK+axuuW/gyA8IGRldGVybWluYXRpb247CivkuIvku6QgPCBnaXZlXC1hblwtb3JkZXI7CivojqvpgIYgPCB2ZXJ5XC1mcmllbmRseTsKK+e+hemmrOWtl+avjSA8IHJvbWFuXC1sZXR0ZXJzOwor5q+U54axIDwgc3BlY2lmaWNcLWhlYXQ7CivkuI3lj6/lkI3ni4AgPCBpbmRlc2NyaWJhYmxlOwor556zIDwgcHVwaWxcLW9mXC1leWU7CivkuIcgPCB0ZW5cLXRob3VzYW5kOwor5biDIDwgY290dG9uXC1jbG90aDsKK+mAmiA8IHBhc3NcLXRocm91Z2g7Civmj5AgPCBob2xkXC1pblwtaGFuZDsKK+S6rCA8IGNhcGl0YWxcLWNpdHk7CivnlJogPCBncmVhdFwtZXh0ZW50Owor5ZGoIDwgemhvdVwtZHluYXN0eTsKK+WwuyA8IGVuZFwtb2ZcLXNwaW5lOwor5a60IDwgdG9cLWVudGVydGFpbjsKK+WusCA8IHRvXC1zbGF1Z2h0ZXI7Civniq8gPCBjb21taXRcLWNyaW1lOwor5amiIDwgc2VydmFudFwtZ2lybDsKK+WPgiA8IHRha2VcLXBhcnRcLWluOwor5o6MIDwgcGFsbVwtb2ZcLWhhbmQ7Civlp78gPCBvbmUnJ3NcLW1hbm5lcjsKK+WniSA8IGVsZGVyXC1zaXN0ZXI7CivmlpcgPCBjaGluZXNlXC1wZWNrOwor5ZG8IDwgYnJlYXRoZVwtc2lnaDsKK+ihnSA8IHJ1c2hcLWFnYWluc3Q7CivonrogPCBzcGlyYWxcLXNoZWxsOwor5Z2KIDwgbmVpZ2hib3Job29kOwor5bC8IDwgYnVkZGhpc3RcLW51bjsKK+m8viA8IHNub3JlXC1sb3VkbHk7Civlj7YgPCB0b1wtaGFybW9uaXplOwor6YeOIDwgb3BlblwtY291bnRyeTsKK+enuyA8IGNoYW5nZVwtcGxhY2U7CivllJAgPCB0YW5nXC1keW5hc3R5Owor56eAIDwgZWFyXC1vZlwtZ3JhaW47CivokrIgPCB0eXBlXC1vZlwtcnVzaDsKK+W6hiA8IGNvbmdyYXR1bGF0ZTsKK+iSnyA8IGJldGVsXC1wZXBwZXI7CivmsZcgPCBwZXJzcGlyYXRpb247Civmi5wgPCBkb1wtb2JlaXNhbmNlOwor6JmRIDwgYmVcLWNvbmNlcm5lZDsKK+WuiyA8IHNvbmdcLWR5bmFzdHk7Civog4YgPCBnYWxsXC1ibGFkZGVyOwor5YmWIDwgc3BsaXRcLWluXC10d287Civlh6QgPCBtYWxlXC1waG9lbml4Owor6K+iIDwgaW5xdWlyZVwtaW50bzsKK+etkSA8IGFuY2llbnRcLWx1dGU7CivlgbYgPCBhY2NpZGVudGFsbHk7Civpo70gPCBlYXRcLWhlYXJ0aWx5Owor6IOOIDwgdW5ib3JuXC1jaGlsZDsKK+aCnyA8IHRvXC1hcHByZWhlbmQ7CivogoUgPCBwYXlcLXJlc3BlY3RzOwor5L6YIDwgZGlzYXBwb2ludGVkOwor56WtIDwgc2FjcmlmaWNlXC10bzsKK+WuqiA8IGNvbnN0aXR1dGlvbjsKK+eikSA8IHN0b25lXC10YWJsZXQ7CivmmIwgPCBsaWdodFwtb2ZcLXN1bjsKK+aQuiA8IGxlYWRcLWJ5XC1oYW5kOwor5Y6mIDwgYmlnXC1idWlsZGluZzsKK+S7hiA8IGZhbGxcLWZvcndhcmQ7CivlpqUgPCBzYXRpc2ZhY3Rvcnk7Civmna0gPCBjcm9zc1wtc3RyZWFtOwor6LWgIDwgZ2l2ZVwtcHJlc2VudDsKK+iFlCA8IGNoZXN0XC1jYXZpdHk7CivlrZ0gPCBmaWxpYWxcLXBpZXR5Owor56y5IDwgc21hbGxcLWJhbWJvbzsKK+esmyA8IGJhbWJvb1wtZmx1dGU7CivmracgPCBmb3JrXC1vZlwtcm9hZDsKK+mJmyA8IGxlYWRcLXBsdW1idW07CivlloMgPCBrZWVwXC10YWxraW5nOwor6IixIDwgaG9sZFwtb2ZcLXNoaXA7CivphpwgPCB1Z2x5XC1sb29raW5nOwor6KOYIDwgZnVyXC1nYXJtZW50czsKK+agvSA8IHRvXC1jdWx0aXZhdGU7Civor6cgPCBiZVwtc3VycHJpc2VkOwor6ZiOIDwgdmlsbGFnZVwtZ2F0ZTsKK+aEoyA8IGJlXC1pblwtYVwtZGF6ZTsKK+eQqiA8IHR5cGVcLW9mXC1qYWRlOwor5ailIDwgYmVcLWJlYXV0aWZ1bDsKK+WSqiA8IHNvdW5kXC1vZlwtY2F0Owor5riXIDwgc29ha1wtdGhyb3VnaDsKK+iRqyA8IGJvdHRsZVwtZ291cmQ7CivlnaogPCBsZXZlbFwtZ3JvdW5kOwor5Z2eIDwgZW50cmVuY2htZW50Owor5qmhIDwgY2hlc3RudXRcLW9hazsKK+e1riA8IHdhc3RlXC1jb3R0b247Civot4QgPCB3YWxrXC1yYXBpZGx5Owor5bG5IDwgdG9cLXJpc2VcLWhpZ2g7Civmg5ggPCBkaXNjb25jZXJ0ZWQ7Civmj6kgPCBydWJcLWFuZFwtd2lwZTsKK+aloCA8IG5hbWVcLW9mXC10cmVlOwor6bqTIDwgZm9vdFwtb2ZcLWhpbGw7CivmgbsgPCBmZWVsXC1hbmd1aXNoOwor5qGFIDwgbWFzdFwtb2ZcLXNoaXA7CivpqosgPCBnYWxsb3BcLWhvcnNlOwor6LmSIDwgdG9cLWp1bXBcLW92ZXI7CivnpYAgPCB0b1wtc2FjcmlmaWNlOwor5a+wIDwgZ3JlYXRcLWRvbWFpbjsKK+aWkyA8IG11bHRpY29sb3JlZDsKK+S8qyA8IGxvb2tcLXRvd2FyZHM7Civouo8gPCB0cmFtcGxlXC1kb3duOwor5rK9IDwgYnV5XC1hbmRcLXNlbGw7Civnj6UgPCBlYXJcLW9ybmFtZW50Owor56yGIDwgYmFtYm9vXC1mZW5jZTsKK+iZrCA8IHlvdW5nXC1kcmFnb247Civmg6wgPCBiZVwtc2F0aXNmaWVkOwor57yoIDwgYVwtY2hpblwtc3RyYXA7Civlir4gPCBleGFtaW5lXC1pbnRvOwor5ZikIDwgc2Vla1wtZnJpZW5kczsKK+ivgyA8IHNjb2xkXC1sb3VkbHk7Civlhr0gPCBjb2xkXC1hbmRcLXJhdzsKK+mjqCA8IGhvc3RcLWJhbnF1ZXQ7CivmgI8gPCBkaXNjb250ZW50ZWQ7CivlhqIgPCBidXJpYWxcLW1vdW5kOwor5ZezIDwgaW50ZXJqZWN0aW9uOwor5a6VIDwgc3RvbmVcLXF1YXJyeTsKK+iAhiA8IG1hblwtb2ZcLXNpeHR5Owor6Z2TIDwgbWFrZVwtdXBcLWZhY2U7Civom7AgPCB0b1wtaGliZXJuYXRlOwor5o68IDwgdGhyb3dcLWdyb3VuZDsKK+WbpCA8IGdyYWluXC1iYXNrZXQ7CivnrbEgPCBkd2FyZlwtYmFtYm9vOwor5qifIDwgY2FtcGhvclwtdHJlZTsKK+mypSA8IHJlZXZlcycnXC1zaGFkOwor6YC1IDwgdGhvcm91Z2hmYXJlOwor5bK3IDwgbWluXC1tb3VudGFpbjsKK+aesCA8IHNtb290aFwtYm9hcmQ7CivlsZAgPCB3b29kZW5cLXNob2VzOwor6IObIDwgdGhlXC1zaG91bGRlcjsKK+m5niA8IHNwYXJyb3dcLWhhd2s7CivnioQgPCBhbmltYWxcLWhvcm5zOwor6Le5IDwgd2FuZGVyXC1hYm91dDsKK+aYsSA8IGJyaWdodFwtbGlnaHQ7CivmuYQgPCB3YXRlcicnc1wtZWRnZTsKK+iPhSA8IGNvYXJzZVwtZ3Jhc3M7Civnu7sgPCBhZmZlY3Rpb25hdGU7Civnr4EgPCBiYW1ib29cLWdyb3ZlOwor6LWFIDwgcHJlcGFyZWRcLWZvcjsKK+akgSA8IG91dGVyXC1jb2ZmaW47CivnurAgPCBzcG9pbGVkXC1zaWxrOwor6byLIDwgbGFyZ2VcLXR1cnRsZTsKK+mGkCA8IHB1cmVzdFwtY3JlYW07CivpvokgPCB1bmV2ZW5cLXRlZXRoOwor6Iu7IDwga2luZFwtb2ZcLWhlcmI7CivprKMgPCBob3JzZScnc1wtbWFuZTsKK+e8lyA8IGZpc2hpbmdcLWxpbmU7CivmuasgPCBhXC1zbWFsbFwtcG9uZDsKK+S7nyA8IG9uZVwtdGhvdXNhbmQ7CivomrYgPCBraW5kXC1vZlwtY2xhbTsKK+ibhCA8IG1vbGVcLWNyaWNrZXQ7Civmr4IgPCBodWJcLW9mXC13aGVlbDsKK+eVmiA8IHN0cmF3XC1iYXNrZXQ7CivmtIQgPCBhXC1iYWNrXC13YXRlcjsKK+mjpyA8IGV2ZW5pbmdcLW1lYWw7CivphqogPCB1bmNsZWFyXC13aW5lOwor6aqdIDwgZmFtb3VzXC1ob3JzZTsKK+mqkiA8IG1vdGhlclwtaG9yc2U7Civmh5QgPCBiZVwtYWZyYWlkXC1vZjsKK+WKkyA8IGN1dFwtb2ZmXC1ub3NlOwor6LiUIDwgdG9cLWdldFwtYWhlYWQ7CivpoqEgPCB0aGVcLWZvcmVoZWFkOwor5r2yIDwgZHJpdmluZ1wtcmFpbjsKK+e8ryA8IHNpbGtcLWZhYnJpY3M7CivnlJMgPCBnbGF6ZWRcLXRpbGVzOwor6I2sIDwgYVwtcGxhbnRcLW5hbWU7Civmn5IgPCBudW1iZXJcLXNldmVuOwor55izIDwgdG9cLWJlXC1oZWFsZWQ7CivosIcgPCBzcGVha1wtaWxsXC1vZjsKK+S5hyA8IHRvXC1kZXBlbmRcLW9uOwor5YW25LuW55qE5Lq6IDwgb3RoZXJcLXBlb3BsZTsKK+WKoOe3iiA8IHRvXC1pbnRlbnNpZnk7CivokKzkuovpgZQgPCBtYXN0ZXJcKGNhcmRcKTsKK+edoeimuiA8IHRvXC1nb1wtdG9cLWJlZDsKK+aXqeacnyA8IGVhcmx5XC1wZXJpb2Q7CivntITnj6Xmm7ggPCBib29rXC1vZlwtam9lbDsKK+WqkumrlOWgseWwjiA8IG1lZGlhXC1yZXBvcnQ7Civnm7jpl5wgPCBpbnRlcnJlbGF0ZWQ7Civoib7mu4vnl4XmgqPogIUgPCBhaWRzXC1wYXRpZW50Owor54Gr6b6NIDwgZmllcnlcLWRyYWdvbjsKK+WQiOS9nCA8IHRvXC1jb29wZXJhdGU7Civos6DlhJ/ph5EgPCBjb21wZW5zYXRpb247CivnsL/oqJjnrqHnkIblk6EgPCBjb21taXNzYXJpYW47CivmmbrlipsgPCBpbnRlbGxpZ2VuY2U7CivnpLrlqIHogIUgPCBkZW1vbnN0cmF0b3I7CivmmJTlubQgPCBmb3JtZXJcLXllYXJzOwor5ZKM5bmz5qKd57SEIDwgcGVhY2VcLXRyZWF0eTsKK+avm+S4u+W4rSA8IGNoYWlybWFuXC1tYW87CivnpKbkupUgPCBtaW5lXC1cKHNoYWZ0XCk7Civnhp/nn6UgPCBhY3F1YWludGFuY2U7CivmlK/npaggPCBcKGJhbmtcKVwtY2hlY2s7Civlu7rnr4nniakgPCBcKGFcKVwtYnVpbGRpbmc7Civlp5Dlp5AgPCBvbGRlclwtc2lzdGVyOwor6IKh56Wo5biC5aC0IDwgc3RvY2tcLW1hcmtldDsKK+mWseimveWupCA8IHJlYWRpbmdcLXJvb207CivorabloLEgPCBcKGZpcmVcKVwtYWxhcm07CivlvozmnpwgPCBjb25zZXF1ZW5jZXM7CivkuI3lkI3orb0gPCBkaXNyZXB1dGFibGU7CivmlLbnm6QgPCBtYXJrZXRcLWNsb3NlOwor5Z+O6ZiyIDwgY2l0eVwtZGVmZW5jZTsKK+mgguS9jyA8IHRvXC13aXRoc3RhbmQ7Civopb/pg6ggPCB3ZXN0ZXJuXC1wYXJ0Owor5aW95oSfIDwgZ29vZFwtb3BpbmlvbjsKK+apn+aisOeivCA8IG1hY2hpbmVcLWNvZGU7CivlpLHmpa0gPCB1bmVtcGxveW1lbnQ7Civmk4Xoh6ogPCB1bmF1dGhvcml6ZWQ7CivlpKfpqZrlpLHoibIgPCBhcHByZWhlbnNpdmU7Civpq5jlsaTml4XppKggPCBsdXh1cnlcLWhvdGVsOwor6YCV6IeqIDwgb25cLW9uZScnc1wtb3duOwor6L+R6KaWIDwgc2hvcnRzaWdodGVkOwor5q2l54qBIDwgd2Fsa2luZ1wtcGxvdzsKK+S4jeaIkOWKnyA8IHVuc3VjY2Vzc2Z1bDsKK+awtOa7uOWCsyA8IHdhdGVyXC1tYXJnaW47CivkuI3ph43oppYgPCBpbmRpZmZlcmVuY2U7Civplovpl5wgPCBwb3dlclwtc3dpdGNoOwor5Y675LiWIDwgdG9cLXBhc3NcLWF3YXk7Civkup7mtLLoiIflpKrlubPmtIsgPCBhc2lhXC1wYWNpZmljOwor5Y2B5Lmd5q2yIDwgMTlcLXllYXJzXC1vbGQ7CivpnYjnmoTkuJbnlYwgPCBzcGlyaXRcLXdvcmxkOwor5aSa5pa5IDwgaW5cLW1hbnlcLXdheXM7CivmkLbos7wgPCBwYW5pY1wtYnV5aW5nOwor5beh6L+0IDwgdG9cLWdvXC1hcm91bmQ7CivpgJnnqK4gPCB0aGlzXC1raW5kXC1vZjsKK+Wkp+aEjyA8IGdlbmVyYWxcLWlkZWE7CivljYrmlofnm7IgPCBzZW1pbGl0ZXJhdGU7CivliKXnqLEgPCBhbm90aGVyXC1uYW1lOwor5q2l5q2lIDwgc3RlcFwtYnlcLXN0ZXA7CivljZTllYYgPCBjb25zdWx0XC13aXRoOwor55+u5pifIDwgZHdhcmZcLVwoc3RhclwpOwor5qC45q2m5Zmo6Kmm6amXIDwgbnVjbGVhclwtdGVzdDsKK+S4meeDr+mFuCA8IGFjcnlsaWNcLWFjaWQ7CivljYrnhp/nt7QgPCBzZW1pXC1za2lsbGVkOwor6YKj5pmCIDwgYXRcLXRoYXRcLXRpbWU7CivlkIPkuI3plosgPCBiZVwtdW5wb3B1bGFyOwor5aSn5birIDwgZ3JlYXRcLW1hc3RlcjsKK+e1hOe5lCA8IG9yZ2FuaXphdGlvbjsKK+WHuuS5jumgkOaWmSA8IHVuZXhwZWN0ZWRseTsKK+mAmueUqCA8IGNvbW1vblwtXCh1c2VcKTsKK+WkmuW3pSA8IHRvXC1tdWx0aXBsZXg7Civns77okZsgPCBlbnRhbmdsZW1lbnQ7CivoqabmjqIgPCB0b1wtc291bmRcLW91dDsKK+Wkq+WmuyA8IG1hblwtYW5kXC13aWZlOwor5Zyw5pa55Li7576pIDwgXCJsb2NhbFwtXC1pc21cIjsKK+mBk+atiSA8IHRvXC1hcG9sb2dpemU7CivmlYXmhI8gPCBkZWxpYmVyYXRlbHk7Civoq4vllY8gPCBtYXlcLWlcLWFza1wuXC5cLjsKK+a/gOWFieWUseeJhyA8IGNvbXBhY3RcLWRpc2s7CivkuozljYHkuIDkuJbntIAgPCAyMXN0XC1jZW50dXJ5Owor5Ye655m8IDwgdG9cLXN0YXJ0XC1vdXQ7CivnuK7lr6sgPCBhYmJyZXZpYXRpb247CivkuK3lpK7pioDooYwgPCBjZW50cmFsXC1iYW5rOwor5aOB5o6bIDwgd2FsbFwtaGFuZ2luZzsKK+eGn+aCiSA8IHRvXC1rbm93XC13ZWxsOwor54af5oCdIDwgZGVsaWJlcmF0aW9uOwor5pW05aSpIDwgYWxsXC1kYXlcLWxvbmc7CivpsYnnlLIgPCB0dXJ0bGVcLXNoZWxsOwor6Lqr6auUIDwgXChodW1hblwpXC1ib2R5Owor5pav5a+G57SE55GfIDwgam9zZXBoXC1zbWl0aDsKK+ezvue6jyA8IGJlXC1lbnRhbmdsZWQ7CivkuI3lkIjnkIYgPCB1bnJlYXNvbmFibGU7Civnm67liY3kuJbnlYwgPCBtb2Rlcm5cLXdvcmxkOwor6KSH6KO9IDwgdG9cLWR1cGxpY2F0ZTsKK+maiuaXlyA8IHRlYW1cLXBlbm5hbnQ7CivliqDlvLcgPCB0b1wtcmVpbmZvcmNlOwor5Ye6542EIDwgbGVhdmVcLXByaXNvbjsKK+S4jeaEieW/qyA8IGRpc2FncmVlYWJsZTsKK+irh+WIpCA8IHRvXC1uZWdvdGlhdGU7CivnnIvnl4UgPCBzZWVcLWFcLWRvY3RvcjsKK+awkeaEj+iqv+afpSA8IG9waW5pb25cLXBvbGw7CivlvojkuI0gPCB2ZXJ5XC11blwtXC5cLlwuXC47Civmr4XlipsgPCBwZXJzZXZlcmFuY2U7CivokL3lr6YgPCB0b1wtaW1wbGVtZW50Owor5pSv5bqXIDwgYnJhbmNoXC1zdG9yZTsKK+m9hiA8IHN0dWZmZWRcLW5vemU7CivpvL0gPCBjbG9nZ2VkXC1ub3NlOwor55m96JavIDwgc3dlZXRcLXBvdGF0bzsKK+e2teaXlyA8IGNvbG9yZWRcLWZsYWc7CivppIrpm57loLQgPCBjaGlja2VuXC1mYXJtOwor6bqVIDwgbXVudGphY1wtZGVlcjsKK+ePvuS7o+mfs+aogiA8IG1vZGVyblwtbXVzaWM7Civlm57poacgPCB0b1wtbG9va1wtYmFjazsKK+aureWMliA8IGJlY29tZVwtcmlnaWQ7Civps5AgPCB0aGVcLW5hdXRpbHVzOwor6bGRIDwgdGhlXC1zdHVyZ2VvbjsKK+mxgiA8IG5hbWVcLW9mXC1maXNoOwor6KO96YCg5qWt6ICFIDwgbWFudWZhY3R1cmVyOwor6Iad5LiK5Z6LIDwgbGFwdG9wXC1cKGFkalwpOwor54CP6Ka9IDwgdG9cLXNraW1cLW92ZXI7Civlv4PnkIblrbjlrrYgPCBwc3ljaG9sb2dpc3Q7CivpraYgPCBzaGFya1wtZmFtaWx5Owor6ay1IDwgYmlnXC1pcm9uXC1wb3Q7CivprIUgPCB1bmtlbXB0XC1oYWlyOwor6Kqy5L2ZIDwgYWZ0ZXJcLXNjaG9vbDsKK+i7iumBkyA8IHRyYWZmaWNcLWxhbmU7CivmraPlpoIgPCBiZVwtanVzdFwtbGlrZTsKK+mpiCA8IGJsYWNrXC1ob3JzZXM7CivpqIYgPCBkaXZpbmVcLWhvcnNlOwor6aecIDwgc3Ryb25nXC1ob3JzZTsKK+mnlyA8IGNoYXR0ZXJcLW1hcms7CivmnInmop3mnInnkIblnLAgPCBtZXRob2RpY2FsbHk7CivkuI3mmK/njqnlhZLnmoQgPCBpdCcnc1wtbm9cLWpva2U7Civlr6bpmpvmgKcgPCBwcmFjdGljYWxpdHk7CivljYHkuIDlubQgPCBlbGV2ZW5cLXllYXJzOwor6aSAIDwgdGFpbnRlZFwtZm9vZDsKK+S4jeiDveaKteaKlyA8IGlycmVzaXN0aWJsZTsKK+mirSA8IHN3YXlcLWluXC13aW5kOwor57SZ54mMIDwgcGxheWluZ1wtY2FyZDsKK+mepiA8IGxlYXRoZXJcLXN0YXA7CivpgY7looPnsL3oqLwgPCB0cmFuc2l0XC12aXNhOwor6ZyRIDwgYmVcLW1vaXN0ZW5lZDsKK+mZgSA8IGFcLXN0ZWVwXC1iYW5rOwor55m857SFIDwgZmx1c2hcLVwoZmFjZVwpOwor6ZuG5ZCIIDwgY29uZ3JlZ2F0aW9uOwor6YCf5oiQIDwgY3Jhc2hcLWNvdXJzZTsKK+mXkSA8IHRoZVwtZG9vcnNpbGw7CivlhYnnt5ogPCBvcHRpY2FsXC1saW5lOwor6ZWoIDwgcHJhc2VvZHltaXVtOwor5Yqq5YqbIDwgZ3JlYXRcLWVmZm9ydDsKK+W8leWFpSA8IHRvXC1kcmF3XC1pbnRvOwor5bug5Z2AIDwgZmFjdG9yeVwtc2l0ZTsKK+mPtyA8IHByb3RhY3Rpbml1bTsKK+ebuOS8vOaApyA8IHJlc3NlbWJsYW5jZTsKK+mdnuWQjOatpSA8IGFzeW5jaHJvbm91czsKK+mNiiA8IHNtZWx0XC1tZXRhbHM7CivpjIggPCB0b1wtYmVuZFwtaXJvbjsKK+WCs+mBk+abuCA8IGVjY2xlc2lhc3RlczsKK+maqOWQjCA8IGFjY29tcGFueWluZzsKK+iAtuepjOWfuuedoyA8IGplc3VzXC1jaHJpc3Q7CivnhpLlhYkgPCBmbG91cmVzY2VuY2U7CivoqJjogIXloLHlsI4gPCBwcmVzc1wtcmVwb3J0Owor6YeqIDwgYW5cLWFsbXNcLWJvd2w7Civlu6PlkYogPCB0b1wtYWR2ZXJ0aXNlOwor6Ya9IDwga2luZFwtb2ZcLXdpbmU7CivmjKjov5EgPCBnZXRcLWNsb3NlXC10bzsKK+e3qOWKhyA8IHdyaXRlXC1hXC1wbGF5Owor5aOT5YCSIDwgb3ZlcndoZWxtaW5nOwor5o6h6ISCIDwgdHJlZVwtdGFwcGluZzsKK+mDmSA8IHRvXC1iZVwtZXhpbGVkOwor6YKyIDwgZ29vZFwtbG9va2luZzsKK+i/oyA8IHRvXC1sZWFwXC1vdmVyOwor6YCf5a+rIDwgcXVpY2tcLXNrZXRjaDsKK+WkmuW3peS9nOalrSA8IG11bHRpdGFrc2luZzsKK+eZvOiogOS6uiA8IHNwb2tlc3BlcnNvbjsKK+i4vCA8IHRvXC1mYWxsXC1mbGF0Owor6LikIDwgYnV0dFwtYWdhaW5zdDsKK+mbhuS4reWZqCA8IGNvbmNlbnRyYXRvcjsKK+S4jeWkp+mbouWFkiA8IHByZXR0eVwtY2xvc2U7CivpgLHlnI0gPCBzdXJyb3VuZGluZ3M7Civmv77ntJkgPCBmaWx0ZXJcLXBhcGVyOwor6LOJIDwgdG9cLWdpdmVcLWFsbXM7CivosoYgPCBzbWFsbFwtYmFkZ2VyOwor6LG2IDwgY2FzdHJhdGVcLXBpZzsKK+i2s+eQg+i/tyA8IGZvb3RiYWxsXC1mYW47CivmnKzkvobpnaLnm64gPCB0cnVlXC1jb2xvdXJzOwor6Kiq5L+EIDwgdmlzaXRcLXJ1c3NpYTsKK+aLlOmMqCA8IHdlaWdoXC1hbmNob3I7CivmqJnnh4ggPCBiZWFjb25cLWxpZ2h0Owor5Yaw5pm2IDwgaWNlXC1jcnlzdGFsczsKK+iqviA8IHNwZWFrXC1nZW50bHk7Civlub7lpKkgPCBzZXZlcmFsXC1kYXlzOwor5o6I57K+IDwgaW5zZW1pbmF0aW9uOwor6auS6KmxIDwgYmFkXC1sYW5ndWFnZTsKK+WHueWyuCA8IGNvbmNhdmVcLWJhbms7CivopZsgPCBmaW5lXC1jbG90aGVzOwor6KWGIDwgaG9vZFwtb3JcLWNvd2w7CivpgY7kvoYgPCB0b1wtY29tZVwtb3ZlcjsKK+aTjeWLniA8IHRvXC13b3JrXC1oYXJkOwor6YKj5qij55qEIDwgdGhhdFwta2luZFwtb2Y7CivlhYnmupAgPCBsaWdodFwtc291cmNlOwor57KX5L+X55qE6ZqO57SaIDwgdnVsZ2FyXC1jbGFzczsKK+mAn+WHjSA8IHF1aWNrXC1mcmVlemU7CivntrLot6/nr4Dpu54gPCBuZXR3b3JrXC1ub2RlOwor5Z2Q54miIDwgaW1wcmlzb25tZW50Owor6KOc54mZIDwgZmlsbFwtYVwtdG9vdGg7CivliKjliIAgPCBwbGFuaW5nXC10b29sOwor5oqK6ZecIDwgZ3VhcmRcLWFcLXBhc3M7CivmiZPljbDmnI3li5nlmaggPCBwcmludFwtc2VydmVyOwor5LiN5Y+v5pS25ou+IDwgaXJyZW1lZGlhYmxlOwor5Y2K6YKK5aSpIDwgaGFsZlwtdGhlXC1za3k7CivokZwgPCBzbWlsYXhcLWNoaW5hOwor6JCpIDwgc2NhbmRlbnRcLWhvcDsKK+iQmCA8IG5hcGh0aGFubGVuZTsKK+iHquihmyA8IHNlbGZcLWRlZmVuc2U7Civos5Popb/ms5XlsLzkup4gPCBwZW5uc3lsdmFuaWE7CivojqYgPCBqdW5nbGVcLWdyYXNzOwor5ZyL5a625qmf5a+GIDwgc3RhdGVcLXNlY3JldDsKK+mZm+S4iyA8IHlvdXJcLW1hamVzdHk7CivlhavmnIggPCBlaWdodGhcLW1vbnRoOwor6IqaIDwgZ3JlZW5cLXNwcm91dDsKK+WCmeiAgyA8IFwoYW5cLWFwcGVuZGl4Owor6IqRIDwgd2hpdGVcLW1pbGxldDsKK+W5tOWJjSA8IFwuXC5cLnllYXJzXC1hZ287CivohpcgPCB1Z2x5XC1hbmRcLWZhdDsKK+mWi+aUryA8IGV4cGVuZGl0dXJlczsKK+aNj+epjSA8IGNoaXJvcHJhY3RpYzsKK+iRoeiQhOmFkiA8IFwoZ3JhcGVcKVwtd2luZTsKK+iCmSA8IGFcLXNtYWxsXC13b3JtOwor576AIDwgZmlzaGluZ1wtdHJhcDsKK+iqv+afpeS6uuWToSA8IGludmVzdGlnYXRvcjsKK+atpuijnemDqOmaiiA8IGFybWVkXC1mb3JjZXM7CivloLHlg7kgPCBxdW90ZWRcLXByaWNlOwor6L+35L+hIDwgc3VwZXJzdGl0aW9uOwor57qBIDwgc2hhZGVcLW9mXC1yZWQ7CivnuZkgPCB0b1wtaW50ZXJwcmV0Owor57iVIDwgdGFuZ2xlZFwtaGVtcDsKK+i9ieaPmyA8IHRvXC10cmFuc2Zvcm07CivmkKzlrrYgPCBtb3ZlXC1cKGhvdXNlXCk7CivmiLbpoK0gPCBiYW5rXC1hY2NvdW50Owor6L6y5L2c54mpIDwgXChmYXJtXClcLWNyb3BzOwor57GvIDwgYmFtYm9vXC1jaGVzdDsKK+Wbm+WNgeWkmiA8IG1vcmVcLXRoYW5cLTQwOwor6Kaq5L+hIDwgdHJ1c3RlZFwtYWlkZTsKK+etpCA8IHlvdW5nXC1iYW1ib287CivooYznqIsgPCB0cmF2ZWxcLXJvdXRlOwor562NIDwgYmFtYm9vXC1zaG9vdDsKK+ethSA8IGJhbWJvb1wtYnJ1c2g7CivlmrTnq6MgPCB0aWdodFwuc3RyaWN0Owor6K2J5a+m56auIDwgY29uZmlybWF0aW9uOwor5ZCN6YyE5pyN5YuZIDwgbmFtZVwtc2VydmljZTsKK+enrCA8IGJsYWNrXC1taWxsZXQ7CivnnIvkvZwgPCBsb29rXC11cG9uXC1hczsKK+iqnumfs+S/oeiZnyA8IHZvaWNlXC1zaWduYWw7Civlr6fpoZggPCB3b3VsZFwtcmF0aGVyOwor56WYIDwgdG9cLWNhbGN1bGF0ZTsKK+ejoCA8IHNhbFwtYW1tb25pYWM7CivnorYgPCBhXC1mbG9vZFwtZ2F0ZTsKK+aOpeaenSA8IFwodHJlZVwpXC1ncmFmdDsKK+aOiOasiiA8IHRvXC1hdXRob3JpemU7Civnn7wgPCBzdG9uZVwtYnJpZGdlOwor6ZaL5a24IDwgc2Nob29sXC1vcGVuczsKK+edkiA8IHRvXC1nbGFuY2VcLWF0Owor5L+d6K2JIDwgdG9cLWd1YXJhbnRlZTsKK+aJueiplSA8IHRvXC1jcml0aWNpemU7CivlrofoiKrlsYAgPCBzcGFjZVwtYWdlbmN5Owor55qmIDwgYnJpZ2h0XC13aGl0ZTsKK+S7pOS6uumpmueVsCA8IHN1cnByaXNpbmdseTsKK+eYuiA8IGFuYWxcLWZpc3R1bGE7CivljrvlnIvlpJYgPCB0b1wtZ29cLWFicm9hZDsKK+eWvyA8IHByaWNrbHlcLWhlYXQ7Civmi5TntbIgPCB3aXJlXC1kcmF3aW5nOwor5omT6LOtIDwgXChtYWtlXC1hXClcLWJldDsKK+WEquaDoCA8IHByZWZlcmVudGlhbDsKK+esrOS6jOS9jSA8IHNlY29uZFwtcGxhY2U7CivlhazloLEgPCBhbm5vdW5jZW1lbnQ7Civln7rnpI7oqK3mlr0gPCBiYXNlXC1zdGF0aW9uOwor5a+G6ZuGIDwgY29uY2VudHJhdGVkOwor5o6I5pmCIDwgdGltZVwtc2VydmljZTsKK+WcqOaXgSA8IGJ5XC1cKGFcLXBsYWNlXCk7CivlkIzmmYLku6MgPCBjb250ZW1wb3Jhcnk7Civnjo0gPCBpbGxcLXRlbXBlcmVkOwor5ou855ukIDwgY29sZFwtcGxhdHRlcjsKK+eLhiA8IHBla2luZXNlXC1kb2c7CivniYIgPCBmZW1hbGVcLXNoZWVwOwor5o2Q5qy+IDwgZG9uYXRlXC1tb25leTsKK+WJr+e4veeQhiA8IHZpY2VcLXByZW1pZXI7CivlnIvmnIkgPCBuYXRpb25hbGl6ZWQ7Civns7vkuIogPCB0b1wtYnVja2xlXC11cDsKK+iDjOmboiA8IGRldmlhdGVcLWZyb207CivmjInnhacgPCBhY2NvcmRpbmdcLXRvOwor5YG254S2IDwgaW5jaWRlbnRhbGx5Owor5ZaJ6Y+hIDwgbGFyeW5nb3Njb3BlOwor6IOM6ZmwIDwgaW5cLXRoZVwtc2hhZGU7CivnlJ/lkb3ot6HosaEgPCBzaWduXC1vZlwtbGlmZTsKK+WFqeWNgyA8IHR3b1wtdGhvdXNhbmQ7Civmu4ogPCBhXC1yaXZlclwtbmFtZTsKK+i3r+W+l+iomCA8IGJvb2tcLW9mXC1ydXRoOwor5o+S5ZyWIDwgaWxsdXN0cmF0aW9uOwor5rOWIDwgc3RpbGxcLXdhdGVyczsKK+efpeitmOWIhuWtkCA8IGludGVsbGVjdHVhbDsKK+euoeeQhiA8IHRvXC1zdXBlcnZpc2U7CivkuInlkIjkuIAgPCB0aHJlZVwtaW5cLW9uZTsKK+aviCA8IGZlcnRpbGVcLWVnZ3M7CivmrpwgPCBoYWxmXC1zaXR0aW5nOwor5Zub55m+6JCsIDwgZm91clwtbWlsbGlvbjsKK+aiheiKsSA8IHBsdW1cLWJsb3Nzb207CivpmL/mkanlj7jmm7ggPCBib29rXC1vZlwtYW1vczsKK+eVtueEtiA8IG9ubHlcLW5hdHVyYWw7CivmqZIgPCB3b29kXC1zdHJlYWtzOwor6auY6LOq6YePIDwgaGlnaFwtcXVhbGl0eTsKK+aomeWDuSA8IG1hcmtcLWFcLXByaWNlOwor5qe7IDwgemVsa292YVwtdHJlZTsKK+ajkuehqyA8IHJvbGxcLXN1bHBodXI7Civmp5QgPCB3YXRlclwtcHVsbGV5Owor5aSi5ri455eHIDwgdG9cLXNsZWVwd2FsazsKK+iAtuWIqeexs+WTgOatjCA8IGxhbWVudGF0aW9uczsKK+mlhemgrSA8IHN0ZWFtZWRcLXJvbGw7Civkv53nrqEgPCB0YWtlXC1jYXJlXC1vZjsKK+eUqOaItuWumue+qSA8IHVzZXJcLWRlZmluZWQ7CivlnoLkuIsgPCB0b1wtaGFuZ1wtZG93bjsKK+aIkOWQieaAneaxlyA8IGdlbmdoaXNcLWtoYW47CivmkZkgPCB0b1wtdHJhbnNwb3J0Owor6KOB5ZOhIDwgdG9cLWN1dFwtc3RhZmY7CivmuIXphpIgPCBjbGVhclwtaGVhZGVkOwor6KOc5YWFIDwgdG9cLXJlcGxlbmlzaDsKK+S4jee1kOebnyA8IG5vbmFsaWdubWVudDsKK+aPkSA8IHRvXC1mYWJyaWNhdGU7CivlhavntJrpoqggPCBmb3JjZVwtOFwtd2luZDsKK+aIiSA8IGFcLWJhdHRsZVwtYXhlOwor5L6/56eYIDwgY29uc3RpcGF0aW9uOwor55eF5bqKIDwgaG9zcGl0YWxcLWJlZDsKK+W5vOWFkuWckiA8IGtpbmRlcmdhcnRlbjsKK+ahlOWtkOawtCA8IG9yYW5nZVwtanVpY2U7Civmnpjpkb8gPCBpbmNvbXBhdGlibGU7CivkuLvlubnntrLot68gPCBjb3JlXC1uZXR3b3JrOwor5bu5IDwgdG9cLXBlcnNlY3V0ZTsKK+WJtemAoOaApyA8IGNyZWF0aXZlbmVzczsKK+WaruW+gCA8IHRvXC15ZWFyblwtZm9yOwor6Ieq5ouUIDwgZnJlZVwtb25lc2VsZjsKK+W4qCA8IGhhbmRrZXJjaGllZjsKK+W2oiA8IGhpZ2hcLW9yXC10YWxsOwor5bGYIDwgdGhlXC15b3VuZ2VzdDsKK+iIquWkqSA8IHNwYWNlXC1mbGlnaHQ7Civpq5jlr4YgPCBoaWdoXC1kZW5zaXR5Owor6KGo5ZyfIDwgc3VyZmFjZVwtc29pbDsKK+att+S7o+W/l+S4iyA8IDJcLWNocm9uaWNsZXM7Civmrbfku6Plv5fkuIogPCAxXC1jaHJvbmljbGVzOwor5auyIDwgZ3JhbmRcLW1vdGhlcjsKK+iznuitmCA8IGFwcHJlY2lhdGlvbjsKK+a2iOmZpCA8IHRvXC1lbGltaW5hdGU7CivnkZ7oibIgPCBsb3ZlbHlcLWNvbG9yOwor6IG96KqqIDwgdG9cLWhlYXJcLXRvbGQ7CivlkajnuL3nkIYgPCBwcmVtaWVyXC16aG91Owor5Z+35pS/6buoIDwgcnVsaW5nXC1wYXJ0eTsKK+eVtuW/gyA8IHRvXC10YWtlXC1jYXJlOwor55Ww5oCnIDwgaGV0ZXJvc2V4dWFsOwor5Lqk6YuSIDwgY3Jvc3NcLXN3b3JkczsKK+iIiOWlriA8IFwoYmVcKVwtZXhjaXRlZDsKK+aMh+S7pOWQjeWtlyA8IGNvbW1hbmRcLW5hbWU7Civnpr3poZ4gPCBiaXJkXC1zcGVjaWVzOwor5q+N6Kaq56+AIDwgbW90aGVyJydzXC1kYXk7Civllq0gPCBjb25kb2xlXC13aXRoOwor5LiA5bCP6YOo5YiGIDwgYVwtc21hbGxcLXBhcnQ7Civlgb3lloQgPCBoeXBvY3JpdGljYWw7CivmirHmhKcgPCBmZWVsXC1hc2hhbWVkOwor5ZG5IDwgdG9cLWVhdFwtZ3Jhc3M7CivkuIDkuIvlhZIgPCBhXC1saXR0bGVcLWJpdDsKK+iyoOiyrCA8IGluXC1jaGFyZ2VcLW9mOwor54++6KGMIDwgYmVcLWluXC1lZmZlY3Q7CivlsYjmnI0gPCB0b1wtc3VycmVuZGVyOwor5Y63IDwgdGhlXC1mb3JlXC1hcm07CivmuJvnt6kgPCB0b1wtc2xvd1wtZG93bjsKK+WLoyA8IGFjaGlldmVtZW50czsKK+S4i+m9kiA8IGJvdHRvbVwtdGVldGg7CivlqpLpq5QgPCBcKG5ld3NcKVwtbWVkaWE7CivlibcgPCB0b1wtbGV2ZWxcLW9mZjsKK+mpmuaElSA8IGFzdG9uaXNobWVudDsKK+eVtuWgtCA8IGF0XC10aGVcLXNjZW5lOwor6KSH6KO95ZOBIDwgcmVwcm9kdWN0aW9uOwor5YSXIDwgY29tcGFyZVwtd2l0aDsKK+WPuOazleasiiA8IGp1cmlzZGljdGlvbjsKK+Wpmum9oSA8IG1hcnJ5aW5nXC1hZ2U7CivmirHlsYggPCBmZWVsXC13cm9uZ2VkOwor5L2U5L6/5a6cIDwgYWR2ZW50YWdlb3VzOwor5L2tIDwgdW5zdWJtaXNzaXZlOwor6aOf6K2cIDwgY29va2VyeVwtYm9vazsKK+S4vCA8IGJvd2xcLW9mXC1mb29kOwor5Lim6Z2eIDwgcmVhbGx5XC1pc24nJ3Q7CivnqoHnoLQgPCBicmVha3Rocm91Z2g7CivpvLvkuK3pmpQgPCBuYXNhbFwtc2VwdHVtOwor5paw6IGe6JmVIDwgbmV3c1wtc2VydmljZTsKK+S+teaZqCA8IHRvd2FyZHNcLWRhd247CivktLwgPCB0b1wtZXh0aXJwYXRlOwor5LSVIDwgYVwtd29vZHBlY2tlcjsKK+a8ouWfjiA8IHNlb3VsXCxcLWtvcmVhOwor5LOWIDwgZmx5aW5nXC1iaXJkczsKK+SynCA8IGxvdHNcLW9mXC1maXNoOwor5LGKIDwgcm9lXC1vclwtc3Bhd247Civkr7YgPCBmYWlyXC1vZlwtaGFpcjsKK+SvpyA8IGFcLXNtYWxsXC1oYWxsOwor6YGL5YuV6Z6LIDwgc3BvcnRzXC1zaG9lczsKK+SunyA8IGJpZ1wtYW5kXC10YWxsOwor5bCR5pW4IDwgc21hbGxcLW51bWJlcjsKK+SukSA8IGFcLWdyYXlcLWhvcnNlOwor5K2YIDwgd2VsbFwtc3RhY2tlZDsKK+StliA8IGFuaW1hbFwtZmVlZHM7Civmi4zlkowgPCBtaXhcLWFuZFwtc3RpcjsKK+StiSA8IG1hc2hlZFwtYmVhbnM7CivkrJwgPCBldmlsXC1zcGlyaXRzOwor5KyaIDwgdG9cLW1vdmVcLWZhc3Q7CivkrIsgPCB2aW9sZW50XC13aW5kOwor5rWB6YCaIDwgdG9cLWNpcmN1bGF0ZTsKK+SrqCA8IHRhbGxcLWFuZFwtYmlnOwor5KuaIDwgc2hvcnRcLWhlYWRlZDsKK+SrlSA8IHNtYWxsXC1oZWFkZWQ7CivlkqjoqaIgPCBjb25zdWx0YXRpdmU7Civkq4cgPCB0aGVcLXdoaXNrZXJzOwor5omS5ouJIDwgcHVzaFwtbGlnaHRseTsKK+SquSA8IGFcLWxhcmdlXC1mYWNlOwor5KqhIDwgdG9cLWZhbGxcLWRvd247CivkqosgPCBzaWxrXC1jb3JkYWdlOwor5KmPIDwgYVwtc21hbGxcLWZhY2U7CivkqYsgPCBhXC1ncmVlblwtZmFjZTsKK+SphyA8IGFcLXNtYWxsXC1oZWFkOwor5bCI5pS/IDwgZGljdGF0b3JzaGlwOwor5Ki2IDwgdGh1bmRlcnN0b3JtOwor5KiyIDwgYVwtc21hbGxcLWhhcmU7CivkqKogPCBhXC1kdXN0XC1zdG9ybTsKK+SonSA8IGFcLXB1cmVcLXdvbWFuOwor5KiIIDwgYVwtc21hbGxcLWJpcmQ7Civpo7zojYkgPCBmb3JhZ2VcLWdyYXNzOwor5KeiIDwgYVwtcm91Z2hcLXJvYWQ7Civkp5kgPCBhXC1oaWdoXC1tb3VuZDsKK+m8u+iFlCA8IG5hc2FsXC1jYXZpdHk7CivmoLjovZ/ngrggPCBudWNsZWFyXC1ib21iOwor5rW06KGAIDwgYmxvb2RcLXNvYWtlZDsKK+SlgyA8IGFcLWJpZ1wtaGFtbWVyOwor5KSsIDwgYVwtc21hbGxcLWdvbmc7CivkpKMgPCBhXC1tZXRhbFwtcmluZzsKK+SkiyA8IHllbGxvd1wtZmFjZWQ7Civko74gPCBjaGVlc2VcLWRyZWdzOwor5KO8IDwgbWl4ZWRcLXN0YXJjaDsKK+WxrOWciyA8IHZhc3NhbFwtc3RhdGU7CivkoJQgPCBmYXJcLWFuZFwtZGVlcDsKK+SfvyA8IHRvXC1yZXZlcmVuY2U7Civkn7kgPCB0b1wtaG9wXC1hYm91dDsKK+i9ieizrOWNoSA8IGFcLWRlYml0XC1jYXJkOwor6Yu8562GIDwgZm91bnRhaW5cLXBlbjsKK+SflSA8IHRvXC1zdGVwXC11cG9uOwor5J6xIDwgdG9cLWZhbGxcLW92ZXI7CivknqcgPCBoYXJkXC10b1wtd2FsazsKK+WBieS6uiA8IGdyZWF0XC1wZXJzb247Civlronnh58gPCBwaXRjaFwtYVwtY2FtcDsKK+WSjOinoyA8IGNvbmNpbGlhdG9yeTsKK+mdouWwjemdoiA8IGZhY2VcLXRvXC1mYWNlOwor5JqqIDwgY3VydmVkXC1ob3JuczsKK+aineWtkCA8IGFcLXNob3J0XC1ub3RlOwor5o+u6ZyN54Sh5bqmIDwgZXh0cmF2YWdhbmNlOwor5qC55pysIDwgXChub3RcKVwtYXRcLWFsbDsKK+SYhCA8IGNpY2FkYVwtZmFtaXk7CivkmIAgPCBncmFzc2hvcHBlcnM7Civkl6cgPCBsaWJlbGx1bGlkYWU7CivnqK7nqK4gPCBhbGxcLWtpbmRzXC1vZjsKK+SWniA8IGFcLXNlYVwtaW5zZWN0Owor5JW7IDwgdG9cLWFkaGVyZVwtdG87CivklbogPCBkZW5zZVwtZ3Jvd3RoOwor5JWdIDwgbWVkaWNhbFwtaGVyYjsKK+SViyA8IG9mXC1lbG1cLWdyb3VwOwor5JOvIDwgd2F0ZXJcLXBlcHBlcjsKK+eZu+mZuOaciOeQgyA8IG1vb25cLWxhbmRpbmc7CivopIflr6vntJkgPCBjYXJib25cLXBhcGVyOwor5JG9IDwgYVwtbGFyZ2VcLWJvYXQ7CivkkbUgPCBhXC1zbWFsbFwtYm9hdDsKK+azlemZoiA8IGNvdXJ0XC1vZlwtbGF3Owor5JCFIDwgdGhlXC1idXR0b2NrczsKK+SPgCA8IGluaGFybW9uaW91czsKK+SOmCA8IGJpcmRzXC1mbHlpbmc7CivmsrPppqwgPCBoaXBwb3BvdGFtdXM7CivnlJ/lkb0gPCBsaWZlXC1cKGZvcmNlXCk7CivkjYQgPCBhblwtaW5kZW50dXJlOwor5Iy2IDwgXClcLWJsYWNrXC1zaWxrOwor5IyHIDwgYVwtdGhpY2tcLXJvcGU7CivkuLvop5IgPCBsZWFkaW5nXC1yb2xlOwor5rer54ylIDwgYWJvbWluYXRpb25zOwor55Si5Y21IDwgbGF5XC1cKGFuXC1lZ2dcKTsKK+aenOeariA8IFwoZnJ1aXRcKVwtcGVlbDsKK+SKhSA8IHRvXC1zb2FrXC1yaWNlOwor5ImvIDwgZHJpZWRcLWJhbWJvbzsKK+SJlSA8IGFcLWJhbWJvb1wtaGF0Owor5ImUIDwgYmFtYm9vXC1zbGlwczsKK+SInyA8IGJyb2tlblwtc291bmQ7Civkh7ggPCBhXC1iYW1ib29cLW1hdDsKK+SHnSA8IHRvXC1icmVha1wtb2ZmOwor5IaiIDwgdG9cLXBlbmV0cmF0ZTsKK+SGnyA8IGNvcmVzcG9uZGluZzsKK+SGjSA8IGN1dHRlZFwtY3JvcHM7CivkuI3otrMgPCBpbnN1ZmZpY2llbnQ7CivkhYEgPCB0b1wtaHVza1wtcmljZTsKK+aJk+WtlOWZqCA8IGhvbGVcLXB1bmNoZXI7Civkg7IgPCBhXC1ncmVhdFwtcm9jazsKK+SDryA8IHNtYWxsXC1zdG9uZXM7Civkg50gPCBydWdnZWRcLXJvY2tzOwor5IKQIDwgc2hvcnRcLXN0dXBpZDsKK+SBpyA8IHRvXC1vcGVuXC13aWRlOwor5a625pS/IDwgaG91c2VrZWVwaW5nOwor5LiN6LKyIDwgaW1tZWFzdXJhYmxlOwor5ICBIDwgYVwtc21hbGxcLWJvd2w7Civjv7UgPCBzb2Z0XC1sZWF0aGVyOwor47+yIDwgYVwtZmllcmNlXC1kb2c7Civjv6ogPCBza2luXC1kaXNlYXNlOwor47+KIDwgdmVyeVwtcGFpbmZ1bDsKK+O+lCA8IGxvbmdcLWlsbG5lc3M7Civku4DpurzmmK8gPCB3aGF0XC1pc1wtXC5cLlwuXD87Civou43kuovmj7TliqkgPCBtaWxpdGFyeVwtYWlkOwor5Ye56YCP6Y+hIDwgY29uY2F2ZVwtbGVuczsKK+O8iyA8IHRoZVwtY3VjdW1iZXI7CivmnKzmnKzkuLvnvqkgPCBib29rXC13b3JzaGlwOwor47qWIDwgZG9nc1wtYmFya2luZzsKK+O6jiA8IGZpZXJjZVwtYmVhc3Q7CivkupTop5LlpKfmqJMgPCB0aGVcLXBlbnRhZ29uOwor47i+IDwgdG9cLWZpbGxlZFwtdXA7CivjuK0gPCB0aGVcLW9wcG9zaXRlOwor47e5IDwgaW50ZW5zZVwtaGVhdDsKK+O2lSA8IHRvXC13YXNoXC1yaWNlOwor5L2c5oSbIDwgdG9cLW1ha2VcLWxvdmU7CivjtYogPCBtb3ZpbmdcLWltYWdlOwor47SVIDwgdG9cLWJvaWxcLWF3YXk7Civjs54gPCBkZWVwXC1hbmRcLWZhcjsKK+OzkSA8IHRvXC1mbG93XC1vdmVyOwor47C3IDwgcmVzdXJyZWN0aW9uOwor46+gIDwgYVwtY3Jvc3NcLWJlYW07Civjr5wgPCBkZWNheWVkXC13b29kOwor466uIDwgYVwtd2VsbFwtc3dlZXA7CivjrqwgPCBhXC1mcnVpdFwtdHJlZTsKK+iYh+iBryA8IHNvdmlldFwtdW5pb247CivjrLUgPCB0aGVcLXNoaW5ib25lOwor5pGp6KW/5b6L5rOVIDwgbGF3XC1vZlwtbW9zZXM7Civjq5IgPCBoYW5kc1wtam9pbmVkOwor5a6z5oCVIDwgdG9cLWJlXC1hZnJhaWQ7Civjq4MgPCBmbGFnc1wtZmx5aW5nOwor46uBIDwgdG9cLWN1dFwtYXBhcnQ7CivmmZrplpMgPCBldmVuaW5nXC10aW1lOwor5LqU55m+IDwgZml2ZVwtaHVuZHJlZDsKK+OntCA8IHRvXC1ydWJcLWhhbmRzOwor46aOIDwgY2FudGFua2Vyb3VzOwor46W1IDwgdG9cLWRpc2hvbm91cjsKK+OkpyA8IGNvbmNpbGlhdGlvbjsKK+OjkiA8IGhhaXJcLXJhaXNpbmc7Civjo5EgPCBkb3VibGVcLWltYWdlOwor6L+F6YCf6JST5bu2IDwgcmFwaWRcLXNwcmVhZDsKK+OilyA8IGFcLWhpZ2hcLWhvdXNlOwor46GUIDwgb2lsZWRcLWNhbGljbzsKK+OhhSA8IHN0b3JhZ2VcLXJvb207CivorYnpqZcgPCByZWFsXC1yZXN1bHRzOwor46C+IDwgYVwtZGlzaFwtY2xvdGg7Civmh4rmgpQgPCBmZWVsXC1yZW1vcnNlOwor46CSIDwgbW91bnRhaW5cLXRvcDsKK+OfkCA8IGJpZ1wtYW5kXC1oaWdoOwor45+HIDwgYVwtbGFuZFwtc2xpZGU7CivjnqIgPCB0b1wtYXJyaXZlXC1hdDsKK+OemyA8IHJlZFwtc2xpcHBlcnM7CivjnoUgPCBub3RcLXN0cmFpZ2h0Owor5Y+k576F6aasIDwgYW5jaWVudFwtcm9tZTsKK+OclyA8IGNvdmV0b3VzbmVzczsKK+ObvCA8IHRvXC1pbnRlcnJ1cHQ7Civkv4TkuK0gPCBydXNzaWFcLWNoaW5hOwor45ulIDwgdG9cLXByb3N0cmF0ZTsKK+ObiiA8IHRvXC1zcGVjdWxhdGU7CivkuozljYHokKwgPCAyMDBcLXRob3VzYW5kOwor45iiIDwgYVwtcm91bmRcLWNhdmU7CivjmI0gPCBzb3VuZFwtb2ZcLXJhdDsKK+iuiumAnyA8IHNwZWVkXC1jaGFuZ2U7CivjlrcgPCBiaXJkXC1zaW5naW5nOwor5bm06LyV5Lq6IDwgeW91bmdcLXBlb3BsZTsKK+OWoCA8IGFuXC1hdXhpbGlhcnk7Civjla8gPCBzbG93XC10b25ndWVkOwor5a6J5b+DIDwgZmVlbFwtYXRcLWVhc2U7CivjlZIgPCBhXC1sb2Z0eVwtcGVhazsKK+OUrCA8IHRvXC1lc3RhYmxpc2g7CivjlKYgPCB0b1wtZW5jb3VyYWdlOwor45SVIDwgd2l0aFwtcHVycG9zZTsKK+OUgyA8IHRvXC1jdXRcLXNob3J0Owor45OjIDwgdG9cLXNpbmtcLWludG87CivkurrmsJEgPCBcKHRoZVwpXC1wZW9wbGU7CivlsIfkvoYgPCBcKHRoZVwpXC1mdXR1cmU7CivjkaogPCBhXC1nZW5lcmF0aW9uOwor45GUIDwgYWxsXC10b2dldGhlcjsKK+OQuCA8IHRvXC1vd25cLW1vbmV5Owor45C0IDwgdG9cLWRyYWdcLWRvd247CivpoYzoirEgPCB0aXRsZVwtZGVzaWduOwor5Y+v6KeAIDwgY29uc2lkZXJhYmxlOwor5Lq65qyKIDwgaHVtYW5cLXJpZ2h0czsKK+S5kuS5k+eQgyA8IHRhYmxlXC10ZW5uaXM7Civpmo7ntJrlvI8gPCBoaWVyYXJjaGljYWw7Civku6Xmlq/mi4noqJggPCBib29rXC1vZlwtZXpyYTsKK+i2leS4iiA8IGtlZXBcLXVwXC13aXRoOwor6IG96Kqq6YGOIDwgdG9cLWhlYXJcLXNhaWQ7Civpl4zlsL7ngo4gPCBhcHBlbmRpY2l0aXM7Civnp7vmsJEgPCB0b1wtaW1taWdyYXRlOwor5LuK5pmoIDwgdGhpc1wtbW9ybmluZzsKK+WvhuWPiyA8IGNsb3NlXC1mcmllbmQ7CivljZfpnZ4gPCBzb3V0aFwtYWZyaWNhOwor5LiN56ymIDwgaW5jb25zaXN0ZW50Owor6ZaL5pS+5byP57ay6LevIDwgb3BlblwtbmV0d29yazsKK+S4ueeUsCA8IHB1YmljXC1yZWdpb247CivljYrpn78gPCBoYWxmXC10aGVcLWRheTsKK+S4u+eSsCA8IHByaW1hcnlcLXJpbmc7CivlpKfkuIDkupsgPCBhXC1iaXRcLWJpZ2dlcjsKK+S9oOWAkSA8IHlvdVwtXChwbHVyYWxcKTsKK+S4gOebtCA8IGNvbnRpbnVvdXNseTsKK+eUn+eJqeaIsCA8IGdlcm1cLXdhcmZhcmU7CivkuI3nn6XmiYDmjqogPCBiZVwtYXRcLWFcLWxvc3M7CivmmpfnrpcgPCBwbG90XC1hZ2FpbnN0Owor5bu66Kit5oCnIDwgY29uc3RydWN0aXZlOwor5Lqu5bqmIDwgaWxsdW1pbmF0aW9uOwor5Y+D6ICDIDwgY29uc3VsdGF0aW9uOwor5ZaJ5aGe6Z+zIDwgZ2xvdHRhbFwtc3RvcDsKK+Wjr+m6lyA8IG1hZ25pZmljZW5jZTsKK+m7qOaUvyA8IHBhcnR5XC1wb2xpY3k7CivmqpTmoYjmnI3li5kgPCBmaWxlXC1zZXJ2b2NlOwor6JmQ5b6FIDwgbWlzdHJlYXRtZW50Owor5oSf5oGpIDwgdGhhbmtzZ2l2aW5nOwor5aSn6YO95pyDIDwgbWV0cm9wb2xpdGFuOwor572w55CDIDwgcGVuYWx0eVwtc2hvdDsKK+iyu+WfjiA8IHBoaWxhZGVscGhpYTsKK+acgOS9jum7niA8IGxvd2VzdFwtcG9pbnQ7CivmsrnnlasgPCBvaWxcLXBhaW50aW5nOwor576O5rSyIDwgdGhlXC1hbWVyaWNhczsKK+iyp+WbsCA8IGltcG92ZXJpc2hlZDsKK+mZjeiQveWcsOm7niA8IGxhbmRpbmdcLXNpdGU7Civln7rnnaPmlZkgPCBjaHJpc3RpYW5pdHk7CivlpKfph48gPCBncmVhdFwtYW1vdW50Owor6aCC55SoIDwgdG9cLWJlXC1vZlwtdXNlOwor5a6J55yg6YWuIDwgbWV0aGFxdWFsb25lOwor5pqX54GYIDwgaGlkZGVuXC1zaG9hbDsKK+iXpeaWuSA8IHByZXNjcmlwdGlvbjsKK+ippumpl+aApyA8IGV4cGVyaW1lbnRhbDsKK+S4u+aMgSA8IHByZXNpZGVcLW92ZXI7CivpioDluZUgPCBtb3ZpZVwtc2NyZWVuOwor6ICB5a62IDwgbmF0aXZlXC1wbGFjZTsKK+aal+a9riA8IHVuZGVyY3VycmVudDsKK+iyt+WDuSA8IGJ1eWluZ1wtcHJpY2U7CivlpJrpgoogPCBtdWx0aWxhdGVyYWw7Civnj77ku6MgPCBtb2Rlcm5cLXRpbWVzOwor5LuW5Lq6IDwgb3RoZXJcLXBlcnNvbjsKK+S5i+W+jCA8IGFmdGVyXCh3YXJkc1wpOwor5oWj5L6LIDwgY29udmVudGlvbmFsOwor5Lim5o6SIDwgc2lkZVwtYnlcLXNpZGU7CivogJXlnLAgPCBhcmlhYmxlXC1sYW5kOwor6LK05peP5YyWIDwgYXJpc3RvY3JhdGljOwor5rW05aC0IDwgYmF0aGluZ1wtc3BvdDsKK+S6lOeZvuiQrCA8IGZpdmVcLW1pbGxpb247Civok4voj5wgPCBsZWFmXC1tdXN0YXJkOwor5Yaw5rSy55+zIDwgaWNlbGFuZFwtc3BhcjsKK+aguOi7jeWCmSA8IG51Y2xlYXJcLWFybXM7CivkuI3mi5ggPCBub3RcLXN0aWNrXC10bzsKK+S4ieWNgeS6lOWEhCA8IDNcLVwuNVwtYmlsbGlvbjsKK+mereegsiA8IGZpcmVjcmFja2VyczsKK+S6jOWNgeWFreatsiA8IDI2XC15ZWFyc1wtb2xkOwor5oSf5YuVIDwgdG9cLW1vdmVcLVwoc2JcKTsKK+aEj+WRsyA8IHNpZ25pZmljYW5jZTsKK+mAn+iomOWToSA8IHN0ZW5vZ3JhcGhlcjsKK+eZveawtOazpSA8IHdoaXRlXC1jZW1lbnQ7CivkuI3mhKcgPCBiZVwtd29ydGh5XC1vZjsKK+mdtue0mSA8IHRhcmdldFwtc2hlZXQ7Civmlbjmk5rntrLntaEgPCBkYXRhXC1uZXR3b3JrOwor6b6Q54S25aSn54mpIDwgaHVnZVwtbW9uc3RlcjsKK+ixoeiBsuipniA8IG9ub21hdG9wb2VpYTsKK+aEiOWKoCA8IGFsbFwtdGhlXC1tb3JlOwor6YGg6ZuiIDwgcmVtb3ZlZFwtZnJvbTsKK+WSjOWWhCA8IGdvb2RcLW5hdHVyZWQ7Civoqo3orYkgPCBhdXRoZW50aWNhdGU7CivliKjpvZIgPCBnZWFyXC1zaGFwaW5nOwor5rOo5oSPIDwgdGFrZVwtbm90ZVwtb2Y7CivpoqjlkbMgPCBsb2NhbFwtZmxhdm9yOwor57mh6IqxIDwgdG9cLWVtYnJvaWRlcjsKK+aal+aOoiA8IHNlY3JldFwtYWdlbnQ7CivmmrTmgJIgPCB2aW9sZW50XC1yYWdlOwor5LiN5a65IDwgbm90XC10b2xlcmF0ZTsKK+S4jeWunCA8IG5vdFwtc3VpdGFibGU7Civniq/mr5IgPCBpbGxlZ2FsXC1kcnVnOwor5LiW55WM55+l5ZCNIDwgd29ybGRcLWZhbW91czsKK+W5gOagvOW8jyA8IGZyYW1lXC1mb3JtYXQ7CivlpKfoh7QgPCBtb3JlXC1vclwtbGVzczsKK+S4jeWmgiA8IG5vdFwtZXF1YWxcLXRvOwor5b6X56WoIDwgdm90ZVwtZ2V0dGluZzsKK+a0vuWIpSA8IGRlbm9taW5hdGlvbjsKK+e3mui7uCA8IHRocmVhZFwtc3Bvb2w7CivmnInliKkgPCBhZHZhbnRhZ2VvdXM7CivooZvnlJ/ntJkgPCB0b2lsZXRcLXBhcGVyOwor6KiC6ZaxIDwgc3Vic2NyaXB0aW9uOwor5oGi5b6pIDwgdG9cLXJlaW5zdGF0ZTsKK+mAmemghSA8IHRoaXNcLVwodGhpbmdcKTsKK+W/q+mAn+eZvOWxlSA8IHJhcGlkXC1ncm93dGg7CivlpJrnqK7oqp7oqIAgPCBtdWx0aWxpbmd1YWw7Civlj6/mg5wgPCBpdFwtaXNcLWFcLXBpdHk7CivnlbbmmYLnmoQgPCBvZlwtdGhhdFwtdGltZTsKK+WpmuWkliA8IGV4dHJhbWFyaXRhbDsKK+S4jeWWriA8IG5vdFwtdGhlXC1vbmx5Owor5a6J5YWo5ZWP6aGMIDwgc2FmZXR5XC1pc3N1ZTsKK+S5i+S4gCA8IG9uZVwtb2ZcLVwoc3RoXCk7CivlooPpgYcgPCBjaXJjdW1zdGFuY2U7Civph47lv4MgPCB3aWxkXC1zY2hlbWVzOwor5Y275q2lIDwgdG9cLXN0ZXBcLWJhY2s7CivkuK3kv4QgPCBjaGluYVwtcnVzc2lhOwor5Y2x5q6GIDwgZ3JhdmVcLWRhbmdlcjsKK+S4reS6niA8IGNlbnRyYWxcLWFzaWE7CivorormgKcgPCBkZW5hdHVyYXRpb247Civljp/mlpkgPCByYXdcLW1hdGVyaWFsOwor5raI6Ziy5qCTIDwgZmlyZVwtaHlkcmFudDsKK+S4jeWIqSA8IHVuZmF2b3VyYWJsZTsKK+mAj+aYjuW6piA8IHRyYW5zcGFyZW5jeTsKK+eIhueZvCA8IHRvXC1icmVha1wtb3V0Owor5aSa56uZIDwgbXVsdGlzdGF0aW9uOwor5rCn5rCjIDwgb3h5Z2VuXC1cKGdhc1wpOwor5b+15pelIDwgbWVtb3JpYWxcLWRheTsKK+WQhOWciyA8IGVhY2hcLWNvdW50cnk7CivkuI3kvr8gPCBpbmNvbnZlbmllbnQ7CivmmYLmhYsgPCBcKHZlcmJcKVwtdGVuc2U7CivnvoXliJcgPCB0b1wtc3BlYWRcLW91dDsKK+S4gOWEhCA8IDFcLTAwXC1taWxsaW9uOwor5pq05YuVIDwgaW5zdXJyZWN0aW9uOwor6Z225qmfIDwgdGFyZ2V0XC1kcm9uZTsKK+mBi+ihjCA8IGJlXC1pblwtbW90aW9uOwor57eo6IieIDwgY2hvcmVvZ3JhcGh5Owor5LqM5Y2B5LiDIDwgdHdlbnR5XC1zZXZlbjsKK+S7pSA8IGJ5XC1tZWFuc1wtb2Y7CivovrIgPCBhZ3JpY3VsdHVyZTsKK+W+hCA8IG5hcnJvd1wtcGF0aDsKK+WHoCA8IHNtYWxsXC10YWJsZTsKK+S+vyA8IGNvbnZlbmllbmNlOwor55S1IDwgZWxlY3RyaWNpdHk7Civnmb4gPCBvbmVcLWh1bmRyZWQ7Civot6MgPCBiYXJlXC1mb290ZWQ7CivotIUgPCB1bm5lY2Vzc2FyeTsKK+WKnyA8IGFjaGlldmVtZW50Owor5rGfIDwgbGFyZ2VcLXJpdmVyOwor5rOoIDwgY29uY2VudHJhdGU7CivniacgPCB0ZW5kXC1jYXR0bGU7CivlqZogPCBnZXRcLW1hcnJpZWQ7CivliIogPCBwdWJsaWNhdGlvbjsKK+eGnyA8IHdlbGxcLWNvb2tlZDsKK+mlrSA8IGNvb2tlZFwtcmljZTsKK+WloiA8IGV4dHJhdmFnYW50Owor5p+lIDwgaW52ZXN0aWdhdGU7Civnq6AgPCBjb21wb3NpdGlvbjsKK+aMiSA8IHB1dFwtaGFuZFwtb247CivonaAgPCBraW5kXC1vZlwtYmF0Owor6J2VIDwgbmliYmxlXC1hd2F5Owor5ZuwIDwgdG9cLXN1cnJvdW5kOwor6ZmpIDwgbmFycm93XC1wYXNzOwor57uDIDwgdG9cLXByYWN0aWNlOwor5rqvIDwgZ29cLXVwc3RyZWFtOwor5riJIDwgZm9yZFwtc3RyZWFtOwor6LSlIDwgYmVcLWRlZmVhdGVkOwor57q3IDwgaW5cLWRpc29yZGVyOwor57y6IDwgYmVcLXNob3J0XC1vZjsKK+mBrSA8IGNvbWVcLWFjcm9zczsKK+aItCA8IHdlYXJcLW9uXC10b3A7Civli6QgPCBpbmR1c3RyaW91czsKK+mrhCA8IGJvbmVcLW1hcnJvdzsKK+WKuSA8IGVmZmljYWNpb3VzOwor6LKMIDwgY291bnRlbmFuY2U7CivnuYEgPCBjb21wbGljYXRlZDsKK+afsyA8IHdpbGxvd1wtdHJlZTsKK+WHhCA8IGJpdHRlclwtY29sZDsKK+mcniA8IHJvc3lcLWNsb3VkczsKK+mjtCA8IHN3ZWV0XC1tZWF0czsKK+iBqiA8IGludGVsbGlnZW50Owor5YCmIDwgYmVcLXRpcmVkXC1vZjsKK+aRlCA8IGZhbGxcLWdyb3VuZDsKK+mGiSA8IGludG94aWNhdGVkOwor5rabIDwgbGFyZ2VcLXdhdmVzOwor6ZSFIDwgY29va2luZ1wtcG90Owor5LuUIDwgc21hbGxcLXRoaW5nOwor5pyDIDwgdG9cLWFzc2VtYmxlOwor5ouGIDwgdG9cLWJyZWFrXC11cDsKK+e/oCA8IGNvbG9yXC1ncmVlbjsKK+aZlSA8IGhhbG9cLWluXC1za3k7CivovqggPCBkaXN0aW5ndWlzaDsKK+iRmyA8IGVkaWJsZVwtYmVhbjsKK+i9vyA8IHNlZGFuXC1jaGFpcjsKK+aUqyA8IHNuYXRjaFwtYXdheTsKK+mNmyA8IGZvcmdlXC1tZXRhbDsKK+WOlSA8IG1pbmdsZVwtd2l0aDsKK+ervyA8IGJhbWJvb1wtcG9sZTsKK+WIuCA8IGNlcnRpZmljYXRlOwor56mJIDwgeW91bmdcLWdyYWluOwor6amzIDwgdmFyaWNvbG9yZWQ7CivmhpQgPCBiZVwtd29yblwtb3V0Owor57KeIDwgZ3JvdW5kXC1yaWNlOwor6YGCIDwgY29tcGx5XC13aXRoOwor6Zq2IDwgc3Vic2VydmllbnQ7CivnvLggPCBlYXJ0aGVuXC1qdWc7CivogqIgPCBodW1hblwtbGltYnM7CivlsLQgPCBlbWJhcnJhc3NlZDsKK+WRkCA8IHJhaXNlXC12b2ljZTsKK+miliA8IHJpY2VcLXRhc3NlbDsKK+egpSA8IGFcLXdoZXRzdG9uZTsKK+WtlSA8IGJlXC1wcmVnbmFudDsKK+mSniA8IHBhcGVyXC1tb25leTsKK+eQoiA8IHBvbGlzaFwtamFkZTsKK+e7vSA8IHJpcHBlZFwtc2VhbTsKK+WloCA8IHBheVwtcmVzcGVjdDsKK+a+nCA8IG92ZXJmbG93aW5nOwor5oOVIDwgYmVcLWNhdXRpb3VzOwor6La0IDwgbHlpbmdcLXByb25lOwor6ZqLIDwgc3VpXC1keW5hc3R5Owor556EIDwgdGFrZVwtYWltXC1hdDsKK+elnyA8IGV2aWxcLXNwaXJpdDsKK+WXlCA8IGJlXC1hbmdyeVwtYXQ7CivlpZUgPCBpblwtc2VxdWVuY2U7CivmprQgPCBwb21lZ3JhbmF0ZTsKK+ajmCA8IGp1anViZVwtdHJlZTsKK+WzmSA8IHN0YW5kXC1lcmVjdDsKK+egjCA8IHN0b25lXC1zdGVwczsKK+ankCA8IGxvY3VzdFwtdHJlZTsKK+mzniA8IGZpc2hcLXNjYWxlczsKK+eCvSA8IGJ1cm5pbmdcLWhvdDsKK+i/giA8IGRvY3RyaW5haXJlOwor57yqIDwgd2luZFwtYXJvdW5kOwor5YeLIDwgYmVcLXdpdGhlcmVkOwor57ykIDwgZmxvdXJpc2hpbmc7Civpm7MgPCB0aHVuZGVyY2xhcDsKK+mpuCA8IGV4dHJhXC1ob3JzZTsKK+WXtyA8IGxvdWRcLWNsYW1vcjsKK+eCliA8IHN0ZXdcLXNsb3dseTsKK+iwjyA8IHJlbW9uc3RyYXRlOwor56+GIDwgc2VhbFwtc2NyaXB0Owor5a6mIDwgb2ZmaWNpYWxkb207Civnk64gPCBlYXJ0aGVuXC1qYXI7CivmnJUgPCBwcm9ub3VuXC0nJ2knJzsKK+mYkSA8IGRvb3JcLXNjcmVlbjsKK+WNpCA8IHNhbGluZVwtc29pbDsKK+WUjyA8IHdlZXBcLW9yXC1zb2I7CivmsakgPCBydW5cLXN3aWZ0bHk7CivmppUgPCBiYW55YW5cLXRyZWU7Civpl7AgPCBpbnRlcmNhbGFyeTsKK+aYiiA8IHN1bW1lclwtdGltZTsKK+eOtyA8IGZsYXdcLWluXC1nZW07CivpmJkgPCB3YXRjaFwtdG93ZXI7Civms4wgPCB0b1wtc2VlcFwtb3V0Owor54O9IDwgc2lnbmFsXC1maXJlOwor5a21IDwgc2l0XC1vblwtZWdnczsKK+akrSA8IG92YWxcLXNoYXBlZDsKK+eXiSA8IGNvbnZ1bHNpb25zOwor5YydIDwgZnVsbFwtY2lyY2xlOwor6aWqIDwgY29va2VkXC1mb29kOwor5baZIDwgcHJlY2lwaXRvdXM7CivpoqcgPCBjaGVla1wtYm9uZXM7CivplZcgPCBib3JpbmdcLXRvb2w7Civmj7YgPCBtYWtlXC1mdW5cLW9mOwor54K3IDwgY2FuZGxlXC13aWNrOwor6LSyIDwgZm9yZ2VcLWFoZWFkOwor6JqxIDwgZ3Jhc3Nob3BwZXI7Civnl6ggPCBjb25zdW1wdGlvbjsKK+a/giA8IGFcLXdhdGVyZmFsbDsKK+axkCA8IG5pZ2h0XC10aWRlczsKK+etoCA8IGJhbWJvb1wtc2tpbjsKK+awpCA8IGhhbmdpbmdcLWZvZzsKK+eXlCA8IGhlbW9ycmhvaWRzOwor6La/IDwgdG9cLXRyZWFkXC1vbjsKK+inniA8IHdpbmVcLXZlc3NlbDsKK+aMuSA8IHRvXC1iYWxlXC1vdXQ7CivohpEgPCB0aGVcLWtuZWVjYXA7CivllLMgPCBjcnlcLW9mXC1iaXJkOwor56SFIDwgc3RvbmVcLWJsb2NrOwor566UIDwgcmVlZFwtc2NyZWVuOwor6LG4IDwgcmFkaWNhbFwtMTUzOwor54ODIDwgaHlkcm9jYXJib247CivnoK0gPCBzdG9uZVwtcHJvYmU7Civmvo0gPCB0aW1lbHlcLXJhaW47CivpvosgPCB0b290aFwtZGVjYXk7CivnvLEgPCBhdHRhY2hlZFwtdG87CivlpYIgPCBiZVwtbnVtZXJvdXM7Civpu6kgPCB0b1wtZGlzaG9ub3I7Civlo4UgPCB0b1wtb2JzdHJ1Y3Q7CivmvrYgPCBzdGlsbFwtd2F0ZXI7CivppI0gPCBiZVwtc2F0aWF0ZWQ7CivmnqUgPCB0eXBlXC1vZlwtb2FrOwor5qGVIDwgdGFsbG93XC10cmVlOwor6bKiIDwgc2lsdmVyXC1jYXJwOwor6LaxIDwgZ29cLWluXC1odXJyeTsKK+WmqyA8IGZhbWlseVwtbmFtZTsKK+aaviA8IG1vcm5pbmdcLXN1bjsKK+iNpiA8IGJyaW5kbGVkXC1veDsKK+mCmyA8IGluXC1kaXN0cmVzczsKK+aIoiA8IHRvXC1wdXRcLWF3YXk7CivmpqcgPCB0eXBlXC1vZlwteWV3Owor5aCHIDwgeWVsbG93XC1sb2FtOwor5YqsIDwgYmVcLWRpbGlnZW50Owor6a2IIDwgbWlzY2hldmlvdXM7CivpjaogPCBhblwtaXJvblwtcGFuOwor6JyjIDwgZHVuZ1wtYmVldGxlOwor55emIDwgXChmbGF0XClcLW1vbGU7CivmiKwgPCBleHRlcm1pbmF0ZTsKK+WXiSA8IGJpcmQnJ3NcLWNyb3A7CivlhIsgPCBhXC1zbWFsbFwtamFyOwor6JqcIDwgcGxhbnRcLWxvdXNlOwor57KcIDwgc2VsbFwtZ3JhaW5zOwor5pSuIDwgdG9cLWZlbmRcLW9mZjsKK+iLjiA8IGNoaW5hXC1ncmFzczsKK+WdqSA8IGVhcnRoZW53YXJlOwor5qaJIDwgdHlwZVwtb2ZcLWVsbTsKK+eOoiA8IHBvcnBoeXJpdGVzOwor57uBIDwgdG9cLWNvbnRyYWN0Owor5r2GIDwgdGlueVwtc3RyZWFtOwor6au5IDwgcmVkXC1sYWNxdWVyOwor6KeWIDwgdG9cLWxvbmdcLWZvcjsKK+ietSA8IGFcLWNocnlzYWxpczsKK+adqiA8IHRpcFwtb2ZcLXR3aWc7CivluYIgPCBjb3ZlclwtY2xvdGg7CivnoZcgPCBiYXJyZW5cLWxhbmQ7CivohJ4gPCBtaW5jZWRcLW1lYXQ7CivovbUgPCBlbmRcLW9mXC1heGxlOwor5qWXIDwgYmFyXC1vZlwtZG9vcjsKK+ahhCA8IGFcLWNvaXJcLXBhbG07CivloKAgPCBiYXR0bGVtZW50czsKK+S/nCA8IHRvXC10cnVzdFwtdG87Civlo5PnuK4gPCB0b1wtY29tcHJlc3M7CivlpKfopo/mqKEgPCBsYXJnZVwtc2NhbGU7Civluqbph4/ooaEgPCBtZWFzdXJlbWVudDsKK+iIquepuuihkyA8IGFlcm9uYXV0aWNzOwor6Kiq6I+vIDwgdmlzaXRcLWNoaW5hOwor6KqN55+lIDwgYWNrbm93bGVkZ2U7Civlj6vlloogPCBleGNsYW1hdGlvbjsKK+ioquWVj+iAhSA8IGludGVydmlld2VyOwor5rKJ6YeN5omT5pOKIDwgdG9cLWhpdFwtaGFyZDsKK+mAo+ipniA8IGNvbmp1bmN0aW9uOwor5aW95pyL5Y+LIDwgZ29vZFwtZnJpZW5kOwor5Zub6Z2i6auUIDwgdGV0cmFoZWRyb247Civoh6rnhLbogIznhLYgPCBpbnZvbHVudGFyeTsKK+W8iuerryA8IG1hbHByYWN0aWNlOwor6Z2e5qC4IDwgbm9uXC1udWNsZWFyOwor5ouU6YeY6YyYIDwgY2xhd1wtaGFtbWVyOwor55Sz5ZG96KiYIDwgZGV1dGVyb25vbXk7CivmlLbnqasgPCBhY3F1aXNpdGlvbjsKK+aJjeWklua1gSA8IGJyYWluXC1kcmFpbjsKK+awkeaXjyA8IG5hdGlvbmFsaXR5Owor5LiN6LSK5LiA6KmeIDwga2VlcFwtc2lsZW50Owor5pqX5LqVIDwgYmxpbmRcLXNoYWZ0Owor5pqX5LitIDwgaW5cLXRoZVwtZGFyazsKK+efmuebriA8IHRvXC1mb2N1c1wtb247CivluIPpnosgPCBjbG90aFwtc2hvZXM7Civkurrpq5TlmajlrpggPCBodW1hblwtb3JnYW47Civln4vpoK0gPCBzdGVhbWVkXC1idW47CivlibXkvZzlipsgPCBvcmlnaW5hbGl0eTsKK+eZveefruaYnyA8IHdoaXRlXC1kd2FyZjsKK+WIpOiZlSA8IHRvXC1zZW50YW5jZTsKK+awkeaXj+S4u+e+qSA8IG5hdGlvbmFsaXNtOwor5Yi76IumIDwgaGFyZHdvcmtpbmc7CivmqJnpu54gPCBwdW5jdHVhdGlvbjsKK+eZvem6tSA8IHdoZWF0XC1mbG91cjsKK+WGkumaqiA8IHRha2VcLWFcLXJpc2s7Civnmb3ptrQgPCB3aGl0ZVwtY3JhbmU7CivkuI3otIrmiJAgPCBkaXNhcHByb3ZhbDsKK+W+gOaYlCA8IGluXC10aGVcLXBhc3Q7CivljYrmnIjliIogPCBzZW1pbW9udGhseTsKK+mCiueWhiA8IGJvcmRlclwtYXJlYTsKK+iuk+S9jSA8IHRvXC1hYmRpY2F0ZTsKK+aAquWDuyA8IHBlY3VsaWFyaXR5Owor5b6B5pS2IDwgbGV2eVwtXChmaW5lXCk7Civmr43mnb8gPCBtb3RoZXJib2FyZDsKK+mcgOaxgiA8IHJlcXVpcmVtZW50Owor5aSn5qWtIDwgZ3JlYXRcLWNhdXNlOwor5pe65a2jIDwgYnVzeVwtc2Vhc29uOwor5YKZ55So55KwIDwgYmFja3VwXC1yaW5nOwor5b+F5a6aIDwgYmVcLWJvdW5kXC10bzsKK+WNiuW5tCA8IGhhbGZcLWFcLXllYXI7CivoqrLmoYwgPCBzY2hvb2xcLWRlc2s7Civmu7TnrZTogbIgPCB0aWNrXC1cKHRvY2tcKTsKK+mWk+malCA8IGNvbXBhcnRtZW50Owor6YGy55aRIDwgdG9cLWhlc2l0YXRlOwor6Z2I5oSfIDwgaW5zcGlyYXRpb247Civnsr7lrZDlr4bluqYgPCBzcGVybVwtY291bnQ7CivmuqvluqboqIggPCB0aGVybW9ncmFwaDsKK+mBt+Wxheenu+awkSA8IGltbWlncmF0aW9uOwor5LiN6YeN6KaBIDwgdW5pbXBvcnRhbnQ7Civph47nlJ/li5XniakgPCB3aWxkXC1hbmltYWw7CivoqqrmnI0gPCB0b1wtcGVyc3VhZGU7CivliLbntIQgPCB0b1wtcmVzdHJpY3Q7CivmnInlvbHpn78gPCBpbmZsdWVudGlhbDsKK+mej+WbuiA8IGNvbnNvbGlkYXRlOwor55m86Zu75bugIDwgcG93ZXJcLXBsYW50Owor6IGW6KqV6ICB5Lq6IDwgc2FudGFcLWNsYXVzOwor5YyF5ousIDwgdG9cLWNvbXByaXNlOwor5aal5ZaEIDwgYXBwcm9wcmlhdGU7Civovq/oqLwgPCBkaWFsZWN0aWNhbDsKK+a1qua8q+S4u+e+qSA8IHJvbWFudGljaXNtOwor5p+P5p6X54mGIDwgYmVybGluXC13YWxsOwor54CJ6bm9IDwgZXBzb21cLXNhbHRzOwor5LiN5Y+v55+l6KuWIDwgYWdub3N0aWNpc207CivkuI3liIflr6bpmpsgPCB1bnJlYWxpc3RpYzsKK+WFuOWei+eUqOmAlCA8IHR5cGljYWxcLXVzZTsKK+WvjOaWvOaDs+WDjyA8IGltYWdpbmF0aXZlOwor5beh6YKP6ImHIDwgcGF0cm9sXC1ib2F0Owor5LiN5ZCr57OKIDwgdW5hbWJpZ3VvdXM7CivmnKzlnJ/ljJYgPCB0b1wtbG9jYWxpemU7CivljbPliLsgPCBpbW1lZGlhdGVseTsKK+WuieWFqOeHiCA8IHNhZmV0eVwtbGFtcDsKK+WLmOaOoiA8IGV4cGxvcmF0aW9uOwor5pyJ5oSP5oCdIDwgaW50ZXJlc3Rpbmc7CivljZrlj5YgPCB0cnlcLXRvXC1nYWluOwor56qX546755KDIDwgd2luZG93XC1wYW5lOwor5pS+5qOEIDwgdG9cLXJlbm91bmNlOwor5Yaw6JuLIDwgZnJvemVuXC1lZ2dzOwor6YO15bGAIDwgcG9zdFwtb2ZmaWNlOwor6ZuZ5pW4IDwgZXZlblwtbnVtYmVyOwor6JKQ5bCLIDwgdG9cLWxvb2tcLWZvcjsKK+eZvemBkyA8IG1vb24nJ3NcLXBhdGg7Civli5XmhYsgPCBkZXZlbG9wbWVudDsKK+awuOS5hSA8IGV2ZXJsYXN0aW5nOwor55m86YCBIDwgdG9cLXRyYW5zbWl0Owor6YWN5YKZIDwgdG9cLWFsbG9jYXRlOwor5paw6KW/6JitIDwgbmV3XC16ZWFsYW5kOwor5q+U5aaCIDwgZm9yXC1leGFtcGxlOwor5ZyL5LqL6Kiq5ZWPIDwgc3RhdGVcLXZpc2l0Owor5YWL6KOh5aeG5p6X5a6uIDwgdGhlXC1rcmVtbGluOwor5aSa5bGxIDwgbW91bnRhaW5vdXM7CivljYrljYrmi4nmi4kgPCBpbmNvbXBsZXRlZDsKK+mbu+W3pSA8IGVsZWN0cmljaWFuOwor57SF6ImyIDwgcmVkXC1cKGNvbG9yXCk7Civmj4/ov7AgPCB0b1wtZGVzY3JpYmU7CivljYHlhIQgPCBvbmVcLWJpbGxpb247CivkuI3lj6/liIbpm6IgPCBpbnNlcGFyYWJsZTsKK+WFteifuyA8IHNvbGRpZXJcLWFudDsKK+avgOWjniA8IGRlc3RydWN0aW9uOwor5YmK5ribIDwgdG9cLWN1dFwtZG93bjsKK+aXpeS4rSA8IGphcGFuXC1jaGluYTsKK+mbu+e6nOiqv+WItuino+iqv+WZqCA8IGNhYmxlXC1tb2RlbTsKK+maqOaZgiA8IGF0XC1hbnlcLXRpbWU7CivkuIDljYPpm7bkupTljYHlhIQgPCAxMDVcLWJpbGxpb247Civplbfoq4cgPCBhXC1sb25nXC10YWxrOwor6KOc6YG4IDwgYnlcLWVsZWN0aW9uOwor5pWX6KGA55eHIDwgc2VwdGljYWVtaWE7CivnhKHnlKLpmo7ntJogPCBwcm9sZXRhcmlhdDsKK+iQveW+jCA8IGZhbGxcLWJlaGluZDsKK+WIhuS9iOW8jyA8IGRpc3RydWJ1dGVkOwor5aSx5Y675oSP6K2YIDwgdW5jb25zY2lvdXM7CivmjqjpgbIgPCB0b1wtcG9zdHBvbmU7Civnmb7okKzlr4znv4EgPCBtaWxsaW9uYWlyZTsKK+iytOaXj+ekvuacgyA8IGFyaXN0b2NyYWN5Owor5pON5rOVIDwgZHJpbGxcLXJ1bGVzOwor6LuN6ZqKIDwgYXJteVwtdHJvb3BzOwor5qi56JGJIDwgdHJlZVwtbGVhdmVzOwor5Ymb5p62IDwgcmlnaWRcLWZyYW1lOwor6KuH5YiwIDwgdG9cLXJlZmVyXC10bzsKK+WGjeiAhSA8IGZ1cnRoZXJtb3JlOwor6Kq/5Yi2IDwgdG9cLW1vZHVsYXRlOwor5Z+655+zIDwgY29ybmVyc3RvbmU7CivlvoDkuosgPCBwYXN0XC1ldmVudHM7CivpuoAgPCBmZW1hbGVcLWRlZXI7CivlpKflip8gPCBncmVhdFwtbWVyaXQ7CivmnInkupvkurogPCBzb21lXC1wZW9wbGU7Civoo4Hou40gPCBkaXNhcm1hbWVudDsKK+iqoeWRvSA8IGNvbW1hbmRtZW50Owor6biPIDwgdHJvcGljXC1iaXJkOwor5YWn6IejIDwgY2hhbWJlcmxhaW47Civms6LlpJrpu47lkIQgPCBwdWVydG9cLXJpY287CivptLogPCB0aGVcLXBlbGljYW47Civnq4vms5XmqZ/pl5wgPCBsZWdpc2xhdHVyZTsKK+mxoCA8IG1pbmNlZFwtZmlzaDsKK+msmSA8IG1hdHRlZFwtaGFpcjsKK+WdpuiVqSA8IG1hZ25hbmltb3VzOwor5LiN5ZCQ5rCjIDwgdW5hc3BpcmF0ZWQ7CivkuLvopoHljp/lm6AgPCBtYWluXC1yZWFzb247Civlop7lvLcgPCB0b1wtaW5jcmVhc2U7CivpqZQgPCBibGFja1wtaG9yc2U7CivpqYcgPCBoZWF2eVwtaG9yc2U7CivmnInntpPpqZcgPCBleHBlcmllbmNlZDsKK+mZkOaWvCA8IHJlc3RyaWN0XC1hdDsKK+mWiee2kyA8IGFtZW5vcnJob2VhOwor6KqN5Ye6IDwgcmVjb2duaXRpb247CivlhY3ogbcgPCBkZWdyYWRhdGlvbjsKK+W3peeoiyA8IGVuZ2luZWVyaW5nOwor6KiY5b6XIDwgdG9cLXJlbWVtYmVyOwor5pO65biDIDwgb3JkZXJcLWFib3V0Owor6aCLIDwgdG9cLWNhcmVcLWZvcjsKK+mAj+aYjiA8IHRyYW5zcGFyZW50Owor5Yqb5ZyWIDwgdHJ5XC1oYXJkXC10bzsKK+acieeUn+S7peS+hiA8IHNpbmNlXC1iaXJ0aDsKK+meqyA8IGludGVycm9nYXRlOwor6LKd5Yqg54i+5rmWIDwgbGFrZVwtYmFpa2FsOwor5YW456auIDwgY2VsZWJyYXRpb247CivliJHmnJ8gPCBwcmlzb25cLXRlcm07Civnsr7nsKEgPCB0b1wtc2ltcGxpZnk7CivlkozlubPmnIPoq4cgPCBwZWFjZVwtdGFsa3M7CivoirHojLYgPCBzY2VudGVkXC10ZWE7CivmlaPkvYggPCBkaXNzZW1pbmF0ZTsKK+ewv+iomCA8IGJvb2trZWVwaW5nOwor5aSq5bmz5rSL6YCx6YKKIDwgcGFjaWZpY1wtcmltOwor6Ke45oCSIDwgcHJvdm9jYXRpb247CivmlKrlkowgPCB0b1wtbWl4XC1cKHVwXCk7CivpgLHlubQgPCBhbm5pdmVyc2FyeTsKK+e1leacmyA8IGRlc3BlcmF0aW9uOwor5pWX5LuXIDwgbG9zdFwtYmF0dGxlOwor5LiN6K6K5YO55qC8IDwgZml4ZWRcLXByaWNlOwor6ZCmIDwgY2FsaWZvcm5pdW07CivntZDmnZ8gPCB0ZXJtaW5hdGlvbjsKK+eEoeaEjyA8IGluYWR2ZXJ0YW50Owor6Y+7IDwgcGhvc3Bob25pdW07CivnlLfmnIvlj4sgPCBtYWxlXC1mcmllbmQ7Civnm7jmr5QgPCBjb21wYXJlZFwtdG87CivopobmspIgPCBhbm5paGlsYXRlZDsKK+eZveearuabuCA8IHdoaXRlXC1wYXBlcjsKK+mNkCA8IGFcLWhlYWRzdGFsbDsKK+ecieaioiA8IHRpcFwtb2ZcLWJyb3c7CivliIfmj5sgPCB0b1wtY3V0XC1vdmVyOwor57+76K2v6ICFIDwgaW50ZXJwcmV0ZXI7Civlhannmb4gPCB0d29cLWh1bmRyZWQ7CivlpbPnubzmib/kurogPCBpbmhlcml0cmVzczsKK+WBh+ioreiqnuawoyA8IHN1Ymp1bmN0aXZlOwor5Zyw5b+D5ZC45YqbIDwgZ3Jhdml0YXRpb247CivphrkgPCBzdHJvbmdcLXdpbmU7CivphpMgPCBzYWx0ZWRcLW1lYXQ7CivkuI3ms6jmhI8gPCB0aG91Z2h0bGVzczsKK+ipleWDuSA8IHRvXC1ldmFsdWF0ZTsKK+mFjyA8IG1pbGxldFwtd2luZTsKK+S/neS4jeS9jyA8IG1vc3RcLWxpa2VseTsKK+W0qeijgiA8IGJ1cnN0XC1hcGFydDsKK+W3tOWTiOmmrCA8IHRoZVwtYmFoYW1hczsKK+a/gOWFieS6jOalteeuoSA8IGxhc2VyXC1kaW9kZTsKK+eZvOmAgeWZqCA8IHRyYW5zbWl0dGVyOwor5Yqg5LulIDwgaW5cLWFkZGl0aW9uOwor5oyJ6YiVIDwgcHVzaFwtYnV0dG9uOwor6L+KIDwgdG9cLWdvXC1yb3VuZDsKK+WgseaHiSA8IHJldHJpYnV0aW9uOwor5bm+5bm0IDwgYVwtZmV3XC15ZWFyczsKK+ebvOacmyA8IHRvXC1ob3BlXC1mb3I7Civpmorlk6EgPCB0ZWFtXC1tZW1iZXI7CivooYzouaQgPCB3aGVyZWFib3V0czsKK+aUr+S7mCA8IHBheVwtXChtb25leVwpOwor56ys5LiA56ugIDwgY2hhcHRlclwtb25lOwor6YGL6LKo6aas6LuKIDwgY2FyZ29cLXdhZ29uOwor6KGo6KqeIDwgcHJlZGljYXRpdmU7CivovKYgPCBhXC1oYW5kXC1jYXJ0Owor6Ki75YaKIDwgdG9cLXJlZ2lzdGVyOwor6ZmE5bGsIDwgc3Vib3JkaW5hdGU7CivpgKPnkrDlnJYgPCBjb21pY1wtc3RyaXA7Civlgb3ou40gPCBwdXBwZXRcLWFybXk7CivlhKrnp4AgPCBvdXRzdGFuZGluZzsKK+i0lyA8IGNvdW50ZXJmZWl0Owor6LKYIDwgdGhlXC1wYW50aGVyOwor6auU6LK8IDwgY29uc2lkZXJhdGU7CivosaYgPCBhXC13aWxkXC1ib2FyOwor6LGYIDwgYVwtc21hbGxcLXBpZzsKK+Wft+aUvyA8IGJlXC1pblwtcG93ZXI7CivlnKjlnLDkuIsgPCB1bmRlcmdyb3VuZDsKK+esrOS4ieS4lueVjCA8IHRoaXJkXC13b3JsZDsKK+mtmuervyA8IGZpc2hpbmdcLXJvZDsKK+eEoemXnOe3iuimgSA8IGluZGlmZmVyZW50Owor5biM5pybIDwgcm9cLXdpc2hcLWZvcjsKK+e0hOacgyA8IGFwcG9pbnRtZW50Owor6auU6KqNIDwgcmVhbGl6YXRpb247Civlubjlpb0gPCBmb3J0dW5hdGVseTsKK+aOiOeyiSA8IHBvbGxpbmF0aW9uOwor6KexIDwgdGFydGFyXC1ob3JuOwor6KS1IDwgYnJpZGFsXC12ZWlsOwor6KO954mHIDwgbW92aWVtYWtpbmc7CivlgrPnnJ/mqZ8gPCBmYXhcLW1hY2hpbmU7CivmqZ/mnIMgPCBvcHBvcnR1bml0eTsKK+mXnOaKvCA8IHB1dFwtaW5cLWphaWw7CivlpKfkvr/kub7nh6UgPCBjb25zdGlwYXRlZDsKK+ijneeUsui7iiA8IGFybW9yZWRcLWNhcjsKK+igiyA8IGNhdGVycGlsbGFyOwor5LiN5YGP5LiN5YCaIDwgZXZlblwtaGFuZGVkOwor6J+bIDwgYVwtbGFuZFwtY3JhYjsKK+eBjOa6iSA8IHRvXC1pcnJpZ2F0ZTsKK+mAmuWRiiA8IHRvXC1hbm5vdW5jZTsKK+idmyA8IHRoZVwtc293XC1idWc7CivonY0gPCBhXC1jZW50aXBlZGU7CivpqZXpmb0gPCBibGF6aW5nXC1zdW47CivliY3ku7sgPCBwcmVkZWNlc3NvcjsKK+iXmiA8IHdhdGVyXC1wbGFudDsKK+WIhuaVo+azqOaEjyA8IHRvXC1kaXN0cmFjdDsKK+iXhCA8IGVkaWJsZVwtZmVybjsKK+i7n+einyA8IGZsb3BweVwtZGlzazsKK+iTqiA8IHBhcGVyXC1wbGFudDsKK+iTgiA8IGx1Y2t5XC1wbGFjZTsKK+iSrSA8IHRvXC1jdXRncmFzczsKK+iQkCA8IGx1Y2t5XC1wbGFudDsKK+iPoiA8IHRvXC1pbmN1YmF0ZTsKK+eNsuebiuiAhSA8IGJlbmVmaWNpYXJ5Owor5bGP6ZaAIDwgc2NyZWVuXC1kb29yOwor5ouc6KiqIDwgcGF5XC1hXC12aXNpdDsKK+WNiumAj+aYjiA8IHRyYW5zbHVjZW50Owor6ImXIDwgYm93XC1vZlwtanVuazsKK+mAgOWHuiA8IHRvXC13aXRoZHJhdzsKK+aOoeeFpCA8IGNvYWxcLW1pbmluZzsKK+esrOS4gOa1gSA8IGZpcnN0XC1jbGFzczsKK+W5s+WHoSA8IGNvbW1vbnBsYWNlOwor6KyA5q665qGIIDwgbXVyZGVyXC1jYXNlOwor5ous6JmfIDwgcGFyZW50aGVzaXM7Civog5QgPCByb3R0ZW5cLW1lYXQ7CivogoggPCB0b1wtY29tbWVuY2U7CivogaYgPCB0aGVcLWhlYXJpbmc7CivogJEgPCBzcGVjaWFsaXplZDsKK+e+liA8IGFcLWJsYWNrXC1yYW07CivnjY7lrbjph5EgPCBzY2hvbGFyc2hpcDsKK+e9sSA8IGZpc2hpbmdcLW5ldDsKK+a7sumAjyA8IHRvXC1wZXJtZWF0ZTsKK+e9oCA8IGFuaW1hbFwtdHJhcDsKK+e9kiA8IHJhZGljYWxcLTEyMjsKK+WBt+iBvSA8IHRvXC1ldmVzZHJvcDsKK+WHuuWFtSA8IHNlbmRcLXRyb29wczsKK+WfueWcnyA8IHRvXC1lYXJ0aFwtdXA7CivplovmiLAgPCBzdGFydFwtYVwtd2FyOwor5YiG5L2IIDwgZGlzdHJpYnV0ZWQ7Civov7fkurogPCBmYXNjaW5hdGluZzsKK+S4jeWLleeUoiA8IHJlYWxcLWVzdGF0ZTsKK+ezoiA8IHJpY2VcLXNuYWNrczsKK+WHuuS+hiA8IHRvXC1jb21lXC1vdXQ7Civkv6HpgZMgPCBzaWduYWxcLXBhdGg7CivllZ/npLrpjIQgPCByZXZlbGF0aW9uczsKK+ewuSA8IHRhbGxcLWJhbWJvbzsKK+ewtSA8IGZpbmVcLWJhbWJvbzsKK+ewsCA8IGJhbWJvb1wtcmFmdDsKK+mtlOazlSA8IGVuY2hhbnRtZW50Owor55Sz6KuLIDwgYXBwbHlcLVwoZm9yXCk7CivnrKzkuInmlrkgPCB0aGlyZFwtcGFydHk7CivnrakgPCBiYW1ib29cLXBpcGU7CivnrYogPCBiYW1ib29cLXJvcGU7CivnrYcgPCBiYW1ib29cLW5hbWU7Civot5Hou4ogPCByYWNpbmdcLWJpa2U7CivnrK8gPCBhXC1iaXJkXC1jYWdlOwor6KGo6JKZ5a2QIDwgd2F0Y2hcLWdsYXNzOwor5pO65p625a2QIDwgcHV0XC1vblwtYWlyczsKK+equCA8IGZhaW50XC1zb3VuZDsKK+S4jeeiuuWumiA8IHVuY2VydGFpbnR5Owor5YWr5bm0IDwgZWlnaHRcLXllYXJzOwor56m1IDwgZGVlcFwtaG9sbG93Owor6LaF57Sa5biC5aC0IDwgc3VwZXJtYXJrZXQ7Civno7kgPCBzdG9uZVwtd2VkZ2U7CivnopQgPCBcLzJcLXByXC1zdG9uZTsKK+exjOasviA8IGZ1bmRyYWlzaW5nOwor5Z+f5ZCNIDwgZG9tYWluXC1uYW1lOwor56CDIDwgd2hpdGVcLXN0b25lOwor5561IDwgdG9cLXN0YXJlXC1hdDsKK+WPpOWFuOa0viA8IGNsYXNzaWNpc3RzOwor5YWr5a2XIDwgY2hhcmFjdGVyXC04Owor55u45Ly8IDwgdG9cLXJlc2VtYmxlOwor5oyq55SoIDwgdG9cLWVtYmV6emxlOwor5Y+v6KGM5oCnIDwgZmVhc2liaWxpdHk7CivnnKUgPCBleWVcLXNvY2tldHM7CivnnJEgPCBzdW5rZW5cLWV5ZXM7CivnnIogPCBkaW1cLXNpZ2h0ZWQ7CivnmJogPCB0b1wtaGljY291Z2g7Civnl7MgPCBwb2NrXC1tYXJrZWQ7Civnl60gPCBtZW5vcnJoYWdpYTsKK+eXgyA8IGluZGlnZXN0aW9uOwor6KOd5omuIDwgZHJlc3NcLXVwXC1hczsKK+WfjuWNgCA8IGNpdHlcLXByb3BlcjsKK+a6nemAmiA8IGNvbW11bmljYXRlOwor54K65LqGIDwgaW5cLW9yZGVyXC10bzsKK+eZveWuriA8IHdoaXRlXC1ob3VzZTsKK+WQiOazleWMliA8IHRvXC1sZWdhbGl6ZTsKK+WGoOWGlSA8IHJveWFsXC1jcm93bjsKK+ePvSA8IGphZGVcLXRhYmxldDsKK+WDj+aooyA8IHByZXNlbnRhYmxlOwor5ben5ZCIIDwgY29pbmNpZGVuY2U7Civni6IgPCBhbmltYWxcLW5hbWU7CivmiLDou4ogPCB3YXJcLWNoYXJpb3Q7CivmjqLnhafnh4ggPCBzZWFyY2hsaWdodDsKK+WuieWvp+eJhyA8IG1lcHJvYmFtYXRlOwor55m95aScIDwgd2hpdGVcLW5pZ2h0Owor5piv5LiN5pivIDwgaXNcLW9yXC1pc24nJ3Q7CivoirHlupcgPCBmbG93ZXJcLXNob3A7Civkvr/opr0gPCBicmllZlwtZ3VpZGU7Civnh5YgPCByZWhlYXRcLWZvb2Q7CivoiIrniYggPCBvbGRcLXZlcnNpb247CivlpJrlt6XlmaggPCBtdWx0aXBsZXhlcjsKK+eFnyA8IGJyaWdodFwtcm9vbTsKK+eFjyA8IGRyeVwtYnlcLWZpcmU7CivnhYYgPCByYWdpbmdcLWZpcmU7Civlm6DmraQgPCB0aGF0XC1pc1wtd2h5Owor5r2+IDwgY2xlYXJcLXdhdGVyOwor5Yue5YuV5YqbIDwgbGFib3JcLWZvcmNlOwor6Kqe6KiA5a24IDwgbGluZ3Vpc3RpY3M7CivmvaAgPCB0b1wtYmxvd1wtb3V0Owor5ru3IDwgdGhpY2tcLWdyYXZ5Owor5YiG5pyf5LuY5qy+IDwgaW5zdGFsbG1lbnQ7CivnkZ7pm6ogPCB0aW1lbHlcLXNub3c7CivmuJ8gPCBub3RcLWZsb3dpbmc7CivlhazlhYMgPCBcKHllYXJcKVwtYVwuZFwuOwor5rWhIDwgYnVyc3RcLWZvcnRoOwor5bm46YGL5YWSIDwgYVwtbHVja3lcLWd1eTsKK+aysCA8IHRvXC1sZXRcLWRyb3A7CivoibLmg4UgPCBwb3Jub2dyYXBoeTsKK+acrOizquS4iiA8IGVzc2VudGlhbGx5Owor5Zyw5LiL5rC0IDwgZ3JvdW5kd2F0ZXI7CivnlLPoq4vmm7ggPCBhcHBsaWNhdGlvbjsKK+ausCA8IGFuXC1hYm9ydGlvbjsKK+eZveWIgyA8IG5ha2VkXC1zd29yZDsKK+eZvOWHuiA8IHRvXC1zZW5kXC1vdXQ7CivmlZnogrLmgKcgPCBpbnN0cnVjdGl2ZTsKK+WwseiBtyA8IHRha2VcLW9mZmljZTsKK+e5vOaJv+asiiA8IGluaGVyaXRhbmNlOwor5qeiIDwgYVwtaGFyZFwtd29vZDsKK+aLlOeHnyA8IHN0cmlrZVwtY2FtcDsKK+aKiuepqSA8IHRydXN0d29ydGh5Owor5qKYIDwgYmFtYm9vXC10dWJlOwor5qKWIDwgYVwtcGFsbVwtdHJlZTsKK+aihCA8IGFcLXNvZnRcLXdvb2Q7CivkuJbnlYzosr/mmJMgPCB3b3JsZFwtdHJhZGU7CivoiJLmnI0gPCBjb21mb3J0YWJsZTsKK+aYnCA8IHRvXC1vcGVuXC1vdXQ7CivmmIkgPCBicmlnaHRcLWRhd247Civml4kgPCB0b1wtc3RhdGVcLXRvOwor5omL57qMIDwgZm9ybWFsaXRpZXM7CivmjInmnJ8gPCBvblwtc2NoZWR1bGU7CivmkY4gPCB0b1wtc3RyYW5nbGU7CivmlZflrrblrZAgPCBzcGVuZHRocmlmdDsKK+i4qeawtCA8IHRyZWFkXC13YXRlcjsKK+Wuo+iogCA8IGRlY2xhcmF0aW9uOwor6I6O5aOr5q+U5LqeIDwgc2hha2VzcGVhcmU7CivlsYDpmZDmgKcgPCBsaW1pdGF0aW9uczsKK+aFiSA8IHRvXC1icmluZ1wtdXA7CivllK7osqjlk6EgPCBzYWxlc3BlcnNvbjsKK+WPr+WwiuaVrCA8IHJlc3BlY3RhYmxlOwor5YG35oe2IDwgdG9cLWdvb2ZcLW9mZjsKK+m8u+mfsyA8IG5hc2FsXC1zb3VuZDsKK+mdnuaVuOWtlyA8IG5vblwtbnVtZXJpYzsKK+W+uyA8IGFcLXdpZGVcLXJvb207Civlm7DlooMgPCBwcmVkaWNhbWVudDsKK+eIhuexs+iKsSA8IHB1ZmZlZFwtcmljZTsKK+S4ieWNgeWkqSA8IHRoaXJ0eVwtZGF5czsKK+a7sua/viA8IHBlcmNvbGF0aW9uOwor5bywIDwgZW5kc1wtb2ZcLWJvdzsKK+Wbm+WIhuS5i+S4gCA8IG9uZVwtcXVhcnRlcjsKK+eXheWuuSA8IHNpY2tseVwtbG9vazsKK+aIkOe4viA8IHBlcmZvcm1hbmNlOwor5Lq66ZaTIDwgbWFuJydzXC13b3JsZDsKK+err+ermSA8IGVuZFwtc3RhdGlvbjsKK+iMheWxi+mggiA8IHRoYXRjaFwtcm9vZjsKK+ihjeWwhCA8IGRpZmZyYWN0aW9uOwor5bSqIDwgcm9ja3lcLXBlYWtzOwor5Zue5aCxIDwgXChpblwpXC1yZXR1cm47CivkuInljYHlm5sgPCB0aGlydHlcLWZvdXI7CivlsbAgPCBkaXNvYmVkaWVudDsKK+WxnSA8IHN0cmF3XC1zaG9lczsKK+WwnCA8IGFcLWNoaWxkXC10b3k7CivlmajlrpjmjZDnjbvogIUgPCBvcmdhblwtZG9ub3I7CivoqIrmoYblgrPpgIEgPCBmcmFtZVwtcmVsYXk7CivmgKfkvLTkvrYgPCBzZXhcLXBhcnRuZXI7CivlrJQgPCBiYWJ5XC1yYWJiaXQ7CivmiJbnqLEgPCBhbHNvXC1jYWxsZWQ7CivkubPnmb3oibIgPCBtaWxreVwtd2hpdGU7Civnlavmj5LlnJbogIUgPCBpbGx1c3RyYXRvcjsKK+esrOS6jOasoeS4lueVjOWkp+aIsCA8IHdvcmxkXC13YXJcLTI7Civpq5jlo5MgPCBoaWdoXC1oYW5kZWQ7Civlob8gPCBzbWFsbFwtbW91bmQ7Civku7Loo4EgPCBhcmJpdHJhdGlvbjsKK+WgiiA8IHdoaXRlXC1lYXJ0aDsKK+WenSA8IGRpbGFwaWRhdGVkOwor5Z6UIDwgdG9cLXJlc3RyYWluOwor5YC85b6XIDwgdG9cLWJlXC13b3J0aDsKK+eVsOW4uCA8IGV4Y2VwdGlvbmFsOwor6ZG95a2UIDwgYm9yZVwtYVwtaG9sZTsKK+iTi+eEtuaApyA8IHByb2JhYmlsaXR5Owor5paH5Lu25pyN5YuZ5ZmoIDwgZmlsZVwtc2VydmVyOwor55W25bGAIDwgYXV0aG9yaXRpZXM7Civllo4gPCBhXC13cnlcLW1vdXRoOwor6auY5ZSxIDwgc2luZ1wtbG91ZGx5Owor6LaK5Y2X5oiw54itIDwgdmlldG5hbVwtd2FyOwor5ZS5IDwgdG9cLXNtaWxlXC1hdDsKK+S7i+ipniA8IHByZXBvc2l0aW9uOwor5Y+v6IO95oCnIDwgcG9zc2liaWxpdHk7CivlkoUgPCB0b1wtc3BpdFwtb3V0Owor6Iie5YqHIDwgZGFuY2VcLWRyYW1hOwor5Y+7IDwgcGxhY2VcLW5hbWVzOwor5Y6+IDwgbGlnaHRseVwtdGFwOwor5YKR5Ye6IDwgaWxsdXN0cmlvdXM7CivnlobloLQgPCBiYXR0bGVmaWVsZDsKK+eZu+WxseWutiA8IG1vdW50YWluZWVyOwor5L+h5pyNIDwgdG9cLWNvbnZpbmNlOwor5YyvIDwgYVwtY29uY291cnNlOwor5YugIDwgam9pblwtZm9yY2VzOwor54Sh5omA5LiN5ZyoIDwgb21uaXByZXNlbnQ7CivlirwgPCBiZVwtZGlzY3JlZXQ7CivohL7msKMgPCB0ZW1wZXJhbWVudDsKK+S4jeWHuuaJgOaWmSA8IGFzXC1leHBlY3RlZDsKK+S4ium9kiA8IHVwcGVyXC10ZWV0aDsKK+aFsOiXiSA8IGNvbnNvbGF0aW9uOwor5YmmIDwgdG9cLWNhc3RyYXRlOwor5p2/6KaPIDwgcGxhdGVcLWdhdWdlOwor5YepIDwgd2ludHJ5XC13aW5kOwor55eF5Lq6IDwgc2lja1wtcGVyc29uOwor6ZGS5a6aIDwgdG9cLWFwcHJhaXNlOwor5LiW55WM5ZKM5bmzIDwgd29ybGRcLXBpZWNlOwor5YKZ5Lu2IDwgc3BhcmVcLXBhcnRzOwor5ZOy5a245a62IDwgcGhpbG9zb3BoZXI7CivnlJ/miJAgPCBiZVwtcHJvZHVjZWQ7Civkvr/mobYgPCBjaGFtYmVyXC1wb3Q7Civlgo8gPCB0b1wtd2FyZFwtb2ZmOwor6ISr5rCnIDwgZGVveGlkYXRpb247Civmg4XpoZggPCB3aWxsaW5nbmVzczsKK+eUn+aFiyA8IHdheVwtb2ZcLWxpZmU7CivmjIflh7ogPCB0b1wtaW5kaWNhdGU7Civkv5sgPCBtYWtlXC1lZmZvcnQ7Civns7vliJfniYcgPCBmaWxtXC1zZXJpZXM7CivpmL/lr4zmsZcgPCBhZmdoYW5pc3RhbjsKK+S9uSA8IGRlcGVuZFwtdXBvbjsKK+a0m+adieejryA8IGxvc1wtYW5nZWxlczsKK+aJgeahgyA8IGFsbW9uZFwtdHJlZTsKK+i3i+aJiCA8IGRvbWluZWVyaW5nOwor5LaqIDwgc2hhcnBcLXRlZXRoOwor6Zmw5ra86JmVIDwgc2hhZHlcLXBsYWNlOwor5L+u5b6pIDwgcmVzdG9yYXRpb247CivktbQgPCBibGFja1wtY29sb3I7CivktbMgPCBsaWdodFwtYmxhY2s7CivktakgPCBkYXJrXC15ZWxsb3c7CivnrYblv4MgPCBwZW5jaWxcLWxlYWQ7CivksrsgPCB0aGVcLXN3YWxsb3c7Civkv6Hmga8gPCBpbmZvcm1hdGlvbjsKK+SxvSA8IHRoZVwtcG9tZnJldDsKK+SxuiA8IGFcLW1hbGVcLWNyYWI7CivksZIgPCBzYWx0ZWRcLWZpc2g7CivovYnkvobovYnljrsgPCByb3ZlXC1hcm91bmQ7CivkuI3poacgPCBpblwtc3BpdGVcLW9mOwor5K6YIDwgeW91bmdcLWhvcnNlOwor56uL5rOVIDwgbGVnaXNsYXRpb247CivlsI3mlrkgPCBjb3VudGVycGFydDsKK+epuueZvSA8IGJsYW5rXC1zcGFjZTsKK+eUt+WlsyA8IG1hbGVcLWZlbWFsZTsKK+SrsyA8IGh1bWFuXC1za3VsbDsKK+SrsCA8IHNwYXJzZVwtaGFpcjsKK+SrrSA8IGJhbGRcLWhlYWRlZDsKK+mHnemLkuebuOWwjSA8IHRpdFwtZm9yXC10YXQ7Civkq4QgPCBiZXR0ZXJcLXRoYW47CivkqrQgPCB0aGVcLW9jY2lwdXQ7CivkvLjnuK7mgKcgPCBmbGV4aWJpbGl0eTsKK+SqhCA8IGdyZWF0XC1ibGF6ZTsKK+SpuyA8IHRvXC1iZVwtY2hpZWY7CivkqZwgPCBkZXNjZW5kYW50czsKK+mWieacg+eliOemsSA8IGJlbmVkaWN0aW9uOwor5KixIDwgc3BpbHRcLXdhdGVyOwor5KeTIDwgYVwtYmlnXC1tb3VuZDsKK+SmtyA8IHRvXC1zdHJ1Z2dsZTsKK+eVtuWBmiA8IHRvXC10cmVhdFwtYXM7CivkppggPCBhXC10aHJlc2hvbGQ7CivplonlhYPpn7MgPCBjbG9zZVwtdm93ZWw7CivkpYAgPCB0b1wtcHVsbFwtb3V0Owor5KStIDwgdG9cLW9ybmFtZW50Owor5KSFIDwgc291dGhlcndvb2Q7Civot5vlrZAgPCBsYW1lXC1wZXJzb247CivkuI3lj6/kvLDph48gPCBpbmVzdGltYWJsZTsKK+S6lOiQrCA8IDUwXC10aG91c2FuZDsKK+SgnSA8IHRvXC1zdGFuZFwtdXA7CivkoI0gPCBhdFwtdGhlXC1mZWV0Owor5pyA5aSn5YyWIDwgdG9cLW1heGltaXplOwor5J+FIDwgdG9cLWdvXC1haGVhZDsKK+SfgSA8IGFcLWZvb3RcLXJhY2U7Civknr0gPCB0b1wtbGllXC1mbGF0Owor5J6oIDwgaGFsZlwtYVwtcGFjZTsKK+SehCA8IHRvXC1kaXNwZXJzZTsKK+SdgCA8IGdhcmRlblwtcGVhczsKK+ScsCA8IGRlZXBcLXZhbGxleTsKK+S/neWtmCA8IHRvXC1jb25zZXJ2ZTsKK+SclyA8IGFuZ3J5XC13b3JkczsKK+SchiA8IGhhc3R5XC13b3JkczsKK+SbmCA8IHRvXC10aGlua1wtb2Y7CivkmrMgPCBkb1wtbm90XC1rbm93Owor5JqyIDwgdG9cLWxhdWdoXC1hdDsKK+a3mOelniA8IHRyb3VibGVzb21lOwor5Jm+IDwgdG9cLXdhaXRcLWZvcjsKK+SZsSA8IGFcLWxvbmdcLWNvYXQ7CivkmbAgPCBuZXdcLWZlYXRoZXI7CivkmYIgPCBzaG9ydFwtcGFudHM7CivnrYbloqggPCBwZW5cLWFuZFwtaW5rOwor5JeWIDwgdGhlXC1yYWluYm93Owor6JaR6aSFIDwgZ2luZ2VyYnJlYWQ7CivnrKzljYHkuIMgPCBzZXZlbnRlZW50aDsKK+SVuCA8IHdoZWF0XC1zdHJhdzsKK+a6q+W6piA8IHRlbXBlcmF0dXJlOwor5JS/IDwgbHVzaFwtZ3Jvd3RoOwor6LeR5aOYIDwgYmFzZXJ1bm5pbmc7CivplovmlL7ns7vntbEgPCBvcGVuXC1zeXN0ZW07CivonJzmoYMgPCBob25leVwtcGVhY2g7CivpkZLkuo4gPCBpblwtbGlnaHRcLW9mOwor5JKLIDwgYWlyXC1jdXJyZW50Owor5Y+v6amaIDwgYXN0b25pc2hpbmc7CivmnInpmZDlhazlj7ggPCBjb3Jwb3JhdGlvbjsKK+epuumWk+aOoua4rCA8IHNwYWNlXC1wcm9iZTsKK+SQmiA8IGdvb2RcLWdyYWNlczsKK+SPtiA8IHRoZVwtc3RvbWFjaDsKK+SPlCA8IHRvXC1lYXRcLW1lYXQ7Civkvr/lrpwgPCBpbmV4cGVuc2l2ZTsKK+WTsuWtuOS4iiA8IHBoaWxvc29waGljOwor5ZCm5pyJ5pWIIDwgaW5lZmZpY2llbnQ7CivkuI3ov60gPCBjYW5ub3RcLWNvcGU7CivljJfmnJ3prq4gPCBub3J0aFwta29yZWE7CivkjKogPCB0b1wtY29udGludWU7CivkjKYgPCBncmVlblwtY29sb3I7CivlkInniL7lkInmlq/mlq/lnaYgPCBraXJnaGl6c3RhbjsKK+aJi+WvqyA8IGhhbmR3cml0aW5nOwor5IqtIDwgdG9cLW92ZXJ0dXJuOwor5IqrIDwgY29hcnNlXC1yaWNlOwor5IqiIDwgdGhpY2tcLWZsdWlkOwor5IqTIDwgdG9cLXBhc3RlXC11cDsKK+S4i+i8iSA8IHRvXC1kb3dubG9hZDsKK+SJnSA8IGJhbWJvb1wtd2FyZTsKK+SIuCA8IGFcLWJpZ1wtY2hlc3Q7CivouI/kuIogPCBzZXRcLWZvb3RcLW9uOwor5IazIDwgZmFyXC1kaXN0YW50Owor5IaYIDwgYWN1cHVuY3R1cmU7CivkhpYgPCBhXC1iaWdcLWhvdXNlOwor5IWEIDwgbG9uZ1wtZ3JhaW5zOwor5IS9IDwgY29tbW9uXC1yaWNlOwor5IOtIDwgYVwtc3RvbmVcLWJveDsKK+eSsOW9oiA8IHJpbmdcLXNoYXBlZDsKK+SCsSA8IHRvXC13ZWFyXC1vdXQ7CivkgpMgPCByZWd1bGF0aW9uczsKK+SBuyA8IHByZXR0eVwtZXllczsKK+SBtyA8IGJyaWdodFwtZXllczsKK+SBsSA8IGhvbGxvd1wtZXllZDsKK+S9iOaZryA8IFwoc3RhZ2VcKVwtc2V0Owor5ICCIDwgYVwtYmlnXC1iYXNpbjsKK+WfuuekjuWVj+mhjCA8IGJhc2ljXC1pc3N1ZTsKK+O/oyA8IHdoaXRlXC1jb2xvcjsKK+O/mCA8IHRvXC1nZXRcLXNpY2s7CivjvrogPCBleWVcLWRpc2Vhc2U7Civjvp0gPCB0b1wtbGVha1wtb3V0Owor6ai35YuVIDwgZGlzdHVyYmFuY2U7CivjvoggPCBodW5jaGJhY2tlZDsKK+O+gyA8IGh1bXBcLWJhY2tlZDsKK+O9qiA8IHBhZGR5XC1maWVsZDsKK+aCsuingCA8IHBlc3NpbWlzdGljOwor5Y+j6aaZ57OWIDwgY2hld2luZ1wtZ3VtOwor47yYIDwgb2ZcLW1vdW50YWluOwor47yTIDwgbWVsb25cLXNlZWRzOwor6KW/5LmD5bGxIDwgbW91bnRcLXNpbmFpOwor47uTIDwgYVwtZmluZVwtamFkZTsKK+e+juiyjCA8IGdvb2Rsb29raW5nOwor6bq76JelIDwgYW5hZXN0aGV0aWM7CivjuaAgPCBhXC1zbWFsbFwtYmlnOwor6YKB6Zi/5a+G54GYIDwgbWlhbWlcLWJlYWNoOwor47igIDwgdGhpY2tcLXN0aWNrOwor5bCP5Z6LIDwgc21hbGxcLXNjYWxlOwor47WkIDwgdG9cLW92ZXJmbG93Owor47SYIDwgdG9cLW9vemVcLW91dDsKK+mHkeWxrOadvyA8IG1ldGFsXC1wbGF0ZTsKK+OysCA8IGFcLWhhaXJ5XC1kb2c7CivjsLIgPCB0b1wtYmxvd1wtb2ZmOwor46+IIDwgc21hbGxcLXRyZWVzOwor6aGM6KmeIDwgaW5zY3JpcHRpb247Civjrp0gPCBhbmdsZVwtc3RlZWw7CivjrbQgPCB0aGVcLW9zY2luZXM7CivjrY4gPCBhXC10YWxsXC10cmVlOwor6Laj5ZGzIDwgdG9cLWludGVyZXN0Owor5L+h5LuwIDwgZmlybVwtYmVsaWVmOwor46ypIDwgYVwtdGlueVwtc3RhcjsKK+iCoeadsSA8IHN0b2NraG9sZGVyOwor6Y6u5aOTIDwgc3VwcHJlc3Npb247Civjq5ggPCBkaXNhcHBlYXJlZDsKK+adv+eJmSA8IGZyb250XC10b290aDsKK+azs+iksiA8IHN3aW1cLXRydW5rczsKK+WQjOizqiA8IGhvbW9nZW5lb3VzOwor46mFIDwgdG9cLWRyYXdcLW91dDsKK+WFqeeZvuiQrCA8IHR3b1wtbWlsbGlvbjsKK+OotSA8IHRvXC1jdXRcLWF3YXk7CivjqLQgPCB0b1wtdHVybm92ZXI7CivjqJUgPCB0b1wtc2hvdWxkZXI7CivnkrDlooMgPCBlbnZpcm9ubWVudDsKK+OnlCA8IHRvXC1kaXN0dXJiZTsKK+S/rueQhuW7oCA8IHJlcGFpclwtc2hvcDsKK+OmkiA8IHRvXC1kZWNlaXZlZDsKK+OkoSA8IHRvXC1zdXJwcmlzZTsKK+OklSA8IG1lbGFuY2hvbG95Owor46SBIDwgdG9cLWRpc2dyYWNlOwor46O+IDwgZG9cLW5vdFwtY2FyZTsKK+OjtSA8IHRvXC1ydW5cLWF3YXk7Civjo6UgPCB0b1wtc3RvcmVcLXVwOwor46KTIDwgdG9cLXNlcGFyYXRlOwor5p6c5rGBIDwgZnJ1aXRcLWp1aWNlOwor6ICV55WcIDwgZmFybVwtYW5pbWFsOwor5aKe6ZW3546HIDwgZ3Jvd3RoXC1yYXRlOwor6YeN6L+UIDwgcmV0dXJuXC1cKHRvXCk7CivkuJ/oh4kgPCBodW1pbGlhdGlvbjsKK+OdtCA8IGFcLXJvdW5kXC1vZmY7CivjnZQgPCBkZWVwXC1ib3R0b207CivmiJHlnIsgPCBvdXJcLWNvdW50cnk7CivjnKMgPCBhXC1sYXN0XC1uYW1lOwor45yOIDwgc2xhdmVcLWdpcmxzOwor45uRIDwgdGhyZWVcLXdvbWVuOwor45q+IDwgdG9cLWhhdmVcLWZ1bjsKK+eOu+aEj+iAs+WumuW+iyA8IGJveWxlJydzXC1sYXc7CivjmLYgPCBhXC1oZW5cLXJvb3N0Owor6Lqr5b+D54i95b+rIDwgcmVmcmVzaG1lbnQ7CivjmKUgPCB0b1wtaW52ZWlnbGU7CivkvYjlsYAgPCBhcnJhbmdlbWVudDsKK+S7luWAkemDvSA8IGFsbFwtb2ZcLXRoZW07CivororpgJogPCBiZVwtZmxleGlibGU7CivpvLvmtpUgPCBuYXNhbFwtbXVjdXM7Civjlr0gPCB0b1wtY2FsbFwtb3V0Owor6LK45qy+IDwgXChiYW5rXClcLWxvYW47CivjlpEgPCB0b1wtc2hvdXRcLWF0Owor45S8IDwgdG9cLWZpdFwtaW50bzsKK+OUtiA8IGFcLXNtYWxsXC1jdXA7CivjlI8gPCB0b1wtY3V0XC1vcGVuOwor45OpIDwgaG9ybmVkXC1oYWlyOwor5rqW5YKZIDwgcHJlcGFyYXRpb247CivjkqggPCBhblwtaW1tb3J0YWw7CivlronlurcgPCBnb29kXC1oZWFsdGg7CivpoJDoqIggPCB0b1wtZm9yZWNhc3Q7Civnpa3lj7jmrIrooZMgPCBwcmllc3RjcmFmdDsKK+mhnuS8vOm7niA8IHJlc2VtYmxhbmNlOwor6YeP6KmeIDwgbWVhdXJlXC13b3JkOwor6ZuZ5Lq65oi/IDwgZG91YmxlXC1yb29tOwor5ZCN6JGXIDwgbWFzdGVycGllY2U7Civnvo7ooZPppKggPCBhcnRcLWdhbGxlcnk7Civku7vmhI8gPCBhcmJpdHJhcmlseTsKK+WuieWutiA8IHNldHRsZVwtZG93bjsKK+mlkuaBlSA8IGZvcmdpdmVuZXNzOwor5a6H5a6ZIDwgb3V0ZXJcLXNwYWNlOwor55Ge5aOrIDwgc3dpdHplcmxhbmQ7CivlnKjpgJnmnJ/plpMgPCBkdXJpbmdcLXRpbWU7Civlloflj60gPCBsb3Vkc3BlYWtlcjsKK+e0hOS8r+iomCA8IGJvb2tcLW9mXC1qb2I7CivnhKHms5Xlv43lj5cgPCBpbnRvbGVyYWJsZTsKK+aCsuWWnOWKhyA8IHRyYWdpY29tZWR5Owor6aeB5YCSIDwgZGVtb2xpc2hcLXNiOwor5Y2K5bCB5bu6IDwgc2VtaVwtZmV1ZGFsOwor5rW05rGgIDwgcHVibGljXC1iYXRoOwor5Y+N5YuV5YiG5a2QIDwgcmVhY3Rpb25hcnk7Civlr6bos6rmgKcgPCBzdWJzdGFudGl2ZTsKK+iuiuWjk+WZqCA8IHRyYW5zZm9ybWVyOwor5L2/55So5pa55L6/IDwgZWFzeVwtdG9cLXVzZTsKK+WllOmmsyA8IHJ1blwtcXVpY2tseTsKK+ePvuW5tCA8IGN1cnJlbnRcLWFnZTsKK+eEoeazleW9ouWuuSA8IHVuc3BlYWthYmxlOwor6JiL5p6c5rGBIDwgYXBwbGVcLWp1aWNlOwor56S656+EIDwgZGVtb25zdHJhdGU7CivkuqTmj5sgPCB0b1wtZXhjaGFuZ2U7Civol6XniakgPCBtZWRpY2FtZW50czsKK+acieWQjOaDheW/gyA8IHN5bXBhdGhldGljOwor5pqX6KiY5YWSIDwgc2VjcmV0XC1tYXJrOwor6YSZ6ZmLIDwgc3VwZXJmaWNpYWw7CivlpJzptq8gPCBuaWdodGluZ2FsZTsKK+mkkOW7syA8IGRpbmluZ1wtaGFsbDsKK+WogeiEhSA8IHRvXC10aHJlYXRlbjsKK+epuuWJjSA8IHVucHJlY2VkZW50Owor6aCQ57SEIDwgcmVzZXJ2YXRpb247CivnorDoposgPCB0b1wtcnVuXC1pbnRvOwor5p+l5Ye6IDwgdG9cLWZpbmRcLW91dDsKK+WNiumCiiA8IGhhbGZcLW9mXC1zdGg7CivmmpfnpLogPCBkcm9wXC1hXC1oaW50Owor5Lqk5b6AIDwgYXNzb2NpYXRpb247CivphY3pgIHogIUgPCBkaXN0cmlidXRvcjsKK+abuOazlSA8IGNhbGxpZ3JhcGh5Owor6YeR6YqA6IqxIDwgaG9uZXlzdWNrbGU7CivlhYPogIHpmaIgPCB1cHBlclwtaG91c2U7CivljZPotoogPCBkaXN0aW5jdGlvbjsKK+iCoeWDuSA8IHN0b2NrXC1wcmljZTsKK+S5neaciCA8IG5pbnRoXC1tb250aDsKK+S4u+asiiA8IHNvdmVyZWlnbnR5Owor5Y+v5oOz5YOPIDwgY29uY2VpdmFibGU7CivlpJrppJggPCBzdXBlcmZsdW91czsKK+iBveWPliA8IGhlYXJcLVwobmV3c1wpOwor5oSf5oCnIDwgc2Vuc2liaWxpdHk7CivllYbkurogPCBidXNpbmVzc21hbjsKK+emgeatoiA8IHRvXC1wcm9oaWJpdDsKK+enieaJvyA8IHRha2VcLW9yZGVyczsKK+WUruWDuSA8IHRvXC1zZWxsXC1mb3I7CivlrIzlqpogPCBmbGlydGF0aW91czsKK+mggeeivCA8IHBhZ2VcLW51bWJlcjsKK+S6pOWqviA8IHRvXC1oYXZlXC1zZXg7CivkuIrmtYEgPCB1cHBlclwtY2xhc3M7Civkv6HnlKjljaEgPCBjcmVkaXRcLWNhcmQ7CivpnLjpgZMgPCBvdmVyYmVhcmluZzsKK+azoueAviA8IGdyZWF0XC13YXZlczsKK+S4jeatoiA8IGluY2Vzc2FudGx5Owor54it6K2wIDwgY29udHJvdmVyc3k7CivkuK3mnbEgPCBtaWRkbGVcLWVhc3Q7CivlpbPnrqHlrrYgPCBob3VzZWtlZXBlcjsKK+S4gOWNg+Wbm+eZvuWEhCA8IDE0MFwtYmlsbGlvbjsKK+S4ueaWuSA8IGZvbGtcLXJlbWVkeTsKK+mHjeeWiiA8IG92ZXJsYXBwaW5nOwor5Lit5pelIDwgY2hpbmFcLWphcGFuOwor6Ieq55Sx6YG45pOH5qyKIDwgZnJlZVwtYWdlbmN5Owor5Zac5q2h5ZC15p62IDwgcXVhcnJlbHNvbWU7CivmnInlrrPnmoQgPCBkZXN0cnVjdGl2ZTsKK+mHjeePviA8IHRvXC1yZWFwcGVhcjsKK+aooeeziumCj+i8ryA8IGZ1enp5XC1sb2dpYzsKK+mdtuiIuSA8IHRhcmdldFwtc2hpcDsKK+WNg+iQrCA8IHRlblwtbWlsbGlvbjsKK+S4gOaciCA8IGZpcnN0XC1tb250aDsKK+eKr+eXhSA8IHRvXC1mYWxsXC1pbGw7CivlkIzmraUgPCBzeW5jaHJvbm91czsKK+WTuuS5syA8IGJyZWFzdFwtZmVlZDsKK+S4u+W8tSA8IHRvXC1hZHZvY2F0ZTsKK+WpmuacnyA8IHdlZGRpbmdcLWRheTsKK+aal+auuiA8IGFzc2Fzc2luYXRlOwor5Li75bitIDwgY2hhaXJwZXJzb247CivljbHnr6QgPCBkZWF0aGx5XC1pbGw7CivkupLli5UgPCBpbnRlcmFjdGl2ZTsKK+WkqeeEtuawoyA8IG5hdHVyYWxcLWdhczsKK+S+m+ihgOiAhSA8IGJsb29kXC1kb25vcjsKK+S4reW5tCA8IG1pZGRsZVwtYWdlZDsKK+eHn+mkiuWTgSA8IG5vdXJpc2htZW50Owor6LKd5LiYIDwgc2hlbGxcLW1vdW5kOwor5oSP5ZCRIDwgZGlzcG9zaXRpb247Civpganmh4nmgKcgPCBzdWl0YWJpbGl0eTsKK+ayiOa+sSA8IHByZWNpcGl0YXRlOwor5aSp5paH5Y+wIDwgb2JzZXJ2YXRvcnk7Civpkb/nn7PloLQgPCByb2NrXC1xdWFycnk7CivlsLHvuY3ogIzoqIAgPCBjb25zaWRlcmluZzsKK+S4ieW5tCA8IHRocmVlXC15ZWFyczsKK/ChvbEgPCBhXC1oaWdoXC1oaWxsOwor5LiK5bGkIDwgdXBwZXJcLWxheWVyOwor5aOv6KeAIDwgc3BlY3RhY3VsYXI7CivmnInpgbjoiInmrIogPCBjb25zdGl0dWVudDsKK+aUv+iuiiA8IGNvdXBcLWQnJ2V0YXQ7CivnpZ7lrbggPCB0aGVvbG9naWNhbDsKK+a4rOmpl+e1kOaenCA8IHRlc3RcLXJlc3VsdDsKK+WQiOW9sSA8IGpvaW50XC1waG90bzsKK+WmgueVqyA8IHBpY3R1cmVzcXVlOwor5LiN5aCqIDwgY2Fubm90XC1iZWFyOwor57WC6bueIDwgZGVzdGluYXRpb247CivniIbnq7kgPCBmaXJlY3JhY2tlcjsKK+euoeWutuiBt+WLmSA8IHN0ZXdhcmRzaGlwOwor5bCP5rG96LuKIDwgY29tcGFjdFwtY2FyOwor54m55qyKIDwgcHJlcm9nYXRpdmU7CivonrrntbLliIAgPCBzY3Jld2RyaXZlcjsKK+eLl+S6pOWqvuiIrCA8IGRvZ2d5XC1zdHlsZTsKK+WIhumboiA8IHRvXC1zZXBlcmF0ZTsKK+WJr+S9nOeUqCA8IHNpZGVcLWVmZmVjdDsKK+emgeS7pCA8IHByb2hpYml0aW9uOwor5LiN5YWNIDwgdW5hdm9pZGFibGU7CivoqpPntIQgPCBob25vclwtYm91bmQ7CivorYnmm7ggPCBjcmVkZW50aWFsczsKK+ayiOaAnSA8IGNvbnRlbXBsYXRlOwor6Kej6YeLIDwgZXhwbGFuYXRpb247CivnpIHls7YgPCByZWVmXC1pc2xhbmQ7Civmpq7njbLoq77osp3niL7njY4gPCBub2JlbFwtcHJpemU7CivkuozljYHlhIQgPCB0d29cLWJpbGxpb247Civov47poqggPCBpblwtdGhlXC13aW5kOwor56e75qSN5oCnIDwgcG9ydGFiaWxpdHk7CivlpoLmraQgPCBpblwtdGhpc1wtd2F5Owor5oKg5LmFIDwgZXN0YWJsaXNoZWQ7CivlsIjmnInlkI3oqZ4gPCBwcm9wZXJcLW5vdW47CivkuIrkuIsgPCB1cFwtYW5kXC1kb3duOwor5LqM5Y2B5LqUIDwgdHdlbnR5XC1maXZlOwor5pyL5q+U54K65aW4IDwgdG9cLWNvbnNwaXJlOwor5pCs5byE5piv6Z2eIDwgc293XC1kaXNjb3JkOwor55qEIDwgcG9zc2Vzc2l2ZTsKK+i+vCA8IGNyb3dkXC1pbnRvOwor6L67IDwgY3Jvc3Nyb2FkczsKK+iDvSA8IHRvXC1iZVwtYWJsZTsKK+mDvSA8IG1ldHJvcG9saXM7CivmlocgPCBsaXRlcmF0dXJlOwor6L2NIDwgd2Fnb25cLXJ1dHM7CivovKkgPCBnZW5lcmF0aW9uOwor55ypIDwgdG9cLWNvbmZ1c2U7CivnnKAgPCBjbG9zZVwtZXllczsKK+i8nSA8IGJyaWdodG5lc3M7CivlvJAgPCBudW1iZXJcLXR3bzsKK+iAhSA8IHRoYXRcLXdoaWNoOwor5LiaIDwgcHJvZmVzc2lvbjsKK+W6nCA8IHByZWZlY3R1cmU7CivmlL8gPCBnb3Zlcm5tZW50Owor5LqnIDwgZ2l2ZVwtYmlydGg7CivlnLogPCBvcGVuXC1zcGFjZTsKK+avlCA8IHRvXC1jb21wYXJlOwor55ayIDwgZmVlbFwtdGlyZWQ7CivnlLsgPCBhXC1wYWludGluZzsKK+acmyA8IHRvXC1sb29rXC1hdDsKK+izuiA8IG1ha2VcLW1vbmV5Owor5YWtIDwgbnVtYmVyXC1zaXg7CivlsaEgPCBmcmVxdWVudGx5Owor5bCkIDwgZXNwZWNpYWxseTsKK+WwiCA8IG1vbm9wb2xpemU7Civln7ogPCBmb3VuZGF0aW9uOwor5Y+MIDwgc2V0XC1vZlwtdHdvOwor5a2rIDwgZ3JhbmRjaGlsZDsKK+WsqiA8IGNvdXJ0XC1sYWR5Owor56a7IDwgcmFyZVwtYmVhc3Q7CivlqpIgPCBnb1wtYmV0d2VlbjsKK+iqjCA8IHdyaXRlXC1kb3duOwor6KqHIDwgZXhhZ2dlcmF0ZTsKK+WTjSA8IG1ha2VcLXNvdW5kOwor5am/IDwgc29uXC1pblwtbGF3Owor54itIDwgdG9cLWRpc3B1dGU7CivlmaggPCByZWNlcHRhY2xlOwor54efIDwgZW5jYW1wbWVudDsKK+WmmSA8IG15c3RlcmlvdXM7Civog6EgPCByZWNrbGVzc2x5Owor5aaTIDwgcHJvc3RpdHV0ZTsKK+ilpiA8IHNob3J0XC1jb2F0Owor5aOxIDwgbnVtYmVyXC1vbmU7Civpg60gPCBvdXRlclwtcGFydDsKK+iuqCA8IHRvXC1kaXNjdXNzOwor5ruFIDwgZXh0aW5ndWlzaDsKK+iZnCA8IHRvXC1jYXB0dXJlOwor56evIDwgYWNjdW11bGF0ZTsKK+iPnCA8IHZlZ2V0YWJsZXM7Civll6MgPCB0b1wtY29ubmVjdDsKK+WXnCA8IGJlXC1mb25kXC1vZjsKK+S7iyA8IGZvcmVydW5uZXI7CivntKIgPCBsYXJnZVwtcm9wZTsKK+S4gSA8IG1hbGVcLWFkdWx0Owor6YGNIDwgZXZlcnl3aGVyZTsKK+iSlCA8IHRyYW5zcGxhbnQ7Civmh4IgPCB1bmRlcnN0YW5kOwor6YeKIDwgaW50ZXJwcmV0ZTsKK+e6tSA8IGluZHVsZ2VcLWluOwor5q20IDwgdGFrZVwtcGxhY2U7Civku4EgPCBodW1hbmVuZXNzOwor5qqAIDwgc2FuZGFsd29vZDsKK+WJiiA8IHNjcmFwZVwtb2ZmOwor5YiRIDwgcHVuaXNobWVudDsKK+WygiA8IGhvd1w/XC13aGF0XD87CivpmoYgPCBwcm9zcGVyb3VzOwor5YiDIDwgZWRnZWRcLXRvb2w7CivmnpAgPCBzcGxpdFwtd29vZDsKK+iFuCA8IGludGVzdGluZXM7CivmpZMgPCBtYXBsZVwtdHJlZTsKK+mkhSA8IHJpY2VcLWNha2VzOwor5YKNIDwgYnlcLXNpZGVcLW9mOwor5qCTIDwgd29vZGVuXC1wZWc7Civlh68gPCB0cml1bXBoYW50Owor5oGtIDwgcmVzcGVjdGZ1bDsKK+eluCA8IG1pc2ZvcnR1bmU7CivnpoUgPCBtZWRpdGF0aW9uOwor5p+vIDwgYXhlXC1oYW5kbGU7CivmjZAgPCBjb250cmlidXRlOwor6LiqIDwgZm9vdHByaW50czsKK+WxgSA8IGJyZWFrXC13aW5kOwor6LCKIDwgZnJpZW5kc2hpcDsKK+WCqCA8IHNhdmVcLW1vbmV5Owor6ZuBIDwgd2lsZFwtZ29vc2U7CivmkYogPCBzcHJlYWRcLW91dDsKK+WQqCA8IG1ldHJpY1wtdG9uOwor5LmNIDwgZmlyc3RcLXRpbWU7CivpmYAgPCBzdGVlcFwtYmFuazsKK+e2vyA8IGNvdHRvblwtd2FkOwor57axIDwgaGVhdnlcLXJvcGU7CivmipEgPCBwcmVzc1wtZG93bjsKK+W9rCA8IGN1bHRpdmF0ZWQ7Civmkq4gPCBsaXR0bGVcLWJpdDsKK+eypSA8IHJpY2VcLWdydWVsOwor6JuuIDwgYmFyYmFyaWFuczsKK+euuCA8IGNob3BzdGlja3M7CivnrbUgPCBiYW1ib29cLW1hdDsKK+iJhyA8IHNtYWxsXC1ib2F0Owor5o2MIDwgYnJlYWtcLW9wZW47CivnrKAgPCBiYW1ib29cLWhhdDsKK+W6niA8IGRpc29yZGVybHk7Civnq50gPCB0b1wtY29tYmluZTsKK+aJiSA8IGRvb3JcLXBhbmVsOwor5Z2dIDwgZW1iYW5rbWVudDsKK+aGpyA8IGlycmVzb2x1dGU7CivnlKkgPCB0aHJvd1wtYXdheTsKK+mFjCA8IHNlcnZlXC13aW5lOwor56OQIDwgbGFyZ2VcLXJvY2s7CivovoUgPCBjaGVla1wtYm9uZTsKK+aNoSA8IHRvXC1waWNrXC11cDsKK+i5iCA8IHN0YW1wXC1mZWV0Owor5pmSIDwgZHJ5XC1pblwtc3VuOwor5q28IDwgYW5uaWhpbGF0ZTsKK+a2qSA8IGFzdHJpbmdlbnQ7CivpnI4gPCBsaWdodFwtcmFpbjsKK+e7uCA8IHNpbGtcLWNsb3RoOwor55yvIDwgYmVcLWJsaW5kZWQ7Civlr4UgPCB0b1wtcmVzcGVjdDsKK+ectiA8IGV5ZVwtc29ja2V0Owor56KfIDwgc21hbGxcLWRpc2g7CivolbQgPCB0b1wtY29sbGVjdDsKK+i/rSA8IHJlcGVhdGVkbHk7Civml60gPCByaXNpbmdcLXN1bjsKK+aCjSA8IGNvdXJhZ2VvdXM7CivmnqIgPCBkb29yXC1oaW5nZTsKK+i3iyA8IGdvXC1ieVwtZm9vdDsKK+WcqiA8IFwocGhvbmV0aWNcKTsKK+aQlCA8IHRvXC1zY3JhdGNoOwor5ZqOIDwgY3J5XC1sb3VkbHk7CivmsZsgPCBoaWdoXC13YXRlcjsKK+iEryA8IGRyaWVkXC1tZWF0Owor5ZeSIDwgdG9cLWRlc3BhaXI7Civlop8gPCBoaWdoXC1tb3VuZDsKK+mmiyA8IGdsdXR0b25vdXM7Civoua0gPCB0b1wtc2h1ZmZsZTsKK+a+iCA8IHRob3JvdWdobHk7CivnvK0gPCB3aW5kXC1yb3VuZDsKK+WWsyA8IHdoaXNwZXJpbmc7CivlvKcgPCB3b29kZW5cLWJvdzsKK+aDhiA8IGRpc3RyZXNzZWQ7CivmkrUgPCBkcml2ZVwtYXdheTsKK+i9tiA8IHJ1c2hcLWZvcnRoOwor56q/IDwgbWluZVwtc2hhZnQ7CivmqLUgPCB3b29kY3V0dGVyOwor54qAIDwgcmhpbm9jZXJvczsKK+e7miA8IHZhcmllZ2F0ZWQ7Civol5UgPCBsb3R1c1wtcm9vdDsKK+aRniA8IHRvXC1waWxlXC11cDsKK+a7pCA8IHN0cmFpblwtb3V0Owor57yIIDwgaW5kaXN0aW5jdDsKK+iCqiA8IGFuaW1hbFwtZmF0Owor55SEIDwgdG9cLWV4YW1pbmU7Civpk5sgPCBmcnlpbmdcLXBhbjsKK+WroSA8IGxlZ2FsXC13aWZlOwor56O3IDwgcGhvc3Bob3J1czsKK+e/oSA8IGtpbmdmaXNoZXI7CivpnK0gPCBjbG91ZHlcLXNreTsKK+iIqyA8IGZhbmN5XC1ib2F0Owor57qoIDwgd2hpdGVcLXNpbGs7CivmprcgPCBmb290YnJpZGdlOwor6JSXIDwgc3VnYXJcLWNhbmU7CivlvZcgPCBicm9vbXN0aWNrOwor5ZafIDwgaGVhdmVcLXNpZ2g7CivllpEgPCB0b1wtYmVcLWR1bWI7Civpsb8gPCBjdXR0bGVmaXNoOwor5YCcIDwgcmFpc2VcLWhpZ2g7Civmu4IgPCB0b3JyZW50aWFsOwor5b+7IDwgZGVsaWdodGZ1bDsKK+eHpyA8IGZsaW50c3RvbmU7CivnqJQgPCByaXBlXC1ncmFpbjsKK+miiSA8IGZseVwtdXB3YXJkOwor6Ii4IDwgbGFyZ2VcLWJvYXQ7CivnnJkgPCB0b1wtZ2F6ZVwtYXQ7CivnmIAgPCBhXC1oZW1hdG9tYTsKK+WkryA8IGhlYXZ5XC1sb2FkOwor6bKgIDwgZmlzaFwtYm9uZXM7CivojI8gPCB0YWxsXC1ncmFzczsKK+iMryA8IGNoaW5hXC1yb290Owor6bKnIDwgZ2lhbnRcLWZpc2g7CivpgKYgPCBtZWFuZGVyaW5nOwor6aqcIDwgd2lsZFwtaG9yc2U7CivmrLkgPCBmaWVyY2VcLWRvZzsKK+e8myA8IGRlY29yYXRpdmU7Civoi5UgPCBydXNoXC1wbGFudDsKK+mhuCA8IGxhcmdlXC1mYWNlOwor57ymIDwgcGxhaW5cLXNpbGs7CivluJkgPCBib29rXC1jb3ZlcjsKK+mzgyA8IGZpc2hcLWdpbGxzOwor6Ya0IDwgc3dlZXRcLXdpbmU7CivovoogPCB0dXJuXC1yb3VuZDsKK+WymCA8IHN0ZWVwXC1oaWxsOwor5YCsIDwgbm90aWNlYWJsZTsKK+myniA8IGRyaWVkXC1maXNoOwor57yBIDwgYmxhY2tcLXNpbGs7CivnrqcgPCByYXR0YW5cLWJveDsKK+WigSA8IHRvXC1wbGFzdGVyOwor5720IDwgYnJvd25cLWJlYXI7CivniLAgPCBsZWFkXC1vblwtdG87CivmnbIgPCBicmlnaHRcLXN1bjsKK+eZlCA8IGh5c3RlcmljYWw7CivojpwgPCBhdmVuYVwtbnVkYTsKK+WfmSA8IGluc3RydW1lbnQ7Civnjb4gPCB0aGVcLWJhZGdlcjsKK+mDqyA8IHBsYWNlXC1uYW1lOwor6JuPIDwgcmF6b3JcLWNsYW07CivluJEgPCBhXC10cmVhc3VyeTsKK+aPoCA8IHRvXC1wdWxsXC11cDsKK+i2kSA8IGNhbicndFwtbW92ZTsKK+mYjSA8IGdhdGVrZWVwZXI7CivmjoogPCB0b1wtZXh0cmFjdDsKK+mVnSA8IGR5c3Byb3NpdW07CivnoJcgPCBnaWFudFwtY2xhbTsKK+WrqyA8IHVnbHlcLXdvbWFuOwor6LeXIDwgdGhlXC1pbnN0ZXA7CivmtbwgPCB0b1wtcmVxdWVzdDsKK+WXjCA8IHRoZVwtdGhyb2F0Owor5rGGIDwgdG9cLXBhcmJvaWw7CivliK0gPCBjdXRcLXRocm9hdDsKK+mrgiA8IHRoZVwtcGVsdmlzOwor6ZK8IDwgbW9seWJkZW51bTsKK+aGnSA8IHRvXC1kaXNsaWtlOwor54KFIDwgYnJpbGxpYW5jZTsKK+masyA8IHRvXC1kZXN0cm95Owor6IybIDwgcmFudW5jdWx1czsKK+ezhyA8IGRyaWVkXC1yaWNlOwor6ZKGIDwgZ2Fkb2xpbml1bTsKK+a+jCA8IHRvXC1leGhhdXN0Owor5bqAIDwgdG9cLXByZXBhcmU7CivnirQgPCBhXC13aWxkXC1kb2c7Civln48gPCBhXC1ib3VuZGFyeTsKK+iwriA8IHRvXC1zbGFuZGVyOwor57iu55+tIDwgdG9cLWN1cnRhaWw7CivmlLnntYQgPCByZW9yZ2FuaXplOwor5rKS5ZWP6aGMIDwgbm9cLXByb2JsZW07CivnrKzkupTpoZ4gPCBjYXRlZ29yeVwtNTsKK+aTgeittyA8IHRvXC1lbmRvcnNlOwor6YCy6KGMIDwgdG9cLWFkdmFuY2U7CivlpZTms6IgPCBydXNoXC1hYm91dDsKK+W+jOavjSA8IHN0ZXBtb3RoZXI7CivmlaPnmbwgPCBkaXN0cmlidXRlOwor5aSx54GrIDwgY2F0Y2hcLWZpcmU7CivoqpXnlJ8gPCB0b1wtYmVcLWJvcm47CivlpJrniL4gPCBcKGJvYlwpXC1kb2xlOwor5be05p6v5a+n5Li7576pIDwgYmFrdW5pbmlzbTsKK+W9vOatpCA8IGVhY2hcLW90aGVyOwor6aCQ5YWIIDwgYmVmb3JlaGFuZDsKK+mXnOmWgCA8IGNsb3NlXC1kb3duOwor6YGV6IOMIDwgdG9cLXZpb2xhdGU7CivlhrDmn5Pmn5PmlpkgPCBhem9pY1wtZHllczsKK+e1seioiCA8IHN0YXRpc3RpY3M7Civlh73os7wgPCBtYWlsXC1vcmRlcjsKK+WjgeeriyA8IFwob2ZcLWNsaWZmczsKK+aYpeWtoyA8IHNwcmluZ3RpbWU7CivpoJLkvYggPCBwcm9tdWxnYXRlOwor5q+P5qyhIDwgZXZlcnlcLXRpbWU7Civnt6jnqIsgPCB0b1wtcHJvZ3JhbTsKK+WIhuipniA8IHBhcnRpY2lwbGU7CivlvozmnJ8gPCBsYXRlXC1zdGFnZTsKK+aViOeUqCA8IHVzZWZ1bG5lc3M7Civns6fpo58gPCBmb29kc3R1ZmZzOwor6I2S6YeOIDwgd2lsZGVybmVzczsKK+aSkuisiiA8IHRlbGxcLWFcLWxpZTsKK+eHg+eHkiA8IGNvbWJ1c3Rpb247CivlvITnm7QgPCBzdHJhaWdodGVuOwor6YG356e7IDwgdG9cLW1pZ3JhdGU7CivpnZ7lrpjmlrkgPCB1bm9mZmljaWFsOwor5aSn5rCjIDwgYXRtb3NwaGVyZTsKK+iqjeeCuiA8IHRvXC1iZWxpZXZlOwor6ZmN6JC9IDwgdG9cLWRlc2NlbmQ7CivliY3ogIUgPCB0aGVcLWZvcm1lcjsKK+aViOeOhyA8IGVmZmljaWVuY3k7Civpnbblv4MgPCBidWxsJydzXC1leWU7CivlnIvmsJHpu6ggPCBrdW9taW50YW5nOwor5YuD54S2IDwgYWdpdGF0ZWRseTsKK+ism+W4qyA8IGluc3RydWN0b3I7Civlj5bku6MgPCBzdWJzdGl0dXRlOwor5paw5pWZIDwgcHJvdGVzdGFudDsKK+WkmuasoSA8IG1hbnlcLXRpbWVzOwor5aWH5pW4IDwgb2RkXC1udW1iZXI7Civlv4XlsIcgPCBpbmV2aXRhYmx5Owor6Zmw57K+IDwgc2V4XC1mbHVpZHM7Civnmb3oibLpq5QgPCBsZXVjb3BsYXN0Owor5aaW5ayIIDwgZW5jaGFudGluZzsKK+S4jeiAkOeFqSA8IGltcGF0aWVuY2U7Civnmb7liIbnjocgPCBwZXJjZW50YWdlOwor57m85om/IDwgdG9cLWluaGVyaXQ7Civku6TniYznkrAgPCB0b2tlblwtcmluZzsKK+aTjee4sSA8IHRvXC1vcGVyYXRlOwor5YWo6Z2iIDwgYWxsXC1hcm91bmQ7Civlm5vlgIvlsI/mmYIgPCBmb3VyXC1ob3VyczsKK+WOmOWNhyA8IGNlbnRpbGl0ZXI7Civoqr/mlbQgPCBhZGp1c3RtZW50Owor6I2S6KysIDwgcmlkaWN1bG91czsKK+iHqueZveabuCA8IGNvbmZlc3Npb247CivlsZXopr3mnIMgPCBleGhpYml0aW9uOwor55m96aCtIDwgaG9hcnlcLWhlYWQ7CivlpKnmloflrbjlrrYgPCBhc3Ryb25vbWVyOwor5rG65LiNIDwgbm90XC1hdFwtYWxsOwor6Kqq5piOIDwgdG9cLWV4cGxhaW47CivnnLzoirHnuZrkuoIgPCBiZVwtZGF6emxlZDsKK+mtr+S9m+eIvuWuriA8IHRoZVwtbG91dnJlOwor5Ye66ImyIDwgcmVtYXJrYWJsZTsKK+S4jeWgquW/jeWPlyA8IHVuYmVhcmFibGU7Civpq5jpgJ/njocgPCBoaWdoXC1zcGVlZDsKK+WFjemZpCA8IHRvXC1wcmV2ZW50Owor5aal5Y2UIDwgY29tcHJvbWlzZTsKK+W3qOi8qiA8IGxhcmdlXC1zaGlwOwor54Wn54mHIDwgcGhvdG9ncmFwaDsKK+mZhOethiA8IHBvc3RzY3JpcHQ7Civopqroh6ogPCBwZXJzb25hbGx5Owor6Kqq5LiN5Ye66Kmx5L6GIDwgc3BlZWNobGVzczsKK+Wom+aoguS4reW/gyA8IHJlY3JlYXRpb247CivmlLnmraMgPCB0b1wtY29ycmVjdDsKK+Wkp+WfjuW4giA8IG1ham9yXC1jaXR5Owor6Ieq55Sx6LK/5piTIDwgZnJlZVwtdHJhZGU7CivljYrlnJMgPCBzZW1pY2lyY2xlOwor54it5aWqIDwgZmlnaHRcLW92ZXI7Civnn63mnJ8gPCBzaG9ydFwtdGVybTsKK+avj+W5tCA8IGV2ZXJ5XC15ZWFyOwor5Zas5rK75pWmIDwgZ2VvcmdldG93bjsKK+S4ieWIhuS5i+S6jCA8IHR3b1wtdGhpcmRzOwor5YKz6YGT6ICFIDwgbWlzc2lvbmFyeTsKK+aVteaJiyA8IGFudGFnb25pc3Q7CivljbDlg48gPCBpbXByZXNzaW9uOwor5LiN5Y+v6IO9IDwgaW1wb3NzaWJsZTsKK+eyvumAmiA8IHByb2ZpY2llbnQ7CivlvojlpKcgPCB0cmVtZW5kb3VzOwor55m96YWSIDwgc3Bpcml0XC11c3U7CivpjITpn7PluLYgPCBhdWRpb1wtdGFwZTsKK+iNieiOkyA8IHN0cmF3YmVycnk7CivpjKvlronlsbEgPCBtb3VudFwtemlvbjsKK+WhlOWQieWFi+aWr+WdpiA8IHRhamlraXN0YW47CivloLHnq6AgPCBuZXdzcGFwZXJzOwor5aSa5bm0IDwgbWFueVwteWVhcnM7Civoqp7lvZkgPCB2b2NhYnVsYXJ5Owor5pep5YWIIDwgcHJldmlvdXNseTsKK+e4vee1seS7u+acnyA8IHByZXNpZGVuY3k7CivniYzlg7kgPCBsaXN0XC1wcmljZTsKK+W3q+ihkyA8IHdpdGNoY3JhZnQ7CivpgY7muKEgPCB0cmFuc2l0aW9uOwor5o6i6ZqqIDwgdG9cLWV4cGxvcmU7CivlpKflrbggPCB1bml2ZXJzaXR5Owor54Sh55CGIDwgaXJyYXRpb25hbDsKK+WNiuWDuSA8IGhhbGZcLXByaWNlOwor5Y2A5YilIDwgZGlmZmVyZW5jZTsKK+mXnOiBryA8IGJlXC1yZWxhdGVkOwor56Gs56OB55ukIDwgaGFyZFwtZHJpdmU7CivlnLDpnIcgPCBlYXJ0aHF1YWtlOwor6KeA55y+IDwgc3BlY3RhdG9yczsKK+aOkumaiiA8IHRvXC1saW5lXC11cDsKK+aUquaTviA8IHRvXC1kaXN0dXJiOwor5LiN5Y+v6YC+6LaKIDwgaW1wYXNzYWJsZTsKK+aVuOWtuCA8IG1hdGhlbWF0aWM7CivnhrHlv4MgPCBlbnRodXNpYXNtOwor5Yqg5Yip56aP5bC85LqeIDwgY2FsaWZvcm5pYTsKK+att+WPsuS4iiA8IGhpc3RvcmljYWw7CivoqJjluLPlk6EgPCBib29ra2VlcGVyOwor6Zu75a2QIDwgZWxlY3Ryb25pYzsKK+eZveipsSA8IHZlcm5hY3VsYXI7Civngrjns5UgPCBmcmllZFwtY2FrZTsKK+aVo+WwhCA8IHNjYXR0ZXJpbmc7Civok4vkuJYgPCB1bnJpdmVsbGVkOwor57eo5o6SIDwgdG9cLWFycmFuZ2U7CivmjZXprZogPCBjYXRjaFwtZmlzaDsKK+WFgeirviA8IHRvXC1wcm9taXNlOwor6Kq/5ZKMIDwgaGFybW9uaW91czsKK+W+jOS+hiA8IGFmdGVyd2FyZHM7Civkvb/lpLHmnJsgPCBkaXNhcHBvaW50Owor5aSn5ZacIDwgZXh1bHRhdGlvbjsKK+ioreaWvSA8IGZhY2lsaXRpZXM7Civmlrnkvr8gPCBjb252ZW5pZW50Owor5q2k5b6MIDwgYWZ0ZXJcLXRoaXM7CivluqfmqJkgPCBjb29yZGluYXRlOwor57aT5q23IDwgZXhwZXJpZW5jZTsKK+aoguingCA8IG9wdGltaXN0aWM7CivlpKrlj6QgPCBpbW1lbW9yaWFsOwor6Zui5amaIDwgdG9cLWRpdm9yY2U7CivmlZnloILlopPlnLAgPCBjaHVyY2h5YXJkOwor6b6iIDwgaW5cLWhhcm1vbnk7Civnh4jloZQgPCBsaWdodGhvdXNlOwor5Ye654mIIDwgdG9cLXB1Ymxpc2g7CivlhbXoiLkgPCBtYW5cLW9mXC13YXI7CivooYzmlL/plbflrpggPCBtYWdpc3RyYXRlOwor6bynIDwgdGhlXC1tYXJtb3Q7CivpvIQgPCB0aGVcLXNwaWRlcjsKK+m7uSA8IGVtYnJvaWRlcnk7Civpu7IgPCBncmV5XC1ibGFjazsKK+m7pCA8IGJsdWVcLWJsYWNrOwor5YK36aKoIDwgY2F0Y2hcLWNvbGQ7CivmlL7lsIQgPCB0b1wtcmFkaWF0ZTsKK+avlOS+iyA8IHByb3BvcnRpb247CivpuLogPCBob3JuZWRcLW93bDsKK+maqOW+jCA8IHNvb25cLWFmdGVyOwor5YmN5pmvIDwgZm9yZWdyb3VuZDsKK+mBt+W7tiA8IGxvbmdcLWRlbGF5Owor6KOc6KqeIDwgY29tcGxlbWVudDsKK+m1kiA8IG15bmFoXC1iaXJkOwor6bS3IDwgd29vZHBlY2tlcjsKK+WKoOWvhiA8IHRvXC1lbmNyeXB0Owor5pW05ZCIIDwgdG9cLWNvbmZvcm07Civmib/ljIXkurogPCBjb250cmFjdG9yOwor6YGV5oqXIDwgdG9cLWRpc29iZXk7Civnm6PnnaMgPCB0b1wtY29udHJvbDsKK+mzsiA8IHR1cnRsZWRvdmU7CivmloflhbcgPCBzdGF0aW9uZXJ5Owor5q+P5Lq6IDwgcGVyXC1wZXJzb247Civnianos6rkuIogPCBtYXRlcmlhbGx5Owor6bKwIDwgc21hbGxcLWZpc2g7CivpmLLmsLQgPCB3YXRlcnByb29mOwor6bGHIDwgYW5nbGVyZmlzaDsKK+iytOaXj+irluiAhSA8IGFyaXN0b2NyYXQ7CivljYrlhazplosgPCBzZW1pXC1vdmVydDsKK+S9v+WFjemZpCA8IGdldFwtcmlkXC1vZjsKK+abtOiho+WupCA8IGNoYW5nZXJvb207CivproEgPCB0aGVcLWJvbml0bzsKK+mAgOatpSA8IGRlZ2VuZXJhdGU7CivpganluqYgPCBtb2RlcmF0ZWx5Owor6a2bIDwgdGhlXC1tdWxsZXQ7CivpgaDlvoEgPCBleHBlZGl0aW9uOwor6ayoIDwgYm9pc3Rlcm91czsKK+msnCA8IHRvXC1nb1wtYmFsZDsKK+eZveiHiSA8IHdoaXRlXC1mYWNlOwor57i95YWxIDwgYWx0b2dldGhlcjsKK+mroyA8IHNpbWlsYXJcLXRvOwor6auBIDwgdGhpZ2hcLWJvbmU7Civop6PmnpAgPCB0b1wtYW5hbHl6ZTsKK+molyA8IHRvXC1zd2luZGxlOwor6aiLIDwgdGFsbFwtaG9yc2U7CivpqIkgPCBmaW5lXC1ob3JzZTsKK+mnsCA8IGdyZXlcLWhvcnNlOwor6aa5IDwgcG9zdFwtaG9yc2U7CivoqablnJYgPCB0b1wtYXR0ZW1wdDsKK+iJpui8iSA8IHNoaXBcLWJhc2VkOwor55+l5ZCNIDwgd2VsbFwta25vd247CivlpJrkuosgPCBtZWRkbGVzb21lOwor5Yaw55CDIDwgaWNlXC1ob2NrZXk7Civop6PmlL4gPCBsaWJlcmF0aW9uOwor6Z6hIDwgbGVnXC13YXJtZXI7CivpnZ0gPCB0aGVcLWhlYXZlbjsKK+WBvemggiA8IGZhbHNlXC1yb29mOwor6auY6ZqOIDwgaGlnaFwtbGV2ZWw7CivmjY/pgKAgPCB0b1wtbWFrZVwtdXA7Civpmq4gPCB0aVwtcmlzZVwtdXA7CivpmbsgPCBzbWFsbFwtaGlsbDsKK+aWsOiBnuiomOiAhSA8IGpvdXJuYWxpc3Q7Civmk4HmirEgPCB0b1wtZW1icmFjZTsKK+mbtuS4iyA8IGJlbG93XC16ZXJvOwor6ZefIDwgcGVhY2VmdWxseTsKK+meremXouWFpeijoSA8IHBlbmV0cmF0ZWQ7CivotoXlqpLpq5QgPCBoeXBlcm1lZGlhOwor6ZWaIDwgc21hbGxcLWNvaW47CivplKwgPCBsb25nXC1zcGVhcjsKK+S4jeaYjueiuiA8IGluZGVmaW5pdGU7CivpkrcgPCBwcm9tZXRoaXVtOwor5pS+5Ye6IDwgdG9cLWxldFwtb2ZmOwor6ZC2IDwgbWV0YWxcLXJpbmc7CivpkJogPCBzb2Z0XC1zdGVlbDsKK+WFrOefsyA8IGhlY3RvbGl0ZXI7CivpkJIgPCBsYXdyZW5jaXVtOwor6ZCAIDwgYVwtY3VwYm9hcmQ7CivkuI3mma/msKMgPCBkZXByZXNzaW9uOwor5LuW5YCR6Ieq5bexIDwgdGhlbXNlbHZlczsKK+izh+acrOWutiA8IGNhcGl0YWxpc3Q7CivpjqogPCB0b1wtZW5ncmF2ZTsKK+mOmyA8IGxhcmdlXC1iZWxsOwor5aCx5pW4IDwgbnVtYmVyXC1vZmY7CivpjYAgPCB0ZWNobmV0aXVtOwor5pS25YWlIDwgdG9cLXRha2VcLWluOwor6Kme5YW4IDwgZGljdGlvbmFyeTsKK+ioreWcqCA8IGxvY2F0ZWRcLWF0Owor6ZmQ5bqmIDwgbGltaXRhdGlvbjsKK+ijseeziiA8IHdhbGxcLXBhcGVyOwor6YiKIDwgY2Fkb2xpbml1bTsKK+mGoSA8IHdpbmVcLXByZXNzOwor6YadIDwgd2hpdGVcLXdpbmU7CivmqqLmn6UgPCBpbnNwZWN0aW9uOwor6YWFIDwgcmFpc2VcLWZlZXQ7CivpmL/loZ7mi5znloYgPCBhemVyYmFpamFuOwor54CG6IG3IDwgd3Jvbmdkb2luZzsKK+W6h+W7lSA8IFwob2ZcLWFcLXRyZWU7CivkuozmiYvosqggPCBzZWNvbmRoYW5kOwor6Zmw5aSpIDwgY2xvdWR5XC1kYXk7CivntYLmlrwgPCBldmVudHVhbGx5Owor6KiC5amaIDwgZW5nYWdlbWVudDsKK+mZuOWfuiA8IGxhbmRcLWJhc2VkOwor6YKP6Lyv54K45b2IIDwgbG9naWNcLWJvbWI7Civlu5rlj7ggPCBjb29rXCxcLWNoZWY7CivlgrPoqqogPCBpdFwtaXNcLXNhaWQ7CivliLblrpogPCB0b1wtZHJhd1wtdXA7CivmmJPmjqXov5EgPCBhY2Nlc3NpYmxlOwor6YCsIDwgdG9cLXNjYXR0ZXI7CivpgJ/lsIQgPCByYXBpZFwtZmlyZTsKK+mBuuWCsyA8IGhlcmVkaXRhcnk7CivoiInovqYgPCB0b1wtY29uZHVjdDsKK+WIqeWusyA8IGZvcm1pZGFibGU7CivouqkgPCB0YWtlXC1xdWljazsKK+WFpeeNhCA8IGdvXC10b1wtamFpbDsKK+exs+eyiSA8IHJpY2VcLWZsb3VyOwor5ZyW6Kej6Kqq5piOIDwgaWxsdXN0cmF0ZTsKK+S4jeWxiOS4jeaSkyA8IHVueWllbGRpbmc7CivouKcgPCB1bmVhc2luZXNzOwor6LicIDwgdG9cLXN0dW1ibGU7CivouJYgPCB0cmFtcGxlXC1vbjsKK+i+suadkSA8IHJ1cmFsXC1hcmVhOwor5oOz5YOP5YqbIDwgY29uY2VwdGlvbjsKK+i3kCA8IHRvXC10cmFtcGxlOwor5Ymv5YiKIDwgc3VwcGxlbWVudDsKK+acieaxuuW/gyA8IGRldGVybWluZWQ7CivmqYTmrJbmqLkgPCBvbGl2ZVwtdHJlZTsKK+aTjeWgtCA8IHBsYXlncm91bmQ7Civln7rmlrwgPCBiZWNhdXNlXC1vZjsKK+ihjeiuiiA8IHRvXC1kZXZlbG9wOwor5YWo54S2IDwgY29tcGxldGVseTsKK+Wkp+iFpuatu+S6oSA8IGJyYWluXC1kZWFkOwor5ZyY6IGaIDwgdG9cLXJldW5pdGU7CivosYAgPCB0b1wtcXVhcnJlbDsKK+eIreirlum7niA8IGNvbnRlbnRpb247Civnmb3ni5AgPCBhcmN0aWNcLWZveDsKK+aTgeWhniA8IGNvbmdlc3Rpb247CivoqI7ljq0gPCBkaXNndXN0aW5nOwor6KyqIDwgdG9cLWNvbnN1bHQ7Civnmb3nhr4gPCB3aGl0ZVwtaGVhdDsKK+ikh+mbnOaApyA8IGNvbXBsZXhpdHk7Civnmb3nhoogPCBwb2xhclwtYmVhcjsKK+eZveeFpCA8IGFudGhyYWNpdGU7CivlgJrpnaAgPCB0b1wtbGVhblwtb247CivlubzlpbMgPCB5b3VuZ1wtZ2lybDsKK+ingOWvnyA8IHRvXC1vYnNlcnZlOwor5L2/55So6ICF5Lit5LuLIDwgdXNlclwtYWdlbnQ7CivlhbXms5UgPCBhcnRcLW9mXC13YXI7CivnlbbpgbggPCBiZVwtZWxlY3RlZDsKK+imuCA8IHN0ZWFsXC1sb29rOwor55uj5o6nIDwgdG9cLW1vbml0b3I7CivntZDlsYAgPCBjb25jbHVzaW9uOwor6KOqIDwgdGhlXC1zbGVldmU7CivmrKDkvbMgPCBzdWJvcHRpbWFsOwor6YCx5YiwIDwgdGhvdWdodGZ1bDsKK+imj+W+iyA8IGRpc2NpcGxpbmU7Civon6sgPCBzaWx2ZXJmaXNoOwor6J+jIDwgbG91c2VcLWVnZ3M7CivnrqHovYQgPCBhZG1pbmlzdGVyOwor6J+BIDwgYVwtbW9zcXVpdG87Civog6HmgJ3kuoLmg7MgPCBpbWFnaW5pbmdzOwor5aW254mb5aC0IDwgZGFpcnlcLWZhcm07CivmqLnmqIEgPCB0cmVlXC1zdHVtcDsKK+ilr+aJmCA8IHRvXC1zZXRcLW9mZjsKK+ibnCA8IHdvb2RcLWxvdXNlOwor5pON5YW4IDwgZHJpbGxcLWJvb2s7Civot5HppqwgPCBob3JzZVwtcmFjZTsKK+iWpyA8IGRyaWVkXC1mb29kOwor5qqi5a+fIDwgdG9cLWluc3BlY3Q7CivolaEgPCBoZW1wXC1zZWVkczsKK+W3qOaYnyA8IGdpYW50XC1zdGFyOwor5a2X56+A5pW4IDwgYnl0ZVwtY291bnQ7Civok7cgPCBtb3RoZXJ3b3J0Owor6ZmE5YqgIDwgYWRkaXRpb25hbDsKK+iSvSA8IGFudGhyYWNlbmU7CivokqYgPCB0b1wtbWVhc3VyZTsKK+iSliA8IHBsYW50XC1uYW1lOwor5LiA5YiH5LqL54mpIDwgZXZlcnl0aGluZzsKK+iRryA8IG9ycmlzXC1yb290Owor5q2M576F6KW/5pu4IDwgY29sb3NzaWFuczsKK+ebuOWwjSA8IHJlbGF0aXZlbHk7CivnhKHlg7kgPCBpbnZhbHVhYmxlOwor5pCP5paXIDwgdG9cLXdyZXN0bGU7CivojbUgPCBwb2xlbW9uaXVtOwor5Ye655Sf5ZywIDwgYmlydGhwbGFjZTsKK+S4jeeUseiHquS4uyA8IGNhbicndFwtaGVscDsKK+aLnOiolyA8IHJlcXVlc3RcLXNiOwor5o6S55CDIDwgdm9sbGV5YmFsbDsKK+W6l+S4uyA8IHNob3BcLW93bmVyOwor5LiN5LiL5LqOIDwgYXNcLW1hbnlcLWFzOwor55O26aC4IDwgYm90dGxlbmVjazsKK+W5q+WKqSA8IGFzc2lzdGFuY2U7CivohKogPCBlcnlzaXBlbGFzOwor6ISXIDwgY29pbmNpZGluZzsKK+W5q+WHtiA8IGFjY29tcGxpY2U7Civlhazmkq4gPCBtaWxsaWxpdGVyOwor6IKmIDwgbGFyZ2VcLWhlYWQ7CivnsYPnkIMgPCBiYXNrZXRiYWxsOwor5oqx6LKgIDwgYXNwaXJhdGlvbjsKK+abvOW+ueaWr+eJuSA8IG1hbmNoZXN0ZXI7CivkvL3ppqzlsITnt5ogPCBnYW1tYVwtcmF5czsKK+Wkp+WqkumrlCA8IG1hY3JvbWVkaWE7CivnrpfooZMgPCBhcml0aG1ldGljOwor5o6o5risIDwgY29uamVjdHVyZTsKK+imgeWhniA8IHN0cm9uZ2hvbGQ7Civnmb3ml5cgPCB3aGl0ZVwtZmxhZzsKK+a7v+i2syA8IHRvXC1zYXRpc2Z5Owor6amF6YCQIDwgYmFuaXNobWVudDsKK+alteeCuum+kOWkpyA8IG1vbnVtZW50YWw7CivnuZAgPCBmaW5lXC1jbG90aDsKK+WCmeW/mOmMhCA8IG1lbW9yYW5kdW07CivnuIcgPCBkZWNvcmF0aW9uOwor6KGo56S6IDwgdG9cLWV4cHJlc3M7CivmjKjlgIvlhZIgPCBvbmVcLWJ5XC1vbmU7CivovrLlnJIgPCBwbGFudGF0aW9uOwor5YWE5byf5pyDIDwgZnJhdGVybml0eTsKK+eVmeiBsuapnyA8IGdyYW1vcGhvbmU7CivntbogPCBmaW5lXC1saW5lbjsKK+acieWIqeWPr+WcliA8IHByb2ZpdGFibGU7CivntZsgPCBzaWxrXC1icmFpZDsKK+e1liA8IGZpbmVcLXNpbGtzOwor57WTIDwgb2JzdHJ1Y3RlZDsKK+aKleizhyA8IGludmVzdG1lbnQ7CivnsrsgPCBwcm92aXNpb25zOwor54Sh5omA5LiN6IO9IDwgb21uaXBvdGVudDsKK+eci+WIsCA8IHNlZVwtXCh0aGF0XCk7Civmj5DmmIcgPCB0b1wtcHJvbW90ZTsKK+WTiOiWqeWFi+aWr+WdpiA8IGthemFraHN0YW47CivnsKUgPCBsYXJnZVwtcGlwZTsKK+WIhumbouS4u+e+qSA8IHNlcGFyYXRpc207CivlhYzmj5sgPCB0b1wtY29udmVydDsKK+S4lueVjOmKgOihjCA8IHdvcmxkXC1iYW5rOwor6buR6I6T5a2QIDwgYmxhY2tiZXJyeTsKK+eviyA8IHJhdHRvblwtYm94Owor566gIDwgaG9yc2VcLXdoaXA7CivnrpogPCBicmllZlwtbm90ZTsKK+WFrOW8lSA8IGhlY3RvbWV0ZXI7CivnqrAgPCBicmlja1wta2lsbjsKK+WwiOmWgCA8IHNwZWNpYWxpc3Q7Civnqa0gPCB3aWxkXC1ncmFpbjsKK+eci+S+hiA8IGFwcGFyZW50bHk7Civoh4noibIgPCBjb21wbGV4aW9uOwor6I2J5Y+iIDwgdW5kZXJicnVzaDsKK+WFvOWuuSA8IGNvbXBhdGlibGU7CivlnKjkuIvpnaIgPCB1bmRlcm5lYXRoOwor56WFIDwgY2FsYW1pdGllczsKK+S4jeiuiuWMliA8IGludmFyaWFibHk7Civou43muK8gPCBuYXZhbFwtcG9ydDsKK+aMieeriyA8IG9yZGluYXRpb247CivnlJ/oqIggPCBsaXZlbGlob29kOwor56ORIDwgc3RvbmVcLW1pbGw7Civmjozmq4MgPCBzaG9wa2VlcGVyOwor6KGo54++IDwgZXhwcmVzc2lvbjsKK+WFqeWyuCA8IGJpbGF0ZXJpYWw7CivnoYMgPCBhXC1yZWRcLW1vbGU7CivlhbHlrZggPCB0b1wtY29leGlzdDsKK+ednyA8IGNsZWFyXC1leWVkOwor5Zua54qvIDwgYVwtcHJpc29uZXI7CivlgYnnuL4gPCBncmVhdFwtYWN0czsKK+ihjeeUnyA8IGRlcnZpYXRpdmU7CivlhrDliIAgPCBpY2VcLXNrYXRlczsKK+aOpeaUtiA8IHRvXC1yZWNlaXZlOwor5oqA6KGTIDwgdGVjaG5vbG9neTsKK+eWlSA8IGhlYWRcLXNvcmVzOwor55WTIDwgcmljZVwtZmllbGQ7CivnlYEgPCB0b1wtZ2l2ZVwtdG87Civlrr/poYwgPCBhc3NpZ25tZW50Owor6ZmM55Sf5Lq6IDwgYVwtc3RyYW5nZXI7CivnjpQgPCBncmVlblwtamFkZTsKK+mtmuaOkiA8IGZpc2hcLXN0ZWFrOwor54Sh5omA5LiN55+lIDwgb21uaXNjaWVudDsKK+aMh+eUsiA8IGZpbmdlcm5haWw7CivplovmnIPnpYjnprEgPCBpbnZvY2F0aW9uOwor5a246b2hIDwgc2Nob29sXC1hZ2U7CivnipsgPCBhXC1ibGFja1wtb3g7CivkuI3pgannlbYgPCBpbmFkZXF1YXRlOwor5o2o5qOEIDwgdG9cLWdpdmVcLXVwOwor6Zu76KaW6Ie6IDwgdHZcLXN0YXRpb247CivniY8gPCBwcml2eVwtaG9sZTsKK+eIqyA8IHJhZGljYWxcLTg3Owor5L2/6YaJIDwgaW50b3hpY2F0ZTsKK+aLmOemgSA8IGNvbnN0cmFpbnQ7CivnhoUgPCBzbW9vdGhcLW91dDsKK+Wci+acgyA8IHBhcmxpYW1lbnQ7CivpoJjlsI7og73lipsgPCBsZWFkZXJzaGlwOwor6LaF6LaKIDwgdG9cLXN1cnBhc3M7CivngbogPCBjYW5kbGVcLWVuZDsKK+eBkiA8IHRvXC1zcGF0dGVyOwor5o6o5bujIDwgcG9wdWxhcml6ZTsKK+S4u+WKm+iJpiA8IGJhdHRsZXNoaXA7Civmv5kgPCB0b1wtcmV2b2x2ZTsKK+a/hiA8IHJpdmVyXC1iYW5rOwor5L2j6YeRIDwgY29tbWlzc2lvbjsKK+eZveWWiSA8IGRpcGh0aGVyaWE7CivmjojmhI8gPCB0b1wtaW5zcGlyZTsKK+WFrOWIhiA8IGNlbnRpbWV0ZXI7CivnrYbogIUgPCB0aGVcLWF1dGhvcjsKK+azhiA8IGxpY2VudGlvdXM7Civkv53ogrIgPCBjaGlsZFwtY2FyZTsKK+eZveWNgCA8IHdoaXRlXC1hcmVhOwor5o+55YK1IDwgYmVcLWluXC1kZWJ0Owor5ryr55WrIDwgY2FyaWNhdHVyZTsKK+ihjOS4jemAmiA8IHdvbicndFwtd29yazsKK+WBnOeBqyA8IGNlYXNlXC1maXJlOwor56u254it6ICFIDwgY29tcGV0aXRvcjsKK+iJr+W/gyA8IGNvbnNjaWVuY2U7Civmq74gPCB0aGVcLXBvbWVsbzsKK+WWruiqvyA8IG1vbm90b25vdXM7CivmqrwgPCByaWRnZVwtcG9sZTsKK+ihqOaYjiA8IG1ha2VcLWtub3duOwor5pyJ57O757WxIDwgc3lzdGVtYXRpYzsKK+aykuS6uuS9jyA8IHVub2NjdXBpZWQ7CivmprwgPCB3aW5lXC1nbGFzczsKK+ampiA8IHRyZWVcLXRydW5rOwor5YuV54mp5a24IDwgem9vbG9naWNhbDsKK+aktSA8IHBvbXBlbG1vdXM7CivmpLMgPCB0aGVcLXBpdm90czsKK+aooeS7vyA8IHRvXC1pbWl0YXRlOwor5oSP6KaL5LiN5ZCIIDwgZGlzc2Vuc2lvbjsKK+ebp+ajruWgoSA8IGx1eGVtYm91cmc7CivnmbzkvYggPCB0b1wtcmVsZWFzZTsKK+esrOS4g+WNgSA8IHNldmVudGlldGg7CivmoJsgPCB0aGVcLWxpY2hlZTsKK+agmCA8IGZydWl0XC10cmVlOwor5qKd57SEIDwgdHJlYXR5cGFjdDsKK+WwjuiIqiA8IG5hdmlnYXRpb247CivmjpLlpJYgPCB4ZW5vcGhvYmljOwor5bCO6Ie0IDwgdG9cLWxlYWRcLXRvOwor5bGV56S6IDwgdG9cLW9wZW5cLXVwOwor5Yaw5Yed5ZmoIDwgY3J5b3Bob3J1czsKK+Wwi+iIiyA8IHRvXC1wcm92b2tlOwor5p2iIDwgd29vZHdvcmtlcjsKK+WFiOS+iyA8IGFudGVjZWRlbnQ7Civos5PppKggPCBndWVzdGhvdXNlOwor5qiT5LiLIDwgZG93bnN0YWlyczsKK+aWoiA8IHRvXC1wbHVuZGVyOwor5omT57WQIDwgdGllXC1hXC1rbm90Owor5a2f5Yqg5ouJ5ZyLIDwgYmFuZ2xhZGVzaDsKK+iHhua4rCA8IGFzc3VtcHRpb247Civlv4PnkIblrbggPCBwc3ljaG9sb2d5Owor5pOqIDwgdG9cLXR1Y2tcLWluOwor5pKxIDwgdG9cLXNob3J0ZW47CivmsKPllpjllpggPCBicmVhdGhsZXNzOwor5ouU5rKzIDwgdHVnXC1vZlwtd2FyOwor56ys5LiA5L6LIDwgZmlyc3RcLWNhc2U7CivnlJ/nlKIgPCB0b1wtcHJvZHVjZTsKK+ijnOWEnyA8IGNvbXBlbnNhdGU7CivmjrEgPCBwaWNrcG9ja2V0Owor5o6OIDwgZHJhZ1wtYXNpZGU7Civkurrpq5QgPCBodW1hblwtYm9keTsKK+iDnuihoyA8IGFmdGVyYmlydGg7CivmjJbmjpggPCBleGNhdmF0aW9uOwor5Zub5bm0IDwgZm91clwteWVhcnM7Civnmb7liIbkuYvkuZ3ljYEgPCA5MFwtcGVyY2VudDsKK+aJoSA8IGRyYWdcLWFsb25nOwor6aSQ6aSoIDwgcmVzdGF1cmFudDsKK+iBlumdiCA8IGhvbHlcLWdob3N0Owor5oa4IDwgdG9cLWZsYXR0ZXI7CivmjIfmjqcgPCBhY2N1c2F0aW9uOwor5oaNIDwgYmVcLWhhdWdodHk7CivmhoAgPCB0b1wtcmVseVwtb247CivlvJXkurrms6jmhI8gPCBhdHRyYWN0aXZlOwor5omL56i/IDwgbWFudXNjcmlwdDsKK+aKueayuSA8IHRvXC1hbm5vaW50Owor5oSTIDwgcHJvZmxpZ2F0ZTsKK+ihqOWwuiA8IHJlYXJcLXNpZ2h0Owor5oOPIDwgYXZhcmljaW91czsKK+aRqeWkqeaRnyA8IHNreXNjcmFwZXI7CivnlaLmpa0gPCBncmFkdWF0aW9uOwor5oGbIDwgZGlzb3JkZXJlZDsKK+WbuuWftyA8IHBlcnNpc3RlbnQ7CivmgLIgPCBiZVwtYW54aW91czsKK+W9vyA8IHJlc2VtYmxpbmc7Civmn6XoqaIgPCB0b1wtaW5xdWlyZTsKK+W8hyA8IGNvdmVyXC1vdmVyOwor5buAIDwgdG9cLWNvbmNlYWw7Civlv5jmganosqDnvqkgPCB1bmdyYXRlZnVsOwor55aR5oWuIDwgaGVzaXRhdGlvbjsKK+WWieiIjCA8IG1vdXRocGllY2U7Civoga/pgJogPCBjb25uZWN0aW9uOwor5b6X5LiN5YiwIDwgY2Fubm90XC1nZXQ7Civpp5DntK4gPCB0b1wtc3RhdGlvbjsKK+ewveWHuiA8IHRvXC1sb2dcLW9mZjsKK+WxhCA8IHRoZVwtdmFnaW5hOwor6YeN6KaB5oCnIDwgaW1wb3J0YW5jZTsKK+mkhemQuiA8IGJha2luZ1wtcGFuOwor5a68IDwgdHlyYW5uaWNhbDsKK+aKgOihk+WToSA8IHRlY2huaWNpYW47CivpjpfnrqEgPCBndW5cLWJhcnJlbDsKK+WqnyA8IGx1c3RcLWFmdGVyOwor6ZC15p2/IDwgaXJvblwtcGFuZWw7Civpj4jnkrAgPCBjaGFpblwtbGluazsKK+ebuOWQjOWQjeWtlyA8IGxpa2VcLW5hbWVkOwor56ut55uhIDwgZXhoYXVzdGlvbjsKK+i7jeS6uiA8IHNlcnZpY2VtYW47Civkvb/kurrkv6HmnI0gPCBjb252aW5jaW5nOwor6ICB6aCtIDwgb2xkXC1mZWxsb3c7CivlkajmgankvoYgPCB6aG91XC1lbmxhaTsKK+ePvuixoSA8IGFwcGVhcmFuY2U7Civpjq7nl5sgPCBhbmFsZ2VzaWFjOwor5aCDIDwgY29tcGxpYW5jZTsKK+acieiIiOi2oyA8IGludGVyZXN0ZWQ7Civoh6rlsIogPCBzZWxmXC1wcmlkZTsKK+Wumue+qSA8IGRlZmluaXRpb247CivlnKYgPCB3YXRlclwtZ2F0ZTsKK+WbjCA8IGxvcXVhY2lvdXM7CivlmrIgPCByZWFkXC1hbG91ZDsKK+S4jee2k+aEjyA8IGNhcmVsZXNzbHk7Civnq7bniK0gPCB0b1wtY29tcGV0ZTsKK+aJk+Wtl+apnyA8IHR5cGV3cml0ZXI7CivllL0gPCB0b1wtdHdpdHRlcjsKK+WvpuePviA8IHRvXC1hY2hpZXZlOwor5YK35LqhIDwgY2FzdWFsdGllczsKK+WRtCA8IGJyZWF0aGVcLW9uOwor5YCN5aKe5ZmoIDwgbXVsdGlwbGllcjsKK+alreS9mSA8IHNwYXJlXC10aW1lOwor6YeR5bGs57eaIDwgbWV0YWxcLXdpcmU7CivooYzliJcgPCBwcm9jZXNzaW9uOwor5Y2dIDwgaGFpclwtc3R5bGU7Civnl4XlgYcgPCBzaWNrXC1sZWF2ZTsKK+acn+mZkCA8IHRpbWVcLWxpbWl0Owor5YqPIDwgdG9cLWJ1dGNoZXI7Civpm7vlrZDnqbrplpMgPCBjeWJlcnNwYWNlOwor5YaYIDwgdG9cLW1vdmVcLW9uOwor6K2Y5Yil6JmfIDwgaWRlbnRpZmllcjsKK+aKiuaIsiA8IGFjcm9iYXRpY3M7CivnlJ/mnInmrIogPCBiaXJ0aHJpZ2h0Owor5YGtIDwgdHJhbnNncmVzczsKK+WBnSA8IG5vdFwtZmFjaW5nOwor5raI6LK7IDwgdG9cLWNvbnN1bWU7CivmjIHljaHkurogPCBjYXJkaG9sZGVyOwor6KGM5Lq6IDwgcGVkZXN0cmlhbjsKK+WAgCA8IGJld2lsZGVyZWQ7Civmr5vmvqTmnbEgPCBtYW9cLXplZG9uZzsKK+abuOmdoiA8IGluXC13cml0aW5nOwor5YWt5Y2B5LqUIDwgc2l4dHlcLWZpdmU7CivkvLcgPCBkZXNjZW5kZW50Owor5aSa5aqS6auUIDwgbXVsdGltZWRpYTsKK+evgOWItiA8IHRlbXBlcmFuY2U7CivmirXmipflipsgPCByZXNpc3RhbmNlOwor6IWQ5pWXIDwgY29ycnVwdGlvbjsKK+S2qyA8IGZpbmVcLXRlZXRoOwor5LaJIDwgZ3VpbmVhXC1waWc7CivktaogPCBwdXJlXC1ibGFjazsKK+S1nSA8IGRhcmtcLWJsYWNrOwor54246YarIDwgdmV0ZXJpbmFyeTsKK+W+ruS4jei2s+mBkyA8IG5lZ2xpZ2libGU7CivlgZrlh7ogPCB0b1wtcHV0XC1vdXQ7CivkvZzngrogPCBhY2NvbXBsaXNoOwor5LOVIDwgdGhlXC1waWdlb247Civks4wgPCB0aGVcLWN1Y2tvbzsKK+aKmOWwhCA8IHJlZnJhY3Rpb247CivksZ0gPCBibGFja1wtY2FycDsKK+SxhCA8IGFcLWZsYXRmaXNoOwor5ZaJ54KOIDwgbGFyeW5naXRpczsKK+SwrCA8IHdpbGRcLWdob3N0Owor5L+h5b+DIDwgY29uZmlkZW5jZTsKK+SwhCA8IHNob3J0XC1oYWlyOwor5K+UIDwgdG9cLWluY2xpbmU7Civkr4wgPCB0aGVcLXNhY3J1bTsKK+ePjeiXjyA8IGNvbGxlY3Rpb247CivlpKfkuLvmlZkgPCBhcmNoYmlzaG9wOwor5K6NIDwgY3VybGluZ1wtdXA7CivkrbggPCBhXC1zdGFsbGlvbjsKK+ippueul+ihqCA8IHNwZWFkc2hlZXQ7CivkrLcgPCB3ZWxsXC1mZWVkXC47CivogZbogbcgPCBwcmllc3Rob29kOwor5KulIDwgYVwtd3J5XC1uZWNrOwor6YGU6LO05ZaH5ZibIDwgZGFsYWlcLWxhbWE7CivkqrogPCB0ZWV0aHJpZGdlOwor5KqgIDwgcHVsdmVyaXplZDsKK+mMtuebpCA8IGRpYWxcLXBsYXRlOwor5KmxIDwgYVwtc2NhYmJhcmQ7CivmoYPmqLkgPCBwZWFjaFwtdHJlZTsKK+eZveWPo+mQtSA8IHdoaXRlXC1pcm9uOwor5KmBIDwgdGhpblwtaGFpcnM7Civllq7mqKEgPCBzaW5nbGVtb2RlOwor5Ki9IDwgdG9cLXJlc29sdmU7CivkqKkgPCB0aGVcLXNwaXJpdDsKK+S4jeaPo+WGkuaYpyA8IHZlbnR1cmVcLXRvOwor5Ke/IDwgdGhlXC1tYWdwaWU7Civkp6MgPCB0b1wtc3RvcFwtdXA7Civmg7PosaEgPCB0b1wtaW1hZ2luZTsKK+SmryA8IHZlcnlcLWRlbnNlOwor5LiL6ZmNIDwgdG9cLWRlY2xpbmU7Civkpo0gPCB0b1wtaW5jbHVkZTsKK+SkviA8IHRvXC1jb250YWluOwor5KS9IDwgZmFybVwtdG9vbHM7CivlsaTlo5MgPCBsYW1pbmF0aW9uOwor56ys5Y2B5YWrIDwgZWlnaHRlZW50aDsKK+WRqOmAnyA8IGN5Y2xlXC10aW1lOwor5pq06aKoIDwgc3Rvcm1cLXdpbmQ7Civlr6bpqZflrqQgPCBsYWJvcmF0b3J5Owor5KGnIDwgYVwtY2FycmlhZ2U7CivkoZogPCBpbXBsZW1lbnRzOwor5bGs5ZywIDwgZGVwZW5kZW5jeTsKK+ShjiA8IGFcLXdpbmRsYXNzOwor5KC4IDwgb2JzZXF1aW91czsKK+SgtiA8IHRvXC1wcm9qZWN0Owor5KCpIDwgdG9cLXVyaW5hdGU7CivkoJ8gPCB0b1wtdHJpcFwtdXA7CivmvLLlg7kgPCBhcHByZWNpYXRlOwor5KCYIDwgb25lXC1sZWdnZWQ7CivogZbntpMgPCBob2x5XC1iaWJsZTsKK+S7v+ecnyA8IHRvXC1lbXVsYXRlOwor55yB55Wl56ym6JmfIDwgYXBvc3Ryb3BoZTsKK+S4jeWwjeeitOWFkiA8IG5vdFwtcHJvcGVyOwor5LuL57S5IDwgdG9cLXByZXNlbnQ7Civkn5kgPCB0b1wtc3RhZ2dlcjsKK+SfhCA8IGluXC1hXC1odXJyeTsKK+SdvyA8IGhvbm91cmFiZWw7CivknbcgPCBzZWN1cml0aWVzOwor5J2xIDwgdG9cLXRyb3VibGU7CivknJkgPCBub3RcLWNsZXZlcjsKK+SciyA8IHRvXC1zdXNwZW5kOwor57y66bueIDwgd2Vha1wtcG9pbnQ7Civkm7IgPCB0b1wtZGVjZWl2ZTsKK+SbpiA8IGxpdGlnYXRpb247Civkm4QgPCB0b1wtY29uc29sZTsKK+acrOihjCA8IG9uZScnc1wtbGluZTsKK+a7suWdkSA8IHNld2FnZVwtcGl0Owor56u25oqAIDwgdG91cm5hbWVudDsKK+esrOWNgeS5nSA8IG5pbmV0ZWVudGg7CivklrMgPCBqZWxseVwtZmlzaDsKK+mQteWMoCA8IGJsYWNrc21pdGg7Civku7vnlKggPCB0b1wtYXBwb2ludDsKK+adv+e0mSA8IHBhcGVyYm9hcmQ7CivnrKzljYHkuIkgPCB0aGlydGVlbnRoOwor5JWhIDwgY29tcG9zaXRhZTsKK+apn+mXnOi7iiA8IGxvY29tb3RpdmU7Civkv53mvZTnrrEgPCBsaXR0ZXJcLWJpbjsKK+SUmCA8IGZpc2hcLXBhc3RlOwor6ICB5bm05Lq6IDwgb2xkXC1wZW9wbGU7Civkk7UgPCB0b1wtYmxvc3NvbTsKK+azoumVtyA8IHdhdmVsZW5ndGg7Civkk6QgPCB2ZWdldGF0aW9uOwor5bCI5b+DIDwgYWJzb3JwdGlvbjsKK+SThiA8IHRvXC1jdXRcLXRoZTsKK+SSoiA8IHN3ZWV0XC1mbGFnOwor55m86IGy5rOVIDwgaW50b25hdGlvbjsKK+SRrSA8IHdhclwtdmVzc2VsOwor5JGNIDwgdG9cLXN3YWxsb3c7CivkkKIgPCB0b1wtd3JpbmtsZTsKK+SPrSA8IHRoZVwtY2hlZWtzOwor5I+MIDwgdG9cLXZpYnJhdGU7Civkjp8gPCB0b1wtZmF3blwtb247CivlgIvliKUgPCBpbmRpdmlkdWFsOwor5pyD6KiIIDwgYWNjb3VudGFudDsKK+SNtSA8IHlvdW5nXC1nb2F0Owor5I2eIDwgYVwtZHJhZ1wtbmV0Owor5I2XIDwgdG9cLWhhbmdcLXVwOwor5I2UIDwgYVwtZnVsbFwtbmV0Owor5oSP5oOz5LiN5YiwIDwgdW5leHBlY3RlZDsKK+a1geihgCA8IHNoZWRcLWJsb29kOwor6IKJ54mHIDwgbWVhdFwtc2xpY2U7Civki7EgPCBhXC13aWxkXC15YWs7CivlhrDkuIrpgYvli5UgPCBpY2VcLXNwb3J0czsKK+WFrOmWi+iojuirluacgyA8IG9wZW5cLWZvcnVtOwor5IqpIDwgcmljZVwtZ3Jhdnk7CivmuqvlrqQgPCBncmVlbmhvdXNlOwor576O5LmD5ruL6YasIDwgbWF5b25uYWlzZTsKK+S4jeW5s+WHoSA8IG1hcnZlbGxvdXM7CivmipHliLYgPCB0b1wtaW5oaWJpdDsKK+SHjiA8IHRvXC1zdGFydGxlOwor5L2c5paZIDwgY29uZGltZW50czsKK+SHhyA8IHRoZVwtcGVvcGxlOwor5IaLIDwgdGhlXC1hdXR1bW47CivkhZQgPCBkZWFkXC1jcm9wczsKK+W0keW0meWxsSA8IG10XC5cLWt1bmx1bjsKK+S+v+WjuiA8IGJlZFwtdXJpbmFsOwor5ISfIDwgdG9cLXdvcnNoaXA7Civkvb/mgJIgPCBleGFzcGVyYXRlOwor5L6d5bGsIDwgZGVwZW5kZW5jZTsKK+SBniA8IGFcLXByb3ZpbmNlOwor5IGBIDwgc3RyYWJpc211czsKK+etieWIsCA8IHdhaXRcLXVudGlsOwor5bCP5aeQIDwgeW91bmdcLWxhZHk7Civku6PooajlnJggPCBkZWxlZ2F0aW9uOwor472oIDwgZnJhZ21lbnRlZDsKK+O9oyA8IGFcLWZyb250aWVyOwor472YIDwgYm9yZGVybGFuZDsKK+ahjOW4gyA8IHRhYmxlY2xvdGg7CivjvLkgPCBlYXJ0ZW53YXJlOwor6IOM5pmvIDwgYmFja2dyb3VuZDsKK+S4jeiuiiA8IHVuY2hhbmdpbmc7CivkuIDosqsgPCBjb25zaXN0ZW50Owor47qzIDwgYmxhY2tcLW1pY2E7CivjuoUgPCB0aGVcLW1vbmtleTsKK+aJueWHhiA8IHRvXC1hcHByb3ZlOwor47ioIDwgYVwtYmlnXC1idWxsOwor47iMIDwgdG9cLXR3aW5rbGU7Civjt7cgPCB0aGlja1wtc291cDsKK+O2rSA8IGFsbW9zdFwtZHJ5Owor47acIDwgZGVlcFwtd2F0ZXI7Civnp5Hns7sgPCBkZXBhcnRtZW50Owor47WAIDwgd2F0ZXJcLWZsb3c7CivmhIHnt5IgPCBtZWxhbmNob2x5Owor56We6KmxIDwgZmFpcnlcLXRhbGU7CivkvY/miYAgPCBoYWJpdGF0aW9uOwor5b2x5YOP5qqUIDwgaW1hZ2VcLWZpbGU7Civjsq8gPCBsb25nXC1oYWlyeTsKK+mhm+imhiA8IHN1YnZlcnNpb247CivjsowgPCBkb2cnJ3NcLWhhaXI7CivjsokgPCBlZ2dcLXNoZWxsczsKK+OxpiA8IHRvXC1kaXNjYXJkOwor47GcIDwgcGVzdGlsZW5jZTsKK+ahiOWtkCA8IGxvbmdcLXRhYmxlOwor46+HIDwgYVwtc3RvY2thZGU7CivlsYXkvY/ogIUgPCBpbmhhYml0YW50Owor46yxIDwgdG9cLXJlcGxhY2U7CivjrKogPCB0b1wtZm9sZFwtdXA7Civjq6QgPCBhXC1sb25nXC1kYXk7CivjqowgPCB0b1wtbGVhZFwtb247CivjqbkgPCB0b1wtcGlsZVwtb247CivjqZ4gPCB0b1wtYmFja1wtdXA7CivjqK8gPCB0b1wtZW5sYXJnZTsKK+OoriA8IHRvXC1saWZ0XC11cDsKK+a3mOaxsCA8IHRvXC1kaWVcLW91dDsKK+iCpeaWmSA8IGZlcnRpbGl6ZXI7CivjpoIgPCBjb25zdGFudGx5Owor46W2IDwgdG9cLWZpbGxcLXVwOwor46WjIDwgdG9cLWJlbmVmaXQ7CivjpLcgPCB0b1wtZGViYXVjaDsKK+OkkCA8IGRpc2hhcm1vbnk7Civni6Hovq8gPCB0b1wtcXVpYmJsZTsKK+OjvSA8IHRvXC1mb3JnaXZlOwor46OFIDwgYm93XC1zdHJpbmc7Civjo4AgPCB0b1wtcmVib3VuZDsKK+OirSA8IGFcLWJvd1wtY2FzZTsKK+OimiA8IGFcLWNvcnJpZG9yOwor46KPIDwgYVwtY2Vzc3Bvb2w7CivjoaUgPCB0b1wtY3VybFwtdXA7CivmmrTooYwgPCBzYXZhZ2VcLWFjdDsKK+Wbm+eZvuWEhCA8IDQwXC1iaWxsaW9uOwor5a+m5ZyoIDwgaW5cLXJlYWxpdHk7Civoib7mu4vnl4Xnl4Xmr5IgPCBhaWRzXC12aXJ1czsKK+OeoCA8IG1hbGVcLW9yZ2FuOwor6Zm46LuN5Lit5bCJIDwgbGlldXRlbmFudDsKK+OejiA8IGJvZHlcLXdhc3RlOwor452vIDwgdG9cLXNvam91cm47CivjmqAgPCBmdWxsXC1ncm93bjsKK+OZuiA8IGNyb3NzXC1yb2FkOwor6LaF5Y2HIDwgZXhhbHRhdGlvbjsKK+WPm+i7jSA8IHJlYmVsXC1hcm15Owor45inIDwgcHJlY2VkZW5jZTsKK+eNuOeptCA8IGFuaW1hbFwtZGVuOwor45esIDwgdGhpY2tcLWxpcHM7Civjl6sgPCB0b1wtd2hpc3BlcjsKK+W9quW9ouWkp+a8oiA8IGJ1cmx5XC1jaGFwOwor6K2m6ZCYIDwgYWxhcm1cLWJlbGw7CivjloYgPCB0b1wtY29uZGVtbjsKK+iDluWtkCA8IGZhdFwtcGVyc29uOwor45WNIDwgdG9cLWhlYXBcLXVwOwor45WGIDwgZmluZVwtc3RvbmU7CivjlLcgPCB0b1wtc2VjcmV0ZTsKK+OUmCA8IHRvXC1kZWdyYWRlOwor45STIDwgdG9cLXN0YW1tZXI7CivjlIwgPCB0b1wtY3V0XC1vZmY7Civjk7ogPCBjYXN0cmF0aW9uOwor5a2Y5pS+IDwgdG9cLWRlcG9zaXQ7CivppJPmrbsgPCBzdGFydmF0aW9uOwor45K3IDwgdG9cLXByb3NwZXI7CivjkKQgPCB0b1wtaW1wbG9yZTsKK+iQrOS6i+mBlOWNoSA8IG1hc3RlcmNhcmQ7CivkvbXlkJ4gPCBzd2FsbG93XC11cDsKK+WtuOW+kiA8IGFwcHJlbnRpY2U7Civmnb/mqIEgPCBzaGVldFwtcGlsZTsKK+WQpuaxuuasiiA8IHZldG9cLXBvd2VyOwor5oiQ5YiGIDwgaW5ncmVkaWVudDsKK+W0h+aLnOiAhSA8IHdvcnNoaXBwZXI7CivmgpTnvaogPCBjb252aWN0aW9uOwor6IO95YqbIDwgY2FwYWJpbGl0eTsKK+aIsuWKh+WMliA8IHRoZWF0cmljYWw7Civlv4XpoIggPCB0b1wtaGF2ZVwtdG87Civogq/lrpogPCB0b1wtYmVcLXN1cmU7Civku7vmgKcgPCBjYXByaWNpb3VzOwor546L54mMIDwgdHJ1bXBcLWNhcmQ7CivmlrDogZ7lqpLpq5QgPCBuZXdzXC1tZWRpYTsKK+WgheWumuS4jeenuyA8IHVuc3dlcnZpbmc7CivpnZ7nm4jliKkgPCBub25cLXByb2ZpdDsKK+WNl+mdoiA8IHNvdXRoXC1zaWRlOwor5L2/5a655piTIDwgZmFjaWxpdGF0ZTsKK+eglOeptuWToSA8IHJlc2VhcmNoZXI7CivoloTojbcgPCBmaWVsZFwtbWludDsKK+mmrOWKmyA8IGhvcnNlcG93ZXI7CivmnIjnkIMgPCBcKHRoZVwpXC1tb29uOwor54++5oiQIDwgcmVhZHlcLW1hZGU7CivorbDoq5YgPCB0b1wtY29tbWVudDsKK+miqOa/lSA8IHJoZXVtYXRpc207CivnvqTnnL4gPCB0aGVcLW1hc3NlczsKK+S4ieaciOS6jOWNgeS4ieiZnyA8IG1hcmNoXC0yM3JkOwor5q2k5pmC5Lul5YmNIDwgaGVyZXRvZm9yZTsKK+S7geaFiCA8IGJlbmV2b2xlbnQ7Civnm67mk4rogIUgPCBleWV3aXRuZXNzOwor5LuK5b6MIDwgaGVuY2Vmb3J0aDsKK+iZm+aTrCA8IGZpY3RpdGlvdXM7CivlsIjploDljJYgPCBzcGVjaWFsaXplOwor5aSa6buoIDwgbXVsdGlwYXJ0eTsKK+S4jeeVtiA8IHVuc3VpdGFibGU7CivmsojokL0gPCBzaW5rXCxcLWZhbGw7CivorJvov7AgPCB0YWxrXC1hYm91dDsKK+Wuo+S9iCA8IHRvXC1kZWNsYXJlOwor5pGp5omY6LuKIDwgbW90b3JjeWNsZTsKK+acnemuruaIsOeIrSA8IGtvcmVhblwtd2FyOwor6byT5o6MIDwgdG9cLWFwcGxhdWQ7Civku6XlpJYgPCBhcGFydFwtZnJvbTsKK+ioguizvOiAhSA8IHN1YnNjcmliZXI7CivniIbpn7MgPCBzb25pY1wtYm9vbTsKK+Wkp+mrlCA8IGluXC1nZW5lcmFsOwor6aOf5oyHIDwgZm9yZWZpbmdlcjsKK+eJtOinuCA8IGNvbnRyYWRpY3Q7CivnqIvluo8gPCBwcm9jZWR1cmVzOwor5piO6KiAIDwgcHJvbm91bmNlZDsKK+mhr+W+rumPoSA8IG1pY3Jvc2NvcGU7CivmnKzmnIggPCB0aGlzXC1tb250aDsKK+WOn+eUn+izqiA8IHByb3RvcGxhc207CivlpJrmlrnpnaIgPCBtYW55XC1zaWRlZDsKK+WTsuWtuCA8IHBoaWxvc29waHk7CivmsKPosaEgPCBtZXRlb3JvbGd5Owor5LqS5oOgIDwgcmVjaXByb2NhbDsKK+WQq+eHkCA8IHBob3NwaG9yaWM7Civmm7TmraMgPCBjb3JyZWN0aW9uOwor6buR5p2/IDwgYmxhY2tib2FyZDsKK+aWsOiBnuWtuCA8IGpvdXJuYWxpc207CivkuI3lrproqZ4gPCBpbmZpbml0aXZlOwor6aCQ55+lIDwgYW50aWNpcGF0ZTsKK+S7peWPiiA8IGFzXC13ZWxsXC1hczsKK+S4u+agvCA8IG5vbWluYXRpdmU7CivpjITlj5YgPCB0b1wtcmVjcnVpdDsKK+aWsOmDjiA8IGJyaWRlZ3Jvb207CivogIzlvowgPCBhZnRlclwtdGhhdDsKK+aCsuatjCA8IHNhZFwtbWVsb2R5Owor5Lq65Z2HIDwgcGVyXC1jYXBpdGE7Civlj6/nlpEgPCBzdXNwaWNpb3VzOwor6ICM5beyIDwgdGhhdCcnc1wtYWxsOwor6Zuj5Lul572u5L+hIDwgaW5jcmVkaWJsZTsKK+a1tOW3viA8IGJhdGhcLXRvd2VsOwor5ZCK54eIIDwgY2hhbmRlbGllcjsKK+WFseWSjOaUv+mrlCA8IHJlcHVibGljYW47CivogbLlg7kgPCByZXB1dGF0aW9uOwor5LiN57Ch5ZauIDwgbm90XC1zaW1wbGU7Civlj5flgrflrrMgPCBiZVwtaW5qdXJlZDsKK+err+ezu+e1sSA8IGVuZFwtc3lzdGVtOwor6JaE54mHIDwgdGhpblwtc2xpY2U7Civmm7TmlrAgPCB1cFwtdG9cLWRhdGU7CivpoavmoJcgPCB0b1wtdHJlbWJsZTsKK+mbhumrlCA8IGNvbGxlY3RpdmU7CivlpJbkuqTmiYvohZUgPCBkaXBsb21hdGljOwor5pWX6ZyyIDwgXChvZlwtYVwtcGxvdDsKK+ippumplyA8IGV4cGVyaW1lbnQ7Civkurrlj6MgPCBwb3B1bGF0aW9uOwor5LiJ55m+5YSEIDwgMzBcLWJpbGxpb247CivmrbjpoIYgPCBzdWJtaXNzaW9uOwor5aSx6LmkIDwgYmVcLW1pc3Npbmc7Civpo73lkowgPCBzYXR1cmF0aW9uOwor5q2h6aiwIDwganViaWxhdGlvbjsKK+W+jOijlCA8IGRlc2NlbmRhbnQ7Civph5HniYwgPCBnb2xkXC1tZWRhbDsKK+mdnuWwjeeosSA8IGFzeW1tZXRyaWM7CivkuI3mnIMgPCBpbXByb2JhYmxlOwor5LiK5pyIIDwgbGFzdFwtbW9udGg7CivljYrmsbros70gPCBzZW1pZmluYWxzOwor56Kn57agIDwgZGFya1wtZ3JlZW47CivogIHlpZcgPCBvbGRcLXRoaW5nczsKK+WPiueJqSA8IHRyYW5zaXRpdmU7CivojqvpoIjmnIkgPCBncm91bmRsZXNzOwor5LiN6LK36LOsIDwgbm90XC1idXlcLWl0Owor56OB55uk6amF5YuV5ZmoIDwgZGlzbFwtZHJpdmU7Civpm7vou4ogPCB0cm9sbGV5YnVzOwor6aGn5oWuIDwgbWlzZ2l2aW5nczsKK+WPr+avlCA8IGNvbXBhcmFibGU7CivohZPnq4vmr5Tmm7ggPCBwaGlsaXBpYW5zOwor5LqL5YWIIDwgaW5cLWFkdmFuY2U7CivorabniqwgPCBwb2xpY2VcLWRvZzsKK+WJm+mrlCA8IHJpZ2lkXC1ib2R5Owor5pmv5rCjIDwgcHJvc3Blcml0eTsKK+WNnOetriA8IGRpdmluYXRpb247CivlpbPoo53oo4HnuKvluKsgPCBkcmVzc21ha2VyOwor5LiN5b+rIDwgYmVcLXVuaGFwcHk7CivlpbPlrbjnlJ8gPCBzY2hvb2xnaXJsOwor5pS56YCyIDwgdG9cLWltcHJvdmU7Civpm7voppYgPCB0ZWxldmlzaW9uOwor5b6M6ICFIDwgdGhlXC1sYXR0ZXI7Civnuo/nuZ4gPCBpbnRlcnR3aW5lOwor5Yqg6YCfIDwgYWNjZWxlcmF0ZTsKK+irs+e3tCA8IGNvbnZlcnNhbnQ7CivkuIvlgIvmnIggPCBuZXh0XC1tb250aDsKK+mojuWjq+miqOagvCA8IGtuaWdodGhvb2Q7Civpj4jot6/lsaQgPCBsaW5rXC1sYXllcjsKK+S4gOW6piA8IGZvclwtYVwtdGltZTsKK+atoei/jiA8IHRvXC13ZWxjb21lOwor5YyW5aad6Iie5pyDIDwgbWFzcXVlcmFkZTsKK+WiqOmPoSA8IHN1bmdsYXNzZXM7CivliZ3pm6IgPCBcKG9mXC10aXNzdWU7CivlvYjol6UgPCBhbW11bml0aW9uOwor5rqr5ZKM5oCnIDwgdGVuZGVybmVzczsKK+S4jeWuiSA8IGludHJhbnF1aWw7CivmnJ/liIogPCBwZXJpb2RpY2FsOwor55+l6Ka6IDwgcGVyY2VwdGlvbjsKK+aJgOacieiAhSA8IHByb3ByaWV0b3I7CivlkIzmg4UgPCBjb21wYXNzaW9uOwor6YGp6YWNIDwgYWRhcHRhdGlvbjsKK+WQiOaEjyA8IGFjY2VwdGFibGU7CivlpKfoh6MgPCBjaGFuY2VsbG9yOwor5ZCM5oCnIDwgaG9tb3NleHVhbDsKK+aXpeebiiA8IGRheVwtYnlcLWRheTsKK+WNiuepuuS4rSA8IGluXC1taWRcLWFpcjsKK+acrOS7vSA8IG9uZScnc1wtZHV0eTsKK+Wls+acjeeJqeWToSA8IHN0ZXdhcmRlc3M7CivmspLmnInnn6XoprogPCBpbnNlbnNpYmxlOwor5LiN562J5byPIDwgaW5lcXVhbGl0eTsKK+acg+WPiyA8IG1lbWJlcnNoaXA7CivmmpfplpPlhZIgPCBpbm5lclwtcm9vbTsKK+iHquWLleWMliA8IGF1dG9tYXRpb247CivkuI3lpKAgPCBub3RcLWVub3VnaDsKK+WWruaWuemdoiA8IHVuaWxhdGVyYWw7Civnp4HkuIsgPCBpblwtcHJpdmF0ZTsKK+azouWzsCA8IHdhdmVcLWNyZXN0Owor5LiJ5aSpIDwgdGhyZWVcLWRheXM7Civlj43ml6UgPCBhbnRpXC1qYXBhbjsKK+W7uuitsCA8IHRvXC1wcm9wb3NlOwor5L2b5pWZ5b6SIDwgYVwtYnVkZGhpc3Q7Civms6LlsI4gPCB3YXZlXC1ndWlkZTsKK+WpouWlsyA8IHNsYXZlXC1naXJsOwor5rKS5pS2IDwgY29uZmlzY2F0ZTsKK+W/q+a0uyA8IGdheVwsXC1oYXBweTsKK+WPr+aCsiA8IGxhbWVudGFibGU7CivoqZXoqLsgPCBjb21tZW50YXJ5Owor5b+F54S2IDwgaW5ldml0YWJsZTsKK+WNiueQgyA8IGhlbWlzcGhlcmU7Civpn7/mh4kgPCByZXNwb25kXC10bzsKK+Wkp+e2sSA8IG1haW5cLXBvaW50Owor5rCj5Yui5rS25rS2IDwgYWdncmVzc2l2ZTsKK+eDpOm0qCA8IHJvYXN0XC1kdWNrOwor5q2M6KmeIDwgc29uZ1wtbHlyaWM7CivkuKblhaUgPCBtZXJnZVwtaW50bzsKK+W8seiEiCA8IHdlYWtcLXB1bHNlOwor5pON6Ii15a6kIDwgcGlsb3Rob3VzZTsKK+WOn+acrCA8IG9yaWdpbmFsbHk7CivlkLjlkK4gPCB0b1wtc3Vja1wtaW47CivniIbnoLQgPCB0b1wtYmxvd1wtdXA7CivpgZPos4AgPCBjb21wbGltZW50Owor5Y+W5b6XIDwgdG9cLWFjcXVpcmU7CivkuIrljYogPCBmaXJzdFwtaGFsZjsKK+aVmeiCsiA8IHRvXC1lZHVjYXRlOwor5LiN5YuVIDwgbW90aW9ubGVzczsKK+S4g+WNgeW5tOS7oyA8IHRoZVwtMTk3MCcnczsKK+ilv+m7niA8IHdlc3RcLXBvaW50Owor5paX55y8IDwgY3Jvc3NcLWV5ZWQ7CivnnLzpj6EgPCBzcGVjdGFjbGVzOwor5LiN5YKZIDwgdW5wcmVwYXJlZDsKK+aBq+WahyA8IGludGltaWRhdGU7CivlpYnnjbsgPCBjb25zZWNyYXRlOwor5LiN5L6dIDwgbm90XC1jb21wbHk7Civpm7vllLHmqZ8gPCBwaG9ub2dyYXBoOwor5paH55uyIDwgaWxsaXRlcmF0ZTsKK+aYjuaZuiA8IG5vdFwtdW53aXNlOwor5rWB56iL5ZyWIDwgZmxvd1wtY2hhcnQ7Civnm6PnnaPogIUgPCBzdXBlcnZpc29yOwor5LiA55m+5LqU5Y2B5YSEIDwgMTVcLWJpbGxpb247Civmkp7ph50gPCBmaXJpbmdcLXBpbjsKK+WNl+altSA8IHNvdXRoXC1wb2xlOwor5omA5pyJ54mpIDwgYmVsb25naW5nczsKK+imlueql+aWsOaKgCA8IHdpbmRvd3NcLW50Owor5LqM5Y2B5LiAIDwgdHdlbnR5XC1vbmU7CivkuoYgPCB0b1wtZmluaXNoOwor5a2QIDwgb2Zmc3ByaW5nOwor5b65IDwgcGVuZXRyYXRlOwor6KaBIDwgbmVjZXNzYXJ5Owor6L6xIDwgaHVtaWxpYXRlOwor552AIDwgbWFrZVwtbW92ZTsKK+aIkCA8IGNvbXBsZXRlZDsKK+edoyA8IHN1cGVydmlzZTsKK+i8ryA8IGdhdGhlclwtdXA7CivlvKUgPCBleHRlbnNpdmU7Civnvo4gPCBiZWF1dGlmdWw7Civlu4IgPCBzaWRlXC1yb29tOwor6ZeuIDwgYXNrXC1hYm91dDsKK+W6rSA8IGNvdXJ0eWFyZDsKK+eZgiA8IGJlXC1oZWFsZWQ7Civnl7ogPCBwYXJhbHlzaXM7Civlt64gPCB0b1wtZGlmZmVyOwor6Zq+IDwgZGlmZmljdWx0Owor6LaFIDwganVtcFwtb3ZlcjsKK+eVsCA8IGRpZmZlcmVudDsKK+S6siA8IHJlbGF0aXZlczsKK+eVqyA8IGRlbGluZWF0ZTsKK+eVnCA8IGxpdmVzdG9jazsKK+eVkSA8IGRyeVwtZmllbGQ7CivnlJggPCBzd2VldG5lc3M7CivorqQgPCByZWNvZ25pemU7CivosrQgPCBleHBlbnNpdmU7Civosp0gPCBzZWFcLXNoZWxsOwor6L6+IDwgYXJyaXZlXC1hdDsKK+S8lyA8IG11bHRpdHVkZTsKK+WAkiA8IGZhbGxcLW92ZXI7CivnjqkgPCBwbGF5XC13aXRoOwor5YOPIDwgYVwtcGljdHVyZTsKK+WuhSA8IHJlc2lkZW5jZTsKK+aNriA8IHRvXC1vY2N1cHk7Civora8gPCB0cmFuc2xhdGU7CivorasgPCB0YWxrYXRpdmU7CivpgKAgPCBjb25zdHJ1Y3Q7CivlqrwgPCBvbGRcLXdvbWFuOwor54qgIDwgc2FjcmlmaWNlOwor54mSIDwgZG9jdW1lbnRzOwor54mMIDwgc2lnbmJvYXJkOwor54iQIDwgZmlyZXBsYWNlOwor5LmFIDwgbG9uZ1wtdGltZTsKK+WmviA8IGNvbmN1YmluZTsKK+WInSA8IGJlZ2lubmluZzsKK+mZpCA8IGVsaW1pbmF0ZTsKK+WGtSA8IGNvbmRpdGlvbjsKK+S5sSA8IGNvbmZ1c2lvbjsKK+WImyA8IGVzdGFibGlzaDsKK+emjyA8IGhhcHBpbmVzczsKK+WBhyA8IGZhbHNlaG9vZDsKK+mhviA8IGxvb2tcLWJhY2s7CivooLYgPCBzaWxrd29ybXM7CivmuJAgPCBncmFkdWFsbHk7CivnnqcgPCBnbGFuY2VcLWF0Owor5Z+SIDwgZW5jbG9zdXJlOwor5Z+DIDwgZmluZVwtZHVzdDsKK+ieoiA8IGdsb3dcLXdvcm07CivpgIAgPCBzdGVwXC1iYWNrOwor6Jy7IDwgZHJhZ29uZmx5Owor57+7IDwgZmxpcFwtb3ZlcjsKK+WcjyA8IHRvXC1jaXJjbGU7Civmma4gPCB1bml2ZXJzYWw7Civom7kgPCBjaHJ5c2FsaXM7CivkuLQgPCBkcmF3XC1uZWFyOwor5Y2PIDwgYmVcLXVuaXRlZDsKK+a5ryA8IGhvdFwtd2F0ZXI7CivkvosgPCBwcmVjZWRlbnQ7CivmtLIgPCBjb250aW5lbnQ7Civmnb4gPCBwaW5lXC10cmVlOwor5LyZIDwgY29tcGFuaW9uOwor5q+rIDwgZmluZVwtaGFpcjsKK+iVjiA8IGJ1Y2t3aGVhdDsKK+i+kyA8IHRyYW5zcG9ydDsKK+aKmCA8IGJyZWFrXC1vZmY7CivmsbAgPCBleGNlc3NpdmU7CivlkJsgPCBzb3ZlcmVpZ247CivljbEgPCBkYW5nZXJvdXM7CivmpoIgPCBnZW5lcmFsbHk7CivljoQgPCBhZHZlcnNpdHk7CivmsYcgPCBjb25jb3Vyc2U7CivljokgPCB3aGV0c3RvbmU7CivpmYQgPCBhZGhlcmVcLXRvOwor6IKpIDwgc2hvdWxkZXJzOwor6a2YIDwgbmlnaHRtYXJlOwor6I2SIDwgd2FzdGVsYW5kOwor6ayxIDwgbHV4dXJpYW50Owor5YygIDwgY3JhZnRzbWFuOwor5YyCIDwgZnJhZ3JhbmNlOwor5Yu4IDwgcmVjb21tZW5kOwor6aOYIDwgd2hpcmx3aW5kOwor54KuIDwgbGFyZ2VcLWd1bjsKK+mDjiA8IGdlbnRsZW1hbjsKK+mZqiA8IGFjY29tcGFueTsKK+WHnSA8IGNvYWd1bGF0ZTsKK+WJqSA8IGxlZnRvdmVyczsKK+mlkiA8IGJvdW50aWZ1bDsKK+iCmCA8IHRoZVwtZWxib3c7CivogpYgPCBsb29rXC1saWtlOwor5pioIDwgeWVzdGVyZGF5Owor5pqCIDwgdGVtcG9yYXJ5Owor6YCSIDwgaGFuZFwtb3ZlcjsKK+elpSA8IGdvb2RcLWx1Y2s7CivlgLkgPCB0ZW1wZXJhdGU7Civku5cgPCByZWx5XC11cG9uOwor5p+/IDwgcGVyc2ltbW9uOwor6ZSuIDwgZG9vclwtYm9sdDsKK+aeryA8IGRyaWVkXC1vdXQ7CivojrEgPCBnb29zZWZvb3Q7CivotZQgPCBpbmRlbW5pZnk7CivpgKIgPCBjb21lXC11cG9uOwor552BIDwgb3BlblwtZXllczsKK+WYvyA8IGJlXC1zaWxlbnQ7CivotKogPCBiZVwtZ3JlZWR5Owor6YCdIDwgcGFzc1wtYXdheTsKK+iJviA8IGFydGVtaXNpYTsKK+iijSA8IGxvbmdcLWdvd247CivlhqQgPCBncmlldmFuY2U7Civov6ogPCBlbmxpZ2h0ZW47CivlmIkgPCBleGNlbGxlbnQ7Civplr4gPCB0aHJlc2hvbGQ7Civntr4gPCB0aGluXC1zaWxrOwor6IaAIDwgdXBwZXJcLWFybTsKK+mhvSA8IG9ic3RpbmF0ZTsKK+atiSA8IGRlZmljaWVudDsKK+W4hSA8IGNvbW1hbmRlcjsKK+aGviA8IHRvXC1yZWdyZXQ7CivlioggPCBjdXRcLWFwYXJ0Owor5ouCIDwgc2hha2VcLW9mZjsKK+etiCA8IGFycm93XC1lbmQ7CivnhqwgPCBjb29rXC1kb3duOwor56i8IDwgc293XC1ncmFpbjsKK+aBjSA8IHNlZW1pbmdseTsKK+e7oyA8IGVtYnJvaWRlcjsKK+aHgyA8IGNvdXJ0ZW91czsKK+ihrCA8IHVuZGVyd2VhcjsKK+aFiiA8IHRvXC1yZXNlbnQ7Civmva0gPCBkZWVwXC1wb29sOwor56GdIDwgc2FsdHBldGVyOwor6aqkIDwgcHJvY2VkdXJlOwor5b+/IDwgZ2V0XC1hbmdyeTsKK+WdoCA8IGZhbGxcLWRvd247CivonbYgPCBidXR0ZXJmbHk7CivnhIkgPCB0aGVyZXVwb247CivnpoAgPCByZXBvcnRcLXRvOwor5oyrIDwgcHVzaFwtZG93bjsKK+mzhCA8IGFsbGlnYXRvcjsKK+iwkCA8IGhhcm1vbml6ZTsKK+WxjiA8IGV4Y3JlbWVudDsKK+iRsSA8IHNjYWxsaW9uczsKK+aeoyA8IGRhdGVcLXRyZWU7CivosLQgPCByZXByaW1hbmQ7CivmsbkgPCB0dXJidWxlbnQ7Civms7sgPCBkcmFpblwtb2ZmOwor54CRIDwgd2F0ZXJmYWxsOwor5qiKIDwgYVwtcmFpbGluZzsKK+aVmyA8IGRyYXdcLWJhY2s7CivojLUgPCBhXC1jdXNoaW9uOwor5qOVIDwgaGVtcFwtcGFsbTsKK+i+lyA8IHR1cm5cLW92ZXI7CivmgaQgPCBzaG93XC1waXR5Owor5L6IIDwgbHV4dXJpb3VzOwor5rKBIDwgc29ha1wtaW50bzsKK+WMoyA8IHNtYWxsXC1ib3g7CivmjY4gPCB0b1wtc2VsZWN0Owor55eeIDwgZHlzcGVwc2lhOwor552QIDwgc3F1aW50XC1hdDsKK+WepiA8IGN1bHRpdmF0ZTsKK+a1kiA8IHJpdmVyYmFuazsKK+iRtSA8IHN1bmZsb3dlcjsKK+edqyA8IGV5ZWxhc2hlczsKK+WTuiA8IGNoZXdcLWZvb2Q7Civnq6MgPCB0ZXJtaW5hdGU7Civlm5QgPCBtdXR0ZXJpbmc7Civol5AgPCBkaXNyZWdhcmQ7Civln6AgPCBwb3J0XC1jaXR5Owor6I2kIDwgbWVhdFwtZGlldDsKK+ickiA8IG1pbGxpcGVkZTsKK+iPhyA8IG11c2hyb29tczsKK+ixmiA8IHNtYWxsXC1waWc7CivmspMgPCBjb25uZWN0ZWQ7CivlvKkgPCBjcm9zc1wtYm93Owor5q6HIDwgZGllXC15b3VuZzsKK+agiCA8IHdhcmVob3VzZTsKK+mGuiA8IGdldFwtZHJ1bms7CivonIggPCBjZW50aXBlZGU7CivmhKsgPCBndWlsZWxlc3M7CivosJkgPCB2ZXJzZWRcLWluOwor54a5IDwgZGltXC1saWdodDsKK+aAgiA8IGluc3RpZ2F0ZTsKK+mBmyA8IHRha2VcLXdhbGs7Civpur4gPCBhXC1wZW5uYW50Owor5aqyIDwgbWFycnlcLW9mZjsKK+mVgSA8IG1hZ25lc2l1bTsKK+aksCA8IHBhbG1cLXRyZWU7Civnl6IgPCBkeXNlbnRlcnk7Civll5EgPCBlYXRcLXNlZWRzOwor6JqvIDwgZWFydGh3b3JtOwor6JyaIDwgY29ja3JvYWNoOwor6ZiGIDwgaGlnaFwtZG9vcjsKK+aTgCA8IHJvbGxcLWZsYXQ7CivooqQgPCBsb25naXR1ZGU7Civpup0gPCBtdXNrXC1kZWVyOwor5L27IDwgZnJpdm9sb3VzOwor6ZK+IDwgcG90YXNzaXVtOwor5a2RIDwgcmVtYWluaW5nOwor5qqEIDwgY2FsbFwtYXJtczsKK+majSA8IGRyeVwtZGl0Y2g7Civor78gPCBwYXNzXC1idWNrOwor6YCEIDwgYVwtc3VybmFtZTsKK+aijyA8IGhhbmRjdWZmczsKK+mSuiA8IGJyb2FkXC1heGU7Civmn5EgPCB0YW5nZXJpbmU7CivkuZwgPCB0b1wtc3F1aW50Owor5aiyIDwgYVwtZ29kZGVzczsKK+W/nSA8IGRpc2dyYWNlZDsKK+ivriA8IGNyaXRpY2l6ZTsKK+mzjyA8IGh1Z2VcLWZpc2g7CivonIcgPCBqZWxseWZpc2g7Civliq0gPCBlbmNvdXJhZ2U7CivnmaMgPCByaW5nd29ybXM7Civnu6YgPCBzaWxrXC1jb3JkOwor6ZK4IDwgcGx1dG9uaXVtOwor6aaXIDwgY2hlZWtib25lOwor6ZSwIDwgbWFuZ2FuZXNlOwor5L6qIDwgYVwtY29tcGFueTsKK+WHqyA8IHdpbGRcLWR1Y2s7Civnl7EgPCBoZWF0XC1yYXNoOwor55eIIDwgY2FyYnVuY2xlOwor5oKMIDwgYnJvdGhlcmx5Owor5Ya8IDwgXChzdXJuYW1lXCk7CivpuacgPCBwYXJ0cmlkZ2U7CivmgpIgPCBzb3Jyb3dmdWw7CivmgIMgPCByZWdyZXRmdWw7CivlopIgPCB3ZXRcLXRpbHRoOwor6Ki+IDwgYmFkXC1tb3V0aDsKK+WcriA8IGRlc3Ryb3llZDsKK+myiCA8IHNlYVwtcGVyY2g7CivmlIkgPCB0b1wtYmVja29uOwor6bKHIDwgc2hlYXRmaXNoOwor6IaIIDwgZGlhcGhyYWdtOwor54qNIDwgYVwtYnVsbG9jazsKK+mUlyA8IGdlcm1hbml1bTsKK+mOjyA8IHB1cmVcLWdvbGQ7CivplYUgPCBhbWVyaWNpdW07CivovoIgPCBhXC1jaGFyaW90Owor6Le4IDwgY2xlYXJcLXdheTsKK+eFsyA8IGJlXC1idXJuZWQ7Civnib4gPCB0b1wtb3Bwb3NlOwor5piAIDwgc3VuXC1saWdodDsKK+S5qSA8IHRvXC1kaXZpbmU7Civnvp8gPCBoeWRyb3hpZGU7Civojb0gPCBjb3JpYW5kZXI7Civnu6AgPCB3ZWxsXC1yb3BlOwor5ZOTIDwgZ2FycnVsb3VzOwor6ISsIDwgYVwtYmxhZGRlcjsKK+aIoSA8IHN1Ymp1Z2F0ZTsKK+i+hyA8IGhhbmRcLWNhcnQ7CivpuZogPCBjb3Jtb3JhbnQ7CivplZ4gPCBhcnJvd2hlYWQ7Civoj7AgPCB3aWxkXC1yaWNlOwor6KCWIDwgaW5jaFwtd29ybTsKK+mTqyA8IGxhcmdlXC1ob2U7CivmsJggPCBkZXV0ZXJpdW07Civpu74gPCB0b1wtc3RyaXZlOwor6ZWnIDwgbGFudGhhbnVtOwor5Z6hIDwgcGxvd1wtc29pbDsKK+eClCA8IGFjZXR5bGVuZTsKK+mVsSA8IHl0dGVyYml1bTsKK+mSlSA8IG5lb2R5bWl1bTsKK+W/rSA8IGRlbGlnaHRlZDsKK+iLtCA8IHNhY2tjbG90aDsKK+iwsyA8IHRvXC1kZWNpZGU7Civpkq8gPCBwYWxsYWRpdW07CivnorIgPCB0ZWxsdXJpdW07CivnkqkgPCBqYWRlXC1yaW5nOwor6aWrIDwgc3VyZmVpdGVkOwor5pKZIDwgZWNvbm9taXplOwor6JO8IDwgc21hcnR3ZWVkOwor6aWUIDwgYnJlYWtmYXN0Owor6ZS2IDwgc3Ryb250aXVtOwor5piDIDwgYWZ0ZXJub29uOwor5ZSqIDwgdG9cLXJlY2l0ZTsKK+WEhyA8IGluZ2VuaW91czsKK+mytCA8IGZpc2hcLWd1dHM7CivpsoUgPCBmaXNoXC1uYW1lOwor6ZONIDwgYmVyeWxsaXVtOwor54azIDwgdG9cLXNwcmVhZDsKK+iDjSA8IGd1YW5pZGluZTsKK+mykCA8IGdsb2JlZmlzaDsKK+mFkCA8IGFuaHlkcmlkZTsKK+ihhCA8IGVwaXN0YXhpczsKK+efpyA8IG11Y2hcLW1vcmU7CivmgqsgPCBzaW5jZXJpdHk7CivohqYgPCBwaG9zcGhpbmU7CivnvKMgPCBmaW5lXC1zaWxrOwor5a6EIDwgYVwtdHJhaXRvcjsKK+mYjCA8IHdlblwteGlhbmc7CivphZ4gPCBwaHRoYWxlaW47CivmlLbnuK4gPCBwdWxsXC1iYWNrOwor5aSa55aRIDwgc2tlcHRpY2FsOwor5ZCI5YqbIDwgY29vcGVyYXRlOwor54iG54K4IDwgZXhwbG9zaW9uOwor57iu5bCP5qih5Z6LIDwgbWluaWF0dXJlOwor5Ymy6I2JIDwgbW93XC1ncmFzczsKK+iuiuWljyA8IHZhcmlhdGlvbjsKK+mgmOWPlyA8IHRvXC1hY2NlcHQ7Civku6XlvJfmiYDmm7ggPCBlcGhlc2lhbnM7Civli5Xnm6ogPCBjb21tb3Rpb247Civlj6/lk4AgPCBtaXNlcmFibHk7CivmspLmnInlvaLni4AgPCBzaGFwZWxlc3M7Civoj6DomL8gPCBwaW5lYXBwbGU7CivnqanlrprmgKcgPCBzdGFiaWxpdHk7CivljprluqYgPCB0aGlja25lc3M7CivpgJ/oqJggPCBzaG9ydGhhbmQ7CivnlKjmiLbmlbjmk5ogPCB1c2VyXC1kYXRhOwor5b6Q5q2lIDwgdG9cLXN0cm9sbDsKK+ilv+mdoiA8IHdlc3RcLXNpZGU7CivpgKPmjqXlmaggPCBjb25uZWN0b3I7CivmkZjpmaQgPCB0b1wtZXhjaXNlOwor6K2m5a6YIDwgY29uc3RhYmxlOwor6ZaL55m85Lq65ZOhIDwgZGV2ZWxvcGVyOwor5ZCN5Lq6IDwgcGVyc29uYWdlOwor6JST5bu2IDwgdG9cLWV4dGVuZDsKK+WcsOizquWtuOWutiA8IGdlb2xvZ2lzdDsKK+WQjOS6iyA8IGNvbGxlYWd1ZTsKK+W9ouWuuei+rSA8IGFkamVjdGl2ZTsKK+WNiuaXlyA8IGhhbGZcLW1hc3Q7Civph5HljKAgPCBnb2xkc21pdGg7CivlkIzkuIAgPCBpZGVudGljYWw7Civlj6/lvpfliLAgPCBhdmFpbGFibGU7CivnorDlt6cgPCBieVwtY2hhbmNlOwor56eR5a245a62IDwgc2NpZW50aXN0Owor5pmu5Y+KIDwgd2lkZXNwZWFkOwor6Kit572uIDwgdG9cLXNldFwtdXA7Civlv5fpoZjogIUgPCB2b2x1bnRlZXI7Civnh5Lnh6wgPCBidXJuXC1kb3duOwor5piO5bm0IDwgbmV4dFwteWVhcjsKK+aTpumCiueQgyA8IGVkZ2VcLWJhbGw7Civlj6TlhbggPCBjbGFzc2ljYWw7Civlj6vlgZogPCBiZVwtY2FsbGVkOwor57ag6Iy2IDwgZ3JlZW5cLXRlYTsKK+aAjum6vOaooyA8IGhvd1wtYWJvdXQ7CivmiYDmnInmrIogPCBvd25lcnNoaXA7CivliKXomZUgPCBlbHNld2hlcmU7Civov7Doqp4gPCBwcmVkaWNhdGU7Civnmb3loLHntJkgPCBuZXdzcHJpbnQ7CivpmLLooZsgPCB0b1wtZGVmZW5kOwor6KiO6KuW5pyDIDwgc3ltcG9zaXVtOwor5pWZ54i2IDwgZ29kZmF0aGVyOwor5Y+X5YOxIDwgbWVyY2VuYXJ5Owor6Kqe5rqQIDwgZXR5bW9sb2d5Owor6Kqq5rOVIDwgc3RhdGVtZW50Owor5Z+O6ZaAIDwgY2l0eVwtZ2F0ZTsKK+aOpeWPl+iAhSA8IHJlY2lwaWVudDsKK+eUn+eJqeWtuOWutiA8IGJpb2xvZ2lzdDsKK+mdiOaVjyA8IHNlbnNpdGl2ZTsKK+WKqeeQhiA8IGFzc2lzdGFudDsKK+avj+WAi+S6uiA8IGV2ZXJ5Ym9keTsKK+S4jeiCsuaApyA8IHN0ZXJpbGl0eTsKK+aqouafpeWToSA8IGluc3BlY3RvcjsKK+irluaWtyA8IGluZmVyZW5jZTsKK+WPl+S6iyA8IHJlY2VwaWVudDsKK+eGrOeFjiA8IHN1ZmZlcmluZzsKK+WIhuiZnyA8IHNlbWljb2xvbjsKK+WOn+WRiiA8IGNvbXBsYWludDsKK+eZvemtmiA8IHdoaXRlZmlzaDsKK+ihqOePvuWeiyA8IHBoZW5vdHlwZTsKK+WkmuaooyA8IGRpdmVyc2l0eTsKK+WkmuaooSA8IG11bHRpbW9kZTsKK+eEoeiDvSA8IGluYWJpbGl0eTsKK+eZvemrlCA8IGxlYW5cLXR5cGU7CivmqJnpq5ggPCBlbGV2YXRpb247CivlppblqpogPCBzZWR1Y3RpdmU7CivnhKHogbIgPCBub2lzZWxlc3M7CivljYHlubQgPCB0ZW5cLXllYXJzOwor5Y2K5bO2IDwgcGVuaW5zdWxhOwor5LiN5Y+v56Oo5ruFIDwgaW5kZWxpYmxlOwor6YCj57qMIDwgY29udGlub3VzOwor5Y6f5YmHIDwgcHJpbmNpcGxlOwor55qu6Z6L5YygIDwgc2hvZW1ha2VyOwor6Zi/5q+U6KW/5bC85LqeIDwgYWJ5c3NpbmlhOwor6YSt5beeIDwgemhlbmd6aG91Owor6KiI562WIDwgc3RyYXRhZ2VtOwor5bqV57eaIDwgdW5kZXJsaW5lOwor6ZaD6Zu7IDwgbGlnaHRuaW5nOwor5byV5rihIDwgZXh0cmFkaXRlOwor5L+d6K236ICFIDwgcHJvdGVjdG9yOwor5pWZ5q+NIDwgZ29kbW90aGVyOwor5paH5piOIDwgY2l2aWxpemVkOwor5YG95ZCb5a2QIDwgaHlwb2NyeXRlOwor55u06Ka6IDwgaW50dWl0aW9uOwor5aOB54eIIDwgd2FsbFwtbGFtcDsKK+eZvOmfsyA8IHByb25vdW5jZTsKK+WOmOWFiyA8IGNlbnRpZ3JhbTsKK+mmrOi5hOmQtSA8IGhvcnNlc2hvZTsKK+aTlOaetuW6iiA8IHN0cmV0Y2hlcjsKK+eEoeexnyA8IHNjb3VuZHJlbDsKK+WKoOa3sSA8IHRvXC1kZWVwZW47Civln7fooYwgPCBpbXBsZW1lbnQ7Civpm7nmmrQgPCBoYWlsc3Rvcm07Civnorrkv6EgPCBjb25maWRlbnQ7CivpgqPmqKMgPCB0aGF0XC1raW5kOwor5YWs6YeMIDwga2lsb21ldGVyOwor6Kqg5pGvIDwgc2luY2VyZWx5Owor5beu6LedIDwgZGlzcGFyaXR5Owor5LiN5Lqm5qiC5LmOIDwgZXh0cmVtZWx5Owor6KWv6KOZIDwgcGV0dGljb2F0Owor6bC+6IagIDwgaXNpbmdsYXNzOwor5oyJ54Wn5a2X6Z2iIDwgbGl0ZXJhbGx5Owor6K2J5Lu2IDwgcGFwZXJ3b3JrOwor57Sw6I+MIDwgYmFjdGVyaWFsOwor6JK85aSpIDwgZmlybWFtZW50Owor5LiJ5YiG5LmL5LiAIDwgb25lXC10aGlyZDsKK+e3qeayliA8IHRvXC1idWZmZXI7CivpgbjmtL4gPCBzZXRcLWFwYXJ0Owor5LiN5a6M5ZaEIDwgaW1wZXJmZWN0Owor5aSn5b+XIDwgaGlnaFwtYWltczsKK+i8lOmfsyA8IGNvbnNvbmFudDsKK+W8teaPmiA8IHB1YmxpY2l6ZTsKK+ino+eivCA8IHRvXC1kZWNvZGU7Civmkq3nqK4gPCBzb3dcLXNlZWRzOwor5YyW5a24IDwgY2hlbWlzdHJ5Owor5aCx57SZIDwgbmV3c3BhcGVyOwor54Sh55+lIDwgaWdub3JhbmNlOwor5o6l6aeBIDwgdG9cLWFjY2VzczsKK+S4jeWPr+aVkeiXpSA8IGluY3VyYWJsZTsKK+W+iOWkmiA8IHZlcnlcLW1hbnk7CivogLbot6/mkpLlhrcgPCBqZXJ1c2FsZW07Civpm5nmlrkgPCBiaWxhdGVyYWw7CivmmbTpm6jooaggPCBiYXJvbWV0ZXI7CivljYPnpqflubQgPCBtaWxsZW5pdW07CivplbfpgaAgPCBsb25nXC10ZXJtOwor5Y2D5ZGoIDwga2lsb2hlcnR6Owor6YGO5r++IDwgdG9cLWZpbHRlcjsKK+iku+eAhueahOipsSA8IGJsYXNwaGVteTsKK+Wlh+WmmSA8IGZhbnRhc3RpYzsKK+WGsOiTiyA8IGljZVwtc2hlZXQ7CivlnIvlhafmiLDniK0gPCBjaXZpbFwtd2FyOwor5Y2x5Zyw6aas5ouJIDwgZ3VhdGFtYWxhOwor6YGZ5risIDwgdGVsZW1ldHJ5Owor5o6l54+t5Lq6IDwgc3VjY2Vzc29yOwor6L6y6IiNIDwgZmFybWhvdXNlOwor5Ymq6LK857C/IDwgc2NyYXBib29rOwor5YGJ5pm25bKpIDwgcGVnbWF0aXRlOwor57SF6JOuIDwgcmVkXC1sb3R1czsKK+aMh+ekuuespiA8IGluZGljYXRvcjsKK+WFseitmCA8IGNvbnNlbnN1czsKK+WKoOWvhuW+jOeahCA8IGVuY3J5cHRlZDsKK+acieaUu+aTiuaApyA8IG9mZmVuc2l2ZTsKK+Wkp+WwjyA8IGRpbWVuc2lvbjsKK+aDoeWQjeaYreW9sCA8IG5vdG9yaW91czsKK+S/neaDoOW4qyA8IGNvbWZvcnRlcjsKK+Wkp+WutiA8IGF1dGhvcml0eTsKK+eIreWPliA8IGZpZ2h0XC1mb3I7Civmr4/lpKkgPCBldmVyeVwtZGF5Owor57aT5r+f5a245a62IDwgZWNvbm9taXN0Owor5pS75pOKIDwgdG9cLWF0dGFjazsKK+e0heiMtiA8IGJsYWNrXC10ZWE7CivmloflrZcgPCBjaGFyYWN0ZXI7CivluLjntqAgPCBldmVyZ3JlZW47Civmrpjlu6IgPCBkZWZvcm1pdHk7CivpmrHmmaYgPCBvYnNjdXJpdHk7Civlu7rnr4nluKsgPCBhcmNoaXRlY3Q7CivnhafmqKMgPCBhc1wtYmVmb3JlOwor5pa55ZCRIDwgZGlyZWN0aW9uOwor54Sw54GrIDwgZmlyZXdvcmtzOwor5pWR5oGpIDwgc2FsdmF0aW9uOwor6Zi/56m65Yqg55OcIDwgYWNvbmNhZ3VhOwor5Yqg5ouJ5aSq5pu4IDwgZ2FsYXRpYW5zOwor5b6M5YukIDwgbG9naXN0aWNzOwor5aeU5ZOh5pyDIDwgY29tbWl0dGVlOwor57ay6Zqb6Imy5oOFIDwgY3liZXJwb3JuOwor6L6m572qIDwgdG9cLXB1bmlzaDsKK+imgee3iiA8IGltcG9ydGFudDsKK+awkeS4uyA8IGRlbW9jcmFjeTsKK+WLmeWvpiA8IHByYWdtYXRpYzsKK+aOqOmKtyA8IHRvXC1tYXJrZXQ7CivlvZnloLEgPCB0b1wtcmVwb3J0Owor6KaB57SgIDwgZXNzZW50aWFsOwor6Iiq5rW36ICFIDwgbmF2aWdhdG9yOwor5aSi5aKDIDwgZHJlYW1sYW5kOwor6Kqy5aCCIDwgY2xhc3Nyb29tOwor5aCx55WMIDwgdGhlXC1wcmVzczsKK+WNgeS4gyA8IHNldmVudGVlbjsKK+eBq+iXpSA8IGd1bnBvd2RlcjsKK+iouuaWtyA8IGRpYWdub3NpczsKK+avq+WFiyA8IG1pbGxpZ3JhbTsKK+WJr+acrCA8IGR1cGxpY2F0ZTsKK+iKseeyiemBjuaVjyA8IGhheVwtZmV2ZXI7Civlu6Pmkq0gPCBicm9hZGNhc3Q7CivmlZflsYAgPCBsb3N0XC1nYW1lOwor6YOK5aSWIDwgb3V0c2tpcnRzOwor55m96KCfIDwgd2hpdGVcLXdheDsKK+WHuuePviA8IHRvXC1hcHBlYXI7CivlhrDns5UgPCBpY2VcLWNyZWFtOwor5YWB6KixIDwgdG9cLXBlcm1pdDsKK+Wwj+WQg+W6lyA8IHNuYWNrXC1iYXI7Civlvozku6MgPCBwb3N0ZXJpdHk7Civntq3lo6vljaEgPCB2aXNhXC1jYXJkOwor54K65pmC6YGO5pepIDwgcHJlbWF0dXJlOwor6IGv5ZCI57WE57mUIDwgc3luZGljYXRlOwor5qeL6YCgIDwgc3RydWN0dXJlOwor6b2zIDwgdG9vdGhsZXNzOwor6b2tIDwgdG9vdGhhY2hlOwor5aW95aWH5b+DIDwgY3VyaW9zaXR5Owor5Yu+5YqDIDwgdG9cLXNrZXRjaDsKK+S6uueJqeaPj+WvqyA8IHBvcnRyYXlhbDsKK+WinuaPtCA8IHJlaW5mb3JjZTsKK+eEoeavlCA8IG1hdGNobGVzczsKK+aVmeWjqyA8IGNodXJjaG1hbjsKK+asoeaVuCA8IGZyZXF1ZW5jeTsKK+Wkp+WKmyA8IGVuZXJnZXRpYzsKK+aUv+ayu+aApyA8IHBvbGl0aWNhbDsKK+a7kem8oOWiiiA8IG1vdXNlXC1wYWQ7Civlo6/lpKcgPCB0b1wtZXhwYW5kOwor6be+IDwgYVwtc3dhbGxvdzsKK+m3rSA8IHdhdGVyXC1oZW47Civmi5znianmlZkgPCBmZXRpc2hpc207CivpgbXlvqogPCB0b1wtZm9sbG93Owor6belIDwgdGhlXC1lZ3JldDsKK+mBqeaEjyA8IGFncmVlYWJsZTsKK+m3jyA8IGJpcmRcLW5hbWU7CivptqEgPCBjcm9zc2JpbGw7Civoqr/lgZwgPCByZWNvbmNpbGU7CivptbcgPCBjb1wtd29ya2VyOwor5bmy5raJIDwgaW50ZXJmZXJlOwor6bOiIDwgc25ha2VoZWFkOwor56S+5pyD5Li7576p6ICFIDwgc29jaWFsaXN0Owor5L2O6YCf546HIDwgbG93XC1zcGVlZDsKK+myjiA8IGtpbmdcLWNyYWI7CivpsbcgPCBjcm9jb2RpbGU7Civli6Tli4kgPCBkaWxpZ2VuY2U7CivmrL7lvoUgPCBlbnRlcnRhaW47Civku6TkurrmrL3kvakgPCBhZG1pcmFibGU7Civpr6AgPCB0b1wtY29uZmVyOwor55m86Iq9IDwgZ2VybWluYXRlOwor6a6mIDwgc25ha2VmaXNoOwor5pKl5q2jIDwgc2V0XC1yaWdodDsKK+mtniA8IGZpc2hcLXRyYXA7CivpmL/lpYfph4zmlq8gPCBhZXNjaHlsdXM7Civlo73lkb0gPCBsaWZlXC1zcGFuOwor6ayWIDwgd2lsZFwtaGFpcjsKK+mrpyA8IGxvbmdcLWhhaXI7Civpq5cgPCB0aGVcLXNrdWxsOwor5o+Q5pGp5aSq5ZCO5pu4IDwgMlwtdGltb3RoeTsKK+mqrSA8IHNoaW5cLWJvbmU7CivmlL/msrvlsYAgPCBwb2xpdGJ1cm87CivntpPmlocgPCBzY3JpcHR1cmU7Civpm7bllK7llYYgPCB0cmFkZXNtYW47CivmlbLlhaUgPCB0b1wta2V5XC1pbjsKK+maiuW9oiA8IGZvcm1hdGlvbjsKK+mopyA8IHRhblwtaG9yc2U7CivpqJAgPCB0b1wtdmVyaXR5Owor5aSp5LiKIDwgY2VsZXN0aWFsOwor6ae4IDwgZ2FsbG9waW5nOwor5pS/5rK75a62IDwgc3RhdGVzbWFuOwor6aWgIDwgcmljZVwtY2FrZTsKK+i+pueQhiA8IHRvXC1oYW5kbGU7CivppLEgPCBkcnlcLWdvb2RzOwor5a6J5YWo5bi2IDwgc2VhdFwtYmVsdDsKK+Wtn+WKoOaLieiqniA8IGJlbmdhbGVzZTsKK+iou+WumiA8IGJlXC1kb29tZWQ7CivnhKHmlbggPCBjb3VudGxlc3M7CivmlLblm54gPCB0b1wtcmVnYWluOwor5aSW5LqkIDwgZGlwbG9tYWN5Owor6YGO5bqmIDwgZXhjZWVkaW5nOwor5pON5oyBIDwgdG9cLW1hbmFnZTsKK+eZu+W7o+WRiiA8IGFkdmVydGlzZTsKK+aqoua4rCA8IHRvXC1kZXRlY3Q7Civnn67lh7MgPCBsb3dcLXN0b29sOwor6ZqO5bGkIDwgaGllcmFyY2h5Owor6Z2qIDwgdG9cLWNvYmJsZTsKK+mmmeaqs+mFkiA8IGNoYW1wYWduZTsKK+mdpyA8IHdhc2hcLWZhY2U7Civoh7Ppq5ggPCBwYXJhbW91bnQ7CivpnYAgPCBkcml6emxpbmc7CivmjpLooYwgPCBzZW5pb3JpdHk7CivpnIIgPCBmaW5lXC1yYWluOwor5YmN5b6AIDwgbGVhdmVcLWZvcjsKK+aVmeWEgCA8IG9yZGluYW5jZTsKK+apn+aisOijnee9riA8IG1hY2hpbmVyeTsKK+magyA8IHRvXC1leGNlZWQ7CivlorPlopMgPCBzZXB1bGNoZXI7CivntpzlkIjmgKcgPCBzeW50aGVzaXM7Civlhaznp4kgPCBraWxvbGl0ZXI7CivpmLvmkpMgPCB0b1wtdGh3YXJ0Owor5YKz6YCBIDwgdG9cLWNvbnZleTsKK+mWuiA8IGxvb2tcLWRvd247Civpgbrlm5EgPCB0ZXN0YW1lbnQ7CivmraHlkbwgPCBjaGVlclwtZm9yOwor6ZSrIDwgYmVya2VsaXVtOwor6ZSGIDwgemlyY29uaXVtOwor6ZK2IDwgY29sdW1iaXVtOwor6YGK5a6iIDwgdHJhdmVsbGVyOwor6ZKMIDwgcnV0aGVuaXVtOwor5pGB6YeY5YWSIDwgdGh1bWJ0YWNrOwor6ZKBIDwgYVwtbWF0dG9jazsKK+aWh+WFt+WVhiA8IHN0YXRpb25lcjsKK+aWsOWKoOWdoSA8IHNpbmdhcG9yZTsKK+WfjueJhiA8IGNpdHlcLXdhbGw7CivlhafnorwgPCB0b1wtZW5jb2RlOwor6ZC7IDwgZHJ1bXN0aWNrOwor5pGn5q6YIDwgdG9cLXJhdmFnZTsKK+aSnuaTiiA8IHRvXC1zdHJpa2U7CivliqDliocgPCBhZ2dyYXZhdGU7Civpj5sgPCB0b1wtcG9saXNoOwor6Zi75oqXIDwgaW1wZWRhbmNlOwor5o2Q6LSIIDwgdG9cLWRvbmF0ZTsKK+iHqumhmCA8IHZvbHVudGFyeTsKK+mOvyA8IG5lcHR1bml1bTsKK+aoueeariA8IHRyZWVcLWJhcms7Civpjp4gPCBwbG93c2hhcmU7Civpmqjlk6EgPCBhdHRlbmRhbnQ7CivlhYnnrYYgPCBsaWdodFwtcGVuOwor5aCx5pSkIDwgbmV3c3N0YW5kOwor5Ye65pa8IDwgYmVcLWR1ZVwtdG87CivnhKHlvaIgPCBpbnZpc2libGU7Civoo53nva4gPCBlcXVpcG1lbnQ7CivpiIwgPCB0b1wtcGllcmNlOwor5pWF5LqLIDwgbmFycmF0aXZlOwor5YWx55SiIDwgY29tbXVuaXN0Owor5o6o57+7IDwgb3ZlcnRocm93Owor6aCY5LqL6aSoIDwgY29uc3VsYXRlOwor5ZyS6JedIDwgZ2FyZGVuaW5nOwor5YqD5YiGIDwgdG9cLWRpdmlkZTsKK+WCs+iomCA8IGJpb2dyYXBoeTsKK+i/t+aDkSA8IHRvXC1wdXp6bGU7CivliqDkuIogPCB0b1wtcHV0XC1pbjsKK+i8mCA8IGFcLWNhclwtcnV0Owor6YCa5a61IDwgb3Zlcm5pZ2h0Owor6LuEIDwgdG9cLWdvdmVybjsKK+i6lCA8IGZvbGxvd1wtaW47Civlu6PlgrMgPCBwcm9wYWdhdGU7CivnmbznlJ8gPCB0b1wtaGFwcGVuOwor6LepIDwgdG9cLXdhZGRsZTsKK+i2heiBr+e1kCA8IGh5cGVybGluazsKK+i2nSA8IHRvXC1wdXJzdWU7Civotb8gPCBsYXRlXC1zbG93Owor57WE5oiQIDwgY29tcG9uZW50Owor5o6l566hIDwgdGFrZVwtb3ZlcjsKK+ixtSA8IHlvdW5nXC1waWc7CivnuL3mnIPmnIPplbcgPCBwcmVzaWRlbnQ7CivpmoblhqwgPCBtaWR3aW50ZXI7Civlh7nluqYgPCBjb25jYXZpdHk7CivmvKvplbcgPCB2ZXJ5XC1sb25nOwor55WM6Z2iIDwgaW50ZXJmYWNlOwor5Ym15L2cIDwgdG9cLWNyZWF0ZTsKK+WIsOebruWJjeeCuuatoiA8IHVudGlsXC1ub3c7CivorYogPCB3cmFuZ2xpbmc7CivorYUgPCB3cmlnZ2xpbmc7Civoq50gPCBrbm93bGVkZ2U7Civmr6vnhKHnlpHllY8gPCBjZXJ0YWludHk7CivntpzlkIggPCBjb21wb3NpdGU7CivmiqvpnLIgPCB0b1wtcmV2ZWFsOwor55yL5b6FIDwgbG9va1wtdXBvbjsKK+mZt+WFpSA8IHNpbmtcLWludG87CivoobDokL0gPCBkZWNvbXBvc2U7CivmkqXlpY8gPCBwaXp6aWNhdG87Civov6vlrrMgPCBwZXJzZWN1dGU7CivpgLLljJYgPCBldm9sdXRpb247CivmtYHooYzmgKfmhJ/lhpIgPCBpbmZsdWVuemE7Civoo7IgPCB3YWlzdGNvYXQ7Civovq/miY0gPCBlbG9xdWVuY2U7Civoh6rosqAgPCBjb25jZWl0ZWQ7CivonowgPCBhXC1zdHJpcGVkOwor5biC5pS/IDwgbXVuaWNpcGFsOwor5YS854S2IDwganVzdFwtbGlrZTsKK+S/neeah+m7qCA8IHJveWFsaXN0czsKK+e1leWmmSA8IGV4cXVpc2l0ZTsKK+adseWMl+aWuSA8IG5vcnRoZWFzdDsKK+aKlemZjSA8IHN1cnJlbmRlcjsKK+ewveeroCA8IHNpZ25hdHVyZTsKK+iYniA8IHdpbGRcLXZpbmU7CivntoHljKogPCBraWRuYXBwZXI7CivnhKHlipsgPCBwb3dlcmxlc3M7Civlpb3okIrloaIgPCBob2xseXdvb2Q7Civmk5Tkv50gPCBndWFyYW50ZWU7CivmjqjnkIYgPCByZWFzb25pbmc7CivolZcgPCBsZXVjYWNlbmU7Civlm6DogIwgPCB0aGVyZWZvcmU7CivpgIblkJEgPCBiYWNrd2FyZHM7Civok4YgPCBzdHJhd1wtbWF0Owor5oyJ6JqKIDwgYW5vcGhlbGVzOwor5qij5qmfIDwgcHJvdG90eXBlOwor6JKiIDwgaGVkeXNhcnVtOwor5Yio5YawIDwgd2F0ZXJcLWljZTsKK+W4tuWvrCA8IGJhbmR3aWR0aDsKK+iRkyA8IHZlZ2V0YWJsZTsKK+eVsOitsCA8IG9iamVjdGlvbjsKK+imj+WumiA8IHByb3Zpc2lvbjsKK+WxlemWiyA8IHRvXC11bmZvbGQ7CivovKrmtYEgPCBhbHRlcm5hdGU7CivmjIHkuYXmgKcgPCBjb25zdGFuY3k7CivlgrPntbEgPCB0cmFkaXRpb247CivlgY/oposgPCBwcmVqdWRpY2U7Civnmb3ooYDnl4UgPCBsZXVrYWVtaWE7CivlhajkuJbnlYwgPCB3b3JsZHdpZGU7CivlnLDnkIYgPCBnZW9ncmFwaHk7CivlnLDnkIMgPCB0aGVcLWVhcnRoOwor6IuZIDwgYVwtcGlnXC1zdHk7CivoirwgPCB0b1wtY2hvb3NlOwor6ZmN5L2OIDwgdG9cLXJlZHVjZTsKK+S/nemaqiA8IGluc3VyYW5jZTsKK+S/nemanCA8IHRvXC1lbnN1cmU7CivoiaMgPCBzdGVyblwtb2FyOwor5aC05ZCIIDwgc2l0dWF0aW9uOwor6ImOIDwgZmFzdFwtYm9hdDsKK+WgseWRiiA8IHRvXC1pbmZvcm07CivoiJ0gPCBsaW5jaFwtcGluOwor6IiYIDwgYVwtbWFuc2lvbjsKK+iHryA8IHRvXC1wcmFpc2U7CivmvrPlpKfliKnkup4gPCBhdXN0cmFsaWE7CivlhazmlpcgPCBkZWNhbGl0ZXI7Civov5Tlm54gPCByZXR1cm5cLXRvOwor5aSn5a+r6Y6W5a6aIDwgY2Fwc1wtbG9jazsKK+WIhuWJsiA8IHRvXC1jdXRcLXVwOwor6IOmIDwgdGhlXC1uYXZlbDsKK+aJgemqqCA8IGZsYXRcLWJvbmU7CivogKUgPCBmYXJtXC10b29sOwor5762IDwgcmFua1wtb2RvcjsKK+S/nemPoiA8IGJvZHlndWFyZDsKK+i3kemMtiA8IHN0b3B3YXRjaDsKK+e0meWkviA8IHBhcGVyY2xpcDsKK+e9gSA8IGFcLWNpc3Rlcm47CivnmbzmmI4gPCB0b1wtaW52ZW50Owor5qih5pOsIDwgaW1pdGF0aW9uOwor5Y2K5bel5Y2K6K6AIDwgcGFydFwtd29yazsKK+a/gOeZvCA8IHRvXC1hcm91c2U7Civlho3luqYgPCBvbmNlXC1tb3JlOwor57O+5a+fIDwgdG9cLXBpY2tldDsKK+aLt+iKsSA8IHRvXC1lbWJvc3M7CivmiJHlgJHoh6rlt7EgPCBvdXJzZWx2ZXM7CivmvZvoiYcgPCBzdWJtYXJpbmU7Civov7fkvY8gPCBmYXNjaW5hdGU7Civoib7ngrcgPCBtb3hhXC1jb25lOwor5Zua56aBIDwgY2FwdGl2aXR5Owor57elIDwgc3dhZGRsaW5nOwor576F5b655pav54m5IDwgcm9jaGVzdGVyOwor5L6/6ZaAIDwgc2lkZVwtZG9vcjsKK+aKl+itsOiAhSA8IHByb3Rlc3RlcjsKK+iho+W4vemWkyA8IGNsb2Frcm9vbTsKK+S4gOWMuemmrCA8IG9uZVwtaG9yc2U7CivmnInmmYLlgJkgPCBzb21ldGltZXM7Civns7AgPCByaWNlXC1iYWxsOwor57OdIDwgc2NhdHRlcmVkOwor5YCZ6YG45Lq6IDwgY2FuZGlkYXRlOwor566h5bym5qiC5ZyYIDwgb3JjaGVzdHJhOwor5ZCR5YyX5ZywIDwgbm9ydGh3YXJkOwor57GoIDwgdHJvdXNzZWF1Owor5LiL5rG65b+DIDwgZGV0ZXJtaW5lOwor6KaP5Yu4IDwgdG9cLWFkdmlzZTsKK+ihqOeariA8IGVwaWRlcm1pczsKK+ihqOeZvSA8IHZpbmRpY2F0ZTsKK+eZveaXpeWBmuWkoiA8IGRheVwtZHJlYW07Civnq5UgPCBkZWNpbGl0ZXI7Civkv53orYnkurogPCBndWFyYW50b3I7Civnq4YgPCBleGhhdXN0ZWQ7CivnnIvlgZogPCByZWdhcmRcLWFzOwor56qLIDwgaW5cLWFcLWhvbGU7CivnqKwgPCBnbHV0aW5vdXM7CivkuIrmmJ/mnJ8gPCBsYXN0XC13ZWVrOwor5YWH5omLIDwgYXNzYWlsYW50Owor5a+s6aC7IDwgYnJvYWRiYW5kOwor6KW/5Y2XIDwgc291dGh3ZXN0Owor6KW/5YyXIDwgbm9ydGh3ZXN0Owor56S9IDwgYmxlc3NpbmdzOwor56SeIDwgXChtaW5lcmFsXCk7Civnsr7lt6cgPCBlbGFib3JhdGU7CivnrKzkuozljYEgPCB0d2VudGlldGg7CivltoTmlrAgPCBicmFuZFwtbmV3Owor56KGIDwgYXJyb3dcLXRpcDsKK+aJk+mAsiA8IHRvXC1icmVhY2g7CivnoKwgPCBiaWdcLXN0b25lOwor5YWs5a+4IDwgZGVjaW1ldGVyOwor5YWs5a+TIDwgYXBhcnRtZW50Owor5bi45Lu7IDwgcGVybWFuZW50Owor5YWJ5b2pIDwgaG9ub3JhYmxlOwor552h6YGO6aCtIDwgb3ZlcnNsZWVwOwor5oyH56S6IDwgcG9pbnRcLW91dDsKK+eclSA8IHJlc3RyYWludDsKK+eXheeQhiA8IHBhdGhvbG9neTsKK+S7u+S9leWFtuS7liA8IGFueVwtb3RoZXI7Civovpvli54gPCBsYWJvcmlvdXM7CivmkI3lo54gPCB0b1wtZGFtYWdlOwor55itIDwgYVwtd2hpdGxvdzsKK+eYnCA8IGFcLXBvbHlwdXM7Civlt7Tli5Lmlq/lnaYgPCBwYWxlc3RpbmU7Civnl6EgPCBhXC1kaXNlYXNlOwor5Yip5pyq6KiYIDwgbGV2aXRpY3VzOwor56ul5a2Q6LuNIDwgYm95XC1zY291dDsKK+eVsSA8IHRvXC1kZXRhaW47CivlmInoqLEgPCBmYXZvcmFibGU7CivnlYsgPCB0aWxsXC1sYW5kOwor5YWr5aSpIDwgZWlnaHRcLWRheTsKK+eUpiA8IGJlXC1yZWJvcm47Civnk7ggPCBoZWN0b2dyYW07Civmi5LntZUgPCB0b1wtcmVmdXNlOwor6KaB5LiNIDwgb3RoZXJ3aXNlOwor55K/IDwgZmluZVwtamFkZTsKK+aomeWumiA8IGRlbWFyY2F0ZTsKK+eRtCA8IHR3aW5cLWdlbXM7CivnkaMgPCBmcmFnbWVudHM7CivovLvlsIQgPCByYWRpYXRpb247Civlm5vljYHlha0gPCBmb3J0eVwtc2l4Owor5o6S5pS+IDwgZGlzY2hhcmdlOwor6auU54++IDwgdG9cLWVtYm9keTsKK+ihsOa4myA8IHRvXC13ZWFrZW47CivnsYPmnb8gPCBiYWNrYm9hcmQ7CivlnKjvuY3ml4HpgoogPCBhbG9uZ3NpZGU7Civppqzpnq0gPCBob3JzZXdoaXA7CivnjYAgPCB0b1wtZ2F0aGVyOwor56ys5Lmd5Y2BIDwgbmluZXRpZXRoOwor54uzIDwgYXJtYWRpbGxvOwor54e2IDwgdG9cLXNjb3JjaDsKK+eVouernyA8IGFmdGVyXC1hbGw7Civnhr8gPCBicmlsbGlhbnQ7CivlhYjopovkuYvmmI4gPCBmb3Jlc2lnaHQ7CivkvY7pmo4gPCBsb3dcLWxldmVsOwor5omA6KyCIDwgc29cLWNhbGxlZDsKK+a9sOeImyA8IHRvXC1mZXN0ZXI7CivlhLLlrZggPCBzdG9ja3BpbGU7Civou4rliY3nh4ggPCBoZWFkbGlnaHQ7Civmv6kgPCBwb3VyXC1kb3duOwor5o6b5b+1IDwgY29uY2VybmVkOwor5a6H6Iiq5ZOhIDwgYXN0cm9uYXV0Owor6L2f5YuVIDwgc2Vuc2F0aW9uOwor6Ie654eIIDwgZGVza1wtbGFtcDsKK+S9v+WbsOeqmCA8IGVtYmFycmFzczsKK+a5vCA8IGJsYWNrXC1tdWQ7CivmuYUgPCBib2lsXC1zaWxrOwor5repIDwgcGFzc1wtb3ZlcjsKK+WvpuizqiA8IHN1YnN0YW5jZTsKK+maqOS5i+iAjOW+jCA8IGZyb21cLXRoYXQ7CivmtrcgPCByYWluc3Rvcm07CivmtJEgPCB3aGlybHBvb2w7Civlt6flhYvlipsgPCBjaG9jb2xhdGU7CivmnInpm4Tlv4MgPCBhbWJpdGlvdXM7CivmroggPCBpbmZlcnRpbGU7CivmrJUgPCB0cmVlXC1uYW1lOwor5qSN54mpIDwgYm90YW5pY2FsOwor56m66ZiyIDwgYWlyXC1mb3JjZTsKK+WFpeS+tSA8IHRvXC1pbnZhZGU7CivomZXnkIblmaggPCBwcm9jZXNzb3I7CivkuLvnrqHkurrlk6EgPCBleGVjdXRpdmU7CivmqZogPCB0YWxsXC10cmVlOwor5YWs5LiIIDwgZGVjYW1ldGVyOwor6Ly45Ye6IDwgdG9cLWV4cG9ydDsKK+amqiA8IGhlYWRib2FyZDsKK+efpeabtOmzpSA8IHJlZGJyZWFzdDsKK+WVn+ekuuiAhSA8IHJldmVsYXRvcjsKK+i8uOWFpSA8IHRvXC1pbXBvcnQ7CivnrYnnrYkgPCBldFwtY2V0ZXJhOwor56ys5LiJ5Y2BIDwgdGhpcnRpZXRoOwor5qOWIDwgZG9vclwtc3RvcDsKK+ainCA8IGNob3BzdGljazsKK+a/gOaAkiA8IGluZnVyaWF0ZTsKK+agsSA8IGxhcmdlXC1wZWc7CivmoK0gPCBraW5nXC1wb3N0Owor5qCSIDwgY3Jvc3NcLWJhcjsKK+WBnOaziiA8IGFuY2hvcmFnZTsKK+afiCA8IGNvbnRhaW5lcjsKK+aemSA8IHRyZWVcLWtub3Q7Civnmb3pjqLnpKYgPCBzY2hlZWxpdGU7CivmnJ4gPCBmdWxsXC15ZWFyOwor5omL5o+Q5YyFIDwgXChoYW5kXCliYWc7CivmioDooZPmgKcgPCB0ZWNobmljYWw7CivmvLLmva4gPCBoaWdoXC10aWRlOwor5pqNIDwgc3Vuc3Ryb2tlOwor5a626K2cIDwgZ2VuZWFsb2d5Owor6ama55WwIDwgYW1hemVtZW50Owor6LyU5YqpIDwgdG9cLWFzc2lzdDsKK+aXqiA8IHVuaXRlZFwtaW47Civmj5DkvpsgPCB0b1wtc3VwcGx5Owor5LiN6Kqg5a+mIDwgZGlzaG9uZXN0Owor6LGM6LGG57KlIDwgcGVhXC1ncnVlbDsKK+iuiua1geWZqCA8IGNvbnZlcnRlcjsKK+aUiyA8IHRvXC1jbHV0Y2g7CivmlIMgPCBwcmVjZWRpbmc7Civmk5AgPCB0b1wtcHV0XC1vbjsKK+mrlOaTjSA8IGd5bW5hc3RpYzsKK+aRvSA8IHRocm93XC1vdXQ7Civmj5DmkanlpKrliY3mm7ggPCAxXC10aW1vdGh5Owor5pGuIDwgdG9cLXJhdHRsZTsKK+aPpSA8IHNjcmF0Y2hlcjsKK+S+v+euiyA8IG5vdGVwYXBlcjsKK+iBlumkkCA8IHNhY3JhbWVudDsKK+iyoeWLmeenmOabuCA8IHRyZWFzdXJlcjsKK+aJueeZvCA8IHdob2xlc2FsZTsKK+i2lee3iiA8IGh1cnJpZWRseTsKK+aJs+mBk+WToSA8IHBvaW50c21hbjsKK+aJpCA8IHRvXC10aHJ1c3Q7CivpqqjmnrYgPCBmcmFtZXdvcms7CivmiJwgPCB0b1wtc2NyYXBlOwor5YG15o6iIDwgZGV0ZWN0aXZlOwor5YWp5pif5pyfIDwgZm9ydG5pZ2h0Owor5oyR5oiwIDwgY2hhbGxlbmdlOwor5qC85byP5YyWIDwgdG9cLWZvcm1hdDsKK+iiq+WRiiA8IGRlZmVuZGFudDsKK+azouWIqeWwvOilv+S6niA8IHBvbHluZXNpYTsKK+aCgSA8IGlycml0YWJsZTsKK+aBkSA8IHRvXC1jaGFuZ2U7CivmgLogPCB0b1wtZW5kdXJlOwor5oCeIDwgdG9cLWdyaWV2ZTsKK+aAlyA8IG9ic2VydmFudDsKK+aOoeefs+WgtCA8IHN0b25lXC1waXQ7CivliqDli5Lmr5QgPCBjYXJpYmJlYW47Civpm7vloLHmqZ8gPCB0ZWxlZ3JhcGg7Civosp3poZ4gPCBzaGVsbGZpc2g7CivlnKjlhacgPCBpbmNsdWRpbmc7Civmi7/miYsgPCBleHBlcnRcLWluOwor5bel5L2c6KGoIDwgd29ya3NoZWV0Owor5pq06aKo6ZuqIDwgc25vd3N0b3JtOwor56uK6IG9IDwgZWF2ZXNkcm9wOwor5bu+IDwgdHdvXC1oYW5kczsKK+W6iSA8IGFcLXZpbGxhZ2U7CivluakgPCB0cmFwcGluZ3M7CivluZkgPCBhXC1jdXJ0YWluOwor5a6/6IiNIDwgZG9ybWl0b3J5Owor5bGx5rC0IDwgbGFuZHNjYXBlOwor5Zub5aSpIDwgZm91clwtZGF5czsKK+aMuuWlvSA8IHZlcnlcLWdvb2Q7CivnsL3lhaUgPCB0b1wtbG9nXC1vbjsKK+mmrOiDjCA8IGhvcnNlYmFjazsKK+mpleawoyA8IGFycm9nYW5jZTsKK+eWkeW/gyA8IHN1c3BpY2lvbjsKK+a4uuiMqyA8IHVuY2VydGFpbjsKK+WvvSA8IGFcLWhhbmRmdWw7CivmloflrZfmqpQgPCB0ZXh0XC1maWxlOwor5a+YIDwgcHV0XC1hc2lkZTsKK+a/gOWLlSA8IHRvXC1leGNpdGU7Civlq5sgPCBjb21wbGlhbnQ7CivlqqwgPCBnb3Zlcm5lc3M7CivlqpUgPCB1bmRlY2lkZWQ7Civmt7voo5wgPCBmaWxsXC1cKHVwXCk7Civosr/mmJPmiLAgPCB0cmFkZVwtd2FyOwor5aWJ5om/6ICFIDwgZmxhdHRlcmVyOwor55Sf6IKy6IO95YqbIDwgZmVydGlsaXR5Owor5L+u5q2jIDwgdG9cLXJldmlzZTsKK+aMh+aPruiAhSA8IGNvbmR1Y3RvcjsKK+WkjCA8IHRvXC1kYXdkbGU7Civmn5DomZUgPCBzb21ld2hlcmU7CivloZ0gPCBmbGF0XC1iYW5rOwor5Y+D6ICD5pu4IDwgcmVmZXJlbmNlOwor5YWx5Lqr6Luf6auUIDwgc2hhcmV3YXJlOwor6LKo6LyqIDwgZnJlaWdodGVyOwor5Y2K6KGw5pyfIDwgaGFsZlwtbGlmZTsKK+WciiA8IHJlc3RcLXJvb207Civpq5TlnJggPCBjb21tdW5pdHk7CivmirXmipcgPCB0b1wtcmVzaXN0Owor5LiN5Y+X5q2h6L+OIDwgdW53ZWxjb21lOwor5ZmBIDwgbmFzdGluZXNzOwor6aKx6aKoIDwgaHVycmljYW5lOwor5ZiRIDwgdG9cLW1lbmFjZTsKK+aLieaWkOeJuSA8IGxhZmF5ZXR0ZTsKK+i0lue9qiA8IGF0b25lbWVudDsKK+WvteeJqSA8IGhvdXNlXC1wZXQ7CivogZboqpUgPCBjaHJpc3RtYXM7Civlk6sgPCB0b1wtY2Fqb2xlOwor5ZK1IDwgdG9cLXJldmlsZTsKK+S4jee1kOaenCA8IGZydWl0bGVzczsKK+WRpyA8IHRvXC1yZWJ1a2U7CivlgYflrpogPCB0b1wtYXNzdW1lOwor55Sz6KuL5Lq6IDwgYXBwbGljYW50Owor6KGM5YuVIDwgb3BlcmF0aW9uOwor5Li76auUIDwgbWFpblwtcGFydDsKK+aJi+azlSA8IHRlY2huaXF1ZTsKK+a2iOmBoyA8IGFtdXNlbWVudDsKK+WHuueJiOiAhSA8IHB1Ymxpc2hlcjsKK+WPhSA8IHRvXC1jb3VuZWw7CivljpMgPCBwcmVjaXBpY2U7Civlh7nlh7jljbDliLcgPCBlbWJvc3Npbmc7CivlsLHmpa0gPCBnZXRcLWFcLWpvYjsKK+eWhuWfnyA8IHRlcnJpdG9yeTsKK+acrOaYn+acnyA8IHRoaXNcLXdlZWs7CivljJggPCB0aGVcLWJyYWluOwor5YupIDwgd29ya1wtaGFyZDsKK+aAquS4jeW+lyA8IG5vXC13b25kZXI7CivmkpLpg73oqbLkurogPCBzYWRkdWNlZXM7Civmib/mk5QgPCB1bmRlcnRha2U7CivliJQgPCBzY29vcFwtb3V0Owor6Ia95bCPIDwgY293YXJkaWNlOwor5Ye3IDwgZGlydFwtY2xvZDsKK+WHmSA8IGFuXC1pY2ljbGU7CivlibXpgKDlipsgPCBpbmdlbnVpdHk7CivlsazmgKcgPCBhdHRyaWJ1dGU7CivlhYcgPCBhdHJvY2lvdXM7CivkuLvpoIEgPCBob21lXC1wYWdlOwor5Y+v5a655b+NIDwgdG9sZXJhYmxlOwor5pyD6Z2iIDwgbWVldFwtd2l0aDsKK+WCuiA8IHRvXC1oaW5kZXI7CivmiJDngrogPCB0b1wtYmVjb21lOwor5Lqk6Kq8IDwgY29tbXVuaW9uOwor5ZyW5pu4566h55CG5ZOhIDwgbGlicmFyaWFuOwor5Z+65pys5LiKIDwgYmFzaWNhbGx5Owor5L6OIDwgdG9cLXNvb3RoZTsKK+S8uyA8IG1lc3NlbmdlcjsKK+S8iyA8IGRlY2VwdGl2ZTsKK+a9m+WKmyA8IHBvdGVudGlhbDsKK+eou+iNieS6uiA8IHNjYXJlY3JvdzsKK+WtuOerpSA8IHNjaG9vbGJveTsKK+WkmueUqOaItiA8IG11bHRpdXNlcjsKK+iHquWLlSA8IGF1dG9tYXRpYzsKK+WFseeUouS4u+e+qSA8IGNvbW11bmlzbTsKK+S2syA8IHRvXC1sb29rdXA7CivktpEgPCB0b1wtc25lZXplOwor6KCV5YuVIDwgdG9cLXdpZ2dsZTsKK+aJk+aVlyA8IHRvXC1kZWZlYXQ7CivosarosawgPCBwb3JjdXBpbmU7CivkuI3ku6XngrrnhLYgPCBvYmplY3RcLXRvOwor5LO6IDwgdGhlXC1xdWFpbDsKK+a1gemHjyA8IGZsb3dcLXJhdGU7CivksqggPCB3aWxkXC1zd2FuOwor56S+5pyD5Li7576pIDwgc29jaWFsaXNtOwor5LGIIDwgZmlzaFwtcHVscDsKK+SwpSA8IGFcLWN5Y2xvbmU7Civos5zntaYgPCB0b1wtYmVzdG93Owor6Jyc5pyI5YGH5pyfIDwgaG9uZXltb29uOwor5K+mIDwgdGlueVwtYm9uZTsKK+SunCA8IHRvXC1nYWxsb3A7Civmi5vli58gPCB0b1wtcmVjdWl0Owor5K2sIDwgdG9cLWtvd3RvdzsKK+WwjeaWvCA8IHJlZ2FyZGluZzsKK+StmyA8IHRhc3RlbGVzczsKK+StkSA8IGluY29ycnVwdDsKK+WQjOePreWQjOWtuCA8IGNsYXNzbWF0ZTsKK+SstiA8IHRvXC1zdHJhdmU7Civkq7sgPCBhXC10eXBob29uOwor5KuUIDwgYVwtc2VydmFudDsKK+S4iumdoiA8IG9uXC10b3BcLW9mOwor57695q+b55CDIDwgYmFkbWludG9uOwor5KmmIDwgdGhlXC1yZWluczsKK+S6lOiZnyA8IHRoZVwtZmlmdGg7CivkqK0gPCB0aGVcLXNraWVzOwor5KiNIDwgZGVlcFwtcG9uZDsKK+SmtSA8IGluY2FwYWJsZTsKK+SmrCA8IGFcLXZhY2FuY3k7CivkpoYgPCBhXC1iaWdcLWhvZTsKK+aLhuWNuCA8IHRvXC11bmxvYWQ7CivmlZHorbfou4ogPCBhbWJ1bGFuY2U7Civom4vnmb0gPCBlZ2dcLXdoaXRlOwor56ys5Y2B5YWtIDwgc2l4dGVlbnRoOwor5KKxIDwgdG9cLXNsaWdodDsKK+SinyA8IHRvXC10cmF2ZWw7CivlkJ7po58gPCB0b1wtZGV2b3VyOwor5KKNIDwgdG9cLWhhc3RlbjsKK+S9v+eUn+awoyA8IGRpc3BsZWFzZTsKK+iDg+eCjiA8IGdhc3RyaXRpczsKK+WwjeaKlyA8IHdpdGhzdGFuZDsKK+SgsiA8IHRvXC1saXN0ZW47CivkoK8gPCB0b1wtYXNjZW5kOwor5KCuIDwgdG9cLXByYW5jZTsKK+SfuyA8IGJhcmVcLWZlZXQ7Civkn54gPCB0b1wtZmFsdGVyOwor5LiN5YWs5q2jIDwgaW5qdXN0aWNlOwor6ISr5o6JIDwgc3RyaXBcLW9mZjsKK+mmmea4ryA8IGhvbmdcLWtvbmc7Civkn4wgPCBkaXZlcmdpbmc7CivknrwgPCB0b1wtZXNjYXBlOwor5J6SIDwgcmVkXC1jb2xvcjsKK+SekCA8IHBsZW50aWZ1bDsKK+SeiSA8IGFcLXN1cnBsdXM7CivknK0gPCB0b1wtZHJlZGdlOwor5a+m5pmCIDwgcmVhbFwtdGltZTsKK+iCuueCjiA8IHBuZXVtb25pYTsKK+ScnyA8IHRvXC12ZXJpZnk7CivlhYnlsITnt5ogPCBsaWdodFwtcmF5Owor5Ju7IDwgdG9cLWluZHVjZTsKK+SbuSA8IHRvXC1hY2N1c2U7Civkm7MgPCB0b1wtbWFsaWduOwor5JusIDwgYmFieVwtdGFsazsKK+SbqiA8IGxvcXVhY2l0eTsKK+SbiyA8IHRvXC1zY2hlbWU7Civkm4EgPCB0b1wtbXVybXVyOwor5oW256WdIDwgY2VsZWJyYXRlOwor5Jm4IDwgdG9cLW9idGFpbjsKK+WkluWci+S6uiA8IGZvcmVpZ25lcjsKK+SYvCA8IHN0b2NraW5nczsKK+WusOauuiA8IHNsYXVnaHRlcjsKK+esrOWNgeS6lCA8IGZpZnRlZW50aDsKK+SYkSA8IHRoZVwtcHVsc2U7CivklakgPCBkcnlcLWZydWl0Owor5rWq6JWpIDwgdG9cLWxvaXRlcjsKK+SUsyA8IGNoaWNrbGluZzsKK+STsCA8IGFic2ludGhpbjsKK+afkOeJqSA8IHNvbWV0aGluZzsKK+SSiiA8IGFcLXBhdGllbnQ7CivkkaogPCBhXC1zYWlsaW5nOwor5JGTIDwgYVwtbG9va291dDsKK+a0peiyvCA8IGFsbG93YW5jZTsKK+SQuiA8IGRlbGljaW91czsKK+SQmyA8IHRvXC1sb29zZW47CivkkIYgPCBiaWdcLWJlbGx5Owor5I+9IDwgbWVhdFwtcHVscDsKK+SPrCA8IHRoZVwtc3BpbmU7Civkj6AgPCBtZWF0XC1zb3VwOwor5I+eIDwgdGhlXC1iZWxseTsKK+iCneeCjiA8IGhlcGF0aXRpczsKK+SOoSA8IHRvXC1zaHJpbms7CivmtojogJcgPCB0b1wtdXNlXC11cDsKK+SOgyA8IGZpbmVcLWRvd247CivpmL/moLnlu7cgPCBhcmdlbnRpbmE7CivkjY4gPCBhXC1zcGluZGxlOwor5IyyIDwgbGlnaHRcLXJlZDsKK+SMmyA8IGVudG91cmFnZTsKK+SLoCA8IHRvXC1yZXBhaXI7CivkirAgPCBmb29kc3R1ZmY7CivkipwgPCBkdW1wbGluZ3M7CivkibwgPCBtYXRlcmlhbHM7CivkuIrovIkgPCB0b1wtdXBsb2FkOwor6Jit6IqxIDwgY3ltYmlkaXVtOwor5pu46KiYIDwgc2VjcmV0YXJ5Owor5rWq6Ii5IDwgc3dpbmdib2F0Owor5YG95ZaE6ICFIDwgaHlwb2NyaXRlOwor5IeQIDwgdG9cLWFycml2ZTsKK+Wwj+WvqyA8IGxvd2VyY2FzZTsKK+SGkCA8IGFcLWNvdW50cnk7Civonrrml4vmp7MgPCBwcm9wZWxsZXI7CivnlKjlhbcgPCBhcHBsaWFuY2U7Civlj6TpoqggPCBhbnRpcXVpdHk7CivkhYMgPCBsYXRlXC1jcm9wOwor5a6J5q2HIDwgZ29cLXRvXC1iZWQ7Civkg6kgPCBhXC1taW5lcmFsOwor5a625pePIDwgaG91c2Vob2xkOwor5IOVIDwgc3RvbmV3YXJlOwor6Ieq5YuV5qiT5qKvIDwgZXNjYWxhdG9yOwor57eK5oCl5LqL5Lu2IDwgZW1lcmdlbmN5Owor5IOAIDwgbWlsbHN0b25lOwor5L2V5pWFIDwgd2hlcmVmb3JlOwor6IWz5Y2wIDwgZm9vdHByaW50Owor55O35ZmoIDwgY2hpbmF3YXJlOwor6LKv5rC06JmVIDwgcmVzZXJ2b2lyOwor5IGQIDwgZGVlcFwtZXllZDsKK+erpeW5tCA8IGNoaWxkaG9vZDsKK+WNsOW6puWwvOilv+S6niA8IGluZG9uZXNpYTsKK+WNiua1gemrlCA8IHNlbWlmbHVpZDsKK+SArCA8IHRvXC1nbGFuY2U7CivkgKEgPCB0b1wtc3B5XC1vbjsKK+SAkCA8IHRvXC1yZWdhcmQ7CivotbfluoogPCB0b1wtZ2V0XC11cDsKK+O/vyA8IHdpbmVcLWN1cHM7CivmsJHkuLvkuLvnvqnogIUgPCBkZW1vY3JhdHM7Civjv58gPCBoZVwtYnJpZ2h0Owor5b6B5pyN6ICFIDwgY29ucXVlcm9yOwor476lIDwgYmVsbHlhY2hlOwor476jIDwgdG9cLXNoaXZlcjsKK+S7iueUnyA8IHRoaXNcLWxpZmU7CivmjZXpvKDlmaggPCBtb3VzZXRyYXA7CivjvZ4gPCB0b1wtcmVtYWluOwor472JIDwgYVwtYmlnXC1qYXI7CivjvLogPCBwb3JjZWxhaW47CivororoibLpvo0gPCBjaGFtZWxlb247CivjvJogPCBlYXJ0aHdhcmU7CivlsI3mipfogIUgPCBhZHZlcnNhcnk7CivmnKzogbcgPCBvbmUnJ3NcLWpvYjsKK+mAgOm7kea/gOe0oCA8IG1lbGF0b25pbjsKK+iDjOaWnCA8IGFudGljbGluZTsKK+aatOi6gSA8IGlyYXNjaWJsZTsKK+axoOm5vSA8IGxha2VcLXNhbHQ7CivoloTmsrnlsaQgPCBvaWxcLXNoZWV0Owor5LiN6KixIDwgbm90XC1hbGxvdzsKK+WVhuaomSA8IHRyYWRlbWFyazsKK+mjr+eilyA8IHJpY2VcLWJvd2w7CivnhKHnn6XoprogPCBzZW5zZWxlc3M7CivmmaTpnaIgPCBpbnRlcnZpZXc7Civph43plosgPCB0b1wtcmVvcGVuOwor47WUIDwgbm90XC1jbGVhcjsKK+iuiumdqSA8IHRyYW5zZm9ybTsKK+O0gSA8IHRvXC1hZGRcLXRvOwor55m95LqR5q+NIDwgbXVzY292aXRlOwor47OoIDwgdG9cLXNwbGFzaDsKK+aIquWlqiA8IGludGVyY2VwdDsKK+W9q+WIu+WTgSA8IHNjdWxwdHVyZTsKK+a3seawtCA8IGRlZXB3YXRlcjsKK+OwliA8IHRoZVwtb2xpdmU7Civjr7ogPCBhXC1jYWJpbmV0Owor6K6K54Sm6Led6Y+h6aCtIDwgem9vbVwtbGVuczsKK+OvryA8IHNtYWxsXC1jdXA7Civjr50gPCBwYXVsb3duaWE7CivjrpkgPCBhXC1waXRmYWxsOwor462iIDwgbWVjaGFuaWNzOwor6LW35aeLIDwgb3JpZ2luYXRlOwor46y/IDwgbW9vbmxpZ2h0Owor56WH6K6AIDwgcmVhZFwtb25seTsKK+OsqyA8IGNsZWFyXC1za3k7CivkuIDljYPlmbggPCAxMDAwXC10b25zOwor5LiN6KaP5YmHIDwgaXJyZWd1bGFyOwor5rOi54uA6ZuyIDwgdW5kdWxhdHVzOwor5a245pyDIDwgaW5zdGl0dXRlOwor46qIIDwgdG9cLWxldFwtZ287CivjqZIgPCB0b1wtYXJyZXN0Owor46mHIDwgdGhlXC10aHVtYjsKK+OotiA8IHRvXC10aHJlc2g7CivjqIkgPCB0b1wtc21vb3RoOwor46epIDwgdG9cLWRpc3BlbDsKK+OnlyA8IHRvXC1jbGF0Y2g7CivvprsgPCBvZmZpY2lhbHM7Civjpq8gPCBhXC1jZXJ0YWluOwor46aWIDwgcmVzZW50ZnVsOwor46W+IDwgbW9ydGlmaWVkOwor46WzIDwgdG9cLXN1cnZleTsKK+OlpiA8IHNhdGlzZmllZDsKK+OlgCA8IGV4Y2x1c2l2ZTsKK+OktSA8IGNvcGFzc2lvbjsKK+acq+erryA8IGV4dHJlbWl0eTsKK+OkhyA8IHRlcnJpZmllZDsKK+OkhiA8IG5hdXNlYXRlZDsKK+OjuiA8IHRoZVwtaGVhcnQ7Civnk5zliIYgPCBwYXJ0aXRpb247CivjoqEgPCB0b1wtZXhob3J0Owor46G8IDwgYVwtZ3JhbmFyeTsKK+OhuiA8IGFcLWNvdHRhZ2U7CivjoZcgPCByZWRcLXBhcGVyOwor46CYIDwgYW5cLWlzbGFuZDsKK+a2jOePviA8IHNwcmluZ1wtdXA7Civnpq7nr4AgPCBldGlxdWV0dGU7CivororphpwgPCBkaXNmaWd1cmU7CivjnLsgPCB0b1wtYWRtaXJlOwor6JyC5beiIDwgaG9uZXljb21iOwor45yYIDwgZGVsaWNhdGVkOwor45yPIDwgbGFzdFwtbmFtZTsKK+S4ree+jiA8IGNoaW5hXC11c2E7Civjm74gPCBub3RcLWNsZWFuOwor5pqX6KqeIDwgY29kZVwtd29yZDsKK+aTtOmfs+WZqCA8IG1lZ2FwaG9uZTsKK+S4jeimi+S6hiA8IGRpc2FwcGVhcjsKK+OasCA8IGFuXC1lbWJyeW87CivjmpsgPCBjb3JwdWxlbnQ7CivjmpggPCBhXC1wYXJ0bmVyOwor6YeN6LmIIDwgdG9cLXJlcGVhdDsKK+OYoyA8IGNvbXBhc3NlczsKK+OXsyA8IGZvcmdldGZ1bDsKK+S5neaciOS7vSA8IHNlcHRlbWJlcjsKK+i2heaWh+acrCA8IGh5cGVydGV4dDsKK+Wfuuedo+aVmeW+kiA8IGNocmlzdGlhbjsKK+OVuSA8IGFcLWJ1Y2tsZXI7CivjlZUgPCBkZWNlcHRpb247CivjlZEgPCBhXC1raXRjaGVuOwor5LyR5oiwIDwgYXJtaXN0aWNlOwor45WLIDwgcm9ja1wtbGFuZDsKK+OViCA8IHRvXC1saW5nZXI7CivjlKcgPCB0b1wtaW5jaXRlOwor6K6A5pu45Lq6IDwgYVwtc2Nob2xhcjsKK+OTiyA8IHRvXC1mcmVlemU7Civjk4QgPCB0b1wtcGxvdWdoOwor5Y+b6LOjIDwgdG9cLWJldHJheTsKK+ORpyA8IHBlcnR1cmJlZDsKK+ORhCA8IHRvXC1pbnN1bHQ7CivjkK8gPCB0b1wtZW1wbG95Owor5Ly45bGVIDwgZXh0ZW5zaW9uOwor5LiA6Ie0IDwgdW5hbmltb3VzOwor5byV55So5Y+lIDwgcXVvdGF0aW9uOwor6ICB54mMIDwgb2xkXC1icmFuZDsKK+WmlumiqCA8IGV2aWxcLXdpbmQ7CivpjLbluLYgPCB3YXRjaGJhbmQ7CivmuJvlsJEgPCB0b1wtbGVzc2VuOwor5pyJ55uKIDwgd2hvbGVzb21lOwor56uL5Yi7IDwgZm9ydGh3aXRoOwor5YWr5YCN6auUIDwgb2N0b3Bsb2lkOwor5rex5oCdIDwgdG9cLXBvbmRlcjsKK+mHjuiguyA8IGJhcmJhcm91czsKK+iyoeadsSA8IHNob3Bvd25lcjsKK+iZm+aniyA8IGltYWdpbmFyeTsKK+iiq+emgeatoiA8IGZvcmJpZGRlbjsKK+iBr+aDsyA8IGFzc29jaWF0ZTsKK+a1uOaykiA8IGltbWVyc2lvbjsKK+a3kuaFmCA8IG1pc2VyYWJsZTsKK+S4gOevhyA8IG9uZVwtc2lkZWQ7Civku4vos6roqKrllY/mjqfliLblsaQgPCBtYWNcLWxheWVyOwor5LiN6Ieq54S2IDwgdW5uYXR1cmFsOwor5pyf5ru/IDwgdG9cLWV4cGlyZTsKK+itpuimuiA8IHZpZ2lsYW5jZTsKK+WOn+irkiA8IHRvXC1leGN1c2U7Civlrrbkv7EgPCBmdXJuaXR1cmU7Civpq5jnp5HmioAgPCBoaWdoXC10ZWNoOwor5oSf5p+TIDwgaW5mZWN0aW9uOwor5a2U5a2QIDwgY29uZnVjaXVzOwor5Lqe5qC86ZaA6L6yIDwgYWdhbWVtbm9uOwor5a625LqLIDwgaG91c2V3b3JrOwor5oCq54mp5Ly8IDwgbW9uc3Ryb3VzOwor5Yaw5qON5YWSIDwgaWNlXC1sb2xseTsKK+S7iuW5tCA8IHRoaXNcLXllYXI7Civnmb3nj63lhZIgPCBkYXlcLXNoaWZ0Owor5LiA55m+IDwgYVwtaHVuZHJlZDsKK+S7suWkjyA8IG1pZHN1bW1lcjsKK+itieipniA8IHRlc3RpbW9ueTsKK+S4jemAnuS5i+W+kiA8IGRlc3BlcmFkbzsKK+eqgeWHuiA8IHByb21pbmVudDsKK+aYn+acn+S4iSA8IHdlZG5lc2RheTsKK+aDoeavkiA8IG1hbGljaW91czsKK+mHjuigu+S6uiA8IGJhcmJhcmlhbjsKK+WNgeWtl+i7jSA8IGNydXNhZGVyczsKK+mcsumfkyA8IHRvXC1leHBvc2U7Civms5XlnIvkurogPCBmcmVuY2htYW47CivkupTljYPlmbggPCA1MDAwXC10b25zOwor5b2x6Z+/IDwgaW5mbHVlbmNlOwor5pq055m8IDwgYnJlYWtcLW91dDsKK+aHieS7mCA8IGRlYWxcLXdpdGg7CivmnInmr5IgPCBwb2lzb25vdXM7CivlvLHpubwgPCB3ZWFrXC1iYXNlOwor5rG96Ii5IDwgc3RlYW1ib2F0Owor6YGH6Zuj6Ii5IDwgc2hpcHdyZWNrOwor5Y+v56yRIDwgbGF1Z2hhYmxlOwor5Y2K6LyJIDwgaGFsZlwtbG9hZDsKK+W+rui7nyA8IG1pY3Jvc29mdDsKK+S7meWigyA8IGZhaXJ5bGFuZDsKK+aXqOi2oyA8IG9iamVjdGl2ZTsKK+Wkp+mhniA8IG1haW5cLXR5cGU7CivmnKzmlocgPCB0aGlzXC10ZXh0Owor576K55qu57SZIDwgcGFyY2htZW50Owor5oak5oak5LiN5bmzIDwgaW5kaWduYW50Owor54ef6aSKIDwgbnV0cml0aW9uOwor5Y+N6Imm6ImHIDwgYW50aVwtc2hpcDsKK+WNlOitsCA8IGFncmVlbWVudDsKK+mCo+m6vCA8IHNvXC1cKG11Y2hcKTsKK+W/hemcgOWTgSA8IG5lY2Vzc2l0eTsKK+eip+iXjSA8IGRhcmtcLWJsdWU7CivlvoXpgYcgPCB0cmVhdG1lbnQ7CivkuIvlgIvmmJ/mnJ8gPCBuZXh0XC13ZWVrOwor5ZCI55CGIDwgcmF0aW9uYWxlOwor546p5byEIDwgcmVzb3J0XC10bzsKK+aXgei3ryA8IHRvXC1ieXBhc3M7CivlpJzplpMgPCBuaWdodHRpbWU7Civmr5TphLAgPCBuZWlnaGJvdXI7Civmm7jmnrYgPCBib29rc2hlbGY7CivmnInmlYggPCBlZmZlY3RpdmU7CivnvL3nm4IgPCBhbG1zXC1ib3dsOwor55+z54Gw55+zIDwgbGltZXN0b25lOwor6LOH5YqpIDwgc3Vic2lkaXplOwor5q235Y+y5a245a62IDwgaGlzdG9yaWFuOwor5L+u6YGT6ZmiIDwgbW9uYXN0ZXJ5Owor5LiK5qyhIDwgbGFzdFwtdGltZTsKK+acm+mBoOmPoSA8IHRlbGVzY29wZTsKK+aTuuioreWFkiA8IG9ybmFtZW50czsKK+S6lOWkqSA8IGZpdmVcLWRheXM7Civlv4PpnYjkuIogPCBzcGlyaXR1YWw7Civml4Hop4AgPCBzcGVjdGF0b3I7CivloIXlv43kuI3mi5QgPCBmb3J0aXR1ZGU7Civku4vlhaUgPCBpbnRlcnZlbmU7Civku6XkuIogPCBtb3JlXC10aGFuOwor55+b6aCtIDwgc3BlYXJoZWFkOwor5aSi6YG6IDwgd2V0XC1kcmVhbTsKK+WkqeaWh+WtuCA8IGFzdHJvbm9teTsKK+W3tOavlOWmpSA8IGJhcmJpdG9uZTsKK+azouautSA8IHdhdmVcLWJhbmQ7Civpm6LplosgPCB0b1wtZGVwYXJ0Owor5a+m6LOq5LiKIDwgdmlydHVhbGx5Owor5ZCQ5rCjIDwgYXNwaXJhdGVkOwor5p2x5Y2XIDwgc291dGhlYXN0Owor5aWH6KeAIDwgc3BlY3RhY2xlOwor5pS56Z2pIDwgdG9cLXJlZm9ybTsKK+aEm+WciyA8IHBhdHJpb3RpYzsKK+S4jeaWtyA8IHVuY2Vhc2luZzsKK+acquWpmiA8IHVubWFycmllZDsKK+W8semFuCA8IHdlYWtcLWFjaWQ7CivkuZjlrqIgPCBwYXNzZW5nZXI7CivphY3nva4gPCB0b1wtZGVwbG95Owor5aSx6Kq/IDwgaW1iYWxhbmNlOwor5pys5aOYIDwgaG9tZVwtYmFzZTsKK+S6uuS6iyA8IHBlcnNvbm5lbDsKK+acieaEj+itmCA8IGNvbnNjaW91czsKK+abuOW6lyA8IGJvb2tzdG9yZTsKK+WPl+Wus+iAhSA8IGNhc3VsdGllczsKK+S4jeWujOe+jiA8IGRlZmVjdGl2ZTsKK+WPuOapnyA8IGNoYXVmZmV1cjsKK+adseS6niA8IGVhc3RcLWFzaWE7CivlkIjmoLwgPCBxdWFsaWZpZWQ7Civmg4Xnt5LljJYgPCBlbW90aW9uYWw7CivogJDlipsgPCBlbmR1cmFuY2U7CivmlK/mjIHogIUgPCBzdXBwb3J0ZXI7CivmmI7norogPCBjbGVhclwtY3V0Owor5LiN5oOcIDwgbm90XC1zdGludDsKK+WAn+abuOWWriA8IGJvb2tcLXNsaXA7CivkuLvlqaYgPCBob3VzZXdpZmU7CivooajmhI/mloflrZcgPCBpZGVvZ3JhcGg7CivpgJrosqjohqjohLkgPCBpbmZsYXRpb247CivnjqnlhbcgPCBwbGF5dGhpbmc7Civpm7voqbEgPCB0ZWxlcGhvbmU7Civmlr3ogqUgPCBmZXJ0aWxpemU7CivnrKzlhavljYEgPCBlaWdodGlldGg7Civph4znqIvnopEgPCBtaWxlc3RvbmU7CivkuI3lt7IgPCBlbmRsZXNzbHk7Civpm5zosqggPCBncm9jZXJpZXM7CivmnKjljKAgPCBjYXJwZW50ZXI7CivphqzmsrkgPCBzb3lcLXNhdWNlOwor5LiN5oOF6aGYIDwgdW53aWxsaW5nOwor6Ke46ayaIDwgdGVudGFjbGVzOwor5LiL5a6a576pIDwgdG9cLWRlZmluZTsKK+aTpumfsyA8IGZyaWNhdGl2ZTsKK+WRqOWcjSA8IGVuY29tcGFzczsKK+WwjeS4jei1tyA8IGknJ21cLXNvcnJ5Owor5LiN5bCNIDwgaW5jb3JyZWN0Owor5b+D55uuIDwgbWVudGFsaXR5Owor5Y+v5pWsIDwgdmVuZXJhYmxlOwor5aSn6I2zIDwgc295YVwtYmVhbjsKK/CipZ4gPCBzYW1lXC1hc1wt5b+hOwor5YGH6LGh54mZIDwgY2VsbHVsb2lkOwor6ZmN6JC95YKYIDwgcGFyYWNodXRlOwor5rOi5bmFIDwgYW1wbGl0dWRlOwor5Y+z5omLIDwgcmlnaHRoYW5kOwor5rWB5YWlIDwgZmxvd1wtaW50bzsKK+azqOWwhCA8IGluamVjdGlvbjsKK+ehrOebpCA8IGhhcmRcLWRpc2s7Civlip/oqrIgPCBjbGFzc3dvcms7CivpgLHplbcgPCBwZXJpbWV0ZXI7Civos7zosrfogIUgPCBwdXJjaGFzZXI7CivlpKfmlZnloIIgPCBjYXRoZWRyYWw7CivntYTnuZTogIUgPCBvcmdhbml6ZXI7CivlqZrlp7sgPCBtYXRyaW1vbnk7CivkuI3lnKggPCBub3RcLWJlXC1pbjsKK+S4meeoruWwhOe3miA8IGdhbW1hXC1yYXk7Civpnq3mr5sgPCBmbGFnZWxsdW07CivmkqvppIogPCB0b1wtZm9zdGVyOwor5Yiq6ZmkIDwgdG9cLWRlbGV0ZTsKK+mBoOi2syA8IGV4Y3Vyc2lvbjsKK+eEoemZkCA8IHVubGltaXRlZDsKK+mgkeW8tyA8IHRlbmFjaW91czsKK+eEoemXnCA8IHVucmVsYXRlZDsKK+iSuOeZvCA8IGV2YXBvcmF0ZTsKK+WPpOaAqiA8IGVjY2VudHJpYzsKK+W+l+eVtiA8IGV4cGVkaWVudDsKK+ayueW4gyA8IHRhcnBhdWxpbjsKK+S4i+WUhyA8IGxvd2VyXC1saXA7CivkuIrllIcgPCB1cHBlclwtbGlwOwor6IGW6L+t5ZOlIDwgc2FuXC1kaWVnbzsKK+mggeW/gyA8IHR5cGVcLXBhZ2U7CivmsaHmn5MgPCBwb2xsdXRpb247CivmhI/msKPnm7jmipUgPCBjb25nZW5pYWw7CivplbfmlrnlvaIgPCByZWN0YW5nbGU7CivliY3pgJQgPCBwcm9zcGVjdHM7CivnhoronIIgPCBidW1ibGViZWU7CivnuL3ntZAgPCBzdW1tYXJpemU7CivlkLjlj5YgPCB0b1wtYWJzb3JiOwor6YCx6YKKIDwgcGVyaXBoZXJ5Owor5bm06ZmQIDwgYWdlXC1saW1pdDsKK+S4i+WIlyA8IGZvbGxvd2luZzsKK+mhjOWQjSA8IGF1dG9ncmFwaDsKK+WkmuerryA8IG11bHRpcG9ydDsKK+aViOiDvSA8IGVmZmljaWVudDsKK+eBsOeNteeKrCA8IGdyZXlob3VuZDsKK+eNsuaatOWIqeiAhSA8IHByb2ZpdGVlcjsKK+S4jeWBnCA8IGluY2Vzc2FudDsKK+Wkp+egsiA8IGFydGlsbGVyeTsKK+S4jeWAvCA8IG5vdFwtd29ydGg7CivmspnlsqkgPCBzYW5kc3RvbmU7Civms6Llj4ogPCBzcHJlYWRcLXRvOwor5b6u5rOiIDwgbWljcm93YXZlOwor54Sh6L6cIDwgaW5ub2NlbmNlOwor5qyh6KaBIDwgc2Vjb25kYXJ5Owor5LiN5LqIIDwgbm90XC1ncmFudDsKK+WOu+W5tCA8IGxhc3RcLXllYXI7CivkuI3kuoYgPCB1bmFibGVcLXRvOwor6Z+M5oCnIDwgdG91Z2huZXNzOwor54mI5qyKIDwgY29weXJpZ2h0Owor5ZCR5Y2XIDwgc291dGh3YXJkOwor5rCR5q2MIDwgZm9sa1wtc29uZzsKK+WNs+aZgiA8IGltbWVkaWF0ZTsKK+e/kuaFo+aApyA8IGN1c3RvbWFyeTsKK+W5uOmBiyA8IGZvcnR1bmF0ZTsKK+e+juS4rSA8IHVzYVwtY2hpbmE7Civnhp/nt7QgPCBwcmFjdGljZWQ7Civlv7UgPCB0aGlua1wtb2Y7CivkvJogPCBhc3NlbWJsZTsKK+WtpiA8IGxlYXJuaW5nOwor5b6SIDwgZGlzY2lwbGU7CivnnaYgPCBmcmllbmRseTsKK+aXoCA8IG5lZ2F0aXZlOwor5pa5IDwgYVwtc3F1YXJlOwor5YmNIDwgaW5cLWZyb250Owor55yJIDwgZXllYnJvd3M7CivnnIEgPCBwcm92aW5jZTsKK+ebtCA8IHN0cmFpZ2h0Owor5buiIDwgYWJyb2dhdGU7Civnm5sgPCBhYnVuZGFudDsKK+i7kiA8IGNhcnJpYWdlOwor5YWoIDwgbWFpbnRhaW47Civlu4ogPCBjb3JyaWRvcjsKK+eauiA8IHdyaW5rbGVzOwor5bq3IDwgcGVhY2VmdWw7Civpl7QgPCBtaWRwb2ludDsKK+i6iiA8IGhlc2l0YXRlOwor56ysIDwgc2VxdWVuY2U7CivlubsgPCBpbGx1c2lvbjsKK+eZhyA8IGVwaWxlcHN5Owor5bGxIDwgbW91bnRhaW47Civlt74gPCBrZXJjaGllZjsKK+W3pyA8IHNraWxsZnVsOwor6LedIDwgZGlzdGFuY2U7CivnlYwgPCBib3VuZGFyeTsKK+S7uyA8IHRydXN0XC10bzsKK+WPsCA8IHBsYXRmb3JtOwor6LGhIDwgZWxlcGhhbnQ7CivpopggPCBmb3JlaGVhZDsKK+izoiA8IHZpcnR1b3VzOwor6LOHIDwgcHJvcGVydHk7CivosrwgPCBwYXN0ZVwtdG87CivosrsgPCBleHBlbnNlczsKK+WxpSA8IGZvb3R3ZWFyOwor5q2mIDwgbWlsaXRhcnk7CivnkLIgPCBuZWNrbGFjZTsKK+WwoCA8IHZlcnlcLWZldzsKK+WujCA8IGNvbXBsZXRlOwor5Y2zIDwgcHJvbXB0bHk7Civlr7UgPCBmYXZvcml0ZTsKK+ivrSA8IGxhbmd1YWdlOwor54+NIDwgcHJlY2lvdXM7CivllYYgPCBjb21tZXJjZTsKK+WunSA8IHRyZWFzdXJlOwor5Y2DIDwgdGhvdXNhbmQ7CivlrpwgPCBzdWl0YWJsZTsKK+WumCA8IG9mZmljaWFsOwor56uZIDwgc3RhbmRcLXVwOwor6K2sIDwgbWV0YXBob3I7CivpppkgPCBmcmFncmFudDsKK+S8vCA8IHJlc2VtYmxlOwor5ayiIDwgdHJvdWJsZWQ7Civomb0gPCBhbHRob3VnaDsKK+S4lCA8IG1vcmVvdmVyOwor6LCDIDwgdHJhbnNmZXI7Civlq4kgPCBqZWFsb3VzeTsKK+eLgyA8IHRvXC1jb3ZldDsKK+WrgSA8IHRvXC1tYXJyeTsKK+WqmiA8IGNoYXJtaW5nOwor6KqYIDwgcGVyc3VhZGU7CivoqoQgPCBldWxvZ2l6ZTsKK+ipsyA8IGRldGFpbGVkOwor6KmwIDwgcXVlc3Rpb247Civmg4ogPCBmcmlnaHRlbjsKK+aUryA8IGRpc3BlcnNlOwor56qBIDwgc3VkZGVubHk7CivoqZUgPCBhcHByYWlzZTsKK+WooCA8IHByZWduYW50Owor5Y+lIDwgc2VudGVuY2U7CivmmL4gPCBtYW5pZmVzdDsKK+WiniA8IGluY3JlYXNlOwor5paZIDwgY29uc2lkZXI7CivlpoogPCBjb25jZWl2ZTsKK+e7rSA8IGNvbnRpbnVlOwor54KtIDwgY2hhcmNvYWw7Civlm7QgPCBzdXJyb3VuZDsKK+eBvSA8IGNhbGFtaXR5Owor5aGaIDwgY2VtZXRlcnk7CivngJUgPCBhcHByb2FjaDsKK+a/uiA8IHNwcmlua2xlOwor5r+vIDwgd2FzaFwtb3V0Owor5Z6jIDwgbG93XC13YWxsOwor5LmgIDwgcHJhY3RpY2U7CivlnoIgPCBsZXRcLWRvd247CivlnYIgPCBoaWxsc2lkZTsKK+elliA8IGFuY2VzdG9yOwor5LyYIDwgc3VwZXJpb3I7Civmu68gPCBibG9ja1wtdXA7CivmuqIgPCBvdmVyZmxvdzsKK+a4qSA8IGx1a2V3YXJtOwor6JqKIDwgbW9zcXVpdG87CivpubggPCBhbGthbGluZTsKK+WZqiA8IGJlXC1ub2lzeTsKK+WYsiA8IHJpZGljdWxlOwor5ribIDwgZGVjcmVhc2U7CivlmJQgPCB0b1wtdm9taXQ7CivmgakgPCBraW5kbmVzczsKK+iEsSA8IHRha2VcLW9mZjsKK+a2uCA8IGRyaWVkXC11cDsKK+WWqiA8IG1vdXJuaW5nOwor5aWUIDwgcnVuXC1mYXN0Owor5raMIDwgc3VyZ2VcLXVwOwor56aBIDwgcmVzdHJpY3Q7Civmta4gPCB0b1wtZmxvYXQ7CivkupIgPCBtdXR1YWxseTsKK+aQniA8IHRvXC1jbGVhcjsKK+acsSA8IGNpbm5hYmFyOwor5Z+fIDwgZGlzdHJpY3Q7CivmnZAgPCBtYXRlcmlhbDsKK+WBtyA8IHRvXC1zdGVhbDsKK+iTiSA8IGhpYmlzY3VzOwor5oq9IDwgZHJhd1wtb3V0Owor5LuqIDwgY2VyZW1vbnk7CivljbggPCBsYXlcLWRvd247Civlv4YgPCByZW1lbWJlcjsKK+malCA8IHNlcGFyYXRlOwor5Y2TIDwgcHJvZm91bmQ7CivmjZ8gPCBkaW1pbmlzaDsKK+iMhCA8IGVnZ3BsYW50Owor5Yu/IDwgbXVzdFwtbm90Owor6autIDwgbXVzdGFjaGU7CivpgaUgPCBmYXJcLWF3YXk7Civmq5sgPCBjb21iXC1vdXQ7CivluIEgPCBjdXJyZW5jeTsKK+WLiSA8IGVuZGVhdm9yOwor6aq4IDwgc2tlbGV0b247CivliqogPCB0b1wtZXhlcnQ7CivokI0gPCBkdWNrd2VlZDsKK+aohSA8IGZpclwtdHJlZTsKK+e8qSA8IGNvbnRyYWN0Owor6IelIDwgbGllXC1kb3duOwor5oWVIDwgbG9uZ1wtZm9yOwor6IejIDwgbWluaXN0ZXI7CivmjKEgPCBvYnN0cnVjdDsKK+iGnCA8IG1lbWJyYW5lOwor5qabIDwgaGF6ZWxudXQ7Civkv4ogPCB0YWxlbnRlZDsKK+aenSA8IGJyYW5jaGVzOwor6Zm3IDwgc3VibWVyZ2U7Civli5IgPCBzdHJhbmdsZTsKK+iBiiA8IHNvbWV3aGF0Owor6aO+IDwgZGVjb3JhdGU7CivmlpwgPCBzbGFudGluZzsKK+aWkCA8IGdyYWNlZnVsOwor5qKfIDwgb3dsXC10aHVzOwor5YKYIDwgdW1icmVsbGE7Civkuq0gPCBwYXZpbGlvbjsKK+azmyA8IHRvXC1kcmlmdDsKK+espiA8IGlcLmRcLlwtdGFnOwor5YWBIDwgdG9cLWdyYW50Owor6LeoIDwgc3RyYWRkbGU7CivmjqkgPCB0b1wtY292ZXI7CivpoIMgPCBhXC1tb21lbnQ7Civmn7QgPCBmaXJld29vZDsKK+S/ryA8IGJvd1wtZG93bjsKK+S/pSA8IHJpY2tzaGF3Owor6YK7IDwgbmVpZ2hib3I7Civpqb4gPCB0b1wtZHJpdmU7Civnvp4gPCBkaXNncmFjZTsKK+ijpCA8IHRyb3VzZXJzOwor5LywIDwgbWVyY2hhbnQ7CivpnpggPCBzY2FiYmFyZDsKK+WSkCA8IGluc3RydWN0Owor5oGSIDwgY29uc3RhbnQ7Civns58gPCBzZWRpbWVudDsKK+aJriA8IGRyZXNzXC11cDsKK+abnCA8IGdsb3Jpb3VzOwor5pqiIDwgc21vb3RobHk7CivmirwgPCBtb3J0Z2FnZTsKK+aImiA8IHJlbGF0aXZlOwor56mGIDwgbWFqZXN0aWM7CivlmLsgPCBtaXJ0aGZ1bDsKK+S4piA8IGVxdWFsXC10bzsKK+aYlCA8IGZvcm1lcmx5Owor6ZeYIDwgc3RydWdnbGU7CivnnqogPCBzdGFyZVwtYXQ7CivmlqUgPCB0b1wtc2NvbGQ7CivliaogPCBzY2lzc29yczsKK+WnmiA8IGhhbmRzb21lOwor5o6PIDwgdGFrZVwtb3V0Owor6ZaTIDwgaW50ZXJ2YWw7Civmg7kgPCBpcnJpdGF0ZTsKK+ewvyA8IHJlZ2lzdGVyOwor6Iq3IDwgYW5nZWxpY2E7Civno4EgPCBtYWduZXRpYzsKK+avhSA8IHJlc29sdXRlOwor56ylIDwgYVwtaGFtcGVyOwor5ouYIDwgcmVzdHJhaW47CivkvJAgPCBjdXRcLWRvd247Civnq4ogPCBzZWNyZXRseTsKK+mKmCA8IGluc2NyaWJlOwor5oSJIDwgcGxlYXNhbnQ7CivnqpwgPCBydW5cLWF3YXk7Civlr6ggPCBzdG9ja2FkZTsKK+aIuyA8IHBlcnZlcnNlOwor5rKqIDwgc2hhbmdoYWk7Civph5wgPCBjYXVsZHJvbjsKK+WXpCA8IGxhdWdoXC1hdDsKK+WosSA8IHBsZWFzdXJlOwor56aEIDwgYmxlc3Npbmc7CivmhJUgPCBzdGFydGxlZDsKK+WVoSA8IG1vcnBoaW5lOwor5ZuaIDwgcHJpc29uZXI7CivotKYgPCBhY2NvdW50czsKK+eTtyA8IGNyb2NrZXJ5Owor6IWlIDwgcmF3XC1tZWF0Owor5ZK4IDwgdG9nZXRoZXI7CivnlqsgPCBlcGlkZW1pYzsKK+WVqiA8IHN5bGxhYmxlOwor6IaoIDwgdG9cLXN3ZWxsOwor5ZCxIDwgY2hpcnBpbmc7Civoj4wgPCBtdXNocm9vbTsKK+eQkCA8IHRyaWZsaW5nOwor6IufIDwgY2FyZWxlc3M7CivltJsgPCB0b3dlcmluZzsKK+WHuCA8IHByb3RydWRlOwor5ZiAIDwgYmFja2JpdGU7Civpk5AgPCBzaGFja2xlczsKK+iwlSA8IHByb2NsYWltOwor6L+4IDwgZ3VzaFwtb3V0Owor5YmUIDwgcGlja1wtb3V0Owor5YaAIDwgaG9wZVwtZm9yOwor56CaIDwgaW5rc3RvbmU7CivmjY0gPCB3YXJkXC1vZmY7Civoh4AgPCBidXR0b2NrczsKK+WAlCA8IHN0dWJib3JuOwor5aWEIDwgZXJlXC1sb25nOwor5L6lIDwgYmVcLWx1Y2t5Owor5qK1IDwgYnVkZGhpc3Q7CivopKUgPCBtYXR0cmVzczsKK+aZliA8IHN1bnNoaW5lOwor55W0IDwgZmFybWxhbmQ7Civnnp8gPCBnbGFyZVwtYXQ7CivnmLggPCBsYW1lbmVzczsKK+a+jiA8IHNwbGF0dGVyOwor5r2mIDwgdG9cLWZsb29kOwor5YGOIDwgY2xpbmdcLXRvOwor6J2OIDwgc2NvcnBpb247CivnsLggPCB3aW5ub3dlcjsKK+W6tiA8IG51bWVyb3VzOwor5pKCIDwgcHV0XC1kb3duOwor5pmXIDwgcHJlXC1kYXduOwor6LmKIDwgZm9vdHBhdGg7CivpmIkgPCBjYXN0cmF0ZTsKK+a3hiA8IGNvbmZ1c2VkOwor6JCmIDwgZW50YW5nbGU7CivmpoYgPCBlbG1cLXRyZWU7CivnjJ0gPCBhYnJ1cHRseTsKK+abpiA8IHN1bmxpZ2h0Owor5rikIDwgc3dlbGxpbmc7CivovpggPCB3aW5kbGFzczsKK+mTnSA8IGFsdW1pbnVtOwor5o2LIDwgdG9cLXBsdWNrOwor6Jm7IDwgaG9yc2VmbHk7CivnnowgPCBkb3plXC1vZmY7Civkup8gPCB1cmdlbnRseTsKK+W+qCA8IGRvdWJ0ZnVsOwor5ZWQIDwgdG9cLXRhc3RlOwor6ZWvIDwgYnJhY2VsZXQ7CivliL0gPCBhbXB1dGF0ZTsKK+iXuyA8IHNwbGVuZGlkOwor5oOwIDwgaW5kb2xlbnQ7Civnh5QgPCB0b1wtcm9hc3Q7Civmtp0gPCBpbnVuZGF0ZTsKK+e7myA8IGRlZXBcLXJlZDsKK+awryA8IGNobG9yaW5lOwor5Z2NIDwgY29sbGFwc2U7Civlv5AgPCB0aW1vcm91czsKK+auoSA8IGVuY29mZmluOwor5pi1IDwgaW50aW1hdGU7Civkv58gPCB3YWl0XC1mb3I7CivmoaIgPCBoYXJkd29vZDsKK+m7jyA8IHN0aWNrXC10bzsKK+eXmCA8IHNtYWxscG94Owor5qefIDwgYmV0ZWxudXQ7Civpn60gPCBzY2FsbGlvbjsKK+iUqyA8IHdpdGhlcmVkOwor6IaCIDwgYmFja2JvbmU7Civog6sgPCBzaGluYm9uZTsKK+iHgyA8IHN3ZWxsXC11cDsKK+WyjCA8IHBlcmlsb3VzOwor546OIDwgamluZ2xpbmc7CivpmrwgPCBhcXVpbGluZTsKK+mZsiA8IGZyb250aWVyOwor6LC2IDwgcHJvcGhlY3k7CivlgbsgPCBodW1wYmFjazsKK+mTgiA8IHBsYXRpbnVtOwor57qbIDwgYVwtYmFubmVyOwor6ZOsIDwgY2hyb21pdW07Civog7AgPCBwYW5jcmVhczsKK+imgyA8IHJlYWNoXC10bzsKK+edviA8IHRlc3RpY2xlOwor5YCoIDwgYXJyb2dhbnQ7CivorqMgPCBvYml0dWFyeTsKK+mSmyA8IHRpdGFuaXVtOwor5rWDIDwgc2F0dXJhdGU7Civml5YgPCByb21hbnRpYzsKK+e8mSA8IHJlZFwtc2lsazsKK+ihviA8IGNvdmVybGV0Owor5a64IDwgaW1wZXJpYWw7CivkvZ4gPCBmbGF0dGVyeTsKK+iblCA8IHRhcGV3b3JtOwor5rCFIDwgb3ZlcmNvYXQ7CivmsJ8gPCBmbHVvcmluZTsKK+awsCA8IGN5YW5vZ2VuOwor6bKfIDwgc3R1cmdlb247CivnoZIgPCBzZWxlbml1bTsKK+iIqCA8IGFcLXNhbXBhbjsKK+eDiiA8IHRvXC1zbWVsdDsKK+iQsSA8IGRheVwtbGlseTsKK+eWuCA8IGphdW5kaWNlOwor6ZOKIDwgdGhhbGxpdW07Civor4IgPCBleGVnZXNpczsKK+mbiSA8IHBoZWFzYW50Owor6aKiIDwgbHVtaW5vdXM7CivmoIAgPCBnYXJkZW5pYTsKK+ivkiA8IGJlcXVlYXRoOwor6aKfIDwgZGF3ZGxpbmc7Civoi4sgPCBhbWFyYW50aDsKK+eAoyA8IHNlYVwtbWlzdDsKK+eunSA8IHR3ZWV6ZXJzOwor5qWuIDwgbXVsYmVycnk7CivpgYQgPCB0b1wtaHVycnk7CivpkpIgPCB2YW5hZGl1bTsKK+iLtyA8IGxpY29yaWNlOwor6ZKoIDwgdHVuZ3N0ZW47Civln7ggPCBhXC1ib3JkZXI7Civlq5IgPCBkYXVnaHRlcjsKK+eZnCA8IGVyeXRoZW1hOwor6bi5IDwgdGhlXC1jcm93Owor5pubIDwgdHdpbGlnaHQ7CivpqpggPCBzdGFsbGlvbjsKK+WduyA8IGFuXC1pc2xldDsKK+inqyA8IHRvXC1zdGFydDsKK+mTtSA8IGFtbW9uaXVtOwor5rCpIDwgYXJnb25pdW07CivljaMgPCB3aW5lXC1wb3Q7CivplJEgPCBhbnRpbW9ueTsKK+mGmyA8IGFsZGVoeWRlOwor6ZK9IDwgdGFudGFsdW07CivnoLwgPCBjb25jcmV0ZTsKK+eGmCA8IHRvXC1zdGVhbTsKK+eqqCA8IGFcLWNlbGxhcjsKK+agsiA8IG1hbmdyb3ZlOwor6bKjIDwgc2tpcGphY2s7Civpk7cgPCBydWJpZGl1bTsKK+mTlSA8IGV1cm9waXVtOwor6ZKLIDwgcG9sb25pdW07CivnoJEgPCB0b1wtZ3JpbmQ7CivmtKsgPCB0b1wtZGl0Y2g7Civln5ogPCBjcnVjaWJsZTsKK+WepCA8IGFudFwtaGlsbDsKK+WNuiA8IHdpbmVjdXBzOwor5ZiPIDwgZmVsaWNpdHk7Civpsr0gPCBmbGF0ZmlzaDsKK+myrSA8IG1hY2tlcmVsOwor6ZKqIDwgc2NhbmRpdW07CivpkqsgPCBmcmFuY2l1bTsKK+mSkCA8IHNhbWFyaXVtOwor56WTIDwgZXhvcmNpc2U7CivmoLMgPCBhXC1iYXNrZXQ7CivlkLIgPCBzbWlsZVwtYXQ7CivojrAgPCBjYW1waGFuZTsKK+iKtCA8IGZsdW9yZW5lOwor6LWcIDwgYWJzdHJ1c2U7CivmlLnnt6ggPCB0b1wtYWRhcHQ7Civnmb3lhafpmpwgPCBjYXRhcmFjdDsKK+Wjk+e3iiA8IGNvbXByZXNzOwor6Yar5a24IDwgbWVkaWNpbmU7CivlkJ7kvbUgPCB0b1wtYW5uZXg7CivpnYjmtLsgPCBmbGV4aWJsZTsKK+Wkp+evt+i7iiA8IHNjaG9vbmVyOwor5paH5427IDwgZG9jdW1lbnQ7CivlpJbnlKggPCBleHRlcm5hbDsKK+ebo+itt+S6uiA8IGd1YXJkaWFuOwor6YKK57eaIDwgc2lkZWxpbmU7CivmraPntbEgPCBvcnRob2RveDsKK+aWr+a0m+S8kOWFiyA8IHNsb3Zha2lhOwor6aC75LuNIDwgZnJlcXVlbnQ7Civnt6/nt5ogPCBsYXRpdHVkZTsKK+S4jeWQiOmBqSA8IGltcHJvcGVyOwor54Sh6KqkIDwgdmVyaWZpZWQ7Civml6Xmm4YgPCBjYWxlbmRhcjsKK+WJneiQvSA8IHBlZWxcLW9mZjsKK+mgkOWNnCA8IGZvcmV0ZWxsOwor6Ky55oWOIDwgY2F1dGlvdXM7CivojLbppKggPCB0ZWFob3VzZTsKK+S8gealremWk+e2sui3ryA8IGV4dHJhbmV0Owor6KeA5a+f6ICFIDwgb2JzZXJ2ZXI7Civps6XnsaAgPCBiaXJkY2FnZTsKK+W7uueviSA8IGJ1aWxkaW5nOwor6Jel5YqR5aOrIDwgZHJ1Z2dpc3Q7CivkuI3kv6Hku7sgPCBtaXN0cnVzdDsKK+W7uueriyA8IGNyZWF0aW9uOwor5Zug54m557ayIDwgaW50ZXJuZXQ7Civlv4PmiYsgPCBuZXdcLWhhbmQ7CivlhrDpmpkgPCBjcmV2YXNzZTsKK+mcuOasiiA8IGhlZ2Vtb255Owor5Y2x5oClIDwgY3JpdGljYWw7CivpmpnnuKsgPCBhcGVydHVyZTsKK+WwjeeoseaApyA8IHN5bW1ldHJ5Owor6Kaq6LqrIDwgcGVyc29uYWw7CivnorrlrpogPCBkZWZpbml0ZTsKK+aqoua4rOWZqCA8IGRldGVjdG9yOwor57WC6LqrIDwgbGlmZWxvbmc7CivprZTooZPluKsgPCBtYWdpY2lhbjsKK+iomOiAhSA8IHJlcG9ydGVyOwor6KaP6YG/IDwgdG9cLWV2YWRlOwor54mn5birIDwgY2hhcGxhaW47CivmlLbnm4ogPCBlYXJuaW5nczsKK+W5s+ihjCA8IHBhcmFsbGVsOwor5b+g5a+mIDwgZmFpdGhmdWw7CivmraXnmbwgPCBmb290d29yazsKK+WIhuijgiA8IHNwbGl0XC11cDsKK+aWsOabuCA8IG5ld1wtYm9vazsKK+S4jeacveeahCA8IGltbW9ydGFsOwor5Y+j5LqkIDwgb3JhbFwtc2V4Owor5Ym156uLIDwgdG9cLWZvdW5kOwor54Wk566xIDwgY29hbFwtYm94Owor5rK554K45ZyI6aSFIDwgZG91Z2hudXQ7CivnvLrkuY8gPCBzaG9ydGFnZTsKK+aXpeW+jCA8IHNvbWV0aW1lOwor5q235Y+y5oCnIDwgaGlzdG9yaWM7Civlm6DvuY3kuYvmlYUgPCBpbmFzbXVjaDsKK+eBvemboyA8IGRpc2FzdGVyOwor5b655bqVIDwgdGhvcm91Z2g7CivmqrjmqqzmsLQgPCBsZW1vbmFkZTsKK+mxieijmSA8IGNhbGlwYXNoOwor6K2m5Y+lIDwgYXBob3Jpc207Civml6nlt7IgPCBsb25nXC1hZ287CivnoLTmm4kgPCBkYXlicmVhazsKK+mbqOa7tCA8IHJhaW5kcm9wOwor5Lul5aSq57ayIDwgZXRoZXJuZXQ7CivmmI7lpKkgPCB0b21vcnJvdzsKK+WmluWtvSA8IGV2aWxkb2VyOwor6Zu75rCjIDwgZWxlY3RyaWM7CivphazloLEgPCB0b1wtcmVwYXk7CivosqDph43mk5QgPCBidXJkZW5lZDsKK+mBuueUoiA8IGhlcml0YWdlOwor56Gs5bqmIDwgaGFyZG5lc3M7CivnhKHogYogPCBub25zZW5zZTsKK+apq+mBjiA8IHRyYXZlcnNlOwor6ZuN5a655aSn5bqmIDwgZ2VuZXJvdXM7CivlvoHmiLAgPCBjYW1wYWlnbjsKK+iqsuacrCA8IHRleHRib29rOwor5YeL6KydIDwgbGFuZ3Vpc2g7CivljYHkuozmnIggPCBkZWNlbWJlcjsKK+ioiOeulyA8IHRvXC1jb3VudDsKK+mWi+mZpCA8IHRvXC1leHBlbDsKK+e6luW3pyA8IGRlbGljYXRlOwor5pOm57ay55CDIDwgbmV0XC1iYWxsOwor54Sh57irIDwgc2VhbWxlc3M7CivlhqDou40gPCBjaGFtcGlvbjsKK+WHhuiosSA8IHRvXC1hbGxvdzsKK+mbu+airyA8IGVsZXZhdG9yOwor6JOL5bGkIDwgY2FwXC1yb2NrOwor6Z2i5bCNIDwgY29uZnJvbnQ7CivnhKHnt5ogPCB3aXJlbGVzczsKK+iBluS/nee+hSA8IHN0XC5cLXBhdWw7CivpgJrntIUgPCB2ZXJ5XC1yZWQ7CivljIXmioQgPCBvdXRmbGFuazsKK+i+qOiqjSA8IGlkZW50aWZ5Owor5Y6f5L6GIDwgb3JpZ2luYWw7Civlpb3lpb3lhZLlnLAgPCBwcm9wZXJseTsKK+WkmuaVuCA8IG1ham9yaXR5Owor54mp5ZOBIDwgYXJ0aWNsZXM7CivmlL/msrsgPCBwb2xpdGljczsKK+WNiuWknCA8IG1pZG5pZ2h0Owor5paw5bm0IDwgbmV3XC15ZWFyOwor5peF5a6iIDwgdHJhdmVsZXI7CivpgLznnJ8gPCBsaWZlbGlrZTsKK+mojuWjq+awo+amgiA8IGNoaXZhbHJ5Owor6KW/6KOh54i+IDwgY3lyaWxsaWM7Civlhazph5AgPCBkZWNpZ3JhbTsKK+auuuaIriA8IG1hc3NhY3JlOwor6Im+5b636JW+5b63IDwgYWRlbGFpZGU7CivlipvmsKMgPCBzdHJlbmd0aDsKK+WFp+mDqCA8IGludGVyaW9yOwor57mh5bi3IDwgdGFwZXN0cnk7CivlpKrlv5kgPCB0b29cLWJ1c3k7CivnnaHnnKAgPCBzbGVlcGluZzsKK+WNgeWbmyA8IGZvdXJ0ZWVuOwor5bi45Z2Q5rG96LuK6ICFIDwgbW90b3Jpc3Q7CivlubPnrYkgPCBlcXVhbGl0eTsKK+WMheWxpCA8IGNsYWRkaW5nOwor5rG96LuK5bGV6Ka95pyDIDwgY2FyXC1zaG93Owor5YaN6KaLIDwgZ29vZFwtYnllOwor5Y+v5pOm5a+rIDwgZXJhc2FibGU7CivlhY3osrvou5/ku7YgPCBmcmVld2FyZTsKK+WNseS6oSA8IGF0XC1zdGFrZTsKK+W3p+ioiCA8IG1hbmV1dmVyOwor6JGX5omLIDwgY29tbWVuY2U7CivmoYPoirHlv4PmnKggPCBtYWhvZ2FueTsKK+ebsuiFuCA8IGFwcGVuZGl4Owor54mn576K6ICFIDwgc2hlcGhlcmQ7CivmlK/mn7EgPCBtYWluc3RheTsKK+W9ouWuuSA8IGRlc2NyaWJlOwor54Sh55aRIDwgbm9cLWRvdWJ0Owor5by35oKNIDwgdmFsbGlhbnQ7Civnspfph44gPCBpbnNvbGVudDsKK+iii+m8oCA8IGthbmdhcm9vOwor6Luf6auUIDwgc29mdHdhcmU7CivmlrDlnosgPCBuZXdcLXR5cGU7Civln7nogrIgPCB0b1wtdHJhaW47CivnhaTmsrkgPCBrZXJvc2VuZTsKK+WKoOaZgiA8IG92ZXJ0aW1lOwor5qiZ5rqW6KaP5qC8IDwgc3RhbmRhcmQ7CivlhYnovJ0gPCByYWRpYW5jZTsKK+W+qeWFgyA8IHJlY292ZXJ5Owor5Y2B5YWrIDwgZWlnaHRlZW47CivlpJrlsJEgPCBob3dcLW11Y2g7CivljYHlhYsgPCBkZWNhZ3JhbTsKK+WcsOmbtyA8IGxhbmRtaW5lOwor5aaC5LuKIDwgbm93YWRheXM7Civpgqrmg6EgPCBzaW5pc3RlcjsKK+eEoeirluS9leaZgiA8IHdoZW5ldmVyOwor6KeA55yLIDwgdG9cLXdhdGNoOwor5b6X5YiGIDwgdG9cLXNjb3JlOwor562G6KiY5pysIDwgbm90ZWJvb2s7Civou4Dpq5QgPCB0aGVcLWJvZHk7Civnoazku7YgPCBoYXJkd2FyZTsKK+WkqeWggiA8IHBhcmFkaXNlOwor6Jaw6KGj6I2JIDwgbGF2ZW5kZXI7CivljYHkuZ0gPCBuaW5ldGVlbjsKK+WFieitnCA8IHNwZWN0cnVtOwor6KOc6YG6IDwgYWRkZW5kdW07CivpgaDmnbEgPCBmYXJcLWVhc3Q7Civlub7kuY7mspLmnIkgPCBzY2FyY2VseTsKK+WNgeS4iSA8IHRoaXJ0ZWVuOwor5LiN5b+F6KaBIDwgbmVlZGxlc3M7CivmqZ/og70gPCBmdW5jdGlvbjsKK+iSmeWPpCA8IG1vbmdvbGlhOwor54mn5bir5LmL6IG3IDwgbWluaXN0cnk7CivpgaDmma8gPCBwcm9zcGVjdDsKK+e0kOe0hCA8IG5ld1wteW9yazsKK+aPkOitsCA8IHByb3Bvc2FsOwor6YCy5q2lIDwgcHJvZ3Jlc3M7Civpm7vloLEgPCB0ZWxlZ3JhbTsKK+iri+mhmOabuCA8IHBldGl0aW9uOwor6LuK6ZaTIDwgd29ya3Nob3A7CivlvoDkvoYgPCBkZWFsaW5nczsKK+W8leWwjiA8IHRvXC1ndWlkZTsKK+m+kyA8IGFcLWhhbHRlcjsKK+ijneiyqCA8IHNoaXBwaW5nOwor5Yqb5bqmIDwgZHluYW1pc207CivmipXos4fogIUgPCBpbnZlc3RvcjsKK+mBjuaWvCA8IHRvb1wtbXVjaDsKK+m8miA8IGRydW1taW5nOwor55uj56aBIDwgaW1wcmlzb247CivlhrDnqpYgPCBpY2Vob3VzZTsKK+WggueahyA8IGltcG9zaW5nOwor6bquIDwgcG9ycmlkZ2U7CivnnIHnlaUgPCBvbWlzc2lvbjsKK+WFreWNgeWbm+iQrCA8IDY0XC0wXC0wMDA7Civlr4TnlJ/niakgPCBwYXJhc2l0ZTsKK+iCr+WhlOWfuiA8IGtlbnR1Y2t5Owor5q+N5L+CIDwgbWF0ZXJuYWw7Civmn6zln5Tlr6ggPCBjYW1ib2RpYTsKK+m1mSA8IGFcLXNocmlrZTsKK+aOoeiytyA8IHB1cmNoYXNlOwor6LyV6KaWIDwgY29udGVtcHQ7Civnsr7oh7QgPCBkZWxpY2FjeTsKK+mzriA8IGNoaWNrZW5zOwor6YGy5bu2IDwgdG9cLWRlbGF5Owor6bK6IDwgY2F0XC1maXNoOwor5pSc5bi2IDwgdG9cLWNhcnJ5Owor5bu25bGVIDwgdG9cLXNjYWxlOwor6a+6IDwgYmxvd2Zpc2g7CivkuIDlsI/mmYIgPCBvbmVcLWhvdXI7Civpg6jkvY0gPCBwb3NpdGlvbjsKK+iSmeaJmOe+heaLiSA8IG1vdG9yb2xhOwor5Lq66KGM6YGTIDwgc2lkZXdhbGs7CivprIsgPCBmb3JlbG9jazsKK+msgCA8IHRvXC1zaGF2ZTsKK+mrtSA8IHdoaXNrZXJzOwor5YWn572uIDwgaW50ZXJuYWw7CivpmZDmnJ8gPCBkZWFkbGluZTsKK+WuieWFqOaApyA8IHNlY3VyaXR5Owor6auOIDwgaGlwXC1ib25lOwor6KiY5oa2IDwgbWVtb3JpZXM7CivpgbflsLEgPCB0b1wteWllbGQ7CivlvLfli4EgPCBwb3dlcmZ1bDsKK+auuuS6uiA8IGhvbWljaWRlOwor5YaN5L+d6Ki8IDwgcmVhc3N1cmU7Civpp6YgPCB0b1wtbW91bnQ7CivppqkgPCBhcm9tYXRpYzsKK+S6uuW3pea1geeUoiA8IGFib3J0aW9uOwor5Ymb5oCnIDwgcmlnaWRpdHk7CivppKsgPCBkdW1wbGluZzsKK+mkqSA8IGhpY2NvdWdoOwor6aSfIDwgbGliYXRpb247CivppJkgPCB0b1wtYWRvcm47CivporEgPCB0YWlwaG9vbjsKK+WLg+WLgyA8IHRocml2aW5nOwor5pOB5pOgIDwgdG9cLWNyb3dkOwor5o6I6KqyIDwgdG9cLXRlYWNoOwor6Kej5pWjIDwgZGlzc29sdmU7Civpn6EgPCBnb3JnZW91czsKK+mfoCA8IGtuZWVcLXBhZDsKK+mZsOaApyA8IGZlbWluaW5lOwor6Z26IDwgc3RvY2tpbmc7Civli5XkvZwgPCBtb3ZlbWVudDsKK+mbnuWwvumFkiA8IGNvY2t0YWlsOwor5pWm5L+DIDwgdG9cLXByZXNzOwor6ZyoIDwgY2xvdWRpbmc7CivmqYTmrJbnkIMgPCBmb290YmFsbDsKK+mbh+WToSA8IGVtcGxveWVlOwor54CJ6JelIDwgbGF4YXRpdmU7Civmj5vnva4gPCBkaXNwbGFjZTsKK+W5s+W6lemNiyA8IHNhdWNlcGFuOwor57SA5b+156KRIDwgbW9udW1lbnQ7CivlnJborIAgPCBjb25zcGlyZTsKK+iRo+S6iyA8IGRpcmVjdG9yOwor5YuV5Lq6IDwgdG91Y2hpbmc7CivpmLggPCBkaXN0cmVzczsKK+mYu+aTiiA8IHRvXC1jaGVjazsKK+ijnOiKsSA8IGFwcGxpcXVlOwor6ZWlIDwgbHV0ZXRpdW07CivloZfmirkgPCB0b1wtc21lYXI7Civoo53oiLkgPCBzaGlwbWVudDsKK+asuuWjkyA8IHRvXC1idWxseTsKK+iNkua2vCA8IGRlc29sYXRlOwor5Ye55p2/IDwgaW50YWdsaW87CivliqPli6IgPCBpbmZlcmlvcjsKK+WWh+WPreawtOS7mSA8IGRhZmZvZGlsOwor5YiG5pW4IDwgZnJhY3Rpb247Civlo5PlipsgPCBwcmVzc3VyZTsKK+mCo+WAiyA8IHRoYXRcLW9uZTsKK+eEoeaDhSA8IHBpdGlsZXNzOwor5pOm5a+rIDwgdG9cLWVyYXNlOwor5aOT5Yi2IDwgc3VwcHJlc3M7Civnsr7norogPCBhY2N1cmF0ZTsKK+mNqSA8IG5vYmVsaXVtOwor6Y2aIDwgZnJvbnRsZXQ7CivkvrXlhaXogIUgPCBpbnRydWRlcjsKK+e2k+W4uCA8IGV2ZXJ5ZGF5Owor6YySIDwgYWN0aW5pdW07CivmlLnpnanogIUgPCByZWZvcm1lcjsKK+atpeWFtSA8IGluZmFudHJ5Owor6YqNIDwgYVwtc2lja2xlOwor5bmz5oi/IDwgYnVuZ2Fsb3c7CivlhrDmtrwgPCBpY2VcLWNvbGQ7CivkvIHmpa3lhafntrLot68gPCBpbnRyYW5ldDsKK+W5u+aDsyA8IGRlbHVzaW9uOwor5bqP5bmVIDwgcHJvbG9ndWU7CivphoYgPCB3aW5lXC1jdXA7CivphoMgPCBtYXJpbmF0ZTsKK+mFsiA8IGhhbmdvdmVyOwor6YSIIDwgc2xpcHBlcnM7Civpgb/lhY0gPCB0b1wtYXZlcnQ7CivloLTmiYAgPCBsb2NhdGlvbjsKK+mChSA8IGhlc2l0YW50Owor6ZuH5Li7IDwgZW1wbG95ZXI7Civmj63nmbwgPCBkaXNjbG9zZTsKK+i/uyA8IHRvXC1zaGlmdDsKK+WCs+ioiiA8IHN1YnBvZW5hOwor6KmV5LywIDwgZXZhbHVhdGU7CivmiYvmj5DnrrEgPCBzdWl0Y2FzZTsKK+WBvemAoCA8IHRvXC1mb3JnZTsKK+eBq+eJhiA8IGZpcmV3YWxsOwor6L2KIDwgYXhsZVwtdGlwOwor6LysIDwgYVwtaGVhcnNlOwor5Ye25omLIDwgbXVyZGVyZXI7CivkuI3lkIzmhI8gPCBkaXNhZ3JlZTsKK+WFseWSjOWciyA8IHJlcHVibGljOwor54Sh5a6zIDwgaGFybWxlc3M7Civou5/oho8gPCBvaW50bWVudDsKK+i5viA8IHRvXC1zcXVhdDsKK+aOjOiBsiA8IGFwcGxhdXNlOwor6KGo6KeAIDwgYXBwYXJlbnQ7CivouacgPCB0b1wtc3BvaWw7Civln4vmspIgPCBvYmxpdmlvbjsKK+W5s+W4uCA8IG9yZGluYXJ5Owor6LimIDwgdGhlXC1zaGluOwor5ouU6ZmkIDwgcHVsbFwtb3V0Owor5aKe5YqgIDwgdG9cLXJhaXNlOwor6LeCIDwgY3JlZXBpbmc7CivnhKHoq5bkvZXkuosgPCBhbnl0aGluZzsKK+aRqeaTpiA8IGZyaWN0aW9uOwor6Ka65b6XIDwgdG9cLXRoaW5rOwor6auY6LK0IDwgZ3JhbmRldXI7Civmo5Lno6jmqZ8gPCByb2RcLW1pbGw7CivlhYXnlbYgPCBzZXJ2ZVwtYXM7CivngrrmmYIgPCB0aW1ld2lzZTsKK+mBlOWIsCA8IHRvXC1yZWFjaDsKK+ixjiA8IHZlcnRpY2FsOwor6KW/5pa5IDwgdGhlXC13ZXN0Owor57K+5Yqb5YWF5rKbIDwgdmlnb3JvdXM7CivorbkgPCB0b1wtc2hvdXQ7CivpgJrloLEgPCBidWxsZXRpbjsKK+aSpeWtkCA8IHBsZWN0cnVtOwor5oqX6auUIDwgYW50aWJvZHk7Civoh6jov5EgPCBjbG9zZVwtdG87CivojqvlpKcgPCBncmVhdGVzdDsKK+WTpeWAq+W4g+e0gCA8IGNvbHVtYnVzOwor5YiH5a+mIDwgZmVhc2libGU7Civoq4YgPCB0b1wtY2hlYXQ7CivoqYsgPCB0b1wtY3Vyc2U7CivoqYogPCBwbGVhc2luZzsKK+WIhuWtkCA8IG1vbGVjdWxlOwor55u45oeJIDwgcmVsZXZhbnQ7Civlt6bovKrmiYvmp40gPCByZXZvbHZlcjsKK+mYu+WhniA8IHRvXC1ibG9jazsKK+iltiA8IGlnbm9yYW50Owor57WV5bCNIDwgYWJzb2x1dGU7CivopasgPCByYWluY29hdDsKK+WIhuWoqSA8IGRlbGl2ZXJ5Owor566h6YGTIDwgcGlwZWxpbmU7Civlk6XlgKvmr5Tkup4gPCBjb2xvbWJpYTsKK+mBiuS8tCA8IHBsYXltYXRlOwor5bel5qWtIDwgaW5kdXN0cnk7CivlhrDmjpIgPCBpY2VcLXJhZnQ7CivpgLLlhaUgPCB0b1wtZW50ZXI7CivlsI/lpJzmm7IgPCBzZXJlbmFkZTsKK+Wwj+aomemhjCA8IHN1YnRpdGxlOwor6Lev6Z2iIDwgcGF2ZW1lbnQ7CivonZ8gPCBoZWRnZWhvZzsKK+idjyA8IFwoaW5zZWN0XCk7CivmkpLmr43ogLPoqJjkuIsgPCAyXC1zYW11ZWw7CivmkpLmr43ogLPoqJjkuIogPCAxXC1zYW11ZWw7CivmnInmqZ/pq5QgPCBvcmdhbmlzbTsKK+ebtOW+kSA8IGRpYW1ldGVyOwor54Sh5ZCNIDwgbmFtZWxlc3M7CivloLXloZ4gPCBibG9ja2FnZTsKK+aSpOWbniA8IHdpdGhkcmF3Owor6JqzIDwgYW50XC1lZ2dzOwor57aT5YW4IDwgY2xhc3NpY3M7CivmrbvooZrooZUgPCBkZWFkXC1lbmQ7CivpqLDpqLAgPCBzdGVhbWluZzsKK+S6pOmfv+absiA8IHN5bXBob255Owor6YC85Lq6IDwgcHJlc3Npbmc7CivnhKHliqkgPCBoZWxwbGVzczsKK+aOoeeUqCA8IHRvXC1hZG9wdDsKK+W3suaVhSA8IHRoZVwtbGF0ZTsKK+eZvOaxlyA8IHRvXC1zd2VhdDsKK+Wci+eriyA8IG5hdGlvbmFsOwor5pmC6ZaT6KGoIDwgc2NoZWR1bGU7CivolIkgPCBlYXJ0aFwtdXA7CivnrrToqIAgPCBwcm92ZXJiczsKK+ijnOeIkCA8IGZldHRsaW5nOwor6Ieq6KO9IDwgaG9tZW1hZGU7CivokZYgPCBmb2xsaWNsZTsKK+mgreWQkeWJjSA8IGhlYWRsb25nOwor6Zi75YqbIDwgb2JzdGFjbGU7CivmjqLpmqrogIUgPCBleHBsb3JlcjsKK+igleiglSA8IHdpZ2dsaW5nOwor6ImpIDwgdGhvbGVwaW47CivpgIHliKUgPCBmYXJld2VsbDsKK+iJjCA8IHRvXC1jYXVsazsKK+eEoeS6uiA8IHVubWFubmVkOwor5YWs5pakIDwga2lsb2dyYW07CivlkJvkuLvmlL/msrsgPCBtb25hcmNoeTsKK+WPl+mbo+iAhSA8IHN1ZmZlcmVyOwor5oq96LGhIDwgYWJzdHJhY3Q7Civlh7rlj6MgPCB0b1wtc3BlYWs7CivohLAgPCB0aGVcLW5lY2s7CivopqrlloQgPCBnb29kd2lsbDsKK+iIiOiHtCA8IGludGVyZXN0Owor6YCU5LitIDwgZW5cLXJvdXRlOwor6IKPIDwgY29wdWxhdGU7CivplpPmjqUgPCBpbmRpcmVjdDsKK+mQtei3ryA8IHJhaWxyb2FkOwor5pCs5byEIDwgbW92ZVwtc3RoOwor5be05ouJ5ZytIDwgcGFyYWd1YXk7CivmqJnmnKwgPCBzcGVjaW1lbjsKK+esrOS4gOatpSA8IHN0ZXBcLW9uZTsKK+iqv+WRs+axgSA8IGRyZXNzaW5nOwor6YCA5L2NIDwgYWJkaWNhdGU7CivnvYcgPCBhXC1nb2JsZXQ7CivpgIPkuqEgPCBmdWdpdGl2ZTsKK+aIsOmspSA8IHRvXC1maWdodDsKK+e1seS4gCA8IHRvXC11bmlmeTsKK+WIkeS6iyA8IGNyaW1pbmFsOwor5pW45pOa5bqrIDwgZGF0YWJhc2U7CivnuL8gPCBzdHJlYW1lcjsKK+e4tCA8IHRvd1wtbGluZTsKK+WCteasiuS6uiA8IGNyZWRpdG9yOwor6KGd56qBIDwgY29uZmxpY3Q7Civov73kuIogPCBvdmVydGFrZTsKK+e2ryA8IHRvXC1icmFpZDsKK+e2qiA8IGRhcmtcLXJlZDsKK+iIquepuiA8IGF2aWF0aW9uOwor5L+u6L6tIDwgcmhldG9yaWM7Civmv77mtrIgPCBmaWx0cmF0ZTsKK+S6uuWPo+eooOWvhiA8IHBvcHVsb3VzOwor57SeIDwgYVwtZnJpbmdlOwor5bCN6Z2iIDwgb3Bwb3NpdGU7Civlh73ku7YgPCBsZXR0ZXJlczsKK+W8n+WFhOWAkSA8IGJyZXRocmVuOwor5bCP6Kqq5a62IDwgbm92ZWxpc3Q7CivnsaMgPCBib3dcLWNhc2U7CivnsKwgPCBcKGJhbWJvb1wpOwor6aa06bm/IDwgcmVpbmRlZXI7CivpqZroqJ0gPCBjb25mb3VuZDsKK+aNleeNsiA8IHRvXC1jYXRjaDsKK+aOoeaooyA8IHNhbXBsaW5nOwor57SU5ZOBIDwgc3Rlcmxpbmc7Civov5HkvoYgPCByZWNlbnRseTsKK+enjyA8IHRvXC13YXN0ZTsKK+esrOS6lOWNgSA8IGZpZnRpZXRoOwor5LiJ5piO5rK7IDwgc2FuZHdpY2g7Civlr7rpmaIgPCBjbG9pc3RlcjsKK+etlOipsSA8IHRvXC1yZXBseTsKK+WCrOWMluWKkSA8IGNhdGFseXN0Owor54Gr5bGxIDwgdm9sY2FuaWM7Civlhbblr6YgPCBhY3R1YWxseTsKK+eUn+ipniA8IG5ld1wtd29yZDsKK+ejnyA8IG1lZGlvY3JlOwor5qK16KqeIDwgc2Fuc2tyaXQ7Civnoo8gPCBjb2xvdXJlZDsKK+S+v+mBkyA8IHNob3J0Y3V0Owor5raI6LK76ICFIDwgY29uc3VtZXI7Civlr6fpnZwgPCB0cmFucXVpbDsKK+eguSA8IGFzdGF0aW5lOwor55+LIDwgdG9cLXN0YXJlOwor5bCB6Y6WIDwgYmxvY2thZGU7Civkv6/oppYgPCBvdmVybG9vazsKK+eekyA8IHRvXC1zbGVlcDsKK+edjyA8IGJlXC10aXJlZDsKK+W8leS6uuazqOebriA8IHN0cmlraW5nOwor552FIDwgYmlnXC1leWVkOwor5r+V5rCjIDwgbW9pc3R1cmU7Civnm6wgPCBzYWx0XC1waXQ7CivpmL/lpYfmrbfmlq8gPCBhY2hpbGxlczsKK+eyvuWvhiA8IGFjY3VyYWN5Owor6Iy25YyZIDwgdGVhc3Bvb247CivlhYTlvJ8gPCBicm90aGVyczsKK+eZkiA8IGdldFwtd2VsbDsKK+eZgyA8IHdlYWtuZXNzOwor55i8IDwgc2lja25lc3M7CivnmLYgPCB0b1wtY291Z2g7CivnmLAgPCBzY3JvZnVsYTsKK+iIiOebmyA8IGZsb3VyaXNoOwor5YCY6IulIDwgcHJvdmlkZWQ7Civpl5zkv4IgPCByZWxhdGlvbjsKK+eZvOWwhCA8IHRvXC1zaG9vdDsKK+eTqSA8IGtpbG93YXR0Owor55CrIDwgb3JuYW1lbnQ7CivmjqHmjpggPCBleGNhdmF0ZTsKK+i2iumBjiA8IHRvXC1jcm9zczsKK+ePtyA8IFwvMlwtcHJcLXN0Owor5YW15ZmoIDwgd2VhcG9ucnk7Civmi5Tnr4AgPCBqb2ludGluZzsKK+a8lOe/kiA8IGV4ZXJjaXNlOwor5aWn5b635L+u5pavIDwgb2R5c3NldXM7CivntIrkuoIgPCBkaXNvcmRlcjsKK+i3s+iIniA8IHRvXC1kYW5jZTsKK+eKjiA8IHRoZVwtemVidTsKK+eJsyA8IFwoYm92aW5lXCk7Civnr4TnlocgPCBjYXRlZ29yeTsKK+WFteWToSA8IHNvbGRpZXJzOwor5ruy6ImyIDwgYmxlZWRpbmc7CivnhqQgPCBcKHBlcnNvblwpOwor6JuL6buDIDwgZWdnXC15b2xrOwor54SMIDwgdG9cLWxpZ2h0Owor54KkIDwgaWxsdW1pbmU7Civog4zpnaIgPCB0aGVcLWJhY2s7CivngKEgPCBzbGlwcGVyeTsKK+WdpuahkeWwvOS6niA8IHRhbnphbmlhOwor6LyU5bCOIDwgdG9cLWNvYWNoOwor5a+26LK0IDwgdmFsdWFibGU7CivmvY4gPCByaXBwbGluZzsKK+WFpeWPoyA8IGVudHJhbmNlOwor5rmiIDwgYmF0aHJvb207CivplovlibUgPCBpbml0aWF0ZTsKK+S+teidlSA8IHRvXC1lcm9kZTsKK+aJgeifsiA8IGZsYXR3b3JtOwor57aT6Zm46LevIDwgb3ZlcmxhbmQ7Civlrrnph48gPCBjYXBhY2l0eTsKK+aPj+WcliA8IHRvXC10cmFjZTsKK+Wbm+aciOWNgeS4g+iZnyA8IGFwcmlsXC0xNzsKK+i1pOi2syA8IGJhcmVmb290Owor5rOQIDwgdG9cLXdyaXRlOwor5rKNIDwgZnJlZXppbmc7CivlnKjmiLblpJYgPCBvdXRkb29yczsKK+awiSA8IHJlc3RsZXNzOwor5q++IDwgYVwtY29hcnNlOwor5q+7IDwgdG9cLW1vdWx0Owor5LiN6aGn5LiA5YiHIDwgcmVja2xlc3M7Civmrr0gPCBtaXhlZFwtdXA7Civoo73lk4EgPCBwcm9kdWN0czsKK+WFseS6qyA8IHRvXC1zaGFyZTsKK+asmyA8IGFcLWhhbmRsZTsKK+aTpuajkueQgyA8IGZvdWxcLXRpcDsKK+argyA8IGN1cGJvYXJkOwor5YWs5Li7IDwgcHJpbmNlc3M7Civmj5DlkI0gPCBub21pbmF0ZTsKK+Wbm+aWuSA8IGZvdXJcLXdheTsKK+S4reS4lue0gCA8IG1lZGlldmFsOwor5qiaIDwgYVwtcHVsbGV5Owor57KX5Y6yIDwgYWJyYXNpdmU7Civlgr7ogb3ogIUgPCBsaXN0ZW5lcjsKK+akhCA8IHRvXC1ncmFmdDsKK+aisSA8IGRvb3JzaWxsOwor5o6l5pS25ZmoIDwgcmVjZWl2ZXI7Civli6LlpoLnoLTnq7kgPCBzd2VlcGluZzsKK+iHquayuyA8IGF1dG9ub215Owor6auY5p62IDwgb3ZlcmhlYWQ7Civlm7Dmg5EgPCBiZXdpbGRlcjsKK+afpCA8IGhhd3Rob3JuOwor5p67IDwgbG9uZ1wtb2FyOwor56yR6IGyIDwgbGF1Z2h0ZXI7CivovrLlrrbluq3pmaIgPCBmYXJteWFyZDsKK+advum8oCA8IHNxdWlycmVsOwor5a625bqt5L2c5qWtIDwgaG9tZXdvcms7CivlhYjku6QgPCBzaGlsbGluZzsKK+a4oOmBkyA8IGNoYW5uZWxzOwor5pihIDwgbG9uZ1wtZGF5Owor5qCh6KiCIDwgcmV2aXNpb247Civml5ggPCBhXC1wZW5ub247Civmo5LnkIMgPCBiYXNlYmFsbDsKK+WEquWFiCA8IHByaW9yaXR5Owor5pWqIDwgdG9cLXdlaWdoOwor5pSeIDwgdG9cLXNwbGl0Owor5pOpIDwgdG9cLXN0YWluOwor5Zm05rOJIDwgZm91bnRhaW47CivmkbcgPCB0b1wta25vY2s7CivmkLUgPCB3aXBlXC1vZmY7CivmkLIgPCB0b1wtc2VpemU7CivmkIsgPCB0b1wtdGh1bXA7Civmj7AgPCBwb2tlXC1vdXQ7Civmj5wgPCBjb3ZlclwtdXA7Civou43lo6sgPCBzZXJnZWFudDsKK+aPjCA8IHRvXC1zaGFrZTsKK+iho+W7miA8IHdhcmRyb2JlOwor5ouRIDwgdG9cLWNsYW1wOwor5Lu96YePIDwgcXVhbnRpdHk7CivmiYUgPCBnYXRlXC1iYXI7Civmh4noqbIgPCBvdWdodFwtdG87CivmjqHlhYkgPCBsaWdodGluZzsKK+aHlSA8IHNhdGlhdGVkOwor5oaqIDwgY29tcG9zZWQ7CivokaHokITniZkgPCBwb3J0dWdhbDsKK+ijgeWIpCA8IGp1ZGdtZW50Owor5Y2z5bCH5L6G6IeoIDwgaW1taW5lbnQ7CivmhasgPCB0b1wtYWxhcm07CivmhYUgPCBhZ2l0YXRlZDsKK+aFgSA8IGRpc2hvbm9yOwor5Lq66aGeIDwgaHVtYW5pdHk7CivkvLDoqIggPCBlc3RpbWF0ZTsKK+aDlCA8IGNoZWVyZnVsOwor5Z2Q5LiLIDwgc2l0XC1kb3duOwor5Zue5a62IDwgaG9tZXdhcmQ7Civkvb/ogIUgPCBlbWlzc2FyeTsKK+aBnSA8IGNhcmVmcmVlOwor5omT56C0IDwgdG9cLWJyZWFrOwor5oGMIDwgdG9cLXdvcnJ5Owor5YGH5pyfIDwgdmFjYXRpb247CivkuI3mraPluLggPCBhYm5vcm1hbDsKK+iho+WtkCA8IGNvdmVyaW5nOwor6Z+z5qiC5YWJ56KfIDwgbXVzaWNcLWNkOwor6Lu85LqLIDwgYW5lY2RvdGU7Civlu6QgPCB0b1wtcGxhY2U7CivmirHmrYkgPCBiZVwtc29ycnk7CivmpbXlpb0gPCBmYWJ1bG91czsKK+alteWkpyA8IGVub3Jtb3VzOwor55WM5qiZIDwgbGFuZG1hcms7CivkuI3pgI/msKMgPCBhaXJ0aWdodDsKK+S6lOW9qeizk+e0myA8IGNvbG9yZnVsOwor5bi1IDwgcmVtbmFudHM7Civnr4DmhbYgPCBmZXN0aXZhbDsKK+aaluawo+apnyA8IHJhZGlhdG9yOwor5batIDwgZWxldmF0ZWQ7CivpmL/ogq/oibIgPCBhcmthbnNhczsKK+elnuWtuOeglOeptuaJgCA8IHNlbWluYXJ5Owor6ayn5Y2AIDwgZG93bnRvd247CivlsoogPCBmb290aGlsbDsKK+m8k+WQueiAhSA8IGFkdm9jYXRlOwor5L6155WlIDwgaW52YXNpb247CivkvbXntJcgPCBkb3VibGluZzsKK+eXheWkqyA8IHNpY2tcLW1hbjsKK+aOiOS6iCA8IHRvXC1hd2FyZDsKK+WcsOS4i+WupCA8IGJhc2VtZW50Owor5ZyL5YWnIDwgZG9tZXN0aWM7CivlrqwgPCBhcmNoaXZlczsKK+WsrCA8IG1pc3RyZXNzOwor57Ch5YyWIDwgc2ltcGxpZnk7CivmvKLlr4bniL7poJMgPCBoYW1pbHRvbjsKK+iyt+mAmiA8IHRvXC1icmliZTsKK+WGkueKr+iAhSA8IG9mZmVuZGVyOwor5aemIDwgYWR1bHRlcnk7Civnr6HlpaogPCB0b1wtdXN1cnA7Civoh6jluoogPCBjbGluaWNhbDsKK+S/neecn+W6piA8IGZpZGVsaXR5Owor5qC956iuIDwgdG9cLXBsYW50Owor5oiw55WlIDwgc3RyYXRlZ3k7CivlnJLkuIEgPCBnYXJkZW5lcjsKK+acrOmrlCA8IG5vdW1lbm9uOwor5Lq66YCgIDwgbWFuXC1tYWRlOwor6Kqe6KiA5a245a62IDwgbGluZ3Vpc3Q7CivlsYXmsJEgPCByZXNpZGVudDsKK+iFs+atpSA8IGZvb3RzdGVwOwor5Z+8IDwgaGVhZGxhbmQ7Civmi7zlrZcgPCBzcGVsbGluZzsKK+adsemDqCA8IHRoZVwtZWFzdDsKK+S4jemrlOmdoiA8IHNoYW1lZnVsOwor6auY5ZywIDwgaGlnaGxhbmQ7Civlm7rku7YgPCBmaXJtd2FyZTsKK+m+jemgreiAgeWkpyA8IGJpZ1wtYm9zczsKK+iFk+WIqemWgOabuCA8IHBoaWxlbW9uOwor6ZGy5bWMIDwgdG9cLWlubGF5Owor5qWt5YuZIDwgYnVzaW5lc3M7CivlgI3mlbggPCBtdWx0aXBsZTsKK+WwjeeFpyA8IGNvbnRyYXN0Owor5ZuuIDwgaW52ZWlnbGU7CivogqnohoAgPCBzaG91bGRlcjsKK+i6q+S7vSA8IGlkZW50aXR5Owor5ZeDIDwgdG9cLWZsdXRlOwor5bCx5q2kIDwgYW5kXC10aHVzOwor5Z+D5aGe5L+E5q+U5LqeIDwgZXRoaW9waWE7CivllYcgPCB0b1wtc3RhbGs7CivnrYbmnrYgPCBwZW5cLXJhY2s7CivllKUgPCBhXC1idW5kbGU7CivnlJ/ml6UgPCBiaXJ0aGRheTsKK+WRoCA8IHRvXC1zcHVydDsKK+mQmOaTuiA8IHBlbmR1bHVtOwor5bCP6KGd56qBIDwgc2tpcm1pc2g7Civlj5IgPCBvYmVkaWVudDsKK+WOtSA8IGFcLXNwcmluZzsKK+aKseaAqCA8IGNvbXBsYWluOwor5Y28IDwgdW5zdGVhZHk7CivljbkgPCBzeW1wYXRoeTsKK+WtuOe/kiA8IHRvXC1sZWFybjsKK+aKmOaJoyA8IGRpc2NvdW50Owor5YuMIDwgdG9cLWxhYm9yOwor5Yq7IDwgZmx1cnJpZWQ7Civmh7jnlpEgPCBzdXNwZW5zZTsKK+WKmSA8IGFcLWRpdmlkZTsKK+aHt+eWkSA8IHRvXC1kb3VidDsKK+eVtuWkqSA8IHRoYXRcLWRheTsKK+WJnyA8IHRvXC1wcmljazsKK+mNteebpCA8IGtleWJvYXJkOwor5YelIDwgdG9cLWR3ZWxsOwor5YaHIDwgaGF2ZVwtbm90Owor5o6S5rC05rigIDwgZHJhaW5hZ2U7Civlt7Tln7rmlq/lnaYgPCBwYWtpc3RhbjsKK+m6u+mGieWKkSA8IG5hcmNvdGljOwor5YODIDwgcHJlcGFyZWQ7CivlrrbnlKggPCBob21lXC11c2U7CivkvbQgPCBhXC1zZWNvbmQ7CivooqvkvrXlrrMgPCBzdHJpY2tlbjsKK+iHtOWKmyA8IHdvcmtcLWZvcjsKK+S6lOinkiA8IHBlbnRhZ29uOwor5LayIDwgdGhlXC1lZGdlOwor5LWyIDwgcmF3XC1oZW1wOwor5LWaIDwga2FvbGlhbmc7CivktZMgPCB0aGVcLW1vbGU7CivktYkgPCBhYnV0aWxvbjsKK+S0uyA8IGRyeVwtZm9vZDsKK+S0qyA8IGFudGVsb3BlOwor5oi/5p2xIDwgbGFuZGxvcmQ7CivktJogPCBzYWx0cG9uZDsKK+SzuyA8IGFuXC1lYWdsZTsKK+S/ruW7uiA8IHRvXC1idWlsZDsKK+SyliA8IGJpZ1wtZmlzaDsKK+ioiOeul+apnyA8IGNvbXB1dGVyOwor56qB55m8IDwgb3V0YnVyc3Q7CivksJ8gPCB0aGVcLXNvdWw7Civkr6ogPCBiaWdcLWhlYWQ7Civkv6HlvpIgPCBiZWxpZXZlcjsKK+SvmiA8IHRoZVwtcmliczsKK+SviSA8IHRvXC1jaG9rZTsKK+eZveacqOiAsyA8IHRyZW1lbGxhOwor5omT5o6DIDwgdG9cLWNsZWFuOwor5oqA5belIDwgbWVjaGFuaWM7CivmjIHkuYUgPCBkdXJhdGlvbjsKK+StsSA8IGFcLWxpdHRsZTsKK+miqOi7iiA8IHdpbmRtaWxsOwor542o6KOB6ICFIDwgZGljdGF0b3I7CivkrIkgPCBob3RcLXdpbmQ7Civkq7cgPCB0aGVcLWpvd2w7CivmiYvmj5AgPCBwb3J0YWJsZTsKK+S4jemdiCA8IG5vdFwtd29yazsKK+SrgyA8IHRoZVwtbGlwczsKK+SqtiA8IHRoZVwtY2hpbjsKK+SqqSA8IHRvXC1jaGFudDsKK+SqnCA8IGFcLXNoaWVsZDsKK+SqkSA8IHRvXC1zdGljazsKK+SqhSA8IGFcLXF1aXZlcjsKK+SpoCA8IGFcLWdpcmRsZTsKK+SpiSA8IHRoZVwtZmFjZTsKK+SpiCA8IGFcLXBsdW1weTsKK+SovCA8IGR5ZXN0dWZmOwor55Sf5a2YIDwgdG9cLWV4aXN0Owor6LOm56iFIDwgdGF4YXRpb247Civkp6sgPCBhXC10cmVuY2g7Civkp4EgPCB0b1wtbGVhdmU7CivmtbTooaMgPCBiYXRocm9iZTsKK+S4gOmdoiA8IG9uZVwtc2lkZTsKK+SlrSA8IGV2aWRlbmNlOwor5oGQ6b6NIDwgZGlub3NhdXI7CivoqJjpjITlk6EgPCByZWNvcmRlcjsKK+SkvyA8IHRvXC1jYXJ2ZTsKK+SktiA8IGFcLWhhbW1lcjsKK+SksyA8IGFcLW1pcnJvdzsKK+W3tOW3tOWkmuaWryA8IGJhcmJhZG9zOwor5KSrIDwgYVwtY2hpc2VsOwor5KSQIDwgdG9cLWRyaW5rOwor55Wr5YOPIDwgcG9ydHJhaXQ7CivnlbbkvZwgPCB0cmVhdFwtYXM7Civnpq7osowgPCBjb3VydGVzeTsKK+SikCA8IHRvXC1nb1wtdG87CivomIfmoLzomK0gPCBzY290bGFuZDsKK+S/oeWwgSA8IGVudmVsb3BlOwor5KC+IDwgdG9cLWRvZGdlOwor5KCsIDwgaW5zb21uaWE7CivkoJ4gPCB3cmlua2xlZDsKK+iBsueosSA8IHRvXC1jbGFpbTsKK+SggSA8IHRvXC1nb1wtdXA7Civkn7ggPCB0aGVcLWNhbGY7CivlsI3miYsgPCBvcHBvbmVudDsKK+S/oeWuiCA8IGFiaWRlXC1ieTsKK+SeriA8IHRvXC1jcmF3bDsKK+iBlue0hCA8IGNvdmVuYW50Owor5qCh5q2jIDwgcmVndWxhdGU7CivknYIgPCB0b1wtZXJlY3Q7CivknKwgPCBhXC1jYXZlcm47CivknJggPCB0b1wtZ3VhcmQ7CivknJAgPCB0b1wtbGliZWw7CivknIMgPCB0b1wtYmxhbWU7Civkm5IgPCB0b1wtYXJndWU7Civph43pu54gPCBlbXBoYXNpczsKK+SbhyA8IHRvXC1sYXVnaDsKK+SatyA8IHRvXC10cmVhdDsKK+SaryA8IHRvXC1xdWVsbDsKK+iBveecviA8IGF1ZGllbmNlOwor6JGh6JCE5ZySIDwgdmluZXlhcmQ7CivkmKsgPCBvbGRcLXJhZ3M7CivkmJwgPCBhXC1uYXBraW47CivkmIkgPCBzaWxrd29ybTsKK+mojuW4qyA8IGhvcnNlbWFuOwor56en6IuXIDwgc2VlZGxpbmc7Civkl5ggPCBhXC13ZWV2aWw7Civkl4ggPCBhXC1nYWRmbHk7Civkvb/oiIjlpa4gPCBleGNpdGluZzsKK+SXhyA8IHRoZVwtdG9hZDsKK+SWuyA8IGVwaGVtZXJhOwor5JakIDwgdG9cLWNyZWVwOwor5JabIDwgb2ZcLXRpZ2VyOwor56ys5Y2B5LiAIDwgZWxldmVudGg7Civmga3poIYgPCBkZWZlcmVudDsKK+mNteanvSA8IGtleVwtc2xvdDsKK+izvOeJqSA8IHNob3BwaW5nOwor5Zau5pOaIDwgcmVjZWlwdHM7CivmnIPoroogPCB2YXJpYWJsZTsKK+STlSA8IHBvbHlnYWxhOwor5JKzIDwgYVwtZmxvd2VyOwor5bCR5bm0IDwganV2ZW5pbGU7CivpqJnlrZAgPCBzd2luZGxlcjsKK+iBr+ebnyA8IGFsbGlhbmNlOwor5JGYIDwgdG9cLXBvdW5kOwor5JGDIDwgZGltXC1tb29uOwor5JCSIDwgbm90XC1maW5lOwor5pa556iL5byPIDwgZXF1YXRpb247Civot6/lj6MgPCBjcm9zc2luZzsKK+SPnyA8IGZhdFwtbWVhdDsKK+iZlee9sCA8IHBlbmFsaXplOwor5I+JIDwgdG9cLXdhdmVyOwor5I+IIDwgdG9cLXVuaXRlOwor6YeR6a2aIDwgZ29sZGZpc2g7CivkjrIgPCBlYXJcLWxvYmU7CivkjqMgPCBhXC1wbG91Z2g7CivlvavliLvlrrYgPCBzY3VscHRvcjsKK+SMtyA8IGFcLXRocmVhZDsKK+SMryA8IGFcLXRydWJhbjsKK+SMqyA8IGFcLWhhd3NlcjsKK+WQq+mHjyA8IGNvbnRlbnRzOwor5IyDIDwgcmF3XC1zaWxrOwor6Zi/5omY5ZOBIDwgYXRyb3BpbmU7Civki6EgPCB0b1wtcmVsYXg7Civki4MgPCBzdGluZ2luZzsKK+SKuCA8IHRvXC10d2lzdDsKK+SKnSA8IHRvXC1leGlsZTsKK+eUqOWKnyA8IGRpbGlnZW50Owor5IqBIDwgbGVhdmluZ3M7CivkibsgPCByZWRcLXJpY2U7CivkibEgPCBhXC1jcmFkbGU7CivkiZIgPCBhXC13aW5ub3c7CivkiLYgPCBhblwtYXJyb3c7CivlnLDljYDmgKcgPCByZWdpb25hbDsKK+SHjCA8IHRvXC1zdGFuZDsKK+SGuCA8IHNwYWNpb3VzOwor562G5ZCNIDwgcGVuXC1uYW1lOwor5L2b5pWZIDwgYnVkZGhpc207Civlj6/pnaAgPCByZWxpYWJsZTsKK+S4ieinkuW9oiA8IHRyaWFuZ2xlOwor5a+T5omAIDwgZHdlbGxpbmc7Civkg5EgPCBzcGVja2xlczsKK+SBpSA8IHRvXC1ibGluazsKK+SBnCA8IGJpZ1wtZXllczsKK+eUseS9mSA8IG93aW5nXC10bzsKK+SAiCA8IGFcLXZlc3NlbDsKK+O/oiA8IHRvXC1zaGluZTsKK+O/oSA8IGFcLWhlbG1ldDsKK+O/iCA8IGFuXC11bGNlcjsKK+O/hSA8IHJpbmd3b3JtOwor4764IDwgYVwtc2NhYmJ5Owor6aCB6Z2iIDwgd2ViXC1wYWdlOwor476NIDwgZGlzZWFzZXM7CivjvbkgPCB0b1wtZmFpbnQ7CivmuLTmnJsgPCBkZXNpcm91czsKK+acrOiDvSA8IGluc3RpbmN0Owor5Zec5aW9IDwgZm9uZG5lc3M7CivntYLnq6/nlKjmiLYgPCBlbmRcLXVzZXI7CivloqjmsLTnk7bmnrYgPCBpbmtzdGFuZDsKK+O6miA8IGFuXC1vdHRlcjsKK+iqmOaLkOiAhSA8IGFiZHVjdG9yOwor57y66Zm3IDwgYVwtZGVmZWN0Owor47qHIDwgYVwtd2FyZGVuOwor47m4IDwgdGhlXC1saW9uOwor6JuL5q68IDwgZWdnc2hlbGw7CivmiLLliofmgKcgPCBkcmFtYXRpYzsKK+aHsue9sOaApyA8IHB1bml0aXZlOwor47idIDwgYVwtc2hvdmVsOwor5YWr6KeS5qWTIDwgYWxhbmdpdW07Civjt4AgPCBzb2xpdGFyeTsKK+O2vCA8IHZlcnlcLWhvdDsKK+O0tiA8IHRvXC13YXRlcjsKK+a7keWGsCA8IHRvXC1za2F0ZTsKK+O0iiA8IGFuXC1hYnlzczsKK+OzqyA8IHJlcGVhdGVkOwor47OSIDwgc3RhdHV0ZXM7CivljJfmtbfpgZMgPCBob2trYWlkbzsKK+OytyA8IG5pdHJvZ2VuOwor47KzIDwgdG9cLXRvdWNoOwor5a6X5pWZIDwgcmVsaWdpb247CivkvY7miJDmnKwgPCBsb3dcLWNvc3Q7Civjsb8gPCB0aGVcLWh1c2s7CivjsbogPCB0aGVcLXNraW47CivjsaIgPCB0aGVcLWRlYWQ7CivjsZcgPCBhXC1icmVhdGg7Civlkb3ohIggPCBsaWZlbGluZTsKK+S5g+iHsyA8IGFuZFwtZXZlbjsKK+enn+eohSA8IGxhbmRcLXRheDsKK+S4jeihjCA8IHdvbicndFwtZG87CivlrojmmYIgPCBwdW5jdHVhbDsKK+OurSA8IGFcLWNhc2tldDsKK+aal+i9iSA8IGJsYWNrb3V0Owor5omT5Y2wIDwgdG9cLXByaW50Owor46ynIDwgYVwtY29sbGFyOwor5piO5L+h54mHIDwgcG9zdGNhcmQ7CivmlZHotJbkuLsgPCByZWRlZW1lcjsKK+OrvSA8IGRhcmtuZXNzOwor46qQIDwgdW5zdGFibGU7CivosoLnmq4gPCBtaW5rXC1mdXI7CivjqaggPCB0b1wtY3JhY2s7CivjqZMgPCB0b1wtd291bmQ7CivphqvpmaIgPCBob3NwaXRhbDsKK+OokyA8IHRvXC1jbG9zZTsKK+OogSA8IHRvXC10aHJvdzsKK+OntSA8IHRvXC1leGFjdDsKK+OnsSA8IHRvXC1icmluZzsKK+azs+ihoyA8IHN3aW1zdWl0Owor46a/IDwgYVwtd2luZG93Owor5rea5rC0IDwgdGVhcmRyb3A7CivnlJ/lkb3lipsgPCB2aXRhbGl0eTsKK+OlsCA8IG1vdXJuZnVsOwor46WBIDwgbW9yYWxpdHk7CivjpK4gPCBhblwtZXJyb3I7CivjpI8gPCBncmlldm91czsKK+iCieahgiA8IGNpbm5hbW9uOwor46OrIDwgdGhlXC1oZWVsOwor5rib5o6JIDwgc3VidHJhY3Q7Civjo54gPCB0b1wtd2Fsa2k7CivpvLvngo4gPCByaGluaXRpczsKK+OguSA8IGFcLXR1cmJhbjsKK+eUoumHj+WkmiA8IGZydWl0ZnVsOwor55yL5a6I6ICFIDwgd2F0Y2htYW47CivjoIogPCBhXC1ydWdnZWQ7Civms5XliKnos73kurogPCBwaGFyaXNlZTsKK+OetyA8IGx1eHVpYW50Owor5ZCR6KW/IDwgd2VzdHdhcmQ7Civlj5vpgIYgPCB0b1wtcmViZWw7CivjnpEgPCB0aGVcLXRhaWw7CivjnokgPCBiaWdcLWZvb3Q7Civjna0gPCB0b1wtYXdha2U7CivjnZggPCBoYXJtb25veTsKK+OctiA8IGFcLWNvdXBsZTsKK+aIsOWNgCA8IHdhclwtem9uZTsKK+WPseiyrCA8IHJlcHJvYWNoOwor5L2U6aCY6ICFIDwgb2NjdXBhbnQ7Civnp5HnvoXmi4nlpJogPCBjb2xvcmFkbzsKK+iynua9lCA8IGNoYXN0aXR5Owor45miIDwgYVwtdHJvd2VsOwor45mDIDwgYVwtY2F2aXR5Owor5qCX5a2QIDwgY2hlc3RudXQ7CivjmJkgPCB0b1wtZ3JvYW47CivjmIAgPCB0b1wtc291bmQ7CivkuK3nubwgPCB0b1wtcmVsYXk7Civjl6ogPCBtb3V0aGZ1bDsKK+OXnCA8IHRvXC1zbWVsbDsKK+OXiSA8IGluY2lzaXZlOwor45apIDwgbm90XC1wdXJlOwor45W8IDwgdG9cLWJyYXdsOwor6Y6u5Y2AIDwgdG93bnNoaXA7CivjlZsgPCBhXC1mcmllbmQ7CivjlZAgPCBpbmNsaW5lZDsKK+OViiA8IHRvXC1zbGFudDsKK+adv+ayuSA8IGxlYWZcLWZhdDsKK+WMquW+kumbhuWcmCA8IGdhbmdzdGVyOwor45OTIDwgdGhpblwtaWNlOwor45K5IDwgdG9cLXVwc2V0Owor5oe45Z6CIDwgb3Zlcmhhbmc7CivlsITpoLvlmarpn7MgPCByZlwtbm9pc2U7CivphZLprLwgPCBkcnVua2FyZDsKK+S4jeiCliA8IHVud29ydGh5Owor54+t5qmfIDwgYWlybGluZXI7CivjkJwgPCBhblwtZW5lbXk7Civkvb/lkIPpqZogPCBhc3RvbmlzaDsKK+eql+WtkCA8IGNhc2VtZW50Owor5oeJ5bCNIDwgcmVzcG9uc2U7CivkuqTmtYEgPCBleGNoYW5nZTsKK+WPm+iuiiA8IHJlbmVnYWRlOwor5oiw5LqLIDwgZmlnaHRpbmc7CivlubjlrZjogIUgPCBzdXJ2aXZvcjsKK+S6uumBk+S4u+e+qSA8IGh1bWFuaXNtOwor5LiA5b+D5LiA5oSPIDwgaW50ZW50bHk7Civmq7voirHojYkgPCBwcmltcm9zZTsKK+aguOWHhiA8IHNhbmN0aW9uOwor5pif5pyf5ZubIDwgdGh1cnNkYXk7CivmsbrlrprmgKcgPCBkZWNpc2l2ZTsKK+aXpeiAs+abvCA8IGdlcm1hbmljOwor6K206LKsIDwgZGVub3VuY2U7CivmoYjku7YgPCBsYXdcLWNhc2U7Civlub7kvZXlrbggPCBnZW9tZXRyeTsKK+Wnu+imqiA8IGFmZmluaXR5Owor5p2R5rCRIDwgdmlsbGFnZXI7CivmhbfmhaggPCB2ZWhlbWVudDsKK+irlum7niA8IGFyZ3VtZW50Owor5YK+5ZCR5pa8IDwgcHJvbmVcLXRvOwor6buD55OcIDwgY3VjdW1iZXI7Civmmpfoh6ogPCBpbndhcmRseTsKK+aHiuWWqiA8IGRlamVjdGVkOwor56iA5pyJIDwgdW5jb21tb247Civpo5vmqZ8gPCBhaXJwbGFuZTsKK+WupOWPiyA8IHJvb21tYXRlOwor6LK25oqRIDwgYmVsaXR0bGU7Civog4zljIUgPCBrbmFwc2FjazsKK+eyvuelnumMr+S6giA8IGluc2FuaXR5Owor6buo5rS+IDwgcGFydGlzYW47CivlrZDlsaQgPCBzdWJsYXllcjsKK+mjsuaWmSA8IGJldmVyYWdlOwor5LiJ5pyI5LqM5Y2B5LiA6JmfIDwgbWFyY2hcLTIxOwor5Lq65omLIDwgbWFucG93ZXI7CivmmJ/mnJ/lha0gPCBzYXR1cmRheTsKK+mYsuWuiOiAhSA8IGRlZmVuZGVyOwor5LqM5pyIIDwgZmVicnVhcnk7CivmspLokL0gPCBkb3duZmFsbDsKK+WQq+eisyA8IGNhcmJvbmljOwor5ZiJ5bm06I+v5pyDIDwgY2Fybml2YWw7CivmnIDngrogPCB0aGVcLW1vc3Q7CivljZrojKjnk6bntI0gPCBib3Rzd2FuYTsKK+S4jeeUqCA8IG5lZWRcLW5vdDsKK+miqOawtCA8IGZlbmdzaHVpOwor5rC06LevIDwgd2F0ZXJ3YXk7CivlrZDlpbMgPCBjaGlsZHJlbjsKK+S6i+aVhSA8IGFjY2lkZW50Owor5Yi65r+A54mpIDwgc3RpbXVsdXM7Civlo5/mlrfosqnos6MgPCBtb25vcG9seTsKK+S4jeeNqCA8IG5vdFwtb25seTsKK+Wlp+WFi+aLieiNt+mmrCA8IG9rbGFob21hOwor5a215YyWIDwgYnJlZWRpbmc7Civpnq3on7IgPCB3aGlwd29ybTsKK+S4jeeIvSA8IG5vdFwtd2VsbDsKK+S/neWKoOWIqeS6niA8IGJ1bGdhcmlhOwor5oeC5LqLIDwgc2Vuc2libGU7Civpo5/mhb4gPCBhcHBldGl0ZTsKK+mch+mpmiA8IHRvXC1zaG9jazsKK+WQuOeFmSA8IHRvXC1zbW9rZTsKK+isneisnSA8IHRvXC10aGFuazsKK+S4jea/nyA8IG5vdFwtZ29vZDsKK+mgreeXmyA8IGhlYWRhY2hlOwor5pqX55uSIDwgbWFnYXppbmU7CivkuK3mraIgPCB0b1wtY2Vhc2U7CivorJvoqbEgPCBhXC1zcGVlY2g7CivmnpflnLAgPCB3b29kbGFuZDsKK+aetuWLoiA8IGF0dGl0dWRlOwor6LK05peP6Lqr5Lu9IDwgbG9yZHNoaXA7CivkuI3kv6HnlKggPCBkaXN0cnVzdDsKK+WkqumVtyA8IG92ZXJzaXplOwor5Yui6aCtIDwgbW9tZW50dW07CivmhJrlvIQgPCBkZXJpc2lvbjsKK+W+gOmChCA8IGNvbnRhY3RzOwor56Sm55SiIDwgbWluZXJhbHM7Civmj5Dkvpvoq7ggPCBwcm92aWRlcjsKK+eIkOmCiiA8IGZpcmVzaWRlOwor6IKM6IKJ55m86YGUIDwgbXVzY3VsYXI7Civlt6XnqIvluKsgPCBlbmdpbmVlcjsKK+iuiueoriA8IG11dGF0aW9uOwor5Lit57m85ZmoIDwgcmVwZWF0ZXI7Civoq5bov7AgPCB0cmVhdGlzZTsKK+a0i+eQteeQtiA8IG1hbmRvbGluOwor6IGW5YyWIDwgc2FuY3RpZnk7Civmg6HkvZzliocgPCBtaXNjaGllZjsKK+mHjeeUsyA8IHJlYWZmaXJtOwor5pq05rSqIDwgYVwtc3VkZGVuOwor5a2Q5Y2I57eaIDwgbWVyaWRpYW47Civoo73kvZzogIUgPCBwcm9kdWNlcjsKK+S4jeWcqOS5jiA8IG5vdFwtbWluZDsKK+mkoeWFkiA8IHN0dWZmaW5nOwor6Z+z5qiC5a62IDwgbXVzaWNpYW47Civkvb/purvnl7ogPCBwYXJhbHl6ZTsKK+WNg+Wtl+evgCA8IGtpbG9ieXRlOwor6K6K6Zi75ZmoIDwgdGhlb3N0YXQ7CivmtYHmhJ/nlqvoi5cgPCBmbHVcLXNob3Q7CivmtbflpJYgPCBvdmVyc2VhczsKK+eOi+WutiA8IHByaW5jZWx5Owor5ZOo5YW1IDwgc2VudGluZWw7Civmg7PlrrYgPCBob21lc2ljazsKK+iyt+S4uyA8IGN1c3RvbWVyOwor6aCQ5risIDwgZm9yZWNhc3Q7Civnvo7ml6UgPCB1c1wtamFwYW47CivosqDlgrUgPCBpbmRlYnRlZDsKK+mbqOmHjyA8IHJhaW5mYWxsOwor5Y+45rOVIDwganVkaWNpYWw7CivlpbPmiL/mnbEgPCBsYW5kbGFkeTsKK+W3peS9nOmBjuW6piA8IG92ZXJ3b3JrOwor5Yqg6ZW3IDwgbGVuZ3RoZW47CivlkJDmo4QgPCB0b1wtc3B1cm47CivomZXliIYgPCBkaXNwb3NhbDsKK+aXpee+jiA8IGphcGFuXC11czsKK+WinumrmCA8IGhlaWdodGVuOwor6YGy6aCTIDwgaW5hY3RpdmU7CivosqHkuLsgPCByaWNoXC1tYW47CivlpKLoqbEgPCBkYXlkcmVhbTsKK+aPkOS+m+iAhSA8IHN1cHBsaWVyOwor5LiN5oeIIDwgdW50aXJpbmc7CivmnIDlsJEgPCBzbWFsbGVzdDsKK+WgheWbuuaApyA8IGZpcm1uZXNzOwor6K2354WnIDwgcGFzc3BvcnQ7CivkuLvlrrAgPCBkb21pbmF0ZTsKK+WkouimiyA8IHRvXC1kcmVhbTsKK+S4jeaAlSA8IGZlYXJsZXNzOwor5rKW5rSXIDwgdG9cLXJpbnNlOwor5LiN5b6IIDwgbm90XC12ZXJ5Owor55m95YyW55eFIDwgYWxiaW5pc207CivlibfpmaQgPCByb290XC1vdXQ7CivnpZ7mgKcgPCBkaXZpbml0eTsKK+e4veijgSA8IGNoYWlybWFuOwor5rKJ5rW4IDwgcGVybWVhdGU7CivnrKzlha3ljYEgPCBzaXh0aWV0aDsKK+e+juW+tyA8IGFcLXZpcnR1ZTsKK+mbhOi+ryA8IGVsb3F1ZW50Owor6bue5ZCNIDwgcm9sbGNhbGw7Civosarkv6AgPCBjYXZhbGllcjsKK+aWh+aYjuWMliA8IGNpdmlsaXplOwor5aSW6JmfIDwgbmlja25hbWU7CivmtbfkuIogPCBtYXJpdGltZTsKK+eGseiqoCA8IGRldm90aW9uOwor5ZCI5oiQIDwgY29tcG91bmQ7CivlpJbkuqTlrpggPCBkaXBsb21hdDsKK+WQjOaEjyA8IHRvXC1hZ3JlZTsKK+WQkeW+jCA8IGJhY2t3YXJkOwor5pyN5YuZIDwgdG9cLXNlcnZlOwor5rCR55y+IDwgcG9wdWxhY2U7CivlqIHmnJsgPCBwcmVzdGlnZTsKK+a0u+WLlSA8IGFjdGl2aXR5Owor5Y+b5pWZIDwgYXBvc3RhY3k7Civnmb3pm7Lnn7MgPCBkb2xvbWl0ZTsKK+Wkp+iDvSA8IGFsbWlnaHR5Owor5pmC5qmfIDwgb2NjYXNpb247Civlj43mmKAgPCByZWFjdGlvbjsKK+aWh+iBtyA8IGNpdmlsaWFuOwor5ama5auBIDwgbWFycmlhZ2U7CivlkJvlrZAgPCBub2JsZW1hbjsKK+eJuea0viA8IGRpc3BhdGNoOwor5L2/57+S5oWjIDwgYWNjdXN0b207CivkuIDlnJggPCByZWdpbWVudDsKK+aSremfsyA8IHRyYW5zbWl0Owor5Y+w5bqnIDwgcGVkZXN0YWw7CivpgY7ovIkgPCBvdmVybG9hZDsKK+elluWciyA8IGhvbWVsYW5kOwor5rOw5ZyLIDwgdGhhaWxhbmQ7Civop6PplosgPCB0b1wtdW50aWU7CivmhJvlm6Dmlq/lnaYgPCBlaW5zdGVpbjsKK+aal+WupCA8IGRhcmtyb29tOwor5aW254mbIDwgbWlsa1wtY293Owor5Yaw5pm255+zIDwgY3J5b2xpdGU7CivlubTpnZIgPCB5b3V0aGZ1bDsKK+S4gOWRqCA8IG9uZVwtd2VlazsKK+S4gOWQkSA8IGFsbFwtbG9uZzsKK+abneWFiSA8IGV4cG9zdXJlOwor5LiN5bCP5b+DIDwgaGVlZGxlc3M7CivntI3nqIXkurogPCB0YXhwYXllcjsKK+eEoeirluS9leiZlSA8IGFueXdoZXJlOwor5YaN5Ye654++IDwgcmVhcHBlYXI7CivkuIDljJkgPCBzcG9vbmZ1bDsKK+eglOeptiA8IHJlc2VhcmNoOwor5oCg5oOwIDwgaWRsZW5lc3M7CivljIXnmq4gPCB3cmFwcGluZzsKK+mdoOiDjOakhSA8IGFybWNoYWlyOwor5aWJ54++IDwgb2ZmZXJpbmc7CivkuI3lgKYgPCB0aXJlbGVzczsKK+aTjeS9nOiAhSA8IG9wZXJhdG9yOwor6KiC6LO8IDwgdG9cLW9yZGVyOwor57Wy54uA54mpIDwgZmlsYW1lbnQ7CivmlpHnmb0gPCBncml6emxlZDsKK+aatOWKmyA8IHZpb2xlbmNlOwor6K2m5oOVIDwgdmlnaWxhbnQ7Civms6Lli5UgPCB1bmR1bGF0ZTsKK+Wlh+eJuSA8IHBlY3VsaWFyOwor5b+g5pa8IDwgbG95YWxcLXRvOwor55m85piO5a62IDwgaW52ZW50b3I7CivpgbjoiIkgPCB0b1wtZWxlY3Q7CivlpKfopb/mtIsgPCBhdGxhbnRpYzsKK+mfjOW4tiA8IGxpZ2FtZW50Owor6L+3IDwgYmV3aXRjaDsKK+i/sCA8IG5hcnJhdGU7Civov6UgPCBkaXN0YW50Owor5LitIDwgY2VudHJhbDsKK+W/lyA8IHB1cnBvc2U7Civov44gPCByZWNlaXZlOwor5b+MIDwgamVhbG91czsKK+WSjCA8IGhhcm1vbnk7Civovq8gPCBkaXNwdXRlOwor5Y67IDwgZ29cLWF3YXk7Civlr7kgPCBjb3JyZWN0Owor556gIDwgbG9va1wtYXQ7CivlvosgPCBzdGF0dXRlOwor5b25IDwgc2VydmljZTsKK+W8tSA8IHN0cmV0Y2g7Civlt7IgPCBhbHJlYWR5Owor5byYIDwgZW5sYXJnZTsKK+W8lSA8IHRvXC1wdWxsOwor5byUIDwgY29uZG9sZTsKK+i8gyA8IGNvbXBhcmU7CivmhI8gPCB0aG91Z2h0Owor6L+bIDwgYWR2YW5jZTsKK+eboSA8IGV4aGF1c3Q7Civlu4kgPCB1cHJpZ2h0Owor5oOFIDwgZmVlbGluZzsKK+easCA8IHBpbXBsZXM7CivlupYgPCBraXRjaGVuOwor6LqTIDwgc3R1bWJsZTsKK+W6hCA8IHZpbGxhZ2U7CivlubYgPCBjb21iaW5lOwor6LmgIDwgc3RlcFwtb247CivnmZYgPCBjcmF2aW5nOwor5bmVIDwgY3VydGFpbjsKK+S7oyA8IHJlcGxhY2U7CivluKsgPCB0ZWFjaGVyOwor5oC7IDwgY29sbGVjdDsKK+eXtCA8IGZvb2xpc2g7CivljY4gPCBmbG93ZXJ5Owor55eHIDwgZGlzZWFzZTsKK+eXhSA8IGlsbG5lc3M7Civlj40gPCByZXZlcnNlOwor55aOIDwgbmVnbGVjdDsKK+WKoSA8IGFmZmFpcnM7CivltKkgPCBydXB0dXJlOwor54m5IDwgc3BlY2lhbDsKK+acjSA8IGNsb3RoZXM7Civos70gPCBjb21wZXRlOwor6LORIDwgcmVsaWV2ZTsKK+enkSA8IHNlY3Rpb247CivosasgPCByZWxheGVkOwor6IGUIDwgY29ubmVjdDsKK+S/nSA8IHByb3RlY3Q7CivpnakgPCBsZWF0aGVyOwor5bCKIDwgcmVzcGVjdDsKK+WTgSA8IGFydGljbGU7CivlsIkgPCBvZmZpY2VyOwor5aOrIDwgc2Nob2xhcjsKK+mHjyA8IG1lYXN1cmU7CivnqIsgPCBqb3VybmV5Owor5a+pIDwgZXhhbWluZTsKK+aegSA8IGV4dHJlbWU7Civku6QgPCBjb21tYW5kOwor5pyqIDwgbm90XC15ZXQ7CivmjIEgPCBzdXN0YWluOwor5Y6GIDwgaGlzdG9yeTsKK+WuoyA8IGRlY2xhcmU7CivlrpcgPCBsaW5lYWdlOwor6K6uIDwgY29uc3VsdDsKK+eOhyA8IHRvXC1sZWFkOwor5aeUIDwgYXBwb2ludDsKK+WFtSA8IHNvbGRpZXI7CivlrZQgPCBvcGVuaW5nOwor6Ky5IDwgcHJ1ZGVudDsKK+ismyA8IGV4cGxhaW47CivmoLwgPCBwYXR0ZXJuOwor6Ku4IDwgc2V2ZXJhbDsKK+irpiA8IGNhcmVmdWw7CivmgJUgPCB0b1wtZmVhcjsKK+eLoSA8IGN1bm5pbmc7Civlh4YgPCBhcHByb3ZlOwor57K+IDwgZXNzZW5jZTsKK+ernyA8IGZpbmFsbHk7CivoqqAgPCBzaW5jZXJlOwor5pW0IDwgb3JkZXJseTsKK+WpiSA8IGFtaWFibGU7CivlpIcgPCBwcmVwYXJlOwor5Y+mIDwgYW5vdGhlcjsKK+mZiCA8IGV4aGliaXQ7CivmlYUgPCBhbmNpZW50Owor6KibIDwgc3dpbmRsZTsKK+iolyA8IGVudHJ1c3Q7CivoqIogPCBpbnF1aXJlOwor54iGIDwgY3JhY2tsZTsKK+aJuSA8IGNvbW1lbnQ7CivpgIEgPCBzZWVcLW9mZjsKK+WlhyA8IHN0cmFuZ2U7Civnh5UgPCBzd2FsbG93Owor54eIIDwgbGFudGVybjsKK+a4uCA8IHRvXC1zd2ltOwor5Lu9IDwgcG9ydGlvbjsKK+aVoiA8IHRvXC1kYXJlOwor54W9IDwgc3RpclwtdXA7CivmnJ0gPCBkeW5hc3R5Owor6IKyIDwgcHJvZHVjZTsKK+WbviA8IGRpYWdyYW07CivliJggPCBzdXJuYW1lOwor5aSVIDwgZXZlbmluZzsKK+aJvyA8IGluaGVyaXQ7CivkuaEgPCBjb3VudHJ5Owor6KOBIDwgY3V0XC1vdXQ7CivmvJQgPCBwZXJmb3JtOwor6KKCIDwgc2xlZXZlczsKK+ihsCA8IGRlY2xpbmU7CivloZ4gPCBzdG9wXC11cDsKK+aZryA8IHNjZW5lcnk7CivooKIgPCB3cmlnZ2xlOwor5L6dIDwgcmVseVwtb247CivngJ0gPCB0cmlja2xlOwor6IOcIDwgdmljdG9yeTsKK+a/oSA8IGltbWVyc2U7Civmv58gPCB0b1wtaGVscDsKK+ifiyA8IGNyaWNrZXQ7CivmvIYgPCB2YXJuaXNoOwor5ryBIDwgdG9cLWZpc2g7CivmlaMgPCBzY2F0dGVyOwor6JuGIDwgbWFnZ290czsKK+absiA8IGNyb29rZWQ7CivmurYgPCB0b1wtbWVsdDsKK+WOgiA8IGZhY3Rvcnk7Civogq8gPCB3aWxsaW5nOwor5oqTIDwgc2NyYXRjaDsKK+iZqyA8IGluc2VjdHM7CivmuacgPCB3ZWxsXC11cDsKK+mdoCA8IGxlYW5cLW9uOwor5o6IIDwgZ2l2ZVwtdG87CivmuIcgPCB0aGlyc3R5Owor5re6IDwgc2hhbGxvdzsKK+a3qyA8IG9ic2NlbmU7Civpt4QgPCBjaGlja2VuOwor5ZeHIDwgbWlzZXJseTsKK+aKsSA8IGVtYnJhY2U7CivnnZsgPCBleWViYWxsOwor5ousIDwgaW5jbHVkZTsKK+mZjSA8IGRlc2NlbmQ7Civnp4EgPCBwcml2YXRlOwor6JSRIDwgZGlzZGFpbjsKK+azoSA8IGJ1YmJsZXM7Civpl7kgPCBxdWFycmVsOwor6YaSIDwgd2FrZVwtdXA7CivmsowgPCBjaGFvdGljOwor5pq0IDwgdmlvbGVudDsKK+aKoiA8IHBsdW5kZXI7Civnr4cgPCBjaGFwdGVyOwor6bGIIDwgY29kZmlzaDsKK+ivuCA8IHZhcmlvdXM7Civlj60gPCB0cnVtcGV0Owor5Y+ZIDwgZXhwcmVzczsKK+WOrSA8IGRpc2xpa2U7Civpm4UgPCBlbGVnYW50Owor6Zu3IDwgdGh1bmRlcjsKK+erniA8IGNvbnRlbmQ7Civmk40gPCBjb25kdWN0Owor6K+6IDwgcHJvbWlzZTsKK+WMhiA8IGhhc3RpbHk7CivmrIUgPCB6ZWxrb3ZhOwor6Iu6IDwgYmVycmllczsKK+iLlyA8IHNwcm91dHM7CivnorAgPCBjb2xsaWRlOwor6IuRIDwgcGFzdHVyZTsKK+S7vyA8IGltaXRhdGU7CivmqZ8gPCBtYWNoaW5lOwor5qCPIDwgcmFpbGluZzsKK+WIiCA8IGN1dFwtb2ZmOwor54ugIDwgdmljaW91czsKK+aYoCA8IHByb2plY3Q7Civlv6AgPCBsb3lhbHR5Owor5omOIDwgcHVsbFwtdXA7CivohbkgPCBzdG9tYWNoOwor6IiSIDwgb3BlblwtdXA7Civlh7YgPCBjdWxwcml0Owor5oWwIDwgY29tZm9ydDsKK+mkmCA8IHN1cnBsdXM7CivmkpIgPCByZWxlYXNlOwor5oSBIDwgYW54aWV0eTsKK+aWpCA8IGFcLWNhdHR5Owor5YORIDwgc29qb3VybjsKK+aJtiA8IHN1cHBvcnQ7Civmr4EgPCBkZXN0cm95Owor5qKwIDwgd2VhcG9uczsKK+i/nSA8IGRpc29iZXk7CivkuKIgPCBkaXNjYXJkOwor6IKGIDwgaW5kdWxnZTsKK+e7lSA8IGVudHdpbmU7CivogbMgPCB1cmdlXC1vbjsKK+iIsCA8IHdhcnNoaXA7CivmgbwgPCBhbmdlcmVkOwor6L6jIDwgcGVwcGVyeTsKK+aXiyA8IHJldm9sdmU7CivlgIkgPCBncmFuYXJ5Owor572aIDwgcGVuYWx0eTsKK+aLviA8IHBpY2tcLXVwOwor5oGiIDwgcmVzdG9yZTsKK+e/gSA8IG9sZFwtbWFuOwor5769IDwgZmVhdGhlcjsKK+aKliA8IHRyZW1ibGU7Civkvq8gPCBtYXJxdWlzOwor5oORIDwgY29uZnVzZTsKK+mblSA8IGVuZ3JhdmU7Civlr78gPCBvbGRcLWFnZTsKK+mUpiA8IGJyb2NhZGU7CivmnY8gPCBhcHJpY290Owor5oWMIDwgbmVydm91czsKK+WxoCA8IGJ1dGNoZXI7Civmn48gPCBjeXByZXNzOwor6ZyNIDwgcXVpY2tseTsKK+mZtiA8IHBvdHRlcnk7CivmkYQgPCB0YWtlXC1pbjsKK+mXryA8IHJ1c2hcLWluOwor5omwIDwgZGlzdHVyYjsKK+mbgCA8IHNwYXJyb3c7CivpmIEgPCBjaGFtYmVyOwor5Y2iIDwgY290dGFnZTsKK+afnCA8IGNhYmluZXQ7CivmmocgPCBsZWlzdXJlOwor5oSnIDwgYXNoYW1lZDsKK+aZtiA8IGNyeXN0YWw7CivmmZ0gPCBkYXl0aW1lOwor562LIDwgbXVzY2xlczsKK+aSkSA8IHByb3BcLXVwOwor5aGrIDwgZmlsbFwtaW47Civml7ogPCBwcm9zcGVyOwor6ICXIDwgY29uc3VtZTsKK+aCpiA8IHBsZWFzZWQ7CivmlpEgPCBtb3R0bGVkOwor6Le1IDwgdHJhbXBsZTsKK+aDtiA8IGZlYXJmdWw7CivnsL4gPCBhXC1ibGluZDsKK+i0qSA8IHBlZGRsZXI7CivmiIggPCBoYWxiZXJkOwor6ZCQIDwgZmV0dGVyczsKK+iZuSA8IHJhaW5ib3c7Civlr6EgPCB3aWRvd2VkOwor6YOKIDwgc3VidXJiczsKK+W+vSA8IGFcLWJhZGdlOwor6bKNIDwgYWJhbG9uZTsKK+eshCA8IGhhaXJwaW47Civmsr4gPCBtb2lzdGVuOwor556SIDwgZGVjZWl2ZTsKK+ergyA8IGZ1cm5hY2U7Civoo5QgPCBwcm9nZW55Owor5YyqIDwgYmFuZGl0czsKK+amnCA8IHBsYWNhcmQ7CivmnokgPCB1c2VsZXNzOwor6aqHIDwgdGVycmlmeTsKK+aSsCA8IGNvbXBvc2U7CivlnoMgPCBnYXJiYWdlOwor6am8IDwgYVwtY2FtZWw7CivosbkgPCBsZW9wYXJkOwor57y0IDwgZGVsaXZlcjsKK+WTqCA8IHdoaXN0bGU7CivlmrwgPCBwcmF0dGxlOwor5pinIDwgb2JzY3VyZTsKK+aXsSA8IGRyb3VnaHQ7CivogYIgPCB3aGlzcGVyOwor6I69IDwgdGhpY2tldDsKK+WOriA8IHNlcnZhbnQ7CivojKggPCBjYWx0cm9wOwor57KYIDwgdmlzY291czsKK+acvSA8IGRlY2F5ZWQ7CivnhJUgPCBzaGluaW5nOwor54aEIDwgcHV0XC1vdXQ7CivpgL4gPCBnb1wtb3ZlcjsKK+mGiyA8IHZpbmVnYXI7CivmlowgPCByZWZpbmVkOwor5oGVIDwgZm9yZ2l2ZTsKK+aypiA8IGJlXC1sb3N0Owor5bKxIDwgZGFpc2hhbjsKK+iusyA8IGNvbmNlYWw7CivlspQgPCBkaXZlcmdlOwor5Z6SIDwgcmFtcGFydDsKK+e/mCA8IHR1cm5cLXVwOwor6KeRIDwgcGVlcFwtYXQ7Civmi44gPCB0b1wtaGF1bDsKK+WZnCA8IHZlcmJvc2U7Civlh7kgPCBjb25jYXZlOwor5pKpIDwgbGlmdFwtdXA7CivltL0gPCBhXC1jaGlsZDsKK+a2hSA8IGJsYWNrZW47CivnsIwgPCBmYWxsaW5nOwor6K+bIDwgZXhlY3V0ZTsKK+aOsyA8IGNhcHR1cmU7CivppoUgPCBmaWxsaW5nOwor56GFIDwgc2lsaWNvbjsKK+aKqCA8IGltcGVhY2g7Civogr4gPCBraWRuZXlzOwor6ZStIDwgc3BpbmRsZTsKK+iMrCA8IGhhcnZlc3Q7CivosKQgPCBzbGFuZGVyOwor6ZKzIDwgcGluY2VyczsKK+edvSA8IHN0YXJpbmc7CivpmLEgPCBwaXRmYWxsOwor5rGAIDwgc2FuZGJhcjsKK+enpCA8IGJhbGFuY2U7Civmmb4gPCBhaXJcLWRyeTsKK+i3miA8IHN0YWdnZXI7Civojp4gPCBzbWlsaW5nOwor6bilIDwgc2VhZ3VsbDsKK+iRhiA8IHJlc2VydmU7CivmsKIgPCBhbW1vbmlhOwor5binIDwgcGljdHVyZTsKK+S9ryA8IHByZXRlbmQ7Civng6wgPCBjaW5kZXJzOwor6JqMIDwgb3lzdGVyczsKK+iwhiA8IHBhdGllbnQ7CivnmZ4gPCBsZXByb3N5Owor5ZWEIDwgdG9cLXBlY2s7Civnh44gPCB0b1wtYnVybjsKK+i/syA8IHBhc3NcLWJ5Owor5oG4IDwgc2FkbmVzczsKK+WSgiA8IHRvXC1zdWNrOwor55u5IDwgdG9cLWRvemU7Civkv74gPCBzb1wtdGhhdDsKK+iwmiA8IHByb3ZlcmI7CivmjrggPCB0b1wtZHVzdDsKK+WMriA8IHRvXC1sYWNrOwor5bmhIDwgcGVubmFudDsKK+WbsSA8IGNoaW1uZXk7CivltIIgPCBsYW9zaGFuOwor6J2MIDwgdGFkcG9sZTsKK+mTgCA8IHVyYW5pdW07CivmjJsgPCB0YW5nbGVkOwor57uvIDwgc2NhcmxldDsKK+m4qCA8IGJ1c3RhcmQ7CivonJcgPCBhXC1zbmFpbDsKK+aBqyA8IGluXC1wYWluOwor6LCAIDwgZmxhdHRlcjsKK+i4riA8IHRpcFwtdG9lOwor6aaKIDwgc3BvaWxlZDsKK+mSmSA8IGNhbGNpdW07CivmjbEgPCBwdXRcLW9mZjsKK+iSvyA8IG11Z3dvcnQ7CivphbYgPCBlbnp5bWVzOwor6KGiIDwgaGlnaHdheTsKK+ejuiA8IHN1bHBodXI7CivouakgPCB0b1wtbGltcDsKK+a1oyA8IHRvXC13YXNoOwor55a5IDwgbWVhc2xlczsKK+mdpSA8IGRpbXBsZXM7CivmhIYgPCBhXC1mYXVsdDsKK+m4tSA8IG9zdHJpY2g7CivnqpUgPCBzbGVuZGVyOwor6L+pIDwgYmVcLW5lYXI7CivkvbAgPCBodW5kcmVkOwor6ZK5IDwgY3ltYmFsczsKK+mdvCA8IHRhcnRhcnM7CivnhbIgPCB0b1wtaGVhdDsKK+eNkCA8IHJvZWJ1Y2s7CivkvZ0gPCByaWNrZXRzOwor6JOfIDwgY2lyY2l1bTsKK+m7nCA8IGRpc21pc3M7CivmkYggPCBleGNsdWRlOwor6aOTIDwgY3ljbG9uZTsKK+iDsSA8IGJsYWRkZXI7Civppb0gPCBmZXJydWxlOwor6aaPIDwgZGlzdGlsbDsKK+iLryA8IGJlbnplbmU7Civmt7wgPCBhXC1mbG9vZDsKK+mTsSA8IGlyaWRpdW07CivokakgPCBmbG93ZXJzOwor6YChIDwgcmV0cmVhdDsKK+mAtiA8IHdpbmRpbmc7CivokLggPCBkb2d3b29kOwor5oydIDwgdG9cLWJlYXQ7CivnhrUgPCBlbnRyb3B5Owor54WoIDwgdG9cLXN0ZXc7CivnoJIgPCBhcnNlbmljOwor5pmBIDwgbW9ybmluZzsKK+WHhyA8IGRld2Ryb3A7CivlmZggPCBwb3V0aW5nOwor5ZSjIDwgY2hhdHRlcjsKK+mqoCA8IGNoYXJnZXI7CivmgIQgPCBhbm5veWVkOwor6ZSCIDwgbGl0aGl1bTsKK+eWpSA8IHNjYWJpZXM7CivnqJcgPCBkYXJuZWxzOwor5rSuIDwgY2xlYW5zZTsKK+mFriA8IGtldG9uZXM7CivohZogPCBidXR0b2NrOwor6IWxIDwgdGVuZG9uczsKK+mmlCA8IHRvXC1mZWVkOwor5pCgIDwgdG9cLWRhdWI7CivphaEgPCBmbHVzaGVkOwor5ZGSIDwgdW5jbGVhcjsKK+eXpyA8IGNob2xlcmE7CivnrKQgPCBhXC1icm9vbTsKK+mfqyA8IHNlY3JldGU7CivmgJsgPCBncmlldmVkOwor55q0IDwgY2hhcHBlZDsKK+edoiA8IGdhemVcLWF0Owor5aGsIDwgcGxhdGVhdTsKK+ieryA8IG5pcHBlcnM7CivnjZIgPCBtYXN0aWZmOwor5rKGIDwgYVwtZmVycnk7CivluJQgPCBhXC1za2lydDsKK+iWhSA8IHRvXC13ZWVkOwor6I60IDwgbGV0dHVjZTsKK+aNrSA8IHRvXC1vcGVuOwor6JGtIDwgYnVscnVzaDsKK+WApSA8IGJvb3Jpc2g7CivmurQgPCBicm9taW5lOwor5bubIDwgYVwtc3RvcmU7Civmj7ggPCBoYW5kZnVsOwor5Lu1IDwgc2ltaWxhcjsKK+mriyA8IGhpcGJvbmU7CivogrEgPCBmb3JlYXJtOwor6JqNIDwgbXVzc2VsczsKK+mVkyA8IGdhbGxpdW07Civpk4sgPCBiaXNtdXRoOwor6IOdIDwgY2FsbG91czsKK+i1jSA8IHByZXNlbnQ7Civnv6UgPCB0b1wtc29hcjsKK+icniA8IGdyYXBzdXM7CivosKAgPCBjb3Vuc2VsOwor55+sIDwgYVwtZHdhcmY7CivmurIgPCB1cmluYXRlOwor6JW7IDwgYnVkZGluZzsKK+m5iCA8IHBlbGljYW47CivplYkgPCBjYWRtaXVtOwor6KyHIDwgc3R1dHRlcjsKK+aGtyA8IHBhaW5mdWw7CivosKEgPCByaXNlXC11cDsKK+ikiiA8IGNyYW1wZWQ7Civpko0gPCB0aG9yaXVtOwor5rCqIDwga3J5cHRvbjsKK+i/riA8IHRvXC1yaXNlOwor6JONIDwgbWlsZm9pbDsKK+ievSA8IGthdHlkaWQ7CivliYAgPCBzaGFycGVuOwor6LmAIDwgdG9cLXNraXA7CivplI4gPCBjYWVzaXVtOwor6ZKHIDwgeXR0cml1bTsKK+awmiA8IHRyaXRpdW07CivnirggPCBtYW1tb3RoOwor6I+4IDwgdG9cLWZhZGU7CivpsrEgPCBoZXJyaW5nOwor6LqeIDwgdG9cLXdhbGs7Civpk4wgPCBuaW9iaXVtOwor55WAIDwgdG9cLWdpdmU7CivpgZggPCB0b1wtbWVldDsKK+aztyA8IHJhaW5pbmc7CivokqEgPCBidXJkb2NrOwor6auMIDwga25lZWNhcDsKK+mzmSA8IGJpZ2hlYWQ7CivntbcgPCBjb25maW5lOwor566mIDwgYmVkXC1tYXQ7CivnmJggPCBmaXN0dWxhOwor6ZWEIDwgZmVybWl1bTsKK+elhiA8IG9ybWF6ZGE7Civlq6AgPCBhXC13aWRvdzsKK+aQtCA8IGV4dHJhY3Q7Civlg6YgPCB0b1wtaGVpcjsKK+eJveaJryA8IGludm9sdmU7CivnnIvlvpfoposgPCB2aXNpYmxlOwor5ama5LqLIDwgd2VkZGluZzsKK+aqoumWsSA8IGluc3BlY3Q7CivoqLToi6YgPCBncnVtYmxlOwor5pyJ6LOH5qC8IDwgZW50aXRsZTsKK+aaq+WBnCA8IHN1c3BlbmQ7CivmraHov47lhYnoh6ggPCB3ZWxjb21lOwor6Ke46KeSIDwgYW50ZW5uYTsKK+Wck+efs+mgrSA8IGJvdWxkZXI7CivnvbfkvJEgPCBnaXZlXC11cDsKK+Wlp+WcsOWIqSA8IGF1c3RyaWE7Civoqo3nnJ8gPCBlYXJuZXN0Owor5pmC5bCaIDwgZmFzaGlvbjsKK+eJiOacrCA8IHZlcnNpb247CivluoforbcgPCBzaGVsdGVyOwor6YW45oCnIDwgYWNpZGl0eTsKK+e3qOe6giA8IGNvbXBpbGU7CivlkJvkuLsgPCBtb25hcmNoOwor57i955CGIDwgcHJlbWllcjsKK+WkqeeEtiA8IG5hdHVyYWw7CivnnaHooaMgPCBwYWphbWFzOwor5pW055CGIDwgYXJyYW5nZTsKK+eFmeiNiSA8IHRvYmFjY287Civnh6bniJsgPCBnbGl0dGVyOwor5Y+v5YuVIDwgbW92YWJsZTsKK+awtOaJiyA8IG1hcmluZXI7CivlgrPpgZPpg6ggPCBtaXNzaW9uOwor5Y+j5ZCDIDwgc3RhbW1lcjsKK+WJteS4lue0gCA8IGdlbmVzaXM7Civoj4/omK0gPCBob2xsYW5kOwor6I+g6I+cIDwgc3BpbmFjaDsKK+WNgeaciCA8IG9jdG9iZXI7CivljYPkvY3lhYMgPCBraWxvYml0Owor5o+a6IGy5ZmoIDwgc3BlYWtlcjsKK+avm+avryA8IGJsYW5rZXQ7CivnrqHnkIblk6EgPCBtYW5hZ2VyOwor6Zm96Ie6IDwgYmFsY29ueTsKK+eLguWWnCA8IGVjc3Rhc3k7CivmsLjmgYYgPCBldGVybmFsOwor6KuL5rGCIDwgcmVxdWVzdDsKK+a1t+i7jee4veWPuOS7pCA8IGFkbWlyYWw7Civlh7rotbAgPCB0b1wtZmxlZTsKK+iAgeizh+agvCA8IHZldGVyYW47CivmlYjnm4ogPCBiZW5lZml0Owor6YeN5YqbIDwgZ3Jhdml0eTsKK+mHkemKgOWhiiA8IGJ1bGxpb247CivnorzlrZcgPCBudW1lcmFsOwor5byE56KOIDwgY3J1bWJsZTsKK+aymeS4gemtmiA8IHNhcmRpbmU7Civlp5DlprkgPCBzaXN0ZXJzOwor55uu6YyEIDwgY2F0YWxvZzsKK+W/g+aEmyA8IGJlbG92ZWQ7CivlvITnn60gPCBzaG9ydGVuOwor54Sh6JmVIDwgbm93aGVyZTsKK+iuiuWOmiA8IHRoaWNrZW47CivlppbmgKogPCBtb25zdGVyOwor57eK57eKIDwgY2xvc2VseTsKK+maseengSA8IHByaXZhY3k7Civpl5zpjbUgPCBjcnVjaWFsOwor5ae/5YuiIDwgcG9zdHVyZTsKK+WuieaPkOeTnOWztiA8IGFudGlndWE7Civllqrlv4Pnl4Xni4IgPCBsdW5hdGljOwor5by354OIIDwgaW50ZW5zZTsKK+WlveaIsCA8IHdhcmxpa2U7CivlvITnmrogPCBjcnVtcGxlOwor55u46YCjIDwgdG9cLWxpbms7Civmlofms5UgPCBncmFtbWFyOwor5Y+k5L6GIDwgb2xkdGltZTsKK+WkqeawoyA8IHdlYXRoZXI7CivphZLlu6AgPCBicmV3ZXJ5Owor5b6B5pyNIDwgY29ucXVlcjsKK+e0oumBkyA8IHJvcGV3YXk7CivpmbjnuowgPCBpblwtdHVybjsKK+maseeeniA8IHRvXC1oaWRlOwor5aSW5rWBIDwgb3V0ZmxvdzsKK+W3pemgrSA8IGZvcmVtYW47CivpgaDnq68gPCBmYXJcLWVuZDsKK+WHuue0jeWToSA8IGNhc2hpZXI7CivliqDnlJwgPCBzd2VldGVuOwor6Z+z5L+hIDwgbWVzc2FnZTsKK+manOekmSA8IGJhcnJpZXI7CivorablkYogPCB0b1wtd2FybjsKK+eEtuiAjCA8IGhvd2V2ZXI7CivlpKfmpoIgPCByb3VnaGx5Owor5oSb6YGK546pIDwgcGxheWZ1bDsKK+agvOWtkOajieW4gyA8IGdpbmdoYW07Civpi7znkLTlrrYgPCBwaWFuaXN0Owor6Zu75rGgIDwgYmF0dGVyeTsKK+avlOaWuSA8IGFuYWxvZ3k7CivoqIjmlbjogIUgPCBjb3VudGVyOwor6YCA6JC9IDwgc3Vic2lkZTsKK+iuiuS6giA8IHR1cm1vaWw7CivnhrHmva4gPCB1cHN1cmdlOwor6Kej5YmW5a24IDwgYW5hdG9teTsKK+asuueeniA8IHRvXC1mb29sOwor5pyJ5a245ZWPIDwgbGVhcm5lZDsKK+itsOWDuSA8IGJhcmdhaW47CivnupblvLEgPCBmcmFnaWxlOwor6KaL6K2JIDwgd2l0bmVzczsKK+WKoOeGsSA8IGhlYXRpbmc7CivljYrlkIrlrZAgPCBkYWJibGVyOwor6Z2e5bi4IDwgdW51c3VhbDsKK+WLh+awoyA8IGNvdXJhZ2U7CivlpLHmlYggPCB0b1wtZmFpbDsKK+WFiOmphSA8IHBpb25lZXI7Civniq/kurogPCBjb252aWN0Owor6Zuj5rCRIDwgcmVmdWdlZTsKK+mBuueJqSA8IHJlbW5hbnQ7Civmr5LmiZMgPCBiZWF0XC11cDsKK+mGnOS6iyA8IHNjYW5kYWw7CivpmY3ntJogPCBkZWdyYWRlOwor54Sm57OWIDwgY2FyYW1lbDsKK+aRmOimgSA8IHN1bW1hcnk7CivpgLLnqIsgPCBwcm9jZXNzOwor5pGU6KeSIDwgd3Jlc3RsZTsKK+WMheaJjiA8IHdyYXBcLXVwOwor5bui54mpIDwgcnViYmlzaDsKK+WkqeiKseadvyA8IGNlaWxpbmc7CivmrpjmoKogPCBzdHViYmxlOwor5aW95aWHIDwgY3VyaW91czsKK+eZu+mZuCA8IHRvXC1sYW5kOwor55uj6KaWIDwgb3ZlcnNlZTsKK+W9ouaIkCA8IHRvXC1mb3JtOwor57i95pW4IDwgYVwtdG90YWw7CivlvrflnIsgPCBnZXJtYW55Owor57Wx57WxIDwgdG90YWxseTsKK+Wkp+ebpOWtkCA8IHBsYXR0ZXI7CivnhKHnqq4gPCBlbmRsZXNzOwor55+u5p6XIDwgY29wcGljZTsKK+Wig+eVjCA8IGJvdW5kcnk7CivkuI3og73kuI0gPCBoYXZlXC10bzsKK+W8hOatqiA8IGRpc3RvcnQ7CivlhrDooosgPCBpY2VcLWJhZzsKK+WHuuWFpeWPoyA8IGdhdGV3YXk7CivmtojpmLLpmorlk6EgPCBmaXJlbWFuOwor6LW355q657SLIDwgc2hyaXZlbDsKK+mWseiugCA8IHRvXC1yZWFkOwor6YO15beuIDwgcG9zdG1hbjsKK+mdouWariA8IHRvXC1mYWNlOwor6Ke455m8IDwgdHJpZ2dlcjsKK+eAnemdkiA8IGFzcGhhbHQ7CivljbPkvr8gPCBldmVuXC1pZjsKK+Wkp+W7iCA8IGVkaWZpY2U7CivnmbzphbUgPCBmZXJtZW50Owor5bm456aPIDwgYmxlc3NlZDsKK+eEoeebiiA8IG5vXC1nb29kOwor6Ziy56amIDwgZGVmZW5zZTsKK+att+aZgiA8IHRvXC1sYXN0Owor5omY5YWS5omAIDwgbnVyc2VyeTsKK+iJt+e0heiJsiA8IGNyaW1zb247CivnibnoqLHni4AgPCBjaGFydGVyOwor5ouW5puz5qmfIDwgdHJhY3RvcjsKK+eJiOWIuyA8IGNhcnZpbmc7CivphY3lgbYgPCBjb25zb3J0Owor6aCQ6KiA5a62IDwgcHJvcGhldDsKK+aVkeaPtCA8IHRvXC1zYXZlOwor5pel5Ye6IDwgc3VucmlzZTsKK+awo+WAmSA8IGNsaW1hdGU7CivnuYPluLYgPCBiYW5kYWdlOwor6YCX55WZIDwgc3RheVwtYXQ7CivliKnnlKggPCBleHBsb2l0Owor5Y2A5Y2AIDwgdHJpdmlhbDsKK+iDjOWPm+iAhSA8IHRyYWl0b3I7Civlvq7lhYkgPCBnbGltbWVyOwor5q+P5aScIDwgbmlnaHRseTsKK+mBleazlSA8IGlsbGVnYWw7Civlh7rnp58gPCB0b1wtcmVudDsKK+mbgOaWkSA8IGZyZWNrbGU7CivlpKfkvb/ppKggPCBlbWJhc3N5Owor5aSn6I2J5Y6fIDwgcHJhaXJpZTsKK+eJqeeQhuWtuCA8IHBoeXNpY3M7CivmlLbmk5ogPCByZWNlaXB0Owor5Y2B5YWtIDwgc2l4dGVlbjsKK+e5quWcliA8IHRvXC1kcmF3Owor55+l5oKJIDwgdG9cLWtub3c7CivnhrHmg4UgPCBjb3JkaWFsOwor5Y2B5YCNIDwgdGVuZm9sZDsKK+WJm+avmyA8IGJyaXN0bGU7Civmqavoh6UgPCByZWNsaW5lOwor5Yi65r+AIDwgcHJvdm9rZTsKK+e2k+a/nyA8IGVjb25vbXk7CivntLDnr4AgPCBkZXRhaWxzOwor5omz5LiN5YCS5YWSIDwgdHVtYmxlcjsKK+aogui2oyA8IGRlbGlnaHQ7CivniKzon7Lli5XniakgPCByZXB0aWxlOwor57Si6aas6KOhIDwgc29tYWxpYTsKK+WNgeS6lCA8IGZpZnRlZW47CivlpJrlpKcgPCBob3dcLWJpZzsKK+WFseiZlSA8IGNvZXhpc3Q7CivmlKrmi4wgPCB0b1wtc3RpcjsKK+i8lei8lSA8IGxpZ2h0bHk7Civlu6Pmkq3ntrIgPCBuZXR3b3JrOwor5be05qC86YGUIDwgYmFnaGRhZDsKK+WIqea9pCA8IHByb2ZpdHM7CivlpJbnp5HphqvnlJ8gPCBzdXJnZW9uOwor6KOd6LyJIDwgdG9cLWxvYWQ7CivljIXlkKsgPCBjb250YWluOwor5pOv5qOEIDwgYWJhbmRvbjsKK+WcqO+5jeS5i+mWkyA8IGJldHdlZW47CivnmbzooYwgPCBwdWJsaXNoOwor55m96J+7IDwgdGVybWl0ZTsKK+mBuOaJiyA8IGF0aGxldGU7CivlpLHljrsgPCB0b1wtbG9zZTsKK+i8quipoiA8IHRvXC1wb2xsOwor6Iqx6LK7IDwgZXhwZW5zZTsKK+iRieWtkCA8IGZvbGlhZ2U7CivojYnnqL8gPCBvdXRsaW5lOwor5q2m5bqrIDwgYXJzZW5hbDsKK+mKgOihjOalrSA8IGJhbmtpbmc7CivlvITlubMgPCBmbGF0dGVuOwor5Yi25q2iIDwgdG9cLWN1cmI7CivnhafmkKwgPCB0b1wtY29weTsKK+m+oSA8IHRvXC1ibG93Owor6KOc6LK8IDwgc3Vic2lkeTsKK+m9sCA8IHRvXC1iaXRlOwor6b2pIDwgdG9cLWNoZXc7CivmraPluLggPCByZWd1bGFyOwor6by3IDwgYVwtbW91c2U7CivmlofljJYgPCBjdWx0dXJlOwor5bSp6Zm3IDwgZmFsbFwtaW47CivpuJEgPCBhXC1sYXJnZTsKK+W3tOe1kCA8IGZhd25cLW9uOwor6befIDwgcGhvZW5peDsKK+m2uiA8IHdhZ3RhaWw7CivptrkgPCB0aGVcLW93bDsKK+aJi+aOqOi7iiA8IHRyb2xsZXk7CivnmrrntIsgPCB3cmlua2xlOwor5qyK5p2WIDwgc2NlcHRlcjsKK+eZvuiQrCA8IG1pbGxpb247CivlpJrljYogPCBjaGllZmx5Owor6YCx5pyrIDwgd2Vla2VuZDsKK+m0qyA8IGFcLXNuaXBlOwor5Yid5q2lIDwgaW5pdGlhbDsKK+WLnuWLleiAhSA8IGxhYm9yZXI7Civnhanmg7EgPCBhZ29uaXplOwor6bKaIDwgYW5jaG92eTsKK+eFqeaCtiA8IGFuZ3Vpc2g7CivluavmtL4gPCBmYWN0aW9uOwor576O5rSy6LG5IDwgcGFudGhlcjsKK+ihqOmdoiA8IHN1cmZhY2U7Civns5/ns5UgPCB0b29cLWJhZDsKK+e4veWJhyA8IHByb2ZpbGU7Civpmqrls7sgPCBhcmR1b3VzOwor5Yi25pyNIDwgdW5pZm9ybTsKK+WDj+mKgCA8IHNpbHZlcnk7CivprZwgPCBtZXJtYWlkOwor5YmN5o+QIDwgcHJlbWlzZTsKK+e2reaMgSA8IHRvXC1rZWVwOwor5o6l6Ke4IDwgY29udGFjdDsKK+iKseW0l+efsyA8IGdyYW5pdGU7CivlpKXkvLQgPCBwYXJ0bmVyOwor6aqrIDwgYmVcLWJlbnQ7CivpqokgPCBydW5uaW5nOwor5pOB5pyJIDwgdG9cLWhhdmU7CivlnKjlhbbkuK0gPCB0aGVyZWluOwor6amZIDwgXChob3JzZVwpOwor6amSIDwgZGFwcGxlZDsKK+atpOWkliA8IGJlc2lkZXM7CivlvLfliLYgPCBlbmZvcmNlOwor6LuK6LybIDwgdmVoaWNsZTsKK+iKrOiYrSA8IGZpbmxhbmQ7CivmlbjkvY0gPCBkaWdpdGFsOwor5Y2B5YSE5L2N5YWDIDwgZ2lnYWJpdDsKK+miqyA8IGFcLXN0b3JtOwor5Z+354WnIDwgbGljZW5zZTsKK+eEoeaViCA8IGluXC12YWluOwor6Z+jIDwgYm93XC1iYWc7Civpn4UgPCBoYXJuZXNzOwor57SZ54WZIDwgY2lnYXJldDsKK+ecuuacmyA8IGxvb2tvdXQ7Civpl5znhacgPCBjb25jZXJuOwor6ZuaIDwgYVwtaGVyb247CivlhrDniYcgPCBib3JuZW9sOwor5YqH5aC0IDwgdGhlYXRlcjsKK+eGseWIhyA8IGZlcnZlbnQ7Civpmb4gPCBpblwtZmlsZTsKK+S6lOaciOWNgeS6lOiZnyA8IG1heVwtMVwtNTsKK+mZniA8IHByb21vdGU7CivpmLvmlJQgPCB0b1wtc3RvcDsKK+mYpyA8IHNsb3Bpbmc7CivlvJ/lhYQgPCBicm90aGVyOwor55yJ5q+bIDwgZXllYnJvdzsKK+iiq+ikpSA8IGJlZGRpbmc7Civmk7rlrZAgPCBtYWxhcmlhOwor5pOU5b+DIDwgYW54aW91czsKK+i6q+mrlOmanOWusyA8IGNyaXBwbGU7CivlhaznpL4gPCBjb21tdW5lOwor6ZO9IDwgdGVyYml1bTsKK+mTvCA8IHJoZW5pdW07Civpk6ogPCBoYWZuaXVtOwor6ZOlIDwgdGh1bGl1bTsKK+mTkSA8IHJob2RpdW07CivpkqwgPCBob2xtaXVtOwor57WQ5p6cIDwgb3V0Y29tZTsKK+atsuWFpSA8IHJldmVudWU7CivloorlrZAgPCBjdXNoaW9uOwor55uj5risIDwgbW9uaXRvcjsKK+aiteW4neWyoSA8IHZhdGljYW47CivlkIznvqnlrZcgPCBzeW5vbnltOwor6Yy2IDwgYVwtd2F0Y2g7CivprKLop5IgPCB0ZW1wbGVzOwor6YyAIDwgXChtZXRhbFwpOwor5o+t56S6IDwgdG9cLXNob3c7Civpi4ogPCBhXC1wb2tlcjsKK+mLgiA8IGJpdFwtY3VwOwor55eV6LehIDwgdmVzdGlnZTsKK+WJneWlqiA8IGRlcHJpdmU7CivovrLmsJEgPCBwZWFzYW50Owor5oSb5ZyL6ICFIDwgcGF0cmlvdDsKK+W7oOWVhiA8IGNvbXBhbnk7CivlpbPkuLvkurogPCBob3N0ZXNzOwor55m95qa055+zIDwgbGV1Y2l0ZTsKK+S9oOiHquW3sSA8IHRoeXNlbGY7CivlhpLnhZkgPCBzbW9raW5nOwor57Ch6KaBIDwgY29uY2lzZTsKK+e0hea1tyA8IHJlZFwtc2VhOwor5Yaw5rKzIDwgZ2xhY2lhbDsKK+e0lOatoyA8IGdlbnVpbmU7CivliKjlt6UgPCBwbGFuaW5nOwor5rS+57Wm5bel5L2cIDwgdG9cLXRhc2s7CivlubvlvbEgPCBwaGFudG9tOwor6Ieq55Sx5rS+IDwgbGliZXJhbDsKK+aLlOmggiA8IHRvcHBpbmc7Civnlr7otbAgPCBzY2FtcGVyOwor6L2SIDwgY2hhcmlvdDsKK+W3sua7hSA8IGV4dGluY3Q7CivnsaDnvakgPCBlbnZlbG9wOwor6LuyIDwgYVwtd2hlZWw7Civou5ggPCB3YXJcLWNhcjsKK+ieoueBq+ifsiA8IGZpcmVmbHk7CivouqYgPCB0b1wtanVtcDsKK+i6nSA8IHRvXC1wYXNzOwor55m+5YiG5LmLIDwgcGVyY2VudDsKK+mshue3iuW4tiA8IGVsYXN0aWM7CivolpTolofoirHolb4gPCByb3NlYnVkOwor6ZmE5a+EIDwgZW5jbG9zZTsKK+eEoeirluS9leS6uiA8IHdob2V2ZXI7Civot6wgPCB0b1wtc3RlcDsKK+WvhOWuv+eUnyA8IGJvYXJkZXI7Civot5UgPCBzaHVmZmxlOwor6La3IDwgdG9cLWpvbHQ7CivntajluIMgPCBmbGFubmVsOwor5YSY566hIDwgZGVzcGl0ZTsKK+mYu+WwvCA8IGRhbXBpbmc7CivnlJzpu54gPCBkZXNzZXJ0Owor55m854++IDwgdG9cLWZpbmQ7CivotIcgPCBhZmZhYmxlOwor6LSDIDwgdG9cLWVhcm47CivploPniI0gPCBmbGlja2VyOwor6KGj6KOdIDwgZ2FybWVudDsKK+iznSA8IHByZWlvdXM7CivlgpnoqLsgPCByZW1hcmtzOwor6Zeh5piOIDwgY2xhcmlmeTsKK+WPl+atoei/jiA8IHBvcHVsYXI7CivosZcgPCBjbGFtb3VyOwor5Yiw5aC0IDwgc2hvd1wtdXA7Civnm5vmnIMgPCBwYWdlYW50Owor6K6MIDwgYVwtZmVhc3Q7CivorLMgPCB0b1wtc2luZzsKK+ishiA8IGJlZ3VpbGU7Civpo5vmqZ/loLQgPCBhaXJwb3J0Owor6Km+IDwgbm9pc2lseTsKK+WBveitiSA8IHBlcmp1cnk7CivoqasgPCB0b1wtYnJhZzsKK+iphSA8IHRvXC1zZWxsOwor54Wn5LquIDwgbGlnaHRlbjsKK+mZs+WIlyA8IGRpc3BsYXk7CivpmL/niL7lj4rliKnkup4gPCBhbGdlcmlhOwor6KehIDwgYW50bGVyczsKK+mZveWCmCA8IHBhcmFzb2w7CivlsbHpoIIgPCBoaWxsdG9wOwor5o6M566hIDwgY29udHJvbDsKK+ilnCA8IGZsdXR0ZXI7CivopYMgPCBjb21tZW5kOwor6KSUIDwgY29tcGxleDsKK+iiuiA8IGhvbGRcLXVwOwor5pOg5YWlIDwgaW50cnVkZTsKK+ihtSA8IGNoZW1pc2U7CivmrIrliKkgPCBhXC1wb3dlcjsKK+iKseeSsCA8IGdhcmxhbmQ7CivlhazmsJEgPCBjaXRpemVuOwor5be05p6XIDwgYmFocmFpbjsKK+WBveijnSA8IHRvXC1mYWtlOwor5aCF5by3IDwgc3RhdW5jaDsKK+aWr+eTpuW4jOijoSA8IHN3YWhpbGk7CivoiKrnqbrpg7Xku7YgPCBhaXJtYWlsOwor5Lqe54m56Jit5aSnIDwgYXRsYW50YTsKK+mAsumAgOWFqemboyA8IGRpbGVtbWE7CivlubPlnYcgPCBhdmVyYWdlOwor5a+m6Zqb5LiKIDwgaW5cLWZhY3Q7CivliLrliIAgPCBiYXlvbmV0Owor57C4566VIDwgZHVzdHBhbjsKK+WFhea7vyA8IGZ1bGxcLW9mOwor5biz5biYIDwgZHJhcGVyeTsKK+iWvSA8IFwoZ3Jhc3NcKTsKK+iWtiA8IHRvXC1idXJ5Owor5Y+N5oeJ5aCGIDwgcmVhY3RvcjsKK+iWkyA8IGdpbnNlbmc7Civmv4DntKAgPCBob3Jtb25lOwor6Kej5YmWIDwgZGlzc2VjdDsKK+iOiuWatCA8IHN0YXRlbHk7CivlubPlj7AgPCB0ZXJyYWNlOwor6I+qIDwgaGVuYmFuZTsKK+iPpyA8IHN0aWJlbmU7Civmi43os6MgPCBhdWN0aW9uOwor5ruL6aSKIDwgbm91cmlzaDsKK+ino+WDsSA8IHRvXC1maXJlOwor6I6AIDwgdG9cLWZhcm07CivliLDkvoYgPCBhcnJpdmFsOwor5bqK5YG0IDwgYmVkc2lkZTsKK+aomeanjSA8IGphdmVsaW47Civnlqvoi5cgPCB2YWNjaW5lOwor6LaF6b2hIDwgdG9vXC1vbGQ7Civlm6DntKAgPCBlbGVtZW50Owor5Yaw5bedIDwgZ2xhY2llcjsKK+mXiuW6piA8IGJyZWFkdGg7CivoiJMgPCB0b1wtbGljazsKK+iHnSA8IGJlXC1iYXJlOwor6L2f5pOKIDwgYm9tYmFyZDsKK+iFliA8IHBlcHRvbmU7CivlhrDls7YgPCBpY2VsYW5kOwor55Ww5pWZ5b6SIDwgaGVhdGhlbjsKK+WclueVqyA8IGRyYXdpbmc7CivohJ0gPCBkaXN0ZW5kOwor5YiG5p6Q5Lq65aOrIDwgYW5hbHlzdDsKK+WGsOWxsSA8IGljZWJlcmc7CivlpJbpgqbkurogPCBnZW50aWxlOwor56e75rCR6ICFIDwgbWlncmFudDsKK+S4jeWQieWIqSA8IG9taW5vdXM7CivnvZYgPCBrd3VreWVsOwor5pyA5L2O6ZmQ5bqmIDwgbWluaW11bTsKK+e8siA8IHRvXC1yZWVsOwor55mC5rOVIDwgdGhlcmFweTsKK+WJtemAoOiAhSA8IGNyZWF0b3I7CivlsJbpoIIgPCBzdGVlcGxlOwor6IW56YOoIDwgYWJkb21lbjsKK+eZvOaUviA8IHByb3ZpZGU7CivnmIvni4IgPCBtYWRuZXNzOwor57eBIDwgdG9cLWpvaW47Civmj5Lmm7IgPCBlcGlzb2RlOwor57WqIDwgbWF0dGluZzsKK+WFi+S7gOexs+eIviA8IGthc2htaXI7CivlpbPoi7Hpm4QgPCBoZXJvaW5lOwor5rS75YuV5oi/5bGLIDwgdHJhaWxlcjsKK+S7gOS4gOWlieeNuyA8IHRpdGhpbmc7CivlhafnvoXnlaIgPCBuYWlyb2JpOwor5oqX6K2wIDwgcHJvdGVzdDsKK+W4tuWLlSA8IHRvXC1zcHVyOwor5YWs5byPIDwgZm9ybXVsYTsKK+eskyA8IHRvXC1jb21iOwor5aKo6KW/5ZOl5Lq6IDwgbWV4aWNhbjsKK+eBveWusyA8IHNjb3VyZ2U7CivoirHmnZ8gPCBib3VxdWV0Owor5bey5amaIDwgbWFycmllZDsKK+eXkueXkiA8IHRvXC1pdGNoOwor5L2/6auY6LK0IDwgZGlnbmlmeTsKK+S+i+mhjCA8IGV4YW1wbGU7CivnqIcgPCB0b1wtYmluZDsKK+WEquaWvCA8IHN1cnBhc3M7CivntYLkuo4gPCBhdFwtbGFzdDsKK+WKoOamruiAgOaWvCA8IGdsb3JpZnk7CivnpoIgPCB0b1wtcHJheTsKK+S/oeiztCA8IGNvbmZpZGU7CivoiqXmnKsgPCBtdXN0YXJkOwor5Zyw6LOq5a24IDwgZ2VvbG9neTsKK+WGt+WNuyA8IGNvb2xpbmc7CivmoYzpnaIgPCBkZXNrdG9wOwor5bGl6KGMIDwgZnVsZmlsbDsKK+eah+W4nSA8IGVtcGVyb3I7CivnooMgPCBcKHN0b25lXCk7Civnr4fnq6AgPCB3cml0aW5nOwor55+fIDwgJydcLWxhbmNlOwor556vIDwgdG9cLXBlZXA7CivkuI3lubLkuI3mt6ggPCB1bmNsZWFuOwor5a+s6ZeKIDwgZXhwYW5zZTsKK+mXnOmNteipniA8IGtleXdvcmQ7CivlhaflrrkgPCBjb250ZW50Owor55y9IDwgdG9cLWdhemU7CivnnLQgPCBkYXp6bGVkOwor5LiJ5L2N5LiA6auUIDwgdHJpbml0eTsKK+WCsueEtiA8IGxvZnRpbHk7Civlt7Tmnb7nrqEgPCBiYXNzb29uOwor5Zug54K6IDwgYmVjYXVzZTsKK+aoteWkqyA8IHdvb2RtYW47CivluIPpmobov6ogPCBidXJ1bmRpOwor55WQIDwgdG9cLWZpbGw7Civoh6rnp4EgPCBzZWxmaXNoOwor5YW45Z6LIDwgdHlwaWNhbDsKK+iMtuWFtyA8IHRlYVwtc2V0Owor55SUIDwgYmlnXC1qYXI7Civns4rloZcgPCBtdWRkbGVkOwor55ObIDwgc2NhcHRyZTsKK+eSuiA8IGFcLWNyYWNrOwor55KKIDwgcmVkZGlzaDsKK+iSmeWkp+aLvyA8IG1vbnRhbmE7CivnjbkgPCBhXC1ob3VuZDsKK+eCreeWveeXhSA8IGFudGhyYXg7CivnjZogPCBzcGFuaWVsOwor5YWs55uK5LqL5qWtIDwgdXRpbGl0eTsKK+evgOebriA8IHByb2dyYW07Civpkb3nn7MgPCBkaWFtb25kOwor5ZyS5p6XIDwgZ2FyZGVuczsKK+eLiSA8IGZveFwtY3ViOwor6LuM5p6VIDwgc2xlZXBlcjsKK+iLseWciyA8IGVuZ2xhbmQ7Civpppbpo74gPCBqZXdlbHJ5Owor5pel5bi45bel5L2cIDwgcm91dGluZTsKK+W3peWMoCA8IGFydGlzYW47Civnhq8gPCBieVwtZmlyZTsKK+S/mOiZnCA8IGNhcHRpdmU7CivnhbsgPCB0b1wtd2FybTsKK+iHgueroCA8IGFybWJhbmQ7Civoh6rnlLEgPCBmcmVlZG9tOwor5Y+y5a+G54m5IDwgc2NobWl0dDsKK+eBtCA8IHRvXC1iYWtlOwor5biD5LiBIDwgcHVkZGluZzsKK+eAuSA8IHRvXC1ib2lsOwor5ZyN5pS7IDwgYmVzaWVnZTsKK+WWnemHhyA8IGFjY2xhaW07CivmvpAgPCBiaWxsb3dzOwor55Sf6IKyIDwgdG9cLWJlYXI7CivotaTpgZMgPCBlcXVhdG9yOwor5r2sIDwgYVwtcmFwaWQ7Civlr4zlo6vpgJogPCBmdWppdHN1Owor55S35oCn6Kaq5bGsIDwga2luc21hbjsKK+a6piA8IGRyaXp6bGU7CivploDlj6MgPCBkb29yd2F5Owor54O56Kq/6KGTIDwgY29va2VyeTsKK+iyqOeJqemBi+i8uCA8IGZyZWlnaHQ7CivmkI3lgrcgPCB0b1wtaGFybTsKK+a4vCA8IHJpcHBsZXM7CivmuKcgPCB0b1wtZHJvcDsKK+i6q+adkCA8IHN0YXR1cmU7Civoi7Hli4cgPCBicmF2ZXJ5Owor5Y2w5Yi36ICFIDwgcHJpbnRlcjsKK+a3t+WQiOeJqSA8IG1peHR1cmU7CivpmL/lhYvlgKsgPCBhY2hlcm9uOwor5ra2IDwgdG9cLXNwaXQ7CivmtpIgPCBtZWFuZGVyOwor5rS4IDwgc3BhcmtsZTsKK+eJmeenkemGq+eUnyA8IGRlbnRpc3Q7CivllY/poYwgPCBwcm9ibGVtOwor5a+E6YCBIDwgdG9cLXNlbmQ7Civlgr7mlpwgPCBpbmNsaW5lOwor6YOh5rK75a6J5a6YIDwgc2hlcmlmZjsKK+eEoeelnuirliA8IGF0aGVpc207CivmsYsgPCB0b1wtcG91cjsKK+S4jeWLleaQliA8IHVubW92ZWQ7CivmsLwgPCB0b1wtc2luazsKK+WbsOaTviA8IHBlcnBsZXg7CivmsJUgPCBwcm90aXVtOwor5oq85rKZ6b6NIDwgYWJzYWxvbTsKK+aKhOe2siA8IGRpcFwtbmV0Owor5q2cIDwgZnVyaW91czsKK+WatOatoyA8IHN0ZXJubHk7CivlgqznnKDmm7IgPCBsdWxsYWJ5Owor5Lqe5Lyv5ouJ572VIDwgYWJyYWhhbTsKK+aIluiosSA8IHBlcmhhcHM7Civmpq7lubggPCBob25vcmVkOwor5YWL576F5Zyw5LqeIDwgY3JvYXRpYTsKK+mmrOi5rCA8IHN0aXJydXA7CivmqYYgPCB3aXRob3V0Owor5ZWG6ZqKIDwgY2FyYXZhbjsKK+eJm+mgreeKrCA8IGJ1bGxkb2c7CivlrbjpmaIgPCBjb2xsZWdlOwor5YO15bGAIDwgaW1wYXNzZTsKK+aNleaJiyA8IGNhdGNoZXI7CivmpqIgPCBhXC1mcmFtZTsKK+aKleelqCA8IHRvXC12b3RlOwor5L2/6a2U5rOVIDwgY29uanVyZTsKK+WFqOelnueBjOazqCA8IHJhcHR1cmU7CivmpJcgPCBcKHBsYW50XCk7CivlronkuYPov5EgPCBhbmFsZ2luOwor6JuL55m96LOqIDwgcHJvdGVpbjsKK+WwiOenkemZouagoSA8IGFjYWRlbXk7CivooYzmnY4gPCBsdWdnYWdlOwor5o+Q5YiwIDwgbWVudGlvbjsKK+mpleefnCA8IGhhdWdodHk7Civoip3liqDlk6UgPCBjaGljYWdvOwor5YWr5bi26a2aIDwgb2N0b3B1czsKK+a0l+iho+W6lyA8IGxhdW5kcnk7Civkv6HnrrEgPCBtYWlsYm94Owor5p68IDwgYVwtdGFibGU7CivmnpMgPCBjYXBpdGFsOwor5p24IDwgdG9cLWtpbGw7CivmnL4gPCB0b1wtYnVtcDsKK+amguW/tSA8IGNvbmNlcHQ7CivkuI3lvpfli4EgPCBhd2t3YXJkOwor5Zyw5Z2AIDwgYWRkcmVzczsKK+WtlOmbgCA8IHBlYWNvY2s7Civmu5HnqL0gPCBjb21pY2FsOwor5pW+IDwgdG9cLXJ1bGU7Civmla8gPCB0b1wtZGVmeTsKK+aVnCA8IGZpbGxcLXVwOwor5L2O6Kq/IDwgbG93XC1rZXk7Civmk7ggPCB0b1wtaG9sZDsKK+aMieaZgiA8IG9uXC10aW1lOwor5pGgIDwgZ2VuZXJhbDsKK+mVt+mguOm5vyA8IGdpcmFmZmU7CivmiZPnrpcgPCB0b1wtcGxhbjsKK+aOryA8IG9wcHJlc3M7CivlsI/ntYQgPCBhXC1ncm91cDsKK+aMjSA8IGNvbGxhdGU7CivlpbPpq5jpn7MgPCBzb3ByYW5vOwor5oyJ5pGpIDwgbWFzc2FnZTsKK+aKiCA8IHRvXC1iZW5kOwor5om9IDwgdG9cLW1vdmU7Civos6rph48gPCBxdWFsaXR5Owor56+A5pelIDwgaG9saWRheTsKK+avlOWIqeaZgiA8IGJlbGdpdW07CivkuI3oqr/lkowgPCBkaXNjb3JkOwor5oewIDwgYmVcLWdsYWQ7Civmh6sgPCBlbnJhZ2VkOwor5pyJ6Zmw5b2xIDwgc2hhZG93eTsKK+aHmyA8IGFsYXJtZWQ7Civmh4UgPCBiYXNoZnVsOwor55Si54mpIDwgcHJvZHVjdDsKK+S+m+e1piA8IGZ1cm5pc2g7Civmg6MgPCBvdmVyYWxsOwor5oOHIDwgYmVcLWtpbmQ7CivoiJ7lvIQgPCB0b1wtd2F2ZTsKK+aMh+mXnOevgCA8IGtudWNrbGU7CivmiZPnoo4gPCBzaGF0dGVyOwor5oGJIDwgbWVhbmluZzsKK+WcqOWJjSA8IGZvcndhcmQ7CivntaboiIfos4fmoLwgPCBxdWFsaWZ5Owor5LiD5pyI5LiJ5Y2B6JmfIDwganVseVwtMzA7CivmnY7ptawgPCBsaVwtcGVuZzsKK+WuieiorSA8IGluc3RhbGw7Civosqzpm6MgPCBjZW5zdXJlOwor5bO25ba8IDwgaXNsYW5kczsKK+afpeiqvyA8IGlucXVpcnk7Civkvr/nm4YgPCBiZWRcLXBhbjsKK+igseaDkSA8IGVuY2hhbnQ7Civlu4wgPCB1bmljb3JuOwor5ruy5ryPIDwgc2VlcGFnZTsKK+W5s+W4uOaXpSA8IHdlZWtkYXk7Civoga/pgqYgPCBmZWRlcmFsOwor5ryC5rOKIDwgZHJpZnRlcjsKK+WEsuiXj+WupCA8IHN0b3JhZ2U7CivlmbjmlbggPCB0b25uYWdlOwor5YyI54mZ5YipIDwgaHVuZ2FyeTsKK+WVhuiojiA8IGRpc2N1c3M7Civpppnoj5wgPCBwYXJzbGV5Owor5rW36a6uIDwgc2VhZm9vZDsKK+iHpeaIvyA8IGJlZHJvb207CivljbDlnLDlronpgqMgPCBpbmRpYW5hOwor5YOl5YCWIDwgbHVja2lseTsKK+WCs+WWriA8IGxlYWZsZXQ7CivkuI3lvpfogIznn6UgPCB1bmtub3duOwor5aKT6KqM6YqYIDwgZXBpdGFwaDsKK+mmmeiFuCA8IHNhdXNhZ2U7CivoiKrnqbrlhazlj7ggPCBhaXJsaW5lOwor5aqeIDwgYXRcLWVhc2U7CivotbDnp4EgPCBzbXVnZ2xlOwor5pyJ6ICQ5LmF5YqbIDwgZHVyYWJsZTsKK+S4gOacg+WFkiA8IGFcLXdoaWxlOwor5LiN6YGT5b63IDwgaW1tb3JhbDsKK+m+jeidpiA8IGxvYnN0ZXI7Civng4/lhYvomK0gPCB1a3JhaW5lOwor5aSq6Zm96buR5a2QIDwgc3Vuc3BvdDsKK+WcqOWupOWFpyA8IGluZG9vcnM7CivlpKMgPCBhXC1kcmVhbTsKK+WjnSA8IGFcLW1vdW5kOwor5biM5Lyv5L6G5pu4IDwgaGVicmV3czsKK+WhkyA8IHBsYXN0ZXI7CivmpLDlrZAgPCBjb2NvbnV0Owor6ZGS5oiSIDwgd2FybmluZzsKK+WghCA8IHBhcmFwZXQ7Civku6PoqZ4gPCBwcm9ub3VuOwor5Z+XIDwgYVwtd2hhcmY7CivkuLnpuqUgPCBkZW5tYXJrOwor5LiN6Zui5YWSIDwgbm90XC1iYWQ7CivlnJUgPCBsaWJyYXJ5Owor5ZyCIDwgcGlnXC1zdHk7Civnlavlu4ogPCBnYWxsZXJ5Owor55m96JuL55m9IDwgYWxidW1pbjsKK+WaiiA8IHRvXC1wYW50Owor5Li75bit6Ie6IDwgcm9zdHJ1bTsKK+ihneWKmyA8IGltcHVsc2U7CivpoZ7lm7rphocgPCBzdGVyb2lkOwor5ZalIDwgYVwtcGxhY2U7Civlroznvo4gPCBwZXJmZWN0Owor5bGV5pybIDwgb3V0bG9vazsKK+ipleitsOacgyA8IGNvdW5jaWw7CivmnInluIzmnJsgPCBob3BlZnVsOwor56uK55ucIDwgYnVyZ2xhcjsKK+WUniA8IHRvXC1nYXNwOwor5ZSFIDwgYVwtc291bmQ7Civlrrbnpr0gPCBwb3VsdHJ5Owor5YK35a+S55eHIDwgdHlwaG9pZDsKK+WSviA8IGFcLW5vaXNlOwor5ZKJIDwgYW5cLWVjaG87CivlpafmnpfljLnlhYsgPCBvbHltcGljOwor5Yiw6YKj6KOhIDwgdGhpdGhlcjsKK+WRvyA8IHRvXC15YXduOwor5ZGsIDwgdG9cLXJlc3Q7Civkup7liKnmoZHpgqMgPCBhcml6b25hOwor5ZGMIDwgdG9cLWNhbGw7CivnqbrnvLogPCB2YWNhbmN5Owor5pyA6auYIDwgaGlnaGVzdDsKK+eVq+WutiA8IHBhaW50ZXI7CivppIrogIHph5EgPCBwZW5zaW9uOwor55ay5YueIDwgZmF0aWd1ZTsKK+WNsiA8IGVtaW5lbnQ7CivljKcgPCBhXC10cnVuazsKK+S4jem9kiA8IGRlc3Bpc2U7CivmipXmiYsgPCBwaXRjaGVyOwor5rW36YKKIDwgc2Vhc2lkZTsKK+iTi+S4luWkquS/nSA8IGdlc3RhcG87CivlmYHlv4MgPCB0b1wtaGF0ZTsKK+Wwi+axgiA8IHRvXC1zZWVrOwor5YS2IDwgdmFsaWFudDsKK+Wwj+WGiuWtkCA8IGJvb2tsZXQ7CivlhKYgPCBtaWxsaW5nOwor5YSkIDwgb25cLWR1dHk7CivmnKrmraboo50gPCB1bmFybWVkOwor5Zm05aKoIDwgaW5rXC1qZXQ7CivmnInpmZAgPCBsaW1pdGVkOwor5omY5p62IDwgYnJhY2tldDsKK+S+hyA8IGFcLWNsYXNzOwor5LyAIDwgZXhjaXRlZDsKK+acgOmVtyA8IGxvbmdlc3Q7Civkub8gPCB0b1wtY3VyZTsKK+S5rCA8IHRvXC1oYW5nOwor5omz5omLIDwgc3Bhbm5lcjsKK+S+v+aWvCA8IGVhc3lcLXRvOwor5rW36LGaIDwgZG9scGhpbjsKK+aEm+ittyA8IGNoZXJpc2g7CivktqkgPCB0b1wtZ25hdzsKK+aEm+Wxi+WPiueDjyA8IGxvdmVcLW1lOwor56+A5YSJIDwgdGhyaWZ0eTsKK+elnumrlCA8IGdvZGhlYWQ7CivktKcgPCB2ZW5pc29uOwor5Lit6ZaTIDwgYmV0d2l4dDsKK+SynSA8IHBvbWZyZXQ7CivkspQgPCBhXC13aGFsZTsKK+aEn+imuiA8IHRvXC1mZWVsOwor5pyJ5bmr5YqpIDwgaGVscGZ1bDsKK+SxiSA8IHRoZVwtZWVsOwor5LCeIDwgdG9cLWNvb2s7CivlraTnq4sgPCBpc29sYXRlOwor5K68IDwgcGllYmFsZDsKK+eVtuWJjSA8IGN1cnJlbnQ7CivkrqYgPCB1bnRhbWVkOwor5bGk5a2QIDwgc3RyYXR1bTsKK+StoCA8IGFcLXNuYWNrOwor55So5a2XIDwgZGljdGlvbjsKK+SsjiA8IGhvdFwtYWlyOwor6Zi/5ouJ5LyvIDwgYXJhYmlhbjsKK+SrmCA8IGhlYWx0aHk7Civkv4PmiJAgPCBwcm9jdXJlOwor5a6J55O/IDwgYW1wb3VsZTsKK+SqoyA8IHNtYXNoZWQ7Civoh7PkuIogPCBzdXByZW1lOwor5KmzIDwgdGFubmluZzsKK+SplCA8IHRoZVwtaGVtOwor5Lul6aas5YWn5YipIDwgZW1hbnVlbDsKK+SoniA8IHRvXC1yYWluOwor5LiA6aCFIDwgYW5cLWl0ZW07CivkqIIgPCBhXC1jaGljazsKK+SnnyA8IHRvXC1za2luOwor6Zi/5ouJ5LiBIDwgYWxhZGRpbjsKK+S4jeimuuWvnyA8IHVuYXdhcmU7CivmuIXnnJ8gPCBpc2xhbWljOwor5KaLIDwgdG9cLWdyb3c7CivllpzmraEgPCB0b1wtbGlrZTsKK+eUmOiXjeiPnCA8IGNhYmJhZ2U7CivkpJ8gPCBhXC1zcGFkZTsKK+S4iumWgCA8IGRyb3BcLWluOwor5KK2IDwgYVwtc3RhdGU7CivlrbjnlJ8gPCBzdHVkZW50Owor5aWz5L+u6YGTIDwgY29udmVudDsKK+SimSA8IHRvXC1ydWluOwor542O6YeRIDwgcHJlbWl1bTsKK+imj+WKg+S6uuWToSA8IHBsYW5uZXI7CivkoLwgPCB0b1wtd2VhcjsKK+S6uue+pCA8IGFcLWNyb3dkOwor5YGH5L2/IDwgc3VwcG9zZTsKK+eZvOePvueJqSA8IGZpbmRpbmc7Civmm7TpgaAgPCBmYXJ0aGVyOwor5Zyo5LiL5pa5IDwgYmVuZWF0aDsKK+mpmuWahyA8IGhvcnJpZnk7CivknJYgPCB0b1wtdGFsazsKK+SciSA8IHRvXC1qZXN0Owor5Ju3IDwgdG9cLW9iZXk7Civkm7AgPCBza2V0Y2h5Owor6JK45rG95qmfIDwgc3RlYW1lcjsKK+SasSA8IGhvbmVzdHk7Civkmq4gPCB0aGlja2VyOwor5JqXIDwgdG9cLWxpZnQ7Civkmo8gPCB0b1wtbG92ZTsKK+S4memFriA8IGFjZXRvbmU7CivlsI/ngJHluIMgPCBjYXNjYWRlOwor5oWI5ZaE5qmf5qeLIDwgY2hhcml0eTsKK+eUt+aAp+WwiueosSA8IGVzcXVpcmU7CivkmLEgPCB3ZWFsdGh5Owor5JigIDwgZ3JlYXZlczsKK+SYnSA8IGFcLXNoaXJ0Owor56ys5Y2B5LqMIDwgdHdlbGZ0aDsKK+S4jeS4ieS4jeWbmyA8IGR1YmlvdXM7CivmiY3lubIgPCBhYmlsaXR5Owor6aaZ5rC0IDwgcGVyZnVtZTsKK+mmmeawoyA8IGluY2Vuc2U7CivklpogPCBhXC10aWdlcjsKK+aIkOaWhyA8IHdyaXR0ZW47CivklLogPCBoZWFkaW5nOwor5ZCQ6ZyyIDwgdG9cLXRlbGw7CivmnKrmsbrlrpogPCBwZW5kaW5nOwor6LaV5b+rIDwgYXRcLW9uY2U7CivmnIPorbAgPCBtZWV0aW5nOwor6aOb6Ii5IDwgYWlyc2hpcDsKK+abvOiwtyA8IGJhbmdrb2s7CivkkrYgPCB0aGVcLXNreTsKK+WIl+eOi+e0gOS4iyA8IDJcLWtpbmdzOwor5YiX546L57SA5LiKIDwgMVwta2luZ3M7CivkkacgPCBhXC1zaG9ydDsKK+SQvyA8IGdpenphcmQ7CivkkLcgPCBwYXVuY2h5Owor5JC0IDwgbHVtYmFnbzsKK+SQqyA8IG9iZXNpdHk7Civkj5YgPCBhXC13b3VuZDsKK+SPhyA8IHRvXC1oZWFyOwor5I6pIDwgdG9cLXRpbGw7Civml4XpgYrogIUgPCB0b3VyaXN0Owor5Li76KmeIDwgc3ViamVjdDsKK+ayiem7mCA8IHNpbGVuY2U7CivmiZPlrZcgPCB0b1wtdHlwZTsKK+WPl+iol+S6uiA8IHRydXN0ZWU7CivkjJggPCB0b1wta25pdDsKK+SMlCA8IHRvXC1zb2FrOwor5IyBIDwgYVwtcGxlYXQ7Civki44gPCB0b1wtbWVuZDsKK+SKnyA8IGFkb3JuZWQ7CivkipggPCBhXC1ncmFpbjsKK+SJoiA8IGFcLXNpZXZlOwor5ImOIDwgYVwtY292ZXI7CivkiKwgPCBhXC1zbWFsbDsKK+WutOacgyA8IGJhbnF1ZXQ7Civkh5QgPCBhdHJvcGh5Owor5IeNIDwgdG9cLXdhaXQ7CivpoJjpmoogPCBjYXB0YWluOwor5pyI6J2VIDwgZWNsaXBzZTsKK+SEjyA8IGJpemFycmU7CivlgInkv4MgPCBodXJyaWVkOwor6IKl5rKDIDwgZmVydGlsZTsKK+SCgCA8IHRvXC13aW5rOwor5Y+s6ZuGIDwgY29udmVuZTsKK+SBmyA8IHRvXC1sb29rOwor56We6LehIDwgbWlyYWNsZTsKK+S9v+W+kiA8IGFwb3N0bGU7CivjvrcgPCB0b1wtYWNoZTsKK+O+oCA8IGFcLWZldmVyOwor476fIDwgcmVsYXBzZTsKK+O+mCA8IGFpbG1lbnQ7CivjvpUgPCBhXC1jaGlsbDsKK+O+hiA8IGVjZHlzaXM7CivjvoUgPCBkZWZlY3RzOwor6Zm46LuN5LiK5qChIDwgY29sb25lbDsKK+O9liA8IGFcLWh1bWFuOwor47y8IDwgYVwtbGFkbGU7CivjvLcgPCBhXC1iYXNpbjsKK+iEueWkpyA8IHN3b2xsZW47CivjvJcgPCBhXC1icmljazsKK+iZm+ani+Wwj+iqqiA8IGZpY3Rpb247Civlr7blr7YgPCBkYXJsaW5nOwor47qyIDwgYnV0dG9uczsKK+O6iiA8IGFcLWJlYXN0Owor47meIDwgdG9cLWJhcms7CivjuZsgPCBhXC10YW1lZDsKK+etieWAmSA8IHdhaXRpbmc7Civot4zliLAgPCB0b1wtZmFsbDsKK+aHuuaClCA8IGNvbmZlc3M7Civjt5MgPCBhXC10b3JjaDsKK+O3iSA8IHRvXC1pcm9uOwor5oi25aSWIDwgb3V0ZG9vcjsKK+efs+WNl+WxrCA8IGhlYXRoZXI7Civlr6zlrrkgPCBsZW5pZW50Owor47WSIDwgYm9pbGluZzsKK+O1jCA8IHRvXC1mbG93Owor47WFIDwgYVwtcml2ZXI7Civog73lubkgPCBjYXBhYmxlOwor5LiN6KaLIDwgbm90XC1zZWU7CivjtIcgPCB0b1wtd2FkZTsKK+OzrSA8IHNwaXR0bGU7Civjs6wgPCBhblwtZWRkeTsKK+S9j+aIvyA8IGhvdXNpbmc7Civjs5kgPCBhXC1icm9vazsKK+aIsOWjqyA8IGZpZ2h0ZXI7CivjsoIgPCB0b1wtcHVzaDsKK+OxliA8IHRvXC1zdGF5Owor47GMIDwgdG9cLXRha2U7Civnv6Hnv6AgPCBlbWVyYWxkOwor5bCK5Zq0IDwgZGlnbml0eTsKK+iWhOeDpOmkhSA8IHBhbmNha2U7Civjr5MgPCBhXC1jb3VjaDsKK+OvkCA8IHR1YnVsYXI7Civjr4sgPCBhXC1jaGVzdDsKK+WvhuW6piA8IGRlbnNpdHk7CivjrpsgPCBhXC1zcG9vbjsKK+OtqiA8IGFcLXNocnViOwor5q+S6I2J5ZCNIDwgaGVtbG9jazsKK+OrtCA8IHRvXC1yb2FyOwor46udIDwgdGhlXC1zdW47CivlnLDlubPnt5ogPCBob3Jpem9uOwor5bCW5Y+rIDwgc2NyZWVjaDsKK+OpsCA8IHRvXC1zdGFiOwor5aW56Ieq5bexIDwgaGVyc2VsZjsKK+WuieaSqyA8IHBsYWNhdGU7CivjqLcgPCB0b1wtd2lwZTsKK+mggumHnSA8IHRoaW1ibGU7CivjqLAgPCB0b1wtdHVybjsKK+aguOWtkCA8IG51Y2xlYXI7CivkvJHmnIMgPCBhZGpvdXJuOwor6LKi54mpIDwgdHJpYnV0ZTsKK+OnuyA8IGFcLXRob3JuOwor46a5IDwgYVwtc3BlYXI7Civjpq0gPCB0b1wtcGl0eTsKK+mjm+ebpCA8IGZyaXNiZWU7Civmt5jmsKMgPCBuYXVnaHR5Owor46WSIDwgY29ycnVwdDsKK+mojuWFtSA8IGNhdmFscnk7CivjpLogPCBibHVycmVkOwor46O3IDwgd2Fsa2luZzsKK+efruWjr+e0oCA8IGN5Y29jZWw7CivlpJbnp5HmiYvooZMgPCBzdXJnZXJ5Owor46G4IDwgYVwtaG91c2U7CivnrKzkuIMgPCBzZXZlbnRoOwor46GoIDwgYVwtbGFiZWw7CivjoZggPCBzY3JlZW5zOwor46GTIDwgZHJhd2VyczsKK+OhgiA8IHJlbWFpbnM7Civkv4Pkvb8gPCBzcHVyXC1vbjsKK+miqOeusSA8IGJlbGxvd3M7Civjn6cgPCBhXC1jbGlmZjsKK+a1tOebhiA8IGJhdGh0dWI7CivjnrogPCBhXC10cmliZTsKK+e+pOiKsSA8IGJsb3Nzb207CivlkIToibLlkITmqKMgPCBkaXZlcnNlOwor5L2b576F6KOh6YGUIDwgZmxvcmlkYTsKK+mmrOWtkCA8IGNvbW1vZGU7CivotorljZcgPCB2aWV0bmFtOwor5ZCR5L2V6JmVIDwgd2hpdGhlcjsKK+OckyA8IHdvbWFubHk7CivnqbrmiLAgPCBhaXJcLXdhcjsKK+aIkOWciCA8IHdyZWF0aGU7CivjnIcgPCB1bmhhcHB5Owor5oeJ5b6XIDwgZGVzZXJ2ZTsKK+aIsOWLnSA8IHByZXZhaWw7CivjmqIgPCBhXC1zbGF2ZTsKK+S4jeiLnyA8IG5vdFwtbGF4Owor57GD5p2/55CDIDwgcmVib3VuZDsKK+S9j+WuvyA8IGxvZGdpbmc7CivjmZQgPCBhXC1mZW5jZTsKK+OZjyA8IGNhdmVybnM7CivororpgbcgPCBjaGFuZ2VzOwor45ipIDwgdG9cLW1hdGU7Civjl4MgPCB0aGVcLWxpcDsKK+WwgeWFpSA8IGluY2xvc2U7CivppqzlhYvmgJ3kuLvnvqkgPCBtYXJ4aXNtOwor45WfIDwgdG9cLXNpZ247CivjlZ4gPCBhXC1icnVzaDsKK+OUvyA8IGFcLXRhbGx5Owor45ShIDwgZ3JlYXRseTsKK+OUgiA8IHRvXC1wYXJlOwor45OwIDwgdG9cLXJpdmU7Civjk58gPCB0b1wtcGVlbDsKK+OStCA8IHRvXC1jb21lOwor45KmIDwgcHVwcGV0czsKK+iBveW+l+imiyA8IGF1ZGlibGU7Civph47ospMgPCB3aWxkY2F0Owor45KVIDwgdW55aWVsZDsKK+OSkSA8IGdyb3dcLXVwOwor5Luj5pu/IDwgaW5zdGVhZDsKK+ORhSA8IHRvXC1tYWtlOwor5qGI5Y23IDwgcmVjb3JkczsKK+eZvuaFleWkpyA8IGJlcm11ZGE7Civku6PmlbggPCBhbGdlYnJhOwor5pyJ5qKd57SLIDwgc3RyaXBlZDsKK+acqOeTpiA8IHNoaW5nbGU7CivmiJDlip8gPCBzdWNjZXNzOwor5a6J5oGv5pelIDwgc2FiYmF0aDsKK+S4reeriyA8IG5ldXRyYWw7CivkuJbntIAgPCBjZW50dXJ5Owor5L2O5ZywIDwgbG93bGFuZDsKK+a1t+a+oSA8IHNlYXdlZWQ7Civku4rmmZogPCB0b25pZ2h0Owor6KOB57SZ5qmfIDwgdHJpbW1lcjsKK+WTgOaxgiA8IGVudHJlYXQ7CivmtJfnpq4gPCBiYXB0aXNtOwor5aaT6ZmiIDwgYnJvdGhlbDsKK+S4jeetiSA8IHRvXC12YXJ5Owor5YWs54i15aSr5Lq6IDwgZHVjaGVzczsKK+WQjee+qSA8IHRpdHVsYXI7CivmtojmpbUgPCBwYXNzaXZlOwor5rC06YqAIDwgbWVyY3VyeTsKK+aaiOiIuSA8IHNlYXNpY2s7Civmh7fmlbXmhI8gPCBob3N0aWxlOwor6IG35belIDwgd29ya2VyczsKK+Wtn+WtkCA8IG1lbmNpdXM7Civlrpjlj7ggPCBsYXdzdWl0Owor6Z2e6ZujIDwgcmVwcm9vZjsKK+awuOmBoCA8IGZvcmV2ZXI7CivphazovIkgPCBwYXlsb2FkOwor6IG95a+rIDwgZGljdGF0ZTsKK+iZp+aQjSA8IGRlZmljaXQ7CivpurvnhakgPCB0cm91YmxlOwor6Zi/54i+5be05bC85LqeIDwgYWxiYW5pYTsKK+W9vOW+l+W+jOabuCA8IDJcLXBldGVyOwor5Ym156uL6ICFIDwgZm91bmRlcjsKK+e2reS7luWRvSA8IHZpdGFtaW47CivorY/oqpogPCBjeW5pY2FsOwor56K66KqNIDwgY29uZmlybTsKK+ijnee9rueJqSA8IGZpeHR1cmU7CivnjovmrIogPCByb3lhbHR5Owor54675Yip57at5LqeIDwgYm9saXZpYTsKK+S8geWcliA8IGF0dGVtcHQ7Civlj4PorbDlk6EgPCBzZW5hdG9yOwor576F55ukIDwgY29tcGFzczsKK+aYn+acn+S6jCA8IHR1ZXNkYXk7Civnj77lr6YgPCByZWFsaXR5Owor6LOq5ZywIDwgdGV4dHVyZTsKK+mfs+aoguacgyA8IGNvbmNlcnQ7CivotIrliqkgPCBzcG9uc29yOwor5b+g6KqgIDwgZGV2b3RlZDsKK+mrlOiCsuWgtCA8IHN0YWRpdW07CivphK3ph40gPCBzZXJpb3VzOwor5Y2w5YOP5rex5Yi7IDwgaW1wcmVzczsKK+WNiumAlCA8IGhhbGZ3YXk7Civlpb3ovYkgPCBpbXByb3ZlOwor5oOh5qONIDwgdmlsbGFpbjsKK+aEm+eIvuiYrSA8IGlyZWxhbmQ7CivpgIPkuqHogIUgPCBydW5hd2F5Owor6by75a2UIDwgbm9zdHJpbDsKK+WTgOaAnSA8IHBlbnNpdmU7CivmjIflsI7mlZnmjoggPCBhZHZpc2VyOwor54yW542XIDwgcmFtcGFudDsKK+aenOWckiA8IG9yY2hhcmQ7Civml4HpgoogPCBsYXRlcmFsOwor5ZKv5ZKv56yRIDwgY2h1Y2tsZTsKK+eUn+eJqeWtuCA8IGJpb2xvZ3k7Civpo5vlvYggPCBtaXNzaWxlOwor6IG95YqbIDwgaGVhcmluZzsKK+S9v+aGpOaFqCA8IG91dHJhZ2U7Civml6XoqowgPCBqb3VybmFsOwor5bGF5L2P5pa8IDwgaW5oYWJpdDsKK+WklumdoiA8IG91dHNpZGU7Civpm4Tpu4MgPCByZWFsZ2FyOwor5pyD5pyfIDwgc2Vzc2lvbjsKK+S4jeazlSA8IGxhd2xlc3M7CivkuI3nn6XkvZXmlYUgPCBzb21laG93Owor5reh5YWJIDwgc2hpbW1lcjsKK+W9jOizveS6niA8IG1lc3NpYWg7CivmspLnlJrpurwgPCBub3RoaW5nOwor5aSn6YyvIDwgYmx1bmRlcjsKK+iAgeW5tCA8IGVsZGVybHk7CivorornoawgPCBzdGlmZmVuOwor5rW35bK4IDwgY29hc3RhbDsKK+eFmeeBsOe8uCA8IGFzaHRyYXk7CivnpKbniakgPCBtaW5lcmFsOwor6JGX6Zm4IDwgbGFuZGluZzsKK+S4jeWcqOS6hiA8IGJlXC1kZWFkOwor57Sh57mU5ZOBIDwgdGV4dGlsZTsKK+enkeWtuCA8IHNjaWVuY2U7CivmtrLljJYgPCBsaXF1aWZ5Owor6Zi/5Y+45Yy55p6XIDwgYXNwaXJpbjsKK+aWueiogCA8IGRpYWxlY3Q7Civlj6TniakgPCBhbnRpcXVlOwor5pel6JC9IDwgc3VuZG93bjsKK+mHkeWFiemWg+eIjSA8IHNwYW5nbGU7Civpg7XosrsgPCBwb3N0YWdlOwor5puW5pinIDwgaWxsaWNpdDsKK+S4jeS6uumBkyA8IGluaHVtYW47Civpm4Tpm54gPCByb29zdGVyOwor5pS+6ZaLIDwgdW5sZWFzaDsKK+iiq+aykuaUtiA8IGZvcmZlaXQ7CivlpbTpmrjliLbluqYgPCBzbGF2ZXJ5Owor576o5oWVIDwgZW52aW91czsKK+i3r+ilv+W8lyA8IGx1Y2lmZXI7CivljJblrbjlrrYgPCBjaGVtaXN0Owor6aSF5Lm+IDwgYmlzY3VpdDsKK+acieWusyA8IGhhcm1mdWw7CivphZLnsr4gPCBhbGNvaG9sOwor56S+5pyDIDwgc29jaWV0eTsKK+aatOaUvyA8IHR5cmFubnk7CivnjovlnIsgPCBraW5nZG9tOwor5piT56KOIDwgYnJpdHRsZTsKK+mHmOatuyA8IGNydWNpZnk7CivoqJPnt7TogIUgPCB0cmFpbmVyOwor5riF5r2U5ZmoIDwgY2xlYW5lcjsKK+mhp+W/jCA8IHNjcnVwbGU7CivmhIjlkIggPCB0b1wtaGVhbDsKK+ips+i/sCA8IHJlY291bnQ7CivpoZjmhI8gPCB0b1wtd2lzaDsKK+aEm+W+t+eOsiA8IGFkZWxpbmU7Civov6vliIfmgKcgPCB1cmdlbmN5Owor546p5YWSIDwgdG9cLXBsYXk7CivlpbPmvJTlk6EgPCBhY3RyZXNzOwor5Lit5a2QIDwgbmV1dHJvbjsKK+mHkeapmCA8IGt1bXF1YXQ7CivpnIDopoEgPCB0b1wtbmVlZDsKK+aClOaBqCA8IHJlbW9yc2U7CivmnIDlpKcgPCBiaWdnZXN0Owor5pyA5aSaIDwgYXRcLW1vc3Q7CivogJXkvZwgPCBmYXJtaW5nOwor5oCl5rWBIDwgdG9ycmVudDsKK+W3tOavlOWAqyA8IGJhYnlsb247CivogIHlhawgPCBodXNiYW5kOwor5ayw5YWS5pyfIDwgaW5mYW5jeTsKK+eZvuiRieeqlyA8IHNodXR0ZXI7Civpgb/lvYjlnZEgPCBmb3hob2xlOwor6aas5L6G6KW/5LqeIDwgbWFsYXNpYTsKK+WxseiDoeahg+acqCA8IGhpY2tvcnk7CivohKvooaPmnI0gPCB1bmRyZXNzOwor5LmP5ZGzIDwgdGVkaW91czsKK/ChnLEgPCB0b1wtZW52eTsKK+WRvOWQuCA8IGJyZWF0aGU7CivnjJzluqYgPCBzdXJtaXNlOwor5ZG75ZCfIDwgdG9cLW1vYW47CivlvbzlvpfliY3mm7ggPCAxXC1wZXRlcjsKK+mBtOmBuCA8IHRvXC1waWNrOwor5aWz56WeIDwgZ29kZGVzczsKK+aDs+WDjyA8IGltYWdpbmU7Civmpa3ppJjogIUgPCBhbWF0ZXVyOwor5ZCM5b+XIDwgY29tcmFkZTsKK+aykuaciSA8IGhhdmVuJyd0Owor5Y2X55OcIDwgcHVtcGtpbjsKK+iuiuaaliA8IHdhcm1pbmc7Civph5HlrZfloZQgPCBweXJhbWlkOwor5rCj55CDIDwgYmFsbG9vbjsKK+eLguaatCA8IGZyYW50aWM7Civku5boh6rlt7EgPCBoaW1zZWxmOwor5ZCK5bqKIDwgaGFtbW9jazsKK+WPiuaZgiA8IGluXC10aW1lOwor6YOo572yIDwgZGlzcG9zZTsKK+S5n+S4jSA8IG5laXRoZXI7Civlj6/mhpAgPCBwaXRpZnVsOwor5aWz55qHIDwgZW1wcmVzczsKK+WumuWxheiAhSA8IHNldHRsZXI7CivkuIDlpKkgPCBvbmVcLWRheTsKK+S6jOWNgeWkmiA8IG92ZXJcLTIwOwor5pS56KOdIDwgcmVtb2RlbDsKK+mYv+mjmyA8IGhvb2RsdW07Civlj6/mgaggPCBoYXRlZnVsOwor5pS255WZ5omAIDwgYmFycmFjazsKK+azleWumCA8IGFcLWp1ZGdlOwor576O5ZyLIDwgYW1lcmljYTsKK+acgOS9syA8IG9wdGltdW07Civlub3pnYggPCBzcGVjdGVyOwor6YGL6L2JIDwgdG9cLXdvcms7CivpgYvovLggPCB0cmFuc2l0Owor5oKy5YqHIDwgdHJhZ2VkeTsKK+abuOS/oSA8IGVwaXN0bGU7Civlio3ooZMgPCBmZW5jaW5nOwor5bCx5a+i5pmC6ZaTIDwgYmVkdGltZTsKK+e3kuiogCA8IHByZWZhY2U7CivoqofogIAgPCBwcm91ZGx5Owor57y65bitIDwgYWJzZW5jZTsKK+S4gOWPoyA8IHJlYWRpbHk7CivkuIPljYEgPCBzZXZlbnR5Owor54eV6bql57KlIDwgb2F0bWVhbDsKK+aWsOeUnyA8IG5ld2Jvcm47CivkuI3lho0gPCBub1wtbW9yZTsKK+S6nuaLieW3tOmmrCA8IGFsYWJhbWE7CivkuJbkv5cgPCBwcm9mYW5lOwor5bm06ZGRIDwgYWxtYW5hYzsKK+avlOeVqyA8IGdlc3R1cmU7Civph4/lrZAgPCBxdWFudHVtOwor54y/5Lq6IDwgYXBlXC1tYW47Civlj6vlpb0gPCBhcHBsYXVkOwor6Ieq6KGM6LuKIDwgYmljeWNsZTsKK+mAkOmAgCA8IHJlcHVsc2U7CivmsJHmlbjoqJggPCBudW1iZXJzOwor5bCP5paR6bueIDwgc3BlY2tsZTsKK+azqOWFpSA8IHBvdXJcLWluOwor5q2j576pIDwganVzdGljZTsKK+S9v+WOreeFqSA8IGRpc2d1c3Q7Civoib7ov6rnlJ8gPCBhZGRpc29uOwor5pivIDwgaW5kZWVkOwor6L+rIDwgY29lcmNlOwor5b+cIDwgc2hvdWxkOwor5b+YIDwgZm9yZ2V0Owor5Zu9IDwgbmF0aW9uOwor6L+UIDwgcmV0dXJuOwor5b+NIDwgZW5kdXJlOwor6L+EIDwgZXh0ZW5kOwor5b+FIDwgc3VyZWx5Owor5Ye6IDwgZ29cLW91dDsKK+i+vyA8IGZvbGxvdzsKK+eevCA8IGV5ZWxpZDsKK+W+lyA8IG9idGFpbjsKK+i+tyA8IHNtb290aDsKK+W+tCA8IHN1bW1vbjsKK+W+syA8IHZpcnR1ZTsKK+eerSA8IGJyaWdodDsKK+i+myA8IGJpdHRlcjsKK+W+kCA8IHNsb3dseTsKK+W+jCA8IGJlaGluZDsKK+W+iiA8IGxpbmdlcjsKK+W9sSA8IHNoYWRvdzsKK+S6iyA8IGFmZmFpcjsKK+i9nyA8IHJ1bWJsZTsKK+W9iCA8IHBlbGxldDsKK+S4uyA8IG1hc3RlcjsKK+W8tyA8IHN0cm9uZzsKK+W8myA8IGxvb3NlbjsKK+awkSA8IHBlb3BsZTsKK+ecjCA8IGNvdW50eTsKK+eOsCA8IGFwcGVhcjsKK+WIhiA8IGRpdmlkZTsKK+S6myA8IGxpdHRsZTsKK+ebuCA8IG11dHVhbDsKK+eQhiA8IHJlYXNvbjsKK+ebiiA8IHByb2ZpdDsKK+ivnSA8IHNwZWVjaDsKK+WQkSA8IHRvd2FyZDsKK+WumiA8IGRlY2lkZTsKK+W6qyA8IGFybW9yeTsKK+W6piA8IGRlZ3JlZTsKK+W6lSA8IGJvdHRvbTsKK+aJkyA8IHN0cmlrZTsKK+S9jSA8IHRocm9uZTsKK+W6jyA8IHNlcmllczsKK+W5vCA8IGluZmFudDsKK+W5siA8IG9wcG9zZTsKK+WGhSA8IGluc2lkZTsKK+eZqiA8IHNwYXNtczsKK+WKoCA8IGFkZFwtdG87CivljJYgPCBjaGFuZ2U7CivnmYwgPCBjYW5jZXI7CivluLggPCBjb21tb247CivouLAgPCBleGNlZWQ7CivluIIgPCBtYXJrZXQ7CivmiY0gPCB0YWxlbnQ7CivkvY8gPCByZXNpZGU7CivlkZggPCBtZW1iZXI7Civlt7sgPCBzY3JvbGw7CivmgKcgPCBuYXR1cmU7CivmiqUgPCByZXBvcnQ7CivnpZ4gPCBzcGlyaXQ7CivmlbAgPCBudW1iZXI7Civot6EgPCBzZWFyY2g7Civljp8gPCBzb3VyY2U7Civlt6EgPCBwYXRyb2w7Civlt50gPCBzdHJlYW07CivnloogPCByZXBlYXQ7Civns7sgPCBzeXN0ZW07CivnlaAgPCBnYXJkZW47CivorrAgPCByZWNvcmQ7CivmnpcgPCBmb3Jlc3Q7Civnu58gPCBnb3Zlcm47CivlrZcgPCBsZXR0ZXI7Civls7YgPCBpc2xhbmQ7Civos6ogPCBtYXR0ZXI7CivorrogPCBkZWJhdGU7CivosrAgPCBib3Jyb3c7CivmjIcgPCBmaW5nZXI7CivosqEgPCB3ZWFsdGg7CivoirEgPCBmbG93ZXI7CivlsaQgPCBzdG9yZXk7CivmnaEgPCBjbGF1c2U7CivlsY0gPCBjb3Jwc2U7CivlsYAgPCBidXJlYXU7Civlip4gPCBtYW5hZ2U7CivosLcgPCB2YWxsZXk7Civln44gPCBjYXN0bGU7CivniLYgPCBmYXRoZXI7CivlsI4gPCBkaXJlY3Q7Civlr6cgPCByZXBvc2U7Civpu4QgPCB5ZWxsb3c7CivlvrcgPCBldGhpY3M7CivlrrMgPCBpbmp1cmU7Civlrq4gPCBwYWxhY2U7Civlj4sgPCBmcmllbmQ7CivlroggPCBkZWZlbmQ7CivoroMgPCBwcmFpc2U7CivpmYUgPCBib3JkZXI7CivljZUgPCBzaW5nbGU7CivlraQgPCBvcnBoYW47CivmoKEgPCBzY2hvb2w7CivnjYQgPCBwcmlzb247CivnjL4gPCBjcmFmdHk7CivorJkgPCBodW1ibGU7CivorI4gPCByaWRkbGU7Civni7kgPCBuYXJyb3c7Civmr40gPCBtb3RoZXI7Civni5kgPCBhblwtYXBlOwor5ZuiIDwgc3BoZXJlOwor54uCIDwgaW5zYW5lOwor6KqyIDwgbGVzc29uOwor5oubIDwgYmVja29uOwor5YW0IDwgdGhyaXZlOwor57qmIDwgdHJlYXR5Owor6KmpIDwgcG9ldHJ5Owor57udIDwgdG9cLWN1dDsKK+mAiSA8IGNob29zZTsKK+aYnyA8IGFcLXN0YXI7CivoqLQgPCBhY2N1c2U7CivniJsgPCByb3R0ZW47CivmtoggPCB2YW5pc2g7Civnh60gPCBjYW5kbGU7Civlp6sgPCBiZWF1dHk7CivmnaggPCB3aWxsb3c7CivkuKUgPCBzdHJpY3Q7CivnhoogPCBhXC1iZWFyOwor5aaEIDwgYWJzdXJkOwor6IuPIDwgcmV2aXZlOwor562UIDwgYW5zd2VyOwor5aWuIDwgc3RyaXZlOwor54WpIDwgYm90aGVyOwor6KWkIDwgcmFnZ2VkOwor5L6bIDwgc3VwcGx5Owor5aSuIDwgY2VudGVyOwor5YiXIDwgYVwtbGluZTsKK+eEpiA8IGJ1cm5lZDsKK+m+mSA8IGRyYWdvbjsKK+WkjyA8IHN1bW1lcjsKK+aYpSA8IHNwcmluZzsKK+aAgSA8IG1hbm5lcjsKK+iiliA8IHNsZWV2ZTsKK+iiiyA8IHBvY2tldDsKK+WJryA8IGFzc2lzdDsKK+WknyA8IGVub3VnaDsKK+ihlyA8IHN0cmVldDsKK+a/gCA8IGFyb3VzZTsKK+mTtiA8IHNpbHZlcjsKK+mYtSA8IGNvbHVtbjsKK+eugCA8IHNpbXBsZTsKK+avkiA8IHBvaXNvbjsKK+a5liA8IGFcLWxha2U7CivonYkgPCBjaWNhZGE7Civov70gPCBwdXJzdWU7CivpvKwgPCB3ZWFzZWw7Civnu5wgPCBlbm1lc2g7CivmvKAgPCBkZXNlcnQ7CivonJggPCBzcGlkZXI7CivljaAgPCBkaXZpbmU7CivlnJMgPCBjaXJjbGU7CivlhbAgPCBvcmNoaWQ7CivpmLYgPCBzdGFpcnM7Civpu5kgPCBzaWxlbnQ7CivkvZsgPCBidWRkaGE7CivmlYggPCByZXN1bHQ7CivmlLsgPCBhdHRhY2s7CivnrZYgPCBzY2hlbWU7CivogqEgPCB0aGlnaHM7CivojqsgPCBkb1wtbm90Owor5ZiYIDwgZXhoYWxlOwor56qXIDwgd2luZG93Owor5re7IDwgYXBwZW5kOwor5re3IDwgdG9cLW1peDsKK+m3siA8IGNvbmRvcjsKK+WNmiA8IGdhbWJsZTsKK+iXpCA8IHJhdHRhbjsKK+aZuiA8IHdpc2RvbTsKK+aKlyA8IHJlc2lzdDsKK+WWsCA8IHRvXC1lYXQ7CivllqcgPCBsaXZlbHk7CivllokgPCB0aHJvYXQ7CivmtZogPCBkcmVkZ2U7CivpgIMgPCBlc2NhcGU7CivllLggPCByZWNpdGU7CivpnZYgPCBwYWNpZnk7Civnp5ggPCBzZWNyZXQ7CivmrLIgPCBkZXNpcmU7CivlvoEgPCBpbnZhZGU7Civnp4sgPCBhdXR1bW47CivlkLggPCBpbmhhbGU7Civps6kgPCBwaWdlb247CivmgrIgPCBzb3Jyb3c7CivmoaUgPCBicmlkZ2U7CivokrsgPCBydXNoZXM7CivokaEgPCBncmFwZXM7CivmsZogPCBmaWx0aHk7Civog7ggPCBicmVhc3Q7Civpgq4gPCBwb3N0YWw7CivlkJ0gPCBzdGluZ3k7CivmqKogPCBhY3Jvc3M7CivokI4gPCB3aXRoZXI7Civoj6sgPCBjZWxlcnk7Civmi6kgPCBzZWxlY3Q7CivmgaggPCBoYXRyZWQ7Civnq7kgPCBiYW1ib287Civoj5MgPCBmcnVpdHM7Civml5cgPCBiYW5uZXI7CivmrrsgPCBjYXNpbmc7CivnqLMgPCBzdGFibGU7Civov7kgPCB0cmFjZXM7CivpkoggPCBuZWVkbGU7Civmq7sgPCBjaGVycnk7CivlvIMgPCByZWplY3Q7CivntKsgPCBwdXJwbGU7Civmi5QgPCB1cHJvb3Q7Civoip0gPCBzZXNhbWU7CivotY8gPCByZXdhcmQ7Civmj5IgPCBpbnNlcnQ7CivpqaIgPCBkb25rZXk7CivlhqwgPCB3aW50ZXI7CivmiakgPCBleHBhbmQ7CivmqZggPCBvcmFuZ2U7CivpgLwgPCBjb21wZWw7CivpqLcgPCBoYXJhc3M7CivliLkgPCB0ZW1wbGU7CivplZwgPCBtaXJyb3I7CivmqJkgPCBhXC1tYXJrOwor6IiMIDwgdG9uZ3VlOwor5qe9IDwgdHJvdWdoOwor6Ie8IDwgbW9ydGFyOwor5LyPIDwgY3JvdWNoOwor5oSkIDwgcmVzZW50Owor5L+EIDwgc3VkZGVuOwor5YeNIDwgZnJlZXplOwor5qeMIDwgaGFtbWVyOwor6Zi7IDwgaW1wZWRlOwor6aWRIDwgc3RhcnZlOwor6IWRIDwgYm93ZWxzOwor5YWOIDwgcmFiYml0Owor6IWLIDwgYXJtcGl0Owor5YSYIDwgdXRtb3N0Owor5bSHIDwgZXN0ZWVtOwor6aSTIDwgaHVuZ3J5Owor5qO6IDwgY29mZmluOwor57KJIDwgcG93ZGVyOwor55u+IDwgc2hpZWxkOwor6aOiIDwgaHVuZ2VyOwor5o2VIDwgYXJyZXN0Owor5qKvIDwgbGFkZGVyOwor6IGYIDwgZW5nYWdlOwor5qKDIDwgYVwtY2x1YjsKK+mhqyA8IHNoaXZlcjsKK+mXtyA8IGdsb29teTsKK+aClCA8IHJlcGVudDsKK+mCgCA8IGludml0ZTsKK+mgrCA8IGNoZWVrczsKK+aCoyA8IHN1ZmZlcjsKK+S4kCA8IGJlZ2dhcjsKK+afsSA8IHBpbGxhcjsKK+afmiA8IHBvbWVsbzsKK+afhCA8IGhhbmRsZTsKK+S+riA8IGluc3VsdDsKK+mTnCA8IGNvcHBlcjsKK+aelSA8IHBpbGxvdzsKK+adtSA8IHBlc3RsZTsKK+aJryA8IHJpcFwtdXA7CivotosgPCBoYXN0ZW47CivkuLIgPCBzdHJpbmc7Civpm7IgPCBjbG91ZHM7Civpm4wgPCBmZW1hbGU7Civpm4cgPCBlbXBsb3k7CivpmoUgPCBjb3JuZXI7CivnuZUgPCByZXBhaXI7Civmo4kgPCBjb3R0b247CivnuJsgPCB0b1wtdGllOwor6LCFIDwgZXhjdXNlOwor5ZGIIDwgc3VibWl0Owor57eaIDwgdGhyZWFkOwor5pW3IDwgc3ByZWFkOwor6IS+IDwgc3BsZWVuOwor57SzIDwgZ2lyZGxlOwor6bmwIDwgZmFsY29uOwor5oSaIDwgc3R1cGlkOwor57OeIDwgbWFudXJlOwor57KnIDwgdG9pbGV0Owor5o6hIDwgZ2F0aGVyOwor5biVIDwgdHVyYmFuOwor5LirIDwgZm9ya2VkOwor5ouQIDwga2lkbmFwOwor5YCqIDwgZmVlYmxlOwor6YyQIDwgZ2ltbGV0Owor56+uIDwgYmFza2V0Owor5L6EIDwgbmVwaGV3Owor5Y+JIDwgY3JvdGNoOwor5oCWIDwgdGVycm9yOwor6aKBIDwgY29uZmVyOwor5ZKVIDwgbXVtYmxlOwor6Ii1IDwgcnVkZGVyOwor5oOpIDwgcHVuaXNoOwor5ZKWIDwgY29mZmVlOwor5rezIDwgaG9uZXN0Owor54y0IDwgbW9ua2V5Owor6ZyJIDwgbWlsZGV3Owor5oK8IDwgZ3JpZXZlOwor6YCNIDwgcmFtYmxlOwor6ICNIDwgZnJvbGljOwor5o2GIDwgdGllXC11cDsKK+mBiiA8IHdhbmRlcjsKK+W7vyA8IHR3ZW50eTsKK+iFuyA8IGdyZWFzeTsKK+e8hiA8IGhhd3NlcjsKK+mekSA8IHRhdGFyczsKK+aFtyA8IGFyZGVudDsKK+evtyA8IGF3bmluZzsKK+iNhiA8IHRob3JuczsKK+iGjyA8IGdyZWFzZTsKK+mejSA8IHNhZGRsZTsKK+edrCA8IG5vdGljZTsKK+e7pSA8IHNvb3RoZTsKK+awpyA8IG94eWdlbjsKK+WptyA8IHByZXR0eTsKK+WHvyA8IGNoaXNlbDsKK+W3qyA8IHdpemFyZDsKK+iZviA8IHNocmltcDsKK+S8tiA8IGxvbmVseTsKK+akkiA8IHBlcHBlcjsKK+aPliA8IHNhbHV0ZTsKK+WGiSA8IHRlbmRlcjsKK+i4sSA8IHN0cm9sbDsKK+eMrCA8IHZ1bGdhcjsKK+ikgiA8IGphY2tldDsKK+ezmSA8IGNvYXJzZTsKK+mXuCA8IHNsdWljZTsKK+mikyA8IHJ1aW5lZDsKK+WxiSA8IGRyYXdlcjsKK+WIgSA8IHRyaWNreTsKK+a0vCA8IGhvbGxvdzsKK+iSnCA8IGdhcmxpYzsKK+a4oyA8IHJlZnVzZTsKK+aFkSA8IGFmcmFpZDsKK+W/jyA8IHJlZ3JldDsKK+eiviA8IHJvbGxlcjsKK+eWmSA8IHBpbXBsZTsKK+a8iSA8IGZpbHRlcjsKK+mapyA8IHR1bm5lbDsKK+mFpSA8IGJ1dHRlcjsKK+mSriA8IGJ1dHRvbjsKK+a8sSA8IGdhcmdsZTsKK+eblCA8IGhlbG1ldDsKK+ejiyA8IHBvbGlzaDsKK+iViSA8IGJhbmFuYTsKK+eXsCA8IHBobGVnbTsKK+e+gSA8IGhhbHRlcjsKK+ivjyA8IGRlY3JlZTsKK+mdtiA8IHRhcmdldDsKK+mFnSA8IGxpcXVvcjsKK+S6tSA8IHNsaWdodDsKK+iygiA8IG1hcnRlbjsKK+iBhiA8IGxpc3RlbjsKK+mfrCA8IHNoZWF0aDsKK+m5iiA8IG1hZ3BpZTsKK+WNhSA8IHRoaXJ0eTsKK+eisyA8IGNhcmJvbjsKK+ehqyA8IHN1bGZ1cjsKK+mVsCA8IHNpY2tsZTsKK+a2jiA8IHNhbGl2YTsKK+WjlSA8IHRyZW5jaDsKK+mUmiA8IGFuY2hvcjsKK+mSoCA8IHNvZGl1bTsKK+edvyA8IHNocmV3ZDsKK+iOuiA8IG9yaW9sZTsKK+iDryA8IHBlbHZpczsKK+i3uyA8IGFzY2VuZDsKK+mzliA8IHR1cnRsZTsKK+iFvCA8IG1vZGVzdDsKK+WokyA8IGNvbXBseTsKK+WIjiA8IGJlaGVhZDsKK+i5mSA8IHVyZ2VudDsKK+iDmiA8IGVtYnJ5bzsKK+iNlCA8IGxpY2hlZTsKK+mUtSA8IHRpbmtsZTsKK+iMpyA8IGNvY29vbjsKK+ifkiA8IHB5dGhvbjsKK+m5gyA8IGN1Y2tvbzsKK+eNlyA8IHVucnVseTsKK+iSryA8IGFcLXJ1c2g7Civmso8gPCBpbmZ1c2U7Civlmo8gPCBzbmVlemU7CivnoL4gPCBncmF2ZWw7CivkvZ8gPCBhXC1uYW1lOwor6IycIDwgbWFkZGVyOwor5omIIDwgZXNjb3J0Owor5ZKbIDwgZW5qb2luOwor5rOXIDwgbXVjb3VzOwor6ZS5IDwgc2hvdmVsOwor6bmXIDwgb3NwcmV5Owor5YShIDwgcHVwcGV0Owor6J6CIDwgbWFudGlzOwor6IuTIDwgZnVuZ3VzOwor5Y+1IDwgY2Fubm90Owor5a+uIDwgc2hhbnR5Owor54q3IDwgZmllcmNlOwor5rKxIDwgcml2ZXJzOwor55ahIDwgdWxjZXJzOwor5b6VIDwgaW5kdWNlOwor6aqbIDwgZ2FsbG9wOwor5b6JIDwgd29uZGVyOwor6LCqIDwgY2hhcmdlOwor5L+aIDwgcnVzdGljOwor5L+qIDwgc3BvdXNlOwor6Ie+IDwgbW9tZW50Owor5ay0IDwgdG9cLXdpbjsKK+eDqSA8IHJhZ291dDsKK+mTpCA8IGluZ290czsKK+iMgSA8IHNwcm91dDsKK+iIoiA8IHNhbXBhbjsKK+einCA8IGdyaXR0eTsKK+WDrSA8IGFzc3VtZTsKK+eimCA8IGlvZGluZTsKK+eDryA8IGFsa2VuZTsKK+WbvyA8IHBlblwtdXA7Civlm6sgPCBlbnRpcmU7CivplY0gPCBuaWNrZWw7CivmqZAgPCBhXC1zYWNrOwor5p23IDwgbG9xdWF0Owor6IGSIDwgY2xhbW9yOwor576vIDwgd2V0aGVyOwor56ejIDwgZm9kZGVyOwor5qi9IDwgZ29ibGV0Owor54SWIDwgc2ltbWVyOwor6L2zIDwgcHVsbGV5Owor6ZWtIDwgcmFkaXVtOwor5q6EIDwgdG9cLWVuZDsKK+ivsCA8IGluZm9ybTsKK+iOhSA8IGF0dGVuZDsKK+iuqyA8IGZpbmlzaDsKK+a3rCA8IHRlbXBlcjsKK+WYrCA8IHRvXC1sYXA7Civng7cgPCBhbGthbmU7Civom44gPCBveXN0ZXI7CivnhLEgPCBmbGFtZXM7CivonKUgPCBsaXphcmQ7CivokbogPCB0aGF0Y2g7Civmgb0gPCBkZXZpc2U7Civok78gPCBjbG92ZXI7CivnmIwgPCBzZXZlcmU7CivllrEgPCBncmFtbWU7CivpkrQgPCBjb2JhbHQ7CivosokgPCBiYWRnZXI7CivonIkgPCBtYXlmbHk7CivpspEgPCBzYWxtb247CivlqIggPCBsb3ZlbHk7CivojaggPCBuZXR0bGU7Civnq6YgPCByZXZlcmU7Civni5IgPCBiYWJvb247CivomLwgPCBtaWxsZXQ7CivojLQgPCBmZW5uZWw7CivpsqYgPCBtaW5ub3c7CivmuIwgPCBzdHJhaW47CivpmJogPCBnbGFuY2U7Civnj5AgPCBlbmFtZWw7CivpnZsgPCBpbmRpZ287Civpu6cgPCBhXC1kYXJrOwor6KCTIDwgbWlkZ2VzOwor5qm8IDwgY2l0cnVzOwor6a2NIDwgZGVtb25zOwor57+KIDwgZmx5aW5nOwor6ZWPIDwgZGlzdGlsOwor6IO8IDwgY2FsbHVzOwor54qPIDwgeWFrXC1veDsKK+eimiA8IHN1YnVyYjsKK+iFrSA8IHBhbGF0ZTsKK+mznyA8IGJhcmJlbDsKK+augiA8IHRvXC1kaWU7CivnrZogPCB3aWNrZXI7Civnlp0gPCBoZXJuaWE7CivpqoAgPCBhblwtb2xkOwor6JKXIDwgXChoZXJiXCk7Civoj58gPCBkb2RkZXI7CivpmYkgPCBkZWZpbGU7CivnlqAgPCBhXC1zb3JlOwor5pewIDwgc3Vuc2V0Owor6IGNIDwgZWFyd2F4Owor6ZSHIDwgb3NtaXVtOwor6ZKhIDwgYmFyaXVtOwor6KW7IDwgYVwtbG9vcDsKK+mTkiA8IGVyYml1bTsKK+mTiCA8IGNlcml1bTsKK+aktCA8IHBvcGxhcjsKK+iLoSA8IGJhcmxleTsKK+iIhCA8IGFcLXNob2U7CivpuKsgPCB0aHJ1c2g7CivplJQgPCBjdXJpdW07Civpk58gPCBpbmRpdW07CivnnI0gPCBzdW5rZW47CivmobcgPCByYWZ0ZXI7Civoi4QgPCBiZW56eWw7CivpmZQgPCBhXC1zdGVwOwor6aq2IDwgY29jY3l4Owor6bK7IDwgbXVsbGV0Owor6J6oIDwgaW5zZWN0Owor6Jm8IDwgYVwtZmxlYTsKK+eYlSA8IGFzdGhtYTsKK+mVmCA8IHRyb3dlbDsKK+iDgiA8IGFyc2luZTsKK+iPlCA8IHR1cm5pcDsKK+W+nuatpCA8IHRoZW5jZTsKK+mzpee+vSA8IHBpbmlvbjsKK+e3qOiAhSA8IGVkaXRvcjsKK+iqpOeUqCA8IG1pc3VzZTsKK+W8t+ebnCA8IGJhbmRpdDsKK+ipqeevhyA8IHBzYWxtczsKK+aWueazlSA8IG1ldGhvZDsKK+aUv+etliA8IHBvbGljeTsKK+WTuuS5s+WLleeJqSA8IG1hbW1hbDsKK+S8iuWwvOS8iuW+tyA8IGFlbmVpZDsKK+itpuWvnyA8IHBvbGljZTsKK+Wjq+W4q+iomCA8IGp1ZGdlczsKK+eZvOmbu+apnyA8IGR5bmFtbzsKK+e9quS6uiA8IHNpbm5lcjsKK+Wkp+eCriA8IGNhbm5vbjsKK+Wkp+eBvSA8IHBsYWd1ZTsKK+WhnueIvue2reS6niA8IHNlcmJpYTsKK+WQieS7liA8IGd1aXRhcjsKK+avgOa7hSA8IHBlcmlzaDsKK+ephuaWr+aelyA8IG11c2xpbTsKK+mWi+i7iuS6uiA8IGRyaXZlcjsKK+W4tumHpiA8IGJ1Y2tsZTsKK+WLleeJqSA8IGFuaW1hbDsKK+S9v++5jeixkOWvjCA8IGVucmljaDsKK+e3iue4riA8IHJlZHVjZTsKK+eHkueEpiA8IHNjb3JjaDsKK+mgmOS6iyA8IGNvbnN1bDsKK+WYtuWVnuiBsiA8IGhvYXJzZTsKK+Wkp+a1qiA8IGJpbGxvdzsKK+edoeiRlyA8IGFzbGVlcDsKK+awo+aBryA8IGJyZWF0aDsKK+aTsee9riA8IHNoZWx2ZTsKK+aVtOa9lCA8IG5lYXRseTsKK+W8iueXhSA8IG1hbGFkeTsKK+mBuOelqCA8IGFcLXZvdGU7Civlib3nq4ogPCBwaXJhdGU7Civnt6jnorwgPCBjb2Rpbmc7Civmi5TlsJblhZIgPCB0aXB0b3A7Civlt6jpoK0gPCB0eWNvb247CivpoILkuosgPCB1c2VmdWw7CivmkpXoo4IgPCBtYW5nbGU7CivpmYTokZcgPCBhZGhlcmU7CivkvIrlsLzkup7mlq8gPCBhZW5lYXM7CivmraPnlbYgPCB0aW1lbHk7CivmgJLlkLwgPCBiZWxsb3c7CivlpYfmma8gPCBtYXJ2ZWw7CivniYjlvI8gPCBmb3JtYXQ7CivpqYXpgJDlh7rlooMgPCBkZXBvcnQ7CivpgaDnqIsgPCByZW1vdGU7CivljYrlvpEgPCByYWRpdXM7CivpmY3oh6ggPCBiZWZhbGw7CivnrqHnkIbkurogPCBrZWVwZXI7CivphpzljJYgPCBkZWZhbWU7Civni4LkurogPCBtYWRtYW47CivlpKfmobYgPCBiYXJyZWw7CivmnInkurrmg4UgPCBodW1hbmU7Civopb/ntIXmn78gPCB0b21hdG87CivnnIvoposgPCB0b1wtc2VlOwor6Kej6ISrIDwgcmVsaWVmOwor56C05pWXIDwgYmVhdGVuOwor5peX5bmfIDwgZW5zaWduOwor5rC05aO6IDwga2V0dGxlOwor5q6W5rCRIDwgY29sb255Owor5peL5b6LIDwgbWVsb2R5Owor5YuV5qmfIDwgbW90aXZlOwor5Y6t5YCmIDwgZHJlYXJ5Owor5YWn6Zm4IDwgaW5sYW5kOwor5bel6YyiIDwgc2FsYXJ5Owor5YWs6ZaLIDwgcHVibGljOwor5Y6f5YWIIDwgZm9ybWVyOwor5YWr6ZaLIDwgb2N0YXZvOwor54aK54aKIDwgcmFnaW5nOwor55+t5q2MIDwgYmFsbGFkOwor5Y2a5aOrIDwgZG9jdG9yOwor5b+g5ZGKIDwgYWR2aWNlOwor56Cy5omLIDwgZ3VubmVyOwor5aSa5pifIDwgc3RhcnJ5Owor5b6L5birIDwgbGF3eWVyOwor5YWr5YiG6Z+z56ymIDwgcXVhdmVyOwor5b6u5aaZIDwgc3VidGxlOwor5aW95aW9IDwgbmljZWx5Owor57i95pivIDwgYWx3YXlzOwor6ZaL6Y6WIDwgdW5sb2NrOwor5q2l5risIDwgcGFjaW5nOwor54ef5pWRIDwgcmVzY3VlOwor5pWs5pyNIDwgYWRtaXJlOwor5aSp56u654mh5Li5IDwgZGFobGlhOwor5b6X5a6cIDwgcHJvcGVyOwor5Yid57SaIDwganVuaW9yOwor6LyV6ayGIDwgZ2VudGxlOwor54iQ5bqKIDwgaGVhcnRoOwor6KyK5aCxIDwgdG9cLWxpZTsKK+eiuuS/nSA8IGVuc3VyZTsKK+mbouWlh+aciei2oyA8IHF1YWludDsKK+mBi+eUqCA8IHRvXC11c2U7CivntbLntaggPCB2ZWx2ZXQ7CivniYjlnJYgPCBkb21haW47CivmlL/mrIogPCByZWdpbWU7CivlvojlsJEgPCBzZWxkb207CivniLXlo6sgPCBrbmlnaHQ7Civopa/oo6EgPCBsaW5pbmc7CivorJnlkowgPCBtZWVrbHk7CivntrLnkIMgPCB0ZW5uaXM7CivojZLolaogPCBiYXJyZW47Civpm7vlvbHpmaIgPCBjaW5lbWE7CivlpKnmgKcgPCBpbmJvcm47CivlsI/lppbnsr4gPCBnb2JsaW47Civph5HntbLpm4AgPCBjYW5hcnk7CivmrZDmtLIgPCBldXJvcGU7Civli77lvJUgPCBzZWR1Y2U7CivnhrHmnJsgPCBhc3BpcmU7Civnsr7pgbggPCBjaG9zZW47Civoqpjmi5AgPCBhYmR1Y3Q7CivoqqDmh4cgPCBoZWFydHk7Civli5XlkI3oqZ4gPCBnZXJ1bmQ7CivpgJrnn6UgPCBub3RpZnk7CivliLrnl5sgPCB0aW5nbGU7CivlvrXlj6wgPCBlbmxpc3Q7CivmraHmqIIgPCBnYWlldHk7Civnq7bos73ogIUgPCBwbGF5ZXI7CivlhYjpi5IgPCBoZXJhbGQ7Civnt6jlubTlj7IgPCBhbm5hbHM7CivmlbXmhI8gPCBlbm1pdHk7Civlt7Topb8gPCBicmF6aWw7CivnvLrmsKfnl4cgPCBhbm94aWE7Civnianku7YgPCBvYmplY3Q7CivljbjkuIsgPCB1bmxvYWQ7CivljIXlrrkgPCBwYXJkb247Civoqpjmg5EgPCBlbnRpY2U7CivniafkurogPCBwYXN0b3I7CivlpKflnLDmtJ4gPCBjYXZlcm47CivlpJblvaIgPCBmaWd1cmU7CivpmqjmqZ8gPCByYW5kb207CivlhbXoroogPCBtdXRpbnk7CivnmbzlmI7lmI7ogbIgPCByYXR0bGU7CivmlY/mjbcgPCBuaW1ibGU7CivniZvku5QgPCBjb3dib3k7Civmj5DphpIgPCByZW1pbmQ7Civop7jniq8gPCBvZmZlbmQ7Civlparlj5YgPCBzbmF0Y2g7CivlpKvlrZAgPCBwZWRhbnQ7CivlpKrlrZAgPCBwcmluY2U7CivnnJ/nqbogPCB2YWN1XDptOwor5q665a6zIDwgbXVyZGVyOwor5q6Y5b+NIDwgYmxvb2R5Owor6ZaS6KmxIDwgZ29zc2lwOwor6L6t6IG3IDwgcmVzaWduOwor57ea5qKdIDwgc3RyZWFrOwor5ruR57+U5qmfIDwgZ2xpZGVyOwor5b6S5YueIDwgZnV0aWxlOwor5b6X5YiwIDwgdG9cLWdldDsKK+W4jOiHmCA8IGdyZWVjZTsKK+a/uumWiyA8IHNwbGFzaDsKK+mBiuattyA8IHRyYXZlbDsKK+W+qeS7hyA8IGF2ZW5nZTsKK+aumOmkmOeJqSA8IGxpdHRlcjsKK+Wjk+aJgSA8IHNxdWFzaDsKK+ipqeaEjyA8IHBvZXRpYzsKK+aUneaUvyA8IHJlZ2VudDsKK+aomeiqniA8IHNsb2dhbjsKK+S4jeWPr+WRiuS6uiA8IGhpZGRlbjsKK+eZvOiqkyA8IHRvXC12b3c7CivmqaHohqAgPCBydWJiZXI7CivlipvotrPku6XlgZogPCBhZmZvcmQ7CivlnKjvuY3mnJ/plpMgPCBkdXJpbmc7CivlnLDpkLUgPCBzdWJ3YXk7CivljYHkuIAgPCBlbGV2ZW47Civlvp7kuosgPCBnb1wtZm9yOwor54ax5bi2IDwgdHJvcGljOwor5pyJ6LKs5Lu7IDwgbGlhYmxlOwor6Zuc5belIDwgcG9ydGVyOwor5Ye655SiIDwgb3V0cHV0Owor5aWi5L6IIDwgbHV4dXJ5Owor5o6b6YmkIDwgY291cGxlOwor57SU57K5IDwgcHVyZWx5Owor56iu5peP5Li7576pIDwgcmFjaXNtOwor5a2p5a2Q5rCjIDwgYm95aXNoOwor5bCP54md54mbIDwgaGVpZmVyOwor6LeR5q2l6ICFIDwgcnVubmVyOwor6Zyy5Ye6IDwgZXhwb3NlOwor5pSA5piHIDwgcmlzaW5nOwor6Kej5ri0IDwgcXVlbmNoOwor5q2M5omLIDwgc2luZ2VyOwor5ZCQ57as6ZueIDwgdHVya2V5Owor5beh6IiqIDwgY3J1aXNlOwor5biD57eaIDwgd2lyaW5nOwor5q2j5byPIDwgZm9ybWFsOwor5Yaw566xIDwgaWNlYm94Owor54Sh5rOVIDwgdW5hYmxlOwor6YCV5rWBIDwgcnVub2ZmOwor5aSn5ZCDIDwgZ29iYmxlOwor5q+r5LiNIDwgaGFyZGx5Owor6YGT5pWZIDwgdGFvaXNtOwor6b21IDwgdW5ldmVuOwor6Ki65omAIDwgY2xpbmljOwor6YG65oGoIDwgZ3J1ZGdlOwor6byrIDwgbWFybW90Owor6byUIDwgYVwtZHJ1bTsKK+mshumkhSA8IG11ZmZpbjsKK+WKoOW0mSA8IGdhbGxvbjsKK+m5qCA8IGFudGh1czsKK+i3qOaOpeWZqCA8IGp1bXBlcjsKK+aVmeWggiA8IGNodXJjaDsKK+m3hyA8IGNoaWNrczsKK+m2vSA8IGFcLWhhd2s7CivptrggPCBzaXNraW47CivoqZ7lsL4gPCBzdWZmaXg7CivptYAgPCBob29wb2U7CivpgLHmnJ8gPCBwZXJpb2Q7CivptKIgPCBcKGR1Y2tcKTsKK+iyoOaTlOiAhSA8IGJlYXJlcjsKK+mbtuWUriA8IHJldGFpbDsKK+m0gyA8IHNocmlrZTsKK+WcqOi7iiA8IGFib2FyZDsKK+W+kuatpeaXheihjCA8IGhpa2luZzsKK+mxjiA8IFwoZmlzaFwpOwor6bGGIDwgcG91bHBlOwor6Iy256KXIDwgdGVhY3VwOwor57ee5bi2IDwgcmliYm9uOwor5YiG5rS+IDwgYXNzaWduOwor5ZCI5ZSx5ZyYIDwgY2hvcnVzOwor6Zi75qmIIDwgdGh3YXJ0Owor5pCW57GDIDwgY3JhZGxlOwor6aCY5bCO6ICFIDwgbGVhZGVyOwor6JGX5ZCNIDwgZmFtb3VzOwor5by35YuiIDwgbWlnaHR5Owor57Su54efIDwgZW5jYW1wOwor6amrIDwgaG9yc2VzOwor5Ye55rSeIDwgY2F2aXR5Owor5byx5YyWIDwgd2Vha2VuOwor6Zmw5oi2IDwgdmFnaW5hOwor5pOK5pWXIDwgZGVmZWF0Owor6YCy5o6lIDwgYWNjZXNzOwor6aa/IDwgYW5cLWFzczsKK+e1leawoyA8IGV4cGlyZTsKK+absuajjeeQgyA8IGhvY2tleTsKK+iovOWvpiA8IHZlcmlmeTsKK+mkpCA8IGluY2l0ZTsKK+mAo+aTiiA8IGJhdHRlcjsKK+aVmeWNgCA8IHBhcmlzaDsKK+eBq+eurSA8IHJvY2tldDsKK+maseWjqyA8IGhlcm1pdDsKK+i3r+eUseWZqCA8IHJvdXRlcjsKK+efreWKjSA8IGRhZ2dlcjsKK+mhkiA8IHNvbGVtbjsKK+W8t+WBpSA8IHN0dXJkeTsKK+S4gOevgFwo6KmpXCkgPCBzdGFuemE7CivmrablmaggPCB3ZWFwb247CivpnpogPCBicmlkbGU7CivnhaTlsZEgPCBjaW5kZXI7CivlubPmnb8gPCB0YWJsZXQ7Civlh7nmp70gPCBzb2NrZXQ7CivliK7mjokgPCBzY3JhcGU7Civpq5jpm4UgPCBkYWludHk7Civpm4IgPCBcKGJpcmRcKTsKK+eItuavjeimqiA8IHBhcmVudDsKK+atoeWWnCA8IGpveWZ1bDsKK+WIhuaenSA8IGJyYW5jaDsKK+atpeWTqCA8IHNlbnRyeTsKK+WCs+mBlCA8IGNvbnZleTsKK+WMluWmneWTgSA8IG1ha2V1cDsKK+aApeS/g+iBsiA8IHBhdHRlcjsKK+mXiSA8IGN1cnZlZDsKK+ihoemHjyA8IHdlaWdodDsKK+S9v+ehrOWMliA8IGhhcmRlbjsKK+mqqOmrkyA8IG1hcnJvdzsKK+mTryA8IGNlc2l1bTsKK+aQlOeZoiA8IHRpY2tsZTsKK+mbleWDjyA8IHN0YXR1ZTsKK+mRniA8IHNvbGRlcjsKK+ato+WNiCA8IG1pZGRheTsKK+mRgCA8IGlvbml1bTsKK+mQnSA8IGFcLXBpY2s7CivpjpIgPCB0b1wtaG9lOwor5Lqk5piT6ICFIDwgZGVhbGVyOwor6Y6FIDwgdG9cLXNhdzsKK+aSq+aKsSA8IGNhcmVzczsKK+mMqSA8IHZlc3NlbDsKK+aVkeS4uyA8IHNhdmlvcjsKK+eymOeymCA8IHN0aWNreTsKK+aXpeWFp+eTpiA8IGdlbmV2YTsKK+mLmSA8IG1pc2ZpdDsKK+W3tOeIviA8IGJhbHRpYzsKK+eahOeiuiA8IHJlYWxseTsKK+mLhSA8IHppbmN1bTsKK+mBjuWksSA8IGRlZmVjdDsKK+mKgOihjOWutiA8IGJhbmtlcjsKK+akjeeJqeWtuCA8IGJvdGFueTsKK+e0gOW/teeNjiA8IHRyb3BoeTsKK+mFtCA8IGxlYXZlbjsKK+mVt+efrSA8IGxlbmd0aDsKK+W5q+aJiyA8IGhlbHBlcjsKK+WBvemAoOeahCA8IGZvcmdlZDsKK+aXheihjOijneWCmSA8IG91dGZpdDsKK+mZhOW6uCA8IHZhc3NhbDsKK+mBqeWQiCA8IHRvXC1maXQ7CivnrKzkuozmrKEgPCBzZWNvbmQ7Civpq5jpgZQgPCBhdHRhaW47CivptZ3ljbXnn7MgPCBwZWJibGU7CivmnInmsKPmtL4gPCBsb3JkbHk7CivlgrXli5nkurogPCBkZWJ0b3I7CivoirHnsokgPCBwb2xsZW47CivpgIwgPCBwbGVhc2U7Civov40gPCBmYWx0ZXI7CivovZwgPCBoZWFyc2U7Civnmb3nl7QgPCBpZGlvY3k7Civls73osLcgPCBjYW55b247CivouqcgPCBzYW5kYWw7CivooajopqogPCBjb3VzaW47Civop4Dlv7UgPCBub3Rpb247CivouKEgPCBjdXJsZWQ7Civoo4HnuKsgPCB0YWlsb3I7CivmjqHntI0gPCBhY2NlcHQ7Civoo5znqK4gPCByZXNlZWQ7CivlsI/nop/lrZAgPCBzYXVjZXI7CivosqogPCBncmVlZHk7CivlhrDmn7EgPCBpY2ljbGU7CivoiJ7ouYjlrrYgPCBkYW5jZXI7CivpmL/lp6ggPCBhdW50aWU7Civnt5rkuIogPCBvbmxpbmU7CivorYYgPCBzY3JlYW07Civoq7UgPCBtdXR0ZXI7CivpqZrpp60gPCBmcmlnaHQ7CivntKDmj48gPCBza2V0Y2g7CivplpLmt7cgPCBsb2l0ZXI7CivoqbsgPCBvcmRlcnM7CivoqZcgPCB0b1wtc3B5Owor5pGf5oqxIDwgdG9cLWh1ZzsKK+iHqui6qyA8IGl0c2VsZjsKK+mAsuWPoyA8IGltcG9ydDsKK+aOoeekpiA8IG1pbmluZzsKK+ilriA8IGNvbGxhcjsKK+aTvuS6giA8IGluZmVzdDsKK+e1kOWwviA8IGVuZGluZzsKK+mWo+aokyA8IGdhcnJldDsKK+iKseeUnyA8IHBlYW51dDsKK+iimiA8IGdyZWF2ZTsKK+mBjuS7vSA8IHVuZHVseTsKK+mpn+mbqCA8IHNob3dlcjsKK+W5g+W5lSA8IHNjcmVlbjsKK+S9v+a/lemAjyA8IGRyZW5jaDsKK+igqSA8IGFcLXRvYWQ7CivooIEgPCBsYXJ2YWU7CivlqIHlo6vlv4zphZIgPCB3aGlza3k7CivlhYnmvqQgPCBsdXN0ZXI7CivpgJ3ljrsgPCBlbGFwc2U7Civom6MgPCBiZWV0bGU7Civom4wgPCBjcmlja2U7CivlhYnmu5EgPCBnbG9zc3k7CivpgJXlkJEgPCByYWRpYWw7CivomZYgPCB0b1wtY3J5Owor5om56KmV5a62IDwgY3JpdGljOwor55u45beuIDwgZGlmZmVyOwor6JaRIDwgZ2luZ2VyOwor6Zec5b+DIDwgY2FyaW5nOwor5Zyo5rex6JmVIDwgZGVlcGx5Owor6JSUIDwgcmFkaXNoOwor6JOaIDwgb3hhbGljOwor6JKOIDwgcGluYW5lOwor5oq16YGUIDwgYXJyaXZlOwor5Yud5Yip6ICFIDwgdmljdG9yOwor5Zyw55SiIDwgZXN0YXRlOwor6YCj5a2X56ym6JmfIDwgaHlwaGVuOwor6I+GIDwganVuZ2xlOwor5bui6Zmk6LuN5YKZIDwgZGlzYXJtOwor5bGA6Z2iIDwgYXNwZWN0Owor6IyiIDwgc2VkZ2VzOwor6Lm66Lm65p2/IDwgc2Vlc2F3Owor5r6x57KJIDwgc3RhcmNoOwor5qiZ5qacIDwgZmxhdW50Owor6ImiIDwgYVwtbWFzdDsKK+a7kembqiA8IHRvXC1za2k7Civlm57ntZUgPCByZWJ1ZmY7CivoparluLYgPCBnYXJ0ZXI7CivntoHkvY8gPCBmYXN0ZW47CivnnLzlhYkgPCB2aXNpb247Civno6jlnYrkuLsgPCBtaWxsZXI7CivmqKPmnKwgPCBzYW1wbGU7Civng4jlo6sgPCBtYXJ0eXI7Civnsr7mmI4gPCBhc3R1dGU7CivohbPpkJAgPCBmZXR0ZXI7Civog7kgPCBjb29rZWQ7Civnmb3mnpwgPCBnaW5rZ287CivluIbluIMgPCBjYW52YXM7Civot7PpgLIgPCBwbHVuZ2U7CivmnInpl5zpgKMgPCByZWxhdGU7CivlpJrmqLnmnKggPCB3b29kZWQ7CivpmYTkuIogPCBhdHRhY2g7CivmiqzotbcgPCB1cGxpZnQ7CivpoZvlgJLpgY7kvoYgPCBpbnZlcnQ7CivogKQgPCBwbG91Z2g7CivlkLHlkLHogbIgPCBzcXVlYWs7Civlub7kuY4gPCBhbG1vc3Q7CivngInmuZYgPCBsYWdvb247CivnvasgPCBoaW5kZXI7CivnvaUgPCBpbXBldGU7CivnsKHnm7QgPCBzaW1wbHk7CivmnKrlrozmiJAgPCB1bmRvbmU7CivnuaggPCBhXC1rbm90Owor5YWJ5pivIDwgc29sZWx5Owor57iGIDwgYVwtcm9wZTsKK+e1puS6iCA8IGFjY29yZDsKK+S4g+aciOS4gOiZnyA8IGp1bHlcLTE7CivopIfmlbggPCBwbHVyYWw7Civnmb3mkK0gPCBub1wtdXNlOwor6a2U6LO95YWLIDwgbW9zYWljOwor6Iiq56iLIDwgZmxpZ2h0Owor57SpIDwgdG9cLXNldzsKK+e0nyA8IGFcLXNhc2g7CivntIMgPCBhXC1jb3JkOwor5o+05omLIDwgc3VjY29yOwor5bid5ZyLIDwgZW1waXJlOwor6Iy25aO6IDwgdGVhcG90Owor5Lyv5Luy5Y+U5a2jIDwgZWxkZXN0Owor57GyIDwgYXBwZWFsOwor55uf5ZyLIDwgYWxsaWVzOwor57CJIDwgZGVwdXR5Owor6KOB5rG6IDwgcnVsaW5nOwor56+lIDwgYnVsZ2xlOwor5a+m6auUIDwgZW50aXR5Owor566ZIDwgcXVpdmVyOwor54OP5bmy6YGUIDwgdWdhbmRhOwor57Si5Y+WIDwgdG9cLWFzazsKK+W4reWNtyA8IGVuZ3VsZjsKK+S4jeeiuuWvpiA8IHVudHJ1ZTsKK+WcsOavryA8IGNhcnBldDsKK+eriSA8IGFcLWhvbGU7CivlhavluqYgPCBvY3RhdmU7CivnlKjoqp4gPCBzeW50YXg7CivpvLvlj6Ppg6jliIYgPCBtdXp6bGU7CivlsJbogbLllbzlk60gPCBzcXVlYWw7Civnr4DntIQgPCBmcnVnYWw7CivnpY8gPCBzaHJpbmU7CivovqblhazlrqQgPCBvZmZpY2U7Civmib/oq74gPCBlZmZvcnQ7CivooZvnlJ8gPCBoZWFsdGg7Civoo5zmlZEgPCByZW1lZHk7Civkv67oqIIgPCByZXZpc2U7CivnvoXppqzmm7ggPCByb21hbnM7Civov4Tku4ogPCBzb1wtZmFyOwor5a+m6ZqbIDwgYWN0dWFsOwor552qIDwgc3B5XC1vbjsKK+ecviA8IG1hc3NlczsKK+WYl+ippiA8IHRvXC10cnk7CivlnoLluZUgPCBjYW5vcHk7CivooJ/nrYYgPCBjcmF5b247CivmnI3li5nlk6EgPCB3YWl0ZXI7Civlkb3pgYvoqLvlrpogPCBvcmRhaW47CivkurrpoK3njYXouqsgPCBzcGhpbng7CivnmoAgPCBrZXJuZWw7CivkuI3lubjkuYvkuosgPCBtaXNoYXA7CivonJjom5vntrIgPCBjb2J3ZWI7CivnloMgPCBoYW1sZXQ7Civln7fkuosgPCBkZWFjb247Civnlb0gPCBncm91bmQ7CivmiJDplbcgPCBtYXR1cmU7Civmup3pgZMgPCBncm9vdmU7CivpmL/nsbPlt7QgPCBhbW9lYmE7CivovrLkurogPCBmYXJtZXI7Civmu77okL0gPCB0dW1ibGU7Civono3op6MgPCBtb2x0ZW47CivlnJbmoYggPCBkZXNpZ247CivohZToqr8gPCBhY2NlbnQ7Civkv67oo5zljKAgPCB0aW5rZXI7CivotbDpjK8gPCBhc3RyYXk7Civnj5QgPCBcKGphZGVcKTsKK+eOkyA8IHBlYXJseTsKK+evgOecgSA8IHNhdmluZzsKK+eMuiA8IGphY2thbDsKK+S/oeiZnyA8IHNpZ25hbDsKK+Wwj+iykyA8IGtpdHRlbjsKK+ihjOeCuiA8IGFjdGlvbjsKK+Wkp+eQhuefsyA8IG1hcmJsZTsKK+WcqO+5jeS5i+aXgSA8IGJlc2lkZTsKK+aMgeacieS6uiA8IGhvbGRlcjsKK+eFgyA8IHJlbW92ZTsKK+aSkuWTiOaLiSA8IHNhaGFyYTsKK+Wkp+mQruWIgCA8IHNjeXRoZTsKK+Wfi+S8jyA8IGFtYnVzaDsKK+e0hOe/sOS6jOabuCA8IDJcLWpvaG47CivlsI3oqbEgPCBkaWFsb2c7CivnrKbomZ8gPCBzeW1ib2w7CivngIwgPCBwbGVudHk7Civog7jph50gPCBicm9vY2g7Civmv7UgPCBhXC1iYW5rOwor5pCt5LmYIDwgZW1iYXJrOwor5r68IDwgYmxlYWNoOwor5aib5qiC5aC0IDwgcmVzb3J0Owor5YWr5Y2BIDwgZWlnaHR5Owor57C45o+aIDwgd2lubm93Owor5qOS57OWIDwgc3Vja2VyOwor566X55ukIDwgYWJhY3VzOwor6YaD6buD55OcIDwgcGlja2xlOwor5rioIDwgYVwtY292ZTsKK+a3nyA8IHR1cmJpZDsKK+eyvuWKmyA8IGVuZXJneTsKK+aUtuWJsuiAhSA8IHJlYXBlcjsKK+WCs+afkyA8IGluZmVjdDsKK+W3peS6uiA8IHdvcmtlcjsKK+a0nyA8IHNuaXZlbDsKK+azrSA8IGFcLXJhZnQ7CivmsKsgPCBhbW9uaWE7CivotbfoqLQgPCB0b1wtc3VlOwor6J2X6J+yIDwgbG9jdXN0Owor5YKz5pWZIDwgcHJlYWNoOwor6LyD5aW9IDwgYmV0dGVyOwor6Iqx5ZyIIDwgd3JlYXRoOwor5qmwIDwgYVwtc3BhcjsKK+iFjuiHnyA8IGtpZG5leTsKK+appCA8IHN0YW1lbjsKK+apnCA8IGFcLXBvc3Q7CivmqZUgPCBhXC1wcm9wOwor5qiyIDwganVqdWJlOwor6Lev56iLIDwgY291cnNlOwor5YWI5YmNIDwgYmVmb3JlOwor5oaC6ayxIDwgc3VsbGVuOwor6J665peL6YmXIDwgd3JlbmNoOwor5Y+D6K2w6ZmiIDwgc2VuYXRlOwor56mX6aO+IDwgdGFzc2VsOwor5qWiIDwgdGluZGVyOwor55Ge6YeRIDwgcnVpamluOwor5oqx55eFIDwgYmVcLWlsbDsKK+WCs+aOiCA8IGltcGFydDsKK+i7iuW6qyA8IGdhcmFnZTsKK+a4rOmHjyA8IHN1cnZleTsKK+Wtl+mmliA8IHByZWZpeDsKK+mtmuWkqyA8IGZpc2hlcjsKK+akpyA8IGd1dHRlcjsKK+ajgyA8IGFcLXBlYXI7CivmobIgPCBxdWluY2U7CivoirHlk6ggPCBnYXJpc2g7CivovJXlkqwgPCBuaWJibGU7Civmop3ntIsgPCBzdHJpcGU7Civoh7TmrbsgPCBkZWFkbHk7Civku7vkvZXkurogPCBhbnlvbmU7CivotJbph5EgPCByYW5zb207CivooYzmmJ8gPCBwbGFuZXQ7Civmm4AgPCBzdG9ybXk7Civlm57mhrYgPCByZWNhbGw7CivnqYDpoZ4gPCBjZXJlYWw7CivlgbXmn6UgPCBkZXRlY3Q7Civml7sgPCBoZWF2ZW47CivlrrnoqLEgPCBwZXJtaXQ7CivmlaEgPCByZWJ1a2U7CivmlYIgPCBkZWR1Y3Q7CivljYHlm5vooYzoqakgPCBzb25uZXQ7Civmk5MgPCB0b1wtcnViOwor5pyJ6YGT5b63IDwgY2hhc3RlOwor5ryj5ryqIDwgcmlwcGxlOwor5LqM6ICF5LmL5LiAIDwgZWl0aGVyOwor5o29IDwgY2x1dGNoOwor5ZyL5aSWIDwgYWJyb2FkOwor5ray6auUIDwgbGlxdWlkOwor6Jed6KGT5a62IDwgYXJ0aXN0Owor5bSO5baHIDwgcnVnZ2VkOwor6aSR6aSRIDwgcGFzdHJ5Owor6aSQ6aOyIDwgcmVwYXN0Owor5L2/6Iao6IS5IDwgZGlsYXRlOwor5L2V6JmVIDwgd2hlbmNlOwor5L+h55SoIDwgY3JlZGl0Owor57SE57+w5LiJ5pu4IDwgM1wtam9objsKK+Wwj+aPkOeQtCA8IGZpZGRsZTsKK+WboOWtkCA8IGZhY3RvcjsKK+aBnyA8IHNjYXJlZDsKK+aLs+aTiiA8IGJveGluZzsKK+i7n+WMliA8IHNvZnRlbjsKK+WuieipsyA8IHNlcmVuZTsKK+aHtua0i+a0iyA8IGxhemlseTsKK+e0hOe/sOS4gOabuCA8IDFcLWpvaG47CivmiaPnlZkgPCBkZXRhaW47Civmnb7pm54gPCBncm91c2U7CivlvKMgPCBtaWRkbGU7Civpq5jluqYgPCBoZWlnaHQ7Civlu4YgPCBhXC1yb29tOwor55Ww5pWZIDwgaGVyZXN5Owor5bekIDwgYVwtbWFuZTsKK+W3mCA8IHN1bW1pdDsKK+W2kyA8IGJvc2hhbjsKK+W0vyA8IGNsaWZmczsKK+WcsOS4uyA8IGFcLWhvc3Q7CivppqzmiLLlnJggPCBjaXJjdXM7Civpq5jlsbEgPCBhbHBpbmU7CivnlJ/mtq8gPCBjYXJlZXI7CivkvZzogIUgPCBhdXRob3I7CivmjKrlqIEgPCBub3J3YXk7CivlsIUgPCBzdWJkdWU7CivlsIvnmoQgPCBob21pbmc7Civlr44gPCBkcm93c3k7CivppqzpiLTolq8gPCBwb3RhdG87Civlrb4gPCBhXC1iYWJ5Owor5L2/6L2J5ZCRIDwgZGl2ZXJ0Owor5rKS5pyJ5Lq6IDwgbm9ib2R5Owor5ayDIDwgc2lzdGVyOwor5auqIDwgaGFua2VyOwor5am8IDwgcGVyc29uOwor5Y2a54mp6aSoIDwgbXVzZXVtOwor5aiSIDwgbWF0cm9uOwor5pyL6buoIDwgY2xpcXVlOwor56au5ouc5aCCIDwgY2hhcGVsOwor5re36KGAIDwgaHlicmlkOwor6LeL5raJIDwgdHJ1ZGdlOwor5aSsIDwgcGFydGVkOwor5YOF5YOFIDwgYmFyZWx5Owor5ryP5paXIDwgZnVubmVsOwor5LiN6YCP5piOIDwgb3BhcXVlOwor5aCnIDwgYWRqb2luOwor5Lmz6aCtIDwgbmlwcGxlOwor55CG6KuWIDwgdGhlb3J5Owor5LuL6LOqIDwgbWVkaXVtOwor5Zq/IDwgYVwtbHVtcDsKK+eUseaWvCA8IGR1ZVwtdG87CivlmZogPCBmYXRob207CivlkozpoqggPCBicmVlemU7CivlloYgPCBhXC1zYWdlOwor5om25qSNIDwgZm9zdGVyOwor55Kw55CDIDwgZ2xvYmFsOwor5ZSrIDwgdG9cLWh1bTsKK+mZpOS6huS5i+WkliA8IGV4Y2VwdDsKK+WUiCA8IHRvXC1zb2I7Civlk6QgPCBqYXJnb247Civkvr/msaAgPCB1cmluYWw7Civlka4gPCB0b1wtc2l0Owor5Y6OIDwgc2V0dGxlOwor5a6j56ixIDwgYXNzZXJ0Owor5ZOA6L6tIDwgbGFtZW50Owor5omB5qGD6auUIDwgdG9uc2lsOwor5YuEIDwgYWN0aXZlOwor5Lm+6YWqIDwgY2hlZXNlOwor5pu06auYIDwgaGlnaGVyOwor5YGM5aSnIDwgc29cLWJpZzsKK+ato+aWueW9oiA8IHNxdWFyZTsKK+iCjOiCiSA8IG11c2NsZTsKK+mpmuaBkCA8IGFwcGFsbDsKK+WPr+S/oeS7uyA8IHRydXN0eTsKK+aWh+WtuOWutiA8IHdyaXRlcjsKK+aJi+anjSA8IHBpc3RvbDsKK+WDrCA8IGNsZXZlcjsKK+WCjiA8IHRvcHBsZTsKK+enu+WLleW8jyA8IG1vYmlsZTsKK+WutueVnCA8IGNhdHRsZTsKK+emj+mfsyA8IGdvc3BlbDsKK+i1t+a6kCA8IG9yaWdpbjsKK+WAgyA8IGRhbWFnZTsKK+S6gui3syA8IGJvdW5jZTsKK+WIsOatpOiZlSA8IGhpdGhlcjsKK+iGveWkpyA8IGRhcmluZzsKK+S7miA8IHRvXC1mbHk7Civoo73pmbblt6XkurogPCBwb3R0ZXI7CivlgaXlhaggPCByb2J1c3Q7CivktoEgPCBub2lzZXM7CivktacgPCB0b1wtZHllOwor5LSlIDwgYVwtc3RhZzsKK+SzviA8IGFuXC1vd2w7Civmi4zlmLQgPCBiaWNrZXI7CivmiZPmk4ogPCB0b1wtaGl0Owor5LOHIDwgcGFycm90Owor56yo5ouZIDwgY2x1bXN5Owor5LK5IDwgb3NwZXJ5Owor5Lq65Y+j6Kq/5p+lIDwgY2Vuc3VzOwor5LKMIDwgYVwtZmlzaDsKK+SxlSA8IGxhYnJ1czsKK+SwoyA8IGFuXC1lbGY7CivnkZXnlrUgPCBzdGlnbWE7Civkr6ggPCB0b1wtcmFwOwor5K+BIDwgYVwtbXVsZTsKK+WiqOilv+WTpSA8IG1leGljbzsKK+a4heecn+WvuiA8IG1vc3F1ZTsKK+StqiA8IGdyYWluczsKK+StpSA8IGFcLWJhaXQ7CivkrYwgPCBjb25nZWU7CivkrLggPCBhXC1tZWFsOwor5KyRIDwgYVwtZ2FsZTsKK+SrrCA8IHRvXC1ib3c7Civmtbfoo6EgPCBtYXJpbmU7CivlkbPpgZMgPCBmbGF2b3I7CivkqLogPCBjbG91ZHk7CivkqJ8gPCBwdWRkbGU7CivkqIcgPCBhXC1wYWlyOwor54Sh6KuW5aaC5L2VIDwgYW55aG93Owor5Ke0IDwgYVwtYmlyZDsKK+SnkSA8IGFcLWRpa2U7Civlh7rln4Plj4roqJggPCBleG9kdXM7Civlronlk6Xmi4kgPCBhbmdvbGE7CivmnInol6Xnma7ogIUgPCBhZGRpY3Q7CivkpaogPCB0b1wtY3VwOwor5KWoIDwgYVwtZmlsZTsKK+SljSA8IGFcLXdoaXA7Civku6XoibLliJcgPCBpc3JhZWw7Civnp4Hoqp4gPCBtdXJtdXI7Civph6PprZrnlKjlhbcgPCB0YWNrbGU7CivmnIDov5EgPCByZWNlbnQ7Civko5ggPCBhXC1oYWxsOwor5riF55imIDwgbWVhZ2VyOwor5KOIIDwgYVwtbGFuZTsKK+mHmOabuOmHnSA8IHN0YXBsZTsKK+WyuOS4iiA8IGFzaG9yZTsKK+eFp+ebuOapnyA8IGNhbWVyYTsKK+SgsCA8IGNvaWxlZDsKK+SgpCA8IHRvZGRsZTsKK+e0oee5lOiAhSA8IHdlYXZlcjsKK+S4remAlCA8IG1pZHdheTsKK+aWr+aLieWkqyA8IHNsYXZpYzsKK+SdnCA8IGFcLWxpb247CivknYQgPCBjb3dwZWE7Civkv4TnvoXmlq8gPCBydXNzaWE7CivknJ4gPCBhXC1kb3NlOwor5pyo6KO9IDwgd29vZGVuOwor5a6J54S2IDwgc2FmZWx5Owor6aOi6I2SIDwgZmFtaW5lOwor5JiwIDwgYVwtaG9vZDsKK+i2vuWwliA8IHRpcHRvZTsKK+SYrCA8IGFybW91cjsKK+SYjCA8IGdhZGZseTsKK+SXqyA8IGFcLWZyb2c7CivklrkgPCB3ZWV2aWw7Civkv6HlpYkgPCBiZWxpZWY7CivmiJDmlYggPCBlZmZlY3Q7CivklK8gPCBzYWx0ZWQ7Civnk7blrZAgPCBib3R0bGU7CivklKIgPCBjYXRoYXk7CivklI8gPCBhXC1sdXNoOwor5LiJ6YeNIDwgdHJlYmxlOwor5JOmIDwgYVwtcnVsZTsKK+WuouawoyA8IHBvbGl0ZTsKK+SThCA8IGdyYXNzeTsKK+a1ruiRlyA8IGFmbG9hdDsKK+iuium7kSA8IGRhcmtlbjsKK+SSiSA8IGFcLWxvbmc7CivkkoIgPCBhblwtb2FyOwor5byT566t5omLIDwgYXJjaGVyOwor5JG6IDwgYVwtc2FpbDsKK+SRtCA8IGFcLWJvYXQ7Civmta7oj68gPCB2YW5pdHk7CivkkKYgPCBzbGVlcHk7CivkkKUgPCBzdGlua3k7Civpp4HmlqUgPCByZWZ1dGU7CivkuI3pgakgPCB1bndlbGw7Civkj6ogPCB0ZW5kb247Civnvp7ovrEgPCBiYWZmbGU7CivnlZnkuIsgPCByZW1haW47Civkj6MgPCBtYWdnb3Q7CivkuIrpgoogPCB1cHNpZGU7CivkjrEgPCBhXC1kcmFnOwor6IOh5qGDIDwgd2FsbnV0Owor5I2DIDwgYVwtdmFzZTsKK+WwgeW7uiA8IGZldWRhbDsKK+WSjOiXuSA8IGtpbmRseTsKK+SLkCA8IGZhYnJpYzsKK+SKpyA8IGFcLWZhcnQ7CivloZ7niL7nibkgPCBjZWx0aWM7CivkipsgPCBzaHJlZHM7Civnqb/mtJ4gPCBwaWVyY2U7CivkiLQgPCBhXC1jYWdlOwor5IiOIDwgYVwtbGVhZjsKK+SHmiA8IHRvXC10YXA7Civkh4EgPCBhXC1jYXZlOwor5Ia8IDwgYVwtbmVzdDsKK+SGriA8IHRvXC1kaXA7CivkhpkgPCBhXC1raWxuOwor5a6i5qOnIDwgdGF2ZXJuOwor5Y+p6aCtIDwga293dG93Owor5oi/5a6iIDwgdGVuYW50Owor56ys5ZubIDwgZm91cnRoOwor5IS5IDwgYVwteWVhcjsKK+mHjumkkCA8IHBpY25pYzsKK+SEmCA8IGFcLXJpdGU7Civkg6UgPCBzdG9uZXM7CivlsIjlrrYgPCBleHBlcnQ7CivkgrcgPCBicm9rZW47Civkvb/lvpcgPCB1c2FibGU7Civjv7wgPCBhXC1ib3dsOwor47+7IDwgYVwtdHJheTsKK+aJk+Wtl+WToSA8IHR5cGlzdDsKK+O/rSA8IGNyYWNrczsKK+O/pyA8IGZpZWxkczsKK+icg+aZryA8IG1pcmFnZTsKK+O/lCA8IGFcLXdhcnQ7Civlj43pp4EgPCByZXRvcnQ7CivlsJHlpbMgPCBtYWlkZW47CivjvbcgPCBkcm9wc3k7CivjvL4gPCBicmlja3M7Civmtbfntr8gPCBzcG9uZ2U7CivmmJ/mnJ/ml6UgPCBzdW5kYXk7CivjvIQgPCBwZWFybHM7CivnlKjkuo4gPCB1c2VcLWluOwor47i/IDwgYVwtY2FsZjsKK+aZmumjryA8IHN1cHBlcjsKK+O3iyA8IGVtYmVyczsKK+iRoeiQhOS5viA8IHJhaXNpbjsKK+izreazqCA8IHN0YWtlczsKK+O2pCA8IHRvXC1mcnk7CivjtoggPCBjcmVla3M7CivnpZ7oq60gPCBvcmFjbGU7CivjtZ0gPCBtb3Zpbmc7CivkuI3opoEgPCBkb24nJ3RcITsKK+O0niA8IGZsdWVudDsKK+aIkeiHquW3sSA8IG15c2VsZjsKK+adkOepjSA8IHZvbHVtZTsKK+aJgeWckyA8IG9ibGF0ZTsKK+OzjCA8IG1hcnNoeTsKK+OxniA8IGRhbmdlcjsKK+OxjSA8IHRvXC1vd2U7Civlj67piLQgPCBqaW5nbGU7CivjsIMgPCBhXC10cmVlOwor5aSn5q2l6LWwIDwgc3RyaWRlOwor56ys5YWrIDwgZWlnaHRoOwor5LiK6KGrIDwgYmxvdXNlOwor466WIDwgdG9cLWxheTsKK+OtsSA8IGFcLWNhc2U7Civmr5TovIPllpzmraEgPCBwcmVmZXI7Civlr7bloZQgPCBwYWdvZGE7Civjq7ogPCBieWdvbmU7CivkuI3lhazlubMgPCB1bmZhaXI7CivlrqLmiLYgPCBjbGllbnQ7Civjq4UgPCBhXC1mbGFnOwor46q5IDwgdG9cLXJvYjsKK+OpsiA8IGFcLWZpc3Q7Civoiq3olb7oiJ4gPCBiYWxsZXQ7CivjqL4gPCBhXC10eXBlOwor46enIDwgYVwtY29tYjsKK+WutuW6rSA8IGZhbWlseTsKK+afj+aelyA8IGJlcmxpbjsKK+OmlCA8IHNpbGtseTsKK+aciee9qiA8IGd1aWx0eTsKK+OmiiA8IGxhdmlzaDsKK+OmhSA8IHVuZWFzeTsKK+mNteW4vSA8IGtleWNhcDsKK+Wwj+WMhSA8IHBhY2tldDsKK+S6qOeJuSA8IGh1bnRlcjsKK+aJk+WCtyA8IGJydWlzZTsKK+mggemCiiA8IG1hcmdpbjsKK+aJi+WGiiA8IG1hbnVhbDsKK+OhgSA8IGFcLXJvYmU7CivjoLIgPCByaXBwZWQ7CivniZnpvZIgPCBkZW50YWw7CivlkI3oqIAgPCBzYXlpbmc7CivjnbkgPCBhXC1oYXJlOwor6ICA55y8IDwgZGF6emxlOwor5Lyv5Yip6IyyIDwgYmVsaXplOwor5riv5b2OIDwgaGFyYm9yOwor6IOM5bi2IDwgYnJhY2VzOwor6J665peL5b2iIDwgc3BpcmFsOwor45q8IDwgYVwtZ2lybDsKK+OauyA8IHNvZG9teTsKK+OajCA8IGFcLWJhbmQ7CivjmbkgPCBhXC1kYW1wOwor5q+U6LyD5bCRIDwgbGVzc2VyOwor54qv6YyvIDwgdG9cLWVycjsKK+WcqOatpOiZlSA8IGhlcmVpbjsKK+aatOiZkCA8IGJydXRhbDsKK+iiq+Wus+S6uiA8IHZpY3RpbTsKK+mYv+WkmuWwvOaWryA8IGFkb25pczsKK+azouiYrSA8IHBvbGFuZDsKK+OUuiA8IGFuXC1hZ2U7CivjlIkgPCB0b1wtZGlnOwor45O1IDwgc3dvcmRzOwor45OgIDwgYVwtZmxhdzsKK+OThSA8IGZyb3plbjsKK+aYn+mbsiA8IG5lYnVsYTsKK+a1t+eLuCA8IGJlYXZlcjsKK+mYv+azoue+hSA8IGFwb2xsbzsKK+S+neWBjiA8IG5lc3RsZTsKK+aHpuWkqyA8IGNvd2FyZDsKK+S9v+iAs+iBviA8IGRlYWZlbjsKK+S8keaDnCA8IHJlY2VzczsKK+iTrOmshiA8IGZsdWZmeTsKK+ejgemQtSA8IG1hZ25ldDsKK+agoeWckiA8IGNhbXB1czsKK+iuiuizqiA8IGdvXC1iYWQ7Civnvqnos6PmnIMgPCBiYXphYXI7CivnvorogokgPCBtdXR0b247Civlt6XkvZzlrqQgPCBzdHVkaW87CivlkIrokZcgPCBkYW5nbGU7CivntKvnvoXomK3oibIgPCB2aW9sZXQ7CivploDlpJbmvKIgPCBsYXltYW47Civmho7mg6EgPCBsb2F0aGU7CivpgI/ljbDniYjljbDliLcgPCBvZmZzZXQ7CivlnKjpmYTov5EgPCBuZWFyYnk7Civmho7mgaggPCBkZXRlc3Q7CivloZfmsrnmlrwgPCBhbm9pbnQ7Civpm5zosqjllYYgPCBncm9jZXI7CivllpzliocgPCBjb21lZHk7Civlr5LlhqwgPCB3aW50cnk7CivosrbmlqUgPCBkZW1vdGU7Civllq7kvY0gPCBhXC11bml0Owor55CD5ouNIDwgcmFja2V0Owor57at5ZC+54i+IDwgdWlnaHVyOwor6Iux6ZuE5byPIDwgaGVyb2ljOwor5a2Q5b2IIDwgYnVsbGV0Owor55CG6auu5birIDwgYmFyYmVyOwor5YKt5Lq66aCY54+tIDwgYnV0bGVyOwor5a6J5Z+5IDwgYW1wZXJlOwor6aOf5qe9IDwgbWFuZ2VyOwor6IOM5Y+bIDwgYmV0cmF5Owor6LSW5ZueIDwgcmVkZWVtOwor542o54m5IDwgdW5pcXVlOwor5q+b57mU6YGL5YuV6KGrIDwgamVyc2V5Owor6YeR6ImyIDwgZ29sZGVuOwor6LW35rOh5rKrIDwgc2VldGhlOwor5LiN5oiw5LiN5ZKMIDwgbm9cLXdhcjsKK+WupOWFpyA8IGluZG9vcjsKK+izk+WuoiA8IGd1ZXN0czsKK+eRnuWFuCA8IHN3ZWRlbjsKK+i0iuWQjCA8IGFzc2VudDsKK+iWhOe0mSA8IHRpc3N1ZTsKK+aCtueGsSA8IHN1bHRyeTsKK+aYn+acn+S6lCA8IGZyaWRheTsKK+aYn+acn+S4gCA8IG1vbmRheTsKK+ePvuWtmCA8IGV4dGFudDsKK+mkkOW3viA8IG5hcGtpbjsKK+S7peWkqiA8IGV0aGVyXC07Civlt7TniL7lubIgPCBiYWxrYW47CivnkaPkuosgPCB0cmlmbGU7CivmoLzmoLznrJEgPCBnaWdnbGU7CivpoJDnrpcgPCBidWRnZXQ7CivlrZ/liqDmi4kgPCBiZW5nYWw7CivpnZLpioUgPCBicm9uemU7CivpoJHnq6UgPCB1cmNoaW47CivmnIPmrbsgPCBtb3J0YWw7CivkuI3nhLYgPCBub3RcLXNvOwor6K6A6ICFIDwgcmVhZGVyOwor5rSq5rC0IDwgZGVsdWdlOwor55m96Jit5ZywIDwgYnJhbmR5Owor5pyo5paZIDwgbHVtYmVyOwor5oSb5b636I+vIDwgZWR3YXJkOwor5rex5YyWIDwgZGVlcGVuOwor54++5ZyoIDwgbW9kZXJuOwor6JiH5qC86Jit5bi9IDwgYm9ubmV0Owor6K6K57SFIDwgcmVkZGVuOwor5rib5L2O6YCf5bqmIDwgcmV0YXJkOwor54yW54uCIDwgc2F2YWdlOwor5reo5YyWIDwgcHVyaWZ5Owor5b6M6YCAIDwgcmVjb2lsOwor6Zi/5ouJ5pav5YqgIDwgYWxhc2thOwor54mH6KqeIDwgcGhyYXNlOwor5rWB5pifIDwgbWV0ZW9yOwor5oKy5q2OIDwgYmV3YWlsOwor5a2Y5YSyIDwgbWVtb3J5Owor5L2/5YW36auU5YyWIDwgZW1ib2R5Owor5YW4542E6ZW3IDwgd2FyZGVuOwor55yL5LiN6KaLIDwgdW5zZWVuOwor5L2/5L2c5ZiUIDwgc2lja2VuOwor6LGh5b61IDwgZW1ibGVtOwor5LiN5q+UIDwgdW5saWtlOwor5aSn6YyYIDwgc2xlZGdlOwor5pyA5pawIDwgbGF0ZXN0Owor5Li75pWZIDwgYmlzaG9wOwor5oGQ5rC055eFIDwgcmFiaWVzOwor6JmV5aWzIDwgdmlyZ2luOwor6LOj5Li7IDwgc2VsbGVyOwor576K5q+bIDwgZmxlZWNlOwor5ZCr5rC0IDwgd2F0ZXJ5Owor5Yqg77mN5pa8IDwgaW1wb3NlOwor6JmV5aKDIDwgcGxpZ2h0Owor6K2w56iLIDwgYWdlbmRhOwor5oOh5oSPIDwgbWFsaWNlOwor5pys5beeIDwgaG9uc2h1Owor5qmh55qu5pC9IDwgZXJhc2VyOwor5pW46YePIDwgYW1vdW50Owor5pa36KiAIDwgYWZmaXJtOwor5rWq5a2QIDwgbG9hZmVyOwor5pyJ5oSPIDwgaW50ZW5kOwor5rOi5aOr6aCTIDwgYm9zdG9uOwor5ZCN5rWBIDwgZ2VudHJ5Owor5Y+w54GjIDwgdGFpd2FuOwor5LiN5pm6IDwgdW53aXNlOwor5pWF6ZqcIDwgZ2xpdGNoOwor5ZCI5rOVIDwgbGF3ZnVsOwor5ZCN5rCjIDwgcmVwdXRlOwor5aSn6LevIDwgYXZlbnVlOwor5rW35aCxIDwgcG9zdGVyOwor5Lqm5Y2zIDwgbmFtZWx5Owor57aT57SA5Lq6IDwgYnJva2VyOwor57SF6Ji/6JSUIDwgY2Fycm90Owor5oKE5oKE5ZywIDwgZ2VudGx5Owor5pqW5rCjIDwgaGVhdGVyOwor5L2/77mN6IO95aSgIDwgZW5hYmxlOwor5ZC45pS2IDwgYWJzb3JiOwor5oSP5ZyWIDwgaW50ZW50Owor57ej6aO+IDwgZnJpbmdlOwor6YG/6Zuj5omAIDwgcmVmdWdlOwor5ZGo5bm0IDwgYW5udWFsOwor55m96bq15YWSIDwgaGVyb2luOwor5Y+j5ri0IDwgdGhpcnN0Owor6Yed5rOVIDwgc3RpdGNoOwor5raI5YyWIDwgZGlnZXN0Owor5q2j6ZaAIDwgcG9ydGFsOwor5rW35ZOhIDwgc2FpbG9yOwor5ZCQ5qC5IDwgaXBlY2FjOwor6ZuZ6YeNIDwgZG91YmxlOwor6Z2S6IuUIDwgbGljaGVuOwor5aSa6K6KIDwgZmlja2xlOwor6YmL5bqKIDwgcGxhbmVyOwor6aO86aSK6ICFIDwgZmVlZGVyOwor5ZCN5pybIDwgcmVub3duOwor5Y+W5raIIDwgY2FuY2VsOwor6YKj6YKKIDwgeW9uZGVyOwor5be05pav5YWLIDwgYmFzcXVlOwor5YqI6ZaLIDwgY2xlYXZlOwor6YWS56qpIDwgZGltcGxlOwor5YuV6K2wIDwgbW90aW9uOwor5pS+6YCQIDwgYmFuaXNoOwor6YWN56ixIDwgd29ydGh5Owor5rS75aGeIDwgcGlzdG9uOwor6I6r5pav56eRIDwgbW9zY293Owor8KWcjCA8IGFcLWNvYXQ7CivmnY/ku4EgPCBhbG1vbmQ7CivmnIjmoYLmqLkgPCBsYXVyZWw7CivpoJDmnJ8gPCBleHBlY3Q7Civnp4nlhawgPCBqdXN0bHk7CivnprHlkYogPCBwcmF5ZXI7Civmm7TlpKcgPCBiaWdnZXI7CivkuZ3ljYEgPCBuaW5ldHk7CivnoLToiIogPCBzaGFiYnk7CivkuIDluLYgPCByZWdpb247CivnoqfnjokgPCBqYXNwZXI7Civlvq7oloTnmoQgPCBtZWFncmU7Civlj6rmmK8gPCBtZXJlbHk7CivlsI/mt5jmsKMgPCByYXNjYWw7Civmg6HljJYgPCB3b3JzZW47CivkuIDlsYAgPCBpbm5pbmc7CivnhKHms5XnhKHlpKkgPCBvdXRsYXc7CivmnKrkvoYgPCBmdXR1cmU7CivphInntLMgPCBzcXVpcmU7Civoqa3oqIggPCBkZWNlaXQ7CivosYHlhY0gPCBleGVtcHQ7Civlv4PnkIYgPCBtZW50YWw7CivniaLniaIgPCBmaXJtbHk7Civpoqjkv5cgPCBjdXN0b207CivwoICJIDwgYVwtaGlsbDsKK+WJtei+piA8IGxhdW5jaDsKK+mBjumHjyA8IGV4Y2VzczsKK+i1t+iotOiAhSA8IHN1aXRvcjsKK+eGlOinoyA8IGZ1c2lvbjsKK+efs+iLsSA8IHF1YXJ0ejsKK+W3tOaLv+mmrCA8IHBhbmFtYTsKK+WMheeuoSA8IGFzc3VyZTsKK+WLleiEiCA8IGFydGVyeTsKK+acgOS9jiA8IGxvd2VzdDsKK+elreWPuCA8IHByaWVzdDsKK+eJueatpCA8IGhlcmVieTsKK+mbjOiViiA8IHBpc3RpbDsKK+W5sumgkCA8IG1lZGRsZTsKK+WMluefsyA8IGZvc3NpbDsKK+aNlemvqOiIuSA8IHdoYWxlcjsKK+awtOazpSA8IGNlbWVudDsKK+awtOazoSA8IGJ1YmJsZTsKK+a8lOiqquiAhSA8IG9yYXRvcjsKK+iTi+eIviA8IGdhZWxpYzsKK+WJjei8qSA8IHNlbmlvcjsKK+aTuuaoo+WtkCA8IGRvXC1zdGg7Civlia/oqZ4gPCBhZHZlcmI7CivljbHmqZ8gPCBjcmlzaXM7CivkuI3lhawgPCB1bmp1c3Q7Civms5XlnIsgPCBmcmFuY2U7CivmsonmgJ0gPCBwb25kZXI7CivmmpfloKEgPCBidW5rZXI7Civni5flsYsgPCBrZW5uZWw7CivmmrTlkJsgPCB0eXJhbnQ7Civms6Lmlq/lsLzkup4gPCBib3NuaWE7CivkuInlgI0gPCB0cmlwbGU7CivpnJznmb0gPCBmcm9zdHk7CivlkKbliYcgPCBpZlwtbm90Owor5YiG6ZCYIDwgbWludXRlOwor6JGs56auIDwgYnVyaWFsOwor5rC05qG2IDwgYnVja2V0Owor5pKk6Yq3IDwgcmVwZWFsOwor5Yqg5ou/5aSnIDwgY2FuYWRhOwor5Y+N5bCEIDwgcmVmbGV4Owor5LiN5Li5IDwgYmh1dGFuOwor6Z2e5rSyIDwgYWZyaWNhOwor5Ymd6J2VIDwgZGVudWRlOwor5LiA5LiyIDwgc3RyYW5kOwor57qW5q+bIDwgY2lsaXVtOwor55+zIDwgc3RvbmU7Civnn60gPCBzaG9ydDsKK+W/qyA8IHJhcGlkOwor5ZyoIDwgYmVcLWF0Owor5LuWIDwgb3RoZXI7Civnn6IgPCBhcnJvdzsKK+WIsCA8IGdvXC10bzsKK+ivtCA8IHNwZWFrOwor6L+FIDwgcXVpY2s7CivlnLAgPCBlYXJ0aDsKK+W/gyA8IGhlYXJ0Owor5LiLIDwgdW5kZXI7Civovq0gPCB3b3JkczsKK+W+riA8IHNtYWxsOwor5a62IDwgaG91c2U7CivlvqEgPCBkcml2ZTsKK+WQjiA8IHF1ZWVuOwor5b6FIDwgdHJlYXQ7Civov5ggPCBzdGlsbDsKK+WPkSA8IGlzc3VlOwor5b2rIDwgY2FydmU7Civmg7MgPCB0aGluazsKK+edoSA8IHNsZWVwOwor6L2JIDwgc2hpZnQ7CivmiYAgPCBwbGFjZTsKK+i8qiA8IHdoZWVsOwor5LiJIDwgdGhyZWU7CivovJUgPCBsaWdodDsKK+W8jyA8IHN0eWxlOwor5qC3IDwgc2hhcGU7Civlu7ogPCBidWlsZDsKK+W7tiA8IGRlbGF5Owor55uyIDwgYmxpbmQ7Civlu6MgPCBicm9hZDsKK+WjsCA8IHNvdW5kOwor5belIDwgbGFib3I7Civnm4YgPCBiYXNpbjsKK+ebgyA8IGdsYXNzOwor5q2jIDwgcmlnaHQ7CivlurggPCB1c3VhbDsKK+WlsyA8IHdvbWFuOwor5YqbIDwgcG93ZXI7CivoupEgPCB3YXZlcjsKK+WboCA8IGNhdXNlOwor6YeNIDwgaGVhdnk7CivnmocgPCByb3lhbDsKK+W6hyA8IGNvdmVyOwor5qyhIDwgb3JkZXI7Civlj6MgPCBtb3V0aDsKK+eZvSA8IHdoaXRlOwor5bm9IDwgcXVpZXQ7CivmlZkgPCB0ZWFjaDsKK+WGjSA8IGFnYWluOwor5rCUIDwgc3RlYW07Civkv6EgPCB0cnVzdDsKK+WMlyA8IG5vcnRoOwor6LmyIDwgc3F1YXQ7CivouZ8gPCB0cmFjZTsKK+W5hSA8IHBpZWNlOwor5YWlIDwgZW50ZXI7CivlhYggPCBmaXJzdDsKK+awtCA8IHdhdGVyOwor5be3IDwgYWxsZXk7CivnrJEgPCBzbWlsZTsKK+eriyA8IHN0YW5kOwor6LeqIDwga25lZWw7CivpqawgPCBob3JzZTsKK+W3qCA8IGxhcmdlOwor55aRIDwgZG91YnQ7CivliKkgPCBnYWluczsKK+aenCA8IGZydWl0Owor6LWnIDwgYmx1c2g7Civoh7MgPCByZWFjaDsKK+a4hSA8IGNsZWFyOwor54mpIDwgdGhpbmc7CivltYwgPCBpbmxheTsKK+eUsiA8IGFybW9yOwor55SwIDwgZmllbGQ7CivorrggPCBhbGxvdzsKK+WFqyA8IGVpZ2h0Owor5bSWIDwgY2xpZmY7CivltI4gPCByb3VnaDsKK+WNlyA8IHNvdXRoOwor6ImyIDwgY29sb3I7Civnk5wgPCBtZWxvbjsKK+eulyA8IGNvdW50Owor6LOKIDwgdGhpZWY7Civosq8gPCBzdG9yZTsKK+iyqCA8IGdvb2RzOwor5q+PIDwgZXZlcnk7CivlsawgPCBjbGFzczsKK+ixqiA8IGJyYXZlOwor6LGGIDwgYmVhbnM7CivkuIMgPCBzZXZlbjsKK+WwliA8IHNoYXJwOwor5bCEIDwgc2hvb3Q7CivnqbogPCBlbXB0eTsKK+aKgCA8IHNraWxsOwor5a+6IDwgY291cnQ7Civlr6sgPCB3cml0ZTsKK+iLsSA8IHBldGFsOwor5a+GIDwgZGVuc2U7CivpkrEgPCBtb25leTsKK+WuuSA8IGxvb2tzOwor5a61IDwgbmlnaHQ7Civlp4sgPCBiZWdpbjsKK+WuoiA8IGd1ZXN0Owor54mHIDwgc2xpY2U7CivnoJQgPCBncmluZDsKK+aXqSA8IGVhcmx5Owor5427IDwgb2ZmZXI7CivnjbogPCBvdHRlcjsKK+eNuCA8IGJlYXN0Owor542oIDwgYWxvbmU7CivoraYgPCBndWFyZDsKK+WtmCA8IGV4aXN0Owor6K2JIDwgcHJvb2Y7CivorJ0gPCB0aGFuazsKK+eMnCA8IGd1ZXNzOwor5ayJIDwgZW5qb3k7Civpu5EgPCBibGFjazsKK+isgSA8IHZpc2l0Owor5YmRIDwgc3dvcmQ7CivkuZAgPCBoYXBweTsKK+e6pyA8IGxldmVsOwor5Li+IDwgcmFpc2U7Civor4EgPCBwcm92ZTsKK+eFpyA8IHNoaW5lOwor6KqTIDwgc3dlYXI7CivnvqQgPCBncm91cDsKK+iqgiA8IHRlbXB0Owor5LykIDwgd291bmQ7Civmlq0gPCBzZXZlcjsKK+S7tyA8IHByaWNlOwor6ISRIDwgYnJhaW47Civop4QgPCBydWxlczsKK+WokSA8IGRhbmNlOwor56C0IDwgYnJlYWs7Civms70gPCBtYXJzaDsKK+eHuyA8IHNtb2tlOwor57SnIDwgdGVuc2U7Civop7ggPCB0b3VjaDsKK+ijhSA8IGRyZXNzOwor5rKzIDwgcml2ZXI7CivooYAgPCBibG9vZDsKK+aKlSA8IHRocm93Owor5aW0IDwgc2xhdmU7CivliIAgPCBrbmlmZTsKK+ilnyA8IGxhcGVsOwor5ZadIDwgZHJpbms7CivopKogPCBzdHJpcDsKK+WkoiA8IGRyZWFtOwor6ZSZIDwgZXJyb3I7CivmoYggPCB0YWJsZTsKK+WNsCA8IHByaW50Owor5aOTIDwgcHJlc3M7Civng4ggPCBmaWVyeTsKK+WjhyA8IGFsdGFyOwor6KOCIDwgc3BsaXQ7CivoorQgPCBwYW50czsKK+WikyA8IGdyYXZlOwor54KOIDwgZmxhbWU7CivngbAgPCBhc2hlczsKK+WhlyA8IHNtZWFyOwor5pWMIDwgZW5lbXk7CivloZQgPCB0b3dlcjsKK+aAgCA8IGJvc29tOwor572qIDwgY3JpbWU7Civon7IgPCB3b3JtczsKK+a/sSA8IGJlYWNoOwor5pGYIDwgcGx1Y2s7Civmlr0gPCBncmFudDsKK+aooSA8IG1vZGVsOwor6I2JIDwgZ3Jhc3M7Civmv4MgPCB0aGljazsKK+a/gSA8IG11ZGR5Owor5L+uIDwgc3R1ZHk7CivlkbMgPCB0YXN0ZTsKK+e7hyA8IHdlYXZlOwor6b6VIDwgbmljaGU7Civonb8gPCBmbGllczsKK+WFjSA8IHNwYXJlOwor5rOiIDwgd2F2ZXM7CivmvZQgPCBjbGVhbjsKK+a0iyA8IG9jZWFuOwor5Z2HIDwgZXF1YWw7CivlpZYgPCBwcml6ZTsKK+mhvyA8IHBhdXNlOwor5ryCIDwgZmxvYXQ7CivliKQgPCBqdWRnZTsKK+aLhSA8IGNhcnJ5Owor5p2/IDwgcGxhbms7Civpkp8gPCBjbG9jazsKK+m7kCA8IHN0aWNrOwor6JuHIDwgc25ha2U7CivmnoQgPCBmcmFtZTsKK+a6uiA8IGRyb3duOwor6bqmIDwgd2hlYXQ7Civmup0gPCBkaXRjaDsKK+a6nCA8IHNsaWRlOwor6IKJIDwgZmxlc2g7CivnurggPCBwYXBlcjsKK+iZmiA8IGZhbHNlOwor6JmOIDwgdGlnZXI7CivlmYwgPCBzY29sZDsKK+adgiA8IG1peGVkOwor5oCSIDwgYW5nZXI7CivnqL8gPCBkcmFmdDsKK+a4piA8IHN3aXJsOwor5rihIDwgY3Jvc3M7CivnvaIgPCBjZWFzZTsKK+m3uiA8IGhlcm9uOwor6be5IDwgZWFnbGU7Civol6kgPCBmZW5jZTsKK+iXpSA8IGRydWdzOwor6bKcIDwgZnJlc2g7Civll4UgPCBzbWVsbDsKK+iXgSA8IHN0cmF3Owor6ba0IDwgY3JhbmU7CivmnqogPCBzcGVhcjsKK+a2ryA8IHNob3JlOwor5raZIDwgdGVhcnM7CivphY0gPCBtYXRjaDsKK+a1tCA8IGJhdGhlOwor5Y2HIDwgYXJpc2U7CivmtZwgPCBjcmVlazsKK+iUrSA8IHNoYWRlOwor5rSlIDwgZmVycnk7CivprLwgPCBnaG9zdDsKK+iTriA8IGxvdHVzOwor6YG/IDwgYXZvaWQ7CivkuqEgPCBkZWF0aDsKK+mXqiA8IGZsYXNoOwor6ZyHIDwgc2hha2U7CivlkrMgPCBjb3VnaDsKK+e7vyA8IGdyZWVuOwor5ZKOIDwgZmF1bHQ7CivnurMgPCBhZG1pdDsKK+WRqiA8IGN1cnNlOwor56ulIDwgY2hpbGQ7CivkvJ8gPCBncmVhdDsKK+axgSA8IGp1aWNlOwor6I2jIDwgZ2xvcnk7CivlkJAgPCB2b21pdDsKK+mwjCA8IGxvYWNoOwor5ZaKIDwgc2hvdXQ7CivlkIkgPCBsdWNreTsKK+mAkCA8IGNoYXNlOwor5Y+pIDwga25vY2s7Civmo4AgPCBjaGVjazsKK+aPoSA8IGdyYXNwOwor54mZIDwgdG9vdGg7CivmrpYgPCBicmVlZDsKK+WNvyA8IG5vYmxlOwor5q2vIDwgdGVldGg7CivmraogPCBzbGFudDsKK+ajiyA8IGNoZXNzOwor6a2UIDwgZGVtb247CivohbAgPCB3YWlzdDsKK+aihSA8IHBsdW1zOwor6ZKiIDwgc3RlZWw7CivojLkgPCByb290czsKK+asuiA8IGNoZWF0Owor6ayaIDwgYmVhcmQ7CivljJkgPCBzcG9vbjsKK+WMjSA8IGNyYXdsOwor6IyFIDwgcmVlZHM7CivntK8gPCB0aXJlZDsKK+acqyA8IGZpbmFsOwor57OKIDwgcGFzdGU7CivnqI4gPCB0YXhlczsKK+aDryA8IGhhYml0Owor5YC+IDwgdXBzZXQ7CivotLggPCB0cmFkZTsKK+aJqyA8IHN3ZWVwOwor5ZCTIDwgc2NhcmU7CivliYMgPCBzaGF2ZTsKK+WItyA8IGJydXNoOwor576KIDwgc2hlZXA7CivmiZEgPCBwb3VuZDsKK+WAjSA8IHRpbWVzOwor5Ya2IDwgc21lbHQ7CivohrMgPCBtZWFsczsKK+WFvCA8IHVuaXRlOwor6Z6LIDwgc2hvZXM7CivmjKQgPCBjcm93ZDsKK+milyA8IGdyYWluOwor5oOgIDwgZmF2b3I7CivohZUgPCB3cmlzdDsKK+ahgyA8IHBlYWNoOwor5Z2hIDwgc2xvcGU7CivlhJ8gPCByZXBheTsKK+akjSA8IHBsYW50Owor6ISKIDwgc3BpbmU7CivmpIUgPCBjaGFpcjsKK+iCmiA8IGJlbGx5Owor5qOyIDwgcGVyY2g7Civogp0gPCBsaXZlcjsKK+eWryA8IGNyYXp5Owor6IC7IDwgc2hhbWU7Civkvo0gPCBzZXJ2ZTsKK+ihqyA8IHNoaXJ0Owor6ZK7IDwgZHJpbGw7Civls6EgPCBnb3JnZTsKK+mfuyA8IHJoeW1lOwor5LiRIDwgY2xvd247CivmvrMgPCBpbmxldDsKK+eWvCA8IGFjaGVzOwor5qGjIDwgc2hlbGY7CivnjpsgPCBhZ2F0ZTsKK+mdtCA8IGJvb3RzOwor5YKyIDwgcHJvdWQ7CivpnJwgPCBmcm9zdDsKK+WQtSA8IGFyZ3VlOwor6YKqIDwgd3Jvbmc7CivohIYgPCBjcmlzcDsKK+absyA8IHRyYWlsOwor6ZuiIDwgbGVhdmU7Civlj5sgPCByZWJlbDsKK+e/vCA8IHdpbmdzOwor55ScIDwgc3dlZXQ7CivpmpkgPCBjcmFjazsKK+WChSA8IHR1dG9yOwor5Za3IDwgc3B1cnQ7CivlqLYgPCBtYXJyeTsKK+mXhyA8IGNsb3NlOwor57OWIDwgc3VnYXI7Civnj4ogPCBjb3JhbDsKK+eguCA8IHNtYXNoOwor57WeIDwgdHdpc3Q7CivovaggPCB0cmFjazsKK+exliA8IHRhbGx5Owor5pOSIDwgY2F0Y2g7Civmj4MgPCBzaGVhcjsKK+eukiA8IGJyb29tOwor6Y2uIDwgYnJhc3M7Civll5MgPCB2b2ljZTsKK+WVpSA8IHdoYXRcPzsKK+icnCA8IGhvbmV5Owor6YuPIDwgdG9uZ3M7Civogr8gPCBzd2VsbDsKK+ijmSA8IHNraXJ0Owor5bC/IDwgdXJpbmU7CivpgK4gPCBzZWl6ZTsKK+WAoSA8IGd1aWRlOwor5YWcIDwgcG91Y2g7CivprYQgPCB2aWdvcjsKK+ezlSA8IGNha2VzOwor56iaIDwgeW91bmc7CivpiI0gPCBibHVudDsKK+emvSA8IGJpcmRzOwor5oa6IDwgcGVhY2U7Civpk74gPCBjaGFpbjsKK+aGrCA8IHJvdXNlOwor5YezIDwgYmVuY2g7CivphawgPCB0b2FzdDsKK+eBvyA8IHZpdmlkOwor5pSAIDwgY2xpbWI7CivmsqsgPCBmcm90aDsKK+mtgSA8IGNoaWVmOwor5rulIDwgZmxvb2Q7CivmiLMgPCBwcmljazsKK+ahqSA8IHN0YWtlOwor6IK6IDwgbHVuZ3M7CivnurEgPCBnYXV6ZTsKK+mZoSA8IHN0ZWVwOwor54OrIDwgc2NhbGQ7CivpuYUgPCBnb29zZTsKK+aVniA8IHJvb215Owor5bOoIDwgbG9mdHk7CivomZAgPCBjcnVlbDsKK+i+qyA8IGJyYWlkOwor5oCmIDwgZWFnZXI7CivmtYcgPCBzcHJheTsKK+iGmyA8IGNoZXN0Owor6Ze1IDwgbW91cm47CivoopwgPCBzb2NrczsKK+i0vyA8IGJyaWJlOwor5aKFIDwgdmlsbGE7Civnp70gPCBkaXJ0eTsKK+WRuyA8IGdyb2FuOwor5ounIDwgcGluY2g7CivmnaAgPCBsZXZlcjsKK+e8jiA8IHNhdGluOwor5oOuIDwgZHJlYWQ7CivlmZcgPCBidXJzdDsKK+eftiA8IGpldHR5Owor57CHIDwgc3dhcm07Civmh4ogPCB2ZXhlZDsKK+aLhyA8IHRodW1iOwor6ZOyIDwgc3BhZGU7Civlk70gPCBjaG9rZTsKK+WGlSA8IGNyb3duOwor55auIDwgdHVtb3I7CivotYMgPCBib290eTsKK+WpiiA8IHdob3JlOwor6ZSvIDwgYVwtc2F3Owor5ZiIIDwgbm9pc3k7CivnvLAgPCByZWluczsKK+iuqiA8IGFidXNlOwor5b+hIDwgYVwtc2FkOwor6aaNIDwgYnJlYWQ7CivpooUgPCBza3VsbDsKK+eDmSA8IGJyYW5kOwor5Z+UIDwgcGxhaW47CivpmJwgPCBtb3VuZDsKK+eCrCA8IHRvcmNoOwor54KZIDwgcm9hc3Q7CivlqaogPCBjb3ZldDsKK+i5kSA8IHRyZWFkOwor56u6IDwgaW5kaWE7CivliYwgPCBzbGFzaDsKK+etmyA8IHNpZXZlOwor56+hIDwgdXN1cnA7CivpsrggPCB3aGFsZTsKK+aKoSA8IHN3aW5nOwor5rauIDwgcmluc2U7CivphbUgPCB5ZWFzdDsKK+aphCA8IG9saXZlOwor6ZuPIDwgY2hpY2s7CivmtqcgPCBicm9vazsKK+iFuiA8IGdsYW5kOwor5b+xIDwgdHJ1dGg7CivonL8gPCBjcmVlcDsKK+mVgCA8IHBsYXRlOwor6IOtIDwgcm91Z2U7CivotbMgPCBncmFuZDsKK+ezoCA8IGNoYWZmOwor5bibIDwgc2lsa3M7CivpsqggPCBzaGFyazsKK+i4nSA8IGFua2xlOwor55yIIDwgZ2xvYXQ7CivlgK0gPCBkd2FyZjsKK+mVkCA8IHN0b3ZlOwor6JmxIDwgbG91c2U7CivmkJAgPCBjcmFtcDsKK+aImyA8IGxhbmNlOwor5ZGDIDwgYmVsY2g7Civmpq0gPCBraW9zazsKK+mFqiA8IGNyZWFtOwor5a2AIDwgd2lkb3c7CivlraogPCB0d2luczsKK+eesCA8IHdhdGNoOwor5rCuIDwgeGVub247Civnl6MgPCBzcG90czsKK+aRkiA8IGV4cGVsOwor5L+4IDwgd2FnZXM7CivmhKAgPCBhbmdyeTsKK+aJqiA8IHN0b2tlOwor57uJIDwgY3JlcGU7Civnj4AgPCBhbWJlcjsKK+ivqSA8IGJvYXN0Owor6IqNIDwgcGVvbnk7CivopLYgPCBwbGVhdDsKK+mFlyA8IGRydW5rOwor5p+gIDwgbGVtb247Civor5kgPCB0ZWFzZTsKK+e7uiA8IHNrZWluOwor6YeJIDwgZ2xhemU7CivlrZsgPCBjb21ldDsKK+akvSA8IGJlYW1zOwor6aKmIDwgZnJvd247Civmt5YgPCBzbHVzaDsKK+iOoCA8IHdlZWRzOwor5qmbIDwgYVwtcGVnOwor6JK6IDwgZnVyemU7Civnv5UgPCBhZ3JlZTsKK+mcviA8IG1pc3R5Owor56CnIDwgYW52aWw7Civog7ogPCBhbWluZTsKK+ibrSA8IGxlZWNoOwor6K+oIDwgam9rZXM7CivmgKsgPCBzb3JyeTsKK+allCA8IHdlZGdlOwor55a9IDwgdWxjZXI7CivmoaQgPCBhbGRlcjsKK+mThiA8IHJpdmV0Owor5pK6IDwgaHVycnk7CivogoQgPCBsZWFybjsKK+WtoiA8IHNwb3JlOwor6bKyIDwgc3Bhd247Civpk6ggPCB3ZWlnaDsKK+ixlSA8IGFcLXBpZzsKK+esiiA8IGxhZGxlOwor5ZuXIDwgZXJlY3Q7Civpk6kgPCBtb3VsdDsKK+m5kSA8IHF1YWlsOwor5ZWBIDwgY2hpcnA7CivphpogPCBldGhlcjsKK+eQsCA8IGpld2VsOwor6L+oIDwgdW50aWw7CivpuawgPCBzbmlwZTsKK+WCiCA8IHRyaWJlOwor6ZOwIDwgaGluZ2U7CivnobwgPCBib3JheDsKK+mFryA8IGVzdGVyOwor6ZWqIDwgY29pbnM7CivmiaYgPCBwcm9iZTsKK+a6tyA8IHByaXZ5Owor5L+zIDwgYWN0b3I7CivomJYgPCBzdHVtcDsKK+WigCA8IHBvcmNoOwor5ZaIIDwgbXVzaWM7CivlkKEgPCBibGFtZTsKK+eYiiA8IHdhcnRzOwor5Y6jIDwgc2hlbGw7Civns4UgPCBibGVuZDsKK+mYjyA8IGJsb2NrOwor6bKCIDwgYnJlYW07Civmur0gPCBtb2lzdDsKK+ewjyA8IGFcLWJveDsKK+ijpSA8IGZvbGRzOwor57yzIDwgbm9vc2U7CivpvqAgPCBmbHV0ZTsKK+idpCA8IGxhcnZhOwor5Z+tIDwgYVwtZGFtOwor6bK2IDwgc2hlYXQ7CivplJ4gPCBpbmdvdDsKK+awoSA8IHJhZG9uOwor5qetIDwgbWFwbGU7CivlvZggPCBzd2luZTsKK+W9liA8IGFcLWhvZzsKK+a7lyA8IGRyYWluOwor5buRIDwgYVwtaHV0Owor5YyPIDwgZ291cmQ7Civnr7wgPCBzZWRhbjsKK+ibniA8IHNuYWlsOwor55KBIDwgXChnZW1cKTsKK+e7lyA8IGJhc3RlOwor5Z+YIDwgcm9vc3Q7Civlt7Tpu44gPCBwYXJpczsKK+S7o+eQhuS6uiA8IGFnZW50Owor6YGK6JWpIDwgc3RyYXk7CivlvITns58gPCBzcG9pbDsKK+aBqeWFuCA8IGdyYWNlOwor5aSn54i6IDwgdW5jbGU7Civml6XmnKwgPCBqYXBhbjsKK+WPr+WPryA8IGNvY29hOwor5Y+v5Y+jIDwgdGFzdHk7Civlu7bnt6kgPCBkZWZlcjsKK+WnquWlsyA8IG5pZWNlOwor6Zm36JC9IDwgc2x1bXA7CivniZvmjpIgPCBzdGVhazsKK+masee0hCA8IHZhZ3VlOwor5ZCI5L21IDwgYW5uZXg7Civorbflo6sgPCBudXJzZTsKK+aziuS9jSA8IGJlcnRoOwor542o5pyo6IifIDwgY2Fub2U7Civmop3mnb/nrrEgPCBjcmF0ZTsKK+mZs+WIl+iHuiA8IHN0YWxsOwor6YGK6ImHIDwgYmFyZ2U7CivpmbDojpYgPCBwZW5pczsKK+aZuuWIqSA8IGNoaWxlOwor5aOT56KOIDwgY3J1c2g7Civmr4/mr48gPCBvZnRlbjsKK+mfk+WciyA8IGtvcmVhOwor55+z54uAIDwgc3Rvbnk7CivnlLfkv67pgZPpmaLplbcgPCBhYmJvdDsKK+WIpeiZnyA8IGFsaWFzOwor5byV55SoIDwgcXVvdGU7CivluILplbcgPCBtYXlvcjsKK+eIkOaetiA8IGdyYXRlOwor5qmf6ZecIDwgb3JnYW47Civms6XmsLTljKAgPCBtYXNvbjsKK+m0ieeJhyA8IG9waXVtOwor5qSN54mp576kIDwgZmxvcmE7CivlnKjpq5jomZUgPCBhbG9mdDsKK+aSkOerv+i3syA8IHZhdWx0Owor5pS+54mnIDwgZ3JhemU7Civmr4/ml6UgPCBkYWlseTsKK+Wll+aIvyA8IHN1aXRlOwor6YGV56SZIDwgdGFib287CivlhKrpu54gPCBtZXJpdDsKK+W+mOW+iiA8IGhvdmVyOwor6KaW6Ka6IDwgc2lnaHQ7CivmlZjliKnkup4gPCBzeXJpYTsKK+WIgOiRiSA8IGJsYWRlOwor5pGp6KW/IDwgbW9zZXM7CivomZvlvLXogbLli6IgPCBibHVmZjsKK+iqv+WItuino+iqv+WZqCA8IG1vZGVtOwor6Z2S5bm0IDwgeW91dGg7CivmqJnpoYwgPCB0aXRsZTsKK+awqOWfuiA8IGFtaW5vOwor5qmf6Lu4IDwgYXJib3I7CivphpLkvoYgPCB3YWtlbjsKK+mWgOmWgiA8IGxhdGNoOwor6Z2I5benIDwgaGFuZHk7CivlhYPpn7MgPCB2b3dlbDsKK+WFi+mahiA8IGNsb25lOwor5pW05pW0IDwgd2hvbGU7CivljK/lr4QgPCByZW1pdDsKK+WJgeeijiA8IG1pbmNlOwor6Kq/5oOFIDwgZmxpcnQ7CivmnKrmiJDlubTkurogPCBtaW5vcjsKK+WMhuW/mSA8IGhhc3R5Owor5q+b5be+IDwgdG93ZWw7CivoirPpppkgPCBiYWxteTsKK+W5tOe0miA8IGdyYWRlOwor57Sr5LiB6aaZIDwgbGlsYWM7CivmlaPmlocgPCBwcm9zZTsKK+S4jeaWsOmuriA8IHN0YWxlOwor6KW/6JePIDwgdGliZXQ7CivlpKfovrLloLQgPCByYW5jaDsKK+eBq+i7iiA8IHRyYWluOwor5q275p2/IDwgcmlnaWQ7Civnn5vmn4QgPCBzaGFmdDsKK+mVt+mHmCA8IHNwaWtlOwor5q2l5qeNIDwgcmlmbGU7CivliLvnl5UgPCBub3RjaDsKK+mBuOawkSA8IHZvdGVyOwor6a2U6ay8IDwgZGV2aWw7CivmlrDlqJggPCBicmlkZTsKK+isoOWCsyA8IHJ1bW9yOwor5paw5aWHIDwgbm92ZWw7CivnhaTmuKMgPCBzbGFjazsKK+iKsemWiyA8IGJsb29tOwor54mp5Li7IDwgb3duZXI7CivlvYjlvJMgPCBzbGluZzsKK+WkmuawtOWIhiA8IGp1aWN5Owor5aCx56qpIDwgYnJvb2Q7CivpurXljIXluKvlgoUgPCBiYWtlcjsKK+mbu+W9sSA8IG1vdmllOwor5pG457SiIDwgZ3JvcGU7CivpgJ/njocgPCBzcGVlZDsKK+egtOWjniA8IHdyZWNrOwor57SE6I6rIDwgYWJvdXQ7Civlo4HmnrYgPCBsZWRnZTsKK+WRvOWPq+WZqCA8IHBhZ2VyOwor6ZqO5q61IDwgc3RhZ2U7CivljYHliIYgPCBmdWxseTsKK+WcsOmdoiA8IGZsb29yOwor6Ku35Yi6IDwgaXJvbnk7Civnmb3osrsgPCB3YXN0ZTsKK+mBi+aysyA8IGNhbmFsOwor5YWr6KeSIDwgYW5pc2U7CivpmbDmtrwgPCBzaGFkeTsKK+aTpua0lyA8IHNjb3VyOwor54ax5b+xIDwgYXJkb3I7CivntqDmtLIgPCBvYXNpczsKK+S4i+awtOmBkyA8IHNld2VyOwor5Zu66auUIDwgc29saWQ7Civlg6fpmaIgPCBhYmJleTsKK+aOqOmBuCA8IGVsZWN0Owor5o6o6YCyIDwgaW1wZWw7Civpl5znr4AgPCBqb2ludDsKK+W+nuS+huS4jSA8IG5ldmVyOwor6Imm6ZqKIDwgZmxlZXQ7Civmr5TliIYgPCBzY29yZTsKK+WJm+aenCA8IGNvbmdvOwor54Gr6IqxIDwgc3Bhcms7CivlvbHlg48gPCBpbWFnZTsKK+ebnOeriiA8IHN0ZWFsOwor6bq6IDwgZmxvdXI7CivpupggPCBzY2VudDsKK+m5viA8IHNhbHR5Owor6biyIDwgbXluYWg7CivkuozmpbXnrqEgPCBkaW9kZTsKK+edoeakhSA8IGNvdWNoOwor56u25oqA5aC0IDwgYXJlbmE7CivliqDlr6wgPCB3aWRlbjsKK+m0qiA8IHN3b29wOwor5Y+v5pOm5a+r5Y+v57eo56iL56WH6K6A5a2Y5YSy5ZmoIDwgZXByb207Civoqqrlh7ogPCB1dHRlcjsKK+a+s+mWgCA8IGFvbWVuOwor5o6o6KuWIDwgaW5mZXI7Civns6Lns4ogPCBmb2dneTsKK+mwniA8IHNxdWlkOwor5YuV5ZCRIDwgdHJlbmQ7CivlpKnkvb8gPCBhbmdlbDsKK+ikkOiJsiA8IGJyb3duOwor6ayG6ZaLIDwgbG9vc2U7Civmq7jmnKggPCBiZWVjaDsKK+mDqOS7tiA8IHBhcnRzOwor6LuM6YGTIDwgb3JiaXQ7CivprI4gPCBmYXZ1czsKK+mWg+iAgCA8IGdsaW50Owor6Iet6bysIDwgc2t1bms7Civpq7MgPCBzdGF0ZTsKK+mrsiA8IGFcLXdpZzsKK+eWvumiqCA8IGJsYXN0Owor5pSk5a2QIDwgYm9vdGg7CivlpKfkurogPCBhZHVsdDsKK+m6pemYv+WvhiA8IG1pYW1pOwor5Ye65rKSIDwgaGF1bnQ7Civpp54gPCBjYW1lbDsKK+mBk+W+tyA8IG1vcmFsOwor55m86IGyIDwgdm9jYWw7CivplbfogIEgPCBlbGRlcjsKK+S8keaBr+WupCA8IGxvYmJ5Owor5qi557GsIDwgaGVkZ2U7CivppZggPCBncnVlbDsKK+eQg+eLgOeJqSA8IGdsb2JlOwor6aSqIDwgZmVhc3Q7CivppKYgPCBjYW5keTsKK+W4neeOiyA8IHJlZ2FsOwor5by35YWJIDwgZ2xhcmU7Civpo7YgPCBvZG91cjsKK+mjkSA8IHN0b3JtOwor6LuM6LehIDwgbG9jdXM7Civou4zot50gPCBnYXVnZTsKK+ijnOiXpSA8IHRvbmljOwor5bCN5pW16ICFIDwgcml2YWw7Civlub3mmpcgPCBnbG9vbTsKK+aTlOaHriA8IHdvcnJ5Owor5qau6K29IDwgaG9ub3I7CivprZTooZMgPCBtYWdpYzsKK+megyA8IGJvYXJkOwor6Z2mIDwgdGltaWQ7CivpnLEgPCBjbG91ZDsKK+mcmSA8IHNsZWV0Owor6ZaL56uvIDwgc3RhcnQ7Civpm57lhqAgPCBjcmVzdDsKK+mZvCA8IGlzbGV0Owor6Zi5IDwgYVwtcGVuOwor5YiH5pybIDwgY3JhdmU7CivlhqzpnZLmqLkgPCBob2xseTsKK+aomeexpCA8IGxhYmVsOwor6ZWfIDwgbGF0aGU7CivnhLblvowgPCBhZnRlcjsKK+mCo+WFkiA8IHRoZXJlOwor6ZKDIDwgbWV0YWw7CivlnJbooaggPCBjaGFydDsKK+WcjeijmSA8IGFwcm9uOwor57KX57OZIDwgY3J1ZGU7CivmnpzlrZDlh40gPCBqZWxseTsKK+Wkp+WcsOWcliA8IGF0bGFzOwor5Ymq5aCxIDwgc2NyYXA7Civopo/mqKEgPCBzY2FsZTsKK+mCo+S6myA8IHRob3NlOwor6YiHIDwgYW5cLWF4Owor6L6m5rOVIDwgbWVhbnM7CivoiLnosqggPCBjYXJnbzsKK+atjOWKhyA8IG9wZXJhOwor54OP5pyoIDwgZWJvbnk7Civpm4XlkITmm7ggPCBqYW1lczsKK+eyieethiA8IGNoYWxrOwor57WV5oqAIDwgc3R1bnQ7Civoh4npoLAgPCBjaGVlazsKK+eZveeZoSA8IGlkaW90Owor6KeS5bqmIDwgYW5nbGU7Civnmbznl4UgPCBvbnNldDsKK+aEn+WMlumkheS5viA8IHdhZmVyOwor5Z+65pysIDwgYmFzaWM7CivngavnhLAgPCBibGF6ZTsKK+aOoue0oiA8IHF1ZXN0Owor5aGr5aGeIDwgc3R1ZmY7Civns5bmvL8gPCBzeXJ1cDsKK+eyieeijiA8IGNyYXNoOwor6Iux5Luj54i+IDwgaW50ZWw7CivosqQgPCBzdGVwczsKK+iIiei1tyA8IGhlYXZlOwor6LGUIDwgcGx1bXA7CivpgJnlpKkgPCB0b2RheTsKK+iumSA8IGNoZWVyOwor6K2BIDwgbm9pc2U7CivlsLzpvo0gPCBueWxvbjsKK+avm+iMuOiMuCA8IGhhaXJ5Owor6ZqK5LyNIDwgcmFua3M7Civop5QgPCBjYXR0eTsKK+W5heW6piA8IHdpZHRoOwor5qmh5pyoIDwgb2FrZW47Civnsr7mtrIgPCBzZW1lbjsKK+W6iuWWriA8IHNoZWV0Owor5YmD5YiAIDwgcmF6b3I7CivooJcgPCBcKGFwZVwpOwor5bC85pel54i+IDwgbmlnZXI7Civon6IgPCBjYXVsazsKK+WHs+WtkCA8IHN0b29sOwor6Ia96YePIDwgbmVydmU7CivonZggPCBnZWNrbzsKK+WGjeacgyA8IGFkaWV1Owor5qqz5a2QIDwgYmluemk7CivlhanmrKEgPCB0d2ljZTsKK+S/rumjviA8IGFkb3JuOwor57Si5byVIDwgaW5kZXg7Civlg7XnoawgPCBzdGFyazsKK+iYkyA8IHRoeW1lOwor6JiLIDwgYXBwbGU7Civlt6XmnIMgPCB1bmlvbjsKK+ijgueXlSA8IGNoYXNtOwor57Sw5bCPIDwgcGV0dHk7CivpqYXpmaQgPCByZXBlbDsKK+aoueaelyA8IHdvb2RzOwor5r2b6KGMIDwgc25lYWs7CivlnoLmrbsgPCBkeWluZzsKK+aouuacqCA8IGJpcmNoOwor6I6/IDwgdGhvcm47CivlhazmnIMgPCBndWlsZDsKK+iLtiA8IHdlYXJ5Owor5pS26Z+z5qmfIDwgcmFkaW87CivmkJPmj4kgPCBrbmVhZDsKK+iHvSA8IGFcLXBpdDsKK+iHsiA8IGp1bXB5Owor6IebIDwgYnJvdGg7CivpgJnkupsgPCB0aGVzZTsKK+W6h+S9kSA8IGJsZXNzOwor5YGH6KOdIDwgZmVpZ247Civovq7lrZAgPCBwbGFpdDsKK+mZjeS4iyA8IGxvd2VyOwor6IWhIDwgbGluZXM7CivmqJPmoq8gPCBzdGFpcjsKK+esrOS4ieasoSA8IHRoaXJkOwor6auY6IGyIDwgYWxvdWQ7CivlsIrprZogPCB0cm91dDsKK+iClSA8IHRvdWdoOwor5Zue562UIDwgcmVwbHk7CivogJ4gPCBmbGFpbDsKK+aLm+W+heWToSA8IHVzaGVyOwor57Ch55+tIDwgYnJpZWY7Civnv70gPCB3aGlycjsKK+WbpOepjSA8IGhvYXJkOwor57+EIDwgd2luZHM7Civpp7/ppqwgPCBzdGVlZDsKK+e9iSA8IGFcLXBvdDsKK+iJsueLvCA8IHNhdHlyOwor57q7IDwgcmFtaWU7CivovYnmkq0gPCByZWxheTsKK+aJuemHjyA8IGJhdGNoOwor57iPIDwgcHVyc2U7CivntowgPCBjbG90aDsKK+earuW4tiA8IHN0cmFwOwor5pKS5L2GIDwgc2F0YW47CivlhrDloZQgPCBzZXJhYzsKK+eyjiA8IG1ldHJlOwor566bIDwgYnVnbGU7CivovJXmn5MgPCB0aW5nZTsKK+etsCA8IGNhYmxlOwor562mIDwgYVwta2V5Owor56uUIDwgbGl0cmU7Civmi5voh7QgPCBpbmN1cjsKK+S4gOe3muW+ruWFiSA8IGdsZWFtOwor56mnIDwgc2hlYWY7CivmoJfpvKAgPCBidW5ueTsKK+W3q+WphiA8IHdpdGNoOwor6ZaA5buKIDwgc3Rvb3A7CivnpLYgPCBhXC1qdWc7CivmhI/lpKfliKkgPCBpdGFseTsKK+ejiCA8IHJvY2t5Owor54OY5Lm+IDwgcGFyY2g7CivmsLTlubPpnaIgPCBwbGFuZTsKK+WFrOWwuiA8IG1ldGVyOwor55+TIDwgZmFpbnQ7Civnno8gPCByb3VuZDsKK+S6num6u+W4gyA8IGxpbmVuOwor55y5IDwgcHVwaWw7CivkupToirHlhavploAgPCBteXJpZDsKK+ebjuWPuCA8IG91bmNlOwor55q9IDwgc2N1cmY7CivpqI7ou4ogPCBjeWNsZTsKK+eyvuWtkCA8IHNwZXJtOwor55mhIDwgc2lsbHk7Civlh4zkuoIgPCBjaGFvczsKK+S/muiqniA8IHNsYW5nOwor57SF5YipIDwgYm9udXM7CivmupzlhrDpnosgPCBza2F0ZTsKK+eUjiA8IGJyaWNrOwor5L2c5ZO86IGyIDwgc25vcnQ7Civln4Plj4ogPCBlZ3lwdDsKK+ijvemAoOiAhSA8IG1ha2VyOwor55GUIDwgXChqYWRlOwor54+WIDwgY2FyYXQ7CivnrKboqJggPCB0b2tlbjsKK+WWqumQmCA8IGtuZWxsOwor6IS56LW3IDwgYnVsZ2U7CivlhazlmbggPCB0b25uZTsKK+eEoeeUn+WRvSA8IGluZXJ0Owor54mcIDwgYW5cLW94Owor54mUIDwgZ2FibGU7CivpharovrLmpa0gPCBkYWlyeTsKK+eUn+iLlCA8IG1vc3N5Owor6aiZ6KGTIDwgdHJpY2s7CivmiZPoo70gPCBmb3JnZTsKK+eBoyA8IGFcLWJheTsKK+iFkOidlSA8IHJ1c3R5Owor5rC06JK45rCjIDwgdmFwb3I7Civlha3ljYEgPCBzaXh0eTsKK+WFrOWNhyA8IGxpdGVyOwor5Ly86ZuqIDwgc25vd3k7Civnl4Xmr5IgPCB2aXJ1czsKK+aOqOW0hyA8IHZhbHVlOwor6Lev57eaIDwgcm91dGU7Civlt6jkurogPCBnaWFudDsKK+WDj+eJh+ewvyA8IGFsYnVtOwor5omL6JedIDwgY3JhZnQ7CivotIjoiIfogIUgPCBnaXZlcjsKK+aWnOe0i+i7n+WRoiA8IHR3ZWVkOwor5rGzIDwgaGVuYW47CivlvrflhYvolqnmlq8gPCB0ZXhhczsKK+mmrOmBlCA8IG1vdG9yOwor5Zub5pyIIDwgYXByaWw7CivmrpEgPCBzd29vbjsKK+WFtuS4rSA8IGFtb25nOwor5q2IIDwgc29uZ3M7CivmrLggPCBzaWdoczsKK+a7kee/lCA8IGdsaWRlOwor5aSp6JeN6ImyIDwgYXp1cmU7CivoobDmlZcgPCBkZWNheTsKK+iLm+WIuyA8IGhhcnNoOwor5qqoIDwgbWFuZ287CivnqbrplpMgPCBzcGFjZTsKK+aolSA8IHNocnViOwor5o6g5aWqIDwgaGFycnk7Civlr5/oprogPCBhd2FyZTsKK+Wxi+ewtyA8IGVhdmVzOwor5qC86KiAIDwgbWF4aW07CivmpYUgPCBidWFyZDsKK+eTo+iGnCA8IHZhbHZlOwor5qSIIDwgY2VkYXI7Civmo4EgPCBqb2lzdDsKK+WcjeW3viA8IHNjYXJmOwor5a+T6KiAIDwgZmFibGU7CivooqvlrZAgPCBxdWlsdDsKK+agjSA8IGFcLWxvdDsKK+Wwj+iIjCA8IHV2dWxhOwor5bCx57eSIDwgcmVhZHk7Civou4DlubkgPCB0cnVuazsKK+aJi+iCmCA8IGVsYm93Owor5a6i6LuKIDwgY29hY2g7Civoib7lp6wgPCBhZ2dpZTsKK+mjm+ihjOWToSA8IHBpbG90Owor5Zyo5aSWIDwgb3V0ZXI7CivltIfmi5wgPCBhZG9yZTsKK+WFheS7vSA8IGFtcGxlOwor6auY5piOIDwgc21hcnQ7Civnl5vmgaggPCBhYmhvcjsKK+eXm+W/qyA8IGpvbGx5Owor5o2Q6LSI6ICFIDwgZG9ub3I7CivmlZQgPCBnYXZlbDsKK+ilv+ePreeJmSA8IHNwYWluOwor55S354i1IDwgYmFyb247Civlm7rlrpogPCBmaXhlZDsKK+Wwlue0sCA8IHRhcGVyOwor6Iqx5L+PIDwgZmFuY3k7CivotavojLIgPCBoZXJ0ejsKK+aMjCA8IGZpZ2h0Owor5o+Q5aSa5pu4IDwgdGl0dXM7CivlnI3ln44gPCBzaWVnZTsKK+aJoiA8IGNhcGVyOwor6Ie05pWsIDwgZ3JlZXQ7Civou43lnJggPCBjb3JwczsKK+aEgyA8IHJlbGF4Owor5o6S5YiXIDwgYXJyYXk7Civkv4/nmq4gPCBzYXVjeTsKK+iInuW8iiA8IGZyYXVkOwor5oK+IDwgbmFpdmU7Civoo5zkuIEgPCBwYXRjaDsKK+eUn+m6teezsCA8IGRvdWdoOwor5ru/6Lqr5aG15Z+DIDwgZHVzdHk7CivmvL/mnpwgPCBiZXJyeTsKK+mYv+aLieaRqSA8IGFsYW1vOwor6a2F5YqbIDwgY2hhcm07CivmvILmuLggPCBkcmlmdDsKK+W9kSA8IHNub3V0Owor6Kq/5ZGz6IKJ5rGBIDwgZ3Jhdnk7CivmvZHmjokgPCBzcGlsbDsKK+W4kiA8IGFcLWJhZzsKK+izh+mHkSA8IGZ1bmRzOwor55S36auY6Z+zIDwgdGVub3I7CivkuIDpu57lhZIgPCBhXC1iaXQ7Civltp4gPCByaWRnZTsKK+iHquaIkSA8IHNlbGZcLTsKK+aenOmFkiA8IGNpZGVyOwor5bSaIDwgaGlsbHk7CivmjbflhYsgPCBjemVjaDsKK+eUqOazlSA8IHVzYWdlOwor5a2Y6LKoIDwgc3RvY2s7Civpq5jlsJogPCBub2JseTsKK+aLjeaTiiA8IHNtYWNrOwor5auaIDwgc2Nvcm47CivlsI/mqLnmnpcgPCBncm92ZTsKK+W4g+iQiueIviA8IGJsYWlyOwor5Zyo77mN5LmL5LiLIDwgYmVsb3c7CivlnKjvuY3kuYvkuIogPCBhYm92ZTsKK+a/gOWFiSA8IGxhc2VyOwor5a6J6I+vIDwgYW53YXI7Civmi4LmjoMgPCB3aGlzazsKK+iIueWPqiA8IHNoaXBzOwor5aOGIDwgc3RpZmY7CivlorogPCB3YWxsczsKK+WijSA8IHBhaW50Owor5aGZIDwgdHJ1bHk7Civlm5vljYEgPCBmb3J0eTsKK+WdsCA8IHdpbGRzOwor5pKl54Gr5qONIDwgcG9rZXI7CivlmbogPCBzdG9yeTsKK+WXkCA8IGFsYXNcITsKK+a1gemrlCA8IGZsdWlkOwor5Za0IDwgaGVsbG87CivllbIgPCBhXC1mZXc7CivllY0gPCBjcmVhazsKK+WTtiA8IGJsZWF0Owor5ZKNIDwgbGF1Z2g7CivlkLAgPCBjbGFuZzsKK+evhOWcjSA8IHJhbmdlOwor5Y66IDwgdG9cLWdvOwor5Y6WIDwgYnVsa3k7CivkuInoibLntKvnvoXomK0gPCBwYW5zeTsKK+S/ruaUuSA8IGFtZW5kOwor5pyJ6aKoIDwgd2luZHk7CivpqZrmhYwgPCBwYW5pYzsKK+WcqOaXgemCiiA8IGFzaWRlOwor5YanIDwgYVwtYnVkOwor5Li76aGMIDwgdGhlbWU7Civnh5/mpa3lk6EgPCBjbGVyazsKK+WTquijoSA8IHdoZXJlOwor5ZyL6Zqb6Zu75aCx6Zu76Kmx5ZKo6Kmi5aeU5ZOh5pyDIDwgY2NpdHQ7CivorabloLHlmaggPCBzaXJlbjsKK+eVtuWcsCA8IGxvY2FsOwor5YCJ5bqrIDwgZGVwb3Q7CivkvbogPCBmYWlyeTsKK+S8iue0oiA8IGFlc29wOwor5YuV5oWL5b2x5YOPIDwgdmlkZW87CivkuInop5LmtLIgPCBkZWx0YTsKK+eskeaelyA8IGh1bW9yOwor5aiB54i+5aOrIDwgd2FsZXM7Civmo5rlrZAgPCBzaGFjazsKK+S2hyA8IGFcLXJhdDsKK+iCr+WwvOS6niA8IGtlbnlhOwor55S35a2QIDwgYVwtbWFuOwor6IKh56WoIDwgc2hhcmU7Civks7EgPCBkdWNrczsKK+m6teWMheeariA8IGNydXN0Owor6IKl56KpIDwgc3RvdXQ7Civkr40gPCBib25lczsKK+efs+WNl+aouSA8IGhlYXRoOwor5ou05L2PIDwgaGl0Y2g7CivooKLkuosgPCBmb2xseTsKK+SquyA8IGFcLWNhcDsKK+SplSA8IGNsb2dzOwor5LiL6ZuoIDwgcmFpbnk7CivpqZrlpYcgPCBhbWF6ZTsKK+SouSA8IHN3aWZ0Owor5Zm05Ye6IDwgc3BvdXQ7Civkp6ogPCBzaXNzeTsKK+SmniA8IGV4dHJhOwor5KWTIDwgYVwtaG9lOwor5KSZIDwgZHJlZ3M7CivohbHlrZAgPCBzaW5ldzsKK+abtOmBsiA8IGxhdGVyOwor6buR6LKCIDwgc2FibGU7CivknZIgPCBhXC1zb3c7Civkmp8gPCBob3JuczsKK+ieuue1sumHmCA8IHNjcmV3Owor5JqJIDwgb1wtc2VlOwor5rKZ6b6NIDwgc2Fsb247Civkl5UgPCBiZW5kczsKK+S/neWnhiA8IG5hbm55Owor5ZSx6Kmp54+tIDwgY2hvaXI7Civmi4nkuIEgPCBsYXRpbjsKK+SRgSA8IGZhdHR5Owor5pyD6KuHIDwgdGFsa3M7CivohIjmkI8gPCBwdWxzZTsKK+SPsyA8IG9sZWluOwor5I+vIDwgbW9sZXM7CivkjaUgPCBzbW9reTsKK+mHkemrriA8IGJsb25kOwor5I2MIDwgYVwtamFyOwor5LiJ5Y2D5LqU55m+IDwgM1wtNTAwOwor5IyRIDwgdGlnaHQ7CivkjJAgPCByb3BlczsKK+SKuyA8IHNpbGt5Owor5bCP5bGLIDwgY2FiaW47CivkiIkgPCBhXC1mYW47CivlmI7lmI4gPCBxdWFjazsKK+SEpSA8IGFcLWdvZDsKK+SEoiA8IHBpb3VzOwor5L6/5aOrIDwgcGVubnk7CivogLbnqYwgPCBqZXN1czsKK+SDmSA8IHJvY2tzOwor6Yu855C0IDwgcGlhbm87CivpqI7lo6sgPCByaWRlcjsKK+aJi+WllyA8IGdsb3ZlOwor6Lef5YmNIDwgZnJvbnQ7Civkv67liaogPCBwcnVuZTsKK+O+miA8IGl0Y2h5Owor6aaZ5paZIDwgc3BpY2U7CivkvLrmnI0gPCBzZXJ2bzsKK+enn+e0hCA8IGxlYXNlOwor47yPIDwgYVwtYmFkOwor5bCW5aGUIDwgc3BpcmU7Civll7blmLAgPCBzZXJnZTsKK+axoem7niA8IHN0YWluOwor5rOV6YOOIDwgZnJhbmM7CivmtLvokZcgPCBhbGl2ZTsKK+O6gyA8IGFcLWRvZzsKK+O5uyA8IHB1cHB5Owor47mLIDwgYVwtY293Owor6IKF5riFIDwgcHVyZ2U7CivjuIMgPCBhXC1kb3Q7CivnmbzniaLpqLcgPCB3aGluZTsKK+a3ueaykiA8IGZsdXNoOwor56ys5Y2BIDwgdGVudGg7CivmmYLpq6YgPCB2b2d1ZTsKK+aJk+WRvCA8IHNub3JlOwor47C8IDwgZ3JlZWQ7CivppJjnh7wgPCBlbWJlcjsKK+OvtyA8IGRhdGVzOwor56ys5YWtIDwgc2l4dGg7CivjrqUgPCBzYWlsczsKK+e+veiOliA8IHF1aWxsOwor5bCB5ZywIDwgbWFub3I7CivpoYzop6MgPCBub3RlczsKK+mVt+mguOeTtiA8IGZsYXNrOwor5LiA6KGMIDwgcGFydHk7CivjqJcgPCBhbGVydDsKK+OogyA8IGFcLXJvdzsKK+Wwj+WQgyA8IHNuYWNrOwor5a6J5YWo55CG5LqL5pyDIDwgdGhlXC11Owor46eNIDwgYWxpa2U7Civnj43nj6AgPCBwZWFybDsKK+m8u+eFmSA8IHNudWZmOwor5rSL6JSlIDwgb25pb247CivnpLrlqIHpgYvli5UgPCByYWxseTsKK+i2o+WKhyA8IGZhcmNlOwor5L2O5buJIDwgY2hlYXA7Civlk4Dnl5sgPCBncmllZjsKK+esrOS6lCA8IGZpZnRoOwor56ys5LmdIDwgbmludGg7CivjobYgPCBkd2VsbDsKK+OhkCA8IGZsYWdzOwor46GMIDwgYVwtaGF0Owor46GHIDwgY29sYXI7CivmnInnt5ogPCB3aXJlZDsKK+OeviA8IGFcLW51bjsKK+OelSA8IGNoaXBzOwor456SIDwgbHVzdHk7CivmiLLliocgPCBkcmFtYTsKK+i8ieiyqOaxvei7iiA8IGxvcnJ5Owor572p6KGrIDwgc21vY2s7CivjlqQgPCB3cmF0aDsKK+OVjiA8IGNhdmVzOwor55q655yJ6aCtIDwgc2Nvd2w7Civjk50gPCBhXC1sYXc7Civjk4EgPCBhXC1uZXQ7CivjkqkgPCBuYWtlZDsKK+OSjCA8IGFsb25nOwor546H55u0IDwgZnJhbms7CivjkLEgPCBidXNoeTsKK+aZr+ixoSA8IHNjZW5lOwor6LGh54mZIDwgaXZvcnk7Civllp3lj7EgPCBjaGlkZTsKK+eQtOW8piA8IGNob3JkOwor542O56ugIDwgbWVkYWw7CivlrZDmiL8gPCBvdmFyeTsKK+aAquiqlSA8IGZyZWFrOwor5rex5bqmIDwgZGVwdGg7CivljYjppJAgPCBsdW5jaDsKK+eNteeKrCA8IGhvdW5kOwor55CG5oOzIDwgaWRlYWw7CivogL3mk7EgPCB0YXJyeTsKK+aXhemkqCA8IGhvdGVsOwor6aas5L6GIDwgbWFsYXk7CivppqzkvJUgPCBncm9vbTsKK+Wkp+m5vyA8IG1vb3NlOwor6IGW5b6SIDwgc2FpbnQ7CivkuJbnlYwgPCB3b3JsZDsKK+S8iuaWr+iYreaVmSA8IGlzbGFtOwor5rib5Y67IDwgbWludXM7CivkurrmgKcgPCBodW1hbjsKK+aFiOaCsiA8IG1lcmN5Owor6KuW6aGMIDwgdG9waWM7CivljaHou4ogPCB0cnVjazsKK+e9jOeynyA8IHBvcHB5Owor5paR6aasIDwgemVicmE7CivlpZfpkJggPCBjaGltZTsKK+WuiOWAmSA8IGFiaWRlOwor5p2/5bKpIDwgc2xhdGU7CivpoK3nmq4gPCBzY2FscDsKK+WNkeizpCA8IGxvd2x5Owor5Y2H6LW3IDwgaG9pc3Q7CivmtYHmtarogIUgPCByb3ZlcjsKK+iyneWvpyA8IGJlbmluOwor5peL6L2JIDwgd2hpcmw7CivngYzmnKjlj6IgPCBzY3J1YjsKK+aXpeiomCA8IGRpYXJ5Owor5LmD5pivIDwgdG9cLWJlOwor5paw6L+RIDwgbmV3bHk7CivlkLjmsKMgPCBzbmlmZjsKK+iqmOmZtyA8IHNuYXJlOwor5p2T5a2QIDwgc2Nvb3A7CivmhJ/lrpggPCBzZW5zZTsKK+acrOW9sSA8IHVtYnJhOwor5Lq65ZOhIDwgc3RhZmY7CivnuozoqIIgPCByZW5ldzsKK+abtOaUuSA8IGFsdGVyOwor5ZCJ5pmu6LO95Lq6IDwgZ3lwc3k7CivmlLbppIogPCBhZG9wdDsKK+aAqueVsCA8IHdlaXJkOwor6LKT5ZKqIDwga2l0dHk7CivmsrzmvqQgPCBnbGFkZTsKK+eijuW4g+ainSA8IHNocmVkOwor5rGh56miIDwgbmFzdHk7CivkuInmnIggPCBtYXJjaDsKK+WFp+WcqOeahCA8IGlubmVyOwor6Zu76YO1IDwgZW1haWw7Civli53pgY4gPCBleGNlbDsKK+itieeroCA8IGJhZGdlOwor5rW35ZywIDwgaGFpdGk7Civpm7fpgZQgPCByYWRhcjsKK+mssemHkemmmSA8IHR1bGlwOwor5aSx6KqkIDwgbGFwc2U7CivpgorpmpsgPCBsaW1pdDsKK+eLgueGsSA8IGNyYXplOwor5LqU5Y2BIDwgZmlmdHk7Civpm6rojITnhZkgPCBjaWdhcjsKK+adseS6rCA8IHRva3lvOwor5q+S6JuHIDwgdmlwZXI7CivpoIzmrYwgPCBjYXJvbDsKK+WSleWalSA8IGdydW50Owor5LiA5omTIDwgZG96ZW47Civoqabph5EgPCBhc3NheTsKK+mgreaaiCA8IGRpenp5Owor5ZC556yb6ICFIDwgcGlwZXI7CivkuIDlt7TmjowgPCBzcGFuazsKK+eEpum7niA8IGZvY3VzOwor57Wx5rK76ICFIDwgcnVsZXI7Civnupbntq0gPCBmaWJlcjsKK+S6i+S7tiA8IGV2ZW50Owor6YCX6bueIDwgY29tbWE7Civlkoblk64gPCBncm93bDsKK+WRvOWPq+iBsiA8IHdob29wOwor6YKP6LyvIDwgbG9naWM7Civmm7Tlo54gPCB3b3JzZTsKK+W6p+WPs+mKmCA8IG1vdHRvOwor5LiJ56ic6Y+hIDwgcHJpc207CivkuK3lnIsgPCBjaGluYTsKK+WkmuiRiSA8IGxlYWZ5Owor5LiA5bGkIDwgbGF5ZXI7Civnh7vogokgPCBiYWNvbjsKK+aToumZniA8IGV4YWx0Owor5oSb5YWL5pav5YWJIDwgeFwtcmF5Owor5aSn6IW/IDwgdGhpZ2g7CivmnKzkurogPCBpXC1cKG1lOwor6Z+75paHIDwgdmVyc2U7CivnhorospMgPCBwYW5kYTsKK+aWkee+miA8IGdvcmFsOwor55+u5aKp5aKpIDwgcHVkZ3k7CivokaHokIQgPCBncmFwZTsKK+eNjuWTgSA8IGF3YXJkOwor6buP5L2PIDwgY2xpbmc7Civlj6/mgJUgPCBhd2Z1bDsKK+mBjumBkyA8IGFpc2xlOwor56Sm5belIDwgbWluZXI7CivmrYzorKAgPCBjaGFudDsKK+aymeaLiSA8IHNhbGFkOwor5paX56+3IDwgY2xvYWs7CivmnIjku70gPCBtb250aDsKK+mbm+iPiiA8IGRhaXN5Owor5YyF56mAIDwgbWFpemU7CivpmL/niL7ms5UgPCBhbHBoYTsKK+mAvOi/qyA8IGZvcmNlOwor5aqS5LuLIDwgbWVkaWE7Civlk6rkuIDlgIsgPCB3aGljaDsKK+aVmee+qSA8IGNyZWVkOwor5ZCI6IKh57eaIDwgdHdpbmU7CivpoIHlsqkgPCBzaGFsZTsKK+eRnuWFuOS6uiA8IHN3ZWRlOwor5Y6t5oOhIDwgbG9hdGg7Civkvb/nvp7mhKcgPCBhYmFzaDsKK+aYj+aalyA8IGR1c2t5Owor5q+U546HIDwgcmF0aW87CivpnI7nnLwgPCBibGluazsKK+aZtOWkqSA8IHN1bm55Owor55S35a2Q5rCjIDwgbWFubHk7Civkvb/lqJvmqIIgPCBhbXVzZTsKK+aciSA8IGhhdmU7Civnn6UgPCBrbm93Owor6L+ZIDwgdGhpczsKK+efnCA8IHBpdHk7Civlv5kgPCBidXN5Owor5p2lIDwgY29tZTsKK+i/kSA8IG5lYXI7CivpgZMgPCBwYXRoOwor5LmfIDwgYWxzbzsKK+aXtiA8IHRpbWU7CivlubQgPCB5ZWFyOwor5567IDwgbG9vazsKK+i+uiA8IGVkZ2U7CivlsLEgPCBqdXN0Owor6YKjIDwgdGhhdDsKK+eUnyA8IGxpZmU7Civoh6ogPCBzZWxmOwor556sIDwgd2luazsKK+i/hyA8IHBhc3M7CivlvqogPCBvYmV5Owor5b6eIDwgZnJvbTsKK+WkmiA8IG11Y2g7Civlpb0gPCBnb29kOwor6LW3IDwgcmlzZTsKK+WPqiA8IG9ubHk7CivkvZwgPCBtYWtlOwor5b2TIDwgYmVhcjsKK+W9oiA8IGZvcm07CivlvIAgPCBvcGVuOwor5omLIDwgaGFuZDsKK+W8sSA8IHdlYWs7CivmnKwgPCByb290Owor5aS0IDwgaGVhZDsKK+ecnyA8IHJlYWw7CivpnaIgPCBmYWNlOwor5YWsIDwgZmFpcjsKK+WQjCA8IHNhbWU7CivliqggPCBtb3ZlOwor6ZW/IDwgbG9uZzsKK+i8iSA8IGxvYWQ7CivlsIYgPCB3aWxsOwor6LqrIDwgYm9keTsKK+mrmCA8IGhpZ2g7CivmioogPCBob2xkOwor55ulIDwgd2FzaDsKK+aciCA8IG1vb247Civnp40gPCBzZWVkOwor6LuNIDwgYXJteTsKK+i7iiA8IGNhcnQ7Civpg6ggPCBwYXJ0Owor5ZCNIDwgbmFtZTsKK+eariA8IHNraW47CivmnLogPCBkZXNrOwor57uZIDwgZ2l2ZTsKK+etiSA8IHJhbms7CivluqcgPCBzZWF0Owor5b6IIDwgdmVyeTsKK+acgCA8IG1vc3Q7CivlupcgPCBzaG9wOwor6LqNIDwgc2tpcDsKK+i1sCA8IHdhbGs7Civlm5sgPCBmb3VyOwor6ZeoIDwgZ2F0ZTsKK+S4nCA8IGVhc3Q7CivluoEgPCBoYWxsOwor6KW/IDwgd2VzdDsKK+W5syA8IGZsYXQ7CivlkKwgPCBoZWFyOwor5bm4IDwgbHVjazsKK+i5tCA8IGtpY2s7CivkupQgPCBmaXZlOwor5bi3IDwgdGVudDsKK+W4tiA8IGJlbHQ7CivluIwgPCByYXJlOwor6LiKIDwgbGVhcDsKK+S5piA8IGJvb2s7CivkuZ0gPCBuaW5lOwor6LezIDwganVtcDsKK+i3ryA8IHJvYWQ7Civnl6kgPCB0aGluOwor5rS7IDwgbGl2ZTsKK+W3piA8IGxlZnQ7Civlt6MgPCBuZXN0Owor6KGoIDwgc2hvdzsKK+i3nyA8IGhlZWw7Civnl5sgPCBwYWluOwor55eVIDwgc2NhcjsKK+eXkiA8IGl0Y2g7CivmhJ8gPCBmZWVsOwor6LazIDwgZm9vdDsKK+mHkSA8IGdvbGQ7CivkvZUgPCB3aGF0Owor5pu0IDwgbW9yZTsKK+eWiyA8IHJvbGw7CivlgZogPCB3b3JrOwor6K6hIDwgcGxhbjsKK+eOiyA8IGtpbmc7CivlkIQgPCBlYWNoOwor55WZIDwgc3RvcDsKK+eVjyA8IGZlYXI7CivnlLcgPCBtYWxlOwor6aOOIDwgd2luZDsKK+W0lyA8IHBvc3Q7Civmr5sgPCBoYWlyOwor5bOwIDwgcGVhazsKK+eIsSA8IGxvdmU7Civnk6YgPCB0aWxlOwor6LOjIDwgc2VsbDsKK+izgyA8IHJlbnQ7CivosrggPCBsZW5kOwor5bK4IDwgYmFuazsKK+e7kyA8IGtub3Q7CivlsqwgPCBjYXBlOwor5rWBIDwgZmxvdzsKK+iypyA8IHBvb3I7CivpnZIgPCBibHVlOwor566hIDwgcGlwZTsKK+i/niA8IGpvaW47CivpmJ8gPCB0ZWFtOwor5bGRIDwgYml0czsKK+mihiA8IG5lY2s7CivlsYggPCBiZW5kOwor5bC+IDwgdGFpbDsKK+WNiiA8IGhhbGY7CivlgJkgPCB3YWl0Owor5q2lIDwgc3RlcDsKK+a3sSA8IGRlZXA7CivljLogPCBhcmVhOwor5bCLIDwgc2VlazsKK+eQgyA8IGJhbGw7CivlkYogPCB0ZWxsOwor5a+4IDwgaW5jaDsKK+a7oSA8IGZpbGw7CivmnY4gPCBwbHVtOwor5oGvIDwgcmVzdDsKK+WvkiA8IGNvbGQ7Civlr4QgPCBzZW5kOwor5Y+WIDwgdGFrZTsKK+WupCA8IHJvb207CivlrpsgPCBzZWVtOwor5a2pIDwgYmFieTsKK+W5vyA8IHdpZGU7CivnjokgPCBqYWRlOwor54GrIDwgZmlyZTsKK+iugCA8IHJlYWQ7Civorb0gPCBmYW1lOwor5YiZIDwgcnVsZTsKK+WksSA8IGxvc2U7CivljIUgPCB3cmFwOwor54y2IDwgbGlrZTsKK+iQvSA8IGZhbGw7CivmtY4gPCBoZWxwOwor6KyhIDwgc2luZzsKK+e8liA8IGtuaXQ7CivosIggPCB0YWxrOwor5ouJIDwgcHVsbDsKK+eLvCA8IHdvbGY7CivmnYAgPCBraWxsOwor5auMIDwgaGF0ZTsKK+WFiyA8IGdyYW07CivlhrIgPCBzb2FyOwor5o6oIDwgcHVzaDsKK+ensCA8IGNhbGw7CivoqaYgPCB0ZXN0Owor5Y+3IDwgbWFyazsKK+S6miA8IGFzaWE7CivmuK8gPCBwb3J0Owor6IisIDwgc29ydDsKK+eIqiA8IGNsYXc7CivliJogPCBoYXJkOwor6ZmGIDwgbGFuZDsKK+ehriA8IHN1cmU7CivlhbcgPCB0b29sOwor5aiBIDwgcG9tcDsKK+e6vyA8IGxpbmU7Civop6YgPCBidXR0Owor6KeSIDwgaG9ybjsKK+eHkiA8IGJ1cm47CivlprsgPCB3aWZlOwor6ZyAIDwgbmVlZDsKK+mFkiA8IHdpbmU7Civpk4EgPCBpcm9uOwor6KaXIDwgcGVlazsKK+WMuyA8IGN1cmU7CivopbIgPCByYWlkOwor54WuIDwgY29vazsKK+WcnyA8IHNvaWw7Civova8gPCBzb2Z0Owor54WkIDwgY29hbDsKK+WllyA8IGNhc2U7CivmiLcgPCBkb29yOwor6IOMIDwgYmFjazsKK+aalyA8IGRhcms7CivpobsgPCBtdXN0Owor6KO4IDwgYmFyZTsKK+agkSA8IHRyZWU7CivmsokgPCBzaW5rOwor6IGMIDwgZHV0eTsKK+e7hiA8IGZpbmU7Civoo5wgPCBtZW5kOwor6KKiIDwgcm9iZTsKK+aXgSA8IHNpZGU7CivlobUgPCBkdXN0Owor5aGpIDwgc2FsdDsKK+atjCA8IHNvbmc7CivngYwgPCBwb3VyOwor5aGAIDwgd2FsbDsKK+WgpCA8IGRpa2U7CivmgbYgPCBldmlsOwor5aCGIDwgaGVhcDsKK+aFoiA8IHNsb3c7CivloIAgPCBjYXZlOwor6J+7IDwgYW50czsKK+iXjyA8IGhpZGU7Civln4sgPCBidXJ5Owor5r65IDwgY2FsbTsKK+WeoiA8IGRpcnQ7Civono0gPCBtZWx0Owor5r2uIDwgdGlkZTsKK+aVkSA8IHNhdmU7CivkuJ0gPCBzaWxrOwor6b2KIDwgZXZlbjsKK+m8uyA8IG5vc2U7CivmvKwgPCBzb2FrOwor6byTIDwgZHJ1bTsKK+a8jyA8IGxlYWs7CivlvZUgPCBjb3B5Owor6YGHIDwgbWVldDsKK+iIuSA8IHNoaXA7Civpu7QgPCBtb2xkOwor5ru0IDwgZHJpcDsKK+mbqCA8IHJhaW47Civom5kgPCBmcm9nOwor5ruRIDwgc2xpcDsKK+m6uyA8IGhlbXA7CivomqQgPCBmbGVhOwor6bm/IDwgZGVlcjsKK+aymSA8IHNhbmQ7CivlmZsgPCBiaXRlOwor5ouNIDwgY2xhcDsKK+aOiSA8IHR1cm47Civlk60gPCB3ZWVwOwor5ZiGIDwgc2lnaDsKK+WNiCA8IG5vb247CivljaEgPCBjYXJkOwor6ZuqIDwgc25vdzsKK+a3tSA8IGd1bGY7CivmtrwgPCBjb29sOwor5Yi6IDwgc3RhYjsKK+iWqiA8IGZ1ZWw7CivpsbwgPCBmaXNoOwor5ZaYIDwgcGFudDsKK+ebmCA8IHRyYXk7CivolpQgPCByb3NlOwor5p62IDwgcmFjazsKK+asviA8IGl0ZW07CivmtaogPCB3YXZlOwor6JWpIDwgcG9uZDsKK+a0qiA8IHZhc3Q7CivplYcgPCB0b3duOwor5rWEIDwgcHVyZTsKK+aXhSA8IHRyaXA7CivllL4gPCBzcGl0Owor6aqoIDwgYm9uZTsKK+WUliA8IGR1bWI7CivptIkgPCBjcm93Owor5ZSHIDwgbGlwczsKK+azsyA8IGRpdmU7Civlk7IgPCB3aXNlOwor5ZOpIDwgbWlsZTsKK+WcoyA8IGhvbHk7Civps6UgPCBiaXJkOwor5pmTIDwgZGF3bjsKK+ayvCA8IGxha2U7Civohb8gPCBsZWdzOwor5o6iIDwgZmluZDsKK+iRpiA8IHJlZWQ7CivmsaAgPCBwb29sOwor6JGJIDwgbGVhZjsKK+adnyA8IGJpbmQ7CivlkYYgPCBkdWxsOwor5ZC7IDwga2lzczsKK+WQuSA8IGJsb3c7CivmsI8gPCBjbGFuOwor562+IDwgc2lnbjsKK+awiCA8IGZlbHQ7CivlpbYgPCBtaWxrOwor6I+pIDwgaGVyYjsKK+WPoiA8IGJ1c2g7CivmjIIgPCBoYW5nOwor6IiqIDwgc2FpbDsKK+aLsyA8IGZpc3Q7CivkuZggPCByaWRlOwor5Z2AIDwgc2l0ZTsKK+avhiA8IGJlYXQ7CivprYIgPCBzb3VsOwor5LmUIDwgdGFsbDsKK+eyriA8IGZvb2Q7CivmlY8gPCBmYXN0Owor6IyOIDwgc3RlbTsKK+mbtiA8IHplcm87Civli74gPCBob29rOwor5LmDIDwgdGhlbjsKK+aKrCA8IGxpZnQ7Civoi5QgPCBtb3NzOwor5YaSIDwgcmlzazsKK+aqoyA8IG1hc3Q7Civpl60gPCBzaHV0Owor56KXIDwgYm93bDsKK+WJpSA8IHBlZWw7Civom4sgPCBlZ2dzOwor5L+DIDwgdXJnZTsKK+adsCA8IGhlcm87CivoiJ8gPCBib2F0Owor6L+fIDwgbGF0ZTsKK+i1liA8IHJlbHk7Civpp5IgPCBjb2x0Owor6aa0IDwgdGFtZTsKK+iGnSA8IGtuZWU7Civmi5YgPCBkcmFnOwor5piPIDwgZHVzazsKK+aIkiA8IHdhcm47CivpobUgPCBwYWdlOwor5LqVIDwgd2VsbDsKK+iEhyA8IHJpYnM7CivkuY8gPCBsYWNrOwor6IOeIDwgd29tYjsKK+aiqCA8IHBlYXI7CivphbggPCB0YXJ0Owor5qG2IDwgcGFpbDsKK+e7qSA8IHNwaW47Civmk6YgPCB3aXBlOwor5q63IDwgbWFueTsKK+iAlSA8IHBsb3c7CivmmpYgPCB3YXJtOwor6ZSBIDwgbG9jazsKK+egjSA8IGhhY2s7CivmhYggPCBraW5kOwor5765IDwgc291cDsKK+merSA8IHdoaXA7CivnvqggPCBlbnZ5Owor5pKkIDwgb21pdDsKK+etuSA8IGNoaXA7CivmnZYgPCBjYW5lOwor6ZywIDwgaGFpbDsKK+a7iyA8IGdyb3c7CivosLEgPCBsaXN0Owor5LiYIDwgaGlsbDsKK+adhiA8IHBvbGU7CivpmoggPCBjb3ZlOwor57qCIDwgZWRpdDsKK+WUiSA8IGFsYXM7CivnrLwgPCBjYWdlOwor57mqIDwgZHJhdzsKK+e5qSA8IHJvcGU7Civnn78gPCBtaW5lOwor6ZWWIDwgZGFydDsKK+WFhiA8IG9tZW47CivmiqsgPCB3ZWFyOwor5YC6IDwgZGVidDsKK+WgoSA8IGZvcnQ7CivpooIgPCBsYXVkOwor57WGIDwgbG9vcDsKK+mSiSA8IG5haWw7Civlk4QgPCBjb2F4Owor6ZODIDwgYmVsbDsKK+WlkSA8IGRlZWQ7Civmh5IgPCBsYXp5Owor54yOIDwgaHVudDsKK+aRuiA8IGZvbGQ7CivnrosgPCBub3RlOwor5o2yIDwgY3VybDsKK+engyA8IGJhbGQ7CivpuK0gPCBkdWNrOwor5ZC8IDwgcm9hcjsKK+equiA8IHBlZXA7Civlj6AgPCBwaWxlOwor6YqRIDwgbWlsbDsKK+mAuCA8IGZsZWU7CivotLEgPCBtZWFuOwor54uuIDwgbGlvbjsKK+WmriA8IG1haWQ7CivnqpEgPCBraWxuOwor5oW+IDwgbHVzdDsKK+eltyA8IHByYXk7CivouYQgPCBob29mOwor54OkIDwgYmFrZTsKK+WwrCA8IGxpbXA7CivpgLEgPCB3ZWVrOwor5oCgIDwgaWRsZTsKK+iDtiA8IGdsdWU7CivmorMgPCBjb21iOwor5ZWkIDwgYmVlcjsKK+mFvyA8IGJyZXc7CivmjaMgPCBodWxsOwor5ZmiIDwgbW9hbjsKK+eqnyA8IGhvbGU7CivlhZEgPCBjYXNoOwor5rK4IDwgYm9pbDsKK+eYviA8IHJhc2g7Civlpp4gPCBnaXJsOwor5bicIDwgZmxhZzsKK+iVviA8IGJ1ZHM7Civpk4UgPCBsZWFkOwor6ZSjIDwgZ29uZzsKK+WXpiA8IHN1Y2s7CivovbQgPCBheGxlOwor5raVIDwgdGVhcjsKK+WQhiA8IGJhd2w7CivogYsgPCBkZWFmOwor5YufIDwgbGV2eTsKK+eagiA8IHNvYXA7Civon7kgPCBjcmFiOwor5ZSgIDwgY2hhdDsKK+WVgyA8IGduYXc7CivnvpQgPCBsYW1iOwor6ZSIIDwgcnVzdDsKK+iFkyA8IGNhbGY7CivpqqEgPCBtdWxlOwor6YaHIDwgcmljaDsKK+e6rCA8IHdvb2Y7Civom6QgPCBjbGFtOwor5ZGxIDwgd2FpbDsKK+aIjiA8IGFybXM7CivolLwgPCBsdXNoOwor56SBIDwgcmVlZjsKK+mXqSA8IGJvbHQ7Civot5sgPCBsYW1lOwor5YGMIDwgdGh1czsKK+eujSA8IGhvb3A7Civon6AgPCBjb2lsOwor5o6CIDwgaGVmdDsKK+mBkCA8IGFmYXI7CivlkKAgPCBiYXJrOwor6Ju+IDwgbW90aDsKK+iAmCA8IHdlZWQ7Civon74gPCB0b2FkOwor562PIDwgcmFmdDsKK+mypCA8IGNhcnA7CivoiosgPCB0YXJvOwor6bmqIDwgd3JlbjsKK+iclSA8IG1vbHQ7CivnhIogPCB3ZWxkOwor6ICZIDwgcmFrZTsKK+e8hCA8IHNlYWw7CivmvKkgPCBlZGR5Owor6aW1IDwgYmFpdDsKK+iwkSA8IGplZXI7Civpoo8gPCBjaGluOwor6IquIDwgdGlueTsKK+eSqCA8IGdlbXM7Civms7UgPCBwdW1wOwor6LGMIDwgcGVhczsKK+WgkSA8IG1vYXQ7CivnlrUgPCBmbGF3Owor5qaIIDwgcGFsbTsKK+msgyA8IG1hbmU7Civlkp0gPCBoaXNzOwor6YKLIDwgcmFnczsKK+iDpCA8IGhlaXI7CivnspUgPCBsZWVzOwor5oyeIDwgZmxvZzsKK+mVqyA8IGxhbXA7CivpmIQgPCBsb3RzOwor6ZSMIDwgemluYzsKK+WWmSA8IGJlYWs7CivogpsgPCBhbnVzOwor55eCIDwgc2NhYjsKK+m4oiA8IGtpdGU7Civova0gPCB5b2tlOwor5rS1IDwgdHJ1ZTsKK+azhSA8IHN3aW07Civnn74gPCBhbHVtOwor6JqpIDwgd29ybTsKK+m4tyA8IGhhd2s7CivogIsgPCBhZ2VkOwor5Z2oIDwgbHVtcDsKK+eWsSA8IGFjbmU7CivniKggPCBvdmVuOwor5ouKIDwgc2xhcDsKK+mqnyA8IGdlbGQ7CivlnLkgPCB0b21iOwor6b6IIDwgZ3VtczsKK+mYiyA8IGZldWQ7CivphbAgPCBhY3lsOwor55ajIDwgd2FydDsKK+epkSA8IGZhcm07CivnpLsgPCBjdWx0Owor5L2kIDwga2F3YTsKK+m6uCA8IGJyYW47Civoj5YgPCBpcmlzOwor5auxIDwgbGFkeTsKK+iwnSA8IGJyYWc7CivmsJYgPCBuZW9uOwor6LeWIDwgc29sZTsKK+iaiyA8IGduYXQ7Civlgb4gPCBydWluOwor55aSIDwgc2ljazsKK+WZjSA8IGNoZXc7CivmtLMgPCBkYW1wOwor54KxIDwgc29vdDsKK+iGqiA8IHBvcms7Civnu7IgPCBjb3JkOwor5a6AIDwgcm9vZjsKK+W4tumcsiA8IGRld3k7CivoloTlkb0gPCBcKHVzdTsKK+WKn+e4viA8IGZlYXQ7CivmmrTkuoIgPCByaW90Owor54ib5rOlIDwgb296ZTsKK+aXpeacnyA8IGRhdGU7Civlp6jlqr0gPCBhdW50Owor5LyK5ouJ5YWLIDwgaXJhcTsKK+W5veiwtyA8IGRlbGw7CivmlZnnmocgPCBwb3BlOwor5ZCR5LiLIDwgZG93bjsKK+mAn+ihjCA8IHJ1c2g7CivmnInog73lipsgPCBhYmxlOwor6YCZ6KOhIDwgaGVyZTsKK+e8uuWPoyA8IG5pY2s7Civljp/lrZAgPCBhdG9tOwor54uC5ZCgIDwgaG93bDsKK+W/g+aDhSA8IG1vb2Q7Civph47lhZQgPCBoYXJlOwor5Z+66YeRIDwgZnVuZDsKK+Wfg+exs+eIviA8IGVtaXI7Civnn7PniYcgPCBzbGFiOwor5ZKW5ZWh6aSoIDwgY2FmZTsKK+WGsOmOriA8IGljZWQ7Civnhr7nhrEgPCBnbG93Owor55+z54GwIDwgbGltZTsKK+earumerSA8IGxhc2g7CivlhrfphbcgPCBncmltOwor56Gs5bmjIDwgY29pbjsKK+WHneimliA8IGdhemU7CivmlZnmtL4gPCBzZWN0Owor5YWs6ZueIDwgY29jazsKK+inkuiJsiA8IHJvbGU7CivnupbluqYgPCBzaXplOwor5aWJ5om/IDwgZmF3bjsKK+mcsum9kuiAjOeskSA8IGdyaW47CivoqrLmlocgPCB0ZXh0Owor6ZW36Z20IDwgYm9vdDsKK+eJouWbuiA8IGZpcm07Civnmb7pnYggPCBsYXJrOwor6YCa6KGM56iFIDwgdG9sbDsKK+eOieicgOm7jSA8IGNvcm47CivpgI/ntIUgPCByb3N5Owor5pW45pOaIDwgZGF0YTsKK+ipqeatjCA8IHBvZW07CivlsI/mr5von7IgPCBzbHVnOwor5qiC6ZqKIDwgYmFuZDsKK+awo+WRsyA8IG9kb3I7CivnhKHnpq4gPCBydWRlOwor6YO95biCIDwgY2l0eTsKK+ilv+iWhCA8IGNha2U7CivmnIDkuLvopoEgPCBtYWluOwor6Zuq5pKsIDwgc2xlZDsKK+mBqOa4uCA8IHJvYW07Civmr5LlrrMgPCBiYW5lOwor54y25LuW5beeIDwgdXRhaDsKK+e0sOiDniA8IGNlbGw7CivljZHliqMgPCBiYXNlOwor5b6p5Y6fIDwgaGVhbDsKK+WIpeeahCA8IGVsc2U7CivlhazosawgPCBib2FyOwor6Kq/5a2QIDwgdHVuZTsKK+ecvOeciyA8IHNvb247CivpnaLlhbcgPCBtYXNrOwor5byn5b2iIDwgYXJjaDsKK+S9v+WPl+WCtyA8IGh1cnQ7CivnmKbplbcgPCBzbGltOwor6Iqx6YKKIDwgbGFjZTsKK+Whq+a7vyA8IGNyYW07Civoq77kup4gPCBub2FoOwor5aSW5aWXIDwgY29hdDsKK+mVt+ilqiA8IGhvc2U7Civnq4vmlrnpq5QgPCBjdWJlOwor6ZW36KKNIDwgZ293bjsKK+W8t+WnpiA8IHJhcGU7CivnhafmlpkgPCB0ZW5kOwor5o6h6YKRIDwgZmllZjsKK+aOoOmBjiA8IGZsaXQ7CivngbDoibIgPCBncmF5Owor55m96aqo6aCCIDwgY29vdDsKK+e0sOeciyA8IHBlZXI7Civpu7YgPCBtb2xlOwor6KSq6ImyIDwgZmFkZTsKK+m6miA8IGJ1Y2s7Civpganmh4kgPCBzdWl0Owor6bqMIDwgc3RhZzsKK+m6gyA8IHRpbGw7CivpuYYgPCBteW5hOwor5LiA6KeS6YqA5bmjIDwgZGltZTsKK+WJneaOiSA8IHBhcmU7Civpg7Xku7YgPCBtYWlsOwor556R5oOzIDwgbXVzZTsKK+mBiuaIsiA8IGdhbWU7Civnr4Dpu54gPCBub2RlOwor6aivIDwgbG91ZDsKK+mnvSA8IGdyZXk7CivmjbLou7ggPCByZWVsOwor6aWMIDwgZmVlZDsKK+aVo+WHuiA8IHNoZWQ7Civpo6EgPCBtZWFsOwor5bei56m0IDwgbGFpcjsKK+a0i+Wog+WogyA8IGRvbGw7CivpmL/mm7wgPCBvbWFuOwor5bug5a2QIDwgeWFyZDsKK+i6sumBvyA8IHNodW47CivnhrHlipsgPCBoZWF0Owor6ZieIDwgdmVpbjsKK+S4i+S4gOasoSA8IG5leHQ7Civmt7rpu4PoibIgPCBidWZmOwor6ZeGIDwgYm9zczsKK+ewveiovCA8IHZpc2E7Civps7Tlj6sgPCBob290Owor6ZWpIDwgcGljazsKK+mVlSA8IGZ1c2U7CivpkaIgPCBmaWxlOwor6ZCpIDwgbGVuczsKK+aUtuWJsiA8IHJlYXA7CivntrLlrZQgPCBtZXNoOwor6Zuc5LqCIDwgbWVzczsKK+aOieiQvSA8IGZsb3A7Civpo7Lpo5/nmYLppIogPCBkaWV0Owor6Kmp5Lq6IDwgYmFyZDsKK+Wkp+iii+WtkCA8IHNhY2s7CivooajosaEgPCBpZGVhOwor6IiS6YGpIDwgY296eTsKK+iLseeVnSA8IGFjcmU7CivmraXkvJAgPCBwYWNlOwor6L2XIDwgZmFpbDsKK+aOpee4qyA8IHNlYW07CivlhazniZsgPCBidWxsOwor57KX56CCIDwgZ3JpdDsKK+WFrOeItSA8IGR1a2U7Civot7wgPCBiZW50Owor5Ye656ef6LuKIDwgdGF4aTsKK+i3siA8IGhvb2Q7Civoj5zllq4gPCBtZW51Owor5qmr5qiRIDwgYmVhbTsKK+iztSA8IGdpZnQ7CivooZPoqp4gPCB0ZXJtOwor5Ymb5YuBIDwgYm9sZDsKK+ihmuihlSA8IGxhbmU7Civoib7ntaggPCBtb3hhOwor6KqnIDwgaHVnZTsKK+innSA8IGdvcmU7CivlhYjopovogIUgPCBzZWVyOwor6Iqx55O2IDwgdmFzZTsKK+igrSA8IGJlZXM7CivmqZ/mmbogPCB0YWN0Owor5YK+6IG9IDwgaGFyazsKK+ieiSA8IHdhc3A7CivpkJjpoK0gPCBob3VyOwor6JiSIDwgXDoxNDM7Civol58gPCB2aW5lOwor54K45b2IIDwgYm9tYjsKK+WbnuiBsiA8IGVjaG87Civok6sgPCBkb2NrOwor6Kej5YeNIDwgdGhhdzsKK+iQnCA8IGM1aDg7Civoj74gPCBiZWV0Owor6ZW35qeNIDwgcGlrZTsKK+WFreaciCA8IGp1bmU7Civlg7HnlKggPCBoaXJlOwor5ZyT55ukIDwgZGlzazsKK+WcsOeNhCA8IGhlbGw7CivniLXlo6voiJ4gPCBqYXp6Owor6Zi/5YCRIDwgYW1lbjsKK+iFtiA8IG1lYXQ7CivohLIgPCB1cmVhOwor6Lev6YKKIDwgY3VyYjsKK+imluWcliA8IHZpZXc7CivmkofljrsgPCBza2ltOwor6L6y5aW0IDwgc2VyZjsKK+iJvua7i+eXhSA8IGFpZHM7CivluLPllq4gPCBiaWxsOwor6I2J5Z2qIDwgbGF3bjsKK+aQtuWlqiA8IHNuYXA7Civpm7vnh4jms6EgPCBidWxiOwor56uBIDwgYm9yZTsKK+epnCA8IHJpY2U7CivnprggPCBydW1wOwor5YO55qy+IDwgY29zdDsKK+aoo+W8jyA8IHR5cGU7CivmkI3lrrMgPCBoYXJtOwor5qih5byPIDwgbW9kZTsKK+ebn+WPiyA8IGFsbHk7Civnn7sgPCB0b2lsOwor55a855ebIDwgYWNoZTsKK+aok+W7giA8IGxvZnQ7Civnm67nnqrlj6PlkYYgPCBzdHVuOwor5bGB6KmxIDwgc2hpdDsKK+mPiOi3ryA8IGxpbms7CivnjLblpKfmm7ggPCBqdWRlOwor5L2O6Z+zIDwgYmFzczsKK+eUqOiGsyA8IGRpbmU7CivnrJHoqbEgPCBqb2tlOwor5bGx576KIDwgZ29hdDsKK+ertuizvSA8IHJhY2U7CivnrKjom4sgPCBmb29sOwor5bKp55+zIDwgcm9jazsKK+eVpeeivCA8IGNvZGU7CivmtrQgPCBkYXViOwor6LyD5bCRIDwgbGVzczsKK+eZvuWQiCA8IGxpbHk7CivohbDogokgPCBsb2luOwor5Zyw5bi2IDwgem9uZTsKK+mWo+S4iyA8IHNpcmU7Civpvo3pqqggPCBrZWVsOwor5aSn6aCt6YeYIDwgdGFjazsKK+S/nee+hSA8IHBhdWw7CivoibLlvakgPCB0aW50Owor5qqNIDwgaWxleDsKK+anuSA8IHNwYXI7CivmjbLluLYgPCB0YXBlOwor5qSRIDwgb3ZhbDsKK+mNjemHkSA8IGdpbGQ7CivmjIfmqJkgPCBub3JtOwor6KGd5pKeIDwgZGFzaDsKK+afoyA8IHNpbGw7CivlsqnmvL8gPCBsYXZhOwor5p+CIDwgaGVsbTsKK+aPoeS9jyA8IGdyaXA7CivmnJggPCB3YW5lOwor5ZyT5bGL6aCCIDwgZG9tZTsKK+aTqyA8IHR1Y2s7CivnrZbnlaUgPCBwbG90Owor5pGyIDwgcmF6ZTsKK+aQmCA8IHByb3A7Civkup7pursgPCBmbGF4Owor5o6eIDwgZWFzeTsKK+WciOWllyA8IHRyYXA7Civpm5nog57og44gPCB0d2luOwor57GD5ZyIIDwgcmluZzsKK+iGveaxgSA8IGdhbGw7CivmhrAgPCB3aWx5Owor5oCzIDwgd2lsZDsKK+aOoeS8kCA8IGZlbGw7CivkuIDloYrpurUgPCBsb2FmOwor6Zu75qmf5Y+K6Zu75a2Q5a245bel56iL5bir6IGv5ZCI5pyDIDwgaWVlZTsKK+WAn+asviA8IGxvYW47CivliLDvuY3kuYvkuIogPCBvbnRvOwor6KKW5Y+jIDwgY3VmZjsKK+WFqOmrlOS6uuWToSA8IGNyZXc7Civkvb/nlKjogIUgPCB1c2VyOwor56eY6a2vIDwgcGVydTsKK+WDp+S+tiA8IG1vbms7CivlrbsgPCBsYXN0Owor5ouW5ouJIDwgaGF1bDsKK+WqiiA8IHN0YXI7CivlqLggPCB1Z2x5Owor6YGg56iL55uj5o6nIDwgcm1vbjsKK+WcqO+5jeS5i+S4rSA8IGFtaWQ7CivlnI3kvY8gPCBnaXJkOwor5aekIDwgbWF0ZTsKK+ajjeajkiA8IGNsdWI7Civmi43miZMgPCBmbGFwOwor6aO+6YeYIDwgc3R1ZDsKK+WBj+W3riA8IGJpYXM7CivpqrDlrZAgPCBkaWNlOwor6IGW6KmpIDwgaHltbjsKK+WkluWwj+iFvyA8IHNoaW47Civpi6roqK0gPCBwYXZlOwor5ZC9IDwgJydvbScnOwor6JuL55m955+zIDwgb3BhbDsKK+aer+iQjiA8IHdpbHQ7CivliJwgPCBjaG9wOwor5YiTIDwgdHJpbTsKK+S4gOWIhumMoiA8IGNlbnQ7CivnlrLlgKYgPCB0aXJlOwor6LOi6IO9IDwgc2FnZTsKK+a1t+i7jSA8IG5hdnk7Civoh63lkbMgPCBmdW1lOwor5L6cIDwgbGllczsKK+S8sSA8IHRob3U7Civlgbblg48gPCBpZG9sOwor5bCP6LW36YeN5qmfIDwgamFjazsKK+i3qOW6piA8IHNwYW47Civks7wgPCBndWxsOwor5p6c6IKJIDwgcHVscDsKK+SxtCA8IHR1bmE7Civkr5UgPCBib255Owor5ZG96YGLIDwgZmF0ZTsKK+Wtl+evgCA8IGJ5dGU7CivnvoXppqwgPCByb21lOwor6ICD6KmmIDwgZXhhbTsKK+SnuyA8IGRvdmU7CivlgI3loZQgPCBiZXRhOwor5ZyT6YyQ6auUIDwgY29uZTsKK+aCoOmWkiA8IGVhc2U7CivkvK/niLUgPCBlYXJsOwor5ZGo6YGKIDwgdG91cjsKK+ShgCA8IG51ZGU7CivkoI8gPCBmZWV0Owor5Jq9IDwgbmV3czsKK+eQteeQtiA8IGx1dGU7CivkmYogPCBhcmlkOwor6Iag5Y23IDwgZmlsbTsKK+SWrSA8IGdydWI7CivlsIjnlKjpm4bmiJDpm7vot68gPCBhc2ljOwor5JK6IDwgY2xheTsKK+WTgeiEqyA8IHBpbnQ7CivlsI/ls7YgPCBpc2xlOwor6JaE6ZynIDwgbWlzdDsKK+S9leaZgiA8IHdoZW47Civlj6PpoK0gPCBvcmFsOwor5Luk54uAIDwgd3JpdDsKK+SBhiA8IGV5ZXM7CivkgYUgPCByYWdlOwor6JWo6aGeIDwgZmVybjsKK+SAgCA8IGN1cHM7Civjv5kgPCBmdWxsOwor4765IDwgbGVhbjsKK+aKk+S9jyA8IGdyYWI7CivonILonJzphZIgPCBtZWFkOwor5qC45b+DIDwgY29yZTsKK+axuumspSA8IGR1ZWw7CivosYbohZAgPCB0b2Z1Owor5ZKS5721IDwgZGFtbjsKK+OyuyA8IHN1bms7CivjsrQgPCBtaW5kOwor47KcIDwgcnVnczsKK+OwqyA8IGdsYWQ7CivjsJ8gPCBob3BlOwor466kIDwgcGluZTsKK+icguaIvyA8IGhpdmU7CivjrpIgPCB3b29kOwor46uxIDwgbWlsZDsKK+mmrOW7hCA8IGJhcm47Civkup7nlbYgPCBhZGFtOwor57+F6IaAIDwgd2luZzsKK+mHkeWxrOiWhOeJhyA8IGZvaWw7CivkvIrmnJcgPCBpcmFuOwor5Li7576pIDwgXC1pc207CivpuqXoir0gPCBtYWx0Owor54u56LC3IDwgZ2xlbjsKK+eJoem5vyA8IGhhcnQ7CivlnKjkuYvkuIogPCBvdmVyOwor5ZCN6KmeIDwgbm91bjsKK+WtmOaguSA8IHN0dWI7CivpoK3ohabmuIXmpZogPCBzYW5lOwor45qnIDwgYWdpbDsKK+WPsuipqSA8IGVwaWM7CivosrTlqabkurogPCBkYW1lOwor5a625ZySIDwgaG9tZTsKK+eJm+mjsiA8IGd1bHA7Civos7rlvpcgPCBlYXJuOwor6LGO55C0IDwgaGFycDsKK+S4gOe+pCA8IGdhbmc7Civpn7Poqr8gPCB0b25lOwor5p2/5qKdIDwgbGF0aDsKK+iytOaXjyA8IGxvcmQ7Civlk4jmrKAgPCB5YXduOwor6LGs5rK5IDwgbGFyZDsKK+mMq+WuiSA8IHppb247CivnjbXniakgPCBwcmV5Owor57SF5a+255+zIDwgcnVieTsKK+eKr+imjyA8IGZvdWw7Civou5/mnKjloZ4gPCBjb3JrOwor5rK56IaPIDwgYmFsbTsKK+ePreaIvyA8IGphaWw7CivmlpHpu54gPCBzcG90Owor5rWu5qiZIDwgYnVveTsKK+WutuS8mSA8IGNoYXA7CivlvozpnaIgPCByZWFyOwor5aSp6bWdIDwgc3dhbjsKK+aVtOm9iiA8IHRpZHk7CivlnKjmsLTmraXooYwgPCB3YWRlOwor5q+N6aasIDwgbWFyZTsKK+Wtl+WeiyA8IGZvbnQ7CivlronlhaggPCBzYWZlOwor57KJ57SF6ImyIDwgcGluazsKK+WtpOWWriA8IGxvbmU7CivmnKjmobYgPCBjYXNrOwor6aO+5bi2IDwgc2FzaDsKK+iAgeaSviA8IGxhb3M7CivmnKbmnKcgPCBibHVyOwor6Kqy6aGMIDwgdGFzazsKK+ePoOWtkCA8IGJlYWQ7CivlkbzlkbzogbIgPCB3aGlyOwor5b+r5q2l6LeRIDwgdHJvdDsKK+azoueJuSA8IGJhdWQ7Civph47npr0gPCBmb3dsOwor5pqI55ypIDwgZGF6ZTsKK+iqquisiuiAhSA8IGxpYXI7Civmn5DkupsgPCBzb21lOwor5by36aKoIDwgZ2FsZTsKK+m6u+acqCA8IG51bWI7Civpmarlr6nlnJggPCBqdXJ5Owor6Z+B57mpIDwgcmVpbjsKK+WQpuaxuiA8IHZldG87CivmspnnmbwgPCBzb2ZhOwor5LuW5YCRIDwgdGhleTsKK+azoeayqyA8IGZvYW07CivniZvogokgPCBiZWVmOwor5LiD5pyIIDwganVseTsKK+S4gOacjSA8IGRvc2U7CivosYblrZAgPCBiZWFuOwor5aq95aq9IDwgbWFtYTsKK+aVj+mKsyA8IGtlZW47CivmsrnmsrkgPCBvaWx5Owor5YyF6KOdIDwgcGFjazsKK+axoeeXlSA8IGJsb3Q7CivnjJvmkp4gPCBzbGFtOwor6Z2i572pIDwgdmVpbDsKK+mereeXlSA8IHdlbHQ7Civkup7kuIEgPCBhZGVuOwor542o5aWPIDwgc29sbzsKK+aykOa1tCA8IGJhdGg7CivmnIDlpb0gPCBiZXN0Owor6KqT6KmeIDwgb2F0aDsKK+WLleipniA8IHZlcmI7Civpq5jniL7lpKvnkIMgPCBnb2xmOwor5pq05b6SIDwgdGh1ZzsKK+axveawtCA8IHNvZGE7Civnn63opaogPCBzb2NrOwor5byV6K2JIDwgY2l0ZTsKK+mIleW4tiA8IGJvbmQ7CivliY3pnaIgPCBmb3JlOwor6Zmj6aKoIDwgZ3VzdDsKK+aDoeWKoyA8IHZpbGU7Civmr5vnt5ogPCB5YXJuOwor5YyX57SEIDwgbmF0bzsKK+mHjeaTiiA8IGJhbmc7CivmraXoqr8gPCBnYWl0Owor6YCa6aKoIDwgYWlyeTsKK+iuiuaPmyA8IHZhcnk7Civokrznmb0gPCBwYWxlOwor5rC05ru0IDwgZHJvcDsKK+e5lOW4g+apnyA8IGxvb207Civpm7voqbHpiLTogbIgPCBidXp6Owor5pS26JePIDwga2VlcDsKK+mbu+e3miA8IHdpcmU7CivkuIDlkLkgPCBwdWZmOwor5q+b55quIDwgcGVsdDsKK+mBi+iyuyA8IGZhcmU7Civlo4HombEgPCB0aWNrOwor5pKl6ZaLIDwgcG9rZTsKK+i/t+mZoyA8IG1hemU7Civol6XkuLggPCBwaWxsOwor5YWJ57qW5YiG5L2I5pW45pOa5o6l5Y+jIDwgZmRkaTsKK+mcsueHnyA8IGNhbXA7Civmr5LniakgPCBwZXN0Owor5LiAIDwgb25lOwor5Lq6IDwgbWFuOwor5oiRIDwgb3VyOwor5aSnIDwgYmlnOwor5LiKIDwgdG9wOwor5L2gIDwgeW91Owor5Y+vIDwgbWF5Owor5aW5IDwgc2hlOwor5aSpIDwgc2t5Owor6ICMIDwgYW5kOwor54S2IDwgeWVzOwor5rKhIDwgbm90Owor5pelIDwgc3VuOwor5b2pIDwgaHVlOwor5Y2BIDwgdGVuOwor55SoIDwgdXNlOwor55y8IDwgZXllOwor6KeBIDwgc2VlOwor6ICBIDwgb2xkOwor5LikIDwgdHdvOwor5aSWIDwgb3V0Owor5rOVIDwgbGF3Owor54K5IDwgZG90Owor55ucIDwgcm9iOwor5YW2IDwgaGlzOwor5YS/IDwgc29uOwor5pawIDwgbmV3Owor5bqKIDwgYmVkOwor55qGIDwgYWxsOwor5rW3IDwgc2VhOwor5bCRIDwgZmV3Owor5bi9IDwgaGF0Owor5Y+rIDwgY3J5Owor5q27IDwgZGllOwor5pS+IDwgcHV0Owor5LuKIDwgbm93Owor6LWkIDwgcmVkOwor55WiIDwgZW5kOwor5oiYIDwgd2FyOwor6LO8IDwgYnV5Owor55O2IDwganVnOwor6K+3IDwgYXNrOwor5LqkIDwgbWl4Owor5ZCDIDwgZWF0Owor6L+QIDwgcnVuOwor572RIDwgbmV0Owor6aOeIDwgZmx5Owor54y/IDwgYXBlOwor54yrIDwgY2F0Owor54yqIDwgcGlnOwor5Z2QIDwgc2l0Owor6KyCIDwgc2F5Owor54uXIDwgZG9nOwor5YiHIDwgY3V0Owor6KqkIDwgZXJyOwor54OtIDwgaG90Owor54mbIDwgY293Owor5L2OIDwgbG93Owor5LuNIDwgeWV0Owor6ISaIDwgbGVnOwor5aWIIDwgYnV0Owor5o6SIDwgcm93Owor5aOeIDwgYmFkOwor5rm+IDwgYmF5Owor5aKoIDwgaW5rOwor6KGTIDwgYXJ0Owor5r+YIDwgbXVkOwor5r+VIDwgd2V0Owor6ZyyIDwgZGV3Owor6b2iIDwgYWdlOwor6J2ZIDwgYmF0Owor6J2LIDwgd2F4Owor6bygIDwgcmF0Owor6JyCIDwgYmVlOwor5pGHIDwgd2FnOwor5rK5IDwgb2lsOwor6JeJIDwgbWF0Owor5rayIDwgc2FwOwor6JavIDwgeWFtOwor6ICzIDwgZWFyOwor5ZaLIDwgbmFnOwor5ZWcIDwgc2lwOwor5ZOAIDwgc2FkOwor5YawIDwgaWNlOwor5p2vIDwgY3VwOwor5rCjIDwgYWlyOwor6JCMIDwgYnVkOwor6YCUIDwgd2F5Owor6Iy2IDwgdGVhOwor5Y21IDwgZWdnOwor5pKtIDwgc293Owor6IeCIDwgYXJtOwor5qy3IDwgc29iOwor5YyaIDwgYm94Owor5pGpIDwgcnViOwor5YagIDwgY2FwOwor6Iq4IDwgcnVlOwor57yYIDwgaGVtOwor5p+TIDwgZHllOwor6Ia/IDwgcHVzOwor5qa7IDwgY290Owor5YaGIDwgeWVuOwor6IWQIDwgcm90Owor6ISCIDwgZmF0Owor5o+0IDwgYWlkOwor5ZO8IDwgaHVtOwor5YG1IDwgc3B5Owor6aGOIDwgamF3Owor572QIDwgamFyOwor5o23IDwgd2luOwor6ZynIDwgZm9nOwor5Lm+IDwgZHJ5Owor57ydIDwgc2V3Owor5oqaIDwgcGF0Owor5oyWIDwgZGlnOwor5omHIDwgZmFuOwor5LmeIDwgYmVnOwor6LWMIDwgYmV0Owor5qygIDwgb3dlOwor5rCbIDwgZ2FzOwor57egIDwgdGllOwor54KSIDwgZnJ5Owor6ZShIDwgdGluOwor5Z2RIDwgcGl0Owor5pKVIDwgcmlwOwor56OVIDwgaGl0Owor6LCOIDwgbGllOwor6YqcIDwgYml0Owor6LWLIDwgdGF4Owor5ZuKIDwgYmFnOwor5pCCIDwgaHVnOwor5byTIDwgYm93Owor5bqQIDwgaHV0Owor5q+vIDwgcnVnOwor6ZKlIDwga2V5Owor5panIDwgYXhlOwor6LmmIDwgaG9wOwor6L+iIDwgZmFyOwor6JqCIDwgYW50Owor6ZSEIDwgaG9lOwor5o2FIDwgamFiOwor5qGoIDwgb2FyOwor54u4IDwgZm94Owor54yWIDwgbWFkOwor6La+IDwgdG9lOwor6Ji4IDwgZGlwOwor55CmIDwgZ2VtOwor55W4IDwgb2RkOwor5Z2vIDwgZGFtOwor6bOdIDwgZWVsOwor5oCpIDwgc2h5Owor6bugIDwgc2x5Owor6ZSbIDwgYWR6Owor6bqLIDwgZWxrOwor6bONIDwgZmluOwor5YiNIDwgbW93Owor5p+eIDwgb2FrOwor6Z6jIDwgdGFuOwor5YOWIDwgam95Owor576dIDwgcmFtOwor5Z+kIDwgYWRkOwor56m655m96bueIDwgZ2FwOwor5rGC5oSbIDwgd29vOwor5ZCM5L2NIDwgcGFyOwor54K655Sa6bq8IDwgd2h5Owor5Y+X5YiwIDwgZ2V0Owor5Y+v5LulIDwgY2FuOwor6YWS5buKIDwgYmFyOwor55S35a2p5a2QIDwgYm95Owor5ray5pm26aGv56S6IDwgbGNkOwor56C05biDIDwgcmFnOwor5by35ouJIDwgdHVnOwor54Sh6Iqx5p6cIDwgZmlnOwor57aT55SxIDwgdmlhOwor6Kit5rOVIDwgdHJ5Owor5aaC5L2VIDwgaG93Owor55y855WMIDwga2VuOwor5bm85424IDwgY3ViOwor6Zui5a2QIDwgaW9uOwor6LKT5Y+r6IGyIDwgbWV3Owor54Sm5rK5IDwgdGFyOwor6YCA5r2uIDwgZWJiOwor6b2jIDwgYWN0Owor54Gr6IW/IDwgaGFtOwor6bmLIDwgZW11Owor6Zmw5pqXIDwgZGltOwor57i95ZKMIDwgc3VtOwor6bSeIDwgb3dsOwor6bKVIDwgcm9lOwor6ay3IDwgcG90Owor6ayGIDwgbGF4Owor6auiIDwgd2lnOwor56CN5LyQIDwgaGV3Owor5Yi65o6iIDwgcHJ5Owor5bi45pil6JekIDwgaXZ5Owor6ZGvIDwgYXdsOwor54OP5ZCI5LmL55y+IDwgbW9iOwor5YmN5aSVIDwgZXZlOwor5aCF5p6cIDwgbnV0Owor6L2RIDwgcnV0Owor6Li2IDwgcGF3Owor5YWI55SfIDwgc2lyOwor5qyE5ZyIIDwgcGVuOwor5bCP57K+6Z2IIDwgZWxmOwor6Kaq5bGsIDwga2luOwor57Si5YW36KOd572uIDwgcmlnOwor5ouW6LuKIDwgdG93Owor5aGr5YWFIDwgcGFkOwor5YWs5YWx5rG96LuKIDwgYnVzOwor6JK0IDwgcG9kOwor6ICB5aSp54i6IDwgZ29kOwor6Zu26bue5YWtIDwgMFwuNjsKK+aoheaouSA8IGZpcjsKK+eUnOmFkiA8IHJ1bTsKK+e+hyA8IGlubjsKK+WHuuWDuSA8IGJpZDsKK+WCs+ecnyA8IGZheDsKK+iLpuaDsSA8IGFpbDsKK+WFrem7nuWFrSA8IDZcLjY7CivpqqjnvYggPCB1cm47Civou5/mr5sgPCBmdXI7CivnoLIgPCBndW47CivnmZkgPCBpbGw7CivovJXmiZMgPCB0YXA7CivlsI/osrsgPCB0aXA7CivmpobmqLkgPCBlbG07CivmvZogPCBnYXk7Civlt6XkvZwgPCBqb2I7CivogovpqqggPCByaWI7CivmpY4gPCBwZWc7CivmoqkgPCBob2Q7Civpq5TogrLppKggPCBneW07CivmnYUgPCB0dWI7CivkuIPpu57kupQgPCA3XC41Owor5LiD6bue5LqMIDwgN1wuMjsKK+WcsOWcliA8IG1hcDsKK+aUtSA8IHJhcDsKK+WLleeJqeWckiA8IHpvbzsKK+mshuW8myA8IHNhZzsKK+mkoemkhSA8IHBpZTsKK+WcluWDj+S6kuaPm+agvOW8jyA8IGdpZjsKK+WwhOe3miA8IHJheTsKK+mLuOmWiyA8IHNhdzsKK+aenOmGrCA8IGphbTsKK+WcjeWFnCA8IGJpYjsKK+WsmyA8IGFwdDsKK+eMtuWkquS6uiA8IGpldzsKK+aLluaKiiA8IG1vcDsKK+S5iOm7niA8IGFjZTsKK+Wwj+eLlyA8IHB1cDsKK+iyqOi7iiA8IHZhbjsKK+Wck+W9ouacqOadkCA8IGxvZzsKK+m7numgrSA8IG5vZDsKK+Wwjea6liA8IGFpbTsKK+WZtOWwhCA8IGpldDsKK+WCouS8mSA8IGd1eTsKK+S5oiA8IGxpZDsKK+mpouWtkCA8IGFzczsKK+mjm+ifsiA8IGJ1ZzsKK+ethuWwliA8IG5pYjsKK+ShnCA8IGNhcjsKK+m6pemFkiA8IGFsZTsKK+S/ruWlsyA8IG51bjsKK+SdhiA8IGhvZzsKK+acg+iyuyA8IGR1ZTsKK+S5vuiNiSA8IGhheTsKK+SMoiA8IHJhdzsKK+SLniA8IHdlYjsKK+SKkSA8IHBheTsKK+WxouWKoCA8IHBseTsKK+S5neS4g+W5tCA8ICcnOTc7CivlnJPlvaLpurXljIUgPCBidW47CivlronmlL4gPCBsYXk7CivjnLggPCBzaW47CivoqIjkuZjou4ogPCBjYWI7CivpoIzoqZ4gPCBvZGU7CivohKvmsKfmoLjns5bmoLjphbggPCBkbmE7CivmnZzmnb7lrZDphZIgPCBnaW47CivkvZXkurogPCB3aG87Civnh5XpuqUgPCBvYXQ7Civmr43pm54gPCBoZW47CivnpKbnn7MgPCBvcmU7CivmgJXnvp4gPCBjb3k7Civku7vkvZUgPCBhbnk7CivmtYHmhJ8gPCBmbHU7Civlk47llrIgPCBoZXk7CivmlrnoiJ8gPCBhcms7CivniIbogbIgPCBwb3A7CivmlLbosrsgPCBmZWU7Civmr43nvoogPCBld2U7CivlsI/kvJnlrZAgPCBsYWQ7CivliKXph50gPCBwaW47CivlubPpjYsgPCBwYW47CivkuI0gPCBubzsKK+S4uiA8IGRvOwor5LmLIDwgJydzOwor5b6DIDwgZ287Civkuo4gPCBpbjsKK+WmgiA8IGlmOwor5oiWIDwgb3I7CivlroMgPCBpdDsKK+WSsSA8IHVzOwor5ZOfIDwgYWg7Civll6ggPCBoaTsKK+W9nSA8IHlpOwor6ZSxIDwgb3o7CivpkpQgPCBtZDsKK+S8siA8IHdlOwor6ZWkIDwgcGE7CivplY4gPCBucDsKK+mTuSA8IGxyOwor5ZCR5LiK5ZywIDwgdXA7CivplL8gPCBlczsKK+mUnSA8IHRjOwor6ZSVIDwgYWM7CivlhYnnop8gPCBjZDsKK+e5hCA8IGJlOwor57OOIDwgbW07CivnsqggPCBobTsKK+eygSA8IGttOwor57G1IDwgZG07CivlmofogbIgPCBobzsKK+elgiA8IGhlOwor5oiR55qEIDwgbXk7Civll4ggPCBvaDsKK+WSgSA8IHNvOwor5YWhIDwgaGc7CivlhZ4gPCBtZzsKK+WFnSA8IGRnOwor5pan6aCtIDwgYXg7CivkvZkgPCBpOwor5qi2IDwgYzsKK+S4gOWAiyA8IGE7CivmlL/lupzmqZ/pl5zplovmlL7ns7vntbHkupLpgKPnuL3liYcgPiBnb3Zlcm5tZW50XC1vcGVuXC1zeXN0ZW1cLWludGVyY29ubmVjdGlvblwtcHJvZmlsZTsKK+mbu+apn+WPiumbu+WtkOWtuOW3peeoi+W4q+iBr+WQiOacgyA+IGllZWU7CivlnIvpmpvpm7voqbHpm7vloLHoq67oqaLlp5Tlk6HmnIMgPiBpbnRlcm5hdGlvbmFsXC1jb25zdWx0YXRpdmVcLWNvbW1pdHRlZVwtZm9yXC10ZWxlcGhvbmVcLWFuZFwtdGVsZWdyYXBoOwor6Zi/5LiN5L6G5o+QXC7pmL/kuI3pg73nhrHopb/mj5AgPiBhYmR1bGFpZGlcLWFtdWR1cmV4aXRpXC1cKGNoYWlybWFuXC1vZlwteGluamlhbmdcLWF1dG9ub21vdXNcLXJlZ2lvblwpOwor5Y+v5pOm5a+r5Y+v57eo56iL56WH6K6A5a2Y5YSy5ZmoID4gZXByb207CivlnIvpmpvpm7vloLHpm7voqbHlkqjoqaLlp5Tlk6HmnIMgPiBjY2l0dDsKK+iAtuepjOWfuuedo+acq+S4luiBluW+kuaVmeacgyA+IHRoZVwtY2h1cmNoXC1vZlwtamVzdXNcLWNocmlzdFwtb2ZcLWxhdHRlclwtZGF5XC1zYWludHM7CivljYHlhITkvY3lhYPku6XlpKrntrLntaHoga/nm58gPiBnaWdhYml0XC1ldGhlcm5ldFwtYWxsaWFuY2U7CivmqpTmoYjovYnpgIHlrZjlj5blj4rnrqHnkIYgPiBmaWxlXC10cmFuc2ZlclwsXC1hY2Nlc3NcLWFuZFwtbWFuYWdlbWVudDsKK+mdnuWwjeeoseW8j+aVuOaTmueUqOaItue3miA+IGFzeW1tZXRyaWNhbFwtZGlnaXRhbFwtc3Vic2NyaWJlclwtbGluZTsKK+iHqOaZgueahOacrOWcsOeuoeeQhuaOpeWPoyA+IGludGVyaW1cLWxvY2FsXC1tYW5hZ2VtZW50XC1pbnRlcmZhY2U7Civoga/pgqbpm7vkv6HkuqTpgJrlp5Tlk6HmnIMgPiBmZWRlcmFsXC1jb21tdW5pY2F0aW9uc1wtY29tbWlzc2lvbjsKK+mbu+iFpui8lOWKqeioreioiOiIh+e5quWcliA+IGNvbXB1dGVyXC1haWRlZFwtZGVzaWduXC1hbmRcLWRyYXdpbmc7CivlhYnnupbliIbkvYjlvI/mlbjmk5rku4vpnaIgPiBmaWJlclwtZGlzdHJpYnV0ZWRcLWRhdGFcLWludGVyZmFjZTsKK+WFiee6luWIhuaVo+W8j+izh+aWmeS7i+mdoiA+IGZpYmVyXC1kaXN0cmlidXRlZFwtZGF0YVwtaW50ZXJmYWNlOwor5pW45pOa6Y+I6Lev6YCj5o6l6K2Y5Yil56K8ID4gZGF0YVwtbGlua1wtY29ubmVjdGlvblwtaWRlbnRpZmllcjsKK+mbu+iFpuiIh+mbu+ipseezu+e1seaVtOWQiCA+IGNvbXB1dGVyXC10ZWxlcGhvbnlcLWludGVncmF0aW9uOwor5aGe54i+57at5Lqe5YWL576F5Zyw5Lqe6KqeID4gc2VyYm9cLWNyb2F0aWFuXC1cKGxhbmd1YWdlXCk7CivnpoHmraLmoLjmrablmajoqabpqZfmop3ntIQgPiBudWNsZWFyXC10ZXN0XC1iYW5cLXRyZWF0eTsKK+iAgemppeS8j+arquW/l+WcqOWNg+mHjCA+IFwobGl0XC5cKVwtYW5cLW9sZFwtc3RlZWRcLWluXC10aGVcLXN0YWJsZVwtc3RpbGxcLWFzcGlyZXNcLXRvXC1nYWxsb3BcLTEwMDBcLWxpOwor5LiN5YWl6JmO56m054SJ5b6X6JmO5a2QID4gaG93XC1jYW5cLXlvdVwtY2F0Y2hcLXRpZ2VyXC1jdWJzXC13aXRob3V0XC1lbnRlcmluZ1wtdGhlXC10aWdlcicnc1wtbGFpcjsKK+avlOS4iuS4jei2s+avlOS4i+acieS9mSA+IGZhbGxcLXNob3J0XC1vZlwtdGhlXC1iZXN0XC1idXRcLWJlXC1iZXR0ZXJcLXRoYW5cLXRoZVwtd29yc3Q7CivljJflpKfopb/mtIvlhazntITntYTnuZQgPiB0aGVcLW5vcnRoXC1hdGxhbnRpY1wtdHJlYXR5XC1vcmdhbml6YXRpb25cLVwobmF0b1wpOwor5LiN57aT5LiA5LqL5LiN6ZW35LiA5pm6ID4geW91XC1jYW4nJ3RcLWdhaW5cLWtub3dsZWRnZVwtd2l0aG91dFwtcHJhY3RpY2U7Civlu7rnq4vmraPlvI/lpJbkuqTpl5zkv4IgPiBmb3JtYWxseVwtZXN0YWJsaXNoXC1kaXBsb21hdGljXC1yZWxhdGlvbnM7Civnmb7otrPkuYvon7LmrbvogIzkuI3lg7UgPiBhXC1jZW50aXBlZGVcLWRpZXNcLWJ1dFwtbmV2ZXJcLWZhbGxzXC1kb3duOwor5a6J5YWo6IiH5Lqk5o+b5aeU5ZOh5pyDID4gc2VjdXJpdGllc1wtYW5kXC1leGNoYW5nZVwtY29tbXVuaWNhdGlvbjsKK+e2nOWQiOacjeWLmeaVuOS9jee2sue1oSA+IGludGVncmF0ZWRcLXNlcnZpY2VzXC1kaWdpdGFsXC1uZXR3b3JrOwor5pW06auU5pyN5YuZ5pW45L2N57ay6LevID4gaW50ZWdyYXRlZFwtc2VydmljZXNcLWRpZ2l0YWxcLW5ldHdvcms7CivnsKHllq7ntrLntaHnrqHnkIbljZTorbAgPiBzaW1wbGVcLW5ldHdvcmtcLW1hbmFnZW1lbnRcLXByb3RvY29sOwor5pW06auU5pW45L2N5pyN5YuZ57ay6LevID4gaW50ZWdyYXRlZFwtc2VydmljZVwtZGlnaXRhbFwtbmV0d29yazsKK+WFrOWFseS6pOaPm+mbu+ipsee2sui3ryA+IHB1YmxpY1wtc3dpdGNoZWRcLXRlbGVwaG9uZVwtbmV0d29yazsKK+i/keS5juWQjOatpeaVuOS9jemajuWxpCA+IHBsZXNpb2Nocm9ub3VzXC1kaWdpdGFsXC1oaWVyYXJjaHk7Civml6XmnKzpm7vloLHpm7voqbHlhazlj7ggPiBuaXBwb25cLXRlbGVncmFwaFwtYW5kXC10ZWxlcGhvbmU7Civlu6Pmkq3lkozmnKrnn6XmnI3li5nlmaggPiBicm9hZGNhc3RcLWFuZFwtdW5rbm93blwtc2VydmVyOwor55m+5bC65p2G6aCt5pu055uh5LiA5q2lID4gbWFrZVwtc3RpbGxcLWZ1cnRoZXJcLXByb2dyZXNzOwor5ZyL6Zqb6LKo5bmj5Z+66YeR57WE57mUID4gaW50ZXJuYXRpb25hbFwtbW9uZXRhcnlcLWZ1bmQ7CivlrqLmiLbmqZ/mnI3li5nlmajnkrDlooMgPiBjbGllbnRcLXNlcnZlclwtZW52aXJvbmVtZW50Owor6Zu75a2Q6YO15Lu25YKz6YCB5pyN5YuZID4gXChlXC1cKW1haWxcLWRlbGl2ZXJ5XC1zZXJ2aWNlOwor55So5oi25Yiw57ay57Wh55qE5o6l5Y+jID4gdXNlclwtbmV0d29ya1wtaW50ZXJmYWNlOwor5Lqe5rSy6IiH5aSq5bmz5rSL5Zyw5Y2AID4gYXNpYVwtcGFjaWZpY1wtcmVnaW9uOwor5Y2B5YSE5L2N5YWD5Lul5aSq57ay57WhID4gZ2lnYWJpdFwtZXRoZXJuZXQ7CivlhYnnupbliIbkvYjmlbjmk5rmjqXlj6MgPiBmZGRpOwor5LiN6KaL5qO65p2Q5LiN6JC95reaID4gbm90XC1zaGVkXC1hXC10ZWFyXC11bnRpbFwtb25lXC1zZWVzXC10aGVcLWNvZmZpblwtXC1cLXJlZnVzZVwtdG9cLWJlXC1jb252aW5jZWRcLXVudGlsXC1vbmVcLWlzXC1mYWNlZFwtd2l0aFwtZ3JpbVwtcmVhbGl0eTsKK+S4jeWIsOm7g+ays+W/g+S4jeatuyA+IG5vdFwtc3RvcFwtdW50aWxcLW9uZVwtcmVhY2hlc1wtdGhlXC1odWFuZ2hlXC1yaXZlclwtXC1cLW5vdFwtc3RvcFwtdW50aWxcLW9uZVwtcmVhY2hlc1wtb25lJydzXC1nb2FsOwor6ZaJ5aGe55y8552b5o2J6bq76ZuAID4gdHJ5XC10b1wtY2F0Y2hcLXNwYXJyb3dzXC13aXRoXC1vbmUnJ3NcLWV5ZXNcLWJsaW5kZm9sZGVkXC1cLVwtYWN0XC1ibGluZGx5Owor5pav54m55Yeh6Ku+5pmu5rSb5pavID4gc3RlcGhhbm9wb3Vsb3NcLVwoZWdcLFwtZm9ybWVyXC1jbGludG9uXC1haWRlXC1nZW9yZ2VcLXN0ZXBoYW5vcG91bG9zXCk7CivkurrmsJHoi7Hpm4TntIDlv7XnopEgPiBtb251bWVudFwtdG9cLXRoZVwtcGVvcGxlJydzXC1oZXJvZXNcLFwtYXRcLXRpYW5hbm1lblwtc3F1YXJlOwor5oyJ5LiL6JGr6JiG5rWu6LW355OiID4gc29sdmVcLW9uZVwtcHJvYmxlbVwtb25seVwtdG9cLWZpbmRcLWFub3RoZXJcLWNyb3BwaW5nXC11cDsKK+S4jeaVoui2iumbt+axoOS4gOatpSA+IGRhcmVcLW5vdFwtZ29cLW9uZVwtc3RlcFwtYmV5b25kXC10aGVcLXByZXNjcmliZWRcLWxpbWl0Owor5p2x5Y2X5Lqe5ZyL5a626IGv55ufID4gYXNlYW5cLVwoYXNzb2NpYXRpb25cLW9mXC1zb3V0aGVhc3RcLWFzaWFuXC1uYXRpb25zXCk7CivlpLHmlZfmmK/miJDlip/kuYvmr40gPiBcImZhaWx1cmVcLWlzXC10aGVcLW1vdGhlclwtb2ZcLXN1Y2Nlc3NcIlwtXChwcm92ZXJiXCk7CivntpPnh5/nrqHnkIblkozntq3orbcgPiBvcGVyYXRpb25zXC1hZG1pbmlzdHJhdGlvblwtYW5kXC1tYWludGVuYW5jZTsKK+aguOatpuWZqOeglOijveioiOWKgyA+IG51Y2xlYXJcLXdlYXBvbnNcLVwobWFudWZhY3R1cmluZ1wpXC1wcm9ncmFtOwor5pWZ5o6I55Wi56uf5piv5pWZ5o6IID4gcHJvZmVzc29yc1wtYXJlXC1cKGFmdGVyXC1hbGxcKVwtcHJvZmVzc29yczsKK+iZm+aTrOmAmumBk+aomeiqjOespiA+IHZpcnR1YWxcLWNoYW5uZWxcLWNvbm5lY3Rpb25cLWlkZW50aWZpZXI7CivkuJbnlYzmgKflj6TogIHllY/poYwgPiBhXC1wcm9ibGVtXC1hc1wtb2xkXC1hc1wtdGhlXC13b3JsZFwtaXRzZWxmOwor6Zu75L+h5pyN5YuZ5L6b5oeJ5ZWGID4gdGVsZWNvbW11bmljYXRpb25zXC1zZXJ2aWNlXC1wcm92aWRlcjsKK+WFrOeUqOS6pOaPm+mbu+ipsee2siA+IHB1YmxpY1wtc3dpdGNoZWRcLXRlbGVwaG9uZVwtbmV0d29yazsKK+S4reiPr+S6uuawkeWFseWSjOWciyA+IHRoZVwtcGVvcGxlJydzXC1yZXB1YmxpY1wtb2ZcLWNoaW5hOwor6YCa55So6LOH5rqQ6K2Y5Yil6JmfID4gdW5pdmVyc2FsXC1yZXNvdXJjZVwtaWRlbnRpZmllcjsKK+WOn+WtkOenkeWtuOWutumAmuWgsSA+IGpvdXJuYWxcLW9mXC1hdG9taWNcLXNjaWVudGlzdHM7CivotoXmlofku7blgrPovLjljZTlrpogPiBoeXBlcnRleHRcLXRyYW5zZmVyXC1wcm90b2NvbDsKK+i2heaWh+acrOWCs+i8uOWNlOWumiA+IGh5cGVydGV4dFwtdHJhbnNmZXJcLXByb3RvY29sOwor5a6i5oi25pyN5YuZ5Zmo57WQ5qeLID4gY2xpZW50XC1zZXJ2ZXJcLWFyY2hpdGVjdHVyZTsKK+WqkumrlOaOpeWPo+mAo+aOpeWZqCA+IG1lZGl1bVwtaW50ZXJmYWNlXC1jb25uZWN0b3I7CivpnaLlmq7lsI3osaHnmoTmioDooZMgPiBvYmplY3RcLW9yaWVudGVkXC10ZWNobm9sb2d5Owor6Z2e5ZCM5q2l5YKz6Ly45qih5byPID4gYXN5bmNocm9ub3VzXC10cmFuc2ZlclwtbW9kZTsKK+i2heaWh+acrOaomeiomOiqnuiogCA+IGh5cGVydGV4dFwtbWFya3VwXC1sYW5ndWFnZTsKK+WPjeiJpuiJh+W3oeiIquWwjuW9iCA+IGFudGlcLXNoaXBcLWNydWlzZVwtbWlzc2xlOwor55So5oi25Yiw57ay57Wh5o6l5Y+jID4gdXNlclwtbmV0d29ya1wtaW50ZXJmYWNlOwor5Lqe5rSy5aSq5bmz5rSL5Zyw5Y2AID4gYXNpYVwtcGFjaWZpY1wtcmVnaW9uOwor5aSa57Gz5bC85Yqg5YWx5ZKM5ZyLID4gZG9taW5pY2FuXC1yZXB1YmxpYzsKK+aSkuWTiOaLieS7peWNl+mdnua0siA+IHN1Ylwtc2FoYXJhblwtYWZyaWNhOwor5Zyo5aSn5aSa5pW45oOF5rOB5LiLID4gaW5cLW1vc3RcLWluc3RhbmNlczsKK+i2hemrmOmAn+S5meWkque2sui3ryA+IGdpZ2FiaXRcLWV0aGVybmV0Owor5be05biD5Lqe5paw5bm+5YWn5LqeID4gcGFwYXVcLW5ld1wtZ3VpbmVhOwor576F5a+G5q2Q6IiH5pyx6bqX6JGJID4gcm9tZW9cLWFuZFwtanVsaWV0Owor5aSq6Zm95b6u57O757Wx5YWs5Y+4ID4gc3VuXC1taWNyb3N5c3RlbXM7CivluJbmkpLnvoXlsLzov6blvozmm7ggPiAyXC10aGVzc2Fsb25pYW5zOwor5Lqe54i+55m85ZKM5aWn57Gz5YqgID4gYWxwaGFcLWFuZFwtb21lZ2E7CivluJbmkpLnvoXlsLzov6bliY3mm7ggPiAxXC10aGVzc2Fsb25pYW5zOwor6I6r5bC85Y2h6JCK5rqr5pav5Z+6ID4gbW9uaWNhXC1sZXdpbnNreTsKK+mYv+S8j+S8veW+t+e+heWumuW+iyA+IGF2b2dhZHJvJydzXC1sYXc7Civpm7vnupzoqr/liLbop6Poqr/lmaggPiBjYWJsZVwtbW9kZW07CivnrKzkuozmrKHkuJbnlYzlpKfmiLAgPiB3b3JsZFwtd2FyXC0yOwor5LuL6LOq6Kiq5ZWP5o6n5Yi25bGkID4gbWFjXC1sYXllcjsKK+S4jeefpeWkqemrmOWcsOWOmiA+IG5vdFwta25vd1wtdGhlXC1pbW1lbnNpdHlcLW9mXC1oZWF2ZW5cLWFuZFwtZWFydGhcLVwtXC1oYXZlXC1hblwtZXhhZ2dlcmF0ZWRcLW9waW5pb25cLW9mXC1vbmUnJ3NcLWFiaWxpdGllczsKK+eZvuiBnuS4jeWmguS4gOimiyA+IHNlZWluZ1wtZm9yXC1vbmVzZWxmXC1pc1wtYVwtaHVuZHJlZFwtdGltZXNcLWJldHRlclwtdGhhblwtaGVhcmluZ1wtZnJvbVwtb3RoZXJzOwor5LiN6LK75ZC554Gw5LmL5YqbID4gYXNcLWVhc3lcLWFzXC1ibG93aW5nXC1vZmZcLWR1c3RcLVwtXC1ub3RcLW5lZWRpbmdcLXRoZVwtc2xpZ2h0ZXN0XC1lZmZvcnQ7CivmspnliKnnp5Hku4Dntq3liKkgPiBnZW5lcmFsXC1zaGFsaWthc2h2aWxpXC1cKGhlYWRcLW9mXC11c1wtam9pbnRcLWNoaWVmc1wtb2ZcLXN0YWZmXCk7Civlr4TkuojlvojlpKfmnJ/mnJsgPiB0b1wtcGxhY2VcLWdyZWF0XC1ob3BlXC1vclwtZXhwZWN0YXRpb25cLW9uXC1cKHN0aFwpOwor5be054i+6IiN5aSr5pav5Z+6ID4gXChjaGFybGVuZVwpXC1iYXJzaGVmc2t5XCxcLXVzXC10cmFkZVwtbmVnb3RpYXRvcjsKK+e0hOWumuizh+ioiumAn+eOhyA+IGNvbW1pdHRlZFwtaW5mb3JybWF0aW9uXC1yYXRlXC1cKGZyYW1lXC1yZWxheVwpOwor6YCG5ZCR5pOB5aGe6YCa55+lID4gYmFja3dhcmRcLWV4cGxpY2l0XC1jb25nZXN0aW9uXC1ub3RpZmljYXRpb247CivliY3lkJHmk4HloZ7pgJrnn6UgPiBmb3J3YXJkXC1leHBsaWNpdFwtY29uZ2VzdGlvblwtbm90aWZpY2F0aW9uOwor576O5ZyL5buj5pKt5YWs5Y+4ID4gYWJjXC1cKGFtZXJpY2FuXC1icm9hZGNhc3RpbmdcLWNvcnBvcmF0aW9uXCk7Civlk4joo6Hmo67lj7Llr4bnibkgPiBoYXJyaXNvblwtc2NobWl0dFwtXChhcG9sbG9cLTFcLTdcLWFzdHJvbmF1dFwpOwor55Wi5YW25Yqf5LqO5LiA5b25ID4gYWNjb21wbGlzaFwtdGhlXC13aG9sZVwtdGFza1wtYXRcLW9uZVwtc3Ryb2tlOwor5pO65LqL5a+m6Kyb6YGT55CGID4gcHJlc2VudFwtdGhlXC1mYWN0c1wtYW5kXC1yZWFzb25cLXRoaW5nc1wtb3V0Owor5ZyL6Zqb6Zu75L+h6IGv55ufID4gaW50ZXJuYXRpb25hbFwtdGVsZWNvbW11bmljYXRpb25zXC11bmlvbjsKK+S4jeWPr+WQjOaXpeiAjOiqniA+IGNhbm5vdFwtYmVcLW1lbnRpb25lZFwtaW5cLXRoZVwtc2FtZVwtYnJlYXRoOwor5pyJ5b+X6ICF5LqL56uf5oiQID4gd2hlcmVcLXRoZXJlXC1pc1wtYVwtd2lsbFwsXC10aGVyZVwtaXNcLWFcLXdheTsKK+Wci+mam+aomea6lue1hOe5lCA+IGludGVybmF0aW9uYWxcLXN0YW5kYXJkc1wtb3JnYW5pemF0aW9uOwor55uu5YmN6YKE5LiN5riF5qWaID4gYXRcLXByZXNlbnRcLWl0XC1pc1wtc3RpbGxcLXVuY2xlYXJcLVwuXC5cLlwuOwor55a+55eF6aCQ6Ziy5Lit5b+DID4gXCh1XC5zXC5cKVwtY2VudGVyXC1mb3JcLWRpc2Vhc2VcLWNvbnRyb2w7Civmh4nnlKjnqIvlvI/ku4vpnaIgPiBhcHBsaWNhdGlvblwtcHJvZ3JhbW1pbmdcLWludGVyZmFjZTsKK+efruWtkOijoeaLlOWwh+i7jSA+IGNob29zZVwtdGhlXC1iZXN0XC1wZXJzb25cLWF2YWlsYWJsZTsKK+WPluW+l+Wkp+WtuOWtuOS9jSA+IHRvXC1vYnRhaW5cLWFcLXVuaXZlcnNpdHlcLWVkdWNhdGlvbjsKK+WvpuaZguaTjeS9nOeSsOWigyA+IHJlYWxcLXRpbWVcLW9wZXJhdGluZ1wtZW52aXJvbm1lbnQ7CivlnIvpmpvllYbmpa3mqZ/lmaggPiBpbnRlcm5hdGlvbmFsXC1idXNpbmVzc1wtbWFjaGluZXM7CivnrKblkIjnvo7lnIvliKnnm4ogPiBpblwtbGluZVwtd2l0aFwtYW1lcmljYW5cLWludGVyZXN0czsKK+i7n+mrlOWHuueJiOWNlOacgyA+IHNvZnR3YXJlXC1wdWJsaXNoZXJzXC1hc3NvY2lhdGlvbjsKK+advuS4i+mbu+awo+W3pealrSA+IG1hdHN1c2hpdGFcLWVsZWN0cm9uaWNzXC1pbmR1c3RyeTsKK+acjeWLmeW7o+WRiuWNlOitsCA+IHNlcnZpY2VcLWFkdmVydGlzZW1lbnRcLXByb3RvY29sOwor6Kqe6Z+z6YCa6KiK6YCa6YGTID4gdm9pY2VcLVwoY29tbXVuaWNhdGlvbnNcKVwtY2hhbm5lbDsKK+S4lueVjOiyv+aYk+e1hOe5lCA+IHd0b1wtXCh3b3JsZFwtdHJhZGVcLW9yZ2FuaXphdGlvblwpOwor5bi46KaP6YqF6Zu76Kmx57eaID4gb3JkaW5hcnlcLWNvcHBlclwtdGVsZXBob25lXC1saW5lOwor5ZCM5q2l5pW45L2N6ZqO5bGkID4gc3luY2hyb25vdXNcLWRpZ2l0YWxcLWhpZXJhcmNoeTsKK+S4iua1t+aIsuWKh+WtuOmZoiA+IHNoYW5naGFpXC10aGVhdHJpY2FsXC1pbnN0aXR1dGU7CivlgrPovLjmjqfliLbljZTlrpogPiB0cmFuc21pc3Npb25cLWNvbnRyb2xcLXByb3RvY29sOwor5YKz57Wx5Lit5ZyL6Yar6JelID4gY2hpbmVzZVwtdHJhZGl0aW9uYWxcLW1lZGljaW5lOwor5Zu65a6a6Jmb5pOs6YCj5o6lID4gcGVybWFuZW50XC12aXJ0dWFsXC1jb25uZWN0aW9uOwor6ZaL5pS+57O757Wx5LqS6YCjID4gb3Blblwtc3lzdGVtc1wtaW50ZXJjb25uZWN0aW9uOwor5YyX5Lqs6Jed6KGT5a246ZmiID4gYmVpamluZ1wtYWNhZGVteVwtb2ZcLWZpbmVcLWFydHM7CivkuI3nmbvlpKfpm4XkuYvloIIgPiBub3RcLWFwcGVhbFwtdG9cLXJlZmluZWRcLXRhc3RlOwor5YyX5Lqs6Kqe6KiA5a246ZmiID4gYmVpamluZ1wtbGFuZ3VhZ2VzXC1pbnN0aXR1dGU7CivlnLDlnYDop6PmnpDljZTorbAgPiBhZGRyZXNzXC1yZXNvbHV0aW9uXC1wcm90b2NvbDsKK+acrOWcsOeuoeeQhueVjOmdoiA+IGxvY2FsXC1tYW5hZ2VtZW50XC1pbnRlcmZhY2U7CivnlbDmraXlgrPovLjmqKHlvI8gPiBhc3luY2hyb25vdXNcLXRyYW5zZmVyXC1tb2RlOwor6Zu76IWm6LyU5Yqp5pWZ5p2QID4gY29tcHV0ZXJcLWFpZGVkXC1pbnN0cnVjdGlvbjsKK+mbu+iFpui8lOWKqeW3peeoiyA+IGNvbXB1dGVyXC1haWRlZFwtZW5naW5lZXJpbmc7CivomZvmk6zpgJrpgZPpgKPmjqUgPiB2aXJ0dWFsXC1jaGFubmVsXC1jb25uZWN0aW9uOwor57ay57Wh566h55CG57O757WxID4gbmV0d29ya1wtbWFuYWdlbWVudFwtc3lzdGVtOwor5LiW55WM6KGb55Sf57WE57mUID4gd29ybGRcLWhlYWx0aFwtb3JnYW5pemF0aW9uOwor5YC85b6X5rOo5oSP55qE5pivID4gaXQnJ3NcLXdvcnRoXC1ub3RpbmdcLXRoYXRcLlwuXC47CivnkrDnkIPlrprkvY3ns7vntbEgPiBnbG9iYWxcLXBvc2l0aW9uaW5nXC1zeXN0ZW07Civlm6DnibnntrLmj5DkvpvllYYgPiBpbnRlcm5ldFwtc2V2aWNlXC1wcm92aWRlcjsKK+e2sue1oeaTjeS9nOezu+e1sSA+IG5ldHdvcmtcLW9wZXJhdGluZ1wtc3lzdGVtOwor5ZyW5YOP55So5oi25LuL6Z2iID4gZ3JhcGhpY2FsXC11c2VyXC1pbnRlcmZhY2U7CivpnaLlmq7lsI3osaHoqp7oqIAgPiBvYmplY3RcLW9yaWVudGVkXC1sYW5ndWFnZTsKK+WFseWQjOmWmOmBk+S7i+mdoiA+IGNvbW1vblwtZ2F0ZXdheVwtaW50ZXJmYWNlOwor57ay6Lev5L2c5qWt57O757WxID4gbmV0d29ya1wtb3BlcmF0aW5nXC1zeXN0ZW07CivlhaznnL7pm7vkv6HntrLot68gPiBwdWJsaWNcLXRlbGVwaG9uZVwtbmV0d29yazsKK+mdnuebiOWIqeeahOe1hOe5lCA+IG5vblwtcHJvZml0XC1vcmdhbml6YXRpb247CivoqIrmga/omZXnkIbns7vntbEgPiBtZXNzYWdlXC1oYW5kbGluZ1wtc3lzdGVtOwor5pW45a2X6KiC6LO857ea6LevID4gZGlnaXRhbFwtc3Vic2NyaWJlclwtbGluZTsKK+i+r+iovOWUr+eJqeS4u+e+qSA+IGRpYWxlY3RpY2FsXC1tYXRlcmlhbGlzbTsKK+e2sui3r+evgOm7nuS7i+mdoiA+IG5ldHdvcmtcLW5vZGVcLWludGVyZmFjZTsKK+ato+WcqOS4reWci+ioquWVjyA+IGR1cmluZ1wtYVwtdHJpcFwtdG9cLWNoaW5hOwor5YWr5bCP5pmC5bel5L2c5Yi2ID4gZWlnaHRcLWhvdXJcLXdvcmtpbmdcLWRheTsKK+a2iOaBr+mdiOmAmuS6uuWjqyA+IGFcLXdlbGxcLWluZm9ybWVkXC1zb3VyY2U7Civml6XmnKzntpPmv5/mlrDogZ4gPiBqYXBhbmVzZVwtZWNvbm9taWNcLW5ld3M7CivoqIrmga/lgrPpgZ7kuK3ku4sgPiBtZXNzYWdlXC10cmFuc2ZlclwtYWdlbnQ7Civpm7vohabovJTliqnoqK3oqIggPiBjb21wdXRlclwtYWlkZWRcLWRlc2lnbjsKK+aMgeS4jeWQjOaUv+imi+iAhSA+IFwocG9saXRpY2FsXClcLWRpc3NpZGVudDsKK+izh+aWmeWCs+mAgeacjeWLmSA+IGRhdGFcLWRlbGl2ZXJ5XC1zZXJ2aWNlOwor5LuL6LOq6Kiq5ZWP5o6n5Yi2ID4gbWVkaXVtXC1hY2Nlc3NcLWNvbnRyb2w7CivljbDluqblsLzopb/kup7oqp4gPiBpbmRvbmVzaWFuXC1cKGxhbmd1YWdlXCk7CivlpJrnqK7oqp7oqIDmlK/mjIEgPiBtdWx0aWxpbmd1YWxcLXN1cHBvcnQ7CivmjqXmlLblmajpnYjmlY/luqYgPiByZWNlaXZlclwtc2Vuc2l0aXZpdHk7CivmsJHml4/kuLvnvqnmg4Xnt5IgPiBuYXRpb25hbGlzdFwtZmVlbGluZ3M7CivlqpLpq5ToqKrllY/mjqfliLYgPiBtZWRpYVwtYWNjZXNzXC1jb250cm9sOwor5Zub5bm05Yi255qE5aSn5a24ID4gZm91clwteWVhclwtdW5pdmVyc2l0eTsKK+mCj+i8r+mPiOi3r+aOp+WItiA+IGxvZ2ljYWxcLWxpbmtcLWNvbnRyb2w7CivokKzntq3lpKnnvoXlnLDntrIgPiB3b3JsZFwtd2lkZVwtd2ViXC1cKHd3d1wpOwor5beh6L+05YiG5p6Q56uv5Y+jID4gcm92aW5nXC1hbmFseXNpc1wtcG9ydDsKK+WPquS4jemBjuW5vuW5tOWJjSA+IG9ubHlcLWFcLWZld1wteWVhcnNcLWFnbzsKK+S4gOeZvuS6lOWNgeWkmuW5tCA+IG1vcmVcLXRoYW5cLTE1MFwteWVhcnM7Civlk6XlgKvmr5Tkup7lpKflrbggPiBjb2x1bWJpYVwtdW5pdmVyc2l0eTsKK+iyv+aYk+S/neitt+S4u+e+qSA+IHRyYWRlXC1wcm90ZWN0aW9uaXNtOwor5Zyo5p+Q56iu56iL5bqm5LiKID4gdG9cLWFcLWNlcnRhaW5cLWV4dGVudDsKK+abvOW+ueaWr+eJuee3qOeivCA+IG1hbmNoZXN0ZXJcLWVuY29kaW5nOwor6KiK5qGG5YKz6YCB5pyN5YuZID4gZnJhbWVcLXJlbGF5XC1zZXJ2aWNlOwor6KiK5qGG5YKz6YCB57ay6LevID4gZnJhbWVcLXJlbGF5XC1uZXR3b3JrOwor6Zi/5q+U6KW/5bC85Lqe5Lq6ID4gYWJ5c3NpbmlhblwtXChwZXJzb25cKTsKK+S6nuWkque2k+WQiOe1hOe5lCA+IGFwZWNcLVwob3JnYW5pemF0aW9uXCk7Civou5/ku7bplovnmbzkurrlk6EgPiBzb2Z0d2FyZVwtZGV2ZWxvcGVyOwor5Zyo5YKz6Ly46YGO56iL5LitID4gd2hpbGVcLXRyYW5zbWl0dGluZzsKK+W/heS4jeWPr+Wwkee1hOaIkCA+IGFic29sdXRlXC1uZWNlc3NpdHk7Civnvo7lnIvoiKrnqbrlhazlj7ggPiBhbWVyaWNhblwtYWlybGluZXM7CivkuqTmj5vku6XlpKrntrLntaEgPiBzd2l0Y2hlZFwtZXRoZXJuZXQ7Civoq77osp3niL7lkozlubPnjY4gPiBub2JlbFwtcGVhY2VcLXByaXplOwor5LqU6KeS5aSn5qiT5a6Y5ZOhID4gcGVudGFnb25cLW9mZmljaWFsOwor6KiK5qGG5YKz6YCB6KuW5aOHID4gZnJhbWVcLXJlbGF5XC1mb3J1bTsKK+mYv+eIvuW3tOWwvOS6nuS6uiA+IGFsYmFuaWFuXC1cKHBlcnNvblwpOwor5LiN5YiG6Z2S57SF55qC55m9ID4gaW5kaXNjcmltaW5hdGVseTsKK+S4jeetiemCiuS4ieinkuW9oiA+IHNjYWxlbmVcLXRyaWFuZ2xlOwor57ay6Zqb57ay6Lev5Y2U5pyDID4gaW50ZXJuZXRcLXNvY2lldHk7CivkuInljYPliLDkupTljYPokKwgPiAzMFwtdG9cLTUwXC1taWxsaW9uOwor5LiA5YCL5Lit5ZyL5pS/562WID4gb25lXC1jaGluYVwtcG9saWN5Owor57ay57Wh6KaP5YqD5Lq65ZOhID4gbmV0d29ya1wtcGxhbm5lcjsKK+WFseS6q+S7peWkque2sue1oSA+IHNoYXJlZFwtZXRoZXJuZXQ7CivljaHntI3ntq3mi4nniL7op5IgPiBjYXBlXC1jYW5hdmVyYWw7CivljYDln5/ntrLot6/mioDooZMgPiBsYW5cLXRlY2hub2xvZ3k7CivolqnpgZTlp4bkvq/os73lm6AgPiBzYWRkYW1cLWh1c3NlaW47Civmkp7mk4rlvI/ljbDooajmqZ8gPiBpbXBhY3RcLXByaW50ZXI7Civmkp7mk4rlvI/miZPljbDmqZ8gPiBpbXBhY3RcLXByaW50ZXI7CivlhajnkIPmsKPlgJnljYfmuqsgPiBnbG9iYWxcLXdhcm1pbmc7CivmooXloZ7ov6rmlq/lpZTpprMgPiBtZXJjZWRlc1wtYmVuejsKK+Wlp+WFi+aLieiNt+mmrOW4giA+IG9rbGFob21hXC1jaXR5Owor6auY6YCf5LmZ5aSq57ay6LevID4gZmFzdFwtZXRoZXJuZXQ7Civlv6vpgJ/ku6XlpKrntrLntaEgPiBmYXN0XC1ldGhlcm5ldDsKK+S7peWkque2sue1oeerr+WPoyA+IGV0aGVybmV0XC1wb3J0Owor5Lqe5rSy6IiH5aSq5bmz5rSLID4gYXNpYVwtcGFjaWZpYzsKK+S4gOWNg+mbtuS6lOWNgeWEhCA+IDEwNVwtYmlsbGlvbjsKK+WQieeIvuWQieaWr+aWr+WdpiA+IGtpcmdoaXpzdGFuOwor5qau542y6Ku+6LKd54i+542OID4gbm9iZWxcLXByaXplOwor5LiJ5pyI5LqM5Y2B5LiJ6JmfID4gbWFyY2hcLTIzcmQ7CivmspLmnInnlJ/ogrLog73lipsgPiBpbmZlcnRpbGU7CivlnIvpmpvkupLoga/ntrLntaEgPiBpbnRlcm5ldDsKK+S4ieaciOS6jOWNgeS4gOiZnyA+IG1hcmNoXC0yMTsKK+WwiOeUqOmbhuaIkOmbu+i3ryA+IGFzaWM7CivlnJblg4/kupLmj5vmoLzlvI8gPiBnaWY7CivohKvmsKfmoLjns5bmoLjphbggPiBkbmE7Civmrrrpm57ntabnjLTnnIsgPiBcImtpbGxcLWFcLWNoaWNrZW5cLWluXC1mcm9udFwtb2ZcLWFcLW1vbmtleVwiXC1cLVwtXC1tYWtlXC1hblwtZXhhbXBsZVwtb3V0XC1vZlwtc29tZW9uZVwtXChieVwtcHVuaXNoaW5nXC10aGVtXClcLXRvXC1mcmlnaHRlblwtb3RoZXJzOwor55eF5oCl5LqC5oqV6YarID4gdHVyblwtdG9cLWFueVwtZG9jdG9yXC1vbmVcLWNhblwtZmluZFwtd2hlblwtY3JpdGljYWxseVwtaWxsXC1cLVwtdHJ5XC1hbnl0aGluZ1wtd2hlblwtaW5cLWFcLWRlc3BlcmF0ZVwtc2l0dWF0aW9uOwor5pav5Y2h5Lyv5YuS56SBID4gc2NhcmJvcm91Z2hcLXNob2FsXC1cKHBoaWxpcHBpbmVzJydcLW5hbWVcLWZvclwtaHVhbmd5YW5cLWlzbGFuZFwpOwor5Yaw54Kt5LiN55u45a65ID4gYXNcLWluY29tcGF0aWJsZVwtb3JcLWlycmVjb25jaWxhYmxlXC1hc1wtaWNlXC1hbmRcLWhvdFwtY29hbHM7Civpn4vniL7lvJfpm7fojLIgPiBcKGdlb3JnZVwpXC13ZWhyZnJpdHpcLVwoYmVpamluZ1wtYnVyZWF1XC1jaGllZlwtb2ZcLW5ld3N3ZWVrXCk7CivnkLNcLuaItOe2reaWryA+IGx5bm5cLWRhdmlzXC1cKHVzXC1zdGF0ZVwtZGVwYXJ0bWVudFwtYXJtc1wtY29udHJvbFwtZXhwZXJ0XCk7CivkurrmsJHooYzli5Xpu6ggPiBwZW9wbGUnJ3NcLWFjdGlvblwtcGFydHlcLVwocnVsaW5nXC1wYXJ0eVwtaW5cLXNpbmdhcG9yZVwpOwor5bi45Lu755CG5LqL5ZyLID4gcGVybWFuZW50XC1tZW1iZXJcLXN0YXRlXC1cKG9mXC11blwtc2VjdXJpdHlcLWNvdW5jaWxcKTsKK+S6uuawkeWkp+acg+WggiA+IGdyZWF0XC1oYWxsXC1vZlwtdGhlXC1wZW9wbGVcLFwtYXRcLXRpYW5hbm1lblwtc3F1YXJlOwor5qmL5pys6b6N5aSq6YOOID4gaGFzaGltb3RvXCxcLXJ5dXRhcm9cLVwocHJpbWVcLW1pbmlzdGVyXC1vZlwtamFwYW5cKTsKK+Wlp+eIvuW4g+iztOeJuSA+IFwobWFkZWxlaW5lXClcLWFsYnJpZ2h0XC1cKHVzXC1zZWNyZXRhcnlcLW9mXC1zdGF0ZVwpOwor5LiN55W25LiA5Zue5LqLID4gbm90XC1yZWdhcmRcLWFzXC1hXC1tYXR0ZXJcLVwob2ZcLWFueVwtaW1wb3J0YW5jZVwpOwor5LiN5omT5LiN55u46K2YID4gZnJvbVwtYW5cLWV4Y2hhbmdlXC1vZlwtYmxvd3NcLWZyaWVuZHNoaXBcLWdyb3dzOwor6IGv6YKm6Kq/5p+l5bGAID4gZmJpXC1cKGZlZGVyYWxcLWJ1cmVhdVwtb2ZcLWludmVzdGlnYXRpb25cKTsKK+S4gOS5neWbm+S5neW5tCA+IHRoZVwteWVhclwtMTk0OVwtXChjb21tdW5pc3RcLXJldm9sdXRpb25cKTsKK+e0hOe/sOWFp+aWr+WgoSA+IGpvaGFubmVzYnVyZ1wtXChjaXR5XC1pblwtc291dGhcLWFmcmljYVwpOwor5YiG5L2I5byP55Kw5aKDID4gZGlzdHJpYnV0ZWRcLVwoY29tcHV0aW5nXClcLWVudmlyb25tZW50Owor6Z2e5pS/5bqc57WE57mUID4gbm9uXC1nb3Zlcm5tZW50YWxcLW9yZ2FuaXphdGlvblwtXChuZ29cKTsKK+WwpOmHkeWhnueIvuWNlyA+IGV1Z2VuZVwtY2VybmFuXC1cKGFwb2xsb1wtMTdcLWFzdHJvbmF1dFwpOwor5q+U5YuS6ZmA5Yip5LqeID4gcHJldG9yaWFcLVwoY2FwaXRhbFwtb2ZcLXNvdXRoXC1hZnJpY2FcKTsKK+WNiuaXpeWItuWtuOagoSA+IGhhbGZcLWRheVwtXChvclwtZG91YmxlXC1zaGlmdFwtc2Nob29sXCk7CivotorkvobotorlmrTph40gPiB0b1wtYmVjb21lXC1tb3JlXC1zZXJpb3VzXC1ldmVyeVwtZGF5Owor5oiI54i+5be05Zas5aSrID4gXChmb3JtZXJcLXNvdmlldFwtbGVhZGVyXClcLWdvcmJhY2hldjsKK+WFq+e0muW3peizh+WItiA+IGVpZ2h0XC1ncmFkZVwtd2FnZVwtc2NhbGVcLVwoc3lzdGVtXCk7CivlnKjlr4bliIfms6jmhI8gPiB0b1wtcGF5XC1jbG9zZVwtYXR0ZW50aW9uXC1cKHRvXC1zdGhcKTsKK+aguOWogeaHvuaUv+etliA+IHBvbGljeVwtb2ZcLW51Y2xlYXJcLWludGltaWRhdGlvbjsKK+WPr+mBuOaTh+S4n+ajhCA+IGRpc2NhcmRcLWVsaWdpYmxlXC1cKGZyYW1lXC1yZWxheVwpOwor54m55Yil6KGM5pS/5Y2AID4gc3BlY2lhbFwtYWRtaW5pc3RyYXRpdmVcLXJlZ2lvbjsKK+iPr+ebm+mgk+aZguWgsSA+IHdhc2hpbmd0b25cLXRpbWVzXC1cKG5ld3NwYXBlclwpOwor5Ly85LmO5b6I5a6J5YWoID4gdG9cLWFwcGVhclwtXCh0b1wtYmVcKVwtdmVyeVwtc2FmZTsKK+S4reWkruaDheWgseWxgCA+IGNlbnRyYWxcLWludGVsbGlnZW5jZVwtYWdlbmN5Owor5pyN5YuZ5o+Q5L6b5ZWGID4gXChpbnRlcm5ldFwpXC1zZXJ2aWNlXC1wcm92aWRlcjsKK+euoeeQhuS/oeaBr+W6qyA+IG1hbmFnZW1lbnRcLWluZm9ybWF0aW9uXC1iYXNlOwor6I+v55ub6aCT6YO15aCxID4gd2FzaGluZ3RvblwtcG9zdFwtXChuZXdzcGFwZXJcKTsKK+mhmOaEj+S4jemhmOaEjyA+IHdoZXRoZXJcLW9uZVwtd2FudHNcLXRvXC1vclwtbm90Owor55m85bGV5qC45q2m5ZmoID4gdG9cLWRldmVsb3BcLW51Y2xlYXJcLXdlYXBvbnM7Civlj5vorornmoTnnIHku70gPiByZW5lZ2FkZVwtcHJvdmluY2VcLVwodGFpd2FuXCk7CivkuK3lnIvnp5HlrbjpmaIgPiBjaGluZXNlXC1hY2FkYW15XC1vZlwtc2NpZW5jZTsKK+eUqOaItuerr+ioreWCmSA+IGN1c3RvbWVyXC1wcmVtaXNlXC1lcXVpcG1lbnQ7CivkuI3nrYnlg7nkuqTmj5sgPiBleGNoYW5nZVwtb2ZcLXVuZXF1YWxcLXZhbHVlczsKK+awuOS5heiZm+mbu+i3ryA+IHBlcm1hbmVudFwtdmlydHVhbFwtY2lyY3VpdDsKK+WOn+WboOW+iOewoeWWriA+IHRoZVwtcmVhc29uXC1pc1wtdmVyeVwtc2ltcGxlOwor6YCa6KiK6Ieq5YuV5YyWID4gY29tbXVuaWNhdGlvbnNcLWF1dG9tYXRpb247CivluYDpppblrprnlYznrKYgPiBzdGFydFwtb2ZcLWZyYW1lXC1kZWxpbWl0ZXI7CivkuI3mib/oqo3kuLvnvqkgPiBwb2xpY3lcLW9mXC1ub25yZWNvZ25pdGlvbjsKK+aliueZvue/sOWkp+WtuCA+IGJyaWdoYW1cLXlvdW5nXC11bml2ZXJzaXR5Owor5YiG5L2I5byP57WQ5qeLID4gZGlzdHJpYnV0ZWRcLWFyY2hpdGVjdHVyZTsKK+aMgeS4jeWQjOaUv+imiyA+IFwocG9saXRpY2FsbHlcKVwtZGlzc2VudGluZzsKK+S6uuawkeino+aUvui7jSA+IHBlb3BsZScnc1wtbGliZXJhdGlvblwtYXJteTsKK+W+nuWkluihqOS+hueciyA+IGxvb2tpbmdcLWZyb21cLXRoZVwtb3V0c2lkZTsKK+S6pOaPm+iZm+mbu+i3ryA+IHN3aXRjaGVkXC12aXJ0dWFsXC1jaXJjdWl0Owor5qC45q2m5Zmo5p2Q5paZID4gbnVjbGVhclwtd2VhcG9uXC1tYXRlcmlhbDsKK+eZvOS9iOaWsOi7n+S7tiA+IHRvXC1yZWxlYXNlXC1uZXdcLXNvZnR3YXJlOwor5bCI5bGs57aT5r+f5Y2AID4gZXhjbHVzaXZlXC1lY29ub21pY1wtem9uZTsKK+a1geS6oeWcqOa1t+WkliA+IHRvXC1iZVwtaW5cLWV4aWxlXC1vdmVyc2VhczsKK+S4jeaKteaKl+S4u+e+qSA+IHBvbGljeVwtb2ZcLW5vbnJlc2lzdGFuY2U7CivlnKjku4rlubTlubTlupUgPiBhdFwtdGhlXC1lbmRcLW9mXC10aGlzXC15ZWFyOwor5L6G5Zue5L6G5Y675ZywID4gYmFja3dhcmRzXC1hbmRcLWZvcndhcmRzOwor57ay57Wh5bGk5Y2U6K2wID4gbmV0d29ya1wtbGF5ZXJcLXByb3RvY29sOwor5bel5qWt5YyW5ZyL5a62ID4gaW5kdXN0cmlhbGl6ZWRcLWNvdW50cnk7CivmlZnnvqnlkozogZbntIQgPiBkb2N0cmluZVwtYW5kXC1jb3ZlbmFudHM7CivntrLntaHnrqHnkIblk6EgPiBuZXR3b3JrXC1hZG1pbmlzdHJhdG9yOwor6Iqd5Yqg5ZOl5aSn5a24ID4gdW5pdmVyc2l0eVwtb2ZcLWNoaWNhZ287CivpmbjmtbfnqbrkuInou40gPiBhcm15XCxcLW5hdnlcLFwtYWlyXC1mb3JjZTsKK+acrOWcn+WMlui7n+S7tiA+IHNvZnR3YXJlXC1sb2NhbGl6YXRpb247CivmqpTmoYjliIbphY3ljYAgPiBmaWxlXC1hbGxvY2F0aW9uXC10YWJsZTsKK+WcsOWwjeepuuWwjuW9iCA+IGdyb3VuZFwtdG9cLWFpclwtbWlzc2lsZTsKK+S4jeS/oeS7u+aKleelqCA+IHZvdGVcLW9mXC1ub1wtY29uZmlkZW5jZTsKK+acrOS6uueahOingOm7niA+IFwob25lJydzXClcLXBlcnNvbmFsXC12aWV3Owor6Luf6auU6YWN6YCB6ICFID4gc29mdHdhcmVcLWRpc3RyaWJ1dG9yOwor5q235L6G5pyA5L2O6bueID4gYWxsXC10aW1lXC1sb3dcLVwocG9pbnRcKTsKK+exs+W+t+eIvuS8r+ijoSA+IG1pZGRsZWJ1cnlcLVwoY29sbGVnZVwpOwor5YWp6bue5Y2B5Lmd5YiGID4gMlwtXDoxXC05XC1cKHRpbWVcLW9mXC1kYXlcKTsKK+W5gOaqoumpl+W6j+WIlyA+IGZyYW1lXC1jaGVja1wtc2VxdWVuY2U7CivkuI3lrozlhajkuK3nq4sgPiBpbXBlcmZlY3RcLW5ldXRyYWxpdHk7CivlhYvph4zmlq/miZjlvJcgPiBcKHdhcnJlblwpXC1jaHJpc3RvcGhlcjsKK+mRkuWumuWnlOWToeacgyA+IGV2YWx1YXRpb25cLWNvbW1pdHRlZTsKK+mmrOS+huilv+S6nuiqniA+IG1hbGFzaWFuXC1cKGxhbmd1YWdlXCk7CivpgY7kuobkupTliIbpkJggPiBmaXZlXC1taW51dGVzXC1wYXNzZWQ7CivlhYvnvoXlnLDkup7oqp4gPiBjcm9hdGlhblwtXChsYW5ndWFnZVwpOwor6KiO6KuW55qE6K2w6aGMID4gdG9waWNcLW9mXC1kaXNjdXNzaW9uOwor5Zyw5Z2A55qE6L2J5o+bID4gYWRkcmVzc1wtdHJhbnNsYXRpb247Civoh6rli5XlnLDlt6XkvZwgPiBhdXRvbWF0aWNcLW9wZXJhdGlvbjsKK+S/neWuieiHquWLleWMliA+IHNlY3VyaXR5XC1hdXRvbWF0aW9uOwor5YiG5L2I5byP57ay57WhID4gZGlzdHJpYnV0ZWRcLW5ldHdvcms7CivkuI3mnJ/nhLbogIznhLYgPiBoYXBwZW5cLXVuZXhwZWN0ZWRseTsKK+WKoOWAvOWei+e2sui3ryA+IHZhbHVlXC1hZGRlZFwtbmV0d29yazsKK+WboOeJuee2suiBr+mAmiA+IGludGVybmV0XC1jb25uZWN0aW9uOwor56eR5a2455qE5Lqk5rWBID4gc2NpZW50aWZpY1wtZXhjaGFuZ2U7Civpi7Dpm6LlrZDpm7vmsaAgPiBsaXRoaXVtXC1pb25cLWJhdHRlcnk7CivplbfmnJ/nqanlrprmgKcgPiBsb25nXC10ZXJtXC1zdGFiaWxpdHk7CivmqJPlrofoh6rli5XljJYgPiBidWlsZGluZ1wtYXV0b21hdGlvbjsKK+imlueql+WKoOmAn+WZqCA+IHdpbmRvd3NcLWFjY2VsYXJhdG9yOwor6I+v54i+6KGX5pel5aCxID4gd2FsbFwtc3RyZWV0XC1qb3VybmFsOwor5ZyL5rCR6buo6LuN6ZqKID4gbmF0aW9uYWxpc3RcLWZvcmNlczsKK+S4gOWwj+aZguS7peW+jCA+IGFcLXNob3J0XC10aW1lXC1sYXRlcjsKK+e2sui3r+mAo+aOpeWxpCA+IG5ldHdvcmtcLWxpbmtcLWxheWVyOwor5bq35aWI54i+5aSn5a24ID4gY29ybmVsbFwtdW5pdmVyc2l0eTsKK+WhnueIvue2reS6nuiqniA+IHNlcmJpYW5cLVwobGFuZ3VhZ2VcKTsKK+aWr+eTpuW4jOijoeiqniA+IHN3YWhpbGlcLVwobGFuZ3VhZ2VcKTsKK+Wci+Wutuaomea6lueivCA+IGdiXC1cKGd1b1wtYmlhb1wpXC1jb2RlOwor5pys5Yid5a2Q5Y2I57eaID4gdGhlXC1maXJzdFwtbWVyaWRpYW47Civlrrbluq3mtojosrvogIUgPiBob3VzZWhvbGRcLWNvbnN1bWVyOwor5Z+f5ZCN5pyN5YuZ5ZmoID4gZG9tYWluXC1uYW1lXC1zZXJ2ZXI7CivnmbzlsZXkuK3lnIvlrrYgPiBkZXZlbG9waW5nXC1jb3VudHJ5Owor5aSa56uv5Lit57m85ZmoID4gbXVsdGlwb3J0XC1yZXBlYXRlcjsKK+eZvOWxleeahOWci+WutiA+IGRldmVsb3BpbmdcLWNvdW50cnk7CivnlJ/mtLvlv4XpnIDlk4EgPiBsaWZlJydzXC1uZWNlc3NpdGllczsKK+WPr+ihjOaAp+eglOeptiA+IGZlYXNpYmlsaXR5XC1zdHVkeTsKK+aVuOaTmuW6q+i7n+S7tiA+IGRhdGFiYXNlXC1zb2Z0d2FyZTsKK+ilv+ijoeeIvuWtl+avjSA+IGN5cmlsbGljXC1hbHBoYWJldDsKK+aSkui/puWIqeS6nuabuCA+IGJvb2tcLW9mXC16ZWNoYXJpYWg7Civms6Llo6vpoJPlpKflrbggPiBib3N0b25cLXVuaXZlcnNpdHk7Civovqblhazoh6rli5XljJYgPiBvZmZpY2VcLWF1dG9tYXRpb247CivkuI3lj4rnianli5XoqZ4gPiBpbnRyYW5zaXRpdmVcLXZlcmI7Civohp3kuIrlnovpm7vohaYgPiBsYXB0b3BcLVwoY29tcHV0ZXJcKTsKK+S4reWkruWnlOWToeacgyA+IGNlbnRyYWxcLWNvbW1pdHRlZTsKK+WIsOmCo+WAi+aZguWAmSA+IHVudGlsXC10aGlzXC1tb21lbnQ7CivmtJvmnYnno6/mmYLloLEgPiBsb3NcLWFuZ2VsZXNcLXRpbWVzOwor5paH5YyW55qE5Lqk5rWBID4gY3VsdHVyYWxcLWV4Y2hhbmdlOwor5pav5rSb5LyQ5YWL6KqeID4gc2xvdmFrXC1cKGxhbmd1YWdlXCk7CivlpJblnIvml4XpgYrogIUgPiBmb3JlaWduXC10cmF2ZWxsZXI7CivkuIDljYPkuIPnmb7okKwgPiBzZXZlbnRlZW5cLW1pbGxpb247Civlp5Tlk6HmnIPmnIPorbAgPiBjb21taXR0ZWVcLW1lZXRpbmc7CivoqIjnrpfmqZ/lt6Xmpa0gPiBjb21wdXRlclwtaW5kdXN0cnk7CivlhbHnlKLpu6jpg6jpmoogPiBjb21tdW5pc3RcLWZvcmNlczsKK+acjeWLmeaPkOS+m+iAhSA+IHNlcnZpY2VcLXByb3ZpZGVyOwor56e75YuV5byP6Zu76KmxID4gbW9iaWxlXC10ZWxlcGhvbmU7CivlqZrlpJbmgKfmjqXop7ggPiBleHRyYW1hcml0YWxcLXNleDsKK+azoue+juavlOmHjeioiCA+IGJhdW1lXC1oeWRyb21ldGVyOwor5aSW5ZyL5oqV6LOH6ICFID4gZm9yZWlnblwtaW52ZXN0b3I7CivnlbDmgKfmgKfmjqXop7ggPiBoZXRlcm9zZXh1YWxcLXNleDsKK+ahjOS4iuWei+mbu+iFpiA+IGRlc2t0b3BcLWNvbXB1dGVyOwor6KiY6ICF5oub5b6F5pyDID4gcHJlc3NcLWNvbmZlcmVuY2U7Civljp/lrZDnp5HlrbjlrrYgPiBhdG9taWNcLXNjaWVudGlzdDsKK+mVt+W6puaMh+ekuuespiA+IGxlbmd0aFwtaW5kaWNhdG9yOwor5Lu/55yf5pyN5YuZ5ZmoID4gZW11bGF0aW9uXC1zZXJ2ZXI7CivoqIjnrpfmqZ/ntrLntaEgPiBjb21wdXRlclwtbmV0d29yazsKK+mBjuS7veewoeWWruWMliA+IG92ZXJzaW1wbGljYXRpb247Civnn6XorZjlt6XnqIvluKsgPiBrbm93bGVkZ2VcLXdvcmtlcjsKK+izh+aWmemPiOe1kOWxpCA+IGRhdGFcLWxpbmtcLWxheWVyOwor6Zu2562J5b6F54uA5oWLID4gemVyb1wtd2FpdFwtc3RhdGU7CivlnKjlvojlpJrmlrnpnaIgPiBpblwtbWFueVwtYXNwZWN0czsKK+S/hOW3tOW6leS6nuabuCA+IGJvb2tcLW9mXC1vYmFkaWFoOwor5pW45pOa6Y+I6Lev5bGkID4gZGF0YVwtbGlua1wtbGF5ZXI7CivnqK7ml4/kuLvnvqnogIUgPiByYWNpc3RcLVwocGVyc29uXCk7CivntrLntaHngI/opr3lmaggPiBuZXR3b3JrXC1icm93c2VyOwor5a6i5oi25qmf6Luf5Lu2ID4gY2xpZW50XC1zb2Z0d2FyZTsKK+iHquWLleWUruiyqOapnyA+IHZlbmRpbmdcLW1hY2hpbmU7CivntrLntaHmiZPljbDmqZ8gPiBuZXR3b3JrXC1wcmludGVyOwor5p2/5p2/5YWt5Y2B5ZubID4gdW5hY2NvbW1vZGF0aW5nOwor56ys5LiA5YCL5bGk5qyhID4gdGhlXC1maXJzdFwtc3RhZ2U7CivlhajnkIPos4foqIrntrIgPiB3b3JsZFwtd2lkZVwtd2ViOwor5Lul5aSq57ay57Wh5bmAID4gZXRoZXJuZXRcLWZyYW1lOwor5LiN5bmz562J5qKd57SEID4gdW5lcXVhbFwtdHJlYXR5Owor5ZaY5LiN6YGO5rCj5L6GID4gY2Fubm90XC1icmVhdGhlOwor5o235YWL5YWx5ZKM5ZyLID4gY3plY2hcLXJlcHVibGljOwor5bel5qWt55qE5beo6aCtID4gaW5kdXN0cnlcLW1vZ29sOwor5q+P56uv5Y+j5YO55qC8ID4gcHJpY2VcLXBlclwtcG9ydDsKK+S4jeato+W4uOeLgOazgSA+IGFibm9ybWFsXC1zdGF0ZTsKK+mWi+aUvuW8j+ezu+e1sSA+IG9wZW5cLXN5c3RlbVwoc1wpOwor5LiW55WM55qE6Kqe6KiAID4gd29ybGRcLWxhbmd1YWdlOwor5r+A5YWJ5omT5byV5qmfID4gbGFzZXJcLXByaW50ZXI7Civlk6XmnpflpJrlvozmm7ggPiAyXC1jb3JpbnRoaWFuczsKK+S4jeiomOWQjeaKleelqCA+IHNlY3JldFwtYmFsbG90Owor5LiN5YiX6aGb6Ku45bO2ID4gYnJpdGlzaFwtaXNsZXM7Civlk6XmnpflpJrliY3mm7ggPiAxXC1jb3JpbnRoaWFuczsKK+S4jeWPr+iDveeahOS6iyA+IGltcG9zc2liaWxpdHk7Civnmb7liIbkuYvkupTljYEgPiBmaWZ0eVwtcGVyY2VudDsKK+iJvua7i+eXheaKl+mrlCA+IGFpZHNcLWFudGlib2R5Owor5LiN5Y+v5L6154qv5qyKID4gaW52aW9sYWJpbGl0eTsKK+mQs+WwhOWNsOihqOapnyA+IGxhc2VyXC1wcmludGVyOwor55Sf5ZG955qE6YG66LehID4gdHJhY2VcLW9mXC1saWZlOwor5LiA5Lmd5Lmd5LiD5bm0ID4gdGhlXC15ZWFyXC0xOTk3Owor5YWo5LiW55WM56ys5LiAID4gd29ybGQnJ3NcLWZpcnN0Owor5pmu6YCa6ICB55m+5aeTID4gY29tbW9uXC1wZW9wbGU7Civoib7mu4vnl4XmgqPogIUgPiBhaWRzXC1wYXRpZW50Owor57C/6KiY566h55CG5ZOhID4gY29tbWlzc2FyaWFuOwor5qC45q2m5Zmo6Kmm6amXID4gbnVjbGVhclwtdGVzdDsKK+S6jOWNgeS4gOS4lue0gCA+IDIxc3RcLWNlbnR1cnk7CivmnInmop3mnInnkIblnLAgPiBtZXRob2RpY2FsbHk7CivkuI3mmK/njqnlhZLnmoQgPiBpdCcnc1wtbm9cLWpva2U7Civnspfkv5fnmoTpmo7ntJogPiB2dWxnYXJcLWNsYXNzOwor5omT5Y2w5pyN5YuZ5ZmoID4gcHJpbnRcLXNlcnZlcjsKK+izk+ilv+azleWwvOS6niA+IHBlbm5zeWx2YW5pYTsKK+iAtuWIqeexs+WTgOatjCA+IGxhbWVudGF0aW9uczsKK+WFq+S5neS4jembouWNgSA+IHByZXR0eVwtY2xvc2U7CivplovmlL7lvI/ntrLot68gPiBvcGVuXC1uZXR3b3JrOwor5YWL6KOh5aeG5p6X5a6uID4gdGhlXC1rcmVtbGluOwor5aSq5bmz5rSL6YCx6YKKID4gcGFjaWZpY1wtcmltOwor5r+A5YWJ5LqM5qW1566hID4gbGFzZXJcLWRpb2RlOwor5Zmo5a6Y5o2Q54276ICFID4gb3JnYW5cLWRvbm9yOwor5paH5Lu25pyN5YuZ5ZmoID4gZmlsZVwtc2VydmVyOwor54675oSP6ICz5a6a5b6LID4gYm95bGUnJ3NcLWxhdzsKK+S4gOWNg+Wbm+eZvuWEhCA+IDE0MFwtYmlsbGlvbjsKK+iHqueUsemBuOaTh+asiiA+IGZyZWVcLWFnZW5jeTsKK+W3tOaer+Wvp+S4u+e+qSA+IGJha3VuaW5pc207CivoqqrkuI3lh7roqbHkvoYgPiBzcGVlY2hsZXNzOwor5aGU5ZCJ5YWL5pav5Z2mID4gdGFqaWtpc3RhbjsKK+WKoOWIqeemj+WwvOS6niA+IGNhbGlmb3JuaWE7Civkvb/nlKjogIXkuK3ku4sgPiB1c2VyXC1hZ2VudDsKK+WTiOiWqeWFi+aWr+WdpiA+IGthemFraHN0YW47Civnmb7liIbkuYvkuZ3ljYEgPiA5MFwtcGVyY2VudDsKK+WFrOmWi+iojuirluacgyA+IG9wZW5cLWZvcnVtOwor6Im+5ruL55eF55eF5q+SID4gYWlkc1wtdmlydXM7CivlnLDmlrnlrpjogbfkvY0gPiBwcmVmZWN0dXJlOwor56OB55uk6amF5YuV5ZmoID4gZGlzbFwtZHJpdmU7CivlpbPoo53oo4HnuKvluKsgPiBkcmVzc21ha2VyOwor6ZW35a2Q55qE5ZCN5Lu9ID4gYmlydGhyaWdodDsKK+S4gOeZvuS6lOWNgeWEhCA+IDE1XC1iaWxsaW9uOwor6Zi/5q+U6KW/5bC85LqeID4gYWJ5c3NpbmlhOwor56S+5pyD5Li7576p6ICFID4gc29jaWFsaXN0Owor5o+Q5pGp5aSq5ZCO5pu4ID4gMlwtdGltb3RoeTsKK+WIsOebruWJjeeCuuatoiA+IHVudGlsXC1ub3c7CivmtYHooYzmgKfmhJ/lhpIgPiBpbmZsdWVuemE7CivkuI3nqanlrprmsKPmtYEgPiB0dXJidWxlbnQ7Civmj5DmkanlpKrliY3mm7ggPiAxXC10aW1vdGh5Owor5rOi5Yip5bC86KW/5LqeID4gcG9seW5lc2lhOwor5ZyW5pu4566h55CG5ZOhID4gbGlicmFyaWFuOwor5Y2w5bqm5bC86KW/5LqeID4gaW5kb25lc2lhOwor5rCR5Li75Li7576p6ICFID4gZGVtb2NyYXRzOwor6K6K54Sm6Led6Y+h6aCtID4gem9vbVwtbGVuczsKK+S8gealremWk+e2sui3ryA+IGV4dHJhbmV0Owor5bi45Z2Q5rG96LuK6ICFID4gbW90b3Jpc3Q7Civmsb3ou4rlsZXopr3mnIMgPiBjYXJcLXNob3c7CivkvIHmpa3lhafntrLot68gPiBpbnRyYW5ldDsKK+aSkuavjeiAs+iomOS4iyA+IDJcLXNhbXVlbDsKK+aSkuavjeiAs+iomOS4iiA+IDFcLXNhbXVlbDsKK+Wbm+aciOWNgeS4g+iZnyA+IGFwcmlsXC0xNzsKK+elnuWtuOeglOeptuaJgCA+IHNlbWluYXJ5Owor5Z+D5aGe5L+E5q+U5LqeID4gZXRoaW9waWE7CivlpaflhYvmi4nojbfppqwgPiBva2xhaG9tYTsKK+S4jeWQjeitveS6i+eJqSA+IGRpc2hvbm9yOwor5rW36LuN57i95Y+45LukID4gYWRtaXJhbDsKK+S6lOaciOWNgeS6lOiZnyA+IG1heVwtMVwtNTsKK+mYv+eIvuWPiuWIqeS6niA+IGFsZ2VyaWE7CivkuIPmnIjkuInljYHomZ8gPiBqdWx5XC0zMDsKK+mmrOWFi+aAneS4u+e+qSA+IG1hcnhpc207CivpmL/niL7lt7TlsLzkup4gPiBhbGJhbmlhOwor5LiA56+AXCjoqalcKSA+IHN0YW56YTsKK+mAj+WNsOeJiOWNsOWItyA+IG9mZnNldDsKK+avm+e5lOmBi+WLleihqyA+IGplcnNleTsKK+eUt+S/rumBk+mZoumVtyA+IGFiYm90Owor6Kq/5Yi26Kej6Kq/5ZmoID4gbW9kZW07CivkuInoibLntKvnvoXomK0gPiBwYW5zeTsKK+WuieWFqOeQhuS6i+acgyA+IHRoZVwtdTsKK+aKseiWquaVkeeBqyA+IGNhcnJ5XC1mYWdnb3RzXC10b1wtcHV0XC1vdXRcLWFcLWZpcmVcLVwtXC1hZG9wdFwtYVwtd3JvbmdcLW1ldGhvZFwtdG9cLXNhdmVcLWFcLXNpdHVhdGlvblwtYW5kXC1lbmRcLXVwXC1ieVwtbWFraW5nXC1pdFwtd29yc2U7Civmna/msLTou4rolqogPiB0cnlpbmdcLXRvXC1wdXRcLW91dFwtYVwtYnVybmluZ1wtY2FydGxvYWRcLW9mXC1mYWdnb3RzXC13aXRoXC1hXC1jdXBcLW9mXC13YXRlclwtXC1cLWFuXC11dHRlcmx5XC1pbmFkZXF1YXRlXC1tZWFzdXJlOwor6L6v6Ki85pa95rK7ID4gZGlhZ25vc2lzXC1hbmRcLXRyZWF0bWVudFwtYmFzZWRcLW9uXC1hblwtb3ZlcmFsbFwtYW5hbHlzaXNcLW9mXC10aGVcLWlsbG5lc3NcLWFuZFwtdGhlXC1wYXRpZW50JydzXC1jb25kaXRpb247CivmlZ3luJroh6rnj40gPiB2YWx1ZVwtb25lJydzXC1vd25cLW9sZFwtYnJvb21cLVwtXC1jaGVyaXNoXC1zb21ldGhpbmdcLW9mXC1saXR0bGVcLXZhbHVlXC1zaW1wbHlcLWJlY2F1c2VcLWl0XC1pc1wtb25lJydzXC1vd247CivlhbXkuI3ooYDliIMgPiB0aGVcLWVkZ2VzXC1vZlwtdGhlXC1zd29yZHNcLW5vdFwtYmVpbmdcLXN0YWluZWRcLXdpdGhcLWJsb29kXC1cLVwtd2luXC12aWN0b3J5XC13aXRob3V0XC1maXJpbmdcLWFcLXNob3Q7CivppIrlhZLpmLLogIEgPiBcKG9mXC1wYXJlbnRzXClcLXRvXC1icmluZ1wtdXBcLWNpaGxkcmVuXC1mb3JcLXRoZVwtcHVycG9zZVwtb2ZcLWJlaW5nXC1sb29rZWRcLWFmdGVyXC1pblwtb2xkXC1hZ2U7CivkuI3lhbHmiLTlpKkgPiB3aWxsXC1ub3RcLWxpdmVcLXVuZGVyXC10aGVcLXNhbWVcLXNreVwtXCh3aXRoXC1vbmUnJ3NcLWVuZW15XClcLVwtXC1hYnNvbHV0ZWx5XC1pcnJlY29uY2lsYWJsZTsKK+aTiuWFtuaDsOatuCA+IGF2b2lkXC10aGVcLWVuZW15XC13aGVuXC1oZVwtaXNcLWZyZXNoXC1hbmRcLXN0cmlrZVwtaGltXC13aGVuXC1oZVwtaXNcLXRpcmVkXC1hbmRcLXdpdGhkcmF3czsKK+mBv+WFtumKs+awoyA+IGF2b2lkXC10aGVcLWVuZW15XC13aGVuXC1oZVwtaXNcLWZyZXNoXC1hbmRcLXN0cmlrZVwtaGltXC13aGVuXC1oZVwtaXNcLXRpcmVkXC1hbmRcLXdpdGhkcmF3czsKK+S/neeUsuWItuW6piA+IHRoZVwtYmFvXC1qaWFcLXN5c3RlbVwtXChhblwtYWRtaW5pc3RyYXRpdmVcLXN5c3RlbVwtb3JnYW5pemVkXC1vblwtYmFzaXNcLW9mXC1ob3VzZWhvbGRzXCk7CivkuI3ovqjoj73puqUgPiBiZVwtdW5hYmxlXC10b1wtdGVsbFwtYmVhbnNcLWZyb21cLXdoZWF0XC1cLVwtaGF2ZVwtbm9cLWtub3dsZWRnZVwtb2ZcLXByYWN0aWNhbFwtbWF0dGVyczsKK+aBreWWnOeZvOiyoSA+IGNvbmdyYXR1bGF0aW9uc1wtZm9yXC1nZXR0aW5nXC1yaWNoXC1cKHRyYWRpdGlvbmFsXC1jaGluZXNlXC1uZXdcLXllYXInJ3NcLWZ1dHVyZVwtdXNlOwor5aGe6Z+L6KOh6Ku+ID4gXFtqZWFuXC1taWNoZWxcXVwtc2V2ZXJpbm9cLVxbd29ybGRcLWJhbmtcLXZpY2VcLXByZXNpZGVudFwsXC1lYXN0XC1hc2lhXC1hbmRcLXBhY2lmaWNcXTsKK+acieacn+W+kuWIkSA+IGxpbWl0ZWRcLXRlcm1cLW9mXC1pbXByaXNvbm1lbnRcLVwoaWVcLFwtYW55dGhpbmdcLWxlc3NcLXRoYW5cLWxpZmVcLWltcHJpc29ubWVudFwpOwor6ZaJ55uu5aGe6IG9ID4gc2h1dHNcLW9uZScnc1wtZXllc1wtYW5kXC1zdG9wXC11cFwtb25lJydzXC1lYXJzXC1cLVwtYmVcLW91dFwtb2ZcLXRvdWNoXC13aXRoXC1yZWFsaXR5Owor56yo6bOl5YWI6aObID4gY2x1bXN5XC1iaXJkc1wtaGF2ZVwtdG9cLXN0YXJ0XC1mbHlpbmdcLWVhcmx5XC1cLVwtdGhlXC1zbG93XC1uZWVkXC10b1wtc3RhcnRcLWVhcmx5Owor5pys6I2J57ax55uuID4gYW5cLW91dGxpbmVcLXRyZWF0aXNlXC1vZlwtbWVkaWNhbFwtaGVyYnNcLFwtY29tcGlsZWRcLWJ5XC1saTNcLXNoaTJcLXpoZW4xXC3mnY7mmYLnj407CivlhbXlvLfppqzlo68gPiBzdHJvbmdcLXNvbGRpZXJzXC1hbmRcLXN0dXJkeVwtaG9yc2VzXC1cLVwtYVwtd2VsbFwtdHJhaW5lZFwtYW5kXC1wb3dlcmZ1bFwtYXJteTsKK+alreS9meWkp+WtuCA+IGNvbGxlZ2VcLWZvclwtcGVvcGxlXC13aG9cLWF0dGVuZFwtYWZ0ZXJcLXdvcmtcLVwobGl0XC5cOlwtc3BhcmVcLXRpbWVcLWNvbGxlZ2VcKTsKK+aNlemiqOaNieW9sSA+IGNoYXNlXC10aGVcLXdpbmRcLWFuZFwtY2x1dGNoXC1hdFwtc2hhZG93c1wtXC1cLW1ha2VcLWdyb3VuZGxlc3NcLWFjY3VzYXRpb25zOwor5LiN5YiG5b285q2kID4gbWFrZVwtbm9cLWRpc3RpbmN0aW9uXC1iZXR3ZWVuXC13aGF0JydzXC1vbmUnJ3NcLW93blwtYW5kXC13aGF0JydzXC1hbm90aGVyJydzOwor5LiN55+l5Yeh5bm+ID4gY2FuJyd0XC10ZWxsXC1ob3dcLW1hbnlcLXRoZXJlXC1hcmVcLVwtXC10aGVyZVwtYXJlXC1udW1lcm91c1wtc2ltaWxhclwtY2FzZXM7CivmirHmrpjlrojnvLogPiBjaGVyaXNoXC10aGVcLW91dG1vZGVkXC1hbmRcLXByZXNlcnZlXC10aGVcLW91dHdvcm5cLVwtXC1iZVwtY29uc2VydmF0aXZlOwor5Y2a5Y+k6YCa5LuKID4gY29udmVyc2FudFwtd2l0aFwtdGhpbmdzXC1wYXN0XC1hbmRcLXByZXNlbnRcLVwtXC1lcnVkaXRlXC1hbmRcLWluZm9ybWVkOwor5aSn6ayn5aSp5a6uID4gXCJ0aGVcLW1vbmtleVwtY3JlYXRlc1wtaGF2b2NcLWluXC1oZWF2ZW5cIlwsXC1zdG9yeVwtYWJvdXRcLXN1blwtd3VcLWtvbmc7CivmgrLlpKnmhqvkurogPiBiZW1vYW5cLXRoZVwtc3RhdGVcLW9mXC10aGVcLXVuaXZlcnNlXC1hbmRcLXBpdHlcLXRoZVwtZmF0ZVwtb2ZcLW1hbmtpbmQ7CivkuI3mnI3msLTlnJ8gPiBcKG9mXC1hXC1zdHJhbmdlclwpXC1ub3RcLWFjY3VzdG9tZWRcLXRvXC10aGVcLWNsaW1hdGVcLW9mXC1hXC1uZXdcLXBsYWNlOwor5ZOA5YW15b+F5YudID4gYW5cLWFybXlcLWJ1cm5pbmdcLXdpdGhcLXJpZ2h0ZW91c1wtaW5kaWduYXRpb25cLWlzXC1ib3VuZFwtdG9cLXdpbjsKK+efm+mgreaMh+WQkSA+IHRhcmdldFwtc29tZW9uZVwtb3JcLXNvbWV0aGluZ1wtXChmb3JcLWF0dGFja1wsXC1jcml0aWNpc21cLFwtZXRjXC5cKTsKK+S4jeaBpeS4i+WVjyA+IG5vdFwtZmVlbFwtYXNoYW1lZFwtdG9cLWFza1wtYW5kXC1sZWFyblwtZnJvbVwtb25lJydzXC1zdWJvcmRpbmF0ZXM7CivljaHmi4lPSyA+IGthcmFva2VcLVwoc2luZ2luZ1wtdG9cLXJlY29yZGVkXC1pbnN0cnVtZW50YWxcLWFjY29tcGFuaW1lbnRcKTsKK+S4reWci+awkeiIqiA+IGdlbmVyYWxcLWFkbWluaXN0cmF0aW9uXC1vZlwtY2l2aWxcLWF2aWF0aW9uXC1vZlwtY2hpbmFcLVwoY2FhY1wpOwor5LiJ5ZyL5ryU576pID4gbmFtZVwtb2ZcLWFcLWNsYXNzaWNcLW5vdmVsXCxcLVwicm9tYW5jZVwtb2ZcLXRoZVwtdGhyZWVcLWtpbmdkb21zXCI7Civog4zmsLTkuIDmiLAgPiBmaWdodFwtd2l0aFwtb25lJydzXC1iYWNrXC10b1wtdGhlXC1yaXZlclwtXC1cLWZpZ2h0XC10b1wtd2luXC1vclwtZGllOwor5p2v5byT6JuH5b2xID4gbWlzdGFraW5nXC10aGVcLXJlZmxlY3Rpb25cLW9mXC1hXC1ib3dcLWluXC10aGVcLWN1cFwtZm9yXC1hXC1zbmFrZTsKK+iDjOS6lemboumEiSA+IGxlYXZlXC1vbmUnJ3NcLW5hdGl2ZVwtcGxhY2VcLVwoZXNwZWNpYWxseVwtYWdhaW5zdFwtb25lJydzXC13aWxsXCk7Civms6LngL7otbfkvI8gPiBvZlwtYVwtcGllY2VcLW9mXC13cml0aW5nXC13aXRoXC1vbmVcLWNsaW1heFwtZm9sbG93aW5nXC1hbm90aGVyOwor5LiN54K65bey55SaID4gcmVmcmFpblwtZnJvbVwtZ29pbmdcLXRvXC1leHRyZW1lc1wtaW5cLW1ldGluZ1wtb3V0XC1wdW5pc2htZW50Owor5LiN57SE6ICM5ZCMID4gdGFrZVwtdGhlXC1zYW1lXC1hY3Rpb25cLW9yXC12aWV3XC13aXRob3V0XC1wcmlvclwtY29uc3VsdGF0aW9uOwor5YWr6Z2i546y55OPID4gYmVcLXNtb290aFwtYW5kXC1zbGlja1wtXChpblwtZXN0YWJsaXNoaW5nXC1zb2NpYWxcLXJlbGF0aW9uc1wpOwor55y+5b+X5oiQ5Z+OID4gXCJ1bml0eVwtb2ZcLXdpbGxcLWlzXC1hblwtaW1wcmVnbmFibGVcLXN0cm9uZ2hvbGRcIlwtXChwcm92ZXJiXCk7Civmipfml6XmiLDniK0gPiBcKGNoaW5hJydzXClcLXdhclwtb2ZcLXJlc2lzdGFuY2VcLWFnYWluc3RcLWphcGFuXC1cKDE5MzdcLTE5NDVcKTsKK+Wkp+adkOWwj+eUqCA+IHVzaW5nXC1hXC10YWxlbnRlZFwtcGVyc29uXC1pblwtYW5cLWluc2lnbmlmaWNhbnRcLXBvc2l0aW9uOwor5LiN6IGe5LiN5ZWPID4gbm90XC1ib3RoZXJcLXRvXC1hc2tcLXF1ZXN0aW9uc1wtb3JcLWxpc3RlblwtdG9cLXdoYXQnJ3NcLXNhaWQ7CivkuKbooYzkuI3mgpYgPiBib3RoXC1jYW5cLWJlXC1pbXBsZW1lbnRlZFwtd2l0aG91dFwtY29taW5nXC1pbnRvXC1jb25mbGljdDsKK+atpeatpeeCuueHnyA+IGFkdmFuY2VcLWdyYWR1YWxseVwtYW5kXC1lbnRyZW5jaFwtb25lc2VsZlwtYXRcLWV2ZXJ5XC1zdGVwOwor5LiA5pyb54Sh6ZqbID4gYXNcLWZhclwtYXNcLXRoZVwtZXllXC1jYW5cLXNlZVwtXChsaXRcOlwtbG9va1wtYWZhclwtbm9cLWJvdW5kXCk7CivkuI3opovntpPlgrMgPiBub3RcLXRvXC1iZVwtZm91bmRcLWluXC10aGVcLWNsYXNzaWNzXC1cLVwtbm90XC1hdXRob3JpdGF0aXZlOwor5pKl6Zuy6KaL5pelID4gZGlzcGVsXC10aGVcLWNsb3Vkc1wtYW5kXC1zZWVcLXRoZVwtc3VuXC1cLVwtcmVzdG9yZVwtanVzdGljZTsKK+WuieatpeeVtui7iiA+IHdhbGtcLW92ZXJcLWxlaXN1cmVseVwtaW5zdGVhZFwtb2ZcLXJpZGluZ1wtaW5cLWFcLWNhcnJpYWdlOwor5LiN5Yud5p6a6IiJID4gdG9vXC1udW1lcm91c1wtdG9cLW1lbnRpb25cLWluZGl2aWR1YWxseVwtb3JcLW9uZVwtYnlcLW9uZTsKK+izk+iHs+WmguatuCA+IGd1ZXN0c1wtZmVlbFwtYXRcLWhvbWVcLVwoaW5cLWFcLWhvdGVsXCxcLWd1ZXN0aG91c2VcLFwtZXRjXC5cKTsKK+WwlumWo+WIl+WztiA+IHNlbmtha3VcLWlzbGFuZHNcLVwoamFwYW5lc2VcLW5hbWVcLWZvclwtZGlhb3l1XC1pc2xhbmRzXCk7Civntq3lkL7niL7ml48gPiB0aGVcLXV5Z3VyXC1cKHVpZ2h1clwpXC1uYXRpb25hbGl0eVwsXC1saXZpbmdcLWluXC14aW5qaWFuZzsKK+WNl+iPr+aXqeWgsSA+IHNvdXRoXC1jaGluYVwtbW9ybmluZ1wtcG9zdFwtXChuZXdzcGFwZXJcLWluXC1ob25nXC1rb25nXCk7Civnl4XlhaXoho/ogpMgPiB0aGVcLWRpc2Vhc2VcLWhhc1wtYXR0YWNrZWRcLXRoZVwtdml0YWxzXC1cLVwtYmV5b25kXC1jdXJlOwor57SE57+w5ouJ6LKdID4gam9oblwtcmFiZVwtXChnZXJtYW5cLWV5ZXdpdG5lc3NcLXRvXC1uYW5qaW5nXC1tYXNzYWNyZVwpOwor5LiN56C05LiN56uLID4gd2l0aG91dFwtZGVzdHJ1Y3Rpb25cLXRoZXJlXC1jYW5cLWJlXC1ub1wtY29uc3RydWN0aW9uOwor5YyF55Si5Yiw5oi2ID4gZml4aW5nXC1vZlwtZmFybVwtb3V0cHV0XC1xdW90YXNcLWZvclwtZWFjaFwtaG91c2Vob2xkOwor6aex6aed56Wl5a2QID4gbmFtZVwtb2ZcLWFcLW5vdmVsXCxcLWx1b1wtdHVvXC14aWFuZ3ppXCxcLWJ5XC1sYW9cLXNoZVwt6ICB6IiNOwor6YC85LiK5qiR5bGxID4gYmVcLWRyaXZlblwtdG9cLWpvaW5cLXRoZVwtbGlhbmdzaGFuXC1tb3VudGFpblwtcmViZWxzOwor5Y2X6L2F5YyX6L2NID4gXChmaWdcLlwpXC1hY3RcLWluXC1hXC13YXlcLXRoYXRcLWRlZmVhdHNcLW9uZScnc1wtcHVycG9zZTsKK+S/neWkluWwsemGqyA+IFwob2ZcLWFcLXByaXNvbmVyXClcLXJlbGVhc2VkXC1mb3JcLW1lZGljYWxcLXRyZWF0bWVudDsKK+iSuOiSuOaXpeS4iiA+IGJlY29taW5nXC1tb3JlXC1wcm9zcGVyb3VzXC13aXRoXC1lYWNoXC1wYXNzaW5nXC1kYXk7Civng4/pra/mnKjpvYogPiB1cnVtcWlcLVwoY2FwaXRhbFwtb2ZcLXhpbmppYW5nXC1hdXRvbm9tb3VzXC1yZWdpb25cKTsKK+WuieWcn+mHjemBtyA+IGhhdGVcLXRvXC1sZWF2ZVwtYVwtcGxhY2VcLXdoZXJlXC1vbmVcLWhhc1wtbGl2ZWRcLWxvbmc7Civlt6XllYbpioDooYwgPiBpbmR1c3RyaWFsXC1hbmRcLWNvbW1lcmNpYWxcLWJhbmtcLW9mXC1jaGluYVwtXChpY2JjXCk7CivkuovoiIfpoZjpgZUgPiB0aGluZ3NcLWRvbicndFwtdHVyblwtb3V0XC10aGVcLXdheVwteW91XC13YW50XC1vclwtcGxhbjsKK+W8teeHiOe1kOe2tSA+IGJlXC1kZWNvcmF0ZWRcLXdpdGhcLWxhbnRlcm5zXC1hbmRcLWNvbG9yZWRcLWJhbm5lcnM7CivplonploDmgJ3pgY4gPiBzaHV0XC1vbmVzZWxmXC11cFwtYW5kXC1wb25kZXJcLW92ZXJcLW9uZScnc1wtbWlzdGFrZXM7Civplonpl5zoh6rlroggPiBjbG9zZVwtdGhlXC1jb3VudHJ5XC10b1wtaW50ZXJuYXRpb25hbFwtaW50ZXJjb3Vyc2U7CivkuI3pgb/oibHpmqogPiBzaHJpbmtcLW9yXC1mbGluY2hcLWZyb21cLW5vXC1kaWZmaWN1bHR5XC1vclwtZGFuZ2VyOwor6Zi/5pe65puy5rKbID4gbmdhd2FuZ1wtY2hvZXBlbFwtXCh0aWJldGFuXCxcLWZ1bGxicmlnaHRcLXNjaG9sYXJcKTsKK+eVq+ibh+a3u+i2syA+IHJ1aW5cLXRoZVwtZWZmZWN0XC1ieVwtYWRkaW5nXC13aGF0XC1pc1wtc3VwZXJmbHVvdXM7Civku5fnvqnln7foqIAgPiBzcGVha1wtb3V0XC1vblwtYVwtbWF0dGVyXC1vZlwtcHJpbmNpcGxlXC1vclwtanVzdGljZTsKK+WFteiHqOWfjuS4iyA+IHRoZVwtYXR0YWNraW5nXC1hcm15XC1oYXNcLXJlYWNoZWRcLXRoZVwtY2l0eVwtZ2F0ZXM7Civog4zln47lgJ/kuIAgPiBtYWtlXC1hXC1sYXN0XC1kaXRjaFwtc3RhbmRcLWJlZm9yZVwtdGhlXC1jaXR5XC13YWxsOwor55m+5oSf5Lqk6ZuGID4gYWxsXC1zb3J0c1wtb2ZcLWZlZWxpbmdzXC13ZWxsXC11cFwtaW5cLW9uZScnc1wtaGVhcnQ7CivlhbXkuI3ljq3oqZAgPiB0aGVyZVwtY2FuXC1uZXZlclwtYmVcLXRvb1wtbXVjaFwtZGVjZXB0aW9uXC1pblwtd2FyOwor5LqU5YWt5Y2B5q2yID4gXChpblwtb25lJydzXClcLWZpZnRpZXNcLW9yXC1zaXh0aWVzXC1cKHllYXJzXC1vZlwtYWdlXCk7Civpgb/ph43lsLHovJUgPiBhdm9pZFwtdGhlXC1pbXBvcnRhbnRcLWFuZFwtZHdlbGxcLW9uXC10aGVcLXRyaXZpYWw7CivmqJnmlrDnq4vnlbAgPiBzdGFydFwtc29tZXRoaW5nXC1uZXdcLWluXC1vcmRlclwtdG9cLWJlXC1kaWZmZXJlbnQ7CivlpKflip/lkYrmiJAgPiBzdWNjZXNzZnVsbHlcLWFjY29tcGxpc2hlZFwtXChwcm9qZWN0XC1vclwtZ29hbFwpOwor54Sh5omA55So5b+DID4gZWF0XC10aHJlZVwtc3F1YXJlXC1tZWFsc1wtYVwtZGF5XC1hbmRcLWRvXC1ub1wtd29yazsKK+ePremWgOW8hOaWpyA+IGRpc3BsYXlcLW9uZScnc1wtc2xpZ2h0XC1za2lsbFwtYmVmb3JlXC1hblwtZXhwZXJ0Owor5Lit5ZyL5pel5aCxID4gY2hpbmFcLWRhaWx5XC1cKGFuXC1lbmdsaXNoXC1sYW5ndWFnZVwtbmV3c3BhcGVyXCk7CivkuI3lj6/ntYLml6UgPiBiZVwtdW5hYmxlXC10b1wtY2FycnlcLW9uXC1ldmVuXC1mb3JcLWFcLXNpbmdsZVwtZGF5Owor6aO96aOf57WC5pelID4gZWF0XC10aHJlZVwtc3F1YXJlXC1tZWFsc1wtYVwtZGF5XC1hbmRcLWRvXC1ub1wtd29yazsKK+WWruanjeWMuemmrCA+IHNpbmdsZVwtaGFuZGVkXC1cKGxpdFw6XC1zaW5nbGVcLXNwZWFyXC1vbmVcLWhvcnNlXCk7CivlkI3lia/lhbblr6YgPiBub3RcLWp1c3RcLWluXC1uYW1lXC1vbmx5XCxcLWJ1dFwtYWxzb1wtaW5cLXJlYWxpdHk7CivllpzmlrDljq3oiIogPiBsaXRlcmFsXDpcLXRvXC1saWtlXC10aGVcLW5ld1wsXC1hbmRcLWhhdGVcLXRoZVwtb2xkOwor5ouN5qGI5Y+r57WVID4gbGl0XC5cOlwtc2xhcFwtdGhlXC10YWJsZVwtYW5kXC1zaG91dFwtd2l0aFwtcHJhaXNlOwor6aKo5Zyf5Lq65oOFID4gbG9jYWxcLWNvbmRpdGlvbnNcLVwoaHVtYW5cLWFuZFwtZW52aXJvbm1lbnRhbFwpOwor6Zi/5ouJ5aGU5pavID4gXChhbGlcKVwtYWxhdGFzXC1cKGluZG9uZXNpYW5cLWZvcmVpZ25cLW1pbmlzdGVyXCk7CivkuK3lhbHkuK3lpK4gPiBjaGluZXNlXC1jb21tdW5pc3RcLXBhcnR5XC1jZW50cmFsXC1jb21taXR0ZWU7CivljZrogZ7lvLfoqJggPiBoYXZlXC13aWRlXC1sZWFybmluZ1wtYW5kXC1hXC1yZXRlbnRpdmVcLW1lbW9yeTsKK+eZvuW5tOWkp+ioiCA+IGFcLXByb2plY3RcLW9mXC12aXRhbFwtYW5kXC1sYXN0aW5nXC1pbXBvcnRhbmNlOwor5ouU6IuX5Yqp6ZW3ID4gc3BvaWxcLXRoaW5nc1wtdGhyb3VnaFwtZXhjZXNzaXZlXC1lbnRodXNpYXNtOwor6IKv5pmu57Si5oGpID4gXChkaXJrXClcLWtlbXB0aG9ybmVcLVwodXNcLXNlbmF0b3JcLWZyb21cLWlkYWhvXCk7CivlpJblravlpbPlhZIgPiBncmFuZGRhdWdodGVyXC1cKGRhdWdodGVyXC1vZlwtb25lJydzXC1kYXVnaGVyXCk7Civnmb7mipjkuI3mkpMgPiBrZWVwXC1vblwtZmlnaHRpbmdcLWluXC1zcGl0ZVwtb2ZcLWFsbFwtc2V0YmFja3M7Civlronouqvnq4vlkb0gPiBzZXR0bGVcLWRvd25cLWFuZFwtZ2V0XC1vblwtd2l0aFwtb25lJydzXC1wdXJzdWl0Owor5LiN5Y+v5LiA5LiWID4gY29uc2lkZXJcLW9uZXNlbGZcLXVuZXhjZWxsZWRcLWluXC10aGVcLXdvcmxkOwor57WV5bCN5pW45a2XID4gYWJzb2x1dGVcLVwoYXNcLW9wcG9zZWRcLXRvXC1yZWxhdGl2ZVwpXC1udW1iZXI7CivmirHpoK3pvKDnq4QgPiBjb3ZlclwtdGhlXC1oZWFkXC1hbmRcLXNuZWFrXC1hd2F5XC1saWtlXC1hXC1yYXQ7Civnmb7lu6Lkv7HoiIggPiBhbGxcLW5lZ2xlY3RlZFwtdGFza3NcLWFyZVwtYmVpbmdcLXVuZGVydGFrZW47Civpgb/lr6blsLHomZsgPiBzdGF5XC1jbGVhclwtb2ZcLXRoZVwtZW5lbXknJ3NcLW1haW5cLWZvcmNlXC1hbmQ7CivkuI3msYLnlJrop6MgPiBub3RcLXNlZWtcLXRvXC11bmRlcnN0YW5kXC10aGluZ3NcLXRob3JvdWdobHk7CivkuK3lpK7lhajmnIMgPiBwbGVuYXJ5XC1zZXNzaW9uXC1vZlwtdGhlXC1jZW50cmFsXC1jb21taXR0ZWU7Civlj6TmnbDmi4nniL4gPiBcKGlcLlwta1wuXClcLWd1anJhbFwtXChwcmltZVwtbWluaXN0ZXJcLW9mXC1pbmRpYVwpOwor5Ya35reh6Zec5L+CID4gY29sZFwtcmVsYXRpb25zXC1cKGVcLmdcLlwtYmV0d2VlblwtY291bnRyaWVzXCk7CivkuI3kuobkuobkuYsgPiBzZXR0bGVcLWFcLW1hdHRlclwtYnlcLWxlYXZpbmdcLWl0XC11bnNldHRsZWQ7CivkuI3ljbPkuI3pm6IgPiBiZVwtbmVpdGhlclwtdG9vXC1mYW1pbGlhclwtbm9yXC10b29cLWRpc3RhbnQ7CivnuL3mlL/msrvpg6ggPiBcKG1pbGl0YXJ5XClcLWdlbmVyYWxcLXBvbGl0aWNhbFwtZGVwYXJ0bWVudDsKK+WNiui3r+WHuuWutiA+IHN3aXRjaFwtdG9cLWFcLWpvYlwtb25lXC13YXNcLW5vdFwtdHJhaW5lZFwtZm9yOwor55eF5q+S5a245a62ID4gdmlyb2xvZ2lzdFwtXChwZXJzb25cLXdob1wtc3R1ZGllc1wtdmlydXNlc1wpOwor57WQ56S+6Ieq55SxID4gXChjb25zdGl0dXRpb25hbFwpXC1mcmVlZG9tXC1vZlwtYXNzb2NpYXRpb247CivolJPlu7blhajlnIsgPiB0b1wtc3ByZWFkXC10aHJvdWdob3V0XC10aGVcLWVudGlyZVwtY291bnRyeTsKK+eZvuaAneS4jeinoyA+IHJlbWFpblwtcHV6emxlZFwtYWZ0ZXJcLXBvbmRlcmluZ1wtb3Zlclwtc3RoOwor5Y2K5Yue5YuV5YqbID4gb25lXC1hYmxlXC10b1wtZG9cLWxpZ2h0XC1tYW51YWxcLWxhYm91clwtb25seTsKK+e4veW+jOWLpOmDqCA+IFwobWlsaXRhcnlcKVwtZ2VuZXJhbFwtbG9naXN0aWNzXC1kZXBhcnRtZW50Owor5LiA5ZyL5YWp5Yi2ID4gb25lXC1jb3VudHJ5XCxcLXR3b1wtc3lzdGVtc1wtXChjaGluYVwtdGFpd2FuXCk7Civnmb3poK3oq6fogIEgPiBsaXZlXC10b1wtcmlwZVwtb2xkXC1hZ2VcLWluXC1jb25qdWdhbFwtYmxpc3M7CivmiJDljYPkuIrokKwgPiBieVwtdGhlXC10aG91c2FuZHNcLWFuZFwtdGVuc1wtb2ZcLXRob3VzYW5kczsKK+S4jeWuo+iAjOaIsCA+IG9wZW5cLWhvc3RpbGl0aWVzXC13aXRob3V0XC1kZWNsYXJpbmdcLXdhcjsKK+S4jemBoOWNg+mHjCA+IG1ha2VcLWxpZ2h0XC1vZlwtdHJhdmVsbGluZ1wtYVwtdGhvdXNhbmRcLWxpOwor5a6J5bGF5qiC5qWtID4gbGl2ZVwtYW5kXC13b3JrXC1pblwtcGVhY2VcLWFuZFwtY29udGVudG1lbnQ7CivpgY3pq5TpsZflgrcgPiBjb3ZlcmVkXC1hbGxcLW92ZXJcLXdpdGhcLWN1dHNcLWFuZFwtYnJ1aXNlczsKK+WFp+aHruWkluaCoyA+IGRvbWVzdGljXC1zdHJpZmVcLWFuZFwtZm9yZWlnblwtYWdyZXNzaW9uOwor5rK755eF5pWR5Lq6ID4gY3VyZVwtdGhlXC1zaWNrbmVzc1wtdG9cLXNhdmVcLXRoZVwtcGF0aWVudDsKK+WTgOm0u+mBjemHjiA+IGFcLWxhbmRcLXN3YXJtaW5nXC13aXRoXC1kaXNhc3RlclwtdmljdGltczsKK+eXheW+nuWPo+WFpSA+IGlsbG5lc3NcLWZpbmRzXC1pdHNcLXdheVwtaW5cLWJ5XC10aGVcLW1vdXRoOwor57i95Y+D6KyA6YOoID4gXChtaWxpdGFyeVwpXC1nZW5lcmFsXC1zdGFmZlwtaGVhZHF1YXJ0ZXJzOwor5pKl57WD5qiC5ZmoID4gcGx1Y2tlZFwtc3RyaW5nXC1vclwtc3RyaW5nZWRcLWluc3RydW1lbnQ7CivliKXlhbfkuIDmoLwgPiBoYXZpbmdcLWFcLXVuaXF1ZVwtb3JcLWRpc3RpbmN0aXZlXC1zdHlsZTsKK+iugOizo+aWsOiBniA+IHlvbWl1cmlcLXNoaW1idW5cLVwoamFwYW5lc2VcLW5ld3NwYXBlclwpOwor5omN55aP5a245re6ID4gaGF2ZVwtbGl0dGxlXC10YWxlbnRcLWFuZFwtbGVzc1wtbGVhcm5pbmc7Civpgb/lnZHokL3kupUgPiBkb2RnZVwtYVwtcGl0XC1vbmx5XC10b1wtZmFsbFwtaW50b1wtYVwtd2VsbDsKK+iuiua6q+WLleeJqSA+IHBvaWtpbG90aGVybWFsXC1cKGNvbGRcLWJsb29kZWRcKVwtYW5pbWFsOwor5aSn5Lit5a2455SfID4gdW5pdmVyc2l0eVwtYW5kXC1oaWdoXC1zY2hvb2xcLXN0dWRlbnRzOwor5a6J5YiG5a6I5bexID4gYWJpZGVcLWJ5XC10aGVcLWxhd1wtYW5kXC1iZWhhdmVcLW9uZXNlbGY7CivlpKfpoa/ouqvmiYsgPiBmdWxseVwtZGlzcGxheWluZ1wtb25lJydzXC1jYXBhYmlsaXRpZXM7Civms6LngL7lo6/pl4ogPiBzdXJnaW5nXC1mb3J3YXJkXC13aXRoXC1ncmVhdFwtbW9tZW50dW07Civlm57mrbjkuK3lnIsgPiB0b1wtcmV0dXJuXC10b1wtY2hpbmFcLVwoZVwuZ1wuXC1ob25nXC1rb25nXCk7CivmhJvojqvog73liqkgPiB3aWxsaW5nXC10b1wtaGVscFwtYnV0XC11bmFibGVcLXRvXC1kb1wtc287Civoqr/mn6XntZDmnpwgPiByZXN1bHRzXC1cKG9mXC1hblwtaW52ZXN0aWdhdGlvblwsXC1wb2xsXCk7Civnmb7nq6/lvoXoiIkgPiBhXC10aG91c2FuZFwtdGhpbmdzXC1yZW1haW5cLXRvXC1iZVwtZG9uZTsKK+eni+mrmOawo+eIvSA+IGNsZWFyXC1hbmRcLXJlZnJlc2hpbmdcLWF1dHVtblwtd2VhdGhlcjsKK+WGsOa2iOeTpuinoyA+IG1lbHRcLWxpa2VcLWljZVwtYW5kXC1icmVha1wtbGlrZVwtdGlsZXM7CivljYrmlqTlhavlhakgPiBub3RcLW11Y2hcLXRvXC1jaG9vc2VcLWJldHdlZW5cLXRoZVwtdHdvOwor5q2l5Lq65b6M5aG1ID4gZm9sbG93XC1pblwtb3RoZXJcLXBlb3BsZScnc1wtZm9vdHN0ZXBzOwor6b6N6aOb6bOz6IieID4gbGl0XC5cOlwtZHJhZ29uXC1mbGllc1wsXC1waG9lbml4XC1kYW5jZXM7CivlnIvpmpvopovogZ4gPiBpbnRlcm5hdGlvbmFsXC1iYWNrZ3JvdW5kXC1rbm93bGVkZ2U7CivlnIvli5nlp5Tlk6EgPiBtZW1iZXJcLW9mXC1zdGF0ZVwtY291bmNpbFwtXChpblwtY2hpbmFcKTsKK+WPr+enu+akjeaApyA+IHBvcnRhYmlsaXR5XC1cKHByb2dyYW1taW5nXC1sYW5ndWFnZVwpOwor5ZG85ZKM5rWp54m5ID4gaG9oaG90XC1cKGNhcGl0YWxcLW9mXC1pbm5lclwtbW9uZ29saWFcKTsKK+Wwj+mhjOWkp+WBmiA+IG1ha2VcLWFcLWJpZ1wtZnVzc1wtb3ZlclwtYVwtbWlub3JcLWlzc3VlOwor5LiN6Jmb5q2k6KGMID4gdGhlXC10cmlwXC1oYXNcLW5vdFwtYmVlblwtbWFkZVwtaW5cLXZhaW47CivoqIDoq5boh6rnlLEgPiBcKGNvbnN0aXR1dGlvbmFsXClcLWZyZWVkb21cLW9mXC1zcGVlY2g7CivplovnmbznkrDlooMgPiBkZXZlbG9wbWVudFwtZW52aXJvbm1lbnRcLVwoY29tcHV0ZXJcKTsKK+S4jeitmOaZguWLmSA+IHNob3dcLW5vXC11bmRlcnN0YW5kaW5nXC1vZlwtdGhlXC10aW1lczsKK+S4jeaZguS5i+mcgCA+IGFcLXBvc3NpYmxlXC1wZXJpb2RcLW9mXC13YW50XC1vclwtbmVlZDsKK+S7peeJmemChOeJmSA+IGFcLXRvb3RoXC1mb3JcLWFcLXRvb3RoXC1cKHJldGFsaWF0aW9uXCk7Civnmb7miLDnmb7li50gPiBlbWVyZ2VcLXZpY3RvcmlvdXNcLWluXC1ldmVyeVwtYmF0dGxlOwor55Sx5q2k5Y+v6KaLID4gZnJvbVwtdGhpc1wsXC1pdFwtY2FuXC1iZVwtc2VlblwtdGhhdFwuXC5cLjsKK+WvuOiNieS4jeeUnyA+IFwibm90XC1ldmVuXC1hXC1ibGFkZVwtb2ZcLWdyYXNzXC1ncm93c1wiOwor5pOm5Lqu55y8552bID4gcmVtb3ZlXC10aGVcLXNjYWxlc1wtZnJvbVwtb25lJydzXC1leWVzOwor6KOc5YGP5pWR5byKID4gcmVtZWR5XC1kZWZlY3RzXC1hbmRcLXJlY3RpZnlcLWVycm9yczsKK+eZvuW3neatuOa1tyA+IGFsbFwtdGhpbmdzXC10ZW5kc1wtaW5cLW9uZVwtZGlyZWN0aW9uOwor6KqT5LiN5Y+N5oKUID4gdG9cLXZvd1wtbm90XC10b1wtYnJlYWtcLW9uZScnc1wtcHJvbWlzZTsKK+enkeWtuOe3qOi8ryA+IHNjaWVuY2VcLWVkaXRvclwtXChvZlwtYVwtcHVibGljYXRpb25cKTsKK+aYgummlumXiuatpSA+IHN0cmlkZVwtZm9yd2FyZFwtd2l0aFwtb25lJydzXC1jaGluXC11cDsKK+aXpee2k+aMh+aVuCA+IG5pa2tlaVwtaW5kZXhcLVwob2ZcLWphcGFuZXNlXC1zdG9ja3NcKTsKK+W+l+WvuOmAsuWwuiA+IGxpdGVyYWxcOlwtZ2V0XC1hblwtaW5jaFwsXC13YW50XC1hXC1mb290Owor5YyX5rSL6LuN6ZalID4gdGhlXC1ub3J0aGVyblwtd2FybG9yZHNcLVwoMTkxMlwtMTkyN1wpOwor5aSn5oOR5LiN6KejID4gZG9cLW5vdFwtdW5kZXJzdGFuZFwtYVwtY2VydGFpblwtdGhpbmc7CivmmI7mlofopo/lrpogPiBleHByZXNzbHlcLXN0aXB1bGF0ZWRcLVwoaW5cLXdyaXRpbmdcKTsKK+Wkp+W6reW7o+ecviA+IHB1YmxpY1wtcGxhY2VcLXdpdGhcLW51bWVyb3VzXC1wZW9wbGU7Civnmb7nhKHkuIDlpLEgPiBub1wtZGFuZ2VyXC1vZlwtYW55dGhpbmdcLWdvaW5nXC13cm9uZzsKK+S6uuasiuingOWvnyA+IGh1bWFuXC1yaWdodHNcLXdhdGNoXC1cKG9yZ2FuaXphdGlvblwpOwor5YKZ6ICM5LiN55SoID4gaGF2ZVwtc29tZXRoaW5nXC1yZWFkeVwtanVzdFwtaW5cLWNhc2U7Civnr4DlpJbnlJ/mnp0gPiBuZXdcLXByb2JsZW1zXC1jb21wbGljYXRlXC1hblwtaXNzdWU7CivpvLvpnZLoh4nohasgPiBhXC1ibG9vZHlcLW5vc2VcLWFuZFwtYVwtc3dvbGxlblwtZmFjZTsKK+S8gealreeuoeeQhiA+IGJ1c2luZXNzXC1tYW5hZ2VtZW50XC1cKGFzXC1hXC1zdHVkeVwpOwor5LiN6KyA6ICM5ZCIID4gYWdyZWVcLXdpdGhvdXRcLXByaW9yXC1jb25zdWx0YXRpb247CivmjInlhbXkuI3li5UgPiBub3RcLXRocm93XC10aGVcLXRyb29wc1wtaW50b1wtYmF0dGxlOwor5LiA5Lit5LiA6Ie6ID4gXCJvbmVcLWNoaW5hXCxcLW9uZVwtdGFpd2FuXCJcLVwocG9saWN5XCk7CivkuK3ml6Xpn5PotoogPiBjaGluYVwsXC1qYXBhblwsXC1rb3JlYVwsXC1hbmRcLXZpZXRuYW07CivlvaLlvbHkuI3pm6IgPiBpbnNlcGFyYWJsZVwtXChhc1wtZm9ybVwtYW5kXC1zaGFkb3dcKTsKK+WVhualreeJiOacrCA+IGNvbW1lcmNpYWxcLXZlcnNpb25cLVwob2ZcLXNvZnR3YXJlXCk7Civnmb7oroDkuI3ljq0gPiBiZVwtd29ydGhcLXJlYWRpbmdcLWFcLWh1bmRyZWRcLXRpbWVzOwor5YiG5rOi5aSa5belID4gd2F2ZWxlbmd0aFwtZGl2aXNpb25cLW11bHRpcGxleGluZzsKK+W/heeUseS5i+i3ryA+IHRoZVwtcm9hZFwtb25lXC1tdXN0XC1mb2xsb3dcLW9yXC10YWtlOwor5Lqo54m55rOw576FID4gaHVudGVyXC10eWxvXC1cKGhvbGx5d29vZFwtYWN0cmVzc1wpOwor6ZaJ6ZaA6YCg6LuKID4gbWFrZVwtYVwtY2FydFwtYmVoaW5kXC1jbG9zZWRcLWRvb3JzOwor5oKy5Zac5Lqk6ZuGID4gbWl4ZWRcLWZlZWxpbmdzXC1vZlwtZ3JpZWZcLWFuZFwtam95Owor5LiN5L+u6YKK5bmFID4gbm90XC1jYXJlXC1hYm91dFwtb25lJydzXC1hcHBlYXJhbmNlOwor5aSn5b+r5Lq65b+DID4gdG9cLXRoZVwtc2F0aXNmYWN0aW9uXC1vZlwtZXZlcnlvbmU7Civpnq3plbfojqvlj4ogPiBiZXlvbmRcLXRoZVwtcmVhY2hcLW9mXC1vbmUnJ3NcLXBvd2VyOwor5LiN5a2454Sh6KGTID4gaGF2ZVwtbmVpdGhlclwtbGVhcm5pbmdcLW5vclwtc2tpbGw7CivkuI3lr5LogIzmhYQgPiBzaGl2ZXJcLWFsbFwtb3ZlclwtdGhvdWdoXC1ub3RcLWNvbGQ7CivlsaTlh7rkuI3nqq4gPiB0b1wtY29tZVwtb3V0XC1vbmVcLWFmdGVyXC10aGVcLW90aGVyOwor5a6J5rCR5ZGK56S6ID4gYVwtbm90aWNlXC10b1wtcmVhc3N1cmVcLXRoZVwtcHVibGljOwor57Sw6I+M5q2m5ZmoID4gYmlvbG9naWNhbFwtd2VhcG9uXC1cKHVzaW5nXC1nZXJtc1wpOwor5Yil6ZaL55Sf6Z2iID4gc3RhcnRcLXNvbWV0aGluZ1wtbmV3XC1vclwtb3JpZ2luYWw7CivlpoLpo6LkvLzmuLQgPiB0aGlyc3RpbmdcLW9yXC1odW5nZXJpbmdcLWZvclwtc3RoXC47CivplovlnIvlhYPli5sgPiBmb3VuZGluZ1wtZmF0aGVyc1wtXChvZlwtYVwtY291bnRyeVwpOwor55u05o6l5pW45pOaID4gZGF0YVwtZGlyZWN0XC1cKGluXC1sYW5cLWVtdWxhdGlvblwpOwor5YKz57Wx6Yar6JelID4gXChjaGluZXNlXClcLXRyYWRpdGlvbmFsXC1tZWRpY2luZTsKK+acieWPsuS7peS+hiA+IHNpbmNlXC10aGVcLWJlZ2lubmluZ1wtb2ZcLWhpc3Rvcnk7CivljIXmsrvnmb7nl4UgPiBndWFyYW50ZWVcLXRvXC1jdXJlXC1hbGxcLWRpc2Vhc2VzOwor5oyJ6ZyA5YiG6YWNID4gZGlzdHJpYnV0aW9uXC1hY2NvcmRpbmdcLXRvXC1uZWVkOwor5LiW6LK/57WE57mUID4gd3RvXC1cKHdvcmxkXC10cmFkZVwtb3JnYW5pemF0aW9uXCk7CivmspLmnInku4DpurwgPiB0aGVyZScnc1wtbm90aGluZ1wtXChcLlwuXC5cLWFib3V0XC1pdFwpOwor5oyJ5Yue5YiG6YWNID4gZGlzdHJpYnV0aW9uXC1hY2NvcmRpbmdcLXRvXC13b3JrOwor6Zi/5ouJ5pyo5ZyWID4gYWxtYXR5XC1cKGNhcGl0YWxcLW9mXC1rYXpha2hzdGFuXCk7CivkuIPlsaTmnrbmp4sgPiBzZXZlblwtbGF5ZXJcLWFyY2hpdGVjdHVyZVwtXChvc2lcKTsKK+aHieacieeboeaciSA+IGV2ZXJ5dGhpbmdcLVwob25lXC1jb3VsZFwtaW1hZ2luZVwpOwor6Z2S5bGx57ag5rC0ID4gdmVyZGFudFwtaGlsbHNcLWFuZFwtZ3JlZW5cLXdhdGVyczsKK+iZueapi+apn+WgtCA+IGhvbmdxaWFvXC1haXJwb3J0XC1cKGluXC1zaGFuZ2hhaVwpOwor57Wx5LiA5oub55SfID4gbmF0aW9uYWxcLXVuaWZpZWRcLWVudHJhbmNlXC1leGFtOwor5p2x6YOo5pmC6ZaTID4gXCh1XC5zXC5cKVwtZWFzdGVyblwtXChzdGFuZGFyZFwpXC10aW1lOwor5pmC5aSn5pmC5bCPID4gc29tZXRpbWVzXC1iaWdcLFwtc29tZXRpbWVzXC1zbWFsbDsKK+S4jei+reiAjOWIpSA+IGxlYXZlXC13aXRob3V0XC1zYXlpbmdcLWdvb2RcLWJ5ZTsKK+eZvuiBveS4jeWOrSA+IHdvcnRoXC1oZWFyaW5nXC1hXC1odW5kcmVkXC10aW1lczsKK+S9jumajuiqnuiogCA+IGxvd1wtbGV2ZWxcLVwoY29tcHV0ZXJcKVwtbGFuZ3VhZ2U7CivkuI3otrPngrroqJMgPiBub3RcLXRvXC1iZVwtdGFrZW5cLWFzXC1hblwtZXhhbXBsZTsKK+Wkp+WQueWkp+aTgiA+IG1ha2VcLWFuXC1leGhpYml0aW9uXC1vZlwtb25lc2VsZjsKK+WuieS5i+iLpee0oCA+IGJlYXJcLWhhcmRzaGlwXC13aXRoXC1lcXVhbmltaXR5Owor6KW/5ZOI5Yqq5YWLID4gXChraW5nXClcLXNpaGFub3VrXC1cKG9mXC1jYW1ib2RpYVwpOwor5q665Lq65qGI5Lu2ID4gXChjYXNlXC1vZlwsXC1pbmNpZGVudFwtb2ZcKVwtbXVyZGVyOwor6IOM6YGT6ICM6aazID4gcnVuXC1pblwtdGhlXC1vcHBvc2l0ZVwtZGlyZWN0aW9uOwor5L2O57Sa6Kqe6KiAID4gbG93XC1sZXZlbFwtXChjb21wdXRlclwpXC1sYW5ndWFnZTsKK+S4jeWQjeS4gOaWhyA+IHdpdGhvdXRcLWFcLXBlbm55XC10b1wtb25lJydzXC1uYW1lOwor5LiN54Sh5bCP6KOcID4gbm90XC1iZVwtd2l0aG91dFwtc29tZVwtYWR2YW50YWdlOwor5Yqg5by3566h5Yi2ID4gdG9cLXRpZ2h0ZW5cLWNvbnRyb2xcLVwob3Zlclwtc3RoXCk7CivkurrmsJHml6XloLEgPiByZW5taW5cLXJpYmFvXC1cKHBlb3BsZScnc1wtZGFpbHlcKTsKK+mWi+Wni+S7peWJjSA+IGJlZm9yZVwtdGhlXC1iZWdpbm5pbmdcLVwob2ZcLXN0aFwpOwor5LiN6K2Y5aSn6auUID4gZmFpbFwtdG9cLXNlZVwtdGhlXC1sYXJnZXJcLWlzc3VlczsKK+S4jeaJk+iHquaLmyA+IGNvbmZlc3NcLXdpdGhvdXRcLWJlaW5nXC1wcmVzc2VkOwor5LiA6IiJ5YWp5b6XID4ga2lsbFwtdHdvXC1iaXJkc1wtd2l0aFwtb25lXC1zdG9uZTsKK+S4jemAn+S5i+WuoiA+IHVuaW52aXRlZFwtb3JcLXVuZXhwZWN0ZWRcLWd1ZXN0Owor5LiN5b6X6KaB6aCYID4gZmFpbFwtdG9cLWdyYXNwXC10aGVcLW1haW5cLXBvaW50czsKK+mAsuihjOiqv+afpSA+IHRvXC1jYXJyeVwtb3V0XC1hblwtaW52ZXN0aWdhdGlvbjsKK+Wkp+ihl+Wwj+W3tyA+IGxhcmdlXC1zdHJlZXRzXC1hbmRcLXNtYWxsXC1sYW5lczsKK+WQhOWkp+i7jeWNgCA+IFwidGhlXC1ncmVhdGVyXC1taWxpdGFyeVwtYXJlYXNcIjsKK+WRvOexsue+juWciyA+IHRvXC1jYWxsXC1vblwtdGhlXC11bml0ZWRcLXN0YXRlczsKK+ixkOiho+i2s+mjnyA+IGhhdmVcLWFtcGxlXC1mb29kXC1hbmRcLWNsb3RoaW5nOwor5LiN55+l5aW95q25ID4gbm90XC1rbm93XC13aGF0JydzXC1nb29kXC1mb3JcLW9uZTsKK+e2sueuoeaOpeWPoyA+IG5ldHdvcmtcLW1hbmFnZW1lbnRcLWludGVyZmFjZTsKK+agueaTmuS4iuihqCA+IGFjY29yZGluZ1wtdG9cLXRoZVwtYWJvdmVcLXRhYmxlOwor5ZyL6Ziy5Yip55uKID4gXChuYXRpb25hbFwpXC1kZWZlbmNlXC1pbnRlcmVzdHM7CivmnKzmnKvlgJLnva4gPiB0YWtlXC10aGVcLWJyYW5jaFwtZm9yXC10aGVcLXJvb3Q7CivmirHpoK3nl5vlk60gPiBjcnlcLW9uXC1lYWNoXC1vdGhlcicnc1wtc2hvdWxkZXI7CivkuI3kuIDogIzotrMgPiBieVwtbm9cLW1lYW5zXC1hblwtaXNvbGF0ZWRcLWNhc2U7Civnmb3ntJnpu5HlrZcgPiBcKHdyaXR0ZW5cKVwtaW5cLWJsYWNrXC1hbmRcLXdoaXRlOwor5LiN56KO546755KDID4gc2hhdHRlcnByb29mXC1vclwtc2FmZXR5XC1nbGFzczsKK+iOq+iht+S4gOaYryA+IGNhbm5vdFwtZGVjaWRlXC13aGljaFwtaXNcLXJpZ2h0Owor5YWr5ZyL6IGv6LuNID4gdGhlXC1laWdodFwtcG93ZXJcLWFsbGllZFwtZm9yY2U7CivlpJrlubTku6XkvoYgPiBmb3JcLW1hbnlcLXllYXJzXC1cKGluXC10aGVcLXBhc3RcKTsKK+efpeitmOeUouasiiA+IGludGVsbGVjdHVhbFwtcHJvcGVydHlcLXJpZ2h0czsKK+iqk+atu+S4jemZjSA+IHRvXC12b3dcLXRvXC1maWdodFwtdG9cLXRoZVwtZGVhdGg7CivmspLmnInlv4XopoEgPiB0aGVyZVwtaXNcLW5vXC1uZWVkXC10b1wtXChkb1wtc3RoXCk7CivkuK3mloflu6Pmkq0gPiBjaGluZXNlXC1cKGxhbmd1YWdlXClcLWJyb2FkY2FzdDsKK+enu+auluaJi+ihkyA+IFwob3JnYW5cKVwtdHJhbnNwbGFudFwtb3BlcmF0aW9uOwor5rWq5a2Q5Zue6aCtID4gdGhlXC1yZXR1cm5cLW9mXC1hXC1wcm9kaWdhbFwtc29uOwor5LiN5oCl5LmL5YuZID4gYVwtbWF0dGVyXC1vZlwtbm9cLWdyZWF0XC11cmdlbmN5Owor6Zu756OB5bmy5pO+ID4gZWxlY3Ryb21hZ25ldGljXC1pbnRlcmZlcmVuY2U7CivkuI3mmJPkuYvoq5YgPiBwZXJmZWN0bHlcLXNvdW5kXC1wcm9wb3NpdGlvbjsKK+WQhOeoruWQhOaooyA+IHZhcmlvdXNcLXNvcnRzXC1hbmRcLXZhcmlldGllczsKK+S4jemBlei+suaZgiA+IG5vdFwtbWlzc1wtdGhlXC1mYXJtaW5nXC1zZWFzb247CivkuoLkvZzmsbrlrpogPiB0b1wtbWFrZVwtYXJiaXRyYXJ5XC1kZWNpc2lvbnM7CivlpKflmajmmZrmiJAgPiBncmFuZFwtdGFsZW50c1wtbWF0dXJlXC1zbG93bHk7CivmjInmraXlsLHnj60gPiBmb2xsb3dcLXRoZVwtcHJlc2NyaWJlZFwtb3JkZXI7CivlpJbkuqTpg6jplbcgPiBtaW5pc3Rlclwtb2ZcLWZvcmVpZ25cLWFmZmFpcnM7CivoiInkuJbnn5rnm64gPiBhdHRyYWN0XC13b3JsZHdpZGVcLWF0dGVudGlvbjsKK+eNqOaWt+WwiOihjCA+IGFjdFwtaW5cLWFuXC1hcmJpdHJhcnlcLWZhc2hpb247Civnp4HkurrpkbDljJkgPiBwcml2YXRlXC1rZXlcLVwoaW5cLWVuY3J5cHRpb25cKTsKK+WNu+S5i+S4jeaBrSA+IHRvXC1yZWZ1c2VcLXdvdWxkXC1iZVwtaW1wb2xpdGU7CivppqzlpKrnpo/pn7MgPiBnb3NwZWxcLWFjY29yZGluZ1wtdG9cLW1hdHRoZXc7Civpm7voqbHmnIPorbAgPiBcKHRlbGVwaG9uZVwpXC1jb25mZXJlbmNlXC1jYWxsOwor5LiN6JC956qg6Ie8ID4gbm90XC1mb2xsb3dcLXRoZVwtYmVhdGVuXC10cmFjazsKK+aMieeFp+ioiOWKgyA+IGFjY29yZGluZ1wtdG9cLVwodGhlXClcLXBsYW5cLVwuXC5cLjsKK+S6i+aDheimgeWBmiA+IHRoaW5nXC10aGF0XC1uZWVkc1wtdG9cLWJlXC1kb25lOwor5LiA6Lev5bmz5a6JID4gdG9cLWhhdmVcLWFcLXBsZWFzYW50XC1qb3VybmV5Owor57SQ57SE5pmC5aCxID4gbmV3XC15b3JrXC10aW1lc1wtXChuZXdzcGFwZXJcKTsKK+W4uOWVj+WVj+mhjCA+IGZyZXF1ZW50bHlcLWFza2VkXC1xdWVzdGlvbnM7Civnmb7lrZTljYPnmKEgPiByaWRkbGVkXC13aXRoXC1nYXBpbmdcLXdvdW5kczsKK+WFtemAo+emjee1kCA+IHJhdmFnZWRcLWJ5XC1zdWNjZXNzaXZlXC13YXJzOwor6ZW35pyf5Lul5L6GID4gZXZlclwtc2luY2VcLWFcLWxvbmdcLXRpbWVcLWFnbzsKK+WuieWutuiQveaItiA+IG1ha2VcLW9uZScnc1wtaG9tZVwtaW5cLWFcLXBsYWNlOwor5YWl5pyo5LiJ5YiGID4gd3JpdHRlblwtaW5cLWFcLWZvcmNlZnVsXC1oYW5kOwor5YiG5pmC5aSa5belID4gdGltZVwtZGl2aXNpb25cLW11bHRpcGxleGluZzsKK+aguea3seiSguWbuiA+IGRlZXBcLXJvb3RlZFwtXChwcm9ibGVtXCxcLWV0Y1wpOwor5pif5bO25pel5aCxID4gc2luZ1wtdGFvXC1kYWlseVwtXChuZXdzcGFwZXJcKTsKK+mbu+S/oeacjeWLmSA+IHRlbGVjb21tdW5pY2F0aW9uc1wtc2VydmljZTsKK+WFrOmWi+mRsOWMmSA+IHB1YmxpY1wta2V5XC1cKGluXC1lbmNyeXB0aW9uXCk7Civpm7vkv6HntrLot68gPiB0ZWxlY29tbXVuaWNhdGlvbnNcLW5ldHdvcms7CivmhJ/mn5PkurrmlbggPiBudW1iZXJcLW9mXC1pbmZlY3RlZFwtcGVyc29uczsKK+eZvuatpeepv+aliiA+IHNob290XC13aXRoXC1ncmVhdFwtcHJlY2lzaW9uOwor5Ye654++5oSP5aSWID4gXCh0b1wtYXBwZWFyXClcLXVuZXhwZWN0ZWRcKGx5XCk7CivkuIDop7jljbPnmbwgPiBjb3VsZFwtaGFwcGVuXC1hdFwtYW55XC1tb21lbnQ7Civnupboiq/nm7TlvpEgPiBjb3JlXC1kaWFtZXRlclwtXChvZlwtYVwtZmliZXJcKTsKK+mAsuihjOS6pOaYkyA+IHRvXC1jYXJyeVwtb3V0XC1hXC10cmFuc2FjdGlvbjsKK+WIpeWHuuW/g+ijgSA+IGFkb3B0XC1hblwtb3JpZ2luYWxcLWFwcHJvYWNoOwor55m+55m855m+5LitID4gZXZlcnlcLXNob3RcLWhpdHNcLXRoZVwtdGFyZ2V0Owor5LiN5Lqi5LiN5Y2RID4gbmVpdGhlclwtaGF1Z2h0eVwtbm9yXC1odW1ibGU7Civnmb3lo4HnhKHnkZUgPiBpbXBlY2NhYmxlXC1tb3JhbFwtaW50ZWdyaXR5Owor5pWX5a2Q5Zue6aCtID4gcmV0dXJuXC1vZlwtdGhlXC1wcm9kaWdhbFwtc29uOwor6Kiq5ZWP576O5ZyLID4gdG9cLXZpc2l0XC10aGVcLXVuaXRlZFwtc3RhdGVzOwor5LiN5aSx5pmC5qmfID4gc2VpemVcLXRoZVwtb3Bwb3J0dW5lXC1tb21lbnQ7CivlsI7lvYjmvZvoiYcgPiBcKGd1aWRlZFwpXC1taXNzaWxlXC1zdWJtYXJpbmU7CivlronlpoLms7DlsbEgPiBhc1wtc2VjdXJlXC1hc1wtbW91bnRcLXRhaXNoYW47CivkuI3nvqnkuYvosqEgPiBpbGxcLWdvdHRlblwtd2VhbHRoXC1vclwtZ2FpbnM7Civph43opoHnmoTmmK8gPiBpdFwtaXNcLWltcG9ydGFudFwtXCh0aGF0XClcLVwuXC5cLjsKK+mAmuS/oeaKgOihkyA+IGNvbW11bmljYXRpb25zXC10ZWNobm9sb2d5Owor5aSW5Yyv5YSy5YKZID4gZm9yZWlnblwtZXhjaGFuZ2VcLXJlc2VydmVzOwor5Yue5YuV5pWZ6aSKID4gcmVlZHVjYXRpb25cLXRocm91Z2hcLWxhYm9yOwor5LiN6L6t6L6b6IumID4gbWFrZVwtbm90aGluZ1wtb2ZcLWhhcmRzaGlwczsKK+eoi+W8j+eQhuWToSA+IHByb2dyYW1cLW1hbmFnZXJcLVwod2luZG93c1wpOwor5rCR5Li76buo5Lq6ID4gYVwtZGVtb2NyYXRpY1wtcGFydHlcLW1lbWJlcjsKK+S4ieWNgeW5tOS+hiA+IGZvclwtdGhlXC1wYXN0XC10aGlydHlcLXllYXJzOwor5oqA6KGT55m85bGVID4gdGVjaG5vbG9naWNhbFwtZGV2ZWxvcG1lbnQ7Civpq5jnrYnlrbjmoKEgPiBjb2xsZWdlc1wtYW5kXC11bml2ZXJzaXRpZXM7CivlurfmtoXni4TmoLwgPiBjb25uZWN0aWN1dFwtXChzdGF0ZVwtaW5cLXVzXCk7Civllq7pgKPmjqXnq5kgPiBzaW5nbGVcLWF0dGFjaG1lbnRcLXN0YXRpb247CivnrKblkIjmqJnmupYgPiB0b1wtY29tcGx5XC13aXRoXC1hXC1zdGFuZGFyZDsKK+ekuuWogemBiuihjCA+IGFcLVwocHJvdGVzdFwpXC1kZW1vbnN0cmF0aW9uOwor5aSn5pW155W25YmNID4gY29uZnJvbnRcLWFcLXBvd2VyZnVsXC1lbmVteTsKK+eglOijvemBjueoiyA+IG1hbnVmYWN0dXJpbmdcLWVudmlyb25tZW50Owor5Y+N5ZSH55u46K2PID4gYW5zd2VyXC1iYWNrXC1zYXJjYXN0aWNhbGx5Owor5qC46L2f54K45qmfID4gbnVjbGVhclwtYm9tYmVyXC1cKGFpcmNyYWZ0XCk7CivkuI3lvpfkurrlv4MgPiBub3RcLWVuam95XC1wb3B1bGFyXC1zdXBwb3J0Owor55u06KiA5LiN6KuxID4gc3BlYWtcLWZyYW5rbHlcLWFuZFwtYmx1bnRseTsKK+aZr+WxseWFrOWckiA+IG5hbWVcLW9mXC1hXC1wYXJrXC1pblwtYmVpamluZzsKK+mdouiHqOWbsOmboyA+IHRvXC1iZVwtZmFjZWRcLXdpdGhcLXByb2JsZW1zOwor5LiN5YuZ5q2j5qWtID4gbm90XC1lbmdhZ2VcLWluXC1ob25lc3RcLXdvcms7CivmhJvnkIbkuI3nkIYgPiBsb29rXC1jb2xkXC1hbmRcLWluZGlmZmVyZW50Owor5pS55ZaE6YCa6KiKID4gdG9cLWltcHJvdmVcLWNvbW11bmljYXRpb25zOwor57i95Y+D6KyA6ZW3ID4gXChtaWxpdGFyeVwpXC1jaGllZlwtb2ZcLXN0YWZmOwor6IOM5L+h5qOE576pID4gYnJlYWtcLWZhaXRoXC13aXRoXC1zb21lYm9keTsKK+i3qOWci+WFrOWPuCA+IHRyYW5zbmF0aW9uYWxcLWNvcnBvcmF0aW9uOwor5YWx5ZKM6buo5Lq6ID4gYVwtcmVwdWJsaWNhblwtcGFydHlcLW1lbWJlcjsKK+mmrOWPr+emj+mfsyA+IGdvc3BlbFwtYWNjb3JkaW5nXC10b1wtbWFyazsKK+avj+W5tOS4gOW6piA+IG9uY2VcLWFcLXllYXJcLVwoZXZlcnlcLXllYXJcKTsKK+Wfn+WQjeiou+WGiiA+IGRvbWFpblwtbmFtZVwtcmVnaXN0cmF0aW9uOwor5YW16LK056We6YCfID4gc3BlZWRcLWlzXC1wcmVjaW91c1wtaW5cLXdhcjsKK+WkmumCiuWQiOS9nCA+IG11bHRpbGF0ZXJhbFwtY29vcGVyYXRpb247CivmipXmlL7luILloLQgPiB0b1wtcHV0XC1zdGhcLW9uXC10aGVcLW1hcmtldDsKK+iNkueEoeS6uueFmSA+IGRlc29sYXRlXC1hbmRcLXVuaW5oYWJpdGVkOwor57SE57+w56aP6Z+zID4gZ29zcGVsXC1hY2NvcmRpbmdcLXRvXC1qb2huOwor5Y2w5q2Q6Kqe6KiAID4gaW5kb1wtZXVyb3BlYW5cLVwobGFuZ3VhZ2VcKTsKK+e/kuS7peeCuuW4uCA+IGJlXC1hY2N1c3RvbWVkXC1vclwtdXNlZFwtdG87CivlhbXojZLppqzkuoIgPiB0dXJtb2lsXC1hbmRcLWNoYW9zXC1vZlwtd2FyOwor5LiN5YuV6IGy6ImyID4gbWFpbnRhaW5cLW9uZScnc1wtY29tcG9zdXJlOwor5rWu6bue6YGL566XID4gZmxvYXRpbmdcLXBvaW50XC1vcGVyYXRpb247CivlhafmlL/pg6jplbcgPiBtaW5pc3Rlclwtb2ZcLXRoZVwtaW50ZXJpb3I7CivpvLvph53nmYLms5UgPiBub3NlXC1hY3VwdW5jdHVyZVwtdGhlcmFweTsKK+iZm+aTrOeSsOWigyA+IHRoZW9yaGV0aWNhbFwtZW52aXJvbm1lbnQ7Civlr4bliIfms6jmhI8gPiBjbG9zZVwtYXR0ZW50aW9uXC1cKHRvXC1zdGhcKTsKK+S4jeaLmOS4gOagvCA+IG5vdFwtc3RpY2tcLXRvXC1vbmVcLXBhdHRlcm47Civlrozlhajmh4LlvpcgPiB0b1wtdW5kZXJzdGFuZFwtY29tcGxldGVseTsKK+S4jeW5s+WJh+mztCA+IHdoZXJlXC10aGVyZVwtaXNcLWluanVzdGljZTsKK+aguOS4jeaTtOaVoyA+IG51Y2xlYXJcLW5vbnByb2xpZmVyYXRpb247Civmk7rohKvljbHmqZ8gPiB0b1wtYnJlYWtcLW91dFwtb2ZcLWFcLWNyaXNpczsKK+WvjOW4g+iztOeJuSA+IGZ1bGxicmlnaHRcLVwoc2Nob2xhcnNoaXBcKTsKK+aSpeS6guWPjeatoyA+IGJyaW5nXC1vcmRlclwtb3V0XC1vZlwtY2hhb3M7CivlronnrKzmlq/lsbEgPiB0aGVcLWFuZGVzXC1tb3VudGFpblwtcmFuZ2U7Civnmb7nhYnmiJDpi7wgPiBiZVwtdGVtcGVyZWRcLWludG9cLWFcLXN0ZWVsOwor5ZyL5YuZ5qyh5Y2/ID4gdW5kZXJcLXNlY3JldGFyeVwtb2ZcLXN0YXRlOwor5Y2K5L+h5Y2K55aRID4gaGFsZlwtYmVsaWV2ZVwsXC1oYWxmXC1kb3VidDsKK+aLlOeBq+e9kOWFkiA+IGRldGFjaGFibGVcLXN0b3ZlXC1jaGltbmV5Owor5Y+k5biM6IeY6KqeID4gYW5jaWVudFwtZ3JlZWtcLVwobGFuZ3VhZ2VcKTsKK+WNg+e1suiQrOe4tyA+IGxpbmtlZFwtaW5cLWNvdW50bGVzc1wtd2F5czsKK+egtOWcn+WFuOemriA+IGdyb3VuZFwtYnJlYWtpbmdcLWNlcmVtb255Owor5pWZ5a245qmf5qeLID4gZWR1Y2F0aW9uYWxcLW9yZ2FuaXphdGlvbjsKK+S4jemBuuS9meWKmyA+IHNwYXJlXC1ub1wtcGFpbnNcLW9yXC1lZmZvcnQ7CivooajnpLrmlazmhI8gPiByZXNwZWN0ZnVsXCxcLXNob3dcLXJlc3BlY3Q7Civot6/liqDnpo/pn7MgPiBnb3NwZWxcLWFjY29yZGluZ1wtdG9cLWx1a2U7CivpgJroqIrooYzmpa0gPiBjb21tdW5pY2F0aW9uc1wtaW5kdXN0cnk7CivmnKzkvY3kuLvnvqkgPiBzZWxmaXNoXC1kZXBhcnRtZW50YWxpc207CivngrrmiYDmrLLngrogPiBkb1wtd2hhdGV2ZXJcLW9uZVwtcGxlYXNlczsKK+S6uuawkeazlemZoiA+IHBlb3BsZScnc1wtY291cnRcLVwob2ZcLWxhd1wpOwor5ZWG5qWt5qmf5qeLID4gY29tbWVyY2lhbFwtb3JnYW5pemF0aW9uOwor5LiN57+86ICM6aObID4gZGlzYXBwZWFyXC13aXRob3V0XC10cmFjZTsKK+eVouaBreeVouaVrCA+IHJldmVyZW50XC1hbmRcLXJlc3BlY3RmdWw7Civnp5HnoJTkurrlk6EgPiBcKHNjaWVudGlmaWNcKVwtcmVzZWFyY2hlcjsKK+mAj+mcsua2iOaBryA+IHRvXC1kaXNjbG9zZVwtaW5mb3JtYXRpb247CivkuK3lnIvmmYLloLEgPiBjaGluYVwtdGltZXNcLVwobmV3c3BhcGVyXCk7CivlqIHlu4nmlq/loKEgPiB3aWxsaWFtc2J1cmdcLVwodmlyZ2luaWFcKTsKK+S+v+WunOihjOS6iyA+IGFjdFwtYXRcLW9uZScnc1wtZGlzY3JldGlvbjsKK+WVhualreeuoeeQhiA+IGJ1c2luZXNzXC1hZG1pbmlzdHJhdGlvbjsKK+WfuuekjumAn+eOhyA+IGJhc2ljXC1yYXRlXC1cKGFzXC1pblwtaXNkblwpOwor5omL5a+r6K2Y5YilID4gaGFuZHdyaXRpbmdcLXJlY29nbml0aW9uOwor5omL5a+r6L6v6K2YID4gaGFuZHdyaXRpbmdcLXJlY29nbml0aW9uOwor5q+U5q+U55qG5pivID4gY2FuXC1iZVwtZm91bmRcLWV2ZXJ5d2hlcmU7Civmo4ToiIrmj5vmlrAgPiB0b1wtdHVyblwtb3ZlclwtYVwtbmV3XC1sZWFmOwor5LiN5oOF5LmL6KuLID4gbXlcLXByZXN1bXB0dW91c1wtcmVxdWVzdDsKK+mbmemAo+aOpeermSA+IGR1YWxcLWF0dGFjaG1lbnRcLXN0YXRpb247Civoo5zliqnntYTnuZQgPiBhdXhpbGlhcnlcLW9yZ2FuaXphdGlvbnM7Civlm57poafmrbflj7IgPiB0b1wtbG9va1wtYmFja1wtYXRcLWhpc3Rvcnk7CivpgJroqIrljZTlrpogPiBjb21tdW5pY2F0aW9uc1wtcHJvdG9jb2w7CivmraXlsaXntq3oibEgPiBoYXZlXC1kaWZmaWN1bHR5XC13YWxraW5nOwor5YWx5ZCM56+p6YG4ID4gY29sbGFib3JhdGl2ZVwtZmlsdGVyaW5nOwor5aSn6ama5bCP5oCqID4gbXVjaFwtZnVzc1wtYWJvdXRcLW5vdGhpbmc7CivpgJrkv6HljZTlrpogPiBjb21tdW5pY2F0aW9uc1wtcHJvdG9jb2w7Civlhazlronlrpjlk6EgPiBwdWJsaWNcLXNhZmV0eVwtb2ZmaWNpYWxzOwor5YKz6Ly45oqA6KGTID4gdHJhbnNtaXNzaW9uXC10ZWNobm9sb2d5Owor5Yaw5aSp6Zuq5ZywID4gYVwtd29ybGRcLW9mXC1pY2VcLWFuZFwtc25vdzsKK+aUv+W6nOapn+aniyA+IGdvdmVybm1lbnRcLW9yZ2FuaXphdGlvbjsKK+S4jeWPr+eQhuWWuyA+IGJlXC1pbXBlcnZpb3VzXC10b1wtcmVhc29uOwor6IG35qWt5Lit5a24ID4gdm9jYXRpb25hbFwtaGlnaFwtc2Nob29sOwor6Ieq6aOf5YW25p6cID4gcmVhcFwtd2hhdFwtb25lXC1oYXNcLXNvd247CivkuI3pnLLogbLoibIgPiBub3RcLXNob3dcLW9uZScnc1wtZmVlbGluZzsKK+Wkp+eFnumiqOaZryA+IGRhbXBlbmluZ1wtb25lJydzXC1zcGlyaXQ7CivnvoXmm7zoqp7ml48gPiByb21hbmNlXC1sYW5ndWFnZVwtZ3JvdXA7CivlrbDog73nlJ/lt6cgPiBwcmFjdGljZVwtbWFrZXNcLXBlcmZlY3Q7Civll7fll7flvoXlk7ogPiBjcnlcLXBpdGVvdXNseVwtZm9yXC1mb29kOwor5LiN55eb5LiN55eSID4gc2NyYXRjaGluZ1wtdGhlXC1zdXJmYWNlOwor6IGv57ay55Kw5aKDID4gbmV0d29ya2luZ1wtZW52aXJvbm1lbnQ7Civop6Pph4vln7fooYwgPiBpbnRlcnByZXRlZFwtXChjb21wdXRlclwpOwor5LiN6L+R5Lq65oOFID4gbm90XC1hbWVuYWJsZVwtdG9cLXJlYXNvbjsKK+aUv+ayu+apn+aniyA+IHBvbGl0aWNhbFwtb3JnYW5pemF0aW9uOwor5Y+m55y855u455yLID4gdG9cLXZpZXdcLWluXC1hXC1uZXdcLWxpZ2h0Owor5L+h5oGv5oqA6KGTID4gaW5mb3JtYXRpb25cLXRlY2hub2xvZ3k7CivlronlhajogIPmha4gPiBzZWN1cml0eVwtY29uc2lkZXJhdGlvbjsKK+S/oeaBr+euoeeQhiA+IGluZm9ybWF0aW9uXC1tYW5hZ2VtZW50Owor6Lmm6Lmm6Lez6LezID4gYm91bmNpbmdcLWFuZFwtdml2YWNpb3VzOwor6YCa5L+h5a+G5bqmID4gY29tbXVuaWNhdGlvbnNcLWRlbnNpdHk7CivmspLmnInlt67liKUgPiB0aGVyZVwtaXNcLW5vXC1kaWZmZXJlbmNlOwor5LiN6KiA6ICM5Za7ID4gaXRcLWdvZXNcLXdpdGhvdXRcLXNheWluZzsKK+atpeiqv+S4gOiHtCA+IHRvXC1iZVwtdW5pdGVkXC1pblwtYWN0aW9uOwor6YCa6KiK6YCa6YGTID4gY29tbXVuaWNhdGlvbnNcLWNoYW5uZWw7CivmjqHoqKroqJjogIUgPiBpbnZlc3RpZ2F0aXZlXC1yZXBvcnRlcjsKK+avlOi8g+iAjOiogCA+IGNvbXBhcmF0aXZlbHlcLXNwZWFraW5nOwor6Zui6ZaL5pWF6YSJID4gdG9cLWxlYXZlXC1vbmUnJ1wtaG9tZWxhbmQ7CivpgJrkv6HntrLntaEgPiBjb21tdW5pY2F0aW9uc1wtbmV0d29yazsKK+aVuOWtl+mAmuS/oSA+IGRpZ2l0YWxcLWNvbW11bmljYXRpb25zOwor5YWx55Si6buo5ZOhID4gY29tbXVuaXN0XC1wYXJ0eVwtbWVtYmVyOwor57ay6Lev5p625qeLID4gbmV0d29ya1wtaW5mcmFzdHJ1Y3R1cmU7CivmioDooZPmg4XloLEgPiBpbmZvcm1hdGlvblwtdGVjaG5vbG9neTsKK+e+juWci+S5i+mfsyA+IHZvaWNlXC1vZlwtYW1lcmljYVwtcmFkaW87CivmqJnmupbntYTnuZQgPiBzdGFuZGFyZHNcLW9yZ2FuaXphdGlvbjsKK+eNqOaUrOW4guWgtCA+IHRvXC1tb25vcG9saXplXC1hXC1tYXJrZXQ7CivlvazlvazmnInnpq4gPiByZWZpbmVkXC1hbmRcLWNvdXJ0ZW91czsKK+WujOWFqOWFvOWuuSA+IGNvbXBsZXRlbHlcLWNvbXBhdGlibGU7Civop4DmuKzooZvmmJ8gPiBvYnNlcnZhdGlvblwtc2F0ZWxsaXRlOwor5LiJ6JCs5LiD5Y2DID4gdGhpcnR5XC1zZXZlblwtdGhvdXNhbmQ7CivlpKfotablnIvpmpsgPiBhbW5lc3R5XC1pbnRlcm5hdGlvbmFsOwor5oOF5aCx5a6Y5ZOhID4gaW50ZWxsaWdlbmNlXC1vZmZpY2lhbDsKK+mbu+ejgeWZquiBsiA+IGVsZWN0cm9tYWduZXRpY1wtbm9pc2U7CivplbfpgJTntrLot68gPiBsb25nXC1kaXN0YW5jZVwtbmV0d29yazsKK+avlOiJsuWIhuaekCA+IGNvbG9yaW1ldHJpY1wtYW5hbHlzaXM7CivluqvniL7lvrfkurogPiBrdXJkaXNoXC1wZXJzb25cfHBlb3BsZTsKK+W+rui7n+WFrOWPuCA+IG1pY3Jvc29mdFwtY29ycG9yYXRpb247CivkuI3orZjmiqzoiIkgPiBmYWlsXC10b1wtYXBwcmVjaWF0ZVwtc2I7CivluK3ljbfkup7mtLIgPiB0b1wtc3dlZXBcLXRocm91Z2hcLWFzaWE7CivkvZzmpa3nkrDlooMgPiBvcGVyYXRpbmdcLWVudmlyb25tZW50Owor5pm65oWn55Si5qyKID4gaW50ZWxsZWN0dWFsXC1wcm9wZXJ0eTsKK+mrmOe0muWumOWToSA+IGhpZ2hcLXJhbmtpbmdcLW9mZmljaWFsOwor5Y2K5aSc5LiJ5pu0ID4gaW5cLXRoZVwtZGVwdGhcLW9mXC1uaWdodDsKK+WPlua2iOemgeS7pCA+IHRvXC1saWZlXC1hXC1wcm9oaWJpdGlvbjsKK+Wvpumam+aHieeUqCA+IHByYWN0aWNhbFwtYXBwbGljYXRpb247CivnlJ/nlKLog73lipsgPiBtYW51ZmFjdHVyaW5nXC1hYmlsaXR5Owor57i957Wx6YG46IiJID4gcHJlc2lkZW50aWFsXC1lbGVjdGlvbjsKK+S4jeaTh+aJi+autSA+IGJ5XC1mYWlyXC1tZWFuc1wtb3JcLWZvdWw7CivlnIvpmpvmqJnmupYgPiBpbnRlcm50aW9uYWxcLXN0YW5kYXJkOwor6YeR6Zm15aSn5a24ID4gdW5pdmVyc2l0eVwtb2ZcLW5hbmtpbmc7CivnlbDos6rntrLot68gPiBoZXRlcm9nZW5lb3VzXC1uZXR3b3JrOwor55m95omL6LW35a62ID4gYnVpbGRcLXVwXC1mcm9tXC1ub3RoaW5nOwor6JGh6JCE54mZ6KqeID4gcG9ydHVndWVzZVwtXChsYW5ndWFnZVwpOwor5LiA6IeC5LmL5YqbID4gXChsZW5kXClcLWFcLWhlbHBpbmdcLWhhbmQ7CivkuI3lgKvkuI3poZ4gPiBuZWl0aGVyXC1maXNoXC1ub3JcLWZvd2w7Civln7rmnKzljp/nkIYgPiBmdW5kYW1lbnRhbFwtcHJpbmNpcGxlOwor5pKr6aSK5oiQ5Lq6ID4gdG9cLWJyaW5nXC11cFwtXChhXC1jaGlsZFwpOwor6YCa5L+h5pyN5YuZID4gY29tbXVuaWNhdGlvblwtc2VydmljZTsKK+Wci+eHn+S8gealrSA+IG5hdGlvbmFsaXplZFwtaW5kdXN0cnk7CivkuozljYHlhavomZ8gPiAyOHRoXC1kYXlcLW9mXC10aGVcLW1vbnRoOwor5pys5Zu65p6d5qauID4gd2hlblwtdGhlXC1yb290XC1pc1wtZmlybTsKK+WCs+i8uOioreWCmSA+IHRyYW5zbWlzc2lvblwtZmFjaWxpdHk7CivkuI3mmK/lkbPlhZIgPiBub3RcLXRoZVwtcmlnaHRcLWZsYXZvdXI7Civmk43kvZznkrDlooMgPiBvcGVyYXRpbmdcLWVudmlyb25tZW50Owor6Zqo5qmf5pmC6ZaTID4gcmFuZG9tXC1wZXJpb2RcLW9mXC10aW1lOwor5YKz6Ly46Led6ZuiID4gdHJhbnNtaXNzaW9uXC1kaXN0YW5jZTsKK+WPpui1t+eIkOeBtiA+IHRvXC1zdGFydFwtZnJvbVwtc2NyYXRjaDsKK+mmluiFpuacg+itsCA+IGxlYWRlcnNoaXBcLWNvbmZlcmVuY2U7CivlpoLlh7rkuIDovY0gPiBiZVwtcHJlY2lzZWx5XC10aGVcLXNhbWU7Civnn67mnYblk4HnqK4gPiBzaG9ydFwtc3RhbGtlZFwtdmFyaWV0eTsKK+mBi+eul+eSsOWigyA+IG9wZXJhdGluZ1wtZW52aXJvbm1lbnQ7CivntZ7nm6HohabmsYEgPiB0b1wtd3JhY2tcLW9uZScnc1wtYnJhaW5zOwor5YWJ56OB56Kf5qmfID4gbWFnbmV0b1wtb3B0aWNhbFwtZHJpdmU7CivlnIvmnInkvIHmpa0gPiBuYXRpb25hbGl6ZWRcLWJ1c2luZXNzOwor57at5ZC+54i+5Lq6ID4gdWlnaHVyXC1wZXJzb25cfHBlb3BsZTsKK+mWi+mZpOWtuOexjSA+IHRvXC1leHBlbFwtZnJvbVwtc2Nob29sOwor6aaW5bit5Luj6KGoID4gY2hpZWZcLXJlcHJlc2VudGF0aXZlOwor54mp55CG57WQ5qeLID4gcGh5c2ljYWxcLWNvbXBvc2l0aW9uOwor5ZyL5pyD6K2w6ZW3ID4gc3BlYWtlclwtb2ZcLXRoZVwtaG91c2U7Civmh4nnlKjlubPlj7AgPiBhcHBsaWNhdGlvblwtcGxhdGZvcm07CivljIjniZnliKnoqp4gPiBodW5nYXJpYW5cLVwobGFuZ3VhZ2VcKTsKK+S4jeS/oeS7u+ahiCA+IG5vXC1jb25maWRlbmNlXC1tb3Rpb247CivmlLnlloTpl5zkv4IgPiB0b1wtaW1wcm92ZVwtcmVsYXRpb25zOwor5YGc54Gr5Y2U6K2wID4gY2Vhc2VcLWZpcmVcLWFncmVlbWVudDsKK+S6jOWNgeS6jOiZnyA+IDIyXC1uZFwtZGF5XC1vZlwtYVwtbW9udGg7CivnorrmnInlhbbkuosgPiBcKGNvbmZpcm1cLXRvXC1iZVwpXC10cnVlOwor5aSn5Z6L5LyB5qWtID4gbGFyZ2VcLXNjYWxlXC1pbmR1c3RyeTsKK+S9v+W+kuihjOWCsyA+IGFjdHNcLW9mXC10aGVcLWFwb3N0bGVzOwor5b+F5LiN5Y+v5bCRID4gYWJzb2x1dGVseVwtbmVjZXNzYXJ5Owor5LiN5Zyo6Kmx5LiLID4gYmVcLW5vdGhpbmdcLWRpZmZpY3VsdDsKK+aHieeUqOi7n+S7tiA+IGFwcGxpY2F0aW9uXC1zb2Z0d2FyZTsKK+S6pOaPm+aKgOihkyA+IHN3aXRjaGluZ1wtdGVjaG5vbG9neTsKK+eoi+W8j+iqnuiogCA+IHByb2dyYW1taW5nXC1sYW5ndWFnZTsKK+eZvOihqOiBsuaYjiA+IHRvXC1pc3N1ZVwtYVwtc3RhdGVtZW50Owor6Zu76IWm6Kqe6KiAID4gcHJvZ3JhbW1pbmdcLWxhbmd1YWdlOwor6Zu75a2Q5bel5qWtID4gZWxlY3Ryb25pY3NcLWluZHVzdHJ5Owor5Y+s6ZaL5pyD6K2wID4gdG9cLWNhbGxcLWFcLWNvbmZlcmVuY2U7CivllYbmpa3mh4nnlKggPiBidXNpbmVzc1wtYXBwbGljYXRpb247Civmr4/ms4HmhIjkuIsgPiBzdGVhZGlseVwtZGV0ZXJpb3JhdGU7Civou43kuovmqZ/mp4sgPiBtaWxpdGFyeVwtaW5zdGl0dXRpb247CivliKTomZXmrbvliJEgPiB0b1wtc2VudGFuY2VcLXRvXC1kZWF0aDsKK+iyqOW5o+iytuWAvCA+IGN1cnJlbmN5XC1kZXZhbHVhdGlvbjsKK+aMieeFp+azleW+iyA+IGFjY29yZGluZ1wtdG9cLXRoZVwtbGF3Owor5YyX5Zue5q2457eaID4gdGhlXC10cm9waWNcLW9mXC1jYW5jZXI7Civpm7vlrZDlhYPku7YgPiBlbGVjdHJvbmljXC1jb21wb25lbnQ7CivntpPmv5/oobDpgIAgPiBcKGVjb25vbWljXClcLXJlY2Vzc2lvbjsKK+WFieS6jOalteeuoSA+IGxpZ2h0XC1lbWl0dGluZ1wtZGlvZGU7CivkuI3nqanlubPooaEgPiB1bnN0YWJsZVwtZXF1aWxpYnJpdW07Civkv6Hmga/os4fmupAgPiBpbmZvcm1hdGlvblwtcmVzb3VyY2U7Civlha3ljYHkupTmrbIgPiBzaXh0eVwtZml2ZVwteWVhcnNcLW9sZDsKK+aZuuiDveWkp+aokyA+IGludGVsbGlnZW50XC1idWlsZGluZzsKK+WwkeaVuOawkeaXjyA+IG1pbm9yaXR5XC1uYXRpb25hbGl0eTsKK+WFqOmdouemgeatoiA+IGNvbXBsZXRlXC1wcm9oaWJpdGlvbjsKK+movummrOWkp+i7iiA+IG11bGVcLWFuZFwtaG9yc2VcLWNhcnRzOwor57aT5r+f55m85bGVID4gZWNvbm9taWNcLWRldmVsb3BtZW50Owor6YCa6KiK57O757WxID4gY29tbXVuaWNhdGlvblwtc3lzdGVtOwor5LiN5LqM5rOV6ZaAID4gdGhlXC1vbmVcLWFuZFwtb25seVwtd2F5Owor54Sh5YO554+N54+gID4gcGVhcmxcLW9mXC1ncmVhdFwtcHJpY2U7CivmnKrmiJDlubTogIUgPiBtaW5vclwtXChub3RcLWFuXC1hZHVsdFwpOwor5LyK5pav6Jit5aChID4gaXNsYW1hYmFkXC1cKHBha2lzdGFuXCk7CivkuozljYHlm5vomZ8gPiAyNFwtdGhcLWRheVwtb2ZcLWFcLW1vbnRoOwor5aSn5aSx5omA5pybID4gZ3JlYXRseVwtZGlzc2Fwb2ludGVkOwor5LyB5qWt6ZuG5ZyYID4gaW5kdXN0cnlcLWFzc29jaWF0aW9uOwor566h55CG5o6l5Y+jID4gbWFuYWdlbWVudFwtaW50ZXJmYWNlOwor5oeJ55So6Luf6auUID4gYXBwbGljYXRpb25cLXNvZnR3YXJlOwor55Sf55Si6Kit5YKZID4gcHJvZHVjdGlvblwtZXF1aXBtZW50Owor576p5YuZ5pWZ6IKyID4gY3VtcHVsc29yeVwtZWR1Y2F0aW9uOwor5YKz6Ly45o6n5Yi2ID4gdHJhbnNtaXNzaW9uXC1jb250cm9sOwor5LiN5oe35aW95oSPID4gaGFyYm91clwtZXZpbFwtZGVzaWduczsKK+iouuaWt+WKn+iDvSA+IGRpYWdub3N0aWNcLWZ1bmN0aW9uOwor5YKz6Ly45aqS6auUID4gdHJhbnNtaXNzaW9uXC1tZWRpdW07Civotbfmrbvlm57nlJ8gPiBhcmlzZVwtZnJvbVwtdGhlXC1kZWFkOwor6auY6ZqO6Kqe6KiAID4gaGlnaFwtbGV2ZWxcLWxhbmd1YWdlOwor576O5ZyL5Lq65rCRID4gdGhlXC1hbWVyaWNhblwtcGVvcGxlOwor6Z2i5Zqu6YCj5o6lID4gY29ubmVjdGlvblwtb3JpZW50ZWQ7CivlsIjmpa3kurrmiY0gPiBleHBlcnRcLVwoaW5cLWFcLWZpZWxkXCk7CivnhKHnuKvpgKPmjqUgPiBzZWFtbGVzc1wtY29ubmVjdGlvbjsKK+WCs+i8uOWqkuizqiA+IHRyYW5zbWlzc2lvblwtbWVkaXVtOwor5bGk6KaL6L+t5Ye6ID4gdG9cLW9jY3VyXC1mcmVxdWVudGx5Owor576O5ZyL5Lul5aSWID4gb3V0c2lkZVwtb2ZcLXRoZVwtdVwuc1wuOwor5q2k5pmC5q2k5Yi7ID4gYXRcLXRoaXNcLXZlcnlcLW1vbWVudDsKK+Wkmum7qOmBuOiIiSA+IG11bHRpcGFydHlcLWVsZWN0aW9uOwor5YWJ57qW6KGw5ribID4gb3B0aWNhbFwtYXR0ZW51YXRpb247CivkuI3li57ogIznjbIgPiByZWFwXC13aXRob3V0XC1zb3dpbmc7CivmioDooZPmqJnmupYgPiB0ZWNobm9sb2d5XC1zdGFuZGFyZDsKK+mWi+eZvOmBjueoiyA+IGRldmVsb3BtZW50XC1wcm9jZXNzOwor6YCa5L+h6LKg6LyJID4gY29tbXVuaWNhdGlvbnNcLWxvYWQ7CivluLjopo/mrablmaggPiBjb252ZW50aW9uYWxcLXdlYXBvbjsKK+e1seioiOe1kOaenCA+IHN0YXRpc3RpY2FsXC1yZXN1bHRzOwor5Y+456m66KaL5oWjID4gYVwtY29tbW9uXC1vY2N1cnJlbmNlOwor5LqM5Y2B5LiD6JmfID4gMjd0aFwtZGF5XC1vZlwtYVwtbW9udGg7CivoppbogIzkuI3oposgPiB0dXJuXC1hXC1ibGluZFwtZXllXC10bzsKK+mbu+WtkOaWh+S7tiA+IGVsZWN0cm9uaWNcLWRvY3VtZW50Owor57WQ5qeL5Yqp6KmeID4gc3RydWN0dXJhbFwtcGFydGljbGU7CivlrZfmlp/lj6XphYwgPiB3ZWlnaGluZ1wtZXZlcnlcLXdvcmQ7CivmlL/msrvpl5zkv4IgPiBwb2xpdGljYWxcLXJlbGF0aW9uczsKK+ebuOS6kuWFvOWuuSA+IG11dHVhbGx5XC1jb21wYXRpYmxlOwor5bCL5LqL55Sf6Z2eID4gdG9cLWxvb2tcLWZvclwtdHJvdWJsZTsKK+Wwj+Wvq+Wtl+avjSA+IGxvd2VyY2FzZVwtXChsZXR0ZXJzXCk7CivnrqHnkIblip/og70gPiBtYW5hZ2VtZW50XC1mdW5jdGlvbjsKK+mrmOe0muiqnuiogCA+IGhpZ2hcLWxldmVsXC1sYW5ndWFnZTsKK+WIhuS9iOaOp+WItiA+IGRpc3RyaWJ1dGVkXC1jb250cm9sOwor57ay57Wh5oeJ55SoID4gbmV0d29ya1wtYXBwbGljYXRpb247CivmqZ/morDnv7vora8gPiBtYWNoaW5lXC10cmFuc2xhdGlvbjsKK+i7n+S7tuaKgOihkyA+IHNvZnR3YXJlXC10ZWNobm9sb2d5Owor5aW25rK56I+c6IqxID4gY3JlYW1lZFwtY2F1bGlmbG93ZXI7CivlhYnnmbzpgIHlmaggPiBvcHRpY2FsXC10cmFuc21pdHRlcjsKK+e2sue1oeeSsOWigyA+IG5ldHdvcmtcLWVudmlyb25tZW50Owor5oSb5Lq65aaC5bexID4gbG92ZVwtb3RoZXJzXC1hc1wtc2VsZjsKK+mYv+aLieW3tOmmrCA+IGFsYWJhbWFcLVwodVwuc1wuc3RhdGVcKTsKK+e1gum7nuWcsOWdgCA+IGRlc3RpbmF0aW9uXC1hZGRyZXNzOwor57ay6Lev5oeJ55SoID4gbmV0d29ya1wtYXBwbGljYXRpb247Civnm67mqJnlnLDlnYAgPiBkZXN0aW5hdGlvblwtYWRkcmVzczsKK+S6jOWNgeWFreiZnyA+IDI2dGhcLWRheVwtb2ZcLWFcLW1vbnRoOwor5Lit5ZyL55W25bGAID4gY2hpbmVzZVwtYXV0aG9yaXRpZXM7CivlkIjmg4XlkIjnkIYgPiByZWFzb25hYmxlXC1hbmRcLWZhaXI7Civnmb7kvp3nmb7poIYgPiBkb2NpbGVcLWFuZFwtb2JlZGllbnQ7CivljYroh6rogJXovrIgPiBzZW1pXC10ZW5hbnRcLXBlYXNhbnQ7CivntrLot6/nkrDlooMgPiBuZXR3b3JrXC1lbnZpcm9ubWVudDsKK+WPjeW9iOWwjuW9iCA+IGFudGltaXNzaWxlXC1taXNzaWxlOwor55Sf55Si6Kit5pa9ID4gcHJvZHVjdGlvblwtZmFjaWxpdHk7CivokaHokITniZnkurogPiBwb3J0dWd1ZXNlXC1cKHBlcnNvblwpOwor5LiN57WV5aaC57i3ID4gaGFuZ2luZ1wtYnlcLWFcLXRocmVhZDsKK+aKgOihk+efpeitmCA+IHRlY2huaWNhbFwta25vd2xlZGdlOwor576O5ZyL6LuN5Lq6ID4gYW1lcmljYW5cLXNlcnZpY2VtYW47CivlnIvpmpvosr/mmJMgPiBpbnRlcm5hdGlvbmFsXC10cmFkZTsKK+S6uumAoOiqnuiogCA+IGFydGlmaWNpYWxcLWxhbmd1YWdlOwor5LiN5pWX5LmL5ZywID4gaW52aW5jaWJsZVwtcG9zaXRpb247Civoh6rouqvliKnnm4ogPiBvbmUnJ3NcLW93blwtaW50ZXJlc3RzOwor56u254it55Si5ZOBID4gY29tcGV0aXRpdmVcLXByb2R1Y3Q7CivpnZ7moLjlnIvlrrYgPiBub25cLW51Y2xlYXJcLWNvdW50cnk7CivmsKPlgJnni4Dms4EgPiBjbGltYXRpY1wtY29uZGl0aW9uczsKK+eSsOW9oue1kOaniyA+IHJpbmdcLWNvbmZpZ3VyYXRpb247Civopb/nj63niZnoqp4gPiBzcGFuaXNoXC1cKGxhbmd1YWdlXCk7CivkuIDoiKzkvoboqqogPiBnZW5lcmFsbHlcLXNwZWFraW5nOwor6aaW6IWm5pyD5pmkID4gbGVhZGVyc2hpcFwtbWVldGluZzsKK+mHjeimgeWVj+mhjCA+IGFuXC1pbXBvcnRhbnRcLWlzc3VlOwor6aCY5YWI5Zyw5L2NID4gbGVhZFwoaW5nXClcLXBvc2l0aW9uOwor5L+h5oGv57O757WxID4gaW5mb3JtYXRpb25cLXN5c3RlbTsKK+eoruaXj+a4hea0lyA+IFwiZXRobmljXC1jbGVhbnNpbmdcIjsKK+S5kuS5k+eQg+aqryA+IHRhYmxlXC10ZW5uaXNcLXRhYmxlOwor6Z2e5bi45Zq05Y6yID4gdG9cLXB1bmlzaFwtc2V2ZXJlbHk7Civlhafpg6jntZDmp4sgPiBpbnRlcm5hbFwtc3RydWN1dHJlOwor5pW45pOa6YCa5L+hID4gZGF0YVwtY29tbXVuaWNhdGlvbjsKK+mdnuW4uOaEn+isnSA+IGV4dHJlbWVseVwtZ3JhdGVmdWw7CivlhYvpmobmioDooZMgPiBjbG9uaW5nXC10ZWNobm9sb2d5Owor6Zu75a2Q57ay57WhID4gZWxlY3Ryb25pY1wtbmV0d29yazsKK+eZvem6teabuOeUnyA+IHBhbGVcLWZhY2VkXC1zY2hvbGFyOwor6LKh5YuZ6Luf5Lu2ID4gZmluYW5jaWFsXC1zb2Z0d2FyZTsKK+ilv+ePreeJmeaWhyA+IHNwYW5pc2hcLVwobGFuZ3VhZ2VcKTsKK+WPpOWFuOiqnuiogCA+IGNsYXNzaWNhbFwtbGFuZ3VhZ2U7CivlhanlgIvkuK3lnIsgPiB0d29cLWNoaW5hXC1cKHBvbGljeVwpOwor5aSW5L6G5oqV6LOHID4gZm9yZWlnblwtaW52ZXN0bWVudDsKK+Wcn+iAs+WFtuiqniA+IHR1cmtpc2hcLVwobGFuZ3VhZ2VcKTsKK+S4jeato+S5i+miqCA+IHVuaGVhbHRoeVwtdGVuZGVuY3k7Civpm4bmiJDpm7vot68gPiBpbnRlZ3JhdGVkXC1jaXJjdWl0Owor6ZaJ6Zec5pS/562WID4gY2xvc2VkXC1kb29yXC1wb2xpY3k7CivntrLntaHmioDooZMgPiBuZXR3b3JrXC10ZWNobm9sb2d5Owor5Lit5ZyL5pS/5bqcID4gY2hpbmVzZVwtZ292ZXJubWVudDsKK+S7pOeJjOeSsOe2siA+IHRva2VuXC1yaW5nXC1uZXR3b3JrOwor5aSn5piO6byO6byOID4gYVwtZ3JhbmRcLXJlcHV0YXRpb247Civosr/mmJPntYTnuZQgPiB0cmFkZVwtb3JnYW5pemF0aW9uOwor6YGN5Zyw6ZaL6IqxID4gYmxvc3NvbVwtZXZlcnl3aGVyZTsKK+e2sue1oeeuoeeQhiA+IG5ldHdvcmtcLW1hbmFnZW1lbnQ7Civpq5jpgJ/ntrLntaEgPiBoaWdoXC1zcGVlZFwtbmV0d29yazsKK+abuOmdouioseWPryA+IHdyaXR0ZW5cLXBlcm1pc3Npb247Civoga/lkIjlhazloLEgPiBqb2ludFwtYW5ub3VuY2VtZW50Owor56CU56m25qmf5qeLID4gcmVzZWFyY2hcLWluc3RpdHV0ZTsKK+S9m+iYreiKkuiqniA+IGZsZW1pc2hcLVwobGFuZ3VhZ2VcKTsKK+Wci+acg+itsOWToSA+IG1lbWJlclwtb2ZcLWNvbmdyZXNzOwor5pyA6L+R5bm+5bm0ID4gdGhlXC1sYXN0XC1mZXdcLXllYXJzOwor57K+57Ch6ZaL5pSvID4gdG9cLXJlZHVjZVwtc3BlbmRpbmc7CivkuI3nva7lj6/lkKYgPiBkZWNsaW5lXC10b1wtY29tbWVudDsKK+S4ieinkuiFueW4tiA+IGF0aGxldGljXC1zdXBwb3J0ZXI7CivooZvnlJ/oqK3lgpkgPiBzYW5pdGFyeVwtZXF1aXBtZW50Owor6YCg5oiQ5ZWP6aGMID4gdG9cLWNyZWF0ZVwtYW5cLWlzc3VlOwor57i955qE5L6G6KqqID4gZ2VuZXJhbGx5XC1zcGVha2luZzsKK+iJsuaDheWwj+iqqiA+IHBvcm5vZ3JhcGhpY1wtbm92ZWw7CivosrTlpoPphonphZIgPiB0aGVcLWRydW5rZW5cLWJlYXV0eTsKK+mbu+WtkOS/oeeusSA+IGVsZWN0cm9uaWNcLW1haWxib3g7CivmlrDliqDlnaHkurogPiBzaW5nYXBvcmVhblwtcGVyc29uOwor6ama5r+k6aet5rWqID4gcGVyaWxvdXNcLXNpdHVhdGlvbjsKK+Wkp+WKm+eZvOWxlSA+IHZpZ29yb3VzXC1leHBhbnNpb247CivmnI3li5nopo/nq6AgPiBzZXJ2aWNlXC1yZWd1bGF0aW9uOwor56ut55uh5YWo5YqbID4gdG9cLXNwYXJlXC1ub1wtZWZmb3J0Owor5LiN5oqY5LiN5omjID4gYVwtaHVuZHJlZFwtcGVyXC1jZW50Owor56eR56CU5qij5qmfID4gcmVzZWFyY2hcLXByb3RvdHlwZTsKK+WNgOWfn+e2sui3ryA+IGxvY2FsXC1hcmVhXC1uZXR3b3JrOwor55m86YCB5Yqf546HID4gdHJhbnNtaXNzaW9uXC1wb3dlcjsKK+aUv+W6nOitpuWRiiA+IGdvdmVybm1lbnRcLXdhcm5pbmc7CivmoLjog73mioDooZMgPiBudWNsZWFyXC10ZWNobm9sb2d5Owor5oSP5aSn5Yip6KqeID4gaXRhbGlhblwtXChsYW5ndWFnZVwpOwor5YyX5Lqs5aSn5a24ID4gYmVpamluZ1wtdW5pdmVyc2l0eTsKK+WNgOWfn+e2sue1oSA+IGxvY2FsXC1hcmVhXC1uZXR3b3JrOwor57ay57Wh56eR5oqAID4gbmV0d29ya1wtdGVjaG5vbG9neTsKK+iBr+mCpuaUv+W6nCA+IGZlZGVyYWxcLWdvdmVybm1lbnQ7Civpm7vohabmpa3ogIUgPiBzb2Z0d2FyZVwtZGV2ZWxvcGVyOwor6YCy6KGM57eo56iLID4gZXhlY3V0YWJsZVwtcHJvZ3JhbTsKK+iZm+aTrOmAo+aOpSA+IHZpcnR1YWxcLWNvbm5lY3Rpb247CivlrqLmiLbmh4nnlKggPiBjbGllbnRcLWFwcGxpY2F0aW9uOwor5LiN6Zqo5oSP6IKMID4gaW52b2x1bnRhcnlcLW11c2NsZTsKK+aOoeWPluaOquaWvSA+IHRvXC1hZG9wdFwtYVwtbWVhc3VyZTsKK+WTiOS9m+Wkp+WtuCA+IGhhcnZhcmRcLXVuaXZlcnNpdHk7CivntrLnrqHns7vntbEgPiBuZXR3b3JrXC1tYW5hZ2VtZW50Owor5pqX57ea5YWJ6K2cID4gZGFya1wtbGluZVwtc3BlY3RydW07Civpm7voppbnr4Dnm64gPiB0ZWxldmlzaW9uXC1wcm9ncmFtOwor5Lit5ZyL5Lq65rCRID4gdGhlXC1jaGluZXNlXC1wZW9wbGU7CivnsKHnn63ku4vntLkgPiBicmllZlwtaW50cm9kdWN0aW9uOwor5rW354Gj5oiw54itID4gXChwZXJzaWFuXClcLWd1bGZcLXdhcjsKK+WcsOeQg+Wkp+awoyA+IGVhcnRoJydzXC1hdG1vc3BoZXJlOwor57Ch6KaB5LuL57S5ID4gYnJpZWZcLWludHJvZHVjdGlvbjsKK+acjeWLmeizqumHjyA+IHF1YWxpdHlcLW9mXC1zZXJ2aWNlOwor5LiN5pS76Ieq56C0ID4gY29sbGFwc2VcLW9mXC1pdHNlbGY7CivmlofljJblgrPntbEgPiBjdWx0dXJhbFwtdHJhZGl0aW9uOwor57ay57Wh6YG356e7ID4gbmV0d29ya1wtbWlncmF0aW9uOwor6Zu76IWm6Luf5Lu2ID4gY29tcHV0ZXJcLXNvZnR3YXJlOwor6LOH5paZ5YKz6Ly4ID4gZGF0YVwtdHJhbnNtaXNzaW9uOwor5ZyL6Ziy6YOo6ZW3ID4gZGVmZW5jZVwtc2VjcmV0YXJ5Owor5beo5aSn5aOT5YqbID4gZW5vcm1vdXNcLXByZXNzdXJlOwor5pW45pOa5YKz6Ly4ID4gZGF0YVwtdHJhbnNtaXNzaW9uOwor5pS/5rK75rCj5YCZID4gcG9saXRpY2FsXC1jbGltYXRlOwor5buj5Z+f57ay6LevID4gd2lkZVwtYXJlYVwtbmV0d29yazsKK+aVmeWPi+Wkp+acgyA+IGNodXJjaFwtY29uZmVyZW5jZTsKK+i7jeS6i+WKm+mHjyA+IG1pbGl0YXJ5XC1zdHJlbmd0aDsKK+mbu+ipseacjeWLmSA+IHRlbGVwaG9uZVwtc2VydmljZTsKK+mYv+aLieS8r+iqniA+IGFyYWJpY1wtXChsYW5ndWFnZVwpOwor5pSv5p+x55Si5qWtID4gbWFpbnN0YXlcLWluZHVzdHJ5Owor5aSa56uZ5Zyw5Z2AID4gbXVsdGljYXN0XC1hZGRyZXNzOwor57aT5r+f5a6J5YWoID4gZWNvbm9taWNcLXNlY3VyaXR5Owor5aSW5Lqk6aKo5rOiID4gZGlwbG9tYXRpY1wtY3Jpc2lzOwor6Zu76Kmx57ay6LevID4gdGVsZXBob25lXC1uZXR3b3JrOwor5Y+N6YGO5L6G6KqqID4gb25cLXRoZVwtb3RoZXJcLWhhbmQ7CivmrZDmtLLoqp7oqIAgPiBldXJvcGVhblwtbGFuZ3VhZ2U7CivntrLntaHoqK3lgpkgPiBuZXR3b3JrXC1lcXVpcG1lbnQ7Civml6Xnm4rlop7liqAgPiB0b1wtaW5jcmVhc2VcLWRhaWx5Owor57aT5r+f5Yqb6YePID4gZWNvbm9taWNcLXN0cmVuZ3RoOwor6K6K5pys5Yqg5Y6yID4gYmVjb21lXC1hZ2dyYXZhdGVkOwor5YWJ57qW5o6l5Y+jID4gb3B0aWNhbFwtaW50ZXJmYWNlOwor5ZWG5qWt6KGM54K6ID4gYnVzaW5lc3NcLWFjdGl2aXR5Owor6LuN6LK76ZaL5pSvID4gbWlsaXRhcnlcLXNwZW5kaW5nOwor6Luf5Lu25bmz6Ie6ID4gc29mdHdhcmVcLXBsYXRmb3JtOwor5oyJ5ZyW57Si6amlID4gdHJ5XC10b1wtbG9jYXRlXC1zdGg7CivluIzkvK/kvoboqp4gPiBoZWJyZXdcLVwobGFuZ3VhZ2VcKTsKK+mWi+eZvOmAseacnyA+IGRldmVsb3BtZW50XC1jeWNsZTsKK+mYv+aLieS8r+aWhyA+IGFyYWJpY1wtXChsYW5ndWFnZVwpOwor5oiw55Wl5aSl5Ly0ID4gc3RyYXRlZ2ljXC1wYXJ0bmVyOwor6Z2c6ISI5ZC45q+SID4gaW50cmF2ZW5lb3VzXC1kcnVnOwor54Sh5pyf5b6S5YiRID4gbGlmZVwtaW1wcmlzb25tZW50Owor55m+5YiG5LmL55m+ID4gYVwtaHVuZHJlZFwtcGVyY2VudDsKK+iQiua6q+aWr+WfuiA+IFwobW9uaWNhXClcLWxld2luc2t5Owor5YKz6Ly45pyN5YuZID4gdHJhbnNwb3J0XC1zZXJ2aWNlOwor57ac5ZCI5biD57eaID4gaW50ZWdyYXRlZFwtd2lyaW5nOwor5YKz6Ly46YCa6YGTID4gdHJhbnNwb3J0XC1jaGFubmVsOwor5pS/5bqc6YOo6ZaAID4gZ292ZXJubWVudFwtYnJhbmNoOwor5paw6IGe6YCx5YiKID4gbmV3c3dlZWtcLW1hZ2F6aW5lOwor55u05o6l56u254itID4gZGlyZWN0XC1jb21wZXRpdG9yOwor6Yar55mC57aT6amXID4gbWVkaWNhbFwtZXhwZXJ0aXNlOwor5buj5pKt5Zyw5Z2AID4gYnJvYWRjYXN0XC1hZGRyZXNzOwor55Sf54mp5q2m5ZmoID4gYmlvbG9naWNhbFwtd2VhcG9uOwor5pqX54Sh5aSp5pelID4gY29tcGxldGVcLWRhcmtuZXNzOwor6auY57Sa56CU56m2ID4gYWR2YW5jZWRcLXJlc2VhcmNoOwor6Ieq5Li757O757WxID4gYXV0b25vbW91c1wtc3lzdGVtOwor55m96YeR5ryi5a6uID4gYnVja2luZ2hhbVwtcGFsYWNlOwor6YGL6KGM54uA5rOBID4gb3BlcmF0aW9uYWxcLXN0YXRlOwor5Zuw6Zuj5Zyo5pa8ID4gdGhlXC1wcm9ibGVtXC1pc1wuXC5cLjsKK+aXpeiAs+abvOiqniA+IGdlcm1hbmljXC1sYW5ndWFnZTsKK+WCs+i8uOWNlOWumiA+IHRyYW5zZmVyXC1wcm90b2NvbDsKK+Wkp+WIgOmXiuaWpyA+IGJvbGRcLWFuZFwtZGVjaXNpdmU7CivnibnliKXlvoXpgYcgPiBzcGVjaWFsXC10cmVhdG1lbnQ7CivlsIjnlKjntrLot68gPiBkZWRpY2F0ZWRcLW5ldHdvcms7CivmlZjliKnkup7mlocgPiBzeXJpYWNcLVwobGFuZ3VhZ2VcKTsKK+WCs+i8uOmAn+eOhyA+IHRyYW5zbWlzc2lvblwtcmF0ZTsKK+S4jeatoeiAjOaVoyA+IHBhcnRcLW9uXC1iYWRcLXRlcm1zOwor5Lit6I+v5rCR5ZyLID4gcmVwdWJsaWNcLW9mXC1jaGluYTsKK+S4pumnlem9iumphSA+IHJ1blwtbmVja1wtYW5kXC1uZWNrOwor6Zuj5Lul5oeJ5LuYID4gaGFyZFwtdG9cLWRlYWxcLXdpdGg7Civnoazku7blubPoh7ogPiBoYXJkd2FyZVwtcGxhdGZvcm07Civlrpjmlrnoqp7oqIAgPiBvZmZpY2lhbFwtbGFuZ3VhZ2U7CivljJfkuqzov5Hpg4ogPiBzdWJ1cmJcLW9mXC1iZWlqaW5nOwor5LiA6Iis5Y6f5YmHID4gZ2VuZXJhbFwtcHJpbmNpcGxlOwor5bCE6aC75bmy5pO+ID4gcmFkaW9cLWludGVyZmVyZWNlOwor5Zub6Z2i5YWr5pa5ID4gaW5cLWFsbFwtZGlyZWN0aW9uczsKK+Wci+WutuWuieWFqCA+IG5hdGlvbmFsXC1zZWN1cml0eTsKK+a1t+a0i+a6q+W6piA+IG9jZWFuXC10ZW1wZXJhdHVyZTsKK+e2sumam+WNlOWumiA+IGludGVybmV0XC1wcm90b2NvbDsKK+WkluS6pOmXnOS/giA+IGZvcmVpZ25cLXJlbGF0aW9uczsKK+W3tOWFi+Wkj+ixrCA+IGJlcmtzaGlyZVwtXChzd2luZVwpOwor5LiN5rK75LmL55eHID4gaW5jdXJhYmxlXC1kaXNlYXNlOwor5qWt55WM5qiZ5rqWID4gaW5kdXN0cnlcLXN0YW5kYXJkOwor6Zm45Z+65bCO5b2IID4gbGFuZFwtYmFzZWRcLW1pc3NsZTsKK+ilv+eVqumbheabuCA+IGJvb2tcLW9mXC16ZXBoYW5pYWg7CivlsIjlrrboqZXoq5YgPiBleHBlcnRcLWNvbW1lbnRhcnk7CivlmoflvpfnmbzmipYgPiB0cmVtYmxlXC13aXRoXC1mZWFyOwor5Zub6ZaA6L2O6LuKID4gc2VkYW5cLVwobW90b3JcLWNhclwpOwor5oSb5LiN6YeL5omLID4gZm9uZGxlXC1hZG1pcmluZ2x5Owor5b6e6aCt5Yiw6IWzID4gZnJvbVwtaGVhZFwtdG9cLWZvb3Q7Civou43kuovlr6blipsgPiBtaWxpdGFyeVwtc3RyZW5ndGg7Civlu6Pmkq3ntrLot68gPiBicm9hZGNhc3RcLW5ldHdvcms7CivnrKjlj6Pmi5noiIwgPiBhd2t3YXJkXC1pblwtc3BlZWNoOwor5be05pav5YWL6KqeID4gYmFzcXVlXC1cKGxhbmd1YWdlXCk7Civoj6/ljJflubPljp8gPiBub3J0aFwtY2hpbmFcLXBsYWluOwor5pWR5oGp6KiI5YqDID4gcGxhblwtb2ZcLXNhbHZhdGlvbjsKK+iIquepuuavjeiJpiA+IGFpcmNyYWZ0XC1jYXJyaWVyOwor5Lit5ZyL5aSn6Zm4ID4gY2hpbmVzZVwtbWFpbmxhbmQ7CivlvbHlg4/mnIPorbAgPiB2aWRlb1wtY29uZmVyZW5jZTsKK+aCsuatoembouWQiCA+IGpveXNcLWFuZFwtc29ycm93czsKK+eZvumHjOaMkeS4gCA+IG9uZVwtaW5cLWFcLWh1bmRyZWQ7Civoqp7ms5XooZPoqp4gPiBncmFtbWF0aWNhbFwtdGVybTsKK+abtOmrmOaAp+iDvSA+IGhpZ2hcLXBlcmZvcm1hbmNlOwor6LuN5LqL56eR5a24ID4gbWlsaXRhcnlcLXNjaWVuY2U7Civlmajlrpjnp7vmrpYgPiBvcmdhblwtdHJhbnNwbGFudDsKK+W9seWDj+iZleeQhiA+IGltYWdlXC1wcm9jZXNzaW5nOwor5Lq65LqL6YOo6ZaAID4gcGVyc29ubmVsXC1vZmZpY2U7CivmvZvlnKjlqIHohIUgPiBwb3RlbnRpYWxcLXRocmVhdDsKK+e1seioiOaVuOaTmiA+IHN0YXRpc3RpY2FsXC1kYXRhOwor54m55a6a5ZCr576pID4gc3BlY2lmaWNcLW1lYW5pbmc7Civph5Hono3ns7vntbEgPiBmaW5hbmNpYWxcLXN5c3RlbTsKK+WwjuiHtOatu+S6oSA+IHRvXC1sZWFkXC10b1wtZGVhdGg7Civmnb/kuIrph5jph5ggPiB0aGF0XC1jbGluY2hlc1wtaXQ7Civpm7vohabkvIHmpa0gPiBjb21wdXRlclwtY29tcGFueTsKK+WUieiBsuWYhuawoyA+IGhlYXZlXC1kZWVwXC1zaWdoczsKK+S4jeWlveaEj+aAnSA+IGZlZWxcLWVtYmFycmFzc2VkOwor5q2j5bi45bel5L2cID4gbm9ybWFsXC1vcGVyYXRpb247CivlgrPnnJ/nmbzpgIEgPiBmYXhcLXRyYW5zbWlzc2lvbjsKK+aTjeS9nOezu+e1sSA+IG9wZXJhdGluZ1wtc3lzdGVtOwor5YKz6Ly45aqS55WMID4gdHJhbnNwb3J0XC1tZXRob2Q7Civnp7vli5Xpm7voqbEgPiBtb2JpbGVcLXRlbGVwaG9uZTsKK+e2sue1oeebtOW+kSA+IG5ldHdvcmtcLWRpYW1ldGVyOwor5oiQ576k57WQ6ZqKID4gaW5cLWxhcmdlXC1udW1iZXJzOwor54Sh5omA5LiN6LOjID4gdG9cLXNlbGxcLWFueXRoaW5nOwor6YCa55So6Zu75ZmoID4gZ2VuZXJhbFwtZWxlY3RyaWM7CivmnJ3prq7ljYrls7YgPiBrb3JlYW5cLXBlbmluc3VsYTsKK+aciemXnOS6uuWjqyA+IHBlcnNvbnNcLWludm9sdmVkOwor6IC25Yip57Gz5pu4ID4gYm9va1wtb2ZcLWplcmVtaWFoOwor6YeR6J6N5biC5aC0ID4gZmluYW5jaWFsXC1tYXJrZXQ7CivlhanlsrjlsI3oqbEgPiBiaWxhdGVyaWFsXC10YWxrczsKK+S4jee2k+S5i+irhyA+IGFic3VyZFwtc3RhdGVtZW50Owor6Lev55Sx5Y2U5a6aID4gcm91dGluZ1wtcHJvdG9jb2w7CivntrLot6/lubPlj7AgPiBuZXR3b3JrXC1wbGF0Zm9ybTsKK+WFieaqoua4rOWZqCA+IG9wdGljYWxcLWRldGVjdG9yOwor6Zu76IWm57ay6LevID4gY29tcHV0ZXJcLW5ldHdvcms7Civms6LniL7lpJrmtrIgPiBib3JkZWF1eFwtbWl4dHVyZTsKK+eZvOmBlOWci+WutiA+IGRldmVsb3BlZFwtbmF0aW9uOwor5bey57aT6YCy6KGMID4gYWxyZWFkeVwtdW5kZXJ3YXk7CivlgrPpgIHmnI3li5kgPiBkZWxpdmVyeVwtc2VydmljZTsKK+iugOiAheS+huS/oSA+IHJlYWRlcicnc1wtbGV0dGVyczsKK+WTiOW3tOiwt+abuCA+IGJvb2tcLW9mXC1oYWJha2t1azsKK+eZveWjgeW+rueRlSA+IGFcLXNsaWdodFwtYmxlbWlzaDsKK+WNgeW5vuWAi+aciCA+IHRlblwtbW9udGhzXC1vclwtc287CivkuI3liqDmgJ3ntKIgPiB3aXRob3V0XC10aGlua2luZzsKK+WWruaooeWFiee6liA+IHNpbmdsZW1vZGVcLWZpYmVyOwor5pyA5aSn6IO95YqbID4gbWF4aW11bVwtY2FwYWNpdHk7CivmnInnt5rpm7voppYgPiBjYWJsZVwtdGVsZXZpc2lvbjsKK+S4jeiuiuizh+acrCA+IGNvbnN0YW50XC1jYXBpdGFsOwor6Zu76Kmx5L+h6JmfID4gdGVsZXBob25lXC1zaWduYWw7CivlqIHniL7lo6voqp4gPiB3ZWxzaFwtXChsYW5ndWFnZVwpOwor55S35a2Q57GD55CDID4gbWVuJydzXC1iYXNrZXRiYWxsOwor6IGv6YKm5aSn5qiTID4gZmVkZXJhbFwtYnVpbGRpbmc7Civmma7pgJrllY/poYwgPiBjb21tb25cLXF1ZXN0aW9uczsKK+i8uOmAgeWqkuS7iyA+IHRyYW5zcG9ydFwtbWVkaXVtOwor6Ziy6KGb5q2m5ZmoID4gZGVmZW5zaXZlXC13ZWFwb247CivkvZzmpa3ns7vntbEgPiBvcGVyYXRpbmdcLXN5c3RlbTsKK+mrlOiCsuS5i+eqlyA+IHdpbmRvd1wtb25cLXNwb3J0czsKK+abuOWvq+iqnuiogCA+IHdyaXR0ZW5cLWxhbmd1YWdlOwor5YWx5Lqr5bi25a+sID4gc2hhcmVkXC1iYW5kd2lkdGg7CivmlofljJbpmpznpJkgPiBjdWx0dXJhbFwtYmFycmllcjsKK+ebtOaOpeW9semfvyA+IGRpcmVjdFwtaW5mbHVlbmNlOwor6IiH5q2k5ZCM5pmCID4gYXRcLXRoZVwtc2FtZVwtdGltZTsKK+S4u+imgeS+hua6kCA+IHByaW5jaXBsZVwtc291cmNlOwor5Lq65rCR5YWs56S+ID4gcGVvcGxlJydzXC1jb21tdW5lOwor5LiL6Z2i6KuL55yLID4gcGxlYXNlXC1zZWVcLWJlbG93Owor6YeR6J6N6aKo5rOiID4gZmluYW5jaWFsXC1jcmlzaXM7CivntrLntaHljZTorbAgPiBuZXR3b3JrXC1wcm90b2NvbDsKK+eZveiho+aIsOWjqyA+IHdhcnJpb3JcLWluXC13aGl0ZTsKK+WuieWmguejkOefsyA+IGFzXC1zb2xpZFwtYXNcLXJvY2s7CivmlYXpmpzmjpLpmaQgPiBmYXVsdFwtcmVzb2x1dGlvbjsKK+mHkeiejeaUuemdqSA+IGZpbmFuY2lhbFwtcmVmb3JtOwor6KGM5YuV6Zu76KmxID4gbW9iaWxlXC10ZWxlcGhvbmU7Civpm4zmgKfmjqXlj6MgPiBmZW1hbGVcLWNvbm5lY3RvcjsKK+W/g+iHn+enu+auliA+IGhlYXJ0XC10cmFuc3BsYW50Owor6YGZ5o6n5pON5L2cID4gcmVtb3RlXC1vcGVyYXRpb247CivnsKHllq7nmoToqqogPiB0b1wtcHV0XC1pdFwtc2ltcGx5Owor5YWJ5o6l5pS25ZmoID4gb3B0aWNhbFwtcmVjZWl2ZXI7CivmqZ/morDoqp7oqIAgPiBtYWNoaW5lXC1sYW5ndWFnZTsKK+iDoeW/l+aYjuW4giA+IGhvXC1jaGlcLW1pbmhcLWNpdHk7CivkuI3nn6XmiYDkupEgPiBub3RcLWtub3dcLXdoYXRcLXNiOwor6Zu76IWm5YWs5Y+4ID4gY29tcHV0ZXJcLWNvbXBhbnk7Civoga/luK3mnIPorbAgPiBqb2ludFwtY29uZmVyZW5jZTsKK+S6pOaPm+e2sui3ryA+IHN3aXRjaGVkXC1uZXR3b3JrOwor6aqo5bm557ay6LevID4gYmFja2JvbmVcLW5ldHdvcms7Civou5/ku7bkvIHmpa0gPiBzb2Z0d2FyZVwtY29tcGFueTsKK+WKm+mHj+Wdh+ihoSA+IGJhbGFuY2VcLW9mXC1wb3dlcjsKK+aWvea0l+e0hOe/sCA+IGpvaG5cLXRoZVwtYmFwdGlzdDsKK+WwvOW4jOexs+iomCA+IGJvb2tcLW9mXC1uZWhlbWlhaDsKK+Wgsee0meWgseWwjiA+IG5ld3NwYXBlclwtcmVwb3J0Owor6YeR6J6N5Y2x5qmfID4gZmluYW5jaWFsXC1jcmlzaXM7Civpm6LplovljJfkuqwgPiB0b1wtbGVhdmVcLWJlaWppbmc7Civlub7kuY7lrozlhaggPiBhbG1vc3RcLWVudGlyZWx5Owor5L+h5oGv5pmC5LujID4gaW5mb3JtYXRpb25cLWFnZTsKK+eUouWTgee2k+eQhiA+IHByb2R1Y3RcLW1hbmFnZXI7Civou43kuovlqIHohIUgPiBtaWxpdGFyeVwtdGhyZWF0Owor57ay6Lev5pyN5YuZID4gbmV0d29ya1wtc2VydmljZTsKK+eglOeptuS4reW/gyA+IHJlc2VhcmNoXC1jZW50ZXI7CivltIfmi5zlhIDlvI8gPiB3b3JzaGlwXC1zZXJ2aWNlOwor5pa56IiI5pyq6Im+ID4gdG9cLWJlXC11bmZvbGRpbmc7Civpm5npgorosr/mmJMgPiBiaWxhdGVyYWxcLXRyYWRlOwor6LuN5LqL6YOo6ZaAID4gbWlsaXRhcnlcLWJyYW5jaDsKK+mZpOatpOS5i+WkliA+IGFwYXJ0XC1mcm9tXC10aGlzOwor5aSq6Zm95YWs5Y+4ID4gc3VuXC1jb3Jwb3JhdGlvbjsKK+WkluWci+izh+acrCA+IGZvcmVpZ25cLWNhcGl0YWw7CivosZDlr4zlpJrlvakgPiByaWNobHlcLWNvbG9yZnVsOwor5LiN55m95LmL5YakID4gdW5yaWdodGVkXC13cm9uZzsKK+aIkuWCmeajruWatCA+IGhlYXZpbHlcLWd1YXJkZWQ7CivljYrpgJTogIzlu6IgPiBnaXZlXC11cFwtaGFsZndheTsKK+aJuemHj+eUn+eUoiA+IHRvXC1tYXNzXC1wcm9kdWNlOwor5pON5L2c6YCf546HID4gb3BlcmF0aW5nXC1zcGVlZDsKK+iBr+WQiOeZvOihqCA+IGpvaW50XC1zdGF0ZW1lbnQ7CivkuI3lrozlhajokYkgPiBpbmNvbXBsZXRlXC1sZWFmOwor5qC45Y+N5oeJ5aCGID4gbnVjbGVhclwtcmVhY3RvcjsKK+e2k+a/n+aUuemdqSA+IGVjb25vbWljXC1yZWZvcm07CivljYrlo4HmsZ/lsbEgPiBoYWxmXC1vZlwtY291bnRyeTsKK+WPpOWFuOmfs+aogiA+IGNsYXNzaWNhbFwtbXVzaWM7CivkuI3lj6/lpJrlvpcgPiBoYXJkXC10b1wtY29tZVwtYnk7Civph43mlrDplovlp4sgPiByZXN1bWVcLFwtcmVzdGFydDsKK+mbu+WtkOmDteS7tiA+IGVsZWN0cm9uaWNcLW1haWw7CivntpPmv5/liY3pgJQgPiBlY29ub21pY1wtZnV0dXJlOwor5bel6K6A5a245qChID4gdGhlXC1yZWZvcm1hdG9yeTsKK+WatOmHjemXnOWIhyA+IHNlcmlvdXNcLWNvbmNlcm47CivntpPmv5/ljbHmqZ8gPiBlY29ub21pY1wtY3Jpc2lzOwor5YuV5oWL5Yqp6KmeID4gYXNwZWN0XC1wYXJ0aWNsZTsKK+aatOi3s+WmgumbtyA+IHN0YW1wXC13aXRoXC1mdXJ5Owor5Lul6KW/57WQ5pu4ID4gYm9va1wtb2ZcLWV6ZWtpZWw7CivljJblrbjmrablmaggPiBjaGVtaWNhbFwtd2VhcG9uOwor55m76KiY55So5oi2ID4gcmVnaXN0ZXJlZFwtdXNlcjsKK+WatOmHjeWVj+mhjCA+IHNlcmlvdXNcLXByb2JsZW07Civnlbbli5nkuYvmgKUgPiB1cmdlbnRcLXByaW9yaXR5Owor6Luf5Lu257O757WxID4gc29mdHdhcmVcLXN5c3RlbTsKK+izvOeJqeS4reW/gyA+IHNob3BwaW5nXC1jZW50ZXI7Civlo4Hlo5jmo67lmrQgPiBjbG9zZWx5XC1ndWFyZGVkOwor55Gq5ouJ5Z+65pu4ID4gYm9va1wtb2ZcLW1hbGFjaGk7Civosr/mmJPlpKXkvLQgPiB0cmFkaW5nXC1wYXJ0bmVyOwor5pyI5Lu95pyD6K2wID4gbW9udGhseVwtbWVldGluZzsKK+eglOeptuWgseWRiiA+IHJlc2VhcmNoXC1yZXBvcnQ7CivlhYjpgLLmrablmaggPiBhZHZhbmNlZFwtd2VhcG9uOwor5aSn55m86Zu36ZyGID4gZXh0cmVtZWx5XC1hbmdyeTsKK+e+juWci+aUv+W6nCA+IHVcLnNcLlwtZ292ZXJubWVudDsKK+WhnueIvueJueiqniA+IGNlbHRpY1wtbGFuZ3VhZ2U7Civmjqrovq3lvLfnoawgPiBzdHJvbmdseVwtd29yZGVkOwor5YWs5Y+45pyD6K2wID4gY29tcGFueVwtbWVldGluZzsKK+aUueiuiuW9ouWDjyA+IHRyYW5zZmlndXJhdGlvbjsKK+eZvuWFkuWFq+WNgSA+IGFib3V0XC1hXC1odW5kcmVkOwor5aSa5qih5YWJ57qWID4gbXVsdGltb2RlXC1maWJlcjsKK+i7n+S7tuW4guWgtCA+IHNvZnR3YXJlXC1tYXJrZXQ7CivmoKHlnJLpqqjlubkgPiBjYW1wdXNcLWJhY2tib25lOwor5rKS5pyJ6IGv57mrID4gdG9cLWJlXC11bnJlbGF0ZWQ7CivkuJbnlYzmnIDlpKcgPiB3b3JsZCcnc1wtbGFyZ2VzdDsKK+WwlumKs+aJueiplSA+IHNoYXJwXC1jcml0aWNpc207Civpm7vohabns7vntbEgPiBjb21wdXRlclwtc3lzdGVtOwor6LKo5bmj5Y2x5qmfID4gbW9uZXRhcnlcLWNyaXNpczsKK+aal+mAgeeni+azoiA+IG1ha2VcLWV5ZXNcLWF0XC1zYjsKK+aVuOS9jee2sui3ryA+IGRpZ2l0YWxcLW5ldHdvcms7Civlhajlipvku6XotbQgPiBkb1wtYXRcLWFsbFwtY29zdHM7CivomZvmk6zntrLntaEgPiB2aXJ0dWFsXC1uZXR3b3JrOwor5YWJ5piO5pel5aCxID4gZ3VhbmdtaW5nXC1kYWlseTsKK+att+WPsuS5hemBoCA+IGFuY2llbnRcLWhpc3Rvcnk7Civmlq/mi4nlpKvoqp4gPiBzbGF2aWNcLWxhbmd1YWdlOwor5aSW5ZyL5YWs5Y+4ID4gZm9yZWlnblwtY29tcGFueTsKK+WVhualreS4reW/gyA+IGJ1c2luZXNzXC1jZW50ZXI7CivkuI3nm7jkuIrkuIsgPiBlcXVhbGx5XC1tYXRjaGVkOwor5qmf5a+G5paH5Lu2ID4gc2VjcmV0XC1kb2N1bWVudDsKK+WFt+mrlOioiOWKgyA+IGFcLWNvbmNyZXRlXC1wbGFuOwor5paH5pu46JmV55CGID4gd29yZFwtcHJvY2Vzc2luZzsKK+mgkOmYsuaOquaWvSA+IHByb3RlY3RpdmVcLXN0ZXA7CivlhaznhLbooajnpLogPiB0b1wtc3RhdGVcLW9wZW5seTsKK+iyoOWCtee6jee6jSA+IGhlYXZpbHlcLWluXC1kZWJ0Owor57aT5r+f6auU5Yi2ID4gZWNvbm9taWNcLXN5c3RlbTsKK+S4jemBjueIvueIviA+IG1lcmVseVwtbWVkaW9jcmU7CivmtYHmhJ/nl4Xmr5IgPiBpbmZsdWVuemFcLXZpcnVzOwor6KGb55Sf5a6Y5ZOhID4gaGVhbHRoXC1vZmZpY2lhbDsKK+WFt+mrlOWVj+mhjCA+IGNvbmNyZXRlXC1pc3N1ZTsKK+Wci+mYsumgkOeulyA+IGRlZmVuY2VcLWJ1ZGdldDsKK+ijgea4m+i7jeWCmSA+IGFybXNcLXJlZHVjdGlvbjsKK+WHuuWPo+WVhuWTgSA+IGV4cG9ydFwtcHJvZHVjdDsKK+aUuemdqemAsueoiyA+IHJlZm9ybVwtcHJvY2VzczsKK+iWhOiDjueTt+WZqCA+IGVnZ3NoZWxsXC1jaGluYTsKK+aTuuiVqeWQiueSsCA+IHN3aW5naW5nXC1yaW5nczsKK+WFqOeQg+awo+WAmSA+IGdsb2JhbFwtY2xpbWF0ZTsKK+WwjeWkluaUv+etliA+IGZvcmVpZ25cLXBvbGljeTsKK+mAsuihjOmAmuS/oSA+IHRvXC1jb21tdW5pY2F0ZTsKK+S4jeWSjuaXouW+gCA+IG5vdFwtY2Vuc3VyZVwtc2I7CivmoKHlnJLntrLntaEgPiBjYW1wdXNcLW5ldHdvcms7CivmlbjkvY3kv6HomZ8gPiBkaWdpdGFsXC1zaWduYWw7CivnlJ/plbfmv4DntKAgPiBncm93dGhcLWhvcm1vbmU7CivmjIfmj67kuK3lv4MgPiBjb21tYW5kXC1jZW50ZXI7Civpm7voqbHnt5rot68gPiB0ZWxlcGhvbmVcLWxpbmU7Civoqp7msKPliqnoqZ4gPiBtb2RhbFwtcGFydGljbGU7CivntITmm7jkup7oqJggPiBib29rXC1vZlwtam9zaHVhOwor57aT5r+f5pyJ5pWIID4gY29zdFwtZWZmZWN0aXZlOwor5aCF5rG65ZCm6KqNID4gdG9cLWZpcm1seVwtZGVueTsKK+abuOWvq+espuiZnyA+IHdyaXRpbmdcLXN5bWJvbDsKK+S4jeefpeatu+a0uyA+IGFjdFwtcmVja2xlc3NseTsKK+azoue+heeahOa1tyA+IHRoZVwtYmFsdGljXC1zZWE7CivmoYzpnaLns7vntbEgPiBkZXNrdG9wXC1zeXN0ZW07CivmnbHljZfkup7lnIsgPiBzb3V0aGVhc3RcLWFzaWE7CivlsI/lnovkvIHmpa0gPiBzbWFsbFwtYnVzaW5lc3M7Civos4fmlpnku4vpnaIgPiBkYXRhXC1pbnRlcmZhY2U7CivkuI3mgI7purzmqKMgPiBub3RcLXVwXC10b1wtbXVjaDsKK+mdnuW4uOmHjeimgSA+IHZlcnlcLWltcG9ydGFudDsKK+mGq+WtuOWwiOWutiA+IG1lZGljYWxcLWV4cGVydDsKK+WFiOmAsuawtOW5syA+IGFkdmFuY2VkXC1sZXZlbDsKK+aVuOaTmuaOpeWPoyA+IGRhdGFcLWludGVyZmFjZTsKK+mAo+mOluWPjeaHiSA+IGNoYWluXC1yZWFjdGlvbjsKK+eJueWIpeaEn+isnSA+IHNwZWNpYWxcLXRoYW5rczsKK+S6uuWjveS/nemaqiA+IGxpZmVcLWluc3VyYW5jZTsKK+aVuOaTmuS7i+mdoiA+IGRhdGFcLWludGVyZmFjZTsKK+S9huS7peeQhuabuCA+IGJvb2tcLW9mXC1kYW5pZWw7Civov6vkuI3lvpflt7IgPiBoYXZlXC1ub1wtY2hvaWNlOwor6KmV5YO55YiG6aGeID4gcmFua1wsXC1jbGFzc2lmeTsKK+W+nuS6i+eglOeptiA+IHRvXC1kb1wtcmVzZWFyY2g7Civku6Xos73kup7mm7ggPiBib29rXC1vZlwtaXNhaWFoOwor5Y2K5pW45Lul5LiKID4gbW9yZVwtdGhhblwtaGFsZjsKK+aqlOahiOWxrOaApyA+IGZpbGVcLWF0dHJpYnV0ZTsKK+W+nuS+huaykuaciSA+IGhhdmVcfGhhc1wtbmV2ZXI7Civku6Xmlq/luJboqJggPiBib29rXC1vZlwtZXN0aGVyOwor5pyA5L2z5Yip55uKID4gYmVzdFwtaW50ZXJlc3RzOwor5oOh5oCn5b6q55KwID4gdmljaW91c1wtY2lyY2xlOwor5LiN55yB5Lq65LqLID4gYmVcLXVuY29uc2Npb3VzOwor55m+54Sh6IGK6LO0ID4gYm9yZWRcLXRvXC1kZWF0aDsKK+mGq+WtuOS4reW/gyA+IG1lZGljYWxcLWNlbnRlcjsKK+eZveiJsuS6uueoriA+IHRoZVwtd2hpdGVcLXJhY2U7CivntpzlkIjloLHlsI4gPiBzdW1tYXJ5XC1yZXBvcnQ7CivlpKflkIzlsI/nlbAgPiBhbG1vc3RcLXNpbWlsYXI7CivljZHouqzlsYjnr4AgPiBib3dcLWFuZFwtc2NyYXBlOwor5oGt6LOA5paw56anID4gaGFwcHlcLW5ld1wteWVhcjsKK+WJjeeUn+WPrOWWmiA+IGZvcmVvcmRpbmF0aW9uOwor57ay6Zqb6Zu76KmxID4gaW50ZXJuZXRcLXBob25lOwor6JiL5p6c6Zu76IWmID4gYXBwbGVcLWNvbXB1dGVyOwor5LiN6ISb6ICM6LWwID4gZ2V0XC1yb3VuZFwtZmFzdDsKK+S4iei8qui7iuS8lSA+IHBlZGljYWJcLWRyaXZlcjsKK+mjvee2k+miqOmcnCA+IHdlYXRoZXJcLWJlYXRlbjsKK+WFqOW/g+WFqOaEjyA+IGhlYXJ0XC1hbmRcLXNvdWw7Civms7DnsbPniL7oqp4gPiB0YW1pbFwtbGFuZ3VhZ2U7CivkuI3mnJ/ogIzpgYcgPiBtZWV0XC1ieVwtY2hhbmNlOwor6L+R5LmO5ZCM5q2lID4gcGxlc2lvY2hyb25vdXM7Civlk6XmnKzlk4jmoLkgPiBjb3BlbmhhZ2VuXC1cP1w/XD87Civnmb7nsbPos73ot5EgPiAxMDBcLW1ldHJlXC1kYXNoOwor6Kq/5p+l5aCx5ZGKID4gbWVtb2lyXCxcLXJlcG9ydDsKK+aVuOWtl+S/oeiZnyA+IGRpZ2l0YWxcLXNpZ25hbDsKK+S4lueVjOe2k+a/nyA+IGdsb2JhbFwtZWNvbm9teTsKK+mAmueUqOaxvei7iiA+IGdlbmVyYWxcLW1vdG9yczsKK+WMl+S6rOmAseWgsSA+IGJlaWppbmdcLXJldmlldzsKK+a6kOm7nuWcsOWdgCA+IHNvdXJjZVwtYWRkcmVzczsKK+mAmeasoeWNseapnyA+IHByZXNlbnRcLWNyaXNpczsKK+WHuuWPo+eUouWTgSA+IGV4cG9ydFwtcHJvZHVjdDsKK+WkmuW3pemBi+S9nCA+IG11bHRpdGhyZWFkaW5nOwor5LqM5rCn5YyW56KzID4gY2FyYm9uXC1kaW94aWRlOwor57ay57Wh6Kit6KiIID4gbmV0d29ya1wtZGVzaWduOwor5LqU5bm06KiI5YqDID4gZml2ZVwteWVhclwtcGxhbjsKK+W4guWgtOe2k+a/nyA+IG1hcmtldFwtZWNvbm9teTsKK+aqlOahiOWft+ihjCA+IGZpbGVcLWV4ZWN1dGlvbjsKK+S6kuWLlembu+imliA+IGludGVyYWN0aXZlXC10djsKK+WFrOecvuaEj+imiyA+IHB1YmxpY1wtb3BpbmlvbjsKK+atkOa0suiBr+ebnyA+IGV1cm9wZWFuXC11bmlvbjsKK+aqlOahiOi9iemAgSA+IGZpbGVcLXRyYW5zZmVyOwor5o6S5bGx5YCS5rW3ID4gZWFydGhcLXNoYWtpbmc7CivntpPnh5/osrvnlKggPiBidXNpbmVzc1wtY29zdDsKK+ebtOaIquS6hueVtiA+IHBsYWluXC10YWxraW5nOwor5Ya35oiw5Lul5b6MID4gcG9zdFwtY29sZFwtd2FyOwor5Yui5Zyo5b+F6KGMID4gYmVcLWltcGVyYXRpdmU7CivoiIrntITlhajmm7ggPiBvbGRcLXRlc3RhbWVudDsKK+W5vuWAi+Wwj+aZgiA+IHNldmVyYWxcLWhvdXJzOwor5LiN5Y+v57y65bCRID4gaW5kaXNwZW5zYWJsZTsKK+imlueql+Wfuua6liA+IHdpbmRvd3NcLWJhc2VkOwor6Zu76YO15L2N572uID4gZW1haWxcLWFkZHJlc3M7CivnoJTnqbbpoJjln58gPiByZXNlYXJjaFwtYXJlYTsKK+mAsuaOpeacjeWLmSA+IGFjY2Vzc1wtc2VydmVyOwor5LqM5qyh5aSn5oiwID4gd29ybGRcLXdhclwtdHdvOwor5Z+65pys5qaC5b+1ID4gYmFzaWNcLWNvbmNlcHQ7Civosr/mmJPpoIblt64gPiB0cmFkZVwtc3VycGx1czsKK+atpuWZqOezu+e1sSA+IHdlYXBvblwtc3lzdGVtOwor5a6255So6Zu76IWmID4gaG9tZVwtY29tcHV0ZXI7CivlpKflhaznhKHnp4EgPiBqdXN0XC1hbmRcLWZhaXI7CivmlrDntITlhajmm7ggPiBuZXdcLXRlc3RhbWVudDsKK+S6nua0suWci+WutiA+IGFzaWFuXC1jb3VudHJ5Owor5pq06aKo6amf6ZuoID4gdmlvbGVudFwtc3Rvcm07CivmjYnlj5blnJblg48gPiBjYXB0dXJlXC1pbWFnZTsKK+aLnOmHkeS4u+e+qSA+IG1vbmV5XC13b3JzaGlwOwor5rC45LmF5ZKM5bmzID4gbGFzdGluZ1wtcGVhY2U7Civlk4jolqnlhYvkurogPiBrYXpha2hcLXBlcnNvbjsKK+W3oeiIquWwjuW9iCA+IGNydWlzZVwtbWlzc2xlOwor5pq05Yqb54qv572qID4gdmlvbGVudFwtY3JpbWU7CivkvZXopb/pmL/mm7ggPiBib29rXC1vZlwtaG9zZWE7CivkuI3miJDmlofms5UgPiB1bndyaXR0ZW5cLWxhdzsKK+S6nuWkquWci+WutiA+IGFzaWFuXC1jb3VudHJ5Owor55uu5qiZ5biC5aC0ID4gdGFyZ2V0XC1tYXJrZXQ7CivmnIDpq5jms5XpmaIgPiBzdXByZW1lXC1jb3VydDsKK+acgOW+jOabtOaWsCA+IGxhdGVzdFwtdXBkYXRlOwor5p2P5LuB6LGG6IWQID4gYWxtb25kXC1qdW5rZXQ7CivpgJnnqK7mlrnlvI8gPiBcKGluXClcLXRoaXNcLXdheTsKK+S/neitt+S4u+e+qSA+IHByb3RlY3Rpb25pc207CivmnIjnkIPooajpnaIgPiBsdW5hclwtc3VyZmFjZTsKK+WcsOaWueWBnOi7iiA+IHBhcmtpbmdcLXBsYWNlOwor55+l5ZCN5Lq65aOrID4gcHVibGljXC1maWd1cmU7Civnvo7lnIvlnIvmnIMgPiB1XC5zXC5cLWNvbmdyZXNzOwor5LiN5bm455qE5pivID4gdW5mb3J0dW5hdGVseTsKK+WFiee6lumbu+e6nCA+IG9wdGljYWxcLWZpYmVyOwor56S+5Lqk6Kqe6KiAID4gbGluZ3VhXC1mcmFuY2E7CivotorkvobotorlpJogPiBtb3JlXC1hbmRcLW1vcmU7Civnmb7np5Hlhajmm7ggPiBlbmN5Y2xvcGFlZGlhOwor5Yqf546H5oOh5YyWID4gcG93ZXJcLXBlbmFsdHk7CivkuI3lj6/mipflipsgPiBmb3JjZVwtbWFqZXVyZTsKK+S4reWci+mKgOihjCA+IGJhbmtcLW9mXC1jaGluYTsKK+mfv+aHieaZgumWkyA+IHJlc3BvbnNlXC10aW1lOwor5YKz6Ly45qih5byPID4gdHJhbnNmZXJcLW1vZGU7CivkuI3nn6XkuI3oprogPiB1bmNvbnNjaW91c2x5Owor5YmN5omA5pyq5pyJID4gdW5wcmVjZWRlbnRlZDsKK+ioquWVj+aWueW8jyA+IGFjY2Vzc1wtbWV0aG9kOwor5qqU5qGI5bu656uLID4gZmlsZVwtY3JlYXRpb247Civlh7rnlJ/ml6XmnJ8gPiBkYXRlXC1vZlwtYmlydGg7CivkuI3lj6/mgJ3orbAgPiBpbmNvbmNlaXZhYmxlOwor5qC85a2Q6Iqx5ZGiID4gcGxhaWRcLFwtdGFydGFuOwor6ZuZ55Sf5YWE5byfID4gdHdpblwtYnJvdGhlcnM7CivmnIDlpKfpgJ/njocgPiBtYXhpbXVtXC1zcGVlZDsKK+ePvuWvpuaDheazgSA+IGN1cnJlbnRcLXN0YXRlOwor5YyF576F6JCs6LGhID4gYWxsXC1lbWJyYWNpbmc7CivoppbpoLvnr4Dnm64gPiB2aWRlb1wtcHJvZ3JhbTsKK+e+hemmrOWtl+avjSA+IHJvbWFuXC1sZXR0ZXJzOwor5LiN5Y+v5ZCN54uAID4gaW5kZXNjcmliYWJsZTsKK+WFtuS7lueahOS6uiA+IG90aGVyXC1wZW9wbGU7CivlqpLpq5TloLHlsI4gPiBtZWRpYVwtcmVwb3J0Owor5ZKM5bmz5qKd57SEID4gcGVhY2VcLXRyZWF0eTsKK+iCoeelqOW4guWgtCA+IHN0b2NrXC1tYXJrZXQ7CivlpKfpqZrlpLHoibIgPiBhcHByZWhlbnNpdmU7Civpq5jlsaTml4XppKggPiBsdXh1cnlcLWhvdGVsOwor6Z2I55qE5LiW55WMID4gc3Bpcml0XC13b3JsZDsKK+WHuuS5jumgkOaWmSA+IHVuZXhwZWN0ZWRseTsKK+WcsOaWueS4u+e+qSA+IFwibG9jYWxcLVwtaXNtXCI7Civmv4DlhYnllLHniYcgPiBjb21wYWN0XC1kaXNrOwor5Lit5aSu6YqA6KGMID4gY2VudHJhbFwtYmFuazsKK+aWr+Wvhue0hOeRnyA+IGpvc2VwaFwtc21pdGg7Civnm67liY3kuJbnlYwgPiBtb2Rlcm5cLXdvcmxkOwor5rCR5oSP6Kq/5p+lID4gb3BpbmlvblwtcG9sbDsKK+ePvuS7o+mfs+aogiA+IG1vZGVyblwtbXVzaWM7Civoo73pgKDmpa3ogIUgPiBtYW51ZmFjdHVyZXI7Civlv4PnkIblrbjlrrYgPiBwc3ljaG9sb2dpc3Q7CivkuI3og73mirXmipcgPiBpcnJlc2lzdGlibGU7CivpgY7looPnsL3oqLwgPiB0cmFuc2l0XC12aXNhOwor6IC256mM5Z+6552jID4gamVzdXNcLWNocmlzdDsKK+iomOiAheWgseWwjiA+IHByZXNzXC1yZXBvcnQ7CivlpJrlt6XkvZzmpa0gPiBtdWx0aXRha3Npbmc7CivkuI3lpKfpm6LlhZIgPiBwcmV0dHlcLWNsb3NlOwor5pys5L6G6Z2i55uuID4gdHJ1ZVwtY29sb3VyczsKK+e2sui3r+evgOm7niA+IG5ldHdvcmtcLW5vZGU7CivkuI3lj6/mlLbmi74gPiBpcnJlbWVkaWFibGU7CivlnIvlrrbmqZ/lr4YgPiBzdGF0ZVwtc2VjcmV0Owor6Kq/5p+l5Lq65ZOhID4gaW52ZXN0aWdhdG9yOwor5q2m6KOd6YOo6ZqKID4gYXJtZWRcLWZvcmNlczsKK+eUn+eUouS8gealrSA+IG1hbnVmYWN0dXJlcjsKK+WQjemMhOacjeWLmSA+IG5hbWVcLXNlcnZpY2U7Civoqp7pn7Pkv6HomZ8gPiB2b2ljZVwtc2lnbmFsOwor5Luk5Lq66ama55WwID4gc3VycHJpc2luZ2x5Owor5Z+656SO6Kit5pa9ID4gYmFzZVwtc3RhdGlvbjsKK+eUn+WRvei3oeixoSA+IHNpZ25cLW9mXC1saWZlOwor55+l6K2Y5YiG5a2QID4gaW50ZWxsZWN0dWFsOwor6Zi/5pGp5Y+45pu4ID4gYm9va1wtb2ZcLWFtb3M7CivnlKjmiLblrprnvqkgPiB1c2VyXC1kZWZpbmVkOwor5oiQ5ZCJ5oCd5rGXID4gZ2VuZ2hpc1wta2hhbjsKK+S4u+W5uee2sui3ryA+IGNvcmVcLW5ldHdvcms7CivmsJHmhI/muKzpqZcgPiBvcGluaW9uXC1wb2xsOwor5q235Luj5b+X5LiLID4gMlwtY2hyb25pY2xlczsKK+att+S7o+W/l+S4iiA+IDFcLWNocm9uaWNsZXM7CivmjIfku6TlkI3lrZcgPiBjb21tYW5kXC1uYW1lOwor5LiA5bCP6YOo5YiGID4gYVwtc21hbGxcLXBhcnQ7CivkuLvlubnntrLntaEgPiBjb3JlXC1uZXR3b3JrOwor5o+u6ZyN54Sh5bqmID4gZXh0cmF2YWdhbmNlOwor55m76Zm45pyI55CDID4gbW9vblwtbGFuZGluZzsKK+i7jeS6i+aPtOWKqSA+IG1pbGl0YXJ5XC1haWQ7CivmnKzmnKzkuLvnvqkgPiBib29rXC13b3JzaGlwOwor5LqU6KeS5aSn5qiTID4gdGhlXC1wZW50YWdvbjsKK+aRqeilv+W+i+azlSA+IGxhd1wtb2ZcLW1vc2VzOwor6L+F6YCf6JST5bu2ID4gcmFwaWRcLXNwcmVhZDsKK+S7peaWr+aLieiomCA+IGJvb2tcLW9mXC1lenJhOwor5LiN55+l5omA5o6qID4gYmVcLWF0XC1hXC1sb3NzOwor5b2i5b2i6Imy6ImyID4gYWxsXC1raW5kc1wtb2Y7CivmqpTmoYjmnI3li5kgPiBmaWxlXC1zZXJ2b2NlOwor6ZmN6JC95Zyw6bueID4gbGFuZGluZ1wtc2l0ZTsKK+S4ieWNgeS6lOWEhCA+IDNcLVwuNVwtYmlsbGlvbjsKK+S6jOWNgeWFreatsiA+IDI2XC15ZWFyc1wtb2xkOwor5pW45pOa57ay57WhID4gZGF0YVwtbmV0d29yazsKK+m+kOeEtuWkp+eJqSA+IGh1Z2VcLW1vbnN0ZXI7CivkuJbnlYznn6XlkI0gPiB3b3JsZFwtZmFtb3VzOwor55+l6K2Y5Lu95a2QID4gaW50ZWxsZWN0dWFsOwor5b+r6YCf55m85bGVID4gcmFwaWRcLWdyb3d0aDsKK+WkmueoruiqnuiogCA+IG11bHRpbGluZ3VhbDsKK+WuieWFqOWVj+mhjCA+IHNhZmV0eVwtaXNzdWU7Civmsonph43miZPmk4ogPiB0b1wtaGl0XC1oYXJkOwor6Ieq54S26ICM54S2ID4gaW52b2x1bnRhcnk7CivkuI3otIrkuIDoqZ4gPiBrZWVwXC1zaWxlbnQ7Civkurrpq5TlmajlrpggPiBodW1hblwtb3JnYW47CivmsJHml4/kuLvnvqkgPiBuYXRpb25hbGlzbTsKK+eyvuWtkOWvhuW6piA+IHNwZXJtXC1jb3VudDsKK+mBt+Wxheenu+awkSA+IGltbWlncmF0aW9uOwor6YeO55Sf5YuV54mpID4gd2lsZFwtYW5pbWFsOwor6IGW6KqV6ICB5Lq6ID4gc2FudGFcLWNsYXVzOwor5rWq5ryr5Li7576pID4gcm9tYW50aWNpc207CivkuI3lj6/nn6Xoq5YgPiBhZ25vc3RpY2lzbTsKK+S4jeWIh+WvpumamyA+IHVucmVhbGlzdGljOwor5YW45Z6L55So6YCUID4gdHlwaWNhbFwtdXNlOwor5a+M5pa85oOz5YOPID4gaW1hZ2luYXRpdmU7CivlnIvkuovoqKrllY8gPiBzdGF0ZVwtdmlzaXQ7CivljYrljYrmi4nmi4kgPiBpbmNvbXBsZXRlZDsKK+S4jeWPr+WIhumboiA+IGluc2VwYXJhYmxlOwor54Sh55Si6ZqO57SaID4gcHJvbGV0YXJpYXQ7CivlpLHljrvmhI/orZggPiB1bmNvbnNjaW91czsKK+eZvuiQrOWvjOe/gSA+IG1pbGxpb25haXJlOwor6LK05peP56S+5pyDID4gYXJpc3RvY3JhY3k7Civms6LlpJrpu47lkIQgPiBwdWVydG9cLXJpY287Civnq4vms5XmqZ/pl5wgPiBsZWdpc2xhdHVyZTsKK+S4u+imgeWOn+WboCA+IG1haW5cLXJlYXNvbjsKK+acieeUn+S7peS+hiA+IHNpbmNlXC1iaXJ0aDsKK+iyneWKoOeIvua5liA+IGxha2VcLWJhaWthbDsKK+WSjOW5s+acg+irhyA+IHBlYWNlXC10YWxrczsKK+S4jeiuiuWDueagvCA+IGZpeGVkXC1wcmljZTsKK+Wls+e5vOaJv+S6uiA+IGluaGVyaXRyZXNzOwor5YGH6Kit6Kqe5rCjID4gc3VianVuY3RpdmU7CivlnLDlv4PlkLjlipsgPiBncmF2aXRhdGlvbjsKK+mBi+iyqOmmrOi7iiA+IGNhcmdvXC13YWdvbjsKK+esrOS4ieS4lueVjCA+IHRoaXJkXC13b3JsZDsKK+eEoemXnOe3iuimgSA+IGluZGlmZmVyZW50Owor5aSn5L6/5Lm+54elID4gY29uc3RpcGF0ZWQ7CivkuI3lgY/kuI3lgJogPiBldmVuXC1oYW5kZWQ7CivliIbmlaPms6jmhI8gPiB0b1wtZGlzdHJhY3Q7CivkuI3mr5vkuYvlnLAgPiBiYXJyZW5cLWxhbmQ7CivotoXntJrluILloLQgPiBzdXBlcm1hcmtldDsKK+W/heimgeaineS7tiA+IHJlcXVpcmVtZW50Owor5YiG5pyf5LuY5qy+ID4gaW5zdGFsbG1lbnQ7CivoiInkvovkvoboqqogPiBmb3JcLWV4YW1wbGU7CivkuJbnlYzosr/mmJMgPiB3b3JsZFwtdHJhZGU7Civojo7lo6vmr5Tkup4gPiBzaGFrZXNwZWFyZTsKK+Wbm+WIhuS5i+S4gCA+IG9uZVwtcXVhcnRlcjsKK+ioiuahhuWCs+mAgSA+IGZyYW1lXC1yZWxheTsKK+eVq+aPkuWcluiAhSA+IGlsbHVzdHJhdG9yOwor6LaK5Y2X5oiw54itID4gdmlldG5hbVwtd2FyOwor54Sh5omA5LiN5ZyoID4gb21uaXByZXNlbnQ7CivkuI3lh7rmiYDmlpkgPiBhc1wtZXhwZWN0ZWQ7CivkuJbnlYzlkozlubMgPiB3b3JsZFwtcGllY2U7CivkuI3lkIzlh6Hpn78gPiBvdXRzdGFuZGluZzsKK+aHieeUqOeoi+W8jyA+IGFwcGxpY2F0aW9uOwor6L2J5L6G6L2J5Y67ID4gcm92ZVwtYXJvdW5kOwor6Yed6YuS55u45bCNID4gdGl0XC1mb3JcLXRhdDsKK+mWieacg+eliOemsSA+IGJlbmVkaWN0aW9uOwor5LiN5Y+v5Lyw6YePID4gaW5lc3RpbWFibGU7CivplovmlL7ns7vntbEgPiBvcGVuXC1zeXN0ZW07CivmnInpmZDlhazlj7ggPiBjb3Jwb3JhdGlvbjsKK+epuumWk+aOoua4rCA+IHNwYWNlXC1wcm9iZTsKK+WfuuekjuWVj+mhjCA+IGJhc2ljXC1pc3N1ZTsKK+mCgemYv+WvhueBmCA+IG1pYW1pXC1iZWFjaDsKK+i6q+W/g+eIveW/qyA+IHJlZnJlc2htZW50Owor56Wt5Y+45qyK6KGTID4gcHJpZXN0Y3JhZnQ7CivmgbDlpoLlhbbku70gPiBhcHByb3ByaWF0ZTsKK+WcqOmAmeacn+mWkyA+IGR1cmluZ1wtdGltZTsKK+eEoeazleW/jeWPlyA+IGludG9sZXJhYmxlOwor5Y+N5YuV5YiG5a2QID4gcmVhY3Rpb25hcnk7Civkvb/nlKjmlrnkvr8gPiBlYXN5XC10b1wtdXNlOwor54Sh5rOV5b2i5a65ID4gdW5zcGVha2FibGU7CivmnInlkIzmg4Xlv4MgPiBzeW1wYXRoZXRpYzsKK+mAsuihjOaAp+S6pCA+IHRvXC1oYXZlXC1zZXg7CivllpzmraHlkLXmnrYgPiBxdWFycmVsc29tZTsKK+aooeeziumCj+i8ryA+IGZ1enp5XC1sb2dpYzsKK+Wwse+5jeiAjOiogCA+IGNvbnNpZGVyaW5nOwor5pyJ6YG46IiJ5qyKID4gY29uc3RpdHVlbnQ7CivmuKzpqZfntZDmnpwgPiB0ZXN0XC1yZXN1bHQ7CivnrqHlrrbogbfli5kgPiBzdGV3YXJkc2hpcDsKK+eLl+S6pOWqvuiIrCA+IGRvZ2d5XC1zdHlsZTsKK+WwiOacieWQjeipniA+IHByb3Blclwtbm91bjsKK+aci+avlOeCuuWluCA+IHRvXC1jb25zcGlyZTsKK+aQrOW8hOaYr+mdniA+IHNvd1wtZGlzY29yZDsKK+WGsOafk+afk+aWmSA+IGF6b2ljXC1keWVzOwor5Zub5YCL5bCP5pmCID4gZm91clwtaG91cnM7CivlpKnmloflrbjlrrYgPiBhc3Ryb25vbWVyOwor55y86Iqx57ma5LqCID4gYmVcLWRhenpsZWQ7Civpra/kvZvniL7lrq4gPiB0aGVcLWxvdXZyZTsKK+S4jeWgquW/jeWPlyA+IHVuYmVhcmFibGU7CivlqJvmqILkuK3lv4MgPiByZWNyZWF0aW9uOwor6Ieq55Sx6LK/5piTID4gZnJlZVwtdHJhZGU7CivkuInliIbkuYvkuowgPiB0d29cLXRoaXJkczsKK+e4vee1seS7u+acnyA+IHByZXNpZGVuY3k7CivkuI3lj6/pgL7otoogPiBpbXBhc3NhYmxlOwor5pWZ5aCC5aKT5ZywID4gY2h1cmNoeWFyZDsKK+ihjOaUv+mVt+WumCA+IG1hZ2lzdHJhdGU7CivosrTml4/oq5bogIUgPiBhcmlzdG9jcmF0Owor5paw6IGe6KiY6ICFID4gam91cm5hbGlzdDsKK+meremXouWFpeijoSA+IHBlbmV0cmF0ZWQ7Civku5blgJHoh6rlt7EgPiB0aGVtc2VsdmVzOwor6Zi/5aGe5ouc55aGID4gYXplcmJhaWphbjsKK+mCj+i8r+eCuOW9iCA+IGxvZ2ljXC1ib21iOwor5ZyW6Kej6Kqq5piOID4gaWxsdXN0cmF0ZTsKK+S4jeWxiOS4jeaSkyA+IHVueWllbGRpbmc7CivlpKfohabmrbvkuqEgPiBicmFpblwtZGVhZDsKK+iDoeaAneS6guaDsyA+IGltYWdpbmluZ3M7CivkuIDliIfkuovniakgPiBldmVyeXRoaW5nOwor5q2M576F6KW/5pu4ID4gY29sb3NzaWFuczsKK+S4jeeUseiHquS4uyA+IGNhbicndFwtaGVscDsKK+abvOW+ueaWr+eJuSA+IG1hbmNoZXN0ZXI7CivkvL3ppqzlsITnt5ogPiBnYW1tYVwtcmF5czsKK+alteeCuum+kOWkpyA+IG1vbnVtZW50YWw7CivmnInliKnlj6/lnJYgPiBwcm9maXRhYmxlOwor54Sh5omA5LiN6IO9ID4gb21uaXBvdGVudDsKK+WIhumbouS4u+e+qSA+IHNlcGFyYXRpc207CivkuJbnlYzpioDooYwgPiB3b3JsZFwtYmFuazsKK+eEoeaJgOS4jeefpSA+IG9tbmlzY2llbnQ7CivplovmnIPnpYjnprEgPiBpbnZvY2F0aW9uOwor6aCY5bCO6IO95YqbID4gbGVhZGVyc2hpcDsKK+aEj+imi+S4jeWQiCA+IGRpc3NlbnNpb247CivlrZ/liqDmi4nlnIsgPiBiYW5nbGFkZXNoOwor5byV5Lq65rOo5oSPID4gYXR0cmFjdGl2ZTsKK+W/mOaBqeiyoOe+qSA+IHVuZ3JhdGVmdWw7Civnm7jlkIzlkI3lrZcgPiBsaWtlXC1uYW1lZDsKK+S9v+S6uuS/oeacjSA+IGNvbnZpbmNpbmc7Civlj5bogIzku6PkuYsgPiBzdWJzdGl0dXRlOwor6Zu75a2Q56m66ZaTID4gY3liZXJzcGFjZTsKK+W+ruS4jei2s+mBkyA+IG5lZ2xpZ2libGU7CivpgZTos7TlloflmJsgPiBkYWxhaVwtbGFtYTsKK+S4jeaPo+WGkuaYpyA+IHZlbnR1cmVcLXRvOwor55yB55Wl56ym6JmfID4gYXBvc3Ryb3BoZTsKK+S4jeWwjeeitOWFkiA+IG5vdFwtcHJvcGVyOwor5oSP5oOz5LiN5YiwID4gdW5leHBlY3RlZDsKK+WGsOS4iumBi+WLlSA+IGljZVwtc3BvcnRzOwor576O5LmD5ruL6YasID4gbWF5b25uYWlzZTsKK+mZuOi7jeS4reWwiSA+IGxpZXV0ZW5hbnQ7CivlvarlvaLlpKfmvKIgPiBidXJseVwtY2hhcDsKK+iQrOS6i+mBlOWNoSA+IG1hc3RlcmNhcmQ7CivpgY7muKHmmYLmnJ8gPiB0cmFuc2l0aW9uOwor5paw6IGe5aqS6auUID4gbmV3c1wtbWVkaWE7CivloIXlrprkuI3np7sgPiB1bnN3ZXJ2aW5nOwor5q2k5pmC5Lul5YmNID4gaGVyZXRvZm9yZTsKK+acnemuruaIsOeIrSA+IGtvcmVhblwtd2FyOwor6Zuj5Lul572u5L+hID4gaW5jcmVkaWJsZTsKK+WFseWSjOaUv+mrlCA+IHJlcHVibGljYW47CivlpJbkuqTmiYvohZUgPiBkaXBsb21hdGljOwor55Wi5qWt5YW456auID4gZ3JhZHVhdGlvbjsKK+iFk+eri+avlOabuCA+IHBoaWxpcGlhbnM7CivpqI7lo6vpoqjmoLwgPiBrbmlnaHRob29kOwor5YyW5aad6Iie5pyDID4gbWFzcXVlcmFkZTsKK+Wls+acjeeJqeWToSA+IHN0ZXdhcmRlc3M7CivmspLmnInnn6XoprogPiBpbnNlbnNpYmxlOwor5paR6aeu6Zm46ZuiID4gdmFyaWVnYXRlZDsKK+awo+WLoua0tua0tiA+IGFnZ3Jlc3NpdmU7CivkuIPljYHlubTku6MgPiB0aGVcLTE5NzAnJ3M7Civlvp7ku4rku6XlvowgPiBoZW5jZWZvcnRoOwor6KaW56qX5paw5oqAID4gd2luZG93c1wtbnQ7CivnuK7lsI/mqKHlnosgPiBtaW5pYXR1cmU7Civku6XlvJfmiYDmm7ggPiBlcGhlc2lhbnM7CivmspLmnInlvaLni4AgPiBzaGFwZWxlc3M7CivnlKjmiLbmlbjmk5ogPiB1c2VyXC1kYXRhOwor6ZaL55m85Lq65ZOhID4gZGV2ZWxvcGVyOwor5Zyw6LOq5a245a62ID4gZ2VvbG9naXN0Owor55Sf54mp5a245a62ID4gYmlvbG9naXN0Owor5LiN5Y+v56Oo5ruFID4gaW5kZWxpYmxlOwor5LiN5Lqm5qiC5LmOID4gZXh0cmVtZWx5Owor5oyJ54Wn5a2X6Z2iID4gbGl0ZXJhbGx5Owor5LiJ5YiG5LmL5LiAID4gb25lXC10aGlyZDsKK+S4jeWPr+aVkeiXpSA+IGluY3VyYWJsZTsKK+iAtui3r+aSkuWGtyA+IGplcnVzYWxlbTsKK+iku+eAhueahOipsSA+IGJsYXNwaGVteTsKK+Wci+WFp+aIsOeIrSA+IGNpdmlsXC13YXI7CivljbHlnLDppqzmi4kgPiBndWF0YW1hbGE7CivliqDlr4blvoznmoQgPiBlbmNyeXB0ZWQ7CivmnInmlLvmk4rmgKcgPiBvZmZlbnNpdmU7Civmg6HlkI3mmK3lvbAgPiBub3RvcmlvdXM7CivntpPmv5/lrbjlrrYgPiBlY29ub21pc3Q7CivpmL/nqbrliqDnk5wgPiBhY29uY2FndWE7CivliqDmi4nlpKrmm7ggPiBnYWxhdGlhbnM7CivntrLpmpvoibLmg4UgPiBjeWJlcnBvcm47CivoirHnsonpgY7mlY8gPiBoYXlcLWZldmVyOwor54K65pmC6YGO5pepID4gcHJlbWF0dXJlOwor6IGv5ZCI57WE57mUID4gc3luZGljYXRlOwor5pyJ5Ym16YCg5YqbID4gaW5nZW5pb3VzOwor5Lq654mp5o+P5a+rID4gcG9ydHJheWFsOwor5Luk5Lq65qy95L2pID4gYWRtaXJhYmxlOwor6Zi/5aWH6YeM5pavID4gYWVzY2h5bHVzOwor5a2f5Yqg5ouJ6KqeID4gYmVuZ2FsZXNlOwor5qmf5qKw6KOd572uID4gbWFjaGluZXJ5Owor5paR57+F5bGx6baJID4gcGFydHJpZGdlOwor5LiN5Y+v5Yud5pW4ID4gY291bnRsZXNzOwor57i95pyD5pyD6ZW3ID4gcHJlc2lkZW50Owor5q+r54Sh55aR5ZWPID4gY2VydGFpbnR5Owor5r6z5aSn5Yip5LqeID4gYXVzdHJhbGlhOwor5aSn5a+r6Y6W5a6aID4gY2Fwc1wtbG9jazsKK+WNiuW3peWNiuiugCA+IHBhcnRcLXdvcms7CivmiJHlgJHoh6rlt7EgPiBvdXJzZWx2ZXM7CivnvoXlvrnmlq/nibkgPiByb2NoZXN0ZXI7CivnrqHlvKbmqILlnJggPiBvcmNoZXN0cmE7Civnmb3ml6XlgZrlpKIgPiBkYXlcLWRyZWFtOwor5Lu75L2V5YW25LuWID4gYW55XC1vdGhlcjsKK+W3tOWLkuaWr+WdpiA+IHBhbGVzdGluZTsKK+WcqO+5jeaXgemCiiA+IGFsb25nc2lkZTsKK+WFiOimi+S5i+aYjiA+IGZvcmVzaWdodDsKK+maqOS5i+iAjOW+jCA+IGZyb21cLXRoYXQ7CivkuIrlgIvmmJ/mnJ8gPiBsYXN0XC13ZWVrOwor5rCR5Li75pS/5rK7ID4gZGVtb2NyYWN5Owor5Li7566h5Lq65ZOhID4gZXhlY3V0aXZlOwor6LKh5YuZ56eY5pu4ID4gdHJlYXN1cmVyOwor55Sf6IKy6IO95YqbID4gZmVydGlsaXR5Owor5YWx5Lqr6Luf6auUID4gc2hhcmV3YXJlOwor5LiN5Y+X5q2h6L+OID4gdW53ZWxjb21lOwor5Ye55Ye45Y2w5Yi3ID4gZW1ib3NzaW5nOwor5pKS6YO96Kmy5Lq6ID4gc2FkZHVjZWVzOwor5YWx55Si5Li7576pID4gY29tbXVuaXNtOwor5LiN5Lul54K654S2ID4gb2JqZWN0XC10bzsKK+ekvuacg+S4u+e+qSA+IHNvY2lhbGlzbTsKK+icnOaciOWBh+acnyA+IGhvbmV5bW9vbjsKK+WQjOePreWQjOWtuCA+IGNsYXNzbWF0ZTsKK+WFt+acieS4u+asiiA+IHNvdmVyZWlnbjsKK+iHquWLleaok+airyA+IGVzY2FsYXRvcjsKK+e3iuaApeS6i+S7tiA+IGVtZXJnZW5jeTsKK+mAgOm7kea/gOe0oCA+IG1lbGF0b25pbjsKK+S4jeioiOWFtuaVuCA+IGNvdW50bGVzczsKK+Wfuuedo+aVmeW+kiA+IGNocmlzdGlhbjsKK+WHueWHuOi7i+iKsSA+IGVtYm9zc2luZzsKK+S4jeeEtueahOipsSA+IG90aGVyd2lzZTsKK+S6nuagvOmWgOi+siA+IGFnYW1lbW5vbjsKK+S4jemAnuS5i+W+kiA+IGRlc3BlcmFkbzsKK+e9ruS5i+W6puWkliA+IGRpc3JlZ2FyZDsKK+aGpOaGpOS4jeW5syA+IGluZGlnbmFudDsKK+S4i+WAi+aYn+acnyA+IG5leHRcLXdlZWs7Civmrbflj7LlrbjlrrYgPiBoaXN0b3JpYW47CivloIXlv43kuI3mi5QgPiBmb3J0aXR1ZGU7CivlhajloLTkuIDoh7QgPiB1bmFuaW1vdXM7CivnvoXliIfmlq/nibkgPiByb2NoZXN0ZXI7CivooajmhI/mloflrZcgPiBpZGVvZ3JhcGg7CivpgJrosqjohqjohLkgPiBpbmZsYXRpb247Civorormj5voqK3lgpkgPiBjb252ZXJ0ZXI7CivntpPmv5/lrbjogIUgPiBlY29ub21pc3Q7CivkuJnnqK7lsITnt5ogPiBnYW1tYVwtcmF5Owor5oSP5rCj55u45oqVID4gY29uZ2VuaWFsOwor542y5pq05Yip6ICFID4gcHJvZml0ZWVyOwor5pav5rSb5LyQ5YWLID4gc2xvdmFraWE7CivmsrnngrjlnIjppIUgPiBkb3VnaG51dDsKK+WboO+5jeS5i+aVhSA+IGluYXNtdWNoOwor6ZuN5a655aSn5bqmID4gZ2VuZXJvdXM7Civlpb3lpb3lhZLlnLAgPiBwcm9wZXJseTsKK+mojuWjq+awo+amgiA+IGNoaXZhbHJ5Owor6Im+5b636JW+5b63ID4gYWRlbGFpZGU7CivlhY3osrvou5/ku7YgPiBmcmVld2FyZTsKK+S7peWkque2sue1oSA+IGV0aGVybmV0Owor5qGD6Iqx5b+D5pyoID4gbWFob2dhbnk7CivmqJnmupbopo/moLwgPiBzdGFuZGFyZDsKK+eEoeirluS9leaZgiA+IHdoZW5ldmVyOwor5bm+5LmO5rKS5pyJID4gc2NhcmNlbHk7CivniafluKvkuYvogbcgPiBtaW5pc3RyeTsKK+WFreWNgeWbm+iQrCA+IDY0XC0wXC0wMDA7CivokpnmiZjnvoXmi4kgPiBtb3Rvcm9sYTsKK+S6uuW3pea1geeUoiA+IGFib3J0aW9uOwor5ZaH5Y+t5rC05LuZID4gZGFmZm9kaWw7CivlnIvpmpvntrLntaEgPiBpbnRlcm5ldDsKK+eEoeirluS9leS6iyA+IGFueXRoaW5nOwor57K+5Yqb5YWF5rKbID4gdmlnb3JvdXM7Civlk6XlgKvluIPntIAgPiBjb2x1bWJ1czsKK+W3pui8quaJi+anjSA+IHJldm9sdmVyOwor5ZOl5YCr5q+U5LqeID4gY29sb21iaWE7CivlkJvkuLvmlL/msrsgPiBtb25hcmNoeTsKK+S6uuWPo+eooOWvhiA+IHBvcHVsb3VzOwor5byV5Lq65rOo55uuID4gc3RyaWtpbmc7CivpmL/lpYfmrbfmlq8gPiBhY2hpbGxlczsKK+Wlp+W+t+S/ruaWryA+IG9keXNzZXVzOwor5Z2m5qGR5bC85LqeID4gdGFuemFuaWE7CivkuI3poafkuIDliIcgPiByZWNrbGVzczsKK+WLouWmguegtOeruSA+IHN3ZWVwaW5nOwor6L6y5a625bqt6ZmiID4gZmFybXlhcmQ7Civlrrbluq3kvZzmpa0gPiBob21ld29yazsKK+WNs+Wwh+S+huiHqCA+IGltbWluZW50Owor6Z+z5qiC5YWJ56KfID4gbXVzaWNcLWNkOwor5LqU5b2p6LOT57SbID4gY29sb3JmdWw7CivmvKLlr4bniL7poJMgPiBoYW1pbHRvbjsKK+iqnuiogOWtuOWutiA+IGxpbmd1aXN0Owor6b6N6aCt6ICB5aSnID4gYmlnXC1ib3NzOwor6IWT5Yip6ZaA5pu4ID4gcGhpbGVtb247Civpm7vohabntrLntaEgPiBpbnRlcm5ldDsKK+aRqeaJmOe+heaLiSA+IG1vdG9yb2xhOwor5be05Z+65pav5Z2mID4gcGFraXN0YW47Civlt7Tlt7TlpJrmlq8gPiBiYXJiYWRvczsKK+ertumBuOa0u+WLlSA+IGNhbXBhaWduOwor57WC56uv55So5oi2ID4gZW5kXC11c2VyOwor5aKo5rC055O25p62ID4gaW5rc3RhbmQ7CivntrLpmpvntrLot68gPiBpbnRlcm5ldDsKK+eEoeS6uumnlemnmyA+IHVubWFubmVkOwor5rOV5Yip6LO95Lq6ID4gcGhhcmlzZWU7Civnp5HnvoXmi4nlpJogPiBjb2xvcmFkbzsKK+WMquW+kumbhuWcmCA+IGdhbmdzdGVyOwor5bCE6aC75Zmq6Z+zID4gcmZcLW5vaXNlOwor5Lq66YGT5Li7576pID4gaHVtYW5pc207CivkuIDlv4PkuIDmhI8gPiBpbnRlbnRseTsKK+e2sumam+e2sue1oSA+IGludGVybmV0Owor57K+56We6Yyv5LqCID4gaW5zYW5pdHk7CivlmInlubToj6/mnIMgPiBjYXJuaXZhbDsKK+WNmuiMqOeTpue0jSA+IGJvdHN3YW5hOwor5aOf5pa36LKp6LOjID4gbW9ub3BvbHk7Civkv53liqDliKnkup4gPiBidWxnYXJpYTsKK+iytOaXj+i6q+S7vSA+IGxvcmRzaGlwOwor6IKM6IKJ55m86YGUID4gbXVzY3VsYXI7CivmtYHmhJ/nlqvoi5cgPiBmbHVcLXNob3Q7Civlt6XkvZzpgY7luqYgPiBvdmVyd29yazsKK+S5meWkque2sui3ryA+IGV0aGVybmV0Owor6aqo6aCt5p625a2QID4gc2tlbGV0b247CivmhJvlm6Dmlq/lnaYgPiBlaW5zdGVpbjsKK+eEoeirluS9leiZlSA+IGFueXdoZXJlOwor5YWs6ZaL5oyH6LKsID4gZGVub3VuY2U7CivmraHov47lhYnoh6ggPiB3ZWxjb21lOwor5a6J5o+Q55Oc5bO2ID4gYW50aWd1YTsKK+WWquW/g+eXheeLgiA+IGx1bmF0aWM7CivmoLzlrZDmo4nluIMgPiBnaW5naGFtOwor6JCs5pyJ5byV5YqbID4gZ3Jhdml0eTsKK+a2iOmYsumaiuWToSA+IGZpcmVtYW47CivmibPkuI3lgJLlhZIgPiB0dW1ibGVyOwor54is6J+y5YuV54mpID4gcmVwdGlsZTsKK+mAgOS8jei7jeS6uiA+IHZldGVyYW47CivlpJbnp5HphqvnlJ8gPiBzdXJnZW9uOwor5Zyo77mN5LmL6ZaTID4gYmV0d2VlbjsKK+WNgeWEhOS9jeWFgyA+IGdpZ2FiaXQ7Civouqvpq5TpmpzlrrMgPiBjcmlwcGxlOwor6Zi/5pGp5bC85LqeID4gYW1tb25pYTsKK+igleWLleWJjemAsiA+IHdyaWdnbGU7CivmtL7ntablt6XkvZwgPiB0b1wtdGFzazsKK+iWlOiWh+iKseiVviA+IHJvc2VidWQ7CivnhKHoq5bkvZXkurogPiB3aG9ldmVyOwor5pav55Om5biM6KOhID4gc3dhaGlsaTsKK+iIquepuumDteS7tiA+IGFpcm1haWw7Civkup7nibnomK3lpKcgPiBhdGxhbnRhOwor6YCy6YCA5YWp6ZujID4gZGlsZW1tYTsKK+S4jeeoguS4jeiOoCA+IHVzZWxlc3M7CivliIbmnpDkurrlo6sgPiBhbmFseXN0Owor5pyA5L2O6ZmQ5bqmID4gbWluaW11bTsKK+WFi+S7gOexs+eIviA+IGthc2htaXI7CivmtLvli5XmiL/lsYsgPiB0cmFpbGVyOwor5LuA5LiA5aWJ5427ID4gdGl0aGluZzsKK+WiqOilv+WTpeS6uiA+IG1leGljYW47CivliqDmpq7ogIDmlrwgPiBnbG9yaWZ5Owor5LiN5bmy5LiN5reoID4gdW5jbGVhbjsKK+S4ieS9jeS4gOmrlCA+IHRyaW5pdHk7CivlpbPnlKjlhafooaMgPiBjaGVtaXNlOwor5YWs55uK5LqL5qWtID4gdXRpbGl0eTsKK+aXpeW4uOW3peS9nCA+IHJvdXRpbmU7CivnlLfmgKfopqrlsawgPiBraW5zbWFuOwor6LKo54mp6YGL6Ly4ID4gZnJlaWdodDsKK+eJmeenkemGq+eUnyA+IGRlbnRpc3Q7Civpg6HmsrvlronlrpggPiBzaGVyaWZmOwor5Lqe5Lyv5ouJ572VID4gYWJyYWhhbTsKK+WFi+e+heWcsOS6niA+IGNyb2F0aWE7CivlhajnpZ7ngYzms6ggPiByYXB0dXJlOwor5bCI56eR6Zmi5qChID4gYWNhZGVteTsKK+mrmOmAn+WFrOi3ryA+IGhpZ2h3YXk7CivntaboiIfos4fmoLwgPiBxdWFsaWZ5Owor5Y2w5Zyw5a6J6YKjID4gaW5kaWFuYTsKK+S4jeW+l+iAjOefpSA+IHVua25vd247CivoiKrnqbrlhazlj7ggPiBhaXJsaW5lOwor5pyJ6ICQ5LmF5YqbID4gZHVyYWJsZTsKK+WkqumZvem7keWtkCA+IHN1bnNwb3Q7CivluIzkvK/kvobmm7ggPiBoZWJyZXdzOwor5aWn5p6X5Yy55YWLID4gb2x5bXBpYzsKK+S6nuWIqeahkemCoyA+IGFyaXpvbmE7Civok4vkuJblpKrkv50gPiBnZXN0YXBvOwor5ZaL5ZaL5LiN5LyRID4gY2hhdHRlcjsKK+aEm+Wxi+WPiueDjyA+IGxvdmVcLW1lOwor57aT5r+f5Yi25bqmID4gZWNvbm9teTsKK+S7pemmrOWFp+WIqSA+IGVtYW51ZWw7Civopo/lioPkurrlk6EgPiBwbGFubmVyOwor5oWI5ZaE5qmf5qeLID4gY2hhcml0eTsKK+eUt+aAp+WwiueosSA+IGVzcXVpcmU7CivkuI3kuInkuI3lm5sgPiBkdWJpb3VzOwor5YiX546L57SA5LiLID4gMlwta2luZ3M7CivliJfnjovntIDkuIogPiAxXC1raW5nczsKK+mZuOi7jeS4iuagoSA+IGNvbG9uZWw7CivomZvmp4vlsI/oqqogPiBmaWN0aW9uOwor5aSW56eR5omL6KGTID4gc3VyZ2VyeTsKK+WQhOiJsuWQhOaooyA+IGRpdmVyc2U7CivkvZvnvoXoo6HpgZQgPiBmbG9yaWRhOwor5YWs54i15aSr5Lq6ID4gZHVjaGVzczsKK+acieWlveWlh+W/gyA+IGN1cmlvdXM7Civlvbzlvpflvozmm7ggPiAyXC1wZXRlcjsKK+eOu+WIqee2reS6niA+IGJvbGl2aWE7CivlsI/lnovmq4Pmq6UgPiBjYWJpbmV0Owor5Y2w5YOP5rex5Yi7ID4gaW1wcmVzczsKK+aMh+WwjuaVmeaOiCA+IGFkdmlzZXI7CivkuI3nn6XkvZXmlYUgPiBzb21laG93Owor6Zi/5Y+45Yy55p6XID4gYXNwaXJpbjsKK+mHkeWFiemWg+eIjSA+IHNwYW5nbGU7CivkupLoga/ntrLntaEgPiBuZXR3b3JrOwor5aW06Zq45Yi25bqmID4gc2xhdmVyeTsKK+aBouW+qeWOn+eLgCA+IHJlc3RvcmU7Civppqzkvobopb/kup4gPiBtYWxhc2lhOwor5bGx6IOh5qGD5pyoID4gaGlja29yeTsKK+W9vOW+l+WJjeabuCA+IDFcLXBldGVyOwor5bCx5a+i5pmC6ZaTID4gYmVkdGltZTsKK+Wbm+i8qummrOi7iiA+IGNoYXJpb3Q7Civkup7mi4nlt7TppqwgPiBhbGFiYW1hOwor5b2I6YGT5bCO5b2IID4gbWlzc2lsZTsKK+acieeyvuelnueXhSA+IGluc2FuZTsKK+WTuuS5s+WLleeJqSA+IG1hbW1hbDsKK+S8iuWwvOS8iuW+tyA+IGFlbmVpZDsKK+WhnueIvue2reS6niA+IHNlcmJpYTsKK+S9v++5jeixkOWvjCA+IGVucmljaDsKK+S8iuWwvOS6nuaWryA+IGFlbmVhczsKK+mphemAkOWHuuWigyA+IGRlcG9ydDsKK+WFq+WIhumfs+espiA+IHF1YXZlcjsKK+WkqeeruueJoeS4uSA+IGRhaGxpYTsKK+mbouWlh+aciei2oyA+IHF1YWludDsKK+eZvOWYjuWYjuiBsiA+IHJhdHRsZTsKK+i2hemBjumZkOW6piA+IGV4Y2VlZDsKK+S4jeWPr+WRiuS6uiA+IGhpZGRlbjsKK+WKm+i2s+S7peWBmiA+IGFmZm9yZDsKK+WcqO+5jeacn+mWkyA+IGR1cmluZzsKK+eoruaXj+S4u+e+qSA+IHJhY2lzbTsKK+W+kuatpeaXheihjCA+IGhpa2luZzsKK+aXheihjOijneWCmSA+IG91dGZpdDsKK+WcsOS4i+mQtei3ryA+IHN1YndheTsKK+WogeWjq+W/jOmFkiA+IHdoaXNreTsKK+mAo+Wtl+espuiZnyA+IGh5cGhlbjsKK+W7oumZpOi7jeWCmSA+IGRpc2FybTsKK+mhm+WAkumBjuS+hiA+IGludmVydDsKK+S4g+aciOS4gOiZnyA+IGp1bHlcLTE7Civpu57poK3mi5vlkbwgPiBiZWNrb247CivkvK/ku7Llj5TlraMgPiBlbGRlc3Q7CivpvLvlj6Ppg6jliIYgPiBtdXp6bGU7CivlsJbogbLllbzlk60gPiBzcXVlYWw7Civlkb3pgYvoqLvlrpogPiBvcmRhaW47CivkurrpoK3njYXouqsgPiBzcGhpbng7CivkuI3lubjkuYvkuosgPiBtaXNoYXA7CivlnKjvuY3kuYvml4EgPiBiZXNpZGU7CivntITnv7Dkuozmm7ggPiAyXC1qb2huOwor6L2f6L2f54OI54OIID4gc3Ryb25nOwor5Y2B5Zub6KGM6KmpID4gc29ubmV0Owor5LqM6ICF5LmL5LiAID4gZWl0aGVyOwor57SE57+w5LiJ5pu4ID4gM1wtam9objsKK+e0hOe/sOS4gOabuCA+IDFcLWpvaG47Civnvo7mtLLlhYDpt7kgPiBjb25kb3I7CivkupTliIbnvo7ph5EgPiBuaWNrZWw7CivpmaTkuobkuYvlpJYgPiBleGNlcHQ7Civoo73pmbblt6XkurogPiBwb3R0ZXI7Civkurrlj6Poqr/mn6UgPiBjZW5zdXM7CivnhKHoq5blpoLkvZUgPiBhbnlob3c7Civlh7rln4Plj4roqJggPiBleG9kdXM7CivmnInol6Xnma7ogIUgPiBhZGRpY3Q7Civph6PprZrnlKjlhbcgPiB0YWNrbGU7Civmr5TovIPllpzmraEgPiBwcmVmZXI7CivpmL/lpJrlsLzmlq8gPiBhZG9uaXM7CivpgIPkuYvlpK3lpK0gPiBlc2NhcGU7CivntKvnvoXomK3oibIgPiB2aW9sZXQ7Civlgq3kurrpoJjnj60gPiBidXRsZXI7CivkuI3miLDkuI3lkowgPiBub1wtd2FyOwor6JiH5qC86Jit5bi9ID4gYm9ubmV0Owor5rib5L2O6YCf5bqmID4gcmV0YXJkOwor6Zi/5ouJ5pav5YqgID4gYWxhc2thOwor5L2/5YW36auU5YyWID4gZW1ib2R5Owor6YWS57K+6aOy5paZID4gbGlxdW9yOwor6LeR5aCC5YWS55qEID4gd2FpdGVyOwor5L2/77mN6IO95aSgID4gZW5hYmxlOwor55Sf5rCj5YuD5YuDID4gbGl2ZWx5Owor54Sh5rOV54Sh5aSpID4gb3V0bGF3Owor5rOi5pav5bC85LqeID4gYm9zbmlhOwor6Jmb5by16IGy5YuiID4gYmx1ZmY7CivmnKrmiJDlubTkurogPiBtaW5vcjsKK+m6teWMheW4q+WChSA+IGJha2VyOwor5oSf5YyW6aSF5Lm+ID4gd2FmZXI7CivpnZ7luLjlrrPmgJUgPiBkcmVhZDsKK+S4gOe3muW+ruWFiSA+IGdsZWFtOwor5LqU6Iqx5YWr6ZaAID4gbXlyaWQ7CivmlpzntIvou5/lkaIgPiB0d2VlZDsKK+W+t+WFi+iWqeaWryA+IHRleGFzOwor5ru/6Lqr5aG15Z+DID4gZHVzdHk7Civoqr/lkbPogonmsYEgPiBncmF2eTsKK+aomea6luWwuuWvuCA+IGdhdWdlOwor5Zyo77mN5LmL5LiLID4gYmVsb3c7CivlnKjvuY3kuYvkuIogPiBhYm92ZTsKK+ifsumzpeWPq+iBsiA+IGNoaXJwOwor5YuV5oWL5b2x5YOPID4gdmlkZW87CivkuInljYPkupTnmb4gPiAzXC01MDA7CivnpLrlqIHpgYvli5UgPiByYWxseTsKK+i8ieiyqOaxvei7iiA+IGxvcnJ5Owor5biD5bib6I+957KfID4gY2xvdGg7CivnpZ7ntpPpgY7mlY8gPiBqdW1weTsKK+S8iuaWr+iYreaVmSA+IGlzbGFtOwor5oSB55yJ6Ium6IeJID4gZnJvd247CivlkInmma7os73kurogPiBneXBzeTsKK+aEm+WFi+aWr+WFiSA+IHhcLXJheTsKK+WutuW6reaVmeW4qyA+IHR1dG9yOwor6Zyy6b2S6ICM56yRID4gZ3JpbjsKK+W+nuWuueS4jei/qyA+IGNhbG07CivkuIDop5LpioDluaMgPiBkaW1lOwor6aOy6aOf55mC6aSKID4gZGlldDsKK+ebrueequWPo+WRhiA+IHN0dW47Civmk7rpvo3ploDpmaMgPiBjaGF0Owor5Yiw77mN5LmL5LiKID4gb250bzsKK+WFqOmrlOS6uuWToSA+IGNyZXc7CivpgaDnqIvnm6PmjqcgPiBybW9uOwor5Zyo77mN5LmL5LitID4gYW1pZDsKK+Wwj+i1t+mHjeapnyA+IGphY2s7CivovJXogIzmmJPoiIkgPiBlYXN5Owor6YeR5bGs6JaE54mHID4gZm9pbDsKK+mgreiFpua4healmiA+IHNhbmU7CivlnKjmsLTmraXooYwgPiB3YWRlOwor5Ye656ef5rG96LuKID4gdGF4aTsKK+mrmOeIvuWkq+eQgyA+IGdvbGY7Civpm7voqbHpiLTogbIgPiBidXp6Owor5ray5pm26aGv56S6ID4gbGNkOwor54OP5ZCI5LmL55y+ID4gbW9iOwor57Si5YW36KOd572uID4gcmlnOwor5YWs5YWx5rG96LuKID4gYnVzOwor6I6r5ZCN5YW25aaZID4gb2RkOwor5ZyT5b2i5pyo5p2QID4gbG9nOwor5LiN5YiG5Yud6LKgID4gdGllOwor6KGj5pyN57ir6YKKID4gaGVtOwor5ZyT5b2i6bq15YyFID4gYnVuOwor5p2c5p2+5a2Q6YWSID4gZ2luOwor5Zyo77mN5LmL5YWnID4gaW47Civnm7TpgJrou4ogPiBcInRocm91Z2hcLXRyYWluXCJcLVwocmVmZXJzXC10b1wtdGhlXC1pZGVhXC1vZlwtcmV0YWluaW5nXC1wcmV2aW91c1wtbGVnaXNsYXR1cmVcLWFmdGVyXC10cmFuc2l0aW9uXC10b1wtY2hpbmVzZVwtcnVsZVwtaW5cLWhvbmdcLWtvbmdcLW9yXC1tYWNhdVwpOwor5bCP6Ief6ay8ID4gZGlydHlcLWxpdHRsZVwtbW9uc3RlclwtXChzcG9rZW5cLWFmZmVjdGlvbmF0ZWx5XC10b1wtYVwtY2hpbGRcLXdob1wtaGFzXC1nb3R0ZW5cLWhpbVwoaGVyXClzZWxmXC1kaXJ0eVw7XC1saXRlcmFsbHlcLVwibGl0dGxlXC1kaXJ0eVwtZ2hvc3RcIlwpOwor57a66Imy5L2zID4gaXRoYWNhXCxcLW55XC1cKGJ1dFwtcHJvbm91bmNlZFwteWkzXC1zZTRcLWppYTFcLFwtZm9sbG93aW5nXC1hXC1taXN0YWtlXC1tYWRlXC1ieVwtaHUyXC1zaGk0XC3og6HpgalcKTsKK+mbt+WzsOWhlCA+IGxlaWZlbmdcLXBhZ29kYVwsXC1ieVwtd2VzdFwtbGFrZVwtdW50aWxcLWl0XC13YXNcLWRlc3Ryb3llZFwtXChhbHNvXC1mcm9tXC1tYWRhbVwtd2hpdGVcLXNuYWtlXCk7CivniaHkuLnljaEgPiBwZW9ueVwtY2FyZFwtXChjcmVkaXRcLWNhcmRcLWlzc3VlZFwtYnlcLWluZHVzdHJpYWxcLWFuZFwtY29tbWVyY2lhbFwtYmFua1wtb2ZcLWNoaW5hXCk7CivkuInlspTlj6MgPiBhdFwtdGhlXC1jcm9zc3JvYWRzXCxcLXRoZVwtbmFtZVwtb2ZcLWFcLWZhbW91c1wtb3BlcmFcLFwtc3RvcnlcLWZyb21cLXNodWlcLWh1XC16aHVhbjsKK+adjuiHquaIkCA+IG5hbWVcLW9mXC1hXC1wZXJzb25cLFwtbGlcLXppXC1jaGVuZ1wsXC1sZWFkZXJcLW9mXC1taW5nXC1keW5hc3R5XC1wZWFzYW50XC1yZWJlbGxpb247CivmsZ/lhavpu54gPiBcImppYW5nXC16ZW1pbicnc1wtZWlnaHRcLXBvaW50XC1mb3JtdWxhXCJcLVwoZm9yXC1yZXN1bWluZ1wtYVwtZGlhbG9nXC13aXRoXC10YWl3YW5cKTsKK+mEp+S6rua0qiA+IHRhbmdcLWxpYW5nXC1ob25nXC1cKG9wcG9zaXRpb25cLWNhbmRpZGF0ZVwtaW5cLWphblwtMTk5Nlwtc2luZ2Fwb3JlXC1lbGVjdGlvbnNcKTsKK+WQg+Wkp+aItiA+IG1hc3NcLXNlaXp1cmVcLW9mXC1mb29kXC1mcm9tXC1sYW5kbG9yZHNcLWR1cmluZ1wtZmFtaW5lc1wtYmVmb3JlXC1saWJlcmF0aW9uOwor5p2O5pmC54+NID4gbGlcLXNoaVwtemhlblwtXCgxNTE4XC0xNTkzXCxcLWZhbW91c1wtZG9jdG9yXCxcLWF1dGhvclwtb2ZcLWJlbjNcLWNhbzNcLWdhbmcxXC1tdTQ7Civnpr3mtYHmhJ8gPiBcImJpcmRcLWZsdVwiXC1cKGZsdVwtY2FycmllZFwtYnlcLWJpcmRzXC1cLVwtZm91bmRcLWluXC1ob25nXC1rb25nXC1pblwtbGF0ZVwtMTk5N1wpOwor6JKZ5Luj54i+ID4gXCh3YWx0ZXJcKVwtbW9uZGFsZVwtXCh1c1wtYW1iYXNzYWRvclwtdG9cLWphcGFuXCxcLWZvcm1lclwtdXNcLXZpY2VcLXByZXNpZGVudFwpOwor6Zmz57SN5b63ID4gXChjbGFpcmVcKVwtY2hlbm5hdWx0XCxcLWNvbW1hbmRlclwtb2ZcLWZseWluZ1wtdGlnZXJzXC1kdXJpbmdcLXdvcmxkXC13YXJcLWlpOwor57at54i+5a65ID4gXChqb2hhbm5lc1wtbG9kZXdpa3VzXClcLXZpbGpvZW5cLVwoc291dGhcLWFmcmljYW5cLWFtYmFzc2Fkb3JcLXRvXC10YWl3YW5cKTsKK+iRm+a0suWjqSA+IG5hbWVcLW9mXC1hXC1wbGFjZVwsXC1nZXpob3ViYVwtZGFtXC1vblwtdGhlXC1jaGFuZ2ppYW5nXC1yaXZlclwsXC1pblwtc2ljaHVhbjsKK+m8u+mfu+avjSA+IFwob2ZcLWNoaW5lc2VcLXByb251bmNpYXRpb25cKVwtYVwtdm93ZWxcLWZvbGxvd2VkXC1ieVwtYVwtbmFzYWxcLWNvbnNvbmFudDsKK+mHkeawuOWNlyA+IGtpbVwteW9uZ1wtbmFtXC1cKG5vcnRoXC1rb3JlYW5cLWRlcHV0eVwtcHJlbWllclwtYW5kXC1mb3JlaWduXC1taW5pc3RlclwpOwor5paX5om55pS5ID4gc3RydWdnbGVcLWNyaXRpY2lzbVwtdHJhbnNmb3JtYXRpb25cLVwoY3VsdHVyYWxcLXJldm9sdXRpb25cLXNsb2dhblwpOwor56uv5Y2I56+AID4gdGhlXC1kcmFnb25cLWJvYXRcLWZlc3RpdmFsXC1cKHRoZVwtNXRoXC1kYXlcLW9mXC10aGVcLTV0aFwtbHVuYXJcLW1vbnRoXCk7Civnmb3ojKvojKsgPiBcKG9mXC1taXN0XCxcLXNub3dcLFwtZmxvb2R3YXRlclwsXC1ldGNcKVwtYVwtdmFzdFwtZXhwYW5zZVwtb2ZcLXdoaXRlbmVzczsKK+aWr+S9qee+hSA+IFwoam9hblwpXC1zcGVyb1wtXCh1bmRlclwtc2VjcmV0YXJ5XC1vZlwtc3RhdGVcLWZvclwtZWNvbm9taWNcLWFmZmFpcnNcKTsKK+WkqualteaLsyA+IGFcLWtpbmRcLW9mXC10cmFkaXRpb25hbFwtY2hpbmVzZVwtc2hhZG93Ym94aW5nXC1cKHRhaVwtY2hpXC1jaHVhblwpOwor5pyD5LiN5pyDID4gXChwb3NpbmdcLWFcLXF1ZXN0aW9uXDpcLXdoZXRoZXJcLXNvbWVvbmVcLFwtc29tZXRoaW5nXClcLWNhblwtb3JcLW5vdDsKK+aKseS9m+iFsyA+IGNsYXNwXC1idWRkYScnc1wtZmVldFwtXC1cLXByb2Zlc3NcLWRldm90aW9uXC1vbmx5XC13aGVuXC1pblwtdHJvdWJsZTsKK+ibi+iKsea5ryA+IGNsZWFyXC1zb3VwXC1jb250YWluaW5nXC1iZWF0ZW5cLWVnZ1wtYW5kXC1ncmVlblwtbGVhZnlcLXZlZ2V0YWJsZTsKK+mHkeWxseWvuiA+IGppbnNoYW5cLXRlbXBsZVwsXC13aGVyZVwtZmFoYWlcLWxpdmVzXC1cKGZyb21cLW1hZGFtXC13aGl0ZVwtc25ha2VcKTsKK+S4puiSguiTriA+IHR3aW5cLWxvdHVzXC1mbG93ZXJzXC1vblwtb25lXC1zdGFsa1wtXC1cLWFcLWRldm90ZWRcLW1hcnJpZWRcLWNvdXBsZTsKK+mjm+iZjumaiiA+IGZseWluZ1wtdGlnZXJzXC1cKHVzXC1haXJtZW5cLWluXC1jaGluYVwtZHVyaW5nXC13b3JsZFwtd2FyXC10d29cKTsKK+aal+iKseWFkiA+IGFcLXZlaWxlZFwtZGVzaWduXC1pbmNpc2VkXC1pblwtcG9yY2VsYWluXC1vclwtd292ZW5cLWluXC1mYWJyaWM7Civmi5TnvZDlrZAgPiBjdXBwaW5nXC10ZWNobmlxdWVcLXVzZWRcLWluXC10cmFkaXRpb25hbFwtY2hpbmVzZVwtbWVkaWNpbmU7CivlhYPlrrXnr4AgPiB0aGVcLWxhbnRlcm5cLWZlc3RpdmFsXCxcLWphbnVhcnlcLTE1XC1vblwtdGhlXC1sdW5hclwtY2FsZW5kYXI7CivlgIvpq5TmiLYgPiBhXC1zbWFsbFwtcHJpdmF0ZVwtYnVzaW5lc3NcLVwodXNlZFwtaW5cLW1haW5sYW5kXC1jaGluYVwtb25seVwpOwor5pmv5b636Y6uID4gamluZ1wtZGVcLXpoZW5cLVwoYVwtY2hpbmVzZVwtY2l0eVwtaW5cLWppYW5nXC14aVwt5rGf6KW/XC1wcm92aW5jZVwpOwor6ZW35Z+O5Y2hID4gZ3JlYXRcLXdhbGxcLWNhcmRcLVwoY3JlZGl0XC1jYXJkXC1pc3N1ZWRcLWJ5XC1iYW5rXC1vZlwtY2hpbmFcKTsKK+WTiOiyneeIviA+IFwod2Vic3RlclwpXC1odWJiZWxsXC1cKGZvcm1lclwtYXNzb2NpYXRlXC1hdHRvcm5leVwtZ2VuZXJhbFwpOwor6JCs5aO95bGxID4gbmFtZVwtb2ZcLWFcLXBsYWNlXCxcLWxvbmdldml0eVwtaGlsbFwsXC1pblwtc3VtbWVyXC1wYWxhY2VcLemgpOWSjOWckjsKK+aLiemCo+eDiCA+IFwocHJpbmNlXClcLXJhbmFyaWRkaFwtXChzb25cLW9mXC1raW5nXC1zaWhhbm91a1wtb2ZcLWNhbWJvZGlhXCk7CivljIXlubLliLYgPiBhXC1zeXN0ZW1cLW9mXC1wYXltZW50XC1wYXJ0bHlcLWluXC1raW5kXC1hbmRcLXBhcnRseVwtaW5cLWNhc2g7CivpoY/nnJ/ljb8gPiBuYW1lXC1vZlwtYVwtcGVyc29uXCxcLXlhblwtemhlbnFpbmdcLFwtYVwtZmFtb3VzXC1jYWxsaWdyYXBoZXI7Civnmb3ntKDosp4gPiBcKG5hbWVcLW9mXC1hXC1wZXJzb25cKVwtYmFpXC1zdXpoZW5cLFwtZnJvbVwtbWFkYW1cLXdoaXRlXC1zbmFrZTsKK+eZveWGsOWGsCA+IHBhaVwtcGluZ1wtcGluZ1wtXCh3ZWxsXC1rbm93blwtdGFpd2FuXC1wZXJmb3JtaW5nXC1hcnRpc3RcKTsKK+S8r+aBqeaWryA+IFwobmljaG9sYXNcKVwtYnVybnNcLVwodXNcLXN0YXRlXC1kZXBhcnRtZW50XC1zcG9rZXNwZXJzb25cKTsKK+WwvOi1q+mtryA+IFwoamF3YWhhcmxhbFwpXC1uZWhydVwtXChmaXJzdFwtcHJpbWVcLW1pbmlzdGVyXC1vZlwtaW5kaWFcKTsKK+aSpea1qum8kyA+IGFcLWRydW1cLXNoYXBlZFwtcmF0dGxlXC1cKHVzZWRcLWJ5XC1wZWRsYXJzXC1vclwtYXNcLWFcLXRveVwpOwor5YyX5aSn6I2SID4gdGhlXC1ncmVhdFwtbm9ydGhlcm5cLXdpbGRlcm5lc3NcLVwoaW5cLW5vcnRoZXJuXC1jaGluYVwpOwor5Y2B5LqU5aSnID4gMVwtNXRoXC1wYXJ0eVwtY29uZ3Jlc3NcLVwob2ZcLWNoaW5lc2VcLWNvbW11bmlzdFwtcGFydHlcKTsKK+adjuWFieiAgCA+IGxlZVwta3VhblwteWV3XC1cKGZvcm1lclwtcHJpbWVcLW1pbmlzdGVyXC1vZlwtc2luZ2Fwb3JlXCk7Civot5HmsZ/muZYgPiB0b1wtbWFrZVwtYVwtbGl2aW5nXC1hc1wtYVwtdHJhdmVsbGluZ1wtcGVyZm9ybWVyXCxcLWV0Y1wuOwor5Lqk5piT6aGNID4gc3VtXC1vclwtdm9sdW1lXC1vclwtYW1vdW50XC1vZlwtYnVzaW5lc3NcLXRyYW5zYWN0aW9uczsKK+ael+ixkOatoyA+IGxpblwtZmVuZ1wtY2hlbmdcLVwodGFpd2FuXC1taW5pc3Rlclwtb2ZcLXRoZVwtaW50ZXJpb3JcKTsKK+iRo+W7uuiPryA+IHR1bmdcLWNoZWVcLWh3YVwtXChob25nXC1rb25nXC1sZWFkZXJcLWFmdGVyXC1qdWx5XC0xOTk3XCk7CivljZfkuqzot68gPiBuYW5qaW5nXC1zdFwuXCxcLWxhcmdlXC1jb21tZXJjaWFsXC1zdHJlZXRcLWluXC1zaGFuZ2hhaTsKK+WFq+S7meahjCA+IG9sZFwtZmFzaGlvbmVkXC1zcXVhcmVcLXRhYmxlXC10b1wtc2VhdFwtZWlnaHRcLXBlb3BsZTsKK+WhnuaLieWHoSA+IFwoc29ubnlcKVwtc2VyYXBoaW5cLVwoaGFpdGlhblwtYW1iYXNzYWRvclwtdG9cLXRhaXdhblwpOwor6YeR5aSn5LitID4ga2ltXC1kYWVcLWp1bmdcLVwobmV3bHlcLWVsZWN0ZWRcLXByZXNpZGVudFwtb2ZcLWtvcmVhXCk7CivojIPmlq/lnaYgPiBcKGRpYW5uZVwpXC1mZWluc3RlaW5cLVwodXNcLXNlbmF0b3JcLWZyb21cLWNhbGlmb3JuaWFcKTsKK+a2suaFi+awtCA+IGxpcXVpZFwtd2F0ZXJcLVwoYXNcLW9wcG9zZWRcLXRvXC1zdGVhbVwtb3JcLWljZVwsXC1lXC5nXC5cKTsKK+ino+aUvui7jSA+IHBlb3BsZScnc1wtbGliZXJhdGlvblwtYXJteVwtXChpZVwsXC10aGVcLWNoaW5lc2VcLWFybXlcKTsKK+i2mee0q+mZvSA+IHpoYW9cLXppeWFuZ1wtXChmb3JtZXJcLWNoaW5lc2VcLWxlYWRlcnNoaXBcLWZpZ3VyZVwpOwor5LqS6YCa5oCnID4gaW50ZXJvcGVyYWJpbGl0eVwtXChvZlwtY29tbXVuaWNhdGlvbnNcLWVxdWlwbWVudFwpOwor5YWo5paX54WlID4gY2h1blwtZG9vXC1od2FuXC1cKGZvcm1lclwtc291dGhcLWtvcmVhblwtcHJlc2lkZW50XCk7CivmjqLot6/ogIUgPiBwYXRoZmluZGVyXC1cKHNwYWNlXC1jcmFmdFwtc2VudFwtdG9cLW1hcnNcLWJ5XC1uYXNhXCk7CivltJTkup7nkLMgPiBjaGFybGVzXC15YWhcLWxpblwtdHJpZVwtXChhcmthbnNhc1wtcmVzdGF1cmFudGV1clwpOwor5bCI5qGI57WEID4gc3BlY2lhbFwtXChsZWdhbFx8anVkaWNpYWxcKVwtaW52ZXN0aWdhdGlvbnNcLWdyb3VwOwor6ZW35rKZ54GjID4gY2hldW5nXC1zaGFcLXdhblwtXChwb3VsdHJ5XC1tYXJrZXRcLWluXC1ob25nXC1rb25nXCk7CivmraPluLjljJYgPiBub3JtYWxpemF0aW9uXC1cKG9mXC1kaXBsb21hdGljXC1yZWxhdGlvbnNcLFwtZXRjXCk7CivorJ3oo6HlpKsgPiBcKG5hd2F6XClcLXNoYXJpZlwtXChwcmltZVwtbWluaXN0ZXJcLW9mXC1wYWtpc3RhblwpOwor5ZCz5L2c5qOfID4gZ29oXC1jaG9rXC10b25nXC1cKHByaW1lXC1taW5pc3Rlclwtb2ZcLXNpbmdhcG9yZVwpOwor5bel5Lq66buoID4gd29ya2VycycnXC1wYXJ0eVwtXChzaW5nYXBvcmVcLW9wcG9zaXRpb25cLXBhcnR5XCk7Civmlq/kvanmnpcgPiBzcGVsbGluZ1wtXChlZ1wsXC1zcGVsbGluZ1wtZW50ZXJ0YWlubWVudFwtZ3JvdXBcKTsKK+ebp+azsOaEmiA+IHJvaFwtdGFlXC13b29cLVwoZm9ybWVyXC1zb3V0aFwta29yZWFuXC1wcmVzaWRlbnRcKTsKK+m9iueZveefsyA+IG5hbWVcLW9mXC1hXC1mYW1vdXNcLWNoaW5lc2VcLWFydGlzdFwsXC1xaVwtYmFpXC1zaGk7CivllYbli5npg6ggPiBjb21tZXJjZVwtZGVwYXJ0bWVudFwtXChvZlwtdGhlXC11c1wtZ292ZXJubWVudFwpOwor6ICB5Ly05YWSID4gXChvZlwtYW5cLW9sZFwtbWFycmllZFwtY291cGxlXClcLWh1c2JhbmRcLW9yXC13aWZlOwor5qKG5a2Q6IWUID4gYVwtZ2VuZXJhbFwtdGVybVwtZm9yXC1sb2NhbFwtb3BlcmFzXC1pblwtc2hhbmd4aTsKK+aiheiYreiKsyA+IG5hbWVcLW9mXC1hXC12ZXJ5XC1mYW1vdXNcLWJlaWppbmdcLW9wZXJhXC1hcnRpc3Q7CivooYzmlL/pmaIgPiBleGVjdXRpdmVcLXl1YW5cLVwoZ292ZXJubWVudFwtYm9keVwtaW5cLXRhaXdhblwpOwor5p2w5L2b6IyyID4gXChqYW1lc1wpXC1qZWZmb3Jkc1wtXCh1c1wtc2VuYXRvclwtZnJvbVwtdmVybW9udFwpOwor576F5biD5rOKID4gbG9wXC1ub3JcLVwobnVjbGVhclwtdGVzdGluZ1wtc2l0ZVwtaW5cLXhpbmppYW5nXCk7CivmsJHpgLLpu6ggPiBkcHBcLVwoZGVtb2NyYXRpY1wtcHJvZ3Jlc3NpdmVcLXBhcnR5XCxcLXRhaXdhblwpOwor55m96Iqx6JuHID4gbG9uZ1wtbm9zZWRcLXBpdFwtdmlwZXJcLVwoYWdraXN0cm9kb25cLWFjdXR1c1wpOwor55y+6K2w5ZOhID4gbWVtYmVyXC1vZlwtdGhlXC11c1wtaG91c2VcLW9mXC1yZXByZXNlbnRhdGl2ZXM7CivpgoHnp5Hoo6EgPiBcKG1pa2VcKVwtbWNjdXJyeVwtXCh3aGl0ZVwtaG91c2VcLXNwb2tlc3BlcnNvblwpOwor5aCx5ZGK5pyDID4gcHVibGljXC1sZWN0dXJlXC1cKHdpdGhcLWd1ZXN0XC1zcGVha2Vyc1wsXC1ldGNcKTsKK+WIqeS8r+abvCA+IFwoY29ubmVjdGljdXRcLXNlbmF0b3JcLWpvc2VwaFwtaVwuXClcLWxpZWJlcm1hbjsKK+m6peenkeijoSA+IFwobWlrZVwpXC1tY2N1cnJ5XC1cKHdoaXRlXC1ob3VzZVwtc3Bva2VzcGVyc29uXCk7CivnpZ7lpbPls7AgPiBuYW1lXC1vZlwtYVwtcGVha1wtYnlcLWNoYW5namlhbmdcLXRocmVlXC1nb3JnZXM7Civnmb3mm4nnh5UgPiBwYWlcLWhzaWFvXC15ZW5cLVwoZGF1Z2h0ZXJcLW9mXC1wYWlcLXBpbmdcLXBpbmdcKTsKK+mHkeaXpeaIkCA+IGtpbVwtaWxcLXN1bmdcLVwoZm9ybWVyXC1ub3J0aFwta29yZWFuXC1sZWFkZXJcKTsKK+WkqualteWKjSA+IGFcLWtpbmRcLW9mXC10cmFkaXRpb25hbFwtY2hpbmVzZVwtc3dvcmRcLXBsYXk7Civlj7jms5Xpg6ggPiBqdXN0aWNlXC1kZXBhcm1lbnRcLVwob2ZcLXRoZVwtdXNcLWdvdmVybm1lbnRcKTsKK+W6q+e0jeWNlyA+IFwoYW5kcmV3XClcLWN1bmFuYW5cLVwoYWxsZWdlZFwtc2VyaWFsXC1raWxsZXJcKTsKK+m7g+W7uuWNlyA+IGpvaG5cLWh1YW5nXC1cKGRlbW9jcmF0aWNcLXBhcnR5XC1mdW5kcmFpc2VyXCk7Civpu4Plsqnls7YgPiBodWFuZ3lhblwtaXNsYW5kXC1cKGluXC10aGVcLXNvdXRoXC1jaGluYVwtc2VhXCk7CivmqZ/pl5zloLEgPiBvZmZpY2lhbFwtXChnb3Zlcm5tZW50XC1vcGVyYXRlZFwpXC1uZXdzcGFwZXI7CivlhaXlrbjnjocgPiBwZXJjZW50YWdlXC1vZlwtY2hpbGRyZW5cLXdob1wtZW50ZXJcLXNjaG9vbDsKK+iMheiHuumFkiA+IG1hb3RhaVwtb3JcLW1haXRhaVwtXChjaGluZXNlXC1zdHJvbmdcLWRyaW5rXCk7CivnjovnvrLkuYsgPiBuYW1lXC1vZlwtYVwtcGVyc29uXCxcLWFcLWZhbW91c1wtY2FsbGlncmFwaGVyOwor6YKK6KeS56eRID4gbGVmdG92ZXJcLWJpdHNcLWFuZFwtcGllY2VzXC1cKG9mXC1pbmR1c3RyaWFsOwor6Zi/5piM5pePID4gdGhlXC1hY2hhbmdcLW5hdGlvbmFsaXR5XC1saXZpbmdcLWluXC15dW5uYW47CivkvanmtJvopb8gPiBcKG5hbmN5XClcLXBlbG9zaVwtXChtZW1iZXJcLW9mXC11c1wtY29uZ3Jlc3NcKTsKK+WQkOmtr+eVqiA+IHRoZVwtdHVyZmFuXC1iYXNpblwsXC1pblwteGluamlhbmdcLXByb3ZpbmNlOwor5Y2K6ISr55SiID4gcGFydGx5XC1yZWxlYXNlZFwtZnJvbVwtcHJvZHVjdGl2ZVwtbGFib3VyOwor57i95pu46KiYID4gZ2VuZXJhbFwtc2VjcmV0YXJ5XC1cKG9mXC1jb21tdW5pc3RcLXBhcnR5XCk7CivmsojlnIvmlL4gPiBjaGluZXNlXC1mb3JlaWduXC1taW5pc3RyeVwtc3Bva2VzcGVyc29uOwor56mG5qGC6IuxID4gbXVcLWd1aVwteWluZ1wtXChuYW1lXC1vZlwtYVwtd29tYW5cLXdhcnJpb3JcKTsKK+Wtq+Wls+WFkiA+IGdyYW5kZGF1Z2h0ZXJcLVwoZGF1Z2h0ZXJcLW9mXC1vbmUnJ3NcLXNvblwpOwor5bCa5oWV5p2wID4gamFtZXNcLXNhc3NlclwtXCh1c1wtYW1iYXNzYWRvclwtdG9cLWNoaW5hXCk7CivloZ7niL7ljZcgPiBcKGV1Z2VuZVwpXC1jZXJuYW5cLVwoYXBvbGxvXC0xN1wtYXN0cm9uYXV0XCk7CivlubTnlavlhZIgPiBuZXdcLXllYXJcLVwob3JcLXNwcmluZ1wtZmVzdGl2YWxcKVwtcGljdHVyZTsKK+mQtemjr+eilyA+IFwiaXJvblwtcmljZVwtYm93bFwiXC1cLVwtXC1zZWN1cmVcLWVtcGxveW1lbnQ7Civog6Hlv5fmmI4gPiBob1wtY2hpXC1taW5oXC1cKHZpZXRuYW1lc2VcLWxlYWRlclwsXC1jaXR5XCk7CivlvpDmgrLptLsgPiBuYW1lXC1vZlwtYVwtZmFtb3VzXC1wYWludGVyXCxcLXh1XC1iZWlob25nOwor6Iqx5pyo6JitID4gaHVhXC1tdVwtbGFuXC1cKG5hbWVcLW9mXC1hXC13b21hblwtd2FycmlvclwpOwor5omT5LiN6YGOID4gbm90XC10b1wtYmVcLWFibGVcLXRvXC1iZWF0XC1vclwtZGVmZWF0XC1zYlwuOwor55m85LqG6KiAID4gXChcInBhc3RcLXRlbnNlXCJcLW9mXC1cOueZvOiogFwpXC1zcG9rZVwtcHVibGljbHk7CivkuI3oh6rph48gPiBub3RcLXRha2VcLWFcLXByb3BlclwtbWVhc3VyZVwtb2ZcLW9uZXNlbGY7CivmioTlvozot68gPiB0b1wtb3V0ZmxhbmtcLWFuZFwtYXR0YWNrXC1mcm9tXC10aGVcLXJlYXI7Civnt6jlubTpq5QgPiBhbm5hbGlzdGljXC1zdHlsZVwtXChpblwtaGlzdG9yaW9ncmFwaHlcKTsKK+WutumEiembniA+ICcnaG9tZVwtdG93blwtY2hpY2tlbicnXC1cKGFcLXR5cGVcLW9mXC1kaXNoXCk7Civnq6DlrZ3lmrQgPiBqb2huXC1jaGFuZ1wtXCh0YWl3YW5cLWZvcmVpZ25cLW1pbmlzdGVyXCk7CivkvobkuI3lj4ogPiB0aGVyZScnc1wtbm90XC1lbm91Z2hcLXRpbWVcLVwodG9cLWRvXC1zdGhcLlwpOwor5q275LiN5LqGID4gcG9ydHVsYWNhXC1zdW5kaWFsXC1cKGFcLXR5cGVcLW9mXC1wbGFudFwpOwor6L+O5pil6IqxID4gd2ludGVyXC1qYXNtaW5lXCxcLWphc21pbnVtXC1udWRpZmxvcnVtOwor5Li75Lq657+BID4gbWFzdGVyXC1cKG9mXC1vbmUnJ3NcLW93blwtZGVzdGlueVwsXC1ldGNcLlwpOwor5ZOI5a+G55OcID4gaGFtaVwtbWVsb25cLVwoYVwtdmFyaWV0eVwtb2ZcLW11c2ttZWxvblwpOwor6LK/5piT6aGNID4gdm9sdW1lXC1vZlwtdHJhZGVcLVwoYmV0d2VlblwtY291bnRyaWVzXCk7CivnuL3li5Xlk6EgPiBnZW5lcmFsXC1tb2JpbGl6YXRpb25cLVwoZm9yXC13YXJcLFwtZXRjXCk7CivltKnpvo3ml48gPiB0aGVcLWJlbmdsb25nXC1cKHBlbmdsdW5nXClcLW5hdGlvbmFsaXR5Owor6Zy4546L6Z6tID4gYVwtcmF0dGxlXC1zdGlja1wtdXNlZFwtaW5cLWZvbGtcLWRhbmNpbmc7Civnmb3mrq3ooLYgPiB0aGVcLWxhcnZhXC1vZlwtc2lsa3dvcm1cLXdpdGhcLWJhdHJ5dGlzOwor5LiN5aSx54K6ID4gY2FuXC1zdGlsbFwtYmVcLWNvbnNpZGVyZWRcLVwodG9cLWJlXC5cLlwuXCk7CivmnIDmg6DlnIsgPiBtb3N0XC1mYXZvcmVkXC1uYXRpb25cLVwodHJhZGVcLXN0YXR1c1wpOwor5Z+66YeR5pyDID4gYVwtZm91bmRhdGlvblwtXChpZVwsXC1hblwtb3JnYW5pemF0aW9uXCk7CivmiZPpjK/kuoYgPiBcInlvdVwtaGF2ZVwtZGlhbGVkXC10aGVcLXdyb25nXC1udW1iZXJcIjsKK+eXheWMheWFkiA+IGFcLXBlcnNvblwtd2hvXC1pc1wtYWx3YXlzXC1mYWxsaW5nXC1pbGw7Civmi4nojqvmlq8gPiBcKHBoaWxpcHBpbmVcLXByZXNpZGVudFwtZmlkZWxcKVwtcmFtb3M7Civog6Hlv5flvLcgPiBqYXNvblwtaHVcLVwodGFpd2FuXC1mb3JlaWduXC1taW5pc3RlclwpOwor5bmr5YCS5b+ZID4gYmVcLW1vcmVcLW9mXC1hXC1oaW5kcmFuY2VcLXRoYW5cLWFcLWhlbHA7Civkv7HmqILpg6ggPiBjbHViXC1cKGllXCxcLWFcLWdyb3VwXC1vclwtb3JnYW5pemF0aW9uXCk7Civli57li5Xnr4AgPiBpbnRlcm5hdGlvbmFsXC1sYWJvclwtZGF5XC1cKG1heVwtZGF5XCk7CivmirHnspfohb8gPiBsYXRjaFwtb25cLXRvXC10aGVcLXJpY2hcLWFuZFwtcG93ZXJmdWw7Civph5HmraPml6UgPiBraW1cLWpvbmdcLWlsXC1cKG5vcnRoXC1rb3JlYW5cLWxlYWRlclwpOwor5LiN5pG46aCtID4gbm90XC1hY3F1YWludGVkXC13aXRoXC10aGVcLXNpdHVhdGlvbjsKK+mtj+S6rOeUnyA+IHdlaVwtamluZ3NoZW5nXC1cKGNoaW5lc2VcLWRpc3NpZGVudFwpOwor5ZCD5LiN5LiKID4gYmVcLXVuYWJsZVwtdG9cLWdldFwtc29tZXRoaW5nXC10b1wtZWF0Owor5qqi5a+f5a6YID4gdGhlXC1wcm9zZWN1dGlvblwtXChpblwtYVwtY291cnRcLWNhc2VcKTsKK+Weg+Wcvui7iiA+IGdhcmJhZ2VcLXRydWNrXC1cKG9yXC1vdGhlclwtdmVoaWNsZVwpOwor5biD5rOV576FID4gYnVmZmFsb1wtXChjaXR5XC1pblwtbmV3XC15b3JrXC1zdGF0ZVwpOwor5YWr5pyD56m0ID4gdGhlXC1laWdodFwtc3RyYXRlZ2ljXC1uZXJ2ZVwtcG9pbnRzOwor6ZaL5pmu5pWmID4gY2FwZVwtdG93blwtXChjaXR5XC1pblwtc291dGhcLWFmcmljYVwpOwor6KaL5LiN5b6XID4gbWF5XC1ub3RcLWJlXC1zZWVuXC1ieVwtb3JcLWV4cG9zZWRcLXRvOwor5Ym16L6m5Lq6ID4gZm91bmRlclwtXChvZlwtYW5cLWluc3RpdHV0aW9uXCxcLWV0Y1wpOwor6YC85L6b5L+hID4gb2J0YWluXC1jb25mZXNzaW9uc1wtYnlcLWNvbXB1bHNpb247CivosqDosqzkurogPiBwZXJzb25cLWluXC1jaGFyZ2VcLVwob2ZcLXNvbWV0aGluZ1wpOwor5Y2B5LiJ57aTID4gdGhlXC10aGlydGVlblwtY29uZnVjaWFuXC1jbGFzc2ljczsKK+eXheifsuWusyA+IHBsYW50XC1kaXNlYXNlc1wtYW5kXC1pbnNlY3RcLXBlc3RzOwor5ZCD5LiN5pyNID4gbm90XC1iZVwtYWNjdXN0b21lZFwtdG9cLWVhdGluZ1wtc3RoOwor6aas5bC85ouJID4gbWFuaWxhXC1cKGNhcGl0YWxcLW9mXC1waGlsaXBwaW5lc1wpOwor5oeJ6Kmy6KqqID4gaXRcLXNob3VsZFwtYmVcLW1lbnRpb25lZFwtdGhhdFwtXC5cLlwuOwor5LiN5b6X5LiNID4gaGF2ZVwtbm9cLWNob2ljZVwtb3JcLW9wdGlvblwtYnV0XC10bzsKK+WMl+S8kOi7jSA+IHRoZVwtbm9ydGhlcm5cLWV4cGVkaXRpb25hcnlcLWFybXk7Civlj6/np7vmpI0gPiBwb3J0YWJsZVwtXChwcm9ncmFtbWluZ1wtbGFuZ3VhZ2VcKTsKK+e2k+a/n+WtuCA+IGVjb25vbWljc1wtXChhc1wtYVwtZmllbGRcLW9mXC1zdHVkeVwpOwor5oSb6Z2i5a2QID4gYmVcLWNvbmNlcm5lZFwtYWJvdXRcLWZhY2VcLXNhdmluZzsKK+WiqOeIvue8vSA+IG1lbGJvdXJuZVwtXChhblwtYXVzdHJhbGlhblwtY2l0eVwpOwor57Si5p2w57SNID4gc29qb3VybmVyXC1cKG1hcnRpYW5cLWxhbmRcLXJvdmVyXCk7Civoq4flvpfkvoYgPiBhYmxlXC10b1wtdGFsa1wtdG9cLW9yXC1nZXRcLW9uXC13aXRoOwor54+t5Li75Lu7ID4gYVwtdGVhY2hlclwtaW5cLWNoYXJnZVwtb2ZcLWFcLWNsYXNzOwor5bCO6Iiq5ZOhID4gbmF2aWdhdG9yXC1cKG9uXC1hXC1wbGFuZVwtb3JcLWJvYXRcKTsKK+ecvuitsOmZoiA+IGhvdXNlXC1vZlwtcmVwcmVzZW50YXRpdmVzXC1cKHVzYVwpOwor55W25LqL5Lq6ID4gcGVyc29uc1wtaW52b2x2ZWRcLW9yXC1pbXBsaWNhdGVkOwor57SF57ag54eIID4gXChyZWRcLWFuZFwtZ3JlZW5cKVwtdHJhZmZpY1wtbGlnaHQ7Civph43opIfnr4AgPiByZXBlYXRlZFwtc2VnbWVudFwtXChuZXR3b3JraW5nXCk7CivlhbXlt6Xlu6AgPiBtdW5pdGlvbnNcLW9yXC1vcmRuYW5jZVwtZmFjdG9yeTsKK+WNiui6q+WDjyA+IGhhbGZcLWxlbmd0aFwtcGhvdG9cLW9yXC1wb3J0cmFpdDsKK+eZvOmbu+mHjyA+IFwoZ2VuZXJhdGVkXClcLWVsZWN0cmljYWxcLWVuZXJneTsKK+S/neWuieaXjyA+IHRoZVwtYmFvYW5cLVwocGFvYW5cKVwtbmF0aW9uYWxpdHk7CivmsZ/mvqTmsJEgPiBqaWFuZ1wtemVtaW5cLVwoY2hpbmVzZVwtcHJlbWllclwpOwor5bm05aSc6aOvID4gbmV3XC15ZWFyJydzXC1ldmVcLWZhbWlseVwtZGlubmVyOwor5p2O55m76LydID4gbGVlXC10ZW5nXC1odWlcLVwodGFpd2FuXC1sZWFkZXJcKTsKK+Wkp+iHqueEtiA+IG5hdHVyZVwtXChhc1wtaW5cLW1vdGhlclwtbmF0dXJlXCk7Civnq4vmlrnnsbMgPiBjdWJpY1wtbWV0ZXJcLVwodW5pdFwtb2ZcLXZvbHVtZVwpOwor5ZCD5LiN5raIID4gYmVcLXVuYWJsZVwtdG9cLXN0YW5kXC1cKGV4ZXJ0aW9uOwor5oqV56Wo56uZID4gcG9sbGluZ1wtc3RhdGlvblwtXChmb3JcLWFcLXZvdGVcKTsKK+W+l+elqOeOhyA+IHBlcmNlbnRhZ2VcLW9mXC12b3Rlc1wtb2J0YWluZWQ7CivlkIPkuI3kvY8gPiBiZVwtdW5hYmxlXC10b1wtYmVhclwtb3JcLXN1cHBvcnQ7Civoh6rmsrvljYAgPiBhdXRvbm9tb3VzXC1yZWdpb25cLVwoaW5cLWNoaW5hXCk7CivlvLXntJTlpoIgPiBcKGFtZXJpY2FuXC1hdXRob3JcKVwtaXJpc1wtY2hhbmc7Civnj63li5nmnIMgPiBhXC1yb3V0aW5lXC1tZWV0aW5nXC1vZlwtYVwtc3F1YWQ7CivmlrDlvrfoo6EgPiBuZXdcLWRlbGhpXC1cKGNhcGl0YWxcLW9mXC1pbmRpYVwpOwor5Y+N5bCN6buoID4gb3Bwb3NpdGlvblwtXChwb2xpdGljYWxcKVwtcGFydHk7CivoqqrmmI7mm7ggPiBzeW5vcHNpc1wtXChvZlwtYVwtcGxheVwtb3JcLWZpbG1cKTsKK+WPm+S6gue9qiA+IHRoZVwtY3JpbWVcLW9mXC1hcm1lZFwtcmViZWxsaW9uOwor5beu5b6X5aSaID4gZmFsbFwtc2hvcnRcLWJ5XC1hXC1sYXJnZVwtYW1vdW50Owor5Y+w54Gj6KmxID4gdGFpd2FuZXNlXC1jaGluZXNlXC1cKGxhbmd1YWdlXCk7CivokYnliKnmrL0gPiBcKHJ1c3NpYW5cLXByZXNpZGVudFwpXC15ZWx0c2luOwor6buD5rWm5rGfID4gaHVhbmdwdVwtcml2ZXJcLVwoaW5cLXNoYW5naGFpXCk7Civog4zljIXoorEgPiBoYXZlXC1hXC13ZWlnaHRcLW9uXC1vbmUnJ3NcLW1pbmQ7CivloLHmiLblj6MgPiBhcHBseVwtZm9yXC1hXC1yZXNpZGVudFwtcGVybWl0Owor5ZyL6Zqb57SaID4gXChhdFwtYW5cKVwtaW50ZXJuYXRpb25hbFwtbGV2ZWw7CivlkIPkuI3kvoYgPiBub3RcLWJlXC1mb25kXC1vZlwtY2VydGFpblwtZm9vZDsKK+aTmuWgseWwjiA+IGFjY29yZGluZ1wtdG9cLVwobmV3c1wpXC1yZXBvcnRzOwor55eF5q+S5a24ID4gdmlyb2xvZ3lcLVwoc3R1ZHlcLW9mXC12aXJ1c2VzXCk7CivogIzkuI3pnIAgPiB3aXRob3V0XC1uZWVkaW5nXC1cKHRvXC1zb1wtc3RoXCk7CivkuqTmj5vmqZ8gPiBzd2l0Y2hcLVwodGVsZWNvbW11bmljYXRpb25zXCk7CivlpKfpmbjoqbEgPiBtYWlubGFuZFwtY2hpbmVzZVwtXChsYW5ndWFnZVwpOwor5Lqk5o+b5ZmoID4gXCh0ZWxlY29tXC1vclwtbmV0d29ya1wpXC1zd2l0Y2g7CivpgJroqIrnpL4gPiBhXC1uZXdzXC1zZXJ2aWNlXC1cKGVnXCxcLXhpbmh1YVwpOwor5oSb5aW96ICFID4gbG92ZXJcLVwob2ZcLWFydFwsXC1zcG9ydHNcLFwtZXRjXCk7Civlhazlronpg6ggPiBtaW5pc3RyeVwtb2ZcLXB1YmxpY1wtc2VjdXJpdHk7CivmirHkuI3lubMgPiBiZVwtb3V0cmFnZWRcLWJ5XC1hblwtaW5qdXN0aWNlOwor55S35a2Q5ryiID4gbWFuXC1cKGlcLmVcLlwtbWFubHlcLFwtbWFzY3VsaW5lXCk7Civlt7TlhZLni5cgPiBwZWtpbmdlc2VcLVwoYVwtYnJlZWRcLW9mXC1kb2dcKTsKK+WtmOi7iuiZlSA+IHBhcmtpbmdcLWxvdFwtXChmb3JcLWJpY3ljbGVzXCk7CivpvLvniZvlhZIgPiBoYXJkZW5lZFwtbXVjdXNcLWluXC1ub3N0cmlsczsKK+ahg+iKsemBiyA+IGx1Y2tcLXdpdGhcLXRoZVwtb3Bwb3NpdGVcLXNleDsKK+W8l+WhnuWlhyA+IHZlcnNhY2VcLVwoZmFzaGlvblwtZGVzaWduZXJcKTsKK+aZrumAmuipsSA+IG1hbmRhcmluXC1cKGNvbW1vblwtbGFuZ3VhZ2VcKTsKK+W5vuW5tOS+hiA+IGZvclwtdGhlXC1wYXN0XC1zZXZlcmFsXC15ZWFyczsKK+mgpOWSjOWckiA+IHN1bW1lclwtcGFsYWNlXC1cKGluXC1iZWlqaW5nXCk7CivppqzkvobkurogPiBtYWxheXNpYW5cLXBlcnNvblwtb3JcLXBlb3BsZTsKK+W6leeJueW+iyA+IGRldHJvaXRcLVwoYVwtY2l0eVwtaW5cLXRoZVwtdXNcKTsKK+aDheazgeS4iyA+IHVuZGVyXC1cKHRoaXNcKVwtY2lyY3Vtc3RhbmNlczsKK+a6q+WTpeiPryA+IHZhbmNvdXZlclwtXChjaXR5XC1pblwtY2FuYWRhXCk7Civnmb3poK3nv4EgPiByb290XC1vZlwtY2hpbmVzZVwtcHVsc2F0aWxsYTsKK+S4reaWh+eJiCA+IGNoaW5lc2VcLVwobGFuZ3VhZ2VcKVwtdmVyc2lvbjsKK+mrmOS4reeUnyA+IHNlbmlvclwtaGlnaFwtc2Nob29sXC1zdHVkZW50Owor5p2/576955CDID4gYmF0dGxlZG9yZVwtYW5kXC1zaHV0dGxlY29jazsKK+WPg+WFqemZoiA+IGJvdGhcLWhvdXNlc1wtb2ZcLXVzXC1jb25ncmVzczsKK+eZn+ieuueXpyA+IGNob2xlcmFcLVwod2l0aFwtZGVoeWRyYXRpb25cKTsKK+mAj+mAmuaApyA+IHRyYW5zcGFyZW5jeVwtXChuZXR3b3JraW5nXCk7Civnh5/mpa3poY0gPiBzdW1cLW9yXC12b2x1bWVcLW9mXC1idXNpbmVzczsKK+efruWAi+WFkiA+IGFcLXBlcnNvblwtb2ZcLXNob3J0XC1zdGF0dXJlOwor5qC45aSn5ZyLID4gYVwtbnVjbGVhclwtcG93ZXJcLVwoY291bnRyeVwpOwor5biM6IeY6KqeID4gXChtb2Rlcm5cKVwtZ3JlZWtcLVwobGFuZ3VhZ2VcKTsKK+aZgumWk+WFpyA+IHdpdGhpblwtXChhXC1wZXJpb2RcLW9mXC10aW1lXCk7CivkuIvlt6XlpKsgPiB0b1wtcHV0XC1pblwtdGltZVwtYW5kXC1lbmVyZ3k7Civml6XmnKzkurogPiBqYXBhbmVzZVwtcGVyc29uXC1vclwtcGVvcGxlOwor54Sh6ZmQ5pyfID4gdW5saW1pdGVkXC1cKHRpbWVcKVwtZHVyYXRpb247CivluJXomK3ljaEgPiBwYWxhbmthXC1cKGFcLXBlcnNvbmFsXC1uYW1lXCk7CivkurrmsJHluaMgPiBjaGluZXNlXC11bml0XC1vZlwtY3VycmVuY3k7CivmtYHmsJPnvaogPiB0aGVcLWNyaW1lXC1vZlwtaG9vbGlnYW5pc207CivpjITpn7PmqZ8gPiBcKHRhcGVcKVwtcmVjb3JkaW5nXC1tYWNoaW5lOwor5Luj5LmL5LulID4gXChoYXNcLWJlZW5cKVwtcmVwbGFjZWRcLXdpdGg7CivorormiLLms5UgPiBwZXJmb3JtXC1jb25qdXJpbmdcLXRyaWNrczsKK+eZvOihjOmhjSA+IFwocGVyaW9kaWNhbFwpXC1jaXJjdWxhdGlvbjsKK+WNgeS4ieaXpSA+IHRoaXJ0aWV0aFwtZGF5XC1vZlwtYVwtbW9udGg7CivkuIvljYrouqsgPiBsb3dlclwtaGFsZlwtb2ZcLW9uZScnc1wtYm9keTsKK+WNsOatkOiqniA+IGluZG9cLWV1cm9wZWFuXC1cKGxhbmd1YWdlXCk7CivlhafmlL/pg6ggPiBtaW5pc3RyeVwtb2ZcLXRoZVwtaW50ZXJpb3I7CivljbDmrZDmlocgPiBpbmRvXC1ldXJvcGVhblwtXChsYW5ndWFnZVwpOwor54Sh6buo5rS+ID4gcG9saXRpY2FsbHlcLXVuYWZmaWxpYXRlZDsKK+iuiumbu+ermSA+IFwodHJhbnNmb3JtZXJcKVwtc3Vic3RhdGlvbjsKK+acqOS5g+S8iiA+IG11bW15XC1cKHByZXNlcnZlZFwtY29ycHNlXCk7CivlpJbkuqTpg6ggPiBmb3JlaWduXC1hZmZhaXJzXC1taW5pc3RyeTsKK+mBsua1qeeUsCA+IGNoaW5lc2VcLWRlZmVuc2VcLW1pbmlzdGVyOwor5YyX5rqr5bi2ID4gdGhlXC1ub3J0aFwtdGVtcGVyYXRlXC16b25lOwor5omT6Zu76KmxID4gdG9cLW1ha2VcLWFcLXRlbGVwaG9uZVwtY2FsbDsKK+atoueXm+azlSA+IG1ldGhvZFwtb2ZcLXJlbGlldmluZ1wtcGFpbjsKK+WMl+WNiueQgyA+IHRoZVwtbm9ydGhlcm5cLWhlbWlzcGhlcmU7Civpm5nntZ7nt5ogPiB1bnNoaWVsZGVkXC10d2lzdGVkXC1wYWl0Owor5YyF5om/5Yi2ID4gcmVzcG9uc2libGVcLWNyZXdcLXN5c3RlbTsKK+aSreaUvuapnyA+IHBsYXllclwtXChlXC5nXC5cLWNkXC1wbGF5ZXJcKTsKK+aTmue1seioiCA+IGFjY29yZGluZ1wtdG9cLXN0YXRpc3RpY3M7CivnlZnlrbjnlJ8gPiBzdHVkZW50XC1zdHVkeWluZ1wtYWJyb2FkOwor5aSa5bm05L6GID4gZm9yXC10aGVcLXBhc3RcLW1hbnlcLXllYXJzOwor5Lit56eL56+AID4gdGhlXC1taWRcLWF1dHVtblwtZmVzdGl2YWw7Civppqzot6/lj6MgPiBpbnRlcnNlY3Rpb25cLVwob2ZcLXJvYWRzXCk7CivmiLTntq3mlq8gPiBkYXZpc1wtXChlbmdsaXNoXC1zdXJuYW1lXCk7CivntIXmqJPlpKIgPiBhXC1kcmVhbVwtb2ZcLXJlZFwtbWFuc2lvbnM7CivpgY7kuI3ljrsgPiBtYWtlXC1saWZlXC1kaWZmaWN1bHRcLWZvcjsKK+aDheWgseiZlSA+IHNvdXJjZVwtXChvZlwtaW5mb3JtYXRpb25cKTsKK+iFkOaVl+e9qiA+IHRoZVwtY3JpbWVcLW9mXC1jb3JydXB0aW9uOwor55m96JuH5YKzID4gdGFsZVwtb2ZcLXRoZVwtd2hpdGVcLXNuYWtlOwor5Y2K5oiQ5ZOBID4gc2VtaVwtbWFudWZhY3R1cmVkXC1nb29kczsKK+WllOmgreWFkiA+IHNvbWV0aGluZ1wtdG9cLXN0cml2ZVwtZm9yOwor5Lit6L2J56uZID4gaHViXC1cKG5ldHdvcmtcLWVxdWlwbWVudFwpOwor6aaZ5riv5Lq6ID4gaG9uZ1wta29uZ1wtcGVyc29uXHxwZW9wbGU7CivmhZXpgZPlj4sgPiByZWxpZ2lvdXNcLWludmVzdGlnYXRvcjsKK+WJneaOoeavlCA+IHN0cmlwcGluZ1wtdG9cLW9yZVwtcmF0aW87Civnm67nmoTlnLAgPiBkZXN0aW5hdGlvblwtXChsb2NhdGlvblwpOwor5ZyL5YuZ6ZmiID4gc3RhdGVcLWRlcGFydG1lbnRcLVwodXNhXCk7CivljYHkupTlhIQgPiBvbmVcLWFuZFwtYVwtaGFsZlwtYmlsbGlvbjsKK+e0heeHkuiCiSA+IHJlZFwtY29va2VkXC1cKHBvcmtcKVwtbWVhdDsKK+WFrOWuieWxgCA+IHB1YmxpY1wtc2VjdXJpdHlcLWJ1cmVhdTsKK+eZvOeXheeOhyA+IGluY2lkZW5jZVwtb2ZcLWFcLWRpc2Vhc2U7CivnlpHllY/lj6UgPiBpbnRlcnJvZ2F0aXZlXC1zZW50YW5jZTsKK+atpOS4gOaZgiA+IHRoYXRcLXdhc1wtb25lXC1zaXR1YXRpb247CivkuI3lpb3mg7kgPiBub3RcLXRvXC1iZVwtdHJpZmxlZFwtd2l0aDsKK+S4jeW+l+W3siA+IGFjdFwtYWdhaW5zdFwtb25lJydzXC13aWxsOwor5LiK5Y2K5bm0ID4gZmlyc3RcLWhhbGZcLVwob2ZcLWFcLXllYXJcKTsKK+S4jeimgeiHiSA+IGhhdmVcLW5vXC1zZW5zZVwtb2ZcLXNoYW1lOwor6IOM5Zyw6aKoID4gYmVoaW5kXC1zb21lYm9keScnc1wtYmFjazsKK+i/keW5tOS+hiA+IGZvclwtdGhlXC1wYXN0XC1mZXdcLXllYXJzOwor5YW26Ieq6LqrID4gb25lJydzXC1vd25cLVwocmVzcGVjdGl2ZVwpOwor54Gr54Sw5bGxID4gdGhlXC1tb3VudGFpblwtb2ZcLWZsYW1lczsKK+W3peS9nOermSA+IFwoY29tcHV0ZXJcKVwtd29ya3N0YXRpb247CivljbDmrZDkurogPiBpbmRvXC1ldXJvcGVhblwtXChwZXJzb25cKTsKK+WdpuWFi+i7iiA+IHRhbmtcLVwoYXJtb3JlZFwtdmVoaWNsZVwpOwor5LiN5YOP5qijID4gaW5cLW5vXC1zaGFwZVwtdG9cLWJlXC1zZWVuOwor6K6K5YiG5rOVID4gY2FsY3VsdXNcLW9mXC12YXJpYXRpb25zOwor6KW/6YGK6KiYID4gcGlsZ3JpbWFnZVwtdG9cLXRoZVwtd2VzdDsKK+eVoualreeUnyA+IGdyYWR1YXRlXC1cKG9mXC1hXC1zY2hvb2xcKTsKK+iDjOm7kemNiyA+IHRvXC1iZVwtbWFkZVwtYVwtc2NhcGVnb2F0Owor6Z2I5pWP5bqmID4gXChsZXZlbFwtb2ZcKVwtc2Vuc2l0aXZpdHk7CivlvbzkuIDmmYIgPiB0aGF0XC13YXNcLW9uZVwtc2l0dWF0aW9uOwor6Luf56Gs5Lu2ID4gc29mdHdhcmVcLWFuZFwtaGFyZHdhcmU7CivnhrHploDosqggPiBnb29kc1wtaW5cLWdyZWF0XC1kZW1hbmQ7CivpgJrkv6Hph48gPiBjb21tdW5pY2F0aW9uc1wtdm9sdW1lOwor56Wd6LOA6KmeID4gY29uZ3JhdHVsYXRvcnlcLXNwZWVjaDsKK+W5vuWNgeW5tCA+IHNldmVyYWxcLXRlbnNcLW9mXC15ZWFyczsKK+avlOaWueiqqiA+IHRvXC1tYWtlXC1hblwtYW5hbG9neVwuXC5cLjsKK+m6peiKveezliA+IG1hbHRvc2VcLVwoc3dlZXRcLXN5cnVwXCk7Civnvo7oga/npL4gPiBhc3NvY2lhdGVkXC1wcmVzc1wtXChhcFwpOwor5o6o6Jam5L+hID4gcmVjb21tZW5kYXRpb25cLWxldHRlcjsKK+W5vuWkqeS+hiA+IGZvclwtdGhlXC1wYXN0XC1mZXdcLWRheXM7CivmipXkuobnpaggPiBwYXN0XC10ZW5zZVwtb2ZcLXRvXC12b3RlOwor6IKv5bC86L+qID4ga2VubmVkeVwtXChwcm9wZXJcLW5hbWVcKTsKK+S/neitt+WNgCA+IGNvbnNlcnZhdGlvblwtZGlzdHJpY3Q7Civlpaflvrfos70gPiB0aGVcLW9keXNzZXlcLFwtYnlcLWhvbWVyOwor6LaK5Y2X6KqeID4gdmlldG5hbWVzZVwtXChsYW5ndWFnZVwpOwor5Zub5bm05YmNID4gZm91clwteWVhcnNcLXByZXZpb3VzbHk7Civoo73pgKDllYYgPiBtYW51ZmFjdHVyaW5nXC1jb21wYW55Owor5Y+N6Z2p5ZG9ID4gY291bnRlclwtcmV2b2x1dGlvbmFyeTsKK+iAgeWFqeWPoyA+IGFuXC1vbGRcLW1hcnJpZWRcLWNvdXBsZTsKK+aLnOaKiuWtkCA+IGJlY29tZVwtc3dvcm5cLWJyb3RoZXJzOwor5YyX5a+S5bi2ID4gdGhlXC1ub3J0aFwtZnJpZ2lkXC16b25lOwor5YWr6Lev6LuNID4gdGhlXC1laWdodGhcLXJvdXRlXC1hcm15Owor5Y2X5YyX5qW1ID4gc291dGhcLWFuZFwtbm9ydGhcLXBvbGVzOwor6JGj5LqL6ZW3ID4gY2hhaXJtYW5cLW9mXC10aGVcLWJvYXJkOwor5LiN6KGM5LqGID4gb25cLXRoZVwtcG9pbnRcLW9mXC1kZWF0aDsKK+WNoeilv+WwvCA+IGNhc3NpbmlcLVwocHJvcGVyXC1uYW1lXCk7CivlhYnno4Hnop8gPiBtYWduZXRvXC1vcHRpY2FsXC1kaXNrOwor5Y2a6Ka95pyDID4gXChpbnRlcm5hdGlvbmFsXClcLWZhaXI7CivkuIDoiKzmgKcgPiBcKGluXClcLWdlbmVyYWxcLVwodGVybXNcKTsKK+mAi+mAg+iXqiA+IHJlZnVnZVwtZm9yXC1mdWdpdGl2ZXM7Civnmb3nnLznj6AgPiB0aGVcLXdoaXRlXC1vZlwtdGhlXC1leWU7CivmjZXon7LokYkgPiBpbnNlY3RcLWNhdGNoaW5nXC1sZWFmOwor5LiN6ZuF6KeAID4gb2ZmZW5zaXZlXC10b1wtdGhlXC1leWU7CivpmbPov7Dlj6UgPiBkZWNsYXJhdGl2ZVwtc2VudGVuY2U7CivpgJnlgIvmnIggPiB0aGlzXC1cKGN1cnJlbnRcKVwtbW9udGg7CivkuIDmuIXml6kgPiBlYXJseVwtaW5cLXRoZVwtbW9ybmluZzsKK+WAjemgu+WZqCA+IGZyZXF1ZW5jeVwtbXVsdGlwbGllcjsKK+mgmOWwjuasiiA+IGxlYWRlcnNoaXBcLWF1dGhvcml0eTsKK+e0gOW/teaXpSA+IGRheVwtb2ZcLWNvbW1lbW9yYXRpb247Civnmb3mo4nntJkgPiBzdGVuY2lsXC10aXNzdWVcLXBhcGVyOwor5oyq56qp5YWSID4gdG9cLW1vdmVcLVwodG9cLWFcLWhvdXNlXCk7CivlvrflnIvkurogPiBnZXJtYW5cLXBlcnNvblx8cGVvcGxlOwor5aSn5riF5pepID4gZWFybHlcLWluXC10aGVcLW1vcm5pbmc7Civnmb7kuovpgJogPiBrbm93bGVkZ2VhYmxlXC1wZXJzb247CivkuI3mrbvlv4MgPiB1bndpbGxpbmdcLXRvXC1naXZlXC11cDsKK+ekpuazieawtCA+IG1pbmVyYWxcLXNwcmluZ1wtd2F0ZXI7CivlkIPkuI3kuIsgPiBub3RcLWZlZWxcLWxpa2VcLWVhdGluZzsKK+iQrOe2ree2siA+IHdvcmxkXC13aWRlXC13ZWJcLVwod3d3XCk7Civlr6bpq5TlsaQgPiBwaHlzaWNhbFwtbGF5ZXJcLVwob3NpXCk7Civnj77pmo7mrrUgPiBhdFwtdGhlXC1wcmVzZW50XC1zdGFnZTsKK+WPm+Wci+e9qiA+IHRoZVwtY3JpbWVcLW9mXC10cmVhc29uOwor6Yym5qiZ6LO9ID4gY2hhbXBpb25zaGlwXC1jb250ZXN0Owor56u254it5YqbID4gY29tcGV0aXRpdmVcLXN0cmVuZ3RoOwor6YGL5YuV5pyDID4gYVwtc3BvcnRzXC1jb21wZXRpdGlvbjsKK+i3kem+jeWllyA+IHRvXC1wbGF5XC1hXC1zbWFsbFwtcm9sZTsKK+W+t+mbt+eIviA+IFwoanVuZVwtdGV1ZmVsXClcLWRyZXllcjsKK+iyoeaUv+mDqCA+IG1pbmlzdHJ5XC1vZlwtZmluYW5jZTsKK+W7o+WRiuWVhiA+IGFkdmVydGlzaW5nXC1jb21wYW55Owor5oWw5a6J5ammID4gY29tZm9ydFwtd29tYW5cfHdvbWVuOwor5oqY5bCE546HID4gaW5kZXhcLW9mXC1yZWZyYWN0aW9uOwor5bm05Luj5YidID4gYmVnaW5uaW5nXC1vZlwtYW5cLWFnZTsKK+mYsuempuaApyA+IGRlZmVuc2l2ZVwtXCh3ZWFwb25zXCk7CivmiZPmqavngq4gPiBzcGVha1wtdW53YXJyYW50ZWRseTsKK+eZvOiogOasiiA+IHRoZVwtcmlnaHRcLW9mXC1zcGVlY2g7CivlubTkuYvkuYUgPiBwZXJpb2RcLW9mXC1cLlwuXC5cLXllYXJzOwor5LiN5Lit5oSPID4gbm90XC10b1wtb25lJydzXC1saWtpbmc7Civnmb7liIbliLYgPiBodW5kcmVkXC1tYXJrXC1zeXN0ZW07CivliIbmnpDlrrYgPiBcKHBvbGl0aWNhbFwpXC1hbmFseXN0Owor56uL5rOV5pyDID4gbGVnaXNsYXRpdmVcLWNvdW5jaWw7CivlvJXlipvloLQgPiBncmF2aXRhdGlvbmFsXC1maWVsZDsKK+a2iOiAl+mHjyA+IHJhdGVcLW9mXC1jb25zdW1wdGlvbjsKK+aguOmbu+ermSA+IG51Y2xlYXJcLXBvd2VyXC1wbGFudDsKK+ihqOmdouWMliA+IGNvbWVcLXRvXC10aGVcLXN1cmZhY2U7Civpm7voqbHmqZ8gPiB0ZWxlcGhvbmVcLWVxdWlwbWVudDsKK+e4vee1seW6nCA+IHByZXNpZGVudGlhbFwtcGFsYWNlOwor5qmL5o6l5ZmoID4gYnJpZGdlXC1cKG5ldHdvcmtpbmdcKTsKK+mmrOS+huaWhyA+IG1hbGFzaWFuXC1cKGxhbmd1YWdlXCk7CivkuI3lvpfkuoYgPiBkZXNwZXJhdGVseVwtc2VyaW91czsKK+adv+aigeapiyA+IHBsYXRlXC1naXJkZXJcLWJyaWRnZTsKK+agvei3n+mgrSA+IHRvXC1zdWZmZXJcLWFcLXNldGJhY2s7CivmoLjlt6XnqIsgPiBudWNsZWFyXC1lbmdpbmVlcmluZzsKK+WuieeQhuacgyA+IHVuXC1zZWN1cml0eVwtY291bmNpbDsKK+aTuumWgOmdoiA+IGtlZXBcLXVwXC1hcHBlYXJhbmNlczsKK+i3r+mAj+ekviA+IHJldXRlcnNcLW5ld3NcLWFnZW5jeTsKK+enkeWtuOmZoiA+IGFjYWRlbXlcLW9mXC1zY2llbmNlczsKK+atpemAsuWItiA+IHN0ZXBcLWJ5XC1zdGVwXC1zeXN0ZW07CivliY3omIfoga8gPiBmb3JtZXJcLXNvdmlldFwtdW5pb247CivkuI3lnKjmhI8gPiBwYXlcLW5vXC1hdHRlbnRpb25cLXRvOwor5aSW5a2r5aWzID4gZGF1Z2h0ZXInJ3NcLWRhdWdodGVyOwor5Yaw6YaL6YW4ID4gZ2xhY2lhbFwtYWNldGljXC1hY2lkOwor5raI54KO6JelID4gYW50aWJpb3RpY1wtbWVkaWNpbmU7Civlp5Tlk6HplbcgPiBoZWFkXC1vZlwtYVwtY29tbWl0dGVlOwor5oOF5aCx5bGAID4gaW50ZWxsaWdlbmNlXC1hZ2VuY3k7CivljIXouqvlt6UgPiBpbmRlbnR1cmVkXC1sYWJvdXJlcjsKK+axuuitsOahiCA+IFwocGFzc1wtYVwpXC1yZXNvbHV0aW9uOwor5YyX5Lqs5Lq6ID4gcGVyc29uXC1mcm9tXC1iZWlqaW5nOwor6LKg6LKs5Lu7ID4gcmVzcG9uc2liaWxpdHlcLWZvcjsKK+S4reWxseijnSA+IGNoaW5lc2VcLXR1bmljXC1zdWl0Owor57es55S46KqeID4gYnVybWVzZVwtXChsYW5ndWFnZVwpOwor5pS/5rK754qvID4gcG9saXRpY2FsXC1wcmlzb25lcjsKK+W5tOS7peS+hiA+IHNpbmNlXC10aGVcLXllYXJcLVwuXC5cLjsKK+aWsOiPr+ekviA+IHhpbmh1YVwtbmV3c1wtYWdlbmN5Owor5LiN5Lit55SoID4gdW5maXRcLWZvclwtYW55dGhpbmc7CivpgLLkuIDmraUgPiBcKG9uZVwtc3RlcFwpXC1mdXJ0aGVyOwor5o+Q5L6b5ZWGID4gcHJvdmlkZXJcLVwoY29tcGFueVwpOwor5Y6f6JiH6IGvID4gZm9tZXJcLXNvdmlldFwtdW5pb247CivlpKnlronploAgPiB0aWFuYW5tZW5cLVwoc3F1YXJlXCk7CivkuI3lj5fnkIYgPiByZWplY3RcLWFcLWNvbXBsYWludDsKK+eZvOmBlOWciyA+IGRldmVsb3BpbmdcLWNvdW50cnk7Civot5HorabloLEgPiB0b1wtcnVuXC1mb3JcLXNoZWx0ZXI7Civnmb3plovmsLQgPiBwbGFpblwtYm9pbGVkXC13YXRlcjsKK+aLm+W+heacgyA+IFwocHJlc3NcKVwtY29uZmVyZW5jZTsKK+aHt+S/hOaYjiA+IHd5b21pbmdcLVwodXNcLXN0YXRlXCk7CivljaHmi4nlpYcgPiBrYXJhY2hpXC1cKHBha2lzdGFuXCk7CivljYropo/nrqEgPiBzZW1pY2lyY3VsYXJcLWNhbmFsOwor6aas5L6G6KqeID4gbWFsYXlzaWFuXC1sYW5ndWFnZTsKK+avlOS4jeS4iiA+IGNhbicndFwtY29tcGFyZVwtd2l0aDsKK+Wci+mYsumDqCA+IGRlZmVuc2VcLWRlcGFydG1lbnQ7CivotpXkuI3kuIogPiBjYW4nJ3RcLWtlZXBcLXVwXC13aXRoOwor5ou/5Li75oSPID4gdG9cLW1ha2VcLWFcLWRlY2lzaW9uOwor5bi45aeU5pyDID4gc3RhbmRpbmdcLWNvbW1pdHRlZTsKK+Wkp+WtuOeUnyA+IHVuaXZlcnNpdHlcLXN0dWRlbnQ7CivngI/opr3lmaggPiBicm93c2VyXC1cKHNvZnR3YXJlXCk7CivkuJbntIDmnKsgPiBlbmRcLW9mXC10aGVcLWNlbnR1cnk7Civmk4HorbfogIUgPiBzdXBwb3J0ZXJcLVwocGVyc29uXCk7CivlnIvli5nljb8gPiBzZWNyZXRhcnlcLW9mXC1zdGF0ZTsKK+WNiui8qeWtkCA+IGhhbGZcLW9mXC1hXC1saWZldGltZTsKK+ermeeuoeeQhiA+IHN0YXRpb25cLW1hbmFnZW1lbnQ7CivoiqzomK3oqp4gPiBmaW5uaXNoXC1cKGxhbmd1YWdlXCk7Civororms5XlhZIgPiB0cnlcLWRpZmZlcmVudFwtd2F5czsKK+a1t+epuui7jSA+IG5hdnlcLWFuZFwtYWlyXC1mb3JjZTsKK+e0sOiPjOaIsCA+IGJpb2xvZ2ljYWxcLXdhcmZhcmU7CivnkZ7lhbjoqp4gPiBzd2VkaXNoXC1cKGxhbmd1YWdlXCk7Civmtonlq4zkurogPiBcKGNyaW1pbmFsXClcLXN1c3BlY3Q7CivkvbXmjbLmqZ8gPiByaWJib25cLWxhcFwtbWFjaGluZTsKK+WIpeWLlemaiiA+IHNwZWNpYWxcLWRldGFjaG1lbnQ7CivnoJTnqbbmiYAgPiByZXNlYXJjaFwtaW5zdGl0dXRlOwor5bm06LyV5YyWID4gbWFrZVwtbW9yZVwteW91dGhmdWw7CivliqDpgJ/lmaggPiBhY2NlbGVyYXRvclwtXChjb21wXCk7CivkuI3nrYnomZ8gPiBzaWduXC1vZlwtaW5lcXVhbGl0eTsKK+ilv+WNiueQgyA+IHdlc3Rlcm5cLWhlbWlzcGhlcmU7CivmoLjmioDooZMgPiBudWNsZWFyXC10ZWNobm9sb2d5Owor5aCx5YuZ5ZOhID4gdGVsZWdyYXBoXC1vcGVyYXRvcjsKK+WFieazoumVtyA+IG9wdGljYWxcLXdhdmVsZW5ndGg7Civllonmk6bpn7MgPiBndXR0dXJhbFwtZnJpY2F0aXZlOwor5YWr57Sa5belID4gZWlnaHRcLWdyYWRlXC13b3JrZXI7CivkvZvokpnnibkgPiB2ZXJtb250XC1cW3VzXC1zdGF0ZVxdOwor566h55CG56uZID4gbWFuYWdlbWVudFwtc3RhdGlvbjsKK+iqquS4jeWumiA+IGNhbicndFwtc2F5XC1mb3JcLXN1cmU7Civms6Lmlq/oqp4gPiBib3NuaWFuXC1cKGxhbmd1YWdlXCk7CivlhJjlj6/og70gPiBhc1wtZmFyXC1hc1wtcG9zc2libGU7CivljIXmib/ntYQgPiBcKHJlc3BvbnNpYmxlXClcLWNyZXc7Civnmb7okYnnrrEgPiB0aGVybW9tZXRlclwtc2NyZWVuOwor6YG/6Zu35ZmoID4gbGlnaHRuaW5nXC1hcnJlc3RlcjsKK+aIsOmspeapnyA+IGZpZ2h0ZXJcLVwoYWlyY3JhZnRcKTsKK+mhr+ekuuWZqCA+IG1vbml0b3JcLVwoY29tcHV0ZXJcKTsKK+W/heS/ruiqsiA+IGFcLXJlcXVpcmVkXC1jb3Vyc2U7Civlg4XmrKHkuo4gPiBzZWNvbmRcLW9ubHlcLXRvXC5cLlwuOwor5pyd6a6u6KqeID4ga29yZWFuXC1cKGxhbmd1YWdlXCk7Civlu7rnr4nmpa0gPiBidWlsZGluZ1wtaW5kdXN0cnk7CivpuqXlhYvntq0gPiBcKHRpbW90aHlcKVwtbWN2ZWlnaDsKK+aHieeUqOWxpCA+IGFwcGxpY2F0aW9uXC1sYXllcjsKK+ahjOWIpeaelyA+IFwoY2hhcmxpZVwpXC1jaGFwbGluOwor6JOL54i+6KqeID4gZ2FlbGljXC1cKGxhbmd1YWdlXCk7CivnhKHmiYDorIIgPiB0b1wtYmVcLWluZGlmZmVyZW50Owor5qmf5Zmo5Lq6ID4gbWVjaGFuaWNhbFwtcGVyc29uOwor5buj5Z+f57ayID4gd2lkZVwtYXJlYVwtbmV0d29yazsKK+e2reaMgeiyuyA+IG1haW50ZW5hbmNlXC1jb3N0czsKK+adv+aTpuWFkiA+IGJsYWNrYm9hcmRcLWVyYXNlcjsKK+WQjOaAp+aIgCA+IGhvbW9zZXh1YWxcLVwobG92ZVwpOwor6Zu76Kmx57ayID4gdGVsZXBob25lXC1uZXR3b3JrOwor5oCn6ai35pO+ID4gc2V4dWFsXC1oYXJhc3NtZW50Owor5qmr5pa354mpID4gdHJhbnN2ZXJzZVwtb2JqZWN0Owor55m95bGI6I+cID4gZ3JlYXRlclwtY2VsYW5kaW5lOwor5YKz6Ly4546HID4gdHJhbnNtaXNzaW9uXC1yYXRlOwor5Ly65pyN5ZmoID4gc2VydmVyXC1cKGNvbXB1dGVyXCk7CivmnI3li5nlmaggPiBzZXJ2ZXJcLVwoY29tcHV0ZXJcKTsKK+Wci+mam+azlSA+IGludGVybmF0aW9uYWxcLWxhdzsKK+S+teaIquiAhSA+IFwoY29tcHV0ZXJcKVwtaGFja2VyOwor5Yid5a246ICFID4gYmVnaW5uaW5nXC1zdHVkZW50Owor6KW/546L5q+NID4gbmFtZVwtb2ZcLWFcLWdvZGRlc3M7CivlnKjpoK3niYggPiBvblwtdGhlXC1mcm9udFwtcGFnZTsKK+azouiYreiqniA+IHBvbGlzaFwtXChsYW5ndWFnZVwpOwor6L2f54K45qmfID4gYm9tYmVyXC1cKGFpcmNyYWZ0XCk7CivphqvlrbjlrrYgPiBtZWRpY2FsXC1zY2llbnRpc3Q7Civoj6/nm5vpoJMgPiB3YXNoaW5ndG9uXC1cKGRcLmNcLlwpOwor5Lif6aOv56KXID4gdG9cLWxvc2VcLW9uZScnc1wtam9iOwor5q+U6LyD5pawID4gY29tcGFyYXRpdmVseVwtbmV3Owor6Zu75L+h6JmfID4gZWxlY3RyaWNhbFwtc2lnbmFsOwor56eY5pu46ZW3ID4gc2VjcmV0YXJ5XC1nZW5lcmFsOwor5q2Q5rSy5Lq6ID4gZXVyb3BlYW5cLVwocGVyc29uXCk7CivooZvnlJ/pg6ggPiBoZWFsdGhcLWRlcGFydG1lbnQ7CivlpKrlubPmtIsgPiB0aGVcLXBhY2lmaWNcLW9jZWFuOwor5Y6f5Zug5pivID4gdGhlXC1yZWFzb25cLWlzXC1cLlwuXC47CivkuIDlubTljYogPiBhXC15ZWFyXC1hbmRcLWFcLWhhbGY7CivkuI3nlJjlv4MgPiBub3RcLXJlY29uY2lsZWRcLXRvOwor5a6i5oi25qmfID4gY2xpZW50XC1cKGNvbXB1dGVyXCk7CivlpLHmpa3njocgPiB1bmVtcGxveW1lbnRcLXJhdGU7Civorablr5/lsYAgPiBwb2xpY2VcLWRlcGFydG1lbnQ7Civmrbjlv4PogIUgPiByZWxpZ2lvdXNcLWNvbnZlcnQ7CivmspLpl5zkv4IgPiBpdFwtZG9lc24nJ3RcLW1hdHRlcjsKK+WMheWckuWFkiA+IGJ1eVwtdGhlXC13aG9sZVwtbG90Owor5LiA6Lqr5rGXID4gc3dlYXRpbmdcLWFsbFwtb3ZlcjsKK+eZvee0sOiDniA+IHdoaXRlXC1ibG9vZFwtY2VsbDsKK+aAp+mXnOS/giA+IHNleHVhbFwtcmVsYXRpb25zOwor5q6v5YSA6aSoID4gdGhlXC11bmRlcnRha2VyJydzOwor56CU6KiO5pyDID4gZGlzY3Vzc2lvblwtZm9ydW07Civos4fmlpnph48gPiBxdWFudGl0eVwtb2ZcLWRhdGE7Civnt6jovK/lrqQgPiBlZGl0b3JpYWxcLW9mZmljZTsKK+aLieS4geiqniA+IGxhdGluXC1cKGxhbmd1YWdlXCk7CivpganphY3lsaQgPiBhZGFwdGF0aW9uXC1sYXllcjsKK+WHuumiqOmgrSA+IHRvXC1jcmVhdGVcLWFcLXN0aXI7Civotorph47ou4ogPiBvZmZcLXJvYWRcLXZlaGljYWw7CivpganphY3lmaggPiBhZGFwdGVyXC1cKGRldmljZVwpOwor5Ymv5Li75bitID4gdmljZVwtY2hhaXJwZXJzb247CivmjbflhYvoqp4gPiBjemVjaFwtXChsYW5ndWFnZVwpOwor562G5bqV5LiLID4gYWJpbGl0eVwtdG9cLXdyaXRlOwor5qC45Y6f5paZID4gbnVjbGVhclwtbWF0ZXJpYWw7Civnmb3ooYDnkIMgPiB3aGl0ZVwtYmxvb2RcLWNlbGw7CivkuI3niK3msKMgPiBiZVwtZGlzYXBwb2ludGluZzsKK+WMl+WGsOa0iyA+IHRoZVwtYXJjdGljXC1vY2VhbjsKK+WPiOS+huS6hiA+IGhlcmVcLXdlXC1nb1wtYWdhaW47CivljYHlpJrlhIQgPiBvdmVyXC1vbmVcLWJpbGxpb247CivkuIDkuIvlrZAgPiBpblwtYVwtc2hvcnRcLXdoaWxlOwor5qC46Kit5pa9ID4gbnVjbGVhclwtZmFjaWxpdHk7CivpnZ7mlL/lupwgPiBub25cLWdvdmVybm1lbnRhbDsKK+S4u+W5uee3miA+IGJhY2tib25lXC1cKGNhYmxlXCk7Civpm7voppbmqZ8gPiB0ZWxldmlzaW9uXC1cKHNldFwpOwor5rWB6KGM55eFID4gZXBpZGVtaWNcLWRpc2Vhc2U7Civkv6HnlKjorYkgPiBsZXR0ZXJcLW9mXC1jcmVkaXQ7CivlrbjooZPnlYwgPiBhY2FkZW1pY1wtY2lyY2xlczsKK+ihm+aYn+WfjiA+IFwic2F0ZWxsaXRlXCJcLXRvd247CivnmoTkuIDnqK4gPiBpc1wtb25lXC1cKGtpbmRcLW9mXCk7Civmm7zlvrfmi4kgPiBcKG5lbHNvblwpXC1tYW5kZWxhOwor5Y2w5Zyw6KqeID4gaGluZGlcLVwobGFuZ3VhZ2VcKTsKK+W3pealreWMliA+IHRvXC1pbmR1c3RyaWFsaXplOwor6KiY6ICF5pyDID4gcHJlc3NcLWNvbmZlcmVuY2U7Civlh7rniYjnpL4gPiBwdWJsaXNoaW5nXC1ob3VzZTsKK+aylue5qeWztiA+IG9raW5hd2FcLVwoaXNsYW5kXCk7CivmsJHkuLvpu6ggPiBkZW1vY3JhdGljXC1wYXJ0eTsKK+mbu+imluWKhyA+IHR2XC1kcmFtYVwtcHJvZ3JhbTsKK+i8u+WwhOazoiA+IHJhZGlhdGlvblwtXCh3YXZlXCk7CivllYbmpa3ljJYgPiB0b1wtY29tbWVyY2lhbGl6ZTsKK+mbu+iFpue2siA+IGNvbXB1dGVyXC1uZXR3b3JrOwor6auY5oCn6IO9ID4gaGlnaFwtcGVyZm9ybWFuY2U7CivplovluZXlvI8gPiBvcGVuaW5nXC1jZXJlbW9ueTsKK+Wvpue/kueUnyA+IGludGVyblwtXChzdHVkZW50XCk7CivlnIvos5PppKggPiBzdGF0ZVwtZ3Vlc3Rob3VzZTsKK+S4jeiHs+aWvCA+IGNhbm5vdFwtZ29cLXNvXC1mYXI7Civnmb7liIbpu54gPiBwZXJjZW50YWdlXC1wb2ludDsKK+WKn+iDvembhiA+IGZ1bmN0aW9uXC1saWJyYXJ5Owor5YyW5a245oiwID4gY2hlbWljYWxcLXdhcmZhcmU7CivlpKflpJrmlbggPiBcKGdyZWF0XClcLW1ham9yaXR5Owor6I+P6Jit6KqeID4gZHV0Y2hcLVwobGFuZ3VhZ2VcKTsKK+S4gOW5tOWkmiA+IG1vcmVcLXRoYW5cLWFcLXllYXI7CivlhbHlkozpu6ggPiByZXB1YmxpY2FuXC1wYXJ0eTsKK+iElumguOWFkiA+IGJhY2tcLW9mXC10aGVcLW5lY2s7CivlpKfnhKHnlY8gPiB1dHRlcmx5XC1mZWFybGVzczsKK+i2hemrmOmAnyA+IHVsdHJhXC1oaWdoXC1zcGVlZDsKK+aAp+aOpeinuCA+IHNleHVhbFwtZW5jb3VudGVyOwor5ou/5omL6I+cID4gc3BlY2lhbHR5XC1cKGRpc2hcKTsKK+m8oOaomeWZqCA+IG1vdXNlXC1cKGNvbXB1dGVyXCk7CivkupLmk43mgKcgPiBpbnRlcm9wZXJhYmlsaXR5Owor5Yqf6IO9576kID4gZnVuY3Rpb25hbFwtZ3JvdXA7CivkuIDovKnlrZAgPiBcKGZvclwpXC1hXC1saWZldGltZTsKK+mrmOaViOeOhyA+IGhpZ2hcLWVmZmljaWVuY3k7CivliY3kuI3kuYUgPiBub3RcLWxvbmdcLWJlZm9yZTsKK+eUn+eUoumaiiA+IHByb2R1Y3Rpb25cLXRlYW07CivnlKjmiLbnt5ogPiBzdWJzY3JpYmVyXC1saW5lOwor576O5ZyL5Lq6ID4gYW1lcmljYW5cLXBlcnNvbjsKK+eci+S4iuWOuyA+IGl0XC13b3VsZFwtYXBwZWFyOwor5bm+5Y2B5YSEID4gc2V2ZXJhbFwtYmlsbGlvbjsKK+S4jeW+heiqqiA+IG5lZWRsZXNzXC10b1wtc2F5Owor5Ym16KiY6YyEID4gdG9cLXNldFwtYVwtcmVjb3JkOwor5LiN5ZCN5pW4ID4gYWJzdHJhY3RcLW51bWJlcjsKK+aVuOWNgeWEhCA+IHNldmVyYWxcLWJpbGxpb247CivnuL3ntpPnkIYgPiBnZW5lcmFsXC1tYW5hZ2VyOwor5pW455m+6JCsID4gc2V2ZXJhbFwtbWlsbGlvbjsKK+aLvOi1t+S+hiA+IHRvXC1wdXRcLXRvZ2V0aGVyOwor57Gz57KJ6IKJID4gcmljZVwtZmxvdXJcLW1lYXQ7Civpq5jmioDooZMgPiBoaWdoXC10ZWNobm9sb2d5Owor6ZaJ6Z+z56+AID4gY2xvc2VkXC1zeWxsYWJsZTsKK+iZm+mbu+i3ryA+IHZpcnR1YWxcLWNpcmN1aXQ7Civlvp7ljrvlubQgPiBzaW5jZVwtbGFzdFwteWVhcjsKK+iPsuW+i+izkyA+IHRoZVwtcGhpbGlwcGluZXM7CivmnKzml4/oqp4gPiBuYXRpdmVcLWxhbmd1YWdlOwor57WG6IWz55+zID4gc3R1bWJsaW5nXC1ibG9jazsKK+aEn+afk+iAhSA+IGluZmVjdGVkXC1wZXJzb247CivlpJrmqKPljJYgPiBkaXZlcnNpZmljYXRpb247CivntrLnrqHlk6EgPiBuZXR3b3JrXC1tYW5hZ2VyOwor5LiN5bmy5raJID4gbm9uaW50ZXJmZXJlbmNlOwor5qC45q2m5bqrID4gbnVjbGVhclwtYXJzZW5hbDsKK+S4ree+jua0siA+IGNlbnRyYWxcLWFtZXJpY2E7CivlpKnkuLvmlZkgPiBjYXRob2xpY1wtY2h1cmNoOwor6YeR6KOh5aWHID4gXChuZXd0XClcLWdpbmdyaWNoOwor5rOo5oSP55yLID4gd2F0Y2hcLWNhcmVmdWxseTsKK+WFseeUoum7qCA+IGNvbW11bmlzdFwtcGFydHk7CivkuI3opovlvpcgPiBub3RcLW5lY2Vzc2FyaWx5Owor6LOA5bm054mHID4gbmV3XC15ZWFyJydzXC1jYXJkOwor5qiZ5rqW5YyWID4gc3RhbmRhcmRpemF0aW9uOwor5L2/5ru/5oSPID4gdG9cLW1ha2VcLWNvbnRlbnQ7CivkuI3pj73pi7wgPiBzdGFpbmxlc3NcLXN0ZWVsOwor5Y2w5bqm5Lq6ID4gaW5kaWFuXC1cKHBlcnNvblwpOwor5aWn6YGL5p2RID4gb2x5bXBpY1wtdmlsbGFnZTsKK+aal+mBqeaHiSA+IGRhcmtcLWFkYXB0YXRpb247CivogIHnmb7lp5MgPiBvcmRpbmFyeVwtcGVvcGxlOwor5aSr5aa75bqXID4gZmFtaWx5XC1ydW5cLXNob3A7CivmlbjlrZfntrIgPiBkaWdpdGFsXC1uZXR3b3JrOwor5YWS5YyW6Z+7ID4gcmV0cm9mbGV4XC1maW5hbDsKK+acieiBr+e5qyA+IHRvXC1iZVwtY29ubmVjdGVkOwor5a+p5Yik6ZW3ID4gcHJlc2lkaW5nXC1qdWRnZTsKK+mrmOaViOiDvSA+IGhpZ2hcLWVmZmljaWVuY3k7Civnm5zniYjogIUgPiBzb2Z0d2FyZVwtcGlyYXRlOwor5aSn6YOo5Lu9ID4gXChpblwpXC1sYXJnZVwtcGFydDsKK+WGt+awo+apnyA+IGFpclwtY29uZGl0aW9uZXI7CivkvIrnlLjlnJIgPiBnYXJkZW5cLW9mXC1lZGVuOwor5oiQ5ZOh5ZyLID4gbWVtYmVyXC1jb3VudHJ5Owor6Yej6a2a6Ie6ID4gZGlhb3l1XC1pc2xhbmRzOwor6KSH6Z+75q+NID4gY29tcG91bmRcLWZpbmFsOwor5bmA5aSq6ZW3ID4gb3ZlcnNpemVcLWZyYW1lOwor5Ly055Sf5rCjID4gYXNzb2NpYXRlZFwtZ2FzOwor54mp55CG5bGkID4gcGh5c2ljYWxcLWxheWVyOwor6IGv5ZCI5ZyLID4gdW5pdGVkXC1uYXRpb25zOwor6Iux5ZyL5Lq6ID4gYnJpdGlzaFwtcGVyc29uOwor55m954ax5YyWID4gdHVyblwtd2hpdGVcLWhvdDsKK+WNgeS4gOaciCA+IGVsZXZlbnRoXC1tb250aDsKK+WOn+WtkOaguCA+IGF0b21pY1wtbnVjbGV1czsKK+aKiuWFhOW8nyA+IHN3b3JuXC1icm90aGVyczsKK+WMl+aWl+aYnyA+IHRoZVwtYmlnXC1kaXBwZXI7CivplovnjqnnrJEgPiB0b1wtcGxheVwtYVwtam9rZTsKK+WvqeWIpOW4rSA+IGp1ZGdlbWVudFwtc2VhdDsKK+eZveeyieeXhSA+IHBvd2RlcnlcLW1pbGRldzsKK+mHo+mtmuWztiA+IGRpYW95dVwtaXNsYW5kczsKK+WPpOW4jOiHmCA+IGFuY2llbnRcLWdyZWVjZTsKK+S4reWci+S6uiA+IGNoaW5lc2VcLXBlcnNvbjsKK+ebo+edo+S6uiA+IHN1cGVyaW50ZW5kZW50Owor6aCG5bqP5pW4ID4gb3JkaW5hbFwtbnVtYmVyOwor6Zu76Kmx57eaID4gdGVsZXBob25lXC1saW5lOwor5bCx5piv6KqqID4gaW5cLW90aGVyXC13b3JkczsKK+aVmeiCsueVjCA+IGFjYWRlbWljXC13b3JsZDsKK+S4jeaVoueVtiA+IHlvdVwtZmxhdHRlclwtbWU7Civlia/nuL3ntbEgPiB2aWNlXC1wcmVzaWRlbnQ7CivnlJroh7PmlrwgPiBzb1wtbXVjaFwtXCh0aGF0XCk7CivkuI3lubPooaEgPiBkaXNlcXVpbGlicml1bTsKK+adseWNl+S6niA+IHNvdXRoZWFzdFwtYXNpYTsKK+aOoeaUtueOhyA+IHJlY292ZXJ5XC1yYXRpbzsKK+iHqueUseWMliA+IGxpYmVyYWxpemF0aW9uOwor5LiN6YGp55SoID4gbm90XC1hcHBsaWNhYmxlOwor57Ch5Zau5YyWID4gc2ltcGxpZmljYXRpb247Civpub3muZbln44gPiBzYWx0XC1sYWtlXC1jaXR5Owor6KGA6KO95ZOBID4gYmxvb2RcLXByb2R1Y3RzOwor5Ye56Z2i6Y+hID4gY29uY2F2ZVwtbWlycm9yOwor6ZaL5b+D5p6cID4gcGlzdGFjaGlvXC1udXRzOwor5LiW55WM6KqeID4gd29ybGRcLWxhbmd1YWdlOwor6KGM5pif6ZqbID4gaW50ZXJwbGFuZXRhcnk7CivkuK3lv4Poqp4gPiBxdWFsaWZpZWRcLXdvcmQ7Civlj4PorIDplbcgPiBjaGllZlwtb2ZcLXN0YWZmOwor6YyE5YOP5qmfID4gdmlkZW9cLXJlY29yZGVyOwor5YWJ5L+h6JmfID4gb3B0aWNhbFwtc2lnbmFsOwor5qC45q2m5ZmoID4gbnVjbGVhclwtd2VhcG9uOwor6YGU5LiN5YiwID4gY2Fubm90XC1hY2hpZXZlOwor5YWL5p6X6aCTID4gXChiaWxsXClcLWNsaW50b247CivogZboqpXnr4AgPiBjaHJpc3RtYXNcLXRpbWU7Civnmb3ku6TmtbcgPiB0aGVcLWJlcmluZ1wtc2VhOwor5pGp6ZaA57aTID4gYm9va1wtb2ZcLW1vcm1vbjsKK+Wwi+mWi+W/gyA+IHRvXC1tYWtlXC1mdW5cLW9mOwor54qv5LiN6JGXID4gbm90XC13b3J0aHdoaWxlOwor5LiN55So6KydID4geW91JydyZVwtd2VsY29tZTsKK+WNiuiHquWLlSA+IHNlbWlcLWF1dG9tYXRpYzsKK+WFp+iSmeWPpCA+IGlubmVyXC1tb25nb2xpYTsKK+mAgOS8kemHkSA+IHJldGlyZW1lbnRcLXBheTsKK+eVmeiogOewvyA+IHZpc2l0b3InJ3NcLWJvb2s7CivmrbvkuqHnjocgPiBtb3J0YWxpdHlcLXJhdGU7Civlk4joqbLmm7ggPiBib29rXC1vZlwtaGFnZ2FpOwor5pO65pSk5a2QID4gc2V0XC11cFwtYVwtc3RhbGw7CivnkZ7lo6vkurogPiBzd2lzc1wtXChwZXJzb25cKTsKK+W3ruS4jeWkmiA+IGFsbW9zdFwsXC1uZWFybHk7Civmi6zlvKfoo6EgPiBpblwtcGFyZW50aGVzZXM7Civkv6HomZ/oh7ogPiBzaWduYWxcLXN0YXRpb247CivkuJbnlYzkuIogPiBcKG9mXC10aGVcKVwtd29ybGQ7CivlnJPnj6DnrYYgPiBiYWxsXC1wb2ludFwtcGVuOwor6LeR6IW/5YWSID4gdG9cLXJ1blwtZXJyYW5kczsKK+azoueLgOeGsSA+IHVuZHVsYW50XC1mZXZlcjsKK+efpeitmOW6qyA+IGtub3dsZWRnZVwtYmFzZTsKK+mbu+S/oeWxgCA+IGNlbnRyYWxcLW9mZmljZTsKK+ilv+WNl+S6niA+IHNvdXRod2VzdFwtYXNpYTsKK+aSpeiZn+ebpCA+IHRlbGVwaG9uZVwtZGlhbDsKK+W+jOWFqeiAhSA+IHRoZVwtbGF0dGVyXC10d287Civlu6Dnpq7mi5wgPiBkYXlcLW9mZlwtXCh3b3JrXCk7Civlhannmb7lhIQgPiB0d2VudHlcLWJpbGxpb247CivnhKHpgKPmjqUgPiBjb25uZWN0aW9ubGVzczsKK+eMnOisjuWFkiA+IGd1ZXNzXC1hXC1yaWRkbGU7CivljYrku6XkuIogPiBtb3JlXC10aGFuXC1oYWxmOwor5LiN5a6i5rCjID4geW91JydyZVwtd2VsY29tZTsKK+e+juW3ruS6iyA+IGFcLXRlcnJpZmljXC1qb2I7Civoq77osp3niL4gPiBub2JlbFwtXChwcml6ZVwpOwor5L+d6K2J6YeRID4gZWFybmVzdFwtbW9uZXk7CivmjpvomZ/orYkgPiByZWdpc3RlclwtY2FyZDsKK+WOn+WtkOiDvSA+IGF0b21pY1wtZW5lcmd5Owor57SA5b+16aSoID4gbWVtb3JpYWxcLWhhbGw7Civllq7pn7vmr40gPiBzaW1wbGVcLWZpbmFsczsKK+acieWPr+iDvSA+IGl0JydzXC1wb3NzaWJsZTsKK+acquaPkOWPiiA+IG5vdFwtbWVudGlvbmVkOwor5pys55Sf54eIID4gYnVuc2VuXC1idXJuZXI7Civlv4Poh5/nl4UgPiBoZWFydFwtZGlzZWFzZTsKK+WNgeS6lOW5tCA+IGZpZnRlZW5cLXllYXJzOwor6YSn5bCP5bmzID4gZGVuZ1wteGlhb3Bpbmc7CivpgqPptLvmm7ggPiBib29rXC1vZlwtbmFodW07CivntrLntaHlsaQgPiBuZXR3b3JrXC1sYXllcjsKK+WvqeWIpOashCA+IGp1ZGdlbWVudFwtYmFyOwor55m96Iqx6IqxID4gc2hpbmluZ1wtd2hpdGU7Civlu7rnr4nlrbggPiBhcmNoaXRlY3R1cmFsOwor5Lit5ZyL5byPID4gY2hpbmVzZVwtc3R5bGU7CivljYrlpLHmpa0gPiBzZW1pXC1lbXBsb3llZDsKK+ihqOaxuuasiiA+IHJpZ2h0XC10b1wtdm90ZTsKK+epuumWk+ermSA+IHNwYWNlXC1zdGF0aW9uOwor5aSn5YWs5Y+4ID4gbGFyZ2VcLWNvbXBhbnk7CivlpKflrrnph48gPiBoaWdoXC1jYXBhY2l0eTsKK+aliueZvue/sCA+IGJyaWdoYW1cLXlvdW5nOwor5aSn5ZWP6aGMID4gZ3JlYXRcLXByb2JsZW07CivlhYnlip/njocgPiBvcHRpY2FsXC1wb3dlcjsKK+asiuWogeaApyA+IGF1dGhvcml0YXRpdmU7CivlpbPmnIvlj4sgPiBmZW1hbGVcLWZyaWVuZDsKK+S4jeWRqOW7tiA+IHVuZGlzdHJpYnV0ZWQ7CivmkYHph6blhZIgPiBzbmFwXC1mYXN0ZW5lcjsKK+eZveearuadviA+IGxhY2ViYXJrXC1waW5lOwor5a2Y5YSy5ZmoID4gbWVtb3J5XC1cKHVuaXRcKTsKK+W9jOi/puabuCA+IGJvb2tcLW9mXC1taWNhaDsKK+ePvuS7o+WMliA+IG1vZGVybml6YXRpb247CivkuLvnprHmlocgPiBsb3JkJydzXC1wcmF5ZXI7Civlpb3lub7lubQgPiBzZXZlcmFsXC15ZWFyczsKK+WUruelqOiZlSA+IHRpY2tldFwtb2ZmaWNlOwor5YWt6bue5Y2KID4gaGFsZlwtcGFzdFwtc2l4Owor54Sh5oSP6K2YID4gdW5jb25zY2lvdXNseTsKK+aOqOWLleWKmyA+IGRyaXZpbmdcLWZvcmNlOwor6YG/6aKo6JmVID4gbGVlXCxcLXdpbmRzdG9wOwor5L2/55So6YePID4gdm9sdW1lXC1vZlwtdXNlOwor5Y2K5bCO6auUID4gc2VtaWNvbmR1Y3RvcjsKK+mngeauvOanjSA+IG1hdXNlclwtcGlzdG9sOwor5LiN5pa55L6/ID4gaW5jb252ZW5pZW5jZTsKK+aykue2k+mplyA+IGluZXhwZXJpZW5jZWQ7CivkuLvml6XlrbggPiBzdW5kYXlcLXNjaG9vbDsKK+acieWKqeS6jiA+IGNvbnRyaWJ1dGVcLXRvOwor5pyJ5qyK5aiBID4gYXV0aG9yaXRhdGl2ZTsKK+S4ieWNgeWEhCA+IHRocmVlXC1iaWxsaW9uOwor5LiN5YeN5rivID4gaWNlXC1mcmVlXC1wb3J0Owor5q2l6Kmx5qmfID4gd2Fsa2llXC10YWxraWU7Civpm4bnt5rlmaggPiBodWJcLVwobmV0d29ya1wpOwor5LiN6IiS6YGpID4gdW5jb21mb3J0YWJsZTsKK+WFqeWNg+W5tCA+IHRoZVwteWVhclwtMjAwMDsKK+aomeacrOifsiA+IHNwaWRlclwtYmVldGxlOwor6YCy5Ye65Y+jID4gaW1wb3J0XHxleHBvcnQ7CivlkJHopb/ljZcgPiBzb3V0aHdlc3R3YXJkOwor5ZSu56Wo5ZOhID4gdGlja2V0XC1zZWxsZXI7CivllK7npajlj6MgPiB0aWNrZXRcLXdpbmRvdzsKK+WuieWumuWMliA+IHN0YWJpbGl6YXRpb247CivkuqTmj5vnq68gPiBzd2l0Y2hlZFwtcG9ydDsKK+S4jeebuOW5siA+IGJlXC1pcnJlbGV2YW50Owor5aSp5puJ5b6XID4gaGVhdmVuXC1rbm93c1whOwor5aCx6Kmx5qmfID4gd2Fsa2llXC10YWxraWU7CivlkIznm5/lnIsgPiBjb25mZWRlcmF0aW9uOwor5aWn6YGL5pyDID4gb2x5bXBpY1wtZ2FtZXM7CivlnKjmnKrkvoYgPiBpblwtdGhlXC1mdXR1cmU7CivljZfnvo7mtLIgPiBzb3V0aFwtYW1lcmljYTsKK+S4g+eZvuiQrCA+IHNldmVuXC1taWxsaW9uOwor5pyJ6Imv5b+DID4gY29uc2NpZW50aW91czsKK+m8u+mjvOazlSA+IG5hc2FsXC1mZWVkaW5nOwor57SE5ou/5pu4ID4gYm9va1wtb2ZcLWpvbmFoOwor5q2l6KGM6J+yID4gZ3JvdW5kXC1iZWV0bGU7Civkvr/mraXotbAgPiBtYXJjaFwtYXRcLWVhc2U7CivpgKPmjqXoh7MgPiB0b1wtY29ubmVjdFwtdG87Civps7blsL7oirEgPiBpcmlzXC1cKGZsb3dlclwpOwor5Y2K5a6Y5pa5ID4gc2VtaVwtb2ZmaWNpYWw7CivlhbzlrrnmgKcgPiBjb21wYXRpYmlsaXR5Owor6Kej5aOT57iuID4gdG9cLWRlY29tcHJlc3M7CivmjqHmo4nmqZ8gPiBjb3R0b25cLXBpY2tlcjsKK+iKreiVieaJhyA+IHBhbG1cLWxlYWZcLWZhbjsKK+WFrOWFg+WJjSA+IGJlZm9yZVwtY2hyaXN0Owor5rOi576O5bqmID4gYmF1bWVcLWRlZ3JlZXM7CivljYrlvqnos70gPiBlaWdodGhcLWZpbmFsczsKK+mCiueVjOe3miA+IGJvdW5kYXJ5XC1saW5lOwor5YyX576O5rSyID4gbm9ydGhcLWFtZXJpY2E7CivmoLjog73mupAgPiBudWNsZWFyXC1wb3dlcjsKK+aUr+aMgeeOhyA+IHN1cHBvcnRcLWxldmVsOwor6Kmm5LiA6KmmID4gdG9cLWhhdmVcLWFcLXRyeTsKK+i2iuS+hui2iiA+IG1vcmVcLWFuZFwtbW9yZTsKK+S4i+iHs+S4iiA+IGJvdHRvbVwtdG9cLXRvcDsKK+aJvuS4jeWIsCA+IGNvdWxkbicndFwtZmluZDsKK+W+iOmBuuaGviA+IHVuZm9ydHVuYXRlbHk7CivokKzkuovpgZQgPiBtYXN0ZXJcKGNhcmRcKTsKK+e0hOePpeabuCA+IGJvb2tcLW9mXC1qb2VsOwor6LOg5YSf6YeRID4gY29tcGVuc2F0aW9uOwor56S65aiB6ICFID4gZGVtb25zdHJhdG9yOwor5q+b5Li75bitID4gY2hhaXJtYW5cLW1hbzsKK+W7uuevieeJqSA+IFwoYVwpXC1idWlsZGluZzsKK+mWseimveWupCA+IHJlYWRpbmdcLXJvb207CivkuI3lkI3orb0gPiBkaXNyZXB1dGFibGU7CivmqZ/morDnorwgPiBtYWNoaW5lXC1jb2RlOwor5LiN5oiQ5YqfID4gdW5zdWNjZXNzZnVsOwor5rC05ru45YKzID4gd2F0ZXJcLW1hcmdpbjsKK+S4jemHjeimliA+IGluZGlmZmVyZW5jZTsKK+WNgeS5neatsiA+IDE5XC15ZWFyc1wtb2xkOwor5Y2K5paH55uyID4gc2VtaWxpdGVyYXRlOwor5LiZ54Ov6YW4ID4gYWNyeWxpY1wtYWNpZDsKK+WNiueGn+e3tCA+IHNlbWlcLXNraWxsZWQ7CivlkIPkuI3plosgPiBiZVwtdW5wb3B1bGFyOwor5LiN5ZCI55CGID4gdW5yZWFzb25hYmxlOwor5LiN5oSJ5b+rID4gZGlzYWdyZWVhYmxlOwor6aSK6Zue5aC0ID4gY2hpY2tlblwtZmFybTsKK+iGneS4iuWeiyA+IGxhcHRvcFwtXChhZGpcKTsKK+Wvpumam+aApyA+IHByYWN0aWNhbGl0eTsKK+WNgeS4gOW5tCA+IGVsZXZlblwteWVhcnM7Civnm7jkvLzmgKcgPiByZXNzZW1ibGFuY2U7CivpnZ7lkIzmraUgPiBhc3luY2hyb25vdXM7CivlgrPpgZPmm7ggPiBlY2NsZXNpYXN0ZXM7CivnmbzoqIDkurogPiBzcG9rZXNwZXJzb247Civpm4bkuK3lmaggPiBjb25jZW50cmF0b3I7CivmhJ/lmIboqZ4gPiBpbnRlcmplY3Rpb247CivotrPnkIPov7cgPiBmb290YmFsbFwtZmFuOwor6YKj5qij55qEID4gdGhhdFwta2luZFwtb2Y7CivljYrpgorlpKkgPiBoYWxmXC10aGVcLXNreTsKK+iRoeiQhOmFkiA+IFwoZ3JhcGVcKVwtd2luZTsKK+i+suS9nOeJqSA+IFwoZmFybVwpXC1jcm9wczsKK+Wbm+WNgeWkmiA+IG1vcmVcLXRoYW5cLTQwOwor6K2J5a+m56auID4gY29uZmlybWF0aW9uOwor5a6H6Iiq5bGAID4gc3BhY2VcLWFnZW5jeTsKK+WOu+Wci+WkliA+IHRvXC1nb1wtYWJyb2FkOwor56ys5LqM5L2NID4gc2Vjb25kXC1wbGFjZTsKK+WQjOaZguS7oyA+IGNvbnRlbXBvcmFyeTsKK+WJr+e4veeQhiA+IHZpY2VcLXByZW1pZXI7Civot6/lvpfoqJggPiBib29rXC1vZlwtcnV0aDsKK+WkmuW3peWMliA+IHRvXC1tdWx0aXBsZXg7CivkuInlkIjkuIAgPiB0aHJlZVwtaW5cLW9uZTsKK+Wbm+eZvuiQrCA+IGZvdXJcLW1pbGxpb247Civpq5jos6rph48gPiBoaWdoXC1xdWFsaXR5Owor5aSi5ri455eHID4gdG9cLXNsZWVwd2FsazsKK+S4jee1kOebnyA+IG5vbmFsaWdubWVudDsKK+WFq+e0mumiqCA+IGZvcmNlXC04XC13aW5kOwor5bm85YWS5ZySID4ga2luZGVyZ2FydGVuOwor5qGU5a2Q5rC0ID4gb3JhbmdlXC1qdWljZTsKK+WJtemAoOaApyA+IGNyZWF0aXZlbmVzczsKK+eglOeptuiAhSA+IGludmVzdGlnYXRvcjsKK+WRqOe4veeQhiA+IHByZW1pZXJcLXpob3U7Civln7fmlL/pu6ggPiBydWxpbmdcLXBhcnR5Owor5q+N6Kaq56+AID4gbW90aGVyJydzXC1kYXk7CivkuIDkuIvlhZIgPiBhXC1saXR0bGVcLWJpdDsKK+S4jeWDj+ipsSA+IHVucmVhc29uYWJsZTsKK+ikh+ijveWTgSA+IHJlcHJvZHVjdGlvbjsKK+WPuOazleasiiA+IGp1cmlzZGljdGlvbjsKK+S9lOS+v+WunCA+IGFkdmVudGFnZW91czsKK+m8u+S4remalCA+IG5hc2FsXC1zZXB0dW07CivmlrDogZ7omZUgPiBuZXdzXC1zZXJ2aWNlOwor6YGL5YuV6Z6LID4gc3BvcnRzXC1zaG9lczsKK+aguOi9n+eCuCA+IG51Y2xlYXJcLWJvbWI7CivovYnos6zljaEgPiBhXC1kZWJpdFwtY2FyZDsKK+mdouWwjemdoiA+IGZhY2VcLXRvXC1mYWNlOwor6KSH5a+r57SZID4gY2FyYm9uXC1wYXBlcjsKK+S4jeebuOWuuSA+IGluY29tcGF0aWJsZTsKK+aJk+WtlOWZqCA+IGhvbGVcLXB1bmNoZXI7Civku4DpurzmmK8gPiB3aGF0XC1pc1wtXC5cLlwuXD87Civlh7npgI/pj6EgPiBjb25jYXZlXC1sZW5zOwor5Y+k576F6aasID4gYW5jaWVudFwtcm9tZTsKK+S6jOWNgeiQrCA+IDIwMFwtdGhvdXNhbmQ7CivlubTovJXkurogPiB5b3VuZ1wtcGVvcGxlOwor5LmS5LmT55CDID4gdGFibGVcLXRlbm5pczsKK+majue0muW8jyA+IGhpZXJhcmNoaWNhbDsKK+iBveiqqumBjiA+IHRvXC1oZWFyXC1zYWlkOwor6ZeM5bC+54KOID4gYXBwZW5kaWNpdGlzOwor5aSn5LiA5LqbID4gYVwtYml0XC1iaWdnZXI7CivnlJ/nianmiLAgPiBnZXJtXC13YXJmYXJlOwor5bu66Kit5oCnID4gY29uc3RydWN0aXZlOwor5ZaJ5aGe6Z+zID4gZ2xvdHRhbFwtc3RvcDsKK+Wkp+mDveacgyA+IG1ldHJvcG9saXRhbjsKK+acgOS9jum7niA+IGxvd2VzdFwtcG9pbnQ7Civln7rnnaPmlZkgPiBjaHJpc3RpYW5pdHk7CivlronnnKDpha4gPiBtZXRoYXF1YWxvbmU7CivoqabpqZfmgKcgPiBleHBlcmltZW50YWw7CivosrTml4/ljJYgPiBhcmlzdG9jcmF0aWM7CivkupTnmb7okKwgPiBmaXZlXC1taWxsaW9uOwor5Yaw5rSy55+zID4gaWNlbGFuZFwtc3BhcjsKK+aguOi7jeWCmSA+IG51Y2xlYXJcLWFybXM7CivpgJ/oqJjlk6EgPiBzdGVub2dyYXBoZXI7Civnmb3msLTms6UgPiB3aGl0ZVwtY2VtZW50Owor6LGh6IGy6KmeID4gb25vbWF0b3BvZWlhOwor5bmA5qC85byPID4gZnJhbWVcLWZvcm1hdDsKK+ihm+eUn+e0mSA+IHRvaWxldFwtcGFwZXI7CivnlbbmmYLnmoQgPiBvZlwtdGhhdFwtdGltZTsKK+a2iOmYsuagkyA+IGZpcmVcLWh5ZHJhbnQ7CivpgI/mmI7luqYgPiB0cmFuc3BhcmVuY3k7Civlo5PlgJLmgKcgPiBvdmVyd2hlbG1pbmc7CivkuozljYHkuIMgPiB0d2VudHlcLXNldmVuOwor5aSn6KaP5qihID4gbGFyZ2VcLXNjYWxlOwor5bqm6YeP6KGhID4gbWVhc3VyZW1lbnQ7CivoiKrnqbrooZMgPiBhZXJvbmF1dGljczsKK+ioquWVj+iAhSA+IGludGVydmlld2VyOwor5aW95pyL5Y+LID4gZ29vZFwtZnJpZW5kOwor5Zub6Z2i6auUID4gdGV0cmFoZWRyb247Civmi5Tph5jpjJggPiBjbGF3XC1oYW1tZXI7CivnlLPlkb3oqJggPiBkZXV0ZXJvbm9teTsKK+aJjeWklua1gSA+IGJyYWluXC1kcmFpbjsKK+WJteS9nOWKmyA+IG9yaWdpbmFsaXR5Owor55m955+u5pifID4gd2hpdGVcLWR3YXJmOwor5LiN6LSK5oiQID4gZGlzYXBwcm92YWw7CivljYrmnIjliIogPiBzZW1pbW9udGhseTsKK+WCmeeUqOeSsCA+IGJhY2t1cFwtcmluZzsKK+a7tOetlOiBsiA+IHRpY2tcLVwodG9ja1wpOwor5rqr5bqm6KiIID4gdGhlcm1vZ3JhcGg7CivkuI3ph43opoEgPiB1bmltcG9ydGFudDsKK+acieW9semfvyA+IGluZmx1ZW50aWFsOwor55m86Zu75bugID4gcG93ZXJcLXBsYW50Owor5p+P5p6X54mGID4gYmVybGluXC13YWxsOwor5beh6YKP6ImHID4gcGF0cm9sXC1ib2F0Owor5LiN5ZCr57OKID4gdW5hbWJpZ3VvdXM7CivmnKzlnJ/ljJYgPiB0b1wtbG9jYWxpemU7Civlronlhajnh4ggPiBzYWZldHlcLWxhbXA7CivmnInmhI/mgJ0gPiBpbnRlcmVzdGluZzsKK+eql+eOu+eSgyA+IHdpbmRvd1wtcGFuZTsKK+aWsOilv+iYrSA+IG5ld1wtemVhbGFuZDsKK+aVl+ihgOeXhyA+IHNlcHRpY2FlbWlhOwor5YiG5L2I5byPID4gZGlzdHJ1YnV0ZWQ7CivmnInkupvkurogPiBzb21lXC1wZW9wbGU7CivkuI3lkJDmsKMgPiB1bmFzcGlyYXRlZDsKK+aciee2k+mplyA+IGV4cGVyaWVuY2VkOwor55S35pyL5Y+LID4gbWFsZVwtZnJpZW5kOwor55m955qu5pu4ID4gd2hpdGVcLXBhcGVyOwor57+76K2v6ICFID4gaW50ZXJwcmV0ZXI7CivkuI3ms6jmhI8gPiB0aG91Z2h0bGVzczsKK+S/neS4jeS9jyA+IG1vc3RcLWxpa2VseTsKK+W3tOWTiOmmrCA+IHRoZVwtYmFoYW1hczsKK+eZvOmAgeWZqCA+IHRyYW5zbWl0dGVyOwor56ys5LiA56ugID4gY2hhcHRlclwtb25lOwor6YCj55Kw5ZyWID4gY29taWNcLXN0cmlwOwor5Zyo5Zyw5LiLID4gdW5kZXJncm91bmQ7CivlgrPnnJ/mqZ8gPiBmYXhcLW1hY2hpbmU7Civoo53nlLLou4ogPiBhcm1vcmVkXC1jYXI7CivnjbLnm4rogIUgPiBiZW5lZmljaWFyeTsKK+WNiumAj+aYjiA+IHRyYW5zbHVjZW50Owor56ys5LiA5rWBID4gZmlyc3RcLWNsYXNzOwor6KyA5q665qGIID4gbXVyZGVyXC1jYXNlOwor542O5a246YeRID4gc2Nob2xhcnNoaXA7CivkuI3li5XnlKIgPiByZWFsXC1lc3RhdGU7CivllZ/npLrpjIQgPiByZXZlbGF0aW9uczsKK+esrOS4ieaWuSA+IHRoaXJkXC1wYXJ0eTsKK+ihqOiSmeWtkCA+IHdhdGNoXC1nbGFzczsKK+aTuuaetuWtkCA+IHB1dFwtb25cLWFpcnM7CivkuI3norrlrpogPiB1bmNlcnRhaW50eTsKK+WPpOWFuOa0viA+IGNsYXNzaWNpc3RzOwor5Y+v6KGM5oCnID4gZmVhc2liaWxpdHk7CivlkIjms5XljJYgPiB0b1wtbGVnYWxpemU7CivmjqLnhafnh4ggPiBzZWFyY2hsaWdodDsKK+WuieWvp+eJhyA+IG1lcHJvYmFtYXRlOwor5piv5LiN5pivID4gaXNcLW9yXC1pc24nJ3Q7CivlpJrlt6XlmaggPiBtdWx0aXBsZXhlcjsKK+WLnuWLleWKmyA+IGxhYm9yXC1mb3JjZTsKK+iqnuiogOWtuCA+IGxpbmd1aXN0aWNzOwor5bm46YGL5YWSID4gYVwtbHVja3lcLWd1eTsKK+acrOizquS4iiA+IGVzc2VudGlhbGx5Owor5Zyw5LiL5rC0ID4gZ3JvdW5kd2F0ZXI7CivnlLPoq4vmm7ggPiBhcHBsaWNhdGlvbjsKK+aVmeiCsuaApyA+IGluc3RydWN0aXZlOwor57m85om/5qyKID4gaW5oZXJpdGFuY2U7Civoo73niYfkurogPiBtb3ZpZW1ha2luZzsKK+S4jeimgee3iiA+IHVuaW1wb3J0YW50Owor5pWX5a625a2QID4gc3BlbmR0aHJpZnQ7CivlsYDpmZDmgKcgPiBsaW1pdGF0aW9uczsKK+WUruiyqOWToSA+IHNhbGVzcGVyc29uOwor5Y+v5bCK5pWsID4gcmVzcGVjdGFibGU7CivpnZ7mlbjlrZcgPiBub25cLW51bWVyaWM7CivniIbnsbPoirEgPiBwdWZmZWRcLXJpY2U7CivkuInljYHlpKkgPiB0aGlydHlcLWRheXM7CivojIXlsYvpoIIgPiB0aGF0Y2hcLXJvb2Y7CivkuInljYHlm5sgPiB0aGlydHlcLWZvdXI7CivkuI3pgIHmsKMgPiB1bmFzcGlyYXRlZDsKK+aAp+S8tOS+tiA+IHNleFwtcGFydG5lcjsKK+S5s+eZveiJsiA+IG1pbGt5XC13aGl0ZTsKK+auuuS6uuahiCA+IG11cmRlclwtY2FzZTsKK+iTi+eEtuaApyA+IHByb2JhYmlsaXR5Owor5Y+v6IO95oCnID4gcG9zc2liaWxpdHk7CivmiL/lnLDnlKIgPiByZWFsXC1lc3RhdGU7CivnmbvlsbHlrrYgPiBtb3VudGFpbmVlcjsKK+WTsuWtuOWutiA+IHBoaWxvc29waGVyOwor5YiG5pWj5byPID4gZGlzdHJpYnV0ZWQ7Civns7vliJfniYcgPiBmaWxtXC1zZXJpZXM7CivpmL/lr4zmsZcgPiBhZmdoYW5pc3RhbjsKK+a0m+adieejryA+IGxvc1wtYW5nZWxlczsKK+mZsOa2vOiZlSA+IHNoYWR5XC1wbGFjZTsKK+S8uOe4ruaApyA+IGZsZXhpYmlsaXR5Owor6ZaJ5YWD6Z+zID4gY2xvc2VcLXZvd2VsOwor5pyA5aSn5YyWID4gdG9cLW1heGltaXplOwor56ys5Y2B5LiDID4gc2V2ZW50ZWVudGg7Civlk7LlrbjkuIogPiBwaGlsb3NvcGhpYzsKK+WQpuacieaViCA+IGluZWZmaWNpZW50Owor5YyX5pyd6a6uID4gbm9ydGhcLWtvcmVhOwor6Z2I5rS75oCnID4gZmxleGliaWxpdHk7Civkvb/kv6HmnI0gPiB0b1wtY29udmluY2U7Civlj6Ppppnns5YgPiBjaGV3aW5nXC1ndW07Civopb/kuYPlsbEgPiBtb3VudFwtc2luYWk7Civph5Hlsazmnb8gPiBtZXRhbFwtcGxhdGU7CivkuI3lgZrogbIgPiBrZWVwXC1zaWxlbnQ7Civlhannmb7okKwgPiB0d29cLW1pbGxpb247Civkv67nkIblu6AgPiByZXBhaXJcLXNob3A7CivmqZ/li5XmgKcgPiBmbGV4aWJpbGl0eTsKK+WinumVt+eOhyA+IGdyb3d0aFwtcmF0ZTsKK+S7i+ezu+ipniA+IHByZXBvc2l0aW9uOwor5Li75qmf5p2/ID4gbW90aGVyYm9hcmQ7Civku5blgJHpg70gPiBhbGxcLW9mXC10aGVtOwor6aGe5Ly86bueID4gcmVzZW1ibGFuY2U7Civpm5nkurrmiL8gPiBkb3VibGVcLXJvb207Civnvo7ooZPppKggPiBhcnRcLWdhbGxlcnk7CivpgKPmjqXoqZ4gPiBjb25qdW5jdGlvbjsKK+e0hOS8r+iomCA+IGJvb2tcLW9mXC1qb2I7CivmgrLllpzliocgPiB0cmFnaWNvbWVkeTsKK+i7n+ejgeeinyA+IGZsb3BweVwtZGlzazsKK+WNiuWwgeW7uiA+IHNlbWlcLWZldWRhbDsKK+WvpuizquaApyA+IHN1YnN0YW50aXZlOwor6Luf56OB55ukID4gZmxvcHB5XC1kaXNrOwor6K6K5aOT5ZmoID4gdHJhbnNmb3JtZXI7CivomIvmnpzmsYEgPiBhcHBsZVwtanVpY2U7CivmmpfoqJjlhZIgPiBzZWNyZXRcLW1hcms7CivphY3pgIHogIUgPiBkaXN0cmlidXRvcjsKK+mHkemKgOiKsSA+IGhvbmV5c3Vja2xlOwor5YWD6ICB6ZmiID4gdXBwZXJcLWhvdXNlOwor5Y+v5oOz5YOPID4gY29uY2VpdmFibGU7CivorYnmmI7mm7ggPiBjZXJ0aWZpY2F0ZTsKK+S/oeeUqOWNoSA+IGNyZWRpdFwtY2FyZDsKK+Wls+euoeWutiA+IGhvdXNla2VlcGVyOwor5bel56iL5a24ID4gZW5naW5lZXJpbmc7CivmnInlrrPnmoQgPiBkZXN0cnVjdGl2ZTsKK+WkqeeEtuawoyA+IG5hdHVyYWxcLWdhczsKK+S+m+ihgOiAhSA+IGJsb29kXC1kb25vcjsKK+eHn+mkiuWTgSA+IG5vdXJpc2htZW50Owor6YGp5oeJ5oCnID4gc3VpdGFiaWxpdHk7CivlpKnmloflj7AgPiBvYnNlcnZhdG9yeTsKK+mRv+efs+WgtCA+IHJvY2tcLXF1YXJyeTsKK+Wwj+axvei7iiA+IGNvbXBhY3RcLWNhcjsKK+ieuue1suWIgCA+IHNjcmV3ZHJpdmVyOwor5Ymv5L2c55SoID4gc2lkZVwtZWZmZWN0Owor5LqM5Y2B5YSEID4gdHdvXC1iaWxsaW9uOwor56e75qSN5oCnID4gcG9ydGFiaWxpdHk7CivkuozljYHkupQgPiB0d2VudHlcLWZpdmU7CivmspLllY/poYwgPiBub1wtcHJvYmxlbTsKK+esrOS6lOmhniA+IGNhdGVnb3J5XC01Owor6Z2e5a6Y5pa5ID4gdW5vZmZpY2lhbDsKK+Wci+awkem7qCA+IGt1b21pbnRhbmc7Civnmb3oibLpq5QgPiBsZXVjb3BsYXN0Owor5LiN6ICQ54WpID4gaW1wYXRpZW5jZTsKK+eZvuWIhueOhyA+IHBlcmNlbnRhZ2U7Civku6TniYznkrAgPiB0b2tlblwtcmluZzsKK+iHqueZveabuCA+IGNvbmZlc3Npb247CivlsZXopr3mnIMgPiBleGhpYml0aW9uOwor6auY6YCf546HID4gaGlnaFwtc3BlZWQ7CivlpKfln47luIIgPiBtYWpvclwtY2l0eTsKK+WWrOayu+aVpiA+IGdlb3JnZXRvd247Civnmb7liIbmr5QgPiBwZXJjZW50YWdlOwor5YKz6YGT6ICFID4gbWlzc2lvbmFyeTsKK+S4jeWPr+iDvSA+IGltcG9zc2libGU7CivpjITpn7PluLYgPiBhdWRpb1wtdGFwZTsKK+mMq+WuieWxsSA+IG1vdW50XC16aW9uOwor56Gs56OB55ukID4gaGFyZFwtZHJpdmU7Civnmb7liIbmlbggPiBwZXJjZW50YWdlOwor5q235Y+y5LiKID4gaGlzdG9yaWNhbDsKK+iomOW4s+WToSA+IGJvb2trZWVwZXI7Civkvb/lpLHmnJsgPiBkaXNhcHBvaW50Owor5om/5YyF5Lq6ID4gY29udHJhY3RvcjsKK+eJqeizquS4iiA+IG1hdGVyaWFsbHk7CivljYrlhazplosgPiBzZW1pXC1vdmVydDsKK+S9v+WFjemZpCA+IGdldFwtcmlkXC1vZjsKK+abtOiho+WupCA+IGNoYW5nZXJvb207CivotoXlqpLpq5QgPiBoeXBlcm1lZGlhOwor5LiN5piO56K6ID4gaW5kZWZpbml0ZTsKK+S4jeaZr+awoyA+IGRlcHJlc3Npb247Civos4fmnKzlrrYgPiBjYXBpdGFsaXN0Owor5LqM5omL6LKoID4gc2Vjb25kaGFuZDsKK+WCs+aVmeWjqyA+IG1pc3Npb25hcnk7CivmmJPmjqXov5EgPiBhY2Nlc3NpYmxlOwor5oOz5YOP5YqbID4gY29uY2VwdGlvbjsKK+acieaxuuW/gyA+IGRldGVybWluZWQ7CivmqYTmrJbmqLkgPiBvbGl2ZVwtdHJlZTsKK+eIreirlum7niA+IGNvbnRlbnRpb247CivopIfpm5zmgKcgPiBjb21wbGV4aXR5Owor5aW254mb5aC0ID4gZGFpcnlcLWZhcm07CivlrZfnr4DmlbggPiBieXRlXC1jb3VudDsKK+WHuueUn+WcsCA+IGJpcnRocGxhY2U7CivkuI3kuIvkuo4gPiBhc1wtbWFueVwtYXM7CivlpKflqpLpq5QgPiBtYWNyb21lZGlhOwor5YKZ5b+Y6YyEID4gbWVtb3JhbmR1bTsKK+aMqOWAi+WFkiA+IG9uZVwtYnlcLW9uZTsKK+WFhOW8n+acgyA+IGZyYXRlcm5pdHk7CivnlZnogbLmqZ8gPiBncmFtb3Bob25lOwor6buR6I6T5a2QID4gYmxhY2tiZXJyeTsKK+e1seioiOWtuCA+IHN0YXRpc3RpY3M7CivlnKjkuIvpnaIgPiB1bmRlcm5lYXRoOwor5LiN6K6K5YyWID4gaW52YXJpYWJseTsKK+mZjOeUn+S6uiA+IGFcLXN0cmFuZ2VyOwor5LiN6YGp55W2ID4gaW5hZGVxdWF0ZTsKK+mbu+imluiHuiA+IHR2XC1zdGF0aW9uOwor5Li75Yqb6ImmID4gYmF0dGxlc2hpcDsKK+ihjOS4jemAmiA+IHdvbicndFwtd29yazsKK+ertueIreiAhSA+IGNvbXBldGl0b3I7CivmnInns7vntbEgPiBzeXN0ZW1hdGljOwor55+t5pmC6ZaTID4gc2hvcnRcLXRlcm07CivmspLkurrkvY8gPiB1bm9jY3VwaWVkOwor5YuV54mp5a24ID4gem9vbG9naWNhbDsKK+ebp+ajruWgoSA+IGx1eGVtYm91cmc7CivnrKzkuIPljYEgPiBzZXZlbnRpZXRoOwor5Yaw5Yed5ZmoID4gY3J5b3Bob3J1czsKK+W/g+eQhuWtuCA+IHBzeWNob2xvZ3k7CivmsKPllpjllpggPiBicmVhdGhsZXNzOwor56ys5LiA5L6LID4gZmlyc3RcLWNhc2U7CivmkanlpKnmkZ8gPiBza3lzY3JhcGVyOwor5LiN6YCP5rC0ID4gd2F0ZXJwcm9vZjsKK+W+l+S4jeWIsCA+IGNhbm5vdFwtZ2V0Owor6YeN6KaB5oCnID4gaW1wb3J0YW5jZTsKK+aKgOihk+WToSA+IHRlY2huaWNpYW47CivpnZ7mraPlvI8gPiB1bm9mZmljaWFsOwor5ZGo5oGp5L6GID4gemhvdVwtZW5sYWk7CivmnInoiIjotqMgPiBpbnRlcmVzdGVkOwor5LiN57aT5oSPID4gY2FyZWxlc3NseTsKK+aJk+Wtl+apnyA+IHR5cGV3cml0ZXI7CivlgI3lop7lmaggPiBtdWx0aXBsaWVyOwor6YeR5bGs57eaID4gbWV0YWxcLXdpcmU7CivmnInohr3ph48gPiBjb3VyYWdlb3VzOwor6K2Y5Yil6JmfID4gaWRlbnRpZmllcjsKK+eUn+acieasiiA+IGJpcnRocmlnaHQ7CivmjIHljaHkurogPiBjYXJkaG9sZGVyOwor5Yi657mh5ZOBID4gZW1icm9pZGVyeTsKK+avm+a+pOadsSA+IG1hb1wtemVkb25nOwor5YWt5Y2B5LqUID4gc2l4dHlcLWZpdmU7CivlpJrlqpLpq5QgPiBtdWx0aW1lZGlhOwor5LiN5bmz5bi4ID4gcmVtYXJrYWJsZTsKK+aKteaKl+WKmyA+IHJlc2lzdGFuY2U7CivlpKfkuLvmlZkgPiBhcmNoYmlzaG9wOwor6Kmm566X6KGoID4gc3BlYWRzaGVldDsKK+eZveWPo+mQtSA+IHdoaXRlXC1pcm9uOwor56ys5Y2B5YWrID4gZWlnaHRlZW50aDsKK+Wvpumpl+WupCA+IGxhYm9yYXRvcnk7CivnrKzljYHkuZ0gPiBuaW5ldGVlbnRoOwor56ys5Y2B5LiJID4gdGhpcnRlZW50aDsKK+apn+mXnOi7iiA+IGxvY29tb3RpdmU7Civkv53mvZTnrrEgPiBsaXR0ZXJcLWJpbjsKK+iAgeW5tOS6uiA+IG9sZFwtcGVvcGxlOwor55m86IGy5rOVID4gaW50b25hdGlvbjsKK+itmOWIpeeivCA+IGlkZW50aWZpZXI7CivkuI3lubPlh6EgPiBtYXJ2ZWxsb3VzOwor5bSR5bSZ5bGxID4gbXRcLlwta3VubHVuOwor5Luj6KGo5ZyYID4gZGVsZWdhdGlvbjsKK+W9seWDj+aqlCA+IGltYWdlXC1maWxlOwor5bGF5L2P6ICFID4gaW5oYWJpdGFudDsKK+WCs+afk+eXhSA+IHBlc3RpbGVuY2U7CivnrKboqJjnkrAgPiB0b2tlblwtcmluZzsKK+Wbm+eZvuWEhCA+IDQwXC1iaWxsaW9uOwor55un5rWu5a6uID4gdGhlXC1sb3V2cmU7CivlkKbmsbrmrIogPiB2ZXRvXC1wb3dlcjsKK+W0h+aLnOiAhSA+IHdvcnNoaXBwZXI7CivmiLLliofljJYgPiB0aGVhdHJpY2FsOwor5ZWE5pyo6bOlID4gd29vZHBlY2tlcjsKK+mdnuebiOWIqSA+IG5vblwtcHJvZml0Owor5L2/5a655piTID4gZmFjaWxpdGF0ZTsKK+eglOeptuWToSA+IHJlc2VhcmNoZXI7Civnm67mk4rogIUgPiBleWV3aXRuZXNzOwor5bCI6ZaA5YyWID4gc3BlY2lhbGl6ZTsKK+aRqeaJmOi7iiA+IG1vdG9yY3ljbGU7CivmjInmiYvnpq4gPiBvcmRpbmF0aW9uOwor6KiC6LO86ICFID4gc3Vic2NyaWJlcjsKK+mhr+W+rumPoSA+IG1pY3Jvc2NvcGU7Civljp/nlJ/os6ogPiBwcm90b3BsYXNtOwor5aSa5pa56Z2iID4gbWFueVwtc2lkZWQ7CivmnIPplbflnJggPiBwcmVzaWRlbmN5Owor5paw6IGe5a24ID4gam91cm5hbGlzbTsKK+S4jeWumuipniA+IGluZmluaXRpdmU7CivlpKfmsKPlsaQgPiBhdG1vc3BoZXJlOwor5LiN57Ch5ZauID4gbm90XC1zaW1wbGU7Civlj5flgrflrrMgPiBiZVwtaW5qdXJlZDsKK+err+ezu+e1sSA+IGVuZFwtc3lzdGVtOwor5Luj5pu/6ICFID4gc3Vic3RpdHV0ZTsKK+S4ieeZvuWEhCA+IDMwXC1iaWxsaW9uOwor6Z2e5bCN56ixID4gYXN5bW1ldHJpYzsKK+eEoeeFmeeFpCA+IGFudGhyYWNpdGU7CivljYrmsbros70gPiBzZW1pZmluYWxzOwor6I6r6aCI5pyJID4gZ3JvdW5kbGVzczsKK+S4jeiyt+izrCA+IG5vdFwtYnV5XC1pdDsKK+Wls+WtuOeUnyA+IHNjaG9vbGdpcmw7CivkuI3oh6rlnKggPiB1bmVhc2luZXNzOwor5LiL5YCL5pyIID4gbmV4dFwtbW9udGg7Civpj4jot6/lsaQgPiBsaW5rXC1sYXllcjsKK+S4jeeUseW+lyA+IGNhbicndFwtaGVscDsKK+a6q+WSjOaApyA+IHRlbmRlcm5lc3M7CivmiYDmnInogIUgPiBwcm9wcmlldG9yOwor5LiK5YCL5pyIID4gbGFzdFwtbW9udGg7CivljYrnqbrkuK0gPiBpblwtbWlkXC1haXI7CivkuI3nrYnlvI8gPiBpbmVxdWFsaXR5Owor5pqX6ZaT5YWSID4gaW5uZXJcLXJvb207Civoh6rli5XljJYgPiBhdXRvbWF0aW9uOwor5Zau5pa56Z2iID4gdW5pbGF0ZXJhbDsKK+mBi+WLleWgtCA+IHBsYXlncm91bmQ7CivpmYTliqDniakgPiBjb21wbGVtZW50Owor5L2b5pWZ5b6SID4gYVwtYnVkZGhpc3Q7Civmk43oiLXlrqQgPiBwaWxvdGhvdXNlOwor6Zu75ZSx5qmfID4gcGhvbm9ncmFwaDsKK+a1geeoi+WcliA+IGZsb3dcLWNoYXJ0Owor55uj552j6ICFID4gc3VwZXJ2aXNvcjsKK+aJgOacieeJqSA+IGJlbG9uZ2luZ3M7CivkuozljYHkuIAgPiB0d2VudHlcLW9uZTsKK+epqeWumuaApyA+IHN0YWJpbGl0eTsKK+mAo+aOpeWZqCA+IGNvbm5lY3RvcjsKK+W9ouWuuei+rSA+IGFkamVjdGl2ZTsKK+WPr+W+l+WIsCA+IGF2YWlsYWJsZTsKK+enkeWtuOWutiA+IHNjaWVudGlzdDsKK+W/l+mhmOiAhSA+IHZvbHVudGVlcjsKK+aTpumCiueQgyA+IGVkZ2VcLWJhbGw7CivmgI7purzmqKMgPiBob3dcLWFib3V0Owor5omA5pyJ5qyKID4gb3duZXJzaGlwOwor55m95aCx57SZID4gbmV3c3ByaW50Owor6KiO6KuW5pyDID4gc3ltcG9zaXVtOwor5o6l5Y+X6ICFID4gcmVjaXBpZW50Owor5b2i5a656KmeID4gYWRqZWN0aXZlOwor5q+P5YCL5Lq6ID4gZXZlcnlib2R5Owor5LiN6IKy5oCnID4gc3RlcmlsaXR5Owor5qqi5p+l5ZOhID4gaW5zcGVjdG9yOwor6KGo54++5Z6LID4gcGhlbm90eXBlOwor55qu6Z6L5YygID4gc2hvZW1ha2VyOwor5L+d6K236ICFID4gcHJvdGVjdG9yOwor5YG95ZCb5a2QID4gaHlwb2NyeXRlOwor6IGy5piO5pu4ID4gc3RhdGVtZW50Owor6aas6LmE6ZC1ID4gaG9yc2VzaG9lOwor5pOU5p625bqKID4gc3RyZXRjaGVyOwor5LiN5a6M5ZaEID4gaW1wZXJmZWN0Owor5pm06Zuo6KGoID4gYmFyb21ldGVyOwor5Y2D56an5bm0ID4gbWlsbGVuaXVtOwor5L2/6JST5bu2ID4gdG9cLXNwcmVhZDsKK+aOpeePreS6uiA+IHN1Y2Nlc3NvcjsKK+WJquiyvOewvyA+IHNjcmFwYm9vazsKK+WBieaZtuWyqSA+IHBlZ21hdGl0ZTsKK+aMh+ekuuespiA+IGluZGljYXRvcjsKK+S/neaDoOW4qyA+IGNvbWZvcnRlcjsKK+W7uuevieW4qyA+IGFyY2hpdGVjdDsKK+WnlOWToeacgyA+IGNvbW1pdHRlZTsKK+iIqua1t+iAhSA+IG5hdmlnYXRvcjsKK+Wwj+WQg+W6lyA+IHNuYWNrXC1iYXI7Civntq3lo6vljaEgPiB2aXNhXC1jYXJkOwor5aW95aWH5b+DID4gY3VyaW9zaXR5Owor5pS/5rK75oCnID4gcG9saXRpY2FsOwor5ruR6byg5aKKID4gbW91c2VcLXBhZDsKK+aLnOeJqeaVmSA+IGZldGlzaGlzbTsKK+S9jumAn+eOhyA+IGxvd1wtc3BlZWQ7CivmlL/msrvlsYAgPiBwb2xpdGJ1cm87Civpm7bllK7llYYgPiB0cmFkZXNtYW47CivmlL/msrvlrrYgPiBzdGF0ZXNtYW47CivlronlhajluLYgPiBzZWF0XC1iZWx0Owor55m75buj5ZGKID4gYWR2ZXJ0aXNlOwor5pyJ5rS75YqbID4gZW5lcmdldGljOwor6aaZ5qqz6YWSID4gY2hhbXBhZ25lOwor57ac5ZCI5oCnID4gc3ludGhlc2lzOwor5pGB6YeY5YWSID4gdGh1bWJ0YWNrOwor5paH5YW35ZWGID4gc3RhdGlvbmVyOwor5paw5Yqg5Z2hID4gc2luZ2Fwb3JlOwor6aCY5LqL6aSoID4gY29uc3VsYXRlOwor6LaF6IGv57WQID4gaHlwZXJsaW5rOwor5L+d55qH6buoID4gcm95YWxpc3RzOwor5p2x5YyX5pa5ID4gbm9ydGhlYXN0Owor5aW96JCK5aGiID4gaG9sbHl3b29kOwor5oyB5LmF5oCnID4gY29uc3RhbmN5Owor55m96KGA55eFID4gbGV1a2FlbWlhOwor5YWo5LiW55WMID4gd29ybGR3aWRlOwor57m85om/6ICFID4gc3VjY2Vzc29yOwor5oqX6K2w6ICFID4gcHJvdGVzdGVyOwor6KGj5bi96ZaTID4gY2xvYWtyb29tOwor5LiA5Yy56aasID4gb25lXC1ob3JzZTsKK+acieaZguWAmSA+IHNvbWV0aW1lczsKK+WAmemBuOS6uiA+IGNhbmRpZGF0ZTsKK+WQkeWMl+WcsCA+IG5vcnRod2FyZDsKK+S4i+axuuW/gyA+IGRldGVybWluZTsKK+S/neitieS6uiA+IGd1YXJhbnRvcjsKK+S4iuaYn+acnyA+IGxhc3RcLXdlZWs7CivnrKzkuozljYEgPiB0d2VudGlldGg7CivnnaHpgY7poK0gPiBvdmVyc2xlZXA7CivliKnmnKroqJggPiBsZXZpdGljdXM7Civnq6XlrZDou40gPiBib3lcLXNjb3V0Owor5Zub5Y2B5YWtID4gZm9ydHlcLXNpeDsKK+esrOS5neWNgSA+IG5pbmV0aWV0aDsKK+i7iuWJjeeHiCA+IGhlYWRsaWdodDsKK+Wuh+iIquWToSA+IGFzdHJvbmF1dDsKK+S9v+WbsOeqmCA+IGVtYmFycmFzczsKK+W3p+WFi+WKmyA+IGNob2NvbGF0ZTsKK+aciembhOW/gyA+IGFtYml0aW91czsKK+iZleeQhuWZqCA+IHByb2Nlc3NvcjsKK+efpeabtOmzpSA+IHJlZGJyZWFzdDsKK+WVn+ekuuiAhSA+IHJldmVsYXRvcjsKK+esrOS4ieWNgSA+IHRoaXJ0aWV0aDsKK+eZvemOouekpiA+IHNjaGVlbGl0ZTsKK+aJi+aPkOWMhSA+IFwoaGFuZFwpYmFnOwor5oqA6KGT5oCnID4gdGVjaG5pY2FsOwor5LiN6Kqg5a+mID4gZGlzaG9uZXN0Owor6LGM6LGG57KlID4gcGVhXC1ncnVlbDsKK+iuiua1geWZqCA+IGNvbnZlcnRlcjsKK+a9m+awtOiJhyA+IHN1Ym1hcmluZTsKK+aJs+mBk+WToSA+IHBvaW50c21hbjsKK+e5vOS7u+iAhSA+IHN1Y2Nlc3NvcjsKK+WFqeaYn+acnyA+IGZvcnRuaWdodDsKK+agvOW8j+WMliA+IHRvXC1mb3JtYXQ7CivmjqHnn7PloLQgPiBzdG9uZVwtcGl0Owor5Yqg5YuS5q+UID4gY2FyaWJiZWFuOwor6Zu75aCx5qmfID4gdGVsZWdyYXBoOwor5bel5L2c6KGoID4gd29ya3NoZWV0Owor5pq06aKo6ZuqID4gc25vd3N0b3JtOwor5pq06aKo6ZuoID4gcmFpbnN0b3JtOwor5paH5a2X5qqUID4gdGV4dFwtZmlsZTsKK+iyv+aYk+aIsCA+IHRyYWRlXC13YXI7Civkv53oqLzkurogPiBndWFyYW50b3I7CivlpYnmib/ogIUgPiBmbGF0dGVyZXI7CivmjIfmj67ogIUgPiBjb25kdWN0b3I7Civlj4PogIPmm7ggPiByZWZlcmVuY2U7Civph53lsI3mgKcgPiBkaXJlY3Rpb247CivljYroobDmnJ8gPiBoYWxmXC1saWZlOwor5ouJ5paQ54m5ID4gbGFmYXlldHRlOwor6KaB5LiN54S2ID4gb3RoZXJ3aXNlOwor5LiN57WQ5p6cID4gZnJ1aXRsZXNzOwor55Sz6KuL5Lq6ID4gYXBwbGljYW50Owor5Ye654mI6ICFID4gcHVibGlzaGVyOwor5pys5pif5pyfID4gdGhpc1wtd2VlazsKK+aAquS4jeW+lyA+IG5vXC13b25kZXI7CivlibXpgKDlipsgPiBpbmdlbnVpdHk7Civlj6/lrrnlv40gPiB0b2xlcmFibGU7Civln7rmnKzkuIogPiBiYXNpY2FsbHk7CivnqLvojYnkurogPiBzY2FyZWNyb3c7CivlpJrnlKjmiLYgPiBtdWx0aXVzZXI7Civnvr3mr5vnkIMgPiBiYWRtaW50b247CivmlZHorbfou4ogPiBhbWJ1bGFuY2U7CivnrKzljYHlha0gPiBzaXh0ZWVudGg7Civkvb/nlJ/msKMgPiBkaXNwbGVhc2U7CivkuI3lhazmraMgPiBpbmp1c3RpY2U7CivlhYnlsITnt5ogPiBsaWdodFwtcmF5Owor5aSW5ZyL5Lq6ID4gZm9yZWlnbmVyOwor56ys5Y2B5LqUID4gZmlmdGVlbnRoOwor6Zi/5qC55bu3ID4gYXJnZW50aW5hOwor5YG95ZaE6ICFID4gaHlwb2NyaXRlOwor6J665peL5qezID4gcHJvcGVsbGVyOwor6LKv5rC06JmVID4gcmVzZXJ2b2lyOwor5Y2K5rWB6auUID4gc2VtaWZsdWlkOwor5b6B5pyN6ICFID4gY29ucXVlcm9yOwor5o2V6byg5ZmoID4gbW91c2V0cmFwOwor6K6K6Imy6b6NID4gY2hhbWVsZW9uOwor5bCN5oqX6ICFID4gYWR2ZXJzYXJ5Owor6JaE5rK55bGkID4gb2lsXC1zaGVldDsKK+eEoeefpeimuiA+IHNlbnNlbGVzczsKK+awo+Wjk+ioiCA+IGJhcm9tZXRlcjsKK+eZveS6keavjSA+IG11c2Nvdml0ZTsKK+W9q+WIu+WTgSA+IHNjdWxwdHVyZTsKK+aWsOiBnueVjCA+IHRoZVwtcHJlc3M7CivkuIDljYPlmbggPiAxMDAwXC10b25zOwor5LiN6KaP5YmHID4gaXJyZWd1bGFyOwor5rOi54uA6ZuyID4gdW5kdWxhdHVzOwor5pO06Z+z5ZmoID4gbWVnYXBob25lOwor5LiN6KaL5LqGID4gZGlzYXBwZWFyOwor5Lmd5pyI5Lu9ID4gc2VwdGVtYmVyOwor6LaF5paH5pysID4gaHlwZXJ0ZXh0Owor6K6A5pu45Lq6ID4gYVwtc2Nob2xhcjsKK+aMh+aPruWumCA+IGNvbW1hbmRlcjsKK+W8leeUqOWPpSA+IHF1b3RhdGlvbjsKK+WNg+i1q+iMsiA+IGtpbG9oZXJ0ejsKK+WFq+WAjemrlCA+IG9jdG9wbG9pZDsKK+iiq+emgeatoiA+IGZvcmJpZGRlbjsKK+S4jeiHqueEtiA+IHVubmF0dXJhbDsKK+mrmOenkeaKgCA+IGhpZ2hcLXRlY2g7CivmgKrniankvLwgPiBtb25zdHJvdXM7CivlhrDmo43lhZIgPiBpY2VcLWxvbGx5Owor55m954+t5YWSID4gZGF5XC1zaGlmdDsKK+aYn+acn+S4iSA+IHdlZG5lc2RheTsKK+mHjuigu+S6uiA+IGJhcmJhcmlhbjsKK+WNgeWtl+i7jSA+IGNydXNhZGVyczsKK+azleWci+S6uiA+IGZyZW5jaG1hbjsKK+S6lOWNg+WZuCA+IDUwMDBcLXRvbnM7CivpgYfpm6PoiLkgPiBzaGlwd3JlY2s7Civlh7rluK3ogIUgPiBhdHRlbmRhbnQ7Civnvornmq7ntJkgPiBwYXJjaG1lbnQ7Civlj43oiaboiYcgPiBhbnRpXC1zaGlwOwor5YWn6KGj6KSyID4gdW5kZXJ3ZWFyOwor5b+F6ZyA5ZOBID4gbmVjZXNzaXR5Owor5Yaw5reH5reLID4gaWNlXC1jcmVhbTsKK+efs+eBsOefsyA+IGxpbWVzdG9uZTsKK+S/rumBk+mZoiA+IG1vbmFzdGVyeTsKK+ilv+WMl+aWuSA+IG5vcnRod2VzdDsKK+acm+mBoOmPoSA+IHRlbGVzY29wZTsKK+i2heaWh+S7tiA+IGh5cGVydGV4dDsKK+aTuuioreWFkiA+IG9ybmFtZW50czsKK+WkquWlveS6hiA+IHZlcnlcLWdvb2Q7CivmnKzlubTluqYgPiB0aGlzXC15ZWFyOwor5b+D6Z2I5LiKID4gc3Bpcml0dWFsOwor5aSp5paH5a24ID4gYXN0cm9ub215Owor5be05q+U5aalID4gYmFyYml0b25lOwor5a+m6LOq5LiKID4gdmlydHVhbGx5Owor5pyJ56+A5Yi2ID4gdGVtcGVyYXRlOwor5pyJ5oSP6K2YID4gY29uc2Npb3VzOwor5Y+X5a6z6ICFID4gY2FzdWx0aWVzOwor5LiN5a6M576OID4gZGVmZWN0aXZlOwor5oOF57eS5YyWID4gZW1vdGlvbmFsOwor5pSv5oyB6ICFID4gc3VwcG9ydGVyOwor5pW45LiN55uhID4gY291bnRsZXNzOwor5YCf5pu45ZauID4gYm9va1wtc2xpcDsKK+acieemruiyjCA+IGNvdXJ0ZW91czsKK+esrOWFq+WNgSA+IGVpZ2h0aWV0aDsKK+mHjOeoi+eikSA+IG1pbGVzdG9uZTsKK+S4jeaDhemhmCA+IHVud2lsbGluZzsKK+S4i+Wumue+qSA+IHRvXC1kZWZpbmU7CivlsI3kuI3otbcgPiBpJydtXC1zb3JyeTsKK+WBh+ixoeeJmSA+IGNlbGx1bG9pZDsKK+mZjeiQveWCmCA+IHBhcmFjaHV0ZTsKK+S4jeiCsueXhyA+IHN0ZXJpbGl0eTsKK+W/heimgeaApyA+IG5lY2Vzc2l0eTsKK+aVuOS4jea4hSA+IGNvdW50bGVzczsKK+izvOiyt+iAhSA+IHB1cmNoYXNlcjsKK+Wkp+aVmeWggiA+IGNhdGhlZHJhbDsKK+e1hOe5lOiAhSA+IG9yZ2FuaXplcjsKK+iBlui/reWTpSA+IHNhblwtZGllZ287CivplbfmlrnlvaIgPiByZWN0YW5nbGU7CivnlJ/mrpblipsgPiBmZXJ0aWxpdHk7CivngbDnjbXniqwgPiBncmV5aG91bmQ7Civnv5LmhaPmgKcgPiBjdXN0b21hcnk7Civnmb3lhafpmpwgPiBjYXRhcmFjdDsKK+Wkp+evt+i7iiA+IHNjaG9vbmVyOwor55uj6K235Lq6ID4gZ3VhcmRpYW47CivkuI3lkIjpgakgPiBpbXByb3BlcjsKK+ingOWvn+iAhSA+IG9ic2VydmVyOwor6Jel5YqR5aOrID4gZHJ1Z2dpc3Q7CivkuI3kv6Hku7sgPiBtaXN0cnVzdDsKK+WboOeJuee2siA+IGludGVybmV0Owor5bCN56ix5oCnID4gc3ltbWV0cnk7CivmqqLmuKzlmaggPiBkZXRlY3RvcjsKK+mtlOihk+W4qyA+IG1hZ2ljaWFuOwor5LiN5py955qEID4gaW1tb3J0YWw7Civmrbflj7LmgKcgPiBoaXN0b3JpYzsKK+aquOaqrOawtCA+IGxlbW9uYWRlOwor5Lul5aSq57ayID4gZXRoZXJuZXQ7CivosqDph43mk5QgPiBidXJkZW5lZDsKK+aOoua4rOWZqCA+IGRldGVjdG9yOwor5Y2B5LqM5pyIID4gZGVjZW1iZXI7Civmk6bntrLnkIMgPiBuZXRcLWJhbGw7CivogZbkv53nvoUgPiBzdFwuXC1wYXVsOwor6KW/6KOh54i+ID4gY3lyaWxsaWM7CivlpbPlranlhZIgPiBkYXVnaHRlcjsKK+acieW+t+ihjCA+IHZpcnR1b3VzOwor5Y+v5pOm5a+rID4gZXJhc2FibGU7CivniafnvorogIUgPiBzaGVwaGVyZDsKK+acgOWWnOaEmyA+IGZhdm9yaXRlOwor562G6KiY5pysID4gbm90ZWJvb2s7CivolrDooaPojYkgPiBsYXZlbmRlcjsKK+S4jeW/heimgSA+IG5lZWRsZXNzOwor6KuL6aGY5pu4ID4gcGV0aXRpb247CivmipXos4fogIUgPiBpbnZlc3RvcjsKK+WvhOeUn+eJqSA+IHBhcmFzaXRlOwor6IKv5aGU5Z+6ID4ga2VudHVja3k7Civmn6zln5Tlr6ggPiBjYW1ib2RpYTsKK+S4gOWwj+aZgiA+IG9uZVwtaG91cjsKK+S6uuihjOmBkyA+IHNpZGV3YWxrOwor5a6J5YWo5oCnID4gc2VjdXJpdHk7Civlho3kv53oqLwgPiByZWFzc3VyZTsKK+aUv+ayu+WtuCA+IHBvbGl0aWNzOwor6KeA5a+f5a62ID4gb2JzZXJ2ZXI7Civpm57lsL7phZIgPiBjb2NrdGFpbDsKK+aphOaslueQgyA+IGZvb3RiYWxsOwor5bmz5bqV6Y2LID4gc2F1Y2VwYW47CivntIDlv7XnopEgPiBtb251bWVudDsKK+S+teWFpeiAhSA+IGludHJ1ZGVyOwor5pS56Z2p6ICFID4gcmVmb3JtZXI7CivmiYvmj5DnrrEgPiBzdWl0Y2FzZTsKK+S4jeWQjOaEjyA+IGRpc2FncmVlOwor5YWx5ZKM5ZyLID4gcmVwdWJsaWM7Civmo5Lno6jmqZ8gPiByb2RcLW1pbGw7Civmr5Tnm67prZogPiBmbGF0ZmlzaDsKK+Wkp+WxoOauuiA+IG1hc3NhY3JlOwor5bCP5aSc5puyID4gc2VyZW5hZGU7CivlsI/mqJnpoYwgPiBzdWJ0aXRsZTsKK+acieapn+mrlCA+IG9yZ2FuaXNtOwor5q276KGa6KGVID4gZGVhZFwtZW5kOwor5Lqk6Z+/5puyID4gc3ltcGhvbnk7CivmmYLplpPooaggPiBzY2hlZHVsZTsKK+mgreWQkeWJjSA+IGhlYWRsb25nOwor5o6i6Zqq6ICFID4gZXhwbG9yZXI7Civlj5fpm6PogIUgPiBzdWZmZXJlcjsKK+W3tOaLieWcrSA+IHBhcmFndWF5Owor56ys5LiA5q2lID4gc3RlcFwtb25lOwor6Kq/5ZGz5rGBID4gZHJlc3Npbmc7Civmlbjmk5rluqsgPiBkYXRhYmFzZTsKK+WCteasiuS6uiA+IGNyZWRpdG9yOwor5byf5YWE5YCRID4gYnJldGhyZW47CivlsI/oqqrlrrYgPiBub3ZlbGlzdDsKK+esrOS6lOWNgSA+IGZpZnRpZXRoOwor5LiJ5piO5rK7ID4gc2FuZHdpY2g7CivlgqzljJblipEgPiBjYXRhbHlzdDsKK+a2iOiyu+iAhSA+IGNvbnN1bWVyOwor54mn576K5Lq6ID4gc2hlcGhlcmQ7CivmnInlvYjmgKcgPiBmbGV4aWJsZTsKK+e2k+mZuOi3ryA+IG92ZXJsYW5kOwor5Zyo5oi25aSWID4gb3V0ZG9vcnM7Civmk6bmo5LnkIMgPiBmb3VsXC10aXA7CivkuK3kuJbntIAgPiBtZWRpZXZhbDsKK+WCvuiBveiAhSA+IGxpc3RlbmVyOwor5o6l5pS25ZmoID4gcmVjZWl2ZXI7Civos4fmlpnluqsgPiBkYXRhYmFzZTsKK+auuuS6uueKryA+IG11cmRlcmVyOwor6JGh6JCE54mZID4gcG9ydHVnYWw7CivkuI3mraPluLggPiBhYm5vcm1hbDsKK+WFp+mDqOe2siA+IGludHJhbmV0Owor5LiN6YCP5rCjID4gYWlydGlnaHQ7CivmmpbmsKPmqZ8gPiByYWRpYXRvcjsKK+mYv+iCr+iJsiA+IGFya2Fuc2FzOwor5pWZ56eR5pu4ID4gdGV4dGJvb2s7CivpvJPlkLnogIUgPiBhZHZvY2F0ZTsKK+WcsOS4i+WupCA+IGJhc2VtZW50Owor5aSn6IKa5a2QID4gcHJlZ25hbnQ7CivkuI3pgY7mhI8gPiBiZVwtc29ycnk7CivlhpLniq/ogIUgPiBvZmZlbmRlcjsKK+S/neecn+W6piA+IGZpZGVsaXR5Owor5LiN6auU6Z2iID4gc2hhbWVmdWw7CivlsI/ooZ3nqoEgPiBza2lybWlzaDsKK+aOkuawtOa4oCA+IGRyYWluYWdlOwor6bq76YaJ5YqRID4gbmFyY290aWM7CivooqvkvrXlrrMgPiBzdHJpY2tlbjsKK+ioiOeul+apnyA+IGNvbXB1dGVyOwor55m95pyo6ICzID4gdHJlbWVsbGE7Civnjajoo4HogIUgPiBkaWN0YXRvcjsKK+iomOmMhOWToSA+IHJlY29yZGVyOwor6JiH5qC86JitID4gc2NvdGxhbmQ7CivokaHokITlnJIgPiB2aW5leWFyZDsKK+S9v+iIiOWlriA+IGV4Y2l0aW5nOwor56ys5Y2B5LiAID4gZWxldmVudGg7CivmlrnnqIvlvI8gPiBlcXVhdGlvbjsKK+eEoee3mumbuyA+IHdpcmVsZXNzOwor5b2r5Yi75a62ID4gc2N1bHB0b3I7Civlt6XllYbnlYwgPiBpbmR1c3RyeTsKK+mYv+aJmOWTgSA+IGF0cm9waW5lOwor5Zyw5Y2A5oCnID4gcmVnaW9uYWw7Civoo53po77niakgPiBvcm5hbWVudDsKK+S4ieinkuW9oiA+IHRyaWFuZ2xlOwor6KqY5ouQ6ICFID4gYWJkdWN0b3I7CivmiLLliofmgKcgPiBkcmFtYXRpYzsKK+aHsue9sOaApyA+IHB1bml0aXZlOwor5YWr6KeS5qWTID4gYWxhbmdpdW07CivljJfmtbfpgZMgPiBob2trYWlkbzsKK+S9juaIkOacrCA+IGxvd1wtY29zdDsKK+aYjuS/oeeJhyA+IHBvc3RjYXJkOwor5pWR6LSW5Li7ID4gcmVkZWVtZXI7CivnlJ/lkb3lipsgPiB2aXRhbGl0eTsKK+aJgOWcqOWcsCA+IGxvY2F0aW9uOwor55Si6YeP5aSaID4gZnJ1aXRmdWw7CivnnIvlrojogIUgPiB3YXRjaG1hbjsKK+S9lOmgmOiAhSA+IG9jY3VwYW50Owor5pqX5Zyw6KOhID4gc2VjcmV0bHk7CivkvY7osrvnlKggPiBsb3dcLWNvc3Q7Civkvb/lkIPpqZogPiBhc3RvbmlzaDsKK+W5uOWtmOiAhSA+IHN1cnZpdm9yOwor5L2/6aet5oCVID4gZnJpZ2h0ZW47Civmq7voirHojYkgPiBwcmltcm9zZTsKK+aYn+acn+WbmyA+IHRodXJzZGF5Owor5rG65a6a5oCnID4gZGVjaXNpdmU7Civml6XogLPmm7wgPiBnZXJtYW5pYzsKK+W5vuS9leWtuCA+IGdlb21ldHJ5Owor5YK+5ZCR5pa8ID4gcHJvbmVcLXRvOwor55Sf6YKE6ICFID4gc3Vydml2b3I7CivmmJ/mnJ/lha0gPiBzYXR1cmRheTsKK+mYsuWuiOiAhSA+IGRlZmVuZGVyOwor5pyJ5YO55YC8ID4gdmFsdWFibGU7CivliLrmv4DniakgPiBzdGltdWx1czsKK+S4jeS/oeeUqCA+IGRpc3RydXN0Owor5o+Q5L6b6Ku4ID4gcHJvdmlkZXI7Civlt6XnqIvluKsgPiBlbmdpbmVlcjsKK+S4ree5vOWZqCA+IHJlcGVhdGVyOwor5rSL55C155C2ID4gbWFuZG9saW47Civmg6HkvZzliocgPiBtaXNjaGllZjsKK+WtkOWNiOe3miA+IG1lcmlkaWFuOwor6KO95L2c6ICFID4gcHJvZHVjZXI7CivkuI3lnKjkuY4gPiBub3RcLW1pbmQ7Civpn7PmqILlrrYgPiBtdXNpY2lhbjsKK+S9v+m6u+eXuiA+IHBhcmFseXplOwor5Y2D5a2X56+AID4ga2lsb2J5dGU7CivororpmLvlmaggPiB0aGVvc3RhdDsKK+Wls+aIv+adsSA+IGxhbmRsYWR5Owor5LiN5YC85b6XID4gdW53b3J0aHk7Civmj5DkvpvogIUgPiBzdXBwbGllcjsKK+WgheWbuuaApyA+IGZpcm1uZXNzOwor55m95YyW55eFID4gYWxiaW5pc207CivnrKzlha3ljYEgPiBzaXh0aWV0aDsKK+aWh+aYjuWMliA+IGNpdmlsaXplOwor5aSW5Lqk5a6YID4gZGlwbG9tYXQ7Civnmb3pm7Lnn7MgPiBkb2xvbWl0ZTsKK+S9v+e/kuaFoyA+IGFjY3VzdG9tOwor5Yaw5pm255+zID4gY3J5b2xpdGU7CivkuI3lsI/lv4MgPiBoZWVkbGVzczsKK+WvjOiJsuW9qSA+IGNvbG9yZnVsOwor57SN56iF5Lq6ID4gdGF4cGF5ZXI7Civlho3lh7rnj74gPiByZWFwcGVhcjsKK+mdoOiDjOakhSA+IGFybWNoYWlyOwor5pON5L2c6ICFID4gb3BlcmF0b3I7CivlhajlnIvmgKcgPiBuYXRpb25hbDsKK+e1sueLgOeJqSA+IGZpbGFtZW50Owor55m85piO5a62ID4gaW52ZW50b3I7Civol6XlipHluKsgPiBkcnVnZ2lzdDsKK+S4jeaAjum6vCA+IG5vdFwtdmVyeTsKK+Wkp+ilv+a0iyA+IGF0bGFudGljOwor55yL5b6X6KaLID4gdmlzaWJsZTsKK+acieizh+agvCA+IGVudGl0bGU7CivlnJPnn7PpoK0gPiBib3VsZGVyOwor5aWn5Zyw5YipID4gYXVzdHJpYTsKK+WCs+mBk+mDqCA+IG1pc3Npb247CivlibXkuJbntIAgPiBnZW5lc2lzOwor5Y2D5L2N5YWDID4ga2lsb2JpdDsKK+aPmuiBsuWZqCA+IHNwZWFrZXI7CivnrqHnkIblk6EgPiBtYW5hZ2VyOwor6ICB6LOH5qC8ID4gdmV0ZXJhbjsKK+mHkemKgOWhiiA+IGJ1bGxpb247CivmspnkuIHprZogPiBzYXJkaW5lOwor5Ye657SN5ZOhID4gY2FzaGllcjsKK+aEm+mBiueOqSA+IHBsYXlmdWw7Civpi7znkLTlrrYgPiBwaWFuaXN0Owor6KiI5pW46ICFID4gY291bnRlcjsKK+ino+WJluWtuCA+IGFuYXRvbXk7CivmnInlrbjllY8gPiBsZWFybmVkOwor5Y2K5ZCK5a2QID4gZGFiYmxlcjsKK+WkqeiKseadvyA+IGNlaWxpbmc7CivlpKfnm6TlrZAgPiBwbGF0dGVyOwor5LiN6IO95LiNID4gaGF2ZVwtdG87Civlh7rlhaXlj6MgPiBnYXRld2F5Owor6LW355q657SLID4gc2hyaXZlbDsKK+ayueWFiea8hiA+IHZhcm5pc2g7CivmiZjlhZLmiYAgPiBudXJzZXJ5Owor6Im357SF6ImyID4gY3JpbXNvbjsKK+eJueioseeLgCA+IGNoYXJ0ZXI7Civmi5bmm7PmqZ8gPiB0cmFjdG9yOwor6aCQ6KiA5a62ID4gcHJvcGhldDsKK+iDjOWPm+iAhSA+IHRyYWl0b3I7CivlpKfkvb/ppKggPiBlbWJhc3N5Owor5aSn6I2J5Y6fID4gcHJhaXJpZTsKK+eJqeeQhuWtuCA+IHBoeXNpY3M7CivkuI3ogb3lkb0gPiBkaXNvYmV5Owor57Si6aas6KOhID4gc29tYWxpYTsKK+W7o+aSree2siA+IG5ldHdvcms7Civlt7TmoLzpgZQgPiBiYWdoZGFkOwor6YqA6KGM5qWtID4gYmFua2luZzsKK+aJi+aOqOi7iiA+IHRyb2xsZXk7Civli57li5XogIUgPiBsYWJvcmVyOwor576O5rSy6LG5ID4gcGFudGhlcjsKK+iKseW0l+efsyA+IGdyYW5pdGU7CivlnKjlhbbkuK0gPiB0aGVyZWluOwor5LiN5ZCI5rOVID4gaWxsZWdhbDsKK+aiteW4neWyoSA+IHZhdGljYW47CivlkIznvqnlrZcgPiBzeW5vbnltOwor5oSb5ZyL6ICFID4gcGF0cmlvdDsKK+Wls+S4u+S6uiA+IGhvc3Rlc3M7Civnmb3mprTnn7MgPiBsZXVjaXRlOwor5L2g6Ieq5bexID4gdGh5c2VsZjsKK+iHqueUsea0viA+IGxpYmVyYWw7CivonqLngavon7IgPiBmaXJlZmx5Owor55m+5YiG5LmLID4gcGVyY2VudDsKK+mshue3iuW4tiA+IGVsYXN0aWM7Civlr4Tlrr/nlJ8gPiBib2FyZGVyOwor5Y+X5q2h6L+OID4gcG9wdWxhcjsKK+mjm+apn+WgtCA+IGFpcnBvcnQ7CivoqIjmlbjlmaggPiBjb3VudGVyOwor5a+m6Zqb5LiKID4gaW5cLWZhY3Q7Civlj43mh4nloIYgPiByZWFjdG9yOwor55Ww5pWZ5b6SID4gaGVhdGhlbjsKK+WklumCpuS6uiA+IGdlbnRpbGU7Civnp7vmsJHogIUgPiBtaWdyYW50Owor5LiN5ZCJ5YipID4gb21pbm91czsKK+WJtemAoOiAhSA+IGNyZWF0b3I7CivnhpTnpKbniJAgPiBmdXJuYWNlOwor5aWz6Iux6ZuEID4gaGVyb2luZTsKK+WFp+e+heeVoiA+IG5haXJvYmk7Civlj5vpgIbogIUgPiB0cmFpdG9yOwor5L2/6auY6LK0ID4gZGlnbmlmeTsKK+WcsOizquWtuCA+IGdlb2xvZ3k7Civpl5zpjbXoqZ4gPiBrZXl3b3JkOwor5be05p2+566hID4gYmFzc29vbjsKK+W4g+mahui/qiA+IGJ1cnVuZGk7CivlhYXpm7vlmaggPiBjaGFyZ2VyOwor6JKZ5aSn5ou/ID4gbW9udGFuYTsKK+eCreeWveeXhSA+IGFudGhyYXg7Civlj7Llr4bnibkgPiBzY2htaXR0Owor5a+M5aOr6YCaID4gZnVqaXRzdTsKK+eDueiqv+ihkyA+IGNvb2tlcnk7CivljbDliLfogIUgPiBwcmludGVyOwor5re35ZCI54mpID4gbWl4dHVyZTsKK+mYv+WFi+WAqyA+IGFjaGVyb247CivnhKHnpZ7oq5YgPiBhdGhlaXNtOwor5LiN5YuV5pCWID4gdW5tb3ZlZDsKK+maseiXj+iZlSA+IHNoZWx0ZXI7Civmirzmspnpvo0gPiBhYnNhbG9tOwor5YKs55yg5puyID4gbHVsbGFieTsKK+eJm+mgreeKrCA+IGJ1bGxkb2c7Civkvb/prZTms5UgPiBjb25qdXJlOwor5ZC55Y+j5ZOoID4gd2hpc3RsZTsKK+WuieS5g+i/kSA+IGFuYWxnaW47Civom4vnmb3os6ogPiBwcm90ZWluOwor6Iqd5Yqg5ZOlID4gY2hpY2FnbzsKK+WFq+W4tumtmiA+IG9jdG9wdXM7CivmtJfooaPlupcgPiBsYXVuZHJ5Owor5LiN5b6X5YuBID4gYXdrd2FyZDsKK+WNiueTtumGiyA+IGRhYmJsZXI7CivplbfpoLjpub8gPiBnaXJhZmZlOwor5aWz6auY6Z+zID4gc29wcmFubzsKK+avlOWIqeaZgiA+IGJlbGdpdW07CivkuI3oqr/lkowgPiBkaXNjb3JkOwor5pyJ6Zmw5b2xID4gc2hhZG93eTsKK+aMh+mXnOevgCA+IGtudWNrbGU7CivlubPluLjml6UgPiB3ZWVrZGF5Owor5YSy6JeP5a6kID4gc3RvcmFnZTsKK+WMiOeJmeWIqSA+IGh1bmdhcnk7CivlopPoqozpipggPiBlcGl0YXBoOwor5LiA5pyD5YWSID4gYVwtd2hpbGU7CivkuI3pgZPlvrcgPiBpbW1vcmFsOwor54OP5YWL6JitID4gdWtyYWluZTsKK+WcqOWupOWFpyA+IGluZG9vcnM7CivkuI3pm6LlhZIgPiBub3RcLWJhZDsKK+eZveibi+eZvSA+IGFsYnVtaW47CivkuLvluK3oh7ogPiByb3N0cnVtOwor6aGe5Zu66YaHID4gc3Rlcm9pZDsKK+ipleitsOacgyA+IGNvdW5jaWw7CivmnInluIzmnJsgPiBob3BlZnVsOwor5YK35a+S55eHID4gdHlwaG9pZDsKK+WIsOmCo+ijoSA+IHRoaXRoZXI7CivppIrogIHph5EgPiBwZW5zaW9uOwor552h55yg6ICFID4gc2xlZXBlcjsKK+WWmOWQgeWQgSA+IHRvXC1ibG93Owor5bCP5YaK5a2QID4gYm9va2xldDsKK+acquatpuijnSA+IHVuYXJtZWQ7CivluLbntIXoibIgPiByZWRkaXNoOwor5ZCI5aSl5Lq6ID4gcGFydG5lcjsKK+acieW5q+WKqSA+IGhlbHBmdWw7CivpmL/mi4nkvK8gPiBhcmFiaWFuOwor6Zi/5ouJ5LiBID4gYWxhZGRpbjsKK+S4jeimuuWvnyA+IHVuYXdhcmU7CivnlJjol43oj5wgPiBjYWJiYWdlOwor5aWz5L+u6YGTID4gY29udmVudDsKK+eZvOePvueJqSA+IGZpbmRpbmc7CivlnKjkuIvmlrkgPiBiZW5lYXRoOwor6JK45rG95qmfID4gc3RlYW1lcjsKK+Wwj+eAkeW4gyA+IGNhc2NhZGU7CivnrKzljYHkuowgPiB0d2VsZnRoOwor5be05LiN5b6XID4gYW54aW91czsKK+acquaxuuWumiA+IHBlbmRpbmc7Civml4XpgYrogIUgPiB0b3VyaXN0Owor5Y+X6KiX5Lq6ID4gdHJ1c3RlZTsKK+imi+itieS6uiA+IHdpdG5lc3M7Civnn7PljZflsawgPiBoZWF0aGVyOwor5ZyW5pu46aSoID4gbGlicmFyeTsKK+iWhOeDpOmkhSA+IHBhbmNha2U7Civmr5LojYnlkI0gPiBoZW1sb2NrOwor5Zyw5bmz57eaID4gaG9yaXpvbjsKK+WlueiHquW3sSA+IGhlcnNlbGY7Civkvb/lraTnq4sgPiBpc29sYXRlOwor55+u5aOv57SgID4gY3ljb2NlbDsKK+WQkeS9leiZlSA+IHdoaXRoZXI7CivnsYPmnb/nkIMgPiByZWJvdW5kOwor6IG95b6X6KaLID4gYXVkaWJsZTsKK+WBmuemseWRiiA+IHRvXC1wcmF5Owor55m+5oWV5aSnID4gYmVybXVkYTsKK+acieainee0iyA+IHN0cmlwZWQ7Civlronmga/ml6UgPiBzYWJiYXRoOwor5LiN5YCS57+BID4gdHVtYmxlcjsKK+ijgee0meapnyA+IHRyaW1tZXI7CivkuIDpg6jliIYgPiBwb3J0aW9uOwor5oe35pW15oSPID4gaG9zdGlsZTsKK+WJteeri+iAhSA+IGZvdW5kZXI7Civntq3ku5blkb0gPiB2aXRhbWluOwor6KOd572u54mpID4gZml4dHVyZTsKK+WPg+itsOWToSA+IHNlbmF0b3I7CivljbDooajmqZ8gPiBwcmludGVyOwor5pif5pyf5LqMID4gdHVlc2RheTsKK+mfs+aoguacgyA+IGNvbmNlcnQ7Civpq5TogrLloLQgPiBzdGFkaXVtOwor5oSb54i+6JitID4gaXJlbGFuZDsKK+mAg+S6oeiAhSA+IHJ1bmF3YXk7Civlkq/lkq/nrJEgPiBjaHVja2xlOwor55Sf54mp5a24ID4gYmlvbG9neTsKK+aIsOmspeiAhSA+IGZpZ2h0ZXI7Civkvb/mhqTmhaggPiBvdXRyYWdlOwor5bGF5L2P5pa8ID4gaW5oYWJpdDsKK+aJk+WNsOapnyA+IHByaW50ZXI7Civkvb/mhqTmgJIgPiBwcm92b2tlOwor5b2M6LO95LqeID4gbWVzc2lhaDsKK+aykueUmum6vCA+IG5vdGhpbmc7CivnhZnngbDnvLggPiBhc2h0cmF5Owor5rex57SF6ImyID4gc2NhcmxldDsKK+S4jeWcqOS6hiA+IGJlXC1kZWFkOwor57Sh57mU5ZOBID4gdGV4dGlsZTsKK+S7o+WQjeipniA+IHByb25vdW47CivkuI3mv5/kuosgPiBub1wtZ29vZDsKK+mWi+aLk+iAhSA+IHBpb25lZXI7CivkuI3kurrpgZMgPiBpbmh1bWFuOwor6KKr5rKS5pS2ID4gZm9yZmVpdDsKK+i3r+ilv+W8lyA+IGx1Y2lmZXI7CivljJblrbjlrrYgPiBjaGVtaXN0Owor6KiT57e06ICFID4gdHJhaW5lcjsKK+a4hea9lOWZqCA+IGNsZWFuZXI7CivmhJvlvrfnjrIgPiBhZGVsaW5lOwor6L+r5YiH5oCnID4gdXJnZW5jeTsKK+Wls+a8lOWToSA+IGFjdHJlc3M7CivmoYzkuIrlnosgPiBkZXNrdG9wOwor5be05q+U5YCrID4gYmFieWxvbjsKK+WssOWFkuacnyA+IGluZmFuY3k7Civnmb7okYnnqpcgPiBzaHV0dGVyOwor6YG/5b2I5Z2RID4gZm94aG9sZTsKK+acieaJjeW5uSA+IGNhcGFibGU7CivohKvooaPmnI0gPiB1bmRyZXNzOwor6KeA5YWJ5a6iID4gdG91cmlzdDsKK+mBi+WLleWutiA+IGF0aGxldGU7Civmpa3ppJjogIUgPiBhbWF0ZXVyOwor6YeR5a2X5aGUID4gcHlyYW1pZDsKK+S7luiHquW3sSA+IGhpbXNlbGY7CivlrprlsYXogIUgPiBzZXR0bGVyOwor5LqM5Y2B5aSaID4gb3ZlclwtMjA7CivmlLbnlZnmiYAgPiBiYXJyYWNrOwor5q+b5q+b6ZuoID4gZHJpenpsZTsKK+mBi+WLleWToSA+IGF0aGxldGU7Civnh5XpuqXnsqUgPiBvYXRtZWFsOwor5qiZ6Kqe54mMID4gcGxhY2FyZDsKK+iHquihjOi7iiA+IGJpY3ljbGU7CivmsJHmlbjoqJggPiBudW1iZXJzOwor5bCP5paR6bueID4gc3BlY2tsZTsKK+S9v+WOreeFqSA+IGRpc2d1c3Q7Civoib7ov6rnlJ8gPiBhZGRpc29uOwor5aOr5bir6KiYID4ganVkZ2VzOwor6K236YCB6ICFID4gZXNjb3J0Owor55m86Zu75qmfID4gZHluYW1vOwor56mG5pav5p6XID4gbXVzbGltOwor6ZaL6LuK5Lq6ID4gZHJpdmVyOwor5Zi25ZWe6IGyID4gaG9hcnNlOwor5ouU5bCW5YWSID4gdGlwdG9wOwor566h55CG5Lq6ID4ga2VlcGVyOwor6buD6byg54u8ID4gd2Vhc2VsOwor5pyJ5Lq65oOFID4gaHVtYW5lOwor6KW/57SF5p+/ID4gdG9tYXRvOwor6Zu75b2x6ZmiID4gY2luZW1hOwor5bCP5aaW57K+ID4gZ29ibGluOwor6YeR57Wy6ZuAID4gY2FuYXJ5Owor5YuV5ZCN6KmeID4gZ2VydW5kOwor56u26LO96ICFID4gcGxheWVyOwor57eo5bm05Y+yID4gYW5uYWxzOwor57y65rCn55eHID4gYW5veGlhOwor5aSn5Zyw5rSeID4gY2F2ZXJuOwor5ruR57+U5qmfID4gZ2xpZGVyOwor5q6Y6aSY54mpID4gbGl0dGVyOwor5pyJ6LKs5Lu7ID4gbGlhYmxlOwor5a2p5a2Q5rCjID4gYm95aXNoOwor5bCP54md54mbID4gaGVpZmVyOwor6LeR5q2l6ICFID4gcnVubmVyOwor5ZCQ57as6ZueID4gdHVya2V5Owor6Leo5o6l5ZmoID4ganVtcGVyOwor6LKg5pOU6ICFID4gYmVhcmVyOwor5ZCI5ZSx5ZyYID4gY2hvcnVzOwor6aCY5bCO6ICFID4gbGVhZGVyOwor5puy5qON55CDID4gaG9ja2V5Owor6Lev55Sx5ZmoID4gcm91dGVyOwor54i25q+N6KaqID4gcGFyZW50Owor5YyW5aad5ZOBID4gbWFrZXVwOwor5oCl5L+D6IGyID4gcGF0dGVyOwor5L2/56Gs5YyWID4gaGFyZGVuOwor5Lqk5piT6ICFID4gZGVhbGVyOwor5pel5YWn55OmID4gZ2VuZXZhOwor6YqA6KGM5a62ID4gYmFua2VyOwor5qSN54mp5a24ID4gYm90YW55Owor57SA5b+1542OID4gdHJvcGh5Owor5YG96YCg55qEID4gZm9yZ2VkOwor56ys5LqM5qyhID4gc2Vjb25kOwor6bWd5Y2155+zID4gcGViYmxlOwor5pyJ5rCj5rS+ID4gbG9yZGx5Owor5YK15YuZ5Lq6ID4gZGVidG9yOwor55Wr55yJ6bOlID4gdGhydXNoOwor5bCP56Kf5a2QID4gc2F1Y2VyOwor6Iie6LmI5a62ID4gZGFuY2VyOwor5Y+u5Zm56IGyID4gdGlua2xlOwor5L2/5r+V6YCPID4gZHJlbmNoOwor5om56KmV5a62ID4gY3JpdGljOwor5Zyo5rex6JmVID4gZGVlcGx5Owor5Yud5Yip6ICFID4gdmljdG9yOwor6Lm66Lm65p2/ID4gc2Vlc2F3Owor56Oo5Z2K5Li7ID4gbWlsbGVyOwor5pyJ6Zec6YCjID4gcmVsYXRlOwor5aSa5qi55pyoID4gd29vZGVkOwor5ZCx5ZCx6IGyID4gc3F1ZWFrOwor5pyq5a6M5oiQID4gdW5kb25lOwor6a2U6LO95YWLID4gbW9zYWljOwor5by35pyJ5YqbID4gc3Ryb25nOwor54OP5bmy6YGUID4gdWdhbmRhOwor5LiN56K65a+mID4gdW50cnVlOwor6L6m5YWs5a6kID4gb2ZmaWNlOwor576F6aas5pu4ID4gcm9tYW5zOwor5pyN5YuZ5ZOhID4gd2FpdGVyOwor6JyY6Jub57ayID4gY29id2ViOwor6Zi/57Gz5be0ID4gYW1vZWJhOwor5L+u6KOc5YygID4gdGlua2VyOwor5aSn55CG55+zID4gbWFyYmxlOwor5oyB5pyJ5Lq6ID4gaG9sZGVyOwor5pKS5ZOI5ouJID4gc2FoYXJhOwor5aSn6ZCu5YiAID4gc2N5dGhlOwor5r++5rOi5ZmoID4gZmlsdGVyOwor5aib5qiC5aC0ID4gcmVzb3J0Owor5L2/6auY6IiIID4gcGxlYXNlOwor5pyA5bm06ZW3ID4gZWxkZXN0Owor6YaD6buD55OcID4gcGlja2xlOwor5pS25Ymy6ICFID4gcmVhcGVyOwor5p2c6bWR6bOlID4gY3Vja29vOwor5omT5Zm05ZqPID4gc25lZXplOwor6J665peL6YmXID4gd3JlbmNoOwor5Y+D6K2w6ZmiID4gc2VuYXRlOwor6aCY5bCO5Lq6ID4gbGVhZGVyOwor6K6K5b2i6J+yID4gYW1vZWJhOwor5Lu75L2V5Lq6ID4gYW55b25lOwor5pyJ6YGT5b63ID4gY2hhc3RlOwor6Jed6KGT5a62ID4gYXJ0aXN0Owor6aCC5qiR5p+xID4gcGlsbGFyOwor5L2/6Iao6IS5ID4gZGlsYXRlOwor5bCP5o+Q55C0ID4gZmlkZGxlOwor5oe25rSL5rSLID4gbGF6aWx5Owor6aas5oiy5ZyYID4gY2lyY3VzOwor6auY6IWz5p2vID4gZ29ibGV0Owor6aas6Yi06JavID4gcG90YXRvOwor5L2/6L2J5ZCRID4gZGl2ZXJ0Owor5rKS5pyJ5Lq6ID4gbm9ib2R5Owor5Y2a54mp6aSoID4gbXVzZXVtOwor5L2/5Zuw5pO+ID4gaGFyYXNzOwor56au5ouc5aCCID4gY2hhcGVsOwor5LiN6YCP5piOID4gb3BhcXVlOwor5a6D5pys6LqrID4gaXRzZWxmOwor5omB5qGD6auUID4gdG9uc2lsOwor5o6S5rC05rqdID4gZ3V0dGVyOwor5q2j5pa55b2iID4gc3F1YXJlOwor5Y+v5L+h5Lu7ID4gdHJ1c3R5Owor5paH5a245a62ID4gd3JpdGVyOwor56e75YuV5byPID4gbW9iaWxlOwor5Yiw5q2k6JmVID4gaGl0aGVyOwor5q6W5rCR5ZywID4gY29sb255Owor5aKo6KW/5ZOlID4gbWV4aWNvOwor5riF55yf5a+6ID4gbW9zcXVlOwor6L6m5LqL6JmVID4gb2ZmaWNlOwor5a6J5ZOl5ouJID4gYW5nb2xhOwor5Lul6Imy5YiXID4gaXNyYWVsOwor6YeY5pu46YedID4gc3RhcGxlOwor54Wn55u45qmfID4gY2FtZXJhOwor57Sh57mU6ICFID4gd2VhdmVyOwor5pav5ouJ5aSrID4gc2xhdmljOwor5L+E576F5pavID4gcnVzc2lhOwor6KOB57ir5birID4gdGFpbG9yOwor5byT566t5omLID4gYXJjaGVyOwor5aGe54i+54m5ID4gY2VsdGljOwor5aWz6IiN55ujID4gbWF0cm9uOwor5omT5a2X5ZOhID4gdHlwaXN0Owor5pif5pyf5pelID4gc3VuZGF5Owor6JGh6JCE5Lm+ID4gcmFpc2luOwor5oiR6Ieq5bexID4gbXlzZWxmOwor5aSn5q2l6LWwID4gc3RyaWRlOwor5LiN5YWs5bmzID4gdW5mYWlyOwor6Iqt6JW+6IieID4gYmFsbGV0Owor6KmV6KuW5a62ID4gY3JpdGljOwor5Lyv5Yip6IyyID4gYmVsaXplOwor6J665peL5b2iID4gc3BpcmFsOwor5q+U6LyD5bCRID4gbGVzc2VyOwor5Zyo5q2k6JmVID4gaGVyZWluOwor6KKr5a6z5Lq6ID4gdmljdGltOwor6Zi/5rOi576FID4gYXBvbGxvOwor5L2/6ICz6IG+ID4gZGVhZmVuOwor576p6LOj5pyDID4gYmF6YWFyOwor5pif5pyf5aSpID4gc3VuZGF5Owor5bel5L2c5a6kID4gc3R1ZGlvOwor6ZaA5aSW5ryiID4gbGF5bWFuOwor5Zyo6ZmE6L+RID4gbmVhcmJ5Owor5aGX5rK55pa8ID4gYW5vaW50Owor6Zuc6LKo5ZWGID4gZ3JvY2VyOwor57at5ZC+54i+ID4gdWlnaHVyOwor6Iux6ZuE5byPID4gaGVyb2ljOwor55CG6auu5birID4gYmFyYmVyOwor6LW35rOh5rKrID4gc2VldGhlOwor5pif5pyf5LqUID4gZnJpZGF5Owor5pif5pyf5LiAID4gbW9uZGF5Owor5be054i+5bmyID4gYmFsa2FuOwor5qC85qC856yRID4gZ2lnZ2xlOwor5a2f5Yqg5ouJID4gYmVuZ2FsOwor5Zyf6ICz5YW2ID4gdHVya2V5Owor55m96Jit5ZywID4gYnJhbmR5Owor5oSb5b636I+vID4gZWR3YXJkOwor5Y2K5Lit6IWwID4gbWlkZGxlOwor55m95Lm+5YWSID4gc3Bpcml0Owor5YW4542E6ZW3ID4gd2FyZGVuOwor55yL5LiN6KaLID4gdW5zZWVuOwor5L2/5L2c5ZiUID4gc2lja2VuOwor5oGQ5rC055eFID4gcmFiaWVzOwor5Yqg77mN5pa8ID4gaW1wb3NlOwor5qmh55qu5pC9ID4gZXJhc2VyOwor5rOi5aOr6aCTID4gYm9zdG9uOwor57aT57SA5Lq6ID4gYnJva2VyOwor57SF6Ji/6JSUID4gY2Fycm90Owor5oKE5oKE5ZywID4gZ2VudGx5Owor6YG/6Zuj5omAID4gcmVmdWdlOwor55m96bq15YWSID4gaGVyb2luOwor6aO86aSK6ICFID4gZmVlZGVyOwor5be05pav5YWLID4gYmFzcXVlOwor6I6r5pav56eRID4gbW9zY293Owor5pyI5qGC5qi5ID4gbGF1cmVsOwor6ZaA6Ki65a6kID4gY2xpbmljOwor5b6u6JaE55qEID4gbWVhZ3JlOwor5bCP5reY5rCjID4gcmFzY2FsOwor5pSd5b2x5qmfID4gY2FtZXJhOwor6LW36Ki06ICFID4gc3VpdG9yOwor5be05ou/6aasID4gcGFuYW1hOwor5o2V6a+o6Ii5ID4gd2hhbGVyOwor5ryU6Kqq6ICFID4gb3JhdG9yOwor5pO65qij5a2QID4gZG9cLXN0aDsKK+W5vuS5juS4jSA+IGhhcmRseTsKK+WKoOaLv+WkpyA+IGNhbmFkYTsKK+mGq+WLmeaJgCA+IGNsaW5pYzsKK+WNgeWtl+aetiA+IGNyb3NzOwor5Luj55CG5Lq6ID4gYWdlbnQ7CivpqYXli5XlmaggPiBkcml2ZTsKK+eNqOacqOiInyA+IGNhbm9lOwor5qKd5p2/566xID4gY3JhdGU7CivpmbPliJfoh7ogPiBzdGFsbDsKK+ism+ino+WToSA+IGd1aWRlOwor5rOl5rC05YygID4gbWFzb247CivmpI3niannvqQgPiBmbG9yYTsKK+WcqOmrmOiZlSA+IGFsb2Z0Owor5pKQ56u/6LezID4gdmF1bHQ7CivpoK3ok4vpqqggPiBza3VsbDsKK+aVmOWIqeS6niA+IHN5cmlhOwor57Sr5LiB6aaZID4gbGlsYWM7CivkuI3mlrDprq4gPiBzdGFsZTsKK+Wkp+i+suWgtCA+IHJhbmNoOwor5aSa5rC05YiGID4ganVpY3k7Civlkbzlj6vlmaggPiBwYWdlcjsKK+S4i+awtOmBkyA+IHNld2VyOwor5b6e5L6G5LiNID4gbmV2ZXI7CivkuozmpbXnrqEgPiBkaW9kZTsKK+ertuaKgOWgtCA+IGFyZW5hOwor6bql6Zi/5a+GID4gbWlhbWk7CivkvJHmga/lrqQgPiBsb2JieTsKK+eQg+eLgOeJqSA+IGdsb2JlOwor5bCN5pW16ICFID4gcml2YWw7CivlhqzpnZLmqLkgPiBob2xseTsKK+aenOWtkOWHjSA+IGplbGx5Owor5aSn5Zyw5ZyWID4gYXRsYXM7CivmiJDlubTogIUgPiBhZHVsdDsKK+mbheWQhOabuCA+IGphbWVzOwor6Iux5Luj54i+ID4gaW50ZWw7Civmr5vojLjojLggPiBoYWlyeTsKK+S9v+eFqeaDsSA+IHdvcnJ5Owor5bC85pel54i+ID4gbmlnZXI7CivmlLbpn7PmqZ8gPiByYWRpbzsKK+esrOS4ieasoSA+IHRoaXJkOwor5oub5b6F5ZOhID4gdXNoZXI7CivnrKzkuIDmrKEgPiBmaXJzdDsKK+aEj+Wkp+WIqSA+IGl0YWx5Owor5rC05bmz6Z2iID4gcGxhbmU7Civkup7purvluIMgPiBsaW5lbjsKK+a6nOWGsOmeiyA+IHNrYXRlOwor5L2c5ZO86IGyID4gc25vcnQ7Civoo73pgKDogIUgPiBtYWtlcjsKK+eEoeeUn+WRvSA+IGluZXJ0Owor6YWq6L6y5qWtID4gZGFpcnk7CivmsLTokrjmsKMgPiB2YXBvcjsKK+WDj+eJh+ewvyA+IGFsYnVtOwor6LSI6IiH6ICFID4gZ2l2ZXI7Civmnb/mop3nrrEgPiBjcmF0ZTsKK+WkqeiXjeiJsiA+IGF6dXJlOwor6aOb6KGM5ZOhID4gcGlsb3Q7CivmjZDotIjogIUgPiBkb25vcjsKK+ilv+ePreeJmSA+IHNwYWluOwor5o+Q5aSa5pu4ID4gdGl0dXM7CivnlJ/purXns7AgPiBkb3VnaDsKK+mYv+aLieaRqSA+IGFsYW1vOwor55S36auY6Z+zID4gdGVub3I7CivkuIDpu57lhZIgPiBhXC1iaXQ7Civoi7HnibnniL4gPiBpbnRlbDsKK+Wwj+aoueaelyA+IGdyb3ZlOwor5biD6JCK54i+ID4gYmxhaXI7CivmkqXngavmo40gPiBwb2tlcjsKK+WcqOaXgemCiiA+IGFzaWRlOwor54ef5qWt5ZOhID4gY2xlcms7Civkvb/lm7rlrpogPiByaXZldDsKK+itpuWgseWZqCA+IHNpcmVuOwor5LiJ6KeS5rSyID4gZGVsdGE7CivlqIHniL7lo6sgPiB3YWxlczsKK+iCr+WwvOS6niA+IGtlbnlhOwor6bq15YyF55quID4gY3J1c3Q7Civnn7PljZfmqLkgPiBoZWF0aDsKK+ieuue1sumHmCA+IHNjcmV3Owor6KW/5rSL5qOLID4gY2hlc3M7CivllLHoqannj60gPiBjaG9pcjsKK+ilv+a0i+adiSA+IGNlZGFyOwor5L2/5rq65q27ID4gZHJvd247Civlho3kuIDmrKEgPiBhZ2FpbjsKK+WcsOaWueaApyA+IGxvY2FsOwor55m854mi6ai3ID4gd2hpbmU7CivplbfpoLjnk7YgPiBmbGFzazsKK+eauueciemgrSA+IHNjb3dsOwor6aeV6aeb5ZOhID4gcGlsb3Q7Civkvobnpo/mp40gPiByaWZsZTsKK+WQtemsp+iBsiA+IG5vaXNlOwor5qWU5b2i54mpID4gd2VkZ2U7CivmtYHmtarogIUgPiByb3ZlcjsKK+avm+WXtuWYsCA+IHNlcmdlOwor54GM5pyo5Y+iID4gc2NydWI7Civotbfph43mqZ8gPiBjcmFuZTsKK+eijuW4g+ainSA+IHNocmVkOwor5YWn5Zyo55qEID4gaW5uZXI7CivprLHph5HpppkgPiB0dWxpcDsKK+mbquiMhOeFmSA+IGNpZ2FyOwor54Ok6bq15YyFID4gdG9hc3Q7CivlkLnnrJvogIUgPiBwaXBlcjsKK+S4gOW3tOaOjCA+IHNwYW5rOwor57Wx5rK76ICFID4gcnVsZXI7Civlkbzlj6vogbIgPiB3aG9vcDsKK+W6p+WPs+mKmCA+IG1vdHRvOwor5LiJ56ic6Y+hID4gcHJpc207Civnn67loqnloqkgPiBwdWRneTsKK+mYv+eIvuazlSA+IGFscGhhOwor5q+U5L6L5bC6ID4gc2NhbGU7Civlj43mipfogIUgPiByZWJlbDsKK+WTquS4gOWAiyA+IHdoaWNoOwor5ZCI6IKh57eaID4gdHdpbmU7CivpgoHpmL/lr4YgPiBtaWFtaTsKK+i8v+irlueVjCA+IG1lZGlhOwor55Ge5YW45Lq6ID4gc3dlZGU7Civkvb/nvp7mhKcgPiBhYmFzaDsKK+eUt+WtkOawoyA+IG1hbmx5Owor5L2/5aib5qiCID4gYW11c2U7CivlqrPlqablhZIgPiB3aWZlOwor5LyK5ouJ5YWLID4gaXJhcTsKK+acieiDveWKmyA+IGFibGU7Civln4PnsbPniL4gPiBlbWlyOwor5ZKW5ZWh6aSoID4gY2FmZTsKK+S4gOWumuimgSA+IG11c3Q7CivpgJrooYznqIUgPiB0b2xsOwor546J6JyA6buNID4gY29ybjsKK+Wwj+avm+ifsiA+IHNsdWc7CivmnIDkuLvopoEgPiBtYWluOwor54y25LuW5beeID4gdXRhaDsKK+S9v+WPl+WCtyA+IGh1cnQ7Civnq4vmlrnpq5QgPiBjdWJlOwor55m96aqo6aCCID4gY29vdDsKK+itt+WfjuaysyA+IG1vYXQ7CivmtIvlqIPlqIMgPiBkb2xsOwor5oSf6Ka65YiwID4gZmVlbDsKK+S4i+S4gOasoSA+IG5leHQ7Civmt7rpu4PoibIgPiBidWZmOwor5aSn6KKL5a2QID4gc2FjazsKK+WciOeLgOeJqSA+IGhvb3A7CivkuI3lj4rmoLwgPiBmYWlsOwor5Ye656ef6LuKID4gdGF4aTsKK+S/nemaque1siA+IGZ1c2U7CivlhYjopovogIUgPiBzZWVyOwor5omL5ouJ6LuKID4gY2FydDsKK+eIteWjq+iIniA+IGpheno7CivlkpbllaHlupcgPiBjYWZlOwor6Im+5ruL55eFID4gYWlkczsKK+WFq+WTpeWFkiA+IG15bmE7Civpm7vnh4jms6EgPiBidWxiOwor54y25aSn5pu4ID4ganVkZTsKK+Wkp+mgremHmCA+IHRhY2s7CivmhJvmu4vnl4UgPiBhaWRzOwor6LWk6KO46KO4ID4gYmFyZTsKK+Wck+Wxi+mggiA+IGRvbWU7Civpm5nog57og44gPiB0d2luOwor5LiA5aGK6bq1ID4gbG9hZjsKK+S9v+eUqOiAhSA+IHVzZXI7CivlpJblsI/ohb8gPiBzaGluOwor6JuL55m955+zID4gb3BhbDsKK+S4gOWIhumMoiA+IGNlbnQ7CivlnJPpjJDpq5QgPiBjb25lOwor55m+5ZCI6IqxID4gbGlseTsKK+ioiOeoi+i7iiA+IHRheGk7CivonILonJzphZIgPiBtZWFkOwor6Z2e5bi45aSaID4gbXVjaDsKK+WcqOS5i+S4iiA+IG92ZXI7CivnnKjnnLznnZsgPiB3aW5rOwor6LK05amm5Lq6ID4gZGFtZTsKK+e0heWvtuefsyA+IHJ1Ynk7Civou5/mnKjloZ4gPiBjb3JrOwor57KJ57SF6ImyID4gcGluazsKK+WRvOWRvOiBsiA+IHdoaXI7Civlv6vmraXot5EgPiB0cm90Owor6Kqq6KyK6ICFID4gbGlhcjsKK+mZquWvqeWcmCA+IGp1cnk7CivnubzkuZjkurogPiBoZWlyOwor5YWJ56a/56a/ID4gYmFsZDsKK+aenOmkoemkhSA+IHRhcnQ7CivlmLblmLbogbIgPiBoaXNzOwor5pOm6buR5YWSID4gZHVzazsKK+awtOaenOmFkiA+IHdpbmU7Civnmanlk4jon4YgPiB0b2FkOwor57mU5biD5qmfID4gbG9vbTsKK+apouWck+W9oiA+IG92YWw7Civnqbrnmb3pu54gPiBnYXA7CivngrrnlJrpurwgPiB3aHk7CivnlLflranlrZAgPiBib3k7CivmtbjkuIDkuIsgPiBkaXA7CivlnKjnnLzliY0gPiBub3c7CivnhKHoirHmnpwgPiBmaWc7CivnlLflranlhZIgPiBib3k7CivospPlj6vogbIgPiBtZXc7CivntLDpoLjnk7YgPiBqdWc7CivluLjmmKXol6QgPiBpdnk7Civngrrku4DpurwgPiB3aHk7CivnhKHlsL7njL8gPiBhcGU7CivlsI/nsr7pnYggPiBlbGY7CivogIHlpKnniLogPiBnb2Q7Civpm7bpu57lha0gPiAwXC42Owor5aKo5rC05YWSID4gaW5rOwor5YWt6bue5YWtID4gNlwuNjsKK+eUqOayueeCuCA+IGZyeTsKK+mrlOiCsumkqCA+IGd5bTsKK+S4g+m7nuS6lCA+IDdcLjU7CivkuIPpu57kuowgPiA3XC4yOwor5YuV54mp5ZySID4gem9vOwor54y25aSq5Lq6ID4gamV3Owor6buD6KSQ6ImyID4gdGFuOwor562G5qG/5a2QID4gcGVuOwor5Lmd5LiD5bm0ID4gJyc5NzsKK+ioiOS5mOi7iiA+IGNhYjsKK+Wwj+S8meWtkCA+IGxhZDsKK+iyk+mgrem3uSA+IG93bDsKK+WQkeS4iuWcsCA+IHVwOwor6K6K5paHID4gYVwtcG9wdWxhclwtZm9ybVwtb2ZcLW5hcnJhdGl2ZVwtbGl0ZXJhdHVyZVwtZmxvdXJpc2hpbmdcLWluXC10aGVcLXRhbmdcLWR5bmFzdHlcLVwoNjE4XC05MDdcKVwtd2l0aFwtYWx0ZXJuYXRlXC1wcm9zZVwtYW5kXC1yaHltZWRcLXBhcnRzXC1mb3JcLXJlY2l0YXRpb25cLWFuZFwtc2luZ2luZ1wtXChvZnRlblwtb25cLWJ1ZGRoaXN0aWNcLXRoZW1lc1wpOwor6YKK5bmjID4gYm9yZGVyXC1yZWdpb25cLWN1cnJlbmN5XC1cKGNvbnNpc3RpbmdcLW9mXC10aGVcLWN1cnJlbmN5XC1ub3Rlc1wtaXNzdWVkXC1ieVwtdGhlXC1ib3JkZXJcLXJlZ2lvblwtZ292ZXJubWVudHNcLWR1cmluZ1wtdGhlXC13YXJcLW9mXC1yZXNpc3RhbmNlXC1hZ2FpbnN0XC1qYXBhblwtYW5kXC10aGVcLXdhclwtb2ZcLWxpYmVyYXRpb25cKTsKK+WQjOacnyA+IHRoZVwtY29ycmVzcG9uZGluZ1wtdGltZVwtcGVyaW9kXC1cKGVnXCxcLWNvbXBhcmVcLWluZmxhdGlvblwtbm93XC13aXRoXC10aGVcLXJhdGVcLWR1cmluZ1wtdGhlXC1zYW1lXC1tb250aFwtbGFzdFwteWVhclwpOwor5YGP5YGPID4gXChpbmRpY2F0ZXNcLXRoYXRcLXN0aFwuXC10dXJuc1wtb3V0XC1qdXN0XC10aGVcLW9wcG9zaXRlXC1vZlwtd2hhdFwtb25lXC13b3VsZFwtZXhwZWN0XC1vclwtd2hhdFwtd291bGRcLWJlXC1ub3JtYWxcKTsKK+aVrOelnSA+IHRvXC1yZXNwZWN0ZnVsbHlcLW9mZmVyXC1cKHdyaXR0ZW5cLWF0XC10aGVcLWVuZFwtb2ZcLWxldHRlclwtZnJvbVwtc29tZW9uZVwtb2ZcLWxvd2VyXC1zdGF0dXNcLXRvXC1oaWdoZXJcLXN0YXR1c1wpOwor5Y2c6L6tID4gb3JhY2xlXC1pbnNjcmlwdGlvbnNcLW9mXC10aGVcLXNoYW5nXC1keW5hc3R5XC1cKDE2dGhcLTExdGhcLWNlbnR1cnlcLWJjXClcLW9uXC10b3J0b2lzZXNoZWxsc1wtb3JcLWFuaW1hbFwtYm9uZXM7CivmtJvlvrcgPiBcKHdpbnN0b25cKVwtbG9yZFwtXChmb3JtZXJcLWFzc2lzdGFudFwtc2VjcmV0YXJ5XC1vZlwtc3RhdGVcLWZvclwtZWFzdFwtYXNpYVwtYW5kXC1wYWNpZmljXC1hZmZhaXJzXCk7CivlvbflvqggPiBuYW1lXC1vZlwtYVwtY29sbGVjdGlvblwtb2ZcLXNob3J0XC1zdG9yaWVzXCxcLXBhbmdcLWh1YW5nXCxcLVwid2FuZGVyaW5nXC1hYm91dFwiXCxcLWJ5XC1sdTNcLXh1bjRcLemtr+i/hTsKK+mZs+avhSA+IGNoZW5cLXlpXCxcLWZvcm1lclwtbWF5b3JcLW9mXC1zaGFuZ2hhaVwtYW5kXC1oaWdoZXN0XC1yYW5raW5nXC1taWxpdGFyeVwtY29tbWFuZGVyXC1pblwtY2hpbmE7CivljIXlt6UgPiB1bmRlcnRha2VcLXRvXC1wZXJmb3JtXC13b3JrXC13aXRoaW5cLWFcLXRpbWVcLWxpbWl0XC1hbmRcLWFjY29yZGluZ1wtdG9cLXNwZWNpZmljYXRpb25zOwor6YOo6aaWID4gcmFkaWNhbHNcLWJ5XC13aGljaFwtY2hhcmFjdGVyc1wtYXJlXC1hcnJhbmdlZFwtaW5cLXRyYWRpdGlvbmFsXC1jaGluZXNlXC1kaWN0aW9uYXJpZXM7CivpnLjkuLsgPiBhXC1wb3dlcmZ1bFwtY2hpZWZcLW9mXC10aGVcLXByaW5jZXNcLW9mXC10aGVcLXNwcmluZ1wtYW5kXC1hdXR1bW5cLXBlcmlvZFwtXCg3NzBcLTQ3NlwtYmNcKTsKK+WcqOaWvCA+IFwodGhlXC1wcm9ibGVtXC1vclwtZXhwbGFuYXRpb25cLW9yXC1hZHZhbnRhZ2VcLWV0Y1wuXClcLWxpZXNcLWluXC1cKHRoZVwtZmFjdFwtdGhhdFwuXC5cLlwpOwor5pWZ6KiTID4gXCh0ZWFjaFwtc29tZW9uZVwtb3JcLWxlYXJuXC1hXClcLWxlc3NvblwtXChpZVwsXC1vYnRhaW5cLXdpc2RvbVwtZnJvbVwtYW5cLWV4cGVyaWVuY2VcKTsKK+mngeWyuCA+IGFcLWxvd1wtc3RvbmVcLXdhbGxcLWJ1aWx0XC1hbG9uZ1wtdGhlXC13YXRlcicnc1wtZWRnZVwtdG9cLXByb3RlY3RcLWFuXC1lbWJhbmttZW50Owor6KOc5rOVID4gdHJlYXRtZW50XC1pbnZvbHZpbmdcLXRoZVwtdXNlXC1vZlwtdG9uaWNzXC10b1wtcmVzdG9yZVwtdGhlXC1wYXRpZW50JydzXC1oZWFsdGg7CivkuInkuI0gPiBcInRoZVwtdGhyZWVcLW5vJydzXCJcLVwoYW5cLWV4YW1wbGVcLW9mXC1hblwtYWJicmV2aWF0ZWRcLXNsb2dhblwtb3JcLWNhdGNocGhyYXNlXCk7Civnmb3mnK4gPiB0aGVcLXJoaXpvbWVcLW9mXC1sYXJnZVwtaGVhZGVkXC1hdHJhY3R5bG9kZXNcLVwoYXRyYWN0eWxvZGVzXC1tYWNyb2NlcGhhaWFcKTsKK+Wuo+WIpCA+IHByb25vdW5jZVwtYVwtXChqdWRpY2lhbFwpXC1zZW50ZW5jZVwtXChhZnRlclwtYVwtdmVyZGljdFwtaW5cLWFcLWNvdXJ0XC1vZlwtbGF3XCk7Civnl4Xlj4sgPiBhXC1mcmllbmRcLW1hZGVcLWluXC1ob3NwaXRhbFwtb3JcLXBlb3BsZVwtd2hvXC1iZWNvbWVcLWZyaWVuZHNcLWluXC1ob3NwaXRhbDsKK+WwseaYryA+IFwoZW1waGFzaXplc1wtdGhhdFwtc29tZXRoaW5nXC1pc1wtcHJlY2lzZWx5XC1vclwtZXhhY3RseVwtd2hhdFwtaXNcLXN0YXRlZFwpOwor5aSn56a5ID4gZGFcLXl1XCxcLW5hbWVcLW9mXC1hblwtYW5jaWVudFwtaGVyb1wtd2hvXC1zdWNjZXNzZnVsbHlcLWNvbnRyb2xsZWRcLWZsb29kczsKK+ihqOitiSA+IGlsbG5lc3NcLXRoYXRcLWhhc1wtbm90XC1hdHRhY2tlZFwtdGhlXC12aXRhbFwtb3JnYW5zXC1vZlwtdGhlXC1odW1hblwtYm9keTsKK+W5q+mWkSA+IGhhbmdcLW9uXC10b1wtYW5kXC1zZXJ2ZVwtdGhlXC1yaWNoXC1hbmRcLXBvd2VyZnVsXC1ieVwtbGl0ZXJhcnlcLWhhY2tcLXdvcms7Civmj4/ntIUgPiB0b1wtdHJhY2VcLW92ZXJcLXJlZFwtY2hhcmFjdGVyc1wtXChhc1wtYVwtbWV0aG9kXC1vZlwtbGVhcm5pbmdcLXRvXC13cml0ZVwpOwor5oqX5oiwID4gd2FyXC1vZlwtcmVzaXN0YW5jZVwsXC1lc3BlY2lhbGx5XC10aGVcLXdhclwtYWdhaW5zdFwtamFwYW5cLVwoMTkzN1wtMTk0NVwpOwor5LuK6Z+zID4gbW9kZXJuXC1cKGlcLmVcLlwtbm90XC1hbmNpZW50XClcLXByb251bmNpYXRpb25cLW9mXC1hXC1jaGluZXNlXC1jaGFyYWN0ZXI7Civmg4vmg5wgPiB0b1wtZmVlbFwtc29ycnlcLWZvclwtYVwtcGVyc29uXC1vdmVyXC1zdGhcLXRoYXRcLXNob3VsZFwtaGF2ZVwtaGFwcGVuZWQ7CivnnaXnnaggPiBsb29rXC1hdFwtc29tZWJvZHlcLWRpc2RhaW5mdWxseVwtb3V0XC1vZlwtdGhlXC1jb3JuZXJcLW9mXC1vbmUnJ3NcLWV5ZTsKK+iDoemBqSA+IGh1XC1zaGlcLVwoMTg5MVwtMTk2MlwpXCxcLW9yaWdpbmFsXC1wcm9wb25lbnRcLW9mXC1iYWkyXC1odWE0XC13ZW4yXC3nmb3oqbHmloc7Civou43lp5QgPiBtaWxpdGFyeVwtY29tbWlzc2lvblwtb2ZcLXRoZVwtY29tbXVuaXN0XC1wYXJ0eVwtY2VudHJhbFwtY29tbWl0dGVlOwor54eI56+AID4gdGhlXC1sYW50ZXJuXC1mZXN0aXZhbFwtXCgxNXRoXC1vZlwtZmlyc3RcLW1vbnRoXC1vZlwtbHVuYXJcLWNhbGVuZGFyXCk7CivljJfmtIsgPiB0aGVcLXFpbmdcLWR5bmFzdHlcLW5hbWVcLWZvclwtdGhlXC1jb2FzdGFsXC1wcm92aW5jZXNcLW9mXC1saWFvbmluZzsKK+WFq+aXlyA+IHRoZVwtXCJlaWdodFwtYmFubmVyc1wiXC1cKG1pbGl0YXJ5XC1vcmdhbmlzYXRpb25cLWluXC1xaW5nXC1keW5hc3R5XCk7Civol6Tph44gPiBuYW1lXC1vZlwtYVwtcGVyc29uXCxcLXRlbmdcLXllXCxcLWFcLWphcGFuZXNlXC1mcmllbmRcLW9mXC1sdTNcLXh1bjRcLemtr+i/hTsKK+iPr+ihqCA+IG1hcmJsZVwtcGlsbGFyXC1cKG9ybmFtZW50YWxcLWNvbHVtblwtaW5cLWZyb250XC1vZlwtcGxhY2VzXCxcLXRvbWJzXCk7CivlvoXmpa0gPiB0b1wtYXdhaXRcLWpvYlwtYXNzaWdubWVudFwtXCh0ZXJtXC11c2VkXC1vbmx5XC1pblwtbWFpbmxhbmRcLWNoaW5hXCk7Civmia7nm7ggPiB0aGVcLWFwcGVhcmFuY2VcLW9mXC1hblwtYWN0b3JcLW9yXC1hY3RyZXNzXC1pblwtY29zdHVtZVwtb3JcLW1ha2V1cDsKK+atpuihkyA+IHd1c2h1XCxcLW1hcnRpYWxcLWFydHNcLXN1Y2hcLWFzXC1zaGFkb3dcLWJveGluZ1wsXC1zd29yZHBsYXlcLFwtZXRjXC47CivkuK3lhbEgPiBcKGFiYnJldmlhdGlvblwtZm9yXClcLWNoaW5lc2VcLWNvbW11bmlzdFwtXChwYXJ0eVwsXC1yZWdpbWVcLFwtZXRjXC5cKTsKK+aUv+WNlCA+IGNwcGNjXC1cKGNoaW5lc2VcLXBlb3BsZScnc1wtcG9saXRpY2FsXC1jb25zdWx0YXRpdmVcLWNvbW1pdHRlZVwpOwor5o6h5Y+WID4gYWRvcHRcLW9yXC1jYXJyeVwtb3V0XC1cKG1lYXN1cmVzXCxcLXBvbGljaWVzXCxcLWNvdXJzZVwtb2ZcLWFjdGlvblwpOwor55mf5LiJID4gYVwtd3JldGNoZWRcLWxvb2tpbmdcLXRyYW1wXC13aG9cLWxpdmVzXC1ieVwtYmVnZ2luZ1wtb3JcLXN0ZWFsaW5nOwor6KGo5YWEID4gbWFsZVwtY291c2luXC13aXRoXC1hXC1kaWZmZXJlbnRcLXN1cm5hbWVcLVwob2xkZXJcLXRoYW5cLW9uZXNlbGZcKTsKK+S7meiNiSA+IGFcLWtpbmRcLW9mXC1wbGFudFwtdXNlZFwtYXNcLWFcLW1lZGljaW5hbFwtaGVyYlwtaW5cLWFuY2llbnRcLXRpbWVzOwor5p2/6IOhID4gYVwtYm93ZWRcLXN0cmluZ2VkXC1pbnN0cnVtZW50XC13aXRoXC1hXC10aGluXC13b29kZW5cLXNvdW5kYm9hcmQ7Civoo5zppIogPiB0YWtlXC1hXC10b25pY1wtb3JcLW5vdXJpc2hpbmdcLWZvb2RcLXRvXC1idWlsZFwtdXBcLW9uZScnc1wtaGVhbHRoOwor5ou85ZG9ID4gdG9cLWJlXC1yZWFkeVwtdG9cLXJpc2tcLW9uZScnc1wtbGlmZVwtXChpblwtZmlnaHRpbmdcLFwtd29ya1wsXC1ldGNcLlwpOwor6YG35oCSID4gdG9cLXRha2VcLW9uZScnc1wtYW5nZXJcLW91dFwtb25cLXNiXC1cKHdob1wtZG9lc1wtbm90XC1kZXNlcnZlXC1pdFwpOwor5o6b5aW9ID4gdG9cLWhhbmdcLXVwXC1wcm9wZXJseVwtXCh0ZWxlcGhvbmVcLFwtcGljdHVyZVwsXC1jbG90aGVzXCxcLWV0Y1wuXCk7Civmi5Tmr5IgPiBkcmF3XC1vdXRcLXB1c1wtYnlcLWFwcGx5aW5nXC1hXC1wbGFzdGVyXC10b1wtdGhlXC1hZmZlY3RlZFwtYXJlYTsKK+eVnOWKmyA+IGFuaW1hbFwtcG93ZXJlZFwtXChhc1wtb3Bwb3NlZFwtdG9cLWh1bWFuXC1vclwtbWFjaGluZVwtcG93ZXJlZFwpOwor5bmr6IWUID4gdm9jYWxcLWFjY29tcGFuaW1lbnRcLWluXC1zb21lXC10cmFkaXRpb25hbFwtY2hpbmVzZVwtb3BlcmFzOwor5aWU5ZaqID4gaGFzdGVuXC1ob21lXC1mb3JcLXRoZVwtZnVuZXJhbFwtb2ZcLWFcLXBhcmVudFwtb3JcLWdyYW5kcGFyZW50Owor55m96IqNID4gXChwZWVsZWRcKVwtcm9vdFwtb2ZcLWhlcmJhY2VvdXNcLXBlb255XC1cKHBhZW9uaWFcLWxhY3RpZmxvcmFcKTsKK+iIiOi2oyA+IGludGVyZXN0XC1cKGRpcmVjdGVkXC10b3dhcmRzXCxcLW5vdFwtaW5oZXJlbnRcLWluXC1zb21ldGhpbmdcKTsKK+aomeWFtSA+IHBhcmFkZVwtZ3VhcmRzXC1cKHVzdWFsbHlcLXNwYWNlZFwtb3V0XC1hbG9uZ1wtcGFyYWRlXC1yb3V0ZXNcKTsKK+azlea1tyA+IG5hbWVcLW9mXC1hXC1idWRkaGlzdFwtbW9ua1wsXC1mYWhhaVwsXC1mcm9tXC1tYWRhbVwtd2hpdGVcLXNuYWtlOwor5b2I55C0ID4gdG9cLXBsYXlcLW9yXC1zdHJ1bVwtYVwtbHV0ZVwtb3JcLW90aGVyXC1zdHJpbmdlZFwtaW5zdHJ1bWVudDsKK+eZvemZtiA+IHdoaXRlXC1wb3R0ZXJ5XC1cKG9mXC1zaGFuZ1wtZHluYXN0cnlcLTE2XC0xMXRoXC1jZW50dXJ5XC1iY1wpOwor5YyF5bmyID4gYmVcLXJlc3BvbnNpYmxlXC1mb3JcLWFcLXRhc2tcLXVuaXRcLXVudGlsXC1pdFwtaXNcLWNvbXBsZXRlZDsKK+W5s+aWuSA+IHNxdWFyZVwtXChhc1wtaW5cLXNxdWFyZVwtZm9vdFwsXC1zcXVhcmVcLW1pbGVcLFwtc3F1YXJlXC1yb290XCk7Civmi4nosp0gPiBcKGpvaG5cKVwtcmFiZVwtXChnZXJtYW5cLWV5ZXdpdG5lc3NcLXRvXC1uYW5qaW5nXC1tYXNzYWNyZVwpOwor5ber5bGxID4gbXRcLlwtd3VcLFwtb25cLXRoZVwtY2hhbmdqaWFuZ1wtcml2ZXJcLWJ5XC10aGVcLXRocmVlXC1nb3JnZXM7CivmjZXkv5ggPiBjYXB0dXJlXC1lbmVteVwtcGVyc29ubmVsXC1cKGZvclwtaW50ZWxsaWdlbmNlXC1wdXJwb3Nlc1wpOwor6Y+i5a6iID4gYXJtZWRcLWVzY29ydFwtXChvZlwtdHJhdmVsbGVyc1wtb3JcLW1lcmNoYW50cycnXC1jYXJhdmFuc1wpOwor6LKd5q+NID4gdGhlXC1idWxiXC1vZlwtdGhlXC1mcml0aWxsYXJ5XC1cKGZyaXRpbGxhcmlhXC10aHVuYmVyZ2lpXCk7CivlkI3li50gPiBhXC1wbGFjZVwtZmFtb3VzXC1mb3JcLWl0c1wtc2NlbmVyeVwtb3JcLWhpc3RvcmljYWxcLXJlbGljczsKK+awkeaogiA+IG11c2ljXCxcLWVzcFwuXC1mb2xrXC1tdXNpY1wsXC1mb3JcLXRyYWRpdGlvbmFsXC1pbnN0cnVtZW50czsKK+mZneilvyA+IHNoYWFueGlcLXByb3ZpbmNlXCxcLWNoaW5hXC1cKGNhcGl0b2xcLWNpdHlcLWlzXC14aScnYW5cLeilv+WuiVwpOwor5pel5pa5ID4gdGhlXC1qYXBhbmVzZVwtc2lkZVwtb3JcLXBhcnR5XC1cKGluXC1uZWdvdGlhdGlvbnNcLFwtZXRjXC5cKTsKK+apq+aKmCA+IFwoaG9yaXpvbnRhbFwtc3RhcnRpbmdcLXJpZ2h0XC1hbmdsZVwtY2hhcmFjdGVyXC1zdHJva2VcKTsKK+ilv+WuiSA+IHhpJydhblwtXChjaXR5XClcLFwtdGhlXC1jYXBpdG9sXC1jaXR5XC1vZlwtc2hhYW54aVwtcHJvdmluY2U7CivlsI/pnZIgPiBuYW1lXC1vZlwtYVwtcGVyc29uXCxcLXhpYW9xaW5nXCxcLWZyb21cLW1hZGFtXC13aGl0ZVwtc25ha2U7Civoh6jmkbkgPiB0b1wtY29weVwtXChhXC1tb2RlbFwtb2ZcLWNhbGxpZ3JhcGh5XC1vclwtcGFpbnRpbmdcLFwtZXRjXC5cKTsKK+WCmeWPliA+IGJlXC1vblwtdGhlXC13YWl0aW5nXC1saXN0XC1cKGZvclwtYWRtaXNzaW9uXC10b1wtYVwtc2Nob29sXCk7CivmnKzmnKsgPiB0aGVcLXdob2xlXC1jb3Vyc2VcLW9mXC1hblwtZXZlbnRcLWZyb21cLWJlZ2lubmluZ1wtdG9cLWVuZDsKK+mgk+aMqyA+IHdpdGhcLXN5bmNvcGF0ZWRcLWNhZGVuY2VcLVwoYnJ1c2hcLXN0cm9rZVwtaW5cLXBhaW50aW5nXCk7CivniYjnlasgPiBhXC1waWN0dXJlXC1wcmludGVkXC1mcm9tXC1hblwtZW5ncmF2ZWRcLW9yXC1ldGNoZWRcLXBsYXRlOwor6YG/6KuxID4gdGFib29cLWFnYWluc3RcLXVzaW5nXC10aGVcLXBlcnNvbmFsXC1uYW1lc1wtb2ZcLWVtcGVyb3JzOwor5q2m5p2+ID4gd3Vzb25nXCxcLW5hbWVcLW9mXC1hXC1wZXJzb25cLFwtYVwtaGVyb1wtaW5cLXNodWlcLWh1XC16aHVhbjsKK+ioseS7mSA+IG5hbWVcLW9mXC1hXC1wZXJzb25cLFwteHVcLXhpYW5cLFwtZnJvbVwtbWFkYW1cLXdoaXRlXC1zbmFrZTsKK+WEkOebuCA+IGF0dGVuZGFudFwtb2ZcLXRoZVwtYnJpZGVcLW9yXC1icmlkZWdyb29tXC1hdFwtYVwtd2VkZGluZzsKK+ijnOeAiSA+IHJlaW5mb3JjaW5nXC1hbmRcLXJlZHVjaW5nXC1tZXRob2RzXC1cKGluXC1hY3VwdW5jdHVyZVwpOwor5bm55LqLID4gYWRtaW5pc3RyYXRpdmVcLXNlY3JldGFyeVwtXChpblwtY2hhcmdlXC1vZlwtc29tZXRoaW5nXCk7Civlt6vls70gPiB3dXhpYVwtZ29yZ2VcLFwtaW5cLXRoZVwtY2hhbmdqaWFuZ1wtcml2ZXJcLXRocmVlXC1nb3JnZXM7CivmipjnrYYgPiBhZ2FpbnN0XC10aGVcLWJyaXN0bGVzXC1cKGJydXNoXC1tb3ZlbWVudFwtaW5cLXBhaW50aW5nXCk7CivlsIjnt5ogPiBzcGVjaWFsXC1wdXJwb3NlXC1waG9uZVwtbGluZVwtb3JcLWNvbW11bmljYXRpb25zXC1saW5rOwor5ZyW5YWLID4gXChnYXJ5XC1sXC5cKVwtdG9va2VyXC1cKG1vdG9yb2xhXC1jaGFpcm1hblwtb2ZcLXRoZVwtYm9hcmRcKTsKK+aWnOmJpCA+IFwoZG93bndhcmRzXC1yaWdodFwtY29uY2F2ZVwtaG9va2VkXC1jaGFyYWN0ZXJcLXN0cm9rZVwpOwor6LGO5oqYID4gXChkb3dud2FyZHNcLXN0YXJ0aW5nXC1yaWdodFwtYW5nbGVcLWNoYXJhY3Rlclwtc3Ryb2tlXCk7CivogIHlhYQgPiAnJ29sZFwtY2hhcCcnXC1cKGZvcm1cLW9mXC1hZGRyZXNzXC1iZXR3ZWVuXC1tYWxlXC1mcmllbmRzXCk7CivmqavnrYYgPiBicmlzdGxlc1wtbHlpbmdcLWRvd25cLVwoYnJ1c2hcLW1vdmVtZW50XC1pblwtcGFpbnRpbmdcKTsKK+aOoeizvCA+IG1ha2VcLXB1cmNoYXNlc1wtZm9yXC1hblwtb3JnYW5pemF0aW9uXC1vclwtZW50ZXJwcmlzZTsKK+ato+WcqCA+IGluXC10aGVcLXByb2Nlc3NcLW9mXC1cKGRvaW5nXC1zb21ldGhpbmdcLW9yXC1oYXBwZW5pbmdcKTsKK+WgseWciyA+IGRlZGljYXRlXC1vbmVzZWxmXC10b1wtdGhlXC1zZXJ2aWNlXC1vZlwtb25lJydzXC1jb3VudHJ5Owor562G6Ke4ID4gYnJ1c2hcLXN0cm9rZVwtaW5cLWNoaW5lc2VcLXBhaW50aW5nXC1hbmRcLWNhbGxpZ3JhcGh5Owor5L6/5Lq6ID4gc29tZWJvZHlcLXdob1wtaGFwcGVuc1wtdG9cLWJlXC1vblwtaGFuZFwtZm9yXC1hblwtZXJyYW5kOwor6Kyd6L6bID4gY2hlYVwtc2ltXC1cKGNhbWJvZGlhblwtbmF0aW9uYWxcLWFzc2VtYmx5XC1wcmVzaWRlbnRcKTsKK+WklumbuyA+IHJlcG9ydHNcLWZyb21cLWZvcmVpZ25cLVwobm9uXC1jaGluZXNlXClcLW5ld3NcLWFnYW5jaWVzOwor57235LqGID4gYVwtbW9kYWxcLXBhcnRpY2xlXC1pbmRpY2F0aW5nXC1cKGRvbicndFwtbWluZFwtaXRcLFwtb2tcKTsKK+mdnOWxsSA+IGNoZW5nXC1zYW5cLVwoZWxlY3RvcmFsXC1jb25zdGl0dWVuY3lcLWluXC1zaW5nYXBvcmVcKTsKK+aKk+mjryA+IGFcLWtpbmRcLW9mXC1mb29kXC1wb3B1bGFyXC1hbW9uZ1wtYmVsaWV2ZXJzXC1pblwtaXNsYW07Civnmb3mj48gPiBsaW5lXC1kcmF3aW5nXC1pblwtdHJhZGl0aW9uYWxcLWlua1wtYW5kXC1icnVzaFwtc3R5bGU7CivllJDlsbEgPiB0YW5nXC1zaGFuXC1cKGFcLWNoaW5lc2VcLWNpdHlcLWluXC1oZWJlaVwt5rKz5YyXXC1wcm92aW5jZVwpOwor6YG/5auMID4gYXZvaWRcLWRvaW5nXC1hbnl0aGluZ1wtdGhhdFwtbWF5XC1hcm91c2VcLXN1c3BpY2lvbjsKK+WgseW5lSA+IGFubm91bmNlXC10aGVcLWl0ZW1zXC1vblwtYVwtXCh0aGVhdHJpY2FsXClcLXByb2dyYW1tZTsKK+imquWutiA+IHBhcmVudHNcLW9mXC1vbmUnJ3NcLWRhdWdodGVyXC1pblwtbGF3XC1vclwtc29uXC1pblwtbGF3Owor5Zac57OWID4gc3dlZXRcLWdpdmVuXC1vblwtYVwtaGFwcHlcLW9jY2FzaW9uXC1cKGVzcFwuXC13ZWRkaW5nXCk7Civmi5zlo70gPiBjb25ncmF0dWxhdGVcLWFuXC1lbGRlcmx5XC1wZXJzb25cLW9uXC1oaXNcLWJpcnRoZGF5Owor5Lim6KGMID4gaW5cLXBhcmFsbGVsXC1cW2RldmVsb3BtZW50XCxcLWltcGxlbWVudGF0aW9uXCxcLWV0Y1xdOwor5Lyv5p2wID4gXChzYW11ZWxcKVwtYmVyZ2VyXC1cKHVzXC1uYXRpb25hbFwtc2VjdXJpdHlcLWFkdmlzb3JcKTsKK+adseebnyA+IGFzZWFuXC1cKGFzc29jaWF0aW9uXC1vZlwtc291dGhlYXN0XC1hc2lhblwtbmF0aW9uc1wpOwor5pu+57aTID4gXChyZWZlcnNcLXRvXC1zb21ldGhpbmdcLXRoYXRcLWhhcHBlbmVkXC1wcmV2aW91c2x5XCk7Civlj6/oposgPiBpdFwtY2FuXC1jbGVhcmx5XC1iZVwtc2VlblwtXCh0aGF0XC10aGlzXC1pc1wtdGhlXC1jYXNlXCk7CivmhbDllY8gPiBleHByZXNzXC1zeW1wYXRoeVwsXC1ncmVldGluZ3NcLFwtY29uc29sYXRpb25cLFwtZXRjXC47CivmtbflvrcgPiBoeWRlXC1cKGVnXCxcLWhvdXNlXC1qdWRpY2lhcnlcLWNoYWlybWFuXC1oZW5yeVwtaHlkZVwpOwor576F5pavID4gcm90aFwtXChlZ1wsXC1ocndcLWV4ZWN1dGl2ZVwtZGlyZWN0b3JcLWtlbm5ldGhcLXJvdGhcKTsKK+aXgeiBvSA+IGJlXC1hXC12aXNpdG9yXC1cKGF0XC1hXC1tZWV0aW5nXCxcLWNsYXNzXCxcLXRyaWFsXCxcLWV0Y1wpOwor5o6o6L6tID4gdG9cLWRlY2xpbmVcLVwoYW5cLWFwcG9pbnRtZW50XCxcLWludml0YXRpb25cLFwtZXRjXC5cKTsKK+eZveeXoiA+IGR5c2VudGVyeVwtY2hhcmFjdGVyaXplZFwtYnlcLXdoaXRlXC1tdWNvdXNcLXN0b29sOwor6I+v5L2XID4gbmFtZVwtb2ZcLWFcLWZhbW91c1wtZG9jdG9yXC1pblwtb2xkXC10aW1lc1wsXC1odWFcLXR1bzsKK+ajkuanjCA+IHdvb2RlblwtY2x1YlwtXCh1c2VkXC10b1wtYmVhdFwtY2xvdGhlc1wtaW5cLXdhc2hpbmdcKTsKK+WQnuWQkCA+IHRvXC10YWtlXC1pblwtYW5kXC1zZW5kXC1vdXRcLVwoaW5cLWxhcmdlXC1xdWFudGl0aWVzXCk7CivmlrfmqYsgPiB0aGVcLWJyb2tlblwtYnJpZGdlXC1cKGF0XC13ZXN0XC1sYWtlXC1pblwtaGFuZ3pob3VcKTsKK+awo+WKnyA+IHFpZ29uZ1wsXC1hXC1zeXN0ZW1cLW9mXC1kZWVwXC1icmVhdGhpbmdcLWV4ZXJjaXNlczsKK+ecgee0miA+IHByb3ZpbmNpYWxcLWxldmVsXC1cKGVnXCxcLXByb3ZpbmNpYWxcLWdvdmVybm1lbnRcKTsKK+atpuaJkyA+IGFjcm9iYXRpY1wtZmlnaHRpbmdcLWluXC1jaGluZXNlXC1vcGVyYVwtb3JcLWRhbmNlOwor5aCx5aSxID4gcmVwb3J0XC10aGVcLWxvc3NcLXRvXC10aGVcLWF1dGhvcml0aWVzXC1jb25jZXJuZWQ7Civkv53ppIogPiB0YWtlXC1nb29kXC1jYXJlXC1vZlwtXChvclwtY29uc2VydmVcKVwtb25lJydzXC1oZWFsdGg7CivlubPkv6EgPiBvcmRpbmFyeVwtbWFpbFwtXChhc1wtb3Bwb3NlZFwtdG9cLWFpclwtbWFpbFwsXC1ldGNcLlwpOwor5YiG5LqrID4gb2J0YWluXC1vbmUnJ3NcLXNoYXJlXC1cKG9mXC13ZWFsdGhcLFwtcmlnaHRzXCxcLWV0Y1wuXCk7CivntIXloKEgPiByZWRcLWZvcnRcLVwoaGlzdG9yaWNcLWJ1aWxkaW5nXC1pblwtZGVsaGlcLFwtaW5kaWFcKTsKK+WFg+WutSA+IHN3ZWV0XC1kdW1wbGluZ3NcLW1hZGVcLW9mXC1nbHV0aW5vdXNcLXJpY2VcLWZsb3VyOwor6Ieo5a+rID4gdG9cLWNvcHlcLVwoYVwtbW9kZWxcLW9mXC1jYWxsaWdyYXBoeVwtb3JcLXBhaW50aW5nXCk7CivmnIjppIUgPiBtb29uXC1jYWtlXC1cKGVzcFwuXC1mb3JcLXRoZVwtbWlkXC1hdXR1bW5cLWZlc3RpdmFsXCk7CivmioTlrrYgPiB0b1wtc2VhcmNoXC1hXC1ob3VzZVwtYW5kXC1jb25maXNjYXRlXC1wb3NzZXNzaW9uczsKK+acg+imiyA+IHRvXC1tZWV0XC13aXRoXC1cKHNvbWVvbmVcLXdob1wtaXNcLXBheWluZ1wtYVwtdmlzaXRcKTsKK+Wkp+iIiSA+IGNhcnJ5XC1vdXRcLWFcLWxhcmdlXC1zY2FsZVwtXChtaWxpdGFyeVwpXC1vcGVyYXRpb247Civml6XmvLggPiBcKGtlZXBcLWluY3JlYXNpbmdcLFwtY2hhbmdpbmdcLFwtZXRjXC5cKVwtZGF5XC1ieVwtZGF5Owor6K2w5bitID4gc2VhdFwtaW5cLWFcLXBhcmxpYW1lbnRcLW9yXC1sZWdpc2xhdGl2ZVwtYXNzZW1ibHk7CivpgJrnt50gPiB3YW50ZWRcLWJ5XC10aGVcLXBvbGljZVwtXChmdWdpdGl2ZVwtb3JcLWNyaW1pbmFsXCk7CivnnJ/ntI0gPiBcKG1vaGFtbWFkXC1hbGlcKVwtamlubmFoXC1cKGZvdW5kZXJcLW9mXC1wYWtpc3RhblwpOwor6a2v6LOTID4gcnViaW5cLVwoZWdcLFwtdHJlYXN1cnlcLXNlY3JldGFyeVwtcm9iZXJ0XC1ydWJpblwpOwor5Yqb5a+2ID4gbGlwcG9cLVwoZ3JvdXBcKVwtXChpbmRvbmVzaWFuXC1idXNpbmVzc1wtY29uY2VyblwpOwor5YG06YuSID4gb2JsaXF1ZVwtYXR0YWNrXC1cKGJydXNoXC1tb3ZlbWVudFwtaW5cLXBhaW50aW5nXCk7CivltIfnpo4gPiBjaG9uZ3poZW5cLFwtbGFzdFwtZW1wZXJvclwtb2ZcLXRoZVwtbWluZ1wtZHluYXN0eTsKK+eZveWtlyA+IHdyb25nbHlcLXdyaXR0ZW5cLWFuZFwtbWlzcHJvbm91bmNlZFwtY2hhcmFjdGVyOwor5bCN562WID4gY291bnRlcm1lYXN1cmVcLWZvclwtZGVhbGluZ1wtd2l0aFwtYVwtc2l0dWF0aW9uOwor562G5YqbID4gdmlnb3VyXC1vZlwtc3Ryb2tlc1wtaW5cLWNhbGxpZ3JhcGh5XC1vclwtZHJhd2luZzsKK+e9sOmFkiA+IHRvXC1kcmlua1wtYXNcLXRoZVwtcmVzdWx0XC1vZlwtaGF2aW5nXC1sb3N0XC1hXC1iZXQ7CivmmJ/pq5QgPiBjZWxlc3RpYWxcLWJvZHlcLVwoZWdcLFwtcGxhbmV0XCxcLXNhdGVsbGl0ZVwsXC1ldGNcKTsKK+S4u+euoSA+IFwoYmVcKVwtcGVyc29uXC1pblwtY2hhcmdlXC1vZlwtXChhXC1wb3NpdGlvblwsXC1ldGNcLlwpOwor5q2l6Z+7ID4gdG9cLXdyaXRlXC1hXC1wb2VtXC11c2luZ1wtYW5vdGhlclwtcG9lbScnc1wtcmh5bWVzOwor5Y+j5rCjID4gXChmcmllbmRseVwtb3JcLXVuZnJpZW5kbHlcKVwtdG9uZVwtXChvZlwtY29tbWVudHNcKTsKK+ato+mLkiA+IGZyb250YWxcLWF0dGFja1wtXChicnVzaFwtbW92ZW1lbnRcLWluXC1wYWludGluZ1wpOwor5pif55CDID4gY2VsZXN0aWFsXC1ib2R5XC1cKGVnXCxcLXBsYW5ldFwsXC1zYXRlbGxpdGVcLFwtZXRjXCk7CivkuIvkvoYgPiBcKHZlcmJcLXN1ZmZpeFwtaW5kaWNhdGluZ1wtY29udGludWF0aW9uXCxcLWV0Y1wuXCk7Civlubnpg6ggPiBhXC1jYWRyZVwtXChpZVwsXC1tYW5hZ2VyXCxcLXN0YWZmXCxcLW9mZmljZXJcLFwtZXRjXC5cKTsKK+aOpee0jSA+IGFkbWl0XC1cKGludG9cLW1lbWJlcnNoaXBcLW9mXC1hblwtb3JnYW5pemF0aW9uXCk7CivmiorpoqggPiBrZWVwXC13YXRjaFwtXChkdXJpbmdcLWFcLWNsYW5kZXN0aW5lXC1hY3Rpdml0eVwpOwor5YKZ6ICVID4gbWFrZVwtcHJlcGFyYXRpb25zXC1mb3JcLXBsb3VnaGluZ1wtYW5kXC1zb3dpbmc7CivmkqXlhpcgPiBmaW5kXC10aW1lXC1pblwtdGhlXC1taWRzdFwtb2ZcLXByZXNzaW5nXC1hZmZhaXJzOwor5qC96LSTID4gdG9cLWZyYW1lXC1zb21lb25lXC1cKGJ5XC1wbGFudGluZ1wtc3RoXC1vblwtdGhlbVwpOwor5o+b5Y+WID4gZ2l2ZVwtc29tZXRoaW5nXC1hbmRcLWdldFwtc29tZXRoaW5nXC1pblwtcmV0dXJuOwor5YG95pu4ID4gXChmb3JnZWRcLFwtZHViaW91c1wsXC1taXNjbGFzc2lmaWVkXClcLW9sZFwtYm9va3M7CivnsL/lhoogPiBib29rc1wtZm9yXC10YWtpbmdcLW5vdGVzXC1vclwta2VlcGluZ1wtYWNjb3VudHM7CivkuIrou4ogPiB0b1wtZ2V0XC1vblwtb3JcLWludG9cLVwoYVwtYnVzXCxcLXRyYWluXCxcLWNhclwtZXRjXC5cKTsKK+ethuS4iyA+IHRoZVwtd29yZGluZ1wtYW5kXC1wdXJwb3J0XC1vZlwtd2hhdFwtb25lXC13cml0ZXM7Civkvr/lh70gPiBhblwtaW5mb3JtYWxcLWxldHRlclwtc2VudFwtYnlcLWFuXC1vcmdhbml6YXRpb247CivpppbluK0gPiBjaGllZlwtXChyZXByZXNlbnRhdGl2ZVwsXC1jb3JyZXNwb25kZW50XCxcLWV0Y1wpOwor6LSF5am/ID4gc29uXC1pblwtbGF3XC1saXZpbmdcLWF0XC13aWZlJydzXC1wYXJlbnQnJ3NcLWhvdXNlOwor6JmV5pa8ID4gYmVcLVwoaW5cLXNvbWVcLXN0YXRlXCxcLXBvc2l0aW9uXCxcLW9yXC1jb25kaXRpb25cKTsKK+aVl+ethiA+IGFcLWZhdWx0eVwtc3Ryb2tlXC1pblwtY2FsbGlncmFwaHlcLW9yXC1wYWludGluZzsKK+WHuui3ryA+IGFcLXdheVwtb3V0XC1cKG9mXC1hXC1kaWZmaWN1bHRcLXNpdHVhdGlvblwsXC1ldGNcKTsKK+W6puaXpSA+IHNjcmF0Y2hcLW91dFwtYVwtZGlmZmljdWx0XCxcLW1lYWdlclwtZXhpc3RlbmNlOwor5aCx5qGIID4gcmVwb3J0XC1hXC1jYXNlXC10b1wtdGhlXC1zZWN1cml0eVwtYXV0aG9yaXRpZXM7CivlhbXmupAgPiBtYW5wb3dlclwtcmVzb3VyY2VzXC1cKGZvclwtbWlsaXRhcnlcLXNlcnZpY2VcKTsKK+aciembuyA+IFwob2ZcLWFcLWR3ZWxsaW5nXClcLXN1cHBsaWVkXC13aXRoXC1lbGVjdHJpY2l0eTsKK+izgeiHqCA+IFwob2ZcLWRpc3Rpbmd1aXNoZWRcLWd1ZXN0c1wpXC1ob25vdXJcLW15XC1ob3VzZTsKK+advuS4iyA+IG1hdHN1c2hpdGFcLVwoamFwYW5lc2VcLWVsZWN0cm9uaWNzXC1jb21wYW55XCk7CivkuI3lppkgPiBcKG9mXC1hXC10dXJuXC1vZlwtZXZlbnRzXClcLW5vdFwtdG9vXC1lbmNvdXJhZ2luZzsKK+WLieW8tyA+IG1hbmFnZVwtXCh0b1wtZG9cLXNvbWV0aGluZ1wpXC13aXRoXC1kaWZmaWN1bHR5Owor5Yil54ShID4gaGF2ZVwtbm9cLW90aGVyXC1cKGNob2ljZVwsXC1hbHRlcm5hdGl2ZVwsXC1ldGNcKTsKK+WFrOe0hCA+IGNvbnZlbnRpb25cLVwoaWVcLFwtaW50ZXJuYXRpb25hbFwtYWdyZWVtZW50XCk7CivlubTluqYgPiB5ZWFyXC1cKGVnXCxcLXNjaG9vbFwteWVhclwsXC1maXNjYWxcLXllYXJcLFwtZXRjXCk7CivnrYbpoIYgPiBvcmRlclwtb2ZcLXN0cm9rZXNcLW9ic2VydmVkXC1pblwtY2FsbGlncmFwaHk7CivmiY7ph50gPiB0b1wtZ2l2ZVwtb3JcLWhhdmVcLWFuXC1hY3VwdW5jdHVyZVwtdHJlYXRtZW50Owor6KO95YqRID4gXChjaGVtaWNhbFwtb3JcLXBoYXJtYWNldXRpY2FsXClcLXByZXBhcmF0aW9uOwor6auU5pyDID4ga25vd1wtXCh0aHJvdWdoXC1sZWFybmluZ1wtb3JcLWJ5XC1leHBlcmllbmNlXCk7Civlgb3miZggPiBmYWtpbmdcLWFcLW1vZGVyblwtb2JqZWN0XC1hc1wtYW5cLWFuY2llbnRcLW9uZTsKK+a1t+mXnCA+IGN1c3RvbXNcLVwoaWVcLFwtYm9yZGVyXC1jcm9zc2luZ1wtaW5zcGVjdGlvblwpOwor56KR6KiYID4gYVwtcmVjb3JkXC1vZlwtZXZlbnRzXC1pbnNjcmliZWRcLW9uXC1hXC10YWJsZXQ7CivljIXovqYgPiB0YWtlXC1jYXJlXC1vZlwtZXZlcnl0aGluZ1wtY29uY2VybmluZ1wtYVwtam9iOwor5Ye66Z2iID4gYWN0XC1pblwtYVwtXChvZmZpY2lhbFwtb3JcLXBlcnNvbmFsXClcLWNhcGFjaXR5Owor55u46ZqUID4gYmVcLXNlcGFyYXRlZFwtYnlcLVwoZGlzdGFuY2VcLW9yXC10aW1lXCxcLWV0Y1wpOwor5pmC5aCxID4gXCJ0aW1lc1wiXC1cKG5ld3NwYXBlclwsXC1lZ1wsXC1uZXdcLXlvcmtcLXRpbWVzXCk7CivpgJroiKogPiBjb25uZWN0ZWRcLWJ5XC1haXJcfHNlYVwtdHJhZmZpY1wtb3JcLXNlcnZpY2U7CivpgbflsYUgPiB0b1wtbW92ZVwtXChmcm9tXC1vbmVcLXJlc2lkZW5jZVwtdG9cLWFub3RoZXJcKTsKK+W5tOS7oyA+IGFcLWRlY2FkZVwtb2ZcLWFcLWNlbnR1cnlcLVwoZWdcLFwtdGhlXC1zaXh0aWVzXCk7Civllqznn7MgPiBxaWFvXC1zaGlcLVwoY2hpbmVzZVwtbGVhZGVyc2hpcFwtY29udGVuZGVyXCk7CivosY7piaQgPiBcKHN0cmFpZ2h0XC1kb3duXC1ob29rZWRcLWNoYXJhY3Rlclwtc3Ryb2tlXCk7CivmiJDmnKwgPiBcKG1hbnVmYWN0dXJpbmdcLFwtcHJvZHVjdGlvblwsXC1ldGNcLlwpXC1jb3N0czsKK+S7o+eQhiA+IGFjdGluZ1wtXCh0ZW1wb3JhcmlseVwtZmlsbGluZ1wtYVwtcG9zaXRpb25cKTsKK+WuouW7syA+IGRyYXdpbmdcLXJvb21cLVwocm9vbVwtZm9yXC1hcnJpdmluZ1wtZ3Vlc3RzXCk7Civok67pnKcgPiB3YXhcLWFwcGxlXC1cKGFcLXJlZGRpc2hcLXBlYXJcLXNoYXBlZFwtZnJ1aXRcKTsKK+mhjOewvSA+IHRvXC13cml0ZVwtdGhlXC10aXRsZVwtb2ZcLWFcLWJvb2tcLW9uXC1hXC1sYWJlbDsKK+iAgeS6jCA+IHRoZVwtc2Vjb25kXC1jaGlsZFwtb3JcLWJyb3RoZXJcLVwob3JcLXNpc3RlclwpOwor5Lit5Y2XID4gXChhYmJyZXZpYXRpb25cLWZvclwpXC1jaGluYVwtXC1cLXNvdXRoXC1hZnJpY2E7CivniYjmrKEgPiB0aGVcLW9yZGVyXC1pblwtd2hpY2hcLWVkaXRpb25zXC1hcmVcLXByaW50ZWQ7Civlj5flgrcgPiBzdWZmZXJcLWluanVyaWVzXC1cKGluXC1hblwtYWNjaWRlbnRcLFwtZXRjXC5cKTsKK+iogueriyA+IGFncmVlXC10b1wtXCh0cmVhdHlcLFwtY29udHJhY3RcLFwtYWdyZWVtZW50XCk7CivlpI/mm4YgPiB0aGVcLXRyYWRpdGlvbmFsXC1jaGluZXNlXC1sdW5hclwtY2FsZW5kYXI7CivluKvnr4QgPiBub3JtYWxcLVwoZWdcLFwtYmVpamluZ1wtbm9ybWFsXC11bml2ZXJzaXR5XCk7Civlu6PloLQgPiBhXC1wdWJsaWNcLXNxdWFyZVwtXChlZ1wsXC10aWFuYW5tZW5cLXNxdWFyZVwpOwor6KOc56WoID4gYnV5XC1vbmUnJ3NcLXRpY2tldFwtYWZ0ZXJcLXRoZVwtbm9ybWFsXC10aW1lOwor55m854eSID4gaGF2ZVwtYVwtaGlnaFwtdGVtcGVyYXR1cmVcLVwoZnJvbVwtaWxsbmVzc1wpOwor55uG5ZywID4gYmFzaW5cLVwobG93XC1seWluZ1wtZ2VvZ3JhcGhpY2FsXC1mZWF0dXJlXCk7CivmiYvot6EgPiBzYlwuJydzXC1vcmlnaW5hbFwtaGFuZHdyaXRpbmdcLW9yXC1wYWludGluZzsKK+eSp+mChCA+IHJldHVyblwtXChhXC1ib3Jyb3dlZFwtb2JqZWN0XClcLXdpdGhcLXRoYW5rczsKK+ihqOWmuSA+IGZlbWFsZVwtY291c2luXC13aXRoXC1hXC1kaWZmZXJlbnRcLXN1cm5hbWU7Civmi4bmlaMgPiB0b1wtYnJlYWtcLXVwXC1cKGFcLW1hcnJpYWdlXCxcLWZhbWlseVwsXC1ldGNcLlwpOwor5YKZ5ZOBID4gbWFjaGluZVwtcGFydHNcLW9yXC10b29sc1wta2VwdFwtaW5cLXJlc2VydmU7Civpppbku7sgPiBmaXJzdFwtcGVyc29uXC10b1wtYmVcLWFwcG9pbnRlZFwtdG9cLWFcLXBvc3Q7Civpg6jplbcgPiBoZWFkXC1vZlwtYVwtXChnb3Zlcm5tZW50XCxcLWV0Y1wpXC1kZXBhcnRtZW50Owor5q+U6YePID4gdGFrZVwtcm91Z2hcLW1lYXN1cmVtZW50c1wtXCh3aXRoXC10aGVcLWhhbmQ7CivljZrmhJsgPiB1bml2ZXJzYWxcLWZyYXRlcm5pdHlcLVwob3JcLWJyb3RoZXJob29kXCk7CivmlZfngasgPiByZWxpZXZlXC1pbmZsYW1tYXRpb25cLW9yXC1pbnRlcm5hbFwtaGVhdDsKK+e2k+eHnyA+IGVuZ2FnZVwtaW5cLVwoYVwtYnVzaW5lc3NcLWFjdGl2aXR5XCxcLWV0Y1wuXCk7Civpm4bmiJAgPiBpbnRlZ3JhdGVkXC1cKGFzXC1pblwtaW50ZWdyYXRlZFwtY2lyY3VpdFwpOwor5pS/5aeUID4gcG9saXRpY2FsXC1jb21taXNzYXJcLVwod2l0aGluXC10aGVcLWFybXlcKTsKK+e3qOWwjiA+IHdyaXRlXC1hbmRcLWRpcmVjdFwtXChhXC1wbGF5XCxcLWZpbG1cLFwtZXRjXC5cKTsKK+ihjOmnmyA+IFwodmVoaWNsZXNcLFwtZXRjXC5cKVwtdHJhdmVsXC1hbG9uZ1wtYVwtcm91dGU7CivlhbXnqK4gPiBcKG1pbGl0YXJ5XClcLWJyYW5jaFwtb2ZcLXRoZVwtYXJtZWRcLWZvcmNlczsKK+mAvOWuriA+IGZvcmNlXC10aGVcLWtpbmdcLW9yXC1lbXBlcm9yXC10b1wtYWJkaWNhdGU7CivoiKrooYwgPiBzYWlsXC1vclwtZmx5XC1cKGluXC1haXJcLFwtd2F0ZXJcLFwtb3JcLXNwYWNlXCk7Civnm7jkv6EgPiBiZVwtY29udmluY2VkXC1cKHRoYXRcLXNvbWV0aGluZ1wtaXNcLXRydWVcKTsKK+aLlOenpyA+IHB1bGxcLXVwXC1zZWVkbGluZ3NcLVwoZm9yXC10cmFuc3BsYW50aW5nXCk7CivmiYvoo6EgPiBcKGFcLXNpdHVhdGlvblwtaXNcKVwtaW5cLVwoc29tZW9uZScnc1wpXC1oYW5kczsKK+aNleaSiCA+IGZpc2hcLWZvclwtXChhcXVhdGljXC1hbmltYWxzXC1hbmRcLXBsYW50c1wpOwor57C95ZCNID4gdG9cLXNpZ25cLVwob25lJydzXC1uYW1lXC13aXRoXC1hXC1wZW5cLFwtZXRjXC5cKTsKK+a/n+WNlyA+IGppJyduYW5cLVwoY2FwaXRhbFwtb2ZcLXNoYW5kb25nXC1wcm92aW5jZVwpOwor5bGP5qKdID4gc2V0XC1vZlwtXCh1c3VhbGx5XC1mb3VyXClcLWhhbmdpbmdcLXNjcm9sbHM7Civnqbbnq58gPiBhZnRlclwtYWxsXC1cKHdoZW5cLWFsbFwtaXNcLXNhaWRcLWFuZFwtZG9uZVwpOwor6Y6u5rGfID4gemhlbmppYW5nXC1cKGNpdHlcKVwsXC1pblwtamlhbmdzdVwtcHJvdmluY2U7CivkuLvnp5EgPiByZXF1aXJlZFwtY291cnNlc1wtaW5cLXRoZVwtbWFqb3JcLXN1YmplY3Q7Civnj63lupUgPiBvcmRpbmFyeVwtbWVtYmVyc1wtb2ZcLXRoZWF0cmljYWxcLXRyb3VwZTsKK+mHkee8vSA+IFwoZ29sZFwpXC1hbG1zXC1ib3dsXC1cKG9mXC1hXC1idWRkaGlzdFwtbW9ua1wpOwor6IGv5ZCNID4gam9pbnRseVwtXChzaWduZWRcLFwtZGVjbGFyZWRcLFwtc3BvbnNvcmVkXCk7CivkuIvmprsgPiBzdGF5XC1hdFwtXChhXC1ob3RlbFwsXC1ldGNcLlwtZHVyaW5nXC1hXC10cmlwXCk7CivoqJjov7AgPiBtYWtlXC1hXC1kZXNjcmlwdGl2ZVwtcmVjb3JkXC1cKG9mXC1ldmVudHNcKTsKK+aal+WCtyA+IGludGVybmFsXC1cKGludmlzaWJsZVwpXC1pbmp1cnlcLVwoZGFtYWdlXCk7CivlpKrmuZYgPiB0YWlcLWh1XC1sYWtlXCxcLWFcLWJpZ1wtbGFrZVwtYnlcLXd1eGlcLWNpdHk7CivmqavpiaQgPiBcKGhvcml6b250YWxcLWhvb2tlZFwtY2hhcmFjdGVyXC1zdHJva2VcKTsKK+WMl+WuiyA+IHRoZVwtbm9ydGhlcm5cLXNvbmdcLWR5bmFzdHlcLVwoOTYwXC0xMTI3XCk7CivphInkuIsgPiBjb3VudHJ5XC1cKGFzXC1vcHBvc2VkXC10b1wtdG93blwtb3JcLWNpdHlcKTsKK+ewveiogiA+IHRvXC1hZ3JlZVwtdG9cLWFuZFwtc2lnblwtXChhXC10cmVhdHlcLFwtZXRjXCk7Civlop7lgLwgPiBhcHByZWNpYXRpb25cLVwob2ZcLWFcLWNhclwsXC1ob3VzZVwsXC1ldGNcLlwpOwor5YW15a62ID4gbWlsaXRhcnlcLXN0cmF0ZWdpc3RcLWluXC1hbmNpZW50XC1jaGluYTsKK+iLseWwuiA+IFwoZW5nbGlzaFwpXC1mb290XC1cKHVuaXRcLW9mXC1tZWFzdXJlbWVudFwpOwor5req6Zm3ID4gXCh0ZXJyaXRvcnlcKVwtZmFsbFwtdG9cLWVuZW15XC1vY2N1cGF0aW9uOwor5Lq66YG4ID4gcGVyc29uXChzXClcLXNlbGVjdGVkXC1cKGZvclwtYVwtam9iXCxcLWV0Y1wuXCk7CivmnIPplbcgPiBwcmVzaWRlbnRcLW9mXC1hXC1jbHViXCxcLWNvbW1pdHRlZVwsXC1ldGNcLjsKK+Wvq+aIkCA+IHRvXC1jb21waWxlXC1cKGZhc2hpb25cLXRocm91Z2hcLXdyaXRpbmdcKTsKK+WQnumHkSA+IHRvXC1jb21taXRcLXN1aWNpZGVcLWJ5XC1zd2FsbG93aW5nXC1nb2xkOwor5p2/55y8ID4gbWVhc3VyZVwtaW5cLXRyYWRpdGlvbmFsXC1jaGluZXNlXC1tdXNpYzsKK+mmluW6nCA+IGNhcGl0YWxcLWNpdHlcLW9mXC1hblwtYXV0b25vbW91c1wtcmVnaW9uOwor54+t5qyhID4gb3JkZXJcLW9mXC1jbGFzc2VzXC1vclwtZ3JhZGVzXC1hdFwtc2Nob29sOwor6LK05beeID4gbmFtZVwtb2ZcLWFcLXByb3ZpbmNlXC1pblwtY2hpbmFcLFwtZ3VpemhvdTsKK+iTi+iMqCA+IFwoYmlsbFwpXC1nYXRlc1wtXChjaGFpcm1hblwtb2ZcLW1pY3Jvc29mdFwpOwor5ZC45byVID4gYXR0cmFjdFwtXChpbnRlcmVzdFwsXC1pbnZlc3RtZW50XCxcLWV0Y1wuXCk7CivmmpflqLwgPiB1bmxpY2Vuc2VkXC1cKHVucmVnaXN0ZXJlZFwpXC1wcm9zdGl0dXRlOwor6Zy4546LID4geGlhbmc0eXUzXC1cKDIzMlwtMjAyXC1iY1wpXC10aGVcLWNvbnF1ZXJvcjsKK+WjveemriA+IGJpcnRoZGF5XC1wcmVzZW50XC1cKGZvclwtYW5cLW9sZFwtcGVyc29uXCk7CivokKznuKMgPiB3YW54aWFuXC1jb3VudHlcLFwtaW5cLXNpY2h1YW5cLXByb3ZpbmNlOwor5YW16YOoID4gdGhlXC1taW5pc3RyeVwtb2ZcLXdhclwtaW5cLWZldWRhbFwtY2hpbmE7CivljJflkaggPiB0aGVcLW5vcnRoZXJuXC16aG91XC1keW5hc3R5XC1cKDU1N1wtNTgxXCk7CivljJfkuqwgPiBiZWlqaW5nXC1cKGNhcGl0YWxcLW9mXC1tYWlubGFuZFwtY2hpbmFcKTsKK+iNieahiCA+IGRyYWZ0XC1cKGxlZ2lzbGF0aW9uXCxcLXByb3Bvc2FsXCxcLWV0Y1wuXCk7CivopqrmhJsgPiBkZWFyXC1cLlwuXC5cLVwod2F5XC1vZlwtc3RhcnRpbmdcLWFcLWxldHRlclwpOwor6KOc55m9ID4gZmlsbGVyXC1cKGluXC1hXC1uZXdzcGFwZXJcLW9yXC1tYWdhemluZVwpOwor6IiJ6KGMID4gdG9cLWhvbGRcLVwoYVwtbWVldGluZ1wsXC1jZXJlbW9ueVwsXC1ldGNcLlwpOwor5L+d6YCBID4gcmVjb21tZW5kXC1cKGZvclwtYWRtaXNzaW9uXC10b1wtc2Nob29sXCk7CivovYnluLMgPiB0cmFuc2ZlclwtbW9uZXlcLWZyb21cfGludG9cLWFuXC1hY2NvdW50Owor5bit5L2NID4gcGFybGlhbWVudGFyeVwtb3JcLWNvbmdyZXNzaW9uYWxcLXNlYXQ7CivluIPku4AgPiBcKGdlb3JnZVwpXC1idXNoXC1cKGZvcm1lclwtdXNcLXByZXNpZGVudFwpOwor5a+p6KiKID4gYVwtXChqdWRpY2lhbFwpXC10cmlhbFwtXChpblwtYVwtY291cnRyb29tXCk7CivnrYbmob8gPiB0aGVcLXNoYWZ0XC1vZlwtYVwtcGVuXC1vclwtd3JpdGluZ1wtYnJ1c2g7Civnl4Xli6IgPiBkZWdyZWVcLW9mXC1zZXJpb3VzbmVzc1wtb2ZcLWFuXC1pbGxuZXNzOwor5Li76L6mID4gaG9zdFwtXChhXC1jb25mZXJlbmNlXC1vclwtc3BvcnRzXC1ldmVudFwpOwor5pys6I2JID4gYVwtYm9va1wtb25cLWNoaW5lc2VcLVwoaGVyYmFsXClcLW1lZGljaW5lOwor5Lq654mpID4gY2hhcmFjdGVyc1wtXChpblwtYVwtcGxheVwsXC1ub3ZlbFwsXC1ldGNcLlwpOwor6K2w6ZW3ID4gc3BlYWtlclwtXChvZlwtYVwtbGVnaXNsYXRpdmVcLWFzc2VtYmx5XCk7CivlronljZcgPiBcW2tvZmlcXVwtYW5uYW5cLVxbdW5cLXNlY3JldGFyeVwtZ2VuZXJhbFxdOwor5YyF6aOvID4gZ2V0XC1vclwtc3VwcGx5XC1tZWFsc1wtYXRcLWFcLWZpeGVkXC1yYXRlOwor5pyJ5rC0ID4gXChvZlwtYVwtZHdlbGxpbmdcKVwtc3VwcGxpZWRcLXdpdGhcLXdhdGVyOwor6Kmx6aGMID4gc3ViamVjdFwtXChvZlwtYVwtdGFsa1wtb3JcLWNvbnZlcnNhdGlvblwpOwor5LqL5YuZID4gXChwb2xpdGljYWxcLFwtZWNvbm9taWNcLFwtZXRjXC5cKVwtYWZmYWlyczsKK+WSseWAkSA+IHdlXC1cKGluY2x1ZGluZ1wtdGhlXC1wZXJzb25cLXNwb2tlblwtdG9cKTsKK+eOh+WFiCA+IHRha2VcLXRoZVwtbGVhZFwtXChzaG93aW5nXC1pbml0aXRhdGl2ZVwpOwor5YyF56efID4gcmVudFwtbGFuZFwtb3JcLWFcLWhvdXNlXC1mb3JcLXN1YmxldHRpbmc7CivmmI7mlocgPiBcKGxhd3NcLFwtcnVsZXNcLFwtZXRjXClcLXN0YXRlXC1pblwtd3JpdGluZzsKK+mAj+imliA+IHRvXC1leGFtaW5lXC1ieVwtZmx1b3Jvc2NvcGVcLW9yXC14XC1yYXk7CivloLHoraYgPiByZXBvcnRcLVwoYW5cLWluY2lkZW50XClcLXRvXC10aGVcLXBvbGljZTsKK+eikeW4liA+IGFcLXJ1YmJpbmdcLWZyb21cLWFcLXN0b25lXC1pbnNjcmlwdGlvbjsKK+eJm+W5tCA+IHllYXJcLW9mXC10aGVcLW94XC1cKGluXC1jaGluZXNlXC16b2RpYWNcKTsKK+WMheW7giA+IGJveFwtXChpblwtYVwtdGhlYXRyZVwtb3JcLWNvbmNlcnRcLWhhbGxcKTsKK+i9ieiukyA+IHRyYW5zZmVyXC1cKHRlY2hub2xvZ3lcLFwtZ29vZHNcLFwtZXRjXC5cKTsKK+ebnOeJiCA+IHBpcmF0ZVwtdmVyc2lvblwtXChvZlwtc29mdHdhcmVcLFwtZVwuZ1wuXCk7Civnt6Pku70gPiBmYXRlXC1cKHdoaWNoXC1icmluZ3NcLXBlb3BsZVwtdG9nZXRoZXI7CivlubPlo6QgPiBweW9uZ3lhbmdcLVwoY2FwaXRhbFwtb2ZcLW5vcnRoXC1rb3JlYVwpOwor5pOU5Lu7ID4gaG9sZFwtYVwtZ292ZXJubWVudGFsXC1vZmZpY2VcLW9yXC1wb3N0Owor5YWL5pyNID4gXCh0cnlcLXRvXClcLW92ZXJjb21lXC1cKGhhcmRzaGlwc1wsXC1ldGNcKTsKK+aKhOmAgSA+IHRvXC1tYWtlXC1hXC1jb3B5XC1cKGFuZFwtc2VuZFwtaXRcLXRvXC1zYlwpOwor5qGI6amXID4gaW52ZXN0aWdhdGVcLXRoZVwtZXZpZGVuY2VcLW9mXC1hXC1jYXNlOwor5omY6YGLID4gdG9cLWJvb2tcLW9yXC1jaGVja1wtdGhyb3VnaFwtXChiYWdnYWdlXCk7CivmiLbpg6ggPiBmZXVkYWxcLWNoaW5lc2VcLW1pbmlzdHJ5XC1vZlwtcmV2ZW51ZTsKK+aOqOWLlSA+IHRvXC1wdXNoXC1cKGZvclwtYWNjZXB0YW5jZVwtb2ZcLWFcLXBsYW5cKTsKK+S6nui7jSA+IHNlY29uZFwtcGxhY2VcLVwoaW5cLWFcLXNwb3J0c1wtY29udGVzdFwpOwor6aGP6auUID4geWFuXC1zdHlsZVwtXChpblwtY2hpbmVzZVwtY2FsbGlncmFwaHlcKTsKK+S5hemBlSA+IFwoaGF2ZW4nJ3RcLWRvbmVcLXN0aFwpXC1mb3JcLWFcLWxvbmdcLXRpbWU7CivpppnlsbEgPiBmcmFncmFuY2VcLWhpbGxcLVwoYVwtcGFya1wtaW5cLWJlaWppbmdcKTsKK+mKt+avgCA+IHRvXC1kZXN0cm95XC1cKGJ5XC1tZWx0aW5nXC1vclwtYnVybmluZ1wpOwor5YyX6a2PID4gdGhlXC1ub3J0aGVyblwtd2VpXC1keW5hc3R5XC1cKDM4NlwtNTM0XCk7CivmmrTnl4UgPiBzdWRkZW5cLWF0dGFja1wtb2ZcLWFcLXNlcmlvdXNcLWlsbG5lc3M7CivkurrlpKcgPiBcKGNoaW5hXClcLW5hdGlvbmFsXC1wZW9wbGUnJ3NcLWNvbmdyZXNzOwor54ax6aynID4gYnVzdGxpbmdcLXdpdGhcLW5vaXNlXC1hbmRcLWV4Y2l0ZW1lbnQ7CivlkYjmlocgPiBwZXRpdGlvblwtXChzdWJtaXR0ZWRcLXRvXC1hXC1zdXBlcmlvclwpOwor5pil56+AID4gc3ByaW5nXC1mZXN0aXZhbFwtXChjaGluZXNlXC1uZXdcLXllYXJcKTsKK/CgvLsgPiBhXC1wYXJ0aWNsZVwtdXNlZFwtaW5cLXRyYW5zbGl0ZXJhdGlvbjsKK+aWsOeWhiA+IHhpbmppYW5nXC1cKHV5Z3VyXC1hdXRvbm9tb3VzXC1yZWdpb25cKTsKK+e2sue1oSA+IFwoY29tcHV0ZXJcLFwtdGVsZWNvbVwsXC1ldGNcLlwpXC1uZXR3b3JrOwor5aOB5q+vID4gdGFwZXN0cnlcLVwodXNlZFwtYXNcLWFcLXdhbGxcLWhhbmdpbmdcKTsKK+aTpua+oSA+IHJ1Ylwtb25lc2VsZlwtZG93blwtd2l0aFwtYVwtd2V0XC10b3dlbDsKK+iqjeWumiA+IG1haW50YWluXC1cKHRoYXRcLXNvbWV0aGluZ1wtaXNcLXRydWVcKTsKK+WIhuatpyA+IGRpZmZlcmVuY2VcLVwob2ZcLW9waW5pb25cLFwtcG9zaXRpb25cKTsKK+mAo+aIsCA+IGxpZW5cLWNoYW5cLVwodGFpd2FuXC12aWNlXC1wcmVzaWRlbnRcKTsKK+WItuW6piA+IFwocG9saXRpY2FsXClcLXN5c3RlbVwtb3JcLWluc3RpdHV0aW9uOwor6KOc57+SID4gdGFrZVwtbGVzc29uc1wtYWZ0ZXJcLXNjaG9vbFwtb3JcLXdvcms7Civlu7rkuqQgPiB0b1wtZXN0YWJsaXNoXC1kaXBsb21hdGljXC1yZWxhdGlvbnM7Civngavngb0gPiBmaXJlXC1cKHRoYXRcLWJ1cm5zXC1idWlsZGluZ3NcLFwtZXRjXC5cKTsKK+WCmeiqsiA+IFwob2ZcLWFcLXRlYWNoZXJcKVwtdG9cLXByZXBhcmVcLWxlc3NvbnM7CivplovmvJQgPiBcKG9mXC1hXC1wbGF5XCxcLW1vdmllXCxcLWV0Y1wuXClcLXRvXC1iZWdpbjsKK+WCmeiNkiA+IHByZXBhcmVcLWFnYWluc3RcLW5hdHVyYWxcLWRpc2FzdGVyczsKK+WFqOacgyA+IHBsZW5hcnlcLXNlc3Npb25cLVwoYXRcLWFcLWNvbmZlcmVuY2VcKTsKK+S+v+mboyA+IHJldG9ydFwtd2l0aFwtY2hhbGxlbmdpbmdcLXF1ZXN0aW9uczsKK+etlOi+ryA+IHRvXC1yZXBseVwtXCh0b1wtYW5cLWFjY3VzYXRpb25cLFwtZVwuZ1wuXCk7CivlnJbmm7ggPiBib29rc1wtXChpblwtYVwtbGlicmFyeVwtb3JcLWJvb2tzdG9yZVwpOwor5a626ZW3ID4gdGhlXC1wYXJlbnRcLW9yXC1ndWFyZGlhblwtb2ZcLWFcLWNoaWxkOwor5Zue5q24ID4gdG9cLXJldHVyblwtXCh0b1wtcHJldmlvdXNcLWNvbmRpdGlvblwpOwor6aqo5rOVID4gYm9uZVwtXChwcm9wZXJ0eVwtb2ZcLWFcLWJydXNoXC1zdHJva2VcKTsKK+enkemahiA+IGNvbG9nbmVcLFwtZ2VybWFueVwtb3JcLWNvbG9uXCxcLXBhbmFtYTsKK+aJk+a2iCA+IGRpc3BlbFwtXChkb3VidHNcLFwtbWlzZ2l2aW5nc1wsXC1ldGNcLlwpOwor5om+5YiwID4gZmluZFwtXCh3aGF0XC1vbmVcLXdhc1wtc2VhcmNoaW5nXC1mb3JcKTsKK+WPrOmWiyA+IGNvbnZlbmVcLVwoYVwtY29uZmVyZW5jZVwtb3JcLW1lZXRpbmdcKTsKK+WRvOexsiA+IGNhbGxcLW9uXC1cKHNvbWVvbmVcLXRvXC1kb1wtc29tZXRoaW5nXCk7Civnp5HniL4gPiBcKGhlbG11dFwpXC1rb2hsXC1cKGdlcm1hblwtY2hhbmNlbGxvclwpOwor6b2L5pyIID4gcmFtYWRhblwtXChtdXNsaW1cLW1vbnRoXC1vZlwtZmFzdGluZ1wpOwor6LW35L6GID4gYmVnaW5uaW5nXC1vclwtY29udGludWluZ1wtYW5cLWFjdGlvbjsKK+WMl+m9iiA+IHRoZVwtbm9ydGhlcm5cLXFpXC1keW5hc3R5XC1cKDU1MFwtNTU3XCk7CivlkJDnqZcgPiB0b1wtaGF2ZVwtdGhlXC1lYXJzXC1vZlwtZ3JhaW5cLWNvbWVcLXVwOwor6KuL6aGYID4gcGV0aXRpb25cLVwoZm9yXC1hY3Rpb25cLXRvXC1iZVwtdGFrZW5cKTsKK+S6q+WPlyA+IHRvXC1lbmpveVwtXChyaWdodHNcLFwtYmVuZWZpdHNcLFwtZXRjXC5cKTsKK+S4ieWzvSA+IHRoZVwtdGhyZWVcLWNoYW5namlhbmdcLXJpdmVyXC1nb3JnZXM7Civlj5bmmpYgPiB0b1wtd2FybVwtb25lc2VsZlwtXChieVwtYVwtZmlyZVwsXC1ldGNcLlwpOwor6Zmi6ZW3ID4gcHJlc2lkZW50XC1cKG9mXC1hXC11bml2ZXJzaXR5XCxcLWV0Y1wuXCk7CivoqIDoq5YgPiBleHByZXNzaW9uXC1vZlwtXChwb2xpdGljYWxcKVwtb3BpbmlvbjsKK+aUv+eVjCA+IHBvbGl0aWNhbFwtYW5kXC1nb3Zlcm5tZW50XC1jaXJjbGVzOwor5oCn5YilID4gZGlzdGluZ3Vpc2hpbmdcLWJldHdlZW5cLXRoZVwtc2V4ZXM7CivpgZXnpoEgPiB0b1wtdmlvbGF0ZVwtYVwtcHJvaGlidGl0aW9uXC1vclwtYmFuOwor6YWs5ZKMID4gdG9cLXJlc3BvbmRcLXRvXC1hXC1wb2VtXC13aXRoXC1hXC1wb2VtOwor5aCx6ICDID4gZW50ZXJcLW9uZXNlbGZcLWZvclwtYW5cLWV4YW1pbmF0aW9uOwor5YyX5ZyLID4gdGhlXC1ub3J0aGVyblwtcGFydFwtb2ZcLXRoZVwtY291bnRyeTsKK+WkluWtqyA+IGdyYW5kc29uXC1cKHNvblwtb2ZcLW9uZScnc1wtZGF1Z2h0ZXJcKTsKK+Wkp+WciyA+IGFcLXBvd2VyXC1cKGllXCxcLWFcLWRvbWluYW50XC1jb3VudHJ5XCk7CivmjqLopqogPiB0b1wtZ29cLWhvbWVcLXRvXC12aXNpdFwtb25lJydzXC1mYW1pbHk7Civpm6Pku6UgPiBoYXJkXC10b1wtXChwcmVkaWN0XCxcLWltYWdpbmVcLFwtZXRjXC5cKTsKK+WgseaViCA+IHJlbmRlclwtc2VydmljZVwtdG9cLXJlcGF5XC1raW5kbmVzczsKK+imquaImiA+IFwoYVwpXC1yZWxhdGl2ZVwtXChpZVwsXC1mYW1pbHlcLW1lbWJlclwpOwor54K65pyfID4gXCh0b1wtYmVcLWRvbmVcKVwtYnlcLVwoYVwtY2VydGFpblwtZGF0ZVwpOwor6L6y5puGID4gdGhlXC10cmFkaXRpb25hbFwtY2hpbmVzZVwtY2FsZW5kYXI7CivmjInoqqogPiBpblwtdGhlXC1vcmRpbmFyeVwtY291cnNlXC1vZlwtZXZlbnRzOwor6YCj5Lu7ID4gY29udGludWVcLWluXC1cKGFcLXBvbGl0aWNhbFwpXC1vZmZpY2U7Civoh4norZwgPiB0eXBlc1wtb2ZcLWZhY2lhbFwtbWFrZXVwXC1pblwtb3BlcmFzOwor6ZaL5bqtID4gYmVnaW5cLWFcLVwoanVkaWNpYWxcKVwtY291cnRcLXNlc3Npb247Civlhazlr6kgPiBwdWJsaWNcLXRyaWFsXC1cKGluXC1hXC1jb3VydFwtb2ZcLWxhd1wpOwor5L2G6aGYID4gaWZcLW9ubHlcLVwoaXRcLXdlcmVcLXBvc3NpYmxlXC10b1wuXC5cLlwpOwor5o2o5b6XID4gdG9cLWJlXC13aWxsaW5nXC10b1wtcGFydFwtd2l0aFwtXChzdGhcKTsKK+aMgeaciSA+IGhvbGRcLVwoZWdcLFwtcGFzc3BvcnRcLFwtdmlld3NcLFwtZXRjXC5cKTsKK+aKl+eIrSA+IG1ha2VcLWFcLXN0YW5kXC1hbmRcLWZpZ2h0XC1cKGFnYWluc3RcKTsKK+evpuWtkCA+IGFcLWRvdWJsZVwtZWRnZWRcLWZpbmVcLXRvb3RoZWRcLWNvbWI7CivmipXmqZ8gPiBiZVwtYVwtc3BlY3VsYXRvclwtXChwcm9maXRcLXNlZWtpbmdcKTsKK+aMquWAnyA+IHRvXC1ib3Jyb3dcLW1vbmV5XC1mb3JcLWFcLXNob3J0XC10aW1lOwor5a6w55u4ID4gcHJpbWVcLW1pbmlzdGVyXC1cKGluXC1mZXVkYWxcLWNoaW5hXCk7CivomZvohZUgPiBlbXB0eVwtd3Jpc3RcLVwobWV0aG9kXC1vZlwtcGFpbnRpbmdcKTsKK+S4jeirliA+IG5vXC1tYXR0ZXJcLVwod2hhdFwsXC13aG9cLFwtaG93XCxcLWV0Y1wuXCk7Civkv53kv64gPiBndWFyYW50ZWVcLXRvXC1rZWVwXC1pblwtZ29vZFwtcmVwYWlyOwor6YeR6YKKID4gcGhub21cLXBlbmhcLVwoY2FwaXRhbFwtb2ZcLWNhbWJvZGlhXCk7CivkvrXkvZQgPiB0b1wtaW52YWRlXC1hbmRcLW9jY3VweVwtXCh0ZXJyaXRvcnlcKTsKK+afr+WvhiA+IGtlcm1pdFwtXChjb21tdW5pY2F0aW9uc1wtcHJvdG9jb2xcKTsKK+S6q+aciSA+IGVuam95XC1cKHJpZ2h0c1wsXC1wcml2aWxlZ2VzXCxcLWV0Y1wuXCk7Civnpq7ngq4gPiBhXC1ndW5cLXNhbHV0ZVwtXChlZ1wsXC0yMVwtZ3VuXC1zYWx1dGVcKTsKK+eqgeWOpSA+IHR1cmtpY1wtXChtaW5vcml0eVwtZ3JvdXBcLWluXC1jaGluYVwpOwor5a6J5L+dID4gXChhYmJyZXZpYXRpb25cKVwtbWFpbnRhaW5cLXNlY3VyaXR5Owor5aO96bq1ID4gYmlydGhkYXlcLW5vb2RsZXNcLVwoZm9yXC1sb25nZXZpdHlcKTsKK+a1tOWupCA+IGJhdGhyb29tXC1cKHJvb21cLXVzZWRcLWZvclwtYmF0aGluZ1wpOwor5Luk5Lq6ID4gY2F1c2VcLXNvbWVvbmVcLXRvXC1cKGJlXCxcLWZlZWxcLFwtZXRjXCk7CivpmaTpnZ4gPiBvbmx5XC1pZlwtXChcLlwuXC5cLFwtb3JcLW90aGVyd2lzZVwsXC1cLlwuXC5cKTsKK+atp+imliA+IGRpc2NyaW1pbmF0aW9uXC1cKGFnYWluc3RcLXNvbWVvbmVcKTsKK+aVl+iQvSA+IGRlY2xpbmVcLVwoaW5cLXdlYWx0aFwtYW5kXC1wb3NpdGlvblwpOwor54Sh6YyrID4gd3V4aVwtXChjaXR5XClcLFwtaW5cLWppYW5nc3VcLXByb3ZpbmNlOwor5pqX5ZCIID4gYWdyZWVcLXdpdGhvdXRcLXByaW9yXC1jb25zdWx0YXRpb247Civlp5DlpKsgPiBicm90aGVyXC1pblwtbGF3XC1cKGh1c2JhbmQnJ3NcLXNpZGVcKTsKK+eJueWNgCA+IHNwZWNpYWxcLVwoYWRtaW5pc3RyYXRpdmVcKVwtcmVnaW9uOwor5pel5ZyTID4gamFwYW5lc2VcLXllblwtXCh1bml0XC1vZlwtY3VycmVuY3lcKTsKK+WjgearpSA+IGFcLWJ1aWx0XC1pblwtd2FyZHJvYmVcLW9yXC1jdXBib2FyZDsKK+mBv+aakSA+IGJlXC1hd2F5XC1mb3JcLXRoZVwtc3VtbWVyXC1ob2xpZGF5czsKK+atpeaQliA+IGRhbmdsaW5nXC1vcm5hbWVudFwtd29yblwtYnlcLXdvbWVuOwor6YKm5LqkID4gcmVsYXRpb25zXC1iZXR3ZWVuXC10d29cLWNvdW50cmllczsKK+aPkOeFiSA+IHRvXC1leHRyYWN0XC1cKG9yZVwsXC1taW5lcmFsc1wsXC1ldGNcKTsKK+api+aOpSA+IGJyaWRnaW5nXC1cKGluXC1jb21wdXRlclwtbmV0d29ya3NcKTsKK+WFq+aWuSA+IHRoZVwtZWlnaHRcLXBvaW50c1wtb2ZcLXRoZVwtY29tcGFzczsKK+WFp+aUvyA+IGludGVybmFsXC1hZmZhaXJzXC1cKG9mXC1hXC1jb3VudHJ5XCk7Civov6vkvb8gPiBmb3JjZVwtXChzb21lb25lXC10b1wtZG9cLXNvbWV0aGluZ1wpOwor6ZW35buKID4gdGhlXC1sb25nXC1jb3JyaWRvclwtYXRcLXlpXC1oZVwteXVhbjsKK+WFg+W4pSA+IGFcLW1hcnNoYWxcLVwoaW5cLXRoZVwtYXJtZWRcLWZvcmNlc1wpOwor5qCh6ZW3ID4gXChjb2xsZWdlXCxcLXVuaXZlcnNpdHlcKVwtcHJlc2lkZW50Owor6ZaL5YiAID4gdG9cLXBlcmZvcm1cLW9yXC1oYXZlXC1hblwtb3BlcmF0aW9uOwor6Lyp5YiGID4gc2VuaW9yaXR5XC1pblwtdGhlXC1mYW1pbHlcLW9yXC1jbGFuOwor5bC+54mZID4gYVwteWVhclwtZW5kXC1kaW5uZXJcLWZvclwtZW1wbG95ZWVzOwor54+t6LyqID4gcmVndWxhclwtcGFzc2VuZ2VyXC1vclwtY2FyZ29cLXNoaXA7Civmiqjmk4ogPiBhdHRhY2tcLVwodmVyYmFsbHlcLW9yXC1pblwtd3JpdGluZ1wpOwor6Iie5Y+wID4gXCh0aGVhdHJpY2FsXC1vclwtcG9saXRpY2FsXClcLXN0YWdlOwor54yb6LeMID4gZHJvcFwtc2hhcnBseVwtXChlZ1wsXC1zdG9ja1wtcHJpY2VzXCk7Civkv6Hku7YgPiBhXC1sZXR0ZXJcLVwoaWVcLFwtc2VudFwtaW5cLXRoZVwtbWFpbFwpOwor5L2/5ZG9ID4gYVwtXChkaXBsb21hdGljXC1vclwtb3RoZXJcKVwtbWlzc2lvbjsKK+S4ueeariA+IHRoZVwtcm9vdFwtYmFya1wtb2ZcLXRoZVwtcGVvbnlcLXRyZWU7CivlrprlgZogPiB0b1wtaGF2ZVwtc29tZXRoaW5nXC1tYWRlXC10b1wtb3JkZXI7Civph43nlKggPiB0b1wtcHV0XC1pblwtYW5cLWltcG9ydGFudFwtcG9zaXRpb247Civmr5Tos70gPiBcW2F0aGxldGljXC1vclwtb3RoZXJcXVwtY29tcGV0aXRpb247CivmlZjov7AgPiByZWxhdGVcLVwoYVwtc3RvcnlcLW9yXC1pbmZvcm1hdGlvblwpOwor5Yqg6YeNID4gYmVjb21lXHxtYWtlXC1tb3JlXC1zZXJpb3VzXHxncmF2ZXI7CivolJrngrogPiB0b1wtYWZmb3JkXC1cKGFcLXZpZXdcLW9mXC1zdGhcLFwtZVwuZ1wuXCk7Civpm7voh7ogPiByYWRpb1wtXChvclwtYnJvYWRjYXN0aW5nXClcLXN0YXRpb247CivnopHmnpcgPiB0aGVcLWZvcmVzdFwtb2ZcLXN0ZWxlc1wtXChpblwteGknJ2FuXCk7CivlpJbngZggPiB3YWl0YW5cLVwodGhlXC1idW5kXClcLFwtaW5cLXNoYW5naGFpOwor6K2J5a+mID4gY29uZmlybVwtXChzb21ldGhpbmdcLXRvXC1iZVwtdHJ1ZVwpOwor6K2w5ZOhID4gbWVtYmVyXC1cKG9mXC1hXC1sZWdpc2xhdGl2ZVwtYm9keVwpOwor5aCx6KGoID4gZm9ybXNcLWZvclwtcmVwb3J0aW5nXC1zdGF0aXN0aWNzOwor5piO5aCxID4gbWluZ1wtcGFvXC1uZXdzcGFwZXJcLVwoaG9uZ1wta29uZ1wpOwor5YmN56iLID4gZnV0dXJlXC1cKGNhcmVlclwsXC1ldGNcKVwtcHJvc3BlY3RzOwor55m76ZaAID4gcGF5XC1hXC12aXNpdFwtdG9cLXNvbWVvbmUnJ3NcLWhvdXNlOwor6YKK5rCRID4gcGVvcGxlXC1saXZpbmdcLW9uXC10aGVcLWZyb250aWVyczsKK+mCo+acqyA+IGlmXC10aGF0JydzXC10aGVcLWNhc2VcLFwtdGhlblwtXChcLlwuXC5cKTsKK+aViOaHiSA+IGVmZmVjdFwtXChlZ1wsXC1ncmVlbmhvdXNlXC1lZmZlY3RcKTsKK+atueW+kiA+IGV2aWxcLXBlcnNvblwtd2hvXC1jb21taXRzXC1jcmltZXM7CivmlLblvqkgPiByZWNvdmVyXC1cKGxvc3RcLXRlcnJpdG9yeVwsXC1ldGNcLlwpOwor5YKy6aqoID4gbG9mdHlcLWFuZFwtdW55aWVsZGluZ1wtY2hhcmFjdGVyOwor5pa35LqkID4gYnJlYWtcLW9mZlwtZGlwbG9tYXRpY1wtcmVsYXRpb25zOwor5biz5oi2ID4gXChiYW5rXCxcLWNvbXB1dGVyXCxcLWV0Y1wuXClcLWFjY291bnQ7Civlm7rnhLYgPiBhZG1pdHRlZGx5XC1cKGl0JydzXC10cnVlXC10aGF0XC5cLlwuXCk7Civoh7rnjaggPiB0YWl3YW5cLWluZGVwZW5kZW5jZVwtXChtb3ZlbWVudFwpOwor5L+d6IuXID4ga2VlcFwtYVwtZnVsbFwtc3RhbmRcLW9mXC1zZWVkbGluZ3M7Civot6/nlLEgPiByb3V0aW5nXC1cKGluXC1jb21wdXRlclwtbmV0d29ya3NcKTsKK+Wwjee+jiA+IFwocG9saWN5XCxcLWV0Y1wuXClcLXRvd2FyZHNcLWFtZXJpY2E7CivmjIfmlbggPiBcKG51bWVyaWNhbFwsXC1zdGF0aXN0aWNhbFwpXC1pbmRleDsKK+ethueVqyA+IHN0cm9rZXNcLW9mXC1hXC1jaGluZXNlXC1jaGFyYWN0ZXI7CivnqbropbIgPiBcKG1pbGl0YXJ5XClcLWF0dGFja1wtZnJvbVwtdGhlXC1haXI7CivooajloLEgPiBzdGF0aXN0aWNhbFwtdGFibGVzXC1hbmRcLXJlcG9ydHM7Civmi5jmirwgPiBcKGFycmVzdFwtYW5kXClcLXRha2VcLWludG9cLWN1c3RvZHk7CivlsJrmm7ggPiBoaWdoXC1vZmZpY2lhbFwtaW5cLWFuY2llbnRcLWNoaW5hOwor6IGz56uLID4gdG9cLXRvd2VyXC1hYm92ZVwtXChvblwtdG9wXC1vZlwtc3RoXCk7Civnj63ntYQgPiB0ZWFtc1wtYW5kXC1ncm91cHNcLVwoaW5cLWZhY3RvcmllczsKK+S8r+avjSA+IHdpZmVcLW9mXC1mYXRoZXInJ3NcLWVsZGVyXC1icm90aGVyOwor5Lit6JelID4gXCh0cmFkaXRpb25hbFwpXC1jaGluZXNlXC1tZWRpY2luZTsKK+aal+iiiyA+IGNhbWVyYVwtYmFnXC1cKGZvclwtY2hhbmdpbmdcLWZpbG1cKTsKK+iZleaxuiA+IGV4ZWN1dGVcLVwoYVwtY29uZGVtbmVkXC1jcmltaW5hbFwpOwor5paw6a6uID4gZnJlc2hcLVwoZXhwZXJpZW5jZVwsXC1mb29kXCxcLWV0Y1wuXCk7Civlj6vogbIgPiB5ZWxsaW5nXC1cKHNvdW5kXC1tYWRlXC1ieVwtcGVyc29uXCk7Civnj63luKsgPiB3aXRoZHJhd1wtdHJvb3BzXC1mcm9tXC10aGVcLWZyb250Owor5ZOA5oK8ID4gZ3JpZXZlXC1cKG1vdXJuXClcLW92ZXJcLXNiJydzXC1kZWF0aDsKK+enkeaBqSA+IGNvaGVuXC1cKHVcLnNcLlwtZGVmZW5jZVwtc2VjcmV0YXJ5XCk7CivmlZfpmaMgPiBiZVwtZGVmZWF0ZWRcLW9uXC10aGVcLWJhdHRsZWZpZWxkOwor5YyF6LOgID4gZ3VhcmFudGVlXC10b1wtcGF5XC1jb21wZW5zYXRpb25zOwor5ZCN5qyhID4gcG9zaXRpb25cLWluXC1hXC1yYW5raW5nXC1vZlwtbmFtZXM7Civlq4Llq4IgPiBzaXN0ZXJcLWluXC1sYXdcLVwoaHVzYmFuZCcnc1wtc2lkZVwpOwor5aWJ6KGMID4gdG9cLXB1cnN1ZVwtXChhXC1jb3Vyc2VcLFwtYVwtcG9saWN5XCk7CivlkbzllpogPiBjYWxsXC1vdXRcLVwoc29tZW9uZScnc1wtbmFtZVwsXC1ldGNcKTsKK/CggIEgPiB0aGVcLW9yaWdpbmFsXC1mb3JtXC1mb3JcLeS4g1wtdVwrNGUwMzsKK/CggIAgPiB0aGVcLXNvdW5kXC1tYWRlXC1ieVwtYnJlYXRoaW5nXC1pbjsKK+ekuuWogSA+IGhvbGRcLWFcLVwocHJvdGVzdFwpXC1kZW1vbnN0cmF0aW9uOwor5ZCD5YiAID4gcGVuZXRyYXRpb25cLW9mXC1hXC1jdXR0aW5nXC10b29sOwor5ZCE5L2NID4gZXZlcnlib2R5XC1cKGFcLXRlcm1cLW9mXC1hZGRyZXNzXCk7Civpn5PlnJMgPiBrb3JlYW5cLXdvblwtXCh1bml0XC1vZlwtY3VycmVuY3lcKTsKK+WgseekviA+IGdlbmVyYWxcLW9mZmljZVwtb2ZcLWFcLW5ld3NwYXBlcjsKK+eZvOi3oSA+IHRvXC1yaXNlXC10b1wtcG93ZXJcLWFuZFwtcG9zaXRpb247CivmlK/mj7QgPiBwcm92aWRlXC1hc3Npc3RhbmNlXC1vclwtYmFja2luZzsKK+ingOa4rCA+IFwoc2NpZW50aWZpY1wsXC1ldGNcKVwtb2JzZXJ2YXRpb247CivpgZXlv4MgPiBhZ2FpbnN0XC1vbmVzXC13aWxsXC1vclwtZmVlbGluZ3M7Civmi7zpn7MgPiBwaW55aW5cLVwoY2hpbmVzZVwtcm9tYW5pemF0aW9uXCk7CivlooPlpJYgPiBvdXRzaWRlXC1cKGFcLWNvdW50cnknJ3NcKVwtYm9yZGVyczsKK+aLjOmdoiA+IG5vb2RsZXNcLXNlcnZlZFwtd2l0aFwtc295XC1zYXVjZTsKK+ebtOaOpSA+IGRpcmVjdFwtXChvcHBvc2l0ZVwtb2ZcLWluZGlyZWN0XCk7Civpj6HpoK0gPiBjYW1lcmFcLXNob3RcLVwoaW5cLWFcLW1vdmllXCxcLWV0Y1wpOwor6I6r5LiNID4gdGhlcmVcLWlzXC1ub1wtb25lXC1cKHdob1wtZG9lc24nJ3RcKTsKK+mAgeS6uiA+IHRvXC1zZWVcLVwob3JcLXdhbGtcKVwtc29tZW9uZVwtaG9tZTsKK+eZveaWhyA+IHRoZVwtdGV4dFwtb2ZcLWFuXC1hbm5vdGF0ZWRcLWJvb2s7CivlsIfpoJggPiBoaWdoXC1yYW5raW5nXC1taWxpdGFyeVwtb2ZmaWNlcjsKK+aOjOasiiA+IHdpZWxkXC1cKHBvbGl0aWNhbFwsXC1ldGNcLlwpXC1wb3dlcjsKK+S/g+mAsiA+IHRvXC1wcm9tb3RlXC1cKGFuXC1pZGVhXC1vclwtY2F1c2VcKTsKK+WFrOWuiSA+IFwobWluaXN0cnlcLW9mXClcLXB1YmxpY1wtc2VjdXJpdHk7Civnl4XmoLkgPiBhblwtaW5jb21wbGV0ZWx5XC1jdXJlZFwtaWxsbmVzczsKK+ijnOWgsSA+IG1ha2VcLWFcLXJlcG9ydFwtYWZ0ZXJcLXRoZVwtZXZlbnQ7CivlsI3oh7ogPiBcKHBvbGljeVwsXC1ldGNcLlwpXC10b3dhcmRzXC10YWl3YW47Civmnb/pvJMgPiBhXC1zbWFsbFwtZHJ1bVwtZm9yXC1tYXJraW5nXC10aW1lOwor6LSF6L+wID4gdG9cLXNheVwtbW9yZVwtdGhhblwtaXNcLW5lY2Vzc2FyeTsKK+WvpuiCmCA+IGZ1bGxcLWFybVwtXChtZXRob2RcLW9mXC1wYWludGluZ1wpOwor5reY6YeRID4gcGFubmluZ1wtXChmb3JcLXByZWNpb3VzXC1tZXRhbHNcKTsKK+aIiOeIviA+IFwoYWxcKVwtZ29yZVwtXCh1c1wtdmljZVwtcHJlc2lkZW50XCk7CivkuoLoqqogPiB0b1wtbWFrZVwtaXJyZXNwb25zaWJsZVwtcmVtYXJrczsKK+S4jei7jCA+IGFnYWluc3RcLXRoZVwtbGF3XC1vclwtZGlzY2lwbGluZTsKK+S/neWVhiA+IHByZXNlcnZhdGlvblwtb2ZcLXNvaWxcLW1vaXN0dXJlOwor5L2c5oiwID4gY29uZHVjdFwtXChtaWxpdGFyeVwtb3BlcmF0aW9uc1wpOwor5LiW6KGMID4gXFthYmJyZXZpYXRpb25cLWZvclxdXC13b3JsZFwtYmFuazsKK+S4reiPryA+IGNoaW5hXC1cKGFsdGVybmF0ZVwtZm9ybWFsXC1uYW1lXCk7CivkvrXlhaUgPiB0b1wtbWFrZVwtXChtaWxpdGFyeVwpXC1pbmN1cnNpb25zOwor55CD5qqvID4gdGFibGVcLVwoZm9yXC1nYW1lc1wtdXNpbmdcLWJhbGxzXCk7CivkuIvoh7ogPiBzdGVwXC1kb3duXC1cKGZyb21cLW9mZmljZVwsXC1ldGNcLlwpOwor6LKq5rGhID4gXChwb2xpdGljYWxcLFwtbW9yYWxcKVwtY29ycnVwdGlvbjsKK+S4ree0miA+IG1pZGRsZVwtbGV2ZWxcLVwoaW5cLWFcLWhpZXJhcmNoeVwpOwor5pyJ55qEID4gXCh0aGVyZVwtYXJlXClcLXNvbWVcLVwod2hvXC1hcmVcLlwuXC5cKTsKK+iTi+mjryA+IHJpY2VcLXdpdGhcLW1lYXRcLWFuZFwtdmVnaXRhYmxlczsKK+S4i+ePrSA+IHRvXC1jb21lXC1vclwtZ29cLW9yXC1nZXRcLW9mZlwtd29yazsKK+WMhemKtyA+IGhhdmVcLWV4Y2x1c2l2ZVwtc2VsbGluZ1wtcmlnaHRzOwor6K6T55CDID4gdG9cLWNvbmNlZGVcLXBvaW50c1wtXChpblwtYVwtZ2FtZVwpOwor5pu45oi/ID4gc3R1ZHlcLVwoaVwuZVwuXC10aGVcLWtpbmRcLW9mXC1yb29tXCk7Civoqo3orZggPiBiZVwtYWNxdWFpbnRlZFwtd2l0aFwtXChhXC1wZXJzb25cKTsKK+WNu+eXhSA+IHRvXC1wcmV2ZW50XC1vclwtdHJlYXRcLWFcLWRpc2Vhc2U7CivpgbLpgbIgPiBcKGJlXClcLWxhdGVcLVwod2l0aFwtYVwtdGFza1wsXC1ldGNcLlwpOwor8KCAhSA+IGFuXC1hbHRlcm5hdGVcLWZvcm1cLW9mXC11XCs0ZWE1XC3kuqU7Civlvrfnj60gPiBkdXJiYW5cLVwoY2l0eVwtaW5cLXNvdXRoXC1hZnJpY2FcKTsKK+aTuui8qiA+IGJhbGFuY2VcLVwob2ZcLWFcLXdhdGNoXC1vclwtY2xvY2tcKTsKK+aTuuiorSA+IGZ1cm5pc2hcLWFuZFwtZGVjb3JhdGVcLVwoYVwtcm9vbVwpOwor54ax57eaID4gaG90bGluZVwtXChjb21tdW5pY2F0aW9uc1wtbGlua1wpOwor5rOV5Yi2ID4gbGVnYWxcLXN5c3RlbVwtYW5kXC1pbnN0aXR1dGlvbnM7CivmsLTlubMgPiBsZXZlbFwtXChvZlwtYWNoaWV2ZW1lbnRcLFwtZXRjXC5cKTsKK+Wkq+asiiA+IGF1dGhvcml0eVwtb3ZlclwtdGhlXC1ob3VzZWhvbGQ7CivljbDlsLwgPiBcKGFiYnJldmlhdGlvblwtZm9yXClcLWluZG9uZXNpYTsKK+iuiuWDuSA+IGFwcHJhaXNlXC1hdFwtdGhlXC1jdXJyZW50XC1yYXRlOwor5aa55aSrID4gYnJvdGhlclwtaW5cLWxhd1wtXCh3aWZlJydzXC1zaWRlXCk7CivpgLLogIwgPiBhbmRcLXRoZW5cLVwod2hhdFwtZm9sbG93c1wtbmV4dFwpOwor6Zmj57eaID4gYVwtZnJvbnRcLVwoaWVcLFwtbWlsaXRhbnRcLWdyb3VwXCk7CivmrbLmnIggPiB0aGVcLXllYXJzXC1vZlwtYVwtcGVyc29uJydzXC1saWZlOwor5q245bGsID4gYmVcLXVuZGVyXC10aGVcLWp1cmlzZGljdGlvblwtb2Y7CivlnKjph44gPiBiZVwtb3V0XC1vZlwtXChwb2xpdGljYWxcKVwtb2ZmaWNlOwor5bug5oi/ID4gYVwtYnVpbGRpbmdcLXVzZWRcLWFzXC1hXC1mYWN0b3J5Owor5Yik5rG6ID4ganVkZ21lbnRcLVwoYnlcLWFcLWNvdXJ0XC1vZlwtbGF3XCk7Civlm7Dpm6MgPiBcKGZpbmFuY2lhbFwsXC1ldGNcLlwpXC1kaWZmaWN1bHR5Owor5o6b6JmfID4gdG9cLXJlZ2lzdGVyXC1cKGFcLWxldHRlclwsXC1ldGNcLlwpOwor6KOc6IuXID4gZmlsbFwtdGhlXC1nYXBzXC13aXRoXC1zZWVkbGluZ3M7CivmrablipsgPiBcKG1ha2VcLXVzZVwtb2ZcKVwtbWlsaXRhcnlcLWZvcmNlOwor5pS+5YGHID4gdG9cLWhhdmVcLWFcLWhvbGlkeVwtb3JcLXZhY2F0aW9uOwor6IiJ6YeNID4gXCh0aGVcLXNwb3J0XC1vZlwpXC13ZWlnaHRsaWZ0aW5nOwor5Zq06KmeID4gXChjcml0aWNpemVcLFwtZXRjXC5cKVwtZm9yY2VmdWxseTsKK+Wig+WFpyA+IHdpdGhpblwtXChhXC1jb3VudHJ5JydzXClcLWJvcmRlcnM7Civoj6/kurogPiBldGhuaWNcLWNoaW5lc2VcLXBlcnNvblx8cGVvcGxlOwor5qmL5pysID4gXChqYXBhbmVzZVwtc3VybmFtZVwpXC1oYXNoaW1vdG87CivlnLDnmq4gPiBsb3RcLFwtc2VjdGlvblwtb2ZcLWxhbmRcLFwtZ3JvdW5kOwor6L2J5qmfID4gXCh0YWtlXC1hXClcLXR1cm5cLWZvclwtdGhlXC1iZXR0ZXI7CivluLjlp5QgPiBtZW1iZXJcLW9mXC1zdGFuZGluZ1wtY29tbWl0dGVlOwor6LW36aObID4gdG9cLXRha2VcLW9mZlwtXChpblwtYW5cLWFpcnBsYW5lXCk7CivplovluZUgPiB0b1wtb3BlblwtXChhXC1jb25mZXJlbmNlXCxcLWVcLmdcLlwpOwor5omT6YedID4gdG9cLWdpdmVcLW9yXC1oYXZlXC1hblwtaW5qZWN0aW9uOwor55Kn6KydID4gZGVjbGluZVwtXChhXC1naWZ0XClcLXdpdGhcLXRoYW5rczsKK+WwjeiPryA+IFwocG9saWN5XCxcLWV0Y1wuXClcLXRvd2FyZHNcLWNoaW5hOwor5YSA5ZmoID4gXChzY2llbnRpZmljXCxcLWV0Y1wpXC1pbnN0cnVtZW50Owor56m26L6mID4gdG9cLWludmVzdGlnYXRlXC1hbmRcLWRlYWxcLXdpdGg7CivlrprnvaogPiBjb252aWN0XC1cKHNvbWVvbmVcLW9mXC1hXC1jcmltZVwpOwor5pys6aGMID4gdGhlXC1zdWJqZWN0XC11bmRlclwtZGlzY3Vzc2lvbjsKK+iDjOewjSA+IGFcLWJhc2tldFwtY2FycmllZFwtb25cLXRoZVwtYmFjazsKK+aciemXnCA+IHRvXC1oYXZlXC1zb21ldGhpbmdcLXRvXC1kb1wtd2l0aDsKK+S+hua6kCA+IHNvdXJjZVwtXChvZlwtaW5mb3JtYXRpb25cLFwtZXRjXCk7CivnjbLph4sgPiBvYnRhaW5cLXJlbGVhc2VcLVwoZnJvbVwtcHJpc29uXCk7CivlsI3ml6UgPiBcKHBvbGljeVwsXC1ldGNcLlwpXC10b3dhcmRzXC1qYXBhbjsKK+aGi+awoyA+IGZlZWxcLXN1ZmZvY2F0ZWRcLW9yXC1vcHByZXNzZWQ7CivlkIzog54gPiBmZWxsb3dcLWNpdGl6ZW5cLW9yXC1jb3VudHJ5bWFuOwor5Yy+6aGNID4gYVwtaG9yaXpvbnRhbFwtaW5zY3JpYmVkXC1ib2FyZDsKK+eiuuiouiA+IHRvXC1tYWtlXC1hXC1kZWZpbml0ZVwtZGlhZ25vc2lzOwor5a6D5YCRID4gdGhleVwtXChmb3JcLWluYW5pbWF0ZVwtb2JqZWN0c1wpOwor54++5aC0ID4gc2NlbmVcLVwob2ZcLWV2ZW50XC1vclwtaW5jaWRlbnRcKTsKK+aEm+aDhSA+IGxvdmVcLVwoYmV0d2VlblwtbWFuXC1hbmRcLXdvbWFuXCk7Civorornr4AgPiBtYWtlXC1hXC1wb2xpdGljYWxcLXJlY2FudGF0aW9uOwor5raJ5auMID4gdG9cLWJlXC1hXC1zdXNwZWN0XC1cKGluXC1hXC1jcmltZVwpOwor5aSx6LazID4gdG9cLXRha2VcLWFcLXdyb25nXC1zdGVwXC1pblwtbGlmZTsKK+eKp+eJsiA+IHNhY3JpZmljZVwtXChvbmUnJ3NcLWxpZmVcLFwtZXRjXC5cKTsKK+S6nuS8ryA+IGFiZVwtXChzaG9ydFwtZm9ybVwtZm9yXC1hYnJhaGFtXCk7CivnjJzlv4wgPiBiZVwtc3VzcGljaW91c1wtYW5kXC1qZWFsb3VzXC1vZjsKK+m7qOWFpyA+IHdpdGhpblwtdGhlXC1cKGNvbW11bmlzdFwpXC1wYXJ0eTsKK+WLleiVqSA+IFwoc29jaWFsXC1vclwtcG9saXRpY2FsXClcLXVucmVzdDsKK+eOi+S4uSA+IHdhbmdcLWRhblwtXChjaGluZXNlXC1kaXNzaWRlbnRcKTsKK+axuuWumiA+IHRvXC1kZWNpZGVcLVwodG9cLWRvXC1zb21ldGhpbmdcKTsKK+WniuWmuSA+IFwob2xkZXJcLWFuZFwteW91bmdlclwpXC1zaXN0ZXJzOwor6YC86IKWID4gYmVhclwtYVwtY2xvc2VcLXJlc2VtYmxhbmNlXC10bzsKK+W+qeWvqSA+IHJlZXhhbWluZVwtXChhXC1qdWRpY2lhbFwtY2FzZVwpOwor5YWl6ZaAID4gaW50cm9kdWN0aW9uXC1cKHRvXC1hXC1zdWJqZWN0XCk7Civnmb3pnLIgPiB3aGl0ZVwtZGV3XC1cKDE1dGhcLXNvbGFyXC10ZXJtXCk7Civoo5zpq5QgPiBjb21wbGVtZW50XC1cKGluXC1ibG9vZFwtc2VydW1cKTsKK+ipleavlCA+IHRvXC1ldmFsdWF0ZVwtXChieVwtY29tcGFyaXNvblwpOwor6L2J6LqrID4gXChvZlwtYVwtcGVyc29uXClcLXRvXC10dXJuXC1yb3VuZDsKK+eIquWThyA+IGphdmFcLVwocHJvZ3JhbW1pbmdcLWxhbmd1YWdlXCk7CivmlYjlv6AgPiB2b3dcLWxveWFsdHlcLWFuZFwtZGV2b3Rpb25cLXRvOwor5o6h6L6mID4gYnV5XC1vblwtYVwtY29uc2lkZXJhYmxlXC1zY2FsZTsKK+W8n+WmuSA+IHNpc3RlclwtaW5cLWxhd1wtXCh3aWZlJydzXC1zaWRlXCk7CivpmbfmlrwgPiBjYXVnaHRcLWluXC1cKGFcLWJhZFwtc2l0dWF0aW9uXCk7CivlpJbljK8gPiBmb3JlaWduXC1cKGN1cnJlbmN5XClcLWV4Y2hhbmdlOwor5pGY55SxID4gaGlnaFwtcG9pbnRzXC1cKG9mXC1hXC1kb2N1bWVudFwpOwor5YG06Lq6ID4gdG9cLWxpZVwtZG93blwtXChvblwtb25lJydzXC1zaWRlXCk7CivmkJzmjZUgPiBodW50XC1hbmRcLWFycmVzdFwtXChmdWdpdGl2ZXNcKTsKK+aPueabuCA+IHJlY2l0ZVwtYVwtbGVzc29uXC1mcm9tXC1tZW1vcnk7CivlubjlhY0gPiBuYXJyb3dseVwtYW5kXC1sdWNraWx5XC1lc2NhcGU7CivlnIvmqJkgPiBndW9iaWFvXC1cKGVuY29kaW5nXC1zdGFuZGFyZFwpOwor5L6/6KGAID4gaGF2aW5nXC1ibG9vZFwtaW5cLW9uZScnc1wtc3Rvb2w7Civnl4XmqZ8gPiBpbnRlcnByZXRhdGlvblwtb2ZcLXRoZVwtY2F1c2U7CivmiY3oj68gPiBsaXRlcmFyeVwtb3JcLWFydGlzdGljXC10YWxlbnQ7CivmjIfms5UgPiBmaW5nZXJcLW1ldGhvZFwtXChpblwtcGFpbnRpbmdcKTsKK+WvtuiXjyA+IHByZWNpb3VzXC1cKG1pbmVyYWxcKVwtZGVwb3NpdHM7Civmj5DliY0gPiB0b1wtc2hpZnRcLXRvXC1hblwtZWFybGllclwtZGF0ZTsKK+i8qeWHuiA+IGNvbWVcLWZvcnRoXC1pblwtbGFyZ2VcLW51bWJlcnM7Civmnb/ptKggPiBwcmVzc2VkXC1cKGRyaWVkXClcLXNhbHRlZFwtZHVjazsKK+aLlOa1tyA+IGVsZXZhdGlvblwtXChhYm92ZVwtc2VhXC1sZXZlbFwpOwor5YCr5pWmID4gbG9uZG9uXC1cKGNhcGl0YWxcLW9mXC1lbmdsYW5kXCk7Civmop3mrL4gPiBjbGF1c2VcLVwob2ZcLWNvbnRyYWN0XC1vclwtbGF3XCk7Civnl4XkvosgPiBcW21lZGljYWxcXVwtY2FzZVwtXFtvZlwtaWxsbmVzc1xdOwor5Zmo5a6YID4gb3JnYW5cLVwocGFydFwtb2ZcLWJvZHlcLXRpc3N1ZVwpOwor54+t57SaID4gY2xhc3Nlc1wtb3JcLWdyYWRlc1wtaW5cLXNjaG9vbDsKK+aGsuazlSA+IGNvbnN0aXR1dGlvblwtXChvZlwtYVwtY291bnRyeVwpOwor5LiN6KuxID4gd2l0aG91dFwtY29uY2VhbGluZ1wtYW55dGhpbmc7Civlronmj5IgPiBwbGFjZVwtaW5cLWFcLWNlcnRhaW5cLXBvc2l0aW9uOwor5Y+k6LmfID4gcGxhY2VzXC1vZlwtaGlzdG9yaWNcLWludGVyZXN0Owor5rCj6auUID4gZ2FzXC1cKGllXCxcLWdhc2VvdXNcLXN1YnN0YW5jZVwpOwor5a2r5a2QID4gZ3JhbmRzb25cLVwoc29uXC1vZlwtb25lJydzXC1zb25cKTsKK+WllOmosCA+IFwob2ZcLXdhdmVzXClcLXRvXC1zdXJnZVwtZm9yd2FyZDsKK+mDtembuyA+IHBvc3RcLWFuZFwtdGVsZWNvbW11bmljYXRpb25zOwor5ZWP5YCZID4gZ2l2ZVwtc29tZW9uZVwtb25lJydzXC1yZXNwZWN0czsKK+ellueItiA+IGdyYW5kZmF0aGVyXC1cKGZhdGhlcicnc1wtc2lkZVwpOwor5rG6562WID4gXChtYWtlXC1hXClcLXN0cmF0ZWdpY1wtZGVjaXNpb247CivnpZbmr40gPiBncmFuZG1vdGhlclwtXChmYXRoZXInJ3NcLXNpZGVcKTsKK+mHneeBuCA+IGFjdXB1bmN0dXJlXC1hbmRcLW1veGlidXN0aW9uOwor5LiA5pemID4gaW5cLWNhc2VcLVwoc29tZXRoaW5nXC1oYXBwZW5zXCk7Civlo73ovrAgPiBiaXJ0aGRheVwtXChvZlwtYW5cLW9sZFwtcGVyc29uXCk7CivlvqnnlKYgPiByZWNvdmVyeVwtXChoZWFsdGhcLFwtZWNvbm9taWNcKTsKK+aZguacnyA+IGFcLXBlcmlvZFwtaW5cLXRpbWVcLW9yXC1oaXN0b3J5Owor5ZCE5ZywID4gaW5cLWFsbFwtcGFydHNcLW9mXC1cKGFcLWNvdW50cnlcKTsKK+eikeaWhyA+IGFuXC1pbnNjcmlwdGlvblwtb25cLWFcLXRhYmxldDsKK+WPsOWMlyA+IHRhaXBlaVwtXChjYXBpdGFsXC1vZlwtdGFpd2FuXCk7CivmsrPlhacgPiBoYW5vaVwtXChjYXBpdGFsXC1vZlwtdmlldG5hbVwpOwor6YeP5YqbID4gdG9cLWVzdGltYXRlXC1vbmUnJ3NcLXN0cmVuZ3RoOwor5pah5peLID4gbWVkaWF0ZVwtXChhXC1jb25mbGljdFwsXC1ldGNcLlwpOwor54mM5Yy+ID4gYm9hcmRcLVwoYXR0YWNoZWRcLXRvXC1hXC13YWxsXCk7Civli5XmiYsgPiB0b1wtaGl0XC13aXRoXC1oYW5kc1wtb3JcLWZpc3RzOwor5q2l5pyIID4gdG9cLXN0cm9sbFwtYmVuZWF0aFwtdGhlXC1tb29uOwor6KqT5birID4gdG9cLXZvd1wtYmVmb3JlXC1vbmUnJ3NcLXRyb29wczsKK+mDqOWnlCA+IG1pbmlzdHJpZXNcLWFuZFwtY29tbWlzc2lvbnM7Civpm6PmgKogPiBcKGl0JydzXClcLW5vXC13b25kZXJcLVwodGhhdFwuXC5cLlwpOwor5YeN57WQID4gXChsb2FuXCxcLXdhZ2VcLFwtcHJpY2VcKVwtZnJlZXplOwor5pa95YqgID4gZXhlcnRcLVwoZWZmb3J0XC1vclwtcHJlc3N1cmVcKTsKK+imlueqlyA+IHdpbmRvd3NcLVwob3BlcmF0aW5nXC1zeXN0ZW1cKTsKK+W3qOiRlyA+IG1vbnVtZW50YWxcLVwobGl0ZXJhcnlcKVwtd29yazsKK+WLn+WMliA+IHRvXC1jb2xsZWN0XC1hbG1zXC1cKGJ1ZGRoaXNtXCk7Civpg6jkuIsgPiB0cm9vcHNcLXVuZGVyXC1vbmUnJ3NcLWNvbW1hbmQ7CivlhajnqIsgPiBcKGR1cmluZ1wtYW5cKVwtZW50aXJlXC1qb3VybmV5Owor6ZW356+HID4gbGVuZ3RoeVwtXChyZXBvcnRcLW9yXC1zcGVlY2hcKTsKK+ilv+a5liA+IHRoZVwtd2VzdFwtbGFrZVwsXC1pblwtaGFuZ3pob3U7CivmkqXlvIQgPiBtb3ZlXC10b1wtYW5kXC1mcm9cLVwod2l0aFwtaGFuZDsKK+ihqOiomCA+IHNvbWV0aGluZ1wtZ2l2ZW5cLWFzXC1hXC10b2tlbjsKK+ihqOijoSA+IHRoZVwtb3V0c2lkZVwtYW5kXC10aGVcLWluc2lkZTsKK+mAvOWCtSA+IHByZXNzXC1mb3JcLXBheW1lbnRcLW9mXC1kZWJ0czsKK+ethumLkiA+IHRoZVwtdGlwXC1vZlwtYVwtd3JpdGluZ1wtYnJ1c2g7CivloLHliIogPiBuZXdzcGFwZXJzXC1hbmRcLXBlcmlvZGljYWxzOwor5ryU6KybID4gXChnaXZlXClcLWFcLXNwZWVjaFwtb3JcLWxlY3R1cmU7CivlnIvniLYgPiBmYXRoZXJcfGZvdW5kZXJcLW9mXC1hXC1uYXRpb247Civkvp3pnaAgPiByZWx5XC1vblwtXChmb3JcLXN1cHBvcnRcLFwtZXRjXCk7CivmiYDplbcgPiBoZWFkXC1vZlwtYW5cLWluc3RpdHV0ZVwsXC1ldGNcLjsKK+iLpeW5siA+IGFcLWNlcnRhaW5cLW51bWJlclx8YW1vdW50XC1vZjsKK+ertumBuCA+IHJ1blwtZm9yXC1cKGVsZWN0b3JhbFwpXC1vZmZpY2U7CivmkLblhYggPiB0b1wtcnVzaFwtXCh0b1wtZG9cLXN0aFwtdXJnZW50XCk7CivlgZznlZkgPiBzdGF5XC1zb21ld2hlcmVcLXRlbXBvcmFyaWx5Owor55eF5qCqID4gZGlzZWFzZWRcLW9yXC1pbmZlY3RlZFwtcGxhbnQ7Civkv5fnqLEgPiBiZVwtY29tbW9ubHlcLXJlZmVycmVkXC10b1wtYXM7CivooYzlsIcgPiBiZVwtYWJvdXRcLXRvXC1cKGRvXC1zb21ldGhpbmdcKTsKK+i2s+eQgyA+IGZvb3RiYWxsXC1cKGJyaXRpc2hcLWVuZ2xpc2hcKTsKK+iDjOiEiiA+IHRoZVwtYmFja1wtb2ZcLXRoZVwtaHVtYW5cLWJvZHk7Civmipfmk4ogPiByZXNpc3RcLVwoYVwtbWlsaXRhcnlcLWF0dGFja1wpOwor5bCL5qmfID4gdG9cLWxvb2tcLWZvclwtYW5cLW9wcG9ydHVuaXR5Owor5a+m5rOBID4gd2hhdFwtaXNcLWFjdHVhbGx5XC1oYXBwZW5pbmc7CivkuIHpm7IgPiBkaW5nXC15dW5cLVwoYVwtcGVyc29uYWxcLW5hbWVcKTsKK+ahiOadvyA+IGtuZWFkaW5nXC1vclwtY2hvcHBpbmdcLWJvYXJkOwor5L+d5a6IID4gXChwb2xpdGljYWxseVwpXC1jb25zZXJ2YXRpdmU7CivkuI3pgIEgPiBkb24nJ3RcLWJvdGhlclwtdG9cLXNlZVwtbWVcLW91dDsKK+elnumBkyA+IHNoaW50b1wtXChqYXBhbmVzZVwtcmVsaWdpb25cKTsKK+Wwh+WwsSA+IGFjY2VwdFwtXChhXC1iaXRcLXJlbHVjdGFudGx5XCk7Civmh7fmirEgPiBcKHdpdGhpblwtc29tZW9uZScnc1wpXC1lbWJyYWNlOwor5Y+z6YKKID4gcmlnaHRcLVwoYXNcLW9wcG9zZWRcLXRvXC1sZWZ0XCk7CivnpL7oq5YgPiBlZGl0b3JpYWxcLVwoaW5cLWFcLW5ld3NwYXBlclwpOwor5a625bi4ID4gdGhlXC1kYWlseVwtbGlmZVwtb2ZcLWFcLWZhbWlseTsKK+abuOiBliA+IGFcLWdyZWF0XC1jYWxsaWdyYXBoeVwtbWFzdGVyOwor6LOH5pysID4gY2FwaXRhbFwtXChhc1wtaW5cLWNhcGl0YWxpc21cKTsKK+miqOeQtCA+IG9yZ2FuXC1cKG11c2ljYWxcLWluc3RydW1lbnRcKTsKK+Wtl+W4liA+IGNvcHlib29rXC1cKGZvclwtY2FsbGlncmFwaHlcKTsKK+WuieWIhiA+IG5vdFwtZ29cLWJleW9uZFwtb25lJydzXC1ib3VuZHM7CivmmpfnrJEgPiBsYXVnaFwtaW5cLVwodXBcKVwtb25lJydzXC1zbGVldmU7Civnvo7njrIgPiBtZWlcLWxpbmdcLVwoYVwtcGVyc29uJydzXC1uYW1lXCk7CivnoqfooYAgPiBibG9vZFwtc2hlZFwtaW5cLWFcLWp1c3RcLWNhdXNlOwor5rSq5qOuID4gaHVuXC1zZW5cLVwoY2FtYm9kaWFuXC1sZWFkZXJcKTsKK+eon+WRiiA+IHJlcG9ydFwtXCh0b1wtb25lJydzXC1zdXBlcmlvclwpOwor6YG66auUID4gcmVtYWluc1wtXChvZlwtYVwtZGVhZFwtcGVyc29uXCk7Civpgb/poqggPiB0YWtlXC1zaGVsdGVyXC1mcm9tXC10aGVcLXdpbmQ7Civnpo/lu7ogPiBmdWppYW5cLVwocHJvdmluY2VcLW9mXC1jaGluYVwpOwor5YuY6KqkID4gdG9cLWNvcnJlY3RcLXByaW50aW5nXC1lcnJvcnM7CivljYfntJogPiB0b1wtZXNjYWxhdGVcLVwoaW5cLWludGVuc2l0eVwpOwor5by36Kq/ID4gdG9cLWVtcGhhc2l6ZVwtXChhXC1zdGF0ZW1lbnRcKTsKK+iAjOS4lCA+IG5vdFwtb25seVwtXC5cLlwuXC1idXRcLWFsc29cLVwuXC5cLlwuOwor6YG36YO9ID4gdG9cLW1vdmVcLXRoZVwtY2FwaXRvbFwtXChjaXR5XCk7CivkuI3kvYYgPiBub3RcLW9ubHlcLVwoXC5cLlwuXC1idXRcLWFsc29cLlwuXC5cKTsKK+WMheeUoiA+IG1ha2VcLWFcLXByb2R1Y3Rpb25cLWNvbnRyYWN0Owor5YyX5pydID4gdGhlXC1ub3J0aGVyblwtZHluYXN0aWVzXC1cKGE7CivljIXmlKwgPiB1bmRlcnRha2VcLXRoZVwtd2hvbGVcLXRoaW5nOwor5Yue5pWZID4gcmVlZHVjYXRpb25cLXRocm91Z2hcLWxhYm9yOwor5Y2K5aC0ID4gaGFsZlwtb2ZcLWFcLWdhbWVcLW9yXC1jb250ZXN0Owor55m86YGUID4gZGV2ZWxvcGVkXC1cKGNvdW50cnlcLFwtZXRjXC5cKTsKK+eAiemcsiA+IHRvXC1sZWFrXC1vdXRcLVwoaW5mb3JtYXRpb25cKTsKK+atsuaVuCA+IGFnZVwtXChudW1iZXJcLW9mXC15ZWFyc1wtb2xkXCk7CivplovoqK0gPiBvZmZlclwtXChnb29kc1wtb3JcLXNlcnZpY2VzXCk7Civlu6PmnbEgPiBndWFuZ2RvbmdcLXByb3ZpbmNlXCxcLWNoaW5hOwor5pS+5b+DID4gdG9cLXNldFwtb25lJydzXC1taW5kXC1hdFwtcmVzdDsKK+mtr+i/hSA+IG5hbWVcLW9mXC1hblwtYXV0aG9yXCxcLWx1XC14dW47CivpgZnmnJsgPiB0b1wtbG9va1wtaW50b1wtdGhlXC1kaXN0YW5jZTsKK+ijnOi2syA+IGJyaW5nXC11cFwtdG9cLWZ1bGxcLXN0cmVuZ3RoOwor54as5aScID4gc3RheVwtdXBcLWxhdGVcLW9yXC1hbGxcLW5pZ2h0Owor6auU6amXID4gdG9cLWV4cGVyaWVuY2VcLWZvclwtb25lc2VsZjsKK+aSleavgCA+IHRlYXJcLXVwXC1cKGFcLWNvbnRyYWN0XCxcLWV0Y1wpOwor5YK+6Yq3ID4gdG9cLWR1bXBcLVwoZ29vZHNcLFwtcHJvZHVjdHNcKTsKK+eci+azlSA+IHdheVwtb2ZcLWxvb2tpbmdcLWF0XC1hXC10aGluZzsKK+mXnOazqCA+IGZvbGxvd1wtXChhblwtaXNzdWVcKVwtY2xvc2VseTsKK+WJneWVhCA+IHRhcFwtXChvblwtYVwtZG9vclwtb3JcLXdpbmRvd1wpOwor6L6o5p6QID4gZGlmZmVyZW50aWF0ZVwtYW5kXC1hbmFseXNlOwor5ZyL55SiID4gbWFkZVwtaW5cLW9uZScnc1wtb3duXC1jb3VudHJ5Owor55m95pePID4gdGhlXC1iYWlcLVwocGFpXClcLW5hdGlvbmFsaXR5Owor55eF55mSID4gcmVjb3ZlclwtXChmcm9tXC1hblwtaWxsbmVzc1wpOwor5a+s6ZmQID4gZXh0ZW5kXC1cKGFcLWRlYWRsaW5lXCxcLWV0Y1wuXCk7CivooajmhYsgPiBtYWtlXC1rbm93blwtb25lJydzXC1wb3NpdGlvbjsKK+Wuo+iqkyA+IHN3ZWFyXC1hblwtb2F0aFwtXChvZlwtb2ZmaWNlXCk7Civmi5zmnJsgPiBjYWxsXC10b1wtcGF5XC1vbmUnJ3NcLXJlc3BlY3Q7Civnr4fluYUgPiBcKHRha2VcLXVwXC1vclwtZGV2b3RlXClcLXNwYWNlOwor6aaW55u4ID4gXChqYXBhbmVzZVwpXC1wcmltZVwtbWluaXN0ZXI7CivmiorlvI8gPiBwZXJzb25cLXNraWxsZWRcLWluXC1hXC10cmFkZTsKK+a3mOexriA+IGJhc2tldFwtXChmb3JcLXdhc2hpbmdcLXJpY2VcKTsKK+eUpeWlsyA+IG5pZWNlXC1cKHNpc3Rlcicnc1wtZGF1Z2h0ZXJcKTsKK+a8ouS6uiA+IGhhblwtY2hpbmVzZVwtcGVyc29uXHxwZW9wbGU7CivkvLrmqZ8gPiB0b1wtd2F0Y2hcLWZvclwtb25lJydzXC1jaGFuY2U7CivpoLjpg6ggPiB0aGVcLW5lY2tcLWFyZWFcLW9mXC10aGVcLWJvZHk7Civog4zlvbEgPiBhXC12aWV3XC1vZlwtc29tZWJvZHknJ3NcLWJhY2s7Civni6Hos7QgPiB0b1wtZGVueVwtXCh0aHJvdWdoXC1zb3BoaXNtXCk7Civororos6MgPiBzZWxsXC1vZmZcLVwob25lJydzXC1wcm9wZXJ0eVwpOwor5rG66LO9ID4gZmluYWxzXC1cKG9mXC1hXC1jb21wZXRpdGlvblwpOwor5p2/5pu4ID4gd3JpdGluZ1wtb25cLXRoZVwtYmxhY2tib2FyZDsKK+ePgOaWryA+IHBlcnRoXC1cKGNpdHlcLWluXC1hdXN0cmFsaWFcKTsKK+aEm+aGkCA+IHNob3dcLXRlbmRlclwtYWZmZWN0aW9uXC1mb3I7CivmmrTmvLIgPiByaXNlXC1zdWRkZW5seVwtYW5kXC1zaGFycGx5Owor6YyE5YWxID4gdG9cLXRha2VcLWRvd25cLWFcLWNvbmZlc3Npb247CivmnKzlrrYgPiBhXC1tZW1iZXJcLW9mXC10aGVcLXNhbWVcLWNsYW47CivpnaLoh6ggPiBiZVwtZmFjZWRcLXdpdGhcLVwoYVwtcHJvYmxlbVwpOwor5rGg5rmvID4gbGFyZ2VcLXBvb2xcLWluXC1hXC1iYXRoaG91c2U7CivnjY7li7UgPiByZXdhcmRcLVwoYXNcLWVuY291cmFnZW1lbnRcKTsKK+mghuW3riA+IFwodHJhZGVcLW9yXC1idWRnZXRcKVwtc3VycGx1czsKK+WInemBuCA+IFwodXNcKVwtcHJpbWFyaWVzXC1cKGVsZWN0aW9uXCk7CivloLHpircgPiBzdWJtaXRcLWFuXC1leHBlbnNlXC1hY2NvdW50Owor5Y+U5Y+UID4gZmF0aGVyJydzXC15b3VuZ2VyXC1icm90aGVyOwor5Z+O6ZecID4gYXJlYVwtb3V0c2lkZVwtYVwtY2l0eVwtZ2F0ZTsKK+mBi+eulyA+IFwobWF0aGVtYXRpY2FsXClcLW9wZXJhdGlvbjsKK+W3numVtyA+IGdvdmVybm9yXC1cKG9mXC1hXC11c1wtc3RhdGVcKTsKK+mDqOWxrCA+IGFmZmlsaWF0ZWRcLXRvXC1hXC1taW5pc3RyeTsKK+W8leaTjiA+IGVuZ2luZVwtXCh0cmFuc2xpdGVyYXRpb25cKTsKK+eZu+iomCA+IHRvXC1yZWdpc3RlclwtXChvbmUnJ3NcLW5hbWVcKTsKK+apn+e1hCA+IGZsaWdodFwtY3Jld1wtXChvblwtYVwtcGxhbmVcKTsKK+mBvOWvpyA+IGxpYW9uaW5nXC1wcm92aW5jZVwsXC1jaGluYTsKK+eFp+W4uCA+IFwoYnVzaW5lc3NcLFwtZXRjXClcLWFzXC11c3VhbDsKK+aSq+aRuCA+IGdlbnRseVwtY2FyZXNzXC1hbmRcLXN0cm9rZTsKK+WIh+aWtyA+IGN1dFwtb2ZmXC1cKGFcLXN1cHBseVwsXC1ldGNcLlwpOwor5bu65Yi2ID4gb3JnYW5pemF0aW9uYWxcLXN0cnVjdHVyZTsKK+mAgOW9uSA+IHJldGlyZVwtZnJvbVwtdGhlXC1taWxpdGFyeTsKK+mBleWPjSA+IHRvXC12aW9sYXRlXC1cKGFcLWxhd1wsXC1lXC5nXC5cKTsKK+W5q+W7miA+IGhlbHBcLWluXC10aGVcLW1lc3NcLWtpdGNoZW47Civoo5znqIUgPiBwYXlcLWFcLXRheFwtb25lXC1oYXNcLWV2YWRlZDsKK+ilsuaTiiA+IFwobWFrZVwtYVwpXC1zdXJwcmlzZVwtYXR0YWNrOwor55m95reoID4gXChvZlwtc2tpblwpXC1mYWlyXC1hbmRcLWNsZWFyOwor5beh5p+lID4gdG9cLWdvXC1hcm91bmRcLWFuZFwtaW5zcGVjdDsKK+WFteabuCA+IGFcLWJvb2tcLW9uXC10aGVcLWFydFwtb2ZcLXdhcjsKK+eUoumKtyA+IHByb2R1Y3Rpb25cLWFuZFwtbWFya2V0aW5nOwor6ZeM5bC+ID4gYXBwZW5kaXhcLVwoaW5cLWh1bWFuXC1ib2R5XCk7CivluYXlk6EgPiBhXC1jb3VudHJ5JydzXC1zdXJmYWNlXC1hcmVhOwor5pKl5LuYID4gYXBwcm9wcmlhdGVcLXN1bVwtb2ZcLW1vbmV5Owor5ZyL54efID4gc3RhdGVcLXJ1blwtXChjb21wYW55XCxcLWV0Y1wpOwor5pCN5aSxID4gYVwtXChmaW5hbmNpYWxcLFwtZXRjXC5cKVwtbG9zczsKK+i+puWFrCA+IGhhbmRsZVwtb2ZmaWNpYWxcLWJ1c2luZXNzOwor5L2Z6ZyHID4gXChlYXJ0aHF1YWtlXClcLWFmdGVyc2hvY2tzOwor55Wa566VID4gYVwtYmFtYm9vXC1vclwtd2lja2VyXC1zY29vcDsKK+eqgemhryA+IG1ha2VcLXNvbWV0aGluZ1wtc3RhbmRcLW91dDsKK+aPoeWKmyA+IFwoc3RyZW5ndGhcLW9mXC1vbmUnJ3NcKVwtZ3JpcDsKK+mmrOijoSA+IG1hbGlcLVwobmFtZVwtb2ZcLWFcLWNvdW50cnlcKTsKK+eXheaFiyA+IG1vcmJpZFwtb3JcLWFibm9ybWFsXC1zdGF0ZTsKK+aOp+WItiA+IHRvXC1cKGhhdmVcKVwtY29udHJvbFwtXChvdmVyXCk7CivkvbPog70gPiBjYW5vblwtXChqYXBhbmVzZVwtY29tcGFueVwpOwor55eF5a62ID4gYVwtcGF0aWVudFwtYW5kXC1oaXNcLWZhbWlseTsKK+eWkeaDkSA+IFwoYVwtc2Vuc2VcLW9mXClcLXVuY2VydGFpbnR5Owor5omT54mMID4gdG9cLXBsYXlcLW1haGpvbmdcLW9yXC1jYXJkczsKK+WBmuWuoiA+IHRvXC1iZVwtYVwtZ3Vlc3RcLW9yXC12aXNpdG9yOwor6KGM5L2/ID4gZXhlcmNpc2VcLVwoYVwtcmlnaHRcLFwtZXRjXC5cKTsKK+ethuaMuiA+IFwoc3RhbmRpbmdcKVwtdmVyeVwtc3RyYWlnaHQ7CivlronnpZ4gPiBjYWxtXC1cKHNvb3RoZVwpXC10aGVcLW5lcnZlczsKK+iBs+iCqSA+IHRvXC1zaHJ1Z1wtb25lJydzXC1zaG91bGRlcnM7Civmt7HnqbogPiBkZWVwXC1zcGFjZVwtXChvdXRlclwtc3BhY2VcKTsKK+WUkOe0jSA+IHRhbm5lclwtXChlbmdsaXNoXC1zdXJuYW1lXCk7CivlkYjoq4sgPiB0b1wtc3VibWl0XC1cKHRvXC1zdXBlcmlvcnNcKTsKK+S4iuiotCA+IGFwcGVhbFwtXChhXC1qdWRpY2lhbFwtY2FzZVwpOwor5oe35b+1ID4gdG9cLWNoZXJpc2hcLXRoZVwtbWVtb3J5XC1vZjsKK+eJuem7niA+IGNoYXJhY3RlcmlzdGljXC1cKGZlYXR1cmVcKTsKK+Wtl+avjSA+IGxldHRlclwtXChvZlwtdGhlXC1hbHBoYWJldFwpOwor5ZCM6KyAID4gdG9cLWNvbnNwaXJlXC13aXRoXC1zb21lb25lOwor5qGD5ZySID4gdGFveXVhblwtXChjaXR5XC1pblwtdGFpd2FuXCk7CivmsZ/pnaIgPiB0aGVcLXN1cmZhY2VcLW9mXC10aGVcLXJpdmVyOwor56KR6aGNID4gdGhlXC10b3BcLXBhcnRcLW9mXC1hXC10YWJsZXQ7CivkvLTlpY8gPiB0b1wtYWNjb21wYW55XC1cKG11c2ljYWxseVwpOwor5Y+z57+8ID4gXChwb2xpdGljYWxseVwpXC1yaWdodFwtd2luZzsKK+a1meaxnyA+IHpoZWppYW5nXC1wcm92aW5jZVwsXC1jaGluYTsKK+itmOimiyA+IGtub3dsZWRnZVwtYW5kXC1leHBlcmllbmNlOwor6LK35bizID4gdG9cLXNob3dcLXJlc3BlY3RcLVwoZm9yXC1zYlwpOwor5pqX566tID4gYXR0YWNrXC1ieVwtYVwtaGlkZGVuXC1lbmVteTsKK+a3seWcsyA+IHNoZW56aGVuXC1cKGNpdHlcLWluXC1jaGluYVwpOwor56iL5bqmID4gZGVncmVlXC1cKGxldmVsXC1vclwtZXh0ZW50XCk7CivlpKfpl5wgPiBcKHJlYWNoXC1hXClcLWNyaXRpY2FsXC1wb2ludDsKK+mgreeJiCA+IFwobmV3c3BhcGVyJydzXClcLWZyb250XC1wYWdlOwor5pil6IGvID4gc3ByaW5nXC1mZXN0aXZlbFwtY291cGxldHM7Civku6XkvoYgPiBzaW5jZVwtXChhXC1wcmV2aW91c1wtZXZlbnRcKTsKK+iTruiKsSA+IGxvdHVzXC1cKGNvbXB1dGVyXC1jb21wYW55XCk7CivkuI3ml6UgPiB3aXRoaW5cLXRoZVwtbmV4dFwtZmV3XC1kYXlzOwor6KuS6KejID4gXChyZWFjaFwpXC1hblwtdW5kZXJzdGFuZGluZzsKK+iTi+eroCA+IHRvXC1hZmZpeFwtYVwtc2VhbFwtXCh0b1wtc3RoXCk7Civop7jpm7sgPiB0b1wtZ2V0XC1hblwtZWxlY3RyaWNcLXNob2NrOwor5Li75YuVID4gXCh0b1wtdGFrZVwtdGhlXClcLWluaXRpYXRpdmU7CivoqLToqqogPiB0ZWxsXC1cKHRvXC1hbm90aGVyXC1wZXJzb25cKTsKK+e4vee1sSA+IHByZXNpZGVudFwtXChvZlwtYVwtY291bnRyeVwpOwor5aCx6aCtID4gbWFzdGhlYWRcLVwob2ZcLWFcLW5ld3NwYXBlcjsKK+WNl+aymSA+IG5hbnNoYVwtXChzcHJhdGx5XClcLWlzbGFuZHM7CivpgJrpgZMgPiBcKGNvbW11bmljYXRpb25zXClcLWNoYW5uZWw7CivmlL/nuL4gPiBcKHBvbGl0aWNhbFwpXC1hY2hpZXZlbWVudHM7Civlv4zmgaggPiBoYXRlXC1cKGR1ZVwtdG9cLWVudnlcLFwtZXRjXCk7Civpm7nngb0gPiBkaXNhc3RlclwtY2F1c2VkXC1ieVwtaGFpbDsKK+WHuuioqiA+IHZpc2l0XC1hXC1mb3JlaWduXC1jb3VudHJ5Owor5paR5paRID4gZnVsbFwtb2ZcLXN0YWluc1wtb3JcLXNwb3RzOwor6KW/6KOdID4gXCh3ZXN0ZXJuXC1zdHlsZVwpXC1jbG90aGVzOwor5Yqg5rK5ID4gdG9cLW1ha2VcLWFuXC1leHRyYVwtZWZmb3J0Owor5Yuf5o2QID4gdG9cLXNvbGljdFwtY29udHJpYnV0aW9uczsKK+eatOijgiA+IGNoYXBcLVwobGlwc1wsXC1za2luXCxcLWV0Y1wuXCk7CivopovogZ4gPiB3aGF0XC1vbmVcLXNlZXNcLWFuZFwtaGVhcnM7CivljZfkuqwgPiBuYW5qaW5nXC1cKGNpdHlcLWluXC1jaGluYVwpOwor6KaP57SEID4gdGVybXNcLVwob2ZcLWFuXC1hZ3JlZW1lbnRcKTsKK+atuOW/gyA+IGNvbnZlcnRlZFwtdG9cLVwocmVsaWdpb25cKTsKK+mAvOatuyA+IGhvdW5kXC1zb21lYm9keVwtdG9cLWRlYXRoOwor57Wx5rK7ID4gXChwb2xpdGljYWxcKVwtcnVsZVwtXChvdmVyXCk7Civoo5zoqrIgPiBtYWtlXC11cFwtYVwtbWlzc2VkXC1sZXNzb247CivpgJnmqKMgPiB0aGlzXC1cKGtpbmRcLW9mXCxcLXNvcnRcLW9mXCk7CivpgZTmiJAgPiB0b1wtcmVhY2hcLVwoYW5cLWFncmVlbWVudFwpOwor55m+6IisID4gaW5cLWh1bmRyZWRcLWFuZFwtb25lXC13YXlzOwor5o6I6KiIID4gdG9cLWNvbmZpZGVcLWFcLXBsYW5cLXRvXC1zYjsKK+WgseabiSA+IGhlcmFsZFwtdGhlXC1icmVha1wtb2ZcLWRheTsKK+WIqeW4giA+IFwibGFpXC1zZWVcIlwtXChsdWNreVwtbW9uZXlcKTsKK+WBtOmHjSA+IHBsYWNlXC1leHRyYVwtZW1waGFzaXNcLW9uOwor5aCx5oGpID4gcGF5XC1hXC1kZWJ0XC1vZlwtZ3JhdGl0dWRlOwor5bmr5a2QID4gb3V0ZXJcLVwob2ZcLWNhYmJhZ2VcLFwtZXRjXCk7Civoh6rosaogPiBcKGZlZWxcLWFcLXNlbnNlXC1vZlwpXC1wcmlkZTsKK+mYsuWLmSA+IFwocGVydGFpbmluZ1wtdG9cKVwtZGVmZW5zZTsKK+alree4viA+IG91dHN0YW5kaW5nXC1hY2hpZXZlbWVudDsKK+eVmeiogCA+IHRvXC1sZWF2ZVwtb25lJydzXC1jb21tZW50czsKK+W5tOS+hiA+IG92ZXJcLXRoZVwtbGFzdFwtXC5cLlwuXC15ZWFyczsKK+mWi+aLjSA+IGJlZ2luXC1zaG9vdGluZ1wtXChhXC1maWxtXCk7CivliIbkuYsgPiBcKGluZGljYXRpbmdcLWFcLWZyYWN0aW9uXCk7CivnrZTorJ0gPiB0b1wtZXhwcmVzc1wtb25lJydzXC10aGFua3M7CivnrYboq4cgPiBjb252ZXJzYXRpb25cLWJ5XC13cml0aW5nOwor55Gq6bqXID4gbWFsaVwtXChhXC1wZXJzb24nJ3MnJ1wtbmFtZVwpOwor55eH54uAID4gc3ltcHRvbVwtXChvZlwtYW5cLWlsbG5lc3NcKTsKK+S9lOmgmCA+IHRvXC1vY2N1cHlcLVwoYVwtdGVycml0b3J5XCk7CivlgpnmlpkgPiBnZXRcLXRoZVwtbWF0ZXJpYWxzXC1yZWFkeTsKK+WdpuWFiyA+IHRhbmtcLVwobWlsaXRhcnlcLXZlaGljbGVcKTsKK+Wbm+W3nSA+IHNpY2h1YW5cLXByb3ZpbmNlXCxcLWNoaW5hOwor6LKp6YGLID4gdG9cLXRyYW5zcG9ydFwtXChmb3JcLXNhbGVcKTsKK+S7iuitryA+IG1vZGVyblwtbGFuZ3VhZ2VcLXZlcnNpb247CivmipXmlL4gPiB0b1wtcHV0XC1pblwtXChjaXJjdWxhdGlvblwpOwor55eF5YCSID4gYmVcLWRvd25cLXdpdGhcLWFuXC1pbGxuZXNzOwor5ou35ZWPID4gdG9cLXF1ZXN0aW9uXC12aWFcLXRvcnR1cmU7CivmgqPpm6MgPiB0cmlhbHNcLWFuZFwtdHJpYnVsYXRpb25zOwor6Y2b54WJID4gdG9cLWRvXC1waHlzaWNhbFwtdHJhaW5pbmc7Civom5nms7MgPiBcKHN3aW1taW5nXClcLWJyZWFzdHN0cm9rZTsKK+aAjum6vCA+IFwoaW50ZXJyb2dhdGl2ZVwtcHJvbm91blwpOwor6aeQ5a6IID4gXChtYW5cLWFcLXBvc3RcLWFuZFwpXC1kZWZlbmQ7CivmuqvlkowgPiBtb2RlcmF0ZVwtXChwb2xpY3lcLFwtZXRjXC5cKTsKK+WQpuiqjSA+IHRvXC1kZWNsYXJlXC10b1wtYmVcLXVudHJ1ZTsKK+axn+ilvyA+IGppYW5neGlcLXByb3ZpbmNlXCxcLWNoaW5hOwor5oSb5pKrID4gdG9cLXNob3dcLXRlbmRlclwtY2FyZVwtZm9yOwor5Y+D6IiHID4gdG9cLXBhcnRpY2lwYXRlXC1cKGluXC1zdGhcKTsKK+a4r+S6uiA+IGhvbmdcLWtvbmdcLXBlcnNvblx8cGVvcGxlOwor6buD5rKzID4geWVsbG93XC1yaXZlclwtXChodWFuZ1wtaGVcKTsKK+axn+iYhyA+IGppYW5nc3VcLXByb3ZpbmNlXCxcLWNoaW5hOwor5Lu75ZG9ID4gdG9cLWFwcG9pbnRcLWFuZFwtbm9taW5hdGU7CivppIXlrZAgPiBtYWl6ZVwtb3JcLW1pbGxldFwtcGFuY2FrZTsKK+acn+aUtyA+IGVuZFwtb2ZcLXRlcm1cLWV4YW1pbmF0aW9uOwor57i96aGNID4gdG90YWxcLVwoYW1vdW50XC1vclwtdmFsdWVcKTsKK+isguiqniA+IFwoZ3JhbW1hdGljYWxcKVwtcHJlZGljYXRlOwor5Lit5pesID4gbWlkZGxlXC10aGlyZFwtb2ZcLWFcLW1vbnRoOwor5LiL5pesID4gbGFzdFwtdGhpcmRcLW9mXC10aGVcLW1vbnRoOwor6LKd5YWLID4gYmFrZXJcLVwoZW5nbGlzaFwtc3VybmFtZVwpOwor5LqC5ZCDID4gdG9cLWVhdFwtaW5kaXNjcmltaW5hbnRseTsKK+aBqeaAqCA+IFwoZmVlbGluZ1wtb2ZcKVwtcmVzZW50bWVudDsKK+S4jeWkliA+IG5vdFwtYmV5b25kXC10aGVcLXNjb3BlXC1vZjsKK+acjeWIkSA+IHNlcnZlXC1hXC1wcmlzb25cLXNlbnRlbmNlOwor6I6r6Z2eID4gY2FuXC1pdFwtYmVcLXBvc3NpYmxlXC10aGF0Owor5buj6KW/ID4gZ3Vhbmd4aVwtcHJvdmluY2VcLFwtY2hpbmE7CivlpZTngIkgPiBcKG9mXC10b3JyZW50c1wpXC1ydXNoXC1kb3duOwor6YG655WZID4gXChsZWF2ZVwtb3JcLWJlXC1hXClcLWxlZ2FjeTsKK+W4uOimjyA+IGNvbnZlbnRpb25hbFwtXCh3ZWFwb25zXCk7CivorYnliLggPiBcKGZpbmFuY2lhbFwpXC1zZWN1cml0aWVzOwor5b6A5bi4ID4gaGFiaXR1YWxseVwtaW5cLXRoZVwtcGFzdDsKK+WmluWGtiA+IHByZXR0eVwtYW5kXC1mbGlydGF0aW91czsKK+mdqeWRvSA+IFwocG9saXRpY2FsXClcLXJldm9sdXRpb247Civoq5blo4cgPiBmb3J1bVwtXChmb3JcLWRpc2N1c3Npb25cKTsKK+Wjn+aWtyA+IGVuam95XC1tYXJrZXRcLWRvbWluYW5jZTsKK+eJoeS4uSA+IHBlb255XC1cKHR5cGVcLW9mXC1mbG93ZXJcKTsKK+WgseeohSA+IGRlY2xhcmVcLWR1dGlhYmxlXC1nb29kczsKK+WFrOiqjSA+IHB1YmxpY2x5XC1rbm93blwtXCh0b1wtYmVcKTsKK+eZvOihqCA+IHRvXC1pc3N1ZVwtXChhXC1zdGF0ZW1lbnRcKTsKK+mbu+WZqCA+IFwoZWxlY3RyaWNhbFwpXC1hcHBsaWFuY2U7Civmrrfli6QgPiBwb2xpdGVseVwsXC1zb2xpY2l0b3VzbHk7CivliLDmnJ8gPiBiZWNvbWVcLWR1ZVwtXChlZ1wsXC1sb2Fuc1wpOwor55eF6ZmiID4gYVwtc3BlY2lhbGl6ZWRcLWhvc3BpdGFsOwor55eF6LGhID4gc3ltcHRvbVwtXChvZlwtYVwtZGlzZWFzZVwpOwor5qy65YeMID4gdG9cLWJ1bGx5XC1hbmRcLWh1bWlsaWF0ZTsKK+mBjeWPiiA+IHRvXC1leHRlbmRcLVwoZXZlcnl3aGVyZVwpOwor57C9572yID4gdG9cLXNpZ25cLVwoYW5cLWFncmVlbWVudFwpOwor5aCx5bCOID4gdG9cLWNvdmVyXC1cKHJlcG9ydFwpXC1uZXdzOwor5biD5pyXID4gZW5nbGlzaFwtc3VybmFtZVwsXC1icm93bjsKK+aomea6liA+IFwoYW5cLW9mZmljaWFsXClcLXN0YW5kYXJkOwor6YCA5LyRID4gcmV0aXJlbWVudFwtXChmcm9tXC13b3JrXCk7CivotqjpmYQgPiB0b1wtaW5ncmF0aWF0aW9uXC1vbnNlbGY7CivnrYbot6EgPiBhXC1wZXJzb24nJ3NcLWhhbmR3cml0aW5nOwor55uh5YqbID4gZG9cLW9uZScnc1wtYmVzdFwtXChlZmZvcnRcKTsKK+ethuiomCA+IHRha2VcLWRvd25cLVwoaW5cLXdyaXRpbmdcKTsKK+ikpeWtkCA+IGNvdHRvblwtcGFkZGVkXC1tYXR0cmVzczsKK+eXheeLgCA+IHN5bXB0b21cLVwob2ZcLWFcLWRpc2Vhc2VcKTsKK+WEmOW/qyA+IGFzXC1xdWlja2x5XC1hc1wtcG9zc2libGU7Civmv4DmmIIgPiBhcm91c2VkXC10b1wtaW5kaWduYXRpb247Civnq6XoqbEgPiBjaGlsZHJlbicnc1wtZmFpcnlcLXRhbGVzOwor5o+Q5LqkID4gc3VibWl0XC1cKGFcLXJlcG9ydFwsXC1ldGNcKTsKK+S+m+iBtyA+IGhvbGRcLWFuXC1vZmZpY2VcLW9yXC1wb3N0Owor5L6G6IeqID4gdG9cLWNvbWVcLWZyb21cLVwoYVwtcGxhY2VcKTsKK+eXheW+gSA+IHN5bXB0b21cLVwob2ZcLWFcLWRpc2Vhc2VcKTsKK+WumuiqniA+IGF0dHJpYnV0aXZlXC1cKG1vZGlmaWVyXCk7CivmvILmtYEgPiBjYXJyaWVkXC1ieVwtdGhlXC1jdXJyZW50Owor5qOE5qyKID4gdG9cLWFic3RhaW5cLWZyb21cLXZvdGluZzsKK+aNj+WQiCA+IHRvXC1hY3RcLWFzXC1hXC1nb1wtYmV0d2VlbjsKK+eUsuadvyA+IGRlY2tcLVwob2ZcLWFcLWJvYXRcLFwtZXRjXC5cKTsKK+aNj+S8sCA+IHRvXC1hY3RcLWFzXC1hXC1nb1wtYmV0d2VlbjsKK+aihea0viA+IHRoZVwtbWVpXC1sYW5mYW5nXC1zY2hvb2w7CivmtonpgY4gPiBmb3JkXC1cKGFcLXN0cmVhbVwsXC1yaXZlclwpOwor6auU5YWnID4gaW50ZXJuYWxcLVwodG9cLXRoZVwtYm9keVwpOwor5Lu76IG3ID4gaG9sZFwtYW5cLW9mZmljZVwtb3JcLXBvc3Q7CivohIrmpI4gPiBiYWNrXC1cKG9mXC1hXC12ZXJ0aWJyYXRlXCk7CivkvK/niLYgPiBmYXRoZXInJ3NcLWVsZGVyXC1icm90aGVyOwor5L+d5a6JID4gZW5zdXJlXC1wdWJsaWNcLXNlY3VyaXR5Owor5LiK6LqrID4gdXBwZXJcLXBhcnRcLW9mXC10aGVcLWJvZHk7CivlrZfmrrUgPiBcKG51bWVyaWNcLFwtZGF0ZGFcKVwtZmllbGQ7CivkuKboiIkgPiBkZXZlbG9wXC1zaW11bHRhbmVvdXNseTsKK+S4gOiZnyA+IGZpcnN0XC1kYXlcLW9mXC10aGVcLW1vbnRoOwor5a+p5YikID4gcHV0XC1cKHNvbWVvbmVcKVwtdG9cLXRyaWFsOwor5ZCQ6JWDID4gYW5jaWVudFwtbmFtZVwtZm9yXC10aWJldDsKK+a4rOWumiA+IHRvXC1zdXJ2ZXlcLWFuZFwtZXZhbHVhdGU7Civms7DnvoUgPiBcKGVuZ2xpc2hcLXN1cm5hbWVcKVwtdHlsbzsKK+WQnuiBsiA+IHRvXC1zd2FsbG93XC1vbmUnJ3NcLWNyaWVzOwor6LKh5pyDID4gZmluYW5jZVwtYW5kXC1hY2NvdW50aW5nOwor5Lqk5piTID4gXChidXNpbmVzc1wpXC10cmFuc2FjdGlvbjsKK+ePvuW9uSA+IFwobWlsaXRhcnlcKVwtYWN0aXZlXC1kdXR5Owor5rCR6YG4ID4gZGVtb2NyYXRpY2FsbHlcLWVsZWN0ZWQ7CivkvK/kvK8gPiBmYXRoZXInJ3NcLWVsZGVyXC1icm90aGVyOwor5rW35ouUID4gaGVpZ2h0XC1hYm92ZVwtc2VhXC1sZXZlbDsKK+enkeaKgCA+IHNjaWVuY2VcLWFuZFwtdGVjaG5vbG9neTsKK+S7u+WFjSA+IHRvXC1hcHBvaW50XC1hbmRcLWRpc21pc3M7CivkuoLlr6sgPiB0b1wtd3JpdGVcLXdpdGhvdXRcLWJhc2lzOwor5aaW6Im3ID4gcHJldHR5XC1hbmRcLWZsaXJ0YXRpb3VzOwor6Zu26YyiID4gY2hhbmdlXC1cKHNhaWRcLW9mXC1tb25leVwpOwor5LiN5pyNID4gbm90XC1hY2NlcHRcLVwoc29tZXRoaW5nXCk7CivpvLvlhZIgPiBhXC1ob2xlXC1pblwtYW5cLWltcGxlbWVudDsKK+aEn+WYhiA+IHRvXC1zaWdoXC1cKHdpdGhcLWZlZWxpbmdcKTsKK+WMluijnSA+IFwob2ZcLWFjdG9yc1wpXC10b1wtbWFrZVwtdXA7CivkupHljZcgPiB5dW5uYW5cLXByb3ZpbmNlXCxcLWNoaW5hOwor5pyN5a6MID4gc2VydmVcLW91dFwtXChhXC1zZW50ZW5jZVwpOwor6buD5bGxID4gbXRcLlwtaHVhbmdcLVwoaHVhbmdcLXNoYW5cKTsKK+WPpOazoiA+IGd1Ym9cLVwoYVwtcGVyc29uYWxcLW5hbWVcKTsKK+eMnOaLsyA+IGFcLWZpbmdlclwtZ3Vlc3NpbmdcLWdhbWU7CivliqnoqZ4gPiBwYXJ0aWNsZVwtXChncmFtbWF0aWNhbFwpOwor6K6T5Z2QID4gdG9cLWdpdmVcLXVwXC1vbmUnJ3NcLXNlYXQ7Civmsrnlg7kgPiBvaWxcLVwocGV0cm9sZXVtXClcLXByaWNlOwor5beo6aGNID4gYVwtaHVnZVwtc3VtXC1cKG9mXC1tb25leVwpOwor5aWU5pS+ID4gYm9sZFwtYW5kXC11bnJlc3RyYWluZWQ7CivlvpfmhI8gPiBcKGJlXClcLXByb3VkXC1vZlwtb25lc2VsZjsKK+WllOW/mSA+IGJlXC1idXN5XC1ydXNoaW5nXC1hYm91dDsKK+WJm+ebtCA+IHVwcmlnaHRcLWFuZFwtb3V0c3Bva2VuOwor5beh6YKPID4gYmVcLW9uXC1cKHBvbGljZVwpXC1wYXRyb2w7CivpmY3npo8gPiBibGVzc2luZ3NcLWZyb21cLWhlYXZlbjsKK+eCuOiXpSA+IGV4cGxvc2l2ZVwtXChzdWJzdGFuY2VcKTsKK+WkouaDsyA+IHRvXC1kcmVhbVwtb2ZcLVwoaW5cLXZhaW5cKTsKK+mYsuepuiA+IGFudGlcLWFpcmNyYWZ0XC1kZWZlbnNlOwor5YWI6YCyID4gYWR2YW5jZWRcLVwodGVjaG5vbG9neVwpOwor5aWU5ZG9ID4gcnVzaFwtYWJvdXRcLW9uXC1lcnJhbmRzOwor6Kej5rG6ID4gdG9cLXNldHRsZVwtXChhXC1kaXNwdXRlXCk7CivpmLLmsrsgPiBcKHByZXZlbnRpb25cLWFuZFwpXC1jdXJlOwor5YiG5qmfID4gXCh0ZWxlcGhvbmVcKVwtZXh0ZW5zaW9uOwor55y+5pybID4gcGVvcGxlJydzXC1leHBlY3RhdGlvbnM7Civnmb3ns5YgPiBcKHJlZmluZWRcKVwtd2hpdGVcLXN1Z2FyOwor5pOB5oi0ID4gdG9cLXN1cHBvcnRcLVwoYVwtcGVyc29uXCk7CivooajpgZQgPiB0b1wtdm9pY2VcLVwoYW5cLW9waW5pb25cKTsKK+WgseaZgiA+IGdpdmVcLXRoZVwtY29ycmVjdFwtdGltZTsKK+maqOWSjCA+IGFtaWFibGVcLVwoZGlzcG9zaXRpb25cKTsKK+WHveaOiCA+IGNvcnJlc3BvbmRlbmNlXC1jb3Vyc2U7Civov7fmiIAgPiB0b1wtYmVcLWluZmF0dWF0ZWRcLXdpdGg7Civmi5fpmbcgPiBnZW9sb2dpY2FsXC1kZXByZXNzaW9uOwor5YWN55arID4gaW1tdW5pdHlcLVwodG9cLWRpc2Vhc2VcKTsKK+WFrOeEtiA+IFwoZG9cLXNvbWV0aGluZ1wpXC1vcGVubHk7CivloIXmjIEgPiB0b1wtY29udGludWVcLXVwaG9sZGluZzsKK+WHuuW3riA+IGJlXC1vblwtYVwtYnVzaW5lc3NcLXRyaXA7CivmvLjpgLIgPiBwcm9ncmVzc1wtc3RlcFwtYnlcLXN0ZXA7CivpmZDliLYgPiBcKGltcG9zZVwpXC1yZXN0cmljdGlvbnM7CivlubTliJ0gPiBiZWdpbm5pbmdcLW9mXC10aGVcLXllYXI7CivnrYbpjIQgPiBwdXRcLWRvd25cLVwoaW5cLXdyaXRpbmdcKTsKK+aMieiEiCA+IGZlZWxcLVwodGFrZVwpXC10aGVcLXB1bHNlOwor5oub6IGYID4gdGFrZVwtam9iXC1hcHBsaWNhdGlvbnM7CivlhYnlt54gPiBrd2FuZ2p1XC1cKHNvdXRoXC1rb3JlYVwpOwor5bel5ZWGID4gaW5kdXN0cnlcLWFuZFwtY29tbWVyY2U7CivmvrPmtLIgPiBhdXN0cmFsaWFcLVwoY29udGluZW50XCk7Civnmq7lhZIgPiBcKGRvdWdoXCxcLWV0Y1wuXCl3cmFwcGVyczsKK+eUmOiChSA+IGdhbnN1XC1wcm92aW5jZVwsXC1jaGluYTsKK+WuiemWkiA+IHBlYWNlZnVsXC1hbmRcLWNhcmVmcmVlOwor6Imx5beoID4gdmVyeVwtZGlmZmljdWx0XC1cKHRhc2tcKTsKK+igu+apqyA+IHJ1ZGVcLWFuZFwtdW5yZWFzb25hYmxlOwor57C95a2XID4gdG9cLXNpZ25cLVwoYVwtc2lnbmF0dXJlXCk7CivlronpgakgPiBxdWlldFwtYW5kXC1jb21mb3J0YWJsZTsKK+a4rOiJryA+IHRvXC1zdXJ2ZXlcLWFuZFwtbWVhc3VyZTsKK+ePrei7iiA+IHJlZ3VsYXJcLWJ1c1wtXChzZXJ2aWNlXCk7CivmoYjnlLEgPiBtYWluXC1wb2ludHNcLW9mXC1hXC1jYXNlOwor6LK26KyrID4gYmFuaXNoXC1mcm9tXC10aGVcLWNvdXJ0Owor6buD6a2aID4geWVsbG93XC1jcm9ha2VyXC1cKGZpc2hcKTsKK+i6q+S4liA+IG9uZScnc1wtbGlmZVwtZXhwZXJpZW5jZTsKK+aKseaBqCA+IGhhdmVcLWFcLWduYXdpbmdcLXJlZ3JldDsKK+iHquWPpCA+IFwoc2luY2VcKVwtYW5jaWVudFwtdGltZXM7CivnrIbmlpcgPiByb3VuZFwtYm90dG9tZWRcLWJhc2tldDsKK+S6jOiZnyA+IDJcLW5kXC1kYXlcLW9mXC10aGVcLW1vbnRoOwor6LKh57aTID4gZmluYW5jZVwtYW5kXC1lY29ub21pY3M7CivkuLvoqp4gPiBcKGdyYW1tYXRpY2FsXClcLXN1YmplY3Q7CivlmJblmJYgPiB0b1wtY2xpY2tcLW9uZScnc1wtdG9uZ3VlOwor6by756WWID4gdGhlXC1lYXJsaWVzdFwtYW5jZXN0b3I7CivmiIDmhJsgPiB0b1wtaGF2ZVwtYVwtbG92ZVwtYWZmYWlyOwor5pq06LeMID4gc3RlZXBcLWZhbGxcLVwoaW5cLXByaWNlXCk7CivorpPplosgPiB0b1wtZ2V0XC1vdXRcLW9mXC10aGVcLXdheTsKK+WwseS+vyA+IGF0XC1cKHlvdXJcKVwtY29udmVuaWVuY2U7Civlj6/ouqsgPiB0b1wtZml0XC13ZWxsXC1cKGNsb3RoZXNcKTsKK+enkeeglCA+IFwoc2NpZW50aWZpY1wpXC1yZXNlYXJjaDsKK+WPr+isgiA+IGl0XC1jb3VsZFwtZXZlblwtYmVcLXNhaWQ7CivorpPot68gPiB0b1wtbWFrZVwtd2F5XC1cKGZvclwtc3RoXCk7CivmiLbkuLsgPiBoZWFkXC1vZlwtdGhlXC1ob3VzZWhvbGQ7CivpoJLooYwgPiBpc3N1ZVwtZm9yXC1lbmZvcmNlbWVudDsKK+a5luWNlyA+IGh1bmFuXC1wcm92aW5jZVwsXC1jaGluYTsKK+mkmOaVuCA+IFwobnVtZXJpY2FsXClcLXJlbWFpbmRlcjsKK+S4jeeuoSA+IG5vXC1tYXR0ZXJcLVwod2hhdFwsXC1ob3dcKTsKK+eJiOmdoiA+IHNwYWNlXC1vZlwtYVwtd2hvbGVcLXBhZ2U7CivkuI3npoEgPiBjYW4nJ3RcLWhlbHBcLVwoZG9pbmdcLXN0aDsKK+aYj+i/tyA+IHRvXC1sb3NlXC1jb25zY2lvdXNuZXNzOwor5ZCQ57WuID4gdGhlXC1vcGVuaW5nXC1vZlwtYVwtYm9sbDsKK+mLquW5syA+IHNwcmVhZFwtb3V0XC1cKG1hdGVyaWFsXCk7CivkuI3nkIYgPiByZWZ1c2VcLXRvXC1hY2tub3dsZWRnZTsKK+iuiuiHiSA+IHN1ZGRlbmx5XC10dXJuXC1ob3N0aWxlOwor5rW35pavID4gaGF5ZXNcLVwobWljcm9jb21wdXRlclwpOwor5p2x5b63ID4gXChmb3JtZXJcKVwtZWFzdFwtZ2VybWFueTsKK+aal+ekgSA+IHN1Ym1lcmdlZFwtcmVlZlwtXChyb2NrXCk7Civosrflpb0gPiB0b1wtaW5ncmF0aWF0ZVwtb25lc2VsZjsKK+aal+eWviA+IHVubWVudGlvbmFibGVcLWRpc2Vhc2U7CivogbPli5UgPiB0b1wtY3JlYXRlXC1hXC1zZW5zYXRpb247Civmnb/lh7MgPiB3b29kZW5cLWJlbmNoXC1vclwtc3Rvb2w7CivkuI3mmocgPiBoYXZlXC1ub1wtdGltZVwtXChmb3JcLXN0aDsKK+aCsuaGpCA+IGdyaWVmXC1hbmRcLWluZGlnbmF0aW9uOwor54m555SiID4gc3BlY2lhbFwtbG9jYWxcLXByb2R1Y3Q7Civola3mop0gPiBcKGVjb25vbWljXClcLWRlcHJlc3Npb247Civmrq/okawgPiBmdW5lcmFsXC1hbmRcLWludGVybWVudDsKK+WRveS7pCA+IFwoYW5cKVwtb3JkZXJcLW9yXC1jb21tYW5kOwor5rWB5LqhID4gdG9cLVwoZm9yY2VcLWludG9cKVwtZXhpbGU7CivljZHmsaEgPiBkZXNwaWNhYmxlXC1hbmRcLWZpbHRoeTsKK+aatOWNkiA+IGRpZVwtb2ZcLXN1ZGRlblwtaWxsbmVzczsKK+mAvOimliA+IGxvb2tcLWF0XC1mcm9tXC1jbG9zZVwtdXA7Civml7rmnIggPiBidXN5XC1cKGJ1c2luZXNzXClcLW1vbnRoOwor5YiX6LuKID4gdHJhaW5cLVwocmFpbHdheVwtdGVybVwpOwor5Y+L5aW9ID4gZnJpZW5kbHlcLVwocmVsYXRpb25zXCk7Civmq4PpgoogPiB0b1wtbGllXC1vblwtb25lJydzXC1zaWRlOwor5Yi26KOBID4gXChlY29ub21pY1wpXC1zYW5jdGlvbnM7CivnpL7kuqQgPiBcKHNvY2lhbFwpXC1pbnRlcmFjdGlvbjsKK+aTjeihjCA+IFwoc3R1ZGVudCcnc1wpXC1iZWhhdmlvcjsKK+WnpeWnpSA+IG1hdGVybmFsXC1ncmFuZG1vdGhlcjsKK+e3qOe1hCA+IG9yZ2FuaXplXC1pbnRvXC1ncm91cHM7Civopqrov5EgPiBnZXRcLWNsb3NlXC10b1wtc29tZW9uZTsKK+e1kOirliA+IFwocmVhY2hcLWFcKVwtY29uY2x1c2lvbjsKK+mXoei/sCA+IGV4cG91bmRcLVwoYVwtcG9zaXRpb25cKTsKK+W/g+WvkiA+IGJlXC12ZXJ5XC1kaXNhcHBvaW50ZWQ7CivntYToo50gPiBhc3NlbWJsZVwtYW5kXC1pbnN0YWxsOwor6KqT5q27ID4gdG9cLXBsZWRnZVwtb25lJydzXC1saWZlOwor5Z+O6YSJID4gY2l0eVwtYW5kXC1jb3VudHJ5c2lkZTsKK+WNlOWumiA+IFwocmVhY2hcLWFuXClcLWFncmVlbWVudDsKK+awtOWfnyA+IFwodGVycml0b3JpYWxcKVwtd2F0ZXJzOwor5Yu75pW0ID4gbmVhdFwtYW5kXC13ZWxsXC1zcGFjZWQ7CivlhafplqMgPiBcKGdvdmVybm1lbnRcKVwtY2FiaW5ldDsKK+W7oOeJjCA+IGJyYW5kXC1cKG9mXC1hXC1wcm9kdWN0XCk7CivlpbblpbYgPiBwYXRlcm5hbFwtZ3JhbmRtb3RoZXI7Civnt6jmrKEgPiBvcmRlclwtb2ZcLWFycmFuZ2VtZW50Owor5pWZ5o6IID4gdW5pdmVyc2l0eVwtcHJvZmVzc29yOwor5Yui5b+FID4gaXNcLWJvdW5kXC10b1wtXChoYXBwZW5cKTsKK+WiqOaxgSA+IHByZXBhcmVkXC1jaGluZXNlXC1pbms7CivlpKflsIcgPiBhXC1nZW5lcmFsXC1vclwtYWRtaXJhbDsKK+awo+S6uiA+IHRvXC1nZXRcLXNvbWVvbmVcLWFuZ3J5Owor5YyF5aC0ID4gYm9va1wtYVwtd2hvbGVcLXRoZWF0cmU7Civlha3omZ8gPiA2dGhcLWRheVwtb2ZcLXRoZVwtbW9udGg7CivoqZ7lvZkgPiBcKGxpc3RcLW9mXClcLXZvY2FidWxhcnk7CivmlJ3lvbEgPiB0b1wtdGFrZVwtYVwtcGhvdG9ncmFwaDsKK+i+r+eZvSA+IG9mZmVyXC1hblwtZXhwbGFuYXRpb247CivmjqHoqKogPiBjb3ZlclwtXChhXC1uZXdzXC1zdG9yeVwpOwor5YW156uZID4gYXJteVwtc2VydmljZVwtc3RhdGlvbjsKK+i7jeiyuyA+IG1pbGl0YXJ5XC1leHBlbmRpdHVyZTsKK+aTmuaCiSA+IGFjY29yZGluZ1wtdG9cLXJlcG9ydHM7CivliY3lubQgPiB0aGVcLXllYXJcLWJlZm9yZVwtbGFzdDsKK+ijnOiJsiA+IGNvbXBsZW1lbnRhcnlcLWNvbG91cjsKK+aUu+WLoiA+IFwobWlsaXRhcnlcKVwtb2ZmZW5zaXZlOwor5YiG5pOUID4gc2hhcmVcLXJlc3BvbnNpYmlsaXR5Owor6ZaL55m8ID4gZXhwbG9pdFwtXChhXC1yZXNvdXJjZVwpOwor5q235LujID4gc3VjY2Vzc2l2ZVwtZHluYXN0aWVzOwor6L+R5pelID4gaW5cLXRoZVwtcGFzdFwtZmV3XC1kYXlzOwor5Zue6KiqID4gXChwYXlcLWFcKVwtcmV0dXJuXC12aXNpdDsKK+eXheiuiiA+IHBhdGhvbG9naWNhbFwtY2hhbmdlczsKK+WHjOaZqCA+IGVhcmx5XC1pblwtdGhlXC1tb3JuaW5nOwor57Gg57WxID4gXChpblwpXC1nZW5lcmFsXC1cKHRlcm1zXCk7Civmp7Pni4AgPiBjZXJ0aWZpY2F0ZVwtb2ZcLW1lcml0Owor5YCa6YeNID4gdG9cLXJlbHlcLWhlYXZpbHlcLXVwb247CivmiorphZIgPiByYWlzZVwtb25lJydzXC13aW5lXC1jdXA7Civou43nlKggPiBcKGZvclwpXC1taWxpdGFyeVwtXCh1c2VcKTsKK+S/nemHjSA+IHRha2VcLWNhcmVcLW9mXC1vbmVzZWxmOwor5aCx5LuHID4gdG9cLXJldmVuZ2VcLVwob25lc2VsZlwpOwor5oqE6LqrID4gdG9cLXNlYXJjaFwtXChhXC1wZXJzb25cKTsKK+ajieilliA+IGNvdHRvblwtcGFkZGVkXC1qYWNrZXQ7CivlhJjml6kgPiBhc1wtZWFybHlcLWFzXC1wb3NzaWJsZTsKK+WfueS/riA+IHRvXC1yZXBhaXJcLWVhcnRod29ya3M7CivlsIrph40gPiB0b1wtdmFsdWVcLVwoc29tZXRoaW5nXCk7Civnl4XngbYgPiBmb2N1c1wtXChvZlwtaW5mZWN0aW9uXCk7CivkvrXopbIgPiB0b1wtaW52YWRlXC1hbmRcLWF0dGFjazsKK+ewoeactCA+IHNpbXBsZVwtYW5kXC11bmFkb3JuZWQ7Civpp4HpgYsgPiB0cmFuc3BvcnRcLWJ5XC1saWdodGVyOwor5L6L6KiAID4gaW50cm9kdWN0b3J5XC1yZW1hcmtzOwor5YKZ5p+lID4gZm9yXC1mdXR1cmVcLXJlZmVyZW5jZTsKK+WuiemAuCA+IGVhc3lcLWFuZFwtY29tZm9ydGFibGU7Civnl4XmiL8gPiB3YXJkXC1cKG9mXC1hXC1ob3NwaXRhbFwpOwor6KGo5b2wID4gY2l0ZVwtXChpblwtZGlzcGF0Y2hlc1wpOwor5ouc5pyDID4gcGF5XC1hblwtb2ZmaWNpYWxcLWNhbGw7CivlsIjnqIsgPiBzcGVjaWFsXC1wdXJwb3NlXC10cmlwOwor5YG95bmjID4gY291bnRlcmZlaXRcLWN1cnJlbmN5Owor5omN55WlID4gYWJpbGl0eVwtYW5kXC1zYWdhY2l0eTsKK+WxpOasoSA+IGFycmFuZ2VtZW50XC1vZlwtaWRlYXM7CivnrYbms5UgPiB0ZWNobmlxdWVcLW9mXC13cml0aW5nOwor5Lqk6YCaID4gXChhdXRvbW9iaWxlXClcLXRyYWZmaWM7CivllZ/nqIsgPiBzZXRcLW91dFwtb25cLWFcLWpvdXJuZXk7CivnlavloLEgPiBwaWN0b3JpYWxcLVwobWFnYXppbmVcKTsKK+S+teaTviA+IHRvXC1pbnZhZGVcLWFuZFwtaGFyYXNzOwor5bGP5bmVID4gXCh0dlwtb3JcLW1vdmllXClcLXNjcmVlbjsKK+eQg+e2siA+IG5ldFwtXChmb3JcLWJhbGxcLWdhbWVzXCk7CivmvKLljJYgPiBjaGluZXNlXC1sb2NhbGl6YXRpb247CivlsI3ls5kgPiBtdXR1YWxcLWNvbmZyb250YXRpb247Civnvo7ou40gPiB1c1wtYXJteVx8YXJtZWRcLWZvcmNlczsKK+S9jeaWvCA+IGJlXC1zaXR1YXRlZFwtXChpblwsXC1hdFwpOwor6K6K6aC7ID4gZnJlcXVlbmN5XC1jb252ZXJzaW9uOwor5Zau5a2XID4gaW5kaXZpZHVhbFwtY2hhcmFjdGVyOwor5riF5pepID4gZWFybHlcLWluXC10aGVcLW1vcm5pbmc7Civog4zlv4MgPiBhXC1zbGVldmVsZXNzXC1nYXJtZW50Owor5oi25Y+jID4gcmVnaXN0ZXJlZFwtcmVzaWRlbmNlOwor5pys56eRID4gdW5kZXJncmFkdWF0ZVwtY291cnNlOwor5L6/5LitID4gYXRcLW9uZScnc1wtY29udmVuaWVuY2U7Civlr7blio0gPiBhXC1kb3VibGVcLWVkZ2VkXC1zd29yZDsKK+mGnumHgCA+IG11bGxcLW92ZXJcLVwoYW5cLWlzc3VlXCk7CivmmpfomZ8gPiBzZWNyZXRcLXNpZ25hbFwtXChzaWduXCk7CivogIHniLogPiBtYXRlcm5hbFwtZ3JhbmRmYXRoZXI7Civnj63mnJ8gPiBzY2hlZHVsZVwtXChmb3JcLWZsaWdodDsKK+iyt+aWuSA+IGJ1eWVyXC1cKGluXC1jb250cmFjdHNcKTsKK+WuieWonCA+IGFubmFcLVwocGVyc29uJydzXC1uYW1lXCk7CivosqzmiJAgPiBnaXZlXC1zb21lYm9keVwtYVwtdGFzazsKK+Wkmum6vCA+IGhvd1wtXCh3b25kZXJmdWxcLFwtZXRjXCk7CivphazorJ0gPiB0b1wtdGhhbmtcLXdpdGhcLWFcLWdpZnQ7CivlvoDov5QgPiB0b1wtZ29cLWJhY2tcLWFuZFwtZm9ydGg7CivljIXph5EgPiBjb3Zlclwtd2l0aFwtZ29sZFwtbGVhZjsKK+aakeeGsSA+IGhvdFwtXChzdW1tZXJcKVwtd2VhdGhlcjsKK+S4jeabviA+IG5ldmVyXC1cKGhhdmVcLWRvbmVcLXN0aDsKK+e4vemDqCA+IGdlbmVyYWxcLWhlYWRxdWFydGVyczsKK+iytuWAvCA+IHRvXC1iZWNvbWVcLWRldmFsdWF0ZWQ7CivpgbrpqrggPiBcKGRlYWRcKVwtaHVtYW5cLXJlbWFpbnM7CivpgbrpqqggPiBcKGRlYWRcKVwtaHVtYW5cLXJlbWFpbnM7CivphaznrZQgPiB0b1wtdGhhbmtcLXdpdGhcLWFcLWdpZnQ7CivpoZ7mjqggPiB0b1wtcmVhc29uXC1ieVwtYW5hbG9neTsKK+WSjOWlvSA+IHRvXC1iZWNvbWVcLXJlY29uY2lsZWQ7CivmnKzlnJ8gPiBvbmUnJ3NcLW5hdGl2ZVwtY291bnRyeTsKK+S6nuWAqyA+IGFhcm9uXC1cKGFcLW1hbicnc1wtbmFtZVwpOwor576e5oGlID4gXChhXC1mZWVsaW5nXC1vZlwpXC1zaGFtZTsKK+WTiOS9myA+IGhhcnZhcmRcLVwodW5pdmVyc2l0eVwpOwor5pqR5pyfID4gc3VtbWVyXC12YWNhdGlvblwtdGltZTsKK+WRvOWWiiA+IHNob3V0XC1cKHNsb2dhbnNcLFwtZXRjXCk7Civnub3ntJsgPiBpblwtcmlvdG91c1wtcHJvZnVzaW9uOwor5ZGI5aCxID4gdG9cLVwoc3VibWl0XC1hXClcLXJlcG9ydDsKK+WNiueZvSA+IGZpZnR5XC1cKHllYXJzXC1vZlwtYWdlXCk7CivwoIGlID4gdGhlXC1ob3Juc1wtb2ZcLWFcLXNoZWVwOwor5piC54S2ID4gdXByaWdodFwtYW5kXC11bmFmcmFpZDsKK+mChOiqqiA+IHRvXC1hZGRcLVwoaW5cLXNwZWFraW5nXCk7Civmm7TliqAgPiBtb3JlXC1cKHRoYW5cLXN0aFwtZWxzZVwpOwor54i654i6ID4gcGF0ZXJuYWxcLWdyYW5kZmF0aGVyOwor5LiN5YudID4gY2Fubm90XC1iZWFyXC1vclwtc3RhbmQ7CivmlZfog4MgPiBzcG9pbFwtb25lJydzXC1hcHBldGl0ZTsKK+iuiuW/gyA+IGNlYXNlXC10b1wtYmVcLWZhaXRoZnVsOwor5LiK5YCLID4gZmlyc3RcLVwob2ZcLXR3b1wtcGFydHNcKTsKK+WllOa1gSA+IGZsb3dcLWF0XC1ncmVhdFwtc3BlZWQ7Civml6XmlocgPiBqYXBhbmVzZVwtXChsYW5ndWFnZVwpOwor5pKe6KaLID4gdG9cLW1lZXRcLWJ5XC1hY2NpZGVudDsKK+W3rumhjSA+IGJhbGFuY2VcLVwoZmluYW5jaWFsXCk7CivljYrmiKogPiBoYWxmXC1cKG9mXC1hXC1zZWN0aW9uXCk7CivliZvnupQgPiBcKGp1c3RcKVwtYVwtbW9tZW50XC1hZ287Civlu6DnpKYgPiBmYWN0b3JpZXNcLWFuZFwtbWluZXM7CivnhrHng4ggPiB3YXJtXC1cKHdlbGNvbWVcLFwtZXRjXCk7Civovq/orbcgPiBzcGVha1wtaW5cLWRlZmVuY2VcLW9mOwor5aSn5om5ID4gbGFyZ2VcLXF1YW50aXRpZXNcLW9mOwor57aB56WoID4ga2lkbmFwXC1cKGZvclwtcmFuc29tXCk7Civnmb3pioUgPiBjb3BwZXJcLW5pY2tlbFwtYWxsb3k7CivntbHnqLEgPiBjb2xsZWN0aXZlbHlcLWNhbGxlZDsKK+W7ouawoyA+IHdhc3RlXC1cKGV4aGF1c3RcKVwtZ2FzOwor5YyF5a2QID4gc3RlYW1lZFwtc3R1ZmZlZFwtYnVuOwor57SF6JGJID4gcmVkXC1hdXR1bW5hbFwtbGVhdmVzOwor55m+6LKoID4gZ2VuZXJhbFwtbWVyY2hhbmRpc2U7CivprKLpq64gPiBoYWlyXC1vblwtdGhlXC10ZW1wbGVzOwor5YSY6YePID4gYXNcLW11Y2hcLWFzXC1wb3NzaWJsZTsKK+i6q+mrmCA+IFwoYVwtcGVyc29uJydzXClcLWhlaWdodDsKK+aVmeWtuCA+IHRlYWNoZXJcLWFuZFwtc3R1ZGVudDsKK+mEmeS6uiA+IHlvdXJcLWh1bWJsZVwtc2VydmFudDsKK+aVheWuriA+IHRoZVwtaW1wZXJpYWxcLXBhbGFjZTsKK+aUv+WxgCA+IHBvbGl0aWNhbFwtc2l0dWF0aW9uOwor552/5pm6ID4gd2lzZVwtYW5kXC1mYXJzaWdodGVkOwor6KOc6KeSID4gc3VwcGxlbWVudGFyeVwtYW5nbGU7CivpgLLmlLsgPiBhdHRhY2tcLVwobWlsaXRhcmlseVwpOwor5pO65byEID4gbW92ZVwtYmFja1wtYW5kXC1mb3J0aDsKK+mBjeW4gyA+IGJlXC1mb3VuZFwtZXZlcnl3aGVyZTsKK+aUueWQjSA+IHRvXC1jaGFuZ2VcLW9uZXNcLW5hbWU7Civoo5zogIMgPiBtYWtlXC11cFwtZXhhbWluYXRpb247Civmkq3lvIQgPiBvcmRlclwtc3ViamVjdFwtYWJvdXQ7CivlubTlupUgPiB0aGVcLWVuZFwtb2ZcLXRoZVwteWVhcjsKK+e0hOargyA+IGFya1wtb2ZcLXRoZVwtY292ZW5hbnQ7Civluavlt6UgPiBoZWxwXC13aXRoXC1mYXJtXC13b3JrOwor5aCx5buiID4gcmVwb3J0XC1hc1wtd29ydGhsZXNzOwor5oqs6aCtID4gdG9cLXJhaXNlXC1vbmUnJ3NcLWhlYWQ7Civln7fmjowgPiB3aWVsZFwtXChwb3dlclwsXC1ldGNcLlwpOwor5YW15qyKID4gbWlsaXRhcnlcLWxlYWRlcnNoaXA7CivpgLzkvpsgPiBleHRvcnRcLWFcLWNvbmZlc3Npb247CivplovmlL4gPiBsaWZ0XC1cKHJlc3RyaWN0aW9uc1wpOwor55m75pyIID4gZ29cLVwodXBcKVwtdG9cLXRoZVwtbW9vbjsKK+W5o+WAvCA+IHZhbHVlXC1vZlwtYVwtY3VycmVuY3k7CivlhrDloLQgPiBza2F0aW5nXC1vclwtaWNlXC1yaW5rOwor55uu5YmNID4gYXRcLXRoZVwtcHJlc2VudFwtdGltZTsKK+ethuitryA+IHdyaXR0ZW5cLXRyYW5zbGF0aW9uOwor562G6KmmID4gd3JpdHRlblwtZXhhbWluYXRpb247Civpl5zliIcgPiBiZVwtZGVlcGx5XC1jb25jZXJuZWQ7CivotbDplosgPiBnZXRcLW91dFwtb2ZcLXRoZVwtd2F5XCE7CivopobkuqEgPiBmYWxsXC1cKG9mXC1hblwtZW1waXJlXCk7Civoo4HmlrcgPiBjb25zaWRlclwtYW5kXC1kZWNpZGU7CivntIDlhYMgPiBiZWdpbm5pbmdcLW9mXC1hblwtZXJhOwor5YW15ZyYID4gbGFyZ2VcLW1pbGl0YXJ5XC11bml0Owor6L6m5LqLID4gdG9cLWhhbmRsZVwtXChhZmZhaXJzXCk7Civns77lgY8gPiB0b1wtY29ycmVjdFwtYW5cLWVycm9yOwor5omN6K2YID4gYWJpbGl0eVwtYW5kXC1pbnNpZ2h0Owor5oyJ55CGID4gYWNjb3JkaW5nXC10b1wtcmVhc29uOwor6LyU5bmjID4gZnJhY3Rpb25hbFwtY3VycmVuY3k7CivmkK3kvLQgPiB0cmF2ZWxcLXdpdGhcLWFub3RoZXI7CivlnIvml5cgPiBmbGFnXC1cKG9mXC1hXC1jb3VudHJ5XCk7Civou43mlL8gPiBhcm15XC1hbmRcLWdvdmVybm1lbnQ7Civnl4Xms4EgPiBzdGF0ZVwtb2ZcLWFuXC1pbGxuZXNzOwor6L2J5ZCRID4gY2hhbmdlXC1vZlwtZGlyZWN0aW9uOwor55m95Y23ID4gYmxhbmtcLWV4YW1pbmVcLXBhcGVyOwor5YWr5LuZID4gdGhlXC1laWdodFwtaW1tb3J0YWxzOwor6LyD5aSnID4gY29tcGFyYXRpdmVseVwtbGFyZ2U7CivnrYbnrpcgPiBkb1wtYVwtc3VtXC1pblwtd3JpdGluZzsKK+ijgeWlqiA+IGNvbnNpZGVyXC1hbmRcLWRlY2lkZTsKK+aPkOWHuiA+IHRvXC1yYWlzZVwtXChhblwtaXNzdWVcKTsKK+eZveS6uiA+IHdoaXRlXC1tYW5cLWFuZFwtd29tYW47CivlgZrms5UgPiB3YXlcLW9mXC1kb2luZ1wtdGhpbmdzOwor5oq954WZID4gc21va2VcLVwoYVwtY2lnYXJldHRlXCk7Civooajmg4UgPiBcKGZhY2lhbFwpXC1leHByZXNzaW9uOwor6KOc5YqpID4gXChmaW5hbmNpYWxcKVwtc3Vic2lkeTsKK+iGoOeJhyA+IFwocGhvdG9ncmFwaGljXClcLWZpbG07Civnl4Xmg4UgPiBzdGF0ZVwtb2ZcLWFuXC1pbGxuZXNzOwor5p+U6YGTID4gXCh0aGVcLXNwb3J0XC1vZlwpXC1qdWRvOwor5o6h5Yi2ID4gY29sbGVjdFwtYW5kXC1wcm9jZXNzOwor5oqE542yID4gdG9cLXNlYXJjaFwtYW5kXC1zZWl6ZTsKK+ihqOWnkCA+IG9sZGVyXC1mZW1hbGVcLWNvdXNpbjsKK+i7n+S7tiA+IFwoY29tcHV0ZXJcKVwtc29mdHdhcmU7Civmi5vlvoUgPiB0b1wtcmVjZWl2ZVwtXChndWVzdHNcKTsKK+aLnOW5tCA+IHBheVwtYVwtbmV3XC15ZWFyXC1jYWxsOwor5LqS6YCaID4gdG9cLWludGVyY29tbXVuaWNhdGU7Civnr6HkvY0gPiB0b1wtc2VpemVcLXRoZVwtdGhyb25lOwor57236bucID4gZGlzbWlzc1wtZnJvbVwtb2ZmaWNlOwor5bGs5a+mID4gdHVyblwtb3V0XC10b1wtYmVcLXRydWU7CivmtL7pgaMgPiBzZW5kXC1cKG9uXC1hXC1taXNzaW9uXCk7CivkuKbph40gPiBsYXlcLWVxdWFsXC1zdHJlc3NcLW9uOwor5omN5a24ID4gdGFsZW50XC1hbmRcLWxlYXJuaW5nOwor6ICV6ICYID4gcGxvd2luZ1wtYW5kXC13ZWVkaW5nOwor5oWI56WlID4gXChhXClcLWtpbmRseVwtXChwZXJzb25cKTsKK+WuieaogiA+IHBlYWNlXC1hbmRcLWhhcHBpbmVzczsKK+momeWPliA+IHRvXC1nYWluXC1ieVwtY2hlYXRpbmc7CivmtrzniL0gPiBjb29sXC1hbmRcLXJlZnJlc2hpbmc7Civpu6jntYQgPiBsZWFkaW5nXC1wYXJ0eVwtZ3JvdXA7CivkvovlpJYgPiBcKG1ha2VcLWFuXClcLWV4Y2VwdGlvbjsKK+itsOmhjCA+IHRvcGljXC1vZlwtZGlzY3Vzc2lvbjsKK+izh+a6kCA+IFwobmF0dXJhbFwpXC1yZXNvdXJjZXM7CivllYbmnIMgPiBjaGFtYmVyXC1vZlwtY29tbWVyY2U7CivotaTlrZcgPiBcKGZpbmFuY2lhbFwpXC1kZWZpY2l0Owor5Lim6IGvID4gcGFyYWxsZWxcLWNvbm5lY3Rpb247CivosqHmupAgPiBmaW5hbmNpYWxcLXJlc291cmNlczsKK+mHj+iuiiA+IHF1YW50aXRhdGl2ZVwtY2hhbmdlOwor6ICQ54WpID4gcGF0aWVudFwtXChhZGplY3RpdmVcKTsKK+S4mee2uCA+IHBvbHlwcm9weWxlbmVcLWZpYnJlOwor5rG66K2wID4gXChwYXNzXC1hXClcLXJlc29sdXRpb247CivpjK/lrZcgPiBpbmNvcnJlY3RcLWNoYXJhY3RlcjsKK+S8tOWUsSA+IHZvY2FsXC1hY2NvbXBhbmltZW50Owor6K2Y6LKoID4gdG9cLWtub3dcLXdoYXQnJ3NcLXdoYXQ7Civlrpjlk6EgPiBnb3Zlcm5tZW50XC1vZmZpY2lhbDsKK+eon+aApyA+IG5hdHVyYWxcLWRpc3Bvc2l0aW9uOwor6aCQ57+SID4gdG9cLXByZXBhcmVcLWFcLWxlc3NvbjsKK+a1gea0viA+IHNjaG9vbFwtXChvZlwtdGhvdWdodFwpOwor5ZOA5oaQID4gZmVlbFwtY29tcGFzc2lvblwtZm9yOwor6LKh5a+2ID4gbW9uZXlcLWFuZFwtdmFsdWFibGVzOwor6ICQ5b+DID4gcGF0aWVudFwtXChhZGplY3RpdmVcKTsKK+aXpeiqniA+IGphcGFuZXNlXC1cKGxhbmd1YWdlXCk7CivkuovlrpwgPiBcKG1ha2VcKVwtYXJyYW5nZW1lbnRzOwor5pWX6aGeID4gc2N1bVwtb2ZcLWFcLWNvbW11bml0eTsKK+aXl+iijSA+IGNoaW5lc2VcLXN0eWxlXC1kcmVzczsKK+W+kOihjCA+IHdhbGtcLXNsb3dseVwsXC1zdHJvbGw7CivosqHlipsgPiBmaW5hbmNpYWxcLXJlc291cmNlczsKK+iXj+aXjyA+IHRpYmV0YW5cLW5hdGlvbmFsaXR5Owor54Wn6aGnID4gdGFrZVwtXChnb29kXClcLWNhcmVcLW9mOwor6K6T5q2lID4gXChtYWtlXC1hXClcLWNvbmNlc3Npb247CivpgorpgaAgPiBmYXJcLWZyb21cLXRoZVwtY2VudGVyOwor5pO66ZeKID4gcGFyYWRlXC1vbmUnJ3NcLXdlYWx0aDsKK+aZtOaclyA+IHN1bm55XC1hbmRcLWNsb3VkbGVzczsKK+aCsuWjryA+IHNvbGVtblwtYW5kXC1zdGlycmluZzsKK+e9t+W4giA+IHNob3BrZWVwZXInJ3NcLXN0cmlrZTsKK+S4jeWmqCA+IHRoZXJlXC1pc1wtbm9cLWhhcm1cLWluOwor5aSn6IW4ID4gdGhlXC1sYXJnZVwtaW50ZXN0aW5lOwor5Li55Y+DID4gc2FsdmlhXC1taWx0aW9ycmhpemE7Civpm7bokL0gPiB3aXRoZXJlZFwtYW5kXC1mYWxsZW47Civlvpfnn6UgPiBcKGZpbmRcLW91dFwtYW5kXClcLWtub3c7CivnvbflrpggPiBkaXNtaXNzXC1mcm9tXC1vZmZpY2U7CivorormlYUgPiBhblwtdW5mb3Jlc2VlblwtZXZlbnQ7CivmgZDmgJUgPiBcKGknJ21cKVwtYWZyYWlkXC1cKHRoYXRcKTsKK+S4jeWVjyA+IHBheVwtbm9cLWF0dGVudGlvblwtdG87Civlu6Dopo8gPiBmYWN0b3J5XC1yZWd1bGF0aW9uczsKK+mgkOWumiA+IHNjaGVkdWxlXC1pblwtYWR2YW5jZTsKK+S4jeWHoSA+IG91dFwtb2ZcLXRoZVwtb3JkaW5hcnk7CivmlZfnuL4gPiBiZVwtdXR0ZXJseVwtZGVmZWF0ZWQ7CivmmrTliKkgPiBzdWRkZW5cLWh1Z2VcLXByb2ZpdHM7CivnvarlkI0gPiBhXC1cKGNyaW1pbmFsXClcLWNoYXJnZTsKK+S4jeS5jyA+IHRoZXJlXC1pc1wtbm9cLWxhY2tcLW9mOwor5ZCI5ZCMID4gXChidXNpbmVzc1wpXC1jb250cmFjdDsKK+W5q+i+piA+IGFzc2lzdFwtaW5cLW1hbmFnaW5nOwor6YWs5oeJID4gc29jaWFsXC1pbnRlcmFjdGlvbjsKK+eEoeirliA+IG5vXC1tYXR0ZXJcLXdoYXRcfGhvdzsKK+WOn+WumiA+IG9yaWdpbmFsbHlcLXBsYW5uZWQ7CivpgJrooYwgPiBsaWNlbmNlXC1cKGNvbXB1dGVyXCk7Civlj7jku6QgPiBjb21tYW5kaW5nXC1vZmZpY2VyOwor57O+6ZuGID4gdG9cLWdhdGhlclwtdG9nZXRoZXI7CivpgIHooYwgPiB0b1wtc2VlXC1zb21lb25lXC1vZmY7CivpgZXntIQgPiB0b1wtYnJlYWtcLWFcLXByb21pc2U7CivljbHlsYAgPiBwZXJpbG91c1wtc2l0dWF0aW9uOwor5pKl6JmfID4gZGlhbFwtXChhXC10ZWxlcGhvbmVcKTsKK+iuiuS/riA+IGJlY29tZVwtcmV2aXNpb25pc3Q7CivpgZXnq6AgPiB0b1wtYnJlYWtcLXRoZVwtcnVsZXM7CivntrLnrqEgPiBuZXR3b3JrXC1tYW5hZ2VtZW50Owor6JKZ5paHID4gbW9uZ29saWFuXC1sYW5ndWFnZTsKK+aAp+S6pCA+IHNleHVhbFwtaW50ZXJjb3Vyc2U7Civnianlg7kgPiBcKGNvbW1vZGl0eVwpXC1wcmljZXM7CivlvozlpKkgPiBkYXlcLWFmdGVyXC10b21vcnJvdzsKK+WkquW5syA+IHBlYWNlXC1hbmRcLXNlY3VyaXR5Owor55+a5pybID4gdG9cLWxvb2tcLWZvcndhcmRcLXRvOwor5Y2U5YqpID4gcHJvdmlkZVwtYXNzaXN0YW5jZTsKK+aOoemiqCA+IGNvbGxlY3RcLWZvbGtcLXNvbmdzOwor5o+P6YeRID4gdG9cLW91dGxpbmVcLWluXC1nb2xkOwor5Yqp5pWZID4gdGVhY2hpbmdcLWFzc2lzdGFudDsKK+Wkq+WppiA+IGFcLVwobWFycmllZFwpXC1jb3VwbGU7Civoi7Hoqp4gPiBlbmdsaXNoXC1cKGxhbmd1YWdlXCk7CivpgYvmsKMgPiBsdWNrXC1cKGdvb2RcLW9yXC1iYWRcKTsKK+aOoemMhCA+IGNvbGxlY3RcLWFuZFwtcmVjb3JkOwor54aK5o6MID4gYmVhclwtcGF3XC1cKGFzXC1mb29kXCk7CivmlrDlhbUgPiBuZXdcLVwoYXJteVwpXC1yZWNydWl0Owor5paD5ZG9ID4gbWVldFwtdmlvbGVudFwtZGVhdGg7CivlpLHkuosgPiBcKGhhdmVcLWFuXClcLWFjY2lkZW50Owor6Zu75L+hID4gdGVsZWNvbW11bmljYXRpb25zOwor5o2o6LqrID4gdG9cLWdpdmVcLW9uZScnc1wtbGlmZTsKK+iKneiYrSA+IGlyaXNlc1wtYW5kXC1vcmNoaWRzOwor5pS55Y+jID4gdG9cLWNvcnJlY3RcLW9uZXNlbGY7CivmlL/li5kgPiBnb3Zlcm5tZW50XC1hZmZhaXJzOwor5YWn56eRID4gbWVkaWNhbFwtZGVwYXJ0bWVudDsKK+WFg+e0oCA+IFwoY2hlbWljYWxcKVwtZWxlbWVudDsKK+WKoOWFpSA+IHRvXC1iZWNvbWVcLWFcLW1lbWJlcjsKK+mBuOWNgCA+IGVsZWN0b3JhbFwtZGlzdHJpY3Q7CivlnJ/okZcgPiBuYXRpdmVcLFwtYWJvcmlnaW5hbDsKK+aTjeWuiCA+IHBlcnNvbmFsXC1pbnRlZ3JpdHk7CivlgrLoppYgPiB0dXJuXC11cFwtb25lJydzXC1ub3NlOwor6I6r5aaCID4gaXRcLXdvdWxkXC1iZVwtYmV0dGVyOwor57WQ5bizID4gdG9cLXNldHRsZVwtYWNjb3VudHM7Civlm5vomZUgPiBhbGxcLW92ZXJcLXRoZVwtcGxhY2U7CivpgZXkvosgPiB0b1wtYnJlYWtcLXRoZVwtcnVsZXM7CivlnabnjocgPiBmcmFua1wtXChkaXNjdXNzaW9uXCk7CivpgYvkvZwgPiB0aHJlYWRcLVwoY29tcHV0aW5nXCk7CivpgLHliIogPiB3ZWVrbHlcLXB1YmxpY2F0aW9uOwor5L+d6aeVID4gZXNjb3J0XC10aGVcLWVtcGVyb3I7CivlhbHmnIkgPiB0b1wtaGF2ZVwtYWx0b2dldGhlcjsKK+WgseWWnCA+IGFubm91bmNlXC1nb29kXC1uZXdzOwor6LeR6Zu7ID4gZWxlY3RyaWNhbFwtbGVha2FnZTsKK+aSpeWIuiA+IHNwbGFzaFwtXChvZlwtYVwtZmlzaFwpOwor5ouc6KaLID4gcGF5XC1hXC1mb3JtYWxcLXZpc2l0Owor6Iux5paHID4gZW5nbGlzaFwtXChsYW5ndWFnZVwpOwor5Yid5LitID4ganVuaW9yXC1oaWdoXC1zY2hvb2w7CivmioTpgZMgPiB0b1wtdGFrZVwtYVwtc2hvcnRjdXQ7CivmvJToqqogPiBcKGRlbGl2ZXJcLWFcKVwtc3BlZWNoOwor6KaB5ZywID4gc3RyYXRlZ2ljXC1sb2NhdGlvbjsKK+i+puWgsSA+IHRvXC1ydW5cLWFcLW5ld3NwYXBlcjsKK+WHuuS7uyA+IHN0YXJ0XC1pblwtYVwtbmV3XC1qb2I7Civlhafmg4UgPiBpbnNpZGVcLWluZm9ybWF0aW9uOwor6ZaL5bGVID4gXChiZWdpblwtdG9cKVwtZGV2ZWxvcDsKK+S/hOiqniA+IHJ1c3NpYW5cLVwobGFuZ3VhZ2VcKTsKK+WxseiFsyA+IGZvb3RcLW9mXC1hXC1tb3VudGFpbjsKK+WFrOWPuCA+IFwoYnVzaW5lc3NcKVwtY29tcGFueTsKK+aLieelqCA+IGNhbXBhaWduXC1mb3JcLXZvdGVzOwor5omL6KGTID4gc3VyZ2ljYWxcLW9wZXJhdGlvbjsKK+WFq+WNpiA+IHRoZVwtZWlnaHRcLWRpYWdyYW1zOwor6auU5rqrID4gXChib2R5XClcLXRlbXBlcmF0dXJlOwor5ryC56e7ID4gZHJpZnRcLVwoZWxlY3RyaWNhbFwpOwor5YGc5ruvID4gYmVcLWF0XC1hXC1zdGFuZHN0aWxsOwor5a6Y6YK4ID4gb2ZmaWNpYWxcLXJlc2lkZW5jZTsKK+aLnOa4tCA+IHBheVwtYVwtZm9ybWFsXC12aXNpdDsKK+i7jeWumCA+IFwobWlsaXRhcnlcKVwtb2ZmaWNlcjsKK+ethuebtCA+IHBlcmZlY3RseVwtc3RyYWlnaHQ7CivnlKLnlJ8gPiB0b1wtY29tZVwtaW50b1wtYmVpbmc7Civpp5Doj68gPiBzdGF0aW9uZWRcLWluXC1jaGluYTsKK+aOiOWPlyA+IHRvXC1naXZlXC1hbmRcLWFjY2VwdDsKK+eWq+aDhSA+IGVwaWRlbWljXC1zaXR1YXRpb247Civmt7HpgKAgPiBhZHZhbmNlZFwtXChzdHVkaWVzXCk7Civmjajlkb0gPiB0b1wtcmlza1wtb25lJydzXC1saWZlOwor6KOB5LimID4gY3V0XC1kb3duXC1hbmRcLW1lcmdlOwor5L2/56+AID4gXChkaXBsb21hdGljXClcLWVudm95Owor6Iez5bCRID4gXCh0b1wtc2F5XC10aGVcKVwtbGVhc3Q7Civosrfos6MgPiBidXlpbmdcLWFuZFwtc2VsbGluZzsKK+a4rOe5qiA+IHRvXC1zdXJ2ZXlcLWFuZFwtZHJhdzsKK+iDjOe0hCA+IGJyZWFrXC1hblwtYWdyZWVtZW50Owor6Lev5b6RID4gcm91dGVcLVwobmV0d29ya2luZ1wpOwor6IiJ5L6LID4gdG9cLWdpdmVcLWFuXC1leGFtcGxlOwor5L+E5paHID4gcnVzc2lhblwtXChsYW5ndWFnZVwpOwor5omN5pm6ID4gYWJpbGl0eVwtYW5kXC13aXNkb207CivmiZPmi7MgPiB0b1wtZG9cLXNoYWRvd2JveGluZzsKK+iEiOasgiA+IGJlYXRpbmdcLVwob2ZcLWhlYXJ0XCk7Civoh6rkuLsgPiB0b1wtYWN0XC1mb3JcLW9uZXNlbGY7CivmnJ/osqggPiBmdXR1cmVzXC1cKG9uXC1nb29kc1wpOwor5L615oiqID4gdG9cLWhhY2tcLVwoY29tcHV0ZXJcKTsKK+mgremrriA+IGhhaXJcLVwob25cLXRoZVwtaGVhZFwpOwor6LOq55aRID4gY2FsbFwtaW50b1wtcXVlc3Rpb247CivpppbmrKEgPiBmb3JcLXRoZVwtZmlyc3RcLXRpbWU7CivmooblrZAgPiB3YXRjaG1hbicnc1wtY2xhcHBlcjsKK+ayuemkhSA+IGRlZXBcLWZyaWVkXC1wYW5jYWtlOwor5rOE6ZyyID4gbGVha1wtXChpbmZvcm1hdGlvblwpOwor5oqV5YWlID4gcHV0XC1pbnRvXC1vcGVyYXRpb247CivmnpDnlpEgPiB0b1wtcmVzb2x2ZVwtYVwtZG91YnQ7Civol4/oqp4gPiB0aWJldGFuXC1cKGxhbmd1YWdlXCk7CivmnKjogLMgPiBlZGlibGVcLXRyZWVcLWZ1bmd1czsKK+WWmOaBryA+IHRvXC1nYXNwXC1mb3JcLWJyZWF0aDsKK+ajhOS4liA+IHRvXC1sZWF2ZVwtdGhpc1wtd29yZDsKK+aEm+eosSA+IHRlcm1cLW9mXC1lbmRlYXJtZW50Owor5bCI5ZOhID4gYXNzaXN0YW50XC1kaXJlY3RvcjsKK+mgk+i2syA+IHN0YW1wXC1cKG9uZScnc1wtZmVldFwpOwor54++5pyJID4gY3VycmVudGx5XC1leGlzdGluZzsKK+m8u+aokSA+IGJyaWRnZVwtb2ZcLXRoZVwtbm9zZTsKK+WPg+i0iiA+IGRpcGxvbWF0aWNcLW9mZmljZXI7CivkuKbnq4sgPiBleGlzdFwtc2lkZVwtYnlcLXNpZGU7Civosr/mmJMgPiBcKGNvbW1lcmNpYWxcKVwtdHJhZGU7CivphazphaIgPiB0b1wtZXhjaGFuZ2VcLXRvYXN0czsKK+a1qua2jCA+IFwoZWxlY3RyaWNhbFwpXC1zdXJnZTsKK+S9lOWFiCA+IHRvXC10YWtlXC1wcmVjZWRlbmNlOwor6IOM5YWJID4gYmVcLWluXC1hXC1wb29yXC1saWdodDsKK+a3seWknCA+IHZlcnlcLWxhdGVcLWF0XC1uaWdodDsKK+mcsumdoiA+IGFwcGVhclwtXChpblwtcHVibGljXCk7CivllYbli5kgPiBjb21tZXJjaWFsXC1hZmZhaXJzOwor54yc55aRID4gaGFyYm91clwtc3VzcGljaW9uczsKK+iytOWnkyA+IHdoYXRcLWlzXC15b3VyXC1uYW1lXD87CivnjJnnjbAgPiBtZWFuXC1hbmRcLWZlcm9jaW91czsKK+a2suWjkyA+IGh5ZHJhdWxpY1wtcHJlc3N1cmU7CivpvLvloZ4gPiBoYXZlXC1hXC1zdHVmZnlcLW5vc2U7Civpu57lv4MgPiBsaWdodFwtcmVmcmVzaG1lbnRzOwor5pyf5b6FID4gdG9cLWxvb2tcLWZvcndhcmRcLXRvOwor5rW35Z+fID4gdGVycml0b3JpYWxcLXdhdGVyczsKK+avlOippiA+IGhhdmVcLWFcLWNvbXBldGl0aW9uOwor5aSW6LOHID4gZm9yZWlnblwtaW52ZXN0bWVudDsKK+mbu+i3ryA+IFwoZWxlY3RyaWNcKVwtY2lyY3VpdDsKK+S4reWwhyA+IGxpZXV0ZW5hbnRcLWdlbmVyYWw7Civmlofol50gPiBsaXRlcmF0dXJlXC1hbmRcLWFydDsKK+eJiOeohSA+IHJveWFsdHlcLVwob25cLWJvb2tzXCk7Civmg4XloLEgPiBcKHNweVwpXC1pbnRlbGxpZ2VuY2U7Civnt6jpgaMgPiByZW9yZ2FuaXplXC1cKHRyb29wczsKK+azsOWxsSA+IHRhaXNoYW5cLVwobW91bnRhaW5cKTsKK+aCieWwvCA+IHN5ZG5leVwtXChhdXN0cmFsaWFcKTsKK+iWhOaDhSA+IGluY29uc3RhbnRcLWluXC1sb3ZlOwor5rCR55SoID4gXChmb3JcKVwtY2l2aWxpYW5cLXVzZTsKK+e3qOitryA+IHRyYW5zbGF0ZVwtYW5kXC1lZGl0Owor56aP5YipID4gXChtYXRlcmlhbFwpXC13ZWxmYXJlOwor5ZCM5a24ID4gXChmZWxsb3dcKVwtY2xhc3NtYXRlOwor5Lim5YiXID4gc3RhbmRcLXNpZGVcLWJ5XC1zaWRlOwor5LiN5ZKMID4gbm90XC1nZXRcLWFsb25nXC13ZWxsOwor5LiN5Y6tID4gbm90XC1taW5kXC1kb2luZ1wtc3RoOwor5Y+N5oSfID4gXChzdHJvbmdseVwpXC1kaXNsaWtlOwor6Yed5bCNID4gaW5cLWNvbm5lY3Rpb25cLXdpdGg7Civlj6blr4QgPiB0b1wtbWFpbFwtc2VwYXJhdGVseTsKK+iuiuW5uyA+IGNoYW5nZVwtaXJyZWd1bGFybHk7CivloLHpl5wgPiBkZWNsYXJlXC1hdFwtY3VzdG9tczsKK+e9suWQjSA+IHNpZ25cLVwoYVwtc2lnbmF0dXJlXCk7CivpgYropr0gPiB0b1wtZ29cLXNpZ2h0XC1zZWVpbmc7CivlpJbnlYwgPiB0aGVcLW91dHNpZGVcLXdvcmxkOwor6K6K5aSpID4gY2hhbmdlXC1vZlwtd2VhdGhlcjsKK+avlOa/lSA+IHNwZWNpZmljXC1odW1pZGl0eTsKK+W+t+aWhyA+IGdlcm1hblwtXChsYW5ndWFnZVwpOwor5Y2R5oCvID4gbWVhblwtYW5kXC1jb3dhcmRseTsKK+WFtemmrCA+IHRyb29wc1wtYW5kXC1ob3JzZXM7Civnoqnlo6sgPiBtYXN0ZXInJ3NcLVwoZGVncmVlXCk7Civnmb3pqqggPiBib25lc1wtb2ZcLXRoZVwtZGVhZDsKK+eFp+ebuCA+IHRha2VcLWFcLXBob3RvZ3JhcGg7Civnmb3po68gPiBwbGFpblwtY29va2VkXC1yaWNlOwor5pel5a2QID4gYVwtXChjYWxlbmRhclwpXC1kYXRlOwor5pWZ5p2QID4gdGVhY2hpbmdcLW1hdGVyaWFsOwor6YSw5ZyLID4gYm9yZGVyaW5nXC1jb3VudHJ5Owor5qmf6KO9ID4gbWFjaGluZVwtcHJvY2Vzc2VkOwor6ZW36YGUID4gZXh0ZW5kXC1hc1wtbG9uZ1wtYXM7CivljJblpp0gPiB0b1wtcHV0XC1vblwtbWFrZVwtdXA7Civpm6PmjbEgPiB0cnlpbmdcLFwtZGlmZmljdWx0Owor5aSn5bGAID4gZ2VuZXJhbFwtc2l0dWF0aW9uOwor5pWP5oSfID4gc2Vuc2l0aXZlXC1cKGlzc3VlXCk7CivntKHnuZQgPiBzcGlubmluZ1wtXCh0aHJlYWRcKTsKK+Wkp+WkmiA+IGZvclwtdGhlXC1tb3N0XC1wYXJ0Owor5b6S5YiRID4gXChwcmlzb25cKVwtc2VudGVuY2U7CivmlK/mjIEgPiB0b1wtYmVcLWluXC1mYXZvclwtb2Y7CivntJvntJsgPiBvbmVcLWFmdGVyXC1hbm90aGVyOwor5aSW5ZyLID4gZm9yZWlnblwtXChjb3VudHJ5XCk7CivmjZXpo58gPiBjYXRjaFwtYW5kXC1mZWVkXC1vbjsKK+i8lOiqsiA+IHN1YnNpZGlhcnlcLWNvdXJzZTsKK+WFq+iCoSA+IGVpZ2h0XC1cLXBhcnRcLWVzc2F5Owor5bmz5rCRID4gXChvcmRpbmFyeVwpXC1wZW9wbGU7Civpg4rljYAgPiBzdWJ1cmJhblwtZGlzdHJpY3Q7CivlhanogIUgPiBib3RoXC1zaWRlc1x8dGhpbmdzOwor6YOo5Lu9ID4gcGFydFwtXChvZlwtYVwtd2hvbGVcKTsKK+eZveiCiSA+IHBsYWluXC1ib2lsZWRcLXBvcms7CivpgorloZ4gPiBmcm9udGllclwtZm9ydHJlc3M7Civnn7PliLsgPiBzdG9uZVwtaW5zY3JpcHRpb247Civnt4rlr4YgPiBpbnNlcGFyYWJseVwtY2xvc2U7CivpgorljaEgPiBib3JkZXJcLWNoZWNrcG9pbnQ7Civnt6nlkowgPiB0b1wtZWFzZVwtXCh0ZW5zaW9uXCk7Civnt6jljbAgPiBjb21waWxlXC1hbmRcLXByaW50Owor5Yex5peLID4gcmV0dXJuXC10cml1bXBoYW50Owor54CJ6IKaID4gdG9cLWhhdmVcLWRpYXJyaG9lYTsKK+eZveecvCA+IHN1cGVyY2lsaW91c1wtbG9vazsKK+ecvOWwliA+IHRvXC1oYXZlXC1nb29kXC1leWVzOwor5aCx5bizID4gcmVuZGVyXC1hblwtYWNjb3VudDsKK+ijnOeZvCA+IHN1cHBseVwtYWdhaW5cLVwoc3RoOwor5oqK6aCtID4gbGFib3VyXC1jb250cmFjdG9yOwor5bGP6ZqcID4gcHJvdGVjdGl2ZVwtc2NyZWVuOwor54Gr5pifID4gbWFyc1wtXCh0aGVcLXBsYW5ldFwpOwor6aiO6aasID4gcmlkZVwtb25cLWhvcnNlYmFjazsKK+aKhOmMhCA+IHRvXC1tYWtlXC1hXC1jb3B5XC1vZjsKK+aPreabiSA+IGFubm91bmNlXC1wdWJsaWNseTsKK+eXheeoiyA+IGNvdXJzZVwtb2ZcLWRpc2Vhc2U7CivnlLPoqLQgPiB0b1wtYXBwZWFsXC1cKHRvXC1zYlwpOwor5L6b6ZyAID4gc3VwcGx5XC1hbmRcLWRlbWFuZDsKK+WcsOauvCA+IHRoZVwtZWFydGgnJ3NcLWNydXN0Owor6ZaJ5bmVID4gdGhlXC1jdXJ0YWluXC1mYWxsczsKK+ebm+WQjSA+IGZhbW91c1wtcmVwdXRhdGlvbjsKK+W3peWnlCA+IHdvcmtpbmdcLWNvbW1pdHRlZTsKK+ethuiqvyA+IFwob2ZcLXdyaXRpbmdcKVwtdG9uZTsKK+WxleimvSA+IHRvXC1wdXRcLW9uXC1kaXNwbGF5Owor55m95biDID4gcGxhaW5cLXdoaXRlXC1jbG90aDsKK+W3peWcsCA+IGNvbnN0cnVjdGlvblwtc2l0ZTsKK+ajleiJsiA+IGJyb3duXC1cKHRoZVwtY29sb3JcKTsKK+evh+ebriA+IHRhYmxlXC1vZlwtY29udGVudHM7CivkvY/pmaIgPiB0b1wtYmVcLWluXC1ob3NwaXRhbDsKK+aQj+WLlSA+IGJlYXRcLXJoeXRobWljYWxseTsKK+aOpeW+hSA+IHJlY2VpdmVcLVwoYVwtdmlzaXRcKTsKK+WFteWKmyA+IG1pbGl0YXJ5XC1zdHJlbmd0aDsKK+WFrOWLmSA+IG9mZmljaWFsXC1idXNpbmVzczsKK+aLmOeVmSA+IGRldGFpblwtXChwcmlzb25lclwpOwor5oyo5qyhID4gb25lXC1hZnRlclwtYW5vdGhlcjsKK+WFrOS9iCA+IHB1YmxpY2x5XC1hbm5vdW5jZTsKK+WFp+S6giA+IGludGVybmFsXC1kaXNvcmRlcjsKK+ihm+aYnyA+IFwoc3BhY2VcKVwtc2F0ZWxsaXRlOwor5ouN54WnID4gdG9cLXRha2VcLWFcLXBpY3R1cmU7Civnl4XmlYUgPiBkaWVcLW9mXC1hblwtaWxsbmVzczsKK+ihneaTiiA+IFwoYmVcLXVuZGVyXClcLWF0dGFjazsKK+mVt+S5hSA+IFwoZm9yXC1hXClcLWxvbmdcLXRpbWU7CivpjITpn7MgPiBcKHNvdW5kXClcLXJlY29yZGluZzsKK+S/neelkCA+IGJsZXNzXC1hbmRcLXByb3RlY3Q7CivmjbfloLEgPiByZXBvcnRcLW9mXC1zdWNjZXNzOwor5ZyY5ZyTID4gdG9cLWhhdmVcLWFcLXJldW5pb247Civmjojli5sgPiB0b1wtYXdhcmRcLWFuXC1ob25vcjsKK+WTgOmztCA+IGFcLXBsYWludGl2ZVwtd2hpbmU7Civmh4LooYwgPiB0b1wta25vd1wtdGhlXC1yb3BlczsKK+i7jeWNgCA+IGFcLW1pbGl0YXJ5XC1yZWdpb247Civkv53niL4gPiBcKGFcLXBlcnNvbmFsXC1uYW1lXCk7CivosqHplqUgPiBmaW5hbmNpYWxcLW1hZ25hdGU7Civmi43mlJ0gPiBcKHNob290XC1hXClcLXBpY3R1cmU7CivogIPpqZcgPiBcKHB1dFwtdG9cLXRoZVwpXC10ZXN0Owor5L+d5rqrID4gaGVhdFwtcHJlc2VydmF0aW9uOwor5bGP5rCjID4gaG9sZFwtb25lJydzXC1icmVhdGg7CivnqJ/os6YgPiBuYXR1cmFsXC1lbmRvd21lbnQ7Civnl4XljbEgPiBiZVwtY3JpdGljYWxseVwtaWxsOwor5L2155m8ID4gYmVcLWNvbXBsaWNhdGVkXC1ieTsKK+iyoeiyvyA+IGZpbmFuY2VcLWFuZFwtdHJhZGU7CivmvKLlrZcgPiBjaGluZXNlXC1jaGFyYWN0ZXI7CivlronnqakgPiBzbW9vdGhcLWFuZFwtc3RlYWR5Owor5bCI5qWtID4gc3BlY2lhbGl6ZWRcLWZpZWxkOwor5bGP5oGvID4gaG9sZFwtb25lJydzXC1icmVhdGg7CivotqjmmYIgPiB0b1wtZm9sbG93XC1mYXNoaW9uOwor5LuN6IiKID4gc3RpbGxcLVwocmVtYWluaW5nXCk7Civmi5flj6MgPiBoYXJkXC10b1wtcHJvbm91bmNlOwor5ZaY5rCjID4gdG9cLWJyZWF0aGVcLWRlZXBseTsKK+aLnOWAkiA+IHByb3N0cmF0ZVwtb25lc2VsZjsKK+aJjeaAnSA+IGltYWdpbmF0aXZlXC1wb3dlcjsKK+azoumfsyA+IGJvZWluZ1wtXChhaXJjcmFmdFwpOwor5L2c5qWtID4gc2Nob29sXC1hc3NpZ25tZW50Owor6byT6IieID4gaGVhcnRlbmluZ1wtXChuZXdzXCk7CivmoYjmg4UgPiBkZXRhaWxzXC1vZlwtYVwtY2FzZTsKK+iyoeelniA+IHRoZVwtZ29kXC1vZlwtd2VhbHRoOwor5bGV5Ye6ID4gdG9cLXB1dFwtb25cLWRpc3BsYXk7Civnj77ni4AgPiBjdXJyZW50XC1zaXR1YXRpb247CivlsI/loLEgPiB0YWJsb2lkXC1uZXdzcGFwZXI7CivmnJ3ogZYgPiBtYWtlXC1hXC1waWxncmltYWdlOwor5L+d5YGlID4gaGVhbHRoXC1wcm90ZWN0aW9uOwor5rer5rC0ID4gc2V4dWFsXC1zZWNyZXRpb25zOwor5bCL5ZGzID4gdG9cLXRoaW5rXC1zdGhcLW92ZXI7Civmnb/nhZkgPiBwbHVnXC1cKG9mXC10b2JhY2NvXCk7Civms6joppYgPiB3YXRjaFwtYXR0ZW50aXZlbHk7Civms5Xoqp4gPiBmcmVuY2hcLVwobGFuZ3VhZ2VcKTsKK+eNqOeriyA+IHRvXC1iZVwtaW5kZXBlbmRlbnQ7CivotbDlh7ogPiB0b1wtbW92ZVwtYXdheVwtZnJvbTsKK+iBsuaPtCA+IHN1cHBvcnRcLVwoYVwtY2F1c2VcKTsKK+ekpuiXjyA+IG1pbmVyYWxcLXJlc291cmNlczsKK+Wvq+S/oSA+IHRvXC13cml0ZVwtYVwtbGV0dGVyOwor5LiJ57atID4gdGhyZWVcLWRpbWVuc2lvbmFsOwor56m05bGFID4gdG9cLWxpdmVcLWluXC1hXC1jYXZlOwor54uA6KqeID4gYWR2ZXJiaWFsXC1hZGp1bmN0Owor6YWs6YeRID4gXChtb25ldGFyeVwpXC1yZXdhcmQ7CivosqHmlL8gPiBmaW5hbmNlc1wtXChwdWJsaWNcKTsKK+WuieWNsSA+IHNhZmV0eVwtYW5kXC1kYW5nZXI7CivlkI3nqLEgPiBuYW1lXC1cKG9mXC1hXC10aGluZ1wpOwor54mp6LOqID4gXChwaHlzaWNhbFwpXC1tYXR0ZXI7CivlkIPnqb8gPiBmb29kXC1hbmRcLWNsb3RoaW5nOwor56m05L2NID4gYWN1cHVuY3R1cmVcLXBvaW50Owor5a245L2NID4gZWR1Y2F0aW9uYWxcLWxldmVsOwor5b636KqeID4gZ2VybWFuXC1cKGxhbmd1YWdlXCk7CivlkITnlYwgPiBhbGxcLXdhbGtzXC1vZlwtbGlmZTsKK+iAs+WtkCA+IGhhbmRsZVwtXChvblwtYVwtcG90XCk7CivmgJ3ntq0gPiBcKGxpbmVcLW9mXClcLXRob3VnaHQ7Civku6XlhY0gPiBpblwtb3JkZXJcLXRvXC1hdm9pZDsKK+S6i+WvpiA+IFwodGhlXClcLWZhY3RcLVwodGhhdFwpOwor5pys5oCnID4gbmF0dXJhbFwtaW5zdGluY3RzOwor6Zuj6aGMID4gZGlmZmljdWx0XC1wcm9ibGVtOwor6K6K55u4ID4gaW5cLWRpc2d1aXNlZFwtZm9ybTsKK+iyoeWLmSA+IGZpbmFuY2lhbFwtYWZmYWlyczsKK+acjeW9uSA+IHNlcnZlXC1pblwtdGhlXC1hcm15Owor6Yar55mCID4gbWVkaWNhbFwtdHJlYXRtZW50Owor5pWs6YeNID4gdG9cLXJlc3BlY3RcLWRlZXBseTsKK+aal+aysyA+IHVuZGVyZ3JvdW5kXC1yaXZlcjsKK+mguOakjiA+IGNlcnZpY2FsXC12ZXJ0aWJyYTsKK+e2sum7niA+IG5vZGVcLWluXC1hXC1uZXR3b3JrOwor6buR5a6iID4gaGFja2VyXC1cKGNvbXB1dGVyXCk7Civnupboiq8gPiBjb3JlXC1cKG9mXC1hXC1maWJlclwpOwor57eo6ZqKID4gZm9ybVwtaW50b1wtY29sdW1uczsKK+aVl+mAgCA+IHJldHJlYXRcLWluXC1kZWZlYXQ7CivmnKzlnIsgPiBvbmUnJ3NcLW93blwtY291bnRyeTsKK+azleaWhyA+IGZyZW5jaFwtXChsYW5ndWFnZVwpOwor6Kqe6KiAID4gXChzcG9rZW5cKVwtbGFuZ3VhZ2U7CivkuI3lsZEgPiBkaXNkYWluXC10b1wtZG9cLXN0aDsKK+WNiuelqCA+IGhhbGZcLXByaWNlXC10aWNrZXQ7CivnjajllLEgPiBcKGluXC1zaW5naW5nXClcLXNvbG87Civnp4HkurogPiBwcml2YXRlXC1cKGNpdGl6ZW5cKTsKK+eNsuWHhiA+IG9idGFpblwtcGVybWlzc2lvbjsKK+asiumRsCA+IGtleXNcLW9mXC1hdXRob3JpdHk7CivniIbnrqEgPiBjYXJ0cmlkZ2VcLWlnbml0ZXI7CivnpKbluoogPiBcKG1pbmVyYWxcKVwtZGVwb3NpdDsKK+atouihgCA+IHN0YW5jaFwtXChibGVlZGluZ1wpOwor5ZCN5a2XID4gXChhXC1wZXJzb24nJ3NcKVwtbmFtZTsKK+WPsOW5oyA+IG5ld1wtdGFpd2FuXC1kb2xsYXI7Civpoaflj4ogPiB0YWtlXC1pbnRvXC1hY2NvdW50Owor5LiL5Y67ID4gZ29cLWRvd25cLVwoZGVzY2VuZFwpOwor5Yu756ixID4gd2VsbFwtcHJvcG9ydGlvbmVkOwor5LiN5YqbID4gbm90XC1kb1wtb25lJydzXC1iZXN0Owor6YGT6KydID4gdG9cLWV4cHJlc3NcLXRoYW5rczsKK+ehneeFmSA+IHNtb2tlXC1cKGZyb21cLWd1bnNcKTsKK+iXneS6uiA+IHBlcmZvcm1pbmdcLWFydGlzdDsKK+aVmee3tCA+IFwoYXRobGV0ZScnc1wpXC1jb2FjaDsKK+WHuumZoiA+IHRvXC1sZWF2ZVwtaG9zcGl0YWw7CivpmL/ph4wgPiBhbGlcLVwocHJvcGVyXC1uYW1lXCk7CivpmYTov5EgPiBcKGluXC10aGVcKVwtdmljaW5pdHk7CivniYzmqJMgPiBkZWNvcmF0ZWRcLWFyY2h3YXk7CivniLbmr40gPiBmYXRoZXJcLWFuZFwtbW90aGVyOwor56Oo5a2QID4gbWlsbFwsXC1taWxsc3RvbmVzOwor5ZCO5Lq6ID4gbGF0ZXJcLWdlbmVyYXRpb247CivorZjlrZcgPiB0b1wtbGVhcm5cLXRvXC1yZWFkOwor5b+D5b6XID4ga25vd2xlZGdlXC1nYWluZWQ7CivmsYLlqZogPiBwcm9wb3NlXC1tYXJyaWFnZTsKK+e3qOebriA+IG1ha2VcLWFcLWNhdGFsb2d1ZTsKK+mbu+a1gSA+IGVsZWN0cmljXC1jdXJyZW50Owor5Z+O6Y6uID4gY2l0aWVzXC1hbmRcLXRvd25zOwor5aeU5ZOhID4gY29tbWl0dGVlXC1tZW1iZXI7Civlo4HnlasgPiBtdXJhbFwtXChwYWludGluZ1wpOwor5aeT5ZCNID4gbmFtZVwtYW5kXC1zdXJuYW1lOwor5piv5ZCmID4gd2hldGhlclwtXChvclwtbm90XCk7CivnuL3mqZ8gPiBjZW50cmFsXC1leGNoYW5nZTsKK+mBjueoiyA+IGNvdXJzZVwtb2ZcLWV2ZW50czsKK+eGiueMtCA+IGFzc2FtZXNlXC1tYWNhcXVlOwor5aSn5pyDID4gZ2VuZXJhbFwtYXNzZW1ibHk7Civln7roqr8gPiBcKHNwZWVjaFwpXC1rZXlub3RlOwor6Kqk5pyDID4gdG9cLW1pc3VuZGVyc3RhbmQ7CivoqILnpaggPiB0b1wtaXNzdWVcLXRpY2tldHM7Civlo73moYMgPiBiaXJ0aGRheVwtcGVhY2hlczsKK+W3tOixhiA+IFwocHVyZ2luZ1wpXC1jcm90b247Civlo73mmJ8gPiBnb2RcLW9mXC1sb25nZXZpdHk7CivlhaXov7cgPiB0b1wtYmVcLWZhc2NpbmF0ZWQ7CivmmI7ku6MgPiB0aGVcLW1pbmdcLWR5bmFzdHk7CivpgIDnpaggPiBib3VuY2VcLVwoYVwtY2hlY2tcKTsKK+e5g+WtkCA+IGVtYnJvaWRlcnlcLWZyYW1lOwor5b6X5Ye6ID4gb2J0YWluXC1cKHJlc3VsdHNcKTsKK+WFjeiyuyA+IGZyZWVcLVwob2ZcLWNoYXJnZVwpOwor6YGy5pquID4gcGFzdFwtb25lJydzXC1wcmltZTsKK+e2suapiyA+IFwobmV0d29ya1wpXC1icmlkZ2U7CivliJfngrogPiBiZVwtY2xhc3NpZmllZFwtYXM7CivlnIvpmLIgPiBuYXRpb25hbFwtZGVmZW5jZTsKK+aVheWxhSA+IGZvcm1lclwtcmVzaWRlbmNlOwor5Ym95oKNID4gc3dpZnRcLWFuZFwtZmllcmNlOwor5q2m5a6YID4gbWlsaXRhcnlcLWF0dGFjaGU7CivpgZXmhrIgPiB1bmNvbnN0aXR1dGlvbmFsOwor5Yue5YuVID4gXChwaHlzaWNhbFwpXC1sYWJvcjsKK+eCuueUnyA+IHRvXC1tYWtlXC1hXC1saXZpbmc7CivlhaznvoogPiByYW1cLVwobWFsZVwtc2hlZXBcKTsKK+iIuemaiiA+IGZsZWV0XC1cKG9mXC1zaGlwc1wpOwor5buj5beeID4gZ3Vhbmd6aG91XC1cKGNpdHlcKTsKK+mbu+WKmyA+IGVsZWN0cmljYWxcLXBvd2VyOwor6KOc6KGAID4gZW5yaWNoXC10aGVcLWJsb29kOwor54eI5YWJID4gXChzdGFnZVwpXC1saWdodGluZzsKK+mAj+aUryA+IFwoYmFua1wpXC1vdmVyZHJhZnQ7Civov7Tml4sgPiBtYW5ldXZlcmluZ1wtcm9vbTsKK+eZveejtyA+IHdoaXRlXC1waG9zcGhvcnVzOwor5aCx5o23ID4gcmVwb3J0XC1hXC1zdWNjZXNzOwor6Kiq5ZWPID4gcGF5XC1hXC12aXNpdFwtXCh0b1wpOwor6Zmk5aSVID4gXChuZXdcLXllYXInJ3NcKVwtZXZlOwor6L6m5qGIID4gdG9cLWhhbmRsZVwtYVwtY2FzZTsKK+ioguWWriA+IFwocHVyY2hhc2VcKVwtb3JkZXI7Civoj6/lg5EgPiBvdmVyc2Vhc1wtY2hpbmVzZTsKK+a7kem8oCA+IG1vdXNlXC1cKGNvbXB1dGVyXCk7Civnl4Xoj4wgPiBoYXJtZnVsXC1iYWN0ZXJpYTsKK+mAsuS/riA+IGFkdmFuY2VkXC1zdHVkaWVzOwor6ZW35rGfID4gY2hhbmdqaWFuZ1wtcml2ZXI7CivnrYbpoK0gPiBhYmlsaXR5XC10b1wtd3JpdGU7Civlub7ljYMgPiBzZXZlcmFsXC10aG91c2FuZDsKK+WIsOS6hiA+IGluXC1cKGFcLXBhc3RcLXRpbWVcKTsKK+WgseWQjSA+IGVudGVyXC1vbmUnJ3NcLW5hbWU7Civlh7rlkI0gPiB3ZWxsXC1rbm93blwtXChmb3JcKTsKK+aOiOeNjiA+IHRvXC1hd2FyZFwtYVwtcHJpemU7Civpq5TogrIgPiBwaHlzaWNhbFwtY3VsdHVyZTsKK+a8ouiqniA+IGNoaW5lc2VcLWxhbmd1YWdlOwor5YW15b25ID4gbWlsaXRhcnlcLXNlcnZpY2U7CivnlaLogpYgPiByZXNlbWJsZVwtY2xvc2VseTsKK+W0qea8jyA+IHV0ZXJpbmVcLWJsZWVkaW5nOwor5YaX5ZOhID4gZXhjZXNzXC1wZXJzb25uZWw7CivlhbXlo6sgPiBvcmRpbmFyeVwtc29sZGllcjsKK+imgeS6uiA+IGltcG9ydGFudFwtcGVyc29uOwor5o6h5pOHID4gc2VsZWN0XC1hbmRcLWFkb3B0Owor6Lip57eaID4gc3RlcFwtb25cLXRoZVwtbGluZTsKK+eZseWtkCA+IHBhcmFseXplZFwtcGVyc29uOwor5beo5YygID4gbWFzdGVyXC1jcmFmdHNtYW47CivplrHlhbUgPiB0b1wtcmV2aWV3XC10cm9vcHM7CivlgrLmsKMgPiBhaXJcLW9mXC1hcnJvZ2FuY2U7Civkvr/ooaMgPiBjaXZpbGlhblwtY2xvdGhlczsKK+Wwi+ioqiA+IHRvXC1pbnF1aXJlXC1hZnRlcjsKK+WvtuiynSA+IHRyZWFzdXJlZFwtb2JqZWN0Owor6Zax5LiWID4gdG9cLXNlZVwtdGhlXC13b3JsZDsKK+ewoeaYjiA+IHNpbXBsZVwtYW5kXC1jbGVhcjsKK+WuiemgkyA+IGZpbmRcLWFcLXBsYWNlXC1mb3I7CivlhazlhawgPiBodXNiYW5kJydzXC1mYXRoZXI7Civkvovoqp4gPiBleGFtcGxlXC1zZW50YW5jZTsKK+mWg+S6riA+IGJyaWxsaWFudFwsXC1zaGlueTsKK+Wdh+WLoiA+IGJhbGFuY2VcLW9mXC1wb3dlcjsKK+S/neeVmSA+IGNvbnRpbnVlXC10b1wtaGF2ZTsKK+S6uumgrSA+IG51bWJlclwtb2ZcLXBlb3BsZTsKK+aOpeS6uiA+IHRvXC1tZWV0XC1hXC1wZXJzb247CivlnIvlipsgPiBhXC1uYXRpb24nJ3NcLXBvd2VyOwor5omu5ryUID4gcGxheVwtdGhlXC1wYXJ0XC1vZjsKK+eXheWboCA+IGNhdXNlXC1vZlwtZGlzZWFzZTsKK+i7jeS6iyA+IG1pbGl0YXJ5XC1hZmZhaXJzOwor5L2U57eaID4gYnVzeVwtXCh0ZWxlcGhvbmVcKTsKK+WxseadkSA+IG1vdW50YWluXC12aWxsYWdlOwor5bGs5pa8ID4gYmVcLWNsYXNzaWZpZWRcLWFzOwor5ouQ5b2OID4gdG9cLXR1cm5cLWFcLWNvcm5lcjsKK+eXheWOnyA+IGNhdXNlXC1vZlwtZGlzZWFzZTsKK+iBmuiuiiA+IFwobnVjbGVhclwpXC1mdXNpb247CivooajlhoogPiBzdGF0aXN0aWNhbFwtZm9ybTsKK+WvqeeQhiA+IHRvXC1oZWFyXC1cKGFcLWNhc2VcKTsKK+aKhOacrCA+IGhhbmR3cml0dGVuXC1jb3B5Owor5a6J572uID4gZmluZFwtYVwtcGxhY2VcLWZvcjsKK+iIlOWQriA+IHRvXC1saWNrXC1hbmRcLXN1Y2s7Civkvr/mqYsgPiB0ZW1wb3JhcnlcLWJyaWRnZTsKK+ethuaIsCA+IHdyaXR0ZW5cLXBvbGVtaWNzOwor5L6/5pyNID4gZXZlcnlkYXlcLWNsb3RoZXM7CivmhJ/orJ0gPiBcKGV4cHJlc3NcKVwtdGhhbmtzOwor5LiL6aasID4gZGlzbW91bnRcLWFcLWhvcnNlOwor5a6J55ygID4gc2xlZXBcLXBlYWNlZnVsbHk7CivlsaTlsaQgPiBsYXllclwtdXBvblwtbGF5ZXI7CivnrYbluL0gPiB0aGVcLWNhcFwtb2ZcLWFcLXBlbjsKK+iytue+qSA+IGRlcm9nYXRvcnlcLXNlbnNlOwor5L2c5rOVID4gY291cnNlXC1vZlwtYWN0aW9uOwor5ryU5ZOhID4gYWN0b3JcLW9yXC1hY3RyZXNzOwor6ZGS5YilID4gdG9cLWRpZmZlcmVudGlhdGU7Civkv53lr4YgPiBtYWludGFpblwtc2VjcmVjeTsKK+ethuWllyA+IHRoZVwtY2FwXC1vZlwtYVwtcGVuOwor5YCf5YqpID4gdG9cLWdldFwtaGVscFwtZnJvbTsKK+eUmOWcsCA+IFwobWFoYXRtYVwpXC1nYW5kaGk7Civms6jph40gPiBwYXlcLWF0dGVudGlvblwtdG87Civmh7jmjpsgPiBcKGNhclwpXC1zdXNwZW5zaW9uOwor5LiN6KydID4gZG9uJyd0XC1tZW50aW9uXC1pdDsKK+acrOe+qSA+IG9yaWdpbmFsXC1tZWFuaW5nOwor5Ly05pifID4gY29tcGFuaW9uXC1cKHN0YXJcKTsKK+S/neWFqCA+IHNhdmVcLWZyb21cLWRhbWFnZTsKK+aKhOS7tiA+IGR1cGxpY2F0ZVwtXChjb3B5XCk7CivnvbfoqrIgPiBzdHVkZW50JydzXC1zdHJpa2U7Civph43ph40gPiBsYXllclwtdXBvblwtbGF5ZXI7Civmh4nmiLAgPiBmYWNlXC1hXC1jaGFsbGVuZ2U7CivmoLjlqIEgPiBudWNsZWFyXC1zdHJlbmd0aDsKK+iZnOeNsiA+IGNhcHR1cmVcLVwocGVvcGxlXCk7CivmnKznpaggPiBjYXNoaWVyJydzXC1jaGVxdWU7Civkvovlj6UgPiBleGFtcGxlXC1zZW50YW5jZTsKK+WuieW+vSA+IGFuaHVpXC1cKHByb3ZpbmNlXCk7Civok5bpursgPiBjYXN0b3JcLW9pbFwtcGxhbnQ7Civnq5nlj7AgPiByYWlsd2F5XC1wbGF0Zm9ybTsKK+eQhuacgyA+IHBheVwtYXR0ZW50aW9uXC10bzsKK+eNsuebiiA+IG9idGFpblwtYVwtYmVuZWZpdDsKK+S7iuaYlCA+IHBhc3RcLWFuZFwtcHJlc2VudDsKK+adv+aglyA+IGNoaW5lc2VcLWNoZXN0bnV0Owor5ZC4566hID4gXChkcmlua2luZ1wpXC1zdHJhdzsKK+S6uuaVuCA+IG51bWJlclwtb2ZcLXBlb3BsZTsKK+WutuWLmSA+IGhvdXNlaG9sZFwtZHV0aWVzOwor5rCR6ZaTID4gYW1vbmdcLXRoZVwtcGVvcGxlOwor5ama56auID4gd2VkZGluZ1wtY2VyZW1vbnk7CivorabooZsgPiBcKHNlY3VyaXR5XClcLWd1YXJkOwor5Lm+5p2vID4gdG9cLWRyaW5rXC1hXC10b2FzdDsKK+eMv+eMtCA+IGFwZXNcLWFuZFwtbW9ua2V5czsKK+S4pua/gCA+IHNodW50XC1leGNpdGF0aW9uOwor6YeP57axID4gZGltZW5zaW9uXC1cKHVuaXRcKTsKK+izquWVjyA+IFwoYXNrXC1hXClcLXF1ZXN0aW9uOwor6JKQ6ZuGID4gdG9cLWdhdGhlclwtXChkYXRhXCk7CivmmpHnmJ8gPiB0cm9waWNhbFwtZGlzZWFzZTsKK+WNmuimvSA+IHJlYWRcLWV4dGVuc2l2ZWx5Owor5rex5YWlID4gcGVuZXRyYXRlXC1kZWVwbHk7CivkuLnmoYIgPiBvcmFuZ2VcLW9zbWFudGh1czsKK+adv+WjgSA+IHdvb2RlblwtcGFydGl0aW9uOwor5p+Q5Lq6ID4gYVwtY2VydGFpblwtcGVyc29uOwor5pyI5puGID4gbW9udGhseVwtY2FsZW5kYXI7Civmsrvnl4UgPiB0cmVhdFwtYW5cLWlsbG5lc3M7CivljYHoqqEgPiB0ZW5cLWNvbW1hbmRtZW50czsKK+WklumVtyA+IGZvcmVpZ25cLW1pbmlzdGVyOwor6YWN6JelID4gZGlzcGVuc2VcLVwoZHJ1Z3NcKTsKK+Wtl+S4siA+IGNoYXJhY3Rlclwtc3RyaW5nOwor5Lit5paHID4gY2hpbmVzZVwtbGFuZ3VhZ2U7CivlpKfpgbggPiBnZW5lcmFsXC1lbGVjdGlvbjsKK+WUkOS7oyA+IHRoZVwtdGFuZ1wtZHluYXN0eTsKK+aAp+eXhSA+IHZlbmVyZWFsXC1kaXNlYXNlOwor5ZCb5qyKID4gbW9uYXJjaGlhbFwtcG93ZXI7Civol4/mlocgPiB0aWJldGFuXC1sYW5ndWFnZTsKK+iugOeJqSA+IHJlYWRpbmdcLW1hdGVyaWFsOwor6YKK6ZiyID4gZnJvbnRpZXJcLWRlZmVuY2U7CivlkJHmnbEgPiB0b3dhcmRzXC10aGVcLWVhc3Q7Civpm4bpjKYgPiBiZXN0XC1vZlwtdGhlXC1iZXN0Owor57235pWZID4gdGVhY2hlcicnc1wtc3RyaWtlOwor5aSW6KqeID4gZm9yZWlnblwtbGFuZ3VhZ2U7CivoqrLooaggPiBzY2hvb2xcLXRpbWV0YWJsZTsKK+iqpOinoyA+IG1pc3VuZGVyc3RhbmRpbmc7CivlkIzmmYIgPiBhdFwtdGhlXC1zYW1lXC10aW1lOwor5LiN5b+ZID4gdGhlcmUnJ3NcLW5vXC1odXJyeTsKK+mbhumDtSA+IHN0YW1wXC1jb2xsZWN0aW5nOwor5bug6ZW3ID4gZmFjdG9yeVwtZGlyZWN0b3I7Civororms5UgPiBwb2xpdGljYWxcLXJlZm9ybTsKK+azouaKmCA+IHR3aXN0c1wtYW5kXC10dXJuczsKK+e+pOWztiA+IGdyb3VwXC1vZlwtaXNsYW5kczsKK+eKr+azlSA+IHRvXC1icmVha1wtdGhlXC1sYXc7CivkuI3lsJEgPiBub3RcLVwoanVzdFwpXC1hXC1mZXc7CivlubTpvaEgPiBcKGFcLXBlcnNvbicnc1wpXC1hZ2U7Civmr5Tnv7wgPiBmbHlcLXdpbmdcLXRvXC13aW5nOwor56We5aWHID4gbWFnaWNhbFwtbXlzdGljYWw7CivnpoHlk4EgPiBjb250cmFiYW5kXC1nb29kczsKK+acgOWFiCA+IFwodGhlXClcLXZlcnlcLWZpcnN0Owor5amG5a62ID4gaHVzYmFuZCcnc1wtZmFtaWx5Owor5piO5reoID4gYnJpZ2h0XC1hbmRcLWNsZWFuOwor6YeN5oW2ID4gY2hvbmdxaW5nXC1cKGNpdHlcKTsKK+WphuWphiA+IGh1c2JhbmQnJ3NcLW1vdGhlcjsKK+WQg+WujCA+IHRvXC1maW5pc2hcLWVhdGluZzsKK+mAvOi/kSA+IHByZXNzXC1vblwtdG93YXJkczsKK+WgsemkqCA+IG5ld3NwYXBlclwtb2ZmaWNlOwor6Zu757qcID4gXChlbGVjdHJpY1wpXC1jYWJsZTsKK+eLgOaFiyA+IHN0YXRlXC1vZlwtYWZmYWlyczsKK+S4reS7iyA+IGFnZW50XC1cKGNvbXB1dGVyXCk7CivkuI3lhYkgPiBub3RcLXRoZVwtb25seVwtb25lOwor5pqR5aSpID4gaG90XC1cKHN1bW1lclwpXC1kYXk7Civoj6/oqp4gPiBjaGluZXNlXC1sYW5ndWFnZTsKK+S4jeWDhSA+IG5vdFwtdGhlXC1vbmx5XC1vbmU7Civlj43lsI0gPiB0b1wtZmlnaHRcLWFnYWluc3Q7CivkuI3kuYUgPiBub3RcLWxvbmdcLVwoYWZ0ZXJcKTsKK+WkqeeItiA+IGhlYXZlbmx5XC1mYXRoZXI7CivnibnlvrUgPiBjaGFyYWN0ZXJpc3RpY3M7CivmmpHlgYcgPiBzdW1tZXJcLXZhY2F0aW9uOwor5pO66ISrID4gYnJlYWtcLWF3YXlcLWZyb207CivljYrmlbggPiBoYWxmXC10aGVcLW51bWJlcjsKK+WGsOmcnCA+IG1vcmFsXC1pbnRlZ3JpdHk7Civli7vmupwgPiBldmVuXC1hbmRcLXNtb290aDsKK+WOn+WnlCA+IHRoZVwtd2hvbGVcLXN0b3J5Owor54m55a+rID4gZmVhdHVyZVwtYXJ0aWNsZTsKK+aYpeWkqSA+IHNwcmluZ1wtXChzZWFzb25cKTsKK+atoueXmyA+IHRvXC1yZWxpZXZlXC1wYWluOwor5Y+b5LqCID4gYXJtZWRcLXJlYmVsbGlvbjsKK+aWh+aqlCA+IFwoY29tcHV0ZXJcKVwtZmlsZTsKK+e3rOeUuCA+IG15YW5tYXJcLVwoYnVybWFcKTsKK+WkseacmyA+IGJlXC1kaXNhcHBvaW50ZWQ7CivntrLnq5kgPiBuZXR3b3JrXC1zdGF0aW9uOwor6ZaL6ZaAID4gb3BlblwtXCh0aGVcKVwtZG9vcjsKK+e2k+euoSA+IGJlXC1pblwtY2hhcmdlXC1vZjsKK+WNiuWkqSA+IGhhbGZcLW9mXC10aGVcLWRheTsKK+iqnuaXjyA+IGxhbmd1YWdlXC1icmFuY2g7CivlvoDlubQgPiBpblwtZm9ybWVyXC15ZWFyczsKK+aXpeWgsSA+IGRhaWx5XC1uZXdzcGFwZXI7CivlhYnpm7sgPiBvcHRvXC1lbGVjdHJpY2FsOwor6Kqe5pSvID4gbGFuZ3VhZ2VcLWJyYW5jaDsKK+eZvemQtSA+IGdhbHZhbml6ZWRcLWlyb247Civpm4XmrYwgPiBzb25nXC1vZlwtc29sb21vbjsKK+W9vOWyuCA+IHRoZVwtb3RoZXJcLXNob3JlOwor6YWN5ZCIID4gY29vcmRpbmF0ZVwtd2l0aDsKK+WgseezuyA+IG5ld3NwYXBlclwtY2hhaW47CivmqJnph48gPiBzY2FsYXJcLXF1YW50aXR5Owor5Y2X5YyXID4gbm9ydGhcLWFuZFwtc291dGg7Civmr5TlrrkgPiBzcGVjaWZpY1wtdm9sdW1lOwor55uI6JmnID4gcHJvZml0XC1hbmRcLWxvc3M7Civli7jlsI4gPiB0cnlcLXRvXC1jb252aW5jZTsKK+mZo+eHnyA+IGdyb3VwXC1vZlwtcGVvcGxlOwor5bm+55m+ID4gc2V2ZXJhbFwtaHVuZHJlZDsKK+Wkp+WvqyA+IGNhcGl0YWxcLWxldHRlcnM7CivpgY7mtLsgPiBsaXZlXC1vbmUnJ3NcLWxpZmU7CivniYzkvY0gPiBtZW1vcmlhbFwtdGFibGV0Owor5pep5LqbID4gXChhXC1iaXRcKVwtZWFybGllcjsKK+iqsuWkliA+IGV4dHJhY3VycmljdWxhcjsKK+aUtuaLviA+IHRvXC1wdXRcLWluXC1vcmRlcjsKK+e2suautSA+IG5ldHdvcmtcLXNlZ21lbnQ7CivlvJ/lvJ8gPiB5b3VuZ2VyXC1icm90aGVyOwor6YGy5pepID4gc29vbmVyXC1vclwtbGF0ZXI7Civnn67lsI8gPiBzaG9ydFwtYW5kXC1zbWFsbDsKK+avlOWDuSA+IHByaWNlXC1yZWxhdGlvbnM7CivmlrDku7sgPiBuZXdseVwtYXBwb2ludGVkOwor6Zy45L2UID4gZm9yY2libHlcLW9jY3VweTsKK+eXhemtlCA+IHNlcmlvdXNcLWlsbG5lc3M7CivluLjnlKggPiBpblwtY29tbW9uXC11c2FnZTsKK+WGsOejmiA+IGljZVwtY3JlYW1cLWJyaWNrOwor55m96I+cID4gY2hpbmVzZVwtY2FiYmFnZTsKK+W8t+WKoCA+IGltcG9zZVwtYnlcLWZvcmNlOwor5aSW5LqLID4gZm9yZWlnblwtYWZmYWlyczsKK+mCiuWcsCA+IGJvcmRlclwtZGlzdHJpY3Q7CivoiIzpnaIgPiBibGFkZVwtb2ZcLXRvbmd1ZTsKK+iRl+S9nCA+IGFcLWxpdGVyYXJ5XC13b3JrOwor55m957GzID4gXChwb2xpc2hlZFwpXC1yaWNlOwor54CV6IeoID4gb25cLXRoZVwtdmVyZ2VcLW9mOwor5pCN55uKID4gcHJvZml0XC1hbmRcLWxvc3M7Civpgbjllq4gPiBcKHNvZnR3YXJlXClcLW1lbnU7Civln7fms5UgPiBsYXdcLWVuZm9yY2VtZW50Owor6YCy5bGVID4gdG9cLW1ha2VcLWhlYWR3YXk7CivngrrmraQgPiBmb3JcLXRoaXNcLXJlYXNvbjsKK+W7oOWPsiA+IGZhY3RvcnlcLWhpc3Rvcnk7CivlhYnno4EgPiBtYWduZXRvXC1vcHRpY2FsOwor6ZqY5Y+jID4gXChtb3VudGFpblwpXC1wYXNzOwor57ay5Z2AID4gXChpbnRlcm5ldFwpXC1zaXRlOwor55Wr6Z2iID4gXChwaWN0dXJlXClcLWZyYW1lOwor6I+c5ZywID4gdmVnZXRhYmxlXC1maWVsZDsKK+eVnOmhniA+IGRvbWVzdGljXC1hbmltYWw7CivmirHppIogPiBhZG9wdFwtXChhXC1jaGlsZFwpOwor5Z+O5qiTID4gY2l0eVwtZ2F0ZVwtdG93ZXI7CivmjqHnqK4gPiBzZWVkXC1jb2xsZWN0aW5nOwor6Iqx55m9ID4gZ3JpenpsZWRcLVwoaGFpclwpOwor5bGN6auUID4gXChsaWZlbGVzc1wpXC1ib2R5Owor5ZyW57C9ID4gXChjb21wdXRlclwpXC1pY29uOwor5be05pybID4gbG9va1wtZm9yd2FyZFwtdG87CivlsaTpm7IgPiBzdHJhdHVzXC1cKGNsb3VkXCk7CivnsYznorwgPiBiYXJnYWluaW5nXC1jaGlwOwor6ZmN5YO5ID4gcHJpY2VcLXJlZHVjdGlvbjsKK+aomeaogSA+IFwobWFya2luZ1wpXC1zdGFrZTsKK+mWieacgyA+IGNsb3NlXC1hXC1tZWV0aW5nOwor57SU5bGsID4gcHVyZVwtYW5kXC1zaW1wbGU7CivlhYnmpq4gPiBob25vclwtYW5kXC1nbG9yeTsKK+i+puWtuCA+IHRvXC1ydW5cLWFcLXNjaG9vbDsKK+aomeadhiA+IHN1cnZleW9yJydzXC1wb2xlOwor5bmj5Yi2ID4gY3VycmVuY3lcLXN5c3RlbTsKK+WgseWIsCA+IHJlcG9ydFwtZm9yXC1kdXR5Owor5bm05Lu9ID4gcGFydGljdWxhclwteWVhcjsKK+WfuuWcsCA+IFwobWlsaXRhcnlcKVwtYmFzZTsKK+WFieaYjiA+IGJyaWdodFwtXChmdXR1cmVcKTsKK+S/nemHiyA+IHJlbGVhc2VcLW9uXC1iYWlsOwor5bCE6aC7ID4gcmFkaW9cLWZyZXF1ZW5jeTsKK+mspeeIrSA+IHN0cnVnZ2xlXC1cKHdpdGhcKTsKK+ijoeaguSA+IFwocm9uYWxkXClcLXJlYWdhbjsKK+aKl+ihoSA+IGNvbnRlbmRcLWFnYWluc3Q7CivntJrliKUgPiBcKG1pbGl0YXJ5XClcLXJhbms7CivnrYboqqQgPiBhXC1zbGlwXC1vZlwtYVwtcGVuOwor5YWr5a+2ID4gZWlnaHRcLXRyZWFzdXJlczsKK+eZvuW5tCA+IGFcLWh1bmRyZWRcLXllYXJzOwor5pGY5YCfID4gdG9cLWJvcnJvd1wtbW9uZXk7CivlnJbmqJkgPiBcKGNvbXB1dGVyXClcLWljb247CivplbflrpggPiBzZW5pb3JcLW9mZmljaWFsOwor5YWl5aKDID4gZW50ZXJcLWFcLWNvdW50cnk7CivlhZLlqrMgPiBkYXVnaHRlclwtaW5cLWxhdzsKK+iHgue0lyA+IFwoYmxhY2tcKVwtYXJtYmFuZDsKK+i7jeagoSA+IG1pbGl0YXJ5XC1zY2hvb2w7CivmioroiLUgPiBob2xkXC10aGVcLXJ1ZGRlcjsKK+iiq+aNlSA+IGJlXC11bmRlclwtYXJyZXN0Owor6aaW6ZW3ID4gc2VuaW9yXC1vZmZpY2lhbDsKK+eZvuWNgSA+IGFcLWh1bmRyZWRcLW9yXC1zbzsKK+WdkOWlvSA+IHRvXC1zaXRcLXByb3Blcmx5Owor55Wc55SfID4gZG9tZXN0aWNcLWFuaW1hbDsKK+mMpumbniA+IGdvbGRlblwtcGhlYXNhbnQ7Civoh6rmrrogPiB0b1wta2lsbFwtb25lc2VsZjsKK+mrmOaYgiA+IGluXC1oaWdoXC1zcGlyaXRzOwor56m/6YGOID4gdG9cLXBhc3NcLXRocm91Z2g7CivlgpnmiLAgPiBwcmVwYXJlXC1mb3JcLXdhcjsKK+Wuiei6qyA+IG1ha2VcLW9uZScnc1wtaG9tZTsKK+a4uOiqqiA+IGRydW1cLXVwXC1zdXBwb3J0Owor6Iez5pa8ID4gZ29cLXNvXC1mYXJcLWFzXC10bzsKK+eUn+eJqSA+IGxpdmluZ1wtY3JlYXR1cmU7CivmiLbnsY0gPiBjZW5zdXNcLXJlZ2lzdGVyOwor5qCh6IiNID4gc2Nob29sXC1idWlsZGluZzsKK+WWhOiJryA+IGdvb2RcLWFuZFwtaG9uZXN0Owor6LuN5YKZID4gXChtaWxpdGFyeVwpXC1hcm1zOwor6aaW6IWmID4gaGVhZFwtXChvZlwtc3RhdGVcKTsKK+WuieiRrCA+IGJ1cnlcLVwodGhlXC1kZWFkXCk7CivmpbXlipsgPiBkb1wtYXRcLWFsbFwtY29zdHM7Civot5HmraUgPiB0b1wtd2Fsa1wtcXVpY2tseTsKK+iytuipniA+IGRlcm9nYXRvcnlcLXRlcm07CivkupLpgKMgPiBpbnRlcmNvbm5lY3Rpb247CivmgrLps7QgPiB1dHRlclwtc2FkXC1jYWxsczsKK+a7v+aEjyA+IHRvXC1iZVwtc2F0aXNmaWVkOwor5rW36YGLID4gc2hpcHBpbmdcLWJ5XC1zZWE7CivnlZnlrbggPiB0b1wtc3R1ZHlcLWFicm9hZDsKK+S+v+ainSA+IFwoaW5mb3JtYWxcKVwtbm90ZTsKK+eUmuaIliA+IHNvXC1tdWNoXC1zb1wtdGhhdDsKK+WxseWzsCA+IFwobW91bnRhaW5cKVwtcGVhazsKK+a6q+aflCA+IGdlbnRsZVwtYW5kXC1zb2Z0Owor6auY5LitID4gaGlnaFwtYW5kXC1taWRkbGU7Civog4Pnl4UgPiBzdG9tYWNoXC10cm91YmxlOwor5ZCM6b2hID4gb2ZcLXRoZVwtc2FtZVwtYWdlOwor5ZC46Z+zID4gc291bmRcLWFic29yYmluZzsKK+m6u+mGiSA+IHRvXC1hbmFlc3RoZXRpemU7CivmipXlpZQgPiB0b1wtc2Vla1wtc2hlbHRlcjsKK+S+i+acgyA+IHJlZ3VsYXJcLW1lZXRpbmc7CivppIXogqUgPiBjYWtlXC1mZXJ0aWxpemVyOwor5pq06ZuoID4gdG9ycmVudGlhbFwtcmFpbjsKK+S+v+WutCA+IGluZm9ybWFsXC1kaW5uZXI7CivkuIrov7AgPiBhYm92ZVwtbWVudGlvbmVkOwor5a+m5b2IID4gbGl2ZVwtYW1tdW5pdGlvbjsKK+eUouWAvCA+IHZhbHVlXC1vZlwtb3V0cHV0Owor56Wd6LOAID4gdG9cLWNvbmdyYXR1bGF0ZTsKK+S7peeCuiA+IGNvbnNpZGVyXC1cKHRoYXRcKTsKK+aguOW9iCA+IG51Y2xlYXJcLXdhcmhlYWQ7CivkuIroqrIgPiB0b1wtYXR0ZW5kXC1jbGFzczsKK+espuWQiCA+IGluXC1rZWVwaW5nXC13aXRoOwor5oqA5YCGID4gdHJpY2t5XC1tYW5ldXZlcjsKK+azsOiqniA+IHRoYWlcLVwobGFuZ3VhZ2VcKTsKK+WvteWjniA+IHNwb2lsXC1cKGFcLWNoaWxkXCk7CivkuqTnlYwgPiBjb21tb25cLWJvdW5kYXJ5Owor5LiJ6JCsID4gdGhpcnR5XC10aG91c2FuZDsKK+iyqOa6kCA+IHN1cHBseVwtb2ZcLWdvb2RzOwor56qX5biYID4gd2luZG93XC1jdXJ0YWluczsKK+acn+elqCA+IHByb21pc3NvcnlcLW5vdGU7Civlj6Poqp4gPiBzcG9rZW5cLWxhbmd1YWdlOwor56eB54efID4gcHJpdmF0ZWx5XC1vd25lZDsKK+WvkuWBhyA+IHdpbnRlclwtdmFjYXRpb247Civlk4DmrYwgPiBhXC1tb3VybmZ1bFwtc29uZzsKK+eJvemAoyA+IFwoYmVcKVwtaW1wbGljYXRlZDsKK+aAp+ihjCA+IHNleHVhbFwtYWN0aXZpdHk7Civlrbjlo6sgPiBiYWNoZWxvclwtZGVncmVlOwor6LKg5pOUID4gXChiZWFyXC1hXClcLWJ1cmRlbjsKK+S4gOenmCA+IGZpcnN0XC1zZWNyZXRhcnk7Civol6Xnk7YgPiBtZWRpY2luZVwtYm90dGxlOwor5oWa5oSnID4gXCh0b1wtYmVcKVwtYXNoYW1lZDsKK+S6uuaJjSA+IHRhbGVudGVkXC1wZXJzb247CivkuI3nlJggPiB1bnJlY29uY2lsZWRcLXRvOwor54+t5a2QID4gb3JnYW5pemVkXC1ncm91cDsKK+avj+malCA+IGF0XC1pbnRlcnZhbHNcLW9mOwor5oSb5oi0ID4gbG92ZVwtYW5kXC1lc3RlZW07CivmhJvmiIAgPiBiZVwtaW5cLWxvdmVcLXdpdGg7Civmna3lt54gPiBoYW5nemhvdVwtXChjaXR5XCk7CivllY/kuJYgPiB0b1wtYmVcLXB1Ymxpc2hlZDsKK+aCsuazoyA+IHdlZXBcLXdpdGhcLWdyaWVmOwor5rOV55CGID4gbGVnYWxcLXByaW5jaXBsZTsKK+enqeW6jyA+IG9yZGVyXC1cKG9yZGVybHlcKTsKK+aUv+m7qCA+IHBvbGl0aWNhbFwtcGFydHk7CivlkI3niYcgPiBcKGJ1c2luZXNzXClcLWNhcmQ7Civml4XosrsgPiB0cmF2ZWxcLWV4cGVuc2VzOwor6LKh5ZyYID4gZmluYW5jaWFsXC1ncm91cDsKK+aymeefsyA+IHNhbmRcLWFuZFwtc3RvbmVzOwor56aB5p6cID4gZm9yYmlkZGVuXC1mcnVpdDsKK+mDtemBniA+IHRvXC1zZW5kXC1ieVwtbWFpbDsKK+aekOWHuiA+IHRvXC1zZXBlcmF0ZVwtb3V0Owor5aWU6KWyID4gbG9uZ1wtcmFuZ2VcLXJhaWQ7Civmnb/liLcgPiBzY3J1YmJpbmdcLWJydXNoOwor5pyN5b6eID4gb2JleVwtXChhblwtb3JkZXJcKTsKK+aWveihjCA+IHRvXC1wdXRcLWluXC1wbGFjZTsKK+e9sOasviA+IFwoaW1wb3NlXC1hXClcLWZpbmU7Civpm4zpm4QgPiBtYWxlXC1hbmRcLWZlbWFsZTsKK+mCiumfsyA+IGxhdGVyYWxcLVwoc291bmRcKTsKK+avjeiqniA+IG5hdGl2ZVwtbGFuZ3VhZ2U7Civmr43opqogPiBtb3RoZXJcLVwoZm9ybWFsXCk7Civms7DmlocgPiB0aGFpXC1cKGxhbmd1YWdlXCk7Civno4Hnm6QgPiBcKGNvbXB1dGVyXClcLWRpc2s7CivlqrPlqaYgPiBkYXVnaHRlclwtaW5cLWxhdzsKK+ekpualrSA+IG1pbmluZ1wtaW5kdXN0cnk7CivmtYHlpLEgPiBiZVwtZHJhaW5lZFwtYXdheTsKK+W8lei1tyA+IHRvXC1naXZlXC1yaXNlXC10bzsKK/CjjrQgPiBzdHVtcFwtb2ZcLWFcLXRyZWU7CivorYnniakgPiBleGhpYml0XC1cKGxlZ2FsXCk7CivnuKvoo5wgPiBkYXJuXC1cKGNsb3RoaW5nXCk7Civnt6jpgbggPiBzZWxlY3RcLWFuZFwtZWRpdDsKK+S4iuWtuCA+IHRvXC1nb1wtdG9cLXNjaG9vbDsKK+mgu+W4tiA+IGZyZXF1ZW5jeVwtcmFuZ2U7Civluq3plbcgPiBwcmVzaWRpbmdcLWp1ZGdlOwor5pS/6KaLID4gcG9saXRpY2FsXC12aWV3czsKK+aCsuWYhiA+IHNpZ2hcLW1vdXJuZnVsbHk7CivpoLvlr6wgPiBmcmVxdWVuY3lcLXJhbmdlOwor5Y2K55SfID4gaGFsZlwtYVwtbGlmZXRpbWU7CivljZrniakgPiBuYXR1cmFsXC1zY2llbmNlOwor6YO156WoID4gXChwb3N0YWdlXClcLXN0YW1wOwor5oGw5aW9ID4gYXNcLWl0XC10dXJuc1wtb3V0Owor5rCj5rqrID4gYWlyXC10ZW1wZXJhdHVyZTsKK+efruiDliA+IHNob3J0XC1hbmRcLXN0b3V0Owor6Kqe57O7ID4gbGFuZ3VhZ2VcLXN5c3RlbTsKK+iuiuW9oiA+IGJlXC1vdXRcLW9mXC1zaGFwZTsKK+WNl+a1tyA+IHNvdXRoXC1jaGluYVwtc2VhOwor576O5YWDID4gYW1lcmljYW5cLWRvbGxhcjsKK+S4luS6uiA+IFwoY29tbW9uXClcLXBlb3BsZTsKK+WQjeWWriA+IGxpc3RcLVwob2ZcLW5hbWVzXCk7Civpm7vno4EgPiBlbGVjdHJvbWFnbmV0aWM7CivmsJHmrIogPiBjaXZpbFwtbGliZXJ0aWVzOwor5pOa6KqqID4gaXRcLWlzXC1zYWlkXC10aGF0Owor5Y6f5oCnID4gb3JpZ2luYWxcLW5hdHVyZTsKK+aVuOeZviA+IHNldmVyYWxcLWh1bmRyZWQ7Civmk43oqrIgPiBtaWxpdGFyeVwtZHJpbGw7CivljZTmnIMgPiBhblwtYXNzb2NpYXRpb247CivmlofniakgPiBjdWx0dXJhbFwtcmVsaWM7CivpgJroqIogPiBjb21tdW5pY2F0aW9uczsKK+WNseaIvyA+IGRlY3JlcGl0XC1ob3VzZTsKK+eJueW3pSA+IHNlY3JldFwtc2VydmljZTsKK+mbu+eHiCA+IGVsZWN0cmljXC1saWdodDsKK+WMl+altSA+IHRoZVwtbm9ydGhcLXBvbGU7CivpoJDku5ggPiBwYXlcLWluXC1hZHZhbmNlOwor5q665rCjID4gbXVyZGVyb3VzXC1sb29rOwor56OB5aC0ID4gbWFnbmV0aWNcLWZpZWxkOwor54mZ5bqKID4gYWx2ZW9sYXJcLXJpZGdlOwor5Y+D5YqgID4gdG9cLXBhcnRpY2lwYXRlOwor5rCR5oSPID4gcHVibGljXC1vcGluaW9uOwor5aa55aa5ID4geW91bmdlclwtc2lzdGVyOwor5b6A5pelID4gaW5cLWZvcm1lclwtZGF5czsKK+WLmOa4rCA+IHRvXC1pbnZlc3RpZ2F0ZTsKK+WGsOmHiyA+IFwob2ZcLW1pc2dpdmluZ3M7CivlpKfmqJMgPiBsYXJnZVwtYnVpbGRpbmc7CivmgKrkurogPiBzdHJhbmdlXC1wZXJzb247Civnh5/mpa0gPiB0b1wtZG9cLWJ1c2luZXNzOwor5aGR6IagID4gcGxhc3RpY1wtY2VtZW50Owor5pma5LiKID4gaW5cLXRoZVwtZXZlbmluZzsKK+aVo+atpSA+IHRvXC10YWtlXC1hXC13YWxrOwor6K2Y5YilID4gdG9cLWRpc3Rpbmd1aXNoOwor5aSx5o6nID4gb3V0XC1vZlwtY29udHJvbDsKK+aVuOaciCA+IHNldmVyYWxcLW1vbnRoczsKK+W+gOW+qSA+IHRvXC1yZWNpcHJvY2F0ZTsKK+mdtuWgtCA+IHNob290aW5nXC1yYW5nZTsKK+ezlumGiyA+IHN3ZWV0XC1hbmRcLXNvdXI7CivluLPomZ8gPiBhY2NvdW50XC1udW1iZXI7CivniKrlrZAgPiBcKGFuaW1hbCcnc1wpXC1wYXc7CivliKXnrqEgPiBub1wtbWF0dGVyXC1cKHdobzsKK+WIqOeoiyA+IHBsYW5pbmdcLWxlbmd0aDsKK+e0oOiPnCA+IHZlZ2V0YWJsZVwtZGlzaDsKK+mWi+i7iiA+IHRvXC1kcml2ZVwtYVwtY2FyOwor54WZ54GrID4gc21va2VcLWFuZFwtZmlyZTsKK+i9iemBiyA+IHRyYW5zcG9ydGF0aW9uOwor5beh6K2mID4gcG9saWNlXC1vZmZpY2VyOwor5pS+5pigID4gc2hvd1wtXChhXC1tb3ZpZVwpOwor6KO96YCgID4gdG9cLW1hbnVmYWN0dXJlOwor5Yip546HID4gaW50ZXJlc3RcLXJhdGVzOwor6Ly/6KuWID4gcHVibGljXC1vcGluaW9uOwor5byx5bCPID4gc21hbGxcLWFuZFwtd2VhazsKK+aVneWxoyA+IHdvcm5cLW91dFwtc2hvZXM7Civnn67lrZAgPiBhXC1zaG9ydFwtcGVyc29uOwor6YCf5rG6ID4gcXVpY2tcLWRlY2lzaW9uOwor6Zec56iFID4gXChjdXN0b21zXClcLWR1dHk7Civnmb3omIcgPiBjb21tb25cLXBlcmlsbGE7Civmr5TlgLwgPiBzcGVjaWZpY1wtdmFsdWU7Civln7rnnaMgPiBqZXN1c1wtXChjaHJpc3RcKTsKK+aOoui3ryA+IHRvXC1maW5kXC1hXC1wYXRoOwor6YGZ5o6nID4gcmVtb3RlXC1jb250cm9sOwor6YGZ5oSfID4gcmVtb3RlXC1zZW5zaW5nOwor55m96ImyID4gd2hpdGVcLVwoY29sb3VyXCk7CivmkqXmrL4gPiBhbGxvY2F0ZVwtZnVuZHM7Civlu6Dlt6UgPiBmYWN0b3J5XC13b3JrZXI7CivmraPlpb0gPiBqdXN0XC1cKGluXC10aW1lXCk7CivmjqLoppYgPiBwYXlcLWFcLXZpc2l0XC10bzsKK+WIpOaYjiA+IHRvXC1kaXN0aW5ndWlzaDsKK+W8leWSjiA+IHRha2VcLXRoZVwtYmxhbWU7Civlo4HloLEgPiB3YWxsXC1uZXdzcGFwZXI7CivmlLnlloQgPiB0b1wtbWFrZVwtYmV0dGVyOwor6YCg5oiQID4gdG9cLWJyaW5nXC1hYm91dDsKK+W5q+acgyA+IHNlY3JldFwtc29jaWV0eTsKK+aTjeW/gyA+IHRvXC13b3JyeVwtYWJvdXQ7Civnmb3nqK4gPiB0aGVcLXdoaXRlXC1yYWNlOwor6KOc57y6ID4gZmlsbFwtYVwtdmFjYW5jeTsKK+ilv+atkCA+IHdlc3Rlcm5cLWV1cm9wZTsKK+mAleW6rSA+IHZlcnlcLWRpZmZlcmVudDsKK+ijnOe2tCA+IG1lbmRcLVwoY2xvdGhlc1wpOwor6ZuG5LitID4gdG9cLWNvbmNlbnRyYXRlOwor6YGy5YiwID4gdG9cLWFycml2ZVwtbGF0ZTsKK+WgseW+qSA+IG1ha2VcLXJlcHJpc2FsczsKK+ecn+aDhSA+IHJlYWxcLXNpdHVhdGlvbjsKK+W3qOa1gSA+IHN0cm9uZ1wtY3VycmVudDsKK+mAgOWtuCA+IHRvXC1xdWl0XC1zY2hvb2w7Civlu4nlg7kgPiBjaGVhcGx5XC1wcmljZWQ7Civnl4XomZ8gPiBzaWNrXC1wZXJzb25uZWw7CivlnJjntZAgPiBcKGhvbGRcLWFcKVwtcmFsbHk7CivlnI3nuZ4gPiByZXZvbHZlXC1hcm91bmQ7Civov5HlubQgPiByZWNlbnRcLXllYXJcKHNcKTsKK+WAkumWiSA+IHRvXC1nb1wtYmFua3J1cHQ7CivlhrfmiLAgPiBcKHRoZVwpXC1jb2xkXC13YXI7Civlg7nnm64gPiBcKG1hcmtlZFwpXC1wcmljZTsKK+eXheiEiCA+IGFibm9ybWFsXC1wdWxzZTsKK+a8uOiuiiA+IGdyYWR1YWxcLWNoYW5nZTsKK+mAmuS/oSA+IHRvXC1jb21tdW5pY2F0ZTsKK+e0gOW/tSA+IHRvXC1jb21tZW1vcmF0ZTsKK+mWi+acgyA+IGhhdmVcLWFcLW1lZXRpbmc7Civlhajmma8gPiBwYW5vcmFtaWNcLXZpZXc7CivliIDlj4kgPiBrbmlmZVwtYW5kXC1mb3JrOwor5biD5bibID4gY2xvdGhcLWFuZFwtc2lsazsKK+aJvumMoiA+IHRvXC1naXZlXC1jaGFuZ2U7Civoo5zmtrIgPiBmbHVpZFwtaW5mdXNpb247Civotbfpu54gPiBzdGFydGluZ1wtcG9pbnQ7CivloLHliIYgPiBjYWxsXC10aGVcLXNjb3JlOwor5oy656uLID4gdG9cLXN0YW5kXC1lcmVjdDsKK+WFq+aIkCA+IGVpZ2h0eVwtcGVyY2VudDsKK+WFqeaJiyA+IGRvdWJsZVwtdGFjdGljczsKK+aOoeayuSA+IG9pbFwtZXh0cmFjdGlvbjsKK+i3qOi2iiA+IHRvXC1zdGVwXC1hY3Jvc3M7Civot5HpgZMgPiBhdGhsZXRpY1wtdHJhY2s7Civmj6Hmi7MgPiB0b1wtbWFrZVwtYVwtZmlzdDsKK+aPoeaJiyA+IHRvXC1zaGFrZVwtaGFuZHM7Civnsr7lubIgPiBjcmFja1wtXCh0cm9vcHNcKTsKK+mVt+W+gSA+IHRoZVwtbG9uZ1wtbWFyY2g7Civnl4Xnl5sgPiBzbGlnaHRcLWlsbG5lc3M7Civoi7Hlr7ggPiBcKGVuZ2xpc2hcKVwtaW5jaDsKK+aomeWwuiA+IHN1cnZleW9yJydzXC1yb2Q7CivlsIfou40gPiBcKGFybXlcKVwtZ2VuZXJhbDsKK+WFqeWciyA+IGJvdGhcLWNvdW50cmllczsKK+WFqOWciyA+IGVudGlyZVwtY291bnRyeTsKK+i8qeWtkCA+IGFsbFwtb25lJydzXC1saWZlOwor6ZW35Z+OID4gdGhlXC1ncmVhdFwtd2FsbDsKK+ihqOaxuiA+IGRlY2lkZVwtYnlcLXZvdGU7CivmiJDpg70gPiBjaGVuZ2R1XC1cKGNpdHlcKTsKK+mspeaZuiA+IGJhdHRsZVwtb2ZcLXdpdHM7CivlhavljYMgPiBlaWdodFwtdGhvdXNhbmQ7Civnl4XmrbcgPiBtZWRpY2FsXC1yZWNvcmQ7CivkvLjplosgPiB0b1wtc3RyZXRjaFwtb3V0Owor5ryU56S6ID4gdG9cLWRlbW9uc3RyYXRlOwor55Wi55SfID4gYWxsXC1vbmUnJ3NcLWxpZmU7Civmj6HliKUgPiB0b1wtc2hha2VcLWhhbmRzOwor5YKz5pKtID4gdG9cLWRpc3NlbWluYXRlOwor5YWl5LyNID4gZW50ZXJcLXRoZVwtYXJteTsKK+mmlumDvSA+IGNhcGl0YWxcLVwoY2l0eVwpOwor5r2U5reoID4gY2xlYW5zZVwtXChzaW5zXCk7CivoiIzmoLkgPiBiYWNrXC1vZlwtdG9uZ3VlOwor5YKN5pmaID4gaW5cLXRoZVwtZXZlbmluZzsKK+ihjOaUvyA+IGFkbWluaXN0cmF0aW9uOwor5bCP6IGyID4gaW5cLWFcLWxvd1wtdm9pY2U7Civnr6HmlLkgPiB0b1wtdGFtcGVyXC13aXRoOwor5oiq6IezID4gdXBcLXRvXC1cKGFcLXRpbWVcKTsKK+i1t+iNiSA+IGRyYWZ0XC1cKGFcLWJpbGxcKTsKK+aMqOaJkyA+IHRha2VcLWFcLWJlYXRpbmc7CivlsaTnkIYgPiBzdHJhdGlmaWNhdGlvbjsKK+eQg+meiyA+IGF0aGxldGljXC1zaG9lczsKK+mNi+iyvCA+IGZyaWVkXC1kdW1wbGluZzsKK+aOiOWRvSA+IHRvXC1naXZlXC1vcmRlcnM7CivmoLjog70gPiBudWNsZWFyXC1lbmVyZ3k7Civmta7pu54gPiBmbG9hdGluZ1wtcG9pbnQ7CivnlJ/ngasgPiB0b1wtbWFrZVwtYVwtZmlyZTsKK+iHquW+niA+IHNpbmNlXC1cKGFcLXRpbWVcKTsKK+WvtuefsyA+IHByZWNpb3VzXC1zdG9uZTsKK+ajhOaruyA+IGFiYW5kb25lZFwtYmFieTsKK+eUouasiiA+IHByb3BlcnR5XC1yaWdodDsKK+m9kui8qiA+IFwobWFjaGluZVwpXC1nZWFyOwor5L6154qvID4gdG9cLWluZnJpbmdlXC1vbjsKK+ihgOWjkyA+IGJsb29kXC1wcmVzc3VyZTsKK+eXheWToSA+IHNpY2tcLXBlcnNvbm5lbDsKK+a4m+iCpSA+IHRvXC1sb3NlXC13ZWlnaHQ7Civku6PooaggPiByZXByZXNlbnRhdGl2ZTsKK+eVq+WxlSA+IGFydFwtZXhoaWJpdGlvbjsKK+eUn+aViCA+IHRvXC10YWtlXC1lZmZlY3Q7CivmiY3msKMgPiBsaXRlYXJ5XC10YWxlbnQ7CivmnJ/plpMgPiBwZXJpb2RcLW9mXC10aW1lOwor5bCI5qyEID4gc3BlY2lhbFwtY29sdW1uOwor5a2457GNID4gc2Nob29sXC1yb2xsXChzXCk7CivnpoHpo58gPiBmYXN0XC1cKG5vdFwtZWF0XCk7Civmn5DnqK4gPiBzb21lXC1raW5kXC1cKG9mXCk7CivlsIfmnIMgPiB3aWxsXCxcLWdvaW5nXC10bzsKK+ixjui1tyA+IGhvbGRcLXVwXC1cKGhpZ2hcKTsKK+WvtuabuCA+IHRyZWFzdXJlZFwtYm9vazsKK+WQg+mpmiA+IHRvXC1iZVwtc3RhcnRsZWQ7CivlsI7lvYggPiBndWlkZWRcLW1pc3NpbGU7CivmuIXniL0gPiBmcmVzaFwtYW5kXC1jb29sOwor5LqS6IGvID4gaW50ZXJjb25uZWN0ZWQ7CivllLHniYcgPiBcKHZpbnlsXClcLXJlY29yZDsKK+S6jOiAhSA+IGJvdGhcLVxbb2ZcLXRoZW1cXTsKK+aJjeWtkCA+IGdpZnRlZFwtc2Nob2xhcjsKK+S+teWusyA+IHRvXC1lbmNyb2FjaFwtb247Civlr7bluqsgPiB0cmVhc3VyZVwtaG91c2U7Civkv53llq4gPiBndWFyYW50ZWVcLXNsaXA7CivlsI/lrbggPiBwcmltYXJ5XC1zY2hvb2w7Civku5TnlZwgPiBuZXdib3JuXC1hbmltYWw7CivmnKzoibIgPiBuYXR1cmFsXC1jb2xvdXI7CivkvoblvoAgPiB0b1wtY29tZVwtYW5kXC1nbzsKK+mhjOi3iyA+IHNob3J0XC1jb21tZW50czsKK+S4jeinoyA+IG5vdFwtdW5kZXJzdGFuZDsKK+aHruaFriA+IFwoZmVlbFwpXC1hbnhpZXR5Owor5L2Z5oK4ID4gbGluZ2VyaW5nXC1mZWFyOwor5oiQ5bCxID4gYWNjb21wbGlzaG1lbnQ7Civlrrnlv40gPiB0b1wtcHV0XC11cFwtd2l0aDsKK+e9t+irliA+IGFiYW5kb25lZFwtaWRlYTsKK+aCo+iZlSA+IGFmZmxpY3RlZFwtcGFydDsKK+aetuaniyA+IGluZnJhc3RydWN0dXJlOwor56m05pKtID4gYnVuY2hcLXBsYW50aW5nOwor5oe35a2VID4gdG9cLWJlXC1wcmVnbmFudDsKK+iBt+alrSA+IGpvYlwtb2NjdXBhdGlvbjsKK+S7u+acnyA+IHRlcm1cLW9mXC1vZmZpY2U7CivkuI3oiIggPiBvdXRcLW9mXC1mYXNoaW9uOwor55CD5qOSID4gXChiYXNlYmFsbFwpXC1iYXQ7Civos4fmoLwgPiBxdWFsaWZpY2F0aW9uczsKK+adsea1tyA+IGVhc3RcLWNoaW5hXC1zZWE7CivmnbHmrZAgPiBlYXN0ZXJuXC1ldXJvcGU7Civku7vmhpEgPiBub1wtbWF0dGVyXC13aGF0Owor5LuK5pydID4gYXRcLXRoZVwtcHJlc2VudDsKK+S9nOWTgSA+IHdvcmtzXC1cKG9mXC1hcnRcKTsKK+aGi+aCtiA+IGZlZWxcLW9wcHJlc3NlZDsKK+mjvOanvSA+IGZlZWRpbmdcLXRyb3VnaDsKK+itpui7iiA+IHBvbGljZVwtdmVoaWNsZTsKK+WvkuWGtyA+IGNvbGRcLVwoY2xpbWF0ZVwpOwor5a6J5aW9ID4gc2FmZVwtYW5kXC1zb3VuZDsKK+a2suaZtiA+IGxpcXVpZFwtY3J5c3RhbDsKK+WPg+ingCA+IHRvXC1sb29rXC1hcm91bmQ7Civlj6/og70gPiBtaWdodFwtXChoYXBwZW5cKTsKK+mmluWFiCA+IGZpcnN0XC1cKG9mXC1hbGxcKTsKK+a2suaFiyA+IGxpcXVpZFwtXChzdGF0ZVwpOwor5a2V5ammID4gcHJlZ25hbnRcLXdvbWFuOwor5LmY5rOVID4gbXVsdGlwbGljYXRpb247Civlrprlg7kgPiB0b1wtc2V0XC1hXC1wcmljZTsKK+aal+eusSA+IGNhbWVyYVwtYmVsbG93czsKK+a4m+WIkSA+IHJlZHVjZVwtcGVuYWx0eTsKK+S4gOeUnyA+IGFsbFwtb25lJydzXC1saWZlOwor5Lit5q2QID4gY2VudHJhbFwtZXVyb3BlOwor54qv572qID4gXChjb21taXRcKVwtY3JpbWU7Civku73lhZIgPiBkZWdyZWVcLFwtZXh0ZW50Owor54m56ImyID4gY2hhcmFjdGVyaXN0aWM7CivkuK3mlrcgPiB0b1wtZGlzY29udGludWU7Civnp5XlrZAgPiBibGlnaHRlZFwtZ3JhaW47Civnj77ku7sgPiBhdFwtdGhlXC1wcmVzZW50Owor5pyJ5b6FID4gbm90XC15ZXRcLVwoZG9uZVwpOwor6aGM5p2QID4gc3ViamVjdFwtbWF0dGVyOwor56Sm5rOJID4gbWluZXJhbFwtc3ByaW5nOwor5q+b6KGjID4gXCh3b29sXClcLXN3ZWF0ZXI7Civosqzku7sgPiByZXNwb25zaWJpbGl0eTsKK+WNiuiBtyA+IHBhcnRcLXRpbWVcLXdvcms7Civpoa/lvpcgPiBhcHBlYXJcLVwodG9cLWJlXCk7CivnoJToo70gPiB0b1wtbWFudWZhY3R1cmU7CivkuI3lv40gPiBjYW5ub3RcLWJlYXJcLXRvOwor5aq95ZKqID4gbXVtbXlcLVwobW90aGVyXCk7Civms6LmgakgPiBib25uXC1cKGdlcm1hbnlcKTsKK+aVl+iotCA+IGxvc2VcLWFcLWxhd3N1aXQ7Civlo73ooaMgPiBidXJpYWxcLWNsb3RoZXM7Civmk7rpkJggPiBwZW5kdWx1bVwtY2xvY2s7CivljJfnt68gPiBub3J0aFwtbGF0aXR1ZGU7Civlj4rmoLwgPiB0b1wtcGFzc1wtYVwtdGVzdDsKK+azleW6rSA+IGNvdXJ0XC1cKG9mXC1sYXdcKTsKK+mAmemhniA+IHRoaXNcLWtpbmRcLVwob2ZcKTsKK+S4u+S/riA+IFwoc2Nob29sXClcLW1ham9yOwor6K6K5oiQID4gdG9cLWNoYW5nZVwtaW50bzsKK+S4jeWQiCA+IG5vdFwtY29uZm9ybVwtdG87CivmlpHnq7kgPiBtb3R0bGVkXC1iYW1ib287CivkuI3lj4ogPiBub3RcLWFzXC1nb29kXC1hczsKK+WIhumhniA+IGNsYXNzaWZpY2F0aW9uOwor6YeN5bu6ID4gcmVjb25zdHJ1Y3Rpb247Civoq4vnnIsgPiBwbGVhc2VcLXNlZVwtXC5cLlwuOwor6aGe5YilID4gY2xhc3NpZmljYXRpb247CivmsKvmsKMgPiBoeWRyb2dlblwtXChnYXNcKTsKK+aVuOeoriA+IG51bWVyb3VzXC10eXBlczsKK+egtOeUoiA+IHRvXC1nb1wtYmFua3J1cHQ7CivlhrDpu54gPiBmcmVlemluZ1wtcG9pbnQ7Civoj6/oo5QgPiBldGhuaWNcLWNoaW5lc2U7CivkuI3ku4EgPiBub3RcLWJlbmV2b2xlbnQ7CivmlLbogb0gPiB0b1wtbGlzdGVuXC1cKHRvXCk7Civoj7Loj7IgPiB2ZXJ5XC1mcmFncmFudDsKK+aYguaPmiA+IGhpZ2hcLXNwaXJpdGVkOwor5pep5pmoID4gZWFybHlcLW1vcm5pbmc7Civno4HluLYgPiBtYWduZXRpY1wtdGFwZTsKK+ino+iqvyA+IHRvXC1kZW1vZHVsYXRlOwor5YyX5rW3ID4gdGhlXC1ub3J0aFwtc2VhOwor6JaE5YipID4gc21hbGxcLXByb2ZpdHM7CivmmZrloLEgPiBldmVuaW5nXC1wYXBlcjsKK+aYn+W6pyA+IGNvbnN0ZWxsYXRpb247CivlhrDpnosgPiBza2F0aW5nXC1ib290czsKK+W7oOe1siA+IGZpbGF0dXJlXC1zaWxrOwor55+b55u+ID4gY29udHJhZGljdG9yeTsKK+WHuuizoyA+IHRvXC1zZWxsXC1cKG9mZlwpOwor5Yiw6JmVID4gaW5cLWFsbFwtcGxhY2VzOwor5Y+k5LujID4gYW5jaWVudFwtdGltZXM7CivmlrDmnIggPiBjcmVzY2VudFwtbW9vbjsKK+WNs+WwhyA+IG9uXC10aGVcLWV2ZVwtb2Y7CivljZHlvq4gPiBwZXR0eVwtYW5kXC1sb3c7CivljbHlrrMgPiB0b1wtamVvcGFyZGl6ZTsKK+WIqOiKsSA+IHdvb2RcLXNoYXZpbmdzOwor6I6o6I+qID4gYmxhY2tcLWhlbmJhbmU7Civoqr/mn6UgPiBpbnZlc3RpZ2F0aW9uOwor57aB6IW/ID4gbGVnXC13cmFwcGluZ3M7CivliJfoiIkgPiBcKG1ha2VcLWFcKVwtbGlzdDsKK+mBqeeUqCA+IGJlXC1hcHBsaWNhYmxlOwor5pGY6KiYID4gdG9cLXRha2VcLW5vdGVzOwor5YWD6aaWID4gaGVhZFwtb2ZcLXN0YXRlOwor5pa55byPID4gd2F5XC1cKG9mXC1saWZlXCk7Civml6XlpJwgPiBkYXlcLWFuZFwtbmlnaHQ7Civoip3pursgPiBzZXNhbWVcLVwoc2VlZFwpOwor54mM5Z2KID4gbWVtb3JpYWxcLWFyY2g7CivliY3nlJ8gPiBwcmVcLWV4aXN0ZW5jZTsKK+aYh+WAvCA+IHJpc2VcLWluXC12YWx1ZTsKK+exs+mjryA+IFwoY29va2VkXClcLXJpY2U7CivovYnpgZMgPiBtYWtlXC1hXC1kZXRvdXI7CivplbfpgJQgPiBsb25nXC1kaXN0YW5jZTsKK+aXpeWJjSA+IHRoZVwtb3RoZXJcLWRheTsKK+WinOavgCA+IFwocGxhbmVcKVwtY3Jhc2g7Civpm5nmiYsgPiBwYWlyXC1vZlwtaGFuZHM7CivljZfkup4gPiBzb3V0aGVyblwtYXNpYTsKK+WIiueZuyA+IGNhcnJ5XC1hXC1zdG9yeTsKK+iqh+W8tSA+IHRvXC1leGFnZ2VyYXRlOwor6Zuj5b+YID4gdW5mb3JnZXR0YWJsZTsKK+aXqeS4iiA+IGVhcmx5XC1tb3JuaW5nOwor5aSq5aSqID4gbWFycmllZFwtd29tYW47CivmkqXnlKggPiBhcHByb3ByaWF0aW9uOwor5aKD5rOBID4gY2lyY3Vtc3RhbmNlczsKK+awkeS6iyA+IGNpdmlsXC1tYXR0ZXJzOwor5aWz5L2jID4gXChmZW1hbGVcKVwtbWFpZDsKK+WLmOWvnyA+IHJlY29ubmFpc2FuY2U7CivnsYzpm4YgPiBjb2xsZWN0XC1tb25leTsKK+aTjea8lCA+IGRlbW9uc3RyYXRpb247Civlubvnh4ggPiBsYXRlcm5cLXNsaWRlczsKK+WKoOW/qyA+IHRvXC1hY2NlbGVyYXRlOwor5Yaw57OWID4gY3J5c3RhbFwtc3VnYXI7CivlnIvpmpsgPiBpbnRlcm5hdGlvbmFsOwor6ayl6ZueID4gY29ja1wtZmlnaHRpbmc7CivlvaLli6IgPiBjaXJjdW1zdGFuY2VzOwor6YGO5pmCID4gb2xkXC1mYXNoaW9uZWQ7CivpmqjmhI8gPiBhc1wtb25lXC13aXNoZXM7CivlpLHliKkgPiBzdWZmZXJcLWRlZmVhdDsKK+aQjeiAlyA+IHdlYXJcLWFuZFwtdGVhcjsKK+ebuOeVtiA+IGVxdWl2YWxlbnRcLXRvOwor6YCQ5q2lID4gcHJvZ3Jlc3NpdmVseTsKK+W5vuasoSA+IHNldmVyYWxcLXRpbWVzOwor5beo57SwID4gYmlnXC1hbmRcLXNtYWxsOwor5bm+5qijID4gc2V2ZXJhbFwta2luZHM7CivlpKfkvb8gPiBhblwtYW1iYXNzYWRvcjsKK+e3qOWvqSA+IHJlYWRcLWFuZFwtZWRpdDsKK+W8t+WMliA+IHRvXC1zdHJlbmd0aGVuOwor6YG/5a2VID4gY29udHJhY2VwdGlvbjsKK+Wkp+S6iyA+IGFcLW1ham9yXC1ldmVudDsKK+aVmeWPiyA+IGNodXJjaFwtbWVtYmVyOwor6YCf5pWIID4gcXVpY2tcLXJlc3VsdHM7CivliKnmlrwgPiBiZVwtYmVuZWZpY2lhbDsKK+aVl+WMlyA+IHN1ZmZlclwtZGVmZWF0Owor5Yid5pyfID4gaW5pdGlhbFwtc3RhZ2U7CivoqaLllY8gPiBpbnF1aXJlXC1hYm91dDsKK+atu+WIkSA+IGRlYXRoXC1wZW5hbHR5Owor5YW155eeID4gYXJteVwtcmlmZnJhZmY7Civpq5Tph40gPiBcKGJvZHlcKVwtd2VpZ2h0Owor55m956CSID4gd2hpdGVcLWFyc2VuaWM7Civnm7jmnrYgPiBwaWN0dXJlXC1mcmFtZTsKK+WeguebtCA+IHBlcnBlbmRpY3VsYXI7CivlooPlnLAgPiBjaXJjdW1zdGFuY2VzOwor5YW154efID4gbWlsaXRhcnlcLWNhbXA7CivluILmsJEgPiBjaXR5XC1yZXNpZGVudDsKK+maqOS+vyA+IGFzXC1vbmVcLXdpc2hlczsKK+W6reWckiA+IGZsb3dlclwtZ2FyZGVuOwor6L2f54K4ID4gXChkcm9wXC1hXClcLWJvbWI7CivpgY7ljrsgPiBcKGluXC10aGVcKVwtcGFzdDsKK+iJpuiJhyA+IG5hdmFsXC12ZXNzZWxzOwor5Yaw5pyfID4gZ2xhY2lhbFwtZXBvY2g7Civpl5zmlrwgPiBwZXJ0YWluaW5nXC10bzsKK+WJm+WJmyA+IGp1c3RcLXJlY2VudGx5Owor5bug5Li7ID4gZmFjdG9yeVwtb3duZXI7Civlho3mrKEgPiBvbmVcLW1vcmVcLXRpbWU7CivmrIrlipsgPiBcKHdpZWxkXClcLXBvd2VyOwor6YCj5ZCMID4gdG9nZXRoZXJcLXdpdGg7CivnsL/nsY0gPiBhY2NvdW50XC1ib29rczsKK+apq+aOgyA+IHRvXC1zd2VlcFwtYXdheTsKK+W6puWBhyA+IGdvXC1vblwtaG9saWRheTsKK+eVsOizqiA+IGhldGVyb2dlbmVvdXM7Civou4rnq5kgPiBcKGJ1c1wpXC1zdGF0aW9uOwor5YKZ6IezID4gdG9cLXRoZVwtdXRtb3N0Owor6LeR6Z6LID4gcnVubmluZ1wtc2hvZXM7CivloLHllq4gPiB0YXhhdGlvblwtZm9ybTsKK+mRkuizniA+IHRvXC1hcHByZWNpYXRlOwor6YCZ5L2NID4gdGhpc1wtXChwZXJzb25cKTsKK+WbsOeqmCA+IGVtYmFycmFzc21lbnQ7CivpmY3kuJYgPiBjb21lXC10b1wtZWFydGg7Civkvr/po68gPiBhXC1zaW1wbGVcLW1lYWw7CivovLvmop0gPiBcKHdoZWVsXClcLXNwb2tlOwor5omT6ZaLID4gdG9cLWJyZWFrXC1vcGVuOwor55m85o+uID4gYnJpbmdcLXRvXC1iZWFyOwor6ZaL5b+DID4gdG9cLWZlZWxcLWhhcHB5Owor5a+m6amXID4gdG9cLWV4cGVyaW1lbnQ7CivovYnlvY4gPiB0dXJuXC1cKGFyb3VuZFwpOwor5qGI6aCtID4gb25cLW9uZScnc1wtZGVzazsKK+i+qOWIpSA+IGRpZmZlcmVudGlhdGU7CivmioTopbIgPiB0b1wtcGxhZ2lhcml6ZTsKK+i+puWIsCA+IHRvXC1hY2NvbXBsaXNoOwor5YWI5b6MID4gaW5cLXN1Y2Nlc3Npb247CivnlZzogqUgPiBhbmltYWxcLW1hbnVyZTsKK+aLiee+jiA+IGxhdGluXC1hbWVyaWNhOwor5qC46Zu7ID4gbnVjbGVhclwtcG93ZXI7Civotorph44gPiBjcm9zc1wtY291bnRyeTsKK+mngembnCA+IGhldGVyb2dlbmVvdXM7CivlhazlnJIgPiBhXC1wdWJsaWNcLXBhcms7Civnmb7lp5MgPiBjb21tb25cLXBlb3BsZTsKK+eBveWNgCA+IGRpc2FzdGVyXC1hcmVhOwor5qeL5oiQID4gdG9cLWNvbnN0aXR1dGU7Civkv53ol48gPiBrZWVwXC1pblwtc3RvcmU7CivnkZ7pppkgPiB3aW50ZXJcLWRhcGhuZTsKK+aLjOeoriA+IHNlZWRcLWRyZXNzaW5nOwor57GM5o6qID4gcmFpc2VcLVwobW9uZXlcKTsKK+ajhOe9riA+IHRvXC10aHJvd1wtYXdheTsKK+izo+m7niA+IHNlbGxpbmdcLXBvaW50Owor6ZaL5YiXID4gXChtYWtlXC1hXClcLWxpc3Q7CivnmKblvLEgPiB0aGluXC1hbmRcLXdlYWs7Civnmb3ljKogPiB3aGl0ZVwtYmFuZGl0czsKK+iCiemrlCA+IHBoeXNpY2FsXC1ib2R5Owor5YKZ5qGIID4gcHV0XC1vblwtcmVjb3JkOwor6ayl5b+XID4gd2lsbFwtdG9cLWZpZ2h0Owor5omB6I2zID4gaHlhY2ludGhcLWJlYW47Civnmb7lgI0gPiBhXC1odW5kcmVkZm9sZDsKK+ethuetkiA+IHBlblwtY29udGFpbmVyOwor5a+26JeNID4gc2FwcGhpcmVcLWJsdWU7Civmu7LnorMgPiBjYXJidXJpemF0aW9uOwor5rih6YGOID4gdG9cLWNyb3NzXC1vdmVyOwor5a2X6ZuGID4gY2hhcmFjdGVyXC1zZXQ7CivnqbrpgYsgPiBhaXJcLXRyYW5zcG9ydDsKK+ihqOWxpCA+IHN1cmZhY2VcLWxheWVyOwor5ZyT5ZGoID4gY2lyY3VtZmVyZW5jZTsKK+eXheWusyA+IHBsYW50XC1kaXNlYXNlOwor5ZSu6LKoID4gdG9cLXNlbGxcLWdvb2RzOwor6IiM5bCWID4gdGlwXC1vZlwtdG9uZ3VlOwor5qGI56ixID4gY291bnRlclwtc2NhbGU7CivmtojpmLIgPiBmaXJlXC1maWdodGluZzsKK+WWiee1kCA+IGFkYW0nJ3MnJ1wtYXBwbGU7Civls7blnIsgPiBpc2xhbmRcLW5hdGlvbjsKK+msp+S6iyA+IGNhdXNlXC10cm91YmxlOwor5Lqs6YO9ID4ga3lvdG9cLVwoamFwYW5cKTsKK+Wbm+WNgyA+IGZvdXJcLXRob3VzYW5kOwor55W25bm0ID4gaW5cLXRob3NlXC1kYXlzOwor6LKh6L+3ID4gbW9uZXlcLWdydWJiZXI7CivnkIbop6MgPiB0b1wtY29tcHJlaGVuZDsKK+WvhueivCA+IFwoc2VjcmV0XClcLWNvZGU7Civnr4nln44gPiBmb3J0aWZpY2F0aW9uOwor6KGb5YW1ID4gXChib2R5XClcLWd1YXJkXCk7CivnlpHllY8gPiBpbnRlcnJvZ2F0aW9uOwor5ZaJ55enID4gc2NhcmxldFwtZmV2ZXI7CivlgIvmgKcgPiBpbmRpdmlkdWFsaXR5Owor5ZWf56S6ID4gZW5saWdodGVubWVudDsKK+iHtOWHvSA+IHNlbmRcLWFcLWxldHRlcjsKK+aEj+itmCA+IGNvbnNjaW91c25lc3M7Civoga/ntaEgPiBjb21tdW5pY2F0aW9uOwor5ouc5YilID4gdGFrZVwtbGVhdmVcLW9mOwor5omB5pOUID4gY2FycnlpbmdcLXBvbGU7Civlk4DomZ8gPiBjcnlcLXBpdGVvdXNseTsKK+ahguaelyA+IGd1aWxpblwtXChjaXR5XCk7Civph5Hpu4MgPiBnb2xkZW5cLXllbGxvdzsKK+i3qOWciyA+IHRyYW5zbmF0aW9uYWw7CivmvJTlh7ogPiBcKGFjdGluZ1wpXC1wbGF5Owor5ZCD6aOvID4gdG9cLWVhdFwtYVwtbWVhbDsKK+S4jemAmiA+IGJlXC1vYnN0cnVjdGVkOwor5oiS5oyHID4gXChmaW5nZXJcKVwtcmluZzsKK+WwkeWwhyA+IG1ham9yXC1nZW5lcmFsOwor5p2c57WVID4gcHV0XC1hblwtZW5kXC10bzsKK+aal+mOliA+IGJ1aWx0XC1pblwtbG9jazsKK+aHsuaIkiA+IHRvXC1kaXNjaXBsaW5lOwor5LiL6KqyID4gY2xhc3NcLWlzXC1vdmVyOwor5LiN6KmzID4gbm90XC1pblwtZGV0YWlsOwor5Y+N6Z+/ID4gcmVwZXJjdXNzaW9uczsKK+Wuv+aAqCA+IGFuXC1vbGRcLWdydWRnZTsKK+WWruWtkCA+IGxpc3RcLW9mXC1pdGVtczsKK+iyoueNuyA+IHRvXC1jb250cmlidXRlOwor5Y+r6YaSID4gdG9cLWNhbGxcLWF3YWtlOwor576O6KGTID4gdGhlXC1maW5lXC1hcnRzOwor6IO95aSgID4gYmVcLWNhcGFibGVcLW9mOwor5a625bGsID4gZmFtaWx5XC1tZW1iZXI7CivpvLvmt7UgPiBuYXNvc2ludXNpdGlzOwor5oeC5b6XID4gdG9cLXVuZGVyc3RhbmQ7CivljYrpu54gPiB0aGVcLWxlYXN0XC1iaXQ7CivpiZvnrYYgPiBcKGxlYWRcKVwtcGVuY2lsOwor5Zau5ZCRID4gdW5kaXJlY3Rpb25hbDsKK+WPl+izhCA+IGFjY2VwdFwtYnJpYmVzOwor5L6L5YGHID4gbGVnYWxcLWhvbGlkYXk7CivmsLTpnaIgPiB3YXRlclwtc3VyZmFjZTsKK+enu+auliA+IHRvXC10cmFuc3BsYW50Owor6LW35LyPID4gdXBzXC1hbmRcLWRvd25zOwor6K6K6Kq/ID4gbW9kaWZpZWRcLXRvbmU7Civlj4voqrwgPiBjb21wYW5pb25zaGlwOwor56e75qSNID4gdG9cLXRyYW5zcGxhbnQ7Civlk4DmqIIgPiBmdW5lcmFsXC1tdXNpYzsKK+WvjOS6jiA+IHRvXC1iZVwtZnVsbFwtb2Y7CivogbLluLYgPiB2b2NhbFwtY29yZFwoc1wpOwor5LiN55+lID4gdW5rbm93aW5nXChseVwpOwor5a2r5aWzID4gZ3JhbmRkYXVnaHRlcjsKK+a2vOW/qyA+IG5pY2VcLWFuZFwtY29sZDsKK+S4ieeZviA+IHRocmVlXC1odW5kcmVkOwor5Lqs5oiyID4gYmVpamluZ1wtb3BlcmE7CivkvY7kuo4gPiBiZVwtbG93ZXJcLXRoYW47CivljZfpg6ggPiBzb3V0aGVyblwtcGFydDsKK+a4heWWriA+IGxpc3RcLW9mXC1pdGVtczsKK+iuiuiJsiA+IGNoYW5nZVwtY29sb3VyOwor5YyX6Z2iID4gbm9ydGhlcm5cLXNpZGU7CivkuIrnj60gPiB0b1wtZ29cLXRvXC13b3JrOwor5ZCE56iuID4gZXZlcnlcLWtpbmRcLW9mOwor6LKd5b2rID4gc2hlbGxcLWNhcnZpbmc7Civml6Xou40gPiBqYXBhbmVzZVwtYXJteTsKK+WNl+i2iiA+IHNvdXRoXC12aWV0bmFtOwor5oOF5rOBID4gY2lyY3Vtc3RhbmNlczsKK+aEm+aGjiA+IGxvdmVcLWFuZFwtaGF0ZTsKK+iBt+WToSA+IG9mZmljZVwtd29ya2VyOwor5rSL5rqiID4gYnJpbW1pbmdcLXdpdGg7CivljZToqr8gPiB0b1wtY29vcmRpbmF0ZTsKK+Wkp+mYqiA+IG9zYWthXC1cKGphcGFuXCk7CivogIPmha4gPiB0b1wtdGhpbmtcLW92ZXI7CivljJfpg6ggPiBub3J0aGVyblwtcGFydDsKK+acrOaEjyA+IG9yaWdpbmFsXC1pZGVhOwor542o5pSsID4gdG9cLW1vbm9wb2xpemU7CivlkLjmr5IgPiB0b1wtdGFrZVwtZHJ1Z3M7Civms7PmsaAgPiBzd2ltbWluZ1wtcG9uZDsKK+S4gOatpSA+IFwoc2luZ2xlXClcLXN0ZXA7CivljJfotoogPiBub3J0aFwtdmlldG5hbTsKK+mbnOmghSA+IG1pc2NlbGxhbmVvdXM7Civlk6Xlk6UgPiBvbGRlclwtYnJvdGhlcjsKK+WklumDqCA+IGV4dGVybmFsXC1wYXJ0Owor6IGe5Lq6ID4gZmFtb3VzXC1wZXJzb247CivkuqzliocgPiBiZWlqaW5nXC1vcGVyYTsKK+WSjOWwmiA+IGJ1ZGRoaXN0XC1tb25rOwor6JiH5beeID4gc3V6aG91XC1cKGNpdHlcKTsKK+ekpuawtCA+IG1pbmVyYWxcLXdhdGVyOwor5pqR5rCjID4gXChzdW1tZXJcKVwtaGVhdDsKK+WTgOWRiiA+IGJlZ1wtcGl0ZW91c2x5Owor5oOF5b2iID4gY2lyY3Vtc3RhbmNlczsKK+S4reW8jyA+IGNoaW5lc2VcLXN0eWxlOwor5aSW6LK/ID4gZm9yZWlnblwtdHJhZGU7Civpgb/pm6MgPiBcW3Rha2VcXVwtcmVmdWdlOwor5YyF6KKxID4gY2xvdGhcLXdyYXBwZXI7CivmhJ/lhpIgPiB0b1wtY2F0Y2hcLWNvbGQ7CivlvanomowgPiBwYWludGVkXC1zaGVsbDsKK+emruWggiA+IGFzc2VtYmx5XC1oYWxsOwor5LiN5oGtID4gZGlzcmVzcGVjdGZ1bDsKK+e4veioiCA+IFwoZ3JhbmRcKVwtdG90YWw7CivlqJvmqIIgPiBlbnRlcnRhaW5tZW50Owor5Lit5a24ID4gbWlkZGxlXC1zY2hvb2w7CivkupTkuIAgPiA1XC0xXC1cKG1heVwtMXN0XCk7Civno4HniYcgPiBtYWduZXRpY1wtZGlzazsKK+acg+WgtCA+IG1lZXRpbmdcLXBsYWNlOwor5aq+5ZKMID4gdG9cLW1ha2VcLXBlYWNlOwor5LiN5benID4gdW5mb3J0dW5hdGVseTsKK+S4iuW4giA+IG9uXC10aGVcLW1hcmtldDsKK+engeWIqSA+IHBlcnNvbmFsXC1nYWluOwor6YGy6YiNID4gc2xvd1wtXCh3aXR0ZWRcKTsKK+WMl+e+jiA+IG5vcnRoXC1hbWVyaWNhOwor57aT6amXID4gdG9cLWV4cGVyaWVuY2U7CivmsbLmsLQgPiB0b1wtZHJhd1wtd2F0ZXI7CivnjbLli50gPiBiZVwtdmljdG9yaW91czsKK+ingOm7niA+IHBvaW50XC1vZlwtdmlldzsKK+awtOeJmyA+IHdhdGVyXC1idWZmYWxvOwor5ZCM5bm0ID4gdGhlXC1zYW1lXC15ZWFyOwor6K6K5pifID4gdmFyaWFibGVcLXN0YXI7Civmr5vnrYYgPiB3cml0aW5nXC1icnVzaDsKK+iYh+S/hCA+IHNvdmlldFwtcnVzc2lhOwor5q2l6KGMID4gdG9cLWdvXC1vblwtZm9vdDsKK+WIpemboiA+IHRha2VcLWxlYXZlXC1vZjsKK+aThemVtyA+IHRvXC1iZVwtZ29vZFwtYXQ7CivkuI3llbsgPiBub3RcLWxlc3NcLXRoYW47CivlpKfntIQgPiBhcHByb3hpbWF0ZWx5Owor54mM54WnID4gbGljZW5zZVwtcGxhdGU7CivmmpflrrMgPiBraWxsXC1zZWNyZXRseTsKK+WLg+iIiCA+IHJpc2VcLXN1ZGRlbmx5Owor5YmN6YCyID4gdG9cLWdvXC1mb3J3YXJkOwor6K6K5oWLID4gbWV0YW1vcnBob3NpczsKK+aAp+aFviA+IHNleHVhbFwtZGVzaXJlOwor5Yyv546HID4gZXhjaGFuZ2VcLXJhdGU7CivmsrvlrokgPiBsYXdcLWFuZFwtb3JkZXI7CivmrKPos54gPiB0b1wtYXBwcmVjaWF0ZTsKK+mbjOiKsSA+IGZlbWFsZVwtZmxvd2VyOwor6YKm6IGvID4gY29uZmVkZXJhdGlvbjsKK+WkmueoriA+IG1hbnlcLWtpbmRzXC1vZjsKK+WQuOWFpSA+IHRvXC1icmVhdGhlXC1pbjsKK+iuiuW3pSA+IGV4Y2hhbmdlXC13b3JrOwor5Y+X5a6zID4gdG9cLWJlXC1pbmp1cmVkOwor5rG65b+DID4gZGV0ZXJtaW5hdGlvbjsKK+S4i+S7pCA+IGdpdmVcLWFuXC1vcmRlcjsKK+iOq+mAhiA+IHZlcnlcLWZyaWVuZGx5Owor5q+U54axID4gc3BlY2lmaWNcLWhlYXQ7CivmmILmmIIgPiBoaWdoXC1zcGlyaXRlZDsKK+WIhumFjSA+IHRvXC1kaXN0cmlidXRlOwor5Yqg57eKID4gdG9cLWludGVuc2lmeTsKK+edoeimuiA+IHRvXC1nb1wtdG9cLWJlZDsKK+aXqeacnyA+IGVhcmx5XC1wZXJpb2Q7Civnm7jpl5wgPiBpbnRlcnJlbGF0ZWQ7Civngavpvo0gPiBmaWVyeVwtZHJhZ29uOwor5ZCI5L2cID4gdG9cLWNvb3BlcmF0ZTsKK+aZuuWKmyA+IGludGVsbGlnZW5jZTsKK+W/jOaGmiA+IGJlXC1hZnJhaWRcLW9mOwor5piU5bm0ID4gZm9ybWVyXC15ZWFyczsKK+ekpuS6lSA+IG1pbmVcLVwoc2hhZnRcKTsKK+eGn+efpSA+IGFjcXVhaW50YW5jZTsKK+aUr+elqCA+IFwoYmFua1wpXC1jaGVjazsKK+WnkOWnkCA+IG9sZGVyXC1zaXN0ZXI7CivorabloLEgPiBcKGZpcmVcKVwtYWxhcm07CivlvozmnpwgPiBjb25zZXF1ZW5jZXM7Civlp4rlp4ogPiBvbGRlclwtc2lzdGVyOwor5pS255ukID4gbWFya2V0XC1jbG9zZTsKK+WfjumYsiA+IGNpdHlcLWRlZmVuY2U7CivpoILkvY8gPiB0b1wtd2l0aHN0YW5kOwor6KW/6YOoID4gd2VzdGVyblwtcGFydDsKK+WlveaEnyA+IGdvb2RcLW9waW5pb247CivlpLHmpa0gPiB1bmVtcGxveW1lbnQ7Civmk4Xoh6ogPiB1bmF1dGhvcml6ZWQ7CivpgJXoh6ogPiBvblwtb25lJydzXC1vd247CivntKLos6AgPiBjb21wZW5zYXRpb247Civov5HoppYgPiBzaG9ydHNpZ2h0ZWQ7CivmraXnioEgPiB3YWxraW5nXC1wbG93Owor55u46K2YID4gYWNxdWFpbnRhbmNlOwor6ZaL6ZecID4gcG93ZXJcLXN3aXRjaDsKK+WOu+S4liA+IHRvXC1wYXNzXC1hd2F5Owor5Z+56KiTID4gdG9cLWN1bHRpdmF0ZTsKK+WkmuaWuSA+IGluXC1tYW55XC13YXlzOwor5pC26LO8ID4gcGFuaWNcLWJ1eWluZzsKK+W3oei/tCA+IHRvXC1nb1wtYXJvdW5kOwor6YCZ56iuID4gdGhpc1wta2luZFwtb2Y7CivlpKfmhI8gPiBnZW5lcmFsXC1pZGVhOwor5Yil56ixID4gYW5vdGhlclwtbmFtZTsKK+atpeatpSA+IHN0ZXBcLWJ5XC1zdGVwOwor5Y2U5ZWGID4gY29uc3VsdFwtd2l0aDsKK+efruaYnyA+IGR3YXJmXC1cKHN0YXJcKTsKK+mCo+aZgiA+IGF0XC10aGF0XC10aW1lOwor5aSn5birID4gZ3JlYXRcLW1hc3RlcjsKK+e1hOe5lCA+IG9yZ2FuaXphdGlvbjsKK+mAmueUqCA+IGNvbW1vblwtXCh1c2VcKTsKK+WkmuW3pSA+IHRvXC1tdWx0aXBsZXg7Civns77okZsgPiBlbnRhbmdsZW1lbnQ7CivoqabmjqIgPiB0b1wtc291bmRcLW91dDsKK+Wkq+WmuyA+IG1hblwtYW5kXC13aWZlOwor6YGT5q2JID4gdG9cLWFwb2xvZ2l6ZTsKK+aVheaEjyA+IGRlbGliZXJhdGVseTsKK+iri+WVjyA+IG1heVwtaVwtYXNrXC5cLlwuOwor5Ye655m8ID4gdG9cLXN0YXJ0XC1vdXQ7CivnuK7lr6sgPiBhYmJyZXZpYXRpb247Civlo4HmjpsgPiB3YWxsXC1oYW5naW5nOwor54af5oKJID4gdG9cLWtub3dcLXdlbGw7Civnhp/mgJ0gPiBkZWxpYmVyYXRpb247CivmlbTlpKkgPiBhbGxcLWRheVwtbG9uZzsKK+mxieeUsiA+IHR1cnRsZVwtc2hlbGw7Civouqvpq5QgPiBcKGh1bWFuXClcLWJvZHk7Civns77nuo8gPiBiZVwtZW50YW5nbGVkOwor6KSH6KO9ID4gdG9cLWR1cGxpY2F0ZTsKK+maiuaXlyA+IHRlYW1cLXBlbm5hbnQ7CivliqDlvLcgPiB0b1wtcmVpbmZvcmNlOwor5Ye6542EID4gbGVhdmVcLXByaXNvbjsKK+irh+WIpCA+IHRvXC1uZWdvdGlhdGU7CivnnIvnl4UgPiBzZWVcLWFcLWRvY3RvcjsKK+W+iOS4jSA+IHZlcnlcLXVuXC1cLlwuXC5cLjsKK+avheWKmyA+IHBlcnNldmVyYW5jZTsKK+iQveWvpiA+IHRvXC1pbXBsZW1lbnQ7CivmlK/lupcgPiBicmFuY2hcLXN0b3JlOwor55m96JavID4gc3dlZXRcLXBvdGF0bzsKK+e2teaXlyA+IGNvbG9yZWRcLWZsYWc7Civlm57poacgPiB0b1wtbG9va1wtYmFjazsKK+aureWMliA+IGJlY29tZVwtcmlnaWQ7CivngI/opr0gPiB0b1wtc2tpbVwtb3ZlcjsKK+iqsuS9mSA+IGFmdGVyXC1zY2hvb2w7Civou4rpgZMgPiB0cmFmZmljXC1sYW5lOwor5q2j5aaCID4gYmVcLWp1c3RcLWxpa2U7CivntJnniYwgPiBwbGF5aW5nXC1jYXJkOwor55m857SFID4gZmx1c2hcLVwoZmFjZVwpOwor6ZuG5ZCIID4gY29uZ3JlZ2F0aW9uOwor6YCf5oiQID4gY3Jhc2hcLWNvdXJzZTsKK+WFiee3miA+IG9wdGljYWxcLWxpbmU7CivliqrlipsgPiBncmVhdFwtZWZmb3J0Owor5byV5YWlID4gdG9cLWRyYXdcLWludG87Civlu6DlnYAgPiBmYWN0b3J5XC1zaXRlOwor6Zqo5ZCMID4gYWNjb21wYW55aW5nOwor54aS5YWJID4gZmxvdXJlc2NlbmNlOwor5buj5ZGKID4gdG9cLWFkdmVydGlzZTsKK+aMqOi/kSA+IGdldFwtY2xvc2VcLXRvOwor57eo5YqHID4gd3JpdGVcLWFcLXBsYXk7Civlo5PlgJIgPiBvdmVyd2hlbG1pbmc7CivmjqHohIIgPiB0cmVlXC10YXBwaW5nOwor54af5Lq6ID4gYWNxdWFpbnRhbmNlOwor5Z+55qSNID4gdG9cLWN1bHRpdmF0ZTsKK+mAn+WvqyA+IHF1aWNrXC1za2V0Y2g7CivpgLHlnI0gPiBzdXJyb3VuZGluZ3M7Civmv77ntJkgPiBmaWx0ZXJcLXBhcGVyOwor5qmf5qeLID4gb3JnYW5pemF0aW9uOwor6Kiq5L+EID4gdmlzaXRcLXJ1c3NpYTsKK+aLlOmMqCA+IHdlaWdoXC1hbmNob3I7CivmqJnnh4ggPiBiZWFjb25cLWxpZ2h0Owor5Yaw5pm2ID4gaWNlXC1jcnlzdGFsczsKK+W5vuWkqSA+IHNldmVyYWxcLWRheXM7Civmjojnsr4gPiBpbnNlbWluYXRpb247Civpq5LoqbEgPiBiYWRcLWxhbmd1YWdlOwor5Ye55bK4ID4gY29uY2F2ZVwtYmFuazsKK+mBjuS+hiA+IHRvXC1jb21lXC1vdmVyOwor5pON5YueID4gdG9cLXdvcmtcLWhhcmQ7CivliKXlkI0gPiBhbm90aGVyXC1uYW1lOwor5YWJ5rqQID4gbGlnaHRcLXNvdXJjZTsKK+mAn+WHjSA+IHF1aWNrXC1mcmVlemU7CivlnZDniaIgPiBpbXByaXNvbm1lbnQ7Civoo5zniZkgPiBmaWxsXC1hXC10b290aDsKK+WIqOWIgCA+IHBsYW5pbmdcLXRvb2w7Civmiorpl5wgPiBndWFyZFwtYVwtcGFzczsKK+iHquihmyA+IHNlbGZcLWRlZmVuc2U7CivpmZvkuIsgPiB5b3VyXC1tYWplc3R5Owor5YWr5pyIID4gZWlnaHRoXC1tb250aDsKK+WCmeiAgyA+IFwoYW5cLWFwcGVuZGl4Owor5bm05YmNID4gXC5cLlwueWVhcnNcLWFnbzsKK+ewoeeosSA+IGFiYnJldmlhdGlvbjsKK+WIpeS6uiA+IG90aGVyXC1wZW9wbGU7CivplovmlK8gPiBleHBlbmRpdHVyZXM7CivmjY/nqY0gPiBjaGlyb3ByYWN0aWM7CivloLHlg7kgPiBxdW90ZWRcLXByaWNlOwor6L+35L+hID4gc3VwZXJzdGl0aW9uOwor6L2J5o+bID4gdG9cLXRyYW5zZm9ybTsKK+aQrOWutiA+IG1vdmVcLVwoaG91c2VcKTsKK+aItumgrSA+IGJhbmtcLWFjY291bnQ7Civopqrkv6EgPiB0cnVzdGVkXC1haWRlOwor6KGM56iLID4gdHJhdmVsXC1yb3V0ZTsKK+WatOeroyA+IHRpZ2h0XC5zdHJpY3Q7CivnnIvkvZwgPiBsb29rXC11cG9uXC1hczsKK+Wvp+mhmCA+IHdvdWxkXC1yYXRoZXI7CivmjqXmnp0gPiBcKHRyZWVcKVwtZ3JhZnQ7CivmjojmrIogPiB0b1wtYXV0aG9yaXplOwor6ZaL5a24ID4gc2Nob29sXC1vcGVuczsKK+S/neitiSA+IHRvXC1ndWFyYW50ZWU7CivmibnoqZUgPiB0b1wtY3JpdGljaXplOwor5ouU57WyID4gd2lyZVwtZHJhd2luZzsKK+WYhuipniA+IGludGVyamVjdGlvbjsKK+aJk+izrSA+IFwobWFrZVwtYVwpXC1iZXQ7CivlhKrmg6AgPiBwcmVmZXJlbnRpYWw7CivlhazloLEgPiBhbm5vdW5jZW1lbnQ7Civlr4bpm4YgPiBjb25jZW50cmF0ZWQ7CivmjojmmYIgPiB0aW1lXC1zZXJ2aWNlOwor5Zyo5peBID4gYnlcLVwoYVwtcGxhY2VcKTsKK+aLvOebpCA+IGNvbGRcLXBsYXR0ZXI7CivmjZDmrL4gPiBkb25hdGVcLW1vbmV5Owor5ZyL5pyJID4gbmF0aW9uYWxpemVkOwor5L6d6LO0ID4gdG9cLWRlcGVuZFwtb247Civns7vkuIogPiB0b1wtYnVja2xlXC11cDsKK+iDjOmboiA+IGRldmlhdGVcLWZyb207CivmjInnhacgPiBhY2NvcmRpbmdcLXRvOwor5YG254S2ID4gaW5jaWRlbnRhbGx5Owor5ZaJ6Y+hID4gbGFyeW5nb3Njb3BlOwor6IOM6ZmwID4gaW5cLXRoZVwtc2hhZGU7CivmvJTnrpcgPiB0b1wtY2FsY3VsYXRlOwor5YWp5Y2DID4gdHdvXC10aG91c2FuZDsKK+aPkuWcliA+IGlsbHVzdHJhdGlvbjsKK+WvqeitsCA+IGRlbGliZXJhdGlvbjsKK+euoeeQhiA+IHRvXC1zdXBlcnZpc2U7CivmooXoirEgPiBwbHVtXC1ibG9zc29tOwor55W254S2ID4gb25seVwtbmF0dXJhbDsKK+aomeWDuSA+IG1hcmtcLWFcLXByaWNlOwor5qOS56GrID4gcm9sbFwtc3VscGh1cjsKK+WtnemghiA+IGZpbGlhbFwtcGlldHk7CivppYXpoK0gPiBzdGVhbWVkXC1yb2xsOwor5L+d566hID4gdGFrZVwtY2FyZVwtb2Y7CivlnoLkuIsgPiB0b1wtaGFuZ1wtZG93bjsKK+ijgeWToSA+IHRvXC1jdXRcLXN0YWZmOwor5riF6YaSID4gY2xlYXJcLWhlYWRlZDsKK+eVsOatpSA+IGFzeW5jaHJvbm91czsKK+ijnOWFhSA+IHRvXC1yZXBsZW5pc2g7Civkvr/np5ggPiBjb25zdGlwYXRpb247Civnl4XluoogPiBob3NwaXRhbFwtYmVkOwor5p6Y6ZG/ID4gaW5jb21wYXRpYmxlOwor5Zqu5b6AID4gdG9cLXllYXJuXC1mb3I7Civoh6rmi5QgPiBmcmVlXC1vbmVzZWxmOwor6Iiq5aSpID4gc3BhY2VcLWZsaWdodDsKK+aNsuWFpSA+IHRvXC1kcmF3XC1pbnRvOwor6auY5a+GID4gaGlnaFwtZGVuc2l0eTsKK+ihqOWcnyA+IHN1cmZhY2VcLXNvaWw7Civos57orZggPiBhcHByZWNpYXRpb247Civmhbbos4AgPiBjb25ncmF0dWxhdGU7CivmtojpmaQgPiB0b1wtZWxpbWluYXRlOwor6KGX5Z2KID4gbmVpZ2hib3Job29kOwor55Ge6ImyID4gbG92ZWx5XC1jb2xvcjsKK+iBveiqqiA+IHRvXC1oZWFyXC10b2xkOwor55W25b+DID4gdG9cLXRha2VcLWNhcmU7CivnlbDmgKcgPiBoZXRlcm9zZXh1YWw7CivkuqTpi5IgPiBjcm9zc1wtc3dvcmRzOwor6IiI5aWuID4gXChiZVwpXC1leGNpdGVkOwor5a6H6IiqID4gc3BhY2VcLWZsaWdodDsKK+emvemhniA+IGJpcmRcLXNwZWNpZXM7Civlgb3lloQgPiBoeXBvY3JpdGljYWw7CivmirHmhKcgPiBmZWVsXC1hc2hhbWVkOwor6LKg6LKsID4gaW5cLWNoYXJnZVwtb2Y7Civnj77ooYwgPiBiZVwtaW5cLWVmZmVjdDsKK+WxiOacjSA+IHRvXC1zdXJyZW5kZXI7CivmuJvnt6kgPiB0b1wtc2xvd1wtZG93bjsKK+S4i+m9kiA+IGJvdHRvbVwtdGVldGg7CivlqpLpq5QgPiBcKG5ld3NcKVwtbWVkaWE7Civnq5/nhLYgPiB1bmV4cGVjdGVkbHk7CivpqZrmhJUgPiBhc3RvbmlzaG1lbnQ7CivnlbbloLQgPiBhdFwtdGhlXC1zY2VuZTsKK+Wpmum9oSA+IG1hcnJ5aW5nXC1hZ2U7CivmirHlsYggPiBmZWVsXC13cm9uZ2VkOwor6aOf6K2cID4gY29va2VyeVwtYm9vazsKK+S4pumdniA+IHJlYWxseVwtaXNuJyd0Owor56qB56C0ID4gYnJlYWt0aHJvdWdoOwor5L615pmoID4gdG93YXJkc1wtZGF3bjsKK+a8ouWfjiA+IHNlb3VsXCxcLWtvcmVhOwor5bCR5pW4ID4gc21hbGxcLW51bWJlcjsKK+eVtuWInSA+IGF0XC10aGF0XC10aW1lOwor5ouM5ZKMID4gbWl4XC1hbmRcLXN0aXI7CivmtYHpgJogPiB0b1wtY2lyY3VsYXRlOwor5ZKo6KmiID4gY29uc3VsdGF0aXZlOwor5omS5ouJID4gcHVzaFwtbGlnaHRseTsKK+WwiOaUvyA+IGRpY3RhdG9yc2hpcDsKK+mjvOiNiSA+IGZvcmFnZVwtZ3Jhc3M7CivpvLvohZQgPiBuYXNhbFwtY2F2aXR5Owor5rW06KGAID4gYmxvb2RcLXNvYWtlZDsKK+S+neaTmiA+IGFjY29yZGluZ1wtdG87CivlsazlnIsgPiB2YXNzYWxcLXN0YXRlOwor6Yu8562GID4gZm91bnRhaW5cLXBlbjsKK+WBieS6uiA+IGdyZWF0XC1wZXJzb247Civlronnh58gPiBwaXRjaFwtYVwtY2FtcDsKK+WSjOinoyA+IGNvbmNpbGlhdG9yeTsKK+WvpuaWvSA+IHRvXC1pbXBsZW1lbnQ7Civmop3lrZAgPiBhXC1zaG9ydFwtbm90ZTsKK+agueacrCA+IFwobm90XClcLWF0XC1hbGw7CivnqK7nqK4gPiBhbGxcLWtpbmRzXC1vZjsKK+aJi+W4lSA+IGhhbmRrZXJjaGllZjsKK+azlemZoiA+IGNvdXJ0XC1vZlwtbGF3Owor5qC55pOaID4gYWNjb3JkaW5nXC10bzsKK+ays+mmrCA+IGhpcHBvcG90YW11czsKK+eUn+WRvSA+IGxpZmVcLVwoZm9yY2VcKTsKK+S4u+inkiA+IGxlYWRpbmdcLXJvbGU7Civmt6vnjKUgPiBhYm9taW5hdGlvbnM7CivnlKLljbUgPiBsYXlcLVwoYW5cLWVnZ1wpOwor5p6c55quID4gXChmcnVpdFwpXC1wZWVsOwor542o6KOBID4gZGljdGF0b3JzaGlwOwor5LiN6LazID4gaW5zdWZmaWNpZW50Owor5a625pS/ID4gaG91c2VrZWVwaW5nOwor5LiN6LKyID4gaW1tZWFzdXJhYmxlOwor5pma6aSQID4gZXZlbmluZ1wtbWVhbDsKK+S9nOaEmyA+IHRvXC1tYWtlXC1sb3ZlOwor6JiH6IGvID4gc292aWV0XC11bmlvbjsKK+Wus+aAlSA+IHRvXC1iZVwtYWZyYWlkOwor5pma6ZaTID4gZXZlbmluZ1wtdGltZTsKK+S6lOeZviA+IGZpdmVcLWh1bmRyZWQ7CivlkozntIQgPiBwZWFjZVwtdHJlYXR5Owor6K2J6amXID4gcmVhbFwtcmVzdWx0czsKK+aHiuaClCA+IGZlZWxcLXJlbW9yc2U7CivmiaPkuIogPiB0b1wtYnVja2xlXC11cDsKK+S/hOS4rSA+IHJ1c3NpYVwtY2hpbmE7CivkuIDokKwgPiB0ZW5cLXRob3VzYW5kOwor6K6K6YCfID4gc3BlZWRcLWNoYW5nZTsKK+WuieW/gyA+IGZlZWxcLWF0XC1lYXNlOwor5Lq65rCRID4gXCh0aGVcKVwtcGVvcGxlOwor5bCH5L6GID4gXCh0aGVcKVwtZnV0dXJlOwor6aGM6IqxID4gdGl0bGVcLWRlc2lnbjsKK+WPr+ingCA+IGNvbnNpZGVyYWJsZTsKK+S6uuasiiA+IGh1bWFuXC1yaWdodHM7CivotpXkuIogPiBrZWVwXC11cFwtd2l0aDsKK+iCoeW4giA+IHN0b2NrXC1tYXJrZXQ7Civnp7vmsJEgPiB0b1wtaW1taWdyYXRlOwor5rex5oSbID4gYWZmZWN0aW9uYXRlOwor5LuK5pmoID4gdGhpc1wtbW9ybmluZzsKK+WvhuWPiyA+IGNsb3NlXC1mcmllbmQ7CivlrZjlv4MgPiBkZWxpYmVyYXRlbHk7CivljZfpnZ4gPiBzb3V0aFwtYWZyaWNhOwor5LiN56ymID4gaW5jb25zaXN0ZW50Owor5ZGK56S6ID4gYW5ub3VuY2VtZW50Owor5Li555SwID4gcHViaWNcLXJlZ2lvbjsKK+WNiumfvyA+IGhhbGZcLXRoZVwtZGF5Owor5Li755KwID4gcHJpbWFyeVwtcmluZzsKK+S9oOWAkSA+IHlvdVwtXChwbHVyYWxcKTsKK+S4gOebtCA+IGNvbnRpbnVvdXNseTsKK+Wnv+iJsiA+IGdvb2RcLWxvb2tpbmc7CivmmpfnrpcgPiBwbG90XC1hZ2FpbnN0Owor56iN5b6uID4gYVwtbGl0dGxlXC1iaXQ7Civkuq7luqYgPiBpbGx1bWluYXRpb247Civlj4PogIMgPiBjb25zdWx0YXRpb247CivkurrlrrYgPiBvdGhlclwtcGVvcGxlOwor5aOv6bqXID4gbWFnbmlmaWNlbmNlOwor6buo5pS/ID4gcGFydHlcLXBvbGljeTsKK+iZkOW+hSA+IG1pc3RyZWF0bWVudDsKK+aEn+aBqSA+IHRoYW5rc2dpdmluZzsKK+e9sOeQgyA+IHBlbmFsdHlcLXNob3Q7Civosrvln44gPiBwaGlsYWRlbHBoaWE7CivmsrnnlasgPiBvaWxcLXBhaW50aW5nOwor576O5rSyID4gdGhlXC1hbWVyaWNhczsKK+iyp+WbsCA+IGltcG92ZXJpc2hlZDsKK+S6nuWkqiA+IGFzaWFcLXBhY2lmaWM7CivlpKfph48gPiBncmVhdFwtYW1vdW50Owor6aCC55SoID4gdG9cLWJlXC1vZlwtdXNlOwor6LK75YqbID4gZ3JlYXRcLWVmZm9ydDsKK+aal+eBmCA+IGhpZGRlblwtc2hvYWw7Civol6XmlrkgPiBwcmVzY3JpcHRpb247CivkuLvmjIEgPiBwcmVzaWRlXC1vdmVyOwor6YqA5bmVID4gbW92aWVcLXNjcmVlbjsKK+iAgeWutiA+IG5hdGl2ZVwtcGxhY2U7Civmmpfmva4gPiB1bmRlcmN1cnJlbnQ7Civosrflg7kgPiBidXlpbmdcLXByaWNlOwor5aSa6YKKID4gbXVsdGlsYXRlcmFsOwor54++5LujID4gbW9kZXJuXC10aW1lczsKK+S7luS6uiA+IG90aGVyXC1wZXJzb247CivkuYvlvowgPiBhZnRlclwod2FyZHNcKTsKK+aFo+S+iyA+IGNvbnZlbnRpb25hbDsKK+S4puaOkiA+IHNpZGVcLWJ5XC1zaWRlOwor6ICV5ZywID4gYXJpYWJsZVwtbGFuZDsKK+aal+a1gSA+IHVuZGVyY3VycmVudDsKK+a1tOWgtCA+IGJhdGhpbmdcLXNwb3Q7CivkuI3mlpkgPiB1bmV4cGVjdGVkbHk7Civok4voj5wgPiBsZWFmXC1tdXN0YXJkOwor6K2Y56C0ID4gdG9cLXBlbmV0cmF0ZTsKK+S4jeaLmCA+IG5vdFwtc3RpY2tcLXRvOwor6byT5Yu1ID4gdG9cLWVuY291cmFnZTsKK+mereegsiA+IGZpcmVjcmFja2VyczsKK+aEn+WLlSA+IHRvXC1tb3ZlXC1cKHNiXCk7CivmhI/lkbMgPiBzaWduaWZpY2FuY2U7CivkuI3mhKcgPiBiZVwtd29ydGh5XC1vZjsKK+S4jeaEjyA+IHVuZXhwZWN0ZWRseTsKK+mdtue0mSA+IHRhcmdldFwtc2hlZXQ7CivmhIjliqAgPiBhbGxcLXRoZVwtbW9yZTsKK+mBoOmboiA+IHJlbW92ZWRcLWZyb207CivlkozlloQgPiBnb29kXC1uYXR1cmVkOwor6KqN6K2JID4gYXV0aGVudGljYXRlOwor5Yio6b2SID4gZ2Vhclwtc2hhcGluZzsKK+azqOaEjyA+IHRha2VcLW5vdGVcLW9mOwor8KaJhiA+IHRvXC1icmVha1wtb2ZmOwor6aKo5ZGzID4gbG9jYWxcLWZsYXZvcjsKK+e5oeiKsSA+IHRvXC1lbWJyb2lkZXI7Civnn6XorZggPiBpbnRlbGxlY3R1YWw7CivmmpfmjqIgPiBzZWNyZXRcLWFnZW50Owor5pq05oCSID4gdmlvbGVudFwtcmFnZTsKK+S4jeWuuSA+IG5vdFwtdG9sZXJhdGU7CivkuI3lrpwgPiBub3RcLXN1aXRhYmxlOwor54qv5q+SID4gaWxsZWdhbFwtZHJ1ZzsKK+Wkp+iHtCA+IG1vcmVcLW9yXC1sZXNzOwor5aW955yLID4gZ29vZFwtbG9va2luZzsKK+S4jeWmgiA+IG5vdFwtZXF1YWxcLXRvOwor5b6X56WoID4gdm90ZVwtZ2V0dGluZzsKK+a0vuWIpSA+IGRlbm9taW5hdGlvbjsKK+e3mui7uCA+IHRocmVhZFwtc3Bvb2w7CivmnInliKkgPiBhZHZhbnRhZ2VvdXM7CivoqILplrEgPiBzdWJzY3JpcHRpb247CivmgaLlvqkgPiB0b1wtcmVpbnN0YXRlOwor6YCZ6aCFID4gdGhpc1wtXCh0aGluZ1wpOwor5Y+v5oOcID4gaXRcLWlzXC1hXC1waXR5Owor5ama5aSWID4gZXh0cmFtYXJpdGFsOwor5LiN5ZauID4gbm90XC10aGVcLW9ubHk7CivpgYvpgIEgPiB0b1wtdHJhbnNwb3J0Owor5LmL5LiAID4gb25lXC1vZlwtXChzdGhcKTsKK+Wig+mBhyA+IGNpcmN1bXN0YW5jZTsKK+mHjuW/gyA+IHdpbGRcLXNjaGVtZXM7CivmlZfoiIggPiBkaXNhcHBvaW50ZWQ7CivljbvmraUgPiB0b1wtc3RlcFwtYmFjazsKK+S4reS/hCA+IGNoaW5hXC1ydXNzaWE7CivljbHmroYgPiBncmF2ZVwtZGFuZ2VyOwor5Lit5LqeID4gY2VudHJhbFwtYXNpYTsKK+iuiuaApyA+IGRlbmF0dXJhdGlvbjsKK+WOn+aWmSA+IHJhd1wtbWF0ZXJpYWw7CivkuI3liKkgPiB1bmZhdm91cmFibGU7CivkuIDljYMgPiBvbmVcLXRob3VzYW5kOwor54iG55m8ID4gdG9cLWJyZWFrXC1vdXQ7CivlpJrnq5kgPiBtdWx0aXN0YXRpb247CivmsKfmsKMgPiBveHlnZW5cLVwoZ2FzXCk7Civlv7Xml6UgPiBtZW1vcmlhbFwtZGF5Owor5ZCE5ZyLID4gZWFjaFwtY291bnRyeTsKK+S4jeS+vyA+IGluY29udmVuaWVudDsKK+aZguaFiyA+IFwodmVyYlwpXC10ZW5zZTsKK+e+heWIlyA+IHRvXC1zcGVhZFwtb3V0Owor5LiA5YSEID4gMVwtMDBcLW1pbGxpb247CivlvqnmtLsgPiByZXN1cnJlY3Rpb247CivmmrTli5UgPiBpbnN1cnJlY3Rpb247CivpnbbmqZ8gPiB0YXJnZXRcLWRyb25lOwor6YGL6KGMID4gYmVcLWluXC1tb3Rpb247Civnt6joiJ4gPiBjaG9yZW9ncmFwaHk7Civmr5TnhacgPiBhY2NvcmRpbmdcLXRvOwor5aOT57iuID4gdG9cLWNvbXByZXNzOwor6Kiq6I+vID4gdmlzaXRcLWNoaW5hOwor6KqN55+lID4gYWNrbm93bGVkZ2U7Civlj6vlloogPiBleGNsYW1hdGlvbjsKK+mAo+ipniA+IGNvbmp1bmN0aW9uOwor5byK56uvID4gbWFscHJhY3RpY2U7CivpnZ7moLggPiBub25cLW51Y2xlYXI7CivmlLbnqasgPiBhY3F1aXNpdGlvbjsKK+awkeaXjyA+IG5hdGlvbmFsaXR5Owor5pqX5LqVID4gYmxpbmRcLXNoYWZ0Owor5pqX5LitID4gaW5cLXRoZVwtZGFyazsKK+efmuebriA+IHRvXC1mb2N1c1wtb247CivluIPpnosgPiBjbG90aFwtc2hvZXM7Civln4vpoK0gPiBzdGVhbWVkXC1idW47CivliKTomZUgPiB0b1wtc2VudGFuY2U7CivliLvoi6YgPiBoYXJkd29ya2luZzsKK+aomem7niA+IHB1bmN0dWF0aW9uOwor55m96bq1ID4gd2hlYXRcLWZsb3VyOwor5YaS6ZqqID4gdGFrZVwtYVwtcmlzazsKK+eZvem2tCA+IHdoaXRlXC1jcmFuZTsKK+W+gOaYlCA+IGluXC10aGVcLXBhc3Q7CivpgornloYgPiBib3JkZXJcLWFyZWE7CivorpPkvY0gPiB0b1wtYWJkaWNhdGU7CivmgKrlg7sgPiBwZWN1bGlhcml0eTsKK+W+geaUtiA+IGxldnlcLVwoZmluZVwpOwor5q+N5p2/ID4gbW90aGVyYm9hcmQ7CivpnIDmsYIgPiByZXF1aXJlbWVudDsKK+Wkp+alrSA+IGdyZWF0XC1jYXVzZTsKK+aXuuWtoyA+IGJ1c3lcLXNlYXNvbjsKK+W/heWumiA+IGJlXC1ib3VuZFwtdG87CivljYrlubQgPiBoYWxmXC1hXC15ZWFyOwor6Kqy5qGMID4gc2Nob29sXC1kZXNrOwor6ZaT6ZqUID4gY29tcGFydG1lbnQ7CivpgbLnlpEgPiB0b1wtaGVzaXRhdGU7CivpnYjmhJ8gPiBpbnNwaXJhdGlvbjsKK+WkseaVlyA+IGJlXC1kZWZlYXRlZDsKK+iqquacjSA+IHRvXC1wZXJzdWFkZTsKK+WItue0hCA+IHRvXC1yZXN0cmljdDsKK+mej+WbuiA+IGNvbnNvbGlkYXRlOwor5YyF5ousID4gdG9cLWNvbXByaXNlOwor5aal5ZaEID4gYXBwcm9wcmlhdGU7Civovq/oqLwgPiBkaWFsZWN0aWNhbDsKK+eAiem5vSA+IGVwc29tXC1zYWx0czsKK+ikh+mbnCA+IGNvbXBsaWNhdGVkOwor5Y2z5Yi7ID4gaW1tZWRpYXRlbHk7Civli5jmjqIgPiBleHBsb3JhdGlvbjsKK+WNmuWPliA+IHRyeVwtdG9cLWdhaW47CivmlL7mo4QgPiB0b1wtcmVub3VuY2U7CivlhrDom4sgPiBmcm96ZW5cLWVnZ3M7CivpmLvnpJkgPiB0b1wtb2JzdHJ1Y3Q7Civov73nqbYgPiBpbnZlc3RpZ2F0ZTsKK+mDteWxgCA+IHBvc3RcLW9mZmljZTsKK+mbmeaVuCA+IGV2ZW5cLW51bWJlcjsKK+iSkOWwiyA+IHRvXC1sb29rXC1mb3I7Civnmb3pgZMgPiBtb29uJydzXC1wYXRoOwor5YuV5oWLID4gZGV2ZWxvcG1lbnQ7CivmsLjkuYUgPiBldmVybGFzdGluZzsKK+eZvOmAgSA+IHRvXC10cmFuc21pdDsKK+mFjeWCmSA+IHRvXC1hbGxvY2F0ZTsKK+isgOWPliA+IHRyeVwtdG9cLWdhaW47Civmr5TlpoIgPiBmb3JcLWV4YW1wbGU7CivlpJrlsbEgPiBtb3VudGFpbm91czsKK+mbu+W3pSA+IGVsZWN0cmljaWFuOwor57SF6ImyID4gcmVkXC1cKGNvbG9yXCk7Civmj4/ov7AgPiB0b1wtZGVzY3JpYmU7CivljYHlhIQgPiBvbmVcLWJpbGxpb247CivlhbXon7sgPiBzb2xkaWVyXC1hbnQ7Civmr4Dlo54gPiBkZXN0cnVjdGlvbjsKK+WJiua4myA+IHRvXC1jdXRcLWRvd247Civml6XkuK0gPiBqYXBhblwtY2hpbmE7CivpmqjmmYIgPiBhdFwtYW55XC10aW1lOwor6Ki85pu4ID4gY2VydGlmaWNhdGU7Civplbfoq4cgPiBhXC1sb25nXC10YWxrOwor5aSn5Z6LID4gbGFyZ2VcLXNjYWxlOwor6KOc6YG4ID4gYnlcLWVsZWN0aW9uOwor6JC95b6MID4gZmFsbFwtYmVoaW5kOwor5o6o6YGyID4gdG9cLXBvc3Rwb25lOwor5pON5rOVID4gZHJpbGxcLXJ1bGVzOwor6LuN6ZqKID4gYXJteVwtdHJvb3BzOwor5qi56JGJID4gdHJlZVwtbGVhdmVzOwor5Ymb5p62ID4gcmlnaWRcLWZyYW1lOwor6KuH5YiwID4gdG9cLXJlZmVyXC10bzsKK+WGjeiAhSA+IGZ1cnRoZXJtb3JlOwor6Kq/5Yi2ID4gdG9cLW1vZHVsYXRlOwor5Z+655+zID4gY29ybmVyc3RvbmU7CivlvoDkuosgPiBwYXN0XC1ldmVudHM7CivlpKflip8gPiBncmVhdFwtbWVyaXQ7Civoo4Hou40gPiBkaXNhcm1hbWVudDsKK+iqoeWRvSA+IGNvbW1hbmRtZW50Owor5YWn6IejID4gY2hhbWJlcmxhaW47CivlnabolakgPiBtYWduYW5pbW91czsKK+aOouiojiA+IGludmVzdGlnYXRlOwor5aKe5by3ID4gdG9cLWluY3JlYXNlOwor6YG15a6IID4gY29tcGx5XC13aXRoOwor6ZmQ5pa8ID4gcmVzdHJpY3RcLWF0Owor6ZaJ57aTID4gYW1lbm9ycmhvZWE7Civoqo3lh7ogPiByZWNvZ25pdGlvbjsKK+WFjeiBtyA+IGRlZ3JhZGF0aW9uOwor5bel56iLID4gZW5naW5lZXJpbmc7CivoqJjlvpcgPiB0b1wtcmVtZW1iZXI7Civmk7rluIMgPiBvcmRlclwtYWJvdXQ7CivpgI/mmI4gPiB0cmFuc3BhcmVudDsKK+WKm+WcliA+IHRyeVwtaGFyZFwtdG87Civov73mn6UgPiBpbnZlc3RpZ2F0ZTsKK+WFuOemriA+IGNlbGVicmF0aW9uOwor5YiR5pyfID4gcHJpc29uXC10ZXJtOwor57K+57ChID4gdG9cLXNpbXBsaWZ5Owor6Iqx6Iy2ID4gc2NlbnRlZFwtdGVhOwor5pWj5L2IID4gZGlzc2VtaW5hdGU7Civopobmu4UgPiBkZXN0cnVjdGlvbjsKK+ewv+iomCA+IGJvb2trZWVwaW5nOwor6Ke45oCSID4gcHJvdm9jYXRpb247CivmlKrlkowgPiB0b1wtbWl4XC1cKHVwXCk7Civmj4/nuaogPiB0b1wtZGVzY3JpYmU7CivpgLHlubQgPiBhbm5pdmVyc2FyeTsKK+e1leacmyA+IGRlc3BlcmF0aW9uOwor5pWX5LuXID4gbG9zdFwtYmF0dGxlOwor5aKe5aSaID4gdG9cLWluY3JlYXNlOwor57WQ5p2fID4gdGVybWluYXRpb247CivnhKHmhI8gPiBpbmFkdmVydGFudDsKK+mCiuWNgCA+IGJvcmRlclwtYXJlYTsKK+ebuOavlCA+IGNvbXBhcmVkXC10bzsKK+imhuaykiA+IGFubmloaWxhdGVkOwor55yJ5qKiID4gdGlwXC1vZlwtYnJvdzsKK+WIh+aPmyA+IHRvXC1jdXRcLW92ZXI7Civlhannmb4gPiB0d29cLWh1bmRyZWQ7CivoqZXlg7kgPiB0b1wtZXZhbHVhdGU7CivltKnoo4IgPiBidXJzdFwtYXBhcnQ7CivliqDku6UgPiBpblwtYWRkaXRpb247CivmjInpiJUgPiBwdXNoXC1idXR0b247CivovrLmpa0gPiBhZ3JpY3VsdHVyZTsKK+WgseaHiSA+IHJldHJpYnV0aW9uOwor5bm+5bm0ID4gYVwtZmV3XC15ZWFyczsKK+ebvOacmyA+IHRvXC1ob3BlXC1mb3I7Civpmorlk6EgPiB0ZWFtXC1tZW1iZXI7CivooYzouaQgPiB3aGVyZWFib3V0czsKK+aUr+S7mCA+IHBheVwtXChtb25leVwpOwor6KGo6KqeID4gcHJlZGljYXRpdmU7CivoqLvlhoogPiB0b1wtcmVnaXN0ZXI7CivpmYTlsawgPiBzdWJvcmRpbmF0ZTsKK+WBvei7jSA+IHB1cHBldFwtYXJteTsKK+WEquengCA+IG91dHN0YW5kaW5nOwor6auU6LK8ID4gY29uc2lkZXJhdGU7Civln7fmlL8gPiBiZVwtaW5cLXBvd2VyOwor6a2a56u/ID4gZmlzaGluZ1wtcm9kOwor5biM5pybID4gcm9cLXdpc2hcLWZvcjsKK+e0hOacgyA+IGFwcG9pbnRtZW50Owor6auU6KqNID4gcmVhbGl6YXRpb247Civlubjlpb0gPiBmb3J0dW5hdGVseTsKK+aOiOeyiSA+IHBvbGxpbmF0aW9uOwor6KO954mHID4gbW92aWVtYWtpbmc7CivmqZ/mnIMgPiBvcHBvcnR1bml0eTsKK+mXnOaKvCA+IHB1dFwtaW5cLWphaWw7CivoqJjkvY8gPiB0b1wtcmVtZW1iZXI7CivngYzmuokgPiB0b1wtaXJyaWdhdGU7CivpgJrlkYogPiB0b1wtYW5ub3VuY2U7CivpqZXpmb0gPiBibGF6aW5nXC1zdW47Civmv4PnuK4gPiBjb25jZW50cmF0ZTsKK+Wci+exjSA+IG5hdGlvbmFsaXR5Owor5YmN5Lu7ID4gcHJlZGVjZXNzb3I7Civou5/nop8gPiBmbG9wcHlcLWRpc2s7Civou5/nm6QgPiBmbG9wcHlcLWRpc2s7CivlsY/ploAgPiBzY3JlZW5cLWRvb3I7Civmi5zoqKogPiBwYXlcLWFcLXZpc2l0Owor6YCA5Ye6ID4gdG9cLXdpdGhkcmF3Owor5o6h54WkID4gY29hbFwtbWluaW5nOwor5bmz5YehID4gY29tbW9ucGxhY2U7Civmi6zomZ8gPiBwYXJlbnRoZXNpczsKK+S+v+meiyA+IGNsb3RoXC1zaG9lczsKK+a7sumAjyA+IHRvXC1wZXJtZWF0ZTsKK+WBt+iBvSA+IHRvXC1ldmVzZHJvcDsKK+WHuuWFtSA+IHNlbmRcLXRyb29wczsKK+WfueWcnyA+IHRvXC1lYXJ0aFwtdXA7CivplovmiLAgPiBzdGFydFwtYVwtd2FyOwor5YiG5L2IID4gZGlzdHJpYnV0ZWQ7Civov7fkurogPiBmYXNjaW5hdGluZzsKK+WHuuS+hiA+IHRvXC1jb21lXC1vdXQ7Civkv6HpgZMgPiBzaWduYWxcLXBhdGg7CivprZTms5UgPiBlbmNoYW50bWVudDsKK+eUs+iriyA+IGFwcGx5XC1cKGZvclwpOwor6LeR6LuKID4gcmFjaW5nXC1iaWtlOwor5o+P5pG5ID4gdG9cLWRlc2NyaWJlOwor5YWr5bm0ID4gZWlnaHRcLXllYXJzOwor57GM5qy+ID4gZnVuZHJhaXNpbmc7Civln5/lkI0gPiBkb21haW5cLW5hbWU7CivlhavlrZcgPiBjaGFyYWN0ZXJcLTg7Civnm7jkvLwgPiB0b1wtcmVzZW1ibGU7CivmjKrnlKggPiB0b1wtZW1iZXp6bGU7CivnmbzlsZUgPiBkZXZlbG9wbWVudDsKK+ijneaJriA+IGRyZXNzXC11cFwtYXM7Civln47ljYAgPiBjaXR5XC1wcm9wZXI7Civmup3pgJogPiBjb21tdW5pY2F0ZTsKK+eCuuS6hiA+IGluXC1vcmRlclwtdG87Civnmb3lrq4gPiB3aGl0ZVwtaG91c2U7CivlhqDlhpUgPiByb3lhbFwtY3Jvd247Civlg4/mqKMgPiBwcmVzZW50YWJsZTsKK+W3p+WQiCA+IGNvaW5jaWRlbmNlOwor5oiw6LuKID4gd2FyXC1jaGFyaW90Owor55m95aScID4gd2hpdGVcLW5pZ2h0Owor6Iqx5bqXID4gZmxvd2VyXC1zaG9wOwor5o+P5a+rID4gdG9cLWRlc2NyaWJlOwor5L6/6Ka9ID4gYnJpZWZcLWd1aWRlOwor6IiK54mIID4gb2xkXC12ZXJzaW9uOwor5Zug5q2kID4gdGhhdFwtaXNcLXdoeTsKK+Wvpui4kCA+IHRvXC1wcmFjdGljZTsKK+Wwi+imkyA+IHRvXC1sb29rXC1mb3I7CivnkZ7pm6ogPiB0aW1lbHlcLXNub3c7CivlhazlhYMgPiBcKHllYXJcKVwtYVwuZFwuOwor6Imy5oOFID4gcG9ybm9ncmFwaHk7CivkvoboqKogPiBwYXlcLWFcLXZpc2l0Owor55m95YiDID4gbmFrZWRcLXN3b3JkOwor55m85Ye6ID4gdG9cLXNlbmRcLW91dDsKK+WwseiBtyA+IHRha2VcLW9mZmljZTsKK+aLlOeHnyA+IHN0cmlrZVwtY2FtcDsKK+aKiuepqSA+IHRydXN0d29ydGh5Owor5a656LKMID4gY291bnRlbmFuY2U7CivoiJLmnI0gPiBjb21mb3J0YWJsZTsKK+aJi+e6jCA+IGZvcm1hbGl0aWVzOwor5oyJ5pyfID4gb25cLXNjaGVkdWxlOwor6Lip5rC0ID4gdHJlYWRcLXdhdGVyOwor5a6j6KiAID4gZGVjbGFyYXRpb247Civku7/pgKAgPiBjb3VudGVyZmVpdDsKK+Wvpue/kiA+IHRvXC1wcmFjdGljZTsKK+WBt+aHtiA+IHRvXC1nb29mXC1vZmY7CivpvLvpn7MgPiBuYXNhbFwtc291bmQ7Civmn6XorYkgPiBpbnZlc3RpZ2F0ZTsKK+eSsOe5niA+IHRvXC1zdXJyb3VuZDsKK+WbsOWigyA+IHByZWRpY2FtZW50Owor5ruy5r++ID4gcGVyY29sYXRpb247Civnl4XlrrkgPiBzaWNrbHlcLWxvb2s7CivmiJDnuL4gPiBwZXJmb3JtYW5jZTsKK+S6uumWkyA+IG1hbicnc1wtd29ybGQ7Civnq6/nq5kgPiBlbmRcLXN0YXRpb247CivooY3lsIQgPiBkaWZmcmFjdGlvbjsKK+WbnuWgsSA+IFwoaW5cKVwtcmV0dXJuOwor5qOX5qi5ID4ganVqdWJlXC10cmVlOwor5oiW56ixID4gYWxzb1wtY2FsbGVkOwor5ous5bynID4gcGFyZW50aGVzaXM7Civpq5jlo5MgPiBoaWdoXC1oYW5kZWQ7Civku7Loo4EgPiBhcmJpdHJhdGlvbjsKK+WAvOW+lyA+IHRvXC1iZVwtd29ydGg7CivnlbDluLggPiBleGNlcHRpb25hbDsKK+iaseicoiA+IGdyYXNzaG9wcGVyOwor6ZG95a2UID4gYm9yZVwtYVwtaG9sZTsKK+eVtuWxgCA+IGF1dGhvcml0aWVzOwor6auY5ZSxID4gc2luZ1wtbG91ZGx5Owor5LuL6KmeID4gcHJlcG9zaXRpb247CivoiJ7liocgPiBkYW5jZVwtZHJhbWE7CivlgpHlh7ogPiBpbGx1c3RyaW91czsKK+eWhuWgtCA+IGJhdHRsZWZpZWxkOwor5L+h5pyNID4gdG9cLWNvbnZpbmNlOwor6IS+5rCjID4gdGVtcGVyYW1lbnQ7CivkuIrpvZIgPiB1cHBlclwtdGVldGg7CivmhbDol4kgPiBjb25zb2xhdGlvbjsKK+adv+imjyA+IHBsYXRlXC1nYXVnZTsKK+eXheS6uiA+IHNpY2tcLXBlcnNvbjsKK+mRkuWumiA+IHRvXC1hcHByYWlzZTsKK+WCmeS7tiA+IHNwYXJlXC1wYXJ0czsKK+eUn+aIkCA+IGJlXC1wcm9kdWNlZDsKK+S+v+ahtiA+IGNoYW1iZXJcLXBvdDsKK+iEq+awpyA+IGRlb3hpZGF0aW9uOwor5oOF6aGYID4gd2lsbGluZ25lc3M7CivnlJ/mhYsgPiB3YXlcLW9mXC1saWZlOwor5oyH5Ye6ID4gdG9cLWluZGljYXRlOwor5omB5qGDID4gYWxtb25kXC10cmVlOwor6LeL5omIID4gZG9taW5lZXJpbmc7Civkv67lvqkgPiByZXN0b3JhdGlvbjsKK+ethuW/gyA+IHBlbmNpbFwtbGVhZDsKK+S/oeaBryA+IGluZm9ybWF0aW9uOwor5LiN6aGnID4gaW5cLXNwaXRlXC1vZjsKK+eri+azlSA+IGxlZ2lzbGF0aW9uOwor5bCN5pa5ID4gY291bnRlcnBhcnQ7Civnqbrnmb0gPiBibGFua1wtc3BhY2U7CivnlLflpbMgPiBtYWxlXC1mZW1hbGU7CivnlbblgZogPiB0b1wtdHJlYXRcLWFzOwor6Leb5a2QID4gbGFtZVwtcGVyc29uOwor5LqU6JCsID4gNTBcLXRob3VzYW5kOwor5pyJ6LajID4gaW50ZXJlc3Rpbmc7Civkv53lrZggPiB0b1wtY29uc2VydmU7Civmt5jnpZ4gPiB0cm91Ymxlc29tZTsKK+ethuWiqCA+IHBlblwtYW5kXC1pbms7CivolpHppIUgPiBnaW5nZXJicmVhZDsKK+a6q+W6piA+IHRlbXBlcmF0dXJlOwor6LeR5aOYID4gYmFzZXJ1bm5pbmc7CivonJzmoYMgPiBob25leVwtcGVhY2g7CivpkZLkuo4gPiBpblwtbGlnaHRcLW9mOwor5Y+v6amaID4gYXN0b25pc2hpbmc7Civkvr/lrpwgPiBpbmV4cGVuc2l2ZTsKK+S4jei/rSA+IGNhbm5vdFwtY29wZTsKK+aJi+WvqyA+IGhhbmR3cml0aW5nOwor5LiL6LyJID4gdG9cLWRvd25sb2FkOwor6LiP5LiKID4gc2V0XC1mb290XC1vbjsKK+S9nOaWhyA+IGNvbXBvc2l0aW9uOwor5ruy5YWlID4gdG9cLXBlcm1lYXRlOwor55Kw5b2iID4gcmluZ1wtc2hhcGVkOwor5L2I5pmvID4gXChzdGFnZVwpXC1zZXQ7CivmiJLlvosgPiBjb21tYW5kbWVudDsKK+mpmuS6uiA+IGFzdG9uaXNoaW5nOwor6ai35YuVID4gZGlzdHVyYmFuY2U7CivmgrLop4AgPiBwZXNzaW1pc3RpYzsKK+WxrOS4iyA+IHN1Ym9yZGluYXRlOwor576O6LKMID4gZ29vZGxvb2tpbmc7CivnlKjku6UgPiBpblwtb3JkZXJcLXRvOwor6bq76JelID4gYW5hZXN0aGV0aWM7CivlsI/lnosgPiBzbWFsbFwtc2NhbGU7CivmiLDloLQgPiBiYXR0bGVmaWVsZDsKK+mhjOipniA+IGluc2NyaXB0aW9uOwor5L6L5aaCID4gZm9yXC1leGFtcGxlOwor6Laj5ZGzID4gdG9cLWludGVyZXN0Owor5L+h5LuwID4gZmlybVwtYmVsaWVmOwor6IKh5p2xID4gc3RvY2tob2xkZXI7Civpjq7lo5MgPiBzdXBwcmVzc2lvbjsKK+adv+eJmSA+IGZyb250XC10b290aDsKK+azs+iksiA+IHN3aW1cLXRydW5rczsKK+aineS+iyA+IHJlZ3VsYXRpb25zOwor5ZCM6LOqID4gaG9tb2dlbmVvdXM7CivnkrDlooMgPiBlbnZpcm9ubWVudDsKK+mhr+iRlyA+IG91dHN0YW5kaW5nOwor5LqM55m+ID4gdHdvXC1odW5kcmVkOwor5bCx5Lu7ID4gdGFrZVwtb2ZmaWNlOwor5p6c5rGBID4gZnJ1aXRcLWp1aWNlOwor6ICV55WcID4gZmFybVwtYW5pbWFsOwor6YeN6L+UID4gcmV0dXJuXC1cKHRvXCk7CivkuIvokL0gPiB3aGVyZWFib3V0czsKK+S4n+iHiSA+IGh1bWlsaWF0aW9uOwor5rOV6KaPID4gbGVnaXNsYXRpb247CivmiJHlnIsgPiBvdXJcLWNvdW50cnk7CivkvYjlsYAgPiBhcnJhbmdlbWVudDsKK+iuiumAmiA+IGJlXC1mbGV4aWJsZTsKK+m8u+a2lSA+IG5hc2FsXC1tdWN1czsKK+iyuOasviA+IFwoYmFua1wpXC1sb2FuOwor5rqW5YKZID4gcHJlcGFyYXRpb247CivlronlurcgPiBnb29kXC1oZWFsdGg7CivpoJDoqIggPiB0b1wtZm9yZWNhc3Q7CivogbDmmI4gPiBpbnRlbGxpZ2VudDsKK+mHj+ipniA+IG1lYXVyZVwtd29yZDsKK+eri+WNsyA+IGltbWVkaWF0ZWx5Owor5ZCN6JGXID4gbWFzdGVycGllY2U7Civku7vmhI8gPiBhcmJpdHJhcmlseTsKK+WuieWutiA+IHNldHRsZVwtZG93bjsKK+mlkuaBlSA+IGZvcmdpdmVuZXNzOwor5a6H5a6ZID4gb3V0ZXJcLXNwYWNlOwor55Ge5aOrID4gc3dpdHplcmxhbmQ7Civlloflj60gPiBsb3Vkc3BlYWtlcjsKK+aIkOS7vSA+IGNvbXBvc2l0aW9uOwor6aeB5YCSID4gZGVtb2xpc2hcLXNiOwor5rW05rGgID4gcHVibGljXC1iYXRoOwor5Lul5b6AID4gaW5cLXRoZVwtcGFzdDsKK+mhr+ebriA+IG91dHN0YW5kaW5nOwor5aWU6aazID4gcnVuXC1xdWlja2x5Owor54++5bm0ID4gY3VycmVudFwtYWdlOwor6YiU56WoID4gcGFwZXJcLW1vbmV5Owor56S656+EID4gZGVtb25zdHJhdGU7Civmmbrog70gPiBpbnRlbGxpZ2VudDsKK+S6pOaPmyA+IHRvXC1leGNoYW5nZTsKK+miqOazoiA+IGRpc3R1cmJhbmNlOwor6Jel54mpID4gbWVkaWNhbWVudHM7CivphJnpmYsgPiBzdXBlcmZpY2lhbDsKK+iAg+afpSA+IGludmVzdGlnYXRlOwor5aSc6bavID4gbmlnaHRpbmdhbGU7CivppJDlu7MgPiBkaW5pbmdcLWhhbGw7CivljJfpn5MgPiBub3J0aFwta29yZWE7CivkupLmj5sgPiB0b1wtZXhjaGFuZ2U7CivlqIHohIUgPiB0b1wtdGhyZWF0ZW47CivnqbrliY0gPiB1bnByZWNlZGVudDsKK+mgkOe0hCA+IHJlc2VydmF0aW9uOwor56Kw6KaLID4gdG9cLXJ1blwtaW50bzsKK+afpeWHuiA+IHRvXC1maW5kXC1vdXQ7CivljYrpgoogPiBoYWxmXC1vZlwtc3RoOwor5pqX56S6ID4gZHJvcFwtYVwtaGludDsKK+S6pOW+gCA+IGFzc29jaWF0aW9uOwor5rCj6LOqID4gdGVtcGVyYW1lbnQ7Civmm7jms5UgPiBjYWxsaWdyYXBoeTsKK+WNk+i2iiA+IGRpc3RpbmN0aW9uOwor6IKh5YO5ID4gc3RvY2tcLXByaWNlOwor5Lmd5pyIID4gbmludGhcLW1vbnRoOwor5Li75qyKID4gc292ZXJlaWdudHk7CivlpJrppJggPiBzdXBlcmZsdW91czsKK+aBsOeVtiA+IGFwcHJvcHJpYXRlOwor6IG95Y+WID4gaGVhclwtXChuZXdzXCk7CivmhJ/mgKcgPiBzZW5zaWJpbGl0eTsKK+WVhuS6uiA+IGJ1c2luZXNzbWFuOwor56aB5q2iID4gdG9cLXByb2hpYml0Owor56eJ5om/ID4gdGFrZVwtb3JkZXJzOwor5ZSu5YO5ID4gdG9cLXNlbGxcLWZvcjsKK+WsjOWqmiA+IGZsaXJ0YXRpb3VzOwor6aCB56K8ID4gcGFnZVwtbnVtYmVyOwor5Lqk5aq+ID4gdG9cLWhhdmVcLXNleDsKK+S4iua1gSA+IHVwcGVyXC1jbGFzczsKK+mcuOmBkyA+IG92ZXJiZWFyaW5nOwor5rOi54C+ID4gZ3JlYXRcLXdhdmVzOwor5rOi5r+kID4gZ3JlYXRcLXdhdmVzOwor5LiN5q2iID4gaW5jZXNzYW50bHk7CivniK3orbAgPiBjb250cm92ZXJzeTsKK+S4readsSA+IG1pZGRsZVwtZWFzdDsKK+S4ueaWuSA+IGZvbGtcLXJlbWVkeTsKK+mHjeeWiiA+IG92ZXJsYXBwaW5nOwor5Lit5pelID4gY2hpbmFcLWphcGFuOwor5ZCe5rKSID4gdG9cLWVtYmV6emxlOwor6YeN54++ID4gdG9cLXJlYXBwZWFyOwor6aOf5aCCID4gZGluaW5nXC1oYWxsOwor5puy5oqYID4gY29tcGxpY2F0ZWQ7CivpnbboiLkgPiB0YXJnZXRcLXNoaXA7CivljYPokKwgPiB0ZW5cLW1pbGxpb247CivkuIDmnIggPiBmaXJzdFwtbW9udGg7Civniq/nl4UgPiB0b1wtZmFsbFwtaWxsOwor5ZCM5q2lID4gc3luY2hyb25vdXM7Civlk7rkubMgPiBicmVhc3RcLWZlZWQ7Civoqr/oroogPiB0b1wtbW9kdWxhdGU7CivkuLvlvLUgPiB0b1wtYWR2b2NhdGU7CivlqZrmnJ8gPiB3ZWRkaW5nXC1kYXk7CivmmpfmrrogPiBhc3Nhc3NpbmF0ZTsKK+avm+ifsiA+IGNhdGVycGlsbGFyOwor5Li75bitID4gY2hhaXJwZXJzb247CivpgorpmbIgPiBib3JkZXJcLWFyZWE7CivljbHnr6QgPiBkZWF0aGx5XC1pbGw7CivkupLli5UgPiBpbnRlcmFjdGl2ZTsKK+WmlueyviA+IGV2aWxcLXNwaXJpdDsKK+S4reW5tCA+IG1pZGRsZVwtYWdlZDsKK+iyneS4mCA+IHNoZWxsXC1tb3VuZDsKK+aEj+WQkSA+IGRpc3Bvc2l0aW9uOwor5rKI5r6xID4gcHJlY2lwaXRhdGU7Civlj5bmsbogPiBkZXBlbmRcLXVwb247CivnuYHopIcgPiBjb21wbGljYXRlZDsKK+malOmboiA+IHRvXC1zZXBhcmF0ZTsKK+S4ieW5tCA+IHRocmVlXC15ZWFyczsKK+malOmWiyA+IHRvXC1zZXBhcmF0ZTsKK/ChvbEgPiBhXC1oaWdoXC1oaWxsOwor5LiL5bGsID4gc3Vib3JkaW5hdGU7CivkuIrlsaQgPiB1cHBlclwtbGF5ZXI7CivnubznuowgPiB0b1wtY29udGludWU7Civlo6/op4AgPiBzcGVjdGFjdWxhcjsKK+aUv+iuiiA+IGNvdXBcLWQnJ2V0YXQ7CivnpZ7lrbggPiB0aGVvbG9naWNhbDsKK+e5geiPryA+IGZsb3VyaXNoaW5nOwor6aGM5a2XID4gaW5zY3JpcHRpb247CivlkIjlvbEgPiBqb2ludFwtcGhvdG87CivlpoLnlasgPiBwaWN0dXJlc3F1ZTsKK+S4jeWgqiA+IGNhbm5vdFwtYmVhcjsKK+iXpeWTgSA+IG1lZGljYW1lbnRzOwor6aCG5oeJID4gY29tcGx5XC13aXRoOwor57WC6bueID4gZGVzdGluYXRpb247CivniIbnq7kgPiBmaXJlY3JhY2tlcjsKK+W+l+eXhSA+IHRvXC1mYWxsXC1pbGw7CivpgI/pnLIgPiB0b1wtbGVha1wtb3V0Owor6Zi76ZqUID4gdG9cLXNlcGFyYXRlOwor54m55qyKID4gcHJlcm9nYXRpdmU7CivlpKrnqbogPiBvdXRlclwtc3BhY2U7CivliIbpm6IgPiB0b1wtc2VwZXJhdGU7CivnpoHku6QgPiBwcm9oaWJpdGlvbjsKK+S4jeWFjSA+IHVuYXZvaWRhYmxlOwor6KqT57SEID4gaG9ub3JcLWJvdW5kOwor6K2J5pu4ID4gY3JlZGVudGlhbHM7CivmsojmgJ0gPiBjb250ZW1wbGF0ZTsKK+ino+mHiyA+IGV4cGxhbmF0aW9uOwor5YiG6ZaLID4gdG9cLXNlcGFyYXRlOwor56SB5bO2ID4gcmVlZlwtaXNsYW5kOwor6YCa6YGOID4gYnlcLW1lYW5zXC1vZjsKK+i/jumiqCA+IGluXC10aGVcLXdpbmQ7CivkuIrku7sgPiB0YWtlXC1vZmZpY2U7CivlpoLmraQgPiBpblwtdGhpc1wtd2F5Owor6KuW54itID4gY29udHJvdmVyc3k7CivmgqDkuYUgPiBlc3RhYmxpc2hlZDsKK+S4iuS4iyA+IHVwXC1hbmRcLWRvd247CivmgZDlmocgPiB0b1wtdGhyZWF0ZW47CivntKDpo58gPiB2ZWdldGFibGVzOwor57iu55+tID4gdG9cLWN1cnRhaWw7CivmlLnntYQgPiByZW9yZ2FuaXplOwor5pOB6K23ID4gdG9cLWVuZG9yc2U7CivpgLLooYwgPiB0b1wtYWR2YW5jZTsKK+WllOazoiA+IHJ1c2hcLWFib3V0Owor5b6M5q+NID4gc3RlcG1vdGhlcjsKK+aVo+eZvCA+IGRpc3RyaWJ1dGU7CivlpLHngasgPiBjYXRjaFwtZmlyZTsKK+iqleeUnyA+IHRvXC1iZVwtYm9ybjsKK+WkmueIviA+IFwoYm9iXClcLWRvbGU7CivlvbzmraQgPiBlYWNoXC1vdGhlcjsKK+mgkOWFiCA+IGJlZm9yZWhhbmQ7Civpl5zploAgPiBjbG9zZVwtZG93bjsKK+mBleiDjCA+IHRvXC12aW9sYXRlOwor57Wx6KiIID4gc3RhdGlzdGljczsKK+WHveizvCA+IG1haWxcLW9yZGVyOwor6aCQ5YKZID4gdG9cLXByZXBhcmU7Civlo4Hnq4sgPiBcKG9mXC1jbGlmZnM7CivmmKXlraMgPiBzcHJpbmd0aW1lOwor5pGY6YyEID4gdG9cLWV4dHJhY3Q7CivpoJLkvYggPiBwcm9tdWxnYXRlOwor5q+P5qyhID4gZXZlcnlcLXRpbWU7Civnt6jnqIsgPiB0b1wtcHJvZ3JhbTsKK+WIhuipniA+IHBhcnRpY2lwbGU7CivlvozmnJ8gPiBsYXRlXC1zdGFnZTsKK+aViOeUqCA+IHVzZWZ1bG5lc3M7Civns6fpo58gPiBmb29kc3R1ZmZzOwor6I2S6YeOID4gd2lsZGVybmVzczsKK+aSkuisiiA+IHRlbGxcLWFcLWxpZTsKK+eHg+eHkiA+IGNvbWJ1c3Rpb247CivlvITnm7QgPiBzdHJhaWdodGVuOwor6YG356e7ID4gdG9cLW1pZ3JhdGU7CivlpKfmsKMgPiBhdG1vc3BoZXJlOwor6KqN54K6ID4gdG9cLWJlbGlldmU7CivpmY3okL0gPiB0b1wtZGVzY2VuZDsKK+WJjeiAhSA+IHRoZVwtZm9ybWVyOwor5pWI546HID4gZWZmaWNpZW5jeTsKK+mdtuW/gyA+IGJ1bGwnJ3NcLWV5ZTsKK+WLg+eEtiA+IGFnaXRhdGVkbHk7Civnop/lrZAgPiBzbWFsbFwtZGlzaDsKK+ism+W4qyA+IGluc3RydWN0b3I7Civlj5bku6MgPiBzdWJzdGl0dXRlOwor5paw5pWZID4gcHJvdGVzdGFudDsKK+WkmuasoSA+IG1hbnlcLXRpbWVzOwor5aWH5pW4ID4gb2RkXC1udW1iZXI7Civlv4XlsIcgPiBpbmV2aXRhYmx5Owor6Zmw57K+ID4gc2V4XC1mbHVpZHM7CivlppblrIggPiBlbmNoYW50aW5nOwor54uC5LqCID4gaHlzdGVyaWNhbDsKK+e5geamriA+IHByb3NwZXJvdXM7Civnubzmib8gPiB0b1wtaW5oZXJpdDsKK+aTjee4sSA+IHRvXC1vcGVyYXRlOwor5YWo6Z2iID4gYWxsXC1hcm91bmQ7CivljpjljYcgPiBjZW50aWxpdGVyOwor6Kq/5pW0ID4gYWRqdXN0bWVudDsKK+Wmk+WlsyA+IHByb3N0aXR1dGU7CivojZLorKwgPiByaWRpY3Vsb3VzOwor55m96aCtID4gaG9hcnlcLWhlYWQ7CivmsbrkuI0gPiBub3RcLWF0XC1hbGw7CivoqqrmmI4gPiB0b1wtZXhwbGFpbjsKK+WHuuiJsiA+IHJlbWFya2FibGU7CivlpbPlqb8gPiBzb25cLWluXC1sYXc7CivnibnliKUgPiBlc3BlY2lhbGx5Owor5YWN6ZmkID4gdG9cLXByZXZlbnQ7CivlpqXljZQgPiBjb21wcm9taXNlOwor5beo6LyqID4gbGFyZ2VcLXNoaXA7CivnhoTmu4UgPiBleHRpbmd1aXNoOwor54Wn54mHID4gcGhvdG9ncmFwaDsKK+mZhOethiA+IHBvc3RzY3JpcHQ7Civopqroh6ogPiBwZXJzb25hbGx5Owor5pS55q2jID4gdG9cLWNvcnJlY3Q7CivljYrlnJMgPiBzZW1pY2lyY2xlOwor6YGV54qvID4gdG9cLXZpb2xhdGU7CivniK3lpaogPiBmaWdodFwtb3ZlcjsKK+efreacnyA+IHNob3J0XC10ZXJtOwor5q+P5bm0ID4gZXZlcnlcLXllYXI7CivmlbXmiYsgPiBhbnRhZ29uaXN0Owor5Y2w5YOPID4gaW1wcmVzc2lvbjsKK+eyvumAmiA+IHByb2ZpY2llbnQ7CivlvojlpKcgPiB0cmVtZW5kb3VzOwor55m96YWSID4gc3Bpcml0XC11c3U7CivmmI7kuq4gPiBicmlnaHRuZXNzOwor6I2J6I6TID4gc3RyYXdiZXJyeTsKK+WgseeroCA+IG5ld3NwYXBlcnM7CivlpJrlubQgPiBtYW55XC15ZWFyczsKK+iqnuW9mSA+IHZvY2FidWxhcnk7Civml6nlhYggPiBwcmV2aW91c2x5Owor54mM5YO5ID4gbGlzdFwtcHJpY2U7Civlt6vooZMgPiB3aXRjaGNyYWZ0Owor6YGO5rihID4gdHJhbnNpdGlvbjsKK+aOoumaqiA+IHRvXC1leHBsb3JlOwor5aSn5a24ID4gdW5pdmVyc2l0eTsKK+eEoeeQhiA+IGlycmF0aW9uYWw7CivljYrlg7kgPiBoYWxmXC1wcmljZTsKK+WNgOWIpSA+IGRpZmZlcmVuY2U7CivmloflrbggPiBsaXRlcmF0dXJlOwor5b6e5YmNID4gcHJldmlvdXNseTsKK+mXnOiBryA+IGJlXC1yZWxhdGVkOwor5Zyw6ZyHID4gZWFydGhxdWFrZTsKK+ingOecviA+IHNwZWN0YXRvcnM7CivmjpLpmoogPiB0b1wtbGluZVwtdXA7CivliIbnmbwgPiBkaXN0cmlidXRlOwor5pSq5pO+ID4gdG9cLWRpc3R1cmI7CivmlbjlrbggPiBtYXRoZW1hdGljOwor54ax5b+DID4gZW50aHVzaWFzbTsKK+mbu+WtkCA+IGVsZWN0cm9uaWM7Civnmb3oqbEgPiB2ZXJuYWN1bGFyOwor54K457OVID4gZnJpZWRcLWNha2U7CivloIbnqY0gPiBhY2N1bXVsYXRlOwor5pWj5bCEID4gc2NhdHRlcmluZzsKK+iTi+S4liA+IHVucml2ZWxsZWQ7Civnt6jmjpIgPiB0b1wtYXJyYW5nZTsKK+aNlemtmiA+IGNhdGNoXC1maXNoOwor5Ye655SfID4gdG9cLWJlXC1ib3JuOwor5YWB6Ku+ID4gdG9cLXByb21pc2U7Civoqr/lkowgPiBoYXJtb25pb3VzOwor5b6M5L6GID4gYWZ0ZXJ3YXJkczsKK+Wkp+WWnCA+IGV4dWx0YXRpb247CivmlL/lupwgPiBnb3Zlcm5tZW50Owor6Kit5pa9ID4gZmFjaWxpdGllczsKK+aWueS+vyA+IGNvbnZlbmllbnQ7CivmjqXpgJogPiB0b1wtY29ubmVjdDsKK+atpOW+jCA+IGFmdGVyXC10aGlzOwor5bqn5qiZID4gY29vcmRpbmF0ZTsKK+e2k+attyA+IGV4cGVyaWVuY2U7CivmqILop4AgPiBvcHRpbWlzdGljOwor5aSq5Y+kID4gaW1tZW1vcmlhbDsKK+mbouWpmiA+IHRvXC1kaXZvcmNlOwor54eI5aGUID4gbGlnaHRob3VzZTsKK+WHuueJiCA+IHRvXC1wdWJsaXNoOwor6KqH5aSnID4gZXhhZ2dlcmF0ZTsKK+WFteiIuSA+IG1hblwtb2ZcLXdhcjsKK+WKoOW3niA+IGNhbGlmb3JuaWE7CivlgrfpoqggPiBjYXRjaFwtY29sZDsKK+aUvuWwhCA+IHRvXC1yYWRpYXRlOwor5q+U5L6LID4gcHJvcG9ydGlvbjsKK+mBt+W+mSA+IHRvXC1taWdyYXRlOwor6Zqo5b6MID4gc29vblwtYWZ0ZXI7CivliY3mma8gPiBmb3JlZ3JvdW5kOwor6YG35bu2ID4gbG9uZ1wtZGVsYXk7Civoo5zoqp4gPiBjb21wbGVtZW50Owor5Yqg5a+GID4gdG9cLWVuY3J5cHQ7CivmlbTlkIggPiB0b1wtY29uZm9ybTsKK+mBleaKlyA+IHRvXC1kaXNvYmV5Owor55uj552jID4gdG9cLWNvbnRyb2w7CivmloflhbcgPiBzdGF0aW9uZXJ5Owor5q+P5Lq6ID4gcGVyXC1wZXJzb247CivpmLvmraIgPiB0b1wtcHJldmVudDsKK+mYsuawtCA+IHdhdGVycHJvb2Y7CivpmLLmraIgPiB0b1wtcHJldmVudDsKK+mAgOatpSA+IGRlZ2VuZXJhdGU7CivpganluqYgPiBtb2RlcmF0ZWx5Owor6YGg5b6BID4gZXhwZWRpdGlvbjsKK+eZveiHiSA+IHdoaXRlXC1mYWNlOwor57i95YWxID4gYWx0b2dldGhlcjsKK+ino+aekCA+IHRvXC1hbmFseXplOwor6Kmm5ZyWID4gdG9cLWF0dGVtcHQ7CivoiabovIkgPiBzaGlwXC1iYXNlZDsKK+efpeWQjSA+IHdlbGxcLWtub3duOwor5aSa5LqLID4gbWVkZGxlc29tZTsKK+WGsOeQgyA+IGljZVwtaG9ja2V5Owor6Kej5pS+ID4gbGliZXJhdGlvbjsKK+WBvemggiA+IGZhbHNlXC1yb29mOwor6auY6ZqOID4gaGlnaFwtbGV2ZWw7CivmjY/pgKAgPiB0b1wtbWFrZVwtdXA7CivliIbmnpAgPiB0b1wtYW5hbHl6ZTsKK+aTgeaKsSA+IHRvXC1lbWJyYWNlOwor6Zu25LiLID4gYmVsb3dcLXplcm87Civlt67nlbAgPiBkaWZmZXJlbmNlOwor5pS+5Ye6ID4gdG9cLWxldFwtb2ZmOwor5YWs55+zID4gaGVjdG9saXRlcjsKK+aUu+WFiyA+IHRvXC1jYXB0dXJlOwor5aCx5pW4ID4gbnVtYmVyXC1vZmY7CivmlLblhaUgPiB0b1wtdGFrZVwtaW47CivoqZ7lhbggPiBkaWN0aW9uYXJ5Owor6Kit5ZyoID4gbG9jYXRlZFwtYXQ7CivpmZDluqYgPiBsaW1pdGF0aW9uOwor6KOx57OKID4gd2FsbFwtcGFwZXI7CivmqqLmn6UgPiBpbnNwZWN0aW9uOwor54CG6IG3ID4gd3Jvbmdkb2luZzsKK+W6h+W7lSA+IFwob2ZcLWFcLXRyZWU7CivpmbDlpKkgPiBjbG91ZHlcLWRheTsKK+e1guaWvCA+IGV2ZW50dWFsbHk7CivoqILlqZogPiBlbmdhZ2VtZW50Owor6Zm45Z+6ID4gbGFuZFwtYmFzZWQ7Civlu5rlj7ggPiBjb29rXCxcLWNoZWY7CivlgrPoqqogPiBpdFwtaXNcLXNhaWQ7Civpq5jpgJ8gPiBoaWdoXC1zcGVlZDsKK+WItuWumiA+IHRvXC1kcmF3XC11cDsKK+mAn+WwhCA+IHJhcGlkXC1maXJlOwor6YG65YKzID4gaGVyZWRpdGFyeTsKK+iIiei+piA+IHRvXC1jb25kdWN0Owor5Yip5a6zID4gZm9ybWlkYWJsZTsKK+aUquS6giA+IHRvXC1jb25mdXNlOwor5YWl542EID4gZ29cLXRvXC1qYWlsOwor57Gz57KJID4gcmljZVwtZmxvdXI7Civns77mraMgPiB0b1wtY29ycmVjdDsKK+imquaJiyA+IHBlcnNvbmFsbHk7CivovrLmnZEgPiBydXJhbFwtYXJlYTsKK+WJr+WIiiA+IHN1cHBsZW1lbnQ7Civmk43loLQgPiBwbGF5Z3JvdW5kOwor5Z+65pa8ID4gYmVjYXVzZVwtb2Y7CivooY3oroogPiB0b1wtZGV2ZWxvcDsKK+WFqOeEtiA+IGNvbXBsZXRlbHk7CivlnJjogZogPiB0b1wtcmV1bml0ZTsKK+eZveeLkCA+IGFyY3RpY1wtZm94Owor5pOB5aGeID4gY29uZ2VzdGlvbjsKK+iojuWOrSA+IGRpc2d1c3Rpbmc7CivpgZXlgrIgPiB0b1wtZGlzb2JleTsKK+eZveeGviA+IHdoaXRlXC1oZWF0Owor55m954axID4gd2hpdGVcLWhlYXQ7Civnmb3nhoogPiBwb2xhclwtYmVhcjsKK+eZveeFpCA+IGFudGhyYWNpdGU7CivlgJrpnaAgPiB0b1wtbGVhblwtb247CivlubzlpbMgPiB5b3VuZ1wtZ2lybDsKK+ingOWvnyA+IHRvXC1vYnNlcnZlOwor5YW15rOVID4gYXJ0XC1vZlwtd2FyOwor55W26YG4ID4gYmVcLWVsZWN0ZWQ7CivmkZjmioQgPiB0b1wtZXh0cmFjdDsKK+ebo+aOpyA+IHRvXC1tb25pdG9yOwor5aCk5bK4ID4gZW1iYW5rbWVudDsKK+e1kOWxgCA+IGNvbmNsdXNpb247CivmrKDkvbMgPiBzdWJvcHRpbWFsOwor6YCx5YiwID4gdGhvdWdodGZ1bDsKK+imj+W+iyA+IGRpc2NpcGxpbmU7CivnrqHovYQgPiBhZG1pbmlzdGVyOwor5bi45bi4ID4gZnJlcXVlbnRseTsKK+aoueaogSA+IHRyZWVcLXN0dW1wOwor6KWv5omYID4gdG9cLXNldFwtb2ZmOwor5pON5YW4ID4gZHJpbGxcLWJvb2s7Civot5HppqwgPiBob3JzZVwtcmFjZTsKK+aqouWvnyA+IHRvXC1pbnNwZWN0Owor5beo5pifID4gZ2lhbnRcLXN0YXI7CivpmYTliqAgPiBhZGRpdGlvbmFsOwor5pON5L2cID4gdG9cLW9wZXJhdGU7Civnm7jlsI0gPiByZWxhdGl2ZWx5Owor54Sh5YO5ID4gaW52YWx1YWJsZTsKK+Wxj+mZpCA+IGdldFwtcmlkXC1vZjsKK+aQj+aWlyA+IHRvXC13cmVzdGxlOwor5ouc6KiXID4gcmVxdWVzdFwtc2I7CivmjpLnkIMgPiB2b2xsZXliYWxsOwor57SA5b6LID4gZGlzY2lwbGluZTsKK+W6l+S4uyA+IHNob3BcLW93bmVyOwor55O26aC4ID4gYm90dGxlbmVjazsKK+W5q+WKqSA+IGFzc2lzdGFuY2U7Civluavlh7YgPiBhY2NvbXBsaWNlOwor5YiG5YilID4gZGlmZmVyZW5jZTsKK+WFrOaSriA+IG1pbGxpbGl0ZXI7CivntZDlkIggPiB0b1wtY29tYmluZTsKK+exg+eQgyA+IGJhc2tldGJhbGw7CivmirHosqAgPiBhc3BpcmF0aW9uOwor566X6KGTID4gYXJpdGhtZXRpYzsKK+aOqOa4rCA+IGNvbmplY3R1cmU7CivopoHloZ4gPiBzdHJvbmdob2xkOwor55m95peXID4gd2hpdGVcLWZsYWc7CivmvJToroogPiB0b1wtZGV2ZWxvcDsKK+a7v+i2syA+IHRvXC1zYXRpc2Z5Owor6amF6YCQID4gYmFuaXNobWVudDsKK+ihqOekuiA+IHRvXC1leHByZXNzOwor6L6y5ZySID4gcGxhbnRhdGlvbjsKK+mrmOe0miA+IGhpZ2hcLWxldmVsOwor5oqV6LOHID4gaW52ZXN0bWVudDsKK+eci+WIsCA+IHNlZVwtXCh0aGF0XCk7Civmj5DmmIcgPiB0b1wtcHJvbW90ZTsKK+WFjOaPmyA+IHRvXC1jb252ZXJ0Owor5YWs5byVID4gaGVjdG9tZXRlcjsKK+mnlemmrSA+IHRvXC1jb250cm9sOwor5bCI6ZaAID4gc3BlY2lhbGlzdDsKK+eci+S+hiA+IGFwcGFyZW50bHk7Civoh4noibIgPiBjb21wbGV4aW9uOwor6I2J5Y+iID4gdW5kZXJicnVzaDsKK+WFvOWuuSA+IGNvbXBhdGlibGU7Civou43muK8gPiBuYXZhbFwtcG9ydDsKK+aMieeriyA+IG9yZGluYXRpb247CivnlJ/oqIggPiBsaXZlbGlob29kOwor5o6M5quDID4gc2hvcGtlZXBlcjsKK+ihqOePviA+IGV4cHJlc3Npb247CivlhanlsrggPiBiaWxhdGVyaWFsOwor5YWx5a2YID4gdG9cLWNvZXhpc3Q7Civlm5rniq8gPiBhXC1wcmlzb25lcjsKK+WBiee4viA+IGdyZWF0XC1hY3RzOwor55u45LqSID4gZWFjaFwtb3RoZXI7CivooY3nlJ8gPiBkZXJ2aWF0aXZlOwor5Yaw5YiAID4gaWNlXC1za2F0ZXM7CivmjqXmlLYgPiB0b1wtcmVjZWl2ZTsKK+eUqOiZlSA+IHVzZWZ1bG5lc3M7CivmioDooZMgPiB0ZWNobm9sb2d5Owor6Iqx5omYID4gcmVjZXB0YWNsZTsKK+Wuv+mhjCA+IGFzc2lnbm1lbnQ7CivprZrmjpIgPiBmaXNoXC1zdGVhazsKK+aMh+eUsiA+IGZpbmdlcm5haWw7CivlrbjpvaEgPiBzY2hvb2xcLWFnZTsKK+aNqOajhCA+IHRvXC1naXZlXC11cDsKK+W3ruWIpSA+IGRpZmZlcmVuY2U7Civkvb/phokgPiBpbnRveGljYXRlOwor5ouY56aBID4gY29uc3RyYWludDsKK+Wci+acgyA+IHBhcmxpYW1lbnQ7CivotoXotoogPiB0b1wtc3VycGFzczsKK+aOqOW7oyA+IHBvcHVsYXJpemU7CivkvaPph5EgPiBjb21taXNzaW9uOwor55m95ZaJID4gZGlwaHRoZXJpYTsKK+aOiOaEjyA+IHRvXC1pbnNwaXJlOwor5YWs5YiGID4gY2VudGltZXRlcjsKK+ethuiAhSA+IHRoZVwtYXV0aG9yOwor5L+d6IKyID4gY2hpbGRcLWNhcmU7Civnmb3ljYAgPiB3aGl0ZVwtYXJlYTsKK+aPueWCtSA+IGJlXC1pblwtZGVidDsKK+a8q+eVqyA+IGNhcmljYXR1cmU7CivlgZzngasgPiBjZWFzZVwtZmlyZTsKK+iJr+W/gyA+IGNvbnNjaWVuY2U7Civllq7oqr8gPiBtb25vdG9ub3VzOwor6KGo5piOID4gbWFrZVwta25vd247CivmipXnqL8gPiBjb250cmlidXRlOwor5qih5Lu/ID4gdG9cLWltaXRhdGU7CivnmbzkvYggPiB0b1wtcmVsZWFzZTsKK+ainee0hCA+IHRyZWF0eXBhY3Q7CivlsI7oiKogPiBuYXZpZ2F0aW9uOwor5o6S5aSWID4geGVub3Bob2JpYzsKK+WwjuiHtCA+IHRvXC1sZWFkXC10bzsKK+WxleekuiA+IHRvXC1vcGVuXC11cDsKK+Wwi+iIiyA+IHRvXC1wcm92b2tlOwor5YWI5L6LID4gYW50ZWNlZGVudDsKK+a7hee1lSA+IGV4dGluZ3Vpc2g7Civos5PppKggPiBndWVzdGhvdXNlOwor5qiT5LiLID4gZG93bnN0YWlyczsKK+aPkOWAoSA+IHRvXC1wcm9tb3RlOwor5omT57WQID4gdGllXC1hXC1rbm90Owor6IeG5risID4gYXNzdW1wdGlvbjsKK+iIiOaXuiA+IHByb3NwZXJvdXM7CivlsrjmqJkgPiBsaWdodGhvdXNlOwor5ouU5rKzID4gdHVnXC1vZlwtd2FyOwor55Sf55SiID4gdG9cLXByb2R1Y2U7Civoo5zlhJ8gPiBjb21wZW5zYXRlOwor5Lq66auUID4gaHVtYW5cLWJvZHk7Civmjqjlh7ogPiB0b1wtcmVsZWFzZTsKK+iDnuihoyA+IGFmdGVyYmlydGg7CivmjJbmjpggPiBleGNhdmF0aW9uOwor5Zub5bm0ID4gZm91clwteWVhcnM7CivppJDppKggPiByZXN0YXVyYW50Owor5oyH5o+uID4gdG9cLWNvbmR1Y3Q7CivogZbpnYggPiBob2x5XC1naG9zdDsKK+aMh+aOpyA+IGFjY3VzYXRpb247CivmiYvnqL8gPiBtYW51c2NyaXB0Owor5oq55rK5ID4gdG9cLWFubm9pbnQ7CivooajlsLogPiByZWFyXC1zaWdodDsKK+eVoualrSA+IGdyYWR1YXRpb247Civlm7rln7cgPiBwZXJzaXN0ZW50Owor5p+l6KmiID4gdG9cLWlucXVpcmU7Civpo6/ppKggPiByZXN0YXVyYW50Owor55aR5oWuID4gaGVzaXRhdGlvbjsKK+WWieiIjCA+IG1vdXRocGllY2U7Civkvr/nlbYgPiBjb252ZW5pZW50Owor6IGv6YCaID4gY29ubmVjdGlvbjsKK+mnkOe0riA+IHRvXC1zdGF0aW9uOwor57C95Ye6ID4gdG9cLWxvZ1wtb2ZmOwor6auY5bGkID4gaGlnaFwtbGV2ZWw7CivppIXpkLogPiBiYWtpbmdcLXBhbjsKK+WxouasoSA+IHJlcGVhdGVkbHk7CivpjpfnrqEgPiBndW5cLWJhcnJlbDsKK+mQteadvyA+IGlyb25cLXBhbmVsOwor6Y+I55KwID4gY2hhaW5cLWxpbms7CivmjYnlj5YgPiB0b1wtY2FwdHVyZTsKK+erreeboSA+IGV4aGF1c3Rpb247Civou43kurogPiBzZXJ2aWNlbWFuOwor5oSP6aGYID4gYXNwaXJhdGlvbjsKK+iAgemgrSA+IG9sZFwtZmVsbG93Owor54++6LGhID4gYXBwZWFyYW5jZTsKK+mOrueXmyA+IGFuYWxnZXNpYWM7Civoh6rlsIogPiBzZWxmXC1wcmlkZTsKK+Wumue+qSA+IGRlZmluaXRpb247Civnq7bniK0gPiB0b1wtY29tcGV0ZTsKK+WvpuePviA+IHRvXC1hY2hpZXZlOwor5YK35LqhID4gY2FzdWFsdGllczsKK+aIqueEtiA+IGNvbXBsZXRlbHk7Civmpa3kvZkgPiBzcGFyZVwtdGltZTsKK+ihjOWIlyA+IHByb2Nlc3Npb247Civnl4XlgYcgPiBzaWNrXC1sZWF2ZTsKK+acn+mZkCA+IHRpbWVcLWxpbWl0Owor5oqK5oiyID4gYWNyb2JhdGljczsKK+a2iOiyuyA+IHRvXC1jb25zdW1lOwor6KGM5Lq6ID4gcGVkZXN0cmlhbjsKK+abuOmdoiA+IGluXC13cml0aW5nOwor56235a2QID4gY2hvcHN0aWNrczsKK+evgOWItiA+IHRlbXBlcmFuY2U7CivohZDmlZcgPiBjb3JydXB0aW9uOwor54246YarID4gdmV0ZXJpbmFyeTsKK+WBmuWHuiA+IHRvXC1wdXRcLW91dDsKK+S9nOeCuiA+IGFjY29tcGxpc2g7CivmipjlsIQgPiByZWZyYWN0aW9uOwor5ZaJ54KOID4gbGFyeW5naXRpczsKK+S6huinoyA+IHVuZGVyc3RhbmQ7Civkv6Hlv4MgPiBjb25maWRlbmNlOwor6IGv57mrID4gY29ubmVjdGlvbjsKK+ePjeiXjyA+IGNvbGxlY3Rpb247Civoh6rkv6EgPiBjb25maWRlbmNlOwor6IGW6IG3ID4gcHJpZXN0aG9vZDsKK+mMtuebpCA+IGRpYWxcLXBsYXRlOwor5qGD5qi5ID4gcGVhY2hcLXRyZWU7Civllq7mqKEgPiBzaW5nbGVtb2RlOwor5oOz6LGhID4gdG9cLWltYWdpbmU7CivkuIvpmY0gPiB0b1wtZGVjbGluZTsKK+WvqeafpSA+IHRvXC1leGFtaW5lOwor5bGk5aOTID4gbGFtaW5hdGlvbjsKK+WRqOmAnyA+IGN5Y2xlXC10aW1lOwor5pq06aKoID4gc3Rvcm1cLXdpbmQ7CivlsazlnLAgPiBkZXBlbmRlbmN5Owor5ryy5YO5ID4gYXBwcmVjaWF0ZTsKK+iBlue2kyA+IGhvbHlcLWJpYmxlOwor5Lu/55yfID4gdG9cLWVtdWxhdGU7Civlkozoq6cgPiBoYXJtb25pb3VzOwor5LuL57S5ID4gdG9cLXByZXNlbnQ7CivpoLvpoLsgPiByZXBlYXRlZGx5Owor57y66bueID4gd2Vha1wtcG9pbnQ7CivmnKzooYwgPiBvbmUnJ3NcLWxpbmU7Civmu7LlnZEgPiBzZXdhZ2VcLXBpdDsKK+ertuaKgCA+IHRvdXJuYW1lbnQ7CivmirXliLYgPiByZXNpc3RhbmNlOwor6ZC15YygID4gYmxhY2tzbWl0aDsKK+S7u+eUqCA+IHRvXC1hcHBvaW50Owor5Zau5pW4ID4gb2RkXC1udW1iZXI7Civmnb/ntJkgPiBwYXBlcmJvYXJkOwor5ZGI6YGeID4gdG9cLXByZXNlbnQ7Civms6LplbcgPiB3YXZlbGVuZ3RoOwor5bCI5b+DID4gYWJzb3JwdGlvbjsKK+WAi+WIpSA+IGluZGl2aWR1YWw7CivmnIPoqIggPiBhY2NvdW50YW50Owor5rWB6KGAID4gc2hlZFwtYmxvb2Q7CivogonniYcgPiBtZWF0XC1zbGljZTsKK+a6q+WupCA+IGdyZWVuaG91c2U7CivlgJrku5cgPiB0b1wtbGVhblwtb247CivmipHliLYgPiB0b1wtaW5oaWJpdDsKK+S9nOaWmSA+IGNvbmRpbWVudHM7Civkvr/lo7ogPiBiZWRcLXVyaW5hbDsKK+i2qOWliSA+IHRvXC1mYXduXC1vbjsKK+S9v+aAkiA+IGV4YXNwZXJhdGU7Civkvp3lsawgPiBkZXBlbmRlbmNlOwor6aCQ6ZiyID4gdG9cLXByZXZlbnQ7CivlgIvkurogPiBpbmRpdmlkdWFsOwor562J5YiwID4gd2FpdFwtdW50aWw7CivlsI/lp5AgPiB5b3VuZ1wtbGFkeTsKK+ahjOW4gyA+IHRhYmxlY2xvdGg7Civog4zmma8gPiBiYWNrZ3JvdW5kOwor5LiN6K6KID4gdW5jaGFuZ2luZzsKK+S4gOiyqyA+IGNvbnNpc3RlbnQ7Civmibnlh4YgPiB0b1wtYXBwcm92ZTsKK+enkeezuyA+IGRlcGFydG1lbnQ7CivmhIHnt5IgPiBtZWxhbmNob2x5Owor56We6KmxID4gZmFpcnlcLXRhbGU7CivkvY/miYAgPiBoYWJpdGF0aW9uOwor6aGb6KaGID4gc3VidmVyc2lvbjsKK+ahiOWtkCA+IGxvbmdcLXRhYmxlOwor5LqS55u4ID4gZWFjaFwtb3RoZXI7Civkvr/liKkgPiBjb252ZW5pZW50Owor5rKz6YKKID4gcml2ZXJcLWJhbms7CivkuI3omZ4gPiB1bmV4cGVjdGVkOwor5bCk5YW2ID4gZXNwZWNpYWxseTsKK+a3mOaxsCA+IHRvXC1kaWVcLW91dDsKK+iCpeaWmSA+IGZlcnRpbGl6ZXI7CivlronmjpIgPiB0b1wtYXJyYW5nZTsKK+itsOmZoiA+IHBhcmxpYW1lbnQ7Civni6Hovq8gPiB0b1wtcXVpYmJsZTsKK+esrOS6jCA+IG51bWJlclwtdHdvOwor5qC85aSWID4gZXNwZWNpYWxseTsKK+aatOihjCA+IHNhdmFnZVwtYWN0Owor5a+m5ZyoID4gaW5cLXJlYWxpdHk7CivotoXljYcgPiBleGFsdGF0aW9uOwor5Y+b6LuNID4gcmViZWxcLWFybXk7CivnjbjnqbQgPiBhbmltYWxcLWRlbjsKK+WtneaVrCA+IHRvXC1yZXNwZWN0Owor6K2m6ZCYID4gYWxhcm1cLWJlbGw7Civog5blrZAgPiBmYXRcLXBlcnNvbjsKK+WtmOaUviA+IHRvXC1kZXBvc2l0Owor6aST5q27ID4gc3RhcnZhdGlvbjsKK+S9teWQniA+IHN3YWxsb3dcLXVwOwor5a245b6SID4gYXBwcmVudGljZTsKK+aEn+a/gCA+IGFwcHJlY2lhdGU7Civmnb/mqIEgPiBzaGVldFwtcGlsZTsKK+aIkOWIhiA+IGluZ3JlZGllbnQ7CivlrrnlmaggPiByZWNlcHRhY2xlOwor6YeN6KaWID4gaW1wb3J0YW5jZTsKK+aClOe9qiA+IGNvbnZpY3Rpb247Civog73lipsgPiBjYXBhYmlsaXR5Owor5b+F6aCIID4gdG9cLWhhdmVcLXRvOwor6IKv5a6aID4gdG9cLWJlXC1zdXJlOwor5Lu75oCnID4gY2FwcmljaW91czsKK+eOi+eJjCA+IHRydW1wXC1jYXJkOwor5Y2X6Z2iID4gc291dGhcLXNpZGU7CivoloTojbcgPiBmaWVsZFwtbWludDsKK+mmrOWKmyA+IGhvcnNlcG93ZXI7CivmnIjnkIMgPiBcKHRoZVwpXC1tb29uOwor5ama57SEID4gZW5nYWdlbWVudDsKK+ePvuaIkCA+IHJlYWR5XC1tYWRlOwor6aC757mBID4gZnJlcXVlbnRseTsKK+itsOirliA+IHRvXC1jb21tZW50Owor5Lqk5pu/ID4gdG9cLXJlcGxhY2U7CivnpZ7np5ggPiBteXN0ZXJpb3VzOwor6aKo5r+VID4gcmhldW1hdGlzbTsKK+e+pOecviA+IHRoZVwtbWFzc2VzOwor56We56WVID4gbXlzdGVyaW91czsKK+WvhOS6iCA+IHRvXC1leHByZXNzOwor5LuB5oWIID4gYmVuZXZvbGVudDsKK+S7iuW+jCA+IGhlbmNlZm9ydGg7CivomZvmk6wgPiBmaWN0aXRpb3VzOwor6aGv54++ID4gYXBwZWFyYW5jZTsKK+Wkmum7qCA+IG11bHRpcGFydHk7CivkuI3nlbYgPiB1bnN1aXRhYmxlOwor5rKI6JC9ID4gc2lua1wsXC1mYWxsOwor6Kyb6L+wID4gdGFsa1wtYWJvdXQ7CivlrqPkvYggPiB0b1wtZGVjbGFyZTsKK+m8k+aOjCA+IHRvXC1hcHBsYXVkOwor5Lul5aSWID4gYXBhcnRcLWZyb207CivniIbpn7MgPiBzb25pY1wtYm9vbTsKK+S8vOS5jiA+IGFwcGFyZW50bHk7CivlpKfpq5QgPiBpblwtZ2VuZXJhbDsKK+epuuWFkiA+IHNwYXJlXC10aW1lOwor6aOf5oyHID4gZm9yZWZpbmdlcjsKK+eJtOinuCA+IGNvbnRyYWRpY3Q7CivnqIvluo8gPiBwcm9jZWR1cmVzOwor5byx6bueID4gd2Vha1wtcG9pbnQ7CivmmI7oqIAgPiBwcm9ub3VuY2VkOwor5pys5pyIID4gdGhpc1wtbW9udGg7Civlk7LlrbggPiBwaGlsb3NvcGh5Owor5Li55q+SID4gZXJ5c2lwZWxhczsKK+awo+ixoSA+IG1ldGVvcm9sZ3k7CivkupLmg6AgPiByZWNpcHJvY2FsOwor57i96auUID4gY29tcGxldGVseTsKK+iUrOiPnCA+IHZlZ2V0YWJsZXM7Civpo6/lupcgPiByZXN0YXVyYW50Owor5ZCr54eQID4gcGhvc3Bob3JpYzsKK+abtOatoyA+IGNvcnJlY3Rpb247Civpu5Hmnb8gPiBibGFja2JvYXJkOwor5b2Z6ZuGID4gdG9cLWNvbGxlY3Q7CivorJvop6MgPiB0b1wtZXhwbGFpbjsKK+mgkOefpSA+IGFudGljaXBhdGU7Civpg6jploAgPiBkZXBhcnRtZW50Owor5Lul5Y+KID4gYXNcLXdlbGxcLWFzOwor6IGv5ZCIID4gdG9cLWNvbWJpbmU7CivkuLvmoLwgPiBub21pbmF0aXZlOwor6YyE5Y+WID4gdG9cLXJlY3J1aXQ7CivmlrDpg44gPiBicmlkZWdyb29tOwor6ICM5b6MID4gYWZ0ZXJcLXRoYXQ7CivlrZflhbggPiBkaWN0aW9uYXJ5Owor5oKy5q2MID4gc2FkXC1tZWxvZHk7Civnvarni4AgPiBhY2N1c2F0aW9uOwor5q+U6YeNID4gcHJvcG9ydGlvbjsKK+izoOWEnyA+IGNvbXBlbnNhdGU7CivmtYHmlL4gPiBiYW5pc2htZW50Owor5Lq65Z2HID4gcGVyXC1jYXBpdGE7Civlj6/nlpEgPiBzdXNwaWNpb3VzOwor6IGe5ZCNID4gd2VsbFwta25vd247CivogIzlt7IgPiB0aGF0JydzXC1hbGw7CivmtbTlt74gPiBiYXRoXC10b3dlbDsKK+WQiueHiCA+IGNoYW5kZWxpZXI7CivogbLlg7kgPiByZXB1dGF0aW9uOwor6JaE54mHID4gdGhpblwtc2xpY2U7Civmm7TmlrAgPiB1cFwtdG9cLWRhdGU7CivpoavmoJcgPiB0b1wtdHJlbWJsZTsKK+acrOW6lSA+IGJhY2tncm91bmQ7Civpm4bpq5QgPiBjb2xsZWN0aXZlOwor5pWX6ZyyID4gXChvZlwtYVwtcGxvdDsKK+ippumplyA+IGV4cGVyaW1lbnQ7Civkurrlj6MgPiBwb3B1bGF0aW9uOwor5Y6Y57GzID4gY2VudGltZXRlcjsKK+atuOmghiA+IHN1Ym1pc3Npb247CivlpLHouaQgPiBiZVwtbWlzc2luZzsKK+mjveWSjCA+IHNhdHVyYXRpb247CivmraHpqLAgPiBqdWJpbGF0aW9uOwor5b6M6KOUID4gZGVzY2VuZGFudDsKK+awo+iJsiA+IGNvbXBsZXhpb247Civph5HniYwgPiBnb2xkXC1tZWRhbDsKK+S4jeacgyA+IGltcHJvYmFibGU7CivkuIrmnIggPiBsYXN0XC1tb250aDsKK+WQteaetiA+IHRvXC1xdWFycmVsOwor5oSP5aSWID4gdW5leHBlY3RlZDsKK+eip+e2oCA+IGRhcmtcLWdyZWVuOwor5LiN5pmCID4gZnJlcXVlbnRseTsKK+iAgeWllyA+IG9sZFwtdGhpbmdzOwor5Lim5oqKID4gdG9cLWluY2x1ZGU7Civoq4foq5YgPiB0b1wtZGlzY3VzczsKK+WPiueJqSA+IHRyYW5zaXRpdmU7Civpm7vou4ogPiB0cm9sbGV5YnVzOwor5qy66aiZID4gdG9cLWRlY2VpdmU7Civpoafmha4gPiBtaXNnaXZpbmdzOwor5Y+v5q+UID4gY29tcGFyYWJsZTsKK+S6i+WFiCA+IGluXC1hZHZhbmNlOwor6K2m54qsID4gcG9saWNlXC1kb2c7CivliZvpq5QgPiByaWdpZFwtYm9keTsKK+aZr+awoyA+IHByb3NwZXJpdHk7CivljZznra4gPiBkaXZpbmF0aW9uOwor5LiN5b+rID4gYmVcLXVuaGFwcHk7CivmmIznm5sgPiBwcm9zcGVyb3VzOwor5pS56YGOID4gdG9cLWNvcnJlY3Q7CivmlLnpgLIgPiB0b1wtaW1wcm92ZTsKK+S4jeW5uCA+IG1pc2ZvcnR1bmU7Civpm7voppYgPiB0ZWxldmlzaW9uOwor5b6M6ICFID4gdGhlXC1sYXR0ZXI7Civnuo/nuZ4gPiBpbnRlcnR3aW5lOwor5Yqg6YCfID4gYWNjZWxlcmF0ZTsKK+irs+e3tCA+IGNvbnZlcnNhbnQ7CivkuIDluqYgPiBmb3JcLWFcLXRpbWU7CivmraHov44gPiB0b1wtd2VsY29tZTsKK+WMluiCpSA+IGZlcnRpbGl6ZXI7Civloqjpj6EgPiBzdW5nbGFzc2VzOwor5Ymd6ZuiID4gXChvZlwtdGlzc3VlOwor5LiN5bGIID4gdW55aWVsZGluZzsKK+W9iOiXpSA+IGFtbXVuaXRpb247CivpoJDmlpkgPiBhbnRpY2lwYXRlOwor6aCC5pu/ID4gdG9cLXJlcGxhY2U7CivkuI3lrpogPiBpbmRlZmluaXRlOwor5LiN5a6JID4gaW50cmFucXVpbDsKK+iAgeS6uiA+IG9sZFwtcGVvcGxlOwor5pyf5YiKID4gcGVyaW9kaWNhbDsKK+efpeimuiA+IHBlcmNlcHRpb247CivlkIzmg4UgPiBjb21wYXNzaW9uOwor6YGp6YWNID4gYWRhcHRhdGlvbjsKK+WQiOaEjyA+IGFjY2VwdGFibGU7CivlpKfoh6MgPiBjaGFuY2VsbG9yOwor5ZCM5oCnID4gaG9tb3NleHVhbDsKK+aXpeebiiA+IGRheVwtYnlcLWRheTsKK+Wkp+iGvSA+IGNvdXJhZ2VvdXM7CivmnKzku70gPiBvbmUnJ3NcLWR1dHk7CivkuI3lpqUgPiBub3RcLXByb3BlcjsKK+acg+WPiyA+IG1lbWJlcnNoaXA7CivnubPntI0gPiBjb250cmlidXRlOwor5LiN5aSgID4gbm90XC1lbm91Z2g7Civnp4HkuIsgPiBpblwtcHJpdmF0ZTsKK+azouWzsCA+IHdhdmVcLWNyZXN0Owor5LiJ5aSpID4gdGhyZWVcLWRheXM7CivwoICNID4gZ2VuZXJhdGlvbjsKK+mdouebriA+IGFwcGVhcmFuY2U7Civlj43ml6UgPiBhbnRpXC1qYXBhbjsKK+W7uuitsCA+IHRvXC1wcm9wb3NlOwor5rOi5bCOID4gd2F2ZVwtZ3VpZGU7CivlqaLlpbMgPiBzbGF2ZVwtZ2lybDsKK+aykuaUtiA+IGNvbmZpc2NhdGU7Civlv6vmtLsgPiBnYXlcLFwtaGFwcHk7Civlj6/mgrIgPiBsYW1lbnRhYmxlOwor6KmV6Ki7ID4gY29tbWVudGFyeTsKK+WpiuWtkCA+IHByb3N0aXR1dGU7Civlv4XnhLYgPiBpbmV2aXRhYmxlOwor5Y2K55CDID4gaGVtaXNwaGVyZTsKK+mfv+aHiSA+IHJlc3BvbmRcLXRvOwor5b2Z57eoID4gY29sbGVjdGlvbjsKK+itsOacgyA+IHBhcmxpYW1lbnQ7CivlpKfntrEgPiBtYWluXC1wb2ludDsKK+aSnumomSA+IHRvXC1zd2luZGxlOwor54Ok6bSoID4gcm9hc3RcLWR1Y2s7CivmrYzoqZ4gPiBzb25nXC1seXJpYzsKK+S4puWFpSA+IG1lcmdlXC1pbnRvOwor6KiY6LyJID4gd3JpdGVcLWRvd247CivlvLHohIggPiB3ZWFrXC1wdWxzZTsKK+mhq+WLlSA+IHRvXC10cmVtYmxlOwor5Y6f5pysID4gb3JpZ2luYWxseTsKK+WQuOWQriA+IHRvXC1zdWNrXC1pbjsKK+eIhuegtCA+IHRvXC1ibG93XC11cDsKK+mBk+izgCA+IGNvbXBsaW1lbnQ7Civlj5blvpcgPiB0b1wtYWNxdWlyZTsKK+S4iuWNiiA+IGZpcnN0XC1oYWxmOwor5pWZ6IKyID4gdG9cLWVkdWNhdGU7CivkuI3li5UgPiBtb3Rpb25sZXNzOwor5ZCe5ZmsID4gdG9cLXN3YWxsb3c7CivopoHpu54gPiBtYWluXC1wb2ludDsKK+WPjeW+qSA+IHJlcGVhdGVkbHk7Civopb/pu54gPiB3ZXN0XC1wb2ludDsKK+S4puS4jSA+IG5vdFwtYXRcLWFsbDsKK+aWl+ecvCA+IGNyb3NzXC1leWVkOwor5rCj5rCbID4gYXRtb3NwaGVyZTsKK+ecvOmPoSA+IHNwZWN0YWNsZXM7CivkuI3lgpkgPiB1bnByZXBhcmVkOwor5qqi6amXID4gdG9cLWluc3BlY3Q7CivkuIDlho0gPiByZXBlYXRlZGx5Owor5oGr5ZqHID4gaW50aW1pZGF0ZTsKK+S4gOWFsSA+IGFsdG9nZXRoZXI7CivlpYnnjbsgPiBjb25zZWNyYXRlOwor5LiN5L6dID4gbm90XC1jb21wbHk7CivkuI3kvY8gPiByZXBlYXRlZGx5Owor5Y+q5aW9ID4gdG9cLWhhdmVcLXRvOwor6KiO6KuWID4gdG9cLWRpc2N1c3M7Civmlofnm7IgPiBpbGxpdGVyYXRlOwor5piO5pm6ID4gbm90XC11bndpc2U7Civlj6blpJYgPiBhZGRpdGlvbmFsOwor5pKe6YedID4gZmlyaW5nXC1waW47CivljZfmpbUgPiBzb3V0aFwtcG9sZTsKK+S4gOS7oyA+IGdlbmVyYXRpb247CivmlLbnuK4gPiBwdWxsXC1iYWNrOwor5aSa55aRID4gc2tlcHRpY2FsOwor5ZCI5YqbID4gY29vcGVyYXRlOwor54iG54K4ID4gZXhwbG9zaW9uOwor5Ymy6I2JID4gbW93XC1ncmFzczsKK+iuiuWljyA+IHZhcmlhdGlvbjsKK+mgmOWPlyA+IHRvXC1hY2NlcHQ7Civli5Xnm6ogPiBjb21tb3Rpb247Civlj6/lk4AgPiBtaXNlcmFibHk7Civoj6DomL8gPiBwaW5lYXBwbGU7CivljprluqYgPiB0aGlja25lc3M7CivpgJ/oqJggPiBzaG9ydGhhbmQ7CivlvpDmraUgPiB0b1wtc3Ryb2xsOwor6KW/6Z2iID4gd2VzdFwtc2lkZTsKK+aRmOmZpCA+IHRvXC1leGNpc2U7CivorablrpggPiBjb25zdGFibGU7CivlkIzkvLQgPiBjb21wYW5pb247CivlkI3kurogPiBwZXJzb25hZ2U7CivolJPlu7YgPiB0b1wtZXh0ZW5kOwor5ZCM5LqLID4gY29sbGVhZ3VlOwor5Y2K5peXID4gaGFsZlwtbWFzdDsKK+mHkeWMoCA+IGdvbGRzbWl0aDsKK+WQjOS4gCA+IGlkZW50aWNhbDsKK+eisOW3pyA+IGJ5XC1jaGFuY2U7Civmma7lj4ogPiB3aWRlc3BlYWQ7CivoqK3nva4gPiB0b1wtc2V0XC11cDsKK+eHkueHrCA+IGJ1cm5cLWRvd247CivmmI7lubQgPiBuZXh0XC15ZWFyOwor5Y+k5YW4ID4gY2xhc3NpY2FsOwor5Y+r5YGaID4gYmVcLWNhbGxlZDsKK+e2oOiMtiA+IGdyZWVuXC10ZWE7CivliKXomZUgPiBlbHNld2hlcmU7Civov7Doqp4gPiBwcmVkaWNhdGU7CivpmLLooZsgPiB0b1wtZGVmZW5kOwor5pio5aSpID4geWVzdGVyZGF5Owor5pWZ54i2ID4gZ29kZmF0aGVyOwor5Y+X5YOxID4gbWVyY2VuYXJ5Owor5pa85pivID4gdGhlcmV1cG9uOwor6Kqe5rqQID4gZXR5bW9sb2d5Owor6Kqq5rOVID4gc3RhdGVtZW50Owor5Z+O6ZaAID4gY2l0eVwtZ2F0ZTsKK+mdiOaVjyA+IHNlbnNpdGl2ZTsKK+WKqeeQhiA+IGFzc2lzdGFudDsKK+ioreeriyA+IHRvXC1zZXRcLXVwOwor6KuW5pa3ID4gaW5mZXJlbmNlOwor5Y+X5LqLID4gcmVjZXBpZW50Owor54as54WOID4gc3VmZmVyaW5nOwor5YiG6JmfID4gc2VtaWNvbG9uOwor5Y6f5ZGKID4gY29tcGxhaW50Owor55m96a2aID4gd2hpdGVmaXNoOwor5aSa5qijID4gZGl2ZXJzaXR5Owor5aSa5qihID4gbXVsdGltb2RlOwor6ZaL6aCtID4gYmVnaW5uaW5nOwor54Sh6IO9ID4gaW5hYmlsaXR5Owor55m96auUID4gbGVhblwtdHlwZTsKK+aomemrmCA+IGVsZXZhdGlvbjsKK+WmluWqmiA+IHNlZHVjdGl2ZTsKK+eEoeiBsiA+IG5vaXNlbGVzczsKK+WIuue5oSA+IGVtYnJvaWRlcjsKK+WNgeW5tCA+IHRlblwteWVhcnM7CivljYrls7YgPiBwZW5pbnN1bGE7CivpgKPnuowgPiBjb250aW5vdXM7Civljp/liYcgPiBwcmluY2lwbGU7CivphK3lt54gPiB6aGVuZ3pob3U7CivoqIjnrZYgPiBzdHJhdGFnZW07CivlupXnt5ogPiB1bmRlcmxpbmU7CivploPpm7sgPiBsaWdodG5pbmc7CivlvJXmuKEgPiBleHRyYWRpdGU7CivmlZnmr40gPiBnb2Rtb3RoZXI7Civlo4HniJAgPiBmaXJlcGxhY2U7CivmlofmmI4gPiBjaXZpbGl6ZWQ7Civnm7ToprogPiBpbnR1aXRpb247Civlo4Hnh4ggPiB3YWxsXC1sYW1wOwor55m86Z+zID4gcHJvbm91bmNlOwor5Y6Y5YWLID4gY2VudGlncmFtOwor54Sh57GfID4gc2NvdW5kcmVsOwor5Yqg5rexID4gdG9cLWRlZXBlbjsKK+Wft+ihjCA+IGltcGxlbWVudDsKK+mbueaatCA+IGhhaWxzdG9ybTsKK+eiuuS/oSA+IGNvbmZpZGVudDsKK+WloOWumiA+IGVzdGFibGlzaDsKK+mCo+aooyA+IHRoYXRcLWtpbmQ7Civlhazph4wgPiBraWxvbWV0ZXI7CivoqqDmka8gPiBzaW5jZXJlbHk7Civlt67ot50gPiBkaXNwYXJpdHk7Civopa/oo5kgPiBwZXR0aWNvYXQ7CivpsL7ohqAgPiBpc2luZ2xhc3M7CivorYnku7YgPiBwYXBlcndvcms7CivntLDoj4wgPiBiYWN0ZXJpYWw7CivoiqzpppkgPiBmcmFncmFuY2U7CivljaDljZwgPiB0b1wtZGl2aW5lOwor6JK85aSpID4gZmlybWFtZW50Owor57ep5rKWID4gdG9cLWJ1ZmZlcjsKK+mBuOa0viA+IHNldFwtYXBhcnQ7CivmlaPmkq0gPiB0b1wtc3ByZWFkOwor5aSn5b+XID4gaGlnaFwtYWltczsKK+i8lOmfsyA+IGNvbnNvbmFudDsKK+W8teaPmiA+IHB1YmxpY2l6ZTsKK+ino+eivCA+IHRvXC1kZWNvZGU7Civmkq3nqK4gPiBzb3dcLXNlZWRzOwor5YyW5a24ID4gY2hlbWlzdHJ5Owor5aCx57SZID4gbmV3c3BhcGVyOwor54Sh55+lID4gaWdub3JhbmNlOwor5o6l6aeBID4gdG9cLWFjY2VzczsKK+W+iOWkmiA+IHZlcnlcLW1hbnk7CivoqqDmhI8gPiBzaW5jZXJpdHk7Civlu6Pms5sgPiBleHRlbnNpdmU7Civps7PmoqggPiBwaW5lYXBwbGU7Civpm5nmlrkgPiBiaWxhdGVyYWw7CivplbfpgaAgPiBsb25nXC10ZXJtOwor5Y2D5ZGoID4ga2lsb2hlcnR6Owor6YGO5r++ID4gdG9cLWZpbHRlcjsKK+Wlh+WmmSA+IGZhbnRhc3RpYzsKK+WGsOiTiyA+IGljZVwtc2hlZXQ7CivpgZnmuKwgPiB0ZWxlbWV0cnk7CivovrLoiI0gPiBmYXJtaG91c2U7CivntIXok64gPiByZWRcLWxvdHVzOwor5YWx6K2YID4gY29uc2Vuc3VzOwor6Ly46YCBID4gdHJhbnNwb3J0Owor5aSn5bCPID4gZGltZW5zaW9uOwor5aSn5a62ID4gYXV0aG9yaXR5Owor54it5Y+WID4gZmlnaHRcLWZvcjsKK+avj+WkqSA+IGV2ZXJ5XC1kYXk7CivmlLvmk4ogPiB0b1wtYXR0YWNrOwor57SF6Iy2ID4gYmxhY2tcLXRlYTsKK+aWh+WtlyA+IGNoYXJhY3RlcjsKK+W4uOe2oCA+IGV2ZXJncmVlbjsKK+aumOW7oiA+IGRlZm9ybWl0eTsKK+maseaZpiA+IG9ic2N1cml0eTsKK+eFp+aooyA+IGFzXC1iZWZvcmU7CivmlrnlkJEgPiBkaXJlY3Rpb247CivnhLDngasgPiBmaXJld29ya3M7CivmlZHmgakgPiBzYWx2YXRpb247CivlpKnlpKkgPiBldmVyeVwtZGF5Owor5b6M5YukID4gbG9naXN0aWNzOwor5Yqp5omLID4gYXNzaXN0YW50Owor5YWn6KSyID4gdW5kZXJ3ZWFyOwor6L6m572qID4gdG9cLXB1bmlzaDsKK+imgee3iiA+IGltcG9ydGFudDsKK+awkeS4uyA+IGRlbW9jcmFjeTsKK+WLmeWvpiA+IHByYWdtYXRpYzsKK+aOqOmKtyA+IHRvXC1tYXJrZXQ7CivlvZnloLEgPiB0b1wtcmVwb3J0Owor6KaB57SgID4gZXNzZW50aWFsOwor5aSi5aKDID4gZHJlYW1sYW5kOwor6Kqy5aCCID4gY2xhc3Nyb29tOwor6YG45pOHID4gdG9cLXNlbGVjdDsKK+WgseeVjCA+IHRoZVwtcHJlc3M7CivnmbzoqIAgPiBzdGF0ZW1lbnQ7CivljYHkuIMgPiBzZXZlbnRlZW47Civngavol6UgPiBndW5wb3dkZXI7CivoqLrmlrcgPiBkaWFnbm9zaXM7Civmr6vlhYsgPiBtaWxsaWdyYW07Civlia/mnKwgPiBkdXBsaWNhdGU7CivoibHpm6MgPiBkaWZmaWN1bHQ7Civlu6Pmkq0gPiBicm9hZGNhc3Q7CivmlZflsYAgPiBsb3N0XC1nYW1lOwor6YOK5aSWID4gb3V0c2tpcnRzOwor5pWZ5a6kID4gY2xhc3Nyb29tOwor55m96KCfID4gd2hpdGVcLXdheDsKK+WHuuePviA+IHRvXC1hcHBlYXI7CivpgJDmvLggPiBncmFkdWFsbHk7CivlhrDns5UgPiBpY2VcLWNyZWFtOwor5YWB6KixID4gdG9cLXBlcm1pdDsKK+W+jOS7oyA+IHBvc3Rlcml0eTsKK+iJpumVtyA+IGNvbW1hbmRlcjsKK+ani+mAoCA+IHN0cnVjdHVyZTsKK+WLvuWKgyA+IHRvXC1za2V0Y2g7Civlop7mj7QgPiByZWluZm9yY2U7CivnhKHmr5QgPiBtYXRjaGxlc3M7CivmlZnlo6sgPiBjaHVyY2htYW47CivmrKHmlbggPiBmcmVxdWVuY3k7CivlpKflipsgPiBlbmVyZ2V0aWM7Civlo6/lpKcgPiB0b1wtZXhwYW5kOwor5qyK5p+EID4gYXV0aG9yaXR5Owor6YG15b6qID4gdG9cLWZvbGxvdzsKK+mBqeaEjyA+IGFncmVlYWJsZTsKK+iqv+WBnCA+IHJlY29uY2lsZTsKK+W5sua2iSA+IGludGVyZmVyZTsKK+WLpOWLiSA+IGRpbGlnZW5jZTsKK+asvuW+hSA+IGVudGVydGFpbjsKK+eZvOiKvSA+IGdlcm1pbmF0ZTsKK+Wkp+S+vyA+IGV4Y3JlbWVudDsKK+aSpeatoyA+IHNldFwtcmlnaHQ7Civlo73lkb0gPiBsaWZlXC1zcGFuOwor57aT5paHID4gc2NyaXB0dXJlOwor5pWy5YWlID4gdG9cLWtleVwtaW47CivpmorlvaIgPiBmb3JtYXRpb247CivlpKnkuIogPiBjZWxlc3RpYWw7CivovqbnkIYgPiB0b1wtaGFuZGxlOwor6Ki75a6aID4gYmVcLWRvb21lZDsKK+eEoeaVuCA+IGNvdW50bGVzczsKK+aUtuWbniA+IHRvXC1yZWdhaW47CivlpJbkuqQgPiBkaXBsb21hY3k7CivpgY7luqYgPiBleGNlZWRpbmc7CivliKTmlrcgPiB0b1wtZGVjaWRlOwor5pON5oyBID4gdG9cLW1hbmFnZTsKK+aqoua4rCA+IHRvXC1kZXRlY3Q7Civnn67lh7MgPiBsb3dcLXN0b29sOwor6ZqO5bGkID4gaGllcmFyY2h5Owor6Iez6auYID4gcGFyYW1vdW50Owor5o6o6JamID4gcmVjb21tZW5kOwor5o6S6KGMID4gc2VuaW9yaXR5Owor5YmN5b6AID4gbGVhdmVcLWZvcjsKK+aVmeWEgCA+IG9yZGluYW5jZTsKK+e1kOaniyA+IHN0cnVjdHVyZTsKK+Wis+WikyA+IHNlcHVsY2hlcjsKK+aSreaUviA+IGJyb2FkY2FzdDsKK+WFrOeniSA+IGtpbG9saXRlcjsKK+mYu+aSkyA+IHRvXC10aHdhcnQ7CivlgrPpgIEgPiB0b1wtY29udmV5Owor6YG65ZuRID4gdGVzdGFtZW50Owor5q2h5ZG8ID4gY2hlZXJcLWZvcjsKK+WCs+i8uCA+IHRyYW5zcG9ydDsKK+W5suaTviA+IGludGVyZmVyZTsKK+aOqOiNkCA+IHJlY29tbWVuZDsKK+mBiuWuoiA+IHRyYXZlbGxlcjsKK+WfjueJhiA+IGNpdHlcLXdhbGw7CivlhafnorwgPiB0b1wtZW5jb2RlOwor5pGn5q6YID4gdG9cLXJhdmFnZTsKK+aSnuaTiiA+IHRvXC1zdHJpa2U7CivliqDliocgPiBhZ2dyYXZhdGU7CivpmLvmipcgPiBpbXBlZGFuY2U7CivmjZDotIggPiB0b1wtZG9uYXRlOwor6Ieq6aGYID4gdm9sdW50YXJ5Owor5qi555quID4gdHJlZVwtYmFyazsKK+e2k+W6piA+IGxvbmdpdHVkZTsKK+maqOWToSA+IGF0dGVuZGFudDsKK+WFieethiA+IGxpZ2h0XC1wZW47CivloLHmlKQgPiBuZXdzc3RhbmQ7Civlh7rmlrwgPiBiZVwtZHVlXC10bzsKK+aVkeS4liA+IHNhbHZhdGlvbjsKK+aTtOWkpyA+IHRvXC1leHBhbmQ7CivpgY7lpJogPiBleGNlc3NpdmU7CivnhKHlvaIgPiBpbnZpc2libGU7Civoo53nva4gPiBlcXVpcG1lbnQ7CivmlYXkuosgPiBuYXJyYXRpdmU7CivlhbHnlKIgPiBjb21tdW5pc3Q7Civnr6npgbggPiB0b1wtZmlsdGVyOwor5o6o57+7ID4gb3ZlcnRocm93Owor6Zmi5a2QID4gY291cnR5YXJkOwor5ZyS6JedID4gZ2FyZGVuaW5nOwor5buj5Y2aID4gZXh0ZW5zaXZlOwor5qyK5aiBID4gYXV0aG9yaXR5Owor5YqD5YiGID4gdG9cLWRpdmlkZTsKK+WCs+iomCA+IGJpb2dyYXBoeTsKK+i/t+aDkSA+IHRvXC1wdXp6bGU7CivliqDkuIogPiB0b1wtcHV0XC1pbjsKK+W7tuS8uCA+IHRvXC1leHRlbmQ7CivpgJrlrrUgPiBvdmVybmlnaHQ7CivoibHoi6YgPiBkaWZmaWN1bHQ7Civlu6PlgrMgPiBwcm9wYWdhdGU7CivnmbznlJ8gPiB0b1wtaGFwcGVuOwor55mx55iTID4gcGFyYWx5c2lzOwor57WE5oiQID4gY29tcG9uZW50Owor6ZqK5YiXID4gZm9ybWF0aW9uOwor5o6l566hID4gdGFrZVwtb3ZlcjsKK+ioreWCmSA+IGVxdWlwbWVudDsKK+mahuWGrCA+IG1pZHdpbnRlcjsKK+WHueW6piA+IGNvbmNhdml0eTsKK+a8q+mVtyA+IHZlcnlcLWxvbmc7CivnlYzpnaIgPiBpbnRlcmZhY2U7CivlibXkvZwgPiB0b1wtY3JlYXRlOwor6Zmq5ZCMID4gYWNjb21wYW55Owor5pO05YWFID4gdG9cLWV4cGFuZDsKK+aMh+iyrCA+IGNyaXRpY2l6ZTsKK+e2nOWQiCA+IGNvbXBvc2l0ZTsKK+aKq+mcsiA+IHRvXC1yZXZlYWw7CivnnIvlvoUgPiBsb29rXC11cG9uOwor6Zm35YWlID4gc2lua1wtaW50bzsKK+ihsOiQvSA+IGRlY29tcG9zZTsKK+WJm+WBpSA+IGVuZXJnZXRpYzsKK+aSpeWljyA+IHBpenppY2F0bzsKK+mAhuWigyA+IGFkdmVyc2l0eTsKK+i/q+WusyA+IHBlcnNlY3V0ZTsKK+mAsuWMliA+IGV2b2x1dGlvbjsKK+i+r+aJjSA+IGVsb3F1ZW5jZTsKK+iHquiyoCA+IGNvbmNlaXRlZDsKK+W4guaUvyA+IG11bmljaXBhbDsKK+WEvOeEtiA+IGp1c3RcLWxpa2U7CivntZXlppkgPiBleHF1aXNpdGU7CivmipXpmY0gPiBzdXJyZW5kZXI7CivnsL3nq6AgPiBzaWduYXR1cmU7CivpmarkvLQgPiBhY2NvbXBhbnk7CivntoHljKogPiBraWRuYXBwZXI7CivnhKHlipsgPiBwb3dlcmxlc3M7Civmk5Tkv50gPiBndWFyYW50ZWU7CivmjqjnkIYgPiByZWFzb25pbmc7Civlm6DogIwgPiB0aGVyZWZvcmU7CivpgIblkJEgPiBiYWNrd2FyZHM7Civot5/pmqggPiB0b1wtZm9sbG93Owor5oyJ6JqKID4gYW5vcGhlbGVzOwor5qij5qmfID4gcHJvdG90eXBlOwor5Yio5YawID4gd2F0ZXJcLWljZTsKK+W4tuWvrCA+IGJhbmR3aWR0aDsKK+eVsOitsCA+IG9iamVjdGlvbjsKK+imj+WumiA+IHByb3Zpc2lvbjsKK+WxlemWiyA+IHRvXC11bmZvbGQ7CivovKrmtYEgPiBhbHRlcm5hdGU7CivlgrPntbEgPiB0cmFkaXRpb247CivlgY/oposgPiBwcmVqdWRpY2U7CivlnLDnkIYgPiBnZW9ncmFwaHk7CivlnLDnkIMgPiB0aGVcLWVhcnRoOwor6ZmN5L2OID4gdG9cLXJlZHVjZTsKK+S/nemaqiA+IGluc3VyYW5jZTsKK+S/nemanCA+IHRvXC1lbnN1cmU7CivloLTlkIggPiBzaXR1YXRpb247CivloLHlkYogPiB0b1wtaW5mb3JtOwor57Sz5aOrID4gZ2VudGxlbWFuOwor5YWs5paXID4gZGVjYWxpdGVyOwor6YCd5LiWID4gcGFzc1wtYXdheTsKK+i/lOWbniA+IHJldHVyblwtdG87CivpmYTku7YgPiBlbmNsb3N1cmU7CivliIblibIgPiB0b1wtY3V0XC11cDsKK+mVt+acnyA+IGxvbmdcLXRlcm07CivmiYHpqqggPiBmbGF0XC1ib25lOwor5L+d6Y+iID4gYm9keWd1YXJkOwor6LeR6Yy2ID4gc3RvcHdhdGNoOwor57SZ5aS+ID4gcGFwZXJjbGlwOwor55m85piOID4gdG9cLWludmVudDsKK+aooeaTrCA+IGltaXRhdGlvbjsKK+a/gOeZvCA+IHRvXC1hcm91c2U7Civlho3luqYgPiBvbmNlXC1tb3JlOwor57O+5a+fID4gdG9cLXBpY2tldDsKK+aLt+iKsSA+IHRvXC1lbWJvc3M7CivmvZvoiYcgPiBzdWJtYXJpbmU7Civov7fkvY8gPiBmYXNjaW5hdGU7Civoib7ngrcgPiBtb3hhXC1jb25lOwor5Zua56aBID4gY2FwdGl2aXR5Owor5YWn5oiwID4gY2l2aWxcLXdhcjsKK+S+v+mWgCA+IHNpZGVcLWRvb3I7Civoo4HmuJsgPiB0b1wtcmVkdWNlOwor6L+35LqCID4gY29uZnVzaW9uOwor5ZyN54mGID4gZW5jbG9zdXJlOwor55u45ZCMID4gaWRlbnRpY2FsOwor6KaP5Yu4ID4gdG9cLWFkdmlzZTsKK+ihqOeariA+IGVwaWRlcm1pczsKK+ihqOeZvSA+IHZpbmRpY2F0ZTsKK+aItumZkCA+IHRocmVzaG9sZDsKK+eci+WBmiA+IHJlZ2FyZFwtYXM7CivmjZDnjbsgPiB0b1wtZG9uYXRlOwor5YWH5omLID4gYXNzYWlsYW50Owor6J+R6J6CID4gY29ja3JvYWNoOwor5a+s6aC7ID4gYnJvYWRiYW5kOwor6KW/5Y2XID4gc291dGh3ZXN0Owor5L2/6aSoID4gY29uc3VsYXRlOwor6KW/5YyXID4gbm9ydGh3ZXN0Owor5qOJ6KKrID4gY29tZm9ydGVyOwor57K+5benID4gZWxhYm9yYXRlOwor5baE5pawID4gYnJhbmRcLW5ldzsKK+aJk+mAsiA+IHRvXC1icmVhY2g7Civlhazlr7ggPiBkZWNpbWV0ZXI7Civmib/oqo0gPiByZWNvZ25pemU7Civlhazlr5MgPiBhcGFydG1lbnQ7CivluLjku7sgPiBwZXJtYW5lbnQ7CivlhYnlvakgPiBob25vcmFibGU7Civkv53orbcgPiB0b1wtZGVmZW5kOwor5oyH56S6ID4gcG9pbnRcLW91dDsKK+eXheeQhiA+IHBhdGhvbG9neTsKK+i+m+WLniA+IGxhYm9yaW91czsKK+aQjeWjniA+IHRvXC1kYW1hZ2U7Civkv53oqLwgPiBndWFyYW50ZWU7CivlmInoqLEgPiBmYXZvcmFibGU7CivlhavlpKkgPiBlaWdodFwtZGF5Owor5ouS57WVID4gdG9cLXJlZnVzZTsKK+imgeS4jSA+IG90aGVyd2lzZTsKK+aomeWumiA+IGRlbWFyY2F0ZTsKK+iGqOiEuSA+IHRvXC1leHBhbmQ7CivovLvlsIQgPiByYWRpYXRpb247CivmjpLmlL4gPiBkaXNjaGFyZ2U7Civpq5Tnj74gPiB0b1wtZW1ib2R5Owor6KGw5ribID4gdG9cLXdlYWtlbjsKK+exg+advyA+IGJhY2tib2FyZDsKK+mmrOmerSA+IGhvcnNld2hpcDsKK+iLpuWigyA+IGdyaWV2YW5jZTsKK+eVouernyA+IGFmdGVyXC1hbGw7CivkvY7pmo4gPiBsb3dcLWxldmVsOwor5omA6KyCID4gc29cLWNhbGxlZDsKK+a9sOeImyA+IHRvXC1mZXN0ZXI7CivlhLLlrZggPiBzdG9ja3BpbGU7CivohoDoh4IgPiB1cHBlclwtYXJtOwor54CR5biDID4gd2F0ZXJmYWxsOwor5o6b5b+1ID4gY29uY2VybmVkOwor5YWo5ZCMID4gaWRlbnRpY2FsOwor6L2f5YuVID4gc2Vuc2F0aW9uOwor6Ie654eIID4gZGVza1wtbGFtcDsKK+idtOidtiA+IGJ1dHRlcmZseTsKK+eUnOe+jiA+IHN3ZWV0bmVzczsKK+S8tOmaqCA+IHRvXC1mb2xsb3c7Civlr6bos6ogPiBzdWJzdGFuY2U7CivlhazlhakgPiBoZWN0b2dyYW07CivmpI3niakgPiBib3RhbmljYWw7CivnqbrpmLIgPiBhaXJcLWZvcmNlOwor5YWl5L61ID4gdG9cLWludmFkZTsKK+WFi+WItiA+IHJlc3RyYWludDsKK+WFrOS4iCA+IGRlY2FtZXRlcjsKK+i8uOWHuiA+IHRvXC1leHBvcnQ7Civmipjno6ggPiBwZXJzZWN1dGU7CivovLjlhaUgPiB0b1wtaW1wb3J0Owor5a+m6KGMID4gaW1wbGVtZW50Owor562J562JID4gZXRcLWNldGVyYTsKK+a4hemZpCA+IGVsaW1pbmF0ZTsKK+aJk+iBvSA+IGFza1wtYWJvdXQ7Civooajmj5ogPiB0b1wtcHJhaXNlOwor5r+A5oCSID4gaW5mdXJpYXRlOwor5omT57+7ID4gb3ZlcnRocm93Owor5YGc5rOKID4gYW5jaG9yYWdlOwor6Jy76JyTID4gZHJhZ29uZmx5Owor5ry45ry4ID4gZ3JhZHVhbGx5Owor5a2Q6Z+zID4gY29uc29uYW50Owor5ryy5r2uID4gaGlnaFwtdGlkZTsKK+WutuitnCA+IGdlbmVhbG9neTsKK+mpmueVsCA+IGFtYXplbWVudDsKK+i8lOWKqSA+IHRvXC1hc3Npc3Q7Civmj5DkvpsgPiB0b1wtc3VwcGx5Owor56m/6YCPID4gcGVuZXRyYXRlOwor5o6l5Y+jID4gaW50ZXJmYWNlOwor5o6l5Y+XID4gdG9cLWFjY2VwdDsKK+mrlOaTjSA+IGd5bW5hc3RpYzsKK+S+v+euiyA+IG5vdGVwYXBlcjsKK+epuui7jSA+IGFpclwtZm9yY2U7CivotoXoga8gPiBoeXBlcmxpbms7CivogZbppJAgPiBzYWNyYW1lbnQ7Civoo53lgpkgPiBlcXVpcG1lbnQ7CivmibnnmbwgPiB3aG9sZXNhbGU7CivmvLjmrKEgPiBncmFkdWFsbHk7CivotpXnt4ogPiBodXJyaWVkbHk7CivpqqjmnrYgPiBmcmFtZXdvcms7Civku4vpnaIgPiBpbnRlcmZhY2U7CivlgbXmjqIgPiBkZXRlY3RpdmU7Civoh6jmmYIgPiB0ZW1wb3Jhcnk7CivmjJHmiLAgPiBjaGFsbGVuZ2U7CivooqvlkYogPiBkZWZlbmRhbnQ7CivmjpLlh7ogPiBkaXNjaGFyZ2U7Civmi5Tmn5MgPiBkaXNjaGFyZ2U7Civosp3poZ4gPiBzaGVsbGZpc2g7CivlnKjlhacgPiBpbmNsdWRpbmc7Civmi7/miYsgPiBleHBlcnRcLWluOwor56uK6IG9ID4gZWF2ZXNkcm9wOwor5a6/6IiNID4gZG9ybWl0b3J5Owor5bGx5rC0ID4gbGFuZHNjYXBlOwor5Zub5aSpID4gZm91clwtZGF5czsKK+aMuuWlvSA+IHZlcnlcLWdvb2Q7CivnsL3lhaUgPiB0b1wtbG9nXC1vbjsKK+mmrOiDjCA+IGhvcnNlYmFjazsKK+mpleawoyA+IGFycm9nYW5jZTsKK+eWkeW/gyA+IHN1c3BpY2lvbjsKK+a4uuiMqyA+IHVuY2VydGFpbjsKK+a/gOWLtSA+IGVuY291cmFnZTsKK+a/gOWLlSA+IHRvXC1leGNpdGU7CivmiJDnq4sgPiBlc3RhYmxpc2g7Civmt7voo5wgPiBmaWxsXC1cKHVwXCk7Civkv67mraMgPiB0b1wtcmV2aXNlOwor5p+Q6JmVID4gc29tZXdoZXJlOwor6LOT6KmeID4gcHJlZGljYXRlOwor56ix6K6aID4gdG9cLXByYWlzZTsKK+S9jue0miA+IGxvd1wtbGV2ZWw7CivosqjovKogPiBmcmVpZ2h0ZXI7Civpq5TlnJggPiBjb21tdW5pdHk7CivmpbXlhbYgPiBleHRyZW1lbHk7CivmirXmipcgPiB0b1wtcmVzaXN0Owor6aKx6aKoID4gaHVycmljYW5lOwor5Ly457iuID4gdG9cLWV4dGVuZDsKK+iar+iakyA+IGVhcnRod29ybTsKK+i0lue9qiA+IGF0b25lbWVudDsKK+WvteeJqSA+IGhvdXNlXC1wZXQ7CivogZboqpUgPiBjaHJpc3RtYXM7CivlgYflrpogPiB0b1wtYXNzdW1lOwor6KGM5YuVID4gb3BlcmF0aW9uOwor5Li76auUID4gbWFpblwtcGFydDsKK+aJi+azlSA+IHRlY2huaXF1ZTsKK+a2iOmBoyA+IGFtdXNlbWVudDsKK+alteS6hiA+IGV4dHJlbWVseTsKK+WwsealrSA+IGdldFwtYVwtam9iOwor55aG5Z+fID4gdGVycml0b3J5Owor5qGM54eIID4gZGVza1wtbGFtcDsKK+eWhuWcnyA+IHRlcnJpdG9yeTsKK+aJv+aTlCA+IHVuZGVydGFrZTsKK+iGveWwjyA+IGNvd2FyZGljZTsKK+WxrOaApyA+IGF0dHJpYnV0ZTsKK+mrmOWDuSA+IGV4cGVuc2l2ZTsKK+S4u+mggSA+IGhvbWVcLXBhZ2U7Civnvo7pupcgPiBiZWF1dGlmdWw7CivmnIPpnaIgPiBtZWV0XC13aXRoOwor5oiQ54K6ID4gdG9cLWJlY29tZTsKK+S6pOiqvCA+IGNvbW11bmlvbjsKK+mMpue5oSA+IGJlYXV0aWZ1bDsKK+a9m+WKmyA+IHBvdGVudGlhbDsKK+WxheaJgCA+IHJlc2lkZW5jZTsKK+WtuOerpSA+IHNjaG9vbGJveTsKK+iHquWLlSA+IGF1dG9tYXRpYzsKK+igleWLlSA+IHRvXC13aWdnbGU7CivmiZPmlZcgPiB0b1wtZGVmZWF0Owor6LGq6LGsID4gcG9yY3VwaW5lOwor5ZWf55m8ID4gZW5saWdodGVuOwor5rWB6YePID4gZmxvd1wtcmF0ZTsKK+iznOe1piA+IHRvXC1iZXN0b3c7Civmi5vli58gPiB0b1wtcmVjdWl0Owor5a6M55WiID4gdG9cLWZpbmlzaDsKK+WwjeaWvCA+IHJlZ2FyZGluZzsKK+iHs+S7iiA+IHVudGlsXC1ub3c7Civnv7vora8gPiB0cmFuc2xhdGU7CivkuIrpnaIgPiBvblwtdG9wXC1vZjsKK+S6lOiZnyA+IHRoZVwtZmlmdGg7Civkv6Hlt64gPiBtZXNzZW5nZXI7CivohoDlrZAgPiB1cHBlclwtYXJtOwor5ouG5Y24ID4gdG9cLXVubG9hZDsKK+ibi+eZvSA+IGVnZ1wtd2hpdGU7CivlkJ7po58gPiB0b1wtZGV2b3VyOwor5qGG5p62ID4gZnJhbWV3b3JrOwor6IOD54KOID4gZ2FzdHJpdGlzOwor5bCN5oqXID4gd2l0aHN0YW5kOwor5Zmo5YW3ID4gaW1wbGVtZW50Owor6ISr5o6JID4gc3RyaXBcLW9mZjsKK+mmmea4ryA+IGhvbmdcLWtvbmc7Civlr6bmmYIgPiByZWFsXC10aW1lOwor6IK654KOID4gcG5ldW1vbmlhOwor5oW256WdID4gY2VsZWJyYXRlOwor5a6w5q66ID4gc2xhdWdodGVyOwor5rWq6JWpID4gdG9cLWxvaXRlcjsKK+ixquiPryA+IGx1eHVyaW91czsKK+afkOeJqSA+IHNvbWV0aGluZzsKK+a0peiyvCA+IGFsbG93YW5jZTsKK+iCneeCjiA+IGhlcGF0aXRpczsKK+a2iOiAlyA+IHRvXC11c2VcLXVwOwor5LiK6LyJID4gdG9cLXVwbG9hZDsKK+iYreiKsSA+IGN5bWJpZGl1bTsKK+abuOiomCA+IHNlY3JldGFyeTsKK+a1quiIuSA+IHN3aW5nYm9hdDsKK+Wwj+WvqyA+IGxvd2VyY2FzZTsKK+eUqOWFtyA+IGFwcGxpYW5jZTsKK+WPpOmiqCA+IGFudGlxdWl0eTsKK+WuieathyA+IGdvXC10b1wtYmVkOwor5a625pePID4gaG91c2Vob2xkOwor5L2V5pWFID4gd2hlcmVmb3JlOwor6IWz5Y2wID4gZm9vdHByaW50Owor55O35ZmoID4gY2hpbmF3YXJlOwor56ul5bm0ID4gY2hpbGRob29kOwor5L2U5pOaID4gdG9cLW9jY3VweTsKK+i1t+W6iiA+IHRvXC1nZXRcLXVwOwor5a+s5bi2ID4gYnJvYWRiYW5kOwor5L6G5bm0ID4gbmV4dFwteWVhcjsKK+S7iueUnyA+IHRoaXNcLWxpZmU7CivpoLvpgZMgPiBmcmVxdWVuY3k7CivmnKzogbcgPiBvbmUnJ3NcLWpvYjsKK+WxgOWLoiA+IHNpdHVhdGlvbjsKK+iDjOaWnCA+IGFudGljbGluZTsKK+aatOi6gSA+IGlyYXNjaWJsZTsKK+axoOm5vSA+IGxha2VcLXNhbHQ7CivkuI3oqLEgPiBub3RcLWFsbG93Owor5ZWG5qiZID4gdHJhZGVtYXJrOwor6aOv56KXID4gcmljZVwtYm93bDsKK+aZpOmdoiA+IGludGVydmlldzsKK+ahlOWtkCA+IHRhbmdlcmluZTsKK+mHjemWiyA+IHRvXC1yZW9wZW47CivororpnakgPiB0cmFuc2Zvcm07CivmiKrlpaogPiBpbnRlcmNlcHQ7Civmt7HmsLQgPiBkZWVwd2F0ZXI7CivotqjlkJEgPiBkaXJlY3Rpb247Civotbflp4sgPiBvcmlnaW5hdGU7CivnpYforoAgPiByZWFkXC1vbmx5Owor5a245pyDID4gaW5zdGl0dXRlOwor5oe45bSWID4gcHJlY2lwaWNlOwor5qKd5Lu2ID4gY29uZGl0aW9uOwor6beT6bSjID4gcGFydHJpZGdlOwor5pyr56uvID4gZXh0cmVtaXR5Owor55Oc5YiGID4gcGFydGl0aW9uOwor6JmV55CGID4gdG9cLWhhbmRsZTsKK+a2jOePviA+IHNwcmluZ1wtdXA7Civnpq7nr4AgPiBldGlxdWV0dGU7Civmma7pgY0gPiB1bml2ZXJzYWw7CivororphpwgPiBkaXNmaWd1cmU7CivkuKbogqkgPiBhbG9uZ3NpZGU7CivonILlt6IgPiBob25leWNvbWI7CivkuK3nvo4gPiBjaGluYVwtdXNhOwor5pqX6KqeID4gY29kZVwtd29yZDsKK+err+WPoyA+IGludGVyZmFjZTsKK+S9juWxpCA+IGxvd1wtbGV2ZWw7Civph43ouYggPiB0b1wtcmVwZWF0Owor5L2P5a6FID4gcmVzaWRlbmNlOwor5LyR5oiwID4gYXJtaXN0aWNlOwor5omA5LulID4gdGhlcmVmb3JlOwor6K6a6LOeID4gdG9cLWFkbWlyZTsKK+a4m+W8sSA+IHRvXC13ZWFrZW47Civlj5vos6MgPiB0b1wtYmV0cmF5Owor5auM55aRID4gc3VzcGljaW9uOwor5Ly45bGVID4gZXh0ZW5zaW9uOwor5LiA6Ie0ID4gdW5hbmltb3VzOwor6IGy5piOID4gc3RhdGVtZW50Owor6aSK5q6WID4gY3VsdGl2YXRlOwor5p+/5a2QID4gcGVyc2ltbW9uOwor6ICB54mMID4gb2xkXC1icmFuZDsKK+WmlumiqCA+IGV2aWxcLXdpbmQ7CivpjLbluLYgPiB3YXRjaGJhbmQ7Civph43opoEgPiBpbXBvcnRhbnQ7CivmuJvlsJEgPiB0b1wtbGVzc2VuOwor5pyJ55uKID4gd2hvbGVzb21lOwor6YeN6KSHID4gdG9cLXJlcGVhdDsKK+eri+WIuyA+IGZvcnRod2l0aDsKK+a3seaAnSA+IHRvXC1wb25kZXI7Civml6nppJAgPiBicmVha2Zhc3Q7Civph47ooLsgPiBiYXJiYXJvdXM7Civml6npo68gPiBicmVha2Zhc3Q7Civlv4XpnIAgPiBlc3NlbnRpYWw7CivosqHmnbEgPiBzaG9wb3duZXI7CivomZvmp4sgPiBpbWFnaW5hcnk7Civoga/mg7MgPiBhc3NvY2lhdGU7CivmtbjmspIgPiBpbW1lcnNpb247Civmnb/mlqcgPiBicm9hZFwtYXhlOwor5ZCr57OKID4gb2JzY3VyaXR5Owor5reS5oWYID4gbWlzZXJhYmxlOwor5LiA56+HID4gb25lXC1zaWRlZDsKK+mNteWFpSA+IHRvXC1rZXlcLWluOwor5peL6aKoID4gd2hpcmx3aW5kOwor56Wd56aPID4gYmxlc3NpbmdzOwor5pyf5ru/ID4gdG9cLWV4cGlyZTsKK+itpuimuiA+IHZpZ2lsYW5jZTsKK+WOn+irkiA+IHRvXC1leGN1c2U7Civlrrbkv7EgPiBmdXJuaXR1cmU7CivmhJ/mn5MgPiBpbmZlY3Rpb247CivlrZTlrZAgPiBjb25mdWNpdXM7CivlrZDlrasgPiBvZmZzcHJpbmc7CivlrrbkurogPiBob3VzZWhvbGQ7CivlrrbkuosgPiBob3VzZXdvcms7CivlrqPlgrMgPiBwdWJsaWNpemU7Civku4rlubQgPiB0aGlzXC15ZWFyOwor5ZGI54++ID4gdG9cLWFwcGVhcjsKK+S4gOeZviA+IGFcLWh1bmRyZWQ7CivosqvlvrkgPiBpbXBsZW1lbnQ7Civku7LlpI8gPiBtaWRzdW1tZXI7CivorYnoqZ4gPiB0ZXN0aW1vbnk7Civnp5jmm7ggPiBzZWNyZXRhcnk7CivnqoHlh7ogPiBwcm9taW5lbnQ7Civmg6Hmr5IgPiBtYWxpY2lvdXM7CivkvLTkvrYgPiBjb21wYW5pb247CivmmILosrQgPiBleHBlbnNpdmU7CivpnLLpn5MgPiB0b1wtZXhwb3NlOwor5b2x6Z+/ID4gaW5mbHVlbmNlOwor5aSi6a2YID4gbmlnaHRtYXJlOwor5aW96YGLID4gZ29vZFwtbHVjazsKK+aatOeZvCA+IGJyZWFrXC1vdXQ7Civmh4nku5ggPiBkZWFsXC13aXRoOwor5pyJ5q+SID4gcG9pc29ub3VzOwor5byx6bm8ID4gd2Vha1wtYmFzZTsKK+axveiIuSA+IHN0ZWFtYm9hdDsKK+WPr+eskSA+IGxhdWdoYWJsZTsKK+WNiui8iSA+IGhhbGZcLWxvYWQ7Civlvq7ou58gPiBtaWNyb3NvZnQ7Civku5nlooMgPiBmYWlyeWxhbmQ7Civml6jotqMgPiBvYmplY3RpdmU7Civml6XotqggPiBncmFkdWFsbHk7CivkuovmhYsgPiBzaXR1YXRpb247CivlpKfpoZ4gPiBtYWluXC10eXBlOwor5pys5paHID4gdGhpc1wtdGV4dDsKK+eHn+mkiiA+IG51dHJpdGlvbjsKK+mgu+eOhyA+IGZyZXF1ZW5jeTsKK+WNlOitsCA+IGFncmVlbWVudDsKK+S4jea7vyA+IHJlc2VudGZ1bDsKK+mCo+m6vCA+IHNvXC1cKG11Y2hcKTsKK+W/heimgSA+IG5lY2Vzc2FyeTsKK+Wkp+mZuCA+IGNvbnRpbmVudDsKK+eip+iXjSA+IGRhcmtcLWJsdWU7CivlvoXpgYcgPiB0cmVhdG1lbnQ7CivlkIjnkIYgPiByYXRpb25hbGU7CivnjqnlvIQgPiByZXNvcnRcLXRvOwor5pyJ5pmCID4gc29tZXRpbWVzOwor5peB6LevID4gdG9cLWJ5cGFzczsKK+WknOmWkyA+IG5pZ2h0dGltZTsKK+avlOmEsCA+IG5laWdoYm91cjsKK+mdnuitsCA+IGNyaXRpY2l6ZTsKK+abuOaetiA+IGJvb2tzaGVsZjsKK+a3t+S6giA+IGNvbmZ1c2lvbjsKK+acieaViCA+IGVmZmVjdGl2ZTsKK+e8veebgiA+IGFsbXNcLWJvd2w7Civos4fliqkgPiBzdWJzaWRpemU7CivkuIrmrKEgPiBsYXN0XC10aW1lOwor54mM6JmfID4gdHJhZGVtYXJrOwor5LqU5aSpID4gZml2ZVwtZGF5czsKK+a2iOWksSA+IGRpc2FwcGVhcjsKK+aXgeingCA+IHNwZWN0YXRvcjsKK+ejqOefsyA+IG1pbGxzdG9uZTsKK+S7i+WFpSA+IGludGVydmVuZTsKK+S7peS4iiA+IG1vcmVcLXRoYW47Civnn5vpoK0gPiBzcGVhcmhlYWQ7CivlpKLpgbogPiB3ZXRcLWRyZWFtOwor6K6K55WwID4gdmFyaWF0aW9uOwor5rOi5q61ID4gd2F2ZVwtYmFuZDsKK+mboumWiyA+IHRvXC1kZXBhcnQ7CivnjbLlvpcgPiB0b1wtb2J0YWluOwor5ZCQ5rCjID4gYXNwaXJhdGVkOwor5p2x5Y2XID4gc291dGhlYXN0Owor5p2x5YyXID4gbm9ydGhlYXN0Owor5LiN5piOID4gbm90XC1jbGVhcjsKK+Wlh+ingCA+IHNwZWN0YWNsZTsKK+aUuemdqSA+IHRvXC1yZWZvcm07CivmhJvlnIsgPiBwYXRyaW90aWM7CivkuI3mlrcgPiB1bmNlYXNpbmc7Civku4rkuJYgPiB0aGlzXC1saWZlOwor5pyq5amaID4gdW5tYXJyaWVkOwor5byx6YW4ID4gd2Vha1wtYWNpZDsKK+aUtumbhiA+IHRvXC1nYXRoZXI7CivkuZjlrqIgPiBwYXNzZW5nZXI7CivkuIDmmYIgPiB0ZW1wb3Jhcnk7CivliqnplbcgPiBlbmNvdXJhZ2U7CivkuqTlh7ogPiBoYW5kXC1vdmVyOwor6aOf5ZOBID4gZm9vZHN0dWZmOwor6YWN572uID4gdG9cLWRlcGxveTsKK+WkseiqvyA+IGltYmFsYW5jZTsKK+a2iOWOuyA+IGVsaW1pbmF0ZTsKK+acrOWjmCA+IGhvbWVcLWJhc2U7CivkurrkuosgPiBwZXJzb25uZWw7CivmgrLmhZggPiBtaXNlcmFibGU7CivorZjnm7ggPiBzZW5zaXRpdmU7Civmm7jlupcgPiBib29rc3RvcmU7CivpgorploAgPiBzaWRlXC1kb29yOwor5Lit5bqtID4gY291cnR5YXJkOwor5Y+45qmfID4gY2hhdWZmZXVyOwor542o5a62ID4gZXhjbHVzaXZlOwor5p2x5LqeID4gZWFzdFwtYXNpYTsKK+W+qee/kiA+IHRvXC1yZXZpc2U7CivlkIjmoLwgPiBxdWFsaWZpZWQ7CivmmqvmmYIgPiB0ZW1wb3Jhcnk7Civpm5npgoogPiBiaWxhdGVyYWw7CivogJDlipsgPiBlbmR1cmFuY2U7CivmmI7norogPiBjbGVhclwtY3V0Owor5LiN5oOcID4gbm90XC1zdGludDsKK+aDoeWkoiA+IG5pZ2h0bWFyZTsKK+WOn+eQhiA+IHByaW5jaXBsZTsKK+S4u+WppiA+IGhvdXNld2lmZTsKK+eOqeWFtyA+IHBsYXl0aGluZzsKK+mbu+ipsSA+IHRlbGVwaG9uZTsKK+aWveiCpSA+IGZlcnRpbGl6ZTsKK+aUuemAoCA+IHRvXC1jaGFuZ2U7Civni4Dms4EgPiBjb25kaXRpb247CivkuI3lubMgPiBpbmp1c3RpY2U7CivpgJnpurwgPiBzb1wtXChtdWNoXCk7CivkuI3lt7IgPiBlbmRsZXNzbHk7Civpm5zosqggPiBncm9jZXJpZXM7CivmnKjljKAgPiBjYXJwZW50ZXI7CivoqZXpgbggPiB0b1wtY2hvb3NlOwor6Yas5rK5ID4gc295XC1zYXVjZTsKK+W7uumAoCA+IGNvbnN0cnVjdDsKK+inuOmsmiA+IHRlbnRhY2xlczsKK+aTpumfsyA+IGZyaWNhdGl2ZTsKK+WRqOWcjSA+IGVuY29tcGFzczsKK+S4jeWwjSA+IGluY29ycmVjdDsKK+W/g+ebriA+IG1lbnRhbGl0eTsKK+WPr+aVrCA+IHZlbmVyYWJsZTsKK+WPl+agvCA+IG9iamVjdGl2ZTsKK+Wkp+iNsyA+IHNveWFcLWJlYW47CivwoqWeID4gc2FtZVwtYXNcLeW/oTsKK+Wlkee0hCA+IGFncmVlbWVudDsKK+mxt+mtmiA+IGFsbGlnYXRvcjsKK+azouW5hSA+IGFtcGxpdHVkZTsKK+aUueiuiiA+IHRvXC1jaGFuZ2U7Civluq3pmaIgPiBjb3VydHlhcmQ7Civnpq7lhIAgPiBldGlxdWV0dGU7Civlj7PmiYsgPiByaWdodGhhbmQ7CivlibXpgKAgPiB0b1wtY3JlYXRlOwor5rWB5YWlID4gZmxvd1wtaW50bzsKK+azqOWwhCA+IGluamVjdGlvbjsKK+ehrOebpCA+IGhhcmRcLWRpc2s7Civlip/oqrIgPiBjbGFzc3dvcms7CivpgLHplbcgPiBwZXJpbWV0ZXI7CivmnIjlhYkgPiBtb29ubGlnaHQ7CivlpLHnuLEgPiBkaXNhcHBlYXI7CivlqZrlp7sgPiBtYXRyaW1vbnk7Civlj6PmiY0gPiBlbG9xdWVuY2U7CivkuI3lnKggPiBub3RcLWJlXC1pbjsKK+mereavmyA+IGZsYWdlbGx1bTsKK+aSq+mkiiA+IHRvXC1mb3N0ZXI7CivmtL7ku7sgPiBzZXRcLWFwYXJ0Owor5Yiq6ZmkID4gdG9cLWRlbGV0ZTsKK+mBoOi2syA+IGV4Y3Vyc2lvbjsKK+eEoemZkCA+IHVubGltaXRlZDsKK+mgkeW8tyA+IHRlbmFjaW91czsKK+eEoemXnCA+IHVucmVsYXRlZDsKK+iSuOeZvCA+IGV2YXBvcmF0ZTsKK+WPpOaAqiA+IGVjY2VudHJpYzsKK+W+l+eVtiA+IGV4cGVkaWVudDsKK+ayueW4gyA+IHRhcnBhdWxpbjsKK+S4i+WUhyA+IGxvd2VyXC1saXA7Civnvqnli5kgPiB2b2x1bnRlZXI7CivkuIrllIcgPiB1cHBlclwtbGlwOwor6aCB5b+DID4gdHlwZVwtcGFnZTsKK+S4jeWQnSA+IG5vdFwtc3RpbnQ7CivkuI3lkIwgPiBkaWZmZXJlbnQ7CivmsaHmn5MgPiBwb2xsdXRpb247CivliY3pgJQgPiBwcm9zcGVjdHM7CivnhoronIIgPiBidW1ibGViZWU7CivnuL3ntZAgPiBzdW1tYXJpemU7Civnvo7lkbMgPiBkZWxpY2lvdXM7CivlkLjlj5YgPiB0b1wtYWJzb3JiOwor5LiL5Y2IID4gYWZ0ZXJub29uOwor6YCx6YKKID4gcGVyaXBoZXJ5Owor5bm06ZmQID4gYWdlXC1saW1pdDsKK+S4i+WIlyA+IGZvbGxvd2luZzsKK+S4jeWHhiA+IG5vdFwtYWxsb3c7CivpoYzlkI0gPiBhdXRvZ3JhcGg7CivlpJrnq68gPiBtdWx0aXBvcnQ7CivmlYjog70gPiBlZmZpY2llbnQ7CivkuI3lgZwgPiBpbmNlc3NhbnQ7CivlpKfnoLIgPiBhcnRpbGxlcnk7CivkuI3lgLwgPiBub3RcLXdvcnRoOwor5rKZ5bKpID4gc2FuZHN0b25lOwor5rOi5Y+KID4gc3ByZWFkXC10bzsKK+W+ruazoiA+IG1pY3Jvd2F2ZTsKK+S4jeS8kSA+IGVuZGxlc3NseTsKK+eEoei+nCA+IGlubm9jZW5jZTsKK+asoeimgSA+IHNlY29uZGFyeTsKK+S4jeS6iCA+IG5vdFwtZ3JhbnQ7CivljrvlubQgPiBsYXN0XC15ZWFyOwor5LiN5LqGID4gdW5hYmxlXC10bzsKK+mgmOWcnyA+IHRlcnJpdG9yeTsKK+mfjOaApyA+IHRvdWdobmVzczsKK+ekvuWNgCA+IGNvbW11bml0eTsKK+eJiOasiiA+IGNvcHlyaWdodDsKK+WQkeWNlyA+IHNvdXRod2FyZDsKK+awkeatjCA+IGZvbGtcLXNvbmc7CivljbPmmYIgPiBpbW1lZGlhdGU7Civmkq3pgIEgPiBicm9hZGNhc3Q7CivlubjpgYsgPiBmb3J0dW5hdGU7Civnvo7kuK0gPiB1c2FcLWNoaW5hOwor6ZqV6JC9ID4gZmFsbFwtZG93bjsKK+eGn+e3tCA+IHByYWN0aWNlZDsKK+aUuee3qCA+IHRvXC1hZGFwdDsKK+ejgeaApyA+IG1hZ25ldGljOwor5aOT57eKID4gY29tcHJlc3M7CivphqvlrbggPiBtZWRpY2luZTsKK+WQnuS9tSA+IHRvXC1hbm5leDsKK+mdiOa0uyA+IGZsZXhpYmxlOwor5paH5427ID4gZG9jdW1lbnQ7CivlpJbnlKggPiBleHRlcm5hbDsKK+mCiue3miA+IHNpZGVsaW5lOwor5q2j57WxID4gb3J0aG9kb3g7Civlu7bnuowgPiBjb250aW51ZTsKK+mgu+S7jSA+IGZyZXF1ZW50Owor57ev57eaID4gbGF0aXR1ZGU7CivnhKHoqqQgPiB2ZXJpZmllZDsKK+aXpeabhiA+IGNhbGVuZGFyOwor5Ymd6JC9ID4gcGVlbFwtb2ZmOwor6aCQ5Y2cID4gZm9yZXRlbGw7CivlubvosaEgPiBpbGx1c2lvbjsKK+isueaFjiA+IGNhdXRpb3VzOwor54m55oCnID4gcHJvcGVydHk7CivojLbppKggPiB0ZWFob3VzZTsKK+mzpeexoCA+IGJpcmRjYWdlOwor5b6u5piOID4gdHdpbGlnaHQ7Civlu7rnr4kgPiBidWlsZGluZzsKK+WPi+WWhCA+IGZyaWVuZGx5Owor5bu656uLID4gY3JlYXRpb247CivpoIbliKkgPiBzbW9vdGhseTsKK+W/g+aJiyA+IG5ld1wtaGFuZDsKK+WGsOmamSA+IGNyZXZhc3NlOwor6Zy45qyKID4gaGVnZW1vbnk7CivljbHmgKUgPiBjcml0aWNhbDsKK+mamee4qyA+IGFwZXJ0dXJlOwor6Kaq6LqrID4gcGVyc29uYWw7CivnorrlrpogPiBkZWZpbml0ZTsKK+e1gui6qyA+IGxpZmVsb25nOwor6KiY6ICFID4gcmVwb3J0ZXI7Civopo/pgb8gPiB0b1wtZXZhZGU7CivniafluKsgPiBjaGFwbGFpbjsKK+aUtuebiiA+IGVhcm5pbmdzOwor5YW36auUID4gY29uY3JldGU7CivlubPooYwgPiBwYXJhbGxlbDsKK+W/oOWvpiA+IGZhaXRoZnVsOwor5q2l55m8ID4gZm9vdHdvcms7CivliIboo4IgPiBzcGxpdFwtdXA7CivmlrDmm7ggPiBuZXdcLWJvb2s7Civlj6PkuqQgPiBvcmFsXC1zZXg7CivlibXnq4sgPiB0b1wtZm91bmQ7CivnhaTnrrEgPiBjb2FsXC1ib3g7CivnvLrkuY8gPiBzaG9ydGFnZTsKK+aXpeW+jCA+IHNvbWV0aW1lOwor6YKK55WMID4gYm91bmRhcnk7Civngb3pm6MgPiBkaXNhc3RlcjsKK+W+ueW6lSA+IHRob3JvdWdoOwor6bGJ6KOZID4gY2FsaXBhc2g7Civorablj6UgPiBhcGhvcmlzbTsKK+aXqeW3siA+IGxvbmdcLWFnbzsKK+mblueEtiA+IGFsdGhvdWdoOwor56C05puJID4gZGF5YnJlYWs7Civpm6jmu7QgPiByYWluZHJvcDsKK+aYjuWkqSA+IHRvbW9ycm93Owor5aaW5a29ID4gZXZpbGRvZXI7Civpm7vmsKMgPiBlbGVjdHJpYzsKK+mFrOWgsSA+IHRvXC1yZXBheTsKK+mBuueUoiA+IGhlcml0YWdlOwor56Gs5bqmID4gaGFyZG5lc3M7CivnhKHogYogPiBub25zZW5zZTsKK+apq+mBjiA+IHRyYXZlcnNlOwor5b6B5oiwID4gY2FtcGFpZ247CivoqrLmnKwgPiB0ZXh0Ym9vazsKK+WHi+isnSA+IGxhbmd1aXNoOwor6KiI566XID4gdG9cLWNvdW50Owor6ZaL6ZmkID4gdG9cLWV4cGVsOwor6YGp55W2ID4gc3VpdGFibGU7Civnupblt6cgPiBkZWxpY2F0ZTsKK+W5s+iHuiA+IHBsYXRmb3JtOwor5aSn5pa5ID4gZ2VuZXJvdXM7CivnhKHnuKsgPiBzZWFtbGVzczsKK+WGoOi7jSA+IGNoYW1waW9uOwor5YeG6KixID4gdG9cLWFsbG93Owor6YSw5bGFID4gbmVpZ2hib3I7Civpm7vmoq8gPiBlbGV2YXRvcjsKK+iTi+WxpCA+IGNhcFwtcm9jazsKK+mdouWwjSA+IGNvbmZyb250Owor54Sh57eaID4gd2lyZWxlc3M7CivnorrliIcgPiBkZWZpbml0ZTsKK+mAmue0hSA+IHZlcnlcLXJlZDsKK+WMheaKhCA+IG91dGZsYW5rOwor6L6o6KqNID4gaWRlbnRpZnk7Civljp/kvoYgPiBvcmlnaW5hbDsKK+WkmuaVuCA+IG1ham9yaXR5Owor54mp5ZOBID4gYXJ0aWNsZXM7CivmlL/msrsgPiBwb2xpdGljczsKK+WNiuWknCA+IG1pZG5pZ2h0Owor5Y2I5aScID4gbWlkbmlnaHQ7CivmlrDlubQgPiBuZXdcLXllYXI7Civml4XlrqIgPiB0cmF2ZWxlcjsKK+mAvOecnyA+IGxpZmVsaWtlOwor5q2l5rOVID4gZm9vdHdvcms7Civlhazph5AgPiBkZWNpZ3JhbTsKK+auuuaIriA+IG1hc3NhY3JlOwor5Yqb5rCjID4gc3RyZW5ndGg7Civlhafpg6ggPiBpbnRlcmlvcjsKK+imhuiTiyA+IHRvXC1jb3ZlcjsKK+e5oeW4tyA+IHRhcGVzdHJ5Owor5aSq5b+ZID4gdG9vXC1idXN5Owor552h55ygID4gc2xlZXBpbmc7Civoo53po74gPiBkZWNvcmF0ZTsKK+WNgeWbmyA+IGZvdXJ0ZWVuOwor5bmz562JID4gZXF1YWxpdHk7Civnmb3ph5EgPiBwbGF0aW51bTsKK+WMheWxpCA+IGNsYWRkaW5nOwor6L2J6YCBID4gdHJhbnNmZXI7Civlho3oposgPiBnb29kXC1ieWU7CivlpKLlubsgPiBpbGx1c2lvbjsKK+mAleebtCA+IHN0cmFpZ2h0Owor5Y2x5LqhID4gYXRcLXN0YWtlOwor6I2J6I2JID4gY2FyZWxlc3M7Civlt6foqIggPiBtYW5ldXZlcjsKK+iRl+aJiyA+IGNvbW1lbmNlOwor5paZ5a2QID4gbWF0ZXJpYWw7Civnm7LohbggPiBhcHBlbmRpeDsKK+aUr+afsSA+IG1haW5zdGF5Owor5b2i5a65ID4gZGVzY3JpYmU7CivnhKHnlpEgPiBub1wtZG91YnQ7CivlvLfmgo0gPiB2YWxsaWFudDsKK+eyl+mHjiA+IGluc29sZW50Owor6KKL6bygID4ga2FuZ2Fyb287CivlppbkurogPiBtYWdpY2lhbjsKK+i7n+mrlCA+IHNvZnR3YXJlOwor5paw5Z6LID4gbmV3XC10eXBlOwor5Z+56IKyID4gdG9cLXRyYWluOwor54Wk5rK5ID4ga2Vyb3NlbmU7CivliqDmmYIgPiBvdmVydGltZTsKK+WFiei8nSA+IHJhZGlhbmNlOwor5b6p5YWDID4gcmVjb3Zlcnk7CivlvLfluqYgPiBzdHJlbmd0aDsKK+WNgeWFqyA+IGVpZ2h0ZWVuOwor5aWz5YWSID4gZGF1Z2h0ZXI7CivlpJrlsJEgPiBob3dcLW11Y2g7CivljYHlhYsgPiBkZWNhZ3JhbTsKK+WcsOmbtyA+IGxhbmRtaW5lOwor5aaC5LuKID4gbm93YWRheXM7Civpgqrmg6EgPiBzaW5pc3RlcjsKK+ingOeciyA+IHRvXC13YXRjaDsKK+W+l+WIhiA+IHRvXC1zY29yZTsKK+WMheWcjSA+IHN1cnJvdW5kOwor5q+U5Za7ID4gbWV0YXBob3I7Civopo/nr4QgPiBzdGFuZGFyZDsKK+i7gOmrlCA+IHRoZVwtYm9keTsKK+ehrOS7tiA+IGhhcmR3YXJlOwor5aSp5aCCID4gcGFyYWRpc2U7CivljYHkuZ0gPiBuaW5ldGVlbjsKK+WFieitnCA+IHNwZWN0cnVtOwor6KOc6YG6ID4gYWRkZW5kdW07CivpgaDmnbEgPiBmYXJcLWVhc3Q7CivljYHkuIkgPiB0aGlydGVlbjsKK+apn+iDvSA+IGZ1bmN0aW9uOwor6JKZ5Y+kID4gbW9uZ29saWE7CivpgaDmma8gPiBwcm9zcGVjdDsKK+e0kOe0hCA+IG5ld1wteW9yazsKK+aVmeWwjiA+IGluc3RydWN0Owor5o+Q6K2wID4gcHJvcG9zYWw7CivlhKrotoogPiBzdXBlcmlvcjsKK+mAsuatpSA+IHByb2dyZXNzOwor6YGu5o6pID4gdG9cLWNvdmVyOwor6Zu75aCxID4gdGVsZWdyYW07CivmkbnnlasgPiBkZXNjcmliZTsKK+i7iumWkyA+IHdvcmtzaG9wOwor5b6A5L6GID4gZGVhbGluZ3M7Civoqr/li5UgPiB0cmFuc2ZlcjsKK+W8leWwjiA+IHRvXC1ndWlkZTsKK+ijneiyqCA+IHNoaXBwaW5nOwor5Yqb5bqmID4gZHluYW1pc207CivpgY7mlrwgPiB0b29cLW11Y2g7Civnm6PnpoEgPiBpbXByaXNvbjsKK+WGsOeqliA+IGljZWhvdXNlOwor5aCC55qHID4gaW1wb3Npbmc7CivltIfpq5ggPiBtYWplc3RpYzsKK+ecgeeVpSA+IG9taXNzaW9uOwor5q+N5L+CID4gbWF0ZXJuYWw7CivmjqHosrcgPiBwdXJjaGFzZTsKK+i8leimliA+IGNvbnRlbXB0Owor57K+6Ie0ID4gZGVsaWNhY3k7CivpgbLlu7YgPiB0b1wtZGVsYXk7CivmlJzluLYgPiB0b1wtY2Fycnk7Civlu7blsZUgPiB0b1wtc2NhbGU7CivovrLnlLAgPiBmYXJtbGFuZDsKK+mDqOS9jSA+IHBvc2l0aW9uOwor5Ym15bu6ID4gdG9cLWZvdW5kOwor5YWn572uID4gaW50ZXJuYWw7CivpmZDmnJ8gPiBkZWFkbGluZTsKK+e3iuW8tSA+IGNyaXRpY2FsOwor6KiY5oa2ID4gbWVtb3JpZXM7CivpgbflsLEgPiB0b1wteWllbGQ7Civnsr7nvo4gPiBkZWxpY2F0ZTsKK+W8t+WLgSA+IHBvd2VyZnVsOwor5paH5Lu2ID4gZG9jdW1lbnQ7CivmrrrkurogPiBob21pY2lkZTsKK+mCiuWigyA+IGZyb250aWVyOwor5aSW5L6GID4gZXh0ZXJuYWw7CivliZvmgKcgPiByaWdpZGl0eTsKK+WLg+WLgyA+IHRocml2aW5nOwor6YGp5a6cID4gc3VpdGFibGU7Civmk4Hmk6AgPiB0b1wtY3Jvd2Q7CivmjojoqrIgPiB0b1wtdGVhY2g7Civop6PmlaMgPiBkaXNzb2x2ZTsKK+mZsOaApyA+IGZlbWluaW5lOwor5YuV5L2cID4gbW92ZW1lbnQ7Civmlabkv4MgPiB0b1wtcHJlc3M7Civpm4flk6EgPiBlbXBsb3llZTsKK+eAieiXpSA+IGxheGF0aXZlOwor5o+b572uID4gZGlzcGxhY2U7Civpm6jlgpggPiB1bWJyZWxsYTsKK+WcluisgCA+IGNvbnNwaXJlOwor6JGj5LqLID4gZGlyZWN0b3I7Civli5XkurogPiB0b3VjaGluZzsKK+mYu+aTiiA+IHRvXC1jaGVjazsKK+ijnOiKsSA+IGFwcGxpcXVlOwor5aGX5oq5ID4gdG9cLXNtZWFyOwor6aqo6aq8ID4gc2tlbGV0b247Civoo53oiLkgPiBzaGlwbWVudDsKK+asuuWjkyA+IHRvXC1idWxseTsKK+iNkua2vCA+IGRlc29sYXRlOwor5Ye55p2/ID4gaW50YWdsaW87CivliqPli6IgPiBpbmZlcmlvcjsKK+WIhuaVuCA+IGZyYWN0aW9uOwor55uO54S2ID4gYWJ1bmRhbnQ7Civlo5PlipsgPiBwcmVzc3VyZTsKK+mAo+W/mSA+IHByb21wdGx5Owor6YKj5YCLID4gdGhhdFwtb25lOwor54Sh5oOFID4gcGl0aWxlc3M7Civmk6blr6sgPiB0b1wtZXJhc2U7Civlo5PliLYgPiBzdXBwcmVzczsKK+eyvueiuiA+IGFjY3VyYXRlOwor5YSq576OID4gZ3JhY2VmdWw7CivoiKrpgYsgPiBzaGlwcGluZzsKK+WHveaVuCA+IGZ1bmN0aW9uOwor57aT5bi4ID4gZXZlcnlkYXk7CivmraXlhbUgPiBpbmZhbnRyeTsKK+W5s+aIvyA+IGJ1bmdhbG93Owor5Yaw5ra8ID4gaWNlXC1jb2xkOwor5bm75oOzID4gZGVsdXNpb247Civluo/luZUgPiBwcm9sb2d1ZTsKK+WIu+WvqyA+IGluc2NyaWJlOwor5aKT5ZywID4gY2VtZXRlcnk7Civpgb/lhY0gPiB0b1wtYXZlcnQ7Civopo/moLwgPiBzdGFuZGFyZDsKK+WgtOaJgCA+IGxvY2F0aW9uOwor6L+95oK8ID4gbW91cm5pbmc7Civpm4fkuLsgPiBlbXBsb3llcjsKK+aPreeZvCA+IGRpc2Nsb3NlOwor6Kix5Y+vID4gdG9cLWFsbG93Owor5YKz6KiKID4gc3VicG9lbmE7CivoqZXkvLAgPiBldmFsdWF0ZTsKK+aLlumeiyA+IHNsaXBwZXJzOwor5YG96YCgID4gdG9cLWZvcmdlOwor54Gr54mGID4gZmlyZXdhbGw7Civlh7bmiYsgPiBtdXJkZXJlcjsKK+eEoeWusyA+IGhhcm1sZXNzOwor6Luf6IaPID4gb2ludG1lbnQ7CivmjozogbIgPiBhcHBsYXVzZTsKK+ihqOingCA+IGFwcGFyZW50Owor5Z+L5rKSID4gb2JsaXZpb247CivlubPluLggPiBvcmRpbmFyeTsKK+aLlOmZpCA+IHB1bGxcLW91dDsKK+WinuWKoCA+IHRvXC1yYWlzZTsKK+i7jOiMgyA+IHN0YW5kYXJkOwor5pGp5pOmID4gZnJpY3Rpb247CivoprrlvpcgPiB0b1wtdGhpbms7Civpq5josrQgPiBncmFuZGV1cjsKK+WJquWIgCA+IHNjaXNzb3JzOwor5YWF55W2ID4gc2VydmVcLWFzOwor54K65pmCID4gdGltZXdpc2U7CivpgZTliLAgPiB0b1wtcmVhY2g7Civopb/mlrkgPiB0aGVcLXdlc3Q7CivpgYvli5UgPiBtb3ZlbWVudDsKK+asuuS+riA+IHRvXC1idWxseTsKK+mAmuWgsSA+IGJ1bGxldGluOwor5pKl5a2QID4gcGxlY3RydW07CivluorlooogPiBtYXR0cmVzczsKK+aKl+mrlCA+IGFudGlib2R5Owor6Ieo6L+RID4gY2xvc2VcLXRvOwor6I6r5aSnID4gZ3JlYXRlc3Q7CivntITmnZ8gPiByZXN0cmljdDsKK+WIh+WvpiA+IGZlYXNpYmxlOwor55WM6ZmQID4gYm91bmRhcnk7Civpmb3lhYkgPiBzdW5zaGluZTsKK+WIhuWtkCA+IG1vbGVjdWxlOwor55u45oeJID4gcmVsZXZhbnQ7CivnnL7lpJogPiBudW1lcm91czsKK+mYu+WhniA+IHRvXC1ibG9jazsKK+e1leWwjSA+IGFic29sdXRlOwor5YiG5aipID4gZGVsaXZlcnk7CivnrqHpgZMgPiBwaXBlbGluZTsKK+mBiuS8tCA+IHBsYXltYXRlOwor5bel5qWtID4gaW5kdXN0cnk7CivlhrDmjpIgPiBpY2VcLXJhZnQ7CivpgLLlhaUgPiB0b1wtZW50ZXI7Civot6/pnaIgPiBwYXZlbWVudDsKK+ebtOW+kSA+IGRpYW1ldGVyOwor54Sh5ZCNID4gbmFtZWxlc3M7CivntZDlqZogPiB0b1wtbWFycnk7CivloLXloZ4gPiBibG9ja2FnZTsKK+aSpOWbniA+IHdpdGhkcmF3Owor552+5Li4ID4gdGVzdGljbGU7CivntpPlhbggPiBjbGFzc2ljczsKK+mosOmosCA+IHN0ZWFtaW5nOwor6YC85Lq6ID4gcHJlc3Npbmc7CivovJ3nhYwgPiBzcGxlbmRpZDsKK+eEoeWKqSA+IGhlbHBsZXNzOwor5o6h55SoID4gdG9cLWFkb3B0Owor5bey5pWFID4gdGhlXC1sYXRlOwor5bqP5YiXID4gc2VxdWVuY2U7CivnmbzmsZcgPiB0b1wtc3dlYXQ7CivlnIvnq4sgPiBuYXRpb25hbDsKK+eutOiogCA+IHByb3ZlcmJzOwor6KOc54iQID4gZmV0dGxpbmc7Civot53pm6IgPiBkaXN0YW5jZTsKK+iHquijvSA+IGhvbWVtYWRlOwor6Zi75YqbID4gb2JzdGFjbGU7CivnmJ/nlqsgPiBlcGlkZW1pYzsKK+igleiglSA+IHdpZ2dsaW5nOwor6YCB5YilID4gZmFyZXdlbGw7CivnhKHkurogPiB1bm1hbm5lZDsKK+WFrOaWpCA+IGtpbG9ncmFtOwor5YWs5paHID4gZG9jdW1lbnQ7Civmir3osaEgPiBhYnN0cmFjdDsKK+WHuuWPoyA+IHRvXC1zcGVhazsKK+imquWWhCA+IGdvb2R3aWxsOwor6IiI6Ie0ID4gaW50ZXJlc3Q7CivpgJTkuK0gPiBlblwtcm91dGU7CivplpPmjqUgPiBpbmRpcmVjdDsKK+mQtei3ryA+IHJhaWxyb2FkOwor5pCs5byEID4gbW92ZVwtc3RoOwor5qiZ5pysID4gc3BlY2ltZW47CivpgIDkvY0gPiBhYmRpY2F0ZTsKK+e1hOWQiCA+IGFzc2VtYmxlOwor5aGM5LiLID4gY29sbGFwc2U7CivpgIPkuqEgPiBmdWdpdGl2ZTsKK+aIsOmspSA+IHRvXC1maWdodDsKK+e1seS4gCA+IHRvXC11bmlmeTsKK+WIkeS6iyA+IGNyaW1pbmFsOwor5o+Q5qGIID4gcHJvcG9zYWw7CivooZ3nqoEgPiBjb25mbGljdDsKK+i/veS4iiA+IG92ZXJ0YWtlOwor6Iiq56m6ID4gYXZpYXRpb247Civkv67ovq0gPiByaGV0b3JpYzsKK+a/vua2siA+IGZpbHRyYXRlOwor5bCN6Z2iID4gb3Bwb3NpdGU7Civlh73ku7YgPiBsZXR0ZXJlczsKK+ebuOWPjSA+IG9wcG9zaXRlOwor5oyB57qMID4gY29udGludWU7CivpprTpub8gPiByZWluZGVlcjsKK+aJi+mQsiA+IGJyYWNlbGV0Owor6ISr6ZuiID4gc2VwYXJhdGU7CivpqZroqJ0gPiBjb25mb3VuZDsKK+iEiumqqCA+IGJhY2tib25lOwor5o2V542yID4gdG9cLWNhdGNoOwor6aeV6aebID4gdG9cLWRyaXZlOwor5o6h5qijID4gc2FtcGxpbmc7CivntJTlk4EgPiBzdGVybGluZzsKK+mWgOW+kiA+IGRpc2NpcGxlOwor6L+R5L6GID4gcmVjZW50bHk7Civlr7rpmaIgPiBjbG9pc3RlcjsKK+etlOipsSA+IHRvXC1yZXBseTsKK+alreeVjCA+IGluZHVzdHJ5Owor54Gr5bGxID4gdm9sY2FuaWM7Civlhbblr6YgPiBhY3R1YWxseTsKK+eUn+ipniA+IG5ld1wtd29yZDsKK+i/keS5jiA+IGNsb3NlXC10bzsKK+aiteiqniA+IHNhbnNrcml0Owor5L6/6YGTID4gc2hvcnRjdXQ7CivopLLlrZAgPiB0cm91c2VyczsKK+Wvp+mdnCA+IHRyYW5xdWlsOwor55yB5Lu9ID4gcHJvdmluY2U7CivlsIHpjpYgPiBibG9ja2FkZTsKK+S/r+imliA+IG92ZXJsb29rOwor5bSp5r2wID4gY29sbGFwc2U7CivovInmlJwgPiB0b1wtY2Fycnk7Civmv5XmsKMgPiBtb2lzdHVyZTsKK+eyvuWvhiA+IGFjY3VyYWN5Owor6Iy25YyZID4gdGVhc3Bvb247CivlnIvmsJEgPiBuYXRpb25hbDsKK+WFhOW8nyA+IGJyb3RoZXJzOwor5qCh6amXID4gdG9cLWNoZWNrOwor57KX5b+DID4gY2FyZWxlc3M7CivlhrDlhrcgPiBpY2VcLWNvbGQ7CivoiIjnm5sgPiBmbG91cmlzaDsKK+WAmOiLpSA+IHByb3ZpZGVkOwor6Zec5L+CID4gcmVsYXRpb247CivnmbzlsIQgPiB0b1wtc2hvb3Q7CivmiYvotrMgPiBtb3ZlbWVudDsKK+apn+WLlSA+IGZsZXhpYmxlOwor5o6h5o6YID4gZXhjYXZhdGU7CivotorpgY4gPiB0b1wtY3Jvc3M7Civoo4HmkqQgPiBkaXNzb2x2ZTsKK+WFteWZqCA+IHdlYXBvbnJ5Owor5ouU56+AID4gam9pbnRpbmc7CivmvJTnv5IgPiBleGVyY2lzZTsKK+e0iuS6giA+IGRpc29yZGVyOwor6Lez6IieID4gdG9cLWRhbmNlOwor56+E55aHID4gY2F0ZWdvcnk7CivlhbXlk6EgPiBzb2xkaWVyczsKK+a6tuinoyA+IGRpc3NvbHZlOwor5o6Z5omOID4gc3RydWdnbGU7Civmu7LoibIgPiBibGVlZGluZzsKK+ibi+m7gyA+IGVnZ1wteW9sazsKK+WFseWSjCA+IHJlcHVibGljOwor6LuN5pa5ID4gbWlsaXRhcnk7Civmp4vmg7MgPiBjb25jZWl2ZTsKK+iDjOmdoiA+IHRoZVwtYmFjazsKK+i8lOWwjiA+IHRvXC1jb2FjaDsKK+WvtuiytCA+IHZhbHVhYmxlOwor5YWl5Y+jID4gZW50cmFuY2U7CivpqZXnuLEgPiBhcnJvZ2FudDsKK+mWi+WJtSA+IGluaXRpYXRlOwor5L616J2VID4gdG9cLWVyb2RlOwor5YSA5byPID4gY2VyZW1vbnk7CivmiYHon7IgPiBmbGF0d29ybTsKK+WFvOS9tSA+IHRvXC1hbm5leDsKK+aoguWckiA+IHBhcmFkaXNlOwor5a656YePID4gY2FwYWNpdHk7Civmj4/lnJYgPiB0b1wtdHJhY2U7CivotaTotrMgPiBiYXJlZm9vdDsKK+WxgeiCoSA+IGJ1dHRvY2tzOwor55m85YuVID4gdG9cLXN0YXJ0Owor6KO95ZOBID4gcHJvZHVjdHM7CivlhbHkuqsgPiB0b1wtc2hhcmU7Civoi7Hkv4ogPiBoYW5kc29tZTsKK+aNt+W+kSA+IHNob3J0Y3V0Owor6KGM5qWtID4gaW5kdXN0cnk7Civppqzou4ogPiBjYXJyaWFnZTsKK+WFrOS4uyA+IHByaW5jZXNzOwor5o+Q5ZCNID4gbm9taW5hdGU7Civlm5vmlrkgPiBmb3VyXC13YXk7CivnspfljrIgPiBhYnJhc2l2ZTsKK+i7iuW7giA+IGNhcnJpYWdlOwor6Ieq5rK7ID4gYXV0b25vbXk7Civpq5jmnrYgPiBvdmVyaGVhZDsKK+WbsOaDkSA+IGJld2lsZGVyOwor56yR6IGyID4gbGF1Z2h0ZXI7Civmnb7pvKAgPiBzcXVpcnJlbDsKK+WEquWLoiA+IHN1cGVyaW9yOwor57C/5a2QID4gbm90ZWJvb2s7CivlgrLmhaIgPiBhcnJvZ2FudDsKK+WFiOS7pCA+IHNoaWxsaW5nOwor5rig6YGTID4gY2hhbm5lbHM7CivmoKHoqIIgPiByZXZpc2lvbjsKK+ajkueQgyA+IGJhc2ViYWxsOwor5YSq5YWIID4gcHJpb3JpdHk7CivlmbTms4kgPiBmb3VudGFpbjsKK+i7jeWjqyA+IHNlcmdlYW50Owor5L6G6IeoID4gYXBwcm9hY2g7CivooaPlu5ogPiB3YXJkcm9iZTsKK+S7vemHjyA+IHF1YW50aXR5Owor5YOx5ZOhID4gZW1wbG95ZWU7Civmh4noqbIgPiBvdWdodFwtdG87CivmjqHlhYkgPiBsaWdodGluZzsKK+iBmumbhiA+IGFzc2VtYmxlOwor5oyJ5o26ID4gcmVzdHJhaW47Civoo4HliKQgPiBqdWRnbWVudDsKK+S6uumhniA+IGh1bWFuaXR5Owor5Lyw6KiIID4gZXN0aW1hdGU7CivlnZDkuIsgPiBzaXRcLWRvd247CivlronorJAgPiB0cmFucXVpbDsKK+WbnuWutiA+IGhvbWV3YXJkOwor5L2/6ICFID4gZW1pc3Nhcnk7CivltKnloYwgPiBjb2xsYXBzZTsKK+aJk+egtCA+IHRvXC1icmVhazsKK+WwjeeosSA+IHN5bW1ldHJ5Owor5YGH5pyfID4gdmFjYXRpb247Civpo7zppIogPiB0b1wtcmFpc2U7CivooaPlrZAgPiBjb3ZlcmluZzsKK+izvOiytyA+IHB1cmNoYXNlOwor6Lu85LqLID4gYW5lY2RvdGU7CivnqIDpo68gPiBwb3JyaWRnZTsKK+aKseatiSA+IGJlXC1zb3JyeTsKK+a8gua1riA+IHRvXC1mbG9hdDsKK+alteWlvSA+IGZhYnVsb3VzOwor5qW15aSnID4gZW5vcm1vdXM7CivnlYzmqJkgPiBsYW5kbWFyazsKK+WcsOS9jSA+IHBvc2l0aW9uOwor56ix6YeNID4gdG9cLXdlaWdoOwor56+A5oW2ID4gZmVzdGl2YWw7CivooLvlubIgPiByZWNrbGVzczsKK+msp+WNgCA+IGRvd250b3duOwor5rqW56K6ID4gYWNjdXJhdGU7CivkvrXnlaUgPiBpbnZhc2lvbjsKK+S9tee0lyA+IGRvdWJsaW5nOwor55eF5aSrID4gc2lja1wtbWFuOwor5o6I5LqIID4gdG9cLWF3YXJkOwor5a246KGTID4gbGVhcm5pbmc7CivlnIvlhacgPiBkb21lc3RpYzsKK+iytOmHjSA+IHByZWNpb3VzOwor5bGg5q66ID4gbWFzc2FjcmU7Civmi5TmjokgPiB0b1wtcGx1Y2s7CivnsKHljJYgPiBzaW1wbGlmeTsKK+mpleapqyA+IGFycm9nYW50Owor6LK36YCyID4gcHVyY2hhc2U7CivosrfpgJogPiB0b1wtYnJpYmU7CivmhY7ph40gPiBjYXV0aW91czsKK+a7kea6nCA+IHNsaXBwZXJ5Owor5oyH5bCOID4gdG9cLWd1aWRlOwor5L2N572uID4gcG9zaXRpb247Civnr6HlpaogPiB0b1wtdXN1cnA7Civoh6jluoogPiBjbGluaWNhbDsKK+agveeoriA+IHRvXC1wbGFudDsKK+aIsOeVpSA+IHN0cmF0ZWd5Owor5ZyS5LiBID4gZ2FyZGVuZXI7CivmnKzpq5QgPiBub3VtZW5vbjsKK+mqqOW5uSA+IGJhY2tib25lOwor5Lq66YGTID4gaHVtYW5pdHk7CivouqvliIYgPiBwb3NpdGlvbjsKK+S6uumAoCA+IG1hblwtbWFkZTsKK+eUoualrSA+IGluZHVzdHJ5Owor5bGF5rCRID4gcmVzaWRlbnQ7CivohbPmraUgPiBmb290c3RlcDsKK+aLvOWtlyA+IHNwZWxsaW5nOwor5p2x6YOoID4gdGhlXC1lYXN0Owor6auY5ZywID4gaGlnaGxhbmQ7Civlm7rku7YgPiBmaXJtd2FyZTsKK+S6uui6qyA+IHBlcnNvbmFsOwor6ZGy5bWMID4gdG9cLWlubGF5Owor5qWt5YuZID4gYnVzaW5lc3M7Civlr5/nnIsgPiB0b1wtd2F0Y2g7CivlgI3mlbggPiBtdWx0aXBsZTsKK+WwjeeFpyA+IGNvbnRyYXN0Owor5oq15oq8ID4gbW9ydGdhZ2U7CivogqnohoAgPiBzaG91bGRlcjsKK+euseWtkCA+IHN1aXRjYXNlOwor6Lqr5Lu9ID4gaWRlbnRpdHk7CivkvY7nrYkgPiBpbmZlcmlvcjsKK+WwseatpCA+IGFuZFwtdGh1czsKK+ethuaetiA+IHBlblwtcmFjazsKK+WvtueJqSA+IHRyZWFzdXJlOwor55Sf5pelID4gYmlydGhkYXk7CivpkJjmk7ogPiBwZW5kdWx1bTsKK+mpheaVoyA+IGRpc3BlcnNlOwor5oqx5oCoID4gY29tcGxhaW47CivnrYnmlrwgPiBlcXVhbFwtdG87Civlrbjnv5IgPiB0b1wtbGVhcm47CivmipjmiaMgPiBkaXNjb3VudDsKK+aHuOeWkSA+IHN1c3BlbnNlOwor54+N6LK0ID4gcHJlY2lvdXM7Civmh7fnlpEgPiB0b1wtZG91YnQ7CivnlbblpKkgPiB0aGF0XC1kYXk7CivpjbXnm6QgPiBrZXlib2FyZDsKK+aMh+WNlyA+IHRvXC1ndWlkZTsKK+WutueUqCA+IGhvbWVcLXVzZTsKK+eUn+aEjyA+IGJ1c2luZXNzOwor6ICX6LK7ID4gdG9cLXdhc3RlOwor6Ie05YqbID4gd29ya1wtZm9yOwor5Lqb6KixID4gdHJpZmxpbmc7CivkupTop5IgPiBwZW50YWdvbjsKK+etieW+hSA+IHdhaXRcLWZvcjsKK+aIv+adsSA+IGxhbmRsb3JkOwor5L+u5bu6ID4gdG9cLWJ1aWxkOwor5rWq6LK7ID4gdG9cLXdhc3RlOwor56qB55m8ID4gb3V0YnVyc3Q7Civkv6HlvpIgPiBiZWxpZXZlcjsKK+aJk+aOgyA+IHRvXC1jbGVhbjsKK+aKgOW3pSA+IG1lY2hhbmljOwor5oyB5LmFID4gZHVyYXRpb247CivnrZTlsI0gPiB0b1wtcmVwbHk7Civpoqjou4ogPiB3aW5kbWlsbDsKK+aJi+aPkCA+IHBvcnRhYmxlOwor6aOb6KGMID4gYXZpYXRpb247CivkuI3pnYggPiBub3RcLXdvcms7CivlronnlJ8gPiBwZWFjZWZ1bDsKK+aJk+aJriA+IGRyZXNzXC11cDsKK+WAkuWhjCA+IGNvbGxhcHNlOwor55Sf5a2YID4gdG9cLWV4aXN0Owor6LOm56iFID4gdGF4YXRpb247CivlrZTnqbQgPiBhcGVydHVyZTsKK+a1tOihoyA+IGJhdGhyb2JlOwor5LiA6Z2iID4gb25lXC1zaWRlOwor5oGQ6b6NID4gZGlub3NhdXI7CivlsbHlnaEgPiBoaWxsc2lkZTsKK+mQteWZqCA+IGhhcmR3YXJlOwor55Wr5YOPID4gcG9ydHJhaXQ7CivnlbbkvZwgPiB0cmVhdFwtYXM7Civnpq7osowgPiBjb3VydGVzeTsKK+agveakjSA+IHRvXC1wbGFudDsKK+S/oeWwgSA+IGVudmVsb3BlOwor6IGy56ixID4gdG9cLWNsYWltOwor5bCN5omLID4gb3Bwb25lbnQ7Civkv6HlroggPiBhYmlkZVwtYnk7CivogZbntIQgPiBjb3ZlbmFudDsKK+agoeatoyA+IHJlZ3VsYXRlOwor6YeN6bueID4gZW1waGFzaXM7Civogb3nnL4gPiBhdWRpZW5jZTsKK+mojuW4qyA+IGhvcnNlbWFuOwor56en6IuXID4gc2VlZGxpbmc7Civmga3poIYgPiBkZWZlcmVudDsKK+mNteanvSA+IGtleVwtc2xvdDsKK+izvOeJqSA+IHNob3BwaW5nOwor5Zau5pOaID4gcmVjZWlwdHM7CivmnIPoroogPiB2YXJpYWJsZTsKK+WwkeW5tCA+IGp1dmVuaWxlOwor6aiZ5a2QID4gc3dpbmRsZXI7Civoga/nm58gPiBhbGxpYW5jZTsKK+i3r+WPoyA+IGNyb3NzaW5nOwor6JmV572wID4gcGVuYWxpemU7Civph5HprZogPiBnb2xkZmlzaDsKK+WqmuipniA+IGZsYXR0ZXJ5Owor5ZCr6YePID4gY29udGVudHM7CivnlKjlip8gPiBkaWxpZ2VudDsKK+ethuWQjSA+IHBlblwtbmFtZTsKK+S9m+aVmSA+IGJ1ZGRoaXNtOwor5Y+v6Z2gID4gcmVsaWFibGU7Civos4fnlKIgPiBwcm9wZXJ0eTsKK+mpheWLlSA+IHRvXC1kcml2ZTsKK+mpleWCsiA+IGFycm9nYW50Owor5a+T5omAID4gZHdlbGxpbmc7CivnlLHkvZkgPiBvd2luZ1wtdG87CivomJHoj7AgPiBtdXNocm9vbTsKK+mggemdoiA+IHdlYlwtcGFnZTsKK+S4gOi1tyA+IHRvZ2V0aGVyOwor5ri05pybID4gZGVzaXJvdXM7CivotbDlu4ogPiBjb3JyaWRvcjsKK+acrOiDvSA+IGluc3RpbmN0Owor5Zec5aW9ID4gZm9uZG5lc3M7CivlsI3lpJYgPiBleHRlcm5hbDsKK+e8uumZtyA+IGFcLWRlZmVjdDsKK+ibi+auvCA+IGVnZ3NoZWxsOwor5ZCD6YaLID4gamVhbG91c3k7CivlkIjpgakgPiBzdWl0YWJsZTsKK+WumOaWuSA+IG9mZmljaWFsOwor5ruR5YawID4gdG9cLXNrYXRlOwor5ZWG5qWtID4gYnVzaW5lc3M7CivosqHnlKIgPiBwcm9wZXJ0eTsKK+Wul+aVmSA+IHJlbGlnaW9uOwor6Z+M6auUID4gZmlybXdhcmU7Civlkb3ohIggPiBsaWZlbGluZTsKK+S5g+iHsyA+IGFuZFwtZXZlbjsKK+enn+eohSA+IGxhbmRcLXRheDsKK+mghemNiiA+IG5lY2tsYWNlOwor5oGl6L6xID4gZGlzZ3JhY2U7CivkuI3ooYwgPiB3b24nJ3RcLWRvOwor5a6I5pmCID4gcHVuY3R1YWw7CivmmpfovYkgPiBibGFja291dDsKK+aJk+WNsCA+IHRvXC1wcmludDsKK+WujOaVtCA+IGNvbXBsZXRlOwor5L615ZCeID4gdG9cLWFubmV4Owor5rOi6K2cID4gc3BlY3RydW07CivmoL3lrZAgPiBzZWVkbGluZzsKK+iygueariA+IG1pbmtcLWZ1cjsKK+mGq+mZoiA+IGhvc3BpdGFsOwor6LKh54mpID4gcHJvcGVydHk7Civms7PooaMgPiBzd2ltc3VpdDsKK+a3muawtCA+IHRlYXJkcm9wOwor6IKJ5qGCID4gY2lubmFtb247CivmuJvmjokgPiBzdWJ0cmFjdDsKK+m8u+eCjiA+IHJoaW5pdGlzOwor5p+Q5pmCID4gc29tZXRpbWU7Civol6Xoho8gPiBvaW50bWVudDsKK+WujOaIkCA+IGNvbXBsZXRlOwor5rqi5Ye6ID4gb3ZlcmZsb3c7CivlkJHopb8gPiB3ZXN0d2FyZDsKK+iuiumHjyA+IHZhcmlhYmxlOwor5Y+b6YCGID4gdG9cLXJlYmVsOwor5oiw5Y2AID4gd2FyXC16b25lOwor5Y+x6LKsID4gcmVwcm9hY2g7Civnq4vloLQgPiBwb3NpdGlvbjsKK+iynua9lCA+IGNoYXN0aXR5Owor5qCX5a2QID4gY2hlc3RudXQ7CivkuK3nubwgPiB0b1wtcmVsYXk7Civnv7PnnLwgPiBjYXRhcmFjdDsKK+mOruWNgCA+IHRvd25zaGlwOwor5p2/5rK5ID4gbGVhZlwtZmF0Owor5oe45Z6CID4gb3Zlcmhhbmc7CivphZLprLwgPiBkcnVua2FyZDsKK+S4jeiCliA+IHVud29ydGh5Owor54+t5qmfID4gYWlybGluZXI7CivpoJDoqIAgPiBwcm9waGVjeTsKK+eql+WtkCA+IGNhc2VtZW50Owor5a+m5YqbID4gc3RyZW5ndGg7Civmh4nlsI0gPiByZXNwb25zZTsKK+e+mue+iiA+IGFudGVsb3BlOwor5Lqk5rWBID4gZXhjaGFuZ2U7Civlj5voroogPiByZW5lZ2FkZTsKK+aIsOS6iyA+IGZpZ2h0aW5nOwor5Y+v6KGMID4gZmVhc2libGU7CivmhpTmgrQgPiBsYW5ndWlzaDsKK+WNsemboyA+IGNhbGFtaXR5Owor5a6J5a+nID4gcGVhY2VmdWw7CivkuLnnoIIgPiBjaW5uYWJhcjsKK+aguOWHhiA+IHNhbmN0aW9uOwor6K206LKsID4gZGVub3VuY2U7CivmoYjku7YgPiBsYXdcLWNhc2U7Civlp7vopqogPiBhZmZpbml0eTsKK+a1qua8qyA+IHJvbWFudGljOwor5p2R5rCRID4gdmlsbGFnZXI7CivmhbfmhaggPiB2ZWhlbWVudDsKK+irlum7niA+IGFyZ3VtZW50Owor5pyo54KtID4gY2hhcmNvYWw7Civpu4Pnk5wgPiBjdWN1bWJlcjsKK+S4jeerryA+IGltcHJvcGVyOwor5pqX6IeqID4gaW53YXJkbHk7Civmh4rllqogPiBkZWplY3RlZDsKK+eogOaciSA+IHVuY29tbW9uOwor6aOb5qmfID4gYWlycGxhbmU7CivlrqTlj4sgPiByb29tbWF0ZTsKK+iytuaKkSA+IGJlbGl0dGxlOwor6JaE6IacID4gbWVtYnJhbmU7CivmnbHmlrkgPiB0aGVcLWVhc3Q7CivnqIXmlLYgPiB0YXhhdGlvbjsKK+miqOa9riA+IGNhbXBhaWduOwor6IOM5YyFID4ga25hcHNhY2s7Civpu6jmtL4gPiBwYXJ0aXNhbjsKK+WtkOWxpCA+IHN1YmxheWVyOwor6aOy5paZID4gYmV2ZXJhZ2U7CivkurrmiYsgPiBtYW5wb3dlcjsKK+S6jOaciCA+IGZlYnJ1YXJ5Owor5rKS6JC9ID4gZG93bmZhbGw7CivlkKvnorMgPiBjYXJib25pYzsKK+acgOeCuiA+IHRoZVwtbW9zdDsKK+mGq+iXpSA+IG1lZGljaW5lOwor5rex5aWnID4gcHJvZm91bmQ7CivllZ/li5UgPiB0b1wtc3RhcnQ7CivlrbjllY8gPiBsZWFybmluZzsKK+S4jeeUqCA+IG5lZWRcLW5vdDsKK+miqOawtCA+IGZlbmdzaHVpOwor5oSa5pinID4gaWdub3JhbnQ7CivmnZDmlpkgPiBtYXRlcmlhbDsKK+awtOi3ryA+IHdhdGVyd2F5Owor5a2Q5aWzID4gY2hpbGRyZW47CivkuovmlYUgPiBhY2NpZGVudDsKK+mHh+iBsiA+IGFwcGxhdXNlOwor5a6M5YWoID4gY29tcGxldGU7CivnorDop7ggPiB0b1wtdG91Y2g7CivkuI3njaggPiBub3RcLW9ubHk7CivlrprkvY0gPiBwb3NpdGlvbjsKK+WtmOWcqCA+IHRvXC1leGlzdDsKK+iyqOW5oyA+IGN1cnJlbmN5Owor5LiL542EID4gaW1wcmlzb247CivlrbXljJYgPiBicmVlZGluZzsKK+iaiuWtkCA+IG1vc3F1aXRvOwor5LiN54m5ID4gbm90XC1vbmx5Owor6Z6t6J+yID4gd2hpcHdvcm07CivkuI3niL0gPiBub3RcLXdlbGw7CivmgKfog70gPiBmdW5jdGlvbjsKK+a0qua1gSA+IGNhdGFyYWN0Owor5oeC5LqLID4gc2Vuc2libGU7Civpo5/mhb4gPiBhcHBldGl0ZTsKK+mDqOmhniA+IGNhdGVnb3J5Owor5ZCM55ufID4gYWxsaWFuY2U7CivpnIfpqZogPiB0b1wtc2hvY2s7CivlkLjnhZkgPiB0b1wtc21va2U7CivorJ3orJ0gPiB0b1wtdGhhbms7CivkuI3mv58gPiBub3RcLWdvb2Q7CivpoK3nl5sgPiBoZWFkYWNoZTsKK+S8meS8tCA+IHBhcnRpc2FuOwor5pqX55uSID4gbWFnYXppbmU7Civogpblg48gPiBwb3J0cmFpdDsKK+S4reatoiA+IHRvXC1jZWFzZTsKK+ism+ipsSA+IGFcLXNwZWVjaDsKK+ael+WcsCA+IHdvb2RsYW5kOwor5rex5Yi7ID4gcHJvZm91bmQ7Civkuq3lrZAgPiBwYXZpbGlvbjsKK+mfs+evgCA+IHN5bGxhYmxlOwor5p625YuiID4gYXR0aXR1ZGU7CivkuI3muKwgPiBhY2NpZGVudDsKK+WkqumVtyA+IG92ZXJzaXplOwor5Yui6aCtID4gbW9tZW50dW07CivlpKfploAgPiBlbnRyYW5jZTsKK+aEmuW8hCA+IGRlcmlzaW9uOwor5b6A6YKEID4gY29udGFjdHM7CivmsrvnmYIgPiB0b1wtdHJlYXQ7CivnpKbnlKIgPiBtaW5lcmFsczsKK+S4iua1tyA+IHNoYW5naGFpOwor572q54qvID4gY3JpbWluYWw7CivniJDpgoogPiBmaXJlc2lkZTsKK+aEieW/qyA+IGNoZWVyZnVsOwor6K6K56iuID4gbXV0YXRpb247Civoq5bov7AgPiB0cmVhdGlzZTsKK+WLn+mbhiA+IHRvXC1yYWlzZTsKK+a1t+WzvSA+IHN0cmFpZ2h0Owor54it6KuWID4gdG9cLWFyZ3VlOwor6IGW5YyWID4gc2FuY3RpZnk7CivmmI7ohqsgPiBtYW5pZmVzdDsKK+mHjeeUsyA+IHJlYWZmaXJtOwor5pq05rSqID4gYVwtc3VkZGVuOwor5pu/5o+bID4gZXhjaGFuZ2U7CivppKHlhZIgPiBzdHVmZmluZzsKK+acieaJgCA+IHNvbWV3aGF0Owor5pal6LKsID4gZGVub3VuY2U7Civph43njbIgPiByZWNvdmVyeTsKK+S4jeacvSA+IGltbW9ydGFsOwor5rW35aSWID4gb3ZlcnNlYXM7CivnjovlrrYgPiBwcmluY2VseTsKK+WTqOWFtSA+IHNlbnRpbmVsOwor6LK25L2OID4gYmVsaXR0bGU7Civpm4npm54gPiBwaGVhc2FudDsKK+aDs+WutiA+IGhvbWVzaWNrOwor5ZOl5YWSID4gYnJvdGhlcnM7Civoj6/pupcgPiBnb3JnZW91czsKK+iyt+S4uyA+IGN1c3RvbWVyOwor5oWY5LqLID4gZGlzYXN0ZXI7CivpoJDmuKwgPiBmb3JlY2FzdDsKK+e+juaXpSA+IHVzXC1qYXBhbjsKK+iyoOWCtSA+IGluZGVidGVkOwor6Zuo6YePID4gcmFpbmZhbGw7Civlj7jms5UgPiBqdWRpY2lhbDsKK+iqlei+sCA+IGJpcnRoZGF5Owor5ZKz5Ze9ID4gdG9cLWNvdWdoOwor5oKy5oWfID4gbW91cm5mdWw7CivliqDplbcgPiBsZW5ndGhlbjsKK+WQkOajhCA+IHRvXC1zcHVybjsKK+WLuOiqqiA+IHBlcnN1YWRlOwor6JmV5YiGID4gZGlzcG9zYWw7Civml6Xnvo4gPiBqYXBhblwtdXM7Civlop7pq5ggPiBoZWlnaHRlbjsKK+mBsumgkyA+IGluYWN0aXZlOwor6LKh5Li7ID4gcmljaFwtbWFuOwor5LiN5oiQID4gd29uJyd0XC1kbzsKK+WkouipsSA+IGRheWRyZWFtOwor5LiN5oeIID4gdW50aXJpbmc7CivlpKfopoEgPiBhYnN0cmFjdDsKK+acgOWwkSA+IHNtYWxsZXN0Owor6K2354WnID4gcGFzc3BvcnQ7CivkuLvlrrAgPiBkb21pbmF0ZTsKK+WkouimiyA+IHRvXC1kcmVhbTsKK+S4jeaDnyA+IG5vdFwtb25seTsKK+S6i+WFkiA+IGJ1c2luZXNzOwor5aSn6KGjID4gb3ZlcmNvYXQ7Civnp7vkuqQgPiB0cmFuc2ZlcjsKK+abuOWvqyA+IHRvXC13cml0ZTsKK+S4jeaAlSA+IGZlYXJsZXNzOwor5LiN5b+FID4gbmVlZFwtbm90Owor5rKW5rSXID4gdG9cLXJpbnNlOwor5LiN5b6XID4gbXVzdFwtbm90Owor5LiN5b6IID4gbm90XC12ZXJ5Owor5pqX5pqXID4gc2VjcmV0bHk7CivlibfpmaQgPiByb290XC1vdXQ7CivwqLq5ID4gbW91cm5mdWw7CivnpZ7mgKcgPiBkaXZpbml0eTsKK+e4veijgSA+IGNoYWlybWFuOwor5aSW6KGoID4gZXh0ZXJuYWw7CivmsonmtbggPiBwZXJtZWF0ZTsKK+aUr+mFjSA+IGRvbWluYXRlOwor576O5b63ID4gYVwtdmlydHVlOwor6ZuE6L6vID4gZWxvcXVlbnQ7Civpu57lkI0gPiByb2xsY2FsbDsKK+W/veeEtiA+IHN1ZGRlbmx5Owor5pel56iLID4gc2NoZWR1bGU7Civlp6bmt6sgPiBhZHVsdGVyeTsKK+ixquS/oCA+IGNhdmFsaWVyOwor5pe655ubID4gdmlnb3JvdXM7CivlpJbomZ8gPiBuaWNrbmFtZTsKK+Wlh+iBniA+IGFuZWNkb3RlOwor5YmN6aGNID4gZm9yZWhlYWQ7CivmtbfkuIogPiBtYXJpdGltZTsKK+mbnOiqjCA+IG1hZ2F6aW5lOwor57ay6ZqbID4gaW50ZXJuZXQ7CivnhrHoqqAgPiBkZXZvdGlvbjsKK+WQiOaIkCA+IGNvbXBvdW5kOwor5ZG85Y+rID4gdG9cLXNob3V0Owor5aSp6IqxID4gc21hbGxwb3g7Civpm6jooaMgPiByYWluY29hdDsKK+WQjOaEjyA+IHRvXC1hZ3JlZTsKK+acrOS+hiA+IG9yaWdpbmFsOwor5pys5L2NID4gc3RhbmRhcmQ7CivlkJHlvowgPiBiYWNrd2FyZDsKK+acjeWLmSA+IHRvXC1zZXJ2ZTsKK+awkeecviA+IHBvcHVsYWNlOwor5aiB5pybID4gcHJlc3RpZ2U7CivmtLvli5UgPiBhY3Rpdml0eTsKK+WPm+aVmSA+IGFwb3N0YWN5Owor5LiN5aSnID4gbm90XC12ZXJ5Owor5aSn6IO9ID4gYWxtaWdodHk7CivmnInlipsgPiBwb3dlcmZ1bDsKK+aZguapnyA+IG9jY2FzaW9uOwor5ZCm5a6aID4gbmVnYXRpdmU7Civol6XllYYgPiBkcnVnZ2lzdDsKK+WPjeaYoCA+IHJlYWN0aW9uOwor6YG66LSIID4gYmVxdWVhdGg7CivmlofogbcgPiBjaXZpbGlhbjsKK+WpmuWrgSA+IG1hcnJpYWdlOwor57eK6L+rID4gcHJlc3Npbmc7CivorormlbggPiB2YXJpYWJsZTsKK+itsOahiCA+IHByb3Bvc2FsOwor5ZCb5a2QID4gbm9ibGVtYW47Civlu7roqK0gPiB0b1wtYnVpbGQ7CivnibnmtL4gPiBkaXNwYXRjaDsKK+mbu+iFpiA+IGNvbXB1dGVyOwor5ZCM5bGLID4gcm9vbW1hdGU7Civol6XlipEgPiBtZWRpY2luZTsKK+S4gOWcmCA+IHJlZ2ltZW50Owor56Oo5pOmID4gZnJpY3Rpb247Civmkq3pn7MgPiB0cmFuc21pdDsKK+WPsOW6pyA+IHBlZGVzdGFsOwor5qy66LKgID4gdG9cLWJ1bGx5Owor6YGO6LyJID4gb3ZlcmxvYWQ7CivpgbLoqqQgPiB0b1wtZGVsYXk7CivnpZblnIsgPiBob21lbGFuZDsKK+mghuW+niA+IG9iZWRpZW50Owor5Li75Lu7ID4gZGlyZWN0b3I7Civms7DlnIsgPiB0aGFpbGFuZDsKK+ino+mWiyA+IHRvXC11bnRpZTsKK+aal+WupCA+IGRhcmtyb29tOwor5aW254mbID4gbWlsa1wtY293Owor5Y+N5oeJID4gcmVhY3Rpb247CivmgrLliIcgPiBtb3VybmZ1bDsKK+S4jeWPqiA+IG5vdFwtb25seTsKK+W5tOmdkiA+IHlvdXRoZnVsOwor6aCG5bqPID4gc2VxdWVuY2U7CivkuK3kv50gPiBhZHZvY2F0ZTsKK+W5s+mdnCA+IHRyYW5xdWlsOwor5ae/5oWLID4gYXR0aXR1ZGU7CivlkYrliKUgPiB0b1wtbGVhdmU7CivkuIDlkaggPiBvbmVcLXdlZWs7CivmrLroqZAgPiB0b1wtY2hlYXQ7CivkuIDlkJEgPiBhbGxcLWxvbmc7Civmm53lhYkgPiBleHBvc3VyZTsKK+awruawoyA+IG5pdHJvZ2VuOwor6ZmE6YyEID4gYXBwZW5kaXg7CivkuIDljJkgPiBzcG9vbmZ1bDsKK+eil+argyA+IGN1cGJvYXJkOwor56CU56m2ID4gcmVzZWFyY2g7CivmgKDmg7AgPiBpZGxlbmVzczsKK+WMheeariA+IHdyYXBwaW5nOwor54qv5oSBID4gdG9cLXdvcnJ5Owor5Yiw6YGUID4gdG9cLXJlYWNoOwor5Y+l5a2QID4gc2VudGVuY2U7CivlpYnnj74gPiBvZmZlcmluZzsKK+S4jeWApiA+IHRpcmVsZXNzOwor5q+P55W2ID4gd2hlbmV2ZXI7CivoqILos7wgPiB0b1wtb3JkZXI7CivmlpHnmb0gPiBncml6emxlZDsKK+itieaTmiA+IGV2aWRlbmNlOwor56WW5YWIID4gYW5jZXN0b3I7CivluLjpp5AgPiByZXNpZGVudDsKK+aatOWKmyA+IHZpb2xlbmNlOwor6ZuG6IGaID4gYXNzZW1ibGU7CivmmJTml6UgPiBmb3JtZXJseTsKK+WKn+iDvSA+IGZ1bmN0aW9uOwor6K2m5oOVID4gdmlnaWxhbnQ7Civms6Lli5UgPiB1bmR1bGF0ZTsKK+mgkOWgsSA+IGZvcmVjYXN0Owor5aWH54m5ID4gcGVjdWxpYXI7Civlv6DmlrwgPiBsb3lhbFwtdG87CivmmI7ml6UgPiB0b21vcnJvdzsKK+ips+e0sCA+IGRldGFpbGVkOwor5pq05YWJID4gZXhwb3N1cmU7CivpoJHlm7ogPiBzdHViYm9ybjsKK+mBuOiIiSA+IHRvXC1lbGVjdDsKK+mAgOmBvyA+IHdpdGhkcmF3Owor57e057+SID4gZXhlcmNpc2U7Civln7nppIogPiB0b1wtdHJhaW47Civpn4zluLYgPiBsaWdhbWVudDsKK+aSpOmAgCA+IHJldHJlYXQ7Civnib3mia8gPiBpbnZvbHZlOwor5ama5LqLID4gd2VkZGluZzsKK+aqoumWsSA+IGluc3BlY3Q7CivoqLToi6YgPiBncnVtYmxlOwor5pqr5YGcID4gc3VzcGVuZDsKK+inuOinkiA+IGFudGVubmE7CivlvarngrMgPiBzaGluaW5nOwor57235LyRID4gZ2l2ZVwtdXA7CivntLDplbcgPiBzbGVuZGVyOwor6KqN55yfID4gZWFybmVzdDsKK+aZguWwmiA+IGZhc2hpb247CivniYjmnKwgPiB2ZXJzaW9uOwor6L+06L2JID4gcmV2b2x2ZTsKK+W6h+ittyA+IHNoZWx0ZXI7CivphbjmgKcgPiBhY2lkaXR5Owor57eo57qCID4gY29tcGlsZTsKK+WQm+S4uyA+IG1vbmFyY2g7CivnuL3nkIYgPiBwcmVtaWVyOwor5aSp54S2ID4gbmF0dXJhbDsKK+edoeihoyA+IHBhamFtYXM7CivmlbTnkIYgPiBhcnJhbmdlOwor54WZ6I2JID4gdG9iYWNjbzsKK+eHpueImyA+IGdsaXR0ZXI7Civlj6/li5UgPiBtb3ZhYmxlOwor5rC05omLID4gbWFyaW5lcjsKK+WQhOWAiyA+IHZhcmlvdXM7Civlj6PlkIMgPiBzdGFtbWVyOwor6I+P6JitID4gaG9sbGFuZDsKK+mgmOWFiCA+IHRvXC1sZWFkOwor6I+g6I+cID4gc3BpbmFjaDsKK+WNgeaciCA+IG9jdG9iZXI7CivorprlkIwgPiBhcHByb3ZlOwor5q+b5q+vID4gYmxhbmtldDsKK+mZveiHuiA+IGJhbGNvbnk7Civov5Hpg4ogPiBzdWJ1cmJzOwor54uC5ZacID4gZWNzdGFzeTsKK+awuOaBhiA+IGV0ZXJuYWw7Civoq4vmsYIgPiByZXF1ZXN0Owor6YSZ5qOEID4gZGlzZGFpbjsKK+WHuui1sCA+IHRvXC1mbGVlOwor5pWI55uKID4gYmVuZWZpdDsKK+mHjeWKmyA+IGdyYXZpdHk7CivnorzlrZcgPiBudW1lcmFsOwor57Sh6YyYID4gc3BpbmRsZTsKK+W8hOeijiA+IGNydW1ibGU7Civlp5DlprkgPiBzaXN0ZXJzOwor55uu6YyEID4gY2F0YWxvZzsKK+ato+eiuiA+IGNvcnJlY3Q7Civlv4PmhJsgPiBiZWxvdmVkOwor5byE55+tID4gc2hvcnRlbjsKK+eEoeiZlSA+IG5vd2hlcmU7CivororljpogPiB0aGlja2VuOwor5aaW5oCqID4gbW9uc3RlcjsKK+e3iue3iiA+IGNsb3NlbHk7CivpmrHnp4EgPiBwcml2YWN5Owor6Zec6Y21ID4gY3J1Y2lhbDsKK+Wnv+WLoiA+IHBvc3R1cmU7CivlppLlv4wgPiBqZWFsb3VzOwor5by354OIID4gaW50ZW5zZTsKK+WlveaIsCA+IHdhcmxpa2U7CivlubPooaEgPiBiYWxhbmNlOwor54m55a6aID4gc3BlY2lhbDsKK+W8hOeauiA+IGNydW1wbGU7Civnm7jpgKMgPiB0b1wtbGluazsKK+aWh+azlSA+IGdyYW1tYXI7Civlj6TkvoYgPiBvbGR0aW1lOwor5aSp5rCjID4gd2VhdGhlcjsKK+ato+ebtCA+IHVwcmlnaHQ7CivphZLlu6AgPiBicmV3ZXJ5Owor5b6B5pyNID4gY29ucXVlcjsKK+e0oumBkyA+IHJvcGV3YXk7CivpmbjnuowgPiBpblwtdHVybjsKK+maseeeniA+IHRvXC1oaWRlOwor5aSW5rWBID4gb3V0ZmxvdzsKK+W3pemgrSA+IGZvcmVtYW47Civlj6bkuIAgPiBhbm90aGVyOwor6YGg56uvID4gZmFyXC1lbmQ7Civnmq7pnakgPiBsZWF0aGVyOwor5Yqg55ScID4gc3dlZXRlbjsKK+mfs+S/oSA+IG1lc3NhZ2U7CivnhrHnh5kgPiB0b1wtYnVybjsKK+manOekmSA+IGJhcnJpZXI7Civoqp7ms5UgPiBncmFtbWFyOwor6K2m5ZGKID4gdG9cLXdhcm47CivnhLbogIwgPiBob3dldmVyOwor5aSn5qaCID4gcm91Z2hseTsKK+mbu+axoCA+IGJhdHRlcnk7Civlpb3lub4gPiBzZXZlcmFsOwor5q+U5pa5ID4gYW5hbG9neTsKK+mAgOiQvSA+IHN1YnNpZGU7CivororkuoIgPiB0dXJtb2lsOwor6KuL5pWZID4gY29uc3VsdDsKK+eGsea9riA+IHVwc3VyZ2U7CivmrLrnnp4gPiB0b1wtZm9vbDsKK+avlOaTrCA+IGNvbXBhcmU7CivorbDlg7kgPiBiYXJnYWluOwor57qW5byxID4gZnJhZ2lsZTsKK+WNmuWtuCA+IGxlYXJuZWQ7CivopovorYkgPiB3aXRuZXNzOwor5Yqg54axID4gaGVhdGluZzsKK+WfjumDiiA+IHN1YnVyYnM7CivniafloLQgPiBwYXN0dXJlOwor6Z2e5bi4ID4gdW51c3VhbDsKK+WLh+awoyA+IGNvdXJhZ2U7CivlpLHmlYggPiB0b1wtZmFpbDsKK+WFiOmphSA+IHBpb25lZXI7CivprpHprZogPiBhYmFsb25lOwor54qv5Lq6ID4gY29udmljdDsKK+iNt+iYrSA+IGhvbGxhbmQ7Civpm6PmsJEgPiByZWZ1Z2VlOwor6YCj57WQID4gY29ubmVjdDsKK+W+iOW/qyA+IHF1aWNrbHk7CivpgbrniakgPiByZW1uYW50Owor5q+S5omTID4gYmVhdFwtdXA7CivphpzkuosgPiBzY2FuZGFsOwor6ZmN57SaID4gZGVncmFkZTsKK+eEpuezliA+IGNhcmFtZWw7CivmkZjopoEgPiBzdW1tYXJ5Owor6YCy56iLID4gcHJvY2VzczsKK+i+r+inoyA+IGV4cGxhaW47CivmkZTop5IgPiB3cmVzdGxlOwor5YyF5omOID4gd3JhcFwtdXA7Civlu6LniakgPiBydWJiaXNoOwor5aWH5oCqID4gc3RyYW5nZTsKK+WnlOS7uyA+IGFwcG9pbnQ7Civmq4Poh7ogPiBjb3VudGVyOwor5q6Y5qCqID4gc3R1YmJsZTsKK+WlveWlhyA+IGN1cmlvdXM7CivnmbvpmbggPiB0b1wtbGFuZDsKK+avhuaJkyA+IGJlYXRcLXVwOwor55uj6KaWID4gb3ZlcnNlZTsKK+W9ouaIkCA+IHRvXC1mb3JtOwor57i95pW4ID4gYVwtdG90YWw7CivnibnliLYgPiBzcGVjaWFsOwor5by35pq0ID4gdmlvbGVudDsKK+W+t+WciyA+IGdlcm1hbnk7CivntbHntbEgPiB0b3RhbGx5Owor54Sh56quID4gZW5kbGVzczsKK+efruaelyA+IGNvcHBpY2U7CivlooPnlYwgPiBib3VuZHJ5Owor5byE5q2qID4gZGlzdG9ydDsKK+WGsOiiiyA+IGljZVwtYmFnOwor6K2J5Lq6ID4gd2l0bmVzczsKK+mWseiugCA+IHRvXC1yZWFkOwor6YO15beuID4gcG9zdG1hbjsKK+mdouWariA+IHRvXC1mYWNlOwor6Ke455m8ID4gdHJpZ2dlcjsKK+eIreWftyA+IGRpc3B1dGU7CivngJ3pnZIgPiBhc3BoYWx0Owor5Y2z5L6/ID4gZXZlblwtaWY7CivlpKflu4ggPiBlZGlmaWNlOwor55m86YW1ID4gZmVybWVudDsKK+WNs+S9vyA+IGV2ZW5cLWlmOwor6Zax6Ka9ID4gdG9cLXJlYWQ7Civlubjnpo8gPiBibGVzc2VkOwor54Sh55uKID4gbm9cLWdvb2Q7CivliKnnm4ogPiBiZW5lZml0Owor6Ziy56amID4gZGVmZW5zZTsKK+att+aZgiA+IHRvXC1sYXN0Owor54mI5Yi7ID4gY2FydmluZzsKK+e2k+eQhiA+IG1hbmFnZXI7CivphY3lgbYgPiBjb25zb3J0Owor5q2q5puyID4gZGlzdG9ydDsKK+aVkeaPtCA+IHRvXC1zYXZlOwor5pel5Ye6ID4gc3VucmlzZTsKK+awo+WAmSA+IGNsaW1hdGU7CivnuYPluLYgPiBiYW5kYWdlOwor54Sh55SoID4gdXNlbGVzczsKK+mAl+eVmSA+IHN0YXlcLWF0Owor5Yip55SoID4gZXhwbG9pdDsKK+WNgOWNgCA+IHRyaXZpYWw7CivniK3lkLUgPiBkaXNwdXRlOwor5b6u5YWJID4gZ2xpbW1lcjsKK+avj+WknCA+IG5pZ2h0bHk7CivpgZXms5UgPiBpbGxlZ2FsOwor5Ye656efID4gdG9cLXJlbnQ7Civpm4DmlpEgPiBmcmVja2xlOwor5pS25pOaID4gcmVjZWlwdDsKK+WNgeWFrSA+IHNpeHRlZW47CivnuarlnJYgPiB0b1wtZHJhdzsKK+WdpumAlCA+IGhpZ2h3YXk7Civnn6XmgokgPiB0b1wta25vdzsKK+aUr+aSkCA+IHByb3BcLXVwOwor54ax5oOFID4gY29yZGlhbDsKK+aOkumZpCA+IGV4Y2x1ZGU7CivljYHlgI0gPiB0ZW5mb2xkOwor5Ymb5q+bID4gYnJpc3RsZTsKK+apq+iHpSA+IHJlY2xpbmU7CivliLrmv4AgPiBwcm92b2tlOwor57aT5r+fID4gZWNvbm9teTsKK+e0sOevgCA+IGRldGFpbHM7Civnsr7oo70gPiByZWZpbmVkOwor5pWZ5birID4gdGVhY2hlcjsKK+aogui2oyA+IGRlbGlnaHQ7CivmlLbmiJAgPiBoYXJ2ZXN0Owor5Y2B5LqUID4gZmlmdGVlbjsKK+WkmuWkpyA+IGhvd1wtYmlnOwor5YWx6JmVID4gY29leGlzdDsKK+aUquaLjCA+IHRvXC1zdGlyOwor6LyV6LyVID4gbGlnaHRseTsKK+WIqea9pCA+IHByb2ZpdHM7Civoo53ovIkgPiB0b1wtbG9hZDsKK+WMheWQqyA+IGNvbnRhaW47Civmk6/mo4QgPiBhYmFuZG9uOwor55m86KGMID4gcHVibGlzaDsKK+eZveifuyA+IHRlcm1pdGU7CivpgbjmiYsgPiBhdGhsZXRlOwor5aSx5Y67ID4gdG9cLWxvc2U7CivovKroqaIgPiB0b1wtcG9sbDsKK+W9q+WIuyA+IGVuZ3JhdmU7CivoirHosrsgPiBleHBlbnNlOwor6JGJ5a2QID4gZm9saWFnZTsKK+iNieeovyA+IG91dGxpbmU7CivmrabluqsgPiBhcnNlbmFsOwor5byE5bmzID4gZmxhdHRlbjsKK+WItuatoiA+IHRvXC1jdXJiOwor57O+57SbID4gZGlzcHV0ZTsKK+iMheiIjSA+IGNvdHRhZ2U7CivnhafmkKwgPiB0b1wtY29weTsKK+WFteiJpiA+IHdhcnNoaXA7Civoo5zosrwgPiBzdWJzaWR5Owor5q2j5bi4ID4gcmVndWxhcjsKK+W7muaIvyA+IGtpdGNoZW47CivmlofljJYgPiBjdWx0dXJlOwor5bSp6Zm3ID4gZmFsbFwtaW47CivpgJnmrKEgPiBwcmVzZW50Owor5bey57aTID4gYWxyZWFkeTsKK+W3tOe1kCA+IGZhd25cLW9uOwor55q657SLID4gd3JpbmtsZTsKK+asiuadliA+IHNjZXB0ZXI7CivljIbkv4MgPiBoYXN0aWx5Owor5qyE5p+1ID4gYmFycmllcjsKK+eZvuiQrCA+IG1pbGxpb247CivlpJrljYogPiBjaGllZmx5Owor55uu55qEID4gcHVycG9zZTsKK+mAseacqyA+IHdlZWtlbmQ7CivliJ3mraUgPiBpbml0aWFsOwor5qyE5p2GID4gcmFpbGluZzsKK+eFqeaDsSA+IGFnb25pemU7CivlvYjlir4gPiBpbXBlYWNoOwor54Wp5oK2ID4gYW5ndWlzaDsKK+W5q+a0viA+IGZhY3Rpb247CivooajpnaIgPiBzdXJmYWNlOwor57Of57OVID4gdG9vXC1iYWQ7CivnuL3liYcgPiBwcm9maWxlOwor6Zqq5bO7ID4gYXJkdW91czsKK+WItuacjSA+IHVuaWZvcm07Civlg4/pioAgPiBzaWx2ZXJ5Owor5YmN5o+QID4gcHJlbWlzZTsKK+e3qOWvqyA+IGNvbXBpbGU7Civntq3mjIEgPiB0b1wta2VlcDsKK+aOpeinuCA+IGNvbnRhY3Q7Civli53liKkgPiB2aWN0b3J5Owor5aSl5Ly0ID4gcGFydG5lcjsKK+aVmeWToSA+IHRlYWNoZXI7Civpq5XpqqggPiBrbmVlY2FwOwor5pOB5pyJID4gdG9cLWhhdmU7CivmraTlpJYgPiBiZXNpZGVzOwor5by35Yi2ID4gZW5mb3JjZTsKK+i7iui8myA+IHZlaGljbGU7CivpnI3kuoIgPiBjaG9sZXJhOwor6Iqs6JitID4gZmlubGFuZDsKK+aVuOS9jSA+IGRpZ2l0YWw7CivovJXolJEgPiBkaXNkYWluOwor57Wy5p+PID4gY3lwcmVzczsKK+Wft+eFpyA+IGxpY2Vuc2U7Civmq4Pmqq8gPiBjb3VudGVyOwor54Sh5pWIID4gaW5cLXZhaW47Civlo4Hlo5ggPiByYW1wYXJ0Owor6YCj5o6lID4gdG9cLWxpbms7CivoqIrmga8gPiBtZXNzYWdlOwor57SZ54WZID4gY2lnYXJldDsKK+att+WPsiA+IGhpc3Rvcnk7CivnnLrmnJsgPiBsb29rb3V0Owor6Zec54WnID4gY29uY2VybjsKK+WGsOeJhyA+IGJvcm5lb2w7CivliofloLQgPiB0aGVhdGVyOwor54ax5YiHID4gZmVydmVudDsKK+WLleS6giA+IHR1cm1vaWw7Civmjqnok4sgPiBjb25jZWFsOwor6Zi75pSUID4gdG9cLXN0b3A7CivlvJ/lhYQgPiBicm90aGVyOwor6Zi75pOLID4gdG9cLXN0b3A7CivnnInmr5sgPiBleWVicm93Owor5aOr5YW1ID4gc29sZGllcjsKK+iiq+ikpSA+IGJlZGRpbmc7Civmk7rlrZAgPiBtYWxhcmlhOwor6KGw6YCAID4gZGVjbGluZTsKK+W8leWHuiA+IGV4dHJhY3Q7Civmk5Tlv4MgPiBhbnhpb3VzOwor5YWs56S+ID4gY29tbXVuZTsKK+e1kOaenCA+IG91dGNvbWU7Civmkafmr4AgPiBkZXN0cm95Owor5q2y5YWlID4gcmV2ZW51ZTsKK+WIhuaVoyA+IHNjYXR0ZXI7CivloorlrZAgPiBjdXNoaW9uOwor54Sm5oClID4gYW54aWV0eTsKK+aUtuWIsCA+IHJlY2VpdmU7Civnm6PmuKwgPiBtb25pdG9yOwor6ayi6KeSID4gdGVtcGxlczsKK+aPreekuiA+IHRvXC1zaG93Owor6KaB5rGCID4gcmVxdWVzdDsKK+eXlei3oSA+IHZlc3RpZ2U7CivliZ3lpaogPiBkZXByaXZlOwor6L6y5rCRID4gcGVhc2FudDsKK+W7oOWVhiA+IGNvbXBhbnk7CivliLDlupUgPiBmaW5hbGx5Owor5YaS54WZID4gc21va2luZzsKK+ewoeimgSA+IGNvbmNpc2U7CivmlL7ku7sgPiBpbmR1bGdlOwor6YCa5bi4ID4gcmVndWxhcjsKK+ecn+aRryA+IHNpbmNlcmU7CivntIXmtbcgPiByZWRcLXNlYTsKK+WGsOaysyA+IGdsYWNpYWw7CivntJTmraMgPiBnZW51aW5lOwor5Yio5belID4gcGxhbmluZzsKK+eFmeWbqiA+IGNoaW1uZXk7CivlubvlvbEgPiBwaGFudG9tOwor5ouU6aCCID4gdG9wcGluZzsKK+eZveeZvSA+IGluXC12YWluOwor5YWI55+lID4gcHJvcGhldDsKK+eWvui1sCA+IHNjYW1wZXI7Civlt7Lmu4UgPiBleHRpbmN0Owor57Gg572pID4gZW52ZWxvcDsKK+e1seW4pSA+IGNvbW1hbmQ7CivpmbblmaggPiBwb3R0ZXJ5Owor6ZmE5a+EID4gZW5jbG9zZTsKK+e1qOW4gyA+IGZsYW5uZWw7Civov47mjqUgPiB0b1wtbWVldDsKK+WEmOeuoSA+IGRlc3BpdGU7CivpmLvlsLwgPiBkYW1waW5nOwor55Sc6bueID4gZGVzc2VydDsKK+i7jeiJpiA+IHdhcnNoaXA7Civnmbznj74gPiB0b1wtZmluZDsKK+mWg+eIjSA+IGZsaWNrZXI7CivooaPoo50gPiBnYXJtZW50Owor5YKZ6Ki7ID4gcmVtYXJrczsKK+aUlOS9jyA+IHRvXC1zdG9wOwor6KOC57SLID4gY3JhY2tsZTsKK+aMkei1tyA+IHN0aXJcLXVwOwor6Zeh5piOID4gY2xhcmlmeTsKK+WIsOWgtCA+IHNob3dcLXVwOwor6YGO5YmpID4gc3VycGx1czsKK+i5o+i3miA+IHN0YWdnZXI7Civnm5vmnIMgPiBwYWdlYW50Owor5Ymd5YmKID4gZXhwbG9pdDsKK+aPj+eVqyA+IHRvXC1kcmF3Owor6KOo55uKID4gYmVuZWZpdDsKK+mBh+WIsCA+IHRvXC1tZWV0Owor5YG96K2JID4gcGVyanVyeTsKK+apn+aisCA+IG1hY2hpbmU7Civnhafkuq4gPiBsaWdodGVuOwor6Zmz5YiXID4gZGlzcGxheTsKK+WBnOi7iiA+IHRvXC1zdG9wOwor6Zm95YKYID4gcGFyYXNvbDsKK+WxsemggiA+IGhpbGx0b3A7CivmjoznrqEgPiBjb250cm9sOwor6KOc55uKID4gYmVuZWZpdDsKK+aLt+iynSA+IHRvXC1jb3B5Owor5pOg5YWlID4gaW50cnVkZTsKK+asiuWIqSA+IGFcLXBvd2VyOwor6Iqx55KwID4gZ2FybGFuZDsKK+WFrOawkSA+IGNpdGl6ZW47Civlt7TmnpcgPiBiYWhyYWluOwor5YG96KOdID4gdG9cLWZha2U7CivloIXlvLcgPiBzdGF1bmNoOwor5bmz5Z2HID4gYXZlcmFnZTsKK+WIuuWIgCA+IGJheW9uZXQ7CivnsLjnrpUgPiBkdXN0cGFuOwor5YWF5ru/ID4gZnVsbFwtb2Y7CivluLPluJggPiBkcmFwZXJ5Owor5o6l55SfID4gZGVsaXZlcjsKK+a/gOe0oCA+IGhvcm1vbmU7Civop6PliZYgPiBkaXNzZWN0Owor5oyv6IiIID4gcHJvbW90ZTsKK+mZpOS6hiA+IGJlc2lkZXM7CivnmKfnlr4gPiBtYWxhcmlhOwor6I6K5Zq0ID4gc3RhdGVseTsKK+eyl+a3uiA+IHNoYWxsb3c7Civmo7LouqsgPiBzdGF5XC1hdDsKK+W5s+WPsCA+IHRlcnJhY2U7Civmi43os6MgPiBhdWN0aW9uOwor5ruL6aSKID4gbm91cmlzaDsKK+ino+WDsSA+IHRvXC1maXJlOwor5Yiw5L6GID4gYXJyaXZhbDsKK+mWkuaahyA+IGxlaXN1cmU7CivluorlgbQgPiBiZWRzaWRlOwor5qiZ5qeNID4gamF2ZWxpbjsKK+eWq+iLlyA+IHZhY2NpbmU7CivotoXpvaEgPiB0b29cLW9sZDsKK+WHuuWUriA+IHRvXC1zZWxsOwor5Zug57SgID4gZWxlbWVudDsKK+WGsOW3nSA+IGdsYWNpZXI7Civpl4rluqYgPiBicmVhZHRoOwor6LiQ6LiPID4gdHJhbXBsZTsKK+alree2kyA+IGFscmVhZHk7CivovZ/mk4ogPiBib21iYXJkOwor5bm+5YCLID4gc2V2ZXJhbDsKK+WGsOWztiA+IGljZWxhbmQ7CivmjJHoiIsgPiBwcm92b2tlOwor5ZyW55WrID4gZHJhd2luZzsKK+WGsOWxsSA+IGljZWJlcmc7CivmpbXnq68gPiBleHRyZW1lOwor6L6y5aSrID4gcGVhc2FudDsKK+eZveaZnSA+IGRheXRpbWU7CivlhbXmiIggPiB3ZWFwb25zOwor6Lez6LqNID4gdG9cLWp1bXA7CivnmYLms5UgPiB0aGVyYXB5Owor5bCW6aCCID4gc3RlZXBsZTsKK+iFuemDqCA+IGFiZG9tZW47CivnmbzmlL4gPiBwcm92aWRlOwor55iL54uCID4gbWFkbmVzczsKK+eXsueWuSA+IG1lYXNsZXM7CivopqrliIcgPiBhbWlhYmxlOwor5bel5bugID4gZmFjdG9yeTsKK+aPkuabsiA+IGVwaXNvZGU7CivooYDntbEgPiBsaW5lYWdlOwor5r+h5r+VID4gbW9pc3RlbjsKK+aKl+itsCA+IHByb3Rlc3Q7CivntYblgJIgPiBzdHVtYmxlOwor57OK5byEID4gdG9cLWZvb2w7CivluLbli5UgPiB0b1wtc3B1cjsKK+WFrOW8jyA+IGZvcm11bGE7Civngb3lrrMgPiBzY291cmdlOwor6Iqx5p2fID4gYm91cXVldDsKK+W3suWpmiA+IG1hcnJpZWQ7Civmia3ovYkgPiByZXZlcnNlOwor5oiy6ZmiID4gdGhlYXRlcjsKK+eXkueXkiA+IHRvXC1pdGNoOwor5L6L6aGMID4gZXhhbXBsZTsKK+iMheWxiyA+IGNvdHRhZ2U7CivlhKrmlrwgPiBzdXJwYXNzOwor5qmf5aC0ID4gYWlycG9ydDsKK+e1guS6jiA+IGF0XC1sYXN0Owor5qih5b2iID4gcGF0dGVybjsKK+ifi+ifgCA+IGNyaWNrZXQ7Civkv6Hos7QgPiBjb25maWRlOwor6Iql5pyrID4gbXVzdGFyZDsKK+a/gOeDiCA+IGludGVuc2U7Civnl4Xnl4cgPiBkaXNlYXNlOwor5Ya35Y27ID4gY29vbGluZzsKK+ahjOmdoiA+IGRlc2t0b3A7CivlsaXooYwgPiBmdWxmaWxsOwor55qH5bidID4gZW1wZXJvcjsKK+ihqOeOhyA+IGV4YW1wbGU7Civmj63luZUgPiBvcGVuaW5nOwor56+H56ugID4gd3JpdGluZzsKK+aOpeabvyA+IHJlcGxhY2U7CivmqZ/lmaggPiBtYWNoaW5lOwor55a+55eFID4gZGlzZWFzZTsKK+WCmeeUqCA+IHJlc2VydmU7Civlr6zpl4ogPiBleHBhbnNlOwor5o6q5pa9ID4gbWVhc3VyZTsKK+WFp+WuuSA+IGNvbnRlbnQ7CivmjqHmmpYgPiBoZWF0aW5nOwor55u45Lu/ID4gc2ltaWxhcjsKK+WCsueEtiA+IGxvZnRpbHk7Civlm6DngrogPiBiZWNhdXNlOwor5qi15aSrID4gd29vZG1hbjsKK+iHquengSA+IHNlbGZpc2g7CivlhbjlnosgPiB0eXBpY2FsOwor6Iy25YW3ID4gdGVhXC1zZXQ7CivovKrlu5MgPiBvdXRsaW5lOwor57OK5aGXID4gbXVkZGxlZDsKK+amnOaooyA+IGV4YW1wbGU7CivplonloZ4gPiBzdG9wXC11cDsKK+ihqOa8lCA+IHBlcmZvcm07CivotoXpgY4gPiBzdXJwYXNzOwor56+A55uuID4gcHJvZ3JhbTsKK+mRveefsyA+IGRpYW1vbmQ7CivlnJLmnpcgPiBnYXJkZW5zOwor55Sf6I+cID4gbGV0dHVjZTsKK+Wwj+iyqSA+IHBlZGRsZXI7Civou4zmnpUgPiBzbGVlcGVyOwor55m95aSpID4gZGF5dGltZTsKK+iLseWciyA+IGVuZ2xhbmQ7Civpppbpo74gPiBqZXdlbHJ5Owor5bel5YygID4gYXJ0aXNhbjsKK+ebiOS9mSA+IHN1cnBsdXM7Civkv5jomZwgPiBjYXB0aXZlOwor6IeC56ugID4gYXJtYmFuZDsKK+iHqueUsSA+IGZyZWVkb207CivluIPkuIEgPiBwdWRkaW5nOwor5ZyN5pS7ID4gYmVzaWVnZTsKK+WWnemHhyA+IGFjY2xhaW07CivnlJ/ogrIgPiB0b1wtYmVhcjsKK+i1pOmBkyA+IGVxdWF0b3I7Civpq5jmvLIgPiB1cHN1cmdlOwor6ZaA5Y+jID4gZG9vcndheTsKK+aQjeWCtyA+IHRvXC1oYXJtOwor6Lqr5p2QID4gc3RhdHVyZTsKK+iLseWLhyA+IGJyYXZlcnk7CivkvovorYkgPiBleGFtcGxlOwor5ZWP6aGMID4gcHJvYmxlbTsKK+WvhOmAgSA+IHRvXC1zZW5kOwor5YK+5pacID4gaW5jbGluZTsKK+WbsOaTviA+IHBlcnBsZXg7CivopIflkIggPiBjb21wbGV4Owor5oqE57ayID4gZGlwXC1uZXQ7Civnmb7liIYgPiBwZXJjZW50Owor5Zq05q2jID4gc3Rlcm5seTsKK+iho+acjSA+IGNsb3RoZXM7CivmiJboqLEgPiBwZXJoYXBzOwor5oiQ6KqeID4gcHJvdmVyYjsKK+amruW5uCA+IGhvbm9yZWQ7CivmvILnpKsgPiBib3VsZGVyOwor6aas6LmsID4gc3RpcnJ1cDsKK+aooeWAoyA+IGltaXRhdGU7CivkvovooYwgPiByb3V0aW5lOwor5ZWG6ZqKID4gY2FyYXZhbjsKK+WtuOmZoiA+IGNvbGxlZ2U7Civlg7XlsYAgPiBpbXBhc3NlOwor5o2V5omLID4gY2F0Y2hlcjsKK+aKleelqCA+IHRvXC12b3RlOwor6KGM5p2OID4gbHVnZ2FnZTsKK+aPkOWIsCA+IG1lbnRpb247CivpqZXnn5wgPiBoYXVnaHR5Owor5L+h566xID4gbWFpbGJveDsKK+WvhuirhyA+IGNvbW11bmU7CivnlKjnm6EgPiBleGhhdXN0Owor5qaC5b+1ID4gY29uY2VwdDsKK+WBnOatoiA+IHRvXC1zdG9wOwor5YWD5Lu2ID4gZWxlbWVudDsKK+WcsOWdgCA+IGFkZHJlc3M7CivlnIvlrrYgPiBjb3VudHJ5Owor5a2U6ZuAID4gcGVhY29jazsKK+mNteipniA+IGtleXdvcmQ7Civmu5HnqL0gPiBjb21pY2FsOwor5ZWG6YePID4gY29uc3VsdDsKK+S9juiqvyA+IGxvd1wta2V5Owor5oyJ5pmCID4gb25cLXRpbWU7Civoo53lhaUgPiB0b1wtbG9hZDsKK+aJk+eulyA+IHRvXC1wbGFuOwor5bCP57WQID4gc3VtbWFyeTsKK+Wwj+e1hCA+IGFcLWdyb3VwOwor5oyJ5pGpID4gbWFzc2FnZTsKK+WBiealrSA+IGV4cGxvaXQ7Civos6rph48gPiBxdWFsaXR5Owor56+A5pelID4gaG9saWRheTsKK+ijgeWJqiA+IGN1dFwtb3V0Owor55Si54mpID4gcHJvZHVjdDsKK+S+m+e1piA+IGZ1cm5pc2g7CivoiJ7lvIQgPiB0b1wtd2F2ZTsKK+aJk+eijiA+IHNoYXR0ZXI7Civmi6/mlZEgPiB0b1wtc2F2ZTsKK+WcqOWJjSA+IGZvcndhcmQ7CivmnY7ptawgPiBsaVwtcGVuZzsKK+WuieiorSA+IGluc3RhbGw7Civosqzpm6MgPiBjZW5zdXJlOwor5bO25ba8ID4gaXNsYW5kczsKK+afpeiqvyA+IGlucXVpcnk7Civmi4vmo4QgPiBkaXNjYXJkOwor5L6/55uGID4gYmVkXC1wYW47CivooLHmg5EgPiBlbmNoYW50Owor5YGH5pelID4gaG9saWRheTsKK+WuieijnSA+IGluc3RhbGw7Civmu7LmvI8gPiBzZWVwYWdlOwor6Imm5Y+qID4gd2Fyc2hpcDsKK+aLt+aJkyA+IHRvXC1iZWF0Owor6IGv6YKmID4gZmVkZXJhbDsKK+a8guaziiA+IGRyaWZ0ZXI7CivlmbjmlbggPiB0b25uYWdlOwor5ZWG6KiOID4gZGlzY3VzczsKK+WUruizoyA+IHRvXC1zZWxsOwor6aaZ6I+cID4gcGFyc2xleTsKK+a1t+muriA+IHNlYWZvb2Q7Civoh6XmiL8gPiBiZWRyb29tOwor56ug56+AID4gY2hhcHRlcjsKK+a7tOa1gSA+IHRyaWNrbGU7Civnlo/lv70gPiBuZWdsZWN0Owor5YOl5YCWID4gbHVja2lseTsKK+aHsue9sCA+IHBlbmFsdHk7CivlgrPllq4gPiBsZWFmbGV0Owor6aaZ6IW4ID4gc2F1c2FnZTsKK+i1sOengSA+IHNtdWdnbGU7CivlsIjnlKggPiBzcGVjaWFsOwor6b6N6J2mID4gbG9ic3RlcjsKK+aMh+WumiA+IGFwcG9pbnQ7Civlg5XkurogPiBzZXJ2YW50Owor5a6557SNID4gY29udGFpbjsKK+S+r+eItSA+IG1hcnF1aXM7CivmpLDlrZAgPiBjb2NvbnV0Owor6ZGS5oiSID4gd2FybmluZzsKK+S7o+ipniA+IHByb25vdW47CivkuLnpuqUgPiBkZW5tYXJrOwor57Ch5LuLID4gc3VtbWFyeTsKK+eVq+W7iiA+IGdhbGxlcnk7Civoh6XlrqQgPiBiZWRyb29tOwor5omz5qmfID4gdHJpZ2dlcjsKK+ihneWKmyA+IGltcHVsc2U7Civlroznvo4gPiBwZXJmZWN0Owor5bGV5pybID4gb3V0bG9vazsKK+eriuebnCA+IGJ1cmdsYXI7CivnkaPntLAgPiB0cml2aWFsOwor5oyq5YuVID4gdG9cLW1vdmU7Civlrrbnpr0gPiBwb3VsdHJ5Owor56m657y6ID4gdmFjYW5jeTsKK+acgOmrmCA+IGhpZ2hlc3Q7Civpq5jljp8gPiBwbGF0ZWF1Owor55Wr5a62ID4gcGFpbnRlcjsKK+WxiOabsiA+IGNyb29rZWQ7CivlrbjogIUgPiBzY2hvbGFyOwor55ay5YueID4gZmF0aWd1ZTsKK+a7v+aJiyA+IGhhbmRmdWw7CivkuI3pvZIgPiBkZXNwaXNlOwor5oqV5omLID4gcGl0Y2hlcjsKK+a1t+mCiiA+IHNlYXNpZGU7CivmiormjIEgPiBjb250cm9sOwor5ZmB5b+DID4gdG9cLWhhdGU7CivlsIvmsYIgPiB0b1wtc2VlazsKK+acrOmMoiA+IGNhcGl0YWw7Civohr3lrZAgPiBjb3VyYWdlOwor6ICz6KqeID4gd2hpc3BlcjsKK+WZtOWiqCA+IGlua1wtamV0Owor5LmL6ZaTID4gYmV0d2VlbjsKK+aciemZkCA+IGxpbWl0ZWQ7CivmiZjmnrYgPiBicmFja2V0Owor5ZOB6LOqID4gcXVhbGl0eTsKK+acrOmHkSA+IGNhcGl0YWw7CivpjKbnt54gPiBicm9jYWRlOwor6bq76ZuAID4gc3BhcnJvdzsKK+aJtuaMgSA+IHRvXC1oZWxwOwor6JmU6KqgID4gc2luY2VyZTsKK+S/neaMgSA+IHRvXC1rZWVwOwor5om25omLID4gcmFpbGluZzsKK+acgOmVtyA+IGxvbmdlc3Q7CivmibPmiYsgPiBzcGFubmVyOwor5L6/5pa8ID4gZWFzeVwtdG87CivmtbfosZogPiBkb2xwaGluOwor5oSb6K23ID4gY2hlcmlzaDsKK+evgOWEiSA+IHRocmlmdHk7CivnpZ7pq5QgPiBnb2RoZWFkOwor5omT5pO+ID4gZGlzdHVyYjsKK+S4remWkyA+IGJldHdpeHQ7CivkvobmrbcgPiBoaXN0b3J5Owor5oSf6Ka6ID4gdG9cLWZlZWw7Civnr4TkvosgPiBleGFtcGxlOwor5a2k56uLID4gaXNvbGF0ZTsKK+eVtuWJjSA+IGN1cnJlbnQ7CivlsaTlrZAgPiBzdHJhdHVtOwor5pys6LOqID4gZXNzZW5jZTsKK+eUqOWtlyA+IGRpY3Rpb247Civoga/ntrIgPiBuZXR3b3JrOwor5r2b5LyPID4gdG9cLWhpZGU7Civoga/ntZAgPiB0b1wtYmluZDsKK+euoeWItiA+IGNvbnRyb2w7Civkv4PmiJAgPiBwcm9jdXJlOwor5bCK5pWsID4gcmVzcGVjdDsKK+WuieeTvyA+IGFtcG91bGU7Civoh7PkuIogPiBzdXByZW1lOwor5LiA6aCFID4gYW5cLWl0ZW07CivmioTlr6sgPiB0b1wtY29weTsKK+i0heeYpCA+IHVzZWxlc3M7CivmuIXnnJ8gPiBpc2xhbWljOwor55Wr5YWSID4gcGljdHVyZTsKK+WWnOatoSA+IHRvXC1saWtlOwor5LuU57SwID4gY2FyZWZ1bDsKK+WxoOWkqyA+IGJ1dGNoZXI7CivkuIrploAgPiBkcm9wXC1pbjsKK+WtuOeUnyA+IHN0dWRlbnQ7CivnjY7ph5EgPiBwcmVtaXVtOwor5Lq6576kID4gYVwtY3Jvd2Q7Civnlbbku4ogPiBjdXJyZW50Owor5YGH5L2/ID4gc3VwcG9zZTsKK+abtOmBoCA+IGZhcnRoZXI7CivlsIvmib4gPiB0b1wtc2VlazsKK+S9teainSA+IGRyYXdpbmc7CivkuZ/oqLEgPiBwZXJoYXBzOwor6ama5ZqHID4gaG9ycmlmeTsKK+aJs+WtkCA+IHNwYW5uZXI7Civmir3lh7ogPiBleHRyYWN0Owor5bC35bCsID4gYXdrd2FyZDsKK+S4jemMryA+IGNvcnJlY3Q7CivmoLjmn6UgPiBleGFtaW5lOwor5LiZ6YWuID4gYWNldG9uZTsKK+aJjeW5siA+IGFiaWxpdHk7CivpppnmsLQgPiBwZXJmdW1lOwor6aaZ5rCjID4gaW5jZW5zZTsKK+Wwj+W/gyA+IGNhcmVmdWw7CivmiJDmlocgPiB3cml0dGVuOwor5ZCQ6ZyyID4gdG9cLXRlbGw7CivotpXlv6sgPiBhdFwtb25jZTsKK+acg+itsCA+IG1lZXRpbmc7Civpo5voiLkgPiBhaXJzaGlwOwor5pu86LC3ID4gYmFuZ2tvazsKK+WRiOmAgSA+IHByZXNlbnQ7CivkuLvoqZ4gPiBzdWJqZWN0Owor5rKJ6buYID4gc2lsZW5jZTsKK+aJk+WtlyA+IHRvXC10eXBlOwor5rKI6buYID4gc2lsZW5jZTsKK+i3s+WLlSA+IHRvXC1iZWF0Owor5rWB6KGMID4gcG9wdWxhcjsKK+S9lOaciSA+IHRvXC1oYXZlOwor5a605pyDID4gYmFucXVldDsKK+iDjOajhCA+IGFiYW5kb247CivpoJjpmoogPiBjYXB0YWluOwor5pyI6J2VID4gZWNsaXBzZTsKK+aJv+WPlyA+IHRvXC1iZWFyOwor5YCJ5L+DID4gaHVycmllZDsKK+aKk+WCtyA+IHNjcmF0Y2g7CivkuI3os7QgPiBub3RcLWJhZDsKK+iCpeaygyA+IGZlcnRpbGU7CivmhI/nvqkgPiBtZWFuaW5nOwor5Y+s6ZuGID4gY29udmVuZTsKK+elnui3oSA+IG1pcmFjbGU7Civkvb/lvpIgPiBhcG9zdGxlOwor5riF5rSXID4gdG9cLXdhc2g7CivlkYroqLQgPiB0b1wtdGVsbDsKK+iEueWkpyA+IHN3b2xsZW47CivllpzmhJsgPiB0b1wtbGlrZTsKK+WvtuWvtiA+IGRhcmxpbmc7CivnrYnlgJkgPiB3YWl0aW5nOwor6LeM5YiwID4gdG9cLWZhbGw7Civmh7rmgpQgPiBjb25mZXNzOwor5oi25aSWID4gb3V0ZG9vcjsKK+WvrOWuuSA+IGxlbmllbnQ7Civog73lubkgPiBjYXBhYmxlOwor5LiN6KaLID4gbm90XC1zZWU7CivkvY/miL8gPiBob3VzaW5nOwor6ICV56iuID4gdG9cLXRpbGw7CivmiLDlo6sgPiBmaWdodGVyOwor57+h57+gID4gZW1lcmFsZDsKK+WwiuWatCA+IGRpZ25pdHk7Civlr4bluqYgPiBkZW5zaXR5Owor5bCW5Y+rID4gc2NyZWVjaDsKK+S8gealrSA+IGNvbXBhbnk7CivlronmkqsgPiBwbGFjYXRlOwor6aCC6YedID4gdGhpbWJsZTsKK+aguOWtkCA+IG51Y2xlYXI7CivkvJHmnIMgPiBhZGpvdXJuOwor6LKi54mpID4gdHJpYnV0ZTsKK+a3mOaysyA+IHBlbGljYW47Civpo5vnm6QgPiBmcmlzYmVlOwor5reY5rCjID4gbmF1Z2h0eTsKK+mojuWFtSA+IGNhdmFscnk7Civmh4rmg7EgPiBhbm5veWVkOwor56ys5LiDID4gc2V2ZW50aDsKK+aJk+WAkiA+IGZsYXR0ZW47Civkv4Pkvb8gPiBzcHVyXC1vbjsKK+miqOeusSA+IGJlbGxvd3M7CivmtbTnm4YgPiBiYXRodHViOwor576k6IqxID4gYmxvc3NvbTsKK+aJmOS7mCA+IGVudHJ1c3Q7CivmoL3ln7kgPiB0b1wtZ3JvdzsKK+enkeebriA+IHN1YmplY3Q7CivppqzlrZAgPiBjb21tb2RlOwor6LaK5Y2XID4gdmlldG5hbTsKK+WuieaFsCA+IGNvbWZvcnQ7CivnqbrmiLAgPiBhaXJcLXdhcjsKK+aIkOWciCA+IHdyZWF0aGU7Civmh4nlvpcgPiBkZXNlcnZlOwor5oiw5YudID4gcHJldmFpbDsKK+S4jeiLnyA+IG5vdFwtbGF4Owor5L2P5a6/ID4gbG9kZ2luZzsKK+i0iuaIkCA+IGFwcHJvdmU7CivororpgbcgPiBjaGFuZ2VzOwor5pyq55+lID4gdW5rbm93bjsKK+aDhee3kiA+IGZlZWxpbmc7CivlsIHlhaUgPiBpbmNsb3NlOwor6YeO6LKTID4gd2lsZGNhdDsKK+S7o+abvyA+IGluc3RlYWQ7CivmoYjljbcgPiByZWNvcmRzOwor5oKj6ICFID4gcGF0aWVudDsKK+S+huWIsCA+IHRvXC1jb21lOwor5Luj5pW4ID4gYWxnZWJyYTsKK+acqOeTpiA+IHNoaW5nbGU7CivmiJDlip8gPiBzdWNjZXNzOwor5Lit56uLID4gbmV1dHJhbDsKK+ePvuaZgiA+IGN1cnJlbnQ7CivkuJbntIAgPiBjZW50dXJ5Owor5L2O5ZywID4gbG93bGFuZDsKK+a1t+a+oSA+IHNlYXdlZWQ7CivlkKvnvqkgPiBtZWFuaW5nOwor5LuK5pmaID4gdG9uaWdodDsKK+mHkeiejSA+IGJhbmtpbmc7Civlk4DmsYIgPiBlbnRyZWF0Owor5rSX56auID4gYmFwdGlzbTsKK+WtuOWutiA+IHNjaG9sYXI7CivlppPpmaIgPiBicm90aGVsOwor5LiN562JID4gdG9cLXZhcnk7Civpoa/npLogPiB0b1wtc2hvdzsKK+WNmumbhSA+IGxlYXJuZWQ7CivpnZLprZogPiBoZXJyaW5nOwor6aas5YW3ID4gaGFybmVzczsKK+WQjee+qSA+IHRpdHVsYXI7CivkuI3npaUgPiBvbWlub3VzOwor5raI5qW1ID4gcGFzc2l2ZTsKK+awtOmKgCA+IG1lcmN1cnk7CivmmojoiLkgPiBzZWFzaWNrOwor6IG35belID4gd29ya2VyczsKK+aXpemWkyA+IGRheXRpbWU7CivlrZ/lrZAgPiBtZW5jaXVzOwor56We56WWID4gZ29kaGVhZDsKK+abieekuiA+IHRvXC10ZWxsOwor6JK46aS+ID4gZGlzdGlsbDsKK+WujOWWhCA+IHBlcmZlY3Q7CivmgrLnl5sgPiBncmlldmVkOwor5a6Y5Y+4ID4gbGF3c3VpdDsKK+mdnumboyA+IHJlcHJvb2Y7CivmsLjpgaAgPiBmb3JldmVyOwor6YWs6LyJID4gcGF5bG9hZDsKK+iBveWvqyA+IGRpY3RhdGU7Civlp5ToqJcgPiBlbnRydXN0Owor6Jmn5pCNID4gZGVmaWNpdDsKK+m6u+eFqSA+IHRyb3VibGU7CivppqzkuIogPiBhdFwtb25jZTsKK+aZr+iJsiA+IHNjZW5lcnk7CivnpYjnprEgPiB0b1wtcHJheTsKK+W/veimliA+IG5lZ2xlY3Q7CivorY/oqpogPiBjeW5pY2FsOwor56K66KqNID4gY29uZmlybTsKK+eOi+asiiA+IHJveWFsdHk7CivmlrnpnaIgPiByZXNwZWN0Owor5Y+k6ICBID4gYW5jaWVudDsKK+S8geWcliA+IGF0dGVtcHQ7CivpoYznm64gPiBzdWJqZWN0Owor5rGh6KGKID4gc2xhbmRlcjsKK+e+heebpCA+IGNvbXBhc3M7Civnj77lr6YgPiByZWFsaXR5Owor6LOq5ZywID4gdGV4dHVyZTsKK+S5vuaXsSA+IGRyb3VnaHQ7Civnj43mhJsgPiBjaGVyaXNoOwor6LSK5YqpID4gc3BvbnNvcjsKK+W/oOiqoCA+IGRldm90ZWQ7CivmlpHpp64gPiBtb3R0bGVkOwor6YSt6YeNID4gc2VyaW91czsKK+WNh+mBtyA+IHByb21vdGU7CivljYrpgJQgPiBoYWxmd2F5Owor5Y+N6ICMID4gaW5zdGVhZDsKK+Wlvei9iSA+IGltcHJvdmU7CivnjovmnJ0gPiBkeW5hc3R5Owor5oOh5qONID4gdmlsbGFpbjsKK+WNiui3ryA+IGhhbGZ3YXk7CivmlbTpq5QgPiBvdmVyYWxsOwor57695q+bID4gZmVhdGhlcjsKK+aEn+aDhSA+IGZlZWxpbmc7CivpvLvlrZQgPiBub3N0cmlsOwor5ZOA5oCdID4gcGVuc2l2ZTsKK+S7u+WLmSA+IG1pc3Npb247CivmhJvmg5wgPiBjaGVyaXNoOwor54yW542XID4gcmFtcGFudDsKK+aenOWckiA+IG9yY2hhcmQ7Civml4HpgoogPiBsYXRlcmFsOwor6aKo5pmvID4gc2NlbmVyeTsKK+m0lemzpSA+IG9zdHJpY2g7CivphpzogZ4gPiBzY2FuZGFsOwor6aO95a24ID4gbGVhcm5lZDsKK+aumOmquCA+IHJlbWFpbnM7Civmlofpm4UgPiBlbGVnYW50Owor6aOb5b2IID4gbWlzc2lsZTsKK+iBveWKmyA+IGhlYXJpbmc7Civku7/lgpogPiB0b1wtY29weTsKK+aXpeiqjCA+IGpvdXJuYWw7CivlpJbpnaIgPiBvdXRzaWRlOwor6aCR55quID4gbmF1Z2h0eTsKK+aatOeDiCA+IHZpb2xlbnQ7Civpm4Tpu4MgPiByZWFsZ2FyOwor5pyD5pyfID4gc2Vzc2lvbjsKK+S4jeazlSA+IGxhd2xlc3M7CivlkajmnKsgPiB3ZWVrZW5kOwor5reh5YWJID4gc2hpbW1lcjsKK+mhnuavlCA+IGFuYWxvZ3k7Civoq7roqp4gPiBwcm92ZXJiOwor5aSn6YyvID4gYmx1bmRlcjsKK+iAgeW5tCA+IGVsZGVybHk7CivkuJ/mo4QgPiBkaXNjYXJkOwor6ICB5birID4gdGVhY2hlcjsKK+iuiuehrCA+IHN0aWZmZW47CivmtbflsrggPiBjb2FzdGFsOwor5pel6J2VID4gZWNsaXBzZTsKK+ekpueJqSA+IG1pbmVyYWw7CivosbnlrZAgPiBsZW9wYXJkOwor5aWH6LmfID4gbWlyYWNsZTsKK+avlOi8gyA+IGNvbXBhcmU7CivlpYfot6EgPiBtaXJhY2xlOwor5Lul5L6/ID4gc29cLXRoYXQ7CivokZfpmbggPiBsYW5kaW5nOwor5by16ZaLID4gc3RyZXRjaDsKK+Wkp+mDvSA+IGdlbmVyYWw7Civlpb3omZUgPiBiZW5lZml0Owor56eR5a24ID4gc2NpZW5jZTsKK+aEm+WlvSA+IHRvXC1saWtlOwor5ray5YyWID4gbGlxdWlmeTsKK+mEmeimliA+IGRlc3Bpc2U7Civmm7Tmj5sgPiByZXBsYWNlOwor5pa56KiAID4gZGlhbGVjdDsKK+WPpOeJqSA+IGFudGlxdWU7Civml6XokL0gPiBzdW5kb3duOwor56We5qC8ID4gZ29kaGVhZDsKK+acrOWxhiA+IGN1cnJlbnQ7Civpg7XosrsgPiBwb3N0YWdlOwor5puW5pinID4gaWxsaWNpdDsKK+WmguiKsSA+IGZsb3dlcnk7Civpnq3nrZYgPiBzcHVyXC1vbjsKK+aDheaEnyA+IGZlZWxpbmc7CivkuLnlv4MgPiBsb3lhbHR5Owor6ZuE6ZueID4gcm9vc3RlcjsKK+ayv+a1tyA+IGNvYXN0YWw7CivmlL7plosgPiB1bmxlYXNoOwor57mq6KO9ID4gdG9cLWRyYXc7CivkuK3mgKcgPiBuZXV0cmFsOwor6YSZ6JaEID4gZGVzcGlzZTsKK+iqueislyA+IHNsYW5kZXI7CivmgKrniakgPiBtb25zdGVyOwor5b6p6IiIID4gcmVzdG9yZTsKK+a2ieWPiiA+IGludm9sdmU7CivnvqjmhZUgPiBlbnZpb3VzOwor5YyF6KO5ID4gd3JhcFwtdXA7CivokZfov7AgPiB3cml0aW5nOwor5aSW6LKMID4gcHJvZmlsZTsKK+mkheS5viA+IGJpc2N1aXQ7CivmnInlrrMgPiBoYXJtZnVsOwor6YWS57K+ID4gYWxjb2hvbDsKK+ekvuacgyA+IHNvY2lldHk7Civnvp7mhKcgPiBhc2hhbWVkOwor5Li75bCOID4gdG9cLWxlYWQ7CivmmrTmlL8gPiB0eXJhbm55Owor5oSf5YiwID4gdG9cLWZlZWw7CivnjovlnIsgPiBraW5nZG9tOwor5piT56KOID4gYnJpdHRsZTsKK+mHmOatuyA+IGNydWNpZnk7Civpoaflv4wgPiBzY3J1cGxlOwor5oSI5ZCIID4gdG9cLWhlYWw7Civlk4DlgrcgPiBncmlldmVkOwor5pW46KmeID4gbnVtZXJhbDsKK+ips+i/sCA+IHJlY291bnQ7CivlianppJggPiBzdXJwbHVzOwor6aGY5oSPID4gdG9cLXdpc2g7CivljIXol48gPiBjb250YWluOwor546p5YWSID4gdG9cLXBsYXk7CivkuK3lrZAgPiBuZXV0cm9uOwor6YeR5qmYID4ga3VtcXVhdDsKK+mcgOimgSA+IHRvXC1uZWVkOwor5oKU5oGoID4gcmVtb3JzZTsKK+WQq+aEjyA+IG1lYW5pbmc7CivmnIDlpKcgPiBiaWdnZXN0Owor5pyA5aSaID4gYXRcLW1vc3Q7Civmm4nlvpcgPiB0b1wta25vdzsKK+iAleS9nCA+IGZhcm1pbmc7CivmgKXmtYEgPiB0b3JyZW50Owor57235omLID4gZ2l2ZVwtdXA7CivogIHlhbUgPiB2ZXRlcmFuOwor6ICB5YWsID4gaHVzYmFuZDsKK+Wjk+i/qyA+IG9wcHJlc3M7CivnjJzmg7MgPiBzdXBwb3NlOwor5Lit5aSuID4gY2VudHJhbDsKK+maiumVtyA+IGNhcHRhaW47CivnoLLoh7ogPiBiYXR0ZXJ5Owor5LmP5ZGzID4gdGVkaW91czsKK/ChnLEgPiB0b1wtZW52eTsKK+aTr+mZpCA+IGRpc2NhcmQ7Civnt6jpgKAgPiBjb21waWxlOwor5LiK5bCHID4gZ2VuZXJhbDsKK+WRvOWQuCA+IGJyZWF0aGU7Civwopi4ID4gdG9cLWhhdGU7CivnjJzluqYgPiBzdXJtaXNlOwor5ZG75ZCfID4gdG9cLW1vYW47CivniannkIYgPiBwaHlzaWNzOwor6YG06YG4ID4gdG9cLXBpY2s7CivniK3nq68gPiBkaXNwdXRlOwor5aWz56WeID4gZ29kZGVzczsKK+aDs+WDjyA+IGltYWdpbmU7CivlvJXoqIAgPiBmb3J3YXJkOwor5ZCM5b+XID4gY29tcmFkZTsKK+WMhee+hSA+IGluY2x1ZGU7CivkuI3lpb0gPiBub1wtZ29vZDsKK+iujOacgyA+IGJhbnF1ZXQ7Civml4XnqIsgPiBqb3VybmV5Owor5pys5LqLID4gYWJpbGl0eTsKK+mHi+aUviA+IHJlbGVhc2U7CivmspLmnIkgPiBoYXZlbicndDsKK+WNl+eTnCA+IHB1bXBraW47CivorormmpYgPiB3YXJtaW5nOwor5rCj55CDID4gYmFsbG9vbjsKK+eLguaatCA+IGZyYW50aWM7CivkuIjlpKsgPiBodXNiYW5kOwor56We5aWzID4gZ29kZGVzczsKK+WQiuW6iiA+IGhhbW1vY2s7Civlj4rmmYIgPiBpblwtdGltZTsKK+WmlueJqSA+IG1vbnN0ZXI7Civpg6jnvbIgPiBkaXNwb3NlOwor5Lmf5LiNID4gbmVpdGhlcjsKK+WPr+aGkCA+IHBpdGlmdWw7CivlpbPnmocgPiBlbXByZXNzOwor5aKe6YCyID4gcHJvbW90ZTsKK+mBmemBoCA+IGRpc3RhbnQ7CivpgZnpgZkgPiBkaXN0YW50Owor6KmV6KuWID4gY29tbWVudDsKK+S4gOWkqSA+IG9uZVwtZGF5Owor5Y+v5oSbID4gYW1pYWJsZTsKK+aUueijnSA+IHJlbW9kZWw7Civnib3mtokgPiBpbnZvbHZlOwor6Zi/6aObID4gaG9vZGx1bTsKK+WPr+aBqCA+IGhhdGVmdWw7CivmgrLlk4AgPiBncmlldmVkOwor6aGn5ZWPID4gYWR2aXNlcjsKK+Wkqee3miA+IGFudGVubmE7Civli7PnuL4gPiBleHBsb2l0Owor5rOV5a6YID4gYVwtanVkZ2U7Civnvo7lnIsgPiBhbWVyaWNhOwor5pyA5L2zID4gb3B0aW11bTsKK+W5vemdiCA+IHNwZWN0ZXI7CivpgYvovYkgPiB0b1wtd29yazsKK+mbt+iBsiA+IHRodW5kZXI7CivpgYvovLggPiB0cmFuc2l0Owor54m55q6KID4gc3BlY2lhbDsKK+aCsuWKhyA+IHRyYWdlZHk7Civnn7Poho8gPiBwbGFzdGVyOwor5pu45L+hID4gZXBpc3RsZTsKK+W6pumHjyA+IG1lYXN1cmU7CivntpPpircgPiB0b1wtc2VsbDsKK+WKjeihkyA+IGZlbmNpbmc7Civlj5vlvpIgPiB0cmFpdG9yOwor6Ki76KejID4gY29tbWVudDsKK+e2sui3ryA+IG5ldHdvcms7CivkuIrljYggPiBtb3JuaW5nOwor57eS6KiAID4gcHJlZmFjZTsKK+iotOionyA+IGxhd3N1aXQ7CivoqofogIAgPiBwcm91ZGx5Owor5paH56ugID4gYXJ0aWNsZTsKK+e8uuW4rSA+IGFic2VuY2U7CivkuIDlj6MgPiByZWFkaWx5Owor5ZCu5ZC4ID4gdG9cLXN1Y2s7CivkuIPljYEgPiBzZXZlbnR5Owor54uC5oCSID4gZnVyaW91czsKK+aWsOeUnyA+IG5ld2Jvcm47CivpmrHol48gPiB0b1wtaGlkZTsKK+e2k+mBjiA+IHRvXC1wYXNzOwor5LiN5YaNID4gbm9cLW1vcmU7CivpmrHolL0gPiBjb25jZWFsOwor5LiW5L+XID4gcHJvZmFuZTsKK+aAneaDsyA+IHRob3VnaHQ7CivlubTpkZEgPiBhbG1hbmFjOwor5pS56ImvID4gaW1wcm92ZTsKK+aApeW/mSA+IGhhc3RpbHk7CivnuarnlasgPiBkcmF3aW5nOwor5q+U55WrID4gZ2VzdHVyZTsKK+eHiOexoCA+IGxhbnRlcm47Civnt6jokZcgPiBjb21waWxlOwor6K2m5oiSID4gdG9cLXdhcm47Civntq3orbcgPiBkZWZlbnNlOwor6YeP5a2QID4gcXVhbnR1bTsKK+eMv+S6uiA+IGFwZVwtbWFuOwor5Y+r5aW9ID4gYXBwbGF1ZDsKK+mhnuS8vCA+IHNpbWlsYXI7CivpgJDpgIAgPiByZXB1bHNlOwor56Kw5pKeID4gY29sbGlkZTsKK+azqOWFpSA+IHBvdXJcLWluOwor6aCC5aSaID4gYXRcLW1vc3Q7CivliY3oqIAgPiBwcmVmYWNlOwor6Z2e5rOVID4gaWxsZWdhbDsKK+awtOaZtiA+IGNyeXN0YWw7CivmraPnvqkgPiBqdXN0aWNlOwor5pma5a60ID4gYmFucXVldDsKK+WQkeWJjSA+IGZvcndhcmQ7Civovq/pp4EgPiBkaXNwdXRlOwor5b6e5q2kID4gdGhlbmNlOwor6bOl5769ID4gcGluaW9uOwor5aCx6YWsID4gcmV3YXJkOwor57eo6ICFID4gZWRpdG9yOwor6Kqk55SoID4gbWlzdXNlOwor5aSW55SlID4gbmVwaGV3Owor6YeN5ZueID4gcmV0dXJuOwor5by355ucID4gYmFuZGl0Owor6Kmp56+HID4gcHNhbG1zOwor5pa55rOVID4gbWV0aG9kOwor5pS/562WID4gcG9saWN5Owor6YCD6LWwID4gZXNjYXBlOwor6K2m5a+fID4gcG9saWNlOwor5rOV5LukID4gZGVjcmVlOwor5Y2x5oe8ID4gYWZyYWlkOwor572q5Lq6ID4gc2lubmVyOwor5aSn54KuID4gY2Fubm9uOwor5aSn54G9ID4gcGxhZ3VlOwor5YuD55m8ID4gdGhyaXZlOwor5ZCJ5LuWID4gZ3VpdGFyOwor5YyF5ra1ID4gZXhjdXNlOwor5q+A5ruFID4gcGVyaXNoOwor5bi26YemID4gYnVja2xlOwor56K65a+mID4gaW5kZWVkOwor5YuV54mpID4gYW5pbWFsOwor57eK57iuID4gcmVkdWNlOwor54eS54SmID4gc2NvcmNoOwor6aCY5LqLID4gY29uc3VsOwor5aSn5rWqID4gYmlsbG93Owor552h6JGXID4gYXNsZWVwOwor6K6K5YyWID4gY2hhbmdlOwor5rCj5oGvID4gYnJlYXRoOwor5pOx572uID4gc2hlbHZlOwor6K6K5YuVID4gY2hhbmdlOwor5pW05r2UID4gbmVhdGx5Owor5peo5oSPID4gZGVjcmVlOwor5byK55eFID4gbWFsYWR5Owor6YG456WoID4gYVwtdm90ZTsKK+WJveeriiA+IHBpcmF0ZTsKK+e3qOeivCA+IGNvZGluZzsKK+mEieadkSA+IHJ1c3RpYzsKK+W3qOmgrSA+IHR5Y29vbjsKK+mgguS6iyA+IHVzZWZ1bDsKK+aSleijgiA+IG1hbmdsZTsKK+mZhOiRlyA+IGFkaGVyZTsKK+ato+eVtiA+IHRpbWVseTsKK+aAkuWQvCA+IGJlbGxvdzsKK+Wlh+aZryA+IG1hcnZlbDsKK+eJiOW8jyA+IGZvcm1hdDsKK+mBoOeoiyA+IHJlbW90ZTsKK+e4rua4myA+IHRvXC1jdXQ7CivljYrlvpEgPiByYWRpdXM7Civno6jlhYkgPiBwb2xpc2g7Civprq3prZogPiBzYWxtb247CivpmY3oh6ggPiBiZWZhbGw7CivoqrLmpa0gPiBsZXNzb247CivphpzljJYgPiBkZWZhbWU7Civop5LokL0gPiBjb3JuZXI7Civni4LkurogPiBtYWRtYW47CivmmYLliLsgPiBtb21lbnQ7CivlpKfmobYgPiBiYXJyZWw7CivnnIvoposgPiB0b1wtc2VlOwor57ej55SxID4gcmVhc29uOwor6Kej6ISrID4gcmVsaWVmOwor56C05pWXID4gYmVhdGVuOwor5peX5bmfID4gZW5zaWduOwor5rC05aO6ID4ga2V0dGxlOwor5q6W5rCRID4gY29sb255Owor5peL5b6LID4gbWVsb2R5Owor6YO15pS/ID4gcG9zdGFsOwor6Z225a2QID4gdGFyZ2V0Owor5b6M5oKUID4gcmVncmV0Owor5YuV5qmfID4gbW90aXZlOwor5Y6t5YCmID4gZHJlYXJ5Owor5b6Q5b6QID4gc2xvd2x5Owor5YWn6Zm4ID4gaW5sYW5kOwor5bel6YyiID4gc2FsYXJ5Owor5YWs6ZaLID4gcHVibGljOwor5Y6f5YWIID4gZm9ybWVyOwor5YWr6ZaLID4gb2N0YXZvOwor54aK54aKID4gcmFnaW5nOwor6L6v6KuWID4gZGViYXRlOwor55+t5q2MID4gYmFsbGFkOwor5Y2a5aOrID4gZG9jdG9yOwor5aW25a2QID4gYnJlYXN0Owor5b+g5ZGKID4gYWR2aWNlOwor56Cy5omLID4gZ3VubmVyOwor5aSa5pifID4gc3RhcnJ5Owor5b6L5birID4gbGF3eWVyOwor5b6u5aaZID4gc3VidGxlOwor5aW95aW9ID4gbmljZWx5Owor57i95pivID4gYWx3YXlzOwor6ZaL6Y6WID4gdW5sb2NrOwor5q2l5risID4gcGFjaW5nOwor54ef5pWRID4gcmVzY3VlOwor5pWs5pyNID4gYWRtaXJlOwor6YWs5YueID4gcmV3YXJkOwor5b6X5a6cID4gcHJvcGVyOwor5Yid57SaID4ganVuaW9yOwor6LyV6ayGID4gZ2VudGxlOwor54iQ5bqKID4gaGVhcnRoOwor6KyK5aCxID4gdG9cLWxpZTsKK+eiuuS/nSA+IGVuc3VyZTsKK+mBi+eUqCA+IHRvXC11c2U7CivlpKnmiY0gPiB0YWxlbnQ7CivntbLntaggPiB2ZWx2ZXQ7CivpgZPnkIYgPiByZWFzb247CivmlKrmt7cgPiB0b1wtbWl4Owor5aO95p2QID4gY29mZmluOwor6Kej562UID4gYW5zd2VyOwor54mI5ZyWID4gZG9tYWluOwor5pS/5qyKID4gcmVnaW1lOwor5b6I5bCRID4gc2VsZG9tOwor54i15aOrID4ga25pZ2h0Owor6KWv6KOhID4gbGluaW5nOwor6KyZ5ZKMID4gbWVla2x5Owor57ay55CDID4gdGVubmlzOwor6I2S6JWqID4gYmFycmVuOwor5YyF5bqHID4gc2hpZWxkOwor5YiG57WmID4gZGl2aWRlOwor5aSp5oCnID4gaW5ib3JuOwor5q2Q5rSyID4gZXVyb3BlOwor5Yu+5byVID4gc2VkdWNlOwor55m96YqAID4gc2lsdmVyOwor54ax5pybID4gYXNwaXJlOwor57K+6YG4ID4gY2hvc2VuOwor5pWI5p6cID4gcmVzdWx0Owor6KqY5ouQID4gYWJkdWN0Owor6Kqg5oeHID4gaGVhcnR5Owor6YCa55+lID4gbm90aWZ5Owor5Yi655ebID4gdGluZ2xlOwor5b615Y+sID4gZW5saXN0Owor5q2h5qiCID4gZ2FpZXR5Owor57Sr6ImyID4gcHVycGxlOwor6KOh6Z2iID4gaW5zaWRlOwor5YWI6YuSID4gaGVyYWxkOwor5bmz56mpID4gc21vb3RoOwor5pW15oSPID4gZW5taXR5Owor5be06KW/ID4gYnJhemlsOwor54mp5Lu2ID4gb2JqZWN0Owor5Y245LiLID4gdW5sb2FkOwor5YyF5a65ID4gcGFyZG9uOwor6KqY5oORID4gZW50aWNlOwor54mn5Lq6ID4gcGFzdG9yOwor5aKe5re7ID4gYWRkXC10bzsKK+WkluW9oiA+IGZpZ3VyZTsKK+mbhuacgyA+IGdhdGhlcjsKK+maqOapnyA+IHJhbmRvbTsKK+WFteiuiiA+IG11dGlueTsKK+aVj+aNtyA+IG5pbWJsZTsKK+eJm+S7lCA+IGNvd2JveTsKK+aPkOmGkiA+IHJlbWluZDsKK+inuOeKryA+IG9mZmVuZDsKK+WlquWPliA+IHNuYXRjaDsKK+Wkq+WtkCA+IHBlZGFudDsKK+WkquWtkCA+IHByaW5jZTsKK+aOoembhiA+IGdhdGhlcjsKK+ecn+epuiA+IHZhY3VcOm07CivmrrrlrrMgPiBtdXJkZXI7Civmrpjlv40gPiBibG9vZHk7CivplpLoqbEgPiBnb3NzaXA7CivnnLznmq4gPiBleWVsaWQ7CivntLDnt5ogPiBzdHJpbmc7Civovq3ogbcgPiByZXNpZ247CivphJnlkJ0gPiB2dWxnYXI7Civnt5rmop0gPiBzdHJlYWs7CivptL/lrZAgPiBwaWdlb247CivlvpLli54gPiBmdXRpbGU7CivlvpfliLAgPiB0b1wtZ2V0Owor6L2J6K6KID4gY2hhbmdlOwor57Sw57KJID4gcG93ZGVyOwor6Kqg5a+mID4gaG9uZXN0Owor5biM6IeYID4gZ3JlZWNlOwor6Zuj5b6XID4gc2VsZG9tOwor5aSn5aSrID4gZG9jdG9yOwor5pW45a2XID4gbnVtYmVyOwor5r+66ZaLID4gc3BsYXNoOwor5pS75omTID4gYXR0YWNrOwor6YGK5q23ID4gdHJhdmVsOwor5Ymb5q2jID4gaG9uZXN0Owor5b6p5LuHID4gYXZlbmdlOwor6ZqO5qKvID4gbGFkZGVyOwor5aOT5omBID4gc3F1YXNoOwor6Kmp5oSPID4gcG9ldGljOwor57ej5pWFID4gcmVhc29uOwor5pSd5pS/ID4gcmVnZW50Owor5b6e5L6GID4gYWx3YXlzOwor5qiZ6KqeID4gc2xvZ2FuOwor57iu5bCPID4gcmVkdWNlOwor55m86KqTID4gdG9cLXZvdzsKK+apoeiGoCA+IHJ1YmJlcjsKK+WcsOmQtSA+IHN1YndheTsKK+mbjOaApyA+IGZlbWFsZTsKK+WNgeS4gCA+IGVsZXZlbjsKK+W+nuS6iyA+IGdvXC1mb3I7CivnhrHluLYgPiB0cm9waWM7Civpm5zlt6UgPiBwb3J0ZXI7Civlh7rnlKIgPiBvdXRwdXQ7CivlpaLkvoggPiBsdXh1cnk7Civokpnlj5cgPiBzdWZmZXI7CivmjpvpiaQgPiBjb3VwbGU7CivntJTnsrkgPiBwdXJlbHk7CivlpI/lpKkgPiBzdW1tZXI7CivphJnkv5ogPiB2dWxnYXI7CivphJnkv5cgPiB2dWxnYXI7CivpnLLlh7ogPiBleHBvc2U7CivmlIDmmIcgPiByaXNpbmc7Civnhanmk74gPiBib3RoZXI7Civop6PmuLQgPiBxdWVuY2g7Civpgbrmhr4gPiByZWdyZXQ7CivmrYzmiYsgPiBzaW5nZXI7Civlt6HoiKogPiBjcnVpc2U7CivluIPnt5ogPiB3aXJpbmc7CivmraPlvI8gPiBmb3JtYWw7CivlhrDnrrEgPiBpY2Vib3g7Civns7vntbEgPiBzeXN0ZW07CivnhKHms5UgPiB1bmFibGU7CivpgJXmtYEgPiBydW5vZmY7CivlpL7lhYsgPiBqYWNrZXQ7CivlpKflkIMgPiBnb2JibGU7Civmr6vkuI0gPiBoYXJkbHk7CivpgZPmlZkgPiB0YW9pc207CivoqLrmiYAgPiBjbGluaWM7CivpgbrmgaggPiBncnVkZ2U7Civmk7TmlaMgPiBzcHJlYWQ7CivprIbppIUgPiBtdWZmaW47Civmk6/mlqUgPiByZWplY3Q7CivliqDltJkgPiBnYWxsb247CivlpYfkuosgPiBtYXJ2ZWw7CivmlZnloIIgPiBjaHVyY2g7CivoqZ7lsL4gPiBzdWZmaXg7CivpgLHmnJ8gPiBwZXJpb2Q7Civpm7bllK4gPiByZXRhaWw7Civmq7vmoYMgPiBjaGVycnk7CivlnKjou4ogPiBhYm9hcmQ7CivojLbnopcgPiB0ZWFjdXA7Civnt57luLYgPiByaWJib247CivliIbmtL4gPiBhc3NpZ247Civnlr7pprMgPiBnYWxsb3A7Civnt4rmgKUgPiB1cmdlbnQ7Civlu4HmiYAgPiB0b2lsZXQ7CivluqbmlbggPiBkZWdyZWU7CivpmLvmqYggPiB0aHdhcnQ7CivmjqfoqLQgPiBhY2N1c2U7CivmkJbnsYMgPiBjcmFkbGU7CivokZflkI0gPiBmYW1vdXM7CivlvLfli6IgPiBtaWdodHk7CivntK7nh58gPiBlbmNhbXA7CivntoHmnrYgPiBraWRuYXA7Civlh7nmtJ4gPiBjYXZpdHk7CivlvLHljJYgPiB3ZWFrZW47CivpmbDmiLYgPiB2YWdpbmE7Civmk4rmlZcgPiBkZWZlYXQ7CivpgLLmjqUgPiBhY2Nlc3M7Civnn63lj6UgPiBjbGF1c2U7CivntZXmsKMgPiBleHBpcmU7CivoqLzlr6YgPiB2ZXJpZnk7CivpgKPmk4ogPiBiYXR0ZXI7CivmlZnljYAgPiBwYXJpc2g7CivpgK7mjZUgPiBhcnJlc3Q7Civnm6PnjYQgPiBwcmlzb247Civngavnrq0gPiByb2NrZXQ7CivpmrHlo6sgPiBoZXJtaXQ7Civoirnoj5wgPiBjZWxlcnk7Civnn63lio0gPiBkYWdnZXI7Civoiq3olYkgPiBiYW5hbmE7CivlvLflgaUgPiBzdHVyZHk7CivmrablmaggPiB3ZWFwb247CivoiIzpoK0gPiB0b25ndWU7CivnhaTlsZEgPiBjaW5kZXI7CivlubPmnb8gPiB0YWJsZXQ7Civlh7nmp70gPiBzb2NrZXQ7CivoqJjluLMgPiBjaGFyZ2U7CivliK7mjokgPiBzY3JhcGU7CivpmbDlvbEgPiBzaGFkb3c7Civpq5jpm4UgPiBkYWludHk7CivmraHllpwgPiBqb3lmdWw7CivliIbmnp0gPiBicmFuY2g7CivliYrlvLEgPiB3ZWFrZW47CivmraXlk6ggPiBzZW50cnk7CivmkKrnk7cgPiBlbmFtZWw7CivlgrPpgZQgPiBjb252ZXk7Civmk7TlsZUgPiBleHRlbmQ7CivliIbmnIMgPiBicmFuY2g7Civmv4DotbcgPiBhcm91c2U7CivooaHph48gPiB3ZWlnaHQ7Civpqqjpq5MgPiBtYXJyb3c7CivmkJTnmaIgPiB0aWNrbGU7Civpm5Xlg48gPiBzdGF0dWU7CivmraPljYggPiBtaWRkYXk7CivmkqvmirEgPiBjYXJlc3M7CivlhaznnL4gPiBwdWJsaWM7CivmlZHkuLsgPiBzYXZpb3I7CivnspjnspggPiBzdGlja3k7CivmrbfkvoYgPiBhbHdheXM7CivmlKrli5UgPiB0b1wtbWl4Owor6KGX6YGTID4gc3RyZWV0Owor5be054i+ID4gYmFsdGljOwor55qE56K6ID4gcmVhbGx5Owor6YGO5aSxID4gZGVmZWN0Owor6ZW355+tID4gbGVuZ3RoOwor5bmr5omLID4gaGVscGVyOwor5q2j5YC8ID4gaG9uZXN0Owor5YWs55SoID4gcHVibGljOwor6YGt5Y+XID4gc3VmZmVyOwor6ZmE5bq4ID4gdmFzc2FsOwor55uu5qiZID4gdGFyZ2V0Owor6YGp5ZCIID4gdG9cLWZpdDsKK+mrmOmBlCA+IGF0dGFpbjsKK+ijnOe1piA+IHN1cHBseTsKK+iKseeyiSA+IHBvbGxlbjsKK+WFqOeQgyA+IGVudGlyZTsKK+aMkemBuCA+IGNob29zZTsKK+mBreWIsCA+IHN1ZmZlcjsKK+eZveeXtCA+IGlkaW9jeTsKK+WzveiwtyA+IGNhbnlvbjsKK+WZqumfsyA+IHJ1bWJsZTsKK+aNjeihmyA+IGRlZmVuZDsKK+ihqOimqiA+IGNvdXNpbjsKK+ingOW/tSA+IG5vdGlvbjsKK+ijgee4qyA+IHRhaWxvcjsKK+aOoee0jSA+IGFjY2VwdDsKK+ijnOeoriA+IHJlc2VlZDsKK+WFgeeVtiA+IHByb3BlcjsKK+WGsOafsSA+IGljaWNsZTsKK+mWseattyA+IHRvXC1zZWU7Civlnabnmb0gPiBob25lc3Q7CivpmLLlroggPiBkZWZlbmQ7CivpmL/lp6ggPiBhdW50aWU7CivojYnmlpkgPiBmb2RkZXI7Civnt5rkuIogPiBvbmxpbmU7Civlh7rluK0gPiBhdHRlbmQ7CivpqZrpp60gPiBmcmlnaHQ7CivntKDmj48gPiBza2V0Y2g7CivlhYfnjJsgPiBmaWVyY2U7CivplpLmt7cgPiBsb2l0ZXI7CivmkZ/mirEgPiB0b1wtaHVnOwor6Ieq6LqrID4gaXRzZWxmOwor6YCy5Y+jID4gaW1wb3J0Owor5o6h56SmID4gbWluaW5nOwor5pO+5LqCID4gaW5mZXN0Owor57WQ5bC+ID4gZW5kaW5nOwor6Zaj5qiTID4gZ2FycmV0Owor6Iqx55SfID4gcGVhbnV0Owor6YGO5Lu9ID4gdW5kdWx5Owor6amf6ZuoID4gc2hvd2VyOwor5bmD5bmVID4gc2NyZWVuOwor5pC25pWRID4gcmVzY3VlOwor5YWJ5r6kID4gbHVzdGVyOwor5pCc5p+lID4gc2VhcmNoOwor6YCd5Y67ID4gZWxhcHNlOwor5YWJ5ryGID4gZW5hbWVsOwor5pCt5pWRID4gcmVzY3VlOwor5YWJ5ruRID4gZ2xvc3N5Owor6YCV5ZCRID4gcmFkaWFsOwor5bGP6aKoID4gc2NyZWVuOwor6YC85LuEID4gbmFycm93Owor55u45beuID4gZGlmZmVyOwor6Zec5b+DID4gY2FyaW5nOwor5pCW5pmDID4gZmFsdGVyOwor5oq16YGUID4gYXJyaXZlOwor5Zyw55SiID4gZXN0YXRlOwor57Sw5aupID4gdGVuZGVyOwor5bGA6Z2iID4gYXNwZWN0Owor5r6x57KJID4gc3RhcmNoOwor5qiZ5qacID4gZmxhdW50Owor55m95qWKID4gcG9wbGFyOwor5rqQ6bueID4gc291cmNlOwor5ruR6ZuqID4gdG9cLXNraTsKK+Wbnue1lSA+IHJlYnVmZjsKK+ilquW4tiA+IGdhcnRlcjsKK+e2geS9jyA+IGZhc3RlbjsKK+ecvOWFiSA+IHZpc2lvbjsKK+aoo+acrCA+IHNhbXBsZTsKK+eDiOWjqyA+IG1hcnR5cjsKK+eyvuaYjiA+IGFzdHV0ZTsKK+iFs+mQkCA+IGZldHRlcjsKK+eUoumHjyA+IG91dHB1dDsKK+eZveaenCA+IGdpbmtnbzsKK+W4huW4gyA+IGNhbnZhczsKK+W4g+W5lSA+IHNjcmVlbjsKK+i3s+mAsiA+IHBsdW5nZTsKK+WatOiChSA+IHNvbGVtbjsKK+mZhOS4iiA+IGF0dGFjaDsKK+aKrOi1tyA+IHVwbGlmdDsKK+W5vuS5jiA+IGFsbW9zdDsKK+i/q+WIhyA+IHVyZ2VudDsKK+eAiea5liA+IGxhZ29vbjsKK+e0hOWumiA+IGVuZ2FnZTsKK+ewoeebtCA+IHNpbXBseTsKK+i3n+mAsiA+IGZvbGxvdzsKK+WFieaYryA+IHNvbGVseTsKK+e1puS6iCA+IGFjY29yZDsKK+WxseiwtyA+IHZhbGxleTsKK+WgseS/oSA+IG5vdGlmeTsKK+ewoeeVpSA+IHNpbXBsZTsKK+ikh+aVuCA+IHBsdXJhbDsKK+eZveaQrSA+IG5vXC11c2U7Civlt6HlvIsgPiBjcnVpc2U7CivmqZ/lr4YgPiBzZWNyZXQ7CivoiKrnqIsgPiBmbGlnaHQ7CivlhqzlpKkgPiB3aW50ZXI7Civmj7TmiYsgPiBzdWNjb3I7Civpq5Tns7sgPiBzeXN0ZW07CivluJ3lnIsgPiBlbXBpcmU7CivojLblo7ogPiB0ZWFwb3Q7Civnm5/lnIsgPiBhbGxpZXM7CivmqZjlrZAgPiBvcmFuZ2U7Civoo4HmsbogPiBydWxpbmc7CivoppblipsgPiB2aXNpb247Civlr6bpq5QgPiBlbnRpdHk7CivnmbzmipYgPiBzaGl2ZXI7CivntKLlj5YgPiB0b1wtYXNrOwor5bit5Y23ID4gZW5ndWxmOwor5Zyw5q+vID4gY2FycGV0Owor5YWr5bqmID4gb2N0YXZlOwor55So6KqeID4gc3ludGF4Owor5biC5aC0ID4gbWFya2V0Owor5Z+O5aChID4gY2FzdGxlOwor56+A57SEID4gZnJ1Z2FsOwor55Sy6J+yID4gYmVldGxlOwor5om/6Ku+ID4gZWZmb3J0Owor6KGb55SfID4gaGVhbHRoOwor6ZW35bqmID4gbGVuZ3RoOwor6KOc5pWRID4gcmVtZWR5Owor5L+u6KiCID4gcmV2aXNlOwor5bir5YKFID4gbWFzdGVyOwor6L+E5LuKID4gc29cLWZhcjsKK+WvpumamyA+IGFjdHVhbDsKK+WYl+ippiA+IHRvXC10cnk7CivlnoLluZUgPiBjYW5vcHk7CivooJ/nrYYgPiBjcmF5b247CivlhrDlh40gPiBmcmVlemU7Civkvq7ovrEgPiBpbnN1bHQ7CivmqKPlrZAgPiBtYW5uZXI7Civnlqvnl4UgPiBwbGFndWU7Civln7fkuosgPiBkZWFjb247CivmiJDplbcgPiBtYXR1cmU7Civmup3pgZMgPiBncm9vdmU7CivovrLkurogPiBmYXJtZXI7Civmj5LluqcgPiBzb2NrZXQ7Civmu77okL0gPiB0dW1ibGU7CivlsIfov5EgPiBhbG1vc3Q7Civns7vliJcgPiBzZXJpZXM7Civnm4jliKkgPiBwcm9maXQ7CivmjpLmlqUgPiByZWplY3Q7Civmia7oo50gPiBtYWtldXA7Civmi4nnt4ogPiBzdHJhaW47Civkv53ooZsgPiBkZWZlbmQ7Civono3op6MgPiBtb2x0ZW47CivlnJbmoYggPiBkZXNpZ247CivohZToqr8gPiBhY2NlbnQ7CivotbDpjK8gPiBhc3RyYXk7CivllonpoK0gPiB0aHJvYXQ7Civnr4DnnIEgPiBzYXZpbmc7CivovJXlvq4gPiBzbGlnaHQ7CivlnJPmn7EgPiBjb2x1bW47Civmo4noirEgPiBjb3R0b247CivlsY/olL0gPiBzY3JlZW47CivlhaflnLAgPiBpbmxhbmQ7Civkv6HomZ8gPiBzaWduYWw7CivlsI/ospMgPiBraXR0ZW47CivooYzngrogPiBhY3Rpb247CivlsI3osaEgPiB0YXJnZXQ7CivlhbHlkIwgPiBjb21tb247Civln4vkvI8gPiBhbWJ1c2g7CivnlobnlYwgPiBib3JkZXI7CivlsI3oqbEgPiBkaWFsb2c7CivnrKbomZ8gPiBzeW1ib2w7Civog7jph50gPiBicm9vY2g7CivmkK3kuZggPiBlbWJhcms7CivohIXov6sgPiBjb2VyY2U7CivllprphpIgPiBhcm91c2U7CivlhavljYEgPiBlaWdodHk7CivmqKPlk4EgPiBzYW1wbGU7CivnsLjmj5ogPiB3aW5ub3c7Civmo5Lns5YgPiBzdWNrZXI7Civnrpfnm6QgPiBhYmFjdXM7CivnsKHmmJMgPiBzaW1wbGU7CivooJ/nh60gPiBjYW5kbGU7Civnsr7lipsgPiBlbmVyZ3k7CivlhazlhbEgPiBwdWJsaWM7CivlgrPmn5MgPiBpbmZlY3Q7Civlt6XkurogPiB3b3JrZXI7CivlnKjlvowgPiBiZWhpbmQ7Civoh6rnhLYgPiBuYXR1cmU7Civmu77nrZIgPiByb2xsZXI7CivmvaTmu5EgPiBzbW9vdGg7CivotbfoqLQgPiB0b1wtc3VlOwor6J2X6J+yID4gbG9jdXN0Owor5bK454S2ID4gc29sZW1uOwor5YKz5pWZID4gcHJlYWNoOwor6KOB5a6aID4gcnVsaW5nOwor562J57SaID4gZGVncmVlOwor6LyD5aW9ID4gYmV0dGVyOwor6Iqx5ZySID4gZ2FyZGVuOwor6Iqx5ZyIID4gd3JlYXRoOwor6IWO6IefID4ga2lkbmV5Owor5o2V5ou/ID4gYXJyZXN0Owor6Lev56iLID4gY291cnNlOwor5YWI5YmNID4gYmVmb3JlOwor5oaC6ayxID4gc3VsbGVuOwor6aas6LevID4gc3RyZWV0Owor56mX6aO+ID4gdGFzc2VsOwor5YCr55CGID4gZXRoaWNzOwor55Ge6YeRID4gcnVpamluOwor5oqx55eFID4gYmVcLWlsbDsKK+WCs+aOiCA+IGltcGFydDsKK+i7iuW6qyA+IGdhcmFnZTsKK+a4rOmHjyA+IHN1cnZleTsKK+Wtl+mmliA+IHByZWZpeDsKK+mtmuWkqyA+IGZpc2hlcjsKK+eyl+WKoyA+IGNvYXJzZTsKK+iKseWTqCA+IGdhcmlzaDsKK+aJjeiDvSA+IHRhbGVudDsKK+i8leWSrCA+IG5pYmJsZTsKK+ainee0iyA+IHN0cmlwZTsKK+iHtOatuyA+IGRlYWRseTsKK+WatOagvCA+IHN0cmljdDsKK+aPkuWFpSA+IGluc2VydDsKK+a8gueZvSA+IGJsZWFjaDsKK+aMq+aVlyA+IHRod2FydDsKK+i0lumHkSA+IHJhbnNvbTsKK+exg+WtkCA+IGJhc2tldDsKK+ihjOaYnyA+IHBsYW5ldDsKK+WbnuaGtiA+IHJlY2FsbDsKK+WFieS6riA+IGJyaWdodDsKK+a/vuWZqCA+IGZpbHRlcjsKK+eyl+S/lyA+IHZ1bGdhcjsKK+epgOmhniA+IGNlcmVhbDsKK+WBteafpSA+IGRldGVjdDsKK+WCt+W/gyA+IGdyaWV2ZTsKK+WuueiosSA+IHBlcm1pdDsKK+aOp+WRiiA+IGFjY3VzZTsKK+iiluWtkCA+IHNsZWV2ZTsKK+S9juiqniA+IG11dHRlcjsKK+iKseWFkiA+IGZsb3dlcjsKK+icpeictCA+IGxpemFyZDsKK+a8o+a8qiA+IHJpcHBsZTsKK+WbuuWuiCA+IGFkaGVyZTsKK+Wci+WkliA+IGFicm9hZDsKK+a2sumrlCA+IGxpcXVpZDsKK+iDjOiqpiA+IHJlY2l0ZTsKK+aelemgrSA+IHBpbGxvdzsKK+icmOibmyA+IHNwaWRlcjsKK+W0juW2hyA+IHJ1Z2dlZDsKK+mkkemkkSA+IHBhc3RyeTsKK+eWsuaGiiA+IGJlYXRlbjsKK+S+jeiAhSA+IHdhaXRlcjsKK+mkkOmjsiA+IHJlcGFzdDsKK+WCt+WusyA+IGluanVyZTsKK+S/rueQhiA+IHJlcGFpcjsKK+S9leiZlSA+IHdoZW5jZTsKK+a8q+atpSA+IHJhbWJsZTsKK+S/oeeUqCA+IGNyZWRpdDsKK+a2vOmeiyA+IHNhbmRhbDsKK+a1t+m+nCA+IHR1cnRsZTsKK+WboOWtkCA+IGZhY3RvcjsKK+aLs+aTiiA+IGJveGluZzsKK+i7n+WMliA+IHNvZnRlbjsKK+WuieipsyA+IHNlcmVuZTsKK+Wcn+WMqiA+IGJhbmRpdDsKK+aLlOaguSA+IHVwcm9vdDsKK+aJo+eVmSA+IGRldGFpbjsKK+advumbniA+IGdyb3VzZTsKK+mmmeiViSA+IGJhbmFuYTsKK+mrmOW6piA+IGhlaWdodDsKK+ani+S7tiA+IG1lbWJlcjsKK+WVhuirhyA+IGNvbmZlcjsKK+eVsOaVmSA+IGhlcmVzeTsKK+ewoeWWriA+IHNpbXBsZTsKK+ajuuadkCA+IGNvZmZpbjsKK+WcsOS4uyA+IGFcLWhvc3Q7Civpq5jlsbEgPiBhbHBpbmU7Civlg7HkvaMgPiBlbXBsb3k7Civpo6LppJMgPiBodW5nZXI7CivnlJ/mtq8gPiBjYXJlZXI7Civmo67mnpcgPiBmb3Jlc3Q7CivkvZzogIUgPiBhdXRob3I7CivmjKrlqIEgPiBub3J3YXk7CivlsIvnmoQgPiBob21pbmc7CivlmrTlr4YgPiBzdHJpY3Q7Civmi5jmjZUgPiBhcnJlc3Q7CivlgaXlurcgPiBoZWFsdGg7Civooajlk6UgPiBjb3VzaW47CivmnIvpu6ggPiBjbGlxdWU7Civmt7fooYAgPiBoeWJyaWQ7Civot4vmtokgPiB0cnVkZ2U7Civlg4Xlg4UgPiBiYXJlbHk7Civlm57ljrsgPiByZXR1cm47CivmvI/mlpcgPiBmdW5uZWw7Civos5Poqp4gPiBvYmplY3Q7CivkubPpoK0gPiBuaXBwbGU7Civmu7/mnJ8gPiBleHBpcmU7CivnkIboq5YgPiB0aGVvcnk7Civku4vos6ogPiBtZWRpdW07CivnrZTmoYggPiBhbnN3ZXI7Civpkb/lrZAgPiBjaGlzZWw7CivnlLHmlrwgPiBkdWVcLXRvOwor5oqK5p+EID4gaGFuZGxlOwor5ZKM6aKoID4gYnJlZXplOwor5L2/55SoID4gdG9cLXVzZTsKK+iBmOiriyA+IGVuZ2FnZTsKK+aJtuakjSA+IGZvc3RlcjsKK+eSsOeQgyA+IGdsb2JhbDsKK+W0l+S9jSA+IGFcLXBvc3Q7Civkvr/msaAgPiB1cmluYWw7Civlm57kvoYgPiByZXR1cm47Civmi5PlsZUgPiBleHBhbmQ7CivmuqrmtYEgPiBzdHJlYW07CivlmrTljrIgPiBzZXZlcmU7CivmvZvlnKggPiBoaWRkZW47CivoiLnkuIogPiBhYm9hcmQ7CivlrqPnqLEgPiBhc3NlcnQ7Civlk4Dovq0gPiBsYW1lbnQ7CivmiYvmrrUgPiBtZXRob2Q7Civkub7phaogPiBjaGVlc2U7Civmm7Tpq5ggPiBoaWdoZXI7CivlgYzlpKcgPiBzb1wtYmlnOwor5a6j56S6ID4gdG9cLXZvdzsKK+Wwj+awoyA+IHN0aW5neTsKK+mrlOWItiA+IHN5c3RlbTsKK+aIkOeGnyA+IG1hdHVyZTsKK+iCjOiCiSA+IG11c2NsZTsKK+S9nOeUqCA+IGFjdGlvbjsKK+aKveWxnCA+IGRyYXdlcjsKK+mpmuaBkCA+IGFwcGFsbDsKK+aKiuaJiyA+IGhhbmRsZTsKK+aJi+anjSA+IHBpc3RvbDsKK+WutueVnCA+IGNhdHRsZTsKK+emj+mfsyA+IGdvc3BlbDsKK+i1t+a6kCA+IG9yaWdpbjsKK+e+pOmrlCA+IGNvbG9ueTsKK+S6gui3syA+IGJvdW5jZTsKK+eUt+W3qyA+IHdpemFyZDsKK+iGveWkpyA+IGRhcmluZzsKK+WuieelpSA+IHNlcmVuZTsKK+etlOW+qSA+IGFuc3dlcjsKK+i3n+W+niA+IGZvbGxvdzsKK+WBpeWFqCA+IHJvYnVzdDsKK+aguea6kCA+IG9yaWdpbjsKK+iDvea6kCA+IGVuZXJneTsKK+acrOi6qyA+IGl0c2VsZjsKK+aLjOWYtCA+IGJpY2tlcjsKK+aJk+aTiiA+IHRvXC1oaXQ7Civmh4nnlbYgPiBzaG91bGQ7CivmiaPmirwgPiBkZXRhaW47CivnrKjmi5kgPiBjbHVtc3k7CivlgIvlrZAgPiBoZWlnaHQ7Civmh4nnlKggPiB0b1wtdXNlOwor55GV55a1ID4gc3RpZ21hOwor5pud6ZyyID4gZXhwb3NlOwor5rW36KOhID4gbWFyaW5lOwor5ZGz6YGTID4gZmxhdm9yOwor5omL5oyHID4gZmluZ2VyOwor5oqK5a2QID4gaGFuZGxlOwor56eB6KqeID4gbXVybXVyOwor6aSK6IKyID4gZm9zdGVyOwor5pyA6L+RID4gcmVjZW50Owor5riF55imID4gbWVhZ2VyOwor5rS76LqNID4gYWN0aXZlOwor5bK45LiKID4gYXNob3JlOwor5oiQ5p6cID4gcmVzdWx0Owor5Lit6YCUID4gbWlkd2F5Owor6aCC6bueID4gc3VtbWl0Owor5pq06ZyyID4gZXhwb3NlOwor56qB54S2ID4gc3VkZGVuOwor5pyo6KO9ID4gd29vZGVuOwor5a6J54S2ID4gc2FmZWx5Owor6aOi6I2SID4gZmFtaW5lOwor6La+5bCWID4gdGlwdG9lOwor5p2f6IWwID4gZ2lyZGxlOwor5a6u5q6/ID4gcGFsYWNlOwor5p2/57WQID4gaGFyZGVuOwor5L6b5oeJID4gc3VwcGx5Owor5L+h5aWJID4gYmVsaWVmOwor5oiQ5pWIID4gZWZmZWN0Owor55O25a2QID4gYm90dGxlOwor5LiJ6YeNID4gdHJlYmxlOwor5a6i5rCjID4gcG9saXRlOwor5rWu6JGXID4gYWZsb2F0Owor5aqS6LOqID4gbWVkaXVtOwor6K6K6buRID4gZGFya2VuOwor5a2k542oID4gbG9uZWx5Owor5rig5rqdID4gdHJlbmNoOwor6IOh5qSSID4gcGVwcGVyOwor5rWu6I+vID4gdmFuaXR5Owor6aeB5palID4gcmVmdXRlOwor5LiN6YGpID4gdW53ZWxsOwor576e6L6xID4gYmFmZmxlOwor55WZ5LiLID4gcmVtYWluOwor5LiK6YKKID4gdXBzaWRlOwor6Y+h5a2QID4gbWlycm9yOwor6IOh5qGDID4gd2FsbnV0Owor6Y+f5a2QID4gc2hvdmVsOwor5bCB5bu6ID4gZmV1ZGFsOwor5p6c55yfID4gcmVhbGx5Owor5ZKM6Je5ID4ga2luZGx5Owor6bia6bWhID4gcGFycm90Owor56m/5rSeID4gcGllcmNlOwor5a+65bufID4gdGVtcGxlOwor55CG55SxID4gcmVhc29uOwor6Laz5aSgID4gZW5vdWdoOwor6JWB6bq7ID4gbmV0dGxlOwor5a6i5qOnID4gdGF2ZXJuOwor5a+25bqnID4gdGhyb25lOwor5Y+p6aCtID4ga293dG93Owor5oi/5a6iID4gdGVuYW50Owor56ys5ZubID4gZm91cnRoOwor6YeO6aSQID4gcGljbmljOwor5bCI5a62ID4gZXhwZXJ0Owor5p+z5qi5ID4gd2lsbG93Owor55Sx5L6GID4gb3JpZ2luOwor5L2/5b6XID4gdXNhYmxlOwor5ryC5LquID4gcHJldHR5Owor5ZeT5a2QID4gdGhyb2F0Owor6JyD5pmvID4gbWlyYWdlOwor6YeN6Z+zID4gYWNjZW50Owor5Y+N6aeBID4gcmV0b3J0Owor5bCR5aWzID4gbWFpZGVuOwor55Sx5LqOID4gZHVlXC10bzsKK+a1t+e2vyA+IHNwb25nZTsKK+eQg+eLgCA+IHNwaGVyZTsKK+eUqOS6jiA+IHVzZVwtaW47Civmh4nmnIkgPiBwcm9wZXI7CivosqfnmKAgPiBiYXJyZW47CivomZ/norwgPiBudW1iZXI7CivmmZrpo68gPiBzdXBwZXI7Civos63ms6ggPiBzdGFrZXM7CivnpZ7oq60gPiBvcmFjbGU7CivmhJrnrKggPiBzdHVwaWQ7CivmnpznhLYgPiByZWFsbHk7CivkuI3opoEgPiBkb24nJ3RcITsKK+adkOepjSA+IHZvbHVtZTsKK+aJgeWckyA+IG9ibGF0ZTsKK+m7g+iJsiA+IHllbGxvdzsKK+WPrumItCA+IGppbmdsZTsKK+esrOWFqyA+IGVpZ2h0aDsKK+WxheS9jyA+IHJlc2lkZTsKK+WtuOagoSA+IHNjaG9vbDsKK+S4iuihqyA+IGJsb3VzZTsKK+azouiwtyA+IHRyb3VnaDsKK+S4iuihoyA+IGphY2tldDsKK+WvtuWhlCA+IHBhZ29kYTsKK+WuouaItiA+IGNsaWVudDsKK+eql+aItiA+IHdpbmRvdzsKK+WutuW6rSA+IGZhbWlseTsKK+mHjemHjyA+IHdlaWdodDsKK+afj+aelyA+IGJlcmxpbjsKK+aciee9qiA+IGd1aWx0eTsKK+mNteW4vSA+IGtleWNhcDsKK+Wwj+WMhSA+IHBhY2tldDsKK+S6qOeJuSA+IGh1bnRlcjsKK+epjealtSA+IGFjdGl2ZTsKK+aJk+WCtyA+IGJydWlzZTsKK+mggemCiiA+IG1hcmdpbjsKK+aJi+WGiiA+IG1hbnVhbDsKK+WvguWvniA+IGxvbmVseTsKK+a1t+ebnCA+IHBpcmF0ZTsKK+iDjOW+jCA+IGJlaGluZDsKK+eJmem9kiA+IGRlbnRhbDsKK+S9nOWutiA+IGF1dGhvcjsKK+WQjeiogCA+IHNheWluZzsKK+aZrumAmiA+IGNvbW1vbjsKK+iAgOecvCA+IGRhenpsZTsKK+S4u+e3qCA+IGVkaXRvcjsKK+a4r+W9jiA+IGhhcmJvcjsKK+iDjOW4tiA+IGJyYWNlczsKK+eKr+mMryA+IHRvXC1lcnI7CivogZbmrr8gPiB0ZW1wbGU7CivmmrTomZAgPiBicnV0YWw7Civms6LomK0gPiBwb2xhbmQ7Civpp4Hlm54gPiByZWplY3Q7CivmiJDlk6EgPiBtZW1iZXI7Civmg7PnnaEgPiBkcm93c3k7CivmmJ/pm7IgPiBuZWJ1bGE7Civororou58gPiBzb2Z0ZW47CivkuI3og70gPiBjYW5ub3Q7Civmtbfni7ggPiBiZWF2ZXI7Civkvp3lgY4gPiBuZXN0bGU7CivmhqTmhaggPiByZXNlbnQ7Civmh6blpKsgPiBjb3dhcmQ7CivkvJHmg5wgPiByZWNlc3M7Civok6zprIYgPiBmbHVmZnk7Civlj6/opqogPiBraW5kbHk7Civno4HpkLUgPiBtYWduZXQ7CivpoJjoopYgPiBsZWFkZXI7CivkuI3nvoggPiB1bnJ1bHk7CivmoKHlnJIgPiBjYW1wdXM7CivmiJDli6MgPiByZXN1bHQ7CivnpZ7ogZYgPiBkaXZpbmU7CivkuK3nrYkgPiBtZWRpdW07Civororos6ogPiBnb1wtYmFkOwor576K6IKJID4gbXV0dG9uOwor5raI5ruFID4gcGVyaXNoOwor5ZaJ5ZqoID4gdGhyb2F0Owor5oCn6LOqID4gbmF0dXJlOwor5ZCK6JGXID4gZGFuZ2xlOwor5p+x5a2QID4gcGlsbGFyOwor5riF5buJID4gaG9uZXN0Owor5Y2x6ZqqID4gZGFuZ2VyOwor5a6J5a6aID4gc3RhYmxlOwor5oaO5oOhID4gbG9hdGhlOwor5Y+j6KKLID4gcG9ja2V0Owor5oaO5oGoID4gZGV0ZXN0Owor5Zac5YqHID4gY29tZWR5Owor5a+S5YasID4gd2ludHJ5Owor6LK25palID4gZGVtb3RlOwor5aWu6aylID4gc3RyaXZlOwor5Zau5L2NID4gYVwtdW5pdDsKK+acieeUqCA+IHVzZWZ1bDsKK+eQg+aLjSA+IHJhY2tldDsKK+WPpeiZnyA+IHBlcmlvZDsKK+WPo+iZnyA+IHNsb2dhbjsKK+epqeWumiA+IHN0YWJsZTsKK+WWruS4gCA+IHNpbmdsZTsKK+WtkOW9iCA+IGJ1bGxldDsKK+WuieWfuSA+IGFtcGVyZTsKK+ehrOmgmCA+IGNvbGxhcjsKK+mhhueykiA+IGtlcm5lbDsKK+mjn+anvSA+IG1hbmdlcjsKK+WqkueVjCA+IG1lZGl1bTsKK+acrOa6kCA+IG9yaWdpbjsKK+WusOWJsiA+IGludmFkZTsKK+iDjOWPmyA+IGJldHJheTsKK+i0luWbniA+IHJlZGVlbTsKK+azoue0iyA+IHJpcHBsZTsKK+eql+WPoyA+IHdpbmRvdzsKK+eNqOeJuSA+IHVuaXF1ZTsKK+Wtl+WwviA+IHN1ZmZpeDsKK+elnuekviA+IHNocmluZTsKK+iVquiPgSA+IHR1cm5pcDsKK+ayueiEgiA+IGdyZWFzZTsKK+mdm+mdkiA+IGluZGlnbzsKK+meoOi6rCA+IHRvXC1ib3c7Civph5HoibIgPiBnb2xkZW47Civljbfou7ggPiBzY3JvbGw7CivlpKfpuqUgPiBiYXJsZXk7CivptZPptL8gPiBwaWdlb247CivlrqTlhacgPiBpbmRvb3I7CivkvZXku6UgPiB3aGVuY2U7Civlj5foi6YgPiBzdWZmZXI7CivkvLjlh7ogPiBleHRlbmQ7CivkuIDnnqUgPiBnbGFuY2U7CivkvK/li54gPiBzaHJpa2U7CivmtLvmvZEgPiBsaXZlbHk7CivmlqzpppYgPiBiZWhlYWQ7Civos5PlrqIgPiBndWVzdHM7CivljJXpppYgPiBkYWdnZXI7CivnkZ7lhbggPiBzd2VkZW47CivorJvpgZMgPiBwcmVhY2g7CivpvLvmga8gPiBicmVhdGg7CivorJnpgZwgPiBodW1ibGU7Civosqrlv4MgPiBncmVlZHk7CivotIrlkIwgPiBhc3NlbnQ7CivoloTntJkgPiB0aXNzdWU7CivmgrbnhrEgPiBzdWx0cnk7CivpoJLntaYgPiBjb25mZXI7Civorprnvo4gPiBhZG1pcmU7Civnj77lrZggPiBleHRhbnQ7CivppJDlt74gPiBuYXBraW47Civku6XlpKogPiBldGhlclwtOwor5oWL5bqmID4gbWFubmVyOwor5aW26YWqID4gY2hlZXNlOwor54u556qEID4gbmFycm93Owor55Gj5LqLID4gdHJpZmxlOwor6ICB5pivID4gYWx3YXlzOwor6JWD6IyEID4gdG9tYXRvOwor6LKh5bibID4gd2VhbHRoOwor6aCQ566XID4gYnVkZ2V0Owor6Z2S6YqFID4gYnJvbnplOwor5b+Y6KiYID4gZm9yZ2V0Owor6aCR56ulID4gdXJjaGluOwor5re35ZCIID4gdG9cLW1peDsKK+acg+atuyA+IG1vcnRhbDsKK+S4jeeEtiA+IG5vdFwtc287CivoroDogIUgPiByZWFkZXI7CivmtKrmsLQgPiBkZWx1Z2U7CivmhJ/mhaggPiBsYW1lbnQ7Civos63ljZogPiBnYW1ibGU7Civkuovmg4UgPiBhZmZhaXI7CivlrZjlj5YgPiBhY2Nlc3M7CivmnKjmlpkgPiBsdW1iZXI7CivosqHlr4wgPiB3ZWFsdGg7Civmt7HljJYgPiBkZWVwZW47Civmlrnph50gPiBwb2xpY3k7CivpoILnq68gPiBzdW1taXQ7CivlppboqIAgPiBoZXJlc3k7Civnj77lnKggPiBtb2Rlcm47CivororntIUgPiByZWRkZW47CivlkI3nlKIgPiBzdGFwbGU7CivmmIbon7IgPiBpbnNlY3Q7CivlvozpgoogPiBiZWhpbmQ7CivnjJbni4IgPiBzYXZhZ2U7CivlraTlhZIgPiBvcnBoYW47Civmt6jljJYgPiBwdXJpZnk7CivlvozpgIAgPiByZWNvaWw7CivniaHooKMgPiBveXN0ZXI7Civkurrlo6sgPiBwZXJzb247Civogbfli5kgPiBhXC1wb3N0Owor54mH6KqeID4gcGhyYXNlOwor5rCR6KygID4gYmFsbGFkOwor54yb54OIID4gZmllcmNlOwor5rWB5pifID4gbWV0ZW9yOwor5oKy5q2OID4gYmV3YWlsOwor5a2Y5YSyID4gbWVtb3J5Owor5Lul5YmNID4gYmVmb3JlOwor6LGh5b61ID4gZW1ibGVtOwor5LiN5q+bID4gYmFycmVuOwor5LiN5q+UID4gdW5saWtlOwor6LGh5b6BID4gc3ltYm9sOwor5q+X6YCjID4gYWRqb2luOwor5aSn6YyYID4gc2xlZGdlOwor5pyA5pawID4gbGF0ZXN0Owor5rK755CGID4gZ292ZXJuOwor5Li75pWZID4gYmlzaG9wOwor6KyZ6JmbID4gbW9kZXN0Owor54i26KaqID4gZmF0aGVyOwor6JmV5aWzID4gdmlyZ2luOwor6LOj5Li7ID4gc2VsbGVyOwor576K5q+bID4gZmxlZWNlOwor5pS+6ayGID4gbG9vc2VuOwor5ZCr5rC0ID4gd2F0ZXJ5Owor56eY5a+GID4gc2VjcmV0Owor6JmV5aKDID4gcGxpZ2h0Owor6K2w56iLID4gYWdlbmRhOwor54uh54y+ID4gY3JhZnR5Owor546L5bqnID4gdGhyb25lOwor5oOh5oSPID4gbWFsaWNlOwor5byE6auSID4gZGVmaWxlOwor5pys5beeID4gaG9uc2h1Owor5ayw5YWSID4gaW5mYW50Owor6Jaq5rC0ID4gc2FsYXJ5Owor54245oCnID4gYnJ1dGFsOwor5pW46YePID4gYW1vdW50Owor5pa36KiAID4gYWZmaXJtOwor5peF6KGMID4gdHJhdmVsOwor5rWq5a2QID4gbG9hZmVyOwor5pyJ5oSPID4gaW50ZW5kOwor56eL5a2jID4gYXV0dW1uOwor5ZCN5rWBID4gZ2VudHJ5Owor5Y+w54GjID4gdGFpd2FuOwor5LiN5pm6ID4gdW53aXNlOwor5aaC6I2JID4gZ3Jhc3N5Owor5pWF6ZqcID4gZ2xpdGNoOwor6aGY5pybID4gZGVzaXJlOwor5ZCI5rOVID4gbGF3ZnVsOwor5ZCN5rCjID4gcmVwdXRlOwor5aSn6LevID4gYXZlbnVlOwor5rW35aCxID4gcG9zdGVyOwor6Kme6aCtID4gcHJlZml4Owor5Lqm5Y2zID4gbmFtZWx5Owor5ZOA5ZiGID4gbGFtZW50Owor546L5a2QID4gcHJpbmNlOwor57ir6YedID4gbmVlZGxlOwor5q6v6LuKID4gaGVhcnNlOwor6Yar55SfID4gZG9jdG9yOwor56eL5aSpID4gYXV0dW1uOwor5Lq65YCRID4gcGVvcGxlOwor5pqW5rCjID4gaGVhdGVyOwor56e75YuVID4gbW9iaWxlOwor5ZC45pS2ID4gYWJzb3JiOwor5oSP5ZyWID4gaW50ZW50Owor5by36L+rID4gY29tcGVsOwor6aGr5oqWID4gcXVpdmVyOwor57ej6aO+ID4gZnJpbmdlOwor5Lit5b+DID4gY2VudGVyOwor5oKU5pS5ID4gcmVwZW50Owor5ZGo5bm0ID4gYW5udWFsOwor5Y+j5ri0ID4gdGhpcnN0Owor6Yed5rOVID4gc3RpdGNoOwor5raI5YyWID4gZGlnZXN0Owor5q2j6ZaAID4gcG9ydGFsOwor5rW35ZOhID4gc2FpbG9yOwor5LqM5Y2BID4gdHdlbnR5Owor5ZCQ5qC5ID4gaXBlY2FjOwor6ZuZ6YeNID4gZG91YmxlOwor6Z2S6IuUID4gbGljaGVuOwor5aSa6K6KID4gZmlja2xlOwor5rKZ5rygID4gZGVzZXJ0Owor6YmL5bqKID4gcGxhbmVyOwor5bu26ZW3ID4gZXh0ZW5kOwor5ZCN5pybID4gcmVub3duOwor5Y+W5raIID4gY2FuY2VsOwor5aao56SZID4gaGluZGVyOwor5Lqk5LqSID4gbXV0dWFsOwor6YKj6YKKID4geW9uZGVyOwor5q246YKEID4gcmV0dXJuOwor5YqI6ZaLID4gY2xlYXZlOwor6YWS56qpID4gZGltcGxlOwor5ZKW5ZWhID4gY29mZmVlOwor556s6ZaTID4gbW9tZW50Owor5YuV6K2wID4gbW90aW9uOwor6Zmw6ayxID4gZ2xvb215Owor5pS+6YCQID4gYmFuaXNoOwor6YWN56ixID4gd29ydGh5Owor5rS75aGeID4gcGlzdG9uOwor5pyq5Y+vID4gY2Fubm90Owor5aSW6KGMID4gbGF5bWFuOwor8KWcjCA+IGFcLWNvYXQ7CivmnY/ku4EgPiBhbG1vbmQ7Civnoo7nn7MgPiBncmF2ZWw7CivpoJDmnJ8gPiBleHBlY3Q7Civmm7Tlpb0gPiBiZXR0ZXI7CivmhJvkurogPiBzcG91c2U7CivpmobpmoYgPiBydW1ibGU7Civnp4nlhawgPiBqdXN0bHk7CivnprHlkYogPiBwcmF5ZXI7Civmm7TlpKcgPiBiaWdnZXI7CivmnJ3lkJEgPiB0b3dhcmQ7CivkuZ3ljYEgPiBuaW5ldHk7CivnoLToiIogPiBzaGFiYnk7CivkuIDluLYgPiByZWdpb247CivpoaflrqIgPiBjbGllbnQ7Civlj6LmnpcgPiBqdW5nbGU7CivnoqfnjokgPiBqYXNwZXI7CivwpaWFID4gYVwtaG9sZTsKK+WPquaYryA+IG1lcmVseTsKK+eMtOWtkCA+IG1vbmtleTsKK/Cipo8gPiB0b1wtY3V0Owor6Zqn6YGTID4gdHVubmVsOwor5oOh5YyWID4gd29yc2VuOwor5pyo5YG2ID4gcHVwcGV0Owor5pyD5ZOhID4gbWVtYmVyOwor5LiA5bGAID4gaW5uaW5nOwor5pyJ5ZCNID4gZmFtb3VzOwor5pyL5Y+LID4gZnJpZW5kOwor6I+M6aGeID4gZnVuZ3VzOwor5LiA5bCNID4gY291cGxlOwor56Gr56O6ID4gc3VsZnVyOwor5pyq5L6GID4gZnV0dXJlOwor5LiA5a6aID4gc3VyZWx5Owor6YGt6YGHID4gYmVmYWxsOwor5LmL5YmNID4gYmVmb3JlOwor57235belID4gc3RyaWtlOwor6YSJ57SzID4gc3F1aXJlOwor6Kmt6KiIID4gZGVjZWl0Owor6LGB5YWNID4gZXhlbXB0Owor5rWB5YipID4gZmx1ZW50Owor5oCn5qC8ID4gbmF0dXJlOwor5rS75YqbID4gZW5lcmd5Owor6K6K5pu0ID4gY2hhbmdlOwor5b+D55CGID4gbWVudGFsOwor6K6K5pqXID4gZGFya2VuOwor54mi54miID4gZmlybWx5Owor6aKo5L+XID4gY3VzdG9tOwor57ej6LW3ID4gb3JpZ2luOwor6KiY6YyEID4gcmVjb3JkOwor8KCAiSA+IGFcLWhpbGw7CivlibXovqYgPiBsYXVuY2g7CivmmpflvbEgPiBzaGFkb3c7Civpmorpg6ggPiBvZmZpY2U7Civorprmj5ogPiBwcmFpc2U7CivkuZ7kuJAgPiBiZWdnYXI7CivpgY7ph48gPiBleGNlc3M7CivnhpTop6MgPiBmdXNpb247Civpmpjot68gPiBkZWZpbGU7CivpgoDoq4sgPiBpbnZpdGU7CivlvqrnkrAgPiBjaXJjbGU7CivmmbrmhacgPiB3aXNkb207CivnjbXkurogPiBodW50ZXI7CivmgZDmgJYgPiB0ZXJyb3I7CivmlpHntIsgPiBzdHJpcGU7Civnn7Poi7EgPiBxdWFydHo7CivljIXnrqEgPiBhc3N1cmU7CivphbXmr40gPiBsZWF2ZW47Civop6PpmaQgPiByZW1vdmU7Civli5XohIggPiBhcnRlcnk7CivmnIDkvY4gPiBsb3dlc3Q7Civnpa3lj7ggPiBwcmllc3Q7CivnibnmraQgPiBoZXJlYnk7Civpm4zolYogPiBwaXN0aWw7CivlpKnnr7cgPiBjYW5vcHk7CivlubLpoJAgPiBtZWRkbGU7CivljJbnn7MgPiBmb3NzaWw7CivkuI3lj68gPiBjYW5ub3Q7CivmsLTms6UgPiBjZW1lbnQ7CivmsLTms6EgPiBidWJibGU7CivorabmlrkgPiBwb2xpY2U7CivniLjniLggPiBmYXRoZXI7Civok4vniL4gPiBnYWVsaWM7CivliY3ovKkgPiBzZW5pb3I7CivoqJjotbcgPiByZWNhbGw7CivkuInljYEgPiB0aGlydHk7CivnuYPnsKcgPiBzcHJpbmc7CivmkqTpmaQgPiByZW1vdmU7Civph6blrZAgPiBidXR0b247CivlvYjnsKcgPiBzcHJpbmc7Civlia/oqZ4gPiBhZHZlcmI7CivniZvmsrkgPiBidXR0ZXI7CivoqrLnqIsgPiBjb3Vyc2U7CivlubTplbcgPiBzZW5pb3I7CivmgKfmg4UgPiBuYXR1cmU7Civnt6jomZ8gPiBudW1iZXI7CivmsKPms6EgPiBidWJibGU7CivljbHmqZ8gPiBjcmlzaXM7CivkuI3lhawgPiB1bmp1c3Q7CivlupXpg6ggPiBib3R0b207CivkuI3lhYsgPiBjYW5ub3Q7Civms5XlnIsgPiBmcmFuY2U7CivmsonmgJ0gPiBwb25kZXI7CivmmpfloKEgPiBidW5rZXI7Civni5flsYsgPiBrZW5uZWw7CivmmrTlkJsgPiB0eXJhbnQ7Civlh7npmbcgPiBob2xsb3c7CivkuInlgI0gPiB0cmlwbGU7CivlpKfnnL4gPiBwZW9wbGU7CivpnJznmb0gPiBmcm9zdHk7CivlkKbliYcgPiBpZlwtbm90Owor5YiG6ZCYID4gbWludXRlOwor6aCY5Z+fID4gZG9tYWluOwor6JGs56auID4gYnVyaWFsOwor5rC05qG2ID4gYnVja2V0Owor5pKk6Yq3ID4gcmVwZWFsOwor5ZCI5ZSxID4gY2hvcnVzOwor6Yar5birID4gZG9jdG9yOwor5Y+N5bCEID4gcmVmbGV4Owor5LiN5Li5ID4gYmh1dGFuOwor5pWs56auID4gc2FsdXRlOwor6Z2e5rSyID4gYWZyaWNhOwor6YCa6LevID4gYWNjZXNzOwor576O5Lq6ID4gYmVhdXR5Owor6KyA5q66ID4gbXVyZGVyOwor57235YWNID4gcmVjYWxsOwor6KiA6KqeID4gc3BlZWNoOwor5Ymd6J2VID4gZGVudWRlOwor6YCA6YKEID4gcmV0dXJuOwor5pW455uuID4gYW1vdW50Owor5Y+s5ZueID4gcmVjYWxsOwor56C054ibID4gcmFnZ2VkOwor5LiA5LiyID4gc3RyYW5kOwor57qW5q+bID4gY2lsaXVtOwor5oCn5a2QID4gdGVtcGVyOwor6L+96YCQID4gY2hhc2U7CivpgJXos70gPiB0cmFjazsKK+mdnOatoiA+IHN0aWxsOwor5be06buOID4gcGFyaXM7CivlubTovJUgPiB5b3VuZzsKK+i/tOmBvyA+IGF2b2lkOwor6JK45rG9ID4gc3RlYW07CivmrIrooaEgPiB3ZWlnaDsKK+mBiuiVqSA+IHN0cmF5Owor5byE57OfID4gc3BvaWw7CivmganlhbggPiBncmFjZTsKK+Wkp+eIuiA+IHVuY2xlOwor5pel5pysID4gamFwYW47Civlj6/lj68gPiBjb2NvYTsKK+WPr+WPoyA+IHRhc3R5Owor5bu257epID4gZGVmZXI7Civnt6jnuZQgPiB3ZWF2ZTsKK+WNl+aWuSA+IHNvdXRoOwor572u5LqOID4gcGxhY2U7Civlp6rlpbMgPiBuaWVjZTsKK+mZt+iQvSA+IHNsdW1wOwor54mb5o6SID4gc3RlYWs7CivpmrHntIQgPiB2YWd1ZTsKK+mvqOmtmiA+IHdoYWxlOwor5ZCI5L21ID4gYW5uZXg7Civorbflo6sgPiBudXJzZTsKK+aziuS9jSA+IGJlcnRoOwor6YGK6ImHID4gYmFyZ2U7Civpl5zplokgPiBjbG9zZTsKK+mZsOiOliA+IHBlbmlzOwor5pm65YipID4gY2hpbGU7Civnt5rntKIgPiB0cmFpbDsKK+Wjk+eijiA+IGNydXNoOwor5Y6f5aeLID4gZmlyc3Q7Civmr4/mr48gPiBvZnRlbjsKK+WPjeWPmyA+IHJlYmVsOwor6Z+T5ZyLID4ga29yZWE7Civpm5nnlJ8gPiB0d2luczsKK+ebuOmFjSA+IG1hdGNoOwor5Y2w5bqmID4gaW5kaWE7Civnn7Pni4AgPiBzdG9ueTsKK+i/hemAnyA+IHJhcGlkOwor5bm86J+yID4gbGFydmE7Civpr4rprZogPiBzaGFyazsKK+WIpeiZnyA+IGFsaWFzOwor57ag6ImyID4gZ3JlZW47CivlvJXnlKggPiBxdW90ZTsKK+ebuOi/kSA+IGNsb3NlOwor5biC6ZW3ID4gbWF5b3I7CivniJDmnrYgPiBncmF0ZTsKK+apn+mXnCA+IG9yZ2FuOwor5qyK6IO9ID4gcG93ZXI7Civljp/lm6AgPiBjYXVzZTsKK+aApeWKhyA+IHJhcGlkOwor5aSn5qyKID4gcG93ZXI7CivptInniYcgPiBvcGl1bTsKK+iok+e3tCA+IGRyaWxsOwor5YyX5pa5ID4gbm9ydGg7Civoq5bmlocgPiBwYXBlcjsKK+aUvueJpyA+IGdyYXplOwor5Yqf546HID4gcG93ZXI7Civmr4/ml6UgPiBkYWlseTsKK+Wll+aIvyA+IHN1aXRlOwor6YGV56SZID4gdGFib287CivlhKrpu54gPiBtZXJpdDsKK+W+mOW+iiA+IGhvdmVyOwor6KaW6Ka6ID4gc2lnaHQ7Civmk43nt7QgPiBkcmlsbDsKK+W8t+asiiA+IHBvd2VyOwor5YiA6JGJID4gYmxhZGU7Civmkanopb8gPiBtb3NlczsKK+itpuWCmSA+IGd1YXJkOwor6Kqy5pmCID4gY2xhc3M7CivlvZfmmJ8gPiBjb21ldDsKK+aQrOmBiyA+IGNhcnJ5Owor6Z2S5bm0ID4geW91dGg7CivmqJnpoYwgPiB0aXRsZTsKK+aPkOmrmCA+IHJhaXNlOwor5rCo5Z+6ID4gYW1pbm87CivlpJzmmZogPiBuaWdodDsKK+eGseawoyA+IHN0ZWFtOwor5qmf6Lu4ID4gYXJib3I7CivphpLkvoYgPiB3YWtlbjsKK+Wls+WtkCA+IHdvbWFuOwor6ZaA6ZaCID4gbGF0Y2g7CivlvoDlvoAgPiBvZnRlbjsKK+iTi+WtkCA+IGNvdmVyOwor6Z2I5benID4gaGFuZHk7CivlhYPpn7MgPiB2b3dlbDsKK+WFi+mahiA+IGNsb25lOwor5pW05pW0ID4gd2hvbGU7CivljK/lr4QgPiByZW1pdDsKK+WJgeeijiA+IG1pbmNlOwor6Kq/5oOFID4gZmxpcnQ7CivlnLDpu54gPiBwbGFjZTsKK+aVsuaTiiA+IHBvdW5kOwor5YyG5b+ZID4gaGFzdHk7Civmr5vlt74gPiB0b3dlbDsKK+iKs+mmmSA+IGJhbG15Owor5bm057SaID4gZ3JhZGU7CivlvI/mqKMgPiBzdHlsZTsKK+ilr+ihqyA+IHNoaXJ0Owor6KWv6KGjID4gc2hpcnQ7CivljbDliLcgPiBwcmludDsKK+aVo+aWhyA+IHByb3NlOwor6Kmm5qijID4gc3R5bGU7Civlhajpg6ggPiB3aG9sZTsKK+efreaaqyA+IHNob3J0Owor6KW/6JePID4gdGliZXQ7Civli5XmkJYgPiB3YXZlcjsKK+eHg+aUviA+IGxpZ2h0Owor54Gr6LuKID4gdHJhaW47Civlt6Xos4cgPiB3YWdlczsKK+WLh+aVoiA+IGJyYXZlOwor5q275p2/ID4gcmlnaWQ7Civnn5vmn4QgPiBzaGFmdDsKK+mVt+mHmCA+IHNwaWtlOwor5q2l5qeNID4gcmlmbGU7CivliLvnl5UgPiBub3RjaDsKK+WEqumbhSA+IGdyYWNlOwor6YG45rCRID4gdm90ZXI7CivprZTprLwgPiBkZXZpbDsKK+aWsOWomCA+IGJyaWRlOwor5aS+5a2QID4gY3JhbXA7CivorKDlgrMgPiBydW1vcjsKK+aWsOWlhyA+IG5vdmVsOwor5aCx562UID4gcmVwYXk7CivnhaTmuKMgPiBzbGFjazsKK+mCiuahhiA+IGZyYW1lOwor6Iqx6ZaLID4gYmxvb207CivniankuLsgPiBvd25lcjsKK+W9iOW8kyA+IHNsaW5nOwor5aCx56qpID4gYnJvb2Q7Civmk7rmuKEgPiBmZXJyeTsKK+mbu+W9sSA+IG1vdmllOwor5pG457SiID4gZ3JvcGU7CivprLzprYIgPiBnaG9zdDsKK+mAn+eOhyA+IHNwZWVkOwor56C05aOeID4gd3JlY2s7CivntITojqsgPiBhYm91dDsKK+WjgeaetiA+IGxlZGdlOwor6ZqO5q61ID4gc3RhZ2U7CivlpKLlr5AgPiBkcmVhbTsKK+W7tuacnyA+IGRlbGF5Owor5Y2B5YiGID4gZnVsbHk7Civli57lt6UgPiBsYWJvcjsKK+WcmOmrlCA+IGdyb3VwOwor5Zyw6Z2iID4gZmxvb3I7Civoq7fliLogPiBpcm9ueTsKK+eZveiyuyA+IHdhc3RlOwor6YGL5rKzID4gY2FuYWw7Civlhavop5IgPiBhbmlzZTsKK+mZsOa2vCA+IHNoYWR5Owor5pOm5rSXID4gc2NvdXI7CivnhrHlv7EgPiBhcmRvcjsKK+mYv+eJhyA+IG9waXVtOwor54SZ54eSID4gcm9hc3Q7CivlpbPkurogPiB3b21hbjsKK+e2oOa0siA+IG9hc2lzOwor6Ki85piOID4gcHJvdmU7Civnm7jnrYkgPiBlcXVhbDsKK+WEn+mChCA+IHJlcGF5Owor5q+S5ZOBID4gZHJ1Z3M7Civlm7rpq5QgPiBzb2xpZDsKK+imj+eoiyA+IHJ1bGVzOwor55u056uLID4gZXJlY3Q7Civlg6fpmaIgPiBhYmJleTsKK+iovOaTmiA+IHByb29mOwor5o6o6YG4ID4gZWxlY3Q7Civmr5vliLcgPiBicnVzaDsKK+msjemsmiA+IGJlYXJkOwor5o6o6YCyID4gaW1wZWw7Civpl5znr4AgPiBqb2ludDsKK+WDuemMoiA+IHByaWNlOwor5YiH54mHID4gc2xpY2U7CivoiabpmoogPiBmbGVldDsKK+W8t+WkpyA+IGxhcmdlOwor55yf55CGID4gdHJ1dGg7Civmr5TliIYgPiBzY29yZTsKK+aTseadvyA+IHNoZWxmOwor5Ymb5p6cID4gY29uZ287CivliarmlrcgPiBzaGVhcjsKK+eBq+iKsSA+IHNwYXJrOwor5b2x5YOPID4gaW1hZ2U7Civnm5znq4ogPiBzdGVhbDsKK+aomeiZnyA+IGdyYWRlOwor6L+35r+bID4gbWlzdHk7CivnnaHmpIUgPiBjb3VjaDsKK+WKoOWvrCA+IHdpZGVuOwor6ZyH5YuVID4gc2hha2U7Civoqqrlh7ogPiB1dHRlcjsKK+ioiOaVuCA+IGNvdW50Owor5r6z6ZaAID4gYW9tZW47Civmjqjoq5YgPiBpbmZlcjsKK+ezoueziiA+IGZvZ2d5Owor5q+P5LiAID4gZXZlcnk7Civli6LlipsgPiBwb3dlcjsKK+e3nuW4gyA+IHNhdGluOwor5YuV5ZCRID4gdHJlbmQ7CivlpKnkvb8gPiBhbmdlbDsKK+ikkOiJsiA+IGJyb3duOwor6ayG6ZaLID4gbG9vc2U7Civmq7jmnKggPiBiZWVjaDsKK+mDqOS7tiA+IHBhcnRzOwor54OY54OkID4gcm9hc3Q7Civou4zpgZMgPiBvcmJpdDsKK+mWg+iAgCA+IGdsaW50Owor6Iet6bysID4gc2t1bms7CivlhLLol48gPiBzdG9yZTsKK+aTpuaLrSA+IGNsZWFuOwor55a+6aKoID4gYmxhc3Q7CivmlKTlrZAgPiBib290aDsKK+Wkp+S6uiA+IGFkdWx0Owor5Yqf5aSrID4gc2tpbGw7Civli5XlipsgPiBwb3dlcjsKK+ebuOeJhyA+IGltYWdlOwor6auS6auSID4gZGlydHk7Civnh5nlgrcgPiBzY2FsZDsKK+Wdh+ihoSA+IGVxdWFsOwor5Ye65rKSID4gaGF1bnQ7CivpgZPlvrcgPiBtb3JhbDsKK+inuOaRuCA+IHRvdWNoOwor55m86IGyID4gdm9jYWw7CivplbfogIEgPiBlbGRlcjsKK+aoueexrCA+IGhlZGdlOwor5YW456+EID4gbW9kZWw7Civpm4blnJggPiBncm91cDsKK+aVtOWAiyA+IHdob2xlOwor5bid546LID4gcmVnYWw7CivlvLflhYkgPiBnbGFyZTsKK+eblOeUsiA+IGFybW9yOwor6LuM6LehID4gbG9jdXM7Civou4zot50gPiBnYXVnZTsKK+ijnOiXpSA+IHRvbmljOwor5q245ZKOID4gYmxhbWU7CivmlbXkurogPiBlbmVteTsKK+W5veaalyA+IGdsb29tOwor5pOU5oeuID4gd29ycnk7Civmpq7orb0gPiBob25vcjsKK+mtlOihkyA+IG1hZ2ljOwor54Wn5bCEID4gc2hpbmU7CivmkJfnoo4gPiBzbWFzaDsKK+aquOaqrCA+IGxlbW9uOwor6ZaL56uvID4gc3RhcnQ7CivmqKHns4ogPiB2YWd1ZTsKK+mbnuWGoCA+IGNyZXN0Owor5YWJ57qWID4gbGlnaHQ7Civpm5XliLsgPiBjYXJ2ZTsKK+mqr+mrkiA+IGRpcnR5Owor5YiH5pybID4gY3JhdmU7CivoqZvlkpIgPiBjdXJzZTsKK+aomeexpCA+IGxhYmVsOwor54S25b6MID4gYWZ0ZXI7CivpgqPlhZIgPiB0aGVyZTsKK+mVt+esmyA+IGZsdXRlOwor57K+56WeID4gdmlnb3I7CivlnJbooaggPiBjaGFydDsKK+i9ieenuyA+IHNoaWZ0Owor5YWS56ulID4gY2hpbGQ7CivlnI3oo5kgPiBhcHJvbjsKK+aOqOiIiSA+IGVsZWN0Owor5YGc6aCTID4gcGF1c2U7Civnspfns5kgPiBjcnVkZTsKK+WJquWgsSA+IHNjcmFwOwor6auu6L6uID4gYnJhaWQ7CivmrbvkuqEgPiBkZWF0aDsKK+imj+aooSA+IHNjYWxlOwor6YCf5bqmID4gc3BlZWQ7CivpgqPkupsgPiB0aG9zZTsKK+euremgrSA+IGFycm93Owor6ZuE5YGJID4gZ3JhbmQ7Civovqbms5UgPiBtZWFuczsKK+eCuuatoiA+IHVudGlsOwor5Zq06YeNID4gZ3JhdmU7CivoiLnosqggPiBjYXJnbzsKK+mVt+efmyA+IGxhbmNlOwor5q2M5YqHID4gb3BlcmE7Civpq5jpgaAgPiBsb2Z0eTsKK+WHoeaYryA+IGV2ZXJ5Owor54OP5pyoID4gZWJvbnk7CivoiJ7ouYggPiBkYW5jZTsKK+eyieethiA+IGNoYWxrOwor57WV5oqAID4gc3R1bnQ7Civoh4npoLAgPiBjaGVlazsKK+eZveeZoSA+IGlkaW90Owor5o6I6IiHID4gZ3JhbnQ7Civop5LluqYgPiBhbmdsZTsKK+eZvOeXhSA+IG9uc2V0Owor5Z+65pysID4gYmFzaWM7CivngavnhLAgPiBibGF6ZTsKK+WIpOWumiA+IGp1ZGdlOwor5o6i57SiID4gcXVlc3Q7Civoo4LnuKsgPiBjcmFjazsKK+eBq+eCrCA+IHRvcmNoOwor5aGr5aGeID4gc3R1ZmY7CivmkrDlr6sgPiB3cml0ZTsKK+ezlua8vyA+IHN5cnVwOwor57KJ56KOID4gY3Jhc2g7Civpmb3lj7AgPiBwb3JjaDsKK+aTuuWLlSA+IHN3aW5nOwor5oq86Z+7ID4gcmh5bWU7Civlnovni4AgPiBzaGFwZTsKK+iIiei1tyA+IGhlYXZlOwor5Ymy5YK3ID4gc2xhc2g7CivpgJnlpKkgPiB0b2RheTsKK+exrOeshiA+IGZlbmNlOwor5qau6ICAID4gaG9ub3I7CivpgY/liLYgPiBjaGVjazsKK+eZvOeLgiA+IGNyYXp5Owor5Yil5aKFID4gdmlsbGE7CivlsrjpgoogPiBzaG9yZTsKK+WwvOm+jSA+IG55bG9uOwor6ZqK5LyNID4gcmFua3M7CivliIDlrZAgPiBrbmlmZTsKK+W5heW6piA+IHdpZHRoOwor5qmh5pyoID4gb2FrZW47Civnsr7mtrIgPiBzZW1lbjsKK+W6iuWWriA+IHNoZWV0Owor6Iqx55OjID4gcGV0YWw7CivliYPliIAgPiByYXpvcjsKK+WHs+WtkCA+IHN0b29sOwor6Ia96YePID4gbmVydmU7CivpgKDlj40gPiByZWJlbDsKK+iok+S7pCA+IG9yZGVyOwor5YaN5pyDID4gYWRpZXU7CivmqrPlrZAgPiBiaW56aTsKK+i4tOi6jSA+IGVhZ2VyOwor5YWp5qyhID4gdHdpY2U7Civkv67po74gPiBhZG9ybjsKK+aPo+a4rCA+IGd1ZXNzOwor57Si5byVID4gaW5kZXg7Civlg7XnoawgPiBzdGFyazsKK+WCs+iBniA+IHJ1bW9yOwor6Ieq6KqHID4gYm9hc3Q7CivmkZjlvJUgPiBxdW90ZTsKK+W3peacgyA+IHVuaW9uOwor57OW5p6cID4gY2FuZHk7Civoo4Lnl5UgPiBjaGFzbTsKK+eBq+aftCA+IG1hdGNoOwor57Sw5bCPID4gcGV0dHk7CivmrITkvY0gPiBmZW5jZTsKK+mphemZpCA+IHJlcGVsOwor5qi55p6XID4gd29vZHM7CivlsI/puqUgPiB3aGVhdDsKK+a9m+ihjCA+IHNuZWFrOwor5Z6C5q27ID4gZHlpbmc7CivmqLrmnKggPiBiaXJjaDsKK+mAkOWHuiA+IGV4cGVsOwor5beo5pOYID4gdGh1bWI7CivntJfluIMgPiBnYXV6ZTsKK+W5s+WOnyA+IGZpZWxkOwor5YWs5pyDID4gZ3VpbGQ7CivnlLDph44gPiBmaWVsZDsKK+a/q+eUqCA+IGFidXNlOwor6ZW35qSFID4gYmVuY2g7Civpq5joiIggPiBoYXBweTsKK+aQk+aPiSA+IGtuZWFkOwor6ZW35qKdID4gc3RyaXA7CivpgJnkupsgPiB0aGVzZTsKK+W6h+S9kSA+IGJsZXNzOwor5YGH6KOdID4gZmVpZ247Civovq7lrZAgPiBwbGFpdDsKK+mZjeS4iyA+IGxvd2VyOwor5qiT5qKvID4gc3RhaXI7Civpq5jogbMgPiBlcmVjdDsKK+mrmOiBsiA+IGFsb3VkOwor5bCK6a2aID4gdHJvdXQ7CivooYDogokgPiBmbGVzaDsKK+ebm+WutCA+IGZlYXN0Owor5Zue562UID4gcmVwbHk7CivnsKHnn60gPiBicmllZjsKK+WbpOepjSA+IGhvYXJkOwor6ae/6aasID4gc3RlZWQ7Civmpq7njbIgPiBwcml6ZTsKK+ilquWtkCA+IHNvY2tzOwor6J2Z6a2aID4gYnJlYW07CivloLHlhJ8gPiByZXBheTsKK+WCs+elniA+IHZpdmlkOwor6Imy54u8ID4gc2F0eXI7CivmjqLmuKwgPiBwcm9iZTsKK+i9ieaSrSA+IHJlbGF5Owor5om56YePID4gYmF0Y2g7Civpp7Hpp50gPiBjYW1lbDsKK+WclueJhyA+IGltYWdlOwor5Yag5a2QID4gY3Jlc3Q7CivohbDpg6ggPiB3YWlzdDsKK+earuW4tiA+IHN0cmFwOwor57KX5pq0ID4gcm91Z2g7CivmkpLkvYYgPiBzYXRhbjsKK+Wwj+mbniA+IGNoaWNrOwor5Yaw5aGUID4gc2VyYWM7CivnrKjph40gPiBoZWF2eTsKK+i8leafkyA+IHRpbmdlOwor5YWn5b+DID4gaGVhcnQ7CivohbPouJ0gPiBhbmtsZTsKK+aOkuawtCA+IGRyYWluOwor5oub6Ie0ID4gaW5jdXI7CivmoJfpvKAgPiBidW5ueTsKK+aJkumHmCA+IGNyYW1wOwor55u05YiwID4gdW50aWw7Civlt6vlqYYgPiB3aXRjaDsKK+aPtOW8lSA+IHF1b3RlOwor562U6KmeID4gcmVwbHk7CivlsJbpirMgPiBzaGFycDsKK+mWgOW7iiA+IHN0b29wOwor5YG356uKID4gc3RlYWw7Civmp5Pmob8gPiBsZXZlcjsKK+WFtuWugyA+IG90aGVyOwor562U6KaGID4gcmVwbHk7Civng5jkub4gPiBwYXJjaDsKK+WFrOWwuiA+IG1ldGVyOwor5Zmq6IGyID4gbm9pc2U7Civnm47lj7ggPiBvdW5jZTsKK+mojui7iiA+IGN5Y2xlOwor5YO55qC8ID4gcHJpY2U7Civnsr7lrZAgPiBzcGVybTsKK+WcsOadvyA+IGZsb29yOwor5YeM5LqCID4gY2hhb3M7Civkv5roqp4gPiBzbGFuZzsKK+e0heWIqSA+IGJvbnVzOwor6ZaL5aeLID4gYmVnaW47CivmjqHmkZggPiBwbHVjazsKK+Wfg+WPiiA+IGVneXB0Owor5a+C6Z2cID4gcXVpZXQ7CivnrKboqJggPiB0b2tlbjsKK+WWqumQmCA+IGtuZWxsOwor6IS56LW3ID4gYnVsZ2U7Civog4zpqqggPiBzcGluZTsKK+W3puWPsyA+IGFib3V0Owor5YWs5Zm4ID4gdG9ubmU7Civmjozmj6EgPiBncmFzcDsKK+eUn+iLlCA+IG1vc3N5Owor5pCW5YuVID4gc2hha2U7CivovKrlrZAgPiB3aGVlbDsKK+momeihkyA+IHRyaWNrOwor5omT6KO9ID4gZm9yZ2U7CivlsI/oqqogPiBub3ZlbDsKK+iFkOidlSA+IHJ1c3R5Owor6ZaJ5ZCIID4gY2xvc2U7Civpp5Xou4ogPiBkcml2ZTsKK+a7keiQvSA+IHNsaWRlOwor5YWt5Y2BID4gc2l4dHk7CivlhazljYcgPiBsaXRlcjsKK+S8vOmbqiA+IHNub3d5Owor6IO46YOoID4gY2hlc3Q7Civnl4Xmr5IgPiB2aXJ1czsKK+aKgOiDvSA+IHNraWxsOwor5o6o5bSHID4gdmFsdWU7CivlsI/ooosgPiBwb3VjaDsKK+eBq+WFkiA+IGFuZ3J5Owor6KGX5q61ID4gYmxvY2s7Civot6/nt5ogPiByb3V0ZTsKK+W3qOS6uiA+IGdpYW50Owor6KOZ5a2QID4gc2tpcnQ7CivmipPnt4ogPiBncmFzcDsKK+ihgOa2siA+IGJsb29kOwor5a6J6Z2cID4gcXVpZXQ7CivmiYvol50gPiBjcmFmdDsKK+mmrOmBlCA+IG1vdG9yOwor6ZaD5YWJID4gZmxhc2g7Civlhbbku5YgPiBvdGhlcjsKK+Wbm+aciCA+IGFwcmlsOwor5YW25LitID4gYW1vbmc7CivmpZPmqLkgPiBtYXBsZTsKK+eriuiziiA+IHRoaWVmOwor5ruR57+UID4gZ2xpZGU7CivmjoPluJogPiBicm9vbTsKK+ihsOaVlyA+IGRlY2F5Owor6Iub5Yi7ID4gaGFyc2g7CivpkLXnoKcgPiBhbnZpbDsKK+aNleaNiSA+IGNhdGNoOwor56m66ZaTID4gc3BhY2U7CivnmbzlhYkgPiBzaGluZTsKK+aOoOWlqiA+IGhhcnJ5Owor5a+f6Ka6ID4gYXdhcmU7CivlsYvnsLcgPiBlYXZlczsKK+agvOiogCA+IG1heGltOwor55Oj6IacID4gdmFsdmU7CivmjqHloLQgPiBzbG9wZTsKK+iInuacgyA+IGRhbmNlOwor5ZyN5be+ID4gc2NhcmY7Civlr5PoqIAgPiBmYWJsZTsKK+aJi+iFlSA+IHNraWxsOwor6KKr5a2QID4gcXVpbHQ7CivlsI/oiIwgPiB1dnVsYTsKK+Wwsee3kiA+IHJlYWR5Owor6LuA5bm5ID4gdHJ1bms7Civou4DlubIgPiB0cnVuazsKK+eZvOS6riA+IHNoaW5lOwor5omL6IKYID4gZWxib3c7Civoo5zlk4EgPiB0b25pYzsKK+Wuoui7iiA+IGNvYWNoOwor6Im+5aesID4gYWdnaWU7CivlnKjlpJYgPiBvdXRlcjsKK+W0h+aLnCA+IGFkb3JlOwor5YWF5Lu9ID4gYW1wbGU7Civpq5jmmI4gPiBzbWFydDsKK+a8sua7vyA+IHN3ZWxsOwor55eb5oGoID4gYWJob3I7CivogbLpn7MgPiB2b2ljZTsKK+eXm+W/qyA+IGpvbGx5Owor5o6l5ZCIID4gam9pbnQ7CivlnJ/loIYgPiBtb3VuZDsKK+aIsuiAjSA+IHRlYXNlOwor56iu6aGeID4gY2xhc3M7CivnlLfniLUgPiBiYXJvbjsKK+WbuuWumiA+IGZpeGVkOwor5bCW57SwID4gdGFwZXI7CivlnYfliIYgPiBzcGxpdDsKK+iKseS/jyA+IGZhbmN5Owor6LWr6IyyID4gaGVydHo7Civnrq3mob8gPiBzaGFmdDsKK+WcjeWfjiA+IHNpZWdlOwor5YKy5bK4ID4gcHJvdWQ7Civoh7TmlawgPiBncmVldDsKK+i7jeWcmCA+IGNvcnBzOwor6ayN5a2QID4gYmVhcmQ7CivmjpLliJcgPiBhcnJheTsKK+S/j+eariA+IHNhdWN5Owor6Iie5byKID4gZnJhdWQ7CivppIXppIwgPiBjYWtlczsKK+ijnOS4gSA+IHBhdGNoOwor6aeB6Ii5ID4gYmFyZ2U7CivonILonJwgPiBob25leTsKK+a8v+aenCA+IGJlcnJ5Owor6a2F5YqbID4gY2hhcm07Civog7johpsgPiBjaGVzdDsKK+a8gua4uCA+IGRyaWZ0Owor5YO55YC8ID4gdmFsdWU7CivmvZHmjokgPiBzcGlsbDsKK+iIiOW7uiA+IGJ1aWxkOwor6LOH6YeRID4gZnVuZHM7Civmu7Lmup0gPiBzZXdlcjsKK+iDreiEgiA+IHJvdWdlOwor6Ieq5oiRID4gc2VsZlwtOwor6Yyv6KqkID4gZXJyb3I7CivmnpzphZIgPiBjaWRlcjsKK+aNt+WFiyA+IGN6ZWNoOwor55So5rOVID4gdXNhZ2U7Civnr6nlrZAgPiBzaWV2ZTsKK+WcluWDjyA+IGltYWdlOwor5a2Y6LKoID4gc3RvY2s7Civpq5jlsJogPiBub2JseTsKK+WcqOS4iyA+IHVuZGVyOwor5ouN5pOKID4gc21hY2s7Civlmq7lsI4gPiBndWlkZTsKK+WCvuWQkSA+IHRyZW5kOwor55Sf5rCjID4gYW5ncnk7CivlgY/mhJsgPiBmYXZvcjsKK+Wus+e+niA+IGJsdXNoOwor6J2454mbID4gc25haWw7CivllYbomZ8gPiBzdG9yZTsKK+mMouiiiyA+IHB1cnNlOwor5r+A5YWJID4gbGFzZXI7Civlronoj68gPiBhbndhcjsKK+WzreWjgSA+IGNsaWZmOwor5o2Q5YqpID4gb2ZmZXI7Civmi4fmjIcgPiB0aHVtYjsKK+aLguaOgyA+IHdoaXNrOwor6Ii55Y+qID4gc2hpcHM7Civoh7rlrZAgPiB0YWJsZTsKK+acnemuriA+IGtvcmVhOwor5Zub5Y2BID4gZm9ydHk7Civmir3miZMgPiBzdHJhcDsKK+aDoemtlCA+IGRlbW9uOwor5pys6aCYID4gc2tpbGw7Civmo7Lmga8gPiBwZXJjaDsKK+a1gemrlCA+IGZsdWlkOwor5L6d54S2ID4gc3RpbGw7Civogp3oh58gPiBsaXZlcjsKK+evhOWcjSA+IHJhbmdlOwor5Zau542oID4gYWxvbmU7Civkv67mlLkgPiBhbWVuZDsKK+akheWtkCA+IGNoYWlyOwor5pyJ6aKoID4gd2luZHk7Civmiormj6EgPiBncmFzcDsKK+Wwj+aysyA+IGJyb29rOwor5qWt5Li7ID4gb3duZXI7CivpqZrmhYwgPiBwYW5pYzsKK+WBieWkpyA+IGdyZWF0Owor5Li76aGMID4gdGhlbWU7Civlk6roo6EgPiB3aGVyZTsKK+etlOaHiSA+IHJlcGx5Owor5LiA6bueID4gYVwtYml0Owor5a2457SaID4gY2xhc3M7CivnlbblnLAgPiBsb2NhbDsKK+eou+iNiSA+IHN0cmF3Owor5p2x6KW/ID4gdGhpbmc7CivlgInluqsgPiBkZXBvdDsKK+S8iue0oiA+IGFlc29wOwor5bGx5bSWID4gY2xpZmY7CivnrJHmnpcgPiBodW1vcjsKK+WYtOW3tCA+IG1vdXRoOwor6ZCz5bCEID4gbGFzZXI7Civmo5rlrZAgPiBzaGFjazsKK+WQtemspyA+IG5vaXN5Owor55S35a2QID4gYVwtbWFuOwor6IKh56WoID4gc2hhcmU7Civmo5LlrZAgPiBzdGljazsKK+aMh+S7pCA+IG9yZGVyOwor6IKl56KpID4gc3RvdXQ7Civpu4PpioUgPiBicmFzczsKK+ajjeWtkCA+IHN0aWNrOwor6Ie05L2/ID4gY2F1c2U7CivmioDlt6cgPiBza2lsbDsKK+enmOiooyA+IHRyaWNrOwor5ou05L2PID4gaGl0Y2g7CivkuIvpnaIgPiBiZWxvdzsKK+igouS6iyA+IGZvbGx5Owor5oSa6KCiID4gc2lsbHk7CivmiorlroggPiBndWFyZDsKK+S4i+mbqCA+IHJhaW55Owor6ama5aWHID4gYW1hemU7Civoh6XkvY0gPiBiZXJ0aDsKK+WZtOWHuiA+IHNwb3V0Owor6aKo6LajID4gaHVtb3I7CivlsLrluqYgPiBzY2FsZTsKK+WwhOaTiiA+IHNob290Owor6LOE57WhID4gYnJpYmU7CivlsYvlrZAgPiBob3VzZTsKK+iyrOe9tSA+IHNjb2xkOwor6IWx5a2QID4gc2luZXc7Civmm7TpgbIgPiBsYXRlcjsKK+m7keiygiA+IHNhYmxlOwor55W25LitID4gYW1vbmc7CivllqzmnKggPiBhcmJvcjsKK+iAgeiZjiA+IHRpZ2VyOwor5rKZ6b6NID4gc2Fsb247Civkv53lp4YgPiBuYW5ueTsKK+Wwj+W+kSA+IGFsbGV5Owor6aiZ5bGAID4gZnJhdWQ7CivlsI3lvoUgPiB0cmVhdDsKK+aLieS4gSA+IGxhdGluOwor55Cl54+AID4gYW1iZXI7CivmnIPoq4cgPiB0YWxrczsKK+iEiOaQjyA+IHB1bHNlOwor55Si5ZOBID4gZ29vZHM7CivlsIvluLggPiB1c3VhbDsKK+acjeijnSA+IGRyZXNzOwor6YeR6auuID4gYmxvbmQ7CivmiLLlvIQgPiBjYXBlcjsKK+a1quiKsSA+IHNwcmF5Owor5bCP5bGLID4gY2FiaW47CivmuIXmvZQgPiBjbGVhbjsKK+aIv+WxiyA+IGhvdXNlOwor5ZiO5ZiOID4gcXVhY2s7CivnlJ/li5UgPiB2aXZpZDsKK+S4i+i3qiA+IGtuZWVsOwor5bCP5a2pID4gY2hpbGQ7CivmuIXmua8gPiBicm90aDsKK+S+v+WjqyA+IHBlbm55Owor5oi/5a2QID4gaG91c2U7CivogLbnqYwgPiBqZXN1czsKK+mLvOeQtCA+IHBpYW5vOwor6aiO5aOrID4gcmlkZXI7Civpj4jlrZAgPiBjaGFpbjsKK+aJi+WllyA+IGdsb3ZlOwor55S35Lq6ID4gYVwtbWFuOwor6Lef5YmNID4gZnJvbnQ7Civkv67liaogPiBwcnVuZTsKK+WvrOW6piA+IHdpZHRoOwor6aaZ5paZID4gc3BpY2U7CivkvLrmnI0gPiBzZXJ2bzsKK+a7i+WRsyA+IHRhc3RlOwor56ef57SEID4gbGVhc2U7CivlsJbloZQgPiBzcGlyZTsKK+WXtuWYsCA+IHNlcmdlOwor5rGh6bueID4gc3RhaW47Civms5Xpg44gPiBmcmFuYzsKK+a0u+iRlyA+IGFsaXZlOwor5Zac5oKFID4gaGFwcHk7CivmiJDlubQgPiBhZHVsdDsKK+iChea4hSA+IHB1cmdlOwor57+x57+UID4gaG92ZXI7CivlrZ/mtaogPiBoYXN0eTsKK+m7keiJsiA+IGJsYWNrOwor5re55rKSID4gZmx1c2g7Civnp5Xns6AgPiBjaGFmZjsKK+esrOWNgSA+IHRlbnRoOwor5ZOB56iuID4gYnJlZWQ7CivmmYLpq6YgPiB2b2d1ZTsKK+aJk+WRvCA+IHNub3JlOwor5qGM5a2QID4gdGFibGU7Civku43nhLYgPiBzdGlsbDsKK+a4healmiA+IGNsZWFyOwor6aSY54e8ID4gZW1iZXI7CivnrKzlha0gPiBzaXh0aDsKK+mMpuaomSA+IHByaXplOwor542o6IeqID4gYWxvbmU7Civnvr3ojpYgPiBxdWlsbDsKK+ahg+WtkCA+IHBlYWNoOwor5bCB5ZywID4gbWFub3I7Civkv6Hku7sgPiB0cnVzdDsKK+S9nOW8iiA+IGZyYXVkOwor6aGM6KejID4gbm90ZXM7Civkv53kvZEgPiBibGVzczsKK+iyqOeJqSA+IGdvb2RzOwor5a+h5ammID4gd2lkb3c7Civpo7LnlKggPiBkcmluazsKK+S4gOihjCA+IHBhcnR5Owor6Lao5YuiID4gdHJlbmQ7Civni7not68gPiBnb3JnZTsKK+Wwj+WQgyA+IHNuYWNrOwor54+K55GaID4gY29yYWw7Civnj43nj6AgPiBwZWFybDsKK+aHuOWyqSA+IGNsaWZmOwor6by754WZID4gc251ZmY7CivmtIvolKUgPiBvbmlvbjsKK+i2o+WKhyA+IGZhcmNlOwor5L2O5buJID4gY2hlYXA7Civlk4Dnl5sgPiBncmllZjsKK+esrOS6lCA+IGZpZnRoOwor56ys5LmdID4gbmludGg7CivnrKzkuIkgPiB0aGlyZDsKK+esrOS4gCA+IGZpcnN0Owor546755KDID4gZ2xhc3M7CivnqpLmga8gPiBjaG9rZTsKK+aciee3miA+IHdpcmVkOwor5p2/5ruvID4gc3RpZmY7CivmiZPku5cgPiBmaWdodDsKK+aIsuWKhyA+IGRyYW1hOwor5rKJ6YeNID4gaGVhdnk7Civmsojph40gPiBoZWF2eTsKK+acgOe1giA+IGZpbmFsOwor572q6KGMID4gY3JpbWU7CivnvanooasgPiBzbW9jazsKK+S9oOWlvSA+IGhlbGxvOwor5L2N5a2QID4gcGxhY2U7Civms6LolakgPiBoZWF2ZTsKK+i1sOWQkSA+IHRyZW5kOwor6bq157KJID4gZmxvdXI7CivlppbprZQgPiBkZW1vbjsKK+eOh+ebtCA+IGZyYW5rOwor5piO6aGvID4gY2xlYXI7CivpoY/oibIgPiBjb2xvcjsKK+Wwj+S4kSA+IGNsb3duOwor5pmv6LGhID4gc2NlbmU7Civni6HoqZAgPiBjcmFmdDsKK+aGpOaAkiA+IGFuZ3J5Owor6LKd5q68ID4gc2hlbGw7Civkvo3lgJkgPiBzZXJ2ZTsKK+ixoeeJmSA+IGl2b3J5Owor5ZWG5bqXID4gc3RvcmU7Civllp3lj7EgPiBjaGlkZTsKK+a1t+eBmCA+IGJlYWNoOwor55C05bymID4gY2hvcmQ7CivnjY7nq6AgPiBtZWRhbDsKK+WtkOaIvyA+IG92YXJ5Owor6JK86be6ID4gaGVyb247CivotablhY0gPiByZW1pdDsKK+S7iuaXpSA+IHRvZGF5Owor5pyo54mIID4gcGxhbms7CivnpZ7ntpMgPiBuZXJ2ZTsKK+aAquiqlSA+IGZyZWFrOwor56uZ5L2PID4gc3RhbmQ7Civmsr/okZcgPiBhbG9uZzsKK+S5vua3qCA+IGNsZWFuOwor5a+G5YiHID4gY2xvc2U7Civmt7HluqYgPiBkZXB0aDsKK+WNiOmkkCA+IGx1bmNoOwor5oiQ5Lq6ID4gYWR1bHQ7CivljYjpo68gPiBsdW5jaDsKK+a1t+a0iyA+IG9jZWFuOwor6IKa5a2QID4gYmVsbHk7CivnjbXniqwgPiBob3VuZDsKK+eQhuaDsyA+IGlkZWFsOwor6bWq6baJID4gcXVhaWw7Civku6XlvowgPiBhZnRlcjsKK+WtqeWtkCA+IGNoaWxkOwor6IC95pOxID4gdGFycnk7Civkuovmpa0gPiBjYXVzZTsKK+WtouWtkCA+IHNwb3JlOwor5peF6aSoID4gaG90ZWw7CivlpbTpmrggPiBzbGF2ZTsKK+WQiue5qSA+IHNsaW5nOwor6aas5L6GID4gbWFsYXk7CivppqzkvJUgPiBncm9vbTsKK+Wkp+m5vyA+IG1vb3NlOwor6IGW5b6SID4gc2FpbnQ7CivkuJbnlYwgPiB3b3JsZDsKK+a4oeWPoyA+IGZlcnJ5Owor5rib5Y67ID4gbWludXM7CivkurrmgKcgPiBodW1hbjsKK+aFiOaCsiA+IG1lcmN5Owor6Z+/6IGyID4gbm9pc2U7Civoq5bpoYwgPiB0b3BpYzsKK+WNoei7iiA+IHRydWNrOwor5a6i5Lq6ID4gZ3Vlc3Q7CivnvYznsp8gPiBwb3BweTsKK+mhr+eEtiA+IGNsZWFyOwor5paR6aasID4gemVicmE7Civmr43pn7MgPiB2b3dlbDsKK+S7meWlsyA+IGZhaXJ5Owor56ig5a+GID4gZGVuc2U7CivlpZfpkJggPiBjaGltZTsKK+WuiOWAmSA+IGFiaWRlOwor5rSX5r6hID4gYmF0aGU7Civmnb/lsqkgPiBzbGF0ZTsKK+isrOiqpCA+IGVycm9yOwor6aKo5qC8ID4gc3R5bGU7CivmtJfmu4wgPiByaW5zZTsKK+S4gOeJhyA+IHBpZWNlOwor6Yyi5YyFID4gcHVyc2U7CivpoK3nmq4gPiBzY2FscDsKK+adv+WtkCA+IGJvYXJkOwor5Y2R6LOkID4gbG93bHk7Civku4rlpKkgPiB0b2RheTsKK+aEm+aFlSA+IGFkb3JlOwor5oCd6ICDID4gdGhpbms7CivpoqjmmrQgPiBzdG9ybTsKK+WNh+i1tyA+IGhvaXN0Owor6JiL5p6cID4gYXBwbGU7Civosp3lr6cgPiBiZW5pbjsKK+isoOiogCA+IHJ1bW9yOwor5peL6L2JID4gd2hpcmw7Civlj5bnrJEgPiB0ZWFzZTsKK+awtOibrSA+IGxlZWNoOwor6Kqe6Z+zID4gdm9pY2U7CivlpL7piZcgPiB0b25nczsKK+aXpeiomCA+IGRpYXJ5Owor6aCS55m8ID4gaXNzdWU7CivkuYPmmK8gPiB0b1wtYmU7CivmlrDov5EgPiBuZXdseTsKK+WrjOaDoSA+IGFiaG9yOwor5aOB6b6VID4gbmljaGU7CivlkLjmsKMgPiBzbmlmZjsKK+iqmOmZtyA+IHNuYXJlOwor55+z6aCtID4gc3RvbmU7CivnjJzmuKwgPiBndWVzczsKK+S7o+WDuSA+IHByaWNlOwor5p2T5a2QID4gc2Nvb3A7CivmhJ/lrpggPiBzZW5zZTsKK+S4ieasoSA+IHRoaXJkOwor5pys5b2xID4gdW1icmE7Civkurrlk6EgPiBzdGFmZjsKK+S4gOasoSA+IGZpcnN0Owor57qM6KiCID4gcmVuZXc7Civmm7TmlLkgPiBhbHRlcjsKK+ejqOeijiA+IGdyaW5kOwor6K2m56ybID4gc2lyZW47Civnv5LmhaMgPiBoYWJpdDsKK+S7iuWFkiA+IHRvZGF5Owor5Lul5LiLID4gYmVsb3c7Civph47njbggPiBiZWFzdDsKK+WSjOW5syA+IHBlYWNlOwor5pS26aSKID4gYWRvcHQ7CivmgKrnlbAgPiB3ZWlyZDsKK+iyk+WSqiA+IGtpdHR5Owor5b+D6IefID4gaGVhcnQ7CivmsrzmvqQgPiBnbGFkZTsKK+axoeepoiA+IG5hc3R5Owor5LiJ5pyIID4gbWFyY2g7Civno4Xnp6QgPiBzY2FsZTsKK+WTquWFkiA+IHdoZXJlOwor5Lqk5Y+JID4gY3Jvc3M7CivosqzlgpkgPiBibGFtZTsKK+mbu+mDtSA+IGVtYWlsOwor5Lif5o6JID4gdGhyb3c7CivogZbkurogPiBzYWludDsKK+WLnemBjiA+IGV4Y2VsOwor5q6Y6YW3ID4gY3J1ZWw7Civlj5TniLYgPiB1bmNsZTsKK+itieeroCA+IGJhZGdlOwor5rW35ZywID4gaGFpdGk7CivmnIDlvowgPiBmaW5hbDsKK+ato+mdoiA+IGZyb250Owor6Zu36YGUID4gcmFkYXI7Civlk4HlkbMgPiB0YXN0ZTsKK+S4u+W5uSA+IHRydW5rOwor5aSx6KqkID4gbGFwc2U7CivniIboo4IgPiBidXJzdDsKK+mCiumamyA+IGxpbWl0Owor6aGP5paZID4gcGFpbnQ7Civni4LnhrEgPiBjcmF6ZTsKK+S6lOWNgSA+IGZpZnR5Owor56C06KOCID4gYnVyc3Q7CivmsrPmtYEgPiByaXZlcjsKK+aCsuaCvCA+IG1vdXJuOwor6Z2S6I2JID4gZ3Jhc3M7CivmnKjloYogPiBibG9jazsKK+S5meWkqiA+IGV0aGVyOwor6Yqz5YipID4gc2hhcnA7CivomZvlgb0gPiBmYWxzZTsKK+acrOWcsCA+IGxvY2FsOwor5p2x5LqsID4gdG9reW87Civmr5Lom4cgPiB2aXBlcjsKK+mgjOatjCA+IGNhcm9sOwor5ZKV5ZqVID4gZ3J1bnQ7CivmrL7poIUgPiBmdW5kczsKK+S4gOaJkyA+IGRvemVuOwor6Kmm6YeRID4gYXNzYXk7CivpoK3mmoggPiBkaXp6eTsKK+W+veeroCA+IGJhZGdlOwor5Yqb6YePID4gcG93ZXI7CivnhKbpu54gPiBmb2N1czsKK+mJi+WtkCA+IHBsYW5lOwor5piO55m9ID4gY2xlYXI7CivnjovlkI4gPiBxdWVlbjsKK+e6lue2rSA+IGZpYmVyOwor5LqL5Lu2ID4gZXZlbnQ7CivpgJfpu54gPiBjb21tYTsKK+m6peWtkCA+IHdoZWF0Owor5LiA5by1ID4gc2hlZXQ7Civlkoblk64gPiBncm93bDsKK+W+rueskSA+IHNtaWxlOwor56Kn55OmID4gZ3JlZW47CivmsLTnm4YgPiBiYXNpbjsKK+eFmemcpyA+IHNtb2tlOwor6YKP6LyvID4gbG9naWM7Civpn7PmqIIgPiBtdXNpYzsKK+abtOWjniA+IHdvcnNlOwor6YOo6JC9ID4gdHJpYmU7Civlu7bpgbIgPiBkZWxheTsKK+W5vem7mCA+IGh1bW9yOwor546L5YagID4gY3Jvd247CivpmbfpmLEgPiBzbmFyZTsKK+aWt+e1lSA+IHNldmVyOwor5Lit5ZyLID4gY2hpbmE7CivlpJrokYkgPiBsZWFmeTsKK+S4gOWxpCA+IGxheWVyOwor54e76IKJID4gYmFjb247CivlvJXoqLwgPiBxdW90ZTsKK+aToumZniA+IGV4YWx0Owor6YeN5pawID4gYWdhaW47CivlpKfohb8gPiB0aGlnaDsKK+Wkp+iFpiA+IGJyYWluOwor5pys5Lq6ID4gaVwtXChtZTsKK+elreWjhyA+IGFsdGFyOwor6Z+75paHID4gdmVyc2U7Civpgbrot6EgPiB0cmFjZTsKK+mCo+ijoSA+IHRoZXJlOwor54aK6LKTID4gcGFuZGE7CivmlpHnvpogPiBnb3JhbDsKK+mahumHjSA+IGdyYW5kOwor5b2O6IWwID4gc3Rvb3A7CivlqablpbMgPiB3b21hbjsKK+iRoeiQhCA+IGdyYXBlOwor576O5aW9ID4gaGFwcHk7CivoroDmm7ggPiBzdHVkeTsKK+eNjuWTgSA+IGF3YXJkOwor5pyA5YidID4gZmlyc3Q7CivmgZDmhYwgPiBwYW5pYzsKK+m6teWMhSA+IGJyZWFkOwor6aGN5aSWID4gZXh0cmE7Civpu4/kvY8gPiBjbGluZzsKK+S4gOWhiiA+IHBpZWNlOwor5Y+v5oCVID4gYXdmdWw7CivpgY7pgZMgPiBhaXNsZTsKK+axgea2siA+IGp1aWNlOwor56Sm5belID4gbWluZXI7CivmrYzorKAgPiBjaGFudDsKK+aymeaLiSA+IHNhbGFkOwor6bq15YWSID4gY292ZXI7Civmlpfnr7cgPiBjbG9hazsKK+S5i+S4iyA+IHVuZGVyOwor5pyI5Lu9ID4gbW9udGg7CivmsLTmupYgPiBsZXZlbDsKK+Wls+eOiyA+IHF1ZWVuOwor6Zub6I+KID4gZGFpc3k7Civnt6joo70gPiB3ZWF2ZTsKK+WMheepgCA+IG1haXplOwor5b+r5qiCID4gaGFwcHk7CivpgLzov6sgPiBmb3JjZTsKK+WmgueBqyA+IGZpZXJ5Owor5rOl5ZyfID4gZWFydGg7CivlqpLku4sgPiBtZWRpYTsKK+S4gOWQjCA+IGFsb25nOwor5aC06Z2iID4gc2NlbmU7Civlo4HomY4gPiBnZWNrbzsKK+aVmee+qSA+IGNyZWVkOwor5q+b55eFID4gZmF1bHQ7CivpoIHlsqkgPiBzaGFsZTsKK+mHkeWxrCA+IG1ldGFsOwor6K2J5piOID4gcHJvb2Y7Civljq3mg6EgPiBsb2F0aDsKK+aYj+aalyA+IGR1c2t5Owor5q+U546HID4gcmF0aW87CivlpbbmsrkgPiBjcmVhbTsKK+mcjuecvCA+IGJsaW5rOwor5rC05p6cID4gZnJ1aXQ7Civnn63nsKEgPiBicmllZjsKK+Wnv+WuuSA+IGxvb2tzOwor57aT6LK7ID4gZnVuZHM7CivoppbpoLsgPiB2aWRlbzsKK+mBiuihjCA+IG1hcmNoOwor5pm05aSpID4gc3Vubnk7Civph43lpKcgPiBncmVhdDsKK+W4tumgmCA+IGd1aWRlOwor6YCV6LehID4gdHJhY2s7CivniJDngbYgPiBzdG92ZTsKK+aZguW4uCA+IG9mdGVuOwor5by356GsID4gdG91Z2g7CivluLbpnLIgPiBkZXd5Owor5b2i54uAID4gZm9ybTsKK+iWhOWRvSA+IFwodXN1Owor5Yqf57i+ID4gZmVhdDsKK+iomOiZnyA+IHNlYWw7CivopovpnaIgPiBtZWV0Owor6YKK57ejID4gZWRnZTsKK+aatOS6giA+IHJpb3Q7CivniJvms6UgPiBvb3plOwor5pel5pyfID4gZGF0ZTsKK+WnqOWqvSA+IGF1bnQ7Civlub3osLcgPiBkZWxsOwor5Ya36Z2cID4gY2FsbTsKK+aVmeeahyA+IHBvcGU7CivlvrXmlLYgPiBsZXZ5Owor5ZCR5LiLID4gZG93bjsKK+mAn+ihjCA+IHJ1c2g7CivpgJnoo6EgPiBoZXJlOwor57y65Y+jID4gbmljazsKK+mBsue3qSA+IHNsb3c7CivmsI/ml48gPiBjbGFuOwor5Y6f5a2QID4gYXRvbTsKK+avm+awiCA+IGZlbHQ7CivlhrDpm7kgPiBoYWlsOwor6aCQ5YWGID4gb21lbjsKK+WnkeWqvSA+IGF1bnQ7CivmsaDlrZAgPiBwb25kOwor5aeR5aiYID4gZ2lybDsKK+WLu+a3qCA+IGV2ZW47CivmlrnmoYggPiBwbGFuOwor54uC5ZCgID4gaG93bDsKK+W/g+aDhSA+IG1vb2Q7Civph47lhZQgPiBoYXJlOwor6Z6t5a2QID4gd2hpcDsKK+WfuumHkSA+IGZ1bmQ7CivlprvlrZAgPiB3aWZlOwor5Y2K5ouJID4gaGFsZjsKK+mviemtmiA+IGNhcnA7Civnn7PniYcgPiBzbGFiOwor5b+F5b6XID4gbXVzdDsKK+WGsOmOriA+IGljZWQ7CivmsaDloZggPiBwb29sOwor54a+54axID4gZ2xvdzsKK+efs+eBsCA+IGxpbWU7Civnmq7pnq0gPiBsYXNoOwor5Ya36YW3ID4gZ3JpbTsKK+WlkeaTmiA+IGRlZWQ7CivnoazluaMgPiBjb2luOwor5Yed6KaWID4gZ2F6ZTsKK+aVmea0viA+IHNlY3Q7Civlhazpm54gPiBjb2NrOwor6KeS6ImyID4gcm9sZTsKK+e6luW6piA+IHNpemU7CivniYzlrZAgPiBzaWduOwor54mb5aW2ID4gbWlsazsKK+WlieaJvyA+IGZhd247CivmmYLlgJkgPiB0aW1lOwor6Iux6ZuEID4gaGVybzsKK+mWi+mXiiA+IHdpZGU7CivlvY7mm7IgPiBiZW5kOwor6Kqy5paHID4gdGV4dDsKK+mVt+mdtCA+IGJvb3Q7CivniaLlm7ogPiBmaXJtOwor55m+6Z2IID4gbGFyazsKK+aXl+WtkCA+IGZsYWc7CivlpbPlrakgPiBnaXJsOwor57qW5bCPID4gZmluZTsKK+W5tOiAgSA+IGFnZWQ7Civlt6bpgoogPiBsZWZ0Owor54mG5aOBID4gd2FsbDsKK+mAj+e0hSA+IHJvc3k7Civmlbjmk5ogPiBkYXRhOwor6Kmp5q2MID4gcG9lbTsKK+eFrueGnyA+IGJvaWw7Civnn7Pmnb8gPiBzbGFiOwor5aWz5aOrID4gbGFkeTsKK+W/jeWPlyA+IGJlYXI7Civlvq7lnosgPiB0aW55Owor6YKK5rK/ID4gZWRnZTsKK+iLsemHjCA+IG1pbGU7CivmqILpmoogPiBiYW5kOwor5rCj5ZGzID4gb2RvcjsKK+eEoeemriA+IHJ1ZGU7Civpg73luIIgPiBjaXR5Owor5Y2A5Z+fID4gYXJlYTsKK+ioiOeVqyA+IHBsYW47Civnh4PmlpkgPiBmdWVsOwor5b2i5byPID4gZm9ybTsKK+ilv+iWhCA+IGNha2U7Civmk5jnlasgPiBwbGFuOwor54Wk54GwID4gc29vdDsKK+mWi+i+piA+IG9wZW47CivmlbLmiZMgPiBiZWF0Owor6Zuq5pKsID4gc2xlZDsKK+W+iOWlvSA+IHdlbGw7CivpgajmuLggPiByb2FtOwor5aaC5ZCMID4gbGlrZTsKK+Wkp+W7syA+IGhhbGw7Civmr5LlrrMgPiBiYW5lOwor57mp5a2QID4gY29yZDsKK+e5geW/mSA+IGJ1c3k7CivntLDog54gPiBjZWxsOwor5Y2R5YqjID4gYmFzZTsKK+W+qeWOnyA+IGhlYWw7CivliKXnmoQgPiBlbHNlOwor5YWs6LGsID4gYm9hcjsKK+iqv+WtkCA+IHR1bmU7Civli7vlr6YgPiBldmVuOwor5b615YWGID4gb21lbjsKK+aPueiyoCA+IGJlYXI7CivplpLoq4cgPiBjaGF0Owor55y855yLID4gc29vbjsKK+i+m+iLpiA+IGhhcmQ7CivnmbHou58gPiBsaW1wOwor6Z2i5YW3ID4gbWFzazsKK+aSleegtCA+IHRlYXI7Civln4vokawgPiBidXJ5Owor5aSn5aiYID4gYXVudDsKK+atjOabsiA+IHNvbmc7CivlvKflvaIgPiBhcmNoOwor6Lyq6Lu4ID4gYXhsZTsKK+W4huiIuSA+IHNhaWw7CivljZHkuIsgPiBiYXNlOwor5qiZ6K2YID4gbWFyazsKK+W4s+evtyA+IHRlbnQ7CivnmKbplbcgPiBzbGltOwor6Iqx6YKKID4gbGFjZTsKK+Whq+a7vyA+IGNyYW07CivloYrni4AgPiBsdW1wOwor5qiZ6KqMID4gc2lnbjsKK+mbueWtkCA+IGhhaWw7Civoq77kup4gPiBub2FoOwor6KaP56ugID4gcnVsZTsKK+aomeiomCA+IHNpZ247CivlpJblpZcgPiBjb2F0Owor6ZW36KWqID4gaG9zZTsKK+WcmOmaiiA+IHRlYW07Civlvp7kuK0gPiBmcm9tOwor6ZW36KKNID4gZ293bjsKK+mbhOaApyA+IG1hbGU7Civnnavmr5sgPiBsYXNoOwor5by35aemID4gcmFwZTsKK+eFp+aWmSA+IHRlbmQ7CivmjqHpgpEgPiBmaWVmOwor5o6l6L+RID4gbmVhcjsKK+earuiGmiA+IHNraW47CivmjqDpgY4gPiBmbGl0Owor57ep5oWiID4gc2xvdzsKK+WfuuekjiA+IGJhc2U7CivntrLmnrYgPiByYWNrOwor6KaP55+pID4gcnVsZTsKK+eBsOiJsiA+IGdyYXk7CivntLDnnIsgPiBwZWVyOwor6YGy5oWiID4gc2xvdzsKK+ikquiJsiA+IGZhZGU7Civpganmh4kgPiBzdWl0Owor5pWX5aOeID4gcnVpbjsKK+mDqOWIhiA+IHBhcnQ7CivnnLzmt5ogPiB0ZWFyOwor6IuU6JiaID4gbW9zczsKK+W9ouWDjyA+IGZvcm07CivliZ3mjokgPiBwYXJlOwor6YO15Lu2ID4gbWFpbDsKK+atpeWtkCA+IHN0ZXA7Civov73msYIgPiBzZWVrOwor6KGo6ZyyID4gc2hvdzsKK+eekeaDsyA+IG11c2U7Civmk6bmjokgPiB3aXBlOwor6YGK5oiyID4gZ2FtZTsKK+evgOm7niA+IG5vZGU7CivlpKvkurogPiBsYWR5Owor5bua5birID4gY29vazsKK+aNsui7uCA+IHJlZWw7Civpq5jpo5sgPiBzb2FyOwor5pWj5Ye6ID4gc2hlZDsKK+W3oueptCA+IGxhaXI7CivpmL/mm7wgPiBvbWFuOwor5bug5a2QID4geWFyZDsKK+e0oueEtiA+IGR1bGw7CivliZvlvLcgPiBmaXJtOwor55yf5q2jID4gcmVhbDsKK+i6sumBvyA+IHNodW47Civlu5rlrZAgPiBjb29rOwor54ax5YqbID4gaGVhdDsKK+W7o+WkpyA+IHZhc3Q7Civps6XlmLQgPiBiZWFrOwor5Z+65rqWID4gZGF0YTsKK+ewveiovCA+IHZpc2E7Civps7Tlj6sgPiBob290Owor5aCF5rG6ID4gZmlybTsKK+ioseWkmiA+IG1hbnk7CivngbDnmb0gPiBncmV5Owor5pS25YmyID4gcmVhcDsKK+e2suWtlCA+IG1lc2g7Civmi7PpoK0gPiBmaXN0Owor5q2M5ZSxID4gc2luZzsKK+mbnOS6giA+IG1lc3M7Civlhrfmt6EgPiBjb2xkOwor6aqo6aCtID4gYm9uZTsKK+WJm+WlvSA+IGp1c3Q7Civlo4HliqkgPiBoZWxwOwor5o6J6JC9ID4gZmxvcDsKK+ipqeS6uiA+IGJhcmQ7CivokL3kuIsgPiBmYWxsOwor6KGo6LGhID4gaWRlYTsKK+mZteWikyA+IHRvbWI7CivoiJLpgakgPiBjb3p5Owor6Iux55WdID4gYWNyZTsKK+atpeS8kCA+IHBhY2U7CivmqpTmoYggPiBmaWxlOwor57C46JWpID4gcm9sbDsKK+W4tuaciSA+IGhhdmU7CivmrYzlhZIgPiBzb25nOwor5o6l57irID4gc2VhbTsKK+W5q+W/mSA+IGhlbHA7CivntZDmiJAgPiBmb3JtOwor6KGM6LWwID4gd2FsazsKK+WGsOaphyA+IHNsZWQ7CivlhazniZsgPiBidWxsOwor5Z+O5rGgID4gY2l0eTsKK+eyl+eggiA+IGdyaXQ7CivlhazniLUgPiBkdWtlOwor6KaB5pyJID4gbmVlZDsKK+iGs+mjnyA+IG1lYWw7CivourLol48gPiBoaWRlOwor6I+c5ZauID4gbWVudTsKK+apq+aokSA+IGJlYW07CivooZPoqp4gPiB0ZXJtOwor6YGy5LqGID4gbGF0ZTsKK+WJm+WLgSA+IGJvbGQ7CivooZrooZUgPiBsYW5lOwor6Im+57WoID4gbW94YTsKK+ioiOWKgyA+IHBsYW47CivmjInoqp4gPiBub3RlOwor55yf5a+mID4gdHJ1ZTsKK+eXm+iLpiA+IHBhaW47CivoirHnk7YgPiB2YXNlOwor5YW25qyhID4gbmV4dDsKK+apn+aZuiA+IHRhY3Q7Civlgr7ogb0gPiBoYXJrOwor5qOV6ZatID4gcGFsbTsKK+WFrOatoyA+IGp1c3Q7CivlubPlnaYgPiBmbGF0Owor6IeA6YOoID4gYnV0dDsKK+mQmOmgrSA+IGhvdXI7Civmk43liIcgPiByYXNoOwor5Z2m54S2ID4gY2FsbTsKK+imgeW+lyA+IGdvb2Q7CivngrjlvYggPiBib21iOwor5bqn5L2NID4gc2VhdDsKK+iKr+eJhyA+IGNoaXA7Civlm57ogbIgPiBlY2hvOwor6ZC16Yq5ID4gcnVzdDsKK+Wxi+mggiA+IHJvb2Y7CivloKHlo5ggPiBmb3J0Owor5YW35pyJID4gaGF2ZTsKK+mAmeWFkiA+IGhlcmU7Civop6Plh40gPiB0aGF3Owor55Sf6ZW3ID4gZ3JvdzsKK+WgheWumiA+IGZpcm07Civlt7TmjowgPiBwYWxtOwor55ii55eVID4gc2NhcjsKK+W4tuWtkCA+IGJhbmQ7Civplbfmp40gPiBwaWtlOwor5YWt5pyIID4ganVuZTsKK+mAmeWAiyA+IHRoaXM7CivploDmoJMgPiBib2x0Owor6KCV6J+yID4gd29ybTsKK+WDseeUqCA+IGhpcmU7CivlnJPnm6QgPiBkaXNrOwor5Zyw542EID4gaGVsbDsKK+mYv+WAkSA+IGFtZW47CivooJXomasgPiB3b3JtOwor55uk5a2QID4gdHJheTsKK+ethumMoiA+IGZ1bmQ7Civot6/pgoogPiBjdXJiOwor54GM5pyoID4gYnVzaDsKK+imluWcliA+IHZpZXc7CivmkofljrsgPiBza2ltOwor6L6y5aW0ID4gc2VyZjsKK+WfjuW4giA+IGNpdHk7CivloIXlm7ogPiBmaXJtOwor5bCP6aasID4gY29sdDsKK+WFteaIjiA+IGFybXM7CivlhYnmnZ8gPiBiZWFtOwor5qiZ5piOID4gbWFyazsKK+ikh+acrCA+IGNvcHk7Civon77onI0gPiB0b2FkOwor6L6y5aC0ID4gZmFybTsKK+ebkuWtkCA+IGNhc2U7CivlnIvnjosgPiBraW5nOwor5biz5ZauID4gYmlsbDsKK+iNieWdqiA+IGxhd247CivojYnlnLAgPiBsYXduOwor5pC25aWqID4gc25hcDsKK+ihgOeuoSA+IHZlaW47Civou43ngasgPiBhcm1zOwor6Leb6LazID4gbGFtZTsKK+aIv+mWkyA+IHJvb207Civopo/lioMgPiBwbGFuOwor6IWz6LefID4gaGVlbDsKK+i3oeixoSA+IG1hcms7Civopo/liYcgPiBydWxlOwor5YWs5bmzID4gZmFpcjsKK+mOrumdnCA+IGNhbG07Civlg7nmrL4gPiBjb3N0Owor5qij5byPID4gdHlwZTsKK+aQjeWusyA+IGhhcm07CivmqKHlvI8gPiBtb2RlOwor55uf5Y+LID4gYWxseTsKK+WFnOW4vSA+IGhvb2Q7Civlt6jlpKcgPiBodWdlOwor5bel5aSrID4gd29yazsKK+eWvOeXmyA+IGFjaGU7Civot7PomqQgPiBmbGVhOwor5qiT5buCID4gbG9mdDsKK+iGneiTiyA+IGtuZWU7Civkv67oo5wgPiBtZW5kOwor5bGB6KmxID4gc2hpdDsKK+eBsOWhtSA+IGR1c3Q7CivlgbfnnIsgPiBwZWVwOwor5qih5a2QID4gbW9sZDsKK+eWpOeXlSA+IHNjYXI7CivlnLDmlrkgPiBhcmVhOwor5YWU5a2QID4gaGFyZTsKK+Wwj+i3ryA+IGxhbmU7Civpj4jot68gPiBsaW5rOwor55SY6JSXID4gY2FuZTsKK+aOjOaTiiA+IHNsYXA7Civlt67li4EgPiBwb29yOwor5L2O6Z+zID4gYmFzczsKK+a6nOi1sCA+IHNsaXA7CivnlJzoj5wgPiBiZWV0Owor5o2y5puyID4gY3VybDsKK+a4rOmplyA+IHRlc3Q7CivnlKjohrMgPiBkaW5lOwor56yR6KmxID4gam9rZTsKK+Wxsee+iiA+IGdvYXQ7Civnq7bos70gPiByYWNlOwor56yo6JuLID4gZm9vbDsKK+WyqeefsyA+IHJvY2s7CivlhazlkYogPiBwb3N0Owor5bel5YW3ID4gdG9vbDsKK+eUmuiHsyA+IGV2ZW47CivnlaXnorwgPiBjb2RlOwor6LeM6JC9ID4gZmFsbDsKK+a9rua/lSA+IGRhbXA7CivovIPlsJEgPiBsZXNzOwor55m+5ZCIID4gbGlseTsKK+iFsOiCiSA+IGxvaW47CivlnLDluLYgPiB6b25lOwor6KGo5qC8ID4gZm9ybTsKK+mWo+S4iyA+IHNpcmU7Civpvo3pqqggPiBrZWVsOwor6L2J5YuVID4gdHVybjsKK+WFtuS9mSA+IHJlc3Q7Civmva7mtYEgPiB0aWRlOwor5L+d576FID4gcGF1bDsKK+iJsuW9qSA+IHRpbnQ7CivlmLLnrJEgPiBqZWVyOwor5r2u5rGQID4gdGlkZTsKK+aNsuW4tiA+IHRhcGU7CivllaTphZIgPiBiZWVyOwor5r2b5rC0ID4gZGl2ZTsKK+mNjemHkSA+IGdpbGQ7CivlsI/oiLkgPiBib2F0Owor5LuA6bq8ID4gd2hhdDsKK+aMh+aomSA+IG5vcm07CivooZ3mkp4gPiBkYXNoOwor5bKp5ry/ID4gbGF2YTsKK+aPoeS9jyA+IGdyaXA7CivlnLDln58gPiBhcmVhOwor6by06bygID4gbW9sZTsKK+ijveS9nCA+IG1ha2U7CivlnJ/lo6QgPiBzb2lsOwor5bCP576KID4gbGFtYjsKK+aOpeWQuyA+IGtpc3M7Civoia/lpb0gPiBnb29kOwor562W55WlID4gcGxvdDsKK+ihsOW8sSA+IHdlYWs7CivmvKnmuKYgPiBlZGR5Owor5Zyf5ZywID4gbGFuZDsKK+S6num6uyA+IGZsYXg7Civlk7rppIogPiBmZWVkOwor5ZyI5aWXID4gdHJhcDsKK+exg+WciCA+IHJpbmc7Civpj4jntZAgPiBsaW5rOwor6Ia95rGBID4gZ2FsbDsKK+WcsOWNgCA+IGFyZWE7Civmn5Tou58gPiBzb2Z0Owor5ryP5rSeID4gaG9sZTsKK+aOoeS8kCA+IGZlbGw7CivnlbbmmYIgPiB0aGVuOwor5YCf5qy+ID4gbG9hbjsKK+iiluWPoyA+IGN1ZmY7Civmi5vmlLYgPiBoaXJlOwor54++6YeRID4gY2FzaDsKK+mmmeiNiSA+IGhlcmI7CivlmrTls7sgPiBncmltOwor55a55a2QID4gcmFzaDsKK+enmOmtryA+IHBlcnU7CivnqIXpl5wgPiBwaWtlOwor55Sf5rS7ID4gbGlmZTsKK+WDp+S+tiA+IG1vbms7CivmiZPnjbUgPiBodW50Owor5ouW5ouJID4gaGF1bDsKK+aLseW9oiA+IGFyY2g7CivmirHmnIkgPiBoYXZlOwor5ZyN5L2PID4gZ2lyZDsKK+ajjeajkiA+IGNsdWI7CivogbLorb0gPiBmYW1lOwor6Ieq5bexID4gc2VsZjsKK+aLjeaJkyA+IGZsYXA7Civmi43miYsgPiBjbGFwOwor5YK15YuZID4gZGVidDsKK+iBveimiyA+IGhlYXI7Civpo77ph5ggPiBzdHVkOwor5bCP54mbID4gY2FsZjsKK+ihgOWhiiA+IGdvcmU7CivmtarpoK0gPiB3YXZlOwor5YGP5beuID4gYmlhczsKK+WCvuWAkiA+IHBvdXI7CivpqrDlrZAgPiBkaWNlOwor6LKg6LyJID4gbG9hZDsKK+aKmOaWtyA+IHNuYXA7CivogIHpl4YgPiBib3NzOwor6IGW6KmpID4gaHltbjsKK+WCrOS/gyA+IHVyZ2U7Civpi6roqK0gPiBwYXZlOwor56ef6YeRID4gcmVudDsKK+aJk+atuyA+IGtpbGw7CivpoqjpmqogPiByaXNrOwor5p6v6JCOID4gd2lsdDsKK+eUqOaItiA+IHVzZXI7CivmtbjpgI8gPiBzb2FrOwor55ay5YCmID4gdGlyZTsKK+iGoOW4tiA+IHRhcGU7Civos6Log70gPiBzYWdlOwor5rW36LuNID4gbmF2eTsKK+iHreWRsyA+IGZ1bWU7Civlgbblg48gPiBpZG9sOwor5omL5p2WID4gY2FuZTsKK+a1t+ixuSA+IHNlYWw7Civot6jluqYgPiBzcGFuOwor5rqr5pqWID4gd2FybTsKK+Wto+evgCA+IHRpbWU7CivmnpzogokgPiBwdWxwOwor5bCP5pmCID4gaG91cjsKK+aKleWwhCA+IGRhcnQ7Civpu4Pph5EgPiBnb2xkOwor5ZG96YGLID4gZmF0ZTsKK+Wtl+evgCA+IGJ5dGU7Civmtbfop5IgPiBjYXBlOwor5ZiG5oGvID4gc2lnaDsKK+WUp+etkiA+IHB1bXA7CivnlaXljrsgPiBvbWl0Owor5ZO66IKyID4gZmVlZDsKK+e+hemmrCA+IHJvbWU7CivogIPoqaYgPiBleGFtOwor5omL5o6MID4gcGFsbTsKK+iCpeeagiA+IHNvYXA7CivmhI/oposgPiB2aWV3Owor5YCN5aGUID4gYmV0YTsKK+WwvuW3tCA+IHRhaWw7CivotIXnlqMgPiB3YXJ0Owor5oKg6ZaSID4gZWFzZTsKK+S8r+eItSA+IGVhcmw7CivlkajpgYogPiB0b3VyOwor5qKo5a2QID4gcGVhcjsKK+WwuuWvuCA+IHNpemU7CivpoLjpoIUgPiBuZWNrOwor55C155C2ID4gbHV0ZTsKK+ahiOaWhyA+IHRleHQ7CivohqDljbcgPiBmaWxtOwor6YqA6KGMID4gYmFuazsKK+a4uOazsyA+IHN3aW07CivomafnvLogPiB3YW5lOwor5YCf5Ye6ID4gbGVuZDsKK+WvjOaciSA+IHJpY2g7Civkv4LlsI8gPiB0aW55Owor5ZOB6ISrID4gcGludDsKK+Wul+a0viA+IHNlY3Q7CivkuI3pgZwgPiBydWRlOwor6aa05pyNID4gdGFtZTsKK+S4jemBjiA+IG9ubHk7CivkuI3pgYIgPiBmYWlsOwor5bCW5bOwID4gcGVhazsKK+a7vuWLlSA+IHJvbGw7Civosqfnqq4gPiBwb29yOwor5bCP5bO2ID4gaXNsZTsKK+S4u+imgSA+IG1haW47CivmnZ/nuJsgPiBiaW5kOwor5p2f57eKID4gZ2lyZDsKK+iWhOmcpyA+IG1pc3Q7CivmuIXmvoggPiBmYWlyOwor562W5YqDID4gcGxvdDsKK+ixrOiCiSA+IHBvcms7CivkvZXmmYIgPiB3aGVuOwor5a655piTID4gZWFzeTsKK+S4i+i3jCA+IGZhbGw7Civpu4PonIIgPiB3YXNwOwor5Y+j6aCtID4gb3JhbDsKK+e9sOmHkSA+IGZpbmU7Civku6Tni4AgPiB3cml0Owor6JWo6aGeID4gZmVybjsKK+iyu+eUqCA+IGNvc3Q7CivlkYroqqEgPiB3YXJuOwor6JiG6JGmID4gcmVlZDsKK+aKk+S9jyA+IGdyYWI7Civmnb/nmq4gPiBzbGFiOwor6ISG5byxID4gd2VhazsKK+aguOW/gyA+IGNvcmU7CivpoK3pg6ggPiBoZWFkOwor5qC85byPID4gZm9ybTsKK+a3sea3sSA+IGRlZXA7CivmsbrprKUgPiBkdWVsOwor6LGG6IWQID4gdG9mdTsKK+aHtuaDsCA+IGlkbGU7Civmu7TkuIsgPiBkcmlwOwor5omB5Z2vID4gc2xhYjsKK+S+i+WtkCA+IGNhc2U7CivlkpLnvbUgPiBkYW1uOwor6ISW5a2QID4gbmVjazsKK+WQjOi8qSA+IHBlZXI7CivnjqnnrJEgPiBqb2tlOwor6Jek6JSTID4gdmluZTsKK+S+jeWlsyA+IG1haWQ7CivonILmiL8gPiBoaXZlOwor5oiS5a2QID4gcmluZzsKK+a7keWAkiA+IHNsaXA7CivmurbljJYgPiBtZWx0Owor5ri45oiyID4gZ2FtZTsKK+WtuOacnyA+IHRlcm07Civppqzlu4QgPiBiYXJuOwor5Lqe55W2ID4gYWRhbTsKK+e/heiGgCA+IHdpbmc7CivkvIrmnJcgPiBpcmFuOwor5Li7576pID4gXC1pc207CivpuqXoir0gPiBtYWx0Owor5a+G5a6kID4gY2VsbDsKK+eLueiwtyA+IGdsZW47Civnqqnlt6IgPiBuZXN0Owor54mh6bm/ID4gaGFydDsKK+miqOeujyA+IGtpdGU7CivlkI3oqZ4gPiBub3VuOwor5a2Y5qC5ID4gc3R1YjsKK+aZgumWkyA+IHRpbWU7CivmtL7ns7sgPiBzZWN0Owor54++5qy+ID4gY2FzaDsKK+eivOmgrSA+IGRvY2s7Civph4DpgKAgPiBicmV3Owor6JeN6ImyID4gYmx1ZTsKK+WuieaBryA+IHJlc3Q7CivogZbmrYwgPiBoeW1uOwor6aO95ru/ID4gZnVsbDsKK+WTreazoyA+IHdlZXA7Civpo5/niakgPiBmb29kOwor5oW+5pybID4gbHVzdDsKK+WPsuipqSA+IGVwaWM7CivkuIDoiKwgPiBzYW1lOwor5bCP5LiYID4gaGlsbDsKK+aDheevgCA+IHBsb3Q7Civnqb/luLYgPiB3ZWFyOwor5LyR5oGvID4gcmVzdDsKK+mgiOimgSA+IG11c3Q7Civmnb7mqLkgPiBwaW5lOwor6JaU6JaHID4gcm9zZTsKK+S6nua0siA+IGFzaWE7CivlrrblnJIgPiBob21lOwor5oaQ5oarID4gcGl0eTsKK+aal+iXjyA+IGhpZGU7CivniZvpo7IgPiBndWxwOwor6LO65b6XID4gZWFybjsKK+izh+aWmSA+IGRhdGE7CivosY7nkLQgPiBoYXJwOwor5LiA576kID4gZ2FuZzsKK+aenOaWtyA+IGZpcm07CivnqK7ml48gPiByYWNlOwor6buR55ejID4gbW9sZTsKK+mfs+iqvyA+IHRvbmU7CivmtJ7nqbQgPiBjYXZlOwor5p2/5qKdID4gbGF0aDsKK+S4iue1gyA+IHdpbmQ7Civlk4Dms6MgPiB3YWlsOwor6LK05pePID4gbG9yZDsKK+WTiOasoCA+IHlhd247Civmtarmva4gPiB3YXZlOwor56au54mpID4gZ2lmdDsKK+WQhOiHqiA+IGVhY2g7CivosazmsrkgPiBsYXJkOwor6Yyr5a6JID4gemlvbjsKK+eNteeJqSA+IHByZXk7Civlv6vpgJ8gPiBmYXN0Owor6Z2I6a2CID4gc291bDsKK+eKr+imjyA+IGZvdWw7CivlrrDliLYgPiBydWxlOwor5LmD54i+ID4gdGh1czsKK+mjvOaWmSA+IGZlZWQ7Civmsrnoho8gPiBiYWxtOwor54+t5oi/ID4gamFpbDsKK+m+kOWkpyA+IGh1Z2U7CivmuK/lj6MgPiBwb3J0Owor5paR6bueID4gc3BvdDsKK+S4gOeilyA+IGJvd2w7CivlpKfpursgPiBoZW1wOwor5rWu5qiZID4gYnVveTsKK+aDs+azlSA+IGlkZWE7CivlrrbkvJkgPiBjaGFwOwor5Lqk5o6lID4gam9pbjsKK+W+jOmdoiA+IHJlYXI7CivlpKnptZ0gPiBzd2FuOwor5pyD5ryPID4gbGVhazsKK+aVtOm9iiA+IHRpZHk7CivmmIfotbcgPiByaXNlOwor5ZWG5ZOBID4gZ29vZDsKK+WNkemEmSA+IGJhc2U7CivnioTop5IgPiBob3JuOwor5q+N6aasID4gbWFyZTsKK+Wtl+WeiyA+IGZvbnQ7CivlronlhaggPiBzYWZlOwor56iu5a2QID4gc2VlZDsKK+WtpOWWriA+IGxvbmU7CivnqIvlvI8gPiBmb3JtOwor5pyo5qG2ID4gY2FzazsKK+e+uea5ryA+IHNvdXA7CivljbDorYkgPiBzZWFsOwor5pyo5p2/ID4gc2xhYjsKK+WQueeJmyA+IGJyYWc7CivmnKjmnZAgPiB3b29kOwor6aO+5bi2ID4gc2FzaDsKK+iAgeaSviA+IGxhb3M7CivmnKbmnKcgPiBibHVyOwor6Z2g6L+RID4gbmVhcjsKK+iZm+W8sSA+IHdlYWs7Civmtojmga8gPiBuZXdzOwor6Kqy6aGMID4gdGFzazsKK+acn+acmyA+IGhvcGU7Civmt7HljpogPiBkZWVwOwor5Li75qmfID4gY29yZTsKK+m8u+WtkCA+IG5vc2U7Civnj6DlrZAgPiBiZWFkOwor5peF6YGKID4gdHJpcDsKK+epqeWBpSA+IGZpcm07Civpg6jpmoogPiBhcm15Owor5LiK5ryyID4gcmlzZTsKK+azsOeEtiA+IGNhbG07CivpvaflkqwgPiBnbmF3Owor56iA5bCRID4gcmFyZTsKK+m7keaalyA+IGRhcms7Civms6LnibkgPiBiYXVkOwor6YeO56a9ID4gZm93bDsKK+aaiOecqSA+IGRhemU7CivlpZTpgIMgPiBmbGVlOwor6buO5piOID4gZGF3bjsKK+ayu+eZkiA+IGN1cmU7CivmhI/mgJ0gPiBpZGVhOwor5p+Q5LqbID4gc29tZTsKK+aEj+W/tSA+IGlkZWE7CivnuYHpm5wgPiBtYW55Owor5oSP5b+XID4gd2lsbDsKK+eoseWRvCA+IGNhbGw7Civmm7jmoYwgPiBkZXNrOwor5by36aKoID4gZ2FsZTsKK+mbhOm5vyA+IGJ1Y2s7CivpurvmnKggPiBudW1iOwor5pyD5pmkID4gbWVldDsKK+m7g+aYjyA+IGR1c2s7CivpoIXnm64gPiBpdGVtOwor6Z+B57mpID4gcmVpbjsKK+WUr+S4gCA+IG9ubHk7Civpm7Lpm4AgPiBsYXJrOwor54eS6ZaLID4gYm9pbDsKK+epgOWAiSA+IGJhcm47CivmnY7lrZAgPiBwbHVtOwor6IG35L2NID4gcG9zdDsKK+mHjueUnyA+IHdpbGQ7CivlkKbmsbogPiB2ZXRvOwor5rKZ55m8ID4gc29mYTsKK+azoua1qiA+IHdhdmU7CivkuIDmqKMgPiBzYW1lOwor5LuW5YCRID4gdGhleTsKK+azoeayqyA+IGZvYW07CivmraXpqZ8gPiBzdGVwOwor6ICB5amGID4gd2lmZTsKK+S4u+aEjyA+IHBsYW47CivpnZLom5kgPiBmcm9nOwor5pys5a2QID4gYm9vazsKK+eJm+iCiSA+IGJlZWY7CivosZDlr4wgPiByaWNoOwor5LiD5pyIID4ganVseTsKK+mKt+WUriA+IHNlbGw7CivkuIrmmIcgPiByaXNlOwor5ZOO5ZGAID4gZGFtbjsKK+mereesniA+IGZsb2c7CivkuIDmnI0gPiBkb3NlOwor5aSp6LOmID4gZ2lmdDsKK+irh+ipsSA+IHRhbGs7CivosYblrZAgPiBiZWFuOwor5aq95aq9ID4gbWFtYTsKK+WQjOaooyA+IHNhbWU7Civno5rnk6YgPiB0aWxlOwor5pWP6YqzID4ga2VlbjsKK+ayueayuSA+IG9pbHk7Civms6LmnZ8gPiBiZWFtOwor5YyF6KOdID4gcGFjazsKK+azleahiCA+IGJpbGw7CivmsaHnl5UgPiBibG90Owor6Ymk5a2QID4gaG9vazsKK+WNsOeroCA+IHNlYWw7CivpnZzohIggPiB2ZWluOwor55+l6YGTID4ga25vdzsKK+eMm+aSniA+IHNsYW07Civpgbzpl4ogPiB2YXN0Owor5pWF6YSJID4gaG9tZTsKK+mdoue9qSA+IHZlaWw7Civlvp7ogIwgPiB0aHVzOwor5b+Z56KMID4gYnVzeTsKK+mereeXlSA+IHdlbHQ7Civpgorpi5IgPiB3aW5nOwor6YW455ebID4gYWNoZTsKK+W7o+mXiiA+IHdpZGU7CivnpZ7mg4UgPiBsb29rOwor5Lqe5LiBID4gYWRlbjsKK+eNqOWljyA+IHNvbG87CivmspDmtbQgPiBiYXRoOwor5pyA5aW9ID4gYmVzdDsKK+eMluaKqyA+IHdpbGQ7CivlkoDlmrwgPiBjaGV3Owor5aSW6KKNID4gcm9iZTsKK+iqk+ipniA+IG9hdGg7Civli5XoqZ4gPiB2ZXJiOwor546p5YG2ID4gZG9sbDsKK+iqk+iogCA+IG9hdGg7CivoloTmmq4gPiBkdXNrOwor57qW57SwID4gZmluZTsKK+S4i+W3tCA+IGNoaW47CivmlrDogZ4gPiBuZXdzOwor542F5a2QID4gbGlvbjsKK+abtOWkmiA+IG1vcmU7Civlop7plbcgPiBncm93Owor5Y+q5pyJID4gb25seTsKK+WRhuWtkCA+IGZvb2w7CivmmrTlvpIgPiB0aHVnOwor5rG95rC0ID4gc29kYTsKK+mdouepjSA+IGFyZWE7Civlkb3lkI0gPiBuYW1lOwor5q616JC9ID4gcGFydDsKK+efreilqiA+IHNvY2s7CivlvJXorYkgPiBjaXRlOwor6YiV5bi2ID4gYm9uZDsKK+WJjemdoiA+IGZvcmU7CivpmaPpoqggPiBndXN0Owor57eo6LyvID4gZWRpdDsKK+atu+iomCA+IGNyYW07Civmg6HliqMgPiB2aWxlOwor5rWB5YuVID4gZmxvdzsKK+acg+WQiCA+IG1lZXQ7Civmr5vnt5ogPiB5YXJuOwor5YyX57SEID4gbmF0bzsKK+mHjeaTiiA+IGJhbmc7CivmtL7lh7ogPiBzZW5kOwor8KCxgyA+IHRoaW47CivmsaDmsrwgPiBwb29sOwor5q2l6Kq/ID4gZ2FpdDsKK+e5qee0oiA+IHJvcGU7CivpgJrpoqggPiBhaXJ5Owor5oGQ5oe8ID4gZmVhcjsKK+eijueJhyA+IGNoaXA7Civnt5rot68gPiBsaW5lOwor5LiA5aWXID4gc3VpdDsKK+WNoeeJhyA+IGNhcmQ7CivpoZ7lnosgPiB0eXBlOwor5YyF57SuID4gYmluZDsKK+S4reWNiCA+IG5vb247Civmraboo50gPiBhcm1zOwor6JaE5byxID4gd2VhazsKK+S4gOWghiA+IHBpbGU7Civorormj5sgPiB2YXJ5Owor6JK855m9ID4gcGFsZTsKK+awtOa7tCA+IGRyb3A7Civnt6nop6MgPiBlYXNlOwor5pyJ5LqbID4gc29tZTsKK+aciOS6riA+IG1vb247CivlubTpoK0gPiB5ZWFyOwor56Sm5bGxID4gbWluZTsKK+mBk+i3ryA+IHJvYWQ7CivmtJfliLcgPiB3YXNoOwor6Zm46LuNID4gYXJteTsKK+aUtuiXjyA+IGtlZXA7Civmk6DpgLIgPiB0dWNrOwor5LiK5Y+4ID4gYm9zczsKK+mgmOWwjiA+IGxlYWQ7CivmsLTmsaAgPiBwb25kOwor6Zu757eaID4gd2lyZTsKK+S4gOWQuSA+IHB1ZmY7Civmr5vnmq4gPiBwZWx0Owor54OP6bSJID4gY3JvdzsKK+WLnue0ryA+IHRvaWw7CivpgYvosrsgPiBmYXJlOwor5aOB6JmxID4gdGljazsKK+aSpemWiyA+IHBva2U7CivoqK3oqIggPiBwbGFuOwor6L+36ZmjID4gbWF6ZTsKK+WQneWXhyA+IG1lYW47CivkuIDljYogPiBoYWxmOwor6aCC5bOwID4gcGVhazsKK+iXpeS4uCA+IHBpbGw7CivmmJ/mnJ8gPiB3ZWVrOwor5rC05qe9ID4gc2luazsKK+e8uuWwkSA+IGxhY2s7CivkuJbku4cgPiBmZXVkOwor5pKe6Y6WID4gbG9jazsKK+mereaSuyA+IGxhc2g7CivpmbDorIAgPiBwbG90Owor5Y6t5oGoID4gaGF0ZTsKK+mBh+imiyA+IG1lZXQ7CivmmI7mmJ8gPiBzdGFyOwor5LiN5LiAID4gdmFyeTsKK+isgOaxgiA+IHNlZWs7CivpnLLnh58gPiBjYW1wOwor5q+S54mpID4gcGVzdDsKK+aaluWSjCA+IHdhcm07CivkuIDkupsgPiBzb21lOwor6Z6t5omTID4gd2hpcDsKK+WPq+WbgiA+IGhvb3Q7CivngrrpppYgPiBoZWFkOwor5rGC5oSbID4gd29vOwor5ZCM5L2NID4gcGFyOwor6Zyy5rC0ID4gZGV3Owor5Y+X5YiwID4gZ2V0Owor5Y+v5LulID4gY2FuOwor6YWS5buKID4gYmFyOwor5Y2a5b6XID4gd2luOwor5Y+K5YW2ID4gYW5kOwor55+z5rK5ID4gb2lsOwor5pmC5LujID4gYWdlOwor5q+v5a2QID4gcnVnOwor5bm057SAID4gYWdlOwor5aWX5a2QID4gY2FwOwor56C05biDID4gcmFnOwor6a2a6bCtID4gZmluOwor5by35ouJID4gdHVnOwor57aT55SxID4gdmlhOwor5aKo5rC0ID4gaW5rOwor6Kit5rOVID4gdHJ5Owor6ZaT6KucID4gc3B5Owor55y8552bID4gZXllOwor5q2k5pmCID4gbm93Owor5aaC5L2VID4gaG93Owor57WC56uvID4gZW5kOwor55y855WMID4ga2VuOwor5bm85424ID4gY3ViOwor6Zui5a2QID4gaW9uOwor54Sm5rK5ID4gdGFyOwor6YCA5r2uID4gZWJiOwor54Gr6IW/ID4gaGFtOwor6Zmw5pqXID4gZGltOwor57eK5oqxID4gaHVnOwor57i95ZKMID4gc3VtOwor6KaP546HID4gbGF3Owor6Zqx5a+GID4gc2x5Owor56CN5LyQID4gaGV3Owor5Yi65o6iID4gcHJ5Owor6Iq46Iq4ID4gYWxsOwor6Imy6Kq/ID4gaHVlOwor5YGH6auuID4gd2lnOwor6YCU5b6RID4gd2F5Owor5YmN5aSVID4gZXZlOwor5aCF5p6cID4gbnV0Owor5YWI55SfID4gc2lyOwor5qyE5ZyIID4gcGVuOwor5qmh5qi5ID4gb2FrOwor6Iy25p2vID4gY3VwOwor6Kaq5bGsID4ga2luOwor5ouW6LuKID4gdG93Owor5aGr5YWFID4gcGFkOwor5bi95a2QID4gaGF0Owor5pCW5pO6ID4gd2FnOwor55y85YmNID4gbm93Owor5YiA5Y+jID4gY3V0Owor5qiF5qi5ID4gZmlyOwor55So6YCUID4gdXNlOwor55Sc6YWSID4gcnVtOwor55y85LiLID4gbm93Owor5Ye65YO5ID4gYmlkOwor6KWv5aKKID4gcGFkOwor5YKz55yfID4gZmF4Owor6Ium5oOxID4gYWlsOwor6IWz6La+ID4gdG9lOwor5ouW6Ii5ID4gdG93Owor6aqo572IID4gdXJuOwor55m85oCSID4gbWFkOwor6Luf5q+bID4gZnVyOwor6IeC6IaAID4gYXJtOwor6LyV5omTID4gdGFwOwor5pC25YqrID4gcm9iOwor5YWS5a2QID4gc29uOwor5omv6KOCID4gcmlwOwor5bCP6LK7ID4gdGlwOwor5qaG5qi5ID4gZWxtOwor5ZWc6aOyID4gc2lwOwor5bel5L2cID4gam9iOwor5o+05YqpID4gYWlkOwor6IKL6aqoID4gcmliOwor6J2Z6J2gID4gYmF0Owor6b6N6aCtID4gdGFwOwor5omL6IeCID4gYXJtOwor5re36ZucID4gbWl4Owor5Zyw5ZyWID4gbWFwOwor6ayG5bybID4gc2FnOwor55Sf55eFID4gaWxsOwor6KKL5a2QID4gYmFnOwor6aSh6aSFID4gcGllOwor5bCE57eaID4gcmF5Owor6Yuk6aCtID4gaG9lOwor6Yu46ZaLID4gc2F3Owor6ICB6bygID4gcmF0Owor5p6c6YasID4gamFtOwor6KGj5aS+ID4gcGVnOwor5ZyN5YWcID4gYmliOwor5ouW5oqKID4gbW9wOwor5LmI6bueID4gYWNlOwor5bCP54uXID4gcHVwOwor6LKo6LuKID4gdmFuOwor5oiw54itID4gd2FyOwor6bue6aCtID4gbm9kOwor6IKl6IOWID4gZmF0Owor5bCN5rqWID4gYWltOwor5Zm05bCEID4gamV0Owor5YKi5LyZID4gZ3V5Owor6IiJ5YuVID4gYWN0Owor6bqL6bm/ID4gZWxrOwor5pyo6YeYID4gcGVnOwor55Om5pavID4gZ2FzOwor6ami5a2QID4gYXNzOwor55S35a2pID4gYm95Owor5omA5pyJID4gYWxsOwor6ZGw5YyZID4ga2V5Owor5ZO86IGyID4gaHVtOwor5LmF6YGgID4gb2xkOwor6aOb6J+yID4gYnVnOwor562G5bCWID4gbmliOwor6bql6YWSID4gYWxlOwor5L+u5aWzID4gbnVuOwor5L6/5bi9ID4gY2FwOwor5pyD6LK7ID4gZHVlOwor5bC85aeRID4gbnVuOwor5Lm+6I2JID4gaGF5Owor5YCf5YK1ID4gb3dlOwor5oeH5rGCID4gYmVnOwor5bGi5YqgID4gcGx5Owor6aOb57+UID4gZmx5Owor5omH5a2QID4gZmFuOwor6IWQ5aOeID4gcm90Owor56m65rCjID4gYWlyOwor5L2G5pivID4gYnV0Owor6Jed6KGTID4gYXJ0Owor5a6J5pS+ID4gbGF5Owor5Zea5ZK9ID4gc29iOwor5p+T5paZID4gZHllOwor5LuY5qy+ID4gcGF5Owor5LiN6ImvID4gYmFkOwor6LSP5b6XID4gd2luOwor6aCM6KmeID4gb2RlOwor5Lm+54elID4gZHJ5Owor5ZGK57WCID4gZW5kOwor5rG96LuKID4gY2FyOwor5rW354GjID4gYmF5Owor6ICz5py1ID4gZWFyOwor5L2N5YWDID4gYml0Owor5LqU5pyIID4gbWF5Owor5L2V5Lq6ID4gd2hvOwor54eV6bqlID4gb2F0Owor5rCj6LuKID4gYnVzOwor5pyr5pyfID4gZW5kOwor5q+N6ZueID4gaGVuOwor5ZOA5oSBID4gc2FkOwor56Sm55+zID4gb3JlOwor5ZOA5oCoID4gc2FkOwor5aSq6Zm9ID4gc3VuOwor5oCV576eID4gY295Owor5p2v5a2QID4gY3VwOwor6KyK6KmxID4gbGllOwor6KyK6KiAID4gbGllOwor6Zu26aCtID4gb2RkOwor5Lu75L2VID4gYW55Owor5reo5YC8ID4gbmV0Owor5aWU6LeRID4gcnVuOwor5aWU6LWwID4gcnVuOwor5rWB5oSfID4gZmx1Owor5ZOO5ZayID4gaGV5Owor54++5LuKID4gbm93Owor5pqX5rehID4gZGltOwor5piv55qEID4geWVzOwor5LiA5o6SID4gcm93Owor5pa56IifID4gYXJrOwor5paw6IiIID4gbmV3Owor5LiK5bidID4gZ29kOwor6ICM5LuKID4gbm93Owor5Y+v5pivID4gYnV0Owor5rG95rK5ID4gZ2FzOwor54iG6IGyID4gcG9wOwor572q5oOhID4gc2luOwor5pS26LK7ID4gZmVlOwor5q+N576KID4gZXdlOwor5rOV5b6LID4gbGF3Owor5oCO5qijID4gaG93Owor6Zue6JuLID4gZWdnOwor5LiN5ZaEID4gYmFkOwor6bC76a2aID4gZWVsOwor5aSp56m6ID4gc2t5Owor5oKy5YK3ID4gc2FkOwor5bqK6YuqID4gYmVkOwor5Lim5LiUID4gYW5kOwor5Yil6YedID4gcGluOwor57ir57SJID4gc2V3Owor5LiA5YiHID4gYWxsOwor6YCa6YCaID4gYWxsOwor5bmz6Y2LID4gcGFuOwor5pS+572uID4gcHV0Owor5bm06YKBID4gb2xkOwor5q+N54mbID4gY293Owor5aaC5p6cID4gaWY7CivpgoTmmK8gPiBvcjsKK+eahOipsSA+IGlmOwor5YWJ56KfID4gY2Q7CivopoHmmK8gPiBpZjsKK+iLpeaYryA+IGlmOwor5ZqH6IGyID4gaG87CivmiJbogIUgPiBvcjsKK+aIkeeahCA+IG15Owor5YGH5aaCID4gaWY7CivmiJHlgJEgPiB3ZTsKK+WViuWRgCA+IG9oOwor5pan6aCtID4gYXg7CivkuIDkvYYgPiBpZjsKK+S4gOWAiyA+IGE7CivjoY4gPiB0aGVcLWxvbmdcLWJhbmRzXC1vclwtcmliYm9uc1wtYXR0cmFjaGVkXC10b1wtZmxhZ3NcLWFuZFwtYmFubmVyc1wtdGhlXC1mZWF0aGVyXC1kZWNvcmVjdGVkXC1jYXJyaWFnZXNcLW9yXC1kcmVzc2VzOwor6YOvID4gbmFtZVwtb2ZcLWFcLXNtYWxsXC1hbmNpZW50XC1wcmluY2lwYWxpdHlcLXdoaWNoXC13YXNcLXNpdHVhdGVkXC1pblwtd2hhdFwtaXNcLW5vd1wtcGFydFwtb2ZcLXNoYW50dW5nXC1hbmRcLWtpYW5nc3U7CivkkJ4gPiB0aGVcLXRoaW5cLW1lbWJyYW5lXC1iZXR3ZWVuXC1za2luXC1hbmRcLWZsZXNoXC10aGF0XC1wcm90ZWN0c1wtaW50ZXJuYWxcLW9yZ2Fuc1wtb3JcLXRpc3N1ZXNcLWluXC10aGVcLWh1bWFuXC1ib2R5Owor54+qID4gYVwtamFkZVwtdGFibGVcLWNvbmZlcnJlZFwtdXBvblwtZmV1ZGFsXC1wcmluY2VzXC1ieVwtdGhlXC1lbXBlcm9yXC1hc1wtYVwtc3ltYm9sXC1vZlwtZGlnbml0eVwtYW5kXC1hdXRob3JpdHk7CivjurogPiBhXC12ZXJ5XC1wcmVjaW91c1wtcGllY2VcLW9mXC1qYWRlXC13b3JuXC1ieVwtYW5jaWVudFwtZW1wZXJvcnNcLXRvXC1tYXRjaFwtdGFibGVzXC1ib3JuZVwtYnlcLXRoZVwtbm9ibGVzOwor5ICYID4gdG9cLWNvdmVyXC10aGVcLWxpbmVcLW9mXC12aXNpb25cLW9yXC1zaWdodFwtXC1cLXRoZVwtc3RyYWlnaHRcLWxpbmVcLWJldHdlZW5cLWFuXC1vYmplY3RcLWFuZFwtb25lJydzXC1leWVzOwor46inID4gd29vZGVuXC1zdGlja1wtb3JcLWJhbWJvb1wtY2FuZVwtdXNlZFwtdG9cLXN1cHBvcnRcLXRoZVwtY292ZXJpbmdcLW9mXC1hXC1jYXJyaWFnZVwtaW5cLWFuY2llbnRcLXRpbWVzOwor45SjID4gaW5cLWFuY2llbnRcLXRpbWVzXC10b1wtZmlnaHRcLWFnYWluc3RcLXRoZVwtZW5lbXlcLWJ5XC1wdXNoaW5nXC1kb3duXC10aGVcLWJpZ1wtcm9ja3NcLWZyb21cLXVwXC1oaWdoOwor5JqrID4gb3JuYW1lbnRhbFwtYXJ0aWNsZXNcLW1hZGVcLW9mXC1ob3Juc1wtdXNlZFwtdG9cLWRlY29yYXRlXC10aGVcLXRvcFwtb2ZcLWFcLXN0aWNrXC1vclwtaG9yc2V3aGlwOwor56yQID4gYmFtYm9vc1wtcGxhY2VkXC1hY3Jvc3NcLXdvb2RlblwtZnJhbWVzXC1vblwtd2hpY2hcLWdyYWluXC1tYXlcLWJlXC1zdG9yZWRcLWluXC1kYW1wXC1jbGltYXRlczsKK+SjniA+IG5hbWVcLW9mXC1hblwtYW5jaWVudFwtc3RhdGVcLXdoaWNoXC1vY2N1cGllZFwtdGhlXC1zaXRlXC1vZlwtdGhlXC1wcmVzZW50XC1wcm92aW5jZVwtb2ZcLWh1YmVpOwor5Ie2ID4gYVwtc21hbGxcLXJhZnRlcnNcLW1hZGVcLW9mXC1iYW1ib29cLXdoaWNoXC1wcm9qZWN0XC1mb3JtXC10aGVcLWVhdmVzXC1hbmRcLXN1cHBvcnRcLXRoZVwtdGlsZXM7Civos6ggPiB0cmlidXRlXC1wYWlkXC1pblwtY2xvdGhcLWJ5XC10aGVcLXRyaWJlc1wtaW5cLXN6ZWNod2FuXC1hbmRcLXl1bm5hblwtdW5kZXJcLXRoZVwtaGFuXC1keW5hc3R5Owor56arID4gc2FjcmlmaWNlXC1vZmZlcmVkXC1hdFwtdGhlXC1lbmRcLW9mXC10aGVcLXRocmVlXC15ZWFycycnXC1tb3VybmluZ1wtdGhlXC1kZWF0aFwtb2ZcLWFcLXBhcmVudDsKK+SCqSA+IGFuXC1pblwtc2xhYlwtb3JcLWlua1wtc3RvbmVcLXNvdW5kXC1vZlwtcGViYmxlc1wtb3JcLXN0b25lc1wtcnViYmluZ1wtb3JcLWtub2NraW5nXC10b2dldGhlcjsKK+SCjSA+IGFcLWtpbmRcLW9mXC13ZWFwb25cLWNhcnJpZWRcLWJ5XC10aGVcLWhvbm9yXC1ndWFyZFwtYmVmb3JlXC10aGVcLWVtcGVyb3JcLWluXC1hbmNpZW50XC10aW1lczsKK+ihiCA+IHRoZVwtYmxvb2RcLW9mXC1hXC1zYWNyaWZpY2lhbFwtZm93bFwtd2hpY2hcLXdhc1wtc3ByaW5rbGVkXC1vblwtdGhlXC1kb29yc1wtYW5kXC12ZXNzZWxzOwor46+pID4gdG9cLXB1dFwtdGhlXC1ncm93aW5nXC11cFwtc2lsa3dvcm1zXC1pblwtZGlmZmVyZW50XC1mcmFtZXNcLWFjY29yZGluZ1wtdG9cLXRoZWlyXC1zaXplczsKK+OasyA+IGFcLWxhZHlcLXRlYWNoZXJcLXRvXC10ZWFjaFwtdGhlXC1wcm9wZXJcLXJ1bGVzXC1vZlwtZmVtYWxlXC1iZWhhdmlvclwtaW5cLWFuY2llbnRcLXRpbWVzOwor57WlID4gdG9cLWhhcm5lc3NcLWFcLWhvcnNlXC1hXC1ib2FyZFwtaW5cLWZyb250XC1vZlwtYVwtY2FycmlhZ2VcLWZvclwtdGhlXC1kcml2ZXJcLXRvXC1sZWFuXC1vbjsKK+SLrSA+IHRvXC13ZWF2ZVwtc2lsa1wtZmFicmljc1wtd2l0aFwtZ3JlZW5cLWNvbG9yXC1mb3JcLWxvbmdpdHVkZVwtYW5kXC13aGl0ZVwtZm9yXC1sYXRpdHVkZTsKK+OtvCA+IGFcLXJlY3RhbmdsZVwtc2hhcGVkXC1wZWdcLW9yXC1zaG9ydFwtcG9zdFwtYmV0d2VlblwtdGhlXC1iZWFuc1wtYW5kXC10aGVcLXJvb2ZcLXRpbWJlcnM7CivnkYQgPiBhXC1vcm5hbWVudGFsXC1waWVjZVwtb2ZcLWphZGVcLXNldmVyYWxcLWluY2hlc1wtYWNyb3NzXC13aXRoXC1hXC1ob2xlXC1pblwtdGhlXC1jZW50ZXI7CivkrKQgPiB0b1wtcHV0XC10aGVcLXRoaWNrXC1zb3VwXC1vclwtYnJvdGhcLW9uXC10b3BcLW9mXC10aGVcLXJpY2VcLXRoaWNrXC1jb25nZWVcLW9yXC1wb3JyaWRnZTsKK+SlryA+IGFcLWZhcm1cLXRvb2xcLXRvXC1jcnVzaFwtdGhlXC1jbG9kXC1vZlwtZWFydGhcLWludG9cLXBpZWNlc1wtYW5kXC1tYWtlXC10aGVcLWxhbmRcLWZsYXQ7CivkjZYgPiBhXC1raW5kXC1vZlwtbmV0XC1lcXVpcHRlZFwtd2l0aFwtdHJpY2t5XC1tYWNoaW5lXC11c2VkXC10b1wtY2F0Y2hcLWJpcmRzXC1hbmRcLWJlYXN0czsKK+SOrSA+IGFcLWtpbmRcLW9mXC1mYXJtXC10b29sXC1tYWRlXC1vZlwtdHdpc3RlZFwtdGhyb25cLXN0cmlwc1wtdXNlZFwtdG9cLWZsYXRlblwtdGhlXC1sYW5kOwor562TID4gYVwtaGFpcnBpblwtb25cLXdoaWNoXC10aGVcLWhhaXJcLWlzXC1ib3VuZFwtYXRcLXRoZVwtYmFja1wtb2ZcLXRoZVwtaGVhZFwuXC0xNVwtb2ZcLWFnZTsKK+OusiA+IGFcLXNtYWxsXC1yaW5nXC1vclwtYVwtc21hbGxcLXBpZWNlXC1vZlwtYm9hcmRcLWF0dGFjaGVkXC10b1wtdGhlXC1tdXp6bGVcLW9mXC1hblwtb3g7CivktbsgPiBhXC1zbWFsbFwtdHJpcG9kXC1vZlwtYnJvbnplXC13aXRoXC10d29cLWVhcnNcLXRyaXBvZFwtb2ZcLWJyb256ZVwtd2l0aFwtdHdvXC1lYXJzOwor546gID4gbGFyZ2VcLWphZGVcLXRhYmxldFwtdXNlZFwtYnlcLW9mZmljaWFsc1wtYXRcLWNvdXJ0XC10b1wtaW5kaWNhdGVcLXRoZWlyXC1yYW5rczsKK+SCnCA+IHJvY2t5XC1maW5lXC1zdG9uZVwtd2hpY2hcLWlzXC1saXR0bGVcLWxlc3NcLXZhbHVhYmxlXC10aGFuXC1qYWRlXC10b1wtY29sbGFwc2U7CivjoYYgPiBhblwtYXJ0aXNhblwtdG9cLXNvZnRlblwtcmF3XC1zaWxrXC1ieVwtYm9pbGluZ1wtYW5kXC10b1wtZHllXC10aGVcLWRyZXNzZWRcLXNpbGs7CivjoYMgPiBhblwtYXJ0aXNhblwtdG9cLXNvZnRlblwtcmF3XC1zaWxrXC1ieVwtYm9pbGluZ1wtYW5kXC10b1wtZHllXC10aGVcLWRyZXNzZWRcLXNpbGs7Civoo44gPiB0b1wtdGFrZVwtb2ZmXC10aGVcLWNsb3RoZXNcLWFuZFwtZXhwb3NlXC10aGVcLWJvZHlcLlwtdG9cLWNhcnJ5XC1pblwtdGhlXC1naXJkbGU7CivpjosgPiB0aGVcLWxpbmNoXC1waW5cLW9mXC1hXC13aGVlbFwtdG9cLWdvdmVyblwtb3JcLWNvbnRyb2xcLXRoZVwtbm9pc2VcLW9mXC1hXC1iYXJyb3c7CivkqpAgPiBzb21ldGhpbmdcLW1hZGVcLW9mXC1iYW1ib29cLXB1dFwtaW5cLXRoZVwtYm93XC1jYXNlXC10b1wtcHJldGVjdFwtZnJvbVwtZGFtYWdlOwor5IetID4gY29udGFpbmVyc1wtbWFkZVwtb2ZcLXRoaW5cLWFuZFwtbG9uZ1wtc3RyaXBcLW9mXC1iYW1ib29cLW9yXC13aWxsb3dcLWJyYW5jaGVzOwor45+sID4gYVwtbW91bnRhaW5cLWluXC10b2RheScnc1wtc2hhbmRvbmdcLXByb3ZpbmNlXC1zb3V0aHdlc3RcLW9mXC1tZW5neWluXC1jb3VudHk7CivjmqUgPiB0b1wtYmVjb21lXC1hc3NvY2lhdGVkXC13aXRoXC1lYWNoXC1vdGhlclwtaW5cLWdvb2RcLW1hbm5lcnNcLWFuZFwtcG9saXRlbmVzczsKK+SkniA+IGFcLWtpbmRcLW9mXC13ZWFwb25zXC1oZWxkXC1ieVwtdGhlXC1vZmZpY2lhbHNcLWluXC1hdHRlbmRhbmNlXC1pblwtb2xkXC10aW1lczsKK+O5qyA+IGFcLWtpbmRcLW9mXC1hbmltYWxcLWdlbmVyYWxseVwtY2FsbGVkXC1mb3JcLW1pbm9yaXR5XC1ncm91cHNcLWluXC1vbGRcLWNoaW5hOwor47O7ID4gYVwtYmFua1wtb2ZcLWVhcnRoXC1vclwtYW5cLWVtYmFua21lbnRcLXRvXC1ibG9ja1wtdGhlXC1jdXJyZW50XC1vZlwtdGhlXC13YXRlcjsKK+OvoiA+IGFcLXBpZWNlXC1vZlwtY3Jvc3NcLXdpc2VcLWJvYXJkXC11c2VkXC1mb3JcLWZyYW1lXC1vblwtd2hpY2hcLXNpbGt3b3Jtc1wtc3BpbjsKK+SDmCA+IHNpbXBsZVwtYW5kXC1jcnVkZVwtdGhlXC1zb3VuZFwtb2ZcLXBlYmJsZXNcLW9yXC1zdG9uZXNcLWtub2NraW5nXC10b2dldGhlcjsKK+OwsSA+IHRvXC1zbWVhclwtdGhlXC1tb3V0aFwtd2l0aFwtdGhlXC1ibG9vZFwtb2ZcLWFcLXZpY3RpbVwtd2hlblwtdGFraW5nXC1hblwtb2F0aDsKK+eNryA+IGFcLXRyaWJlXC1vZlwtc2N5dGhpYW5zXC13aGljaFwtaW52YWRlZFwtY2hpbmFcLWR1cmluZ1wtdGhlXC1oc2lhXC1keW5hc3R5Owor6Z6UID4gc2lkZXNcLW9yXC11cHBlcnNcLW9mXC1zaG9lc1wtdG9cLXN0cmV0Y2hcLWFcLXNraW5cLW9uXC1hXC1mcmFtZVwtZm9yXC1hXC1kcnVtOwor5JW9ID4gdGhlXC1yaG9kb2RlbmRyb25cLVwtXC1cLWl0XC1pc1wtc2FpZFwtdG9cLWNhdXNlXC1zaGVlcFwtdG9cLXN0YWdnZXJcLWFuZFwtZGllOwor6YOcID4gbmFtZVwtb2ZcLWZpZWZcLWluXC1zaGFudG9uZ1wtYmVzdG93ZWRcLW9uXC10aGVcLWVsZGVzdFwtc29uXC1vZlwtd2VuXC13YW5nOwor5I2/ID4gYVwta2luZFwtb2ZcLWRhbmNlXC1hY2NvbXBhbmllZFwtYnlcLW11c2ljXC1wZXJmb3JtZWRcLWluXC1hbmNpZW50XC10aW1lczsKK+SMniA+IGFcLWtub3RcLXRvXC1oYW5nXC10aGVcLWFwcGFyYXR1c1wtbWFkZVwtb2ZcLXJlZWRcLWZvclwtcmFpc2luZ1wtc2lsa3dvcm1zOwor5IeJID4gY2FwYWNpdHlcLXVuaXRcLWluXC1mcmFuY2VcLWVxdWFsXC10b1wtb25lXC1odW5kcmVkXC10aW1lc1wtb2ZcLW9uZVwtbGl0cmU7CivjvYggPiBhXC1sYXJnZVwtZWFydGhlbndhcmVcLWphclwtd2l0aFwtYVwtc21hbGxcLW1vdXRoXC1hbmRcLXR3b1wtb3JcLWZvdXJcLWVhcnM7CivjuZAgPiB0b1wtdG93XC1hXC1ib2F0XC1hZ2FpbnN0XC10aGVcLWN1cnJlbnRcLWluXC1zd2lmdFwtc3RyZWFtXC1mcm9tXC10aGVcLWJhbms7CivmsoUgPiBuYW1lXC1vZlwtYVwtcml2ZXJcLWluXC13ZXN0ZXJuXC1odW5hblwtdGhhdFwtZmxvd3NcLWludG9cLWRvbmd0aW5nXC1sYWtlOwor57CLID4gYVwtc3F1YXJlXC1iYXNrZXRcLW9mXC1iYW1ib29cLWZvclwtaG9sZGluZ1wtZ3JhaW5cLXVzZWRcLWF0XC1zYWNyaWZpY2VzOwor6be0ID4gc2lsdmVyXC1waGVhc2FudFwtYmFkZ2VcLXdvcm5cLWJ5XC1jaXZpbFwtb2ZmaWNpYWxzXC1vZlwtdGhlXC01dGhcLWdyYWRlOwor6J+VID4gYVwtc3BlY2llc1wtb2ZcLXRvcnRvaXNlXC1mb3VuZFwtbmVhclwtdGhlXC1tb3V0aFwtb2ZcLXRoZVwteWVsbG93XC1yaXZlcjsKK+OshiA+IHBvc3RodW1vdXNcLXRpdGxlXC1jb25mZXJyZWRcLXVwb25cLWVtcGVyb3JzXC1hbmRcLWVtaW5lbnRcLW9mZmljaWFsczsKK+OUsyA+IGFcLXNxdWFyZVwtYmFza2V0XC1vZlwtYmFtYm9vXC1mb3JcLWhvbGRpbmdcLWdyYWluXC11c2VkXC1hdFwtc2FjcmlmaWNlczsKK+menSA+IHRoZVwtcGllY2VcLW9mXC1sZWF0aGVyXC11c2VkXC1mb3JcLXNvbGVzXC1vblwtY2hpbmVzZVwtc2hvZXNcLlwtYVwtcGF0Y2g7CivolJsgPiBhXC1zbWFsbFwtb3JjaGlkXC1saWtlXC1wbGFudFwtaXRcLWJlYXJzXC13aGl0ZVwtZmxvd2Vyc1wtYVwtZGVuZHJvYml1bTsKK+SwmSA+IGFuXC1hbmNpZW50XC11bml0XC1vZlwtY2FwYWNpdHlcLXdpdGhcLXRocmVlXC1mZWV0XC1hbmRcLWFcLWJpZ1wtb3BlbmluZzsKK+SUuSA+IGFcLWZ1bmd1c1wtd2hpY2hcLWdyb3dzXC1vblwtcm90dGVuXC1wbGFudHNcLWFuZFwtaXNcLWVhdGVuXC13aGVuXC1mcmVzaDsKK+OvoyA+IGFcLWtpbmRcLW9mXC1mcmFncmFudFwtdHJlZVwtdXNlZFwtdG9cLXByb2R1Y2VcLXBlcmZ1bWVcLWJ5XC1idXJuaW5nXC1pdDsKK+OvoSA+IHRvXC1sYWNxdWVyXC1zb21lXC1raW5kXC1vZlwtYXNoZXNcLW9uXC13b29kZW5cLWFydGljYWxzXC1vclwtZnVybml0dXJlOwor5bOLID4gcmFuZ2VzXC1vZlwtaGlsbHNcLXN0cmV0Y2hpbmdcLW9uXC1iZXlvbmRcLWFub3RoZXJcLWlycmVndWxhclwtcGVha3M7CivmrYMgPiBzbWVhclwtb25lJydzXC1tb3V0aFwtd2l0aFwtYmxvb2RcLW9mXC1hXC12aWN0aW1cLXdoZW5cLXRha2luZ1wtYW5cLW9hdGg7CivnvpcgPiB0cmliZXNcLWluXC13ZXN0XC1jaGluYVwtc3Ryb25nXC5cLWVkdWNhdGVkXC5cLW9ic3RpbmF0ZVwuXC1hXC1wYXJ0aWNsZTsKK+S4oyA+IGFuY2llbnRcLWZvcm1cLW9mXC10aGVcLXRlbnRoXC1vZlwtdGhlXC10d2VsdmVcLXRlcnJlc3RyaWFsXC1icmFuY2hlczsKK+ShhSA+IHNvbWV0aGluZ1wtdXNlZFwtdG9cLWJpbmRcLXRoZVwtZnJhbWVcLXdvcmtcLWluXC1hXC1jYXJ0XC1vZlwtb2xkXC10aW1lczsKK+SaqCA+IGFcLXN0cmluZ1wtZmFzdGVuZWRcLXRvXC1hblwtYXJyb3dcLXRvXC1kcmF3XC1pdFwtYmFja1wtYWZ0ZXJcLXNob290aW5nOwor5I6gID4gdG9cLXR3aXN0XC1vclwtdG9cLWNydW1wbGVcLWJldHdlZW5cLWhhbmRzXC1hbmRcLW1ha2VcLXNvbWV0aGluZ1wtdHVybjsKK+OfuSA+IHRoZVwtYXBwZWFyYW5jZVwtb2ZcLWFcLW1vdW50YWluXC1pc1wtbG9mdHlcLWFuZFwtc3RlZXBcLWFuZFwtcHJvZm91bmQ7CivjnbggPiBhXC1jb25pY2FsXC1jYXBcLXdvcm5cLW9uXC1jZXJlbW9uaW91c1wtb2NjYXNpb25zXC1pblwtYW5jaWVudFwtdGltZXM7CivjmaggPiB0aGVcLXJveWFsXC1kb21haW5zXC1zZXRcLWFwYXJ0XC1pblwtYW5jaWVudFwtdGltZXNcLWZvclwtdGhlXC1lbXBlcm9yOwor6KGpID4gdGhlXC1vcGVuXC1zZWFtXC1vZlwtYVwtZ2FybWVudFwtd2hpY2hcLWFsbG93c1wtZnJlZWRvbVwtb2ZcLW1vdmVtZW50Owor5bG6ID4gYVwtaGlsbFwtd2l0aFwtdHJlZXNcLW9yXC1ncmFzc1wtXC1cLXNvbWVcLWdpdmVcLXRoZVwtb3Bwb3NpdGVcLW1lYW5pbmc7CivktqYgPiB1cHBlclwtYW5kXC1sb3dlclwtdGVldGhcLWluXC1vcmRlclwtYW5kXC1jb3JyZXNwb25kaW5nXC1lYWNoXC1vdGhlcjsKK+SngiA+IHRvXC10dXJuXC1vdmVyXC10aGVcLWNsb2RcLW9mXC10aGVcLWVhcnRoXC13aXRoXC1hXC1zaG92ZWxcLW9yXC1hXC1zcGFkZTsKK+WZniA+IHRoZVwtbW92ZW1lbnRcLW9mXC1hXC1maXNoJydzXC1tb3V0aFwtYXRcLXRoZVwtc3VyZmFjZVwtb2ZcLXRoZVwtd2F0ZXI7CivllLUgPiB1c2VkXC1pblwtYnVkZGhpc3RcLXRleHRzXC10b1wtdHJhbnNsaXRlcmF0ZVwtbm9uXC1jaGluZXNlXC1zb3VuZHM7CivkoIIgPiBuYW1lXC1vZlwtYVwtcG93ZXJmdWxcLWZldWRhbFwtc3RhdGVcLXdoaWNoXC1leGlzdGVkXC03NDBcLTMzMFwtYlwuY1wuOwor5Ja2ID4gdG9cLXJhaXNlXC11cFwtdGhlXC1ub3NlXC1pblwtb3JkZXJcLXRvXC1nZXRcLXRoZVwtYnVnc1wtaW5cLXRoZVwtZWFydGg7CivkhJsgPiBzZXJ2aWNlXC1vclwtcml0ZXNcLW9mXC1vZmZlcmluZ1wtc2FjcmlmaWNlc1wtZm9yXC1kcmlua1wtYW5kXC1mb29kOwor47ywID4gYW5cLWVhcnRoZW53YXJlXC1qYXJcLXdpdGhcLWFcLXNtYWxsXC1tb3V0aFwtYW5kXC10d29cLW9yXC1mb3VyXC1lYXJzOwor47iWID4gaGlkZVwtb3JcLXRvXC1rZWVwXC1pblwtc3RvcmVcLXRoZVwtdmVnZXRhYmxlXC1pblwtY29sZFwtd2ludGVyXC1kYXlzOwor47efID4gdG9cLXNjYWxkXC10aGVcLWJyaXN0bGVzXC1vZmZcLWFcLXBpZ1wtb3JcLXRoZVwtZmVhdGhlcnNcLW9mZlwtYVwtYmlyZDsKK+OwhyA+IHRoZVwtc3F1YXJlXC1wZWNrXC1zaGFwZWRcLWJveFwtaGFsZlwtd2F5XC11cFwtYVwtY2hpbmVzZVwtZmxhZ3N0YWZmOwor466eID4gdGhlXC1zcXVhcmVcLXBlY2tcLXNoYXBlZFwtYm94XC1oYWxmXC13YXlcLXVwXC1hXC1jaGluZXNlXC1mbGFnc3RhZmY7CivjprwgPiBhXC13b29kZW5cLXBpbGVzXC11c2VkXC1hc1wtYVwtY2FibGVcLXRvXC1tYWtlXC1pbW1vdmFibGVcLW9mXC1hXC1ib2F0Owor46KnID4gYVwtYm9va1wtb3JcLXBhaW50aW5nXC13aGljaFwtY2FuXC1iZVwtZWFzaWx5XC1mb2xkZWRcLW9yXC1yb2xsZWRcLXVwOwor6ZKyID4ga2luZFwtb2ZcLWdvbmdcLXVzZWRcLWluXC1hbmNpZW50XC10aW1lc1wtYnlcLXRyb29wc1wtb25cLXRoZVwtbWFyY2g7CivpiaYgPiBraW5kXC1vZlwtZ29uZ1wtdXNlZFwtaW5cLWFuY2llbnRcLXRpbWVzXC1ieVwtdHJvb3BzXC1vblwtdGhlXC1tYXJjaDsKK+SqsyA+IHNsYW50ZWRcLWZhY2VcLWNhdXNpbmdcLWJ5XC10aGVcLXBhcmFseXplZFwtb2ZcLXRoZVwtZmFjaWFsXC1uZXJ2ZTsKK+SeiyA+IHRvXC1kb1wtYWxtc1wtZm9yXC10aGVcLWJ1ZGRoaXN0XC1wcmllc3RzXC1vclwtbW9ua3NcLWluXC1vbGRcLXRpbWVzOwor5JmGID4gc2xpdHNcLW9uXC10aGVcLWxvd2VyXC1wYXJ0XC1vZlwtYVwtZ293blwtZm9yXC1mcmVlZG9tXC1vZlwtbW92ZW1lbnQ7CivkgI8gPiB0b1wtbW92ZVwtb25lJydzXC1leWVzXC10b1wtZXhwcmVzc1wtb3JcLWluZGljYXRlXC13aXRoXC1leWVzXC1kaXp6eTsKK+O/hCA+IHRoZVwtZ3JvYW5zXC1vclwtbW9hbnNcLWZyb21cLWFcLXBlcnNvblwtaW5cLWFcLWNyaXRpY2FsXC1jb25kaXRpb247Civjto8gPiBhblwtYW5jaWVudFwtbmFtZVwtb2ZcLWFcLXJpdmVyXC1pblwtaGVuYW5cLXByb3ZpbmNlXC1kZW5nZmVuZ3hpYW47Civjs4cgPiBuYW1lXC1vZlwtYVwtcGxhY2VcLWluXC10b2RheScnc1wtamlhbmdzdVwtcHJvdmluY2VcLXlpeGluZ1wtY291bnR5Owor46uLID4gYVwtc2lsa2VuXC1iYW5uZXJcLWhhbmdpbmdcLWZyb21cLWFcLXN0YWZmXC1iZW50XC1vdmVyXC1hdFwtdGhlXC10b3A7Civni70gPiBhXC1sZWdlbmRhcnlcLWFuaW1hbFwtd2l0aFwtc2hvcnRcLWZvcmVsZWdzXC13aGljaFwtcm9kZVwtYVwtd29sZjsKK+atkCA+IHVzZWRcLWluXC10cmFuc2xpdGVyYXRpbmdcLW5vblwtY2hpbmVzZVwtd29yZHNcLXN1Y2hcLWFzXC1ldXJvcGU7Civni4ggPiBhXC1sZWdlbmRhcnlcLWFuaW1hbFwtd2l0aFwtc2hvcnRcLWZvcmVsZWdzXC13aGljaFwtcm9kZVwtYVwtd29sZjsKK+axqCA+IG1pXC1yaXZlclwtaW5cLWh1bmFuXC1wcm92aW5jZVwtd2hlcmVcLXF1XC15dWFuXC1kcm93bmVkXC1oaW1zZWxmOwor5rGcID4gYVwtc3RyZWFtXC13aGljaFwtbGVhdmVzXC10aGVcLW1haW5cLWJyYW5jaFwtdGhlblwtbGF0ZXJcLXJldHVybnM7CivnsIggPiBiYW1ib29cLW1hdFwtdXNlZFwtdG9cLXByb3RlY3RcLWNhcnJpYWdlXC1wYXNzZW5nZXJzXC1mcm9tXC1kdXN0Owor566zID4gYmFtYm9vXC1tYXRcLXVzZWRcLXRvXC1wcm90ZWN0XC1jYXJyaWFnZVwtcGFzc2VuZ2Vyc1wtZnJvbVwtZHVzdDsKK+eIvCA+IGFcLXNtYWxsXC10YWJsZVwtb3JcLXRpZXJlZFwtc3RhbmRcLWZpbGxlZFwtd2l0aFwtbWVhdFwtb2ZmZXJpbmdzOwor5LOaID4gYVwtc29ydFwtb2ZcLW5pZ2h0aW5nYWxlXC13aGljaFwtaXNcLXNhaWRcLXRvXC1zaW5nXC1mb3JcLXRoZVwtZGF3bjsKK+ShgiA+IHRoZVwtbG9uZ1wtd29vZGVuXC1idW1wZXJcLWF0XC10aGVcLXJlYXJcLW9mXC1hXC1jYXJ0XC1vclwtY2FycmlhZ2U7Civkg74gPiB0b1wtb2ZmZXJcLXNtYWxsXC1waWdcLWFzXC1zYWNyaWZpY2VcLXdoZW5cLXdhcnNoaXBcLWdvZFwtb2ZcLWxpZmU7CivjvKogPiBmcmFnbWVudHNcLW9mXC1hXC10aWxlXC1oYXZlbicndFwtdFwtYmVlblwta2lsblwtZHJpZWRcLWNvbXBsZXRlbHk7CivjtJYgPiBuYW1lXC1vZlwtYVwtc3RyZWFtXC1pblwtc2hhbmRvbmdcLXByb3ZpbmNlXC1zb3V0aHdlc3RcLW9mXC1qaW5hbjsKK+OdiSA+IHNwYWNlXC1iZXR3ZWVuXC10aGVcLXRocm9uZVwtYW5kXC10aGVcLXJldGlyaW5nXC1yb29tXC1iZWhpbmRcLWl0Owor45arID4gdXNlZFwtaW5cLW5hbWVzXC1mb3JcLW1pbm9yaXR5XC1ldGhuaWNcLWdyb3VwXC1pblwtYW5jaWVudFwtY2hpbmE7Civngp0gPiBzdGlyXC1mcnlcLW9yXC1ib2lsXC1pblwtd2F0ZXJcLW9yXC1vaWxcLXRoZW5cLWNvb2tcLXdpdGhcLWFcLXNhdWNlOwor54aXID4gc3RpclwtZnJ5XC1vclwtYm9pbFwtaW5cLXdhdGVyXC1vclwtb2lsXC10aGVuXC1jb29rXC13aXRoXC1hXC1zYXVjZTsKK+W8riA+IGFcLWNyb3d3Ym93XC13aGljaFwtZGlzY2hhcmdlZFwtc2V2ZXJhbFwtYm9sdHNcLWluXC1zdWNjZXNzaW9uOwor5KqZID4gbGVhdGhlclwtd3JhcHBlZFwtY29sbGFyXC1mb3JcLWFcLWRyYWZ0XC1hbmltYWxcLW9mXC1hXC1jYXJyaWFnZTsKK+SqliA+IGxlYXRoZXJcLXdyYXBwZWRcLWNvbGxhclwtZm9yXC1hXC1kcmFmdFwtYW5pbWFsXC1vZlwtYVwtY2FycmlhZ2U7Civkp5ogPiB0aGVcLW5hbWVcLW9mXC1hXC1wbGFjZVwtaW5cLXRoZVwtc291dGhcLXdlc3RcLW9mXC1oZWJlaVwtcHJvdmluY2U7CivkoZ4gPiBsZWF0aGVyXC10aGF0XC13aW5kXC1yb3VuZFwtb25cLXRoZVwtc2hhZnRzXC1vZlwtYVwtYmlnXC1jYXJyaWFnZTsKK+SNnCA+IGFcLWJhc2tldFwtb3JcLWFcLWNhZ2VcLXVzZWRcLXRvXC1rZWVwXC13aWxkXC1hbmRcLWRvbWVzdGljXC1mb3dsczsKK+SHhiA+IGNhcGFjaXR5XC11bml0XC1pblwtZnJhbmNlXC1lcXVhbFwtdG9cLXRlblwtdGltZXNcLW9mXC1vbmVcLWxpdHJlOwor5IKFID4gdG9cLWhhdmVcLWluc2lnaHRcLW9yXC12aXNpb25cLW9mXC1hXC1zaW1wbGVcLWFuZFwtaG9uZXN0XC1wZXJzb247Civjsr0gPiBuYW1lXC1vZlwtYVwtcml2ZXJcLWluXC10b2RheScnc1wtc291dGh3ZXN0XC1vZlwtc2hhbnhpXC1wcm92aW5jZTsKK+OukCA+IGFcLXJhY2tcLW9yXC1hXC1zdGFuZFwtd2l0aFwtdGhyZWVcLXN0aWNrc1wtdG9cLWNyb3NzXC1lYWNoXC1vdGhlcjsKK+OsuCA+IGFcLWtpbmRcLW9mXC1zZXJ2aWNlc1wtb3JcLWNlcmVtb25pZXNcLW9mXC1vZmZlcmluZ1wtc2FjcmlmaWNlczsKK+mDjCA+IG5hbWVcLW9mXC1hblwtYW5jaWVudFwtaHNpZW5cLWluXC1tb2Rlcm5cLWdhbnN1XC9zaGFhbnhpXC1hcmVhXC47CivogLAgPiB0b290aGxlc3NcLXJha2VcLWZvclwtZHJhd2luZ1wtZWFydGhcLW92ZXJcLW5ld2x5XC1zb3duXC1ncmFpbjsKK+eQgCA+IGdlbXNcLW9mXC1wZWFybHNcLWZvcm1lcmx5XC1wdXRcLWludG9cLXRoZVwtbW91dGhcLW9mXC1hXC1jb3Jwc2U7CivkqoMgPiB3aW5lXC1jb250YWluZXJcLXVzZWRcLWJ5XC1taW5vcml0eVwtdHJpYmVcLWluXC1hbmNpZW50XC10aW1lczsKK+SltyA+IGFcLWhpbmdlZFwtc2hlYXJcLW9yXC1sb25nXC1rbmlmZVwtZm9yXC1jdXR0aW5nXC1mb2RkZXJcLW9yXC1oYXk7CivkpKkgPiBhblwtb3JuYW1lbnRcLWF0XC10aGVcLWVuZFwtb2ZcLWFcLWJlbHRcLXVzZWRcLWluXC1hbmNpZW50XC10aW1lczsKK+SdqiA+IHRvXC1wcm92aWRlXC1tb25leVwtb3JcLWdpZnRcLWFuZFwtdG9cLWNvbnN1bHRcLWZvcnR1bmVcLXRlbGxlcjsKK+SZmyA+IGNlcmVtb25pYWxcLWRyZXNzXC1vZlwtdGhlXC1lbXBlcm9yXC1vclwtdmVyeVwtaGlnaFwtb2ZmaWNpYWxzOwor5JimID4gYVwta2luZFwtb2ZcLWhlYWRcLWRyZXNzXC13b3JlXC1pblwtZnVuZXJhbFwtcml0ZXNcLWluXC1vbGRcLWRheXM7CivkmJ8gPiBraW5kXC1vZlwtc2lsa1wtd292ZW5cLXdpdGhcLWRvdWJsZVwtdGhyZWFkc1wtYW5kXC13YXRlclwtcHJvb2Y7CivklJEgPiBhXC13aGl0ZVwtY29sb3JlZFwtY2x1c3RlclwtZ3Jvd25cLWF0XC10aGVcLXRpcFwtb2ZcLWNvZ29uZ3Jhc3M7CivkibIgPiB0aGluXC1hbmRcLWZsYXRcLXNsaXBzXC1vZlwtYmFtYm9vXC11c2VkXC1mb3JcLXdlYXZpbmdcLXB1cnBvc2U7CivjvL0gPiBmcmFnbWVudHNcLW9mXC1hXC10aWxlXC1oYXZlbicndFwtYmVlblwta2lsblwtZHJpZWRcLWNvbXBsZXRlbHk7CivjtoEgPiBhZnRlclwtYmxvY2tpbmdcLXRoZVwtd2F0ZXJcLWZsb3dcLXRha2VzXC1kaWZmZXJlbnRcLXdhdGVyd2F5Owor46+AID4gYm9uZHNcLWFuZFwtZmV0dGVyc1wtZm9yXC1mYWxjb25zXC1hbmRcLWRvZ3NcLXVzZWRcLWluXC1odW50aW5nOwor45K+ID4gYVwta2luZFwtb2ZcLXdyYXBwZXJcLXVzZWRcLXRvXC1jb3Zlclwtb3ZlclwtdGhlXC1mYWNlXC1hbmRcLWhlYWQ7CivooLIgPiB0aGVcLW1pbGxpcGVkZVwtc29tZXRpbWVzXC1jb25mb3VuZGVkXC13aXRoXC10aGVcLWdyb3dcLXdvcm07CivomKcgPiBhXC1wbGFudFwtd2hpY2hcLXJlc2VtYmxlc1wtd2hlYXRcLWJ1dFwtaGFzXC1ub1wtZWRpYmxlXC1ncmFpbjsKK+ShtCA+IGNhcnJpYWdlXC11c2VkXC1pblwtYW5jaWVudFwtdGltZXNcLXRvXC10YWtlXC1lbmVteVwtcG9zaXRpb247Civkn7ogPiB3YWxrXC1zbG93bHlcLWJlY2F1c2VcLW9mXC10aGVcLXdyb25nXC1wb3NpdGlvblwtb2ZcLXRoZVwtZmVldDsKK+SJoyA+IHNsaXBzXC1vZlwtYmFtYm9vXC1wcm92aWRlZFwtZm9yXC13cml0aW5nXC1pblwtYW5jaWVudFwtdGltZXM7CivkgbkgPiB0b1wtbG9va1wtYXNrYW5jZVwtXC1cLVwtYVwtZXhwcmVzc2lvblwtb2ZcLWRpc2RhaW5cLW9yXC1kZXNwaXNlOwor47yMID4gbG90XC1vZlwtbWVsb25zXC1ncm93aW5nXC1idXRcLXRoZVwtcm9vdFwtaXNcLXdlYWtcLWFuZFwtZmVlYmxlOwor47ugID4gamFkZVwtaGFuZ2luZ1wtb25cLXRoZVwtc2lkZXNcLW9mXC10aGVcLWNhcFwtaW5cLWFuY2llbnRcLXRpbWVzOwor466jID4gYVwtcGllY2VcLW9mXC13b29kXC11c2VkXC10b1wtc3RyaWtlXC1vZmZcLWdyYWluXC1pblwtYVwtbWVhc3VyZTsKK+OTpCA+IHRvXC1zdHJpcFwtdGhlXC1za2luXC1vZlwtdGhlXC1mYWNlXC1cLVwtXC1hblwtaW1taW5lbnRcLWNhbGFtaXR5Owor56CAID4gYnJpbGxpYW50bHlcLWNvbG9yZWRcLXN0b25lXC13aXRoXC12ZWluZWRcLXBhdHRlcm5zXC1pblwtaXQ7CivomZIgPiBhblwtYW1waGliaW91c1wtYmVhc3RcLXJlc2VtYmxpbmdcLWFcLXRpZ2VyXC13aXRoXC1vbmVcLWhvcm47CivnrYEgPiBhXC1iYW1ib29cLWZyYW1lXC1vblwtd2hpY2hcLXNpbGt3b3Jtc1wtc3BpblwtdGhlaXJcLWNvY29vbnM7Civnoq0gPiBicmlsbGlhbnRseVwtY29sb3JlZFwtc3RvbmVcLXdpdGhcLXZlaW5lZFwtcGF0dGVybnNcLWluXC1pdDsKK+WGiyA+IGFcLWRlc2VydFwtYVwtYm9yZGVyXC1wcmFpcmllXC10aGVcLTFzdFwtZm9ybVwtaXNcLXJhZGljYWxcLTEzOwor5LS3ID4gdXNlXC10aGVcLXdob2xlXC1waWVjZVwtb2ZcLWJhcmxleVwtdG9cLWZlcm1lbnRcLWZvclwtYnJld2luZzsKK+StniA+IGFcLWtpbmRcLW9mXC1zYWNyaWZpY2VzXC1vZmZlcmVkXC10b1wtZ29kc1wtb3JcLXRoZVwtZGVjZWFzZWQ7Civkp6AgPiBuYW1lXC1vZlwtYVwtcGxhY2VcLWluXC13aGF0XC1pc1wtdG9kYXknJ3NcLXNoYW5kb25nXC1wcm92aW5jZTsKK+SRqSA+IGFcLWtpbmRcLW9mXC1pbmxhbmRcLXJpdmVyc1wtd2Fyc2hpcFwtdXNlZFwtaW5cLXFpbmdcLWR5bmFzdHk7CivkjbggPiBhXC1sZWdlbmRhcnlcLWdvYXRcLWxpa2VcLWFuaW1hbFwtd2l0aFwtNFwtZWFyc1wtYW5kXC05XC10YWlsczsKK+SNqyA+IGFcLWxlZ2VuZGFyeVwtZ29hdFwtbGlrZVwtYW5pbWFsXC13aXRoXC00XC1lYXJzXC1hbmRcLTlcLXRhaWxzOwor5IOrID4gYVwtc2lsaWNhdGVcLXN1YnN0YW5jZVwtZnJvbVwtdGhlXC1zYWx0XC13ZWxsc1wtaW5cLXN6ZWNod2FuOwor47icID4gdG9cLWdldFwtdGhyb3VnaFwtdGhlXC1zcGFjZVwtZW5jbG9zZWRcLWJ5XC1hXC1jb25zdGVsbGF0aW9uOwor47etID4gYVwtY29uaWNhbFwtYnJpY2tcLXN0cnVjdHVyZVwtaW5cLXdoaWNoXC10b1wtbGlnaHRcLWFcLWJlYWNvbjsKK+O2uyA+IGFcLWNvbmljYWxcLWJyaWNrXC1zdHJ1Y3R1cmVcLWluXC13aGljaFwtdG9cLWxpZ2h0XC1hXC1iZWFjb247CivnlL4gPiBncm91bmRcLXRoYXRcLWhhc1wtYmVlblwtdW5kZXJcLWN1bHRpdmF0aW9uXC1mb3JcLW9uZVwteWVhcjsKK+emoSA+IGFcLXNhY3JpZmljZVwtYXRcLXRoZVwtYmVnaW5uaW5nXC1vZlwtYVwtbWlsaXRhcnlcLWNhbXBhaWduOwor56SuID4gYW5jaWVudFwtYmFsbGlzdGFcLWZvclwtdGhyb3dpbmdcLWhlYXZ5XC1zdG9uZXNcLWFcLWNhbm5vbjsKK+eknyA+IGFuY2llbnRcLWJhbGxpc3RhXC1mb3JcLXRocm93aW5nXC1oZWF2eVwtc3RvbmVzXC1hXC1jYW5ub247Civkr6AgPiB0aGVcLWZpdmVcLWxvd2VzdFwtcGllY2VzXC1vZlwtYm9uZVwtb2ZcLXRoZVwtc3BpbmFsXC1jb2x1bW47Civkr5kgPiB0aGVcLWZpdmVcLWxvd2VzdFwtcGllY2VzXC1vZlwtYm9uZVwtb2ZcLXRoZVwtc3BpbmFsXC1jb2x1bW47CivkrKYgPiBmb29kXC1pdGVtc1wtbWVyZWx5XC1hcnJhbmdlZFwtZm9yXC1kaXNwbGF5XC1wdXJwb3NlXC1vbmx5Owor5JmRID4gYVwtcGllY2VcLW9mXC1zYWNrY2xvdGhcLXdvcm5cLW9uXC10aGVcLWJyZWFzdFwtaW5cLW1vdXJuaW5nOwor5IixID4gYW5cLW9wZW5cLWJhbWJvb1wtYmFza2V0XC11c2VkXC10b1wtZmVlZFwtZG9tZXN0aWNcLWFuaW1hbHM7CivjqrUgPiBoYWxmXC1vZlwtYVwtdW5pdFwtb2ZcLW1lYXN1cmVtZW50XC11c2VkXC1pblwtYW5jaWVudFwtdGltZXM7CivjoYggPiB0aGVcLXJvcGVzXC1hdHRhY2hlZFwtdG9cLXRoZVwtYmllclwtYW5kXC1oZWxkXC1ieVwtbW91cm5lcnM7CivjmqQgPiBhXC1sYWR5XC1vZmZpY2VyXC1vZlwtdGhlXC1tb25hcmNoJydzXC1wYWxhY2VcLWluXC1vbGRcLXRpbWVzOwor5ZGAID4gcGFydGljbGVcLXVzZWRcLXRvXC1leHByZXNzXC1zdXJwcmlzZVwtb3JcLW1pbGRcLWVtcGhhc2lzOwor6Z23ID4gdGhlXC1sZWF0aGVyXC1iZWx0XC10aGF0XC1jb25uZWN0c1wtYVwtaG9yc2VcLXdpdGhcLWFcLWNhcnQ7CivorbwgPiB0b1wtc3VwZXJ2aXNlXC10b1wtY29uZmluZVwtYVwtZ292ZXJubWVudFwtZXN0YWJsaXNobWVudDsKK+WdqyA+IGFcLXN0YW5kXC1vblwtd2hpY2hcLXRvXC1yZXBsYWNlXC1nb2JsZXRzXC1hZnRlclwtZHJpbmtpbmc7CivktL0gPiBhXC1zbWFsbFwtcm91bmRcLXBpZWNlXC1vZlwtZGlzdGlsbGVyJydzXC1ncmFpbnNcLW9yXC15ZWFzdDsKK+SwjiA+IHRvXC10d2lzdFwtdGhlXC1oYWlyXC1pblwtYVwta25vdFwtb25cLXRoZVwtdG9wXC1vZlwtdGhlXC1oZWFkOwor5KqdID4gbGVhdGhlclwtY29yZFwtdGhhdFwtd2luZGluZ1wtb25cLXRoZVwtaGFuZGxlXC1vZlwtYVwta25pZmU7CivkoYcgPiB0aGVcLWNyb3NzXC1iYXJcLWF0XC10aGVcLWVuZFwtb2ZcLXRoZVwtcG9sZVwtb2ZcLWFcLWNhcnJpYWdlOwor5J6AID4gdG9cLWRlc2lyZVwtZm9yXC1tb3JlXC1tb25leVwtdGhhblwtb25lJydzXC1yaWdodGZ1bFwtc2hhcmU7CivkmK0gPiB0aGVcLXBsZWF0ZXNcLW9uXC10aGVcLWxhcGVsXC1vZlwtYVwtZ2FybWVudFwtb2ZcLXRoaW5cLXNpbGs7CivkkIggPiBhXC1waWVjZVwtb2ZcLW9uZVwtZm9vdFwtdHdvXC1pbmNoZXNcLWRyaWVkXC1zZWFzb25lZFwtbWVhdDsKK+SNhSA+IGNvbnRhaW5lcnNcLWZvclwtd2F0ZXJcLW9yXC13aW5lXC11c2VkXC1pblwtYW5jaWVudFwtdGltZXM7Civki74gPiBjb3R0b25cLWFuZFwtc2lsa1wtdG9cLWJlXC1sYWlkXC1hbmRcLWF0dGFjaGVkXC1lYWNoXC1vdGhlcjsKK+SJkCA+IGFcLXRoaW5cLWFuZFwtbG9uZ1wtc3RyaXBcLW9mXC1iYW1ib29cLWZvclwtbWFraW5nXC1iYXNrZXRzOwor5Ii7ID4gYVwtaGVhdnlcLW1hdHNcLW9mXC1iYW1ib29cLXVzZWRcLWZvclwtZGVlcFwtd2F0ZXJcLWZpc2hpbmc7Civkh6AgPiB3cmVuY2hcLXRvXC1hZGp1c3RcLXRoZVwtc3RyaW5nXC1vblwtc3RyaW5nZWRcLWluc3RydW1lbnQ7CivkhIwgPiB0b1wtcGVyZm9ybVwtcml0aWVzXC1pblwtaG9ub3JcLW9mXC10aGVcLWFuY2VzdHJhbFwtdGVtcGxlOwor5IOmID4gYVwtZmxhdFwtYW5kXC1ncmVhdFwtcm9ja1wtcGVvcGxlXC1zcXVhdFwtb3JcLWNyb3VjaFwtb25cLWl0Owor47uAID4gZmluZVwtc3RvbmVcLXdoaWNoXC1pc1wtbGl0dGxlXC1sZXNzXC12YWx1YWJsZVwtdGhhblwtamFkZTsKK+OyrCA+IGhhaXJcLWRlY29yYXRpb25zXC1vblwtYVwtaGVsbWV0XC11c2VkXC1pblwtYW5jaWVudFwtdGltZXM7Civjsa8gPiBnZXRcLXRoZVwtdW5ib3JuXC1iYWJ5XC1nb2F0XC1ieVwta2lsbG5nXC10aGVcLW1vdGhlclwtZ29hdDsKK+OusCA+IHRoZVwtc21hbGxcLWJlYW1cLXN1cHBvcnRpbmdcLXRoZVwtcmFmdGVyc1wtYXRcLXRoZVwtZWF2ZXM7CivjqrYgPiBhXC1kcnlcLW1lYXN1cmVcLTEwXC1vclwtNVwtdGltZXNcLXRoYXRcLW9mXC1hXC1jaGluZXNlXC1wZWNrOwor45+XID4gbmFtZVwtb2ZcLWFcLXNtYWxsXC1wcmluY2lwYWxpdHlcLWluXC13aGF0XC1pc1wtbm93XC1zaGFueGk7CivkvL0gPiB0cmFuc2NyaXB0aW9uXC1vZlwtc2Fuc2tyaXRcLScnZ2hhJydcLWluXC1idWRkaGlzdFwtdGV4dHM7CivlsaMgPiBzdHJhd1wtc2FuZGFsc1wtb3JcLXNsaXBwZXJzXC10aGF0XC1oYXZlXC1ub1wtaGVlbFwtYmFja3M7CivmvI4gPiBhXC1wbGFjZVwtd2hlcmVcLXNtYWxsXC1zdHJlYW1zXC1mbG93XC1pbnRvXC1hXC1sYXJnZVwtb25lOwor5qq+ID4gZ3Jhc3N5XC1wbGFudFwtd2l0aFwtZmlicmVzXC1mcm9tXC13aGljaFwtY2xvdGhcLWlzXC1tYWRlOwor5LCMID4gdG9cLWJpbmRcLXRoZVwtaGFpclwtaW5cLWFcLWtub3RcLW9uXC10aGVcLXRvcFwtb2ZcLXRoZVwtaGVhZDsKK+SptSA+IHRhbm5lclwtd2hvXC1tYWRlXC10aGVcLWxlYXRoZXJcLWRydW1cLWluXC1hbmNpZW50XC10aW1lczsKK+SamSA+IGFcLXNwb29uXC1mb3JcLWNvb2tlZFwtcmljZVwtbWFkZVwtb2ZcLWhvcm5cLW9mXC1hblwtYW5pbWFsOwor5IyzID4gYVwta2luZFwtb2ZcLXVucmVmaW5lZFwtb3JcLXVucG9saXNoZWRcLXNpbGtlblwtdGV4dGlsZXM7CivkjKQgPiBhXC1raW5kXC1vZlwtdW5yZWZpbmVkXC1vclwtdW5wb2xpc2hlZFwtc2lsa2VuXC10ZXh0aWxlczsKK+SKuiA+IGFuXC1pbXBsZW1lbnRcLXRvXC1kcmF3XC1vclwtdG9cLWNvbGxlY3RcLXJvcGVzXC1vclwtY29yZHM7CivkiYMgPiBzbGlwZWRcLW9wZW5cLWJhbWJvb1wtd2l0aFwtdGhlXC1qb2ludHNcLXVzZWRcLWFzXC1hblwtb2FyOwor5ImAID4gcmVjdGFuZ3VsYXJcLWNoZXN0XC1vclwtYm94XC13b3ZlblwtZnJvbVwtYmFtYm9vXC1zdHJpcHM7CivkhIsgPiB0b1wtcHJheVwtZm9yXC1wcmV2ZW50aW5nXC1vclwtZm9yZXN0YWxsaW5nXC1jYWxhbWl0aWVzOwor5IOuID4gYVwtc3RvbmVcLWJ1aWxkXC1oeWRyYXVsaWNcLW1lYXN1cmVzXC1pblwtYW5jaWVudFwtdGltZXM7Civjvr8gPiByb2FyXC1vZlwtYXN0aG1hXC1vclwtZXhwZWN0b3JhdGVcLWZyb21cLWFcLWR5aW5nXC1wZXJzb247Civju6ggPiBpbmVcLXN0b25lXC13aGljaFwtaXNcLWxpdHRsZVwtbGVzc1wtdmFsdWFibGVcLXRoYW5cLWphZGU7CivjupAgPiBnZW5lcmFsbHlcLWNhbGxlZFwtZm9yXC1taW5vcml0eVwtZ3JvdXBzXC1pblwtb2xkXC1jaGluYTsKK+OvgiA+IHBpbGxhclwtb3JcLXBvc3RcLW9mXC1hXC1mcmFtZVwtb25cLXdoaWNoXC1zaWxrd29ybXNcLXNwaW47Civjn4sgPiBkZWVwXC1hbmRcLWxldmVsXC1ncm91bmRcLWd1bGx5XC1hdFwtdGhlXC1mb290XC1vZlwtYVwtaGlsbDsKK+OeqiA+IHRoZVwtYXBwZWFyYW5jZVwtb2ZcLXRoZVwtbW91bnRhaW5cLWlzXC1mbGF0XC1hbmRcLXNtb290aDsKK+ihhSA+IGNvbnNlY3JhdGVcLXNhY3JpZmljaWFsXC12ZXNzZWxzXC1ieVwtc21lYXJpbmdcLWJsb29kOwor6JmiID4gbmFtZVwtb2ZcLWFuY2llbnRcLWZldWRhbFwtc3RhdGVcLWluXC1zaGVueGlcLWFuZFwtaHVuYW47CivpvYkgPiBzdG9wcGFnZVwtb2ZcLXRoZVwtbm9zZVwtdG9cLXNwZWFrXC13aXRoXC1hXC1uYXNhbFwtdHdhbmc7CivopK8gPiBjaGlsZHJlbicnc1wtZ2FybWVudHNcLlwtYVwtbWF0XC1mb3JcLXdyYXBwaW5nXC1nYXJtZW50czsKK+aioCA+IGFcLXNtYWxsXC1iZWFtXC1zdXBwb3J0aW5nXC10aGVcLXJhZnRlcnNcLWF0XC10aGVcLWVhdmVzOwor5pGjID4gYVwtaGFuZGZ1bFwuXC10b1wtcGlja1wtdXBcLXdpdGhcLXRoZVwtZmluZ2Vyc1wuXC10b1wtc2VpemU7CivloJggPiBhXC1yYWlzZWRcLXBhdGhcLWJldHdlZW5cLWZpZWxkXC13aGljaFwtYWN0c1wtYXNcLWFcLWR5a2U7CivktpwgPiB0aGVcLXByb2Nlc3NcLXRvXC13aGl0ZW5cLXRoZVwtaXZvcnlcLW9yXC1lbGVwaGFudFwtdHVzazsKK+SuiSA+IGhvcnNlc1wta2VwdFwtYXRcLWFcLWNvdXJpZXJcLXN0YXRpb25cLWluXC1mb3JtZXJcLXRpbWVzOwor5KK1ID4gbmFtZVwtb2ZcLWFuXC1vbGRcLWNvdW50cnlcLWluXC10b2RheScnc1wtaHViZWlcLXByb3ZpbmNlOwor5KGfID4gYVwtcmluZ1wtb2ZcLXRoZVwtaG9yaXpvbnRhbFwtZnJvbnRcLWJhclwtb25cLWFcLWNhcnJpYWdlOwor5J6bID4gZGFuY2luZ1wtb2ZcLWFcLWVhc3Rlcm5cLW1pbm9yaXR5XC1ncm91cFwtaW5cLW9sZFwtY2hpbmE7CivknYwgPiBhXC1waWdcLXNlZWtcLWZvclwtZm9vZFwtdGhyb3VnaFwtZGlnZ2luZ1wtb25cLXRoZVwtZWFydGg7CivkkoEgPiBhXC1zbWFsbFwtYm9hdFwtY29ubmVjdGVkXC10b1wtdGhlXC1iYWNrXC1vZlwtYVwtYmlnXC1ib2F0Owor5ImLID4gYVwtdmFyaWV0eVwtb2ZcLWJhbWJvb1wtc2hvb3RzXC10aGF0XC1zcHJvdXRcLWluXC13aW50ZXI7CivkiJQgPiB3aGlzdGxlXC1tYWRlXC1vZlwtcmVlZFwtd2l0aG91dFwtaG9sZXNcLWZvclwtZmluZ2VyaW5nOwor472ZID4gb2ZmaWNpYWxcLWluXC1jaGFyZ2VcLW9mXC1mYXJtbGFuZHNcLWluXC1hbmNpZW50XC10aW1lczsKK+OzjiA+IGd1aWRlXC1vclwtbGVhZFwtdG9cLW1ha2VcLXRoZVwtd2F0ZXJcLWZsb3dpbmdcLXNtb290aGx5Owor47KqID4gd29vbGVuXC1ibGFua2V0XC13aXRoXC1kZWNvcmF0aXZlXC1kZXNpZ25cLW9yXC1wYXR0ZXJuOwor47KoID4gYVwtZGVjb3JhdGl2ZVwtZmluZVwtYmxhbmtldFwtb25cLXRoZVwtdG9wXC1vZlwtYVwtc2FkZGxlOwor47KjID4gd29vbGVuXC1ibGFua2V0XC13aXRoXC1kZWNvcmF0aXZlXC1kZXNpZ25cLW9yXC1wYXR0ZXJuOwor47KZID4gd29vbGVuXC1ibGFua2V0XC13aXRoXC1kZWNvcmF0aXZlXC1kZXNpZ25cLW9yXC1wYXR0ZXJuOwor46eLID4gdG9cLWxlbmd0aGVuXC1hbmRcLWV4dGVudWF0ZVwtXC1cLVwtYXNcLWluXC1tYWtpbmdcLW5vb2RsZTsKK+OgnCA+IHlvdW5nXC1raWRzXC1zbWFydFwtYW5kXC1mYW1pbGlhclwtd2l0aFwtaHVtYW5cLWFmZmFpcnM7CivjmbEgPiBlYXJ0aGVud2FyZVwtdXNlZFwtdG9cLWJha2VcLWNha2VzXC1pblwtbm9ydGhlcm5cLWNoaW5hOwor5ZaBID4gdGhlXC1tb3V0aFwtb2ZcLWFcLWZpc2hcLWF0XC10aGVcLXN1cmZhY2VcLW9mXC10aGVcLXdhdGVyOwor5o+OID4gdG9cLXB1bGxcLXVwXC10aGVcLXNsZWV2ZXNcLWFuZFwtc3RyZXRjaFwtb3V0XC10aGVcLWFybXM7CivnrqwgPiB0aGVcLWN1dGljbGVcLW9mXC10aGVcLWJhbWJvb1wtYVwtYnJvYWRcLWxlYXZlZFwtYmFtYm9vOwor6Lu+ID4gaG9yaXpvbnRhbFwtd29vZGVuXC1iYXJcLWluXC1mcm9udFwtb2ZcLWFcLXNlZGFuXC1jaGFpcjsKK+iQhiA+IHRoZVwtY2FzdG9yXC1vaWxcLXBsYW50XC1hbHNvXC11c2VkXC1mb3JcLW90aGVyXC1wbGFudHM7CivnsKAgPiBhblwtYW5jaWVudFwtdmVzc2VsXC11c2VkXC1mb3JcLWhvbGRpbmdcLWJvaWxlZFwtZ3JhaW47CivksrAgPiBhXC1zZWNvbmRcLW5hbWVcLWZvclwtdGhlXC1waWdlb25cLW9yXC10aGVcLXR1cnRsZVwtZG92ZTsKK+SdpSA+IHRvXC1yb2FyXC1vclwtaG93bFwtZnJhbnRpY1wtYmFya3NcLW9mXC1kb2dzXC1vclwtd29sdmVzOwor5JSkID4gdGhlXC1sdXNoXC1hbmRcLWx1eHVyaWFudFwtb2ZcLXRoZVwtZ3Jhc3NcLWFuZFwtZmxvd2VyczsKK+OvriA+IGFcLWtpbmRcLW9mXC10cmVlXC13aXRoXC1iaWdcLWxlYXZlc1wtYW5kXC1pblwtcmVkXC1jb2xvcjsKK+OUjSA+IGFcLWhpbmdlZFwtc2hlYXJcLW9yXC1sb25nXC1rbmlmZVwtZm9yXC1jdXR0aW5nXC1mb2RkZXI7CivnkpwgPiBhXC1zZW1pY2lyY3VsYXJcLWphZGVcLW9ybmFtZW50XC11c2VkXC1hc1wtYVwtcGVuZGFudDsKK+irrCA+IHRvXC1vcGVuXC10b1wtYmVnaW5cLXRvXC1leHBsYWluXC10b1wtaW5mb3JtXC1hXC1sZXR0ZXI7CivnjLkgPiB3aWxkXC1hbmltYWxcLW1lbnRpb25lZFwtaW5cLXNob3J0XC1zdG9yeVwtYnlcLWx1XC14dW47CivnirwgPiBhXC1maWVyY2VcLW1vbmdvbGlhblwtd29sZlwtZHJhZ29uJydzXC1oZWFkXC1vblwtcm9vZnM7CivmuZMgPiBhblwtYWZmbHVlbnRcLW9mXC10aGVcLXJpdmVyXC15YW5ndHplXC1uZWFyXC1raXVraWFuZzsKK+atmiA+IHVzZWRcLWluXC1uYW1lXC1vZlwtZmFtb3VzXC1rb3JlYW5cLXBhaW50ZXJcLWNlbmdcLXNlbjsKK+S2myA+IHRvXC1zZXBhcmF0ZVwtdGhlXC1tZWF0XC1mcm9tXC10aGVcLWJvbmVzXC13aXRoXC10ZWV0aDsKK+SznCA+IGFcLWtpbmRcLW9mXC1iaXJkXC13aGljaFwtc2hhcmVzXC1pdHNcLW5lc3RcLXdpdGhcLXJhdHM7Civks4UgPiBhXC1raW5kXC1vZlwtYmlyZFwtd2hpY2hcLXNoYXJlc1wtaXRzXC1uZXN0XC13aXRoXC1yYXRzOwor5LKNID4gYVwtcGVyY2hcLWxpa2VcLWZpc2hcLXdpdGhcLXdoaXRlXC1ib2R5XC1hbmRcLXJlZFwtdGFpbDsKK+SptiA+IHNhZGRsZVwtYW5kXC1yZWluXC1ldGNcLlwtZm9yXC10aGVcLWltcGVyaWFsXC1jYXJyaWFnZTsKK+SXvSA+IGFcLXNtYWxsXC1nYWRmbHlcLXRoYXRcLXN1Y2tcLWJsb29kXC1vZlwtaG9yc2VcLW9yXC1jb3c7CivkibQgPiBhXC1iYW1ib29cLXdhcmVcLXRvXC1jb2xsZWN0XC1hbmRcLWtlZXBcLXNvbWV0aGluZ1wtaW47CivkiYUgPiBzbWFsbFwtYmFtYm9vXC13aG9zZVwtam9pbnRzXC1hcmVcLXRocmVlXC1mZWV0XC1hcGFydDsKK+SImyA+IHNtYWxsXC1iYW1ib29cLXdob3NlXC1qb2ludHNcLWFyZVwtdGhyZWVcLWZlZXRcLWFwYXJ0Owor5ISmID4gdG9cLXB1dFwtZm9ydGhcLWVhcnNcLWFuZFwtdG9cLWJsb3Nzb21cLW9mXC10aGVcLWdyYWluczsKK+O9qSA+IGNvbm5lY3RlZFwtYmFua3NcLW9mXC1lYXJ0aFwtb3JcLXBhdGhzXC1pblwtdGhlXC1maWVsZDsKK+O5gyA+IHR3b1wtYnJpbmRsZWRcLWNvd3NcLXRvXC1wbG91Z2hcLWZhY2VcLXRvXC1lYWNoXC1vdGhlcjsKK+O2nyA+IGFuXC1hbmNpZW50XC1uZW1lXC1vZlwtYVwtcml2ZXJcLWluXC1zaGFueGlcLWFuZFwtaGViZWk7CivjsoggPiB0aGVcLW5hbWVcLW9mXC10aGVcLW11c2ljXC1vZlwtdGhlXC1sZWdlbmRhcnlcLWVtcGVyb3I7CivjrJAgPiBhXC1zdGF0ZVwtZHVyaW5nXC10aGVcLXBlcmlvZFwtb2ZcLXNwcmluZ1wtYW5kXC1hdXR1bW47CivjoZsgPiBuYW1lXC1mb3JcLWFcLXdvcmttYW5cLXdob1wtYXBwbHlcLWNvbG9yXC1pblwtcGFpbnRpbmc7Civjn6IgPiB0aGVcLXJvY2tzXC1vblwtdGhlXC1oaWxsc1wtYXJlXC1vZlwtZGlmZmVyZW50XC1zaGFwZXM7CivjnLwgPiBjaGlsZHJlblwtb2ZcLW9uZScnc1wtYnJvdGhlclwtXC1cLVwtbmVwaGV3c1wtb3JcLW5pZWNlczsKK+OUvSA+IGFcLWtpbmRcLW9mXC13aW5lXC1wb3RcLW9yXC1qYXJcLXVzZWRcLWluXC1hbmNpZW50XC10aW1lOwor45ODID4gdG9cLXNhY3JpZmljZVwtYnlcLXBvdXJpbmdcLW91dFwtYVwtbGliYXRpb25cLW9mXC13aW5lOwor45GeID4gYVwtbWFpZFwtd2hvXC1hY2NvbXBhbmllc1wtYVwtYnJpZGVcLXRvXC1oZXJcLW5ld1wtaG9tZTsKK+eVsiA+IHRvXC1jdWx0aXZhdGVcLWxhbmRcLWJ5XC1maXJzdFwtc2V0dGluZ1wtZmlyZVwtdG9cLWl0Owor56+aID4gcm91bmRcLW9yXC1vdmFsXC1jb3ZlcmVkXC1iYXNrZXRzXC13aXRoXC1zaG9ydFwtbGVnczsKK+eylCA+IGNha2VzXC1tYWRlXC1mcm9tXC1yaWNlXC1mbG91clwtdHdpc3RlZFwtaW50b1wtcmluZ3M7CivmiKQgPiB0b1wtaW5mcmluZ2VcLWFcLXRyYWRlXC1tYXJrXC10b1wtcGxlZGdlXC1hblwtYXJ0aWNsZTsKK+S5pCA+IGZpcnN0XC1jaGFyYWN0ZXJcLW9mXC1rb3JlYW5cLXBsYWNlXC1uYW1lXC0nJ2hhbHBobycnOwor5LaoID4gaW5cLXRoZVwtbWFubmVyXC1hXC10b290aGxlc3NcLXBlcnNvblwtY2hld2luZ1wtZm9vZDsKK+SumyA+IGV4dHJhXC1ob3JzZVwtaGFybmVzc2VkXC1ieVwtdGhlXC1zaWRlXC1vZlwtdGhlXC10ZWFtOwor5KOgID4gbmFtZVwtb2ZcLWFcLXZpbGxhZ2VcLWluXC10b2RheScnc1wtc2ljaHVhblwtcHJvdmluY2U7Civko58gPiBuYW1lXC1vZlwtcGF2aWxpb25cLWluXC10b2RheScnc1wtc2hhbmRvbmdcLXByb3ZpbmNlOwor5KCSID4gY291cnRlc3lcLW9mXC1hXC1taW5vcml0eVwtZ3JvdXBcLWluXC1hbmNpZW50XC10aW1lczsKK+SdsCA+IHRvXC1zdG9yZVwtb3JcLXRvXC1hY2N1bXVsYXRlXC1yaWNoZXNcLW9yXC12YWx1YWJsZXM7CivknLEgPiBuYW1lXC1vZlwtYVwtcGF2aWxpb25cLWluXC10b2RheScnc1wtc2hhbnhpXC1wcm92aW5jZTsKK+STnSA+IGNoaW5lc2VcLXBlbm5pc2V0dW1cKVwtcGVubmlzZXR1bVwtYWxvcGVjdXJvaWRlc1wpOwor5IuJID4gYVwtbnVtZXJhcnlcLWFkanVuY3RcLWZvclwtcHJhY3RpY2FsbHlcLWV2ZXJ5dGhpbmc7CivkiqMgPiBsaWdodFwteWVsbG93XC1kdXN0XC1saWtlXC1mdW5nb2lkXC1ncm93dGhcLW9uXC13aW5lOwor5IeSID4gbnVtZXJhcnlcLWFkanVuY3RcLWZvclwtcGVyaW9kaWNcLXRlcm1zXC1vclwtZXZlbnRzOwor47+XID4gZGlzZWFzZVwtb2ZcLXRoZVwtcHJpdmF0ZVwtcGFydFwtb2ZcLXRoZVwtaHVtYW5cLWJvZHk7Civjv4kgPiBkaXNlYXNlXC1vZlwtdGhlXC1wcml2YXRlXC1wYXJ0XC1vZlwtdGhlXC1odW1hblwtYm9keTsKK+O+qyA+IGhlbWlwbGVnaWFcLVwtXC1cLXBhcmFseXNpc1wtb2ZcLWhhbGZcLW9mXC1vbmUnJ3NcLWJvZHk7Civju54gPiBmbG91cmlzaGluZ1wtYW5kXC1yYWRpYW50XC1vZlwtdGhlXC1jb2xvcmZ1bFwtamFkZXM7CivjubEgPiBuYW1lXC1vZlwtYVwtZG9nXC1pblwtdGhlXC1wZXJpb2RcLW9mXC13YXJyaW5nXC1zdGF0ZXM7CivjsqUgPiBhXC1raW5kXC1vZlwtd29vbGVuXC10ZXh0aWxlc1wtd2l0aFwtY3VydmVkXC1wYXR0ZXJuOwor4625ID4gbmFtZVwtb2ZcLWFcLWNvdW50eVwtaW5cLXRvZGF5JydzXC1zaGFuZG9uZ1wtcHJvdmluY2U7Civjo68gPiB0aGVcLWRyZXNzZXNcLXRvc3NcLWFuZFwtZmx5aW5nXC1hYm91dFwtaW5cLXRoZVwtd2luZDsKK+OiryA+IGJvd3NcLXVzZWRcLWJ5XC10aGVcLXNvblwtb2ZcLWhlYXZlblwtXC1cLVwtdGhlXC1lbXBlcm9yOwor46GKID4gYVwta2luZFwtb2ZcLWNhcFwtd29yblwtYnlcLWFuXC1vZmZpY2VyXC1pblwtb2xkXC1jaGluYTsKK+OZqyA+IGFcLWZvdW50YWluXC1vclwtc3ByaW5nXC1vdXRcLWZyb21cLXRoZVwtdW5kZXJncm91bmQ7CivjmY0gPiBuYW1lXC1vZlwtYVwtcGxhY2VcLWluXC10b2RheScnc1wtZ3Vhbmdkb25nXC1wcm92aW5jZTsKK+mSpyA+IHVuaXRcLW9mXC1tZWFzdXJlXC1lcXVpdmFsZW50XC10b1wtdGhpcnR5XC1jYXR0aWVzOwor5aayID4gY29uY3ViaW5lXC1vZlwtbGFzdFwtcnVsZXJcLW9mXC10aGVcLXNoYW5nXC1keW5hc3R5Owor55O0ID4gY29uY2F2ZVwtY2hhbm5lbHNcLW9mXC10aWxpbmdcLWFcLWxvbmdcLW5lY2tlZFwtamFyOwor5aq1ID4gYVwtbWFpZFwtd2hvXC1hY2NvbXBhbmllc1wtYnJpZGVcLXRvXC1oZXJcLW5ld1wtaG9tZTsKK+iDmSA+IG1lYXRcLW9mZmVyZWRcLWluXC1zYWNyaWZpY2VcLXRvXC1vbmUnJ3NcLWFuY2VzdG9yczsKK+ifiiA+IGFcLWZseVwtd2hpY2hcLWlzXC11c2VkXC1zaW1pbGFybHlcLXRvXC1jYW50aGFyaWRlczsKK+mosiA+IHRoZVwtZmVtYWxlXC1vZlwtY2VydGFpblwtYW5pbWFsc1wtc3VjaFwtYXNcLWhvcnNlczsKK+mIniA+IHVuaXRcLW9mXC1tZWFzdXJlXC1lcXVpdmFsZW50XC10b1wtdGhpcnR5XC1jYXR0aWVzOwor6J2lID4gYVwtZmx5XC13aGljaFwtaXNcLXVzZWRcLXNpbWlsYXJseVwtdG9cLWNhbnRoYXJpZGVzOwor54+TID4gdHdvXC1oZW1pc3BoZXJpY2FsXC1vYmplY3RzXC11c2VkXC1pblwtZGl2aW5hdGlvbjsKK+aVpyA+IHRvXC1waWNrXC11cFwtdGhpbmdcLXdpdGhcLWNob3BzdGlja3NcLW9yXC1waW5jZXJzXC47CivmiYQgPiBsYXJnZVwtcmluZ1wtb25cLWFcLWZyb250XC1kb29yXC11c2VkXC1hc1wtYVwta25vY2tlcjsKK+WrjyA+IHRoZVwtcGxhY2VcLXdoZXJlXC10aGVcLXN1cHJlbWVcLXN0b3Jlc1wtaGlzXC1ib29rczsKK+SxgSA+IGFcLWtpbmRcLW9mXC1tZWRpdW1cLXNpemVkXC1maXNoXC1ncm93blwtaW5cLXRoZVwtc2VhOwor5LCPID4gc3BhcnNlXC1oYWlyXC1vblwtYVwta25vdFwtb25cLXRoZVwtdG9wXC1vZlwtdGhlXC1oZWFkOwor5K6GID4gYVwtaG9yc2VcLXdpdGhcLW1peGVkXC1jb2xvclwtb2ZcLXllbGxvd1wtYW5kXC13aGl0ZTsKK+SpmyA+IGxlYXRoZXJcLWJlbHRcLXVzZWRcLXRvXC1iaW5kXC1vclwtcmVzdHJhaW5cLWFcLWNhcnQ7CivkprkgPiBuYW1lXC1vZlwtYVwtY291bnR5XC1pblwtdG9kYXknJ3NcLXNpY2h1YW5cLXByb3ZpbmNlOwor5KOUID4gbmFtZVwtb2ZcLWFcLXBhdmlsaW9uXC1pblwtdG9kYXknJ3NcLWhlbmFuXC1wcm92aW5jZTsKK+SjkSA+IGxpdmluZ1wtc3BhY2VcLWZvclwtb25lXC1mYW1pbHlcLWluXC1hbmNpZW50XC10aW1lczsKK+SjhCA+IG5hbWVcLW9mXC1hXC1wbGFjZVwtaW5cLXRvZGF5JydzXC1zaGFuZG9uZ1wtcHJvdmluY2U7Civko4EgPiBuYW1lXC1vZlwtYVwtcGF2aWxpb25cLWluXC10b2RheScnc1wtaGVuYW5cLXByb3ZpbmNlOwor5KK5ID4gbmFtZVwtb2ZcLWFcLXBhdmlsaW9uXC1pblwtdG9kYXknJ3NcLWh1bmFuXC1wcm92aW5jZTsKK+SiqiA+IGFcLXNsZWRnZVwtZm9yXC10cmFuc3BvcnRhdGlvblwtb3ZlclwtbXVkXC1vclwtc25vdzsKK+SfhiA+IHRvXC1rZWVwXC1wZXJzb25zXC1vZmZcLXRoZVwtcm91dGVcLW9mXC10aGVcLWVtcGVyb3I7CivkiJAgPiBhblwtYXJjaGVkXC1mcmFtZVwtbWFkZVwtb2ZcLWJhbWJvb1wtb2ZcLXdvb2RcLWJvYXJkOwor5IW/ID4gbHV4dXJpYW50XC1vclwtZXh1YmVyYW50XC1vZlwtdGhlXC1ncmFpbnNcLWZsb3dlcnk7Civkg4ggPiBtb3VudGFpblwtcm9ja3NcLWFcLWJsYWNrXC1zdG9uZVwtcmVzZW1ibGluZ1wtamFkZTsKK+SCrCA+IGJpZ1wtcm9ja3NcLW9uXC10aGVcLXJpdmVyc2lkZVwtYW5cLWFyY2hlZFwtb3BlbmluZzsKK+SBnSA+IGRlbHVkaW5nXC1hbmRcLWNhdXNpbmdcLWRpc29yZGVyXC1saWdodHNcLXNoaW5pbmc7CivjvZ8gPiB0b1wtdGlsbFwtb3JcLXRvXC1wbG91Z2hcLXRoZVwtZmllbGRzXC1hblwtZW5jbG9zdXJlOwor466EID4gcHVibGljbHlcLXBvc3RlZFwtcm9sbFwtb2ZcLXN1Y2Nlc3NmdWxcLWV4YW1pbmVlczsKK+OtuCA+IHRoZVwtYnJhbmNoZXNcLXRvXC1zcHJlYWRcLW91dFwtaW5cLWFsbFwtZGlyZWN0aW9uczsKK+OpiSA+IHRvXC10YWtlXC1hXC1ydWJiaW5nXC1vZlwtYW5cLWluc2NyaXB0aW9uXC1vblwtc3RvbmU7Civjo4EgPiB0b1wtZXF1aXB0XC1hXC1ib3dcLXdpdGhcLXNpbGtcLWFuZFwtbXVzY3VsYXJcLWZpYnJlOwor46KGID4gbGl2aW5nXC1zcGFjZVwtZm9yXC1vbmVcLWZhbWlseVwtaW5cLWFuY2llbnRcLXRpbWVzOwor452ZID4gdGhlXC10aGlyZFwtb2ZcLXRoZVwtdHdlbHZlXC10ZXJyZXN0cmlhbFwtYnJhbmNoZXM7CivjmbsgPiBsaXZpbmdcLXNwYWNlXC1mb3JcLW9uZVwtZmFtaWx5XC1pblwtYW5jaWVudFwtdGltZXM7CivkuY4gPiBpbnRlcnJvZ2F0aXZlXC1vclwtZXhjbGFtYXRvcnlcLWZpbmFsXC1wYXJ0aWNsZTsKK+a+hCA+IHB1cmlmeVwtd2F0ZXJcLWJ5XC1hbGxvd2luZ1wtc2VkaW1lbnRcLXRvXC1zZXR0bGU7CivmrZ8gPiBhXC1maW5hbFwtcGFydGljbGVcLXVzZWRcLXRvXC1leHByZXNzXC1hZG1pcmF0aW9uOwor5qKiID4gcG9pbnRlZFwtdGlwXC1vZlwtc29tZXRoaW5nXC1sb25nXC1saWtlXC1hXC1icmFuY2g7Civlk5IgPiBhXC1zb3VuZFwtbWFkZVwtdG9cLWdldFwtYVwtaG9yc2VcLXRvXC1tb3ZlXC1mb3J3YXJkOwor55CuID4gb2N0YWdvbmFsXC1waWVjZVwtb2ZcLWphZGVcLXdpdGhcLWhvbGVcLWluXC1taWRkbGU7CivmrKQgPiBhXC1maW5hbFwtcGFydGljbGVcLXVzZWRcLXRvXC1leHByZXNzXC1hZG1pcmF0aW9uOwor5ZS8ID4gc3BlYWtpbmdcLWV2aWxcLlwtZ29iYmxpbmdcLXNvdW5kXC1tYWRlXC1ieVwtZHVja3M7CivpgrQgPiBuYW1lXC1vZlwtYVwtY2l0eVwtaW5cLXRoZVwtYW5jaWVudFwtc3RhdGVcLW9mXC1zb25nOwor5LaYID4gdGhlXC1zb3VuZFwtb2ZcLWNoZXdpbmdcLXNvbWV0aGluZ1wtZHJ5XC1hbmRcLWhhcmQ7CivkrrIgPiBob3JzZVwtd2l0aFwtbWl4ZWRcLWNvbG9yc1wtb2ZcLXllbGxvd1wtYW5kXC13aGl0ZTsKK+SmvCA+IHRvXC1kaWdcLWFcLXBhc3NhZ2VcLXRocm91Z2hcLWFcLW1vdW50YWluXC1vclwtaGlsbDsKK+SlkSA+IGFcLWtpbmRcLW9mXC1kZWNvcmF0aW9uXC1vblwtdGhlXC1oZWFkXC1vZlwtYVwtaG9yc2U7Civko68gPiB3aW5lXC1vclwtYW55XC10aGlja1wtZmx1aWRcLW9mXC10aGVcLWJlc3RcLXF1YWxpdHk7Civko5ogPiBuYW1lXC1vZlwtYVwtdmlsbGFnZVwtaW5cLXRvZGF5JydzXC1oZW5hblwtcHJvdmluY2U7Civko5kgPiBuYW1lXC1vZlwtYVwtY291bnR5XC1pblwtdG9kYXknJ3NcLXNoYW54aVwtcHJvdmluY2U7CivkorogPiBuYW1lXC1vZlwtYVwtcGxhY2VcLWluXC10b2RheScnc1wtc2ljaHVhblwtcHJvdmluY2U7CivkorggPiBuYW1lXC1vZlwtYVwtY291bnR5XC1pblwtdG9kYXknJ3NcLXNoYW54aVwtcHJvdmluY2U7Civkob8gPiBmcmFtZXNcLW9uXC10aGVcLXNpZGVzXC1hbmRcLWZyb250XC1vZlwtYVwtY2FycmlhZ2U7CivkobwgPiBmcmFtZXNcLW9uXC10aGVcLXNpZGVzXC1hbmRcLWZyb250XC1vZlwtYVwtY2FycmlhZ2U7CivknK8gPiBuYW1lXC1vZlwtYVwtdmFsbGV5XC1pblwtdG9kYXknJ3NcLXNoYW54aVwtcHJvdmluY2U7CivkmL8gPiBzaGlydFwtb3JcLWFcLWphY2tldFwtd2l0aG91dFwtYW55XC1kZWNvcmF0ZWRcLWhlbTsKK+SWgiA+IGFuXC1lZGliXC1sZVwtd2F0ZXJcLXBsYW50XC1cLVwtXC1icmFzZW5pYVwtcHVycHVyY2E7Civkj64gPiB0aGVcLXNpZGVzXC1vZlwtdGhlXC10cnVua1wtZnJvbVwtYXJtcGl0c1wtdG9cLXJpYnM7CivkhY0gPiBzdHJhaWdodFwtdXB3YXJkXC1vZlwtdGhlXC13aGVhdFwtYW5kXC1yaWNlXC1wbGFudDsKK+SCuCA+IHRvXC1zbWFzaFwtb3JcLXRvXC1rbm9ja1wtdG9cLXBpZWNlc1wtb2ZcLXRoZVwtc3RvbmU7CivjvrwgPiB0b1wtc3VmZmVyXC1hXC1zdHJva2VcLW9mXC1wYXJhbHlzaXNcLW9yXC1hcG9wbGV4eTsKK+O+ryA+IHRvXC1zdWZmZXJcLWFcLXN0cm9rZVwtb2ZcLXBhcmFseXNpc1wtb3JcLWFwb3BsZXh5Owor472rID4gc2VlZHNcLW9mXC10aGVcLXBsYW50XC1hbGxpZWRcLXRvXC10aGVcLXdhdGVyXC1saWx5Owor47i3ID4gYVwta2luZFwtb2ZcLWNhdHRsZVwtd2l0aFwtdHdvXC1ob3Juc1wtc3RyYWlnaHRcLXVwOwor47asID4gYnJpZ2h0XC1saWdodHNcLWFuZFwtaWxsdW1pbmF0aW9uc1wtb2ZcLXRoZVwtZmlyZTsKK+O2oSA+IGJyaWdodFwtbGlnaHRzXC1hbmRcLWlsbHVtaW5hdGlvbnNcLW9mXC10aGVcLWZpcmU7CivjtoYgPiBuYW1lXC1vZlwtYVwtc3RyZWFtXC1pblwtaGViZWlcLXByb3ZpbmNlXC1oZW5nc2hhbjsKK+OuqyA+IGFcLXdvb2RlblwtYXJ0aWNhbFwtdG9cLWJlXC11c2VkXC10b1wtYWRqdXN0XC1hXC1ib3c7Civjq40gPiB0aGVcLXNjYWxsb3BzXC1hbG9uZ1wtdGhlXC1sb3dlclwtZWRnZVwtb2ZcLWFcLWZsYWc7Civjp48gPiB0b1wtY2FycnlcLW9uXC10aGVcLXNob3VsZGVyc29mXC10d29cLW9yXC1tb3JlXC1tZW47Civjm7YgPiBkb1wtbm90XC1jYXJlXC1hYm91dFwtYXBwZWFyYW5jZVwtYW5kXC1kZXBvcnRtZW50Owor45unID4gbmFtZVwtb2ZcLWFcLWNvdW50eVwtaW5cLXRvZGF5JydzXC1zaGFueGlcLXByb3ZpbmNlOwor45qUID4gaW5zdHJ1bWVudFwtb2ZcLXRvcnR1cmVcLXVzZWRcLWluXC1hbmNpZW50XC10aW1lczsKK+OZhyA+IHRoZVwtY2F0dGxlXC1hbmRcLWhvcnNlc1wtdHJhbXBsZWRcLW9uXC10aGVcLWZpZWxkOwor5aiFID4gbXV0dWFsXC10ZXJtXC1vZlwtYWRkcmVzc1wtdXNlZFwtYnlcLXNvbnNcLWluXC1sYXc7CivprqAgPiBhXC1raW5kXC1vZlwtc2hhZFwtd2l0aFwtYVwtaGVhZFwtbGlrZVwtYVwtc3R1cmdlb247Civog5EgPiB0aGVcLWxpbWJzXC5cLXdpbmdzXC1vZlwtYmlyZHNcLlwtbGVnc1wtb2ZcLWFuaW1hbHM7Civnra0gPiBhblwtYW5jaWVudFwtZGV2aWNlXC1mb3JcLXdvcmtpbmdcLXdpdGhcLW51bWJlcnM7Civmu50gPiBvbm9tYXRvcG9laWNcLWZvclwtdGhlXC1zb3VuZFwtb2ZcLWZhbGxpbmdcLXJhaW47Civlqa0gPiBtdXR1YWxcLXRlcm1cLW9mXC1hZGRyZXNzXC11c2VkXC1ieVwtc29uc1wtaW5cLWxhdzsKK+SztSA+IGFcLWtpbmRcLW9mXC13YXRlclwtYmlyZFwtd2l0aFwtY29sb3JmdWxcLWZlYXRoZXI7Civks5sgPiBhXC1zbWFsbFwtYnJvd25cLXNwZWNrbGVkXC1iaXJkXC1saWtlXC10aGVcLXF1YWlsOwor5KmRID4gaG9yaXpvbnRhbFwtZnJvbnRcLWJhclwtb25cLWFcLWNhcnRcLW9yXC1jYXJyaWFnZTsKK+SmkyA+IHRvXC13YWl0XC1mb3JcLXNvbWV0aGluZ1wtdG9oYXBwZW5cLWltbWVkaWF0ZWx5Owor5KOkID4gbmFtZVwtb2ZcLXZpbGxhZ2VcLWluXC10b2RheScnc1wtc2hhbnhpXC1wcm92aW5jZTsKK+SjnSA+IG5hbWVcLW9mXC1hXC1wbGFjZVwtaW5cLXRvZGF5JydzXC1zaGFueGlcLXByb3ZpbmNlOwor5KOCID4gbmFtZVwtb2ZcLWFcLWNvdW50eVwtaW5cLXRvZGF5JydzXC1odW5hblwtcHJvdmluY2U7CivkoakgPiBzb3VuZFwtb2ZcLWNhcnRzXC1vclwtc3RvbmVzXC1rbm9ja2luZ1wtdG9nZXRoZXI7CivkoY8gPiBob3Jpem9udGFsXC1mcm9udFwtYmFyXC1vblwtYVwtY2FydFwtb3JcLWNhcnJpYWdlOwor5KGMID4gaG9yaXpvbnRhbFwtZnJvbnRcLWJhclwtb25cLWFcLWNhcnRcLW9yXC1jYXJyaWFnZTsKK+SggCA+IHRvXC1zaXRcLWNyb3NzXC1sZWdnZWRcLWxpa2VcLWFcLWJ1ZGRoaXN0XC1wcmllc3Q7CivknKsgPiBuYW1lXC1vZlwtYVwtdmFsbGV5XC1pblwtdG9kYXknJ3NcLWhvYmVpXC1wcm92aW5jZTsKK+ScmiA+IHRvXC1zcGVha1wtcmVja2xlc3NseVwtb3JcLXdpdGhvdXRcLWZvcmV0aG91Z2h0Owor5JOlID4gc291bmRcLW9mXC10aGVcLXdyaWdnbGVkXC1pbnNlY3RzXC1vblwtdGhlXC1ncmFzczsKK+SQhCA+IHRoZVwtdW5zYXRpc2ZhY3Rpb25cLW9mXC1odW5nZXJcLXJlcXVpcmVzXC1tZWF0Owor5I20ID4gdG9cLXNxdWVlemVcLWFuZFwtdG9cLWNyb3dkXC1hZ2FpbnN0XC1lYWNoXC1vdGhlcjsKK+SNhiA+IGNvbnRhaW5lclwtZm9yXC1ncmFpbnNcLXVzZWRcLWluXC1hbmNpZW50XC10aW1lczsKK+SHryA+IGFcLWtpbmRcLW9mXC1iYW1ib29cLXdpdGhcLXBhdHRlcm5zXC1vblwtdGhlXC1oZWFkOwor47yxID4gdG9cLW1hbmFnZVwtb3JcLXJlZ3VsYXRlXC10aGVcLWxlYXRoZXJcLW1hdGVyaWFsOwor46+KID4gZXZlblwtbWVhc3VyaW5nXC1ib2FyZFwtZm9yXC1wZWNrc1wtYW5kXC1idXNoZWxzOwor46iQID4gdG9cLXNsYXBcLWxpZ2h0bHlcLW9uXC10aGVcLWNsb3RoZXNcLW9yXC1jb3ZlcmxldDsKK+OipSA+IGFcLWJpZ1wtcGllY2VcLW9mXC1sb2dcLXRvXC1qb2luXC10aGVcLXRoaWNrXC1yb3BlczsKK+ePiCA+IGFuXC1vcm5hbWVudFwtYXR0YWNoZWRcLXRvXC1hXC13b21hbicnc1wtaGFpcnBpbjsKK+icgyA+IG1hcmluZVwtbW9uc3Rlclwtd2hpY2hcLWNhblwtY2hhbmdlXC1pdHNcLXNoYXBlOwor5pabID4gZHJ5XC1tZWFzdXJlXC1lcXVhbFwtdG9cLXNvbWVcLWZpdmVcLW9yXC10ZW5cLWRvdTsKK+mEryA+IGRpc3RyaWN0XC1pblwtZ2Fuc3VcLWR1cmluZ1wtdGhlXC10YW5nXC1keW5hc3R5Owor5bq5ID4gdGhlXC1sZW5ndGhcLW9mXC1vbmUnJ3NcLXR3b1wtb3V0c3RyZXRjaGVkXC1hcm1zOwor5o+yID4gdG9cLXNvcnRcLW91dFwtdGhlXC1zdGFsa3NcLXVzZWRcLWluXC1kaXZpbmF0aW9uOwor6Z+NID4gYVwtbGVhdGhlclwta25lZVwtcGFkXC13b3JuXC1kdXJpbmdcLXNhY3JpZmljZXM7Civpj54gPiBhXC1sYXJnZVwtYmVsbFwtdXNlZFwtYXNcLWFcLW11c2ljYWxcLWluc3RydW1lbnQ7Civou44gPiBhXC1icmFzc1wtcGFydHNcLWZvclwtYVwtY2FydFwtaW5cLWFuY2llbnRcLWNoaW5hOwor6JmLID4gYXNwYXJhZ3VzXC1hXC12YXJpZXR5XC1vZlwtcmVkXC1zdGFsa2VkXC1taWxsZXQ7Civlu54gPiB0b1wtcHJlcGFyZVwtaG9yc2VzXC1hbmRcLWNoYXJpb3RzXC1mb3JcLWJhdHRsZTsKK+WplyA+IGFcLW5ld1wtYm9yblwtY2hpbGRcLXRoZVwtd2hpbXBlclwtb2ZcLWFuXC1pbmZhbnQ7CivlprogPiB3aWZlXC1vZlwtdGhlXC1sYXN0XC1ydWxlclwtb2ZcLXRoZVwteGlhXC1keW5hc3R5Owor5ZmgID4gc291bmRcLW1hZGVcLXRvXC1nZXRcLWFcLWhvcnNlXC10b1wtbW92ZVwtZm9yd2FyZDsKK+S4giA+IG9ic3RydWN0aW9uXC1vZlwtYnJlYXRoXC1hc1wtaXRcLXNlZWtzXC1yZWxlYXNlOwor5LC/ID4gYVwta2luZFwtb2ZcLXNtYWxsXC1maXNoXC1ncm93blwtaW5cLWZyZXNoXC13YXRlcjsKK+SivyA+IG5hbWVcLW9mXC1hXC1wbGFjZVwtaW5cLXRvZGF5JydzXC1ob2JlaVwtcHJvdmluY2U7CivkoYggPiB0aGVcLWNyb3NzXC1iYXJcLWF0XC10aGVcLXNpZGVzXC1vZlwtYVwtY2Fycml0YWdlOwor5JSJID4gc2NhdHRlcmVkXC1vclwtZGlzcGVyc2VkXC1vZlwtZ3Jhc3NcLWFuZFwtdHJlZXM7CivkkZIgPiBhXC1raW5kXC1vZlwtZmFybVwtdG9vbFwtdXNlZFwtaW5cLWFuY2llbnRcLXRpbWVzOwor5JCjID4gc291cFwtbWFkZVwtb2ZcLWN1dHRlZFwtbWVhdFwtbWl4ZWRcLXdpdGhcLWJsb29kOwor5IyuID4gc2lsa1wtZmFicmljc1wtd2l0aFwtdGhlXC1jb2xvclwtb2ZcLW5ld1wtbGVhdmVzOwor5ISoID4gZ3JhaW5zXC1wcm9kdWNpbmdcLW5laXRoZXJcLWZsb3dlclwtbm9yXC1mcnVpdDsKK+SEnSA+IHNob3dcLW5vXC1yZXNwZWN0XC10b1wtdGhlXC1zZXJ2aWNlXC1vZlwtd29yc2hpcDsKK+O8rSA+IHRvXC1zdGVhZHlcLWJ5XC1wdXR0aW5nXC1zb21ldGhpbmdcLXVuZGVybmVhdGg7Civju7IgPiBhXC1yaXRlXC1vclwtc2VydmljZVwtZm9yXC1iZWdpbm5pbmdcLW9mXC1hdXR1bW47CivjqqogPiB0b1wtdXNlXC1hXC13b29kZW5cLXBvbGVcLXRvXC1zdXBwb3J0XC1zb21ldGhpbmc7CivjoqYgPiB3b29kZW5cLXBvc3RcLW9yXC1waWxlXC1mb3JcLXRldGhlcmluZ1wtYW5pbWFsczsKK+OcoiA+IGFcLWJhZFwtdGVybVwtYnlcLXdoaWNoXC1vbmVcLWFkZHJlc3Nlc1wtYVwtd29tYW47CivjmpIgPiBjb25jZWFsZWRcLXRoZVwtc3RvbGVuXC1nb29kc1wtaW5cLW9uZScnc1wtZHJlc3M7CivouKMgPiB0b1wtc3R1bWJsZVwtYW5kXC1mYWxsXC1wcm9uZVwtc3RpZmZcLWluXC1kZWF0aDsKK+m7vCA+IGVtYnJvaWRlcmVkXC1vZmZpY2lhbFwtb3JcLXNhY3JpZmljaWFsXC1yb2JlOwor5bOEID4gYVwtcmFuZ2VcLW9mXC1wZWFrc1wtaW5cLXNoYW5kb25nXC1hbmRcLWppYW5nc3U7Civpl5cgPiBhXC1mcm9udGllclwtcGFzc1wtb3JcLWdhdGVcLXRvXC1zaHV0XC1vclwtY2xvc2U7Civpgr4gPiBhXC1mZXVkYWxcLXN0YXRlXC13aGljaFwtZXhpc3RlZFwtYlwuY1wuNzAwXC00Njk7CivolqkgPiB0cmFuc2xpdGVyYXRpb25cLW9mXC0nJ3NhdCcnXC1pblwtJydib2RoaXNhdHR2YTsKK+iGsCA+IHRvXC1jb29rXC1tZWF0XC1mb3JcLWFcLXNhY3JpZmljZVwtb3JcLW9mZmVyaW5nOwor55GMID4gYVwtd2hpdGVcLW9wYXF1ZVwtcXVhcnR6XC11c2VkXC1mb3JcLW9ybmFtZW50czsKK+a9nyA+IGxhbmRcLWltcHJlZ25hdGVkXC13aXRoXC1zYWx0XC1mcm9tXC10aGVcLXRpZGU7CivltqcgPiBhXC1yYW5nZVwtb2ZcLXBlYWtzXC1pblwtc2hhbmRvbmdcLWFuZFwtamlhbmdzdTsKK+S1niA+IGFuY2llbnRcLXB1bmlzaG1lbnRcLW9mXC10YXR0b29pbmdcLXRoZVwtZmFjZTsKK+SxuSA+IGFcLWNvbmRpbWVudFwtbWFkZVwtZnJvbVwtbWluY2VkXC1maXNoXC1zYWx0ZWQ7CivksLwgPiBhXC1jb25kaW1lbnRcLW1hZGVcLWZyb21cLW1pbmNlZFwtZmlzaFwtc2FsdGVkOwor5K+wID4gdXNlXC1hXC1oYWlyXC1waW5cLXRvXC1zZXRcLWFuZFwtZHJlc3NcLXRoZVwtaGFpcjsKK+SsryA+IHRvXC1oYXZlXC1jb25nZWVcLXdpdGhcLWZyaWVuZHNcLWluXC1vbGRcLXRpbWVzOwor5KGLID4gZGVjb3JhdGlvblwtb25cLXRoZVwtbmF2ZVwtb3JcLWh1Ylwtb2ZcLWFcLXdoZWVsOwor5J6DID4gdG9cLXJlbGlldmVcLW9yXC1naXZlXC1haWRcLXRvXC10aGVcLWRpc3RyZXNzZWQ7CivknakgPiB0b1wtcmVsaWV2ZVwtb3JcLWdpdmVcLWFpZFwtdG9cLXRoZVwtZGlzdHJlc3NlZDsKK+SYryA+IHRoZVwtbGFwZWxcLW9yXC1jb2xsYXJcLW9mXC1hXC1nYXJtZW50XC1vclwtcm9iZTsKK+SYpCA+IGFcLXN3b3JkXC1jb3ZlcmluZ1wtdG9cLXByb3RlY3RcLXRoZVwtc2NhYmJhcmQ7CivkkYwgPiBsd2hhdFwtaXNcLWxlZnRcLW92ZXJcLW9mXC10aGVcLWZvb2RcLVwtb3ZlcnJpcGU7Civki6cgPiBvcm5hbWVubnRzXC1mb3JcLXRoZVwtZnJvbnRhbFwtcGFydFwtb2ZcLXNob2VzOwor5IujID4gZGVjb3JhdGlvbnNcLXB1dFwtb25cLXRoZVwtbWFuZVwtb3JcLWhvcnNlaGFpcjsKK+SKvyA+IHRoZVwtbGFwZWxcLW9yXC1jb2xsYXJcLW9mXC1hXC1nYXJtZW50XC1vclwtcm9iZTsKK+SIlSA+IHRoZVwtbWV0YWxcLXRvbmd1ZVwtaW5cLXRoZVwtcmVlZFwtaW5zdHJ1bWVudHM7Civkg7QgPiBhXC13aGV0c3RvbmVcLXVzZWRcLXRvXC1ncmluZFwtcHJlY2lvdXNcLXN0b25lOwor5IG8ID4gdG9cLWxvb2tcLWJ1dFwtc2VlXC1ub3RoaW5nXC1cLVwtXC1hYnNlbnRcLW1pbmRlZDsKK+O/hiA+IGRhbWFnZVwtYnlcLXRoZVwtcGVzdHNcLXRvXC10aGVcLXJpY2VcLXNlZWRsaW5nOwor47u2ID4gYVwtamFkZVwtdHViZVwtd2l0aFwtd2hpdGVcLWFuZFwtbmF0dXJlXC1jb2xvcnM7Civju7AgPiBkZWNvcmF0ZWRcLWphZGVcLW9yXC1vcm5hbWVudFwtb25cLWFcLXNjYWJiYXJkOwor47uhID4gYVwtamFkZVwtcmluZ1wtd2l0aFwtYVwtc21hbGxcLXNlZ21lbnRcLWN1dFwtb2ZmOwor466GID4gZWF2ZXNcLXNwcm91dGluZ1wtZnJvbVwtdGhlXC1zdHVtcFwtb2ZcLWFcLXRyZWU7Civjq5QgPiBvbmVcLW9mXC10aGVcLWVpZ2h0XC1kaWFncmFtc1wtZm9yXC1kaXZpbmF0aW9uOwor46q7ID4gYVwta2luZFwtb2ZcLXV0ZW5zaWxcLXVzZWRcLXRvXC1sYWRsZVwtb3V0XC13aW5lOwor46mKID4gdG9cLXB1bGxcLXVwXC10aGVcLXNsZWV2ZXNcLWFuZFwtc2hvd1wtdGhlXC1hcm1zOwor46etID4gdG9cLWdldFwtc29tZXRoaW5nXC13aXRoXC1ib3RoXC1yYWlzaW5nXC1oYW5kczsKK+OnmiA+IHRoZVwtZ2VzdHVyZVwtb2ZcLXVzaW5nXC1hblwtaW5kZW50ZWRcLWNvbnRhaW47Civjp4YgPiB0b1wtY292ZXJcLXNvbWV0aGluZ1wtd2l0aFwtYVwtcGllY2VcLW9mXC1jbG90aDsKK+OhiyA+IGFcLWtpbmRcLW9mXC1oZWFkZHJlc3NcLWZvclwtbWFuXC1pblwtb2xkXC1jaGluYTsKK+OguCA+IHRoZVwtbGFwZWxcLW9yXC1jb2xsb3JcLW9mXC1hXC1nYXJtZW50XC1vclwtcm9iZTsKK+OcmiA+IGFcLWxvY2FsXC1nb3Zlcm5tZW50XC1wb3N0XC1pblwtYW5jaWVudFwtdGltZXM7CivjmZ8gPiBsb3dcLWx5aW5nXC1vblwtdGhlXC1zaWRlXC1vZlwtYVwtcml2ZXJcLW9yXC1sYWtlOwor5ZaPID4gcmVzcGVjdGZ1bFwtcmVwbHlcLW9mXC1hc3NlbnRcLXRvXC1zdXBlcmlvcnM7CivnrI8gPiB0YWJsZXRcLWhlbGRcLWJ5XC1zb21lb25lXC1oYXZpbmdcLWF1dGhvcml0eTsKK+i2vCA+IGNhbGxvdXNcLXNraW5cLW9uXC1oYW5kc1wtb3JcLWZlZXRcLlwtYmxpc3RlcnM7CivppZ0gPiB0b1wtZmVlZFwtYW5cLWluZmFudFwtYnlcLWhhbmRcLXN0ZWFtZWRcLWJyZWFkOwor6KONID4gYVwtYm9yZGVyXC1vclwtYmFuZFwtb25cLXRoZVwtZWRnZVwtb2ZcLWFcLWRyZXNzOwor57GqID4gYVwtd2Vpclwtb2ZcLWJhbWJvb1wtdG9cLWNhdGNoXC1maXNoXC1vclwtY3JhYnM7CivnmLIgPiBzcGFzbXNcLW9yXC1jb252dWxzaW9uc1wtaW5cLXlvdW5nXC1jaGlsZHJlbjsKK+eRsiA+IHRpbmtsaW5nXC1zb3VuZFwtdGlua2xpbmdcLW9mXC1wZW5kYW50XC1nZW1zOwor5bydID4gdGhlXC1wYXJ0XC1vZlwtYVwtYm93XC1ncmFzcGVkXC13aGVuXC1zaG9vdGluZzsKK+SlnCA+IHByb3RlY3RpdmVcLW1ldGFsXC1vblwtdGhlXC1heGlzXC1vZlwtYVwtd2hlZWw7CivkmZYgPiBhXC1jbG90aFwtdG9cLWNhcnJ5XC1hblwtaWluZmFudFwtb25cLXRoZVwtYmFjazsKK+SZgCA+IGFcLWNsb3RoXC10b1wtY2FycnlcLWFuXC1paW5mYW50XC1vblwtdGhlXC1iYWNrOwor5I+rID4gaW5cLWJldHdlZW5cLW9mXC10aGVcLWFiZG9tZW5cLWFuZFwtdGhlXC1zcGluZTsKK+SNiSA+IHRyYWNlc1wtb3JcLW1hcmtzXC1vZlwtaW5jb21wbGV0ZVwtb3JcLWRhbWFnZTsKK+SMuCA+IGZpbmVcLXNpbGtcLWZhYnJpY1wtb2ZcLWJyaWdodFwtd2hpdGVcLWNvbG91cjsKK+SLvyA+IGFcLWRlY29yYXRpdmVcLWtub3RcLW1hZGVcLW9mXC1jb2xvcmZ1bFwtc2lsazsKK+SInCA+IGFcLXRocmVhZFwtdXNlZFwtYnlcLWNhcnBlbnRlcnNcLWZvclwtbWFya2luZzsKK+SIhiA+IGFcLXNoYWxsb3dcLWFuZFwtbG9uZ1wtc2hhcGVkXC1iYW1ib29cLWJhc2tldDsKK+O/uSA+IGp1dHRpbmdcLW9uXC10aGVcLWVwaWRlcm1pc1wtb3JcLXRoZVwtY3V0aWNsZTsKK+O8qyA+IGVhcnRoZW53YXJlXC1vclwtcG90dGVyeVwtd2l0aFwtYmlnXC1vcGVuaW5nOwor47W7ID4gdG9cLXBlcnNwaXJlXC1mcm9tXC1lbWJhcnJhc3NtZW50XC1vclwtc2hhbWU7CivjrakgPiBhXC1raW5kXC1vZlwtdHJlZVwtY2FuXC1iZVwtdXNlZFwtYXNcLWR5ZVwtc3R1ZmY7Civjo5kgPiB0b1wtd2Fsa1wtaW5cLWFuXC1lYXN5XC1hbmRcLWxlaXN1cmVseVwtbWFubmVyOwor46KqID4gdG9cLWRyYXdcLWFcLWZ1bGxcLWJvd1wtdG9cLWFpbVwtYXRcLXRoZVwtdGFyZ2V0Owor45iKID4gdGhlXC1hYnJ1cHRcLWFuZFwtaGFzdHlcLXNvdW5kXC1vZlwtdGhlXC1jcm93ZDsKK+OWriA+IGFuXC1pbnRlcmplY3Rpb25cLXVzZWRcLWluXC1wb2Vtc1wtYW5kXC1zb25nczsKK+OUriA+IGFcLWtpbmRcLW9mXC1hbmltYWxcLXdoaWNoXC1sb29rc1wtbGlrZVwtYVwtcmF0Owor5ZWnID4gaW50ZXJqZWN0aW9uXC1vZlwtYXBwcm92YWxcLW9yXC1hZG1pcmF0aW9uOwor5o26ID4gdG9cLXByZXNzXC1kb3duXC1oZWF2aWx5XC13aXRoXC10aGVcLWZpbmdlcnM7CivlgqMgPiB0aGVcLWRhaVwtbWlub3JpdHlcLWxpdmluZ1wtaW5cLXNvdXRoXC1jaGluYTsKK+m4qSA+IGFcLWJpcmRcLXJlc2VtYmxpbmdcLXRoZVwtc2VjcmV0YXJ5XC1mYWxjb247Civmt50gPiBuYW1lXC1vZlwtYW5cLWFmZmx1ZW50XC1vZlwtdGhlXC1wb3lhbmdcLWxha2U7Civpg4UgPiB0b1wtZ29cLXVwXC10b1wuXC1mbG91cmlzaGluZ1wtYVwtc3VwZXJsYXRpdmU7CivovasgPiBhXC1ibG9ja1wtdGhhdFwta2VlcHNcLWFcLXdoZWVsXC1mcm9tXC1tb3Zpbmc7CivltrcgPiBhXC1yYW5nZVwtb2ZcLW1vdW50YWluc1wtaW5cLWh1bmFuXC1wcm92aW5jZTsKK+mssiA+IHR5cGVcLW9mXC1jYWxkcm9uXC13aXRoXC10aHJlZVwtaG9sbG93XC1sZWdzOwor5YiWID4gY3V0dGluZ1wtb2ZmXC1mZWV0XC1hc1wtZm9ybVwtb2ZcLXB1bmlzaG1lbnQ7CivnqbggPiB0aGVcLWdsb29tXC1vZlwtdGhlXC1ncmF2ZVwtYVwtdG9tYlwtb3JcLWdyYXZlOwor6JiFID4gYVwtZnJhZ3JhbnRcLXBsYW50XC10aGVcLXJvb3RcLWlzXC1tZWRpY2luYWw7CivptIYgPiBhXC1iaXJkXC1yZXNlbWJsaW5nXC10aGVcLXNlY3JldGFyeVwtZmFsY29uOwor6amGID4gdXNlZFwtaW5cLXRyYW5zbGl0ZXJhdGluZ1wtYnVkZGhpc3RcLWJvb2tzOwor6aePID4gb2Zmc3ByaW5nXC1vZlwtYVwtc3RhbGxpb25cLWFuZFwtYVwtc2hlXC1tdWxlOwor6YmMID4gdGhlXC1iZWxsc1wtb25cLXRoZVwtY2FydFwtaW5cLWFuY2llbnRcLWNoaW5hOwor6LuUID4gYVwtYmxvY2tcLXRoYXRcLWtlZXBzXC1hXC13aGVlbFwtZnJvbVwtbW92aW5nOwor6KmnID4gdG9cLWV4YW1pbmVcLWludG9cLWp1ZGljaWFsbHlcLXRvXC1maW5kXC1vdXQ7CivntrMgPiBhXC1jbG90aFwtdG9cLWNhcnJ5XC1hblwtaW5mYW50XC1vblwtdGhlXC1iYWNrOwor57aWID4gdGhlXC1oYW5naW5nXC1mbGFwXC1pblwtdGhlXC1mcm9udFwtb2ZcLWFcLWhhdDsKK+elqyA+IHRyaWVubmlhbFwtc2FjcmlmaWNlXC10b1wtb25lJydzXC1hbmNlc3RvcnM7Civno7sgPiBhXC10cmlidXRhcnlcLW9mXC10aGVcLXdlaVwtcml2ZXJcLWluXC1zaGFueGk7CivmlrQgPiB0aGVcLXNvdW5kXC1vZlwtd2F0ZXJcLWZsb3dpbmdcLWFtb25nXC1yb2NrczsKK+W0kSA+IGt1bmx1blwtbW91bnRhaW5zXC1pblwtamlhbmdcLXN1XC1wcm92aW5jZVwuOwor5ZiWID4gaW50ZXJqZWN0aW9uXC1vZlwtYXBwcm92YWxcLW9yXC1hZG1pcmF0aW9uOwor5LCYID4gdG9cLWtpbGxcLWJ5XC1oYW5naW5nXC1vclwtdG9cLXN0cmFuZ3VsYXRpb247CivkrpcgPiB3aGl0ZVwtZnJvbVwtZm9yZWhlYWRcLXRvXC1saXBzXC1vZlwtYVwtaG9yc2U7CivkqrIgPiBhbmNpZW50XC1wdW5pc2htZW50XC1vZlwtc2hhdmluZ1wtdGhlXC1oZWFkOwor5Km4ID4gZmluZVwtd29vbGVuXC1ibGFua2V0XC1vblwtdG9wXC1vZlwtYVwtc2FkZGxlOwor5KmrID4gYVwtdW5pdFwtdG9cLWNvdW50XC1zaG9lc1wtaW5cLWFuY2llbnRcLXRpbWVzOwor5KaFID4gYVwta2luZFwtb2ZcLXdlYXBvblwtdXNlZFwtaW5cLWFuY2llbnRcLXRpbWVzOwor5KWQID4gY29va2luZ1wtdXRlbnNpbHNcLXVzZWRcLWluXC1hbmNpZW50XC10aW1lczsKK+SihyA+IGFcLXNvblwtd2hvXC1pc1wtbm90XC1zb1wtZ29vZFwtYXNcLWhpc1wtZmF0aGVyOwor5JuXID4gdG9cLXByeVwtaW50b1wtb3JcLWV4cG9zZVwtYW5vdGhlcicnc1wtc2VjcmV0Owor5JqFID4gdG9cLWxvb2tcLWFmdGVyXC1ob21lXC1vclwtZG9tZXN0aWNcLWFmZmFpcnM7CivkmKggPiBzaG9ydFwtbGVnZ2luZ3NcLWRyYXduXC1vdmVyXC10aGVcLXRyb3VzZXJzOwor5Ja/ID4gYVwta2luZFwtb2ZcLWNsYW1cLXdpdGhcLXRoaWNrXC13aGl0ZVwtc2hlbGxzOwor5Ja9ID4gYVwta2luZFwtb2ZcLWNsYW1cLXdpdGhcLXRoaWNrXC13aGl0ZVwtc2hlbGxzOwor5JWwID4gYVwtc2Vjb25kXC1uYW1lXC1mb3JcLXJoaXpvbWVcLW9mXC13aW5kXC13ZWVkOwor5JOtID4gd2VlZFwtb3JcLWdyYXNzXC13aXRoXC1uYXJyb3dcLXRoaWNrXC1nbGFkZXM7CivkjbsgPiB5b3VuZ1wtZ29hdFwtb2ZcLXNoZWVwXC11bmRlclwtb25lXC15ZWFyXC1vbGQ7CivkjaYgPiBhXC1raW5kXC1vZlwtdHVyYmFuXC11c2VkXC1pblwtYW5jaWVudFwtdGltZXM7CivkjLkgPiBhXC1nYXJtZW50XC1vZlwtb25lXC1jb2xvdXJcLXdpdGhcLW5vXC1saW5pbmc7CivkhKogPiBoYW5naW5nXC1kb3duXC1vZlwtdGhlXC1lYXJzXC1vZlwtdGhlXC1ncmFpbnM7CivkhI0gPiB5ZWFyXC1lbmRcLXNhY3JpZmljZVwtb2ZcLXRoZVwtemhvdVwtZHluYXN0eTsKK+O9oCA+IGNvbm5lY3Rpb25cLW9mXC10aGVcLWRpdGNoZXNcLW9yXC13YXRlcndheXM7CivjvK4gPiB0b1wtcnViXC1vdXRcLXRoZVwtZmlsdGhcLXdpdGhcLWJyb2tlblwtdGlsZXM7Civjq6kgPiB0aGVcLWZpcnN0XC1vZlwtdGhlXC1mb3VyXC1zZWFzb25cLVwtXC1cLXNwcmluZzsKK++lpCA+IGFcLXRyaWJ1dGFyeVwtb2ZcLXRoZVwtd2VpXC1yaXZlclwtaW5cLXNoYW54aTsKK+OknSA+IHBhbHBpdGF0aW9uXC1vclwtZmx1dHRlcmluZ1wtb2ZcLXRoZVwtaGVhcnQ7CivjpJEgPiBwYWxwaXRhdGlvblwtb3JcLWZsdXR0ZXJpbmdcLW9mXC10aGVcLWhlYXJ0Owor45+MID4gYVwtbW91bnRhaW5cLWluXC10b2RheScnc1wtc2ljaHVhblwtcHJvdmluY2U7CivjlK8gPiBhXC1sYXJnZVwtYmFza2V0XC1mb3JcLWhvbGRpbmdcLWNvb2tlZFwtcmljZTsKK+esmSA+IHNtYWxsXC1nb3VyZFwtc2hhcGVkXC1tdXNpY2FsXC1pbnN0cnVtZW50Owor5ruVID4gYW5cLWFuY2llbnRcLXN0YXRlXC1pblwtc2hhbmRvbmdcLXByb3ZpbmNlOwor6ZWbID4gbGFyZ2VcLWJlbGxcLXVzZWRcLWFzXC1tdXNpY2FsXC1pbnN0cnVtZW50Owor6K61ID4gYW5cLWludGVyamVjdGlvblwtdXNlZFwtZXhwcmVzc1wtc3VycHJpc2U7Civms5QgPiB3YXRlclwtZnJvbVwtd2FzaGluZ1wtcmljZVwtdG9cLWJvaWxcLXRoaWNrOwor55iQID4gdG9cLWRpZVwtaW5cLXByaXNvblwtZnJvbVwtY29sZFwtYW5kXC1odW5nZXI7Civmo7wgPiBiZWFtc1wtaW5cLXRoZVwtcm9vZlwtb2ZcLWFcLWhvdXNlXC1jb25mdXNlZDsKK+m6hSA+IGFcLXNtYWxsXC1zcG90dGVkXC1kZWVyXC1mb3VuZFwtaW5cLW5cLmNoaW5hOwor6Zi8ID4gdGhlXC1zdGVwc1wtbGVhZGluZ1wtdG9cLXRoZVwtZWFzdGVyblwtZG9vcjsKK+i8lyA+IGFcLWNyb3NzXC1iYXJcLWF0XC1lbmRcLW9mXC1hXC1jYXJyaWFnZVwtcG9sZTsKK+ipjiA+IGludGVyamVjdGlvblwtdXNlZFwtdG9cLWV4cHJlc3NcLXN1cnByaXNlOwor57yMID4gY29hcnNlXC1jb3R0b25cLWNsb3RoXC11c2VkXC1mb3JcLW1vdXJuaW5nOwor57emID4gY29hcnNlXC1jb3R0b25cLWNsb3RoXC11c2VkXC1mb3JcLW1vdXJuaW5nOwor56GcID4gdGhlXC1zb3VuZFwtb2ZcLXN0b25lc1wta25vY2tpbmdcLXRvZ2V0aGVyOwor54qJID4gYW5cLW94XC13aXRoXC15ZWxsb3dcLWhhaXJcLWFuZFwtYmxhY2tcLWxpcHM7CivnhZ0gPiB0d2lzdGVkXC1wYXBlclwtZm9yXC1saWdodGluZ1wtY2lnYXJldHRlczsKK+W4rCA+IHRoZVwtc2tpcnRcLW9mXC1hXC1sYWR5JydzXC1kcmVzc1wtcGV0dGljb2F0Owor5bWgID4gYVwtdmFsbGV5XC13aXRoXC1hXC1zdHJlYW1cLWluXC1pdFwuXC1hXC1nb3JnZTsKK+SxlyA+IGFcLWxvbmdcLW5hcnJvd1wtZmlzaFwtdHJpY2hpdXJ1c1wtYXJtYXR1czsKK+SxlCA+IGFcLWxvbmdcLW5hcnJvd1wtYW5kXC1zaWx2ZXJcLWNvbG9yZWRcLWZpc2g7CivkqpMgPiBhXC1tZXRhbFwtb3JuYW1lbnRcLW9uXC1zb21lXC1raW5kXC1vZlwtYmVsdDsKK+SomSA+IHRvXC1yYWluXC1jYXRzXC1hbmRcLWRvZ3NcLWZvclwtYVwtbG9uZ1wtdGltZTsKK+SmiiA+IGFuXC1hcHBsaWFuY2VcLWZvclwtd2Fsa2luZ1wtb25cLXRoZVwtc2FuZHM7CivkpYIgPiB0aGVcLXNoYXJwXC1lZGdlXC1vZlwtYVwtc2hvdmVsXC1vclwtYVwtc3BhZGU7CivkoZUgPiB0aGVcLXJlYXJcLXBsYXRmb3JtXC1vZlwtYVwtbGlnaHRcLWNhcnJpYWdlOwor5JyUID4gdG9cLXNwZWFrXC1vblwtdGhlXC1pZGVhc1wtb2ZcLXNvbWVvbmVcLWVsc2U7CivklqAgPiBhXC1raW5kXC1vZlwtbGl6YXJkXC1mb3VuZFwtaW5cLWRhbXBcLXBsYWNlczsKK+SWnCA+IHRoZVwtZmlnaHRpbmdcLXNvdW5kXC1tYWRlXC1ieVwtdHdvXC10aWdlcnM7CivkjpIgPiBmbHlpbmdcLXF1aWNrbHlcLWFuZFwtdG9cLWF0dGFja1wtc3VkZGVubHk7Civki4ogPiBkZWNvcmF0aW9uc1wtb2ZcLXRoZVwtZW1wZXJvcicnc1wtY2FycmlhZ2U7CivkgJsgPiB0b1wtbG9va1wtZmFyXC13aXRoXC10aGVcLWV5ZXNcLWhhbGZcLWNsb3NlZDsKK+O8qCA+IGFcLXdhdGVyXC1qYXJcLXdpdGhcLWVhcnNcLWZvclwtY2FycnlpbmdcLWl0Owor47uOID4gYVwtbGFyZ2VcLWhvcml6b250YWxcLW11c2ljYWxcLWluc3RydW1lbnQ7CivjuqogPiBhblwtdW5jYXJ2ZWRcLW9mXC11bnBvbGlzaGVkXC1qYWRlXC1vclwtZ2VtOwor47W/ID4gZW5kbGVzc2x5XC1sb25nXC1vclwtdmFzdFwtd2F0ZXJcLWN1cnJlbnRzOwor47SpID4gbmFtZVwtb2ZcLWFcLXN0cmVhbVwtaW5cLXNoYW5kb25nXC1wcm92aW5jZTsKK+OvmCA+IGFcLXNtYWxsXC13b29kZW5cLXN0YW5kXC1oYXZpbmdcLWZvdXJcLWxlZ3M7CivjpI0gPiBuZXZlclwtcmV2ZWFsXC1vbmUnJ3NcLWZlZWxpbmdcLW9yXC1lbW90aW9uOwor46OgID4gYVwtcm9wZVwtZGVjb3JhdGVkXC13aXRoXC1icm9uemVcLW9ybmFtZW50Owor46GRID4gYW5jaWVudFwtbW91cm5pbmdcLXR1cmJhblwtd29yblwtYnlcLXdvbWVuOwor46CRID4gaGlnaFwtbW91bnRhaW5cLXN0ZWVwXC1ydWdnZWRcLWFuZFwtdW5ldmVuOwor46CEID4gbmFtZVwtb2ZcLWFcLW1vdW50YWluXC1pblwteXVubmFuXC1wcm92aW5jZTsKK+OggSA+IGlycmVndWxhclwtb3V0bGluZVwtb2ZcLWFcLXJhbmdlXC1vZlwtaGlsbHM7Civjn5ogPiBuYW1lXC1vZlwtYVwtbW91bnRhaW5cLWluXC1zaGFueGlcLXByb3ZpbmNlOwor456/ID4gbmFtZVwtb2ZcLWFcLW1vdW50YWluXC1pblwtc2hhbnhpXC1wcm92aW5jZTsKK+OeuSA+IG5hbWVcLW9mXC1hXC1tb3VudGFpblwtaW5cLXNoYW54aVwtcHJvdmluY2U7CivjmrYgPiB3aWZlXC1vZlwtb25lJydzXC1odXNiYW5kJydzXC1lbGRlclwtYnJvdGhlcjsKK+OYiCA+IGFibGVcLXRvXC10YWtlXC1hXC1jb3JyZWN0XC12aWV3XC1vZlwtdGhpbmdzOwor45ewID4gdGhlXC1jaGFyYWN0ZXJcLXVzZWRcLWluXC10cmFuc2xpdGVyYXRpb247Civjkr8gPiBhXC1raW5kXC1vZlwtdHVyYmFuXC11c2VkXC1pblwtYW5jaWVudFwtdGltZTsKK+W8gSA+IGNvbmljYWxcLWNhcFwtd29yblwtZHVyaW5nXC16aG91XC1keW5hc3R5Owor6YWJID4gdGVudGhcLW9mXC10aGVcLXR3ZWx2ZVwtZWFydGhseVwtYnJhbmNoZXM7Civml4wgPiBiYW5uZXJcLW9yXC1mbGFnXC1hZG9ybmVkXC13aXRoXC1mZWF0aGVyczsKK+ihriA+IGNlcmVtb25pYWxcLWRyZXNzXC13b3JuXC1ieVwtdGhlXC1lbXBlcm9yOwor5rqnID4gcml2ZXJcLWluXC1hbmh1aVwtYW5kXC1qaWFuZ3N1XC1wcm92aW5jZXM7Civns40gPiBmb29kXC1tYWRlXC1vZlwtY3J1c2hlZFwtYW5kXC1jb29rZWRcLXJpY2U7CivmrpsgPiB0b1wtcHV0XC10b1wtZGVhdGhcLXRvXC1pbXByaXNvblwtZm9yXC1saWZlOwor54uNID4gc3BlY2llc1wtb2ZcLWRlZXJcLWZvdW5kXC1pblwtbm9ydGhcLWNoaW5hOwor57uCID4gcmliYm9uXC1vclwtY29yZFwtdXNlZFwtYXR0YWNoXC1vcm5hbWVudHM7Civno4kgPiB0aGVcLXN0b25lXC1iYXNlXC1vclwtcGxpbnRoXC1vZlwtYVwtcGlsbGFyOwor6JW5ID4gaXBvbW9lYVwtYXF1YXRpY2FcLXVzZWRcLWFzXC1hXC12ZWdldGFibGU7CivpvYggPiBjb2xkXC1pblwtdGhlXC1oZWFkXC1jYXRhcnJoXC1vZlwtdGhlXC1ub3NlOwor6bm7ID4gaW1wdXJlXC1jYXJib25hdGVcLW9mXC1zb2RpdW1cLW9mXC1uYXRyb247CivptqIgPiBhXC1iaXJkXC13aGljaFwtZnJlcXVlbnRzXC10aGVcLXNlYVwtc2hvcmU7Civpg6ogPiBuYW1lXC1vZlwtYVwtc3RyZWFtXC1pblwtc2ljaHVhblwtcHJvdmluY2U7CivovZ4gPiBhXC12ZWhpY2xlXC1mb3JcLXRyYW5zcG9ydGluZ1wtcHJpc29uZXJzOwor6Ly5ID4gdHdvXC1waWVjZXNcLW9mXC13b29kXC11bmRlcm5lYXRoXC1hXC1jYXJ0Owor6KKeID4gY2VyZW1vbmlhbFwtZHJlc3NcLXdvcm5cLWJ5XC10aGVcLWVtcGVyb3I7Civoir8gPiBncmFzc1wtd2hpY2hcLWhhc1wtYmVlblwtY3V0XC1hbmRcLXJlZ3Jvd247Civog6wgPiBhXC1kaXNlYXNlJydzXC1uYW1lXC1pblwtY2hpbmVzZVwtbWVkaWNpbmU7CivntLEgPiByaWJib25cLW9yXC1jb3JkXC11c2VkXC1hdHRhY2hcLW9ybmFtZW50czsKK+emiiA+IHNlbWlcLWFubnVhbFwtY2VyZW1vbnlcLW9mXC1wdXJpZmljYXRpb247CivmiKUgPiBhXC1zbWFsbFwtc3RlZWx5YXJkXC1mb3JcLXdlaWdoaW5nXC1tb25leTsKK+WvjSA+IHVzZWRcLWFzXC1hXC10ZXJtXC1vZlwtY29tcGFyaXNvblw6XC1yYXRoZXI7CivlkpcgPiB2ZXJiYWxcLXBhcnRpY2xlXC1vZlwtcGVyZmVjdGl2ZVwtYXNwZWN0Owor5LixID4gY2hpbGQnJ3NcLWhhaXJzdHlsZVwtYm91bmRcLWluXC10d29cLXR1ZnRzOwor5K6kID4gb25lXC1vZlwtdGhlXC0zNlwtZ2FyZGVuc1wtaW5cLWhhblwtZHluYXN0eTsKK+SsrSA+IG5hbWVcLW9mXC1hXC1sZWdlbmRhcnlcLWZlcm9jaW91c1wtYW5pbWFsOwor5KqUID4gY3Jvc3NcLWJhclwtb2ZcLXdvb2RcLXVuZGVyXC10aGVcLWNhcnJpYWdlOwor5KekID4gbmFtZVwtb2ZcLWFcLXJpdmVyXC1pblwtc2hhbmRvbmdcLXByb3ZpbmNlOwor5KSMID4gYVwta2luZFwtb2ZcLXdpbmVcLWJlXC1icmV3ZWRcLWZyb21cLWdyYWluczsKK+SgtyA+IHRoZVwtYXBwZWFyYW5jZVwtb2ZcLWhlaWdodFwtaW5cLWFcLXBlcnNvbjsKK+SghSA+IGhhbmRzXC1hbmRcLWZlZXRcLWNoYXBwZWRcLWZyb21cLXRoZVwtY29sZDsKK+SdpCA+IGFcLXByaW1pdGl2ZVwtdHJpYmVcLWluXC1zb3V0aHdlc3RcLWNoaW5hOwor5J2fID4gYVwtZmllcmNlXC1tYW5cLWVhdGluZ1wtYW5pbWFsXC1pblwtbGVnZW5kOwor5J2dID4gYW5cLWV4Y2xhbWF0aW9uXC1pbmRpY2F0aW5nXC1hZG1pcmF0aW9uOwor5JuTID4gYW5cLW9mZmljaWFsXC1wb3NpdGlvblwtaW5cLWZvcm1lclwtdGltZXM7CivkmpggPiB0aGVcLWxvbmdcLWFuZFwtdXByaWdodFwtaG9ybnNcLW9mXC1jYXR0bGU7CivklpIgPiBlYXJ0aGVud2FyZVwtd2l0aFwtdGhlXC1zaGFwZVwtb2ZcLWFcLWJlYW47CivklY4gPiBuYW1lXC1vZlwtYVwtdmFyaWV0eVwtb2ZcLWdyYXNzXC1wZXJlbm5pYWw7Civkk5EgPiBuYW1lXC1vZlwtYVwtdmFyaWV0eVwtb2ZcLWdyYXNzXC1kdWNrd2VlZHM7CivkkZcgPiB0b1wtcG91bmRcLWluXC1vcmRlclwtdG9cLXJlbW92ZVwtdGhlXC1odXNrOwor5JGUID4gdG9cLXBvdW5kXC1pblwtb3JkZXJcLXRvXC1yZW1vdmVcLXRoZVwtaHVzazsKK+SQsSA+IHRvXC1waWNrXC10aGVcLW1lYXRcLWluXC1iZXR3ZWVuXC1vZlwtYm9uZXM7Civkj4EgPiB1bmFibGVcLXRvXC1oZWFyXC1kaXN0aW5jdGx5XC1vclwtY2xlYXJseTsKK+SKoCA+IHRvXC1naXZlXC1hXC1zdXBwbHlcLWZcLWdyYWluXC1mb3JcLXJhdGlvbnM7CivkiZ8gPiBhXC1iYW1ib29cLWJhc2tldFwtdXNlZFwtdG9cLWNhdGNoXC1maXNoZXM7CivkiLAgPiBhXC1icnVzaFwtZm9yXC13YXNoaW5nXC1raXRjaGVuXC11dGVuc2lsczsKK+SHvCA+IGFcLWJhbWJvb1wtdmVzc2VsXC11c2VkXC10b1wtY2F0Y2hcLWZpc2hlczsKK+SEqyA+IGFcLWtpbmRcLW9mXC1zb3JnaHVtXC13aXRoXC13aGl0ZVwtc3Byb3V0czsKK+SEiCA+IHNhY3JpZmljZVwtdG9cLWhhcHBpbmVzc1wtYW5kXC1nb29kXC1sdWNrOwor5IOkID4gYmxhY2tcLWNvbG9yZWRcLWdyaW5kc3RvbmVcLW9yXC13aGVzdG9uZTsKK+SDjiA+IG5hbWVcLW9mXC1hXC1wbGFjZVwtXC1zbWFsbFwtcGllY2VcLW9mXC1jb2FsOwor5IK/ID4gdG9cLXBvdW5kXC1pblwtb3JkZXJcLXRvXC1yZW1vdmVcLXRoZVwtaHVzazsKK+SCuSA+IHNvdW5kXC1vZlwtdGhlXC1mYWxsaW5nXC1waWVjZXNcLW9mXC1yb2NrczsKK+SBtiA+IHRvXC1sb29rXC1hdFwtc29tZXRoaW5nXC13aXRob3V0XC13aW5raW5nOwor5IG1ID4gbmV3Ym9yblwtYmFieVwtd2l0aFwtdGhlXC1leWVsaWRzXC1jbG9zZWQ7CivjvYUgPiB2ZXNzZWxcLWZvclwtY2VyZW1vbnlcLWluXC1hbmNpZW50XC10aW1lczsKK+O4uSA+IGNhdHRsZVwtd2l0aFwtd2hpdGVcLXN0cmlwZVwtb25cLXRoZVwtYmFjazsKK+O4lyA+IG5vdFwtYVwtcmVhbFwtZmF0aGVyXC1vclwtYVwtbmF0dXJlXC1mYXRoZXI7Civjs5ggPiBhXC1mb3VudGFpblwtb3JcLXNwcmluZ1wtZmxvd3NcLWRvd253YXJkczsKK+OuryA+IHdob2xlXC1waWVjZVwtb2ZcLW9yXC11bmJyb2tlblwtZmlyZXdvb2RzOwor466cID4gYVwtYmxvY2tzXC1lbmdyYXZlZFwtZm9yXC1ob2xkaW5nXC10aGluZ3M7Civjq6ogPiB0b1wtcG91bmRcLWluXC1vcmRlclwtdG9cLXJlbW92ZVwtdGhlXC1odXNrOwor45+8ID4gbmFtZVwtb2ZcLWFcLXBsYWNlXC1pblwtc2hhbmRvbmdcLXByb3ZpbmNlOwor456UID4gdGhlXC11cHJpZ2h0XC1iYXJcLWZvclwtZmFzdGVuaW5nXC1hXC1kb29yOwor452eID4gcHJldGVuZFwtdG9cLWJlXC1kZWxpY2F0ZVwtYW5kXC1iZWF1dGlmdWw7CivjnLkgPiBuYW1lXC1vZlwtYVwtZm9sa1wtc29uZ1wtaW5cLWFuY2llbnRcLXRpbWVzOwor45qBID4gdGhlXC1sb25nXC10YWlsXC1mZWF0aGVyc1wtd2hpY2hcLWN1cmxcLXVwOwor6ZiuID4gYW5jaWVudFwtbXVzaWNhbFwtaW5zdHJ1bWVudFw6XC1zdXJuYW1lOwor5ZaUID4gZGVzY3JpcHRpdmVcLW9mXC1jcnlpbmdcLW9yXC1vZlwtY3Jvd2luZzsKK+eQjyA+IHZlc3NlbFwtdXNlZFwtdG9cLWhvbGRcLWdyYWluXC1vZmZlcmluZ3M7CivpgpUgPiBmb3JtZXJcLW9yXC1saXRlcmFyeVwtbmFtZVwtZm9yXC1uYW5uaW5nOwor6a2RID4gYVwtbW91bnRhaW5cLWRlbW9uXC1yZXNlbWJsaW5nXC1hXC10aWdlcjsKK+aYtiA+IGFcLWxvbmdcLWRheVwuXC1icmlnaHRcLlwtZXh0ZW5kZWRcLlwtY2xlYXI7CivnvKcgPiBhXC1jaGFpblwtb3JcLXJvcGVcLXVzZWRcLWJpbmRcLWNyaW1pbmFsczsKK+ierSA+IGFcLWRyYWdvblwtd2hvc2VcLWhvcm5zXC1oYXZlXC1ub3RcLWdyb3duOwor6b6AID4gbG9zZVwtYmFieVwtdGVldGhcLWFuZFwtZ2V0XC1hZHVsdFwtdGVldGg7CivogpwgPiB0b1wtc2FjcmlmaWNlXC1vblwtdHdvXC1zdWNjZXNzaXZlXC1kYXlzOwor6YKXID4gYW5cLWFuY2llbnRcLXBsYWNlXC1pblwtdGhlXC1zdGF0ZVwtb2ZcLXd1Owor6b6GID4gbG9zZVwtYmFieVwtdGVldGhcLWFuZFwtZ2V0XC1hZHVsdFwtdGVldGg7CivpvaAgPiBsb3NlXC1iYWJ5XC10ZWV0aFwtYW5kXC1nZXRcLWFkdWx0XC10ZWV0aDsKK+m9lCA+IGxvc2VcLWJhYnlcLXRlZXRoXC1hbmRcLWdldFwtYWR1bHRcLXRlZXRoOwor6ZCkID4gaHVnZVwtdHJpcG9kXC1vZlwtYnJvbnplXC13aXRoXC10d29cLWVhcnM7Civop60gPiBvbmVcLXR1cm5pbmdcLXVwXC1hbmRcLW9uZVwtdHVybmluZ1wtZG93bjsKK+iksSA+IHRvXC1jYXJyeVwtaW5cLXRoZVwtYm9zb21cLW9yXC10aGVcLXNsZWV2ZTsKK+ikoiA+IHRvXC1jYXJyeVwtaW5cLXRoZVwtYm9zb21cLW9yXC10aGVcLXNsZWV2ZTsKK+iJnCA+IGFcLWxvbmdcLW5hcnJvd1wtdmVzc2VsXC13aXRoXC10d29cLW1hc3RzOwor6Ie/ID4gdG9cLXNlcGFyYXRlXC10aGVcLWdyYWluXC1mcm9tXC10aGVcLWh1c2s7CivnuLIgPiBhXC1jaGFpblwtb3JcLXJvcGVcLXVzZWRcLWJpbmRcLWNyaW1pbmFsczsKK+e1sCA+IHdoaXRlXC1oZW1wZW5cLWNsb3RoXC13b3JuXC1ieVwtbW91cm5lcnM7CivnoqogPiBzdG9uZVwtc2xhYlwtdXNlZFwtZm9yXC13YXNoaW5nXC1jbG90aGVzOwor55uHID4gd2h5XC1ub3RcP1wtd291bGRcLWl0XC1ub3RcLWJlXC1iZXR0ZXJcLXRvXD87Civmu6sgPiB3YXRlclwtaW5cLXdoaWNoXC1yaWNlXC1oYXNcLWJlZW5cLWJvaWxlZDsKK+aqkSA+IGxvZ3NcLXJvbGxlZFwtZG93blwtaW5cLWRlZmVuc2VcLW9mXC1jaXR5Owor5qOzID4gc21hbGxcLXBpbGxhcnNcLXRoYXRcLXN1cHBvcnRcLXRoZVwtcm9vZjsKK+W4lyA+IGFcLW11bHRpY29sb3JlZFwtcHJvcFwtdXNlZFwtaW5cLWRhbmNpbmc7CivlmKAgPiB0aGVcLWNoaXJwaW5nXC1vZlwtYmlyZHNcLWxvdWRcLWxhdWdodGVyOwor5ZSEID4gZmluYWxcLXBhcnRpY2xlXC1vZlwtYXNzZXJ0aW9uXC1wYXRoYWthOwor5YC7ID4gcGhvbmV0aWNcLXVzZWRcLWluXC1rb3JlYW5cLXBsYWNlXC1uYW1lczsKK+S1uiA+IGJvdW5kYXJ5XC1iZXR3ZWVuXC1hZ3JpY3VsdHVyYWxcLWxhbmRzOwor5LW5ID4gaW5zZWN0c1wtdGhhdFwtYXJlXC1pbmp1cmlvdXNcLXRvXC1jcm9wczsKK+StjSA+IHRvXC1saXZlXC13aXRoXC1hbm90aGVyXC1hdFwtaGlzXC1leHBlbnNlOwor5KylID4gY29va2VkXC1mb29kXC13aGljaFwtaGFzXC1iZWNvbWVcLW1vdWxkeTsKK+SsmSA+IHRvXC1kYW5jZVwtYW5kXC10b3NzXC1hYm91dFwtaW5cLXRoZVwtd2luZDsKK+SgqyA+IHRvXC1zdWNjdW1iXC10b1wtdGhlXC1lZmZlY3RcLW9mXC1hbGNvaG9sOwor5J2mID4gYVwta2luZFwtb2ZcLWFuaW1hbFwtbG9va3NcLWxpa2VcLWxlb3BhcmQ7CivknKAgPiBsYW5ndWFnZVwtb2ZcLXRoZVwtc2F2YWdlXC1vclwtYmFyYmFyaWFuOwor5Ja6ID4gYVwtbGVnZW5kYXJ5XC1hbmltYWxcLWluXC1hbmNpZW50XC10aW1lczsKK+SWpSA+IGluc2VjdHNcLXRoYXRcLWFyZVwtaW5qdXJpb3VzXC10b1wtY3JvcHM7CivkkrwgPiBhXC1iYW1ib29cLXRyYXlcLWZvclwtcmFpc2luZ1wtc2lsa3dvcm1zOwor5JGzID4gYVwtaG9yaXpvbnRhbFwtYmFyXC1pblwtZnJvbnRcLW9mXC1hXC1ib2F0Owor5JCnID4gdG9cLXJld2FyZFwtb3JcLWNoZWVyXC10cm9vcHNcLXdpdGhcLWZvb2Q7CivkjrAgPiBuYW1lXC1vZlwtYVwtcGxhY2VcLWluXC1zaWNodWFuXC1wcm92aW5jZTsKK+SNnyA+IGFcLWtpbmRcLW9mXC1maXNoXC1uZXRcLXdpdGhcLWZpbmVcLW1lc2hlczsKK+SHqCA+IGFcLWJhbWJvb1wtYmFza2V0XC1mb3JcLWZvb2RcLWNvbnRhaW5lcnM7Civkho4gPiBncmFzc1wtYW5kXC1ncmFpbnNcLXByb2R1Y2luZ1wtbm9cLWZydWl0Owor5IS7ID4gYVwtc2Vjb25kXC10aW1lXC1ncm93aW5nXC1vZlwtcmljZVwtcGxhbnQ7CivkgJogPiB0b1wtbGlmdFwtdXBcLXRoZVwtZXllc1wtYW5kXC1sb29rXC1hcm91bmQ7Civjv5YgPiBjYXJidW5jbGVcLXVzZWRcLWluXC1uYW1pbmdcLW9mXC1hXC1wbGFjZTsKK+O6myA+IG5hbWVcLW9mXC1hXC12aWxsYWdlXC1pblwtaGVuYW5cLXByb3ZpbmNlOwor47eIID4gZW1iZXJzXC1rZXB0XC1mb3JcLXN0YXJ0aW5nXC1hXC1uZXdcLWZpcmU7CivjtYEgPiB2YXN0XC1hbmRcLWJvdW5kbGVzc1wtb2ZcLWZsb3dpbmdcLXdhdGVyOwor47OVID4gd2F0ZXJcLWluXC13aGljaFwtcmljZVwtaGFzXC1iZWVuXC13YXNoZWQ7Civjr6ogPiBjYXJ2ZWRcLW9yXC1wYXR0ZXJuZWRcLXdpbmRvd1wtcmFpbGluZ3M7Civjq4AgPiBodWdlXC10cmlwb2RcLW9mXC1icm9uemVcLXdpdGhcLXR3b1wtZWFyczsKK++mlCA+IHZlc3NlbFwtdXNlZFwtdG9cLWhvbGRcLWdyYWluXC1vZmZlcmluZ3M7CivjoJkgPiBhXC1tb3VudGFpblwtcGF0aHNcLW5hbWVcLW9mXC1hXC1tb3VudGFpbjsKK+OTrSA+IHRvXC1tYWtlXC1yZWFkeVwtdGhlXC1sZWF0aGVyXC1mb3JcLXNob2VzOwor45C3ID4gYVwta2luZFwtb2ZcLXB1bmlzaG1lbnRcLWluXC1oYW5cLWR5bmFzdHk7CivoorEgPiBhXC1waWVjZVwtb2ZcLWNsb3RoXC11c2VkXC13cmFwXC1idW5kbGVzOwor5oyyID4gdG9cLWZlZWxcLW9yXC1mb25kbGVcLXdpdGhcLXRoZVwtZmluZ2VyczsKK+evkSA+IGFcLWJhbWJvb1wtYmFza2V0XC1mb3JcLWNhcnJ5aW5nXC1lYXJ0aDsKK+iCkyA+IHJlZ2lvblwtYmV0d2VlblwtaGVhcnRcLWFuZFwtZGlhcGhyYWdtOwor5rumID4gcml2ZXJcLWFuZFwtY291bnR5XC1pblwtaGViZWlcLXByb3ZpbmNlOwor6YOXID4gY2l0eVwtdW5kZXJcLXRoZVwtY2hvdVwtZHluXC5cLWFcLXN1cm5hbWU7Civnj48gPiB0d29cLXBpZWNlc1wtb2ZcLWphZGVcLWpvaW5lZFwtdG9nZXRoZXI7CivntqYgPiBkYXJrXC1ncmV5XC5cLXZhcmllZ2F0ZWRcLlwtc3VwZXJsYXRpdmU7CivpuocgPiBnZW5lcmFsXC1uYW1lXC1mb3JcLXRoZVwtaG9ybmxlc3NcLWRlZXI7Civnko4gPiBhXC1uZWNrbGFjZVwtbWFkZVwtb2ZcLXByZWNpb3VzXC1zdG9uZXM7Civmjr4gPiBhXC1nZW5lcmFsXC1kZXNpZ25hdGlvblwtb2ZcLW9mZmljaWFsczsKK+mDhyA+IGFuXC1hbmNpZW50XC1mZXVkYWxcLXN0YXRlXC1pblwtc2hhYW54aTsKK+m+mCA+IHRoZVwtYXBwZWFyYW5jZVwtb2ZcLWFcLWRyYWdvblwtd2Fsa2luZzsKK+m0vSA+IGFcLXNwZWNpZXNcLW9mXC1iaXJkXC1yZXNlbWJsaW5nXC1xdWFpbDsKK+mEqyA+IHN0YXRlXC1pblwtdG9kYXknJ3NcLXNoYW5kb25nXC1wcm92aW5jZTsKK+mEhyA+IGFcLW5hbWVcLW9mXC1hXC10b3duXC1pblwtaGVuYW5cLXByb3ZpbmNlOwor6L+/ID4gdG9cLWJlXC10aGVcLWZpcnN0XC10b1wtYmVnaW5cLWFcLXF1YXJyZWw7CivovZUgPiBncmVhdFwtYXJyYXlcLW9mXC1zcGVhcnNcLWFuZFwtY2hhcmlvdHM7CivovLUgPiBncmVhdFwtYXJyYXlcLW9mXC1zcGVhcnNcLWFuZFwtY2hhcmlvdHM7CivovKAgPiBncmVhc2VcLXBvdFwtaHVuZ1wtdW5kZXJcLWF4bGVcLW9mXC1jYXJ0Owor6IayID4gdGhlXC10aHJlZVwtZGl2aXNpb25zXC1vZlwtdGhlXC12aXNjZXJhOwor57SWID4gYVwtcm9wZVwtZm9yXC1sZWFkaW5nXC1jYXR0bGVcLW9yXC1ob3JzZTsKK+ewoyA+IGFcLWJhbWJvb1wtYmFza2V0XC1mb3JcLWNhcnJ5aW5nXC1lYXJ0aDsKK+esriA+IGJvYXJkc1wtd2hpY2hcLXN1cHBvcnRcLXRpbGVzXC1vblwtcm9vZjsKK+eghSA+IGNyb3NzXC1zdHJlYW1cLWJ5XC1zdGVwcGluZ1wtb25cLXN0b25lczsKK+eTlCA+IGFcLW5lY2tsYWNlXC1tYWRlXC1vZlwtcHJlY2lvdXNcLXN0b25lczsKK+eSiSA+IGFcLXZlc3NlbFwtdXNlZFwtaG9sZFwtZ3JhaW5cLW9mZmVyaW5nczsKK+ePsSA+IGFcLW5lY2tsYWNlXC1tYWRlXC1vZlwtcHJlY2lvdXNcLXN0b25lczsKK+eOqCA+IHR3b1wtcGllY2VzXC1vZlwtamFkZVwtam9pbmVkXC10b2dldGhlcjsKK+eBpCA+IHJpdmVyXC1hbmRcLWNvdW50eVwtaW5cLWhlYmVpXC1wcm92aW5jZTsKK+aioSA+IHRyYXlcLWZvclwtY2FycnlpbmdcLXNhY3JpZmljaWFsXC1tZWF0Owor5oyxID4gdG9cLWZlZWxcLW9yXC1mb25kbGVcLXdpdGhcLXRoZVwtZmluZ2VyczsKK+W5tSA+IGV2ZW5cLWxldmVsXC5cLXRvXC1yYWlzZVwtaW5cLWJvdGhcLWhhbmRzOwor5auEID4gYW5cLWFuY2llbnRcLWVtcGVyb3InJ3NcLW1vdGhlcicnc1wtbmFtZTsKK+WbtyA+IHJvdW5kXC1zaGFwZWRcLXN0b3JhZ2VcLWJpblwtZm9yXC1ncmFpbjsKK+S0mSA+IGFcLWtpbmRcLW9mXC1iaXJkXC1yZXNlbWJsaW5nXC10aGVcLWR1Y2s7CivksoMgPiBhXC1jYXJwXC1saWtlXC1maXNoXC13aXRoXC1jaGlja2VuXC1mZWV0Owor5KmXID4gdG9cLXJ1bGVcLWJ5XC1taWdodFwtcmF0aGVyXC10aGFuXC1yaWdodDsKK+SilSA+IGFcLWdyb3VwXC1vZlwtcGVvcGxlXC13YWxraW5nXC10b2dldGhlcjsKK+SaoSA+IGJvbmVzXC1pblwtYVwtaG9yblwtb2ZcLWNhdHRsZVwtYW5kXC1nb2F0Owor5JmsID4gcGxhaXRzXC1vblwtdGhlXC1zaWRlc1wtb2ZcLWFcLXBldHRpY29hdDsKK+SQgCA+IHRvXC1kaXNtZW1iZXJcLWJvZHlcLW9mXC10aGVcLWxpdmVzdG9jazsKK+SOjiA+IHRvXC1nbGlkZVwtb3JcLXRvXC1ob3ZlclwtdXBcLWluXC10aGVcLWFpcjsKK+SNiiA+IGNsYXlcLW1hZGVcLWJsb3dpbmdcLXdpbmRcLWluc3RydW1lbnRzOwor5Ii/ID4gYmVsdFwtb2ZcLXRoZVwtY2FudmFzXC10b3BcLW9uXC12ZWhpY2xlczsKK+SHriA+IGFcLWJhbWJvb1wtbWF0XC11c2VkXC1pblwtYW5jaWVudFwtdGltZXM7CivkhZogPiBjbG9zZWx5XC1ncm93aW5nXC1vZlwtdGhlXC1yaWNlXC1wbGFudHM7CivkhLYgPiByaWNlXC1wbGFudFwtZ3Jvd2luZ1wtdGhlXC1zZWNvbmRcLXRpbWU7Civkgb4gPiByZWRcLWFuZFwtc3dlbGxpbmdcLW9mXC10aGVcLWV5ZVwtc29ja2V0Owor5IGoID4gdG9cLW9wZW5cLXRoZVwtZXllc1wtd2l0aFwtYXN0b25pc2htZW50Owor472bID4gbmFycm93XC10cmFpbFwtb2ZcLXBhdGhcLWluXC10aGVcLWZpZWxkczsKK+O6kSA+IGRvZ3NcLXdvcm1lZFwtdGhyb3VnaFwtYVwtbmFycm93XC1wbGFjZTsKK+O5oiA+IGFcLWxhcmdlXC1hcGVcLWZvdW5kXC1pblwtd2VzdGVyblwtY2hpbmE7CivjuZwgPiB0d29cLWRvZ3NcLWFyZVwtYmFya2luZ1wtdG9cLWVhY2hcLW90aGVyOwor47mJID4gYVwtbGVnZW5kYXJ5XC1hbmltYWxcLXdpdGhcLXRocmVlXC1mZWV0Owor47emID4gdG9cLW9wZW5cLXRoZVwtZXllc1wtd2l0aFwtYXN0b25pc2htZW50Owor47aAID4gZGVlcFwtYW5kXC12YXN0XC1vZlwtdGhlXC1mbG93aW5nXC13YXRlcjsKK+OwtiA+IHRvXC13cmlua2xlXC10aGVcLW5vc2VcLXdpdGhcLXNvcnJvd2Z1bDsKK+OtsiA+IGFcLXdvb2RlblwtZnJhbWVcLWZvclwtY2FycnlpbmdcLXRoaW5nczsKK+OhoSA+IHNjcmVlblwtdG9cLW1ha2VcLWFcLXRlbXBvcmFyeVwta2l0Y2hlbjsKK+OgvyA+IGFcLWtpbmRcLW9mXC1kZWxpY2F0ZVwtYW5kXC1maW5lXC1mYWJyaWM7CivjnLogPiBuaWNlXC13aGl0ZVwtY29sb3JcLWFuZFwtbG9va3NcLXNvXC1nb29kOwor45y1ID4gd2l0aFwtYVwtY2hhcm1pbmdcLXNwcmlnaHRseVwtY2FycmlhZ2U7CivjmqkgPiB3aXRoXC1hXC1jaGFybWluZ1wtc3ByaWdodGx5XC1jYXJyaWFnZTsKK+OZiCA+IG5hbWVcLW9mXC1hXC1wbGFjZVwtaW5cLXNoYW54aVwtcHJvdmluY2U7CivjlqEgPiB0aGVcLWJpcmRzXC1zaW5naW5nXC1kdXJpbmdcLXRoZVwtbmlnaHQ7CivjlbogPiBsb29rc1wtYmlnXC1vdXRzaWRlXC1idXRcLWVtcHR5XC1pbnNpZGU7CivjlYQgPiB0b1wtYXBwbHlcLWtub3dsZWRnZVwtdG9cLWZpbmFsXC1jYXVzZXM7CivnpL4gPiBnb2RcLW9mXC10aGVcLXNvaWxcLWFuZFwtYWx0YXJzXC10b1wtaGltOwor55GfID4gbGFyZ2VcLXN0cmluZ2VkXC1tdXNpY2FsXC1pbnN0cnVtZW50Owor5qWeID4gdXNlZFwtZm9yXC1jZXlsb25cLWluXC1idWRkaGlzdFwtdGV4dHM7Civllr0gPiB1c2VkXC1pblwtb25vbWF0b3BvZXRpY1wtZXhwcmVzc2lvbnM7CivlmoUgPiB0YWxrXC1pbmRpc3RpbmN0bHlcLWFuZFwtZmFsdGVyaW5nbHk7Civoo7EgPiB0b1wtbW91bnRcLW1hcHNcLW9yXC1zY3JvbGxzXC10b1wtcGFzdGU7CivnjKIgPiBhXC1raW5kXC1vZlwtbW9ua2V5XC1mb3VuZFwtaW5cLXdcLmNoaW5hOwor6JyuID4gYVwtZmFidWxvdXNcLWNyZWF0dXJlXC1saWtlXC1hXC10dXJ0bGU7CivlkZYgPiB1c2VkXC1pblwtb25vbWF0b3BvZXRpY1wtZXhwcmVzc2lvbnM7CivnoqEgPiBzdG9uZVwtcm9sbGVyXC11c2VkXC10b1wtbGV2ZWxcLWZpZWxkczsKK+mEoyA+IG5hbWVcLW9mXC1hbmNpZW50XC1jaXR5XC1pblwtblwuamlhbmdzdTsKK+eyoiA+IGdyYWluXC1vZmZlcmVkXC1pblwtcml0dWFsXC1zYWNyaWZpY2U7CivnsKYgPiBsYXJnZVwtdW1icmVsbGFcLXdpdGhcLWFcLWxvbmdcLWhhbmRsZTsKK+iekyA+IGFcLXNtYWxsXC1jaWNhZGFcLXdpdGhcLWFcLXNxdWFyZVwtaGVhZDsKK+mtiiA+IGFcLW15dGhpY2FsXC1jcmVhdHVyZVwtc2FpZFwtaHVybFwtc2FuOwor6Z+QID4ga25lZVwtcGFkXC1tYWRlXC1vZlwtcmVkXC1keWVkXC1sZWF0aGVyOwor6LuPID4gY3Jvc3NcLWJhclwtYXRcLWVuZFwtb2ZcLXBvbGVzXC1vZlwtY2FydDsKK+iWgCA+IHRoZVwtaGlwcHVyaXNcLW9yXC1tYXJlJydzXC10YWlsXC1wbGFudDsKK+iVsCA+IHRoZVwtaGlwcHVyaXNcLW9yXC1tYXJlJydzXC10YWlsXC1wbGFudDsKK+iBnSA+IHRvXC1jdXRcLXRoZVwtbGVmdFwtZWFyc1wtb2ZcLXRoZVwtc2xhaW47CivogJQgPiB0b1wtaG9lXC11cFwtdGhlXC1lYXJ0aFwtYXJvdW5kXC1wbGFudHM7CivnsKsgPiBtdXNpY2FsXC1pbnN0cnVtZW50XC1saWtlXC1wYW5cLXBpcGVzOwor57CoID4gYVwtYmVhbVwtZm9yXC1oYW5naW5nXC1iZWxsc1wtb3JcLWRydW1zOwor57CYID4gbXVzaWNhbFwtaW5zdHJ1bWVudFwtbGlrZVwtcGFuXC1waXBlczsKK+euviA+IG11c2ljYWxcLWluc3RydW1lbnRcLWxpa2VcLXBhblwtcGlwZXM7CivnpLMgPiBuYW1lXC1vZlwtcGxhY2VcLWluXC1zaGFuXC14aVwtcHJvdmluY2U7CivnoqsgPiBjb2Fyc2VcLXN0b25lXC1cKHVzZWRcLWZvclwtd2hldHN0b25lXCk7Civnkq8gPiBqYWRlXC1vcm5hbWVudFwtaW5cLXRoZVwtc2VhbXNcLW9mXC1jYXA7CivnkK8gPiBhXC1qYWRlXC10dWJlXC11c2VkXC1hc1wtYW5cLWluc3RydW1lbnQ7CivnjoEgPiBhXC1kb2dcLXdpdGhcLWFcLWxvbmdcLXNub3V0XC1vclwtbXV6emxlOwor5qOfID4gdGhlXC1tYWluXC1iZWFtc1wtc3VwcG9ydGluZ1wtYVwtaG91c2U7CivmiKAgPiBhXC1zd29yZFwuXC1wb3R0ZXInJ3NcLWNsYXlcLlwtdG9cLWdhdGhlcjsKK+WapiA+IHVzZWRcLWluXC1vbm9tYXRvcG9ldGljXC1leHByZXNzaW9uczsKK+WYjSA+IHVzZWRcLWluXC1vbm9tYXRvcG9ldGljXC1leHByZXNzaW9uczsKK+WRrSA+IGZpbmFsXC1wYXJ0aWNsZVwtZXhwcmVzc2luZ1wtY29uc2VudDsKK+WRoSA+IHRoZVwtY29ybmVyc1wtb2ZcLXRoZVwtbW91dGhcLXRoZVwtbGlwczsKK+S2rCA+IGhhcmRcLWZpbnNcLW9uXC10aGVcLWJhY2tcLW9mXC1hXC1kcmFnb247CivktoUgPiBhXC1tYXJtb3RcLWxpa2VcLXJhdFwtd2l0aFwtYVwtYmlnXC1oZWFkOwor5LSTID4gZ2VuZXJhbFwtdGVybVwtZm9yXC1zbWFsbFwtYmlyZFwtZ3JvdXA7CivkrJcgPiBibG93blwtb3JcLXRvc3NlZFwtYWJvdXRcLWJ5XC10aGVcLXdpbmQ7Civkp4kgPiBuYW1lXC1vZlwtYVwtcGF2aWxpb25cLWluXC1oYW5cLWR5bmFzdHk7CivkpbYgPiBjb29raW5nXC11dGVuc2lsXC11c2VkXC1pblwtb2xkXC10aW1lczsKK+SlrCA+IGFcLW11c2ljYWxcLWluc3RydW1lbnRcLWluXC1vbGRcLXRpbWVzOwor5KOcID4gbmFtZVwtb2ZcLWFcLWNvdW50eVwtaW5cLWFuY2llbnRcLXRpbWVzOwor5KOWID4gbmFtZVwtb2ZcLWFcLWNvdW50eVwtaW5cLWFuY2llbnRcLXRpbWVzOwor5KOVID4gbmFtZVwtb2ZcLWFcLWNvdW50eVwtaW5cLWFuY2llbnRcLXRpbWVzOwor5KOMID4gcmVzaWRlbmNlXC1vZlwtYVwtcHJpbmNlXC1vclwtbm9iaWxpdHk7CivkoZ0gPiBhXC1yZWFyXC1jb3ZlcmluZ1wtb2ZcLWFcLWJpZ1wtY2FycmlhZ2U7CivkoYogPiB0aGVcLXByb3RydWRlZFwtc2lkZXNcLW9mXC1hXC1jYXJyaWFnZTsKK+SgmiA+IHRvXC1zdGVwXC1vblwtdGhlXC1ncm91bmRcLXdpdGhcLWFcLWJhbmc7CivkloMgPiB0aGVcLXdhdGVyXC1pc1wtd2F2aW5nXC1pblwtdGhlXC1icmVlemU7CivklaQgPiBuYW1lXC1vZlwtYVwtY291bnR5XC1pblwtYW5jaWVudFwtdGltZXM7CivkkqcgPiBhXC12ZXNzZWxcLW9yXC11dGVuc2lsXC1tYWRlXC1vZlwtc3RyYXc7CivkjbIgPiBhXC1raW5kXC1vZlwtc2hlZXBcLXdpdGhcLWN1cmxlZFwtaGFpcnM7Civki7ggPiBiYWNrXC1jZW50ZXJcLXN1dHVyZVwtb2ZcLXRoZVwtY2xvdGhlczsKK+SLmyA+IHRoZVwtY2x1c3RlcmVkXC1lbWJyb2lkZXJ5XC1wYXR0ZXJuczsKK+SKliA+IHRvXC1lYXRcLXJpY2VcLWdydWVsXC1taXhlZFwtd2l0aFwtbWVhdDsKK+SGhSA+IHRvXC1hY2N1bXVsYXRlXC1vclwtdG9cLXN0b3JlXC11cFwtcmljZTsKK+SCpyA+IHJvY2tzXC1jbHVzdGVyZWRcLXBpbGVcLXVwXC10b2dldGhlcnM7CivkgL8gPiB0b1wtaGF2ZVwtYVwtY2FzdWFsXC1hbmRcLXNob3J0XC1nbGFuY2U7CivkgLggPiB0b1wtaGF2ZVwtYVwtY2FzdWFsXC1hbmRcLXNob3J0XC1nbGFuY2U7CivjuZcgPiBjYXR0bGVcLWFuZFwtc2hlZXBcLWhhdmVcLW5vXC1jaGlsZHJlbjsKK+O2siA+IG1lYXN1cmluZ1wtdW5pdFwtZm9yXC10aGVybW9keW5hbWljczsKK+O1uiA+IG5hbWVcLW9mXC1hXC1zdHJlYW1cLWluXC1hbmNpZW50XC10aW1lczsKK+O1kCA+IG5hbWVcLW9mXC1hXC1yaXZlclwtaW5cLWh1YmVpXC1wcm92aW5jZTsKK+O1iyA+IG5hbWVcLW9mXC1hXC1yaXZlclwtaW5cLWh1bmFuXC1wcm92aW5jZTsKK+OxkiA+IHRvXC1zY29sZFwtb3JcLWJsYW1lXC1pblwtYVwtbG91ZFwtdm9pY2U7Civjrr4gPiBhXC1wbGFjZVwtaW5cLXRvZGF5JydzXC1odW5hblwtcHJvdmluY2U7CivjrIggPiB0aGVcLXN1blwtd2FzXC1zaGluaW5nXC1hbmRcLWl0JydzXC13YXJtOwor46qKID4gaW5mZXN0ZWRcLXdpdGhcLWJhbmRpdHNcLWFuZFwtcm9iYmVyczsKK+OomCA+IHRvXC1ibG93XC10aGVcLW5vc2VcLXdpdGhcLXRoZVwtZmluZ2VyczsKK+OfviA+IG5hbWVcLW9mXC1hXC1tb3VudGFpblwtaW5cLWNvdW50eVwtamlhbjsKK+OfuCA+IG5hbWVcLW9mXC1wYXZpbGlvblwtaW5cLWFuY2llbnRcLWNoaW5hOwor45+JID4gbmFtZVwtb2ZcLXBhdmlsaW9uXC1pblwtYW5jaWVudFwtY2hpbmE7Civjn4IgPiBuYW1lXC1vZlwtY2FwZVwtaW5cLXNoYW5kb25nXC1wcm92aW5jZTsKK+OaqiA+IHRvXC1tYWtlXC1hXC1kZWNlcHRpdmVcLXNob3dcLW9mXC1wb3dlcjsKK+OSjSA+IHV0dGVybHlcLXdlYXJ5XC1pblwtYm9keVwtYW5kXC1zcGlyaXRzOwor45CMID4gYVwtdHJpYmVcLW9mXC1zYXZhZ2VzXC1pblwtc291dGhcLWNoaW5hOwor5o27ID4gdG9cLXR3aXN0XC1vclwtbmlwXC13aXRoXC10aGVcLWZpbmdlcnM7CivmiIwgPiBlbGV2ZW50aFwtb2ZcLXRlcnJlc3RyaWFsXC1icmFuY2hlczsKK+aQkyA+IHRvXC1ydWJcLW9yXC1yb2xsXC1iZXR3ZWVuXC10aGVcLWhhbmRzOwor5bCnID4gYVwtbGVnZW5kYXJ5XC1hbmNpZW50XC1lbXBlcm9yXC1zYWdlOwor5am2ID4gd2lmZVwtb2ZcLWZhdGhlcicnc1wteW91bmdlclwtYnJvdGhlcjsKK+aOrCA+IHRvXC1ncmFzcFwtb3JcLWhvbGRcLXdpdGhcLWJvdGhcLWhhbmRzOwor5bmbID4gc2Nyb2xsXC1vZlwtc2lsa1wtb3JcLWNsb3RoXC1wcmVzZW50ZTsKK+ajgiA+IGNhcnZlZFwtb3JcLXBhdHRlcm5lZFwtd2luZG93XC1zaWxsczsKK+awsiA+IGxpZmVcLWdpdmluZ1wtaW5mbHVlbmNlc1wtb2ZcLW5hdHVyZTsKK+ianSA+IGhhaXJ5XC1hbmRcLXBvaXNvbm91c1wtY2F0ZXJwaWxsYXJzOwor5r6nID4gcml2ZXJcLWluXC1ub3J0aGVyblwtaHVuYW5cLXByb3ZpbmNlOwor562uID4gZGl2aW5hdGlvblwtd2l0aFwtc3RhbGtzXC1vZlwtcGxhbnRzOwor56yqID4gYVwtY29hcnNlXC1tYXRcLW9mXC1ydXNoZXNcLW9yXC1iYW1ib287CivpppMgPiBmcmllZFwtcm91bmRcLWNha2VzXC1vZlwtd2hlYXRcLWZsb3VyOwor566QID4gdG9cLWRyYXdcLWFcLWJhbWJvb1wtYm93XC1vclwtY3Jvc3Nib3c7CivmiYMgPiBhXC1kb29yXC1iYXJcLXBsYWNlZFwtb3V0c2lkZVwtYVwtZG9vcjsKK+S7iSA+IHN1cm5hbWVcLW9mXC10aGVcLW1vdGhlclwtb2ZcLW1lbmNpdXM7Civpqr4gPiBhbnlcLW9iamVjdFwtdGhhdFwtc3RpY2tzXC1pblwtdGhyb2F0Owor6aWKID4gZnJpZWRcLXJvdW5kXC1jYWtlc1wtb2ZcLXdoZWF0XC1mbG91cjsKK+mGvCA+IG9mZmVyXC1mb29kXC1hbmRcLXdpbmVcLW9uZScnc1wtZ3Vlc3RzOwor6LynID4gY3VydGFpbmVkXC1jYXJyaWFnZVwtdXNlZFwtYnlcLXdvbWVuOwor6Lu/ID4gY3VydGFpbmVkXC1jYXJyaWFnZVwtdXNlZFwtYnlcLXdvbWVuOwor6LuZID4gYVwtY2hpbmVzZVwtZmFtaWx5XC1uYW1lXC10b1wtYXJyYW5nZTsKK+i0gSA+IHRvXC1kZWZlYXRcLXRvXC1zcG9pbFwtb3JcLWJlXC1zcG9pbGVkOwor6LOPID4gcGVhcmxzXC1vclwtc2hlbGxzXC1zdHJ1bmdcLXRvZ2V0aGVyOwor6KuKID4gdG9cLW1ha2VcLWFcLWp1ZGljaWFsXC1pbnZlc3RpZ2F0aW9uOwor6J6GID4gaGFpcnlcLWFuZFwtcG9pc29ub3VzXC1jYXRlcnBpbGxhcnM7CivnupkgPiBzdHJpbmdcLW9uXC13aGljaFwtY29pbnNcLWFyZVwtc3RydW5nOwor57OkID4gZnJpZWRcLXJvdW5kXC1jYWtlc1wtb2ZcLXdoZWF0XC1mbG91cjsKK+ettCA+IHR5cGVcLW9mXC1ncmFzc1wtdXNlZFwtaW5cLWRpdmluYXRpb247CivnkIcgPiBjb2Fyc2VcLXZhcmlldHlcLW9mXC1qYXNwZXJcLW9yXC1qYWRlOwor5rCzID4gbGlmZVwtZ2l2aW5nXC1pbmZsdWVuY2VzXC1vZlwtbmF0dXJlOwor5qu6ID4gY2FydmVkXC1vclwtcGF0dGVybmVkXC13aW5kb3dcLXNpbGxzOwor5qOrID4gdGhvcm55XC1zaHJ1Ylwtd2l0aFwteWVsbG93XC1mbG93ZXJzOwor5peTID4gc2VycmF0ZWRcLWVkZ2VzXC1vblwtYVwtY2hpbmVzZVwtZmxhZzsKK+W2siA+IGFcLW5hbWVcLW9mXC1hblwtb2xkXC10b3duXC1pblwtc2ljaHVhbjsKK+WwrSA+IGFcLWxlZ2VuZGFyeVwtYW5jaWVudFwtZW1wZXJvclwtc2FnZTsKK+WsuCA+IHdpZmVcLW9mXC1mYXRoZXInJ3NcLXlvdW5nZXJcLWJyb3RoZXI7CivlobEgPiBwbGFjZVwtbmFtZVwtaW5cLWd1YW5nZG9uZ1wtcHJvdmluY2U7CivloK8gPiBhXC1sZWdlbmRhcnlcLWFuY2llbnRcLWVtcGVyb3JcLXNhZ2U7CivliaggPiBzb3VuZFwtb2ZcLXNvbWV0aGluZ1wtYmVpbmdcLXNtYXNoZWQ7CivktawgPiBibGFja1wtc291bmRcLW9mXC10aGVcLWZsb3dpbmdcLXdhdGVyOwor5LSNID4gYVwta2luZFwtb2ZcLXN0cmFuZ2VcLWFuZFwtd2VpcmRcLWJpcmQ7CivktIkgPiBnZW5lcmFsXC10ZXJtXC1mb3JcLWFcLWdyb3VwXC1vZlwtYmlyZDsKK+SzsCA+IGFcLWJpcmRcLXJlc2VtYmxpbmdcLXRoZVwtd2lsZFwtZ29vc2U7Civks4ggPiBhXC1iaXJkXC1yZXNlbWJsaW5nXC10aGVcLXdpbGRcLWdvb3NlOwor5LGZID4gYVwtc21hbGxcLWtpbmRcLW9mXC10dW5hXC1vclwtc3R1cmdlb247CivksJQgPiBkcmVzc2VkXC1oYWlyXC1pblwtYVwtaG9yaXpvbnRhbFwtd2F5Owor5LCJID4gZHJlc3NlZFwtaGFpclwtaW5cLWFcLWhvcml6b250YWxcLXdheTsKK+SqrCA+IHNvdW5kXC1vZlwtcHJlc3NpbmdcLXNvbWV0aGluZ1wtZG93bjsKK+SprCA+IGFuXC1vcm5hbWVudGFsXC1pdGVtXC1vblwtYVwtc2NhYmJhcmQ7Civkp7UgPiBhXC1iaXJkXC1saWtlXC10aGVcLXNlY3JldGFyeVwtZmFsY29uOwor5KaOID4gYVwtbWVjaGFuaWNhbFwtZGV2aWNlXC1mb3JcLWxlYWRcLW9yZTsKK+SlviA+IHRvXC1tZWx0XC1vclwtY2FzdFwtYnlcLXVzaW5nXC1hXC1tb3VsZDsKK+SlsSA+IHRvXC1tZWx0XC1vclwtY2FzdFwtYnlcLXVzaW5nXC1hXC1tb3VsZDsKK+SlmSA+IGFcLXNwZWN1bHVtXC11c2VkXC1pblwtYW5jaWVudFwtdGltZXM7CivkpLcgPiBhXC1sYW5jZVwtd2l0aFwtdGhyZWVcLW9yXC10d29cLXBvaW50czsKK+SjoiA+IG5hbWVcLW9mXC1hXC1wbGFjZVwtaW5cLWFuY2llbnRcLXRpbWVzOwor5KObID4gbmFtZVwtb2ZcLWFcLXBsYWNlXC1pblwtYW5jaWVudFwtdGltZXM7CivknYEgPiBhXC1raW5kXC1vZlwtd2lsZFwtbGVndW1pbm91c1wtcGxhbnRzOwor5Ju2ID4gd3JpdGluZ3NcLWV1bG9naXppbmdcLWFkZWFkXC1wZXJzb247Civkl6QgPiBhXC1raW5kXC1vZlwtd29ybVwtcHJvZHVjZWRcLWluXC13YXRlcjsKK+SNsCA+IGFcLXBsYWd1ZVwtb3JcLWFcLXBlc3RpbGVuY2VcLW9mXC1nb2F0Owor5IqKID4gd2VsbFwtYm9pbGVkXC1jb25nZWVcLW9yXC1yaWNlXC1ncnVlbDsKK+SJiCA+IGFcLWtpbmRcLW9mXC1iYW1ib29cLXdpdGhcLWFcLXJlZFwtc2tpbjsKK+SIkyA+IGFcLWtpbmRcLW9mXC1iYW1ib29cLXdpdGhcLWFcLXJlZFwtc2tpbjsKK+SHiCA+IHRvXC1wdXRcLWludG9cLWFcLWN1cGJvYXJkXC1vclwtY2xvc2V0Owor5IeAID4gb3JuYW1lbnRzXC1vZlwtZmluZVwtZmVhdGhlclwtb3JcLWZ1cjsKK+SFuSA+IGFcLWtpbmRcLW9mXC1kcmlsbFwtZm9yXC1zb3dpbmdcLWdyYWluOwor5IWpID4gY3Jvb2tlZFwtYW5kXC13aW5kaW5nXC1vZlwtdGhlXC1ncmFzczsKK+SEvCA+IG5hbWVcLW9mXC1hXC1wbGFjZVwtaW5cLWFuY2llbnRcLXRpbWVzOwor5IS3ID4gYVwtbWVhc3VyZW1lbnRcLWVxdWFsXC10b1wtMTIwXC1jYXR0eTsKK+SDqiA+IGFcLXBsYXRmb3JtXC1mb3JcLXNhY3JpZmljaWFsXC1yaXRlczsKK+SCniA+IGFcLXRob3JueVwtdHJlZVwtYWJvdXRcLTE1XC1mZWV0XC1oaWdoOwor47qcID4gZmllcmNlXC1kb2dcLXdpdGhcLWxvbmdcLXNoYWdneVwtaGFpcjsKK+O6iSA+IGFcLWZpZXJjZVwtYW5pbWFsXC1vZlwtdGhlXC1kb2dcLXRyaWJlOwor47mhID4gYVwtcnVzaFwtYW5kXC1pbXBhdGllbnRcLWRpc3Bvc2l0aW9uOwor47ihID4gYm9hcmRcLXRvXC1ibG9ja1wtdGhlXC13YXRlclwtY3VycmVudDsKK+O4miA+IHNjYXR0ZXJlZFwtb3JcLWRpc3BlcnNlZFwtYW5kXC1jbGVhcjsKK+O0rSA+IGltbWVhc3VyYWJsZVwtZGVwdGhcLW9yXC1wcm9mdW5kaXR5Owor47OGID4gbmFtZVwtb2ZcLWFcLXBsYWNlXC1pblwtYW5jaWVudFwtdGltZXM7CivjsaggPiB0b1wtcHJlcGFyZVwtYVwtYm9keVwtZm9yXC10aGVcLWNvZmZpbjsKK+OshyA+IG5hbWVcLW9mXC1hXC1zdGF0ZVwtaW5cLWFuY2llbnRcLWNoaW5hOwor46m9ID4gYnJhbmNoZXNcLXRvXC1iZVwtYVwtcGFyYXNpdGVcLWFcLXRyZWU7CivjqJIgPiB0b1wtY3V0XC1vcGVuXC1hbmRcLWNsZWFuXC1cLVwtXC1hc1wtZmlzaDsKK+OisiA+IHRoZVwtNXRoXC1vZlwtdGhlXC1laWdodFwtZGlhZ3JhbXNcLeWFq+WNpjsKK+OfqCA+IGFcLWZvdW50YWluXC1pblwtdGhlXC1zaWRlXC1vZlwtYVwtaGlsbDsKK+ObjSA+IHRvXC1oYXZlXC1vbmUnJ3NcLWFtYml0aW9uXC1mdWxmaWxsZWQ7CivjmqEgPiBzdGFuZGluZ1wtd2l0aG91dFwtYVwtc3RyYWlnaHRcLWJhY2s7CivjmokgPiB0b1wtbWFrZVwtYVwtcHJvZml0XC1vblwtc2VsbFwtYW5kXC1idXk7CivjmbAgPiBuYW1lXC1vZlwtYVwtcGxhY2VcLWluXC1hbmNpZW50XC10aW1lczsKK+OVoyA+IGFcLW1hcnNoXC1hdFwtdGhlXC1mb290XC1vZlwtdGhlXC1oaWxsczsKK+S7rCA+IGFkanVuY3RcLXByb25vdW5cLWluZGljYXRlXC1wbHVyYWw7CivlkaIgPiBpbnRlcnJvZ2F0aXZlXC1vclwtZW1waGF0aWNcLWZpbmFsOwor5qW8ID4gYnVpbGRpbmdcLW9mXC10d29cLW9yXC1tb3JlXC1zdG9yaWVzOwor6I2vID4gbGVhZlwtb2ZcLWRhaHVyaWFuXC1hbmdlbGljYVwtcGxhbnQ7CivpvY4gPiB0YWtlXC1pblwtYm90aFwtaGFuZHNcLWFuZFwtb2ZmZXJcLXRvOwor5LiIID4gdW5pdFwtb2ZcLWxlbmd0aFwtZXF1YWxcLTNcLjNcLW1ldGVyczsKK+aMkSA+IGFcLWxvYWRcLWNhcnJpZWRcLW9uXC10aGVcLXNob3VsZGVyczsKK+aokyA+IGJ1aWxkaW5nXC1vZlwtdHdvXC1vclwtbW9yZVwtc3RvcmllczsKK+elnSA+IHByYXlcLWZvclwtaGFwcGluZXNzXC1vclwtYmxlc3NpbmdzOwor5p2JID4gdmFyaW91c1wtc3BlY2llc1wtb2ZcLXBpbmVcLWFuZFwtZmlyOwor5pynID4gY29uZGl0aW9uXC1vclwtYXBwZWFyYW5jZVwtb2ZcLW1vb247CivmnKYgPiBjb25kaXRpb25cLW9yXC1hcHBlYXJhbmNlXC1vZlwtbW9vbjsKK+mcuCA+IHJ1bGVcLWJ5XC1taWdodFwtcmF0aGVyXC10aGFuXC1yaWdodDsKK+euqiA+IHNtYWxsXC1iYW1ib29cLWJhc2tldFwtZm9yXC1ob2xkaW5nOwor6YakID4gYW55XC1qYW1cLWxpa2VcLW9yXC1wYXN0ZVwtbGlrZVwtZm9vZDsKK+mFsSA+IGFueVwtamFtXC1saWtlXC1vclwtcGFzdGVcLWxpa2VcLWZvb2Q7Civog6cgPiBjb25kaXRpb25cLW9yXC1hcHBlYXJhbmNlXC1vZlwtbW9vbjsKK+eClSA+IHRoZVwtYnJpY2tcLWJlZFwtaW5cLW5vcnRoZXJuXC1jaGluYTsKK+S6pSA+IGxhc3RcLW9mXC10d2VsdmVcLWVhcnRobHlcLWJyYW5jaGVzOwor57KkID4gZ3Vhbmdkb25nXC1hbmRcLWd1YW5neGlcLXByb3ZpbmNlczsKK+eyvSA+IGR1bXBsaW5nXC1tYWRlXC1vZlwtZ2x1dGlub3VzXC1yaWNlOwor6ZmHID4gbW91bnRhaW5cLWxvY2F0ZWRcLWJldHdlZW5cLXNoYW54aTsKK+mXviA+IHZpbGxhZ2VcLW9mXC10d2VudHlcLWZpdmVcLWZhbWlsaWVzOwor6YOmID4gcGxhY2VcLWluXC10b2RheScnc1wtaGVuYW5cLXByb3ZpbmNlOwor6Z6FID4gbGVhdGhlclwtc3RyYXBcLW92ZXJcLWhvcnNlJydzXC1uZWNrOwor6YK6ID4gcGxhY2VcLWluXC10b2RheScnc1wtaGVuYW5cLXByb3ZpbmNlOwor6ZOhID4gc2lja2xlXC1mb3JcLWN1dHRpbmdcLWdyYXNzXC1vclwtaGF5Owor6aqnID4gZ2FsbG9wXC1hYm91dFwtd2l0aFwtaGVhZFwtdXBsaWZ0ZWQ7CivpqqIgPiBob3JzZVwtd2l0aFwtYVwtYmx1aXNoXC13aGl0ZVwtY29sb3I7Civom7MgPiBraW5kXC1vZlwtc25haWxcLXdpdGhcLXNwaXJhbFwtc2hlbGw7CivpgrMgPiBhXC1kZXBhcnRtZW50XC1pblwtdGhlXC1zdGF0ZVwtb2ZcLWx1Owor6YOiID4gc3RhdGVcLWluXC10b2RheScnc1wtaHViZWlcLXByb3ZpbmNlOwor6aqWID4gdHdvXC1vdXRzaWRlXC1vbmVzXC1pblwtdGhyZWVcLWhvcnNlOwor6L24ID4gY3Jvc3NcLWJvYXJkXC1hdFwtcmVhclwtb2ZcLWNhcnJpYWdlOwor566cID4gYW5jaWVudFwtc3RyaW5nXC1tdXNpY1wtaW5zdHJ1bWVudDsKK+mDkCA+IHN0YXRlXC1pblwtdG9kYXknJ3NcLWhlbmFuXC1wcm92aW5jZTsKK+i9uSA+IHJ1blwtb3Zlclwtc29tZXRoaW5nXC13aXRoXC12ZWhpY2xlOwor5qCdID4gYVwtYnVpbGRlcicnc1wtZnJhbWVcLWZvclwtbWVhc3VyaW5nOwor542NID4gYW5cLWFuaW1hbFwtd2hpY2hcLWVhdHNcLWl0c1wtbW90aGVyOwor6byXID4gc21hbGxcLXJldm9sdmluZ1wtZHJ1bVwtd2l0aFwta25vYnM7CivpvJIgPiBsYXJnZVwtdHJpcG9kXC1jYWxkcm9uXC13aXRoXC1zbWFsbDsKK+m2liA+IGxhcmdlXC13YXRlcmZvd2xcLXdpdGhcLW5ha2VkXC1oZWFkOwor6amkID4gZ2FsbG9wXC1hYm91dFwtd2l0aFwtaGVhZFwtdXBsaWZ0ZWQ7CivpqYQgPiBob3JzZVwtd2l0aFwtYVwtYmx1aXNoXC13aGl0ZVwtY29sb3I7CivpqYIgPiB0d29cLW91dHNpZGVcLW9uZXNcLWluXC10aHJlZVwtaG9yc2U7CivpqIQgPiBuYW1lXC1vZlwtYVwtbGVnZW5kYXJ5XC1zd2lmdFwtaG9yc2U7Civpp6wgPiBuYW1lXC1vZlwtYVwtbGVnZW5kYXJ5XC1zd2lmdFwtaG9yc2U7CivppJYgPiBmb29kXC1pdGVtXC1zZXRcLW91dFwtZm9yXC1zaG93XC1vbmx5Owor6aCjID4gdG9cLXZpZXdcLW90aGVyc1wtd2l0aFwtcmFpc2VkXC1leWVzOwor6Zq0ID4gbW91bnRhaW5cLWxvY2F0ZWRcLWJldHdlZW5cLXNoYW54aTsKK+mWrSA+IHZpbGxhZ2VcLW9mXC10d2VudHlcLWZpdmVcLWZhbWlsaWVzOwor6Y2YID4gc2lja2xlXC1mb3JcLWN1dHRpbmdcLWdyYXNzXC1vclwtaGF5Owor6YuQID4gc3RhdGVcLWluXC10b2RheScnc1wtaHViZWlcLXByb3ZpbmNlOwor6YasID4gYW55XC1qYW1cLWxpa2VcLW9yXC1wYXN0ZVwtbGlrZVwtZm9vZDsKK+mFiCA+IHBsYWNlXC1pblwtdG9kYXknJ3NcLWhlbmFuXC1wcm92aW5jZTsKK+mEtiA+IHN0YXRlXC1pblwtdG9kYXknJ3NcLWhlbmFuXC1wcm92aW5jZTsKK+mEtCA+IHBsYWNlXC1pblwtdG9kYXknJ3NcLWhvbmFuXC1wcm92aW5jZTsKK+mEmiA+IHBsYWNlXC1pblwtdG9kYXknJ3NcLWhlYmVpXC1wcm92aW5jZTsKK+mDlCA+IHBsYWNlXC1uYW1lXC1pblwtc2hhbmRvbmdcLXByb3ZpbmNlOwor6YK9ID4gbmFtZVwtb2ZcLWFcLWNvdW50eVwtaW5cLWhhblwtZHluYXN0eTsKK+mCtiA+IHBsYWNlXC1pblwtdG9kYXknJ3NcLWhlbmFuXC1wcm92aW5jZTsKK+i9oiA+IHJ1blwtb3Zlclwtc29tZXRoaW5nXC13aXRoXC12ZWhpY2xlOwor6LurID4gY3Jvc3NcLWJvYXJkXC1hdFwtcmVhclwtb2ZcLWNhcnJpYWdlOwor6LuoID4gbGF0dGljZVwtd29ya1wtb25cLWZyb250XC1hbmRcLXNpZGVzOwor6LiLID4gdGhlXC1mb290XC1vclwtZmVldFwtY2FzdFwtb2ZcLWFcLXBsYXk7CivopocgPiBydWxlXC1ieVwtbWlnaHRcLXJhdGhlclwtdGhhblwtcmlnaHQ7Civopa0gPiB0dWNrXC11cFwtaGVtXC1vZlwtZ2FybWVudFwtYW5kXC13cmFwOwor6KOLID4gY290dG9uXC1jbG90aGVzXC1vZlwtYVwtYm95XC1zZXJ2YW50Owor6KG6ID4gc2xpdFwtaW5cLWdhcm1lbnRcLXRvXC1haWRcLW1vdmVtZW50Owor6KCoID4gYVwta2luZFwtb2ZcLXNwaWRlclwtd2l0aFwtbG9uZ1wtbGVnczsKK+ieoyA+IG15dGhvbG9naWNhbFwtd2luZ2xlc3NcLWRyYWdvblwtb2Y7CivonoQgPiBraW5kXC1vZlwtc25haWxcLXdpdGhcLXNwaXJhbFwtc2hlbGw7Civoi6QgPiBicmFzc2ljYVwtY2FtcGVzdHJpc1wtc3Vic3BcLlwtcmFwYTsKK+iJlSA+IHR3b1wtYm9hdHNcLWZhc3RlbmVkXC1zaWRlXC1ieVwtc2lkZTsKK+iGqyA+IHRoZVwtZmF0XC1jb3ZlcmluZ1wtdGhlXC1pbnRlc3RpbmVzOwor57iXID4gc2Fja2Nsb3RoXC13b3JuXC1vblwtYnJlYXN0XC1kdXJpbmc7Civns4kgPiBkdW1wbGluZ1wtbWFkZVwtb2ZcLWdsdXRpbm91c1wtcmljZTsKK+eytSA+IGd1YW5nZG9uZ1wtYW5kXC1ndWFuZ3hpXC1wcm92aW5jZXM7CivnsJ4gPiBzbWFsbFwtYmFtYm9vXC1iYXNrZXRcLWZvclwtaG9sZGluZzsKK+evqiA+IGFcLWJhbWJvb1wtZmx1dGVcLXdpdGhcLXNldmVuXC1ob2xlczsKK+eeliA+IGFcLWNhdGFyYWN0XC1vclwtZmlsbVwtb3ZlclwtdGhlXC1leWU7CivnlaQgPiBwbGFjZVwtZm9yXC13b3JzaGlwcGluZ1wtdGhlXC1oYXZlbjsKK+eUlyA+IGVhcnRoZW53YXJlXC12ZXNzZWxcLWluXC10d29cLXBhcnRzOwor54OzID4gdG9cLXRyYXZlbFwtYnlcLXRoZVwtbGlnaHRcLW9mXC10b3JjaDsKK+eBlSA+IHNob3J0XC1uYW1lXC1mb3JcLWd1YW5neGlcLXByb3ZpbmNlOwor5rK0ID4gZm91bFwtYW5kXC1wb2lzb25vdXNcLWluXC1jb25mdXNpb247CivmqJAgPiBhXC1sb29rb3V0XC10dXJyZXRcLW9uXC1hXC1jaXR5XC13YWxsOwor5qO7ID4ga2luZFwtb2ZcLXdvb2RcLWZyb21cLXdoaWNoXC1wZXJmdW1lOwor5p6MID4gdmFyaWV0eVwtb2ZcLWVsbVwtd2l0aFwtc21hbGxcLXNlZWRzOwor5Z6fID4gY2xheVwtc2hlZXBcLWJ1cmllZFwtd2l0aFwtdGhlXC1kZWFkOwor5ZKgID4gdG9cLXdoaXNwZXJcLlwtdG9cLWJsYW1lXC10b1wtc2xhbmRlcjsKK+WPpyA+IHRvXC1jdXRcLW1lYXRcLW9mZlwtYXdheVwtZnJvbVwtYm9uZXM7CivlhpQgPiBjYXBcLXdvcm5cLWR1cmluZ1wtdGhlXC15aW5cLWR5bmFzdHk7CivlgJEgPiBhZGp1bmN0XC1wcm9ub3VuXC1pbmRpY2F0ZVwtcGx1cmFsOwor5Lq8ID4gdG9cLWFzc2VtYmxlXC5cLXRvXC1nYXRoZXJcLXRvZ2V0aGVyOwor5LmEID4gc2hpbWVcOlwtdG9cLWZpbmRcLWFcLXBsYWNlXC10b1wtZHdlbGw7CivktrUgPiBhXC1iYW1ib29cLWZsdXRlXC13aXRoXC1zZXZlblwtaG9sZXM7CivktbggPiB0aGVcLXRvYWRcLXRoYXRcLWxpdmVzXC1pblwtdGhlXC1tb29uOwor5LOhID4gYVwta2luZFwtb2ZcLWJpcmRcLWluXC1hbmNpZW50XC1ib29rczsKK+SyniA+IGFcLXNlY29uZFwtZ2VuZXJhbFwtbmFtZVwtZm9yXC1wZXJjaDsKK+SxjCA+IGFcLXNlY29uZFwtbmFtZVwtZm9yXC10aGVcLWdsb2JlZmlzaDsKK+SwnSA+IGFcLWxhcmdlXC1lYXJ0aGVuXC1wb3RcLWZvclwtY29va2luZzsKK+SwgCA+IGRyZXNzZWRcLWhhaXJcLW9mXC1hXC1jaGluZXNlXC13b21hbjsKK+SuuCA+IHRvXC1tb3ZlXC1zbG93bHlcLWFuZFwtdGhlblwtc3dpZnRseTsKK+SsuyA+IHRvXC1lbnRlcnRhaW5cLWFcLWRlcGFydGluZ1wtZnJpZW5kOwor5Kq+ID4gdG9cLWRlYWxcLXdpdGhcLWFmZmFpcnNcLWNhdXRpb3VzbHk7Civkqo0gPiBhXC1jb250YWluZXJcLWZvclwtYm93c1wtYW5kXC1hcnJvd3M7CivkqKMgPiBsZWF0aGVyXC10b1wtYmVcLW1vaXN0ZW5lZFwtYnlcLXJhaW47CivkpocgPiBkcmVzc2VkXC1oYWlyXC1vZlwtYVwtY2hpbmVzZVwtd29tYW47Civko6MgPiBuYW1lXC1vZlwtYVwtcGxhY2VcLW5hbWVcLW9mXC1hXC1wbGFjZTsKK+SfmiA+IHRvXC1zaXRcLXdpdGhcLXRoZVwtbGVnc1wtc3ByZWFkXC1vdXQ7CivknLcgPiBmZXJtZW50ZWRcLWFuZFwtc2Vhc29uZWRcLXNveWJlYW5zOwor5JyqID4gbmFtZVwtb2ZcLWFcLXBhdmlsaW9uXC1pblwtb2xkXC10aW1lczsKK+SbgCA+IHJlYXNvbmFibGVcLWF1dGhvcml0eVwtc3RhdGVtZW50czsKK+SYhSA+IGFcLXNtYWxsXC1nYWRmbGllc1wtYW5kXC1tb3NxdWl0b2VzOwor5JCDID4gZmF0XC1pblwtdGhlXC1hYmRvbWVuXC1vclwtaW50ZXN0aW5lOwor5I2bID4gYVwta2luZFwtb2ZcLXRvb2xcLXVzZWRcLXRvXC1nZXRcLWZpc2g7CivkiqQgPiB2ZWdldGFibGVcLW1peGVkXC13aXRoXC10aGlja1wtc291cDsKK+SCsiA+IHN0YW5kYXJkXC13ZWlnaHRzXC11c2VkXC1pblwtc2NhbGVzOwor5IGwID4gdG9cLWxvb2tcLWluXC1hXC1ldmlsXC1vclwtd2lja2VkXC13YXk7CivjvJYgPiBnb3VyZFwtdXNlZFwtYXNcLWFcLWxhZGxlXC1vclwtZGlwcGVyOwor47urID4gYVwtZ2VtXC1vclwtb3JuYW1lbnRcLW9uXC1hXC1zY2FiYmFyZDsKK+OvrSA+IGFcLWxvb2tvdXRcLXR1cnJldFwtb25cLWFcLWNpdHlcLXdhbGw7CivjrocgPiBhXC1idWlsZGVyJydzXC1mcmFtZVwtZm9yXC1tZWFzdXJpbmc7CivjrLkgPiB0ZW5kb25zXC1vZlwtdGhlXC1oZWVsXC1vZlwtdGhlXC1mb290Owor46yBID4gdGhlXC1zdW5cLWlzXC1zaGluaW5nXC1vblwtdGhlXC13YXRlcjsKK+OnvSA+IG5hbWVcLW9mXC1hXC1jb3VudHlcLWluXC1oYW5cLWR5bmFzdHk7Civvpo0gPiBydW5cLW92ZXJcLXNvbWV0aGluZ1wtd2l0aFwtdmVoaWNsZTsKK++mhiA+IHZpbGxhZ2VcLW9mXC10d2VudHlcLWZpdmVcLWZhbWlsaWVzOwor76WMID4gYnVpbGRpbmdcLW9mXC10d29cLW9yXC1tb3JlXC1zdG9yaWVzOwor46WGID4gaW5kdWxnZW50XC1hbmRcLXdpdGhvdXRcLXJlc3RyYWludDsKK+OXmCA+IHRvXC1iaXRlXC10aGVcLWhhcmRcLWFuZFwtc29saWRcLWZvb2Q7Civjk6IgPiB0b1wtY3V0XC10aGVcLWZsZXNoXC1mcm9tXC10aGVcLWJvbmVzOwor45OUID4gZmFkZWRcLWFuZFwtZmFsbGVuXC1cLVwtXC1hc1wtYmxvc3NvbXM7CivjkrsgPiB0b1wtZ29cLWZvcndhcmRcLXdpdGhcLWV5ZXNcLWNvdmVyZWQ7CivlubkgPiB0cnVua1wtb2ZcLXRyZWVcLW9yXC1vZlwtaHVtYW5cLWJvZHk7CivlsLogPiBjaGluZXNlXC1tZWFzdXJlXC1hcHByb3hcLlwtJydmb290Jyc7CivnsbMgPiBodWxsZWRcLW9yXC1odXNrZWRcLXVuY29va2VkXC1yaWNlOwor6bmPID4gZmFidWxvdXNcLWJpcmRcLW9mXC1lbm9ybW91c1wtc2l6ZTsKK+WWgiA+IGludGVyamVjdGlvblwtdG9cLWNhbGxcLWF0dGVudGlvbjsKK+a9hyA+IHNvdW5kXC1vZlwtYmVhdGluZ1wtd2luZFwtYW5kXC1yYWluOwor56a5ID4gbGVnZW5kYXJ5XC1oc2lhXC1keW5hc3R5XC1mb3VuZGVyOwor5pafID4gdG9cLXBvdXJcLXdpbmVcLW9yXC10ZWFcLWludG9cLWFcLWN1cDsKK+iQvCA+IHRoZVwtc3RlbVwtYW5kXC1jYWx5eFwtb2ZcLWFcLWZsb3dlcjsKK+mYgCA+IHBvd2VyZnVsXC1hbmRcLWluZmx1ZW50aWFsXC1ncm91cDsKK+altyA+IG1vZGVsXC1zdHlsZVwtb2ZcLWNoaW5lc2VcLXdyaXRpbmc7CivovoQgPiBzaWRlc1wtb2ZcLWNoYXJpb3RcLXdoZXJlXC13ZWFwb25zOwor5L+RID4gd29vZGVuXC1maWd1cmVcLWJ1cmllZFwtd2l0aFwtZGVhZDsKK+WYuSA+IHVzZWRcLWRlc2NyaWJlXC1jbGFyaXR5XC1vZlwtdm9pY2U7CivovbwgPiBob3Jpem9udGFsXC13b29kZW5cLWJhclwtaW5cLWZyb250Owor6aaRID4gdGltZVwtb2ZcLWZhbWluZVwtb3JcLWNyb3BcLWZhaWx1cmU7CivkvKUgPiBnaG9zdFwtb2ZcLW9uZVwtZGV2b3VyZWRcLWJ5XC10aWdlcjsKK+e7tiA+IHNpbGtcLXJpYmJvblwtYXR0YWNoZWRcLWFzXC1hXC1zZWFsOwor6ayIID4gZmluZVwtZ3Jvd3RoXC1vZlwtaGFpclwtY3VybHlcLWhhaXI7Civno5QgPiBkb3dud2FyZFwtc3Ryb2tlXC1zbGFudGluZ1wtcmlnaHQ7Civoo6IgPiBmb2xkaW5nXC1wdXJzZVwtaW5zZXJ0ZWRcLWluXC1iZWx0Owor5p64ID4ga2luZFwtb2ZcLWFzcGVuXC1mb3VuZFwtaW5cLXNpY2h1YW47CivoioogPiBleHViZXJhbnRcLWFuZFwtdmlnb3JvdXNcLWZvbGlhZ2U7CivphIQgPiBuYW1lXC1vZlwtYVwtZGlzdHJpY3RcLWluXC1zaGFuZG9uZzsKK+m8uSA+IGFcLWtpbmRcLW9mXC1pbnNlY3Rpdm9yb3VzXC1yb2RlbnQ7CivojrwgPiBhblwtZWRpYmxlXC13YXRlclwtcGxhbnRcLWJyYXNlbmlhOwor5ZysID4gcGxhc3Rlclwtb3Zlclwtd2l0aFwtbGF5ZXJcLW9mXC1tdWQ7CivojqkgPiBtZW1icmFuZVwtbGluaW5nXC1pbnNpZGVcLW9mXC1yZWVkOwor6K+2ID4gYW5cLWV4Y2xhbWF0aW9uXC1vZlwtY29uZmlybWF0aW9uOwor6KSZID4gcGFwZXJcLW9yXC1jbG90aFwtcGFzdGVkXC10b2dldGhlcjsKK+iMjCA+IG5hbWVcLW9mXC1hXC1kaXN0cmljdFwtaW5cLXNoYW5kb25nOwor6by0ID4gYVwta2luZFwtb2ZcLWluc2VjdGl2b3JvdXNcLXJvZGVudDsKK+m2iyA+IGFcLXNlYVwtYmlyZFwtd2l0aFwtYVwtd2hpdGVcLWJyZWFzdDsKK+m1rCA+IGZhYnVsb3VzXC1iaXJkXC1vZlwtZW5vcm1vdXNcLXNpemU7Civpr48gPiBhXC1kaWFsZWN0XC5cLlwuXC5cLlwuXC5cLlwtbmFtZVwtb2ZcLWZpc2g7CivppYkgPiB0aW1lXC1vZlwtZmFtaW5lXC1vclwtY3JvcFwtZmFpbHVyZTsKK+mlgSA+IGNhcnJ5XC1tZWFsXC10b1wtd29ya2Vyc1wtaW5cLWZpZWxkOwor6ZalID4gcG93ZXJmdWxcLWFuZFwtaW5mbHVlbnRpYWxcLWdyb3VwOwor6Y6rID4gb3JuYW1lbnRcLW92ZXJcLXRoZVwtaG9yc2UnJ3NcLWhlYWQ7CivovJIgPiBzaWRlc1wtb2ZcLWNoYXJpb3RcLXdoZXJlXC13ZWFwb25zOwor6LWZID4gZ2lmdFwtb2ZcLW1vbmV5XC1oZWxwXC1wYXlcLWZ1bmVyYWw7Civos7sgPiBnaWZ0XC1vZlwtbW9uZXlcLWhlbHBcLXBheVwtZnVuZXJhbDsKK+iqkiA+IGFuXC1leGNsYW1hdGlvblwtb2ZcLWNvbmZpcm1hdGlvbjsKK+ippCA+IHRvXC1tYWtlXC13aWxkXC1zdGF0ZW1lbnRzXC10b1wtbGllOwor6KSzID4gZm9sZGluZ1wtcHVyc2VcLWluc2VydGVkXC1pblwtYmVsdDsKK+iYtCA+IHlvdW5nXC1zaG9vdHNcLW9mXC10aGVcLXJhcGV0dXJuaXA7Civojp0gPiB0b1wtY2hvcFwtc3RyYXdcLWZpbmVcLWZvclwtYW5pbWFsczsKK+iFoCA+IGJldHdlZW5cLXRoZVwtc2tpblwtYW5kXC10aGVcLWZsZXNoOwor57+/ID4gc3RyZWFtZXJcLWFkb3JuZWRcLXdpdGhcLWZlYXRoZXJzOwor57asID4gc2lsa1wtcmliYm9uXC1hdHRhY2hlZFwtYXNcLWFcLXNlYWw7CivnraUgPiByb3VuZFwtc2hhcGVkXC1iYW1ib29cLWJhc2tldFwtZm9yOwor55eEID4gc2Nyb2Z1bG91c1wtc3dlbGxpbmdzXC1hbmRcLXNvcmVzOwor546kID4gYVwta2luZFwtb2ZcLWdlbVwtaW5mZXJpb3JcLXRvXC1qYWRlOwor54WgID4gdG9cLWZyeVwtaW5cLWZhdFwtb3JcLW9pbFwuXC10b1wtc2NhbGQ7CivngJ8gPiBzb3VuZFwtb2ZcLWJlYXRpbmdcLXdpbmRcLWFuZFwtcmFpbjsKK+a9jyA+IGZhcmVzaGFyZVwtcmVjbGFpbWVkXC1mcm9tXC1yaXZlcjsKK+a8vCA+IGhhdmluZ1wtdGhlXC1hcHBlYXJhbmNlXC1vZlwtZGVwdGg7CivmrJ4gPiB0aGVcLWxhdHRpY2VcLW9mXC1hXC13aW5kb3dcLWFcLXNpbGw7Civmm5ogPiB0d2lsaWdodFwtanVzdFwtYmVmb3JlXC1zdW5cLXJpc2VzOwor5paaID4gYVwtc21hbGxcLWN1cFwtb2ZcLXN0b25lXC13aXRoXC1lYXJzOwor5omKID4gdXByaWdodFwtYmFyXC1mb3JcLWZhc3RlbmluZ1wtZG9vcjsKK+aFnCA+IG5hbWVcLW9mXC1hXC1tb25rXC1pblwtdGFuZ1wtZHluYXN0eTsKK+W0oCA+IHBsYWNlXC1uYW1lXC1pblwtZ3Vhbmd4aVwtcHJvdmluY2U7Civlsr0gPiBwbGFjZVwtbmFtZVwtaW5cLWd1YW5neGlcLXByb3ZpbmNlOwor5bKdID4gbmFtZVwtb2ZcLWFcLW1vdW50YWluXC1pblwtc2hhbmRvbmc7CivloK0gPiBhXC1kcnlcLW1vYXRcLW91dHNpZGVcLWFcLWNpdHlcLXdhbGw7CivloI4gPiBjaGFyYWN0ZXJcLXVzZWRcLWZvclwtcGxhY2VcLW5hbWVzOwor5Zq5ID4gYVwtcGFydGljbGVcLWltcGx5aW5nXC1jb21wbGV0aW9uOwor5YyzID4gbGFkaWVzXC10b2lsZXRcLWNhc2VcLXdpdGhcLW1pcnJvcjsKK+WItSA+IHB1bmlzaG1lbnRcLWJ5XC1jdXR0aW5nXC1vZmZcLWVhcnM7CivksoEgPiBnZW5lcmFsXC10ZXJtXC1vZlwtYVwta2luZFwtb2ZcLWZpc2g7CivksJogPiB0aGVcLXRvcFwtcGFydFwtb2ZcLXRoZVwtcmljZVwtZ3J1ZWw7Civkr7UgPiBoYWlyXC1zdHlsZVwtZm9yXC1saXR0bGVcLWNoaWxkcmVuOwor5K+kID4gYm9uZXdhcmVcLXVzZWRcLXRvXC1jb21iXC10aGVcLWhhaXI7Civkr5IgPiB0aGVcLXVwcGVyXC1wYXJ0XC1vZlwtdGhlXC1zaGluYm9uZTsKK+SulCA+IGFcLXlvdW5nXC1hbmRcLWZsZWV0XC1mb290ZWRcLWhvcnNlOwor5K26ID4gYVwtaG9yc2VcLXRvXC1yYWlzZVwtaXRzXC1oZWFkXC1oaWdoOwor5KuuID4gdG9cLWJlbmRcLW9yXC1sb3dlclwtb2ZcLW9uZScnc1wtaGVhZDsKK+SrhiA+IHRoZVwtZnJvbnRcLWFuZFwtYmFja1wtb2ZcLXRoZVwtbmVjazsKK+SnkiA+IHN0ZXBzXC1sZWFkaW5nXC11cFwtdG9cLWFcLWJ1aWxkaW5nOwor5KSbID4gY29tcG9uZW50XC1wYXJ0c1wtb2ZcLWFcLWNyb3NzXC1ib3c7Civko7kgPiB0b1wtYnJld1wtMTBcLXBlcmNlbnRcLW9mXC10aGVcLXdpbmU7Civko7UgPiB0b1wtYnJld1wtdGhlXC13aW5lXC1hXC1zZWNvbmRcLXRpbWU7Civko6wgPiB0aGVcLXNoaW55XC1jb2xvcmZ1bFwtb2ZcLXRoZVwtd2luZTsKK+SiviA+IG5hbWVcLW9mXC1hblwtYW5jaWVudFwtc21hbGxcLXN0YXRlOwor5KGDID4gYVwtdG9vbFwtZm9yXC1icnVzaGluZ1wtdGhlXC10aHJlYWQ7CivknLIgPiBuYW1lXC1vZlwtYVwtdmlsbGFnZVwtaW5cLW9sZFwtY2hpbmE7CivkmJMgPiB0aGlja1wtYmxvb2RcLW9mXC1jYXR0bGVcLWFuZFwtZ29hdDsKK+STvyA+IGFcLXNlY29uZFwtbmFtZVwtZm9yXC1sb3R1c1wtZmxvd2VyOwor5JO5ID4gdG9cLXN0dWZmXC1mdWxsXC1hbmRcLXRvXC1ndWxwXC1kb3duOwor5I2BID4gdGhlXC1oZW1cLW9yXC1ib3JkZXJcLW9mXC1hXC1nYXJtZW50Owor5Iu0ID4gc2lsa1wtZmFicmljc1wtd2l0aFwtbWl4ZWRcLWNvbG9yczsKK+SLsyA+IGNsb3RoXC1vclwtcGFwZXJcLXBhc3RlZFwtdG9nZXRoZXI7CivkiaQgPiBhXC1iYW1ib29cLXdhcmVcLWZvclwtd2FzaGluZ1wtcmljZTsKK+SJmyA+IGJhbWJvb1wtYmFza2V0XC1mb3JcLXdhc2hpbmdcLXJpY2U7CivkiZMgPiBtYXR0cmVzc1wtbWFkZVwtb2ZcLWJhbWJvb1wtc3RyaXBzOwor5Ii5ID4gYVwtYmFtYm9vXC13YXJlXC1mb3JcLXdhc2hpbmdcLXJpY2U7Civkh6wgPiB0aGluXC1iYW1ib29cLWxhdGhzXC1rbml0dGVkXC1zYWlsOwor5IenID4gdG9cLWZpbGxcLWFuXC1vcGVuaW5nXC13aXRoXC1iYW1ib287CivkhKEgPiBub3J0aGVyblwtbWlub3JpdHlcLWV0aG5pY1wtZ3JvdXA7Civkg7YgPiBydWdnZWRcLWFuZFwtdW5ldmVuXC1vZlwtdGhlXC1yb2NrczsKK+SDmiA+IHJ1Z2dlZFwtbGFuZFwtb2ZcLXNhbmRcLWFuZFwtcGViYmxlOwor5IOCID4gZHVsbFwtc291bmRcLW9mXC10aGVcLXRvbGxpbmdcLWJlbGw7CivjvKEgPiBhXC1zbWFsbFwtamFyXC13aXRoXC1hXC1zbWFsbFwtbW91dGg7CivjtbcgPiB0dXJidWxlbnRcLWZsb3dpbmdcLW9mXC10aGVcLXdhdGVyOwor47WPID4gaGF2aW5nXC10aGVcLWFwcGVhcmFuY2VcLW9mXC1kZXB0aDsKK+OyuSA+IHRoZVwtZHJ5XC1zb2lsXC1vblwtdGhlXC1yaXZlclwtc2lkZTsKK+OynSA+IGZpbmVcLWhhaXJcLW9mXC1iaXJkc1wtYW5kXC1hbmltYWxzOwor46+FID4gdGhlXC1icmFuY2hlc1wtZ3Jvd2luZ1wtZG93bndhcmRzOwor466CID4gYW5cLWFwcGxpYW5jZVwtdXNlZFwtdG9cLWxpZnRcLWZvb2Q7CivjrKQgPiB3ZXRcLWNsb3RoZXNcLW5vdFwtY29tcGxldGVseVwtZHJ5Owor46q+ID4gdG9cLWN1dFwtdGhlXC1mbGVzaFwtZnJvbVwtdGhlXC1ib25lOwor46iZID4gdG9cLWNsYXNwXC1vclwtaG9sZFwtdW5kZXJcLXRoZVwtYXJtOwor46ayID4gYVwtcGFydGljbGVcLWV4cHJlc3NpbmdcLXN1cnByaXNlOwor46WLID4gc291bmRcLW9mXC10aGVcLWFuZ3Vpc2hcLW9mXC1zb3Jyb3c7CivjpK8gPiBjbGV2ZXJcLW9yXC1zbWFydFwtaW5cLWFcLXNtYWxsXC13YXk7CivjpJQgPiB0b1wtY29uY2VkZVwtb3JcLXN1Ym1pdFwtd2lsbGluZ2x5Owor46OHID4gYVwta2luZFwtb2ZcLWJlYXN0XC13aXRoXC1sb25nXC1oYWlyOwor46GeID4gYVwtc2Fja1wtdXNlZFwtdG9cLWZlZWRcLXRoZVwtaG9yc2VzOwor46CjID4gYVwtbW91bnRhaW5cLWluXC1qaWFuZ3hpXC1wcm92aW5jZTsKK+OeryA+IHRoZVwtdHVybmluZ1wtYXJlYVwtb2ZcLWFcLW1vdW50YWluOwor45yGID4gY29tbW9ubHlcLWtub3duXC1hc1wtbW90aGVyXC1pblwtd3U7CivjmZogPiByZWRcLWNvbG9yZWRcLWhhcmRcLWFuZFwtc29saWRcLW11ZDsKK+OYniA+IHllbGxpbmdcLXNvdW5kXC1vZlwtdG93aW5nXC1hXC1ib2F0Owor45SpID4gaGFpclwtb3JubWVudHNcLXVzZWRcLWluXC1vbGRcLXRpbWU7CivjlIAgPiB0b1wtYnJhbmRcLWNyaW1pbmFsc1wtb25cLXRoZVwtZmFjZTsKK+i/piA+IGNoYXJhY3RlclwtZm9yXC10cmFuc2xpdGVyYXRpb247CivlurUgPiBidWRkaGlzdFwtbW9uYXN0ZXJ5XC1vclwtbnVubmVyeTsKK+W6miA+IHNldmVudGhcLW9mXC10ZW5cLWN5Y2xpY2FsXC1zdGVtczsKK+i2oyA+IHdoYXRcLWF0dHJhY3RzXC1vbmUnJ3NcLWF0dGVudGlvbjsKK+eVlCA+IGJvdW5kYXJ5XC1wYXRoXC1kaXZpZGluZ1wtZmllbGRzOwor5aS+ID4gYmVcLXdlZGdlZFwtb3JcLWluc2VydGVkXC1iZXR3ZWVuOwor6L6GID4gbnVtZXJhcnlcLWFkanVuY3RcLWZvclwtdmVoaWNsZXM7CivlpLkgPiBiZVwtd2VkZ2VkXC1vclwtaW5zZXJ0ZWRcLWJldHdlZW47CivmgJQgPiBhXC1kaXNlYXNlXC1yZXNlbWJsaW5nXC1uZXVyb3NpczsKK+mZjCA+IGZvb3RcLXBhdGhcLWJldHdlZW5cLXJpY2VcLWZpZWxkczsKK+mqhiA+IGFcLXdoaXRlXC1ob3JzZVwtd2l0aFwtYmxhY2tcLW1hbmU7CivmpaMgPiBjcm9zc2JlYW1cLWFib3ZlXC1vclwtdW5kZXJcLWdhdGU7CivnkqcgPiBwaWVjZVwtb2ZcLWphZGVcLXdpdGhcLWhvbGVcLWluXC1pdDsKK+iGuyA+IHJhbmtcLW9kb3JcLVwob2ZcLXNoZWVwXC1vclwtZ29hdHNcKTsKK+eOkSA+IHBlYXJsXC10aGF0XC1pc1wtbm90XC1xdWl0ZVwtcm91bmQ7CivllKIgPiBmbHV0ZVwtbGlrZVwtbXVzaWNhbFwtaW5zdHJ1bWVudDsKK+algiA+IGFcLXJhZnRcLlwtdG9cLWhld1wuXC10b1wtZmVsbFwtdHJlZXM7CivnipIgPiBlbnRlcnRhaW5cLXZpY3RvcmlvdXNcLXNvbGRpZXJzOwor55+NID4gbG9va1wtYWJvdXRcLWluXC1mcmlnaHRcLW9yXC1hbGFybTsKK+aTpCA+IHRvXC1ibG93XC10aGVcLW5vc2VcLXdpdGhcLWZpbmdlcnM7CivoiqEgPiBwbGFudFwtYWxsaWVkXC10b1wtdGhlXC13YXRlcmxpbHk7CivnsbwgPiBub25cLWdsdXRpbm91c1wtbG9uZ1wtZ3JhaW5cLXJpY2U7CivmoaEgPiBiZW50XC1vclwtdHdpc3RlZFwtcGllY2VcLW9mXC13b29kOwor6bu7ID4gc3BlY2lhbFwtcGF0dGVyblwtb2ZcLWVtYnJvaWRlcnk7CivltZ0gPiBnb3Vsb3VcLW1vdW50YWluXC1wZWFrXC1pblwtaHVuYW47Civlnq0gPiBjaGFyYWN0ZXJcLXVzZWRcLWluXC1wbGFjZVwtbmFtZXM7CivnoZYgPiBcPGFyY2hcPlwtdG93blwtaW5cLWhlYmVpXC1wcm92aW5jZTsKK+mCoSA+IG5hbWVcLW9mXC1hXC1kaXN0cmljdFwtaW5cLXNpY2h1YW47CivorqAgPiBzaW1wbGlmaWVkXC1rYW5neGlcLXJhZGljYWxcLTE0OTsKK+WZuyA+IGNoYXJhY3RlclwtdXNlZFwtaW5cLXRyYW5zbGF0aW9uOwor55asID4gc2Nyb2Z1bG91c1wtbHVtcHNcLW9yXC1zd2VsbGluZ3M7CivolJ8gPiBmcmFtZVwtb25cLXdoaWNoXC1zaWxrd29ybXNcLXNwaW47CivlnqcgPiB2YXJpYWJsZVwtdW5pdFwtb2ZcLWxhbmRcLW1lYXN1cmU7CivprI8gPiBhXC1jb2lmZnVyZVwtb25cLXRvcFwtb2ZcLXRoZVwtaGVhZDsKK+etmCA+IFwoYVwtbWVhc3VyZVwtb2ZcLXdpZHRoXC1vZlwtY2xvdGhcKTsKK+e8kSA+IGNvcmRcLWJpbmRpbmdcLW9uXC1oaWx0XC1vZlwtc3dvcmQ7CivnsJYgPiBiYW1ib29cLXRyYXBcLWZvclwtY2F0Y2hpbmdcLWZpc2g7CivluosgPiBhXC1jdXBib2FyZFwtb3JcLXBhbnRyeVwtdG9cLXN0b3JlOwor55SNID4gcmFmdGVyc1wtc3VwcG9ydGluZ1wtcm9vZlwtdGlsZXM7Civpp7kgPiBibGFja1wtaG9yc2VcLXdpdGhcLWFcLXdoaXRlXC1mYWNlOwor6aexID4gYVwtd2hpdGVcLWhvcnNlXC13aXRoXC1ibGFja1wtbWFuZTsKK+mljiA+IHdpbmVcLWFuZFwtZm9vZFwtZWF0ZW5cLXdpdGhcLXdpbmU7Civph4QgPiB3aW5lXC1icmV3XC1mb3JcLXRoZVwtc2Vjb25kXC10aW1lOwor6YeBID4gc21lYXJcLXdpdGhcLWJsb29kXC1pblwtc2FjcmlmaWNlOwor6L+nID4gYVwtY2hpbmVzZVwtZmFtaWx5XC1uYW1lXC1hcnJhbmdlOwor6L2YID4gdGVhclwtYXN1bmRlclwtYmV0d2VlblwtY2hhcmlvdHM7CivovJsgPiBudW1lcmFyeVwtYWRqdW5jdFwtZm9yXC12ZWhpY2xlczsKK+i8mSA+IHNpZGVzXC1vZlwtY2hhcmlvdFwtd2VyZVwtd2VhcG9uczsKK+i8jCA+IG51bWVyYXJ5XC1hZGp1bmN0XC1mb3JcLXZlaGljbGVzOwor6KmAID4gZ2FycnVsb3VzXC10b1wtd2hpc3BlclwuXC10b1wtam9rZTsKK+iouSA+IHRvXC1iZWd1aWxlXC13aXRoXC1mYWxzZVwtc3RvcmllczsKK+iXiiA+IGFcLWtpbmRcLW9mXC1iZWFuXC13aXRoXC1mbGF0XC1wb2RzOwor6IigID4gbG9uZ1wtbmFycm93XC1rbmlmZVwtc2hhcGVkXC1ib2F0Owor57+jID4gZmVhdGhlcnNcLXVzZWRcLWRlY29yYXRlXC1jb2ZmaW47CivnuJMgPiBvcmFuZ2VcLW9yXC1yZWRkaXNoXC15ZWxsb3dcLXNpbGs7Civnt7EgPiBjb3JkXC1iaW5kaW5nXC1vblwtaGlsdFwtb2ZcLXN3b3JkOwor57OPID4gcmljZVwtZ3JpdHNcLWxlZnRcLWFmdGVyXC1odWxsaW5nOwor56+YID4gYVwtdXRlbnNpbFwtdXNlZFwtdG9cLWZpbHRlclwtd2luZTsKK+eniCA+IG5vblwtZ2x1dGlub3VzXC1sb25nXC1ncmFpblwtcmljZTsKK+ehpCA+IFw8YXJjaFw+XC10b3duXC1pblwtaGViZWlcLXByb3ZpbmNlOwor55+wID4gYXJyb3dcLXdpdGhcLWF0dGFjaGVkXC1zaWxrXC1jb3JkOwor55mnID4gc2Nyb2Z1bG91c1wtbHVtcHNcLW9yXC1zd2VsbGluZ3M7CivnkqMgPiBwZWFybFwtdGhhdFwtaXNcLW5vdFwtcXVpdGVcLXJvdW5kOwor546DID4gYVwtbGFyZ2VcLWFwZVwtZm91bmRcLWluXC13XC5cLWNoaW5hOwor54yHID4gdGhlXC1zY3JlYW1cLW9yXC1yb2FyXC1vZlwtYVwtdGlnZXI7CivnibggPiB0aGVcLWZlbWFsZVwtb2ZcLWNlcnRhaW5cLWFuaW1hbHM7Civmu5kgPiB3YXRlcnNcLWNvbnZlcmdpbmdcLXRvXC1vbmVcLXNwb3Q7Civmu5ggPiBjaGFyYWN0ZXJcLXVzZWRcLWluXC1wbGFjZVwtbmFtZXM7CivmqYggPiBiZW50XC1vclwtdHdpc3RlZFwtcGllY2VcLW9mXC13b29kOwor5qSKID4gdG9cLWZpdFwtYVwtaGFuZGxlXC1pbnRvXC1hXC1zb2NrZXQ7CivmmpAgPiB0aGVcLWJyaWdodFwtc2hpbmluZ1wtb2ZcLXRoZVwtc3VuOwor5pizID4gdGhlXC1kZWNsaW5pbmdcLXN1blwtaW5cLXRoZVwtd2VzdDsKK+aNrCA+IHByZXNzXC1kb3duXC1oZWF2aWx5XC13aXRoXC1oYW5kczsKK+aKlCA+IHRha2VcLW9yXC1ob2xkXC11cFwtaW5cLWJvdGhcLWhhbmRzOwor5baBID4gZ291bG91XC1tb3VudGFpblwtcGVha1wtaW5cLWh1bmFuOwor5bS+ID4gcGxhY2VcLW5hbWVcLWluXC1zaGFueGlcLXByb3ZpbmNlOwor5bOrID4gbW91bnRhaW5cLWluXC1zaGFuZG9uZ1wtcHJvdmluY2U7Civlp4UgPiB3b21hblwtYXRcLXRpbWVcLW9mXC1tZW5zdHJ1YXRpb247Civlo7wgPiBwYWxhY2VcLWNvcnJpZG9yXC1vclwtcGFzc2FnZXdheTsKK+WjjSA+IG1vYXRcLWFyb3VuZFwtYVwtY2l0eVwuXC1hXC1jaGFubmVsOwor5Z+hID4gY2hhcmFjdGVyXC11c2VkXC1pblwtcGxhY2VcLW5hbWVzOwor5ZeqID4gY2hhcmFjdGVyXC11c2VkXC1pblwtdHJhbnNsYXRpb247Civll6kgPiBmbHV0ZVwtbGlrZVwtbXVzaWNhbFwtaW5zdHJ1bWVudDsKK+WVqSA+IHBhcnRpY2xlXC1pbXBseWluZ1wtcHJvYmFiaWxpdHk7Civlj5AgPiB0b1wtcHJpY2tcLWFcLWRvZ1wtdG9cLW1ha2VcLWhpbVwtZ287CivljZAgPiBzd2FzdGlrYVwtZm91cnRoXC1vZlwtYXVzcGljaW91czsKK+WNjSA+IHN3YXN0aWthXC1mb3VydGhcLW9mXC1hdXNwaWNpb3VzOwor5LaVID4gaXJyZWd1bGFyXC1hbmRcLXByb21pbmVudFwtdGVldGg7CivktZggPiBkb3NlbicndFwtdFwtc3RpY2tcLXRvXC1lYWNoXC1vdGhlcjsKK+SytSA+IGFcLWdlbmVyYWxcLW5hbWVcLW9mXC1zbWFsbFwtYmlyZHM7Civkr4YgPiBzbWFsbFwtYW5kXC10aGluXC1waWVjZVwtb2ZcLWJvbmVzOwor5KuyID4gdGhpblwtYW5kXC1zaWNrbHlcLWluXC1hcHBlYXJhbmNlOwor5KukID4gYmV0d2VlblwtdGhlXC1leWVicm93c1wtYW5kXC1leWVzOwor5KuhID4gYVwtbG9uZ1wtc2hhcGVcLW9mXC1oZWFkXC1hbmRcLWZhY2U7Civkq4sgPiBmZW1hbGVcLWF0dGVuZGFudHNcLW9yXC1zZXJ2YW50czsKK+SnkCA+IGFcLW1vdW50YWluXC1pblwtc2hhbnhpXC1wcm92aW5jZTsKK+SloyA+IGFuXC1pbnN0cnVtZW50XC1mb3JcLWJvcmluZ1wtd29vZDsKK+SliSA+IHRoZVwtY3VydmVkXC1pcm9uXC1wYXJ0XC1vZlwtYVwtaG9lOwor5KSSID4gd2luZVwtbWFkZVwtZnJvbVwtZ2x1dGlub3VzXC1yaWNlOwor5KSNID4gcm90dGVuXC1wYXN0ZVwtb3JcLXNveWJlYW5cLXNhdWNlOwor5KC9ID4gaGVpZ2h0XC1vclwtc3RhdHVyZVwtb2ZcLWFcLXBlcnNvbjsKK+SgsSA+IHRvXC13YWxrXC1zbG93bHlcLWFuZFwtY2F1dGlvdXNseTsKK+SfpyA+IHNvdW5kXC1vZlwtdHJlYWRpbmdcLW9yXC1zdGVwcGluZzsKK+SehyA+IGdpZnRzXC10b1wtc3VwZXJpb3JzXC1vclwtZnJpZW5kczsKK+SdvSA+IG5hbWVcLW9mXC1hXC1wZXJzb25cLWluXC1vbGRcLWNoaW5hOwor5J2ZID4gYVwta2luZFwtb2ZcLWFuaW1hbFwtbGlrZVwtYVwtdGlnZXI7CivknZcgPiBhXC1raW5kXC1vZlwtYW5pbWFsXC1saWtlXC1hXC10aWdlcjsKK+SciCA+IHRvXC1zcGVha1wtb25cLWJlaGFsZlwtb2ZcLWFub3RoZXI7CivkmLMgPiBhXC1nYXJtZW50XC1vZlwtc2luZ2xlXC10aGlja25lc3M7Civkj7wgPiB3aGF0XC1pc1wtbGVmdFwtb3Zlclwtb2ZcLXRoZVwtZm9vZDsKK+SOoiA+IHRvXC1tZWFzdXJlXC1ieVwtcGludHNcLWFuZFwtcGVja3M7CivkjpEgPiBmbHlpbmdcLW92ZXJcLXRoZVwtd2F0ZXJcLXN1cmZhY2U7Civkja4gPiB5b3VuZ1wtZ29hdFwtdW5kZXJcLW9uZVwteWVhclwtb2xkOwor5I2CID4gdG9vbHNcLXRvXC1kcmF3XC13YXRlclwtb3JcLWxpcXVpZDsKK+SMvyA+IHRoZVwtYnJlYWR0aFwtb2ZcLWNsb3RoXC1vclwtcGFwZXI7CivkjJcgPiB0aGVcLWxlZnRcLW92ZXJcLW9mXC1kcmF3aW5nXC1zaWxrOwor5IyIID4gdG9cLWdldFwtc29tZXRoaW5nXC13aXRoXC1hXC1sYXNzbzsKK+SJpSA+IGFcLXNtYWxsXC1iYXNrZXRcLWZvclwtY2hvcHN0aWNrczsKK+SGuiA+IHdoaXJsaW5nXC1vZlwtdGhlXC1mbG93aW5nXC13YXRlcjsKK+SFoiA+IG1hdHVyZVwtb3JcLXJpcGVuXC1vZlwtdGhlXC1ncmFpbnM7Civjv7YgPiB0aGVcLXNpZGVzXC1vZlwtYVwtc2hvZVwtb3JcLWd1dHRlcjsKK+O9sCA+IGNhcnZlZFwtd2luZG93XC1mcmFtZVwtb25cLWFcLWRvb3I7Civjua8gPiBhXC1raW5kXC1vZlwtYW5pbWFsXC1saWtlXC1hXC10aWdlcjsKK+O5giA+IHVudGFtZWRcLWFuZFwtaW5kb2NpbGl0eVwtY2F0dGxlOwor47SEID4gdGhlXC13YXRlclwtZmxvd2luZ1wtaW5cLWFcLXR1cm5lZDsKK+OwiSA+IHRoZVwtaGF6ZWxcLW51dFwtb3JcLWZpbGJlcnRcLXRyZWU7CivjrZ8gPiB0b3J0dXJlXC11c2VkXC1pblwtYW5jaWVudFwtdGltZXM7Civjq5AgPiBkaXN0YW50XC1hbmRcLWluZGlzdGluZ3Vpc2hhYmxlOwor46G7ID4gbmFtZVwtb2ZcLWFcLXNtYWxsXC1hbmNpZW50XC1zdGF0ZTsKK+ObkCA+IHdpZmVcLW9mXC1vbmUnJ3NcLWVsZGVyJydzXC1icm90aGVyOwor45qGID4gdG9cLWRvXC1zb21ldGhpbmdcLWluXC1hblwtb2xkXC13YXk7Civjlp8gPiB0b1wtZGVsaXZlclwtb3ZlclwtdG9cLXBlcnNvbmFsbHk7Civku7YgPiBudW1lcmFyeVwtYWRqdW5jdFwtZm9yXC1hcnRpY2xlOwor5ZCXID4gZmluYWxcLWludGVycm9nYXRpdmVcLXBhcnRpY2xlOwor6bq9ID4gaW50ZXJyb2dhdGl2ZVwtZmluYWxcLXBhcnRpY2xlOwor55+jID4gcGFydGljbGVcLW9mXC1jb21wbGV0ZWRcLWFjdGlvbjsKK+S5kiA+IHVzZWRcLXdpdGhcLXBvbmdcLWZvclwtcGluZ1wtcG9uZzsKK+S5kyA+IHVzZWRcLXdpdGhcLXBpbmdcLWZvclwtcGluZ1wtcG9uZzsKK+WSmiA+IHVzZWRcLWFzXC1kZXNjcmlwdGlvblwtb2ZcLXNvdW5kOwor55CFID4gYVwtdmFyaWV0eVwtb2ZcLXdoaXRlXC1jYXJuZWxpYW47CivlrbAgPiB3aG9cP1wtd2hpY2hcP1wtd2hhdFw/XC13aGljaFwtb25lXD87CivmiIogPiBmaWZ0aFwtb2ZcLXRlblwtY2VsZXN0aWFsXC1zdGVtczsKK+a4siA+IGFkZFwtcmVwZWF0ZWRcLXdhc2hlc1wtb2ZcLWNvbG9yOwor5ZKrID4gZm9vdFwtbWVhc3VyZVwtb2ZcLXpob3VcLWR5bmFzdHk7CivppbcgPiByYXRpb25zXC1hbmRcLXBheVwtZm9yXC1zb2xkaWVyczsKK+axtiA+IGFcLXJpdmVyXC1pblwtc2hhbmRvbmdcLXByb3ZpbmNlOwor5Y+BID4gYmFua1wtZm9ybVwtb2ZcLW51bWVyYWxcLScndGhyZWUnJzsKK+WjrCA+IG5pbnRoXC1vZlwtdGVuXC1jZWxlc3RpYWxcLXN0ZW1zOwor5p+pID4gY29mZmluXC13aGljaFwtY29udGFpbnNcLWNvcnBzZTsKK+ahoCA+IHRoZVwtZm9ya2luZ1wtYnJhbmNoXC1vZlwtYVwtdHJlZTsKK+eUjyA+IGFcLXNxdWF0XC1qYXJcLWZvclwtaG9sZGluZ1wtd2luZTsKK+esniA+IGJhbWJvb1wtcm9kXC11c2VkXC1mb3JcLWJlYXRpbmdzOwor6ZiXID4gYVwtcGxhY2VcLWluXC14aW5qaWFuZ1wtcHJvdmluY2U7Civpk4kgPiBkZXZpY2VcLWZvclwtY2FycnlpbmdcLWFcLXRyaXBvZDsKK+inpSA+IGFcLWN1cFwtbWFkZVwtb2ZcLWhvcm5cLW9ic3RpbmF0ZTsKK+ijoyA+IGRyYXdcLW9uZScnc1wtaGFuZHNcLWludG9cLXNsZWV2ZTsKK+W0gyA+IG1vdW50YWluXC1pblwtc2ljaHVhblwtcHJvdmluY2U7CivnvZggPiBzY3JlZW5cLXVzZWRcLWluXC1hbmNpZW50XC10aW1lczsKK+awhyA+IHRoaWNrXC1yb3VnaFwtc2VyZ2VcLWZyb21cLXRpYmV0Owor5Z+0ID4gc29pbFwtd2l0aFwtbGFyZ2VcLWNsYXlcLWNvbnRlbnQ7CivmmLQgPiBvbmVcLW9mXC10aGVcLTI4XC1jb25zdGVsbGF0aW9uczsKK+iPuSA+IHNhbHRlZFwtb3JcLXBpY2tsZWRcLXZlZ2V0YWJsZXM7CivpurwgPiBpbnRlcnJvZ2F0aXZlXC1maW5hbFwtcGFydGljbGU7Civpta0gPiBhXC1zbWFsbFwtYmlyZFwtd2l0aFwtYmxhY2tcLW5lY2s7CivppZ8gPiByYXRpb25zXC1hbmRcLXBheVwtZm9yXC1zb2xkaWVyczsKK+mkiSA+IHJhdGlvbnNcLWFuZFwtcGF5XC1mb3JcLXNvbGRpZXJzOwor6ZqSID4gdGhlXC1hcHBlYXJhbmNlXC1vZlwtYVwtbW91bnRhaW47Civpl5AgPiBhXC1wbGFjZVwtaW5cLXhpbmppYW5nXC1wcm92aW5jZTsKK+mJiSA+IGRldmljZVwtZm9yXC1jYXJyeWluZ1wtYVwtdHJpcG9kOwor6YaBID4gYVwta2luZFwtb2ZcLWdyZWVuXC1jb2xvcmVkXC13aW5lOwor6YK/ID4gYVwtc3RhdGVcLWluXC1zaGFuZG9uZ1wtcHJvdmluY2U7CivovZYgPiBmcmFtZXdvcmtcLW9mXC1sYXR0aWNlXC1vblwtY2FydDsKK+intSA+IGFcLWN1cFwtbWFkZVwtb2ZcLWNvcm5cLW9ic3RpbmF0ZTsKK+ilnSA+IGRyYXdcLW9uZScnc1wtaGFuZHNcLWludG9cLXNsZWV2ZTsKK+iAhyA+IHdyaW5rbGVkXC1mYWNlXC1vZlwtdGhlXC1lbGRlcmx5Owor5760ID4gcmFua1wtb2RvdXJcLW9mXC1zaGVlcFwtb3JcLWdvYXRzOwor57WDID4gc3RyaW5nXC1vblwtbXVzaWNhbFwtaW5zdHJ1bWVudDsKK+etuyA+IHBsYWNlXC1uYW1lXC1pblwtaHVuYW5cLXByb3ZpbmNlOwor56uaID4gc3RhbmRcLWFuZFwtd2FpdFwtZm9yXC1sb25nXC10aW1lOwor552ZID4gdG9cLXJvbGxcLXRoZVwtZXllYmFsbHNcLXRvXC1sb29rOwor55GCID4gXChzdG9uZVwtd2hpY2hcLXJlc2VtYmxlc1wtamFkZVwpOwor54e6ID4gdGhlXC1kcnlcLWF0XC10aGVcLWZpcmVcLXRvXC1yb2FzdDsKK+eBiSA+IGFcLXJpdmVyXC1pblwtc2hhbmRvbmdcLXByb3ZpbmNlOwor54CUID4gcml2ZXJcLW5hbWVcLWluXC1oZW5hblwtcHJvdmluY2U7CivmsacgPiBuYW1lXC1vZlwtYVwtcml2ZXJcLWluXC1zaGFuZ2Rvbmc7CivmsIwgPiB0aGlja1wtcm91Z2hcLXNlcmdlXC1mcm9tXC10aWJldDsKK+aptSA+IHdvb2RcLXBsYWNlZFwtdW5kZXJcLXJvb2ZcLXRpbGVzOwor5qSPID4gdGhlXC1mb3JraW5nXC1icmFuY2hcLW9mXC1hXC10cmVlOwor5puIID4gdHdpbGlnaHRcLWp1c3RcLWJlZm9yZVwtc3VucmlzZTsKK+aXnyA+IGFuXC1taWxpdGFyeVwtZmxhZ1wtb2FcLXN0YW5kYXJkOwor5omoID4gcGlja1wtdXBcLXdpdGhcLWZvcmtcLW9yXC1waW5jZXJzOwor5omgID4gcGlja1wtdXBcLXdpdGhcLWZvcmtcLW9yXC1waW5jZXJzOwor5bmwID4gY3VydGFpblwtYXRcLWZyb250XC1vZlwtY2FycmlhZ2U7CivltI0gPiBtb3VudGFpblwtaW5cLXNpY2h1YW5cLXByb3ZpbmNlOwor5bSAID4gcGxhY2VcLW5hbWVcLWluXC1odW5hblwtcHJvdmluY2U7CivlqIAgPiBuYW1lXC1vZlwtYVwtY29uY3ViaW5lXC1vZlwtZGlcLWt1Owor5Z+EID4gd2hpcmxpbmdcLW9mXC1kdXN0XC1pblwtdGhlXC13aW5kOwor5ZeOID4gZmluYWxcLWludGVycm9nYXRpdmVcLXBhcnRpY2xlOwor5LWgID4gcnVzaGVzXC11c2VkXC1mb3JtXC1tYWtpbmdcLW1hdHM7Civks40gPiBhXC1raW5kXC1vZlwtcGhlYXNhbnRcLWxpa2VcLWJpcmQ7CivksbEgPiBhXC1raW5kXC1vZlwtc2xpcHBlcnlcLWxvbmdcLWZpc2g7CivkrocgPiBibGFja1wtaG9yc2VcLXdpdGhcLXdoaXRlXC10aGlnaDsKK+SsoCA+IHRoZVwtZmFsbGluZ1wtb2ZcLXNub3dcLWFuZFwtcmFpbjsKK+SqrSA+IGFcLWtpbmRcLW9mXC1tdXNpY2FsXC1pbnN0cnVtZW50Owor5KqJID4gbWV0YWxcLWRlY29yYXRpb25cLW9uXC1hXC1oYWx0ZXI7CivkqaEgPiBhXC1raW5kXC1vZlwtYm9vdHNcLWluXC1vbGRcLXRpbWVzOwor5KacID4gbmFtZVwtb2ZcLWFcLXN0YXRlXC1pblwtb2xkXC10aW1lczsKK+SluiA+IG5hbWVcLW9mXC1hXC1kb3VibGVcLWVkZ2VkXC1zd29yZDsKK+SllSA+IHRoZVwtYmxhZGVcLW9yXC1lZGdlXC1vZlwtYVwtc3BhZGU7CivkpIkgPiBlbXB0aWVkXC10aGVcLWRyaW5rXC1jb21wbGV0ZWx5Owor5KOhID4gbmFtZVwtb2ZcLWFcLXBsYWNlXC1pblwtb2xkXC10aW1lczsKK+SjjyA+IG5hbWVcLW9mXC1hXC1zdGF0ZVwtaW5cLW9sZFwtdGltZXM7CivkorwgPiBuYW1lXC1vZlwtYVwtc3RhdGVcLWluXC1vbGRcLXRpbWVzOwor5KGRID4gdGhlXC1yaW1cLW9yXC1mZWxsb2VcLW9mXC1hXC13aGVlbDsKK+SgtCA+IHdpdGhcLWFcLXN5bW1ldHJpY1wtd2VsbFwtZm9ybWVkOwor5J21ID4gdG9cLXRoYW5rXC13aXRoXC1tb25leVwtb3JcLWdpZnRzOwor5JmXID4gYVwtc3dhZGRsaW5nXC1jbG90aFwtZm9yXC1pbmZhbnQ7CivkmLsgPiBjdXJ0YWluXC1vblwtYVwtY2FycmlhZ2VcLW9yXC1jYXI7CivkmLogPiBhXC1zZWFtXC13aGljaFwtaGFzXC1jb21lXC11bnNld247CivkmLUgPiBoaXNzaW5nXC1zb3VuZFwtb2ZcLXRoZVwtY2xvdGhlczsKK+SUmyA+IGZpYnJvdXNcLXBsYW50XC1vZlwtd2hpY2hcLWNsb3RoOwor5JOcID4gc2FsdGVkXC1vclwtcGlja2xlZFwtdmVnZXRhYmxlczsKK+SRuSA+IGFcLW51bWVyYXJ5XC1hZGp1bmN0XC1mb3JcLXNoaXBzOwor5I2gID4gdHVyYmFuXC11c2VkXC1pblwtYW5jaWVudFwtdGltZXM7CivkjIsgPiBhXC1oZXJjaGllZlwtaHVuZ1wtYXRcLXRoZVwtd2Fpc3Q7Civki6kgPiBwcmV0dHlcLWFuZFwtZmluZVwtc2lsa1wtZmFicmljczsKK+SLjyA+IHRoaWNrXC1hbmRcLWJpZ1wtcm9wZXNcLW9yXC1jb3JkczsKK+SLiyA+IGFcLWtpbmRcLW9mXC1zcHJpbmdcLWZpc2hpbmdcLW5ldDsKK+SGtiA+IG5vaXNlXC1vZlwtYVwtbW91c2VcLWluXC10aGVcLWNhdmU7CivkhbMgPiBzdGFsa1wtb2ZcLXRoZVwtcGFuaWNsZWRcLW1pbGxldDsKK+SFrSA+IGFcLXZhcmlldHlcLW9mXC1wYW5pY2xlZFwtbWlsbGV0Owor5IWjID4gYVwtdmFyaWV0eVwtb2ZcLXBhbmljbGVkXC1taWxsZXQ7CivkhYwgPiBzdGFsa1wtb2ZcLXdoZWF0XC1vclwtcmljZVwtcGxhbnQ7Civkg4sgPiBhXC1maW5lXC1zdG9uZVwtcmVzZW1ibGluZ1wtamFkZTsKK+SCtSA+IHNvdW5kXC1vZlwtYnVtcGluZ1wtb3JcLXN0cmlraW5nOwor5IKvID4gYVwtZmluZVwtc3RvbmVcLXJlc2VtYmxpbmdcLWphZGU7CivkgqsgPiBub2lzZVwtb2ZcLXN0b25lc1wtcm9sbGluZ1wtZG93bjsKK+SCpSA+IGFcLWZpbmVcLXN0b25lXC1yZXNlbWJsaW5nXC1qYWRlOwor5ICzID4gbm90XC10b1wtbG9va1wtc3RyYWlnaHRcLWZvcndhcmQ7CivjvrQgPiB0aGVcLWVyeXRoZW1hXC1vZlwtYWNuZVwtcm9zYWNlYTsKK+O5pSA+IGFcLXllbGxvd1wtZG9nXC13aXRoXC1ibGFja1wtaGVhZDsKK+O5gSA+IGdlbmVyYWxseVwtY2FsbGVkXC10aGVcLWFuaW1hbHM7CivjtbUgPiBzd2lmdFwtY3VycmVudHNcLW9mXC10aGVcLXN0cmVhbTsKK+O1jiA+IGFcLW1vdW50YWluXC1zdHJlYW1cLW9yXC10b3JyZW50Owor47SaID4gdGhlXC1zbWFsbFwtZGl0Y2hcLWluXC10aGVcLWZpZWxkOwor47CGID4gYW5cLWluc3RydW1lbnRcLXRvXC1ibG93XC1hXC1maXJlOwor47CBID4gYVwtdHJlZVwtd2l0aFwtc2xhbnRlZFwtYnJhbmNoZXM7Civjr7MgPiBhXC1raW5kXC1vZlwtdG9vbFwtdG9cLWFkanVzdFwtYm93Owor4660ID4gYVwtbnVtZXJhcnlcLWFkanVuY3RcLWZvclwtc2hpcHM7CivjpZwgPiB1bnN1Y2Nlc3NmdWxcLWluXC1vbmUnJ3NcLWNhcmVlcjsKK+OhsSA+IHRvXC1jYXV0ZXJpemVcLWJ5XC1idXJuaW5nXC1tb3hhOwor46CxID4gdG9cLXNldFwtd2l0aFwtdGhlXC1sZWdzXC1jbG9zc2VkOwor45yMID4gYVwtZGlmZmVyZW50XC1uYW1lXC1mb3JcLWJyZWFzdHM7Civjmb4gPiBoaWxsc1wtd2l0aFwtbG90c1wtb2ZcLWJpZ1wtcm9ja3M7CivjmZsgPiBhXC1wZXJzb24nJ3NcLW5hbWVcLWluXC1vbGRcLXRpbWVzOwor45e+ID4gdG9cLWdpdmVcLXZlbnRcLXRvXC10aGVcLWZlZWxpbmdzOwor45eGID4gc291bmRcLW9mXC10aGVcLXJpbmdlZFwtcGhlYXNhbnQ7Civjk7MgPiB1c2VcLWtuaWZlXC10b1wtc3BsaXRcLXNvbWV0aGluZzsKK+ORnyA+IGluc2luY2VyZVwtYW5kXC1jdW5uaW5nXC1wZXJzb247CivllaYgPiBmaW5hbFwtcGFydGljbGVcLW9mXC1hc3NlcnRpb247Civnu7wgPiBhcnJhbmdlXC10aHJlYWRzXC1mb3JcLXdlYXZpbmc7Civmi60gPiB3aXBlXC1hd2F5XC1zdGFpbnNcLXdpdGhcLWNsb3RoOwor5Y+uID4gZXhob3J0XC1vclwtZW5qb2luXC1yZXBlYXRlZGx5Owor5oifID4gaGFsYmVyZFwtd2l0aFwtY3Jlc2NlbnRcLWJsYWRlOwor5YebID4gdG9cLXNoaXZlclwtd2l0aFwtY29sZFwtb3JcLWZlYXI7CivmoIsgPiBtYWluXC1iZWFtc1wtc3VwcG9ydGluZ1wtaG91c2U7Civpq6YgPiBmbG93aW5nXC1oYWlyXC1vZlwteW91bmdcLWNoaWxkOwor562dID4gc3RyaW5nZWRcLW11c2ljYWxcLWluc3RydW1lbnQ7CivkuJkgPiB0aGlyZFwtb2ZcLXRoZVwtaGVhdmVubHlcLXN0ZW1zOwor5rKCID4gcml2ZXJcLWluXC1zb3V0aGVhc3RcLXNoYW5kb25nOwor56yIID4gYmFtYm9vXC1ib3hcLXVzZWRcLWNhcnJ5XC1ib29rczsKK+eToiA+IGxhZGxlXC1tYWRlXC1mcm9tXC1kcmllZFwtZ291cmQ7CivlkZcgPiBmaW5hbFwtcGFydGljbGVcLW9mXC1hc3NlcnRpb247CivnsKcgPiByZWVkXC1vZlwtd29vZHdpbmRcLWluc3RydW1lbnQ7Civom58gPiBzY2FseVwtZHJhZ29uXC13aXRoXC1mb3VyXC1sZWdzOwor5pWVID4gYW5cLWltcGVyaWFsXC1vcmRlclwtb3JcLWRlY3JlZTsKK+ijnyA+IGFcLWNhc3NvY2tcLW9yXC1yb2JlXC1vZlwtYVwtbW9uazsKK+eitCA+IGNoaXBwZWRcLWVkZ2VcLW9mXC1hXC1jb250YWluZXI7CivnmLQgPiBtYWxhcmlhXC1wZXN0aWxlbnRpYWxcLXZhcG9yczsKK+e6tiA+IGdyZWVuXC1zaWxrXC10aHJlYWRcLW9yXC10YXNzZWw7CivnvaEgPiB0aGVcLW5hbWVcLW9mXC1hXC1jZXJ0YWluXC1zdGFyczsKK+eZuCA+IGxhc3RcLW9mXC10ZW5cLWNlbGVzdGlhbFwtc3RlbXM7CivmqYcgPiBhXC1zbGVkZ2VcLWZvclwtdHJhbnNwb3J0YXRpb247CivnmosgPiB0aGVcLWhpZ2hcLWxhbmRcLWFsb25nXC1hXC1yaXZlcjsKK+a9jSA+IGNvdW50eVwtaW5cLXNoYW5kb25nXC1wcm92aW5jZTsKK+a0mSA+IG5hbWVcLW9mXC1hXC1yaXZlclwtaW5cLXNoYW5kb25nOwor542gID4gdG9cLWh1bnRcLWF0XC1uaWdodFwtYnlcLXRvcmNoZXM7CivpupIgPiBsZWdlbmRhcnlcLWF1c3BpY2lvdXNcLWFuaW1hbDsKK+ePqSA+IHRoZVwtdG9wXC1nZW1cLW9mXC10aGVcLXBlbmRhbnRzOwor6LClID4gdG9cLWNvbmZlclwtcG9zdGh1bW91c1wtdGl0bGVzOwor56erID4gZ2x1dGlub3VzXC12YXJpZXR5XC1vZlwtbWlsbGV0Owor56u9ID4gYW5jaWVudFwtd29vZHdpbmRcLWluc3RydW1lbnQ7CivltK4gPiBcKGVsZW1lbnRcLWluXC1tb3VudGFpblwtbmFtZXNcKTsKK+aEgCA+IHRvXC1jaGFuZ2VcLW9uZScnc1wtY291bnRlbmFuY2U7CivphKIgPiBuYW1lXC1vZlwtYVwtZGlzdHJpY3RcLWluXC1ob25hbjsKK+eZjSA+IHVuaGVhbHRoeVwtbWFya3NcLW9uXC10aGVcLXNraW47CivphJ4gPiBjb3VudHlcLWluXC16aGVqaWFuZ1wtcHJvdmluY2U7Civpm5IgPiBibGFja1wtaG9yc2VcLXdpdGhcLXdoaXRlXC1tYW5lOwor5peSID4gZnJpbmdlc1wtb2ZcLXBlYXJsc1wtb25cLWNyb3duczsKK+eQiiA+IGFcLXBsYWNlXC1pblwtZWFzdGVyblwtc2hhbmRvbmc7CivomqggPiBhXC1raW5kXC1vZlwtd2F0ZXJcLWJlZXRsZVwtY2FzaDsKK+avsyA+IGZpbmVcLWhhaXJcLW9yXC1mdXJcLW9uXC1hbmltYWxzOwor55ilID4gdG9cLXJlY292ZXJcLWZyb21cLWFueVwtZGlzZWFzZTsKK+a4kSA+IG5hbWVcLW9mXC1hXC1yaXZlclwtaW5cLXNoYW5kb25nOwor5rWIID4gcml2ZXJcLWluXC1ndWFuZ2RvbmdcLXByb3ZpbmNlOwor5ZinID4gXChwaG9uZXRpY1wpXC1hc1wtaW5cLXB5cmltaWRpbmU7Civptb4gPiBhXC1iaXJkXC1yZXNlbWJsaW5nXC10aGVcLWNyYW5lOwor6a6oID4gZXBpbmVwaGVsdXNcLXNlcHRlbWZhc2NpYXR1czsKK+mjpiA+IHdlbGxcLWJvaWxlZFwtY29uZ2VlXC1vclwtZ3J1ZWw7Civpm4ogPiB0aGVcLWNyb3dcLW9mXC1hXC1tYWxlXC1waGVhc2FudDsKK+mauiA+IGFcLWJpcmRcLWZseWluZ1wtaGlnaFwtYW1iaXRpb247CivphrEgPiB0b1wtYnJld1wtZm9yXC10aGVcLXNlY29uZFwtdGltZTsKK+mGlyA+IHRvXC1icmV3XC1mb3JcLXRoZVwtc2Vjb25kXC10aW1lOwor6YWWID4gd2luZVwtd2l0aFwtYmlyZFwtcG9pc29uXC1hZGRlZDsKK+mEvyA+IGNvdW50eVwtaW5cLXhpbmppYW5nXC1wcm92aW5jZTsKK+mEqSA+IGNvdW50eVwtaW5cLXNoYW5kb25nXC1wcm92aW5jZTsKK+mEjSA+IGFcLXRvd25cLWluXC1zaGFuZG9uZ1wtcHJvdmluY2U7CivouZogPiB0cmVhZFwtdGhyb3VnaFwtbXVkXC1hbmRcLXdhdGVyOwor6KyaID4gdG9cLWNvbmZlclwtcG9zdGh1bW91c1wtdGl0bGVzOwor6KSYID4gY2VyZW1vbmlhbFwtZ293bnNcLW9mXC1hXC1xdWVlbjsKK+ifsCA+IHNtYWxsXC1zcGlkZXJcLXdpdGhcLWxvbmdcLWxlZ3M7Civom5UgPiB0aGVcLWNvbW1vblwtaW50ZXN0aW5hbFwtd29ybXM7CivogrcgPiBhcmVhXC1iZXR3ZWVuXC13YWlzdFwtYW5kXC1oaXBzOwor57a4ID4gZ3JlZW5cLXNpbGtcLXRocmVhZFwtb3JcLXRhc3NlbDsKK+e2nCA+IGFycmFuZ2VcLXRocmVhZHNcLWZvclwtd2VhdmluZzsKK+exhCA+IGFcLWJhc2tldFwtZm9yXC1jYXJyeWluZ1wtZWFydGg7Civnro8gPiBzdHJpbmdlZFwtbXVzaWNhbFwtaW5zdHJ1bWVudDsKK+eujiA+IGFuY2llbnRcLXdvb2R3aW5kXC1pbnN0cnVtZW50Owor562OID4gdGhpblwtb3V0c2lkZVwtc2tpblwtb2ZcLWJhbWJvbzsKK+eepCA+IHRvXC1ibGlua1wtb3JcLXR3aXRjaFwtdGhlXC1leWVzOwor55qQID4gdGhlXC1oaWdoXC1sYW5kXC1hbG9uZ1wtYVwtcml2ZXI7Civmv7AgPiBjb3VudHlcLWluXC1zaGFuZG9uZ1wtcHJvdmluY2U7CivmvqAgPiBuYW1lXC1vZlwtYVwtcml2ZXJcLWluXC1zaGFuZG9uZzsKK+a5niA+IHJpdmVyXC1pblwtZ3Vhbmdkb25nXC1wcm92aW5jZTsKK+a3oCA+IGx1eHVyaWFudFwtXChvZlwtd2F0ZXJcLXBsYW50c1wpOwor5rWwID4gYXR0ZW5kXC1cKG9mZmljaWFsXC1mdW5jdGlvbnNcKTsKK+azkSA+IHRoZVwtdml0cmVvdXNcLWdsYXplXC1vblwtY2hpbmE7CivmrqggPiB0b1wtb3BlblwtYXNcLWFuXC11bGNlclwtb3JcLXNvcmU7Civmno8gPiBhXC12YXJpZXR5XC1vZlwtZXZlcmdyZWVuXC10cmVlOwor5peIID4gZnJpbmdlc1wtb2ZcLXBlYXJsc1wtb25cLWNyb3duczsKK+aQhyA+IHRvXC1wcmVzc1wtZG93blwtd2l0aFwtdGhlXC1oYW5kOwor5by4ID4gYVwtYm93XC1zdHJldGNoZWRcLXRvXC10aGVcLWZ1bGw7Civlt6AgPiBzdHJlYW1zXC1ydW5uaW5nXC11bmRlcmdyb3VuZDsKK+W1myA+IGNvdW50eVwtaW5cLXNoYW5kb25nXC1wcm92aW5jZTsKK+W0syA+IGNvdW50eVwtaW5cLXNoYW5kb25nXC1wcm92aW5jZTsKK+W0mSA+IGt1bmx1blwtbW91bnRhaW5zXC1pblwtamlhbmdzdTsKK+W0mCA+IGt1bmx1blwtbW91bnRhaW5zXC1pblwtamlhbmdzdTsKK+W0kCA+IGt1bmx1blwtbW91bnRhaW5zXC1pblwtamlhbmdzdTsKK+WgsyA+IGxhbmRcLWFsbG90bWVudFwtZmV1ZGFsXC1ub2JsZTsKK+WZlSA+IHRvXC1zcGVha1wtZmFsc2VseVwtb3JcLXdyb25nbHk7CivlmYUgPiB0b1wtc3BlYWtcLWZhbHNlbHlcLW9yXC13cm9uZ2x5Owor5LipID4gdG9cLWpvaW5cLW9yXC1jb25uZWN0XC10aGVcLXZpbmU7CivkuJIgPiB0aGVcLXBlcmlvZFwtZnJvbVwtMVwtdG9cLTNcLWFcLm1cLjsKK+S1hSA+IHRvXC1leHRyYWN0XC1ieVwtYXBwbHlpbmdcLWhlYXQ7CivktLMgPiBkaXN0aWxsZXInJ3NcLWdyYWluc1wtb3JcLXllYXN0Owor5LStID4gZGlzdGlsbGVyJydzXC1ncmFpbnNcLW9yXC15ZWFzdDsKK+SzniA+IGJpcmRzXC1mbHlpbmdcLWFsbFwtZGlyZWN0aW9uczsKK+SziiA+IGFcLXdpbGRcLWR1Y2tcLWxpa2VcLXdhdGVyXC1iaXJkOwor5LODID4gYVwta2luZFwtb2ZcLXBob2VuaXhcLWxpa2VcLWJpcmQ7Civks4EgPiBhXC13aWxkXC1kdWNrXC1saWtlXC13YXRlclwtYmlyZDsKK+SqtyA+IHRvXC10b2lsXC1vclwtbGFib3JcLXNlZHVsb3VzbHk7CivkqocgPiBjdXNoaW9uZWRcLXNlYXRcLW9uXC1hXC12ZWhpY2xlOwor5Km/ID4gYVwtYmlnXC1kcnVtXC11c2VkXC1pblwtdGhlXC1hcm15Owor5KeYID4gYVwtbG93XC13YWxsXC1vblwtdGhlXC1yb2FkXC1zaWRlOwor5KayID4gZWF2ZXNcLW9mXC1hXC1hbmNlc3RyYWxcLXRlbXBsZTsKK+SkuyA+IGhlYXZ5XC1pcm9uXC1wYXJ0XC1vZlwtYVwtcGxvdWdoOwor5KOyID4gdG9cLWhlYXRcLXRoZVwtd2luZVwtb3ZlclwtbmlnaHQ7Civkoq8gPiB0b1wtY2hvb3NlXC1vclwtc2VsZWN0XC1jYXJlZnVsOwor5KCLID4gYmVsbFwtc2hhcGVkXC13aXRoXC1sYXJnZVwtYmFzZTsKK+SfriA+IHRvXC1jcmF3bFwtb25cLWhhbmRzXC1hbmRcLWtuZWVzOwor5Jy4ID4gc21hbGxcLXBpZWNlc1wtb2ZcLWJlYW5cLXN0YWxrczsKK+SchyA+IHRvXC1zcGVha1wtbm90XC1pblwtYVwtY2xlYXJcLXdheTsKK+SaoyA+IGNyb29rZWRcLWhvcm5zXC1vZlwtdGhlXC1hbmltYWw7CivkmpwgPiBjYXR0bGVcLXdpdGhcLWNyb3Nzd2lzZVwtaG9ybnM7CivkmaMgPiByYWdnZWRcLWdhcm1lbnRzXC1vclwtY2xvdGhpbmc7CivkmZUgPiBjbG90aGVzXC10aGF0XC1oYXZlXC1ub1wtbGluaW5nOwor5JmUID4gY2xvdGhlc1wtbWFkZVwtb2ZcLXBvb3JcLWZhYnJpYzsKK+SZkyA+IHRoZVwtbG93ZXJcLXBhcnRcLW9mXC1hXC1nYXJtZW50Owor5Ji5ID4gY2xvdGhlc1wtdGhhdFwtaGF2ZVwtbm9cLWxpbmluZzsKK+SYpSA+IHRoZVwtZnJvbnRcLW9mXC1hXC1jaGluZXNlXC1nb3duOwor5JijID4gY2xvdGhlc1wtdGhhdFwtaGF2ZVwtbm9cLWxpbmluZzsKK+SYgSA+IGFcLWJsdWVcLWdyZWVuXC1jb2xvcmVkXC1jaWNhZGE7Civkl7UgPiBhXC1kaXNlYXNlXC1hdHRhY2tlZFwtc2lsa3dvcm07Civkla4gPiBmbG93ZXJcLW9mXC10aGVcLWNocnlzYW50aGVtdW07CivklaYgPiBmbG93ZXJcLW9mXC10aGVcLWNocnlzYW50aGVtdW07CivklKUgPiBjb21tb25cLXZhcmlldHlcLW9mXC1hcnRlbWlzaWE7CivklJ8gPiBzaGFrZVwtYW5kXC13YXZlXC1vZlwtdGhlXC1ncmFzczsKK+SQvCA+IHRoaW5cLW1lbWJyYW5lXC1vZlwtdGhlXC10aHJvYXQ7CivkkK8gPiB1Z2x5XC1hcHBlYXJhbmNlXC1vZlwtYVwtcGVyc29uOwor5JCRID4gdGhpblwtY3V0XC1vZlwtdGhlXC1zbGljZWRcLW1lYXQ7CivkjbogPiBhXC1sZWdlbmRhcnlcLWdvYXRcLWxpa2VcLWJlYXN0Owor5Iy8ID4gYVwta2luZFwtb2ZcLWZpbmVcLXNpbGtcLWZhYnJpY3M7CivkjIQgPiBhXC1yb3BlXC1mb3JcLWRyYXdpbmdcLXVwXC13YXRlcjsKK+SLgSA+IGFcLXJvcGVcLWZvclwtZHJhd2luZ1wtdXBcLXdhdGVyOwor5IqeID4gdG9cLXJvbGxcLXJvdW5kXC13aXRoXC10aGVcLWhhbmQ7CivkipUgPiB3ZWxsXC1ib2lsZWRcLWNvbmdlZVwtb3JcLWdydWVsOwor5IqIID4gZGlzdGlsbGVyJydzXC1ncmFpbnNcLW9yXC15ZWFzdDsKK+SJuiA+IGRldGVyaW9yYXRlZFwtYW5kXC1iZWNvbWVcLXJlZDsKK+SJuSA+IG5hbWVcLW9mXC1hXC12YXJpZXR5XC1vZlwtYmFtYm9vOwor5Im4ID4gc2xpcHNcLW9mXC1iYW1ib29cLWZvclwtd3JpdGluZzsKK+SJsyA+IG5hbWVcLW9mXC1hXC12YXJpZXR5XC1vZlwtYmFtYm9vOwor5ImtID4gbmFtZVwtb2ZcLWFcLXZhcmlldHlcLW9mXC1iYW1ib287CivkiasgPiBuYW1lXC1vZlwtYVwtdmFyaWV0eVwtb2ZcLWJhbWJvbzsKK+SJpiA+IG5hbWVcLW9mXC1hXC12YXJpZXR5XC1vZlwtYmFtYm9vOwor5ImhID4gbmFtZVwtb2ZcLWFcLXZhcmlldHlcLW9mXC1iYW1ib287CivkiaAgPiBuYW1lXC1vZlwtYVwtdmFyaWV0eVwtb2ZcLWJhbWJvbzsKK+SJmiA+IG5hbWVcLW9mXC1hXC12YXJpZXR5XC1vZlwtYmFtYm9vOwor5ImZID4gbmFtZVwtb2ZcLWFcLXZhcmlldHlcLW9mXC1iYW1ib287CivkiY8gPiBuYW1lXC1vZlwtYVwtdmFyaWV0eVwtb2ZcLWJhbWJvbzsKK+SJhiA+IG5hbWVcLW9mXC1hXC12YXJpZXR5XC1vZlwtYmFtYm9vOwor5ImEID4gbmFtZVwtb2ZcLWFcLXZhcmlldHlcLW9mXC1iYW1ib287CivkiYEgPiBuYW1lXC1vZlwtYVwtdmFyaWV0eVwtb2ZcLWJhbWJvbzsKK+SIvSA+IG5hbWVcLW9mXC1hXC12YXJpZXR5XC1vZlwtYmFtYm9vOwor5Ii8ID4gbmFtZVwtb2ZcLWFcLXZhcmlldHlcLW9mXC1iYW1ib287CivkiLIgPiBhXC1iYW1ib29cLWJhc2tldFwtZm9yXC1maXNoaW5nOwor5IivID4gbmFtZVwtb2ZcLWFcLXZhcmlldHlcLW9mXC1iYW1ib287CivkiK0gPiBuYW1lXC1vZlwtYVwtdmFyaWV0eVwtb2ZcLWJhbWJvbzsKK+SIoyA+IG5hbWVcLW9mXC1hXC12YXJpZXR5XC1vZlwtYmFtYm9vOwor5IiiID4gbmFtZVwtb2ZcLWFcLXZhcmlldHlcLW9mXC1iYW1ib287CivkiKEgPiBuYW1lXC1vZlwtYVwtdmFyaWV0eVwtb2ZcLWJhbWJvbzsKK+SInSA+IG5hbWVcLW9mXC1hXC12YXJpZXR5XC1vZlwtYmFtYm9vOwor5IiYID4gbmFtZVwtb2ZcLWFcLXZhcmlldHlcLW9mXC1iYW1ib287CivkiJcgPiBuYW1lXC1vZlwtYVwtdmFyaWV0eVwtb2ZcLWJhbWJvbzsKK+SIliA+IG5hbWVcLW9mXC1hXC12YXJpZXR5XC1vZlwtYmFtYm9vOwor5IiPID4gbmFtZVwtb2ZcLWFcLXZhcmlldHlcLW9mXC1iYW1ib287CivkiI0gPiBuYW1lXC1vZlwtYVwtdmFyaWV0eVwtb2ZcLWJhbWJvbzsKK+SIjCA+IG5hbWVcLW9mXC1hXC12YXJpZXR5XC1vZlwtYmFtYm9vOwor5IiLID4gbmFtZVwtb2ZcLWFcLXZhcmlldHlcLW9mXC1iYW1ib287CivkiIogPiBuYW1lXC1vZlwtYVwtdmFyaWV0eVwtb2ZcLWJhbWJvbzsKK+SHuiA+IGJlYW5zXC1hbmRcLXBlYXNcLWNvbGxlY3RpdmVseTsKK+SHtSA+IG9uZVwtb2ZcLXRoZVwtd2luZFwtaW5zdHJ1bWVudHM7Civkh6ogPiBuYW1lXC1vZlwtYVwtdmFyaWV0eVwtb2ZcLWJhbWJvbzsKK+SHniA+IG5hbWVcLW9mXC1hXC12YXJpZXR5XC1vZlwtYmFtYm9vOwor5IebID4gbmFtZVwtb2ZcLWFcLXZhcmlldHlcLW9mXC1iYW1ib287Civkh5kgPiBuYW1lXC1vZlwtYVwtdmFyaWV0eVwtb2ZcLWJhbWJvbzsKK+SFqiA+IGRpc2Vhc2VcLW9mXC10aGVcLXByaXZhdGVcLXBhcnQ7CivkhLAgPiBmb3J0eVwtYnVuZGxlc1wtb2ZcLXJpY2VcLXBsYW50Owor5IOHID4gaW5rXC1mb3JcLWltcHJpbnRpbmdcLW9mXC1zZWFsczsKK+SAkSA+IHRvXC1nb3VnZVwtb3V0XC1hblwtZXllXC1vclwtZXllczsKK+O/gCA+IHVuaGVhbHRoeVwtbWFya3NcLW9uXC10aGVcLXNraW47CivjvY4gPiB0aGVcLXByb2Z1bmRpdHlcLW9mXC10aGVcLWhhcmVtOwor47ygID4gYVwtY3JvY2tcLXdpdGhcLW5hcnJvd1wtb3BlbmluZzsKK+O6rCA+IGFcLWxhcmdlXC1waWVjZVwtb2ZcLWphZGVcLXN0b25lOwor47qSID4gYmFya2luZ1wtb2ZcLWFcLWZyaWdodGVuZWRcLWRvZzsKK+O5liA+IHRvXC1mZWVkXC1hbmltYWxzXC13aXRoXC1ncmFpbnM7CivjuJIgPiB0b1wtYWJzdXJkXC1wdXJzdWl0XC1vclwtZGVzaXJlOwor466AID4gdG9vbFwtdG9cLWNsZWFyXC1vdXRcLXRoZVwtd2F0ZXI7CivjrZUgPiBhXC1ib2FyZFwtZm9yXC1jYXJyeWluZ1wtdGhpbmdzOwor46mbID4gdG9cLXJvbGxcLXJvdW5kXC13aXRoXC10aGVcLWhhbmQ7CivjqYYgPiB0b1wtYmVcLWluXC1mdWxsXC1wb3NzZXNzaW9uXC1vZjsKK+OoqyA+IHRvXC1iZVwtaW5cLWZ1bGxcLXBvc3Nlc3Npb25cLW9mOwor76eVID4ga3VubHVuXC1tb3VudGFpbnNcLWluXC1qaWFuZ3N1Owor46eVID4gdG9cLWZlZWxcLW9yXC10b3VjaFwtd2l0aFwtaGFuZHM7Civjp4IgPiBhXC1jYXZlXC1hXC1ob2xkXC1pblwtdGhlXC1ncm91bmQ7CivjppAgPiBhXC1zdHJhaWdodGZvcndhcmRcLWNoYXJhY3RlcjsKK+OltCA+IGRvXC1ub3RcLWNhcmVcLWFib3V0XC1zb21ldGhpbmc7CivvpJogPiB3aGl0ZVwtaG9yc2VcLXdpdGhcLWJsYWNrXC1tYW5lOwor46KsID4gYVwtYm93XC1zdHJldGNoZWRcLXRvXC10aGVcLWZ1bGw7CivjobUgPiByb29mXC1vZlwtdGhlXC1ob3VzZVwtY29ubmVjdGVkOwor46CfID4gYVwtbW91bnRhaW5cLWluXC1hbmNpZW50XC10aW1lczsKK+ObvSA+IHRvXC13YWxrXC1zbG93bHlcLWxpa2VcLWFcLXdvbWFuOwor45uuID4gd2lmZVwtb2ZcLW9uZScnc1wtZWxkZXJcLWJyb3RoZXI7Civjk4ggPiBzb3VuZFwtb2ZcLWZseWluZ1wtb3JcLXNwZWVkaW5nOwor45KrID4gY2hva2VkXC1hbmRcLXVuYWJsZVwtdG9cLWJyZWF0aDsKK+OSliA+IHRoZVwtcm9vdFwtc3RvY2tcLW9mXC10aGVcLWxvdHVzOwor55WmID4gc2VjdGlvbnNcLWluXC12ZWdldGFibGVcLWZhcm07CivnlLogPiByYWlzZWRcLXBhdGhcLWJldHdlZW5cLWZpZWxkczsKK+WbgSA+IG1vdmVcLWxpcHNcLWFzXC13aGVuXC1zcGVha2luZzsKK+S8piA+IG5vcm1hbFwtaHVtYW5cLXJlbGF0aW9uc2hpcHM7CivlmJsgPiBmaW5hbFwtZXhjbGFtYXRvcnlcLXBhcnRpY2xlOwor6JCoID4gYnVkZGhpc3RcLWdvZHNcLW9yXC1pbW1vcnRhbHM7CivmoZAgPiBuYW1lXC1hcHBsaWVkXC12YXJpb3VzXC10cmVlczsKK+iSgiA+IHBlZHVuY2xlXC1vclwtc3RlbVwtb2ZcLXBsYW50czsKK+e0uiA+IGRhcmtcLWJsdWVcLW9yXC1yZWRkaXNoXC1jb2xvcjsKK+ajtSA+IG51bWVyYXJ5XC1hZGp1bmN0XC1mb3JcLXRyZWVzOwor5qCqID4gbnVtZXJhcnlcLWFkanVuY3RcLWZvclwtdHJlZXM7Civlk4kgPiBmaW5hbFwtZXhjbGFtYXRvcnlcLXBhcnRpY2xlOwor5oaLID4gdG9cLXN1cHByZXNzXC1pbm5lclwtZmVlbGluZ3M7CivlrZwgPiBiZVwtYXNcLWRpbGlnZW50XC1hc1wtcG9zc2libGU7CivnsrEgPiBiZXR0ZXJcLXZhcmlldGllc1wtb2ZcLW1pbGxldDsKK+WzkiA+IG1vdW50YWluXC1pblwtZ2Fuc3VcLXByb3ZpbmNlOwor5qaoID4gdG9cLXByZXNzXC1vclwtZXh0cmFjdFwtanVpY2VzOwor5ZerID4gbW92ZVwtbGlwc1wtYXNcLXdoZW5cLXNwZWFraW5nOwor6YSxID4gY291bnR5XC1hbmRcLWxha2VcLWluXC1qaWFuZ3hpOwor6I+gID4gc3BpbmFjaFwtYW5kXC1zaW1pbGFyXC1ncmVlbnM7Civmt54gPiBuYW1lXC1vZlwtYVwtcml2ZXJcLWluXC1qaWFuZ3N1Owor5reEID4gcml2ZXJcLWluXC1zaGFuZG9uZ1wtcHJvdmluY2U7Civoj48gPiByaXZlclwtaW5cLXNoYW5kb25nXC1wcm92aW5jZTsKK+aCsSA+IHRvXC1iZVwtZGVzaXJvdXNcLW9mXC1zcGVha2luZzsKK+a8ryA+IHJpdmVyXC1pblwtbm9ydGhlcm5cLXNoYW5kb25nOwor6JWZID4gc3BlY2llc1wtb2ZcLWZyYWdyYW50XC1vcmNoaWQ7Civmu4EgPiBkaXN0cmljdFwtaW5cLWFuaHVpXC1wcm92aW5jZTsKK+eLgSA+IGFcLXRyaWJlXC1vZlwtc2N5dGhpYW5cLW5vbWFkczsKK+mFoiA+IHRvYXN0XC1vbmUnJ3NcLWhvc3RcLXdpdGhcLXdpbmU7Civoob8gPiBjb2xsYXJcLW9yXC1sYXBlbFwtb2ZcLWdhcm1lbnQ7Civltp0gPiBwYXRoXC1sZWFkaW5nXC11cFwtYVwtbW91bnRhaW47Civml4MgPiBzaWxrXC1iYW5uZXJcLXdpdGhcLWJlbnRcLXBvbGU7CivpvZEgPiBicmVha1wtb3JcLXNtYXNoXC1pbnRvXC1waWVjZXM7Civnu4AgPiBkYXJrXC1ibHVlXC1vclwtcmVkZGlzaFwtY29sb3I7CivohJggPiBpbnRlcm5hbFwtY2F2aXR5XC1vZlwtc3RvbWFjaDsKK+mVkiA+IG1lYXN1cmVcLW9mXC13ZWlnaHRcLWZvclwtZ29sZDsKK+ecrSA+IGV2aWxcLWxvb2tcLW9mXC1kZWVwXC1zZXRcLWV5ZXM7CivplJYgPiB0aGVcLWNvbG9yXC1vZlwtdGhlXC1hXC1taW5lcmFsOwor6YKZID4gbW91bnRhaW5cLWluXC1oZW5hblwtcHJvdmluY2U7CivloY0gPiByYWlzZWRcLXBhdGhcLWJldHdlZW5cLWZpZWxkczsKK+aVqyA+IGFuY2llbnRcLW11c2ljYWxcLWluc3RydW1lbnQ7Civms7ogPiByaXZlclwtaW5cLXNoYW5kb25nXC1wcm92aW5jZTsKK+iQkSA+IGdyYXNzXC11c2VkXC1mb3JcLW1ha2luZ1wtbWF0czsKK+inryA+IHdpbmVcLWdvYmxldFwtbWFkZVwtZnJvbVwtaG9ybjsKK+iIoyA+IHRvXC1tb29yXC1hXC1ib2F0XC10b1wtdGhlXC1iYW5rOwor6b2PID4gYnJlYWtcLW9yXC1zbWFzaFwtaW50b1wtcGllY2VzOwor6aa1ID4gaG9yc2VcLXdpdGhcLXdoaXRlXC1iYWNrXC1sZWdzOwor6aOjID4gZGlzcGxheVwtZm9vZFwtZm9yXC1zaG93XC1vbmx5Owor6Z+yID4gYnJlYWtcLW9yXC1zbWFzaFwtaW50b1wtcGllY2VzOwor6ZeSID4gdXBwZXJcLXN0b3J5XC1kb29yXC1vclwtd2luZG93Owor6Y6wID4gbWVhc3VyZVwtb2ZcLXdlaWdodFwtZm9yXC1nb2xkOwor6YqBID4gYVwtd2VpZ2h0XC1vZlwtdGhpcnR5XC1jYXR0aWNzOwor6YaKID4gdG9cLXBvdXJcLXdpbmVcLWluXC1hXC1saWJhdGlvbjsKK+mDvyA+IGNvdW50eVwtaW5cLXNoYWFueGlcLXByb3ZpbmNlOwor6YOzID4gc3RhdGVcLWluXC1zaGFuZG9uZ1wtcHJvdmluY2U7Civpg6AgPiBwbGFjZVwtaW5cLXNoYW5kb25nXC1wcm92aW5jZTsKK+mDmiA+IHRvd25zXC1pblwtc2hhbmRvbmdcLXByb3ZpbmNlOwor6YOVID4gc3RhdGVcLWluXC1zaGFuZG9uZ1wtcHJvdmluY2U7Civpg4ggPiBwbGFjZVwtaW5cLXNoYW5kb25nXC1wcm92aW5jZTsKK+mCoCA+IGNvdW50eVwtaW5cLXNoYWFueGlcLXByb3ZpbmNlOwor6LykID4gYVwtcGFsbFwtdG9cLWNvdmVyXC10aGVcLWhlYXJzZTsKK+i4kiA+IHRvXC1zbGlwXC1hbmRcLXNwcmFpblwtYVwtYmxpbWI7Civop7YgPiB3aW5lXC1nb2JsZXRcLW1hZGVcLWZyb21cLWhvcm47CivoppAgPiBhXC1zbGVlcFwtdG9cLXJlYWxpemVcLXRvXC1mZWVsOwor6JmhID4gc3VwcG9ydFwtc3RydWN0dXJlXC1mb3JcLWJlbGw7Civolr4gPiBsdXh1cmlhbnRcLWdyb3d0aFwtb2ZcLWZsb3dlcjsKK+iUlSA+IHBlZHVuY2xlXC1vclwtc3RlbVwtb2ZcLXBsYW50czsKK+iMiCA+IGFcLXBsYW50XC15aWVsZGluZ1wtYVwtcmVkXC1keWU7CivoiaQgPiB0b1wtbW9vclwtYVwtYm9hdFwtdG9cLXRoZVwtYmFuazsKK+iGhiA+IHRoZVwtY29ycFwtb2ZcLWFcLWJpcmRcLW9yXC1mb3dsOwor572tID4gZHJhZ1wtbmV0XC1tYWRlXC1vZlwtZmluZVwtbWVzaDsKK+e9jyA+IGVhcnRoZW5cLXN0YW5kXC1mb3JcLXdpbmVcLWp1ZzsKK+e9jSA+IGxhcmdlXC1lYXJ0aGVud2FyZVwtd2luZVwtamFyOwor57m4ID4gaGVtXC1vclwtYm9yZGVyXC1vZlwtYVwtZ2FybWVudDsKK+evnyA+IGx1eHVyaWFudFwtZ3Jvd3RoXC1vZlwtYmFtYm9vOwor56qGID4gdG9cLXB1dFwtYVwtY29mZmluXC1pblwtYVwtZ3JhdmU7CivnpbIgPiBvbWlub3VzXC1vclwtc2luaXN0ZXJcLXNwaXJpdDsKK+eZlSA+IGxvc3NcLW9mXC10aGVcLXNlbnNlXC1vZlwtc21lbGw7CivnlbcgPiByYWlzZWRcLXBhdGhcLWJldHdlZW5cLWZpZWxkczsKK+eUvCA+IHJhaXNlZFwtcGF0aFwtYmV0d2VlblwtZmllbGRzOwor55KIID4gYW5jaWVudFwtbXVzaWNhbFwtaW5zdHJ1bWVudDsKK+ePmyA+IHF1aWNrbHlcLWRldGVyaW9yYXRpbmdcLWphZGU7Civmv7wgPiByaXZlclwtaW5cLXNoYW5kb25nXC1wcm92aW5jZTsKK+a+tyA+IHdhdGVyXC1vdmVyZmxvd2luZ1wtZGlmZnVzZWQ7CivmuK4gPiByaXZlclwtaW5cLXNoYW5kb25nXC1wcm92aW5jZTsKK+avqSA+IGFcLWxlYXRoZXJcLWJhbGxcLWZvclwta2lja2luZzsKK+amgyA+IHJhaXNlZFwtcGF0aFwtYmV0d2VlblwtZmllbGRzOwor5o+5ID4gY2FycnlcLXRoaW5nc1wtb25cLW9uZScnc1wtYmFjazsKK+aPgSA+IHNvdW5kXC1vZlwtc2V0dGluZ1wtdXBcLWFcLWtvdG87Civls50gPiBtb3VudGFpblwtaW5cLWdhbnN1XC1wcm92aW5jZTsKK+WqpyA+IG15dGhvbG9naWNhbFwtc25haWxcLWdvZGRlc3M7Civlm4kgPiBleGNsYW1hdG9yeVwtZmluYWxcLXBhcnRpY2xlOwor5Zi3ID4gdGhlXC1yb2FyaW5nXC1vZlwtd2lsZFwtYmVhc3RzOwor5ZiQID4gZmluYWxcLWV4Y2xhbWF0b3J5XC1wYXJ0aWNsZTsKK+WJniA+IGNhcnZpbmdcLW9yXC1lbmdyYXZpbmdcLWtuaWZlOwor5YaPID4gYWJ1dGlsb25cLWF2aWNlbm5hZVwtXChwbGFudFwpOwor5YCrID4gbm9ybWFsXC1odW1hblwtcmVsYXRpb25zaGlwczsKK+S5qyA+IHVzZWRcLWluXC1rb3JlYW5cLXBsYWNlXC1uYW1lczsKK+S1hiA+IGdyYWluc1wtZnJvbVwtdGhlXC1kaXN0aWxsZXJ5Owor5LS/ID4gZ3JhaW5zXC1mcm9tXC10aGVcLWRpc3RpbGxlcnk7Civksq8gPiBhXC1raW5kXC1vZlwtYmxhY2tcLXNtYWxsXC1iaXJkOwor5K+TID4gdGhlXC1oZWFkXC1ib25lXC1vZlwtbGl2ZXN0b2NrOwor5K62ID4gZmxvY2tcLW9mXC1ob3JzZXNcLXN0YW1wZWRpbmc7CivkrqMgPiBhXC15ZWxsb3dcLXdpdGhcLWFcLXdoaXRlXC10YWlsOwor5KyxID4gY29hcnNlXC1ncmFpbnNcLXN1Y2hcLWFzXC1jb3JuOwor5KmyID4gYVwtdG9vbFwtdXNlZFwtdG9cLWN1dFwtbGVhdGhlcjsKK+SpmiA+IHRvXC1tZW5kXC10aGVcLXNvbGVzXC1vZlwtc2hvZXM7CivkqZggPiB0b1wtbWVuZFwtdGhlXC1zb2xlc1wtb2ZcLXNob2VzOwor5KGmID4gdGhlXC1lbXB0eVwtc3BhY2VcLW9mXC1hXC13aGVlbDsKK+SgiSA+IHRvXC1ydW5cLWF3YXlcLW9yXC1lc2NhcGVcLWZyb207CivknpEgPiBhXC1yZWRcLXN3ZWxsaW5nXC1vZlwtdGhlXC1za2luOwor5JuvID4gdGhlXC1yZWFzb25hYmxlXC1vZlwtc3BlZWtpbmc7CivkloUgPiBuYW1lXC1vZlwtYVwtdmFyaWV0eVwtb2ZcLWdyYXNzOwor5JW/ID4gbmFtZVwtb2ZcLWFcLXZhcmlldHlcLW9mXC1ncmFzczsKK+SVvCA+IG5hbWVcLW9mXC1hXC12YXJpZXR5XC1vZlwtZ3Jhc3M7CivklbYgPiBuYW1lXC1vZlwtYVwtdmFyaWV0eVwtb2ZcLWdyYXNzOwor5JW1ID4gbmFtZVwtb2ZcLWFcLXZhcmlldHlcLW9mXC1ncmFzczsKK+SVsyA+IG5hbWVcLW9mXC1hXC12YXJpZXR5XC1vZlwtZ3Jhc3M7CivklbEgPiBuYW1lXC1vZlwtYVwtdmFyaWV0eVwtb2ZcLWdyYXNzOwor5JWtID4gbmFtZVwtb2ZcLWFcLXZhcmlldHlcLW9mXC1ncmFzczsKK+SVmyA+IG5hbWVcLW9mXC1hXC12YXJpZXR5XC1vZlwtZ3Jhc3M7CivklZcgPiBuYW1lXC1vZlwtYVwtdmFyaWV0eVwtb2ZcLWdyYXNzOwor5JWVID4gbmFtZVwtb2ZcLWFcLXZhcmlldHlcLW9mXC1ncmFzczsKK+SVlCA+IG5hbWVcLW9mXC1hXC12YXJpZXR5XC1vZlwtZ3Jhc3M7CivklZMgPiBuYW1lXC1vZlwtYVwtdmFyaWV0eVwtb2ZcLWdyYXNzOwor5JWSID4gbmFtZVwtb2ZcLWFcLXZhcmlldHlcLW9mXC1ncmFzczsKK+SVjSA+IG5hbWVcLW9mXC1hXC12YXJpZXR5XC1vZlwtZ3Jhc3M7CivklYogPiBuYW1lXC1vZlwtYVwtdmFyaWV0eVwtb2ZcLWdyYXNzOwor5JWIID4gbmFtZVwtb2ZcLWFcLXZhcmlldHlcLW9mXC1ncmFzczsKK+SVhyA+IG5hbWVcLW9mXC1hXC12YXJpZXR5XC1vZlwtZ3Jhc3M7CivklYUgPiBuYW1lXC1vZlwtYVwtdmFyaWV0eVwtb2ZcLWdyYXNzOwor5JWAID4gbmFtZVwtb2ZcLWFcLXZhcmlldHlcLW9mXC1ncmFzczsKK+SUuyA+IG5hbWVcLW9mXC1hXC12YXJpZXR5XC1vZlwtZ3Jhc3M7CivklLggPiBuYW1lXC1vZlwtYVwtdmFyaWV0eVwtb2ZcLWdyYXNzOwor5JS2ID4gbmFtZVwtb2ZcLWFcLXZhcmlldHlcLW9mXC1ncmFzczsKK+SUtCA+IG5hbWVcLW9mXC1hXC12YXJpZXR5XC1vZlwtZ3Jhc3M7CivklLIgPiBuYW1lXC1vZlwtYVwtdmFyaWV0eVwtb2ZcLWdyYXNzOwor5JSxID4gbmFtZVwtb2ZcLWFcLXZhcmlldHlcLW9mXC1ncmFzczsKK+SUsCA+IG5hbWVcLW9mXC1hXC12YXJpZXR5XC1vZlwtZ3Jhc3M7CivklK4gPiBuYW1lXC1vZlwtYVwtdmFyaWV0eVwtb2ZcLWdyYXNzOwor5JStID4gbmFtZVwtb2ZcLWFcLXZhcmlldHlcLW9mXC1ncmFzczsKK+SUqiA+IG5hbWVcLW9mXC1hXC12YXJpZXR5XC1vZlwtZ3Jhc3M7CivklKEgPiBuYW1lXC1vZlwtYVwtdmFyaWV0eVwtb2ZcLWdyYXNzOwor5JSdID4gbmFtZVwtb2ZcLWFcLXZhcmlldHlcLW9mXC1ncmFzczsKK+SUmSA+IG5hbWVcLW9mXC1hXC12YXJpZXR5XC1vZlwtZ3Jhc3M7CivklJQgPiBuYW1lXC1vZlwtYVwtdmFyaWV0eVwtb2ZcLWdyYXNzOwor5JSSID4gbmFtZVwtb2ZcLWFcLXZhcmlldHlcLW9mXC1ncmFzczsKK+SUjiA+IG5hbWVcLW9mXC1hXC12YXJpZXR5XC1vZlwtZ3Jhc3M7CivklIwgPiBuYW1lXC1vZlwtYVwtdmFyaWV0eVwtb2ZcLWdyYXNzOwor5JSFID4gbmFtZVwtb2ZcLWFcLXZhcmlldHlcLW9mXC10cmVlczsKK+SUhCA+IG5hbWVcLW9mXC1hXC12YXJpZXR5XC1vZlwtZ3Jhc3M7CivklIEgPiBuYW1lXC1vZlwtYVwtdmFyaWV0eVwtb2ZcLWdyYXNzOwor5JO9ID4gbmFtZVwtb2ZcLWFcLXZhcmlldHlcLW9mXC1ncmFzczsKK+STvCA+IG5hbWVcLW9mXC1hXC12YXJpZXR5XC1vZlwtZ3Jhc3M7Civkk7ogPiBuYW1lXC1vZlwtYVwtdmFyaWV0eVwtb2ZcLWdyYXNzOwor5JOzID4gbmFtZVwtb2ZcLWFcLXZhcmlldHlcLW9mXC1ncmFzczsKK+SToyA+IG5hbWVcLW9mXC1hXC12YXJpZXR5XC1vZlwtZ3Jhc3M7Civkk6IgPiBuYW1lXC1vZlwtYVwtdmFyaWV0eVwtb2ZcLWdyYXNzOwor5JOfID4gbmFtZVwtb2ZcLWFcLXZhcmlldHlcLW9mXC1ncmFzczsKK+STkyA+IG5hbWVcLW9mXC1hXC12YXJpZXR5XC1vZlwtZ3Jhc3M7Civkk5AgPiBuYW1lXC1vZlwtYVwtdmFyaWV0eVwtb2ZcLWdyYXNzOwor5JOOID4gbmFtZVwtb2ZcLWFcLXZhcmlldHlcLW9mXC1ncmFzczsKK+STiiA+IG5hbWVcLW9mXC1hXC12YXJpZXR5XC1vZlwtZ3Jhc3M7Civkk4kgPiBuYW1lXC1vZlwtYVwtdmFyaWV0eVwtb2ZcLWdyYXNzOwor5JOCID4gbmFtZVwtb2ZcLWFcLXZhcmlldHlcLW9mXC1ncmFzczsKK+SStSA+IG5hbWVcLW9mXC1hXC12YXJpZXR5XC1vZlwtZ3Jhc3M7CivkkrQgPiBuYW1lXC1vZlwtYVwtdmFyaWV0eVwtb2ZcLWdyYXNzOwor5JKxID4gdHdpZ3NcLW9mXC1oZW1wXC11c2VkXC1mb1wtZnVlbDsKK+SSqiA+IG5hbWVcLW9mXC1hXC12YXJpZXR5XC1vZlwtZ3Jhc3M7CivkkqkgPiBuYW1lXC1vZlwtYVwtdmFyaWV0eVwtb2ZcLWdyYXNzOwor5JKkID4gbmFtZVwtb2ZcLWFcLXZhcmlldHlcLW9mXC1ncmFzczsKK+SSoSA+IG5hbWVcLW9mXC1hXC12YXJpZXR5XC1vZlwtZ3Jhc3M7Civkkp8gPiBuYW1lXC1vZlwtYVwtdmFyaWV0eVwtb2ZcLWdyYXNzOwor5JKeID4gbmFtZVwtb2ZcLWFcLXZhcmlldHlcLW9mXC1ncmFzczsKK+SSnCA+IG5hbWVcLW9mXC1hXC12YXJpZXR5XC1vZlwtZ3Jhc3M7CivkkpsgPiBuYW1lXC1vZlwtYVwtdmFyaWV0eVwtb2ZcLWdyYXNzOwor5JKaID4gbmFtZVwtb2ZcLWFcLXZhcmlldHlcLW9mXC1ncmFzczsKK+SSlCA+IG5hbWVcLW9mXC1hXC12YXJpZXR5XC1vZlwtZ3Jhc3M7CivkjrcgPiBhblwtb2xkXC1tYW5cLXdpdGhcLXdoaXRlXC1oYWlyOwor5IygID4gaG9sZFwtb25cLXRvXC1vbmUnJ3NcLW93blwtdmlld3M7Civki4AgPiBzaG9lc1wtbWFkZVwtb2ZcLWhlbXBcLW9yXC1oYWlyOwor5IquID4gbmFtZVwtb2ZcLWFcLXZhcmlldHlcLW9mXC1ncmFpbjsKK+SKrCA+IG5hbWVcLW9mXC1hXC12YXJpZXR5XC1vZlwtZ3JhaW47CivkiYIgPiBhXC1iYXNrZXRcLWZvclwtZWFydGhcLW9yXC1zb2lsOwor5IeWID4gcm9wZVwtbWFkZVwtb2ZcLWJhbWJvb1wtc3RyaXBzOwor5IaAID4gdG9cLWNvcnJ1cHRcLW9yXC1iZVwtY29ycnVwdGVkOwor5IW+ID4gc3RhcnRpbmdcLXRvXC1wdXRcLWZvcnRoXC1lYXJzOwor5IWsID4gc21hbGxcLWJ1bmRsZVwtb2ZcLXJpY2VcLXBsYW50Owor5IGOID4gdG9cLW1ha2VcLWFcLWNsb3NlXC1pbnNwZWN0aW9uOwor5ICKID4gYVwta2luZFwtb2ZcLXdhdGVyXC1jb250YWluZXJzOwor47ypID4gY29uY2F2ZVwtY2hhbm5lbHNcLW9mXC10aWxpbmc7CivjuqAgPiBhXC1ibGFja1wtYXBlXC13aXRoXC1sb25nXC10YWlsOwor47qVID4gdGhlXC1maWdodGluZ1wtc291bmRcLW9mXC1kb2dzOwor47maID4gc291bmRcLW9mXC1jYWxsaW5nXC10b1wtYVwtY2FsZjsKK+O5mSA+IHNvdW5kXC1vZlwtY2FsbGluZ1wtdG9cLWFcLWNhbGY7Civjt7YgPiB0b1wtZHJ5XC1vclwtd2FybVwtbmVhclwtYVwtZmlyZTsKK+O3gyA+IGZpcmVcLWJ1cm5zXC1mb3JcLWFcLWxvbmdcLXRpbWU7CivjtJQgPiB0aGVcLW5vaXNlXC1vZlwtZmxvd2luZ1wtd2F0ZXI7CivjtIsgPiBkZWVwXC1hbmRcLWNsZWFyXC1cLXRvXC11cmluYXRlOwor47OnID4gdGhlXC13YXRlclwtZmxvd2luZ1wtZnJvbVwtXC5cLlwuOwor47G9ID4gdG9cLWhpdFwtb3JcLXRvXC1zdHJpa2VoZWF2aWx5Owor47G7ID4gZGlzZWFzZXNcLW9mXC1kdW1iXC1jcmVhdHVyZXM7CivjsaEgPiB0aGVcLXNvdWxcLW91dFwtb2ZcLW9uZScnc1wtYm9keTsKK+OxlCA+IGFcLXNtYWxsXC1xdWFudGl0eVwtb3JcLW51bWJlcjsKK+OvnyA+IGZvb3RcLW9mXC1hXC1oaWxsXC1vclwtbW91bnRhaW47Civjra4gPiBhXC1raW5kXC1vZlwtbGlxdW9yXC1jb250YWluZXI7CivvqIwgPiBkdXBsaWNhdGVcLW9mXC1iaWdcLWZpdmVcLWE0NjE7Civvp5QgPiBub3JtYWxcLWh1bWFuXC1yZWxhdGlvbnNoaXBzOwor76eGID4gYW5jaWVudFwtbXVzaWNhbFwtaW5zdHJ1bWVudDsKK+OmgyA+IHBlcmZlY3RcLXBlcnNvbmFsXC1jaGFyYWN0ZXI7CivjpbEgPiB0b1wtYmVcLWRlc2lyb3VzXC1vZlwtc3BlYWtpbmc7CivjpY0gPiB0b1wtYmVhclwtamVhbG91c1wtaGF0cmVkXC1mb3I7CivjpKwgPiBmdWxsXC1vZlwtYW5nZXJcLWFuZFwtdmV4YXRpb247CivjpI4gPiBhXC1tb2RlbFwtb3JcLXR5cGljYWxcLWV4YW1wbGU7CivjpIQgPiByYWdpbmdcLWFuaW1vc2l0eVwtb3JcLWhhdHJlZDsKK+OjpyA+IHRoZVwtc3VjY2Vzc2lvblwtaW5cLWFcLWZhbWlseTsKK+OjoyA+IHRvXC13YWxrXC1pblwtYW5cLXVuc3RlYWR5XC13YXk7CivjorggPiBkZXZpY2VcLWZvclwtcmVndWxhdGluZ1wtYm93czsKK+OitiA+IGRldmljZVwtZm9yXC1yZWd1bGF0aW5nXC1ib3dzOwor46KSID4gYW5cLWFsbW9zdFwtY29sbGFwc2luZ1wtaG91c2U7CivjnKogPiBuYW1lXC1vZlwtYVwtZmFtaWx5XC1vclwtYVwtY2xhbjsKK+OclSA+IHJlbGF0aXZlc1wtdGhyb3VnaFwtbWFycmlhZ2U7Civjm7IgPiB0aGVcLWhhaXJcLW9uXC10aGVcLWh1bWFuXC1oZWFkOwor45q/ID4gYVwtZ29kZGVzcycnc1wtbmFtZVwtaW5cLWxlZ2VuZDsKK+OZoSA+IGFcLWtpbmRcLW9mXC1lYXRhYmxlXC1tdXNocm9vbTsKK+OYuSA+IHRvXC1zcHJlYWRcLXNvaWxcLW9uXC10aGVcLXJvYWQ7CivjmKQgPiBjaXJjbGVcLW9mXC10aGVcLW1vdmluZ1wtd2F0ZXI7CivjlqggPiBpbmRpc3RpbmN0XC1uYXNhbFwtdXR0ZXJhbmNlOwor45K9ID4gYVwta2luZFwtb2ZcLWNhcFwtZm9yXC1jaGlsZHJlbjsKK+OQliA+IGFcLXRyYW5zbGF0ZWRcLW5hbWVcLW9mXC1pbmRpYTsKK+WxiiA+IG51bWVyYXJ5XC1hZGp1bmN0XC1mb3JcLXRpbWU7CivlsYYgPiBudW1lcmFyeVwtYWRqdW5jdFwtZm9yXC10aW1lOwor6LCBID4gd2hvXD9cLXdob21cP1wtd2hvc2VcP1wtYW55b25lXD87CivoqrAgPiB3aG9cP1wtd2hvbVw/XC13aG9zZVw/XC1hbnlvbmVcPzsKK+mYvyA+IHByZWZpeFwtZm9yXC1wZW9wbGUnJ3NcLW5hbWVzOwor6I6iID4gcG9kc1wtb2ZcLWxlZ3VtaW5vdXNcLXBsYW50czsKK+eLhCA+IHRyaWJlXC1mcm9tXC1ub3J0aGVyblwtY2hpbmE7CivnubAgPiB0b1wtcmVlbFwtc2lsa1wtZnJvbVwtY29jb29uczsKK+a8kyA+IHJpdmVyXC1pblwtZ3Vhbmd4aVwtcHJvdmluY2U7CivlkosgPiBxdWVzdGlvblwtZm9ybWluZ1wtcGFydGljbGU7Civpup8gPiBmZW1hbGVcLW9mXC1jaGluZXNlXC11bmljb3JuOwor5ritID4gbmFtZVwtb2ZcLWFcLXJpdmVyXC1pblwtc2hhbnhpOwor6IqcID4gbHV4dXJpb3VzXC1ncm93dGhcLW9mXC13ZWVkczsKK+e7jiA+IHRvXC11bnJhdmVsXC1vclwtdW5yZWVsXC1zaWxrOwor55KQID4gYmVhdXRpZnVsXC12YXJpZXR5XC1vZlwtamFkZTsKK+mftiA+IG11c2ljXC1vZlwtdGhlXC1lbXBlcm9yXC1zaHVuOwor6ayfID4gZHJlc3NcLWhhaXJcLWluXC1jb2lsZWRcLWtub3Q7CivnvYIgPiBsb25nXC1uZWNrZWRcLWphclwtb3JcLWJvdHRsZTsKK+mdsyA+IHN0cmFwXC1vblwtYVwtaG9yc2UnJ3NcLWJyZWFzdDsKK+a3piA+IHJpdmVyXC1pblwtamlhbmd4aVwtcHJvdmluY2U7CivmkKEgPiB0b1wtcHVzaFwtb3Zlclwtb3JcLXB1c2hcLWJhY2s7Civoia4gPiBzZXZlbnRoXC1vZlwtZWlnaHRcLWRpYWdyYW1zOwor5rmfID4gcml2ZXJcLWluXC1xaW5naGFpXC1wcm92aW5jZTsKK+azuCA+IHJpdmVyXC1pblwtamlhbmd4aVwtcHJvdmluY2U7CivojZogPiBwb2RzXC1vZlwtbGVndW1pbm91c1wtcGxhbnRzOwor54yxID4gYVwtbW9ua2V5XC13aXRoXC15ZWxsb3dcLWhhaXI7CivmtqogPiByaXZlclwtaW5cLXNpY2h1YW5cLXByb3ZpbmNlOwor5LqzID4gbmFtZVwtb2ZcLWRpc3RyaWN0XC1pblwtYW5odWk7CivolLogPiBydXNoXC11c2VkXC1mb3JcLW1ha2luZ1wtbWF0czsKK+eQrCA+IHRoZVwtdmlydHVlXC1vZlwtYVwtZ2VudGxlbWFuOwor5rKpID4gbmFtZVwtb2ZcLWFcLXJpdmVyXC1pblwtc2hhbnhpOwor54yXID4gZXhjbGFtYXRpb25cLW9mXC1hZG1pcmF0aW9uOwor6byZID4gZHJ1bVwtY2FycmllZFwtb25cLWhvcnNlYmFjazsKK+iVsiA+IHZhcmlldHlcLW9mXC1hcnRlbWlzaWFcLXNlZWs7Civnk54gPiB5b3VuZ1wtbWVsb25zXC1qdXN0XC1mb3JtaW5nOwor6L6BID4gY2FydFwtd2hlZWxcLXdpdGhcLW5vXC1zcG9rZXM7CivphYYgPiBuYW1lXC1vZlwtemhvdVwtcGVyaW9kXC1zdGF0ZTsKK+m6kCA+IGZlbWFsZVwtb2ZcLWNoaW5lc2VcLXVuaWNvcm47CivpsLwgPiB0aGVcLXdlYXRoZXJcLW9yXC1kb2pvXC1sb2FjaDsKK+mflCA+IGFcLXdyYXBwZXJcLW9yXC1jYXNlXC1mb3JcLWJvdzsKK+mZlyA+IGFcLXN0ZWVwXC1oaWxsXC5cLXByZWNpcGl0b3VzOwor6Y++ID4gdGhlXC10cmlnZ2VyXC1vZlwtYVwtY3Jvc3Nib3c7CivphKAgPiBjb3VudHlcLWluXC1zaGFueGlcLXByb3ZpbmNlOwor6YScID4gY291bnR5XC1pblwtc2hhbnhpXC1wcm92aW5jZTsKK+mEjiA+IGFcLXBsYWNlXC1pblwtaGVuYW5cLXByb3ZpbmNlOwor6YODID4gY291bnR5XC1pblwtc2hhbnhpXC1wcm92aW5jZTsKK+i8hyA+IGNhcnRcLXdoZWVsXC13aXRoXC1ub1wtc3Bva2VzOwor6Ke3ID4gdG9cLXByb2Nlc3NcLW9yXC1jYXJ2ZVwtaG9ybnM7CivonbAgPiB2aXBlcmFcLXJ1c3NlbGlpXC1zaWFtZW5zaXM7CivomIQgPiB2YXJpZXR5XC1vZlwtYXJ0ZW1pc2lhXC1zZWVrOwor6JWqID4gbHV4dXJpb3VzXC1ncm93dGhcLW9mXC13ZWVkczsKK+iRtiA+IGRyYWJhXC1uZW1lcm9zYVwtYmViZVwtY2FycGE7CivoipQgPiBhXC1nZW5lcmFsXC10ZXJtXC1mb3JcLXBsYW50czsKK+iGpSA+IGVnZ3NcLW9mXC1iaXJkc1wtb3JcLXJlcHRpbGVzOwor572MID4gbG9uZ1wtbmVja2VkXC1qYXJcLW9yXC1ib3R0bGU7CivnvYMgPiBsb25nXC1uZWNrZWRcLWphclwtb3JcLWJvdHRsZTsKK+e6kSA+IHRvXC1zb2Z0ZW5cLWhlbXBcLWJ5XC1ib2lsaW5nOwor57m5ID4gdG9cLXVucmF2ZWxcLW9yXC11bnJlZWxcLXNpbGs7CivnsakgPiBiYW1ib29cLWNvbnRhaW5lclwtZm9yXC1mb29kOwor57GdID4gYVwtdHViZVwtdG9cLWhvbGRcLWNob3BzdGlja3M7CivnrL4gPiBiYW1ib29cLWNvbnRhaW5lclwtZm9yXC1mb29kOwor56yOID4gYmFtYm9vXC13aXRoXC1ibGFja1wtcGF0Y2hlczsKK+emmCA+IGltcGVyaWFsXC1hbmNlc3Rvclwtd29yc2hpcDsKK+ekhCA+IHBsYWNlXC1pblwtc2ljaHVhblwtcHJvdmluY2U7CivnkqogPiBwZWFybFwtcGVuZGFudHNcLW9uXC1jb3JvbmV0Owor55G9ID4gdGlua2xpbmdcLW9mXC1qYWRlXC1wZW5kYW50czsKK+eMsiA+IHNtb2tlXC1vclwtZmxhbWVzXC1mcm9tXC1maXJlOwor54CYID4gcml2ZXJcLWluXC1qaWFuZ3hpXC1wcm92aW5jZTsKK+a6jiA+IHJpdmVyXC1pblwtZ3Vhbmd4aVwtcHJvdmluY2U7CivmuoggPiBuYW1lXC1vZlwtYVwtcml2ZXJcLWluXC1zaGFueGk7Civms5wgPiBhXC1yaXZlclwtaW5cLWhlYmVpXC1wcm92aW5jZTsKK+azkiA+IGFcLXJpdmVyXC1pblwtaHViZWlcLXByb3ZpbmNlOwor5rGtID4gY29uZmx1ZW5jZVwtb2ZcLXR3b1wtc3RyZWFtczsKK+arvSA+IHNoYXBlXC13b29kXC1ieVwtdXNlXC1vZlwtaGVhdDsKK+aZrCA+IGZpcnN0XC1iaXJ0aGRheVwtb2ZcLWFcLWNoaWxkOwor5oKKID4gd2lzZVwuXC10b1wta25vd1wtaW50dWl0aXZlbHk7CivlvY0gPiB0b1wtZHJhd1wtYVwtYm93XC10b1wtdGhlXC1mdWxsOwor5bqFID4gYW5cLWludGVycm9nYXRpdmVcLXBhcnRpY2xlOwor5ayAID4gbmFtZVwtb2ZcLWFcLXJpdmVyXC1pblwtc2hhbnhpOwor5LW1ID4geWVsbG93aXNoXC1ibGFja1wtYW5kXC13aGl0ZTsKK+S1qyA+IGxpZ2h0XC1yZWRcLXllbGxvd2lzaFwtYmxhY2s7CivktJsgPiB0b1wtbWFrZVwtZGVjb2N0aW9uXC1vZlwtc2FsdDsKK+SztyA+IGFcLXNlY29uZFwtbmFtZVwtZm9yXC1jaGlja2VuOwor5LOGID4gYVwta2luZFwtb2ZcLXNwZWNpZXNcLW9mXC1teW5hOwor5LCCID4gYVwtY29pZmZ1cmVcLXdpdGhcLWFcLXRvcGtub3Q7Civkr78gPiBhXC1jb2lmZnVyZVwtd2l0aFwtYVwtdG9wa25vdDsKK+SvvCA+IGFcLWNvaWZmdXJlXC13aXRoXC1hXC10b3Brbm90Owor5K+0ID4gYVwtY29pZmZ1cmVcLXdpdGhcLWFcLXRvcGtub3Q7Civkr7IgPiBhXC1jb2lmZnVyZVwtd2l0aFwtYVwtdG9wa25vdDsKK+SulSA+IGhvcnNlXC13aXRoXC13aGl0ZVwtZm9yZWhlYWQ7CivkraggPiB3aW5lXC1wb3VyZWRcLWluXC1hXC1saWJhdGlvbjsKK+SsvSA+IHdpbmVcLXBvdXJlZFwtaW5cLWFcLWxpYmF0aW9uOwor5KuAID4gdGhlXC1sb3dlclwtZW5kXC1vZlwtdGhlXC1qYXdzOwor5KmoID4gYVwtd3JhcHBlclwtb3JcLWNhc2VcLWZvclwtYm93Owor5KmdID4gdG9cLXRhblwtYW5kXC1zb2Z0ZW5cLWxlYXRoZXI7CivkpIIgPiBhXC1zZWNvbmRcLW5hbWVcLWZvclwtdmluZWdhcjsKK+SjtCA+IHRvXC1sb3NlXC10ZW1wZXJcLXdoZW5cLWRydW5rOwor5KOGID4gbmFtZVwtb2ZcLWFcLWNvdW50eVwtaW5cLWdhb21pOwor5KKyID4gdG9cLWdvXC1hbGxcLXRoZVwtd2F5XC1mb3J3YXJkOwor5KKuID4gcmFwaWRcLW1hcmNoaW5nXC1vclwtcnVubmluZzsKK+SioSA+IHRvXC1zdGFtcFwtdGhlXC1mb290XC1mb3J3YXJkOwor5KG5ID4gdGhlXC1sb3dcLXJlYXJcLW9mXC1hXC1jaGFyaW90Owor5KGvID4gc291bmRcLW9mXC1tb3ZpbmdcLWNhcnJpYWdlczsKK+ShqyA+IHNvdW5kXC1vZlwtbW92aW5nXC1jYXJyaWFnZXM7CivkoaEgPiB0b1wtZ2V0XC11cFwtaW50b1wtYVwtY2FycmlhZ2U7CivkoZggPiBzb3VuZFwtb2ZcLW1vdmluZ1wtY2FycmlhZ2VzOwor5KGSID4gc291bmRcLW9mXC1tb3ZpbmdcLWNhcnJpYWdlczsKK+SglSA+IHJhcGlkXC1tYXJjaGluZ1wtb3JcLXJ1bm5pbmc7CivkmLggPiB0aGVcLWxvd2VyXC1mcm9udFwtb2ZcLWFcLXJvYmU7CivkmJIgPiBib3knJ3NcLXJlcHJvZHVjdGl2ZVwtb3JnYW5zOwor5JWEID4gbWVhdFwtaW5cLXRoZVwtZm9ybVwtb2ZcLXBhc3RlOwor5JOLID4gZWxtXC1zZWVkc1wtXC1cLVwtdXNlZFwtYXNcLWZvb2Q7CivkkaIgPiBhXC1rbmlmZVwtc2hhcGVkXC1zbWFsbFwtYm9hdDsKK+SRiCA+IG1lYXRcLXRvXC1vZmZlclwtZm9yXC13b3JzaGlwOwor5I2vID4gZ2FvdFwtd2l0aFwtZGlmZmVyZW50XC1ob3JuczsKK+SNoiA+IG5ldHRlZFwtdmVpbmVkXC13aW5kb3dcLXNpbGw7Civki58gPiB0aGVcLXdlaWdodFwtb25cLWFcLXN0ZWVseWFyZDsKK+SKtiA+IGFcLXJvcGVcLWZvclwtbGVhZGluZ1wtY2F0dGxlOwor5ImXID4gYVwtcmVjZXB0YWNsZVwtb3JcLWNvbnRhaW5lcjsKK+SEuCA+IGdyYWluc1wtcHJvZHVjaW5nXC1ub1wtZnJ1aXQ7CivkhJIgPiByaXBlbmluZ1wtb2ZcLXBhZGR5XC1vclwtcmljZTsKK+SDgSA+IHVuZXZlblwtb3JcLXJ1Z2dlZFwtdGVycmFpbnM7CivkgZQgPiBiaWdcLWV5ZXNcLXByb3R1YmVyYW50XC1leWVzOwor47+wID4gZHVyYWJsZVwtYW5kXC1zb2xpZFwtbGVhdGhlcjsKK+O/giA+IG9ic3RyYWN0aW9uXC1vZlwtdGhlXC1ib3dlbHM7CivjvrUgPiBhXC1kYXJrXC1jb2xvcmVkXC1iaXJ0aFwtbWFyazsKK+O+nCA+IHdlYWtcLWJyZWF0aFwtb2ZcLWFcLXNpY2tcLW1hbjsKK+O9viA+IGFcLWtpbmRcLW9mXC13b21hbicnc1wtZGlzZWFzZTsKK+O7jyA+IHRpbmtsaW5nXC1vZlwtamFkZVwtcGVuZGFudHM7CivjuoAgPiBhXC1tb25rZXlcLXdpdGhcLXllbGxvd1wtaGFpcjsKK+O4siA+IGFcLWtpbmRcLW9mXC1tb3VudGFpblwtY2F0dGxlOwor47evID4gc21va2VcLWFuZFwtZHVzdFwtZXZlcnl3aGVyZTsKK+O2uiA+IHRoZVwtbGlnaHRcLW9yXC1nbG93XC1vZlwtZmlyZTsKK+O2miA+IG5hbWVcLW9mXC1hXC1yaXZlclwtaW5cLXNoYW54aTsKK+O1vSA+IHRoZVwtc3RyZW5ndGhcLW9mXC1hXC1jdXJyZW50Owor47GlID4gdGhlXC1ldmlsXC1zcGlyaXRzXC1jb21lXC1vdXQ7CivjsKYgPiB0b1wtYnJlYXRoXC13aXRoXC1tb3V0aFwtb3BlbjsKK+OwlCA+IGFcLWtpbmRcLW9mXC1lZGlibGVcLW11c2hyb29tOwor47COID4gYVwtd29vZGVuXC1wZXN0bGVcLW9yXC1yYW1tZXI7CivjrZsgPiBhXC1raW5kXC1vZlwtY2xpbWJpbmdcLXBsYW50czsKK+OpoCA+IGFcLWZpZXJjZVwtb3JcLWJsb29keVwtYmF0dGxlOwor76ezID4gZmVtYWxlXC1vZlwtY2hpbmVzZVwtdW5pY29ybjsKK+OmmyA+IHRvXC13YWxrXC1pblwtYVwtY29tcG9zZWRcLXdheTsKK+OgnSA+IGxvZnR5XC1hbmRcLXN0ZWVwXC1tb3VudGFpbnM7CivjoJAgPiBoaWdoXC1hbmRcLXBvaW50ZWRcLW1vdW50YWluOwor456aID4gdG9cLXBpbGVcLXVwXC1sYXllclwtYnlcLWxheWVyOwor45yvID4gYVwtd29yZFwtdG9cLWRlc2lnbmF0ZVwtd29tYW47CivjnK4gPiB0b1wtZ29cLWJleW9uZFwtbm9ybWFsXC1saW1pdDsKK+OakyA+IHRpZVwtYmVhbXNcLW9mXC1hXC1zbWFsbFwtYm9hdDsKK+OYjCA+IHRvXC1sYXVnaFwtd2l0aG91dFwtc3RvcHBpbmc7Civjl6YgPiBhXC1sb3VkXC1hbmRcLWNvbmZ1c2VkXC1ub2lzZTsKK+OXmiA+IHZleGluZ2x5XC12ZXJib3NlXC1vclwtd29yZHk7Civjl5UgPiB0aGVcLWNyb3dpbmdcLW9mXC1hXC1waGVhc2FudDsKK+OWhCA+IHNvdW5kXC1vZlwtY2FsbGluZ1wtY2hpY2tlbnM7CivjlZogPiBjbGF3c1wtb2ZcLWJpcmRzXC1vclwtYW5pbWFsczsKK+OQsyA+IGhpZ2hcLWFuZFwtbGV2ZWxcLW9uXC10aGVcLXRvcDsKK+icgCA+IG5hbWVcLW9mXC1hblwtYW5jaWVudFwtc3RhdGU7CivmtJsgPiByaXZlclwtaW5cLXNoYW54aVwtcHJvdmluY2U7Civlj5QgPiBmYXRoZXInJ3NcLXlvdW5nZXJcLWJyb3RoZXI7CivntbkgPiBraW5kXC1vZlwtdGhpY2tcLXN0aWZmXC1zaWxrOwor572pID4gYmFza2V0XC1mb3JcLWNhdGNoaW5nXC1maXNoOwor5aS3ID4gYW5jaWVudFwtYmFyYmFyaWFuXC10cmliZXM7CivnoLAgPiBzb3VuZFwtb2ZcLWNyYXNoaW5nXC1zdG9uZXM7Civlk44gPiBpbnRlcmplY3Rpb25cLW9mXC1zdXJwcmlzZTsKK+aclCA+IGZpcnN0XC1kYXlcLW9mXC1sdW5hclwtbW9udGg7Civmj6MgPiBwdXRcLXRoaW5nc1wtdW5kZXJcLWNsb3RoZXM7CivltYsgPiBvbWVpXC1tb3VudGFpblwtaW5cLXNpY2h1YW47CivpgrkgPiBuYW1lXC1vZlwtYW5cLWFuY2llbnRcLXN0YXRlOwor57yJID4gdG9cLXNld1wtaW5cLWNsb3NlXC1zdGl0Y2hlczsKK+e7oiA+IGtpbmRcLW9mXC10aGlja1wtc3RpZmZcLXNpbGs7CivlmbYgPiB1c2VkXC1pblwtdHJhbnNsaXRlcmF0aW9uczsKK+axlSA+IGJhc2tldFwtZm9yXC1jYXRjaGluZ1wtZmlzaDsKK+aOsCA+IHRvXC1icmVha1wtd2l0aFwtYm90aFwtaGFuZHM7CivpnIYgPiBhXC1zdWRkZW5cLXBlYWxcLW9mXC10aHVuZGVyOwor5ryzID4gbmFtZVwtb2ZcLWFcLXJpdmVyXC1pblwtaGVuYW47Civmsb4gPiByaXZlclwtaW5cLXNoYW54aVwtcHJvdmluY2U7Civlt7MgPiBzaXh0aFwtb2ZcLXR3ZWx2ZVwtYnJhbmNoZXM7CivmsbQgPiBuYW1lXC1vZlwtYVwtcml2ZXJcLWluXC1oZW5hbjsKK+WXnSA+IGNhY2tsaW5nXC1vZlwtZm93bHNcLXRvXC1nYWc7Civlp5ggPiBpbGxpY2l0XC1zZXh1YWxcLXJlbGF0aW9uczsKK+mcjyA+IGZhbGxpbmdcLW9mXC1zbm93XC1hbmRcLXJhaW47Civpg7ggPiBjb3VudHlcLWluXC1oZWJlaVwtcHJvdmluY2U7CivlkaYgPiB0aGVcLWJsZWF0aW5nXC1vZlwtdGhlXC1kZWVyOwor5o6uID4gdG9cLWJlYXJcLW9uXC10aGVcLXNob3VsZGVyczsKK+iOhiA+IGFcLWtpbmRcLW9mXC1sZWdlbmRhcnlcLXRyZWU7CivpmKEgPiBmb290cGF0aHNcLWJldHdlZW5cLWZpZWxkczsKK+m4qiA+IHNwZWNpZXNcLW9mXC10YWl3YW5cLXBpZ2VvbjsKK+WTlCA+IHVzZWRcLWluXC10cmFuc2xpdGVyYXRpb25zOwor5rCQID4gbmFtZVwtb2ZcLWFuXC1hbmNpZW50XC10cmliZTsKK+WRpCA+IHB1cmluZVwtaW5cLWNoZW1cLlwtY29tcG91bmQ7CivlrJcgPiBzdWNjZXNzaW9uXC10b1wtdGhlXC10aHJvbmU7CivmsqMgPiByaXZlclwtaW5cLXNoYW54aVwtcHJvdmluY2U7Civop48gPiBtZWV0XC1vclwtc2VlXC11bmV4cGVjdGVkbHk7Civmv64gPiBjb3VudHlcLWluXC1oZW5hblwtcHJvdmluY2U7Civpg7QgPiBjb3VudHlcLWluXC1odW5hblwtcHJvdmluY2U7Civovb4gPiBsb3dcLXJlYXJcLXBvcnRpb25cLW9mXC1jYXJ0Owor56ieID4gZ3JhaW5cLXJlYWR5XC1mb3JcLWdyaW5kaW5nOwor54GeID4gcml2ZXJcLWluXC1zaGFueGlcLXByb3ZpbmNlOwor6YOnID4gY291bnR5XC1pblwtaHViZWlcLXByb3ZpbmNlOwor6Lm8ID4gd2ViYmVkXC1mZWV0XC1vZlwtd2F0ZXJmb3dsOwor55SRID4gYm9pbGVyXC1mb3JcLXN0ZWFtaW5nXC1yaWNlOwor5aaXID4gd2lmZVwtb2ZcLW1vdGhlcicnc1wtYnJvdGhlcjsKK+a1oCA+IG5hbWVcLW9mXC1hXC1yaXZlclwtaW5cLWh1YmVpOwor6bOUID4gc3dpbW1pbmdcLWJsYWRkZXJcLW9mXC1maXNoOwor56+MID4gYW5jaWVudFwtbXVzaWNcLWluc3RydW1lbnQ7Civnp5UgPiBlbXB0eVwtZ3JhaW5cLW9yXC1yaWNlXC1odXNrOwor55CaID4gb3JuYW1lbnRhbFwtZ2Vtc1wtZm9yXC1iZWx0Owor6bK1ID4gY3J5cHRvYnJhbmNodXNcLWphcG9uaWN1czsKK+iJqCA+IGxvbmdcLWFuZFwtbmFycm93XC13YXJcLWJvYXQ7CivmtpEgPiByaXZlclwtaW5cLXNoYW5zaVwtcHJvdmluY2U7Civpg48gPiBjb3VudHlcLWluXC1oZW5hblwtcHJvdmluY2U7Civpm6kgPiBvZmZlclwtc2FjcmlmaWNlXC1mb3JcLXJhaW47Civkvb4gPiBhXC1yb3dcLW9yXC1maWxlXC1vZlwtZGFuY2VyczsKK+e8giA+IHRoZVwtd29vZlwtb2ZcLWFcLXdvdmVuXC1pdGVtOwor6Im0ID4gdGhlXC1jb3VudGVuYW5jZVwtY2hhbmdpbmc7Civmu48gPiBuYW1lXC1vZlwtYVwtcml2ZXJcLWluXC1oZWJlaTsKK+mDviA+IGNvdW50eVwtaW5cLWhlbmFuXC1wcm92aW5jZTsKK+m3niA+IHRoZVwtdHVycXVvaXNlXC1raW5nZmlzaGVyOwor6bWBID4gbXljdGljb3JheFwtcHJhc2lub3NjZWxlczsKK+m0oyA+IHNwZWNpZXNcLW9mXC10YWl3YW5cLXBpZ2VvbjsKK+mwviA+IHN3aW1taW5nXC1ibGFkZGVyXC1vZlwtZmlzaDsKK+mvoiA+IGNyeXB0b2JyYW5jaHVzXC1qYXBvbmljdXM7CivprrAgPiBhXC1zbWFsbFwta2luZFwtb2ZcLXN0dXJnZW9uOwor6augID4gc2hhdmVcLWhlYWRcLWFzXC1wdW5pc2htZW50Owor6aiVID4gbmFtZVwtb2ZcLWFcLWZhYnVsb3VzXC1ob3JzZTsKK+mfgiA+IGFcLXNhZGRsZVwtZmxhcFwuXC10cmFwcGluZ3M7CivpmbQgPiBhXC1wYXJhcGV0XC1vblwtYVwtY2l0eVwtd2FsbDsKK+mXpCA+IHdhbGxcLWFyb3VuZFwtbWFya2V0XC1wbGFjZTsKK+mEsiA+IGNvdW50eVwtaW5cLWhlYmVpXC1wcm92aW5jZTsKK+mElyA+IGNvdW50eVwtaW5cLWhlYmVpXC1wcm92aW5jZTsKK+mEliA+IGNvdW50eVwtaW5cLWh1YmVpXC1wcm92aW5jZTsKK+mEkiA+IG5hbWVcLW9mXC1hblwtYW5jaWVudFwtc3RhdGU7Civpg58gPiBjb3VudHlcLWluXC1oZW5hblwtcHJvdmluY2U7CivovIogPiBsb3dcLXJlYXJcLXBvcnRpb25cLW9mXC1jYXJ0Owor6LSRID4gXDxhYmJydlw+XC1qaWFuZ3hpXC1wcm92aW5jZTsKK+iooSA+IHRvXC1jaGFudFwtdG9cLW1vYW5cLXRvXC1zaWdoOwor6KavID4gbWVldFwtb3JcLXNlZVwtdW5leHBlY3RlZGx5Owor6JuBID4gcG9tcG9uaWFcLW1hY3VsYXRpb2NvbGxpczsKK+iYgCA+IGZhbGxpbmdcLWxlYXZlc1wtYW5kXC1iYXJrczsKK+iXuiA+IHJ1c2hcLXVzZWRcLWluXC1tYWtpbmdcLW1hdHM7Civoj7QgPiBzbWFsbFwtYnVkZGhpc3RcLW1vbmFzdGVyeTsKK+iOlCA+IGZyaXRpbGxhcmlhXC12ZXJ0aWNpbGxhdGE7CivojLwgPiBjaHJ5c2FudGhlbXVtXC1jb3JvbmFyaXVtOwor6ImlID4gYW5cLW9hclwtb3JcLXBhZGRsZVwuXC10b1wtcm93Owor6IaZID4gY2FsbG91c1wtc2tpblwtb25cLXRoZVwtZmVldDsKK+iFnCA+IHF1aWNrZW5pbmdcLW9mXC10aGVcLWZvZXR1czsKK+iCsyA+IHRoZVwtY29ybmVyc1wtb2ZcLXRoZVwtbW91dGg7Civnv5sgPiBsb29rXC1vZlwtcnVtcGxlZFwtZmVhdGhlcnM7CivnvZ0gPiBuZXRcLWZvclwtY2F0Y2hpbmdcLXJhYmJpdHM7Civnt50gPiB0b1wtc2V3XC1pblwtY2xvc2VcLXN0aXRjaGVzOwor57eZID4gdGhlXC13b29mXC1vZlwtYVwtd292ZW5cLWl0ZW07Civnt4wgPiB0YXNzZWxzXC1oYW5naW5nXC1mcm9tXC1oYXQ7CivnrbggPiBuYW1lXC1vZlwtYVwtcGxhY2VcLWluXC1ob25hbjsKK+eomSA+IGdyYWluXC1yZWFkeVwtZm9yXC1ncmluZGluZzsKK+eSoCA+IGFcLXBpZWNlXC1vZlwtcHJlY2lvdXNcLWphZGU7CivnjrYgPiBuYW1lXC1vZlwtb25lXC1raW5kXC1vZlwtamFkZTsKK+eNniA+IG5hbWVcLW9mXC1hXC12YXJpZXR5XC1vZlwtZG9nOwor54yUID4gbmFtZVwtb2ZcLWFuXC1hbmNpZW50XC10cmliZTsKK+eBqCA+IHRoZVwtcml2ZXJcLWdhblwtaW5cLWppYW5neGk7CivngYMgPiByaXZlclwtaW5cLXNoYW54aVwtcHJvdmluY2U7Civmv7IgPiBuYW1lXC1vZlwtYVwtcml2ZXJcLWluXC1odW5hbjsKK+a5iyA+IHJpdmVyXC1pblwtc2hhbnhpXC1wcm92aW5jZTsKK+a0pyA+IG5hbWVcLW9mXC1hXC1yaXZlclwtaW5cLWhvbmFuOwor5qinID4gemFudGhveHlsdW1cLWFpbGFudGhvaWRlczsKK+ampCA+IHBlcmNoXC1mb3JcLWZvd2xzXC1yb29zdFwtb247CivmoIIgPiBhXC1raW5kXC1vZlwtZXZlcmdyZWVuXC10cmVlOwor5pehID4gY2hva2VcLW9uXC1zb21ldGhpbmdcLWVhdGVuOwor5pKLID4gdG9cLXJ1YlwtYmV0d2VlblwtdGhlXC1oYW5kczsKK+aDjCA+IHRvXC1iZWFyXC1hXC1ncnVkZ2VcLWFnYWluc3Q7CivltLYgPiBuYW1lXC1vZlwtYVwtbGVnZW5kYXJ5XC1oaWxsOwor5bSBID4gYVwtcGxhY2VcLWluXC10YWl3YW5cLXRhaW5hbjsKK+WwniA+IGZ1ZWxcLXVzZWRcLWZvclwtc2FjcmlmaWNlczsKK+WnuiA+IG5hbWVcLW9mXC1hblwtYW5jaWVudFwtc3RhdGU7CivlpZ4gPiB0aGVcLXN0cmlkZVwtbWFkZVwtYnlcLWFcLW1hbjsKK+WklyA+IHRvXC10dXJuXC1vdmVyXC13aGVuXC1hc2xlZXA7Civll7YgPiB1c2VkXC1pblwtdHJhbnNsaXRlcmF0aW9uczsKK+WHnCA+IHNoaXZlclwtd2l0aFwtY29sZFwtb3JcLWZlYXI7Civlg7AgPiBhbmNpZW50XC1hYm9yaWdpbmFsXC10cmliZTsKK+S6gyA+IG5hbWVcLW9mXC1hXC1raW5kXC1vZlwtYW5pbWFsOwor5Lm6ID4gcGFpbnRpbmdcLXRvb2xcLXBsYWNlXC1uYW1lOwor5Lm2ID4ga29yZWFuXC1wbGFjZVwtbmFtZVwtcGhvbGhhOwor5LWCID4gdG9cLWdyaW5kXC13aGVhdFwtdG9cLXBvd2RlcjsKK+SysyA+IGJpcmRzXC1mbHlpbmdcLXVwXC1hbmRcLWRvd247CivkspsgPiBhblwtYW5jaWVudFwtbmFtZVwtZm9yXC10dW5hOwor5LKEID4gYVwta2luZFwtb2ZcLWZpaXNoXC1pblwtb2NlYW47CivksI0gPiBhXC1raW5kXC1vZlwtZGFya1wtcmVkXC1wYWludDsKK+SwhiA+IGJlYXV0aWZ1bFwtYW5kXC1oYWlyeVwtbWFuZTsKK+SvliA+IHRoZVwtbXVzY2xlc1wtb2ZcLXRoZVwtdGhpZ2g7CivkrLMgPiBjYWtlc1wtbWFkZVwtb2ZcLXJpY2VcLWZsb3VyOwor5KuvID4gdG9cLXRha2VcLWFcLWNhc3VhbFwtbG9va1wtYXQ7CivkqoAgPiBrbm93blwtdG9nZXRoZXJcLWFzXC1zYWRkbGU7CivkqaogPiBrbm93blwtdG9nZXRoZXJcLWFzXC1zYWRkbGU7CivkqJIgPiBzb3VuZFwtb2ZcLXRoZVwtd2F0ZXJcLWRyb3BzOwor5KaoID4gYVwtZG9vclwtY3VydGFpblwtb3JcLXNjcmVlbjsKK+SkryA+IGNvbnRhaW5lclwtZm9yXC10aGlja1wtc291cDsKK+SjjSA+IG5hbWVcLW9mXC1hblwtYW5jaWVudFwtc3RhdGU7Civko4UgPiBuYW1lXC1vZlwtYW5cLWFuY2llbnRcLXN0YXRlOwor5KGNID4gdGhlXC1saW5jaFwtcGluXC1vZlwtYVwtc2hlZWw7Civkn5cgPiB0b1wtc3RhbmRcLWZvclwtYVwtbG9uZ1wtdGltZTsKK+SfgyA+IHRvXC1tb3ZlXC1vclwtbWFyY2hcLXN3aWZ0bHk7CivkmrYgPiB0b1wtc2NvbGRcLWluXC1hXC1sb3VkXC12b2ljZTsKK+SZnCA+IGxlZ2VuZGFyeVwtbW91bnRhaW5cLWRlaXR5Owor5JmIID4gYVwtbG9vc2VcLWdhcm1lbnRcLW9yXC1jbG9hazsKK+SZhyA+IGNsb3RoZXNcLW9mXC1jb2Fyc2VcLWZhYnJpYzsKK+SXgiA+IGRpZW15Y3R5bHVzXC1weXJyaG9nYXN0ZXI7CivklKMgPiBhXC10cmliZVwtaW5cLWFuY2llbnRcLXRpbWVzOwor5JO0ID4gZWRpYmxlXC1mdW5ndXNcLWZyb21cLXRyZWVzOwor5JGOID4gc291cFwtb2ZcLXBpZycnc1wtaW50ZXN0aW5lczsKK+SQuyA+IGJpZ1wtcGllY2VzXC1vZlwtZHJpZWRcLW1lYXQ7CivkkLkgPiBwZXJzZXJ2ZWRcLWFuZFwtZHJpZWRcLW1lYXQ7CivkkLAgPiB0b1wtb2ZmZXJcLWZvb2RcLWFzXC10cmlidXRlOwor5JCCID4gZmF0XC1vZlwtYW5pbWFsc1wtb3JcLXBsYW50czsKK+SPpiA+IGZhdFwtb2ZcLWFuaW1hbHNcLW9yXC1wbGFudHM7CivkjrUgPiB0b1wtbG9va1wtc3RyYWlnaHRcLWZvcndhcmQ7CivkirEgPiBjYWtlc1wtbWFkZVwtb2ZcLXJpY2VcLWZsb3VyOwor5IqQID4gZmx1ZmZ5XC1zdHVmZmVkXC1kdW1wbGluZ3M7Civkio0gPiB0aGlja1wtY29uZ2VlXC1vclwtcG9ycmlkZ2U7Civkh48gPiB0b1wtcGlsZVwtb25lXC11cG9uXC1hbm90aGVyOwor5IScID4gaGFwcGluZXNzXC1hbmRcLXdlbGxcLWJlaW5nOwor5ISWID4gdXNlZFwtaW5cLW5hbWVcLW9mXC1hXC1wZXJzb247Civkg6IgPiBuYW1lXC1vZlwtYVwtbW91bnRhaW5cLWxvZnR5Owor5IGHID4gdG9cLWxvb2tcLWZvclwtYVwtc2hvcnRcLXRpbWU7CivkgLQgPiB0b1wtbG9va1wtc3RyYWlnaHRcLWZvcndhcmQ7CivkgKsgPiBuYXJyb3dcLWFuZFwtZGltXC1leWVcLXNpZ2h0Owor5ICqID4gYmlyZHNcLWZseWluZ1wtdXBcLWFuZFwtZG93bjsKK+O/uiA+IGp1dHRpbmdcLW9uXC10aGVcLWVwaWRlcm1pczsKK+O9kiA+IHRoZVwtY2hpbGRyZW5cLW9mXC1hXC1zaXN0ZXI7CivjvL8gPiB0aGVcLWJyaWNrXC13YWxsXC1vZlwtYVwtd2VsbDsKK+O8myA+IGxvbmdcLW5lY2tlZFwtd2luZVwtdmVzc2VsczsKK+O7qiA+IGFcLWtpbmRcLW9mXC1qYWRlXC1maW5lXC1qYWRlOwor47aFID4gZHJpZWRcLXVwXC1tb3VudGFpblwtY3JlZWtzOwor47WiID4gYVwtbWFyc2hcLWluXC1hbmNpZW50XC10aW1lczsKK+O0sCA+IGFcLXJpdmVyXC1pblwtYW5jaWVudFwtdGltZXM7CivjtKwgPiBhXC1yaXZlclwtaW5cLWFuY2llbnRcLXRpbWVzOwor47OlID4gYVwtcml2ZXJcLWluXC1hbmNpZW50XC10aW1lczsKK+OznSA+IGFcLXJpdmVyXC1pblwtYW5jaWVudFwtdGltZXM7Civjs48gPiBhXC1yaXZlclwtaW5cLWFuY2llbnRcLXRpbWVzOwor47ONID4gYVwtcGxhY2VcLWluXC1hbmNpZW50XC10aW1lczsKK+OziyA+IGFcLXJpdmVyXC1pblwtYW5jaWVudFwtdGltZXM7Civjs4ogPiB0aGVcLWZsb3dpbmdcLW9mXC10aGVcLXdhdGVyOwor47OAID4gYVwtcml2ZXJcLWluXC1hbmNpZW50XC10aW1lczsKK+OyiiA+IHRvXC11bmRlcnN0YW5kXC10aG9yb3VnaGx5Owor47C+ID4gc29uZ3NcLW9mXC10aGVcLXBlb3BsZVwtb2ZcLealmjsKK+OwvSA+IHRvXC1leGVydFwtb25lc2VsZlwtdG9cLXllbGw7Civjr6sgPiBhXC13YXR0bGVcLW9yXC1iYW1ib29cLWZlbmNlOwor466mID4gYnJhbmNoZXNcLWdyb3dpbmdcLXVwd2FyZHM7CivjqpsgPiB0b1wtcG91bmRcLXJvY2tzXC10b1wtcGllY2VzOwor46qZID4gdG9cLWdvXC10b1wtdGhlXC12ZXJ5XC1zb3VyY2U7Civjqa0gPiB0b1wtZGlzdHVyYlwtb3JcLXRvXC1hZ2l0YXRlOwor76ewID4gcnVzaFwtdXNlZFwtaW5cLW1ha2luZ1wtbWF0czsKK++llCA+IHNoaXZlclwtd2l0aFwtY29sZFwtb3JcLWZlYXI7CivvpJUgPiByaXZlclwtaW5cLXNoYW54aVwtcHJvdmluY2U7CivjoaogPiB0aGVcLXZhcm5pc2hcLW9uXC10aGVcLWZsb29yOwor46GnID4gdG9cLXN0cmV0Y2hcLW9wZW5cLXBhaW50aW5nOwor46CHID4gbmFtZVwtb2ZcLWFcLW1vdW50YWluXC1yaWRnZTsKK+OcvyA+IG5hbWVcLW9mXC1hXC1maXNoXC1pblwtbGVnZW5kOwor45qdID4gdGhlXC1zdHJpZGVcLW1hZGVcLWJ5XC1hXC1tYW47Civjl6kgPiBzb3VuZFwtb2ZcLWVuZHVyZVwtY29sZG5lc3M7Civjl6cgPiB0b1wtc2NvbGRcLXdpdGhcLWxvdWRcLXZvaWNlOwor45eMID4gdG9cLXNjb2xkXC13aXRoXC1sb3VkXC12b2ljZTsKK+OXgCA+IHRoZVwtYmxlYXRpbmdcLW9mXC10aGVcLWRlZXI7Civjk6EgPiB0aGVcLW1pZGRsZVwtcGFydFwtb2ZcLWFcLWJvdzsKK+OQqCA+IGFcLWtpbmRcLW9mXC1maXNoXC1pblwtbGVnZW5kOwor556lID4gdGFrZVwtZmxlZXRpbmdcLWdsYW5jZVwtYXQ7Civlt54gPiBhZG1pbmlzdHJhdGl2ZVwtZGl2aXNpb247CivlkKcgPiBlbXBoYXRpY1wtZmluYWxcLXBhcnRpY2xlOwor5p+QID4gY2VydGFpblwtdGhpbmdcLW9yXC1wZXJzb247CivnpaggPiBzbGlwXC1vZlwtcGFwZXJcLW9yXC1iYW1ib287CivogLYgPiB1c2VkXC1pblwtdHJhbnNsaXRlcmF0aW9uOwor5Y6YID4gdGhvdXNhbmR0aFwtcGFydFwtb2ZcLXRhZWw7Civlva0gPiBuYW1lXC1vZlwtYW5jaWVudFwtY291bnRyeTsKK+iCtCA+IGNvb2tlZFwtb3JcLXByZXBhcmVkXC1tZWF0Owor5L+OID4gY2hvcHBpbmdcLWJvYXJkXC1vclwtYmxvY2s7Civmt64gPiByaXZlclwtaW5cLWFuaHVpXC1wcm92aW5jZTsKK+mDoSA+IGFkbWluaXN0cmF0aXZlXC1kaXZpc2lvbjsKK+WTpiA+IG9oXD9cLXJlYWxseVw/XC1pc1wtdGhhdFwtc29cPzsKK+mUpCA+IGJhbGFuY2VcLXdlaWdodFwtb25cLXNjYWxlOwor5LueID4gYW5jaWVudFwtdW5pdFwtb2ZcLW1lYXN1cmU7Civoiq0gPiBwbGFudGFpblwtb3JcLWJhbmFuYVwtcGFsbTsKK+ejiiA+IHBpbGVcLW9mXC1yb2Nrc1wtb3JcLXN0b25lczsKK+WRuCA+IGV4cHJlc3Npb25cLW9mXC1yZXByaW1hbmQ7Civmi7cgPiB0b3J0dXJlXC1hbmRcLWludGVycm9nYXRlOwor5oq/ID4gcHVja2VyXC11cFwtbGlwc1wtaW5cLXNtaWxlOwor5Y2JID4gZ2VuZXJhbFwtdGVybVwtZm9yXC1wbGFudHM7Civpq7sgPiBoYWlyXC1yb2xsZWRcLXVwXC1pblwtYVwtYnVuOwor6KOGID4gY3JvdGNoXC1vclwtc2VhdFwtb2ZcLXBhbnRzOwor6JiRID4gdHlwZVwtb2ZcLWVkaWJsZVwtbXVzaHJvb207Civlkr8gPiBkZXNjcmlwdGl2ZVwtb2ZcLWNyZWFraW5nOwor56++ID4gYmFtYm9vXC1zcGxpbnRzXC1vclwtc2xhdHM7Civmt4cgPiByaXZlclwtaW5cLWhlbmFuXC1wcm92aW5jZTsKK+iTkSA+IHJhaW5cLWNvYXRcLW1hZGVcLW9mXC1zdHJhdzsKK+aqrCA+IHR5cGVcLW9mXC1sb2N1c3RcLW9yYWNhY2lhOwor5reZID4gZ3VyZ2xpbmdcLXNvdW5kXC1vZlwtd2F0ZXI7CivmrpMgPiBkcmVzc1wtY29ycHNlXC1mb3JcLWJ1cmlhbDsKK+eQpSA+IGpld2VsXC1pblwtc2hhcGVcLW9mXC10aWdlcjsKK+a9niA+IHJpdmVyXC1pblwtbm9ydGhlcm5cLWNoaW5hOwor6YaNID4gZXNzZW50aWFsXC1vaWxcLW9mXC1idXR0ZXI7Civlpq8gPiB3aXZlc1wtb2ZcLW9uZScnc1wtYnJvdGhlcnM7CivluI8gPiBjdXJ0YWluXC10aGF0XC1mb3Jtc1wtd2FsbDsKK+eTkiA+IGNlcmVtb25pYWxcLWxpYmF0aW9uXC1jdXA7CivmtLkgPiByaXZlclwtaW5cLWhlbmFuXC1wcm92aW5jZTsKK+eRlyA+IGxhcmdlXC1yaW5nXC1vZlwtZmluZVwtamFkZTsKK+a2niA+IHJpdmVyXC1pblwtaGViZWlcLXByb3ZpbmNlOwor54i7ID4gZGlhZ3JhbXNcLWZvclwtZGl2aW5hdGlvbjsKK+mUnyA+IGFuY2llbnRcLXRyZWFzdXJlZFwtc3dvcmQ7CivoipcgPiBmcmFncmFudFwtc21lbGxcLW9mXC1ncmFpbjsKK+alpiA+IGFcLWxhc3RcLWZvclwtbWFraW5nXC1zaG9lczsKK+iIgSA+IGNhcnJ5XC1vblwtb25lJydzXC1zaG91bGRlcjsKK+a7oCA+IHJpdmVyXC1pblwtaHViZWlcLXByb3ZpbmNlOwor6byPID4gY292ZXJcLW9mXC10cmlwb2RcLWNhbGRyb247Civpu7AgPiB5b3VuZ1wtZ2lybCcnc1wtaGFpclwtc3R5bGU7CivprIIgPiB0aGVcLWhhaXJcLW9uXC10aGVcLXRlbXBsZXM7Civpp64gPiBhXC1raW5kXC1vZlwtZmllcmNlXC1hbmltYWw7CivpjJggPiBiYWxhbmNlXC13ZWlnaHRcLW9uXC1zY2FsZTsKK+mMlSA+IGFuY2llbnRcLXRyZWFzdXJlZFwtc3dvcmQ7CivphL4gPiBwbGFjZVwtaW5cLWh1YmVpXC1wcm92aW5jZTsKK+mErCA+IHBsYWNlXC1pblwtaGVuYW5cLXByb3ZpbmNlOwor6YSkID4gcGxhY2VcLWluXC1oZW5hblwtcHJvdmluY2U7CivphJggPiBzdGF0ZVwtaW5cLWhlbmFuXC1wcm92aW5jZTsKK+mEjyA+IHBsYWNlXC1pblwtaGVuYW5cLXByb3ZpbmNlOwor6YSAID4gc3RhdGVcLWluXC1oZW5hblwtcHJvdmluY2U7Civpg7AgPiBiaXJ0aHBsYWNlXC1vZlwtY29uZnVjaXVzOwor6YKnID4gdG93blwtaW5cLXNoYW54aVwtcHJvdmluY2U7CivpgpggPiBzdGF0ZVwtaW5cLWhlbmFuXC1wcm92aW5jZTsKK+iloCA+IGNyb3RjaFwtb3JcLXNlYXRcLW9mXC1wYW50czsKK+iauyA+IHNtYWxsXC1zcGVjaWVzXC1vZlwtY2ljYWRhOwor6JaMID4gZnJhZ3JhbnRcLXNtZWxsXC1vZlwtZ3JhaW47CivokrEgPiBnYW1ibGluZ1wtZ2FtZVwtd2l0aFwtZGljZTsKK+iRpyA+IGhlbGVvY2hhcmlzXC1wbGFudGFnaW5lYTsKK+iIsiA+IHNtYWxsXC1ib2F0XC13aXRoXC13aW5kb3dzOwor576rID4gdGhlXC1za2VsZXRvblwtb2ZcLWFcLXNoZWVwOwor5729ID4gYVwta2luZFwtb2ZcLXdvb2xlblwtZmFicmljOwor57K6ID4gcG9saXNoZWRcLXJpY2VcLW9yXC1taWxsZXQ7Civnr6cgPiBjcmVlbFwtZm9yXC10cmFwcGluZ1wtZmlzaDsKK+evmyA+IGN1dGljbGVcLW9mXC1iYW1ib29cLXBsYW50Owor56WUID4gd29yc2hpcFwtb25lJydzXC1hbmNlc3RvcnM7CivnnZYgPiB0b1wtc3RhcmVcLXN0cmFpZ2h0XC1haGVhZDsKK+ecoiA+IGV5ZXNcLXdpdGhvdXRcLWJyaWdodG5lc3M7Civnlb4gPiBmaWVsZHNcLWRpdmlkZWRcLWJ5XC1kaWtlczsKK+eTmiA+IGNlcmVtb25pYWxcLWxpYmF0aW9uXC1jdXA7CivnkrIgPiBwZW5kYW50XC1naXJkbGVcLW9ybmFtZW50Owor55G/ID4gYVwtYmxhY2tcLXN0b25lXC1saWtlXC1qYWRlOwor55GvID4ga2luZFwtb2ZcLXdoaXRlXC1jb3JuZWxpYW47CivnkaIgPiBnZW1cLW9ybmFtZW50c1wtZm9yXC1iZWx0czsKK+ePtiA+IHdoaXRlXC1qYWRlXC13b3JuXC1vblwtYmVsdDsKK+eOlSA+IGluZmVyaW9yXC12YXJpZXR5XC1vZlwtZ2VtOwor54yIID4gZG9nXC13aXRoXC1zaG9ydFwtc2hpbmJvbmU7CivngYQgPiByaXZlclwtaW5cLWh1YmVpXC1wcm92aW5jZTsKK+eAvCA+IHJpdmVyXC1pblwtaGVuYW5cLXByb3ZpbmNlOwor54CNID4gcml2ZXJcLWluXC1oZW5hblwtcHJvdmluY2U7Civmv5wgPiByaXZlclwtaW5cLWh1YmVpXC1wcm92aW5jZTsKK+a+tCA+IHJpdmVyXC1pblwtaHViZWlcLXByb3ZpbmNlOwor5r6JID4gdG9cLXdhc2hcLW5hbWVcLW9mXC1hXC1wbGFjZTsKK+a9liA+IG5hbWVcLW9mXC1hXC1jZXJ0YWluXC1yaXZlcjsKK+a8tyA+IHJpdmVyXC1pblwtaGViZWlcLXByb3ZpbmNlOwor5ryKID4gcml2ZXJcLWluXC1odWJlaVwtcHJvdmluY2U7Civmuq4gPiByaXZlclwtaW5cLWhlbmFuXC1wcm92aW5jZTsKK+a6oCA+IHJpdmVyXC1pblwtaHViZWlcLXByb3ZpbmNlOwor5re2ID4gcml2ZXJcLWluXC1oZWJlaVwtcHJvdmluY2U7CivmtpYgPiByaXZlclwtaW5cLWhlYmVpXC1wcm92aW5jZTsKK+a1rSA+IHJpdmVyXC1pblwtaGViZWlcLXByb3ZpbmNlOwor5rS6ID4gcml2ZXJcLWluXC1oZWJlaVwtcHJvdmluY2U7CivmtKggPiByaXZlclwtaW5cLWhlYmVpXC1wcm92aW5jZTsKK+auriA+IGRyZXNzXC1jb3Jwc2VcLWZvclwtYnVyaWFsOwor5q6ZID4gdG9cLWRpZVwtYnlcLXRha2luZ1wtcG9pc29uOwor5q2BID4gdW5zYXRpc2ZpZWRcLVwob2ZcLWVhdGluZ1wpOwor5qyoID4gdG9cLWJsb3dcLW9yXC1icmVhdGhlXC11cG9uOwor5qyPID4gdHJlZVwtdGhlXC1ob3JzZVwtY2hlc3RudXQ7CivmqocgPiB3b29kZW5cLXJhbW1lclwtb3JcLXBlc3RsZTsKK+aplCA+IGFcLXdvb2RlblwtY2hvcHBpbmdcLWJsb2NrOwor5qWlID4gYVwtbGFzdFwtZm9yXC1tYWtpbmdcLXNob2VzOwor5pq8ID4gdGFrZVwtZmxlZXRpbmdcLWdsYW5jZVwtYXQ7CivmgLggPiBjbnNcLTJcLTJhNDBcLWlzXC1kaWZmZXJlbnQ7CivluYMgPiBjdXJ0YWluXC10aGF0XC1mb3Jtc1wtd2FsbDsKK+WihCA+IHRoZVwtc3RlcHNcLW9mXC1hXC1zdGFpcndheTsKK+WVqyA+IGludGVyamVjdGlvblwtb2ZcLXdhcm5pbmc7CivlkJogPiB1c2VkXC10b1wtcmVwcmVzZW50XC1zb3VuZDsKK+WMgSA+IGphcGFuZXNlXC11bml0XC1vZlwtd2VpZ2h0Owor5Lu+ID4gdG9cLWhhbmdcLW9yXC1ib3dcLXRoZVwtaGVhZDsKK+S7rSA+IGFuY2llbnRcLXVuaXRcLW9mXC1tZWFzdXJlOwor5LadID4gZ3Jvd2luZ1wtaXJyZWd1bGFyXC10ZWV0aDsKK+S1iCA+IHVuc21lbHRlZFwtaGVtcFwtYW5kXC1zaWxrOwor5LWAID4gY29hcnNlXC1jcnVtYnNcLW9mXC1iYXJsZXk7CivktJEgPiBhXC1sZWdlbmRhcnlcLXdlaXJlZFwtYmlyZDsKK+S0hyA+IGFcLXNlY29uZFwtbmFtZVwtZm9yXC1jcmFuZTsKK+S0gSA+IGFcLWtpbmRcLW9mXC1yYXRcLWxpa2VcLWJpcmQ7Civks7IgPiBhXC1zd2FybVwtb2ZcLWZseWluZ1wtYmlyZHM7CivksrQgPiBhXC1raW5kXC1vZlwtdmVub21vdXNcLWJpcmQ7Civksb4gPiBhXC1jYXJwXC1saWtlXC1zYXZvcnlcLWZpc2g7CivksKsgPiBuaW1ibGVcLWFuZFwtYWN0aXZlXC1naG9zdDsKK+SthyA+IHRvXC1iZVwtY2hvY2tlZFwtd2l0aFwtZm9vZDsKK+SthiA+IHNtYWxsXC1jaGlsZHJlblwtZWF0XC1sZXNzOwor5KyyID4gdG9cLWVhdFwtdG9cLXRoZVwtaGFsZlwtZnVsbDsKK+SsqiA+IGFcLWtpbmRcLW9mXC1jb29rZWRcLW5vb2RsZTsKK+SsmyA+IHRoZVwtcm9hcmluZ1wtb2ZcLXRoZVwtd2luZDsKK+SolyA+IGV4Y2Vzc2l2ZVwtcmFpblwtYW5kXC1zbm93Owor5KiFID4gc21hbGxcLWJpcmRzXC1cLVwtXC10aGVcLXdyZW47CivkpZYgPiBzaWx2ZXJcLW9mXC1nb2xkXC1maWxhZ3JlZTsKK+SljyA+IHVuZml0dGVkXC1mb3JcLWVhY2hcLW90aGVyOwor5KSlID4gYWdyaWN1bHR1cmFsXC1pbXBsZW1lbnRzOwor5KKcID4gdGhlXC1tYXJyaWFnZVwtb2ZcLWFcLXdvbWFuOwor5KG9ID4gdGhlXC1zaGFmdHNcLW9mXC1hXC12ZWhpY2xlOwor5KG6ID4gdGhlXC1lbmRcLW9mXC1hblwtYXhsZVwtdHJlZTsKK+ShoyA+IGFcLXBpZWNlXC1vZlwtY3VydmVkXC1ib2FyZDsKK+SgoyA+IG5ldFwtdG9cLXRyYXBcLXRoZVwtYW5pbWFsczsKK+SdiCA+IGFcLWJpZ1wtYW5kXC1zdHJlbnVvdXNcLXBpZzsKK+SakCA+IGdldHRpbmdcLXJlZFwtaW5cLXRoZVwtZXllczsKK+SaiiA+IHRvXC1sb29rXC1mcm9tXC1hXC1kaXN0YW5jZTsKK+SZkCA+IGZ1cnNcLWFuZFwtbGluZW5cLWdhcm1lbnRzOwor5JiGID4gYVwtc2Vjb25kXC1mb3JtXC1lYXJ0aHdvcm07Civkl6AgPiB0aGVcLWxhcnZhXC1vZlwtbW9zcXVpdG9lczsKK+SXlCA+IGFcLWhvdXNlXC1saXphcmRcLW9yXC1nZWNrbzsKK+SWsSA+IGxhcmdlXC1zaHJpbXBcLWluXC10aGVcLXNlYTsKK+SUviA+IGFcLWtpbmRcLW9mXC1mcmFncmFudFwtaGVyYjsKK+STsSA+IGFcLWtpbmRcLW9mXC1oZXJiXC1tZWRpY2luZTsKK+SSliA+IGFcLWtpbmRcLW9mXC1oZXJiXC1tZWRpY2luZTsKK+SSlSA+IGFcLWtpbmRcLW9mXC1oZXJiXC1tZWRpY2luZTsKK+SQpCA+IGRyaWVkXC1hbmRcLXNlYXNvbmVkXC1tZWF0Owor5JCQID4gY3VydmVkXC1wYXJ0XC1vZlwtdGhlXC1rbmVlOwor5I+ZID4gYnJpbmVcLWZyb21cLXBpY2tsZWRcLW1lYXQ7Civkj5UgPiB0b1wtY29va1wtZm9vZFwtdGhvcm91Z2hseTsKK+SOpyA+IGFncmljdWx0dXJhbFwtaW1wbGVtZW50czsKK+SNuSA+IG9kb3JcLW9mXC1hXC1zaGVlcFwtb3JcLWdvYXQ7CivkjZkgPiBuZXRzXC1mb3JcLWNhdGNoaW5nXC1iaXJkczsKK+SNmCA+IGFcLWdlbmVyYWxcLXRlcm1cLWZvclwtbmV0czsKK+SNkyA+IG5ldFwtZm9yXC1jYXRjaGluZ1wtcmFiYml0Owor5IurID4gdG9cLXdpbmRcLXJvdW5kXC10aGVcLXJvcGVzOwor5IuoID4gdG9cLXNldFwtaW5cLW9yZGVyXC10aGVcLW9sZDsKK+SKtCA+IGZvb2RcLW1hZGVcLW9mXC1yaWNlXC1mbG91cjsKK+SKqiA+IGNvYXJzZVwtcmljZVwtXC1cLVwtdW5odWxsZWQ7CivkiZwgPiB5b3VuZ1wtYW5kXC10ZW5kZXJcLWJhbWJvbzsKK+SJliA+IGZyYW1ld29ya1wtb2ZcLWFcLWNhcnJpYWdlOwor5IeXID4gYmFtYm9vXC13aXRoXC1sb25nXC1qb2ludHM7Civkh5EgPiBhXC1zdGFuZGluZ1wtc2hvcnRcLXBlcnNvbjsKK+SGiiA+IHVuaHVza2VkXC1nbHV0aW5vdXNcLXJpY2U7CivkhokgPiB0aGVcLXN3aW5nXC1vZlwtcmljZVwtcGxhbnQ7Civkg4kgPiBhXC1zdG9uZVwtcmVzZW1ibGluZ1wtamFkZTsKK+SBjCA+IHRvXC1zZWVcLWZvclwtYVwtc2hvcnRcLXRpbWU7CivjvoAgPiB0b1wtYmVcLXdlYWtlZFwtYnlcLWRpc2Vhc2U7CivjvbogPiB0b1wtYmVcLXdlYWtlZFwtYnlcLWRpc2Vhc2U7CivjvbggPiBkaXNlYXNlc1wtb2ZcLXRoZVwtYWJkb21lbjsKK+O9miA+IGFncmljdWx0dXJhbFwtaW1wbGVtZW50czsKK+O8pyA+IHRpbGVzXC1pblwtY3lsaW5kZXJcLXNoYXBlOwor47myID4gYVwtZnJpZ2h0ZW5lZFwtcGlnXC1vclwtZG9nOwor47muID4gYVwta2luZFwtb2ZcLWFuaW1hbFwtXC10YXBpcjsKK+O5nSA+IGFcLWxlZ2VuZGFyeVwtd2lsZFwtYW5pbWFsOwor47mRID4gYVwtZm91clwteWVhcnNcLW9sZFwtY2F0dGxlOwor47mKID4gYVwtY2F0dGxlXC1vZlwtd2hpdGVcLWNvbG9yOwor47mGID4gdGhlXC1jb3VsdGVyXC1vZlwtYVwtcGxvdWdoOwor47iLID4gbWVhdHNcLXVzZWRcLWluXC1zYWNyaWZpY2U7Civjt64gPiBzY29yY2hlZFwtb3JcLWJ1cm5lZFwtd29vZDsKK+O3qyA+IGZpcmVcLWNhdXNpbmdcLWJ5XC1kcnluZXNzOwor47a1ID4gdG9cLWNvb2tcLWZvb2RcLXRob3JvdWdobHk7CivjtpIgPiB0aGVcLWN1cnJlbnRcLW9mXC1hXC1zdHJlYW07CivjtLIgPiBhXC1yaXZlclwtaW5cLWFuY2llbnRcLXRpbWU7CivjtJEgPiB0b1wtdHJhY2VcLXVwXC10b1wtYVwtc291cmNlOwor47SPID4gdGhlXC1wb25kXC13YXRlclwtaXNcLXN0aWxsOwor47K/ID4gZXh0ZW5zaXZlXC1ib2R5XC1vZlwtd2F0ZXI7CivjsoQgPiB1bmJ1cm50XC1icmlja3NcLW9yXC10aWxlczsKK+OxrCA+IGNhbm5vdFwtcmVjb2duaXplXC1wZW9wbGU7CivjsZUgPiB0aGVcLW1hcnJpYWdlXC1vZlwtYVwtd29tYW47Civjr5kgPiB0aGVcLWJ1Y2t0aG9yblwtb3JcLWp1anViZTsKK+OtviA+IHRvXC1jdXRcLXRoZVwtdGltYmVyXC1hcGFydDsKK+OtgyA+IHRoZVwtbGFyZ2VcLXJvcGVcLW9mXC1hXC1uZXQ7CivjrYIgPiBoZWlnaHRcLW9mXC10aGVcLWVuZFwtcG9pbnQ7CivjrLsgPiBpblwtYmV0d2Vlblwtb2ZcLXRoZVwtZmxlc2g7Civjp68gPiBhXC1idWNrZXRcLW1hZGVcLW9mXC13aWxsb3c7Civjp6UgPiB0b1wtbmlwXC13aXRoXC10aGVcLWZpbmdlcnM7Civjpr0gPiB3aXRoXC1lbGVnYW50XC1hcHBlYXJhbmNlOwor46a6ID4gYVwtbGFuY2VcLXdpdGhcLXR3b1wtcG9pbnRzOwor46a4ID4gYVwtbGFuY2VcLXdpdGhcLXR3b1wtcG9pbnRzOwor76alID4gZHJlc3NcLWNvcnBzZVwtZm9yXC1idXJpYWw7CivjpocgPiBhXC1wZWFjZWZ1bFwtb3JcLWVhc3lcLW1vb2Q7CivvpYcgPiBwaWxlXC1vZlwtcm9ja3NcLW9yXC1zdG9uZXM7CivjpYUgPiB1c2VkXC1pblwtYVwtcGVyc29uJydzXC1uYW1lOwor46SMID4gdG9cLWhhdmVcLW9uZScnc1wtaGVhcnRcLW93bjsKK+OjuyA+IHRvXC1yZW1lZHlcLWJ5XC1wdW5pc2htZW50Owor46OqID4gdG9cLXdhbGtcLXdpdGhcLXNsb3dcLXN0ZXBzOwor46OGID4gdG9cLWxvb3NlXC10aGVcLWJvd1wtc3RyaW5nOwor46K+ID4gdGhlXC1jdXJ2ZWRcLWVuZFwtb2ZcLWFcLWJvdzsKK+OitSA+IHBvd2VyZnVsXC1hbmRcLXN0cm9uZ1wtYm93Owor46G5ID4gdG9cLXJlbHlcLXVwb25cLWVhY2hcLW90aGVyOwor46GSID4gYVwtY2FsaWNvXC1zYWNrXC1mb3JcLWdyYWluOwor46GPID4gdG9cLWN1dFwtYVwtc3RyaXBcLW9mXC1jbG90aDsKK+OevCA+IHRvXC1yZXNwZWN0ZnVsbHlcLXJlY2VpdmU7CivjmqwgPiBhXC1sYWR5XC1zdGFydFwtdG9cLWRvbGxcLXVwOwor45qWID4gdG9cLWNvbWVcLW91dFwtdG9cLXRoZVwtb3BlbjsKK+OZiiA+IGFuXC1hcmVhXC1vZlwtbGV2ZWxcLWdyb3VuZDsKK+OVuCA+IHNvdW5kXC1vZlwtcm9sbGluZ1wtYVwtYm9hdDsKK+OVpyA+IHVzZWRcLXRvXC1yZXByZXNlbnRcLXNvdW5kOwor45SkID4gdG9cLWV4ZXJ0XC1vbmUnJ3NcLXN0cmVuZ3RoOwor45OnID4gYWdyaWN1bHR1cmFsXC1pbXBsZW1lbnRzOwor45KkID4gdG9cLWhhdmVcLW9uZScnc1wtaGVhcnRcLXdvbjsKK+OSmSA+IHRvXC1oYW5kXC1vclwtYm93XC10aGVcLWhlYWQ7CivkuYggPiBpbnRlcnJvZ2F0aXZlXC1wYXJ0aWNsZTsKK+iiqyA+IHBhc3NpdmVcLWluZGljYXRvclwtJydieScnOwor55SzID4gdG9cLXN0YXRlXC10b1wtYVwtc3VwZXJpb3I7CivlsqEgPiByaWRnZVwtb3JcLWNyZXN0XC1vZlwtaGlsbDsKK+eQtCA+IGNoaW5lc2VcLWx1dGVcLW9yXC1ndWl0YXI7CivlrIwgPiBzZWR1Y3RpdmVcLWFuZFwtbG92ZWFibGU7CivnvZcgPiBuZXRcLWZvclwtY2F0Y2hpbmdcLWJpcmRzOwor5pG4ID4gZ2VudGx5XC10b3VjaFwtd2l0aFwtaGFuZDsKK+S7sCA+IHJhaXNlXC10aGVcLWhlYWRcLXRvXC1sb29rOwor6IeNID4gYWJkb21pbmFsXC1hcmVhXC1vZlwtY3JhYjsKK+mDkSA+IHN0YXRlXC1pblwtdG9kYXknJ3NcLWhlbmFuOwor576FID4gbmV0XC1mb3JcLWNhdGNoaW5nXC1iaXJkczsKK+i0ryA+IGFcLXN0cmluZ1wtb2ZcLTEwMDBcLWNvaW5zOwor5aiHID4gc2VkdWN0aXZlXC1hbmRcLWxvdmVhYmxlOwor56utID4gcHV0XC1mb3J0aFwtZ3JlYXRcLWVmZm9ydDsKK+enkiA+IGJlYXJkXC1vZlwtZ3JhaW5cLW9yXC1jb3JuOwor5aWaID4gd2hlcmVcP1wtd2hhdFw/XC1ob3dcP1wtd2h5XD87CivlhoggPiByaWRnZVwtb3JcLWNyZXN0XC1vZlwtaGlsbDsKK+ebjyA+IHNtYWxsXC1jdXBcLW9yXC1jb250YWluZXI7CivokJ0gPiB0eXBlXC1vZlwtY3JlZXBpbmdcLXBsYW50Owor5qKnID4gc3RlcmN1bGlhXC1wbGF0YW5pZm9saWE7CivlkqYgPiBleHByZXNzaW9uXC1vZlwtc3VycHJpc2U7CivnrZAgPiBiYW1ib29cLWJhc2tldFwtb3JcLWNoZXN0Owor6LCNID4gYW5cLWludGVsbGlnZW5jZVwtcmVwb3J0Owor56+xID4gYmFtYm9vXC1vclwtd29vZGVuXC1mZW5jZTsKK+eQtiA+IGd1aXRhclwtbGlrZVwtaW5zdHJ1bWVudDsKK+eQtSA+IGd1aXRhclwtbGlrZVwtaW5zdHJ1bWVudDsKK+a9uiA+IHNvdW5kXC1vZlwtZmxvd2luZ1wtd2F0ZXI7CivlnbMgPiBhXC1ob2xsb3dcLWluXC10aGVcLWdyb3VuZDsKK+iEkCA+IGFiZG9taW5hbFwtYXJlYVwtb2ZcLWNyYWI7Civln4IgPiBkaXRjaGVzXC1mb3JcLWlycmlnYXRpb247CivlgIwgPiBhc3Npc3RhbnRcLWluXC13aW5lXC1zaG9wOwor6ZyBID4gdG9cLWNsZWFyXC11cFwtYWZ0ZXJcLXJhaW47Civpgq8gPiBjaXR5XC1pblwtaGViZWlcLXByb3ZpbmNlOwor57KRID4gdHNhbWJhXC1cKGZvb2RcLWluXC10aWJldFwpOwor6JuAID4gaW5zZWN0c1wtdGhhdFwtZWF0XC1ib29rczsKK+WrpiA+IG5hbWVcLW9mXC1hXC1tb29uXC1nb2RkZXNzOwor6LWKID4gYnV5XC1hbmRcLXNlbGxcLW9uXC1jcmVkaXQ7CivlvJEgPiB0b1wta2lsbFwtb25lJydzXC1zdXBlcmlvcjsKK+aRgSA+IHRvXC1wcmVzc1wtd2l0aFwtdGhlXC1oYW5kOwor55W5ID4gYVwtZmllbGRcLW9mXC0yMFwtb3JcLTMwXC1tdTsKK+inkCA+IGhhdmVcLWltcGVyaWFsXC1hdWRpZW5jZTsKK+iupiA+IGV4cG9zZVwtb3RoZXInJ3NcLXNlY3JldHM7Civml4QgPiBhXC1raW5kXC1vZlwtYW5jaWVudFwtZmxhZzsKK+i2tSA+IG5vaXNlXC1vZlwtdHJhbXBpbmdcLWZlZXQ7CivphbkgPiB0b1wtcG91clwtb3V0XC1hXC1saWJhdGlvbjsKK+WtsyA+IGJyZWVkXC1pblwtbGFyZ2VcLW51bWJlcnM7CivloYQgPiBlbGV2YXRlZFwtYmFua1wtaW5cLWZpZWxkOwor6J6IID4gZGllbXllbGlsdXNcLXB5cm9nYXN0ZXI7CivnqqwgPiBhXC1zbWFsbFwtZG9vclwtb3JcLXdpbmRvdzsKK+essSA+IGFcLWJhc2tldFwtdHJhcFwtZm9yXC1maXNoOwor54m/ID4gc2hlZFwtb3JcLXBlblwtZm9yXC1jYXR0bGU7Civom5ggPiBhXC13ZWV2aWxcLWZvdW5kXC1pblwtcmljZTsKK+eVjiA+IGFcLWRyYWluXC1iZXR3ZWVuXC1maWVsZHM7Civpva8gPiB0ZWV0aFwtZ3Jvd25cLWluXC1vbGRcLWFnZTsKK+m5oyA+IGZhYnVsb3VzXC1teXRoaWNhbFwtYmlyZDsKK+m2vCA+IGZhYnVsb3VzXC1teXRoaWNhbFwtYmlyZDsKK+mwhiA+IHNjb21iZXJvbW9ydXNcLXNpbmVuc2lzOwor6a+ZID4gc2NvbWJlcm9tb3J1c1wtc2luZW5zaXM7CivprpMgPiBtaW5jZWRcLWFuZFwtc2FsdGVkXC1maXNoOwor6amMID4gbmFtZVwtb2ZcLWFcLWZhbW91c1wtaG9yc2U7Civpn7kgPiBtdXNpY1wtb2ZcLWJlbGxcLWFuZFwtZHJ1bTsKK+mcvSA+IHRvXC1jbGVhclwtdXBcLWFmdGVyXC1yYWluOwor6ZuYID4gZHllXC1tYWRlXC1mcm9tXC1yZWRcLXNvaWw7CivpmIcgPiBhXC1idWRkaGlzdFwtaGlnaFwtcHJpZXN0Owor6ZGQID4gYm9sdFwtb2ZcLWFcLWNoaW5lc2VcLWxvY2s7CivpjIYgPiB0aGVcLWNvbG9yXC1vZlwtYVwtbWluZXJhbDsKK+mErSA+IHN0YXRlXC1pblwtdG9kYXknJ3NcLWhlbmFuOwor6YSQID4gdG93blwtaW5cLWhlbmFuXC1wcm92aW5jZTsKK+mBsCA+IGdydW50aW5nXC1zb3VuZFwtb2ZcLXBpZ3M7CivovqUgPiB2YXJpZXR5XC1vZlwtbWFyc2hcLWdyYXNzOwor6LOSID4gYnV5XC1hbmRcLXNlbGxcLW9uXC1jcmVkaXQ7CivosqsgPiBhXC1zdHJpbmdcLW9mXC0xMDAwXC1jb2luczsKK+iwgiA+IGNvbnN1bHRcLWNhcmVmdWxseVwtd2l0aDsKK+irnCA+IGFuXC1pbnRlbGxpZ2VuY2VcLXJlcG9ydDsKK+irlyA+IGNvbnN1bHRcLWNhcmVmdWxseVwtd2l0aDsKK+ipqiA+IGRpZmZpY3VsdHlcLWluXC1zcGVha2luZzsKK+iokCA+IGV4cG9zZVwtb3RoZXInJ3NcLXNlY3JldHM7Civop78gPiBhXC1ib2RraW5cLW1hZGVcLW9mXC1pdm9yeTsKK+imsiA+IGhhdmVcLWltcGVyaWFsXC1hdWRpZW5jZTsKK+imgCA+IHZhcmlhbnRcLW9mXC1yYWRpY2FsXC0xNDY7CivopJ8gPiBpbm5lclwtc2hpcnRcLW9yXC1zaW5nbGV0Owor6KGtID4gdGhlXC1sYXBlbFwtb2ZcLWFcLWdhcm1lbnQ7CivooaYgPiBzbW9vdGhcLW91dFwtdGhlXC1jbG90aGVzOwor6Ji/ID4gdHlwZVwtb2ZcLWNyZWVwaW5nXC1wbGFudDsKK+iVlSA+IGNhcnlvcHRlcmlzXC1kaXZhcmljYXRhOwor6JSvID4gYVwtdmFyaWV0eVwtb2ZcLWFydGVtaXNpYTsKK+iQtCA+IG1lZGljaW5hbFwtcG9pc29uXC1wbGFudDsKK+iPtiA+IHNwZWNpZXNcLW9mXC13YXRlclwtcGxhbnQ7CivojrggPiBjYXJ5b3B0ZXJpc1wtZGl2YXJpY2F0YTsKK+iOmSA+IHNwZWNpZXNcLW9mXC13YXRlclwtcGxhbnQ7CivohKQgPiByYXdcLW1lYXRcLWZvclwtc2FjcmlmaWNlOwor6ICsID4gZHJpbGxcLWZvclwtc293aW5nXC1ncmFpbjsKK+iApyA+IGRyaWxsXC1mb3JcLXNvd2luZ1wtZ3JhaW47CivogIIgPiB2YXJpYW50XC1vZlwtcmFkaWNhbFwtMTI1Owor57mmID4gc3RyaW5nXC1vZlwtY29wcGVyXC1jb2luczsKK+e5iCA+IHN0cmluZ1wtb2ZcLWNvcHBlclwtY29pbnM7Civnt4UgPiBzaWxrXC1vZlwtcHVycGxpc2hcLWNvbG9yOwor57GsID4gYmFtYm9vXC1vclwtd29vZGVuXC1mZW5jZTsKK+evoiA+IHRoZVwtbmFtZVwtb2ZcLWJhbWJvb1wtaGF0Owor5626ID4gYmFtYm9vXC1iYXNrZXRcLW9yXC1jaGVzdDsKK+ebniA+IHNtYWxsXC1jdXBcLW9yXC1jb250YWluZXI7CivnmYogPiBhXC1kaXNlYXNlXC1vZlwtdGhlXC1oZWFydDsKK+eRsSA+IGFcLWdlbVwtdXNlZFwtYXNcLWVhclwtcGx1ZzsKK+eQoCA+IGFcLWdlbVwtdXNlZFwtYXNcLWVhclwtcGx1ZzsKK+ePoyA+IG5hbWVcLW9mXC1hXC1raW5kXC1vZlwtamFkZTsKK+eOvCA+IGJlYXV0aWZ1bFwtY29sb3JcLW9mXC1nZW07CivnibcgPiBjb3dcLW9yXC1veFwtb2ZcLW9uZVwtY29sb3I7CivnhIQgPiByaXNpbmdcLWZsYW1lc1wtb3JcLWZ1bWVzOwor54OWID4gY2FsYW1pdGllc1wtZnJvbVwtaGVhdmVuOwor5q6iID4gYmVcLWluXC1ncmVhdFwtZGlmZmljdWx0eTsKK+ansSA+IGZpcmV3b29kXC1mb3JcLXNhY3JpZmljZTsKK+acjyA+IGxpZ2h0XC1vZlwtY3Jlc2NlbnRcLW1vb247Civml5AgPiBhblwtZW1icm9pZGVyZWRcLXBlbm5hbnQ7CivmlJkgPiB0b1wtZ2l2ZVwtYVwtaGVscGluZ1wtaGFuZDsKK+aRsCA+IHRvXC1zZWl6ZVwtd2l0aFwtdGhlXC1oYW5kOwor5pGAID4gdG9cLWNvdmVyXC13aXRoXC10aGVcLWhhbmQ7CivmkL4gPiB0b1wtY3J1c2hcLXdpdGhcLXRoZVwtaGFuZDsKK+aAuSA+IGFcLXBvbGl0ZVwtdmVyc2lvblwtb2ZcLWhlOwor5bySID4gdG9cLWtpbGxcLW9uZScnc1wtc3VwZXJpb3I7CivluoggPiB1c2VkXC1pblwtcGVyc29uJydzXC1uYW1lczsKK+W1tiA+IGxvd1wtcGFydFwtb2ZcLWFcLW1vdW50YWluOwor5a2SID4gbGFydmFlXC1vZlwtdGhlXC1tb3NxdWl0bzsKK+WjliA+IG9wZW5cLXNwYWNlXC1hbG9uZ1wtd2F0ZXI7CivlmYAgPiBzcGlydFwtb3V0XC1vZlwtdGhlXC1tb3V0aDsKK+WPnSA+IHRvXC1yZXNwZWN0ZnVsbHlcLWluZm9ybTsKK+S8riA+IHRvXC1tYWtlXC1hXC1ncmVhdFwtZWZmb3J0Owor5LalID4gdW5ldmVubHlcLWZpdHRpbmdcLXRlZXRoOwor5LakID4gc291bmRcLW9mXC1jaGV3aW5nXC1ib25lczsKK+S2giA+IGFcLXNxdWlycmVsXC1saWtlXC1hbmltYWw7Civks64gPiB0b1wtbG9va1wtYXRcLWluXC1zdXJwcmlzZTsKK+SymiA+IGFcLXNlY29uZFwtbmFtZVwtZm9yXC1zaGFkOwor5LC1ID4gbG9va3NcLWxpa2VcLWNvbW1vblwtY2FycDsKK+SwsCA+IGRyZWFyeVwtY3JpZXNcLW9mXC1naG9zdHM7CivksK0gPiBkcmVhcnlcLWNyaWVzXC1vZlwtZ2hvc3RzOwor5K66ID4gbHV4dXJpYW50XC1vZlwtdGhlXC1ncmFzczsKK+SurSA+IHRvXC1sb29rXC1hdFwtaW5cLXN1cnByaXNlOwor5K6qID4gdG9cLWdlbGRcLWFcLWhvcnNlXC1vclwtYXNzOwor5Km8ID4gc3RpdGNoZXNcLW9uXC1hXC1jb3ZlcmxldDsKK+SpjSA+IHRvXC1sb29rXC1wYWxlXC1vclwtcGFsbGlkOwor5Ki1ID4gcmFpbmVkXC1mb3JcLWFcLWxvbmdcLXRpbWU7CivkqKwgPiByYWluZWRcLWZvclwtYVwtbG9uZ1wtdGltZTsKK+SooSA+IHJhaW5lZFwtZm9yXC1hXC1sb25nXC10aW1lOwor5KaIID4gdG9cLXNpZ2hcLWluXC1sYW1lbnRhdGlvbjsKK+SlnyA+IGFcLW1ldGFsXC1tYXJraW5nXC1cLXN0YWtlOwor5KKOID4gaW5kaWNhdGluZ1wtZXhjbGFtYXRpb247CivkobUgPiBkZWNvcmF0aW9uXC1vblwtY2FycmlhZ2U7CivkobAgPiBzdHJvbmdcLWFuZFwtZHVyYWJsZVwtaHViOwor5KGsID4gY292ZXJpbmdcLW9mXC1hXC1jYXJyaWFnZTsKK+ShgSA+IG5vdFwtd2VsbFwtZm9ybWVkXC1maWd1cmU7Civkn70gPiBzY2F0dGVyZWRcLW9yXC1kaXNwZXJzZWQ7CivknpggPiB0b1wtZ29cLXN0cmFpZ2h0XC1mb3J3YXJkOwor5J2iID4gYW5cLWFuaW1hbFwtaW5cLW9sZFwtdGltZXM7CivknaEgPiBhblwtYW5pbWFsXC1pblwtb2xkXC10aW1lczsKK+SdkyA+IGxvbmdcLWJlYXJkXC1vclwtd2hpc2tlcnM7CivknLogPiBodXNraW5nXC1iZWFuc1wtZm9yXC1jYWtlOwor5JyhID4gdG9cLXNtZWxsXC10aGVcLWZyYWdyYW50czsKK+SbmSA+IHRvXC1zbWVsbFwtdGhlXC1mcmFncmFuY2U7Civkmp4gPiB0aGVcLW1pZGRsZVwtb2ZcLXRoZVwtaG9ybjsKK+SZhCA+IGNsb3RoZXNcLXdpdGhcLXRoaWNrXC1oZW07CivkmL0gPiBjbG90aGluZ1wtYW5kXC1vcm5hbWVudHM7Civkl5AgPiBhXC13ZWV2aWxcLWZvdW5kXC1pblwtcmljZTsKK+SVtCA+IGFcLXNlY29uZFwtZm9yXC1tb25rc2hvb2Q7CivklKAgPiB0aGluXC1yb290XC1vZlwtdGhlXC1sb3R1czsKK+SPqSA+IHRvXC1zaHJ1Z1wtdGhlXC1zaG91bGRlcnM7CivkjbEgPiB0aGVcLXdpbGRcLWdvYXRcLW9yXC1zaGVlcDsKK+SLqiA+IGZpbmVcLWFuZFwtZGVsaWNhdGVcLXNpbGs7Civki40gPiBmaW5lXC1hbmRcLWRlbGljYXRlXC1zaWxrOwor5IqPID4gbWl4aW5nXC1yaWNlXC13aXRoXC1icm90aDsKK+SKgyA+IG1peGluZ1wtcmljZVwtd2l0aFwtYnJvdGg7CivkiIQgPiBhXC1raW5kXC1vZlwtc29saWRcLWJhbWJvbzsKK+SHoyA+IGJhbWJvb1wtd2l0aFwtd2hpdGVcLWJhcms7CivkhKAgPiB0b1wtc2FjcmlmaWNlXC10b1wtaGVhdmVuOwor5IOnID4gc291bmRcLW9mXC1mYWxsaW5nXC1yb2NrczsKK+SDlCA+IHNvdW5kXC1vZlwtZmFsbGluZ1wtcm9ja3M7CivkgqIgPiBzb3VuZFwtb2ZcLWZhbGxpbmdcLXJvY2tzOwor5IKgID4gc291bmRcLW9mXC1mYWxsaW5nXC1yb2NrczsKK+SAhCA+IGNvbnRhaW5lclwtZnVsbFwtb2ZcLWZvb2Q7Civjv4sgPiBhXC1raW5kXC1vZlwtc2tpblwtZGlzZWFzZTsKK+O8niA+IGphclwtd2l0aFwtYVwtc21hbGxcLW1vdXRoOwor47qeID4gdG9cLXNpZ25cLWluXC1sYW1lbnRhdGlvbjsKK+O4ryA+IGFcLWZpbmVcLWJyZWVkXC1vZlwtY2F0dGxlOwor47WvID4gc291bmRcLW9mXC13YXRlclwtZmxvd2luZzsKK+OzryA+IGdvZGRlc3NcLW9mXC1hblwtaW5rXC1zbGFiOwor47KxID4gbG9uZ1wtYmVhcmRcLW9yXC13aGlza2VyczsKK+OxhiA+IHRvXC1zbWlsZVwtYXRcLWVhY2hcLW90aGVyOwor47C/ID4gdG9cLXNpZ2hcLWluXC1sYW1lbnRhdGlvbjsKK+OwqCA+IHRvXC10YWtlXC1icmVhdGhcLW9yXC1yZXN0Owor466RID4gc291bmRcLW9mXC1icm9rZW5cLXN0aWNrczsKK+OtryA+IHRyZWVcLXdpdGhcLXNtYWxsXC1sZWF2ZXM7Civjq4ogPiBmbHV0dGVyaW5nXC1vZlwtdGhlXC1mbGFnOwor46qjID4gYVwtcGxhY2VcLWluXC1oYW5cLWR5bmFzdHk7Civjqp8gPiB0b1wtcmVnYXJkXC1hc1wtaW1wb3J0YW50Owor46qeID4gdG9cLWJlXC1oZWxkXC1ieVwtdGhlXC1oYW5kOwor46m6ID4gYVwtY3JhY2tcLW9uXC10aGVcLXV0ZW5zaWw7CivjqZwgPiB0b1wtYmVcLWluXC1wb3NzZXNzaW9uXC1vZjsKK+OpjiA+IHRvXC1wcmVzc1wtd2l0aFwtYVwtZmluZ2VyOwor46e2ID4gdGhlXC1qaW5nbGluZ1wtb2ZcLW1ldGFsczsKK+OnmSA+IHRvXC1naXZlXC1hXC1wbGF5ZnVsXC1ibG93Owor46eDID4gdG9cLXJlY2VpdmVcLXdoYXRcLWlzXC1kdWU7CivjpqMgPiB0b1wtdGFsa1wtaW5cLW9uZScnc1wtc2xlZXA7CivjpoQgPiBoYXJkXC10b1wtc2F5XC1vclwtcHJlZGljdDsKK++kkCA+IHR5cGVcLW9mXC1jcmVlcGluZ1wtcGxhbnQ7CivvpI8gPiBuZXRcLWZvclwtY2F0Y2hpbmdcLWJpcmRzOwor46SKID4gY2hlZXJmdWxcLWFuZFwtZXh1YmVyYW50Owor46OaID4gdG9cLWdvXC1zdHJhaWdodFwtZm9yd2FyZDsKK+OiiSA+IGFcLXJvb21cLXdpdGhcLW9wZW5cLXNwYWNlOwor46CUID4gc2hhcGVzXC1vZlwtdGhlXC1tb3VudGFpbjsKK+OfuyA+IHRoZVwtbW9hdFwtYXJvdW5kXC1hXC1jaXR5Owor45uzID4gYW5cLWFibm9tYWxcLXVuYm9yblwtYmFieTsKK+OatyA+IHRoZVwtYnJlYXN0c1wtb2ZcLWFcLXdvbWFuOwor45mzID4gcnVnZ2VkbmVzc1wtb2ZcLXRoZVwtcm9hZDsKK+OZpCA+IGFcLWNyYWNrXC1pblwtZWFydGhlbndhcmU7CivjmZggPiB1c2VkXC1pblwtbmFtaW5nXC1hXC1wbGFjZTsKK+OYrSA+IGFcLWhvbGxvd1wtaW5cLXRoZVwtZ3JvdW5kOwor45isID4gYVwtaG9sbG93XC1pblwtdGhlXC1ncm91bmQ7Civjl4IgPiB0b1wta2VlcFwtdGhlXC1tb3V0aFwtc2h1dDsKK+OWkCA+IHNvdW5kXC1vZlwtY2FsbGluZ1wtZHVja3M7CivjlLQgPiBhZ3JpY3VsdHVyYWxcLWltcGxlbWVudDsKK+OTuSA+IGFcLXNoYXJwXC1wb2ludGVkXC13ZWFwb247Civjk6YgPiB0b1wtZGVsaWJlcmF0ZVwtYW5kXC1wbGFuOwor45OYID4gamFkZVwtd2l0aFwtc29tZVwtZGVmZWN0czsKK+iniSA+IHRvXC13YWtlXC11cFwtZnJvbVwtc2xlZXA7CivnkrAgPiBqYWRlXC1yaW5nXC1vclwtYnJhY2VsZXQ7CivoprogPiB0b1wtd2FrZVwtdXBcLWZyb21cLXNsZWVwOwor6KaaID4gdG9cLXdha2VcLXVwXC1mcm9tXC1zbGVlcDsKK+WIkiA+IHRvXC1yb3dcLW9yXC1wYWRkbGVcLWJvYXQ7CivloKogPiBhZGVxdWF0ZWx5XC1jYXBhYmxlXC1vZjsKK+eOryA+IGphZGVcLXJpbmdcLW9yXC1icmFjZWxldDsKK+WQtCA+IG5hbWVcLW9mXC13YXJyaW5nXC1zdGF0ZTsKK+mztCA+IGNyeVwtb2ZcLWJpcmRcLW9yXC1hbmltYWw7CivlkYkgPiBvbmVcLW9mXC13YXJyaW5nXC1zdGF0ZXM7CivpprMgPiBnb1wtcXVpY2tseVwtb3JcLXN3aWZ0bHk7Civmpo4gPiBzbWFsbFwtZXZlcmdyZWVuXC1zaHJ1YjsKK+m4oyA+IGNyeVwtb2ZcLWJpcmRcLW9yXC1hbmltYWw7CivpqbAgPiBnb1wtcXVpY2tseVwtb3JcLXN3aWZ0bHk7Civlp7sgPiByZWxhdGl2ZXNcLWJ5XC1tYXJyaWFnZTsKK+etkiA+IHRoaWNrXC1waWVjZVwtb2ZcLWJhbWJvbzsKK+W4mCA+IGZsYWdcLXNpZ25cLW9mXC1hXC10YXZlcm47CivnqLsgPiByaWNlXC1ncm93aW5nXC1pblwtZmllbGQ7CivnqLIgPiByaWNlXC1ncm93aW5nXC1pblwtZmllbGQ7CivnprAgPiBvbmUnJ3NcLWRlY2Vhc2VkXC1mYXRoZXI7CivliYIgPiBtZWRpY2luYWxcLXByZXBhcmF0aW9uOwor54+CID4gaW5mZXJpb3JcLWtpbmRcLW9mXC1qYWRlOwor5ZifID4gc291bmRcLW9mXC1ob3JuXC10b290aW5nOwor55GcID4gZmxhd2xlc3NcLWdlbVwtb3JcLWpld2VsOwor54+RID4gYVwtZ2VtXC1jdXRcLWxpa2VcLWRyYWdvbjsKK+ivrCA+IG1ha2VcLWZhbHNlXC1hY2N1c2F0aW9uOwor5auWID4gcGF0cm9uaXplXC1wcm9zdGl0dXRlczsKK+mjkiA+IHRoZVwtc291bmRcLW9mXC10aGVcLXdpbmQ7CivplKIgPiBydW5cLW1ldGFsXC1pbnRvXC1jcmFja3M7CivmjpYgPiBzdXBwb3J0XC13aXRoXC10aGVcLWFybXM7Civmo6MgPiBrZXJyaWFcLWphcG9uaWNhXC1wbGFudDsKK+iPgSA+IGZsb3dlclwtb2ZcLWxlZWtcLWZhbWlseTsKK+WSqSA+IHRoZVwtYmxlYXRpbmdcLW9mXC1zaGVlcDsKK+ePiSA+IHN0b25lXC1yZXNlbWJsaW5nXC1qYWRlOwor6ZKOID4gdG9vbFwtZm9yXC1ib3JpbmdcLWhvbGVzOwor5oqfID4gcm9sbFwtYXJvdW5kXC13aXRoXC1oYW5kOwor6La4ID4gc2VsbFwtb3JcLWJ1eVwtd2hvbGVzYWxlOwor5aajID4gb25lJydzXC1kZWNlYXNlZFwtbW90aGVyOwor5bWKID4gZGlzdHJpY3RcLWluXC1zaGFvaHNpbmc7CivnrLggPiBmbGF0XC1iYXNrZXRcLWZvclwtZ3JhaW47CivnpaIgPiBvbmUnJ3NcLWRlY2Vhc2VkXC1mYXRoZXI7CivogqsgPiB0aGVcLWdpenphcmRcLW9mXC1hXC1mb3dsOwor6IurID4gcnVzaFwtb3JcLXN0cmF3XC1tYXR0aW5nOwor5bOkID4gaGlnaFwtcG9pbnRlZFwtbW91bnRhaW47Civnp60gPiBvbmVcLXRob3VzYW5kXC1taWxsaW9uczsKK+WnkiA+IHdpZmVcLW9mXC1lbGRlclwtYnJvdGhlcjsKK+iTsCA+IHRvXC1pbmNyZWFzZVwtZml2ZVwtZm9sZDsKK+iSjCA+IGFydGVtaXNpYVwtc3RlbGxlcmlhbmE7CivphYMgPiB0aGVcLXNwaXJpdFwtb2ZcLWFcLWJlaW5nOwor57OXID4gcGFyY2hlZFwtd2hlYXRcLW9yXC1yaWNlOwor6L6LID4gZXh0ZXJpb3JcLXJpbVwtb2ZcLXdoZWVsOwor6aurID4gY2hpbGRyZW4nJ3NcLWhhaXJcLXN0eWxlOwor6Jm6ID4gbGFyZ2VcLXBvaXNvbm91c1wtc25ha2U7CivphrUgPiBjb250cmlidXRlXC1mb3JcLWRyaW5rczsKK+iarCA+IGFcLXZhcmlldHlcLW9mXC1iaXZhbHZlczsKK+ijvCA+IHRvXC10YWtlXC1vZmZcLW9uZScnc1wtdG9wOwor55y1ID4gZXllc1wtZGlzZWFzZWRcLWFuZFwtZGltOwor5p61ID4gaG9sbG9cLXN0dW1wXC1vZlwtYVwtdHJlZTsKK+iYqSA+IGFydGVtaXNpYVwtc3RlbGxhcmlhbmE7CivpvIMgPiB0aGVcLWVkaWJsZVwtd2F0ZXJcLWZyb2c7Civpt4AgPiB0aGVcLWZpc2hpbmdcLWNvcm1vcmFudDsKK+m0oCA+IGFcLWtpbmRcLW9mXC1uaWdodGluZ2FsZTsKK+mwpCA+IHNlcmlvbGFcLXFpbnF1ZXJhZGlhdGE7Civpr4QgPiBsZXBpZG90cmlnbGFcLXN0cmF1Y2hpOwor6auIID4gZGVmaW5lZFwtYXNcLXRoZVwtcGVsdmlzOwor6aK4ID4gY29vbFwtYnJlZXplXC1vZlwtYXV0dW1uOwor6aKvID4gdGhlXC1zb3VuZFwtb2ZcLXRoZVwtd2luZDsKK+mMriA+IHJ1blwtbWV0YWxcLWludG9cLWNyYWNrczsKK+mHuiA+IHRvb2xcLWZvclwtYm9yaW5nXC1ob2xlczsKK+mFjiA+IGRvdWJsZVwtZmVybWVudGVkXC13aW5lOwor6LyuID4gZXh0ZXJpb3JcLXJpbVwtb2ZcLXdoZWVsOwor6LyeID4gZXh0ZXJpb3JcLXJpbVwtb2ZcLXdoZWVsOwor6LqJID4gc2VsbFwtb3JcLWJ1eVwtd2hvbGVzYWxlOwor6LC6ID4gdGhlXC1tb3V0aFwtb2ZcLWFcLXZhbGxleTsKK+iqoyA+IG1ha2VcLWZhbHNlXC1hY2N1c2F0aW9uOwor6KC4ID4gYXVsYWNvcGhvcmFcLWZlbW9yYWxpczsKK+iekiA+IGF1bGFjb3Bob3JhXC1mZW1vcmFsaXM7CivonLogPiByZWZsZWN0aW9uXC1vZlwtcmFpbmJvdzsKK+ichiA+IGFcLXZhcmlldHlcLW9mXC1iaXZhbHZlczsKK+iYmCA+IGFcLWtpbmRcLW9mXC13aWxkXC1naW5nZXI7CivolZogPiB0aGVcLWNhbHl4XC1vZlwtYVwtZmxvd2VyOwor6JSeID4gYXJ0ZW1pc2lhXC1zdGVsbGVyaWFuYTsKK+iRuSA+IGtpbmRcLW9mXC1jaHJ5c2FudGhlbXVtOwor6JC7ID4gc21hbGxcLWJ1ZGRoaXN0XC10ZW1wbGU7CivoiJogPiB0b1wtcHV0XC1vdXRcLXRoZVwtdG9uZ3VlOwor57+PID4gdGhlXC1zb3VuZFwtb2ZcLXRoZVwtd2luZDsKK+e5tCA+IGFcLWtpbmRcLW9mXC1maXNoaW5nXC1uZXQ7Civnq7wgPiBiYW1ib29cLWNvdmVyXC1mb3JcLWJvYXQ7CivnpqggPiBwcmF5XC1mb3JcLWdvb2RcLWZvcnR1bmU7CivnmaUgPiBvYnN0cnVjdGlvblwtb2ZcLWJvd2VsczsKK+eXjyA+IGFcLWJydWlzZVwtb3JcLWNvbnR1c2lvbjsKK+eTjyA+IGFcLWdlbVwtY3V0XC1saWtlXC1kcmFnb247CivnkqEgPiBqYWRlXC1sb29rXC1hbGlrZVwtc3RvbmU7CivnkaggPiBqYWRlXC1sb29rXC1hbGlrZVwtc3RvbmU7CivnkYAgPiBzdG9uZVwtcmVzZW1ibGluZ1wtamFkZTsKK+a+giA+IGNsZWFyXC1hbmRcLXN0aWxsXC13YXRlcjsKK+a3nCA+IHJvYXJcLW9mXC1kYXNoaW5nXC13YXZlczsKK+ayhyA+IGZsb3dpbmdcLWFuZFwtZW5ndWxmaW5nOwor5qqfID4gc21hbGxcLWV2ZXJncmVlblwtc2hydWI7Civmmo4gPiBzdW5cLWJlZ2lubmluZ1wtZGVjbGluZTsKK+aRtiA+IHJvbGxcLWFyb3VuZFwtd2l0aFwtaGFuZDsKK+W2oCA+IGhpZ2hcLXBvaW50ZWRcLW1vdW50YWluOwor5bW8ID4gd2luZGluZ1wtbW91bnRhaW5cLXBhdGg7Civln7UgPiBoYXJkZW5lZFwtZGlydFwtb3JcLWNsYXk7Civll7sgPiB0b1wtc2NyZWVuXC5cLWxvcXVhY2lvdXM7CivlkLMgPiBvbmVcLW9mXC13YXJyaW5nXC1zdGF0ZXM7CivljJ8gPiBkaXZhblwtZm9yXC10d29cLXBlcnNvbnM7CivlipEgPiBtZWRpY2luYWxcLXByZXBhcmF0aW9uOwor5Ym+ID4gdG9cLXBpY2tcLXVwXC13aXRoXC1rbmlmZTsKK+WJpCA+IG1lZGljaW5hbFwtcHJlcGFyYXRpb247CivktZcgPiB0b1wtY2xlYW5cLXRoZVwtd2l0aGVyZWQ7CivktYQgPiB0b1wtYm9pbFwtb3JcLXN0ZXdcLXdoZWF0Owor5LS2ID4gdG9cLWJvaWxcLW9yXC1zdGV3XC13aGVhdDsKK+S0lCA+IHRoZVwtZmlzaGluZ1wtY29ybW9yYW50Owor5LO5ID4gYVwta2luZFwtZG92ZVwtbGlrZVwtYmlyZDsKK+SznSA+IGFcLWtpbmRcLW9mXC1zbWFsbFwtYmlyZHM7CivksZ8gPiBhXC1raW5kXC1vZlwtc2lsdmVyXC1maXNoOwor5K+vID4gaGFuZ1wtZG93blwtb2ZcLXRoZVwtaGFpcjsKK+SvrSA+IG9mXC1uaWNlXC1hbmRcLWdvb2RcLWhhaXI7CivkroQgPiBhblwtb25lXC15ZWFyXC1vbGRcLWhvcnNlOwor5K20ID4gYW5cLW9uZVwteWVhclwtb2xkXC1ob3JzZTsKK+SruSA+IHRoZVwtc291bmRcLW9mXC10aGVcLXdpbmQ7CivkqqUgPiBzaGFsbG90c1wtb3JcLXNjYWxsaW9uczsKK+SpqSA+IGFcLW1lYXN1cmVcLW9mXC1jYXBhY2l0eTsKK+SmvSA+IGFuXC1lYXN0XC1hbmRcLXdlc3RcLXdhbGw7CivkppogPiB3aWRlXC1vcGVuXC1vZlwtdGhlXC1kb29yOwor5KaMID4gdGhlXC1kb29yXC1pc1wtd2lkZVwtb3BlbjsKK+SliCA+IHRoZVwtc3ltYm9sXC1mb3JcLWNvYmFsdDsKK+SklyA+IHRhc3RlXC1vZlwtc3Ryb25nXC1kcmluazsKK+SiqSA+IHRvXC1mb3JiaWRcLXRvXC1wcm9oaWJpdDsKK+ShtiA+IHZlaGljbGVzXC1hbmRcLWdhcm1lbnRzOwor5J6aID4gdG9cLWhhbmdcLW9uXC1hXC1iaWdcLXRyZWU7CivknZYgPiByZXB0aWxlc1wtd2l0aG91dFwtZmVldDsKK+SbsSA+IHRvXC10YWxrXC11bnJlbWl0dGluZ2x5Owor5JuKID4gY2hlZXJmdWxcLWFsbFwtdGhlXC10aW1lOwor5JuDID4gdXNlZFwtaW5cLXBlcnNvbicnc1wtbmFtZTsKK+SYkCA+IHRoZVwtYmxlZWRcLWF0XC10aGVcLW5vc2U7Civkl4ogPiB0b1wtcHV0XC1vdXRcLXRoZVwtdG9uZ3VlOwor5JeJID4gYVwtc21hbGxcLXNvbGl0YXJ5XC13YXNwOwor5JaUID4gYVwta2luZFwtb2ZcLXdoaXRlXC10aWdlcjsKK+SWjSA+IHRvXC1hY3RcLXdpdGhcLXJldmVyZW5jZTsKK+SUtSA+IGZyYWdyYW50XC10aG9yb3VnaHdvcnQ7CivklIogPiBkZW5zZVwtZ3Jvd3RoXC1vZlwtZ3Jhc3M7Civkk5IgPiBzY2lycHVzXC1jeXBlcmludXNcLXZhcjsKK+SSpiA+IGdyYXNzXC1mbG9hdHNcLW9uXC13YXRlcjsKK+SShCA+IGZ1bGx5XC1sYWRlblwtb2ZcLWFcLWJvYXQ7CivkkZ0gPiBhXC1zbWFsbFwtY3VwXC13aXRoXC1lYXJzOwor5I+kID4gdG9wXC1vZlwtdGhlXC1odW1hblwtaGVhZDsKK+SOtiA+IG9mZmVyaW5nXC1ibG9vZFwtdG9cLWdvZDsKK+SOmiA+IHRoZVwtZW5kXC1vZlwtYmlyZFwtd2luZ3M7CivkjpYgPiBzb2FyaW5nXC11cFwtaW5cLXRoZVwtc2t5Owor5I6BID4gdXNlZFwtaW5cLXBlcnNvbicnc1wtbmFtZTsKK+SMpyA+IGFcLWtpbmRcLW9mXC1zaWxrXC1mYWJyaWM7CivkjJ8gPiB0b1wtd2VhdmVcLXNpbGtcLXJpYmJvbnM7Civki4IgPiBkcmVzc2VzXC1mb3JcLXRoZVwtYnJpZGU7CivkiKcgPiBza2luXC1vZlwtYmFtYm9vXC1zaG9vdHM7CivkiJ4gPiBhbmNpZW50XC1uYW1lXC1vZlwtaW5kaWE7Civkh74gPiBhXC1mbHV0ZVwtd2l0aFwtMjNcLXR1YmVzOwor5IewID4gYVwtYmFtYm9vXC1iaW5kZWRcLXRvcmNoOwor5IehID4gdGhlXC1zaHV0dGxlXC1vZlwtYVwtbG9vbTsKK+SGoCA+IGFcLWdvdmVybm1lbnRcLW9mZmljaWFsOwor5IabID4gc29tZXRoaW5nXC1pblwtdGhlXC1jYXZlOwor5IWXID4gZm91clwtYnVuZGxlXC1vZlwtZ3JhaW5zOwor5IWRID4gZm91clwtYnVuZGxlXC1vZlwtZ3JhaW5zOwor5IGtID4gdG9cLWdpdmVcLWFuXC1hbmdyeVwtbG9vazsKK+SBmiA+IGFcLWtpbmRcLW9mXC1leWVcLWRpc2Vhc2U7CivkgL0gPiB0b1wtbG9va1wtYXRcLWVhY2hcLW90aGVyOwor5ICgID4gYVwtY2hpbmVzZVwtZmFtaWx5XC1uYW1lOwor5ICTID4gdG9cLXR1cm5cLW9uZScnc1wtZXllc1wtdG87Civjv7QgPiB3aWRlXC1waWVjZVwtb2ZcLWxlYXRoZXI7Civjv68gPiB3aWRlXC1waWVjZVwtb2ZcLWxlYXRoZXI7Civjv6sgPiB0b1wtc3BsaXRcLXRhbmdsZWRcLWhlbXA7Civjv48gPiBwYXJhbHlzaXNcLW9mXC10aGVcLWJvZHk7Civjvr4gPiBkaXNlYXNlXC1vZlwtdGhlXC10aHJvYXQ7CivjvqQgPiBkaXNlYXNlXC1vZlwtdGhlXC10aHJvYXQ7CivjvLIgPiBzb3VuZFwtb2ZcLWJyb2tlblwtdGlsZXM7CivjvJAgPiBhXC1raW5kXC1vZlwtd2hpdGVcLW1lbG9uOwor47m2ID4gYVwta2luZFwtb2ZcLXdpbGRcLWFuaW1hbDsKK+O5piA+IGRvZ1wtd2l0aFwtYVwtc2hvcnRcLXRhaWw7CivjuZQgPiBjYXR0bGVcLXdpdGhcLWxvbmdcLWJhY2s7Civjt5cgPiB1c2VkXC1pblwtcGVyc29uJydzXC1uYW1lOwor47ePID4gdXNlZFwtaW5cLXBlcnNvbicnc1wtbmFtZTsKK+O1rCA+IHVzZWRcLWluXC1wZXJzb24nJ3NcLW5hbWU7CivjtaggPiBhXC1kcnlcLWxhbmRcLWluXC1hXC1yaXZlcjsKK+OziCA+IGFcLWdyZWF0XC1mbG93XC1vZlwtd2F0ZXI7CivjsZ8gPiB0b1wtcmlwXC1vcGVuXC10aGVcLWZsZXNoOwor47CEID4gYVwtc21hbGxcLWNoZXN0bnV0XC10cmVlOwor46+lID4gYVwtY2hpbmVzZVwtZmFtaWx5XC1uYW1lOwor466XID4gdGhlXC1oYW5kbGVcLW9mXC1hXC1zcGVhcjsKK+OtjSA+IGNhcGl0YWxcLWZvcm1cLW9mXC1zZXZlbjsKK+OsoCA+IHRvXC1leHBvc2VcLXRvXC1zdW5saWdodDsKK+OskyA+IHRvXC1leHBvc2VcLXRvXC1zdW5saWdodDsKK+OsgiA+IHVzZWRcLWluXC1wZXJzb24nJ3NcLW5hbWU7CivjqZ8gPiB0b1wtc2V3XC1zb21lXC1vcm5hbWVudHM7CivjqIwgPiB0b1wtbWlsa1wtYVwtY293XC1vclwtZ29hdDsKK+OjnSA+IGFcLWNoaW5lc2VcLWZhbWlseVwtbmFtZTsKK+OgiyA+IGFcLWxvZnR5XC1tb3VudGFpblwtcGVhazsKK+OfniA+IHByZWNpcGl0b3VzXC1hbmRcLWxvZnR5Owor45+dID4gdG9cLWJhbmtcLXVwXC13aXRoXC1lYXJ0aDsKK+OfnCA+IHNoYXBlXC1vZlwtdGhlXC1tb3VudGFpbjsKK+OfmSA+IHNoYXBlXC1vZlwtdGhlXC1tb3VudGFpbjsKK+OfliA+IGFcLWRpYWxlY3RcLW9mXC1taW5vcml0eTsKK+OfjiA+IGFcLWxvbmdcLW1vdW50YWluXC1yaWRnZTsKK+OegSA+IGNhblwtbm90XC13YWxrXC1ub3JtYWxseTsKK+OdviA+IGNhblwtbm90XC13YWxrXC1ub3JtYWxseTsKK+OYsCA+IG5hbWVcLW9mXC1hXC1vbGRcLWNvdW50cnk7CivjmKEgPiBhXC1wZW5cLWZvclwtd2lsZFwtYmVhc3RzOwor45iWID4gdG9cLW1ha2VcLWFcLWRpc3R1cmJhbmNlOwor45eBID4gdGhlXC1yb29mXC1vZlwtdGhlXC1tb3V0aDsKK+OWlyA+IGhpZ2hcLXJpZGdlc1wtb2ZcLWNsaWZmczsKK+OVoiA+IHByb2ZvdW5kXC1zaWduaWZpY2FuY2U7CivjkoYgPiB0b1wtZ2F0aGVyXC10aGVcLWhhcnZlc3Q7Civku4AgPiBmaWxlXC1vZlwtdGVuXC1zb2xkaWVyczsKK+iyrCA+IG9uZScnc1wtcmVzcG9uc2liaWxpdHk7CivniLUgPiBmZXVkYWxcLXRpdGxlXC1vclwtcmFuazsKK+i0oyA+IG9uZScnc1wtcmVzcG9uc2liaWxpdHk7CivllYogPiBleGNsYW1hdG9yeVwtcGFydGljbGU7CivmpZogPiBuYW1lXC1vZlwtZmV1ZGFsXC1zdGF0ZTsKK+aJmCA+IHRvXC1ob2xkXC11cFwtd2l0aFwtcGFsbTsKK+axsiA+IGRyYXdcLXdhdGVyXC1mcm9tXC13ZWxsOwor6a2FID4ga2luZFwtb2ZcLWZvcmVzdFwtZGVtb247CivkvIogPiB0aGlyZFwtcGVyc29uXC1wcm9ub3VuOwor6bi/ID4gc3BlY2llc1wtb2ZcLXdpbGRcLXN3YW47Civlp6UgPiBtYXRlcm5hbFwtZ3JhbmRtb3RoZXI7CivmjacgPiBob2xkXC11cFwtaW5cLXR3b1wtaGFuZHM7CivkuZkgPiBzZWNvbmRcLWhlYXZlbicnc1wtc3RlbTsKK+WQgSA+IGludGVyamVjdGlvblwtJydhbGFzXCEnJzsKK+WnqCA+IG1vdGhlclwvd2lmZScnc1wtc2lzdGVyOwor5LqpID4gY2hpbmVzZVwtbGFuZFwtbWVhc3VyZTsKK+WDtSA+IHN0aWZmXC1hbmRcLW1vdGlvbmxlc3M7Civmi7EgPiBmb2xkXC1oYW5kc1wtb25cLWJyZWFzdDsKK+emviA+IGdyYWluXC1zdGlsbFwtb25cLXN0YWxrOwor5ZehID4gc291bmRcLW9mXC1mbHlpbmdcLWJlZXM7Civlha4gPiBleGNsYW1hdG9yeVwtcGFydGljbGU7CivnjKkgPiBzcGVjaWVzXC1vZlwtb3Jhbmd1dGFuOwor54ueID4gZmVyb2Npb3VzXC1hcHBlYXJhbmNlOwor5ouIID4gcGlja1wtdXBcLXdpdGhcLWZpbmdlcnM7CivpmZsgPiBzdGVwc1wtbGVhZGluZ1wtdGhyb25lOwor6bivID4gZmVtYWxlXC1tYW5kYXJpblwtZHVjazsKK+WNryA+IHRoXC1vZlwtZWFydGhcLWJyYW5jaGVzOwor54agID4gYnJpZ2h0XC1hbmRcLXNwYXJrbGluZzsKK+mYgiA+IGJsb2NrZWRcLW9yXC1zZXBhcmF0ZWQ7Civmt4UgPiB3YXRlclwtdXNlZFwtd2FzaFwtcmljZTsKK+S9miA+IGluZHVsZ2VcLWluXC1wbGVhc3VyZXM7CivovpogPiBydW1ibGluZ1wtb2ZcLXZlaGljbGVzOwor5be9ID4gdGhcLW9mXC10aGVcLThcLXRyaWdyYW1zOwor6KiHID4gdGhlXC1zb3VuZFwtb2ZcLWFcLWNyYXNoOwor54u6ID4gdGhlXC1zbmFybGluZ1wtb2ZcLWRvZ3M7CivmtZQgPiBzdGVlcFwtYmFua1wtYnlcLXN0cmVhbTsKK+iTiiA+IGx1eHVyaWFudFwtdmVnZXRhdGlvbjsKK+iToCA+IGdyYWNpbGFyaWFcLXZlcnJ1Y29zYTsKK+iPgCA+IGx1eHVyaWFuY2VcLW9mXC1ncm93dGg7Civog5cgPiBwdXN0dWxlc1wtb2ZcLWFueVwta2luZDsKK+migyA+IGZseVwtZG93blwtb3JcLWRvd253YXJkOwor5Z6GID4gYmxhY2tcLWNsb2RzXC1vZlwtZWFydGg7CivmqJcgPiBhaWxhbnRodXNcLWdsYW5kdWxvc2E7CivomqcgPiBhXC1yZWRcLXNwb3R0ZWRcLWxpemFyZDsKK+e8tiA+IGVhcnRoZW5cLWNyb2NrXC1vclwtamFyOwor6LGzID4gYVwtemhvdVwtZHluYXN0eVwtc3RhdGU7CivovbogPiBzbWFsbFwtbGlnaHRcLWNhcnJpYWdlOwor6YCvID4gbGVhdmVcLXdpdGhvdXRcLXJlYXNvbjsKK+m9niA+IHRvXC1kaXNwbGF5XC10aGVcLXRlZXRoOwor6byIID4gYVwtZnJlc2hcLXdhdGVyXC10dXJ0bGU7CivpvIIgPiBhXC1raW5kXC1vZlwtc2VhXC10dXJ0bGU7CivpuIcgPiBraW5kXC1vZlwtYmlyZFwtb2ZcLXByZXk7CivpuIIgPiBhXC1raW5kXC1vZlwtd2F0ZXJcLWJpcmQ7Civpt6sgPiB0dXJxdW9pc2VcLWtpbmdmaXNoZXI7Civpt4EgPiBmaXNoaGF3a1wtYm93XC1vclwtcHJvdzsKK+m0uyA+IHNwZWNpZXNcLW9mXC13aWxkXC1zd2FuOwor6bSmID4gZmVtYWxlXC1tYW5kYXJpblwtZHVjazsKK+mwnCA+IGJpZ1wtbW91dGhlZFwtZmxvdW5kZXI7Civpq7ogPiB0aGVcLWhhaXJcLWRpc2hldmVsbGVkOwor6aqjID4gaG9yc2VcLXdpdGhvdXRcLXNhZGRsZTsKK+mpjyA+IGhvcnNlXC13aXRob3V0XC1zYWRkbGU7CivppL0gPiBtYWtlXC1wcmVzZW50XC1vZlwtZm9vZDsKK+mgjyA+IGZseVwtZG93blwtb3JcLWRvd253YXJkOwor6Z+xID4gd2lsZFwtb25pb25zXC1vclwtbGVla3M7Civpn68gPiB3aWxkXC1vbmlvbnNcLW9yXC1sZWVrczsKK+mcgyA+IGxvbmdcLWNvbnRpbnVlZFwtcmFpbnM7Civpl40gPiB0b3dlclwtb3ZlclwtY2l0eVwtZ2F0ZTsKK+mWoSA+IGJsb2NrZWRcLW9yXC1zZXBhcmF0ZWQ7CivpjbEgPiB0aGluXC1wbGF0ZXNcLW9mXC1tZXRhbDsKK+mJtiA+IHNhY3JpZmljaWFsXC1jYXVsZHJvbjsKK+mGsCA+IGJpdHRlclwtdGFzdGVcLWluXC13aW5lOwor6L2UID4gcnVtYmxpbmdcLW9mXC12ZWhpY2xlczsKK+i7uiA+IHNtYWxsXC1saWdodFwtY2FycmlhZ2U7CivotoIgPiB0b1wtdGFrZVwtYWR2YW50YWdlXC1vZjsKK+ilrCA+IGxvd2VyXC1wYXJ0XC1vZlwtYVwtcm9iZTsKK+iisyA+IHNwcmVhZFwtb25lJydzXC1jbG90aGVzOwor6JybID4gaHlkcm9waGlsdXNcLWNvZ25hdHVzOwor6JuaID4gY3lydG94aXBodXNcLXJpdHNlbWFlOwor6Ji6ID4gZ3JhY2lsYXJpYVwtdmVycnVjb3NhOwor6JaiID4gd29vZHlcLWNsaW1iaW5nXC1wbGFudDsKK+iMgCA+IG92ZXJncm93blwtd2l0aFwtZ3Jhc3M7CivoioQgPiBtZXRhcGxleGlzXC1zdGF1bnRvbmk7CivoiLogPiBwbGFjZVwtbmFtZVwtaW5cLXRhaXdhbjsKK+iEoSA+IHN0cmlwc1wtb2ZcLWRyaWVkXC1tZWF0Owor57KDID4gZW1wdHlcLWh1c2tzXC1vZlwtZ3JhaW47CivnqqMgPiB0b1wtcnVzaFwtb3V0XC1vZlwtYVwtZGVuOwor56mHID4gcGFuaWN1bVwtZnJ1bWVudGFjZXVtOwor56OSID4gdG9cLWZhbGxcLWZyb21cLW9yXC1pbnRvOwor55+RID4gdGhlXC1wdXBpbFwtb2ZcLXRoZVwtZXllOwor552NID4gdG9cLWxvb2tcLWF0XC1mZWFyZnVsbHk7CivnlZ0gPiBjaGluZXNlXC1sYW5kXC1tZWFzdXJlOwor55WSID4gY2hpbmVzZVwtbGFuZFwtbWVhc3VyZTsKK+eVhiA+IGNoaW5lc2VcLWxhbmRcLW1lYXN1cmU7CivnlL0gPiBkcmFpblwtYmV0d2VlblwtZmllbGRzOwor55SDID4gYnJpY2tcLXdhbGxcLW9mXC1hXC13ZWxsOwor55CWID4gY2FydmVkXC1qYWRlXC13aW5lXC1jdXA7CivnjqYgPiBicm9rZW5cLXBpZWNlXC1vZlwtamFkZTsKK+eNsCA+IGZlcm9jaW91c1wtYXBwZWFyYW5jZTsKK+eAsyA+IHRvXC1hcnJpdmVcLVwob2ZcLXdhdGVyXCk7CivmvqwgPiB0b1wtcmFpblwtY29udGludW91c2x5Owor5r2vID4gc3RlZXBcLWJhbmtcLWJ5XC1zdHJlYW07CivmtKQgPiBhXC1mb3VudGFpblwtb3JcLXNwcmluZzsKK+anviA+IHBhc3RlXC13YWxsXC13aXRoXC1kaXJ0Owor5qOoID4gdGFsbHlcLW9yXC13b29kZW5cLXBhc3M7CivmoawgPiBwZWFyXC1hbmRcLW90aGVyXC10cmVlczsKK+aVsyA+IHRvXC1nb3Zlcm5cLWZvcmNlZnVsbHk7CivmlYEgPiB0b1wtd2VpZ2hcLWluXC10aGVcLWhhbmQ7CivmkI4gPiB0b1wtcnViXC13aXRoXC10aGVcLWhhbmQ7CivmiLwgPiB0aFwtb2ZcLWVhcnRoXC1icmFuY2hlczsKK+W3uiA+IHRoXC1vZlwtdGhlXC04XC10cmlncmFtczsKK+W1jyA+IGFcLW1vdW50YWluXC1pblwtc2hlbnhpOwor5a2tID4gdG9cLWNhcnJ5XC1vblwtdGhlXC1iYWNrOwor5auLID4gc2xlbmRlclwtYW5kXC1kZWxpY2F0ZTsKK+WpoyA+IG1hcnJpYWdlXC1jb25uZWN0aW9uczsKK+WkmCA+IHRoXC1vZlwtZWFydGhcLWJyYW5jaGVzOwor5aOaID4gYmxhY2tcLWNsb2RzXC1vZlwtZWFydGg7Civlm6wgPiB0b1wtcmV0dXJuXC10b1wtb3JcLWZyb207CivlioIgPiBjaGlzZWxcLWZvclwtZW5ncmF2aW5nOwor5LaZID4gc3dlbGxpbmdcLW9mXC10aGVcLWd1bXM7CivktoogPiB0b1wtYmxlZWRcLWF0XC10aGVcLW5vc2U7CivktJ8gPiBhblwtb25lXC15ZWFyXC1vbGRcLWRlZXI7CivktJYgPiBhXC1raW5kXC1vZlwtd2F0ZXJcLWJpcmQ7CivktIwgPiBhXC1raW5kXC1vZlwtd2F0ZXJcLWJpcmQ7CivktIsgPiBhXC1raW5kXC1vZlwtd2F0ZXJcLWJpcmQ7CivktIggPiBhXC1raW5kXC1vZlwtd2F0ZXJcLWJpcmQ7CivktIIgPiBhXC1raW5kXC1vZlwtd2F0ZXJcLWJpcmQ7CivktIAgPiBhXC1raW5kXC1vZlwtd2F0ZXJcLWJpcmQ7Civks7YgPiBhXC1raW5kXC1vZlwtd2F0ZXJcLWJpcmQ7Civks7MgPiBhXC1raW5kXC1vZlwtc21hbGxcLWJpcmQ7Civks5MgPiBhXC1raW5kXC1vZlwtd2F0ZXJcLWJpcmQ7Civks5EgPiBhXC1waGVhc2FudFwtbGlrZVwtYmlyZDsKK+SziyA+IGFcLXBoZWFzYW50XC1saWtlXC1iaXJkOwor5LOJID4gYVwta2luZFwtb2ZcLXdhdGVyXC1iaXJkOwor5LOEID4gYVwta2luZFwtb2ZcLXdhdGVyXC1iaXJkOwor5LOCID4gYVwta2luZFwtb2ZcLXNtYWxsXC1iaXJkOwor5LKxID4gYVwta2luZFwtb2ZcLWJsYWNrXC1iaXJkOwor5LKVID4gdGhlXC15YW5ndHplXC1wb3Jwb2lzZTsKK+SxkCA+IGFcLWtpbmRcLW9mXC1ibGFja1wtZmlzaDsKK+SxgCA+IGFcLWtpbmRcLW9mXC1zbWFsbFwtZmlzaDsKK+SvuiA+IHRoZVwtaGFpclwtZGlzaGV2ZWxsZWQ7CivkrqEgPiBhXC1zdXBlcm5hdHVyYWxcLWhvcnNlOwor5K6CID4gaG9yc2VcLXdpdGhcLWxvbmdcLWhhaXI7Civkrb4gPiB0b1wtY2FycnlcLW9uXC10aGVcLWJhY2s7CivkrbcgPiBob3JzZVwtd2l0aFwtbG9uZ1wtbWFuZTsKK+SsqSA+IHRvXC1hYnN0YWluXC1mcm9tXC1tZWF0Owor5KyjID4gYVwtc2FjcmlmaWNpYWxcLXZpY3RpbTsKK+SroCA+IHNob3J0XC1oYWlyXC1hbmRcLWJlYXJkOwor5Km9ID4gYVwtcXVpdmVyXC1vbmVcLWFcLWhvcnNlOwor5KmCID4gdG9cLWNvbWVcLXRvXC10aGVcLWZyb250Owor5KeXID4gbW91bnRhaW5zXC1jb2xsYXBzaW5nOwor5KamID4gYVwtbXVzaWNhbFwtaW5zdHJ1bWVudDsKK+SlpCA+IHRoZVwtbmVja1wtb2ZcLWFcLXBlc3RsZTsKK+SloSA+IHRoaW5cLXBsYXRlc1wtb2ZcLW1ldGFsOwor5KWGID4gYVwtbXVzaWNhbFwtaW5zdHJ1bWVudDsKK+SlhSA+IGFcLW11c2ljYWxcLWluc3RydW1lbnQ7CivkpYQgPiB0b1wtcGxhc3Rlclwtd2l0aFwtZ29sZDsKK+SkuCA+IHNob3J0XC1zcGVhclwtb3JcLWxhbmNlOwor5KCRID4gYmV0d2VlblwtdGhlXC1idXR0b2NrczsKK+SgiCA+IGhhcmRcLXRvXC1tb3ZlXC1mb3J3YXJkOwor5J+pID4gaGFyZFwtb2ZcLXdhbGtcLWZvcndhcmQ7CivknpkgPiB0b1wtd2Fsa1wtaW5cLWh1cnJpZWRseTsKK+SdkSA+IGFcLWxvY2FsXC1wcm9kdWNlZFwtcGlnOwor5JynID4gdG9cLWluc3VsdFwtd2l0aFwtd29yZHM7CivknJMgPiBhXC1zbGlwXC1vZlwtdGhlXC10b25ndWU7CivknIAgPiB0b1wtaW5zdWx0XC13aXRoXC13b3JkczsKK+SbjCA+IHRvXC1wcm92b2tlXC1vclwtYXJvdXNlOwor5JmuID4gc3RyaXBcLW9mXC10aGVcLWNsb3RoZXM7CivkmL4gPiBsZWdzXC1vZlwtdGhlXC10cm91c2VyczsKK+SVqyA+IGFcLW9uZVwtbGVnZ2VkXC1tb25zdGVyOwor5JSIID4gbHVzaFwtZ3Jvd3RoXC1vZlwtZ3Jhc3M7CivkkaAgPiBsb25nXC1hbmRcLW5hcnJvd1wtYm9hdDsKK+SQuCA+IHRoZVwtYmFja1wtb2ZcLXRoZVwta25lZTsKK+SPvyA+IHRoZVwtY2FsZlwtb2ZcLXRoZVwtbGVnczsKK+SPoSA+IHVuY29va2VkXC1vclwtcmF3XC1tZWF0Owor5IqzID4gdG9cLWJyZWFrXC1pbnRvXC1waWVjZXM7CivkirIgPiB0b1wtaHVsbFwtcmljZVwtcm91Z2hseTsKK+SKgiA+IHBvb3JcLXF1YWxpdHlcLW9mXC1yaWNlOwor5ImRID4gYmxhY2tcLXNraW5uZWRcLWJhbWJvbzsKK+SIpiA+IGFcLWN1cnZlZFwtYmFtYm9vXC13aGlwOwor5IiRID4gdG9vbHNcLXRvXC11bnJlZWxcLXNpbGs7CivkiIUgPiB0b29sc1wtdG9cLXVucmVlbFwtc2lsazsKK+SIgSA+IHRvb2xzXC11c2VkXC1vblwtYVwtYm9hdDsKK+SHmCA+IHRvb2xcLXRvXC1jb2xsZWN0XC1yb3BlOwor5IajID4gYWJvZGVcLW9mXC10aGVcLWVtcGVyb3I7Civkho8gPiBhXC1raW5kXC1vZlwtcmljZVwtcGxhbnQ7CivkhoMgPiBhXC1raW5kXC1vZlwtcmljZVwtcGxhbnQ7Civkha4gPiBhXC1mdWxsXC1oZWFkXC1vZlwtZ3JhaW47CivkhZMgPiBjdXJ2ZWRcLXBpZWNlXC1vZlwtd29vZDsKK+SFjyA+IHJpY2VcLWJvaWxlZFwtdG9cLWdydWVsOwor5IWJID4gYVwta2luZFwtb2ZcLXJpY2VcLXBsYW50Owor5IS/ID4gYVwta2luZFwtb2ZcLXJpY2VcLXBsYW50Owor5ISvID4gdGVuXC1oYW5kbGVcLW9mXC1ncmFpbnM7CivkhIIgPiB0b1wtcHJheVwtYW5kXC10b1wtY3Vyc2U7Civkg7AgPiBicmlja1wtb3JcLXN0b25lXC1zdGVwczsKK+SCkiA+IHNob3J0XC10b1wtY3VycnlcLWZhdm9yOwor5IKCID4gdG9cLWdhemVcLWF0XC1pblwtdGVycm9yOwor5IGsID4gdG9cLWFjdFwtcHJldGVudGlvdXNseTsKK+SAtyA+IHRvXC1oYXZlXC1xdWlja1wtZ2xhbmNlOwor5ICyID4gZGlzZWFzZXNcLWluXC10aGVcLWV5ZXM7Civjv7ggPiB0b1wtY2FzdFwtb2ZmXC10aGVcLXNraW47Civjv54gPiBhblwtb2xkXC1tYW5cLW9mXC1laWdodHk7CivjvaQgPiBhXC1zbWFsbFwtcGxvdFwtb2ZcLWxhbmQ7CivjvaIgPiB0b1wtcGxvdWdoXC10aGVcLWZpZWxkczsKK+O9lSA+IG5ld1wtYnJhbmNoZXNcLWdyb3dpbmc7CivjvYMgPiBhXC1iaWdcLXBpZWNlXC1vZlwtYnJpY2s7CivjvKIgPiBicmlja3NcLWFuXC1lYXRoZW5cLWphcjsKK+O8iSA+IGdyZWVuXC1jb2xvcmVkXC1tZWxvbnM7Civju64gPiBicmlnaHRcLWFuZFwtYnJpbGxpYW50Owor47quID4gZmluZVwtc3RvbmVcLWxpa2VcLWphZGU7CivjuqggPiBmaW5lXC1zdG9uZVwtbGlrZVwtamFkZTsKK+O6giA+IGJpZ1wtYW5kXC1zdHJvbmdcLXNoZWVwOwor47mYID4gc2hpbmJvbmVcLW9mXC1hXC1jYXR0bGU7CivjuKogPiBhblwtb3hcLXdhbGtpbmdcLXNsb3dseTsKK+O3mSA+IHRvXC1mcnlcLWluXC1mYXRcLW9yXC1vaWw7CivjtpQgPiBzd2lmdFwtYW5kXC10b3JyZW50aWFsOwor47aOID4gc3dpZnRcLWFuZFwtdG9ycmVudGlhbDsKK+O1oSA+IHN3aWZ0XC1hbmRcLXRvcnJlbnRpYWw7CivjtZ4gPiBiZWxsaWVkXC1pblwtd2F0ZXJcLWdhczsKK+OzvCA+IGJ1YmJsaW5nXC1vZlwtZm91bnRhaW47Civjs5ogPiBmbG93aW5nXC1vZlwtdGhlXC13YXRlcjsKK+OzlCA+IHRvXC1zb2FrXC1vclwtYmVcLXNvYWtlZDsKK+OzkCA+IGZsb3dpbmdcLW9mXC10aGVcLXdhdGVyOwor47KrID4gaGFpclwta25vdHNcLWluXC1hXC1tZXNzOwor47KiID4gaGFpclwta25vdHNcLWluXC1hXC1tZXNzOwor47CLID4gYVwta2luZFwtb2ZcLWZydWl0XC10cmVlOwor46+MID4gdG9cLW9wZXJhdGVcLW9yXC1tYW5hZ2U7CivjrZ4gPiBhXC1raW5kXC1pbmZlcmlvclwtd29vZDsKK+OtkiA+IGFcLWZhcm1pbmdcLWluc3RydW1lbnQ7CivjqrAgPiB0b1wtYWJzdGFpblwtZnJvbVwtbWVhdDsKK+OpuyA+IHJ1Z2dlZFwtbW91bnRhaW5cLXBhdGg7CivjqZQgPiBhXC10b29sXC10b1wtbWFrZVwtYVwtYm93Owor76e9ID4gZmlsZVwtb2ZcLXRlblwtc29sZGllcnM7Civjp7kgPiB0b1wtc3RyaWtlXC13aXRoXC1maXN0czsKK+OhmSA+IGN1cnRhaW5cLWZvclwtY2FycmlhZ2U7CivjoJcgPiBkZWVwXC1pblwtdGhlXC1tb3VudGFpbjsKK+OepSA+IGRlZXBcLWluXC10aGVcLW1vdW50YWluOwor456fID4gc2F2aW5nc1wtYW5kXC1yZXNlcnZlczsKK+OckiA+IG1hdGVybmFsXC1ncmFuZG1vdGhlcjsKK+OZoyA+IHRvXC1waWxlXC1hXC1zYW5kXC1oaWxsczsKK+OZkSA+IHRoZVwtY2Fub3B5XC1vZlwtaGVhdmVuOwor45iOID4gdGhlXC1yb2Fyc1wtb2ZcLWFcLXRpZ2VyOwor45iFID4gdG9cLWhvbGRcLWluXC10aGVcLW1vdXRoOwor45WhID4gdGhlXC1iZWRcLW9mXC1hXC10b3JyZW50Owor45WMID4gdG9cLXJhaXNlXC10aGVcLWN1cnRhaW47CivjlIsgPiBjdXRcLWludG9cLXRoaW5cLXNsaWNlczsKK+OShSA+IHRvXC11bmJpbmRcLXRoZVwtY29sbGFyOwor45GJID4gY2Fubm90XC1zdHJhaWdodGVuXC11cDsKK+W5viA+IGhvd1wtbWFueVw/XC1ob3dcLW11Y2hcPzsKK+WljyA+IG1lbW9yaWFsaXplXC1lbXBlcm9yOwor5oKoID4gaG9ub3JpZmljXC1mb3JcLScneW91Jyc7CivlkI8gPiBnb3Zlcm5tZW50XC1vZmZpY2lhbDsKK+WFgCA+IHRvXC1jdXRcLW9mZlwtdGhlXC1mZWV0Owor6IO0ID4gdGhlXC1sYXJnZVwtaW50ZXN0aW5lOwor56emID4gZmV1ZGFsXC1zdGF0ZVwtb2ZcLXFpbjsKK+ahgSA+IGNyb3NzXC1iZWFtc1wtb2ZcLXJvb2Y7Civojo4gPiBraW5kXC1vZlwtc2VkZ2VcLWdyYXNzOwor6JabID4ga2luZFwtb2ZcLW1hcnNoXC1ncmFzczsKK+e1oyA+IHRvXC1iYXN0ZVwtZm9yXC1zZXdpbmc7CivmgpYgPiBiZVwtY29udHJhZGljdG9yeVwtdG87CivoipIgPiBtaXNjYW50aHVzXC1zaW5lbnNpczsKK+WYtiA+IG5laWdoaW5nXC1vZlwtYVwtaG9yc2U7Civlj70gPiBzaWdoXC1pblwtZGlzYXBwcm92YWw7CivljqUgPiBwZXJzb25hbFwtcHJvbm91blwtaGU7CivlnK0gPiBqYWRlXC1wb2ludGVkXC1hdFwtdG9wOwor5b6YID4gd2Fsa1wtYmFja1wtYW5kXC1mb3J0aDsKK+aZpCA+IGhhdmVcLWludGVydmlld1wtd2l0aDsKK+iItyA+IHRoZVwtc2lkZXNcLW9mXC1hXC1ib2F0Owor6YKsID4gdmFyaW91c1wtcGxhY2VcLW5hbWVzOwor6KSQID4gY29hcnNlXC13b29sZW5cLWNsb3RoOwor6aaIID4gb2ZmZXJcLWZvb2RcLXN1cGVyaW9yOwor5ZSnID4gY2hpcnBpbmdcLW9mXC1pbnNlY3RzOwor5ZKUID4gdXNlZFwtaW5cLXRyYW5zbGF0aW9uOwor54G4ID4gY2F1dGVyaXplXC13aXRoXC1tb3hhOwor6am3ID4gdGVhbVwtb2ZcLWZvdXJcLWhvcnNlczsKK+eyvCA+IGNsZWFyXC1cKGFzXC1vZlwtd2F0ZXJcKTsKK+e+miA+IHNwZWNpZXNcLW9mXC1hbnRlbG9wZTsKK+WRkyA+IHRhbGtcLWluXC1vbmUnJ3NcLXNsZWVwOwor56+ZID4gcG9sZVwtdXNlZFwtcHVudFwtYm9hdDsKK+a5jSA+IHJhcGlkXC13YXRlclwtY3VycmVudDsKK+iEjSA+IG1pbmNlZFwtbWVhdFwtb3JcLWZpc2g7Civpj5YgPiB0b1wtZmlnaHRcLXRvXC10aGVcLWVuZDsKK+iCvSA+IGFcLWNoZW1pY2FsXC1jb21wb3VuZDsKK+WNnyA+IGFcLWNoZW1pY2FsXC1jb21wb3VuZDsKK+mKriA+IGJlbGxzXC1odW5nXC1vblwtaG9yc2U7CivnrLMgPiBhXC1yZWVkXC1sZWFmXC13aGlzdGxlOwor6JaPID4gc2VlZFwtb2ZcLWpvYicnc1wtdGVhcnM7Civmgp0gPiB0b1wtbGF1Z2hcLWF0XC10b1wtcGl0eTsKK+ixhyA+IGFcLXNtYWxsXC1raWRuZXlcLWJlYW47CivmoYkgPiBldWNhbHlwdHVzXC1nbG9idWx1czsKK+i5gSA+IHRvXC13YWxrXC13aXRoXC1hXC1saW1wOwor6IWIID4gYW5cLW9yZ2FuaWNcLWNvbXBvdW5kOwor6J6fID4ga2luZFwtb2ZcLWNhdGVycGlsbGFyOwor5rOuID4gemhvdVwtZHluYXN0eVwtc2Nob29sOwor6bKzID4gdGhlXC1zaWx2ZXJ5XC1wb21mcmV0Owor6ZyqID4gbG9uZ1wtYW5kXC1oZWF2eVwtcmFpbjsKK+aemCA+IHRoZVwtaGFuZGxlXC1vZlwtdG9vbHM7Civmu7kgPiB0aGVcLWJhbmtcLW9mXC1hXC1zdGVhbTsKK+W9syA+IHN0ZXBcLXdpdGhcLWxlZnRcLWZvb3Q7Civkuo0gPiB0b1wtdGFrZVwtc21hbGxcLXN0ZXBzOwor56CYID4gYVwta2luZFwtb2ZcLWZhcm1cLXRvb2w7CivmoI4gPiBjaGVzdG51dFwtbGVhdmVkXC1vYWs7CivpuYcgPiB0aGVcLXNpbHZlclwtcGhlYXNhbnQ7Civoi4wgPiBhdmVycmhvcmFcLWNhcmFtYm9sYTsKK+mDmyA+IG91dGVyXC13YWxsc1wtb2ZcLWNpdHk7CivphqIgPiBtaW5jZWRcLXBpY2tsZWRcLW1lYXQ7CivnnJogPiBkaXNlYXNlXC1vZlwtdGhlXC1leWVzOwor6ICxID4gYVwta2luZFwtb2ZcLWZhcm1cLXRvb2w7Civoo4kgPiBzXC1zZWFtXC1pblwtYVwtZ2FybWVudDsKK+W0piA+IGFcLW1vdW50YWluXC1pblwta2Fuc3U7CivlhZUgPiBhXC1mZW1hbGVcLXJoaW5vY2Vyb3M7CivpuJIgPiB0aGVcLWVhc3Rlcm5cLWphY2tkYXc7Civpt7MgPiB0aGVcLXNpbHZlclwtcGhlYXNhbnQ7CivptrIgPiBzaWJlcmlhblwtZmx5Y2F0Y2hlcjsKK+mwtiA+IGtvbm9zaXJ1c1wtcHVuY3RhdHVzOwor6a+nID4gdGhlXC1zaWx2ZXJ5XC1wb21mcmV0Owor6a+lID4gcG9tYXRvbXVzXC1zYWx0YXRyaXg7Civpr5UgPiBjb3J5cGhhZW5hXC1oaXBwdXJ1czsKK+mutiA+IHNlYmFzdG9kZXNcLWd1bnRoZXJpOwor6aefID4gdGVhbVwtb2ZcLWZvdXJcLWhvcnNlczsKK+mliyA+IG9mZmVyXC1mb29kXC1zdXBlcmlvcjsKK+mjgiA+IHdpbmRcLWluXC1oaWdoXC1wbGFjZXM7Civpor4gPiBibG93aW5nXC1vZlwtdGhlXC13aW5kOwor6aCWID4gemhvdVwtZHluYXN0eVwtc2Nob29sOwor6aCNID4gdG9cLXJhaXNlXC1vbmUnJ3NcLWhlYWQ7Civpn5ggPiBhcmNoZXInJ3NcLXRodW1iXC1yaW5nOwor6Z6sID4gYVwtcXVpdmVyXC1vblwtYVwtaG9yc2U7CivpnLYgPiBkb3ducG91cmluZ1wtb2ZcLXJhaW47CivpnK4gPiBkZW5zZW5lc3NcLW9mXC1jbG91ZHM7Civpkb4gPiBiZWxsc1wtaHVuZ1wtb25cLWhvcnNlOwor6ZG0ID4gdG9cLWVuZ3JhdmVcLW9yXC1jYXJ2ZTsKK+mOhCA+IGlyaWRpdW1cLWVpbnN0ZWluaXVtOwor6YuRID4gdG9cLWVuZ3JhdmVcLW9yXC1jYXJ2ZTsKK+mIgyA+IGFuY2llbnRcLXdpbmVcLXZlc3NlbDsKK+mFpyA+IHRvXC1wbGVkZ2VcLXdpdGhcLXdpbmU7CivphJQgPiB2YXJpb3VzXC1wbGFjZVwtbmFtZXM7CivopbQgPiBhXC1vbmVcLXBpZWNlXC1nYXJtZW50Owor6KSDID4gYVwtc2VhbVwtaW5cLWFcLWdhcm1lbnQ7CivooLAgPiBjZXJhbWJ5eFwtcnVnaWNvbGxpczsKK+ifqCA+IHRoZVwtc2liZXJpYW5cLWplcmJvYTsKK+idnSA+IHRoZVwtbGFydmFcLW9mXC1sb2N1c3Q7CivolIogPiBuYXN0dXJ0aXVtXC1tb250YW51bTsKK+iThyA+IGZvbGxpY2xlc1wtb2ZcLXBsYW50czsKK+iSiCA+IGFuXC1vcmdhbmljXC1jb21wb3VuZDsKK+iRhyA+IGVsc2hvbHRyaWFcLXBhbHRyaW5pOwor6JCHID4gYXZlcnJob3JhXC1jYXJhbWJvbGE7CivojpUgPiBueW1waG9pZGVzXC1wZWx0YXR1bTsKK+iMsyA+IGN5cGVydXNcLW1hbGFjY2Vuc2lzOwor6IyaID4gYW5cLW9yZ2FuaWNcLWNvbXBvdW5kOwor6IuzID4gcGV0YXNpdGVzXC1qYXBvbmljdXM7Civoi4ogPiBhblwtb3JnYW5pY1wtY29tcG91bmQ7CivoiasgPiBib3dcLW9yXC1wcm93XC1vZlwtYm9hdDsKK+iIuyA+IGJvd1wtb3JcLXByb3dcLW9mXC1ib2F0Owor6IiuID4gYm93XC1vclwtcHJvd1wtb2ZcLWJvYXQ7Civohr4gPiBtaW5jZWRcLW1lYXRcLW9yXC1maXNoOwor6IWZID4gYW5cLW9yZ2FuaWNcLWNvbXBvdW5kOwor6ISOID4gYW5cLW9yZ2FuaWNcLWNvbXBvdW5kOwor6IOpID4gYW5cLW9yZ2FuaWNcLWNvbXBvdW5kOwor6IK8ID4gYW5cLW9yZ2FuaWNcLWNvbXBvdW5kOwor6IKfID4gYW5cLW9yZ2FuaWNcLWNvbXBvdW5kOwor6ICiID4gYVwta2luZFwtb2ZcLWZhcm1cLXRvb2w7CivnvqIgPiBmaW5lXC13b29sZW5cLWZhYnJpY3M7CivnvpEgPiBhXC1ndWlkZVwtdG9cLWdvb2RuZXNzOwor57myID4gdG9cLXdvcmtcLWFzXC1hXC10YWlsb3I7CivntoAgPiBhXC1raW5kXC1vZlwtc2Fja2Nsb3RoOwor56uRID4gYmVcLXZhc3RcLWFuZFwtZW5kbGVzczsKK+emkyA+IHRvXC1kcml2ZVwtb3V0XC1kZW1vbnM7CivnpZAgPiBkaXZpbmVcLWludGVydmVudGlvbjsKK+egnCA+IGFuXC1vcmdhbmljXC1jb21wb3VuZDsKK+eflCA+IGJyaWxsaWFudFwtXChvZlwtZXllc1wpOwor556VID4gY2F0YXJhY3RcLWluXC10aGVcLWV5ZTsKK+arnyA+IGNoZXN0bnV0XC1sZWF2ZWRcLW9hazsKK+aqqiA+IGNoZXN0bnV0XC1sZWF2ZWRcLW9hazsKK+ahqiA+IG15dGhpY2FsXC1naWFudFwtdHJlZTsKK+afriA+IGZsYXRcLXBpZWNlc1wtb2ZcLXdvb2Q7CivmmrUgPiBkcnlcLWJ5XC1leHBvc2luZ1wtc3VuOwor5padID4gc21hbGxcLWphZGVcLXdpbmVcLWN1cDsKK+aVhCA+IHRvXC1wdXRcLWZvcnRoXC1lZmZvcnQ7Civmko0gPiB0b1wtaG9sZFwtaW5cLXRoZVwtaGFuZDsKK+aPnSA+IHRvXC1ob2xkXC1pblwtdGhlXC1oYW5kOwor5o+VID4gcm9sbFwtdXBcLXRoZVwtc2xlZXZlczsKK+WwlyA+IHlvdW5nZXJcLW9mXC1icm90aGVyczsKK+WjkCA+IHRoZVwtaW1wZXJpYWxcLXNpZ25ldDsKK+WelSA+IHVzZWRcLWluXC1wbGFjZVwtbmFtZXM7CivlnJsgPiB1c2VkXC1pblwtcGxhY2VcLW5hbWVzOwor5ZuIID4gdGFsa1wtaW5cLW9uZScnc1wtc2xlZXA7CivlmLAgPiBzaWdoXC1pblwtZGlzYXBwcm92YWw7Civllp4gPiBjaGlycGluZ1wtb2ZcLWluc2VjdHM7CivllJogPiB2b21pdGluZ1wtb2ZcLWFuaW1hbHM7Civlk4wgPiB1c2VkXC1pblwtdHJhbnNsYXRpb247CivlkbogPiB2b2ljZVwtb2ZcLWFuZ2VyXC12YXN0Owor5ZCWID4gdXNlZFwtaW5cLXRyYW5zbGF0aW9uOwor5YGYID4gYW5jaWVudFwtZmFtaWx5XC1uYW1lOwor5LavID4gdXNlZFwtaW5cLWdpcmwnJ3NcLW5hbWU7CivktpIgPiBvdXRzdGFuZGluZ1wtYWJpbGl0eTsKK+S2jCA+IGFcLXB1c3R1bGVcLW9yXC1waW1wbGU7CivktoQgPiBzdHJpcGVkXC1tb3R0bGVkXC1yYXQ7CivktbEgPiByZWRcLWFuZFwtYmxhY2tcLWNvbG9yOwor5LWuID4gcmVkXC1hbmRcLWJsYWNrXC1jb2xvcjsKK+S1lCA+IHRvXC10dXJuXC1vblwtdGhlXC1oZWVsOwor5LSqID4gYVwtZmFidWxvdXNcLWNyZWF0dXJlOwor5LSgID4gYVwteW91bmdcLXRhaWxlZFwtZGVlcjsKK+SxpyA+IGFcLWtpbmRcLW9mXC1maXNoXC1lZWxzOwor5LCcID4gYVwtbGFyZ2VcLWVhcnRoZW5cLXBvdDsKK+SwmyA+IGFcLWxhcmdlXC1lYXJ0aGVuXC1wb3Q7CivkrrcgPiBtb3ZlbWVudFwtb2ZcLWFcLWhvcnNlOwor5K6DID4gdG9cLWdvXC1iZWZvcmVcLW90aGVyczsKK+StuSA+IG1vdmVtZW50XC1vZlwtYVwtaG9yc2U7Civkq7EgPiBhXC1wYXJ0XC1vZlwtdGhlXC1za3VsbDsKK+SrqSA+IHRvXC1zaGFrZVwtb25lJydzXC1oZWFkOwor5KuFID4gdG9cLXNoYWtlXC1vbmUnJ3NcLWhlYWQ7Civkqr8gPiB0aGVcLXRvcFwtb2ZcLXRoZVwtaGVhZDsKK+SqvSA+IGhvYXJ5XC1oYWlyZWRcLXBlcnNvbjsKK+SptyA+IHRoZVwtc2lkZXNcLW9mXC1hXC1zaG9lOwor5KmnID4gdG9cLXRpZVwtdXBcLWh1cnJpZWRseTsKK+SpjCA+IHRvXC1oYXZlXC1hXC13b3JuXC1sb29rOwor5KeUID4gdG9cLW1lZXRcLWF0XC10aGVcLWJhbms7CivkppkgPiBhXC1nb3Zlcm5tZW50XC1hZ2VuY3k7CivkpbQgPiB0b1wtZW5ncmF2ZVwtb3JcLWNhcnZlOwor5KWnID4gYVwtZmluZVwta2luZFwtb2ZcLWphZGU7CivkpIYgPiBhXC1raW5kXC1vZlwtcmljZVwtd2luZTsKK+SkgSA+IGNvb2tlZFwtb3JcLXdlbGxcLWRvbmU7Civko60gPiBhblwtb3JnYW5pY1wtY29tcG91bmQ7CivkoosgPiBhXC1tYXJzaGFsXC1vclwtaGVyYWxkOwor5KCKID4gdG9cLWN1dFwtb2ZmXC10aGVcLWZlZXQ7Civkn6MgPiBhblwtYW5pbWFsXC1pblwtbGVnZW5kOwor5J6zID4gdG9cLXN0dW1ibGVcLWFuZFwtZmFsbDsKK+SdoCA+IGFcLWtpbmRcLW9mXC13aWxkXC1ib2FyOwor5Jy2ID4gYVwtc21hbGxcLWtpZG5leVwtYmVhbjsKK+ScgSA+IHRvXC1hYnVzZVwtYW5kXC1pbnN1bHQ7CivkmZIgPiB0b1wtc3RvcmVcLW9yXC1zYXZlXC11cDsKK+SZjyA+IHNob3J0XC1zbGVldmVzXC1zaGlydDsKK+SZgSA+IGNoaWxkcmVuJydzXC1nYXJtZW50czsKK+SYqiA+IGNsb3RoZXNcLXdpdGhvdXRcLWhlbTsKK+SWoiA+IGZpcnN0XC1ib3JuXC1zaWxrd29ybTsKK+SWliA+IHRvXC1zaG93XC1mYW1pbGlhcml0eTsKK+SVviA+IGFcLWtpbmRcLW9mXC12ZWdldGFibGU7CivklZ8gPiBhXC1raW5kXC1vZlwtdmVnZXRhYmxlOwor5JWYID4gYVwtdmFyaWV0eVwtb2ZcLWZ1bmd1czsKK+SVgyA+IHRoZVwtc2hhZGVcLW9mXC1hXC10cmVlOwor5JSXID4gYVwta2luZFwtb2ZcLXZlZ2V0YWJsZTsKK+STtyA+IG55bXBob2lkZXNcLXBlbHRhbHVtOwor5JOaID4gYVwta2luZFwtb2ZcLXZlZ2V0YWJsZTsKK+STjSA+IGNydWNpZmVyb3VzXC1mbG93ZXJzOwor5JKoID4gYVwta2luZFwtb2ZcLXZlZ2V0YWJsZTsKK+SSiCA+IHNpZGVcLWJlYW1cLW9mXC1hXC1ib2F0Owor5JKAID4gc2hvcnRcLWFuZFwtZGVlcFwtYm9hdDsKK+SRhyA+IG1lZGljaW5lXC1mb3JcLWFcLXNvcmU7CivkkK0gPiBhXC1kaXNjaGFyZ2VcLW9yXC1mbHV4Owor5I+5ID4gdG9cLXdhdGNoXC1zdGVhbHRoaWx5Owor5I+3ID4gbWVkaWNpbmVcLWZvclwtYVwtc29yZTsKK+SPqCA+IHRvXC1zd2VsbFwtdXBcLWdyZWF0bHk7Civkj4YgPiBidXp6aW5nXC1pblwtdGhlXC1lYXJzOwor5I6/ID4gYnV6emluZ1wtaW5cLXRoZVwtZWFyczsKK+SNtyA+IHRvXC1jaGFzZVwtZWFjaFwtb3RoZXI7CivkjYAgPiBjbG90aGVzXC13aXRob3V0XC1oZW07CivkjI4gPiB0b1wtYmFzdGVcLWZvclwtc2V3aW5nOwor5Iu5ID4gYnJlYWR0aFwtb2ZcLW1hdGVyaWFsOwor5IuwID4gdG9cLWJpbmRcLW9yXC1yZXN0cmFpbjsKK+SKmSA+IGNvb2tlZFwtb3JcLXdlbGxcLWRvbmU7Civkh70gPiBhXC1jb2Fyc2VcLWJhbWJvb1wtbWF0Owor5IavID4gYVwtc2hvcnRcLXNoYXBlZFwtZmFjZTsKK+SFryA+IGFcLXZhcmlldHlcLW9mXC1taWxsZXQ7CivkhZ8gPiB2YXJpZXRpZXNcLW9mXC1taWxsZXQ7CivkhZUgPiBhXC12YXJpZXR5XC1vZlwtbWlsbGV0Owor5IWSID4gYVwtc2hhcnBcLWVkZ2VkXC1ncmFzczsKK+SBiyA+IHdpdGhcLW9uZVwtZXllXC1jbG9zZWQ7CivkgYMgPiB0b1wtbG9va1wtYXR0ZW50aXZlbHk7CivkgKQgPiBpbnNpZ2h0XC1vZlwtamVhbG91c3k7CivkgKMgPiB0b1wtbG9va1wtc3RlYWRpbHlcLWF0Owor47+TID4gZGlzZWFzZVwtb2ZcLXRoZVwtaG9vZjsKK+O+uyA+IG5vdFwtYW55XC1wcm9ncmVzc2l2ZTsKK+O+tiA+IGRpc2Vhc2VcLW9mXC10aGVcLWtuZWU7CivjvqIgPiBhXC1tYWxpZ25hbnRcLWRpc2Vhc2U7Civjva0gPiB2YWNhbnRcLWxvdFwtb3JcLXNwYWNlOwor472MID4gdGhlXC1yaWRnZVwtb2ZcLWFcLXJvb2Y7CivjvYIgPiBhXC1jcmFja2VkXC1jb250YWluZXI7CivjvYEgPiBhXC1sYXJnZVwtZWFydGhlblwtcG90Owor47yZID4gYnJpY2t3b3JrXC1vZlwtYVwtd2VsbDsKK+O8kiA+IGFcLWtpbmRcLW9mXC1iaWdcLW1lbG9uOwor47i2ID4gY29sb3JcLW9mXC10aGVcLW94dGFpbDsKK+O4tSA+IHRoZVwtbG93aW5nXC1vZlwtYW5cLW94Owor47ilID4gaG91c2Vob2xkXC1yZWdpc3RlcnM7CivjuKIgPiBjcm9zc1wtYmVhbVwtb2ZcLWFcLWJlZDsKK+O4niA+IGJsb2Nrc1wtZm9yXC1wcmludGluZzsKK+O4kyA+IHRvXC1oYXZlXC1kaXNhcHBlYXJlZDsKK+O4jyA+IGNvb2tlZFwtb3JcLXdlbGxcLWRvbmU7CivjuIAgPiBibGFja2VuZWRcLXdpdGhcLXNvb3Q7Civjt6QgPiByb3N5XC1jbG91ZHNcLW9mXC1kYXduOwor47KHID4gdGhlXC1yYXR0bGVcLW9mXC1kcnVtczsKK+OxviA+IGFcLWtpbmRcLW9mXC1vcm5hbWVudHM7CivjsbwgPiBhXC1raW5kXC1vZlwtb3JuYW1lbnRzOwor47G5ID4gdG9cLWRpZVwtZnJvbVwtZGlzZWFzZTsKK+OxqyA+IGRlc3Ryb3llZFwtb3JcLXJ1aW5lZDsKK+OxqiA+IHN0dXBpZFwtYW5kXC1jb25mdXNlZDsKK+OxiiA+IGFzdGhtYXRpY1wtYnJlYXRoaW5nOwor47GJID4gbW92aW5nXC1vZlwtdGhlXC1tb3V0aDsKK+OwtCA+IHRvXC1ncmF0ZVwtb25cLXRoZVwtZWFyOwor47CwID4gYXN0aG1hdGljXC1icmVhdGhpbmc7CivjsK8gPiB0aGVcLXdheVwtb2ZcLXNwZWFraW5nOwor46+BID4gaG91c2Vob2xkXC1yZWdpc3RlcnM7Civjq68gPiBpblwtY29udHJhdmVudGlvblwtb2Y7CivjqaYgPiB0b1wtbGVhZFwtYnlcLXRoZVwtaGFuZDsKK+OpmCA+IHRvXC1tb29yXC10b1wtdGhlXC1iYW5rOwor46mXID4gdG9cLWxlYWRcLWJ5XC10aGVcLWhhbmQ7CivjqJ0gPiB0aGVcLXZlcnlcLWhhcmRcLXN0dWZmOwor46iAID4gdG9cLWhvbGRcLWluXC10aGVcLWhhbmQ7Civvp54gPiBnb3Zlcm5tZW50XC1vZmZpY2lhbDsKK+OnhSA+IHRvXC10dXJuXC11cHNpZGVcLWRvd247Civvpq8gPiBzcGVjaWVzXC1vZlwtYW50ZWxvcGU7CivjppMgPiBkaWZmaWN1bHRcLWludGVudGlvbjsKK+OlnSA+IHRvXC1hcm91c2VcLXRvXC1hY3Rpb247CivjooogPiB0b1wtc2V0XC1zaWRlXC1ieVwtc2lkZTsKK+OigiA+IG9mXC1oaWdobHlcLXN0cmF0ZWdpYzsKK+OfsSA+IHNoYXBlXC1vZlwtYVwtbW91bnRhaW47Civjn5MgPiBsb2Z0eVwtYW5kXC1kYW5nZXJvdXM7Civjn5IgPiBtb3VudGFpbnNcLWFkam9pbmluZzsKK+OdnyA+IGluXC1jb250cmF2ZW50aW9uXC1vZjsKK+OcsSA+IHVzZWRcLWluXC1naXJsJydzXC1uYW1lOwor45ymID4gdXNlZFwtaW5cLWdpcmwnJ3NcLW5hbWU7CivjnKEgPiB1c2VkXC1pblwtZ2lybCcnc1wtbmFtZTsKK+OcoCA+IHVzZWRcLWluXC1naXJsJydzXC1uYW1lOwor45yZID4gdXNlZFwtaW5cLWdpcmwnJ3NcLW5hbWU7CivjnJAgPiB1c2VkXC1pblwtZ2lybCcnc1wtbmFtZTsKK+OcjSA+IHVzZWRcLWluXC1naXJsJydzXC1uYW1lOwor45yLID4gdXNlZFwtaW5cLWdpcmwnJ3NcLW5hbWU7CivjnIIgPiB1c2VkXC1pblwtZ2lybCcnc1wtbmFtZTsKK+ObuCA+IHVzZWRcLWluXC1naXJsJydzXC1uYW1lOwor45u3ID4gdXNlZFwtaW5cLWdpcmwnJ3NcLW5hbWU7Civjm7UgPiB1c2VkXC1pblwtZ2lybCcnc1wtbmFtZTsKK+ObrSA+IHVzZWRcLWluXC1naXJsJydzXC1uYW1lOwor45usID4gdXNlZFwtaW5cLWdpcmwnJ3NcLW5hbWU7Civjm6sgPiB1c2VkXC1pblwtZ2lybCcnc1wtbmFtZTsKK+ObniA+IHVzZWRcLWluXC1naXJsJydzXC1uYW1lOwor45udID4gdXNlZFwtaW5cLWdpcmwnJ3NcLW5hbWU7Civjm5wgPiB1c2VkXC1pblwtZ2lybCcnc1wtbmFtZTsKK+ObmSA+IHVzZWRcLWluXC1naXJsJydzXC1uYW1lOwor45uYID4gdXNlZFwtaW5cLWdpcmwnJ3NcLW5hbWU7Civjm5YgPiB1c2VkXC1pblwtZ2lybCcnc1wtbmFtZTsKK+ObkyA+IHVzZWRcLWluXC1naXJsJydzXC1uYW1lOwor45uPID4gdXNlZFwtaW5cLWdpcmwnJ3NcLW5hbWU7Civjm4UgPiB1c2VkXC1pblwtZ2lybCcnc1wtbmFtZTsKK+ObhCA+IHVzZWRcLWluXC1naXJsJydzXC1uYW1lOwor45q9ID4gdXNlZFwtaW5cLWdpcmwnJ3NcLW5hbWU7CivjmrggPiB1c2VkXC1pblwtZ2lybCcnc1wtbmFtZTsKK+OatSA+IHVzZWRcLWluXC1naXJsJydzXC1uYW1lOwor45qxID4gdXNlZFwtaW5cLWdpcmwnJ3NcLW5hbWU7Civjmq0gPiB1c2VkXC1pblwtZ2lybCcnc1wtbmFtZTsKK+OaqyA+IHVzZWRcLWluXC1naXJsJydzXC1uYW1lOwor45qoID4gdXNlZFwtaW5cLWdpcmwnJ3NcLW5hbWU7CivjmKsgPiB0b1wtZmFsbFwtaW50b1wtYVwtd2VsbDsKK+OXtiA+IHRvXC1leHBlbFwtdGhlXC1icmVhdGg7CivjlqogPiBzb3VuZFwtb2ZcLXN1cnByaXNpbmc7CivjlLkgPiBhXC1zdXJwbHVzXC1vclwtZXhjZXNzOwor45SHID4gYVwta2luZFwtb2ZcLWZhcm1cLXRvb2w7Civjk70gPiBhXC1raW5kXC1vZlwtZmFybVwtdG9vbDsKK+OTtyA+IHRvXC1jdXRcLW9mZlwtdGhlXC1ub3NlOwor45KUID4gdG9cLXNoYWtlXC1vbmUnJ3NcLWhlYWQ7CivjkoQgPiBicml0dGxlXC1hbmRcLWZyaWFibGU7CivjkoMgPiBjYXBpdGFsXC1mb3JtXC1vZlwtdHdvOwor45GbID4gdG9cLXNoYWtlXC1vbmUnJ3NcLWhlYWQ7CivnjpYgPiBibGFja1wtY29sb3JlZFwtamFkZTsKK+WTqiA+IHdoaWNoXD9cLXdoZXJlXD9cLWhvd1w/Owor54myID4gc2FjcmlmaWNpYWxcLWFuaW1hbDsKK+a8oiA+IHRoZVwtY2hpbmVzZVwtcGVvcGxlOwor5ryVID4gdHJhbnNwb3J0XC1ieVwtd2F0ZXI7CivpmLQgPiAnJ2ZlbWFsZScnXC1wcmluY2lwbGU7Civku5kgPiB0YW9pc3RcLXN1cGVyXC1iZWluZzsKK+mpuyA+IHRvXC1iZVwtc3RhdGlvbmVkXC1hdDsKK+mnkCA+IHRvXC1iZVwtc3RhdGlvbmVkXC1hdDsKK+iFriA+IGxvd2VyXC1wYXJ0XC1vZlwtZmFjZTsKK+aLkiA+IHdhcmRcLW9mZlwtd2l0aFwtaGFuZDsKK+ahgiA+IGNhc3NpYVwtb3JcLWNpbm5hbW9uOwor5py1ID4gY2x1c3Rlclwtb2ZcLWZsb3dlcnM7Civmm7kgPiBtaW5pc3RyeVwtb2ZmaWNpYWxzOwor572OID4gYW5cLWVhcnRoZW53YXJlXC1qYXI7CivpmbAgPiAnJ2ZlbWFsZScnXC1wcmluY2lwbGU7CivkuLggPiBzbWFsbFwtcm91bmRcLW9iamVjdDsKK+efqSA+IGNhcnBlbnRlcicnc1wtc3F1YXJlOwor6IWKID4geWVhclwtZW5kXC1zYWNyaWZpY2U7Civpvp8gPiB0dXJ0bGVcLW9yXC10b3J0b2lzZTsKK+mCuCA+IG9mZmljaWFsXC1yZXNpZGVuY2U7CivkvoMgPiB1cHJpZ2h0XC1hbmRcLXN0cm9uZzsKK+mCgiA+IHVuZXhwZWN0ZWRcLW1lZXRpbmc7CivmgK8gPiBsYWNraW5nXC1pblwtY291cmFnZTsKK+eUuCA+IHN1YnVyYnNcLW9mXC1jYXBpdGFsOwor5o2eID4gc2Nvb3BcLW91dFwtb2ZcLXdhdGVyOwor5ombID4gY2FycnlcLW9uXC1zaG91bGRlcnM7CivomZQgPiBhY3RcLXdpdGhcLXJldmVyZW5jZTsKK+mcliA+IGxvbmdcLXNwZWxsXC1vZlwtcmFpbjsKK+mfpyA+IHN0cm9uZ1wtYW5kXC1wbGlhYmxlOwor55G+ID4gYnJpbGxpYW5jZVwtb2ZcLWdlbXM7CivmoZQgPiBjaGluZXNlXC1iZWxsZmxvd2VyOwor6bizID4gbWFsZVwtbWFuZGFyaW5cLWR1Y2s7CivpkpcgPiBvcm5hbWVudGFsXC1oYWlycGluOwor5beFID4gc3VtbWl0XC1vZlwtbW91bnRhaW47CivmqKggPiBvc21hbnRodXNcLWZyYWdyYW5zOwor6KChID4gd29vZFwtYm9yaW5nXC1pbnNlY3Q7CivouYIgPiB0cmFtcGxlXC11bmRlclwtZm9vdDsKK+mqpSA+IHRob3JvdWdoYnJlZFwtaG9yc2U7CivllIEgPiBleHByZXNzXC1jb25kb2xlbmNlOwor6aqFID4gYW5cLWV4Y2VsbGVudFwtaG9yc2U7CivnookgPiByb29tXC1tYWRlXC1vZlwtc3RvbmU7Civnlp8gPiBpbnRlcm1pdHRlbnRcLWZldmVyOwor57qjID4gbmFtZVwtb2ZcLWFuXC1lbXBlcm9yOwor56OsID4gbXVzaWNhbFwtaW5zdHJ1bWVudDsKK+eIvyA+IGhhbGZcLW9mXC10cmVlXC10cnVuazsKK+aXjiA+IGZsdXR0ZXJpbmdcLW9mXC1mbGFnOwor5aSUID4gb25lXC1sZWdnZWRcLW1vbnN0ZXI7Civmro0gPiB0b1wtc3RhcnZlXC10b1wtZGVhdGg7CivpqoogPiBhXC1wdXJlXC1ibGFja1wtaG9yc2U7CivmuY4gPiBmbHVzaGVkXC13aXRoXC1kcmluazsKK+WWtSA+IHRoZVwtbWV3XC1vZlwtdGhlXC1jYXQ7CivnhJkgPiBkcnlcLW92ZXJcLXNsb3dcLWZpcmU7Civnu74gPiB0b1wtc3RyaW5nXC10b2dldGhlcjsKK+ecpiA+IGNvcm5lclwtb2ZcLXRoZVwtZXllczsKK+eRgSA+IGZpbmVcLXBpZWNlXC1vZlwtamFkZTsKK+ammCA+IGNhcnBlbnRlcicnc1wtc3F1YXJlOwor57KzID4gbm9uXC1nbHV0aW5vdXNcLXJpY2U7CivppK4gPiBhXC1sZWdlbmRhcnlcLWFuaW1hbDsKK+axiiA+IGFcLWJyYW5jaGluZ1wtc3RyZWFtOwor57yDID4gbGlnaHRcLXllbGxvd1wtY29sb3I7CivmqqkgPiB0aGVcLWJvbGVcLW9mXC1hXC10cmVlOwor5aWBID4gbGFkeScnc1wtdmFuaXR5XC1jYXNlOwor5qW4ID4gbWFsbG90dXNcLWphcG9uaWN1czsKK+mquiA+IHRpcFwtb2ZcLWFcLWxvbmdcLWJvbmU7Civol78gPiBsb3BoYW50aHVzXC1ydWdvc3VzOwor5qi+ID4gdGhlXC1zaGFkZVwtb2ZcLXRyZWVzOwor6YWkID4gdG9cLWRlYWxcLWluXC1zcGlyaXRzOwor6IeMID4gZHJvcHNpY2FsXC1zd2VsbGluZzsKK+i3qyA+IHNvdW5kXC1vZlwtZm9vdHN0ZXBzOwor57auID4gZW1icm9pZGVyZWRcLWJhbm5lcjsKK+insyA+IGFuXC1hbmNpZW50XC1tZWFzdXJlOwor5p2MID4gdGhlXC1zdHVtcFwtZlwtYVwtdHJlZTsKK+W1qyA+IGFcLWhpbGxcLWluXC1zaGFudHVuZzsKK+aTlyA+IHRvXC1iZWF0XC10aGVcLWJyZWFzdDsKK+iElCA+IHNtYWxsXC1sdW1wXC1vZlwtbWVhdDsKK+mGhSA+IHVuc3RyYWluZWRcLXNwaXJpdHM7CivnvrAgPiBjYXJib255bFwtXChyYWRpY2FsXCk7Civom7ggPiBsb25nXC1sZWdnZWRcLXNwaWRlcjsKK+eegCA+IHRvXC1sb29rXC1hdFwtY2xvc2VseTsKK+ausyA+IG5hbWVcLW9mXC1vbGRcLXdlYXBvbjsKK+W0niA+IG1vdW50YWluXC1pblwtc2hhbnhpOwor5Z6yID4gaGlnaFwtYW5kXC1kcnlcLXBsYWNlOwor6Jm/ID4gYVwta2luZFwtb2ZcLXNjb3JwaW9uOwor55azID4gY2hpbGRob29kXC1kaXNlYXNlczsKK+e9viA+IGFcLWxhcmdlXC1zcXVhcmVcLW5ldDsKK+eNrCA+IGFcLWZhYnVsb3VzXC1tb25zdGVyOwor6b6cID4gdHVydGxlXC1vclwtdG9ydG9pc2U7CivpvpYgPiBmbGlnaHRcLW9mXC1hXC1kcmFnb247CivpuJwgPiBhXC1zcGVjaWVzXC1vZlwtbXluYWg7Civpt70gPiBvcmllbnRhbFwtYnVsbGZpbmNoOwor6bSbID4gbWFsZVwtbWFuZGFyaW5cLWR1Y2s7CivptJcgPiBhbGNlZG9cLWJlbmdhbGVuc2lzOwor6bG1ID4gaHlwb3JoYW1wdXNcLXNhanVyaTsKK+msoCA+IHRvXC1tYWtlXC1hXC10b3BcLWtub3Q7CivpqaogPiBhXC1wdXJlXC1ibGFja1wtaG9yc2U7CivpqaUgPiB0aG9yb3VnaGJyZWRcLWhvcnNlOwor6amKID4gYW5cLWV4Y2VsbGVudFwtaG9yc2U7CivppLwgPiBzYWNyaWZpY2lhbFwtdmljdGltOwor6aGLID4gbG93ZXJcLXBhcnRcLW9mXC1mYWNlOwor6aCUID4gZ29vZFwtYW5kXC1iZWF1dGlmdWw7Civpn4wgPiBzdHJvbmdcLWFuZFwtcGxpYWJsZTsKK+mdsSA+IHN0cm9uZ1wtYW5kXC1wbGlhYmxlOwor6Z2tID4gc3Ryb25nXC1hbmRcLXBsaWFibGU7CivpnasgPiBzdHJvbmdcLWFuZFwtcGxpYWJsZTsKK+mHtSA+IG9ybmFtZW50YWxcLWhhaXJwaW47Civph5IgPiBrYW5neGlcLXJhZGljYWxcLTE2NzsKK+mEriA+IGFuY2llbnRcLXBsYWNlXC1uYW1lOwor6L2ZID4gcmluZ3NcLW9uXC10aGVcLXlva2VzOwor6LuwID4gYVwtcm93XC1vZlwtY2FycmlhZ2VzOwor6LC9ID4gYVwtbW91dGhcLW9yXC1vcGVuaW5nOwor6KiBID4ga2FuZ3hpXC1yYWRpY2FsXC0xNDk7CivopbUgPiBhXC1wbGVhdFwtaW5cLWFcLXNraXJ0Owor6KSwID4gbGlmdFwtdXBcLXRoZVwtc2tpcnRzOwor6KCGID4gYVwta2luZFwtb2ZcLXNjb3JwaW9uOwor6Jq5ID4gZXVsb3RhXC1wZWxpb21waGFsYTsKK+iYtyA+IG9uZVwtbGVnZ2VkXC1tb25zdGVyOwor6Ja3ID4gZWxzaG90cmlhXC1wYWx0cmluaTsKK+iVuiA+IGhvdXR0dXluaWFcLWNvcmRhdGE7Civok7QgPiBlZGlibGVcLXdhdGVyXC1wbGFudDsKK+iRtCA+IHBoeXNhbGlzXC1hbGtla2VuZ2k7CivojYUgPiBhbnN3ZXJcOlwtc21hbGxcLWJlYW47CivojJYgPiBhbGxpdW1cLXZpY3RvcmlhbGlzOwor6IqjID4gbWVkaWNpbmFsXC1wbGFudGFnbzsKK+iHoCA+IHNtYWxsXC1sdW1wXC1vZlwtbWVhdDsKK+iHmCA+IHllYXJcLWVuZFwtc2FjcmlmaWNlOwor6IeIID4geWVhclwtZW5kXC1zYWNyaWZpY2U7Civnv68gPiBnbGlzdGVuaW5nXC1wbHVtYWdlOwor57+WID4ga3NjXC1leHRlbnNpb25cLTMxMDg7CivnvqcgPiBjYXJib3h5bFwtXChyYWRpY2FsXCk7CivnvYggPiBhblwtZWFydGhlbndhcmVcLWphcjsKK+e3lyA+IGxpZ2h0XC15ZWxsb3dcLWNvbG9yOwor57awID4gdG9cLXN0cmluZ1wtdG9nZXRoZXI7CivntIIgPiBuYW1lXC1vZlwtYW5cLWVtcGVyb3I7Civns5IgPiBmb29kXC1mb3JcLWFcLWpvdXJuZXk7CivnqIkgPiBub25cLWdsdXRpbm91c1wtcmljZTsKK+enlCA+IG5vblwtZ2x1dGlub3VzXC1yaWNlOwor56KeID4gcm9vbVwtbWFkZVwtb2ZcLXN0b25lOwor55qqID4gbHVzdGVyXC1cKG9mXC1wZWFybHNcKTsKK+eYpyA+IGludGVybWl0dGVudFwtZmV2ZXI7Civnl5wgPiBhXC1zY2FiYnlcLWJhbGRcLWhlYWQ7CivnlL8gPiBmYXJtaW5nXC1wb3B1bGF0aW9uOwor55SLID4gYVwtamFyXC13aXRob3V0XC1lYXJzOwor55CkID4gamFkZVwtb2ZcLWphZGVcLWJlaW5nOwor546YID4gY291cnRcLWRyZXNzXC1qZXdlbHM7CivnjbMgPiBmaWVyY2VcLWRvZ1wtbG9va2luZzsKK+eFjSA+IHRvXC1jb2xvdXJcLWJ5XC1zbW9rZTsKK+eBpSA+IGFcLWdyb3VwXC1vZlwtc3ByaW5nczsKK+azsiA+IGtpbmRcLW9mXC13aGl0ZVwtd2luZTsKK+awjSA+IGZpbmVcLXdvb2xsZW5cLWNsb3RoOwor5qqBID4gdGhlXC1ib2xlXC1vZlwtYVwtdHJlZTsKK+afuiA+IGFuXC1vbGRcLW1hbicnc1wtc3RhZmY7CivmnbsgPiBsaWd1c3RydW1cLXNpbmVuZXNlOwor5p2ZID4gYVwtdGlueVwtd29vZGVuXC1wb3N0Owor5py2ID4gY2x1c3Rlclwtb2ZcLWZsb3dlcnM7CivmmLcgPiB0b1wtZmVlZFwtYVwtcHJpc29uZXI7Civml7wgPiBnZW50bGVcLWFuZFwtYWZmYWJsZTsKK+aTrSA+IHRyYXBcLWNhdGNoXC1hbmltYWxzOwor5pKIID4gc2Nvb3BcLW91dFwtb2ZcLXdhdGVyOwor5b2EID4gbm9ja1wtYXRcLWVuZFwtb2ZcLWJvdzsKK+W3lCA+IHN1bW1pdFwtb2ZcLW1vdW50YWluOwor5beTID4gc3VtbWl0XC1vZlwtbW91bnRhaW47CivltqggPiBiaWdcLXJvY2t5XC1tb3VudGFpbjsKK+W1liA+IG5hbWVcLW9mXC1hXC1tb3VudGFpbjsKK+WzuSA+IG5hbWVcLW9mXC1hXC1tb3VudGFpbjsKK+WzsSA+IG5hbWVcLW9mXC1hXC1tb3VudGFpbjsKK+WyoiA+IG5hbWVcLW9mXC1hXC1tb3VudGFpbjsKK+WyjSA+IG5hbWVcLW9mXC1hXC1tb3VudGFpbjsKK+WlqSA+IGxhZHknJ3NcLXZhbml0eVwtY2FzZTsKK+WjnCA+IGVhcnRoZW5cLWphclwtb3JcLWp1ZzsKK+WisCA+IGFuXC1lYXJ0aGVud2FyZVwtamFyOwor5aKQID4gdG9cLWJ1aWxkXC13aXRoXC1zb2lsOwor5aGPID4gaGlnaFwtYW5kXC1kcnlcLXBsYWNlOwor5ZmLID4gdG9cLXN3YWxsb3dcLWhhc3RpbHk7Civlk7AgPiBpbmNvaGVyZW50XC1jaGF0dGVyOwor5YOKID4gdGFvaXN0XC1zdXBlclwtYmVpbmc7CivkvbcgPiB0b1wtYWN0XC1jb250cmFyeVwtdG87CivkuoAgPiB0dXJ0bGVcLW9yXC10b3J0b2lzZTsKK+S5kSA+IHN0YW5kXC1zaWRlXC1ieVwtc2lkZTsKK+S4rCA+IGhhbGZcLW9mXC10cmVlXC10cnVuazsKK+S2oyA+IHRvXC1ncmluZFwtdGhlXC10ZWV0aDsKK+S2nyA+IHRvXC1nbmFzaFwtdGhlXC10ZWV0aDsKK+S1lSA+IGFcLXZhcmlldHlvZlwtbWlsbGV0Owor5LSxID4gY2FrZXNcLWFuZFwtYmlzY3VpdHM7CivktKYgPiBhXC1sZWdlbmRhcnlcLWFuaW1hbDsKK+SzqCA+IHRoZVwtZmVtYWxlXC1waG9lbml4Owor5LOUID4gYVwtcGlnZW9uXC1saWtlXC1iaXJkOwor5LOOID4gYVwtcGlnZW9uXC1saWtlXC1iaXJkOwor5LGzID4gYVwta2luZFwtb2ZcLXN0dXJnZW9uOwor5LGjID4gYVwtbG9uZ1wtbmFycm93XC1maXNoOwor5LCqID4gbWlzY2hpZXZvdXNcLXNwaXJpdDsKK+SwqCA+IG1pc2NoaWV2b3VzXC1zcGlyaXQ7Civkr7EgPiB0aGVcLWhhaXJcLXN0YW5kc1wtdXA7Civkr48gPiB0aGVcLXNob3VsZGVyXC1ibGFkZTsKK+SviyA+IHRoZVwtc2hvdWxkZXJcLWJsYWRlOwor5K6lID4gY29sb3JcLW9mXC10aGVcLWhvcnNlOwor5K6dID4gYVwtbGVnZW5kYXJ5XC1hbmltYWw7CivkrbAgPiBzdHJvbmdcLXN3ZWV0XC1zbWVsbDsKK+StryA+IHN0cm9uZ1wtc3dlZXRcLXNtZWxsOwor5K2LID4gdG9cLWVhdFwtdG9cLXRoZVwtZnVsbDsKK+StgyA+IHRvXC1lYXRcLXRvXC10aGVcLWZvb2w7CivkrL4gPiBjYWtlc1wtYW5kXC1iaXNjdWl0czsKK+SstCA+IGZvZGRlclwtZm9yXC1hbmltYWxzOwor5KysID4gdG9cLWVhdFwtdG9cLXRoZVwtZnVsbDsKK+SsqCA+IHRvXC1lYXRcLXRvXC10aGVcLWZ1bGw7CivkrKcgPiByb3VuZFwtc2hhcGVkXC1jYWtlczsKK+SrkCA+IHRvXC1iZW5kXC1vbmUnJ3NcLWhlYWQ7CivkqowgPiBjdXNoaW9uXC1mb3JcLXNhZGRsZTsKK+SohiA+IGFcLWtpbmRcLW9mXC1waGVhc2FudDsKK+SnvCA+IHRoZVwtdGhlXC1zbm93XC1nb29zZTsKK+SnpiA+IG5hbWVcLW9mXC1hXC1oaWxsc2lkZTsKK+SnhyA+IG5hbWVcLW9mXC1hXC1oaWxsc2lkZTsKK+SmriA+IGRvb3JcLW9mXC10aGVcLWNlbnRlcjsKK+SmkiA+IHRoZVwtZG9vclwtaXNcLWNsb3NlZDsKK+SmkCA+IHRoZVwtYm9sdFwtb2ZcLWFcLWRvb3I7CivkpbMgPiBhXC1jaGVtaWNhbFwtZWxlbWVudDsKK+SlsiA+IGFcLWNoZW1pY2FsXC1lbGVtZW50Owor5KWeID4gdG9cLWN1dFwtd2l0aFwtc2hlYXJzOwor5KWdID4gZGVzcGVyYXRlXC1maWdodGluZzsKK+SkhCA+IGZsdXNoZWRcLXdpdGhcLWRyaW5rOwor5KO6ID4gZmlsdHJhdGVkXC10aGVcLXdpbmU7Civko4AgPiBuYW1lXC1vZlwtYVwtbW91bnRhaW47CivkoaAgPiBzdHJvbmdcLWFuZFwtZHVyYWJsZTsKK+ShmyA+IG5hbWVcLW9mXC1hXC1jYXJyaWFnZTsKK+SgpyA+IGhhcmRcLXRvXC1nb1wtZm9yd2FyZDsKK+SgoSA+IHNvdW5kXC1vZlwtZm9vdHN0ZXBzOwor5J+dID4gdG9cLXdhbGtcLXJpZ2h0XC1pbnRvOwor5J2eID4gbmFtZVwtb2ZcLWFcLWltbW9ydGFsOwor5JuJID4gdG9cLWluZHVjZVwtYnlcLXdvcmRzOwor5JqnID4gY3VydmVkXC13aXRoXC1hbmdsZXM7CivkmYMgPiBzbGVldmVsZXNzXC1jbG90aGVzOwor5JiNID4gYVwta2luZFwtb2ZcLXNjb3JwaW9uOwor5Je7ID4gYVwta2luZFwtb2ZcLXNlYVwtY3JhYjsKK+SXqCA+IGxlcHNpbWFcLXNhY2NoYXJpbmE7Civkl6MgPiBpbnNlY3RcLW9mXC1tdWxiZXJyeTsKK+SXjSA+IHdvb2RcLWJvcmluZ1wtaW5zZWN0Owor5JanID4gYVwtcG9pc29ub3VzXC1pbnNlY3Q7CivklpMgPiBvZlwtYVwtd2Fsa2luZ1wtdGlnZXI7CivklaogPiB0aGVcLXdhdGVyXC1wbGFudGFpbjsKK+SUvCA+IHNvdW5kXC1vZlwtdGhlXC1ncmFzczsKK+SUgyA+IGNvcmRhdGVcLWhvdXR0dXluaWE7Civkk6sgPiBuYW1lXC1vZlwtYVwtbW91bnRhaW47Civkk6ggPiBsb25nXC1uZWNrZWRcLWJvdHRsZTsKK+SToCA+IHRoZVwtd2F0ZXJcLXBsYW50YWluOwor5JOWID4gY25pZGl1bVwtb2ZmaWNpbmFsZTsKK+STgyA+IG1lbGFuY2hvbHlcLWFuZFwtc2FkOwor5JKdID4gcm9vdFwtb2ZcLXRoZVwtdGhhdGNoOwor5JGZID4gcHV0XC1vdXRcLXRoZVwtdG9uZ3VlOwor5JGGID4gZmVlbFwtbGlrZVwtdm9taXRpbmc7CivkkJQgPiBtdXNjbGVcLW9mXC10aGVcLWNhbGY7Civkjr4gPiBiaWdcLWFuZFwtcm91bmRcLWV5ZXM7CivkjrQgPiBhXC1sZWdlbmRhcnlcLXNwaXJpdDsKK+SOqiA+IHRoZVwtc3RhbGtcLW9mXC1ncmFpbjsKK+SOlCA+IGZpbmVcLWFuZFwtc29mdFwtaGFpcjsKK+SOjyA+IHlvdW5nXC1iaXJkc1wtZmx5aW5nOwor5I6NID4gZmluZVwtYW5kXC1zb2Z0XC1oYWlyOwor5I2pID4gdG9cLW9mZmVyXC1wcm92aXNpb247CivkjaMgPiBhXC1raW5kXC1vZlwtZmlzaFwtbmV0Owor5IyNID4gZmluZVwtd292ZW5cLXBhdHRlcm47CivkjIkgPiB0aGVcLWxhcmdlXC1vZlwtYVwtbmV0Owor5IuXID4gc3Ryb25nXC1hbmRcLWR1cmFibGU7Civki4ggPiB0b1wtYmluZFwtbG9vc2VcLWhlbXA7CivkiawgPiBjb2Fyc2VcLWJhbWJvb1wtbWF0czsKK+SIriA+IGFcLXdvdmVuXC1pbnN0cnVtZW50Owor5IezID4gYVwtbWVtb3JhZHVtXC10YWJsZXQ7CivkhqogPiBjb2xvclwtb2ZcLXRoZVwtbGlnaHQ7CivkhqUgPiB0b1wtcGllcmNlXC10aHJvdWdoajsKK+SGpCA+IHRvXC1waWVyY2VcLXRocm91Z2hqOwor5IaRID4gYVwtbGl0dGxlXC1wcm90cnVkZWQ7Civkhb0gPiBmcmFncmFuY2VcLW9yXC1hcm9tYTsKK+SFsSA+IHRvXC1lYXRcLXRvXC10aGVcLWZ1bGw7CivkhacgPiBmaW5lXC1yaWNlXC1zZWVkbGluZzsKK+SFnSA+IHRoZVwtc3RhbGtcLW9mXC1ncmFpbjsKK+SFnCA+IHRvXC1zdG9yZVwtdXBcLWdyYWluczsKK+SFgCA+IHRoZVwtc3RhbGtcLW9mXC1ncmFpbjsKK+SEmiA+IHRvXC13b3JzaGlwXC10aGVcLWdvZDsKK+SDvSA+IG5hbWVcLW9mXC1hXC1tb3VudGFpbjsKK+SDnCA+IGFcLWZpbmVcLWJsYWNrXC1zdG9uZTsKK+SBiiA+IGRhcmtcLWFuZFwtZGVlcFwtZXllZDsKK+SAniA+IHdpdGhcLWhlYXZ5XC1leWVsaWRzOwor5ICXID4gdG9cLWxvb2tcLWFza2FuY2VcLWF0Owor47+MID4gbHVtcFwtaW5cLXRoZVwtdGhyb2F0Owor47yjID4gYnJpY2tzXC1vZlwtdGhlXC13ZWxsOwor47yHID4gZmluZVwtamFkZVwtb3JcLWFnYXRlOwor47uXID4gYVwtc3RyaW5nXC1vZlwtcGVhcmxzOwor47uKID4gYVwtcmVkXC1jb2xvcmVkXC1qYWRlOwor47uFID4gamFkZVwtZGVjb3JhdGVkXC1jYXA7CivjuqcgPiBhXC13aGl0ZVwteWVsbG93XC1kb2c7CivjuaQgPiBsYWNraW5nXC1pblwtY291cmFnZTsKK+O4vSA+IGFcLXR3b1wteWVhcnNcLW9sZFwtb3g7CivjuKwgPiBhXC10d29cLXllYXJzXC1vbGRcLW94Owor47iIID4gc2NvcmNoZWRcLW9yXC1idXJuZWQ7Civjt7MgPiBjb2xvclwtb2ZcLXRoZVwtZmxhbWU7Civjt6IgPiBidW5kbGVcLW9mXC1jaGFyY29hbDsKK+O3oCA+IGFcLXdpbGxcLW8nJ1wtdGhlXC13aXNwOwor47a2ID4gc2NvcmNoZWRcLW9yXC1idXJuZWQ7CivjtZMgPiB0aGVcLXdhdGVyXC1pc1wtY2xlYXI7CivjtL4gPiBzd2VsbGluZ1wtb3JcLXJpc2luZzsKK+OzgiA+IHRvXC1mb2xsb3dcLWFcLWNvdXJzZTsKK+OyoSA+IHRoaWNrXC1jb2F0XC1vZlwtaGFpcjsKK+OylyA+IHRvXC1zbW9vdGhcLXRoZVwtaGFpcjsKK+OvtiA+IHRoZVwtY29pclwtcGFsbVwtdHJlZTsKK+OvsiA+IGFcLXdvb2RlblwtZnJhbWV3b3JrOwor46+bID4gZ291cmRcLXNoYXBlZFwtZGF0ZXM7CivjrrsgPiB0b1wtc2NyYXRjaFwtbGlnaHRseTsKK+OujSA+IGFtZW1vcmFuZHVtXC10YWJsZXQ7CivjraggPiB0aGVcLWNvY29hXC1udXRcLXBhbG07CivjraEgPiBuYW1lXC1vZlwtYVwtbW91bnRhaW47CivjrZ0gPiBuYW1lXC1vZlwtYVwtcGF2aWxpb247CivjrLQgPiB0aGVcLW1vb25cLWlzXC1kaW1tZWQ7CivjrJIgPiB0aGVcLXN1blwtYXJlXC1kaW1tZWQ7CivjrI4gPiBtb3Rlc1wtaW5cLWFcLXN1bmJlYW07Civjq6YgPiBvZlwtbG9va1wtb2ZcLXRoZVwtc3VuOwor46ueID4gb2ZcLWxvb2tcLW9mXC10aGVcLXN1bjsKK+OquCA+IHRvXC1maWxsXC1hXC1jdXBcLXdpdGg7CivjqYMgPiB0b1wtdGFrZVwtb3JcLWNhcHR1cmU7CivjqL0gPiB0b1wtY3V0XC1vclwtcmlwXC1vcGVuOwor46ihID4gdG9cLXB1c2hcLXdpdGhcLWhhbmRzOwor46icID4gdG9cLWhlbHBcLWVhY2hcLW90aGVyOwor76eIID4gbGlndXN0cnVtXC1zaW5lbmVzZTsKK+OngCA+IHRoZVwtYm9sdFwtb2ZcLWFcLWRvb3I7Civjpr4gPiB0aGVcLWJvbHRcLW9mXC1hXC1kb29yOwor76aHID4gYVwtcHVyZVwtYmxhY2tcLWhvcnNlOwor46W4ID4gdG9cLXN5bXBhdGhpemVcLXdpdGg7CivjpaggPiB1bmhhcHB5XC1kaXNwbGVhc2VkOwor46SqID4gdG9cLWZpbmRcLWZhdWx0XC13aXRoOwor76SmID4geWVhclwtZW5kXC1zYWNyaWZpY2U7CivvpIggPiB0dXJ0bGVcLW9yXC10b3J0b2lzZTsKK++khyA+IHR1cnRsZVwtb3JcLXRvcnRvaXNlOwor46OMID4gdG9cLWpvaW5cLXR3b1wtdGhpbmdzOwor46GvID4gd2FsbFwtb2ZcLWFcLWJ1aWxkaW5nOwor46CmID4gbmFtZVwtb2ZcLWFcLW1vdW50YWluOwor46CgID4gbmFtZVwtb2ZcLWFcLW1vdW50YWluOwor46CTID4gbmFtZVwtb2ZcLWFcLW1vdW50YWluOwor46CPID4gbmFtZVwtb2ZcLWFcLW1vdW50YWluOwor46CGID4gbmFtZVwtb2ZcLWFcLW1vdW50YWluOwor45+zID4gbmFtZVwtb2ZcLWFcLW1vdW50YWluOwor45+wID4gbmFtZVwtb2ZcLWFcLW1vdW50YWluOwor45+qID4gbmFtZVwtb2ZcLWFcLW1vdW50YWluOwor45+mID4gbmFtZVwtb2ZcLWFcLW1vdW50YWluOwor45+YID4gbmFtZVwtb2ZcLWFcLW1vdW50YWluOwor45+NID4gbmFtZVwtb2ZcLWFcLW1vdW50YWluOwor45+KID4gbmFtZVwtb2ZcLWFcLW1vdW50YWluOwor45+IID4gbmFtZVwtb2ZcLWFcLW1vdW50YWluOwor45+GID4gbmFtZVwtb2ZcLWFcLW1vdW50YWluOwor45+EID4gbmFtZVwtb2ZcLWFcLW1vdW50YWluOwor45+AID4gbmFtZVwtb2ZcLWFcLW1vdW50YWluOwor4567ID4gbmFtZVwtb2ZcLWFcLW1vdW50YWluOwor4560ID4gbmFtZVwtb2ZcLWFcLW1vdW50YWluOwor456zID4gbmFtZVwtb2ZcLWFcLW1vdW50YWluOwor456yID4gbmFtZVwtb2ZcLWFcLW1vdW50YWluOwor456wID4gbmFtZVwtb2ZcLWFcLW1vdW50YWluOwor456oID4gbmFtZVwtb2ZcLWFcLW1vdW50YWluOwor456mID4gbmFtZVwtb2ZcLWFcLW1vdW50YWluOwor45izID4gYVwtaGlsbG9ja1wtb3JcLW1vdW5kOwor45ixID4gdG9cLWZhbGxcLWludG9cLXJ1aW5zOwor45icID4gYVwta2luZFwtb2ZcLXNpbGt3b3JtOwor45aFID4gc291bmRcLW9mXC1hXC13aGlzdGxlOwor45aDID4gdG9cLXJvYXJcLW9mXC1hbmltYWxzOwor45SiID4gdG9cLWJyZWFrXC1zb21ldGhpbmc7Civnmr8gPiBzaGFsbG93XC1jb250YWluZXI7CivlsZMgPiBnaWdhbnRpY1wtc3RyZW5ndGg7CivmtL4gPiBzY2hvb2xcLW9mXC10aG91Z2h0Owor5aeTID4gb25lJydzXC1mYW1pbHlcLW5hbWU7CivnhY4gPiBmcnlcLWluXC1mYXRcLW9yXC1vaWw7CivopYEgPiBzd2FkZGxpbmdcLWNsb3RoZXM7Civlk4ggPiBzb3VuZFwtb2ZcLWxhdWdodGVyOwor6biaID4gc3BlY2llc1wtb2ZcLXBhcnJvdDsKK+aspyA+IHRyYW5zbGl0XC5cOlwtZXVyb3BlOwor6bWhID4gc3BlY2llc1wtb2ZcLXBhcnJvdDsKK+iuoiA+IGRyYXdcLXVwXC1hZ3JlZW1lbnQ7CivlgY8gPiBpbmNsaW5lZFwtb25lXC1zaWRlOwor5q2UID4gYmxvd1wtdGhyb3VnaFwtbm9zZTsKK+WfuSA+IGJhbmtcLXVwXC13aXRoXC1kaXJ0Owor5ryrID4gb3ZlcmZsb3dcLW9mXC13YXRlcjsKK+S+oCA+IGNoaXZhbHJvdXNcLXBlcnNvbjsKK+WnhiA+IGNoaWxkJydzXC1nb3Zlcm5lc3M7Civnm5IgPiBzbWFsbFwtYm94XC1vclwtY2FzZTsKK+WEkiA+IGNvbmZ1Y2lhblwtc2Nob2xhcjsKK+mYqiA+IGhpbGxzaWRlXC1mYXJtbGFuZDsKK+i/iCA+IHRha2VcLWFcLWJpZ1wtc3RyaWRlOwor5o2PID4gcGlja1wtd2l0aFwtZmluZ2VyczsKK+a1mSA+IHpoZWppYW5nXC1wcm92aW5jZTsKK+etpyA+IGJhbWJvb1wtd2F0ZXJcLXBpcGU7CivoiZggPiBjb3VudGVyXC1mb3JcLXNoaXBzOwor6LaBID4gdGFrZVwtYWR2YW50YWdlXC1vZjsKK+mJoiA+IGVhcnRoZW53YXJlXC1iYXNpbjsKK+iTrCA+IHR5cGVcLW9mXC1yYXNwYmVycnk7CivovpYgPiBsaW5jaHBpblwtb2ZcLXdoZWVsOwor6YCFID4gbWVldFwtdW5leHBlY3RlZGx5Owor5ZiOID4gc291bmRcLW9mXC1sYXVnaHRlcjsKK+mFoyA+IGVuam95XC1pbnRveGljYW50czsKK+mluiA+IHN0dWZmZWRcLWR1bXBsaW5nczsKK+WSjyA+IHNpbmdcLXNvbmdcLW9yXC1wb2VtOwor6ZK1ID4gZWFydGhlbndhcmVcLWJhc2luOwor5pCAID4gZ2l2ZVwtaGVscGluZ1wtaGFuZDsKK+aNtiA+IHN0cmlrZVwtd2l0aFwtc3RpY2s7CivliKggPiBjYXJwZW50ZXInJ3NcLXBsYW5lOwor6KCVID4gZXVtZW5lc1wtcG9saWZvbWlzOwor6aWoID4gc3R1ZmZlZFwtZHVtcGxpbmdzOwor5bSGID4ga29uZ3RvbmdcLW1vdW50YWluOwor55uFID4gc21hbGxcLWN1cFwtb3JcLWJvd2w7CivmooYgPiB3YXRjaG1hbicnc1wtcmF0dGxlOwor5bWHID4gbW91bnRhaW5cLWluXC1oZW5hbjsKK+iAtyA+IGVhcnNcLWhhbmdpbmdcLWRvd247CivnvowgPiBxaWFuZ1wtbmF0aW9uYWxpdHk7Civoi54gPiBhXC12YXJpZXR5XC1vZlwtcnVzaDsKK+m5piA+IHNwZWNpZXNcLW9mXC1wYXJyb3Q7Civol5wgPiBjaGVub3BvZGl1bVwtYWxidW07CivoiYQgPiBzdGVyblwtb2ZcLWFcLXZlc3NlbDsKK+m5iSA+IHNwZWNpZXNcLW9mXC1wYXJyb3Q7Civls4EgPiB5ZWxsb3dcLWRpcnRcLW1vdW50Owor6ZWUID4gaGlnaFwtcXVhbGl0eVwtaXJvbjsKK+myqyA+IGNhcmFzc2l1c1wtYXVyYXR1czsKK+m+hyA+IHRvXC1zaG93XC10aGVcLXRlZXRoOwor5rKtID4gcml2ZXJcLWluXC1zaGFudHVuZzsKK+amqyA+IG1vcnRpc2VcLWFuZFwtdGVub247CivokIsgPiBsdXh1cmlhbnRcLWZvbGlhZ2U7Civphq4gPiByZWxpZ2lvdXNcLXNlcnZpY2U7CivniZ0gPiBmZW1hbGVcLW9mXC1zcGVjaWVzOwor5pu3ID4gd2h5XD9cLXdoYXRcP1wtd2hlcmVcPzsKK+eRtyA+IGZpbmVcLXF1YWxpdHlcLWphZGU7CivogKYgPiBwbG93XC1zaWRlXC1ieVwtc2lkZTsKK+m4tiA+IHRoZVwtZWFzdGVyblwtZWdyZXQ7Civnr6YgPiBmaW5lXC10b290aGVkXC1jb21iOwor5aaBID4gYWN0XC1hc1wtZ29cLWJldHdlZW47CivojaUgPiBhXC1jb3VudHlcLWluXC1oZW5hbjsKK+aIvSA+IHRvXC1iYWxlXC1vdXRcLXdhdGVyOwor5p6zID4gdHJpZm9saWF0ZVwtb3JhbmdlOwor5qSQID4gemVsa293YVwtYWN1bWluYXRhOwor5bSkID4gbW91bnRhaW5cLWluXC1oZW5hbjsKK+mtiSA+IGFcLWtpbmRcLW9mXC1tb25zdGVyOwor6aKeID4gdGhlXC10ZW1wb3JhbFwtYm9uZTsKK+mUtCA+IGhpZ2hcLXF1YWxpdHlcLWlyb247CivnrJUgPiBiYW1ib29cLXdhdGVyXC1waXBlOwor6ICpID4gdG9cLXBsb3VnaFwuXC10b1wtc293Owor5buoID4gZ292ZXJubWVudFwtb2ZmaWNlOwor6J+uID4gdHlwZVwtb2ZcLWVhcnRod29ybTsKK+ibsSA+IGtpbmRcLW9mXC1idXR0ZXJmbHk7CivnprMgPiBwcmF5XC1vclwtc2FjcmlmaWNlOwor556iID4gZXllc2lnaHRcLW9ic2N1cmVkOwor6JS4ID4gY291bnRlclwtZm9yXC1wbGFudDsKK+iehSA+IFwoaW50ZXN0aW5hbFwtd29ybVwpOwor56WnID4gYW5cLWFuY2VzdHJhbFwtaGFsbDsKK+afnSA+IHdhdGNobWFuJydzXC1yYXR0bGU7CivooIMgPiB0aGVcLXNvbGl0YXJ5XC13YXNwOwor6Jy+ID4gdGhlXC1zb2xpdGFyeVwtd2FzcDsKK+iBgyA+IGVhcnNcLXdpdGhvdXRcLXJpbXM7CivogJwgPiBzcGFkZVwtc2hhcGVkXC10b29sOwor5oWdID4gZG9cLWV2aWxcLWluXC1zZWNyZXQ7CivlurMgPiBhXC1sb3dcLWJ1aWx0XC1ob3VzZTsKK+m8oiA+IGFcLXZhcmlldHlcLW9mXC1tb2xlOwor6Jq6ID4gYVwtYm9hXC1jb25zdHJpY3RvcjsKK+mipSA+IHRoZVwtdGVtcG9yYWxcLWJvbmU7CivnoYcgPiBhXC1raW5kXC1vZlwtbWluZXJhbDsKK+ehrSA+IGFcLWNydWRlXC1zYWx0cGV0cmU7Civog6ggPiBhXC1raW5kXC1vZlwtcHJvdGVpbjsKK+m9nCA+IHRvXC1zaG93XC10aGVcLXRlZXRoOwor6b2EID4gcmVkXC1zb3Jlc1wtb25cLW5vc2U7Civpu58gPiBibGFja1wtYW5kXC1zaGluaW5nOwor6bmBID4gc3BlY2llc1wtb2ZcLXBpZ2VvbjsKK+m1tSA+IHNjb3BzXC1zZW1pdG9ycXVlczsKK+m1kyA+IHNwZWNpZXNcLW9mXC1waWdlb247Civpr70gPiBjYXJhc3NpdXNcLWF1cmF0dXM7CivprrggPiBzY2lhZW5hXC1hbGJpZmxvcmE7CivprasgPiB0aGVcLXlvdW5nXC1vZlwtZmlzaDsKK+mtjiA+IGFcLWtpbmRcLW9mXC1tb25zdGVyOwor6au9ID4gdG9cLWRyZXNzXC10aGVcLWhhaXI7CivppakgPiBzYWNyZmljaWFsXC12aWN0aW07CivppIMgPiBzdHVmZmVkXC1kdW1wbGluZ3M7CivppIIgPiB0b1wtb2J0YWluXC1ieVwtaG9vazsKK+mjqSA+IHN0dWZmZWRcLWR1bXBsaW5nczsKK+mhsyA+IHRoZVwtdGVtcG9yYWxcLWJvbmU7CivpoawgPiB0aGVcLXRlbXBvcmFsXC1ib25lOwor6Z64ID4gbGVhdGhlclwtYXJtXC1ndWFyZDsKK+mesiA+IGxlYXRoZXJcLWFybVwtZ3VhcmQ7Civpnb8gPiB0aGVcLWxlZ1wtb2ZcLWFcLWJvb3Q7CivpmrggPiBiZVwtc3Vic2VydmllbnRcLXRvOwor6Zq3ID4gYmVcLXN1YnNlcnZpZW50XC10bzsKK+mWqiA+IHRvXC1sb3NlXC1sb3N0XC1pdGVtOwor6ZGkID4gY2FycGVudGVyJydzXC1wbGFuZTsKK+mRjCA+IGhpZ2hcLXF1YWxpdHlcLWlyb247CivpjYcgPiBoaWdoXC1xdWFsaXR5XC1pcm9uOwor6YqgID4gcmhvZGl1bVwtcnV0aGVuaXVtOwor6YmVID4gcHJvbWV0aGl1bVwtYnJvbnplOwor6YmLID4gY2FycGVudGVyJydzXC1wbGFuZTsKK+mIsyA+IGNvbHVtYml1bVwtbmlvYml1bTsKK+mGrSA+IG1vdWxkc1wtb25cLWxpcXVpZHM7CivphpEgPiB0b1wtc3RyYWluXC1zcGlyaXRzOwor6YW6ID4gZHJpbmtcLXdpdGhcLW90aGVyczsKK+mCgSA+IHRha2VcLWFcLWJpZ1wtc3RyaWRlOwor6L2EID4gbGluY2hwaW5cLW9mXC13aGVlbDsKK+iyjSA+IGFcLWZveFwtbGlrZVwtYW5pbWFsOwor6LGLID4gY2VyZW1vbmlhbFwtdmVzc2VsOwor6KiCID4gZHJhd1wtdXBcLWFncmVlbWVudDsKK+imvCA+IGV4cGxhaW5cLWluXC1kZXRhaWw7CivoppkgPiBleHBsYWluXC1pblwtZGV0YWlsOwor6J2hID4gZXVtZW5lc1wtcG9saWZvbWlzOwor6JyUID4gaW5sYWlkXC1zaGVsbFwtd29yazsKK+ibuiA+IGtpbmRcLW9mXC1idXR0ZXJmbHk7CivomqYgPiBhXC1ib2FcLWNvbnN0cmljdG9yOwor6Ji1ID4gcGh5c2FsaXNcLWFuZ3VsYXRhOwor6JeoID4ga2luZFwtb2ZcLXJhc3BiZXJyeTsKK+iVuCA+IHdhdGVyXC1saWx5JydzXC1sZWFmOwor6JWRID4gdmFsZXJpYW5hXC12aWxsb3NhOwor6JGOID4gaHVtdWx1c1wtamFwb25pY3VzOwor6I+jID4gYXJ0ZW1pc2lhXC1hcGlhY2VhOwor6I6bID4gc3RhbGtzXC1vZlwtZ3Jhc3NlczsKK+iMjSA+IHRvXC1iZVwtY2lyY3Vtc3BlY3Q7CivnvZsgPiBsYXJnZVwtZmlzaGluZ1wtbmV0Owor57y9ID4gZWFydGhlbndhcmVcLWJhc2luOwor57iwID4gYmFuZFwtZm9yXC10aGVcLWhhaXI7Civnto4gPiBzaWxrXC1icmFpZGVkXC1jb3JkOwor57SsID4ga2luZFwtb2ZcLXRoaW5cLXNpbGs7CivnsbggPiBwb3dkZXJ5XC1zdWJzdGFuY2U7CivnsZMgPiBiaWdcLXdpbm5vd1wtYmFza2V0Owor56+oID4gY29hcnNlXC1iYW1ib29cLW1hdDsKK+euhiA+IGZpbmVcLXRvb3RoZWRcLWNvbWI7CivnpYogPiByaXZlclwtaW5cLXNoYW5kb25nOwor55i1ID4gYVwtd2FzdGluZ1wtZGlzZWFzZTsKK+eSqyA+IHBlbmRhbnRcLW9ybmFtZW50czsKK+eSpiA+IGZpbmVcLXF1YWxpdHlcLWphZGU7Civnjp4gPiBhblwtaW5mZXJpb3JcLWFnYXRlOwor54aAID4gdGhlXC1ibGF6ZVwtb2ZcLWZpcmU7CivngY4gPiBtb3ZlbWVudFwtb2ZcLXdhdGVyOwor5rmRID4gdG9cLXN0cmFpblwtc3Bpcml0czsKK+a4sCA+IGZvcm1pbmdcLW9yXC1yaXNpbmc7CivmtLYgPiB0aGVcLXJ1c2hcLW9mXC13YXRlcjsKK+acoCA+IGNvbG9yXC1vZlwtdGhlXC1tb29uOwor5pqUID4gbmFtZVwtb2ZcLWFcLWNvdW50cnk7CivmlLAgPiB0b3RhbGx5XC1leGhhdXN0ZWQ7CivmjqsgPiBiZVwtb25cLW5pZ2h0XC13YXRjaDsKK+aNpSA+IHRvXC1iZW5kXC10aGVcLXdyaXN0Owor5oqMID4gdG9cLWJhbGVcLW91dFwtd2F0ZXI7CivmhLAgPiBjbGVhcm5lc3NcLW9mXC1taW5kOwor5byWID4gcGhvbmV0aWNcLWZvclwtJyd0ZScnOwor5bWGID4gbW91bnRhaW5cLWluXC1oZW5hbjsKK+WxrSA+IGdpZ2FudGljXC1zdHJlbmd0aDsKK+WwqCA+IHNoYWdneVwtaGFpcmVkXC1kb2c7CivlpIogPiBrYW5neGlcLXJhZGljYWxcLTM1Owor5Za/ID4gY2hpcnBpbmdcLW9mXC1iaXJkczsKK+WWvCA+IHVzZWRcLXBob25ldGljYWxseTsKK+WWuSA+IGNoZW1pY2FsXC1jb21wb3VuZDsKK+WTtSA+IHRoZVwtY3J5XC1vZlwtYVwtYmlyZDsKK+WTtCA+IGNyeWluZ1wtb2ZcLWluZmFudHM7CivlkKIgPiB2b21pdGluZ1wtb2ZcLWFcLWRvZzsKK+WAiCA+IHRvXC1pbmR1Y2VcLXRvXC1jb21lOwor5L+gID4gY2hpdmFscm91c1wtcGVyc29uOwor5L+IID4gdG9cLWluZm9ybVwtcXVpY2tseTsKK+S7giA+IHN1cnBsdXNcLW9yXC1leGNlc3M7CivkuaogPiBhXC1iZW5kXC1pblwtYVwtcml2ZXI7CivktrAgPiBmZWF0aGVyXC1vcm5hbWVudHM7CivktpYgPiBkaXNlYXNlXC1vZlwtdG9uZ3VlOwor5LWcID4gdG9cLXBsb3VnaFwtYW5kXC1zb3c7CivktIogPiB0aGVcLWNyb3dcLXBoZWFzYW50Owor5LOkID4gYVwta2luZFwtb2ZcLXN0cmFuZ2U7Civks5kgPiBhXC1lZ3JldFwtbGlrZVwtYmlyZDsKK+SvpSA+IHdpdGhcLWFcLWhpZ2hcLXNrdWxsOwor5K+iID4gcGFydGlhbFwtcGFyYWx5c2lzOwor5K6rID4gYVwtYmlnXC1tdWxlXC1hblwtYXNzOwor5K6aID4gZGlzZWFzZXNcLW9mXC1ob3JzZTsKK+SukCA+IGluXC1nb29kXC1jb25kaXRpb247CivkrZQgPiBzdGVhbWVkXC1kdW1wbGluZ3M7CivkrLAgPiBsaWdodFwtcmVmcmVzaG1lbnQ7CivkrJUgPiBzb3VuZFwtb2ZcLXRoZVwtd2luZDsKK+SsjSA+IHRoZVwtc291bmRcLW9mXC13aW5kOwor5KyGID4gYVwtYmx1c3RlcmluZ1wtZ2FsZTsKK+SsgyA+IHRoZVwtc291bmRcLW9mXC13aW5kOwor5KyAID4gc291bmRcLW9mXC10aGVcLXdpbmQ7Civkq6YgPiB0aGVcLWxvd2VyXC1qYXdib25lOwor5KufID4gZmFjaWFsXC1jb21wbGV4aW9uOwor5KuNID4gdG9cLWJvd1wtb25lJydzXC1oZWFkOwor5KuJID4gZmFjaWFsXC1hcHBlYXJhbmNlOwor5KiVID4gcG91cmluZ1wtd2l0aFwtcmFpbjsKK+SnuiA+IHRoZVwtbWFsZVwtb2ZcLWJpcmRzOwor5KaqID4gc291bmRcLW9mXC10aGVcLWRvb3I7Civkpp0gPiBzb3VuZFwtb2ZcLXRoZVwtZG9vcjsKK+SmliA+IHNvdW5kXC1vZlwtdGhlXC1kb29yOwor5KaDID4gdG9cLWRpZ1wtd2l0aFwtYVwtaG9lOwor5KO7ID4gY29sb3JcLW9mXC10aGVcLXdpbmU7Civko6ogPiBjb2xvclwtb2ZcLXRoZVwtd2luZTsKK+SinSA+IHRoZVwtbmV4dFwtaW5cLW9yZGVyOwor5KG3ID4gbm9pc2VcLW9mXC12ZWhpY2xlczsKK+ShqiA+IGZhblwtb2ZcLWFcLWNhcnJpYWdlOwor5KGZID4gYW5cLWFybWVkXC1jYXJyaWFnZTsKK+SelSA+IGNvbG9yXC1vZlwtdGhlXC1maXJlOwor5J6CID4gZmFpcmx5XC1wcm9zcGVyb3VzOwor5J26ID4gdG9cLXBpZXJjZVwtdGhyb3VnaDsKK+SduSA+IGZhaXJseVwtcHJvc3Blcm91czsKK+SdsyA+IHRvXC1raWxsXC1mb3JcLW1vbmV5Owor5J2yID4gZmFyZXdlbGxcLXByZXNlbnRzOwor5JyiID4gY3J1ZWxcLWFuZFwtdmlvbGVudDsKK+SaoCA+IHVuYnJva2VuXC1maXJld29vZDsKK+SanSA+IG5ld1wtZ3Jvd2luZ1wtaG9ybnM7CivkmpogPiBob3JuXC1vZlwtYW5cLWFuaW1hbDsKK+SakSA+IHRvXC1zdGVhbFwtYVwtZ2xhbmNlOwor5JqAID4gdG9cLXNlZVwtc3RlYWx0aGlseTsKK+SZtCA+IHRvXC1zb2FyXC1hc1wtYVwtYmlyZDsKK+SZqiA+IGFcLWxvb3BcLWZvclwtYnV0dG9uOwor5JiOID4gbmFtZVwtb2ZcLWFuXC1pbnNlY3Q7Civkl7kgPiBoYWlyeVwtY2F0ZXJwaWxsYXI7Civkl6UgPiB0aGVcLXNvbGl0YXJ5XC13YXNwOwor5JWnID4geml6YW5pYVwtbGF0aWZvbGlhOwor5JWgID4gY29hcnNlXC1iYW1ib29cLW1hdDsKK+SVhiA+IHJvdW5kXC1zdHJhd1wtcXVpbHQ7Civkk5sgPiBtb2xlY3VsYXJcLWZvcm11bGE7Civkkr0gPiBpbGxpY2l1bVwtYW5pc2F0dW07CivkkpAgPiBkaXN0dXJiZWRcLWluXC1taW5kOwor5JKPID4gZGlzdHVyYmVkXC1pblwtbWluZDsKK+SRvCA+IG9jZWFuXC1nb2luZ1wtbGluZXI7CivkkKAgPiBiZXR3ZWVuXC10aGVcLWZsZXNoOwor5JCYID4gdG9cLWxhdWdoXC1oZWFydGlseTsKK+SQliA+IHRvXC1sYXVnaFwtaGVhcnRpbHk7Civkj7AgPiBhXC1raW5kXC1vZlwtaW5zZWN0czsKK+SPmyA+IGFcLWtpbmRcLW9mXC1pbnNlY3RzOwor5I6oID4gdG9cLXBsb3VnaFwtYW5kXC1zb3c7Civkja0gPiBhXC1ld2VcLW9yXC1zaGVcLWdvYXQ7CivkjacgPiBhXC1ld2VcLW9yXC1zaGVcLWdvYXQ7CivkjYcgPiBmbGF0XC1ib3R0b21cLWNyb2NrOwor5IyoID4gdGhpblwtc2lsa1wtZmFicmljczsKK+SLuyA+IHRvXC1zcGluXC1hbmRcLXdlYXZlOwor5Iu6ID4gYVwtc3dpbmdcLWFcLWNydXBwZXI7Civki5ggPiB0b1wtaGFuZFwtYnlcLWFcLXJvcGU7Civkiq8gPiBncmFpbnNcLXdpdGhcLWJlYXJkOwor5IqaID4gc3RlYW1lZFwtZHVtcGxpbmdzOwor5ImMID4gY3J1ZGVcLWJhbWJvb1wtbWF0czsKK+SIoCA+IGJvb2tzXC1hbmRcLXZvbHVtZXM7CivkhpUgPiB0b1wtcGllcmNlXC10aHJvdWdoOwor5IaUID4gdG9cLXBpZXJjZVwtdGhyb3VnaDsKK+SEiSA+IGFcLXJpdGVcLW9yXC1zZXJ2aWNlOwor5IO/ID4gYVwtcml0ZVwtb3JcLXNlcnZpY2U7CivkgqMgPiBhXC1raW5kXC1vZlwtbWluZXJhbDsKK+SBvSA+IGV5ZXNpZ2h0XC1vYnNjdXJlZDsKK+SBuCA+IGV5ZXNpZ2h0XC1vYnNjdXJlZDsKK+SBhCA+IHRvXC1jbG9zZVwtdGhlXC1leWVzOwor5IC5ID4gdG9cLXdpbmtcLWV5ZWxhc2hlczsKK+O/gyA+IGFuXC1veFwtaGVhZGVkXC1ib2lsOwor476xID4gaW5jdXJhYmxlXC1kaXNlYXNlOwor472NID4gYW5cLWVhcnRoZW5cLXZlc3NlbDsKK+O8tCA+IGFuXC1lYXJ0aGVuXC12ZXNzZWw7Civjur8gPiBhXC1qYWRlXC1saWtlXC1zdG9uZTsKK+O2vyA+IHRoZVwtc21va2VcLXdlbnRcLXVwOwor47a0ID4gYVwtdmVyeVwtZ3JlYXRcLWZpcmU7CivjtasgPiB3YXRlclwtZ3VzaGluZ1wtb3V0Owor47WNID4gZmlsbGVkXC13aXRoXC13YXRlcjsKK+O1hCA+IG5hbWVcLW9mXC1hXC1keW5hc3R5Owor47OcID4gdGhlXC1mbG93aW5nXC13YXRlcjsKK+OysiA+IGZpbmVcLWNvdHRvblwtY2xvdGg7CivjspggPiBmaW5lXC13b29sZW5cLWNsb3RoOwor47KLID4gYVwta2luZFwtb2ZcLWFuaW1hbHM7CivjsoMgPiBzbW9vdGhcLWFuZFwtY3VydmVkOwor47CpID4gc291bmRcLW9mXC1sYXVnaHRlcjsKK+OvvyA+IGhhbmRsZVwtb2ZcLWFcLWxhZGxlOwor46+mID4gdGhlXC1nYW1lXC1vZlwtY2hlc3M7CivjrrUgPiBjb21tb25cLXNhbmRhbHdvb2Q7CivjrqggPiBjb2RpdW1cLW1hY3JvbmF0dW07CivjrpogPiB0aGVcLWNoZXN0bnV0XC10cmVlOwor46ybID4gdG9cLWRyeVwtaW5cLXRoZVwtc3VuOwor46muID4gdG9cLWxpZnRcLXVwXC1vclwtb2ZmOwor46mpID4gdG9cLWNvbWVcLXRvXC1hblwtZW5kOwor46mZID4gYVwtY29ya1wtb3JcLXN0b3BwZXI7CivjqKIgPiB0b1wtcmlwXC1vcGVuXC1mbGVzaDsKK++muCA+IGJlXC1zdWJzZXJ2aWVudFwtdG87Civjo6IgPiB0b1wtcmVzdFwtZnJvbVwtd29yazsKK+OjkyA+IGxpdGVyYXJ5XC1pblwtdGFzdGU7Civjo40gPiBhXC1yYWlzZWRcLXBsYXRmb3JtOwor46KuID4gdG9cLXVuc3RyaW5nXC1hXC1ib3c7CivjopEgPiBhXC1jb2xsYXBzZWRcLWhvdXNlOwor46KIID4gYVwtY29sbGFwc2VkXC1ob3VzZTsKK+OihCA+IGFcLWtpbmRcLW9mXC11dGVuc2lsOwor46GfID4gYmVkXC1tYXRzXC1mb3JcLWJhYnk7CivjoLcgPiBhXC12ZXNzZWxcLWZvclwtcmljZTsKK+OgpSA+IHJ1Z2dlZFwtYW5kXC11bmV2ZW47CivjoKIgPiBydWdnZWRcLWFuZFwtdW5ldmVuOwor45+0ID4gbHVtcFwtb25cLXRoZVwtaGlsbHM7Civjn6QgPiB6aHVhbmdcLWluXC1ndWFuZ3hpOwor45+DID4gdG9cLWhhdmVcLWNoYXJnZVwtb2Y7Civjnq0gPiBuYW1lXC1vZlwtYW5cLWlzbGFuZDsKK+OdjCA+IHByb2xvbmdlZFwtaWxsbmVzczsKK+ObtCA+IHRvXC1hbmdlclwtdG9cLWFubm95Owor45qFID4gdG9cLXdvcnNoaXBcLW9mXC1nb2Q7CivjmakgPiBhblwtZW5jbG9zaW5nXC13YWxsOwor45imID4gd2FsbFwtbWFkZVwtb2ZcLXNvaWw7CivjmJogPiBhbmdyeVwtYWlyXC1vZlwtbG9vazsKK+OXvCA+IGVhdGluZ1wtb3JcLXRhbGtpbmc7Civjl6UgPiBzb3VuZFwtb2ZcLXN0cmlraW5nOwor45a4ID4gdG9cLWxhdWdoXC1oZWFydGlseTsKK+OWpyA+IGNhblwtbm90XC1zZWVcLWNsZWFyOwor45SdID4gc3Ryb25nXC1yZXNpc3RhbmNlOwor45O+ID4gdG9cLXdvdW5kXC10aGVcLXNraW47CivjkZ0gPiB0b1wtbWFrZVwtYVwtZm9vbFwtb2Y7CivjkY8gPiB0b1wtc3RhbmRcLWFuZFwtd2FpdDsKK+ORiiA+IGFcLWtpbmRcLW9mXC1kaXNlYXNlOwor45CyID4gbmFtZVwtb2ZcLWFuXC1pc2xhbmQ7CivkuKogPiBudW1lcmFyeVwtYWRqdW5jdDsKK+mHjCA+IHVuaXRcLW9mXC1kaXN0YW5jZTsKK+mYsyA+ICcnbWFsZScnXC1wcmluY2lwbGU7CivoqJ0gPiBleHByZXNzXC1zdXJwcmlzZTsKK+m7jSA+IGdsdXRpbm91c1wtbWlsbGV0Owor5YmnID4gdGhlYXRyaWNhbFwtcGxheXM7CivomIIgPiBzdGFtZW5cLW9yXC1waXN0aWw7CivmjLogPiB0b1wtc3RhbmRcLXVwcmlnaHQ7CivnoYAgPiBmb3VuZGF0aW9uXC1zdG9uZTsKK+WKhyA+IHRoZWF0cmljYWxcLXBsYXlzOwor6IiFID4gbW90aGVyJydzXC1icm90aGVyOwor6JCnID4gY29tbW9uXC1hcnRlbWlzaWE7CivlgIsgPiBudW1lcmFyeVwtYWRqdW5jdDsKK+S/uiA+IHBlcnNvbmFsXC1wcm9ub3VuOwor546yID4gdGlua2xpbmdcLW9mXC1qYWRlOwor6Zm9ID4gJydtYWxlJydcLXByaW5jaXBsZTsKK+euhyA+IG51bWVyYXJ5XC1hZGp1bmN0Owor5o2pID4gdHdpc3RcLXdpdGhcLWhhbmRzOwor6K62ID4gZXhwcmVzc1wtc3VycHJpc2U7Civpu5sgPiBibGFja2VuXC1leWVicm93czsKK+WmhiA+IHRvXC1hZG9yblwtb25lc2VsZjsKK+W5oiA+IGNhcnJpYWdlXC1jdXJ0YWluOwor5qKtID4gd2VhdmVyJydzXC1zaHV0dGxlOwor5ryqID4gcmlwcGxlc1wtb25cLXdhdGVyOwor55y3ID4gdGFrZVwtaW50ZXJlc3RcLWluOwor5YuLID4gbWVyaXRvcmlvdXNcLWRlZWQ7CivnlK0gPiB0aGVyZVwtaXNcLW5vXC1uZWVkOwor56WgID4gYW5jZXN0cmFsXC10ZW1wbGU7CivoiJQgPiBsaWNrXC13aXRoXC10b25ndWU7CivolYogPiB1bm9wZW5lZFwtZmxvd2VyczsKK+i1oyA+IGppYW5neGlcLXByb3ZpbmNlOwor6Le3ID4gcmFpc2VcLW9uZScnc1wtZm9vdDsKK+WJgSA+IGNob3BcLWJ5XC1wb3VuZGluZzsKK+iWsCA+IGFcLW1lZGljaW5hbFwtaGVyYjsKK+WPvCA+IGhvbGRpbmdcLWluXC1tb3V0aDsKK+iNvCA+IGJpdHRlclwtdmVnZXRhYmxlOwor5b6ZID4gbW92ZVwtb25lJydzXC1hYm9kZTsKK+a2lCA+IHJpdmVyXC1pblwtc2hhYW54aTsKK+a9oiA+IGV4cGFuc2VcLW9mXC13YXRlcjsKK+enuCA+IHN0YWxrc1wtb2ZcLW1pbGxldDsKK+iiiCA+IGJ1ZGRoaXN0XC1jYXNzb2NrOwor54+eID4ga2luZFwtb2ZcLW5lY2tsYWNlOwor5ZW+ID4gd2FpbGluZ1wtb2ZcLWNoaWxkOwor5Lq7ID4gcmFkaWNhbFwtbnVtYmVyXC05Owor6IiQID4gbGlja1wtd2l0aFwtdG9uZ3VlOwor5aSZID4gZWFybHlcLWluXC1tb3JuaW5nOwor6bmYID4gYVwta2luZFwtb2ZcLXBpZ2VvbjsKK+WoqSA+IGdpdmVcLWJpcnRoXC1jaGlsZDsKK+WnnSA+IGFcLWJlYXV0aWZ1bFwtZ2lybDsKK+aHkSA+IGJlXC1zaWNrXC1hdFwtaGVhcnQ7CivplIkgPiBjYXJwZW50ZXInJ3NcLWZpbGU7CivmtLEgPiBhXC1sYWtlXC1pblwteXVubmFuOwor6J2IID4gc21hbGxcLWdyZWVuXC1mcm9nOwor5bi8ID4gd29tZW4nJ3NcLWhlYWRnZWFyOwor54uOID4gYmVcLWZhbWlsaWFyXC13aXRoOwor6IOqID4gYXJyYW5nZVwtaW5cLW9yZGVyOwor6LGiID4gZG9tZXN0aWNcLWFuaW1hbHM7CivnnIcgPiBibGluZFwtaW5cLW9uZVwtZXllOwor576/ID4gbGVnZW5kYXJ5XC1hcmNoZXI7CivoiqkgPiBzYWx0XC1tYXJzaFwtcGxhbnQ7CivojK0gPiBhblwtYXF1YXRpY1wtZ3Jhc3M7Civok5YgPiBjYXN0b3JcLW9pbFwtcGxhbnQ7CivlgqcgPiBlbnRlcnRhaW5cLWd1ZXN0czsKK+iWnCA+IGV2ZXJncmVlblwtc2hydWJzOwor6La6ID4gc2l0XC1jcm9zc1wtbGVnZ2VkOwor5qS5ID4gYVwtY2hvcHBpbmdcLWJvYXJkOwor6ZyIID4gdG9ycmVudGlhbFwtcmFpbnM7Civot48gPiBzaXRcLWNyb3NzXC1sZWdnZWQ7Civmm6kgPiBpblwtYW5jaWVudFwtdGltZXM7CivmoIwgPiBzdXBwb3J0aW5nXC1ibG9jazsKK+WTmiA+IGNoZW1pY2FsXC1lbGVtZW50Owor562MID4gYmFtYm9vXC1maXNoXC10cmFwOwor5rWNID4gaXJyaWdhdGlvblwtZGl0Y2g7CivnjIEgPiBhXC1raW5kXC1vZlwtbW9ua2V5Owor5ZW2ID4gXC1kXC1cK1wtaW5lXC1cKGNoZW1cLlwpOwor6ayvID4gc2FjcmlmaWNpYWxcLXdpbmU7CivpsrcgPiBwYWdyb3NvbXVzXC1tYWpvcjsKK+iBsSA+IGJlbnRcLWFuZFwtdHdpc3RlZDsKK+WKoiA+IHB1dFwtZm9ydGhcLWVmZm9ydDsKK+ifqiA+IGFcLWtpbmRcLW9mXC1jaWNhZGE7CivonpcgPiBhXC1raW5kXC1vZlwtY2ljYWRhOwor6LWGID4gZmFyZXdlbGxcLXByZXNlbnQ7Civln68gPiBjb3Zlclwtd2l0aFwtZWFydGg7CivpspQgPiBraW5kXC1vZlwtc3R1cmdlb247CivnvaggPiBtZWRpY2FsXC1jb21wcmVzczsKK+WrnCA+IGh1c2JhbmQnJ3NcLXBhcmVudDsKK+a8pCA+IG1hcmluYXRlXC1pblwtc2FsdDsKK+WahiA+IGdpdmVcLWZvcnRoXC1zb3VuZDsKK+iWuSA+IGN5cGVydXNcLXJvdHVuZHVzOwor6IyGID4gc3BlY2llc1wtb2ZcLWdyYXNzOwor6b2ZID4gcHJvamVjdGluZ1wtdGVldGg7CivpubYgPiBzYWx0eVwtYW5kXC1iaXR0ZXI7CivptrsgPiBhXC1raW5kXC1vZlwtcGlnZW9uOwor6a+bID4gcGFncm9zb211c1wtbWFqb3I7Civpr4YgPiB0aGVcLXNrYXRlXC1vclwtcmF5Owor6a6qID4ga2luZFwtb2ZcLXN0dXJnZW9uOwor6a2sID4gc29sZVwtb3JcLWZsb3VuZGVyOwor6aq0ID4gYVwtcHV0cmlkXC1jYXJjYXNlOwor6aaYID4gY3V0XC1vZmZcLWxlZnRcLWVhcjsKK+mjgCA+IHNvdWdoaW5nXC1vZlwtd2luZDsKK+mfnSA+IGxlYXRoZXJcLWFybVwtYmFuZDsKK+mfiiA+IGFcLWNhc2VcLWZvclwtYVwtYm93Owor6Z62ID4gYmlnXC1sZWF0aGVyXC1iZWx0Owor6ZuXID4gYVwtd2hpdGVcLXBoZWFzYW50Owor6ZqkID4gdG9cLWZhbGxcLWluXC1ydWluczsKK+mXoCA+IGdhdGVcLW9mXC1hXC1tYXJrZXQ7CivpirwgPiBjYXJwZW50ZXInJ3NcLWZpbGU7CivpirsgPiBhbnRpbW9ueVwtc3RpYml1bTsKK+mKpyA+IHBvaW50XC1vZlwtYVwtc3dvcmQ7CivpiYAgPiBwb3Rhc3NpdW1cLWthbGl1bTsKK+i6tyA+IG9mXC1zaG9ydFwtc3RhdHVyZTsKK+i5uiA+IHJhaXNlXC1vbmUnJ3NcLWZvb3Q7CivoubEgPiB0b1wtc3RhZ2dlclwtYWxvbmc7CivouZAgPiB0YWtlXC1zaG9ydFwtc3RlcHM7CivotJsgPiBqaWFuZ3hpXC1wcm92aW5jZTsKK+i0kCA+IGZhcmV3ZWxsXC1wcmVzZW50Owor6LOZID4gZ2l2ZVwtZm9yXC1jaGFyaXR5Owor6LGPID4gaGFsZlwtZ3Jvd25cLWJlYW5zOwor6KqVID4gdG9cLWJlYXJcLWNoaWxkcmVuOwor6KaCID4gdG9cLXRocm93XC1hXC1yaWRlcjsKK+ilsSA+IGxlZ3NcLW9mXC10cm91c2VyczsKK+ijmyA+IHRvXC13cmFwXC1hbmRcLWJpbmQ7CivoopcgPiB1bmxpbmVkXC1nYXJtZW50czsKK+ihjiA+IHRvXC1naXZlXC1wbGVhc3VyZTsKK+ifvyA+IGFjcmlkYVwtY2hpbmVuc2lzOwor6J+IID4gc21hbGxcLWdyZWVuXC1mcm9nOwor6J6LID4gc3BpZGVyXC1taWxsaXBlZGU7CivonbsgPiBpbW1hdHVyZVwtbG9jdXN0czsKK+iZpSA+IHN0cmlwZWRcLXdpbGRcLWNhdDsKK+iXpiA+IGVkaWJsZVwtbXVzaHJvb21zOwor6JeLID4gc2FtYnVjdVwtamF2aW5pY2E7CivolqsgPiBhXC1tZWRpY2luYWxcLWhlcmI7CivoloMgPiBjeXBlcnVzXC1hbXVyaWN1czsKK+iVrSA+IGNvbW1vblwtYXJ0ZW1pc2lhOwor6JWLID4gdW5vcGVuZWRcLWZsb3dlcnM7CivolIcgPiBsdXh1cmlhbnRcLWdyb3d0aDsKK+iRmSA+IGNlbG9zaWFcLWFyZ2VudGVhOwor6I+JID4gdGhlXC1ncmVlblwtYmFtYm9vOwor6IqYID4gbWFsdmFcLXN5bHZlc3RyaXM7CivoioMgPiBsdXh1cmlhbnRcLWdyb3d0aDsKK+iHmiA+IGFycmFuZ2VcLWluXC1vcmRlcjsKK+iAvCA+IGVhcnNcLXdpdGhvdXRcLXJpbTsKK+e2tSA+IHZhcmljb2xvcmVkXC1zaWxrOwor57S9ID4gYVwtc3RyYW5kXC1vZlwtc2lsazsKK+eztSA+IGZlcm1lbnRpbmdcLWdyYWluOwor57OxID4gZmVybWVudGluZ1wtZ3JhaW47Civns4ggPiBzYWNyaWZpY2lhbFwtcmljZTsKK+expyA+IGNydWRlXC1iYW1ib29cLW1hdDsKK+euryA+IGJhbWJvb1wtcGFsYW5xdWluOwor566KID4gYmFtYm9vXC13aXRoXC10aGluOwor56e3ID4gc291bmRcLW9mXC1yZWFwaW5nOwor56SOID4gZm91bmRhdGlvblwtc3RvbmU7Civno6UgPiBhXC1oZWFwXC1vZlwtc3RvbmVzOwor56CrID4gYW5jZXN0cmFsXC10YWJsZXQ7CivnnpggPiBkZWVwbHlcLXN1bmtcLWV5ZXM7CivnnosgPiBnbGFyZVwtd2l0aFwtYW5nZXI7CivnnZwgPiB0b1wtb3BlblwtdGhlXC1leWVzOwor55umID4gbGlkXC1vZlwtYVwtY2FsZHJvbjsKK+eZiSA+IHRvXC1oYXRlXC1iaXR0ZXJseTsKK+eYhSA+IHRvXC1oYXRlXC1iaXR0ZXJseTsKK+eTnyA+IHRoZVwtYm90dGxlXC1nb3VyZDsKK+eMuCA+IGFcLWtpbmRcLW9mXC1hbmltYWw7Civni7sgPiBhXC1mYWJ1bG91c1wtYmVhc3Q7Civng5wgPiBsaWdodFwtb2ZcLXRoZVwtc3VuOwor54GgID4gbWFyaW5hdGVcLWluXC1zYWx0Owor5r6uID4gaXJyaWdhdGlvblwtZGl0Y2g7CivmvqYgPiBwbGFjZVwtaW5cLXNpY2h1YW47CivmvqUgPiBhXC1ibG9ja2VkXC1zdHJlYW07CivmvpQgPiByYWRpYW5jZVwtb2ZcLWdlbXM7CivmuKsgPiBiZWF0aW5nXC1vZlwtb2NlYW47CivmtaQgPiBiZWF0aW5nXC1vZlwtb2NlYW47Civmr64gPiB0b1wtcHVsbFwtb3V0XC1oYWlyOwor5q+qID4gc2VyZ2VcLWZyb21cLXRpYmV0Owor5quoID4gc3VwcG9ydGluZ1wtYmxvY2s7CivmqJsgPiBiZW5kaW5nXC1icmFuY2hlczsKK+aesiA+IG1hbGVcLW5ldHRsZVwtaGVtcDsKK+aekiA+IHRoZVwtY29jb251dFwtdHJlZTsKK+aZhSA+IGxpZ2h0XC1vZlwtdGhlXC1zdW47CivmlrUgPiB0b1wtY3V0XC10b1wtcGllY2VzOwor5paeID4gYVwtc3RhY2tcLW9mXC1ncmFpbjsKK+aSmiA+IHR3aXJsXC1pblwtZmluZ2VyczsKK+aMtyA+IHRvXC1wcm9wZWxcLWFcLWJvYXQ7Civmh6MgPiBiZVwtc2lja1wtYXRcLWhlYXJ0Owor5byzID4gY2lyY3VsYXJcLW1lYXN1cmU7CivlvKogPiBjaXJjdWxhclwtbWVhc3VyZTsKK+W7tSA+IHRvXC1nb1wtb25cLWNpcmN1aXQ7CivluZcgPiB3b21lbicnc1wtaGVhZGdlYXI7CivlrI4gPiB0b1wtYmVhclwtbXVsdGlwbGU7CivlqqQgPiBodXNiYW5kJydzXC1mYW1pbHk7Civlpp0gPiB0b1wtYWRvcm5cLW9uZXNlbGY7CivloqQgPiB0b1wtZmFsbFwtaW5cLXJ1aW5zOwor5ZuNID4gZG91YmxlXC1oYXBwaW5lc3M7CivlmrMgPiBteXRoaWNhbFwtZW1wZXJvcjsKK+WYhSA+IHNvdW5kXC1vZlwtc2lnaGluZzsKK+WXniA+IHRvXC1jb25zdWx0XC1hYm91dDsKK+WXgSA+IGdpdmVcLWZvcnRoXC1zb3VuZDsKK+WWuiA+IHRvXC1iZVwtbG9jYXRlZFwtYXQ7Civli7MgPiBtZXJpdG9yaW91c1wtZGVlZDsKK+WLsiA+IG1lcml0b3Jpb3VzXC1kZWVkOwor5YuxID4gcHV0XC1mb3J0aFwtZWZmb3J0Owor5YubID4gbWVyaXRvcmlvdXNcLWRlZWQ7CivliLQgPiBjaG9wXC1ieVwtcG91bmRpbmc7CivlhpMgPiBhXC1zZWNsdWRlZFwtcGxhY2U7CivlhJAgPiBlbnRlcnRhaW5cLWd1ZXN0czsKK+WEiiA+IHJvdWdoXC1hbmRcLXJ1Z2dlZDsKK+WCnCA+IGFcLW1pbm9yaXR5XC10cmliZTsKK+S2sSA+IGFcLWtpbmRcLW9mXC10dXJ0bGU7CivktaQgPiB0b1wtY3JhY2tcLW9yXC1jaGFwOwor5LWjID4gd2hpdGVcLXdpdGhcLWJsYWNrOwor5LWhID4gdG9cLWNyYWNrXC1vclwtY2hhcDsKK+S1gyA+IGFcLWtpbmRcLW9mXC1iYXJsZXk7CivktKwgPiBjcnVtYnNcLW9mXC1iYXJsZXk7CivktKQgPiBhXC1raW5kXC1vZlwtYW5pbWFsOwor5LSjID4gYVwta2luZFwtb2ZcLWFuaW1hbDsKK+S0hSA+IGFcLWxlZ2VuZGFyeVwtYmlyZDsKK+SzoiA+IHNtYWxsXC13aWxkXC1nb29zZTsKK+SznyA+IGFcLWxlZ2VuZGFyeVwtYmlyZDsKK+SzkCA+IGFuXC1vd2xcLWxpa2VcLWJpcmQ7CivksrIgPiBhXC1oYXdrXC1saWtlXC1iaXJkOwor5LKmID4gYVwtbGVnZW5kYXJ5XC1iaXJkOwor5LCDID4gZGlzaGV2ZWxsZWRcLWhhaXI7Civkr7MgPiBsb29zZWx5XC1hcnJhbmdlZDsKK+SvriA+IGRpc2hldmVsbGVkXC1oYWlyOwor5K+HID4gdG9cLWV4ZXJ0XC1vbmVzZWxmOwor5K60ID4gdW5zdGFibGVcLXdhbGtpbmc7CivkrrMgPiB0b1wtZ2l2ZVwtYmlydGhcLXRvOwor5K6pID4gYVwta2luZFwtb2ZcLWFuaW1hbDsKK+SuoCA+IGFcLWtpbmRcLW9mXC1hbmltYWw7CivkroEgPiBhXC1wYWlyXC1vZlwtaG9yc2VzOwor5K6AID4gYVwta2luZFwtb2ZcLWFuaW1hbDsKK+SrjCA+IGJvd2VkXC1vbmUnJ3NcLWhlYWQ7Civkqo4gPiBzdHJpbmdzXC1vZlwtYVwtY2FwOwor5KmlID4gYVwtYmVsdFwtZm9yXC1ob3JzZTsKK+SouyA+IHJvYXJcLW9mXC10aHVuZGVyczsKK+SotCA+IGdhdGhlcmluZ1wtY2xvdWRzOwor5KizID4gdGhlXC1yYWluXC1zdG9wcGVkOwor5KiPID4gc291bmRcLW9mXC1yYWluaW5nOwor5KiKID4gYVwtZmxvY2tcLW9mXC1iaXJkczsKK+SnuCA+IGFcLWtpbmRcLW9mXC1waWdlb247Civkp6EgPiBhXC1mb3J0aWZpZWRcLXdhbGw7Civkp4QgPiBuYW1lXC1vZlwtYVwtcGVyc29uOwor5KaVID4gYmFuZ1wtb2ZcLXRoZVwtZG9vcjsKK+SmgiA+IGNoZW1pY2FsXC1lbGVtZW50Owor5KWbID4gYVwta2luZFwtb2ZcLXNpY2tsZTsKK+SlhyA+IGNoZW1pY2FsXC1lbGVtZW50Owor5KSyID4gY2hlbWljYWxcLWVsZW1lbnQ7CivkpKAgPiBjaGVtaWNhbFwtZWxlbWVudDsKK+SjriA+IHNtZWxsXC1vZlwtYWxjb2hvbDsKK+SjqyA+IHNvdXJlZFwtYmVhblwtY3VyZDsKK+SiniA+IHJvd3NcLWFuZFwtY29sdW1uczsKK+ShriA+IHRyYWNlXC1vZlwtYVwtd2hlZWw7CivkoaIgPiBhXC1zbWFsbFwtY2FycmlhZ2U7CivkoL8gPiBuYW1lXC1vZlwtYVwtcGVyc29uOwor5KC7ID4gdG9cLWJlbmRcLXRoZVwtYm9keTsKK+SfiyA+IHRvXC1wcmVzc1wtZm9yd2FyZDsKK+SeliA+IG5hbWVcLW9mXC1hXC1wZXJzb247CivknowgPiB0b1wtbG9zZVwtaW5cLXRyYWRlOwor5J2jID4gYVwta2luZFwtb2ZcLWFuaW1hbDsKK+SdmiA+IGFcLWtpbmRcLW9mXC1hbmltYWw7CivknYsgPiBhXC1saXR0bGVcLW9mXC1waWdzOwor5J2HID4gZ3J1bnRpbmdcLW9mXC1waWdzOwor5JuPID4gdG9cLWNhbGxcLXNvbWVib2R5Owor5JuOID4gdG9cLXNob3V0XC1pblwtcmFnZTsKK+SbgiA+IHRvXC1zZXBhcmF0ZVwtZnJvbTsKK+SavyA+IHRvXC1zaG91dFwtaW5cLXJhZ2U7CivkmpQgPiB0b1wtbG9va1wtc3VkZGVubHk7CivkmpIgPiBleWVzaWdodFwtYmx1cnJlZDsKK+SajiA+IGV5ZXNpZ2h0XC1ibHVycmVkOwor5JqLID4gZXllc2lnaHRcLWJsdXJyZWQ7CivkmoMgPiB0b1wtcmVhbGl6ZVwtZnVsbHk7Civkma0gPiB0b1wtbGlmdFwtb3JcLXJhaXNlOwor5JiLID4gYVwta2luZFwtb2ZcLWluc2VjdDsKK+SYgiA+IGFcLWtpbmRcLW9mXC1pbnNlY3Q7Civkl78gPiBhXC1raW5kXC1vZlwtaW5zZWN0Owor5Je8ID4gYVwta2luZFwtb2ZcLWluc2VjdDsKK+SXuCA+IGFcLWtpbmRcLW9mXC1pbnNlY3Q7Civkl7EgPiBhXC1raW5kXC1vZlwtaW5zZWN0Owor5JevID4gYVwta2luZFwtb2ZcLWluc2VjdDsKK+SXriA+IGFcLWtpbmRcLW9mXC1pbnNlY3Q7Civkl6EgPiBhXC1raW5kXC1vZlwtaW5zZWN0Owor5JefID4gYVwta2luZFwtb2ZcLWluc2VjdDsKK+SXmyA+IGFcLWtpbmRcLW9mXC1pbnNlY3Q7Civkl48gPiBuYW1lXC1vZlwtYVwtaW5zZWN0Owor5JeOID4gYVwta2luZFwtb2ZcLWluc2VjdDsKK+SXhiA+IGFcLWtpbmRcLW9mXC1pbnNlY3Q7Civkl4QgPiBhXC1raW5kXC1vZlwtaW5zZWN0Owor5JeBID4gYVwta2luZFwtb2ZcLWNpY2FkYTsKK+SWtyA+IGFcLWtpbmRcLW9mXC1pbnNlY3Q7CivklrQgPiBhXC1raW5kXC1vZlwtaW5zZWN0Owor5JayID4gYVwta2luZFwtb2ZcLWluc2VjdDsKK+SWryA+IHBvaXNvbm91c1wtaW5zZWN0Owor5JaQID4gc291bmRcLW9mXC1hXC10aWdlcjsKK+SUtyA+IGN5cGVydXNcLXJvdHVuZHVzOwor5JKjID4gbHVzaFwtb3JcLWRlbGljYXRlOwor5JG4ID4gYVwtZ3JvdXBcLW9mXC1ib2F0czsKK+SRhSA+IGRpenp5XC1hbmRcLXNsZWVweTsKK+SQqCA+IGJhY2tcLW9mXC10aGVcLWZvb3Q7Civkj5IgPiBoYWxmXC1vZlwtdGhlXC1ib2R5Owor5I+PID4gc2lnbnNcLWFuZFwtZ3JvYW5zOwor5I68ID4gYVwta2luZFwtb2ZcLWluc2VjdDsKK+SOryA+IHdpbnRlclwtcGxvdWdoaW5nOwor5I6CID4gY29sb3JmdWxcLWZlYXRoZXI7CivkjL0gPiB2YXJpY29sb3JlZFwtc2lsazsKK+SMgiA+IGluXC1hbmNpZW50XC10aW1lczsKK+SLpCA+IHBsYWluXC13aGl0ZVwtc2lsazsKK+SLlCA+IHRvXC1iYW5kXC10b2dldGhlcjsKK+SKiyA+IHRvXC1hZG9yblwtb25lc2VsZjsKK+SJtyA+IGFcLWZlYXRoZXJcLXNjcmVlbjsKK+SJiSA+IGFcLXdyaXRpbmdcLXRhYmxldDsKK+SImSA+IGJhbWJvb1wtdG9cLXdpdGhlcjsKK+SIiCA+IGFcLWtpbmRcLW9mXC1iYW1ib287CivkiIMgPiBhXC1raW5kXC1vZlwtYmFtYm9vOwor5IiCID4gYVwta2luZFwtb2ZcLWJhbWJvbzsKK+SHuyA+IGFcLWtpbmRcLW9mXC1iYW1ib287Civkh7kgPiBhXC1raW5kXC1vZlwtYmFtYm9vOwor5Ie3ID4gaW5cLWFuY2llbnRcLXRpbWVzOwor5IemID4gYVwta2luZFwtb2ZcLWJhbWJvbzsKK+SGvyA+IHRvXC10YWxrXC1pblwtc2xlZXA7CivkhrIgPiBhXC1zcGFjaW91c1wtaG91c2U7CivkhoggPiB5b3VuZ1wtYW5kXC10ZW5kZXI7CivkhbwgPiBhXC1raW5kXC1vZlwtZ3JhaW5zOwor5IW6ID4gZ3JhaW5cLWluXC10aGVcLWVhcjsKK+SFiiA+IGFcLXNwYWNpb3VzXC1ob3VzZTsKK+SEuiA+IHlvdW5nXC1hbmRcLXRlbmRlcjsKK+SCqiA+IGhhcmRcLWJhcnJlblwtbGFuZDsKK+SAgyA+IGFcLWtpbmRcLW9mXC12ZXNzZWw7CivjvqYgPiBzY2FiXC1vdmVyXC1hXC1zb3JlOwor476BID4gd2Fsa2luZ1wtbGlrZVwtbWFkOwor472uID4gYVwtcG9pbnRcLW9mXC1saWdodDsKK+O9iiA+IGNyYWNraW5nXC1vZlwtdGlsZTsKK+O7kiA+IHJlZFwtY29sb3JlZFwtamFkZTsKK+O7gSA+IGFcLWtpbmRcLW9mXC1qYXNwZXI7CivjurUgPiBibGFja1wtamFkZVwtc3RvbmU7CivjurQgPiBuYW1lXC1vZlwtYVwtc3Bpcml0Owor47qmID4gYVwtcnVubmluZ1wtYW5pbWFsOwor47qjID4gYVwta2luZFwtb2ZcLWFuaW1hbDsKK+O6oiA+IGFcLWtpbmRcLW9mXC1hbmltYWw7Civjup0gPiBzb3VuZFwtb2ZcLWFcLXRpZ2VyOwor47qYID4gYVwta2luZFwtb2ZcLWFuaW1hbDsKK+O5vCA+IGFcLWtpbmRcLW9mXC1hbmltYWw7CivjubogPiBkb2dcLXRvXC10YWtlXC1mb29kOwor47m0ID4gYVwta2luZFwtb2ZcLWFuaW1hbDsKK+O5rSA+IGFcLWtpbmRcLW9mXC1tb25rZXk7CivjuawgPiBhXC1raW5kXC1vZlwtYW5pbWFsOwor47moID4gYVwta2luZFwtb2ZcLWFuaW1hbDsKK+O5nyA+IGFcLWtpbmRcLW9mXC1hbmltYWw7CivjuZMgPiBhXC1raW5kXC1vZlwtYW5pbWFsOwor47mHID4gYVwta2luZFwtb2ZcLWNhdHRsZTsKK+O5hCA+IGFcLWtpbmRcLW9mXC1jYXR0bGU7CivjuLsgPiBhXC1raW5kXC1vZlwtY2F0dGxlOwor47izID4gYVwta2luZFwtb2ZcLWNhdHRsZTsKK+O4oyA+IGluXC1hbmNpZW50XC1jaGluYTsKK+O2viA+IHRvdWdoXC1hbmRcLWhvbmVzdDsKK+O2jSA+IG5hbWVcLW9mXC1hXC1zdHJlYW07CivjtowgPiBuYW1lXC1vZlwtYVwtc3RyZWFtOwor47WwID4gbmFtZVwtb2ZcLWFcLXN0cmVhbTsKK+O1hiA+IHJhZGlhbmNlXC1vZlwtZ2VtczsKK+O1gyA+IG5hbWVcLW9mXC1hXC1zdHJlYW07CivjtKcgPiBvZlwtZmxvd2luZ1wtd2F0ZXI7Civjs70gPiBhXC13YXRlcnlcLWV4cGFuc2U7CivjsbYgPiBhXC1zd2VsbGVuXC1jb3Jwc2U7Civjsa0gPiBhblwtaW5mZXJ0aWxlXC1lZ2c7CivjsYggPiBuYW1lXC1vZlwtYVwtcGVyc29uOwor47CkID4gdG9cLWxhdWdoXC1oZXJ0aWx5Owor47CbID4gbmFtZVwtb2ZcLWFcLWNvdW50eTsKK+OwhSA+IGVhdmVzXC1vZlwtYVwtaG91c2U7Civjr5UgPiBzdGlja3NcLW9yXC1mcmFtZXM7Civjr4MgPiB0aGVcLXZhcm5pc2hcLXRyZWU7CivjrpMgPiBhblwtZXh0cmVtZVwtbGltaXQ7CivjrbogPiB0aGVcLWNoZXJyeVwtYXBwbGU7Civjqq0gPiB0b1wtZHJhd1wtdG9nZXRoZXI7CivjqpggPiB0b1wtZHJhd1wtdG9nZXRoZXI7CivjqpYgPiBzb3VuZFwtb2ZcLWJlYXRpbmc7CivjqLwgPiB0b1wtdGFrZVwtYnlcLWZvcmNlOwor46e6ID4gYVwtZmluZ2VyXC13cmFwcGVyOwor76epID4gdW5pdFwtb2ZcLWRpc3RhbmNlOwor76atID4gdGlua2xpbmdcLW9mXC1qYWRlOwor46acID4gdG9cLW1vdmVcLXRoZVwtbWluZDsKK++mkSA+IHR3aXJsXC1pblwtZmluZ2VyczsKK+OllCA+IHRvXC1tb3ZlXC10aGVcLW1pbmQ7CivvpL4gPiB0aGVcLWdyZWVuXC1iYW1ib287CivjpLQgPiB0b1wtbW92ZVwtdGhlXC1taW5kOwor46SiID4gdG9cLW1vdmVcLXRoZVwtbWluZDsKK++klyA+IGtpbmRcLW9mXC1uZWNrbGFjZTsKK+OjiCA+IGFcLWtpbmRcLW9mXC1hbmltYWw7CivjorAgPiB0b1wtc3RyZXRjaFwtYVwtYm93Owor46G9ID4gZGVwcmF2ZWRcLXRhbGtpbmc7CivjoYkgPiBhXC1raW5kXC1vZlwtZmFicmljOwor46CnID4gYVwtbGl0dGxlXC1zbGFudGVkOwor46COID4gYVwtbG9mdHlcLW1vdW50YWluOwor452rID4gc2hhcGVcLW9mXC10aGVcLXNreTsKK+OdqiA+IGFcLXNsYW50aW5nXC1ob3VzZTsKK+OdqSA+IHNwYWNpb3VzbHlcLXJvb21zOwor452XID4gc3BhY2lvdXNseVwtcm9vbXM7CivjnLQgPiBkYXJrXC1hbmRcLW9ic2N1cmU7CivjnJ0gPiB0b1wtY2hlcmlzaFwtYW5nZXI7CivjnIggPiBhXC1iZWF1Z2lmdWxcLWZhY2U7Civjmp8gPiBhXC1raW5kXC1vZlwtYW5pbWFsOwor45qcID4gd2l0aFwtZ3JlYXRcLXBvd2VyOwor45qXID4gd2l0aFwtYVwtYmlnXC1tb3V0aDsKK+OahyA+IGRyYXdcLXRoZVwtZmVldFwtdXA7CivjmZ4gPiBhXC1zbWFsbFwtbW91bnRhaW47CivjmY4gPiBicmVhY2hcLW9mXC1hXC10YW5rOwor45mFID4gYVwtd2FsbGVkXC12aWxpYWdlOwor45mAID4gYVwtdmVnZXRhYmxlXC1wbG90Owor45e7ID4gYmFieScnc1wtYW5zd2VyaW5nOwor45eZID4gdG9cLXNob3V0XC1vclwtYmF3bDsKK+OVrSA+IHRvXC1iYXJrXC1hc1wtYVwtZG9nOwor45WpID4gc291bmRcLW9mXC10YXBwaW5nOwor45WHID4gcm9ja3NcLWNvbGxhcHNpbmc7CivjlLUgPiBhXC1raW5kXC1vZlwtdmVzc2VsOwor45SxID4gYVwtc3RhY2tcLW9mXC1ncmFpbjsKK+OUqCA+IG5hbWVcLW9mXC1hXC1wZXJzb247CivjlJogPiB0b1wtZXhlcnRcLW9uZXNlbGY7CivjlJEgPiBhblwtaW5jaXNlZFwtd291bmQ7Civjk7wgPiBhblwtaW5jaXNlZFwtd291bmQ7Civjk7ggPiB0b1wtY3V0XC10b1wtcGllY2VzOwor45KtID4gYW5cLWVsZGVyXC1icm90aGVyOwor45KhID4gbmFtZVwtb2ZcLWFcLXBlcnNvbjsKK+OSgSA+IG9mXC1ncmVhdFwtc3RhdHVyZTsKK+ORsSA+IGFcLWtpbmRcLW9mXC1tb25rZXk7CivjkLsgPiBuYW1lXC1vZlwtYVwtcGVyc29uOwor45CAID4gaGlsbG9ja1wtb3JcLW1vdW5kOwor552oID4gbG9va1wtYXNrYW5jZVwtYXQ7CivmgI4gPiB3aGF0XD9cLXdoeVw/XC1ob3dcPzsKK+aUtiA+IGdhdGhlclwtdG9nZXRoZXI7CivlhZogPiBwb2xpdGljYWxcLXBhcnR5Owor54mIID4gcHJpbnRpbmdcLWJsb2NrczsKK+WtoyA+IHF1YXJ0ZXJcLW9mXC15ZWFyOwor54mhID4gbWFsZVwtb2ZcLWFuaW1hbHM7CivoqLogPiBleGFtaW5lXC1wYXRpZW50Owor5aeRID4gZmF0aGVyJydzXC1zaXN0ZXI7CivopJMgPiBzd2FkZGxpbmdcLWNsb3RoOwor6aaGID4gcHVibGljXC1idWlsZGluZzsKK+a8vyA+IGFueVwtdGhpY2tcLWZsdWlkOwor6ZuEID4gbWFsZVwtb2ZcLXNwZWNpZXM7Civkur8gPiBodW5kcmVkXC1taWxsaW9uOwor5Zu6ID4gdG9cLWJlY29tZVwtc29saWQ7Civpu6ggPiBwb2xpdGljYWxcLXBhcnR5Owor5rqqID4gbW91bnRhaW5cLXN0cmVhbTsKK+iZniA+IGNvbmNlcm5lZFwtYWJvdXQ7Civll5ogPiBzb3VuZFwtb2ZcLWNyeWluZzsKK+iWhyA+IG9zbXVuZGFcLXJlZ2FsaXM7CivmiI8gPiB0aGVhdHJpY2FsXC1wbGF5Owor5Y+sID4gaW1wZXJpYWxcLWRlY3JlZTsKK+WPjiA+IGdhdGhlclwtdG9nZXRoZXI7CivnkZ4gPiBmZWxpY2l0b3VzXC1vbWVuOwor6ayiID4gaGFpclwtb25cLXRlbXBsZXM7Civlg6cgPiBidWRkaGlzdFwtcHJpZXN0Owor5qqcID4gY2hpbmVzZVwtY3lwcmVzczsKK+aqjiA+IHNtYWxsXC1yZWRcLWFwcGxlOwor6amFID4gc3B1clwtYVwtaG9yc2VcLW9uOwor6IefID4gaW50ZXJuYWxcLW9yZ2FuczsKK+mniCA+IHNwdXJcLWFcLWhvcnNlXC1vbjsKK+mnhiA+IHNwdXJcLWFcLWhvcnNlXC1vbjsKK+mkqCA+IHB1YmxpY1wtYnVpbGRpbmc7CivlhIQgPiBodW5kcmVkXC1taWxsaW9uOwor5qGnID4gY2hpbmVzZVwtY3lwcmVzczsKK+iEjyA+IGludGVybmFsXC1vcmdhbnM7CivpqbEgPiBzcHVyXC1hXC1ob3JzZVwtb247CivlnLMgPiBmdXJyb3dcLWluXC1maWVsZDsKK+e5uyA+IGZpbmVcLXNpbGtcLWd1YXplOwor5a2fID4gZmlyc3RcLWluXC1zZXJpZXM7CivnuIsgPiBjbGltYlwtZG93blwtcm9wZTsKK+mWpCA+IHNtYWxsXC1zaWRlXC1kb29yOwor5paOID4gdmVnZXRhcmlhblwtZGlldDsKK+ebryA+IHJpdmV0XC1nYXplXC11cG9uOwor57KfID4gdW5odXNrZWRcLW1pbGxldDsKK+exkCA+IGNsaW1iaW5nXC1wbGFudHM7CivmjrsgPiBzY3JhdGNoXC1saWdodGx5Owor5L+YID4gcHJpc29uZXJcLW9mXC13YXI7CivmjL4gPiBjbGFzcFwtdW5kZXJcLWFybTsKK+iviiA+IGV4YW1pbmVcLXBhdGllbnQ7CivlqrMgPiBkYXVnaHRlclwtaW5cLWxhdzsKK+WumSA+IHRpbWVcLWFzXC1jb25jZXB0Owor5ZGcID4gc291bmRcLW9mXC1jcnlpbmc7CivljZwgPiBmb3J0dW5lXC10ZWxsaW5nOwor5oiyID4gdGhlYXRyaWNhbFwtcGxheTsKK+aIryA+IHRoZWF0cmljYWxcLXBsYXk7CivluJYgPiBpbnZpdGF0aW9uXC1jYXJkOwor6YCeID4gaW5kdWxnZVwtb25lc2VsZjsKK+aPqiA+IGdyYXNwXC13aXRoXC1oYW5kOwor5LuRID4gbG9naWNhbFwtcmVhc29uczsKK+a1hiA+IGFueVwtdGhpY2tcLWZsdWlkOwor5oyfID4gY2xhc3BcLXVuZGVyXC1hcm07CivnhZ4gPiBtYWxpZ25hbnRcLWRlaXR5Owor5paLID4gdmVnZXRhcmlhblwtZGlldDsKK+mzjCA+IGh1Z2VcLXNlYVwtdHVydGxlOwor5Y2mID4gZm9ydHVuZVwtdGVsbGluZzsKK+eeqSA+IHdhdGNoXC1jYXJlZnVsbHk7CivnlpogPiBjaHJvbmljXC1kaXNlYXNlOwor6JSTID4gY3JlZXBpbmdcLXBsYW50czsKK+mqjyA+IGV4Y2VsbGVudFwtaG9yc2U7Civpl70gPiBmdWppYW5cLXByb3ZpbmNlOwor6KKFID4gY3VybGluZ1wtdXB3YXJkczsKK+i+kCA+IHNwb2tlc1wtb2ZcLXdoZWVsOwor55CJID4gc3BhcmtsaW5nXC1zdG9uZTsKK+iInCA+IGxlZ2VuZGFyeVwtcnVsZXI7CivovacgPiBjcnVzaFwtYnlcLXdlaWdodDsKK+a7hyA+IHl1bm5hblwtcHJvdmluY2U7CivprJMgPiBoYWlyXC1vblwtdGVtcGxlczsKK+ahkyA+IHZhcmlldHlcLW9mXC10cmVlOwor5qOgID4gY3JhYlwtYXBwbGVcLXRyZWU7CivlkK4gPiBzdWNrXC13aXRoXC1tb3V0aDsKK+ictyA+IGNyZWVwXC1saWtlXC13b3JtOwor5p63ID4gY2FuZ3VlXC1zY2FmZm9sZDsKK+e+siA+IGFuY2llbnRcLWVtcGVyb3I7CivlrZogPiBicm9vZFwtb3ZlclwtZWdnczsKK+mqgSA+IGV4Y2VsbGVudFwtaG9yc2U7CivnmpEgPiBicmlsbGlhbnRcLXdoaXRlOwor57ylID4gbGlnaHRcLWJsdWVcLXNpbGs7Civor4wgPiBwbGF5XC13aXRoXC13b3JkczsKK+azviA+IG5hbWVcLW9mXC1hXC1yaXZlcjsKK+aBoyA+IGluZHVsZ2VcLW9uZXNlbGY7Civop44gPiBkZXNpcmVcLXN0cm9uZ2x5Owor5466ID4gaW1wZXJpYWxcLXNpZ25ldDsKK+WNniA+IHRvXC1iZVwtaW1wYXRpZW50Owor6L6UID4gYnJpZGxlXC1vZlwtaG9yc2U7CivotpQgPiBub3RcLXByb2dyZXNzaW5nOwor5b6cID4gd2Fsa2luZ1wtYW5kXC1mcm87CivojaAgPiB3YXRlclwtY2hlc3RudXRzOwor5rGeID4gZWxlbWVudFwtbWVyY3VyeTsKK+eVvyA+IGltcGVyaWFsXC1kb21haW47CivoiIIgPiBncmluZFwtaW5cLW1vcnRhcjsKK+extCA+IHB1cmNoYXNlXC1ncmFpbnM7CivnqbAgPiBzdGFsa3NcLW9mXC1ncmFpbjsKK+e8kiA+IGNsaW1iXC1kb3duXC1yb3BlOwor5ZeEID4gaG9hcnNlXC1vZlwtdm9pY2U7CivnnaUgPiBsb29rXC1hc2thbmNlXC1hdDsKK+a4miA+IHNtYWxsXC1zYW5kXC1iYW5rOwor56CdID4gYmFsYW5jZVwtd2VpZ2h0czsKK+advCA+IHNodXR0bGVcLW9mXC1sb29tOwor6b6DID4gaXJyZWd1bGFyXC10ZWV0aDsKK+WLkCA+IGltcGVyaWFsXC1kZWdyZWU7Civnn7ggPiBhXC1yb2NrXC1vclwtY2xpZmY7Civnl7wgPiBjaHJvbmljXC1kaXNlYXNlOwor6JWoID4gcHRlcmlzXC1hcXVpbGluYTsKK+ixiSA+IGZlcm1lbnRlZFwtYmVhbnM7Civlvq0gPiBjb25zY3JpcHRcLWxhYm9yOwor6bqIID4gc3BlY2llc1wtb2ZcLWRlZXI7CivolaQgPiBkcm9vcGluZ1wtbGVhdmVzOwor6bqCID4gc3BlY2llc1wtb2ZcLWRlZXI7Civnu6EgPiByYXdcLXNpbGtcLWZhYnJpYzsKK+iKqCA+IG5hbWVcLW9mXC1hXC1wbGFudDsKK+iLoyA+IGtpbmRcLW9mXC1sZXR0dWNlOwor56KbID4gc2FuZFwtYW5kXC1ncmF2ZWw7CivojpIgPiBoZW1wXC1saWtlXC1wbGFudDsKK+a/iSA+IG5hbWVcLW9mXC1hXC1yaXZlcjsKK+iQgSA+IGtpbmRcLW9mXC1ncmFzc2VzOwor55yEID4gdG9cLWxvb2tcLWFza2FuY2U7Civlm58gPiB0b3BcLW9mXC10aGVcLWhlYWQ7CivlsqMgPiBhXC1oaWxsXC1pblwtaHVuYW47Civll74gPiB0b1wtc2V0XC1hXC1kb2dcLW9uOwor6I2cID4gc3BlY2llc1wtb2ZcLWJlYW47Civns4EgPiBhXC1ncmFpblwtb2ZcLXJpY2U7Civnsp0gPiB1bnBvbGlzaGVkXC1yaWNlOwor6KOwID4gdG9cLW1lbmRcLWNsb3RoZXM7Civmn7AgPiBjcmFiXC1hcHBsZVwtdHJlZTsKK+iWqCA+IGRlYXRoXC1vZlwtcHJpbmNlOwor6IyRID4gdGhlXC1jb252b3Z1bHZ1czsKK+e/riA+IHN0ZW1cLW9mXC1mZWF0aGVyOwor6ImfID4gYW5jaWVudFwtd2Fyc2hpcDsKK+m8ryA+IGZseWluZ1wtc3F1aXJyZWw7CivnoKkgPiBuYW1lXC1vZlwtYVwtc3RvbmU7CivngrsgPiBhXC1raW5kXC1vZlwtY2hpbmE7CivmqqsgPiBzYXNzYWZyYXNcLXR6dW11Owor54u0ID4gYVwta2luZFwtb2ZcLXRhcGlyOwor6b6RID4gaGlnaFwtYW5kXC1icmlnaHQ7CivpvZ8gPiBpcnJlZ3VsYXJcLXRlZXRoOwor6b2LID4gdmVnZXRhcmlhblwtZGlldDsKK+m8lSA+IHJhdHRsZVwtb2ZcLWRydW1zOwor6byHID4gaHVnZVwtc2VhXC10dXJ0bGU7CivpuJMgPiBmbHlpbmdcLXNxdWlycmVsOwor6bSSID4gc3BlY2llc1wtb2ZcLWxhcms7CivptIIgPiB0aGVcLXRhaWxvclwtYmlyZDsKK+mzuyA+IHRoZVwtd2lsZFwtcGlnZW9uOwor6bOTID4gY2hpbmVzZVwtaGVycmluZzsKK+mxoSA+IHRoZVwtY3V0dGxlXC1maXNoOwor6bGFID4gYVwta2luZFwtb2ZcLXRlbmNoOwor6bCzID4gY2hpbmVzZVwtaGVycmluZzsKK+mwsiA+IGh1Z2VcLXNlYVwtdHVydGxlOwor6a2wID4gdGhlXC1mbHlpbmdcLWZpc2g7Civpq74gPiB0YWlsXC1vZlwtYVwtY29tZXQ7Civpq7QgPiBkaXNoZXZlbGVkXC1oYWlyOwor6am1ID4gZXhjZWxsZW50XC1ob3JzZTsKK+mpjSA+IGV4Y2VsbGVudFwtaG9yc2U7CivpqJggPiBhXC1waWViYWxkXC1ob3JzZTsKK+mnvyA+IGV4Y2VsbGVudFwtaG9yc2U7Civpp5QgPiBleGNlbGxlbnRcLWhvcnNlOwor6aWHID4gdG9cLWVhdFwtdG9vXC1tdWNoOwor6aK7ID4gZmxvYXRpbmdcLWluXC1haXI7Civpoq4gPiBzdG9ybVwtd2hpcmx3aW5kOwor6aGWID4gdG9wXC1vZlwtdGhlXC1oZWFkOwor6Z+eID4gYW5cLW9yYW5nZVwtY29sb3I7CivpnrQgPiBzYWRkbGVcLXVwXC1ob3JzZTsKK+mduCA+IGFcLWNoaWxkJydzXC1zaG9lczsKK+mbsSA+IHNub3dpbmdcLWhlYXZpbHk7CivplqkgPiBmdWppYW5cLXByb3ZpbmNlOwor6Y6kID4gc291bmRcLW9mXC1hXC1iZWxsOwor6Yq+ID4gZWxlbWVudFwtbWVyY3VyeTsKK+mGviA+IHVuZmlsdGVyZWRcLXdpbmU7CivphLkgPiBuYW1lXC1vZlwtYVwtc3RhdGU7CivovaEgPiBicmlkbGVcLW9mXC1ob3JzZTsKK+i8uyA+IHNwb2tlc1wtb2ZcLXdoZWVsOwor6LuLID4gY3J1c2hcLWJ5XC13ZWlnaHQ7CivouoAgPiB0b1wtc3R1bWJsZVwtb3ZlcjsKK+i2riA+IGVhc2lseVwtcHJvdm9rZWQ7CivorIUgPiBwbGF5XC13aXRoXC13b3JkczsKK+iroSA+IHBvc3RodW1vdXNcLW5hbWU7CivoqJIgPiBoZXNpdGF0ZVwtdG9cLXNheTsKK+impiA+IGRlc2lyZVwtc3Ryb25nbHk7CivopbwgPiAnJ2tpbW9ubycnXC1zbGVldmU7CivopYwgPiB1bmxpbmVkXC1nYXJtZW50Owor6KSnID4gdW5saW5lZFwtY2xvdGhlczsKK+iknSA+IHVubGluZWRcLWdhcm1lbnQ7Civoo4ogPiBjdXJsaW5nXC11cHdhcmRzOwor6J6aID4gZXJpc3RhbGlzXC10ZW5heDsKK+iXtiA+IGFcLWtpbmRcLW9mXC1wbGFudDsKK+iWuiA+IHdhdGVyXC1jaGVzdG51dHM7CivolaIgPiBlZGlibGVcLWFtYXJhbnRoOwor6JWNID4gYWxpc21hXC1wbGFudGFnczsKK+iUviA+IGtpbmRcLW9mXC1icmFtYmxlOwor6JSmID4gdGhlXC1jb252b3Z1bHZ1czsKK+iTvSA+IHNwZWNpZXNcLW9mXC1iZWFuOwor6JKoID4gbHVzaFwtdmVnZXRhdGlvbjsKK+iSkyA+IGFuXC1lZGlibGVcLXdhdGVyOwor6JKJID4gZWRpYmxlXC1hbWFyYW50aDsKK+iRkSA+IHRoZVwtcmFwZVwtdHVybmlwOwor6JCVID4gd2F0ZXJcLWNoZXN0bnV0czsKK+iLiCA+IGFcLWtpbmRcLW9mXC1wbGFudDsKK+iJhSA+IGFcLWRlc3BhdGNoXC1ib2F0Owor6IeTID4gaW50ZXJuYWxcLW9yZ2FuczsKK+iFoiA+IHRoZVwtY29sbGFyXC1ib25lOwor572/ID4gbmV0XC1jYXRjaFwtYmlyZHM7CivnuLkgPiBsaWdodFwtYmx1ZVwtc2lsazsKK+e2gyA+IHJhd1wtc2lsa1wtZmFicmljOwor57WNID4gdG9cLWxheVwtdGhlXC13YXJwOwor57WFID4gdW5saW5lZFwtZ2FybWVudDsKK+eztCA+IHB1cmNoYXNlXC1ncmFpbnM7Civns7IgPiB1bnBvbGlzaGVkXC1yaWNlOwor57GYID4gY2xpbWJpbmdcLXBsYW50czsKK+ewlCA+IGFcLWNvYXRcLXJhaW5jb2F0Owor57CRID4gYVwtY29hdFwtcmFpbmNvYXQ7Civnr7AgPiBhXC1iYW1ib29cLWJhc2tldDsKK+epoyA+IHN0YWxrc1wtb2ZcLWdyYWluOwor56mEID4gcGFuaWNsZWRcLW1pbGxldDsKK+emiyA+IG9mZmVyXC1zYWNyaWZpY2U7Civno6ogPiBhXC1oaWdoXC1tb3VudGFpbjsKK+ejpyA+IHNhbmRcLWFuZFwtZ3JhdmVsOwor56OOID4gbW91bnRhaW5cLXN0cmVhbTsKK+efmiA+IHdhdGNoXC1jYXJlZnVsbHk7CivnmpogPiBicmlsbGlhbnRcLXdoaXRlOwor55iIID4gcHJvbG9uZ2VkXC1mZXZlcjsKK+eYgyA+IHNvcmVzXC1mcm9tXC1jb2xkOwor55e+ID4gY2hyb25pY1wtaWxsbmVzczsKK+eXtSA+IGFcLWhlYXJ0XC1zeW1wdG9tOwor55euID4gYVwtc3dlbGxlZFwtYmVsbHk7Civnl6AgPiBhY2hpbmdcLW9mXC1saW1iczsKK+eXgSA+IGNocm9uaWNcLW1hbGFyaWE7CivnlqIgPiBhY2hpbmdcLW9mXC1saW1iczsKK+eVrCA+IHJlY2xhaW1lZFwtZmllbGQ7CivnlKQgPiBkcm9vcGluZ1wtbGVhdmVzOwor55K9ID4gaW1wZXJpYWxcLXNpZ25ldDsKK+eQrSA+IGphZGVcLWxpa2VcLXN0b25lOwor54+nID4gbW90aGVyXC1vZlwtcGVhcmw7Civnj4cgPiBjYXJ2aW5nXC1vblwtamFkZTsKK+eOnyA+IHN0cmVha3NcLWluXC1qYWRlOwor542xID4gYVwta2luZFwtb2ZcLW90dGVyOwor54urID4gbmFtZVwtb2ZcLWFcLXRyaWJlOwor54mEID4gdG9cLXdhbGtcLXJhcGlkbHk7CivnhpMgPiB0aGVcLWJhbmtcLWFcLWZpcmU7CivnhLUgPiB0b1wtdGVtcGVyXC1zdGVlbDsKK+eAtSA+IG5hbWVcLW9mXC1hXC1yaXZlcjsKK+eAniA+IHBvb2xcLWluXC1hXC1yaXZlcjsKK+a9mSA+IHJpdmVyXC1pblwtc2hhbnhpOwor5ry1ID4gbmFtZVwtb2ZcLWFcLXJpdmVyOwor5ruOID4gY291bnR5XC1pblwtaGVuYW47CivmuqQgPiBuYW1lXC1vZlwtYVwtcml2ZXI7CivmuJMgPiBtb3VudGFpblwtc3RyZWFtOwor5reTID4gbmFtZVwtb2ZcLWFcLXJpdmVyOwor5raHID4gbmFtZVwtb2ZcLWFcLXJpdmVyOwor5rOpID4gcmlzaW5nXC1vZlwtd2F0ZXI7CivmspogPiBpc2xldFwtaW5cLXN0cmVhbTsKK+aymCA+IG5hbWVcLW9mXC1hXC1yaXZlcjsKK+amoSA+IHF1ZXJjdXNcLWRlbnRhdGE7CivmpLogPiBiZWFtXC1vZlwtYVwtaG91c2U7Civmn44gPiBjYWx5eFwtb2ZcLWZsb3dlcjsKK+afgSA+IGxhcmdlXC10aWVcLWJlYW1zOwor5p6sID4gYW5cLWV2ZW5cLWdyYWluZWQ7CivmnKMgPiB0aGVcLXJpc2luZ1wtbW9vbjsKK+aRuyA+IGFcLWRlbGljYXRlXC1oYW5kOwor5o+rID4gZ3Jhc3BcLXdpdGhcLWhhbmQ7CivmiLEgPiB0aGVhdHJpY2FsXC1wbGF5Owor5oiEID4gdG9cLWJlXC1pblwtYXdlXC1vZjsKK+W/kyA+IGNvbmNlcm5lZFwtYWJvdXQ7CivlvqwgPiB0b1wtd2FuZGVyXC1hYm91dDsKK+W8tCA+IHJlZFwtbGFjcXVlclwtYm93Owor5be5ID4gbnVwdGlhbFwtd2luZWN1cDsKK+W1jiA+IG1vdW50YWluXC1yZWNlc3M7Civls54gPiBoaWdoXC1hbmRcLXVuZXZlbjsKK+WksiA+IGFkdmFuY2VcLXF1aWNrbHk7CivlnbQgPiBhXC1jbG9kXC1vZlwtZWFydGg7CivllqMgPiB0b1wtYnJlYXRoZVwtdXBvbjsKK+WUsiA+IGZvcmNlZFwtbGF1Z2h0ZXI7CivljpwgPiBhXC1tb3VudGFpblwtcGVhazsKK+WMiSA+IG5vaXNlXC1vZlwtd2F0ZXJzOwor5YyEID4gdG9cLWJlZ1wtZm9yXC1hbG1zOwor5YuFID4gaW1wZXJpYWxcLWRlZ3JlZTsKK+WKmCA+IG1ha2VcLWludG9cLW1pbmNlOwor5YqWID4gbWFrZVwtaW50b1wtbWluY2U7Civlgr0gPiB0ZXJyb3JcLXN0cmlja2VuOwor5L6WID4gbG9naWNhbFwtcmVhc29uczsKK+S9lCA+IG9jY3VweVwtYnlcLWZvcmNlOwor5Lm4ID4gZmVtaW5pbmVcLXN1ZmZpeDsKK+S2oSA+IHNvdW5kXC1vZlwtYml0aW5nOwor5LaOID4gc291bmRcLW9mXC1icmVhdGg7CivktZsgPiBwYW5pY2xlZFwtbWlsbGV0Owor5LWWID4gcGFuaWNsZWRcLW1pbGxldDsKK+S0viA+IHRvXC1ncmluZFwtYmFybGV5Owor5LSuID4gY2FrZXNcLXBmXC1sZWF2ZW47CivktI4gPiBmbHlpbmdcLXNxdWlycmVsOwor5LK+ID4gdGhlXC10YWlsb3JcLWJpcmQ7Civkr4QgPiBhXC1waWViYWxrXC1ob3JzZTsKK+SuvSA+IGJpdFwtZm9yXC1hXC1ob3JzZTsKK+SutSA+IG5hbWVcLW9mXC1hXC1ob3JzZTsKK+SusSA+IGFcLWtpbmRcLW9mXC1iZWFzdDsKK+SusCA+IGFcLWtpbmRcLW9mXC1iZWFzdDsKK+SurCA+IG5hbWVcLW9mXC1hXC1ob3JzZTsKK+SuqCA+IGFcLXBpZWJhbGRcLWhvcnNlOwor5K6nID4gbG9uZ1wtaGFpclwtaG9yc2U7CivkrqIgPiBhXC13YWxraW5nXC1ob3JzZTsKK+SuniA+IGFcLXBpZWJhbGRcLWhvcnNlOwor5K6ZID4gbmFtZVwtb2ZcLWFcLWhvcnNlOwor5K6WID4gbmFtZVwtb2ZcLWFcLWhvcnNlOwor5K6TID4gYVwtd2Fsa2luZ1wtaG9yc2U7CivkrpIgPiBuYW1lXC1vZlwtYVwtaG9yc2U7Civkro8gPiBuYW1lXC1vZlwtYVwtaG9yc2U7Civkro4gPiBhXC1ydW5uaW5nXC1ob3JzZTsKK+SuiyA+IG5hbWVcLW9mXC1hXC1ob3JzZTsKK+SuiiA+IG5hbWVcLW9mXC1hXC1ob3JzZTsKK+StvCA+IGRhcmtcLWJsdWVcLWhvcnNlOwor5K22ID4gZGFya1wtYmx1ZVwtaG9yc2U7CivkrKsgPiBjbGFyZmllZFwtYnV0dGVyOwor5KyBID4gYVwtbGlnaHRcLWN5Y2xvbmU7Civkqq4gPiBiZWF1dGlmdWxcLXNvdW5kOwor5KqVID4gdG9cLXdyYXBcLW9yXC1iYW5kOwor5Km5ID4gdG9cLXJlcGFpclwtc2hvZXM7CivkqZIgPiBkcmVzc2VkXC1sZWF0aGVyOwor5KmEID4gdG9cLWZhY2VcLXRvXC1mYWNlOwor5KimID4gc25vd2luZ1wtaGVhdmlseTsKK+SooiA+IGFcLXBhc3NpbmdcLWNsb3VkOwor5KiWID4gdG9cLXN0b3BcLXJhaW5pbmc7CivkqJEgPiB0b1wtc3RvcFwtcmFpbmluZzsKK+SogCA+IHRvXC1sYXlcLWluXC1ncmFpbjsKK+SnryA+IG5hbWVcLW9mXC1hXC1wbGFjZTsKK+SnriA+IG5hbWVcLW9mXC1hXC1wbGFjZTsKK+SnnSA+IG5hbWVcLW9mXC1hXC1wbGFjZTsKK+SnjCA+IG5hbWVcLW9mXC1hXC1wbGFjZTsKK+SniyA+IG5hbWVcLW9mXC1hXC1wbGFjZTsKK+SngyA+IG5hbWVcLW9mXC1hXC1wbGFjZTsKK+SmuyA+IG5hbWVcLW9mXC1hXC1wbGFjZTsKK+SmqyA+IGluc2lkZVwtdGhlXC1kb29yOwor5KagID4gbmFtZVwtb2ZcLWFcLXJpdmVyOwor5KWXID4gYVwtYnJhbmRpbmdcLWlyb247CivkpLEgPiBhXC1zb2xlbW5cLXBsZWRnZTsKK+SjtiA+IHVuc3RyYWluZWRcLXdpbmU7Civko7MgPiB1bnN0cmFpbmVkXC13aW5lOwor5KOTID4gbmFtZVwtb2ZcLWFcLXN0YXRlOwor5KOQID4gbmFtZVwtb2ZcLWFcLXBsYWNlOwor5KOLID4gbmFtZVwtb2ZcLWFcLXBsYWNlOwor5KOKID4gbmFtZVwtb2ZcLWFcLXBsYWNlOwor5KOHID4gbmFtZVwtb2ZcLWFcLXBsYWNlOwor5KK7ID4gbmFtZVwtb2ZcLWFcLXBsYWNlOwor5KK0ID4gbmFtZVwtb2ZcLWFcLXBsYWNlOwor5KKzID4gbmFtZVwtb2ZcLWFcLXBsYWNlOwor5KKmID4gdG9cLWxlYWRcLXRoZVwtd2F5Owor5KKWID4gdG9cLWJlXC1zY2F0dGVyZWQ7CivkooEgPiB0aXJlXC1vZlwtYVwtd2hlZWw7CivkobsgPiBzaGFrZVwtb2ZcLWFcLWNhcnQ7CivkoaggPiBjb25uZWN0ZWRcLWNhcnRzOwor5KGTID4gc2hha2VcLW9mXC1hXC1jYXJ0Owor5KGQID4gdG9cLW1vdmVcLXN3aWZ0bHk7CivkoLUgPiB0b1wtd2VhclwtY2xvdGhlczsKK+SgqCA+IHdhbGtpbmdcLXJhcGlkbHk7Civkn5sgPiB3YWxraW5nXC1yYXBpZGx5Owor5J+RID4gd2Fsa2luZ1wtcmFwaWRseTsKK+SetyA+IHdhbGtpbmdcLXJhcGlkbHk7CivknrYgPiB3YWxraW5nXC1yYXBpZGx5Owor5J6wID4gd2Fsa2luZ1wtcmFwaWRseTsKK+SerSA+IHdhbGtpbmdcLXJhcGlkbHk7CivknqwgPiB0b1wtcGFzc1wtdGhyb3VnaDsKK+SeqiA+IHdhbGtpbmdcLXJhcGlkbHk7Civkna8gPiB0b1wtY2hhbmdlXC1oYW5kczsKK+SdkCA+IGFcLWNhc3RyYXRlZFwtaG9nOwor5Jy+ID4gZmVybWVudGVkXC1iZWFuczsKK+ScuyA+IGZlcm1lbnRlZFwtYmVhbnM7CivknLUgPiBmZXJtZW50ZWRcLWJlYW5zOwor5JyEID4gc2xvd1wtb25cLXRhbGtpbmc7Civkm7UgPiB0b1wtdGVhY2hcLW9yYWxseTsKK+SbnyA+IHdpbGRcLXN0YXRlbWVudHM7Civkm5QgPiB0b1wtaG9sZFwtaW5cLWhhbmQ7CivkmqYgPiBzbGFudGVkXC1jb3JuZXJzOwor5JqlID4gdG9cLWFkanVzdFwtYVwtYm93Owor5Jm7ID4gdG9cLXN0ZWFsXC1hXC1sb29rOwor5JmoID4gdG9cLXdyYXBcLW9yXC1iaW5kOwor5JmdID4gdW5kZXJcLWdhcnJtZW50czsKK+SXviA+IGNvcmJpY3VsYVwtbGVhbmE7CivklrwgPiB0aGVcLWR1bmdcLWJlZXRsZTsKK+SWmSA+IGFcLXJlc3RpbmdcLXRpZ2VyOwor5JaJID4gdG9cLXJvYXJcLW9yXC1ob3dsOwor5JW3ID4gYVwta2luZFwtb2ZcLXBsYW50Owor5JWZID4gdG9cLXNldFwtaW5cLW9yZGVyOwor5JWJID4gYVwta2luZFwtb2ZcLXBsYW50Owor5JSnID4gYVwta2luZFwtb2ZcLXBsYW50Owor5JSHID4gYVwta2luZFwtb2ZcLXBsYW50Owor5JO2ID4gYVwta2luZFwtb2ZcLXBsYW50Owor5JOeID4gYVwta2luZFwtb2ZcLXBsYW50Owor5JOYID4gYVwta2luZFwtb2ZcLXBsYW50Owor5JOIID4gYVwta2luZFwtb2ZcLXBsYW50Owor5JK3ID4gYVwta2luZFwtb2ZcLXBsYW50Owor5JKSID4gbmFtZVwtb2ZcLWFcLXBsYW50Owor5JKMID4gZGFya1wtYmx1ZVwtY29sb3I7CivkkJwgPiBhXC1zd2VsbGVkXC1iZWxseTsKK+SPsiA+IHByb3RydWRlZFwtYm9uZXM7CivkjrMgPiBsb3NlXC1vZlwtdGhlXC1lYXI7CivkjokgPiB0b1wtd2Fsa1wtc3dpZnRseTsKK+SMviA+IHRvXC1sYXlcLXRoZVwtd2FycDsKK+SLtyA+IGFcLWtpbmRcLW9mXC10aGljazsKK+SLlSA+IHRvXC1sYXlcLXRoZVwtd2FycDsKK+SKtSA+IHlvdW5nXC1hbmRcLXNtYWxsOwor5IqXID4gYVwta2luZFwtb2ZcLWdyYWluOwor5IqJID4gcHJlc2VydmVkXC1mcnVpdDsKK+SJpyA+IHNvdW5kXC1vZlwtYmFtYm9vOwor5IaCID4gYVwta2luZFwtb2ZcLWdyYWluOwor5IW3ID4gYW5cLWVhclwtb2ZcLWdyYWluOwor5IWwID4gYVwta2luZFwtb2ZcLWdyYXNzOwor5IWhID4gYVwta2luZFwtb2ZcLWdyYXNzOwor5IWgID4gYVwta2luZFwtb2ZcLWdyYXNzOwor5IWeID4gc3RhbGtzXC1vZlwtZ3JhaW47CivkhYsgPiBhXC1raW5kXC1vZlwtZ3JhaW47CivkhYIgPiBhXC1raW5kXC1vZlwtZ3JhaW47CivkhLEgPiBhXC1raW5kXC1vZlwtZ3JhaW47CivkhK4gPiBkYXJrXC1yaWNlXC1wbGFudDsKK+SEpyA+IGFcLWtpbmRcLW9mXC1ncmFpbjsKK+SElSA+IGdvZFwtb2ZcLXRoZVwtbGFuZDsKK+SDtyA+IGFcLWtpbmRcLW9mXC1zdG9uZTsKK+SDtSA+IGFcLWtpbmRcLW9mXC1zdG9uZTsKK+SDniA+IGFcLWtpbmRcLW9mXC1zdG9uZTsKK+SDkiA+IHBvb3JcLWFuZFwtYmFycmVuOwor5IKtID4gbmFtZVwtb2ZcLWFcLXBsYWNlOwor5IKaID4gYVwta2luZFwtb2ZcLXN0b25lOwor5IG0ID4ga2VlcFwtb25cLWxvb2tpbmc7CivkgbMgPiB0b1wtbG9zZVwtb25lXC1leWU7CivkgKkgPiB0b1wtbG9va1wtYXNrYW5jZTsKK+SAjiA+IHRvXC1sb29rXC1hc2thbmNlOwor5ICJID4gZm9vZFwtY29udGFpbmVyczsKK+O/sSA+IGRyeVwtYW5kXC1kZWNheWVkOwor476pID4gbWFsaWduYW50XC1ib2lsczsKK+O9vSA+IGNocm9uaWNcLWRpc2Vhc2U7CivjvacgPiBuYW1lXC1vZlwtYVwtcGxhY2U7CivjvJUgPiBwdWxwXC1vZlwtYVwtbWVsb247CivjvJQgPiBhXC1raW5kXC1vZlwtbWVsb247CivjvJEgPiBwdWxwXC1vZlwtYVwtbWVsb247CivjvI0gPiBwdWxwXC1vZlwtYVwtbWVsb247CivjvIogPiBhXC1raW5kXC1vZlwtbWVsb247CivjvIIgPiBhXC1jcmFja1wtaW5cLWphZGU7Civju7ggPiBqYWRlXC1saWtlXC1zdG9uZTsKK+O7tyA+IG5hbWVcLW9mXC1hXC1wbGFjZTsKK+O7jSA+IG5hbWVcLW9mXC1hXC1zd29yZDsKK+O6pCA+IGFcLWtpbmRcLW9mXC1iZWFzdDsKK+O6oSA+IGFcLWtpbmRcLW9mXC1iZWFzdDsKK+O6nyA+IGFcLWtpbmRcLW9mXC1iZWFzdDsKK+O6lCA+IGFcLWtpbmRcLW9mXC1iZWFzdDsKK+O6jSA+IGFcLWtpbmRcLW9mXC1vdHRlcjsKK+O6jCA+IGVuZGxlc3NcLWJhcmtpbmc7CivjuoQgPiBhXC1raW5kXC1vZlwtYmVhc3Q7CivjuoEgPiBhXC1raW5kXC1vZlwtYmVhc3Q7CivjuacgPiBmb3hcLWxpa2VcLWFuaW1hbDsKK+O4sSA+IGhvcm5sZXNzXC1jYXR0bGU7CivjuLAgPiBob3JubGVzc1wtY2F0dGxlOwor47ipID4gdG9cLWRlc2lzdFwtYW5cLW94Owor47iRID4gYVwtY29va2luZ1wtc3RvdmU7Civjt40gPiBhXC1jaGVtaWNhbFwtdGVybTsKK+O2myA+IG5hbWVcLW9mXC1hXC1yaXZlcjsKK+O1siA+IG5hbWVcLW9mXC1hXC1yaXZlcjsKK+O1pyA+IG5hbWVcLW9mXC1hXC1yaXZlcjsKK+O1kSA+IG5hbWVcLW9mXC1hXC1yaXZlcjsKK+O1giA+IG5hbWVcLW9mXC1hXC1yaXZlcjsKK+O0qiA+IG5hbWVcLW9mXC1hXC1yaXZlcjsKK+OzvyA+IHJvbGxpbmdcLWJpbGxvd3M7Civjs74gPiBuYW1lXC1vZlwtYVwtcml2ZXI7Civjs7ggPiBuYW1lXC1vZlwtYVwtcml2ZXI7Civjs7cgPiBkYXJrXC1ibHVlXC1jb2xvcjsKK+OztiA+IG5hbWVcLW9mXC1hXC1yaXZlcjsKK+OztSA+IG5hbWVcLW9mXC1hXC1yaXZlcjsKK+OzoSA+IG5hbWVcLW9mXC1hXC1yaXZlcjsKK+OzlyA+IGJhbmtcLW9mXC1hXC1yaXZlcjsKK+OzliA+IG5hbWVcLW9mXC1hXC1yaXZlcjsKK+OyvCA+IG5hbWVcLW9mXC1hXC1yaXZlcjsKK+OylCA+IHdvb2xlblwtdGV4dGlsZXM7Civjso4gPiB3b29sZW5cLXRleHRpbGVzOwor47KNID4gd29vbGVuXC10ZXh0aWxlczsKK+OxjiA+IGNhbm5vdFwtYmVcLWtub3duOwor47CsID4gc2hvcnR3aW5kZWRuZXNzOwor47CXID4gYVwta2luZFwtb2ZcLW1hcGxlOwor47CIID4gbmljZVwtYW5kXC1wcmV0dHk7Civjr7EgPiBhblwtZW5sYXJnZWRcLWJhZzsKK+OvpCA+IHRoZVwtanVqdWJlXC10cmVlOwor46+UID4gdG9cLWh1bGxcLWhlYXZpbHk7CivjrqEgPiB0b1wtbGlnaHRcLWFcLWZpcmU7CivjraQgPiB0aGVcLWNvbnZvbHZ1bHVzOwor46ugID4gYVwta2luZFwtb2ZcLXdhdGVyOwor46qrID4gd2lzZVwtYW5kXC1jbGV2ZXI7CivvqKwgPiBwdWJsaWNcLWJ1aWxkaW5nOwor76iHID4gc3Bva2VzXC1vZlwtd2hlZWw7Civjp44gPiBmb3JrZWRcLWJyYW5jaGVzOwor76eMID4gc3BhcmtsaW5nXC1zdG9uZTsKK+OlniA+IHRvXC10aGlua1wtZGVlcGx5Owor46WbID4gd2l0aFwtZXhwZWRpdGlvbjsKK+OiniA+IHJvb21zXC1jb25uZWN0ZWQ7Civjoo0gPiBhXC1sb25nXC12ZXJhYmRhaDsKK+OhsiA+IHRpbGVzXC1vblwtYVwtcm9vZjsKK+OhgCA+IHJhZ2dlZFwtY2xvdGhpbmc7CivjoIggPiBuYW1lXC1vZlwtYVwtcGxhY2U7CivjoIIgPiBuYW1lXC1vZlwtYVwtcGxhY2U7Civjn5QgPiBzdGVlcFwtYW5kXC1sb2Z0eTsKK+OfjyA+IHN0ZWVwXC1hbmRcLWxvZnR5Owor452lID4gaGF2ZVwtYVwtbmlnaG1hcmU7CivjnYUgPiB0b1wtZ2l2ZVwtc3Vja1wtdG87CivjnLIgPiB0b1wtaGF2ZVwtc3VycGx1czsKK+ObsCA+IHRvXC1tYXJyeVwtYVwtd2lmZTsKK+OapiA+IGFcLWNoYXJtaW5nXC1naXJsOwor45m8ID4gYVwtbWlsaXRhcnlcLXdhbGw7CivjmbggPiBhXC1jbG9kXC1vZlwtZWFydGg7CivjmZcgPiBhXC1sdW1wXC1vZlwtZWFydGg7CivjmLogPiBjdWx0aXZhdGVkXC1sYW5kOwor45i1ID4gbmFtZVwtb2ZcLWFcLXBsYWNlOwor45e/ID4gdG9cLWxhdWdoXC1sb3VkbHk7CivjlbIgPiB0b1wtZ2FnXC1vclwtYnJpYmU7CivjlZggPiB0b1wtdGFrZVwtcGFydFwtaW47Civjkp8gPiB3aXRoXC1hXC1jaGFybWluZzsKK+OQvSA+IG5hbWVcLW9mXC1hXC1wbGFjZTsKK+i6hSA+IHdhbGtcLWNhcmVmdWxseTsKK+W3tCA+IGdyZWF0bHlcLWRlc2lyZTsKK+acnyA+IHBlcmlvZFwtb2ZcLXRpbWU7Civlj7ggPiB0YWtlXC1jaGFyZ2VcLW9mOwor55SlID4gc2lzdGVyJydzXC1jaGlsZDsKK+WxjyA+IGZvbGRpbmdcLXNjcmVlbjsKK+eLkCA+IHNwZWNpZXNcLW9mXC1mb3g7CivmsYkgPiBjaGluZXNlXC1wZW9wbGU7CivlprkgPiB5b3VuZ2VyXC1zaXN0ZXI7CivkvIEgPiBwbGFuXC1hXC1wcm9qZWN0Owor6KWWID4gb3V0ZXJcLWdhcm1lbnRzOwor5aOBID4gcGFydGl0aW9uXC13YWxsOwor6Z+mID4gdGFubmVkXC1sZWF0aGVyOwor5r2wID4gZmxvb2RpbmdcLXJpdmVyOwor54+gID4gcHJlY2lvdXNcLXN0b25lOwor6ZSLID4gcG9pbnRcLW9mXC1zcGVhcjsKK+S/lyA+IHNvY2lhbFwtY3VzdG9tczsKK+aqkCA+IGVhdmVzXC1vZlwtaG91c2U7CivpqpEgPiByaWRlXC1ob3JzZWJhY2s7Civlh70gPiBjb3JyZXNwb25kZW5jZTsKK+mtjyA+IGtpbmdkb21cLW9mXC13ZWk7CivmnpogPiBzdGFsa1wtb2ZcLXNocnViOwor5LuyID4gbWlkZGxlXC1icm90aGVyOwor55CzID4gYmVhdXRpZnVsXC1qYWRlOwor5YeRID4gcGllY2VcLXRvZ2V0aGVyOwor6YOBID4gc3dlZXRcLXNtZWxsaW5nOwor6IqvID4gcGl0aFwtZnJvbVwtcnVzaDsKK+e4niA+IHdoaXRlXC1yYXdcLXNpbGs7Civml6wgPiB0ZW5cLWRheVwtcGVyaW9kOwor57a6ID4gZmluZVwtdGhpblwtc2lsazsKK+WmqCA+IGludGVyZmVyZVwtd2l0aDsKK+mqhCA+IHNwaXJpdGVkXC1ob3JzZTsKK+ewtyA+IGVhdmVzXC1vZlwtaG91c2U7CivmjrQgPiBib3hcLW9uZScnc1wtZWFyczsKK+WXryA+IGZpbmFsXC1wYXJ0aWNsZTsKK+WyrSA+IG1vdW50YWluXC1yaWRnZTsKK+a5mCA+IGh1bmFuXC1wcm92aW5jZTsKK+mKgyA+IGFuY2llbnRcLXdlYXBvbjsKK+a6gyA+IGZsb29kaW5nXC1yaXZlcjsKK+mTriA+IGNsYW5naW5nXC1zb3VuZDsKK+iOuSA+IGx1c3Rlclwtb2ZcLWdlbXM7Civlg7sgPiBvdXRcLW9mXC10aGVcLXdheTsKK+e7riA+IGZpbmVcLXRoaW5cLXNpbGs7CivmuLogPiBlbmRsZXNzbHlcLWxvbmc7CivkvaMgPiBjb21taXNzaW9uXC1mZWU7Civlkq8gPiBmaW5hbFwtcGFydGljbGU7CivlkZsgPiBjaG9rZVwtYnlcLXNtb2tlOwor5YewID4gZmVtYWxlXC1waG9lbml4Owor6Ze6ID4gc21hbGxcLWVudHJhbmNlOwor57yAID4gcGF0Y2hcLXRvZ2V0aGVyOwor6KKEID4gb3V0ZXJcLWdhcm1lbnRzOwor55KLID4gamFkZVwtcGxheXRoaW5nOwor5ou0ID4gYmluZFwtd2l0aFwtcm9wZTsKK+enpyA+IHJpY2VcLXNlZWRsaW5nczsKK+iVgyA+IGZvcmVpZ25cLXRoaW5nczsKK+mEgiA+IGh1YmVpXC1wcm92aW5jZTsKK+ajsSA+IHNxdWFyZWRcLXRpbWJlcjsKK+ailyA+IHN0ZW1cLW9mXC1mbG93ZXI7Civoj7EgPiB3YXRlclwtY2hlc3RudXQ7CivplZEgPiBwb3VuZFwtc3Rlcmxpbmc7CivmoKkgPiBzcGVjaWVzXC1vZlwtb2FrOwor5ZS3ID4gZmluYWxcLXBhcnRpY2xlOwor55KeID4gdW5wb2xpc2hlZFwtZ2VtOwor6ZuvID4gY2xvdWRcLXBhdHRlcm5zOwor6K63ID4gc2xvd1wtb2ZcLXNwZWVjaDsKK+eShyA+IGJlYXV0aWZ1bFwtamFkZTsKK+eLsCA+IGZpZXJjZVwtbG9va2luZzsKK+WzpiA+IG1vdW50YWluXC1yYW5nZTsKK+a5gyA+IHNvdW5kXC1vZlwtd2F2ZXM7CivlqKMgPiB5b3VuZ2VyXC1zaXN0ZXI7CivonZcgPiBraW5kXC1vZlwtbG9jdXN0Owor55qWID4gYW5odWlcLXByb3ZpbmNlOwor6YWLID4gY2hpZWZcLW9mXC10cmliZTsKK+WjkSA+IGJlZFwtb2ZcLXRvcnJlbnQ7Civns68gPiBnbHV0aW5vdXNcLXJpY2U7CivnqLcgPiBnb2RcLW9mXC1jZXJlYWxzOwor5aG+ID4gdmlsbGFnZVwtc2Nob29sOwor54upID4gd2ludGVyXC1odW50aW5nOwor5oiNID4gZGVmZW5kXC1ib3JkZXJzOwor55KAID4gbHVzdHJlXC1vZlwtZ2VtczsKK+eJjSA+IHdyaXRpbmdcLXRhYmxldDsKK+mVjCA+IGVuZ3JhdmluZ1wtdG9vbDsKK+mlryA+IGZhcmV3ZWxsXC1wYXJ0eTsKK+m5giA+IGNoaW5lc2VcLW9yaW9sZTsKK+WboSA+IG9uZScnc1wtZGF1Z2h0ZXI7Civmup8gPiBkcml6emxpbmdcLXJhaW47CivplI8gPiBraW5kXC1vZlwtcmFwaWVyOwor5bGZID4gdG9cLWVhc2VcLW5hdHVyZTsKK+eQqCA+IGJlYXV0aWZ1bFwtamFkZTsKK+eOsyA+IHRvcnRvaXNlXC1zaGVsbDsKK+eRrSA+IGFcLWtpbmRcLW9mXC1qYWRlOwor5p2IID4gZm9ya1wtb2ZcLWFcLXRyZWU7CivljJAgPiBmYWxsXC1wcm9zdHJhdGU7CivnoKMgPiBhXC1zdG9uZVwtcm9sbGVyOwor6ZOiID4gdW5pdFwtb2ZcLXdlaWdodDsKK+mqiCA+IHRlYW1cLW9mXC1ob3JzZXM7CivlmbEgPiBsYXVnaFwtaGVhcnRpbHk7Civpk7MgPiBhbmNpZW50XC13ZWFwb247Civnm7EgPiB3aWRlXC1vcGVuXC1leWVzOwor6ICEID4gZWxkZXJseVwtcGVyc29uOwor5qaUID4gYmV0ZWxcLW51dFwtdHJlZTsKK+ivpCA+IHRvXC1leHBvc3R1bGF0ZTsKK+idriA+IHZlbm9tb3VzXC1zbmFrZTsKK+mijSA+IHJpdmVyXC1pblwtYW5odWk7CivmpZ0gPiBtZWxpYVwtamFwb25pY2E7CivonbwgPiBhXC1tb2xlXC1jcmlja2V0Owor6I2qID4gYXJvbWF0aWNcLWdyYXNzOwor5aiMID4gYnJvdGhlcicnc1wtd2lmZTsKK+e8nyA+IHdoaXRlXC1yYXdcLXNpbGs7CivmmbcgPiBzaGFkb3dzXC1vZlwtc3VuOwor5Ze1ID4gdXNlZFwtZm9yXC1zb3VuZDsKK+i4hSA+IHRvXC13YWxrXC1hcm91bmQ7Civmj4YgPiBwcmltZVwtbWluaXN0ZXI7CivnjJUgPiBtYWNhY3VzXC1tb25rZXk7Civljp0gPiBjdXRcLW9yXC1lbmdyYXZlOwor6JGaID4gbXVsYmVycnlcLWZydWl0Owor6ICSID4gaGFuZGxlXC1vZlwtcGxvdzsKK+WYniA+IGZpbmFsXC1wYXJ0aWNsZTsKK+mMviA+IGVuZ3JhdmluZ1wtdG9vbDsKK+ePmSA+IHByZWNpb3VzXC1zdG9uZTsKK+iNuCA+IHdhdGVyXC1jaGVzdG51dDsKK+S/hSA+IG9ybmFtZW50YWxcLWNhcDsKK+iPvSA+IGJlYW5zXC1hbmRcLXBlYXM7Civpnq8gPiBzYWRkbGVcLWJsYW5rZXQ7CivpvJAgPiBpbmNlbnNlXC10cmlwb2Q7CivosLAgPiBhY2N1c2VcLWZhbHNlbHk7CivpqrEgPiBqb2ludFwtb2ZcLWJvbmVzOwor6KymID4gdFwtc3BlYWtcLXNvZnRseTsKK+ejtCA+IHN0ZXBzXC1vblwtbGVkZ2U7CivlqbogPiBuYW1lXC1vZlwtYVwtc3RhcjsKK+WgjSA+IHNpZGVcLW9mXC1icmlkZ2U7CivmoasgPiBob3JzZVwtY2hlc3RudXQ7CivmvLYgPiBpbmRlY2lwaGVyYWJsZTsKK+WtpSA+IG9uZScnc1wtY2hpbGRyZW47CivmurEgPiByaXZlclwtaW5cLWhlbmFuOwor5bqgID4gdmlsbGFnZVwtc2Nob29sOwor6bulID4gdGF0dG9vaW5nXC1mYWNlOwor6LqQID4gdG9cLXN0cmlkZVwtb3ZlcjsKK+i5ryA+IHBhd3NcLW9mXC1hbmltYWw7Civnm40gPiB3aGF0XD9cLXdoeVwtbm90XD87CivmuoYgPiByaXZlclwtaW5cLWh1bmFuOwor56OyID4gdHJpZGFjbmFcLWdpZ2FzOwor5pidID4gYVwtZHVhbFwtcHJvbm91bjsKK+afvSA+IHR5cGVcLW9mXC13aWxsb3c7CivnvKwgPiBwYXR0ZXJuZWRcLXNpbGs7CivpqbogPiBtb3VudGVkXC1lc2NvcnQ7CivpmIogPiBnYXRlXC1vZlwtaGVhdmVuOwor6I2pID4gYVwta2luZFwtb2ZcLXdlZWQ7Civoio4gPiBhXC1raW5kXC1vZlwtaGVyYjsKK+mLiCA+IHNpbHZlclwtcGxhdGluZzsKK+m+hSA+IHRlZXRoXC1wcm90cnVkZTsKK+aZoSA+IGxhdGVcLWFmdGVybm9vbjsKK+aqoCA+IHN0YW5kXC1mb3JcLWxhbXA7CivpgK0gPiB0b1wtZXNjYXBlXC1mcm9tOwor6bidID4gY2hpbmVzZVwtb3Jpb2xlOwor6biOID4gdGhlXC1tYW5nb1wtYmlyZDsKK+m2lyA+IGFcLWtpbmRcLW9mXC1oYXdrOwor6a6nID4gdGhlXC1zaGVhdFwtZmlzaDsKK+msmCA+IGJlYXV0aWZ1bFwtaGFpcjsKK+mslyA+IGhlYWRcLW9ybmFtZW50czsKK+mrhiA+IHNob3VsZGVyXC1ibGFkZTsKK+mplSA+IHNwaXJpdGVkXC1ob3JzZTsKK+motiA+IG1vdW50ZWRcLWVzY29ydDsKK+mojiA+IHJpZGVcLWhvcnNlYmFjazsKK+mojCA+IGFcLWhvcnNlJydzXC1tYW5lOwor6aiIID4gdGVhbVwtb2ZcLWhvcnNlczsKK+mnoiA+IHRlYW1cLW9mXC1ob3JzZXM7CivppKEgPiBwYXN0cnlcLWZpbGxpbmc7CivppJ4gPiBmYXJld2VsbFwtcGFydHk7CivppJcgPiBmb29kXC1pblwtdHJpcG9kOwor6Z+LID4gdGFubmVkXC1sZWF0aGVyOwor6Z+JID4gc2FkZGxlXC1ibGFua2V0Owor6ZyhID4gZHJpenpsaW5nXC1yYWluOwor6Za2ID4gZ2F0ZVwtb2ZcLWhlYXZlbjsKK+mWqCA+IHNtYWxsXC1lbnRyYW5jZTsKK+mUqiA+IGFcLWtpbmRcLW9mXC10b29sOwor6ZCrID4gZW5ncmF2aW5nXC10b29sOwor6ZCnID4ga2luZFwtb2ZcLXJhcGllcjsKK+mPtCA+IHRvXC1wbHVnXC1hXC1ob2xlOwor6Y+oID4gZW5ncmF2aW5nXC10b29sOwor6Y6pID4gbW91bHRcLXNhbWFyaXVtOwor6Y6KID4gcG91bmRcLXN0ZXJsaW5nOwor6Y2GID4gbWRcLW1lbmRlbGV2aXVtOwor6YyaID4gY2xhbmdpbmdcLXNvdW5kOwor6YupID4gcG9pbnRcLW9mXC1zd29yZDsKK+mLkiA+IHBvaW50XC1vZlwtc3BlYXI7Civpi4MgPiBsb2NrXC1sYW50aGFudW07CivpipYgPiB1bml0XC1vZlwtd2VpZ2h0Owor6YevID4gcG9pbnRcLW9mXC1zd29yZDsKK+mAqSA+IHRvXC1ydW5cLXF1aWNrbHk7CivovLYgPiBsaWdodFwtY2FycmlhZ2U7CivouZwgPiB3YWxrXC1jYXJlZnVsbHk7CivotrkgPiBraWNrXC13aXRoXC1ob29mOwor6LGjID4gcGlnXC1vZlwtM1wteWVhcnM7CivosZwgPiBwaWdcLW9mXC0zXC15ZWFyczsKK+ixliA+IGFcLXNoYWNrbGVkXC1waWc7CivorpUgPiBhY2N1c2VcLWZhbHNlbHk7CivoroUgPiBrbm93XC1pblwtZGV0YWlsOwor6KuNID4gdG9cLWV4cG9zdHVsYXRlOwor6KmoID4ga2luZFwtb2ZcLWNpY2FkYTsKK+iopSA+IHNsb3dcLW9mXC1zcGVlY2g7CivopIkgPiBzaG9ydFwtZ2FybWVudHM7CivooYIgPiB0b1wtYmVcLWRlZmVhdGVkOwor6KCCID4gcG9kaXNtYVwtbWlrYWRvOwor6J+zID4gYVwta2luZFwtb2ZcLWNyYWI7Civon60gPiB2ZXJ5XC1zbWFsbFwtYnVnOwor6J6/ID4ga2luZFwtb2ZcLWNpY2FkYTsKK+ieuyA+IGFcLW1vbGVcLWNyaWNrZXQ7CivonqwgPiBncnVic1wtaW5cLWZydWl0Owor6JyOID4gbW9zcXVpdG9cLWxhcnZhOwor6JmAID4gbWluY2VkXC1waWNrbGVzOwor6JeOID4gYVwta2luZFwtb2ZcLXdlZWQ7CivolrMgPiBuYW1lXC1vZlwtYVwtaGVyYjsKK+iWmCA+IHBsYW50YWdvXC1tYWpvcjsKK+iUhiA+IHdhdGVyXC1jaGVzdG51dDsKK+iTryA+IG1lZGljaW5hbFwtaGVyYjsKK+iTjyA+IGZydWl0XC1vZlwtcGxhbnQ7Civok4AgPiBhcm9tYXRpY1wtZ3Jhc3M7CivokaUgPiBydWJ1c1wtcGFsbWF0dXM7Civoj44gPiBiZWF1dGlmdWxcLWphZGU7CivojJ4gPiBmcmFncmFudFwtcGxhbnQ7Civoi4EgPiBtZWRpY2luYWxcLWhlcmI7CivoioggPiBibGVhdFwtb2ZcLXNoZWVwOwor6ISmID4gdXNlZFwtaW5cLScnbGVkZScnOwor576LID4gYmxlYXRcLW9mXC1zaGVlcDsKK+e6iCA+IHBhdHRlcm5lZFwtc2lsazsKK+e2tCA+IHBhdGNoXC10b2dldGhlcjsKK+e1nCA+IGFcLW1hcmtpbmdcLWxpbmU7CivntL4gPiB0dXJuc1wtb3JcLXR3aXN0Owor57O6ID4gdG9cLWNvbGxhYm9yYXRlOwor57GrID4gYmFtYm9vXC11dGVuc2lsOwor562sID4gcmVlZFwtb2ZcLWFcLWxvb207CivnqK0gPiBzdGFsa1wtb2ZcLWdyYWluOwor56iMID4gZ2x1dGlub3VzXC1yaWNlOwor56iIID4gc3RhbGtcLW9mXC1ncmFpbjsKK+egoiA+IHBpbGVcLW9mXC1zdG9uZXM7Civnn4kgPiBhblwtYW5ncnlcLWdsYXJlOwor552xID4gdG9cLWdhemVcLXNsb3dseTsKK+edryA+IHRvXC1iZVwtYWdvbml6ZWQ7CivnnKMgPiBwcm9taW5lbnRcLWV5ZXM7CivnkrggPiBqYWRlJydzXC1zdHJlYWtzOwor55K1ID4gYmVhdXRpZnVsXC1qYWRlOwor55KlID4gYVwta2luZFwtb2ZcLWphZGU7CivnkqIgPiBwcmVjaW91c1wtc3RvbmU7CivnkpggPiBsdXN0ZXJcLW9mXC1qYWRlOwor55KGID4gYmVhdXRpZnVsXC1qYWRlOwor55GpID4gbHVzdHJlXC1vZlwtZ2VtczsKK+eRoCA+IHByZWNpb3VzXC1zdG9uZTsKK+eRhyA+IHRvcnRvaXNlXC1zaGVsbDsKK+eQgSA+IGJlYXV0aWZ1bFwtamFkZTsKK+ePuiA+IGJlYXV0aWZ1bFwtamFkZTsKK+ePpiA+IGFcLWtpbmRcLW9mXC1qYWRlOwor54+iID4gcHJlY2lvdXNcLXN0b25lOwor546lID4gbXlzdGVyaW91c1wtZ2VtOwor5428ID4gbWFjYWN1c1wtbW9ua2V5Owor54yZID4gZmllcmNlXC1sb29raW5nOwor54uoID4gaGFwYWxlXC1qYWNjaHVzOwor54qoID4gcGFudGluZ1wtb2ZcLWNvdzsKK+eJmCA+IHdyaXRpbmdcLXRhYmxldDsKK+eHiSA+IGhlYXRcLXdpdGhcLWZpcmU7Civnh4AgPiB0b1wtbWFrZVwtYVwtZmlyZTsKK+eGiSA+IFwoeWVsbG93XC1jb2xvclwpOwor5r2VID4gcml2ZXJcLWluXC1oZW5hbjsKK+a9gSA+IHJpdmVyXC1pblwtYW5odWk7CivmupsgPiB0b1wtZm9ybVwtaG9sbG93Owor5rmxID4gc291bmRcLW9mXC13YXRlcjsKK+a5iiA+IHBpZWNlXC10b2dldGhlcjsKK+a4oiA+IHBsZWFzYW50XC1zb3VuZDsKK+a2rCA+IHdhdGVyeVwtZXhwYW5zZTsKK+a0vyA+IHN0YWduYW50XC13YXRlcjsKK+azgyA+IHJpdmVyXC1pblwtaGVuYW47Civms4IgPiBjbGVhclwtYW5kXC1kZWVwOwor5rK3ID4gdG9cLXJlbW92ZVwtZXZpbDsKK+aurSA+IGFcLXN0aWZmXC1jb3Jwc2U7CivmqpYgPiB3aWxkXC1wZWFyXC10cmVlOwor5qqJID4gdHlwZVwtb2ZcLXdpbGxvdzsKK+apvyA+IHF1ZXJjdXNcLWdsYXVjYTsKK+amviA+IHBpZWNlc1wtb2ZcLXdvb2Q7CivmpqAgPiBjaGluZXNlXC1xdWluY2U7CivmppYgPiBwYXBlclwtbXVsYmVycnk7CivmpKogPiBtYWNoaWx1c1wtbmFubXU7Civmo5AgPiBzcGVjaWVzXC1vZlwteWV3Owor5qKKID4gc3F1ZWV6ZVwtb3V0XC1vZjsKK+afviA+IHN0cmFpZ2h0XC1ncmFpbjsKK+afnyA+IG1hY2hpbHVzXC1uYW5tdTsKK+afgyA+IGV1cnlhXC1qYXBvbmljYTsKK+abjyA+IG9uY2VcLXVwb25cLXRpbWU7CivmmaUgPiBhbmh1aVwtcHJvdmluY2U7CivmmaIgPiBsaWdodFwtb2ZcLXN0YXJzOwor5piwID4gdmFyXC1vZlwtJyd0b1wtYmUnJzsKK+aUgiA+IHRvXC1iZWF0XC1hXC1kcnVtOwor5pG0ID4gdG9cLXN0cmV0Y2hcLW91dDsKK+aRkSA+IGJveFwtb25lJydzXC1lYXJzOwor5bmxID4gb2ZmaWNpYWxcLWRyZXNzOwor5befID4gYVwtd2F0ZXJ5XC13YXN0ZTsKK+W3kiA+IG1vdW50YWluXC1yYW5nZTsKK+W2uiA+IG1vdW50YWluXC1yaWRnZTsKK+W1tCA+IG1vdW50YWluXC1yaWRnZTsKK+WyuiA+IG1vdW50YWluXC1yaWRnZTsKK+WxmyA+IGZvbGRpbmdcLXNjcmVlbjsKK+WimiA+IG1vdW50YWluXC1yYW5nZTsKK+WhlSA+IGFcLWd1c3RcLW9mXC13aW5kOwor5Z+HID4gbmFtZVwtb2ZcLWJyaWRnZTsKK+WchSA+IGNvcnJlc3BvbmRlbmNlOwor5Zm5ID4gc291bmRcLW9mXC1iZWxsczsKK+WYkyA+IGd1cmdsaW5nXC1zb3VuZDsKK+WXhiA+IGNob2tlXC1ieVwtc21va2U7CivllpIgPiBhXC1kdWFsXC1wcm9ub3VuOwor5ZWMID4gYW5pbWFsXC1kaXNlYXNlOwor5Y6DID4gdG9cLWxvb2tcLXVwd2FyZDsKK+WNrSA+IGhpZ2hcLlwtdG9cLXJhaXNlOwor5Y2CID4gdG9cLWZseVwtcmFwaWRseTsKK+WHviA+IGNvcnJlc3BvbmRlbmNlOwor5LyVID4gY29tbW9uXC1sYWJvcmVyOwor5LqHID4ga3d1a3llbFwtaGFtbWVyOwor5LaUID4gcHJvbWluZW50XC1ndW1zOwor5LaQID4gdG9cLXRha2VcLWJyZWF0aDsKK+S2gCA+IHNvdW5kXC1vZlwtZHJ1bXM7Civktb4gPiBzb3VuZFwtb2ZcLWRydW1zOwor5LW9ID4gc291bmRcLW9mXC1kcnVtczsKK+S1tiA+IGFcLWtpbmRcLW9mXC1mcm9nOwor5LWMID4gcmVkZGlzaFwteWVsbG93Owor5LS0ID4gYVwta2luZFwtb2ZcLWNha2U7CivktK8gPiBhXC1raW5kXC1vZlwtY2FrZTsKK+S0qSA+IGFcLWtpbmRcLW9mXC1kZWVyOwor5LSiID4gYVwta2luZFwtb2ZcLWRlZXI7CivktJggPiBhXC1raW5kXC1vZlwtYmlyZDsKK+S0kCA+IGFcLWtpbmRcLW9mXC1iaXJkOwor5LSGID4gYVwta2luZFwtb2ZcLWJpcmQ7CivktIQgPiBhXC1raW5kXC1vZlwtYmlyZDsKK+SzvyA+IGFcLWtpbmRcLW9mXC1iaXJkOwor5LO4ID4gdGhlXC13aWxkXC1nb29zZTsKK+SztCA+IGFcLWtpbmRcLW9mXC1iaXJkOwor5LOvID4gYVwta2luZFwtb2ZcLWJpcmQ7Civks6wgPiBhXC1raW5kXC1vZlwtYmlyZDsKK+SzqyA+IGFcLXNtYWxsXC1waWdlb247Civks6ogPiBhXC1raW5kXC1vZlwtYmlyZDsKK+SzqSA+IGFcLWtpbmRcLW9mXC1iaXJkOwor5LOSID4gYVwta2luZFwtb2ZcLWJpcmQ7Civksr0gPiBhXC1raW5kXC1vZlwtYmlyZDsKK+SyvCA+IGFcLWtpbmRcLW9mXC1iaXJkOwor5LK4ID4gYVwta2luZFwtb2ZcLWJpcmQ7Civksq4gPiBhXC1raW5kXC1vZlwtYmlyZDsKK+SyqiA+IGFcLWtpbmRcLW9mXC1iaXJkOwor5LKiID4gYVwta2luZFwtb2ZcLWZpc2g7CivksqAgPiBhXC1raW5kXC1vZlwtZmlzaDsKK+SynyA+IGFcLWtpbmRcLW9mXC1maXNoOwor5LKZID4gYVwta2luZFwtb2ZcLWZpc2g7CivkspggPiBhXC1raW5kXC1vZlwtZmlzaDsKK+SylyA+IGFcLWtpbmRcLW9mXC1maXNoOwor5LKTID4gYVwta2luZFwtb2ZcLWZpc2g7CivkspAgPiBhXC1raW5kXC1vZlwtZmlzaDsKK+SyjyA+IGFcLWtpbmRcLW9mXC1maXNoOwor5LKLID4gYVwta2luZFwtb2ZcLWZpc2g7CivksokgPiBhXC1raW5kXC1vZlwtZmlzaDsKK+SygiA+IGFcLWtpbmRcLW9mXC1maXNoOwor5LKAID4gYVwta2luZFwtb2ZcLWZpc2g7Civksb8gPiBhXC1raW5kXC1vZlwtZmlzaDsKK+SxvCA+IGFcLWtpbmRcLW9mXC1maXNoOwor5LG7ID4gYVwta2luZFwtb2ZcLWZpc2g7CivksbUgPiBhXC1raW5kXC1vZlwtZmlzaDsKK+SxsiA+IGFcLWtpbmRcLW9mXC1maXNoOwor5LGwID4gYVwta2luZFwtb2ZcLWZpc2g7Civksa8gPiBhXC1raW5kXC1vZlwtZmlzaDsKK+SxriA+IGFcLWtpbmRcLW9mXC1maXNoOwor5LGsID4gYVwta2luZFwtb2ZcLWZpc2g7CivksasgPiBhXC1raW5kXC1vZlwtZmlzaDsKK+SxqCA+IGFcLWtpbmRcLW9mXC1maXNoOwor5LGlID4gYVwta2luZFwtb2ZcLWZpc2g7CivksaQgPiBhXC1raW5kXC1vZlwtZmlzaDsKK+SxoiA+IGFcLWtpbmRcLW9mXC1maXNoOwor5LGgID4gYVwta2luZFwtb2ZcLWZpc2g7CivksZ4gPiBhXC1raW5kXC1vZlwtZmlzaDsKK+SxmyA+IGFcLWtpbmRcLW9mXC1maXNoOwor5LGaID4gYVwta2luZFwtb2ZcLWZpc2g7CivksZMgPiBhXC1raW5kXC1vZlwtZmlzaDsKK+SwviA+IGFcLWtpbmRcLW9mXC1maXNoOwor5LC5ID4gdGhlXC1jdXR0bGVmaXNoOwor5LC0ID4gYVwtd2FmdGluZ1wtZmlzaDsKK+SwsiA+IHRoZVwtc2hlYXRcLWZpc2g7CivksKEgPiBhXC1maWVyY2VcLWdob3N0Owor5K+bID4gdGhlXC1rbmVlXC1ib25lczsKK+SuuSA+IGFuXC1hbmdyeVwtaG9yc2U7Civkrq4gPiBhXC1raW5kXC1vZlwtbXVsZTsKK+StuyA+IGFcLXN3aWZ0eVwtaG9yc2U7CivkrbMgPiBhXC1raW5kXC1vZlwtaGVyYjsKK+StsiA+IHN3ZWV0XC1zbWVsbGluZzsKK+StrSA+IHRoZVwtZWxkZXN0XC1zb247CivkrakgPiB0b1wtZmVlZFwtYVwtYmFieTsKK+StpyA+IHRvXC1mZWVkXC1hXC1iYWJ5Owor5K2BID4gc3RpbmtpbmdcLXNtZWxsOwor5Ky6ID4gc2FtZVwtYXNcLXVcKzRiNTA7CivkrJggPiB0aGVcLXdpbmRcLWJsb3dzOwor5KySID4gdG9cLWJsb3dcLWNoaWxseTsKK+SsjCA+IHRoZVwtd2luZFwtYmxvd3M7Civkq6sgPiBodW1hblwtc2tlbGV0b247CivkqrwgPiB0aGVcLWNoZWVrXC1ib25lOwor5KqIID4gYVwtbGVhdGhlclwtYmVsdDsKK+SpkCA+IHRpZVwtaXRcLXRpZ2h0bHk7CivkqKsgPiBkcml6emxpbmdcLXJhaW47CivkqKUgPiBhXC1wb3VyaW5nXC1yYWluOwor5KicID4gYVwtcG91cmluZ1wtcmFpbjsKK+SnviA+IGFcLWtpbmRcLW9mXC1iaXJkOwor5Ke3ID4gYVwta2luZFwtb2ZcLWJpcmQ7Civkp6cgPiBoaWdoXC1tb3VudGFpbnM7CivkprogPiBuYW1lXC1vZlwtYVwtaGlsbDsKK+SmpCA+IHNlZWRcLW9mXC1ncmFpbnM7CivkppEgPiB3aXRob3V0XC1hXC1kb29yOwor5KaPID4gd2luZ1wtb2ZcLWFcLWRvb3I7CivkpaIgPiBzb3VuZFwtb2ZcLWRydW1zOwor5KSWID4gYVwta2luZFwtb2ZcLXdpbmU7Civko6UgPiBhXC1raW5kXC1vZlwtd2luZTsKK+SjjiA+IG5hbWVcLW9mXC1jb3VudHk7CivkoqggPiB0b1wtd2Fsa1wtc2xvd2x5Owor5KG+ID4gaGlnaFwtY2FydGxvYWRzOwor5KGyID4gcmltXC1vZlwtYVwtd2hlZWw7CivkoZcgPiByaW1cLW9mXC1hXC13aGVlbDsKK+ShiSA+IGFcLWtpbmRcLW9mXC1jYXJ0Owor5J+TID4gdG9cLXdhbGtcLXNsb3dseTsKK+SduCA+IGFcLWtpbmRcLW9mXC10b29sOwor5Jy9ID4gYVwta2luZFwtb2ZcLWJlYW47CivknLwgPiBhXC1raW5kXC1vZlwtYmVhbjsKK+ScnCA+IHdvcmRzXC1vZlwtYW5nZXI7Civkm6AgPiB1bmFibGVcLXRvXC10YWxrOwor5JqWID4gbW91bnRhaW5cLWRlaXR5Owor5JqEID4gdG9cLW1ha2VcLWZ1blwtb2Y7CivkmbMgPiBzcGl0aW5nXC1mbGFtZXM7CivkmaYgPiB1cHBlclwtZ2FybWVudHM7CivkmKIgPiBvbGRcLWFuZFwtc2hhYmJ5Owor5JiDID4gYVwta2luZFwtb2ZcLWNyYWI7Civkl7cgPiBhXC1raW5kXC1vZlwtd2FzcDsKK+SXqiA+IGFcLWtpbmRcLW9mXC13b3JtOwor5JecID4gYVwtbW9sZVwtY3JpY2tldDsKK+SXmiA+IGVnZ3NcLW9mXC1tYW50aXM7Civkl5IgPiBhXC1raW5kXC1vZlwtY2xhbTsKK+SXgCA+IGFcLWtpbmRcLW9mXC1jbGFtOwor5JawID4gYVwta2luZFwtb2ZcLWduYXQ7CivkloYgPiBtZWRpY2luYWxcLWhlcmI7CivklZogPiBhXC1zdHJhd1wtYmFza2V0Owor5JSVID4gY2hpY2tlblwtYnJlYXN0Owor5JSLID4gYVwta2luZFwtb2ZcLXRyZWU7CivklIYgPiBhXC1raW5kXC1vZlwtYmVhbjsKK+SUgiA+IHZlZ2V0YWJsZVwtc291cDsKK+SToSA+IGFcLW1lZGljYWxcLWhlcmI7CivkkrsgPiBhXC1tZWRpY2FsXC1oZXJiOwor5JKyID4gYVwtbWVkaWNhbFwtaGVyYjsKK+SSkyA+IHRvXC1kb1wtdmlvbGVuY2U7CivkkocgPiBuYW1lXC1vZlwtYVwtc2hpcDsKK+SShiA+IG5hbWVcLW9mXC1hXC1zaGlwOwor5JKFID4gYmVhdXRpZnVsXC1leWVzOwor5JG2ID4gc3ByaWdodGx5XC1ib2F0Owor5JGrID4gdG9vbHNcLWZvclwtYm9hdDsKK+SRoyA+IGFcLXNhaWxpbmdcLWJvYXQ7CivkkZwgPiB0b1wtZWF0XC1oZWF2aWx5Owor5JCVID4gb2lsXC1hbmRcLWdyZWFzZTsKK+SQjSA+IGV4Y2VsbGVudFwtZm9vZDsKK+SNoSA+IHNtYWxsXC1maXNoXC1uZXQ7CivkjZEgPiBhXC1uZXRcLW9yXC1zbmFyZTsKK+SNkCA+IGFcLW5ldFwtb3JcLXNuYXJlOwor5I2NID4gdW5idXJudFwtYnJpY2tzOwor5Iy1ID4gbGFwZWxcLWFuZFwtYmVsdDsKK+SMsCA+IGNvbm5lY3RlZFwtc2lsazsKK+SMpSA+IHRvXC1zZXdcLWNsb3RoZXM7CivkjKEgPiB0b1wtd2luZFwtYXJvdW5kOwor5Iu9ID4gaGVtcGVuXC1zYW5kYWxzOwor5IuvID4gY3J1Y2lhbFwtcG9pbnRzOwor5IuiID4gdG9cLXR3aXN0XC1yb3BlczsKK+SLnCA+IGNydWNpYWxcLXBvaW50czsKK+SKvCA+IG1lYXN1cmluZ1wtdW5pdDsKK+SKqCA+IHN0b3JpbmdcLWdyYWluczsKK+SItyA+IGFcLWJhbWJvb1wtZmVuY2U7CivkiJogPiBhXC1iYW1ib29cLXNob290Owor5IerID4gYmFtYm9vXC1zcGxpbnRzOwor5IeFID4gdG9cLXN0YW5kXC1zdGlsbDsKK+SFpSA+IHJpcGVuaW5nXC1jcm9wczsKK+SFliA+IHN3ZWV0XC1zbWVsbGluZzsKK+SDuSA+IGphZGVcLWFuZFwtc3RvbmU7Civkg7ggPiBlbGVjdHJpY1wtbGlnaHQ7Civkg7EgPiBlbGVjdHJpY1wtbGlnaHQ7Civkg6EgPiBhXC1zbWFsbFwtcGViYmxlOwor5IOPID4gYVwta2luZFwtb2ZcLXJvY2s7Civkg4wgPiByb2NreVwtbW91bnRhaW47CivkgpsgPiBhXC1raW5kXC1vZlwtcm9jazsKK+SCjCA+IGFcLXNob3J0XC13ZWFwb247CivkgaQgPiBtb2lzdGVuZWRcLWV5ZXM7CivkgY8gPiBmYXJzaWdodGVkbmVzczsKK+SAuiA+IHNxdWludGluZ1wtZXllczsKK+SApSA+IGJlYXV0aWZ1bFwtZXllczsKK+O9piA+IHJlY2xhaW1lZFwtbGFuZDsKK+O9pSA+IGZlcnRpbGVcLWZpZWxkczsKK+O9iyA+IGFcLWtpbmRcLW9mXC10aWxlOwor472EID4gYW5cLWVhcnRoZW5cLWphcjsKK+O7vyA+IGFcLWtpbmRcLW9mXC1qYWRlOwor47u6ID4gYVwta2luZFwtb2ZcLWphZGU7Civju7UgPiBhXC1raW5kXC1vZlwtamFkZTsKK+O7ryA+IGFcLWtpbmRcLW9mXC1qYWRlOwor47usID4gYVwta2luZFwtb2ZcLWphZGU7Civju6cgPiBhXC1raW5kXC1vZlwtamFkZTsKK+O7nyA+IGFcLWtpbmRcLW9mXC1qYWRlOwor47udID4gYVwta2luZFwtb2ZcLWphZGU7Civju5YgPiBhXC1raW5kXC1vZlwtamFkZTsKK+O7lSA+IGFcLWtpbmRcLW9mXC1qYWRlOwor47uUID4gYVwta2luZFwtb2ZcLWphZGU7Civju5EgPiBhXC1raW5kXC1vZlwtamFkZTsKK+O7iyA+IGFcLWtpbmRcLW9mXC1qYWRlOwor47uCID4gYVwta2luZFwtb2ZcLWphZGU7CivjurkgPiBhXC1raW5kXC1vZlwtamFkZTsKK+O6uCA+IGFcLWtpbmRcLW9mXC1qYWRlOwor47q3ID4gYVwta2luZFwtb2ZcLWphZGU7CivjurEgPiBhXC1raW5kXC1vZlwtamFkZTsKK+O6sCA+IGFcLWtpbmRcLW9mXC1qYWRlOwor47qtID4gYVwta2luZFwtb2ZcLWphZGU7CivjuqsgPiBhXC1raW5kXC1vZlwtamFkZTsKK+O4qyA+IGNhc3RyYXRlZFwtYnVsbDsKK+O4pCA+IGJyb2tlblwtbGVhdGhlcjsKK+O4iiA+IGZpZXJjZVwtb2ZcLWZpcmU7CivjtqAgPiB3YXRlclwtY3VycmVudHM7Civjtp4gPiB3YXRlclwtY3VycmVudHM7CivjtaUgPiB3YXRlclwtY3VycmVudHM7CivjtZggPiBncmVhdFwtY3VycmVudHM7CivjtLggPiBzd2lmdFwtY3VycmVudHM7CivjtJkgPiB3YXRlclwtZHJpcHBpbmc7Civjs4MgPiB0b1wtdGVtcGVyXC1pcm9uOwor47KPID4gZmx5aW5nXC1mZWF0aGVyOwor47GnID4gc3RpbmtpbmdcLXNtZWxsOwor47GPID4gdGhlXC1yaWdodFwtc2lkZTsKK+OwmiA+IGFcLWJhbWJvb1wtZmVuY2U7CivjsJggPiBhXC1raW5kXC1vZlwtdHJlZTsKK+OwiiA+IGFcLWtpbmRcLW9mXC10cmVlOwor47CCID4gYVwta2luZFwtb2ZcLXRyZWU7CivjsIAgPiBhXC1raW5kXC1vZlwtdHJlZTsKK+OvniA+IGFcLWtpbmRcLW9mXC10cmVlOwor46+aID4gYVwta2luZFwtb2ZcLXRyZWU7Civjr5cgPiBhXC1raW5kXC1vZlwtdHJlZTsKK+OuiyA+IGFcLWtpbmRcLW9mXC10cmVlOwor466FID4gYVwta2luZFwtb2ZcLXRyZWU7CivjrbsgPiB0aGVcLWNyYWJcLWFwcGxlOwor462tID4gYVwta2luZFwtb2ZcLXRyZWU7CivjrZwgPiBhXC1raW5kXC1vZlwtdHJlZTsKK+OtmiA+IGFcLWtpbmRcLW9mXC10cmVlOwor462UID4gYVwta2luZFwtb2ZcLXRyZWU7CivjrZEgPiBhXC1raW5kXC1vZlwtdHJlZTsKK+OtjyA+IGFcLWtpbmRcLW9mXC13b29kOwor462HID4gYVwta2luZFwtb2ZcLXRyZWU7CivjrYQgPiBhXC1raW5nXC1vZlwtdHJlZTsKK+OtgSA+IGFcLWtpbmRcLW9mXC10cmVlOwor46yLID4gbmFtZVwtb2ZcLWFcLXN0YXI7Civjq48gPiBhXC1raW5kXC1vZlwtZmxhZzsKK+OrgiA+IHRvXC1jaG9wXC1vclwtY3V0Owor46qHID4gdG9cLWRpc3NlbWluYXRlOwor46iHID4gdG9cLXN3ZWVwXC1jbGVhbjsKK++nryA+IGx1c3Rlclwtb2ZcLWphZGU7Civvpq4gPiBsdXN0cmVcLW9mXC1nZW1zOwor76arID4gbW91bnRhaW5cLXJpZGdlOwor46aNID4gdG9cLWJlXC1zdGFydGxlZDsKK+OluiA+IHRvXC1ibG93XC1hXC1maXJlOwor76WYID4gd2F0ZXJcLWNoZXN0bnV0Owor46WJID4gYVwtbGl0dGxlXC1hbmdyeTsKK+OlhyA+IHRvXC1iZVwtcGVydmVyc2U7CivjpL4gPiBub3RcLWRvaW5nXC13ZWxsOwor46SWID4gdG9cLWhhdmVcLXdpc2RvbTsKK+OjpiA+IGFcLXdpbmRpbmdcLXBhdGg7Civjop8gPiB0b1wtd2Fsa1wtc2xvd2x5Owor46GcID4gcmFnZ2VkXC1jbG90aGVzOwor46CoID4gbWlzdHlcLW1vdW50YWluOwor46ChID4gaGlnaFwtYW5kXC1sb2Z0eTsKK+OgmiA+IGhpZ2hcLWFuZFwtbG9mdHk7Civjn78gPiBoaWdoXC1hbmRcLXN0ZWVwOwor45+bID4gaGlnaFwtYW5kXC1zdGVlcDsKK+OeqSA+IG1vdW50YWluXC12YXBvcjsKK+OenCA+IGhlbXBlblwtc2FuZGFsczsKK+OelyA+IHRoZVwtbWFsZVwtb3JnYW47CivjnowgPiB0b1wtYmVcLXByZWduYW50Owor456KID4gdW5hYmxlXC10b1wtd2FsazsKK+OdsCA+IHVuYWJsZVwtdG9cLW1lZXQ7CivjnZsgPiBhaGFsdGluZ1wtcGxhY2U7CivjnKQgPiBmb29saW5nXC1hcm91bmQ7CivjnJEgPiBhblwtb2xkZXJcLXdvbWFuOwor45upID4gc2lzdGVyc1wtaW5cLWxhdzsKK+ObgiA+IHdlYWtcLWFuZFwtc21hbGw7CivjmrogPiB0b1wtYmVcLXByZWduYW50Owor45qyID4gc21hbGxcLWFuZFwtd2VhazsKK+OagyA+IHRvXC10YWtlXC1hXC1oaW50Owor45m3ID4gbG93XC1seWluZ1wtYXJlYTsKK+OXiiA+IHB1YmxpY1wtb3BpbmlvbjsKK+OWviA+IHRvXC1iZWF0XC1hXC1kcnVtOwor45aiID4gdG9cLXJlamVjdFwtZm9vZDsKK+OVrCA+IHB1YmxpY1wtb3BpbmlvbjsKK+OVpCA+IGFcLXByb3VkXC10ZW1wZXI7CivjlJkgPiBncmVhdFwtc3RyZW5ndGg7CivjlIEgPiBhXC1raW5kXC1vZlwtdG9vbDsKK+OSmyA+IHRvXC1zdGFuZFwtYWxvbmU7CivjkoAgPiBkb1wtbm90XC1mZWFyXC10bzsKK+e7jyA+IGNsYXNzaWNcLXdvcmtzOwor5byfID4geW91bmdcLWJyb3RoZXI7Civlu7sgPiBjaXJjbGVcLWFyb3VuZDsKK+WFsyA+IGZyb250aWVyXC1wYXNzOwor5bidID4gc3VwcmVtZVwtcnVsZXI7CivnlaogPiB0b1wtdGFrZVwtdHVybnM7CivnlaUgPiBhcHByb3hpbWF0ZWx5Owor5YWxID4gdG9nZXRoZXJcLXdpdGg7CivkuYkgPiByaWdodFwtY29uZHVjdDsKK+WrgiA+IHNpc3RlclwtaW5cLWxhdzsKK+WTpSA+IGVsZGVyXC1icm90aGVyOwor5ammID4gbWFycmllZFwtd29tZW47CivoqKMgPiB0YWtlXC1sZWF2ZVwtb2Y7Civml48gPiBhXC1mYW1pbHlcLWNsYW47CivlpaogPiB0YWtlXC1ieVwtZm9yY2U7CivlhYQgPiBlbGRlclwtYnJvdGhlcjsKK+eslCA+IHdyaXRpbmdcLWJydXNoOwor6KK3ID4gbGluZWRcLWdhcm1lbnQ7CivngKwgPiBzd2lmdFwtY3VycmVudDsKK+WmhyA+IG1hcnJpZWRcLXdvbWVuOwor5LyvID4gb2xkZXJcLWJyb3RoZXI7CivmvLIgPiByaXNlXC1pblwtcHJpY2U7CivnpLwgPiBzb2NpYWxcLWN1c3RvbTsKK+WYqSA+IHJ1c2hpbmdcLXNvdW5kOwor5ZWjID4gaG9sZFwtaW5cLW1vdXRoOwor5rOKID4gYW5jaG9yXC12ZXNzZWw7Civmsr8gPiBmb2xsb3dcLWNvdXJzZTsKK+WShCA+IG5vaXNlXC1vZlwtcmFnZTsKK+WQqyA+IGhvbGRcLWluXC1tb3V0aDsKK+WkuiA+IHRha2VcLWJ5XC1mb3JjZTsKK+iPiiA+IGNocnlzYW50aGVtdW07CivlsrMgPiBtb3VudGFpblwtcGVhazsKK+WMuSA+IGJvbHRcLW9mXC1jbG90aDsKK+mihyA+IGxlYW5cLW9uZVwtc2lkZTsKK+WKqyA+IHRha2VcLWJ5XC1mb3JjZTsKK+aZqCA+IGVhcmx5XC1tb3JuaW5nOwor5pKeID4ga25vY2tcLWFnYWluc3Q7CivmhIggPiBtb3JlXC1hbmRcLW1vcmU7Civmp4cgPiB0aXBcLW9mXC1hXC10cmVlOwor6aeFID4gcmVsYXlcLXN0YXRpb247CivppYUgPiBzdGVhbWVkXC1icmVhZDsKK+eCuCA+IHRvXC1mcnlcLWluXC1vaWw7CivohIggPiBibG9vZFwtdmVzc2VsczsKK+e7qiA+IGVuZFwtb2ZcLXRocmVhZDsKK+mjvCA+IHJhaXNlXC1hbmltYWxzOwor5qKTID4gY2F0YWxwYVwtb3ZhdGE7CivogowgPiBtdXNjbGVcLXRpc3N1ZTsKK+S9qSA+IGJlbHRcLW9ybmFtZW50Owor572yID4gcHVibGljXC1vZmZpY2U7CivmkK0gPiBqb2luXC10b2dldGhlcjsKK+mglyA+IGxlYW5cLW9uZVwtc2lkZTsKK+aglyA+IGNoZXN0bnV0XC10cmVlOwor5qGRID4gbXVsYmVycnlcLXRyZWU7CivohIkgPiBibG9vZFwtdmVzc2VsczsKK+e+qSA+IHJpZ2h0XC1jb25kdWN0Owor6Z6EID4gdG9cLXdvcmtcLWhpZGVzOwor5p2TID4gaGFuZGxlXC1vZlwtY3VwOwor5L2DID4gdGVuYW50XC1mYXJtZXI7CivmmIYgPiBlbGRlclwtYnJvdGhlcjsKK+i0oSA+IG9mZmVyXC10cmlidXRlOwor5ou8ID4gam9pblwtdG9nZXRoZXI7Civmm4cgPiBiZWNvbWVcLWNsb3VkeTsKK+S6mSA+IGV4dGVuZFwtYWNyb3NzOwor5LqYID4gZXh0ZW5kXC1hY3Jvc3M7Civor54gPiBiZWFyXC1jaGlsZHJlbjsKK+aZtCA+IGNsZWFyXC13ZWF0aGVyOwor5raoID4gcmlzZVwtaW5cLXByaWNlOwor6ZecID4gZnJvbnRpZXJcLXBhc3M7Civnt5IgPiBlbmRcLW9mXC10aHJlYWQ7CivplqIgPiBmcm9udGllclwtcGFzczsKK+WhkSA+IG1vZGVsXC1pblwtY2xheTsKK+e2kyA+IGNsYXNzaWNcLXdvcmtzOwor57WMID4gY2xhc3NpY1wtd29ya3M7CivmtaYgPiBiYW5rXC1vZlwtcml2ZXI7Civnv7AgPiB3cml0aW5nXC1icnVzaDsKK+exlCA+IGJhbWJvb1wtYmFza2V0Owor6L6wID4gZWFybHlcLW1vcm5pbmc7CivmhY4gPiBhY3RcLXdpdGhcLWNhcmU7CivojokgPiB3aGl0ZVwtamFzbWluZTsKK+aNlyA+IG1ha2VcLXByb2dyZXNzOwor562GID4gd3JpdGluZ1wtYnJ1c2g7Civlk5cgPiBydXNoaW5nXC1zb3VuZDsKK+WhjCA+IGZhbGxcLWluXC1ydWluczsKK+erliA+IHBlcnBlbmRpY3VsYXI7Civnpq4gPiBzb2NpYWxcLWN1c3RvbTsKK+mZlSA+IG1vdW50YWluXC1wYXNzOwor5oOaID4gYWJzZW50XC1taW5kZWQ7Civor4AgPiB0YWtlXC1sZWF2ZVwtb2Y7Civmt4AgPiBzaGFsbG93XC13YXRlcjsKK+a3mCA+IHdhc2hcLWluXC1zaWV2ZTsKK+eRsCA+IGV4dHJhb3JkaW5hcnk7CivlnqsgPiBhZHZhbmNlXC1tb25leTsKK+eBtiA+IGtpdGNoZW5cLXJhbmdlOwor5q+TID4gZ2l2ZVwtYmlydGhcLXRvOwor5ZKnID4gc3RyZXRjaFwtbW91dGg7CivlpY4gPiBzdHJpZGVcLW9mXC1tYW47CivmtL0gPiB0b1wtYmxlbmRcLXdpdGg7CivnkbYgPiBwcmVjaW91c1wtamFkZTsKK+mSsCA+IHJhcmVcLXRyZWFzdXJlOwor55GbID4gbHVzdGVyXC1vZlwtZ2VtOwor6aaSID4gc3RlYW1lZFwtYnJlYWQ7CivppbIgPiByYWlzZVwtYW5pbWFsczsKK+auiSA+IGRpZVwtZm9yXC1jYXVzZTsKK+ihmSA+IHB1YmxpY1wtb2ZmaWNlOwor5ZSsID4gdG9cLWludGltaWRhdGU7CivnmKogPiBzaHJpdmVsbGVkXC11cDsKK+WUhiA+IG1ha2VcLW1pc2NoaWVmOwor5bKaID4gbW91bnRhaW5cLW1pc3Q7CivmoaYgPiB0eXBlXC1vZlwtYmlyY2g7Civmtp8gPiBmbG93aW5nXC13YXRlcjsKK+WUlCA+IGhvbGRcLWluXC1tb3V0aDsKK+mjlSA+IHNvdW5kXC1vZlwtd2luZDsKK+WdtyA+IGNsb2RcLW9mXC1lYXJ0aDsKK+mRqyA+IHVzZWRcLWluXC1uYW1lczsKK+esiyA+IGJhbWJvb1wtc2hvb3RzOwor6I2DID4gYXJvbWF0aWNcLWhlcmI7Civnr5MgPiBiYW1ib29cLWJhc2tldDsKK+mmhCA+IGR1bXBsaW5nXC1zb3VwOwor56m5ID4gaGlnaFwtYW5kXC12YXN0Owor5byIID4gY2hpbmVzZVwtY2hlc3M7Civogb8gPiB3cml0aW5nXC1icnVzaDsKK+mpriA+IGNhcnJ5XC1vblwtYmFjazsKK+euqSA+IGJhbWJvb1wtYmFza2V0Owor6IqlID4gbXVzdGFyZFwtcGxhbnQ7Civpqb8gPiByZWxheVwtc3RhdGlvbjsKK+eCnCA+IGJyaWxsaWFudFwtcmVkOwor5bKcID4gcm9ja1wtbW91bnRhaW47CivnuqsgPiB0aHJlYWRcLW5lZWRsZTsKK+ahgCA+IGNoaWNrZW5cLXJvb3N0Owor5ZmZID4gaG9sZFwtaW5cLW1vdXRoOwor56+dID4gYmFtYm9vXC1iYXNrZXQ7Civmi64gPiBsYWJvcmluZ1wtaGFyZDsKK+iMiSA+IHdoaXRlXC1qYXNtaW5lOwor57qlID4gaW5mZXJpb3JcLXNpbGs7CivmmJkgPiBiZWNvbWVcLWNsb3VkeTsKK+W/pCA+IGluc3Vib3JkaW5hdGU7CivpuL4gPiBmYWJ1bG91c1wtYmlyZDsKK+WYgSA+IHRvXC1iZVwtZ3JpZXZlZDsKK+i+jiA+IGFcLXN1cHBseVwtY2FydDsKK+iKqyA+IGRhcGhuZVwtZ2Vua3dhOwor5LynID4gdnVsZ2FyXC1wZXJzb247Civms6AgPiBuaWNlXC1hbmRcLWNvb2w7CivnuLsgPiBoYWx0ZXJcLWZvclwtb3g7CivouL0gPiB0b1wtd2Fsa1wtYWxvbmU7Civota0gPiByZWRkaXNoXC1icm93bjsKK+migCA+IHRhbGxcLWFuZFwtc2xpbTsKK+afmCA+IGFcLXRob3JueVwtdHJlZTsKK+iwlCA+IGhvbmVzdFwtc3BlZWNoOwor6aqTID4gcGllYmFsZFwtaG9yc2U7CivlsqsgPiBtb3VudGFpblwtcGVhazsKK+W0pyA+IGhpZ2hcLW1vdW50YWluOwor6YWaID4gY2FyYm9saWNcLWFjaWQ7CivlpKQgPiBkaXN0YW50XC1wbGFjZTsKK+aajCA+IGluXC1vcHBvc2l0aW9uOwor5r+RID4gc3dpZnRcLWN1cnJlbnQ7CivmgI0gPiB0b1wtYmVcLWFzaGFtZWQ7CivotL0gPiBnaWZ0XC1zdXBlcmlvcjsKK+avliA+IGd1YXJkXC1hZ2FpbnN0Owor6L+TID4gdG9cLWdvXC10b1wtbWVldDsKK+avtSA+IGxvbmdcLWZlYXRoZXJzOwor552aID4gY29ybmVyXC1vZlwtZXllOwor5q+9ID4gYVwtc2h1dHRsZWNvY2s7Civlg7MgPiBtaW5vcml0eVwtbmFtZTsKK+mqkCA+IHBpZWJhbGRcLWhvcnNlOwor6L6PID4gaHVic1wtb2ZcLXdoZWVsOwor5peGID4gZmxhZ1wtb3JuYW1lbnQ7CivojYcgPiBhXC13YXRlclwtcGxhbnQ7Civlja4gPiBtZWFzdXJpbmdcLWN1cDsKK+mroSA+IHRvXC1zaGVhclwtdHJlZTsKK+mznCA+IG1hbmRhcmluXC1maXNoOwor6byNID4gbGFyZ2VcLXJlcHRpbGU7CivnrKsgPiBwbGFua3NcLW9mXC1iZWQ7CivnvKEgPiBhXC1icmlkYWxcLXZlaWw7Civnu6ggPiBjb2Fyc2VcLXBvbmdlZTsKK+iKsCA+IHdhdGVyXC1jYWx0cm9wOwor6a2DID4gZHJvdWdodFwtZGVtb247CivoiLMgPiBzdGVyblwtb2ZcLXNoaXA7CivlsaYgPiBzdHJhd1wtc2FuZGFsczsKK+iTkCA+IHN0cmF3XC1iZWRcLW1hdDsKK+mKjiA+IGV5ZVwtb2ZcLWFuXC1heGU7CivphqMgPiBjYXJib2h5ZHJhdGVzOwor6JuRID4gYVwtbWFyaW5lXC1jcmFiOwor5qSgID4gd29vZGVuXC10YWJsZXQ7CivlqrggPiBhblwtdWdseVwtd29tYW47CivppocgPiBzdGlyXC1hbmRcLWNvb2s7CivnlJkgPiBzdWdhclwtcHJvZHVjdDsKK+iWpCA+IGFsbGl1bVwtYmFrZXJpOwor5aGlID4gZHJ5XC1jbGF5XC1sdW1wOwor6byJID4gbGFyZ2VcLXJlcHRpbGU7CivpuJ4gPiBmYWJ1bG91c1wtYmlyZDsKK+m1qSA+IG93bFwtbGlrZVwtYmlyZDsKK+mxliA+IG1hbmRhcmluXC1maXNoOwor6auDID4gc2hvdWxkZXJcLWJvbmU7CivpqqogPiBjcm9va2VkXC1ib25lczsKK+mpmyA+IHJlbGF5XC1zdGF0aW9uOwor6aiPID4gcGllYmFsZFwtaG9yc2U7CivpqIUgPiBwaWViYWxkXC1ob3JzZTsKK+mmsSA+IGNhcnJ5XC1vblwtYmFjazsKK+mmoyA+IGZyYWdyYW50XC1vZG9yOwor6aSnID4gc3RlYW1lZFwtYnJlYWQ7CivppJsgPiBkdW1wbGluZ1wtc291cDsKK+mkmiA+IHByZXBhcmVkXC1tZWF0Owor6aK8ID4gc291bmRcLW9mXC13aW5kOwor6aCOID4gdGFsbFwtYW5kXC1zbGltOwor6Z6uID4gbGVhdGhlclwtc2hvZXM7CivpnJ0gPiBkcm9wc1wtb2ZcLXJhaW47CivpmZ0gPiBtb3VudGFpblwtcGFzczsKK+mTliA+IHBlcnNvbicnc1wtbmFtZTsKK+mMoSA+IGFcLWtpbmRcLW9mXC1wZW47Civpi64gPiBwZXJzb24nJ3NcLW5hbWU7CivpiLogPiByYXJlXC10cmVhc3VyZTsKK+mIhCA+IGFcLXdpbmVcLWZsYWdvbjsKK+mHrSA+IHRpcmVcLW9mXC13aGVlbDsKK+mGqCA+IGRyZWdzXC1vZlwtd2luZTsKK+i+oSA+IHJlY3JpbWluYXRpb247CivovY8gPiBzbGVlcGluZ1wtY2FydDsKK+i8syA+IGh1YnNcLW9mXC13aGVlbDsKK+i8nCA+IGFcLXN1cHBseVwtY2FydDsKK+i3riA+IGhhc3R5XC13YWxraW5nOwor6LSJID4gZWFybmVzdFwtbW9uZXk7CivotIQgPiBnaWZ0XC1zdXBlcmlvcjsKK+izriA+IGZhcmV3ZWxsXC1naWZ0Owor6LKiID4gb2ZmZXJcLXRyaWJ1dGU7Civoro0gPiBob25lc3RcLXNwZWVjaDsKK+iuhiA+IHRvXC1leGFnZ2VyYXRlOwor6KyNID4gaHVtbWluZ1wtc291bmQ7Civoq6QgPiBob25lc3RcLXNwZWVjaDsKK+irlSA+IHRvXC1pbnRpbWlkYXRlOwor6Ka2ID4gdG9cLWxvb2tcLWFib3V0Owor6KaUID4gdG9cLXNlYXJjaFwtZm9yOwor6KWaID4gZ3JhdmVcLWNsb3RoZXM7Civoo4wgPiBsaW5lZFwtZ2FybWVudDsKK+ihhyA+IGJsb29kXC12ZXNzZWxzOwor6KC1ID4gbGFyZ2VcLXR1cnRsZXM7Civonr4gPiB0aGVcLWVhcnRod29ybTsKK+iepSA+IHRoZVwtaG91c2VcLWZseTsKK+iemSA+IGdydWJzXC1pblwtd29vZDsKK+ibhSA+IGFcLWNhdGVycGlsbGFyOwor6JqgID4gcGVyc29uJydzXC1uYW1lOwor6JivID4gdG9cLXRvc3NcLWFib3V0Owor6JSOID4gdGhlYVwtc2luZW5zaXM7Civok6cgPiBiYW1ib29cLWJhc2tldDsKK+iRvSA+IHR5cGVcLW9mXC1ncmFpbjsKK+iPvCA+IHJ1c2hcLW9yXC1zZWRnZTsKK+iPuiA+IGFsdGhhZWFcLXJvc2VhOwor6I+RID4gdG9cLXdlZWRcLWdyYXNzOwor6I6nID4gZWRpYmxlXC1ncmVlbnM7CivojYggPiB0aGVhXC1zaW5lbnNpczsKK+iMpSA+IHJ1YnVzXC10b2trdXJhOwor6IuYID4gaW5kaWFuXC1tYWxsb3c7CivohKUgPiBwZWx2aWNcLWNhdml0eTsKK+iDsiA+IGh5ZHJveHlsYW1pbmU7CivnvbMgPiB3b29kZW5cLXNjcmVlbjsKK+e8hyA+IHJlZGRpc2hcLWNvbG9yOwor57itID4gYVwtYnJpZGFsXC12ZWlsOwor57e5ID4gcmVkZGlzaFwtY29sb3I7Civnt5YgPiBlbmRcLW9mXC10aHJlYWQ7CivntoggPiBjb2Fyc2VcLXBvbmdlZTsKK+e0iSA+IHRocmVhZFwtbmVlZGxlOwor57SHID4gaW5mZXJpb3JcLXNpbGs7Civns60gPiByaWNlXC1kdW1wbGluZzsKK+exviA+IHVuaHVsbGVkXC1yaWNlOwor57GuID4gYmFtYm9vXC1iYXNrZXQ7CivnsZwgPiBiYW1ib29cLXNoZWF0aDsKK+ewjSA+IGJhbWJvb1wtYmFza2V0Owor566oID4gYmFtYm9vXC1zaGVhdGg7CivnrLUgPiBhXC1iYW1ib29cLWZvcm07CivnrK0gPiBiYW1ib29cLXNjcmVlbjsKK+erqiA+IHBlcnBlbmRpY3VsYXI7CivnoJ4gPiB0b1wtc21hc2hcLXJvY2s7Civnn54gPiBib3JlXC13aXRoXC1hd2w7Civnm6ogPiB0b1wtdG9zc1wtYWJvdXQ7CivnmZ8gPiBzaHJpdmVsbGVkXC11cDsKK+eVpyA+IGFwcHJveGltYXRlbHk7Civnk4wgPiBleHRyYW9yZGluYXJ5Owor55KfID4gbHVzdGVyXC1vZlwtZ2VtOwor55KCID4gamFkZVwtb3JuYW1lbnQ7CivnkbMgPiBsdXN0ZXJcLW9mXC1nZW07CivnkaQgPiBwcmVjaW91c1wtamFkZTsKK+eQlSA+IHR5cGVcLW9mXC1wZWFybDsKK+ePriA+IGphZGVcLW9ybmFtZW50Owor542ZID4gZGllXC12aW9sZW50bHk7CivniYEgPiBtb29yaW5nXC1zdGFrZTsKK+eGsCA+IGdyZWF0XC1kcm91Z2h0Owor54WSID4gYnJpbGxpYW50XC1yZWQ7CivngKggPiBzd2lmdFwtY3VycmVudDsKK+a8oyA+IGZsb3dpbmdcLXdhdGVyOwor5rWsID4gbmF1dGljYWxcLW1pbGU7CivmtIogPiBmbG93aW5nXC13YXRlcjsKK+avvyA+IGxvbmdcLWZlYXRoZXJzOwor5qy1ID4gdG9cLXRyZWF0XC13ZWxsOwor5qyTID4gYVwtY3Jvc3NcLXBpZWNlOwor5quMID4gYVwta2luZFwtb2ZcLWhvZTsKK+aqriA+IGJsb2NrXC1vZlwtd29vZDsKK+aouiA+IHR5cGVcLW9mXC1iaXJjaDsKK+anpyA+IHdvb2RlblwtdGFibGV0Owor5qaMID4gd29vZGVuXC1sYWRkZXI7CivmpZkgPiBuYW1lXC1vZlwtcGxhbnQ7CivmpJsgPiB0eXBlXC1vZlwtYmlyY2g7CivmorwgPiBibG9ja1wtb2ZcLXdvb2Q7CivmorkgPiB0aGVcLWFyZWNhXC1udXQ7Civmoo4gPiBzaWNrbGVcLWhhbmRsZTsKK+agsCA+IGFcLWJhbWJvb1wtcmFmdDsKK+adriA+IHdvb2RcLXNoYXZpbmdzOwor5pypID4ga3d1a3llbFw6XC1yYW5rOwor5pCiID4gdG9cLXN0aWNrXC1pbnRvOwor5o6tID4gdG9cLW1hbmlwdWxhdGU7CivmjLYgPiBob2xkXC1pblwtaGFuZHM7Civmi5UgPiB0b1wtZHJhZ1wtYWZ0ZXI7CivmioMgPiB0b1wtY2xhcFwtaGFuZHM7CivmiLogPiBzdG9uZVwtYm9hcmRlcjsKK+aIuSA+IGluXC1kaWZmaWN1bHR5Owor5oS8ID4gYWN0XC13aXRoXC1jYXJlOwor5oSqID4gdG9cLWJlXC1ncmlldmVkOwor5oShID4gYWJzZW50XC1taW5kZWQ7CivmgL4gPiBtb3VudGFpblwtbmFtZTsKK+W9vSA+IGdvXC10b1wtYW5kXC1mcm87CivlvbIgPiB5ZWxsb3dcLWRyYWdvbjsKK+W9lCA+IHRvXC1jYXJ2ZVwtd29vZDsKK+W3tSA+IG1lYXN1cmluZ1wtY3VwOwor5bewID4gYW5cLWF0b21cLWdyb3VwOwor5bevID4gYW5cLWF0b21cLWdyb3VwOwor5beqID4gcGVyc29uJydzXC1uYW1lOwor5ba9ID4gbW91bnRhaW5cLXBlYWs7CivltZAgPiBtb3VudGFpblwtbWlzdDsKK+W0jCA+IG1vdW50YWluXC1uYW1lOwor5bOgID4gbW91bnRhaW5cLXBhc3M7Civls4IgPiBuYW1lXC1vZlwtcGxhY2U7Civls4AgPiBtb3VudGFpblwtcGVhazsKK+WyviA+IG1vdW50YWluXC1wYXNzOwor5bGpID4gc3RyYXdcLXNhbmRhbHM7CivlsaggPiBzdHJhd1wtc2FuZGFsczsKK+WvgCA+IGZldWRhbFwtZXN0YXRlOwor5aqiID4gYmVcLWplYWxvdXNcLW9mOwor5aKKID4gYWR2YW5jZVwtbW9uZXk7CivloZAgPiBtb2RlbFwtaW5cLWNsYXk7CivloLogPiBwZXJzb24nJ3NcLW5hbWU7CivlnrsgPiBhblwtZW1iYW5rbWVudDsKK+WamiA+IGFyZ3VtZW50YXRpdmU7CivlkqEgPiBzaWRlXC1vZlwtbW91dGg7Civlh58gPiB0b1wtYmVcLXJ1ZGVcLXRvOwor5YS5ID4gdG9cLWFjY3VtdWxhdGU7CivlhLIgPiB0b1wtc2F2ZVwtbW9uZXk7CivlhJsgPiB0b1wtc2tpcFwtYWJvdXQ7CivlgpYgPiB2dWxnYXJcLXBlcnNvbjsKK+WCkiA+IHBlcnNvbmFsXC1uYW1lOwor5YGKID4gdG9cLXdhbGtcLWFsb25lOwor5L6CID4gdG9cLWNvbW1pc3Npb247CivkuaggPiB0aGVcLWJlZ2lubmluZzsKK+S2miA+IGRlY2F5ZWRcLXRvb3RoOwor5LaIID4gYVwta2luZFwtb2ZcLXJhdDsKK+S2gyA+IGFcLWtpbmRcLW9mXC1yYXQ7Civktb8gPiBhXC1zaWxlbnRcLWRydW07CivktYEgPiBkZWNheWVkXC1kb3VnaDsKK+S0sCA+IGFcLWZhbWlseVwtbmFtZTsKK+SyuiA+IGJpcmRzXC1zaW5naW5nOwor5LKFID4gdGhlXC1nbG9iZWZpc2g7CivksbggPiBhXC1mYW1pbHlcLW5hbWU7CivksaYgPiB0aGVcLWdsb2JlZmlzaDsKK+SxoSA+IHRoZVwtZ2xvYmVmaXNoOwor5LC9ID4gdGhlXC1nbG9iZWZpc2g7CivksLsgPiB0b1wtY2F0Y2hcLWZpc2g7CivksLEgPiBuYW1lXC1vZlwtYVwtZ29kOwor5K+FID4gYVwtc3dpZnRcLWhvcnNlOwor5K+AID4gYVwtc3dpZnRcLWhvcnNlOwor5K6IID4gdG9cLWdvXC1zd2lmdGx5Owor5K2/ID4gYVwtc3dpZnRcLWhvcnNlOwor5K21ID4gYVwtc3dpZnRcLWhvcnNlOwor5KyfID4gc291bmRcLW9mXC13aW5kOwor5Ku/ID4gYVwtY29vbFwtYnJlZXplOwor5Ku0ID4gd2Vha1wtYW5kXC1kdWxsOwor5KuBID4gdGhlXC1maXJzdFwtc29uOwor5KqrID4gYW5jaWVudFwtbXVzaWM7CivkqqcgPiBhbmNpZW50XC1tdXNpYzsKK+SqkiA+IGxlYXRoZXJcLXBhbnRzOwor5Km+ID4gaGVyYlwtbWVkaWNpbmU7CivkqaQgPiB0b1wtbGVhZFwtYW5cLW94Owor5KmjID4gc2hvZVwtY3VzaGlvbnM7CivkqZ4gPiBhXC1zYWRkbGVcLWZsYXA7CivkqI4gPiBkZWVwXC1hbmRcLWRhcms7Civkp5wgPiBhblwtZW1iYW5rbWVudDsKK+SnliA+IGFcLXNtYWxsXC1tb3VuZDsKK+SmtCA+IG9wZW5cLXRoZVwtZG9vcjsKK+SmsyA+IGJldHdlZW5cLXN0ZXBzOwor5KaxID4gb3BlblwtdGhlXC1kb29yOwor5KajID4gb3BlblwtdGhlXC1kb29yOwor5KahID4gYVwtZG9vclwta2VlcGVyOwor5KWpID4gaG9va3NcLXRvXC1oYW5nOwor5KWaID4gdGhlXC1iZWdpbm5pbmc7CivkpLUgPiBhXC10aW55XC1uZWVkbGU7CivkpJQgPiBkcmVnc1wtb2ZcLXdpbmU7CivkpI4gPiBzb3liZWFuXC1zYXVjZTsKK+SkgyA+IGRydW5rZW5cLXNvdW5kOwor5KOwID4gdG9cLXBvb2xcLW1vbmV5Owor5KKnID4gdG9cLWdvXC1mb3J3YXJkOwor5KKaID4gYVwtbmFycm93XC1wYXRoOwor5KKDID4gdG9cLWFkbWluaXN0ZXI7CivkoaUgPiBhXC1tb3ZpbmdcLWNhcnQ7CivkoYYgPiBhXC1tb3ZpbmdcLWNhcnQ7Civkn5ggPiB0b1wtc3RyYWlnaHRlbjsKK+SfiiA+IHNob3J0XC1zdHJpZGVzOwor5J6BID4gY29ycmVzcG9uZGluZzsKK+SdtiA+IHRvXC1sZXZ5XC10YXhlczsKK+SdrCA+IGFcLXdlYWx0aHlcLW1hbjsKK+SclSA+IHRvXC1leGFnZ2VyYXRlOwor5Ju+ID4gZmFtaWxpYXJcLXdpdGg7Civkm5AgPiBhblwtZXhwcmVzc2lvbjsKK+SalSA+IHRvXC1zZWFyY2hcLW91dDsKK+SZuSA+IHRvXC12b21pdFwtbWlsazsKK+SZpSA+IHNoaW55XC1kcmVzc2VzOwor5JmiID4gc2hvcnRcLXRcLXNoaXJ0Owor5JmgID4gc2hvcnRcLWNsb3RoZXM7CivkmZ8gPiBoZWF2eVwtY2xvdGhlczsKK+SZniA+IHdvb2xlblwtc3RyaW5nOwor5JmFID4gdGhlXC13YWlzdGxpbmU7Civkl5cgPiB0aGVcLW1pbGxpcGVkZTsKK+SXiyA+IGFcLW1hcmluZVwtY3JhYjsKK+SXgyA+IHRoZVwtbWlsbGlwZWRlOwor5JapID4gYVwta2luZFwtb2ZcLWJlZTsKK+SWkSA+IGFcLXdoaXRlXC10aWdlcjsKK+SWhyA+IGZyYWdyYW50XC1oZXJiOwor5JWlID4gaGVyYlwtbWVkaWNpbmU7CivklZYgPiBmcmFncmFudFwtaGVyYjsKK+SUniA+IHRoZVwtYmVnaW5uaW5nOwor5JScID4gaGVyYlwtbWVkaWNpbmU7CivklJogPiBoZXJiXC1tZWRpY2luZTsKK+SUliA+IHdhdGVyXC1jYWx0cm9wOwor5JSTID4gaGVyYlwtbWVkaWNpbmU7CivkkqUgPiBjb3JyZXNwb25kaW5nOwor5JKXID4gZnJhZ3JhbnRcLWhlcmI7Civkko4gPiB3aXRob3V0XC1jb2xvcjsKK+SSjSA+IHdpdGhvdXRcLWNvbG9yOwor5JGyID4gdG9cLXJvd1wtYVwtYm9hdDsKK+SRpSA+IGFcLW1vdmluZ1wtYm9hdDsKK+SQsiA+IGhhbGZcLXJhd1wtbWVhdDsKK+SQmSA+IHRoZVwtZGlhcGhyYWdtOwor5I+YID4gYVwtYmlnXC1hYmRvbWVuOwor5I+EID4gbm90XC10b1wtbGlzdGVuOwor5I29ID4gYVwtZmllcmNlXC1nb2F0Owor5I28ID4gc2FsdGVkXC1tdXR0b247CivkjaogPiBjYXN0cmF0ZWRcLXJhbTsKK+SNpCA+IHRvXC1zdHJhaW5cLW91dDsKK+SMoyA+IHRvXC1hY2N1bXVsYXRlOwor5IyZID4gaGFua1wtb2ZcLXJvcGVzOwor5IyFID4gYVwtdGhpY2tcLXJvcGVzOwor5IumID4gcmF2ZWxsZWRcLXNpbGs7Civki50gPiBhXC10aHJvYXRcLWJhbmQ7Civkir0gPiBhXC1maW5lXC10aHJlYWQ7CivkiqEgPiBzdGVhbWVkXC1icmVhZDsKK+SKlCA+IHBvbGlzaGVkXC1yaWNlOwor5IqEID4gcG9saXNoZWRcLXJpY2U7CivkibAgPiBiYW1ib29cLXNob290czsKK+SJqSA+IGFcLWJhbWJvb1wtd2FyZTsKK+SJqCA+IGJhbWJvb1wtam9pbnRzOwor5Ii+ID4gbW92ZVwtYVwtbGl0dGxlOwor5IizID4gYVwtd2luZG93XC1sZWFmOwor5IeLID4gbmFtZVwtb2ZcLWFcLWdvZDsKK+SGniA+IGRlZXBcLWFuZFwtZGFyazsKK+SGmiA+IHRvXC1nb1wtdGhyb3VnaDsKK+SGlyA+IGRlZXBcLWFuZFwtZGFyazsKK+SFmyA+IGh1c2tzXC1vZlwtcmljZTsKK+SElCA+IGFcLWZhbWlseVwtbmFtZTsKK+SEhyA+IGFcLWZhbWlseVwtbmFtZTsKK+SDuyA+IGFuXC1lbWJhbmttZW50Owor5IOzID4gZmFsbGluZ1wtc3RvbmU7CivkgrYgPiB0aGVcLWNydXN0YWNlYTsKK+SClyA+IHRvXC1iZVwtY2FyZWZ1bDsKK+SCjiA+IGFcLXNob3J0XC1zcGVhcjsKK+SCgSA+IGFuXC1hbmdyeVwtbG9vazsKK+SBmSA+IGVsb3F1ZW50XC1leWVzOwor5ICuID4gc2lnaHRcLWJsdXJyZWQ7CivkgK0gPiB3aXRoXC1iaWdcLWV5ZXM7CivkgKcgPiBzaWdodFwtYmx1cnJlZDsKK+SAnyA+IHNpZ2h0XC1ibHVycmVkOwor5ICWID4gdG9cLWxvb2tcLXVwXC10bzsKK+SAlSA+IGFuZ3J5XC1nbGFuY2VzOwor47+sID4gbmFzYWxcLWRpc2Vhc2U7Civjv5wgPiBzaHJpdmVsbGVkXC11cDsKK+O+vSA+IHN3ZWxsaW5nXC1mZWV0Owor472yID4gZ3JpcGluZ1wtY29saWM7CivjvbEgPiBncmlwaW5nXC1jb2xpYzsKK+O9hyA+IHVuYnVybnRcLXRpbGVzOwor47y1ID4gYVwtc21hbGxcLWJhc2luOwor47yfID4gYVwtdGlsZWRcLWhvdXNlOwor47yOID4gYVwtc21hbGxcLW1lbG9uOwor47u+ID4gamFkZVwtYXJ0aWNsZXM7CivjuqkgPiBqYWRlXC1hcnRpY2xlczsKK+O6iCA+IHRvXC1nb1wtaHVudGluZzsKK+O5uSA+IGFcLWtpbmRcLW9mXC1kb2c7CivjubUgPiBhXC1odW50aW5nXC1kb2c7CivjubMgPiBhXC1raW5kXC1vZlwtYXBlOwor47mjID4gYVwta2luZFwtb2ZcLWRvZzsKK+O4hCA+IGFcLXJhZ2luZ1wtZmlyZTsKK+O3viA+IGJsYXplXC1vZlwtZmlyZTsKK+O3uCA+IGJsYXplXC1vZlwtZmlyZTsKK+O3liA+IHRvXC1zaGluZVwtdXBvbjsKK+O3lSA+IGhlYXJpbmdcLXNvdW5kOwor47eSID4gdG9cLWNvb2tcLW1lYWxzOwor47aYID4gZnVsbFwtb2ZcLXdhdGVyOwor47WzID4gY3J5c3RhbFwtY2xlYXI7CivjtbEgPiBmbG93aW5nXC13YXRlcjsKK+O1oCA+IHRvXC1ndXNoXC1mb3J0aDsKK+O0vSA+IHdhdGVyXC1jdXJyZW50Owor47S1ID4gd2F0ZXJcLWN1cnJlbnQ7CivjtK8gPiB3YXRlclwtY3VycmVudDsKK+O0riA+IHdhdGVyXC1jdXJyZW50Owor47SrID4gZ3JlYXRcLWZsb3dpbmc7CivjtKggPiB3YXRlclwtY3VycmVudDsKK+O0piA+IHRvXC13YXNoXC1oYW5kczsKK+O0pSA+IGdyZWF0XC1iaWxsb3dzOwor47SSID4gd2F0ZXJcLWN1cnJlbnQ7CivjtJAgPiBncmVhdFwtY3VycmVudDsKK+O0giA+IGdyZWF0XC1iaWxsb3dzOwor47OpID4gZ3JlYXRcLWJpbGxvd3M7CivjspsgPiBoYWlyeVwtYW5pbWFsczsKK+OwuyA+IGFzc2VzXC1icmF5aW5nOwor47CzID4gYXNzZXNcLWJyYXlpbmc7CivjsI8gPiBhXC1iYW1ib29cLXBvbGU7CivjsIwgPiB0b1wtbW9ub3BvbGl6ZTsKK+OvvSA+IHRoZVwtYXJlY2FcLW51dDsKK+OtvyA+IG9ibGlxdWVcLWFuZ2xlOwor462TID4gYVwtcGlsbGFyXC1hcmNoOwor46ysID4gYVwtZmFtaWx5XC1uYW1lOwor46ylID4gdG9cLXN1blwtdG9cLWFpcjsKK+OshCA+IHdhcm1cLWFuZFwtZGFtcDsKK+OrnyA+IGRheVwtYWZ0ZXJcLWRheTsKK+OrmiA+IGVhcmx5XC1tb3JuaW5nOwor46mlID4gZGVsaWNhdGVcLWhhbmQ7CivvqKsgPiByYWlzZVwtYW5pbWFsczsKK+OoniA+IHRvXC1mZWVsXC1hYm91dDsKK++omCA+IHNvY2lhbFwtY3VzdG9tOwor76iSID4gY2xlYXJcLXdlYXRoZXI7Civjp7wgPiB0b1wtZGlzdHJpYnV0ZTsKK+OntyA+IHRvXC13aXBlXC10ZWFyczsKK++nmiA+IGNoZXN0bnV0XC10cmVlOwor46eYID4gdG9cLWFjY3VtdWxhdGU7CivvprYgPiBzb2NpYWxcLWN1c3RvbTsKK+OmqyA+IGxheFwtYW5kXC1jcnVkZTsKK++mkiA+IGZsb3dpbmdcLXdhdGVyOwor46aMID4ga2Vlblwtb3JcLXNoYXJwOwor46aGID4gdG9cLWV4YWdnZXJhdGU7CivjpbwgPiB0b1wtYmVcLW5lYXJcLXRvOwor76W2ID4gYXBwcm94aW1hdGVseTsKK++lsSA+IGVhcmx5XC1tb3JuaW5nOwor46WlID4gYWJzZW50XC1taW5kZWQ7CivjpLAgPiB0b1wtYmVcLWFzaGFtZWQ7CivvpKEgPiBtb3VudGFpblwtbWlzdDsKK++koCA+IGZhYnVsb3VzXC1iaXJkOwor46O/ID4gcGFpbmZ1bGx5XC1zYWQ7Civjo7EgPiBjb21tb25cLXBlb3BsZTsKK+OjpCA+IHRvXC10cmVhZFwtdXBvbjsKK+OjlCA+IHRvXC13YWxrXC1hbG9uZTsKK+OiuyA+IHRvXC1kcmF3XC1hXC1ib3c7CivjopYgPiBhXC1zdG9yZVwtaG91c2U7CivjobcgPiBhXC1mYW1pbHlcLW5hbWU7CivjoLogPiBhXC1maW5lXC10aHJlYWQ7CivjoLQgPiBhXC1waWxsb3dcLWNhc2U7CivjoJsgPiBuYW1lXC1hXC1jb3VudHk7Civjn7YgPiBtb3VudGFpblwtcGVhazsKK+OfsiA+IG1vdW50YWluXC1wZWFrOwor45+tID4gdGhlXC1taW5cLXJpdmVyOwor45+pID4gdGhlXC1taW5cLXJpdmVyOwor4562ID4gdGhlXC1taW5cLXJpdmVyOwor456sID4gY2xvc2VcLW9yXC1uZWFyOwor456LID4gc29mdFwtYW5kXC1tZWVrOwor4527ID4gYmFyZWx5XC1lbm91Z2g7CivjnaYgPiB0b1wtYWNjdW11bGF0ZTsKK+OdkyA+IGNvcnJlc3BvbmRpbmc7CivjnYMgPiB0b1wtYmVhclwtYVwtc29uOwor45uSID4gY2FuXC1ub3RcLXNwZWFrOwor45uOID4gYW5cLXVnbHlcLXdvbWFuOwor45q0ID4gYVwtcHJldHR5XC1naXJsOwor45ibID4gYVwtZGVlcFwtdmFsbGV5Owor45iTID4gcHJvbGl4XC1zcGVlY2g7CivjmIkgPiB0b1wtbWFrZVwtc291bmQ7Civjl7QgPiBkb2dzXC1maWdodGluZzsKK+OVsCA+IHNvdW5kXC1hbmdyaWx5Owor45WqID4gYmlyZHMnJ1wtY2hpcnBzOwor45WZID4gYVwtd2lseVwtcmFiYml0Owor45WJID4gdG9cLWRpZ1wtYVwtaG9sZTsKK+OUpSA+IGZ1bGxcLW9mXC1hbmdlcjsKK+OTtCA+IHRvXC1jdXRcLWluXC10d287Civjk5YgPiBiaXR0ZXJseVwtY29sZDsKK+OTjyA+IGJpdHRlcmx5XC1jb2xkOwor45OMID4gYml0dGVybHlcLWNvbGQ7CivjkocgPiB0b1wtc2tpcFwtYWJvdXQ7CivjkbwgPiBuYW1lXC1vZlwtYVwtZ29kOwor45GlID4gZGlzcmVzcGVjdGZ1bDsKK+OQsCA+IHRvXC1iZWxpZXZlXC1pbjsKK+eesyA+IHB1cGlsXC1vZlwtZXllOwor5LiHID4gdGVuXC10aG91c2FuZDsKK+W4gyA+IGNvdHRvblwtY2xvdGg7CivpgJogPiBwYXNzXC10aHJvdWdoOwor5o+QID4gaG9sZFwtaW5cLWhhbmQ7CivkuqwgPiBjYXBpdGFsXC1jaXR5Owor55SaID4gZ3JlYXRcLWV4dGVudDsKK+WRqCA+IHpob3VcLWR5bmFzdHk7CivlsLsgPiBlbmRcLW9mXC1zcGluZTsKK+WutCA+IHRvXC1lbnRlcnRhaW47CivlrrAgPiB0b1wtc2xhdWdodGVyOwor54qvID4gY29tbWl0XC1jcmltZTsKK+WpoiA+IHNlcnZhbnRcLWdpcmw7Civlj4IgPiB0YWtlXC1wYXJ0XC1pbjsKK+aOjCA+IHBhbG1cLW9mXC1oYW5kOwor5ae/ID4gb25lJydzXC1tYW5uZXI7Civlp4kgPiBlbGRlclwtc2lzdGVyOwor5paXID4gY2hpbmVzZVwtcGVjazsKK+WRvCA+IGJyZWF0aGVcLXNpZ2g7Civlp5AgPiBlbGRlclwtc2lzdGVyOwor6KGdID4gcnVzaFwtYWdhaW5zdDsKK+WftyA+IGhvbGRcLWluXC1oYW5kOwor6J66ID4gc3BpcmFsXC1zaGVsbDsKK+WdiiA+IG5laWdoYm9yaG9vZDsKK+WwvCA+IGJ1ZGRoaXN0XC1udW47CivpvL4gPiBzbm9yZVwtbG91ZGx5Owor5Y+2ID4gdG9cLWhhcm1vbml6ZTsKK+mHjiA+IG9wZW5cLWNvdW50cnk7Civnp7sgPiBjaGFuZ2VcLXBsYWNlOwor5ZSQID4gdGFuZ1wtZHluYXN0eTsKK+engCA+IGVhclwtb2ZcLWdyYWluOwor5omnID4gaG9sZFwtaW5cLWhhbmQ7CivokrIgPiB0eXBlXC1vZlwtcnVzaDsKK+W6hiA+IGNvbmdyYXR1bGF0ZTsKK+iSnyA+IGJldGVsXC1wZXBwZXI7CivmsZcgPiBwZXJzcGlyYXRpb247CivokKwgPiB0ZW5cLXRob3VzYW5kOwor5oucID4gZG9cLW9iZWlzYW5jZTsKK+WPgyA+IHRha2VcLXBhcnRcLWluOwor6JmRID4gYmVcLWNvbmNlcm5lZDsKK+WuiyA+IHNvbmdcLWR5bmFzdHk7Civog4YgPiBnYWxsXC1ibGFkZGVyOwor5YmWID4gc3BsaXRcLWluXC10d287Civlh6QgPiBtYWxlXC1waG9lbml4Owor6K+iID4gaW5xdWlyZVwtaW50bzsKK+iGvSA+IGdhbGxcLWJsYWRkZXI7CivnrZEgPiBhbmNpZW50XC1sdXRlOwor5YG2ID4gYWNjaWRlbnRhbGx5Owor6aO9ID4gZWF0XC1oZWFydGlseTsKK+iDjiA+IHVuYm9yblwtY2hpbGQ7Civmgp8gPiB0b1wtYXBwcmVoZW5kOwor6IKFID4gcGF5XC1yZXNwZWN0czsKK+iCgyA+IHBheVwtcmVzcGVjdHM7Civlp4ogPiBlbGRlclwtc2lzdGVyOwor5L6YID4gZGlzYXBwb2ludGVkOwor56WtID4gc2FjcmlmaWNlXC10bzsKK+i0uiA+IGNvbmdyYXR1bGF0ZTsKK+mlsSA+IGVhdFwtaGVhcnRpbHk7CivlrqogPiBjb25zdGl0dXRpb247CivnopEgPiBzdG9uZVwtdGFibGV0Owor5piMID4gbGlnaHRcLW9mXC1zdW47CivmkLogPiBsZWFkXC1ieVwtaGFuZDsKK+WOpiA+IGJpZ1wtYnVpbGRpbmc7Civku4YgPiBmYWxsXC1mb3J3YXJkOwor5aalID4gc2F0aXNmYWN0b3J5Owor5p2tID4gY3Jvc3NcLXN0cmVhbTsKK+i1oCA+IGdpdmVcLXByZXNlbnQ7CivohZQgPiBjaGVzdFwtY2F2aXR5Owor5a2dID4gZmlsaWFsXC1waWV0eTsKK+esuSA+IHNtYWxsXC1iYW1ib287CivnrJsgPiBiYW1ib29cLWZsdXRlOwor5q2nID4gZm9ya1wtb2ZcLXJvYWQ7Civmi50gPiBkb1wtb2JlaXNhbmNlOwor6YmbID4gbGVhZFwtcGx1bWJ1bTsKK+eplyA+IGVhclwtb2ZcLWdyYWluOwor56mCID4gZWFyXC1vZlwtZ3JhaW47CivlloMgPiBrZWVwXC10YWxraW5nOwor6IixID4gaG9sZFwtb2ZcLXNoaXA7CivphpwgPiB1Z2x5XC1sb29raW5nOwor5oWuID4gYmVcLWNvbmNlcm5lZDsKK+ijmCA+IGZ1clwtZ2FybWVudHM7CivmoL0gPiB0b1wtY3VsdGl2YXRlOwor6K+nID4gYmVcLXN1cnByaXNlZDsKK+mYjiA+IHZpbGxhZ2VcLWdhdGU7CivmhKMgPiBiZVwtaW5cLWFcLWRhemU7CivnkKogPiB0eXBlXC1vZlwtamFkZTsKK+euqyA+IGJhbWJvb1wtZmx1dGU7CivlqKUgPiBiZVwtYmVhdXRpZnVsOwor5ZKqID4gc291bmRcLW9mXC1jYXQ7CivmuJcgPiBzb2FrXC10aHJvdWdoOwor6JGrID4gYm90dGxlXC1nb3VyZDsKK+WdqiA+IGxldmVsXC1ncm91bmQ7CivlnZ4gPiBlbnRyZW5jaG1lbnQ7CivmgIUgPiBkaXNhcHBvaW50ZWQ7CivmqaEgPiBjaGVzdG51dFwtb2FrOwor57WuID4gd2FzdGVcLWNvdHRvbjsKK+i3hCA+IHdhbGtcLXJhcGlkbHk7CivlsbkgPiB0b1wtcmlzZVwtaGlnaDsKK+aDmCA+IGRpc2NvbmNlcnRlZDsKK+ecuCA+IHB1cGlsXC1vZlwtZXllOwor5o+pID4gcnViXC1hbmRcLXdpcGU7CivmpaAgPiBuYW1lXC1vZlwtdHJlZTsKK+m6kyA+IGZvb3RcLW9mXC1oaWxsOwor546uID4gdHlwZVwtb2ZcLWphZGU7CivmgbsgPiBmZWVsXC1hbmd1aXNoOwor5qGFID4gbWFzdFwtb2ZcLXNoaXA7CivpqosgPiBnYWxsb3BcLWhvcnNlOwor6ZerID4gdmlsbGFnZVwtZ2F0ZTsKK+i5kiA+IHRvXC1qdW1wXC1vdmVyOwor56WAID4gdG9cLXNhY3JpZmljZTsKK+exgSA+IGJhbWJvb1wtZmx1dGU7Civlr7AgPiBncmVhdFwtZG9tYWluOwor5paTID4gbXVsdGljb2xvcmVkOwor5LyrID4gbG9va1wtdG93YXJkczsKK+i6jyA+IHRyYW1wbGVcLWRvd247Civmsr0gPiBidXlcLWFuZFwtc2VsbDsKK+ePpSA+IGVhclwtb3JuYW1lbnQ7CivnrIYgPiBiYW1ib29cLWZlbmNlOwor6JmsID4geW91bmdcLWRyYWdvbjsKK+aDrCA+IGJlXC1zYXRpc2ZpZWQ7CivnvKggPiBhXC1jaGluXC1zdHJhcDsKK+WKviA+IGV4YW1pbmVcLWludG87CivlmKQgPiBzZWVrXC1mcmllbmRzOwor6K+DID4gc2NvbGRcLWxvdWRseTsKK+WGvSA+IGNvbGRcLWFuZFwtcmF3Owor6aOoID4gaG9zdFwtYmFucXVldDsKK+aAjyA+IGRpc2NvbnRlbnRlZDsKK+WGoiA+IGJ1cmlhbFwtbW91bmQ7CivlqYAgPiBiZVwtYmVhdXRpZnVsOwor5ZezID4gaW50ZXJqZWN0aW9uOwor56KjID4gc3RvbmVcLXRhYmxldDsKK+WulSA+IHN0b25lXC1xdWFycnk7CivogIYgPiBtYW5cLW9mXC1zaXh0eTsKK+mdkyA+IG1ha2VcLXVwXC1mYWNlOwor6JuwID4gdG9cLWhpYmVybmF0ZTsKK+aOvCA+IHRocm93XC1ncm91bmQ7Civlm6QgPiBncmFpblwtYmFza2V0Owor562xID4gZHdhcmZcLWJhbWJvbzsKK+aonyA+IGNhbXBob3JcLXRyZWU7CivpsqUgPiByZWV2ZXMnJ1wtc2hhZDsKK+mAtSA+IHRob3JvdWdoZmFyZTsKK+WytyA+IG1pblwtbW91bnRhaW47CivmnrAgPiBzbW9vdGhcLWJvYXJkOwor5bGQID4gd29vZGVuXC1zaG9lczsKK+iDmyA+IHRoZVwtc2hvdWxkZXI7CivpuZ4gPiBzcGFycm93XC1oYXdrOwor54qEID4gYW5pbWFsXC1ob3JuczsKK+i3uSA+IHdhbmRlclwtYWJvdXQ7CivmmLEgPiBicmlnaHRcLWxpZ2h0Owor5qC+ID4gbmFtZVwtb2ZcLXRyZWU7CivmuYQgPiB3YXRlcicnc1wtZWRnZTsKK+iPhSA+IGNvYXJzZVwtZ3Jhc3M7Civnu7sgPiBhZmZlY3Rpb25hdGU7Civnr4EgPiBiYW1ib29cLWdyb3ZlOwor6LWFID4gcHJlcGFyZWRcLWZvcjsKK+akgSA+IG91dGVyXC1jb2ZmaW47CivnurAgPiBzcG9pbGVkXC1zaWxrOwor6byLID4gbGFyZ2VcLXR1cnRsZTsKK+mGkCA+IHB1cmVzdFwtY3JlYW07CivpvokgPiB1bmV2ZW5cLXRlZXRoOwor6Iu7ID4ga2luZFwtb2ZcLWhlcmI7CivprKMgPiBob3JzZScnc1wtbWFuZTsKK+e8lyA+IGZpc2hpbmdcLWxpbmU7CivmuasgPiBhXC1zbWFsbFwtcG9uZDsKK+S7nyA+IG9uZVwtdGhvdXNhbmQ7CivomrYgPiBraW5kXC1vZlwtY2xhbTsKK+eToCA+IGJvdHRsZVwtZ291cmQ7Civom4QgPiBtb2xlXC1jcmlja2V0Owor5q+CID4gaHViXC1vZlwtd2hlZWw7CivnlZogPiBzdHJhd1wtYmFza2V0Owor5rSEID4gYVwtYmFja1wtd2F0ZXI7Civpo6cgPiBldmVuaW5nXC1tZWFsOwor6YaqID4gdW5jbGVhclwtd2luZTsKK+mqnSA+IGZhbW91c1wtaG9yc2U7CivpqpIgPiBtb3RoZXJcLWhvcnNlOwor5oeUID4gYmVcLWFmcmFpZFwtb2Y7CivlipMgPiBjdXRcLW9mZlwtbm9zZTsKK+i4lCA+IHRvXC1nZXRcLWFoZWFkOwor6aKhID4gdGhlXC1mb3JlaGVhZDsKK+a9siA+IGRyaXZpbmdcLXJhaW47CivnvK8gPiBzaWxrXC1mYWJyaWNzOwor5oOdID4gZGlzYXBwb2ludGVkOwor55STID4gZ2xhemVkXC10aWxlczsKK+iNrCA+IGFcLXBsYW50XC1uYW1lOwor5p+SID4gbnVtYmVyXC1zZXZlbjsKK+eYsyA+IHRvXC1iZVwtaGVhbGVkOwor6LCHID4gc3BlYWtcLWlsbFwtb2Y7CivkuYcgPiB0b1wtZGVwZW5kXC1vbjsKK+m+pCA+IHRvXC1oYXJtb25pemU7CivpvawgPiB1bmV2ZW5cLXRlZXRoOwor6b2GID4gc3R1ZmZlZFwtbm96ZTsKK+m9gSA+IHNub3JlXC1sb3VkbHk7CivpvL0gPiBjbG9nZ2VkXC1ub3NlOwor6bu/ID4gbGFyZ2VcLXR1cnRsZTsKK+m6lSA+IG11bnRqYWNcLWRlZXI7Civpt4IgPiBzcGFycm93XC1oYXdrOwor6bOzID4gbWFsZVwtcGhvZW5peDsKK+mzryA+IG1hbGVcLXBob2VuaXg7Civps5AgPiB0aGVcLW5hdXRpbHVzOwor6bGRID4gdGhlXC1zdHVyZ2VvbjsKK+mxgiA+IG5hbWVcLW9mXC1maXNoOwor6bCpID4gdGhlXC1uYXV0aWx1czsKK+mwoyA+IHJlZXZlcycnXC1zaGFkOwor6bCDID4gbmFtZVwtb2ZcLWZpc2g7CivpsIEgPiBuYW1lXC1vZlwtZmlzaDsKK+mtpiA+IHNoYXJrXC1mYW1pbHk7CivpraIgPiBuYW1lXC1vZlwtZmlzaDsKK+mtnyA+IHRoZVwtbmF1dGlsdXM7CivprLUgPiBiaWdcLWlyb25cLXBvdDsKK+mskCA+IGhvcnNlJydzXC1tYW5lOwor6ayFID4gdW5rZW1wdFwtaGFpcjsKK+mpiCA+IGJsYWNrXC1ob3JzZXM7CivpqK4gPiBmYW1vdXNcLWhvcnNlOwor6aiNID4gbW90aGVyXC1ob3JzZTsKK+mohiA+IGRpdmluZVwtaG9yc2U7CivpqIEgPiBnYWxsb3BcLWhvcnNlOwor6aecID4gc3Ryb25nXC1ob3JzZTsKK+mnlyA+IGNoYXR0ZXJcLW1hcms7CivppZcgPiBob3N0XC1iYW5xdWV0Owor6aSAID4gdGFpbnRlZFwtZm9vZDsKK+mjsSA+IGV2ZW5pbmdcLW1lYWw7Civpoq0gPiBzd2F5XC1pblwtd2luZDsKK+mhmSA+IHRoZVwtZm9yZWhlYWQ7CivpoJ8gPiB0aGVcLWZvcmVoZWFkOwor6Z6mID4gbGVhdGhlclwtc3RhcDsKK+mdmiA+IG1ha2VcLXVwXC1mYWNlOwor6ZyRID4gYmVcLW1vaXN0ZW5lZDsKK+maliA+IGVudHJlbmNobWVudDsKK+mZgSA+IGFcLXN0ZWVwXC1iYW5rOwor6ZeRID4gdGhlXC1kb29yc2lsbDsKK+mWuyA+IHZpbGxhZ2VcLWdhdGU7CivploYgPiB2aWxsYWdlXC1nYXRlOwor6ZWoID4gcHJhc2VvZHltaXVtOwor6ZCgID4gcHJhc2VvZHltaXVtOwor6Y+3ID4gcHJvdGFjdGluaXVtOwor6Y2KID4gc21lbHRcLW1ldGFsczsKK+mMrCA+IHNtZWx0XC1tZXRhbHM7CivpjIggPiB0b1wtYmVuZFwtaXJvbjsKK+mHqiA+IGFuXC1hbG1zXC1ib3dsOwor6Ya9ID4ga2luZFwtb2ZcLXdpbmU7Civpg5kgPiB0b1wtYmVcLWV4aWxlZDsKK+mCsiA+IGdvb2RcLWxvb2tpbmc7Civov6MgPiB0b1wtbGVhcFwtb3ZlcjsKK+i9giA+IGh1Ylwtb2ZcLXdoZWVsOwor6LqqID4gdHJhbXBsZVwtZG93bjsKK+i6miA+IHdhbmRlclwtYWJvdXQ7CivoupkgPiB0cmFtcGxlXC1kb3duOwor6LmjID4gdG9cLWp1bXBcLW92ZXI7CivouYwgPiB3YWxrXC1yYXBpZGx5Owor6Li8ID4gdG9cLWZhbGxcLWZsYXQ7CivouKQgPiBidXR0XC1hZ2FpbnN0Owor6LSIID4gZ2l2ZVwtcHJlc2VudDsKK+iziSA+IHRvXC1naXZlXC1hbG1zOwor6LOFID4gcHJlcGFyZWRcLWZvcjsKK+izgCA+IGNvbmdyYXR1bGF0ZTsKK+iyhiA+IHNtYWxsXC1iYWRnZXI7CivosbYgPiBjYXN0cmF0ZVwtcGlnOwor6Kq+ID4gc3BlYWtcLWdlbnRseTsKK+iqtiA+IHNwZWFrXC1pbGxcLW9mOwor6KmiID4gaW5xdWlyZVwtaW50bzsKK+iotiA+IHNjb2xkXC1sb3VkbHk7CivopZsgPiBmaW5lXC1jbG90aGVzOwor6KWGID4gaG9vZFwtb3JcLWNvd2w7Civon4QgPiB0b1wtaGliZXJuYXRlOwor6JmvID4geW91bmdcLWRyYWdvbjsKK+iRnCA+IHNtaWxheFwtY2hpbmE7CivokKkgPiBzY2FuZGVudFwtaG9wOwor6JCYID4gbmFwaHRoYW5sZW5lOwor6I+dID4gc21pbGF4XC1jaGluYTsKK+iOpiA+IGp1bmdsZVwtZ3Jhc3M7CivoiqcgPiBjaGVzdG51dFwtb2FrOwor6IqaID4gZ3JlZW5cLXNwcm91dDsKK+iKkSA+IHdoaXRlXC1taWxsZXQ7CivoiZkgPiBob2xkXC1vZlwtc2hpcDsKK+iGlyA+IHVnbHlcLWFuZFwtZmF0Owor6IKZID4gYVwtc21hbGxcLXdvcm07CivnvoAgPiBmaXNoaW5nXC10cmFwOwor5722ID4gZmlzaGluZ1wtdHJhcDsKK+e6kyA+IGFcLWNoaW5cLXN0cmFwOwor57qBID4gc2hhZGVcLW9mXC1yZWQ7CivnuZkgPiB0b1wtaW50ZXJwcmV0Owor57mSID4gc2lsa1wtZmFicmljczsKK+e4lSA+IHRhbmdsZWRcLWhlbXA7Civnt6EgPiBmaXNoaW5nXC1saW5lOwor57ajID4gYWZmZWN0aW9uYXRlOwor57SVID4gc3BvaWxlZFwtc2lsazsKK+eymyA+IHBheVwtcmVzcGVjdHM7Civnsa8gPiBiYW1ib29cLWNoZXN0Owor57GfID4gYmFtYm9vXC1mbHV0ZTsKK+evtCA+IGJhbWJvb1wtZmx1dGU7Civnr6AgPiBkd2FyZlwtYmFtYm9vOwor562kID4geW91bmdcLWJhbWJvbzsKK+etjSA+IGJhbWJvb1wtc2hvb3Q7CivnrYUgPiBiYW1ib29cLWJydXNoOwor56mfID4gZWFyXC1vZlwtZ3JhaW47Civnp6wgPiBibGFja1wtbWlsbGV0Owor56WYID4gdG9cLWNhbGN1bGF0ZTsKK+ejoCA+IHNhbFwtYW1tb25pYWM7CivnorYgPiBhXC1mbG9vZFwtZ2F0ZTsKK+egnyA+IHN0b25lXC10YWJsZXQ7Civnn7wgPiBzdG9uZVwtYnJpZGdlOwor552SID4gdG9cLWdsYW5jZVwtYXQ7CivnmqYgPiBicmlnaHRcLXdoaXRlOwor55i6ID4gYW5hbFwtZmlzdHVsYTsKK+eWvyA+IHByaWNrbHlcLWhlYXQ7CivnkYsgPiB0eXBlXC1vZlwtamFkZTsKK+ePuSA+IHR5cGVcLW9mXC1qYWRlOwor546NID4gaWxsXC10ZW1wZXJlZDsKK+eLhiA+IHBla2luZXNlXC1kb2c7CivniYIgPiBmZW1hbGVcLXNoZWVwOwor54e3ID4gZGlzYXBwb2ludGVkOwor54ejID4gZGlzYXBwb2ludGVkOwor5ruyID4gc29ha1wtdGhyb3VnaDsKK+a7iiA+IGFcLXJpdmVyXC1uYW1lOwor5rOWID4gc3RpbGxcLXdhdGVyczsKK+aviCA+IGZlcnRpbGVcLWVnZ3M7CivmrpwgPiBoYWxmXC1zaXR0aW5nOwor5qy/ID4gZGlzY29udGVudGVkOwor5qySID4gbmFtZVwtb2ZcLXRyZWU7CivmqZIgPiB3b29kXC1zdHJlYWtzOwor5qe7ID4gemVsa292YVwtdHJlZTsKK+anqCA+IG91dGVyXC1jb2ZmaW47Civmp5QgPiB3YXRlclwtcHVsbGV5Owor5qWAID4gbmFtZVwtb2ZcLXRyZWU7Civmnp8gPiB3b29kXC1zdHJlYWtzOwor5paVID4gbXVsdGljb2xvcmVkOwor5pScID4gbGVhZFwtYnlcLWhhbmQ7CivmkZwgPiB0aHJvd1wtZ3JvdW5kOwor5pGZID4gdG9cLXRyYW5zcG9ydDsKK+aPkSA+IHRvXC1mYWJyaWNhdGU7CivmiIkgPiBhXC1iYXR0bGVcLWF4ZTsKK+aHjSA+IGJlXC1hZnJhaWRcLW9mOwor5oayID4gY29uc3RpdHV0aW9uOwor5oW2ID4gY29uZ3JhdHVsYXRlOwor5oScID4gYmVcLXNhdGlzZmllZDsKK+aDuyA+IGZlZWxcLWFuZ3Vpc2g7CivmgrUgPiBkaXNhcHBvaW50ZWQ7Civlu7kgPiB0b1wtcGVyc2VjdXRlOwor5buIID4gYmlnXC1idWlsZGluZzsKK+W4qCA+IGhhbmRrZXJjaGllZjsKK+W2oiA+IGhpZ2hcLW9yXC10YWxsOwor5bGnID4gd29vZGVuXC1zaG9lczsKK+WxmCA+IHRoZVwteW91bmdlc3Q7Civlq7IgPiBncmFuZFwtbW90aGVyOwor5aOIID4gZGlzYXBwb2ludGVkOwor5aGiID4gZW50cmVuY2htZW50Owor5Z+cID4gb3BlblwtY291bnRyeTsKK+WatiA+IHNlZWtcLWZyaWVuZHM7Civlma8gPiBpbnRlcmplY3Rpb247Civllq0gPiBjb25kb2xlXC13aXRoOwor5ZKlID4gc291bmRcLW9mXC1jYXQ7CivlkbkgPiB0b1wtZWF0XC1ncmFzczsKK+WPhCA+IHRha2VcLXBhcnRcLWluOwor5Y63ID4gdGhlXC1mb3JlXC1hcm07CivljqQgPiB0b1wtY2FsY3VsYXRlOwor5YujID4gYWNoaWV2ZW1lbnRzOwor5Ym3ID4gdG9cLWxldmVsXC1vZmY7CivliZcgPiB0b1wtbGV2ZWxcLW9mZjsKK+WElyA+IGNvbXBhcmVcLXdpdGg7Civkva0gPiB1bnN1Ym1pc3NpdmU7CivkurAgPiBjYXBpdGFsXC1jaXR5Owor5Li8ID4gYm93bFwtb2ZcLWZvb2Q7CivktLwgPiB0b1wtZXh0aXJwYXRlOwor5LSVID4gYVwtd29vZHBlY2tlcjsKK+SzliA+IGZseWluZ1wtYmlyZHM7CivkspwgPiBsb3RzXC1vZlwtZmlzaDsKK+SxiiA+IHJvZVwtb3JcLXNwYXduOwor5LC4ID4gdGhlXC1uYXV0aWx1czsKK+SvtiA+IGZhaXJcLW9mXC1oYWlyOwor5K+sID4gdG9cLWhhbmdcLWRvd247Civkr6cgPiBhXC1zbWFsbFwtaGFsbDsKK+SunyA+IGJpZ1wtYW5kXC10YWxsOwor5K6RID4gYVwtZ3JheVwtaG9yc2U7CivkrZggPiB3ZWxsXC1zdGFja2VkOwor5K2XID4gd2VsbFwtc3RhY2tlZDsKK+StliA+IGFuaW1hbFwtZmVlZHM7CivkrYogPiB3ZWxsXC1zdGFja2VkOwor5K2JID4gbWFzaGVkXC1iZWFuczsKK+SsnCA+IGV2aWxcLXNwaXJpdHM7CivkrJogPiB0b1wtbW92ZVwtZmFzdDsKK+SsiyA+IHZpb2xlbnRcLXdpbmQ7Civkq6ggPiB0YWxsXC1hbmRcLWJpZzsKK+SrmiA+IHNob3J0XC1oZWFkZWQ7Civkq5kgPiB0aGVcLWZvcmVoZWFkOwor5KuVID4gc21hbGxcLWhlYWRlZDsKK+SrhyA+IHRoZVwtd2hpc2tlcnM7CivkqrkgPiBhXC1sYXJnZVwtZmFjZTsKK+SqsCA+IGludGVyamVjdGlvbjsKK+SqoSA+IHRvXC1mYWxsXC1kb3duOwor5KqLID4gc2lsa1wtY29yZGFnZTsKK+SpjyA+IGFcLXNtYWxsXC1mYWNlOwor5KmLID4gYVwtZ3JlZW5cLWZhY2U7CivkqYogPiBnb29kXC1sb29raW5nOwor5KmHID4gYVwtc21hbGxcLWhlYWQ7CivkqLYgPiB0aHVuZGVyc3Rvcm07CivkqLIgPiBhXC1zbWFsbFwtaGFyZTsKK+SoqiA+IGFcLWR1c3RcLXN0b3JtOwor5KidID4gYVwtcHVyZVwtd29tYW47CivkqIggPiBhXC1zbWFsbFwtYmlyZDsKK+SnrCA+IHdhdGVyJydzXC1lZGdlOwor5KeiID4gYVwtcm91Z2hcLXJvYWQ7Civkp5kgPiBhXC1oaWdoXC1tb3VuZDsKK+SlgyA+IGFcLWJpZ1wtaGFtbWVyOwor5KSsID4gYVwtc21hbGxcLWdvbmc7CivkpKYgPiBhXC1iYXR0bGVcLWF4ZTsKK+SkoyA+IGFcLW1ldGFsXC1yaW5nOwor5KSLID4geWVsbG93XC1mYWNlZDsKK+SjvyA+IHRvXC1lbnRlcnRhaW47Civko74gPiBjaGVlc2VcLWRyZWdzOwor5KO8ID4gbWl4ZWRcLXN0YXJjaDsKK+SglCA+IGZhclwtYW5kXC1kZWVwOwor5J+/ID4gdG9cLXJldmVyZW5jZTsKK+SfuSA+IHRvXC1ob3BcLWFib3V0Owor5J+VID4gdG9cLXN0ZXBcLXVwb247CivknrEgPiB0b1wtZmFsbFwtb3ZlcjsKK+SepyA+IGhhcmRcLXRvXC13YWxrOwor5JypID4gdG9cLWVudGVydGFpbjsKK+SaqiA+IGN1cnZlZFwtaG9ybnM7CivkmIQgPiBjaWNhZGFcLWZhbWl5Owor5JiAID4gZ3Jhc3Nob3BwZXJzOwor5JewID4gc3BpcmFsXC1zaGVsbDsKK+SXpyA+IGxpYmVsbHVsaWRhZTsKK+SWniA+IGFcLXNlYVwtaW5zZWN0Owor5JW7ID4gdG9cLWFkaGVyZVwtdG87CivklbogPiBkZW5zZVwtZ3Jvd3RoOwor5JWdID4gbWVkaWNhbFwtaGVyYjsKK+SViyA+IG9mXC1lbG1cLWdyb3VwOwor5JOvID4gd2F0ZXJcLXBlcHBlcjsKK+SRvSA+IGFcLWxhcmdlXC1ib2F0Owor5JG1ID4gYVwtc21hbGxcLWJvYXQ7CivkkIUgPiB0aGVcLWJ1dHRvY2tzOwor5JCBID4gdGhlXC1idXR0b2NrczsKK+SPlyA+IHVuZXhwZWN0ZWRseTsKK+SPkCA+IHRoZVwtYnV0dG9ja3M7Civkj40gPiBhXC1zbWFsbFwtd29ybTsKK+SPgCA+IGluaGFybW9uaW91czsKK+SOmCA+IGJpcmRzXC1mbHlpbmc7CivkjpUgPiBmbHlpbmdcLWJpcmRzOwor5I2EID4gYW5cLWluZGVudHVyZTsKK+SMtiA+IFwpXC1ibGFja1wtc2lsazsKK+SMhyA+IGFcLXRoaWNrXC1yb3BlOwor5IyGID4gc2lsa1wtZmFicmljczsKK+SKhSA+IHRvXC1zb2FrXC1yaWNlOwor5ImvID4gZHJpZWRcLWJhbWJvbzsKK+SJlSA+IGFcLWJhbWJvb1wtaGF0Owor5ImUID4gYmFtYm9vXC1zbGlwczsKK+SInyA+IGJyb2tlblwtc291bmQ7Civkh7ggPiBhXC1iYW1ib29cLW1hdDsKK+SHnSA+IHRvXC1icmVha1wtb2ZmOwor5IecID4gc21hbGxcLWJhbWJvbzsKK+SGrCA+IHRvXC1mYWxsXC1kb3duOwor5IaiID4gdG9cLXBlbmV0cmF0ZTsKK+SGnyA+IGNvcmVzcG9uZGluZzsKK+SGjSA+IGN1dHRlZFwtY3JvcHM7CivkhYEgPiB0b1wtaHVza1wtcmljZTsKK+SDsiA+IGFcLWdyZWF0XC1yb2NrOwor5IOvID4gc21hbGxcLXN0b25lczsKK+SDnSA+IHJ1Z2dlZFwtcm9ja3M7Civkg40gPiB0b1wtZmFsbFwtZG93bjsKK+SCkCA+IHNob3J0XC1zdHVwaWQ7CivkgacgPiB0b1wtb3Blblwtd2lkZTsKK+SBoCA+IHRvXC1oYW5nXC1kb3duOwor5ICBID4gYVwtc21hbGxcLWJvd2w7Civjv70gPiBhXC1zbWFsbFwtYm93bDsKK+O/tSA+IHNvZnRcLWxlYXRoZXI7Civjv7IgPiBhXC1maWVyY2VcLWRvZzsKK+O/qiA+IHNraW5cLWRpc2Vhc2U7Civjv6ggPiBzbWFsbFwtc3RvbmVzOwor47+KID4gdmVyeVwtcGFpbmZ1bDsKK+O+lCA+IGxvbmdcLWlsbG5lc3M7CivjvIsgPiB0aGVcLWN1Y3VtYmVyOwor47qWID4gZG9nc1wtYmFya2luZzsKK+O6jiA+IGZpZXJjZVwtYmVhc3Q7Civjub8gPiBhXC1maWVyY2VcLWRvZzsKK+O5qiA+IGFcLWZpZXJjZVwtZG9nOwor47i+ID4gdG9cLWZpbGxlZFwtdXA7CivjuK0gPiB0aGVcLW9wcG9zaXRlOwor47iYID4gdGVuXC10aG91c2FuZDsKK+O3uSA+IGludGVuc2VcLWhlYXQ7CivjtpUgPiB0b1wtd2FzaFwtcmljZTsKK+O1iiA+IG1vdmluZ1wtaW1hZ2U7CivjtJUgPiB0b1wtYm9pbFwtYXdheTsKK+O0kyA+IHRvXC13YXNoXC1yaWNlOwor47OeID4gZGVlcFwtYW5kXC1mYXI7Civjs5EgPiB0b1wtZmxvd1wtb3ZlcjsKK+OwtyA+IHJlc3VycmVjdGlvbjsKK+OvrCA+IGFjaGlldmVtZW50czsKK+OvoCA+IGFcLWNyb3NzXC1iZWFtOwor46+cID4gZGVjYXllZFwtd29vZDsKK+OuriA+IGFcLXdlbGxcLXN3ZWVwOwor466sID4gYVwtZnJ1aXRcLXRyZWU7CivjrqogPiBhXC1zbWFsbFwtYm9hdDsKK+OujyA+IGFcLWZydWl0XC10cmVlOwor462rID4gYVwtZnJ1aXRcLXRyZWU7CivjrLUgPiB0aGVcLXNoaW5ib25lOwor46uSID4gaGFuZHNcLWpvaW5lZDsKK+OrgyA+IGZsYWdzXC1mbHlpbmc7Civjq4EgPiB0b1wtY3V0XC1hcGFydDsKK+OorSA+IHVucmVhc29uYWJsZTsKK+OntCA+IHRvXC1ydWJcLWhhbmRzOwor46eiID4gdG9cLWRlcGVuZFwtb247CivjprAgPiB0b1wtYnJlYWtcLW9mZjsKK+OmpiA+IGFwcHJlaGVuc2l2ZTsKK++mmyA+IHNtZWx0XC1tZXRhbHM7Civjpo4gPiBjYW50YW5rZXJvdXM7CivjpbUgPiB0b1wtZGlzaG9ub3VyOwor76WrID4gdGFrZVwtcGFydFwtaW47CivjpaAgPiBpbnRlbGxpZ2VuY2U7CivjpLMgPiB0b1wtZGVwZW5kXC1vbjsKK+OkpyA+IGNvbmNpbGlhdGlvbjsKK+OkniA+IGRpc2FwcG9pbnRlZDsKK++kkSA+IHNwaXJhbFwtc2hlbGw7Civjo5IgPiBoYWlyXC1yYWlzaW5nOwor46ORID4gZG91YmxlXC1pbWFnZTsKK+OilyA+IGFcLWhpZ2hcLWhvdXNlOwor46GUID4gb2lsZWRcLWNhbGljbzsKK+OhhSA+IHN0b3JhZ2VcLXJvb207CivjoL4gPiBhXC1kaXNoXC1jbG90aDsKK+OgvSA+IGFcLWRpc2hcLWNsb3RoOwor46CSID4gbW91bnRhaW5cLXRvcDsKK+OfvSA+IG1vdW50YWluXC10b3A7Civjn7ogPiBtb3VudGFpblwtdG9wOwor45+QID4gYmlnXC1hbmRcLWhpZ2g7Civjn4cgPiBhXC1sYW5kXC1zbGlkZTsKK+OeoiA+IHRvXC1hcnJpdmVcLWF0Owor456bID4gcmVkXC1zbGlwcGVyczsKK+OekyA+IHRoZVwtYnV0dG9ja3M7CivjnoUgPiBub3RcLXN0cmFpZ2h0Owor45yXID4gY292ZXRvdXNuZXNzOwor45u8ID4gdG9cLWludGVycnVwdDsKK+ObpSA+IHRvXC1wcm9zdHJhdGU7Civjm4ogPiB0b1wtc3BlY3VsYXRlOwor45uGID4gdG9cLXNwZWN1bGF0ZTsKK+OYoiA+IGFcLXJvdW5kXC1jYXZlOwor45iNID4gc291bmRcLW9mXC1yYXQ7Civjl5IgPiBpbnRlcmplY3Rpb247CivjlrcgPiBiaXJkXC1zaW5naW5nOwor45agID4gYW5cLWF1eGlsaWFyeTsKK+OVryA+IHNsb3dcLXRvbmd1ZWQ7CivjlZIgPiBhXC1sb2Z0eVwtcGVhazsKK+OVgyA+IHRvXC1mYWxsXC1vdmVyOwor45SsID4gdG9cLWVzdGFibGlzaDsKK+OUpiA+IHRvXC1lbmNvdXJhZ2U7CivjlJUgPiB3aXRoXC1wdXJwb3NlOwor45SOID4gdG9cLWN1dFwtYXBhcnQ7CivjlIMgPiB0b1wtY3V0XC1zaG9ydDsKK+OToyA+IHRvXC1zaW5rXC1pbnRvOwor45GqID4gYVwtZ2VuZXJhdGlvbjsKK+ORpCA+IGdvb2RcLWxvb2tpbmc7CivjkZQgPiBhbGxcLXRvZ2V0aGVyOwor45C4ID4gdG9cLW93blwtbW9uZXk7CivjkLQgPiB0b1wtZHJhZ1wtZG93bjsKK+S7pSA+IGJ5XC1tZWFuc1wtb2Y7CivovrIgPiBhZ3JpY3VsdHVyZTsKK+W+hCA+IG5hcnJvd1wtcGF0aDsKK+WHoCA+IHNtYWxsXC10YWJsZTsKK+S+vyA+IGNvbnZlbmllbmNlOwor55S1ID4gZWxlY3RyaWNpdHk7Civnmb4gPiBvbmVcLWh1bmRyZWQ7Civot6MgPiBiYXJlXC1mb290ZWQ7CivotIUgPiB1bm5lY2Vzc2FyeTsKK+WKnyA+IGFjaGlldmVtZW50Owor5rGfID4gbGFyZ2VcLXJpdmVyOwor5rOoID4gY29uY2VudHJhdGU7CivniacgPiB0ZW5kXC1jYXR0bGU7CivlqZogPiBnZXRcLW1hcnJpZWQ7CivliIogPiBwdWJsaWNhdGlvbjsKK+WGnCA+IGFncmljdWx0dXJlOwor54afID4gd2VsbFwtY29va2VkOwor6aWtID4gY29va2VkXC1yaWNlOwor5aWiID4gZXh0cmF2YWdhbnQ7Civmn6UgPiBpbnZlc3RpZ2F0ZTsKK+eroCA+IGNvbXBvc2l0aW9uOwor5oyJID4gcHV0XC1oYW5kXC1vbjsKK+idoCA+IGtpbmRcLW9mXC1iYXQ7CivonZUgPiBuaWJibGVcLWF3YXk7Civlm7AgPiB0b1wtc3Vycm91bmQ7CivpmakgPiBuYXJyb3dcLXBhc3M7Civnu4MgPiB0b1wtcHJhY3RpY2U7Civmuq8gPiBnb1wtdXBzdHJlYW07CivmuIkgPiBmb3JkXC1zdHJlYW07CivotKUgPiBiZVwtZGVmZWF0ZWQ7CivnurcgPiBpblwtZGlzb3JkZXI7CivnvLogPiBiZVwtc2hvcnRcLW9mOwor6YGtID4gY29tZVwtYWNyb3NzOwor5oi0ID4gd2Vhclwtb25cLXRvcDsKK+WLpCA+IGluZHVzdHJpb3VzOwor5YuYID4gaW52ZXN0aWdhdGU7Civpq4QgPiBib25lXC1tYXJyb3c7CivlirkgPiBlZmZpY2FjaW91czsKK+iyjCA+IGNvdW50ZW5hbmNlOwor57mBID4gY29tcGxpY2F0ZWQ7Civmn7MgPiB3aWxsb3dcLXRyZWU7Civlh4QgPiBiaXR0ZXJcLWNvbGQ7CivmtokgPiBmb3JkXC1zdHJlYW07CivpnJ4gPiByb3N5XC1jbG91ZHM7Civpo7QgPiBzd2VldFwtbWVhdHM7Civpo68gPiBjb29rZWRcLXJpY2U7CivogaogPiBpbnRlbGxpZ2VudDsKK+WApiA+IGJlXC10aXJlZFwtb2Y7CivmkZQgPiBmYWxsXC1ncm91bmQ7CivphokgPiBpbnRveGljYXRlZDsKK+afuyA+IGludmVzdGlnYXRlOwor5rabID4gbGFyZ2VcLXdhdmVzOwor6ZSFID4gY29va2luZ1wtcG90Owor5LuUID4gc21hbGxcLXRoaW5nOwor5pyDID4gdG9cLWFzc2VtYmxlOwor6Zu7ID4gZWxlY3RyaWNpdHk7Civmi4YgPiB0b1wtYnJlYWtcLXVwOwor57+gID4gY29sb3JcLWdyZWVuOwor6ZqqID4gbmFycm93XC1wYXNzOwor5pmVID4gaGFsb1wtaW5cLXNreTsKK+mZuiA+IG5hcnJvd1wtcGFzczsKK+e6oCA+IGludmVzdGlnYXRlOwor5aS4ID4gZXh0cmF2YWdhbnQ7CivovqggPiBkaXN0aW5ndWlzaDsKK+iRmyA+IGVkaWJsZVwtYmVhbjsKK+i9vyA+IHNlZGFuXC1jaGFpcjsKK+aVlyA+IGJlXC1kZWZlYXRlZDsKK+aUqyA+IHNuYXRjaFwtYXdheTsKK+e0myA+IGluXC1kaXNvcmRlcjsKK+mNmyA+IGZvcmdlXC1tZXRhbDsKK+WOlSA+IG1pbmdsZVwtd2l0aDsKK+mNiyA+IGNvb2tpbmdcLXBvdDsKK+ervyA+IGJhbWJvb1wtcG9sZTsKK+WIuCA+IGNlcnRpZmljYXRlOwor56mJID4geW91bmdcLWdyYWluOwor6amzID4gdmFyaWNvbG9yZWQ7CivmhpQgPiBiZVwtd29yblwtb3V0Owor57KeID4gZ3JvdW5kXC1yaWNlOwor6YWUID4gaW50b3hpY2F0ZWQ7CivpgYIgPiBjb21wbHlcLXdpdGg7CivpmrYgPiBzdWJzZXJ2aWVudDsKK+e8uCA+IGVhcnRoZW5cLWp1ZzsKK+iCoiA+IGh1bWFuXC1saW1iczsKK+WwtCA+IGVtYmFycmFzc2VkOwor5ZGQID4gcmFpc2VcLXZvaWNlOwor6aKWID4gcmljZVwtdGFzc2VsOwor56ClID4gYVwtd2hldHN0b25lOwor5a2VID4gYmVcLXByZWduYW50Owor6ZKeID4gcGFwZXJcLW1vbmV5Owor5Z6uID4gYmVcLWRlZmVhdGVkOwor55CiID4gcG9saXNoXC1qYWRlOwor57u9ID4gcmlwcGVkXC1zZWFtOwor5aWgID4gcGF5XC1yZXNwZWN0Owor5r6cID4gb3ZlcmZsb3dpbmc7Civmg5UgPiBiZVwtY2F1dGlvdXM7CivplLsgPiBmb3JnZVwtbWV0YWw7CivomoAgPiBuaWJibGVcLWF3YXk7CivotrQgPiBseWluZ1wtcHJvbmU7CivnqpggPiBlbWJhcnJhc3NlZDsKK+maiyA+IHN1aVwtZHluYXN0eTsKK+eehCA+IHRha2VcLWFpbVwtYXQ7CivnpZ8gPiBldmlsXC1zcGlyaXQ7Civll5QgPiBiZVwtYW5ncnlcLWF0Owor5aWVID4gaW5cLXNlcXVlbmNlOwor5qa0ID4gcG9tZWdyYW5hdGU7Civmo5ggPiBqdWp1YmVcLXRyZWU7Civls5kgPiBzdGFuZFwtZXJlY3Q7CivnoIwgPiBzdG9uZVwtc3RlcHM7Civmp5AgPiBsb2N1c3RcLXRyZWU7Civps54gPiBmaXNoXC1zY2FsZXM7Civmg7ogPiBpbnRlbGxpZ2VudDsKK+mrkyA+IGJvbmVcLW1hcnJvdzsKK+eCvSA+IGJ1cm5pbmdcLWhvdDsKK+i/giA+IGRvY3RyaW5haXJlOwor57yqID4gd2luZFwtYXJvdW5kOwor5YeLID4gYmVcLXdpdGhlcmVkOwor57ykID4gZmxvdXJpc2hpbmc7Civpm7MgPiB0aHVuZGVyY2xhcDsKK+i1mCA+IHVubmVjZXNzYXJ5Owor6am4ID4gZXh0cmFcLWhvcnNlOwor5Ze3ID4gbG91ZFwtY2xhbW9yOwor54KWID4gc3Rld1wtc2xvd2x5Owor6LCPID4gcmVtb25zdHJhdGU7Civnr4YgPiBzZWFsXC1zY3JpcHQ7CivlrqYgPiBvZmZpY2lhbGRvbTsKK+eTriA+IGVhcnRoZW5cLWphcjsKK+aclSA+IHByb25vdW5cLScnaScnOwor6ZiRID4gZG9vclwtc2NyZWVuOwor5Y2kID4gc2FsaW5lXC1zb2lsOwor5ZSPID4gd2VlcFwtb3JcLXNvYjsKK+axqSA+IHJ1blwtc3dpZnRseTsKK+amlSA+IGJhbnlhblwtdHJlZTsKK+mXsCA+IGludGVyY2FsYXJ5Owor5piKID4gc3VtbWVyXC10aW1lOwor5463ID4gZmxhd1wtaW5cLWdlbTsKK+mYmSA+IHdhdGNoXC10b3dlcjsKK+eRlSA+IGZsYXdcLWluXC1nZW07Civms4wgPiB0b1wtc2VlcFwtb3V0Owor54O9ID4gc2lnbmFsXC1maXJlOwor5a21ID4gc2l0XC1vblwtZWdnczsKK+akrSA+IG92YWxcLXNoYXBlZDsKK+eXiSA+IGNvbnZ1bHNpb25zOwor5YydID4gZnVsbFwtY2lyY2xlOwor6aWqID4gY29va2VkXC1mb29kOwor5baZID4gcHJlY2lwaXRvdXM7CivpoqcgPiBjaGVla1wtYm9uZXM7CivplZcgPiBib3JpbmdcLXRvb2w7Civmj7YgPiBtYWtlXC1mdW5cLW9mOwor54K3ID4gY2FuZGxlXC13aWNrOwor6LSyID4gZm9yZ2VcLWFoZWFkOwor6JqxID4gZ3Jhc3Nob3BwZXI7Civnl6ggPiBjb25zdW1wdGlvbjsKK+a/giA+IGFcLXdhdGVyZmFsbDsKK+axkCA+IG5pZ2h0XC10aWRlczsKK+etoCA+IGJhbWJvb1wtc2tpbjsKK+awpCA+IGhhbmdpbmdcLWZvZzsKK+eXlCA+IGhlbW9ycmhvaWRzOwor6La/ID4gdG9cLXRyZWFkXC1vbjsKK+inniA+IHdpbmVcLXZlc3NlbDsKK+aMuSA+IHRvXC1iYWxlXC1vdXQ7CivohpEgPiB0aGVcLWtuZWVjYXA7CivlvocgPiBjb21wbHlcLXdpdGg7CivllLMgPiBjcnlcLW9mXC1iaXJkOwor56SFID4gc3RvbmVcLWJsb2NrOwor566UID4gcmVlZFwtc2NyZWVuOwor6LG4ID4gcmFkaWNhbFwtMTUzOwor5rufID4gb3ZlcmZsb3dpbmc7Civng4MgPiBoeWRyb2NhcmJvbjsKK+egrSA+IHN0b25lXC1wcm9iZTsKK+a+jSA+IHRpbWVseVwtcmFpbjsKK+m+iyA+IHRvb3RoXC1kZWNheTsKK+e8sSA+IGF0dGFjaGVkXC10bzsKK+WlgiA+IGJlXC1udW1lcm91czsKK+m7qSA+IHRvXC1kaXNob25vcjsKK+mltCA+IHN3ZWV0XC1tZWF0czsKK+WjhSA+IHRvXC1vYnN0cnVjdDsKK+a+tiA+IHN0aWxsXC13YXRlcjsKK+mkjSA+IGJlXC1zYXRpYXRlZDsKK+aepSA+IHR5cGVcLW9mXC1vYWs7CivonKIgPiBncmFzc2hvcHBlcjsKK+eFhSA+IGZvcmdlXC1tZXRhbDsKK+ahlSA+IHRhbGxvd1wtdHJlZTsKK+myoiA+IHNpbHZlclwtY2FycDsKK+i2sSA+IGdvXC1pblwtaHVycnk7CivlpqsgPiBmYW1pbHlcLW5hbWU7Civmmr4gPiBtb3JuaW5nXC1zdW47CivojaYgPiBicmluZGxlZFwtb3g7CivpgpsgPiBpblwtZGlzdHJlc3M7CivmiKIgPiB0b1wtcHV0XC1hd2F5Owor5qanID4gdHlwZVwtb2ZcLXlldzsKK+WghyA+IHllbGxvd1wtbG9hbTsKK+WKrCA+IGJlXC1kaWxpZ2VudDsKK+mtiCA+IG1pc2NoZXZpb3VzOwor6Y2qID4gYW5cLWlyb25cLXBhbjsKK+icoyA+IGR1bmdcLWJlZXRsZTsKK+eXpiA+IFwoZmxhdFwpXC1tb2xlOwor5oisID4gZXh0ZXJtaW5hdGU7Civll4kgPiBiaXJkJydzXC1jcm9wOwor5YSLID4gYVwtc21hbGxcLWphcjsKK+ianCA+IHBsYW50XC1sb3VzZTsKK+eynCA+IHNlbGxcLWdyYWluczsKK+aUriA+IHRvXC1mZW5kXC1vZmY7Civoi44gPiBjaGluYVwtZ3Jhc3M7Civln5UgPiBlYXJ0aGVuXC1qYXI7CivlnakgPiBlYXJ0aGVud2FyZTsKK+amiSA+IHR5cGVcLW9mXC1lbG07CivnjqIgPiBwb3JwaHlyaXRlczsKK+e7gSA+IHRvXC1jb250cmFjdDsKK+a9hiA+IHRpbnlcLXN0cmVhbTsKK+mruSA+IHJlZFwtbGFjcXVlcjsKK+inliA+IHRvXC1sb25nXC1mb3I7CivonrUgPiBhXC1jaHJ5c2FsaXM7CivmnaogPiB0aXBcLW9mXC10d2lnOwor5bmCID4gY292ZXJcLWNsb3RoOwor56GXID4gYmFycmVuXC1sYW5kOwor6ISeID4gbWluY2VkXC1tZWF0Owor6L21ID4gZW5kXC1vZlwtYXhsZTsKK+allyA+IGJhclwtb2ZcLWRvb3I7CivmoYQgPiBhXC1jb2lyXC1wYWxtOwor5aCgID4gYmF0dGxlbWVudHM7Civkv5wgPiB0b1wtdHJ1c3RcLXRvOwor6b2yID4gdG9vdGhcLWRlY2F5Owor6bu3ID4gdG9cLWRpc2hvbm9yOwor6bqAID4gZmVtYWxlXC1kZWVyOwor6bm1ID4gc2FsaW5lXC1zb2lsOwor6biPID4gdHJvcGljXC1iaXJkOwor6bS6ID4gdGhlXC1wZWxpY2FuOwor6bGgID4gbWluY2VkXC1maXNoOwor6bGXID4gZmlzaFwtc2NhbGVzOwor6bCxID4gc2lsdmVyXC1jYXJwOwor6ayZID4gbWF0dGVkXC1oYWlyOwor6amUID4gYmxhY2tcLWhvcnNlOwor6amHID4gaGVhdnlcLWhvcnNlOwor6ai6ID4gaGVhdnlcLWhvcnNlOwor6aeZID4gZXh0cmFcLWhvcnNlOwor6aeBID4gdmFyaWNvbG9yZWQ7CivppZwgPiBiZVwtc2F0aWF0ZWQ7CivppIEgPiBjb29rZWRcLWZvb2Q7Civpo6ogPiBjb29rZWRcLWZvb2Q7CivpobQgPiBjaGVla1wtYm9uZXM7CivpoaYgPiBiZVwtd29yblwtb3V0Owor6aGHID4gYmVcLXdvcm5cLW91dDsKK+mgtCA+IHJpY2VcLXRhc3NlbDsKK+mgiyA+IHRvXC1jYXJlXC1mb3I7CivpnqsgPiBpbnRlcnJvZ2F0ZTsKK+mdgiA+IHRodW5kZXJjbGFwOwor6ZqJID4gaW5cLWRpc29yZGVyOwor6ZioID4gaW5cLWRpc3RyZXNzOwor6ZeVID4gd2F0Y2hcLXRvd2VyOwor6ZeMID4gZG9vclwtc2NyZWVuOwor6ZagID4gaW50ZXJjYWxhcnk7Civplo8gPiBpbnRlcmNhbGFyeTsKK+mQpiA+IGNhbGlmb3JuaXVtOwor6Y+7ID4gcGhvc3Bob25pdW07Civpj5wgPiBib3JpbmdcLXRvb2w7CivpjpAgPiBmYW1pbHlcLW5hbWU7CivpjZAgPiBhXC1oZWFkc3RhbGw7CivpiJQgPiBwYXBlclwtbW9uZXk7Civph4YgPiBkaXN0aW5ndWlzaDsKK+mGuSA+IHN0cm9uZ1wtd2luZTsKK+mGsiA+IHN0cm9uZ1wtd2luZTsKK+mGkyA+IHNhbHRlZFwtbWVhdDsKK+mFjyA+IG1pbGxldFwtd2luZTsKK+mBuSA+IGNvbXBseVwtd2l0aDsKK+mBoSA+IGdvXC11cHN0cmVhbTsKK+i/iiA+IHRvXC1nb1wtcm91bmQ7CivovY4gPiBzZWRhblwtY2hhaXI7CivovYcgPiBjb21wbGljYXRlZDsKK+i8piA+IGFcLWhhbmRcLWNhcnQ7Civou7kgPiBlbmRcLW9mXC1heGxlOwor6Lm5ID4gdG9cLXRyZWFkXC1vbjsKK+i5tSA+IHRvXC10cmVhZFwtb247CivotrIgPiBnb1wtaW5cLWh1cnJ5Owor6LSXID4gY291bnRlcmZlaXQ7Civos4EgPiBmb3JnZVwtYWhlYWQ7CivospggPiB0aGVcLXBhbnRoZXI7CivosaYgPiBhXC13aWxkXC1ib2FyOwor6LGYID4gYVwtc21hbGxcLXBpZzsKK+irqyA+IHJlbW9uc3RyYXRlOwor6KuMID4gcmVtb25zdHJhdGU7Civop7QgPiB3aW5lXC12ZXNzZWw7Civop7EgPiB0YXJ0YXJcLWhvcm47CivopoggPiBpbnZlc3RpZ2F0ZTsKK+iktSA+IGJyaWRhbFwtdmVpbDsKK+ignCA+IGdyYXNzaG9wcGVyOwor6KCLID4gY2F0ZXJwaWxsYXI7Civon5sgPiBhXC1sYW5kXC1jcmFiOwor6J2bID4gdGhlXC1zb3dcLWJ1ZzsKK+idjSA+IGFcLWNlbnRpcGVkZTsKK+ibkyA+IGNhdGVycGlsbGFyOwor6JeaID4gd2F0ZXJcLXBsYW50Owor6JeEID4gZWRpYmxlXC1mZXJuOwor6JOqID4gcGFwZXJcLXBsYW50Owor6JOCID4gbHVja3lcLXBsYWNlOwor6JKtID4gdG9cLWN1dGdyYXNzOwor6JCQID4gbHVja3lcLXBsYW50Owor6I+iID4gdG9cLWluY3ViYXRlOwor6IunID4gY2hpbmFcLWdyYXNzOwor6ImXID4gYm93XC1vZlwtanVuazsKK+iHjyA+IHRoZVwta25lZWNhcDsKK+iDviA+IG1pbmNlZFwtbWVhdDsKK+iDlCA+IHJvdHRlblwtbWVhdDsKK+iCiCA+IHRvXC1jb21tZW5jZTsKK+iBsCA+IGludGVsbGlnZW50Owor6IGmID4gdGhlXC1oZWFyaW5nOwor6IGhID4gaW50ZWxsaWdlbnQ7CivogJEgPiBzcGVjaWFsaXplZDsKK+e/hiA+IGNvbG9yXC1ncmVlbjsKK+e+liA+IGFcLWJsYWNrXC1yYW07CivnvoMgPiBjb3ZlclwtY2xvdGg7CivnvbEgPiBmaXNoaW5nXC1uZXQ7CivnvaAgPiBhbmltYWxcLXRyYXA7CivnvZIgPiByYWRpY2FsXC0xMjI7CivnvYsgPiBlYXJ0aGVuXC1qYXI7Civnub4gPiBhdHRhY2hlZFwtdG87Civnub0gPiBmbG91cmlzaGluZzsKK+e5hiA+IHdpbmRcLWFyb3VuZDsKK+e2uyA+IHJpcHBlZFwtc2VhbTsKK+ezviA+IGludmVzdGlnYXRlOwor57O2ID4gc2VsbFwtZ3JhaW5zOwor57OiID4gcmljZVwtc25hY2tzOwor57C5ID4gdGFsbFwtYmFtYm9vOwor57C1ID4gZmluZVwtYmFtYm9vOwor57CwID4gYmFtYm9vXC1yYWZ0Owor56+UID4gdGFsbFwtYmFtYm9vOwor566YID4gZmluZVwtYmFtYm9vOwor562pID4gYmFtYm9vXC1waXBlOwor562KID4gYmFtYm9vXC1yb3BlOwor562HID4gYmFtYm9vXC1uYW1lOwor56yvID4gYVwtYmlyZFwtY2FnZTsKK+equCA+IGZhaW50XC1zb3VuZDsKK+eptSA+IGRlZXBcLWhvbGxvdzsKK+epjiA+IHJpY2VcLXRhc3NlbDsKK+ejvSA+IGJhcnJlblwtbGFuZDsKK+ejuSA+IHN0b25lXC13ZWRnZTsKK+eilCA+IFwvMlwtcHJcLXN0b25lOwor56CGID4gXC8yXC1wclwtc3RvbmU7CivnoIMgPiB3aGl0ZVwtc3RvbmU7CivnnrUgPiB0b1wtc3RhcmVcLWF0Owor552gID4gdG9cLWNhcmVcLWZvcjsKK+edjiA+IHRvXC1sb25nXC1mb3I7CivnnKUgPiBleWVcLXNvY2tldHM7CivnnJEgPiBzdW5rZW5cLWV5ZXM7CivnnIogPiBkaW1cLXNpZ2h0ZWQ7CivnmoMgPiBjb3VudGVuYW5jZTsKK+eZhiA+IGNvbnN1bXB0aW9uOwor55iaID4gdG9cLWhpY2NvdWdoOwor55ezID4gcG9ja1wtbWFya2VkOwor55eyID4gcG9ja1wtbWFya2VkOwor55etID4gbWVub3JyaGFnaWE7Civnl5kgPiBjb252dWxzaW9uczsKK+eXgyA+IGluZGlnZXN0aW9uOwor55SVID4gZWFydGhlblwtamFyOwor54+9ID4gamFkZVwtdGFibGV0Owor546XID4gXC8yXC1wclwtc3RvbmU7CivnjY8gPiB0aGVcLXBhbnRoZXI7Civni6IgPiBhbmltYWxcLW5hbWU7CivnipYgPiBicmluZGxlZFwtb3g7Civnh5YgPiByZWhlYXRcLWZvb2Q7Civnhr4gPiBidXJuaW5nXC1ob3Q7CivnhZ8gPiBicmlnaHRcLXJvb207CivnhY8gPiBkcnlcLWJ5XC1maXJlOwor54WGID4gcmFnaW5nXC1maXJlOwor54O0ID4gaHlkcm9jYXJib247CivngakgPiBvdmVyZmxvd2luZzsKK+eBpyA+IG92ZXJmbG93aW5nOwor54C+ID4gb3ZlcmZsb3dpbmc7CivngKAgPiB0aW55XC1zdHJlYW07Civmv6QgPiBsYXJnZVwtd2F2ZXM7CivmvrAgPiBvdmVyZmxvd2luZzsKK+a9vyA+IHN0aWxsXC13YXRlcjsKK+a9viA+IGNsZWFyXC13YXRlcjsKK+a9oCA+IHRvXC1ibG93XC1vdXQ7Civmu7cgPiB0aGlja1wtZ3Jhdnk7CivmuZwgPiB0cmFuc3BhcmVudDsKK+a4nyA+IG5vdFwtZmxvd2luZzsKK+a3kiA+IGJpdHRlclwtY29sZDsKK+a2oCA+IHN0aWxsXC13YXRlcjsKK+a1oSA+IGJ1cnN0XC1mb3J0aDsKK+aznSA+IGdvXC11cHN0cmVhbTsKK+aysCA+IHRvXC1sZXRcLWRyb3A7CivmrrAgPiBhblwtYWJvcnRpb247CivmrK4gPiB0b1wtaGljY291Z2g7Civmq7ggPiB0eXBlXC1vZlwtZWxtOwor5quqID4gdHlwZVwtb2ZcLW9hazsKK+apoiA+IG92YWxcLXNoYXBlZDsKK+ansiA+IHR5cGVcLW9mXC1vYWs7Civmp6IgPiBhXC1oYXJkXC13b29kOwor5qWVID4gb3ZhbFwtc2hhcGVkOwor5qOvID4ganVqdWJlXC10cmVlOwor5qKYID4gYmFtYm9vXC10dWJlOwor5qKWID4gYVwtcGFsbVwtdHJlZTsKK+aihCA+IGFcLXNvZnRcLXdvb2Q7CivmoJ4gPiBwdWJsaWNhdGlvbjsKK+aggyA+IHR5cGVcLW9mXC1vYWs7CivmnqcgPiBiYW1ib29cLXR1YmU7CivmnaQgPiB0eXBlXC1vZlwtb2FrOwor5pqIID4gaGFsb1wtaW5cLXNreTsKK+aYnCA+IHRvXC1vcGVuXC1vdXQ7CivmmIkgPiBicmlnaHRcLWRhd247Civml70gPiBtb3JuaW5nXC1zdW47Civml4kgPiB0b1wtc3RhdGVcLXRvOwor5pGhID4gdG9cLWlycmlnYXRlOwor5pGOID4gdG9cLXN0cmFuZ2xlOwor5oyTID4gdG9cLW9wZW5cLW91dDsKK+aIqSA+IGV4dGVybWluYXRlOwor5oWJID4gdG9cLWJyaW5nXC11cDsKK+aElCA+IGNvbWZvcnRhYmxlOwor5b+yID4gZXh0cmF2YWdhbnQ7CivlvrsgPiBhXC13aWRlXC1yb29tOwor5b6RID4gbmFycm93XC1wYXRoOwor5bywID4gZW5kc1wtb2ZcLWJvdzsKK+W5jiA+IGNvdmVyXC1jbG90aDsKK+W4gCA+IHRvXC1nb1wtcm91bmQ7CivltKogPiByb2NreVwtcGVha3M7CivltJIgPiByb2NreVwtcGVha3M7CivlsbAgPiBkaXNvYmVkaWVudDsKK+WxnSA+IHN0cmF3XC1zaG9lczsKK+WwtyA+IGVtYmFycmFzc2VkOwor5bC2ID4gZW1iYXJyYXNzZWQ7CivlsJwgPiBhXC1jaGlsZFwtdG95Owor5bCDID4gdG9cLXN0YXRlXC10bzsKK+WslCA+IGJhYnlcLXJhYmJpdDsKK+WqryA+IGZhbWlseVwtbmFtZTsKK+WlkyA+IGV4dHJhdmFnYW50Owor5aWQID4gYmVcLW51bWVyb3VzOwor5aG/ID4gc21hbGxcLW1vdW5kOwor5aCKID4gd2hpdGVcLWVhcnRoOwor5aCIID4gZWFydGhlblwtanVnOwor5Z6eID4gc21hbGxcLW1vdW5kOwor5Z6dID4gZGlsYXBpZGF0ZWQ7CivlnpQgPiB0b1wtcmVzdHJhaW47CivlnbUgPiBlYXJ0aGVud2FyZTsKK+WXsSA+IGV4Y2xhbWF0aW9uOwor5ZaOID4gYVwtd3J5XC1tb3V0aDsKK+WUuSA+IHRvXC1zbWlsZVwtYXQ7CivlkoUgPiB0b1wtc3BpdFwtb3V0Owor5ZC2ID4gcmFpc2VcLXZvaWNlOwor5Y+7ID4gcGxhY2VcLW5hbWVzOwor5Y6+ID4gbGlnaHRseVwtdGFwOwor5Y6gID4gbWluZ2xlXC13aXRoOwor5YyvID4gYVwtY29uY291cnNlOwor5Yu9ID4gdG9cLWluY3ViYXRlOwor5YugID4gam9pblwtZm9yY2VzOwor5Yq8ID4gYmVcLWRpc2NyZWV0Owor5Yq1ID4gY2VydGlmaWNhdGU7CivliaYgPiB0b1wtY2FzdHJhdGU7CivliIsgPiBwdWJsaWNhdGlvbjsKK+WHqSA+IHdpbnRyeVwtd2luZDsKK+WGqiA+IGNvdmVyXC1jbG90aDsKK+WFpiA+IGRlc3RydWN0aW9uOwor5YSBID4gb3V0c3RhbmRpbmc7Civlgo8gPiB0b1wtd2FyZFwtb2ZmOwor5YGiID4gdG9cLXN0YXJlXC1hdDsKK+S/myA+IG1ha2VcLWVmZm9ydDsKK+S9uSA+IGRlcGVuZFwtdXBvbjsKK+S9oSA+IG1ha2VcLWVmZm9ydDsKK+S2qiA+IHNoYXJwXC10ZWV0aDsKK+S1tCA+IGJsYWNrXC1jb2xvcjsKK+S1syA+IGxpZ2h0XC1ibGFjazsKK+S1sCA+IGJsYWNrXC1jb2xvcjsKK+S1qSA+IGRhcmtcLXllbGxvdzsKK+S1oiA+IGxpZ2h0XC1ibGFjazsKK+S1jiA+IGRhcmtcLXllbGxvdzsKK+SyuyA+IHRoZVwtc3dhbGxvdzsKK+SxvSA+IHRoZVwtcG9tZnJldDsKK+SxuiA+IGFcLW1hbGVcLWNyYWI7CivksbYgPiBhXC1tYWxlXC1jcmFiOwor5LGSID4gc2FsdGVkXC1maXNoOwor5K+jID4gdGhlXC1rbmVlY2FwOwor5K+YID4gdGhlXC1rbmVlY2FwOwor5K6YID4geW91bmdcLWhvcnNlOwor5KuzID4gaHVtYW5cLXNrdWxsOwor5KuwID4gc3BhcnNlXC1oYWlyOwor5KutID4gYmFsZFwtaGVhZGVkOwor5KucID4gc3Vua2VuXC1leWVzOwor5KuEID4gYmV0dGVyXC10aGFuOwor5Kq0ID4gdGhlXC1vY2NpcHV0Owor5KqEID4gZ3JlYXRcLWJsYXplOwor5Km7ID4gdG9cLWJlXC1jaGllZjsKK+SpnCA+IGRlc2NlbmRhbnRzOwor5KixID4gc3BpbHRcLXdhdGVyOwor5Ke2ID4gdG9cLWNhcmVcLWZvcjsKK+SnqCA+IHByZWNpcGl0b3VzOwor5KeeID4gdG9cLWluY3JlYXNlOwor5KeTID4gYVwtYmlnXC1tb3VuZDsKK+SniiA+IGFcLWJpZ1wtbW91bmQ7CivkprcgPiB0b1wtc3RydWdnbGU7CivkprYgPiB0b1wtc3RydWdnbGU7Civkpp8gPiB0b1wtc3RydWdnbGU7CivkppsgPiB0b1wtc3RydWdnbGU7CivkppggPiBhXC10aHJlc2hvbGQ7CivkpYAgPiB0b1wtcHVsbFwtb3V0Owor5KStID4gdG9cLW9ybmFtZW50Owor5KSFID4gc291dGhlcndvb2Q7CivkookgPiBhZ3JpY3VsdHVyZTsKK+SgnSA+IHRvXC1zdGFuZFwtdXA7CivkoI0gPiBhdFwtdGhlXC1mZWV0Owor5J+1ID4gdG9cLXRyZWFkXC1vbjsKK+SfryA+IHRvXC10cmVhZFwtb247Civkn4UgPiB0b1wtZ29cLWFoZWFkOwor5J+BID4gYVwtZm9vdFwtcmFjZTsKK+SevSA+IHRvXC1saWVcLWZsYXQ7CivknqggPiBoYWxmXC1hXC1wYWNlOwor5J6mID4gdG9cLWxpZVwtZmxhdDsKK+SeiiA+IHRvXC1pbmNyZWFzZTsKK+SehCA+IHRvXC1kaXNwZXJzZTsKK+SdjSA+IGFcLXdpbGRcLWJvYXI7CivknYAgPiBnYXJkZW5cLXBlYXM7CivknLAgPiBkZWVwXC12YWxsZXk7CivknK4gPiBkZWVwXC12YWxsZXk7CivknJcgPiBhbmdyeVwtd29yZHM7CivknI8gPiB0b1wtd2l0aGRyYXc7CivknIYgPiBoYXN0eVwtd29yZHM7Civkm5ggPiB0b1wtdGhpbmtcLW9mOwor5Jq+ID4gdG9cLXRoaW5rXC1vZjsKK+SasyA+IGRvXC1ub3RcLWtub3c7CivkmrIgPiB0b1wtbGF1Z2hcLWF0Owor5Jm+ID4gdG9cLXdhaXRcLWZvcjsKK+SZsSA+IGFcLWxvbmdcLWNvYXQ7CivkmbAgPiBuZXdcLWZlYXRoZXI7CivkmYIgPiBzaG9ydFwtcGFudHM7CivkmLQgPiBzaG9ydFwtcGFudHM7Civkl5YgPiB0aGVcLXJhaW5ib3c7CivklbggPiB3aGVhdFwtc3RyYXc7CivklaMgPiB3YXRlclwtcGxhbnQ7CivklYwgPiB5b3VuZ1wtZ3JhaW47CivklL8gPiBsdXNoXC1ncm93dGg7Civkk64gPiBsdXNoXC1ncm93dGg7Civkk48gPiBmbG91cmlzaGluZzsKK+SSiyA+IGFpclwtY3VycmVudDsKK+SQmiA+IGdvb2RcLWdyYWNlczsKK+SPtiA+IHRoZVwtc3RvbWFjaDsKK+SPlCA+IHRvXC1lYXRcLW1lYXQ7Civkj5MgPiB0aGVcLXN0b21hY2g7CivkjaggPiB0b1wtY2FzdHJhdGU7CivkjLogPiBmbG91cmlzaGluZzsKK+SMqiA+IHRvXC1jb250aW51ZTsKK+SMpiA+IGdyZWVuXC1jb2xvcjsKK+SKrSA+IHRvXC1vdmVydHVybjsKK+SKqyA+IGNvYXJzZVwtcmljZTsKK+SKoiA+IHRoaWNrXC1mbHVpZDsKK+SKkyA+IHRvXC1wYXN0ZVwtdXA7CivkiZ0gPiBiYW1ib29cLXdhcmU7CivkiYogPiBiYW1ib29cLXdhcmU7CivkiLggPiBhXC1iaWdcLWNoZXN0Owor5IiAID4gYmFtYm9vXC13YXJlOwor5IeVID4gdG9cLXdhaXRcLWZvcjsKK+SHkyA+IHRvXC13YWl0XC1mb3I7Civkh4MgPiB0b1wtd2FpdFwtZm9yOwor5IazID4gZmFyXC1kaXN0YW50Owor5IaYID4gYWN1cHVuY3R1cmU7CivkhpYgPiBhXC1iaWdcLWhvdXNlOwor5IW7ID4gbWVhc3VyZW1lbnQ7CivkhYQgPiBsb25nXC1ncmFpbnM7CivkhL0gPiBjb21tb25cLXJpY2U7CivkhIQgPiBhY2hpZXZlbWVudDsKK+SDrSA+IGFcLXN0b25lXC1ib3g7CivkgrEgPiB0b1wtd2Vhclwtb3V0Owor5IKkID4gd2hpdGVcLXN0b25lOwor5IKhID4gYVwtd2hldHN0b25lOwor5IKTID4gcmVndWxhdGlvbnM7CivkgbsgPiBwcmV0dHlcLWV5ZXM7CivkgbcgPiBicmlnaHRcLWV5ZXM7CivkgbEgPiBob2xsb3dcLWV5ZWQ7CivkgZEgPiBwcmV0dHlcLWV5ZXM7CivkgKYgPiB0b1wtc3RhcmVcLWF0Owor5ICCID4gYVwtYmlnXC1iYXNpbjsKK+O/oyA+IHdoaXRlXC1jb2xvcjsKK+O/mCA+IHRvXC1nZXRcLXNpY2s7CivjvrogPiBleWVcLWRpc2Vhc2U7Civjvp0gPiB0b1wtbGVha1wtb3V0Owor476XID4gZXllXC1kaXNlYXNlOwor476IID4gaHVuY2hiYWNrZWQ7CivjvoMgPiBodW1wXC1iYWNrZWQ7CivjvaogPiBwYWRkeVwtZmllbGQ7CivjvYYgPiBlYXJ0aGVud2FyZTsKK+O9gCA+IGVhcnRoZW53YXJlOwor47y7ID4gZWFydGhlbndhcmU7CivjvLggPiBlYXJ0aGVud2FyZTsKK+O8tiA+IGVhcnRoZW53YXJlOwor47yzID4gZWFydGhlbndhcmU7CivjvK8gPiBlYXJ0aGVud2FyZTsKK+O8rCA+IGVhcnRoZW53YXJlOwor47ymID4gZWFydGhlbndhcmU7CivjvKQgPiBlYXJ0aGVud2FyZTsKK+O8mCA+IG9mXC1tb3VudGFpbjsKK+O8kyA+IG1lbG9uXC1zZWVkczsKK+O7kyA+IGFcLWZpbmVcLWphZGU7CivjuaAgPiBhXC1zbWFsbFwtYmlnOwor47igID4gdGhpY2tcLXN0aWNrOwor47aRID4gb3ZlcmZsb3dpbmc7Civjta4gPiBjbGVhclwtd2F0ZXI7CivjtaQgPiB0b1wtb3ZlcmZsb3c7CivjtZUgPiB0b1wtcGVybWVhdGU7CivjtJggPiB0b1wtb296ZVwtb3V0Owor47KwID4gYVwtaGFpcnlcLWRvZzsKK+OykiA+IHRvXC1pbmN1YmF0ZTsKK+OxqSA+IGFuXC1hYm9ydGlvbjsKK+OwsiA+IHRvXC1ibG93XC1vZmY7CivjsK4gPiB0b1wtbGF1Z2hcLWF0Owor47CeID4gdG9cLWxhdWdoXC1hdDsKK+OviCA+IHNtYWxsXC10cmVlczsKK+OunyA+IGFcLXdoZXRzdG9uZTsKK+OunSA+IGFuZ2xlXC1zdGVlbDsKK+OttCA+IHRoZVwtb3NjaW5lczsKK+OtjiA+IGFcLXRhbGxcLXRyZWU7CivjrLIgPiB0b1wtaW5jcmVhc2U7CivjrKkgPiBhXC10aW55XC1zdGFyOwor46u1ID4gd2hpdGVcLWNvbG9yOwor46uYID4gZGlzYXBwZWFyZWQ7CivjqrogPiB0b1wtYmFsZVwtb3V0Owor46mIID4gdG9cLXJlc3RyYWluOwor46mFID4gdG9cLWRyYXdcLW91dDsKK+OouiA+IHRvXC1vcm5hbWVudDsKK+OotSA+IHRvXC1jdXRcLWF3YXk7CivjqLQgPiB0b1wtdHVybm92ZXI7CivvqKogPiBjb29rZWRcLXJpY2U7CivjqJUgPiB0b1wtc2hvdWxkZXI7Civvp7IgPiBmaXNoXC1zY2FsZXM7Civjp5QgPiB0b1wtZGlzdHVyYmU7Civvp4kgPiB3aWxsb3dcLXRyZWU7Civvp4UgPiBoYWxvXC1pblwtc2t5Owor46afID4gaW50ZWxsaWdlbnQ7CivvppggPiBhXC1oYW5kXC1jYXJ0Owor46aSID4gdG9cLWRlY2VpdmVkOwor76WoID4gdG9cLXNlZXBcLW91dDsKK++lpSA+IGNvbnZlbmllbmNlOwor46ShID4gdG9cLXN1cnByaXNlOwor46SbID4gdG9cLXJlbWVtYmVyOwor46SVID4gbWVsYW5jaG9sb3k7CivjpIEgPiB0b1wtZGlzZ3JhY2U7Civjo74gPiBkb1wtbm90XC1jYXJlOwor46O1ID4gdG9cLXJ1blwtYXdheTsKK+OjpSA+IHRvXC1zdG9yZVwtdXA7CivjorMgPiBibGFja1wtY29sb3I7CivjopMgPiB0b1wtc2VwYXJhdGU7Civjob4gPiBhXC10aHJlc2hvbGQ7CivjoJYgPiBwcmVjaXBpdG91czsKK+OemCA+IGFcLXNtYWxsXC1waWc7CivjnbQgPiBhXC1yb3VuZFwtb2ZmOwor452UID4gZGVlcFwtYm90dG9tOwor45yjID4gYVwtbGFzdFwtbmFtZTsKK+OcjiA+IHNsYXZlXC1naXJsczsKK+ObkSA+IHRocmVlXC13b21lbjsKK+OaviA+IHRvXC1oYXZlXC1mdW47CivjmacgPiBlYXJ0aGVud2FyZTsKK+OYtiA+IGFcLWhlblwtcm9vc3Q7CivjmKUgPiB0b1wtaW52ZWlnbGU7CivjmIYgPiB0b1wtbGF1Z2hcLWF0Owor45eXID4gdG9cLXNlcGFyYXRlOwor45a9ID4gdG9cLWNhbGxcLW91dDsKK+OWoyA+IHRvXC1zcGl0XC1vdXQ7Civjlp4gPiBhXC13cnlcLW1vdXRoOwor45aWID4gdG9cLXNwaXRcLW91dDsKK+OWlSA+IHRvXC1zcGl0XC1vdXQ7CivjlpEgPiB0b1wtc2hvdXRcLWF0Owor45S8ID4gdG9cLWZpdFwtaW50bzsKK+OUtiA+IGFcLXNtYWxsXC1jdXA7CivjlI8gPiB0b1wtY3V0XC1vcGVuOwor45OsID4gdG9cLWN1dFwtb3BlbjsKK+OTqSA+IGhvcm5lZFwtaGFpcjsKK+OSqCA+IGFuXC1pbW1vcnRhbDsKK+OSpSA+IGFuXC1pbW1vcnRhbDsKK+ORvSA+IHRvXC13YXJkXC1vZmY7CivnmoQgPiBwb3NzZXNzaXZlOwor6L68ID4gY3Jvd2RcLWludG87CivovrsgPiBjcm9zc3JvYWRzOwor6IO9ID4gdG9cLWJlXC1hYmxlOwor6YO9ID4gbWV0cm9wb2xpczsKK+aWhyA+IGxpdGVyYXR1cmU7CivovY0gPiB3YWdvblwtcnV0czsKK+i8qSA+IGdlbmVyYXRpb247CivnnKkgPiB0b1wtY29uZnVzZTsKK+ecoCA+IGNsb3NlXC1leWVzOwor6LydID4gYnJpZ2h0bmVzczsKK+W8kCA+IG51bWJlclwtdHdvOwor6ICFID4gdGhhdFwtd2hpY2g7CivkuJogPiBwcm9mZXNzaW9uOwor5bqcID4gcHJlZmVjdHVyZTsKK+aUvyA+IGdvdmVybm1lbnQ7CivkuJYgPiBnZW5lcmF0aW9uOwor5LqnID4gZ2l2ZVwtYmlydGg7CivlnLogPiBvcGVuXC1zcGFjZTsKK+avlCA+IHRvXC1jb21wYXJlOwor55ayID4gZmVlbFwtdGlyZWQ7CivnlLsgPiBhXC1wYWludGluZzsKK+eUoyA+IGdpdmVcLWJpcnRoOwor5pybID4gdG9cLWxvb2tcLWF0Owor6LO6ID4gbWFrZVwtbW9uZXk7Civlha0gPiBudW1iZXJcLXNpeDsKK+WxoSA+IGZyZXF1ZW50bHk7CivlsKQgPiBlc3BlY2lhbGx5Owor5bCIID4gbW9ub3BvbGl6ZTsKK+WfuiA+IGZvdW5kYXRpb247Civlj4wgPiBzZXRcLW9mXC10d287CivlrasgPiBncmFuZGNoaWxkOwor5LiTID4gbW9ub3BvbGl6ZTsKK+WsqiA+IGNvdXJ0XC1sYWR5Owor56a7ID4gcmFyZVwtYmVhc3Q7CivlqpIgPiBnb1wtYmV0d2VlbjsKK+iqjCA+IHdyaXRlXC1kb3duOwor6KqHID4gZXhhZ2dlcmF0ZTsKK+WTjSA+IG1ha2VcLXNvdW5kOwor5am/ID4gc29uXC1pblwtbGF3Owor54itID4gdG9cLWRpc3B1dGU7CivlmaggPiByZWNlcHRhY2xlOwor54efID4gZW5jYW1wbWVudDsKK+WmmSA+IG15c3RlcmlvdXM7Civog6EgPiByZWNrbGVzc2x5Owor5aaTID4gcHJvc3RpdHV0ZTsKK+ilpiA+IHNob3J0XC1jb2F0Owor5aWnID4gbXlzdGVyaW91czsKK+WlpSA+IG15c3RlcmlvdXM7Civlo7sgPiBzb25cLWluXC1sYXc7Civlo7EgPiBudW1iZXJcLW9uZTsKK+WtmSA+IGdyYW5kY2hpbGQ7CivokKUgPiBlbmNhbXBtZW50Owor5aC0ID4gb3Blblwtc3BhY2U7Civpg60gPiBvdXRlclwtcGFydDsKK+iuqCA+IHRvXC1kaXNjdXNzOwor5ruFID4gZXh0aW5ndWlzaDsKK+iZnCA+IHRvXC1jYXB0dXJlOwor56evID4gYWNjdW11bGF0ZTsKK+iPnCA+IHZlZ2V0YWJsZXM7Civll6MgPiB0b1wtY29ubmVjdDsKK+WXnCA+IGJlXC1mb25kXC1vZjsKK+S7iyA+IGZvcmVydW5uZXI7CivntKIgPiBsYXJnZVwtcm9wZTsKK+S4gSA+IG1hbGVcLWFkdWx0Owor6YGNID4gZXZlcnl3aGVyZTsKK+i+iCA+IGdlbmVyYXRpb247CivokpQgPiB0cmFuc3BsYW50Owor5oeCID4gdW5kZXJzdGFuZDsKK+mHiiA+IGludGVycHJldGU7CivnurUgPiBpbmR1bGdlXC1pbjsKK+eBrSA+IGV4dGluZ3Vpc2g7CivmrbQgPiB0YWtlXC1wbGFjZTsKK+S7gSA+IGh1bWFuZW5lc3M7CivmqoAgPiBzYW5kYWx3b29kOwor5YmKID4gc2NyYXBlXC1vZmY7CivliJEgPiBwdW5pc2htZW50Owor5bKCID4gaG93XD9cLXdoYXRcPzsKK+mahiA+IHByb3NwZXJvdXM7CivovokgPiBicmlnaHRuZXNzOwor5YiDID4gZWRnZWRcLXRvb2w7CivmnpAgPiBzcGxpdFwtd29vZDsKK+iFuCA+IGludGVzdGluZXM7Civmpa0gPiBwcm9mZXNzaW9uOwor5qWTID4gbWFwbGVcLXRyZWU7CivppIUgPiByaWNlXC1jYWtlczsKK+aeqyA+IG1hcGxlXC10cmVlOwor5YKNID4gYnlcLXNpZGVcLW9mOwor6IC9ID4gaW5kdWxnZVwtaW47CivpoLsgPiBmcmVxdWVudGx5Owor5qCTID4gd29vZGVuXC1wZWc7Civpn78gPiBtYWtlXC1zb3VuZDsKK+WHryA+IHRyaXVtcGhhbnQ7Civmga0gPiByZXNwZWN0ZnVsOwor56W4ID4gbWlzZm9ydHVuZTsKK+mikSA+IGZyZXF1ZW50bHk7CivnpoUgPiBtZWRpdGF0aW9uOwor5p+vID4gYXhlXC1oYW5kbGU7CivmjZAgPiBjb250cmlidXRlOwor6LiqID4gZm9vdHByaW50czsKK+WxgSA+IGJyZWFrXC13aW5kOwor6LCKID4gZnJpZW5kc2hpcDsKK+WCqCA+IHNhdmVcLW1vbmV5Owor6ZuBID4gd2lsZFwtZ29vc2U7CivmkYogPiBzcHJlYWRcLW91dDsKK+WQqCA+IG1ldHJpY1wtdG9uOwor5LmNID4gZmlyc3RcLXRpbWU7CivpmYAgPiBzdGVlcFwtYmFuazsKK+e4sSA+IGluZHVsZ2VcLWluOwor57imID4gaW5kdWxnZVwtaW47CivogqAgPiBpbnRlc3RpbmVzOwor6LWaID4gbWFrZVwtbW9uZXk7Civntr8gPiBjb3R0b25cLXdhZDsKK+e2sSA+IGhlYXZ5XC1yb3BlOwor57u1ID4gY290dG9uXC13YWQ7CivmipEgPiBwcmVzc1wtZG93bjsKK+mlvCA+IHJpY2VcLWNha2VzOwor5b2sID4gY3VsdGl2YXRlZDsKK+aSriA+IGxpdHRsZVwtYml0Owor57KlID4gcmljZVwtZ3J1ZWw7Civom64gPiBiYXJiYXJpYW5zOwor5664ID4gY2hvcHN0aWNrczsKK+ettSA+IGJhbWJvb1wtbWF0Owor6ImHID4gc21hbGxcLWJvYXQ7CivmjYwgPiBicmVha1wtb3BlbjsKK+esoCA+IGJhbWJvb1wtaGF0Owor5bqeID4gZGlzb3JkZXJseTsKK+mLqiA+IHNwcmVhZFwtb3V0Owor56udID4gdG9cLWNvbWJpbmU7CivnqY0gPiBhY2N1bXVsYXRlOwor5omJID4gZG9vclwtcGFuZWw7CivnurIgPiBoZWF2eVwtcm9wZTsKK+mHiyA+IGludGVycHJldGU7Civph4ggPiBpbnRlcnByZXRlOwor5Z2dID4gZW1iYW5rbWVudDsKK+aGpyA+IGlycmVzb2x1dGU7CivnlKkgPiB0aHJvd1wtYXdheTsKK+ellSA+IG15c3RlcmlvdXM7CivphYwgPiBzZXJ2ZVwtd2luZTsKK+ejkCA+IGxhcmdlXC1yb2NrOwor6L6FID4gY2hlZWtcLWJvbmU7CivmjaEgPiB0b1wtcGlja1wtdXA7CivnrbcgPiBjaG9wc3RpY2tzOwor6LmIID4gc3RhbXBcLWZlZXQ7CivmmZIgPiBkcnlcLWluXC1zdW47CivmrbwgPiBhbm5paGlsYXRlOwor5rapID4gYXN0cmluZ2VudDsKK+mcjiA+IGxpZ2h0XC1yYWluOwor5pOFID4gbW9ub3BvbGl6ZTsKK+iUrCA+IHZlZ2V0YWJsZXM7Civnu7ggPiBzaWxrXC1jbG90aDsKK+ecryA+IGJlXC1ibGluZGVkOwor5a+FID4gdG9cLXJlc3BlY3Q7CivomY8gPiB0b1wtY2FwdHVyZTsKK+ectiA+IGV5ZVwtc29ja2V0Owor56KfID4gc21hbGxcLWRpc2g7CivolbQgPiB0b1wtY29sbGVjdDsKK+i/rSA+IHJlcGVhdGVkbHk7Civml60gPiByaXNpbmdcLXN1bjsKK+aCjSA+IGNvdXJhZ2VvdXM7CivmnqIgPiBkb29yXC1oaW5nZTsKK+i3iyA+IGdvXC1ieVwtZm9vdDsKK+WcqiA+IFwocGhvbmV0aWNcKTsKK+aQlCA+IHRvXC1zY3JhdGNoOwor5ZqOID4gY3J5XC1sb3VkbHk7CivovpkgPiB3YWdvblwtcnV0czsKK+axmyA+IGhpZ2hcLXdhdGVyOwor6ISvID4gZHJpZWRcLW1lYXQ7Civll5IgPiB0b1wtZGVzcGFpcjsKK+WinyA+IGhpZ2hcLW1vdW5kOwor6aaLID4gZ2x1dHRvbm91czsKK+WovCA+IHByb3N0aXR1dGU7Civoua0gPiB0b1wtc2h1ZmZsZTsKK+a+iCA+IHRob3JvdWdobHk7CivnvK0gPiB3aW5kXC1yb3VuZDsKK+WWsyA+IHdoaXNwZXJpbmc7CivlvKcgPiB3b29kZW5cLWJvdzsKK+i3uiA+IHN0YW1wXC1mZWV0Owor5oOGID4gZGlzdHJlc3NlZDsKK+aStSA+IGRyaXZlXC1hd2F5Owor5q6DID4gbWlzZm9ydHVuZTsKK+aBqiA+IHJlc3BlY3RmdWw7CivovbYgPiBydXNoXC1mb3J0aDsKK+iFhiA+IHByb3NwZXJvdXM7Civnqr8gPiBtaW5lXC1zaGFmdDsKK+aotSA+IHdvb2RjdXR0ZXI7CivnioAgPiByaGlub2Nlcm9zOwor57uaID4gdmFyaWVnYXRlZDsKK+iXlSA+IGxvdHVzXC1yb290Owor5pGeID4gdG9cLXBpbGVcLXVwOwor5rukID4gc3RyYWluXC1vdXQ7CivnvIggPiBpbmRpc3RpbmN0Owor6IKqID4gYW5pbWFsXC1mYXQ7CivnlIQgPiB0b1wtZXhhbWluZTsKK+mTmyA+IGZyeWluZ1wtcGFuOwor5auhID4gbGVnYWxcLXdpZmU7CivnmIEgPiBmZWVsXC10aXJlZDsKK+ejtyA+IHBob3NwaG9ydXM7Civnv6EgPiBraW5nZmlzaGVyOwor556RID4gY2xvc2VcLWV5ZXM7CivpnK0gPiBjbG91ZHlcLXNreTsKK+iIqyA+IGZhbmN5XC1ib2F0Owor57qoID4gd2hpdGVcLXNpbGs7CivmprcgPiBmb290YnJpZGdlOwor57OcID4gcmljZVwtZ3J1ZWw7Civlo7kgPiBudW1iZXJcLW9uZTsKK+iUlyA+IHN1Z2FyXC1jYW5lOwor5b2XID4gYnJvb21zdGljazsKK+WWnyA+IGhlYXZlXC1zaWdoOwor5ZaRID4gdG9cLWJlXC1kdW1iOwor6bG/ID4gY3V0dGxlZmlzaDsKK+WAnCA+IHJhaXNlXC1oaWdoOwor5L6pID4gZ29cLWJldHdlZW47Civmu4IgPiB0b3JyZW50aWFsOwor6LSwID4gbnVtYmVyXC10d287Civlv7sgPiBkZWxpZ2h0ZnVsOwor54enID4gZmxpbnRzdG9uZTsKK+eolCA+IHJpcGVcLWdyYWluOwor5auUID4gY291cnRcLWxhZHk7CivpookgPiBmbHlcLXVwd2FyZDsKK+iIuCA+IGxhcmdlXC1ib2F0Owor55yZID4gdG9cLWdhemVcLWF0Owor55iAID4gYVwtaGVtYXRvbWE7CivlpK8gPiBoZWF2eVwtbG9hZDsKK+mllSA+IGdsdXR0b25vdXM7CivpsqAgPiBmaXNoXC1ib25lczsKK+iMjyA+IHRhbGxcLWdyYXNzOwor6IyvID4gY2hpbmFcLXJvb3Q7CivpsqcgPiBnaWFudFwtZmlzaDsKK+mApiA+IG1lYW5kZXJpbmc7CivpqpwgPiB3aWxkXC1ob3JzZTsKK+asuSA+IGZpZXJjZVwtZG9nOwor57ybID4gZGVjb3JhdGl2ZTsKK+iLlSA+IHJ1c2hcLXBsYW50Owor6aG4ID4gbGFyZ2VcLWZhY2U7CivlsJUgPiBcKHBob25ldGljXCk7CivnvKYgPiBwbGFpblwtc2lsazsKK+W4mSA+IGJvb2tcLWNvdmVyOwor6bODID4gZmlzaFwtZ2lsbHM7CivphrQgPiBzd2VldFwtd2luZTsKK+i+iiA+IHR1cm5cLXJvdW5kOwor5bKYID4gc3RlZXBcLWhpbGw7CivlgKwgPiBub3RpY2VhYmxlOwor6bKeID4gZHJpZWRcLWZpc2g7CivnsJ8gPiBiYW1ib29cLW1hdDsKK+eouSA+IGFjY3VtdWxhdGU7CivnvIEgPiBibGFja1wtc2lsazsKK+eupyA+IHJhdHRhblwtYm94Owor5aKBID4gdG9cLXBsYXN0ZXI7CivnvbQgPiBicm93blwtYmVhcjsKK+eIsCA+IGxlYWRcLW9uXC10bzsKK+adsiA+IGJyaWdodFwtc3VuOwor55mUID4gaHlzdGVyaWNhbDsKK+aeiyA+IHNhbmRhbHdvb2Q7CivojpwgPiBhdmVuYVwtbnVkYTsKK+WfmSA+IGluc3RydW1lbnQ7Civnjb4gPiB0aGVcLWJhZGdlcjsKK+iOsyA+IHRyYW5zcGxhbnQ7Civpg6sgPiBwbGFjZVwtbmFtZTsKK+ibjyA+IHJhem9yXC1jbGFtOwor5qmlID4gd29vZGVuXC1wZWc7CivluJEgPiBhXC10cmVhc3VyeTsKK+aPoCA+IHRvXC1wdWxsXC11cDsKK+i2kSA+IGNhbicndFwtbW92ZTsKK+mYjSA+IGdhdGVrZWVwZXI7CivmjoogPiB0b1wtZXh0cmFjdDsKK+mVnSA+IGR5c3Byb3NpdW07CivnoJcgPiBnaWFudFwtY2xhbTsKK+WrqyA+IHVnbHlcLXdvbWFuOwor6JSMID4gdmVnZXRhYmxlczsKK+i3lyA+IHRoZVwtaW5zdGVwOwor5rW8ID4gdG9cLXJlcXVlc3Q7Civll4wgPiB0aGVcLXRocm9hdDsKK+WUkSA+IFwocGhvbmV0aWNcKTsKK+axhiA+IHRvXC1wYXJib2lsOwor5YitID4gY3V0XC10aHJvYXQ7Civpq4IgPiB0aGVcLXBlbHZpczsKK+iJiyA+IHNtYWxsXC1ib2F0Owor6ZK8ID4gbW9seWJkZW51bTsKK+aGnSA+IHRvXC1kaXNsaWtlOwor54KFID4gYnJpbGxpYW5jZTsKK+masyA+IHRvXC1kZXN0cm95Owor6IybID4gcmFudW5jdWx1czsKK+ezhyA+IGRyaWVkXC1yaWNlOwor6ZKGID4gZ2Fkb2xpbml1bTsKK+a+jCA+IHRvXC1leGhhdXN0Owor5bqAID4gdG9cLXByZXBhcmU7CivnirQgPiBhXC13aWxkXC1kb2c7Civln48gPiBhXC1ib3VuZGFyeTsKK+WHtSA+IHJlY2VwdGFjbGU7CivosK4gPiB0b1wtc2xhbmRlcjsKK+m+oiA+IGluXC1oYXJtb255Owor6b6QID4gZGlzb3JkZXJseTsKK+m+jiA+IGRpc29yZGVybHk7CivpvKcgPiB0aGVcLW1hcm1vdDsKK+m8hCA+IHRoZVwtc3BpZGVyOwor6bu5ID4gZW1icm9pZGVyeTsKK+m7siA+IGdyZXlcLWJsYWNrOwor6buqID4gZ3JleVwtYmxhY2s7Civpu6QgPiBibHVlXC1ibGFjazsKK+m4uiA+IGhvcm5lZFwtb3dsOwor6bWSID4gbXluYWhcLWJpcmQ7CivptYIgPiBob3JuZWRcLW93bDsKK+m0tyA+IHdvb2RwZWNrZXI7CivptIggPiB3aWxkXC1nb29zZTsKK+mzsiA+IHR1cnRsZWRvdmU7Civps6sgPiB3aWxkXC1nb29zZTsKK+mysCA+IHNtYWxsXC1maXNoOwor6bGQID4gZHJpZWRcLWZpc2g7CivpsYcgPiBhbmdsZXJmaXNoOwor6bCTID4gZmlzaFwtZ2lsbHM7CivpsIIgPiBjdXR0bGVmaXNoOwor6a+rID4gc21hbGxcLWZpc2g7Civpr5cgPiBkcmllZFwtZmlzaDsKK+mvgSA+IGZpc2hcLWJvbmVzOwor6a+AID4gZ2lhbnRcLWZpc2g7Civprr8gPiBkcmllZFwtZmlzaDsKK+munyA+IGFuZ2xlcmZpc2g7Civprp0gPiBkcmllZFwtZmlzaDsKK+mugSA+IHRoZVwtYm9uaXRvOwor6a23ID4gY3V0dGxlZmlzaDsKK+mtmyA+IHRoZVwtbXVsbGV0Owor6ayoID4gYm9pc3Rlcm91czsKK+msnCA+IHRvXC1nb1wtYmFsZDsKK+mroyA+IHNpbWlsYXJcLXRvOwor6auBID4gdGhpZ2hcLWJvbmU7CivpqYEgPiB3aWxkXC1ob3JzZTsKK+molyA+IHRvXC1zd2luZGxlOwor6aiLID4gdGFsbFwtaG9yc2U7CivpqIkgPiBmaW5lXC1ob3JzZTsKK+mnsCA+IGdyZXlcLWhvcnNlOwor6aa5ID4gcG9zdFwtaG9yc2U7CivppZ4gPiBnbHV0dG9ub3VzOwor6aSgID4gcmljZVwtY2FrZXM7CivpoKEgPiBmbHlcLXVwd2FyZDsKK+mghyA+IGxhcmdlXC1mYWNlOwor6Z6hID4gbGVnXC13YXJtZXI7CivpnbAgPiBsZWdcLXdhcm1lcjsKK+mdnSA+IHRoZVwtaGVhdmVuOwor6Z2JID4gY2xvdWR5XC1za3k7CivpnYYgPiBjbG91ZHlcLXNreTsKK+mdhCA+IGNsb3VkeVwtc2t5Owor6ZuwID4gYXRtb3NwaGVyZTsKK+mbmSA+IHNldFwtb2ZcLXR3bzsKK+mariA+IHRpXC1yaXNlXC11cDsKK+mZuyA+IHNtYWxsXC1oaWxsOwor6ZmRID4gcGxhY2VcLW5hbWU7CivpmK8gPiBmb3VuZGF0aW9uOwor6ZefID4gcGVhY2VmdWxseTsKK+mWvSA+IGdhdGVrZWVwZXI7CivplqcgPiBib2lzdGVyb3VzOwor6ZWaID4gc21hbGxcLWNvaW47CivplKwgPiBsb25nXC1zcGVhcjsKK+mStyA+IHByb21ldGhpdW07CivpkLogPiBmcnlpbmdcLXBhbjsKK+mQtiA+IG1ldGFsXC1yaW5nOwor6ZCaID4gc29mdFwtc3RlZWw7CivpkJIgPiBsYXdyZW5jaXVtOwor6ZCAID4gYVwtY3VwYm9hcmQ7Civpj5EgPiBkeXNwcm9zaXVtOwor6Y6qID4gdG9cLWVuZ3JhdmU7CivpjpsgPiBsYXJnZVwtYmVsbDsKK+mNgCA+IHRlY2huZXRpdW07CivpjJ8gPiBsb25nXC1zcGVhcjsKK+mMniA+IGluc3RydW1lbnQ7CivpjI8gPiBzb2Z0XC1zdGVlbDsKK+mJrCA+IG1vbHliZGVudW07CivpiIogPiBjYWRvbGluaXVtOwor6YeTID4gZ2Fkb2xpbml1bTsKK+mGoSA+IHdpbmVcLXByZXNzOwor6YadID4gd2hpdGVcLXdpbmU7CivphYUgPiByYWlzZVwtZmVldDsKK+mDuSA+IHBsYWNlXC1uYW1lOwor6YKQID4gbWVhbmRlcmluZzsKK+mArCA+IHRvXC1zY2F0dGVyOwor6LylID4gdHVyblwtcm91bmQ7CivovJQgPiBjaGVla1wtYm9uZTsKK+i7vCA+IHJ1c2hcLWZvcnRoOwor6LqpID4gdGFrZVwtcXVpY2s7CivoupsgPiBleGFnZ2VyYXRlOwor6LqXID4gZXhhZ2dlcmF0ZTsKK+i5pCA+IGZvb3RwcmludHM7CivouKcgPiB1bmVhc2luZXNzOwor6LicID4gdG9cLXN0dW1ibGU7CivouJYgPiB0cmFtcGxlXC1vbjsKK+i3pSA+IHN0YW1wXC1mZWV0Owor6LeQID4gdG9cLXRyYW1wbGU7Civot4EgPiB0cmFtcGxlXC1vbjsKK+i2piA+IGNhbicndFwtbW92ZTsKK+iysyA+IG51bWJlclwtdHdvOwor6LKuID4gbnVtYmVyXC10d287CivosYggPiBob3dcP1wtd2hhdFw/Owor6LGAID4gdG9cLXF1YXJyZWw7Civora0gPiB0b1wtc2xhbmRlcjsKK+itmyA+IHRvXC1zbGFuZGVyOwor6K2WID4gdG9cLXNsYW5kZXI7CivorZIgPiBwcm9tdWxnYXRlOwor6KyqID4gdG9cLWNvbnN1bHQ7Civoq7QgPiBpblwtaGFybW9ueTsKK+irnyA+IHRvXC1leGFtaW5lOwor6Kq8ID4gZnJpZW5kc2hpcDsKK+iqqSA+IHRvXC1xdWFycmVsOwor6KiOID4gdG9cLWRpc2N1c3M7Civop4MgPiBwbGFjZVwtbmFtZTsKK+imuCA+IHN0ZWFsXC1sb29rOwor6Ka1ID4gc3RlYWxcLWxvb2s7CivopaEgPiBzaG9ydFwtY29hdDsKK+ijqiA+IHRoZVwtc2xlZXZlOwor6KKyID4gcGxhY2VcLW5hbWU7CivooqAgPiBib29rXC1jb3ZlcjsKK+iinyA+IGJvb2tcLWNvdmVyOwor6KC7ID4gYmFyYmFyaWFuczsKK+iftiA+IHJhem9yXC1jbGFtOwor6J+rID4gc2lsdmVyZmlzaDsKK+ifoyA+IGxvdXNlXC1lZ2dzOwor6J+BID4gYVwtbW9zcXVpdG87Civom5wgPiB3b29kXC1sb3VzZTsKK+iYoiA+IHRhbGxcLWdyYXNzOwor6JanID4gZHJpZWRcLWZvb2Q7CivolaEgPiBoZW1wXC1zZWVkczsKK+iTtyA+IG1vdGhlcndvcnQ7Civokr0gPiBhbnRocmFjZW5lOwor6JKmID4gdG9cLW1lYXN1cmU7CivokpYgPiBwbGFudFwtbmFtZTsKK+iRryA+IG9ycmlzXC1yb290Owor6I6aID4gYmFtYm9vXC1tYXQ7CivojbUgPiBwb2xlbW9uaXVtOwor6ImsID4gbGFyZ2VcLXNoaXA7CivoiZEgPiBzbWFsbFwtYm9hdDsKK+iItCA+IHNtYWxsXC1ib2F0Owor6IaTID4gaW50ZXN0aW5lczsKK+iEqiA+IGVyeXNpcGVsYXM7CivohKkgPiBkcmllZFwtbWVhdDsKK+iElyA+IGNvaW5jaWRpbmc7CivogrggPiBzcHJlYWRcLW91dDsKK+iCpiA+IGxhcmdlXC1oZWFkOwor6IGfID4gc29uXC1pblwtbGF3Owor57+AID4gZmx5XC11cHdhcmQ7CivnvoYgPiBicm93blwtYmVhcjsKK+e7iyA+IGxhcmdlXC1yb3BlOwor57maID4gd2luZFwtcm91bmQ7CivnuZAgPiBmaW5lXC1jbG90aDsKK+e4tSA+IHBsYWluXC1zaWxrOwor57ifID4gZGVjb3JhdGl2ZTsKK+e4hyA+IGRlY29yYXRpb247Civnt7IgPiBpbmRpc3RpbmN0Owor57ecID4gY290dG9uXC13YWQ7Civnt4cgPiBibGFja1wtc2lsazsKK+e2oiA+IHNpbGtcLWNsb3RoOwor57W6ID4gZmluZVwtbGluZW47CivntaIgPiB2YXJpZWdhdGVkOwor57WbID4gc2lsa1wtYnJhaWQ7CivntZYgPiBmaW5lXC1zaWxrczsKK+e1kyA+IG9ic3RydWN0ZWQ7CivntLwgPiBsYXJnZVwtcm9wZTsKK+e0iCA+IHdoaXRlXC1zaWxrOwor57K7ID4gcHJvdmlzaW9uczsKK+eypiA+IHBob3NwaG9ydXM7CivnsKUgPiBsYXJnZVwtcGlwZTsKK+evuSA+IHRvXC1jb2xsZWN0Owor56+yID4gYnJvb21zdGljazsKK+eviyA+IHJhdHRvblwtYm94Owor566gID4gaG9yc2VcLXdoaXA7CivnrpogPiBicmllZlwtbm90ZTsKK+etryA+IGNob3BzdGlja3M7Civnq7AgPiBjZW50aWxpdGVyOwor56uhID4gaGVjdG9saXRlcjsKK+erkyA+IG1pbGxpbGl0ZXI7CivnqrAgPiBicmlja1wta2lsbjsKK+eprSA+IHdpbGRcLWdyYWluOwor56iGID4gd2lsZFwtZ3JhaW47CivnpqogPiBtZWRpdGF0aW9uOwor56aaID4gcGxhY2VcLW5hbWU7Civnpo0gPiBtaXNmb3J0dW5lOwor56WFID4gY2FsYW1pdGllczsKK+ejkSA+IHN0b25lXC1taWxsOwor56GoID4gZ2lhbnRcLWNsYW07CivnoZkgPiBzdG9uZVwtbWlsbDsKK+ehgyA+IGFcLXJlZFwtbW9sZTsKK+efgSA+IHRvXC1sb29rXC1hdDsKK+ednyA+IGNsZWFyXC1leWVkOwor55yGID4gaW5kaXN0aW5jdDsKK+eWlSA+IGhlYWRcLXNvcmVzOwor55WTID4gcmljZVwtZmllbGQ7CivnlYEgPiB0b1wtZ2l2ZVwtdG87CivnlKIgPiBnaXZlXC1iaXJ0aDsKK+eOlCA+IGdyZWVuXC1qYWRlOwor546FID4gbXlzdGVyaW91czsKK+eMmCA+IGZpZXJjZVwtZG9nOwor54qbID4gYVwtYmxhY2tcLW94Owor54mPID4gcHJpdnlcLWhvbGU7CivniYsgPiBtZW1vcmFuZHVtOwor54irID4gcmFkaWNhbFwtODc7Civnh5AgPiBwaG9zcGhvcnVzOwor54aFID4gc21vb3RoXC1vdXQ7Civng5UgPiB0b1wtZGVzdHJveTsKK+eBuiA+IGNhbmRsZVwtZW5kOwor54GSID4gdG9cLXNwYXR0ZXI7Civmv74gPiBzdHJhaW5cLW91dDsKK+a/mSA+IHRvXC1yZXZvbHZlOwor5r+HID4gYXN0cmluZ2VudDsKK+a/hiA+IHJpdmVyXC1iYW5rOwor5r6BID4gYXN0cmluZ2VudDsKK+a+gCA+IGFzdHJpbmdlbnQ7Civmur4gPiBsaWdodFwtcmFpbjsKK+a4iyA+IGFzdHJpbmdlbnQ7CivmtpggPiByaXZlclwtYmFuazsKK+azhiA+IGxpY2VudGlvdXM7CivmrrIgPiBhbm5paGlsYXRlOwor5q6xID4gYW5uaWhpbGF0ZTsKK+attyA+IHRha2VcLXBsYWNlOwor5qyDID4gc2FuZGFsd29vZDsKK+arviA+IHRoZVwtcG9tZWxvOwor5qurID4gd29vZGVuXC1wZWc7CivmqrwgPiByaWRnZVwtcG9sZTsKK+aptCA+IHBsYWNlXC1uYW1lOwor5qieID4gZG9vclwtaGluZ2U7CivmprwgPiB3aW5lXC1nbGFzczsKK+ampiA+IHRyZWVcLXRydW5rOwor5qWqID4gc21hbGxcLWRpc2g7CivmpLUgPiBwb21wZWxtb3VzOwor5qSzID4gdGhlXC1waXZvdHM7CivmpIwgPiBpbnN0cnVtZW50Owor5qC0ID4gc2FuZGFsd29vZDsKK+agmyA+IHRoZVwtbGljaGVlOwor5qCYID4gZnJ1aXRcLXRyZWU7Civmn7cgPiBpbnN0cnVtZW50Owor5p2iID4gd29vZHdvcmtlcjsKK+acjCA+IGRpc3RyaWJ1dGU7Civmm6wgPiBkcnlcLWluXC1zdW47CivmmpggPiByaXNpbmdcLXN1bjsKK+aXlSA+IHBsYWNlXC1uYW1lOwor5peAID4gcGxhY2VcLW5hbWU7CivmlqIgPiB0b1wtcGx1bmRlcjsKK+aWkiA+IHZhcmllZ2F0ZWQ7CivmlKQgPiBzcHJlYWRcLW91dDsKK+aUhiA+IGRyaXZlXC1hd2F5Owor5pOqID4gdG9cLXR1Y2tcLWluOwor5pOlID4gZHJpdmVcLWF3YXk7Civmkr8gPiB0b1wtcGlja1wtdXA7CivmkrEgPiB0b1wtc2hvcnRlbjsKK+aOsSA+IHBpY2twb2NrZXQ7Civmjo4gPiBkcmFnXC1hc2lkZTsKK+aMrSA+IGZpc2hcLWJvbmVzOwor5oqFID4gdG9cLWNvbGxlY3Q7CivmiaEgPiBkcmFnXC1hbG9uZzsKK+aGuCA+IHRvXC1mbGF0dGVyOwor5oaNID4gYmVcLWhhdWdodHk7CivmhoAgPiB0b1wtcmVseVwtb247CivmhK4gPiBkaXN0cmVzc2VkOwor5oSTID4gcHJvZmxpZ2F0ZTsKK+aDjyA+IGF2YXJpY2lvdXM7CivmgZsgPiBkaXNvcmRlcmVkOwor5oCyID4gYmVcLWFueGlvdXM7Civlv4sgPiB0b1wtcmVseVwtb247CivlvqcgPiBldmVyeXdoZXJlOwor5b2/ID4gcmVzZW1ibGluZzsKK+W8jSA+IG51bWJlclwtdHdvOwor5byMID4gbnVtYmVyXC1vbmU7CivlvIcgPiBjb3Zlclwtb3ZlcjsKK+W7sSA+IGhhcm1vbmlvdXM7Civlu4AgPiB0b1wtY29uY2VhbDsKK+W6tCA+IHBsYWNlXC1uYW1lOwor5be8ID4gcGxhY2VcLW5hbWU7Civlt4IgPiBwbGFjZVwtbmFtZTsKK+W1mSA+IHBsYWNlXC1uYW1lOwor5bO0ID4gc3RlZXBcLWhpbGw7Civls5MgPiBwbGFjZVwtbmFtZTsKK+WxoiA+IGZyZXF1ZW50bHk7CivlsYQgPiB0aGVcLXZhZ2luYTsKK+WwgiA+IG1vbm9wb2xpemU7CivlrrwgPiB0eXJhbm5pY2FsOwor5a28ID4gbWlzZm9ydHVuZTsKK+WqnyA+IGx1c3RcLWFmdGVyOwor5aSFID4gdG9cLWRlc2NlbmQ7Civlo6kgPiBlbWJhbmttZW50Owor5aOOID4gaW5zdHJ1bWVudDsKK+WhsiA+IG9wZW5cLXNwYWNlOwor5aGkID4gaW5zdHJ1bWVudDsKK+WgriA+IGFcLWJvdW5kYXJ5Owor5aCDID4gY29tcGxpYW5jZTsKK+WdkiA+IHRvXC1jb21wYXJlOwor5ZymID4gd2F0ZXJcLWdhdGU7Civlm4wgPiBsb3F1YWNpb3VzOwor5Zq1ID4gZ2x1dHRvbm91czsKK+WasiA+IHJlYWRcLWFsb3VkOwor5Zm4ID4gbWV0cmljXC10b247CivlmZAgPiByZWNlcHRhY2xlOwor5ZiCID4gY3J5XC1sb3VkbHk7Civll60gPiBwbGFjZVwtbmFtZTsKK+WWuCA+IHBsYWNlXC1uYW1lOwor5Za2ID4gZW5jYW1wbWVudDsKK+WUvSA+IHRvXC10d2l0dGVyOwor5ZSfID4gcGxhY2VcLW5hbWU7CivlkbQgPiBicmVhdGhlXC1vbjsKK+WPhiA+IGNsb3VkeVwtc2t5Owor5Y2dID4gaGFpclwtc3R5bGU7Civlio8gPiB0b1wtYnV0Y2hlcjsKK+WKhCA+IGJyaWVmXC1ub3RlOwor5YmzID4gYnJpZWZcLW5vdGU7CivliYQgPiBjdXRcLXRocm9hdDsKK+WIvCA+IHRvXC1wbHVuZGVyOwor5YiEID4gZWRnZWRcLXRvb2w7Civlh7QgPiB0b1wtcmVseVwtb247Civlh7EgPiB0cml1bXBoYW50Owor5YeCID4gdG9cLXJlcXVlc3Q7CivlhpggPiB0b1wtbW92ZVwtb247CivlhZ8gPiB0b1wtYWR2YW5jZTsKK+WEiCA+IGdvXC1iZXR3ZWVuOwor5YOpID4gY291cmFnZW91czsKK+WBrSA+IHRyYW5zZ3Jlc3M7CivlgZ0gPiBub3RcLWZhY2luZzsKK+WAgCA+IGJld2lsZGVyZWQ7Civkv7sgPiB0b1wtcHJlcGFyZTsKK+S8tyA+IGRlc2NlbmRlbnQ7Civku5sgPiB5b3VuZ1wtZ2lybDsKK+S6ryA+IHRvXC1yZWNlaXZlOwor5LioID4gbnVtYmVyXC1vbmU7CivktqsgPiBmaW5lXC10ZWV0aDsKK+S2iSA+IGd1aW5lYVwtcGlnOwor5LWqID4gcHVyZVwtYmxhY2s7CivktZ0gPiBkYXJrXC1ibGFjazsKK+S1hyA+IHRvXC1kaXNsaWtlOwor5LOVID4gdGhlXC1waWdlb247Civks4wgPiB0aGVcLWN1Y2tvbzsKK+SzgCA+IHRoZVwtY3Vja29vOwor5LKrID4gdGhlXC1waWdlb247CivksqkgPiB0aGVcLWN1Y2tvbzsKK+SypSA+IHRoZVwtcGlnZW9uOwor5LGdID4gYmxhY2tcLWNhcnA7CivksYYgPiBzbWFsbFwtZmlzaDsKK+SxhSA+IHRoZVwtbXVsbGV0Owor5LGEID4gYVwtZmxhdGZpc2g7CivksLogPiBhXC1mbGF0ZmlzaDsKK+SwrCA+IHdpbGRcLWdob3N0Owor5LCEID4gc2hvcnRcLWhhaXI7Civkr5QgPiB0b1wtaW5jbGluZTsKK+SvkSA+IHRoZVwtcGVsdmlzOwor5K+MID4gdGhlXC1zYWNydW07Civkr4ogPiB0aGVcLXBlbHZpczsKK+SviCA+IHRoZVwtcGVsdmlzOwor5K6vID4gZmluZVwtaG9yc2U7Civkro0gPiBjdXJsaW5nXC11cDsKK+SujCA+IGZpbmVcLWhvcnNlOwor5K24ID4gYVwtc3RhbGxpb247CivkraMgPiByaWNlXC1jYWtlczsKK+SthCA+IGdsdXR0b25vdXM7CivkrLcgPiB3ZWxsXC1mZWVkXC47CivkrKIgPiBnbHV0dG9ub3VzOwor5KulID4gYVwtd3J5XC1uZWNrOwor5KujID4gYVwtd3J5XC1uZWNrOwor5KueID4gbGFyZ2VcLWhlYWQ7Civkq5MgPiBsYXJnZVwtaGVhZDsKK+SquiA+IHRlZXRocmlkZ2U7CivkqqAgPiBwdWx2ZXJpemVkOwor5KmxID4gYVwtc2NhYmJhcmQ7CivkqbAgPiBhXC1zY2FiYmFyZDsKK+SpoiA+IGFcLXNjYWJiYXJkOwor5KmZID4gYVwtc2NhYmJhcmQ7CivkqYMgPiBhcHBlYXJhbmNlOwor5KmBID4gdGhpblwtaGFpcnM7CivkqL0gPiB0b1wtcmVzb2x2ZTsKK+SoqSA+IHRoZVwtc3Bpcml0Owor5KigID4gY2xvdWR5XC1za3k7Civkp78gPiB0aGVcLW1hZ3BpZTsKK+SnsiA+IHRoZVwtbWFncGllOwor5KexID4gdGhlXC1waWdlb247Civkp6MgPiB0b1wtc3RvcFwtdXA7Civkpq8gPiB2ZXJ5XC1kZW5zZTsKK+SmpyA+IHRvXC1xdWFycmVsOwor5KaNID4gdG9cLWluY2x1ZGU7CivkpY4gPiBpbnN0cnVtZW50Owor5KS+ID4gdG9cLWNvbnRhaW47CivkpL0gPiBmYXJtXC10b29sczsKK+SkvCA+IG1ldGFsXC13aXJlOwor5KS5ID4gdG9cLWVuZ3JhdmU7CivkpIcgPiB3aGl0ZVwtd2luZTsKK+SipSA+IGluXC1oYXJtb255Owor5KGnID4gYVwtY2FycmlhZ2U7CivkoaQgPiBhXC1jYXJyaWFnZTsKK+ShmiA+IGltcGxlbWVudHM7CivkoY4gPiBhXC13aW5kbGFzczsKK+SguCA+IG9ic2VxdWlvdXM7CivkoLYgPiB0b1wtcHJvamVjdDsKK+SgqiA+IGZvb3RwcmludHM7CivkoKkgPiB0b1wtdXJpbmF0ZTsKK+SgpiA+IHRvXC1zdHVtYmxlOwor5KCfID4gdG9cLXRyaXBcLXVwOwor5KCYID4gb25lXC1sZWdnZWQ7Civkn7wgPiBmb290cHJpbnRzOwor5J+qID4gcmVwZWF0ZWRseTsKK+SfoSA+IHRvXC10cmFtcGxlOwor5J+ZID4gdG9cLXN0YWdnZXI7Civkn4QgPiBpblwtYVwtaHVycnk7CivknoUgPiB0b1wtZ2l2ZVwtdG87Civknb8gPiBob25vdXJhYmVsOwor5J23ID4gc2VjdXJpdGllczsKK+SdtCA+IHRvXC1wcmVzZW50Owor5J2xID4gdG9cLXRyb3VibGU7CivknZQgPiB0aGVcLWJhZGdlcjsKK+ScmyA+IHRvXC1zbGFuZGVyOwor5JyZID4gbm90XC1jbGV2ZXI7CivknJIgPiBleHByZXNzaW9uOwor5JyRID4gdG9cLXNsYW5kZXI7CivknIsgPiB0b1wtc3VzcGVuZDsKK+SbvSA+IGxvcXVhY2lvdXM7Civkm7wgPiB0b1wtc2xhbmRlcjsKK+SbsiA+IHRvXC1kZWNlaXZlOwor5JuuID4gdG9cLWRlc3Ryb3k7Civkm6sgPiB0b1wtZGVjZWl2ZTsKK+SbqSA+IHRvXC1zbGFuZGVyOwor5JumID4gbGl0aWdhdGlvbjsKK+SbliA+IGxvcXVhY2lvdXM7Civkm5UgPiB0b1wtZmxhdHRlcjsKK+SbjSA+IGxvcXVhY2lvdXM7Civkm4UgPiBsb3F1YWNpb3VzOwor5JuEID4gdG9cLWNvbnNvbGU7CivkmrkgPiB0b1wtcHJlcGFyZTsKK+SasCA+IHRvXC1wcmVwYXJlOwor5JqTID4gdG9cLW9ic2VydmU7Civkmo0gPiB0b1wtbG9va1wtYXQ7CivkmocgPiB0b1wtb2JzZXJ2ZTsKK+SZuiA+IHRvXC1vYnNlcnZlOwor5JmaID4gY3VybGluZ1wtdXA7CivkmKEgPiB0aGVcLXNsZWV2ZTsKK+SYlSA+IHByb3N0aXR1dGU7CivklrMgPiBqZWxseVwtZmlzaDsKK+SVoSA+IGNvbXBvc2l0YWU7CivklJggPiBmaXNoXC1wYXN0ZTsKK+STtSA+IHRvXC1ibG9zc29tOwor5JOkID4gdmVnZXRhdGlvbjsKK+SThiA+IHRvXC1jdXRcLXRoZTsKK+SSoiA+IHN3ZWV0XC1mbGFnOwor5JG/ID4gc21hbGxcLWJvYXQ7CivkkbAgPiBzbWFsbFwtYm9hdDsKK+SRrSA+IHdhclwtdmVzc2VsOwor5JGhID4gc21hbGxcLWJvYXQ7CivkkY0gPiB0b1wtc3dhbGxvdzsKK+SQoiA+IHRvXC13cmlua2xlOwor5I+tID4gdGhlXC1jaGVla3M7Civkj4wgPiB0b1wtdmlicmF0ZTsKK+SPiyA+IHJlc3BlY3RmdWw7Civkjp8gPiB0b1wtZmF3blwtb247CivkjbUgPiB5b3VuZ1wtZ29hdDsKK+SNniA+IGFcLWRyYWdcLW5ldDsKK+SNlyA+IHRvXC1oYW5nXC11cDsKK+SNlCA+IGFcLWZ1bGxcLW5ldDsKK+SMgCA+IHRvXC1hcnJhbmdlOwor5Iu2ID4gdG9cLXN0dW1ibGU7Civki7EgPiBhXC13aWxkXC15YWs7CivkircgPiBibGFja1wtc2lsazsKK+SKqSA+IHJpY2VcLWdyYXZ5Owor5ImNID4gdG9cLW9ic2VydmU7Civkh44gPiB0b1wtc3RhcnRsZTsKK+SHhyA+IHRoZVwtcGVvcGxlOwor5IaSID4gdG9cLWV4YW1pbmU7CivkhosgPiB0aGVcLWF1dHVtbjsKK+SFlCA+IGRlYWRcLWNyb3BzOwor5ISfID4gdG9cLXdvcnNoaXA7CivkhJMgPiB0b1wtd29yc2hpcDsKK+SEkSA+IHRvXC13b3JzaGlwOwor5ISQID4gdG9cLXdvcnNoaXA7CivkhIYgPiB0b1wtd29yc2hpcDsKK+SEhSA+IHRvXC13b3JzaGlwOwor5ISDID4gbWlzZm9ydHVuZTsKK+SEgSA+IHRvXC13b3JzaGlwOwor5IKEID4gdG9cLXN0YXJ0bGU7CivkgbogPiB0b1wtbG9va1wtYXQ7Civkga8gPiB0b1wtbG9va1wtYXQ7CivkgZ4gPiBhXC1wcm92aW5jZTsKK+SBmCA+IHRvXC1sb29rXC1hdDsKK+SBlSA+IHRvXC1sb29rXC1hdDsKK+SBkyA+IHRvXC1sb29rXC1hdDsKK+SBiSA+IHRvXC1leGFtaW5lOwor5IGIID4gdG9cLWV4YW1pbmU7CivkgYEgPiBzdHJhYmlzbXVzOwor5IC2ID4gc3RyYWJpc211czsKK+SAsSA+IHRvXC1leGFtaW5lOwor5ICvID4gdG9cLWxvb2tcLWF0Owor5ICZID4gdG9cLWxvb2tcLWF0Owor5ICGID4gdG9cLWV4aGF1c3Q7CivjvpkgPiBlcnlzaXBlbGFzOwor472oID4gZnJhZ21lbnRlZDsKK+O9oyA+IGFcLWZyb250aWVyOwor472YID4gYm9yZGVybGFuZDsKK+O8uSA+IGVhcnRlbndhcmU7CivjurMgPiBibGFja1wtbWljYTsKK+O6kyA+IGZvb3RwcmludHM7Civjuo8gPiB0aGVcLWJhZGdlcjsKK+O6hSA+IHRoZVwtbW9ua2V5Owor47mIID4gYVwtYmxhY2tcLW94Owor47ioID4gYVwtYmlnXC1idWxsOwor47iMID4gdG9cLXR3aW5rbGU7Civjt7cgPiB0aGlja1wtc291cDsKK+O3oSA+IHRvXC1zdGFydGxlOwor47atID4gYWxtb3N0XC1kcnk7CivjtpwgPiBkZWVwXC13YXRlcjsKK+O1nyA+IGxpZ2h0XC1yYWluOwor47WAID4gd2F0ZXJcLWZsb3c7CivjtJwgPiBldmVyeXdoZXJlOwor47OBID4gd2F0ZXJcLWZsb3c7Civjsq8gPiBsb25nXC1oYWlyeTsKK+OyniA+IHNob3J0XC1oYWlyOwor47KVID4gdmFyaWVnYXRlZDsKK+OyjCA+IGRvZycnc1wtaGFpcjsKK+OyiSA+IGVnZ1wtc2hlbGxzOwor47G4ID4gdG9cLWV4aGF1c3Q7CivjsbAgPiB0b1wtZGVzdHJveTsKK+OxpiA+IHRvXC1kaXNjYXJkOwor47GkID4gdG9cLWV4aGF1c3Q7CivjsZwgPiBwZXN0aWxlbmNlOwor47GbID4gdG9cLWRlc3Ryb3k7CivjsZogPiB0b1wtZGVzdHJveTsKK+OwuCA+IHRvXC1jb2xsZWN0Owor47CRID4gZnJ1aXRcLXRyZWU7Civjr4cgPiBhXC1zdG9ja2FkZTsKK+OtmCA+IGFcLXNjYWJiYXJkOwor462JID4gZmFybVwtdG9vbHM7CivjrLEgPiB0b1wtcmVwbGFjZTsKK+OsqiA+IHRvXC1mb2xkXC11cDsKK+OsnCA+IHRvXC1hZHZhbmNlOwor46ukID4gYVwtbG9uZ1wtZGF5Owor46q0ID4gdG9cLW1lYXN1cmU7CivjqpwgPiB0b1wtbWVhc3VyZTsKK+OqmiA+IHRvXC1zY2F0dGVyOwor46qUID4gdG9cLXNjYXR0ZXI7CivjqowgPiB0b1wtbGVhZFwtb247CivjqokgPiB0b1wtY29tYmluZTsKK+OpuSA+IHRvXC1waWxlXC1vbjsKK+OpuCA+IHRvXC1waWxlXC1vbjsKK+OpqiA+IHRvXC1jb2xsZWN0Owor46meID4gdG9cLWJhY2tcLXVwOwor46mdID4gdG9cLWNvbXBhcmU7CivjqZogPiB0b1wtY29sbGVjdDsKK+OpliA+IHRvXC1iYWNrXC11cDsKK+OpjSA+IHRvXC1iYWNrXC11cDsKK+OpgCA+IHRvXC1yZWNlaXZlOwor46i/ID4gdG9cLXJlY2VpdmU7CivjqLMgPiBhXC1jdXBib2FyZDsKK+OosiA+IHRvXC1iYWNrXC11cDsKK+OoryA+IHRvXC1lbmxhcmdlOwor46iuID4gdG9cLWxpZnRcLXVwOwor76imID4gbWV0cm9wb2xpczsKK+OoiiA+IHRvXC1kaXNjYXJkOwor76e4ID4gYmFtYm9vXC1oYXQ7Civvp64gPiBwaG9zcGhvcnVzOwor76ecID4gcHJvc3Blcm91czsKK++nkSA+IG51bWJlclwtc2l4Owor76a3ID4gc3dlZXRcLXdpbmU7CivjprYgPiByZXBlYXRlZGx5Owor46apID4gbWVsYW5jaG9seTsKK+OmmiA+IG1lbGFuY2hvbHk7CivvpowgPiB0YWtlXC1wbGFjZTsKK++mhCA+IHN0cmFpblwtb3V0Owor46aCID4gY29uc3RhbnRseTsKK+OltiA+IHRvXC1maWxsXC11cDsKK++lqiA+IGxhcmdlXC1yb3BlOwor46WjID4gdG9cLWJlbmVmaXQ7CivjpZogPiBtZWxhbmNob2x5Owor76WLID4gZnJlcXVlbnRseTsKK+OktyA+IHRvXC1kZWJhdWNoOwor46SpID4gdG9cLXJlc3BlY3Q7CivjpJAgPiBkaXNoYXJtb255Owor76SAID4gaG93XD9cLXdoYXRcPzsKK+OjvSA+IHRvXC1mb3JnaXZlOwor46OFID4gYm93XC1zdHJpbmc7Civjo4AgPiB0b1wtcmVib3VuZDsKK+OirSA+IGFcLWJvd1wtY2FzZTsKK+OimiA+IGFcLWNvcnJpZG9yOwor46KPID4gYVwtY2Vzc3Bvb2w7CivjoaUgPiB0b1wtY3VybFwtdXA7CivjnqAgPiBtYWxlXC1vcmdhbjsKK+OejiA+IGJvZHlcLXdhc3RlOwor456GID4gb25lXC1sZWdnZWQ7Civjna8gPiB0b1wtc29qb3VybjsKK+OchSA+IHRvXC1mYXduXC1vbjsKK+ObqiA+IHRvXC1zbGFuZGVyOwor45qgID4gZnVsbFwtZ3Jvd247Civjmo8gPiB0b1wtc2NhdHRlcjsKK+OZuiA+IGNyb3NzXC1yb2FkOwor45m0ID4gdG9cLWNvbmNlYWw7CivjmbIgPiB0b1wtc3RvcFwtdXA7CivjmYkgPiBwcm9zcGVyb3VzOwor45i/ID4gdG9cLWZpbGxcLXVwOwor45i7ID4gdG9cLXN0b3BcLXVwOwor45inID4gcHJlY2VkZW5jZTsKK+OYnSA+IHRvXC10YWtlXC1pbjsKK+OXrCA+IHRoaWNrXC1saXBzOwor45erID4gdG9cLXdoaXNwZXI7Civjl6IgPiBsb3F1YWNpb3VzOwor45eLID4gdGhlXC10aHJvYXQ7Civjl4cgPiB0b1wtc3dhbGxvdzsKK+OXhCA+IHRvXC1kZWNlaXZlOwor45a2ID4gdG9cLXN3YWxsb3c7CivjlpggPiB0b1wtc3RhcnRsZTsKK+OWhiA+IHRvXC1jb25kZW1uOwor45WrID4gdG9cLWltaXRhdGU7CivjlY0gPiB0b1wtaGVhcFwtdXA7CivjlYYgPiBmaW5lXC1zdG9uZTsKK+OUtyA+IHRvXC1zZWNyZXRlOwor45SYID4gdG9cLWRlZ3JhZGU7CivjlJMgPiB0b1wtc3RhbW1lcjsKK+OUjCA+IHRvXC1jdXRcLW9mZjsKK+OTuiA+IGNhc3RyYXRpb247Civjk64gPiB0b1wtZW5ncmF2ZTsKK+OTniA+IHRvXC1lbmdyYXZlOwor45OCID4gdHlyYW5uaWNhbDsKK+OStyA+IHRvXC1wcm9zcGVyOwor45KdID4gdG9cLWRlY2VpdmU7CivjkpwgPiByZXNwZWN0ZnVsOwor45KKID4gbG9xdWFjaW91czsKK+ORnCA+IHRvXC1lbmdyYXZlOwor45GCID4gdG9cLWltaXRhdGU7CivjkKQgPiB0b1wtaW1wbG9yZTsKK+S6hiA+IHRvXC1maW5pc2g7CivlrZAgPiBvZmZzcHJpbmc7CivlvrkgPiBwZW5ldHJhdGU7CivopoEgPiBuZWNlc3Nhcnk7CivovrEgPiBodW1pbGlhdGU7CivnnYAgPiBtYWtlXC1tb3ZlOwor5oiQID4gY29tcGxldGVkOwor552jID4gc3VwZXJ2aXNlOwor6LyvID4gZ2F0aGVyXC11cDsKK+W8pSA+IGV4dGVuc2l2ZTsKK+eboyA+IHN1cGVydmlzZTsKK+e+jiA+IGJlYXV0aWZ1bDsKK+W7giA+IHNpZGVcLXJvb207Civpl64gPiBhc2tcLWFib3V0Owor5bqtID4gY291cnR5YXJkOwor55mCID4gYmVcLWhlYWxlZDsKK+eXuiA+IHBhcmFseXNpczsKK+W3riA+IHRvXC1kaWZmZXI7Civpmr4gPiBkaWZmaWN1bHQ7CivotoUgPiBqdW1wXC1vdmVyOwor55WwID4gZGlmZmVyZW50Owor5LqyID4gcmVsYXRpdmVzOwor55WrID4gZGVsaW5lYXRlOwor55WcID4gbGl2ZXN0b2NrOwor55WRID4gZHJ5XC1maWVsZDsKK+eUmCA+IHN3ZWV0bmVzczsKK+iupCA+IHJlY29nbml6ZTsKK+iytCA+IGV4cGVuc2l2ZTsKK+iynSA+IHNlYVwtc2hlbGw7CivpmaIgPiBjb3VydHlhcmQ7Civovr4gPiBhcnJpdmVcLWF0Owor5LyXID4gbXVsdGl0dWRlOwor6K+GID4gcmVjb2duaXplOwor5YCSID4gZmFsbFwtb3ZlcjsKK+eOqSA+IHBsYXlcLXdpdGg7Civlg48gPiBhXC1waWN0dXJlOwor5a6FID4gcmVzaWRlbmNlOwor5o2uID4gdG9cLW9jY3VweTsKK+itryA+IHRyYW5zbGF0ZTsKK+itqyA+IHRhbGthdGl2ZTsKK+itmCA+IHJlY29nbml6ZTsKK+mAoCA+IGNvbnN0cnVjdDsKK+WqvCA+IG9sZFwtd29tYW47CivniqAgPiBzYWNyaWZpY2U7Civoqo0gPiByZWNvZ25pemU7CivniZIgPiBkb2N1bWVudHM7CivniYwgPiBzaWduYm9hcmQ7CivlqYYgPiBvbGRcLXdvbWFuOwor6KizID4gdHJhbnNsYXRlOwor54iQID4gZmlyZXBsYWNlOwor5LmFID4gbG9uZ1wtdGltZTsKK+WmviA+IGNvbmN1YmluZTsKK+WInSA+IGJlZ2lubmluZzsKK+imqiA+IHJlbGF0aXZlczsKK+mZpCA+IGVsaW1pbmF0ZTsKK+WGtSA+IGNvbmRpdGlvbjsKK+S5sSA+IGNvbmZ1c2lvbjsKK+WImyA+IGVzdGFibGlzaDsKK+emjyA+IGhhcHBpbmVzczsKK+i+kSA+IGdhdGhlclwtdXA7CivlgYcgPiBmYWxzZWhvb2Q7Civnqb8gPiBwZW5ldHJhdGU7CivooYYgPiBtdWx0aXR1ZGU7Civpob4gPiBsb29rXC1iYWNrOwor6KC2ID4gc2lsa3dvcm1zOwor5Li9ID4gYmVhdXRpZnVsOwor5riQID4gZ3JhZHVhbGx5Owor5byCID4gZGlmZmVyZW50Owor556nID4gZ2xhbmNlXC1hdDsKK+WfkiA+IGVuY2xvc3VyZTsKK+WfgyA+IGZpbmVcLWR1c3Q7CivonqIgPiBnbG93XC13b3JtOwor6YCAID4gc3RlcFwtYmFjazsKK+icuyA+IGRyYWdvbmZseTsKK+a8uCA+IGdyYWR1YWxseTsKK+e/uyA+IGZsaXBcLW92ZXI7CivlnI8gPiB0b1wtY2lyY2xlOwor5pmuID4gdW5pdmVyc2FsOwor6Ju5ID4gY2hyeXNhbGlzOwor5Li0ID4gZHJhd1wtbmVhcjsKK+ibiSA+IGRyYWdvbmZseTsKK+WNjyA+IGJlXC11bml0ZWQ7CivpupcgPiBiZWF1dGlmdWw7CivompUgPiBzaWxrd29ybXM7Civmua8gPiBob3RcLXdhdGVyOwor5L6LID4gcHJlY2VkZW50Owor6LS1ID4gZXhwZW5zaXZlOwor5rSyID4gY29udGluZW50Owor5p2+ID4gcGluZVwtdHJlZTsKK+S8mSA+IGNvbXBhbmlvbjsKK+avqyA+IGZpbmVcLWhhaXI7CivolY4gPiBidWNrd2hlYXQ7CivovpMgPiB0cmFuc3BvcnQ7Civms4EgPiBjb25kaXRpb247Civnm5EgPiBzdXBlcnZpc2U7CivmipggPiBicmVha1wtb2ZmOwor5rGwID4gZXhjZXNzaXZlOwor5ZCbID4gc292ZXJlaWduOwor5Y2xID4gZGFuZ2Vyb3VzOwor5qaCID4gZ2VuZXJhbGx5Owor6YCPID4gcGVuZXRyYXRlOwor5ZyIID4gdG9cLWNpcmNsZTsKK+auiiA+IGRpZmZlcmVudDsKK+auhiA+IGRhbmdlcm91czsKK+WOhCA+IGFkdmVyc2l0eTsKK+axhyA+IGNvbmNvdXJzZTsKK+WOiSA+IHdoZXRzdG9uZTsKK+mZhCA+IGFkaGVyZVwtdG87CivogqkgPiBzaG91bGRlcnM7CivprZggPiBuaWdodG1hcmU7CivljZQgPiBiZVwtdW5pdGVkOwor6I2SID4gd2FzdGVsYW5kOwor6ayxID4gbHV4dXJpYW50Owor6K+RID4gdHJhbnNsYXRlOwor5YygID4gY3JhZnRzbWFuOwor5qydID4gbHV4dXJpYW50Owor5Ly0ID4gY29tcGFuaW9uOwor5YyCID4gZnJhZ3JhbmNlOwor5Yu4ID4gcmVjb21tZW5kOwor5YunID4gcmVjb21tZW5kOwor6aOYID4gd2hpcmx3aW5kOwor6Im2ID4gYmVhdXRpZnVsOwor5Ym1ID4gZXN0YWJsaXNoOwor54KuID4gbGFyZ2VcLWd1bjsKK+i0nSA+IHNlYVwtc2hlbGw7Civpg44gPiBnZW50bGVtYW47CivpmaogPiBhY2NvbXBhbnk7Civoh6ggPiBkcmF3XC1uZWFyOwor5YedID4gY29hZ3VsYXRlOwor5YaXID4gZXhjZXNzaXZlOwor5YqdID4gcmVjb21tZW5kOwor5YmpID4gbGVmdG92ZXJzOwor6aWSID4gYm91bnRpZnVsOwor55aXID4gYmVcLWhlYWxlZDsKK+axpCA+IGhvdFwtd2F0ZXI7CivlvbsgPiBwZW5ldHJhdGU7Civpo5wgPiBmbGlwXC1vdmVyOwor5YOaID4gY29tcGFuaW9uOwor6IKYID4gdGhlXC1lbGJvdzsKK+iCliA+IGxvb2tcLWxpa2U7CivmmKggPiB5ZXN0ZXJkYXk7CivmmoIgPiB0ZW1wb3Jhcnk7CivpgJIgPiBoYW5kXC1vdmVyOwor6aGnID4gbG9va1wtYmFjazsKK+elpSA+IGdvb2RcLWx1Y2s7CivlgLkgPiB0ZW1wZXJhdGU7CivoibAgPiBkaWZmaWN1bHQ7Civku5cgPiByZWx5XC11cG9uOwor5p+/ID4gcGVyc2ltbW9uOwor6ZSuID4gZG9vclwtYm9sdDsKK+aeryA+IGRyaWVkXC1vdXQ7CivojrEgPiBnb29zZWZvb3Q7CivotZQgPiBpbmRlbW5pZnk7CivpgKIgPiBjb21lXC11cG9uOwor552BID4gb3BlblwtZXllczsKK+WYvyA+IGJlXC1zaWxlbnQ7Civku64gPiBmYWxzZWhvb2Q7Civpm6MgPiBkaWZmaWN1bHQ7CivotKogPiBiZVwtZ3JlZWR5Owor5pqrID4gdGVtcG9yYXJ5Owor6YCdID4gcGFzc1wtYXdheTsKK+S6giA+IGNvbmZ1c2lvbjsKK+iJviA+IGFydGVtaXNpYTsKK+iKrCA+IGZyYWdyYW5jZTsKK+iijSA+IGxvbmdcLWdvd247CivlhqQgPiBncmlldmFuY2U7CivppbYgPiBib3VudGlmdWw7CivngokgPiBmaXJlcGxhY2U7Civov6ogPiBlbmxpZ2h0ZW47CivlmIkgPiBleGNlbGxlbnQ7Civplr4gPiB0aHJlc2hvbGQ7Civntr4gPiB0aGluXC1zaWxrOwor6ImzID4gYmVhdXRpZnVsOwor6IaAID4gdXBwZXJcLWFybTsKK+eJuiA+IHNhY3JpZmljZTsKK+mhvSA+IG9ic3RpbmF0ZTsKK+atiSA+IGRlZmljaWVudDsKK+W4hSA+IGNvbW1hbmRlcjsKK+aGviA+IHRvXC1yZWdyZXQ7CivlioggPiBjdXRcLWFwYXJ0Owor5ouCID4gc2hha2VcLW9mZjsKK+mNtSA+IGRvb3JcLWJvbHQ7CivnrYggPiBhcnJvd1wtZW5kOwor5ougID4gdG9cLW9jY3VweTsKK+WOoiA+IHNpZGVcLXJvb207CivnhqwgPiBjb29rXC1kb3duOwor5omVID4gc2hha2VcLW9mZjsKK+WvkyA+IHJlc2lkZW5jZTsKK+eovCA+IHNvd1wtZ3JhaW47CivmgY0gPiBzZWVtaW5nbHk7Civnu6MgPiBlbWJyb2lkZXI7Civmh4MgPiBjb3VydGVvdXM7CivooawgPiB1bmRlcndlYXI7CivmhYogPiB0b1wtcmVzZW50Owor6IaKID4gc2hvdWxkZXJzOwor5r2tID4gZGVlcFwtcG9vbDsKK+aXtyA+IGV4dGVuc2l2ZTsKK+ehnSA+IHNhbHRwZXRlcjsKK+mBlCA+IGFycml2ZVwtYXQ7CivpgLkgPiBhcnJpdmVcLWF0Owor6aqkID4gcHJvY2VkdXJlOwor6Iu5ID4gYXJ0ZW1pc2lhOwor5b+/ID4gZ2V0XC1hbmdyeTsKK+WdoCA+IGZhbGxcLWRvd247CivonbYgPiBidXR0ZXJmbHk7CivnhIkgPiB0aGVyZXVwb247CivnpoAgPiByZXBvcnRcLXRvOwor5oyrID4gcHVzaFwtZG93bjsKK+mzhCA+IGFsbGlnYXRvcjsKK+iwkCA+IGhhcm1vbml6ZTsKK+WxjiA+IGV4Y3JlbWVudDsKK+WPqCA+IHRhbGthdGl2ZTsKK+iRsSA+IHNjYWxsaW9uczsKK+aeoyA+IGRhdGVcLXRyZWU7CivkvqMgPiBjb21wYW5pb247CivosLQgPiByZXByaW1hbmQ7CivmsbkgPiB0dXJidWxlbnQ7CivnmKsgPiBwYXJhbHlzaXM7CivolJogPiBsdXh1cmlhbnQ7Civms7sgPiBkcmFpblwtb2ZmOwor5L+tID4gdGVtcGVyYXRlOwor54CRID4gd2F0ZXJmYWxsOwor6J20ID4gYnV0dGVyZmx5Owor5qiKID4gYVwtcmFpbGluZzsKK+aVmyA+IGRyYXdcLWJhY2s7CivnpqcgPiBoYXBwaW5lc3M7CivojLUgPiBhXC1jdXNoaW9uOwor5qOVID4gaGVtcFwtcGFsbTsKK+WonyA+IGJlYXV0aWZ1bDsKK+WAqSA+IGJlYXV0aWZ1bDsKK+i+lyA+IHR1cm5cLW92ZXI7CivmgaQgPiBzaG93XC1waXR5Owor5L6IID4gbHV4dXJpb3VzOwor5aSlID4gY29tcGFuaW9uOwor5rKBID4gc29ha1wtaW50bzsKK+anmyA+IHRocmVzaG9sZDsKK+WMoyA+IHNtYWxsXC1ib3g7CivmjY4gPiB0b1wtc2VsZWN0Owor55eqID4gcGFyYWx5c2lzOwor55eeID4gZHlzcGVwc2lhOwor552QID4gc3F1aW50XC1hdDsKK+WepiA+IGN1bHRpdmF0ZTsKK+a1kiA+IHJpdmVyYmFuazsKK+iRtSA+IHN1bmZsb3dlcjsKK+edqyA+IGV5ZWxhc2hlczsKK+eXiiA+IGJlXC1oZWFsZWQ7Civlk7ogPiBjaGV3XC1mb29kOwor56ujID4gdGVybWluYXRlOwor5ZuUID4gbXV0dGVyaW5nOwor6JeQID4gZGlzcmVnYXJkOwor5b+SID4gZXhjZXNzaXZlOwor5Z+gID4gcG9ydFwtY2l0eTsKK+iNpCA+IG1lYXRcLWRpZXQ7CivnpbogPiBnb29kXC1sdWNrOwor6JySID4gbWlsbGlwZWRlOwor6I+HID4gbXVzaHJvb21zOwor6LGaID4gc21hbGxcLXBpZzsKK+aykyA+IGNvbm5lY3RlZDsKK+W8qSA+IGNyb3NzXC1ib3c7CivmrocgPiBkaWVcLXlvdW5nOwor6JCkID4gZ2xvd1wtd29ybTsKK+agiCA+IHdhcmVob3VzZTsKK+mGuiA+IGdldFwtZHJ1bms7CivonIggPiBjZW50aXBlZGU7CivkvbwgPiBiZWF1dGlmdWw7CivomqMgPiBjZW50aXBlZGU7CivmhKsgPiBndWlsZWxlc3M7CivosJkgPiB2ZXJzZWRcLWluOwor54a5ID4gZGltXC1saWdodDsKK+aAgiA+IGluc3RpZ2F0ZTsKK+mmpSA+IGZyYWdyYW5jZTsKK+aBvyA+IGluc3RpZ2F0ZTsKK+mBmyA+IHRha2VcLXdhbGs7Civnl7kgPiBwYXJhbHlzaXM7Civpur4gPiBhXC1wZW5uYW50Owor5aqyID4gbWFycnlcLW9mZjsKK+ickyA+IGRyYWdvbmZseTsKK+mVgSA+IG1hZ25lc2l1bTsKK+aksCA+IHBhbG1cLXRyZWU7CivnoLogPiB3aGV0c3RvbmU7Civnl6IgPiBkeXNlbnRlcnk7Civll5EgPiBlYXRcLXNlZWRzOwor6JqvID4gZWFydGh3b3JtOwor6JyaID4gY29ja3JvYWNoOwor6JqTID4gZWFydGh3b3JtOwor6a2HID4gbmlnaHRtYXJlOwor6ZiGID4gaGlnaFwtZG9vcjsKK+WmqiA+IG9sZFwtd29tYW47Civmk4AgPiByb2xsXC1mbGF0Owor5aaNID4gYmVhdXRpZnVsOwor5aejID4gYmVhdXRpZnVsOwor6KKkID4gbG9uZ2l0dWRlOwor6bqdID4gbXVza1wtZGVlcjsKK+iNnyA+IGx1eHVyaWFudDsKK+S9uyA+IGZyaXZvbG91czsKK+mSviA+IHBvdGFzc2l1bTsKK+mjmSA+IHdoaXJsd2luZDsKK+WtkSA+IHJlbWFpbmluZzsKK+aqhCA+IGNhbGxcLWFybXM7Civpmo0gPiBkcnlcLWRpdGNoOwor6K+/ID4gcGFzc1wtYnVjazsKK+e7qyA+IHRoaW5cLXNpbGs7CivpgIQgPiBhXC1zdXJuYW1lOwor5qKPID4gaGFuZGN1ZmZzOwor56WJID4gaGFwcGluZXNzOwor6J+RID4gY29ja3JvYWNoOwor6ZK6ID4gYnJvYWRcLWF4ZTsKK+iNniA+IGJ1Y2t3aGVhdDsKK+afkSA+IHRhbmdlcmluZTsKK+WptSA+IGJlYXV0aWZ1bDsKK+WoiSA+IGJlYXV0aWZ1bDsKK+iupyA+IGNvbmZ1c2lvbjsKK+S5nCA+IHRvXC1zcXVpbnQ7Civkv6YgPiBjb21wYW5pb247Civnh64gPiBoYXJtb25pemU7Civpo5ogPiB3aGlybHdpbmQ7Civlp7kgPiBiZWF1dGlmdWw7CivmhI4gPiBvYnN0aW5hdGU7CivlqLIgPiBhXC1nb2RkZXNzOwor5b+dID4gZGlzZ3JhY2VkOwor6JGzID4gbHV4dXJpYW50Owor6K+uID4gY3JpdGljaXplOwor6bOPID4gaHVnZVwtZmlzaDsKK+ichyA+IGplbGx5ZmlzaDsKK+WKrSA+IGVuY291cmFnZTsKK+WFliA+IGVzdGFibGlzaDsKK+WRtiA+IHRhbGthdGl2ZTsKK+eZoyA+IHJpbmd3b3JtczsKK+e7piA+IHNpbGtcLWNvcmQ7CivpkrggPiBwbHV0b25pdW07CivpppcgPiBjaGVla2JvbmU7CivplLAgPiBtYW5nYW5lc2U7CivkvqogPiBhXC1jb21wYW55Owor5YerID4gd2lsZFwtZHVjazsKK+eXsSA+IGhlYXRcLXJhc2g7Civnl4ggPiBjYXJidW5jbGU7CivmgowgPiBicm90aGVybHk7CivlhrwgPiBcKHN1cm5hbWVcKTsKK+m5pyA+IHBhcnRyaWRnZTsKK+aCkiA+IHNvcnJvd2Z1bDsKK+aAgyA+IHJlZ3JldGZ1bDsKK+WikiA+IHdldFwtdGlsdGg7CivoqL4gPiBiYWRcLW1vdXRoOwor5ZyuID4gZGVzdHJveWVkOwor6bKIID4gc2VhXC1wZXJjaDsKK+mSmiA+IHBsdXRvbml1bTsKK+eXvyA+IHBhcmFseXNpczsKK+aUiSA+IHRvXC1iZWNrb247CivpsocgPiBzaGVhdGZpc2g7CivohoggPiBkaWFwaHJhZ207Civnio0gPiBhXC1idWxsb2NrOwor5aakID4gYmVhdXRpZnVsOwor6ZSXID4gZ2VybWFuaXVtOwor6Y6PID4gcHVyZVwtZ29sZDsKK+mVhSA+IGFtZXJpY2l1bTsKK+i+giA+IGFcLWNoYXJpb3Q7CivlqqogPiBvbGRcLXdvbWFuOwor5a2TID4gYmVhdXRpZnVsOwor6Le4ID4gY2xlYXJcLXdheTsKK+eWlCA+IGNhcmJ1bmNsZTsKK+eFsyA+IGJlXC1idXJuZWQ7Civnib4gPiB0b1wtb3Bwb3NlOwor5piAID4gc3VuXC1saWdodDsKK+S5qSA+IHRvXC1kaXZpbmU7Civnvp8gPiBoeWRyb3hpZGU7Civojb0gPiBjb3JpYW5kZXI7CivosLUgPiB0YWxrYXRpdmU7Civnu6AgPiB3ZWxsXC1yb3BlOwor5ZOTID4gZ2FycnVsb3VzOwor6ISsID4gYVwtYmxhZGRlcjsKK+aIoSA+IHN1Ymp1Z2F0ZTsKK+i+hyA+IGhhbmRcLWNhcnQ7CivpmIggPiB0aHJlc2hvbGQ7CivpuZogPiBjb3Jtb3JhbnQ7CivplZ4gPiBhcnJvd2hlYWQ7Civoj7AgPiB3aWxkXC1yaWNlOwor6KCWID4gaW5jaFwtd29ybTsKK+mTqyA+IGxhcmdlXC1ob2U7CivmsJggPiBkZXV0ZXJpdW07Civpu74gPiB0b1wtc3RyaXZlOwor6ZWnID4gbGFudGhhbnVtOwor5Z6hID4gcGxvd1wtc29pbDsKK+eClCA+IGFjZXR5bGVuZTsKK+m4rCA+IGNvcm1vcmFudDsKK+mVsSA+IHl0dGVyYml1bTsKK+mSlSA+IG5lb2R5bWl1bTsKK+W/rSA+IGRlbGlnaHRlZDsKK+iOqiA+IGFydGVtaXNpYTsKK+iLtCA+IHNhY2tjbG90aDsKK+iwsyA+IHRvXC1kZWNpZGU7Civpkq8gPiBwYWxsYWRpdW07CivnorIgPiB0ZWxsdXJpdW07CivnkqkgPiBqYWRlXC1yaW5nOwor6ZiDID4gdGhyZXNob2xkOwor6aWrID4gc3VyZmVpdGVkOwor5pKZID4gZWNvbm9taXplOwor6JO8ID4gc21hcnR3ZWVkOwor6aWUID4gYnJlYWtmYXN0Owor6ZS2ID4gc3Ryb250aXVtOwor56GOID4gd2hldHN0b25lOwor5piDID4gYWZ0ZXJub29uOwor5ZSqID4gdG9cLXJlY2l0ZTsKK+iViCA+IG11c2hyb29tczsKK+WEhyA+IGluZ2VuaW91czsKK+mytCA+IGZpc2hcLWd1dHM7CivpsoUgPiBmaXNoXC1uYW1lOwor6KCKID4gY29ja3JvYWNoOwor6JqwID4gbWlsbGlwZWRlOwor6ZONID4gYmVyeWxsaXVtOwor54azID4gdG9cLXNwcmVhZDsKK+iDjSA+IGd1YW5pZGluZTsKK+i/lSA+IG9ic3RpbmF0ZTsKK+mykCA+IGdsb2JlZmlzaDsKK+mFkCA+IGFuaHlkcmlkZTsKK+ihhCA+IGVwaXN0YXhpczsKK+efpyA+IG11Y2hcLW1vcmU7CivmgqsgPiBzaW5jZXJpdHk7CivohqYgPiBwaG9zcGhpbmU7CivnvKMgPiBmaW5lXC1zaWxrOwor5a6EID4gYVwtdHJhaXRvcjsKK+mYjCA+IHdlblwteGlhbmc7Civlk78gPiBleGNlbGxlbnQ7CivpmL0gPiBkYW5nZXJvdXM7CivljKYgPiBzbWFsbFwtYm94Owor6YWeID4gcGh0aGFsZWluOwor6b2zID4gdG9vdGhsZXNzOwor6b2tID4gdG9vdGhhY2hlOwor6bu9ID4gdG9cLXN0cml2ZTsKK+m4lSA+IGNvcm1vcmFudDsKK+m3viA+IGFcLXN3YWxsb3c7Civpt60gPiB3YXRlclwtaGVuOwor6benID4gY29ybW9yYW50Owor6belID4gdGhlXC1lZ3JldDsKK+m3kyA+IHBhcnRyaWRnZTsKK+m3jyA+IGJpcmRcLW5hbWU7Civpt4YgPiBiaXJkXC1uYW1lOwor6ba/ID4gY29ybW9yYW50Owor6bahID4gY3Jvc3NiaWxsOwor6bW3ID4gY29cLXdvcmtlcjsKK+mzrCA+IHdpbGRcLWR1Y2s7Civps6cgPiB3aWxkXC1kdWNrOwor6bOiID4gc25ha2VoZWFkOwor6bKOID4ga2luZ1wtY3JhYjsKK+mxuCA+IHNlYVwtcGVyY2g7CivpsbcgPiBjcm9jb2RpbGU7CivpsacgPiBzbmFrZWhlYWQ7CivpsZ8gPiBraW5nXC1jcmFiOwor6bGbID4gZmlzaFwtbmFtZTsKK+mwpSA+IGh1Z2VcLWZpc2g7CivpsJAgPiBhbGxpZ2F0b3I7Civpr6AgPiB0b1wtY29uZmVyOwor6a+dID4gZmlzaFwtZ3V0czsKK+mupiA+IHNuYWtlZmlzaDsKK+mujiA+IHNoZWF0ZmlzaDsKK+mugCA+IHNuYWtlZmlzaDsKK+mtsiA+IGZpc2hcLW5hbWU7CivprZ4gPiBmaXNoXC10cmFwOwor6aywID4gbHV4dXJpYW50Owor6ayWID4gd2lsZFwtaGFpcjsKK+mrpyA+IGxvbmdcLWhhaXI7Civpq5cgPiB0aGVcLXNrdWxsOwor6aqtID4gc2hpblwtYm9uZTsKK+mpnyA+IHByb2NlZHVyZTsKK+mopyA+IHRhblwtaG9yc2U7CivpqJAgPiB0b1wtdmVyaXR5Owor6ae4ID4gZ2FsbG9waW5nOwor6aadID4gZnJhZ3JhbmNlOwor6aabID4gZnJhZ3JhbmNlOwor6aaCID4gbGVmdG92ZXJzOwor6aWgID4gcmljZVwtY2FrZTsKK+mkuiA+IHJpY2VcLWNha2U7CivppLEgPiBkcnlcLWdvb2RzOwor6aSVID4gbGVmdG92ZXJzOwor6aSIID4gcmljZVwtY2FrZTsKK+mjqyA+IHN1cmZlaXRlZDsKK+mjpSA+IHJpY2VcLWNha2U7Civpo4ggPiB3aGlybHdpbmQ7Civpo4cgPiB3aGlybHdpbmQ7Civpo4YgPiB3aGlybHdpbmQ7Civpo4QgPiB3aGlybHdpbmQ7Civpo4MgPiB3aGlybHdpbmQ7CivporcgPiB3aGlybHdpbmQ7CivporQgPiB3aGlybHdpbmQ7CivpoK8gPiBjaGVla2JvbmU7CivpoJEgPiBvYnN0aW5hdGU7CivpoIQgPiBjaGVla2JvbmU7CivpnaogPiB0b1wtY29iYmxlOwor6Z2nID4gd2FzaFwtZmFjZTsKK+mdgCA+IGRyaXp6bGluZzsKK+mcgiA+IGZpbmVcLXJhaW47CivpmoMgPiB0b1wtZXhjZWVkOwor6Za/ID4gd2VuXC14aWFuZzsKK+mWuiA+IGxvb2tcLWRvd247CivplqwgPiBoaWdoXC1kb29yOwor6ZarID4gdGhyZXNob2xkOwor6ZSrID4gYmVya2VsaXVtOwor6ZSGID4gemlyY29uaXVtOwor6ZK2ID4gY29sdW1iaXVtOwor6ZKMID4gcnV0aGVuaXVtOwor6ZKBID4gYVwtbWF0dG9jazsKK+mRrSA+IGxhbnRoYW51bTsKK+mRqiA+IGZpcmVwbGFjZTsKK+mQvyA+IHl0dGVyYml1bTsKK+mQuyA+IGRydW1zdGljazsKK+mPmyA+IHRvXC1wb2xpc2g7Civpj5AgPiBwdXJlXC1nb2xkOwor6Y+DID4gYXJyb3doZWFkOwor6Y6/ID4gbmVwdHVuaXVtOwor6Y6eID4gcGxvd3NoYXJlOwor6Y6HID4gYW1lcmljaXVtOwor6Y6CID4gbWFnbmVzaXVtOwor6Y26ID4gZ2VybWFuaXVtOwor6Y22ID4gc3Ryb250aXVtOwor6YyzID4gbWFuZ2FuZXNlOwor6YyHID4gYmVya2VsaXVtOwor6YuvID4gemlyY29uaXVtOwor6YuNID4gYmVyeWxsaXVtOwor6YqkID4gYW1lcmljaXVtOwor6YqaID4gbGFyZ2VcLWhvZTsKK+mJniA+IGJyb2FkXC1heGU7CivpiL0gPiBwbHV0b25pdW07CivpiLkgPiBiZXJ5bGxpdW07CivpiKkgPiBmaXJlcGxhY2U7CivpiIwgPiB0b1wtcGllcmNlOwor6YiIID4gcGx1dG9uaXVtOwor6YiAID4gcGFsbGFkaXVtOwor6Ye5ID4gbmVvZHltaXVtOwor6YeVID4gcnV0aGVuaXVtOwor6YOeID4gZ2VudGxlbWFuOwor6YGeID4gaGFuZFwtb3ZlcjsKK+mAkyA+IGhhbmRcLW92ZXI7CivovL4gPiB0dXJuXC1vdmVyOwor6Ly4ID4gdHJhbnNwb3J0Owor6LyYID4gYVwtY2FyXC1ydXQ7CivovIUgPiBhXC1jaGFyaW90Owor6Lu3ID4gc2FjcmlmaWNlOwor6LuEID4gdG9cLWdvdmVybjsKK+i6lCA+IGZvbGxvd1wtaW47CivouZUgPiBjbGVhclwtd2F5Owor6LmUID4gdGVtcG9yYXJ5Owor6LepID4gdG9cLXdhZGRsZTsKK+i2nSA+IHRvXC1wdXJzdWU7Civotb8gPiBsYXRlXC1zbG93Owor6LO4ID4gbGVmdG92ZXJzOwor6LOgID4gaW5kZW1uaWZ5Owor6LG1ID4geW91bmdcLXBpZzsKK+ixkyA+IGJlYXV0aWZ1bDsKK+iuniA+IHRvXC1kZWNpZGU7CivorbQgPiByZXByaW1hbmQ7CivorYogPiB3cmFuZ2xpbmc7CivorYUgPiB3cmlnZ2xpbmc7Civoq7MgPiB2ZXJzZWRcLWluOwor6KunID4gaGFybW9uaXplOwor6KudID4ga25vd2xlZGdlOwor6KuJID4gcGFzc1wtYnVjazsKK+iqmiA+IGNyaXRpY2l6ZTsKK+iqliA+IG9ic3RpbmF0ZTsKK+iooCA+IG11Y2hcLW1vcmU7CivoqIwgPiBjb25mdXNpb247Civopa8gPiB1bmRlcndlYXI7Civoo7IgPiB3YWlzdGNvYXQ7Civon7ogPiBlYXJ0aHdvcm07CivonowgPiBhXC1zdHJpcGVkOwor6JyoID4gYnV0dGVyZmx5Owor6Ju1ID4gZHJhZ29uZmx5Owor6JuNID4gZ2xvd1wtd29ybTsKK+iavyA+IG1pbGxpcGVkZTsKK+iYniA+IHdpbGRcLXZpbmU7CivologgPiBsdXh1cmlhbnQ7CivolZcgPiBsZXVjYWNlbmU7CivolLkgPiB3aWxkXC12aW5lOwor6JSlID4gc2NhbGxpb25zOwor6JOGID4gc3RyYXdcLW1hdDsKK+iSoiA+IGhlZHlzYXJ1bTsKK+iRtyA+IG1lYXRcLWRpZXQ7CivokZMgPiB2ZWdldGFibGU7CivokIogPiBnb29zZWZvb3Q7Civoj7sgPiBhcnRlbWlzaWE7CivojY0gPiBidWNrd2hlYXQ7Civoi6AgPiBtdWx0aXR1ZGU7Civoi5kgPiBhXC1waWdcLXN0eTsKK+iKvCA+IHRvXC1jaG9vc2U7CivoibcgPiBiZWF1dGlmdWw7CivoibEgPiBkaWZmaWN1bHQ7CivoiaMgPiBzdGVyblwtb2FyOwor6ImOID4gZmFzdFwtYm9hdDsKK+iInSA+IGxpbmNoXC1waW47CivoiJggPiBhXC1tYW5zaW9uOwor6IevID4gdG9cLXByYWlzZTsKK+iDpiA+IHRoZVwtbmF2ZWw7CivogKUgPiBmYXJtXC10b29sOwor5762ID4gcmFua1wtb2RvcjsKK+e+pSA+IGh5ZHJveGlkZTsKK+e9gSA+IGFcLWNpc3Rlcm47CivnuaMgPiBvYnN0aW5hdGU7CivnuaEgPiBlbWJyb2lkZXI7CivnuY0gPiBlbWJyb2lkZXI7CivnuJEgPiBmaW5lXC1zaWxrOwor57iDID4gZmluZVwtc2lsazsKK+e3pSA+IHN3YWRkbGluZzsKK+e2iSA+IGVtYnJvaWRlcjsKK+e2hiA+IHdlbGxcLXJvcGU7Civns7AgPiByaWNlXC1iYWxsOwor57OdID4gc2NhdHRlcmVkOwor57K/ID4gcmljZVwtY2FrZTsKK+exqCA+IHRyb3Vzc2VhdTsKK+ewgyA+IHNpZGVcLXJvb207Civnq5UgPiBkZWNpbGl0ZXI7Civnq48gPiBraWxvbGl0ZXI7Civnq40gPiBkZWNhbGl0ZXI7Civnq4YgPiBleGhhdXN0ZWQ7CivnqrQgPiBnbGFuY2VcLWF0Owor56qLID4gaW5cLWFcLWhvbGU7CivnqaogPiB0b1wtcHJhaXNlOwor56isID4gZ2x1dGlub3VzOwor56ifID4gcmVwb3J0XC10bzsKK+emtCA+IHNhY3JpZmljZTsKK+empCA+IFwoc3VybmFtZVwpOwor56acID4gc2FjcmlmaWNlOwor56aWID4gc2FjcmlmaWNlOwor56aVID4gZXhjZWxsZW50Owor56aUID4gaGFwcGluZXNzOwor56WmID4gaGFwcGluZXNzOwor56WOID4gZXhjZWxsZW50Owor56S/ID4gc2FjcmlmaWNlOwor56S9ID4gYmxlc3NpbmdzOwor56SqID4gd2hldHN0b25lOwor56SeID4gXChtaW5lcmFsXCk7CivnoqwgPiB3aGV0c3RvbmU7CivnooYgPiBhcnJvd1wtdGlwOwor56G7ID4gb2JzdGluYXRlOwor56CuID4gYXJyb3dcLXRpcDsKK+egrCA+IGJpZ1wtc3RvbmU7CivnnZ4gPiBzcXVpbnRcLWF0Owor55yVID4gcmVzdHJhaW50Owor55u1ID4gXChzdXJuYW1lXCk7Civnm5ogPiBcKHN1cm5hbWVcKTsKK+eZsSA+IHBhcmFseXNpczsKK+eZsCA+IGNhcmJ1bmNsZTsKK+eZrCA+IHJpbmd3b3JtczsKK+eYrSA+IGFcLXdoaXRsb3c7CivnmJwgPiBhXC1wb2x5cHVzOwor55iTID4gcGFyYWx5c2lzOwor55ehID4gYVwtZGlzZWFzZTsKK+eXkCA+IHdoaXJsd2luZDsKK+eWtiA+IGR5c2VudGVyeTsKK+eVtSA+IGRlbGluZWF0ZTsKK+eVsSA+IHRvXC1kZXRhaW47CivnlYsgPiB0aWxsXC1sYW5kOwor55S0ID4gY29ja3JvYWNoOwor55SqID4gXChzdXJuYW1lXCk7CivnlKYgPiBiZVwtcmVib3JuOwor55SFID4gY2VudGlncmFtOwor55O4ID4gaGVjdG9ncmFtOwor55OxID4gbWlsbGlncmFtOwor55K/ID4gZmluZVwtamFkZTsKK+eRtCA+IHR3aW5cLWdlbXM7CivnkaMgPiBmcmFnbWVudHM7CivnjYAgPiB0b1wtZ2F0aGVyOwor54uzID4gYXJtYWRpbGxvOwor54qwID4gYXJtYWRpbGxvOwor54qnID4gc2FjcmlmaWNlOwor54e2ID4gdG9cLXNjb3JjaDsKK+eHrCA+IGJ1cm5cLWRvd247Civnh4ogPiBsdXh1cmlhbnQ7Civnhr8gPiBicmlsbGlhbnQ7CivnhrogPiBkaW1cLWxpZ2h0Owor54KYID4gYnJpbGxpYW50Owor54CJID4gZHJhaW5cLW9mZjsKK+a/qSA+IHBvdXJcLWRvd247Civmv5sgPiBkcml6emxpbmc7Civmu7ggPiByaXZlcmJhbms7CivmubwgPiBibGFja1wtbXVkOwor5rmPID4gd2FzaFwtZmFjZTsKK+a5hSA+IGJvaWxcLXNpbGs7Civmt6kgPiBwYXNzXC1vdmVyOwor5ra3ID4gcmFpbnN0b3JtOwor5rSRID4gd2hpcmxwb29sOwor5rK6ID4gdHVyYnVsZW50Owor5q6kID4gZGllXC15b3VuZzsKK+auiCA+IGluZmVydGlsZTsKK+augCA+IGRpZVwteW91bmc7CivmrZsgPiBkcmF3XC1iYWNrOwor5qyVID4gdHJlZVwtbmFtZTsKK+aquyA+IHRocmVzaG9sZDsKK+apmiA+IHRhbGxcLXRyZWU7CivmqLMgPiB0YWxsXC10cmVlOwor5qiLID4gdHJlZVwtbmFtZTsKK+anqiA+IGdlbmVyYWxseTsKK+anqSA+IGdlbmVyYWxseTsKK+amqiA+IGhlYWRib2FyZDsKK+aktiA+IHBhbG1cLXRyZWU7Civmo6cgPiB3YXJlaG91c2U7Civmo6UgPiBhXC1yYWlsaW5nOwor5qOXID4gZGF0ZVwtdHJlZTsKK+ajliA+IGRvb3JcLXN0b3A7CivmopwgPiBjaG9wc3RpY2s7Civmoo0gPiB0cmVlXC1uYW1lOwor5qCxID4gbGFyZ2VcLXBlZzsKK+agrSA+IGtpbmdcLXBvc3Q7CivmoJ8gPiBoZW1wXC1wYWxtOwor5qCSID4gY3Jvc3NcLWJhcjsKK+afuSA+IHBlcnNpbW1vbjsKK+afiCA+IGNvbnRhaW5lcjsKK+aeviA+IHBlcnNpbW1vbjsKK+aeuSA+IGRydW1zdGljazsKK+aeqSA+IHBpbmVcLXRyZWU7CivmnqggPiBkb29yXC1zdG9wOwor5p6ZID4gdHJlZVwta25vdDsKK+adqSA+IGhlYWRib2FyZDsKK+acniA+IGZ1bGxcLXllYXI7CivmnJMgPiBzYWNyaWZpY2U7Civmm7EgPiBjb2Nrcm9hY2g7Civmm6AgPiBleHRlbnNpdmU7Civmmo0gPiBzdW5zdHJva2U7CivmmL8gPiBleHRlbnNpdmU7CivmmKogPiBkZWxpZ2h0ZWQ7Civml6ogPiB1bml0ZWRcLWluOwor5pebID4gYVwtcGVubmFudDsKK+aXmSA+IGFcLXBlbm5hbnQ7CivmloIgPiBkcmF3XC1iYWNrOwor5pWLID4gdG9cLXN0cmlrZTsKK+aUiyA+IHRvXC1jbHV0Y2g7CivmlIMgPiBwcmVjZWRpbmc7Civmk78gPiB0b1wtc2VsZWN0Owor5pOaID4gdG9cLW9jY3VweTsKK+aTkCA+IHRvXC1wdXRcLW9uOwor5pOJID4gdG9cLXBpZXJjZTsKK+aRvSA+IHRocm93XC1vdXQ7Civmka4gPiB0b1wtcmF0dGxlOwor5pGbID4gdG9cLXNwcmVhZDsKK+aQmSA+IHRvXC1oYW5kbGU7CivmkJUgPiB0b1wtc3RyaWtlOwor5o+mID4gdG9cLWNsdXRjaDsKK+aPpSA+IHNjcmF0Y2hlcjsKK+aOmSA+IHRvXC1zdHJpdmU7CivmibsgPiB0b1wtc3RyaWtlOwor5omkID4gdG9cLXRocnVzdDsKK+aInCA+IHRvXC1zY3JhcGU7Civmhq8gPiBzb3Jyb3dmdWw7Civmhq4gPiByZWdyZXRmdWw7Civmhb0gPiBzb3Jyb3dmdWw7CivmhbwgPiBzb3Jyb3dmdWw7CivmhaQgPiBzaW5jZXJpdHk7CivmhYYgPiBleGNlc3NpdmU7CivmhKggPiBzaW5jZXJpdHk7Civmgr0gPiBzb3Jyb3dmdWw7CivmgoEgPiBpcnJpdGFibGU7CivmgZEgPiB0b1wtY2hhbmdlOwor5oGKID4gYmVcLXVuaXRlZDsKK+aAuiA+IHRvXC1lbmR1cmU7CivmgJ4gPiB0b1wtZ3JpZXZlOwor5oCXID4gb2JzZXJ2YW50Owor5b+AID4gdG9cLXN0cm9sbDsKK+W9jCA+IGV4dGVuc2l2ZTsKK+W7viA+IHR3b1wtaGFuZHM7Civlu7ggPiBlbmxpZ2h0ZW47CivluokgPiBhXC12aWxsYWdlOwor5bmpID4gdHJhcHBpbmdzOwor5bmZID4gYVwtY3VydGFpbjsKK+W4pSA+IGNvbW1hbmRlcjsKK+W2jiA+IGx1eHVyaWFudDsKK+WvvSA+IGFcLWhhbmRmdWw7Civlr5ggPiBwdXRcLWFzaWRlOwor5a+XID4gYVwtc3VybmFtZTsKK+WvliA+IGdyYWR1YWxseTsKK+WvgyA+IGdyaWV2YW5jZTsKK+WugiA+IHNjYXR0ZXJlZDsKK+WsiyA+IGJlYXV0aWZ1bDsKK+WrvSA+IHBsYXlcLXdpdGg7Civlq5sgPiBjb21wbGlhbnQ7Civlq5cgPiBvbGRcLXdvbWFuOwor5auVID4gY29tcGxpYW50Owor5aq6ID4gYmVhdXRpZnVsOwor5aqsID4gZ292ZXJuZXNzOwor5aqVID4gdW5kZWNpZGVkOwor5aqEID4gYmVhdXRpZnVsOwor5amlID4gYmVhdXRpZnVsOwor5ae4ID4gYmVhdXRpZnVsOwor5aexID4gYmVhdXRpZnVsOwor5aeiID4gYmVhdXRpZnVsOwor5aeeID4gY29uY3ViaW5lOwor5aS7ID4gZmlzaFwtbmFtZTsKK+WkjCA+IHRvXC1kYXdkbGU7Civlor4gPiBjdWx0aXZhdGU7CivlopwgPiBmYWxsXC1kb3duOwor5aGdID4gZmxhdFwtYmFuazsKK+WfkyA+IGVuY2xvc3VyZTsKK+WelyA+IHNhY3JpZmljZTsKK+WciiA+IHJlc3RcLXJvb207CivlmpwgPiBiZVwtc2lsZW50Owor5ZmBID4gbmFzdGluZXNzOwor5Zi1ID4gZ2FycnVsb3VzOwor5ZiRID4gdG9cLW1lbmFjZTsKK+WWpiA+IHRhbGthdGl2ZTsKK+WVjiA+IG9ic3RpbmF0ZTsKK+WTqyA+IHRvXC1jYWpvbGU7CivlkrUgPiB0b1wtcmV2aWxlOwor5ZGnID4gdG9cLXJlYnVrZTsKK+WPhSA+IHRvXC1jb3VuZWw7CivljrIgPiB3aGV0c3RvbmU7CivljpMgPiBwcmVjaXBpY2U7CivljK0gPiBzbWFsbFwtYm94Owor5YyYID4gdGhlXC1icmFpbjsKK+WLryA+IGV4aGF1c3RlZDsKK+WLqSA+IHdvcmtcLWhhcmQ7CivlibAgPiBsZWZ0b3ZlcnM7CivliZkgPiBlc3RhYmxpc2g7CivliY8gPiBlc3RhYmxpc2g7CivliLEgPiBlc3RhYmxpc2g7CivliKEgPiB0b1wtc2NyYXBlOwor5YiUID4gc2Nvb3BcLW91dDsKK+WIhSA+IHRvXC1jcmVhdGU7Civlh7cgPiBkaXJ0XC1jbG9kOwor5YeZID4gYW5cLWljaWNsZTsKK+WFlyA+IGVzdGFibGlzaDsKK+WFhyA+IGF0cm9jaW91czsKK+WEsyA+IG9ic3RpbmF0ZTsKK+WErSA+IHRvXC1hc3Npc3Q7CivlhJUgPiBhXC1jb21wYW55Owor5YSUID4gY29tcGFuaW9uOwor5YSJID4gdGVtcGVyYXRlOwor5YOdID4gdG9cLXJldmlsZTsKK+WDhyA+IGh1bWlsaWF0ZTsKK+WCuiA+IHRvXC1oaW5kZXI7CivlgKIgPiBiZWF1dGlmdWw7CivkvrYgPiBjb21wYW5pb247Civkvo4gPiB0b1wtc29vdGhlOwor5L2rID4gXChzdXJuYW1lXCk7CivkvLsgPiBtZXNzZW5nZXI7CivkvIsgPiBkZWNlcHRpdmU7Civku4ggPiBcKHN1cm5hbWVcKTsKK+S5hiA+IGxvbmdcLXRpbWU7CivktrMgPiB0b1wtbG9va3VwOwor5LaRID4gdG9cLXNuZWV6ZTsKK+S2jSA+IHRvXC1zbmVlemU7Civkta8gPiBhXC12aWxsYWdlOwor5LShID4gYmVhdXRpZnVsOwor5LSPID4gYVwtc3dhbGxvdzsKK+SzuiA+IHRoZVwtcXVhaWw7Civksr8gPiBjb3Jtb3JhbnQ7CivksqggPiB3aWxkXC1zd2FuOwor5LGIID4gZmlzaFwtcHVscDsKK+SwpSA+IGFcLWN5Y2xvbmU7CivksJYgPiBmaW5lXC1oYWlyOwor5LCQID4gbG9uZ1wtaGFpcjsKK+SwiCA+IGZpbmVcLWhhaXI7Civkr70gPiBmaW5lXC1oYWlyOwor5K+3ID4gZmluZVwtaGFpcjsKK+SvpiA+IHRpbnlcLWJvbmU7CivkrpwgPiB0b1wtZ2FsbG9wOwor5K2sID4gdG9cLWtvd3RvdzsKK+StqyA+IHRvXC1rb3d0b3c7CivkrZsgPiB0YXN0ZWxlc3M7CivkrZkgPiBleHF1aXNpdGU7CivkrZUgPiB0YXN0ZWxlc3M7CivkrZEgPiBpbmNvcnJ1cHQ7CivkrLYgPiB0b1wtc3RyYXZlOwor5KyUID4gaHVycmljYW5lOwor5KyTID4gaHVycmljYW5lOwor5Ku7ID4gYVwtdHlwaG9vbjsKK+SruiA+IGFcLXR5cGhvb247Civkq50gPiBmcmFncmFuY2U7Civkq5QgPiBhXC1zZXJ2YW50Owor5KmmID4gdGhlXC1yZWluczsKK+SorSA+IHRoZVwtc2tpZXM7CivkqJAgPiB0b1wtc3ByZWFkOwor5KiNID4gZGVlcFwtcG9uZDsKK+SnhSA+IGRhbmdlcm91czsKK+SmtSA+IGluY2FwYWJsZTsKK+SmrCA+IGFcLXZhY2FuY3k7CivkpoYgPiBhXC1iaWdcLWhvZTsKK+SlvSA+IGZhcm1cLXRvb2w7CivkpKQgPiBpbXBsZW1lbnQ7CivkpI8gPiBkZXN0cm95ZWQ7Civko7ggPiB0YXN0ZWxlc3M7Civko6kgPiBiZWF1dGlmdWw7CivkorEgPiB0b1wtc2xpZ2h0Owor5KKrID4gdG9cLWZvbGxvdzsKK+SinyA+IHRvXC10cmF2ZWw7Civkoo0gPiB0b1wtaGFzdGVuOwor5KKKID4gdG9cLXRyYXZlbDsKK+ShlCA+IHRvXC1oaW5kZXI7CivkoLIgPiB0b1wtbGlzdGVuOwor5KCvID4gdG9cLWFzY2VuZDsKK+SgriA+IHRvXC1wcmFuY2U7CivkoIYgPiB0b1wta293dG93Owor5J+7ID4gYmFyZVwtZmVldDsKK+SfpSA+IGx1eHVyaWFudDsKK+SfniA+IHRvXC1mYWx0ZXI7Civkn4wgPiBkaXZlcmdpbmc7Civknr4gPiBmcml2b2xvdXM7CivknrwgPiB0b1wtZXNjYXBlOwor5J6jID4gdG9cLXJlc2lzdDsKK+SelyA+IHN1c3BpY2lvbjsKK+SekiA+IHJlZFwtY29sb3I7CivknpAgPiBwbGVudGlmdWw7Civkno0gPiB0b1wtYmVzdG93Owor5J6JID4gYVwtc3VycGx1czsKK+SdviA+IHRvXC1iZXN0b3c7CivknbwgPiB0b1wtYmVzdG93Owor5JytID4gdG9cLWRyZWRnZTsKK+ScnyA+IHRvXC12ZXJpZnk7CivknJ0gPiB1bmNlcnRhaW47CivknIUgPiB0b1wtZm9sbG93Owor5Ju7ID4gdG9cLWluZHVjZTsKK+SbuSA+IHRvXC1hY2N1c2U7Civkm7ggPiBnYXJydWxvdXM7Civkm7MgPiB0b1wtbWFsaWduOwor5JusID4gYmFieVwtdGFsazsKK+SbqiA+IGxvcXVhY2l0eTsKK+SbniA+IGxvcXVhY2l0eTsKK+SbmiA+IHRvXC1wcmFpc2U7Civkm4sgPiB0b1wtc2NoZW1lOwor5JuBID4gdG9cLW11cm11cjsKK+SatSA+IHRvXC1pbmR1Y2U7CivkmbggPiB0b1wtb2J0YWluOwor5Jm3ID4gdG9cLW9idGFpbjsKK+SZryA+IGV4cXVpc2l0ZTsKK+SZpyA+IHJlZFwtY29sb3I7CivkmZggPiBleHF1aXNpdGU7CivkmLwgPiBzdG9ja2luZ3M7CivkmJogPiBhXC1zZXJ2YW50Owor5JiXID4gYmVhdXRpZnVsOwor5JiRID4gdGhlXC1wdWxzZTsKK+SXmSA+IGVhcnRod29ybTsKK+SXkyA+IGRyYWdvbmZseTsKK+SXjCA+IGRyYWdvbmZseTsKK+SXhSA+IG1pbGxpcGVkZTsKK+SWoSA+IG1pbGxpcGVkZTsKK+SVuSA+IGFcLWN1cnRhaW47CivklbIgPiBhcnRlbWlzaWE7CivklakgPiBkcnlcLWZydWl0Owor5JWPID4gYXJ0ZW1pc2lhOwor5JSzID4gY2hpY2tsaW5nOwor5JOwID4gYWJzaW50aGluOwor5JOXID4gc2NhbGxpb25zOwor5JOHID4gbHV4dXJpYW50Owor5JKwID4gdG9cLWZvbGxvdzsKK+SSoCA+IGx1eHVyaWFudDsKK+SSiiA+IGFcLXBhdGllbnQ7CivkkaogPiBhXC1zYWlsaW5nOwor5JGfID4gbHV4dXJpYW50Owor5JGTID4gYVwtbG9va291dDsKK+SRkSA+IGFcLXNlcnZhbnQ7CivkkYkgPiBleGNyZW1lbnQ7CivkkYAgPiB0aGVcLW5hdmVsOwor5JC6ID4gZGVsaWNpb3VzOwor5JChID4gdGhlXC1uYXZlbDsKK+SQmyA+IHRvXC1sb29zZW47CivkkIwgPiBsdXh1cmlhbnQ7CivkkIYgPiBiaWdcLWJlbGx5Owor5I+9ID4gbWVhdFwtcHVscDsKK+SPrCA+IHRoZVwtc3BpbmU7Civkj6AgPiBtZWF0XC1zb3VwOwor5I+eID4gdGhlXC1iZWxseTsKK+SOoSA+IHRvXC1zaHJpbms7CivkjoMgPiBmaW5lXC1kb3duOwor5I2OID4gYVwtc3BpbmRsZTsKK+SMsiA+IGxpZ2h0XC1yZWQ7CivkjJsgPiBlbnRvdXJhZ2U7CivkjJYgPiB0b1wtZ2F0aGVyOwor5IyKID4gZW50b3VyYWdlOwor5IugID4gdG9cLXJlcGFpcjsKK+SKsCA+IGZvb2RzdHVmZjsKK+SKnCA+IGR1bXBsaW5nczsKK+SJvSA+IHJpY2VcLWNha2U7CivkibwgPiBtYXRlcmlhbHM7CivkiZggPiB0b1wtcGllcmNlOwor5Ii1ID4gbHV4dXJpYW50Owor5IeQID4gdG9cLWFycml2ZTsKK+SGkCA+IGFcLWNvdW50cnk7CivkhY4gPiBkaWZmZXJlbnQ7CivkhYUgPiBmYXJtXC10b29sOwor5IWDID4gbGF0ZVwtY3JvcDsKK+SErCA+IHRvXC1jaGFuZ2U7CivkhJkgPiBoYXBwaW5lc3M7Civkg6kgPiBhXC1taW5lcmFsOwor5IOVID4gc3RvbmV3YXJlOwor5IOTID4gdG9cLXB1bmlzaDsKK+SDgCA+IG1pbGxzdG9uZTsKK+SCviA+IHRvXC1wb2xpc2g7CivkgoggPiB0b1wtcGllcmNlOwor5IKHID4gdG9cLXBpZXJjZTsKK+SBoiA+IGV4cXVpc2l0ZTsKK+SBkCA+IGRlZXBcLWV5ZWQ7CivkgLAgPiBvcGVuXC1leWVzOwor5ICsID4gdG9cLWdsYW5jZTsKK+SAoiA+IHRvXC1nbGFuY2U7CivkgKEgPiB0b1wtc3B5XC1vbjsKK+SAkCA+IHRvXC1yZWdhcmQ7Civjv78gPiB3aW5lXC1jdXBzOwor47+fID4gaGVcLWJyaWdodDsKK+O/myA+IGNhcmJ1bmNsZTsKK+O/hyA+IHBhcmFseXNpczsKK+O+rSA+IHRvXC1zaHJpbms7CivjvqUgPiBiZWxseWFjaGU7CivjvqMgPiB0b1wtc2hpdmVyOwor476LID4gZHlzZW50ZXJ5Owor472sID4gdG9cLWFzc2lzdDsKK+O9niA+IHRvXC1yZW1haW47CivjvZEgPiBkZWxpY2lvdXM7CivjvYkgPiBhXC1iaWdcLWphcjsKK+O8uiA+IHBvcmNlbGFpbjsKK+O8miA+IGVhcnRod2FyZTsKK+O7vSA+IGZpbmVcLWphZGU7Civju7EgPiB0b1wtY2lyY2xlOwor47uMID4gZmluZVwtamFkZTsKK+O7iSA+IGZpbmVcLWphZGU7Civjt7wgPiBhXC1zd2FsbG93Owor47eOID4gc3Vuc3Ryb2tlOwor47WXID4gdHVyYnVsZW50Owor47WUID4gbm90XC1jbGVhcjsKK+O0gSA+IHRvXC1hZGRcLXRvOwor47OoID4gdG9cLXNwbGFzaDsKK+OytSA+IHRoZVwtc2tpZXM7CivjsqYgPiBsb25nXC1oYWlyOwor47KkID4gbG9uZ1wtaGFpcjsKK+OymiA+IGxvbmdcLWhhaXI7CivjsZggPiBuaWdodG1hcmU7CivjsJYgPiB0aGVcLW9saXZlOwor46+6ID4gYVwtY2FiaW5ldDsKK+OvryA+IHNtYWxsXC1jdXA7Civjr50gPiBwYXVsb3duaWE7Civjr4QgPiBsdXh1cmlhbnQ7CivjrpkgPiBhXC1waXRmYWxsOwor466UID4gdmVnZXRhYmxlOwor466DID4gZmFybVwtdG9vbDsKK+OtoiA+IG1lY2hhbmljczsKK+OsvyA+IG1vb25saWdodDsKK+OsqyA+IGNsZWFyXC1za3k7CivjrKMgPiBsdXh1cmlhbnQ7CivjrJ4gPiBzdW5zdHJva2U7CivjqqwgPiB0b1wtcGllcmNlOwor46qpID4gdG9cLXN0cmlrZTsKK+OqpCA+IHRvXC1maW5pc2g7CivjqpEgPiB0b1wtZm9sbG93Owor46qOID4gdW5jZXJ0YWluOwor46qLID4gdG9cLXJlc2lzdDsKK+OqiCA+IHRvXC1sZXRcLWdvOwor46qFID4gdG9cLWNoYW5nZTsKK+OpsSA+IHRvXC1zZWxlY3Q7CivjqacgPiB0b1wtc3RyaWtlOwor46mSID4gdG9cLWFycmVzdDsKK+OpjCA+IHRvXC1zdHJpa2U7CivjqYcgPiB0aGVcLXRodW1iOwor46mEID4gdG9cLXN0cmlrZTsKK+OotiA+IHRvXC10aHJlc2g7CivvqJsgPiBoYXBwaW5lc3M7CivvqJogPiBnb29kXC1sdWNrOwor46iaID4gdG9cLXNlbGVjdDsKK+OojSA+IHRvXC1kZWZlbmQ7CivjqIkgPiB0b1wtc21vb3RoOwor76iEID4gcmVzaWRlbmNlOwor46iEID4gdG9cLXBpZXJjZTsKK+OnviA+IHRvXC1zdHJpa2U7Civvp7wgPiByZWNvZ25pemU7Civvp7YgPiBkcmF3XC1uZWFyOwor46ewID4gdG9cLXN0cmlrZTsKK+OnqSA+IHRvXC1kaXNwZWw7Civvp6UgPiBkeXNlbnRlcnk7Civjp6YgPiB0b1wtc3RyaWtlOwor46eXID4gdG9cLWNsYXRjaDsKK+OnliA+IHRvXC1jbHV0Y2g7Civjp4wgPiB0b1wtc2VsZWN0Owor76eCID4gc21hcnR3ZWVkOwor76eBID4gYmVcLWhlYWxlZDsKK++muyA+IG9mZmljaWFsczsKK++muiA+IHRvXC1maW5pc2g7CivjprsgPiB0b1wtcHV0XC1vbjsKK++mtSA+IHByZWNlZGVudDsKK+OmtCA+IHRvXC1hcnJlc3Q7Civjpq8gPiBhXC1jZXJ0YWluOwor46aqID4gY29tcGxhaW50Owor46adID4gYmVhdXRpZnVsOwor46aWID4gcmVzZW50ZnVsOwor76aIID4gYmVhdXRpZnVsOwor76aFID4gd2hldHN0b25lOwor46W+ID4gbW9ydGlmaWVkOwor46WzID4gdG9cLXN1cnZleTsKK+OlriA+IG9ic3RpbmF0ZTsKK+OlpyA+IHRvXC1mb2xsb3c7CivjpaYgPiBzYXRpc2ZpZWQ7CivvpaIgPiBkaWZmZXJlbnQ7CivvpZcgPiB0aGluXC1zaWxrOwor46WWID4gcmVkXC1jb2xvcjsKK+OljiA+IHRvXC1yZXNlbnQ7CivjpYAgPiBleGNsdXNpdmU7CivjpLUgPiBjb3Bhc3Npb247CivvpLIgPiBmaXJlcGxhY2U7CivvpKwgPiBnZW50bGVtYW47CivjpKUgPiBzb3Jyb3dmdWw7CivvpJsgPiBjb25mdXNpb247CivjpJggPiBvYnN0aW5hdGU7CivjpJIgPiBrbm93bGVkZ2U7CivjpIsgPiBjb25mdXNpb247CivjpIcgPiB0ZXJyaWZpZWQ7CivjpIYgPiBuYXVzZWF0ZWQ7Civjo7wgPiB0b1wtZW5kdXJlOwor46O6ID4gdGhlXC1oZWFydDsKK+OjkCA+IHRvXC1jaGFuZ2U7CivjoqggPiB0b1wtZGVmZW5kOwor46KhID4gdG9cLWV4aG9ydDsKK+OigCA+IHNpZGVcLXJvb207Civjob8gPiB0b1wtYWNjdXNlOwor46G8ID4gYVwtZ3JhbmFyeTsKK+OhuiA+IGFcLWNvdHRhZ2U7CivjoaIgPiBhXC1jdXJ0YWluOwor46GgID4gYVwtcGljdHVyZTsKK+OhlyA+IHJlZFwtcGFwZXI7CivjoK4gPiB0b1wtZXhwYW5kOwor46CYID4gYW5cLWlzbGFuZDsKK+OetSA+IGZyaXZvbG91czsKK+OeoyA+IGZyYWdyYW5jZTsKK+OdjiA+IHRvXC1kZWNpZGU7CivjnLsgPiB0b1wtYWRtaXJlOwor45ywID4gZXhxdWlzaXRlOwor45yoID4gYmVhdXRpZnVsOwor45yeID4gYmVhdXRpZnVsOwor45yYID4gZGVsaWNhdGVkOwor45yWID4gZXhxdWlzaXRlOwor45yPID4gbGFzdFwtbmFtZTsKK+OciiA+IGV4cXVpc2l0ZTsKK+OchCA+IGxhc3RcLW5hbWU7Civjm74gPiBub3RcLWNsZWFuOwor45u6ID4gbm90XC1jbGVhbjsKK+ObsSA+IGV4cXVpc2l0ZTsKK+OblyA+IGZyaXZvbG91czsKK+OblCA+IGV4cXVpc2l0ZTsKK+OasCA+IGFuXC1lbWJyeW87Civjmq8gPiBsYXN0XC1uYW1lOwor45qbID4gY29ycHVsZW50Owor45qYID4gYVwtcGFydG5lcjsKK+OZtSA+IGFcLWxvb2tvdXQ7CivjmZwgPiBhXC1sb29rb3V0Owor45ijID4gY29tcGFzc2VzOwor45ezID4gZm9yZ2V0ZnVsOwor45ejID4gdG9cLXNuZWV6ZTsKK+OWvCA+IHRvXC1zY2hlbWU7CivjlqYgPiBsb3F1YWNpdHk7CivjloIgPiBsb3F1YWNpdHk7CivjlbsgPiB0b1wtcmVmdXNlOwor45W5ID4gYVwtYnVja2xlcjsKK+OVlyA+IHRvXC1pbmR1Y2U7CivjlZUgPiBkZWNlcHRpb247CivjlZEgPiBhXC1raXRjaGVuOwor45WPID4gYVwta2l0Y2hlbjsKK+OViyA+IHJvY2tcLWxhbmQ7CivjlYggPiB0b1wtbGluZ2VyOwor45S+ID4gbGFzdFwtbmFtZTsKK+OUpyA+IHRvXC1pbmNpdGU7Civjk68gPiB0b1wtZGl2aWRlOwor45OoID4gdG9cLXBpZXJjZTsKK+OTiyA+IHRvXC1mcmVlemU7Civjk4QgPiB0b1wtcGxvdWdoOwor45KXID4gYVwtc2VydmFudDsKK+OSkyA+IHRvXC1lc2NhcGU7CivjkosgPiBhXC1zZXJ2YW50Owor45KIID4gZGFuZ2Vyb3VzOwor45KCID4gdG9cLWJlc3RvdzsKK+ORryA+IGxhc3RcLW5hbWU7Civjka4gPiBsYXN0XC1uYW1lOwor45GnID4gcGVydHVyYmVkOwor45GZID4gZnJpdm9sb3VzOwor45GYID4gYVwtc2VydmFudDsKK+ORjiA+IGxhc3RcLW5hbWU7CivjkYQgPiB0b1wtaW5zdWx0Owor45CvID4gdG9cLWVtcGxveTsKK+OQrSA+IGFcLWdyYW5hcnk7CivjkKkgPiB3aW5lXC1jdXBzOwor45CGID4gdG9cLWZvbGxvdzsKK+W/tSA+IHRoaW5rXC1vZjsKK+S8miA+IGFzc2VtYmxlOwor5a2mID4gbGVhcm5pbmc7CivlvpIgPiBkaXNjaXBsZTsKK+edpiA+IGZyaWVuZGx5Owor5pegID4gbmVnYXRpdmU7CivmlrkgPiBhXC1zcXVhcmU7CivliY0gPiBpblwtZnJvbnQ7CivnnIkgPiBleWVicm93czsKK+ecgSA+IHByb3ZpbmNlOwor55u0ID4gc3RyYWlnaHQ7Civlu6IgPiBhYnJvZ2F0ZTsKK+ebmyA+IGFidW5kYW50Owor6LuSID4gY2FycmlhZ2U7CivlhaggPiBtYWludGFpbjsKK+W7iiA+IGNvcnJpZG9yOwor5buDID4gYWJyb2dhdGU7CivnmrogPiB3cmlua2xlczsKK+W6tyA+IHBlYWNlZnVsOwor6Ze0ID4gbWlkcG9pbnQ7CivouoogPiBoZXNpdGF0ZTsKK+i6hyA+IGhlc2l0YXRlOwor56ysID4gc2VxdWVuY2U7CivlubsgPiBpbGx1c2lvbjsKK+eZhyA+IGVwaWxlcHN5Owor5bGxID4gbW91bnRhaW47CivouJ8gPiBoZXNpdGF0ZTsKK+W3viA+IGtlcmNoaWVmOwor5benID4gc2tpbGxmdWw7CivlrokgPiBwZWFjZWZ1bDsKK+i3nSA+IGRpc3RhbmNlOwor55WMID4gYm91bmRhcnk7Civku7sgPiB0cnVzdFwtdG87Civlj7AgPiBwbGF0Zm9ybTsKK+ixoSA+IGVsZXBoYW50Owor6aKYID4gZm9yZWhlYWQ7Civos6IgPiB2aXJ0dW91czsKK+izhyA+IHByb3BlcnR5Owor6LK8ID4gcGFzdGVcLXRvOwor6LK7ID4gZXhwZW5zZXM7Civosp4gPiB2aXJ0dW91czsKK+i1hCA+IHByb3BlcnR5Owor5bGlID4gZm9vdHdlYXI7CivosZAgPiBhYnVuZGFudDsKK+ixiiA+IGFidW5kYW50Owor5q2mID4gbWlsaXRhcnk7CivnkLIgPiBuZWNrbGFjZTsKK+WwoCA+IHZlcnlcLWZldzsKK+WujCA+IGNvbXBsZXRlOwor5Y2zID4gcHJvbXB0bHk7Civlr7UgPiBmYXZvcml0ZTsKK+ivrSA+IGxhbmd1YWdlOwor54+NID4gcHJlY2lvdXM7Civlr4wgPiBhYnVuZGFudDsKK+WVhiA+IGNvbW1lcmNlOwor5a6dID4gdHJlYXN1cmU7CivljYMgPiB0aG91c2FuZDsKK+WunCA+IHN1aXRhYmxlOwor5a6YID4gb2ZmaWNpYWw7Civnq5kgPiBzdGFuZFwtdXA7CivlrbggPiBsZWFybmluZzsKK+itrCA+IG1ldGFwaG9yOwor6aaZID4gZnJhZ3JhbnQ7CivkvLwgPiByZXNlbWJsZTsKK+WsoiA+IHRyb3VibGVkOwor6Jm9ID4gYWx0aG91Z2g7Civpm4YgPiBhc3NlbWJsZTsKK+S4lCA+IG1vcmVvdmVyOwor6LCDID4gdHJhbnNmZXI7Civlq4kgPiBqZWFsb3VzeTsKK+eLgyA+IHRvXC1jb3ZldDsKK+WrgSA+IHRvXC1tYXJyeTsKK+iqvyA+IHRyYW5zZmVyOwor6KqeID4gbGFuZ3VhZ2U7CivlqpogPiBjaGFybWluZzsKK+iqmCA+IHBlcnN1YWRlOwor6LS5ID4gZXhwZW5zZXM7CivoqoQgPiBldWxvZ2l6ZTsKK+ipsyA+IGRldGFpbGVkOwor6KmwID4gcXVlc3Rpb247Civmg4ogPiBmcmlnaHRlbjsKK+aUryA+IGRpc3BlcnNlOwor56qBID4gc3VkZGVubHk7CivoqZUgPiBhcHByYWlzZTsKK+WooCA+IHByZWduYW50Owor5Y+lID4gc2VudGVuY2U7CivmmL4gPiBtYW5pZmVzdDsKK+WiniA+IGluY3JlYXNlOwor5paZID4gY29uc2lkZXI7CivokZcgPiBtYW5pZmVzdDsKK+WmiiA+IGNvbmNlaXZlOwor5aKDID4gYm91bmRhcnk7Civnu60gPiBjb250aW51ZTsKK+eEoSA+IG5lZ2F0aXZlOwor6KOVID4gYWJ1bmRhbnQ7Civngq0gPiBjaGFyY29hbDsKK+WbtCA+IHN1cnJvdW5kOwor5aKXID4gaW5jcmVhc2U7Civngb0gPiBjYWxhbWl0eTsKK+WhmiA+IGNlbWV0ZXJ5Owor5b+9ID4gc3VkZGVubHk7CivngJUgPiBhcHByb2FjaDsKK+e7tCA+IG1haW50YWluOwor5r+6ID4gc3ByaW5rbGU7Civmv68gPiB3YXNoXC1vdXQ7CivlnqMgPiBsb3dcLXdhbGw7CivkuaAgPiBwcmFjdGljZTsKK+WegiA+IGxldFwtZG93bjsKK+WdgiA+IGhpbGxzaWRlOwor56WWID4gYW5jZXN0b3I7Civor4QgPiBhcHByYWlzZTsKK+WcjSA+IHN1cnJvdW5kOwor57unID4gY29udGludWU7Civlm7IgPiBzdXJyb3VuZDsKK+S8mCA+IHN1cGVyaW9yOwor5ruvID4gYmxvY2tcLXVwOwor6ZmQID4gYm91bmRhcnk7CivmuqIgPiBvdmVyZmxvdzsKK+a4qSA+IGx1a2V3YXJtOwor6JqKID4gbW9zcXVpdG87CivpubggPiBhbGthbGluZTsKK+WZqiA+IGJlXC1ub2lzeTsKK+WYsiA+IHJpZGljdWxlOwor5ribID4gZGVjcmVhc2U7CivlmJQgPiB0b1wtdm9taXQ7CivmgakgPiBraW5kbmVzczsKK+iEsSA+IHRha2VcLW9mZjsKK+a2uCA+IGRyaWVkXC11cDsKK+WWqiA+IG1vdXJuaW5nOwor5aWUID4gcnVuXC1mYXN0Owor5raMID4gc3VyZ2VcLXVwOwor56aBID4gcmVzdHJpY3Q7Civmta4gPiB0b1wtZmxvYXQ7CivkupIgPiBtdXR1YWxseTsKK+a0kiA+IHNwcmlua2xlOwor5pCeID4gdG9cLWNsZWFyOwor5pyxID4gY2lubmFiYXI7Civln58gPiBkaXN0cmljdDsKK+adkCA+IG1hdGVyaWFsOwor6aKdID4gZm9yZWhlYWQ7CivlgbcgPiB0b1wtc3RlYWw7CivkuLkgPiBjaW5uYWJhcjsKK+iTiSA+IGhpYmlzY3VzOwor5oq9ID4gZHJhd1wtb3V0Owor5LuqID4gY2VyZW1vbnk7Civnu40gPiBjb250aW51ZTsKK+S4sCA+IGFidW5kYW50Owor5Y24ID4gbGF5XC1kb3duOwor5b+GID4gcmVtZW1iZXI7CivpmpQgPiBzZXBhcmF0ZTsKK+WHjyA+IGRlY3JlYXNlOwor5Y2TID4gcHJvZm91bmQ7Civngb4gPiBjYWxhbWl0eTsKK+iBmiA+IGFzc2VtYmxlOwor5o2fID4gZGltaW5pc2g7CivojIQgPiBlZ2dwbGFudDsKK+WLvyA+IG11c3RcLW5vdDsKK+mrrSA+IG11c3RhY2hlOwor6YGlID4gZmFyXC1hd2F5Owor5qubID4gY29tYlwtb3V0Owor5biBID4gY3VycmVuY3k7Civli4kgPiBlbmRlYXZvcjsKK+mquCA+IHNrZWxldG9uOwor6IqzID4gZnJhZ3JhbnQ7CivliqogPiB0b1wtZXhlcnQ7CivotLQgPiBwYXN0ZVwtdG87CivpqZogPiBmcmlnaHRlbjsKK+WIpSA+IHNlcGFyYXRlOwor6JCNID4gZHVja3dlZWQ7CivmqIUgPiBmaXJcLXRyZWU7CivnvKkgPiBjb250cmFjdDsKK+iHpSA+IGxpZVwtZG93bjsKK+aFlSA+IGxvbmdcLWZvcjsKK+iHoyA+IG1pbmlzdGVyOwor5oyhID4gb2JzdHJ1Y3Q7CivohpwgPiBtZW1icmFuZTsKK+ammyA+IGhhemVsbnV0Owor5L+KID4gdGFsZW50ZWQ7Civmnp0gPiBicmFuY2hlczsKK+mZtyA+IHN1Ym1lcmdlOwor5LinID4gbW91cm5pbmc7Civli5IgPiBzdHJhbmdsZTsKK+i6uiA+IGxpZVwtZG93bjsKK+WEqiA+IHN1cGVyaW9yOwor6IGKID4gc29tZXdoYXQ7Civpo74gPiBkZWNvcmF0ZTsKK+WEgCA+IGNlcmVtb255Owor5pacID4gc2xhbnRpbmc7CivmlpAgPiBncmFjZWZ1bDsKK+W6nyA+IGFicm9nYXRlOwor6K+mID4gZGV0YWlsZWQ7CivmkKwgPiB0cmFuc2ZlcjsKK+ainyA+IG93bFwtdGh1czsKK+WCmCA+IHVtYnJlbGxhOwor6aGvID4gbWFuaWZlc3Q7Civkuq0gPiBwYXZpbGlvbjsKK+mhlSA+IG1hbmlmZXN0Owor5rObID4gdG9cLWRyaWZ0Owor6aGNID4gZm9yZWhlYWQ7CivpoYwgPiBmb3JlaGVhZDsKK+espiA+IGlcLmRcLlwtdGFnOwor5YWBID4gdG9cLWdyYW50Owor6I+yID4gZnJhZ3JhbnQ7Civot6ggPiBzdHJhZGRsZTsKK+aOqSA+IHRvXC1jb3ZlcjsKK+mggyA+IGFcLW1vbWVudDsKK+manCA+IHNlcGFyYXRlOwor5p+0ID4gZmlyZXdvb2Q7Civkv68gPiBib3dcLWRvd247Civkv6UgPiByaWNrc2hhdzsKK+mCuyA+IG5laWdoYm9yOwor57+SID4gcHJhY3RpY2U7Civpqb4gPiB0b1wtZHJpdmU7Civkvq0gPiBjb21wbGV0ZTsKK+e+niA+IGRpc2dyYWNlOwor6KOkID4gdHJvdXNlcnM7CivkvLAgPiBtZXJjaGFudDsKK+memCA+IHNjYWJiYXJkOwor5YuDID4gc3VkZGVubHk7CivlkpAgPiBpbnN0cnVjdDsKK+aBkiA+IGNvbnN0YW50Owor57OfID4gc2VkaW1lbnQ7Civmia4gPiBkcmVzc1wtdXA7CivotKQgPiB2aXJ0dW91czsKK+mlsCA+IGRlY29yYXRlOwor5pucID4gZ2xvcmlvdXM7Civpm5YgPiBhbHRob3VnaDsKK+S7lSA+IG9mZmljaWFsOwor5Y2nID4gbGllXC1kb3duOwor5LuEID4gc2xhbnRpbmc7CivpmqMgPiBuZWlnaGJvcjsKK+eijSA+IG9ic3RydWN0Owor5pqiID4gc21vb3RobHk7Civmi6YgPiBvYnN0cnVjdDsKK+aKvCA+IG1vcnRnYWdlOwor5oiaID4gcmVsYXRpdmU7CivnuowgPiBjb250aW51ZTsKK+e5vCA+IGNvbnRpbnVlOwor56mGID4gbWFqZXN0aWM7CivnloYgPiBib3VuZGFyeTsKK+mZpSA+IHN1Ym1lcmdlOwor55qxID4gd3JpbmtsZXM7CivnlYUgPiBzbW9vdGhseTsKK+WYuyA+IG1pcnRoZnVsOwor57iuID4gY29udHJhY3Q7CivkuKYgPiBlcXVhbFwtdG87CivmmJQgPiBmb3JtZXJseTsKK+e3tCA+IHByYWN0aWNlOwor6ZeYID4gc3RydWdnbGU7CivnnqogPiBzdGFyZVwtYXQ7CivmlqUgPiB0b1wtc2NvbGQ7CivliaogPiBzY2lzc29yczsKK+WnmiA+IGhhbmRzb21lOwor5o6PID4gdGFrZVwtb3V0Owor57atID4gbWFpbnRhaW47Civor7EgPiBwZXJzdWFkZTsKK+e2miA+IGNvbnRpbnVlOwor57aZID4gY29udGludWU7CivplpMgPiBpbnRlcnZhbDsKK+e0uSA+IGNvbnRpbnVlOwor6IqZID4gaGliaXNjdXM7Civmg7kgPiBpcnJpdGF0ZTsKK+ewvyA+IHJlZ2lzdGVyOwor5pCNID4gZGltaW5pc2g7CivoircgPiBhbmdlbGljYTsKK+ejgSA+IG1hZ25ldGljOwor5q+FID4gcmVzb2x1dGU7CivnrKUgPiBhXC1oYW1wZXI7Civmi5ggPiByZXN0cmFpbjsKK+S8kCA+IGN1dFwtZG93bjsKK+eriiA+IHNlY3JldGx5Owor6YqYID4gaW5zY3JpYmU7CivmhIkgPiBwbGVhc2FudDsKK+eqnCA+IHJ1blwtYXdheTsKK+WvqCA+IHN0b2NrYWRlOwor5oi7ID4gcGVydmVyc2U7CivmsqogPiBzaGFuZ2hhaTsKK+mHnCA+IGNhdWxkcm9uOwor5ZekID4gbGF1Z2hcLWF0Owor5aixID4gcGxlYXN1cmU7Civlq6MgPiBjaGFybWluZzsKK+WuoCA+IGZhdm9yaXRlOwor5oa2ID4gcmVtZW1iZXI7Civpk60gPiBpbnNjcmliZTsKK+mmqCA+IGZyYWdyYW50Owor5riKID4gc3VyZ2VcLXVwOwor56aEID4gYmxlc3Npbmc7CivnqoMgPiBzZWNyZXRseTsKK+mhtyA+IGFcLW1vbWVudDsKK+ekmSA+IG9ic3RydWN0Owor5oSVID4gc3RhcnRsZWQ7CivllaEgPiBtb3JwaGluZTsKK+i0niA+IHZpcnR1b3VzOwor5ZuaID4gcHJpc29uZXI7CivotKYgPiBhY2NvdW50czsKK+mBmSA+IGZhclwtYXdheTsKK+WWuyA+IG1ldGFwaG9yOwor55O3ID4gY3JvY2tlcnk7Civok6YgPiBzdWRkZW5seTsKK+a7niA+IGJsb2NrXC11cDsKK+i0rCA+IGRlY3JlYXNlOwor5LyeID4gdW1icmVsbGE7CivohaUgPiByYXdcLW1lYXQ7Civmu5QgPiBvdmVyZmxvdzsKK+a6hSA+IHNwcmlua2xlOwor5ZK4ID4gdG9nZXRoZXI7CivnlqsgPiBlcGlkZW1pYzsKK+WVqiA+IHN5bGxhYmxlOwor5rKbID4gYWJ1bmRhbnQ7CivohqggPiB0b1wtc3dlbGw7CivlkLEgPiBjaGlycGluZzsKK+i9qSA+IGNhcnJpYWdlOwor6K6lID4gcmlkaWN1bGU7Civoj4wgPiBtdXNocm9vbTsKK+ihjSA+IG92ZXJmbG93Owor5LqoID4gc21vb3RobHk7CivnkJAgPiB0cmlmbGluZzsKK+e7sCA+IGdyYWNlZnVsOwor6IufID4gY2FyZWxlc3M7CivltJsgPiB0b3dlcmluZzsKK+WHuCA+IHByb3RydWRlOwor5ZqjID4gYmVcLW5vaXN5Owor55CbID4gdHJlYXN1cmU7CivlmIAgPiBiYWNrYml0ZTsKK+mTkCA+IHNoYWNrbGVzOwor6LiMID4gaGVzaXRhdGU7CivosJUgPiBwcm9jbGFpbTsKK+i/uCA+IGd1c2hcLW91dDsKK+WJlCA+IHBpY2tcLW91dDsKK+WGgCA+IGhvcGVcLWZvcjsKK+egmiA+IGlua3N0b25lOwor5o2NID4gd2FyZFwtb2ZmOwor6IeAID4gYnV0dG9ja3M7CivlgJQgPiBzdHViYm9ybjsKK+WlhCA+IGVyZVwtbG9uZzsKK+S+pSA+IGJlXC1sdWNreTsKK+aitSA+IGJ1ZGRoaXN0Owor6KSlID4gbWF0dHJlc3M7CivmmZYgPiBzdW5zaGluZTsKK+a8viA+IG92ZXJmbG93Owor55W0ID4gZmFybWxhbmQ7Civnnp8gPiBnbGFyZVwtYXQ7CivnmLggPiBsYW1lbmVzczsKK+a+jiA+IHNwbGF0dGVyOwor5r2mID4gdG9cLWZsb29kOwor5r+SID4gYXBwcm9hY2g7CivlgY4gPiBjbGluZ1wtdG87CivonY4gPiBzY29ycGlvbjsKK+ewuCA+IHdpbm5vd2VyOwor55ifID4gZXBpZGVtaWM7CivlurYgPiBudW1lcm91czsKK+aDpiA+IHRoaW5rXC1vZjsKK+aSgiA+IHB1dFwtZG93bjsKK+ivmCA+IHF1ZXN0aW9uOwor5pmXID4gcHJlXC1kYXduOwor6LmKID4gZm9vdHBhdGg7CivnorEgPiBhbGthbGluZTsKK+mYiSA+IGNhc3RyYXRlOwor5reGID4gY29uZnVzZWQ7CivokKYgPiBlbnRhbmdsZTsKK+amhiA+IGVsbVwtdHJlZTsKK+eMnSA+IGFicnVwdGx5Owor6LWTID4gY29udGludWU7Civmnq0gPiBvd2xcLXRodXM7Civmm6YgPiBzdW5saWdodDsKK+mSiiA+IGVuZGVhdm9yOwor5pKFID4gcHJvdHJ1ZGU7CivmuKQgPiBzd2VsbGluZzsKK+i+mCA+IHdpbmRsYXNzOwor6ZOdID4gYWx1bWludW07CivmjYsgPiB0b1wtcGx1Y2s7Civnn5cgPiBzdHJhaWdodDsKK+iZuyA+IGhvcnNlZmx5Owor556MID4gZG96ZVwtb2ZmOwor5LqfID4gdXJnZW50bHk7CivmkKogPiB3YXJkXC1vZmY7CivlvqggPiBkb3VidGZ1bDsKK+WVkCA+IHRvXC10YXN0ZTsKK+mVryA+IGJyYWNlbGV0Owor5Yi9ID4gYW1wdXRhdGU7Civol7sgPiBzcGxlbmRpZDsKK+aDsCA+IGluZG9sZW50Owor54eUID4gdG9cLXJvYXN0Owor5radID4gaW51bmRhdGU7CivlgZUgPiB0b2dldGhlcjsKK+mqtyA+IHNrZWxldG9uOwor57ubID4gZGVlcFwtcmVkOwor57SKID4gY29uZnVzZWQ7CivpgoMgPiBwcm9mb3VuZDsKK+awryA+IGNobG9yaW5lOwor5Z2NID4gY29sbGFwc2U7CivlpqkgPiBjaGFybWluZzsKK+WYrSA+IHN5bGxhYmxlOwor5b+QID4gdGltb3JvdXM7CivmrqEgPiBlbmNvZmZpbjsKK+aYtSA+IGludGltYXRlOwor57qtID4gY29uZnVzZWQ7Civkv58gPiB3YWl0XC1mb3I7CivmoaIgPiBoYXJkd29vZDsKK+m7jyA+IHN0aWNrXC10bzsKK+aZjyA+IHBlYWNlZnVsOwor6Zq9ID4gc3VwZXJpb3I7CivnprogPiBkaXN0cmljdDsKK+eXmCA+IHNtYWxscG94Owor5qefID4gYmV0ZWxudXQ7Civpn60gPiBzY2FsbGlvbjsKK+aIviA+IHBlcnZlcnNlOwor6JSrID4gd2l0aGVyZWQ7CivohoIgPiBiYWNrYm9uZTsKK+WeoCA+IGJvdW5kYXJ5Owor6ZWsID4gY2F1bGRyb247Civog6sgPiBzaGluYm9uZTsKK+WTkCA+IHN5bGxhYmxlOwor56G3ID4gYWxrYWxpbmU7Civoh4MgPiBzd2VsbFwtdXA7CivlsowgPiBwZXJpbG91czsKK+eKnyA+IHN0dWJib3JuOwor546OID4gamluZ2xpbmc7CivpgaIgPiBjYXJlbGVzczsKK+WZlCA+IHN5bGxhYmxlOwor5ruTID4gc2VkaW1lbnQ7CivpmrwgPiBhcXVpbGluZTsKK+e/piA+IHNjaXNzb3JzOwor6ZmyID4gZnJvbnRpZXI7CivosLYgPiBwcm9waGVjeTsKK+WBuyA+IGh1bXBiYWNrOwor6ZOCID4gcGxhdGludW07CivnupsgPiBhXC1iYW5uZXI7Civmh78gPiB2aXJ0dW91czsKK+mTrCA+IGNocm9taXVtOwor5aiGID4gZ3JhY2VmdWw7CivmhbUgPiBpbmRvbGVudDsKK+iDsCA+IHBhbmNyZWFzOwor6KaDID4gcmVhY2hcLXRvOwor6YG9ID4gc3VkZGVubHk7Civnnb4gPiB0ZXN0aWNsZTsKK+e8nCA+IGRldGFpbGVkOwor5YCoID4gYXJyb2dhbnQ7CivorqMgPiBvYml0dWFyeTsKK+mSmyA+IHRpdGFuaXVtOwor5rWDID4gc2F0dXJhdGU7Civml5YgPiByb21hbnRpYzsKK+e8mSA+IHJlZFwtc2lsazsKK+WYoyA+IHN5bGxhYmxlOwor5oeLID4gc3BsZW5kaWQ7Civoob4gPiBjb3ZlcmxldDsKK+WuuCA+IGltcGVyaWFsOwor5L2eID4gZmxhdHRlcnk7Civom5QgPiB0YXBld29ybTsKK+elnCA+IGJsZXNzaW5nOwor5rCFID4gb3ZlcmNvYXQ7CivmsJ8gPiBmbHVvcmluZTsKK+awsCA+IGN5YW5vZ2VuOwor6bKfID4gc3R1cmdlb247CivlqZUgPiBoYW5kc29tZTsKK+ehkiA+IHNlbGVuaXVtOwor6IioID4gYVwtc2FtcGFuOwor54OKID4gdG9cLXNtZWx0Owor6JCxID4gZGF5XC1saWx5Owor55a4ID4gamF1bmRpY2U7Civpk4ogPiB0aGFsbGl1bTsKK+ivgiA+IGV4ZWdlc2lzOwor6ZuJID4gcGhlYXNhbnQ7CivpoqIgPiBsdW1pbm91czsKK+mSjyA+IGJyYWNlbGV0Owor5qCAID4gZ2FyZGVuaWE7Civnu5QgPiB0cm91c2VyczsKK+e8tSA+IGNvbnRpbnVlOwor5rqYID4gYWJydXB0bHk7Civor5IgPiBiZXF1ZWF0aDsKK+awpiA+IGZsdW9yaW5lOwor6aKfID4gZGF3ZGxpbmc7Civnl6sgPiBlcGlsZXBzeTsKK+iLiyA+IGFtYXJhbnRoOwor54CjID4gc2VhXC1taXN0Owor566dID4gdHdlZXplcnM7CivoubAgPiBoZXNpdGF0ZTsKK+i1gCA+IHByb3BlcnR5Owor5qWuID4gbXVsYmVycnk7CivplYogPiB0d2VlemVyczsKK+mBhCA+IHRvXC1odXJyeTsKK+mSkiA+IHZhbmFkaXVtOwor6Iu3ID4gbGljb3JpY2U7Civli7AgPiBwZWFjZWZ1bDsKK+awvSA+IHRvXC1mbG9hdDsKK+mSqCA+IHR1bmdzdGVuOwor5oSmID4gY29uZnVzZWQ7Civln7ggPiBhXC1ib3JkZXI7Civpq4AgPiBidXR0b2NrczsKK+WrkiA+IGRhdWdodGVyOwor5LybID4gaHVtcGJhY2s7CivnmZwgPiBlcnl0aGVtYTsKK+egpiA+IHN0b2NrYWRlOwor6bi5ID4gdGhlXC1jcm93Owor5pubID4gdHdpbGlnaHQ7Civmp78gPiBoaWJpc2N1czsKK+mqmCA+IHN0YWxsaW9uOwor5bqRID4gY29ycmlkb3I7CivlnbsgPiBhblwtaXNsZXQ7Civop6sgPiB0b1wtc3RhcnQ7Civpk7UgPiBhbW1vbml1bTsKK+awqSA+IGFyZ29uaXVtOwor5ayWID4gZmF2b3JpdGU7CivljaMgPiB3aW5lXC1wb3Q7CivplJEgPiBhbnRpbW9ueTsKK+mGmyA+IGFsZGVoeWRlOwor6ZK9ID4gdGFudGFsdW07CivnoLwgPiBjb25jcmV0ZTsKK+eGmCA+IHRvXC1zdGVhbTsKK+iTgSA+IGFidW5kYW50Owor6K+UID4gZXVsb2dpemU7CivnqqggPiBhXC1jZWxsYXI7CivmoLIgPiBtYW5ncm92ZTsKK+S7syA+IHNlcGFyYXRlOwor6bKjID4gc2tpcGphY2s7CivnmL8gPiBzd2VsbGluZzsKK+mTtyA+IHJ1YmlkaXVtOwor6ZOVID4gZXVyb3BpdW07CivpkosgPiBwb2xvbml1bTsKK+egkSA+IHRvXC1ncmluZDsKK+aeniA+IGZpclwtdHJlZTsKK+a0qyA+IHRvXC1kaXRjaDsKK+aPniA+IHRvXC1jb3ZlcjsKK+WfmiA+IGNydWNpYmxlOwor5Z6kID4gYW50XC1oaWxsOwor5Y26ID4gd2luZWN1cHM7CivlmI8gPiBmZWxpY2l0eTsKK+myvSA+IGZsYXRmaXNoOwor6bKtID4gbWFja2VyZWw7CivpkqogPiBzY2FuZGl1bTsKK+mSqyA+IGZyYW5jaXVtOwor6ZKQID4gc2FtYXJpdW07CivnpZMgPiBleG9yY2lzZTsKK+agsyA+IGFcLWJhc2tldDsKK+W+vCA+IGZyb250aWVyOwor5ZCyID4gc21pbGVcLWF0Owor6I6wID4gY2FtcGhhbmU7CivoirQgPiBmbHVvcmVuZTsKK+S7nSA+IHRvZ2V0aGVyOwor6LWcID4gYWJzdHJ1c2U7CivpvpMgPiBhXC1oYWx0ZXI7CivpvJogPiBkcnVtbWluZzsKK+m6riA+IHBvcnJpZGdlOwor6bm8ID4gYWxrYWxpbmU7Civpt6kgPiBwaGVhc2FudDsKK+m3iiA+IHBoZWFzYW50Owor6bWrID4gcGhlYXNhbnQ7CivptZkgPiBhXC1zaHJpa2U7CivptLAgPiB0aGVcLWNyb3c7Civps64gPiBjaGlja2VuczsKK+mzhyA+IHN0dXJnZW9uOwor6bK6ID4gY2F0XC1maXNoOwor6bGjID4gc3R1cmdlb247CivpsZggPiBzdHVyZ2VvbjsKK+mwuSA+IHNraXBqYWNrOwor6bCJID4gc3R1cmdlb247CivpsIggPiBmbGF0ZmlzaDsKK+mvuiA+IGJsb3dmaXNoOwor6a+4ID4gYmxvd2Zpc2g7Civpr5YgPiBtYWNrZXJlbDsKK+mukCA+IGJsb3dmaXNoOwor6a2oID4gYmxvd2Zpc2g7CivprK0gPiBzdHJ1Z2dsZTsKK+msrCA+IHN0cnVnZ2xlOwor6ayqID4gc3RydWdnbGU7CivprKYgPiBzdHJ1Z2dsZTsKK+mspSA+IHN0cnVnZ2xlOwor6ayLID4gZm9yZWxvY2s7CivprIAgPiB0b1wtc2hhdmU7Civpq7UgPiB3aGlza2VyczsKK+mrjiA+IGhpcFwtYm9uZTsKK+mpgCA+IHN1ZGRlbmx5Owor6aitID4gc3RhbGxpb247Civpp74gPiBydW5cLWF3YXk7Civpp6YgPiB0b1wtbW91bnQ7Civpp5UgPiB0b1wtZHJpdmU7CivppqkgPiBhcm9tYXRpYzsKK+mmnyA+IGZyYWdyYW50Owor6aaaID4gYXJvbWF0aWM7CivppKwgPiBwb3JyaWRnZTsKK+mkqyA+IGR1bXBsaW5nOwor6aSpID4gaGljY291Z2g7CivppJ8gPiBsaWJhdGlvbjsKK+mkmSA+IHRvXC1hZG9ybjsKK+misSA+IHRhaXBob29uOwor6aGlID4gbHVtaW5vdXM7CivpoaIgPiBkYXdkbGluZzsKK+mgsiA+IHN0cmFpZ2h0Owor6Z+uID4gc2NhbGxpb247Civpn6EgPiBnb3JnZW91czsKK+mfoCA+IGtuZWVcLXBhZDsKK+mduiA+IHN0b2NraW5nOwor6ZyoID4gY2xvdWRpbmc7Civpm54gPiBjaGlja2VuczsKK+mbiyA+IHN1cGVyaW9yOwor6ZqyID4gc3RhbGxpb247CivpmqkgPiBwcm9mb3VuZDsKK+mYuCA+IGRpc3RyZXNzOwor6Za5ID4gY2FzdHJhdGU7CivplpIgPiBwZWFjZWZ1bDsKK+mVpSA+IGx1dGV0aXVtOwor6ZG3ID4gdHdlZXplcnM7CivpkaUgPiBsdXRldGl1bTsKK+mRlSA+IHR1bmdzdGVuOwor6ZGKID4gY2F1bGRyb247CivpkLIgPiBicmFjZWxldDsKK+mQhyA+IHZhbmFkaXVtOwor6Y6iID4gdHVuZ3N0ZW47CivpjokgPiB0aGFsbGl1bTsKK+mNqSA+IG5vYmVsaXVtOwor6Y2aID4gZnJvbnRsZXQ7CivpjJIgPiBhY3Rpbml1bTsKK+mLgSA+IGFsdW1pbnVtOwor6YqsID4gc2hhY2tsZXM7CivpiqogPiBldXJvcGl1bTsKK+mKqCA+IGFtbW9uaXVtOwor6YqjID4gcnViaWRpdW07Civpio0gPiBhXC1zaWNrbGU7CivpibsgPiBjaHJvbWl1bTsKK+mJrSA+IHRhbnRhbHVtOwor6YmRID4gcGxhdGludW07CivpiYggPiB0aGFsbGl1bTsKK+mJhiA+IHRyZWFzdXJlOwor6YiqID4gYnJhY2VsZXQ7CivpiKcgPiBzY2FuZGl1bTsKK+mIpiA+IHRpdGFuaXVtOwor6YiBID4gZnJhbmNpdW07Civph6kgPiB2YW5hZGl1bTsKK+mHpyA+IGJyYWNlbGV0Owor6YekID4gc2FtYXJpdW07Civph6EgPiBjYXVsZHJvbjsKK+mHmSA+IHBvbG9uaXVtOwor6YeXID4gZW5kZWF2b3I7CivphqkgPiBzZWRpbWVudDsKK+mGhiA+IHdpbmVcLWN1cDsKK+mGgyA+IG1hcmluYXRlOwor6YWyID4gaGFuZ292ZXI7CivphLAgPiBuZWlnaGJvcjsKK+mEiCA+IHNsaXBwZXJzOwor6YKFID4gaGVzaXRhbnQ7Civov7sgPiB0b1wtc2hpZnQ7CivovYogPiBheGxlXC10aXA7CivovYYgPiB3aW5kbGFzczsKK+i8rSA+IGZsZXhpYmxlOwor6LysID4gYVwtaGVhcnNlOwor6LudID4gYXhsZVwtdGlwOwor6LqtID4gdG9cLWRlbGF5Owor6LqVID4gaGVzaXRhdGU7Civoub4gPiB0b1wtc3F1YXQ7CivouacgPiB0b1wtc3BvaWw7CivouKYgPiB0aGVcLXNoaW47Civot4UgPiBjYXJlbGVzczsKK+i3giA+IGNyZWVwaW5nOwor6LWsID4gZGVlcFwtcmVkOwor6LSSID4gdmlydHVvdXM7Civos74gPiBhYnN0cnVzZTsKK+izrCA+IGFjY291bnRzOwor6LOhID4gY29udGludWU7CivosrYgPiBkZWNyZWFzZTsKK+iysiA+IHByb3BlcnR5Owor6LGOID4gdmVydGljYWw7CivorpYgPiBwcm9waGVjeTsKK+ituSA+IHRvXC1zaG91dDsKK+itnCA+IHJlZ2lzdGVyOwor6K2UID4gZXVsb2dpemU7CivorY8gPiByaWRpY3VsZTsKK+isvyA+IHJpZGljdWxlOwor6Ky8ID4gdG9cLXNob3V0Owor6KutID4gcHJvY2xhaW07Civoq4YgPiB0b1wtY2hlYXQ7CivoqZIgPiBiZXF1ZWF0aDsKK+ipiyA+IHRvXC1jdXJzZTsKK+ipiiA+IHBsZWFzaW5nOwor6KmBID4gZXhlZ2VzaXM7CivoqIMgPiBvYml0dWFyeTsKK+iltiA+IGlnbm9yYW50Owor6KWrID4gcmFpbmNvYXQ7CivopY8gPiByYWluY29hdDsKK+iksiA+IHRyb3VzZXJzOwor6KSMID4gdHJvdXNlcnM7Civoo68gPiBjb3ZlcmxldDsKK+igjSA+IHNjb3JwaW9uOwor6J2xID4gaG9yc2VmbHk7CivonZ8gPiBoZWRnZWhvZzsKK+idjyA+IFwoaW5zZWN0XCk7CivonLEgPiBcKGluc2VjdFwpOwor6JyWID4gdGFwZXdvcm07CivomrMgPiBhbnRcLWVnZ3M7CivompggPiB0YXBld29ybTsKK+ialCA+IGFudFwtZWdnczsKK+iWuCA+IGR1Y2t3ZWVkOwor6JaGID4gdG9cLWNvdmVyOwor6JWjID4gaGliaXNjdXM7CivolIkgPiBlYXJ0aFwtdXA7CivokZYgPiBmb2xsaWNsZTsKK+iLkCA+IHNlcXVlbmNlOwor6ImpID4gdGhvbGVwaW47CivoiYwgPiB0b1wtY2F1bGs7CivohrUgPiBwYW5jcmVhczsKK+iEsCA+IHRoZVwtbmVjazsKK+iEqyA+IHRha2VcLW9mZjsKK+iEmyA+IHNoaW5ib25lOwor6IOuID4gdG9cLXN3ZWxsOwor6IKoID4gdG9cLXN3ZWxsOwor6IKPID4gY29wdWxhdGU7CivogI8gPiB3aGlza2VyczsKK+e/rCA+IHBoZWFzYW50Owor57+rID4gY2FyZWxlc3M7CivnvYcgPiBhXC1nb2JsZXQ7CivnvLcgPiBsYXlcLWRvd247CivnupggPiBjb250aW51ZTsKK+e5liA+IHVtYnJlbGxhOwor57i/ID4gc3RyZWFtZXI7CivnuLQgPiB0b3dcLWxpbmU7CivnuJ0gPiBkZXRhaWxlZDsKK+e4iSA+IHJlZFwtc2lsazsKK+e4iCA+IGVudGFuZ2xlOwor57e7ID4gZGVsaWNhdGU7Civntr0gPiBncmFjZWZ1bDsKK+e2ryA+IHRvXC1icmFpZDsKK+e2qiA+IGRhcmtcLXJlZDsKK+e1uyA+IG1vdXJuaW5nOwor57WzID4gZGVlcFwtcmVkOwor57WdID4gdHJvdXNlcnM7CivntJ4gPiBhXC1mcmluZ2U7CivntJwgPiBjb25mdXNlZDsKK+exoyA+IGJvd1wtY2FzZTsKK+ewrCA+IFwoYmFtYm9vXCk7CivnroIgPiBcKGJhbWJvb1wpOwor56uiID4gd2FpdFwtZm9yOwor56uEID4gcnVuXC1hd2F5Owor56ePID4gdG9cLXdhc3RlOwor56W/ID4gYmxlc3Npbmc7CivnpbwgPiBsaWJhdGlvbjsKK+ejnyA+IG1lZGlvY3JlOwor56KPID4gY29sb3VyZWQ7Civnoa8gPiBpbmtzdG9uZTsKK+eguSA+IGFzdGF0aW5lOwor56C1ID4gc3lsbGFibGU7Civnn4sgPiB0b1wtc3RhcmU7CivnnpMgPiB0b1wtc2xlZXA7CivnnY8gPiBiZVwtdGlyZWQ7CivnnYUgPiBiaWdcLWV5ZWQ7Civnm6wgPiBzYWx0XC1waXQ7Civnm5kgPiBhXC1iYXNrZXQ7Civnmp0gPiBsdW1pbm91czsKK+eZrSA+IHN3ZWxsaW5nOwor55mSID4gZ2V0XC13ZWxsOwor55mOID4gZXBpbGVwc3k7CivnmYggPiBhYnJvZ2F0ZTsKK+eZgyA+IHdlYWtuZXNzOwor55mAID4gamF1bmRpY2U7CivnmLwgPiBzaWNrbmVzczsKK+eYtiA+IHRvXC1jb3VnaDsKK+eYsCA+IHNjcm9mdWxhOwor55iJID4gZ2V0XC13ZWxsOwor55aHID4gZmFybWxhbmQ7CivnlbogPiBib3VuZGFyeTsKK+eUryA+IHBlYWNlZnVsOwor55ShID4gYWJ1bmRhbnQ7Civnk6kgPiBraWxvd2F0dDsKK+eTpyA+IGRlY2FncmFtOwor55KaID4gc3BsZW5kaWQ7CivnkKsgPiBvcm5hbWVudDsKK+ePtyA+IFwvMlwtcHJcLXN0Owor54+kID4gdHJlYXN1cmU7Civnj44gPiBwcmVjaW91czsKK+ePjCA+IG9ybmFtZW50Owor542YID4gY29sbGFwc2U7CivnirUgPiByZXNvbHV0ZTsKK+eKqyA+IHByb3RydWRlOwor54qOID4gdGhlXC16ZWJ1Owor54qHID4gcnVuXC1mYXN0Owor54mzID4gXChib3ZpbmVcKTsKK+eGpCA+IFwocGVyc29uXCk7CivnhZAgPiBcKHBlcnNvblwpOwor54SMID4gdG9cLWxpZ2h0Owor54KkID4gaWxsdW1pbmU7CivngZEgPiBzcHJpbmtsZTsKK+eAsCA+IG92ZXJmbG93Owor54ChID4gc2xpcHBlcnk7Civmvr4gPiBzbGlwcGVyeTsKK+a+sSA+IHNlZGltZW50Owor5r6HID4gaW51bmRhdGU7CivmvZcgPiBmcmllbmRseTsKK+a9jiA+IHJpcHBsaW5nOwor5rusID4gc2hhbmdoYWk7Civmu4MgPiBzd2VsbGluZzsKK+a6qyA+IGx1a2V3YXJtOwor5rmiID4gYmF0aHJvb207CivmuJUgPiBzdXJnZVwtdXA7CivmtbkgPiBzYXR1cmF0ZTsKK+azkCA+IHRvXC13cml0ZTsKK+ayjSA+IGZyZWV6aW5nOwor5rC+ID4gb3ZlcmZsb3c7CivmsKwgPiBhcmdvbml1bTsKK+awiSA+IHJlc3RsZXNzOwor5q++ID4gYVwtY29hcnNlOwor5q+7ID4gdG9cLW1vdWx0Owor5q+3ID4gcmVzdGxlc3M7Civmrr0gPiBtaXhlZFwtdXA7Civmrq8gPiBlbmNvZmZpbjsKK+aulyA+IHNpY2tuZXNzOwor5qybID4gYVwtaGFuZGxlOwor5quDID4gY3VwYm9hcmQ7Civmqr8gPiBtdWxiZXJyeTsKK+aqsyA+IGJldGVsbnV0Owor5qiaID4gYVwtcHVsbGV5Owor5qWoID4gaGFyZHdvb2Q7CivmpaEgPiBlbG1cLXRyZWU7CivmpIQgPiB0b1wtZ3JhZnQ7CivmorEgPiBkb29yc2lsbDsKK+ailCA+IGdhcmRlbmlhOwor5p+kID4gaGF3dGhvcm47Civmn4UgPiBmbG91cmlzaDsKK+aeuyA+IGxvbmdcLW9hcjsKK+abhiA+IGNhbGVuZGFyOwor5pqxID4gaW50aW1hdGU7CivmmqYgPiBjYWxlbmRhcjsKK+aaoCA+IGRheWJyZWFrOwor5pqJID4gc3Vuc2hpbmU7CivmmacgPiBkYXlicmVhazsKK+aZmyA+IHN1bmxpZ2h0Owor5pikID4gc3Vuc2hpbmU7CivmmKEgPiBsb25nXC1kYXk7Civml5ggPiBhXC1wZW5ub247Civmlr4gPiBhXC1wZW5ub247CivmloggPiBsZWFybmluZzsKK+aVqiA+IHRvXC13ZWlnaDsKK+aVoCA+IHRvXC13ZWlnaDsKK+aUqSA+IG9ic3RydWN0Owor5pSeID4gdG9cLXNwbGl0Owor5pSUID4gb2JzdHJ1Y3Q7Civmk6kgPiB0b1wtc3RhaW47Civmk4sgPiBvYnN0cnVjdDsKK+aSjyA+IHB1bGxcLW91dDsKK+aRtyA+IHRvXC1rbm9jazsKK+aQtSA+IHdpcGVcLW9mZjsKK+aQsiA+IHRvXC1zZWl6ZTsKK+aQryA+IHRha2VcLW91dDsKK+aQiyA+IHRvXC10aHVtcDsKK+aPviA+IHdpcGVcLW9mZjsKK+aPsCA+IHBva2VcLW91dDsKK+aPoiA+IHRvXC1zZWl6ZTsKK+aPnCA+IGNvdmVyXC11cDsKK+aPjCA+IHRvXC1zaGFrZTsKK+aOuSA+IHRvXC1wbHVjazsKK+aNpiA+IHRvXC1zZWl6ZTsKK+aLkSA+IHRvXC1jbGFtcDsKK+aJniA+IHdhcmRcLW9mZjsKK+aJhSA+IGdhdGVcLWJhcjsKK+aHlSA+IHNhdGlhdGVkOwor5oaqID4gY29tcG9zZWQ7CivmhpYgPiBjYXV0aW91czsKK+aGkiA+IGNvbmZ1c2VkOwor5oWtID4gY2F1dGlvdXM7CivmhasgPiB0b1wtYWxhcm07CivmhYUgPiBhZ2l0YXRlZDsKK+aFgSA+IGRpc2hvbm9yOwor5oO9ID4gY29uZnVzZWQ7Civmg7ggPiB0cm91YmxlZDsKK+aDmyA+IGNvbmZ1c2VkOwor5oOUID4gY2hlZXJmdWw7Civmg4QgPiBsb25nXC1mb3I7CivmgqQgPiBhZ2l0YXRlZDsKK+aBnSA+IGNhcmVmcmVlOwor5oGUID4gY2hlZXJmdWw7CivmgYwgPiB0b1wtd29ycnk7CivmgYYgPiBjb25zdGFudDsKK+W/riA+IHN0dWJib3JuOwor5b6vID4gd2FpdFwtZm9yOwor5b24ID4gcmVzdGxlc3M7CivlvYogPiBzdHViYm9ybjsKK+W8oiA+IGJvd1wtY2FzZTsKK+W7pCA+IHRvXC1wbGFjZTsKK+W7oSA+IGNvcnJpZG9yOwor5bq7ID4gbnVtZXJvdXM7CivluqwgPiBhYnVuZGFudDsKK+W5rCA+IGNvdmVyXC11cDsKK+W5oyA+IGN1cnJlbmN5Owor5bi1ID4gcmVtbmFudHM7CivluLEgPiBjb3ZlclwtdXA7Civltq0gPiBlbGV2YXRlZDsKK+W2kiA+IHRvd2VyaW5nOwor5bO/ID4gbW91bnRhaW47CivlsoogPiBmb290aGlsbDsKK+WxvCA+IG1vdW50YWluOwor5a+2ID4gdHJlYXN1cmU7Civlr7MgPiB0cmVhc3VyZTsKK+WvmiA+IHByZWNpb3VzOwor5a6sID4gYXJjaGl2ZXM7CivlrYMgPiB0cm91YmxlZDsKK+WsrCA+IG1pc3RyZXNzOwor5ayhID4gZGF1Z2h0ZXI7CivlrJ0gPiBkZWxpY2F0ZTsKK+WsiCA+IGdyYWNlZnVsOwor5au/ID4gdHJhbnF1aWw7Civlq7UgPiBjaGFybWluZzsKK+WqriA+IGhhbmRzb21lOwor5am+ID4gaGFuZHNvbWU7CivlqK8gPiBwbGVhc3VyZTsKK+WomyA+IHBsZWFzdXJlOwor5aemID4gYWR1bHRlcnk7Civlp5kgPiBjb25jZWl2ZTsKK+WloSA+IGFycm9nYW50Owor5aCdID4gY3J1Y2libGU7Civln7wgPiBoZWFkbGFuZDsKK+WfgCA+IGxldFwtZG93bjsKK+WdriA+IHBsYXRmb3JtOwor5ZylID4gbXVzaHJvb207Civlm64gPiBpbnZlaWdsZTsKK+WbgiA+IGJlXC1ub2lzeTsKK+WauyA+IGJlXC1ub2lzeTsKK+WYpSA+IHRvXC13YXN0ZTsKK+WXgyA+IHRvXC1mbHV0ZTsKK+WWqSA+IG1ldGFwaG9yOwor5ZaTID4gY2hpcnBpbmc7CivllowgPiBzeWxsYWJsZTsKK+WVvSA+IHRvXC1zcGVhazsKK+WVhyA+IHRvXC1zdGFsazsKK+WUpSA+IGFcLWJ1bmRsZTsKK+WToiA+IHN5bGxhYmxlOwor5ZK6ID4gbWFqZXN0aWM7CivlkpwgPiB0b1wtc2NvbGQ7CivlkocgPiBmcmFncmFudDsKK+WRoCA+IHRvXC1zcHVydDsKK+WPkiA+IG9iZWRpZW50Owor5Y61ID4gYVwtc3ByaW5nOwor5Y29ID4gcHJvbXB0bHk7CivljbwgPiB1bnN0ZWFkeTsKK+WNuSA+IHN5bXBhdGh5Owor5YuUID4gZW5kZWF2b3I7Civli4wgPiB0b1wtbGFib3I7CivlirsgPiBmbHVycmllZDsKK+WKmSA+IGFcLWRpdmlkZTsKK+WKiiA+IGFtcHV0YXRlOwor5YmfID4gdG9cLXByaWNrOwor5YinID4gZGlzYXN0ZXI7Civlh6UgPiB0b1wtZHdlbGw7Civlh4UgPiBkcmllZFwtdXA7CivlhrQgPiBmcmVlemluZzsKK+WGsSA+IGZyZWV6aW5nOwor5YaoID4gYWJ1bmRhbnQ7Civlhp0gPiBzdWl0YWJsZTsKK+WGhyA+IGhhdmVcLW5vdDsKK+WFoyA+IGRlY2lncmFtOwor5YWbID4ga2lsb2dyYW07CivlhZkgPiBkZWNhZ3JhbTsKK+WEqSA+IGNvbXBsZXRlOwor5YOlID4gYmVcLWx1Y2t5Owor5YODID4gcHJlcGFyZWQ7Civlg4IgPiBodW1wYmFjazsKK+WCtCA+IGh1bXBiYWNrOwor5YKiID4gc3R1YmJvcm47Civlgp4gPiB1bnN0ZWFkeTsKK+WCjCA+IHRvXC1jdXJzZTsKK+WBuCA+IHRvXC1zdGVhbDsKK+WBsiA+IHRhbGVudGVkOwor5YGrID4gd2FpdFwtZm9yOwor5YGfID4gYWdpdGF0ZWQ7Civkv5MgPiBzdHJhaWdodDsKK+S+qyA+IGZsYXR0ZXJ5Owor5L20ID4gYVwtc2Vjb25kOwor5L2qID4gaGVzaXRhdGU7CivkvYsgPiBjb250aW51ZTsKK+S9gCA+IHJlc2VtYmxlOwor5LyDID4gaGFuZHNvbWU7CivkurkgPiBwcm9ncmVzczsKK+S5tSA+IHRvXC1lbnRlcjsKK+S2siA+IHRoZVwtZWRnZTsKK+S1siA+IHJhd1wtaGVtcDsKK+S1piA+IHRvXC1zdGFpbjsKK+S1miA+IGthb2xpYW5nOwor5LWTID4gdGhlXC1tb2xlOwor5LWJID4gYWJ1dGlsb247CivktLsgPiBkcnlcLWZvb2Q7CivktKsgPiBhbnRlbG9wZTsKK+S0miA+IHNhbHRwb25kOwor5LSXID4gYVwtc2hyaWtlOwor5LO7ID4gYW5cLWVhZ2xlOwor5LOnID4gYW5cLWVhZ2xlOwor5LKWID4gYmlnXC1maXNoOwor5LKOID4gdG9cLXNwb2lsOwor5LCnID4gc2luaXN0ZXI7CivksJ8gPiB0aGVcLXNvdWw7Civkr6ogPiBiaWdcLWhlYWQ7Civkr5ogPiB0aGVcLXJpYnM7Civkr5cgPiBidXR0b2NrczsKK+SvkCA+IHNoaW5ib25lOwor5K+OID4gc2hpbmJvbmU7Civkr4kgPiB0b1wtY2hva2U7Civkr4IgPiBudW1lcm91czsKK+StsSA+IGFcLWxpdHRsZTsKK+SsvCA+IHNhdGlhdGVkOwor5Ky5ID4gYVwtc2lja2xlOwor5KyJID4gaG90XC13aW5kOwor5Ku3ID4gdGhlXC1qb3dsOwor5KubID4gcmVja2xlc3M7Civkq5cgPiByZWNrbGVzczsKK+SrgyA+IHRoZVwtbGlwczsKK+SqtiA+IHRoZVwtY2hpbjsKK+SqqSA+IHRvXC1jaGFudDsKK+SqnCA+IGFcLXNoaWVsZDsKK+SqkSA+IHRvXC1zdGljazsKK+SqiiA+IGFcLWhhbHRlcjsKK+SqhSA+IGFcLXF1aXZlcjsKK+SqgSA+IGFcLWhhbHRlcjsKK+SptCA+IGFcLXF1aXZlcjsKK+SpriA+IGFcLXF1aXZlcjsKK+SpoCA+IGFcLWdpcmRsZTsKK+SpiSA+IHRoZVwtZmFjZTsKK+SpiCA+IGFcLXBsdW1weTsKK+SovCA+IGR5ZXN0dWZmOwor5KerID4gYVwtdHJlbmNoOwor5KeVID4gYm91bmRhcnk7Civkp4EgPiB0b1wtbGVhdmU7CivkpqUgPiB0b1wtbGVhcm47CivkpbggPiBhXC1zaWNrbGU7Civkpa0gPiBldmlkZW5jZTsKK+SlpSA+IGFcLXNpY2tsZTsKK+SljCA+IGV2aWRlbmNlOwor5KWLID4gdG9cLXNtZWx0Owor5KS/ID4gdG9cLWNhcnZlOwor5KS2ID4gYVwtaGFtbWVyOwor5KSzID4gYVwtbWlycm93Owor5KSwID4gdG9cLXNtZWx0Owor5KSrID4gYVwtY2hpc2VsOwor5KSoID4gdG9cLXNwbGl0Owor5KSdID4gYnJhY2VsZXQ7CivkpJAgPiB0b1wtZHJpbms7Civkoq0gPiB0b1wtY292ZXI7CivkopAgPiB0b1wtZ29cLXRvOwor5KKFID4gZGF5YnJlYWs7Civkoa0gPiBhXC1oZWFyc2U7CivkoL4gPiB0b1wtZG9kZ2U7CivkoLkgPiBzaGluYm9uZTsKK+SgrCA+IGluc29tbmlhOwor5KCeID4gd3JpbmtsZWQ7CivkoJAgPiB0b1wtc3F1YXQ7CivkoIMgPiB0b1wtc3F1YXQ7CivkoIEgPiB0b1wtZ29cLXVwOwor5J+4ID4gdGhlXC1jYWxmOwor5J+2ID4gdG9cLXNxdWF0Owor5J+0ID4gdG9cLXNoYWtlOwor5J+UID4gdG9cLWdvXC10bzsKK+SeuCA+IHRvXC1yZWFjaDsKK+SeriA+IHRvXC1jcmF3bDsKK+SenyA+IHRvXC1wcmVzczsKK+SenCA+IHRvXC1yZWFjaDsKK+SelCA+IGRlZXBcLXJlZDsKK+SekyA+IGRlZXBcLXJlZDsKK+SdqCA+IHZpcnR1b3VzOwor5J2CID4gdG9cLWVyZWN0Owor5JysID4gYVwtY2F2ZXJuOwor5JyYID4gdG9cLWd1YXJkOwor5JyQID4gdG9cLWxpYmVsOwor5JyDID4gdG9cLWJsYW1lOwor5JukID4gdXJnZW50bHk7Civkm5IgPiB0b1wtYXJndWU7Civkm4cgPiB0b1wtbGF1Z2g7Civkm4YgPiB0b1wtY3Vyc2U7CivkmrcgPiB0b1wtdHJlYXQ7Civkmq8gPiB0b1wtcXVlbGw7CivkmpsgPiByZWd1bGF0ZTsKK+SYqyA+IG9sZFwtcmFnczsKK+SYnCA+IGFcLW5hcGtpbjsKK+SYmSA+IHRvXC1ndWFyZDsKK+SYmCA+IHRvXC1kcml2ZTsKK+SYlCA+IHRvXC12b21pdDsKK+SYjyA+IHN5bXBhdGh5Owor5JiJID4gc2lsa3dvcm07CivkmIcgPiBtb3NxdWl0bzsKK+SXuiA+IGNyZWVwaW5nOwor5JeeID4gc2lsa3dvcm07Civkl50gPiBzaWxrd29ybTsKK+SXmCA+IGFcLXdlZXZpbDsKK+SXiCA+IGFcLWdhZGZseTsKK+SXhyA+IHRoZVwtdG9hZDsKK+SWuyA+IGVwaGVtZXJhOwor5JamID4gc2NvcnBpb247CivklqQgPiB0b1wtY3JlZXA7Civklp8gPiBhXC1nYWRmbHk7CivklpsgPiBvZlwtdGlnZXI7Civklo8gPiB0b1wtZHdlbGw7CivklowgPiBvZlwtdGlnZXI7CivkloogPiBvZlwtdGlnZXI7CivkloAgPiBhbmdlbGljYTsKK+SVryA+IGR1Y2t3ZWVkOwor5JWBID4gc3VkZGVubHk7CivklL0gPiB0b1wtY292ZXI7CivklJAgPiBkZWxpY2F0ZTsKK+STmSA+IHNsYW50aW5nOwor5JOVID4gcG9seWdhbGE7Civkk4wgPiBwb2x5Z2FsYTsKK+SSsyA+IGFcLWZsb3dlcjsKK+SSgyA+IHRvXC1idWlsZDsKK+SRuyA+IGNvdmVyaW5nOwor5JGYID4gdG9cLXBvdW5kOwor5JGDID4gZGltXC1tb29uOwor5JCSID4gbm90XC1maW5lOwor5I++ID4gdG9cLXN3ZWxsOwor5I+6ID4gdG9cLXN3ZWxsOwor5I+fID4gZmF0XC1tZWF0Owor5I+JID4gdG9cLXdhdmVyOwor5I+IID4gdG9cLXVuaXRlOwor5I66ID4gdG9cLWxlYXJuOwor5I6yID4gZWFyXC1sb2JlOwor5I6uID4gdG9cLXBsYW50Owor5I6rID4gdG9cLXBsYW50Owor5I6jID4gYVwtcGxvdWdoOwor5Iy3ID4gYVwtdGhyZWFkOwor5IyvID4gYVwtdHJ1YmFuOwor5IytID4gcmF3XC1oZW1wOwor5IysID4gc3RyYWlnaHQ7CivkjKsgPiBhXC1oYXdzZXI7CivkjJogPiB3cmlua2xlczsKK+SMgyA+IHJhd1wtc2lsazsKK+SLoSA+IHRvXC1yZWxheDsKK+SLkyA+IHdyaW5rbGVkOwor5IuSID4gdG9cLXJlbGF4Owor5IuDID4gc3Rpbmdpbmc7CivkirggPiB0b1wtdHdpc3Q7Civkip0gPiB0b1wtZXhpbGU7CivkioEgPiBsZWF2aW5nczsKK+SJuyA+IHJlZFwtcmljZTsKK+SJsSA+IGFcLWNyYWRsZTsKK+SJriA+IHRvXC1wbGFudDsKK+SJqiA+IHRvXC1ncmluZDsKK+SJkiA+IGFcLXdpbm5vdzsKK+SItiA+IGFuXC1hcnJvdzsKK+SIqyA+IGFcLWhhd3NlcjsKK+SHsSA+IGFcLWhhd3NlcjsKK+SHjCA+IHRvXC1zdGFuZDsKK+SGuCA+IHNwYWNpb3VzOwor5IaEID4gYVwtYnVuZGxlOwor5IWyID4gdG9cLXBsYW50Owor5IWoID4gZnJhZ3JhbnQ7CivkhaQgPiB0b1wtcGxhbnQ7CivkhZAgPiBhXC1idW5kbGU7CivkhIAgPiBjYWxhbWl0eTsKK+SDuiA+IHRvXC1ncmluZDsKK+SDkSA+IHNwZWNrbGVzOwor5IOFID4gZHllc3R1ZmY7CivkgrsgPiB0b1wtYmxvY2s7CivkgaUgPiB0b1wtYmxpbms7CivkgZwgPiBiaWdcLWV5ZXM7CivkgYIgPiBiaWdcLWV5ZXM7CivkgLUgPiB0b1wtYmxpbms7CivkgIggPiBhXC12ZXNzZWw7Civjv6IgPiB0b1wtc2hpbmU7Civjv6EgPiBhXC1oZWxtZXQ7Civjv5ogPiBzaWNrbmVzczsKK+O/iCA+IGFuXC11bGNlcjsKK+O/hSA+IHJpbmd3b3JtOwor4764ID4gYVwtc2NhYmJ5Owor476uID4gamF1bmRpY2U7Civjvo4gPiBzaWNrbmVzczsKK+O+jSA+IGRpc2Vhc2VzOwor476MID4gcmluZ3dvcm07CivjvoQgPiB0b1wtbGliZWw7CivjvbsgPiBkaXNlYXNlczsKK+O9uSA+IHRvXC1mYWludDsKK+O9kCA+IGZyYWdyYW50Owor47uEID4gdHJlYXN1cmU7CivjupogPiBhblwtb3R0ZXI7CivjuocgPiBhXC13YXJkZW47CivjubggPiB0aGVcLWxpb247CivjuZUgPiBpbmZlcmlvcjsKK+O4vCA+IHRoZVwtemVidTsKK+O4piA+IG11dHVhbGx5Owor47ifID4gdG9cLWNvdmVyOwor47idID4gYVwtc2hvdmVsOwor47iVID4gdG9cLXNlaXplOwor47iJID4gdG9cLWFkYXB0Owor47eGID4gdGhyaXZpbmc7Civjt4AgPiBzb2xpdGFyeTsKK+O2vCA+IHZlcnlcLWhvdDsKK+O2hCA+IHRvXC1zdGFpbjsKK+O1rSA+IGFuXC1pc2xldDsKK+O1piA+IHNsaXBwZXJ5Owor47S2ID4gdG9cLXdhdGVyOwor47SzID4gdG9cLXNtZWFyOwor47SKID4gYW5cLWFieXNzOwor47SIID4gc2VkaW1lbnQ7Civjs6sgPiByZXBlYXRlZDsKK+OzoCA+IHNsaXBwZXJ5Owor47OSID4gc3RhdHV0ZXM7CivjsrggPiBkcmllZFwtdXA7CivjsrcgPiBuaXRyb2dlbjsKK+OytiA+IGNobG9yaW5lOwor47KzID4gdG9cLXRvdWNoOwor47G/ID4gdGhlXC1odXNrOwor47G6ID4gdGhlXC1za2luOwor47GyID4gd2l0aGVyZWQ7CivjsaIgPiB0aGVcLWRlYWQ7CivjsaAgPiB3aXRoZXJlZDsKK+OxlyA+IGFcLWJyZWF0aDsKK+OxhSA+IHZpcnR1b3VzOwor47GDID4gdG9cLWRyaW5rOwor47C6ID4gdG9cLWRyaW5rOwor47C5ID4gdG9cLWxhdWdoOwor47CtID4gcGxlYXN1cmU7CivjsKcgPiB0b1wtZHJpbms7CivjsKMgPiB0b1wtdm9taXQ7CivjsKAgPiB0b1wtY292ZXQ7CivjsJ0gPiB0b1wtY291Z2g7Civjr7AgPiB0b1wtcGxhbnQ7Civjrq0gPiBhXC1jYXNrZXQ7CivjroEgPiBnYXJkZW5pYTsKK+OtmSA+IGFcLWhhbW1lcjsKK+OtiiA+IHRvXC1zcGxpdDsKK+OssCA+IGFcLW1vbWVudDsKK+OspyA+IGFcLWNvbGxhcjsKK+OsoiA+IHN1bnNoaW5lOwor46yhID4gc3Vuc2hpbmU7CivjrJkgPiBzdW5zaGluZTsKK+OslyA+IHN1bnNoaW5lOwor46yMID4gc3Vuc2hpbmU7Civjq70gPiBkYXJrbmVzczsKK+OruyA+IHN1bmxpZ2h0Owor46q/ID4gdG9cLWJyZWFrOwor46qhID4gdG9cLXF1ZWxsOwor46qTID4gZGlzYXN0ZXI7CivjqpAgPiB1bnN0YWJsZTsKK+OqjSA+IHN1ZGRlbmx5Owor46qDID4gdG9cLXRodW1wOwor46qCID4gdW5zdGFibGU7CivjqoAgPiB0b1wtZW50ZXI7Civjqb8gPiB1bnN0YWJsZTsKK+OptCA+IHRvXC1zZWl6ZTsKK+OpqCA+IHRvXC1jcmFjazsKK+OpkyA+IHRvXC13b3VuZDsKK+OpgSA+IHRvXC1rbm9jazsKK+OouSA+IHRvXC1jcmFjazsKK+OosSA+IHRvXC1zaGFrZTsKK+OoqiA+IHRvXC1zaGFrZTsKK+OooCA+IHRvXC1zbWVhcjsKK+OonyA+IHRvXC10b3VjaDsKK+OolCA+IHRvXC1zaGFrZTsKK+OokyA+IHRvXC1jbG9zZTsKK++okCA+IGNlbWV0ZXJ5Owor46iRID4gdG9cLWNvdW50Owor46iIID4gdG9cLWNyb3dkOwor46iBID4gdG9cLXRocm93Owor46e1ID4gdG9cLWV4YWN0Owor76exID4gbmVpZ2hib3I7Civjp7IgPiB0b1wtc2hha2U7Civjp7EgPiB0b1wtYnJpbmc7Civjp6wgPiB0b1wtcmFpc2U7Civvp58gPiBmb290d2VhcjsKK+OngSA+IHRvXC1jbG9zZTsKK++mviA+IGNvbnNpZGVyOwor46a/ID4gYVwtd2luZG93Owor76akID4gdG9cLXR3aXN0Owor46alID4gdGFsZW50ZWQ7CivvpqMgPiB0aGlua1wtb2Y7CivjpqQgPiB2aXJ0dW91czsKK++mliA+IHByYWN0aWNlOwor46aXID4gZGlsaWdlbnQ7CivvposgPiBjYWxlbmRhcjsKK+OmiSA+IHZpcnR1b3VzOwor46WwID4gbW91cm5mdWw7Civvpa0gPiBwcm92aW5jZTsKK+OlqiA+IGRpbGlnZW50Owor76WeID4gY2lubmFiYXI7CivvpZIgPiBzdHJhbmdsZTsKK+OlgyA+IG1vdXJuZnVsOwor46WBID4gbW9yYWxpdHk7CivvpLwgPiBibGVzc2luZzsKK+OksiA+IHRvXC10aGluazsKK+OkriA+IGFuXC1lcnJvcjsKK++kqCA+IGNvcnJpZG9yOwor46SmID4gbW91cm5mdWw7CivjpKQgPiBtb3VybmZ1bDsKK+OkjyA+IGdyaWV2b3VzOwor76SGID4gc2VudGVuY2U7Civjo7AgPiB0b1wtc2hha2U7Civjo6sgPiB0aGVcLWhlZWw7Civjo54gPiB0b1wtd2Fsa2k7Civjo4sgPiBjaW5uYWJhcjsKK+OjhCA+IHBvd2VyZnVsOwor46K0ID4gdGhlXC13ZXN0Owor46KpID4gdG9cLXNob290Owor46KFID4gYVwtc2hpZWxkOwor46GzID4gbW91bnRhaW47CivjoakgPiBhXC1naXJkbGU7CivjoZ0gPiBhXC1uYXBraW47CivjoZYgPiB0b1wtY292ZXI7CivjoLkgPiBhXC10dXJiYW47CivjoLUgPiBhXC10dXJiYW47CivjoIogPiBhXC1ydWdnZWQ7CivjoIkgPiBtb3VudGFpbjsKK+OghSA+IHRvXC1jb3ZlcjsKK+OfkSA+IG1vdW50YWluOwor4569ID4gbW91bnRhaW47CivjnrcgPiBsdXh1aWFudDsKK+OekSA+IHRoZVwtdGFpbDsKK+OeiSA+IGJpZ1wtZm9vdDsKK+OeiCA+IGJpZ1wtZm9vdDsKK+OdsiA+IHRvXC1zbGVlcDsKK+OdriA+IHRvXC1leGlsZTsKK+OdrSA+IHRvXC1hd2FrZTsKK+OdmCA+IGhhcm1vbm95Owor452SID4gdG9cLWR3ZWxsOwor452NID4gdG9cLXdyaXRlOwor452KID4gdG9cLWd1aWRlOwor45y2ID4gYVwtY291cGxlOwor45yzID4gcGVhY2VmdWw7Civjm5sgPiBwcmVnbmFudDsKK+OaoyA+IGhhbmRzb21lOwor45miID4gYVwtdHJvd2VsOwor45mZID4gdG9cLXNtZWFyOwor45mDID4gYVwtY2F2aXR5Owor45iqID4gdG9cLXdhc3RlOwor45igID4gdG9cLWNsb3NlOwor45iZID4gdG9cLWdyb2FuOwor45iRID4gdG9cLWN1cnNlOwor45iAID4gdG9cLXNvdW5kOwor45eqID4gbW91dGhmdWw7Civjl6ggPiB0b1wtbGF1Z2g7Civjl5wgPiB0b1wtc21lbGw7Civjl5sgPiB0b1wtbGF1Z2g7Civjl5MgPiBtb3V0aGZ1bDsKK+OXiSA+IGluY2lzaXZlOwor45a5ID4gdG9cLXNwdXJ0Owor45apID4gbm90XC1wdXJlOwor45aTID4gdG9cLXNob3V0Owor45aHID4gdGhlXC1saXBzOwor45W8ID4gdG9cLWJyYXdsOwor45WbID4gYVwtZnJpZW5kOwor45WQID4gaW5jbGluZWQ7CivjlYogPiB0b1wtc2xhbnQ7CivjlLAgPiBjb25zdGFudDsKK+OUqiA+IHRvXC1jcmF3bDsKK+OUoCA+IGluZHVzdHJ5Owor45SeID4gdmlnb3JvdXM7Civjk7YgPiB0b1wtY2FydmU7Civjk5ogPiBhXC1zaWNrbGU7Civjk5MgPiB0aGluXC1pY2U7CivjkrkgPiB0b1wtdXBzZXQ7CivjkbogPiBzdXBlcmlvcjsKK+ORtCA+IHRvXC11c3VycDsKK+ORsCA+IGRpc3RyZXNzOwor45GNID4gaW5mZXJpb3I7CivjkJwgPiBhblwtZW5lbXk7Civov7cgPiBiZXdpdGNoOwor6L+wID4gbmFycmF0ZTsKK+i/pSA+IGRpc3RhbnQ7CivkuK0gPiBjZW50cmFsOwor5b+XID4gcHVycG9zZTsKK+i/jiA+IHJlY2VpdmU7Civlv4wgPiBqZWFsb3VzOwor5ZKMID4gaGFybW9ueTsKK+i+ryA+IGRpc3B1dGU7CivljrsgPiBnb1wtYXdheTsKK+WvuSA+IGNvcnJlY3Q7CivnnqAgPiBsb29rXC1hdDsKK+W+iyA+IHN0YXR1dGU7CivlvbkgPiBzZXJ2aWNlOwor55y6ID4gbG9va1wtYXQ7CivlvLUgPiBzdHJldGNoOwor5beyID4gYWxyZWFkeTsKK+W8mCA+IGVubGFyZ2U7CivlvJUgPiB0b1wtcHVsbDsKK+W8lCA+IGNvbmRvbGU7CivovIMgPiBjb21wYXJlOwor5oSPID4gdGhvdWdodDsKK+i/myA+IGFkdmFuY2U7Civnm6EgPiBleGhhdXN0Owor5buJID4gdXByaWdodDsKK+aDhSA+IGZlZWxpbmc7CivnmrAgPiBwaW1wbGVzOwor5bqWID4ga2l0Y2hlbjsKK+i6kyA+IHN0dW1ibGU7CivluoQgPiB2aWxsYWdlOwor5bm2ID4gY29tYmluZTsKK+i5oCA+IHN0ZXBcLW9uOwor55mWID4gY3JhdmluZzsKK+W5lSA+IGN1cnRhaW47Civku6MgPiByZXBsYWNlOwor5birID4gdGVhY2hlcjsKK+aAuyA+IGNvbGxlY3Q7CivouI8gPiBzdGVwXC1vbjsKK+W4iCA+IHRlYWNoZXI7Civnl7QgPiBmb29saXNoOwor5Y2OID4gZmxvd2VyeTsKK+W8oCA+IHN0cmV0Y2g7Civnl4cgPiBkaXNlYXNlOwor55eFID4gaWxsbmVzczsKK+eWviA+IGlsbG5lc3M7Civlj40gPiByZXZlcnNlOwor5ZCIID4gY29tYmluZTsKK+eWjiA+IG5lZ2xlY3Q7Civlj5cgPiByZWNlaXZlOwor5YqhID4gYWZmYWlyczsKK+aOpSA+IHJlY2VpdmU7CivltKkgPiBydXB0dXJlOwor54m5ID4gc3BlY2lhbDsKK+acjSA+IGNsb3RoZXM7Civos70gPiBjb21wZXRlOwor6LORID4gcmVsaWV2ZTsKK+enkSA+IHNlY3Rpb247Civov5wgPiBkaXN0YW50Owor6LGrID4gcmVsYXhlZDsKK+iBlCA+IGNvbm5lY3Q7Civkv50gPiBwcm90ZWN0Owor5bC9ID4gZXhoYXVzdDsKK+mdqSA+IGxlYXRoZXI7CivlsI0gPiBjb3JyZWN0Owor5bCKID4gcmVzcGVjdDsKK+WTgSA+IGFydGljbGU7CivlsIkgPiBvZmZpY2VyOwor5aOrID4gc2Nob2xhcjsKK+mHjyA+IG1lYXN1cmU7Civlr74gPiBjb3JyZWN0Owor56iLID4gam91cm5leTsKK+WvqSA+IGV4YW1pbmU7Civlr58gPiBleGFtaW5lOwor5p6BID4gZXh0cmVtZTsKK+S7pCA+IGNvbW1hbmQ7CivmnKogPiBub3RcLXlldDsKK+aMgSA+IHN1c3RhaW47CivljoYgPiBoaXN0b3J5Owor5a6jID4gZGVjbGFyZTsKK+WPsiA+IGhpc3Rvcnk7CivlrpcgPiBsaW5lYWdlOwor6K6uID4gY29uc3VsdDsKK+eOhyA+IHRvXC1sZWFkOwor5aeUID4gYXBwb2ludDsKK+ittyA+IHByb3RlY3Q7CivorbAgPiBjb25zdWx0Owor5YW1ID4gc29sZGllcjsKK+WtlCA+IG9wZW5pbmc7CivkuokgPiBkaXNwdXRlOwor56m2ID4gZXhhbWluZTsKK+isuSA+IHBydWRlbnQ7Civop4YgPiBsb29rXC1hdDsKK+ismyA+IGV4cGxhaW47CivmoLwgPiBwYXR0ZXJuOwor6Ku4ID4gc2V2ZXJhbDsKK+iusiA+IGV4cGxhaW47Civoq6YgPiBjYXJlZnVsOwor5oCVID4gdG9cLWZlYXI7Civni6EgPiBjdW5uaW5nOwor5pu+ID4gYWxyZWFkeTsKK+WHhiA+IGFwcHJvdmU7CivmrrUgPiBzZWN0aW9uOwor57K+ID4gZXNzZW5jZTsKK+ernyA+IGZpbmFsbHk7CivoqqAgPiBzaW5jZXJlOwor6KmuID4gZXhwbGFpbjsKK+aVtCA+IG9yZGVybHk7CivlqYkgPiBhbWlhYmxlOwor5aSHID4gcHJlcGFyZTsKK+WPpiA+IGFub3RoZXI7CivpmYggPiBleGhpYml0Owor5pWFID4gYW5jaWVudDsKK+iomyA+IHN3aW5kbGU7CivoqJcgPiBlbnRydXN0Owor6KGjID4gY2xvdGhlczsKK+ioiiA+IGlucXVpcmU7CivniIYgPiBjcmFja2xlOwor5om5ID4gY29tbWVudDsKK+mAgSA+IHNlZVwtb2ZmOwor5oS/ID4gc2luY2VyZTsKK+WlhyA+IHN0cmFuZ2U7Civnh5UgPiBzd2FsbG93Owor54eIID4gbGFudGVybjsKK+imvSA+IGxvb2tcLWF0Owor5aasID4gamVhbG91czsKK+a4uCA+IHRvXC1zd2ltOwor6KanID4gbG9va1wtYXQ7Civku70gPiBwb3J0aW9uOwor5pWiID4gdG9cLWRhcmU7CivoppYgPiBsb29rXC1hdDsKK+WmliA+IHN0cmFuZ2U7Civnhb0gPiBzdGlyXC11cDsKK+iAgyA+IGV4YW1pbmU7CivmnZEgPiB2aWxsYWdlOwor5pydID4gZHluYXN0eTsKK+iCsiA+IHByb2R1Y2U7CivmiqQgPiBwcm90ZWN0Owor5Zu+ID4gZGlhZ3JhbTsKK+WImCA+IHN1cm5hbWU7CivlpJUgPiBldmVuaW5nOwor5om/ID4gaW5oZXJpdDsKK+ijsyA+IGNsb3RoZXM7CivkuaEgPiBjb3VudHJ5Owor6KOBID4gY3V0XC1vdXQ7Civml6IgPiBhbHJlYWR5Owor5ryUID4gcGVyZm9ybTsKK+aAqiA+IHN0cmFuZ2U7CivoooIgPiBzbGVldmVzOwor6YeHID4gY29sbGVjdDsKK+ihsCA+IGRlY2xpbmU7CivotZsgPiBjb21wZXRlOwor54GvID4gbGFudGVybjsKK+i+gyA+IGNvbXBhcmU7CivooaEgPiBtZWFzdXJlOwor5aGeID4gc3RvcFwtdXA7Civmma8gPiBzY2VuZXJ5Owor6KCiID4gd3JpZ2dsZTsKK+S+nSA+IHJlbHlcLW9uOwor54CdID4gdHJpY2tsZTsKK+iDnCA+IHZpY3Rvcnk7Civmv6EgPiBpbW1lcnNlOwor5r+fID4gdG9cLWhlbHA7Civon4sgPiBjcmlja2V0Owor6J+AID4gY3JpY2tldDsKK+WeiyA+IHBhdHRlcm47CivlnJYgPiBkaWFncmFtOwor5ryGID4gdmFybmlzaDsKK+a8gSA+IHRvXC1maXNoOwor5ZuzID4gZGlhZ3JhbTsKK+aVoyA+IHNjYXR0ZXI7Civom4YgPiBtYWdnb3RzOwor5puyID4gY3Jvb2tlZDsKK+a6tiA+IHRvXC1tZWx0Owor5Y6CID4gZmFjdG9yeTsKK+iCryA+IHdpbGxpbmc7CivmipMgPiBzY3JhdGNoOwor6JmrID4gaW5zZWN0czsKK+a5pyA+IHdlbGxcLXVwOwor6IyDID4gc3VybmFtZTsKK+mdoCA+IGxlYW5cLW9uOwor5risID4gbWVhc3VyZTsKK+aOiCA+IGdpdmVcLXRvOwor5riHID4gdGhpcnN0eTsKK+aJrCA+IHNjYXR0ZXI7Civmt7ogPiBzaGFsbG93Owor5rerID4gb2JzY2VuZTsKK+mCkyA+IHN1cm5hbWU7Civpt4QgPiBjaGlja2VuOwor5ZeHID4gbWlzZXJseTsKK+aKsSA+IGVtYnJhY2U7CivpooQgPiBwcmVwYXJlOwor552bID4gZXllYmFsbDsKK+aLrCA+IGluY2x1ZGU7CivpmY0gPiBkZXNjZW5kOwor6baPID4gY2hpY2tlbjsKK+iuryA+IGlucXVpcmU7CivotbUgPiBzdXJuYW1lOwor5rWFID4gc2hhbGxvdzsKK+engSA+IHByaXZhdGU7CivolJEgPiBkaXNkYWluOwor5a6hID4gZXhhbWluZTsKK+azoSA+IGJ1YmJsZXM7Civpl7kgPiBxdWFycmVsOwor5pWsID4gcmVzcGVjdDsKK+mGkiA+IHdha2VcLXVwOwor5rKMID4gY2hhb3RpYzsKK+aatCA+IHZpb2xlbnQ7CivpsoEgPiBmb29saXNoOwor5oqiID4gcGx1bmRlcjsKK+WRkSA+IHN3YWxsb3c7Civnr4cgPiBjaGFwdGVyOwor6bGIID4gY29kZmlzaDsKK+WRgiA+IHN1cm5hbWU7Civmi6UgPiBlbWJyYWNlOwor5ZCKID4gY29uZG9sZTsKK+ivuCA+IHZhcmlvdXM7Civoj68gPiBmbG93ZXJ5Owor5Y+tID4gdHJ1bXBldDsKK+a1iyA+IG1lYXN1cmU7CivpmIUgPiBleGFtaW5lOwor5Y+ZID4gZXhwcmVzczsKK+eMmyA+IHZpb2xlbnQ7Civljq0gPiBkaXNsaWtlOwor5Y6oID4ga2l0Y2hlbjsKK+mbhSA+IGVsZWdhbnQ7Civpm7cgPiB0aHVuZGVyOwor6a2vID4gZm9vbGlzaDsKK+m4oSA+IGNoaWNrZW47Civor5ogPiBzaW5jZXJlOwor56ueID4gY29udGVuZDsKK+aTjSA+IGNvbmR1Y3Q7CivljZIgPiBzb2xkaWVyOwor6K+6ID4gcHJvbWlzZTsKK+WMhiA+IGhhc3RpbHk7CivmrIUgPiB6ZWxrb3ZhOwor6Iu6ID4gYmVycmllczsKK+WLnSA+IHZpY3Rvcnk7Civlh60gPiBsZWFuXC1vbjsKK+WLmSA+IGFmZmFpcnM7Civoi5cgPiBzcHJvdXRzOwor56KwID4gY29sbGlkZTsKK+iLkSA+IHBhc3R1cmU7Civku78gPiBpbWl0YXRlOwor5qmfID4gbWFjaGluZTsKK+agjyA+IHJhaWxpbmc7CivpqJkgPiBzd2luZGxlOwor5YiIID4gY3V0XC1vZmY7Civni6AgPiB2aWNpb3VzOwor5pigID4gcHJvamVjdDsKK+aIqiA+IGN1dFwtb2ZmOwor5b+gID4gbG95YWx0eTsKK+aJjiA+IHB1bGxcLXVwOwor6IW5ID4gc3RvbWFjaDsKK+altSA+IGV4dHJlbWU7CivoiJIgPiBvcGVuXC11cDsKK+mqlyA+IHN3aW5kbGU7Civlh7YgPiBjdWxwcml0Owor5oWwID4gY29tZm9ydDsKK+mkmCA+IHN1cnBsdXM7CivmkpIgPiByZWxlYXNlOwor5oSBID4gYW54aWV0eTsKK+aWpCA+IGFcLWNhdHR5Owor5YORID4gc29qb3VybjsKK+aJtiA+IHN1cHBvcnQ7Civmr4EgPiBkZXN0cm95Owor6L6pID4gZGlzcHV0ZTsKK+iDgyA+IHN0b21hY2g7CivmorAgPiB3ZWFwb25zOwor6JKLID4gc3VybmFtZTsKK+WCmSA+IHByZXBhcmU7Civov50gPiBkaXNvYmV5Owor5LiiID4gZGlzY2FyZDsKK+iChiA+IGluZHVsZ2U7CivlgrsgPiBmb29saXNoOwor57uVID4gZW50d2luZTsKK+iBsyA+IHVyZ2VcLW9uOwor5raCID4gc3VybmFtZTsKK+iIsCA+IHdhcnNoaXA7CivmgbwgPiBhbmdlcmVkOwor6L6jID4gcGVwcGVyeTsKK+WAmiA+IHJlbHlcLW9uOwor6aCQID4gcHJlcGFyZTsKK+aXiyA+IHJldm9sdmU7CivlgIkgPiBncmFuYXJ5Owor6L69ID4gZGlzdGFudDsKK+e9miA+IHBlbmFsdHk7Civmi74gPiBwaWNrXC11cDsKK+aBoiA+IHJlc3RvcmU7Civnv4EgPiBvbGRcLW1hbjsKK+e+vSA+IGZlYXRoZXI7CivmipYgPiB0cmVtYmxlOwor6KeIID4gbG9va1wtYXQ7Civkvq8gPiBtYXJxdWlzOwor5oORID4gY29uZnVzZTsKK+S9tSA+IGNvbWJpbmU7CivnvbAgPiBwZW5hbHR5Owor6ZuVID4gZW5ncmF2ZTsKK+WOjCA+IGRpc2xpa2U7Civlr78gPiBvbGRcLWFnZTsKK+i3jCA+IHN0dW1ibGU7CivplKYgPiBicm9jYWRlOwor5p2PID4gYXByaWNvdDsKK+m7jiA+IHN1cm5hbWU7CivmhYwgPiBuZXJ2b3VzOwor5bGgID4gYnV0Y2hlcjsKK+afjyA+IGN5cHJlc3M7CivpnI0gPiBxdWlja2x5Owor6Zm2ID4gcG90dGVyeTsKK+aRhCA+IHRha2VcLWluOwor5peoID4gcHVycG9zZTsKK+mXryA+IHJ1c2hcLWluOwor5YavID4gc3VybmFtZTsKK+aJsCA+IGRpc3R1cmI7Civpm4AgPiBzcGFycm93Owor5aicID4gZWxlZ2FudDsKK+aariA+IGV2ZW5pbmc7CivpmIEgPiBjaGFtYmVyOwor5Y2iID4gY290dGFnZTsKK+WQniA+IHN3YWxsb3c7Civmn5wgPiBjYWJpbmV0Owor5pqHID4gbGVpc3VyZTsKK+aEpyA+IGFzaGFtZWQ7CivmmbYgPiBjcnlzdGFsOwor57meID4gZW50d2luZTsKK+aZnSA+IGRheXRpbWU7CivnrYsgPiBtdXNjbGVzOwor57i9ID4gY29sbGVjdDsKK+aYvCA+IGRheXRpbWU7CivlkqggPiBpbnF1aXJlOwor5pKRID4gcHJvcFwtdXA7CivpgIYgPiBkaXNvYmV5Owor5aGrID4gZmlsbFwtaW47Civml7ogPiBwcm9zcGVyOwor57esID4gZGlzdGFudDsKK+iwqCA+IHBydWRlbnQ7CivmuLQgPiB0aGlyc3R5Owor55aPID4gbmVnbGVjdDsKK+iAlyA+IGNvbnN1bWU7Civnt48gPiBjb2xsZWN0Owor6ZayID4gZXhhbWluZTsKK+mSpiA+IHJlc3BlY3Q7CivplqMgPiBjaGFtYmVyOwor5pmLID4gYWR2YW5jZTsKK+aCpiA+IHBsZWFzZWQ7CivmlpEgPiBtb3R0bGVkOwor6Le1ID4gdHJhbXBsZTsKK+i0viA+IHN1cm5hbWU7CivmuJQgPiB0b1wtZmlzaDsKK+iUoSA+IHN1cm5hbWU7Civmg7YgPiBmZWFyZnVsOwor57C+ID4gYVwtYmxpbmQ7CivotKkgPiBwZWRkbGVyOwor5oiIID4gaGFsYmVyZDsKK+mQkCA+IGZldHRlcnM7Civmj5ogPiBzY2F0dGVyOwor6Jm5ID4gcmFpbmJvdzsKK+evhCA+IHBhdHRlcm47Civlr6EgPiB3aWRvd2VkOwor5ZCVID4gc3VybmFtZTsKK+mDiiA+IHN1YnVyYnM7Civlvr0gPiBhXC1iYWRnZTsKK+iwrSA+IHN1cm5hbWU7CivmjaggPiBkaXNjYXJkOwor6bKNID4gYWJhbG9uZTsKK+S7kyA+IGdyYW5hcnk7CivpjKYgPiBicm9jYWRlOwor56yEID4gaGFpcnBpbjsKK+ayviA+IG1vaXN0ZW47Civnq7YgPiBjb250ZW5kOwor5L+eID4gc3VybmFtZTsKK+eekiA+IGRlY2VpdmU7Civnq4MgPiBmdXJuYWNlOwor5L6oID4gc29qb3VybjsKK+aBsyA+IHNpbmNlcmU7CivmipIgPiBleHByZXNzOwor5aecID4gc3VybmFtZTsKK+aJsSA+IGNvbGxlY3Q7CivnqL0gPiBleGFtaW5lOwor6KOUID4gcHJvZ2VueTsKK+eduSA+IGxvb2tcLWF0Owor5YyqID4gYmFuZGl0czsKK+a9mCA+IHN1cm5hbWU7CivmhpEgPiBsZWFuXC1vbjsKK+amnCA+IHBsYWNhcmQ7CivmnokgPiB1c2VsZXNzOwor57yFID4gZGlzdGFudDsKK+aFpSA+IHNpbmNlcmU7CivpqocgPiB0ZXJyaWZ5Owor5oWHID4gY2FyZWZ1bDsKK+esqCA+IGZvb2xpc2g7CivogLggPiB1cmdlXC1vbjsKK+i4qSA+IHN0ZXBcLW9uOwor6YO3ID4gY291bnRyeTsKK+aDsSA+IGFuZ2VyZWQ7CivmgrggPiBmZWFyZnVsOwor5pKwID4gY29tcG9zZTsKK+aDrSA+IGFzaGFtZWQ7CivlnoMgPiBnYXJiYWdlOwor6am8ID4gYVwtY2FtZWw7CivpgaAgPiBkaXN0YW50Owor6YGVID4gZGlzb2JleTsKK+mBkSA+IGxlaXN1cmU7CivlnL4gPiBnYXJiYWdlOwor6LG5ID4gbGVvcGFyZDsKK+e8tCA+IGRlbGl2ZXI7Civlk6ggPiB3aGlzdGxlOwor6YCyID4gYWR2YW5jZTsKK+WavCA+IHByYXR0bGU7CivmmKcgPiBvYnNjdXJlOwor5ouiID4gY29sbGVjdDsKK+aXsSA+IGRyb3VnaHQ7Civor6EgPiBkZWNlaXZlOwor5pCFID4gZGlzdHVyYjsKK+iBgiA+IHdoaXNwZXI7Civojr0gPiB0aGlja2V0Owor6aaAID4gc3VycGx1czsKK+aAoSA+IGhhcm1vbnk7Civljq4gPiBzZXJ2YW50Owor6IyoID4gY2FsdHJvcDsKK+eymCA+IHZpc2NvdXM7CivmkacgPiBkZXN0cm95Owor5py9ID4gZGVjYXllZDsKK+WotCA+IGVsZWdhbnQ7CivnhJUgPiBzaGluaW5nOwor6LGBID4gb3BlblwtdXA7CivoqbkgPiBzdXJuYW1lOwor54aEID4gcHV0XC1vdXQ7CivpgL4gPiBnb1wtb3ZlcjsKK+WmkiA+IGplYWxvdXM7CivpgrEgPiBzdXJuYW1lOwor6YaLID4gdmluZWdhcjsKK+aWjCA+IHJlZmluZWQ7Civlr4cgPiBiYW5kaXRzOwor5bGvID4gdmlsbGFnZTsKK+aBlSA+IGZvcmdpdmU7CivmsqYgPiBiZVwtbG9zdDsKK+WysSA+IGRhaXNoYW47CivmkocgPiBkaXNjYXJkOwor6K6zID4gY29uY2VhbDsKK+a3jCA+IHRyaWNrbGU7CivlspQgPiBkaXZlcmdlOwor5YCPID4gaGFzdGlseTsKK+mckyA+IHJhaW5ib3c7CivlnpIgPiByYW1wYXJ0Owor6YK1ID4gc3VybmFtZTsKK+WFoiA+IGZlYXJmdWw7CivotaYgPiBmb3JnaXZlOwor5b2mID4gZWxlZ2FudDsKK+e/mCA+IHR1cm5cLXVwOwor5oyaID4gc2luY2VyZTsKK+mDnSA+IHN1cm5hbWU7Civop5EgPiBwZWVwXC1hdDsKK+aLjiA+IHRvXC1oYXVsOwor5ZmcID4gdmVyYm9zZTsKK+mYkCA+IGV4cGxhaW47CivmiZIgPiBzY3JhdGNoOwor5Ye5ID4gY29uY2F2ZTsKK+aSqSA+IGxpZnRcLXVwOwor5oygID4gc2NyYXRjaDsKK+W0vSA+IGFcLWNoaWxkOwor5buWID4gc3VybmFtZTsKK+efqyA+IGNvcnJlY3Q7CivmtoUgPiBibGFja2VuOwor5qmxID4gY2FiaW5ldDsKK+WThiA+IHRyZW1ibGU7CivouawgPiBzdGVwXC1vbjsKK+aBgyA+IHJlbHlcLW9uOwor5ouXID4gdG9cLXB1bGw7Civlib8gPiBkZXN0cm95Owor57CMID4gZmFsbGluZzsKK+ivmyA+IGV4ZWN1dGU7CivmjrMgPiBjYXB0dXJlOwor5bmMID4gY3VydGFpbjsKK+eqkiA+IHN0b3BcLXVwOwor6ZuNID4gaGFybW9ueTsKK+mmhSA+IGZpbGxpbmc7Civnnr8gPiBzdXJuYW1lOwor56GFID4gc2lsaWNvbjsKK+eYqSA+IHBpbXBsZXM7CivmuKUgPiBtb2lzdGVuOwor6YKiID4gc3VybmFtZTsKK+i5iyA+IHN0ZXBcLW9uOwor5oqoID4gaW1wZWFjaDsKK+aTjiA+IGxpZnRcLXVwOwor5oaoID4gZm9vbGlzaDsKK+iCviA+IGtpZG5leXM7CivplK0gPiBzcGluZGxlOwor56qmID4gc3VybmFtZTsKK+iwmyA+IGNhcmVmdWw7CivmgZkgPiBpbGxuZXNzOwor6IysID4gaGFydmVzdDsKK+ibkCA+IGNyaWNrZXQ7CivplaMgPiBmZXR0ZXJzOwor5rKlID4gdHJpY2tsZTsKK+iwpCA+IHNsYW5kZXI7CivpkrMgPiBwaW5jZXJzOwor5529ID4gc3RhcmluZzsKK+mYsSA+IHBpdGZhbGw7Civlp5cgPiBzbGFuZGVyOwor6LekID4gc3R1bWJsZTsKK+axgCA+IHNhbmRiYXI7Civnp6QgPiBiYWxhbmNlOwor5pm+ID4gYWlyXC1kcnk7CivpnLkgPiB0aHVuZGVyOwor6LeaID4gc3RhZ2dlcjsKK+i4uSA+IHRyYW1wbGU7Civojp4gPiBzbWlsaW5nOwor6bilID4gc2VhZ3VsbDsKK+iRhiA+IHJlc2VydmU7CivmsKIgPiBhbW1vbmlhOwor5binID4gcGljdHVyZTsKK+azryA+IGRlc3Ryb3k7CivljKEgPiBjb3JyZWN0Owor5L2vID4gcHJldGVuZDsKK+aapyA+IG9ic2N1cmU7Civng6wgPiBjaW5kZXJzOwor6JqMID4gb3lzdGVyczsKK+i0uyA+IGdpdmVcLXRvOwor6LCGID4gcGF0aWVudDsKK+WTnSA+IHdoaXNwZXI7Civoo7QgPiBzdXJuYW1lOwor6K+9ID4gc2xhbmRlcjsKK+eZniA+IGxlcHJvc3k7CivllYQgPiB0b1wtcGVjazsKK+aLhCA+IGxlYW5cLW9uOwor57+OID4gZmVhdGhlcjsKK+eHjiA+IHRvXC1idXJuOwor6L+zID4gcGFzc1wtYnk7CivmlqEgPiByZXZvbHZlOwor5oG4ID4gc2FkbmVzczsKK+WVrCA+IG1pc2VybHk7Civlv5EgPiBmZWFyZnVsOwor5ZKCID4gdG9cLXN1Y2s7Civnm7kgPiB0b1wtZG96ZTsKK+S/viA+IHNvXC10aGF0Owor57CqID4gaGFpcnBpbjsKK+i1iCA+IHJlbGlldmU7Civor6AgPiBleHBsYWluOwor6LCaID4gcHJvdmVyYjsKK+aOuCA+IHRvXC1kdXN0Owor5YyuID4gdG9cLWxhY2s7CivluaEgPiBwZW5uYW50Owor6K65ID4gc3dpbmRsZTsKK+WbsSA+IGNoaW1uZXk7CivltIIgPiBsYW9zaGFuOwor5aiEID4gc3VybmFtZTsKK+WPnyA+IG9sZFwtbWFuOwor6J2MID4gdGFkcG9sZTsKK+iaqiA+IHRhZHBvbGU7CivmsKggPiBhbW1vbmlhOwor6ZOAID4gdXJhbml1bTsKK+aMmyA+IHRhbmdsZWQ7Civor4sgPiBzbGFuZGVyOwor57uvID4gc2NhcmxldDsKK+aUuCA+IGRpc3RhbnQ7CivpuKggPiBidXN0YXJkOwor6JyXID4gYVwtc25haWw7CivosKkgPiBkZWNlaXZlOwor5oGrID4gaW5cLXBhaW47CivosIAgPiBmbGF0dGVyOwor6LiuID4gdGlwXC10b2U7CivppoogPiBzcG9pbGVkOwor552HID4gbG9va1wtYXQ7CivpkpkgPiBjYWxjaXVtOwor5o2xID4gcHV0XC1vZmY7Civokr8gPiBtdWd3b3J0Owor6YW2ID4gZW56eW1lczsKK+a2oyA+IHNjYXR0ZXI7CivmnbMgPiBvYnNjdXJlOwor6KGiID4gaGlnaHdheTsKK+i1oSA+IHN1cHBvcnQ7Civno7ogPiBzdWxwaHVyOwor6Lm2ID4gc3R1bWJsZTsKK+iwhCA+IGZsYXR0ZXI7CivouakgPiB0b1wtbGltcDsKK+e/nyA+IHN1cm5hbWU7CivmtaMgPiB0b1wtd2FzaDsKK+eWuSA+IG1lYXNsZXM7CivnqoggPiBvYnNjdXJlOwor5bmUID4gY3VydGFpbjsKK+mdpSA+IGRpbXBsZXM7CivmjocgPiBjb2xsZWN0Owor5oSGID4gYVwtZmF1bHQ7CivpuLUgPiBvc3RyaWNoOwor56WXID4gcmVzcGVjdDsKK+S9mCA+IHN1cm5hbWU7CivnqpUgPiBzbGVuZGVyOwor6L+pID4gYmVcLW5lYXI7CivkvbAgPiBodW5kcmVkOwor6YKwID4gc3VybmFtZTsKK+mCnSA+IHN1cm5hbWU7CivpkrkgPiBjeW1iYWxzOwor5LyJID4gY29tcGFyZTsKK+mdvCA+IHRhcnRhcnM7CivnhbIgPiB0b1wtaGVhdDsKK+eNkCA+IHJvZWJ1Y2s7CivkvZ0gPiByaWNrZXRzOwor6JOfID4gY2lyY2l1bTsKK+m7nCA+IGRpc21pc3M7CivosLIgPiBjdW5uaW5nOwor5pGIID4gZXhjbHVkZTsKK+mjkyA+IGN5Y2xvbmU7CivosJcgPiBzbGFuZGVyOwor6IOxID4gYmxhZGRlcjsKK+mlvSA+IGZlcnJ1bGU7Civor7MgPiBkZWNlaXZlOwor6aaPID4gZGlzdGlsbDsKK+iLryA+IGJlbnplbmU7Civmt7wgPiBhXC1mbG9vZDsKK+ahjiA+IGZldHRlcnM7CivnvYQgPiBleGhhdXN0Owor6I2AID4gc3VybmFtZTsKK+mTsSA+IGlyaWRpdW07CivokakgPiBmbG93ZXJzOwor6YChID4gcmV0cmVhdDsKK+mAtiA+IHdpbmRpbmc7CivlrqUgPiBmb3JnaXZlOwor6JC4ID4gZG9nd29vZDsKK+aMnSA+IHRvXC1iZWF0Owor6ZK/ID4gaGFpcnBpbjsKK+eGtSA+IGVudHJvcHk7CivnhaggPiB0b1wtc3RldzsKK+egkiA+IGFyc2VuaWM7CivmmYEgPiBtb3JuaW5nOwor6LCYID4gY29uc3VsdDsKK+WHhyA+IGRld2Ryb3A7CivlmZggPiBwb3V0aW5nOwor5ZSjID4gY2hhdHRlcjsKK+mqoCA+IGNoYXJnZXI7CivmkrcgPiBwaWNrXC11cDsKK+aAhCA+IGFubm95ZWQ7CivplIIgPiBsaXRoaXVtOwor55alID4gc2NhYmllczsKK+eolyA+IGRhcm5lbHM7CivmtK4gPiBjbGVhbnNlOwor5oKtID4gbWlzZXJseTsKK+mFriA+IGtldG9uZXM7CivohZogPiBidXR0b2NrOwor6YCRID4gY29sbGVjdDsKK+iFsSA+IHRlbmRvbnM7CivpppQgPiB0b1wtZmVlZDsKK+aQoCA+IHRvXC1kYXViOwor6IyxID4gZG9nd29vZDsKK+egtyA+IGFyc2VuaWM7CivphaEgPiBmbHVzaGVkOwor55a0ID4gaWxsbmVzczsKK+aIlyA+IHN1cHBvcnQ7CivlkZIgPiB1bmNsZWFyOwor6LCMID4gc2luY2VyZTsKK+eXpyA+IGNob2xlcmE7CivmgYIgPiBjYXJlZnVsOwor56ykID4gYVwtYnJvb207Civpn6sgPiBzZWNyZXRlOwor5oCbID4gZ3JpZXZlZDsKK+aAmSA+IHJlbHlcLW9uOwor55q0ID4gY2hhcHBlZDsKK+ihpCA+IGNsb3RoZXM7Civlu6ogPiBncmFuYXJ5Owor5bq+ID4gZ3JhbmFyeTsKK+aMoiA+IGNvcnJlY3Q7CivnnaIgPiBnYXplXC1hdDsKK+WhrCA+IHBsYXRlYXU7Civonq8gPiBuaXBwZXJzOwor542SID4gbWFzdGlmZjsKK+ayhiA+IGFcLWZlcnJ5Owor5biUID4gYVwtc2tpcnQ7Civmk6IgPiBwdWxsXC11cDsKK+iWhSA+IHRvXC13ZWVkOwor6I60ID4gbGV0dHVjZTsKK+e+vCA+IGNvbmZ1c2U7Civmja0gPiB0b1wtb3BlbjsKK+iRrSA+IGJ1bHJ1c2g7CivlgKUgPiBib29yaXNoOwor5rq0ID4gYnJvbWluZTsKK+W7myA+IGFcLXN0b3JlOwor5o+4ID4gaGFuZGZ1bDsKK+S7tSA+IHNpbWlsYXI7Civpq4sgPiBoaXBib25lOwor6IKxID4gZm9yZWFybTsKK+WOtiA+IHByaXZhdGU7Civomo0gPiBtdXNzZWxzOwor5ZOZID4gc3dhbGxvdzsKK+mVkyA+IGdhbGxpdW07Civpk4sgPiBiaXNtdXRoOwor6IOdID4gY2FsbG91czsKK+aCgyA+IHNpbmNlcmU7Civnn70gPiBzaWxpY29uOwor6LWNID4gcHJlc2VudDsKK+e/pSA+IHRvXC1zb2FyOwor6JyeID4gZ3JhcHN1czsKK+ibqSA+IGNyaWNrZXQ7CivosKAgPiBjb3Vuc2VsOwor6bOVID4gY29kZmlzaDsKK+i3hiA+IHRyYW1wbGU7Civnn6wgPiBhXC1kd2FyZjsKK+atmSA+IHRvXC1zdWNrOwor6aG8ID4gZ3JpZXZlZDsKK+a6siA+IHVyaW5hdGU7CivolbsgPiBidWRkaW5nOwor5YizID4gY3V0XC1vdXQ7CivpuYggPiBwZWxpY2FuOwor6ZOZID4gY3ltYmFsczsKK+aknyA+IGNhYmluZXQ7CivplYkgPiBjYWRtaXVtOwor5auYID4gc3VybmFtZTsKK+ishyA+IHN0dXR0ZXI7CivmhrcgPiBwYWluZnVsOwor5pGtID4gcGlja1wtdXA7CivosKEgPiByaXNlXC11cDsKK+ikiiA+IGNyYW1wZWQ7CivpuZUgPiBwZWxpY2FuOwor6ZWyID4gY3ltYmFsczsKK+mSjSA+IHRob3JpdW07CivmsKogPiBrcnlwdG9uOwor6L+uID4gdG9cLXJpc2U7Civlv4kgPiBncmlldmVkOwor6JONID4gbWlsZm9pbDsKK+i4rCA+IHN0dW1ibGU7Civphq8gPiB2aW5lZ2FyOwor6J69ID4ga2F0eWRpZDsKK+iNkSA+IHNwcm91dHM7Civpg5MgPiBzdXJuYW1lOwor5YmAID4gc2hhcnBlbjsKK+i5gCA+IHRvXC1za2lwOwor6ZSOID4gY2Flc2l1bTsKK+mShyA+IHl0dHJpdW07CivmsJogPiB0cml0aXVtOwor54q4ID4gbWFtbW90aDsKK+iPuCA+IHRvXC1mYWRlOwor5Y6NID4gc3VybmFtZTsKK+mysSA+IGhlcnJpbmc7CivosoogPiBsZW9wYXJkOwor6LqeID4gdG9cLXdhbGs7Civom7QgPiBtYWdnb3RzOwor6ZS+ID4gbWVhc3VyZTsKK+mTjCA+IG5pb2JpdW07CivnlYAgPiB0b1wtZ2l2ZTsKK+mBmCA+IHRvXC1tZWV0Owor5rO3ID4gcmFpbmluZzsKK+iSoSA+IGJ1cmRvY2s7Civor7wgPiBzbGFuZGVyOwor6auMID4ga25lZWNhcDsKK+mzmSA+IGJpZ2hlYWQ7Civps5ggPiBjb2RmaXNoOwor6bOGID4gYWJhbG9uZTsKK+e1tyA+IGNvbmZpbmU7CivnrqYgPiBiZWRcLW1hdDsKK+eYmCA+IGZpc3R1bGE7CivpuLggPiBzd2FsbG93Owor6ZWEID4gZmVybWl1bTsKK+aBpyA+IGFzaGFtZWQ7CivnpYYgPiBvcm1hemRhOwor5augID4gYVwtd2lkb3c7CivmkLQgPiBleHRyYWN0Owor5buSID4gZ3JhbmFyeTsKK+mDhCA+IHN1cm5hbWU7Civor5wgPiBpbnF1aXJlOwor5YOmID4gdG9cLWhlaXI7CivpvqEgPiB0b1wtYmxvdzsKK+m9sCA+IHRvXC1iaXRlOwor6b2pID4gdG9cLWNoZXc7CivpvZogPiB0b1wtY2hldzsKK+m8tyA+IGFcLW1vdXNlOwor6bqeID4gcm9lYnVjazsKK+m4kSA+IGFcLWxhcmdlOwor6befID4gcGhvZW5peDsKK+m3lyA+IHNlYWd1bGw7Civpt5YgPiBzZWFndWxsOwor6ba6ID4gd2FndGFpbDsKK+m2uSA+IHRoZVwtb3dsOwor6bamID4gcGVsaWNhbjsKK+m2mCA+IHBlbGljYW47Civpta4gPiB0b1wtcGVjazsKK+m1nCA+IHBlbGljYW47CivptK8gPiBzd2FsbG93Owor6bSrID4gYVwtc25pcGU7CivptJUgPiBvc3RyaWNoOwor6bSOID4gc2VhZ3VsbDsKK+m0hyA+IGJ1c3RhcmQ7Civps6YgPiBzd2FsbG93Owor6bKaID4gYW5jaG92eTsKK+mxrSA+IGFuY2hvdnk7CivpsaggPiBjb2RmaXNoOwor6bGEID4gYW5jaG92eTsKK+mwvSA+IGhlcnJpbmc7CivpsLUgPiBjb2RmaXNoOwor6bCuID4gc2FyZGluZTsKK+mwmyA+IHNhcmRpbmU7CivpsJIgPiBhYmFsb25lOwor6a+3ID4gYW5jaG92eTsKK+mvoSA+IGhlcnJpbmc7CivprpEgPiBhYmFsb25lOwor6a2cID4gbWVybWFpZDsKK+mspyA+IHF1YXJyZWw7Civpq5YgPiBoaXBib25lOwor6auVID4ga25lZWNhcDsKK+mqqyA+IGJlXC1iZW50Owor6aqJID4gcnVubmluZzsKK+mpmSA+IFwoaG9yc2VcKTsKK+mpkiA+IGRhcHBsZWQ7CivpqYMgPiBjaGFyZ2VyOwor6aioID4gZGFwcGxlZDsKK+mnrSA+IHRlcnJpZnk7Civpp50gPiBhXC1jYW1lbDsKK+mniyA+IFwoaG9yc2VcKTsKK+mmriA+IHN1cm5hbWU7CivppZAgPiBzcG9pbGVkOwor6aS/ID4gc3BvaWxlZDsKK+mkviA+IGRpc3RpbGw7CivppLUgPiB0b1wtZmVlZDsKK+mksiA+IHNwb2lsZWQ7CivppJEgPiBmZXJydWxlOwor6aOkID4gdG9cLWZlZWQ7CivporYgPiBjeWNsb25lOwor6aKzID4gdG9cLWJsb3c7CivpoqsgPiBhXC1zdG9ybTsKK+mgmSA+IGNvcnJlY3Q7CivpoIogPiBncmlldmVkOwor6Z+jID4gYm93XC1iYWc7Civpn4UgPiBoYXJuZXNzOwor6Z2oID4gZGltcGxlczsKK+mchSA+IHRodW5kZXI7Civpm58gPiBzcGFycm93Owor6ZuaID4gYVwtaGVyb247Civpmb4gPiBpblwtZmlsZTsKK+mZsyA+IGV4aGliaXQ7CivpmZ4gPiBwcm9tb3RlOwor6ZinID4gc2xvcGluZzsKK+mXoSA+IGV4cGxhaW47Civpl5YgPiBydXNoXC1pbjsKK+mWsSA+IGV4YW1pbmU7CivplpkgPiBxdWFycmVsOwor6ZaIID4gdmlsbGFnZTsKK+mVpiA+IGZlcnJ1bGU7Civpk70gPiB0ZXJiaXVtOwor6ZO8ID4gcmhlbml1bTsKK+mTqiA+IGhhZm5pdW07Civpk6UgPiB0aHVsaXVtOwor6ZORID4gcmhvZGl1bTsKK+mSrCA+IGhvbG1pdW07CivpkKggPiBmZXJtaXVtOwor6ZCTID4gZmVycnVsZTsKK+mQgyA+IGN5bWJhbHM7CivpjrUgPiBnYWxsaXVtOwor6Y6YID4gY2FkbWl1bTsKK+mNsCA+IG1lYXN1cmU7CivpjLggPiByaGVuaXVtOwor6Yy2ID4gYVwtd2F0Y2g7CivpjKAgPiBzcGluZGxlOwor6YyAID4gXChtZXRhbFwpOwor6YuxID4gdGVyYml1bTsKK+mLsCA+IGxpdGhpdW07Civpi5UgPiBlbmdyYXZlOwor6YuKID4gYVwtcG9rZXI7Civpi4IgPiBiaXRcLWN1cDsKK+mKqSA+IHRodWxpdW07CivpiqUgPiBpcmlkaXVtOwor6Ym/ID4gaGFmbml1bTsKK+mJtyA+IHRyaWdnZXI7CivpibIgPiBjYWRtaXVtOwor6YmXID4gcGluY2VyczsKK+mJjSA+IGJpc211dGg7CivpiL8gPiBoYWlycGluOwor6Yi+ID4gdXJhbml1bTsKK+mIuCA+IGN5bWJhbHM7CivpiK4gPiBuaW9iaXVtOwor6YilID4gaG9sbWl1bTsKK+mIoyA+IGNhbGNpdW07Civph7ggPiBzaWxpY29uOwor6Ye3ID4gdGhvcml1bTsKK+mHsSA+IGZldHRlcnM7Civph5QgPiB5dHRyaXVtOwor6YWHID4gY29sbGVjdDsKK+mEuiA+IHN1cm5hbWU7CivphKcgPiBzdXJuYW1lOwor6YSVID4gY291bnRyeTsKK+mEiSA+IGNvdW50cnk7CivphIYgPiBzdXJuYW1lOwor6YOJID4gc3VybmFtZTsKK+mCqCA+IHZpbGxhZ2U7CivpgocgPiBiZVwtbmVhcjsKK+mBvCA+IGRpc3RhbnQ7CivpgbYgPiBlbnR3aW5lOwor6YGvID4gZGVjZWl2ZTsKK+mAuiA+IGRpc3RhbnQ7CivpgLcgPiBkaXN0YW50Owor6YCVID4gcGFzc1wtYnk7CivpgIggPiBkaXN0YW50Owor6L+0ID4gcmV2b2x2ZTsKK+i9tyA+IHN1cm5hbWU7CivovZIgPiBjaGFyaW90Owor6Ly9ID4gdmVoaWNsZTsKK+i7siA+IGFcLXdoZWVsOwor6LuYID4gd2FyXC1jYXI7CivouqYgPiB0b1wtanVtcDsKK+i6oCA+IHRvXC1saW1wOwor6LqdID4gdG9cLXBhc3M7CivoupggPiB0b1wtd2FsazsKK+i6hCA+IGNyaXBwbGU7CivouoIgPiBzdHVtYmxlOwor6LmhID4gdG9cLWxpbXA7CivouKsgPiBjb2xsaWRlOwor6LiQID4gdHJhbXBsZTsKK+i4iCA+IG5lZ2xlY3Q7Civot7QgPiBzdGVwXC1vbjsKK+i3rCA+IHRvXC1zdGVwOwor6LeVID4gc2h1ZmZsZTsKK+i2tyA+IHRvXC1qb2x0Owor6LaZID4gc3VybmFtZTsKK+i2kiA+IHRvXC1qdW1wOwor6LSNID4gc3VwcG9ydDsKK+i0hyA+IGFmZmFibGU7CivotIMgPiB0b1wtZWFybjsKK+izqyA+IHByZXNlbnQ7Civos50gPiBwcmVpb3VzOwor6LOIID4gc3VybmFtZTsKK+iyvSA+IGdpdmVcLXRvOwor6LKpID4gcGVkZGxlcjsKK+ixlyA+IGNsYW1vdXI7CivosKsgPiBzaGFsbG93Owor6K+5ID4gY29uc3VsdDsKK+iunyA+IHNsYW5kZXI7CivorpwgPiBjb3Vuc2VsOwor6K6SID4gc2xhbmRlcjsKK+iujCA+IGFcLWZlYXN0Owor6K6HID4gZmxhdHRlcjsKK+itviA+IHNoYWxsb3c7CivorbggPiBkZWNlaXZlOwor6K2aID4gc3VybmFtZTsKK+itjiA+IGN1bm5pbmc7CivorYggPiBkaXNsaWtlOwor6Ky+ID4gZGVjZWl2ZTsKK+istyA+IHNsYW5kZXI7CivorLMgPiB0b1wtc2luZzsKK+isrSA+IHNoYWxsb3c7CivorJ8gPiBmbGF0dGVyOwor6KyXID4gc2xhbmRlcjsKK+isliA+IHJpc2VcLXVwOwor6KyMID4gc2xhbmRlcjsKK+ishiA+IGJlZ3VpbGU7Civoq74gPiBwcm9taXNlOwor6Ku6ID4gcHJvdmVyYjsKK+irtiA+IHNpbmNlcmU7Civoq7EgPiBjb25jZWFsOwor6KuuID4gY29uc3VsdDsKK+irmyA+IGZsYXR0ZXI7Civoq5ogPiBjb21tYW5kOwor6KuRID4gc2xhbmRlcjsKK+irjyA+IGNvbnN1bHQ7Civoq4QgPiBwYXRpZW50Owor6KuCID4gZmxhdHRlcjsKK+iquSA+IHNsYW5kZXI7CivoqpEgPiBkZWNlaXZlOwor6KqFID4gZXhlY3V0ZTsKK+ipviA+IG5vaXNpbHk7CivoqbUgPiBpbnF1aXJlOwor6KmtID4gZGVjZWl2ZTsKK+ipqyA+IHRvXC1icmFnOwor6KmGID4gc2xhbmRlcjsKK+iphSA+IHRvXC1zZWxsOwor6Ki7ID4gZXhwbGFpbjsKK+iorCA+IGNsYW1vdXI7CivoqKkgPiBub2lzaWx5Owor6KimID4gc2luY2VyZTsKK+iooiA+IHBsZWFzZWQ7CivoqJEgPiBkZWNlaXZlOwor6KehID4gYW50bGVyczsKK+imtyA+IHBlZXBcLWF0Owor6KalID4gYXNoYW1lZDsKK+imnCA+IG1pc3Npb247CivopZwgPiBmbHV0dGVyOwor6KWDID4gY29tbWVuZDsKK+ikvSA+IGN1c2hpb247CivopJQgPiBjb21wbGV4Owor6KO1ID4gc3VybmFtZTsKK+ijkiA+IGNvbGxlY3Q7Civoor0gPiBjbG90aGVzOwor6KK6ID4gaG9sZFwtdXA7CivooqogPiBzbGVldmVzOwor6KG1ID4gY2hlbWlzZTsKK+igkCA+IG1hZ2dvdHM7Civonq4gPiByYWluYm93Owor6J24ID4gYVwtc25haWw7CivonYMgPiByYWluYm93Owor6J2AID4gcmFpbmJvdzsKK+icqyA+IGluc2VjdHM7CivomqsgPiBhYmFsb25lOwor6JqRID4gdGlwXC10b2U7CivomYYgPiBlbnR3aW5lOwor6JiKID4gY29sbGVjdDsKK+iXtCA+IGNvbGxlY3Q7Civol5kgPiBkb2d3b29kOwor6Ja9ID4gXChncmFzc1wpOwor6Ja2ID4gdG9cLWJ1cnk7CivolpMgPiBnaW5zZW5nOwor6JaQID4gc3BpbmFjaDsKK+iWiiA+IGNpcmNpdW07CivolZ0gPiBoYW5kZnVsOwor6JS/ID4gc3VybmFtZTsKK+iUoyA+IHN1cm5hbWU7CivolJggPiBnaW5zZW5nOwor6JOMID4gcHJldGVuZDsKK+iSkCA+IGNvbGxlY3Q7CivokaAgPiBnaW5zZW5nOwor6JGKID4gY290dGFnZTsKK+iQtSA+IGxldHR1Y2U7Civoj6ogPiBoZW5iYW5lOwor6I+nID4gc3RpYmVuZTsKK+iOiiA+IHZpbGxhZ2U7CivojoAgPiB0b1wtZmFybTsKK+iNmCA+IHZpbGxhZ2U7CivojLcgPiBmbHV0dGVyOwor6IygID4gdG9cLXdlZWQ7Civoi70gPiBidWxydXNoOwor6IuFID4gY3V0XC1vZmY7CivoiaYgPiB3YXJzaGlwOwor6IiTID4gdG9cLWxpY2s7Civoh50gPiBiZVwtYmFyZTsKK+iFliA+IHBlcHRvbmU7CivohY4gPiBraWRuZXlzOwor6ISdID4gZGlzdGVuZDsKK+iBtiA+IHdoaXNwZXI7Civoga8gPiBjb25uZWN0Owor6IGuID4gY29ubmVjdDsKK+iBqyA+IGNvbm5lY3Q7CivogaggPiBjb25uZWN0Owor6ICJID4gb2xkXC1hZ2U7CivogIggPiBvbGRcLWFnZTsKK+e/uSA+IHR1cm5cLXVwOwor57+qID4gZmx1dHRlcjsKK+e+kCA+IHRvXC1sZWFkOwor5724ID4gcGVuYWx0eTsKK+e9liA+IGt3dWt5ZWw7CivnvLsgPiBwb3R0ZXJ5Owor57yyID4gdG9cLXJlZWw7CivnubMgPiBkZWxpdmVyOwor57i2ID4gY29uZmluZTsKK+e4giA+IGNvbGxlY3Q7Civnt4sgPiBzY2FybGV0Owor57eBID4gdG9cLWpvaW47CivntaogPiBtYXR0aW5nOwor57KCID4gc3VybmFtZTsKK+exmyA+IHN1cm5hbWU7CivnsZEgPiB0b1wtZmVlZDsKK+ewgCA+IGJlZFwtbWF0Owor56ywID4gY3VydGFpbjsKK+eskyA+IHRvXC1jb21iOwor56u4ID4gY29udGVuZDsKK+erkiA+IHN0cmFuZ2U7Civnq4ggPiBmdXJuYWNlOwor56uHID4gc3VybmFtZTsKK+eqgCA+IHRvXC1idXJ5Owor56mrID4gaGFydmVzdDsKK+eoiiA+IGRhcm5lbHM7CivnqIcgPiB0b1wtYmluZDsKK+enkCA+IHRvXC13ZWVkOwor56aiID4gc3VybmFtZTsKK+emgiA+IHRvXC1wcmF5Owor56S1ID4gYXJzZW5pYzsKK+ejhyA+IGFyc2VuaWM7CivnooMgPiBcKHN0b25lXCk7Civnn7EgPiBtZWFzdXJlOwor55+vID4gY29ycmVjdDsKK+efnyA+ICcnXC1sYW5jZTsKK+eeryA+IHRvXC1wZWVwOwor556eID4gZGVjZWl2ZTsKK+ecvSA+IHRvXC1nYXplOwor55y0ID4gZGF6emxlZDsKK+ecjiA+IGxvb2tcLWF0Owor55unID4gY290dGFnZTsKK+eZqSA+IGxlcHJvc3k7CivnmaggPiBxdWlja2x5Owor55i7ID4gZmlzdHVsYTsKK+eYnSA+IGlsbG5lc3M7CivnlZAgPiB0b1wtZmlsbDsKK+eUlCA+IGJpZ1wtamFyOwor55ObID4gc2NhcHRyZTsKK+eSuiA+IGFcLWNyYWNrOwor55KKID4gcmVkZGlzaDsKK+eQsSA+IGVuZ3JhdmU7CivnjqcgPiByZWRkaXNoOwor5425ID4gYVwtaG91bmQ7CivnjZogPiBzcGFuaWVsOwor54uJID4gZm94XC1jdWI7CivnioYgPiBzcGVjaWFsOwor54muID4gcHJvcFwtdXA7Civnh7wgPiBjaW5kZXJzOwor54a7ID4gdG9cLWhlYXQ7CivnhrggPiBwdXRcLW91dDsKK+eGryA+IGJ5XC1maXJlOwor54W7ID4gdG9cLXdhcm07CivnhaUgPiBzaGluaW5nOwor54OJID4gc2hpbmluZzsKK+eBtCA+IHRvXC1iYWtlOwor54C5ID4gdG9cLWJvaWw7CivngKcgPiByYWluaW5nOwor5r6jID4gY2xlYW5zZTsKK+a+kCA+IGJpbGxvd3M7CivmvawgPiBhXC1yYXBpZDsKK+a6piA+IGRyaXp6bGU7CivmuLwgPiByaXBwbGVzOwor5rinID4gdG9cLWRyb3A7CivmuJkgPiBzY2F0dGVyOwor5reqID4gYmVcLWxvc3Q7CivmtrYgPiB0b1wtc3BpdDsKK+a2kiA+IG1lYW5kZXI7CivmtLggPiBzcGFya2xlOwor5rKEID4gYmlsbG93czsKK+axiyA+IHRvXC1wb3VyOwor5rC8ID4gdG9cLXNpbms7CivmsJUgPiBwcm90aXVtOwor5q+aID4gY3VubmluZzsKK+avgCA+IGRlc3Ryb3k7CivmrbogPiB2aWNpb3VzOwor5q2cID4gZnVyaW91czsKK+asvSA+IHJlc3BlY3Q7CivmrIQgPiByYWlsaW5nOwor5qulID4gY2FiaW5ldDsKK+arnSA+IGNhYmluZXQ7CivmqYYgPiB3aXRob3V0Owor5qaiID4gYVwtZnJhbWU7CivmpJcgPiBcKHBsYW50XCk7Civmo7ggPiBzdXJuYW1lOwor5qCiID4gY3lwcmVzczsKK+aevCA+IGFcLXRhYmxlOwor5p6TID4gY2FwaXRhbDsKK+aduCA+IHRvXC1raWxsOwor5p22ID4gdmFybmlzaDsKK+acviA+IHRvXC1idW1wOwor5pywID4ga3d1a3llbDsKK+acoiA+IGxvb2tcLWF0Owor5pyKID4gcHJvdGVpbjsKK+abvSA+IGFscmVhZHk7Civmm5YgPiBvYnNjdXJlOwor5pmJID4gYWR2YW5jZTsKK+aXoyA+IGFscmVhZHk7Civmlr8gPiB0b1wtc3dpbTsKK+aWriA+IGN1dFwtb2ZmOwor5pagID4gbWVhc3VyZTsKK+aWgSA+IGRpc2xpa2U7Civmlb4gPiB0b1wtcnVsZTsKK+aVryA+IHRvXC1kZWZ5Owor5pWtID4gc2NhdHRlcjsKK+aVnCA+IGZpbGxcLXVwOwor5pWYID4gZXhwcmVzczsKK+aVjSA+IGV4cHJlc3M7CivmlLcgPiBleGFtaW5lOwor5pSqID4gZGlzdHVyYjsKK+aUoyA+IHRhbmdsZWQ7CivmlJ0gPiB0YWtlXC1pbjsKK+aUjyA+IGNvbGxlY3Q7Civmk74gPiBkaXN0dXJiOwor5pO4ID4gdG9cLWhvbGQ7Civmk7cgPiBwaWNrXC11cDsKK+aTryA+IGV4Y2x1ZGU7Civmk50gPiB0b1wtcHVsbDsKK+aThCA+IGNhcHR1cmU7Civmk4EgPiBlbWJyYWNlOwor5pK+ID4gdG9cLWJlYXQ7CivmkrkgPiBkaXN0dXJiOwor5pK0ID4gdG9cLWpvbHQ7CivmkqMgPiB0b1wtZHVzdDsKK+aSoiA+IHRvXC1kdXN0Owor5pKfID4gY29ycmVjdDsKK+aSkyA+IHNjcmF0Y2g7CivmkpAgPiBwcm9wXC11cDsKK+aRryA+IHNpbmNlcmU7CivmkaAgPiBnZW5lcmFsOwor5pGCID4gdGFrZVwtaW47CivmkLcgPiB0b1wtYmVhdDsKK+aQtiA+IHBsdW5kZXI7Civmjr0gPiBjb2xsaWRlOwor5o6vID4gb3BwcmVzczsKK+aMjSA+IGNvbGxhdGU7Civmi6sgPiB0b1wtcHVsbDsKK+aKiCA+IHRvXC1iZW5kOwor5om9ID4gdG9cLW1vdmU7CivmiKcgPiBzdXBwb3J0Owor5oewID4gYmVcLWdsYWQ7Civmh6sgPiBlbnJhZ2VkOwor5oekID4gZ3JpZXZlZDsKK+aHmyA+IGFsYXJtZWQ7Civmh4cgPiBzaW5jZXJlOwor5oeGID4gYW54aW91czsKK+aHhSA+IGJhc2hmdWw7CivmhoMgPiBmb29saXNoOwor5oWzID4gbWlzZXJseTsKK+aFqiA+IGFubm95ZWQ7CivmhZ8gPiBzYWRuZXNzOwor5oWaID4gYXNoYW1lZDsKK+aFmSA+IGFzaGFtZWQ7CivmhJAgPiBiYXNoZnVsOwor5oSKID4gc2luY2VyZTsKK+aDtyA+IHdyaWdnbGU7Civmg6MgPiBvdmVyYWxsOwor5oOWID4gcmVzcGVjdDsKK+aDkyA+IGNhcmVmdWw7Civmg4cgPiBiZVwta2luZDsKK+aCqSA+IGFuZ2VyZWQ7CivmgpwgPiBvYnNjdXJlOwor5oKQID4gcmVzcGVjdDsKK+aChSA+IHBsZWFzZWQ7CivmgaAgPiBzdHJhbmdlOwor5oGJID4gbWVhbmluZzsKK+aAsSA+IGhhc3RpbHk7CivlvacgPiByZWZpbmVkOwor5b2lID4gZWxlZ2FudDsKK+W9miA+IGNvbGxlY3Q7CivlvZkgPiBjb2xsZWN0Owor5b2GID4gYXdrd2FyZDsKK+W7qSA+IGdyYW5hcnk7Civlu6AgPiBmYWN0b3J5Owor5budID4gc2VydmFudDsKK+W7miA+IGtpdGNoZW47Civlu4wgPiB1bmljb3JuOwor5buLID4gY29uY2VhbDsKK+W6pCA+IHByZXBhcmU7CivlubcgPiBjb21iaW5lOwor5bmrID4gdG9cLWhlbHA7CivluaggPiBjdXJ0YWluOwor5bmAID4gcGljdHVyZTsKK+W4vyA+IG1hcnF1aXM7CivluLIgPiBzaGVsdGVyOwor5bihID4gc2hlbHRlcjsKK+W3vyA+IHJldm9sdmU7Civlt4cgPiBhXC1jcmFjazsKK+W2lyA+IGxhb3NoYW47CivltIsgPiBmbG93ZXJ5Owor5bCfID4gc3VybmFtZTsKK+WvqiA+IHN1cm5hbWU7CivlrYUgPiBzbGVuZGVyOwor5au7ID4gZWxlZ2FudDsKK+WruiA+IHJlZmluZWQ7Civlqr8gPiBhc2hhbWVkOwor5aq7ID4gdG9cLW1vdmU7Civlqp4gPiBhdFwtZWFzZTsKK+WprCA+IG9ic2NlbmU7CivlqYEgPiBzdXJuYW1lOwor5aeNID4gc2xhbmRlcjsKK+WlmyA+IG9wZW5pbmc7CivlpKMgPiBhXC1kcmVhbTsKK+WjvSA+IG9sZFwtYWdlOwor5aOtID4ga3d1a3llbDsKK+WjnSA+IGFcLW1vdW5kOwor5aOYID4gcmFtcGFydDsKK+WjlCA+IGFcLW1vdW5kOwor5aG9ID4gcGxhdGVhdTsKK+WhoSA+IGZpbGxcLWluOwor5aGTID4gcGxhc3RlcjsKK+WhgSA+IHJhbXBhcnQ7CivloIQgPiBwYXJhcGV0Owor5Z+XID4gYVwtd2hhcmY7CivlnJcgPiBkaWFncmFtOwor5ZyVID4gbGlicmFyeTsKK+WcgiA+IHBpZ1wtc3R5Owor5ZuqID4gY2hpbW5leTsKK+WapSA+IHN3YWxsb3c7CivlmpUgPiB2ZXJib3NlOwor5ZqKID4gdG9cLXBhbnQ7CivlmbIgPiBzd2FsbG93Owor5ZmlID4gd2hpc3BlcjsKK+WYuCA+IHVuY2xlYXI7Civll7kgPiBjaGF0dGVyOwor5Za+ID4gZW1wZXJvcjsKK+WWpSA+IGFcLXBsYWNlOwor5ZWxID4gY29ycmVjdDsKK+WUniA+IHRvXC1nYXNwOwor5ZSFID4gYVwtc291bmQ7Civlkr4gPiBhXC1ub2lzZTsKK+WSiiA+IGhhcm1vbnk7CivlkokgPiBhblwtZWNobzsKK+WRvyA+IHRvXC15YXduOwor5ZGsID4gdG9cLXJlc3Q7CivlkasgPiB3aGlzcGVyOwor5ZGMID4gdG9cLWNhbGw7Civlj5wgPiBvbGRcLW1hbjsKK+WOvCA+IGt3dWt5ZWw7CivljrAgPiBmYWN0b3J5Owor5Y6rID4gZ3JhbmFyeTsKK+WOmSA+IHN1cm5hbWU7CivljbIgPiBlbWluZW50Owor5Y2qID4ga3d1a3llbDsKK+WNhiA+IHNvbGRpZXI7CivljL0gPiB0b1wtaGlkZTsKK+WMsSA+IHRvXC1sYWNrOwor5YynID4gYVwtdHJ1bms7CivljIsgPiBwb3R0ZXJ5Owor5YyKID4gaGFuZGZ1bDsKK+WLpiA+IGRlc3Ryb3k7CivlipAgPiBkZXN0cm95Owor5YqJID4gc3VybmFtZTsKK+WJtCA+IHNoYXJwZW47Civlh4ogPiBzdXJuYW1lOwor5YamID4gYmFuZGl0czsKK+WFryA+IGt3dWt5ZWw7CivlhaogPiBzdXJuYW1lOwor5YWCID4gaGFpcnBpbjsKK+WEtiA+IHZhbGlhbnQ7CivlhKYgPiBtaWxsaW5nOwor5YSkID4gb25cLWR1dHk7CivlhJMgPiBzZXJ2YW50Owor5YSNID4gZm9vbGlzaDsKK+WDryA+IGFzaGFtZWQ7Civlg6QgPiBzaW5jZXJlOwor5YOOID4gY29sbGVjdDsKK+WCvCA+IHN1cm5hbWU7CivlgpogPiBpbWl0YXRlOwor5YKUID4gc2VydmFudDsKK+WCgSA+IG9sZFwtbWFuOwor5YG5ID4gcHJlcGFyZTsKK+WAoyA+IGltaXRhdGU7CivlgJ0gPiBzdW5yaXNlOwor5YCQID4gaGFzdGlseTsKK+WAgiA+IGNvbWJpbmU7CivkvrQgPiBzdXJuYW1lOwor5L6HID4gYVwtY2xhc3M7CivkvoUgPiB0b1wtZ2l2ZTsKK+S9iSA+IHN1cm5hbWU7CivkvIggPiBuZXJ2b3VzOwor5LyAID4gZXhjaXRlZDsKK+S7kiA+IGt3dWt5ZWw7Civkur0gPiBrd3VreWVsOwor5Lq3ID4gdXByaWdodDsKK+S6tiA+IHNpbmNlcmU7CivkuqogPiBrd3VreWVsOwor5LqXID4gaGFydmVzdDsKK+S5vyA+IHRvXC1jdXJlOwor5LmsID4gdG9cLWhhbmc7CivkuaUgPiBrd3VreWVsOwor5LmbID4ga3d1a3llbDsKK+S5iiA+IGt3dWt5ZWw7CivkuYAgPiBzdHJldGNoOwor5Li3ID4ga3d1a3llbDsKK+S4nyA+IGRpc2NhcmQ7CivkuI8gPiBwYXJhcGV0Owor5LiGID4ga3d1a3llbDsKK+S2tCA+IHRvXC1ibG93Owor5LapID4gdG9cLWduYXc7CivktqcgPiB0b1wtZ25hdzsKK+S2oiA+IHRvXC1nbmF3Owor5LagID4gdG9cLWduYXc7Civktp4gPiB0b1wtZ25hdzsKK+S2lyA+IHRvXC1iaXRlOwor5LW8ID4gdG9cLWJvaWw7CivktKcgPiB2ZW5pc29uOwor5LSSID4gd2FndGFpbDsKK+SzrSA+IHdhZ3RhaWw7CivksqwgPiBjaGlja2VuOwor5LKjID4gdG9cLWZpc2g7Civksp0gPiBwb21mcmV0Owor5LKUID4gYVwtd2hhbGU7CivksbcgPiB0b1wtZmlzaDsKK+SxiSA+IHRoZVwtZWVsOwor5LGHID4gdGhlXC1lZWw7CivksK8gPiB0b1wtZmVhcjsKK+SwniA+IHRvXC1jb29rOwor5LCBID4gdG9cLW1lZXQ7CivkrrwgPiBwaWViYWxkOwor5K67ID4gdG9cLXByYXk7CivkrqYgPiB1bnRhbWVkOwor5K2uID4gamV3ZWxyeTsKK+StpCA+IHRvXC1jaGV3Owor5K2gID4gYVwtc25hY2s7CivkrKEgPiB0b1wtc29hcjsKK+SsnSA+IGFcLXN0b3JtOwor5KyWID4gYVwtc3Rvcm07CivkrI4gPiBob3RcLWFpcjsKK+SruCA+IHRvXC1ibG93Owor5KuYID4gaGVhbHRoeTsKK+SrkiA+IGRpc2Vhc2U7CivkqqMgPiBzbWFzaGVkOwor5KqiID4gc21hc2hlZDsKK+SpsyA+IHRhbm5pbmc7CivkqZ8gPiBsZWF0aGVyOwor5KmUID4gdGhlXC1oZW07CivkqKggPiB0aHVuZGVyOwor5KieID4gdG9cLXJhaW47CivkqJsgPiB0b1wtcmFpbjsKK+SomiA+IHRvXC1yYWluOwor5KiTID4gdGh1bmRlcjsKK+SogiA+IGFcLWNoaWNrOwor5KewID4gYVwtbW91bmQ7Civkp58gPiB0b1wtc2tpbjsKK+SnjSA+IGFcLWNyYWNrOwor5KatID4gdG9cLW9wZW47CivkposgPiB0b1wtZ3JvdzsKK+SlsCA+IHRvXC1tZWx0Owor5KWuID4gdG9cLWJlYXQ7CivkpYogPiByZWZpbmVkOwor5KSfID4gYVwtc3BhZGU7CivkpJggPiB2aW5lZ2FyOwor5KSVID4gdmluZWdhcjsKK+SkiCA+IHZpbmVnYXI7Civko7cgPiB0b1wtcG91cjsKK+SitiA+IGFcLXN0YXRlOwor5KKwID4gdG9cLWp1bXA7CivkoqwgPiB0b1wtbW92ZTsKK+SioyA+IGRpc3RhbnQ7CivkoqIgPiB0b1wtcGFzczsKK+SioCA+IHRvXC1zZW5kOwor5KKZID4gdG9cLXJ1aW47CivkopIgPiB0b1wtbWVldDsKK+SijCA+IHRvXC13YWxrOwor5KC8ID4gdG9cLXdlYXI7CivkoLMgPiB0b1wtd2FsazsKK+SgpSA+IHRvXC1saW1wOwor5KCcID4gdG9cLXdhbGs7CivkoJsgPiB0b1wtanVtcDsKK+SgkyA+IHRvXC13YWxrOwor5KCEID4gdG9cLXdhbGs7Civkn74gPiB0b1wtanVtcDsKK+SftyA+IHRvXC1qdW1wOwor5J+wID4gdG9cLXdhbGs7Civkn60gPiB0b1wtanVtcDsKK+SfrCA+IHRvXC13YWxrOwor5J+mID4gdG9cLXdhbGs7Civkn5AgPiB0b1wtd2FsazsKK+SfjyA+IHRvXC1qdW1wOwor5J+NID4gdG9cLXdhbGs7Civkn4kgPiB0b1wtd2FsazsKK+SfiCA+IHRvXC13YWxrOwor5J+HID4gdG9cLXdhbGs7Civkn4AgPiB0b1wtd2FsazsKK+SeuyA+IHRvXC13YWxrOwor5J66ID4gdG9cLXdhbGs7CivknrkgPiB0b1wtd2FsazsKK+SetSA+IHRvXC1qdW1wOwor5J60ID4gdG9cLWp1bXA7Civknq8gPiB0b1wtd2FsazsKK+SeqyA+IHRvXC13YWxrOwor5J6lID4gdG9cLXdhbGs7CivknqQgPiB0b1wtd2FsazsKK+SeoiA+IHRvXC13YWxrOwor5J6hID4gdG9cLXdhbGs7CivknqAgPiB0b1wtd2FsazsKK+SeniA+IHRvXC13YWxrOwor5J27ID4gdG9cLXNlbGw7Civkna4gPiB0b1wtYnJhZzsKK+SdpyA+IGNhcGl0YWw7CivknJYgPiB0b1wtdGFsazsKK+SciSA+IHRvXC1qZXN0Owor5Ju/ID4gY3VubmluZzsKK+SbuiA+IHRvXC13YXJuOwor5Ju3ID4gdG9cLW9iZXk7Civkm7AgPiBza2V0Y2h5Owor5JuiID4gY3VubmluZzsKK+SbnSA+IHRvXC1saWtlOwor5JubID4gY291cmFnZTsKK+SavCA+IGFzaGFtZWQ7CivkmrsgPiB0b1wtc2luZzsKK+SasSA+IGhvbmVzdHk7Civkmq4gPiB0aGlja2VyOwor5JqXID4gdG9cLWxpZnQ7Civkmo8gPiB0b1wtbG92ZTsKK+SZsiA+IHRvXC1tb3ZlOwor5JmpID4gY2xvdGhlczsKK+SZmSA+IGNsb3RoZXM7CivkmY4gPiBzbGVldmVzOwor5JmJID4gY2xvdGhlczsKK+SYtyA+IHNsZWV2ZXM7CivkmLYgPiBzbGVldmVzOwor5JixID4gd2VhbHRoeTsKK+SYriA+IHRvXC1sb3NlOwor5JigID4gZ3JlYXZlczsKK+SYnSA+IGFcLXNoaXJ0Owor5JeyID4gZmlyZWZseTsKK+SXkSA+IGZpcmVmbHk7CivklrUgPiBpbnNlY3RzOwor5JadID4gaW5zZWN0czsKK+SWmiA+IGFcLXRpZ2VyOwor5JaYID4gYVwtdGlnZXI7CivklpUgPiBhXC10aWdlcjsKK+SWhCA+IHRvXC1idXJuOwor5JWeID4gaGVuYmFuZTsKK+SVkSA+IHBhcnNsZXk7CivklLogPiBoZWFkaW5nOwor5JSAID4gcGFyc2xleTsKK+SStiA+IHRoZVwtc2t5Owor5JKYID4gcGFyc2xleTsKK+SRpyA+IGFcLXNob3J0Owor5JGbID4gdG9cLWxpY2s7CivkkL8gPiBnaXp6YXJkOwor5JC3ID4gcGF1bmNoeTsKK+SQtiA+IHRvXC1jb29rOwor5JC0ID4gbHVtYmFnbzsKK+SQqyA+IG9iZXNpdHk7CivkkIogPiBpbnNlY3RzOwor5I+dID4gc2luY2VyZTsKK+SPliA+IGFcLXdvdW5kOwor5I+RID4gdG9cLWJ1cm47Civkj4cgPiB0b1wtaGVhcjsKK+SPhSA+IHRvXC1oZWFyOwor5I+DID4gdG9cLWhlYXI7Civkjr0gPiB0b1wtaGVhcjsKK+SOuyA+IHRvXC1oZWFyOwor5I65ID4gdG9cLWhlYXI7CivkjrggPiB0b1wtaGVhcjsKK+SOqSA+IHRvXC10aWxsOwor5I6mID4gdG9cLXRpbGw7CivkjqQgPiB0b1wtdGlsbDsKK+SOnSA+IHRvXC1zb2FyOwor5I6MID4gZmVhdGhlcjsKK+SNtiA+IHVuaWNvcm47CivkjbMgPiBkaXNlYXNlOwor5IyYID4gdG9cLWtuaXQ7CivkjJQgPiB0b1wtc29hazsKK+SMgSA+IGFcLXBsZWF0Owor5IuOID4gdG9cLW1lbmQ7Civkip8gPiBhZG9ybmVkOwor5IqYID4gYVwtZ3JhaW47CivkipIgPiByZWZpbmVkOwor5IqHID4gdG9cLWZlZWQ7CivkibUgPiB0b1wtZmVlZDsKK+SJoiA+IGFcLXNpZXZlOwor5ImOID4gYVwtY292ZXI7CivkiKwgPiBhXC1zbWFsbDsKK+SIqiA+IGFcLXNtYWxsOwor5IilID4gdGVuZG9uczsKK+SIpCA+IHBpbmNlcnM7CivkiJIgPiBmcmFnaWxlOwor5IiHID4gYVwtY292ZXI7Civkh5QgPiBhdHJvcGh5Owor5IeNID4gdG9cLXdhaXQ7CivkhrUgPiBhblwtZWNobzsKK+SGqCA+IHRoZVwtc2t5Owor5IW4ID4gYVwtZ3JhaW47CivkhKQgPiB0b1wtc2luazsKK+SEjyA+IGJpemFycmU7Civkg6MgPiB0b1wtcnVpbjsKK+SCiiA+IHdlYXBvbnM7CivkgokgPiB3ZWFwb25zOwor5IKGID4gd2VhcG9uczsKK+SCgCA+IHRvXC13aW5rOwor5IGyID4gdG9cLXBlZXA7CivkgaogPiB0b1wtd2luazsKK+SBoyA+IHRvXC13aW5rOwor5IGbID4gdG9cLWxvb2s7CivkgZIgPiB0b1wtd2luazsKK+SAuyA+IHRvXC1sb29rOwor5ICoID4gdG9cLWxvb2s7CivkgJQgPiB0b1wtbG9vazsKK+O/piA+IHRvXC10ZWxsOwor47+SID4gaWxsbmVzczsKK+O/kSA+IGlsbG5lc3M7Civjv40gPiBzY2FiaWVzOwor4763ID4gdG9cLWFjaGU7CivjvqwgPiBtYWxhcmlhOwor476gID4gYVwtZmV2ZXI7Civjvp8gPiByZWxhcHNlOwor476eID4gaWxsbmVzczsKK+O+mCA+IGFpbG1lbnQ7CivjvpYgPiBncmlldmVkOwor476VID4gYVwtY2hpbGw7CivjvpMgPiBmYXRpZ3VlOwor476SID4gaWxsbmVzczsKK+O+jyA+IGlsbG5lc3M7CivjvocgPiBpbGxuZXNzOwor476GID4gZWNkeXNpczsKK+O+hSA+IGRlZmVjdHM7CivjvoIgPiBpbGxuZXNzOwor4720ID4gaWxsbmVzczsKK+O9syA+IGlsbG5lc3M7CivjvZ0gPiB0b1wtc2luazsKK+O9liA+IGFcLWh1bWFuOwor47y8ID4gYVwtbGFkbGU7CivjvLcgPiBhXC1iYXNpbjsKK+O8nCA+IGFcLWJhc2luOwor47yXID4gYVwtYnJpY2s7Civju7kgPiBhXC1jcmFjazsKK+O7gyA+IGNyb29rZWQ7CivjurIgPiBidXR0b25zOwor47qXID4gdG9cLWJpdGU7CivjuoogPiBhXC1iZWFzdDsKK+O5viA+IGN1bm5pbmc7Civjub0gPiB0b1wtYml0ZTsKK+O5niA+IHRvXC1iYXJrOwor47mbID4gYVwtdGFtZWQ7CivjuKcgPiB0b1wtYml0ZTsKK+O4kCA+IHRvXC1idXJuOwor47iNID4gdG9cLWJ1cm47Civjt7sgPiB3aXRob3V0Owor47eTID4gYVwtdG9yY2g7Civjt4ogPiB0b1wtYnVybjsKK+O3iSA+IHRvXC1pcm9uOwor47eFID4gdG9cLWNvb2s7Civjtq4gPiB0b1wtYnVybjsKK+O2qyA+IHRvXC1idXJuOwor47ajID4gdG9cLWJ1cm47CivjtpcgPiB3ZWxsXC11cDsKK+O2kyA+IHRvXC1zaW5rOwor47aHID4gYVwtZmVycnk7CivjtbggPiB0b1wtYm9pbDsKK+O1tCA+IHRvXC1zaW5rOwor47WjID4gdGhpcnN0eTsKK+O1kiA+IGJvaWxpbmc7CivjtYwgPiB0b1wtZmxvdzsKK+O1hSA+IGFcLXJpdmVyOwor47S/ID4gYm9pbGluZzsKK+O0iSA+IHZhcmlvdXM7CivjtIcgPiB0b1wtd2FkZTsKK+O0hSA+IHRvXC1tZWx0Owor47O6ID4gdG9cLXN3aW07Civjs60gPiBzcGl0dGxlOwor47OsID4gYW5cLWVkZHk7Civjs6ogPiBhXC1yaXZlcjsKK+OzpiA+IGFcLXJpdmVyOwor47OZID4gYVwtYnJvb2s7Civjs4UgPiB0b1wtZmxvdzsKK+OzhCA+IHNwaXR0bGU7CivjsrogPiB0b1wtd2FzaDsKK+OyhSA+IHRvXC1iaW5kOwor47KCID4gdG9cLXB1c2g7CivjsoEgPiB0b1wtYmVhdDsKK+OygCA+IHRvXC1iZWF0Owor47GuID4gdG9cLW9wZW47CivjsZYgPiB0b1wtc3RheTsKK+OxjCA+IHRvXC10YWtlOwor47GEID4gdG9cLXNwaXQ7CivjsYAgPiB0b1wtYml0ZTsKK+OwtSA+IHRvXC1zdWNrOwor47CVID4gYVwtbGFkbGU7Civjr7sgPiB0b1wtYmluZDsKK+OvuSA+IHRvXC1zaG93Owor46+4ID4gYVwtYmFzaW47Civjr5MgPiBhXC1jb3VjaDsKK+OvkCA+IHR1YnVsYXI7Civjr4sgPiBhXC1jaGVzdDsKK+OuuCA+IHRvXC1zZW5kOwor466bID4gYVwtc3Bvb247CivjrbAgPiB0b1wta25vdzsKK+OtrCA+IHRvXC1iZWF0Owor462qID4gYVwtc2hydWI7CivjrYwgPiBhXC1iYXNpbjsKK+OtiCA+IGFcLWJhc2luOwor46y8ID4gdG9cLWhhdmU7CivjrJ0gPiBvYnNjdXJlOwor46yUID4gdG9cLWRlZnk7CivjrIMgPiBzdW5yaXNlOwor46u0ID4gdG9cLXJvYXI7Civjq7MgPiBtb3JuaW5nOwor46unID4gdmlvbGVudDsKK+OrnSA+IHRoZVwtc3VuOwor46uZID4gdGhlXC1zdW47Civjq5EgPiBwdXJwb3NlOwor46q8ID4gdG9cLXB1bGw7CivjqrEgPiBlbGVnYW50Owor46qvID4gdG9cLWxpZnQ7Civjqq4gPiB0b1wtYmVhdDsKK+OqqCA+IHRvXC1tZW5kOwor46qnID4gdG9cLWJlYXQ7CivjqqYgPiB0b1wtYmVhdDsKK+OqpSA+IHRvXC10YWtlOwor46qiID4gdG9cLWJlYXQ7CivjqqAgPiB0b1wtcGVjazsKK+OqnSA+IHRvXC1iZWF0Owor46qXID4gdG9cLW9wZW47CivjqpUgPiB0b1wtYmVhdDsKK+OqkiA+IHRvXC1ydWluOwor46qPID4gdG9cLXJ1aW47CivjqoEgPiB0b1wtaG9sZDsKK+OptiA+IHRvXC1ob2xkOwor46m1ID4gdG9cLWJlYXQ7CivjqbMgPiB0b1wtaG9sZDsKK+OpsCA+IHRvXC1zdGFiOwor46mvID4gdG9cLW1vdmU7CivjqawgPiB0b1wtYmVhdDsKK+OppCA+IHRvXC1vcGVuOwor46mjID4gdG9cLW1vdmU7CivjqaIgPiB0b1wtYmVhdDsKK+OplSA+IHRvXC1oYXVsOwor46mLID4gdG9cLWJlYXQ7CivjqLcgPiB0b1wtd2lwZTsKK+OosCA+IHRvXC10dXJuOwor46imID4gdG9cLWhvbGQ7CivjqKQgPiB0b1wtd2lwZTsKK++ooiA+IHNldmVyYWw7CivvqJ4gPiBmZWF0aGVyOwor76idID4gZXNzZW5jZTsKK+OoliA+IHRvXC1zdGFiOwor46iPID4gdG9cLWJlYXQ7CivjqIsgPiB0b1wtYmVhdDsKK++oiSA+IGRlc2NlbmQ7CivvqIYgPiB2aW9sZW50Owor46iGID4gdG9cLWtpbGw7CivjqIIgPiB0b1wtYmVhdDsKK+OnvyA+IHRvXC1idW1wOwor46e7ID4gYVwtdGhvcm47Civjp6sgPiB0b1wtaG9sZDsKK+OnqiA+IHRvXC1ydWluOwor46ekID4gdG9cLWp1bXA7Civjp6MgPiB0b1wtc3RvcDsKK+OnoSA+IHRvXC1tb3ZlOwor46efID4gdG9cLXdpcGU7Civjp50gPiB0b1wtdGFrZTsKK++nmyA+IHRvXC1sZWFkOwor46ecID4gdG9cLWhvbGQ7Civvp5ggPiBzdGF0dXRlOwor76eWID4gYmVcLWxvc3Q7Civjp5MgPiB0b1wtbGVhZDsKK+OnkiA+IHRvXC1iZWF0Owor46eRID4gdG9cLXdhdmU7Civjp5AgPiB0b1wtaG9sZDsKK+OniiA+IHRvXC1wdXNoOwor76eHID4gc3VybmFtZTsKK+OniCA+IHRvXC1wdWxsOwor46eHID4gdG9cLWhvbGQ7Civvp4MgPiBkaXN0YW50Owor46eEID4gdG9cLXRha2U7Civvp4AgPiB0b1wtYnVybjsKK+OmuSA+IGFcLXNwZWFyOwor46a1ID4gdG9cLWtpbGw7Civjpq0gPiB0b1wtcGl0eTsKK+OmrCA+IGFzaGFtZWQ7CivvpqggPiBjb21tYW5kOwor76amID4gYVwtYmxpbmQ7CivvpqIgPiB1cHJpZ2h0Owor46aeID4gZ3JpZXZlZDsKK++mlyA+IGNvbm5lY3Q7CivjppUgPiB0aG91Z2h0Owor76aJID4gc3VybmFtZTsKK++mgCA+IHN1cm5hbWU7Civvpb4gPiBtZWFzdXJlOwor46W9ID4gZmVlbGluZzsKK+OluSA+IHRvXC1tb3ZlOwor76WzID4gcGlja1wtdXA7Civjpa8gPiBjYXJlZnVsOwor76WsID4gc3RvcFwtdXA7CivjpaQgPiB0b1wtcGl0eTsKK++loSA+IHRvXC1sZWFkOwor76WdID4gcHJvbWlzZTsKK+OllSA+IHRvXC1waXR5Owor46WSID4gY29ycnVwdDsKK+OljyA+IGJhc2hmdWw7CivjpYwgPiBwcnVkZW50Owor76WKID4gcmFtcGFydDsKK++liSA+IHRodW5kZXI7CivjpYQgPiB0b1wtcGl0eTsKK+OkvyA+IHRvXC1sb3ZlOwor46S9ID4gZ3JpZXZlZDsKK++kuSA+IGZvb2xpc2g7CivjpLogPiBibHVycmVkOwor76S2ID4gY2FwdHVyZTsKK+OktiA+IGNvbmZ1c2U7CivvpLMgPiBjb3R0YWdlOwor76SwID4gY2FwdHVyZTsKK+OkrSA+IHVudGFtZWQ7CivjpKAgPiBncmlldmVkOwor76SdID4gcmFpbGluZzsKK++kjiA+IGxlcHJvc3k7CivjpIUgPiB0b1wtbG92ZTsKK++kgyA+IHN1cm5hbWU7CivjpIMgPiBqZWFsb3VzOwor46SCID4gYW54aW91czsKK+OjtyA+IHdhbGtpbmc7Civjo7YgPiB0b1wtd2FsazsKK+OjrCA+IHRvXC13YWxrOwor46OcID4gdG9cLXdhbGs7Civjo5sgPiB3YWxraW5nOwor46ODID4gdG9cLXNlbGw7Civjo4IgPiB0b1wtYmluZDsKK+OivCA+IGF3a3dhcmQ7CivjoqMgPiB0b1wtbGlmdDsKK+OinSA+IGNvdHRhZ2U7CivjopUgPiBoYXJtb255Owor46G4ID4gYVwtaG91c2U7CivjobAgPiBhXC1ob3VzZTsKK+OhqyA+IGFueGlvdXM7CivjoaggPiBhXC1sYWJlbDsKK+OhmCA+IHNjcmVlbnM7CivjoZMgPiBkcmF3ZXJzOwor46GCID4gcmVtYWluczsKK+OgrSA+IHRvXC1vcGVuOwor45+nID4gYVwtY2xpZmY7CivjnrogPiBhXC10cmliZTsKK+OeqyA+IHRvXC13YWxrOwor456nID4gdG9cLW1lZXQ7CivjnqQgPiB0b1wtaGVscDsKK+OeoSA+IHRvXC1vcGVuOwor456AID4gdG9cLWJ1bXA7CivjnbwgPiBjcm9va2VkOwor452xID4gYVwtZHJlYW07CivjnaIgPiBhXC1ob3VzZTsKK+OdgCA+IHRvXC1saWtlOwor45y+ID4gYVwtY2hpbGQ7CivjnKkgPiBqZWFsb3VzOwor45yTID4gd29tYW5seTsKK+OciSA+IHdvbWFubHk7CivjnIcgPiB1bmhhcHB5Owor45u/ID4gY3VubmluZzsKK+ObuyA+IHdvbWFubHk7Civjm68gPiB0b1wtc29hcjsKK+OblSA+IHdvbWFubHk7CivjmqIgPiBhXC1zbGF2ZTsKK+OZlCA+IGFcLWZlbmNlOwor45mQID4gdG9cLW1vdmU7CivjmY8gPiBjYXZlcm5zOwor45i4ID4gdG9cLWJ1cnk7CivjmLcgPiBtdWd3b3J0Owor45ipID4gdG9cLW1hdGU7CivjmJcgPiB3aGlzcGVyOwor45iVID4gdG9cLWNhbGw7CivjmIIgPiBhc2hhbWVkOwor45iBID4gdG9cLWNhbGw7Civjl70gPiBhblwtZWNobzsKK+OXsiA+IHRvXC1jYWxsOwor45exID4gdG9cLXN1Y2s7Civjl60gPiBhXC1zb3VuZDsKK+OXpCA+IGFzaGFtZWQ7Civjl40gPiB0b1wtZ25hdzsKK+OXgyA+IHRoZVwtbGlwOwor45a/ID4gYVwtc291bmQ7CivjlrsgPiB3aGlzcGVyOwor45a6ID4gdG9cLWJsb3c7Civjlq0gPiB0b1wtbGljazsKK+OWpSA+IHRvXC1zcGl0Owor45W3ID4gdG9cLWNhbGw7CivjlbEgPiB0b1wtYmFyazsKK+OVriA+IHRvXC1jaGV3Owor45WfID4gdG9cLXNpZ247CivjlZ4gPiBhXC1icnVzaDsKK+OVnCA+IGhpc3Rvcnk7CivjlL8gPiBhXC10YWxseTsKK+OUrSA+IGFcLXNwb29uOwor45ShID4gZ3JlYXRseTsKK+OUgiA+IHRvXC1wYXJlOwor45OyID4gdG9cLXBhcmU7Civjk7AgPiB0b1wtcml2ZTsKK+OTpSA+IHRvXC1raWxsOwor45OfID4gdG9cLXBlZWw7Civjk5AgPiB0b1wtcmFpbjsKK+OSvCA+IGF2ZXJhZ2U7CivjkrggPiB0b1wtb2JleTsKK+OStCA+IHRvXC1jb21lOwor45KmID4gcHVwcGV0czsKK+OSniA+IHZhbGlhbnQ7CivjkpUgPiB1bnlpZWxkOwor45KSID4gYVwtc2xhdmU7CivjkpEgPiBncm93XC11cDsKK+OSiSA+IGFsYXJtZWQ7CivjkbkgPiB0b1wtbWVldDsKK+ORkCA+IHRvXC1tb3ZlOwor45GFID4gdG9cLW1ha2U7CivjkYMgPiB0b1wtcHVsbDsKK+OQvCA+IHRvXC1zYXZlOwor45CuID4gdG9cLWhlbHA7CivjkIEgPiB0b1wtbGljazsKK+aYryA+IGluZGVlZDsKK+i/qyA+IGNvZXJjZTsKK+W/nCA+IHNob3VsZDsKK+W/mCA+IGZvcmdldDsKK+WbvSA+IG5hdGlvbjsKK+i/lCA+IHJldHVybjsKK+W/jSA+IGVuZHVyZTsKK+i/hCA+IGV4dGVuZDsKK+W/hSA+IHN1cmVseTsKK+WHuiA+IGdvXC1vdXQ7Civovr8gPiBmb2xsb3c7CivnnrwgPiBleWVsaWQ7CivlvpcgPiBvYnRhaW47CivovrcgPiBzbW9vdGg7CivlvrQgPiBzdW1tb247CivlvrMgPiB2aXJ0dWU7Civnnq0gPiBicmlnaHQ7CivlvqkgPiByZXR1cm47CivovpsgPiBiaXR0ZXI7CivlvpAgPiBzbG93bHk7CivlvowgPiBiZWhpbmQ7CivlvoogPiBsaW5nZXI7CivlvbEgPiBzaGFkb3c7CivkuosgPiBhZmZhaXI7CivovZ8gPiBydW1ibGU7CivlvYggPiBwZWxsZXQ7CivkuLsgPiBtYXN0ZXI7CivlvLcgPiBzdHJvbmc7CivlvJsgPiBsb29zZW47CivmsJEgPiBwZW9wbGU7CivnnIwgPiBjb3VudHk7CivnjrAgPiBhcHBlYXI7CivliIYgPiBkaXZpZGU7CivkupsgPiBsaXR0bGU7Civnm7ggPiBtdXR1YWw7Civlm54gPiByZXR1cm47CivnkIYgPiByZWFzb247CivmmI4gPiBicmlnaHQ7Civnm4ogPiBwcm9maXQ7Civor50gPiBzcGVlY2g7CivlkJEgPiB0b3dhcmQ7CivlrpogPiBkZWNpZGU7CivluqsgPiBhcm1vcnk7CivluqYgPiBkZWdyZWU7CivlupUgPiBib3R0b207CivmiZMgPiBzdHJpa2U7CivkvY0gPiB0aHJvbmU7Civluo8gPiBzZXJpZXM7CivlubwgPiBpbmZhbnQ7CivlubIgPiBvcHBvc2U7CivlhoUgPiBpbnNpZGU7CivnmaogPiBzcGFzbXM7CivliqAgPiBhZGRcLXRvOwor5YyWID4gY2hhbmdlOwor55mMID4gY2FuY2VyOwor5bi4ID4gY29tbW9uOwor6LiwID4gZXhjZWVkOwor5biCID4gbWFya2V0Owor5biwID4gcmV0dXJuOwor5omNID4gdGFsZW50Owor5L2PID4gcmVzaWRlOwor5ZGYID4gbWVtYmVyOwor5be7ID4gc2Nyb2xsOwor5oCnID4gbmF0dXJlOwor5oqlID4gcmVwb3J0Owor56WeID4gc3Bpcml0Owor5pWwID4gbnVtYmVyOwor6LehID4gc2VhcmNoOwor5Y6fID4gc291cmNlOwor5behID4gcGF0cm9sOwor5bedID4gc3RyZWFtOwor5bqUID4gc2hvdWxkOwor6LaKID4gZXhjZWVkOwor55aKID4gcmVwZWF0Owor57O7ID4gc3lzdGVtOwor55WzID4gcmVwZWF0Owor6LWrID4gYnJpZ2h0Owor5Y+KID4gZXh0ZW5kOwor5Yi2ID4gc3lzdGVtOwor55WgID4gZ2FyZGVuOwor6KejID4gbG9vc2VuOwor6K6wID4gcmVjb3JkOwor5p6XID4gZm9yZXN0Owor6LSUID4gc3Ryb25nOwor57ufID4gZ292ZXJuOwor5a2XID4gbGV0dGVyOwor5bO2ID4gaXNsYW5kOwor6LOqID4gbWF0dGVyOwor6K66ID4gZGViYXRlOwor6LKwID4gYm9ycm93Owor5oyHID4gZmluZ2VyOwor6LKhID4gd2VhbHRoOwor6IqxID4gZmxvd2VyOwor5bGkID4gc3RvcmV5Owor5p2hID4gY2xhdXNlOwor5Y+YID4gY2hhbmdlOwor6K+lID4gc2hvdWxkOwor5bGNID4gY29ycHNlOwor5LygID4gc3VtbW9uOwor5rK7ID4gZ292ZXJuOwor5YazID4gZGVjaWRlOwor5bGAID4gYnVyZWF1Owor5YqeID4gbWFuYWdlOwor6LC3ID4gdmFsbGV5Owor5Z+OID4gY2FzdGxlOwor54i2ID4gZmF0aGVyOwor5by6ID4gc3Ryb25nOwor5bCOID4gZGlyZWN0Owor5bCBID4gbGV0dGVyOwor54++ID4gYXBwZWFyOwor5a+nID4gcmVwb3NlOwor6buEID4geWVsbG93Owor5b63ID4gZXRoaWNzOwor5a6zID4gaW5qdXJlOwor5a6uID4gcGFsYWNlOwor5om+ID4gc2VhcmNoOwor5Y+LID4gZnJpZW5kOwor6K6KID4gY2hhbmdlOwor5pS5ID4gY2hhbmdlOwor5a6IID4gZGVmZW5kOwor6K6DID4gcHJhaXNlOwor6ZmFID4gYm9yZGVyOwor5Y2VID4gc2luZ2xlOwor5a+8ID4gZGlyZWN0Owor542yID4gb2J0YWluOwor5a2kID4gb3JwaGFuOwor5qChID4gc2Nob29sOwor542EID4gcHJpc29uOwor54y+ID4gY3JhZnR5Owor6KyZID4gaHVtYmxlOwor6KyOID4gcmlkZGxlOwor6ZqPID4gZm9sbG93Owor54u5ID4gbmFycm93Owor54utID4gbmFycm93Owor5q+NID4gbW90aGVyOwor54uZID4gYW5cLWFwZTsKK+irliA+IGRlYmF0ZTsKK+WboiA+IHNwaGVyZTsKK+eLgiA+IGluc2FuZTsKK+iqsiA+IGxlc3NvbjsKK+iLpiA+IGJpdHRlcjsKK+aLmyA+IGJlY2tvbjsKK+WFtCA+IHRocml2ZTsKK+ipsiA+IHNob3VsZDsKK+e6piA+IHRyZWF0eTsKK+ipsSA+IHNwZWVjaDsKK+ipqSA+IHBvZXRyeTsKK+eJoiA+IHByaXNvbjsKK+e7nSA+IHRvXC1jdXQ7CivpgIkgPiBjaG9vc2U7CivlpI0gPiByZXR1cm47CivmmJ8gPiBhXC1zdGFyOwor54i6ID4gZmF0aGVyOwor6Ki0ID4gYWNjdXNlOwor6KifID4gYWNjdXNlOwor5aaIID4gbW90aGVyOwor54ibID4gcm90dGVuOwor6KiYID4gcmVjb3JkOwor5raIID4gdmFuaXNoOwor5aiYID4gbW90aGVyOwor54etID4gY2FuZGxlOwor5aerID4gYmVhdXR5Owor5p2oID4gd2lsbG93Owor5piTID4gY2hhbmdlOwor5LilID4gc3RyaWN0Owor54aKID4gYVwtYmVhcjsKK+WmhCA+IGFic3VyZDsKK+e6qiA+IHJlY29yZDsKK+iLjyA+IHJldml2ZTsKK+etlCA+IGFuc3dlcjsKK+WlriA+IHN0cml2ZTsKK+eFqSA+IGJvdGhlcjsKK+ilpCA+IHJhZ2dlZDsKK+WHuyA+IHN0cmlrZTsKK+aciyA+IGZyaWVuZDsKK+S+myA+IHN1cHBseTsKK+WkriA+IGNlbnRlcjsKK+WIlyA+IGFcLWxpbmU7CivnhKYgPiBidXJuZWQ7CivniLcgPiBmYXRoZXI7CivpvpkgPiBkcmFnb247CivopJIgPiBwcmFpc2U7CivlpI8gPiBzdW1tZXI7CivlpIkgPiBjaGFuZ2U7CivmmKUgPiBzcHJpbmc7CivopIcgPiByZXBlYXQ7CivngbUgPiBzcGlyaXQ7Civoo6EgPiBpbnNpZGU7Civor4kgPiBhY2N1c2U7CivmgIEgPiBtYW5uZXI7Civoo48gPiBpbnNpZGU7CivotKggPiBtYXR0ZXI7CivoopYgPiBzbGVldmU7Civlm60gPiBnYXJkZW47CivooosgPiBwb2NrZXQ7Civlia8gPiBhc3Npc3Q7CivlpJ8gPiBlbm91Z2g7CivojrcgPiBvYnRhaW47Civor5cgPiBwb2V0cnk7CivooZcgPiBzdHJlZXQ7CivloLEgPiByZXBvcnQ7Civmv4AgPiBhcm91c2U7Civpk7YgPiBzaWx2ZXI7CivpmLUgPiBjb2x1bW47CivlsYIgPiBzdG9yZXk7Civkuq4gPiBicmlnaHQ7CivnroAgPiBzaW1wbGU7Civmr5IgPiBwb2lzb247CivlvZIgPiByZXR1cm47CivmjaIgPiBjaGFuZ2U7CivmuZYgPiBhXC1sYWtlOwor6J2JID4gY2ljYWRhOwor6L+9ID4gcHVyc3VlOwor6bysID4gd2Vhc2VsOwor57ucID4gZW5tZXNoOwor5rygID4gZGVzZXJ0Owor6JyYID4gc3BpZGVyOwor5ZyYID4gc3BoZXJlOwor5Y2gID4gZGl2aW5lOwor5ZyTID4gY2lyY2xlOwor5ZySID4gZ2FyZGVuOwor6LW2ID4gcHVyc3VlOwor5YWwID4gb3JjaGlkOwor5ZyLID4gbmF0aW9uOwor5ZyDID4gZ2FyZGVuOwor5rqQID4gc3ByaW5nOwor5ZujID4gc3BoZXJlOwor6Zi2ID4gc3RhaXJzOwor6JubID4gc3BpZGVyOwor6buZID4gc2lsZW50Owor5Ly4ID4gZXh0ZW5kOwor6buYID4gc2lsZW50Owor5L2bID4gYnVkZGhhOwor5Zq0ID4gc3RyaWN0Owor5oylID4gZGlyZWN0Owor5pWIID4gcmVzdWx0Owor5pS7ID4gYXR0YWNrOwor562WID4gc2NoZW1lOwor6ZiyID4gZGVmZW5kOwor6IKhID4gdGhpZ2hzOwor6JitID4gb3JjaGlkOwor6I6rID4gZG9cLW5vdDsKK+WYmCA+IGV4aGFsZTsKK+WOvyA+IGNvdW50eTsKK+iYhyA+IHJldml2ZTsKK+eqlyA+IHdpbmRvdzsKK+a3uyA+IGFwcGVuZDsKK+a3tyA+IHRvXC1taXg7Civpt7IgPiBjb25kb3I7CivljZogPiBnYW1ibGU7CivlvLkgPiBwZWxsZXQ7Civol6QgPiByYXR0YW47CivlnY8gPiByb3R0ZW47CivmmbogPiB3aXNkb207CivlspsgPiBpc2xhbmQ7CivmipcgPiByZXNpc3Q7CivllrAgPiB0b1wtZWF0Owor5ZauID4gc2luZ2xlOwor54i5ID4gZmF0aGVyOwor5ZanID4gbGl2ZWx5Owor5ZaJID4gdGhyb2F0Owor54i4ID4gZmF0aGVyOwor5rWaID4gZHJlZGdlOwor6YCDID4gZXNjYXBlOwor6aqCID4gYWNjdXNlOwor5ZS4ID4gcmVjaXRlOwor6Z2WID4gcGFjaWZ5Owor56eYID4gc2VjcmV0Owor6LSiID4gd2VhbHRoOwor5qyyID4gZGVzaXJlOwor5b6BID4gaW52YWRlOwor56eLID4gYXV0dW1uOwor5ZC4ID4gaW5oYWxlOwor6bOpID4gcGlnZW9uOwor5ZOhID4gbWVtYmVyOwor5oKyID4gc29ycm93Owor5rOJID4gc3ByaW5nOwor5qGlID4gYnJpZGdlOwor5YqyID4gc3Ryb25nOwor5ZK9ID4gdGhyb2F0Owor6JK7ID4gcnVzaGVzOwor5bqTID4gYXJtb3J5Owor5YCfID4gYm9ycm93Owor5rG6ID4gZGVjaWRlOwor6JGjID4gZGlyZWN0Owor6JGhID4gZ3JhcGVzOwor5rGaID4gZmlsdGh5Owor5o6nID4gYWNjdXNlOwor6IO4ID4gYnJlYXN0Owor6K++ID4gbGVzc29uOwor6YKuID4gcG9zdGFsOwor5ZCdID4gc3Rpbmd5Owor5qiqID4gYWNyb3NzOwor5YGlID4gc3Ryb25nOwor6JCOID4gd2l0aGVyOwor6JCEID4gZ3JhcGVzOwor5ZyGID4gY2lyY2xlOwor5Y23ID4gc2Nyb2xsOwor6I+rID4gY2VsZXJ5Owor5oupID4gc2VsZWN0Owor5oGoID4gaGF0cmVkOwor56u5ID4gYmFtYm9vOwor6I+TID4gZnJ1aXRzOwor5a6rID4gcGFsYWNlOwor5peXID4gYmFubmVyOwor5q67ID4gY2FzaW5nOwor5Y6zID4gc3RyaWN0Owor5q6YID4gaW5qdXJlOwor5q6LID4gaW5qdXJlOwor5q24ID4gcmV0dXJuOwor56izID4gc3RhYmxlOwor6L+5ID4gdHJhY2VzOwor6ZKIID4gbmVlZGxlOwor5pu/ID4gY2hhbmdlOwor5Y2RID4gaHVtYmxlOwor5oKEID4gc2lsZW50Owor5aWLID4gc3RyaXZlOwor5qu7ID4gY2hlcnJ5Owor5byDID4gcmVqZWN0Owor54OmID4gYm90aGVyOwor5oq1ID4gcmVzaXN0Owor56CBID4gbnVtYmVyOwor5YqxID4gc3RyaXZlOwor57SrID4gcHVycGxlOwor5ouUID4gdXByb290Owor6IqdID4gc2VzYW1lOwor5qKBID4gYnJpZGdlOwor6LWPID4gcmV3YXJkOwor5YqDID4gZGl2aWRlOwor5o+SID4gaW5zZXJ0Owor6amiID4gZG9ua2V5Owor5YasID4gd2ludGVyOwor5ompID4gZXhwYW5kOwor5qmYID4gb3JhbmdlOwor5qmLID4gYnJpZGdlOwor6YC8ID4gY29tcGVsOwor6ai3ID4gaGFyYXNzOwor5Yi5ID4gdGVtcGxlOwor6ZWcID4gbWlycm9yOwor5rGhID4gZmlsdGh5Owor5qiZID4gYVwtbWFyazsKK+eLsSA+IHByaXNvbjsKK+mokiA+IGhhcmFzczsKK+iIjCA+IHRvbmd1ZTsKK+ajriA+IGZvcmVzdDsKK+iIiCA+IHRocml2ZTsKK+anvSA+IHRyb3VnaDsKK+aAqCA+IGhhdHJlZDsKK+iHvCA+IG1vcnRhcjsKK+S8jyA+IGNyb3VjaDsKK+aEpCA+IHJlc2VudDsKK+S/hCA+IHN1ZGRlbjsKK+WHjSA+IGZyZWV6ZTsKK+anjCA+IGhhbW1lcjsKK+eojSA+IGxpdHRsZTsKK+exjSA+IHJlY29yZDsKK+S+tSA+IGludmFkZTsKK+mYuyA+IGltcGVkZTsKK+aFpyA+IGJyaWdodDsKK+mlkSA+IHN0YXJ2ZTsKK+aZgyA+IGJyaWdodDsKK+iFkSA+IGJvd2VsczsKK+eDgiA+IHJvdHRlbjsKK+WFjiA+IHJhYmJpdDsKK+iFiyA+IGFybXBpdDsKK+WwuCA+IGNvcnBzZTsKK+akvyA+IGZhdGhlcjsKK+WEmCA+IHV0bW9zdDsKK+W0hyA+IGVzdGVlbTsKK+mkkyA+IGh1bmdyeTsKK+akjiA+IGhhbW1lcjsKK+ajuiA+IGNvZmZpbjsKK+eyiSA+IHBvd2RlcjsKK+ebviA+IHNoaWVsZDsKK+mjoiA+IGh1bmdlcjsKK+i9sCA+IHJ1bWJsZTsKK+WluCA+IGNyYWZ0eTsKK+mCpiA+IG5hdGlvbjsKK+ajhCA+IHJlamVjdDsKK+mlvyA+IGh1bmdyeTsKK+aNlSA+IGFycmVzdDsKK+WCsyA+IHN1bW1vbjsKK+airyA+IGxhZGRlcjsKK+aMoyA+IHN0cml2ZTsKK+iBmCA+IGVuZ2FnZTsKK+ainSA+IGNsYXVzZTsKK+iAkCA+IGVuZHVyZTsKK+aigyA+IGFcLWNsdWI7CivpoasgPiBzaGl2ZXI7CivmoZwgPiBjaGVycnk7Civpl7cgPiBnbG9vbXk7CivpoZggPiBkZXNpcmU7CivmgpQgPiByZXBlbnQ7CivpgoAgPiBpbnZpdGU7CivpoqQgPiBzaGl2ZXI7CivpoKwgPiBjaGVla3M7CivpoKQgPiBjaGVla3M7CivmgqMgPiBzdWZmZXI7CivkuJAgPiBiZWdnYXI7Civmn7EgPiBwaWxsYXI7Civmn5ogPiBwb21lbG87Civnv4wgPiBicmlnaHQ7Civmn4QgPiBoYW5kbGU7Civkvq4gPiBpbnN1bHQ7Civpk5wgPiBjb3BwZXI7CivmnpUgPiBwaWxsb3c7CivnvbkgPiBzb3Jyb3c7CivnvbUgPiBhY2N1c2U7CivmnbUgPiBwZXN0bGU7CivmlbIgPiBzdHJpa2U7CivpnaEgPiBkaXZpZGU7Civmia8gPiByaXBcLXVwOwor6Ym0ID4gbWlycm9yOwor6LaLID4gaGFzdGVuOwor5L2QID4gYXNzaXN0Owor6YCKID4gaHVtYmxlOwor6Z2IID4gc3Bpcml0Owor5py0ID4gc2ltcGxlOwor5pytID4gbGV0dGVyOwor5LydID4gc3VtbW9uOwor5LyOID4gdGFsZW50Owor5LiyID4gc3RyaW5nOwor6ZyKID4gc3Bpcml0Owor6ZuyID4gY2xvdWRzOwor54aZID4gYnJpZ2h0Owor5bqZID4gdGVtcGxlOwor5LuPID4gYnVkZGhhOwor6ZuMID4gZmVtYWxlOwor6ZuHID4gZW1wbG95Owor6ZqoID4gZm9sbG93Owor6ZqbID4gYm9yZGVyOwor6ZqOID4gc3RhaXJzOwor6ZqFID4gY29ybmVyOwor6YW3ID4gc3Ryb25nOwor5LmzID4gYnJlYXN0Owor56ijID4gcmV2aXZlOwor6ZmjID4gY29sdW1uOwor57mVID4gcmVwYWlyOwor5pitID4gYnJpZ2h0Owor5qOJID4gY290dG9uOwor5pCcID4gc2VhcmNoOwor57ibID4gdG9cLXRpZTsKK+iwhSA+IGV4Y3VzZTsKK+eDmyA+IGNhbmRsZTsKK+WRiCA+IHN1Ym1pdDsKK+e3miA+IHRocmVhZDsKK+aLkyA+IGV4cGFuZDsKK+aVpiA+IGVzdGVlbTsKK+aVuCA+IG51bWJlcjsKK+aVtyA+IHNwcmVhZDsKK+e1sSA+IGdvdmVybjsKK+iEviA+IHNwbGVlbjsKK+e1oSA+IGVubWVzaDsKK+e0syA+IGdpcmRsZTsKK+m5sCA+IGZhbGNvbjsKK+e0hCA+IHRyZWF0eTsKK+e0gCA+IHJlY29yZDsKK+aEmiA+IHN0dXBpZDsKK+ezniA+IG1hbnVyZTsKK+eypyA+IHRvaWxldDsKK+aSgyA+IHN0cmlrZTsKK+mlpSA+IGh1bmdlcjsKK+mRkiA+IG1pcnJvcjsKK+mAuyA+IHBhdHJvbDsKK+ewoSA+IHNpbXBsZTsKK+mPoSA+IG1pcnJvcjsKK+aPmyA+IGNoYW5nZTsKK+aOoSA+IGdhdGhlcjsKK+W4lSA+IHR1cmJhbjsKK+WGuyA+IGZyZWV6ZTsKK+iwpiA+IGh1bWJsZTsKK+aNnCA+IHNlYXJjaDsKK+S4qyA+IGZvcmtlZDsKK+eFjCA+IGJyaWdodDsKK+aMvyA+IGluc2VydDsKK+aLkCA+IGtpZG5hcDsKK+iNkCA+IHJlcGVhdDsKK+WAqiA+IGZlZWJsZTsKK+mMkCA+IGdpbWxldDsKK+mqmiA+IGhhcmFzczsKK+WvniA+IHNpbGVudDsKK+evriA+IGJhc2tldDsKK+S+hCA+IG5lcGhldzsKK+aLmSA+IHN0dXBpZDsKK+WPiSA+IGNyb3RjaDsKK+aAliA+IHRlcnJvcjsKK+aKnCA+IHVwcm9vdDsKK+eqkyA+IHdpbmRvdzsKK+aKiSA+IGNob29zZTsKK+mKhSA+IGNvcHBlcjsKK+mKgCA+IHNpbHZlcjsKK+iwnCA+IHJpZGRsZTsKK+migSA+IGNvbmZlcjsKK+miiiA+IGNoZWVrczsKK+WSlSA+IG11bWJsZTsKK+iItSA+IHJ1ZGRlcjsKK+aDqSA+IHB1bmlzaDsKK+WSliA+IGNvZmZlZTsKK+mHnSA+IG5lZWRsZTsKK+aHiSA+IHNob3VsZDsKK+WwuSA+IGdvdmVybjsKK+aGpCA+IHJlc2VudDsKK+a3syA+IGhvbmVzdDsKK+eMtCA+IG1vbmtleTsKK+W8piA+IHN0cmluZzsKK+e8miA+IHRvXC10aWU7CivmhYsgPiBtYW5uZXI7CivmhYQgPiBzaGl2ZXI7CivpmYsgPiBuYXJyb3c7Civpg7UgPiBwb3N0YWw7CivnqoQgPiBuYXJyb3c7CivpqbQgPiBkb25rZXk7Civlo7MgPiBjYXNpbmc7CivpnIkgPiBtaWxkZXc7CivoiqYgPiBydXNoZXM7Civog7MgPiBhcm1waXQ7CivmgrwgPiBncmlldmU7CivmgrYgPiBnbG9vbXk7CivpgI0gPiByYW1ibGU7CivmgrQgPiBzdWZmZXI7CivogI0gPiBmcm9saWM7CivnsqogPiBtYW51cmU7CivmjYYgPiB0aWVcLXVwOwor6YG4ID4gY2hvb3NlOwor6YGcID4gaHVtYmxlOwor5YWUID4gcmFiYml0Owor6YGKID4gd2FuZGVyOwor6YCbID4gcmFtYmxlOwor5YyIID4gYnJlYXN0Owor6K69ID4gcmVjaXRlOwor5oujID4gY2hvb3NlOwor6IC/ID4gYnJpZ2h0Owor5bu/ID4gdHdlbnR5Owor6K+1ID4gcmVjaXRlOwor6IW7ID4gZ3JlYXN5Owor57yGID4gaGF3c2VyOwor6Z6RID4gdGF0YXJzOwor5rCTID4gcGVvcGxlOwor5oW3ID4gYXJkZW50Owor56+3ID4gYXduaW5nOwor6I2GID4gdGhvcm5zOwor6IaPID4gZ3JlYXNlOwor6Z6NID4gc2FkZGxlOwor6bigID4gcGlnZW9uOwor57yVID4gdGhyZWFkOwor552sID4gbm90aWNlOwor57ulID4gc29vdGhlOwor5rCnID4gb3h5Z2VuOwor5am3ID4gcHJldHR5Owor5aesID4gYmVhdXR5Owor5ZCtID4gdGhyb2F0Owor5Ye/ID4gY2hpc2VsOwor5o2CID4gcmVzaXN0Owor5berID4gd2l6YXJkOwor6Jm+ID4gc2hyaW1wOwor57uFID4gZ2lyZGxlOwor6ZW2ID4gaW5zZXJ0Owor6aKQID4gY2hlZWtzOwor5YigID4gdG9cLWN1dDsKK+iuvCA+IGFjY3VzZTsKK+S8tiA+IGxvbmVseTsKK+eCryA+IGJyaWdodDsKK+m4vSA+IHBpZ2VvbjsKK+a4nSA+IGNoYW5nZTsKK+akkiA+IHBlcHBlcjsKK+aPliA+IHNhbHV0ZTsKK+WGiSA+IHRlbmRlcjsKK+WSmSA+IHRocm9hdDsKK+i4sSA+IHN0cm9sbDsKK+eMrCA+IHZ1bGdhcjsKK+WxvyA+IGlzbGFuZDsKK+S/kCA+IHNtb290aDsKK+ikgiA+IGphY2tldDsKK+ezmSA+IGNvYXJzZTsKK+mXuCA+IHNsdWljZTsKK+mikyA+IHJ1aW5lZDsKK+WxiSA+IGRyYXdlcjsKK+iKuSA+IGNlbGVyeTsKK+mUpSA+IGdpbWxldDsKK+WIgSA+IHRyaWNreTsKK+abmSA+IGJyaWdodDsKK+a0vCA+IGhvbGxvdzsKK+eakyA+IGJyaWdodDsKK+iSnCA+IGdhcmxpYzsKK+eCsyA+IGJyaWdodDsKK+a4oyA+IHJlZnVzZTsKK+aFkSA+IGFmcmFpZDsKK+aosSA+IGNoZXJyeTsKK+W/jyA+IHJlZ3JldDsKK+eiviA+IHJvbGxlcjsKK+eWmSA+IHBpbXBsZTsKK+a8iSA+IGZpbHRlcjsKK+mapyA+IHR1bm5lbDsKK+mFpSA+IGJ1dHRlcjsKK+mSriA+IGJ1dHRvbjsKK+mamCA+IG5hcnJvdzsKK+a8sSA+IGdhcmdsZTsKK+eblCA+IGhlbG1ldDsKK+ejiyA+IHBvbGlzaDsKK+aDtCA+IGFmcmFpZDsKK+iViSA+IGJhbmFuYTsKK+aDiyA+IHJlZ3JldDsKK+eXsCA+IHBobGVnbTsKK+e+gSA+IGhhbHRlcjsKK+ivjyA+IGRlY3JlZTsKK+mdtiA+IHRhcmdldDsKK+mFnSA+IGxpcXVvcjsKK+afrCA+IGxldHRlcjsKK+S6tSA+IHNsaWdodDsKK+iygiA+IG1hcnRlbjsKK+iBhiA+IGxpc3RlbjsKK+aviyA+IGRvXC1ub3Q7Civpn6wgPiBzaGVhdGg7CivpuYogPiBtYWdwaWU7CivmlZYgPiByYW1ibGU7CivohrogPiBicmVhc3Q7CivmgpogPiBhZnJhaWQ7CivljYUgPiB0aGlydHk7CivlvrUgPiBzdW1tb247CivnorMgPiBjYXJib247Civmh7UgPiBzdHVwaWQ7CivpuasgPiBjb25kb3I7CivnoasgPiBzdWxmdXI7CivouJ4gPiBjcm91Y2g7CivplbAgPiBzaWNrbGU7Civmto4gPiBzYWxpdmE7Civlo5UgPiB0cmVuY2g7CivplJogPiBhbmNob3I7CivpkqAgPiBzb2RpdW07Civnnb8gPiBzaHJld2Q7CivojrogPiBvcmlvbGU7Civom4ogPiBwb2lzb247Civng6ggPiBicmlnaHQ7Civog68gPiBwZWx2aXM7Civot7sgPiBhc2NlbmQ7Civps5YgPiB0dXJ0bGU7CivohbwgPiBtb2Rlc3Q7CivmqZkgPiBvcmFuZ2U7CivkuJ4gPiBhc3Npc3Q7CivlqJMgPiBjb21wbHk7CivliI4gPiBiZWhlYWQ7CivouZkgPiB1cmdlbnQ7Civog5ogPiBlbWJyeW87CivojZQgPiBsaWNoZWU7Civpk78gPiBzdHJpa2U7CivplLUgPiB0aW5rbGU7CivojKcgPiBjb2Nvb247Civon5IgPiBweXRob247CivopLQgPiByYWdnZWQ7CivpuYMgPiBjdWNrb287CivnjKUgPiB2dWxnYXI7CivnjZcgPiB1bnJ1bHk7Civokq8gPiBhXC1ydXNoOwor5rKPID4gaW5mdXNlOwor5bOqID4gdmFsbGV5Owor5ZqPID4gc25lZXplOwor56C+ID4gZ3JhdmVsOwor6aaBID4gaHVuZ3J5Owor5L2fID4gYVwtbmFtZTsKK+iMnCA+IG1hZGRlcjsKK+aJiCA+IGVzY29ydDsKK+WSmyA+IGVuam9pbjsKK+azlyA+IG11Y291czsKK+iDhCA+IGhlbG1ldDsKK+mUuSA+IHNob3ZlbDsKK+m5lyA+IG9zcHJleTsKK+WEoSA+IHB1cHBldDsKK+eaiCA+IGZvbGxvdzsKK+iegiA+IG1hbnRpczsKK+iLkyA+IGZ1bmd1czsKK+WqmyA+IGJlYXV0eTsKK+eutCA+IG5lZWRsZTsKK+WPtSA+IGNhbm5vdDsKK+S7gyA+IGxvbmVseTsKK+adniA+IHdpbGxvdzsKK+WvriA+IHNoYW50eTsKK+e8riA+IHJlcGFpcjsKK+eKtyA+IGZpZXJjZTsKK+aysSA+IHJpdmVyczsKK+WOqSA+IHN0YWJsZTsKK+eWoSA+IHVsY2VyczsKK+WekyA+IGJvcmRlcjsKK+W+lSA+IGluZHVjZTsKK+angSA+IHdpdGhlcjsKK+mBtCA+IHNlbGVjdDsKK+WcuyA+IGJvcmRlcjsKK+m+iiA+IG5hcnJvdzsKK+m+jCA+IG5hcnJvdzsKK+mBqCA+IHJhbWJsZTsKK+mqmyA+IGdhbGxvcDsKK+W+iSA+IHdvbmRlcjsKK+iwqiA+IGNoYXJnZTsKK+S/miA+IHJ1c3RpYzsKK+mUqCA+IHNob3ZlbDsKK+mUgyA+IHBvbGlzaDsKK+S/qiA+IHNwb3VzZTsKK+mUsiA+IHNpY2tsZTsKK+elmiA+IHRocm9uZTsKK+iHviA+IG1vbWVudDsKK+mBkiA+IHN0cm9uZzsKK+WbuSA+IHByaXNvbjsKK+WstCA+IHRvXC13aW47Civng6kgPiByYWdvdXQ7CivlnIQgPiBwcmlzb247CivonqsgPiBwb2lzb247Civpk6QgPiBpbmdvdHM7CivonrMgPiBtYW50aXM7CivojIEgPiBzcHJvdXQ7CivoiKIgPiBzYW1wYW47Civoir4gPiBmbG93ZXI7Civni7IgPiBtb25rZXk7CivnopwgPiBncml0dHk7Civlg60gPiBhc3N1bWU7CivnopggPiBpb2RpbmU7Civng68gPiBhbGtlbmU7Civlm78gPiBwZW5cLXVwOwor5ZurID4gZW50aXJlOwor6KShID4gZ2lyZGxlOwor6ZWNID4gbmlja2VsOwor54WcID4gYnJpZ2h0Owor5qmQID4gYVwtc2FjazsKK+adtyA+IGxvcXVhdDsKK+aBuSA+IGZlZWJsZTsKK+W9gCA+IGVub3VnaDsKK+iBkiA+IGNsYW1vcjsKK+e+ryA+IHdldGhlcjsKK+eysiA+IHBvbGlzaDsKK+aehyA+IGxvcXVhdDsKK+enoyA+IGZvZGRlcjsKK+aovSA+IGdvYmxldDsKK+aluSA+IGNvbHVtbjsKK+eEliA+IHNpbW1lcjsKK+edkSA+IGV5ZWxpZDsKK+i9syA+IHB1bGxleTsKK+aumiA+IHV0bW9zdDsKK+mVrSA+IHJhZGl1bTsKK+auhCA+IHRvXC1lbmQ7Civor7AgPiBpbmZvcm07CivpuYQgPiB0YXJnZXQ7CivojoUgPiBhdHRlbmQ7CivosJ8gPiBzY2hlbWU7CivorqsgPiBmaW5pc2g7Civnj7IgPiBicmlnaHQ7Civmt6wgPiB0ZW1wZXI7CivlmKwgPiB0b1wtbGFwOwor5L22ID4gc3Ryb25nOwor5pmUID4gYnJpZ2h0Owor6IibID4gb3Bwb3NlOwor54O3ID4gYWxrYW5lOwor6JuOID4gb3lzdGVyOwor54SxID4gZmxhbWVzOwor6JylID4gbGl6YXJkOwor5ZycID4gY2lyY2xlOwor6Jy0ID4gbGl6YXJkOwor6JG6ID4gdGhhdGNoOwor5oiGID4gc3R1cGlkOwor5ay3ID4gbW90aGVyOwor5oG9ID4gZGV2aXNlOwor6JO/ID4gY2xvdmVyOwor55iMID4gc2V2ZXJlOwor5ZaxID4gZ3JhbW1lOwor6ZK0ID4gY29iYWx0Owor5bKZID4gaXNsYW5kOwor6LKJID4gYmFkZ2VyOwor57mHID4gcmVhc29uOwor6JyJID4gbWF5Zmx5Owor55aWID4gcGltcGxlOwor57q+ID4gbG9vc2VuOwor6bKRID4gc2FsbW9uOwor5aiIID4gbG92ZWx5Owor6I2oID4gbmV0dGxlOwor56umID4gcmV2ZXJlOwor54uSID4gYmFib29uOwor5pKEID4gb3Bwb3NlOwor6Ji8ID4gbWlsbGV0Owor6Iy0ID4gZmVubmVsOwor6bKmID4gbWlubm93Owor5riMID4gc3RyYWluOwor6ZiaID4gZ2xhbmNlOwor6IucID4gY2xvdmVyOwor5YGsID4gdXJnZW50Owor54+QID4gZW5hbWVsOwor6Z2bID4gaW5kaWdvOwor6bunID4gYVwtZGFyazsKK+eihyA+IGFuY2hvcjsKK+igkyA+IG1pZGdlczsKK+apvCA+IGNpdHJ1czsKK+iVniA+IGxpdHRsZTsKK+WcryA+IGJyaWRnZTsKK+mtjSA+IGRlbW9uczsKK+e/iiA+IGZseWluZzsKK+mVjyA+IGRpc3RpbDsKK+eikyA+IHBlc3RsZTsKK+iDvCA+IGNhbGx1czsKK+aMiCA+IGFzc2lzdDsKK+eKjyA+IHlha1wtb3g7CivmgpsgPiByZXBlbnQ7Civli5YgPiBlbmpvaW47CivnsYAgPiByZWNpdGU7CivnopogPiBzdWJ1cmI7Civoha0gPiBwYWxhdGU7Civps58gPiBiYXJiZWw7Civpm44gPiBvc3ByZXk7CivmroIgPiB0b1wtZGllOwor562aID4gd2lja2VyOwor55adID4gaGVybmlhOwor6aqAID4gYW5cLW9sZDsKK+iSlyA+IFwoaGVyYlwpOwor6JG4ID4gYWZyYWlkOwor6I+fID4gZG9kZGVyOwor6ZmJID4gZGVmaWxlOwor562yID4gYmFza2V0Owor55agID4gYVwtc29yZTsKK+eVmyA+IGJvcmRlcjsKK+aXsCA+IHN1bnNldDsKK+iKqiA+IGNlbGVyeTsKK+iwliA+IGZvcmdldDsKK+aViSA+IHBhY2lmeTsKK+iBjSA+IGVhcndheDsKK+mUhyA+IG9zbWl1bTsKK+eDgCA+IHNpbW1lcjsKK+WppyA+IG1vZGVzdDsKK+iPmCA+IGNlbGVyeTsKK+mSoSA+IGJhcml1bTsKK+idoyA+IG1heWZseTsKK+iatSA+IG95c3RlcjsKK+iluyA+IGFcLWxvb3A7Civpk5IgPiBlcmJpdW07Civpk4ggPiBjZXJpdW07CivmpLQgPiBwb3BsYXI7CivlrLIgPiBmcm9saWM7Civoi6EgPiBiYXJsZXk7CivoiIQgPiBhXC1zaG9lOwor6J2+ID4gbGl6YXJkOwor6JypID4gY2ljYWRhOwor6birID4gdGhydXNoOwor6ZSUID4gY3VyaXVtOwor6ZOfID4gaW5kaXVtOwor55yNID4gc3Vua2VuOwor54mWID4gd2luZG93Owor5qaHID4gY29mZmluOwor5qG3ID4gcmFmdGVyOwor5bmeID4gdHVyYmFuOwor5bi7ID4gdHVyYmFuOwor5ZyJID4gc3RhYmxlOwor5pGFID4gc3ByZWFkOwor6IuEID4gYmVuenlsOwor6ZmUID4gYVwtc3RlcDsKK+WIvyA+IHRvXC1jdXQ7CivpqrYgPiBjb2NjeXg7CivpsrsgPiBtdWxsZXQ7CivonqggPiBpbnNlY3Q7CivombwgPiBhXC1mbGVhOwor55iVID4gYXN0aG1hOwor6ZWYID4gdHJvd2VsOwor56OZID4gcm9sbGVyOwor6IOCID4gYXJzaW5lOwor6KeLID4gd2l6YXJkOwor6JOlID4gcG9saXNoOwor6I+UID4gdHVybmlwOwor5LuhID4gc3Ryb25nOwor6b6eID4gdHVydGxlOwor6b6dID4gYXV0dW1uOwor6b6NID4gZHJhZ29uOwor6b23ID4gbmFycm93Owor6b22ID4gcGFsYXRlOwor6b21ID4gdW5ldmVuOwor6b2qID4gbmFycm93Owor6byrID4gbWFybW90Owor6byqID4gd2Vhc2VsOwor6byUID4gYVwtZHJ1bTsKK+m8hSA+IHNwaWRlcjsKK+m7jCA+IHNjaG9vbDsKK+m7iSA+IHNjaG9vbDsKK+m7iCA+IHllbGxvdzsKK+m7gyA+IHllbGxvdzsKK+m6sCA+IGJhcmxleTsKK+m6hCA+IGNvYXJzZTsKK+m5qCA+IGFudGh1czsKK+m3miA+IGFudGh1czsKK+m3hyA+IGNoaWNrczsKK+m2vSA+IGFcLWhhd2s7CivptrggPiBzaXNraW47Civptq8gPiBvcmlvbGU7CivptqwgPiBvcmlvbGU7CivptqsgPiB0aHJ1c2g7CivptpogPiBvc3ByZXk7CivptoogPiBvcmlvbGU7CivptocgPiB0aHJ1c2g7CivptbsgPiBwaWdlb247CivptbIgPiBtYWdwaWU7CivptaAgPiB0YXJnZXQ7CivptZEgPiBjdWNrb287CivptYAgPiBob29wb2U7CivptL8gPiBwaWdlb247CivptKwgPiBvcmlvbGU7CivptKIgPiBcKGR1Y2tcKTsKK+m0gyA+IHNocmlrZTsKK+mxkiA+IGJhcmJlbDsKK+mxjiA+IFwoZmlzaFwpOwor6bGJID4gdHVydGxlOwor6bGGID4gcG91bHBlOwor6bC3ID4gbWlubm93Owor6bCVID4gc2hyaW1wOwor6a+UID4gbXVsbGV0Owor6a6tID4gc2FsbW9uOwor6a21ID4gc2hyaW1wOwor6amrID4gaG9yc2VzOwor6aikID4gbGl2ZWx5Owor6aiWID4gZ2FsbG9wOwor6aiDID4gc3R1cGlkOwor6aehID4gYWNjdXNlOwor6aeYID4gYW5cLW9sZDsKK+mnkyA+IGdhbGxvcDsKK+mngyA+IGdhbGxvcDsKK+mmvyA+IGFuXC1hc3M7CivppKQgPiBpbmNpdGU7CivppJIgPiBodW5ncnk7CivpoZwgPiBob25lc3Q7CivpoZIgPiBzb2xlbW47CivpoZEgPiB5ZWxsb3c7CivpoL0gPiBydWluZWQ7CivpoLkgPiBydWluZWQ7CivpoLAgPiBjaGVla3M7CivpoJ4gPiBicmlkZ2U7CivpoJIgPiBjb25mZXI7CivpoIkgPiBjaGVla3M7Civpn5wgPiBzaGVhdGg7Civpn4MgPiB0YXRhcnM7Civpnp4gPiBzaGVhdGg7CivpnpogPiBicmlkbGU7Civpna4gPiBicmlkbGU7Civpm4IgPiBcKGJpcmRcKTsKK+mauyA+IHNpbmdsZTsKK+mZrCA+IGNvcm5lcjsKK+mZnCA+IG5hcnJvdzsKK+mZmCA+IGRlZmlsZTsKK+mXniA+IGdsYW5jZTsKK+mXiSA+IGN1cnZlZDsKK+mWmCA+IHNsdWljZTsKK+mVoSA+IGRhZ2dlcjsKK+mTryA+IGNlc2l1bTsKK+mRvyA+IGNoaXNlbDsKK+mRsiA+IGluc2VydDsKK+mRniA+IHNvbGRlcjsKK+mRkSA+IG1pcnJvcjsKK+mRgCA+IGlvbml1bTsKK+mQsyA+IHJhZGl1bTsKK+mQriA+IHNpY2tsZTsKK+mQnSA+IGFcLXBpY2s7CivpkJQgPiBkYWdnZXI7Civpj50gPiB0cm93ZWw7Civpj5ggPiB0aW5rbGU7Civpj5cgPiBzdHJpa2U7CivpjrMgPiBuaWNrZWw7CivpjqYgPiBkaXN0aWw7CivpjqMgPiBwb2xpc2g7CivpjpogPiBoYW1tZXI7CivpjpIgPiB0b1wtaG9lOwor6Y6MID4gc2lja2xlOwor6Y6FID4gdG9cLXNhdzsKK+mNvCA+IG5lZWRsZTsKK+mNrCA+IHNob3ZlbDsKK+mNqyA+IHNob3ZlbDsKK+mNpSA+IHNpY2tsZTsKK+mNoCA+IHdlYXBvbjsKK+mMqSA+IHZlc3NlbDsKK+mMqCA+IGFuY2hvcjsKK+mLqCA+IG9zbWl1bTsKK+mLpiA+IGN1cml1bTsKK+mLmSA+IG1pc2ZpdDsKK+mLjCA+IGluZ290czsKK+mLhyA+IGJhcml1bTsKK+mLhSA+IHppbmN1bTsKK+mKtiA+IGNoaXNlbDsKK+mKsiA+IHNvbGRlcjsKK+mKqyA+IGNlc2l1bTsKK+mKpiA+IGluZGl1bTsKK+mJuiA+IGVyYml1bTsKK+mJpSA+IG5lZWRsZTsKK+mItyA+IGNvYmFsdDsKK+mIsCA+IGNlcml1bTsKK+mIlSA+IGJ1dHRvbjsKK+mIiSA+IHNvZGl1bTsKK+mHrCA+IHNvbGRlcjsKK+mHpiA+IGJ1dHRvbjsKK+mHkCA+IG1hbmFnZTsKK+mHgyA+IHN0cmFpbjsKK+mGniA+IGxpcXVvcjsKK+mGliA+IGxpcXVvcjsKK+mFviA+IHN0cmFpbjsKK+mFtCA+IGxlYXZlbjsKK+mEiyA+IGNvdW50eTsKK+mCjyA+IHBhdHJvbDsKK+mAsCA+IHdhbmRlcjsKK+mApSA+IHJldHVybjsKK+mAjiA+IHN0cm9uZzsKK+mAjCA+IHBsZWFzZTsKK+i/ryA+IGVzY2FwZTsKK+i/jSA+IGZhbHRlcjsKK+i/iyA+IHRyYXZlbDsKK+i+pyA+IG1hbmFnZTsKK+i+piA+IG1hbmFnZTsKK+i+oiA+IGJpdHRlcjsKK+i9pCA+IHB1bGxleTsKK+i9nCA+IGhlYXJzZTsKK+i9gCA+IGhlYXJzZTsKK+i8gCA+IGhlYXJzZTsKK+i7oyA+IHJ1bWJsZTsKK+i6pyA+IHNhbmRhbDsKK+i6iyA+IGFzY2VuZDsKK+i5uyA+IHN0cm9uZzsKK+i5nSA+IHNhbmRhbDsKK+i5kyA+IHN0cm9sbDsKK+i4oSA+IGN1cmxlZDsKK+i3pyA+IGNyb3VjaDsKK+i2qyA+IG5pbWJsZTsKK+i2qCA+IGhhc3RlbjsKK+i2lSA+IHB1cnN1ZTsKK+i0syA+IGJvcnJvdzsKK+izniA+IHJld2FyZDsKK+iyrSA+IG1hdHRlcjsKK+iyqiA+IGdyZWVkeTsKK+iynyA+IG1lbWJlcjsKK+iymyA+IGJhZGdlcjsKK+ixuyA+IHByaXNvbjsKK+iwvyA+IHZhbGxleTsKK+iumiA+IHByYWlzZTsKK+iugSA+IHB1bmlzaDsKK+itnyA+IGNsYW1vcjsKK+itjSA+IGFuc3dlcjsKK+ithiA+IHNjcmVhbTsKK+isqyA+IGNoYXJnZTsKK+isqCA+IHNjaGVtZTsKK+irvCA+IGZvcmdldDsKK+irtyA+IHJlY2l0ZTsKK+irtSA+IG11dHRlcjsKK+irkiA+IGV4Y3VzZTsKK+iqpiA+IHJlY2l0ZTsKK+iqpSA+IGluZm9ybTsKK+ipuyA+IG9yZGVyczsKK+iplyA+IHRvXC1zcHk7CivoqZQgPiBkZWNyZWU7CivoqJYgPiBmaW5pc2g7Civop7wgPiBidWNrbGU7Civop6kgPiBzdHJvbmc7Civop6cgPiBsb29zZW47Civop5UgPiBjb2Fyc2U7CivoprAgPiB0b1wtc3B5Owor6KahID4gd2l6YXJkOwor6KaKID4gaGFsdGVyOwor6KWuID4gY29sbGFyOwor6KWLID4gY29sbGFyOwor6KSmID4gc3R1cGlkOwor6KSPID4gc2xlZXZlOwor6KSOID4gc2xlZXZlOwor6KKaID4gZ3JlYXZlOwor6KCxID4gcG9pc29uOwor6KCpID4gYVwtdG9hZDsKK+igoyA+IG95c3RlcjsKK+igmSA+IG95c3RlcjsKK+iglCA+IG95c3RlcjsKK+igkSA+IGxpemFyZDsKK+igjiA+IHB5dGhvbjsKK+iggSA+IGxhcnZhZTsKK+iftyA+IG1hbnRpczsKK+ifrCA+IGNpY2FkYTsKK+ifnCA+IGluc2VjdDsKK+idpiA+IHNocmltcDsKK+iciyA+IG1hbnRpczsKK+ibryA+IHNocmltcDsKK+iboyA+IGJlZXRsZTsKK+ibjCA+IGNyaWNrZTsKK+iZqSA+IGZyaWdodDsKK+iZliA+IHRvXC1jcnk7CivomKQgPiBmbG93ZXI7CivomIYgPiBydXNoZXM7Civol5ggPiBtYWRkZXI7Civolr8gPiBmbG93ZXI7CivolpcgPiBnYXJkZW47CivolpEgPiBnaW5nZXI7CivolYYgPiBmaW5pc2g7CivolYIgPiBzZXNhbWU7CivolYEgPiBuZXR0bGU7CivolJkgPiBcKGhlcmJcKTsKK+iUlCA+IHJhZGlzaDsKK+iUgiA+IGJhc2tldDsKK+iUgCA+IHNjcmVlbjsKK+iTmiA+IG94YWxpYzsKK+iSjiA+IHBpbmFuZTsKK+iShyA+IGZpbmlzaDsKK+iRgSA+IGdpbmdlcjsKK+iQhSA+IHNwcmluZzsKK+iPhiA+IGp1bmdsZTsKK+iOtSA+IGRvZGRlcjsKK+iNiiA+IHRob3JuczsKK+iNgSA+IGNlbGVyeTsKK+iMpiA+IHRob3JuczsKK+iMoiA+IHNlZGdlczsKK+iLqiA+IGJyaWdodDsKK+iLoiA+IGJhcmxleTsKK+iKpCA+IGhvbGxvdzsKK+iJoiA+IGFcLW1hc3Q7CivoiKYgPiBydWRkZXI7CivoiIMgPiBhXC1zaG9lOwor6IeEID4gcGFsYXRlOwor6IapID4gZ3JlYXN5Owor6IajID4gdmFnaW5hOwor6IaVID4gaG9sbG93Owor6IWvID4gc3Ryb25nOwor6IWfID4gdmFnaW5hOwor6IWBID4gY2FsbHVzOwor6IS3ID4gdG9uZ3VlOwor6IS1ID4gdGhpZ2hzOwor6ISnID4gcmVkdWNlOwor6IO5ID4gY29va2VkOwor6IO3ID4gYnJlYXN0Owor6IKnID4gZW1icnlvOwor6IKQID4gYXJtcGl0Owor6IG5ID4gZWFyd2F4Owor6ICkID4gcGxvdWdoOwor5761ID4gc3Bpcml0Owor576IID4gaGFsdGVyOwor572rID4gaGluZGVyOwor572lID4gaW1wZXRlOwor572jID4gaGluZGVyOwor57qpID4gY290dG9uOwor57qcID4gaGF3c2VyOwor57qUID4gdGFsZW50Owor57qKID4gY290dG9uOwor57mtID4gY29jb29uOwor57mrID4gYXR0YWNoOwor57moID4gYVwta25vdDsKK+e5iyA+IGF0dGFjaDsKK+e4tyA+IHRocmVhZDsKK+e4oyA+IGNvdW50eTsKK+e4oSA+IG1hdHRlcjsKK+e4hiA+IGFcLXJvcGU7Civnt6ogPiBhXC1yb3BlOwor57aPID4gc29vdGhlOwor57aFID4gdGhyZWFkOwor57W/ID4gdXJnZW50Owor57WaID4gYVwtcm9wZTsKK+e0siA+IGJyaWRsZTsKK+e0qSA+IHRvXC1zZXc7CivntJ8gPiBhXC1zYXNoOwor57SYID4gc3RyaW5nOwor57STID4gbG9vc2VuOwor57SDID4gYVwtY29yZDsKK+ezqCA+IHN0YXJjaDsKK+ezoSA+IHN0YXJjaDsKK+exsiA+IGFwcGVhbDsKK+exmiA+IGJhbWJvbzsKK+exgyA+IGJhc2tldDsKK+ewnCA+IGJhbWJvbzsKK+ewiSA+IGRlcHV0eTsKK+evsyA+IHdpY2tlcjsKK+evpSA+IGJ1bGdsZTsKK+evnCA+IGJhbWJvbzsKK+eumSA+IHF1aXZlcjsKK+essiA+IGJhc2tldDsKK+ernCA+IGRyYWdvbjsKK+eriSA+IGFcLWhvbGU7CivnqqogPiBob2xsb3c7CivnqpQgPiBjb3JuZXI7CivnqakgPiBzdGFibGU7CivnqaggPiBydWluZWQ7CivnqYwgPiByZXZpdmU7CivnqYggPiBtaWxsZXQ7CivnqJwgPiBjb3JuZXI7Civnp6AgPiBtaWxsZXQ7CivnpqYgPiBkZWZlbmQ7CivnpY8gPiBzaHJpbmU7CivnpKsgPiBncmF2ZWw7Civno6MgPiBncml0dHk7CivnorwgPiBudW1iZXI7Civnob4gPiB3ZWlnaHQ7CivnoY0gPiBzdHJpa2U7Civnn7QgPiBhbmNob3I7Civnn4cgPiBzdHVwaWQ7CivnnrcgPiB0b1wtc3B5Owor552qID4gc3B5XC1vbjsKK+edhiA+IGJyaWdodDsKK+ecviA+IG1hc3NlczsKK+ebqSA+IGNhbGx1czsKK+eapSA+IGJyaWdodDsKK+eaoSA+IGJyaWdodDsKK+eaniA+IGJyaWdodDsKK+eagCA+IGtlcm5lbDsKK+eZpCA+IHBpbXBsZTsKK+eZmCA+IGFcLXNvcmU7CivnmI0gPiB1bGNlcnM7Civnl7sgPiBzdWZmZXI7Civnl5ogPiBhc3RobWE7CivnlokgPiByZXBlYXQ7CivnloMgPiBoYW1sZXQ7CivnloIgPiByZXBlYXQ7Civnlb0gPiBncm91bmQ7Civnla8gPiBydXN0aWM7CivnlZ8gPiBwbG91Z2g7CivnkL8gPiBicmlnaHQ7CivnkLogPiBlbmFtZWw7Civnj5QgPiBcKGphZGVcKTsKK+eOkyA+IHBlYXJseTsKK+eNtyA+IGZpZXJjZTsKK+eNiSA+IGp1bmdsZTsKK+eMuyA+IG1vbmtleTsKK+eMuiA+IGphY2thbDsKK+eMkyA+IG1vbmtleTsKK+eLpSA+IGZvbGxvdzsKK+eKuiA+IGFuaW1hbDsKK+eJlSA+IHdpbmRvdzsKK+eJkyA+IHRhYmxldDsKK+eJkCA+IHNsdWljZTsKK+eIpSA+IHNpbW1lcjsKK+eImiA+IGJyaWdodDsKK+eHtCA+IHJhZ291dDsKK+eHoSA+IGJyaWdodDsKK+eHnCA+IHNpbW1lcjsKK+eHiyA+IHNjb3JjaDsKK+eHgSA+IGJyaWdodDsKK+eGsiA+IGJyaWdodDsKK+eGiCA+IGJyaWdodDsKK+eFlSA+IGJyaWdodDsKK+eFgyA+IHJlbW92ZTsKK+eFgSA+IGhlYXJ0aDsKK+eEuyA+IGJyZWF0aDsKK+eEtCA+IGJyaWdodDsKK+eEoCA+IHRlbXBlcjsKK+eDuiA+IGJyaWdodDsKK+eDsSA+IGJyaWdodDsKK+eCgSA+IGJyZWF0aDsKK+eAkiA+IGNvYXJzZTsKK+eAjCA+IHBsZW50eTsKK+a/tSA+IGFcLWJhbms7Civmv6wgPiBkcmVkZ2U7CivmvrwgPiBibGVhY2g7CivmvaggPiBnYXRoZXI7CivmvYAgPiBnYXRoZXI7CivmvKYgPiBzYWxpdmE7CivmuKggPiBhXC1jb3ZlOwor5relID4gc3RyYWluOwor5refID4gdHVyYmlkOwor5rSfID4gc25pdmVsOwor5rOtID4gYVwtcmFmdDsKK+axmSA+IGZpbHRoeTsKK+awvyA+IHNwcmluZzsKK+awqyA+IGFtb25pYTsKK+auvCA+IGNhc2luZzsKK+auqyA+IHV0bW9zdDsKK+asuyA+IHN1ZGRlbjsKK+askSA+IGdhdGhlcjsKK+arrCA+IGNvZmZpbjsKK+arniA+IGNpdHJ1czsKK+arnCA+IHF1aXZlcjsKK+apsCA+IGFcLXNwYXI7CivmqasgPiBhY3Jvc3M7CivmqaQgPiBzdGFtZW47CivmqZwgPiBhXC1wb3N0Owor5qmVID4gYVwtcHJvcDsKK+aovyA+IGNvZmZpbjsKK+aouCA+IHNpbXBsZTsKK+aosiA+IGp1anViZTsKK+aokSA+IGJyaWRnZTsKK+anpSA+IGNvZmZpbjsKK+amsiA+IHBpbGxhcjsKK+amsSA+IHJhZnRlcjsKK+ampSA+IHNjcmVlbjsKK+amhSA+IHBpbGxhcjsKK+alryA+IHNoaWVsZDsKK+alrCA+IHRhYmxldDsKK+aloiA+IHRpbmRlcjsKK+almyA+IGNvYXJzZTsKK+aliiA+IHdpbGxvdzsKK+akpyA+IGd1dHRlcjsKK+akkyA+IHN0cmlrZTsKK+ajnCA+IGJyYW5jaDsKK+ajhSA+IGhhbmRsZTsKK+ajgyA+IGFcLXBlYXI7CivmobIgPiBxdWluY2U7Civmn7IgPiBoYW5kbGU7CivmnbQgPiBzaG92ZWw7CivmnYcgPiBsb3F1YXQ7CivmnJkgPiBicmlnaHQ7Civmm6EgPiByZXBlYXQ7Civmm40gPiBicmlnaHQ7Civmm4UgPiBicmlnaHQ7Civmm4QgPiBicmlnaHQ7Civmm4AgPiBzdG9ybXk7CivmmrsgPiBicmlnaHQ7CivmmrggPiBicmlnaHQ7CivmmrIgPiBicmlnaHQ7CivmmosgPiBzdHJvbmc7CivmmZwgPiBpbnNlY3Q7CivmmYQgPiBicmlnaHQ7CivmmLogPiBicmlnaHQ7CivmmJ4gPiBicmlnaHQ7CivmmJEgPiBicmlnaHQ7Civml7sgPiBoZWF2ZW47Civml50gPiBiYW5uZXI7CivmlbkgPiB0b1wtc2V3Owor5pWhID4gcmVidWtlOwor5pWDID4gc3Ryb25nOwor5pWCID4gZGVkdWN0Owor5pSWID4gb3Bwb3NlOwor5pSEID4gc3ByZWFkOwor5pO9ID4gdGlja2xlOwor5pO0ID4gZXhwYW5kOwor5pOWID4gc2NyYXBlOwor5pOTID4gdG9cLXJ1YjsKK+aTiiA+IHN0cmlrZTsKK+aThyA+IHNlbGVjdDsKK+aSpiA+IHJpcFwtdXA7CivmkoogPiBmaWVyY2U7CivmkL8gPiB0b1wtaHVnOwor5o+3ID4gaW5zZXJ0Owor5o+uID4gZGlyZWN0Owor5o+XID4gc3RyaWtlOwor5o+AID4gY2hvb3NlOwor5o6kID4gcXVpdmVyOwor5o6UID4gc3R1cmR5Owor5o29ID4gY2x1dGNoOwor5o28ID4gdG9cLXJ1YjsKK+aNkyA+IHN0cml2ZTsKK+aNgyA+IGdhdGhlcjsKK+aLoSA+IGV4cGFuZDsKK+aKniA+IHNlbGVjdDsKK+aJkCA+IGRpdmluZTsKK+aJhiA+IHNjcmVlbjsKK+aInSA+IHBpcmF0ZTsKK+aIhyA+IHN0dXBpZDsKK+aHviA+IGFmcmFpZDsKK+aHuiA+IHJlZ3JldDsKK+aHtCA+IHJlZ3JldDsKK+aHsiA+IHB1bmlzaDsKK+aHqCA+IGZlZWJsZTsKK+aGpiA+IHJlZ3JldDsKK+aEvSA+IGdhbWJsZTsKK+aErCA+IGFjY3VzZTsKK+aDsiA+IGRldmlzZTsKK+aDqiA+IGV0aGljczsKK+aDjiA+IGluanVyZTsKK+aCsyA+IGV0aGljczsKK+aCpyA+IHNtb290aDsKK+aCniA+IGltcGVkZTsKK+aCiyA+IHN0aW5neTsKK+aBoSA+IHN0aW5neTsKK+aBnyA+IHNjYXJlZDsKK+W/sCA+IHN1ZmZlcjsKK+W+oCA+IGluZHVjZTsKK+W9tCA+IGJyaWRnZTsKK+W8oyA+IG1pZGRsZTsKK+W7vSA+IHJldHVybjsKK+W7nyA+IHRlbXBsZTsKK+W7kCA+IHN0YWJsZTsKK+W7jyA+IHN0YWJsZTsKK+W7hiA+IGFcLXJvb207Civlu4QgPiBzdGFibGU7Civlu4EgPiB0b2lsZXQ7CivluZggPiB0dXJiYW47Civlt6QgPiBhXC1tYW5lOwor5beYID4gc3VtbWl0Owor5ba8ID4gaXNsYW5kOwor5ba0ID4gaXNsYW5kOwor5baTID4gYm9zaGFuOwor5baMID4gaXNsYW5kOwor5baLID4gaXNsYW5kOwor5bW+ID4gdW5ldmVuOwor5bS/ID4gY2xpZmZzOwor5bSfID4gY2xpZmZzOwor5bKoID4gdW5ldmVuOwor5bKAID4gZ29cLW91dDsKK+WxriA+IHNwcm91dDsKK+WxnCA+IGRyYXdlcjsKK+WwhSA+IHN1YmR1ZTsKK+WwgCA+IGNhbm5vdDsKK+WvnCA+IHJlcG9zZTsKK+WvlSA+IHJlcG9zZTsKK+WvjiA+IGRyb3dzeTsKK+WupyA+IGNvcm5lcjsKK+WtviA+IGFcLWJhYnk7CivlrYwgPiBsb3ZlbHk7CivlrL8gPiBsb3ZlbHk7CivlrKQgPiBtb3RoZXI7CivlrIMgPiBzaXN0ZXI7Civlq6ogPiBoYW5rZXI7Civlq5AgPiBmcm9saWM7Civlqr0gPiBtb3RoZXI7CivlqpYgPiBiZWF1dHk7CivlqbwgPiBwZXJzb247CivlqaQgPiBsb3ZlbHk7CivlqKwgPiBsb3ZlbHk7CivlqJIgPiBtYXRyb247Civlp4EgPiBiZWF1dHk7CivlprggPiBwZXJzb247CivlpKwgPiBwYXJ0ZWQ7CivlpKAgPiBlbm91Z2g7CivlpIYgPiByZXNpc3Q7Civlo78gPiBnb2JsZXQ7CivloqAgPiBzbW9vdGg7CivloKcgPiBhZGpvaW47CivloKYgPiBzdGFpcnM7CivloIkgPiBncm91bmQ7CivlnJ4gPiBlbnRpcmU7CivlnJ0gPiBlbnRpcmU7CivlnI4gPiBjaXJjbGU7CivlnIAgPiBuYXRpb247Civlm5ggPiByZXR1cm47Civlmr8gPiBhXC1sdW1wOwor5ZqoID4gdGhyb2F0Owor5ZqUID4gc25lZXplOwor5ZqDID4gZ29iYmxlOwor5ZqAID4gZW5qb2luOwor5ZmaID4gZmF0aG9tOwor5ZmTID4gZXhoYWxlOwor5ZmPID4gaW5oYWxlOwor5Ze/ID4gZ29iYmxlOwor5ZaGID4gYVwtc2FnZTsKK+WViSA+IHN0dXBpZDsKK+WUqyA+IHRvXC1odW07CivllIggPiB0b1wtc29iOwor5ZOkID4gamFyZ29uOwor5ZOLID4gcGx1cmFsOwor5ZKIID4gb3Bwb3NlOwor5ZGuID4gdG9cLXNpdDsKK+WRjyA+IGdhbGxvbjsKK+WPoSA+IGFzdHV0ZTsKK+WPkyA+IGFmZmFpcjsKK+WOjiA+IHNldHRsZTsKK+WNhCA+IHR3ZW50eTsKK+WMgyA+IGJlZ2dhcjsKK+WLtyA+IHVyZ2VudDsKK+WLtSA+IHN0cml2ZTsKK+WLlyA+IGVuam9pbjsKK+WLkSA+IHJld2FyZDsKK+WLjSA+IHN0cm9uZzsKK+WLhCA+IGFjdGl2ZTsKK+WLgSA+IHN0cm9uZzsKK+WKpCA+IHN0cm9uZzsKK+WKjCA+IHRvXC1jdXQ7CivlioYgPiBzaWNrbGU7CivliY4gPiB0ZW1wbGU7CivliYsgPiBzdWJkdWU7CivliKogPiB0b1wtY3V0Owor5YeeID4gYnJpZ2h0Owor5YeTID4gc2hpdmVyOwor5YaRID4gaGVsbWV0Owor5YaEID4gdGVuZGVyOwor5YWyID4gaGVhdmVuOwor5YWnID4gaW5zaWRlOwor5YS4ID4gYmFuZGl0Owor5YS3ID4gc3BvdXNlOwor5YOxID4gZW1wbG95Owor5YOsID4gY2xldmVyOwor5YOjID4gYXNzdW1lOwor5YKvID4gdXJnZW50Owor5YKuID4gZmluaXNoOwor5YKOID4gdG9wcGxlOwor5YGqID4gY29tcGVsOwor5YGpID4gZm9sbG93Owor5YGoID4gdW5ldmVuOwor5YGWID4gcmlwXC11cDsKK+WAhiA+IGNsZXZlcjsKK+WAhSA+IGRlcHV0eTsKK+WAgyA+IGRhbWFnZTsKK+S/tSA+IGRpdmlkZTsKK+S+tyA+IG5hcnJvdzsKK+S9iCA+IHNwcmVhZDsKK+S8viA+IG1pZ2h0eTsKK+S8nCA+IGRlcHV0eTsKK+S7miA+IHRvXC1mbHk7CivkuoogPiBhZmZhaXI7CivkuoQgPiBncmVlZHk7CivkuZogPiBoaWRkZW47CivkuYIgPiBnb3Zlcm47CivkuJcgPiB0aGlydHk7Civktq4gPiBjbGV2ZXI7CivktoEgPiBub2lzZXM7CivktacgPiB0b1wtZHllOwor5LWZID4gc3RpY2t5Owor5LWQID4geWVsbG93Owor5LWPID4geWVsbG93Owor5LWNID4geWVsbG93Owor5LWLID4geWVsbG93Owor5LWKID4geWVsbG93Owor5LSlID4gYVwtc3RhZzsKK+SzviA+IGFuXC1vd2w7Civks48gPiBjdWNrb287Civks4cgPiBwYXJyb3Q7CivksrkgPiBvc3Blcnk7CivksqcgPiBjdWNrb287CivksowgPiBhXC1maXNoOwor5LGVID4gbGFicnVzOwor5LGRID4gYVwtZmlzaDsKK+SxjyA+IGFcLWZpc2g7CivksYMgPiBhXC1maXNoOwor5LGCID4gYVwtZmlzaDsKK+SwtyA+IGFcLWZpc2g7CivksKMgPiBhblwtZWxmOwor5K+rID4gYnJpZ2h0Owor5K+oID4gdG9cLXJhcDsKK+SvnSA+IG1hcnJvdzsKK+SvnCA+IG1hcnJvdzsKK+SvgyA+IHNhZGRsZTsKK+SvgSA+IGFcLW11bGU7CivkraogPiBncmFpbnM7CivkraUgPiBhXC1iYWl0Owor5K2dID4gdG9cLWVhdDsKK+StmiA+IHRvXC1lYXQ7CivkrZIgPiBicmVhdGg7CivkrYwgPiBjb25nZWU7CivkrYggPiBjb25nZWU7CivkrLggPiBhXC1tZWFsOwor5KyRID4gYVwtZ2FsZTsKK+SskCA+IGJyZWV6ZTsKK+SsiiA+IGFcLWdhbGU7CivkrIggPiBicmVlemU7CivkrIcgPiBicmVlemU7CivkrIUgPiBhXC1nYWxlOwor5KyEID4gYnJlZXplOwor5KyCID4gYnJlZXplOwor5Ku+ID4gYnJlZXplOwor5Ku9ID4gYnJlZXplOwor5Ku8ID4gYnJlZXplOwor5KusID4gdG9cLWJvdzsKK+SquCA+IHN0cm9uZzsKK+SqpCA+IGdhcmxpYzsKK+SpryA+IHVyZ2VudDsKK+SprSA+IGhhbHRlcjsKK+SoviA+IGhpZGRlbjsKK+SouiA+IGNsb3VkeTsKK+SouCA+IGNsb3VkeTsKK+SoryA+IGNsb3VkeTsKK+SonyA+IHB1ZGRsZTsKK+SoiSA+IHBhcnJvdDsKK+SohyA+IGFcLXBhaXI7Civkp7QgPiBhXC1iaXJkOwor5KezID4gZmVtYWxlOwor5KelID4gYm9yZGVyOwor5KebID4gYmVzaWRlOwor5KeRID4gYVwtZGlrZTsKK+SlqiA+IHRvXC1jdXA7CivkpaggPiBhXC1maWxlOwor5KWgID4gbmVlZGxlOwor5KWNID4gYVwtd2hpcDsKK+SjpiA+IHRvXC1jdXQ7Civko5ggPiBhXC1oYWxsOwor5KOIID4gYVwtbGFuZTsKK+SivSA+IGFcLWxhbmU7CivkoLAgPiBjb2lsZWQ7CivkoKQgPiB0b2RkbGU7CivkoJkgPiB1cmdlbnQ7CivkoI4gPiBuYXJyb3c7CivkoIcgPiBzdHJvbmc7Civkn7EgPiB0cmFjZXM7Civkn58gPiB1cmdlbnQ7Civkn5IgPiBjb2lsZWQ7CivknZwgPiBhXC1saW9uOwor5J2EID4gY293cGVhOwor5JyeID4gYVwtZG9zZTsKK+SbpyA+IHJpZGRsZTsKK+SbpSA+IHNwZWVjaDsKK+SboyA+IHNwZWVjaDsKK+SbnCA+IHRvXC1hc2s7Civkm5EgPiBzaWxlbnQ7Civkm4ggPiB0b1wtdm93Owor5Jq6ID4gYmFsbGFkOwor5JqIID4gdG9cLXNlZTsKK+SahiA+IHRvXC1zZWU7CivkmoIgPiB0b1wtc2VlOwor5JqBID4gdG9cLXNlZTsKK+SZvyA+IHRvXC1zZWU7Civkmb0gPiB0b1wtc2VlOwor5Jm8ID4gdG9cLXNlZTsKK+SZtSA+IHJ1c3RpYzsKK+SZoSA+IGFcLWtub3Q7CivkmYwgPiBhXC1rbm90Owor5JiwID4gYVwtaG9vZDsKK+SYrCA+IGFybW91cjsKK+SYqSA+IGNvbGxhcjsKK+SYjCA+IGdhZGZseTsKK+SYiCA+IG95c3RlcjsKK+SXqyA+IGFcLWZyb2c7CivklrkgPiB3ZWV2aWw7Civklq4gPiBsYXJ2YWU7CivklqsgPiBveXN0ZXI7CivklqggPiBtYW50aXM7CivklpcgPiBzdHJvbmc7CivkloEgPiBudW1iZXI7CivklawgPiBnaW5nZXI7CivklaggPiByYXR0YW47CivklK8gPiBzYWx0ZWQ7CivklKIgPiBjYXRoYXk7CivklI8gPiBhXC1sdXNoOwor5JOnID4gdXJnZW50Owor5JOmID4gYVwtcnVsZTsKK+SThSA+IGNlbGVyeTsKK+SThCA+IGdyYXNzeTsKK+SSuSA+IGdyYXNzeTsKK+SSqyA+IGdyYXNzeTsKK+SSiSA+IGFcLWxvbmc7CivkkoIgPiBhblwtb2FyOwor5JG6ID4gYVwtc2FpbDsKK+SRtCA+IGFcLWJvYXQ7CivkkbEgPiBhXC1ib2F0Owor5JGvID4gYVwtYm9hdDsKK+SRqCA+IHJ1ZGRlcjsKK+SRpiA+IGFcLWJvYXQ7CivkkaQgPiBhXC1ib2F0Owor5JGQID4gYnJpZ2h0Owor5JCmID4gc2xlZXB5Owor5JClID4gc3Rpbmt5Owor5I+qID4gdGVuZG9uOwor5I+jID4gbWFnZ290Owor5I+CID4gY2xldmVyOwor5I6xID4gYVwtZHJhZzsKK+SOrCA+IGFcLWRyYWc7CivkjpkgPiBmbHlpbmc7CivkjpcgPiBmbHlpbmc7CivkjpMgPiBmbHlpbmc7CivkjoogPiBmbHlpbmc7CivkjoggPiBmbHlpbmc7CivkjoYgPiBmbHlpbmc7CivkjoUgPiBmbHlpbmc7CivkjoAgPiBmbHlpbmc7Civkjb4gPiBmbHlpbmc7CivkjawgPiB0b1wtdXNlOwor5I2LID4gYm90dGxlOwor5I2IID4gYm90dGxlOwor5I2DID4gYVwtdmFzZTsKK+SMtCA+IHVuZXZlbjsKK+SMsSA+IHVuZXZlbjsKK+SMnCA+IHRvXC1zZXc7CivkjJUgPiB0b1wtdGllOwor5IuyID4gYVwtcm9wZTsKK+SLkSA+IHRvXC10aWU7Civki5AgPiBmYWJyaWM7Civki4wgPiBzdHJvbmc7CivkiqcgPiBhXC1mYXJ0Owor5IqlID4gY29uZ2VlOwor5IqbID4gc2hyZWRzOwor5IqOID4gcG93ZGVyOwor5IqGID4gY29va2VkOwor5Im2ID4gYVwtc2FpbDsKK+SIuiA+IGJhbWJvbzsKK+SItCA+IGFcLWNhZ2U7CivkiI4gPiBhXC1sZWFmOwor5IelID4gbmFycm93Owor5IeiID4gYmFtYm9vOwor5IefID4gdGVuZG9uOwor5IeaID4gdG9cLXRhcDsKK+SHgSA+IGFcLWNhdmU7Civkhr0gPiBhXC1ob2xlOwor5Ia8ID4gYVwtbmVzdDsKK+SGuyA+IGFcLWhvbGU7CivkhrcgPiBhXC1ob2xlOwor5IawID4gYVwtY2F2ZTsKK+SGriA+IHRvXC1kaXA7CivkhqsgPiB3aW5kb3c7CivkhqcgPiBhXC1jYXZlOwor5IahID4gYVwtY2F2ZTsKK+SGnSA+IGFcLWNhdmU7CivkhpkgPiBhXC1raWxuOwor5IaTID4gYVwtaG9sZTsKK+SFtiA+IHRvXC1ob2U7CivkhbQgPiBncmFpbnM7CivkhaYgPiBmZWVibGU7CivkhYcgPiBncmFpbnM7CivkhLkgPiBhXC15ZWFyOwor5ISyID4gaW5zaWRlOwor5IStID4gYVwteWVhcjsKK+SEmCA+IGFcLXJpdGU7CivkhI4gPiBwcmV0dHk7Civkg6UgPiBzdG9uZXM7Civkg5YgPiBhXC1iYW5rOwor5IOKID4gdG9cLXJ1YjsKK+SCtyA+IGJyb2tlbjsKK+SCtCA+IHRvXC1ydWI7CivkgrMgPiBncmF2ZWw7Civkgp0gPiB0b1wtcmFwOwor5IKYID4gcGViYmxlOwor5IG/ID4gc2xlZXB5Owor5IGmID4gdG9cLXNlZTsKK+SBliA+IHRvXC1zZWU7CivkgJIgPiBnbG9vbXk7CivkgI0gPiB2ZXNzZWw7CivkgIUgPiB2ZXNzZWw7Civjv74gPiB2ZXNzZWw7Civjv7wgPiBhXC1ib3dsOwor47+7ID4gYVwtdHJheTsKK+O/rSA+IGNyYWNrczsKK+O/pyA+IGZpZWxkczsKK+O/lCA+IGFcLXdhcnQ7CivjvbcgPiBkcm9wc3k7CivjvbUgPiBzb2xlbW47CivjvL4gPiBicmlja3M7CivjvKUgPiBib3R0bGU7CivjvJ0gPiBhXC1ib3dsOwor47yEID4gcGVhcmxzOwor47mMID4gY2F0dGxlOwor47i/ID4gYVwtY2FsZjsKK+O4mSA+IGZhdGhlcjsKK+O3sCA+IGZsYW1lczsKK+O3qSA+IGJyaWdodDsKK+O3iyA+IGVtYmVyczsKK+O3giA+IGJyaWdodDsKK+O2pCA+IHRvXC1mcnk7CivjtoggPiBjcmVla3M7CivjtaogPiBzYWxpdmE7CivjtZ0gPiBtb3Zpbmc7CivjtJ4gPiBmbHVlbnQ7CivjtIYgPiB0b1wtZGlwOwor47OMID4gbWFyc2h5Owor47G1ID4gdG9cLWRpZTsKK+OxsyA+IGxvbmVseTsKK+OxsSA+IHVuZXZlbjsKK+OxoyA+IHVuZXZlbjsKK+OxniA+IGRhbmdlcjsKK+OxmSA+IHJvdHRlbjsKK+OxjSA+IHRvXC1vd2U7CivjsYIgPiBodW5ncnk7CivjsYEgPiB0b1wtYXNrOwor47CNID4gYVwtY2FnZTsKK+OwgyA+IGFcLXRyZWU7Civjr74gPiBhXC10cmVlOwor46+WID4gYVwtdHJlZTsKK+OvjyA+IGdyYWluczsKK+OvjiA+IHN0dXBpZDsKK+OvjSA+IGFuXC1vYXI7Civjr4kgPiBhXC10cmVlOwor46+GID4gYVwtdHJlZTsKK+OuvyA+IGFcLXRyZWU7CivjrrkgPiBhXC10cmVlOwor4663ID4gYVwtdHJlZTsKK+OutiA+IGFcLXRyZWU7CivjrrMgPiBhXC10cmVlOwor466pID4gYVwtdHJlZTsKK+OupyA+IGFcLXRyZWU7CivjrpggPiBhXC10cmVlOwor466WID4gdG9cLWxheTsKK+OujCA+IGNvdHRvbjsKK+OtsSA+IGFcLWNhc2U7CivjrYsgPiBhXC1jbHViOwor46yvID4gc3Vuc2V0Owor46yuID4gZ2VudGxlOwor46yNID4gZmllcmNlOwor46u6ID4gYnlnb25lOwor46u4ID4gc3Vuc2V0Owor46u3ID4gYmVoaW5kOwor46uhID4gd2ludGVyOwor46uFID4gYVwtZmxhZzsKK+OquSA+IHRvXC1yb2I7CivjqoYgPiBoaWRkZW47CivjqoQgPiBicm9rZW47Civjqb4gPiB1bmV2ZW47CivjqbIgPiBhXC1maXN0Owor46i+ID4gYVwtdHlwZTsKK+OouyA+IHRvXC1jdXQ7CivjqLggPiB0b1wtaGl0Owor46ipID4gdG9cLXdpbjsKK+OopSA+IHRvXC1oaXQ7CivvqJwgPiBwYWNpZnk7CivvqJkgPiBzcGlyaXQ7CivvqJcgPiBwcm9maXQ7CivvqJUgPiBicmlnaHQ7CivjqI4gPiB0b1wtZHllOwor46iFID4gaW5zaWRlOwor76iCID4gZXhwYW5kOwor76iBID4gZGVncmVlOwor46e4ID4gdG9cLWhpdDsKK++ntCA+IGZvcmVzdDsKK+OnsyA+IHRvXC1taXg7Civvp60gPiBzdGluZ3k7Civvp6ggPiBpbnNpZGU7Civvp6cgPiBpbnNpZGU7Civvp6YgPiBzb3Jyb3c7Civjp6cgPiBhXC1jb21iOwor76ekID4gcmVhc29uOwor76egID4gY2hhbmdlOwor76eZID4gc2hpdmVyOwor76eOID4gc3VsZnVyOwor46eJID4gdG9cLXJ1YjsKK++nhCA+IGRyYWdvbjsKK++mvCA+IHNoYW50eTsKK++msyA+IHNwaXJpdDsKK++msCA+IGxpc3RlbjsKK++mqiA+IHJlcG9zZTsKK++mqSA+IHByaXNvbjsKK++mniA+IHRocm9hdDsKK++mnCA+IGFcLWxpbmU7CivjppQgPiBzaWxrbHk7CivjposgPiBhYnN1cmQ7CivjpoogPiBsYXZpc2g7CivjpoUgPiB1bmVhc3k7CivjpoEgPiB0b1wtc29iOwor76W/ID4gc3RyaXZlOwor76W9ID4gZXhjdXNlOwor76W6ID4gYnJpZGdlOwor76W3ID4gYnJpZ2h0Owor46WtID4gbHV4dXJ5Owor46WrID4gaG9uZXN0Owor76WpID4gbnVtYmVyOwor76WmID4gcmV0dXJuOwor76WfID4gcmVwb3NlOwor46WfID4gZW5taXR5Owor76WWID4gY29ybmVyOwor76WRID4gbmFycm93Owor76WQID4gdGhyZWFkOwor46WQID4gaGF0cmVkOwor46WIID4gYWZyYWlkOwor76WGID4gcHJpc29uOwor76WBID4gZGViYXRlOwor46S7ID4gc3R1cGlkOwor46S5ID4gaGF0cmVkOwor46S4ID4gdW5lYXN5Owor76S1ID4gcnVzaGVzOwor46SoID4gc2NhcmVkOwor76SkID4gcmFnZ2VkOwor76SfID4gb3JjaGlkOwor76SeID4gcm90dGVuOwor76STID4gcGF0cm9sOwor46STID4gc3R1cGlkOwor76SFID4gc3RyaW5nOwor46OtID4gbnVtYmVyOwor46OYID4gc3Bhc21zOwor46K9ID4gYVwtYmFpdDsKK+OiuiA+IHN0cmluZzsKK+OhriA+IGRhbmdlcjsKK+OhoyA+IGRyYWdvbjsKK+OhmiA+IGFybW91cjsKK+OhgSA+IGFcLXJvYmU7CivjoLYgPiBhXC1zYWlsOwor46CyID4gcmlwcGVkOwor46CAID4gaXNsYW5kOwor45+3ID4gYVwtd2FydDsKK+OfqyA+IHNwcmluZzsKK+OfpSA+IHVuZXZlbjsKK+OfnyA+IGFcLWxhbmU7CivjnrggPiBhXC15ZWFyOwor456HID4gdWxjZXJzOwor456CID4gdWxjZXJzOwor4525ID4gYVwtaGFyZTsKK+OdtiA+IHRvXC1nZXQ7CivjnbUgPiB0b1wtZ2V0Owor452nID4gc3RhYmxlOwor452CID4gbG9jdXN0Owor452BID4gbG9uZWx5Owor45yrID4gcHJldHR5Owor45ylID4gY3JhZnR5Owor45u5ID4gcHJldHR5Owor45q8ID4gYVwtZ2lybDsKK+OauyA+IHNvZG9teTsKK+OauSA+IHByZXR0eTsKK+OaniA+IHRlcnJvcjsKK+OakCA+IGFcLWNhc2U7CivjmowgPiBhXC1iYW5kOwor45m5ID4gYVwtZGFtcDsKK+OZtiA+IGFcLWhhbGw7CivjmawgPiBhXC1iYW5rOwor45mdID4gYVwtZGlrZTsKK+OZlSA+IGFcLWx1bXA7CivjmLQgPiB0b1wtc2l0Owor45iyID4gYVwtY292ZTsKK+OXtyA+IHRvXC1lYXQ7Civjl7UgPiBicmVhdGg7Civjl5YgPiB0b1wtZWF0Owor45aSID4gdG9cLWNyeTsKK+OWgSA+IHN0aW5neTsKK+OVoCA+IGFcLXBhaXI7CivjlZQgPiBhXC1oYWxsOwor45WCID4gdG9cLWh1bTsKK+OUuiA+IGFuXC1hZ2U7CivjlLggPiBhXC10cmF5Owor45ScID4gc3VkZGVuOwor45SXID4gc3Ryb25nOwor45SSID4gdG9cLWN1dDsKK+OUkCA+IHRvXC1jdXQ7CivjlIogPiB0b1wtY3V0Owor45SJID4gdG9cLWRpZzsKK+OUhiA+IHRvXC1jdXQ7CivjlIUgPiB0b1wtY3V0Owor45O1ID4gc3dvcmRzOwor45OxID4gdG9cLWN1dDsKK+OTqiA+IGJyaWdodDsKK+OToCA+IGFcLWZsYXc7Civjk4UgPiBmcm96ZW47CivjkrYgPiBwdWJsaWM7CivjkrUgPiBtYW5uZXI7CivjkrIgPiB3ZWFsdGg7CivjkqcgPiBhXC1wYWlyOwor45KgID4gbmFycm93Owor45G7ID4gc3Ryb25nOwor45G3ID4gbWFubmVyOwor45GzID4gY2xldmVyOwor45GjID4gc3R1cGlkOwor45GHID4gY2xldmVyOwor45C5ID4gc3Ryb25nOwor55+zID4gc3RvbmU7Civnn60gPiBzaG9ydDsKK+W/qyA+IHJhcGlkOwor5ZyoID4gYmVcLWF0Owor5LuWID4gb3RoZXI7Civnn6IgPiBhcnJvdzsKK+WIsCA+IGdvXC10bzsKK+ivtCA+IHNwZWFrOwor6L+FID4gcXVpY2s7CivlnLAgPiBlYXJ0aDsKK+W/gyA+IGhlYXJ0Owor5LiLID4gdW5kZXI7Civovq0gPiB3b3JkczsKK+W+riA+IHNtYWxsOwor5a62ID4gaG91c2U7CivlvqEgPiBkcml2ZTsKK+i+niA+IHdvcmRzOwor5ZCOID4gcXVlZW47CivlsI8gPiBzbWFsbDsKK+W+hSA+IHRyZWF0Owor6L+YID4gc3RpbGw7Civlj5EgPiBpc3N1ZTsKK+W9qyA+IGNhcnZlOwor5oOzID4gdGhpbms7CivnnaEgPiBzbGVlcDsKK+i9iSA+IHNoaWZ0Owor5omAID4gcGxhY2U7CivovKogPiB3aGVlbDsKK+S4iSA+IHRocmVlOwor6LyVID4gbGlnaHQ7CivlvI8gPiBzdHlsZTsKK+agtyA+IHNoYXBlOwor6Lu9ID4gbGlnaHQ7Civlu7ogPiBidWlsZDsKK+W7tiA+IGRlbGF5Owor55uyID4gYmxpbmQ7Civou6IgPiBzaGlmdDsKK+W7oyA+IGJyb2FkOwor5aOwID4gc291bmQ7Civlt6UgPiBsYWJvcjsKK+ebhiA+IGJhc2luOwor55uDID4gZ2xhc3M7CivmraMgPiByaWdodDsKK+W6uCA+IHVzdWFsOwor5aWzID4gd29tYW47CivlipsgPiBwb3dlcjsKK+i6kSA+IHdhdmVyOwor5ZugID4gY2F1c2U7Civph40gPiBoZWF2eTsKK+eahyA+IHJveWFsOwor5bqHID4gY292ZXI7CivmrKEgPiBvcmRlcjsKK+W6gyA+IGJyb2FkOwor5Y+jID4gbW91dGg7Civkvb8gPiBjYXVzZTsKK+eZvSA+IHdoaXRlOwor5bm9ID4gcXVpZXQ7CivmlZkgPiB0ZWFjaDsKK+eZvCA+IGlzc3VlOwor5YaNID4gYWdhaW47CivnmbogPiBpc3N1ZTsKK+awlCA+IHN0ZWFtOwor5L+hID4gdHJ1c3Q7CivljJcgPiBub3J0aDsKK+i5siA+IHNxdWF0Owor6LmfID4gdHJhY2U7CivnlLEgPiBjYXVzZTsKK+WNtCA+IHN0aWxsOwor5bmFID4gcGllY2U7CivlhaUgPiBlbnRlcjsKK+WFiCA+IGZpcnN0Owor5rC0ID4gd2F0ZXI7CivlpIQgPiBwbGFjZTsKK+W3tyA+IGFsbGV5Owor56yRID4gc21pbGU7Civnq4sgPiBzdGFuZDsKK+i3qiA+IGtuZWVsOwor6amsID4gaG9yc2U7Civlt6ggPiBsYXJnZTsKK+eWkSA+IGRvdWJ0Owor5YipID4gZ2FpbnM7CivotbQgPiBnb1wtdG87CivlhYkgPiBsaWdodDsKK+aenCA+IGZydWl0Owor6LWnID4gYmx1c2g7Civoh7MgPiByZWFjaDsKK+a4hSA+IGNsZWFyOwor54mpID4gdGhpbmc7CivltYwgPiBpbmxheTsKK+eUsiA+IGFybW9yOwor55SwID4gZmllbGQ7CivorrggPiBhbGxvdzsKK+WFqyA+IGVpZ2h0Owor5bSWID4gY2xpZmY7CivltI4gPiByb3VnaDsKK+WNlyA+IHNvdXRoOwor6ImyID4gY29sb3I7CivorqkgPiBhbGxvdzsKK+eTnCA+IG1lbG9uOwor566XID4gY291bnQ7Civos4ogPiB0aGllZjsKK+WFgyA+IGZpcnN0Owor6LKvID4gc3RvcmU7CivmgJ0gPiB0aGluazsKK+iyqCA+IGdvb2RzOwor5bKpID4gY2xpZmY7Civmr48gPiBldmVyeTsKK+WxrCA+IGNsYXNzOwor6LGqID4gYnJhdmU7CivlsZ4gPiBjbGFzczsKK+iogCA+IHdvcmRzOwor5p2DID4gcG93ZXI7CivlsYsgPiBob3VzZTsKK+ixhiA+IGJlYW5zOwor5LiDID4gc2V2ZW47CivlsJogPiBzdGlsbDsKK+WwliA+IHNoYXJwOwor6L2sID4gc2hpZnQ7CivlsIQgPiBzaG9vdDsKK+epuiA+IGVtcHR5Owor5oqAID4gc2tpbGw7CivovbsgPiBsaWdodDsKK+WvuiA+IGNvdXJ0Owor5a+rID4gd3JpdGU7Civoi7EgPiBwZXRhbDsKK+WvoiA+IHNsZWVwOwor5YaZID4gd3JpdGU7Civlr50gPiBzbGVlcDsKK+WvkCA+IHNsZWVwOwor5a+GID4gZGVuc2U7Civlr4IgPiBzdGlsbDsKK+mSsSA+IG1vbmV5Owor5a65ID4gbG9va3M7CivlrrUgPiBuaWdodDsKK+iuviA+IGJ1aWxkOwor5aeLID4gYmVnaW47CivlrqIgPiBndWVzdDsKK+eJhyA+IHNsaWNlOwor56CUID4gZ3JpbmQ7CivlrocgPiBob3VzZTsKK+aXqSA+IGVhcmx5Owor5oi/ID4gaG91c2U7Civpn7MgPiBzb3VuZDsKK+eNuyA+IG9mZmVyOwor5426ID4gb3R0ZXI7CivnjbggPiBiZWFzdDsKK+itsiA+IGFsbG93Owor542oID4gYWxvbmU7CivoraYgPiBndWFyZDsKK+eNoyA+IGJlYXN0Owor5a2YID4gZXhpc3Q7CivorYkgPiBwcm9vZjsKK+e7hCA+IGNsYXNzOwor6KydID4gdGhhbms7CivnjJwgPiBndWVzczsKK+WsiSA+IGVuam95Owor6buRID4gYmxhY2s7CivorIEgPiB2aXNpdDsKK+WJkSA+IHN3b3JkOwor54usID4gYWxvbmU7CivkuZAgPiBoYXBweTsKK+e6pyA+IGxldmVsOwor6KqsID4gc3BlYWs7CivkuL4gPiByYWlzZTsKK+ivgSA+IHByb3ZlOwor54WnID4gc2hpbmU7CivoqpMgPiBzd2VhcjsKK+e+pCA+IGdyb3VwOwor5pmaID4gbmlnaHQ7CivoqoIgPiB0ZW1wdDsKK+ipniA+IHdvcmRzOwor5LykID4gd291bmQ7CivnsbsgPiBjbGFzczsKK+asoiA+IGhhcHB5Owor54i9ID4gaGFwcHk7Civlir8gPiBwb3dlcjsKK+iovCA+IHByb3ZlOwor5Yi7ID4gY2FydmU7Civmlq0gPiBzZXZlcjsKK+WknCA+IG5pZ2h0Owor6KixID4gYWxsb3c7CivoqK0gPiBidWlsZDsKK+S7tyA+IHByaWNlOwor6ISRID4gYnJhaW47CivoqKogPiB2aXNpdDsKK+inhCA+IHJ1bGVzOwor5aiRID4gZGFuY2U7CivnoLQgPiBicmVhazsKK+azvSA+IG1hcnNoOwor54e7ID4gc21va2U7CivntKcgPiB0ZW5zZTsKK+inuCA+IHRvdWNoOwor6KOFID4gZHJlc3M7CivmgKUgPiBxdWljazsKK+aysyA+IHJpdmVyOwor6KGAID4gYmxvb2Q7CivmipUgPiB0aHJvdzsKK+imhiA+IGNvdmVyOwor5Y+zID4gcmlnaHQ7CivlpbQgPiBzbGF2ZTsKK+WIgCA+IGtuaWZlOwor6KWfID4gbGFwZWw7CivnhZkgPiBzbW9rZTsKK+WliSA+IG9mZmVyOwor5ZadID4gZHJpbms7CivopLggPiBsYXBlbDsKK+ikqiA+IHN0cmlwOwor5Y2rID4gZ3VhcmQ7CivlpKIgPiBkcmVhbTsKK+mUmSA+IGVycm9yOwor6KO+ID4gbGFwZWw7CivmoYggPiB0YWJsZTsKK+eDnyA+IHNtb2tlOwor6KOdID4gZHJlc3M7CivljbAgPiBwcmludDsKK+WjkyA+IHByZXNzOwor54OIID4gZmllcnk7Civlo4cgPiBhbHRhcjsKK+WdlyA+IHBpZWNlOwor6KOCID4gc3BsaXQ7CivoorQgPiBwYW50czsKK+WikyA+IGdyYXZlOwor6Z2ZID4gcXVpZXQ7Civngo4gPiBmbGFtZTsKK+ihtyA+IGhlYXJ0Owor54GwID4gYXNoZXM7CivooZ4gPiBndWFyZDsKK+ihmyA+IGd1YXJkOwor6YCfID4gcXVpY2s7CivloZcgPiBzbWVhcjsKK+aVjCA+IGVuZW15Owor5aGUID4gdG93ZXI7CivosKIgPiB0aGFuazsKK+WhiiA+IHBpZWNlOwor5oCAID4gYm9zb207CivlhbsgPiByYWlzZTsKK+e9qiA+IGNyaW1lOwor5r+2ID4gYnJvYWQ7Civon7IgPiB3b3JtczsKK+a/sSA+IGJlYWNoOwor5pGYID4gcGx1Y2s7Civmlr0gPiBncmFudDsKK+aooSA+IG1vZGVsOwor6I2JID4gZ3Jhc3M7Civmv4MgPiB0aGljazsKK+WAvCA+IHByaWNlOwor5r+BID4gbXVkZHk7Civnj60gPiBjbGFzczsKK+S/riA+IHN0dWR5Owor5ZGzID4gdGFzdGU7CivmvqQgPiBtYXJzaDsKK+e7hyA+IHdlYXZlOwor6b6VID4gbmljaGU7Civonb8gPiBmbGllczsKK+WFjSA+IHNwYXJlOwor5rOiID4gd2F2ZXM7CivmvZQgPiBjbGVhbjsKK+a0iyA+IG9jZWFuOwor5YqzID4gbGFib3I7CivlnYcgPiBlcXVhbDsKK+WOiyA+IHByZXNzOwor5aWWID4gcHJpemU7Civpob8gPiBwYXVzZTsKK+a8giA+IGZsb2F0Owor5YikID4ganVkZ2U7CivntKAgPiB3aGl0ZTsKK+WYtCA+IG1vdXRoOwor5ouFID4gY2Fycnk7Civmnb8gPiBwbGFuazsKK+mSnyA+IGNsb2NrOwor6K6/ID4gdmlzaXQ7Civpu5IgPiBibGFjazsKK+m7kCA+IHN0aWNrOwor6JuHID4gc25ha2U7CivmnoQgPiBmcmFtZTsKK+a6uiA+IGRyb3duOwor6bqmID4gd2hlYXQ7CivpuqUgPiB3aGVhdDsKK+a6nSA+IGRpdGNoOwor5rqcID4gc2xpZGU7CivogokgPiBmbGVzaDsKK+e6uCA+IHBhcGVyOwor5qKmID4gZHJlYW07CivomZogPiBmYWxzZTsKK+iSmSA+IGNvdmVyOwor6JmVID4gcGxhY2U7CivomY4gPiB0aWdlcjsKK+WZjCA+IHNjb2xkOwor5p2CID4gbWl4ZWQ7CivmgJIgPiBhbmdlcjsKK+eovyA+IGRyYWZ0Owor5rimID4gc3dpcmw7CivmuKEgPiBjcm9zczsKK+a4oCA+IGRpdGNoOwor5ZiXID4gdGFzdGU7CivnvaIgPiBjZWFzZTsKK+m3uiA+IGhlcm9uOwor6be5ID4gZWFnbGU7Civmt7kgPiBkcm93bjsKK+iXqSA+IGZlbmNlOwor6JelID4gZHJ1Z3M7CivpspwgPiBmcmVzaDsKK+e9riA+IHBsYWNlOwor5ZeFID4gc21lbGw7Civol4EgPiBzdHJhdzsKK+m2tCA+IGNyYW5lOwor5p6qID4gc3BlYXI7Civmtq8gPiBzaG9yZTsKK+iWriA+IG1hcnNoOwor6JasID4gZHJ1Z3M7CivolqYgPiBvZmZlcjsKK+a2nCA+IGRpdGNoOwor5raZID4gdGVhcnM7CivphY0gPiBtYXRjaDsKK+a1tCA+IGJhdGhlOwor5Y2HID4gYXJpc2U7CivmtZwgPiBjcmVlazsKK+iUvSA+IGNvdmVyOwor6K+NID4gd29yZHM7Civms6ogPiB0ZWFyczsKK+iUrSA+IHNoYWRlOwor5rSlID4gZmVycnk7CivprLwgPiBnaG9zdDsKK+iIniA+IGRhbmNlOwor6JOuID4gbG90dXM7Civpgb8gPiBhdm9pZDsKK+ahjCA+IHRhYmxlOwor6JOLID4gY292ZXI7CivkuqEgPiBkZWF0aDsKK+iThCA+IHN0b3JlOwor6ZeqID4gZmxhc2g7CivokrggPiBzdGVhbTsKK+mchyA+IHNoYWtlOwor5ZKzID4gY291Z2g7CivlkrIgPiBzbWlsZTsKK+ayoiA+IG1hcnNoOwor57u/ID4gZ3JlZW47Civlko4gPiBmYXVsdDsKK+e6syA+IGFkbWl0Owor5rG9ID4gc3RlYW07CivotKcgPiBnb29kczsKK+WRqiA+IGN1cnNlOwor56ulID4gY2hpbGQ7CivkvJ8gPiBncmVhdDsKK+axgSA+IGp1aWNlOwor6I2jID4gZ2xvcnk7CivnjK4gPiBvZmZlcjsKK+WQkCA+IHZvbWl0Owor5Y6aID4gdGhpY2s7CivpsIwgPiBsb2FjaDsKK+WWiiA+IHNob3V0Owor6L2uID4gd2hlZWw7CivlkIkgPiBsdWNreTsKK+iurSA+IHRlYWNoOwor5Y+xID4gc2NvbGQ7CivpgJAgPiBjaGFzZTsKK+ebliA+IGNvdmVyOwor5Y+pID4ga25vY2s7CivoiI0gPiBob3VzZTsKK+avjiA+IGV2ZXJ5Owor5qOAID4gY2hlY2s7Civmj6EgPiBncmFzcDsKK+eJmSA+IHRvb3RoOwor6a6uID4gZnJlc2g7Civlrr0gPiBicm9hZDsKK+auliA+IGJyZWVkOwor5Y2/ID4gbm9ibGU7CivojbcgPiBsb3R1czsKK+atryA+IHRlZXRoOwor5q2qID4gc2xhbnQ7CivmraEgPiBoYXBweTsKK+ajiyA+IGNoZXNzOwor6a2UID4gZGVtb247CivohbAgPiB3YWlzdDsKK+aihSA+IHBsdW1zOwor6ZKiID4gc3RlZWw7CivojLkgPiByb290czsKK+S7hyA+IGVuZW15Owor5qy6ID4gY2hlYXQ7CivprJogPiBiZWFyZDsKK+WMmSA+IHNwb29uOwor5YeAID4gY2xlYW47CivljI0gPiBjcmF3bDsKK+asiiA+IHBvd2VyOwor6IyFID4gcmVlZHM7CivntK8gPiB0aXJlZDsKK+S6qyA+IGVuam95Owor6IyCID4gdGhpY2s7Civli4cgPiBicmF2ZTsKK+acqyA+IGZpbmFsOwor57OKID4gcGFzdGU7CivnqI4gPiB0YXhlczsKK+WLoiA+IHBvd2VyOwor5YueID4gbGFib3I7Civoi5sgPiBzbWFsbDsKK+aDryA+IGhhYml0Owor5YC+ID4gdXBzZXQ7CivlirQgPiBsYWJvcjsKK+mfqSA+IGZlbmNlOwor6LS4ID4gdHJhZGU7CivmqqIgPiBjaGVjazsKK+WKjSA+IHN3b3JkOwor5omrID4gc3dlZXA7CivoibggPiBncmFzczsKK+WJoyA+IHN3b3JkOwor5ZCTID4gc2NhcmU7CivliYMgPiBzaGF2ZTsKK+mXsiA+IGZlbmNlOwor6Ii2ID4gbGFyZ2U7CivliLcgPiBicnVzaDsKK+e+iiA+IHNoZWVwOwor5qipID4gcG93ZXI7CivmqKMgPiBzaGFwZTsKK+aJkSA+IHBvdW5kOwor6IiOID4gaG91c2U7Civnoo4gPiBicmVhazsKK+aogiA+IGhhcHB5Owor56OoID4gZ3JpbmQ7Civoh7ogPiB0b3dlcjsKK+iHrSA+IHNtZWxsOwor5YemID4gcGxhY2U7Civmp5ggPiBzaGFwZTsKK+WAjSA+IHRpbWVzOwor57KXID4gcm91Z2g7Civmp4sgPiBmcmFtZTsKK+WGtiA+IHNtZWx0Owor6IazID4gbWVhbHM7Civppq0gPiBkcml2ZTsKK+aclyA+IGNsZWFyOwor6aasID4gaG9yc2U7CivlhbwgPiB1bml0ZTsKK+meiyA+IHNob2VzOwor5qyjID4gaGFwcHk7CivmjKQgPiBjcm93ZDsKK+alvSA+IGhhcHB5Owor5rSBID4gY2xlYW47CivpopcgPiBncmFpbjsKK+aDoCA+IGZhdm9yOwor5oyvID4gcmFpc2U7CivohaYgPiBicmFpbjsKK+eIrCA+IGNyYXdsOwor6IWVID4gd3Jpc3Q7CivmoYMgPiBwZWFjaDsKK+aOqiA+IHBsYWNlOwor5rOwID4gZ3JlYXQ7CivlnaEgPiBzbG9wZTsKK+iEsyA+IGJyYWluOwor5Z2bID4gYWx0YXI7CivlhJ8gPiByZXBheTsKK+aknCA+IGNoZWNrOwor5b2qID4gdGlnZXI7Civppa4gPiBkcmluazsKK+akjSA+IHBsYW50Owor6aSKID4gcmFpc2U7CivohIogPiBzcGluZTsKK+akhSA+IGNoYWlyOwor55+bID4gc3BlYXI7Civlrr4gPiBndWVzdDsKK+iCmiA+IGJlbGx5Owor5YO5ID4gcHJpY2U7CivotLwgPiB0aGllZjsKK+mjsiA+IGRyaW5rOwor5qOyID4gcGVyY2g7Civpo64gPiBkcmluazsKK+WDniA+IGZhbHNlOwor5YOVID4gc2xhdmU7Civmo5IgPiBzdGljazsKK+WDjSA+IGxhYm9yOwor5YK+ID4gdXBzZXQ7CivlgrcgPiB3b3VuZDsKK+WCrCA+IHByZXNzOwor6IKdID4gbGl2ZXI7Civnm58gPiBzd2VhcjsKK+WBvSA+IGZhbHNlOwor566tID4gYXJyb3c7CivogbIgPiBzb3VuZDsKK+mhniA+IGNsYXNzOwor6ICAID4gc2hpbmU7CivpoYYgPiBncmFpbjsKK+WBiSA+IGdyZWF0Owor55avID4gY3Jhenk7CivogLsgPiBzaGFtZTsKK+S+jSA+IHNlcnZlOwor5YCkID4gcHJpY2U7CivooasgPiBzaGlydDsKK+mgkyA+IHBhdXNlOwor5o+tID4gcmFpc2U7CivojrIgPiBsb3R1czsKK+mSuyA+IGRyaWxsOwor5qCEID4gZ2xvcnk7Civls6EgPiBnb3JnZTsKK+mfuyA+IHJoeW1lOwor5p+1ID4gZmVuY2U7CivkuJEgPiBjbG93bjsKK+e/syA+IHNoYWRlOwor5rWTID4gdGhpY2s7CivmjYkgPiBncmFzcDsKK+a+syA+IGlubGV0Owor55a8ID4gYWNoZXM7CivmoaMgPiBzaGVsZjsKK+aKmyA+IHRocm93Owor5L6hID4gcHJpY2U7CivpmJQgPiBicm9hZDsKK+eOmyA+IGFnYXRlOwor6Z20ID4gYm9vdHM7CivlsJ0gPiB0YXN0ZTsKK+aJoyA+IGtub2NrOwor6Z2cID4gcXVpZXQ7CivlgrIgPiBwcm91ZDsKK+S8uiA+IHNlcnZlOwor6ZSQID4gc2hhcnA7CivpnJwgPiBmcm9zdDsKK+WQtSA+IGFyZ3VlOwor5rKfID4gZGl0Y2g7CivmtZEgPiBtdWRkeTsKK+mCqiA+IHdyb25nOwor6ISGID4gY3Jpc3A7Civlgb8gPiByZXBheTsKK+aLnyA+IGRyYWZ0Owor5puzID4gdHJhaWw7Civpm6IgPiBsZWF2ZTsKK+mbnCA+IG1peGVkOwor5Y+bID4gcmViZWw7CivngrwgPiBzbWVsdDsKK+mbkSA+IG1peGVkOwor57+8ID4gd2luZ3M7CivlkbUgPiBzY29sZDsKK+eUnCA+IHN3ZWV0Owor5oq5ID4gc21lYXI7CivpmpkgPiBjcmFjazsKK+aJlCA+IHRocm93Owor5bu3ID4gY291cnQ7CivmjrcgPiB0aHJvdzsKK+WChSA+IHR1dG9yOwor5pmpID4gbmlnaHQ7CivnuZQgPiB3ZWF2ZTsKK+WWtyA+IHNwdXJ0Owor5rWpID4gZ3JlYXQ7CivlkKkgPiBvcmRlcjsKK+S8qiA+IGZhbHNlOwor556OID4gYmxpbmQ7Civnn64gPiBzaG9ydDsKK+m9vyA+IHRlZXRoOwor57eRID4gZ3JlZW47CivlqLYgPiBtYXJyeTsKK+e3iiA+IHRlbnNlOwor6ZeHID4gY2xvc2U7CivnkoMgPiBnbGFzczsKK+aWtyA+IHNldmVyOwor57OWID4gc3VnYXI7Civnj4ogPiBjb3JhbDsKK+ajjSA+IHN0aWNrOwor6ZaRID4gZmVuY2U7CivnjrsgPiBnbGFzczsKK+eguCA+IHNtYXNoOwor5Zq3ID4gc2hvdXQ7CivploMgPiBmbGFzaDsKK+aVtSA+IGVuZW15Owor57WeID4gdHdpc3Q7CivlnZ8gPiBncmF2ZTsKK+m5pCA+IGNyYW5lOwor57WEID4gY2xhc3M7CivkuZYgPiByZWJlbDsKK+e0miA+IGxldmVsOwor57SZID4gcGFwZXI7CivntI0gPiBhZG1pdDsKK+i9qCA+IHRyYWNrOwor5pOxID4gcGxhY2U7Civmk6wgPiBkcmFmdDsKK+ehlSA+IGdyZWF0Owor5pOnID4gcmFpc2U7Civmk6EgPiBjYXJyeTsKK+aTlCA+IGNhcnJ5Owor5pKyID4gcG91bmQ7Civlhb0gPiBiZWFzdDsKK+exliA+IHRhbGx5Owor6ZCYID4gY2xvY2s7Civpga4gPiBjb3ZlcjsKK+aTkiA+IGNhdGNoOwor56+JID4gYnVpbGQ7Civmj4MgPiBzaGVhcjsKK+eukiA+IGJyb29tOwor6byOID4gbGFyZ2U7CivmjoMgPiBzd2VlcDsKK+mNriA+IGJyYXNzOwor5ZeTID4gdm9pY2U7CivnspIgPiBncmFpbjsKK+mMryA+IGVycm9yOwor5ZWlID4gd2hhdFw/Owor6YyiID4gbW9uZXk7CivonJwgPiBob25leTsKK+aMmSA+IHJhaXNlOwor6Yu8ID4gc3RlZWw7Civmi7YgPiBwcmVzczsKK+mLrSA+IHNoYXJwOwor5pCBID4gcGxhY2U7Civpi48gPiB0b25nczsKK+iCvyA+IHN3ZWxsOwor6YqtID4gbW9uZXk7Civoo5kgPiBza2lydDsKK+iDgCA+IHN3ZWxsOwor6L6cID4gY3JpbWU7Civlk4cgPiB2b21pdDsKK+WwvyA+IHVyaW5lOwor6YCuID4gc2VpemU7CivliK4gPiBzaGF2ZTsKK+WYsSA+IG9yZGVyOwor5YChID4gZ3VpZGU7CivmkI8gPiBzZWl6ZTsKK+WFnCA+IHBvdWNoOwor6a2EID4gdmlnb3I7CivmmbAgPiBjbGVhcjsKK+ezlSA+IGNha2VzOwor56epID4gb3JkZXI7CivnqJogPiB5b3VuZzsKK+mIjSA+IGJsdW50Owor5oe3ID4gYm9zb207Civmu6ggPiBiZWFjaDsKK+aHkCA+IGJvc29tOwor6LqBID4gdGVuc2U7CivnlKsgPiBiZWdpbjsKK+emvSA+IGJpcmRzOwor5oa6ID4gcGVhY2U7Civpk74gPiBjaGFpbjsKK+aGrCA+IHJvdXNlOwor5rKQID4gYmF0aGU7Civlh7MgPiBiZW5jaDsKK+mFrCA+IHRvYXN0Owor5oWjID4gaGFiaXQ7Civngb8gPiB2aXZpZDsKK+mftSA+IHJoeW1lOwor5pSAID4gY2xpbWI7CivlkpIgPiBjdXJzZTsKK+ayqyA+IGZyb3RoOwor56KMID4gcm91Z2g7CivlnaQgPiBlYXJ0aDsKK+eEsCA+IGZsYW1lOwor6YCXID4gdGVtcHQ7CivpgoQgPiBzdGlsbDsKK+mtgSA+IGNoaWVmOwor5rulID4gZmxvb2Q7CivpgakgPiBtYXRjaDsKK+aBpSA+IHNoYW1lOwor5qGGID4gZnJhbWU7CivlloAgPiB2b21pdDsKK+eglSA+IGJyZWFrOwor57+FID4gd2luZ3M7CivmiLMgPiBwcmljazsKK+ahqSA+IHN0YWtlOwor6IK6ID4gbHVuZ3M7CivnurEgPiBnYXV6ZTsKK+mZoSA+IHN0ZWVwOwor54OrID4gc2NhbGQ7CivljJUgPiBzcG9vbjsKK+m5hSA+IGdvb3NlOwor5pWeID4gcm9vbXk7CivmtY8gPiBjbGVhcjsKK+eDgSA+IHNoaW5lOwor6K+IID4gY2hlYXQ7Civls6ggPiBsb2Z0eTsKK+iZkCA+IGNydWVsOwor6L6rID4gYnJhaWQ7Civll70gPiBjb3VnaDsKK+aApiA+IGVhZ2VyOwor5rWHID4gc3ByYXk7CivohpsgPiBjaGVzdDsKK+mXtSA+IG1vdXJuOwor6JCDID4gZGVuc2U7CivoopwgPiBzb2NrczsKK+aPvSA+IGdyYXNwOwor6I2rID4gc2hhZGU7CivotL8gPiBicmliZTsKK+aVnSA+IGJyZWFrOwor54aPID4gc21va2U7CivljIAgPiBlcXVhbDsKK+aygyA+IHdhdGVyOwor6J2HID4gZmxpZXM7Civnu54gPiB0d2lzdDsKK+WRlSA+IHZvbWl0Owor5aKFID4gdmlsbGE7Civnp70gPiBkaXJ0eTsKK+iwrCA+IGVycm9yOwor5Z6EID4gZ3JhdmU7CivlkbsgPiBncm9hbjsKK+aLpyA+IHBpbmNoOwor5b2wID4gY2xlYXI7CivmoJYgPiBwZXJjaDsKK+aJvCA+IGdyYXNwOwor5rWKID4gbXVkZHk7CivmnaAgPiBsZXZlcjsKK+aDqyA+IHRpcmVkOwor5pSYID4gc2VpemU7CivnvI4gPiBzYXRpbjsKK+aDriA+IGRyZWFkOwor5ZmXID4gYnVyc3Q7Civnn7YgPiBqZXR0eTsKK+eToyA+IHBldGFsOwor6budID4gYmxhY2s7CivnsIcgPiBzd2FybTsKK+aHiiA+IHZleGVkOwor5Yu6ID4gc3Bvb247CivlpK0gPiB5b3VuZzsKK+aLhyA+IHRodW1iOwor6ZOyID4gc3BhZGU7Civogq4gPiBkaXJ0eTsKK+WTvSA+IGNob2tlOwor6K+jID4gcmVhY2g7CivngqsgPiBzaGluZTsKK+mSnSA+IGJsdW50Owor5qCFID4gZmVuY2U7CivlhpUgPiBjcm93bjsKK+W7kyA+IGJyb2FkOwor5bOtID4gc3RlZXA7Civno4UgPiBwb3VuZDsKK+eWriA+IHR1bW9yOwor6LWDID4gYm9vdHk7CivnmKQgPiB0dW1vcjsKK+WpiiA+IHdob3JlOwor6ZSvID4gYVwtc2F3Owor56eJID4gZ3Jhc3A7Civoh7sgPiByZWFjaDsKK+WYiCA+IG5vaXN5Owor6K+FID4gY3Vyc2U7CivnvLAgPiByZWluczsKK+iuqiA+IGFidXNlOwor5b+hID4gYVwtc2FkOwor5rahID4gc3dpcmw7Civppo0gPiBicmVhZDsKK+mihSA+IHNrdWxsOwor56WvID4gbHVja3k7Civlv5YgPiBndWVzczsKK+eDmSA+IGJyYW5kOwor5Z+UID4gcGxhaW47Civms5MgPiBjbGVhcjsKK+WZjiA+IGNob2tlOwor6ZicID4gbW91bmQ7Civkv6ggPiBncmF2ZTsKK+eCrCA+IHRvcmNoOwor6LSuID4gc3RvcmU7CivmuI4gPiBkaXRjaDsKK+eZqyA+IGNyYXp5Owor54KZID4gcm9hc3Q7CivogocgPiBiZWdpbjsKK+W4miA+IGJyb29tOwor5oGsID4gcXVpZXQ7CivlqaogPiBjb3ZldDsKK+i5kSA+IHRyZWFkOwor56u6ID4gaW5kaWE7CivliYwgPiBzbGFzaDsKK+iNpyA+IHNoaW5lOwor6LWCID4gYnJpYmU7Civor7IgPiB0ZWFjaDsKK+etmyA+IHNpZXZlOwor56+hID4gdXN1cnA7CivpsrggPiB3aGFsZTsKK+aKoSA+IHN3aW5nOwor5rauID4gcmluc2U7CivmjI4gPiBjYXJyeTsKK+mFtSA+IHllYXN0Owor5qmEID4gb2xpdmU7CivmpoQgPiBvbGl2ZTsKK+eooCA+IGRlbnNlOwor5oK7ID4gYW5nZXI7Civpm48gPiBjaGljazsKK+aRuSA+IHRyYWNlOwor5ranID4gYnJvb2s7CivohbogPiBnbGFuZDsKK+WTriA+IGNvdWdoOwor6KKSID4gc3RyaXA7CivmiqAgPiByYWlzZTsKK+W/sSA+IHRydXRoOwor5ZmkID4gY2xvc2U7Civpq68gPiBiZWFyZDsKK+icvyA+IGNyZWVwOwor6ZWAID4gcGxhdGU7Civog60gPiByb3VnZTsKK+mrhSA+IHNrdWxsOwor54SYID4gc2hpbmU7CivkvZcgPiBvdGhlcjsKK+i1syA+IGdyYW5kOwor57OgID4gY2hhZmY7CivluJsgPiBzaWxrczsKK+S+jyA+IHNtYWxsOwor5LiVID4gZ3JlYXQ7CivpsqggPiBzaGFyazsKK+i4nSA+IGFua2xlOwor6amtID4gZHJpdmU7CivnnIggPiBnbG9hdDsKK+WArSA+IGR3YXJmOwor6ZWQID4gc3RvdmU7Civoh4YgPiBjaGVzdDsKK+WtuiA+IGNoaWxkOwor6JmxID4gbG91c2U7CivnkZkgPiBhZ2F0ZTsKK+ikmyA+IGxhcGVsOwor5oG6ID4gZW5qb3k7Civmk54gPiBzaGFrZTsKK+eulSA+IHNpZXZlOwor5raTID4gYnJvb2s7CivlmbwgPiBzb3VuZDsKK+aQkCA+IGNyYW1wOwor5oibID4gbGFuY2U7Civpu5QgPiBibGFjazsKK+mYliA+IGNsb3NlOwor5ZGDID4gYmVsY2g7CivmuokgPiB3YXRlcjsKK+eCgCA+IHJvYXN0Owor55qOID4gd2hpdGU7Civmpq0gPiBraW9zazsKK+mFqiA+IGNyZWFtOwor5YKAID4gZ3JlYXQ7CivlrYAgPiB3aWRvdzsKK+WtqiA+IHR3aW5zOwor5rOxID4gZ3JlYXQ7CivlspYgPiBzdGVlcDsKK+W/uCA+IGJsdXNoOwor556wID4gd2F0Y2g7CivosJIgPiB2aXNpdDsKK+iniiA+IGNvdmV0Owor5rCuID4geGVub247Civnl6MgPiBzcG90czsKK+aRkiA+IGV4cGVsOwor5L+4ID4gd2FnZXM7CivmhKAgPiBhbmdyeTsKK+WykSA+IHN0ZWVwOwor5pC9ID4gc21lYXI7CivmiaogPiBzdG9rZTsKK+eRmiA+IGNvcmFsOwor55qZID4gd2hpdGU7Civnu4kgPiBjcmVwZTsKK+W/viA+IGFuZ2VyOwor55uCID4gYmFzaW47Civnj4AgPiBhbWJlcjsKK+WBiCA+IGJyYXZlOwor5rKUID4gZmxvb2Q7Civor6kgPiBib2FzdDsKK+iKjSA+IHBlb255Owor6KS2ID4gcGxlYXQ7CivphZcgPiBkcnVuazsKK+WSpCA+IHNjb2xkOwor5p+gID4gbGVtb247Civor5kgPiB0ZWFzZTsKK+WBgyA+IGNlYXNlOwor57u6ID4gc2tlaW47Civmj78gPiBwcmVzczsKK+mHiSA+IGdsYXplOwor6bmtID4gaGVyb247CivlrpMgPiBxdWlldDsKK+WtmyA+IGNvbWV0Owor5ZmrID4gYmVsY2g7CivlvIsgPiBjYXRjaDsKK+m+myA+IG5pY2hlOwor5b+qID4gcXVpZXQ7CivplYIgPiBjYXJ2ZTsKK+mqniA+IHJhaXNlOwor6aKMID4gbW91dGg7Civpk6AgPiBhcm1vcjsKK+mzhSA+IGxvYWNoOwor56eGID4gc3RyYXc7CivltoIgPiBjbGlmZjsKK+akvSA+IGJlYW1zOwor6aKmID4gZnJvd247Civmt5YgPiBzbHVzaDsKK+aBmiA+IGFuZ2VyOwor6I6gID4gd2VlZHM7CivmqZsgPiBhXC1wZWc7CivpmJUgPiBjbG9zZTsKK+WSuyA+IHNob3V0Owor56WbID4gZXhwZWw7CivokrogPiBmdXJ6ZTsKK+ihvSA+IGxhcGVsOwor57+VID4gYWdyZWU7CivpnL4gPiBtaXN0eTsKK+egpyA+IGFudmlsOwor6LmJID4gZXJyb3I7Civlk4IgPiBzbWlsZTsKK+iDuiA+IGFtaW5lOwor6JutID4gbGVlY2g7Civpn6ogPiByaWdodDsKK+ivqCA+IGpva2VzOwor6LWdID4gZmFsc2U7Civlsr8gPiBncmFuZDsKK+aAqyA+IHNvcnJ5Owor6I2PID4gYmVhbnM7CivmpZQgPiB3ZWRnZTsKK+aTmCA+IHRodW1iOwor6L2xID4gd2hlZWw7Civlqr4gPiBtYXJyeTsKK+eXjSA+IHdvdW5kOwor542tID4gb3R0ZXI7Civpu6IgPiBibGFjazsKK+mTpyA+IHNwYWRlOwor5ZCSID4gc2hvdXQ7Civnlr0gPiB1bGNlcjsKK+ivnyA+IGFidXNlOwor6IyUID4gZ3JhdmU7CivmoaQgPiBhbGRlcjsKK+mThiA+IHJpdmV0Owor6YWpID4gZHJ1bms7CivmsLUgPiB3YXRlcjsKK+aSuiA+IGh1cnJ5Owor5aWYID4gbGFyZ2U7CivogoQgPiBsZWFybjsKK+i4ryA+IHdhdmVyOwor5a2iID4gc3BvcmU7CivpsrIgPiBzcGF3bjsKK+mFiiA+IGRydW5rOwor6ZOoID4gd2VpZ2g7Civphb0gPiB0aGljazsKK+mYkiA+IGFsb25lOwor6aWsID4gb3JkZXI7CivosZUgPiBhXC1waWc7CivnrIogPiBsYWRsZTsKK+e9hSA+IGNyYWNrOwor6ZKcID4gc3RlZWw7CivnlYggPiBmaWVsZDsKK+WblyA+IGVyZWN0Owor5bqlID4gc2hhZGU7Civnk6QgPiBmbGVzaDsKK+mTqSA+IG1vdWx0Owor5riWID4ganVpY2U7Civlv4QgPiBoZWFydDsKK+ivkyA+IGNoZWF0Owor6bmRID4gcXVhaWw7CivojJUgPiBhbG9uZTsKK+WehSA+IG1vdW5kOwor6J+lID4gbGVlY2g7CivpubMgPiBjcmFuZTsKK+m5jCA+IHF1YWlsOwor5pmfID4gY2xlYXI7CivllYEgPiBjaGlycDsKK+mGmiA+IGV0aGVyOwor55CwID4gamV3ZWw7Civov6ggPiB1bnRpbDsKK+ikqyA+IHN0cmlwOwor6bmsID4gc25pcGU7Civnnr0gPiBibGluZDsKK+WCiCA+IHRyaWJlOwor6am9ID4gdGlyZWQ7CivosK8gPiB0b3dlcjsKK+mTsCA+IGhpbmdlOwor5rSMID4gY2xlYXI7CivloJ4gPiBwbGF0ZTsKK+ehvCA+IGJvcmF4Owor6KmIID4gc2NvbGQ7Civpha8gPiBlc3RlcjsKK+mVqiA+IGNvaW5zOwor6ZS4ID4gc3BhZGU7CivmiIsgPiBzbWFsbDsKK+aJpiA+IHByb2JlOwor5rq3ID4gcHJpdnk7Civkv7MgPiBhY3RvcjsKK+mboCA+IGVuZW15Owor56C7ID4gZ3JpbmQ7CivomJYgPiBzdHVtcDsKK+WigCA+IHBvcmNoOwor6bq0ID4geWVhc3Q7CivnqrMgPiBkaXJ0eTsKK+a9iyA+IHdhdmVzOwor5rSOID4gdW50aWw7CivppacgPiBzdWdhcjsKK+WWiCA+IG11c2ljOwor5ZChID4gYmxhbWU7CivpmZ8gPiBjbGltYjsKK+mymyA+IHNoYXJrOwor55qyID4gY3JhY2s7CivnmIogPiB3YXJ0czsKK+mmlSA+IGJyZWFkOwor5pCmID4gZ3Jhc3A7CivlnrQgPiBzbWFsbDsKK+mYnSA+IHBsYWNlOwor5Y6jID4gc2hlbGw7Civns4UgPiBibGVuZDsKK+mTlyA+IHRvbmdzOwor6ZiPID4gYmxvY2s7CivliaEgPiBzaGFycDsKK+mygiA+IGJyZWFtOwor5rq9ID4gbW9pc3Q7CivmgL8gPiBlbmpveTsKK+iJuSA+IGdyYXNzOwor6auRID4gc2t1bGw7Civot70gPiBrbmVlbDsKK+ewjyA+IGFcLWJveDsKK+ijpSA+IGZvbGRzOwor6ZKjID4gcGxhdGU7Civmp4ogPiBzcGVhcjsKK+akiyA+IGZydWl0Owor57yzID4gbm9vc2U7Civnu5AgPiBjaGVhdDsKK+a7oiA+IGNsZWFyOwor6b6gID4gZmx1dGU7CivonaQgPiBsYXJ2YTsKK+awhiA+IHRoaWNrOwor5Z+tID4gYVwtZGFtOwor5Z+9ID4gYnJvb207CivlnbwgPiBzcGxpdDsKK+ivliA+IGVycm9yOwor6bK2ID4gc2hlYXQ7CivosoUgPiBicmF2ZTsKK+eapCA+IHdoaXRlOwor56iCID4gZ3Jhc3M7CivplYYgPiBzd29yZDsKK+mUniA+IGluZ290Owor54idID4gdG9yY2g7CivmsKEgPiByYWRvbjsKK+anrSA+IG1hcGxlOwor5b2YID4gc3dpbmU7CivlvZYgPiBhXC1ob2c7Civmu5cgPiBkcmFpbjsKK+W7kSA+IGFcLWh1dDsKK+WMjyA+IGdvdXJkOwor6JWWID4gbG90dXM7CivkvpQgPiBlcXVhbDsKK+mziiA+IGJyZWFtOwor56+8ID4gc2VkYW47Civom54gPiBzbmFpbDsKK+ibsiA+IHdvcm1zOwor6JmNID4gdGlnZXI7CivmsJkgPiB4ZW5vbjsKK+i1hyA+IGJyaWJlOwor55KBID4gXChnZW1cKTsKK+e7lyA+IGJhc3RlOwor6JCPID4gbG90dXM7Civln5ggPiByb29zdDsKK+m9kiA+IHRlZXRoOwor6b2FID4gc21lbGw7Civpu64gPiBibGFjazsKK+m7kyA+IGJsYWNrOwor6bq6ID4gZmxvdXI7CivpurkgPiB5ZWFzdDsKK+m6tSA+IGZsb3VyOwor6bqvID4geWVhc3Q7CivpuqsgPiBmbG91cjsKK+m6qiA+IGZsb3VyOwor6bqkID4gcm91Z2g7CivpupggPiBzY2VudDsKK+m6gSA+IHJvdWdoOwor6bm+ID4gc2FsdHk7CivpubogPiBzYWx0eTsKK+m5uSA+IHNhbHR5Owor6biyID4gbXluYWg7CivpuJsgPiBjcmFuZTsKK+m4mCA+IGVhZ2xlOwor6be4ID4gc25pcGU7Civpt4MgPiBxdWFpbDsKK+m2tSA+IGNoaWNrOwor6baJID4gcXVhaWw7CivptbAgPiBlYWdsZTsKK+m1qiA+IHF1YWlsOwor6bWeID4gZ29vc2U7CivptZ0gPiBnb29zZTsKK+m0syA+IHF1YWlsOwor6bSqID4gc3dvb3A7CivptKUgPiBzd29vcDsKK+m0nSA+IG15bmFoOwor6bG7ID4gZnJlc2g7Civpsa4gPiBicmVhbTsKK+mwniA+IHNxdWlkOwor6bCNID4gbG9hY2g7CivpsIsgPiBzaGVhdDsKK+mvvyA+IGJyZWFtOwor6a+wID4gc2hlYXQ7Civpr6ggPiB3aGFsZTsKK+mvpCA+IHNwYXduOwor6a+LID4gc2hhcms7Civpr4ogPiBzaGFyazsKK+muqyA+IHNoYXJrOwor6a6JID4gYnJlYW07CivprbQgPiBicmVhbTsKK+mthiA+IGJsYWNrOwor6aySID4gYmxhY2s7CivprI4gPiBmYXZ1czsKK+msjSA+IGJlYXJkOwor6ayBID4gZmF2dXM7Civpq7MgPiBzdGF0ZTsKK+mrsiA+IGFcLXdpZzsKK+mrpSA+IGJlYXJkOwor6auSID4gZGlydHk7Civpq48gPiBza3VsbDsKK+mqryA+IGRpcnR5Owor6ampID4gaGFwcHk7CivpqaYgPiBob3JzZTsKK+mpliA+IGJsYWNrOwor6ai7ID4gaG9yc2U7CivpqKsgPiByYWlzZTsKK+mooCA+IGhvcnNlOwor6aiRID4gaG9yc2U7Civpp6ogPiBjcm93ZDsKK+mnniA+IGNhbWVsOwor6aeRID4gdGlyZWQ7CivppqEgPiBzY2VudDsKK+mloiA+IGJyZWFkOwor6aWYID4gZ3J1ZWw7CivppY0gPiBtZWFsczsKK+mlgyA+IGJyZWFkOwor6aS7ID4gY2FrZXM7CivppLkgPiBzdWdhcjsKK+mksyA+IHN1Z2FyOwor6aSqID4gZmVhc3Q7CivppKYgPiBjYW5keTsKK+mknCA+IGNha2VzOwor6aO2ID4gb2RvdXI7Civpo60gPiBvcmRlcjsKK+mjkSA+IHN0b3JtOwor6aK9ID4gYmFsbXk7CivpobEgPiBza3VsbDsKK+mhsCA+IGZyb3duOwor6aGjID4gZnJvd247CivpoZcgPiBxdWlldDsKK+mgviA+IGJlYXJkOwor6aCgID4gcXVpZXQ7CivpoJwgPiBtb3V0aDsKK+mggCA+IG11c2ljOwor6Z+6ID4gbXVzaWM7Civpn6QgPiBzb2NrczsKK+mfmSA+IHJpZ2h0Owor6Z+TID4gZmVuY2U7Civpn4ggPiBzb2NrczsKK+mfhiA+IHN3aW5nOwor6Z+BID4gcmVpbnM7Civpnr4gPiBib290czsKK+metSA+IHNob2VzOwor6Z6oID4gdHJpYmU7CivpnpcgPiByZWluczsKK+megyA+IGJvYXJkOwor6Z2mID4gdGltaWQ7CivpnYEgPiB0aGljazsKK+mcsSA+IGNsb3VkOwor6ZyZID4gc2xlZXQ7Civpm50gPiBtYXJzaDsKK+mbmyA+IGNoaWNrOwor6ZqCID4gc2hhZHk7CivpmbwgPiBpc2xldDsKK+mYuSA+IGFcLXBlbjsKK+mXmiA+IGZsYXNoOwor6ZeUID4gY2xvc2U7Civpl4sgPiBjbG9zZTsKK+mXiiA+IGJyb2FkOwor6ZeDID4gYWxvbmU7CivplrwgPiBibG9jazsKK+mWtCA+IHF1aWV0Owor6ZamID4gY3Jvd2Q7CivplpQgPiBtb3VybjsKK+mVnyA+IGxhdGhlOwor6ZS8ID4gY2FydmU7CivplJMgPiBjYXJ2ZTsKK+mTmCA+IHN3b3JkOwor6ZKDID4gbWV0YWw7Civpkb0gPiBkcmlsbDsKK+mRsSA+IHNwYWRlOwor6ZGaID4gZHJpbGw7CivpkZMgPiBzcGVhcjsKK+mPuSA+IGNvaW5zOwor6Y+1ID4gc3BhZGU7Civpj6YgPiBzcGVhcjsKK+mPpCA+IGNhcnZlOwor6Y+fID4gc3BhZGU7Civpj4wgPiBzd29yZDsKK+mPiCA+IGNoYWluOwor6Y+HID4gbGF0aGU7CivpjqwgPiBzdG92ZTsKK+mOpyA+IGFybW9yOwor6Y6XID4gcmlmbGU7Civpjo0gPiBjaGFpbjsKK+mNuSA+IHNwYWRlOwor6Y2tID4gYXJyb3c7CivpjaQgPiBzcGFkZTsKK+mNjyA+IHNwYWRlOwor6Y2NID4gcGxhdGU7CivpjYkgPiBzcG9vbjsKK+mMgSA+IGluZ290Owor6Yu5ID4gc2hhcnA7Civpi7ggPiBhXC1zYXc7Civpi7IgPiByaXZldDsKK+mLnyA+IGNhcnZlOwor6YuYID4gc3dvcmQ7CivpirMgPiBzaGFycDsKK+mKmyA+IHNoYXJwOwor6YqTID4gd2VpZ2g7Civpib4gPiBzcGVhcjsKK+mJvCA+IHBsYXRlOwor6Ym4ID4gaGluZ2U7CivpiZogPiByaXZldDsKK+mJhSA+IHN0ZWVsOwor6YiSID4gc3BlYXI7CivpiJEgPiBwbGF0ZTsKK+mIhyA+IGFuXC1heDsKK+mHvCA+IHN3b3JkOwor6YeWID4ga25pZmU7Civph4UgPiB0aGljazsKK+mHgiA+IGRyYWluOwor6YS7ID4gc3BvaWw7Civpg6QgPiBjcmFjazsKK+mBqyA+IHNwZWVkOwor6YGdID4gbWl4ZWQ7CivpgLQgPiBhcmd1ZTsKK+i+riA+IGJyYWlkOwor6L6kID4gd29yZHM7CivovqAgPiBjcmltZTsKK+i8kyA+IG1vdXJuOwor6LyPID4gbGlnaHQ7CivovIggPiBzaGFmdDsKK+i7sSA+IHdoZWVsOwor6LucID4gcmVpbnM7Civou4wgPiB0cmFjazsKK+i6oSA+IHRyZWFkOwor6LiGID4gc3F1YXQ7CivotqEgPiBwbGFjZTsKK+i0nCA+IGJvb3R5Owor6LSTID4gYm9vdHk7CivotIsgPiBmYWxzZTsKK+izlSA+IGJyaWJlOwor6LOUID4gZ3Vlc3Q7Civos5MgPiBndWVzdDsKK+izjSA+IGJvb3R5Owor6LOEID4gYnJpYmU7Civos4IgPiBicmliZTsKK+iyvyA+IHRyYWRlOwor6LKkID4gc3RlcHM7CivosZQgPiBwbHVtcDsKK+iumSA+IGNoZWVyOwor6K6TID4gYWxsb3c7CivorpAgPiBlbmVteTsKK+iujiA+IGVuZW15Owor6K2ZID4gdG93ZXI7CivorYwgPiBmYWxzZTsKK+itgSA+IG5vaXNlOwor6KysID4gZXJyb3I7CivorJEgPiBzaGFtZTsKK+isjyA+IHNjb2xkOwor6KuiID4gam9rZXM7Civoq6AgPiBub2lzeTsKK+irkCA+IGZhdWx0Owor6KqqID4gc3BlYWs7CivoqqggPiB0ZWFjaDsKK+iqhiA+IGNoZWF0Owor6Km/ID4gZXJyb3I7CivoqbwgPiB0ZWFzZTsKK+iprCA+IGFidXNlOwor6KmjID4gcmVhY2g7CivoqaEgPiBib2FzdDsKK+ipmyA+IGN1cnNlOwor6KmWID4gYXJndWU7CivoqZEgPiBjaGVhdDsKK+ipkCA+IGNoZWF0Owor6Ki9ID4gYmxhbWU7CivoqKcgPiBmYXVsdDsKK+iolSA+IGFidXNlOwor6KiTID4gdGVhY2g7CivoqI8gPiBib2FzdDsKK+inlCA+IGNhdHR5Owor6KasID4gY292ZXQ7Civopo8gPiBydWxlczsKK+ilviA+IGNvdmVyOwor6KWqID4gc29ja3M7CivopaIgPiBzdHJpcDsKK+iljSA+IG1peGVkOwor6KS7ID4gZGlydHk7CivopLogPiBkaXJ0eTsKK+iklSA+IHNoaXJ0Owor6KK1ID4gbGFwZWw7CivooZUgPiBhbGxleTsKK+ihiiA+IHNtZWFyOwor6KGBID4gYmxvb2Q7CivooJsgPiBmbGllczsKK+iglyA+IFwoYXBlXCk7CivooIUgPiBmbGllczsKK+ifryA+IHdvcm1zOwor6J+iID4gY2F1bGs7CivonaggPiBsb3VzZTsKK+idmCA+IGdlY2tvOwor6J2TID4gc25haWw7CivomrQgPiBsYXJ2YTsKK+iZoyA+IGNydWVsOwor6JmbID4gZmFsc2U7CivomJcgPiBzdHVtcDsKK+iYkyA+IHRoeW1lOwor6JiLID4gYXBwbGU7Civol74gPiBzaGFkZTsKK+iXqiA+IG1hcnNoOwor6JaWID4gZW1wdHk7CivolokgPiBkaXJ0eTsKK+iSniA+IHJlYWNoOwor6JGiID4gY292ZXI7CivokY0gPiBwbGFudDsKK+iQuSA+IGdyYXNzOwor6I6/ID4gdGhvcm47CivojbMgPiBiZWFuczsKK+iNriA+IGdyYXNzOwor6I2EID4gcm9vdHM7CivojIcgPiBncmFzczsKK+iLviA+IHNtZWxsOwor6Iu2ID4gd2Vhcnk7CivoiJcgPiBzdG9yZTsKK+iIliA+IHN0b3JlOwor6IiLID4gc3BsaXQ7CivoiIkgPiByYWlzZTsKK+iHvSA+IGFcLXBpdDsKK+iHsiA+IGp1bXB5Owor6IeiID4gZGlydHk7Civoh5sgPiBicm90aDsKK+iHmSA+IHJvdWdlOwor6IeQID4gYnJvdGg7CivohrYgPiBsaXZlcjsKK+iGhyA+IHN3ZWxsOwor6IWrID4gc3dlbGw7CivohaEgPiBsaW5lczsKK+iEuSA+IHN3ZWxsOwor6IS2ID4gbGluZXM7CivohKIgPiBmbGVzaDsKK+iEgyA+IGdsYW5kOwor6IK1ID4gdGFibGU7CivogpUgPiB0b3VnaDsKK+iAniA+IGZsYWlsOwor57+9ID4gd2hpcnI7Civnv4QgPiB3aW5kczsKK+e+sSA+IHNoZWVwOwor576jID4gZ3JvdXA7CivnvbcgPiBjZWFzZTsKK+e9iSA+IGFcLXBvdDsKK+e6uyA+IHJhbWllOwor57mvID4gbm9vc2U7Civnua4gPiByZWluczsKK+e4oCA+IGNyZXBlOwor57iQID4gY3JlcGU7CivnuI8gPiBwdXJzZTsKK+e3niA+IHNhdGluOwor57a5ID4gc2tlaW47CivntqAgPiBncmVlbjsKK+e2jCA+IGNsb3RoOwor57WOID4gYmFzdGU7CivntYEgPiByb3VnaDsKK+e0vyA+IGNoZWF0Owor57S1ID4gcmFtaWU7CivntJ0gPiB3ZWF2ZTsKK+e0lyA+IGdhdXplOwor57SRID4gZnJlc2g7Civns5QgPiBqdWljZTsKK+ezkyA+IGdyYWluOwor57KOID4gbWV0cmU7CivnsaQgPiB0YWxseTsKK+ewuyA+IGVtcHR5Owor57CbID4gc2lldmU7CivnsJIgPiB1c3VycDsKK+ewgSA+IHNpZXZlOwor56+pID4gc2lldmU7Civnr48gPiBpbmxheTsKK+eumyA+IGJ1Z2xlOwor562zID4gZmVhc3Q7CivnrbAgPiBjYWJsZTsKK+etpiA+IGFcLWtleTsKK+erviA+IGZsdXRlOwor56uUID4gbGl0cmU7Civnqr0gPiBlbXB0eTsKK+eppyA+IHNoZWFmOwor56miID4gZGlydHk7CivnqaAgPiB0aGljazsKK+ephSA+IGNoYWZmOwor56i+ID4gZHJhZnQ7CivnqIUgPiB0YXhlczsKK+enhyA+IHNraWxsOwor56agID4gaGFwcHk7Civnpo4gPiBsdWNreTsKK+elmSA+IGRlbW9uOwor56S2ID4gYVwtanVnOwor56SxID4gZ3JpbmQ7Civno7UgPiBicm9vazsKK+ejryA+IGpldHR5Owor56OhID4gY2xpZmY7Civno5sgPiBjbGlmZjsKK+ejiCA+IHJvY2t5Owor56K7ID4gc29saWQ7Civnoq8gPiBhZ2F0ZTsKK+eiqSA+IGdyZWF0Owor56KBID4gY2hlc3M7CivnoY8gPiBncmluZDsKK+egsyA+IHJvY2t5Owor56CgID4gcm9ja3k7Civnn5MgPiBmYWludDsKK+efiCA+IGRlbnNlOwor556PID4gcm91bmQ7Civnno0gPiBibGluZDsKK+eehyA+IGNsb3NlOwor552YID4gcm91bmQ7CivnnLkgPiBwdXBpbDsKK+echSA+IGlubGF5Owor55u7ID4gZ2xhcmU7Civnm60gPiBjcnVlbDsKK+eavSA+IHNjdXJmOwor55q5ID4gY3JhY2s7CivnmrggPiBjcmFjazsKK+earSA+IHdoaXRlOwor55qrID4gd2hpdGU7CivnmpwgPiB3aGl0ZTsKK+eagSA+IGJsYWNrOwor55myID4gY3Jhenk7CivnmaEgPiBzaWxseTsKK+eYoSA+IHR1bW9yOwor55iLID4gY3Jhenk7CivnlJ4gPiB0YXN0ZTsKK+eUmyA+IHN3ZWV0Owor55SWID4gYVwtcG90Owor55SOID4gYnJpY2s7Civnk5YgPiBpbmxheTsKK+eTiCA+IGdsYXNzOwor55GqID4gYWdhdGU7CivnkZQgPiBcKGphZGU7CivnkZEgPiBjYXJ2ZTsKK+ePliA+IGNhcmF0Owor546IID4gYmxhY2s7CivnjZ0gPiBkZXZpbDsKK+eNjiA+IHByaXplOwor54u1ID4gYmxlbmQ7CivniZwgPiBhblwtb3g7CivniZQgPiBnYWJsZTsKK+eIkyA+IGZsYW1lOwor54iNID4gc2hpbmU7Civnh78gPiBzaGluZTsKK+eHviA+IHNoaW5lOwor54emID4gdml2aWQ7Civnh5kgPiBzY2FsZDsKK+eHjyA+IGJsYXplOwor54eEID4gZmxhbWU7Civnh4IgPiBzbW9rZTsKK+eGmyA+IGJsYXplOwor54aSID4gc2hpbmU7CivnhawgPiByb2FzdDsKK+eFoiA+IGFsb25lOwor54WJID4gc21lbHQ7CivnhJQgPiBmbGFtZTsKK+eDkyA+IHN0b3ZlOwor54OLID4gYm9hc3Q7CivngrAgPiByb2FzdDsKK+eCpyA+IGFzaGVzOwor54GjID4gYVwtYmF5Owor54GiID4gbXVkZHk7CivngZQgPiB3YXZlczsKK+eAuiA+IHNvdW5kOwor54CyID4gd2F2ZXM7CivngI8gPiBjbGVhcjsKK+eAiyA+IGp1aWNlOwor54CGID4gZGl0Y2g7CivngIUgPiBjbGVhcjsKK+eAgSA+IHdhdmVzOwor5r+rID4gZmxvb2Q7CivmvqggPiBzaG9yZTsKK+a+lyA+IGJyb29rOwor5r6RID4gc2xpZGU7CivmvoYgPiBzcHJheTsKK+a9tyA+IGRyYWluOwor5r2dID4gYWdyZWU7CivmvJEgPiB3YXRlcjsKK+a8iCA+IHNob3JlOwor5rmpID4gbXVkZHk7CivmuaMgPiBtaXhlZDsKK+a4viA+IG11ZGR5Owor5re4ID4gY2xlYXI7Civmt6IgPiBkaXRjaDsKK+a3miA+IHRlYXJzOwor5reKID4gZHJvd247CivmtaUgPiBtb2lzdDsKK+a0tCA+IHNvdW5kOwor5rSaID4gZmxvb2Q7CivmtI8gPiB0ZWFyczsKK+azmiA+IGNsZWFyOwor5rKyID4gZmxvYXQ7CivmsbMgPiBoZW5hbjsKK+axjiA+IGZsb2F0Owor5rC5ID4gZGl0Y2g7CivmsKUgPiB4ZW5vbjsKK+awnCA+IGNsZWFyOwor5q6RID4gc3dvb247Civmrb4gPiBkcm93bjsKK+atlSA+IHNwdXJ0Owor5q2TID4gaGFwcHk7CivmrYggPiBzb25nczsKK+asvCA+IGRyaW5rOwor5qy4ID4gc2lnaHM7CivmrKwgPiBjb3VnaDsKK+asmSA+IHNlZGFuOwor5qyWID4gb2xpdmU7Civmq7EgPiB5ZWFzdDsKK+ariCA+IGJlbmNoOwor5qq4ID4gbGVtb247Civmqq8gPiB0YWJsZTsKK+aqqCA+IG1hbmdvOwor5qqUID4gc2hlbGY7CivmqLQgPiBzdGFrZTsKK+aolSA+IHNocnViOwor5qiPID4gc2VkYW47CivmqIEgPiBzdGFrZTsKK+anvCA+IHJ1bGVzOwor5qeTID4gbGV2ZXI7Civmp40gPiBzcGVhcjsKK+amvyA+IGFsZGVyOwor5qauID4gZ2xvcnk7CivmpbMgPiBwbHVtczsKK+alhSA+IGJ1YXJkOwor5qWEID4gYmxvY2s7CivmpIggPiBjZWRhcjsKK+ajiiA+IGNoZXNzOwor5qOBID4gam9pc3Q7CivmorIgPiBqb2lzdDsKK+aikCA+IGZlbmNlOwor5qGvID4gdGFibGU7Civmoa0gPiBlYXZlczsKK+ahmiA+IHByZXNzOwor5qC1ID4gaGVkZ2U7CivmoKsgPiBmZW5jZTsKK+aglCA+IGNhcnZlOwor5qCNID4gYVwtbG90Owor5p+2ID4gbGFkbGU7CivmnacgPiBtYW5nbzsKK+adlSA+IGFsb25lOwor5pyuID4gc2tpbGw7CivmnJYgPiBjbGVhcjsKK+achSA+IGJyYXZlOwor5pu1ID4gdHJhaWw7Civmm6ggPiB2YWd1ZTsKK+aWhiA+IHRlYWNoOwor5paFID4gdGVhY2g7CivmlbogPiBleHBlbDsKK+aVlCA+IGdhdmVsOwor5pWOID4gdGVhY2g7CivmlKwgPiBncmFzcDsKK+aUmyA+IGh1cnJ5Owor5pO7ID4gc2hha2U7Civmk7IgPiB0aHJvdzsKK+aTsCA+IHBpbmNoOwor5pOgID4gY3Jvd2Q7CivmkrMgPiBwcmVzczsKK+aRsyA+IHJhaXNlOwor5pGPID4gcG91bmQ7CivmkKQgPiBzZWl6ZTsKK+aQiiA+IHBsdWNrOwor5pCJID4ga25vY2s7Civmj7UgPiBjYXJyeTsKK+aPhSA+IGdyaW5kOwor5o6EID4gc3dpbmc7Civmjb8gPiBwZXJjaDsKK+aNqyA+IHN0b2tlOwor5oyMID4gZmlnaHQ7Civmi4sgPiB0aHJvdzsKK+aLgyA+IGdyb3BlOwor5omiID4gY2FwZXI7CivmiK0gPiBzcGVhcjsKK+aIoyA+IGxhbmNlOwor5oieID4gbGFuY2U7CivmiJQgPiBzbWFsbDsKK+aHvSA+IGhhcHB5Owor5oelID4gYW5ncnk7Civmh6AgPiBhbmdyeTsKK+aHjCA+IGVuam95Owor5oatID4gY2xlYXI7CivmhpogPiBkcmVhZDsKK+aGiiA+IHRpcmVkOwor5oWsID4gYnJhdmU7CivmhY0gPiBhbmdyeTsKK+aEviA+IGFuZ2VyOwor5oS3ID4gZW5qb3k7CivmhJ4gPiB0aW1pZDsKK+aEgyA+IHJlbGF4Owor5oK+ID4gbmFpdmU7CivmgrAgPiBlbmpveTsKK+aChiA+IGhhcHB5Owor5oG1ID4gZmF2b3I7CivmgZMgPiB2ZXhlZDsKK+W9kSA+IHNub3V0Owor5b2QID4gc25vdXQ7CivlvYIgPiBpc3N1ZTsKK+W8iSA+IGxhcmdlOwor5buVID4gc2hhZGU7Civlua0gPiBjb3ZlcjsKK+W5qiA+IGNvdmVyOwor5bmmID4gY292ZXI7CivluaAgPiBjb3ZlcjsKK+W4kiA+IGFcLWJhZzsKK+W4iyA+IHBhcGVyOwor5betID4gc3R1ZHk7Civlt5sgPiByaXZlcjsKK+W3liA+IGNsaWZmOwor5beMID4gY2xpZmY7Civlt4sgPiBncmFuZDsKK+W3iSA+IHN0ZWVwOwor5beDID4gbG9mdHk7CivltrAgPiBnb3JnZTsKK+W2oSA+IHRhYmxlOwor5baeID4gcmlkZ2U7CivltpQgPiBsb2Z0eTsKK+W2hyA+IHN0ZWVwOwor5bWcID4gcm91Z2g7CivltZIgPiBjbGlmZjsKK+W1giA+IGxvZnR5Owor5bSxID4gbG9mdHk7CivltJogPiBoaWxseTsKK+W0lSA+IGNsaWZmOwor5bO9ID4gZ29yZ2U7Civls6kgPiBsb2Z0eTsKK+WxtiA+IGxvZnR5Owor5bG0ID4gbG9mdHk7CivlsaogPiBwZW5pczsKK+WxjCA+IHBlbmlzOwor5bCwID4gc3dlbGw7CivlsJkgPiBzdGlsbDsKK+WvrCA+IGJyb2FkOwor5a+bID4gYnJvYWQ7Civlr4EgPiBxdWljazsKK+WuuyA+IGRlbnNlOwor5a6NID4gZmxlc2g7Civlrb8gPiB0d2luczsKK+WtliA+IHR3aW5zOwor5auaID4gc2Nvcm47Civlp6ogPiBuaWVjZTsKK+WlsCA+IGFuZ2VyOwor5aWsID4gcHJpemU7CivlpaggPiBwcml6ZTsKK+WlnSA+IGxhcmdlOwor5aOgID4gbW91bmQ7Civlo58gPiBncmF2ZTsKK+WjhiA+IHN0aWZmOwor5aK6ID4gd2FsbHM7CivlorMgPiBncmF2ZTsKK+WinSA+IHN0b255Owor5aKNID4gcGFpbnQ7CivlooggPiBjbGlmZjsKK+WhvCA+IGJyaWNrOwor5aGcID4gZHVzdHk7CivloZkgPiB0cnVseTsKK+WhkiA+IHJvb3N0Owor5aGLID4gZ3JhdmU7CivloYggPiBwYWludDsKK+WgvyA+IHNhbHR5Owor5aC9ID4gbW91bmQ7CivloJYgPiBzbWFsbDsKK+WfsyA+IGFcLXBpdDsKK+WfjCA+IHdhc3RlOwor5Z+GID4gc3Rvbnk7CivlnpogPiBtb3VuZDsKK+WdvyA+IG1vdW5kOwor5Z2wID4gd2lsZHM7CivlnIwgPiBmZW5jZTsKK+WbkSA+IG9yZGVyOwor5ZuFID4gc21pbGU7Civlmq4gPiBndWlkZTsKK+WarSA+IG1vdW5kOwor5ZqsID4gZnJvd247CivlmqEgPiByb3VnaDsKK+WakCA+IHRhc3RlOwor5ZqHID4gc2NhcmU7CivlmbogPiBzdG9yeTsKK+WZtCA+IHNwdXJ0Owor5ZmtID4gc2hvdXQ7CivlmaYgPiBiZWxjaDsKK+WYoiA+IHRoaW5nOwor5ZiSID4gc2hhcnA7Civll5sgPiBwb3VjaDsKK+WXmSA+IGJvYXN0Owor5ZeQID4gYWxhc1whOwor5Za0ID4gaGVsbG87CivllbIgPiBhXC1mZXc7CivllaIgPiBvdW5jZTsKK+WVjSA+IGNyZWFrOwor5ZShID4gb3VuY2U7CivllI4gPiBzb3VuZDsKK+WTtiA+IGJsZWF0Owor5ZOVID4gYmVsY2g7CivlkqIgPiBzb3VuZDsKK+WSjSA+IGxhdWdoOwor5ZCwID4gY2xhbmc7CivlkKMgPiB2b21pdDsKK+WPmiA+IGZhbHNlOwor5Y66ID4gdG9cLWdvOwor5Y65ID4gc3BlYXI7CivljrQgPiBzaGVsbDsKK+WOqiA+IGFcLWh1dDsKK+WOliA+IGJ1bGt5Owor5Y27ID4gc3RpbGw7CivljawgPiBsb2Z0eTsKK+WMnCA+IGJhc2luOwor5Yu7ID4gZXF1YWw7CivlipQgPiBzd29yZDsKK+WKkiA+IHN3b3JkOwor5YqOID4gc3dvcmQ7CivlibEgPiBzd29yZDsKK+WJoCA+IGJyYW5kOwor5YiCID4ga25pZmU7Civlh7wgPiBkaXRjaDsKK+WHiCA+IGNsZWFuOwor5YapID4gd3JpdGU7CivlhqcgPiBhXC1idWQ7CivlhpogPiBjb3ZlcjsKK+WGliA+IGNvdmVyOwor5YaBID4gc21pbGU7CivlhLwgPiBncmF2ZTsKK+WEjiA+IGNhcnJ5Owor5YSMID4gbHVja3k7Civlg78gPiBzbWFsbDsKK+WDhCA+IGxpZ2h0Owor5YKrID4gdGlyZWQ7CivlgZAgPiBmYWxzZTsKK+WBgSA+IHN0YXRlOwor5YCWID4gbHVja3k7Civkv7YgPiBzdGFydDsKK+S+kCA+IHF1aWV0Owor5L6BID4gY3Jvd2Q7CivkvbogPiBmYWlyeTsKK+S9jCA+IHNtYWxsOwor5LypID4gdHJ1c3Q7Civku6sgPiB0cmliZTsKK+S6viA+IGRlYXRoOwor5LqxID4gbmlnaHQ7CivkuZUgPiB0aWdlcjsKK+S4tSA+IHRoaWNrOwor5LivID4gZGVuc2U7CivkuK4gPiBjYXRjaDsKK+S4jCA+IHRhYmxlOwor5LiFID4gdW5kZXI7CivkuIQgPiBhYm92ZTsKK+S2kyA+IHJhbWllOwor5LaPID4gdGVhcnM7CivktosgPiBzb3VuZDsKK+S2hyA+IGFcLXJhdDsKK+S2hiA+IGFcLXJhdDsKK+S1rSA+IGJsYWNrOwor5LWlID4gYmxhY2s7CivktZ8gPiBibGFjazsKK+S0uiA+IGNha2VzOwor5LS5ID4gY2FrZXM7CivktLUgPiBjYWtlczsKK+S0siA+IGZsb3VyOwor5LSeID4gc2FsdHk7Civks70gPiBjcmFuZTsKK+SzsSA+IGR1Y2tzOwor5LOYID4gZ29vc2U7Civks5cgPiBnb29zZTsKK+SyoSA+IGxvYWNoOwor5LKRID4gc3Bhd247CivksZwgPiBzaGFyazsKK+SxliA+IHNoYXJrOwor5LGLID4gc3Bhd247CivksKIgPiBnaG9zdDsKK+SwlyA+IGFcLWxvdDsKK+SwkiA+IHZhZ3VlOwor5LCRID4gYmVhcmQ7CivksIUgPiBiZWFyZDsKK+SvviA+IGhhaXJ5Owor5K+4ID4gYVwtd2lnOwor5K+NID4gYm9uZXM7Civkrb0gPiBncm91cDsKK+StpiA+IGNha2VzOwor5K2fID4gY2FrZXM7CivkrZAgPiBjYWtlczsKK+StjiA+IGNha2VzOwor5K2FID4gY2FrZXM7CivkrL8gPiBzbWFsbDsKK+SstSA+IHN5cnVwOwor5KyuID4gc3lydXA7Civkq7UgPiB0d2luczsKK+SrliA+IHRpbWlkOwor5KuOID4gc2hvcnQ7CivkqrsgPiBhXC1jYXA7CivkqrEgPiBjaGVlazsKK+SqryA+IHNvdW5kOwor5KqbID4gZ3JvdXA7CivkqpggPiByaWdodDsKK+SqlyA+IHNob2VzOwor5KqCID4gcmVpbnM7CivkqbogPiBib290czsKK+SpliA+IHNob2VzOwor5KmVID4gY2xvZ3M7CivkqZMgPiBib290czsKK+SphSA+IGJyb2FkOwor5Ki5ID4gc3dpZnQ7CivkqLcgPiBzbGVldDsKK+SomCA+IHNsZWV0Owor5KiLID4gY3J1ZWw7CivkqIQgPiBxdWFpbDsKK+SogSA+IGR1Y2tzOwor5Ke9ID4gc21hbGw7Civkp6ogPiBzaXNzeTsKK+SnjiA+IGFcLXBpdDsKK+SnhiA+IGFcLXBpdDsKK+SmviA+IGxvZnR5Owor5KaiID4gYnJvYWQ7Civkpp4gPiBleHRyYTsKK+SmlyA+IHF1aWV0Owor5KaUID4gYVwtcGVnOwor5KW1ID4gbGluZXM7CivkpZggPiB3cm9uZzsKK+SlkyA+IGFcLWhvZTsKK+SlgSA+IGFybW9yOwor5KS6ID4gYW5cLWF4Owor5KS0ID4gYXJtb3I7CivkpKogPiBzaG9ydDsKK+SkoiA+IG1ldGFsOwor5KScID4gYmx1bnQ7CivkpJogPiBwbHVtczsKK+SkmSA+IGRyZWdzOwor5KOxID4gZHJ1bms7Civko6cgPiBibGFjazsKK+SilCA+IG1peGVkOwor5KKRID4gYW5ncnk7CivkoZYgPiBzdGlsbDsKK+SgoiA+IHdlYXJ5Owor5KCgID4gdG9cLWdvOwor5J+gID4gc3dpZnQ7Civkn5wgPiBicmVhazsKK+SeiCA+IG1vbmV5Owor5J2tID4gd2FnZXM7CivknasgPiBtb25leTsKK+SdkiA+IGFcLXNvdzsKK+SdjyA+IGFcLXNvdzsKK+SdjiA+IGFcLXBpZzsKK+SdiiA+IGFcLXNvdzsKK+SdhSA+IGFcLXBpZzsKK+SdgyA+IGJlYW5zOwor5Jy0ID4gYnJhdmU7CivknI4gPiBzb3VuZDsKK+ScjSA+IHN3ZWV0Owor5JyMID4gY2hhb3M7CivknIogPiBub2lzZTsKK+SbrSA+IGFuZ3J5Owor5JuhID4gd29yZHM7CivkmrQgPiBhbmdlcjsKK+SanyA+IGhvcm5zOwor5JqJID4gb1wtc2VlOwor5JiKID4gZmxpZXM7Civkl5UgPiBiZW5kczsKK+SWjiA+IHRpZ2VyOwor5JaLID4gY3J1ZWw7CivkloggPiBjcnVlbDsKK+SSuCA+IGdyYXNzOwor5JKRID4gZ3Jhc3M7CivkkZogPiBzd2VldDsKK+SRlSA+IGFcLXJhdDsKK+SRgSA+IGZhdHR5Owor5JCsID4gY3Jpc3A7CivkkJ0gPiB0aGljazsKK+SQlyA+IGFcLXBpZzsKK+SQhyA+IGNsZWFyOwor5I+1ID4gcGx1bXA7Civkj7MgPiBvbGVpbjsKK+SPryA+IG1vbGVzOwor5I+nID4gZmF0dHk7Civkj5ogPiBzbWFsbDsKK+SOkCA+IGhhaXJ5Owor5I6HID4gcXVpY2s7CivkjoQgPiBoYWlyeTsKK+SNpSA+IHNtb2t5Owor5I2MID4gYVwtamFyOwor5Iy7ID4gd2luZ3M7CivkjJEgPiB0aWdodDsKK+SMkCA+IHJvcGVzOwor5Iu1ID4gcXVpY2s7Civki6UgPiBsaW5lczsKK+SLmiA+IHdpbmdzOwor5IuZID4gcmVpbnM7Civkir4gPiByb3BlczsKK+SKuyA+IHNpbGt5Owor5Iq5ID4gc21hbGw7CivkioAgPiBwYXN0ZTsKK+SJvyA+IHBhc3RlOwor5ImeID4gYVwtYm94Owor5IiJID4gYVwtZmFuOwor5IeyID4gdG9uZ3M7Civkh6QgPiBzaGFycDsKK+SHgiA+IGZhdWx0Owor5Ia5ID4gZW1wdHk7CivkhpwgPiBlbXB0eTsKK+SGgSA+IHN5cnVwOwor5IW1ID4gY2hhZmY7CivkhZkgPiBncmFzczsKK+SFmCA+IHdoZWF0Owor5IWGID4gZGVuc2U7CivkhL4gPiB0aGljazsKK+SEpSA+IGFcLWdvZDsKK+SEoiA+IHBpb3VzOwor5IOsID4gcm9ja3k7Civkg5sgPiBjaGFpbjsKK+SDmSA+IHJvY2tzOwor5IOXID4gcm9ja3M7Civkgr0gPiByb2NrczsKK+SCvCA+IHJvY2tzOwor5IK6ID4gcm9ja3M7CivkgrAgPiByb2NrczsKK+SCriA+IHN0b25lOwor5IKmID4gdGlyZWQ7Civkgp8gPiByb2NrczsKK+SCliA+IHJvY2tzOwor5IKVID4gc2hvcnQ7CivkgpQgPiBzaG9ydDsKK+SCkSA+IHNob3J0Owor5IKPID4gc2hvcnQ7CivkgasgPiBtdWRkeTsKK+SBnyA+IHdyb25nOwor5IGXID4gbGlnaHQ7CivkgY0gPiBibGluZDsKK+SAvCA+IGFuZ3J5Owor5ICHID4gYVwtcG90Owor47+3ID4gcm91Z2g7Civjv64gPiBncmVlbjsKK+O/qSA+IGxpZ2h0Owor47+lID4gc2hpbmU7Civjv6QgPiB3aGl0ZTsKK+O/nSA+IHN3ZWV0Owor47+VID4gdWxjZXI7CivjvrAgPiBjaG9rZTsKK+O+pyA+IGZhdnVzOwor476hID4gdWxjZXI7CivjvpogPiBpdGNoeTsKK+O+kCA+IHVsY2VyOwor472/ID4gdWxjZXI7CivjvaEgPiBmaWVsZDsKK+O8jyA+IGFcLWJhZDsKK+O7rSA+IGNsZWFyOwor47qDID4gYVwtZG9nOwor47m7ID4gcHVwcHk7CivjubcgPiBzd2luZTsKK+O5iyA+IGFcLWNvdzsKK+O5gCA+IGFcLWNvdzsKK+O4uiA+IGFcLWNvdzsKK+O4hSA+IGFzaGVzOwor47iDID4gYVwtZG90Owor47e/ID4gZmxhbWU7Civjt6UgPiBzdGVhbTsKK+O3lCA+IGZsYW1lOwor47eRID4gc21va2U7Civjt4cgPiBncmVhdDsKK+O2syA+IGFzaGVzOwor47awID4gZmxhbWU7CivjtqYgPiBhc2hlczsKK+O2liA+IHJhcGlkOwor47W5ID4gd2F2ZXM7CivjtIMgPiB0ZWFyczsKK+OzuSA+IGZsb29kOwor47OwID4gZGl0Y2g7Civjs64gPiB1cmluZTsKK+OzmyA+IGRpcnR5Owor47KnID4gaGFpcnk7CivjsoYgPiBub2lzZTsKK+OwvCA+IGdyZWVkOwor47CqID4gc291bmQ7CivjsKUgPiBsYXVnaDsKK+OwoiA+IGNvdWdoOwor46+3ID4gZGF0ZXM7CivjrqUgPiBzYWlsczsKK+OuoiA+IGZydWl0Owor466VID4gZnJ1aXQ7CivjrLYgPiBmbGVzaDsKK+OssyA+IGxpZ2h0Owor46ymID4gYnJhdmU7CivjrJogPiBsaWdodDsKK+OslSA+IGxpZ2h0Owor46yPID4gbGlnaHQ7CivjrIogPiBsaWdodDsKK+OrvCA+IGNsZWFyOwor46u5ID4gbGlnaHQ7Civjq7YgPiBsaWdodDsKK+OrsCA+IGxpZ2h0Owor46urID4gY2xlYXI7Civjq5wgPiBsaWdodDsKK+OrmyA+IGxpZ2h0Owor46uXID4gdGhpY2s7Civjq5UgPiBsaWdodDsKK+OpoSA+IHNoYWtlOwor76itID4gY3JhbmU7CivjqJsgPiBzd2lmdDsKK+OolyA+IGFsZXJ0Owor76iNID4gdm9taXQ7CivvqIsgPiBicm9hZDsKK++ogyA+IHN1Z2FyOwor46iDID4gYVwtcm93Owor76e7ID4gcm9hc3Q7Civvp7kgPiBncmFpbjsKK++ntyA+IHN0YW5kOwor76esID4gZHJvd247Civvp6ogPiBsZWF2ZTsKK++nnSA+IGdhaW5zOwor46ebID4gdGhpY2s7Civvp5cgPiB3aGVlbDsKK++nkCA+IGNsYXNzOwor46eNID4gYWxpa2U7Civvp4sgPiBzbGlkZTsKK++mvyA+IGhhcHB5Owor76a9ID4gdXJpbmU7CivjprcgPiBicmF2ZTsKK+OmriA+IG1vbmV5Owor76ahID4gc3BlYWs7CivvpqAgPiBzcGxpdDsKK+OmoSA+IGhhcHB5Owor76afID4gZmllcnk7CivvppkgPiBsb3R1czsKK+OmmCA+IHN3aWZ0Owor76aTID4gc21lbHQ7CivjppEgPiBhbmdlcjsKK++miiA+IHBvd2VyOwor76aBID4gd29tYW47Civjpb8gPiBwcm91ZDsKK+OltyA+IHF1aWV0Owor46WyID4gYW5nZXI7Civvpa8gPiBzcGVhazsKK++loyA+IG5vcnRoOwor76WgID4gYW5nZXI7CivvpZwgPiBoYXBweTsKK+OlkyA+IGhhcHB5Owor76WPID4gdGlyZWQ7CivvpY0gPiB0ZWFyczsKK+OliiA+IGFuZ3J5Owor76WIID4gYnJpYmU7CivvpYIgPiBncmF2ZTsKK+OlgiA+IHF1aWNrOwor76S9ID4gZ3JlZW47CivvpLsgPiByb3VnaDsKK++kuiA+IGhlcm9uOwor46SxID4gYW5nZXI7CivvpK8gPiBsYWJvcjsKK++kqSA+IGNsZWFyOwor76SiID4gZmxvb2Q7CivjpKMgPiBub2JsZTsKK+OknCA+IGNyYXp5Owor76SZID4gY3JlYW07CivjpJkgPiBncmFjZTsKK++kliA+IGJyYW5kOwor76SUID4gaGFwcHk7Civjo7IgPiBzbWFsbDsKK+OjnyA+IHRvXC1nbzsKK+OjjyA+IHN0aWxsOwor46OJID4gbGFib3I7CivjopsgPiBzbWFsbDsKK+OimSA+IGFcLWh1dDsKK+OhtiA+IGR3ZWxsOwor46G0ID4gc291bmQ7CivjoZUgPiBzaGFycDsKK+OhkCA+IGZsYWdzOwor46GMID4gYVwtaGF0Owor46GHID4gY29sYXI7CivjoYQgPiBjb2xhcjsKK+OgqiA+IGdyZWF0Owor46CVID4gbG9mdHk7CivjoI0gPiBsb2Z0eTsKK+OftSA+IHJpZGdlOwor45+uID4gbG9mdHk7Civjn6AgPiByaWRnZTsKK+OfhSA+IGxvZnR5Owor45+BID4gc2hvcmU7Civjnr4gPiBhXC1udW47CivjnpkgPiB1cmluZTsKK+OelSA+IGNoaXBzOwor456SID4gbHVzdHk7Civjno8gPiBzbWFsbDsKK+OegyA+IHRpcmVkOwor4529ID4gc2hvcnQ7CivjnbogPiBzbWFsbDsKK+OdpCA+IG5pZ2h0Owor452jID4gc3RpbGw7CivjnZwgPiBuaWdodDsKK+OdliA+IHJpZ2h0Owor452VID4gcGVhY2U7CivjnY8gPiBhbG9uZTsKK+OdhyA+IHF1YWlsOwor45y9ID4gY2hpbGQ7CivjnKcgPiBwbHVtcDsKK+OcnCA+IHByb3VkOwor45uoID4gY2hhb3M7Civjm5ogPiBlcXVhbDsKK+ObgyA+IGNsZWFuOwor45uBID4gcXVpY2s7Civjmq4gPiBoYXBweTsKK+OalSA+IGdyZWF0Owor45qAID4gbG9mdHk7Civjma8gPiBza2lsbDsKK+OZpSA+IG11ZGR5Owor45mTID4gZWFydGg7CivjmYQgPiBiZWxvdzsKK+OYiyA+IHNvdW5kOwor45eFID4gYW5ncnk7CivjlqQgPiB3cmF0aDsKK+OWlCA+IHNpbGx5Owor45aPID4gYW5ncnk7CivjloAgPiBzb3VuZDsKK+OVsyA+IG5vaXN5Owor45WWID4gcGxhaW47CivjlY4gPiBjYXZlczsKK+OVgSA+IHN0aWxsOwor45S7ID4gZ3JlYXQ7Civjk7sgPiB0b3VnaDsKK+OTnSA+IGFcLWxhdzsKK+OTnCA+IHlvdW5nOwor45ObID4gbWVyaXQ7Civjk5kgPiBjcnVlbDsKK+OTlyA+IGNsZWFuOwor45OBID4gYVwtbmV0Owor45KpID4gbmFrZWQ7CivjkowgPiBhbG9uZzsKK+ORtiA+IGFuZ2VyOwor45GpID4gc21hcnQ7CivjkaggPiBncmVhdDsKK+ORpiA+IGFuZ2VyOwor45GXID4gYVwtZ29kOwor45GLID4gc21hbGw7CivjkYEgPiBzaG9ydDsKK+OQsSA+IGJ1c2h5Owor45CrID4gY3J1ZWw7CivmnIkgPiBoYXZlOwor55+lID4ga25vdzsKK+i/mSA+IHRoaXM7Civnn5wgPiBwaXR5Owor5b+ZID4gYnVzeTsKK+adpSA+IGNvbWU7Civov5EgPiBuZWFyOwor6YGTID4gcGF0aDsKK+S5nyA+IGFsc287Civml7YgPiB0aW1lOwor5bm0ID4geWVhcjsKK+eeuyA+IGxvb2s7CivovrogPiBlZGdlOwor5bCxID4ganVzdDsKK+mCoyA+IHRoYXQ7CivnlJ8gPiBsaWZlOwor6IeqID4gc2VsZjsKK+eerCA+IHdpbms7Civov4cgPiBwYXNzOwor5b6qID4gb2JleTsKK+W+niA+IGZyb207CivlvpMgPiBmcm9tOwor5aSaID4gbXVjaDsKK+WlvSA+IGdvb2Q7CivlvbwgPiB0aGF0Owor6LW3ID4gcmlzZTsKK+WPqiA+IG9ubHk7CivkvZwgPiBtYWtlOwor5b2TID4gYmVhcjsKK+W9oiA+IGZvcm07CivnnIsgPiBsb29rOwor5byAID4gb3BlbjsKK+aJiyA+IGhhbmQ7CivlvLEgPiB3ZWFrOwor5pysID4gcm9vdDsKK+WktCA+IGhlYWQ7CivnnJ8gPiByZWFsOwor6Z2iID4gZmFjZTsKK+WFrCA+IGZhaXI7CivlkIwgPiBzYW1lOwor55yeID4gcmVhbDsKK+S7jiA+IGZyb207CivliqggPiBtb3ZlOwor6ZW/ID4gbG9uZzsKK+i8iSA+IGxvYWQ7CivlsIYgPiB3aWxsOwor5L2GID4gb25seTsKK+i6qyA+IGJvZHk7Civpq5ggPiBoaWdoOwor5oqKID4gaG9sZDsKK+atpCA+IHRoaXM7Civlrp4gPiByZWFsOwor55ulID4gd2FzaDsKK+aciCA+IG1vb247Civnp40gPiBzZWVkOwor6LuNID4gYXJteTsKK+i7iiA+IGNhcnQ7Civlt7EgPiBzZWxmOwor6YOoID4gcGFydDsKK+WQjSA+IG5hbWU7Civnmq4gPiBza2luOwor5py6ID4gZGVzazsKK+e7mSA+IGdpdmU7CivnrYkgPiByYW5rOwor5bqnID4gc2VhdDsKK+W+iCA+IHZlcnk7CivmnIAgPiBtb3N0Owor5bqXID4gc2hvcDsKK+i6jSA+IHNraXA7CivotbAgPiB3YWxrOwor5ZubID4gZm91cjsKK+mXqCA+IGdhdGU7CivkuJwgPiBlYXN0Owor5bqBID4gaGFsbDsKK+ilvyA+IHdlc3Q7CivlubMgPiBmbGF0Owor55m7ID4gcmlzZTsKK+WQrCA+IGhlYXI7CivlubggPiBsdWNrOwor6Lm0ID4ga2ljazsKK+WGmyA+IGFybXk7CivkupQgPiBmaXZlOwor5bi3ID4gdGVudDsKK+WkqiA+IHZlcnk7CivluLYgPiBiZWx0Owor5bizID4gdGVudDsKK+W4ryA+IGJlbHQ7CivkvZMgPiBib2R5Owor5bitID4gc2VhdDsKK+W4jCA+IHJhcmU7CivouIogPiBsZWFwOwor5LmmID4gYm9vazsKK+S5nSA+IG5pbmU7Civot7MgPiBqdW1wOwor6LevID4gcm9hZDsKK+WRvSA+IGxpZmU7Civnl6kgPiB0aGluOwor5rS7ID4gbGl2ZTsKK+W3piA+IGxlZnQ7Civlt6MgPiBuZXN0Owor6KGoID4gc2hvdzsKK+i3nyA+IGhlZWw7CivovaYgPiBjYXJ0Owor55ebID4gcGFpbjsKK+eXlSA+IHNjYXI7Civnl5IgPiBpdGNoOwor5oSfID4gZmVlbDsKK+i2syA+IGZvb3Q7Civph5EgPiBnb2xkOwor5L2VID4gd2hhdDsKK+W2riA+IGhpZ2g7Civmm7QgPiBtb3JlOwor55aLID4gcm9sbDsKK+WBmiA+IHdvcms7CivorqEgPiBwbGFuOwor55W2ID4gYmVhcjsKK+eOiyA+IGtpbmc7CivlkIQgPiBlYWNoOwor55WZID4gc3RvcDsKK+eVjyA+IGZlYXI7CivovrkgPiBlZGdlOwor55S3ID4gbWFsZTsKK+mjjiA+IHdpbmQ7CivltJcgPiBwb3N0Owor5q+bID4gaGFpcjsKK+WzsCA+IHBlYWs7CivniLEgPiBsb3ZlOwor55OmID4gdGlsZTsKK+izoyA+IHNlbGw7Civos4MgPiByZW50Owor6LK4ID4gbGVuZDsKK+WyuCA+IGJhbms7Civnu5MgPiBrbm90Owor5bKsID4gY2FwZTsKK+a1gSA+IGZsb3c7CivosqcgPiBwb29yOwor6Z2SID4gYmx1ZTsKK+euoSA+IHBpcGU7CivosqAgPiBsb2FkOwor6L+eID4gam9pbjsKK+mYnyA+IHRlYW07CivluKYgPiBiZWx0Owor5bGVID4gb3BlbjsKK+WxkSA+IGJpdHM7CivpooYgPiBuZWNrOwor5bGIID4gYmVuZDsKK+WxhSA+IGxpdmU7CivlsL4gPiB0YWlsOwor5Y2KID4gaGFsZjsKK+WAmSA+IHdhaXQ7CivmraUgPiBzdGVwOwor5rexID4gZGVlcDsKK+WMuiA+IGFyZWE7CivlsIsgPiBzZWVrOwor5rGCID4gc2VlazsKK+eQgyA+IGJhbGw7CivlkYogPiB0ZWxsOwor5a+4ID4gaW5jaDsKK+WvpiA+IHJlYWw7Civmu6EgPiBmaWxsOwor5p2OID4gcGx1bTsKK+aBryA+IHJlc3Q7Civlr5IgPiBjb2xkOwor5a+EID4gc2VuZDsKK+iEuCA+IGZhY2U7Civlrr8gPiBzdG9wOwor5Y+WID4gdGFrZTsKK+WupCA+IHJvb207Civlrp8gPiByZWFsOwor5a6bID4gc2VlbTsKK+WtqSA+IGJhYnk7Civlub8gPiB3aWRlOwor546JID4gamFkZTsKK+eOhCA+IGRlZXA7CivngasgPiBmaXJlOwor6K6AID4gcmVhZDsKK+itvSA+IGZhbWU7CivliJkgPiBydWxlOwor6aaWID4gaGVhZDsKK+WksSA+IGxvc2U7Civmi78gPiB0YWtlOwor5pavID4gdGhpczsKK+ivuyA+IHJlYWQ7CivljIUgPiB3cmFwOwor54y2ID4gbGlrZTsKK+iQvSA+IGZhbGw7CivmtY4gPiBoZWxwOwor5ZacID4gbGlrZTsKK+isoSA+IHNpbmc7CivnvJYgPiBrbml0Owor6LCIID4gdGFsazsKK+aLiSA+IHB1bGw7CivorIAgPiBwbGFuOwor54u8ID4gd29sZjsKK+adgCA+IGtpbGw7CivmoLkgPiByb290Owor5auMID4gaGF0ZTsKK+irhyA+IHRhbGs7CivlhYsgPiBncmFtOwor54q2ID4gZm9ybTsKK+ekuiA+IHNob3c7CivlhrIgPiBzb2FyOwor6KqtID4gcmVhZDsKK+iqiSA+IGZhbWU7CivmjqggPiBwdXNoOwor56ewID4gY2FsbDsKK+ippiA+IHRlc3Q7Civlj7cgPiBtYXJrOwor5LqaID4gYXNpYTsKK+a4ryA+IHBvcnQ7CivoiKwgPiBzb3J0Owor54iqID4gY2xhdzsKK+WImiA+IGhhcmQ7CivpmYYgPiBsYW5kOwor56GuID4gc3VyZTsKK+ioiCA+IHBsYW47CivlhbcgPiB0b29sOwor5aiBID4gcG9tcDsKK+W4riA+IGhlbHA7Civnur8gPiBsaW5lOwor6KemID4gYnV0dDsKK+inkiA+IGhvcm47Civnh5IgPiBidXJuOwor6IqCID4ga25vdDsKK+eHgyA+IGJ1cm47CivlsoEgPiB5ZWFyOwor5aa7ID4gd2lmZTsKK+mcgCA+IG5lZWQ7CivphZIgPiB3aW5lOwor6ZOBID4gaXJvbjsKK+imlyA+IHBlZWs7Civpl7sgPiBoZWFyOwor5qCHID4gbWFyazsKK+WMuyA+IGN1cmU7CivopbIgPiByYWlkOwor54WuID4gY29vazsKK+WcnyA+IHNvaWw7Civova8gPiBzb2Z0Owor54WkID4gY29hbDsKK+S7hSA+IG9ubHk7CivlpZcgPiBjYXNlOwor5oi3ID4gZG9vcjsKK+eEvCA+IGJ1cm47CivpobkgPiBuZWNrOwor6IOMID4gYmFjazsKK+eEmiA+IGJ1cm47CivmmpcgPiBkYXJrOwor6aG7ID4gbXVzdDsKK+ijvSA+IG1ha2U7Civoo7ggPiBiYXJlOwor5aOyID4gc2VsbDsKK+agkSA+IHRyZWU7CivmsokgPiBzaW5rOwor6IGMID4gZHV0eTsKK+e7hiA+IGZpbmU7Civoo5wgPiBtZW5kOwor5YGcID4gc3RvcDsKK+WKqSA+IGhlbHA7CivlhrcgPiBjb2xkOwor5aKuID4gZmFsbDsKK+iHtCA+IHNlbmQ7CivmnKggPiB0cmVlOwor6KKiID4gcm9iZTsKK+aXgSA+IHNpZGU7CivngoogPiBjb29rOwor54G8ID4gYnVybjsKK+WhtSA+IGR1c3Q7CivloakgPiBzYWx0Owor5q2MID4gc29uZzsKK+WggiA+IGhhbGw7Civor5UgPiB0ZXN0Owor54GMID4gcG91cjsKK+mqjCA+IHRlc3Q7CivloYAgPiB3YWxsOwor5q2iID4gc3RvcDsKK+WgtSA+IHdhbGw7CivloKQgPiBkaWtlOwor5aCVID4gZmFsbDsKK+aBtiA+IGV2aWw7CivloIYgPiBoZWFwOwor5oWiID4gc2xvdzsKK+WghSA+IGhhcmQ7CivloIAgPiBjYXZlOwor6J+7ID4gYW50czsKK+iXjyA+IGhpZGU7CivotJ8gPiBsb2FkOwor5Z+LID4gYnVyeTsKK+a+uSA+IGNhbG07CivlnqIgPiBkaXJ0Owor6J6NID4gbWVsdDsKK+a9riA+IHRpZGU7CivlnaYgPiBmbGF0Owor5r2cID4gaGlkZTsKK+aVkSA+IHNhdmU7CivkuJ0gPiBzaWxrOwor6b2KID4gZXZlbjsKK+m8uyA+IG5vc2U7CivmvKwgPiBzb2FrOwor6byTID4gZHJ1bTsKK+awuCA+IGxvbmc7CivmvI8gPiBsZWFrOwor5b2VID4gY29weTsKK+mBhyA+IG1lZXQ7Civmu78gPiBmaWxsOwor6Ii5ID4gc2hpcDsKK+m7tCA+IG1vbGQ7Civmu7QgPiBkcmlwOwor6ZuoID4gcmFpbjsKK+ibmSA+IGZyb2c7Civmu5EgPiBzbGlwOwor6bq7ID4gaGVtcDsKK+iapCA+IGZsZWE7CivpvZAgPiBldmVuOwor5rqWID4gcnVsZTsKK+a6jCA+IHBvdXI7CivlhYUgPiBmaWxsOwor6bm/ID4gZGVlcjsKK+WvuyA+IHNlZWs7CivlroEgPiBjYWxtOwor6bm9ID4gc2FsdDsKK+aymSA+IHNhbmQ7CivljZYgPiBzZWxsOwor6aG6ID4gb2JleTsKK+iZnyA+IG1hcms7CivlloQgPiBnb29kOwor5ZmbID4gYml0ZTsKK+iJryA+IGdvb2Q7CivlnZogPiBoYXJkOwor5ZmCID4gbWVldDsKK+aLjSA+IGNsYXA7CivmjokgPiB0dXJuOwor5riIID4gaGVscDsKK+WTrSA+IHdlZXA7CivlmIYgPiBzaWdoOwor5Y2IID4gbm9vbjsKK+WNoSA+IGNhcmQ7Civpm6ogPiBzbm93Owor5re1ID4gZ3VsZjsKK+a3oSA+IHdlYWs7Civll58gPiBzaWdoOwor5reRID4gZ29vZDsKK+iXjSA+IGJsdWU7Civmt4sgPiBkcmlwOwor5ra8ID4gY29vbDsKK+i9vSA+IGxvYWQ7CivliLogPiBzdGFiOwor6JaqID4gZnVlbDsKK+mUgCA+IG1lbHQ7CivpsbwgPiBmaXNoOwor5ZaaID4gY2FsbDsKK+WWmCA+IHBhbnQ7Civnm5ggPiB0cmF5Owor6JaUID4gcm9zZTsKK+WWhyA+IGhvcm47CivoloQgPiB0aGluOwor5ZW8ID4gd2VlcDsKK+aetiA+IHJhY2s7CivmtbggPiBzb2FrOwor5qy+ID4gaXRlbTsKK+a1qiA+IHdhdmU7CivolakgPiBwb25kOwor5rSqID4gdmFzdDsKK+mVhyA+IHRvd247CivmtYQgPiBwdXJlOwor5peFID4gdHJpcDsKK+WUviA+IHNwaXQ7CivllLEgPiBzaW5nOwor6JS1ID4gaGlkZTsKK+WUryA+IG9ubHk7CivmtKkgPiBsZWFrOwor5rSeID4gY2F2ZTsKK+mqqCA+IGJvbmU7CivmtJcgPiB3YXNoOwor5ZSWID4gZHVtYjsKK+m0iSA+IGNyb3c7CivllIcgPiBsaXBzOwor5rOzID4gZGl2ZTsKK+WTsiA+IHdpc2U7Civlk6kgPiBtaWxlOwor5aKZID4gd2FsbDsKK+WcoyA+IGhvbHk7Civps6UgPiBiaXJkOwor6LeDID4gc2tpcDsKK+aZkyA+IGRhd247Civms4QgPiBsZWFrOwor6ZqQID4gaGlkZTsKK+iSvCA+IGJsdWU7CivmgZAgPiBmZWFyOwor5rK8ID4gbGFrZTsKK+S7mCA+IGdpdmU7CivljoUgPiBoYWxsOwor5ZKsID4gYml0ZTsKK+iFvyA+IGxlZ3M7CivmspYgPiBwb3VyOwor56GsID4gaGFyZDsKK+ayiCA+IHNpbms7CivllK4gPiBzZWxsOwor6YGXID4gbG9zZTsKK+aOoiA+IGZpbmQ7CivokawgPiBidXJ5Owor57yTID4gc2xvdzsKK+iRpiA+IHJlZWQ7CivmsaAgPiBwb29sOwor54OnID4gYnVybjsKK+iRiSA+IGxlYWY7CivmnZ8gPiBiaW5kOwor5ZGGID4gZHVsbDsKK+WQuyA+IGtpc3M7CivlkLkgPiBibG93Owor5LyRID4gcmVzdDsKK+WPuSA+IHNpZ2g7CivmsI8gPiBjbGFuOwor562+ID4gc2lnbjsKK+awiCA+IGZlbHQ7CivlpbYgPiBtaWxrOwor5q+sID4gYmFsbDsKK+iPqSA+IGhlcmI7Civlj6IgPiBidXNoOwor5oyCID4gaGFuZzsKK+iIqiA+IHNhaWw7Civmr5ggPiBoZWxwOwor5ouzID4gZmlzdDsKK+S5mCA+IHJpZGU7CivoooEgPiByb2JlOwor5Z2AID4gc2l0ZTsKK+avhiA+IGJlYXQ7Civmrr8gPiBoYWxsOwor5q66ID4ga2lsbDsKK+aguCA+IHNlZWQ7CivooaUgPiBtZW5kOwor6LWeID4gaGVscDsKK+S6piA+IGFsc287CivmrbMgPiB5ZWFyOwor5p+UID4gc29mdDsKK+atqSA+IHN0ZXA7Civmg5wgPiBwaXR5Owor6a2aID4gZmlzaDsKK+atjiA+IHNpZ2g7CivprYIgPiBzb3VsOwor5LmUID4gdGFsbDsKK+eyriA+IGZvb2Q7CivojKsgPiB2YXN0Owor6LCLID4gcGxhbjsKK+aVjyA+IGZhc3Q7CivojI4gPiBzdGVtOwor6Zu2ID4gemVybzsKK+iNoSA+IHBvbmQ7Civli74gPiBob29rOwor54q5ID4gbGlrZTsKK+mrriA+IGhhaXI7Civpq6ogPiBoYWlyOwor5LmDID4gdGhlbjsKK+aKrCA+IGxpZnQ7Civpq5QgPiBib2R5Owor6IuUID4gbW9zczsKK+WLlSA+IG1vdmU7CivlkK8gPiBvcGVuOwor5YaSID4gcmlzazsKK+eptyA+IHBvb3I7CivmqqMgPiBtYXN0Owor5L6nID4gc2lkZTsKK+aXpiA+IGRhd247Civnuq8gPiBwdXJlOwor6ZetID4gc2h1dDsKK+WHiSA+IGNvb2w7CivnopcgPiBib3dsOwor5YmlID4gcGVlbDsKK+a7miA+IHR1cm47CivmtqYgPiBzb2Z0Owor5YmbID4gaGFyZDsKK+mplyA+IHRlc3Q7CivliYcgPiBydWxlOwor6JOdID4gYmx1ZTsKK+aouSA+IHRyZWU7Civom4sgPiBlZ2dzOwor5L+DID4gdXJnZTsKK+minCA+IGZhY2U7CivotKsgPiBwb29yOwor5p2wID4gaGVybzsKK+iInyA+IGJvYXQ7CivpqJMgPiB0ZXN0Owor5oGLID4gbG92ZTsKK+i/nyA+IGxhdGU7CivnqbQgPiBjYXZlOwor6LWWID4gcmVseTsKK+mnmyA+IHNhaWw7Civpp5IgPiBjb2x0Owor5YeMID4gcHVyZTsKK+S5jCA+IGNyb3c7CivlspcgPiBwb3N0Owor6ZO6ID4gc2hvcDsKK+mmtCA+IHRhbWU7CivkvI0gPiBmaXZlOwor6LqyID4gaGlkZTsKK+eusSA+IGNhc2U7CivluJAgPiB0ZW50Owor6IadID4ga25lZTsKK+iGmiA+IHNraW47CivmgokgPiBrbm93Owor5YaMID4gYm9vazsKK+WGiiA+IGJvb2s7Civnm4ggPiBmaWxsOwor5ouWID4gZHJhZzsKK+aYjyA+IGR1c2s7CivmiJIgPiB3YXJuOwor6aG1ID4gcGFnZTsKK+WwmCA+IGR1c3Q7CivohKMgPiBsaXBzOwor5LqVID4gd2VsbDsKK+axqiA+IHZhc3Q7CivohIcgPiByaWJzOwor6ISFID4gcmliczsKK+aBsCA+IGp1c3Q7CivmpIAgPiBib3dsOwor5o+PID4gY29weTsKK+S5jyA+IGxhY2s7Civog54gPiB3b21iOwor5qOaID4gdGVudDsKK+aAnCA+IHBpdHk7CivkvbMgPiBnb29kOwor6bifID4gYmlyZDsKK+WDhSA+IG9ubHk7CivpoqggPiB3aW5kOwor5qKoID4gcGVhcjsKK+W8ryA+IGJlbmQ7Civkuo8gPiBsb3NlOwor5YKRID4gaGVybzsKK+mFuCA+IHRhcnQ7Civogb0gPiBoZWFyOwor6IG3ID4gZHV0eTsKK+ahtiA+IHBhaWw7CivogbQgPiBoZWFyOwor55imID4gdGhpbjsKK+WBtCA+IHNpZGU7Civnu6kgPiBzcGluOwor6IGeID4gaGVhcjsKK+iBliA+IGhvbHk7CivpoZQgPiBmYWNlOwor6aGPID4gZmFjZTsKK+eJtSA+IGRyYWc7CivpoLwgPiByZWx5Owor56efID4gcmVudDsKK+mguCA+IG5lY2s7Civmia0gPiB0dXJuOwor6aCtID4gaGVhZDsKK+aTpiA+IHdpcGU7CivmrrcgPiBtYW55Owor6aCaID4gbmVjazsKK+mgmCA+IG5lY2s7Civnm7wgPiBsb29rOwor5ZCfID4gc2luZzsKK+iAlSA+IHBsb3c7Civoi40gPiBibHVlOwor6aCGID4gb2JleTsKK+mghSA+IG5lY2s7Civlro8gPiB3aWRlOwor6aCBID4gcGFnZTsKK+WogyA+IGJhYnk7CivmmpYgPiB3YXJtOwor6ZSBID4gbG9jazsKK+egjSA+IGhhY2s7Civkv4IgPiBiaW5kOwor5oyoID4gbmVhcjsKK+aFiCA+IGtpbmQ7CivnvrkgPiBzb3VwOwor576uID4gc291cDsKK+merSA+IHdoaXA7CivnvqggPiBlbnZ5Owor56qdID4gbmVzdDsKK+adnCA+IHN0b3A7CivmkqQgPiBvbWl0Owor5L6GID4gY29tZTsKK+adsSA+IGVhc3Q7CivnrbkgPiBjaGlwOwor56iAID4gcmFyZTsKK+adliA+IGNhbmU7Civmi6ggPiBtb3ZlOwor6LiiID4ga2ljazsKK+i/gSA+IG1vdmU7CivkvYcgPiB3YWl0Owor6KKtID4gcmFpZDsKK+mptiA+IHNhaWw7CivpnLAgPiBoYWlsOwor5oOnID4gZmVhcjsKK+e6vSA+IGtub3Q7CivkuJsgPiBidXNoOwor5oKgID4gbG9uZzsKK+abvCA+IGxvbmc7Civmm7ggPiBib29rOwor57ygID4gd3JhcDsKK+a7iyA+IGdyb3c7CivnoqcgPiBqYWRlOwor5ZSkID4gY2FsbDsKK+iDgSA+IHJpYnM7CivosLEgPiBsaXN0Owor6ZqxID4gaGlkZTsKK+S4mCA+IGhpbGw7Civkup4gPiBhc2lhOwor57qSID4gd3JhcDsKK+adhiA+IHBvbGU7Civnuo8gPiB3cmFwOwor6ZqKID4gdGVhbTsKK+aCrCA+IGhhbmc7CivpmoggPiBjb3ZlOwor5bSUID4gaGlnaDsKK+e6giA+IGVkaXQ7CivllIkgPiBhbGFzOwor5pqBID4gZGF3bjsKK+esvCA+IGNhZ2U7CivpmbggPiBsYW5kOwor57mqID4gZHJhdzsKK+e5qSA+IHJvcGU7CivmhaggPiBzaWdoOwor5LmXID4gcmlkZTsKK+e7syA+IHJvcGU7CivmmYIgPiB0aW1lOwor55+/ID4gbWluZTsKK+mBoyA+IHNlbmQ7CivplZYgPiBkYXJ0Owor6YG1ID4gb2JleTsKK+WFhiA+IG9tZW47CivpkpMgPiBmaXNoOwor5oqrID4gd2VhcjsKK+aYhyA+IHJpc2U7CivnuIQgPiByb3BlOwor5piCID4gcmlzZTsKK+e3qSA+IHNsb3c7Civnt6ggPiBrbml0Owor5oqEID4gY29weTsKK+WAuiA+IGRlYnQ7CivogqQgPiBza2luOwor5q2HID4gcmVzdDsKK+mWiyA+IG9wZW47CivplokgPiBzaHV0Owor5paJID4gZXZlbjsKK+aWgyA+IGtpbGw7CivnvZUgPiByYXJlOwor6ZaAID4gZ2F0ZTsKK+mVtyA+IGxvbmc7CivotLcgPiBsZW5kOwor57W1ID4gZHJhdzsKK+miiCA+IG5lY2s7CivntbIgPiBzaWxrOwor6ISWID4gbmVjazsKK+WgoSA+IGZvcnQ7CivntaggPiBzaWxrOwor57WmID4gZ2l2ZTsKK+i1kCA+IGdpdmU7CivpooIgPiBsYXVkOwor57WQID4ga25vdDsKK+egliA+IHRpbGU7CivntYYgPiBsb29wOwor5ZORID4gZHVtYjsKK+e0sCA+IGZpbmU7Civmu6kgPiBiYW5rOwor6ZKJID4gbmFpbDsKK+WThCA+IGNvYXg7Civpk4MgPiBiZWxsOwor57SUID4gcHVyZTsKK+e0kCA+IGtub3Q7CivntIsgPiBsaW5lOwor5ouaID4gcmlzazsKK+ezuCA+IHNpbGs7Civns6cgPiBmb29kOwor5aWRID4gZGVlZDsKK+aHkiA+IGxhenk7CivnjI4gPiBodW50Owor5bWpID4gaGlnaDsKK+ebkCA+IHNhbHQ7CivmkbogPiBmb2xkOwor57GgID4gY2FnZTsKK+mZtSA+IGhpbGw7Civoo7kgPiB3cmFwOwor57uYID4gZHJhdzsKK+mQtSA+IGlyb247CivpkKEgPiBpcm9uOwor56+tID4gY2FnZTsKK+evpCA+IGRlZXA7CivmjL0gPiBwdWxsOwor57K5ID4gcHVyZTsKK+evgCA+IGtub3Q7CivmjqMgPiBkcmFnOwor5o6bID4gaGFuZzsKK+mOliA+IGxvY2s7CivnrosgPiBub3RlOwor5o2yID4gY3VybDsKK+azvCA+IHBvdXI7Civnp4MgPiBiYWxkOwor6YyyID4gY29weTsKK+e7kSA+IGJpbmQ7CivpuK0gPiBkdWNrOwor5o6AID4gbGlmdDsKK+e6uSA+IGxpbmU7Civotp8gPiB0aW1lOwor5ZC8ID4gcm9hcjsKK+equiA+IHBlZXA7CivnqrYgPiBwb29yOwor5Y+gID4gcGlsZTsKK+WVuCA+IHJvYXI7Civnqq4gPiBwb29yOwor6YqRID4gbWlsbDsKK+WptCA+IGJhYnk7CivouqwgPiBib2R5Owor5q+ZID4ga2lsbDsKK+mAuCA+IGZsZWU7CivnkLwgPiBqYWRlOwor6YmEID4gaXJvbjsKK+aMqiA+IG1vdmU7CivmmYwgPiBub29uOwor5oi4ID4gZG9vcjsKK+mItCA+IGJlbGw7CivnqLEgPiBjYWxsOwor6LSxID4gbWVhbjsKK+eoriA+IHNlZWQ7CivpkqkgPiBob29rOwor5oiAID4gbG92ZTsKK+aHvCA+IGZlYXI7Civmh7ggPiBoYW5nOwor6YejID4gZmlzaDsKK+mHmCA+IG5haWw7CivpuKYgPiBjcm93Owor54uuID4gbGlvbjsKK+WmriA+IG1haWQ7Civnpr8gPiBiYWxkOwor56qRID4ga2lsbjsKK+WhmCA+IHBvbmQ7CivnuqQgPiBmaW5lOwor6YarID4gY3VyZTsKK+aGqSA+IHJlc3Q7CivmhpAgPiBwaXR5Owor5oaOID4gaGF0ZTsKK+e+oSA+IGVudnk7Civmhb4gPiBsdXN0Owor56W3ID4gcHJheTsKK+iIhiA+IGNhcnQ7CivnpYggPiBwcmF5Owor5aupID4gc29mdDsKK+i5hCA+IGhvb2Y7CivmhJsgPiBsb3ZlOwor6YSZID4gbWVhbjsKK+aDoSA+IGV2aWw7CivmsqcgPiBibHVlOwor56K6ID4gc3VyZTsKK+aCqiA+IGV2aWw7CivluIYgPiBzYWlsOwor5ra1ID4gc29hazsKK+mCiiA+IGVkZ2U7CivmvqEgPiB3YXNoOwor6YG6ID4gbG9zZTsKK+mBsiA+IGxhdGU7Civng6QgPiBiYWtlOwor5bO7ID4gaGlnaDsKK+mBjiA+IHBhc3M7CivpgYsgPiBsdWNrOwor5bCsID4gbGltcDsKK+mBhSA+IGxhdGU7CivpgYEgPiBoaWRlOwor6YCxID4gd2VlazsKK+S9kSA+IGhlbHA7CivpgKMgPiBqb2luOwor5oCgID4gaWRsZTsKK+mAmSA+IHRoaXM7CivnoIIgPiBzYW5kOwor6IO2ID4gZ2x1ZTsKK+iwoyA+IHNpbmc7CivmorMgPiBjb21iOwor56WBID4gcHJheTsKK+WVpCA+IGJlZXI7Civpk7ggPiBtZWx0Owor6LqvID4gYm9keTsKK+mFvyA+IGJyZXc7CivmjaMgPiBodWxsOwor546rID4gcm9zZTsKK+WZoiA+IG1vYW47CivnurogPiBzcGluOwor56qfID4gaG9sZTsKK+WFkSA+IGNhc2g7CivlhqUgPiBkYXJrOwor6KeFID4gc2VlazsKK+ayuCA+IGJvaWw7CivmiYEgPiBmbGF0Owor55yoID4gd2luazsKK+eYviA+IHJhc2g7Civpu68gPiBkYXJrOwor5aaeID4gZ2lybDsKK+S/jyA+IGxpa2U7Civlrb0gPiBldmlsOwor5byKID4gZXZpbDsKK+WmgyA+IHdpZmU7Civlo6QgPiBzb2lsOwor57+UID4gc29hcjsKK+W3qSA+IGJpbmQ7CivluJwgPiBmbGFnOwor6JW+ID4gYnVkczsKK+mThSA+IGxlYWQ7Civnu5IgPiBzaWxrOwor56qlID4gcGVlcDsKK+mUoyA+IGdvbmc7CivmkrwgPiBtb3ZlOwor5ZemID4gc3VjazsKK+i9tCA+IGF4bGU7CivmtpUgPiB0ZWFyOwor56yDID4gZGVlcDsKK+eqjSA+IGhvbGU7CivmibMgPiBwdWxsOwor6YGPID4gc3RvcDsKK+WQhiA+IGJhd2w7CivnhpQgPiBtZWx0Owor6IGLID4gZGVhZjsKK+WLnyA+IGxldnk7CivnlqQgPiBzY2FyOwor6JqBID4gYW50czsKK+aCryA+IHBpdHk7Civng5ggPiBiYWtlOwor54mfID4gbWFrZTsKK+W0rSA+IGhpZ2g7Civlt6IgPiBuZXN0Owor5rKuID4gc3RvcDsKK+a5myA+IGRlZXA7CivmmaYgPiBkYXJrOwor6am5ID4gY29sdDsKK+ivqyA+IHdhcm47CivloqkgPiBoZWFwOwor5beNID4gaGlnaDsKK+aUkiA+IHNhdmU7Civnu4ogPiBsb29wOwor5oeIID4gaWRsZTsKK+autCA+IGJlYXQ7CivnmoIgPiBzb2FwOwor6J+5ID4gY3JhYjsKK+e7tyA+IGJpbmQ7CivljL8gPiBoaWRlOwor5ZSgID4gY2hhdDsKK+iLhyA+IHJlZWQ7Civmi70gPiBkcmFnOwor54O5ID4gYm9pbDsKK+WVgyA+IGduYXc7CivnvpQgPiBsYW1iOwor6ZSIID4gcnVzdDsKK+S6oiA+IGhpZ2g7CivogosgPiByaWJzOwor6KGyID4gbWVuZDsKK+aOkCA+IGhvbGQ7Civmh6YgPiB3ZWFrOwor6IWTID4gY2FsZjsKK+W9tyA+IGxpa2U7CivpqqEgPiBtdWxlOwor6YaHID4gcmljaDsKK+mpryA+IHRhbWU7CivnuqwgPiB3b29mOwor54qBID4gcGxvdzsKK+aLryA+IGhlbHA7CivpvpogPiBnaXZlOwor6JukID4gY2xhbTsKK+aIriA+IGtpbGw7Civmr6EgPiBmZWx0Owor5ZKAID4gc3VjazsKK+WRsSA+IHdhaWw7CivmiI4gPiBhcm1zOwor6JS8ID4gbHVzaDsKK+iMuCA+IHNvZnQ7CivnpIEgPiByZWVmOwor6ZepID4gYm9sdDsKK+a2pCA+IHdhc2g7CivmuI0gPiBzb2FrOwor6LebID4gbGFtZTsKK+ifhiA+IGZyb2c7CivlgYwgPiB0aHVzOwor6YKRID4gYXJlYTsKK+WMviA+IGZsYXQ7CivnrLogPiBub3RlOwor566NID4gaG9vcDsKK+WZrCA+IGJpdGU7Civon6AgPiBjb2lsOwor6LWBID4gcmVudDsKK+iFjCA+IHNhbHQ7CivmjoIgPiBoZWZ0Owor6YGQID4gYWZhcjsKK+eUrCA+IHBhdGg7Civlg64gPiBwYWdlOwor5Z6bID4gaGVhcDsKK+WQoCA+IGJhcms7CivouLUgPiBoZWVsOwor6Ju+ID4gbW90aDsKK+iAmCA+IHdlZWQ7CivmmoQgPiB3YXJtOwor6J6DID4gY3JhYjsKK+WVlSA+IHdhaWw7Civon74gPiB0b2FkOwor562PID4gcmFmdDsKK+exvSA+IHNlZWQ7CivnioogPiBjYWxmOwor54WmID4ga2luZDsKK+iHiiA+IHJhbms7CivmkqwgPiBsaWZ0Owor5q+XID4gaGVscDsKK+i5vyA+IGxlYXA7CivlkoYgPiByb2FyOwor6bKkID4gY2FycDsKK+i+lSA+IGF4bGU7CivngJogPiB2YXN0Owor6IqLID4gdGFybzsKK+mbuSA+IGhhaWw7CivpuaogPiB3cmVuOwor6aq8ID4gYm9uZTsKK+iOmCA+IGxvbmc7CivosKcgPiBjYWxtOwor6JyVID4gbW9sdDsKK+eEiiA+IHdlbGQ7CivogJkgPiByYWtlOwor57yEID4gc2VhbDsKK+a8qSA+IGVkZHk7CivppbUgPiBiYWl0Owor6L6NID4gc3RvcDsKK+iwkSA+IGplZXI7CivmgYEgPiB0aGF0Owor5YKpID4gcmljaDsKK+eYoCA+IHRoaW47CivltZggPiBoaWdoOwor5bOlID4gaGlnaDsKK+mShSA+IGdvbGQ7Civmua4gPiBidXJ5Owor6aKPID4gY2hpbjsKK+mTjiA+IGJlbGw7CivolLcgPiByb3NlOwor6LG6ID4gd29sZjsKK+eGqCA+IGlyb247CivlkbcgPiBzdWNrOwor6ZezID4gZ2F0ZTsKK+iKriA+IHRpbnk7CivpmaggPiBmYWxsOwor55KoID4gZ2VtczsKK+aztSA+IHB1bXA7Civnv7EgPiBzb2FyOwor5oiVID4ga2lsbDsKK+iOkyA+IG1vc3M7CivosYwgPiBwZWFzOwor5aCRID4gbW9hdDsKK+a9vCA+IGhpZ2g7CivnlrUgPiBmbGF3Owor6L+kID4gd2luZDsKK+aAtSA+IGZlYXI7CivmpoggPiBwYWxtOwor5YSGID4gd2FybjsKK+WXpSA+IHJvYXI7CivnpLQgPiBmaWxsOwor6ayDID4gbWFuZTsKK+WykCA+IGhpZ2g7CivllbsgPiBvbmx5Owor5ZKdID4gaGlzczsKK+aPhCA+IGxpZnQ7CivmvbggPiB3ZWVwOwor6K60ID4gc2luZzsKK+i2hCA+IHdlYWs7CivpgosgPiByYWdzOwor6IOkID4gaGVpcjsKK+agiSA+IGNvbWI7CivnspUgPiBsZWVzOwor6aKUID4gY2hpbjsKK+WVriA+IGJpdGU7CivovbIgPiBheGxlOwor5a2xID4gd2VhazsKK+aMniA+IGZsb2c7CivplasgPiBsYW1wOwor6IenID4gZ29vZDsKK+m5nCA+IGR1Y2s7CivmmJUgPiBkYXduOwor6ZS3ID4gaGlnaDsKK+mThCA+IG1lbHQ7CivovrYgPiB3YWxrOwor6ZiEID4gbG90czsKK+mUjCA+IHppbmM7CivojbsgPiByZWVkOwor5ZaZID4gYmVhazsKK+icjSA+IHRvYWQ7CivnvKIgPiBoYW5nOwor5p+iID4gcm9vdDsKK+eqoCA+IG5lc3Q7CivogpsgPiBhbnVzOwor6KqKID4gY29weTsKK+i3jiA+IHNsaXA7CivogakgPiBkZWFmOwor55eCID4gc2NhYjsKK+m4oiA+IGtpdGU7CivmirsgPiBwdWxsOwor5rKkID4gc29hazsKK+a2vyA+IGRyaXA7CivniaYgPiB0YWlsOwor54y3ID4gcGxhbjsKK+WiiSA+IHdhbGw7CivmmrkgPiByaXNlOwor6ZexID4gZ2F0ZTsKK+i9rSA+IHlva2U7CivlvK0gPiBzdG9wOwor5rS1ID4gdHJ1ZTsKK+eTryA+IGJvd2w7Civmv6AgPiBtb2F0Owor5ZypID4gZGlrZTsKK+e+uCA+IHdlYWs7Civnma8gPiB0aGluOwor55iiID4gc2NhcjsKK+W5hCA+IHRlbnQ7Civms4UgPiBzd2ltOwor55++ID4gYWx1bTsKK+iaqSA+IHdvcm07CivpuLcgPiBoYXdrOwor6LmHID4gbGFtZTsKK+iAiyA+IGFnZWQ7Civoi5IgPiBsdXNoOwor6YCLID4gZmxlZTsKK+iXkyA+IG1vc3M7CivprLsgPiBzZWxsOwor5rOrID4gd2VlcDsKK+WVrSA+IHNpbmc7CivlnaggPiBsdW1wOwor6KC5ID4gbW90aDsKK+eWsSA+IGFjbmU7CivplJIgPiBsb2NrOwor5pqdID4gZGFyazsKK+eFiiA+IHdhcm07CivniKggPiBvdmVuOwor5ZudID4gYmFieTsKK+WeqSA+IGhvbHk7CivmgLwgPiBoYXRlOwor5bS0ID4gaGlnaDsKK+aLiiA+IHNsYXA7CivmiYwgPiBoYW5kOwor6ZKkID4gbG9jazsKK+aoryA+IG1hc3Q7Civpqp8gPiBnZWxkOwor54e5ID4gZmlyZTsKK+mmkCA+IGZvb2Q7CivlnLkgPiB0b21iOwor6b6IID4gZ3VtczsKK+iciiA+IGNsYW07Civnl5YgPiBkdW1iOwor5q2GID4gbGlrZTsKK+i1iSA+IGdpdmU7Civpk6MgPiBtaWxsOwor54GPID4gdmFzdDsKK+eYmSA+IGl0Y2g7Civpl7wgPiBkb29yOwor5Z2MID4gZHVzdDsKK+akpCA+IHRyZWU7CivpmIsgPiBmZXVkOwor5bWvID4gaGlnaDsKK+mFsCA+IGFjeWw7CivnmJcgPiBidXJ5Owor55ajID4gd2FydDsKK+epkSA+IGZhcm07Civmp44gPiByYWZ0Owor5qG0ID4gcmFmdDsKK+a6jyA+IHBvb2w7CivnpLsgPiBjdWx0Owor5qOwID4gZmxvZzsKK+eLtyA+IHJhc2g7CivokrkgPiByZWVkOwor5L2kID4ga2F3YTsKK+m6uCA+IGJyYW47CivpuLEgPiBraXRlOwor57yrID4gZHJhdzsKK+e6oSA+IGJlbmQ7CivltawgPiBoaWdoOwor6I+WID4gaXJpczsKK+aEjSA+IHBpdHk7Civlq7EgPiBsYWR5Owor6I6oID4gaGVyYjsKK+iwnSA+IGJyYWc7CivmsJYgPiBuZW9uOwor6aKbID4gZ29vZDsKK+eHoCA+IHdhcm07CivmvbQgPiBwb25kOwor5aCZID4gYnVyeTsKK+malyA+IGhpZ2g7CivkuL8gPiBsaW5lOwor6bKuID4gY2FycDsKK+i3liA+IHNvbGU7CivomosgPiBnbmF0Owor5rGUID4gbmVhcjsKK+eXpCA+IGFjbmU7CivotLYgPiBnaXZlOwor57qfID4gc2lsazsKK+S+kSA+IGhlbHA7CivogKogPiBwbG93Owor6KecID4gYmVhazsKK+etoiA+IHJha2U7CivmnJAgPiB3YXJtOwor6KeHID4gcGVlazsKK+aqlyA+IHRyZWU7Civoj6EgPiBidWRzOwor5YG+ID4gcnVpbjsKK+mauSA+IGJpcmQ7CivoiKEgPiBib2F0Owor55aSID4gc2ljazsKK+WZjSA+IGNoZXc7Civln50gPiBiYW5rOwor6bKpID4gY2FycDsKK+mykiA+IGNsYW07CivopZ4gPiBmb2xkOwor54GsID4gZmlyZTsKK+iEkiA+IG9wZW47Civmn5kgPiBjYWdlOwor5rmUID4gd2FzaDsKK+a0syA+IGRhbXA7CivlsKIgPiB3ZWFrOwor6aufID4gaGFpcjsKK+mzjiA+IHNvbGU7CivoiZogPiBzaGlwOwor6bmpID4gd3JlbjsKK+eCsSA+IHNvb3Q7CivohqogPiBwb3JrOwor5qCKID4gY2FnZTsKK+e7siA+IGNvcmQ7CivlroAgPiByb29mOwor6Ze2ID4gZG9vcjsKK+eMiiA+IGxpb247CivlsrUgPiBoaWxsOwor5Y2pID4gc2VhbDsKK+ivjiA+IGJlbmQ7CivlgK4gPiBiYXJlOwor6b6UID4gZ2l2ZTsKK+m9riA+IGJpdGU7CivpvacgPiBiaXRlOwor6b2mID4gZ3VtczsKK+m9lyA+IGd1bXM7CivpvZUgPiBnbmF3Owor6bybID4gZHJ1bTsKK+m8liA+IGRydW07Civpu7YgPiBtb2xlOwor6bqpID4gYnJhbjsKK+m6myA+IGZhd247CivpupogPiBidWNrOwor6bqRID4gZmF3bjsKK+m6jCA+IHN0YWc7CivpuoMgPiB0aWxsOwor6bmOID4gYmlyZDsKK+m5hiA+IG15bmE7Civpt68gPiB3cmVuOwor6bemID4gd3JlbjsKK+m3mSA+IGhhd2s7Civpt5UgPiBjYWxsOwor6baxID4gc29hcjsKK+m2qSA+IGR1Y2s7CivptoMgPiBoYXdrOwor6baCID4gaGF3azsKK+m1ryA+IGJpcmQ7CivptYQgPiBraXRlOwor6bSoID4gZHVjazsKK+m0nyA+IGtpdGU7CivptIQgPiBkdWNrOwor6bO3ID4gYmlyZDsKK+mztiA+IGtpdGU7Civps4sgPiBjYXJwOwor6bK8ID4gZmlzaDsKK+myiyA+IGNhcnA7CivpsoYgPiBzb2xlOwor6bCoID4gc29sZTsKK+mvqiA+IGNhcnA7Civpr4kgPiBjYXJwOwor6a+IID4gZmlzaDsKK+mvhyA+IGNhcnA7CivprpogPiBjbGFtOwor6a6SID4gY2FycDsKK+muhiA+IGZpc2g7CivprYsgPiBiZWFyOwor6ayuID4gbG90czsKK+msqSA+IGZldWQ7CivprJEgPiBsb25nOwor6aueID4gaGlnaDsKK+mpmCA+IG11bGU7CivpqL4gPiBtdWxlOwor6ai4ID4gZ2VsZDsKK+moryA+IGxvdWQ7CivpqKMgPiBtYW5lOwor6ae9ID4gZ3JleTsKK+mntCA+IGRydW07CivppYwgPiBmZWVkOwor6aWIID4gZm9vZDsKK+mkjCA+IGJhaXQ7CivppIcgPiBmb29kOwor6aOhID4gbWVhbDsKK+mjjCA+IHdpbmQ7Civpor8gPiBzYWlsOwor6aK6ID4gc29hcjsKK+mhkyA+IGdvb2Q7CivpoLcgPiBjaGluOwor6aCuID4gd2FzaDsKK+mgpiA+IGNoaW47CivpoIwgPiBsYXVkOwor6aCIID4gbXVzdDsKK+meuSA+IHNraW47Civpnp8gPiBza2luOwor6Z6ZID4gZmluZTsKK+mejyA+IGJpbmQ7CivpnokgPiBkcnVtOwor6Z6AID4gZHJ1bTsKK+mdkSA+IGJsdWU7CivpnKQgPiBkcmlwOwor6ZyjID4gZmFsbDsKK+mcoiA+IGR1c3Q7CivpmpUgPiBmYWxsOwor6ZqEID4gZGlrZTsKK+mYpCA+IGhpbGw7CivpmJ4gPiB2ZWluOwor6ZelID4gZG9vcjsKK+mXoiA+IG9wZW47Civpl5MgPiBvcGVuOwor6ZeIID4gZ2F0ZTsKK+mXhiA+IGJvc3M7Civplp8gPiBoaWRlOwor6ZaOID4gZ2F0ZTsKK+mWjCA+IGRvb3I7CivplocgPiBzaHV0Owor6ZaCID4gYm9sdDsKK+mVuCA+IGxvbmc7CivplakgPiBwaWNrOwor6ZWVID4gZnVzZTsKK+mTtCA+IGdvbmc7CivpkbwgPiBnb25nOwor6ZGiID4gZmlsZTsKK+mRoCA+IG1lbHQ7CivpkZsgPiBtaW5lOwor6ZGEID4gbWVsdDsKK+mQuCA+IGJlbGw7CivpkKkgPiBsZW5zOwor6ZCZID4gbGFtcDsKK+mQiyA+IGdvbmc7CivpkIQgPiBiZWxsOwor6Y+9ID4gcnVzdDsKK+mPsCA+IGNvaW47Civpj6UgPiBydXN0Owor6Y+iID4gZGFydDsKK+mOuyA+IGxvY2s7Civpjq4gPiB0b3duOwor6Y6tID4gdG93bjsKK+mOlCA+IGZ1c2U7CivpjZQgPiBoaWdoOwor6YyEID4gY29weTsKK+mLsyA+IG1lbHQ7Civpi5ogPiBpcm9uOwor6YuGID4gZ29sZDsKK+mKuSA+IHJ1c3Q7CivpircgPiBtZWx0Owor6YqVID4gaXJvbjsKK+mJsSA+IG1pbmU7CivpiaQgPiBob29rOwor6YisID4gYmVsbDsKK+mIkCA+IGxvY2s7CivpiI4gPiBob29rOwor6YiGID4gbGVhZDsKK+mHgCA+IGJyZXc7CivphrggPiBicmV3Owor6YSRID4ga2ljazsKK+mCiSA+IGVkZ2U7CivpgbsgPiBtZWV0Owor6YG3ID4gbW92ZTsKK+mBnyA+IGxhdGU7Civov7ogPiB0aGVuOwor6L+aID4gdmVyeTsKK+i/hiA+IHdpbmQ7CivovrUgPiB3YWxrOwor6L2dID4gZW52eTsKK+i9lyA+IGZhaWw7CivovYwgPiBzbGVkOwor6L2FID4gYXhsZTsKK+i8vyA+IGNhcnQ7CivovLQgPiBzbGVkOwor6LyfID4gc3RvcDsKK+i7uyA+IGF4bGU7Civou7ggPiBheGxlOwor6LulID4geW9rZTsKK+i7nyA+IHNvZnQ7Civou5sgPiB5b2tlOwor6LuGID4gYm9keTsKK+i7gCA+IGJvZHk7Civour8gPiB0YWxsOwor6Lq2ID4gYmFyZTsKK+i6tCA+IHRhbGw7CivourMgPiBib2R5Owor6LqxID4gaGlkZTsKK+i6sCA+IGJvZHk7CivouqUgPiBsZWFwOwor6LqSID4gd2FsazsKK+i5oiA+IGhvb2Y7CivouY8gPiBob29mOwor6Li0ID4gbGVhcDsKK+i4rSA+IGhlZWw7CivouJggPiBiYWxsOwor6Le8ID4gYmVudDsKK+i3siA+IGhvb2Q7Civot7EgPiBzdG9wOwor6LeeID4gd2FsazsKK+i3mSA+IHdlYWs7Civotq8gPiBqdW1wOwor6LWxID4gd2FsazsKK+i1lSA+IGZpbmU7CivotIogPiBoZWxwOwor6LO1ID4gZ2lmdDsKK+iztCA+IHJlbHk7Civos6cgPiBmaW5lOwor6LOkID4gbWVhbjsKK+iznCA+IGdpdmU7Civos5sgPiBoZWxwOwor6LOaID4gZ2l2ZTsKK+izjiA+IG1lYW47CivosrogPiBnaXZlOwor6LKOID4gbGlvbjsKK+ixrSA+IGJvYXI7CivorosgPiBmZWFyOwor6KygID4gc2luZzsKK+islCA+IGplZXI7CivorJAgPiBjYWxtOwor6KyEID4gY29weTsKK+irniA+IGJyYWc7CivoqqcgPiBodWdlOwor6KqhID4gd2FybjsKK+iqgyA+IHBhcnQ7CivoqaAgPiBzaW5nOwor6KmfID4gZmVhcjsKK+ipmCA+IGJlbmQ7Civop50gPiBnb3JlOwor6KaYID4gcGVlazsKK+imkyA+IHNlZWs7Civoor8gPiBnb3duOwor6KG5ID4gb25seTsKK+ihmiA+IGxhbmU7CivooZYgPiBsYW5lOwor6KGSID4gYnJhZzsKK+igrSA+IGJlZXM7CivooKcgPiBtb3RoOwor6KCPID4gY3JhYjsKK+ifhyA+IGZyb2c7CivonokgPiB3YXNwOwor6Jy5ID4gZ25hdDsKK+ichSA+IGNyYWI7Civom7sgPiBtb2x0Owor6JqhID4gbW9sZTsKK+iZtyA+IHdvcm07CivomacgPiBsb3NlOwor6JmTID4gcm9hcjsKK+iYmiA+IG1vc3M7CivomJIgPiBcOjE0MzsKK+iXuSA+IGx1c2g7Civol58gPiB2aW5lOwor6JeHID4gZmluZTsKK+iWnyA+IHZpbmU7CivolpkgPiB3ZWVkOwor6JaBID4gdmluZTsKK+iVmCA+IGZ1ZWw7CivolLQgPiBoZW1wOwor6JOrID4gZG9jazsKK+iRkiA+IGhlcmI7CivokJwgPiBjNWg4Owor6I++ID4gYmVldDsKK+iOuyA+IGxhdGU7CivojrYgPiB2aW5lOwor6I6WID4gc3RlbTsKK+iNrSA+IGhlcmI7CivojZsgPiBmdWVsOwor6ImtID4gc2hpcDsKK+iJliA+IHJhZnQ7CivoiKkgPiBib2F0Owor6IeRID4gc29mdDsKK+iHiSA+IGZhY2U7Civoh4EgPiBjYWxmOwor6Ia3ID4gc291cDsKK+iGtCA+IGZpbmU7CivohqAgPiBnbHVlOwor6IW2ID4gbWVhdDsKK+iFsyA+IGZvb3Q7CivohZIgPiBnYW1lOwor6IWNID4gc29mdDsKK+iEsiA+IHVyZWE7Civog6AgPiBvcGVuOwor6IOPID4gbWVhdDsKK+iDiiA+IHlva2U7CivogqwgPiB3YXJ0Owor6IG+ID4gZGVhZjsKK+iBvCA+IGhlYXI7CivogbUgPiBkZWFmOwor6ICtID4gcGxvdzsKK+iAoCA+IHRpbGw7CivogI4gPiB3ZWFrOwor57+6ID4gc29hcjsKK+e+rSA+IGdvb2Q7CivnvpwgPiBsYW1iOwor57yLID4gZHJhdzsKK+e6miA+IGxvbmc7CivnupYgPiBmaW5lOwor57qVID4gYmVsdDsKK+e6jiA+IGZpbmU7Civnuo0gPiBiaW5kOwor57qHID4ga25vdDsKK+e6hiA+IGNvcmQ7CivnuaQgPiBlZGl0Owor57miID4gZHJhdzsKK+e5oCA+IGhhbmc7CivnuZggPiByb3BlOwor57mKID4gZmluZTsKK+e5hSA+IGRyYXc7CivnuYMgPiBiaW5kOwor57i+ID4gc3BpbjsKK+e4syA+IHdyYXA7CivnuK8gPiBsb25nOwor57iiID4gYmluZDsKK+e4miA+IGJhbmQ7CivnuIogPiBoYW5nOwor57evID4gd29vZjsKK+e3pCA+IGNvcmQ7Civnt5ggPiBzZWFsOwor57eOID4gc2VhbTsKK+e3hCA+IGNvcmQ7CivntqsgPiBsaW5lOwor57aRID4gY29pbDsKK+e2jSA+IHJvcGU7CivntoEgPiBiaW5kOwor57WPID4gcm9wZTsKK+e0oSA+IHNwaW47CivntIYgPiBiZW5kOwor57O5ID4gc2lsazsKK+eyiyA+IHB1cmU7CivnsbkgPiBjYWtlOwor57GZID4gYm9vazsKK+exjyA+IGZsYWc7CivnsYwgPiBjaGlwOwor57GKID4gbG9uZzsKK+ewvSA+IHNpZ247CivnsIYgPiByZWVkOwor56uFID4gaG9sZTsKK+ergSA+IGJvcmU7Civnqr4gPiBob2xlOwor56q1ID4gZGVlcDsKK+eqryA+IGtpbG47Civnqq0gPiBwb29yOwor56qpID4gbmVzdDsKK+epvSA+IGhvbGU7Civnqa4gPiB3ZWVkOwor56mhID4gZmFybTsKK+epnCA+IHJpY2U7CivnqZAgPiBmYWxsOwor56mLID4gcmljZTsKK+epgCA+IGNvcm47CivnqJsgPiBiaW5kOwor56iRID4gcmljZTsKK+enqiA+IG9ubHk7Civnp4ogPiB5ZWFyOwor56a4ID4gcnVtcDsKK+emsSA+IHByYXk7CivnpYcgPiBvbmx5Owor56SsID4gYWx1bTsKK+ekpyA+IHJvbGw7CivnpKYgPiBtaW5lOwor56ShID4gZmlsbDsKK+ejmiA+IHRpbGU7CivnoL8gPiBtaW5lOwor55+7ID4gdG9pbDsKK+efmSA+IHZpZXc7CivnnqsgPiBsb29rOwor55ukID4gdHJheTsKK+ebnSA+IGRyaXA7Civnm4wgPiBib3dsOwor55q3ID4gZHJ1bTsKK+eZtiA+IGxlZ3M7Civnma4gPiByYXNoOwor55miID4gaXRjaDsKK+eZoCA+IHNpY2s7CivnmK8gPiBpdGNoOwor55ieID4gYnVyeTsKK+eYliA+IGR1bWI7CivnmIIgPiBkdW1iOwor55evID4gc2ljazsKK+eXjCA+IGFjaGU7CivnlqcgPiBzaWNrOwor55aYID4gYW51czsKK+eWkCA+IGZhbGw7CivnlYogPiBwbG93Owor55WHID4gbGFuZDsKK+eVhCA+IHN0b3A7CivnlIwgPiBib3dsOwor55OYID4gamFkZTsKK+eTiiA+IGphZGU7CivnjbUgPiBodW50Owor542uID4gaHVudDsKK+eNpyA+IHJhc2g7CivnjYsgPiByb2FyOwor542FID4gbGlvbjsKK+eNgyA+IGR1bGw7CivnjJ8gPiBodW50Owor54yLID4gd2luZDsKK+eLmCA+IGp1bXA7Civni4AgPiBmb3JtOwor54qyID4gd29sZjsKK+eKoiA+IGNhbGY7CivnioIgPiBwbG93Owor54m9ID4gZHJhZzsKK+eJtCA+IGdvcmU7CivniaMgPiBmaWxsOwor54mGID4gd2FsbDsKK+eInyA+IGZpcmU7CivniJYgPiBmaXJlOwor54iHID4gYnVybjsKK+eHqCA+IGZpcmU7CivnhocgPiBiYWtlOwor54WaID4gZmlyZTsKK+eFliA+IHdhcm07CivnhZEgPiBjb29rOwor54WHID4gd2VsZDsKK+eEriA+IGhlYXQ7CivnhJwgPiBmaXJlOwor54OdID4gcmlzZTsKK+eDlCA+IGhlYXQ7Civng48gPiBjcm93Owor54GdID4gdmFzdDsKK+eBmCA+IGJhbms7CivngKYgPiBwb25kOwor5r+zID4gaGlkZTsKK+a/lCA+IG1hbnk7Civmv4ogPiB2YXN0Owor5r+IID4gbWFueTsKK+a+kiA+IHZhc3Q7CivmvaQgPiBzb2Z0Owor5r2bID4gaGlkZTsKK+a9kSA+IHBvdXI7CivmvYUgPiBwb3VyOwor5rywID4gcm9hcjsKK+a8rSA+IHZhc3Q7CivmvJogPiBzb2FrOwor5ryZID4gZGV3eTsKK+a8mCA+IGJhbms7Civmu74gPiB0dXJuOwor5ru6ID4gZmxvdzsKK+a7riA+IGZsb3c7Civmu4wgPiB3YXNoOwor5ruJID4gZGVlcDsKK+a7hCA+IGJsdWU7CivmurwgPiBkYW1wOwor5rm7ID4gcHVyZTsKK+a5siA+IGZsb3c7CivmuZ0gPiBmbG93Owor5rewID4gZmlzaDsKK+a3qCA+IHB1cmU7CivmtrQgPiBkYXViOwor5raKID4gZGlydDsKK+azmSA+IHJvYXI7CivmsqwgPiBkdXNrOwor5rKVID4gZGVlcDsKK+axjSA+IHdlZXA7CivmsJ0gPiBuZW9uOwor5rCKID4gZmVsdDsKK+awhCA+IGRvd247CivmsIIgPiB0YWlsOwor5q2yID4geWVhcjsKK+atlyA+IHJvYXI7CivmrYogPiBzaWdoOwor5qyQID4gYmVhbTsKK+arsyA+IGNhZ2U7Civmq5ogPiBwYWxtOwor5qq0ID4gdHJlZTsKK+aqjSA+IGlsZXg7CivmqaYgPiB0cmVlOwor5qmBID4gdHJlZTsKK+anuSA+IHNwYXI7Civmp4MgPiB0cmF5Owor5qWwID4gdHJlZTsKK+alqSA+IHRyZWU7CivmpZ8gPiB0cmVlOwor5qWYID4gYmFuZDsKK+akuCA+IHJhY2s7CivmpJEgPiBvdmFsOwor5qOsID4gYm93bDsKK+ajqiA+IHRyZWU7Civmo5EgPiByYWZ0Owor5qK0ID4gbG9uZzsKK+ahvyA+IHBvbGU7CivmobkgPiBwYWxtOwor5qGLID4gdHJlZTsKK+aguyA+IHRyZWU7Civmn6MgPiBzaWxsOwor5p+CID4gaGVsbTsKK+aetCA+IGNhbmU7CivmnZ0gPiB0cmVlOwor5p2XID4gYmVhbTsKK+acvyA+IHN0YWI7CivmnLMgPiB0cmVlOwor5pyYID4gd2FuZTsKK+abiSA+IGRhd247CivmmbMgPiBmYWlyOwor5pi7ID4gcmlzZTsKK+aYrCA+IGR1c2s7CivmmKsgPiB3YXJtOwor5pe5ID4gdGltZTsKK+aXtCA+IGRhd247Civml5wgPiBmbGFnOwor5peCID4gZmxhZzsKK+aVvyA+IGJpbmQ7Civmlb0gPiBiaW5kOwor5pW7ID4gbG9uZzsKK+aUoiA+IHNhdmU7CivmlIUgPiBzYXZlOwor5pOrID4gdHVjazsKK+aToyA+IGh1bGw7CivmkrsgPiBmbG9nOwor5pKlID4gbW92ZTsKK+aSnSA+IHdhdmU7CivmkbIgPiByYXplOwor5pGmID4gd2lkZTsKK+aQpSA+IGJlYXQ7CivmkJggPiBwcm9wOwor5pCXID4gaHVsbDsKK+aQkiA+IHBvbGU7CivmkIwgPiBiaW5kOwor5pCGID4gcHVsbDsKK+aOniA+IGVhc3k7CivmjpcgPiB0YWtlOwor5o2YID4gcHVzaDsKK+aNhCA+IGxvbmc7CivmjJAgPiBkcmFnOwor5ouPID4gdGFrZTsKK+aKtiA+IGJlYXQ7CivmioYgPiB3aXBlOwor5oi2ID4gZG9vcjsKK+aIgSA+IGZlYXI7Civmh7YgPiBsYXp5Owor5oeuID4gY2FsbTsKK+aHnyA+IGhhdGU7Civmh5wgPiBkdWxsOwor5oawID4gd2lseTsKK+aGqyA+IHBpdHk7CivmhpkgPiBsaWtlOwor5oaYID4gbGlrZTsKK+aGhyA+IHJlc3Q7CivmhbQgPiBmZWFyOwor5oWCID4gdXJnZTsKK+aEkiA+IHJlc3Q7CivmgYcgPiBmZWFyOwor5oCzID4gd2lsZDsKK+aArSA+IHJ1ZGU7CivmgJogPiBkdWxsOwor5b2hID4gaGFpcjsKK+W9jiA+IGJlbmQ7Civlu7wgPiB0aGVuOwor5buzID4gaGFsbDsKK+W7sCA+IGhhbGw7Civlu6cgPiB3YWxsOwor5buOID4gcm9vbTsKK+W5ryA+IHdpcGU7CivluaQgPiBldmlsOwor5bmfID4gZmxhZzsKK+W5miA+IGhlbHA7CivluYsgPiBiZWx0Owor5bmHID4gaGVscDsKK+W4nyA+IHRlbnQ7CivltrggPiBoaWdoOwor5baEID4gaGlnaDsKK+W1syA+IGhpZ2g7CivltKIgPiBoaWdoOwor5bOvID4gcGVhazsKK+WzhyA+IGNhdmU7CivlsqcgPiBwZWFrOwor5bGHID4gY2F2ZTsKK+WwsiA+IGxpbXA7CivlsKsgPiBsYW1lOwor5bCqID4gbGFtZTsKK+WwqSA+IHdlYWs7CivlsKMgPiBsYW1lOwor5bCHID4gd2lsbDsKK+WvoCA+IHBvb3I7Civlr5QgPiByZWFsOwor5a27ID4gbGFzdDsKK+WsviA+IGxhenk7CivlrLAgPiBiYWJ5Owor5aytID4gbWlsazsKK+WsmSA+IGxhZHk7Civlq4ggPiBsYWR5Owor5aqKID4gc3RhcjsKK+WpniA+IGhhdGU7CivlqZAgPiBtYWlkOwor5ai4ID4gdWdseTsKK+WotSA+IHN0YXI7Civlp70gPiBnb29kOwor5aeuID4gbGFkeTsKK+WnpCA+IG1hdGU7CivlpJsgPiBtdWNoOwor5aSQID4gbG9uZzsKK+WjmSA+IHRvbWI7Civlo5IgPiBkdXN0Owor5aOMID4gc29pbDsKK+WiuyA+IHdhbGw7CivloqYgPiB0b21iOwor5aG5ID4gbW9hdDsKK+WgsiA+IGhhdGU7CivloKggPiBkYXViOwor5aCLID4gYnVyeTsKK+WfsCA+IGZpZWY7Civln4ggPiBoaWdoOwor5Z6cID4gaGVhcDsKK+WdsSA+IGR1c3Q7CivlnYsgPiBkdXN0Owor5ZulID4gaGlkZTsKK+WbkyA+IGduYXc7Civlm4AgPiBzaW5nOwor5ZqkID4gc2xvdzsKK+WamSA+IGJpdGU7CivlmoQgPiByb2FyOwor5ZmzID4gbWFueTsKK+WZnSA+IGhpc3M7CivlmYkgPiBiaXRlOwor5Zi9ID4gcGFudDsKK+WYryA+IHJvYXI7CivlmK4gPiBjaGF0Owor5ZioID4gcm9hcjsKK+WYnCA+IG1hcms7Civll7AgPiB0aGF0Owor5ZeKID4gc2luZzsKK+WWrCA+IHRhbGw7CivllqggPiB3YWlsOwor5ZWfID4gb3BlbjsKK+WVniA+IGR1bWI7CivllZkgPiBwb29yOwor5ZWTID4gb3BlbjsKK+WVgCA+IGduYXc7CivllLYgPiBzaWdoOwor5ZSbID4gbWFyazsKK+WSvCA+IGNoYXQ7CivlkrcgPiBob3dsOwor5ZKuID4gYmVhazsKK+WRmSA+IGNoYXQ7CivlkY4gPiBmb290Owor5ZGHID4gc3RhcjsKK+WQvyA+IHRlbGw7CivlkL0gPiAnJ29tJyc7CivlkKogPiBtb3ZlOwor5ZCLID4gaW5jaDsKK+WOlCA+IHN0b3A7CivljYAgPiBhcmVhOwor5Yy1ID4gY2FzZTsKK+WLuSA+IHdyYXA7CivlibogPiBtYXJrOwor5YmdID4gcGVlbDsKK+WJmiA+IHN0YWI7CivliL4gPiBzdGFiOwor5YicID4gY2hvcDsKK+WIkyA+IHRyaW07Civlh64gPiB3aW5kOwor5YeqID4gY2FsbTsKK+WHqCA+IHdpbmQ7Civlh6cgPiBraXRlOwor5YeaID4gY29sZDsKK+WHliA+IHJ1bGU7Civlh5QgPiBjb2xkOwor5YaQID4gcmlzazsKK+WGgiA+IHdpZGU7CivlhYwgPiBjYXNoOwor5YS+ID4gc2xvdzsKK+WEvSA+IGxhenk7CivlhLogPiByaWNoOwor5YSxID4gcnVkZTsKK+WEnCA+IHdlYWs7CivlhIUgPiBzdG9wOwor5YO+ID4gbGlrZTsKK+WDqCA+IHJ1aW47CivlgrUgPiBkZWJ0Owor5YKtID4gaGlyZTsKK+WBhCA+IHdlYWs7CivlgL0gPiB3aGF0Owor5L+0ID4gdGhpbjsKK+S/lCA+IGxpa2U7CivkvqIgPiBsb2FkOwor5L6cID4gbGllczsKK+S+miA+IGZhc3Q7CivkvoAgPiBmb3JtOwor5L24ID4gbWVldDsKK+S8uSA+IGR1bGw7CivkvLEgPiB0aG91Owor5Lu4ID4gYmVudDsKK+S6oCA+IGhlYWQ7Civkup0gPiBldmVuOwor5LqcID4gYXNpYTsKK+S6liA+IGZvdXI7CivkuoUgPiBob29rOwor5Lm8ID4gcm9wZTsKK+S5rSA+IHJvY2s7CivkuLMgPiBzcGl0Owor5LigID4gaGlsbDsKK+S1tyA+IGZyb2c7CivktaggPiBkYXJrOwor5LWSID4gZ2x1ZTsKK+S1kSA+IGdsdWU7CivktLggPiBicmFuOwor5LSdID4gc2FsdDsKK+S0nCA+IHNhbHQ7CivktIMgPiB3cmVuOwor5LO8ID4gZ3VsbDsKK+SzpiA+IHdyZW47Civks6MgPiBraXRlOwor5LKtID4ga2l0ZTsKK+SykiA+IGNyYWI7CivksbQgPiB0dW5hOwor5LGtID4gdHVuYTsKK+SxjiA+IHR1bmE7CivksY0gPiB0dW5hOwor5LCpID4gdWdseTsKK+SwpiA+IHVnbHk7CivksKQgPiB1Z2x5Owor5LCVID4gbWFuZTsKK+SwkyA+IGhhaXI7CivksIsgPiBoYWlyOwor5LCKID4gaGFpcjsKK+SwhyA+IG1hbmU7Civkr7kgPiBoYWlyOwor5K+fID4gYm9uZTsKK+SvniA+IGJvbmU7Civkr5UgPiBib255Owor5K6/ID4gbGFtZTsKK+SuviA+IGh1Z2U7CivkraIgPiByaWNoOwor5K2hID4gZm9vZDsKK+StkyA+IGZvb2Q7CivkrYIgPiBkYW1wOwor5K2AID4gZm9vZDsKK+SsniA+IHdpbmQ7CivkrI8gPiB3aW5kOwor5Ku2ID4gdWdseTsKK+SrqiA+IHVnbHk7Civkq6IgPiBnb29kOwor5KuRID4gZ29vZDsKK+SrjyA+IHVnbHk7Civkq4ogPiBjaGluOwor5KuIID4gdWdseTsKK+SrgiA+IHVnbHk7CivkqqYgPiBsb3VkOwor5KqPID4gd2VhazsKK+SqhiA+IHNvZnQ7CivkqLAgPiByYWluOwor5KiuID4gc25vdzsKK+SopCA+IHJhaW47CivkqJQgPiBoYWlsOwor5KiMID4gaGFpbDsKK+SnuyA+IGRvdmU7Civkp7kgPiBoYXdrOwor5KawID4gbG90czsKK+SlqyA+IGlyb247CivkpZQgPiBnb2xkOwor5KWSID4gbGVhZDsKK+SkriA+IGlyb247CivkpKEgPiBpcm9uOwor5KSRID4gd2luZTsKK+SkiiA+IHdpbmU7Civko70gPiB3aW5lOwor5KOoID4gcmljaDsKK+ShsyA+IGNhcnQ7CivkoYAgPiBudWRlOwor5KCtID4gbGFtZTsKK+SglyA+IGxhbWU7CivkoI8gPiBmZWV0Owor5J+oID4gbGFtZTsKK+SfgiA+IHNsb3c7Civknr8gPiBsYW1lOwor5J6pID4gbGFtZTsKK+SenSA+IGxhbWU7CivknoYgPiBib25lOwor5J2YID4gZmlybTsKK+SdlSA+IGdvb2Q7Civkm7QgPiBqb2tlOwor5Jq9ID4gbmV3czsKK+SauCA+IGdvb2Q7CivkmqkgPiBoaWdoOwor5JqiID4gaG9ybjsKK+SZpCA+IGdvb2Q7CivkmYogPiBhcmlkOwor5JepID4gdG9hZDsKK+SXoiA+IGZsZWE7CivklrggPiBtb3RoOwor5JatID4gZ3J1YjsKK+SWqiA+IGdydWI7CivklqMgPiBmbGVhOwor5JWiID4gd2VhazsKK+SUrCA+IGhlbXA7Civkk74gPiBsdXNoOwor5JO4ID4gd2VlZDsKK+STsiA+IGZpbmU7CivkkrogPiBjbGF5Owor5JKtID4gcmFuazsKK+SRrCA+IGJvYXQ7CivkkZ4gPiBzaHVuOwor5JGPID4gdWdseTsKK+SRhCA+IHJpY2g7CivkkLMgPiBmaXNoOwor5JCuID4gc2tpbjsKK+SQkyA+IHNvZnQ7CivkkIsgPiBzaWNrOwor5I+4ID4gZmlzaDsKK+SPsSA+IGJvZHk7Civkj6IgPiBtZWF0Owor5I+OID4gbWlsazsKK+SPiiA+IGRlYWY7CivkjpwgPiBhZ2VkOwor5I2aID4gdmFzdDsKK+SMqSA+IGZpbmU7CivkjJ0gPiBzaWxrOwor5IyTID4gbWFueTsKK+SMkiA+IHB1cmU7CivkjIwgPiBsYWNlOwor5Iu8ID4gc2xvdzsKK+SLliA+IGxvbmc7CivkiqYgPiBmb29kOwor5IepID4gbG9uZzsKK+SGrSA+IGNhdmU7CivkhqkgPiBkYXJrOwor5IamID4gZGVlcDsKK+SEqSA+IGJyYW47CivkgoMgPiBkYXJrOwor5IGpID4gZmlzaDsKK+SBhiA+IGV5ZXM7CivkgYUgPiByYWdlOwor5IC+ID4gbWFueTsKK+SAnCA+IGRvd247CivkgIsgPiBzYWx0Owor5ICAID4gY3VwczsKK+O/mSA+IGZ1bGw7Civjv44gPiBzaWNrOwor4765ID4gbGVhbjsKK+O+qiA+IGxlYW47CivjvqggPiB3ZWFrOwor476bID4gdWdseTsKK+O+iiA+IHRoaW47CivjvokgPiB0aGluOwor47qlID4gYmFyazsKK+O5kiA+IGJ1bGw7CivjuY8gPiBnb29kOwor47mOID4gYnVsbDsKK+O5jSA+IGJ1bGw7CivjuLggPiBjYWxmOwor47iuID4gYnVsbDsKK+O4jiA+IHdhcm07Civjt7UgPiBmaXJlOwor47e0ID4gZmlyZTsKK+O3rCA+IGZpcmU7Civjt5ggPiBjb2FsOwor47eQID4gZmlyZTsKK+O3hCA+IGZpcmU7CivjtrkgPiBmaXJlOwor47avID4gZmlyZTsKK+O2qCA+IGZpcmU7CivjtqcgPiB3YXJtOwor47W+ID4gY29sZDsKK+O1tiA+IGZ1bGw7CivjtakgPiBtYW55Owor47WZID4gcHVyZTsKK+O1liA+IGRhbXA7CivjtLQgPiBzaW5rOwor47SxID4gZGVlcDsKK+O0nSA+IG1hbnk7CivjtJsgPiBkYW1wOwor47SXID4gZGVlcDsKK+O0gCA+IGRlZXA7Civjs6QgPiBnb29kOwor47K+ID4gcmFpbjsKK+OyuyA+IHN1bms7CivjsrQgPiBtaW5kOwor47KfID4gaGFpcjsKK+OynCA+IHJ1Z3M7CivjspMgPiBmaW5lOwor47G0ID4gc2ljazsKK+OxiyA+IGhpZ2g7CivjsYcgPiBmZWFyOwor47CrID4gZ2xhZDsKK+OwoSA+IHJhc2g7CivjsJ8gPiBob3BlOwor47CZID4gd2VhazsKK+OwkCA+IG92YWw7CivjrrogPiBzdGVtOwor466kID4gcGluZTsKK+OukiA+IHdvb2Q7Civjrb0gPiByb290Owor46yYID4gYXJpZDsKK+OsiSA+IHdhcm07CivjrIUgPiBsb25nOwor46uyID4gZGFyazsKK+OrsSA+IG1pbGQ7Civjq6UgPiBkYXJrOwor46uOID4gbWFyazsKK+OrhCA+IHNpZGU7CivjqbwgPiBtYW55Owor76ilID4gZmxlZTsKK++ohSA+IGNhdmU7Civvp78gPiBzdGFiOwor76e6ID4gZm9ybTsKK++ntSA+IGRyaXA7Civjp64gPiBoaWdoOwor76erID4gaGlkZTsKK+OnqCA+IHNsb3c7Civvp6IgPiBwZWFyOwor76ehID4gcGx1bTsKK++nkyA+IGxhbmQ7Civvp5IgPiBraWxsOwor76ePID4ga25vdDsKK++njSA+IHN0b3A7Civvp4ogPiBmbG93Owor76a5ID4gZXZpbDsKK++mtCA+IG5lY2s7CivvprIgPiB6ZXJvOwor76axID4gYmVsbDsKK++mrCA+IHBpdHk7CivvpqcgPiBodW50Owor46aoID4gbGF6eTsKK+OmoiA+IHB1cmU7CivvppogPiBqb2luOwor76aVID4geWVhcjsKK++mkCA+IGxvdmU7Civvpo8gPiBwaXR5Owor76aOID4geWVhcjsKK+OmjyA+IHdlYWs7CivvpoMgPiB0cmlwOwor76W8ID4gZ29vZDsKK++luyA+IGZvb2Q7CivvpbkgPiBjb29sOwor76WyID4gc2luazsKK++lsCA+IGtpbGw7Civvpa4gPiBsZWFmOwor46WsID4gZmVhcjsKK+OlqSA+IGlkbGU7CivjpaEgPiBpZGxlOwor76WbID4gdGFrZTsKK++lmiA+IHJlYWQ7CivvpZkgPiBoaWxsOwor76WVID4gcHVyZTsKK++lkyA+IHJpYnM7CivvpY4gPiBsZWFrOwor76WFID4gZGVhZjsKK++lhCA+IGNhZ2U7CivvpYAgPiBkZWVyOwor76S/ID4gY29weTsKK++ktyA+IHJvYWQ7CivvpK4gPiBjb2xkOwor76StID4gY29tZTsKK++kqyA+IHdvbGY7CivvpKogPiB3YXZlOwor76SlID4gcHVsbDsKK++koyA+IGJsdWU7CivjpJ8gPiBmZWFyOwor76SYID4gZmFsbDsKK++kkiA+IGJhcmU7CivvpI0gPiBsYXp5Owor76SLID4gaG9ybjsKK++kiiA+IGdvbGQ7CivvpIkgPiBkZWVkOwor46SJID4gZmVhcjsKK++khCA+IHNsaXA7CivvpIIgPiBjYXJ0Owor76SBID4gbW9yZTsKK+OjjiA+IGZpbmU7CivjopwgPiB2YXN0Owor46KYID4gcHVyZTsKK+OilCA+IG1hbnk7Civjoo4gPiBoaWRlOwor46KLID4gdmFzdDsKK+OigyA+IGhpZ2g7CivjooEgPiB2YXN0Owor46GmID4gbWVzczsKK+OguyA+IHJhcmU7CivjoKkgPiB2YXN0Owor46CMID4gaGlnaDsKK+OesSA+IGR1c2s7CivjnpYgPiB0aGlzOwor456EID4gbGFtZTsKK+OdvyA+IGxhbWU7CivjnaEgPiB2ZXJ5Owor452gID4gZGFyazsKK+OdnSA+IGRlZXA7CivjnZEgPiBzaWRlOwor452QID4gZmFjZTsKK+OdiCA+IHR3aW47CivjnYQgPiBwdXJlOwor45y3ID4gbWlsazsKK+OcmyA+IHNvZnQ7CivjnIMgPiBmcm9tOwor45umID4gZ29vZDsKK+OapyA+IGFnaWw7Civjmo0gPiBtdWNoOwor45qLID4gbXVjaDsKK+OaiiA+IG11Y2g7CivjmoIgPiBkdXN0Owor45mqID4gZGFyazsKK+OZoCA+IGR1c3Q7CivjmZIgPiB3aWxkOwor45mCID4gd2FsbDsKK+OZgSA+IGR1c3Q7CivjmKggPiBkZWVwOwor45iQID4gbG91ZDsKK+OXiCA+IGxvbmc7CivjlaYgPiBsb3VkOwor45SEID4gdGhpbjsKK+OTkSA+IGNvbGQ7Civjk44gPiBjb2xkOwor45OKID4gY29sZDsKK+OSmiA+IGZpcm07Civjko4gPiBldmlsOwor45G/ID4gbG9uZzsKK+ORtSA+IGVudnk7CivjkZogPiB0aGF0Owor45GMID4gd2VhazsKK+ORiCA+IHJ1ZGU7CivjkKEgPiB3ZWFrOwor45CFID4gZml2ZTsKK+S4gCA+IG9uZTsKK+S6uiA+IG1hbjsKK+aIkSA+IG91cjsKK+WkpyA+IGJpZzsKK+S4iiA+IHRvcDsKK+S9oCA+IHlvdTsKK+WPryA+IG1heTsKK+WluSA+IHNoZTsKK+WkqSA+IHNreTsKK+iAjCA+IGFuZDsKK+eEtiA+IHllczsKK+ayoSA+IG5vdDsKK+aXpSA+IHN1bjsKK+W9qSA+IGh1ZTsKK+WNgSA+IHRlbjsKK+eUqCA+IHVzZTsKK+ecvCA+IGV5ZTsKK+WPiCA+IGFuZDsKK+ingSA+IHNlZTsKK+iAgSA+IG9sZDsKK+S4pCA+IHR3bzsKK+WkliA+IG91dDsKK+S4jiA+IGFuZDsKK+azlSA+IGxhdzsKK+ebriA+IGV5ZTsKK+S6jCA+IHR3bzsKK+eCuSA+IGRvdDsKK+ebnCA+IHJvYjsKK+WFtiA+IGhpczsKK+eblyA+IHJvYjsKK+WEvyA+IHNvbjsKK+aWsCA+IG5ldzsKK+W6iiA+IGJlZDsKK+eahiA+IGFsbDsKK+a1tyA+IHNlYTsKK+WwkSA+IGZldzsKK+W4vSA+IGhhdDsKK+WPqyA+IGNyeTsKK+atuyA+IGRpZTsKK+aUviA+IHB1dDsKK+S7iiA+IG5vdzsKK+i1pCA+IHJlZDsKK+eVoiA+IGVuZDsKK+aImCA+IHdhcjsKK+izvCA+IGJ1eTsKK+eTtiA+IGp1ZzsKK+ivtyA+IGFzazsKK+S6pCA+IG1peDsKK+WQgyA+IGVhdDsKK+iytyA+IGJ1eTsKK+mdniA+IG5vdDsKK+WkqyA+IG1hbjsKK+e6oiA+IHJlZDsKK+i/kCA+IHJ1bjsKK+WvpSA+IGZldzsKK+e9kSA+IG5ldDsKK+mjniA+IGZseTsKK+ingiA+IHNlZTsKK+eMvyA+IGFwZTsKK+eMqyA+IGNhdDsKK+eMqiA+IHBpZzsKK+WdkCA+IHNpdDsKK+isgiA+IHNheTsKK+eLlyA+IGRvZzsKK+iriyA+IGFzazsKK+e7iCA+IGVuZDsKK+WIhyA+IGN1dDsKK+eKrCA+IGRvZzsKK+iqpCA+IGVycjsKK+WwlCA+IHlvdTsKK+eDrSA+IGhvdDsKK+WPpCA+IG9sZDsKK+eJmyA+IGNvdzsKK+eJgCA+IGJlZDsKK+ingCA+IHNlZTsKK+S9jiA+IGxvdzsKK+imsyA+IHNlZTsKK+eGsSA+IGhvdDsKK+S7jSA+IHlldDsKK+imiyA+IHNlZTsKK+iEmiA+IGxlZzsKK+S6kSA+IHNheTsKK+S5sCA+IGJ1eTsKK+WliCA+IGJ1dDsKK+aOkiA+IHJvdzsKK+WjryA+IGJpZzsKK+WjniA+IGJhZDsKK+WjiiA+IGJhZDsKK+a5viA+IGJheTsKK+WiqCA+IGluazsKK+WQpiA+IG5vdDsKK+mjnyA+IGVhdDsKK+ihkyA+IGFydDsKK+a/mCA+IG11ZDsKK+a/lSA+IHdldDsKK+mcsiA+IGRldzsKK+m9oiA+IGFnZTsKK+m9oSA+IGFnZTsKK+idmSA+IGJhdDsKK+idiyA+IHdheDsKK+m8oCA+IHJhdDsKK+i3kSA+IHJ1bjsKK+icgiA+IGJlZTsKK+iJuiA+IGFydDsKK+m7niA+IGRvdDsKK+aRhyA+IHdhZzsKK+mhtiA+IHRvcDsKK+a5vyA+IHdldDsKK+erryA+IGVuZDsKK+aXpyA+IG9sZDsKK+ayuSA+IG9pbDsKK+iXnSA+IGFydDsKK+avlSA+IGVuZDsKK+iXiSA+IG1hdDsKK+a2siA+IHNhcDsKK+iWryA+IHlhbTsKK+iAsyA+IGVhcjsKK+WWiyA+IG5hZzsKK+WVnCA+IHNpcDsKK+WVjyA+IGFzazsKK+azpSA+IG11ZDsKK+azoyA+IGNyeTsKK+WTgCA+IHNhZDsKK+WGsCA+IGljZTsKK+ivryA+IGVycjsKK+WHoSA+IGFsbDsKK+axnSA+IHlvdTsKK+iwkyA+IHNheTsKK+adryA+IGN1cDsKK+awtyA+IGljZTsKK+awoyA+IGFpcjsKK+awlyA+IGFpcjsKK+iQjCA+IGJ1ZDsKK+i0rSA+IGJ1eTsKK+mAlCA+IHdheTsKK+aRhiA+IHB1dDsKK+WFuCA+IGxhdzsKK+iMtiA+IHRlYTsKK+WNtSA+IGVnZzsKK+aSrSA+IHNvdzsKK+iHgiA+IGFybTsKK+astyA+IHNvYjsKK+WMmiA+IGJveDsKK+aRqSA+IHJ1YjsKK+mkkCA+IGVhdDsKK+WGoCA+IGNhcDsKK+iKvSA+IGJ1ZDsKK+iKuCA+IHJ1ZTsKK+WKoyA+IGJhZDsKK+WJvSA+IHJvYjsKK+WJsiA+IGN1dDsKK+e8mCA+IGhlbTsKK+S/qSA+IHR3bzsKK+WjriA+IGJpZzsKK+W/pyA+IHNhZDsKK+iIiiA+IG9sZDsKK+iIhyA+IGFuZDsKK+m+hCA+IGFnZTsKK+aDqCA+IHNhZDsKK+iFviA+IGZseTsKK+afkyA+IGR5ZTsKK+iGvyA+IHB1czsKK+amuyA+IGNvdDsKK+WGhiA+IHllbjsKK+WFqSA+IHR3bzsKK+WFkiA+IHNvbjsKK+iFkCA+IHJvdDsKK+WFkCA+IHNvbjsKK+iEgiA+IGZhdDsKK+mjmyA+IGZseTsKK+iCpSA+IGZhdDsKK+aPtCA+IGFpZDsKK+iDliA+IGZhdDsKK+WTvCA+IGh1bTsKK+WBtSA+IHNweTsKK+mhmyA+IHRvcDsKK+mhjiA+IGphdzsKK+WAtiA+IGFsbDsKK+mggiA+IHRvcDsKK+e9kCA+IGphcjsKK+aNtyA+IHdpbjsKK+mcpyA+IGZvZzsKK+S5viA+IGRyeTsKK+S/sSA+IGFsbDsKK+i1oiA+IHdpbjsKK+e8nSA+IHNldzsKK+aKmiA+IHBhdDsKK+aMliA+IGRpZzsKK+abnSA+IHN1bjsKK+mbviA+IGZvZzsKK+aakSA+IGhvdDsKK+mioCA+IHRvcDsKK+aJhyA+IGZhbjsKK+absCA+IHNheTsKK+S5niA+IGJlZzsKK+i1jCA+IGJldDsKK+e4qyA+IHNldzsKK+S4oSA+IHR3bzsKK+asoCA+IG93ZTsKK+awmyA+IGdhczsKK+e4gSA+IGhlbTsKK+e3oCA+IHRpZTsKK+W8lyA+IG5vdDsKK+e2siA+IG5ldDsKK+aWrCA+IGN1dDsKK+e1tiA+IGN1dDsKK+i+nyA+IGxhdzsKK+e1giA+IGVuZDsKK+ilhCA+IGFpZDsKK+eCkiA+IGZyeTsKK+mUoSA+IHRpbjsKK+e0hSA+IHJlZDsKK+aSqyA+IHBhdDsKK+mRtSA+IGphcjsKK+WdkSA+IHBpdDsKK+aQliA+IHdhZzsKK+aPuiA+IHdhZzsKK+aSlSA+IHJpcDsKK+aPiSA+IHJ1YjsKK+ejlSA+IGhpdDsKK+aWqSA+IGN1dDsKK+aOoCA+IHJvYjsKK+aOmCA+IGRpZzsKK+iwjiA+IGxpZTsKK+mKnCA+IGJpdDsKK+i1iyA+IHRheDsKK+WbiiA+IGJhZzsKK+aIsCA+IHdhcjsKK+aIpiA+IHdhcjsKK+aGgiA+IHNhZDsKK+aQgiA+IGh1ZzsKK+aFmCA+IHNhZDsKK+S+piA+IHNweTsKK+WjtiA+IGphcjsKK+W8kyA+IGJvdzsKK+icoSA+IHdheDsKK+W6kCA+IGh1dDsKK+atuSA+IGJhZDsKK+aDnyA+IGJ1dDsKK+ihlCA+IGJpdDsKK+WdjiA+IHBpdDsKK+WFuSA+IG5vdzsKK+avryA+IHJ1ZzsKK+mSpSA+IGtleTsKK+aWpyA+IGF4ZTsKK+i1jiA+IGJ1eTsKK+W9pCA+IHJlZDsKK+eHpSA+IGRyeTsKK+S9rCA+IG1hbjsKK+eehSA+IHNlZTsKK+i5piA+IGhvcDsKK+mchCA+IHNreTsKK+e/qSA+IGZseTsKK+aaqCA+IGFuZDsKK+i/oiA+IGZhcjsKK+e8lCA+IHRpZTsKK+ikmiA+IGJhZzsKK+iagiA+IGFudDsKK+aPjSA+IGhpdDsKK+aTgiA+IHJ1YjsKK+mUhCA+IGhvZTsKK+aNhSA+IGphYjsKK+meoCA+IGJvdzsKK+mqsCA+IGRpZTsKK+i4iSA+IGhvcDsKK+ahqCA+IG9hcjsKK+aLjCA+IG1peDsKK+eLuCA+IGZveDsKK+eAmyA+IHNlYTsKK+WZqSA+IGJhZDsKK+iTkyA+IGJ1ZDsKK+eqliA+IHBpdDsKK+aOuiA+IG1peDsKK+eMliA+IG1hZDsKK+i2viA+IHRvZTsKK+iYuCA+IGRpcDsKK+a3pCA+IG11ZDsKK+eQpiA+IGdlbTsKK+iEkyA+IHB1czsKK+eVuCA+IG9kZDsKK+ebjiA+IGN1cDsKK+iMlyA+IHRlYTsKK+iDpSA+IGFsbDsKK+aAhiA+IHNhZDsKK+azniA+IG11ZDsKK+WJkCA+IGN1dDsKK+iIgCA+IGRpcDsKK+WdryA+IGRhbTsKK+WgsCA+IGRhbTsKK+W5uiA+IG9uZTsKK+eJryA+IGNvdzsKK+W8vCA+IGFpZDsKK+mznSA+IGVlbDsKK+aWqyA+IGN1dDsKK+aAqSA+IHNoeTsKK+a6pSA+IGJpZzsKK+apuSA+IG9hcjsKK+m7oCA+IHNseTsKK+e7jCA+IHNldzsKK+WJnCA+IGN1dDsKK+e9lCA+IG5ldDsKK+mimiA+IGphdzsKK+WUvyA+IHNhZDsKK+iAqCA+IGhvZTsKK+iGmCA+IGZhdDsKK+mVsyA+IGJpdDsKK+iFtCA+IGZhdDsKK+eLryA+IHNseTsKK+mVoiA+IGhvZTsKK+ijqCA+IGFpZDsKK+mUmyA+IGFkejsKK+WbtSA+IGFsbDsKK+mCiCA+IGZhcjsKK+aukiA+IGRpZTsKK+WVliA+IGVhdDsKK+m6iyA+IGVsazsKK+mzjSA+IGZpbjsKK+WIjSA+IG1vdzsKK+S+lyA+IGJpZzsKK+alqyA+IG9hcjsKK+eMoSA+IHBpZzsKK+afniA+IG9hazsKK+S9pSA+IGFsbDsKK+mzlyA+IGVlbDsKK+meoyA+IHRhbjsKK+ajuSA+IG9hcjsKK+mZgiA+IGRhbTsKK+augSA+IGRpZTsKK+inmiA+IGp1ZzsKK+iHrCA+IGxhdzsKK+eMgyA+IGRvZzsKK+WvpCA+IGZldzsKK+WDliA+IGpveTsKK+eKrSA+IGRvZzsKK+e+nSA+IHJhbTsKK+iylCA+IGZveDsKK+injCA+IHNlZTsKK+anoCA+IG9hazsKK+a6uyA+IHdldDsKK+iKnyA+IG1vdzsKK+S/oyA+IGJpZzsKK+eTvyA+IGphcjsKK+mAliA+IGZhcjsKK+WTnCA+IHNpcDsKK+masCA+IGxvdzsKK+myoSA+IGVlbDsKK+avuSA+IHJ1ZzsKK+auqiA+IGRpZTsKK+e8jyA+IGhlbTsKK+mloyA+IGVhdDsKK+WfpCA+IGFkZDsKK+WdrSA+IG11ZDsKK+m+pSA+IGJlZzsKK+m9oyA+IGFjdDsKK+m8oSA+IHJhdDsKK+m7lSA+IHJlZDsKK+m5iyA+IGVtdTsKK+m0niA+IG93bDsKK+mylSA+IHJvZTsKK+mxuiA+IGVlbDsKK+mxlCA+IGVlbDsKK+mxkyA+IGVlbDsKK+mwuyA+IGVlbDsKK+mwrSA+IGZpbjsKK+muniA+IHJvZTsKK+mstyA+IHBvdDsKK+mstCA+IHBvdDsKK+mshiA+IGxheDsKK+mroiA+IHdpZzsKK+mqvSA+IGxlZzsKK+motSA+IGJheTsKK+mosyA+IHJ1bjsKK+mosCA+IGZseTsKK+mooiA+IGJheTsKK+mogiA+IHJlZDsKK+mniSA+IGJpZzsKK+mklCA+IGVhdDsKK+mjoCA+IGVhdDsKK+mhmiA+IHRvcDsKK+mgsyA+IHJlZDsKK+mgqyA+IGJvdzsKK+mfliA+IHRhbjsKK+mfjiA+IHJlZDsKK+mYrCA+IHBpdDsKK+mRsCA+IGtleTsKK+mRryA+IGF3bDsKK+mRoyA+IGJpdDsKK+mQjyA+IGNhcDsKK+mPmiA+IGF4ZTsKK+mOoSA+IGhvZTsKK+mNviA+IGN1cDsKK+mMqyA+IHRpbjsKK+mMpCA+IGhvZTsKK+mMmyA+IGFkejsKK+mMlCA+IGNhcDsKK+mLpCA+IGhvZTsKK+mJjyA+IGhvZTsKK+mBiSA+IHNweTsKK+i9kSA+IHJ1dDsKK+i4tiA+IHBhdzsKK+i3piA+IGhvcDsKK+i0liA+IGJ1eTsKK+i0jyA+IHdpbjsKK+izrSA+IGJldDsKK+izpiA+IHRheDsKK+iynCA+IGFwZTsKK+iykyA+IGNhdDsKK+ixvCA+IGZveDsKK+ixtyA+IG1hbjsKK+ixrCA+IHBpZzsKK+ixqCA+IHBpZzsKK+ixnSA+IHNvdzsKK+isiiA+IGxpZTsKK+imvyA+IHNlZTsKK+imqSA+IHNlZTsKK+imjCA+IHNlZTsKK+ijgCA+IG1hdDsKK+ihnCA+IHdheTsKK+igriA+IGJlZTsKK+ignyA+IHdheDsKK+ieniA+IGFudDsKK+iemCA+IGFudDsKK+idryA+IGFwZTsKK+ickSA+IGVnZzsKK+iXtyA+IHlhbTsKK+iVtyA+IHlhbTsKK+iVkyA+IHJ1ZTsKK+iUiyA+IGRyeTsKK+iTuiA+IGFydDsKK+iToyA+IHlhbTsKK+iStCA+IHBvZDsKK+iRhCA+IG1hdDsKK+iQoCA+IGJ1ZDsKK+iMsiA+IG5vdzsKK+iKuyA+IG1vdzsKK+iJqiA+IG9hcjsKK+iHlSA+IGZhdDsKK+iHhyA+IGZhdDsKK+iGnyA+IGZhdDsKK+iGiyA+IGZhdDsKK+iGgyA+IGZhdDsKK+iCrSA+IGZhdDsKK+iCgCA+IHBlbjsKK+iAoSA+IGhvZTsKK+e/viA+IGZseTsKK+e/gyA+IGZseTsKK+e+mCA+IHJhbTsKK+e+hyA+IGlubjsKK+e9uyA+IG5ldDsKK+e9piA+IG5ldDsKK+e9nyA+IG5ldDsKK+e9hiA+IGphcjsKK+e8viA+IGphcjsKK+e3tiA+IGhlbTsKK+e3tSA+IG5ldDsKK+e3sCA+IG5ldDsKK+e3oyA+IGhlbTsKK+e1lSA+IGN1dDsKK+e1gCA+IHNldzsKK+e0riA+IHRpZTsKK+expSA+IGtleTsKK+eukSA+IGZhbjsKK+eqniA+IHBpdDsKK+eqjCA+IHBpdDsKK+eqiiA+IHBpdDsKK+eqhSA+IGZhcjsKK+egsiA+IGd1bjsKK+eetiA+IGRpbTsKK+ediiA+IHNlZTsKK+ecmyA+IGRpbTsKK+eZmSA+IGlsbDsKK+eYqCA+IG1hZDsKK+eYjyA+IGlsbDsKK+eXlyA+IGlsbDsKK+eUkiA+IGphcjsKK+eUhyA+IGphcjsKK+eUgSA+IGp1ZzsKK+eUgCA+IGphcjsKK+eTuyA+IGphcjsKK+eTgCA+IGdlbTsKK+eShSA+IGdlbTsKK+eOhiA+IG5vdzsKK+eOgCA+IHBpZzsKK+eNqyA+IGRvZzsKK+eNqiA+IHNseTsKK+eNoiA+IGRvZzsKK+eMrSA+IGFwZTsKK+eMqCA+IGFwZTsKK+eJvCA+IG1hbjsKK+eIviA+IHlvdTsKK+eEniA+IGRpbTsKK+eBiyA+IGxhdzsKK+a+nSA+IG11ZDsKK+a9miA+IGdheTsKK+aykiA+IG5vdDsKK+avpyA+IGZ1cjsKK+auoyA+IGRpZTsKK+auniA+IGRpZTsKK+atvyA+IGRpZTsKK+atoCA+IHNpcDsKK+arpyA+IG9hazsKK+arkyA+IG9hcjsKK+argiA+IG9hcjsKK+aqnSA+IG9hcjsKK+appyA+IGh1dDsKK+aooCA+IGVsbTsKK+ansyA+IG9hcjsKK+aljiA+IHBlZzsKK+aktyA+IGJveDsKK+ajkyA+IGhpdDsKK+aitiA+IG9hcjsKK+aiqSA+IGhvZDsKK+ahriA+IGN1cDsKK+afuCA+IGN1cDsKK+adhSA+IHR1YjsKK+abgSA+IGFuZDsKK+aZniA+IGRyeTsKK+aYhCA+IGJpZzsKK+aWuCA+IGN1dDsKK+aWsiA+IGN1dDsKK+aWqCA+IGF4ZTsKK+aUtSA+IHJhcDsKK+aUtCA+IHJhcDsKK+aTuiA+IHB1dDsKK+aRnyA+IGh1ZzsKK+aQsCA+IGRpZzsKK+aQqCA+IHJ1YjsKK+aQpyA+IGZhbjsKK+aQgyA+IGFsbDsKK+aMvCA+IHJ1YjsKK+aFsSA+IHNhZDsKK+aEtCA+IHNhZDsKK+aDmSA+IHNhZDsKK+W8qCA+IGJvdzsKK+W8pCA+IGJvdzsKK+W7rCA+IGh1dDsKK+W4oyA+IGJhZzsKK+WwkyA+IHlvdTsKK+WwkiA+IHlvdTsKK+WvmSA+IGJhZDsKK+WsmyA+IGFwdDsKK+WmtSA+IG1hbjsKK+WmsyA+IHlvdTsKK+WlrSA+IHJlZDsKK+WlnCA+IGJpZzsKK+WljCA+IGRvdDsKK+WjuiA+IGphcjsKK+WjtyA+IGphcjsKK+WiqyA+IGN1cDsKK+WgjCA+IGRhbTsKK+WftiA+IGFydDsKK+WfpyA+IGRhbTsKK+WchyA+IGFsbDsKK+WaoiA+IGJhZzsKK+WajCA+IHNpcDsKK+WWqyA+IGVhdDsKK+WVlyA+IGVhdDsKK+WMuCA+IGJveDsKK+WKmiA+IGN1dDsKK+WJuCA+IGN1dDsKK+WJriA+IGN1dDsKK+WJiSA+IGN1dDsKK+WIsiA+IGN1dDsKK+WHoyA+IGFsbDsKK+WHoiA+IGFsbDsKK+WHgyA+IG11ZDsKK+WGqyA+IGljZTsKK+WGniA+IGZhcjsKK+WDiSA+IGFsbDsKK+WBryA+IHNvYjsKK+WAniA+IGZhcjsKK+S/gSA+IGJpZzsKK+S+iiA+IGJpZzsKK+S9vSA+IGFpZDsKK+S6kyA+IGhpczsKK+S6gSA+IGRyeTsKK+S5oiA+IGxpZDsKK+S4tiA+IGRvdDsKK+SzoCA+IG93bDsKK+SyiiA+IGZyeTsKK+SwoCA+IGdvZDsKK+SqniA+IGJhZDsKK+SqmiA+IGhvdDsKK+SphiA+IG9sZDsKK+SovyA+IGJhZDsKK+SimyA+IGZhcjsKK+SikyA+IGJlZDsKK+ShnCA+IGNhcjsKK+SdhiA+IGhvZzsKK+ScoyA+IGpveTsKK+SXtiA+IHdheDsKK+SXrCA+IGJlZTsKK+SXpiA+IGJlZTsKK+SSrCA+IG5vdDsKK+SRiyA+IGZhdDsKK+SRiiA+IGZhdDsKK+SRgiA+IGZhdDsKK+SQviA+IGZhdDsKK+SQtSA+IGZhdDsKK+SQqiA+IGZhdDsKK+SQqSA+IGZhdDsKK+SQnyA+IGZhdDsKK+SQjyA+IGZhdDsKK+SQjiA+IGZhdDsKK+SQiSA+IGZhdDsKK+SPuyA+IGNhbjsKK+SPtCA+IGRpbTsKK+SPpSA+IGRyeTsKK+SPnCA+IGZhdDsKK+SOiyA+IGZseTsKK+SNnSA+IG5ldDsKK+SNlSA+IG5ldDsKK+SNkiA+IG5ldDsKK+SMoiA+IHJhdzsKK+SLrCA+IHJ1ZzsKK+SLniA+IHdlYjsKK+SLhCA+IHdlYjsKK+SKkSA+IHBheTsKK+SJviA+IGJhZDsKK+SGviA+IGJpZzsKK+SGsSA+IGJpZzsKK+SBriA+IHNhZDsKK+O+kSA+IGZhdDsKK+O6iyA+IHBpZzsKK+O5hSA+IGFsbDsKK+O4gSA+IGRyeTsKK+O3qiA+IGZhdDsKK+O3oyA+IHJlZDsKK+O0vCA+IHdldDsKK+O0tyA+IHdldDsKK+OztCA+IG11ZDsKK+OyrSA+IHJ1ZzsKK+OyliA+IGZ1cjsKK+OujiA+IGN1cDsKK+OuiCA+IGJ1dDsKK+OrkyA+IGFpcjsKK++oliA+IHBpZzsKK++oiiA+IHNlZTsKK++ogCA+IGN1dDsKK++nviA+IHRlYTsKK++noyA+IG11ZDsKK+OmpyA+IHNhZDsKK++mnSA+IGJhZDsKK++mgiA+IGh1dDsKK+OmgCA+IGpveTsKK++luCA+IHR3bzsKK++ltSA+IHJvYjsKK+OloiA+IGJhZDsKK+OlkSA+IHNhZDsKK++kuCA+IGRldzsKK++ktCA+IG9sZDsKK++ksSA+IG9hcjsKK++kpyA+IHdheDsKK++knCA+IGVnZzsKK+OkmiA+IGpveTsKK++kjCA+IGJ1dDsKK+OkiCA+IHNhZDsKK+OioCA+IGZhcjsKK+OcuCA+IHNpbjsKK+OamiA+IGJpZzsKK+OYlCA+IGVhdDsKK+OXlCA+IGpveTsKK+OVhSA+IGJpZzsKK+OTiSA+IGljZTsKK+OSsyA+IHR3bzsKK+OSqiA+IHRpbjsKK+ORviA+IGpveTsKK+OQuiA+IGFsbDsKK+S4jSA+IG5vOwor5Li6ID4gZG87CivkuYsgPiAnJ3M7CivlvoMgPiBnbzsKK+W+gCA+IGdvOwor5LqOID4gaW47CivooYwgPiBnbzsKK+WmgiA+IGlmOwor5byEID4gZG87CivmiJYgPiBvcjsKK+WugyA+IGl0Owor6IulID4gaWY7CivniLIgPiBkbzsKK+WSsSA+IHVzOwor54K6ID4gZG87CivpgIIgPiBnbzsKK+WAmCA+IGlmOwor5pa8ID4gaW47Civlk58gPiBhaDsKK+WXqCA+IGhpOwor5b2dID4geWk7CivlgqUgPiBpZjsKK+mUsSA+IG96Owor5b6CID4gZ287CivpkpQgPiBtZDsKK+S8siA+IHdlOwor6ZWkID4gcGE7CivplY4gPiBucDsKK+mTuSA+IGxyOwor5aSCID4gZ287CivplL8gPiBlczsKK+mUnSA+IHRjOwor6ZSYID4gbm87CivplJUgPiBhYzsKK+mUiiA+IG96Owor6Y6dID4gdGM7CivpjLwgPiBucDsKK+mMmSA+IG96Owor6YudID4gb3o7Civov6wgPiBnbzsKK+e5hCA+IGJlOwor57OOID4gbW07CivnsqggPiBobTsKK+eyjSA+IG1tOwor57KBID4ga207CivnsbUgPiBkbTsKK+elgiA+IGhlOwor54mgID4gaXQ7CivmnIEgPiBpZjsKK+aUsiA+IHVwOwor5om1ID4gaW47CivlvZ4gPiB5aTsKK+W9nCA+IHlpOwor5b2bID4geWk7Civlu7QgPiBnbzsKK+WXiCA+IG9oOwor5ZayID4gYWg7CivllqQgPiBhaDsKK+WSgSA+IHNvOwor5YWhID4gaGc7CivlhZ4gPiBtZzsKK+WFnSA+IGRnOwor5YS7ID4gaWY7CivlgbogPiB1czsKK+S9oiA+IGhlOwor76iIID4gZ287CivvpbQgPiBpZjsKK++lpyA+IG5vOwor76WDID4gZG87CivkvZkgPiBpOwor5ZC+ID4gaTsKK+S6iCA+IGk7CivkvqwgPiBpOwor6bq/ID4gaTsKK+aotiA+IGM7CivlhIIgPiBpOwor44CCIDw+ICcuJzsKKzo6IGZ1bGx3aWR0aC1oYWxmd2lkdGggKCk7CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL1RyYW5zbGl0ZXJhdG9yX0hhbl9MYXRpbl9FRElDVC50eHQgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL1RyYW5zbGl0ZXJhdG9yX0hhbl9MYXRpbl9FRElDVC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWYyZmY0ZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfSGFuX0xhdGluX0VESUNULnR4dApAQCAtMCwwICsxLDExNjAyMCBAQAor77u/Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENvcHlyaWdodCAoYykgMTk5OS0yMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisjIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9UcmFuc2xpdGVyYXRvcl9IYW5fTGF0aW5fRURJQ1QudHh0LHYgJAorIyAkRGF0ZTogMjAwMi8wNy8yMSAwODoyNjo0MCAkCisjICRSZXZpc2lvbjogMS4xICQKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIENvbnZlcnQgQ0pLIGNoYXJhY3RlcnMKKyMgTm90ZTogYWRkcyBzcGFjZSBiZXR3ZWVuIHRoZW0gYW5kIGxldHRlcnMuCis6OiAoaGFsZndpZHRoLWZ1bGx3aWR0aCk7Cis6OiAoa2F0YWthbmEtbGF0aW4pOworOjogKGhpcmFnYW5hLWxhdGluKTsKKworJHRlcm1pbmFsUHVuY3QgPSBbXC5cLFw6XDtcP1wh77yO77yM77ya77yf77yB44CC44CB77ybWzpQZTpdWzpQZjpdXTsKKyR0ZXJtaW5hbFB1bmN0IHsgfSBbOkw6XSA+ICcgJzsKK1s6TDpdIHsgfSBbWzpIYW46XVs6UHM6XVs6UGk6XV0+ICcgJzsKKworJGthdGEgPSBbW+++nu++n++9sOODvF1bOmthdGFrYW5hOl1dOworJGthdGEgeyB9IFtbOkw6XS0ka2F0YV0+ICcgJzsKK1tbOkw6XS0ka2F0YV0geyB9ICRrYXRhID4gJyAnOworCitbOmhpcmFnYW5hOl0geyB9IFtbOkw6XS1bOmhpcmFnYW5hOl1dID4gJyAnOworW1s6TDpdLVs6aGlyYWdhbmE6XV0geyB9IFs6aGlyYWdhbmE6XT4gJyAnOworCisjIFN0YXJ0IFJBVyBkYXRhIGZvciBjb252ZXJ0aW5nIENKSyBjaGFyYWN0ZXJzCivms5Xlrabns7vlpKflrabpmaLlhbHpgJrlhaXlraboqabpqJMgPCBob3VnYWt1a2VpZGFpZ2FrdWlua3lvdXRzdXVueXV1Z2FrdXNoaWtlblwgOwor57Gz5Zu95aSn5a2m5YWl5a2m5YWx6YCa6Kmm6aiTIDwgYmVpa29rdWRhaWdha3VueXV1Z2FrdWt5b3V0c3V1c2hpa2VuXCA7CivmnJ3prq7msJHkuLvkuLvnvqnkurrmsJHlhbHlkozlm70gPCBjaG91c2VubWluc2h1c2h1Z2lqaW5taW5reW91d2Frb2t1XCA7Civoh6rli5Xou4rmkI3lrrPos6DlhJ/osqzku7vkv53pmbogPCBqaWRvdXNoYXNvbmdhaWJhaXNob3VzZWtpbmluaG9rZW5cIDsKK+iHqOWFtemXmOiAheeahumZo+ijguWcqOWJjSA8IHJpbnB5b3V0b3VzaGFrYWlqaW5yZXRzdXphaXplblwgOwor5pel5pys5Yq05YON57WE5ZCI57eP6KmV6K2w5LyaIDwgbmlob25yb3Vkb3VrdW1pYWlzb3VoeW91Z2lrYWlcIDsKK+WkquW5s+a0i+apn+aisOe/u+ios+WNlOS8miA8IHRhaWhlaXlvdWtpa2FpaG9uJyd5YWt1a3lvdWthaVwgOwor5Yuk5Yq06ICF6LKh55Sj5b2i5oiQ5L+D6YCyIDwga2lucm91c2hhemFpc2Fua2Vpc2Vpc29rdXNoaW5cIDsKK+i2hei2heWkp+imj+aooembhuepjeWbnui3ryA8IGNob3VjaG91ZGFpa2lib3NodXVzZWtpa2Fpcm9cIDsKK+e1jOa4iOWNlOWKm+mWi+eZuuapn+aniyA8IGtlaXphaWt5b3VyeW9rdWthaWhhdHN1a2lrb3VcIDsKK+WMl+a1t+mBk+mWi+eZuuW6gemVt+WumCA8IGhva2thaWRvdWthaWhhdHN1Y2hvdWNob3VrYW5cIDsKK+aLmOadn+WQjeewv+W8j+avlOS+i+S7o+ihqOWItiA8IGtvdXNva3VtZWlib2hpcmVpZGFpaHlvdXNlaVwgOwor55+l6K2Y6ZuG57SE5Z6L55Sj5qWtIDwgY2hpc2hpa2lzaHV1eWFrdWdhdGFzYW5neW91XCA7CivlpJblm73kurrnmbvpjLLoqLzmmI7mm7ggPCBnYWlrb2t1amludG91cm9rdXNob3VtZWlzaG9cIDsKK+WkquW5s+a0i+WuieWFqOS/nemanOadoee0hCA8IHRhaWhlaXlvdWFuemVuaG9zaG91am91eWFrdVwgOwor5pON57im5bit6Z+z5aOw6KiY6Yyy6KOF572uIDwgc291anV1c2VraW9uc2Vpa2lyb2t1c291Y2hpXCA7CivmiKbnlaXlhbXlmajliYrmuJvmnaHntIQgPCBzZW5yeWFrdWhlaWtpc2FrdWdlbmpvdXlha3VcIDsKK+iIquepuuWuh+WumeaKgOihk+eglOeptuaJgCA8IGtvdWt1dXVjaHV1Z2lqdXRzdWtlbmt5dXVqb1wgOwor5Zu96Zqb5qmf5qKw57+76Kiz5Y2U5LyaIDwga29rdXNhaWtpa2FpaG9uJyd5YWt1a3lvdWthaVwgOwor6Ieq5b6L56We57WM5aSx6Kq/55eHIDwgamlyaXRzdXNoaW5rZWlzaGl0Y2hvdXNob3VcIDsKK+Wbvemam+mbu+awl+mAmuS/oemAo+WQiCA8IGtva3VzYWlkZW5raXRzdXVzaGlucmVuZ291XCA7CivmspbnuITplovnmbrluoHplbflrpggPCBva2luYXdha2FpaGF0c3VjaG91Y2hvdWthblwgOwor5rW35aSW57WM5riI5Y2U5Yqb5Z+66YeRIDwga2FpZ2Fpa2VpemFpa3lvdXJ5b2t1a2lraW5cIDsKK+aXpeexs+WuieWFqOS/nemanOadoee0hCA8IG5pY2hpYmVpYW56ZW5ob3Nob3Vqb3V5YWt1XCA7Civmta7li5XlsI/mlbDngrnmvJTnrpfmqZ/mp4sgPCBmdWRvdXNob3VzdXV0ZW4nJ2VuemFua2lrb3VcIDsKK+ePvumHkeiHquWLlemgkOmHkeaUr+aJleapnyA8IGdlbmtpbmppZG91eW9raW5zaGloYXJhaWtpXCA7CivlvIHoqLzms5XnmoTllK/nianoq5YgPCBiZW5zaG91aG91dGVraXl1aWJ1dHN1cm9uXCA7CivmiKbmsqHogIXov73mgrzoqJjlv7Xml6UgPCBzZW5ib3RzdXNoYXRzdWl0b3VraW5lbmJpXCA7Civlm73pmpvljZTlipvkuovmpa3lm6MgPCBrb2t1c2Fpa3lvdXJ5b2t1amlneW91ZGFuXCA7CivmiKbooZPoiKrnqbrntbHliLbmnKzpg6ggPCBzZW5qdXRzdWtvdWt1dXRvdXNlaWhvbmJ1XCA7Civlt6Xmpa3pq5jnrYnlsILploDlrabmoKEgPCBrb3VneW91a291dG91c2VubW9uZ2Fra291XCA7CivljJflpKfopb/mtIvmnaHntITmqZ/mp4sgPCBraXRhdGFpc2VpeW91am91eWFrdWtpa291XCA7CivotoXlpKfopo/mqKHpm4bnqY3lm57ot68gPCBjaG91ZGFpa2lib3NodXVzZWtpa2Fpcm9cIDsKK+Wul+aVmeeahOeLrOeri+aApyA8IHNodXVreW91dGVraWRva3VyaXRzdXNlaVwgOwor5YyW5a2m5YW15Zmo56aB5q2i5p2h57SEIDwga2FnYWt1aGVpa2lraW5zaGlqb3V5YWt1XCA7CivplqLnqI7osr/mmJPkuIDoiKzljZTlrpogPCBrYW56ZWlib3Vla2lpcHBhbmt5b3V0ZWlcIDsKK+S4u+i+numnhuWLleWPpeani+mAoOaWh+azlSA8IHNodWppa3Vkb3VrdWtvdXpvdWJ1bnBvdVwgOwor55u05o6l54Wn5rqW5bCE5pKDIDwgY2hva3VzZXRzdXNob3VqdW5zaGFnZWtpXCA7Civnt4/lkIjnmoTlk4Hos6rnrqHnkIYgPCBzb3Vnb3V0ZWtpaGluc2hpdHN1a2FucmlcIDsKK+eWkeS8vOebtOaOpeebrueahOiqniA8IGdpamljaG9rdXNldHN1bW9rdXRla2lnb1wgOwor5Zyo55WZ5pyf6ZaT5pu05paw6Kix5Y+vIDwgemFpcnl1dWtpa2Fua291c2hpbmt5b2thXCA7Civnibnmrorlj5bmibHpg7Xkvr8gPCB0b2t1c2h1dG9yaWF0c3VrYWl5dXViaW5cIDsKK+S5vua5v+eQg+a5v+W6puioiCA8IGthbnNoaXRzdWt5dXVzaGl0c3Vkb2tlaVwgOwor5LiH5Zu96JGX5L2c5qip5p2h57SEIDwgYmFua29rdWNob3Nha3VrZW5qb3V5YWt1XCA7CivkuIflm73lm73pmpvpn7PmqJnmloflrZcgPCBiYW5rb2t1a29rdXNhaW9ucHlvdW1vamlcIDsKK+iogOiqnuWtpueahOWun+WcqOirliA8IGdlbmdvZ2FrdXRla2lqaXRzdXphaXJvblwgOwor5Yag54q25YuV6ISI6KGA5qCT55eHIDwga2Fuam91ZG91bXlha3VrZXNzZW5zaG91XCA7Civnp5HlrabmioDooZPluoHplbflrpggPCBrYWdha3VnaWp1dHN1Y2hvdWNob3VrYW5cIDsKK+a1t+a0i+aKleajhOimj+WItuadoee0hCA8IGthaXlvdXRvdWtpa2lzZWlqb3V5YWt1XCA7CivlnKflr4bpmY3kvI/lv5zlipsgPCBhdHN1bWl0c3Vrb3VmdWt1b3VyeW9rdVwgOwor5YWs6KqN5Y245aOy5qWt6ICFIDwga291bmluJydvcm9zaGl1cmlneW91c2hhXCA7CivotaTooYDnkIPmsojpmY3pgJ/luqYgPCBzZWtrZWtreXV1Y2hpbmtvdXNva3Vkb1wgOwor55+z5rK56Ly45Ye65Zu95qmf5qeLIDwgc2VraXl1eXVzaHV0c3Vrb2t1a2lrb3VcIDsKK+WFrOWFseiBt+alreWuieWumuaJgCA8IGtvdWt5b3VzaG9rdWd5b3VhbnRlaWpvXCA7CivmiKbooZPoiKrnqbrntbHliLbnj60gPCBzZW5qdXRzdWtvdWt1dXRvdXNlaWhhblwgOwor6YeO55Sf5YuV54mp5L+d6K235Zuj5L2TIDwgeWFzZWlkb3VidXRzdWhvZ29kYW50YWlcIDsKK+iHquWLleWIl+i7iuWItuW+oeijhee9riA8IGppZG91cmVzc2hhc2VpZ3lvc291Y2hpXCA7Civoh6rli5Xph5Hpiq3lh7rlhaXmqZ8gPCBqaWRvdWtpbnNlbnNodXRzdW55dXVraVwgOwor5aSp54S26LOH5rqQ5L+d6K236KuW6ICFIDwgdGVuJyduZW5zaGlnZW5ob2dvcm9uc2hhXCA7CivlnLDpnIfpm7fngavkuovopqrniLYgPCBqaXNoaW5rYW1pbmFyaWthamlveWFqaVwgOwor6Z2e5bi45LqL5oWL5a++5Yem6KiI55S7IDwgaGlqb3VqaXRhaXRhaXNob2tlaWtha3VcIDsKK+aguOWIhuijgueUn+aIkOeJqSA8IGtha3VidW5yZXRzdXNlaXNlaWJ1dHN1XCA7CivlpJrogqLpgbjmip7lvI/oqabllY8gPCB0YXNoaXNlbnRha3VzaGlraXNoaW1vblwgOwor5paw6Zai6KW/5Zu96Zqb56m65rivIDwgc2hpbmthbnNhaWtva3VzYWlrdXVrb3VcIDsKK+iBt+alreWIpembu+ipseW4syA8IHNob2t1Z3lvdWJldHN1ZGVud2FjaG91XCA7Civoh6rli5XliJfou4rlgZzmraLoo4Xnva4gPCBqaWRvdXJlc3NoYXRlaXNoaXNvdWNoaVwgOwor6KiA6Kqe5a2m55qE6Kaz5b+16KuWIDwgZ2VuZ29nYWt1dGVraWthbicnbmVucm9uXCA7CivlvoznmbrnmbrlsZXpgJTkuIrlm70gPCBrb3VoYXRzdWhhdHRlbnRvam91a29rdVwgOwor5oq55raI55m76Yyy6Ki85piO5pu4IDwgbWFzaG91dG91cm9rdXNob3VtZWlzaG9cIDsKK+e1jOa4iOS8geeUu+W6gemVt+WumCA8IGtlaXphaWtpa2FrdWNob3VjaG91a2FuXCA7Civlho3nlJ/kuI3oia/mgKfosqfooYAgPCBzYWlzZWlmdXJ5b3VzZWloaW5rZXRzdVwgOwor54Gr5Yqb5pSv5o+06Kq/5pW057eaIDwga2FyeW9rdXNoaWVuY2hvdXNlaXNlblwgOwor5YWl5a2m5YWx6YCa6Kmm6aiTIDwgbnl1dWdha3VreW91dHN1dXNoaWtlblwgOwor56C05aOK5rS75YuV6Ziy5q2i5rOVIDwgaGFrYWlrYXRzdWRvdWJvdXNoaWhvdVwgOwor5a6k5YaF566h5bym5qW95ZujIDwgc2hpdHN1bmFpa2FuZ2VuZ2FrdWRhblwgOwor5p2x5Lqs5qCq5byP5biC5aC0IDwgdG91a3lvdWthYnVzaGlraXNoaWpvdVwgOwor56K6546H5a+G5bqm6Zai5pWwIDwga2FrdXJpdHN1bWl0c3Vkb2thbnN1dVwgOwor5Y6f5a2Q5Yqb55m66Zu75omAIDwgZ2Vuc2hpcnlva3VoYXRzdWRlbnNob1wgOwor5Luj6KGo5Y+W57eg5b25IDwgZGFpaHlvdXRvcmlzaGltYXJpeWFrdVwgOwor5Y+W5omx6Kqs5piO5pu4IDwgdG9yaWF0c3VrYWlzZXRzdW1laXNob1wgOwor6LWk5Y2B5a2X5Zu96Zqb5aeU5ZOh5LyaIDwgc2VraWp1dWppa29rdXNhaWlpbmthaVwgOwor5Yun5ZaE5oey5oKq5bCP6KqsIDwga2FuemVuY2hvdWFrdXNob3VzZXRzdVwgOwor5Zu96Zqb6L+U5L+h5YiH5omL5Yi4IDwga29rdXNhaWhlbnNoaW5raXR0ZWtlblwgOwor6KuH6Kmx6KGo56S65qeL6YCg55CG6KuWIDwgZGFud2FoeW91amlrb3V6b3VyaXJvblwgOwor5YWx55Sj5YWa5Lit5aSu5aeU5ZOh5LyaIDwga3lvdXNhbnRvdWNodXVvdWlpbmthaVwgOwor5p2t5ZGo6Z2i5pGp5pOm5YqbIDwga3Vpc2h1dW1lbm1hc2F0c3VyeW9rdVwgOwor5Lit6I+v5Lq65rCR5YWx5ZKM5Zu9IDwgY2h1dWthamlubWlua3lvdXdha29rdVwgOwor5p2x5rW36YGT5LqU5Y2B5LiJ5qyhIDwgdG91a2FpZG91Z29qdXVzYW50c3VnaVwgOwor5a6H5a6Z6ZaL55m65LqL5qWt5ZujIDwgdWNodXVrYWloYXRzdWppZ3lvdWRhblwgOwor5rCR5Li75YWa5YWo5Zu95aeU5ZOh5LyaIDwgbWluc2h1dG91emVua29rdWlpbmthaVwgOwor6Iux6Kqe5Z+656SO6IO95Yqb6Kmm6aiTIDwgZWlnb2tpc29ub3VyeW9rdXNoaWtlblwgOwor6ZaT5o6l54Wn5rqW5bCE5pKDIDwga2Fuc2V0c3VzaG91anVuc2hhZ2VraVwgOwor5LiJ6Lu45Zyn57iu6Kmm6aiT5qmfIDwgc2FuamlrdWFzc2h1a3VzaGlrZW5raVwgOwor6KaW6IG06ICF5Y+C5Yqg55Wq57WEIDwgc2hpY2hvdXNoYXNhbmthYmFuZ3VtaVwgOwor5bee6Zqb6YCa5ZWG5aeU5ZOh5LyaIDwgc2h1dXNhaXRzdXVzaG91aWlua2FpXCA7CivmlrDopo/moKrlvI/lhazplosgPCBzaGlua2lrYWJ1c2hpa2lrb3VrYWlcIDsKK+WRqOazouaVsOWkieaPm+ijhee9riA8IHNodXVoYXN1dWhlbmthbnNvdWNoaVwgOwor5a2m57+S5oyH5bCO6KaB6aCYIDwgZ2FrdXNodXVzaGlkb3V5b3VyeW91XCA7CivmhaLmgKfnlrLlirTnl4flgJnnvqQgPCBtYW5zZWloaXJvdXNob3Vrb3VndW5cIDsKK+WFrOWus+WvvuetluWfuuacrOazlSA8IGtvdWdhaXRhaXNha3VraWhvbmhvdVwgOwor5pep55m65oCn55e05ZGG55eHIDwgc291aGF0c3VzZWljaGlob3VzaG91XCA7CivntYzmuIjlm6PkvZPpgKPlkIjkvJogPCBrZWl6YWlkYW50YWlyZW5nb3VrYWlcIDsKK+aIpumXmOmbu+WtkOaIpuaDheWgsSA8IHNlbnRvdWRlbnNoaXNlbmpvdWhvdVwgOwor5L+h55So5Y2U5ZCM57WE5ZCIIDwgc2hpbicneW91a3lvdWRvdWt1bWlhaVwgOwor54++6YeR6Ieq5YuV5pSv5omV5qmfIDwgZ2Vua2luamlkb3VzaGloYXJhaWtpXCA7CivlvKbmpb3lm5vph43lpY/mm7IgPCBnZW5nYWt1c2hpanV1c291a3lva3VcIDsKK+a8lOe5ueeahOiqrOaYjuazlSA8IGVuJydla2l0ZWtpc2V0c3VtZWlob3VcIDsKK+acgOmrmOe1jOWWtuiyrOS7u+iAhSA8IHNhaWtvdWtlaWVpc2VraW5pbnNoYVwgOwor5rex5Zyo5oCn55yf6I+M55eHIDwgc2hpbnphaXNlaXNoaW5raW5zaG91XCA7Civoo4XnlLLkurrlk6HpgYvmkKzou4ogPCBzb3Vrb3VqaW4nJ2luJyd1bnBhbnNoYVwgOwor5LiA6Iis5ZG95Luk5ryU566X5qmf5qeLIDwgaXBwYW5tZWlyZWllbnphbmtpa291XCA7CivntbHnjofmnZ/nuJvnkIboq5YgPCB0b3Vzb3RzdXNva3ViYWt1cmlyb25cIDsKK+acrOaFi+aAp+mrmOihgOWcpyA8IGhvbnRhaXNlaWtvdWtldHN1YXRzdVwgOwor5pel5pys6Kqe6IO95Yqb6Kmm6aiTIDwgbmlob25nb25vdXJ5b2t1c2hpa2VuXCA7CivpmbjkuIrnq6/lsYDoo4Xnva4gPCByaWt1am91dGFua3lva3Vzb3VjaGlcIDsKK+mfs+evgOS4u+mfs+eahOWtkOmfsyA8IG9uc2V0c3VzaHVvbnRla2lzaGlpblwgOwor5pel57Gz6LK/5piT5pGp5pOmIDwgbmljaGliZWlib3Vla2ltYXNhdHN1XCA7CivoqLzliLjlj5blvJXlp5Tlk6HkvJogPCBzaG91a2VudG9yaWhpa2lpaW5rYWlcIDsKK+mAmuWVhueUo+alreWkp+iHoyA8IHRzdXVzaG91c2FuZ3lvdWRhaWppblwgOwor5pyA6auY6LKh5YuZ6LKs5Lu76ICFIDwgc2Fpa291emFpbXVzZWtpbmluc2hhXCA7Civnn63ot53pm6Lpm6LnnYDpmbjmqZ8gPCB0YW5reW9yaXJpY2hha3VyaWt1a2lcIDsKK+mAmuWVhuiIqua1t+adoee0hCA8IHRzdXVzaG91a291a2Fpam91eWFrdVwgOwor5qmf6IO95Y2Y5LiA5YyW5paH5rOVIDwga2lub3V0YW4nJ2l0c3VrYWJ1bnBvdVwgOwor55+l6IO95oOF5aCx56CU56m26YOoIDwgY2hpbm91am91aG91a2Vua3l1dWJ1XCA7CivliqDlnKfmsLTlnovljp/lrZDngokgPCBrYWF0c3VzdWlnYXRhZ2Vuc2hpcm9cIDsKK+eSsOWkquW5s+a0i+WcsOmch+W4ryA8IGthbnRhaWhlaXlvdWppc2hpbnRhaVwgOwor6Luf5Yik5a6a6K2Y5Yil5ZmoIDwgbmFuaGFudGVpc2hpa2liZXRzdWtpXCA7Civlm73nq4vljZrnianppKggPCBrb2t1cml0c3VoYWt1YnV0c3VrYW5cIDsKK+epuuaDs+enkeWtpuWwj+iqrCA8IGt1dXNvdWthZ2FrdXNob3VzZXRzdVwgOwor5Lq656iu5beu5Yil5Li7576p6ICFIDwgamluc2h1c2FiZXRzdXNodWdpc2hhXCA7CivmlrDlhaXnpL7lk6HmlZnogrIgPCBzaGluJydueXV1c2hhaW5reW91aWt1XCA7CivmjqjlpajmlofnjK7nm67pjLIgPCBzdWlzaG91YnVua2VubW9rdXJva3VcIDsKK+mbhuS4reayu+eZguWupCA8IHNodXVjaHV1Y2hpcnlvdXNoaXRzdVwgOwor5b6z5bed5LiJ5Luj5a625YWJIDwgdG9rdWdhd2FzYW5kYWlpZW1pdHN1XCA7Civoh6rnhLbnkrDlooPkv53lhajms5UgPCBzaGl6ZW5rYW5reW91aG96ZW5ob3VcIDsKK+eUn+a0u+WNlOWQjOe1hOWQiCA8IHNlaWthdHN1a3lvdWRvdWt1bWlhaVwgOwor55Kw5aSq5bmz5rSL6YCg5bGx5bivIDwga2FudGFpaGVpeW91em91emFudGFpXCA7CivooYzli5XkuLvnvqnlv4PnkIblraYgPCBrb3Vkb3VzaHVnaXNoaW5yaWdha3VcIDsKK+aWmemHkeWIpee0jemDteS+vyA8IHJ5b3VraW5iZXRzdW5vdXl1dWJpblwgOwor5Lit6Led6Zui5qC45oim5YqbIDwgY2h1dWt5b3Jpa2FrdXNlbnJ5b2t1XCA7CivnrKzkuIDmrKHkuJbnlYzlpKfmiKYgPCBkYWlpY2hpamlzZWthaXRhaXNlblwgOwor6L6y5qWt5Y2U5ZCM57WE5ZCIIDwgbm91Z3lvdWt5b3Vkb3VrdW1pYWlcIDsKK+Wkp+mZuOaoquaWremJhOmBkyA8IHRhaXJpa3VvdWRhbnRldHN1ZG91XCA7Civnm7TovYTmpI3msJHlnLAgPCBjaG9ra2F0c3VzaG9rdW1pbmNoaVwgOwor5aSJ5YuV54K65pu/55u45aC05Yi2IDwgaGVuZG91a2F3YXNlc291YmFzZWlcIDsKK+acqOmAoOW7uuevieeJqSA8IG1va3V6b3VrZW5jaGlrdWJ1dHN1XCA7Civpq5jliIblrZDlkLjlj47kvZMgPCBrb3VidW5zaGlreXV1c2h1dXRhaVwgOwor5q2v5YaF55mC5rOV5bCC6ZaA5Yy7IDwgc2hpa2FyeW91aG91c2VubW9uJydpXCA7Civml6XnsbPmp4vpgKDljZTorbAgPCBuaWNoaWJlaWtvdXpvdWt5b3VnaVwgOwor5qmf5qKw57+76Kiz5Y2U5LyaIDwga2lrYWlob24nJ3lha3VreW91a2FpXCA7CivmpI3nianmgKfom4vnmb0gPCBzaG9rdWJ1dHN1c2VpdGFucGFrdVwgOwor5L+h55So5Y+W5byV5YWIIDwgc2hpbicneW91dG9yaWhpa2lzYWtpXCA7CivkuK3lpK7ooYzmlL/lrpjluoEgPCBjaHV1b3VneW91c2Vpa2FuY2hvdVwgOwor5YyX5aSn6KW/5rSL5p2h57SEIDwga2l0YXRhaXNlaXlvdWpvdXlha3VcIDsKK+W4uOWLmeWPlue3oOW9uSA8IGpvdW11dG9yaXNoaW1hcml5YWt1XCA7CivnkrDlpKrlubPmtIvngavlsbHluK8gPCBrYW50YWloZWl5b3VrYXphbnRhaVwgOwor6Zu75rCX6YCa5L+h5aSn5a2mIDwgZGVua2l0c3V1c2hpbmRhaWdha3VcIDsKK+iKs+mmmeaXj+WMluWQiOeJqSA8IGhvdWtvdXpva3VrYWdvdWJ1dHN1XCA7CivkuIPmmJ/lpKnpgZPomasgPCBuYW5haG9zaGl0ZW50b3VtdXNoaVwgOwor5YaF6Zaj5a6Y5oi/6ZW35a6YIDwgbmFpa2FrdWthbmJvdWNob3VrYW5cIDsKK+Wun+aDheiqv+afu+WnlOWToeS8miA8IGppdHN1am91Y2hvdXNhaWlua2FpXCA7CivlvKbmpb3kupTph43lpY/mm7IgPCBnZW5nYWt1Z29qdXVzb3VreW9rdVwgOwor5rCR5peP5aSn6JmQ5q66IDwgbWluem9rdWRhaWd5YWt1c2F0c3VcIDsKK+enkeWtpuWfuuekjueglOeptuaJgCA8IGthZ2FrdWtpc29rZW5reXV1c2hvXCA7CivotorlubTnlJ/mpI3niakgPCBldHN1bmVuc2Vpc2hva3VidXRzdVwgOwor5aSJ5b2i55Sf5oiQ57Wx6Kqe6KuWIDwgaGVua2Vpc2Vpc2VpdG91Z29yb25cIDsKK+ani+aIkOe0oOe1seW+oSA8IGtvdXNlaXNva291em91dG91Z3lvXCA7CivlroflrpnplovnmbroqIjnlLsgPCB1Y2h1dWthaWhhdHN1a2Vpa2FrdVwgOwor57Gz6YCj6YKm6Iiq56m65bGAIDwgYmVpcmVucG91a3V1a291a3lva3VcIDsKK+Wkp+imj+aooembhuepjeWbnui3ryA8IGRhaWtpYm9zaHV1c2VraWthaXJvXCA7CivljZfnhKHlppnms5Xok67oj6/ntYwgPCBuYW11bXlvdWhvdXJlbmdla3lvdVwgOwor5aSW5Zu95Lq655m76Yyy5rOVIDwgZ2Fpa29rdWppbnRvdXJva3Vob3VcIDsKK+WFseeUo+WFmuaUv+ayu+WxgCA8IGt5b3VzYW50b3VzZWlqaWt5b2t1XCA7CivmnKrnorroqo3po5vooYzniankvZMgPCBtaWtha3VuaW5oaWtvdWJ1dHRhaVwgOwor5LiA6YW45YyW54Kt57Sg5Lit5q+SIDwgaXNzYW5rYXRhbnNvY2h1dWRva3VcIDsKK+adn+e4m+e2meaJv+WOn+eQhiA8IHNva3ViYWt1a2Vpc2hvdWdlbnJpXCA7Civnm7TmjqXnm67nmoToqp4gPCBjaG9rdXNldHN1bW9rdXRla2lnb1wgOwor5bCC5YuZ5Y+W57eg5b25IDwgc2VubXV0b3Jpc2hpbWFyaXlha3VcIDsKK+S4gOW5tOeUn+akjeeJqSA8IGljaGluZW5zZWlzaG9rdWJ1dHN1XCA7Civpurvolqzlj5bnt6Dnj60gPCBtYXlha3V0b3Jpc2hpbWFyaWhhblwgOwor5LiJ6Lu45Zyn57iu6Kmm6aiTIDwgc2FuamlrdWFzc2h1a3VzaGlrZW5cIDsKK+m6u+iWrOWPlue3oOazlSA8IG1heWFrdXRvcmlzaGltYXJpaG91XCA7Civnqbrou43pgKPntaHlsIbmoKEgPCBrdXVndW5yZW5yYWt1c2hvdWtvdVwgOwor5Y245aOy54mp5L6h5oyH5pWwIDwgb3Jvc2hpdXJpYnVra2FzaGlzdXVcIDsKK+WGmeecn+WIpOWumuaxuuWLnSA8IHNoYXNoaW5oYW50ZWlrZXNzaG91XCA7CivliY3nq4vohbrogqXlpKfnl4cgPCB6ZW5yaXRzdXNlbmhpZGFpc2hvdVwgOwor5YWs5q2j5Y+W5byV5aeU5ZOh5LyaIDwga291c2VpdG9yaWhpa2lpaW5rYWlcIDsKK+iqrOaYjueahOWmpeW9k+aApyA8IHNldHN1bWVpdGVraWRhdG91c2VpXCA7CivkuK3lv4PnmoTlvbnlibIgPCBjaHV1c2hpbnRla2l5YWt1d2FyaVwgOwor56iO5byV5YmN5b2T5pyf5Yip55uKIDwgemVpYmlraW1hZXRvdWtpcmlla2lcIDsKK+mAo+mCpuWPluW8leWnlOWToeS8miA8IHJlbnBvdXRvcmloaWtpaWlua2FpXCA7CivlhbHpgJrkuIDmrKHoqabpqJMgPCBreW91dHN1dWljaGlqaXNoaWtlblwgOwor56ys5LiJ56iu6YO15L6/54mpIDwgZGFpc2Fuc2h1eXV1YmluYnV0c3VcIDsKK+WPi+WlvemAmuWVhuiIqua1tyA8IHl1dWtvdXRzdXVzaG91a291a2FpXCA7CivnhKHmi4Xkv53osrjku5jph5EgPCBtdXRhbnBva2FzaGl0c3VrZWtpblwgOwor5rWB6KGM5oCn6ICz5LiL6IW654KOIDwgcnl1dWtvdXNlaWppa2FzZW4nJ2VuXCA7Civlv4XopoHljYHliIbmnaHku7YgPCBoaXRzdXlvdWp1dWJ1bmpvdWtlblwgOwor57K+56We55qE5oyH5bCO6ICFIDwgc2Vpc2hpbnRla2lzaGlkb3VzaGFcIDsKK+WOn+WtkOeJqeeQhuWtpuiAhSA8IGdlbnNoaWJ1dHN1cmlnYWt1c2hhXCA7Civnsr7lr4bmqZ/morDlt6Xmpa0gPCBzZWltaXRzdWtpa2Fpa291Z3lvdVwgOwor5YaN5YWl5Zu96Kix5Y+v5pu4IDwgc2Fpbnl1dWtva3VreW91a2FzaG9cIDsKK+WumuW9ouWklumDteS+v+eJqSA8IHRlaWtlaWdhaXl1dWJpbmJ1dHN1XCA7CivotoXkuKbliJfoqIjnrpfmqZ8gPCBjaG91aGVpcmV0c3VrZWlzYW5raVwgOwor5Lit5p6i56We57WM57O757WxIDwgY2h1dXN1dXNoaW5rZWlrZWl0b3VcIDsKK+S8nemAgeWItuW+oeaLoeW8tSA8IGRlbnNvdXNlaWd5b2tha3VjaG91XCA7Civlj47nuK7mnJ/ooYDlnKcgPCBzaHV1c2h1a3VraWtldHN1YXRzdVwgOwor5pel5Lit5Y+L5aW95Y2U5LyaIDwgbml0Y2h1dXl1dWtvdWt5b3VrYWlcIDsKK+e3j+eQhuW6nOe3j+WLmemVt+WumCA8IHNvdXJpZnVzb3VtdWNob3VrYW5cIDsKK+WbveawkemHkeiejeWFrOW6qyA8IGtva3VtaW5raW4nJ3l1dWtvdWtvXCA7CivljZjlrZDokYnmpI3niakgPCB0YW5zaGl5b3VzaG9rdWJ1dHN1XCA7Civlj6PovrrljZjntJTnlrHnlrkgPCBrb3VoZW50YW5qdW5ob3VzaGluXCA7CivpgKPnq4vmlrnnqIvlvI8gPCByZW5yaXRzdWhvdXRlaXNoaWtpXCA7Civpm4blm6Plronlhajkv53pmpwgPCBzaHV1ZGFuJydhbnplbmhvc2hvdVwgOwor5ZCN56We6auY6YCf6YGT6LevIDwgbWVpc2hpbmtvdXNva3Vkb3Vyb1wgOwor5pS+5bCE5oCn6ZmN5LiL54mpIDwgaG91c2hhc2Vpa291a2FidXRzdVwgOwor55Kw5aKD5L+d6K235Li7576p6ICFIDwga2Fua3lvdWhvZ29zaHVnaXNoYVwgOwor5Yqj5oCn6YG65Lyd5b2i6LOqIDwgcmVzc2VpaWRlbmtlaXNoaXRzdVwgOwor5pel5pys6Zm45LiK6Ieq6KGb6ZqKIDwgbmlob25yaWt1am91amllaXRhaVwgOwor6YCa5ZWG55Sj5qWt55yBIDwgdHN1dXNob3VzYW5neW91c2hvdVwgOwor5Yid5pyf6YG45oqe6aCF55uuIDwgc2hva2lzZW50YWt1a291bW9rdVwgOwor5YWo5Zu95rSl5rSl5rWm5rWmIDwgemVua29rdXRzdXRzdXVyYXVyYVwgOwor5L+h5Lu757Wx5rK75Yi25bqmIDwgc2hpbicnbmludG91Y2hpc2VpZG9cIDsKK+S4u+imgemDqOe1guerr+WeiyA8IHNodXlvdWJ1c2h1dXRhbmdhdGFcIDsKK+WQiOaIkOWMluWtpuW3pealrSA8IGdvdXNlaWthZ2FrdWtvdWd5b3VcIDsKK+WOn+WtkOWKm+eZuumbuyA8IGdlbnNoaXJ5b2t1aGF0c3VkZW5cIDsKK+WbveawkeS9k+iCsuWkp+S8miA8IGtva3VtaW50YWlpa3V0YWlrYWlcIDsKK+Wbvemam+mbu+S/oembu+ipsSA8IGtva3VzYWlkZW5zaGluZGVud2FcIDsKK+mbu+WtkOizh+mHkeaMr+abvyA8IGRlbnNoaXNoaWtpbmZ1cmlrYWVcIDsKK+ebtOaOpeawkeS4u+WItiA8IGNob2t1c2V0c3VtaW5zaHVzZWlcIDsKK+mAsuWHuuWItumZkOe3miA8IHNoaW5zaHV0c3VzZWlnZW5zZW5cIDsKK+agquW8j+WPluW8leaJgCA8IGthYnVzaGlraXRvcmloaWtpam9cIDsKK+W8pualveWbm+mHjeWlj+WboyA8IGdlbmdha3VzaGlqdXVzb3VkYW5cIDsKK+iIquepuuS6pOmAmueuoeWItiA8IGtvdWt1dWtvdXRzdXVrYW5zZWlcIDsKK+iyoeaUv+Wdh+ihoeioiOeUuyA8IHphaXNlaWtpbmtvdWtlaWtha3VcIDsKK+ebtOaOpeaVmeaOiOazlSA8IGNob2t1c2V0c3VreW91anVob3VcIDsKK+aXpeacrOimj+agvOWNlOS8miA8IG5pcHBvbmtpa2FrdWt5b3VrYWlcIDsKK+WLleeJqeaEm+itt+WNlOS8miA8IGRvdWJ1dHN1YWlnb2t5b3VrYWlcIDsKK+WPjOWtkOiRieakjeeJqSA8IHNvdXNoaXlvdXNob2t1YnV0c3VcIDsKK+exs+iIquepuuWuh+WumeWxgCA8IGJlaWtvdWt1dXVjaHV1a3lva3VcIDsKK+aXpeacrOWtpuihk+S8muitsCA8IG5paG9uZ2FrdWp1dHN1a2FpZ2lcIDsKK+iKpeW3nem+jeS5i+S7iyA8IGFrdXRhZ2F3YXJ5dXVub3N1a2VcIDsKK+iyuOWAn+WvvueFp+ihqCA8IHRhaXNoYWt1dGFpc2hvdWh5b3VcIDsKK+WFrOWumuWJsuW8leeOhyA8IGtvdXRlaXdhcmliaWtpcml0c3VcIDsKK+S6uumWk+eSsOWig+Wuo+iogCA8IG5pbmdlbmthbmt5b3VzZW5nZW5cIDsKK+W8t+i/q+elnue1jOeXhyA8IGt5b3VoYWt1c2hpbmtlaXNob3VcIDsKK+WutuWuheaNnOe0ouS7pOeKtiA8IGthdGFrdXNvdXNha3VyZWlqb3VcIDsKK+WVhualreS/oeeUqOeKtiA8IHNob3VneW91c2hpbicneW91am91XCA7CivlronlnJ/moYPlsbHmmYLku6MgPCBhenVjaGltb21veWFtYWppZGFpXCA7CivnlJ/nkIbnmoTpo5/loanmsLQgPCBzZWlyaXRla2lzaG9rdWVuc3VpXCA7CivnkrDlpKrlubPmtIvoq7jlm70gPCBrYW50YWloZWl5b3VzaG9rb2t1XCA7CivngavlipvmlK/mj7ToqIjnlLsgPCBrYXJ5b2t1c2hpZW5rZWlrYWt1XCA7CivovLjlh7rkv6HnlKjnirYgPCB5dXNodXRzdXNoaW4nJ3lvdWpvdVwgOwor6YeR5Zyw6YeR5pys5L2N5Yi25bqmIDwga2luamlnYW5laG9uJydpc2VpZG9cIDsKK+iRl+S9nOaoqeaJgOacieiAhSA8IGNob3Nha3VrZW5zaG95dXVzaGFcIDsKK+aVsOWtpueahOW4sOe0jeazlSA8IHN1dWdha3V0ZWtpa2lub3Vob3VcIDsKK+aXp+aWsOe0hOWFqOabuCA8IGt5dXVzaGluJyd5YWt1emVuc2hvXCA7Civml6XmnKzlm73nibnoqLHluoEgPCBuaWhvbmtva3V0b2treW9jaG91XCA7Civlh7rlhaXlm73nrqHnkIYgPCBzaHV0c3VueXV1a29rdWthbnJpXCA7Civpo5/ns6fnrqHnkIbliLbluqYgPCBzaG9rdXJ5b3VrYW5yaXNlaWRvXCA7CivnlJ/nianljJblrablhbXlmaggPCBzZWlidXRzdWthZ2FrdWhlaWtpXCA7CivpmpzlrrPniannq7botbAgPCBzaG91Z2FpYnV0c3VreW91c291XCA7CivmmLzlhYnoibLpm7vnkIMgPCBjaHV1a291c2hva3VkZW5reXV1XCA7Civplbfml6XmpI3niakgPCBjaG91aml0c3VzaG9rdWJ1dHN1XCA7CivlpbPmqKnmi6HlvLXoq5bogIUgPCBqb2tlbmtha3VjaG91cm9uc2hhXCA7Civph43opoHnhKHlvaLmlofljJbosqEgPCBqdXV5b3VtdWtlaWJ1bmthemFpXCA7CivntYzmuIjnpL7kvJrnkIbkuovkvJogPCBrZWl6YWlzaGFrYWlyaWppa2FpXCA7CivntbHlkIjluZXlg5rkvJrorbAgPCB0b3Vnb3ViYWt1cnlvdWthaWdpXCA7Civlvovku6TmoLzlvI8gPCByaXRzdXJ5b3VreWFrdXNoaWtpXCA7CivlpKnnhLboibLlhpnnnJ8gPCB0ZW4nJ25lbnNob2t1c2hhc2hpblwgOwor5bCE5pKD56aB5q2i5Zyw5Z+fIDwgc2hhZ2VraWtpbnNoaWNoaWlraVwgOwor6aOf6IKJ5qSN54mpIDwgc2hva3VuaWt1c2hva3VidXRzdVwgOwor5Li76Kqe5Yqp5YuV6Kme5YCS572uIDwgc2h1Z29qb2RvdXNoaXRvdWNoaVwgOwor54m55ZG95YWo5qip5YWs5L2/IDwgdG9rdW1laXplbmtlbmtvdXNoaVwgOwor5rC05Yqb55m66Zu75omAIDwgc3Vpcnlva3VoYXRzdWRlbnNob1wgOwor57Sg5Ye65Yqb5p2h5Lu2IDwgc29zaHV0c3VyeW9rdWpvdWtlblwgOwor5Zu95rCR57eP5pSv5Ye6IDwga29rdW1pbnNvdXNoaXNodXRzdVwgOwor5qSN54mp5oCn6ISC6IKqIDwgc2hva3VidXRzdXNlaXNoaWJvdVwgOwor5paw6IGe5YCr55CG57ax6aCYIDwgc2hpbmJ1bnJpbnJpa291cnlvdVwgOwor6KiY6L+w55qE5aal5b2T5oCnIDwga2lqdXRzdXRla2lkYXRvdXNlaVwgOwor5pen5paw57SE6IGW5pu4IDwga3l1dXNoaW4nJ3lha3VzZWlzaG9cIDsKK+S4h+WbvemDteS+v+mAo+WQiCA8IGJhbmtva3V5dXViaW5yZW5nb3VcIDsKK+mVt+acn+iyuOS7mOmHkSA8IGNob3VraWthc2hpdHN1a2VraW5cIDsKK+ebtOaOpeaOpee2miA8IGNob2t1c2V0c3VzZXRzdXpva3VcIDsKK+S9j+WuhemHkeiejeWFrOW6qyA8IGp1dXRha3VraW4nJ3l1dWtvdWtvXCA7CivljZjkvY3kvZPnqY3ph43ph48gPCB0YW4nJ2l0YWlzZWtpanV1cnlvdVwgOwor57Wx5LiA5Zyw5pa56YG45oyZIDwgdG91aXRzdWNoaWhvdXNlbmt5b1wgOwor5YWs6ZaL5biC5aC05pS/562WIDwga291a2Fpc2hpam91c2Vpc2FrdVwgOwor5Zyw55CD6Kaz5ris6KGb5pifIDwgY2hpa3l1dWthbnNva3VlaXNlaVwgOwor55Sf54mp54mp55CG5a2mIDwgc2VpYnV0c3VidXRzdXJpZ2FrdVwgOwor5bmz5a6254mp6Kqe5oqEIDwgaGVpa2Vtb25vZ2F0YXJpc2hvdVwgOwor5ZCI5ZCM5oqA6KGT5aeU5ZOh5LyaIDwgZ291ZG91Z2lqdXRzdWlpbmthaVwgOwor6YeN6YeP5ouz6ZeY6YG45omLIDwganV1cnlvdWtlbnRvdXNlbnNodVwgOwor5Lq65bel5rCX6IO455mC5rOVIDwgamlua291a2lreW91cnlvdWhvdVwgOwor5Zyw5pa55YWs5YWx5Zuj5L2TIDwgY2hpaG91a291a3lvdWRhbnRhaVwgOwor5omL5qC5566h55eH5YCZ576kIDwgc2h1a29ua2Fuc2hvdWtvdWd1blwgOwor6auY5YiG5a2Q5YyW5ZCI54mpIDwga291YnVuc2hpa2Fnb3VidXRzdVwgOwor6aOf6Jmr5qSN54mpIDwgc2hva3VjaHV1c2hva3VidXRzdVwgOwor6Zm45LiK5L2c5oim5pys6YOoIDwgcmlrdWpvdXNha3VzZW5ob25idVwgOwor6Kaz5a+f55qE56CU56m2IDwga2Fuc2F0c3V0ZWtpa2Vua3l1dVwgOwor5pS+5bCE5oCn5buD5qOE54mpIDwgaG91c2hhc2VpaGFpa2lidXRzdVwgOwor6YCG6Lui5YiG5biD5L+C5pWwIDwgZ3lha3V0ZW5idW5wdWtlaXN1dVwgOwor6JyY6Jub6Iac5LiL5Ye66KGAIDwga3Vtb21ha3VrYXNodWtrZXRzdVwgOwor6Ieq5YuV5pa55ZCR5o6i55+l5qmfIDwgamlkb3Vob3Vrb3V0YW5jaGlraVwgOwor5YWx5ZCM5pWR5riI5Z+66YeRIDwga3lvdWRvdWt5dXVzYWlraWtpblwgOwor6LOD6LK45YCf5aWR57SEIDwgY2hpbnRhaXNoYWt1a2VpeWFrdVwgOwor5b6z5bed5YWs54i16YK4IDwgdG9rdWdhd2Frb3VzaGFrdXRlaVwgOwor5biw6YKE5LiN6IO96ZmQ55WM54K5IDwga2lrYW5mdW5vdWdlbmthaXRlblwgOwor5L+d6Zm66YeR5Y+X5Y+W5Lq6IDwgaG9rZW5raW4nJ3VrZXRvcmluaW5cIDsKK+mZuOi7jeWjq+WumOWtpuagoSA8IHJpa3VndW5zaGlrYW5nYWtrb3VcIDsKK+a8gealreWwgueuoeawtOWfnyA8IGd5b2d5b3VzZW5rYW5zdWlpa2lcIDsKK+eyvuelnuWIhuijgueXhyA8IHNlaXNoaW5idW5yZXRzdXNob3VcIDsKK+iKuOihk+iHs+S4iuS4u+e+qSA8IGdlaWp1dHN1c2hpam91c2h1Z2lcIDsKK+eJueWRveWFqOaoqeWkp+S9vyA8IHRva3VtZWl6ZW5rZW50YWlzaGlcIDsKK+i/keaOpeiIquepuuaUr+aPtCA8IGtpbnNldHN1a291a3V1c2hpZW5cIDsKK+WkqumZveeGseeZuumbuyA8IHRhaXlvdW5ldHN1aGF0c3VkZW5cIDsKK+a1t+WklueVmeWtpueGsSA8IGthaWdhaXJ5dXVnYWt1bmV0c3VcIDsKK+acieapn+awtOmKgOS4reavkiA8IHl1dWtpc3VpZ2luY2h1dWRva3VcIDsKK+WmiuWooOS4reavkueXhyA8IG5pbnNoaW5jaHV1ZG9rdXNob3VcIDsKK+eSsOWkquW5s+a0i+ani+aDsyA8IGthbnRhaWhlaXlvdWtvdXNvdVwgOwor54us56uL5o6h566X5Yi2IDwgZG9rdXJpdHN1c2Fpc2Fuc2VpXCA7CivluILloLTljaDmnInnjocgPCBzaGlqb3VzZW4nJ3l1dXJpdHN1XCA7CivlhaznmoTkuI3ms5XlpqjlrrMgPCBrb3V0ZWtpZnVob3Vib3VnYWlcIDsKK+imluiBtOimmuaVmeadkCA8IHNoaWNob3VrYWt1a3lvdXphaVwgOwor5YaF6Zaj5rOV5Yi25bGAIDwgbmFpa2FrdWhvdXNlaWt5b2t1XCA7Civlm73lrrblhazlronlp5Tlk6HplbcgPCBrb2trYWtvdWFuJydpaW5jaG91XCA7CivmiKbpl5jmlK/mj7ToqIjnlLsgPCBzZW50b3VzaGllbmtlaWtha3VcIDsKK+S4reWwj+S8gealreW6gSA8IGNodXVzaG91a2lneW91Y2hvdVwgOwor5Zue57ea5Yi25b6h6KaP5YmHIDwga2Fpc2Vuc2VpZ3lva2lzb2t1XCA7Civmm7jnsKHkvZPlsI/oqqwgPCBzaG9rYW50YWlzaG91c2V0c3VcIDsKK+ekvuS8mueUn+eJqeWtpiA8IHNoYWthaXNlaWJ1dHN1Z2FrdVwgOwor5LiA5pel5LiA5pelIDwgaWNoaW5pY2hpaWNoaW5pY2hpXCA7Civou43pmorooYzpgLLmm7IgPCBndW50YWlrb3VzaGlua3lva3VcIDsKK+iRrOmAgeihjOmAsuabsiA8IHNvdXNvdWtvdXNoaW5reW9rdVwgOwor5riv5rm+6YGL6YCB5LqL5qWtIDwga291d2FuJyd1bnNvdWppZ3lvdVwgOwor54mp55CG55qE54++6LGhIDwgYnV0c3VyaXRla2lnZW5zaG91XCA7Civlv4Poh5PlvIHohpznl4cgPCBzaGluem91YmVubWFrdXNob3VcIDsKK+iGneiTi+iFseWPjeWwhCA8IHNoaXRzdWdhaWtlbmhhbnNoYVwgOwor6ZaA5oi46ZaL5pS+5pS/562WIDwgbW9ua29rYWlob3VzZWlzYWt1XCA7Civkv7jntabnlJ/mtLvogIUgPCBob3VreXV1c2Vpa2F0c3VzaGFcIDsKK+adseWQjemrmOmAn+mBk+i3ryA8IHRvdW1laWtvdXNva3Vkb3Vyb1wgOwor5YaF6Zaj57eP55CG5aSn6IejIDwgbmFpa2FrdXNvdXJpZGFpamluXCA7Civml6XmnKzmlL7pgIHljZTkvJogPCBuaWhvbmhvdXNvdWt5b3VrYWlcIDsKK+iIquepuuWuh+WumeW3pealrSA8IGtvdWt1dXVjaHV1a291Z3lvdVwgOwor55Sf54mp5oOF5aCx5a2mIDwgc2VpYnV0c3Vqb3Vob3VnYWt1XCA7CivlpJrlubTnlJ/mpI3niakgPCB0YW5lbnNlaXNob2t1YnV0c3VcIDsKK+mHj+WtkOeJqeeQhuWtpiA8IHJ5b3VzaGlidXRzdXJpZ2FrdVwgOwor5YyX57Gz5ZCI6KGG5Zu9IDwgaG9rdWJlaWdhc3NodXVrb2t1XCA7CivmnaXlrqLoirPlkI3pjLIgPCByYWlreWFrdWhvdW1laXJva3VcIDsKK+WcsOaWueaknOWvn+W6gSA8IGNoaWhvdWtlbnNhdHN1Y2hvdVwgOwor55+t5pel5qSN54mpIDwgdGFuaml0c3VzaG9rdWJ1dHN1XCA7CivmqJnmupblh7rlipsgPCBoeW91anVuc2h1dHN1cnlva3VcIDsKK+WwgumWgOeahOefpeitmCA8IHNlbm1vbnRla2ljaGlzaGlraVwgOwor57WQ5ama6KGM6YCy5puyIDwga2Vra29ua291c2hpbmt5b2t1XCA7Civlronlhajkv53pmpzmnaHntIQgPCBhbnplbmhvc2hvdWpvdXlha3VcIDsKK+agquW8j+mFjeW9k+mHkSA8IGthYnVzaGlraWhhaXRvdWtpblwgOwor54m55Yil6YWN5b2T6YeRIDwgdG9rdWJldHN1aGFpdG91a2luXCA7CivkuLvlg43lnJ/lnKfkv4LmlbAgPCBzaHVkb3Vkb2F0c3VrZWlzdXVcIDsKK+WPjeWwhOeahOWNiumghuW6jyA8IGhhbnNoYXRla2loYW5qdW5qb1wgOwor57WM5riI5oiQ6ZW3546HIDwga2VpemFpc2VpY2hvdXJpdHN1XCA7CivnlKPmpa3liKXntYTlkIggPCBzYW5neW91YmV0c3VrdW1pYWlcIDsKK+Wbvemam+mAmuiyqOWfuumHkSA8IGtva3VzYWl0c3V1a2FraWtpblwgOwor5YSq562J5Y2S5qWt55SfIDwgeXV1dG91c290c3VneW91c2VpXCA7Civnn63mnJ/pm4bkuK3orJvluqcgPCB0YW5raXNodXVjaHV1a291emFcIDsKK+WFpeWbveeuoeeQhuWxgCA8IG55dXVrb2t1a2FucmlreW9rdVwgOwor5L+h6LOe5b+F572wIDwgc2hpbnNob3VoaXRzdWJhdHN1XCA7Civml6XmnKzovrLmnpfopo/moLwgPCBuaWhvbicnbm91cmlua2lrYWt1XCA7CivoiKrnqbrlroflrpnnlKPmpa0gPCBrb3VrdXV1Y2h1dXNhbmd5b3VcIDsKK+WTgeizquS/neaMgeacn+mZkCA8IGhpbnNoaXRzdWhvamlraWdlblwgOwor5pel5pys5bel5qWt6KaP5qC8IDwgbmlob25rb3VneW91a2lrYWt1XCA7CivplpPmjqXmkq7lvbHms5UgPCBrYW5zZXRzdXNhdHN1ZWlob3VcIDsKK+Wun+eJqeWkp+aooeWeiyA8IGppdHN1YnV0c3VkYWltb2tlaVwgOwor6LuN5LqL55qE5L6155WlIDwgZ3Vuaml0ZWtpc2hpbnJ5YWt1XCA7CivkuK3ot53pm6LmoLjlhbXlmaggPCBjaHV1a3lvcmlrYWt1aGVpa2lcIDsKK+mFuOWMlumChOWFg+WPjeW/nCA8IHNhbmtha2FuZ2VuaGFuJydub3VcIDsKK+eJueW+tOaKveWHuiA8IHRva3VjaG91Y2h1dXNodXRzdVwgOwor5a+/5pWZ5a6kIDwga290b2J1a2lreW91c2hpdHN1XCA7Civlhazli5nln7fooYzlpqjlrrMgPCBrb3VtdXNoaWtrb3Vib3VnYWlcIDsKK+epjeWIhuaWueeoi+W8jyA8IHNla2lidW5ob3V0ZWlzaGlraVwgOwor6auY562J5bCC6ZaA5a2m5qChIDwga291dG91c2VubW9uZ2Fra291XCA7CivnqY3nrpfpm7vlipvoqIggPCBzZWtpc2FuZGVucnlva3VrZWlcIDsKK+S6jOW5tOeUn+akjeeJqSA8IG5pbmVuc2Vpc2hva3VidXRzdVwgOwor5Zu95Lya5a++562W5aeU5ZOh5LyaIDwga29ra2FpdGFpc2FrdWlua2FpXCA7CivnrKzkuozmrKHkuJbnlYzlpKfmiKYgPCBkYWluaWppc2VrYWl0YWlzZW5cIDsKK+atqeWFteaIpumXmOi7iuS4oSA8IGhvaGVpc2VudG91c2hhcnlvdVwgOwor5Y2D5Lmd55m+5bm05LujIDwgc2Vua3l1dWh5YWt1bmVuZGFpXCA7CivlhbHlkIzoqJjogIXkvJroposgPCBreW91ZG91a2lzaGFrYWlrZW5cIDsKK+enkeWtpuWNmueJqemkqCA8IGthZ2FrdWhha3VidXRzdWthblwgOwor5Lit5Zu95YWx55Sj5YWaIDwgY2h1dWdva3VreW91c2FudG91XCA7Civpq5jliIblrZDnianos6ogPCBrb3VidW5zaGlidXNzaGl0c3VcIDsKK+eZuumBlOW/g+eQhuWtpiA8IGhhdHRhdHN1c2hpbnJpZ2FrdVwgOwor57K+56We6JaE5byx6ICFIDwgc2Vpc2hpbmhha3VqYWt1c2hhXCA7CivlpKrpmb3nhrHmuKnmsLTlmaggPCB0YWl5b3VuZXRzdW9uc3Vpa2lcIDsKK+eJueWIpeihjOaUv+WMuiA8IHRva3ViZXRzdWd5b3VzZWlrdVwgOwor6Z2Z5q2i5Zyf5Zyn5L+C5pWwIDwgc2Vpc2hpZG9hdHN1a2Vpc3V1XCA7CivkuInoibLljbDliLfms5UgPCBzYW5zaG9rdWluc2F0c3Vob3VcIDsKK+aOkuWNteiqmOeZuuWJpCA8IGhhaXJhbicneXV1aGF0c3V6YWlcIDsKK+eUn+a0u+W/hemcgOWTgSA8IHNlaWthdHN1aGl0c3VqdWhpblwgOwor5bCR5bm06ZGR5Yil5omAIDwgc2hvdW5lbmthbmJldHN1c2hvXCA7Civkurrlj6Pli5XmhYvntbHoqIggPCBqaW5rb3Vkb3V0YWl0b3VrZWlcIDsKK+W6p+mqqOelnue1jOeXmyA8IHpha290c3VzaGlua2VpdHN1dVwgOwor5qSN5rCR5Zyw5pS/562WIDwgc2hva3VtaW5jaGlzZWlzYWt1XCA7CivoqLzliLjlj5blvJXms5UgPCBzaG91a2VudG9yaWhpa2lob3VcIDsKK+engeWwj+iqrCA8IHdhdGFrdXNoaXNob3VzZXRzdVwgOwor5ZWG5ZOB5Zue6Lui546HIDwgc2hvdWhpbmthaXRlbnJpdHN1XCA7Civlm73pgKPkuovli5nnt4/plbcgPCBrb2t1cmVuamltdXNvdWNob3VcIDsKK+evgOi2s+WLleeJqemWgCA8IHNlc3Nva3Vkb3VidXRzdW1vblwgOwor552A55Sf5qSN54mpIDwgY2hha3VzZWlzaG9rdWJ1dHN1XCA7CivkuI3li5XnlKPlj5blvpfnqI4gPCBmdWRvdXNhbnNodXRva3V6ZWlcIDsKK+W5tOasoeaciee1puS8keaahyA8IG5lbmppeXV1a3l1dWt5dXVrYVwgOwor5a6f54mp5Y+W5byVIDwgaml0c3VidXRzdXRvcmloaWtpXCA7CivljYHkuozmjIfohbjmvbDnmI0gPCBqdXVuaXNoaWNob3VrYWl5b3VcIDsKK+ioiOeul+eUn+eJqeWtpiA8IGtlaXNhbnNlaWJ1dHN1Z2FrdVwgOwor5bCx6IG35oOF5aCx6KqMIDwgc2h1dXNob2t1am91aG91c2hpXCA7Civlu7roqK3nmoTplqLkv4IgPCBrZW5zZXRzdXRla2lrYW5rZWlcIDsKK+WuouWupOS5l+WLmeWToSA8IGt5YWt1c2hpdHN1am91bXVpblwgOwor5pSv5oyB5Yqb5a6a5byPIDwgc2hpamlyeW9rdXRlaXNoaWtpXCA7Civli5XnianooYzli5XlraYgPCBkb3VidXRzdWtvdWRvdWdha3VcIDsKK+aIpuS6ieeKr+e9quazleW7tyA8IHNlbnNvdWhhbnphaWhvdXRlaVwgOwor6IG36IO95Luj6KGo5Yi2IDwgc2hva3Vub3VkYWloeW91c2VpXCA7CivmnIDpq5jmpJzlr5/luoEgPCBzYWlrb3VrZW5zYXRzdWNob3VcIDsKK+W/g+elnuiAl+W8seiAhSA8IHNoaW5zaGlubW91amFrdXNoYVwgOwor5bm05Yqf5bqP5YiX5Yi25bqmIDwgbmVua291am9yZXRzdXNlaWRvXCA7CivkupznsbPliKnliqDlkIjooYblm70gPCBhbWVyaWthZ2Fzc2h1dWtva3VcIDsKK+eEoeiEiuakjuWLleeJqSA8IG11c2VraXRzdWlkb3VidXRzdVwgOwor6L6y5p6X5rC055Sj5aSn6IejIDwgbm91cmluc3Vpc2FuZGFpamluXCA7Civnm7TmjqXmjqXop6YgPCBjaG9rdXNldHN1c2Vzc2hva3VcIDsKK+WutuWuheS+teWFpee9qiA8IGthdGFrdXNoaW4nJ255dXV6YWlcIDsKK+WIhuWtkOeUn+eJqeWtpiA8IGJ1bnNoaXNlaWJ1dHN1Z2FrdVwgOwor5Li76KaB6YOo5YWI5bCO5Z6LIDwgc2h1eW91YnVzZW5kb3VnYXRhXCA7CivlpKnkvZPlhpnnnJ/ooZMgPCB0ZW50YWlzaGFzaGluanV0c3VcIDsKK+enmOWvhua8j+a0qee9qiA8IGhpbWl0c3Vyb3VzZXRzdXphaVwgOwor6LK45LuY5L+h6KiXIDwga2FzaGl0c3VrZXNoaW50YWt1XCA7CivplpPmjqXnm67nmoToqp4gPCBrYW5zZXRzdW1va3V0ZWtpZ29cIDsKK+eymOa2suWIhuazjOiFuiA8IG5lbicnZWtpYnVucGl0c3VzZW5cIDsKK+eerOmWk+aOpeedgOWJpCA8IHNodW5rYW5zZXRjaGFrdXphaVwgOwor5Lq65Y+j5a+G6ZuG546HIDwgamlua291bWlzc2h1dXJpdHN1XCA7Civlm73msJHlgaXlurfkv53pmbogPCBrb2t1bWlua2Vua291aG9rZW5cIDsKK+WOn+iJsuWGmeecn+eJiCA8IGdlbnNob2t1c2hhc2hpbmJhblwgOwor5LiN5a6a6KiI6YeP56m66ZaTIDwgZnV0ZWlrZWlyeW91a3V1a2FuXCA7Civph4/lrZDoibLlipvlraYgPCByeW91c2hpaXJvcmlraWdha3VcIDsKK+WcqOaXpeexs+mZuOi7jSA8IHphaW5pY2hpYmVpcmlrdWd1blwgOwor6aOf5ZOB5re75Yqg54mpIDwgc2hva3VoaW50ZW5rYWJ1dHN1XCA7Civlj43luJ3lm73kuLvnvqnogIUgPCBoYW50ZWlrb2t1c2h1Z2lzaGFcIDsKK+WLleeJqeaAp+ibi+eZvSA8IGRvdWJ1dHN1c2VpdGFucGFrdVwgOwor54m55a6a6YO15L6/5bGAIDwgdG9rdXRlaXl1dWJpbmt5b2t1XCA7Civml6XmnKzoiKrnqbroh6rooZvpmoogPCBuaWhvbmtvdWt1dWppZWl0YWlcIDsKK+eBq+WKm+eZuumbu+aJgCA8IGthcnlva3VoYXRzdWRlbnNob1wgOwor5aSa6KeS5byP6L6y5qWtIDwgdGFrYWt1c2hpa2lub3VneW91XCA7Civpm7vojbfntZDlkIjntKDlrZAgPCBkZW5rYWtldHN1Z291c29zaGlcIDsKK+awuOS4luS4reeri+WbvSA8IGVpc2VpY2h1dXJpdHN1a29rdVwgOwor56ym5Y+35YyW5paH5a2X6ZuG5ZCIIDwgZnVnb3VrYW1vamlzaHV1Z291XCA7CivllK/nianlvIHoqLzms5UgPCB5dWlidXRzdWJlbnNob3Vob3VcIDsKK+aXpeacrOa1t+S4iuiHquihm+maiiA8IG5paG9ua2Fpam91amllaXRhaVwgOwor5Y+y55qE5ZSv54mp6KuWIDwgc2hpdGVraXl1aWJ1dHN1cm9uXCA7CivlrqPoqpPkvpvov7Dmm7ggPCBzZW5zZWlreW91anV0c3VzaG9cIDsKK+eGseiGqOW8teS/guaVsCA8IG5ldHN1Ym91Y2hvdWtlaXN1dVwgOwor5pyJ6ZmQ54q25oWL5paH5rOVIDwgeXV1Z2Vuam91dGFpYnVucG91XCA7CivljbPml6XpgJ/pgZQgPCBzb2t1aml0c3Vzb2t1dGF0c3VcIDsKK+akjeeJqeaAp+e5iue2rSA8IHNob2t1YnV0c3VzZWlzZW4nJ2lcIDsKK+mBjuWkseWCt+Wus+e9qiA8IGthc2hpdHN1c2hvdWdhaXphaVwgOwor5L+u5q2j6LOH5pys5Li7576pIDwgc2h1dXNlaXNoaWhvbnNodWdpXCA7CivkuIDljbXmgKflj4znlJ/lhZAgPCBpY2hpcmFuc2Vpc291c2VpamlcIDsKK+WFseWQjOWJteioreiAhSA8IGt5b3Vkb3Vzb3VzZXRzdXNoYVwgOwor5Zyw5Lit5rW35oCn5rCX5YCZIDwgY2hpY2h1dWthaXNlaWtpa291XCA7CivmipXos4fmnInkvqHoqLzliLggPCB0b3VzaGl5dXVrYXNob3VrZW5cIDsKK+S4iue0muWJr+ekvumVtyA8IGpvdWt5dXVmdWt1c2hhY2hvdVwgOwor5oim55Wl55qE5o+Q5pC6IDwgc2Vucnlha3V0ZWtpdGVpa2VpXCA7CivliY3mlrnlho3oo5zntabngrkgPCB6ZW5wb3VzYWlob2t5dXV0ZW5cIDsKK+eZvueZuueZvuS4rSA8IGh5YXBwYXRzdWh5YWt1Y2h1dVwgOwor55Kw5aKD5bqB6ZW35a6YIDwga2Fua3lvdWNob3VjaG91a2FuXCA7Civlj5bnt6DlvbnkvJogPCB0b3Jpc2hpbWFyaXlha3VrYWlcIDsKK+Wcp+WKm+iqv+aVtOWZqCA8IGF0c3VyeW9rdWNob3VzZWlraVwgOwor55Sf6a6u6aOf5paZ5ZOBIDwgc2Vpc2Vuc2hva3VyeW91aGluXCA7CivmlL7lsITmgKfnianos6ogPCBob3VzaGFzZWlidXNzaGl0c3VcIDsKK+WcsOeQg+eJqeeQhuWtpiA8IGNoaWt5dXVidXRzdXJpZ2FrdVwgOwor5Y+N5a6X5pWZ5pS56Z2pIDwgaGFuc2h1dWt5b3VrYWlrYWt1XCA7CivlraborZjntYzpqJPogIUgPCBnYWt1c2hpa2lrZWlrZW5zaGFcIDsKK+eri+aGsuWQm+S4u+aUv+S9kyA8IHJpa2tlbmt1bnNodXNlaXRhaVwgOwor5pS+6YCB56aB5q2i55So6KqeIDwgaG91c291a2luc2hpeW91Z29cIDsKK+i1pOmdouaBkOaAlueXhyA8IHNla2ltZW5reW91ZnVzaG91XCA7Civpo5/lk4HooZvnlJ/ms5UgPCBzaG9rdWhpbicnZWlzZWlob3VcIDsKK+aVmeiBt+WToee1hOWQiCA8IGt5b3VzaG9rdWlua3VtaWFpXCA7CivljYHkuIDpnaLoprPkuJbpn7MgPCBqdXVpY2hpbWVua2FuemVvblwgOwor5q+b5rKi5p2x5Li75bitIDwgbW91dGFrdXRvdXNodXNla2lcIDsKK+WIpemAlOepjeeri+mHkSA8IGJldHRvdHN1bWl0YXRla2luXCA7Civov5Tkv6HmlpnokYnmm7ggPCBoZW5zaGlucnlvdWhhZ2FraVwgOwor6Ku46LuK6YCa6KGM5q2iIDwgc2hvc2hhdHN1dWtvdWRvbWVcIDsKK+W9oueKtuiomOaGtuWQiOmHkSA8IGtlaWpvdWtpb2t1Z291a2luXCA7Civlm73lnJ/luoHplbflrpggPCBrb2t1ZG9jaG91Y2hvdWthblwgOwor5Ye65Yqb6KOF572uIDwgc2h1dHN1cnlva3Vzb3VjaGlcIDsKK+ikh+mbkemqqOaKmCA8IGZ1a3V6YXRzdWtvc3NldHN1XCA7CivkuIvkvY3nr4TnlofljJbntKDmgKcgPCBrYWloYW5jaHV1a2Fzb3NlaVwgOwor5Yun5ZaE5oey5oKq5YqHIDwga2FuemVuY2hvdWFrdWdla2lcIDsKK+WMu+WtpueUn+eJqeWtpiA8IGlnYWt1c2VpYnV0c3VnYWt1XCA7CivpnZ7mqJnmupbmi6HlvLUgPCBoaWh5b3VqdW5rYWt1Y2hvdVwgOwor6KGM5YuV55m66LW35pmC5Yi7IDwga291ZG91aGFra2lqaWtva3VcIDsKK+WNgemDqOmWgOWIhumhnuazlSA8IGp1dWJ1bW9uYnVucnVpaG91XCA7CivlpKrpmb3lhYnnmbrpm7sgPCB0YWl5b3Vrb3VoYXRzdWRlblwgOwor5LiW55WM5LiA5ZGo5peF6KGMIDwgc2VrYWlpc3NodXVyeW9rb3VcIDsKK+i/lOS/oeeUqOiRieabuCA8IGhlbnNoaW4nJ3lvdWhhZ2FraVwgOwor5LiW55WM5Lq65qip5a6j6KiAIDwgc2VrYWlqaW5rZW5zZW5nZW5cIDsKK+WFrOeahOWMu+eZguapn+mWoiA8IGtvdXRla2lpcnlvdWtpa2FuXCA7CivniannmoTmtYHpgJogPCBidXRzdXRla2lyeXV1dHN1dVwgOwor5Y2B5bm05LiA5piUIDwganV1bmVuaGl0b211a2FzaGlcIDsKK+elpeaciOWRveaXpSA8IHNob3V0c3VraW1laW5pY2hpXCA7CivnnJ/nj6DppIrmrpbloLQgPCBzaGluanV5b3VzaG9rdWpvdVwgOwor5oim55Wl54mp6LOqIDwgc2Vucnlha3VidXNzaGl0c3VcIDsKK+iCi+mWk+elnue1jOeXmyA8IHJva2thbnNoaW5rZWl0c3V1XCA7CivmtbfmtIvniannkIblraYgPCBrYWl5b3VidXRzdXJpZ2FrdVwgOwor57K+56We55qE6Ium55ebIDwgc2Vpc2hpbnRla2lrdXRzdXVcIDsKK+S6pOa1geeZuumbu+apnyA8IGtvdXJ5dXVoYXRzdWRlbmtpXCA7CivlsLHogbfmtLvli5UgPCBzaHV1c2hva3VrYXRzdWRvdVwgOwor5Y+X5YON5Zyf5Zyn5L+C5pWwIDwganVkb3Vkb2F0c3VrZWlzdXVcIDsKK+eLqeeMn+aOoembhuawkSA8IHNodXJ5b3VzYWlzaHV1bWluXCA7CivkuI3norrlrprmgKfljp/nkIYgPCBmdWtha3V0ZWlzZWlnZW5yaVwgOwor5oim6ZeY5q2j6Z2i5bmFIDwgc2VudG91c2hvdW1lbmhhYmFcIDsKK+S4jeS/oeS7u+aKleelqCA8IGZ1c2hpbicnbmludG91aHlvdVwgOwor6YCB6YeR5Y+X5Y+W5Lq6IDwgc291a2luJyd1a2V0b3JpbmluXCA7CivlvLHogonlvLfpo58gPCBqYWt1bmlrdWt5b3VzaG9rdVwgOwor5Ly457iu56iO546HIDwgc2hpbnNodWt1emVpcml0c3VcIDsKK+S6jOetiei+uuS4ieinkuW9oiA8IG5pdG91aGVuc2Fua2Fra2VpXCA7CivvvKTvvLLvvLPnkIboq5YgPCBkaVwgzIRhXCDMhHJ1ZXN1cmlyb25cIDsKK+mjn+ezp+euoeeQhuazlSA8IHNob2t1cnlvdWthbnJpaG91XCA7Civnm7Lohbjngo7miYvooZMgPCBtb3VjaG91ZW5zaHVqdXRzdVwgOwor56We5Ye66ay85rKhIDwgc2hpbnNodXRzdWtpYm90c3VcIDsKK+esrOS4gOe0muauuuS6uiA8IGRhaWlra3l1dXNhdHN1amluXCA7CivmiKbnlaXmoLjlhbXlmaggPCBzZW5yeWFrdWtha3VoZWlraVwgOwor5LiD5LiD5pelIDwgc2hpY2hpc2hpY2hpbmljaGlcIDsKK+e0q+mcsuiNiSA8IG11cmFzYWtpdHN1eXVrdXNhXCA7Civlh43ntZDpmLLmraLliaQgPCB0b3VrZXRzdWJvdXNoaXphaVwgOwor5Lit6ZaT6YWN5b2T6aGNIDwgY2h1dWthbmhhaXRvdWdha3VcIDsKK+aUv+S7pOaMh+WumumDveW4giA8IHNlaXJlaXNoaXRlaXRvc2hpXCA7CivlkLjooYDli5XniakgPCBreXV1a2V0c3Vkb3VidXRzdVwgOwor6auY6YCf5aKX5q6W54KJIDwga291c29rdXpvdXNob2t1cm9cIDsKK+i/lOS/oeaWmeWwgeetkiA8IGhlbnNoaW5yeW91ZnV1dG91XCA7CivooZvmmJ/lnLDnkIPlsYAgPCBlaXNlaWNoaWt5dXVreW9rdVwgOwor5Zyo55WZ5aSW5Zu95Lq6IDwgemFpcnl1dWdhaWtva3VqaW5cIDsKK+eGseWKm+WtpueahCA8IG5ldHN1cmlraWdha3V0ZWtpXCA7CivmpI3nianmjqHpm4YgPCBzaG9rdWJ1dHN1c2Fpc2h1dVwgOwor5Ye65Yqb56uv5a2QIDwgc2h1dHN1cnlva3V0YW5zaGlcIDsKK+aomea6luWFpeWKmyA8IGh5b3VqdW4nJ255dXVyeW9rdVwgOwor55Sj5qWt5buD5qOE54mpIDwgc2FuZ3lvdWhhaWtpYnV0c3VcIDsKK+eEoeaLheS/neWAn+WFpemHkSA8IG11dGFucG9rYXJpaXJla2luXCA7CivoprPokYnmpI3niakgPCBrYW4nJ3lvdXNob2t1YnV0c3VcIDsKK+WkqeeEtuiomOW/teeJqSA8IHRlbicnbmVua2luZW5idXRzdVwgOwor5Y2Y5L2N5Yq05YON57WE5ZCIIDwgdGFuJydpcm91ZG91a3VtaWFpXCA7CivkuK3lpK7lh6bnkIboo4Xnva4gPCBjaHV1b3VzaG9yaXNvdWNoaVwgOwor5Ye655Sf6Ki85piO5pu4IDwgc2h1c3NlaXNob3VtZWlzaG9cIDsKK+mBuOaMmeeuoeeQhuWnlOWToeS8miA8IHNlbmt5b2thbnJpaWlua2FpXCA7CivkuIrntJrnrqHnkIbogbcgPCBqb3VreXV1a2FucmlzaG9rdVwgOwor56iO6Zai55Sz5ZGK5pu4IDwgemVpa2Fuc2hpbmtva3VzaG9cIDsKK+S4g+eUn+WgseWbvSA8IHNoaWNoaXNob3Vob3Vrb2t1XCA7Civov5Tkv6HnlKjlsIHnrZIgPCBoZW5zaGluJyd5b3VmdXV0b3VcIDsKK+eGseeLgueahOS/oeiAhSA8IG5la2t5b3V0ZWtpc2hpbmphXCA7CivkvIHmpa3plpPkv6HnlKggPCBraWd5b3VrYW5zaGluJyd5b3VcIDsKK+asp+W3numAmuiyqOWNmOS9jSA8IG91c2h1dXRzdXVrYXRhbicnaVwgOwor6ZaL5ouT6ICF57K+56WeIDwga2FpdGFrdXNoYXNlaXNoaW5cIDsKK+Wun+eJqeaPj+WGmSA8IGppdHN1YnV0c3VieW91c2hhXCA7Civmt7HlnKjmgKfnnJ/oj4wgPCBzaGluemFpc2Vpc2hpbmtpblwgOwor6Ieq55Sx6LK/5piT5biv5Z+fIDwgaml5dXVib3Vla2l0YWlpa2lcIDsKK+adkeiQveWFseWQjOS9kyA8IHNvbnJha3VreW91ZG91dGFpXCA7CivkuIrpmbjnlKjoiJ/oiYcgPCBqb3VyaWt1eW91c2h1dXRlaVwgOwor5Y+k55Sf54mp5a2m6ICFIDwga29zZWlidXRzdWdha3VzaGFcIDsKK+auuuecn+iPjOiWrCA8IHNhdHN1c2hpbmtpbicneWFrdVwgOwor6ZaL55m66YCU5LiK5Zu9IDwga2FpaGF0c3V0b2pvdWtva3VcIDsKK+ihgOWcp+mZjeS4i+WJpCA8IGtldHN1YXRzdWtvdWthemFpXCA7CivnhKHlt67liKXniIbmkoMgPCBtdXNhYmV0c3ViYWt1Z2VraVwgOwor5bmz5ZKM55qE6Kej5rG6IDwgaGVpd2F0ZWtpa2Fpc2V0c3VcIDsKK+S4i+S9jeevhOeWh+WMluWOn+eQhiA8IGthaWhhbmNodXVrYWdlbnJpXCA7Civpo5/lk4HliqDlt6Xmpa0gPCBzaG9rdWhpbmtha291Z3lvdVwgOwor5oGL5oSb6Iez5LiK5Li7576pIDwgcmVuJydhaXNoaWpvdXNodWdpXCA7Civpq5jntJrkvY/lroXlnLAgPCBrb3VreXV1anV1dGFrdWNoaVwgOwor6Ieq5YuV6LuK5L+d6Zm65paZIDwgamlkb3VzaGFob2tlbnJ5b3VcIDsKK+mBjuWkseiHtOatu+e9qiA8IGthc2hpdHN1Y2hpc2hpemFpXCA7Civpq5jpoY3miYDlvpfogIUgPCBrb3VnYWt1c2hvdG9rdXNoYVwgOwor5Y2B5LiA6Z2i6Kaz6Z+zIDwganV1aWNoaW1lbmthbicnbm9uXCA7CivogLPpvLvlkr3llonlsILploDljLsgPCBqaWJpaW5rb3VzZW5tb24nJ2lcIDsKK+aciOe1jOWbsOmbo+eXhyA8IGdla2tlaWtvbicnbmFuc2hvdVwgOwor5Zu96Zqb6KaL5pys5biCIDwga29rdXNhaW1paG9uJydpY2hpXCA7Civnt5HlnLDljJboqIjnlLsgPCByeW9rdWNoaWtha2Vpa2FrdVwgOwor5qiZ5pys5oq95Ye6IDwgaHlvdWhvbmNodXVzaHV0c3VcIDsKK+aIpuWgtOiIquepuumYu+atoiA8IHNlbmpvdWtvdWt1dXNvc2hpXCA7CivkuK3mnqLnpZ7ntYzns7sgPCBjaHV1c3V1c2hpbmtlaWtlaVwgOwor57Wx5ZCI5Y+C6KyA5pys6YOoIDwgdG91Z291c2FuYm91aG9uYnVcIDsKK+e3j+aLrOizquWVjyA8IHNvdWthdHN1c2hpdHN1bW9uXCA7Civlrp/pqJPnmoTnoJTnqbYgPCBqaWtrZW50ZWtpa2Vua3l1dVwgOwor5bCC55So6aeQ6LuK5aC0IDwgc2VuJyd5b3VjaHV1c2hham91XCA7Civmva7lipvnmbrpm7sgPCBjaG91cnlva3VoYXRzdWRlblwgOwor54Sh6YGO5aSx6LKs5Lu7IDwgbXVrYXNoaXRzdXNla2luaW5cIDsKK+S4gOasoeaWueeoi+W8jyA8IGljaGlqaWhvdXRlaXNoaWtpXCA7CivlsLHmpa3mmYLplpPkuK0gPCBzaHV1Z3lvdWppa2FuY2h1dVwgOwor5Zu95rCR5LyR5pqH5p2RIDwga29rdW1pbmt5dXVrYW11cmFcIDsKK+WtkOWuruWkluWmiuWooCA8IHNoaWt5dXVnYWluaW5zaGluXCA7CivnhKHmi4Xkv53osrjku5ggPCBtdXRhbnBva2FzaGl0c3VrZVwgOwor5LiA57KS5a2Q5pei57SEIDwgaWNoaXJ5dXVzaGlraXlha3VcIDsKK+S8gealreWIpee1hOWQiCA8IGtpZ3lvdWJldHN1a3VtaWFpXCA7CivkuI3ms5XkvrXlhaXogIUgPCBmdWhvdXNoaW4nJ255dXVzaGFcIDsKK+ebtOaOpeizvOWFpSA8IGNob2t1c2V0c3Vrb3VueXV1XCA7Civlj47nqavmhJ/orJ3npa0gPCBzaHV1a2FrdWthbnNoYXNhaVwgOwor5oyH5ZCR5oCn54iG6JasIDwgc2hpa291c2VpYmFrdXlha3VcIDsKK+W/g+WboOaAp+WPjeW/nCA8IHNoaW4nJ2luc2VpaGFuJydub3VcIDsKK+acgOmVt+S4jeWAkui3nemboiA8IHNhaWNob3VmdXRvdWt5b3JpXCA7CivkupznhrHluK/mpI3niakgPCBhbmV0dGFpc2hva3VidXRzdVwgOwor56qu5qW155uu55qEIDwga3l1dWt5b2t1bW9rdXRla2lcIDsKK+WGhemWo+e3j+i+nuiBtyA8IG5haWtha3Vzb3VqaXNob2t1XCA7CivlpKnnhaflpKfnpZ4gPCBhbWF0ZXJhc3Vvb21pa2FtaVwgOwor5Y2w6LGh5Li7576p6Z+z5qW9IDwgaW5zaG91c2h1Z2lvbmdha3VcIDsKK+i/keS7o+S6lOeoruertuaKgCA8IGtpbmRhaWdvc2h1a3lvdWdpXCA7Civos6rlrp/liZvlgaUgPCBzaGl0c3VqaXRzdWdvdWtlblwgOwor6Ki85Yi45Y+W5byV5omAIDwgc2hvdWtlbnRvcmloaWtpam9cIDsKK+WxiOaKmOacm+mBoOmPoSA8IGt1c3NldHN1Ym91ZW5reW91XCA7CivlsYDlpJbkuK3nq4sgPCBreW9rdWdhaWNodXVyaXRzdVwgOwor5b6M5pa55Zyw5Z+f6K2m5YKZIDwga291aG91Y2hpaWtpa2VpYmlcIDsKK+atr+eJmeefr+ato+ihkyA8IHNoaWdha3lvdXNlaWp1dHN1XCA7CivljZjntLDog57nlJ/niakgPCB0YW5zYWlib3VzZWlidXRzdVwgOwor5pel5pys6Jas5bGA5pa5IDwgbmlob24nJ3lha2t5b2t1aG91XCA7Civoh6rli5Xmk43nuKboo4Xnva4gPCBqaWRvdXNvdWp1dXNvdWNoaVwgOwor5rex5bGk5b+D55CG5a2mIDwgc2hpbnNvdXNoaW5yaWdha3VcIDsKK+mDveW4guWvvuaKl+mHjueQgyA8IHRvc2hpdGFpa291eWFreXV1XCA7Civph5HliZvlpJzlj4nlppnnjosgPCBrb25nb3V5YXNoYW15b3VvdVwgOwor57K+56We6JaE5byx5YWQIDwgc2Vpc2hpbmhha3VqYWt1amlcIDsKK+iJsuW9qeiqv+evgCA8IHNoaWtpc2FpY2hvdXNldHN1XCA7CivolqznlKjmpI3niakgPCB5YWt1eW91c2hva3VidXRzdVwgOwor5YyW5a2m5pa556iL5byPIDwga2FnYWt1aG91dGVpc2hpa2lcIDsKK+aApemZjeS4i+eIhuaSgyA8IGt5dXVrb3VrYWJha3VnZWtpXCA7CivmsLTkuIrnlJ/mtLvogIUgPCBzdWlqb3VzZWlrYXRzdXNoYVwgOwor5Zyo5a2m6Ki85piO5pu4IDwgemFpZ2FrdXNob3VtZWlzaG9cIDsKK+akjeawkeWcsOe1seayuyA8IHNob2t1bWluY2hpdG91Y2hpXCA7CivplqLmlbDmlrnnqIvlvI8gPCBrYW5zdXVob3V0ZWlzaGlraVwgOwor56eL6Zyc54OI5pelIDwgc2h1dXNvdXJldHN1aml0c3VcIDsKK+ebtOaOpeiri+axgiA8IGNob2t1c2V0c3VzZWlreXV1XCA7CivmjqjpgLLnoJTnqbbmiYAgPCBzdWlzaGlua2Vua3l1dXNob1wgOwor5a6X5pWZ5ZOy5a2mIDwgc2h1dWt5b3V0ZXRzdWdha3VcIDsKK+aIpuihk+aguOWFteWZqCA8IHNlbmp1dHN1a2FrdWhlaWtpXCA7Civpq5jpgJ/mvJTnrpfmqZ/mp4sgPCBrb3Vzb2t1ZW56YW5raWtvdVwgOwor55m65bGV55qE6Kej5raIIDwgaGF0dGVudGVraWthaXNob3VcIDsKK+mjm+ihjOemgeatouepuuWfnyA8IGhpa291a2luc2hpa3V1aWtpXCA7Civlm73nq4vlm7Pmm7jppKggPCBrb2t1cml0c3V0b3Nob2thblwgOwor5LiJ6KGM5bqD5ZGK5qyEIDwgc2FuZ3lvdWtvdWtva3VyYW5cIDsKK+WLp+alreWNmuimp+S8miA8IGthbmd5b3VoYWt1cmFua2FpXCA7CivolqzniankuK3mr5IgPCB5YWt1YnV0c3VjaHV1ZG9rdVwgOwor5YiG5p6Q5b+D55CG5a2mIDwgYnVuc2VraXNoaW5yaWdha3VcIDsKK+aVmeiCsuW/g+eQhuWtpiA8IGt5b3Vpa3VzaGlucmlnYWt1XCA7Civmpa3li5nkuIrpgY7lpLEgPCBneW91bXVqb3VrYXNoaXRzdVwgOwor55Kw5aKD5L+d6K236KuW6ICFIDwga2Fua3lvdWhvZ29yb25zaGFcIDsKK+aIkOe4vuiovOaYjuabuCA8IHNlaXNla2lzaG91bWVpc2hvXCA7CivpgLHplpPlpKnmsJfkuojloLEgPCBzaHV1a2FudGVua2l5b2hvdVwgOwor5pS+5bCE57ea5oSf5Y+X5oCnIDwgaG91c2hhc2Vua2FuanVzZWlcIDsKK+ekvuS8muawkeS4u+S4u+e+qSA8IHNoYWthaW1pbnNodXNodWdpXCA7CivlsI/lv4Pnv7znv7wgPCBzaG91c2hpbicneW9rdXlva3VcIDsKK+eJueWIpeW5leWDmiA8IHRva3ViZXRzdWJha3VyeW91XCA7CivlhaXlrablv5fpoZjogIUgPCBueXV1Z2FrdXNoaWdhbnNoYVwgOwor6YOo5YiG5oOF5aCx5qeL6YCgIDwgYnVidW5qb3Vob3Vrb3V6b3VcIDsKK+S4gOaMmeaJi+S4gOaKlei2syA8IGlra3lvc2h1aXR0b3Vzb2t1XCA7CivliIboo4Lnianos6ogPCBidW5yZXRzdWJ1c3NoaXRzdVwgOwor5pyJ5b2i5Zu65a6a6LOH55SjIDwgeXV1a2Vpa290ZWlzaGlzYW5cIDsKK+S4reWkruaUvumAgeWxgCA8IGNodXVvdWhvdXNvdWt5b2t1XCA7Civnm7TmjqXnhafmmI4gPCBjaG9rdXNldHN1c2hvdW1laVwgOwor6aOb6KGM6KiY6Yyy6KOF572uIDwgaGlrb3VraXJva3Vzb3VjaGlcIDsKK+iiq+aLheS/neWCteaoqemhjSA8IGhpdGFucG9zYWlrZW5nYWt1XCA7CivlhbHlkIznm7jntprkurogPCBreW91ZG91c291em9rdW5pblwgOwor5Zix6KiX5q665Lq6IDwgc2hva3V0YWt1c2F0c3VqaW5cIDsKK+eglOeptueZuuihqOS8miA8IGtlbmt5dXVoYXBweW91a2FpXCA7CivkuozkuqTmm7/liLblirTlg40gPCBuaWtvdXRhaXNlaXJvdWRvdVwgOwor5rm/55Sf5qSN54mpIDwgc2hpc3NlaXNob2t1YnV0c3VcIDsKK+S4g+WNgeS6uuiosyA8IHNoaWNoaWp1dW5pbicneWFrdVwgOwor5L+d5a6I57O754Sh5omA5bGeIDwgaG9zaHVrZWltdXNob3pva3VcIDsKK+WkqeS9k+WIhuWFieihkyA8IHRlbnRhaWJ1bmtvdWp1dHN1XCA7CivnkIPpnaLkuInop5Lms5UgPCBreXV1bWVuc2Fua2FrdWhvdVwgOwor6KiI6YeP57WM5riI5a2mIDwga2VpcnlvdWtlaXphaWdha3VcIDsKK+WPjei7ouWIhuW4g+S/guaVsCA8IGhhbnRlbmJ1bnB1a2Vpc3V1XCA7CivokZfkvZzmqKnkvrXlrrMgPCBjaG9zYWt1a2Vuc2hpbmdhaVwgOwor54m55Yil5byB6K235Lq6IDwgdG9rdWJldHN1YmVuZ29uaW5cIDsKK+WvjOWbveW8t+WFteetliA8IGZ1a29rdWt5b3VoZWlzYWt1XCA7CivnqbrmjLrpmY3kuIvlnLDln58gPCBrdXV0ZWlrb3VrYWNoaWlraVwgOwor5LqI5oOz5Y+O56mr6auYIDwgeW9zb3VzaHV1a2FrdWRha2FcIDsKK+eBq+WKm+aUr+aPtOmDqOmaiiA8IGthcnlva3VzaGllbmJ1dGFpXCA7CivooYDlj4vnl4XmgqPogIUgPCBrZXRzdXl1dWJ5b3VrYW5qYVwgOwor55m655mM54mp6LOqIDwgaGF0c3VnYW5idXNzaGl0c3VcIDsKK+ebtOinkuS4ieinkuW9oiA8IGNob2trYWt1c2Fua2Fra2VpXCA7Civnmb3plbfpoIjpr6ggPCBzaGlyb25hZ2FzdWt1amlyYVwgOwor6ZeH5L6h5qC85Y2U5a6aIDwgeWFtaWtha2FrdWt5b3V0ZWlcIDsKK+ims+iznuakjeeJqSA8IGthbnNob3VzaG9rdWJ1dHN1XCA7CivotaTlpJbnt5rlhpnnnJ8gPCBzZWtpZ2Fpc2Vuc2hhc2hpblwgOwor5b+D56We5Zaq5aSxIDwgc2hpbnNoaW5zb3VzaGl0c3VcIDsKK+mAmuS/l+Wwj+iqrCA8IHRzdXV6b2t1c2hvdXNldHN1XCA7CivmrYzoiJ7kvI7ljYHlhavnlaogPCBrYWJ1a2lqdXVoYWNoaWJhblwgOwor55m+5oim55m+5YudIDwgaHlha3VzZW5oeWFrdXNob3VcIDsKK+Wkqeeah+apn+mWouiqrCA8IHRlbicnbm91a2lrYW5zZXRzdVwgOwor5YWs6Ki85Lq65b255aC0IDwga291c2hvdW5pbicneWFrdWJhXCA7CivotoXnj77lrp/kuLvnvqkgPCBjaG91Z2Vuaml0c3VzaHVnaVwgOwor5LqM5qW155yf56m6566hIDwgbmlreW9rdXNoaW5rdXVrYW5cIDsKK+aPkOeBr+ihjOWIlyA8IGNob3VjaGluZ3lvdXJldHN1XCA7CivpmKrnpZ7lpKfpnIfngb0gPCBoYW5zaGluZGFpc2hpbnNhaVwgOwor5aSx5qWt5a++562WIDwgc2hpdHN1Z3lvdXRhaXNha3VcIDsKK+azleWumuW+l+elqOaVsCA8IGhvdXRlaXRva3VoeW91c3V1XCA7CivoqK3nq4votqPmhI/mm7ggPCBzZXRzdXJpdHN1c2h1aXNob1wgOwor5aSW5Zu95Lq655m76YyyIDwgZ2Fpa29rdWppbnRvdXJva3VcIDsKK+i6q+S9k+manOWus+iAhSA8IHNoaW50YWlzaG91Z2Fpc2hhXCA7CivlpKfph4/noLTlo4rlhbXlmaggPCB0YWlyeW91aGFrYWloZWlraVwgOwor5raI6LK76ICF5L+h55SoIDwgc2hvdWhpc2hhc2hpbicneW91XCA7Civlj43lsITkv4LmlbDnt5rlm7MgPCBoYW5zaGFrZWlzdXVzZW56dVwgOwor6YiN6KeS5LiJ6KeS5b2iIDwgZG9ua2FrdXNhbmtha3VrZWlcIDsKK+a1t+mbo+WvqeWIpOW6gSA8IGthaW5hbnNoaW5wYW5jaG91XCA7Civniq/nvarnmbrnlJ/njocgPCBoYW56YWloYXNzZWlyaXRzdVwgOwor5b6u55Sf54mp5a2m6ICFIDwgYmlzZWlidXRzdWdha3VzaGFcIDsKK+S4g+iJsuWUkOi+m+WtkCA8IG5hbmFpcm90b3VnYXJhc2hpXCA7CivntKDnspLlrZDliqDpgJ/lmaggPCBzb3J5dXVzaGlrYXNva3VraVwgOwor5YWs6IG36YG45oyZ5rOVIDwga291c2hva3VzZW5reW9ob3VcIDsKK+WumuW9oumDteS+v+eJqSA8IHRlaWtlaXl1dWJpbmJ1dHN1XCA7Civoh6rnlLHosr/mmJPlnLDln58gPCBqaXl1dWJvdWVraWNoaWlraVwgOwor5a++5Lit5Zu96Zai5L+CIDwgdGFpY2h1dWdva3VrYW5rZWlcIDsKK+WFrOmWi+W4guWgtOaTjeS9nCA8IGtvdWthaXNoaWpvdXNvdXNhXCA7Civnp5HlrabmioDooZPluoEgPCBrYWdha3VnaWp1dHN1Y2hvdVwgOwor5bem5YG06YCa6KGMIDwgaGlkYXJpZ2F3YXRzdXVrb3VcIDsKK+Wkp+iLseWNmueJqemkqCA8IGRhaWVpaGFrdWJ1dHN1a2FuXCA7Civli5XohIjnoazljJbnl4cgPCBkb3VteWFrdWtvdWthc2hvdVwgOwor5bid546L56We5qip6KqsIDwgdGVpb3VzaGlua2Vuc2V0c3VcIDsKK+aVkeWHuuS9nOaIpiA8IGt5dXVzaHV0c3VzYWt1c2VuXCA7CivlroflrpnlpKfniIbnmbogPCB1Y2h1dWRhaWJha3VoYXRzdVwgOwor6aaW55u45YW85aSW55u4IDwgc2h1c2hvdWtlbmdhaXNob3VcIDsKK+eUn+eJqeWcsOeQhuWtpiA8IHNlaWJ1dHN1Y2hpcmlnYWt1XCA7Civkurrouqvkv53orbfku6TnirYgPCBqaW5zaGluaG9nb3JlaWpvdVwgOwor5Y6f5a2Q54mp55CG5a2mIDwgZ2Vuc2hpYnV0c3VyaWdha3VcIDsKK+avjeWtkOWBpeW6t+aJi+W4syA8IGJvc2hpa2Vua291dGVjaG91XCA7CivnlaXlj5boqpjmi5DnvaogPCByeWFrdXNodXl1dWthaXphaVwgOwor5a6k5YaF6KOF6aO+IDwgc2hpdHN1bmFpc291c2hva3VcIDsKK+WOmueUn+W5tOmHkeS/nemZuiA8IGtvdXNlaW5lbmtpbmhva2VuXCA7Civnm7TmjqXnq7bkuokgPCBjaG9rdXNldHN1a3lvdXNvdVwgOwor5aSp5L2T54mp55CG5a2mIDwgdGVudGFpYnV0c3VyaWdha3VcIDsKK+mZjeWcp+WkieWcp+WZqCA8IGtvdWF0c3VoZW4nJ2F0c3VraVwgOwor5p2x5Y2w5bqm5Lya56S+IDwgaGlnYXNoaWluZG9nYWlzaGFcIDsKK+eJqeizquS4u+e+qeiAhSA8IGJ1c3NoaXRzdXNodWdpc2hhXCA7Civlm73pmpvnmoTosr/mmJMgPCBrb2t1c2FpdGVraWJvdWVraVwgOwor5Lit5oCn5a2Q54iG5by+IDwgY2h1dXNlaXNoaWJha3VkYW5cIDsKK+S7o+aVsOaWueeoi+W8jyA8IGRhaXN1dWhvdXRlaXNoaWtpXCA7CivlubPlnYflpKrpmb3ml6UgPCBoZWlraW50YWl5b3VqaXRzdVwgOwor5oCn6KGM54K65oSf5p+T55eHIDwgc2Vpa291aWthbnNlbnNob3VcIDsKK+aXreaXpeaYh+WkqSA8IGt5b2t1aml0c3VzaG91dGVuXCA7CivkubPlhZDmrbvkuqHnjocgPCBueXV1amlzaGlib3VyaXRzdVwgOwor5LiH5Zu95Y2a6Kan5LyaIDwgYmFua29rdWhha3VyYW5rYWlcIDsKK+mYsuihm+aWveioreW6gSA8IGJvdWVpc2hpc2V0c3VjaG91XCA7CivmnInmlpnpp5Dou4rloLQgPCB5dXVyeW91Y2h1dXNoYWpvdVwgOwor6Ieo5bqK5b+D55CG5a2mIDwgcmluc2hvdXNoaW5yaWdha3VcIDsKK+eUn+WRveS/nemZuuS8muekviA8IHNlaW1laWhva2VuZ2Fpc2hhXCA7CivlhpnnnJ/pgLHliIroqowgPCBzaGFzaGluc2h1dWthbnNoaVwgOwor56eB5pyJ6LKh55Sj5Yi25bqmIDwgc2hpeXV1emFpc2Fuc2VpZG9cIDsKK+W3qOefs+iomOW/teeJqSA8IGt5b3Nla2lraW5lbmJ1dHN1XCA7CivkuozlhYPmlrnnqIvlvI8gPCBuaWdlbmhvdXRlaXNoaWtpXCA7CivomJroi5TmpI3niakgPCBzZW50YWlzaG9rdWJ1dHN1XCA7CivpgZPnvqnnmoTosqzku7sgPCBkb3VnaXRla2lzZWtpbmluXCA7CivnjYXlrZDllJDovpvlrZAgPCBzaGlzaGl0b3VnYXJhc2hpXCA7CivnoJTnqbblrqTmo58gPCBrZW5reXV1c2hpdHN1dG91XCA7CivmsJfosaHoprPmuKzoiLkgPCBraXNob3VrYW5zb2t1c2VuXCA7Civou73lj6PoqbEgPCBrYXJ1a3VjaGliYW5hc2hpXCA7CivkurrnjL/lkIznpZboqqwgPCBqaW4nJ2VuZG91c29zZXRzdVwgOwor5Zuj5L2T5Lqk5riJ5qipIDwgZGFudGFpa291c2hvdWtlblwgOwor5a++5Lq65oGQ5oCW55eHIDwgdGFpamlua3lvdWZ1c2hvdVwgOwor6ISz6ISK6auE6Iac54KOIDwgbm91c2VraXp1aW1ha3VlblwgOwor6KaB5rOo5oSP5Lq654mpIDwgeW91Y2h1dWlqaW5idXRzdVwgOwor5a2m5qCh5pWZ6IKy5rOVIDwgZ2Fra291a3lvdWlrdWhvdVwgOwor6KW/5YG06Ku45Zu9IDwgbmlzaGlnYXdhc2hva29rdVwgOwor546L5qip56We5o6I6KqsIDwgb3VrZW5zaGluanVzZXRzdVwgOwor55yf6YOo5YiG6ZuG5ZCIIDwgc2hpbmJ1YnVuc2h1dWdvdVwgOwor54us5Y2g56aB5q2i5rOVIDwgZG9rdXNlbmtpbnNoaWhvdVwgOwor6ISK5qSO5YuV54mpIDwgc2VraXRzdWlkb3VidXRzdVwgOwor5bGF6ZaT5YW85a+d5a6kIDwgaW1ha2Vuc2hpbnNoaXRzdVwgOwor5qGR5Y6f5qGR5Y6fIDwga3V3YWJhcmFrdXdhYmFyYVwgOwor5YWs56ew6LOH5pys6YeRIDwga291c2hvdXNoaWhvbmtpblwgOwor6Zu75YuV55m65YuV5qmfIDwgZGVuZG91aGF0c3Vkb3VraVwgOwor5b+c55So54mp55CG5a2mIDwgb3V5b3VidXRzdXJpZ2FrdVwgOwor5Lqr5qW955Sf5rS7IDwga3lvdXJha3VzZWlrYXRzdVwgOwor5YWl5Yqb6Zu75rWBIDwgbnl1dXJ5b2t1ZGVucnl1dVwgOwor5LiJ5Y2B5YWr5bqm57eaIDwgc2FuanV1aGFjaGlkb3NlblwgOwor5Y2B5bm05LiA5pelIDwganV1bmVuJydpY2hpaml0c3VcIDsKK+iqjeefpeW/g+eQhuWtpiA8IG5pbmNoaXNoaW5yaWdha3VcIDsKK+miqOS/l+Wwj+iqrCA8IGZ1dXpva3VzaG91c2V0c3VcIDsKK+S9juihgOWcp+eXhyA8IHRlaWtldHN1YXRzdXNob3VcIDsKK+W3pealreaJgOacieaoqSA8IGtvdWd5b3VzaG95dXVrZW5cIDsKK+WkmuWkiemHj+ino+aekCA8IHRhaGVucnlvdWthaXNla2lcIDsKK+iZmuOAheWun+OAhSA8IGt5b2t5b2ppdHN1aml0c3VcIDsKK+a4hea2vOmjsuaWmeawtCA8IHNlaXJ5b3VpbnJ5b3VzdWlcIDsKK+aKgOihk+WNlOWKmyA8IGdpanV0c3VreW91cnlva3VcIDsKK+epuuS4reihneeqgSA8IGt1dWNodXVzaG91dG90c3VcIDsKK+S4gOWbveS4gOWFmuS4u+e+qSA8IGlra29rdWl0dG91c2h1Z2lcIDsKK+aXpeacrOmBk+i3r+WFrOWboyA8IG5paG9uZG91cm9rb3VkYW5cIDsKK+mHkeWIqeeUn+a0u+iAhSA8IGtpbnJpc2Vpa2F0c3VzaGFcIDsKK+WNg+evh+S4gOW+iyA8IHNlbnBlbicnaWNoaXJpdHN1XCA7CivmlpnnkIbmlZnlrqQgPCByeW91cmlreW91c2hpdHN1XCA7CivpgbroqIDln7fooYzogIUgPCB5dWlnb25zaGlra291c2hhXCA7CivmnKzmoLzlsI/oqqwgPCBob25rYWt1c2hvdXNldHN1XCA7Civosr/mmJPlpJblj47mlK8gPCBib3Vla2lnYWlzaHV1c2hpXCA7Civlm73nq4vliofloLQgPCBrb2t1cml0c3VnZWtpam91XCA7Civlrp/ot7XnkIbmgKfmibnliKQgPCBqaXNzZW5yaXNlaWhpaGFuXCA7Civmn5PoibLkvZPlnLDlm7MgPCBzZW5zaG9rdXRhaWNoaXp1XCA7CivkuLvluK3noJTnqbblk6EgPCBzaHVzZWtpa2Vua3l1dWluXCA7Civpq5jpgJ/luqblhpnnnJ8gPCBrb3Vzb2t1ZG9zaGFzaGluXCA7CivojYnpo5/li5XniakgPCBzb3VzaG9rdWRvdWJ1dHN1XCA7Civpq5jmrKHmlrnnqIvlvI8gPCBrb3VqaWhvdXRlaXNoaWtpXCA7Civlvq7liIbmlrnnqIvlvI8gPCBiaWJ1bmhvdXRlaXNoaWtpXCA7Civnm7TmjqXpgbjmjJkgPCBjaG9rdXNldHN1c2Vua3lvXCA7Civpg7Xkvr/np4Hmm7jnrrEgPCB5dXViaW5zaGlzaG9iYWtvXCA7CivmlpzmoLzmgKfntbHlvqEgPCBzaGFrYWt1c2VpdG91Z3lvXCA7CivntYzlj6Ppgb/lporolqwgPCBrZWlrb3VoaW5pbicneWFrdVwgOwor5Lq65p2Q6ZaL55m66YOoIDwgamluemFpa2FpaGF0c3VidVwgOwor5aSa6YeN5ZCN5YmN56m66ZaTIDwgdGFqdXVuYW1hZWt1dWthblwgOwor55Sf6ICF5b+F5ruFIDwgc2hvdWphaGl0c3VtZXRzdVwgOwor54ax5biv5qSN54mpIDwgbmV0dGFpc2hva3VidXRzdVwgOwor5LiH5Zu95qiZ5rqW5pmCIDwgYmFua29rdWh5b3VqdW5qaVwgOwor5p2+5LiL6Zu75belIDwgbWF0c3VzaGl0YWRlbmtvdVwgOwor6Ziy6KGb5bqB6ZW35a6YIDwgYm91ZWljaG91Y2hvdWthblwgOwor5ZCr5rC05YyW5ZCI54mpIDwgZ2Fuc3Vpa2Fnb3VidXRzdVwgOwor6Zai5p2x5aSn6ZyH54G9IDwga2FudG91ZGFpc2hpbnNhaVwgOwor5ZWG5qWt566X6KGTIDwgc2hvdWd5b3VzYW5qdXRzdVwgOwor6KOF55Sy5Zue5Y+O6LuKIDwgc291a291a2Fpc2h1dXNoYVwgOwor5Zyw5pa56KGM6LKh5pS/IDwgY2hpaG91Z3lvdXphaXNlaVwgOwor5oCn6KGo54++5oOF5aCxIDwgc2VpaHlvdWdlbmpvdWhvdVwgOwor5oim5oim5qCX5qCXIDwgc2Vuc2Vucml0c3VyaXRzdVwgOwor5biM5pyb55qE6Kaz5risIDwga2lib3V0ZWtpa2Fuc29rdVwgOwor5Y+N5bCE5rib6KGw6YePIDwgaGFuc2hhZ2Vuc3VpcnlvdVwgOwor5o+u55m654mp6LOqIDwga2loYXRzdWJ1c3NoaXRzdVwgOwor5aSJ5oWL5b+D55CG5a2mIDwgaGVudGFpc2hpbnJpZ2FrdVwgOwor55m65YWJ5qSN54mpIDwgaGFra291c2hva3VidXRzdVwgOwor5qyn5bee5YWx5ZCM5L2TIDwgb3VzaHV1a3lvdWRvdXRhaVwgOwor57Sr5aSW57ea55mC5rOVIDwgc2hpZ2Fpc2VucnlvdWhvdVwgOwor6Z2e5q2m6KOF5Lit56uLIDwgaGlidXNvdWNodXVyaXRzdVwgOwor5Li75bit5aSW5Lqk5a6YIDwgc2h1c2VraWdhaWtvdWthblwgOwor57Sw6IOe6LOq6YG65LydIDwgc2FpYm91c2hpdHN1aWRlblwgOwor5YWx55Sj5YWa5a6j6KiAIDwga3lvdXNhbnRvdXNlbmdlblwgOwor6Zu75Yqb5L6b57WmIDwgZGVucnlva3VreW91a3l1dVwgOwor5beh5Zue6Ki655mC5omAIDwganVua2Fpc2hpbnJ5b3Vqb1wgOwor5rqQ5rOJ5omA5b6X56iOIDwgZ2Vuc2Vuc2hvdG9rdXplaVwgOwor57WE6IG35Yq05YON6ICFIDwgc29zaG9rdXJvdWRvdXNoYVwgOwor5Yq05YON6ICF6ZqO57SaIDwgcm91ZG91c2hha2Fpa3l1dVwgOwor5oim55Wl54iG5pKDIDwgc2Vucnlha3ViYWt1Z2VraVwgOwor5aaK5aig5Lit57W2IDwgbmluc2hpbmNodXV6ZXRzdVwgOwor5ouh5aSn5YaN55Sf55SjIDwga2FrdWRhaXNhaXNlaXNhblwgOwor5bmz5ZKM57at5oyB5rS75YuVIDwgaGVpd2FpamlrYXRzdWRvdVwgOwor5LiK57Sa6KOB5Yik5omAIDwgam91a3l1dXNhaWJhbnNob1wgOwor56aB5qyy5Li7576p6ICFIDwga2luJyd5b2t1c2h1Z2lzaGFcIDsKK+eJueauiua9nOiIquiJhyA8IHRva3VzaHVzZW5rb3V0ZWlcIDsKK+acgOaBteWbveW+hemBhyA8IHNhaWtlaWtva3V0YWlndXVcIDsKK+WFseeUo+S4u+e+qeWbvSA8IGt5b3VzYW5zaHVnaWtva3VcIDsKK+WOn+WRiuWvvuiiq+WRiiA8IGdlbmtva3V0YWloaWtva3VcIDsKK+WPl+iol+WPjuizhOe9qiA8IGp1dGFrdXNodXV3YWl6YWlcIDsKK+a1geihjOaAp+aEn+WGkiA8IHJ5dXVrb3VzZWlrYW5ib3VcIDsKK+Wbveawkee3j+eUn+eUoyA8IGtva3VtaW5zb3VzZWlzYW5cIDsKK+S4rei3nembouertui1sCA8IGNodXVreW9yaWt5b3Vzb3VcIDsKK+WFqOWbveeahOevhOWbsiA8IHplbmtva3V0ZWtpaGFuJydpXCA7CivpgKPpgqblhbHlkozlm70gPCByZW5wb3VreW91d2Frb2t1XCA7Civmma7pgY3nmoTms5XliYcgPCBmdWhlbnRla2lob3Vzb2t1XCA7CivlpKfntbHpoJjpgbjmjJkgPCBkYWl0b3VyeW91c2Vua3lvXCA7CivkuozljbXmgKflj4znlJ/lhZAgPCBuaXJhbnNlaXNvdXNlaWppXCA7Civml6XnjLblkIznpZboq5YgPCBuaWNoaXl1dWRvdXNvcm9uXCA7CivkuKHmm7/miYvmlbDmlpkgPCByeW91Z2FldGVzdXVyeW91XCA7Civos4fmnKzliKnnm4rnjocgPCBzaGlob25yaWVraXJpdHN1XCA7CivorbDpmaLpgYvllrblp5Tlk6HkvJogPCBnaWluJyd1bicnZWlpaW5rYWlcIDsKK+aIpui7iuaPmumZuOiJpiA8IHNlbnNoYXlvdXJpa3VrYW5cIDsKK+S4u+i+nue0oOaAp+imj+e0hCA8IHNodWppc29zZWlraXlha3VcIDsKK+Wls+aAp+ino+aUvumBi+WLlSA8IGpvc2Vpa2FpaG91dW5kb3VcIDsKK+WjsuaYpemYsuatouazlSA8IGJhaXNodW5ib3VzaGlob3VcIDsKK+WFieWMluWtpuWPjeW/nCA8IGtvdWthZ2FrdWhhbicnbm91XCA7Civnm7TmjqXkvJroq4cgPCBjaG9rdXNldHN1a2FpZGFuXCA7CivlibLlopfos4Pph5EgPCB3YXJpbWFzaGljaGluZ2luXCA7Civou43kuovlvZPlsYDogIUgPCBndW5qaXRvdWt5b2t1c2hhXCA7CivogonkvZPlirTlg43ogIUgPCBuaWt1dGFpcm91ZG91c2hhXCA7Civoh6rkuLvmtYHpgJrnsbMgPCBqaXNodXJ5dXV0c3V1bWFpXCA7CivkvZzku5jpnaLnqY0gPCBzYWt1ZHp1a2VtZW5zZWtpXCA7Civml6Xni6zljZTkvJogPCBuaWNoaWRva3VreW91a2FpXCA7Civml6XluLjnlJ/mtLsgPCBuaWNoaWpvdXNlaWthdHN1XCA7CivnrKzkuIDmrKHnlKPmpa0gPCBkYWlpY2hpamlzYW5neW91XCA7Civlrp/lrZjkuLvnvqnogIUgPCBqaXRzdXpvbnNodWdpc2hhXCA7CivmrbPlhaXmrbPlh7ogPCBzYWlueXV1c2Fpc2h1dHN1XCA7CivnibnliKXmgKXooYwgPCB0b2t1YmV0c3VreXV1a291XCA7Civnj77lrp/kuLvnvqnogIUgPCBnZW5qaXRzdXNodWdpc2hhXCA7Civlj43mlL/lupzli6LlipsgPCBoYW5zZWlmdXNlaXJ5b2t1XCA7CivlhY3nlqvkuI3lhajnl4cgPCBtZW4nJ2VraWZ1emVuc2hvdVwgOwor6Lui5Ye66Ki85piOIDwgdGVuc2h1dHN1c2hvdW1laVwgOwor5Y2B6YCy5YiG6aGe5rOVIDwgamlzc2hpbmJ1bnJ1aWhvdVwgOwor5YG25YOP5pWZ5b6S55qEIDwgZ3V1em91a3lvdXRvdGVraVwgOwor57SF55m95q2M5ZCI5oimIDwga291aGFrdXV0YWdhc3NlblwgOwor57WM5riI56CU56m25omAIDwga2VpemFpa2Vua3l1dXNob1wgOwor6LuN5LqL6YCa5L+h5ZOhIDwgZ3Vuaml0c3V1c2hpbicnaW5cIDsKK+Wfuua6luWGheizg+mHkSA8IGtpanVuJyduYWljaGluZ2luXCA7CivnnIzluoHmiYDlnKjlnLAgPCBrZW5jaG91c2hvemFpY2hpXCA7CivmlZHojZLkvZzniakgPCBreXV1a291c2FrdW1vdHN1XCA7CivnnJ/lrpflpKfosLfmtL4gPCBzaGluc2h1dW9vdGFuaWhhXCA7CivlnLDnhrHnmbrpm7sgPCBjaGluZXRzdWhhdHN1ZGVuXCA7CivolqzniannmYLms5UgPCB5YWt1YnV0c3VyeW91aG91XCA7Civlho3lhaXlm73oqLHlj68gPCBzYWlueXV1a29rdWt5b2thXCA7Civoi7Hlm73lm73mlZnkvJogPCBlaWtva3Vrb2treW91a2FpXCA7Civpo5/ns6fphY3ntaYgPCBzaG9rdXJ5b3VoYWlreXV1XCA7Civngq3phbjlkIzljJbkvZznlKggPCB0YW5zYW5kb3VrYXNheW91XCA7CivmuIXmlZnlvpLpnanlkb0gPCBzZWlreW91dG9rYWt1bWVpXCA7CivlpKrpmb3npZ7ntYzlj6IgPCB0YWl5b3VzaGlua2Vpc291XCA7Civnm7Tns7vooYDml48gPCBjaG9ra2Vpa2V0c3V6b2t1XCA7Civos6rllY/nlKjntJkgPCBzaGl0c3Vtb24nJ3lvdXNoaVwgOwor57WM5Za25a2m5L+u5aOrIDwga2VpZWlnYWt1c2h1dXNoaVwgOwor5YGl5bq36Ki85piO5pu4IDwga2Vua291c2hvdW1laXNob1wgOwor56S+5Lya5b+D55CG5a2mIDwgc2hha2Fpc2hpbnJpZ2FrdVwgOwor5LqM5aSn5pS/5YWa5Li7576pIDwgbmlkYWlzZWl0b3VzaHVnaVwgOwor54us6Lqr55Sf5rS7IDwgZG9rdXNoaW5zZWlrYXRzdVwgOwor6K2m5a+f5b2T5bGAIDwga2Vpc2F0c3V0b3VreW9rdVwgOwor5YWs5YWx5LyB5qWt5L2TIDwga291a3lvdWtpZ3lvdXRhaVwgOwor55u05o6l5Lyd5p+TIDwgY2hva3VzZXRzdWRlbnNlblwgOwor6YO95biC5YaN6ZaL55m6IDwgdG9zaGlzYWlrYWloYXRzdVwgOwor6Z2S56m65pWZ5a6kIDwgYW96b3Jha3lvdXNoaXRzdVwgOwor5pS+5bCE57ea55mC5rOVIDwgaG91c2hhc2VucnlvdWhvdVwgOwor5Zu96YCj5YiG5ouF6YeRIDwga29rdXJlbmJ1bnRhbmtpblwgOwor6Z2e5auh5Ye65a2QIDwgaGljaGFrdXNodXRzdXNoaVwgOwor55Sf5rS75qeY5byPIDwgc2Vpa2F0c3V5b3VzaGlraVwgOwor5a6a5pyf5YiK6KGM54mpIDwgdGVpa2lrYW5rb3VidXRzdVwgOwor5pS75pKD6ZaL5aeL57eaIDwga291Z2VraWthaXNoaXNlblwgOwor5bmz6Z2i5LiJ6KeS5rOVIDwgaGVpbWVuc2Fua2FrdWhvdVwgOwor5rOV5a6a5Lyd5p+T55eFIDwgaG91dGVpZGVuc2VuYnlvdVwgOwor54mH6YGT5paZ6YeRIDwga2F0YW1pY2hpcnlvdWtpblwgOwor5Y6f5rK55rWB5Ye6IDwgZ2VuJyd5dXJ5dXVzaHV0c3VcIDsKK+eVpeW8j+WRveS7pCA8IHJ5YWt1c2hpa2ltZWlyZWlcIDsKK+iKuOihk+a0u+WLlSA8IGdlaWp1dHN1a2F0c3Vkb3VcIDsKK+S4ieWPieelnue1jOeXmyA8IHNhbnNhc2hpbmtlaXRzdXVcIDsKK+attOWPsuWTsuWtpiA8IHJla2lzaGl0ZXRzdWdha3VcIDsKK+WEquWLneaxuuWumuaIpiA8IHl1dXNob3VrZXR0ZWlzZW5cIDsKK+S4i+eUuuiogOiRiSA8IHNoaXRhbWFjaGlrb3RvYmFcIDsKK+acgOS9jueUn+a0u+iyuyA8IHNhaXRlaXNlaWthdHN1aGlcIDsKK+S4jee0lOeVsOaAp+S6pOmBiiA8IGZ1anVuJydpc2Vpa291eXV1XCA7Civpqqjnmq7nrYvlj7PooZvploAgPCBob25la2F3YXN1amllbW9uXCA7CivlupznnIzliKXkurrlj6MgPCBmdWtlbmJldHN1amlua291XCA7Civnt4rmgKXnnYDpmbggPCBraW5reXV1Y2hha3VyaWt1XCA7Civmjqjlrprnm7jntprkurogPCBzdWl0ZWlzb3V6b2t1bmluXCA7CivlhrfooYDli5XniakgPCByZWlrZXRzdWRvdWJ1dHN1XCA7CivlpJrlm73nsY3kvIHmpa0gPCB0YWtva3VzZWtpa2lneW91XCA7Civlj5bmibHms6jmhI8gPCB0b3JpYXRzdWthaWNodXVpXCA7CivmtYXplpPlsbHojZjkuovku7YgPCBhc2FtYXNhbnNvdWppa2VuXCA7CivmmbTkuIDmmYLlsI/pm6ggPCBoYXJlaWNoaWppa29zYW1lXCA7CivlibLlopfmlpnph5EgPCB3YXJpbWFzaGlyeW91a2luXCA7CivlraPnr4DlirTlg43ogIUgPCBraXNldHN1cm91ZG91c2hhXCA7CivkuK3lsI/oq7jlm73lrrYgPCBjaG91c2hvdXNob2tva2thXCA7CivkuI3lubPnrYnmnaHntIQgPCBmdWJ5b3Vkb3Vqb3V5YWt1XCA7Civnm7TmiKrnsKHmmI4gPCBjaG9rdXNldHN1a2FubWVpXCA7Civpu4TpgZPlkInml6UgPCBrb3Vkb3VraWNoaW5pY2hpXCA7CivmnIDkvY7os4Pph5HliLYgPCBzYWl0ZWljaGluZ2luc2VpXCA7CivluJ3lm73kuLvnvqnnmoQgPCB0ZWlrb2t1c2h1Z2l0ZWtpXCA7CivkuIDop6bljbPnmbogPCBpc3Nob2t1c29rdWhhdHN1XCA7CivljbPml6XplovnpaggPCBzb2t1aml0c3VrYWloeW91XCA7CivmpI3nianos6ogPCBzaG9rdWJ1dHN1c2hpdHN1XCA7CivntI3nqI7pgJrnn6Xmm7ggPCBub3V6ZWl0c3V1Y2hpc2hvXCA7CivplqLnqI7libLlvZPliLYgPCBrYW56ZWl3YXJpYXRlc2VpXCA7Civlrp/os6ros4Pph5EgPCBqaXNzaGl0c3VjaGluZ2luXCA7CivlsYXkvY/oqLzmmI7mm7ggPCBreW9qdXVzaG91bWVpc2hvXCA7CivlpKfkvb/ntJrkvJroq4cgPCB0YWlzaGlreXV1a2FpZGFuXCA7CivmlZnppIrlsI/oqqwgPCBreW91eW91c2hvdXNldHN1XCA7CivmsJHkuLvmtLvli5XlrrYgPCBtaW5zaHVrYXRzdWRvdWthXCA7CivlrqLlk6HnoJTnqbblk6EgPCBreWFrdWlua2Vua3l1dWluXCA7Civmir3osaHoirjooZMgPCBjaHV1c2hvdWdlaWp1dHN1XCA7Civnm7TmjqXmlK/phY0gPCBjaG9rdXNldHN1c2hpaGFpXCA7CivnkrDlooPkv53orbfkuLvnvqkgPCBrYW5reW91aG9nb3NodWdpXCA7CivkuJbnlYzosr/mmJPmqZ/plqIgPCBzZWthaWJvdWVraWtpa2FuXCA7CivmlK/mjIHlipvkv4LmlbAgPCBzaGlqaXJ5b2t1a2Vpc3V1XCA7Civnm7TkuIvlnovlnLDpnIcgPCBjaG9ra2FnYXRhamlzaGluXCA7CivmnKrop6PmsbrllY/poYwgPCBtaWthaWtldHN1bW9uZGFpXCA7Civlu7rnr4nln7rmupbms5UgPCBrZW5jaGlrdWtpanVuaG91XCA7CivnhKHlvaLlm7rlrpros4fnlKMgPCBtdWtlaWtvdGVpc2hpc2FuXCA7Civnn6XnmoTmiYDmnInmqKkgPCBjaGl0ZWtpc2hveXV1a2VuXCA7Civogbfmpa3lronlrprmiYAgPCBzaG9rdWd5b3VhbnRlaWpvXCA7CivlhbHnlKPlhZrntLDog54gPCBreW91c2FudG91c2FpYm91XCA7CivkuIDlubTnlJ/ojYnmnKwgPCBpY2hpbmVuc2Vpc291aG9uXCA7CivmnaHntITliqDnm5/lm70gPCBqb3V5YWt1a2FtZWlrb2t1XCA7Civnq4vmraPkvbzmiJDkvJogPCByaXNzaG91a291c2Vpa2FpXCA7Civpm4blm6PlsLHogbcgPCBzaHV1ZGFuc2h1dXNob2t1XCA7CivlhbHoprPnpo/pn7Pmm7ggPCBreW91a2FuZnVrdWluc2hvXCA7CivmsLTnlJ/mpI3niakgPCBzdWlzZWlzaG9rdWJ1dHN1XCA7Civlrr/nm7TlrqQgPCBzaHVrdWNob2t1c2hpdHN1XCA7Civpq5jmiYDmgZDmgJbnl4cgPCBrb3VzaG9reW91ZnVzaG91XCA7CivmlrDogZ7osqnlo7LlupcgPCBzaGluYnVuaGFuYmFpdGVuXCA7CivovrLmnpfmsLTnlKPnnIEgPCBub3VyaW5zdWlzYW5zaG91XCA7CivkuozogIXpgbjkuIDms5UgPCBuaXNoYXNlbicnaXRzdWhvdVwgOwor5aKD55WM5YCk5ZWP6aGMIDwga3lvdWthaWNoaW1vbmRhaVwgOwor56S+5Lya5Lq66YeO55CDIDwgc2hha2FpamluJyd5YWt5dXVcIDsKK+iBt+WLmeizquWVjyA8IHNob2t1bXVzaGl0c3Vtb25cIDsKK+S5vueUn+akjeeJqSA8IGthbnNlaXNob2t1YnV0c3VcIDsKK+iPnOmjn+S4u+e+qeiAhSA8IHNhaXNob2t1c2h1Z2lzaGFcIDsKK+Wuv+aziuioreWCmSA8IHNodWt1aGFrdXNldHN1YmlcIDsKK+Wbveeri+Wkp+WtpiA8IGtva3VyaXRzdWRhaWdha3VcIDsKK+S4gOiogOS6jOiogCA8IGhpdG9rb3RvZnV0YWtvdG9cIDsKK+i7jeeUo+ikh+WQiOS9kyA8IGd1bnNhbmZ1a3Vnb3V0YWlcIDsKK+eyvuelnuWMu+WtpuiAhSA8IHNlaXNoaW4nJ2lnYWt1c2hhXCA7CivntYzmuIjkvIHnlLvluoEgPCBrZWl6YWlraWtha3VjaG91XCA7CivlhYjnq6/mlK/mjIHlipsgPCBzZW50YW5zaGlqaXJ5b2t1XCA7Civkv53lgaXniannkIblraYgPCBob2tlbmJ1dHN1cmlnYWt1XCA7CivmraPpnaLooZ3nqoEgPCBzaG91bWVuc2hvdXRvdHN1XCA7CivliIbop6Pokrjmupzms5UgPCBidW5rYWlqb3VyeXV1aG91XCA7CivoqIjph4/oqIDoqp7lraYgPCBrZWlyeW91Z2VuZ29nYWt1XCA7CivlnLDln5/mjK/oiIjliLggPCBjaGlpa2lzaGlua291a2VuXCA7CivmgKXpgLLkuLvnvqnogIUgPCBreXV1c2hpbnNodWdpc2hhXCA7CivkuIDml6XljYPnp4sgPCBpY2hpbmljaGlzZW5zaHV1XCA7CivkuqTpgJrpgYvovLjmpa0gPCBrb3V0c3V1dW4nJ3l1Z3lvdVwgOwor5ZWG5qWt55uu55qEIDwgc2hvdWd5b3Vtb2t1dGVraVwgOwor54Sh5Yi26ZmQ5L6b57WmIDwgbXVzZWlnZW5reW91a3l1dVwgOwor57Wm5LiO5omA5b6X6ICFIDwga3l1dXlvc2hvdG9rdXNoYVwgOwor5oim6ZeY54iG5pKD5qmfIDwgc2VudG91YmFrdWdla2lraVwgOwor6KSH5byP5a2m57SaIDwgZnVrdXNoaWtpZ2Fra3l1dVwgOwor5p6X5qWt6Kmm6aiT5aC0IDwgcmluZ3lvdXNoaWtlbmpvdVwgOwor5Y2S5qWt6Ki85pu4IDwgc290c3VneW91c2hvdXNob1wgOwor5pOy5by+55m65bCE562SIDwgdGVraWRhbmhhc3NoYXRvdVwgOwor55Sj6LuN6KSH5ZCI5L2TIDwgc2FuZ3VuZnVrdWdvdXRhaVwgOwor5pyA5aSn5YWs57SE5pWwIDwgc2FpZGFpa291eWFrdXN1dVwgOwor5Zu95YaF5raI6LK756iOIDwga29rdW5haXNob3VoaXplaVwgOwor5bCR5bm05a+p5Yik5omAIDwgc2hvdW5lbnNoaW5wYW5qb1wgOwor54S86IKJ5a6a6aOfIDwgeWFraW5pa3V0ZWlzaG9rdVwgOwor5rWB6KGM5oCn6IKd54KOIDwgcnl1dWtvdXNlaWthbicnZW5cIDsKK+ihqOmdouW8teWKmyA8IGh5b3VtZW5jaG91cnlva3VcIDsKK+a6lua6luaxuuWLneaIpiA8IGp1bmp1bmtlc3Nob3VzZW5cIDsKK+S4jeWujOWFqOeHg+eEvCA8IGZ1a2FuemVuJyduZW5zaG91XCA7Civljp/lrZDlipvmmYLku6MgPCBnZW5zaGlyeW9rdWppZGFpXCA7CivovrLmpa3oqabpqJPloLQgPCBub3VneW91c2hpa2Vuam91XCA7Civpq5jpgJ/luqbmkq7lvbEgPCBrb3Vzb2t1ZG9zYXRzdWVpXCA7CivnibnliKXnlarntYQgPCB0b2t1YmV0c3ViYW5ndW1pXCA7Civlrabnv5Log73lipsgPCBnYWt1c2h1dW5vdXJ5b2t1XCA7Civlpb3msJfmgKfnlJ/niakgPCBrb3VraXNlaXNlaWJ1dHN1XCA7Civlrrbluq3lhoXmmrTlipsgPCBrYXRlaW5haWJvdXJ5b2t1XCA7Civkv6HnlKjlj5blvJUgPCBzaGluJyd5b3V0b3JpaGlraVwgOwor6Z+z5aOw5aSa6YeN5pS+6YCBIDwgb25zZWl0YWp1dWhvdXNvdVwgOwor6auY6KGA5Zyn55eHIDwga291a2V0c3VhdHN1c2hvdVwgOwor5Zyo57GN5bCC5b6T6ICFIDwgemFpc2VraXNlbmp1dXNoYVwgOwor5LiA5Y+j6KmxIDwgaGl0b2t1Y2hpYmFuYXNoaVwgOwor5a6Y6LK755WZ5a2m55SfIDwga2FucGlyeXV1Z2FrdXNlaVwgOwor5Y2X5YyX5pyd5pmC5LujIDwgbmFuYm9rdWNob3VqaWRhaVwgOwor5q275Lqh6Ki65pat5pu4IDwgc2hpYm91c2hpbmRhbnNob1wgOwor5bym5qW95Zub6YeN5aWPIDwgZ2VuZ2FrdXNoaWp1dXNvdVwgOwor5Luy6KOB6KOB5Yik5omAIDwgY2h1dXNhaXNhaWJhbnNob1wgOwor55CG6KuW54mp55CG5a2mIDwgcmlyb25idXRzdXJpZ2FrdVwgOwor5YWo6Iis5YmN5ZOo57eaIDwgemVucGFuemVuc2hvdXNlblwgOwor562N55Sf5rS7IDwgdGFrZW5va29zZWlrYXRzdVwgOwor5Y2B5LqM5oyH6IW46JmrIDwganV1bmlzaGljaG91Y2h1dVwgOwor5Lit5b+D5Lq654mpIDwgY2h1dXNoaW5qaW5idXRzdVwgOwor5Zyf5pyo5bel5a2m6ICFIDwgZG9ib2t1a291Z2FrdXNoYVwgOwor6aOf5paZ5ZOB5ZWGIDwgc2hva3VyeW91aGluc2hvdVwgOwor5pel5Lit6Z+T57Wx5ZCIIDwgbml0Y2h1dWthbnRvdWdvdVwgOwor5ouh5by15YCN57K+5bqmIDwga2FrdWNob3ViYWlzZWlkb1wgOwor5Yq05YON5Y+O5a655omAIDwgcm91ZG91c2h1dXlvdXNob1wgOwor6LaF54++5a6f55qEIDwgY2hvdWdlbmppdHN1dGVraVwgOwor5Y2z6Lqr5oiQ5LuPIDwgc29rdXNoaW5qb3VidXRzdVwgOwor5Zu95aSW6ISx5Ye6IDwga29rdWdhaWRhc3NodXRzdVwgOwor54Sh552A6Zm46aOb6KGMIDwgbXVjaGFrdXJpa3VoaWtvdVwgOwor5pel5LuY5aSJ5pu057eaIDwgaGlkenVrZWhlbmtvdXNlblwgOwor55u05o6l5Zue562UIDwgY2hva3VzZXRzdWthaXRvdVwgOwor5b2T5LqL6ICF6IO95YqbIDwgdG91amlzaGFub3VyeW9rdVwgOwor6ISz5oCn5bCP5YWQ6bq755e6IDwgbm91c2Vpc2hvdW5pbWFoaVwgOwor5YWI54mp5Y+W5byVIDwgc2FraW1vbm90b3JpaGlraVwgOwor5aSn5p2x5Lqc5YWx5qCE5ZyPIDwgZGFpdG91YWt5b3VlaWtlblwgOwor5q205Y+y5bCP6KqsIDwgcmVraXNoaXNob3VzZXRzdVwgOwor54Wu5rK45raI5q+SIDwgc2hhZnV0c3VzaG91ZG9rdVwgOwor5rW35aSW6YCy5Ye6IDwga2FpZ2Fpc2hpbnNodXRzdVwgOwor5rC05Yqb55m66Zu7IDwgc3Vpcnlva3VoYXRzdWRlblwgOwor5pCN55uK6KiI566X5pu4IDwgc29uJydla2lrZWlzYW5zaG9cIDsKK+Wwj+WjsueJqeS+oeaMh+aVsCA8IGtvdXJpYnVra2FzaGlzdXVcIDsKK+aApeihjOWBnOi7iumnhSA8IGt5dXVrb3V0ZWlzaGFla2lcIDsKK+WPjeakjeawkeS4u+e+qSA8IGhhbnNob2t1bWluc2h1Z2lcIDsKK+alteS9jua4qeenkeWtpiA8IGt5b2t1dGVpb25rYWdha3VcIDsKK+iHqueUseS4u+e+qee1jOa4iCA8IGppeXV1c2h1Z2lrZWl6YWlcIDsKK+WGmeecn+acm+mBoOmPoSA8IHNoYXNoaW5ib3Vlbmt5b3VcIDsKK+W9ouizquWwjuWFpSA8IGtlaXNoaXRzdWRvdW55dXVcIDsKK+WmmeazleiTruiPr+e1jCA8IG15b3Vob3VyZW5nZWt5b3VcIDsKK+Wun+eUqOS4u+e+qeiAhSA8IGppdHN1eW91c2h1Z2lzaGFcIDsKK+W+jOaWuemAo+e1oee3miA8IGtvdWhvdXJlbnJha3VzZW5cIDsKK+Wun+mok+W/g+eQhuWtpiA8IGppa2tlbnNoaW5yaWdha3VcIDsKK+WknOmWk+mgkOmHkeOAheW6qyA8IHlha2FuJyd5b2tpbmtpbmtvXCA7Civnm7TmjqXplqLkv4IgPCBjaG9rdXNldHN1a2Fua2VpXCA7CivmjK/mm7/kvJHml6UgPCBmdXJpa2Fla3l1dWppdHN1XCA7CivpgKPpgqbmupblgpnliLbluqYgPCByZW5wb3VqdW5iaXNlaWRvXCA7Civpg7Xkvr/lsI/ljIUgPCB5dXViaW5rb2R6dXRzdW1pXCA7CivkuI3ms5XlhaXlm73ogIUgPCBmdWhvdW55dXVrb2t1c2hhXCA7CivljZjkuIDnpZ7mlZkgPCB0YW4nJ2l0c3VzaGlua3lvdVwgOwor6Jma5byx5L2T6LOqIDwga3lvamFrdXRhaXNoaXRzdVwgOwor5aSa5YWD5pa556iL5byPIDwgdGFnZW5ob3V0ZWlzaGlraVwgOwor5Zu95YaF57eP55Sf55SjIDwga29rdW5haXNvdXNlaXNhblwgOwor6ISK57Si5YuV54mpIDwgc2VraXNha3Vkb3VidXRzdVwgOwor5q2m5Yqb6KGd56qBIDwgYnVyeW9rdXNob3V0b3RzdVwgOwor54ax5qC45Y+N5b+cIDwgbmV0c3VrYWt1aGFuJydub3VcIDsKK+mJhOmBk+WFrOWuieWumCA8IHRldHN1ZG91a291YW5rYW5cIDsKK+eoruWtkOakjeeJqSA8IHNodXNoaXNob2t1YnV0c3VcIDsKK+W5s+WPsOWei+iyqOi7iiA8IGhpcmFkYWlnYXRha2FzaGFcIDsKK+S6uuensOS7o+WQjeipniA8IG5pbnNob3VkYWltZWlzaGlcIDsKK+Wun+alreS5i+aXpeacrCA8IGppdHN1Z3lvdW5vbmlob25cIDsKK+epjeWxpOS5vumbu+axoCA8IHNla2lzb3VrYW5kZW5jaGlcIDsKK+ihjOaUv+euoeeQhuW6gSA8IGd5b3VzZWlrYW5yaWNob3VcIDsKK+i1pOWNgeWtl+adoee0hCA8IHNla2lqdXVqaWpvdXlha3VcIDsKK+WFieWtpumhleW+rumPoSA8IGtvdWdha3VrZW5iaWt5b3VcIDsKK+i2hemBjuWLpOWLmeaJi+W9kyA8IGNob3VrYWtpbm11dGVhdGVcIDsKK+S6iOWCmeWjq+WumOWtpuagoSA8IHlvYmlzaGlrYW5nYWtrb3VcIDsKK+W8t+WItuWPjuWuueaJgCA8IGt5b3VzZWlzaHV1eW91am9cIDsKK+eKr+e9quW/g+eQhuWtpiA8IGhhbnphaXNoaW5yaWdha3VcIDsKK+mAo+mCpuaNnOafu+WxgCA8IHJlbnBvdXNvdXNha3lva3VcIDsKK+Wkp+mZuOenu+WLleiqrCA8IHRhaXJpa3VpZG91c2V0c3VcIDsKK+ebtOaOpeihjOWLlSA8IGNob2t1c2V0c3Vrb3Vkb3VcIDsKK+S8gealreWGheaVmeiCsiA8IGtpZ3lvdW5haWt5b3Vpa3VcIDsKK+axguiBt+W6g+WRiiA8IGt5dXVzaG9rdWtvdWtva3VcIDsKK+Wun+iovOWTsuWtpiA8IGppc3Nob3V0ZXRzdWdha3VcIDsKK+iKseWrgeiKseWpvyA8IGhhbmF5b21laGFuYW11a29cIDsKK+eUu+WDj+WHpueQhuijhee9riA8IGdhem91c2hvcmlzb3VjaGlcIDsKK+eqkue0oOmFuOWMlueJqSA8IGNoaXNzb3NhbmthYnV0c3VcIDsKK+W4neeOi+WIh+mWi+ihkyA8IHRlaW91c2Vra2FpanV0c3VcIDsKK+WFreWNgeWbm+WIhumfs+espiA8IHJva3VqdXVzaGlidW9ucHVcIDsKK+aYpeapn+eZuuWLleacnyA8IHNodW5raWhhdHN1ZG91a2lcIDsKK+Wkp+WQjeihjOWIlyA8IGRhaW15b3VneW91cmV0c3VcIDsKK+mrmOWxseakjeeJqSA8IGtvdXphbnNob2t1YnV0c3VcIDsKK+aUvuWwhOaAp+WQjOS9jeS9kyA8IGhvdXNoYXNlaWRvdWl0YWlcIDsKK+WkqeW5leijvemAoOS6uiA8IHRlbm1ha3VzZWl6b3VuaW5cIDsKK+acgOWEquengOmBuOaJiyA8IHNhaXl1dXNodXVzZW5zaHVcIDsKK+eJueWIpeaWmemHkSA8IHRva3ViZXRzdXJ5b3VraW5cIDsKK+WLneWIqeWPiOWLneWIqSA8IHNob3VyaW1hdGFzaG91cmlcIDsKK+Wls+a1geaWh+WtpuiAhSA8IGpvcnl1dWJ1bmdha3VzaGFcIDsKK+S4remWk+Wwj+iqrCA8IGNodXVrYW5zaG91c2V0c3VcIDsKK+iAkOS5hea2iOiyu+iyoSA8IHRhaWt5dXVzaG91aGl6YWlcIDsKK+mdnuWFrOW8j+WNlOitsCA8IGhpa291c2hpa2lreW91Z2lcIDsKK+eUn+eJqea/g+e4riA8IHNlaWJ1dHN1bm91c2h1a3VcIDsKK+WFpeWKm+S/oeWPtyA8IG55dXVyeW9rdXNoaW5nb3VcIDsKK+epuua4r+S9v+eUqOaWmSA8IGt1dWtvdXNoaXlvdXJ5b3VcIDsKK+W9q+WIu+WupOW6pyA8IGNob3Vrb2t1c2hpdHN1emFcIDsKK+eiuueOh+aomeacrCA8IGtha3VyaXRzdWh5b3Vob25cIDsKK+eEoemHjeWKm+eKtuaFiyA8IG11anV1cnlva3Vqb3V0YWlcIDsKK+WkqeeFp+eah+Wkp+elniA8IHRlbnNob3Vrb3VkYWlqaW5cIDsKK+W3nueri+Wkp+WtpiA8IHNodXVyaXRzdWRhaWdha3VcIDsKK+eyvuelnuWuieWumuWJpCA8IHNlaXNoaW4nJ2FudGVpemFpXCA7CivphbjmgKfphbjljJbniakgPCBzYW5zZWlzYW5rYWJ1dHN1XCA7Civlhpnlrp/kuLvnvqnogIUgPCBzaGFqaXRzdXNodWdpc2hhXCA7CivlhrfmiKblnovmgJ3ogIMgPCByZWlzZW5nYXRhc2hpa291XCA7CivkupznhrHluK/pq5jmsJflnKcgPCBhbmV0dGFpa291a2lhdHN1XCA7CivlpJrogonmpI3niakgPCB0YW5pa3VzaG9rdWJ1dHN1XCA7Civpm7vlrZDlt6Xmpa3kvJogPCBkZW5zaGlrb3VneW91a2FpXCA7Civpm7vlrZDlt6XlrabogIUgPCBkZW5zaGlrb3VnYWt1c2hhXCA7CivorbLmuKHkurogPCB5dXp1cml3YXRhc2hpbmluXCA7CivnhrHkvJ3lsI7njocgPCBuZXRzdWRlbmRvdXJpdHN1XCA7CivmsJHkuLvlhbHlkozlm70gPCBtaW5zaHVreW91d2Frb2t1XCA7Civno4HmsJflhbHps7TnlLvlg48gPCBqaWtpa3lvdW1laWdhem91XCA7Civni6znq4voqJjlv7Xml6UgPCBkb2t1cml0c3VraW5lbmJpXCA7CivljJblraboqr/lkbPmlpkgPCBrYWdha3VjaG91bWlyeW91XCA7CivmpI3niankurrplpMgPCBzaG9rdWJ1dHN1bmluZ2VuXCA7Civps6XnjaPkv53orbfljLrln58gPCBjaG91anV1aG9nb2t1aWtpXCA7CivntYLouqvpm4fnlKjliLYgPCBzaHV1c2hpbmtveW91c2VpXCA7CivkuI3lrprmlrnnqIvlvI8gPCBmdXRlaWhvdXRlaXNoaWtpXCA7CivnianniankuqTmj5sgPCBidXRzdWJ1dHN1a291a2FuXCA7Civlrp/lipvooYzkvb8gPCBqaXRzdXJ5b2t1a291c2hpXCA7CivlnovlvI/oqLzmmI4gPCBrYXRhc2hpa2lzaG91bWVpXCA7CivpgKPli53opIflvI8gPCByZW5zaG91ZnVrdXNoaWtpXCA7CivlpKfkv67pgZPpmaLplbcgPCBkYWlzaHV1ZG91aW5jaG91XCA7Civnm7TmjqXljZTorbAgPCBjaG9rdXNldHN1a3lvdWdpXCA7Civnvarpmpzmtojmu4UgPCB6YWlzaG91c2hvdW1ldHN1XCA7CivmmannlJ/mpI3niakgPCBiYW5zZWlzaG9rdWJ1dHN1XCA7CivmvZzlnKjlpLHmpa0gPCBzZW56YWlzaGl0c3VneW91XCA7CivmuK/mub7pgYvpgIHmpa0gPCBrb3V3YW4nJ3Vuc291Z3lvdVwgOwor5ZGo5rOi5pWw5aSJ6Kq/IDwgc2h1dWhhc3V1aGVuY2hvdVwgOwor5Lm+54el5Zyw6L6y5qWtIDwga2Fuc291Y2hpbm91Z3lvdVwgOwor55Kw5aKD6YWN5oWu5pu4IDwga2Fua3lvdWhhaXJ5b3Nob1wgOwor55u05o6l5q+U6LyDIDwgY2hva3VzZXRzdWhpa2FrdVwgOwor5Zu65L2T54mp55CG5a2mIDwga290YWlidXRzdXJpZ2FrdVwgOwor5qC45oqR5q2i5YqbIDwga2FrdXlva3VzaGlyeW9rdVwgOwor5Zu96Zqb5o+05Yqp5qmf6ZaiIDwga29rdXNhaWVuam9raWthblwgOwor57WE57mU5Yq05YON6ICFIDwgc29zaGlraXJvdWRvdXNoYVwgOwor5Za25qWt5aCx5ZGK5pu4IDwgZWlneW91aG91a29rdXNob1wgOwor5LiH54mp5rWB6LuiIDwgYmFuYnV0c3VyeXV1dGVuXCA7Civou5/lvI/luq3nkIMgPCBuYW5zaGlraXRlaWt5dXVcIDsKK+W6g+WRiuS7o+eQhuW6lyA8IGtvdWtva3VkYWlyaXRlblwgOwor5L+u6YGT55Sf5rS7IDwgc2h1dWRvdXNlaWthdHN1XCA7CivmiKbmmYLlm73pmpvms5UgPCBzZW5qaWtva3VzYWlob3VcIDsKK+enmOWvhuitpuWvnyA8IGhpbWl0c3VrZWlzYXRzdVwgOwor5rOV5Lq65qCq5Li7IDwgaG91amlua2FidW51c2hpXCA7CivlhoXluZXoqbEgPCB1Y2hpbWFrdWJhbmFzaGlcIDsKK+mWk+aOpeeFp+aYjiA8IGthbnNldHN1c2hvdW1laVwgOwor57Sb6aqo56CV6LqrIDwgZnVua290c3VzYWlzaGluXCA7CivkuKHmo7Lli5XniakgPCByeW91c2VpZG91YnV0c3VcIDsKK+Wkmumhjee0jeeojuiAhSA8IHRhZ2FrdW5vdXplaXNoYVwgOwor5aSq5YWD5bil5aaZ546LIDwgZGFpZ2Vuc3VpbXlvdW91XCA7Civpm4bntITovrLmpa0gPCBzaHV1eWFrdW5vdWd5b3VcIDsKK+W7g+eWvuadoeS7tiA8IGhhaXNoaXRzdWpvdWtlblwgOwor6IO9546H6LOD6YeRIDwgbm91cml0c3VjaGluZ2luXCA7CivkuK3pg6jlpKrlubPmtIsgPCBjaHV1YnV0YWloZWl5b3VcIDsKK+S8gealreWGhee1hOWQiCA8IGtpZ3lvdW5haWt1bWlhaVwgOwor5Y2Y5YiA55u05YWlIDwgdGFudG91Y2hva3VueXV1XCA7CivlpKrlubPmtIvmiKbkuokgPCB0YWloZWl5b3VzZW5zb3VcIDsKK+S4ieaWh+Wwj+iqrCA8IHNhbm1vbnNob3VzZXRzdVwgOwor562L6IKJ5rOo5bCEIDwga2luJyduaWt1Y2h1dXNoYVwgOwor5Zub6YCa5YWr6YGUIDwgc2hpdHN1dWhhdHRhdHN1XCA7CivpgKPluK/kv53oqLzkurogPCByZW50YWlob3Nob3VuaW5cIDsKK+i7jeWbveS4u+e+qeiAhSA8IGd1bmtva3VzaHVnaXNoYVwgOwor5Ymy5aKX6YGL6LODIDwgd2FyaW1hc2hpdW5jaGluXCA7CivljZfmpbXoprPmuKwgPCBuYW5reW9rdWthbnNva3VcIDsKK+S4gOebrueereeEtiA8IGljaGltb2t1cnlvdXplblwgOwor57Sg5Lq65LiL5a6/IDwgc2hpcm91dG9nZXNodWt1XCA7CivlrabmoKHntabpo58gPCBnYWtrb3VreXV1c2hva3VcIDsKK+WPjeW4neWbveS4u+e+qSA8IGhhbnRlaWtva3VzaHVnaVwgOwor6ZaT5o6l5pKu5b2xIDwga2Fuc2V0c3VzYXRzdWVpXCA7CivkvJrnpL7mm7TnlJ/ms5UgPCBrYWlzaGFrb3VzZWlob3VcIDsKK+WbvemBuOW8geitt+S6uiA8IGtva3VzZW5iZW5nb25pblwgOwor55m95bed5aSc6Ii5IDwgc2hpcmFrYXdheW9mdW5lXCA7Civoh6rnhLblnLDnkIblraYgPCBzaGl6ZW5jaGlyaWdha3VcIDsKK+WcsOWfn+eahOWIhuW4gyA8IGNoaWlraXRla2lidW5wdVwgOwor54Sh5pS/5bqc5Li7576p6ICFIDwgbXVzZWlmdXNodWdpc2hhXCA7Civliarmlq3lronlrprmgKcgPCBzZW5kYW4nJ2FudGVpc2VpXCA7CivnibnnrYblpKfmm7ggPCB0b2t1aGl0c3V0YWlzaG9cIDsKK+mrmOWIhuWtkOWMluWtpiA8IGtvdWJ1bnNoaWthZ2FrdVwgOwor5oOF5aCx5YWs6ZaL5rOVIDwgam91aG91a291a2FpaG91XCA7Civlj43lsITmnJvpgaDpj6EgPCBoYW5zaGFib3Vlbmt5b3VcIDsKK+mjn+WTgeW3pealrSA8IHNob2t1aGlua291Z3lvdVwgOwor5qOY55qu5YuV54mpIDwga3lva3VoaWRvdWJ1dHN1XCA7CivmgKrlipvkubHnpZ4gPCBrYWlyeW9rdXJhbnNoaW5cIDsKK+S6uueUn+WTsuWtpiA8IGppbnNlaXRldHN1Z2FrdVwgOwor54m55Yil5aeU5ZOh5LyaIDwgdG9rdWJldHN1aWlua2FpXCA7CivlhoXpnIDkuLvlsI7lnosgPCBuYWlqdXNodWRvdWdhdGFcIDsKK+aZtOWkqeS5seawl+a1gSA8IHNlaXRlbnJhbmtpcnl1dVwgOwor5paw5ama55Sf5rS7IDwgc2hpbmtvbnNlaWthdHN1XCA7CivvvJLvvJDvvJDvvJDlubTllY/poYwgPCBuaXNlbicnbmVubW9uZGFpXCA7CivlhazplovlhaXmnK0gPCBrb3VrYWlueXV1c2F0c3VcIDsKK+WfuuacrOeahOS6uuaoqSA8IGtpaG9udGVraWppbmtlblwgOwor5qCq5byP5biC5aC0IDwga2FidXNoaWtpc2hpam91XCA7Civlrabmpa3miJDnuL4gPCBnYWt1Z3lvdXNlaXNla2lcIDsKK+aIpuS6ieeKr+e9quS6uiA8IHNlbnNvdWhhbnphaW5pblwgOwor54mp6LOq5ZCN6KmeIDwgYnVzc2hpdHN1bWVpc2hpXCA7Civlj43lr77osr/mmJPpoqggPCBoYW50YWlib3Vla2lmdXVcIDsKK+efree3qOWwj+iqrCA8IHRhbnBlbnNob3VzZXRzdVwgOwor6YGT6Lev5Lqk6YCa5rOVIDwgZG91cm9rb3V0c3V1aG91XCA7CivlhbHnlKPlm73lrrbpg6EgPCBreW91c2Fua29ra2FndW5cIDsKK+WVhualreaVsOWtpiA8IHNob3VneW91c3V1Z2FrdVwgOwor5Luu6KOF5beh5rSL6ImmIDwga2Fzb3VqdW4nJ3lvdWthblwgOwor5pWZ6IKy5Z+65pys5rOVIDwga3lvdWlrdWtpaG9uaG91XCA7CivnlJ/nlKPogIXkvqHmoLwgPCBzZWlzYW5zaGFrYWtha3VcIDsKK+acgOWwj+S6jOS5l+azlSA8IHNhaXNob3VuaWpvdWhvdVwgOwor6ISx5Ye66YCf5bqmIDwgZGFzc2h1dHN1c29rdWRvXCA7CivnibnliKXnt4/kvJogPCB0b2t1YmV0c3Vzb3VrYWlcIDsKK+esrOS4gOalveeroCA8IGRhaWljaGlnYWt1c2hvdVwgOwor5Li75bm556CU56m25ZOhIDwgc2h1a2Fua2Vua3l1dWluXCA7Civlrpjlg5rkuLvnvqnogIUgPCBrYW5yeW91c2h1Z2lzaGFcIDsKK+Wwj+mBuOaMmeWMuuWItiA8IHNob3VzZW5reW9rdXNlaVwgOwor57Si5p2h6YmE6YGTIDwgc2FrdWpvdXRldHN1ZG91XCA7Civou43oqJjnianoqp4gPCBndW5raW1vbm9nYXRhcmlcIDsKK+WOs+ato+S4reeriyA8IGdlbnNlaWNodXVyaXRzdVwgOwor5LiA5pel5LiA5aScIDwgaWNoaW5pY2hpaWNoaXlhXCA7CivpmbDpmbDmu4Xmu4UgPCBpbicnaW5tZXRzdW1ldHN1XCA7CivlsLHogbfmtarkurogPCBzaHV1c2hva3Vyb3VuaW5cIDsKK+iHqui7oui7iuaTjealrSA8IGppdGVuc2hhc291Z3lvdVwgOwor57SU5r2U5pWZ6IKyIDwganVua2V0c3VreW91aWt1XCA7CivkuJbnlYzmlrDoqJjpjLIgPCBzZWthaXNoaW5raXJva3VcIDsKK+Wul+aVmeaUuemdqSA8IHNodXVreW91a2Fpa2FrdVwgOwor5ZWG5bel5Lya6K2w5omAIDwgc2hvdWtvdWthaWdpc2hvXCA7CivlvL7lir7oo4HliKTmiYAgPCBkYW5nYWlzYWliYW5zaG9cIDsKK+aUr+mboua7heijgiA8IHNoaXJpbWV0c3VyZXRzdVwgOwor5Zu95rCR5a6/6IiOIDwga29rdW1pbnNodWt1c2hhXCA7Civkv53orbfplqLnqI7njocgPCBob2dva2FuemVpcml0c3VcIDsKK+eLrOeri+Wuo+iogCA8IGRva3VyaXRzdXNlbmdlblwgOwor5Ymv6IWO55qu6LOqIDwgZnVrdWppbmhpc2hpdHN1XCA7Civlm73msJHnlJ/mtLsgPCBrb2t1bWluc2Vpa2F0c3VcIDsKK+epjei8ieiDveWKmyA8IHNla2lzYWlub3VyeW9rdVwgOwor5Y+O5a656IO95YqbIDwgc2h1dXlvdW5vdXJ5b2t1XCA7CivohbDpq5jpmpzlrZAgPCBrb3NoaWRha2FzaG91amlcIDsKK+W5tOmgg+aXpemggyA8IHRvc2hpZ29yb2hpZ29yb1wgOwor6ZuG5pyt5L+CIDwgc2h1dXNhdHN1Z2FrYXJpXCA7CivmupbnpoHmsrvnlKPogIUgPCBqdW5raW5jaGlzYW5zaGFcIDsKK+itsOmZouWGhemWo+WItiA8IGdpaW4nJ25haWtha3VzZWlcIDsKK+mAmuS/l+aWh+WtpiA8IHRzdXV6b2t1YnVuZ2FrdVwgOwor6YeR5qeM6aCtIDwga2FuYWR6dWNoaWF0YW1hXCA7CivlhKrlhYjmoKrkuLsgPCB5dXVzZW5rYWJ1bnVzaGlcIDsKK+WGmeecn+a4rOmHjyA8IHNoYXNoaW5zb2t1cnlvdVwgOwor5LyB5qWt5L2T6LOqIDwga2lneW91dGFpc2hpdHN1XCA7CivnlJ/mtLvkv53orbfms5UgPCBzZWlrYXRzdWhvZ29ob3VcIDsKK+eMqueqgeeMm+mAsiA8IGNob3RvdHN1bW91c2hpblwgOwor5YWx55Sj5Li7576p6ICFIDwga3lvdXNhbnNodWdpc2hhXCA7CivmraPlronmga/pppnphbggPCBzZWlhbnNva3Vrb3VzYW5cIDsKK+WFrOWus+eXheaCo+iAhSA8IGtvdWdhaWJ5b3VrYW5qYVwgOwor5LiW55WM5L+d5YGl5qmf6ZaiIDwgc2VrYWlob2tlbmtpa2FuXCA7CivlrabnlJ/libLlvJUgPCBnYWt1c2Vpd2FyaWJpa2lcIDsKK+iyoeaUv+aKleiejeizhyA8IHphaXNlaXRvdXl1dXNoaVwgOwor5L6h5qC85Zyn5YqbIDwga2FrYWt1YXRzdXJ5b2t1XCA7CivmuK/mub7lirTlg43ogIUgPCBrb3V3YW5yb3Vkb3VzaGFcIDsKK+WGhemZuOaAp+awl+WAmSA8IG5haXJpa3VzZWlraWtvdVwgOwor5Lit5aSu5qiZ5rqW5pmCIDwgY2h1dW91aHlvdWp1bmppXCA7Civooajnj77lvaLlvI8gPCBoeW91Z2Vua2Vpc2hpa2lcIDsKK+aKleWFieeFp+aYjuWZqCA8IHRvdWtvdXNob3VtZWlraVwgOwor5Ye66aGY5pu46aGeIDwgc2h1dHN1Z2Fuc2hvcnVpXCA7Civnt4/lkIznm5/nvbfmpa0gPCBzb3Vkb3VtZWloaWd5b3VcIDsKK+Wul+aVmeaVmeiCsiA8IHNodXVreW91a3lvdWlrdVwgOwor5L2Z6KOV57a957a9IDwgeW95dXVzaGFrdXNoYWt1XCA7Civnn6XnmoTog73lipsgPCBjaGl0ZWtpbm91cnlva3VcIDsKK+WPjemqqOeyvuelniA8IGhhbmtvdHN1c2Vpc2hpblwgOwor5q2j56K654iG5pKDIDwgc2Vpa2FrdWJha3VnZWtpXCA7Civml6Xoi7HpgJroqLMgPCBuaWNoaWVpdHN1dXlha3VcIDsKK+acgOmrmOijgeWIpOaJgCA8IHNhaWtvdXNhaWJhbnNob1wgOwor6aOf54mp57mK57atIDwgc2hva3Vtb3RzdXNlbicnaVwgOwor566X6KGT57Sa5pWwIDwgc2FuanV0c3VreXV1c3V1XCA7CivlhaXlipvoo4Xnva4gPCBueXV1cnlva3Vzb3VjaGlcIDsKK+iBt+alreiok+e3tCA8IHNob2t1Z3lvdWt1bnJlblwgOwor5o6i5YG15bCP6KqsIDwgdGFudGVpc2hvdXNldHN1XCA7CivnlJ/mtLvlj43lv5wgPCBzZWlrYXRzdWhhbicnbm91XCA7Civllrblm6PlnLDkuIvpiYQgPCBlaWRhbmNoaWthdGV0c3VcIDsKK+advuS4i+mbu+WZqCA8IG1hdHN1c2hpdGFkZW5raVwgOwor55+l6K2Y6ZqO57SaIDwgY2hpc2hpa2lrYWlreXV1XCA7CivmoKrlvI/kvJrnpL4gPCBrYWJ1c2hpa2lnYWlzaGFcIDsKK+S4gOaZgumgkOaJgCA8IGljaGlqaWF6dWthcmlqb1wgOwor6aO95ZKM5YyW5ZCI54mpIDwgaG91d2FrYWdvdWJ1dHN1XCA7Civmi6HlpKfop6Pph4ggPCBrYWt1ZGFpa2Fpc2hha3VcIDsKK+mHkeWxnuaOouefpeapnyA8IGtpbnpva3V0YW5jaGlraVwgOwor5rWu5YuV5bCP5pWw54K5IDwgZnVkb3VzaG91c3V1dGVuXCA7Civlk4Hos6rkv53oqLwgPCBoaW5zaGl0c3Vob3Nob3VcIDsKK+iogOiqnuW/g+eQhuWtpiA8IGdlbmdvc2hpbnJpZ2FrdVwgOwor5L+h5Luw5ZGK55m9IDwgc2hpbmtvdWtva3VoYWt1XCA7CivmoLznianoh7Tnn6UgPCBrYWt1YnV0c3VjaGljaGlcIDsKK+S4gOWnq+S6jOWkqumDjiA8IGljaGloaW1lbml0YXJvdVwgOwor55WM6Z2i5rS75oCn5YmkIDwga2FpbWVua2Fzc2VpemFpXCA7CivnsbPnqYDpgJrluLMgPCBiZWlrb2t1dHN1dWNob3VcIDsKK+S6uueUn+ahiOWGheashCA8IGppbnNlaWFuJyduYWlyYW5cIDsKK+Wun+eUqOaWsOahiCA8IGppdHN1eW91c2hpbicnYW5cIDsKK+W/g+i6q+manOWusyA8IHNoaW5zaGluc2hvdWdhaVwgOwor5LiA5YiG5LqM5Y2B56eSIDwgaXBwdW4nJ25panV1YnlvdVwgOwor6YCf5oim5Y2z5rG6IDwgc29rdXNlbnNva2tldHN1XCA7CivljJblrablkLjnnYAgPCBrYWdha3VreXV1Y2hha3VcIDsKK+Wbm+aWueWxseipsSA8IHlvbW95YW1hYmFuYXNoaVwgOwor55qH5a6k5YW456+EIDwga291c2hpdHN1dGVucGFuXCA7CivljZfpmL/lhbHlkozlm70gPCBuYW4nJ2FreW91d2Frb2t1XCA7CivkuozljYHlm5vmmYLplpPliLYgPCBuaWp1dXlvamlrYW5zZWlcIDsKK+eJueWIpeWbveS8miA8IHRva3ViZXRzdWtva2thaVwgOwor5LiA5Z2q5pys56S+IDwgaGl0b3RzdWJvaG9uc2hhXCA7Civml6nlj6PoqIDokYkgPCBoYXlha3VjaGlrb3RvYmFcIDsKK+a3seWxseW5veiwtyA8IHNoaW56YW4nJ3l1dWtva3VcIDsKK+mAmuWVhueUo+alrSA8IHRzdXVzaG91c2FuZ3lvdVwgOwor5Li75oim6ZeY5oim6LuKIDwgc2h1c2VudG91c2Vuc2hhXCA7Civlu7rnr4npnaLnqY0gPCBrZW5jaGlrdW1lbnNla2lcIDsKK+avlOi8g+iogOiqnuWtpiA8IGhpa2FrdWdlbmdvZ2FrdVwgOwor55uk5qC56Yyv56+AIDwgYmFua29uc2FrdXNldHN1XCA7CivlhoXnmoTnlJ/mtLsgPCBuYWl0ZWtpc2Vpa2F0c3VcIDsKK+WGheaUv+S4jeW5sua4iSA8IG5haXNlaWZ1a2Fuc2hvdVwgOwor56eY5a+G5ryP5rSpIDwgaGltaXRzdXJvdXNldHN1XCA7Civpq5jnrYnoo4HliKTmiYAgPCBrb3V0b3VzYWliYW5zaG9cIDsKK+WHuuacreaOmyA8IHNodXNzYXRzdWdha2FyaVwgOwor546J55+z5re35reGIDwgZ3lva3VzZWtpa29ua291XCA7Civpm5vpkZHliKXogIUgPCBoaW5ha2FuYmV0c3VzaGFcIDsKK+e1gui6q+W5tOmHkSA8IHNodXVzaGluJyduZW5raW5cIDsKK+S6uueJqeWvuOaPjyA8IGppbmJ1dHN1c3VuYnlvdVwgOwor5ZWG5ZOB55uu6YyyIDwgc2hvdWhpbm1va3Vyb2t1XCA7CivlpJbpo5/nlKPmpa0gPCBnYWlzaG9rdXNhbmd5b3VcIDsKK+izh+a6kOevgOe0hCA8IHNoaWdlbnNldHN1eWFrdVwgOwor55CD6Z2i5bm+5L2V5a2mIDwga3l1dW1lbmtpa2FnYWt1XCA7CivpnZnohIjms6jlsIQgPCBqb3VteWFrdWNodXVzaGFcIDsKK+WGkumZuuWwj+iqrCA8IGJvdWtlbnNob3VzZXRzdVwgOwor54ax56Gs5YyW54mpIDwgbmV0c3Vrb3VrYWJ1dHN1XCA7Civpm7vlrZDpoZXlvq7pj6EgPCBkZW5zaGlrZW5iaWt5b3VcIDsKK+WbveaciemJhOmBkyA8IGtva3V5dXV0ZXRzdWRvdVwgOwor56K6546H5aSJ5pWwIDwga2FrdXJpdHN1aGVuc3V1XCA7CivplovnmbroqIjnlLsgPCBrYWloYXRzdWtlaWtha3VcIDsKK+WKtOWDjeeUn+eUo+aApyA8IHJvdWRvdXNlaXNhbnNlaVwgOwor5pyJ5a6z54mp6LOqIDwgeXV1Z2FpYnVzc2hpdHN1XCA7Civmg4XnirbphYzph48gPCBqb3Vqb3VzaGFrdXJ5b3VcIDsKK+S+teeVpeaIpuS6iSA8IHNoaW5yeWFrdXNlbnNvdVwgOwor5bmz6KGM5Zub6L665b2iIDwgaGVpa291c2hpaGVua2VpXCA7CivlhpLpoK3pmbPov7AgPCBib3V0b3VjaGluanV0c3VcIDsKK+eEvOi6q+iHquauuiA8IHNob3VzaGluamlzYXRzdVwgOwor5oSf5YK35Li7576p6ICFIDwga2Fuc2hvdXNodWdpc2hhXCA7CivlrabnlJ/oh6rmsrvkvJogPCBnYWt1c2VpamljaGlrYWlcIDsKK+Wkp+WuieWQieaXpSA8IHRhaWFua2ljaGluaWNoaVwgOwor55+v5q2j6KaW5YqbIDwga3lvdXNlaXNoaXJ5b2t1XCA7CivlubTph5Hlj5fntabogIUgPCBuZW5raW5qdWt5dXVzaGFcIDsKK+eglOeptumWi+eZuiA8IGtlbmt5dXVrYWloYXRzdVwgOwor5LiJ5oyH6bSOIDwgbWl0c3V5dWJpa2Ftb21lXCA7Civoq4flkIjlhaXmnK0gPCBkYW5nb3VueXV1c2F0c3VcIDsKK+mdnuWQjOacn+mAmuS/oSA8IGhpZG91a2l0c3V1c2hpblwgOwor5LiJ5Y2B5bm05oim5LqJIDwgc2FuanV1bmVuc2Vuc291XCA7CivplonmiYDmgZDmgJbnl4cgPCBoZWlqb2t5b3VmdXNob3VcIDsKK+WPuOazleeglOS/ruaJgCA8IHNoaWhvdWtlbnNodXVqb1wgOwor6Zm455Sf5YuV54mpIDwgcmlrdXNlaWRvdWJ1dHN1XCA7CivkvY7ph5HliKnmlL/nrZYgPCB0ZWlraW5yaXNlaXNha3VcIDsKK+eci+itt+WppumkiuaIkOaJgCA8IGthbmdvZnV5b3VzZWlqb1wgOwor5Y2X5aSq5bmz5rSLIDwgbWluYW1pdGFpaGVpeW91XCA7CivpurvolqzluLjnlKjogIUgPCBtYXlha3Vqb3V5b3VzaGFcIDsKK+WtpueUn+eUn+a0uyA8IGdha3VzZWlzZWlrYXRzdVwgOwor6ZW36Led6Zui5YiX6LuKIDwgY2hvdWt5b3JpcmVzc2hhXCA7Civmh7LnvbDlp5Tlk6HkvJogPCBjaG91YmF0c3VpaW5rYWlcIDsKK++8ke+8ke+8meeVqiA8IGh5YWt1anV1a3l1dWJhblwgOwor5pyJ5qmf5YyW5ZCI54mpIDwgeXV1a2lrYWdvdWJ1dHN1XCA7CivntZDlkIjntYTnuZQgPCBrZXRzdWdvdXNvc2hpa2lcIDsKK+S4jeW9k+WKtOWDjeihjOeCuiA8IGZ1dG91cm91ZG91a291aVwgOwor5b2r5b+D6Y+k6aqoIDwgY2hvdXNoaW5ydWtvdHN1XCA7CivnuIHml6XllYbkurogPCBlbicnbmljaGlzaG91bmluXCA7Civlv4PnpZ7ogJflvLEgPCBzaGluc2hpbm1vdWpha3VcIDsKK+efreacn+iyuOS7mCA8IHRhbmtpa2FzaGl0c3VrZVwgOwor5qW95aSp5Li7576p6ICFIDwgcmFrdXRlbnNodWdpc2hhXCA7Civlt6bkuK3mi6zlvKcgPCBoaWRhcmljaHV1a2Fra29cIDsKK+eEoeadoeS7tumZjeS8jyA8IG11am91a2Vua291ZnVrdVwgOwor6YGL6Lui5YWN6Kix6Ki8IDwgdW50ZW5tZW5reW9zaG91XCA7CivmoLzpl5jmiKbpg6jpmoogPCBrYWt1dG91c2VuYnV0YWlcIDsKK+m7kuiJsuS6uueoriA8IGtva3VzaG9rdWppbnNodVwgOwor5YWs5byP55m66KGoIDwga291c2hpa2loYXBweW91XCA7CivlsZXnpLrljbPlo7LkvJogPCB0ZW5qaXNva3ViYWlrYWlcIDsKK+i7jeS6i+Wig+eVjOe3miA8IGd1bmppa3lvdWthaXNlblwgOwor6Luf6aqo57WE57mUIDwgbmFua290c3Vzb3NoaWtpXCA7CivohbDotaTnh5UgPCBrb3NoaWFrYXRzdWJhbWVcIDsKK+a2iOiyu+iAheWbo+S9kyA8IHNob3VoaXNoYWRhbnRhaVwgOwor5YWo5L2T5Li7576p5Zu9IDwgemVudGFpc2h1Z2lrb2t1XCA7CivmmJ/plpPnianos6ogPCBzZWlrYW5idXNzaGl0c3VcIDsKK+S4jeWPr+S+teadoee0hCA8IGZ1a2FzaGluam91eWFrdVwgOwor55Sf5rav5a2m57+SIDwgc2hvdWdhaWdha3VzaHV1XCA7Civnn6XorZjooajnj74gPCBjaGlzaGlraWh5b3VnZW5cIDsKK+a6kOawj+eJqeiqniA8IGdlbmppbW9ub2dhdGFyaVwgOwor5LiD6Lui5YWr5YCSIDwgc2hpY2hpdGVuYmF0dG91XCA7CivluqfluK3mjIflrprliLggPCB6YXNla2lzaGl0ZWlrZW5cIDsKK+eZveiJsuS6uueoriA8IGhha3VzaG9rdWppbnNodVwgOwor5bmz5a6254mp6KqeIDwgaGVpa2Vtb25vZ2F0YXJpXCA7Civmi5Lntbblj43lv5wgPCBreW96ZXRzdWhhbicnbm91XCA7CivluLDlm73lrZDlpbPmnqAgPCBraWtva3VzaGlqb3dha3VcIDsKK+eJueWIpeW+hemBhyA8IHRva3ViZXRzdXRhaWd1dVwgOwor6Z2S5aSp55m95pelIDwgc2VpdGVuaGFrdWppdHN1XCA7CivlpKnnvbDopr/pnaIgPCB0ZW5iYXRzdXRla2ltZW5cIDsKK+ihgOaXj+e1kOWpmiA8IGtldHN1em9rdWtla2tvblwgOwor55m66Imy54++5YOPIDwgaGFzc2hva3VnZW5zaG91XCA7CivlhaXmnK3kvqHmoLwgPCBueXV1c2F0c3VrYWtha3VcIDsKK+mAo+eri+WGhemWoyA8IHJlbnJpdHN1bmFpa2FrdVwgOwor6IW55byP5ZG85ZC4IDwgZnVrdXNoaWtpa29reXV1XCA7CivpgbroqIDoo5zotrPmm7ggPCB5dWlnb25ob3Nva3VzaG9cIDsKK+S9jumWi+eZuuWbvSA8IHRlaWthaWhhdHN1a29rdVwgOwor6Lu95aaZ5rSS6ISxIDwga2VpbXlvdXNoYWRhdHN1XCA7Civpi7zntKLpiYTpgZMgPCBrb3VzYWt1dGV0c3Vkb3VcIDsKK+eCremJseWKtOWDjeiAhSA8IHRhbmtvdXJvdWRvdXNoYVwgOwor6Kej5p6Q5bm+5L2V5a2mIDwga2Fpc2VraWtpa2FnYWt1XCA7Civnj77mnInli6LlipsgPCBnZW4nJ3l1dXNlaXJ5b2t1XCA7CivntYzmuIjmgKflkJHkuIogPCBrZWl6YWlzZWlrb3Vqb3VcIDsKK+mBiuS8keaWveiorSA8IHl1dWt5dXVzaGlzZXRzdVwgOwor6Lez6LqN5oyv5YuVIDwgY2hvdXlha3VzaGluZG91XCA7CivlnLDkuIvmoLjlrp/pqJMgPCBjaGlrYWtha3VqaWtrZW5cIDsKK+avlOS+i+S7o+ihqOWItiA8IGhpcmVpZGFpaHlvdXNlaVwgOwor56uL5oay5ZCb5Li75pS/IDwgcmlra2Vua3Vuc2h1c2VpXCA7CivprZrpm7fnmbrlsITnrqEgPCBneW9yYWloYXNzaGFrYW5cIDsKK+aQjeebiuWIhuWykOeCuSA8IHNvbicnZWtpYnVua2l0ZW5cIDsKK+ekvuS8muS/nemZuuW6gSA8IHNoYWthaWhva2VuY2hvdVwgOwor6LaF54S25YaF6ZajIDwgY2hvdXplbicnbmFpa2FrdVwgOwor5q2p6KGM6ICF5aSp5Zu9IDwgaG9rb3VzaGF0ZW5nb2t1XCA7Civlrp/mpa3lrabmoKEgPCBqaXRzdWd5b3VnYWtrb3VcIDsKK+engeeri+Wkp+WtpiA8IHNoaXJpdHN1ZGFpZ2FrdVwgOwor5pyA5L2O6KGA5ZynIDwgc2FpdGVpa2V0c3VhdHN1XCA7CivlsIrlsZ7mrrrkurogPCBzb256b2t1c2F0c3VqaW5cIDsKK+WbveawkeeahuS/nemZuiA8IGtva3VtaW5rYWlob2tlblwgOwor6Ki65a+f5a6kIDwgc2hpbnNhdHN1c2hpdHN1XCA7CivkuK3nq4vlnLDluK8gPCBjaHV1cml0c3VjaGl0YWlcIDsKK+S4oealteWcsOaWuSA8IHJ5b3VreW9rdWNoaWhvdVwgOwor6YCj57aa5q665Lq6IDwgcmVuem9rdXNhdHN1amluXCA7CivlnoLnm7TliIbmpa0gPCBzdWljaG9rdWJ1bmd5b3VcIDsKK+a0l+a/r+efs+m5uCA8IHNlbnRha3VzZXRzdWtlblwgOwor6ZeY55eF55Sf5rS7IDwgdG91YnlvdXNlaWthdHN1XCA7CivlkIzmlofpgJrpgZQgPCBkb3VidW50c3V1dGF0c3VcIDsKK+WGhui7oua7keiEsSA8IGVudGVua2F0c3VkYXRzdVwgOwor5Y2Y57SU5YaN55Sf55SjIDwgdGFuanVuc2Fpc2Vpc2FuXCA7CivooqvpgbjmjJnos4fmoLwgPCBoaXNlbmt5b3NoaWtha3VcIDsKK+eUn+eJqeW3peWtpiA8IHNlaWJ1dHN1a291Z2FrdVwgOwor5Z+65rqW5aSW6LOD6YeRIDwga2lqdW5nYWljaGluZ2luXCA7CivkuIDlvovmuJvlj40gPCBpY2hpcml0c3VnZW50YW5cIDsKK+S6uuWToee4ruWwkSA8IGppbicnaW5zaHVrdXNob3VcIDsKK+itmOWIpeWKmyA8IHNoaWtpYmV0c3VyeW9rdVwgOwor54ax5biv5L2O5rCX5ZynIDwgbmV0dGFpdGVpa2lhdHN1XCA7Civni6znq4vlpInmlbAgPCBkb2t1cml0c3VoZW5zdXVcIDsKK+S6uuWumuizquWVjyA8IGppbnRlaXNoaXRzdW1vblwgOwor5paw57SE6IGW5pu4IDwgc2hpbicneWFrdXNlaXNob1wgOwor55Sf5q665LiO5aWqIDwgc2Vpc2F0c3V5b2RhdHN1XCA7Civnp4Hoh6rouqsgPCB3YXRha3VzaGlqaXNoaW5cIDsKK+W5s+a4heebmyA8IHRhaXJhbm9raXlvbW9yaVwgOwor5q6/5qeY5LuV5LqLIDwgdG9ub3NhbWFzaGlnb3RvXCA7Civlj7DmiYDnlKjlk4EgPCBkYWlkb2tvcm95b3VoaW5cIDsKK+iytOmHkeWxnuWNuCA8IGtpa2luem9rdW9yb3NoaVwgOwor5LiK5pa56LSF5YWtIDwga2FtaWdhdGF6ZWlyb2t1XCA7CivooYDml4/plqLkv4IgPCBrZXRzdXpva3VrYW5rZWlcIDsKK+WtkOWuruW+jOWxiCA8IHNoaWt5dXVrb3VrdXRzdVwgOwor5Y2X5b6B5YyX5LyQIDwgbmFuc2VpaG9rdWJhdHN1XCA7Civnj77lnKjlrozkuobmmYIgPCBnZW56YWlrYW5yeW91amlcIDsKK+ecn+Wun+S4gOi3ryA8IHNoaW5qaXRzdWljaGlyb1wgOwor54m55Yil6YGL6LODIDwgdG9rdWJldHN1dW5jaGluXCA7CivnrYnovrrkuInop5LlvaIgPCB0b3VoZW5zYW5rYWtrZWlcIDsKK+aXpeW4uOiMtumjr+S6iyA8IG5pY2hpam91c2FoYW5qaVwgOwor6YCa5bi45oim5YqbIDwgdHN1dWpvdXNlbnJ5b2t1XCA7CivpgKPpjpbnirbnkIPoj4wgPCByZW5zYWpvdWt5dXVraW5cIDsKK+WIqeWus+W+l+WksSA8IHJpZ2FpdG9rdXNoaXRzdVwgOwor5rWF6YWM5L2O5ZSxIDwgc2Vuc2hha3V0ZWlzaG91XCA7Civoo7jlrZDmpI3niakgPCByYXNoaXNob2t1YnV0c3VcIDsKK+WAn+eUqOiovOabuCA8IHNoYWt1eW91c2hvdXNob1wgOwor5YWx5pyJ57WQ5ZCIIDwga3lvdXl1dWtldHN1Z291XCA7Civljp/niIbniqDnibLogIUgPCBnZW5iYWt1Z2lzZWlzaGFcIDsKK+WbnuaKmOmgmOWfnyA8IGthaXNldHN1cnlvdWlraVwgOwor6IG35qWt5oSP6K2YIDwgc2hva3VneW91aXNoaWtpXCA7CivlpJblm73mipXos4flrrYgPCBnYWlrb2t1dG91c2hpa2FcIDsKK+WNmOW8j+Wtpue0miA8IHRhbnNoaWtpZ2Fra3l1dVwgOwor5a2m6KGT6ZuR6KqMIDwgZ2FrdWp1dHN1emFzc2hpXCA7CivlhaXlh7rlipsgPCBueXV1c2h1dHN1cnlva3VcIDsKK+e0m+WkseWxiiA8IGZ1bnNoaXRzdXRvZG9rZVwgOwor6Zu75rOi5aSp5paH5a2mIDwgZGVucGF0ZW5tb25nYWt1XCA7CivljZLmpa3oqabpqJMgPCBzb3RzdWd5b3VzaGlrZW5cIDsKK+WEquaAp+W9ouizqiA8IHl1dXNlaWtlaXNoaXRzdVwgOwor5oiQ6ZW35puy57eaIDwgc2VpY2hvdWt5b2t1c2VuXCA7Civnmb7lhavljYHluqYgPCBoeWFrdWhhY2hpanV1ZG9cIDsKK+Wkp+WSjOaSq+WtkCA8IHlhbWF0b25hZGVzaGlrb1wgOwor5aW96Imy5paH5a2mIDwga291c2hva3VidW5nYWt1XCA7CivpnIrprYLmtojmu4UgPCByZWlrb25zaG91bWV0c3VcIDsKK+eJueWIpemFjeW9kyA8IHRva3ViZXRzdWhhaXRvdVwgOwor5qeL6YCg6KiA6Kqe5a2mIDwga291em91Z2VuZ29nYWt1XCA7Civpoqjlipvpmo7ntJogPCBmdXVyeW9rdWthaWt5dXVcIDsKK+WcsOWfn+WGt+aaluaIvyA8IGNoaWlraXJlaWRhbmJvdVwgOwor5rWB5L2T5Yqb5a2mIDwgcnl1dXRhaXJpa2lnYWt1XCA7Civkurrlt6XlkbzlkLjms5UgPCBqaW5rb3Vrb2t5dXVob3VcIDsKK+WKo+W8seaEj+itmCA8IHJldHN1amFrdWlzaGlraVwgOwor5a6f6Ki85Li7576p6ICFIDwgamlzc2hvdXNodWdpc2hhXCA7CivmsYLogbfkv4IgPCBreXV1c2hva3VnYWthcmlcIDsKK+S6jOiCoeiGj+iWrCA8IGZ1dGFtYXRha291eWFrdVwgOwor5pSv5oyB5Yqb55CG6KuWIDwgc2hpamlyeW9rdXJpcm9uXCA7Civnianos6rku6PorJ0gPCBidXNzaGl0c3V0YWlzaGFcIDsKK+euoei9hOWumOW6gSA8IGthbmthdHN1a2FuY2hvdVwgOwor5YWs6ZaL6KiO6KuW5LyaIDwga291a2FpdG91cm9ua2FpXCA7Civkv67mraPnlLPlkYogPCBzaHV1c2Vpc2hpbmtva3VcIDsKK+W/g+eQhuWwj+iqrCA8IHNoaW5yaXNob3VzZXRzdVwgOwor552A6Zm45Zyw54K5IDwgY2hha3VyaWt1Y2hpdGVuXCA7Civmlofpg6jnp5HlrabnnIEgPCBtb25idWthZ2FrdXNob3VcIDsKK+eJueioseaYjue0sOabuCA8IHRva2t5b21laXNhaXNob1wgOwor5a6f6aiT5bCP6KqsIDwgamlra2Vuc2hvdXNldHN1XCA7Civljp/lrZDniIbnmbogPCBnZW5zaGliYWt1aGF0c3VcIDsKK+eojuWItuiqv+afu+S8miA8IHplaXNlaWNob3VzYWthaVwgOwor5YWl5Yqb5oOF5aCxIDwgbnl1dXJ5b2t1am91aG91XCA7Civph4/lrZDlipvlraYgPCByeW91c2hpcmlraWdha3VcIDsKK+WlquS4ieaMr+eOiyA8IGRhdHN1c2Fuc2hpbicnb3VcIDsKK+eZuuWxlemAlOS4iuWbvSA8IGhhdHRlbnRvam91a29rdVwgOwor5YWs5YWx5Zuz5pu46aSoIDwga291a3lvdXRvc2hva2FuXCA7CivlubTmnKvoqr/mlbQgPCBuZW5tYXRzdWNob3VzZWlcIDsKK+Wtpuihk+irluaWhyA8IGdha3VqdXRzdXJvbmJ1blwgOwor55Sf54mp5a2m6ICFIDwgc2VpYnV0c3VnYWt1c2hhXCA7Civlha3nmb7lha3lj7cgPCByb3BweWFrdXJva3Vnb3VcIDsKK+aAneW8geWTsuWtpiA8IHNoaWJlbnRldHN1Z2FrdVwgOwor5Zu95YaF6KaP5qC85YyWIDwga29rdW5haWtpa2FrdWthXCA7CivlibXnq4voqJjlv7Xml6UgPCBzb3VyaXRzdWtpbmVuYmlcIDsKK+mHkemKreeZu+mMsuWZqCA8IGtpbnNlbnRvdXJva3VraVwgOwor5oqX55Sf54mp6LOqIDwga291c2VpYnVzc2hpdHN1XCA7CivlirTlg43ntYTlkIjms5UgPCByb3Vkb3VrdW1pYWlob3VcIDsKK+e0oOW9ouadkOeUo+alrSA8IHNva2VpemFpc2FuZ3lvdVwgOwor5rS75YuV5YaZ55yfIDwga2F0c3Vkb3VzaGFzaGluXCA7CivkuqTmj5vosr/mmJPliLYgPCBrb3VrYW5ib3Vla2lzZWlcIDsKK+ePvuWcsOmnkOWcqOWToSA8IGdlbmNoaWNodXV6YWlpblwgOwor5pyA5bCP6Ieq5LmX5rOVIDwgc2Fpc2hvdWppam91aG91XCA7CivlsI/lnovkuZfnlKjou4ogPCBrb2dhdGFqb3V5b3VzaGFcIDsKK+WxnuaAp+WApOihjOWIlyA8IHpva3VzZWd5b3VyZXRzdVwgOwor5rW36LuN5YW15a2m5qChIDwga2FpZ3VuaGVpZ2Fra291XCA7Civnsr7npZ7oloTlvLEgPCBzZWlzaGluaGFrdWpha3VcIDsKK+W8t+i/q+ims+W/tSA8IGt5b3VoYWt1a2FuJyduZW5cIDsKK+m7hOmBk+WNgeS6jOWuriA8IGtvdWRvdWp1dW5pa3l1dVwgOwor6Ium5oOF5Yem55CG5qmf6ZaiIDwga3Vqb3VzaG9yaWtpa2FuXCA7Civou43nuK7ljZTlrpogPCBndW5zaHVrdWt5b3V0ZWlcIDsKK+edgOmZuOWcsOW4ryA8IGNoYWt1cmlrdWNoaXRhaVwgOwor54Kt5aG154iG55m6IDwgdGFuamluYmFrdWhhdHN1XCA7Civoo5zliqnoqJjmhrboo4Xnva4gPCBob2pva2lva3Vzb3VjaGlcIDsKK+eUn+a0u+eSsOWigyA8IHNlaWthdHN1a2Fua3lvdVwgOwor5Ye65p2l6auY5LuV5LqLIDwgZGVraWRha2FzaGlnb3RvXCA7CivmioDooZPpnanmlrAgPCBnaWp1dHN1a2FrdXNoaW5cIDsKK+izh+eUo+iyoOWCteihqCA8IHNoaXNhbmZ1c2FpaHlvdVwgOwor57Kf57KS57WQ5qC4IDwgem9rdXJ5dXVrZWtrYWt1XCA7CivniYjmqKnmiYDmnInogIUgPCBoYW5rZW5zaG95dXVzaGFcIDsKK+S/oeW+kuS8neWLleiAhSA8IHNoaW50b2RlbmRvdXNoYVwgOwor5Luu5Y+X5Y+W6Ki8IDwga2FyaXVrZXRvcmlzaG91XCA7CivmlrDogZ7phY3pgZQgPCBzaGluYnVuaGFpdGF0c3VcIDsKK+WNkualreirluaWhyA8IHNvdHN1Z3lvdXJvbmJ1blwgOwor55m76Yyy5ZWG5qiZIDwgdG91cm9rdXNob3VoeW91XCA7Civkv6HnlKjpipjmn4QgPCBzaGluJyd5b3VtZWlnYXJhXCA7Civmk43mtYTnkaDnkoMgPCBheWF0c3VyaWpvdXJ1cmlcIDsKK+WFseWQjOeUn+a0uyA8IGt5b3Vkb3VzZWlrYXRzdVwgOwor5a6Y6IO95Li7576p6ICFIDwga2FuJydub3VzaHVnaXNoYVwgOwor5Lyd6YGU54m55oCnIDwgZGVudGF0c3V0b2t1c2VpXCA7Civph5Hlo7rnnLwgPCBrYW5hdHN1Ym9tYW5ha29cIDsKK+S/oeS7sOeUn+a0uyA8IHNoaW5rb3VzZWlrYXRzdVwgOwor6YO35Zyf5bCP6KqsIDwga3lvdWRvc2hvdXNldHN1XCA7Civpm4blm6PnlJ/mtLsgPCBzaHV1ZGFuc2Vpa2F0c3VcIDsKK+iBlumciumZjeiHqOelrSA8IHNlaXJlaWtvdXJpbnNhaVwgOwor6aeQ5pel5aSn5L2/IDwgY2h1dW5pY2hpdGFpc2hpXCA7Civls7blm73moLnmgKcgPCBzaGltYWd1bmlrb25qb3VcIDsKK+a1geihjOaAp+iEs+eCjiA8IHJ5dXVrb3VzZWlub3VlblwgOwor6KiY5b+16KuW5paH6ZuGIDwga2luZW5yb25idW5zaHV1XCA7Civoh6rli5XpgKPntZDmqZ8gPCBqaWRvdXJlbmtldHN1a2lcIDsKK+Wkp+mZuOaAp+awl+WAmSA8IHRhaXJpa3VzZWlraWtvdVwgOwor5bem5bCP5ous5bynIDwgaGlkYXJpc2hvdWtha2tvXCA7CivmoLjlhbXlmajlrp/pqJMgPCBrYWt1aGVpa2lqaWtrZW5cIDsKK+awkeaXj+Wul+aVmSA8IG1pbnpva3VzaHV1a3lvdVwgOwor5pel5Lit6Z+T6LaKIDwgbml0Y2h1dWthbicnZXRzdVwgOwor6KqH5aSn5aaE5oOz54uCIDwga29kYWltb3Vzb3VreW91XCA7Civpu5LoibLngavolqwgPCBrb2t1c2hva3VrYXlha3VcIDsKK+S4h+acieelnuaVmSA8IGJhbicneXV1c2hpbmt5b3VcIDsKK+mgreiEs+a1geWHuiA8IHp1bm91cnl1dXNodXRzdVwgOwor55u05o6l6Kmx5rOVIDwgY2hva3VzZXRzdXdhaG91XCA7CivouqvliIboqLzmmI7mm7ggPCBtaWJ1bnNob3VtZWlzaG9cIDsKK+aWh+Wtl+WkmumHjeaUvumAgSA8IG1vaml0YWp1dWhvdXNvdVwgOwor5Yy75bir5Zu95a626Kmm6aiTIDwgaXNoaWtva2thc2hpa2VuXCA7CivmlofljJbkurrpoZ7lraYgPCBidW5rYWppbnJ1aWdha3VcIDsKK+W9ouizqui7ouaPmyA8IGtlaXNoaXRzdXRlbmthblwgOwor56ys5LiJ5qyh55Sj5qWtIDwgZGFpc2FuamlzYW5neW91XCA7CivmraPnnJ/mraPpipggPCBzaG91c2hpbnNob3VtZWlcIDsKK+eIhuW8vueZuuiogCA8IGJha3VkYW5oYXRzdWdlblwgOwor5paH5YyW5aSn6Z2p5ZG9IDwgYnVua2FkYWlrYWt1bWVpXCA7Civnm7Tnq4vkuI3li5UgPCBjaG9rdXJpdHN1ZnVkb3VcIDsKK+WVhualremBk+W+syA8IHNob3VneW91ZG91dG9rdVwgOwor6Zmz5YiX5a6kIDwgY2hpbnJldHN1c2hpdHN1XCA7CivnibnoqK3kvJrloLQgPCB0b2t1c2V0c3VrYWlqb3VcIDsKK+mdnuWxgOaJgOWIhuWykCA8IGhpa3lva3VzaG9idW5raVwgOwor5qC454mp55CG5a2mIDwga2FrdWJ1dHN1cmlnYWt1XCA7CivogqLkvZPkuI3oh6rnlLHlhZAgPCBzaGl0YWlmdWppeXV1amlcIDsKK+S7ruWQjea8ouWtl+WkieaPmyA8IGthbmFrYW5qaWhlbmthblwgOwor55u056uL54y/5Lq6IDwgY2hva3VyaXRzdWVuamluXCA7CivplqLkv4Lku6PlkI3oqZ4gPCBrYW5rZWlkYWltZWlzaGlcIDsKK+WkmuWbveexjeiogOiqniA8IHRha29rdXNla2lnZW5nb1wgOwor6LaF6YCj57WQ5a2QIDwgY2hvdXJlbmtldHN1c2hpXCA7CivmsLTpioDmsJflnKfoqIggPCBzdWlnaW5raWF0c3VrZWlcIDsKK+eUsuirluS5memngSA8IGtvdXJvbicnb3RzdWJha3VcIDsKK+WFkOerpeW/g+eQhuWtpiA8IGppZG91c2hpbnJpZ2FrdVwgOwor54mp55qE6LOH5rqQIDwgYnV0c3V0ZWtpc2hpZ2VuXCA7Civnm7TmjqXmlK/mj7QgPCBjaG9rdXNldHN1c2hpZW5cIDsKK+epuua0nuWMluePvuixoSA8IGt1dWRvdWthZ2Vuc2hvdVwgOwor54Sh55CG5pa556iL5byPIDwgbXVyaWhvdXRlaXNoaWtpXCA7CivmlrDliLbkuK3lraYgPCBzaGluc2VpY2h1dWdha3VcIDsKK+Wcp+WKm+Wbo+S9kyA8IGF0c3VyeW9rdWRhbnRhaVwgOwor5rip6KGA5YuV54mpIDwgb25rZXRzdWRvdWJ1dHN1XCA7CivkuqTlt67lr77np7DmgKcgPCBrb3VzYXRhaXNob3VzZWlcIDsKK+S4reeri+WKtOmAoyA8IGNodXVyaXRzdXJvdXJlblwgOwor54m55Yil5a6kIDwgdG9rdWJldHN1c2hpdHN1XCA7CivnoJTnqbbmtLvli5UgPCBrZW5reXV1a2F0c3Vkb3VcIDsKK+iHqueEtuWTsuWtpiA8IHNoaXplbnRldHN1Z2FrdVwgOwor5qCq5Li757eP5LyaIDwga2FidW51c2hpc291a2FpXCA7CivmgKfmoLzliKTliKUgPCBzZWlrYWt1aGFuYmV0c3VcIDsKK+WWp+WYqeS4oeaIkOaVlyA8IGtlbmthcnlvdXNlaWJhaVwgOwor6YGO5aSx5YK35a6zIDwga2FzaGl0c3VzaG91Z2FpXCA7CivpgJrkv6Hlt6XlraYgPCB0c3V1c2hpbmtvdWdha3VcIDsKK+WQjOS4gOS6uueJqSA8IGRvdWl0c3VqaW5idXRzdVwgOwor5Zu95a625YWs5YuZ5ZOh5rOVIDwga29ra2Frb3VtdWluaG91XCA7CivllYblrabljZrlo6sgPCBzaG91Z2FrdWhha3VzaGlcIDsKK+W/g+mgrea7heWNtCA8IHNoaW50b3VtZWtreWFrdVwgOwor5by36KGM5o6h5rG6IDwga3lvdWtvdXNhaWtldHN1XCA7CivoppbogbTopprmqZ/lmaggPCBzaGljaG91a2FrdWtpa2lcIDsKK+WwseS7u+a8lOiqrCA8IHNodXVuaW4nJ2VuemV0c3VcIDsKK+afk+iJsuS9k+eVsOW4uCA8IHNlbnNob2t1dGFpaWpvdVwgOwor5ZCN6KuW5Y2T6KqsIDwgbWVpcm9udGFrdXNldHN1XCA7Civms6jlhaXmlZnogrIgPCBjaHV1bnl1dWt5b3Vpa3VcIDsKK+WQkeeyvuelnuiWrCA8IGtvdXNlaXNoaW4nJ3lha3VcIDsKK+e1kOWpmumBqem9ouacnyA8IGtla2tvbnRla2lyZWlraVwgOwor5ry46L+R55qE6Ieq55SxIDwgemVua2ludGVraWppeXV1XCA7CivliIbliJfooYzpgLIgPCBidW5yZXRzdWtvdXNoaW5cIDsKK+mjn+aWmeWTgeW6lyA8IHNob2t1cnlvdWhpbnRlblwgOwor5oSP5b+X5rG65a6a5qmf6ZaiIDwgaXNoaWtldHRlaWtpa2FuXCA7CivkuLvovp7ntKDmgKfljp/nkIYgPCBzaHVqaXNvc2VpZ2VucmlcIDsKK+a9ruaxkOaRqeaTpiA8IGNob3VzZWtpbWFzYXRzdVwgOwor56+A6Laz5YuV54mpIDwgc2Vzc29rdWRvdWJ1dHN1XCA7Civpo5/nianpgKPpjpYgPCBzaG9rdW1vdHN1cmVuc2FcIDsKK+S4reiCieS4reiDjCA8IGNodXVuaWt1Y2h1dXplaVwgOwor56S+5Lya5rCR5Li75YWaIDwgc2hha2FpbWluc2h1dG91XCA7Civpm4bkuK3mlLvmkoMgPCBzaHV1Y2h1dWtvdWdla2lcIDsKK+eiuuWumuWIpOaxuiA8IGtha3V0ZWloYW5rZXRzdVwgOwor5bCR5aWz5bCP6KqsIDwgc2hvdWpvc2hvdXNldHN1XCA7Civnp4HoqK3lv5zmj7Tlm6MgPCBzaGlzZXRzdW91ZW5kYW5cIDsKK+WNmuWtpuWKm+ihjCA8IGhha3VnYWt1cnlva2tvdVwgOwor57WM5riI5ZCM5Y+L5LyaIDwga2VpemFpZG91eXV1a2FpXCA7Civlj43oqLzlj6/og73mgKcgPCBoYW5zaG91a2Fub3VzZWlcIDsKK+WCjeezu+ihgOaXjyA8IGJvdWtlaWtldHN1em9rdVwgOwor5Lit6ZaT5YaF6ZajIDwgY2h1dWthbicnbmFpa2FrdVwgOwor5Y2Y54us5L6b57WmIDwgdGFuZG9rdWt5b3VreXV1XCA7CivmkKzpgIHlkajms6LmlbAgPCBoYW5zb3VzaHV1aGFzdXVcIDsKK+WksealreS/nemZuiA8IHNoaXRzdWd5b3Vob2tlblwgOwor54m55Yil5Lya6KiIIDwgdG9rdWJldHN1a2Fpa2VpXCA7CivmjK/luYXlpInoqr8gPCBzaGlucHVrdWhlbmNob3VcIDsKK+W6g+WRiuWPjuWFpSA8IGtvdWtva3VzaHV1bnl1dVwgOwor5Lit5Zu95aSn6Zm4IDwgY2h1dWdva3V0YWlyaWt1XCA7CivmnIDpq5jmjIflsI7ogIUgPCBzYWlrb3VzaGlkb3VzaGFcIDsKK+aUvuWHuueJqeizhyA8IGhvdXNodXRzdWJ1c3NoaVwgOwor6YWN6YGU6Ki85piOIDwgaGFpdGF0c3VzaG91bWVpXCA7CivmnIDntYLnm67nmoQgPCBzYWlzaHV1bW9rdXRla2lcIDsKK+iRoeiQhOeKtueQg+iPjCA8IGJ1ZG91am91a3l1dWtpblwgOwor5YWo57+86aOb6KGM5qmfIDwgemVuJyd5b2t1aGlrb3VraVwgOwor5LiA6JOu5omY55SfIDwgaWNoaXJlbnRha3VzaG91XCA7CivpgJ/lirnmgKfogqXmlpkgPCBzb2trb3VzZWloaXJ5b3VcIDsKK+S4ieinkua4rOmHjyA8IHNhbmtha3Vzb2t1cnlvdVwgOwor5YuV54mp5a2m6ICFIDwgZG91YnV0c3VnYWt1c2hhXCA7CivljJblrabnianos6ogPCBrYWdha3VidXNzaGl0c3VcIDsKK+mBheWKueaAp+iCpeaWmSA8IGNoaWtvdXNlaWhpcnlvdVwgOwor5Zu957KL5Li7576p6ICFIDwga29rdXN1aXNodWdpc2hhXCA7CivnhrHljp/lrZDmoLggPCBuZXRzdWdlbnNoaWtha3VcIDsKK+WcsOizquiqv+afuyA8IGNoaXNoaXRzdWNob3VzYVwgOwor5pat5by+5oCn5L+C5pWwIDwgZGFuZGFuc2Vpa2Vpc3V1XCA7Civmra/liJfnn6/mraMgPCBzaGlyZXRzdWt5b3VzZWlcIDsKK+Wbm+WNgeS4g+WjqyA8IHNoaWp1dXNoaWNoaXNoaVwgOwor5LqM5qyh5pa556iL5byPIDwgbmlqaWhvdXRlaXNoaWtpXCA7CivljYHmnIjpnanlkb0gPCBqdXVnYXRzdWtha3VtZWlcIDsKK+W/nOeUqOW/g+eQhuWtpiA8IG91eW91c2hpbnJpZ2FrdVwgOwor5paH6LOq5b2s5b2sIDwgYnVuc2hpdHN1aGlucGluXCA7Civnsr7npZ7nlbDluLjogIUgPCBzZWlzaGluJydpam91c2hhXCA7CivntKvmsLTmmbYgPCBtdXJhc2FraXp1aXNob3VcIDsKK+S/oeiol+Wlkee0hCA8IHNoaW50YWt1a2VpeWFrdVwgOwor5Ye655Sf5bm05pyI5pelIDwgc2h1c3NlaW5lbmdhcHBpXCA7Civni6znq4vmiKbkuokgPCBkb2t1cml0c3VzZW5zb3VcIDsKK+eBq+WKm+eZuumbuyA8IGthcnlva3VoYXRzdWRlblwgOwor6YCf6YGU6YO15L6/IDwgc29rdXRhdHN1eXV1YmluXCA7CivlvIHorbflo6vkuovli5nmiYAgPCBiZW5nb3NoaWppbXVzaG9cIDsKK+Wbm+eZvuWbm+eXhSA8IHNoaWh5YWt1c2hpYnlvdVwgOwor5YuV6Kme54q25ZCN6KmeIDwgZG91c2hpam91bWVpc2hpXCA7CivlhYPluLPmrovpq5ggPCBtb3RvY2hvdXphbmRha2FcIDsKK+iHqueUseijgemHj+aoqSA8IGppeXV1c2FpcnlvdWtlblwgOwor5Lit5aSu6ZuG5qip5YyWIDwgY2h1dW91c2h1dWtlbmthXCA7CivnhKHliKnmga/oqLzliLggPCBtdXJpc29rdXNob3VrZW5cIDsKK+aKveixoee+juihkyA8IGNodXVzaG91YmlqdXRzdVwgOwor54mp6LOq5paH5piOIDwgYnVzc2hpdHN1YnVubWVpXCA7CivotoXniannkIblraYgPCBjaG91YnV0c3VyaWdha3VcIDsKK+S7gee+qeekvOaZuuS/oSA8IGppbmdpcmVpY2hpc2hpblwgOwor5pu05bm05pyf6Zqc5a6zIDwga291bmVua2lzaG91Z2FpXCA7Civlm73oqp7lr6norbDkvJogPCBrb2t1Z29zaGluZ2lrYWlcIDsKK+WcsOaWueijgeWIpOaJgCA8IGNoaWhvdXNhaWJhbnNob1wgOwor6aOf57On5LiN6LazIDwgc2hva3VyeW91YnVzb2t1XCA7CivlhazlhbHmlr3oqK0gPCBrb3VreW91c2hpc2V0c3VcIDsKK+iHquWLleaUueacreapnyA8IGppZG91a2Fpc2F0c3VraVwgOwor5Y2X5qW15p2h57SEIDwgbmFua3lva3Vqb3V5YWt1XCA7CivmnKrlsLHlrablhZDnq6UgPCBtaXNodXVnYWt1amlkb3VcIDsKK+WFteWKm+WJiua4myA8IGhlaXJ5b2t1c2FrdWdlblwgOwor5Y+W57eg5b25IDwgdG9yaXNoaW1hcml5YWt1XCA7Civlhazogbfov73mlL4gPCBrb3VzaG9rdXRzdWlob3VcIDsKK+Wtpuihk+Wbo+S9kyA8IGdha3VqdXRzdWRhbnRhaVwgOwor5a6f5pmC6ZaT5Yem55CGIDwgaml0c3VqaWthbnNob3JpXCA7CivlhbHnlJ/nlJ/niakgPCBreW91c2Vpc2VpYnV0c3VcIDsKK+iiq+WtkOakjeeJqSA8IGhpc2hpc2hva3VidXRzdVwgOwor5pyJ55Wc6L6y5qWtIDwgeXV1Y2hpa3Vub3VneW91XCA7Civlr4TnlJ/mpI3niakgPCBraXNlaXNob2t1YnV0c3VcIDsKK+mgkOmHkea6luWCmeeOhyA8IHlva2luanVuYmlyaXRzdVwgOwor5aSp5L2T5pyb6YGg6Y+hIDwgdGVudGFpYm91ZW5reW91XCA7CivnpL7kvJroq7jnp5HlraYgPCBzaGFrYWlzaG9rYWdha3VcIDsKK+atpuS+oOWwj+iqrCA8IGJ1a3lvdXNob3VzZXRzdVwgOwor5pyo6LOq57mK57atIDwgbW9rdXNoaXRzdXNlbicnaVwgOwor55u06YCa5YiX6LuKIDwgY2hva3V0c3V1cmVzc2hhXCA7Civou6Lnva7ooYzliJcgPCB0ZW5jaGlneW91cmV0c3VcIDsKK+azleW+i+S6i+WLmeaJgCA8IGhvdXJpdHN1amltdXNob1wgOwor5Ye65YuV5ZG95LukIDwgc2h1dHN1ZG91bWVpcmVpXCA7CivoiIzlhYjkuInlr7ggPCBzaGl0YXNha2lzYW56dW5cIDsKK+Wkp+ihhumjn+WggiA8IHRhaXNodXVzaG9rdWRvdVwgOwor5a6f5Yip5Li7576p6ICFIDwgaml0c3VyaXNodWdpc2hhXCA7CivlhoXplqPplqPlg5ogPCBuYWlrYWt1a2FrdXJ5b3VcIDsKK+acqueiuuiqjeaDheWgsSA8IG1pa2FrdW5pbmpvdWhvdVwgOwor6ICB5Lq65oCn55e05ZGGIDwgcm91amluc2VpY2hpaG91XCA7CivlnKjlpJbnoJTnqbblk6EgPCB6YWlnYWlrZW5reXV1aW5cIDsKK+S6uuWPo+eIhueZuiA8IGppbmtvdWJha3VoYXRzdVwgOwor5a6i6Kaz5Li7576p6ICFIDwga3lha2thbnNodWdpc2hhXCA7CivniYflj6PpsK8gPCBrYXRha3VjaGlpd2FzaGlcIDsKK+Wcp+e4ruWKueeOhyA8IGFzc2h1a3Vrb3VyaXRzdVwgOwor5Zu956uL6YqA6KGMIDwga29rdXJpdHN1Z2lua291XCA7CivkuIDnl4Xmga/ngb0gPCBpY2hpYnlvdXNva3VzYWlcIDsKK+mBuOaJi+aoqeWkp+S8miA8IHNlbnNodWtlbnRhaWthaVwgOwor5q2j6YeR5Y+W5byVIDwgc2hvdWtpbnRvcmloaWtpXCA7CivmtYHpgJrpnanlkb0gPCByeXV1dHN1dWtha3VtZWlcIDsKK+iKuOihk+S9nOWTgSA8IGdlaWp1dHN1c2FrdWhpblwgOwor5LiL57Sa6KOB5Yik5omAIDwga2FreXV1c2FpYmFuc2hvXCA7CivpgJPpmY3lpInlnKflmaggPCB0ZWlrb3VoZW5hdHN1a2lcIDsKK+mZkOeVjOmhleW+rumPoSA8IGdlbmthaWtlbmJpa3lvdVwgOwor5paw6IiI5a6X5pWZIDwgc2hpbmtvdXNodXVreW91XCA7Civnn6XorZjlt6XlraYgPCBjaGlzaGlraWtvdWdha3VcIDsKK+S9k+izquaUueWWhCA8IHRhaXNoaXRzdWthaXplblwgOwor54mH5YG06YCa6KGMIDwga2F0YWdhd2F0c3V1a291XCA7CivljZfmpbXlpKfpmbggPCBuYW5reW9rdXRhaXJpa3VcIDsKK+iJtueskeWwj+ipsSA8IGVuc2hvdWtvYmFuYXNoaVwgOwor6KaB5pKD5oim6ZeY5qmfIDwgeW91Z2VraXNlbnRvdWtpXCA7CivllYbmpa3nvo7ooZMgPCBzaG91Z3lvdWJpanV0c3VcIDsKK+elnuiJsuiHquiLpSA8IHNoaW5zaG9rdWppamFrdVwgOwor5rC06Zqb5L2c5oimIDwgbWl6dWdpd2FzYWt1c2VuXCA7CivkuI3lhazlubPnq7bkuokgPCBmdWtvdWhlaWt5b3Vzb3VcIDsKK+eJqeeahOiovOaLoCA8IGJ1dHN1dGVraXNob3Vrb1wgOwor5YWs6KqN5Lya6KiI5aOrIDwga291bmlua2Fpa2Vpc2hpXCA7Civmk43mpa3nn63nuK4gPCBzb3VneW91dGFuc2h1a3VcIDsKK+S4jeWAkue/gSA8IG9raWFnYXJpa29ib3NoaVwgOwor5YaF6IKh6IaP6JasIDwgdWNoaW1hdGFnb3V5YWt1XCA7Civniq/ooYzlo7DmmI7mlocgPCBoYW5rb3VzZWltZWlidW5cIDsKK+a2iOiyu+iAheS+oeagvCA8IHNob3VoaXNoYWtha2FrdVwgOwor6Z+z5qW96KmV6KuW5a62IDwgb25nYWt1aHlvdXJvbmthXCA7CivoibLlvanmhJ/oppogPCBzaGlraXNhaWthbmtha3VcIDsKK+WFrOWuieiqv+afu+W6gSA8IGtvdWFuY2hvdXNhY2hvdVwgOwor5LmX6ZmN6LuK5YSq5YWIIDwgam91a291c2hheXV1c2VuXCA7Civkurrlt6XnlJjlkbPmlpkgPCBqaW5rb3VrYW5taXJ5b3VcIDsKK+WcqOmDt+i7jeS6uuS8miA8IHphaWdvdWd1bmppbmthaVwgOwor6Ieq6KiY5rm/5bqm6KiIIDwgamlraXNoaXRzdWRva2VpXCA7CivlpKfntbHkuIDnkIboq5YgPCBkYWl0b3VpdHN1cmlyb25cIDsKK+i2heiDveWKm+iAhSA8IGNob3Vub3VyeW9rdXNoYVwgOwor5qSc5a6a5pWZ56eR5pu4IDwga2VudGVpa3lvdWthc2hvXCA7CivljLvlrabmioDooZPlo6sgPCBpZ2FrdWdpanV0c3VzaGlcIDsKK+Wkqeeah+iqleeUn+aXpSA8IHRlbicnbm91dGFuam91YmlcIDsKK+WkquW5s+a0i+WcsOWfnyA8IHRhaWhlaXlvdWNoaWlraVwgOwor5pyo6aOf5LiK5Lq6IDwgbW9rdWppa2lzaG91bmluXCA7Civoh6rnlLHkuLvnvqnlm73lrrYgPCBqaXl1dXNodWdpa29ra2FcIDsKK+mAo+i8ieWwj+iqrCA8IHJlbnNhaXNob3VzZXRzdVwgOwor6LOH55Sj5YaN6KmV5L6hIDwgc2hpc2Fuc2FpaHlvdWthXCA7Civmg4Xnt5LpmpzlrrPlhZAgPCBqb3VjaG9zaG91Z2FpamlcIDsKK+aXpeacrOWbveaGsuazlSA8IG5paG9ua29rdWtlbnBvdVwgOwor5Lq65rCR6Kej5pS+6LuNIDwgamlubWlua2FpaG91Z3VuXCA7CivnhKbnhrHlnLDnjYQgPCBzaG91bmV0c3VqaWdva3VcIDsKK+mqqOeyl+mshueXhyA8IGtvdHN1c29zaG91c2hvdVwgOwor5rWB6YCa6Ki85Yi4IDwgcnl1dXRzdXVzaG91a2VuXCA7Civlt67lvJXli5jlrpogPCBzYXNoaWhpa2lrYW5qb3VcIDsKK+mWi+iFueaJi+ihkyA8IGthaWZ1a3VzaHVqdXRzdVwgOwor5Y2z5pel5Ye66I23IDwgc29rdWppdHN1c2h1a2thXCA7Civntbblr77lkJvkuLvliLYgPCB6ZXR0YWlrdW5zaHVzZWlcIDsKK+agquW8j+mFjeW9kyA8IGthYnVzaGlraWhhaXRvdVwgOwor6JuN5YWJ54mp6LOqIDwga2Vpa291YnVzc2hpdHN1XCA7CivogbTopprnpZ7ntYwgPCBjaG91a2FrdXNoaW5rZWlcIDsKK+aHsuaIkuWFjeiBtyA8IGNob3VrYWltZW5zaG9rdVwgOwor6Iq46KGT5oSb5aW95a62IDwgZ2VpanV0c3VhaWtvdWthXCA7CivnorrlrprnlLPlkYogPCBrYWt1dGVpc2hpbmtva3VcIDsKK+iBt+alrei7jeS6uiA8IHNob2t1Z3lvdWd1bmppblwgOwor56eB55Sf5YWQ5Ye655SjIDwgc2hpc2VpamlzaHVzc2FuXCA7CivnlJ/lkb3ntq3mjIHoo4Xnva4gPCBzZWltZWlpamlzb3VjaGlcIDsKK+agquW8j+WFrOmWiyA8IGthYnVzaGlraWtvdWthaVwgOwor5buD5LuP5q+A6YeIIDwgaGFpYnV0c3VraXNoYWt1XCA7CivkuKHpmaLljZTorbDkvJogPCByeW91aW5reW91Z2lrYWlcIDsKK+Wwj+eUsOWOn+aPkOeBryA8IG9kYXdhcmFkam91Y2hpblwgOwor55y85bqV5Ye66KGAIDwgZ2FudGVpc2h1a2tldHN1XCA7Civkv6Hku7vmipXnpaggPCBzaGluJyduaW50b3VoeW91XCA7CivplqLpgKPos6rllY8gPCBrYW5yZW5zaGl0c3Vtb25cIDsKK+W7uueviealreiAhSA8IGtlbmNoaWt1Z3lvdXNoYVwgOwor5ZOy5a2m5Y+y6KaBIDwgdGV0c3VnYWt1c2hpeW91XCA7Civnn6XorZjnlKPmpa0gPCBjaGlzaGlraXNhbmd5b3VcIDsKK+iyqOeJqeiHquWLlei7iiA8IGthbW90c3VqaWRvdXNoYVwgOwor54mH5omL6ZaT5LuV5LqLIDwga2F0YXRlbWFzaGlnb3RvXCA7CivnpZ7ntYzlm57ot6/ntrIgPCBzaGlua2Vpa2Fpcm9tb3VcIDsKK+a1mua4q+S9nOalrSA8IHNodW5zZXRzdXNhZ3lvdVwgOwor5Y245aOy5biC5aC0IDwgb3Jvc2hpdXJpc2hpam91XCA7CivpgJrkv6HmlZnogrIgPCB0c3V1c2hpbmt5b3Vpa3VcIDsKK+WMl+aWl+S4g+aYnyA8IGhva3V0b3NoaWNoaXNlaVwgOwor5q2j5byP55m66KGoIDwgc2Vpc2hpa2loYXBweW91XCA7Civngq3ntKDljJblkIjniakgPCB0YW5zb2thZ291YnV0c3VcIDsKK+aatOWKm+mdqeWRvSA8IGJvdXJ5b2t1a2FrdW1laVwgOwor5rCX566h5pSv5ZaY5oGvIDwga2lrYW5zaGl6ZW5zb2t1XCA7CivlhbHnlKPkuK3lm70gPCBreW91c2FuY2h1dWdva3VcIDsKK+ajruael+mJhOmBkyA8IHNoaW5yaW50ZXRzdWRvdVwgOwor57WM5riI5Y2U5YqbIDwga2VpemFpa3lvdXJ5b2t1XCA7CivniannmoTmkI3lrrMgPCBidXRzdXRla2lzb25nYWlcIDsKK+S4jeiCluengSA8IGZ1c2hvdXdhdGFrdXNoaVwgOwor56m65Lit54iG5pKDIDwga3V1Y2h1dWJha3VnZWtpXCA7CivkuI3li5XnlKPmpa3ogIUgPCBmdWRvdXNhbmd5b3VzaGFcIDsKK+a1t+a0i+awl+ixoeWPsCA8IGthaXlvdWtpc2hvdWRhaVwgOwor5aSx5qWt546HIDwgc2hpdHN1Z3lvdXJpdHN1XCA7CivlubTkuK3lpLHoqIAgPCBuZW5qdXVzaGl0c3VnZW5cIDsKK+aKveWHuueJqSA8IGNodXVzaHV0c3VidXRzdVwgOwor5q2j5pa56KGM5YiXIDwgc2VpaG91Z3lvdXJldHN1XCA7Civoh6rli5Xnv7voqLPmqZ8gPCBqaWRvdWhvbicneWFrdWtpXCA7CivogIHoi6XnlLflpbMgPCByb3VueWFrdW5hbicnbnlvXCA7CivnuITmloflvI/lnJ/lmaggPCBqb3Vtb25zaGlraWRva2lcIDsKK+S/ruS6huiovOabuCA8IHNodXVyeW91c2hvdXNob1wgOwor5LiL562J5qSN54mpIDwga2F0b3VzaG9rdWJ1dHN1XCA7CivovLjlhaXoqrLlvrTph5EgPCB5dW55dXVrYWNob3VraW5cIDsKK+mhleiKseakjeeJqSA8IGtlbmthc2hva3VidXRzdVwgOwor6YeN5ZWG5Li7576p6ICFIDwganV1c2hvdXNodWdpc2hhXCA7CivlnLDlhYPorablr58gPCBqaW1vdG9rZWlzYXRzdVwgOwor5Lit5Zu95Zyw5pa5IDwgY2h1dWdva3VjaGlob3VcIDsKK+Wls+WPi+mBlCA8IG9uJyduYXRvbW9kYWNoaVwgOwor5LiJ5qCh57WC5LqGIDwgc2Fua291c2h1dXJ5b3VcIDsKK+S6uuW3peihgOa2siA8IGppbmtvdWtldHN1ZWtpXCA7CivmnInmgKfnlJ/mrpYgPCB5dXVzZWlzZWlzaG9rdVwgOwor6Yys6YeR6KGT5birIDwgcmVua2luanV0c3VzaGlcIDsKK+mBuueUo+ebuOe2mueojiA8IGlzYW5zb3V6b2t1emVpXCA7Civlr77ml6XmhJ/mg4UgPCB0YWluaWNoaWthbmpvdVwgOwor5q+Y5bus6YGu6YKj5LuPIDwgYmlydXNoYW5hYnV0c3VcIDsKK+eMpeiku+aWh+abuCA8IHdhaXNldHN1YnVuc2hvXCA7Civnmb7ml6XlkrMgPCBoeWFrdW5pY2hpemVraVwgOwor5Luu6KOF6KGM5YiXIDwga2Fzb3VneW91cmV0c3VcIDsKK+ato+W8puabsue3miA8IHNlaWdlbmt5b2t1c2VuXCA7CivmsqHlgIvmgKfnmoQgPCBib3RzdWtvc2VpdGVraVwgOwor54us56uL6YGL5YuVIDwgZG9rdXJpdHN1dW5kb3VcIDsKK+mWoueojuiHquS4u+aoqSA8IGthbnplaWppc2h1a2VuXCA7CivohLHohILnsonkubMgPCBkYXNzaGlmdW4nJ255dXVcIDsKK+WfuuacrOWRqOazouaVsCA8IGtpaG9uc2h1dWhhc3V1XCA7Civljp/lrZDlipvoiLkgPCBnZW5zaGlyeW9rdXNlblwgOwor5Zub6Lyq6aeG5YuV6LuKIDwgeW9ucmlua3Vkb3VzaGFcIDsKK+S4ieeQg+S4ieaMryA8IHNhbmt5dXVzYW5zaGluXCA7CivpnaLnmb3ljYrliIYgPCBvbW9zaGlyb2hhbmJ1blwgOwor5ZWG6Ii55aSn5a2mIDwgc2hvdXNlbmRhaWdha3VcIDsKK+WkqeWcsOS4h+eJqSA8IHRlbmNoaWJhbmJ1dHN1XCA7CivooYzliJflvI8gPCBneW91cmV0c3VzaGlraVwgOwor6ICQ54ax5ZCI6YeRIDwgdGFpbmV0c3Vnb3VraW5cIDsKK+mdmembu+awl+mYsuatoiA8IHNlaWRlbmtpYm91c2hpXCA7CivmlL/nlaXntZDlqZogPCBzZWlyeWFrdWtla2tvblwgOwor54m56auY6K2m5a+fIDwgdG9ra291a2Vpc2F0c3VcIDsKK+eFmeeqgeaOg+mZpOWkqyA8IGVudG90c3Vzb3VqaWZ1XCA7CivllYbmhaPnv5Lms5UgPCBzaG91a2Fuc2h1dWhvdVwgOwor5piG6Jmr5o6h6ZuGIDwga29uY2h1dXNhaXNodXVcIDsKK+S4reWbveaLs+azlSA8IGNodXVnb2t1a2VucG91XCA7Civnvo7ooZPnm6PnnaMgPCBiaWp1dHN1a2FudG9rdVwgOwor5Y+W5omx5Lq6IDwgdG9yaWF0c3VrYWluaW5cIDsKK+WJr+Wkp+e1semgmCA8IGZ1a3VkYWl0b3VyeW91XCA7CivkvJHmiKboqJjlv7Xml6UgPCBreXV1c2Vua2luZW5iaVwgOwor54Sm5oCn56Gr6YW4IDwgc2hvdXNlaXJ5dXVzYW5cIDsKK+Wtpuagoee+pOWItuW6piA8IGdha2tvdWd1bnNlaWRvXCA7Civlkajml4vmpa3ogIUgPCBzaHV1c2VuZ3lvdXNoYVwgOwor5Y2X5Zue5biw57eaIDwgbWluYW1pa2Fpa2lzZW5cIDsKK+aUvuWwhOe3muaKgOW4qyA8IGhvdXNoYXNlbmdpc2hpXCA7Civog47nlJ/li5XniakgPCB0YWlzZWlkb3VidXRzdVwgOwor5YWo5Zu95Lit57aZIDwgemVua29rdWNodXVrZWlcIDsKK+eJm+atqeaIpuihkyA8IGd5dXVob3Nlbmp1dHN1XCA7CivnqoHmkoPpmorlk6EgPCB0b3RzdWdla2l0YWlpblwgOwor57SE55m+5LiH5YaGIDwgeWFrdWh5YWt1bWFuZW5cIDsKK+S6uua1t+aIpuihkyA8IGppbmthaXNlbmp1dHN1XCA7Civlh7rlhaXlm70gPCBzaHV0c3VueXV1a29rdVwgOwor5a625bqt6KOB5Yik5omAIDwga2F0ZWlzYWliYW5zaG9cIDsKK+WkqeaWh+WtpueahCA8IHRlbm1vbmdha3V0ZWtpXCA7CivmgJ3moYjmipXpppYgPCBzaGlhbicnbmFnZWt1YmlcIDsKK+mVt+i3nembouaJk+iAhSA8IGNob3VreW9yaWRhc2hhXCA7Civoo4/lj6Pllrbmpa0gPCB1cmFndWNoaWVpZ3lvdVwgOwor5Lyd5aWH5bCP6KqsIDwgZGVua2lzaG91c2V0c3VcIDsKK+S4reeri+S4u+e+qSA8IGNodXVyaXRzdXNodWdpXCA7CivmiY3mp4zpoK0gPCBzYWlkenVjaGlhdGFtYVwgOwor56CU56m26LOH5paZIDwga2Vua3l1dXNoaXJ5b3VcIDsKK+WPpOeUn+eJqeWtpiA8IGtvc2VpYnV0c3VnYWt1XCA7Civmm7TnlJ/mlr3oqK0gPCBrb3VzZWlzaGlzZXRzdVwgOwor54mH6YGT5YiH56ymIDwga2F0YW1pY2hpa2lwcHVcIDsKK+aXpeacrOaomea6luaZgiA8IG5paG9uaHlvdWp1bmppXCA7CivmjqXntprliqnoqZ4gPCBzZXRzdXpva3Vqb3NoaVwgOwor6KqY5bCO6Zu75YuV5qmfIDwgeXV1ZG91ZGVuZG91a2lcIDsKK+mAhuiqrOeahCA8IGd5YWt1c2V0c3V0ZWtpXCA7Civoi7Hku4/mtbfls6EgPCBlaWZ1dHN1a2Fpa3lvdVwgOwor56iU5a6f5LiN6ImvIDwgbmVuaml0c3VmdXJ5b3VcIDsKK+W7uuWbveiomOW/teaXpSA8IGtlbmtva3VraW5lbmJpXCA7CivlhazooYbmtbTloLQgPCBrb3VzaHV1eW9rdWpvdVwgOwor5Ymv6aOf54mpIDwgZnVrdXNob2t1YnV0c3VcIDsKK+err+acq+ijhee9riA8IHRhbm1hdHN1c291Y2hpXCA7CivmloflrZfnrKblj7fljJbms5UgPCBtb2ppZnVnb3VrYWhvdVwgOwor5Lyd57Wx5Li7576p6ICFIDwgZGVudG91c2h1Z2lzaGFcIDsKK+mnkOi7iuaWmemHkSA8IGNodXVzaGFyeW91a2luXCA7Civos4fmnKzlj5blvJUgPCBzaGlob250b3JpaGlraVwgOwor5qCq5byP55u45aC0IDwga2FidXNoaWtpc291YmFcIDsKK+eZu+iomOeVquWPt+ashCA8IHRvdWtpYmFuZ291cmFuXCA7CivmranooYzogIXlhKrlhYggPCBob2tvdXNoYXl1dXNlblwgOwor54Sh5Lq65a6H5a6Z6Ii5IDwgbXVqaW4nJ3VjaHV1c2VuXCA7CivlhY3nlqvlj43lv5wgPCBtZW4nJ2VraWhhbicnbm91XCA7Civlu7roqK3kvJrnpL4gPCBrZW5zZXRzdWdhaXNoYVwgOwor5pys5pyr6aGb5YCSIDwgaG9ubWF0c3V0ZW50b3VcIDsKK+WIneW/l+iyq+W+uSA8IHNob3NoaWthbnRldHN1XCA7CivnvoXokITml6Xovp7lhbggPCByYXBvbmljaGlqaXRlblwgOwor55Sj5qWt6Z2p5ZG9IDwgc2FuZ3lvdWtha3VtZWlcIDsKK+WumuW5tOmAgOiBtyA8IHRlaW5lbnRhaXNob2t1XCA7Civlm73pmpvopqrlloQgPCBrb2t1c2Fpc2hpbnplblwgOwor5oCn5qC86Ki65patIDwgc2Vpa2FrdXNoaW5kYW5cIDsKK+WFqOi6q+ihsOW8sSA8IHplbnNoaW5zdWlqYWt1XCA7CivllY/poYzop6PmsbogPCBtb25kYWlrYWlrZXRzdVwgOwor5rip5pqW5YyW54++6LGhIDwgb25kYW5rYWdlbnNob3VcIDsKK+WTuuS5s+WLleeJqSA8IGhvbnl1dWRvdWJ1dHN1XCA7Civos4fmnKzms6jlhaUgPCBzaGlob25jaHV1bnl1dVwgOwor5L+u5qWt5bm06ZmQIDwgc2h1dWd5b3VuZW5nZW5cIDsKK+WppuS6uuWPguaUv+aoqSA8IGZ1amluc2Fuc2Vpa2VuXCA7Civoh6rnlLHmsJHkuLvlhZogPCBqaXl1dW1pbnNodXRvdVwgOwor57eR57as6KSS56ugIDwgcnlva3VqdWhvdXNob3VcIDsKK+eglOeptumhjOebriA8IGtlbmt5dXVkYWltb2t1XCA7Civnl4Xluorml6XoqowgPCBieW91c2hvdW5pc3NoaVwgOwor566X6KGT6KiI566XIDwgc2FuanV0c3VrZWlzYW5cIDsKK+W4sOWMluakjeeJqSA8IGtpa2FzaG9rdWJ1dHN1XCA7Civph5Hono3mgZDmhYwgPCBraW4nJ3l1dWt5b3Vrb3VcIDsKK+WAi+S9k+eZuueUn+irliA8IGtvdGFpaGFzc2Vpcm9uXCA7CivlpKflqIHlvrPlppnnjosgPCBkYWlpdG9rdW15b3VvdVwgOwor54m55Yil5o6q572uIDwgdG9rdWJldHN1c29jaGlcIDsKK+W8m+W8teaMr+WLlSA8IHNoaWNob3VzaGluZG91XCA7CivmiKbmiKblhaLlhaIgPCBzZW5zZW5reW91a3lvdVwgOwor5aSn6Z+T6Iiq56m65qmfIDwgdGFpa2Fua291a3V1a2lcIDsKK+ims+WFieaWveiorSA8IGthbmtvdXNoaXNldHN1XCA7CivlloTnlLflloTlpbMgPCB6ZW4nJ25hbnplbicnbnlvXCA7Civkv6HnlKjosqnlo7IgPCBzaGluJyd5b3VoYW5iYWlcIDsKK+acq+aiouelnue1jCA8IG1hc3Nob3VzaGlua2VpXCA7Civpqqjpq4Tnp7vmpI0gPCBrb3RzdXp1aWlzaG9rdVwgOwor6YGT5b6z5pWZ6IKyIDwgZG91dG9rdWt5b3Vpa3VcIDsKK+mHkeauv+eOiealvCA8IGtpbmRlbmd5b2t1cm91XCA7CivkuI3nibnlrprlpJrmlbAgPCBmdXRva3V0ZWl0YXN1dVwgOwor55Oi566q6a+wIDwgaHlvdXRhbicnbmFtYXp1XCA7CivmnbHljYrnkIMgPCBoaWdhc2hpaGFua3l1dVwgOwor5YuV54mp6LOqIDwgZG91YnV0c3VzaGl0c3VcIDsKK+eCuea7tOazqOWwhCA8IHRlbnRla2ljaHV1c2hhXCA7Civlt6Xlrabkv67lo6sgPCBrb3VnYWt1c2h1dXNoaVwgOwor6ZaA5aSW5LiN5Ye6IDwgbW9uZ2FpZnVzaHV0c3VcIDsKK+S4u+aDheS4u+e+qeiAhSA8IHNodWpvdXNodWdpc2hhXCA7Civms5Xlrprku6PnkIbkurogPCBob3V0ZWlkYWlyaW5pblwgOwor6YCa5L+h6KOF572uIDwgdHN1dXNoaW5zb3VjaGlcIDsKK+S9nOaIpuioiOeUuyA8IHNha3VzZW5rZWlrYWt1XCA7Civlhazplovlm7Pmm7jppKggPCBrb3VrYWl0b3Nob2thblwgOwor5aC05aSW5Y+W5byVIDwgam91Z2FpdG9yaWhpa2lcIDsKK+S/oeiol+mKgOihjCA8IHNoaW50YWt1Z2lua291XCA7CivkuIDmmYLplpPku6XlhoUgPCBpY2hpamlrYW4nJ2luYWlcIDsKK+Wig+eVjOiqv+aVtCA8IGt5b3VrYWljaG91c2VpXCA7CivkuLvlipvoiabpmoogPCBzaHVyeW9rdWthbnRhaVwgOwor5pWw55CG6KiA6Kqe5a2mIDwgc3V1cmlnZW5nb2dha3VcIDsKK+iBt+WgtOeSsOWigyA8IHNob2t1YmFrYW5reW91XCA7CivotorkuK3opIwgPCBldGNodXVmdW5kb3NoaVwgOwor5Ymy5byV5L6h5qC8IDwgd2FyaWJpa2lrYWtha3VcIDsKK+aVtOW9ouaJi+ihkyA8IHNlaWtlaXNodWp1dHN1XCA7CivphbjmgKfpo5/lk4EgPCBzYW5zZWlzaG9rdWhpblwgOwor5Y6f5a2Q5Yqb5a2mIDwgZ2Vuc2hpcmlraWdha3VcIDsKK+awtOS4ree/vOiIuSA8IHN1aWNodXV5b2t1c2VuXCA7CivpgbrnlKPnm7jntprkurogPCBpc2Fuc291em9rdW5pblwgOwor55m66YGU5q616ZqOIDwgaGF0dGF0c3VkYW5rYWlcIDsKK+aWueWQkeaOouefpeWZqCA8IGhvdWtvdXRhbmNoaWtpXCA7Civoq7joqqzntJvntJsgPCBzaG9zZXRzdWZ1bnB1blwgOwor5Lmz6YW46aOy5paZIDwgbnl1dXNhbicnaW5yeW91XCA7CivlgIvjgIXliKXliKUgPCBrb2tvYmV0c3ViZXRzdVwgOwor5Y+j5LiN6Kq/5rOVIDwga3VjaGlidWNob3Vob3VcIDsKK+i2heiHqueEtueahCA8IGNob3VzaGl6ZW50ZWtpXCA7CivnhrHlj6/loZHmqLnohIIgPCBuZXRzdWthc29qdXNoaVwgOwor5Zu96Ziy6ZW35a6YIDwga29rdWJvdWNob3VrYW5cIDsKK+ato+e1seS/oeaVmSA8IHNlaXRvdXNoaW5reW91XCA7CivlvLfljJblkIjlrr8gPCBreW91a2FnYXNzaHVrdVwgOwor5pyd6a6u5Lq65Y+CIDwgY2hvdXNlbicnbmluamluXCA7CivljbDljYrnuo8gPCBzaGlydXNoaWJhbnRlblwgOwor5p2f57ib5aSJ6aCFIDwgc29rdWJha3VoZW5rb3VcIDsKK+elnue1jOe1hOe5lCA8IHNoaW5rZWlzb3NoaWtpXCA7CivotoXotorplqLmlbAgPCBjaG91ZXRzdWthbnN1dVwgOwor5Yq5546H5ZCR5LiKIDwga291cml0c3Vrb3Vqb3VcIDsKK+eEoeapn+WMluWQiOeJqSA8IG11a2lrYWdvdWJ1dHN1XCA7Civku5XmlrnoqbEgPCBzaGlrYXRhYmFuYXNoaVwgOwor5aSn6ISz55qu6LOqIDwgZGFpbm91aGlzaGl0c3VcIDsKK+aUueacreS/giA8IGthaXNhdHN1Z2FrYXJpXCA7CivnlJ/kvZPlipvlraYgPCBzZWl0YWlyaWtpZ2FrdVwgOwor6YeN6KaB5paH5YyW6LKhIDwganV1eW91YnVua2F6YWlcIDsKK+WxseS4i+WFrOWckiA8IHlhbWFzaGl0YWtvdWVuXCA7CivlsYXplpPlhbzpo5/loIIgPCBpbWFrZW5zaG9rdWRvdVwgOwor5Y+j6L+w6Kmm6aiTIDwga291anV0c3VzaGlrZW5cIDsKK+S4gOaXpeeJh+aZgiA8IGljaGluaWNoaWhlbmppXCA7CivnpL7kvJrnlJ/mtLsgPCBzaGFrYWlzZWlrYXRzdVwgOwor5Ye654mI55uu6YyyIDwgc2h1cGFubW9rdXJva3VcIDsKK+WIpemAlOaUr+WHuiA8IGJldHRvc2hpc2h1dHN1XCA7CivnlLPlkYrntI3nqI4gPCBzaGlua29rdW5vdXplaVwgOwor5YmD5YiA6KemIDwga2FtaXNvcmlrYWJ1cmVcIDsKK+Wjsua4oeiovCA8IHVyaXdhdGFzaGlzaG91XCA7CivljbPmsbroo4HliKQgPCBzb2trZXRzdXNhaWJhblwgOwor55Ww5pa55bCO6Zu76IacIDwgaWhvdWRvdWRlbm1ha3VcIDsKK+eLrOeri+iHquWwiiA8IGRva3VyaXRzdWppc29uXCA7CivlqZrntITmjIfovKogPCBrb24nJ3lha3V5dWJpd2FcIDsKK+ihgOa2suWHneWbuiA8IGtldHN1ZWtpZ3lvdWtvXCA7Civlh7rlh6bpgLLpgIAgPCBzaHVzc2hvc2hpbnRhaVwgOwor5byT55+i5YWr5bmhIDwgeXVtaXlhaGFjaGltYW5cIDsKK+itpuWvn+aJi+W4syA8IGtlaXNhdHN1dGVjaG91XCA7Civogbfmpa3lqabkurogPCBzaG9rdWd5b3VmdWppblwgOwor5oyH56S65Luj5ZCN6KmeIDwgc2hpamlkYWltZWlzaGlcIDsKK+WbnuW+qeS4jeWPr+iDvSA8IGthaWZ1a3VmdWthbm91XCA7Civoh7Pnpo/ljYPlubQgPCBzaGlmdWt1c2VuJyduZW5cIDsKK+WkqeWcsOmWi+mXoiA8IHRlbmNoaWthaWJ5YWt1XCA7Civlhrflh43po5/lk4EgPCByZWl0b3VzaG9rdWhpblwgOwor6KOc6Laz6Kqs5piOIDwgaG9zb2t1c2V0c3VtZWlcIDsKK+S/oeeUqOeKtuaFiyA8IHNoaW4nJ3lvdWpvdXRhaVwgOwor57W25a++5rm/5bqmIDwgemV0dGFpc2hpdHN1ZG9cIDsKK+aYjuaYjueZveeZvSA8IG1laW1laWhha3VoYWt1XCA7Civmi53ph5HkuLvnvqnogIUgPCBoYWlraW5zaHVnaXNoYVwgOwor6LuN5YKZ57iu5bCPIDwgZ3VuYmlzaHVrdXNob3VcIDsKK+WNl+eEoemYv+W8pemZgOS7jyA8IG5hbXVhbWlkYWJ1dHN1XCA7CivmmrTlipvlm6Plk6EgPCBib3VyeW9rdWRhbicnaW5cIDsKK+Wkp+WtpuaVmeiCsiA8IGRhaWdha3VreW91aWt1XCA7CivnrKzkuInkurrnp7AgPCBkYWlzYW4nJ25pbnNob3VcIDsKK+S6uumBk+S4u+e+qeiAhSA8IGppbmRvdXNodWdpc2hhXCA7CivmsLjkuJbkuK3nq4sgPCBlaXNlaWNodXVyaXRzdVwgOwor56CU56m26aCY5Z+fIDwga2Vua3l1dXJ5b3Vpa2lcIDsKK+aVmeiCsuWLheiqniA8IGt5b3Vpa3VjaG9rdWdvXCA7CivlkYrliKXlvI8gPCBrb2t1YmV0c3VzaGlraVwgOwor57K+56We6Zqc5a6zIDwgc2Vpc2hpbnNob3VnYWlcIDsKK+Wkqeepuua1t+a/tiA8IHRlbmt1dWthaWthdHN1XCA7Civpo5/ppIznmYLms5UgPCBzaG9rdWppcnlvdWhvdVwgOwor5Lit5aSu5YiG6Zui5bivIDwgY2h1dW91YnVucml0YWlcIDsKK+a4qeW4r+S9juawl+WcpyA8IG9udGFpdGVpa2lhdHN1XCA7CivotoXlm73lrrbkuLvnvqkgPCBjaG91a29ra2FzaHVnaVwgOwor5L2c6ICF5LiN55+lIDwgc2FrdXNoYXNoaXJhenVcIDsKK+eUn+a0u+awtOa6liA8IHNlaWthdHN1c3VpanVuXCA7CivljbXnlJ/li5XniakgPCByYW5zZWlkb3VidXRzdVwgOwor562L6IKJ5Yq05YONIDwga2luJyduaWt1cm91ZG91XCA7CivljZfmlK/pgqPmtbcgPCBtaW5hbWlzaGluYWthaVwgOwor5a2m6KGT55So6KqeIDwgZ2FrdWp1dHN1eW91Z29cIDsKK+iHqueEtumjn+WTgSA8IHNoaXplbnNob2t1aGluXCA7CivllYbmpa3ntYTlkIggPCBzaG91Z3lvdWt1bWlhaVwgOwor6Kqe5b2Z5qmf6IO95paH5rOVIDwgZ29pa2lub3VidW5wb3VcIDsKK+iBt+aoqeS5seeUqCA8IHNob2trZW5yYW4nJ3lvdVwgOwor5Ly06aOf5aSn6IejIDwgYmFuc2hva3VkYWlqaW5cIDsKK+WkvumbkeeJqSA8IGt5b3V6YXRzdWJ1dHN1XCA7CivliKnlrrPplqLkv4LogIUgPCByaWdhaWthbmtlaXNoYVwgOwor6KGG6K2w5ZOh6K2w6ZW3IDwgc2h1dWdpaW5naWNob3VcIDsKK+WyoeebruWFq+ebriA8IG9rYW1laGFjaGltb2t1XCA7CivlsI7ms6LnrqHlrprmlbAgPCBkb3VoYWthbnRlaXN1dVwgOwor5pas5paw5aWH5oqcIDwgemFuc2hpbmtpYmF0c3VcIDsKK+ebtOaDheW+hOihjCA8IGNob2t1am91a2Vpa291XCA7Civnp4Hnq4vlrabmoKEgPCBzaGlyaXRzdWdha2tvdVwgOwor5Lit5pel6L6e5YW4IDwgY2h1dW5pY2hpaml0ZW5cIDsKK+S4geWtl+W9ouWumuimjyA8IHRlaWppZ2F0YWpvdWdpXCA7CivnsKHmmJPoo4HliKTmiYAgPCBrYW4nJ2lzYWliYW5zaG9cIDsKK+WIhumhnuebrumMsiA8IGJ1bnJ1aW1va3Vyb2t1XCA7CivlhoXliIbms4zohbogPCBuYWlidW5waXRzdXNlblwgOwor5Y+N5YuV5Li7576p6ICFIDwgaGFuZG91c2h1Z2lzaGFcIDsKK+a0u+i3r+mWi+aLkyA8IGthdHN1cm9rYWl0YWt1XCA7CivlubPmnb/muKzph48gPCBoZWliYW5zb2t1cnlvdVwgOwor5rqQ5rOJ5b605Y+OIDwgZ2Vuc2VuY2hvdXNodXVcIDsKK+mAmuS/oeihm+aYnyA8IHRzdXVzaGluJydlaXNlaVwgOwor5riF566X5Y+W5byVIDwgc2Vpc2FudG9yaWhpa2lcIDsKK+eJueauiuWtpue0miA8IHRva3VzaHVnYWtreXV1XCA7Civkv6HnlKjoqr/mn7sgPCBzaGluJyd5b3VjaG91c2FcIDsKK+WFiOeJqeWjsuiytyA8IHNha2ltb25vYmFpYmFpXCA7CivkuIPpm6Plhavoi6YgPCBzaGljaGluYW5oYWtrdVwgOwor6KeS6Iac56e75qSNIDwga2FrdW1ha3Vpc2hva3VcIDsKK+mfs+alveWbs+abuOmkqCA8IG9uZ2FrdXRvc2hva2FuXCA7CivmlZHmgKXnl4XpmaIgPCBreXV1a3l1dWJ5b3VpblwgOwor5o6l6Kem5oSf5p+TIDwgc2Vzc2hva3VrYW5zZW5cIDsKK+eojumHkeeUs+WRiiA8IHplaWtpbnNoaW5rb2t1XCA7Civntajmr6/niIbmkoMgPCBqdXV0YW5iYWt1Z2VraVwgOwor5LiD6Lui5YWr6LW3IDwgc2hpY2hpdGVuaGFra2lcIDsKK+S5l+eUqOiHquWLlei7iiA8IGpvdXlvdWppZG91c2hhXCA7CivmsLTpioDkuK3mr5IgPCBzdWlnaW5jaHV1ZG9rdVwgOwor6Zyy5Ye65LiN6LazIDwgcm9zaHV0c3VidXNva3VcIDsKK+W5s+S4iuWOu+WFpSA8IGh5b3Vqb3VreW9ueXV1XCA7Civlm73nq4vlhazlnJIgPCBrb2t1cml0c3Vrb3VlblwgOwor5YWs56uL5a2m5qChIDwga291cml0c3VnYWtrb3VcIDsKK+mAmuS/oeWcj+WkliA8IHRzdXVzaGlua2VuZ2FpXCA7CivntITmnZ/miYvlvaIgPCB5YWt1c29rdXRlZ2F0YVwgOwor5Y+s6ZuG5Luk54q2IDwgc2hvdXNodXVyZWlqb3VcIDsKK+Wcp+WAkueahOWkmuaVsCA8IGF0dG91dGVraXRhc3V1XCA7CivmlrDlhaXnpL7lk6EgPCBzaGluJydueXV1c2hhaW5cIDsKK+aXpeWNl+a1t+WyuCA8IG5pY2hpbmFua2FpZ2FuXCA7CivpnZ7mlL/lupzntYTnuZQgPCBoaXNlaWZ1c29zaGlraVwgOwor5rGO5pW05pWw5byPIDwgaGFuc2Vpc3V1c2hpa2lcIDsKK+iHqueUseWKtOWDjeiAhSA8IGppeXV1cm91ZG91c2hhXCA7Civlj6TnianllYbkurogPCBrb2J1dHN1c2hvdW5pblwgOwor57eR55m96ImyIDwgcnlva3VoYWt1c2hva3VcIDsKK+iGnemWouevgCA8IHNoaXRzdWthbnNldHN1XCA7CivmrablipvlubLmuIkgPCBidXJ5b2t1a2Fuc2hvdVwgOwor5YWs6KGG6YGT5b6zIDwga291c2h1dWRvdXRva3VcIDsKK+aAquWlh+Wwj+iqrCA8IGthaWtpc2hvdXNldHN1XCA7CivljZrmhJvkuLvnvqnogIUgPCBoYWt1YWlzaHVnaXNoYVwgOwor56eY5a+G5oqV56WoIDwgaGltaXRzdXRvdWh5b3VcIDsKK+Wcp+WKm+WuueWZqCA8IGF0c3VyeW9rdXlvdWtpXCA7CivmsYLlqZrluoPlkYogPCBreXV1a29ua291a29rdVwgOwor5b+D5Zug5Y+N5b+cIDwgc2hpbicnaW5oYW4nJ25vdVwgOwor5a6a5pyf5LmX6LuK5Yi4IDwgdGVpa2lqb3VzaGFrZW5cIDsKK+mbu+awl+a0l+a/r+apnyA8IGRlbmtpc2VudGFrdWtpXCA7Civpuqbol4HluL3lrZAgPCBtdWdpd2FyYWJvdXNoaVwgOwor57SN56iO55Sz5ZGKIDwgbm91emVpc2hpbmtva3VcIDsKK+WPjeWvvuensOeahCA8IGhhbnRhaXNob3V0ZWtpXCA7CivntYLmiKboqJjlv7Xml6UgPCBzaHV1c2Vua2luZW5iaVwgOwor5L2P5Y+L6YqA6KGMIDwgc3VtaXRvbW9naW5rb3VcIDsKK+WwsealreS6uuWPoyA8IHNodXVneW91amlua291XCA7Civlhajli53lhKrli50gPCB6ZW5zaG91eXV1c2hvdVwgOwor5bu66Kit5aSn6IejIDwga2Vuc2V0c3VkYWlqaW5cIDsKK+mdnuiJr+W/g+eahCA8IGhpcnlvdXNoaW50ZWtpXCA7Civntbblr77lv4XopoEgPCB6ZXR0YWloaXRzdXlvdVwgOwor56S+5Lya5Li7576p6ICFIDwgc2hha2Fpc2h1Z2lzaGFcIDsKK+ibuOi2s+mFjee3miA8IHRha29hc2hpaGFpc2VuXCA7Civlt6Xmpa3lpKflraYgPCBrb3VneW91ZGFpZ2FrdVwgOwor6YeR5aOx5LiH5YaGIDwga2luJydpY2hpbWFuJydlblwgOwor5peF5a6i5YiX6LuKIDwgcnlva3lha3VyZXNzaGFcIDsKK+Wwj+Wei+iHquWLlei7iiA8IGtvZ2F0YWppZG91c2hhXCA7Civnq4vkvJrmvJToqqwgPCB0YWNoaWFpZW56ZXRzdVwgOwor5aWo5a2m6LOH6YeRIDwgc2hvdWdha3VzaGlraW5cIDsKK+awkeS6i+iotOion+azlSA8IG1pbmppc29zaG91aG91XCA7Civnj77ph5Hlj47lhaUgPCBnZW5raW5zaHV1bnl1dVwgOwor56ys5LqM6YeP5a2Q5YyWIDwgZGFpbmlyeW91c2hpa2FcIDsKK+S6jOWOn+WtkOWIhuWtkCA8IG5pZ2Vuc2hpYnVuc2hpXCA7CivlrabooZPkvJrorbAgPCBnYWt1anV0c3VrYWlnaVwgOwor5rOV5b6L5ZWP6aGMIDwgaG91cml0c3Vtb25kYWlcIDsKK+ebtOmAmumbu+ipsSA8IGNob2t1dHN1dWRlbndhXCA7Civlj7DmiYDpgZPlhbcgPCBkYWlkb2tvcm9kb3VndVwgOwor6Zu75rqQ5L6b57WmIDwgZGVuZ2Vua3lvdWt5dXVcIDsKK+W4uOS7u+aMh+aPruiAhSA8IGpvdW5pbnNoaWtpc2hhXCA7CivmsLTpmbjkuKHnlKggPCBzdWlyaWt1cnlvdXlvdVwgOwor6YCa5L+h5omL5q61IDwgdHN1dXNoaW5zaHVkYW5cIDsKK+S4i+iri+S8muekviA8IHNoaXRhdWtlZ2Fpc2hhXCA7CivnrKzkuIDkurrnp7AgPCBkYWlpY2hpbmluc2hvdVwgOwor5a2m5q2056S+5LyaIDwgZ2FrdXJla2lzaGFrYWlcIDsKK+i+suS6i+ippumok+WgtCA8IG5vdWppc2hpa2Vuam91XCA7Civmg4XloLHljJbnpL7kvJogPCBqb3Vob3VrYXNoYWthaVwgOwor5ryU5aWP5puy55uuIDwgZW5zb3VreW9rdW1va3VcIDsKK+aAneaDs+itpuWvnyA8IHNoaXNvdWtlaXNhdHN1XCA7Civlhaznm4ros6rlsYsgPCBrb3Vla2lzaGljaGl5YVwgOwor5o6l57aa5Y+jIDwgc2V0c3V6b2t1Z3VjaGlcIDsKK+WBleiAgeWQjOeptCA8IGthaXJvdWRvdWtldHN1XCA7CivkuLvoprPkuLvnvqnogIUgPCBzaHVrYW5zaHVnaXNoYVwgOwor54Sh5pWZ5Lya5Li7576pIDwgbXVreW91a2Fpc2h1Z2lcIDsKK+exs+S+oeWvqeitsOS8miA8IGJlaWthc2hpbmdpa2FpXCA7CivlgaXlurfpo5/lk4EgPCBrZW5rb3VzaG9rdWhpblwgOwor5oq96LGh5ZCN6KmeIDwgY2h1dXNob3VtZWlzaGlcIDsKK+Wwj+S5l+S7j+aVmSA8IHNob3Vqb3VidWtreW91XCA7CivmmYLplpPlpJblirTlg40gPCBqaWthbmdhaXJvdWRvdVwgOwor5ZCI55uu55qE5oCnIDwgZ291bW9rdXRla2lzZWlcIDsKK+mbu+WKm+S8muekviA8IGRlbnJ5b2t1Z2Fpc2hhXCA7Civnmb7np5Hlhajmm7jmtL4gPCBoeWFra2F6ZW5zaG9oYVwgOwor5LqM55m+5LqM5Y2B5pelIDwgbmloeWFrdWhhdHN1a2FcIDsKK+a1t+a0i+mWi+eZuiA8IGthaXlvdWthaWhhdHN1XCA7CivntLDog57liIboo4IgPCBzYWlib3VidW5yZXRzdVwgOwor5oCl6KGM5paZ6YeRIDwga3l1dWtvdXJ5b3VraW5cIDsKK+S4geS4geeZuuatoiA8IGNob3VjaG91aGFzc2hpXCA7CivmlZnogbfoqrLnqIsgPCBreW91c2hva3VrYXRlaVwgOwor5LqM6YeN5L6h5qC85Yi2IDwgbmlqdXVrYWtha3VzZWlcIDsKK+WIkeS6i+iotOion+azlSA8IGtlaWppc29zaG91aG91XCA7Civlh53nnYDlipsgPCBneW91Y2hha3VyeW9rdVwgOwor5oeQ5YuY5a6aIDwgZnV0b2tvcm9rYW5qb3VcIDsKK+WHuueJiOalreiAhSA8IHNodXBwYW5neW91c2hhXCA7CivlsLHogbfpgYvli5UgPCBzaHV1c2hva3V1bmRvdVwgOwor55Wl5aWq6KGM54K6IDwgcnlha3VkYXRzdWtvdWlcIDsKK+eQhumdnuabsuebtCA8IHJpaGlreW9rdWNob2t1XCA7Civmj5Dlh7rniakgPCB0ZWlzaHV0c3VidXRzdVwgOwor5Yil5YaK5LuY6YyyIDwgYmVzc2F0c3VmdXJva3VcIDsKK+S4ieaoqeWIhueriyA8IHNhbmtlbmJ1bnJpdHN1XCA7Civlh7rmnK3lj6MgPCBzaHVzc2F0c3VndWNoaVwgOwor6LKp5aOy5Luj55CG5bqXIDwgaGFuYmFpZGFpcml0ZW5cIDsKK+WFseWQjOeglOeptiA8IGt5b3Vkb3VrZW5reXV1XCA7CivmlrDliIrntLnku4sgPCBzaGlua2Fuc2hvdWthaVwgOwor5qOf5Ymy6ZW35bGLIDwgbXVuZXdhcmluYWdheWFcIDsKK+S/ruWlveadoee0hCA8IHNodXVrb3Vqb3V5YWt1XCA7CivlhqDnirbli5XohIggPCBrYW5qb3Vkb3VteWFrdVwgOwor56m656m65ryg5rygIDwga3V1a3V1YmFrdWJha3VcIDsKK+aCquaAp+iyp+ihgCA8IGFrdXNlaWhpbmtldHN1XCA7CivkvJHmiKbljZTlrpogPCBreXV1c2Vua3lvdXRlaVwgOwor56We57WM6KGw5byxIDwgc2hpbmtlaXN1aWpha3VcIDsKK+WbnuaKmOagvOWtkCA8IGthaXNldHN1a291c2hpXCA7CivlhYjmsbrllY/poYwgPCBzZW5rZXRzdW1vbmRhaVwgOwor5p2x5Lqc6Ku45rCR5pePIDwgdG91YXNob21pbnpva3VcIDsKK+WwsealreaXpeaVsCA8IHNodXVneW91bmlzc3V1XCA7Civlrp/pqJPli5XniakgPCBqaWtrZW5kb3VidXRzdVwgOwor5Y2Y6JGJ6aOb6KGM5qmfIDwgdGFuJyd5b3VoaWtvdWtpXCA7Civlv6DlkJvmhJvlm70gPCBjaHV1a3VuJydhaWtva3VcIDsKK+axguS6uuW6g+WRiiA8IGt5dXVqaW5rb3Vrb2t1XCA7Civni6znq4vni6zmrakgPCBkb2t1cml0c3Vkb3Bwb1wgOwor5pyJ5a6z6aOf5ZOBIDwgeXV1Z2Fpc2hva3VoaW5cIDsKK+WbveS8muitsOS6i+mMsiA8IGtva2thaWdpamlyb2t1XCA7CivpurvolqzkuK3mr5IgPCBtYXlha3VjaHV1ZG9rdVwgOwor6YeR5bGe5bel5qWtIDwga2luem9rdWtvdWd5b3VcIDsKK+WNuOWjsueJqeS+oSA8IG9yb3NoaXVyaWJ1a2thXCA7CivlhbHlkIzlh7ros4cgPCBreW91ZG91c2h1c3NoaVwgOwor54ut6LuM6YmE6YGTIDwga3lvdWtpdGV0c3Vkb3VcIDsKK+WVhualreaJi+W9oiA8IHNob3VneW91dGVnYXRhXCA7Civpg7Xkvr/phY3pgZQgPCB5dXViaW5oYWl0YXRzdVwgOwor5riv5rm+5b2T5bGAIDwga291d2FudG91a3lva3VcIDsKK+WVhualremKgOihjCA8IHNob3VneW91Z2lua291XCA7CivnnIHnlaXoqJjlj7cgPCBzaG91cnlha3VraWdvdVwgOwor5aSp5pel55OmIDwgdGVuaml0c3VnYXdhcmFcIDsKK+S4remWk+WgseWRiiA8IGNodXVrYW5ob3Vrb2t1XCA7CivlpKLnianoqp4gPCB5dW1lbW9ub2dhdGFyaVwgOwor5Lit5b+D5oCd5oOzIDwgY2h1dXNoaW5zaGlzb3VcIDsKK+S6lOaciOS6uuW9oiA8IGdvZ2F0c3VuaW5neW91XCA7CivkvJ3mib/mloflraYgPCBkZW5zaG91YnVuZ2FrdVwgOwor5pS/5bqc5L+d6Ki85YK1IDwgc2VpZnVob3Nob3VzYWlcIDsKK+i7n+S9k+WLleeJqSA8IG5hbnRhaWRvdWJ1dHN1XCA7CivkuIDmmJTliY0gPCBoaXRvbXVrYXNoaW1hZVwgOwor5by35Yi25Y+O5a65IDwga3lvdXNlaXNodXV5b3VcIDsKK+S+v+S5l+S4u+e+qeiAhSA8IGJpbmpvdXNodWdpc2hhXCA7CivkuIDpmb3mnaXohbkgPCBpY2hpeW91cmFpZnVrdVwgOwor5ryB5qWt5Y2U5a6aIDwgZ3lvZ3lvdWt5b3V0ZWlcIDsKK+awtOeUn+WLleeJqSA8IHN1aXNlaWRvdWJ1dHN1XCA7CivmpZTlvaLmloflrZcgPCBrdXNhYmlnYXRhbW9qaVwgOwor55m+5Y2S6ZW3IDwgaHlha3Vzb3RzdWNob3VcIDsKK+S/oeeUqOe1hOWQiCA8IHNoaW4nJ3lvdWt1bWlhaVwgOwor56CU56m25aCx5ZGKIDwga2Vua3l1dWhvdWtva3VcIDsKK+mAhuihjOWIlyA8IGd5YWt1Z3lvdXJldHN1XCA7CivkuozlpKfmlL/lhZrliLYgPCBuaWRhaXNlaXRvdXNlaVwgOwor5rC05aSp5b235b2/IDwgc3VpdGVuaG91ZnV0c3VcIDsKK+S9j+WuheeUo+alrSA8IGp1dXRha3VzYW5neW91XCA7Civms6HmsqvkvJrnpL4gPCBob3VtYXRzdWdhaXNoYVwgOwor54Sh5Yip5oGv5YWs5YK1IDwgbXVyaXNva3Vrb3VzYWlcIDsKK+irh+irlumiqOeZuiA8IGRhbnJvbmZ1dWhhdHN1XCA7CivotrPntKDmgKfljp/nkIYgPCBhc2hpc3Vqb3VnZW5yaVwgOwor6LOH5pys5Li7576p6ICFIDwgc2hpaG9uc2h1Z2lzaGFcIDsKK+WFiOeZuuaKleaJiyA8IHNlbnBhdHN1dG91c2h1XCA7CivmjqjnkIblsI/oqqwgPCBzdWlyaXNob3VzZXRzdVwgOwor57Sz5aOr5Y2U5a6aIDwgc2hpbnNoaWt5b3V0ZWlcIDsKK+Wkp+WQjeWxi+aVtyA8IGRhaW15b3V5YXNoaWtpXCA7CivnibnnlbDkvZPos6ogPCB0b2t1aXRhaXNoaXRzdVwgOwor5Lit6ZaT5pC+5Y+WIDwgY2h1dWthbnNha3VzaHVcIDsKK+aWh+WMluWcsOeQhuWtpiA8IGJ1bmthY2hpcmlnYWt1XCA7CivljZToqr/kvZzmpa0gPCBreW91Y2hvdXNhZ3lvdVwgOwor5oyH5Zyn55mC5rOVIDwgc2hpYXRzdXJ5b3Vob3VcIDsKK+WFrOiqjeWAmeijnOiAhSA8IGtvdW5pbmtvdWhvc2hhXCA7Civlt6Xmpa3mioDooZMgPCBrb3VneW91Z2lqdXRzdVwgOwor57eP5ZCI6Iq46KGTIDwgc291Z291Z2VpanV0c3VcIDsKK+aXreaXpeeroCA8IGt5b2t1aml0c3VzaG91XCA7CivkuJbnlYzpgbjmiYvmqKkgPCBzZWthaXNlbnNodWtlblwgOwor5Lit55Sj6ZqO57SaIDwgY2h1dXNhbmthaWt5dXVcIDsKK+WNl+WNgeWtl+aYnyA8IG1pbmFtaWp1dWppc2VpXCA7CivmlrDnn7PlmajmmYLku6MgPCBzaGluc2Vra2lqaWRhaVwgOwor5b+D6ZyK5omL6KGTIDwgc2hpbnJlaXRlanV0c3VcIDsKK+aIkOmVt+eUo+alrSA8IHNlaWNob3VzYW5neW91XCA7Civlj5fpqJPlj4LogIPmm7ggPCBqdWtlbnNhbmtvdXNob1wgOwor5Zu96Zqb5Y+O5pSvIDwga29rdXNhaXNodXVzaGlcIDsKK+mdmeatoueUu+aUvumAgSA8IHNlaXNoaWdhaG91c291XCA7CivkuIrpmbjkvZzmiKYgPCBqb3VyaWt1c2FrdXNlblwgOwor5YuV5Yqb6LOH5rqQIDwgZG91cnlva3VzaGlnZW5cIDsKK+W/heimgeadoeS7tiA8IGhpdHN1eW91am91a2VuXCA7CivlsJHlubTmhJ/ljJbpmaIgPCBzaG91bmVua2Fua2FpblwgOwor5Lit5rWB5oSP6K2YIDwgY2h1dXJ5dXVpc2hpa2lcIDsKK+mVt+i3nemboui8uOmAgSA8IGNob3VreW9yaXl1c291XCA7Civlho3luLDku6PlkI3oqZ4gPCBzYWlraWRhaW1laXNoaVwgOwor5Ye65ryB5Yy65Z+fIDwgc2h1dHN1Z3lva3Vpa2lcIDsKK+iyoeW9ouiyr+iThCA8IHphaWtlaWNob2NoaWt1XCA7CivogbfkurrmsJfos6ogPCBzaG9rdW5pbmthdGFnaVwgOwor5o6n6Ki06KOB5Yik5omAIDwga291c29oYWliYW5zaG9cIDsKK+WNmOS9jeihjOWIlyA8IHRhbicnaWd5b3VyZXRzdVwgOwor5paH5YyW5Yqf5Yq06ICFIDwgYnVua2Frb3Vyb3VzaGFcIDsKK+WbvemAo+aGsueroCA8IGtva3VyZW5rZW5zaG91XCA7CivmsLTlhYjmoYjlhoUgPCBtaXp1c2FraWFuJyduYWlcIDsKK+ecn+epuuaOg+mZpOapnyA8IHNoaW5rdXVzb3VqaWtpXCA7Civlj47lrrnoqK3lgpkgPCBzaHV1eW91c2V0c3ViaVwgOwor5rex5rW35ryB5qWtIDwgc2hpbmthaWd5b2d5b3VcIDsKK+S6uuW9oua1hOeRoOeSgyA8IG5pbmd5b3Vqb3VydXJpXCA7Civnm7TlvoDpgoHpgLIgPCBjaG9rdW91bWFpc2hpblwgOwor5aSp5L2T5Yqb5a2mIDwgdGVudGFpcmlraWdha3VcIDsKK+aYlOipsSA8IG11a2FzaGliYW5hc2hpXCA7CivmlL/msrvoqZXoq5blrrYgPCBzZWlqaWh5b3Vyb25rYVwgOwor5Lyd5om/5Y+Z5LqL6KmpIDwgZGVuc2hvdWpvamlzaGlcIDsKK+acieimlueVjOmjm+ihjCA8IHl1dXNoaWthaWhpa291XCA7Civlubzlj4vpgZQgPCBvc2FuYXRvbW9kYWNoaVwgOwor55yf56m66Zu755CDIDwgc2hpbmt1dWRlbmt5dXVcIDsKK+mZjeS4ieS4luWmmeeOiyA8IGdvdXphbnplbXlvdW91XCA7CivnrYnpq5jnt5rlnLDlm7MgPCB0b3Vrb3VzZW5jaGl6dVwgOwor5LiK5bGk5bu656+JIDwgam91c291a2VuY2hpa3VcIDsKK+W9ueiBt+aJi+W9kyA8IHlha3VzaG9rdXRlYXRlXCA7Civpq5jlnKfpm7vmtYEgPCBrb3VhdHN1ZGVucnl1dVwgOwor5bC76Lu95aWzIDwgc2hpcmlnYXJ1b24nJ25hXCA7CivkuqXlubQgPCBpbm9zaGlzaGlkb3NoaVwgOwor55m96Ymi5be7IDwgc2hpcm9oYWNoaW1ha2lcIDsKK+S6pOmAmumBk+W+syA8IGtvdXRzdXVkb3V0b2t1XCA7CivmsLTmupbmuKzph48gPCBzdWlqdW5zb2t1cnlvdVwgOwor6KO96YCg5bm05pyI5pelIDwgc2Vpem91bmVuZ2FwcGlcIDsKK+W8geiovOazleeahCA8IGJlbnNob3Vob3V0ZWtpXCA7Civmnb7ojLjlvqHpo68gPCBtYXRzdXRha2Vnb2hhblwgOwor6Zai56iO6Zqc5aOBIDwga2FuemVpc2hvdWhla2lcIDsKK+e1seaLrOmDqOmVtyA8IHRvdWthdHN1YnVjaG91XCA7CivlnLDmlrnkuqTku5jnqI4gPCBjaGlob3Vrb3VmdXplaVwgOwor6JaE57Sr6ImyIDwgdXN1bXVyYXNha2lpcm9cIDsKK+aQjeWkseijnOWhqyA8IHNvbnNoaXRzdWhvdGVuXCA7Civml6XmnKzoqp7mlZnmnKwgPCBuaWhvbmdva3lvdWhvblwgOwor5Ye65aGB546HIDwgc2h1dHN1cnVpcml0c3VcIDsKK+S6i+S6i+eJqeeJqSA8IGppamlidXRzdWJ1dHN1XCA7CivpgKPntprlhpnnnJ8gPCByZW56b2t1c2hhc2hpblwgOwor5L+Y6Jmc5Y+O5a655omAIDwgZnVyeW9zaHV1eW91am9cIDsKK+epuuawl+Wcp+e4ruapnyA8IGt1dWtpYXNzaHVrdWtpXCA7Civlm5vnmb7kvZnlt54gPCBzaGloeWFrdXlvc2h1dVwgOwor5Zu96YCj6KiY5b+15pelIDwga29rdXJlbmtpbmVuYmlcIDsKK+W/g+eti+ail+WhniA8IHNoaW5raW5rb3Vzb2t1XCA7CivlrpfmlZnoo4HliKQgPCBzaHV1a3lvdXNhaWJhblwgOwor6Zu75L+h5p+xIDwgZGVuc2hpbmJhc2hpcmFcIDsKK+WGmeecn+efs+eJiCA8IHNoYXNoaW5zZWtpYmFuXCA7CivpmqDoirHmpI3niakgPCBpbmthc2hva3VidXRzdVwgOwor54Sh6KiY5ZCN5oqV56WoIDwgbXVraW1laXRvdWh5b3VcIDsKK+W+rueUn+eJqeWtpiA8IGJpc2VpYnV0c3VnYWt1XCA7CivmiKbnlaXnqbrou40gPCBzZW5yeWFrdWt1dWd1blwgOwor5oGt6LOA5paw5bm0IDwga3lvdWdhc2hpbicnbmVuXCA7Civlm73pmpvljZTlrpogPCBrb2t1c2Fpa3lvdXRlaVwgOwor6Ieq54S25Li7576p6ICFIDwgc2hpemVuc2h1Z2lzaGFcIDsKK+iJsuWNs+aYr+epuiA8IHNoaWtpc29rdXpla3V1XCA7CivpoK3lr5LotrPnhrEgPCB6dWthbnNva3VuZXRzdVwgOwor5Yy65qSc5a+f5bqBIDwga3VrZW5zYXRzdWNob3VcIDsKK+aguOmYsuihm+WKmyA8IGtha3Vib3VlaXJ5b2t1XCA7Civlrozlhajnh4PnhLwgPCBrYW56ZW4nJ25lbnNob3VcIDsKK+mHjemHj+aEn+immiA8IGp1dXJ5b3VrYW5rYWt1XCA7Civpm4zpm4TpkZHliKUgPCBzaGl5dXVrYW5iZXRzdVwgOwor566h5Yy65rCX6LGh5Y+wIDwga2Fua3VraXNob3VkYWlcIDsKK+WOn+eUn+WLleeJqSA8IGdlbnNlaWRvdWJ1dHN1XCA7Civnm67nmoTmhI/orZggPCBtb2t1dGVraWlzaGlraVwgOwor5rOV5a6a5rqW5YKZ6YeRIDwgaG91dGVpanVuYmlraW5cIDsKK+a1t+eUn+WLleeJqSA8IGthaXNlaWRvdWJ1dHN1XCA7CivmlLvmkoPnsr7npZ4gPCBrb3VnZWtpc2Vpc2hpblwgOwor5L2c5oiQ5oqA6KGTIDwgc2FrdXNlaWdpanV0c3VcIDsKK+mHkemKreS/oeiolyA8IGtpbnNlbnNoaW50YWt1XCA7CivlkLjlj47lkIjkvbUgPCBreXV1c2h1dWdhcHBlaVwgOwor5o+b6aqo5aWq6IOOIDwga2Fua290c3VkYXR0YWlcIDsKK+ehrOizqumZtuWZqCA8IGtvdXNoaXRzdXRvdWtpXCA7Civlr53lj7Dmlpnph5EgPCBzaGluZGFpcnlvdWtpblwgOwor6LO85YWl5rOo5paHIDwga291bnl1dWNodXVtb25cIDsKK+eEpuWcn+aIpuihkyA8IHNob3Vkb3Nlbmp1dHN1XCA7CivmnInogbfmlYXlrp8gPCB5dXVzb2t1a29qaXRzdVwgOwor6Kmx6KmxIDwgaGFuYXNoaWJhbmFzaGlcIDsKK+eEoeWEn+S/oeiolyA8IG11c2hvdXNoaW50YWt1XCA7CivmtojosrvnlJ/mtLsgPCBzaG91aGlzZWlrYXRzdVwgOwor5a6k5YaF6YGK5oivIDwgc2hpdHN1bmFpeXV1Z2lcIDsKK+Wul+aVmeWbo+S9kyA8IHNodXVreW91ZGFudGFpXCA7CivpgLLooYznirbms4EgPCBzaGlua291am91a3lvdVwgOwor6auY562J5YuV54mpIDwga291dG91ZG91YnV0c3VcIDsKK+S4gOiGs+mjr+WxiyA8IGljaGl6ZW5tZXNoaXlhXCA7CivmmYLku6PlsI/oqqwgPCBqaWRhaXNob3VzZXRzdVwgOwor5YaF6Ki86KmxIDwgbmFpc2hvdWJhbmFzaGlcIDsKK+a1t+a0i+aAp+awl+WAmSA8IGthaXlvdXNlaWtpa291XCA7Civmm7Lnt5rluqfmqJkgPCBreW9rdXNlbnphaHlvdVwgOwor5b2T6Kmy5Lq654mpIDwgdG91Z2FpamluYnV0c3VcIDsKK+WkluiyqOa6luWCmemrmCA8IGdhaWthanVuYmlkYWthXCA7CivopoHmsYLpgIHkv6EgPCB5b3VreXV1c291c2hpblwgOwor55m+5Lq65LiA6aaWIDwgaHlha3VuaW4nJ2lzc2h1XCA7Civpm4blm6PmpJzoqLogPCBzaHV1ZGFua2Vuc2hpblwgOwor5peF6KGM5Luj55CG5bqXIDwgcnlva291ZGFpcml0ZW5cIDsKK+WuieWvp+enqeW6jyA8IGFuJyduZWljaGl0c3Vqb1wgOwor5LiL5ZSHIDwgc2hpdGFrdWNoaWJpcnVcIDsKK+altealvemzpeiKsSA8IGdva3VyYWt1Y2hvdWthXCA7CivkuK3otorntJvkuokgPCBjaHV1ZXRzdWZ1bnNvdVwgOwor5LiA5ous6LO85YWlIDwgaWtrYXRzdWtvdW55dXVcIDsKK+awkeaXj+iHquaxuiA8IG1pbnpva3VqaWtldHN1XCA7CivlgLbmoqjkvL3nvoXntIvntIsgPCBrdXJpa2FyYW1vbm1vblwgOwor5q2j6Z2i5pS75pKDIDwgc2hvdW1lbmtvdWdla2lcIDsKK+aVmeiCsueUo+alrSA8IGt5b3Vpa3VzYW5neW91XCA7Civnqbroqr/oqK3lgpkgPCBrdXVjaG91c2V0c3ViaVwgOwor5Y2Y54us5YaF6ZajIDwgdGFuZG9rdW5haWtha3VcIDsKK+e3keeOieefsyA8IHJ5b2t1Z3lva3VzZWtpXCA7CivmlZnogrLlrp/nv5IgPCBreW91aWt1amlzc2h1dVwgOwor5bCx5qWt6KaP5YmHIDwgc2h1dWd5b3VraXNva3VcIDsKK+aVmemkiueVque1hCA8IGt5b3V5b3ViYW5ndW1pXCA7Civlh43ntZDos4fnlKMgPCB0b3VrZXRzdXNoaXNhblwgOwor6ZuG5Zuj6L6y5aC0IDwgc2h1dWRhbicnbm91am91XCA7CivmmJTmmJQgPCBtdWthc2hpbXVrYXNoaVwgOwor5ZGo6L666Ku45Zu9IDwgc2h1dWhlbnNob2tva3VcIDsKK+WbveexjeadoemghSA8IGtva3VzZWtpam91a291XCA7Civnj77nianntabkuI4gPCBnZW5idXRzdWt5dXV5b1wgOwor5LqI6YG46YCa6YGO6ICFIDwgeW9zZW50c3V1a2FzaGFcIDsKK+ixqumbquWcsOW4ryA8IGdvdXNldHN1Y2hpdGFpXCA7CivmtbfljYPlsbHljYMgPCB1bWlzZW4nJ3lhbWFzZW5cIDsKK+mdqeaWsOaUv+WFmiA8IGtha3VzaGluc2VpdG91XCA7CivlsJHmlbDmsJHml48gPCBzaG91c3V1bWluem9rdVwgOwor5Yq05YON5Y2U57SEIDwgcm91ZG91a3lvdXlha3VcIDsKK+mbu+aSg+S9nOaIpiA8IGRlbmdla2lzYWt1c2VuXCA7Civohp3ok4vpqqggPCBzaGl0c3VnYWlrb3RzdVwgOwor5aWz5oCn6Kej5pS+6KuWIDwgam9zZWlrYWlob3Vyb25cIDsKK+iEiumrhOelnue1jCA8IHNla2l6dWlzaGlua2VpXCA7Civnvo7ooZPlpKflraYgPCBiaWp1dHN1ZGFpZ2FrdVwgOwor6YG65Lyd5a2Q5rK755mCIDwgaWRlbnNoaWNoaXJ5b3VcIDsKK+mBuOaKnumgheebriA8IHNlbnRha3Vrb3Vtb2t1XCA7CivplpPmjqXpgbjmjJkgPCBrYW5zZXRzdXNlbmt5b1wgOwor6LKd5q676L+95pS+IDwga2FpZ2FyYXRzdWlob3VcIDsKK+e+pOeZuuWcsOmchyA8IGd1bnBhdHN1amlzaGluXCA7Civntbblr77kuLvnvqnogIUgPCB6ZXR0YWlzaHVnaXNoYVwgOwor57eK6KSM5LiA55WqIDwga2lua29uJydpY2hpYmFuXCA7CivlhbHlkIzngorkuovloLQgPCBreW91ZG91c3VpamliYVwgOwor54us6Lqr6LK05pePIDwgZG9rdXNoaW5raXpva3VcIDsKK+emj+elieS6i+WLmeaJgCA8IGZ1a3VzaGlqaW11c2hvXCA7Civnp5Hlrabnn6XorZggPCBrYWdha3VjaGlzaGlraVwgOwor55+z6YOo6YeR5ZCJIDwgaXNoaWJla2lua2ljaGlcIDsKK+iKsemzpemiqOaciCA8IGthY2hvdWZ1dWdldHN1XCA7Civmj5Dlh7rmnJ/pmZAgPCB0ZWlzaHV0c3VraWdlblwgOwor5LiJ6KeS57O755Ww5bi4IDwgc2Fua2FrdWtlaWlqb3VcIDsKK+WkqemVt+WcsOS5hSA8IHRlbmNob3VjaGlreXV1XCA7Civnmb7kuIfplbfogIUgPCBoeWFrdW1hbmNob3VqYVwgOwor5a++55eH55mC5rOVIDwgdGFpc2hvdXJ5b3Vob3VcIDsKK+awtOeUo+ippumok+aJgCA8IHN1aXNhbnNoaWtlbmpvXCA7CivkuK3mnqLnpZ7ntYwgPCBjaHV1c3V1c2hpbmtlaVwgOwor5ZWG5bel5qWt6ICFIDwgc2hvdWtvdWd5b3VzaGFcIDsKK+mWi+elqOmAn+WgsSA8IGthaWh5b3Vzb2t1aG91XCA7CivmgKfnmoTooZ3li5UgPCBzZWl0ZWtpc2hvdWRvdVwgOwor6LuN5LqL6KOB5Yik5omAIDwgZ3VuamlzYWliYW5zaG9cIDsKK+eJueauiuaSruW9sSA8IHRva3VzaHVzYXRzdWVpXCA7CivovLjlh7rmiYvlvaIgPCB5dXNodXRzdXRlZ2F0YVwgOwor5Y+y5paZ6aSo5a2mIDwgc2hpcnlvdWthbmdha3VcIDsKK+epuuS4realvOmWoyA8IGt1dWNodXVyb3VrYWt1XCA7CivpmqDpgIDolLXnianos4cgPCBpbnRhaXpvdWJ1c3NoaVwgOwor5bCR5bm05paH5a2mIDwgc2hvdW5lbmJ1bmdha3VcIDsKK+iqv+aVtOaUu+aSgyA8IGNob3VzZWlrb3VnZWtpXCA7Civnsr7npZ7lubTpvaIgPCBzZWlzaGluJyduZW5yZWlcIDsKK+WxheS4reiqv+WBnCA8IGt5b2NodXVjaG91dGVpXCA7CivnqI7liKXkvqHmoLwgPCB6ZWliZXRzdWtha2FrdVwgOwor6LuN5Lq655Sf5rS7IDwgZ3Vuamluc2Vpa2F0c3VcIDsKK+eah+WuruitpuWvnyA8IGtvdWd1dWtlaXNhdHN1XCA7CivnspLjgIXovpvoi6YgPCByeXV1cnl1dXNoaW5rdVwgOwor5p2x5Lqs5aSn5a2mIDwgdG91a3lvdWRhaWdha3VcIDsKK+WPguiAg+Wbs+abuOmkqCA8IHNhbmtvdXRvc2hva2FuXCA7CivoiIjlkbPmtKXmtKUgPCBreW91bWlzaGluc2hpblwgOwor54Sh57ea5ZGo5rOi5pWwIDwgbXVzZW5zaHV1aGFzdXVcIDsKK+WNg+WuouS4h+adpSA8IHNlbmt5YWt1YmFucmFpXCA7CivpgbjmipzoqabpqJMgPCBzZW5iYXRzdXNoaWtlblwgOwor6Iiq6Lev5qiZ6K2YIDwga291cm9oeW91c2hpa2lcIDsKK+e3iuaApeeZuumAsiA8IGtpbmt5dXVoYXNzaGluXCA7CivnqbrkuK3lhpnnnJ8gPCBrdXVjaHV1c2hhc2hpblwgOwor5Za25qWt5rS75YuVIDwgZWlneW91a2F0c3Vkb3VcIDsKK+aVkeaPtOa0u+WLlSA8IGt5dXVlbmthdHN1ZG91XCA7CivlpKnnhLbnoZ3lrZAgPCB0ZW4nJ25lbnNob3VzaGlcIDsKK+S/oeiol+izh+mHkSA8IHNoaW50YWt1c2hpa2luXCA7CivluILmsJHnlJ/mtLsgPCBzaGltaW5zZWlrYXRzdVwgOwor6YeN6L6y5Li7576p6ICFIDwganV1bm91c2h1Z2lzaGFcIDsKK+S5l+WQiOiHquWLlei7iiA8IG5vcmlhaWppZG91c2hhXCA7Civntbblr77mqKnlipsgPCB6ZXR0YWlrZW5yeW9rdVwgOwor5ZGo56ug54u854u9IDwgc2h1dXNob3Vyb3ViYWlcIDsKK+awkeaXj+WtpuiAhSA8IG1pbnpva3VnYWt1c2hhXCA7CivohqDnnYDnirbmhYsgPCBrb3VjaGFrdWpvdXRhaVwgOwor57Sw6IOe6YG65Lyd5a2mIDwgc2FpYm91aWRlbmdha3VcIDsKK+mdouaOpeippumokyA8IG1lbnNldHN1c2hpa2VuXCA7CivmlL/nrZbljZTlrpogPCBzZWlzYWt1a3lvdXRlaVwgOwor6LKp5aOy5oim55WlIDwgaGFuYmFpc2Vucnlha3VcIDsKK+WFrOioreW4guWgtCA8IGtvdXNldHN1aWNoaWJhXCA7CivkurrnianntYzmuIggPCBqaW5idXRzdWtlaXphaVwgOwor5b+D55qE54q25oWLIDwgc2hpbnRla2lqb3V0YWlcIDsKK+S4mOmZteWcsOW4ryA8IGt5dXVyeW91Y2hpdGFpXCA7CivotoXpn7Pms6LmtJfmtYQgPCBjaG91b25wYXNlbmpvdVwgOwor5YiR5LqL6KKr5ZGK5Lq6IDwga2VpamloaWtva3VuaW5cIDsKK+S7ruWHuueNhCA8IGthcmlzaHV0c3Vnb2t1XCA7CivnibnliKXogbcgPCB0b2t1YmV0c3VzaG9rdVwgOwor576k5Lyd5pCs5pmC6ZaTIDwgZ3VuZGVucGFuamlrYW5cIDsKK+eUn+a2r+aVmeiCsiA8IHNob3VnYWlreW91aWt1XCA7Civml6fntITlhajmm7ggPCBreXV1eWFrdXplbnNob1wgOwor5aSn5qC55b256ICFIDwgZGFpa29uJyd5YWt1c2hhXCA7CivkuIflubTmlrDpgKAgPCBtYW4nJ25lbnNoaW56b3VcIDsKK+WBpeW6t+S/nemZuuazlSA8IGtlbmtvdWhva2VuaG91XCA7CivluLjku7vnkIbkuovlm70gPCBqb3VuaW5yaWppa29rdVwgOwor5bqn6aqo56We57WMIDwgemFrb3RzdXNoaW5rZWlcIDsKK+mdnumHkeWxnuWFg+e0oCA8IGhpa2luem9rdWdlbnNvXCA7CivplbfogIHmlZnkvJogPCBjaG91cm91a3lvdWthaVwgOwor6Zm45LiK6Ieq6KGb6ZqKIDwgcmlrdWpvdWppZWl0YWlcIDsKK+iyr+iThOWCteWIuCA8IGNob2NoaWt1c2Fpa2VuXCA7Civmrablipvku4vlhaUgPCBidXJ5b2t1a2Fpbnl1dVwgOwor5L+d6Zm65Yun6KqY5ZOhIDwgaG9rZW5rYW4nJ3l1dWluXCA7Civnsr7lr4bnp5HlraYgPCBzZWltaXRzdWthZ2FrdVwgOwor56eB6YmE57eP6YCjIDwgc2hpdGV0c3Vzb3VyZW5cIDsKK+S8nemAgee1guS6hiA8IGRlbnNvdXNodXVyeW91XCA7CivnqpLntKDlm7rlrprms5UgPCBjaGlzc29rb3RlaWhvdVwgOwor6Jar6JK45raI5q+SIDwga3Vuam91c2hvdWRva3VcIDsKK+azleW+i+ebuOirhyA8IGhvdXJpdHN1c291ZGFuXCA7CivlnLDln5/plovnmbogPCBjaGlpa2lrYWloYXRzdVwgOwor5Zu95YaF55Sj5qWtIDwga29rdW5haXNhbmd5b3VcIDsKK+S4gOaJk+mAhui7oiA8IGljaGlkYWd5YWt1dGVuXCA7CivmsLTnlJ/nlJ/niakgPCBzdWlzZWlzZWlidXRzdVwgOwor5pyJ57ea6YCa5L+hIDwgeXV1c2VudHN1dXNoaW5cIDsKK+ebuOWvvuaAp+WOn+eQhiA8IHNvdXRhaXNlaWdlbnJpXCA7Civnvo7ooZPmhJvlpb3lrrYgPCBiaWp1dHN1YWlrb3VrYVwgOwor6LW35om/6Lui57WQIDwga2lzaG91dGVua2V0c3VcIDsKK+eJqeizquS4u+e+qSA8IGJ1c3NoaXRzdXNodWdpXCA7Civkv6HoqJfkvJrnpL4gPCBzaGludGFrdWdhaXNoYVwgOwor5Lit55+z5Zmo5pmC5LujIDwgY2h1dXNla2tpamlkYWlcIDsKK+S4u+efpeS4u+e+qeiAhSA8IHNodWNoaXNodWdpc2hhXCA7CivompXns7joqabpqJPmiYAgPCBzYW5zaGlzaGlrZW5qb1wgOwor5Lit6ZaT5ZWG5Lq6IDwgY2h1dWthbnNob3VuaW5cIDsKK+mdmembu+WuuemHjyA8IHNlaWRlbicneW91cnlvdVwgOwor5Lit5rWB56S+5LyaIDwgY2h1dXJ5dXVzaGFrYWlcIDsKK+engeeri+aOouWBtSA8IHNoaXJpdHN1dGFudGVpXCA7Civlkb3ovpvovpsgPCBpbm9jaGlnYXJhZ2FyYVwgOwor5Zu95rCR5oqV56WoIDwga29rdW1pbnRvdWh5b3VcIDsKK+aciee9quWIpOaxuiA8IHl1dXphaWhhbmtldHN1XCA7CivlvLfljJbpo5/lk4EgPCBreW91a2FzaG9rdWhpblwgOwor5Ly457iu6Ieq5ZyoIDwgc2hpbnNodWt1aml6YWlcIDsKK+mZuOi7jeWkp+WtpiA8IHJpa3VndW5kYWlnYWt1XCA7CivpgJrkv6HpgJ/luqYgPCB0c3V1c2hpbnNva3Vkb1wgOwor6buS6YeR5Ymb55+zIDwga3Vyb2tvbmdvdXNla2lcIDsKK+eri+S9k+W5vuS9leWtpiA8IHJpdHRhaWtpa2FnYWt1XCA7CivkuK3lm73kurrooZcgPCBjaHV1Z29rdWppbmdhaVwgOwor5a2m6Iq45aSn5a2mIDwgZ2FrdWdlaWRhaWdha3VcIDsKK+Wkp+ays+Wwj+iqrCA8IHRhaWdhc2hvdXNldHN1XCA7CivpiYTpgZPkvJrnpL4gPCB0ZXRzdWRvdWdhaXNoYVwgOwor6Z+z5qW95b2i5byPIDwgb25nYWt1a2Vpc2hpa2lcIDsKK+aAp+agvOWIhuaekCA8IHNlaWtha3VidW5zZWtpXCA7Civou6LlhaXlsYogPCB0ZW4nJ255dXV0b2Rva2VcIDsKK+S4jeWLleeUo+mRkeWumiA8IGZ1ZG91c2Fua2FudGVpXCA7Civlj5fku5jkv4IgPCB1a2V0c3VrZWdha2FyaVwgOwor5bCx6IG3546HIDwgc2h1dXNob2t1cml0c3VcIDsKK+ePvumHkeabuOeVmSA8IGdlbmtpbmtha2l0b21lXCA7CivkvJHmiKbmnaHntIQgPCBreXV1c2Vuam91eWFrdVwgOwor5LqM6Laz5YuV54mpIDwgbmlzb2t1ZG91YnV0c3VcIDsKK+W/g+eQhuWtpueahCA8IHNoaW5yaWdha3V0ZWtpXCA7CivkvoPjgIXoq6Toq6QgPCBrYW5rYW5nYWt1Z2FrdVwgOwor55u057ea6YGL5YuVIDwgY2hva3VzZW4nJ3VuZG91XCA7CivmgqrlvrPmlrDogZ4gPCBha3V0b2t1c2hpbmJ1blwgOwor5pyq5rG65ouY55WZIDwgbWlrZXRzdWtvdXJ5dXVcIDsKK+WumumHj+WIhuaekCA8IHRlaXJ5b3VidW5zZWtpXCA7CivntabmlpnooosgPCBreXV1cnlvdWJ1a3Vyb1wgOwor57SZ5bGR5ZCM54S2IDwga2FtaWt1enVkb3V6ZW5cIDsKK+a4qeWupOagveWfuSA8IG9uc2hpdHN1c2FpYmFpXCA7Civph53lsI/mo5LlpKcgPCBzaGluc2hvdWJvdWRhaVwgOwor5qSN54mp5a2mIDwgc2hva3VidXRzdWdha3VcIDsKK+WkquWIgOS6jOiFsCA8IHRhY2hpZnV0YWtvc2hpXCA7Civoqo3orZjkuI3otrMgPCBuaW5zaGlraWJ1c29rdVwgOwor5Zuj5L2T5Y2U57SEIDwgZGFudGFpa3lvdXlha3VcIDsKK+S/oemgvOWbnuW+qSA8IHNoaW5yYWlrYWlmdWt1XCA7Civkv67lrabml4XooYwgPCBzaHV1Z2FrdXJ5b2tvdVwgOwor6ZW36Led6Zui6aOb6KGMIDwgY2hvdWt5b3JpaGlrb3VcIDsKK+esrOS6jOasoeaAp+W+tCA8IGRhaW5pamlzZWljaG91XCA7Civpm7vmupDplovnmbogPCBkZW5nZW5rYWloYXRzdVwgOwor5qih5byP5qiZ5pysIDwgbW9zaGlraWh5b3Vob25cIDsKK+i/vei3oeiqv+afuyA8IHRzdWlzZWtpY2hvdXNhXCA7CivlibLlvJXmiYvlvaIgPCB3YXJpYmlraXRlZ2F0YVwgOwor5Y+l5qeL6YCg5paH5rOVIDwga3Vrb3V6b3VidW5wb3VcIDsKK+ebtOa1geWbnui3ryA8IGNob2t1cnl1dWthaXJvXCA7CivoiIjooYzmiJDnuL4gPCBrb3VneW91c2Vpc2VraVwgOwor5YyX5rSL5ryB5qWtIDwgaG9rdXlvdWd5b2d5b3VcIDsKK+WbveaWh+WtpuWPsiA8IGtva3VidW5nYWt1c2hpXCA7CivmsLjkuYXohLHmr5sgPCBlaWt5dXVkYXRzdW1vdVwgOwor5o6S5Ye65Z+65rqWIDwgaGFpc2h1dHN1a2lqdW5cIDsKK+e1hOiBt+aUuemdqSA8IHNvc2hva3VrYWlrYWt1XCA7CivpgY7lpLHoh7TmrbsgPCBrYXNoaXRzdWNoaXNoaVwgOwor5Lqk6YCa5L+h5Y+3IDwga291dHN1dXNoaW5nb3VcIDsKK+WLleeJqeWun+mokyA8IGRvdWJ1dHN1amlra2VuXCA7CivmsLTkuIrorablr58gPCBzdWlqb3VrZWlzYXRzdVwgOwor5Yq05L2c5pWZ6IKyIDwgcm91c2FrdWt5b3Vpa3VcIDsKK+aguOW7g+ajhOeJqSA8IGtha3VoYWlraWJ1dHN1XCA7Civpjq7prYLmm7LmrYwgPCBjaGlua29ua3lva3VrYVwgOwor6Z2e6YmE6YeR5bGeIDwgaGl0ZXRzdWtpbnpva3VcIDsKK+Wjq+WumOWAmeijnOeUnyA8IHNoaWthbmtvdWhvc2VpXCA7Civlt6Hlm57lm7Pmm7jppKggPCBqdW5rYWl0b3Nob2thblwgOwor5LiJ55m+5Luj6KiAIDwgc2FuYnlha3VkYWlnZW5cIDsKK+W+tOWFteW/jOmBv+iAhSA8IGNob3VoZWlraWhpc2hhXCA7Civlh7roqLTmnJ/pmZDms5UgPCBzaHVzc29raWdlbmhvdVwgOwor5Lit5Zu95Lyd5p2lIDwgY2h1dWdva3VkZW5yYWlcIDsKK+eti+eEoeWKm+eXhyA8IGtpbm11cnlva3VzaG91XCA7CivmtYHpgJros4fmnKwgPCByeXV1dHN1dXNoaWhvblwgOwor56m65Y2z5piv6ImyIDwga3V1c29rdXplc2hpa2lcIDsKK+aVmeiCsuaUuemdqSA8IGt5b3Vpa3VrYWlrYWt1XCA7CivliIfplovmiYvooZMgPCBzZWtrYWlzaHVqdXRzdVwgOwor5aSn5ZKM6a2CIDwgeWFtYXRvZGFtYXNoaWlcIDsKK+S4i+WPsOaJgCA8IHNoaW1vZGFpZG9rb3JvXCA7CivmlZHorbfmtLvli5UgPCBreXV1Z29rYXRzdWRvdVwgOwor6LuN55So6Ly46YCB5qmfIDwgZ3VuJyd5b3V5dXNvdWtpXCA7CivlrqPkvJ3mtLvli5UgPCBzZW5kZW5rYXRzdWRvdVwgOwor6LKh55Sj55uu6YyyIDwgemFpc2FubW9rdXJva3VcIDsKK+iogOiqnuWcsOeQhuWtpiA8IGdlbmdvY2hpcmlnYWt1XCA7CivmraPluLjntYLkuoYgPCBzZWlqb3VzaHV1cnlvdVwgOwor5YmN5pa55b6M5YaG5aKzIDwgemVucG91a291ZW5mdW5cIDsKK+iZq+anmOeqgei1t+eCjiA8IGNodXV5b3V0b2traWVuXCA7CivkuqHlkb3nlJ/mtLsgPCBib3VtZWlzZWlrYXRzdVwgOwor5YSq6LaK6KSH5ZCIIDwgeXV1ZXRzdWZ1a3Vnb3VcIDsKK+e0lOaXpeacrOW8jyA8IGp1bicnbmlob25zaGlraVwgOwor5pyJ5b2i5paH5YyW6LKhIDwgeXV1a2VpYnVua2F6YWlcIDsKK+aXp+efs+WZqOaZguS7oyA8IGt5dXVzZWtraWppZGFpXCA7CivmiYvlvaLlibLlvJUgPCB0ZWdhdGF3YXJpYmlraVwgOwor5YuV54mp5bSH5oudIDwgZG91YnV0c3VzdXVoYWlcIDsKK+iHqueUseawkeaoqeirliA8IGppeXV1bWlua2Vucm9uXCA7CivlhbHlkIzkvY/lroUgPCBreW91ZG91anV1dGFrdVwgOwor5pyJ6KKL5YuV54mpIDwgeXV1dGFpZG91YnV0c3VcIDsKK+S4ieWNgeS6jOWIhumfs+espiA8IHNhbmp1dW5pYnVvbnB1XCA7CivnoLTnlKPoo4HliKTmiYAgPCBoYXNhbnNhaWJhbnNob1wgOwor5Lq66Lqr5L+d6K235rOVIDwgamluc2hpbmhvZ29ob3VcIDsKK+iii+Wwj+i3r+aWhyA8IGZ1a3Vyb2tvdWppYnVuXCA7CivmlL7lsITmgKflhYPntKAgPCBob3VzaGFzZWlnZW5zb1wgOwor55m956CC6Z2S5p2+IDwgaGFrdXNoYXNlaXNob3VcIDsKK+iKseWrgeW+oeWvriA8IGhhbmF5b21lZ29yeW91XCA7CivmlrDpmbPku6PorJ0gPCBzaGluY2hpbnRhaXNoYVwgOwor5LiA5YWt6YqA6KGMIDwgaWNoaXJva3VnaW5rb3VcIDsKK+WwseiBt+aWoeaXiyA8IHNodXVzaG9rdWFzc2VuXCA7Civpnq3mr5vomavnl4cgPCBiZW5tb3VjaHV1c2hvdVwgOwor57W25L2T57W25ZG9IDwgemV0dGFpemV0c3VtZWlcIDsKK+eyvuelnuWIhuaekCA8IHNlaXNoaW5idW5zZWtpXCA7Civns7vliJfkvJrnpL4gPCBrZWlyZXRzdWdhaXNoYVwgOwor5YiG5a2Q6ZaT5YqbIDwgYnVuc2hpa2Fucnlva3VcIDsKK+S8gealreaIpueVpSA8IGtpZ3lvdXNlbnJ5YWt1XCA7Civlm73msJHmiYDlvpcgPCBrb2t1bWluc2hvdG9rdVwgOwor6Ly45Ye65Yi26ZmQIDwgeXVzaHV0c3VzZWlnZW5cIDsKK+eJueWumumKmOafhCA8IHRva3V0ZWltZWlnYXJhXCA7CivosqHli5nkvZPos6ogPCB6YWltdXRhaXNoaXRzdVwgOwor6K2m5a+f5a2m5qChIDwga2Vpc2F0c3VnYWtrb3VcIDsKK+S4jeazleS+teWFpSA8IGZ1aG91c2hpbicnbnl1dVwgOwor5bCx6IG35Y+jIDwgc2h1dXNob2t1Z3VjaGlcIDsKK+eUn+a0u+ioreioiCA8IHNlaWthdHN1c2Vra2VpXCA7CivmjZXomZzlj47lrrnmiYAgPCBob3J5b3NodXV5b3Vqb1wgOwor6Lu96JaE55+t5bCPIDwga2VpaGFrdXRhbnNob3VcIDsKK+eul+ihk+W5s+WdhyA8IHNhbmp1dHN1aGVpa2luXCA7CivljbPluK3mlpnnkIYgPCBzb2t1c2VraXJ5b3VyaVwgOwor54mp55CG55mC5rOVIDwgYnV0c3VyaXJ5b3Vob3VcIDsKK+eUn+ioiOiyu+aMh+aVsCA8IHNlaWtlaWhpc2hpc3V1XCA7CivpnZLphbjkuK3mr5IgPCBzZWlzYW5jaHV1ZG9rdVwgOwor5a6X5pWZ5rOV5Lq6IDwgc2h1dWt5b3Vob3VqaW5cIDsKK+WGmeecn+akjeWtlyA8IHNoYXNoaW5zaG9rdWppXCA7Civnt4rnuK7osqHmlL8gPCBraW5zaHVrdXphaXNlaVwgOwor5Y2Y5oCn55Sf5q6WIDwgdGFuc2Vpc2Vpc2hva3VcIDsKK+WbveS8muWbs+abuOmkqCA8IGtva2thaXRvc2hva2FuXCA7Civpq5jnrYnnlJ/niakgPCBrb3V0b3VzZWlidXRzdVwgOwor6auY562J5byB5YuZ5a6YIDwga291dG91YmVubXVrYW5cIDsKK+aZgumWk+mghuW6j+epjSA8IGppa2FuanVuam9zZWtpXCA7Civkv53oqLzniZvkubMgPCBob3Nob3VneXV1bnl1dVwgOwor562L6IKJ6LOqIDwga2luJyduaWt1c2hpdHN1XCA7Civlipvku5XkuosgPCBjaGlrYXJhc2hpZ290b1wgOwor5Y+X6IOO6Kq/56+AIDwganV0YWljaG91c2V0c3VcIDsKK+WcsOeQg+a4qeaaluWMliA8IGNoaWt5dXVvbmRhbmthXCA7CivpgI/mnpDnmYLms5UgPCB0b3VzZWtpcnlvdWhvdVwgOwor6Z2e5bi45Yuk6Kyb5birIDwgaGlqb3VraW5rb3VzaGlcIDsKK+WroeWHuuWtkCA8IGNoYWt1c2h1dHN1c2hpXCA7CivmhJ/opprnpZ7ntYwgPCBrYW5rYWt1c2hpbmtlaVwgOwor6Ieq5YuV6LuK5a2m5qChIDwgamlkb3VzaGFnYWtrb3VcIDsKK+eojumHkemBv+mbo+WcsCA8IHplaWtpbmhpbmFuY2hpXCA7CivkurrpgZPnmoTmj7TliqkgPCBqaW5kb3V0ZWtpZW5qb1wgOwor5bCC6ZaA55+l6K2YIDwgc2VubW9uY2hpc2hpa2lcIDsKK+i7jeaLoeertuS6iSA8IGd1bmtha3VreW91c291XCA7CivniYfoopbmnLogPCBrYXRhc29kZWR6dWt1ZVwgOwor55m75aC05Lq654mpIDwgdG91am91amluYnV0c3VcIDsKK+a2iOiyu+iAhemBi+WLlSA8IHNob3VoaXNoYXVuZG91XCA7CivpnZ7nj77lrp/nmoQgPCBoaWdlbmppdHN1dGVraVwgOwor6YCG5oCn55+z6bm4IDwgZ3lha3VzZWlzZWtrZW5cIDsKK+WKtOWDjeWfuua6luazlSA8IHJvdWRvdWtpanVuaG91XCA7Civlub3ploDni63nqoQgPCB5dXVtb25reW91c2FrdVwgOwor6YCj6YKm5b2T5bGAIDwgcmVucG91dG91a3lva3VcIDsKK+ebtOWwhOaXpeWFiSA8IGNob2t1c2hhbmlra291XCA7CivlhYjku7vlsIbmoKEgPCBzZW4nJ25pbnNob3Vrb3VcIDsKK+isueWOs+Wun+ebtCA8IGtpbmdlbmppdGNob2t1XCA7CivmvKLlrZfliLbpmZDoq5YgPCBrYW5qaXNlaWdlbnJvblwgOwor5bqX6aCt5Y+W5byVIDwgdGVudG91dG9yaWhpa2lcIDsKK+WNkualreW8jyA8IHNvdHN1Z3lvdXNoaWtpXCA7Civnmbrlo7LnpoHmraIgPCBoYXRzdWJhaWtpbnNoaVwgOwor5ZOB6LOq566h55CGIDwgaGluc2hpdHN1a2FucmlcIDsKK+e3qOWFpeippumokyA8IGhlbicnbnl1dXNoaWtlblwgOwor5Lyd6YGU6Zai5pWwIDwgZGVudGF0c3VrYW5zdXVcIDsKK+WwveW/oOWgseWbvSA8IGppbmNodXVob3Vrb2t1XCA7CivlirTkvb/ljZToqr8gPCByb3VzaGlreW91Y2hvdVwgOwor5ZGo5rOi5pWw5YGP56e7IDwgc2h1dWhhc3V1aGVuJydpXCA7Civnmb7oibLnnLzpj6EgPCBoeWFrdWlyb21lZ2FuZVwgOwor5Lit5oCn5a2Q5p2fIDwgY2h1dXNlaXNoaXNva3VcIDsKK+eEoeWItumZkOiyv+aYkyA8IG11c2VpZ2VuYm91ZWtpXCA7Civnt4rmgKXlr77nrZYgPCBraW5reXV1dGFpc2FrdVwgOwor5Y2w5Yi35oqA6KGTIDwgaW5zYXRzdWdpanV0c3VcIDsKK+asoeWFg+ato+WJh+WMliA8IGppZ2Vuc2Vpc29rdWthXCA7Civlv4PnmoTooajnpLogPCBzaGludGVraWh5b3VqaVwgOwor5YWJ6YCa5L+hIDwgaGlrYXJpdHN1dXNoaW5cIDsKK+WQjeaJgOaXp+i3oSA8IG1laXNob2t5dXVzZWtpXCA7CivmipXos4fkv6HoqJcgPCB0b3VzaGlzaGludGFrdVwgOwor5Lq65ZCN55So5ryi5a2XIDwgamlubWVpeW91a2FuamlcIDsKK+aWsOmfk+WbveWFmiA8IHNoaW5rYW5rb2t1dG91XCA7Civlm73pmpvmnaHntIQgPCBrb2t1c2Fpam91eWFrdVwgOwor5LiD5aCC5Ly96JeNIDwgc2hpY2hpZG91Z2FyYW5cIDsKK+imquaXj+mWouS/giA8IHNoaW56b2t1a2Fua2VpXCA7CivlvoHlpLflpKflsIbou40gPCBzZWlpdGFpc2hvdWd1blwgOwor5YKY5b2i56KN5a2QIDwga2FzYWdhdGFnYWlzaGlcIDsKK+eUo+alreS6iOWCmei7jSA8IHNhbmd5b3V5b2JpZ3VuXCA7CivmgqrmvKLlsI/oqqwgPCBha2thbnNob3VzZXRzdVwgOwor5Yip5a2Q5bmz6KGh56iOIDwgcmlzaGloZWlrb3V6ZWlcIDsKK+eEoeS7u+aJgOWkp+iHoyA8IG11bmluc2hvZGFpamluXCA7CivlhazmlbXkuIDlj7cgPCBrb3V0ZWtpaWNoaWdvdVwgOwor5rC06LOq5rGa5r+BIDwgc3Vpc2hpdHN1b2Rha3VcIDsKK+eyvuelnueZguazlSA8IHNlaXNoaW5yeW91aG91XCA7Civlj5bnt6Dms5UgPCB0b3Jpc2hpbWFyaWhvdVwgOwor6Iyr54S26Ieq5aSxIDwgYm91emVuamlzaGl0c3VcIDsKK+WcsOizquaZguS7oyA8IGNoaXNoaXRzdWppZGFpXCA7Civnq4vlhaXnpoHmraIgPCB0YWNoaWlyaWtpbnNoaVwgOwor5aSn5ZCM5Zuj57WQIDwgZGFpZG91ZGFua2V0c3VcIDsKK+S6jOmHjeebsuaknOazlSA8IG5panV1bW91a2VuaG91XCA7Civosq/ph5HpgJrluLMgPCBjaG9raW50c3V1Y2hvdVwgOwor5paO5oiS5rKQ5rW0IDwgc2Fpa2FpbW9rdXlva3VcIDsKK+aWsOWItuWkp+WtpiA8IHNoaW5zZWlkYWlnYWt1XCA7CivlhbHlkIzosqzku7sgPCBreW91ZG91c2VraW5pblwgOwor5paw6IGe55m66KGoIDwgc2hpbmJ1bmhhcHB5b3VcIDsKK+i7iuWGheaUueacrSA8IHNoYW5haWthaXNhdHN1XCA7Civoh6ros6Dosqzkv53pmbogPCBqaWJhaXNla2lob2tlblwgOwor5piG6Jmr5a2m6ICFIDwga29uY2h1dWdha3VzaGFcIDsKK+mAgOiBt+W5tOmHkSA8IHRhaXNob2t1bmVua2luXCA7CivliIblibLntbHmsrsgPCBidW5rYXRzdXRvdWNoaVwgOwor56K6546H6YGO56iLIDwga2FrdXJpdHN1a2F0ZWlcIDsKK+mHjeeCremFuOabuemBlCA8IGp1dXRhbnNhbnNvdWRhXCA7CivnoJTnqbbnmbrooaggPCBrZW5reXV1aGFwcHlvdVwgOwor5pen57SE6IGW5pu4IDwga3l1dXlha3VzZWlzaG9cIDsKK+aJi+ihk+WupCA8IHNodWp1dHN1c2hpdHN1XCA7CivokrLpib7lhbXoiI4gPCBrYW1hYm9rb2hlaXNoYVwgOwor57WM6LK756+A57SEIDwga2VpaGlzZXRzdXlha3VcIDsKK+eti+iQjue4rueXhyA8IGtpbicnaXNodWt1c2hvdVwgOwor5YSq55Sf5omL6KGTIDwgeXV1c2Vpc2h1anV0c3VcIDsKK+WFrOWFseaWmemHkSA8IGtvdWt5b3VyeW91a2luXCA7CivlvLfliLbkuK3mlq0gPCBreW91c2VpY2h1dWRhblwgOwor5LiH5pyJ5byV5YqbIDwgYmFuJyd5dXVpbnJ5b2t1XCA7Civnq4vlpKrlrZDlvI8gPCByaXR0YWlzaGlzaGlraVwgOwor5pel5YaF5ZGo5pyfIDwgbmljaGluYWlzaHV1a2lcIDsKK+aGsuazleino+mHiCA8IGtlbnBvdWthaXNoYWt1XCA7Civplbfot53pm6Lpm7voqbEgPCBjaG91a3lvcmlkZW53YVwgOwor576O55qE55Sf5rS7IDwgYml0ZWtpc2Vpa2F0c3VcIDsKK+Wbo+S9k+WJsuW8lSA8IGRhbnRhaXdhcmliaWtpXCA7Civlm73pmpvkuqTmtYEgPCBrb2t1c2Fpa291cnl1dVwgOwor6Kmm552A5a6kIDwgc2hpY2hha3VzaGl0c3VcIDsKK+WGoOeKtumdmeiEiCA8IGthbmpvdWpvdW15YWt1XCA7CivpgIbkuInop5LlvaIgPCBneWFrdXNhbmtha2tlaVwgOwor6KSH6ZuR5oCq5aWHIDwgZnVrdXphdHN1a2Fpa2lcIDsKK+mBuuS8neWtkOW3peWtpiA8IGlkZW5zaGlrb3VnYWt1XCA7Civpq5jlsaTlu7rnr4kgPCBrb3Vzb3VnZW5jaGlrdVwgOwor5LiN5Y+v6IO96YG45oqeIDwgZnVrYW5vdXNlbnRha3VcIDsKK+ecn+ePoOmkiuauliA8IHNoaW5qdXlvdXNob2t1XCA7CivnlLPlkYrnlKjntJkgPCBzaGlua29rdXlvdXNoaVwgOwor5bGA5Zyw5oim5LqJIDwga3lva3VjaGlzZW5zb3VcIDsKK+eIhueZuueJqSA8IGJha3VoYXRzdWJ1dHN1XCA7Civph43opoHkurrniakgPCBqdXV5b3VqaW5idXRzdVwgOwor5rS754mI5Y2w5Yi3IDwga2FwcGFuJydpbnNhdHN1XCA7CivpgKPml6XpgKPlpJwgPCByZW5qaXRzdXJlbicneWFcIDsKK+S4ieiAheWvvueriyA8IHNhbnNoYXRhaXJpdHN1XCA7CivmsYLlprvluoPlkYogPCBreXV1c2Fpa291a29rdVwgOwor54uC6KiA6Ieq5q66IDwga3lvdWdlbmppc2F0c3VcIDsKK+eMquatpuiAhSA8IGlub3NoaXNoaW11c2hhXCA7CivmgKfmn5PoibLkvZMgPCBzZWlzZW5zaG9rdXRhaVwgOwor5Ye454mI5Y2w5Yi3IDwgdG9wcGFuJydpbnNhdHN1XCA7CivliLrouqvljIXkuIEgPCBzYXNoaW1pYm91Y2hvdVwgOwor5pel57Gz6LK/5piTIDwgbmljaGliZWlib3Vla2lcIDsKK+WPpeani+mAoOimj+WJhyA8IGt1a291em91a2lzb2t1XCA7CivmiYvlvaLkuqTmj5vmiYAgPCB0ZWdhdGFrb3VrYW5qb1wgOwor6LuN5LqL5Y2U5YqbIDwgZ3VuamlreW91cnlva3VcIDsKK+Wkp+m7kuafsSA8IGRhaWtva3ViYXNoaXJhXCA7CivmpbXpmZDnirbmhYsgPCBreW9rdWdlbmpvdXRhaVwgOwor54mp55CG54++6LGhIDwgYnV0c3VyaWdlbnNob3VcIDsKK+WcsOaWueiHquayu+S9kyA8IGNoaWhvdWppY2hpdGFpXCA7CivkurrouqvmlLvmkoMgPCBqaW5zaGlua291Z2VraVwgOwor6KiY5oa25Zaq5aSxIDwga2lva3Vzb3VzaGl0c3VcIDsKK+S4jeimj+WJh+WLleipniA8IGZ1a2lzb2t1ZG91c2hpXCA7CivnpL7kvJrnp6nluo8gPCBzaGFrYWljaGl0c3Vqb1wgOwor5a6M5YWo5Li7576p6ICFIDwga2FuemVuc2h1Z2lzaGFcIDsKK+a4m+S+oeWEn+WNtCA8IGdlbmthc2hvdWt5YWt1XCA7CivpjpbluLflrZAgPCBrdXNhcmlrYXRhYmlyYVwgOwor56m65Lit5p+75a+fIDwga3V1Y2h1dXNhc2F0c3VcIDsKK+e0oOS6uuiKneWxhSA8IHNoaXJvdXRvc2hpYmFpXCA7CivkuIDlha3li53osqAgPCBpY2hpcm9rdXNob3VidVwgOwor5Lqk6Z+/5qW95ZujIDwga291a3lvdWdha3VkYW5cIDsKK+ihgOa2sumKgOihjCA8IGtldHN1ZWtpZ2lua291XCA7CivllYblk4HlnKjpq5ggPCBzaG91aGluemFpZGFrYVwgOwor54mp55CG5a2m6ICFIDwgYnV0c3VyaWdha3VzaGFcIDsKK+S4jei6vuiAhSA8IGJ1c2hpdHN1a2Vtb25vXCA7CivlubTnmb7lubTkuK0gPCBuZW5ieWFrdW5lbmp1dVwgOwor5p6d6JGJ5pyr56+AIDwgc2hpeW91bWFzc2V0c3VcIDsKK+i7jemaiueUn+a0uyA8IGd1bnRhaXNlaWthdHN1XCA7Civmr5TovIPnmoTlsI8gPCBoaWtha3V0ZWtpc2hvdVwgOwor5qeL5oiQ57Sg5qeL6YCgIDwga291c2Vpc29rb3V6b3VcIDsKK+a9nOWcqOiDveWKmyA8IHNlbnphaW5vdXJ5b2t1XCA7Civlt6XlrabljZrlo6sgPCBrb3VnYWt1aGFrdXNoaVwgOwor5pyJ5YSf5aWR57SEIDwgeXV1c2hvdWtlaXlha3VcIDsKK+aWsOiBnuW6g+WRiiA8IHNoaW5idW5rb3Vrb2t1XCA7CivkuIrntJrmm7nplbcgPCBqb3VreXV1c291Y2hvdVwgOwor5Lmx6Ki65Lmx55mCIDwgcmFuc2hpbnJhbnJ5b3VcIDsKK+i8ieiyqOWQg+awtOe3miA8IHNhaWtha2lzc3Vpc2VuXCA7Civpm4blkIjkvY/lroUgPCBzaHV1Z291anV1dGFrdVwgOwor5b6h6aOf5LqL5YemIDwgb3Nob2t1amlkb2tvcm9cIDsKK+mkiuauluecn+ePoCA8IHlvdXNob2t1c2hpbmp1XCA7CivlhoXpg6jlkYrnmbogPCBuYWlidWtva3VoYXRzdVwgOwor5ZCN55uu6LOD6YeRIDwgbWVpbW9rdWNoaW5naW5cIDsKK+S4ieiJsuiPqyA8IHNhbnNob2t1c3VtaXJlXCA7Civnm7jlr77mub/luqYgPCBzb3V0YWlzaGl0c3Vkb1wgOwor5a2m5qCh55Sf5rS7IDwgZ2Fra291c2Vpa2F0c3VcIDsKK+WFpeWbveafu+iovCA8IG55dXVrb2t1c2FzaG91XCA7Civoh6rlvovnpZ7ntYwgPCBqaXJpdHN1c2hpbmtlaVwgOwor5rC06YqA5rip5bqm6KiIIDwgc3VpZ2luJydvbmRva2VpXCA7Civlp4nmp5jkurrlvaIgPCBhbmVzYW1hbmluZ3lvdVwgOwor6KGd5pKD6Zai5pWwIDwgc2hvdWdla2lrYW5zdXVcIDsKK+W3p+iogOS7pOiJsiA8IGtvdWdlbnJlaXNob2t1XCA7CivlpInmuKnli5XniakgPCBoZW4nJ29uZG91YnV0c3VcIDsKK+aVsOeQhuirlueQhuWtpiA8IHN1dXJpcm9ucmlnYWt1XCA7Civljp/lp4vli5XniakgPCBnZW5zaGlkb3VidXRzdVwgOwor56m66ZaT6Iq46KGTIDwga3V1a2FuZ2VpanV0c3VcIDsKK+eah+WkquWtkOauv+S4iyA8IGtvdXRhaXNoaWRlbmthXCA7Civlh7rlipvnt5ogPCBzaHV0c3VyeW9rdXNlblwgOwor6ZaL5bqX5LyR5qWtIDwga2FpdGVua3l1dWd5b3VcIDsKK+Wor+alveaWveiorSA8IGdvcmFrdXNoaXNldHN1XCA7CivljYrmsLjkuYXnmoQgPCBoYW4nJ2Vpa3l1dXRla2lcIDsKK+engeeriyA8IHdhdGFrdXNoaXJpdHN1XCA7CivmiKbkuonmnKrkuqHkurogPCBzZW5zb3VtaWJvdWppblwgOwor6aOf57On5LqL5oOFIDwgc2hva3VyeW91amlqb3VcIDsKK+WPr+mAhuWPjeW/nCA8IGthZ3lha3VoYW4nJ25vdVwgOwor56C055Sj566h6LKh5Lq6IDwgaGFzYW5rYW56YWluaW5cIDsKK+eJueWIpeS8muWToSA8IHRva3ViZXRzdWthaWluXCA7CivmrbvmtLvllY/poYwgPCBzaGlrYXRzdW1vbmRhaVwgOwor57O757Wx56We5a2mIDwga2VpdG91c2hpbmdha3VcIDsKK+i7n+mqqOmtmumhniA8IG5hbmtvdHN1Z3lvcnVpXCA7CivlkITkurrlkITmp5ggPCBrYWt1amlua2FrdXlvdVwgOwor6YCa5L+h5LqL5qWtIDwgdHN1dXNoaW5qaWd5b3VcIDsKK+WNlOWumuS4lueVjOaZgiA8IGt5b3V0ZWlzZWthaWppXCA7Civosr/mmJPpmpzlo4EgPCBib3Vla2lzaG91aGVraVwgOwor5Y2Y5LiA6YCa6LKoIDwgdGFuJydpdHN1dHN1dWthXCA7CivljYPkuKHlvbnogIUgPCBzZW5yeW91eWFrdXNoYVwgOwor5Yiw552A5pmC5Yi7IDwgdG91Y2hha3VqaWtva3VcIDsKK+a1t+S4iuS/neWuieW6gSA8IGthaWpvdWhvYW5jaG91XCA7CivmpoLnrpfopoHmsYIgPCBnYWlzYW4nJ3lvdWt5dXVcIDsKK+eIhueZuuWKmyA8IGJha3VoYXRzdXJ5b2t1XCA7Civlm73msJHlubTph5EgPCBrb2t1bWluJyduZW5raW5cIDsKK+azpeawtOeovOalrSA8IGRvcm9taXp1a2FneW91XCA7CivnibnnlbDlgKTliIbop6MgPCB0b2t1aWNoaWJ1bmthaVwgOwor5Zyo5pel57Gz6LuNIDwgemFpbmljaGliZWlndW5cIDsKK+i2iuWig+WFpeWtpiA8IGVra3lvdW55dXVnYWt1XCA7CivmsJHllrbljJbkvIHmpa0gPCBtaW4nJ2Vpa2FraWd5b3VcIDsKK+aVsOeQhuWTsuWtpiA8IHN1dXJpdGV0c3VnYWt1XCA7CivllK/nianlj7LoprMgPCB5dWlidXRzdXNoaWthblwgOwor5ZWG5qWt5a2m5qChIDwgc2hvdWd5b3VnYWtrb3VcIDsKK+W3puWkp+aLrOW8pyA8IGhpZGFyaWRhaWtha2tvXCA7CivmsJHml4/nsr7npZ4gPCBtaW56b2t1c2Vpc2hpblwgOwor5a6f5Yqb6KGM54K6IDwgaml0c3VyeW9rdWtvdWlcIDsKK+Wkp+ilv+a0i+aoquaWrSA8IHRhaXNlaXlvdW91ZGFuXCA7Civmtbfntr/li5XniakgPCBrYWltZW5kb3VidXRzdVwgOwor57Gz6LuN5YW15YqbIDwgYmVpZ3VuaGVpcnlva3VcIDsKK+edgOS/oeWxgCA8IGNoYWt1c2hpbmt5b2t1XCA7Civkurrlt6Xpgb/lporms5UgPCBqaW5rb3VoaW5pbmhvdVwgOwor5bCx5a2m5bm06b2iIDwgc2h1dWdha3VuZW5yZWlcIDsKK+mJseeJqeizh+a6kCA8IGtvdWJ1dHN1c2hpZ2VuXCA7Civou5/lvI/ph47nkIMgPCBuYW5zaGlraXlha3l1dVwgOwor5L+h6KiX57Wx5rK7IDwgc2hpbnRha3V0b3VjaGlcIDsKK+e1jOa4iOa0u+WLlSA8IGtlaXphaWthdHN1ZG91XCA7CivlhbXlvI/kvZPmk40gPCBoZWlzaGlraXRhaXNvdVwgOwor6a2a576k5o6i55+l5qmfIDwgZ3lvZ3VudGFuY2hpa2lcIDsKK+eUn+aulue0sOiDniA8IHNlaXNob2t1c2FpYm91XCA7CivlnLDlvaLmuKzph48gPCBjaGlrZWlzb2t1cnlvdVwgOwor5ZWG5qWt6LOH5pysIDwgc2hvdWd5b3VzaGlob25cIDsKK+mBiumbouWfuuWPjeW/nCA8IHl1dXJpa2loYW4nJ25vdVwgOwor5bCP55Sw5Y6f6KmV5a6aIDwgb2Rhd2FyYWh5b3Vqb3VcIDsKK+aVsOWApOebruaomSA8IHN1dWNoaW1va3VoeW91XCA7CivpqJLpn7PpmLLmraLms5UgPCBzb3VvbmJvdXNoaWhvdVwgOwor5LiA5b6X5LiA5aSxIDwgaXR0b2t1aXNzaGl0c3VcIDsKK+mAmuS/oeiyqeWjsiA8IHRzdXVzaGluaGFuYmFpXCA7CivlvLfliLbln7fooYwgPCBreW91c2Vpc2hpa2tvdVwgOwor5bm76Kaa55eH54q2IDwgZ2Vua2FrdXNob3Vqb3VcIDsKK+aHkOWIgCA8IGZ1dG9rb3JvZ2F0YW5hXCA7CivnlpHllY/ku6PlkI3oqZ4gPCBnaW1vbmRhaW1laXNoaVwgOwor5YyX6Zm45Zyw5pa5IDwgaG9rdXJpa3VjaGlob3VcIDsKK+WJsuW8leeZuuihjCA8IHdhcmliaWtpaGFra291XCA7CivluoPloLHmtLvli5UgPCBrb3Vob3VrYXRzdWRvdVwgOwor5bGx6auY5bi95a2QIDwgeWFtYXRha2Fib3VzaGlcIDsKK+afk+iJsuW3peWgtCA8IHNlbnNob2t1a291am91XCA7CivlhazlvI/oqKrllY8gPCBrb3VzaGlraWhvdW1vblwgOwor5o6S5Ye654mpIDwgaGFpc2h1dHN1YnV0c3VcIDsKK+e3j+WQiOmWi+eZuiA8IHNvdWdvdWthaWhhdHN1XCA7CivpgKPnq4vmlL/mqKkgPCByZW5yaXRzdXNlaWtlblwgOwor5beu5Yil6KGo54++IDwgc2FiZXRzdWh5b3VnZW5cIDsKK+aoqeWKm+mXmOS6iSA8IGtlbnJ5b2t1dG91c291XCA7Civnm7jlr77mgKfnkIboq5YgPCBzb3V0YWlzZWlyaXJvblwgOwor6KO95ZOB5oim55WlIDwgc2VpaGluc2Vucnlha3VcIDsKK+WIhuawtOWxseiEiCA8IGJ1bnN1aXNhbm15YWt1XCA7CivphbjljJbpmLLmraLliaQgPCBzYW5rYWJvdXNoaXphaVwgOwor56ys5LqM5qyh55Sj5qWtIDwgZGFpbmlqaXNhbmd5b3VcIDsKK+mJseeJqeizqiA8IGtvdWJ1dHN1c2hpdHN1XCA7CivmnInmqZ/loanmurblqpIgPCB5dXVraWVuJyd5b3ViYWlcIDsKK+iqmOmbu+ato+aOpSA8IHl1dWRlbnNlaXNldHN1XCA7Civnn6XopprnpZ7ntYwgPCBjaGlrYWt1c2hpbmtlaVwgOwor6YCQ5p2h5a+p6K2wIDwgY2hpa3Vqb3VzaGluZ2lcIDsKK+WNg+WztuWIl+WztiA8IGNoaXNoaW1hcmV0dG91XCA7CivovLjlh7rotoXpgY4gPCB5dXNodXRzdWNob3VrYVwgOwor6Zu75a2Q6KiI566X5qmfIDwgZGVuc2hpa2Vpc2Fua2lcIDsKK+WwiueOi+iojuW5lSA8IHNvbicnbm91dG91YmFrdVwgOwor5oim6ZeY54qg54my6ICFIDwgc2VudG91Z2lzZWlzaGFcIDsKK+aDheWgsemAmuS/oSA8IGpvdWhvdXRzdXVzaGluXCA7CivmjK/lh7rlsYAgPCBmdXJpZGFzaGlreW9rdVwgOwor5rCR6ZaT6Iiq56m65qmfIDwgbWlua2Fua291a3V1a2lcIDsKK+i2hei2iuS6pOS7oyA8IGNob3VldHN1a291dGFpXCA7Civlj43miKbkuLvnvqnogIUgPCBoYW5zZW5zaHVnaXNoYVwgOwor55Sf5rS756m66ZaTIDwgc2Vpa2F0c3VrdXVrYW5cIDsKK+WJjeeri+iFuueCjiA8IHplbnJpdHN1c2VuJydlblwgOwor5Z+35YuZ5a6kIDwgc2hpdHN1bXVzaGl0c3VcIDsKK+ihjOaUv+aUuemdqSA8IGd5b3VzZWlrYWlrYWt1XCA7Civlvovku6Tlm73lrrYgPCByaXRzdXJ5b3Vrb2trYVwgOwor5b+D6ZyK54++6LGhIDwgc2hpbnJlaWdlbnNob3VcIDsKK+eUn+iqleeZvuW5tCA8IHNlaXRhbmh5YWt1bmVuXCA7Civoh6rli5XnnYDkv6EgPCBqaWRvdWNoYWt1c2hpblwgOwor55m654ax6YePIDwgaGF0c3VuZXRzdXJ5b3VcIDsKK+esrOS4ieWLouWKmyA8IGRhaXNhbnNlaXJ5b2t1XCA7CivlpKflhavou4ogPCBkYWloYWNoaWd1cnVtYVwgOwor5pu455WZ6YO15L6/IDwga2FraXRvbWV5dXViaW5cIDsKK+ims+WFieahiOWGheaJgCA8IGthbmtvdWFuJyduYWlqb1wgOwor55+l6K2Y5L2T57O7IDwgY2hpc2hpa2l0YWlrZWlcIDsKK+mbhuWQiOiomOi/sCA8IHNodXVnb3VraWp1dHN1XCA7CivkuInnmb7oq7jkvq8gPCBzYW5ieWFrdXNob2tvdVwgOwor6auY6b2i5YyW56S+5LyaIDwga291cmVpa2FzaGFrYWlcIDsKK+iomOWPt+irlueQhuWtpiA8IGtpZ291cm9ucmlnYWt1XCA7CivlpKfooYbmloflraYgPCB0YWlzaHV1YnVuZ2FrdVwgOwor5Lit562J5pWZ6IKyIDwgY2h1dXRvdWt5b3Vpa3VcIDsKK+aVmeiCsuihjOaUvyA8IGt5b3Vpa3VneW91c2VpXCA7Civnm7TmjqXnmoQgPCBjaG9rdXNldHN1dGVraVwgOwor5q2m6KOF5Lit56uLIDwgYnVzb3VjaHV1cml0c3VcIDsKK+W5s+WSjOWNlOWKmyA8IGhlaXdha3lvdXJ5b2t1XCA7CivmjIflkI3miYvphY3kurogPCBzaGltZWl0ZWhhaWppblwgOwor6Zu76YmE5Lya56S+IDwgZGVudGV0c3VnYWlzaGFcIDsKK+iHqui7oui7iuaXheihjCA8IGppdGVuc2hhcnlva291XCA7Civlh7rluK3ml6XmlbAgPCBzaHVzc2VraW5pc3N1dVwgOwor55yM56uL55eF6ZmiIDwga2Vucml0c3VieW91aW5cIDsKK+W5s+Wdh+WkqumZveaZgiA8IGhlaWtpbnRhaXlvdWppXCA7CivlgY/ml4HlhqDohJogPCBoZW5ib3VrYW5reWFrdVwgOwor5aW95rCX5oCn57Sw6I+MIDwga291a2lzZWlzYWlraW5cIDsKK+iyqeWjsuS/g+mAsiA8IGhhbmJhaXNva3VzaGluXCA7Civkv6HoqJfmipXos4cgPCBzaGludGFrdXRvdXNoaVwgOwor6Zu75rOi5pyb6YGg6Y+hIDwgZGVucGFib3Vlbmt5b3VcIDsKK+S4reWwj+S8gealrSA8IGNodXVzaG91a2lneW91XCA7CivkuInooYzluoPlkYogPCBzYW5neW91a291a29rdVwgOwor6KGA5ray5b6q55KwIDwga2V0c3Vla2lqdW5rYW5cIDsKK+mAo+e1kOaxuueulyA8IHJlbmtldHN1a2Vzc2FuXCA7CivOuOeQhuirliA8IHNoaVwgzIR0YVwgzIRyaXJvblwgOwor5pS55pyt6YuPIDwga2Fpc2F0c3VoYXNhbWlcIDsKK+mqqOi7n+WMlueXhyA8IGtvdHN1bmFua2FzaG91XCA7CivlirTlg43pgYvli5XogIUgPCByb3Vkb3V1bmRvdXNoYVwgOwor5pS/5rK75ZOy5a2mIDwgc2Vpaml0ZXRzdWdha3VcIDsKK+WVhualreaUvumAgSA8IHNob3VneW91aG91c291XCA7Civlm73pmLLnt4/nnIEgPCBrb2t1Ym91c291c2hvdVwgOwor55Sf5rS75oyH5bCOIDwgc2Vpa2F0c3VzaGlkb3VcIDsKK+eCjueGseWcsOeNhCA8IGVuJyduZXRzdWppZ29rdVwgOwor5YWr6Z2i546y55OPIDwgaGFjaGltZW5yZWlyb3VcIDsKK+mdouS8muisnee1tiA8IG1lbmthaXNoYXpldHN1XCA7CivpgZPot6/mqJnorZggPCBkb3Vyb2h5b3VzaGlraVwgOwor5Zu95Za26YCa5L+hIDwga29rdWVpdHN1dXNoaW5cIDsKK+mch+eBveiomOW/teaXpSA8IHNoaW5zYWlraW5lbmJpXCA7CivpganmnZDpganmiYAgPCB0ZWtpemFpdGVraXNob1wgOwor5YqH55eH6IKd54KOIDwgZ2VraXNob3VrYW4nJ2VuXCA7Civnianmg4XpqJLnhLYgPCBidXRzdWpvdXNvdXplblwgOwor5b+d5raZIDwga2F0YWppa2VuYW1pZGFcIDsKK+WFrOawkeeUn+a0uyA8IGtvdW1pbnNlaWthdHN1XCA7CivlhaXlraboqabpqJMgPCBueXV1Z2FrdXNoaWtlblwgOwor5oKq5b6z5pS/5rK75a62IDwgYWt1dG9rdXNlaWppa2FcIDsKK+aDheWgseS4u+imgee0oCA8IGpvdWhvdXNodXlvdXNvXCA7CivlkIjllLHpmorplbcgPCBnYXNzaG91dGFpY2hvdVwgOwor5Lm+54el54mb5LmzIDwga2Fuc291Z3l1dW55dXVcIDsKK+ebtOezu+WwiuWxniA8IGNob2trZWlzb256b2t1XCA7CivlhaXlrabpoZjmm7ggPCBueXV1Z2FrdWdhbnNob1wgOwor5Ye655m65pmC6ZaTIDwgc2h1cHBhdHN1amlrYW5cIDsKK+S4u+imgeS6uueJqSA8IHNodXlvdWppbmJ1dHN1XCA7CivlhazmrablkIjkvZPoq5YgPCBrb3VidWdhdHRhaXJvblwgOwor5LiN5p2f6ICFIDwgZnV0c3V0c3VrYW1vbm9cIDsKK+eHleWNg+mzpSA8IHRzdWJhbWVjaGlkb3JpXCA7CivmloflrabkvZzlk4EgPCBidW5nYWt1c2FrdWhpblwgOwor6Zu75YWJ5o6y56S65p2/IDwgZGVua291a2VpamliYW5cIDsKK+i7veS+v+mJhOmBkyA8IGtlaWJlbnRldHN1ZG91XCA7CivlibLlvJXluILloLQgPCB3YXJpYmlraXNoaWpvdVwgOwor5aSx6Liq5a6j5ZGKIDwgc2hpc3NvdXNlbmtva3VcIDsKK+WMluWtpue1kOWQiCA8IGthZ2FrdWtldHN1Z291XCA7Civkv53pmbrmlpnnjocgPCBob2tlbnJ5b3VyaXRzdVwgOwor5L6h6Zu75a2Q54q25oWLIDwga2FkZW5zaGlqb3V0YWlcIDsKK+S/oei2iuacrOe3miA8IHNoaW5ldHN1aG9uc2VuXCA7CivnpZ7ntYzkuK3mnqIgPCBzaGlua2VpY2h1dXN1dVwgOwor55m65YWJ5YuV54mpIDwgaGFra291ZG91YnV0c3VcIDsKK+awtOeUo+WKoOW3peWTgSA8IHN1aXNhbmtha291aGluXCA7CivlubPpnaLlub7kvZXlraYgPCBoZWltZW5raWthZ2FrdVwgOwor6KSH5byP54Gr5bGxIDwgZnVrdXNoaWtpa2F6YW5cIDsKK+WgheW/jeS4jeaKnCA8IGtlbicnbmluZnViYXRzdVwgOwor6ICQ5LmP55Sf5rS7IDwgdGFpYm91c2Vpa2F0c3VcIDsKK+ekvuS8mumAmuW/tSA8IHNoYWthaXRzdXVuZW5cIDsKK+aOpeWuouaFi+W6piA8IHNla2t5YWt1dGFpZG9cIDsKK+i7veeIhuaSg+apnyA8IGtlaWJha3VnZWtpa2lcIDsKK+WNl+adsSA8IG1pbmFtaWhpZ2FzaGlcIDsKK+e9suWQjeaNuuWNsCA8IHNob21laW5hdHN1aW5cIDsKK+S8keaGqeWupCA8IGt5dXVrZWlzaGl0c3VcIDsKK+iDuOmDqOeWvuaCoyA8IGt5b3VidXNoaWtrYW5cIDsKK+ixoeeJmeWPluW8lSA8IHpvdWdldG9yaWhpa2lcIDsKK+aXpeabnOWkp+W3pSA8IG5pY2hpeW91ZGFpa3VcIDsKK+ebrueOieWVhuWTgSA8IG1lZGFtYXNob3VoaW5cIDsKK+ijveiWrOS8muekviA8IHNlaXlha3VnYWlzaGFcIDsKK+aKleWFieeFp+aYjiA8IHRvdWtvdXNob3VtZWlcIDsKK+a4heW7iea9lOeZvSA8IHNlaXJlbmtlcHBha3VcIDsKK+iHqui7oui7iue9ruWgtCA8IGppdGVuc2hhb2tpYmFcIDsKK+aVteWJjemAg+S6oSA8IHRla2l6ZW50b3Vib3VcIDsKK+aXpeWIiuaWsOiBniA8IG5pa2thbnNoaW5idW5cIDsKK+aKseiFuee1tuWAkiA8IGhvdWZ1a3V6ZXR0b3VcIDsKK+aXpeayoeWJjSA8IG5pY2hpYm90c3V6ZW5cIDsKK+aVmeiCsuWnlOWToeS8miA8IGt5b3Vpa3VpaW5rYWlcIDsKK+aCquiZkOeEoemBkyA8IGFrdWd5YWt1bXVkb3VcIDsKK+awtOS4iumjm+ihjOapnyA8IHN1aWpvdWhpa291a2lcIDsKK+WOreS4luaCsuims+iAhSA8IGVuc2VpaGlrYW5zaGFcIDsKK+WbveWutuaoqeWKmyA8IGtva2tha2Vucnlva3VcIDsKK+WNl+a0i+iruOWztiA8IG5hbicneW91c2hvdG91XCA7CivlvozmnJ/ljbDosaHmtL4gPCBrb3VraWluc2hvdWhhXCA7Civlm5rkurrlirTlg40gPCBzaHV1amlucm91ZG91XCA7Civni5DmoLzlrZAgPCBraXRzdW5lZ291c2hpXCA7CivliqPnrYnoprPlv7UgPCByZXR0b3VrYW4nJ25lblwgOwor6Zai5L+C5a6Y5bqBIDwga2Fua2Vpa2FuY2hvdVwgOwor6L6y5rCR5paH5a2mIDwgbm91bWluYnVuZ2FrdVwgOwor6Ieq54S254++6LGhIDwgc2hpemVuZ2Vuc2hvdVwgOwor6IWO6IeT57WQ55+zIDwgamluem91a2Vzc2VraVwgOwor5Y+k5YW1IDwgZnVydXRzdXdhbW9ub1wgOwor5pa95pS/5pa56YedIDwgc2hpc2VpaG91c2hpblwgOwor6Zay6Kan5a6kIDwgZXRzdXJhbnNoaXRzdVwgOwor5aSp56u65rWq5Lq6IDwgdGVuamlrdXJvdW5pblwgOwor5bu656+J54mpIDwga2VuY2hpa3VidXRzdVwgOwor6ZyK6a2C5LiN5ruFIDwgcmVpa29uZnVtZXRzdVwgOwor5YWs5YWx57WE5ZCIIDwga291a3lvdWt1bWlhaVwgOwor5pyJ57ea6Zu75L+hIDwgeXV1c2VuZGVuc2hpblwgOwor6KGA6KGM6Zqc5a6zIDwga2Vra291c2hvdWdhaVwgOwor5Lq655qE6LOH5rqQIDwgamludGVraXNoaWdlblwgOwor5Zyw5pa56KGM5pS/IDwgY2hpaG91Z3lvdXNlaVwgOwor6ZyH5aSp5YuV5ZywIDwgc2hpbnRlbmRvdWNoaVwgOwor56ys5LiJ5bid5Zu9IDwgZGFpc2FudGVpa29rdVwgOwor5aSn6KaP5qih5oim5LqJIDwgZGFpa2lib3NlbnNvdVwgOwor5a6f6LOq55qEIDwgamlzc2hpdHN1dGVraVwgOwor5aSp5paH5a2m6ICFIDwgdGVubW9uZ2FrdXNoYVwgOwor5rex5aSc5pS+6YCBIDwgc2hpbicneWFob3Vzb3VcIDsKK+mfs+WjsOW9ouW8jyA8IG9uc2Vpa2Vpc2hpa2lcIDsKK+S6pOmAmuWVj+mhjCA8IGtvdXRzdXVtb25kYWlcIDsKK+WFrOWFseaKleizhyA8IGtvdWt5b3V0b3VzaGlcIDsKK+WKg+aZguS7o+eahCA8IGtha3VqaWRhaXRla2lcIDsKK+WQjOaXj+S8muekviA8IGRvdXpva3VnYWlzaGFcIDsKK+W/g+eQhuaPj+WGmSA8IHNoaW5yaWJ5b3VzaGFcIDsKK+aKgOihk+awtOa6liA8IGdpanV0c3VzdWlqdW5cIDsKK+eEoeaLheS/neekvuWCtSA8IG11dGFucG9zaGFzYWlcIDsKK+eQhuWtpuWNmuWjqyA8IHJpZ2FrdWhha3VzaGlcIDsKK+WxgOaJgOm6u+mFlCA8IGt5b2t1c2hvbWFzdWlcIDsKK+eUo+WIpeS8muitsCA8IHNhbmJldHN1a2FpZ2lcIDsKK+e/jOOAheaXpSA8IHlva3V5b2t1aml0c3VcIDsKK+WwseWtpuWFkOerpSA8IHNodXVnYWt1amlkb3VcIDsKK+epuuS4ree1puayuSA8IGt1dWNodXVreXV1eXVcIDsKK+Wbvemam+imj+agvCA8IGtva3VzYWlraWtha3VcIDsKK+WtpuagoeaWsOiBniA8IGdha2tvdXNoaW5idW5cIDsKK+ippuiBtOWupCA8IHNoaWNob3VzaGl0c3VcIDsKK+aDheWgseeUo+alrSA8IGpvdWhvdXNhbmd5b3VcIDsKK+eZu+mMsueVquWPtyA8IHRvdXJva3ViYW5nb3VcIDsKK+Wcn+acqOW3peWtpiA8IGRvYm9rdWtvdWdha3VcIDsKK+eUn+S9k+WPjeW/nCA8IHNlaXRhaWhhbicnbm91XCA7Civni7jlm4PlrZAgPCB0YW51a2liYXlhc2hpXCA7CivosaHlvrTkuLvnvqkgPCBzaG91Y2hvdXNodWdpXCA7Civpn7Pmpb3mlZnogrIgPCBvbmdha3VreW91aWt1XCA7CivoprPmuKzlnLDngrkgPCBrYW5zb2t1Y2hpdGVuXCA7CivpgaDlv4PliIbpm6LmqZ8gPCBlbnNoaW5idW5yaWtpXCA7CivmpI3mr5vooZMgPCBzaG9rdW1vdWp1dHN1XCA7CivmioDooZPlkIzlo6sgPCBnaWp1dHN1ZG91c2hpXCA7Civlv5zmgKXmlLvmkoMgPCBvdWt5dXVrb3VnZWtpXCA7CivlkIzku4HmlZnkvJogPCBkb3VqaW5reW91a2FpXCA7Civlrp/lg43mmYLplpMgPCBqaXRzdWRvdWppa2FuXCA7CivpnZLnqbrpp5Dou4ogPCBhb3pvcmFjaHV1c2hhXCA7Civpm7vlipvovLjpgIEgPCBkZW5yeW9rdXl1c291XCA7Civou43pmormlZnogrIgPCBndW50YWlreW91aWt1XCA7CivpgaDmtIvmvIHmpa0gPCBlbicneW91Z3lvZ3lvdVwgOwor5pen5q2j5pyIIDwga3l1dXNob3VnYXRzdVwgOwor5L+d6Zqc5Y2g6aCYIDwgaG9zaG91c2VucnlvdVwgOwor5Lqk5o+b5rOV5YmHIDwga291a2FuaG91c29rdVwgOwor54m95byV55mC5rOVIDwga2VuJydpbnJ5b3Vob3VcIDsKK+mnheS8neertui1sCA8IGVraWRlbmt5b3Vzb3VcIDsKK+WIh+atr+aJvOiFlSA8IHNlc3NoaXlha3V3YW5cIDsKK+S4uOm8u+icgiA8IG1hcnVoYW5hYmFjaGlcIDsKK+Wbo+S9k+S6pOa4iSA8IGRhbnRhaWtvdXNob3VcIDsKK+iEmuiJsuiAhSA8IGt5YWt1c2hva3VzaGFcIDsKK+S6reS4u+mWoueZvSA8IHRlaXNodWthbnBha3VcIDsKK+S4gOauteWLleipniA8IGljaGlkYW5kb3VzaGlcIDsKK+S4gOiIrOW5leWDmiA8IGlwcGFuYmFrdXJ5b3VcIDsKK+WvneWPsOWIl+i7iiA8IHNoaW5kYWlyZXNzaGFcIDsKK+aKleaTsuertuaKgCA8IHRvdXRla2lreW91Z2lcIDsKK+adsea1t+WyuCA8IGhpZ2FzaGlrYWlnYW5cIDsKK+awl+ixoemAmuWgsSA8IGtpc2hvdXRzdXVob3VcIDsKK+mWi+aekOWPsOWcsCA8IGthaXNla2lkYWljaGlcIDsKK+WGhei4nSA8IHVjaGlrdXJ1YnVzaGlcIDsKK+Wun+eUqOS4u+e+qSA8IGppdHN1eW91c2h1Z2lcIDsKK+ebtOeri+iMjiA8IGNob2t1cml0c3VrZWlcIDsKK+eZvembquWnqyA8IHNoaXJheXVraWhpbWVcIDsKK+W3peWgtOWun+e/kiA8IGtvdWpvdWppc3NodXVcIDsKK+S4ree2meiyv+aYkyA8IGNodXVrZWlib3Vla2lcIDsKK+aAp+iDveeJueaApyA8IHNlaW5vdXRva3VzZWlcIDsKK+mbu+awl+WGt+iUteW6qyA8IGRlbmtpcmVpem91a29cIDsKK+acgOW+jOmAmueJkiA8IHNhaWdvdHN1dWNob3VcIDsKK+acgOS9jua4qeW6puioiCA8IHNhaXRlaW9uZG9rZWlcIDsKK+Wbvemam+e1kOWpmiA8IGtva3VzYWlrZWtrb25cIDsKK+mAoOacrOaKgOihkyA8IHpvdWhvbmdpanV0c3VcIDsKK+WmqOWus+W3peS9nCA8IGJvdWdhaWtvdXNha3VcIDsKK+aWreeGseeahCA8IGRhbicnbmV0c3V0ZWtpXCA7CivmsJHml4/mhI/orZggPCBtaW56b2t1aXNoaWtpXCA7Civms6XnuITlvI8gPCBkb3JvbmF3YXNoaWtpXCA7CivotIXmsqLkuInmmKcgPCB6ZWl0YWt1emFubWFpXCA7CivlhpnnnJ/oo73niYggPCBzaGFzaGluc2VpaGFuXCA7CivoprPplrLlvI8gPCBrYW4nJ2V0c3VzaGlraVwgOwor5a2m5qCh5pWZ6IKyIDwgZ2Fra291a3lvdWlrdVwgOwor6Zyn5Lit5L+h5Y+3IDwgbXVjaHV1c2hpbmdvdVwgOwor57K+56We54q25oWLIDwgc2Vpc2hpbmpvdXRhaVwgOwor5ZWG56eR5aSn5a2mIDwgc2hvdWthZGFpZ2FrdVwgOwor5ZC45rm/5oCnIDwga3l1dXNoaXRzdXNlaVwgOwor5raI5qW155qEIDwgc2hvdWt5b2t1dGVraVwgOwor6aGn5ZWP5byB6K235aOrIDwga29tb25iZW5nb3NoaVwgOwor5YaZ55yf57WQ5amaIDwgc2hhc2hpbmtla2tvblwgOwor5YWx5ZCM5oim57eaIDwga3lvdWRvdXNlbnNlblwgOwor54Gr5bGx5rS75YuVIDwga2F6YW5rYXRzdWRvdVwgOwor6bqm56iI57Sw5belIDwgbXVnaXdhcmF6YWlrdVwgOwor5oiR5Yip5oiR5Yip5Lqh6ICFIDwgZ2FyaWdhcmltb3VqYVwgOwor5Yuk5Yq05omA5b6XIDwga2lucm91c2hvdG9rdVwgOwor6aaW55u45a6Y6YK4IDwgc2h1c2hvdWthbnRlaVwgOwor6Kqt5pu45LiJ5pinIDwgZG9rdXNob3phbm1haVwgOwor5Lit562J5pWZ5ZOhIDwgY2h1dXRvdWt5b3VpblwgOwor5LiA5qyh6Zu75rWBIDwgaWNoaWppZGVucnl1dVwgOwor5Y+w5Lit6Zai5L+CIDwgdGFpY2h1dWthbmtlaVwgOwor56eY5a+G57WQ56S+IDwgaGltaXRzdWtlc3NoYVwgOwor5p2x5pa55ouh5aSnIDwgdG91aG91a2FrdWRhaVwgOwor5ryC5rWB54mpIDwgaHlvdXJ5dXVidXRzdVwgOwor6L+R6Zqj6Ku45Zu9IDwga2lucmluc2hva29rdVwgOwor5Yq05YON6ZqO57SaIDwgcm91ZG91a2Fpa3l1dVwgOwor6LKe5pON6Kaz5b+1IDwgdGVpc291a2FuJyduZW5cIDsKK+awkemWk+S8neaJvyA8IG1pbmthbmRlbnNob3VcIDsKK+iGgOiDsee1kOefsyA8IGJvdWtvdWtlc3Nla2lcIDsKK+i7ouWxhemAmuefpSA8IHRlbmt5b3RzdXVjaGlcIDsKK+e0lOato+aVsOWtpiA8IGp1bnNlaXN1dWdha3VcIDsKK+eUt+eIteWkq+S6uiA8IGRhbnNoYWt1ZnVqaW5cIDsKK+S4i+S6jOahgSA8IHNoaW1vZnV0YWtldGFcIDsKK+S6jOehq+WMlueCree0oCA8IG5pcnl1dWthdGFuc29cIDsKK+WhqeiUtemjn+WTgSA8IGVuem91c2hva3VoaW5cIDsKK+S4gOiHtOWbo+e1kCA8IGl0Y2hpZGFua2V0c3VcIDsKK+itpuWvn+WbveWutiA8IGtlaXNhdHN1a29ra2FcIDsKK+e1jOa4iOeZveabuCA8IGtlaXphaWhha3VzaG9cIDsKK+epgOWAieWcsOW4ryA8IGtva3Vzb3VjaGl0YWlcIDsKK+aGgumsseizqiA8IHl1dXV0c3VzaGl0c3VcIDsKK+aXqeacn+itpuaIkuapnyA8IHNvdWtpa2Vpa2Fpa2lcIDsKK+eSsOWig+S6i+alrSA8IGthbmt5b3VqaWd5b3VcIDsKK+e3j+WQiOWVhuekviA8IHNvdWdvdXNob3VzaGFcIDsKK+S/hOaIkOmHkSA8IG5pd2FrYW5hcmlraW5cIDsKK+WwkeW5tOWKtOWDjSA8IHNob3VuZW5yb3Vkb3VcIDsKK+S4gOaMmeS4oeW+lyA8IGlra3lvcnlvdXRva3VcIDsKK+a4rOWumuijhee9riA8IHNva3V0ZWlzb3VjaGlcIDsKK+WJjeihm+e+juihkyA8IHplbicnZWliaWp1dHN1XCA7Civmp4vpgKDpgbrkvJ3lrZAgPCBrb3V6b3VpZGVuc2hpXCA7Civnmobml6LmnIjpo58gPCBrYWlraWdlc3Nob2t1XCA7Civlhazlm6PkvY/lroUgPCBrb3VkYW5qdXV0YWt1XCA7CivoqK3lgpnmipXos4cgPCBzZXRzdWJpdG91c2hpXCA7Civml6XluLjojLbpo68gPCBuaWNoaWpvdXNhaGFuXCA7CivnvqTpm4blv4PnkIYgPCBndW5zaHV1c2hpbnJpXCA7Civnmb7miKbnt7Tno6ggPCBoeWFrdXNlbnJlbm1hXCA7CivljbPoiIjoqankurogPCBzb2treW91c2hpamluXCA7CivlloTpmqPmlL/nrZYgPCB6ZW5yaW5zZWlzYWt1XCA7CivliY3lj5flj47nm4ogPCBtYWV1a2VzaHV1ZWtpXCA7CivpnZLpioXlmajmmYLku6MgPCBzZWlkb3VraWppZGFpXCA7Civlm73msJHnmoblhbUgPCBrb2t1bWlua2FpaGVpXCA7Civpqqjnm7jlrabogIUgPCBrb3Nzb3VnYWt1c2hhXCA7CivmiLjliKXoqKrllY8gPCBrb2JldHN1aG91bW9uXCA7CivniIblvL7lo7DmmI4gPCBiYWt1ZGFuc2VpbWVpXCA7CivpgZPmpb3mga/lrZAgPCBkb3VyYWt1bXVzdWtvXCA7CivoiIzpvJMgPCBzaGl0YXRzdWR6dW1pXCA7Civlj47nqavniakgPCBzaHV1a2FrdWJ1dHN1XCA7Civosrjku5jph5EgPCBrYXNoaXRzdWtla2luXCA7CivnmZLlgrfntYTnuZQgPCB5dXNob3Vzb3NoaWtpXCA7CivnlLflrZDlrabnlJ8gPCBkYW5zaGlnYWt1c2VpXCA7Civli5XnianpgZQgPCBkb3VidXRzdXRhY2hpXCA7CivosqvpgJrpioPlibUgPCBrYW50c3V1anV1c291XCA7Civpo5/ns6fluoEgPCBzaG9rdXJ5b3VjaG91XCA7CivkvJroqIjmpJzmn7vpmaIgPCBrYWlrZWlrZW5zYWluXCA7CivmlrDpg47mlrDlqaYgPCBzaGlucm91c2hpbnB1XCA7CivnqbrmjLrkvZzmiKYgPCBrdXV0ZWlzYWt1c2VuXCA7CivphY3nrqHlt6Xmpa0gPCBoYWlrYW5rb3VneW91XCA7CivlroflrpnpgJrkv6EgPCB1Y2h1dXRzdXVzaGluXCA7Civohbrnl4Xos6ogPCBzZW5ieW91c2hpdHN1XCA7CivnrYnmr5TmlbDliJcgPCB0b3VoaXN1dXJldHN1XCA7CivluorkuIrmtbjmsLQgPCB5dWthdWVzaGluc3VpXCA7Civoh6rnhLbnkrDlooMgPCBzaGl6ZW5rYW5reW91XCA7Civml6XkuK3miKbkuokgPCBuaXRjaHV1c2Vuc291XCA7CivmsJHntIToqqwgPCBtaW4nJ3lha3VzZXRzdVwgOwor5ZC45rm/5YmkIDwga3l1dXNoaXRzdXphaVwgOwor5LqM562L6YGTIDwgZnV0YXN1amltaWNoaVwgOwor5Y2K6ZW36Z20IDwgaGFuJyduYWdhZ3V0c3VcIDsKK+aomemhjOmfs+alvSA8IGh5b3VkYWlvbmdha3VcIDsKK+agoemVt+WupCA8IGtvdWNob3VzaGl0c3VcIDsKK+WKo+etieikh+WQiCA8IHJldHRvdWZ1a3Vnb3VcIDsKK+ecvOeQg+mKgOihjCA8IGdhbmt5dXVnaW5rb3VcIDsKK+axuuaWreWKmyA8IGtldHN1ZGFucnlva3VcIDsKK+W4guWgtOWIhuaekCA8IHNoaWpvdWJ1bnNla2lcIDsKK+S4remWk+ippumokyA8IGNodXVrYW5zaGlrZW5cIDsKK+iovOWIuOS8muekviA8IHNob3VrZW5nYWlzaGFcIDsKK+a8j+ipsee1kOWQiCA8IHJvdXdhZ2V0c3Vnb3VcIDsKK+Wbvemam+e0m+S6iSA8IGtva3VzYWlmdW5zb3VcIDsKK+mbhuWbo+ihjOWLlSA8IHNodXVkYW5rb3Vkb3VcIDsKK+i7iuS4oee4pumaiiA8IHNoYXJ5b3VqdXV0YWlcIDsKK+S6pOS7o+aTjealrSA8IGtvdXRhaXNvdWd5b3VcIDsKK+S9nOiAheacquipsyA8IHNha3VzaGFtaXNob3VcIDsKK+ilv+acrOmhmOWvuiA8IG5pc2hpaG9uZ2FuamlcIDsKK+awuOS7o+WAn+WcsCA8IGVpdGFpc2hha3VjaGlcIDsKK+W3ruWHuuS6uiA8IHNhc2hpZGFzaGluaW5cIDsKK+S4g+abnOihqCA8IHNoaWNoaXlvdWh5b3VcIDsKK+WtkOWurueti+iFqyA8IHNoaWt5dXVraW5zaHVcIDsKK+WIh+aJi+iSkOmbhiA8IGtpdHRlc2h1dXNodXVcIDsKK+mmluS9jeaUu+mYsuaIpiA8IHNodWlrb3Vib3VzZW5cIDsKK+WFqOaWueS9jeWkluS6pCA8IHplbmhvdWlnYWlrb3VcIDsKK+WumOiyu+eVmeWtpiA8IGthbnBpcnl1dWdha3VcIDsKK+e3qOmbhuS4u+W5uSA8IGhlbnNodXVzaHVrYW5cIDsKK+eUn+eUo+aKgOihkyA8IHNlaXNhbmdpanV0c3VcIDsKK+awtOW5s+W/nOWKmyA8IHN1aWhlaW91cnlva3VcIDsKK+WFiOerr+aKgOihkyA8IHNlbnRhbmdpanV0c3VcIDsKK+elnuWurueQg+WgtCA8IGppbmd1dWt5dXVqb3VcIDsKK+eBsOe3keiJsiA8IGthaXJ5b2t1c2hva3VcIDsKK+acrOizqueahCA8IGhvbnNoaXRzdXRla2lcIDsKK+eEoeS6uuWMluW3peWgtCA8IG11amlua2Frb3Vqb3VcIDsKK+mfs+alveWkp+WtpiA8IG9uZ2FrdWRhaWdha3VcIDsKK+S+teeVpeihjOeCuiA8IHNoaW5yeWFrdWtvdWlcIDsKK+WFpeWwhOWFiee3miA8IG55dXVzaGFrb3VzZW5cIDsKK+S4ieinkuWHveaVsCA8IHNhbmtha3VrYW5zdXVcIDsKK+eri+S9k+WGmeecnyA8IHJpdHRhaXNoYXNoaW5cIDsKK+Wbvemam+mWouS/giA8IGtva3VzYWlrYW5rZWlcIDsKK+a1hOWcn+ecn+WulyA8IGpvdWRvc2hpbnNodXVcIDsKK+S4ieWbveWQjOebnyA8IHNhbmdva3Vkb3VtZWlcIDsKK+eBq+S6i+WgtOazpeajkiA8IGthamliYWRvcm9ib3VcIDsKK+mpmuWkqeWLleWcsCA8IGt5b3V0ZW5kb3VjaGlcIDsKK+epuuS4rea7kei1sCA8IGt1dWNodXVrYXNzb3VcIDsKK+Wbvemam+WVj+mhjCA8IGtva3VzYWltb25kYWlcIDsKK+axguW/g+WKmyA8IGt5dXVzaGlucnlva3VcIDsKK+ekvuWklueZuuS/oSA8IHNoYWdhaWhhc3NoaW5cIDsKK+i3s+aigei3i+aJiCA8IGNob3VyeW91YmFra29cIDsKK+mbhuS4reegsueBqyA8IHNodXVjaHV1aG91a2FcIDsKK+S6uuW3peaghOmkiuWFkCA8IGppbmtvdWVpeW91amlcIDsKK+S6uumWk+W3peWtpiA8IG5pbmdlbmtvdWdha3VcIDsKK+i6q+WFg+eiuuiqjSA8IG1pbW90b2tha3VuaW5cIDsKK+e1kOWbo+W8jyA8IGtldHN1ZGFuc2hpa2lcIDsKK+W3ruWIpeW+hemBhyA8IHNhYmV0c3V0YWlndXVcIDsKK+WNg+mzpeagvOWtkCA8IGNoaWRvcmlnb3VzaGlcIDsKK+S7j+WDj+S6jOS9kyA8IGJ1dHN1em91bml0YWlcIDsKK+WFqOaZr+WGmeecnyA8IHplbmtlaXNoYXNoaW5cIDsKK+WFrOWFseWbo+S9kyA8IGtvdWt5b3VkYW50YWlcIDsKK+aUueacreWPoyA8IGthaXNhdHN1Z3VjaGlcIDsKK+Wghuepjei8quW7uyA8IHRhaXNla2lyaW4nJ25lXCA7CivkuIDoiKznlJ/mtLsgPCBpcHBhbnNlaWthdHN1XCA7CivmrKfnsbPoq7joqIDoqp4gPCBvdWJlaXNob2dlbmdvXCA7CivmqKrmsrPpm7vmqZ8gPCB5b2tvZ2F3YWRlbmtpXCA7CivkuK3ntpnmlL7pgIEgPCBjaHV1a2VpaG91c291XCA7CivnpoHmraLmnaHntIQgPCBraW5zaGlqb3V5YWt1XCA7Civlhajlm73mlL7pgIEgPCB6ZW5rb2t1aG91c291XCA7Civkurrlt6XlrbXljJbms5UgPCBqaW5rb3VmdWthaG91XCA7CivlhZrliKnlhZrnlaUgPCB0b3VyaXRvdXJ5YWt1XCA7CivnuYHmrpblipsgPCBoYW5zaG9rdXJ5b2t1XCA7CivlpJbkuqTkuqTmuIkgPCBnYWlrb3Vrb3VzaG91XCA7Civlrablo6vpmaLos54gPCBnYWt1c2hpaW5zaG91XCA7CivooYzli5XoqIjnlLsgPCBrb3Vkb3VrZWlrYWt1XCA7CivlhbHmnInosqHnlKMgPCBreW91eXV1emFpc2FuXCA7CivpgLjlpLHliKnnm4ogPCBpc3NoaXRzdXJpZWtpXCA7CivovrLlnLDmlLnpnakgPCBub3VjaGlrYWlrYWt1XCA7Civlm4PlrZDoqZ4gPCBoYXlhc2hpa290b2JhXCA7CivkuqTpgJrmuIvmu54gPCBrb3V0c3V1anV1dGFpXCA7CivnpZ7ntYzntLDog54gPCBzaGlua2Vpc2FpYm91XCA7Civkurrlt67mjIcgPCBoaXRvc2FzaGl5dWJpXCA7CivkuIPpnaLps6UgPCBzaGljaGltZW5jaG91XCA7Civmpa3nlYzlm6PkvZMgPCBneW91a2FpZGFudGFpXCA7Civli6flloTmh7LmgqogPCBrYW56ZW5jaG91YWt1XCA7CivlhbHnlKPpmaPllrYgPCBreW91c2FuamluJydlaVwgOwor5qyg5bit6KOB5YikIDwga2Vzc2VraXNhaWJhblwgOwor5Y2K6Z2p6KOF5LiBIDwgaGFua2F3YXNvdXRlaVwgOwor56u25LqJ5biC5aC0IDwga3lvdXNvdXNoaWpvdVwgOwor55m66KiA5YqbIDwgaGF0c3VnZW5yeW9rdVwgOwor55+l55qE6LKh55SjIDwgY2hpdGVraXphaXNhblwgOwor5Y2X5YyX5ZWP6aGMIDwgbmFuYm9rdW1vbmRhaVwgOwor6LuN5LqL6aGn5ZWP5ZujIDwgZ3Vuamlrb21vbmRhblwgOwor6auY5bGk5aSp5rCX5ZuzIDwga291c291dGVua2l6dVwgOwor56qB54S25aSJ55WwIDwgdG90c3V6ZW5oZW4nJ2lcIDsKK+mBqeW/nOmanOWusyA8IHRla2lvdXNob3VnYWlcIDsKK+WHuuS4lumgrSA8IHNodXNzZWdhc2hpcmFcIDsKK+a3t+i8ieiyqOeJqSA8IGtvbnNhaWthbW90c3VcIDsKK+mbhuS4reWKmyA8IHNodXVjaHV1cnlva3VcIDsKK+iAkOmanOWus+aApyA8IHRhaXNob3VnYWlzZWlcIDsKK+i/keimquebuOWnpiA8IGtpbnNoaW5zb3VrYW5cIDsKK+WxiOi+seeahCA8IGt1dHN1am9rdXRla2lcIDsKK+Wkp+mBk+WVhuS6uiA8IGRhaWRvdXNob3VuaW5cIDsKK+S4jeS/oeS7u+ahiCA8IGZ1c2hpbicnbmluJydhblwgOwor5Luu6Z2i6Iie6LiP5LyaIDwga2FtZW5idXRvdWthaVwgOwor5a6u5bu36Z+z5qW9IDwga3l1dXRlaW9uZ2FrdVwgOwor5ZWG5aOy5pW1IDwgc2hvdWJhaWdhdGFraVwgOwor5Ye655Sf5bGKIDwgc2h1c3NlaXRvZG9rZVwgOwor57ep6KGd5Zyw5bivIDwga2Fuc2hvdWNoaXRhaVwgOwor6KGA5riF5rOo5bCEIDwga2Vzc2VpY2h1dXNoYVwgOwor6ISx542E5ZuaIDwgZGF0c3Vnb2t1c2h1dVwgOwor5Yqg57OW57KJ5LmzIDwga2F0b3VmdW4nJ255dXVcIDsKK+Wcn+eUo+ipsSA8IG1peWFnZWJhbmFzaGlcIDsKK+S/oeiyqeS8muekviA8IHNoaW5wYW5nYWlzaGFcIDsKK+WNgeS4gOeMrumHkSA8IGp1dWljaGlrZW5raW5cIDsKK+emj+elieS6i+alrSA8IGZ1a3VzaGlqaWd5b3VcIDsKK+aaluiho+mjvemjnyA8IGRhbicnaWhvdXNob2t1XCA7Civmupbmsbrli53miKYgPCBqdW5rZXNzaG91c2VuXCA7Civph47nlJ/li5XniakgPCB5YXNlaWRvdWJ1dHN1XCA7CivnpL7kvJrnj77osaEgPCBzaGFrYWlnZW5zaG91XCA7CivljJfmrKfoq7jlm70gPCBob2t1b3VzaG9rb2t1XCA7Civoh6rnhLbkvJHkvJogPCBzaGl6ZW5reXV1a2FpXCA7Civoia/kuozljYPnn7MgPCByeW91bmlzZW5zZWtpXCA7CivmloflrabpnZLlubQgPCBidW5nYWt1c2VpbmVuXCA7Civnmb3oo4XmnZ8gPCBzaGlyb3Nob3V6b2t1XCA7CivkvZzmpa3pg6jkvJrmoYggPCBzYWd5b3VidWthaWFuXCA7Civkv67pgZPoqpPpoZggPCBzaHV1ZG91c2VpZ2FuXCA7Civpo5/ns6fmj7TliqkgPCBzaG9rdXJ5b3VlbmpvXCA7CivooYborbDkuIDmsbogPCBzaHV1Z2lpa2tldHN1XCA7CivphbjntKDlkLjlhaUgPCBzYW5zb2t5dXVueXV1XCA7CivnlJ/oh63lnYrkuLsgPCBuYW1hZ3VzYWJvdXp1XCA7Civou43kuovmlr3oqK0gPCBndW5qaXNoaXNldHN1XCA7CivmmKDnlLvoqZXoq5blrrYgPCBlaWdhaHlvdXJvbmthXCA7Civpg7Xkvr/mjK/mm78gPCB5dXViaW5mdXJpa2FlXCA7Civmlrnph53msbrlrpogPCBob3VzaGlua2V0dGVpXCA7CivlsLHmpa3mmYLplpMgPCBzaHV1Z3lvdWppa2FuXCA7Civkurrlj6PmipHliLYgPCBqaW5rb3V5b2t1c2VpXCA7Civou43kurrmganntaYgPCBndW5qaW4nJ29ua3l1dVwgOwor5Lq65bel5rWB55SjIDwgamlua291cnl1dXphblwgOwor55yf5Ymj5Yud6LKgIDwgc2hpbmtlbnNob3VidVwgOwor6Zqg6YCA55Sf5rS7IDwgaW50YWlzZWlrYXRzdVwgOwor5a6I56eY576p5YuZ6YGV5Y+NIDwgc2h1aGlnaW11aWhhblwgOwor6IWw5be+552AIDwga29zaGlnaW5jaGFrdVwgOwor5b255ZOh5aCx6YWsIDwgeWFrdWluaG91c2h1dVwgOwor5Ymy5byV5pmC6ZaTIDwgd2FyaWJpa2lqaWthblwgOwor55m96JGh6JCE6YWSIDwgc2hpcm9idWRvdXNodVwgOwor5Y2K54af5Y21IDwgaGFuanVrdXRhbWFnb1wgOwor5Yi25pyN5Yi25bi9IDwgc2VpZnVrdXNlaWJvdVwgOwor5Y+k6Imy6JK854S2IDwga29zaG9rdXNvdXplblwgOwor55WZ572u6YO15L6/IDwgdG9tZW9raXl1dWJpblwgOwor6KiI55S75YCS55SjIDwga2Vpa2FrdXRvdXNhblwgOwor55qG5pei5pel6aOfIDwga2Fpa2luaXNzaG9rdVwgOwor5rKh5bi46K2YIDwgYm90c3Vqb3VzaGlraVwgOwor6ZuG5aG16KKLIDwgc2h1dWppbmJ1a3Vyb1wgOwor6YCj5oim6YCj5YudIDwgcmVuc2VucmVuc2hvdVwgOwor5Lqr5qW95Li7576pIDwga3lvdXJha3VzaHVnaVwgOwor5LiJ5LiL5aW0IDwgc2Fuc2hpdGF5YWtrb1wgOwor5bqD5ZGK5aqS5L2TIDwga291a29rdWJhaXRhaVwgOwor5Zu95rCR5a+p5p+7IDwga29rdW1pbnNoaW5zYVwgOwor5YGl6ICFIDwgc2hpdGF0YWthbW9ub1wgOwor5re35aOw5ZCI5ZSxIDwga29uc2VpZ2Fzc2hvdVwgOwor56We6YGT5L+h6ICFIDwgc2hpbnRvdXNoaW5qYVwgOwor5a6f5rOB5pS+6YCBIDwgamlra3lvdWhvdXNvdVwgOwor5YiG5YWJ5YiG5p6QIDwgYnVua291YnVuc2VraVwgOwor55Sj5qWt57WE5ZCIIDwgc2FuZ3lvdWt1bWlhaVwgOwor5Y+W5o2o6YG45oqeIDwgc2h1c2hhc2VudGFrdVwgOwor5Zyw6ZyH5a2m6ICFIDwgamlzaGluZ2FrdXNoYVwgOwor5aSn6Ziq5aSn5a2mIDwgb29zYWthZGFpZ2FrdVwgOwor56ys5LqM5qyh5aSn5oimIDwgZGFpbmlqaXRhaXNlblwgOwor56CU56m25pa55rOVIDwga2Vua3l1dWhvdWhvdVwgOwor5Zyw6LOq5a2mIDwgY2hpc2hpdHN1Z2FrdVwgOwor5pat6YOK56u26LWwIDwgZGFua291a3lvdXNvdVwgOwor5qW95bGL6KmxIDwgZ2FrdXlhYmFuYXNoaVwgOwor5q+U6LyD5paH5a2mIDwgaGlrYWt1YnVuZ2FrdVwgOwor5aOr6L6y5bel5ZWGIDwgc2hpbm91a291c2hvdVwgOwor5Lm+5Z2k5LiA5pOyIDwga2Vua29uJydpdHRla2lcIDsKK+WBnOatouS/oeWPtyA8IHRlaXNoaXNoaW5nb3VcIDsKK+W7uuevieePvuWgtCA8IGtlbmNoaWt1Z2VuYmFcIDsKK+WbvemAo+Wkp+S9vyA8IGtva3VyZW50YWlzaGlcIDsKK+ecieebruengOm6lyA8IGJpbW9rdXNodXVyZWlcIDsKK+aDhee3kumanOWusyA8IGpvdXNob3Nob3VnYWlcIDsKK+isueizgOaWsOW5tCA8IGtpbmdhc2hpbicnbmVuXCA7Civnt7Tnv5LllY/poYwgPCByZW5zaHV1bW9uZGFpXCA7CivkurrnlZznhKHlrrMgPCBqaW5jaGlrdW11Z2FpXCA7CivkuIrmtYHnpL7kvJogPCBqb3VyeXV1c2hha2FpXCA7CivlvLflparniakgPCBnb3VkYXRzdWJ1dHN1XCA7CivplpHml6XmnIggPCBrYW5qaXRzdWdldHN1XCA7Civpmbjmtbfnqbrou40gPCByaWt1a2Fpa3V1Z3VuXCA7Civph47mrKHppqzmoLnmgKcgPCB5YWppdW1ha29uam91XCA7CivnnJ/nm7joqr/mn7sgPCBzaGluc291Y2hvdXNhXCA7CivooajmlazoqKrllY8gPCBoeW91a2VpaG91bW9uXCA7Civmma7pgJrmlZnogrIgPCBmdXRzdXVreW91aWt1XCA7CivlhazmsJHmlZnogrIgPCBrb3VtaW5reW91aWt1XCA7CivmjJHnmbrnmoQgPCBjaG91aGF0c3V0ZWtpXCA7CivmsLTlrrPlr77nrZYgPCBzdWlnYWl0YWlzYWt1XCA7CivlsIbmnaXlsZXmnJsgPCBzaG91cmFpdGVuYm91XCA7CivlsIvllY/oqr/mm7ggPCBqaW5tb25jaG91c2hvXCA7CivnnYDlvL7ot53pm6IgPCBjaGFrdWRhbmt5b3JpXCA7CivlpKnnnJ/niJvmvKsgPCB0ZW5zaGlucmFubWFuXCA7Civlj43lsITnpZ7ntYwgPCBoYW5zaGFzaGlua2VpXCA7CivpnZLoibLnlLPlkYogPCBhb2lyb3NoaW5rb2t1XCA7CivpgKDlvaLnvo7ooZMgPCB6b3VrZWliaWp1dHN1XCA7Civlj7LnmoTnj77lnKggPCBzaGl0ZWtpZ2VuemFpXCA7CivnpZ3npa3ml6UgPCBzaHVrdXNhaWppdHN1XCA7CivlhoXpg6jnlJ/mtLsgPCBuYWlidXNlaWthdHN1XCA7Civmp4vpgKDoqJjov7AgPCBrb3V6b3VraWp1dHN1XCA7CivlhbHlrZjlhbHmoIQgPCBreW91em9ua3lvdWVpXCA7CivluK/nirbnlrHnlrkgPCB0YWlqb3Vob3VzaGluXCA7Civnj77lrp/kuLvnvqkgPCBnZW5qaXRzdXNodWdpXCA7CivlubTjgIXmrbPjgIUgPCBuZW4nJ25lbnNhaXNhaVwgOwor56CU56m26KuW5paHIDwga2Vua3l1dXJvbmJ1blwgOwor5pyA57WC57eo5oiQIDwgc2Fpc2h1dWhlbnNlaVwgOwor5bCC5L+u5a2m5qChIDwgc2Vuc2h1dWdha2tvdVwgOwor5b2r5Yi76KGTIDwgY2hvdWtva3VqdXRzdVwgOwor5Y+z5Lit5ous5bynIDwgbWlnaWNodXVrYWtrb1wgOwor5L+u6YGT6Zmi6ZW3IDwgc2h1dWRvdWluY2hvdVwgOwor5a62552j55u457aaIDwga2F0b2t1c291em9rdVwgOwor5a6/5ZG96KuW6ICFIDwgc2h1a3VtZWlyb25qYVwgOwor5rip5bqm6Kq/56+AIDwgb25kb2Nob3VzZXRzdVwgOwor6Iux5Lya6Kmx5a2m5qChIDwgZWlrYWl3YWdha2tvdVwgOwor6KiA6Kqe6IO95YqbIDwgZ2VuZ29ub3VyeW9rdVwgOwor5Yip5r2k6L+95rGCIDwgcmlqdW50c3Vpa3l1dVwgOwor57Wx546H55CG6KuWIDwgdG91c290c3VyaXJvblwgOwor5Lit56uL5Zu9IDwgY2h1dXJpdHN1a29rdVwgOwor5Zar54WZ5a6kIDwga2l0c3VlbnNoaXRzdVwgOwor6Imv6aKo576O5L+XIDwgcnlvdWZ1dWJpem9rdVwgOwor5Zu95rCR5a2m5qChIDwga29rdW1pbmdha2tvdVwgOwor5Y2Y54K655Sf5q6WIDwgdGFuJydpc2Vpc2hva3VcIDsKK+WJjeaWueS4jeazqOaEjyA8IHplbnBvdWZ1Y2h1dWlcIDsKK+S6jOWNgeaXpem8oCA8IGhhdHN1a2FuZXp1bWlcIDsKK+iyv+aYk+WPjuaUryA8IGJvdWVraXNodXVzaGlcIDsKK+S6uuW3peW/g+iHkyA8IGppbmtvdXNoaW56b3VcIDsKK+Wkqea0peaXpeWXoyA8IGFtYXRzdWhpdHN1Z2lcIDsKK+S4gOS4oeaXpSA8IGljaGlyeW91aml0c3VcIDsKK+e+pOmbhOWJsuaLoCA8IGd1bicneXV1a2Fra3lvXCA7CivlhYjlpKnmooXmr5IgPCBzZW50ZW5iYWlkb2t1XCA7Civkurrlt6Xlv4PogrogPCBqaW5rb3VzaGluYmFpXCA7CivlkbzlkLjkuK3mnqIgPCBrb2t5dXVjaHV1c3V1XCA7Civpp5DnlZnpg6jpmoogPCBjaHV1cnl1dWJ1dGFpXCA7CivmrrrnlJ/npoHmlq0gPCBzZXNzaG91a2luZGFuXCA7CivnhKHpiq3pgYroiIggPCBtdXNlbicneXV1a3lvdVwgOwor5Li75bit5YWo5qipIDwgc2h1c2VraXplbmtlblwgOwor5Zyw5pa55YWs5YuZ5ZOhIDwgY2hpaG91a291bXVpblwgOwor55Sy5LmZ5LiZ5LiBIDwga291b3RzdWhlaXRlaVwgOwor6KOc5qyg6YG45oyZIDwgaG9rZXRzdXNlbmt5b1wgOwor5qmL6ISa6IifIDwga3lvdWt5YWt1c2h1dVwgOwor5b6u6YeP5YiG5p6QIDwgYmlyeW91YnVuc2VraVwgOwor6Ieq5YuV6LKp5aOy5qmfIDwgamlkb3VoYW5iYWlraVwgOwor5Zyw5Z+f5Luj6KGoIDwgY2hpaWtpZGFpaHlvdVwgOwor55S75LiA5Li7576pIDwga2FrdWl0c3VzaHVnaVwgOwor5Lqs6YO95aSn5a2mIDwga3lvdXRvZGFpZ2FrdVwgOwor5rys54mp55+zIDwgdHN1a2Vtb25vaXNoaVwgOwor5aSW5Ye65LitIDwgZ2Fpc2h1dHN1Y2h1dVwgOwor6YmE5p+T6ImyIDwgdGV0c3VzZW5zaG9rdVwgOwor55Sf5L2T5bel5a2mIDwgc2VpdGFpa291Z2FrdVwgOwor54us56uL5b+DIDwgZG9rdXJpdHN1c2hpblwgOwor5rOh5rKr5YCZ6KOcIDwgaG91bWF0c3Vrb3Vob1wgOwor55u457aa6LKh55SjIDwgc291em9rdXphaXNhblwgOwor5a++5oim5oiQ57i+IDwgdGFpc2Vuc2Vpc2VraVwgOwor5Zu96Zqb56m65rivIDwga29rdXNhaWt1dWtvdVwgOwor5Zu96YCj57eP5LyaIDwga29rdXJlbnNvdWthaVwgOwor5LuK5pyI5pyrIDwga29uZ2V0c3VtYXRzdVwgOwor5bCC6ZaA5pWZ6IKyIDwgc2VubW9ua3lvdWlrdVwgOwor5Za25qWt5aCx5ZGKIDwgZWlneW91aG91a29rdVwgOwor6KGA5ray5qSc5p+7IDwga2V0c3Vla2lrZW5zYVwgOwor6Z2p5paw5Li7576pIDwga2FrdXNoaW5zaHVnaVwgOwor6Zyy5Ye65pmC6ZaTIDwgcm9zaHV0c3VqaWthblwgOwor6Zu756OB6Kq/55CG5ZmoIDwgZGVuamljaG91cmlraVwgOwor5oqV56Wo55So57SZIDwgdG91aHlvdXlvdXNoaVwgOwor5a6f54mp5aSnIDwgaml0c3VidXRzdWRhaVwgOwor6Jas55So55+z6bm4IDwgeWFrdXlvdXNla2tlblwgOwor5Y2Y54us6KGM5YuVIDwgdGFuZG9rdWtvdWRvdVwgOwor6Iiq56m66Ieq6KGb6ZqKIDwga291a3V1amllaXRhaVwgOwor5aSr5amm55Sf5rS7IDwgZnV1ZnVzZWlrYXRzdVwgOwor6IKJ5L2T6Zai5L+CIDwgbmlrdXRhaWthbmtlaVwgOwor6LuN5LqL6K2m5a+fIDwgZ3VuamlrZWlzYXRzdVwgOwor5paw5ama5peF6KGMIDwgc2hpbmtvbnJ5b2tvdVwgOwor6Zm95oCn5Y+N5b+cIDwgeW91c2VpaGFuJydub3VcIDsKK+i7uOW3ruW/nOWKmyA8IGppa3VzYW91cnlva3VcIDsKK+S6uumhnuWtpuiAhSA8IGppbnJ1aWdha3VzaGFcIDsKK+aLvuW+l+eJqSA8IHNodXV0b2t1YnV0c3VcIDsKK+atpuWjq+awl+izqiA8IGJ1c2hpa2lzaGl0c3VcIDsKK+esrOS4gOS6uuiAhSA8IGRhaWljaGluaW5zaGFcIDsKK+WAieaVt+aWmSA8IGt1cmFzaGlraXJ5b3VcIDsKK+izh+aWmeWupCA8IHNoaXJ5b3VzaGl0c3VcIDsKK+apn+mWouaKleizh+WutiA8IGtpa2FudG91c2hpa2FcIDsKK+WutuW6reeUn+a0uyA8IGthdGVpc2Vpa2F0c3VcIDsKK+WNsemZuuS6uueJqSA8IGtpa2VuamluYnV0c3VcIDsKK+Wkp+WtpuaVmeaOiCA8IGRhaWdha3VreW91anVcIDsKK+WJjemAsumBi+WLlSA8IHplbnNoaW4nJ3VuZG91XCA7CivmtLvli5XmiJDmnpwgPCBrYXRzdWRvdXNlaWthXCA7Civnt4/lkIjlj47mlK8gPCBzb3Vnb3VzaHV1c2hpXCA7CivosrfnianooosgPCBrYWltb25vYnVrdXJvXCA7CivlkLjlj47lipsgPCBreXV1c2h1dXJ5b2t1XCA7CivlkITpp4XlgZzou4ogPCBrYWt1ZWtpdGVpc2hhXCA7Civni6znq4vlm70gPCBkb2t1cml0c3Vrb2t1XCA7Civop6blqpLkvZznlKggPCBzaG9rdWJhaXNheW91XCA7Civnp5HlrabmioDooZMgPCBrYWdha3VnaWp1dHN1XCA7CivljbDliLfnlKjntJkgPCBpbnNhdHN1eW91c2hpXCA7Civlm57ot6/pga7mlq3mqZ8gPCBrYWlyb3NoYWRhbmtpXCA7CivkurrnmoToqLzmi6AgPCBqaW50ZWtpc2hvdWtvXCA7CivmipforbDmtLvli5UgPCBrb3VnaWthdHN1ZG91XCA7CivlhYjlj5blvpfngrkgPCBzZW5zaHV0b2t1dGVuXCA7CivmoZznpa0gPCBzYWt1cmFtYXRzdXJpXCA7CivopIflkIjkvIHmpa0gPCBmdWt1Z291a2lneW91XCA7CivnhKHlt67liKXntJogPCBtdXNhYmV0c3VreXV1XCA7CivlpJrlm73nsY3ou40gPCB0YWtva3VzZWtpZ3VuXCA7Civnq7bkuonkvqHmoLwgPCBreW91c291a2FrYWt1XCA7CivnpL7kvJrkurrmnqAgPCBzaGFrYWlqaW53YWt1XCA7CivllYbmpa3lnLDljLogPCBzaG91Z3lvdWNoaWt1XCA7CivooajlsaTmp4vpgKAgPCBoeW91c291a291em91XCA7Civnsr7npZ7ooZvnlJ8gPCBzZWlzaGluJydlaXNlaVwgOwor6KGA5bC/55eHIDwga2V0c3VueW91c2hvdVwgOwor6Iiq56m65YaZ55yfIDwga291a3V1c2hhc2hpblwgOwor5LiK5piH5rCX5rWBIDwgam91c2hvdWtpcnl1dVwgOwor5YyX5aSn6KW/5rSLIDwga2l0YXRhaXNlaXlvdVwgOwor6KGM5pS/5oyH5bCOIDwgZ3lvdXNlaXNoaWRvdVwgOwor5a6a572u5ryB5qWtIDwgdGVpY2hpZ3lvZ3lvdVwgOwor5pyA6auY57Sa5ZOBIDwgc2Fpa291a3l1dWhpblwgOwor5b2r5Yi754mpIDwgY2hvdWtva3VidXRzdVwgOwor5Ye66aCt5ZG95LukIDwgc2h1dHRvdW1laXJlaVwgOwor5aCq5b+N6KKLIDwga2FuJyduaW5idWt1cm9cIDsKK+WHuuihgOmBjuWkmiA8IHNodWtrZXRzdWthdGFcIDsKK+mbu+WtkOWHuueJiCA8IGRlbnNoaXNodXBwYW5cIDsKK+ekvumVt+WupCA8IHNoYWNob3VzaGl0c3VcIDsKK+iJsue0oOe0sOiDniA8IHNoaWtpc29zYWlib3VcIDsKK+iBlui3r+WKoOeXhemZoiA8IHNlaXJva2FieW91aW5cIDsKK+iKseWrgeiho+ijsyA8IGhhbmF5b21laXNob3VcIDsKK+Wwj+WPo+ePvumHkSA8IGtvZ3VjaGlnZW5raW5cIDsKK+WIhumbouS4u+e+qeiAhSA8IGJ1bnJpc2h1Z2lzaGFcIDsKK+WNmuWtpuWkmuaJjSA8IGhha3VnYWt1dGFzYWlcIDsKK+WkluanmOWkp+WQjSA8IHRvemFtYWRhaW15b3VcIDsKK+WbveawkeS4u+aoqSA8IGtva3VtaW5zaHVrZW5cIDsKK+WFrOmHkeaoqumgmCA8IGtvdWtpbicnb3VyeW91XCA7CivmhrLms5XoqJjlv7Xml6UgPCBrZW5wb3VraW5lbmJpXCA7Civov5Hpg4rovrLmpa0gPCBraW5rb3Vub3VneW91XCA7Civlhajlm73lpKfkvJogPCB6ZW5rb2t1dGFpa2FpXCA7CivlkJ/pgYroqankurogPCBnaW4nJ3l1dXNoaWppblwgOwor5Ya35rC05pGp5pOmIDwgcmVpc3VpbWFzYXRzdVwgOwor5puy5a2m6Zi/5LiWIDwga3lva3VnYWt1YXNlaVwgOwor5L6h5qC856u25LqJIDwga2FrYWt1a3lvdXNvdVwgOwor5Yqg5rib5oq15oqX5ZmoIDwga2FnZW50ZWlrb3VraVwgOwor56aB5pat55eH54q2IDwga2luZGFuc2hvdWpvdVwgOwor56uc5pSY6JmO5pCPIDwgcnl1dWpvdWtvaGFrdVwgOwor5q2j5ZGz6YeN6YePIDwgc2hvdW1panV1cnlvdVwgOwor5YWs6Ki85b255aC0IDwga291c2hvdXlha3ViYVwgOwor5riF5ra86aOy5paZIDwgc2VpcnlvdWlucnlvdVwgOwor5Li85YuY5a6aIDwgZG9uYnVyaWthbmpvdVwgOwor5q+b566h54++6LGhIDwgbW91a2FuZ2Vuc2hvdVwgOwor5L2c5oim5Zyw5Z+fIDwgc2FrdXNlbmNoaWlraVwgOwor546J5a2Q5Li8IDwgdGFtYWdvZG9uYnVyaVwgOwor5Ye65by15peF6LK7IDwgc2h1dGNob3VyeW9oaVwgOwor5pS+6YCB55Wq57WEIDwgaG91c291YmFuZ3VtaVwgOwor54Sh5YWN6Kix6YGL6LuiIDwgbXVtZW5reW91bnRlblwgOwor57iu5Yi354mIIDwgc2h1a3VzYXRzdWJhblwgOwor5rC45LmF56OB55+zIDwgZWlreXV1amlzaGFrdVwgOwor5aOy5o6b5YuY5a6aIDwgdXJpa2FrZWthbmpvdVwgOwor5LuK5pel55qEIDwga29uJyduaWNoaXRla2lcIDsKK+mWk+Wurua1t+WzoSA8IG1hbWl5YWthaWt5b3VcIDsKK+eNhOS4reaXpeiomCA8IGdva3VjaHV1bmlra2lcIDsKK+ayiOaAnem7meiAgyA8IGNoaW5zaGltb2trb3VcIDsKK+i2heWbveWutueahCA8IGNob3Vrb2trYXRla2lcIDsKK+a0nuWvn+WKmyA8IGRvdXNhdHN1cnlva3VcIDsKK+mYsueBq+W7uueviSA8IGJvdWtha2VuY2hpa3VcIDsKK+mHkeiejeW4guWgtCA8IGtpbicneXV1c2hpam91XCA7Civpm4blm6Plv4PnkIYgPCBzaHV1ZGFuc2hpbnJpXCA7CivlhaXnpL7oqabpqJMgPCBueXV1c2hhc2hpa2VuXCA7Civpgbjmip7lgKTnvqQgPCBzZW50YWt1Y2hpZ3VuXCA7CivkuI3lj6/oppblhYnnt5ogPCBmdWthc2hpa291c2VuXCA7CivnorrnjofoqqTlt64gPCBrYWt1cml0c3Vnb3NhXCA7Civosr/mmJPoh6rnlLHljJYgPCBib3Vla2lqaXl1dWthXCA7CivnrKzlm5vpmo7ntJogPCBkYWl5b25rYWlreXV1XCA7CivnqbrmsJfliLbli5XmqZ8gPCBrdXVraXNlaWRvdWtpXCA7CivpgI3pgaXlrabmtL4gPCBzaG91eW91Z2FrdWhhXCA7Civpu5LngrnlkajmnJ8gPCBrb2t1dGVuc2h1dWtpXCA7Civnvo7ooZPlrabmoKEgPCBiaWp1dHN1Z2Fra291XCA7CivljYrmrbvljYrnlJ8gPCBoYW5zaGloYW5zaG91XCA7Civlv6vpgJ/pm7vou4ogPCBrYWlzb2t1ZGVuc2hhXCA7CivljZfljJfmiKbkuokgPCBuYW5ib2t1c2Vuc291XCA7CivlsI/lhZDllpjmga8gPCBzaG91bml6ZW5zb2t1XCA7CivlhoXmlL/lubLmuIkgPCBuYWlzZWlrYW5zaG91XCA7CivlhazlubPmlL/nrZYgPCBrb3VoZWlzZWlzYWt1XCA7Civlt6Xmpa3opo/moLwgPCBrb3VneW91a2lrYWt1XCA7Civlm5vop5Llm5vpnaIgPCBzaGlrYWt1c2hpbWVuXCA7CivlsJHlubTlsJHlpbMgPCBzaG91bmVuc2hvdWpvXCA7Civlho3osqnmpa3ogIUgPCBzYWloYW5neW91c2hhXCA7CivotoXpq5jpgJ/luqYgPCBjaG91a291c29rdWRvXCA7Civoqr/mn7vloLHlkYogPCBjaG91c2Fob3Vrb2t1XCA7Civmtbfpm6Plr6nliKQgPCBrYWluYW5zaGlucGFuXCA7CivnkIblrabkv67lo6sgPCByaWdha3VzaHV1c2hpXCA7CivlpJbnmoTmoLnmi6AgPCBnYWl0ZWtpa29ua3lvXCA7Civmnb7po5/omasgPCBtYXRzdWt1aW11c2hpXCA7CivnlJ/lkb3lt6XlraYgPCBzZWltZWlrb3VnYWt1XCA7CivlpKnkvZHnpZ7liqkgPCB0ZW4nJ3l1dXNoaW5qb1wgOwor5aSW5Zu95peF6KGMIDwgZ2Fpa29rdXJ5b2tvdVwgOwor5YWx5ZCM5rC05qCTIDwga3lvdWRvdXN1aXNlblwgOwor5ouh5aSn5Z2H6KGhIDwga2FrdWRhaWtpbmtvdVwgOwor6IqL6JST5byPIDwgaW1vZHp1cnVzaGlraVwgOwor5LqU5Y2B5q2p55m+5q2pIDwgZ29qdXBwb2h5YXBwb1wgOwor6LOq6YeP5pWwIDwgc2hpdHN1cnlvdXN1dVwgOwor5Yex5peL5bCG6LuNIDwgZ2Fpc2Vuc2hvdWd1blwgOwor5Y6f55CG5Li7576p6ICFIDwgZ2VucmlzaHVnaXNoYVwgOwor6ZuG56mN5Zue6LevIDwgc2h1dXNla2lrYWlyb1wgOwor6KO+6YeO55Sj5qWtIDwgc3Vzb25vc2FuZ3lvdVwgOwor6Y6u6a2C5biw56WeIDwgY2hpbmtvbmtpc2hpblwgOwor5ZCI5qC86ICF5ZCNIDwgZ291a2FrdXNoYW1laVwgOwor5pyJ6LOH5qC86ICFIDwgeXV1c2hpa2FrdXNoYVwgOwor5YyW5a2m5Y+N5b+cIDwga2FnYWt1aGFuJydub3VcIDsKK+mcgOimgeS+m+e1piA8IGp1eW91a3lvdWt5dXVcIDsKK+WIpemFjemBlCA8IGJldHN1aGFpdGF0c3VcIDsKK+WPrOWWmuS7pOeKtiA8IHNob3VrYW5yZWlqb3VcIDsKK+ippumok+WLieW8tyA8IHNoaWtlbmJlbmt5b3VcIDsKK+a4qeWupOWKueaenCA8IG9uc2hpdHN1a291a2FcIDsKK+S7iuaXpeanmCA8IGtvbicnbmljaGlzYW1hXCA7CivmnInpiaTmnaHomasgPCB5dXVrb3Vqb3VjaHV1XCA7CivlhoXnmoTmoLnmi6AgPCBuYWl0ZWtpa29ua3lvXCA7Civov5HmtbfmvIHmpa0gPCBraW5rYWlneW9neW91XCA7CivlhqDlpKfkvJogPCBrYW5tdXJpdGFpa2FpXCA7CivmsbrmiKbmipXnpaggPCBrZXNzZW50b3VoeW91XCA7CivlhbHlkIznpL7kvJogPCBreW91ZG91c2hha2FpXCA7Civov73opIfmm7IgPCB0c3VpZnVrdWt5b2t1XCA7CivllJDojYnmqKHmp5ggPCBrYXJha3VzYW1veW91XCA7CivljIXnmq7liIfmlq0gPCBob3VoaXNldHN1ZGFuXCA7CivlrprmnJ/lj5blvJUgPCB0ZWlraXRvcmloaWtpXCA7Civkub7nh6XmtJfmv68gPCBrYW5zb3VzZW50YWt1XCA7Civpm4blkIjlkI3oqZ4gPCBzaHV1Z291bWVpc2hpXCA7CivlsI/lnovmlrDogZ4gPCBrb2dhdGFzaGluYnVuXCA7CivlpJrlhYPmlofljJboq5YgPCB0YWdlbmJ1bmthcm9uXCA7CivorbLmuKHmgKfpoJDph5EgPCBqb3V0b3NlaXlva2luXCA7CivljLvnmYLmlr3oqK0gPCBpcnlvdXNoaXNldHN1XCA7Civli5XnianmsrnohIIgPCBkb3VidXRzdXl1c2hpXCA7Civlj43pnaLmlZnluKsgPCBoYW5tZW5reW91c2hpXCA7CivntYTlkIjpoK0gPCBrdW1pYWlnYXNoaXJhXCA7Civml6XluLjkvJroqbEgPCBuaWNoaWpvdWthaXdhXCA7CivovLjlhaXmpa3ogIUgPCB5dW55dXVneW91c2hhXCA7CivmqJnmupbkvqHmoLwgPCBoeW91anVua2FrYWt1XCA7CivkuI3lpormiYvooZMgPCBmdW5pbnNodWp1dHN1XCA7CivlsbHnjKvkuonorbAgPCB5YW1hbmVrb3NvdWdpXCA7Civlh7rkuJbplpPnmoQgPCBzaHVzc2VrZW50ZWtpXCA7CivlubTkuK3ooYzkuosgPCBuZW5jaHV1Z3lvdWppXCA7CivpjozlgInmmYLku6MgPCBrYW1ha3VyYWppZGFpXCA7CivmlaPmranml4EgPCBzYW5wb2thdGFnYXRhXCA7CivkvpvoqJfniakgPCBreW91dGFrdWJ1dHN1XCA7Civngo7nl4fnl4Xlt6MgPCBlbnNob3VieW91c291XCA7Civms6jmhI/kurrniakgPCBjaHV1aWppbmJ1dHN1XCA7Civlm73lrrbkuLvnvqnogIUgPCBrb2trYXNodWdpc2hhXCA7Civml6XmtKropqrlloQgPCBuaWtrb3VzaGluemVuXCA7Civov73liqDms6jmlocgPCB0c3Vpa2FjaHV1bW9uXCA7CivnrYblhpnnlaXlrZcgPCBoaXNzaGFyeWFrdWppXCA7CivnjK7ooYDpgYvli5UgPCBrZW5rZXRzdXVuZG91XCA7CivoiJ7lj7DoirjooZMgPCBidXRhaWdlaWp1dHN1XCA7Civlh7rpoZjkurogPCBzaHV0c3VnYW4nJ25pblwgOwor6Kmm6aiT55uj552jIDwgc2hpa2Vua2FudG9rdVwgOwor5pKk6aCt5b655bC+IDwgdGV0dG91dGV0c3ViaVwgOwor55a+6aKo6L+F6Zu3IDwgc2hpcHB1dWppbnJhaVwgOwor5biC5aC055Kw5aKDIDwgc2hpam91a2Fua3lvdVwgOwor5Y6f5oiQ5bKp55+zIDwgZ2Vuc2VpZ2Fuc2VraVwgOwor5YmN5aSn57Wx6aCYIDwgemVuZGFpdG91cnlvdVwgOwor5by35Yi26YCB6YKEIDwga3lvdXNlaXNvdWthblwgOwor5ZCM5qWt57WE5ZCIIDwgZG91Z3lvdWt1bWlhaVwgOwor6Zu75rCX5YmD5YiAIDwgZGVua2lrYW1pc29yaVwgOwor5LqL5YuZ5bGA6ZW3IDwgamltdWt5b2t1Y2hvdVwgOwor57WM5riI5pS56Z2pIDwga2VpemFpa2Fpa2FrdVwgOwor5rK/5bK46K2m5YKZ6ZqKIDwgZW5nYW5rZWliaXRhaVwgOwor5rCR5L+X6Iq46IO9IDwgbWluem9rdWdlaW5vdVwgOwor57KY552A5YqbIDwgbmVuY2hha3VyeW9rdVwgOwor5YCL5Lq65Li7576p6ICFIDwga29qaW5zaHVnaXNoYVwgOwor5Y+O56mr5LqI5oOzIDwgc2h1dWtha3V5b3NvdVwgOwor5aGp6L6b6Jy76JuJIDwgc2hpb2thcmF0b25ib1wgOwor5a6/5rOK5paZIDwgc2h1a3VoYWt1cnlvdVwgOwor57SG5L2Z5puy5oqYIDwgdXlva3lva3VzZXRzdVwgOwor5qW16LaF55+t5rOiIDwgZ29rdWNob3V0YW5wYVwgOwor5Lmz56qEIDwgY2hpY2hpc2hpYm9yaVwgOwor5Li75qip5L6154qvIDwgc2h1a2Vuc2hpbnBhblwgOwor5Lit5oCn5rSX5YmkIDwgY2h1dXNlaXNlbnphaVwgOwor6LKo54mp5YiX6LuKIDwga2Ftb3RzdXJlc3NoYVwgOwor6KGA5riF55mC5rOVIDwga2Vzc2VpcnlvdWhvdVwgOwor5paw5qGI54m56KixIDwgc2hpbicnYW50b2treW9cIDsKK+aYr+aYr+mdnumdnuS4u+e+qSA8IHplemVoaWhpc2h1Z2lcIDsKK+atu+W+jOehrOebtCA8IHNoaWdva291Y2hva3VcIDsKK+WUr+eJqeS4u+e+qSA8IHl1aWJ1dHN1c2h1Z2lcIDsKK+aXpemcsuaIpuS6iSA8IG5pY2hpcm9zZW5zb3VcIDsKK+WQjOebn+adoee0hCA8IGRvdW1laWpvdXlha3VcIDsKK+S4gOaUq+WNg+mHkSA8IGlra2Fra3VzZW5raW5cIDsKK+majue0mumXmOS6iSA8IGthaWt5dXV0b3Vzb3VcIDsKK+eGseehrOWMluWJpCA8IG5ldHN1a291a2F6YWlcIDsKK+WwgueUqOWbnue3miA8IHNlbicneW91a2Fpc2VuXCA7CivkuqTmj5vlrabnlJ8gPCBrb3VrYW5nYWt1c2VpXCA7Civli5Xnt5roqIjnlLsgPCBkb3VzZW5rZWlrYWt1XCA7CivlpJbkuqTlp5Tlk6HplbcgPCBnYWlrb3VpaW5jaG91XCA7CivmsJHmlL/plbflrpggPCBtaW5zZWljaG91a2FuXCA7CivliKTmlq3kuK3mraIgPCBoYW5kYW5jaHV1c2hpXCA7Civmnp3lnoLmoZwgPCBzaGlkYXJlemFrdXJhXCA7Civlj6Tku6PntKsgPCBrb2RhaW11cmFzYWtpXCA7CivlsYDmiYDliIblspAgPCBreW9rdXNob2J1bmtpXCA7CivpgJrluLjlm73kvJogPCB0c3V1am91a29ra2FpXCA7Civmnp3lnoLmn7MgPCBzaGlkYXJleWFuYWdpXCA7Civmt7Hnt5HoibIgPCBmdWthbWlkb3JpaXJvXCA7CivmlbDlgKTop6PmnpAgPCBzdXVjaGlrYWlzZWtpXCA7CivnhKHmirXmipfkuLvnvqkgPCBtdXRlaWtvdXNodWdpXCA7Civou43lgpnmi6HlvLUgPCBndW5iaWtha3VjaG91XCA7CivpganogIXnlJ/lrZggPCB0ZWtpc2hhc2Vpem9uXCA7Civnsr7npZ7pkZHlrpogPCBzZWlzaGlua2FudGVpXCA7CivnqY3pm6rph48gPCBzZWtpc2V0c3VyeW91XCA7CivpiYTpgZPovLjpgIEgPCB0ZXRzdWRvdXl1c291XCA7CivnoJTnqbblrqQgPCBrZW5reXV1c2hpdHN1XCA7CivnrKzkuInpmo7ntJogPCBkYWlzYW5rYWlreXV1XCA7CivljYPmhYvkuIfmp5ggPCBzZW50YWliYW4nJ3lvdVwgOwor6Zu75a2Q5bel5a2mIDwgZGVuc2hpa291Z2FrdVwgOwor57WM5riI54q25rOBIDwga2VpemFpam91a3lvdVwgOwor56S+5Lya5pWZ6IKyIDwgc2hha2Fpa3lvdWlrdVwgOwor6L6y6ICV5rCR5pePIDwgbm91a291bWluem9rdVwgOwor5YWo6Lqr5YWo6ZyKIDwgemVuc2hpbnplbnJlaVwgOwor5YWs56ew6LOH5pysIDwga291c2hvdXNoaWhvblwgOwor5aSn5a2X54mH5bGxIDwgb29hemFrYXRheWFtYVwgOwor6Jas5bir5aaC5p2lIDwgeWFrdXNoaW55b3JhaVwgOwor5pS+5bCE6IO95rGa5p+TIDwgaG91c2hhbm91b3NlblwgOwor6Zu75rCX6Ieq5YuV6LuKIDwgZGVua2lqaWRvdXNoYVwgOwor6LOi5omAIDwga2FzaGlrb2Rva29yb1wgOwor5ZCM55uf5LyR5qChIDwgZG91bWVpa3l1dWtvdVwgOwor5bel5L2c5a6kIDwga291c2FrdXNoaXRzdVwgOwor5Lit5aSu6KiI55S7IDwgY2h1dW91a2Vpa2FrdVwgOwor5Lit5aSu6ZuG5qipIDwgY2h1dW91c2h1dWtlblwgOwor5LiJ6KeS6LK/5piTIDwgc2Fua2FrdWJvdWVraVwgOwor5YiG5p6Q5YyW5a2mIDwgYnVuc2VraWthZ2FrdVwgOwor5bCR5aOu5aOr5a6YIDwgc2hvdXNvdXNoaWthblwgOwor5rOV55qE5qC55ougIDwgaG91dGVraWtvbmt5b1wgOwor5q665a6z5LqL5Lu2IDwgc2F0c3VnYWlqaWtlblwgOwor6Z2i6a2CIDwgdHN1cmFkYW1hc2hpaVwgOwor6Ieq54S25aKX5Y+OIDwgc2hpemVuem91c2h1dVwgOwor6Imv5oCn6IWr55iNIDwgcnlvdXNlaXNodXlvdVwgOwor5L2c5YqH6KGTIDwgc2FrdWdla2lqdXRzdVwgOwor55+t5pel5pyIIDwgdGFuaml0c3VnZXRzdVwgOwor6LuK5o6M5a6kIDwgc2hhc2hvdXNoaXRzdVwgOwor6YCa5Yuk6Zu76LuKIDwgdHN1dWtpbmRlbnNoYVwgOwor5bCR5bm054qv572qIDwgc2hvdW5lbmhhbnphaVwgOwor5rC06YW45YyW54mpIDwgc3Vpc2Fua2FidXRzdVwgOwor6Kaq5oia55+l5bexIDwgc2hpbnNla2ljaGlraVwgOwor5Y2Y54us5rG6566XIDwgdGFuZG9rdWtlc3NhblwgOwor5Zu96Zqb5oOF5YuiIDwga29rdXNhaWpvdXNlaVwgOwor6KGX6aCt5ryU6KqsIDwgZ2FpdG91ZW56ZXRzdVwgOwor5qyj5Zac6ZuA6LqNIDwga2lua2lqYWt1eWFrdVwgOwor5ZOB56iu5pS56ImvIDwgaGluc2h1a2FpcnlvdVwgOwor5YWs56ew6aas5YqbIDwga291c2hvdWJhcmlraVwgOwor5Zub5YWt5pmC5LitIDwgc2hpcm9rdWppY2h1dVwgOwor5Lqk6YCa6YGu5patIDwga291dHN1dXNoYWRhblwgOwor5aSn5a2m57Sb5LqJIDwgZGFpZ2FrdWZ1bnNvdVwgOwor6LKh5pS/5Y+O5pSvIDwgemFpc2Vpc2h1dXNoaVwgOwor6KGG5Y+C5Lih6ZmiIDwgc2h1dXNhbnJ5b3VpblwgOwor6ICQ54Gr5bu656+JIDwgdGFpa2FrZW5jaGlrdVwgOwor6KaW5Yqb5qSc5p+7IDwgc2hpcnlva3VrZW5zYVwgOwor5bCP5YiA57Sw5belIDwga29nYXRhbmF6YWlrdVwgOwor6LOq55aR5b+c562UIDwgc2hpdHN1Z2lvdXRvdVwgOwor5o2c5p+75b2T5bGAIDwgc291c2F0b3VreW9rdVwgOwor6Ki65a+f5paZIDwgc2hpbnNhdHN1cnlvdVwgOwor5L+457Wm6KKLIDwgaG91a3l1dWJ1a3Vyb1wgOwor54Wn6JGJ54uC6KiAIDwgdGVyaWhha3lvdWdlblwgOwor5Ye65b6B6LuN5Lq6IDwgc2h1c3NlaWd1bmppblwgOwor5YSq55Sf5L+d6K235rOVIDwgeXV1c2VpaG9nb2hvdVwgOwor5raI5aSx54K5IDwgc2hvdXNoaXRzdXRlblwgOwor5pS+5bCE6IO96ZuyIDwgaG91c2hhbm91Z3Vtb1wgOwor56S+5Lya5pS/562WIDwgc2hha2Fpc2Vpc2FrdVwgOwor6Zu75qW16Zu75L2NIDwgZGVua3lva3VkZW4nJ2lcIDsKK+S6uuW3pemAj+aekCA8IGppbmtvdXRvdXNla2lcIDsKK+ikh+WQiOWqkuS9kyA8IGZ1a3Vnb3ViYWl0YWlcIDsKK+S9j+awkeaKleelqCA8IGp1dW1pbnRvdWh5b3VcIDsKK+W3pealreWcsOW4ryA8IGtvdWd5b3VjaGl0YWlcIDsKK+WRvOWQuOWbsOmboyA8IGtva3l1dWtvbicnbmFuXCA7Civoqq3mm7jlrqQgPCBkb2t1c2hvc2hpdHN1XCA7CivppIrorbfmlr3oqK0gPCB5b3Vnb3NoaXNldHN1XCA7CivovLjlh7ropo/liLYgPCB5dXNodXRzdWtpc2VpXCA7CivlnLDmlrnkuovli5nmiYAgPCBjaGlob3VqaW11c2hvXCA7CivmiKblipvntYTmiJAgPCBzZW5yeW9rdXNvc2VpXCA7CivntbHkuIDopovop6MgPCB0b3VpdHN1a2Vua2FpXCA7CivlgqznnKDnmYLms5UgPCBzYWltaW5yeW91aG91XCA7Civlt6Xmpa3oo73lk4EgPCBrb3VneW91c2VpaGluXCA7CivlvbnkurrmoLnmgKcgPCB5YWt1bmlua29uam91XCA7Civni6zmiL/nm6PnpoEgPCBkb2t1Ym91a2Fua2luXCA7Civlrr/ms4rlhYggPCBzaHVrdWhha3VzYWtpXCA7CivlsI7pgJrmirXmipcgPCBkb3V0c3V1dGVpa291XCA7CivljZToqr/kuLvnvqkgPCBreW91Y2hvdXNodWdpXCA7CivkvJroqIjloLHlkYogPCBrYWlrZWlob3Vrb2t1XCA7Civlj7Dmub7mtbfls6EgPCB0YWl3YW5rYWlreW91XCA7Civml6XmuIXmiKbkuokgPCBuaXNzaGluc2Vuc291XCA7CivlrqPoqIDnmbrooaggPCBzZW5nZW5oYXBweW91XCA7CivlpKnkvZPlhpnnnJ8gPCB0ZW50YWlzaGFzaGluXCA7CivovLjlhaXoh6rnlLHljJYgPCB5dW55dXVqaXl1dWthXCA7Civph43ph4/lmbjmlbAgPCBqdXVyeW91dG9uc3V1XCA7CivorZjliKXlrZAgPCBzaGlraWJldHN1c2hpXCA7CivljZfljYrnkIMgPCBtaW5hbWloYW5reXV1XCA7CivmmI7pj6HmraLmsLQgPCBtZWlreW91c2hpc3VpXCA7CivlubTplpPoqIjnlLsgPCBuZW5rYW5rZWlrYWt1XCA7CivnhKHliKnmga/lgrXli5kgPCBtdXJpc29rdXNhaW11XCA7Civlj6Pov7DnrYboqJggPCBrb3VqdXRzdWhpa2tpXCA7Civlm73pmpvpgJrosqggPCBrb2t1c2FpdHN1dWthXCA7Civogbflk6HlrqQgPCBzaG9rdWluc2hpdHN1XCA7Civnoavpu4TphbjljJbniakgPCBpb3VzYW5rYWJ1dHN1XCA7CivlgaXlurfoqLrmlq0gPCBrZW5rb3VzaGluZGFuXCA7CivmoYPlsbHmmYLku6MgPCBtb21veWFtYWppZGFpXCA7CivogbfloLTntZDlqZogPCBzaG9rdWJha2Vra29uXCA7CivnkrDlooPllY/poYwgPCBrYW5reW91bW9uZGFpXCA7CivoqLzkurrllprllY8gPCBzaG91bmlua2FubW9uXCA7Civkv6HnjoTooosgPCBzaGluZ2VuYnVrdXJvXCA7CivmlLvmkoPmlrnlkJEgPCBrb3VnZWtpaG91a291XCA7Civnq7bkuonlo7LosrcgPCBreW91c291YmFpYmFpXCA7CivokZfkvZzmqKnms5UgPCBjaG9zYWt1a2VuaG91XCA7Civlm73pmpvnpL7kvJogPCBrb2t1c2Fpc2hha2FpXCA7CivmlrDliLbpq5jmoKEgPCBzaGluc2Vpa291a291XCA7Civlr4TnlJ/omavnl4cgPCBraXNlaWNodXVzaG91XCA7CivkuK3mipjluL3lrZAgPCBuYWthb3JlYm91c2hpXCA7Civlhazplovnt7Tnv5IgPCBrb3VrYWlyZW5zaHV1XCA7CivntYzmuIjmlL/nrZYgPCBrZWl6YWlzZWlzYWt1XCA7CivlkIjmiJDlhpnnnJ8gPCBnb3VzZWlzaGFzaGluXCA7CivmlrDpgLLkvZzlrrYgPCBzaGluc2hpbnNha2thXCA7CivmgYvnianoqp4gPCBrb2ltb25vZ2F0YXJpXCA7CivphbjntKDkvpvntaYgPCBzYW5zb2t5b3VreXV1XCA7CivkuqTpgJrlhaznpL4gPCBrb3V0c3V1a291c2hhXCA7CivmtLvmrrroh6rlnKggPCBrYXNzYXRzdWppemFpXCA7Civpm7vpgIHlhpnnnJ8gPCBkZW5zb3VzaGFzaGluXCA7Civlhajnn6Xlhajog70gPCB6ZW5jaGl6ZW4nJ25vdVwgOwor5LiA57KS56iuIDwgaGl0b3RzdWJ1ZGFuZVwgOwor5Zu95Yui6Kq/5p+7IDwga29rdXNlaWNob3VzYVwgOwor5rWB6YCa5qmf5qeLIDwgcnl1dXRzdXVraWtvdVwgOwor5YW15Zmo6Ly45Ye6IDwgaGVpa2l5dXNodXRzdVwgOwor5aSp55qH5bSH5oudIDwgdGVuJydub3VzdXVoYWlcIDsKK+S/neiovOS6uuimgSA8IGhvc2hvdW5pbicneW91XCA7Civmta7pgYrnlJ/niakgPCBmdXl1dXNlaWJ1dHN1XCA7CivntYLouqvkv53pmbogPCBzaHV1c2hpbmhva2VuXCA7Civnt5Hmn7Hnn7MgPCByeW9rdWNodXVzZWtpXCA7Civmh7jos57oq5bmlocgPCBrZW5zaG91cm9uYnVuXCA7CivpgZPot6/mjoPpmaTkurogPCBkb3Vyb3NvdWppamluXCA7CivluILloLTmlLnpnakgPCBzaGlqb3VrYWlrYWt1XCA7Civpm7vlipvpnIDopoEgPCBkZW5yeW9rdWp1eW91XCA7Civoh6jluorlsIvllY8gPCByaW5zaG91amlubW9uXCA7CivpmbDmpbXnt5rnrqEgPCBpbmt5b2t1c2Vua2FuXCA7Civml4vlhYnliIbmnpAgPCBzZW5rb3VidW5zZWtpXCA7CivljJbnn7Pnh4PmlpkgPCBrYXNla2luZW5yeW91XCA7Civpm7vkv6Hngrrmm78gPCBkZW5zaGlua2F3YXNlXCA7Civku4/kvZwgPCBob3Rva2VkenVrdXJ1XCA7Civmh5DkuK3pm7vnga8gPCBrYWljaHV1ZGVudG91XCA7CivmiY3oibLlhbzlgpkgPCBzYWlzaG9rdWtlbmJpXCA7CivmnbHljZcgPCBoaWdhc2hpbWluYW1pXCA7CivmjIflsI7opoHpoJggPCBzaGlkb3V5b3VyeW91XCA7Civpg7Xkvr/lubTph5EgPCB5dXViaW4nJ25lbmtpblwgOwor6Zai6YCj5ZWG5ZOBIDwga2FucmVuc2hvdWhpblwgOwor6ZmQ55WM54q25rOBIDwgZ2Vua2Fpam91a3lvdVwgOwor5LuB6Lyq5Yqg54uC6KiAIDwgbml3YWtha3lvdWdlblwgOwor54++5Zyo5a6M5LqGIDwgZ2VuemFpa2FucnlvdVwgOwor5Yi257SE5Lyd5pCsIDwgc2VpeWFrdWRlbnBhblwgOwor5Li45LiA6YCx6ZaTIDwgbWFydWlzc2h1dWthblwgOwor5bel5qWt5Zuj5ZywIDwga291Z3lvdWRhbmNoaVwgOwor5qW15qW95rWE5ZyfIDwgZ29rdXJha3Vqb3Vkb1wgOwor6Ieq6Ieq5YWs77yT5YWaIDwgamlqaWtvdXNhbnRvdVwgOwor5rCX566h5pSv6IK654KOIDwga2lrYW5zaGloYWllblwgOwor5aSa6YeN5YK15YuZ6ICFIDwgdGFqdXVzYWltdXNoYVwgOwor5YyW5a2m5YiG5p6QIDwga2FnYWt1YnVuc2VraVwgOwor6Kuu5ZWP5aeU5ZOh5LyaIDwgc2hpbW9uJydpaW5rYWlcIDsKK+WQjOeCueaxuuWLnSA8IGRvdXRlbmtlc3Nob3VcIDsKK+S9k+WklumbouiEsSA8IHRhaWdhaXJpZGF0c3VcIDsKK+eUn+eJqeWFteWZqCA8IHNlaWJ1dHN1aGVpa2lcIDsKK+WNmOmfs+evgOiqniA8IHRhbicnb25zZXRzdWdvXCA7CivmlLvmkoPpmorlvaIgPCBrb3VnZWtpdGFpa2VpXCA7Civms5XkurrmiYDlvpcgPCBob3VqaW5zaG90b2t1XCA7CivlpKfpgIbkuovku7YgPCB0YWlneWFrdWppa2VuXCA7Civljp/lp4vmlZnkvJogPCBnZW5zaGlreW91a2FpXCA7CivkvqHmoLzljZTlrpogPCBrYWtha3VreW91dGVpXCA7Civlr5PmhI/lsI/oqqwgPCBndXVpc2hvdXNldHN1XCA7CivmmJTmsJfos6ogPCBtdWthc2hpa2F0YWdpXCA7CivlsILploDmioDooZMgPCBzZW5tb25naWp1dHN1XCA7Civmi6HlvLXlj6/og70gPCBrYWt1Y2hvdWthbm91XCA7Civkv4Tli4nlvLcgPCBuaXdha2FiZW5reW91XCA7CivmgKXpgLLkuLvnvqkgPCBreXV1c2hpbnNodWdpXCA7CivoqJjlv7XlvI/lhbggPCBraW5lbnNoaWtpdGVuXCA7Civnq7blkIjohLHnt5ogPCBreW91Z291ZGFzc2VuXCA7CivmmpHkuK3kvJHmmocgPCBzaG9jaHV1a3l1dWthXCA7CivnuYHmlofnuJ/npLwgPCBoYW5idW5qb2t1cmVpXCA7Civnm67mqJnnrqHnkIYgPCBtb2t1aHlvdWthbnJpXCA7CivmlrnlkJHoprPlv7UgPCBob3Vrb3VrYW4nJ25lblwgOwor5rW35bqV6Zu75L+hIDwga2FpdGVpZGVuc2hpblwgOwor5qWt55WM5YuV5ZCRIDwgZ3lvdWthaWRvdWtvdVwgOwor5b+F6KaB57WM6LK7IDwgaGl0c3V5b3VrZWloaVwgOwor5rC0546J5qih5qeYIDwgbWl6dXRhbWFtb3lvdVwgOwor6YCy5a2m546HIDwgc2hpbmdha3VyaXRzdVwgOwor5Ye65b6B5a625pePIDwgc2h1c3NlaWthem9rdVwgOwor57WM5bi45Y+O5pSvIDwga2Vpam91c2h1dXNoaVwgOwor5Zyw55CD56eR5a2mIDwgY2hpa3l1dWthZ2FrdVwgOwor5oOF5aCx5oqA6KGTIDwgam91aG91Z2lqdXRzdVwgOwor5q6/5qeY6JuZIDwgdG9ub3NhbWFnYWVydVwgOwor6auY6auY5bqm6aOb6KGMIDwga291a291ZG9oaWtvdVwgOwor56m65Lit5YiG6KejIDwga3V1Y2h1dWJ1bmthaVwgOwor5by35Yi25Yq05YONIDwga3lvdXNlaXJvdWRvdVwgOwor6ZqO57Sa5oSP6K2YIDwga2Fpa3l1dWlzaGlraVwgOwor5Y2a5aOr6KuW5paHIDwgaGFrdXNoaXJvbmJ1blwgOwor5Lq65qC85b2i5oiQIDwgamlua2FrdWtlaXNlaVwgOwor57W557O457Sh57i+IDwga2Vuc2hpYm91c2VraVwgOwor6IG35aC06ZeY5LqJIDwgc2hva3ViYXRvdXNvdVwgOwor6Z2Z6ISI6KGAIDwgam91bXlha3VrZXRzdVwgOwor5pWZ6IKy5a2m6YOoIDwga3lvdWlrdWdha3VidVwgOwor5aSJ6YCf6KOF572uIDwgaGVuc29rdXNvdWNoaVwgOwor55yf5YaG55yf54+gIDwgc2hpbicnZW5zaGluanVcIDsKK+Wbveawkee1jOa4iCA8IGtva3VtaW5rZWl6YWlcIDsKK+S4gOeti+mBkyA8IGhpdG9zdWppbWljaGlcIDsKK+WGhemdouaPj+WGmSA8IG5haW1lbmJ5b3VzaGFcIDsKK+WqkuS9k+e1guerryA8IGJhaXRhaXNodXV0YW5cIDsKK+W/g+eQhueZguazlSA8IHNoaW5yaXJ5b3Vob3VcIDsKK+aAp+eahOmWouS/giA8IHNlaXRla2lrYW5rZWlcIDsKK+eEoemKremjsumjnyA8IG11c2VuJydpbnNob2t1XCA7CivlsLHmpa3njocgPCBzaHV1Z3lvdXJpdHN1XCA7Civnr4Tnlofmlofms5UgPCBoYW5jaHV1YnVucG91XCA7CivlhoXnt5LoqbEgPCBuYWlzaG9iYW5hc2hpXCA7CivplbfmnJ/lgJ/mrL4gPCBjaG91a2lzaGFra2FuXCA7CivlhajkvZPpm4blkIggPCB6ZW50YWlzaHV1Z291XCA7Civlj7PlsI/mi6zlvKcgPCBtaWdpc2hvdWtha2tvXCA7Civku67mg7PmlbXlm70gPCBrYXNvdXRla2lrb2t1XCA7CivouoHprLHos6ogPCBzb3V1dHN1c2hpdHN1XCA7CivmpbXmpb3lvoDnlJ8gPCBnb2t1cmFrdW91am91XCA7CivliJ3nrYnmlZnogrIgPCBzaG90b3VreW91aWt1XCA7CivooYzmlL/lkb3ku6QgPCBneW91c2VpbWVpcmVpXCA7Civlr77lnLDmlLvmkoMgPCB0YWljaGlrb3VnZWtpXCA7Civoh6rnhLbmj4/lhpkgPCBzaGl6ZW5ieW91c2hhXCA7Civph5Hono3os4fmnKwgPCBraW4nJ3l1dXNoaWhvblwgOwor54Sh6IO95Yqb6ICFIDwgbXVub3VyeW9rdXNoYVwgOwor5YyW5a2m5bel5qWtIDwga2FnYWt1a291Z3lvdVwgOwor6KGM5pS/5Yy655S7IDwgZ3lvdXNlaWt1a2FrdVwgOwor5a2m57+S6L6e5YW4IDwgZ2FrdXNodXVqaXRlblwgOwor5Zu95Lya6K2w5LqL5aCCIDwga29ra2FpZ2lqaWRvdVwgOwor6Zao6Zal5pS/5rK7IDwga2VpYmF0c3VzZWlqaVwgOwor5LqM5Y2B5Zub56+A5rCXIDwgbmlqdXVzaGlzZWtraVwgOwor5LqL5qWt5ouh5YWFIDwgamlneW91a2FrdWp1dVwgOwor6L6y5p2R5bel5qWtIDwgbm91c29ua291Z3lvdVwgOwor56eL6Zuo5YmN57eaIDwgYWtpc2FtZXplbnNlblwgOwor54Sh5b2i5paH5YyW6LKhIDwgbXVrZWlidW5rYXphaVwgOwor5YWx5ZCM6L6y5aC0IDwga3lvdWRvdW5vdWpvdVwgOwor5aWz5qip5ouh5by1IDwgam9rZW5rYWt1Y2hvdVwgOwor6Kyb57+S5Lya5aC0IDwga291c2h1dWthaWpvdVwgOwor5rGa5p+T54mp6LOqIDwgb3NlbmJ1c3NoaXRzdVwgOwor54q25rOB5Yik5patIDwgam91a3lvdWhhbmRhblwgOwor5b2T6Kmy5a6Y5bqBIDwgdG91Z2Fpa2FuY2hvdVwgOwor5Luy5LuL6LK/5piTIDwgY2h1dWthaWJvdWVraVwgOwor5Zu95YaF5biC5aC0IDwga29rdW5haXNoaWpvdVwgOwor5LiA5p6a55yL5p2/IDwgaWNoaW1haWthbmJhblwgOwor5biC5aC06Ieq55Sx5YyWIDwgc2hpam91aml5dXVrYVwgOwor57WM5Za25aSa6KeS5YyWIDwga2VpZWl0YWtha3VrYVwgOwor54Sh57ea6YCa5L+hIDwgbXVzZW50c3V1c2hpblwgOwor57WM5riI5aSn5Zu9IDwga2VpemFpdGFpa29rdVwgOwor5Li75oiR5Li7576p6ICFIDwgc2h1Z2FzaHVnaXNoYVwgOwor5pqX5Y+35YyW5omL5rOVIDwgYW5nb3VrYXNodWhvdVwgOwor5Y+N56S+5Lya55qEIDwgaGFuc2hha2FpdGVraVwgOwor5LiA5Yip5LiA5a6zIDwgaWNoaXJpaWNoaWdhaVwgOwor5LqM5b6L6IOM5Y+NIDwgbmlyaXRzdWhhaWhhblwgOwor5b6p5YWD5L2c5qWtIDwgZnVrdWdlbnNhZ3lvdVwgOwor5Lq66ZaT54iG5by+IDwgbmluZ2VuYmFrdWRhblwgOwor5a2j56+A5Yq05YONIDwga2lzZXRzdXJvdWRvdVwgOwor6Zm46LuN5aSn6IejIDwgcmlrdWd1bmRhaWppblwgOwor5pat5oq15oqX6KeSIDwgZGFudGVpa291a2FrdVwgOwor54ax5Yq5546HIDwgbmV0c3Vrb3VyaXRzdVwgOwor5LiN6KaL6Lui6Iq46ICFIDwgbWl6dXRlbmdlaXNoYVwgOwor55uu55qE54mpIDwgbW9rdXRla2lidXRzdVwgOwor6YCa5L+h5qmf6ZaiIDwgdHN1dXNoaW5raWthblwgOwor5Y+N55m65YqbIDwgaGFucGF0c3VyeW9rdVwgOwor5YaZ55yf5Ye454mIIDwgc2hhc2hpbnRvcHBhblwgOwor5qSN54mp6KqMIDwgc2hva3VidXRzdXNoaVwgOwor5YyW5a2m55mC5rOVIDwga2FnYWt1cnlvdWhvdVwgOwor5Yqf5Yip5Li7576p6ICFIDwga291cmlzaHVnaXNoYVwgOwor57ax57SA57Kb5q2jIDwga291a2lzaHVrdXNlaVwgOwor56iO5Yi25pS56Z2pIDwgemVpc2Vpa2Fpa2FrdVwgOwor6Kq/5YGc6KOB5YikIDwgY2hvdXRlaXNhaWJhblwgOwor54Sh572q5Yik5rG6IDwgbXV6YWloYW5rZXRzdVwgOwor5aSp54mbIDwga2FtaWtpcmltdXNoaVwgOwor6LuN5LqL5oim55WlIDwgZ3VuamlzZW5yeWFrdVwgOwor6K2m5a+f5YqbIDwga2Vpc2F0c3VyeW9rdVwgOwor6Ieo5bqK6Kmm6aiTIDwgcmluc2hvdXNoaWtlblwgOwor6Ziy5q2i5oyH6YedIDwgYm91c2hpc2hpc2hpblwgOwor5rCX6LGh6Kaz5risIDwga2lzaG91a2Fuc29rdVwgOwor6Iie5Y+w55Sf5rS7IDwgYnV0YWlzZWlrYXRzdVwgOwor5aSn5ZCN5peF6KGMIDwgZGFpbXlvdXJ5b2tvdVwgOwor5L2c5qWt55mC5rOVIDwgc2FneW91cnlvdWhvdVwgOwor5aSW5Zu954K65pu/IDwgZ2Fpa29rdWthd2FzZVwgOwor6YO956uL6auY5qChIDwgdG9yaXRzdWtvdWtvdVwgOwor5b2i5byP5Li7576pIDwga2Vpc2hpa2lzaHVnaVwgOwor5YyW5a2m5bel5a2mIDwga2FnYWt1a291Z2FrdVwgOwor6KeS6YGL5YuV6YePIDwga2FrdXVuZG91cnlvdVwgOwor5a6M5YWo54Sh5qygIDwga2FuemVubXVrZXRzdVwgOwor5pS/562W5rG65a6aIDwgc2Vpc2FrdWtldHRlaVwgOwor6LKo54mp5a6kIDwga2Ftb3RzdXNoaXRzdVwgOwor5b6q55Kw5bCP5pWwIDwganVua2Fuc2hvdXN1dVwgOwor5aSn6Z+T5rCR5Zu9IDwgZGFpa2FubWlua29rdVwgOwor5oeQ5Lit6Y+hIDwga2FpY2h1dWthZ2FtaVwgOwor6YGp55So5qWt5YuZIDwgdGVraXlvdWd5b3VtdVwgOwor5oim5LqJ5paH5a2mIDwgc2Vuc291YnVuZ2FrdVwgOwor5Lmd5aSp55u05LiLIDwga3l1dXRlbmNob2trYVwgOwor5reh57eR6ImyIDwgdGFucnlva3VzaG9rdVwgOwor6Z2i5b6T6IW56IOMIDwgbWVuanV1ZnVrdWhhaVwgOwor56K65L+d5aSx5pWXIDwga2FrdWhvc2hpcHBhaVwgOwor5YWx6YCa6KiA6KqeIDwga3lvdXRzdXVnZW5nb1wgOwor6Ieq5YuV6LuK5L+d6Zm6IDwgamlkb3VzaGFob2tlblwgOwor5by35Yi25Yem5YiGIDwga3lvdXNlaXNob2J1blwgOwor5pat5bSW57W25aOBIDwgZGFuZ2FpemVwcGVraVwgOwor55Sj5qWt56S+5LyaIDwgc2FuZ3lvdXNoYWthaVwgOwor5ZCE56iu5a2m5qChIDwga2FrdXNodWdha2tvdVwgOwor5YiG6Kej5YaZ55yfIDwgYnVua2Fpc2hhc2hpblwgOwor5Y2w5Yi35aqS5L2TIDwgaW5zYXRzdWJhaXRhaVwgOwor56CU56m25omA5aCxIDwga2Vua3l1dXNob2hvdVwgOwor5Lmx5bCE5Lmx5pKDIDwgcmFuc2hhcmFuZ2VraVwgOwor54m56Kix5L615a6zIDwgdG9ra3lvc2hpbmdhaVwgOwor5a6a6aGN6LKv6YeRIDwgdGVpZ2FrdWNob2tpblwgOwor5YWs6KGG5Lyd5YuVIDwga291c2h1dWRlbmRvdVwgOwor5aSp56u66bygIDwgdGVuamlrdW5lenVtaVwgOwor6YmE6YGT6aas6LuKIDwgdGV0c3Vkb3ViYXNoYVwgOwor5YaF5Zu954K65pu/IDwgbmFpa29rdWthd2FzZVwgOwor56iu56iu5qeY5qeYIDwgc2h1anVzYW1hemFtYVwgOwor5Zac6Imy5rqA6Z2iIDwga2lzaG9rdW1hbm1lblwgOwor5byB5Yil57Sg5oCnIDwgYmVuYmV0c3Vzb3NlaVwgOwor5L2c5oim5ZG95LukIDwgc2FrdXNlbm1laXJlaVwgOwor6K2w6ZW36IG35qipIDwgZ2ljaG91c2hva2tlblwgOwor57Wx546H5YqbIDwgdG91cml0c3VyeW9rdVwgOwor5a6f6Yyy54mpIDwgaml0c3Vyb2t1bW9ub1wgOwor5ZWT6JKZ5oCd5r2uIDwga2VpbW91c2hpY2hvdVwgOwor5YWs5ai85YWo5buDIDwga291c2hvdXplbnBhaVwgOwor5a++6Z2i5Lqk6YCaIDwgdGFpbWVua291dHN1dVwgOwor6Ieq5bex6aGV56S65qyyIDwgamlrb2tlbmppeW9rdVwgOwor5a+G5YWl5Zu9IDwgbWl0c3VueXV1Z29rdVwgOwor5LiA5ZWP5LiA562UIDwgaWNoaW1vbicnaXR0b3VcIDsKK+ebtOi8uOWHuiA8IGNob2t1eXVzaHV0c3VcIDsKK+eEoemFjeW9k+S/nemZuiA8IG11aGFpdG91aG9rZW5cIDsKK+mbu+WtkOWvhuW6piA8IGRlbnNoaW1pdHN1ZG9cIDsKK+i2heS9juS+oeagvCA8IGNob3V0ZWlrYWtha3VcIDsKK+S4gOaLrOWjsuiytyA8IGlra2F0c3ViYWliYWlcIDsKK+aDmuawl+ipsSA8IG5vcm9rZWJhbmFzaGlcIDsKK+WItue0hOadoeS7tiA8IHNlaXlha3Vqb3VrZW5cIDsKK+S8keaIpuS8muirhyA8IGt5dXVzZW5rYWlkYW5cIDsKK+S8kemkiuWupCA8IGt5dXV5b3VzaGl0c3VcIDsKK+eJiOaoqeS+teWusyA8IGhhbmtlbnNoaW5nYWlcIDsKK+mZs+WIl+eqkyA8IGNoaW5yZXRzdW1hZG9cIDsKK+eZvuWIhueOhyA8IGh5YWt1YnVucml0c3VcIDsKK+malOmboueXheajnyA8IGtha3VyaWJ5b3V0b3VcIDsKK+eUn+muruaWmeWTgSA8IHNlaXNlbnJ5b3VoaW5cIDsKK+WHuuihgOeXhyA8IHNodWtrZXRzdXNob3VcIDsKK+S4iuaYh+WCvuWQkSA8IGpvdXNob3VrZWlrb3VcIDsKK+S4jeazleWFpeWbvSA8IGZ1aG91bnl1dWdva3VcIDsKK+aVmemkiuWtpumDqCA8IGt5b3V5b3VnYWt1YnVcIDsKK+mrmOS/oemgvOaApyA8IGtvdXNoaW5yYWlzZWlcIDsKK+aenOaoueagveWfueiAhSA8IGthanVzYWliYWlzaGFcIDsKK+WutuWuheaNnOe0oiA8IGthdGFrdXNvdXNha3VcIDsKK+ioiOeUu+e1jOa4iCA8IGtlaWtha3VrZWl6YWlcIDsKK+S4iei7uOippumokyA8IHNhbmppa3VzaGlrZW5cIDsKK+acgOe1guautemajiA8IHNhaXNodXVkYW5rYWlcIDsKK+WPjuWFpeWNsOe0mSA8IHNodXVueXV1aW5zaGlcIDsKK+WNiueGn+e3tOW3pSA8IGhhbmp1a3VyZW5rb3VcIDsKK+WGmeecn+WIpOWumiA8IHNoYXNoaW5oYW50ZWlcIDsKK+e1jOa4iOims+W/tSA8IGtlaXphaWthbicnbmVuXCA7Civos4Pph5HmsLTmupYgPCBjaGluZ2luc3VpanVuXCA7Civllrbmpa3lj47mlK8gPCBlaWd5b3VzaHV1c2hpXCA7CivkuInnm7jkuqTmtYEgPCBzYW5zb3Vrb3VyeXV1XCA7CivntYzllrbmiKbnlaUgPCBrZWllaXNlbnJ5YWt1XCA7CivmmKXlpI/np4vlhqwgPCBzaHVua2FzaHV1dG91XCA7CivnhKbngrnmt7HluqYgPCBzaG91dGVuc2hpbmRvXCA7CivkuIDmmYLmiYDlvpcgPCBpY2hpamlzaG90b2t1XCA7CivmnYnoirHnsonnl4cgPCBzdWdpa2FmdW5zaG91XCA7CivkurrmsJHmipXnpaggPCBqaW5taW50b3VoeW91XCA7Civlr4bovLjlh7ogPCBtaXRzdXl1c2h1dHN1XCA7CivlkIjlvpPpgKPooaEgPCBnYXNzaG91cmVua291XCA7Civng4/ph47osYzosYYgPCBrYXJhc3Vub2VuZG91XCA7CivnhKHoirjlpKfpo58gPCBtdWdlaXRhaXNob2t1XCA7Civlm73pmpvpgKPlkIggPCBrb2t1c2FpcmVuZ291XCA7CivliKTliKXlvI8gPCBoYW5iZXRzdXNoaWtpXCA7CivnhrHkuqTmj5vlmaggPCBuZXRzdWtvdWthbmtpXCA7CivlroflrpnplovnmbogPCB1Y2h1dWthaWhhdHN1XCA7CivmvKLmlofoqJPoqq0gPCBrYW5idW5rdW5kb2t1XCA7CivnqbrplpPmhJ/oppogPCBrdXVrYW5rYW5rYWt1XCA7CivkuozkurrkuInohJogPCBuaW5pbnNhbmt5YWt1XCA7CivmqKnlipvkuLvnvqkgPCBrZW5yeW9rdXNodWdpXCA7CivmpI3niannlYwgPCBzaG9rdWJ1dHN1a2FpXCA7Civli5/pm4bluoPlkYogPCBib3NodXVrb3Vrb2t1XCA7Civlrabnv5LnkIboq5YgPCBnYWt1c2h1dXJpcm9uXCA7Civpp5Dou4rnpoHmraIgPCBjaHV1c2hha2luc2hpXCA7CivlhbHlkIzlrqPoqIAgPCBreW91ZG91c2VuZ2VuXCA7Civoo4HliKTlrpjlv4zpgb8gPCBzYWliYW5rYW5raWhpXCA7CivlpKnlnLDnpZ7mmI4gPCB0ZW5jaGlzaGlubWVpXCA7CivlpKLlubsgPCB5dW1lbWFib3Jvc2hpXCA7CivoqbPntLDmg4XloLEgPCBzaG91c2Fpam91aG91XCA7CivniZvpo7Lppqzpo58gPCBneXV1aW5iYXNob2t1XCA7CivpnZ7mraboo4XlnLDluK8gPCBoaWJ1c291Y2hpdGFpXCA7Civph5Hln47piYTlo4EgPCBraW5qb3V0ZXBwZWtpXCA7Civpm4bkuK3orJvnvqkgPCBzaHV1Y2h1dWtvdWdpXCA7CivlpInlvaLomavpoZ4gPCBoZW5rZWljaHV1cnVpXCA7CivlhaznmoTlubTph5EgPCBrb3V0ZWtpbmVua2luXCA7CivpgLHliIrpm5HoqowgPCBzaHV1a2FuemFzc2hpXCA7CivntKHnuL7lt6XloLQgPCBib3VzZWtpa291am91XCA7CivliJ3nrYnmlbDlraYgPCBzaG90b3VzdXVnYWt1XCA7CivmrovlrZjml6XmlbAgPCB6YW5zb24nJ25pc3N1dVwgOwor56m65rCX5riF5rWE5qmfIDwga3V1a2lzZWlqb3VraVwgOwor5Zu96Zqb5bGV6ZaLIDwga29rdXNhaXRlbmthaVwgOwor5bm05Yqf5bqP5YiXIDwgbmVua291am9yZXRzdVwgOwor54ax5Yqb5a2mIDwgbmV0c3VyaWtpZ2FrdVwgOwor5ZWG5qWt6YO95biCIDwgc2hvdWd5b3V0b3NoaVwgOwor5Lit6YCU6YCA5a2mIDwgY2h1dXRvdGFpZ2FrdVwgOwor5YWx5ZCM5Lya6KaLIDwga3lvdWRvdWthaWtlblwgOwor5oay5rOV5a2m6ICFIDwga2VucG91Z2FrdXNoYVwgOwor5LiA5LqL5LiN5YaN6K2wIDwgaWNoaWppZnVzYWlnaVwgOwor5Ym15bu66KiY5b+15pelIDwgc291a2Vua2luZW5iaVwgOwor5pmu6YGN5aal5b2T5oCnIDwgZnVoZW5kYXRvdXNlaVwgOwor5Y6f5a2Q54iG5by+IDwgZ2Vuc2hpYmFrdWRhblwgOwor5Y6f5a2Q56C05aOK5qmfIDwgZ2Vuc2hpaGFrYWlraVwgOwor55m75bGx6YmE6YGTIDwgdG96YW50ZXRzdWRvdVwgOwor5paw5q2j5pyIIDwgc2hpbnNob3VnYXRzdVwgOwor54mp55CG5YyW5a2mIDwgYnV0c3VyaWthZ2FrdVwgOwor57Wm5rC05Yi26ZmQIDwga3l1dXN1aXNlaWdlblwgOwor5pyd6a6u5oim5LqJIDwgY2hvdXNlbnNlbnNvdVwgOwor5auM5rCX55Sf54mpIDwga2Vua2lzZWlidXRzdVwgOwor6YG45oqe54q25oWLIDwgc2VudGFrdWpvdXRhaVwgOwor5Li76aOf54mpIDwgc2h1c2hva3VidXRzdVwgOwor6auY5bOw5YWr5bqnIDwga291aG91aGFjaGl6YVwgOwor5LiN5raI5YyW54mpIDwgZnVzaG91a2FidXRzdVwgOwor5rOV55qE5paH5pu4IDwgaG91dGVraWJ1bnNob1wgOwor56eY5a+G6YG45oyZIDwgaGltaXRzdXNlbmt5b1wgOwor6Zmz5YiX5qOaIDwgY2hpbnJldHN1ZGFuYVwgOwor5paw54ax5biv5Yy6IDwgc2hpbicnbmV0dGFpa3VcIDsKK+e1kOWpmuaMh+i8qiA8IGtla2tvbicneXViaXdhXCA7CivlloTpmqPlj4vlpb0gPCB6ZW5yaW4nJ3l1dWtvdVwgOwor5Y+X5Y+W5omL5b2iIDwgdWtldG9yaXRlZ2F0YVwgOwor5rG6566X5aCx5ZGKIDwga2Vzc2FuaG91a29rdVwgOwor5b+D55CG5a2m6ICFIDwgc2hpbnJpZ2FrdXNoYVwgOwor6ZuR5Y+O5YWlIDwgemF0c3VzaHV1bnl1dVwgOwor6KuW55CG5b2i5byPIDwgcm9ucmlrZWlzaGlraVwgOwor5L2O6aCt5bmz6LqrIDwgdGVpdG91aGVpc2hpblwgOwor5re35ZCI6L6y5qWtIDwga29uZ291bm91Z3lvdVwgOwor5paH6Iq45L2c5ZOBIDwgYnVuZ2Vpc2FrdWhpblwgOwor5pyJ6ZaR6ZqO57SaIDwgeXV1a2Fua2Fpa3l1dVwgOwor5Y+L5aW95p2h57SEIDwgeXV1a291am91eWFrdVwgOwor5YmH5aSp5Y6756eBIDwgc29rdXRlbmt5b3NoaVwgOwor5YaZ5a6f5Li7576pIDwgc2hhaml0c3VzaHVnaVwgOwor5Zu96Zqb5biC5aC0IDwga29rdXNhaXNoaWpvdVwgOwor5LqM6YeN55Sf5rS7IDwgbmlqdXVzZWlrYXRzdVwgOwor6Ieo5qmf55uu5qiZIDwgcmlua2ltb2t1aHlvdVwgOwor5ZWG5qWt55m76KiYIDwgc2hvdWd5b3V0b3VraVwgOwor6buE6Imy5Lq656iuIDwgb3VzaG9rdWppbnNodVwgOwor5ZGo5rOi5aSJ6Kq/IDwgc2h1dWhhaGVuY2hvdVwgOwor5qyg6Zml5ZWG5ZOBIDwga2Vra2Fuc2hvdWhpblwgOwor5b6T5bGe5aSJ5pWwIDwganV1em9rdWhlbnN1dVwgOwor5pei57SE6KGo54++IDwga2l5YWt1aHlvdWdlblwgOwor6Kmx5Y2K5YiGIDwgaGFuYXNoaWhhbmJ1blwgOwor5LiN6Imv5bCR5bm0IDwgZnVyeW91c2hvdW5lblwgOwor5ris6YeP5oqA5birIDwgc29rdXJ5b3VnaXNoaVwgOwor5qOu576F5LiH6LGhIDwgc2hpbnJhYmFuc2hvdVwgOwor55Sj5qWt5qeL6YCgIDwgc2FuZ3lvdWtvdXpvdVwgOwor5qyn5bee6Ku45Zu9IDwgb3VzaHV1c2hva29rdVwgOwor6YCa5Yuk5Zyw542EIDwgdHN1dWtpbmppZ29rdVwgOwor5pi86ZaT5Lq65Y+jIDwgY2h1dWthbmppbmtvdVwgOwor5Yqb5LiN6LazIDwgY2hpa2FyYWJ1c29rdVwgOwor5oCn5qC85Yik5patIDwgc2Vpa2FrdWhhbmRhblwgOwor5L+h6aC86Zai5L+CIDwgc2hpbnJhaWthbmtlaVwgOwor5bCx5a2m546HIDwgc2h1dWdha3VyaXRzdVwgOwor5ZCM5pyf6YCa5L+hIDwgZG91a2l0c3V1c2hpblwgOwor5LiJ6YeN54Sm54K5IDwgc2FuanV1c2hvdXRlblwgOwor5oqV56Wo57eP5pWwIDwgdG91aHlvdXNvdXN1dVwgOwor5aSn5bmF5Yi35pawIDwgb29oYWJhc2Fzc2hpblwgOwor5rC05LiK55S6IDwgbWluYWthbWltYWNoaVwgOwor57WQ5ama6KiY5b+15pelIDwga2Vra29ua2luZW5iaVwgOwor5aSn6Zuo5rOo5oSP5aCxIDwgb29hbWVjaHV1aWhvdVwgOwor5YiH5pat5oKj6ICFIDwgc2V0c3VkYW5rYW5qYVwgOwor6KKW5omL5YKN6KazIDwgc2h1dXNodWJvdWthblwgOwor5ouN5omL5Zad6YeHIDwgaGFrdXNodWthc3NhaVwgOwor5L2c5qWt5Luu6KqsIDwgc2FneW91a2FzZXRzdVwgOwor57WM5riI5oiQ6ZW3IDwga2VpemFpc2VpY2hvdVwgOwor57Gz5p2x6YOo5pmC6ZaTIDwgYmVpdG91YnVqaWthblwgOwor5ZCI5oiQ5a6d55+zIDwgZ291c2VpaG91c2VraVwgOwor57WQ57eg57WE57mUIDwga2V0dGVpc29zaGlraVwgOwor6Kaq5YiH5b+DIDwgc2hpbnNldHN1c2hpblwgOwor5YaG6YyQ5puy57eaIDwgZW5zdWlreW9rdXNlblwgOwor6IGW5L2T5oud6aCYIDwgc2VpdGFpaGFpcnlvdVwgOwor5bq25rCR6YeR6J6NIDwgc2hvbWlua2luJyd5dXVcIDsKK+S9k+epjeaKteaKlyA8IHRhaXNla2l0ZWlrb3VcIDsKK+WNlOWQjOe1hOWQiCA8IGt5b3Vkb3VrdW1pYWlcIDsKK+WFiOS9j+awkeaXjyA8IHNlbmp1dW1pbnpva3VcIDsKK+e1seS4gOaIpue3miA8IHRvdWl0c3VzZW5zZW5cIDsKK+WQjOaZgumAmuiosyA8IGRvdWppdHN1dXlha3VcIDsKK+WRqOefpeW+ueW6lSA8IHNodXVjaGl0ZXR0ZWlcIDsKK+iJsembo+i+m+iLpiA8IGthbicnbmFuc2hpbmt1XCA7CivmlL/lhZrlhoXplqMgPCBzZWl0b3VuYWlrYWt1XCA7CivliLbkvZzlrqQgPCBzZWlzYWt1c2hpdHN1XCA7CivljbPniannmoQgPCBzb2t1YnV0c3V0ZWtpXCA7Civnj77lnLDloLHlkYogPCBnZW5jaGlob3Vrb2t1XCA7Civmh7jos57llY/poYwgPCBrZW5zaG91bW9uZGFpXCA7CivliqPmgKfpgbrkvJ3lrZAgPCByZXNzZWlpZGVuc2hpXCA7CivmsbLlj5blj6MgPCBrdW1pdG9yaWd1Y2hpXCA7Civlgq3oiLnlpZHntIQgPCB5b3VzZW5rZWl5YWt1XCA7Civku4rkuIrlpKnnmocgPCBraW5qb3V0ZW4nJ25vdVwgOwor5LuW6Kaa55eH54q2IDwgdGFrYWt1c2hvdWpvdVwgOwor5qyg6aOf5YWQ56ulIDwga2Vzc2hva3VqaWRvdVwgOwor5aiv5qW955Wq57WEIDwgZ29yYWt1YmFuZ3VtaVwgOwor57K+56We5Yy75a2mIDwgc2Vpc2hpbicnaWdha3VcIDsKK+WGheWuueiovOaYjiA8IG5haXlvdXNob3VtZWlcIDsKK+WHuua4r+WBnOatoiA8IHNodWtrb3V0ZWlzaGlcIDsKK+Wkq+Wppue0hOadnyA8IGZ1dWZ1eWFrdXNva3VcIDsKK+aXheihjOalreiAhSA8IHJ5b2tvdWd5b3VzaGFcIDsKK+S9v+W+kuS/oee1jCA8IHNoaXRvc2hpbmt5b3VcIDsKK+Wkluizh+WwjuWFpSA8IGdhaXNoaWRvdW55dXVcIDsKK+eEoeS+oeWApOizh+eUoyA8IG11a2FjaGlzaGlzYW5cIDsKK+WBpeW6t+S/nemZuuWMuyA8IGtlbmtvdWhva2VuJydpXCA7CivluLjku7vlp5Tlk6HkvJogPCBqb3VuaW4nJ2lpbmthaVwgOwor5oiQ5Lq65pWZ6IKyIDwgc2Vpamlua3lvdWlrdVwgOwor5YWs5byP5Li7576pIDwga291c2hpa2lzaHVnaVwgOwor6KSH5pWw5qWt5YuZIDwgZnVrdXN1dWd5b3VtdVwgOwor56aB5qyy5Li7576pIDwga2luJyd5b2t1c2h1Z2lcIDsKK+epuuilsuitpuWgsSA8IGt1dXNodXVrZWlob3VcIDsKK+eUo+alreWGjeeUnyA8IHNhbmd5b3VzYWlzZWlcIDsKK+izg+iyuOS+oeagvCA8IGNoaW50YWlrYWtha3VcIDsKK+aIpumXmOWJjeWTqCA8IHNlbnRvdXplbnNob3VcIDsKK+S4gOiogOS4gOihjCA8IGljaGlnZW4nJ2lra291XCA7Civou5YgPCB0c3VtdWdpa3VydW1hXCA7CivlkLnlpY/mpb3lm6MgPCBzdWlzb3VnYWt1ZGFuXCA7Civnm7Tnt5rot53pm6IgPCBjaG9rdXNlbmt5b3JpXCA7Civov5HopqrntZDlqZogPCBraW5zaGlua2Vra29uXCA7CivnsbPoi7Hku4/omK0gPCBiZWllaWJ1dHN1cmFuXCA7Civoh6rnlLHkuLvnvqnogIUgPCBqaXl1dXNodWdpc2hhXCA7Civnn63ms6Llj5fkv6HmqZ8gPCB0YW5wYWp1c2hpbmtpXCA7CivlhbHlkIzkvZzmpa0gPCBreW91ZG91c2FneW91XCA7CivmuJvlj43mlL/nrZYgPCBnZW50YW5zZWlzYWt1XCA7Civlv4PnkIbkvZzmiKYgPCBzaGlucmlzYWt1c2VuXCA7Civnt4/poJjlqJggPCBzb3VyeW91bXVzdW1lXCA7CivkuIPnpo/npZ4gPCBzaGljaGlmdWt1amluXCA7Civlv4Poh5Pnp7vmpI0gPCBzaGluem91aXNob2t1XCA7CivmnInpmZDosqzku7sgPCB5dXVnZW5zZWtpbmluXCA7CivntYTnuZTlho3nt6ggPCBzb3NoaWtpc2FpaGVuXCA7Civnpo/pn7PmlZnkvJogPCBmdWt1aW5reW91a2FpXCA7CivplqLkv4Llia/oqZ4gPCBrYW5rZWlmdWt1c2hpXCA7Civlj7Lmlpnnt6jnuoIgPCBzaGlyeW91aGVuc2FuXCA7CivnibnliKXluK0gPCB0b2t1YmV0c3VzZWtpXCA7CivnjJ/lrpjpgYvli5UgPCByeW91a2FuJyd1bmRvdVwgOwor6IKJ5L2T5Yq05YONIDwgbmlrdXRhaXJvdWRvdVwgOwor56C05aOK5Li7576p6ICFIDwgaGFrYWlzaHVnaXNoYVwgOwor5Y+C54Wn5paH54yuIDwgc2Fuc2hvdWJ1bmtlblwgOwor6Z+z5qW955uj552jIDwgb25nYWt1a2FudG9rdVwgOwor5bmz6Lqr5L2O6aCtIDwgaGVpc2hpbnRlaXRvdVwgOwor5YWx55Sj5YiG5a2QIDwga3lvdXNhbmJ1bnNoaVwgOwor5LqI57SE5Ye654mIIDwgeW95YWt1c2h1cHBhblwgOwor54Kt5rC05YyW54mpIDwgdGFuc3Vpa2FidXRzdVwgOwor5b6h6YO95ZCI5Li7576pIDwgZ290c3Vnb3VzaHVnaVwgOwor5aSa6KGA6LOqIDwgdGFrZXRzdXNoaXRzdVwgOwor6L+R5Luj5paH5a2mIDwga2luZGFpYnVuZ2FrdVwgOwor5LqM5Y2B5pel5aSn5qC5IDwgaGF0c3VrYWRhaWtvblwgOwor5Zyw5pa55a6Y5bqBIDwgY2hpaG91a2FuY2hvdVwgOwor5Zub5YiG5LqU6KOCIDwgc2hpYnVuZ29yZXRzdVwgOwor57WM5riI5Zue5b6pIDwga2VpemFpa2FpZnVrdVwgOwor5a6f5a2Y5Li7576pIDwgaml0c3V6b25zaHVnaVwgOwor5oGS5rip5YuV54mpIDwga291b25kb3VidXRzdVwgOwor6YeO6I+c5LiA55q/IDwgeWFzYWloaXRvc2FyYVwgOwor5b2i5byP6KuW55CGIDwga2Vpc2hpa2lyb25yaVwgOwor5aSn5a2m5rWq5Lq6IDwgZGFpZ2FrdXJvdW5pblwgOwor5pqr5a6a5Y2U5a6aIDwgemFudGVpa3lvdXRlaVwgOwor6JC95LiL5YKY6YOo6ZqKIDwgcmFra2FzYW5idXRhaVwgOwor5pS+6YCB5aSn5a2mIDwgaG91c291ZGFpZ2FrdVwgOwor5rOV5b6L5Yi25bqmIDwgaG91cml0c3VzZWlkb1wgOwor6ZW36Led6Zui5L6d5a2YIDwgY2hvdWt5b3JpaXpvblwgOwor5L+h55So6YeR5bqrIDwgc2hpbicneW91a2lua29cIDsKK+acieWQjeeEoeWunyA8IHl1dW1laW11aml0c3VcIDsKK+e1gui6q+S8muWToSA8IHNodXVzaGlua2FpaW5cIDsKK+eskeatouWNg+S4hyA8IHNob3VzaGlzZW5iYW5cIDsKK+aWh+WtpuWNmuWjqyA8IGJ1bmdha3VoYWthc2VcIDsKK+W6reWFiOebuOWgtCA8IG5pd2FzYWtpc291YmFcIDsKK+a2iOiyu+iAheWBtCA8IHNob3VoaXNoYWdhd2FcIDsKK+eyvuelnuani+mAoCA8IHNlaXNoaW5rb3V6b3VcIDsKK+mJhOmqqOW3peS6iyA8IHRla2tvdHN1a291amlcIDsKK+WbveWIqeawkeemjyA8IGtva3VyaW1pbnB1a3VcIDsKK+i7veS9u+a1ruiWhCA8IGtlaWNob3VmdWhha3VcIDsKK+ayluepjeW5s+mHjiA8IGNodXVzZWtpaGVpeWFcIDsKK+mFqui+suijveWTgSA8IHJha3Vub3VzZWloaW5cIDsKK+isnee9quW6g+WRiiA8IHNoYXphaWtvdWtva3VcIDsKK+WvjOWbveW8t+WFtSA8IGZ1a29rdWt5b3VoZWlcIDsKK+WklumDreWbo+S9kyA8IGdhaWtha3VkYW50YWlcIDsKK+WFseWQjOS8gealrSA8IGt5b3Vkb3VraWd5b3VcIDsKK+majue0muekvuS8miA8IGthaWt5dXVzaGFrYWlcIDsKK+WvvuWkluaUv+etliA8IHRhaWdhaXNlaXNha3VcIDsKK+eyvumciuS/oeS7sCA8IHNlaXJlaXNoaW5rb3VcIDsKK++8p++8oueQhuirliA8IGppXCDMhGJpXCDMhHJpcm9uXCA7CivmmKXpoqjpp5jolakgPCBzaHVucHV1dGFpdG91XCA7CivmrbvliJHln7fooYwgPCBzaGlrZWlzaGlra291XCA7CivkuozogIXmip7kuIAgPCBuaXNoYXRha3VpdHN1XCA7CivphbjmgKflj43lv5wgPCBzYW5zZWloYW4nJ25vdVwgOwor5qC454iG55m6IDwga2FrdWJha3VoYXRzdVwgOwor5rC06YGT5paZ6YeRIDwgc3VpZG91cnlvdWtpblwgOwor56m65rCX5Yqb5a2mIDwga3V1a2lyaWtpZ2FrdVwgOwor5ZWG5aOy5rCX6LOqIDwgc2hvdWJhaWthdGFnaVwgOwor6KiY6Yyy5paH5a2mIDwga2lyb2t1YnVuZ2FrdVwgOwor56ym5Y+35aSJ5o+b5ZmoIDwgZnVnb3VoZW5rYW5raVwgOwor5b285pa55q2k5pa5IDwgYWNoaXJha29jaGlyYVwgOwor56uL6Lqr5Ye65LiWIDwgcmlzc2hpbnNodXNzZVwgOwor5q2j6YeR6YqA6KGMIDwgc2hvdWtpbmdpbmtvdVwgOwor5YWx5riI5LqL5qWtIDwga3lvdXNhaWppZ3lvdVwgOwor5YWI6KGM5oqA6KGTIDwgc2Vua291Z2lqdXRzdVwgOwor5Zuz5pu455uu6YyyIDwgdG9zaG9tb2t1cm9rdVwgOwor6Ki85oug6Zqg5ruFIDwgc2hvdWtvaW5tZXRzdVwgOwor6YCB6YeR5bCP5YiH5omLIDwgc291a2lua29naXR0ZVwgOwor56u25LqJ6Zai5L+CIDwga3lvdXNvdWthbmtlaVwgOwor5b6X56Wo546HIDwgdG9rdWh5b3VyaXRzdVwgOwor6KGo5b2w5byPIDwgaHlvdXNob3VzaGlraVwgOwor5YWl5a2m5byPIDwgbnl1dWdha3VzaGlraVwgOwor5LqL5YmN5qSc6ZayIDwgaml6ZW5rZW4nJ2V0c3VcIDsKK+ihjOaUv+WHpuWIhiA8IGd5b3VzZWlzaG9idW5cIDsKK+WFqOmdouW6g+WRiiA8IHplbm1lbmtvdWtva3VcIDsKK+ezjiA8IHNlbmNoaW1laXRvcnVcIDsKK+WbveWLmemVt+WumCA8IGtva3VtdWNob3VrYW5cIDsKK+eyqCA8IGhla3V0b21lZXRvcnVcIDsKK+eyvuelnueXhemZoiA8IHNlaXNoaW5ieW91aW5cIDsKK+Wbm+WNgeS5neaXpSA8IHNoaWp1dWt1bmljaGlcIDsKK+adk+WtkOWumuimjyA8IHNoYWt1c2hpam91Z2lcIDsKK+WPr+WhkeeJqeizqiA8IGthc29idXNzaGl0c3VcIDsKK+eBsOeZveizqiA8IGthaWhha3VzaGl0c3VcIDsKK+WNiui+suWNiua8gSA8IGhhbicnbm91aGFuZ3lvXCA7Civpo5/nlKjmsrkgPCBzaG9rdXlvdWFidXJhXCA7Civogbfmpa3nmoQgPCBzaG9rdWd5b3V0ZWtpXCA7Civpo5/nlJ/mtLsgPCBzaG9rdXNlaWthdHN1XCA7CivmmrTpo7LmmrTpo58gPCBib3VpbmJvdXNob2t1XCA7CivnoJTnqbbliIbph44gPCBrZW5reXV1YnVuJyd5YVwgOwor5Lq65Y+j5a+G5bqmIDwgamlua291bWl0c3Vkb1wgOwor5Lq66Lqr5aOy6LK3IDwgamluc2hpbmJhaWJhaVwgOwor5q665Lq65pyq6YGCIDwgc2F0c3VqaW5taXN1aVwgOwor5Li45LiA5pyIIDwgbWFydWhpdG90c3VraVwgOwor6Laz5Yip5pmC5LujIDwgYXNoaWthZ2FqaWRhaVwgOwor5by+552A6Led6ZuiIDwgZGFuY2hha3VreW9yaVwgOwor6IG35qWt55eFIDwgc2hva3VneW91YnlvdVwgOwor5YuV54mp5qSc5p+7IDwgZG91YnV0c3VrZW5zYVwgOwor6Jas6aSM55mC5rOVIDwgeWFrdWppcnlvdWhvdVwgOwor5Lq66ZaT5Zu95a6dIDwgbmluZ2Vua29rdWhvdVwgOwor5Li45LiA5pelIDwgbWFydWljaGluaWNoaVwgOwor57eK6KaB5Zyw5b2iIDwga2luJyd5b3VjaGlrZWlcIDsKK+W4guWgtOaIkOmVtyA8IHNoaWpvdXNlaWNob3VcIDsKK+aMh+WQjeaKleelqCA8IHNoaW1laXRvdWh5b3VcIDsKK+WRiei2iuWQjOiInyA8IGdvZXRzdWRvdXNodXVcIDsKK+WuheWcsOmAoOaIkCA8IHRha3VjaGl6b3VzZWlcIDsKK+eyvuelnuWKtOWDjSA8IHNlaXNoaW5yb3Vkb3VcIDsKK+WutuaXj+ioiOeUuyA8IGthem9rdWtlaWtha3VcIDsKK+mWi+WPo+S4gOeVqiA8IGthaWtvdWljaGliYW5cIDsKK+ebtOezu+WNkeWxniA8IGNob2trZWloaXpva3VcIDsKK+WJsuizpuaWueW8jyA8IGthcHB1aG91c2hpa2lcIDsKK+avkueJqeWtpiA8IGRva3VidXRzdWdha3VcIDsKK+WLpOWKtOWkp+ihhiA8IGtpbnJvdXRhaXNodXVcIDsKK+acquWPjuWFpemHkSA8IG1pc2h1dW55dXVraW5cIDsKK+miqOS/l+WWtualrSA8IGZ1dXpva3VlaWd5b3VcIDsKK+awkeS/l+mfs+alvSA8IG1pbnpva3Vvbmdha3VcIDsKK+a1t+awtOa1tOWgtCA8IGthaXN1aXlva3Vqb3VcIDsKK+mAo+WQiOS9nOaIpiA8IHJlbmdvdXNha3VzZW5cIDsKK+S4oeiTi+aZguioiCA8IHJ5b3VidXRhZG9rZWlcIDsKK+S4u+Wuoui7ouWAkiA8IHNodWtha3V0ZW50b3VcIDsKK+WwseiBt+WFiCA8IHNodXVzaG9rdXNha2lcIDsKK+aQjeebiuWLmOWumiA8IHNvbicnZWtpa2Fuam91XCA7Civli5XlipvpmY3kuIsgPCBkb3VyeW9rdWtvdWthXCA7CivkuInop5Lpl5jkuokgPCBzYW5rYWt1dG91c291XCA7CivpgIDlrablh6bliIYgPCB0YWlnYWt1c2hvYnVuXCA7Civlrp/pqJPmnZDmlpkgPCBqaWtrZW56YWlyeW91XCA7Civlj6PntITmnZ8gPCBrdWNoaXlha3Vzb2t1XCA7Civlr77miKbou4rngavlmaggPCB0YWlzZW5zaGFrYWtpXCA7CivlvJfljJbmsLTntKDphbggPCBmdWtrYXN1aXNvc2FuXCA7Civph43opoHnlKPmpa0gPCBqdXV5b3VzYW5neW91XCA7CivmtrLkvZPnh4PmlpkgPCBla2l0YWluZW5yeW91XCA7CivkvJ3pgZPpm4bkvJogPCBkZW5kb3VzaHV1a2FpXCA7CivlhavpnaLlha3oh4IgPCBoYWNoaW1lbnJvcHBpXCA7Civlrp/lipvogIUgPCBqaXRzdXJ5b2t1c2hhXCA7CivmiY3msJfnhaXnmbogPCBzYWlraWthbnBhdHN1XCA7CivmhJ/mg4Xooajnj74gPCBrYW5qb3VoeW91Z2VuXCA7Civmuaflh7rph48gPCB5dXVzaHV0c3VyeW91XCA7CivkurrnqK7lt67liKUgPCBqaW5zaHVzYWJldHN1XCA7Civoi7Hlm73nmbrpn7MgPCBlaWtva3VoYXRzdW9uXCA7CivnhKHpmZDmlbDliJcgPCBtdWdlbnN1dXJldHN1XCA7Civnhp/mha7mlq3ooYwgPCBqdWt1cnlvZGFua291XCA7CivnrZLkupXnrZIgPCB0c3V0c3VpZHp1dHN1XCA7Civnm7TkuqTluqfmqJkgPCBjaG9ra291emFoeW91XCA7CivljJflpKrlubPmtIsgPCBraXRhdGFpaGVpeW91XCA7CivnlLflo7DlkIjllLEgPCBkYW5zZWlnYXNzaG91XCA7Civog4Pohbjnl4XlraYgPCBpY2hvdWJ5b3VnYWt1XCA7CivkuInop5LplqLkv4IgPCBzYW5rYWt1a2Fua2VpXCA7Civnm7joo5zmgKfljp/nkIYgPCBzb3Vob3NlaWdlbnJpXCA7CivokrjmsJfmqZ/plqLou4ogPCBqb3VraWtpa2Fuc2hhXCA7CivljZjni6zkvJroposgPCB0YW5kb2t1a2Fpa2VuXCA7CivkvJrloILlj7ggPCBrYWlkb3VkenVrYXNhXCA7CivplpPmrYfnhrEgPCBrYW5rZXRzdW5ldHN1XCA7CivosqHnlKPnm7jntpogPCB6YWlzYW5zb3V6b2t1XCA7CivkuIrmmbrlpKflraYgPCBqb3VjaGlkYWlnYWt1XCA7CivmlofljJbkuovmpa3pg6ggPCBidW5rYWppZ3lvdWJ1XCA7CivnhKHoqJjlkI3npL7lgrUgPCBtdWtpbWVpc2hhc2FpXCA7Civlg6flurXnlJ/mtLsgPCBzb3VhbnNlaWthdHN1XCA7Civms5XlvovnlKjoqp4gPCBob3VyaXRzdXlvdWdvXCA7Civpm4zpm4Tpgbjmip4gPCBzaGl5dXVzZW50YWt1XCA7Civnmb7oirHnuZrkubEgPCBoeWFra2FyeW91cmFuXCA7Civpn7Pmpb3nmYLms5UgPCBvbmdha3VyeW91aG91XCA7CivkvY/msJHnmbvpjLIgPCBqdXVtaW50b3Vyb2t1XCA7Civmlq3lsaTlhpnnnJ8gPCBkYW5zb3VzaGFzaGluXCA7CivljaDpoJjlnLDluK8gPCBzZW5yeW91Y2hpdGFpXCA7Civolqzlk4HkvJrnpL4gPCB5YWt1aGluZ2Fpc2hhXCA7Civlh7rlj6Poqr/mn7sgPCBkZWd1Y2hpY2hvdXNhXCA7CivlkIjlkIzmhbDpnIrnpa0gPCBnb3Vkb3VpcmVpc2FpXCA7Civog73li5XlhY3nlqsgPCBub3Vkb3VtZW4nJ2VraVwgOwor5Zyo55WZ6YKm5Lq6IDwgemFpcnl1dWhvdWppblwgOwor6bqm6JeB57Sw5belIDwgbXVnaXdhcmFzYWlrdVwgOwor5ZOy5a2m55qEIDwgdGV0c3VnYWt1dGVraVwgOwor5bel6Iq4576O6KGTIDwga291Z2VpYmlqdXRzdVwgOwor6Kqt5ZSH6KGTIDwgZG9rdXNoaW5qdXRzdVwgOwor6Iiq56m65pS75pKDIDwga291a3V1a291Z2VraVwgOwor6KO46Zu755CDIDwgaGFkYWthZGVua3l1dVwgOwor6YeN6YeP6YG45omLIDwganV1cnlvdXNlbnNodVwgOwor6LWk56uL57696J22IDwgYWthdGF0ZWhhY2hvdVwgOwor54Gr54G95aCx55+l5qmfIDwga2FzYWlob3VjaGlraVwgOwor6JuL55m96LOqIDwgdGFucGFrdXNoaXRzdVwgOwor5oSb6bOl6YCx6ZaTIDwgYWljaG91c2h1dWthblwgOwor5bel5qWt5YyW5a2mIDwga291Z3lvdWthZ2FrdVwgOwor5oqA6KGT5o+Q5pC6IDwgZ2lqdXRzdXRlaWtlaVwgOwor5Lit5oCn5a2Q5pifIDwgY2h1dXNlaXNoaXNlaVwgOwor5o6S5rOE54mpIDwgaGFpc2V0c3VidXRzdVwgOwor6aOf6IKJ55uuIDwgc2hva3VuaWt1bW9rdVwgOwor5YWs5YWx5LqL5qWtIDwga291a3lvdWppZ3lvdVwgOwor5LiK6LaK5pys57eaIDwgam91ZXRzdWhvbnNlblwgOwor5rS75YuV5YqbIDwga2F0c3Vkb3VyeW9rdVwgOwor54Sh5YSf5aWR57SEIDwgbXVzaG91a2VpeWFrdVwgOwor6Zu75rOi5o6i55+l5qmfIDwgZGVucGF0YW5jaGlraVwgOwor6ZaD5YWJ6Zu755CDIDwgc2Vua291ZGVua3l1dVwgOwor5Zu957GN6KiA6KqeIDwga29rdXNla2lnZW5nb1wgOwor5a6a5rip5YuV54mpIDwgdGVpb25kb3VidXRzdVwgOwor56m65YmN57W25b6MIDwga3V1emVuemV0c3Vnb1wgOwor5L6155Wl55qEIDwgc2hpbnJ5YWt1dGVraVwgOwor5q2m5Yqb5aSW5LqkIDwgYnVyeW9rdWdhaWtvdVwgOwor5Yed6ZuG5YqbIDwgZ3lvdXNodXVyeW9rdVwgOwor5oi457GN5oqE5pysIDwga29zZWtpc2hvdWhvblwgOwor5pyd6a6u5Y2K5bO2IDwgY2hvdXNlbmhhbnRvdVwgOwor5Y+v5aSJ5oq15oqX5ZmoIDwga2FoZW50ZWlrb3VraVwgOwor6Z2e5bi45Y+s6ZuGIDwgaGlqb3VzaG91c2h1dVwgOwor5YWo6Iis5YmN5ZOoIDwgemVucGFuemVuc2hvdVwgOwor5aSn5LmX5LuP5pWZIDwgZGFpam91YnVra3lvdVwgOwor5YiG5p6Q6Kmm6aiTIDwgYnVuc2VraXNoaWtlblwgOwor5YWs5YuZ5ZOh6Kmm6aiTIDwga291bXVpbnNoaWtlblwgOwor5bm96ZyK5bGL5pW3IDwgeXV1cmVpeWFzaGlraVwgOwor5pyJ55Sj6ZqO57SaIDwgeXV1c2Fua2Fpa3l1dVwgOwor5qip5Yqb5pS/5rK7IDwga2Vucnlva3VzZWlqaVwgOwor6ISF6L+r6Zu76KmxIDwga3lvdWhha3VkZW53YVwgOwor6Ii56I236Ki85Yi4IDwgZnVuYW5pc2hvdWtlblwgOwor5omL5peX5L+h5Y+3IDwgdGViYXRhc2hpbmdvdVwgOwor5qCE6aSK5aSx6Kq/IDwgZWl5b3VzaGl0Y2hvdVwgOwor5L2c5rOB5oyH5pWwIDwgc2Fra3lvdXNoaXN1dVwgOwor55u45LqS6YCa5L+hIDwgc291Z290c3V1c2hpblwgOwor6KGo5bGk6Zuq5bSpIDwgaHlvdXNvdW5hZGFyZVwgOwor54G95a6z5a++562WIDwgc2FpZ2FpdGFpc2FrdVwgOwor5LqL5a6f6Kq/5p+7IDwgamlqaXRzdWNob3VzYVwgOwor5pel57WM5paw6IGeIDwgbmlra2Vpc2hpbmJ1blwgOwor5Lit6ZaT6YG45oyZIDwgY2h1dWthbnNlbmt5b1wgOwor5biC6ZW36YG45oyZIDwgc2hpY2hvdXNlbmt5b1wgOwor5rKI6ZmN5rW35bK4IDwgY2hpbmtvdWthaWdhblwgOwor542F5a2Q6aCtIDwgc2hpc2hpZ2FzaGlyYVwgOwor5a6H5a6Z6aOb6KGM5aOrIDwgdWNodXVoaWtvdXNoaVwgOwor56S+5Lya56aP56WJIDwgc2hha2FpZnVrdXNoaVwgOwor6KuW5Yqf6KGM6LOeIDwgcm9ua291a291c2hvdVwgOwor5a6f6Le16Lqs6KGMIDwgamlzc2Vua3l1dWtvdVwgOwor6Kaz5a+f5YqbIDwga2Fuc2F0c3VyeW9rdVwgOwor5q2j5Ymv5LqM6YCaIDwgc2VpZnVrdW5pdHN1dVwgOwor5Lqk5oSf56We57WMIDwga291a2Fuc2hpbmtlaVwgOwor5raI6LK76Z2p5ZG9IDwgc2hvdWhpa2FrdW1laVwgOwor6ISx5Yqb5oSfIDwgZGF0c3VyeW9rdWthblwgOwor5bCC5Lu76Kyb5birIDwgc2VuJyduaW5rb3VzaGlcIDsKK+aUr+WHuumhjSA8IHNoaXNodXRzdWdha3VcIDsKK+Wkp+mHj+eUn+eUoyA8IHRhaXJ5b3VzZWlzYW5cIDsKK+acgOmrmOapn+WvhiA8IHNhaWtvdWtpbWl0c3VcIDsKK+euoeW8pualveazlSA8IGthbmdlbmdha3Vob3VcIDsKK+aWsOWTgeWQjOanmCA8IHNoaW5waW5kb3V5b3VcIDsKK+Wkp+iZkOauuiA8IGRhaWd5YWt1c2F0c3VcIDsKK+WJjea4oemHkSA8IG1hZXdhdGFzaGlraW5cIDsKK+eci+itt+WppuWtpumZoiA8IGthbmdvZnVnYWt1aW5cIDsKK+WCmeiNkuiyr+iThCA8IGJpa291Y2hvY2hpa3VcIDsKK+iWhOW/l+W8seihjCA8IGhha3VzaGlqYWtrb3VcIDsKK+WLpOWKtOmajue0miA8IGtpbnJvdWthaWt5dXVcIDsKK+S5s+eZveiJsiA8IG55dXVoYWt1c2hva3VcIDsKK+aXpeWNsOmWouS/giA8IG5pY2hpaW5rYW5rZWlcIDsKK+e1gualreW8jyA8IHNodXVneW91c2hpa2lcIDsKK+mVt+acn+ioiOeUuyA8IGNob3VraWtlaWtha3VcIDsKK+eIhueZuueahCA8IGJha3VoYXRzdXRla2lcIDsKK+S4jeaZguedgOmZuCA8IGZ1amljaGFrdXJpa3VcIDsKK+aOkuazhOWZqOWumCA8IGhhaXNldHN1a2lrYW5cIDsKK+iLseaWh+ino+mHiCA8IGVpYnVua2Fpc2hha3VcIDsKK+WFjeiyrOadoemghSA8IG1lbnNla2lqb3Vrb3VcIDsKK+mJhOmBk+e3mui3ryA8IHRldHN1ZG91c2Vucm9cIDsKK+WNgeWtl+i7jemojuWjqyA8IGp1dWppZ3Vua2lzaGlcIDsKK+aUu+aSg+aFi+WLoiA8IGtvdWdla2l0YWlzZWlcIDsKK+Wumuacn+aYh+e1piA8IHRlaWtpc2hvdWt5dXVcIDsKK+iomOi/sOaWh+azlSA8IGtpanV0c3VidW5wb3VcIDsKK+iHo+exjemZjeS4iyA8IHNoaW5zZWtpa291a2FcIDsKK+eCremFuOmjsuaWmSA8IHRhbnNhbicnaW5yeW91XCA7CivluILloLTmi6HlpKcgPCBzaGlqb3VrYWt1ZGFpXCA7Civnsr7lr4bmqZ/morAgPCBzZWltaXRzdWtpa2FpXCA7CivnhKHmqZ/pq5jliIblrZAgPCBtdWtpa291YnVuc2hpXCA7CivmqZ/li5Xorablr58gPCBraWRvdWtlaXNhdHN1XCA7CivmuIXlhYPnr4AgPCBraXlvbW90b2J1c2hpXCA7CivlubTplpPlj47nm4ogPCBuZW5rYW5zaHV1ZWtpXCA7Civku7Loo4Hoo4HlrpogPCBjaHV1c2Fpc2FpdGVpXCA7Civpm7fopqrniLYgPCBrYW1pbmFyaW95YWppXCA7CivlgbXlr5/opoHlk6EgPCB0ZWlzYXRzdXlvdWluXCA7CivnpZ7ntYzos6ogPCBzaGlua2Vpc2hpdHN1XCA7Civmlofol53mmKXnp4sgPCBidW5nZWlzaHVuanV1XCA7CivkurrlvaLoip3lsYUgPCBuaW5neW91c2hpYmFpXCA7CivmsLTkuK3nnLzpj6EgPCBzdWljaHV1bWVnYW5lXCA7Civlhazluo/oia/kv5cgPCBrb3Vqb3J5b3V6b2t1XCA7CivmjqXnnYDlipsgPCBzZXRjaGFrdXJ5b2t1XCA7CivkupTmnIjluZ8gPCBzYXRzdWtpbm9ib3JpXCA7CivlqZrliY3kuqTmuIkgPCBrb256ZW5rb3VzaG91XCA7CivlpKrpmb3pu5LngrkgPCB0YWl5b3Vrb2t1dGVuXCA7CivkuIrlvqHkuIDkurogPCBrYW1pZ29pY2hpbmluXCA7CivkuLvopoHlt6Xmpa0gPCBzaHV5b3Vrb3VneW91XCA7CivkuIvnrYnli5XniakgPCBrYXRvdWRvdWJ1dHN1XCA7CivpgIbovLjlh7ogPCBneWFrdXl1c2h1dHN1XCA7CivnmoTkuK3njocgPCB0ZWtpY2h1dXJpdHN1XCA7Civlu7roqK3osrsgPCBrZW5zZXRzdWhpeW91XCA7Civoh6XolqrlmJfog4YgPCBnYXNoaW5zaG91dGFuXCA7CivmjIfmj67miYDmvJTnv5IgPCBzaGlraWpvZW5zaHV1XCA7CivoqLrnmYLmlK/mj7QgPCBzaGlucnlvdXNoaWVuXCA7Civou6LlnLDnmYLppIogPCB0ZW5jaGlyeW91eW91XCA7CivkuIfog73pgbjmiYsgPCBiYW4nJ25vdXNlbnNodVwgOwor5pWZ5Lya6Z+z5qW9IDwga3lvdWthaW9uZ2FrdVwgOwor5Y2D6LyJ5LiA6YGHIDwgc2VuemFpaWNoaWd1dVwgOwor5bGI5oqY546HIDwga3Vzc2V0c3VyaXRzdVwgOwor5aOy6LK35aWR57SEIDwgYmFpYmFpa2VpeWFrdVwgOwor5L2P5a6F5Zyw5bivIDwganV1dGFrdWNoaXRhaVwgOwor5rib6YCf6KOF572uIDwgZ2Vuc29rdXNvdWNoaVwgOwor5L2P5a6F5ZWP6aGMIDwganV1dGFrdW1vbmRhaVwgOwor6Ii56ZW35a6kIDwgc2VuY2hvdXNoaXRzdVwgOwor5YWN55ar6KGA5riFIDwgbWVuJydla2lrZXNzZWlcIDsKK+aguOWPjeW/nOeCiSA8IGtha3VoYW4nJ25vdXJvXCA7CivkuLvmlZnlrqQgPCBzaHVreW91c2hpdHN1XCA7CivmlL7lsITnt5rlraYgPCBob3VzaGFzZW5nYWt1XCA7CivmtYHpgJrntYzot68gPCByeXV1dHN1dWtlaXJvXCA7CivkuozphbjljJbnqpLntKAgPCBuaXNhbmthY2hpc3NvXCA7CivlsIvluLjkuIDmp5ggPCBqaW5qb3VpY2hpeW91XCA7Civlm73mnInosqHnlKMgPCBrb2t1eXV1emFpc2FuXCA7CivluILmsJHpmo7ntJogPCBzaGltaW5rYWlreXV1XCA7CivoqIDoqp7nn6XorZggPCBnZW5nb2NoaXNoaWtpXCA7CivlhazlhbHmlL7pgIEgPCBrb3VreW91aG91c291XCA7CivlrqTlhoXmpb0gPCBzaGl0c3VuYWlnYWt1XCA7CivmlpHnirbntYTnuZQgPCBoYW5qb3Vzb3NoaWtpXCA7Civkurrmg4XoqbEgPCBuaW5qb3ViYW5hc2hpXCA7Civph43niIbmkoPmqZ8gPCBqdXViYWt1Z2VraWtpXCA7CivlqZrlpJbkuqTmuIkgPCBrb25nYWlrb3VzaG91XCA7Civku7Loo4Hoo4HliKQgPCBjaHV1c2Fpc2FpYmFuXCA7Civkvq/niLXlpKvkurogPCBrb3VzaGFrdWZ1amluXCA7Civmv4Pnt5HoibIgPCBub3VyeW9rdXNob2t1XCA7CivmnInoibLph47oj5wgPCB5dXVzaG9rdXlhc2FpXCA7Civpm4blm6PoqLToqJ8gPCBzaHV1ZGFuc29zaG91XCA7CivkuIDmrKHnlKPmpa0gPCBpY2hpamlzYW5neW91XCA7Civnt7Tnv5LkuI3otrMgPCByZW5zaHV1YnVzb2t1XCA7CivllYboiLnlrabmoKEgPCBzaG91c2VuZ2Fra291XCA7Civpuqbol4HonLvom4kgPCBtdWdpd2FyYXRvbmJvXCA7Civoh6rli5Xou4rpm7voqbEgPCBqaWRvdXNoYWRlbndhXCA7CivmnInpmZDpm4blkIggPCB5dXVnZW5zaHV1Z291XCA7Civov73liqDmlpnph5EgPCB0c3Vpa2FyeW91a2luXCA7CivOoOS4remWk+WtkCA8IHBhaWNodXVrYW5zaGlcIDsKK+mBoOmalOaVmeiCsiA8IGVua2FrdWt5b3Vpa3VcIDsKK+iEs+iEiumrhOa2siA8IG5vdXNla2l6dWlla2lcIDsKK+aDheWgseWPr+imluWMliA8IGpvdWhvdWthc2hpa2FcIDsKK+adseilv+WNl+WMlyA8IHRvdXphaW5hbmJva3VcIDsKK+ioseWuuee3mumHjyA8IGt5b3lvdXNlbnJ5b3VcIDsKK+ato+acreWApOautSA8IHNob3VmdWRhbmVkYW5cIDsKK+W/nOaOpeWupCA8IG91c2V0c3VzaGl0c3VcIDsKK+W3ruWIpemWoueojiA8IHNhYmV0c3VrYW56ZWlcIDsKK+S4reetieWtpuagoSA8IGNodXV0b3VnYWtrb3VcIDsKK+euoeW8pualveWboyA8IGthbmdlbmdha3VkYW5cIDsKK+S+teeVpeWbvSA8IHNoaW5yeWFrdWtva3VcIDsKK+WvhOeUn+eUn+eJqSA8IGtpc2Vpc2VpYnV0c3VcIDsKK+S4u+aoqeWbnuW+qSA8IHNodWtlbmthaWZ1a3VcIDsKK+S4oemDqOelnumBkyA8IHJ5b3VidXNoaW50b3VcIDsKK+S+jeawl+izqiA8IHNhbXVyYWlrYXRhZ2lcIDsKK+eUs+i+vOabuCA8IG1vdXNoaWtvbWlzaG9cIDsKK+e1ueW4g+S4gOW3uyA8IGtlbnB1aGl0b21ha2lcIDsKK+mBjuWcp+WvhuavlCA8IGthYXRzdW1pdHN1aGlcIDsKK+aRguawj++8ku+8kOW6piA8IHNlc3NoaW5panV1ZG9cIDsKK+iHqueEtumBuOaKniA8IHNoaXplbnNlbnRha3VcIDsKK+ebtOiqrOazlSA8IGNob2t1c2V0c3Vob3VcIDsKK+S4i+eUuumiqCA8IHNoaXRhbWFjaGlmdXVcIDsKK+WPjeW/nOmAn+W6piA8IGhhbicnbm91c29rdWRvXCA7CivlsI/lnovotaTlrrbomoogPCBrb2dhdGFha2FpZWthXCA7CivlgbXlr5/ooZvmmJ8gPCB0ZWlzYXRzdWVpc2VpXCA7Civpo5/kuK3mr5IgPCBzaG9rdWNodXVkb2t1XCA7CivmraPlia/orbDplbcgPCBzZWlmdWt1Z2ljaG91XCA7CivnlKPlh7rpq5ggPCBzYW5zaHV0c3VkYWthXCA7CivnpZ7liY3ntZDlqZogPCBzaGluemVua2Vra29uXCA7Civms5XnmoTmiYvmrrUgPCBob3V0ZWtpc2h1ZGFuXCA7CivkvZzmpa3poJjln58gPCBzYWd5b3VyeW91aWtpXCA7CivlubTph5HoqLzmm7ggPCBuZW5raW5zaG91c2hvXCA7CivkuqTpgJrlpqjlrrMgPCBrb3V0c3V1Ym91Z2FpXCA7CivnlLrmnZHlkIjkvbUgPCBjaG91c29uZ2FwcGVpXCA7CivmlZnkvJrml4vms5UgPCBreW91a2Fpc2VucG91XCA7CivluZXol6nkvZPliLYgPCBiYWt1aGFudGFpc2VpXCA7CivnrKzkuIDljbDosaEgPCBkYWlpY2hpaW5zaG91XCA7CivnnJ/nqbrljIXoo4UgPCBzaGlua3V1aG91c291XCA7Civnm6Pmn7voqLzot6EgPCBrYW5zYXNob3VzZWtpXCA7CivoqpjlsI7pm7vmtYEgPCB5dXVkb3VkZW5yeXV1XCA7Civlvqnml6fkvZzmpa0gPCBmdWtreXV1c2FneW91XCA7Civkvpvlh7rnsbMgPCBreW91c2h1dHN1bWFpXCA7CivmkI3lrrPos6DlhJ8gPCBzb25nYWliYWlzaG91XCA7Civmg7Plg4/lporlqKAgPCBzb3V6b3VuaW5zaGluXCA7CivomZrlv4Plnabmh5AgPCBreW9zaGludGFua2FpXCA7CivogJDpnIfmp4vpgKAgPCB0YWlzaGlua291em91XCA7CivmnInpmZDntJrmlbAgPCB5dXVnZW5reXV1c3V1XCA7CivlopfoqK3njocgPCB6b3VzZXRzdXJpdHN1XCA7Civlm73lnJ/oqIjnlLsgPCBrb2t1ZG9rZWlrYWt1XCA7CivnlJ/lrZjnq7bkuokgPCBzZWl6b25reW91c291XCA7CivntZDlqZrmiqvpnLLlrrQgPCBrZWtrb25oaXJvdWVuXCA7CivluILmsJHpnanlkb0gPCBzaGltaW5rYWt1bWVpXCA7CivlnKflipvpjYsgPCBhdHN1cnlva3VuYWJlXCA7CivlpKfntbHpoJjpgbggPCBkYWl0b3VyeW91c2VuXCA7Civoo5znv5LmlZnogrIgPCBob3NodXVreW91aWt1XCA7Civlj7jku6TplbflrpggPCBzaGlyZWljaG91a2FuXCA7Civos4Pph5HkvZPns7sgPCBjaGluZ2ludGFpa2VpXCA7CivmtbfkuIroh6rooZvpmoogPCBrYWlqb3VqaWVpdGFpXCA7CivlhajkurrmlZnogrIgPCB6ZW5qaW5reW91aWt1XCA7CivlrpjmiL/plbflrpggPCBrYW5ib3VjaG91a2FuXCA7CivkvIHmpa3np5jlr4YgPCBraWd5b3VoaW1pdHN1XCA7Civmrrrkurrkuovku7YgPCBzYXRzdWppbmppa2VuXCA7Civlm6PmoJfnnLwgPCBkb25ndXJpbWFuYWtvXCA7CivlnKflipvph5wgPCBhdHN1cnlva3VnYW1hXCA7Civlh7bmgqrniq/nvaogPCBreW91YWt1aGFuemFpXCA7CivlpKnnhLbos4fmupAgPCB0ZW4nJ25lbnNoaWdlblwgOwor55m+5aeT5LiA5o+GIDwgaHlha3VzaG91aWtraVwgOwor5Y6f5qGI5aeU5ZOh5LyaIDwgZ2VuJydhbicnaWlua2FpXCA7CivmsJflr4blrqQgPCBraW1pdHN1c2hpdHN1XCA7Civnt4/lkIjlpKflraYgPCBzb3Vnb3VkYWlnYWt1XCA7Civku4/poILlsIrli50gPCBidWNob3Vzb25zaG91XCA7CivljYPlt67kuIfliKUgPCBzZW5zYWJhbmJldHN1XCA7CivpgbjmiYvmqKnoqablkIggPCBzZW5zaHVrZW5qaWFpXCA7CivntrLnirbntYTnuZQgPCBtb3Vqb3Vzb3NoaWtpXCA7CivnrKzkuIDpg6jplbcgPCBkYWlpY2hpYnVjaG91XCA7Civmupbmupbmsbrli50gPCBqdW5qdW5rZXNzaG91XCA7CivlpKflkozmsJHml48gPCB5YW1hdG9taW56b2t1XCA7Civlv5zmjqXkv4IgPCBvdXNldHN1Z2FrYXJpXCA7CivlnLDmrrvlpInli5UgPCBjaGlrYWt1aGVuZG91XCA7CivosqHmlL/mlLnpnakgPCB6YWlzZWlrYWlrYWt1XCA7CivlhbHlkIzoqIjnrpcgPCBreW91ZG91a2Vpc2FuXCA7CivlpbPmiL/oqZ4gPCBueW91Ym91a290b2JhXCA7CivlhpnnnJ/pm7vpgIEgPCBzaGFzaGluZGVuc291XCA7CivliIbliJflvI8gPCBidW5yZXRzdXNoaWtpXCA7CivkuI3oia/oqLrmlq0gPCBmdXJ5b3VzaGluZGFuXCA7CivmsLTnlKPlpKflraYgPCBzdWlzYW5kYWlnYWt1XCA7CivljZjlvI/ngavlsbEgPCB0YW5zaGlraWthemFuXCA7CivkuIDliIbkuIDljpggPCBpY2hpYnVpY2hpcmluXCA7Civlrp/lnLDmpJzoqLwgPCBqaXRjaGlrZW5zaG91XCA7CivljJfmuIXkuovlpIkgPCBob2t1c2hpbmppaGVuXCA7CivkurrpnaLnjaPlv4MgPCBuaW5tZW5qdXVzaGluXCA7Civopqrku7vlvI8gPCBzaGluJyduaW5zaGlraVwgOwor6KiI55S75q616ZqOIDwga2Vpa2FrdWRhbmthaVwgOwor55Sf5rS75YqbIDwgc2Vpa2F0c3VyeW9rdVwgOwor56S+5ZOh6aOf5aCCIDwgc2hhaW5zaG9rdWRvdVwgOwor6YO15L6/5paZ6YeRIDwgeXV1YmlucnlvdWtpblwgOwor5LqU5Y2B5LiJ5qyhIDwgZ29qdXVzYW50c3VnaVwgOwor5YSq5Yud5Yqj5pWXIDwgeXV1c2hvdXJlcHBhaVwgOwor5b+r6YCf5YiX6LuKIDwga2Fpc29rdXJlc3NoYVwgOwor6Zuj5rCR5p2h57SEIDwgbmFubWluam91eWFrdVwgOwor5Zu96Zqb5pS+6YCBIDwga29rdXNhaWhvdXNvdVwgOwor5YWt5Y2B5L2Z5beeIDwgcm9rdWp1dXlvc2h1dVwgOwor5oCl6KGM5YiX6LuKIDwga3l1dWtvdXJlc3NoYVwgOwor5pel5ZKM6KaL5Li7576pIDwgaGl5b3JpbWlzaHVnaVwgOwor5qOu5p6X5Zyw5bivIDwgc2hpbnJpbmNoaXRhaVwgOwor6Y6W5Zu95pS/562WIDwgc2Frb2t1c2Vpc2FrdVwgOwor5YW36LGh576O6KGTIDwgZ3VzaG91YmlqdXRzdVwgOwor5oeQ55+z5paZ55CGIDwga2Fpc2VraXJ5b3VyaVwgOwor57Ch5piT6aOf5aCCIDwga2FuJydpc2hva3Vkb3VcIDsKK+aal+m7kuWkp+mZuCA8IGFua29rdXRhaXJpa3VcIDsKK+mnhemVt+WupCA8IGVraWNob3VzaGl0c3VcIDsKK+WPjeWLlemdqeWRvSA8IGhhbmRvdWtha3VtZWlcIDsKK+WFreaguea4hea1hCA8IHJva2tvbnNob3Vqb3VcIDsKK+WVhualreS4u+e+qSA8IHNob3VneW91c2h1Z2lcIDsKK+S7ruijheiInui4j+S8miA8IGthc291YnV0b3VrYWlcIDsKK+S/oemgvOmGuOaIkCA8IHNoaW5yYWlqb3VzZWlcIDsKK+WFseWQjOWjsOaYjiA8IGt5b3Vkb3VzZWltZWlcIDsKK+mBruWFieWZqOWcn+WBtiA8IHNoYWtvdWtpZG9ndXVcIDsKK+WJsuW8leWIh+espiA8IHdhcmliaWtpa2lwcHVcIDsKK+S4i+awtOWHpueQhuWgtCA8IGdlc3Vpc2hvcmlqb3VcIDsKK+WGt+WNtOacn+mWkyA8IHJlaWt5YWt1a2lrYW5cIDsKK+aBmeiZqyA8IHRzdXRzdWdhbXVzaGlcIDsKK+S5neatu+S4gOeUnyA8IGt5dXVzaGlpc3Nob3VcIDsKK+S4reiPr+awkeWbvSA8IGNodXVrYW1pbmtva3VcIDsKK+WQiOeQhuS4u+e+qeiAhSA8IGdvdXJpc2h1Z2lzaGFcIDsKK+aLoeWjsOijhee9riA8IGtha3VzZWlzb3VjaGlcIDsKK+mBk+i3r+W7uuiorSA8IGRvdXJva2Vuc2V0c3VcIDsKK+S6uumAoOWuneefsyA8IGppbnpvdWhvdXNla2lcIDsKK+i8uOWHuuS/nemZuiA8IHl1c2h1dHN1aG9rZW5cIDsKK+W/heS/ruenkeebriA8IGhpc3NodXVrYW1va3VcIDsKK+e1puS4juaJgOW+lyA8IGt5dXV5b3Nob3Rva3VcIDsKK+attOWPsuWtpua0viA8IHJla2lzaGlnYWt1aGFcIDsKK+etieW3ruaVsOWIlyA8IHRvdXNhc3V1cmV0c3VcIDsKK+WQm+WtkOixueWkiSA8IGt1bnNoaWh5b3VoZW5cIDsKK+S4i+ihqOWPgueFpyA8IGthaHlvdXNhbnNob3VcIDsKK+WLouWKm+evhOWbsiA8IHNlaXJ5b2t1aGFuJydpXCA7CivpgJrosqjmlL/nrZYgPCB0c3V1a2FzZWlzYWt1XCA7Civni6zljaDkvIHmpa0gPCBkb2t1c2Vua2lneW91XCA7CivnibnmqKnpmo7ntJogPCB0b2trZW5rYWlreXV1XCA7CivmraPopo/mm7Lnt5ogPCBzZWlraWt5b2t1c2VuXCA7Civlgo3ogbTnhKHmlpkgPCBib3VjaG91bXVyeW91XCA7CivnlKPmpa3os4fmnKwgPCBzYW5neW91c2hpaG9uXCA7Civmpb3lmajmvJTlpY/ogIUgPCBnYWtraWVuc291c2hhXCA7Civnq4vnn7Ppm7vmqZ8gPCB0YXRlaXNoaWRlbmtpXCA7CivlpJzplpPkuK3lraYgPCB5YWthbmNodXVnYWt1XCA7Civosr/mmJPmkanmk6YgPCBib3Vla2ltYXNhdHN1XCA7CivlubTovKrlj7LlraYgPCBuZW5yaW5zaGlnYWt1XCA7Civlrrbku5jlqJggPCBpZXRzdWtpbXVzdW1lXCA7CivmqZ/morDnv7voqLMgPCBraWthaWhvbicneWFrdVwgOwor6YeR56eR546J5p2hIDwga2lua2FneW9rdWpvdVwgOwor5rCR6ZaT55mC5rOVIDwgbWlua2FucnlvdWhvdVwgOwor5oOF5rOB6Ki85ougIDwgam91a3lvdXNob3Vrb1wgOwor5Y+k5YW45Li7576p6ICFIDwga290ZW5zaHVnaXNoYVwgOwor5b+D5oK45Lqi6YCyIDwgc2hpbmtpa291c2hpblwgOwor5Zu95Zyf5Zyw55CG6ZmiIDwga29rdWRvY2hpcmlpblwgOwor5a6a5oCn5YiG5p6QIDwgdGVpc2VpYnVuc2VraVwgOwor5biC6KGX5YyW5Yy65Z+fIDwgc2hpZ2Fpa2FrdWlraVwgOwor54m56Kix5oqA6KGTIDwgdG9ra3lvZ2lqdXRzdVwgOwor5aCx6YGT5YaZ55yfIDwgaG91ZG91c2hhc2hpblwgOwor5pyA5L2O6LOD6YeRIDwgc2FpdGVpY2hpbmdpblwgOwor55m+5pel6I2JIDwgaHlha3VuaWNoaXNvdVwgOwor556s6ZaT6Zu75patIDwgc2h1bmthbmRlbmRhblwgOwor5bm06aCt5pWZ5pu4IDwgbmVudG91a3lvdXNob1wgOwor5p2x5rSL5q616YCaIDwgdG91eW91ZGFudHN1dVwgOwor54us5Y2g6LOH5pysIDwgZG9rdXNlbnNoaWhvblwgOwor5p2x5pa55pWZ5LyaIDwgdG91aG91a3lvdWthaVwgOwor6Zu75rCX5qmf6Zai6LuKIDwgZGVua2lraWthbnNoYVwgOwor6Ieq6Kaa55eH54q2IDwgamlrYWt1c2hvdWpvdVwgOwor5aSp5L2T6Kaz5risIDwgdGVudGFpa2Fuc29rdVwgOwor576k6ZuG6KGM5YuVIDwgZ3Vuc2h1dWtvdWRvdVwgOwor6KGG5Lq655Kw6KaWIDwgc2h1dWppbmthbnNoaVwgOwor6L+36LWw56We57WMIDwgbWVpc291c2hpbmtlaVwgOwor5oim55Wl5YW15ZmoIDwgc2Vucnlha3VoZWlraVwgOwor5YWI5Yi25pS75pKDIDwgc2Vuc2Vpa291Z2VraVwgOwor5pyJ57Wm5LyR5pqHIDwgeXV1a3l1dWt5dXVrYVwgOwor6KaL5a2m5peF6KGMIDwga2VuZ2FrdXJ5b2tvdVwgOwor5Zu95YaF57WM5riIIDwga29rdW5haWtlaXphaVwgOwor5a++56m65bCE5pKDIDwgdGFpa3V1c2hhZ2VraVwgOwor5q+U6LyD5a++54WnIDwgaGlrYWt1dGFpc2hvdVwgOwor5biC5Lit6YqA6KGMIDwgc2hpY2h1dWdpbmtvdVwgOwor5a6a54K56Kaz5risIDwgdGVpdGVua2Fuc29rdVwgOwor5L+D5oiQ5qC95Z+5IDwgc29rdXNlaXNhaWJhaVwgOwor5Lih5LiJ5pelIDwgcnlvdXNhbicnbmljaGlcIDsKK+izg+mHkeagvOW3riA8IGNoaW5naW5rYWt1c2FcIDsKK+aUr+mFjemajue0miA8IHNoaWhhaWthaWt5dXVcIDsKK+S6jOmHjemcsuWHuiA8IG5panV1cm9zaHV0c3VcIDsKK+WLleiEiOehrOWMliA8IGRvdW15YWt1a291a2FcIDsKK+mao+aOpemDqOmaiiA8IHJpbnNldHN1YnV0YWlcIDsKK+W7uuioreapn+aisCA8IGtlbnNldHN1a2lrYWlcIDsKK+S4iuWxpOmajue0miA8IGpvdXNvdWthaWt5dXVcIDsKK+S4ieaLneS5neaLnSA8IHNhbnBhaWt5dXVoYWlcIDsKK+mWi+agoeiomOW/teaXpSA8IGthaWtvdWtpbmVuYmlcIDsKK+S4jeWPr+efpeirluiAhSA8IGZ1a2FjaGlyb25zaGFcIDsKK+aXl+ihjOWIlyA8IGhhdGFneW91cmV0c3VcIDsKK+eJueauiuazleS6uiA8IHRva3VzaHVob3VqaW5cIDsKK+Wjq+mtguWVhuaJjSA8IHNoaWtvbnNob3VzYWlcIDsKK+WCt+eXheaNleiZnCA8IHNob3VieW91aG9yeW9cIDsKK+eEoeaAp+eUn+auliA8IG11c2Vpc2Vpc2hva3VcIDsKK+ecieWUvueJqSA8IG1heXV0c3ViYW1vbm9cIDsKK+iyoeaUv+aUv+etliA8IHphaXNlaXNlaXNha3VcIDsKK+mZuOS4iuertuaKgCA8IHJpa3Vqb3VreW91Z2lcIDsKK+WNmuimp+W8t+iomCA8IGhha3VyYW5reW91a2lcIDsKK+S6uuaoqeS+teWusyA8IGppbmtlbnNoaW5nYWlcIDsKK+e3j+mgmOaBr+WtkCA8IHNvdXJ5b3VtdXN1a29cIDsKK+mAsuihjOS/giA8IHNoaW5rb3VnYWthcmlcIDsKK+iPnOmjn+S4u+e+qSA8IHNhaXNob2t1c2h1Z2lcIDsKK+eEoeiomOWQjeWCteaoqSA8IG11a2ltZWlzYWlrZW5cIDsKK+i1pOWklueZuuaVoyA8IHNla2lnYWloYXNzYW5cIDsKK+ihm+aYn+mAmuS/oSA8IGVpc2VpdHN1dXNoaW5cIDsKK+S6uuWToeWJiua4myA8IGppbicnaW5zYWt1Z2VuXCA7Civli5XmpI3niakgPCBkb3VzaG9rdWJ1dHN1XCA7CivnjoflhYjouqzooYwgPCBzb3NzZW5reXV1a291XCA7CivlhY3nqI7miYDlvpcgPCBtZW56ZWlzaG90b2t1XCA7CivpmLLnuK7liqDlt6UgPCBib3VzaHVrdWtha291XCA7CivopIflvI/nsL/oqJggPCBmdWt1c2hpa2lib2tpXCA7Civosqzku7vliIbmi4UgPCBzZWtpbmluYnVudGFuXCA7CivmrablipvooYzkvb8gPCBidXJ5b2t1a291c2hpXCA7CivnlarntYTnt6jmiJAgPCBiYW5ndW1paGVuc2VpXCA7Civlhajms6Llj5fkv6HmqZ8gPCB6ZW5wYWp1c2hpbmtpXCA7Civlv4XopoHniakgPCBoaXRzdXlvdWJ1dHN1XCA7CivkvJHmga/mmYLplpMgPCBreXV1c29rdWppa2FuXCA7CivkuInou7jlrqQgPCBzYW5qaWt1c2hpdHN1XCA7Civkuozph43plqLnr4AgPCBuaWp1dWthbnNldHN1XCA7CivlvoXlkIjlrqQgPCBtYWNoaWFpc2hpdHN1XCA7CivljZrnianlraYgPCBoYWt1YnV0c3VnYWt1XCA7CivoprPlhYnnlKPmpa0gPCBrYW5rb3VzYW5neW91XCA7CivntZDntK7ooZMgPCBrZXNzYXRzdWp1dHN1XCA7CivljZrlvJXml4HoqLwgPCBoYWt1aW5ib3VzaG91XCA7Civmt7flhaXniakgPCBrb24nJ255dXVidXRzdVwgOwor5YWx6LKp5Lya56S+IDwga3lvdWhhbmdhaXNoYVwgOwor5o+a6Zm46Imm6ImHIDwgeW91cmlrdWthbnRlaVwgOwor5YWs5a6z5a++562WIDwga291Z2FpdGFpc2FrdVwgOwor6Zm95YuV5L2c5oimIDwgeW91ZG91c2FrdXNlblwgOwor5bmz5ZKM5Li7576p6ICFIDwgaGVpd2FzaHVnaXNoYVwgOwor6KqY5ouQ54qv5Lq6IDwgeXV1a2FpaGFuJyduaW5cIDsKK+WGheiHk+eWvuaCoyA8IG5haXpvdXNoaWtrYW5cIDsKK+S/ruWjq+irluaWhyA8IHNodXVzaGlyb25idW5cIDsKK+mrmOetieaVmeiCsiA8IGtvdXRvdWt5b3Vpa3VcIDsKK+a4rOmHj+apn+aisCA8IHNva3VyeW91a2lrYWlcIDsKK+mciuaEn+WVhuazlSA8IHJlaWthbnNob3Vob3VcIDsKK+WRqueJqeW0h+aLnSA8IGp1YnV0c3VzdXVoYWlcIDsKK+aWh+S6uuWiqOWuoiA8IGJ1bmppbmJva2tha3VcIDsKK+aJv+efpeS5i+WKqSA8IHNob3VjaGlub3N1a2VcIDsKK+i2iuW5tOiNieacrCA8IGV0c3VuZW5zb3Vob25cIDsKK+mdkuWkqeS6leS6iOeulyA8IGFvdGVuam91eW9zYW5cIDsKK+eKtuazgeaEj+WRs+irliA8IGpvdWt5b3VpbWlyb25cIDsKK+mAmuWLpOWIl+i7iiA8IHRzdXVraW5yZXNzaGFcIDsKK+WHuuW4reeOhyA8IHNodXNzZWtpcml0c3VcIDsKK+eyvumAsuaWmeeQhiA8IHNob3VqaW5yeW91cmlcIDsKK+S4u+WKm+mDqOmaiiA8IHNodXJ5b2t1YnV0YWlcIDsKK+a8ouWtl+aWh+WMluWcjyA8IGthbmppYnVua2FrZW5cIDsKK+mDt+Wcn+aWh+WtpiA8IGt5b3Vkb2J1bmdha3VcIDsKK+ebtOaOpeeojiA8IGNob2t1c2V0c3V6ZWlcIDsKK+WksealreiAhSA8IHNoaXRzdWd5b3VzaGFcIDsKK+atr+enkeaKgOW3peWjqyA8IHNoaWthZ2lrb3VzaGlcIDsKK+acn+acq+ippumokyA8IGtpbWF0c3VzaGlrZW5cIDsKK+mAo+mCpummluebuCA8IHJlbnBvdXNodXNob3VcIDsKK+aDheWgseW3peWtpiA8IGpvdWhvdWtvdWdha3VcIDsKK+eJp+eVnOalrSA8IGJva3VjaGlrdWd5b3VcIDsKK+S4g+WIhuS4ieWIhiA8IHNoaWNoaWJ1c2FuYnVcIDsKK+WPguiAg+izh+aWmSA8IHNhbmtvdXNoaXJ5b3VcIDsKK+a1t+S4iui8uOmAgei3ryA8IGthaWpvdXl1c291cm9cIDsKK+eLrOaWreWwguihjCA8IGRva3VkYW5zZW5rb3VcIDsKK+WFpeWtpuiAg+afuyA8IG55dXVnYWt1a291c2FcIDsKK+mBrembo+S/oeWPtyA8IHNvdW5hbnNoaW5nb3VcIDsKK+a1geWLleizh+eUoyA8IHJ5dXVkb3VzaGlzYW5cIDsKK+ani+evieeJqSA8IGtvdWNoaWt1YnV0c3VcIDsKK+S4i+Wbm+WNiuacnyA8IHNoaW1vc2hpaGFua2lcIDsKK+mBuOaKnuenkeebriA8IHNlbnRha3VrYW1va3VcIDsKK+ioreeri+iAhSA8IHNldHN1cml0c3VzaGFcIDsKK+aDheWgseaknOe0oiA8IGpvdWhvdWtlbnNha3VcIDsKK+mgguS4iuS8muirhyA8IGNob3Vqb3VrYWlkYW5cIDsKK+WFsea4iOe1hOWQiCA8IGt5b3VzYWlrdW1pYWlcIDsKK+WPguiAg+abuOebriA8IHNhbmtvdXNob21va3VcIDsKK+ayu+WuieitpuWvnyA8IGNoaWFua2Vpc2F0c3VcIDsKK+iIiOalremKgOihjCA8IGtvdWd5b3VnaW5rb3VcIDsKK+iqv+WBnOWnlOWToeS8miA8IGNob3V0ZWlpaW5rYWlcIDsKK+ihjOaUv+abuOWjqyA8IGd5b3VzZWlzaG9zaGlcIDsKK+mWoumAo+mgheebriA8IGthbnJlbmtvdW1va3VcIDsKK+mbo+ihjOiLpuihjCA8IG5hbmd5b3VrdWd5b3VcIDsKK+ihjOaWueS4jeaYjuiAhSA8IHl1a3VlZnVtZWlzaGFcIDsKK+mgkOmHkemAmuW4syA8IHlva2ludHN1dWNob3VcIDsKK+e2suiGnOWJpemboiA8IG1vdW1ha3VoYWt1cmlcIDsKK+i8uOWHuuaknOafuyA8IHl1c2h1dHN1a2Vuc2FcIDsKK+engeWFsSA8IHdhdGFrdXNoaWRvbW9cIDsKK+aMh+WumumKmOafhCA8IHNoaXRlaW1laWdhcmFcIDsKK+mFkuaxoOiCieaelyA8IHNodWNoaW5pa3VyaW5cIDsKK+WEquetieiznueKtiA8IHl1dXRvdXNob3Vqb3VcIDsKK+m7hOmHkeWIhuWJsiA8IG91Z29uYnVua2F0c3VcIDsKK+S/rue5leW3peWgtCA8IHNodXV6ZW5rb3Vqb3VcIDsKK+i2s+mVt+icgiA8IGFzaGluYWdhYmFjaGlcIDsKK+S6jOiAhemBuOS4gCA8IG5pc2hhc2VuJydpdHN1XCA7CivnspjmtrLos6ogPCBuZW4nJ2VraXNoaXRzdVwgOwor56eB5LqLIDwgd2F0YWt1c2hpZ290b1wgOwor6I+M6aGe5a2m6ICFIDwga2lucnVpZ2FrdXNoYVwgOwor5aSW5Zu96YO15L6/IDwgZ2Fpa29rdXl1dWJpblwgOwor5Lqk6YCa5Zyw542EIDwga291dHN1dWppZ29rdVwgOwor6ZuG5Zuj57WQ5amaIDwgc2h1dWRhbmtla2tvblwgOwor5oSb546p5YuV54mpIDwgYWlnYW5kb3VidXRzdVwgOwor6ZaT5o6l6Kmx5rOVIDwga2Fuc2V0c3V3YWhvdVwgOwor5a2m55Sf6YOo6ZW3IDwgZ2FrdXNlaWJ1Y2hvdVwgOwor6Zuy5b2i5a6a6KaPIDwga3Vtb2dhdGFqb3VnaVwgOwor5YCL5Lq655qE5oSP6KaLIDwga29qaW50ZWtpaWtlblwgOwor5bGL5aSW5bqD5ZGKIDwgb2t1Z2Fpa291a29rdVwgOwor5Lqh5ZG95paH5a2mIDwgYm91bWVpYnVuZ2FrdVwgOwor5YyX5Zu96LWk5rW36ICBIDwgaG9ra29rdWFrYWViaVwgOwor6YCj57aa6Zai5pWwIDwgcmVuem9rdWthbnN1dVwgOwor5bm96ZyK6KmxIDwgeXV1cmVpYmFuYXNoaVwgOwor562G6Leh6ZGR5a6aIDwgaGlzc2VraWthbnRlaVwgOwor5ZCM6LOq55qEIDwgZG91c2hpdHN1dGVraVwgOwor5buD54mp5Yip55SoIDwgaGFpYnV0c3VyaXlvdVwgOwor6LuK5Lih5Lya56S+IDwgc2hhcnlvdWdhaXNoYVwgOwor6bq76Jas5bi457+SIDwgbWF5YWt1am91c2h1dVwgOwor5LiN5b6X6KaB6aCYIDwgZnV0b2t1eW91cnlvdVwgOwor5bGx5bKz5Zyw5bivIDwgc2FuZ2FrdWNoaXRhaVwgOwor5ZWP6aGM6aCY5Z+fIDwgbW9uZGFpcnlvdWlraVwgOwor5Z+3552A5b+DIDwgc2h1dWNoYWt1c2hpblwgOwor5YCL5Yil6LKp5aOyIDwga29iZXRzdWhhbmJhaVwgOwor5bmz6KGh5oSf6KaaIDwgaGVpa291a2Fua2FrdVwgOwor5YaF5Zu96YO15L6/IDwgbmFpa29rdXl1dWJpblwgOwor5Yqb6Zai5L+CIDwgY2hpa2FyYWthbmtlaVwgOwor5aCx6YGT55Wq57WEIDwgaG91ZG91YmFuZ3VtaVwgOwor57SZ5LiK6KiI55S7IDwgc2hpam91a2Vpa2FrdVwgOwor5LqM6YeN5Zu957GNIDwgbmlqdXVrb2t1c2VraVwgOwor6KGM5pS/6Ki06KifIDwgZ3lvdXNlaXNvc2hvdVwgOwor57W257iB5oq15oqXIDwgemV0c3VlbnRlaWtvdVwgOwor5Yy/5ZCN5om56KmVIDwgdG9rdW1laWhpaHlvdVwgOwor6ZW35pyf5Zu95YK1IDwgY2hvdWtpa29rdXNhaVwgOwor5YWJ57ea55mC5rOVIDwga291c2VucnlvdWhvdVwgOwor5rWB5YuV6LOH5pysIDwgcnl1dWRvdXNoaWhvblwgOwor6Ki85Yi45biC5aC0IDwgc2hvdWtlbnNoaWpvdVwgOwor54OP6Iq75rKZ5pGp5aaZ546LIDwgdXN1c2FtYW15b3VvdVwgOwor5bu66Kit5bel5LqLIDwga2Vuc2V0c3Vrb3VqaVwgOwor5aSJ5oWL5oCn5qyyIDwgaGVudGFpc2VpeW9rdVwgOwor56m65Lit57Sw6I+MIDwga3V1Y2h1dXNhaWtpblwgOwor5Luj6YeR5byV5o+bIDwgZGFpa2luaGlraWthZVwgOwor6Iy255Wq54uC6KiAIDwgY2hhYmFua3lvdWdlblwgOwor5Lqk6YCa6KaP5YmHIDwga291dHN1dWtpc29rdVwgOwor54mp6LOq55qEIDwgYnVzc2hpdHN1dGVraVwgOwor54++54mp55u45aC0IDwgZ2VuYnV0c3Vzb3ViYVwgOwor5p2f57ib55CG6KuWIDwgc29rdWJha3VyaXJvblwgOwor5YWs5q2j6Ki85pu4IDwga291c2Vpc2hvdXNob1wgOwor5ZCM55uf5oCg5qWtIDwgZG91bWVpdGFpZ3lvdVwgOwor6KGM5YuV5pa56YedIDwga291ZG91aG91c2hpblwgOwor6YGp5q2j5L6h5qC8IDwgdGVraXNlaWtha2FrdVwgOwor5Lq656iu5pS56ImvIDwgamluc2h1a2FpcnlvdVwgOwor5L2/6YCU5LiN5piO6YeRIDwgc2hpdG9mdW1laWtpblwgOwor5Y2K5rWB5YuV5L2TIDwgaGFucnl1dWRvdXRhaVwgOwor5pmu5LuP5oim5LqJIDwgZnVmdXRzdXNlbnNvdVwgOwor6JK455m654axIDwgam91aGF0c3VuZXRzdVwgOwor5LqM6YeN57WQ5ZCIIDwgbmlqdXVrZXRzdWdvdVwgOwor5YWN6LKs54m55qipIDwgbWVuc2VraXRva2tlblwgOwor5oey5oiS5Yem5YiGIDwgY2hvdWthaXNob2J1blwgOwor5LiN5b+D5b6X6ICFIDwgZnVrb2tvcm9lbW9ub1wgOwor6LGq5pS+56OK6JC9IDwgZ291aG91cmFpcmFrdVwgOwor6Imm56Cy5bCE5pKDIDwga2FucG91c2hhZ2VraVwgOwor6Zai5pWw6Kej5p6QIDwga2Fuc3V1a2Fpc2VraVwgOwor5rCR5Li75YyW6YGL5YuVIDwgbWluc2h1a2F1bmRvdVwgOwor5aSp5rCX55u46KuH5omAIDwgdGVua2lzb3VkYW5qb1wgOwor6YCa5L+h6Kyb5bqnIDwgdHN1dXNoaW5rb3V6YVwgOwor5aSW6LKo542y5b6XIDwgZ2Fpa2FrYWt1dG9rdVwgOwor5Y+C5Yqg5biM5pyb6ICFIDwgc2Fua2FraWJvdXNoYVwgOwor5oeQ55aR5Li7576p6ICFIDwga2FpZ2lzaHVnaXNoYVwgOwor6Zu75rCX5rq25o6lIDwgZGVua2l5b3VzZXRzdVwgOwor5ZCu55mw6IiQ55eUIDwgc2VuJyd5b3VzaGlqaVwgOwor5Yq05YON5p2h5Lu2IDwgcm91ZG91am91a2VuXCA7CivlpJblm73oiKrot68gPCBnYWlrb2t1a291cm9cIDsKK+S8nemAgemAn+W6piA8IGRlbnNvdXNva3Vkb1wgOwor5LiA5pys6Kq/5a2QIDwgaXBwb25kam91c2hpXCA7CivlopzokL3kuovmlYUgPCB0c3VpcmFrdWppa29cIDsKK+iWqeaRqemWpSA8IHNhdHN1bWFiYXRzdVwgOwor6KaW6IG0546HIDwgc2hpY2hvdXJpdHN1XCA7Civnt5rpppnoirHngasgPCBzZW5rb3VoYW5hYmlcIDsKK+adseS6rOmDveaUvyA8IHRvdWt5b3V0b3NlaVwgOwor6LuN5LqL55Sj5qWtIDwgZ3VuamlzYW5neW91XCA7Civku6PnkIbniafluKsgPCBkYWlyaWJva3VzaGlcIDsKK+S4ieWNgeS4ieaJgCA8IHNhbmp1dXNhbnNob1wgOwor5LiA5qyh57ea6LyqIDwgaWNoaWppc2VucmluXCA7CivnlbPmsLTnt7QgPCB0YXRhbWlzdWlyZW5cIDsKK+S+oeagvOWkieWLlSA8IGtha2FrdWhlbmRvdVwgOwor5oKg5oKg6Ieq6YGpIDwgeXV1eXV1aml0ZWtpXCA7CivlsbHntKvmsLTmmI4gPCBzYW5zaGlzdWltZWlcIDsKK+W5leWDmumVtyA8IGJha3VyeW91Y2hvdVwgOwor56m66Ly46LKo54mpIDwga3V1eXVrYW1vdHN1XCA7CivoprPlhYnos4fmupAgPCBrYW5rb3VzaGlnZW5cIDsKK+imluimmuiogOiqniA8IHNoaWtha3VnZW5nb1wgOwor6bq76Jas5bi455SoIDwgbWF5YWt1am91eW91XCA7Civml6XmnJ3ovp7lhbggPCBuaXRjaG91aml0ZW5cIDsKK+W6l+mgreWCteWIuCA8IHRlbnRvdXNhaWtlblwgOwor54mI5qip5omA5pyJIDwgaGFua2Vuc2hveXV1XCA7CivkuIDms4rooYzou40gPCBpcHBha3Vrb3VndW5cIDsKK+mdkuepuuW4guWgtCA8IGFvem9yYXNoaWpvdVwgOwor6ZaL56Wo57WQ5p6cIDwga2FpaHlvdWtla2thXCA7CivljZjni6zorJvlkowgPCB0YW5kb2t1a291d2FcIDsKK+i/keS7o+enkeWtpiA8IGtpbmRhaWthZ2FrdVwgOwor54Sh56We6KuW6ICFIDwgbXVzaGlucm9uc2hhXCA7CivluILorbDkvJrorbDlk6EgPCBzaGlnaWthaWdpaW5cIDsKK+ePvuWun+eahCA8IGdlbmppdHN1dGVraVwgOwor55S75LiA55qEIDwga2FrdWl0c3V0ZWtpXCA7CivmnInlvaLosqHnlKMgPCB5dXVrZWl6YWlzYW5cIDsKK+ays+WyuOauteS4mCA8IGthZ2FuZGFua3l1dVwgOwor5aSq6Zm95YWJ57eaIDwgdGFpeW91a291c2VuXCA7CivljbjphZLosqkgPCBvcm9zaGlzaHVoYW5cIDsKK+WEhOS4h+mVt+iAhSA8IG9rdW1hbmNob3VqYVwgOwor5YyW57Kn55+z6bm4IDwga2VzaG91c2Vra2VuXCA7CivoqIDoqp7nmYLms5UgPCBnZW5nb3J5b3Vob3VcIDsKK+WuieWumuaIkOmVtyA8IGFudGVpc2VpY2hvdVwgOwor56We5qip5pS/5rK7IDwgc2hpbmtlbnNlaWppXCA7Civopqrml6XlrrYgPCBzaGluJyduaWNoaWthXCA7Civoh7PkuIrlkb3ku6QgPCBzaGlqb3VtZWlyZWlcIDsKK+WGheWHuuihgCA8IG5haXNodWtrZXRzdVwgOwor5Lit5aSu5aeU5ZOh5LyaIDwgY2h1dW91aWlua2FpXCA7CivmvaTnrYbmlpkgPCBqdW5waXRzdXJ5b3VcIDsKK+mfs+alvee+juWtpiA8IG9uZ2FrdWJpZ2FrdVwgOwor5Yq05YON5aSn6IejIDwgcm91ZG91ZGFpamluXCA7CivnlLDoiI7kvo0gPCBpbmFrYXphbXVyYWlcIDsKK+mZjeagvOS6uuS6iyA8IGtvdWtha3VqaW5qaVwgOwor6YeR6YeY5rWBIDwga2FuYWt1Z2lyeXV1XCA7CivnqpLntKDogqXmlpkgPCBjaGlzc29oaXJ5b3VcIDsKK+i7jemDqOeLrOijgSA8IGd1bmJ1ZG9rdXNhaVwgOwor5YWs5YuZ55a+55eFIDwga291bXVzaGlwcGVpXCA7CivoirHngavlpKfkvJogPCBoYW5hYml0YWlrYWlcIDsKK+WJteS9nOWKmyA8IHNvdXNha3VyeW9rdVwgOwor5Y2z5oim5YqbIDwgc29rdXNlbnJ5b2t1XCA7CivooYzpm7LmtYHmsLQgPCBrb3V1bnJ5dXVzdWlcIDsKK+WPjeWvvuioiuWVjyA8IGhhbnRhaWppbm1vblwgOwor5pa55ZCR6Lui5o+bIDwgaG91a291dGVua2FuXCA7CivnhKHnt5rmioDooZMgPCBtdXNlbmdpanV0c3VcIDsKK+iJruS4i+iJruS4iiA8IGdvbmthZ29uc2hvdVwgOwor5ous57SE562LIDwga2F0c3V5YWt1a2luXCA7CivmnKrmnaXlrozkuoYgPCBtaXJhaWthbnJ5b3VcIDsKK+WJjemAsumDqOmaiiA8IHplbnNoaW5idXRhaVwgOwor5pei57SE5YiG5pWwIDwga2l5YWt1YnVuc3V1XCA7CivoqqzlvpflipsgPCBzZXR0b2t1cnlva3VcIDsKK+WFrOWWtuS9j+WuhSA8IGtvdWVpanV1dGFrdVwgOwor55uj5p+75aCx5ZGKIDwga2Fuc2Fob3Vrb2t1XCA7CivpkJjmkp7loIIgPCBrYW5ldHN1a2lkb3VcIDsKK+aciOe1jOWRqOacnyA8IGdla2tlaXNodXVraVwgOwor56eR5a2m6ZuR6KqMIDwga2FnYWt1emFzc2hpXCA7CivpgJrosqjntbHlkIggPCB0c3V1a2F0b3Vnb3VcIDsKK+WvvuWcsOmAn+W6piA8IHRhaWNoaXNva3Vkb1wgOwor5a6Y5YOa5Li7576pIDwga2FucnlvdXNodWdpXCA7Civml6flvaLlvI8gPCBreXV1a2Vpc2hpa2lcIDsKK+m7hOeOieefsyA8IGtvdWd5b2t1c2VraVwgOwor5b6h6Kq/5a2Q6ICFIDwgb2Nob3VzaGltb25vXCA7Civlrp/pqJPlrqQgPCBqaWtrZW5zaGl0c3VcIDsKK+S6jOi2s+S4ieaWhyA8IG5pc29rdXNhbm1vblwgOwor6YW45oCn6IKl5paZIDwgc2Fuc2VpaGlyeW91XCA7CivoqIDmlofkuIDoh7QgPCBnZW5idW4nJ2l0Y2hpXCA7Civlr4bmvIHogIUgPCBtaXRzdXJ5b3VzaGFcIDsKK+WFseWQjOeuoeeQhiA8IGt5b3Vkb3VrYW5yaVwgOwor6IOD6YW46YGO5aSa55eHIDwgaXNhbmthdGFzaG91XCA7CivmtbflpJbml4XooYwgPCBrYWlnYWlyeW9rb3VcIDsKK+S4jeWvqeWwi+WVjyA8IGZ1c2hpbmppbm1vblwgOwor6LKs5Lu76Lui5auBIDwgc2VraW5pbnRlbmthXCA7CivplbfmnJ/miYvlvaIgPCBjaG91a2l0ZWdhdGFcIDsKK+a9ruaxkOihqCA8IGNob3VzZWtpaHlvdVwgOwor57Wm5LiO5rC05rqWIDwga3l1dXlvc3VpanVuXCA7Civnmb3nhrHmiKYgPCBoYWt1bmV0c3VzZW5cIDsKK+W+k+WxnuevgCA8IGp1dXpva3VzZXRzdVwgOwor5bCR5pWw57K+6YutIDwgc2hvdXN1dXNlaWVpXCA7Civou6Lmj5vnpL7lgrUgPCB0ZW5rYW5zaGFzYWlcIDsKK+ayv+WyuOa8gealrSA8IGVuZ2FuZ3lvZ3lvdVwgOwor5oq85YiH5bizIDwgb3NoaWtpcmljaG91XCA7CivpibHnianlraYgPCBrb3VidXRzdWdha3VcIDsKK+S6pOmam+ekvuS8miA8IGtvdXNhaXNoYWthaVwgOwor5Yi26ZmQ5LqL6aCFIDwgc2VpZ2Vuamlrb2t1XCA7Civlt6blv4PlrqQgPCBzYXNoaW5zaGl0c3VcIDsKK+WIkeS6i+iyrOS7uyA8IGtlaWppc2VraW5pblwgOwor5re35ZCI54Gr6JasIDwga29uZ291a2F5YWt1XCA7CivmpbXlvanoibIgPCBnb2t1c2Fpc2hpa2lcIDsKK+WPjOWLmeWlkee0hCA8IHNvdW11a2VpeWFrdVwgOwor6IKd5b+D6KaBIDwga2Fuamlua2FuYW1lXCA7Civlj6TlhbjlrabogIUgPCBrb3Rlbmdha3VzaGFcIDsKK+eUn+a0u+aJtuWKqSA8IHNlaWthdHN1ZnVqb1wgOwor5bu656+J5qWtIDwga2VuY2hpa3VneW91XCA7Civmi5Lpo5/nl4cgPCBreW9zaG9rdXNob3VcIDsKK+eUqOebiueJqeaoqSA8IHlvdWVraWJ1a2tlblwgOwor54ax6Zu75a++IDwgbmV0c3VkZW50c3VpXCA7Civlh7rli6TmmYLplpMgPCBzaHVra2luamlrYW5cIDsKK+mOluS8neWLlSA8IGt1c2FyaWRlbmRvdVwgOwor5ouh5aSn546HIDwga2FrdWRhaXJpdHN1XCA7Civnm7jplqLkv4LmlbAgPCBzb3VrYW5rZWlzdXVcIDsKK+mDveW/mCA8IG1peWFrb3dhc3VyZVwgOwor56S+5Lya5L+d6ZqcIDwgc2hha2FpaG9zaG91XCA7CivljZTlkIzli5XkvZwgPCBreW91ZG91ZG91c2FcIDsKK+aDhee3kue6kue2vyA8IGpvdWNob3Rlbm1lblwgOwor56uL5oay5ZCb5Li7IDwgcmlra2Vua3Vuc2h1XCA7Civni4Lkv6HnmoQgPCBreW91c2hpbnRla2lcIDsKK+ihqOePvuWKmyA8IGh5b3VnZW5yeW9rdVwgOwor5Lit56uL6Z2iIDwgY2h1dXJpdHN1bWVuXCA7Civml4XliLjmn7voqLwgPCByeW9rZW5zYXNob3VcIDsKK+iyneauu+iZqyA8IGthaWdhcmFtdXNoaVwgOwor6JC96Iqx54u86JeJIDwgcmFra2Fyb3V6ZWtpXCA7CivkuIDnlarmmJ8gPCBpY2hpYmFuYm9zaGlcIDsKK+WMluWtpuijveWTgSA8IGthZ2FrdXNlaWhpblwgOwor6YGp5oCn5qSc5p+7IDwgdGVraXNlaWtlbnNhXCA7Civos4PlgJ/kurogPCBjaGluc2hha3VuaW5cIDsKK+eUn+WRveenkeWtpiA8IHNlaW1laWthZ2FrdVwgOwor5bel5L2c5qmf5qKwIDwga291c2FrdWtpa2FpXCA7Civlm7Pmm7jppKjlraYgPCB0b3Nob2thbmdha3VcIDsKK+S6uuWPo+WVj+mhjCA8IGppbmtvdW1vbmRhaVwgOwor5b6h55So5a2m6ICFIDwgZ295b3VnYWt1c2hhXCA7CivmsJflnKfphY3nva4gPCBraWF0c3VoYWljaGlcIDsKK+aZgumZkOeIhuW8viA8IGppZ2VuYmFrdWRhblwgOwor6Ieq54S25a++5pWwIDwgc2hpemVudGFpc3V1XCA7CivlpJzplpPmkq7lvbEgPCB5YWthbnNhdHN1ZWlcIDsKK+elnue1jOe5iue2rSA8IHNoaW5rZWlzZW4nJ2lcIDsKK+a1geWLleiyoOWCtSA8IHJ5dXVkb3VmdXNhaVwgOwor5pyA6auY6KiY6YyyIDwgc2Fpa291a2lyb2t1XCA7CivmlrDopo/kuovmpa0gPCBzaGlua2lqaWd5b3VcIDsKK+Wnk+WQjeWIpOaWrSA8IHNlaW1laWhhbmRhblwgOwor6KOF6aO+55qEIDwgc291c2hva3V0ZWtpXCA7Civlj43lr77ntabku5ggPCBoYW50YWlreXV1ZnVcIDsKK+a+seeyieizqiA8IGRlbnB1bnNoaXRzdVwgOwor5pWX5oim5oqV5omLIDwgaGFpc2VudG91c2h1XCA7CivmrabmvKLkuInpjq4gPCBidWthbnNhbmNoaW5cIDsKK+mbu+awl+mZsOaAp+W6piA8IGRlbmtpaW5zZWlkb1wgOwor5LiA5pyd5LiA5aSVIDwgaXRjaG91aXNzZWtpXCA7CivnhKHoqJjlkI3poJDph5EgPCBtdWtpbWVpeW9raW5cIDsKK+WutuWGheW3pealrSA8IGthbmFpa291Z3lvdVwgOwor5Y2D5pel6I2JIDwgc2VuJyduaWNoaXNvdVwgOwor5rWF5a2m6I+y5omNIDwgc2VuZ2FrdWhpc2FpXCA7Civmt7flkIjntYzmuIggPCBrb25nb3VrZWl6YWlcIDsKK+W4guawkeWbo+S9kyA8IHNoaW1pbmRhbnRhaVwgOwor5LyB5qWt6YCj5ZCIIDwga2lneW91cmVuZ291XCA7CivmmYLku6PmhJ/oppogPCBqaWRhaWthbmtha3VcIDsKK+S4g+S6lOiqvyA8IHNoaWNoaWdvY2hvdVwgOwor5Yip5bex5Li7576p6ICFIDwgcmlrb3NodWdpc2hhXCA7CivlhbHlkIzlm6DlrZAgPCBreW91ZG91aW5zaGlcIDsKK+S4gOaEj+WwguW/gyA8IGljaGlpc2Vuc2hpblwgOwor5qyn57Gz6Ku45Zu9IDwgb3ViZWlzaG9rb2t1XCA7Civpnanlkb3pgYvli5UgPCBrYWt1bWVpdW5kb3VcIDsKK+e0lOeyi+WfuemkiiA8IGp1bnN1aWJhaXlvdVwgOwor5YaN5LiJ5YaN5ZubIDwgc2Fpc2Fuc2Fpc2hpXCA7CivkuK3lm73mnI0gPCBjaHV1Z29rdWZ1a3VcIDsKK+W9ouiAjOS4iuWtpiA8IGtlaWppam91Z2FrdVwgOwor5Zyw5pa55Zuj5L2TIDwgY2hpaG91ZGFudGFpXCA7CivlhazmsJHlrabmoKEgPCBrb3VtaW5nYWtrb3VcIDsKK+S+oeagvOe1seWItiA8IGtha2FrdXRvdXNlaVwgOwor5oSP5Yyg55m76YyyIDwgaXNob3V0b3Vyb2t1XCA7Civpq5jlpKnljp8gPCB0YWthbWFnYWhhcmFcIDsKK+WPl+WLleWWq+eFmSA8IGp1ZG91a2l0c3VlblwgOwor6KO957y25bel5aC0IDwgc2Vpa2Fua291am91XCA7Civlm7rlvaLnh4PmlpkgPCBrb2tlaW5lbnJ5b3VcIDsKK+mDteS+v+eCuuabvyA8IHl1dWJpbmthd2FzZVwgOwor5YuY5a6a5L+CIDwga2Fuam91Z2FrYXJpXCA7Civlj6PpoK3lvIHoq5YgPCBrb3V0b3ViZW5yb25cIDsKK+eri+S9k+WMluWtpiA8IHJpdHRhaWthZ2FrdVwgOwor5ouY5p2f5YqbIDwga291c29rdXJ5b2t1XCA7Civlk4HooYzmlrnmraMgPCBoaW5rb3Vob3VzZWlcIDsKK+ayiOa+seeJqSA8IGNoaW5kZW5idXRzdVwgOwor6YGT5qiZIDwgbWljaGlzaGlydWJlXCA7Civlmajos6rnmoQgPCBraXNoaXRzdXRla2lcIDsKK+iyqeWjsuS+oeagvCA8IGhhbmJhaWtha2FrdVwgOwor5oGL5oSb57WQ5amaIDwgcmVuJydhaWtla2tvblwgOwor5YyX57Gz5Zyf5Lq6IDwgaG9rdWJlaWRvamluXCA7CivljYPml6XntIUgPCBzZW4nJ25pY2hpa291XCA7Civoh6jmtbflrabmoKEgPCByaW5rYWlnYWtrb3VcIDsKK+S4gOiqnuS4gOiqniA8IGljaGlnb2ljaGlnb1wgOwor5Zu95a625YWs5YuZ5ZOhIDwga29ra2Frb3VtdWluXCA7CivljYrlrpjljYrmsJEgPCBoYW5rYW5oYW5taW5cIDsKK+W7uuevieWtpiA8IGtlbmNoaWt1Z2FrdVwgOwor5pWX6KGA55eHIDwgaGFpa2V0c3VzaG91XCA7CivlpKflm73kuLvnvqkgPCB0YWlrb2t1c2h1Z2lcIDsKK+a0i+acjeeuquespSA8IHlvdWZ1a3VkYW5zdVwgOwor5LiA5pa56YCa6KGMIDwgaXBwb3V0c3V1a291XCA7Civlj4LogIPmlofnjK4gPCBzYW5rb3VidW5rZW5cIDsKK+S/oeS7sOeuh+adoSA8IHNoaW5rb3VrYWpvdVwgOwor6L6756S+IDwgdHN1aml5YXNoaXJvXCA7CivljYHkuIDmnIggPCBqdXVpY2hpZ2F0c3VcIDsKK+iii+aIuOajmiA8IGZ1a3Vyb3RvZGFuYVwgOwor5oud54mp5pWZIDwgaGFpYnV0c3VreW91XCA7CivmsJHplpPos4fmnKwgPCBtaW5rYW5zaGlob25cIDsKK+W+qeiukOW/gyA8IGZ1a3VzaHV1c2hpblwgOwor5LiA5rGB5LiA6I+cIDwgaWNoaWp1dWlzc2FpXCA7CivljYHnqK7nq7bmioAgPCBqaXNzaHVreW91Z2lcIDsKK+aXp+W5tOacqyA8IGt5dXVuZW5tYXRzdVwgOwor5aSx6IG36ICFIDwgc2hpc3Nob2t1c2hhXCA7CivlhoXlibLlvJUgPCB1Y2hpd2FyaWJpa2lcIDsKK+W4jOWcn+mhnuWFg+e0oCA8IGtpZG9ydWlnZW5zb1wgOwor5bmz5ZKM5YWx5a2YIDwgaGVpd2FreW91em9uXCA7CivljZjnt5rpgYvou6IgPCB0YW5zZW4nJ3VudGVuXCA7Civkuovlvozmib/oq74gPCBqaWdvc2hvdWRha3VcIDsKK+WHuueUo+eOhyA8IHNodXNzYW5yaXRzdVwgOwor5YaZ5a6f55qEIDwgc2hhaml0c3V0ZWtpXCA7CivmmKDlg4/kv6Hlj7cgPCBlaXpvdXNoaW5nb3VcIDsKK+WuieWFqOWvvuetliA8IGFuemVudGFpc2FrdVwgOwor55Sf55Sj57WE5ZCIIDwgc2Vpc2Fua3VtaWFpXCA7CivmjqXntprpp4UgPCBzZXRzdXpva3Vla2lcIDsKK+WxheS9j+awtOa6liA8IGt5b2p1dXN1aWp1blwgOwor6KO96YmE5qWtIDwgc2VpdGV0c3VneW91XCA7CivnrpfnlKjmlbDlrZcgPCBzYW4nJ3lvdXN1dWppXCA7Civlh7rnlJ/njocgPCBzaHVzc2Vpcml0c3VcIDsKK+WnieWmueS8muekviA8IHNoaW1haWdhaXNoYVwgOwor6YG45oyZ5YWs5aCxIDwgc2Vua3lva291aG91XCA7Civku4/lg4/kuozluqcgPCBidXRzdXpvdW5pemFcIDsKK+ims+WFieaXheihjCA8IGthbmtvdXJ5b2tvdVwgOwor56CU56m26Kqy6aGMIDwga2Vua3l1dWthZGFpXCA7Civph5Hmi77kuIflhoYgPCBraW5qdXVtYW4nJ2VuXCA7CivlsY7lsL/lh6bnkIYgPCBzaGlueW91c2hvcmlcIDsKK+edgOeJqeWnvyA8IGtpbW9ub3N1Z2F0YVwgOwor5ZWG5LqL5Lya56S+IDwgc2hvdWppZ2Fpc2hhXCA7CivnqY3mpbXnrZYgPCBzZWtreW9rdXNha3VcIDsKK+mbhuWQiOWgtOaJgCA8IHNodXVnb3ViYXNob1wgOwor5b2i5a656Kme5bm5IDwga2VpeW91c2hpa2FuXCA7CivmnaHku7blj43lsIQgPCBqb3VrZW5oYW5zaGFcIDsKK+Wwj+aWh+evgCA8IHNob3VidW5zZXRzdVwgOwor57WE57mU5YqbIDwgc29zaGlraXJ5b2t1XCA7Civkv6HlvpLkvJ3li5UgPCBzaGludG9kZW5kb3VcIDsKK+acieaWmemBk+i3ryA8IHl1dXJ5b3Vkb3Vyb1wgOwor5qWt5YuZ5aao5a6zIDwgZ3lvdW11Ym91Z2FpXCA7CivpmL/niYfkuK3mr5IgPCBhaGVuY2h1dWRva3VcIDsKK+e0sOiDnuiejeWQiCA8IHNhaWJvdXl1dWdvdVwgOwor5pat54ax5p2QIDwgZGFuJyduZXRzdXphaVwgOwor5ZCN5Lq65rCX6LOqIDwgbWVpamlua2F0YWdpXCA7Civpg7XmlL/lpKfoh6MgPCB5dXVzZWlkYWlqaW5cIDsKK+mbu+awl+aOg+mZpOapnyA8IGRlbmtpc291amlraVwgOwor5Lq65qip5pOB6K23IDwgamlua2VuJyd5b3Vnb1wgOwor5YWE5byf5Zan5ZipIDwga3lvdWRhaWdlbmthXCA7CivokZfkvZzniakgPCBjaG9zYWt1YnV0c3VcIDsKK+ebsua7heazlSA8IG1la3VyYW1lcHBvdVwgOwor5beh6Iiq6YCf5bqmIDwganVua291c29rdWRvXCA7CivkuIDlpJzlpKfoh6MgPCBpY2hpeWFkYWlqaW5cIDsKK+mZhOedgOWKmyA8IGZ1Y2hha3VyeW9rdVwgOwor542F5a2Q5aWu6L+FIDwgc2hpc2hpZnVuamluXCA7CivmvILmtYHmnKggPCBoeW91cnl1dWJva3VcIDsKK+e0s+Wjq+mdtCA8IHNoaW5zaGlndXRzdVwgOwor6Zao56eA5L2c5a62IDwga2Vpc2h1dXNha2thXCA7CivmtZrmuKvoiLkgPCBzaHVuc2V0c3VzZW5cIDsKK+a3seWxseeDjyA8IG1peWFtYWdhcmFzdVwgOwor5bCC6ZaA5a2m5qChIDwgc2VubW9uZ2Fra291XCA7CivmlLnpnanpgY7nqIsgPCBrYWlrYWt1a2F0ZWlcIDsKK+e3iuaApeaOque9riA8IGtpbmt5dXVzb2NoaVwgOwor55S756uc5aSp552bIDwgZ2FyeW91dGVuc2VpXCA7CivkuIDpgLLkuIDpgIAgPCBpc3NoaW4nJ2l0dGFpXCA7CivnlJ/oh63niakgPCBuYW1hZ3VzYW1vbm9cIDsKK+WumuW4uOeKtuaFiyA8IHRlaWpvdWpvdXRhaVwgOwor5a+p5Yik5b25IDwgc2hpbnBhbicneWFrdVwgOwor5oyH5pWw6Zai5pWwIDwgc2hpc3V1a2Fuc3V1XCA7CivnqY3mpbXnmoQgPCBzZWtreW9rdXRla2lcIDsKK+ippumok+enkeebriA8IHNoaWtlbmthbW9rdVwgOwor54G95a6z5pWR5YqpIDwgc2FpZ2Fpa3l1dWpvXCA7Civnmbrlo7LlhYMgPCBoYXRzdWJhaW1vdG9cIDsKK+WGtumHkeWtpuiAhSA8IHlha2luZ2FrdXNoYVwgOwor5Zyw5pa56YqA6KGMIDwgY2hpaG91Z2lua291XCA7Civku4/poILpnaIgPCBidXRjaG91ZHp1cmFcIDsKK+e1jOa4iOeZuuWxlSA8IGtlaXphaWhhdHRlblwgOwor54m55q6K5YW15ZmoIDwgdG9rdXNodWhlaWtpXCA7CivmtbfkuK3lhazlnJIgPCBrYWljaHV1a291ZW5cIDsKK+Wbo+S9k+aXheihjCA8IGRhbnRhaXJ5b2tvdVwgOwor5LiJ5Y+J56We57WMIDwgc2Fuc2FzaGlua2VpXCA7CivmrLLmsYLkuI3muoAgPCB5b2treXV1ZnVtYW5cIDsKK+iLpee0qyA8IHdha2FtdXJhc2FraVwgOwor57WC5aSc5Za25qWtIDwgc2h1dXlhZWlneW91XCA7CivlnLDkuIvntYTnuZQgPCBjaGlrYXNvc2hpa2lcIDsKK+iAkOmch+WutuWxiyA8IHRhaXNoaW5rYW9rdVwgOwor5q2j5LiJ6KeS5b2iIDwgc2Vpc2Fua2Fra2VpXCA7CivotbDooYzou4rnt5ogPCBzb3Vrb3VzaGFzZW5cIDsKK+epuuawl+iqv+aVtCA8IGt1dWtpY2hvdXNlaVwgOwor6YGL5YuV56We57WMIDwgdW5kb3VzaGlua2VpXCA7Civlj5fog47lkYrnn6UgPCBqdXRhaWtva3VjaGlcIDsKK+WPluW8lemrmCA8IHRvcmloaWtpZGFrYVwgOwor6Kej562U55So57SZIDwga2FpdG91eW91c2hpXCA7CivkuI3miYDlrZjogIUgPCBmdXNob3pvbm1vbm9cIDsKK+eVs+mwryA8IHRhdGFtaWl3YXNoaVwgOwor6ZeW5YWl6ICFIDwgY2hpbicnbnl1dXNoYVwgOwor5q+s5qCX6aCtIDwgaWdhZ3VyaWF0YW1hXCA7Civlu7rnr4nkuK0gPCBrZW5jaGlrdWNodXVcIDsKK+W8seWwj+WbvSA8IGpha3VzaG91a29rdVwgOwor5Yqg5bel55Sj5qWtIDwga2Frb3VzYW5neW91XCA7Civnmbrlo7LkuK0gPCBoYXRzdWJhaWNodXVcIDsKK+imj+agvOWOn+ahiCA8IGtpa2FrdWdlbicnYW5cIDsKK+WSjOmtgua0i+aJjSA8IHdha29uJyd5b3VzYWlcIDsKK+WPjeaIpumBi+WLlSA8IGhhbnNlbicndW5kb3VcIDsKK+iruOihjOeEoeW4uCA8IHNob2d5b3VtdWpvdVwgOwor5aWR57SE5pyf6ZaTIDwga2VpeWFrdWtpa2FuXCA7Civkurrmlofnp5HlraYgPCBqaW5idW5rYWdha3VcIDsKK+S4gOS6uuS4gOS6uiA8IGhpdG9yaWJpdG9yaVwgOwor5Yqx5oyv57Sg5a2QIDwgcmVpc2hpbnNvc2hpXCA7CivlvqnorpDliocgPCBmdWt1c2h1dWdla2lcIDsKK+Wuh+WumeW3peWtpiA8IHVjaHV1a291Z2FrdVwgOwor5LqL5YmN5pel5LuYIDwgaml6ZW5oaWR6dWtlXCA7Civoh6rlrrbmkp7nnYAgPCBqaWthZG91Y2hha3VcIDsKK+efs+eBsOiCpeaWmSA8IHNla2thaWhpcnlvdVwgOwor5YWs55uK5YSq5YWIIDwga291ZWtpeXV1c2VuXCA7CivkuIvku5XkuosgPCBzaGl0YXNoaWdvdG9cIDsKK+iWlOiWh+WNgeWtl+WboyA8IGJhcmFqdXVqaWRhblwgOwor5pel6LGK5pys57eaIDwgbmlwcG91aG9uc2VuXCA7Civnn7PmsrnljJblraYgPCBzZWtpeXVrYWdha3VcIDsKK+a2iOalteaApyA8IHNob3VreW9rdXNlaVwgOwor55u45a++6YCf5bqmIDwgc291dGFpc29rdWRvXCA7Civpu5LlrZflgJLnlKMgPCBrdXJvaml0b3VzYW5cIDsKK+mHkeasoOeXhSA8IGtpbmtldHN1YnlvdVwgOwor6IG06KaW546HIDwgY2hvdXNoaXJpdHN1XCA7CivlhoXmhoLlpJbmgqMgPCBuYWl5dXVnYWlrYW5cIDsKK+mWouaVsOepuumWkyA8IGthbnN1dWt1dWthblwgOwor5LuY5bGe55eF6ZmiIDwgZnV6b2t1YnlvdWluXCA7Civoh6jluorljLvlraYgPCByaW5zaG91aWdha3VcIDsKK+exs+a1t+WFtemaiiA8IGJlaWthaWhlaXRhaVwgOwor5rex5bGx5qGcIDwgbWl5YW1hemFrdXJhXCA7Civmi7HmiYvlgo3oprMgPCBrb3VzaHVib3VrYW5cIDsKK+mghuazlemXmOS6iSA8IGp1bnBvdXRvdXNvdVwgOwor6LOq5ZWP6ICFIDwgc2hpdHN1bW9uc2hhXCA7CivmiKbpl5jpmaPlnLAgPCBzZW50b3VqaW5jaGlcIDsKK+S4gOaMmeS4gOWLlSA8IGlra3lvaWNoaWRvdVwgOwor5aiB5ZqH5bCE5pKDIDwgaWtha3VzaGFnZWtpXCA7Civlrp/lnLDoqabpqJMgPCBqaXRjaGlzaGlrZW5cIDsKK+S4remWk+aZr+awlyA8IGNodXVrYW5rZWlraVwgOwor5Y+45pWZ5qip5bqnIDwgc2hpa3lvdWtlbnphXCA7CivnqbrntITmnZ8gPCBrYXJheWFrdXNva3VcIDsKK+WkieabtOWxpeattCA8IGhlbmtvdXJpcmVraVwgOwor6YCj5oim6YCj5pWXIDwgcmVuc2VucmVucGFpXCA7Civmra/mp73ohr/mvI8gPCBzaGlzb3Vub3Vyb3VcIDsKK+e0oOeykuWtkOirliA8IHNvcnl1dXNoaXJvblwgOwor6KGb5pif5Lit57aZIDwgZWlzZWljaHV1a2VpXCA7CivmjqXntproqZ4gPCBzZXRzdXpva3VzaGlcIDsKK+Wcp+W7tuW3peWgtCA8IGF0c3VlbmtvdWpvdVwgOwor5YiG5aip6Iel5bqKIDwgYnVuYmVuZ2FzaG91XCA7CivkurrpgKDntbnns7ggPCBqaW56b3VrZW5zaGlcIDsKK+eXlei3oeWZqOWumCA8IGtvbnNla2lraWthblwgOwor5oq56aaZ6a+oIDwgbWFra291a3VqaXJhXCA7Civom43lhYnloZfmlpkgPCBrZWlrb3V0b3J5b3VcIDsKK+WFrOWIpOiqv+afuyA8IGtvdWhhbmNob3VzYVwgOwor6YCj57Wh5Lya6K2wIDwgcmVucmFrdWthaWdpXCA7CivlhazmlZnopoHnkIYgPCBrb3VreW91eW91cmlcIDsKK+iKseebl+S6uiA8IGhhbmFudXN1Yml0b1wgOwor5Lm+54el5a6kIDwga2Fuc291c2hpdHN1XCA7CivpqqjokaPlk4HlupcgPCBrb3R0b3VoaW50ZW5cIDsKK+WNgeS6jOaMh+iFuCA8IGp1dW5pc2hpY2hvdVwgOwor55uy5pqmIDwgbWVrdXJhZ295b21pXCA7CivosqHmlL/llY/poYwgPCB6YWlzZWltb25kYWlcIDsKK+iogOiqnuWtpuiAhSA8IGdlbmdvZ2FrdXNoYVwgOwor5bC/5q+S55eHIDwgbnlvdWRva3VzaG91XCA7Civph5Hono3mqZ/plqIgPCBraW4nJ3l1dWtpa2FuXCA7CivnlLDlnJLoqankurogPCBkZW4nJ2Vuc2hpamluXCA7CivnrYnmr5TntJrmlbAgPCB0b3VoaWt5dXVzdXVcIDsKK+iFuem8kyA8IGhhcmF0c3VkenVtaVwgOwor6YGT5YyW5b256ICFIDwgZG91a2V5YWt1c2hhXCA7CivnmYfnmarnjokgPCBrYW5zaGFrdWRhbWFcIDsKK+a0pea0pea1pua1piA8IHRzdWR6dXVyYXVyYVwgOwor5Lm+54el5Zyw5bivIDwga2Fuc291Y2hpdGFpXCA7Civpn7Pnr4DkuLvpn7MgPCBvbnNldHN1c2h1b25cIDsKK+iIqua1t+aXpeiqjCA8IGtvdWthaW5pc3NoaVwgOwor5Y2K5bCB5bu65oCnIDwgaGFuaG91a2Vuc2VpXCA7CivmgYvmhJvplqLkv4IgPCByZW4nJ2Fpa2Fua2VpXCA7CivmiJDplbfpgY7nqIsgPCBzZWljaG91a2F0ZWlcIDsKK+mAo+W4r+S/neiovCA8IHJlbnRhaWhvc2hvdVwgOwor5b+D6IeT6IKl5aSnIDwgc2hpbnpvdWhpZGFpXCA7CivkuIDkurrniakgPCBpY2hpamluYnV0c3VcIDsKK+WNlOe0hOWbvSA8IGt5b3V5YWt1a29rdVwgOwor5aSp5aOM54Sh56quIDwgdGVuam91bXVreXV1XCA7CivlhajouqvpurvphZQgPCB6ZW5zaGlubWFzdWlcIDsKK+acq+S7o+eJqSA8IG1hdHN1ZGFpbW9ub1wgOwor5Zue57ea5Lqk5o+bIDwga2Fpc2Vua291a2FuXCA7CivovLjlhaXliLbpmZAgPCB5dW55dXVzZWlnZW5cIDsKK+WJg+WIgOiyoCA8IGthbWlzb3JpbWFrZVwgOwor5LiA6Laz5YWIIDwgaGl0b2FzaGlzYWtpXCA7CivmnpzniannsaAgPCBrdWRhbW9ub2thZ29cIDsKK+S4lumWk+ipsSA8IHNla2VuYmFuYXNoaVwgOwor6KGM5qW95a6iIDwga291cmFrdWt5YWt1XCA7Civmp4vpgKDkuI3ms4EgPCBrb3V6b3VmdWt5b3VcIDsKK+e0i+eZveidtiA8IG1vbnNoaXJvY2hvdVwgOwor5YWl5rmv5a6iIDwgbnl1dXRvdWt5YWt1XCA7Civoh6rlt7HlhbHlvbkgPCBqaWtva3lvdXlha3VcIDsKK+WvjOWjq+eBq+WxseW4ryA8IGZ1amlrYXphbnRhaVwgOwor6ZeH5Y+W5byVIDwgeWFtaXRvcmloaWtpXCA7Civmp4vmiJDliIblrZAgPCBrb3VzZWlidW5zaGlcIDsKK+aYn+W6p+aKleW9seapnyA8IHNlaXphdG91ZWlraVwgOwor5biC5aC05bGV6ZaLIDwgc2hpam91dGVua2FpXCA7CivlupfpoK3osqnlo7IgPCB0ZW50b3VoYW5iYWlcIDsKK+mAsuawtOW8jyA8IHNoaW5zdWlzaGlraVwgOwor5Luu5omV6YeRIDwga2FyaWJhcmFpa2luXCA7CivntJnlsZHnsaAgPCBrYW1pa3V6dWthZ29cIDsKK+S5vueHpeWNtSA8IGthbnNvdXRhbWFnb1wgOwor5ZCI5ZSx6ZqK5ZOhIDwgZ2Fzc2hvdXRhaWluXCA7CivntYzosrvliYrmuJsgPCBrZWloaXNha3VnZW5cIDsKK+aWh+iKuOW+qeiIiCA8IGJ1bmdlaWZ1a2tvdVwgOwor55Kw5aSq5bmz5rSLIDwga2FudGFpaGVpeW91XCA7CivlkI3nvqnmm7jmj5sgPCBtZWlnaWtha2lrYWVcIDsKK+e3keWGhemanCA8IHJ5b2t1bmFpc2hvdVwgOwor6YeN5aSn5ZWP6aGMIDwganV1ZGFpbW9uZGFpXCA7CivpnZ7np5HlrabnmoQgPCBoaWthZ2FrdXRla2lcIDsKK+mZkOWumuaIpuS6iSA8IGdlbnRlaXNlbnNvdVwgOwor5qW15qW96bOlIDwgZ29rdXJha3VjaG91XCA7CivmrKflt57lp5Tlk6HkvJogPCBvdXNodXVpaW5rYWlcIDsKK+S4jeWcqOiovOaYjiA8IGZ1emFpc2hvdW1laVwgOwor6LOD6LK45YCfIDwgY2hpbnRhaXNoYWt1XCA7CivljLvlrabljZrlo6sgPCBpZ2FrdWhha3VzaGlcIDsKK+ahiOWGheabuOWRiCA8IGFuJyduYWlzaG90ZWlcIDsKK+WwguWItuWQm+S4uyA8IHNlbnNlaWt1bnNodVwgOwor5Yuk5YuZ5a6f57i+IDwga2lubXVqaXNzZWtpXCA7CivmqZ/lr4bkuovpoIUgPCBraW1pdHN1amlrb3VcIDsKK+aXqeacn+iouuaWrSA8IHNvdWtpc2hpbmRhblwgOwor5ZGK55m66ICFIDwga29rdWhhdHN1c2hhXCA7CivlgZzmraLkvqHmoLwgPCB0ZWlzaGlrYWtha3VcIDsKK+iomOaGtuWuuemHjyA8IGtpb2t1eW91cnlvdVwgOwor5Ye655Sf6YGO5YmwIDwgc2h1c3NlaWtham91XCA7CivlvJXpgIDoiIjooYwgPCBpbnRhaWtvdWd5b3VcIDsKK+S4ieWRs+e3muW8viA8IHNoYW1pc2VuaGlraVwgOwor6Kmm6aiT5q616ZqOIDwgc2hpa2VuZGFua2FpXCA7Civnmb3ooYDnl4UgPCBoYWtrZXRzdWJ5b3VcIDsKK+i7jeS6i+S7i+WFpSA8IGd1bmppa2Fpbnl1dVwgOwor5pS/5rK76YGT5b6zIDwgc2Vpamlkb3V0b2t1XCA7Civlm73llrbkvIHmpa0gPCBrb2t1ZWlraWd5b3VcIDsKK+W4sOW3o+acrOiDvSA8IGtpc291aG9uJydub3VcIDsKK+S4oeaAp+WFt+aciSA8IHJ5b3VzZWlndXl1dVwgOwor6buE6YeR5LiH6IO9IDwgb3Vnb25iYW4nJ25vdVwgOwor55yf54+g6LOqIDwgc2hpbmp1c2hpdHN1XCA7Civmi4XlvZPoqrLplbcgPCB0YW50b3VrYWNob3VcIDsKK+a3t+aIkOertuaKgCA8IGtvbnNlaWt5b3VnaVwgOwor5Yq05YON5pS75YuiIDwgcm91ZG91a291c2VpXCA7CivniYflsbHph4wgPCBrYXRheWFtYXphdG9cIDsKK+eLrOeri+elrSA8IGRva3VyaXRzdXNhaVwgOwor6ZaR6Kmx5LyR6aGMIDwga2Fud2FreXV1ZGFpXCA7CivlhoXmh5AgPCB1Y2hpYnV0b2tvcm9cIDsKK+S6iOe0hOS/giA8IHlveWFrdWdha2FyaVwgOwor5b255YuZ6LOg5YSfIDwgZWtpbXViYWlzaG91XCA7CivlubPlkoznlKPmpa0gPCBoZWl3YXNhbmd5b3VcIDsKK+WNsOixoeaJueiplSA8IGluc2hvdWhpaHlvdVwgOwor5YGc5rue5YmN57eaIDwgdGVpdGFpemVuc2VuXCA7CivmsJHplpPmlL7pgIEgPCBtaW5rYW5ob3Vzb3VcIDsKK+WxnuWcsOS4u+e+qSA8IHpva3VjaGlzaHVnaVwgOwor5LiK5L2N5LqS5o+b5oCnIDwgam91aWdva2Fuc2VpXCA7Civlh7rniYjpg6jmlbAgPCBzaHVwcGFuYnVzdXVcIDsKK+iHquWLleS6uuW9oiA8IGppZG91bmluZ3lvdVwgOwor5oSP5b+X6JaE5byxIDwgaXNoaWhha3VqYWt1XCA7Civlv4PnkIbmiKbkuokgPCBzaGlucmlzZW5zb3VcIDsKK+iqsueojuaJgOW+lyA8IGthemVpc2hvdG9rdVwgOwor5rWB6KGM5L2c5a62IDwgcnl1dWtvdXNha2thXCA7CivmoLnmsJfku5XkuosgPCBrb25raXNoaWdvdG9cIDsKK+m7hOe3keiJsiA8IG91cnlva3VzaG9rdVwgOwor6Lu954qv572q5rOVIDwga2VpaGFuemFpaG91XCA7Civmj6PmkanmhrbmuKwgPCBzaGltYW9rdXNva3VcIDsKK+aUueS/ruW3peS6iyA8IGthaXNodXVrb3VqaVwgOwor5a++5oqX5oSP6K2YIDwgdGFpa291aXNoaWtpXCA7CivliY3pgLLlipsgPCB6ZW5zaGlucnlva3VcIDsKK+mBk+i3r+S6pOmAmiA8IGRvdXJva291dHN1dVwgOwor5rOV5bu35L6u6L6xIDwgaG91dGVpYnVqb2t1XCA7CivlhYnlrabmqZ/morAgPCBrb3VnYWt1a2lrYWlcIDsKK+iEseWtl+iomOWPtyA8IGRhdHN1amlraWdvdVwgOwor56K6546H6KuWIDwga2FrdXJpdHN1cm9uXCA7Civni6znq4vnj60gPCBkb2t1cml0c3VoYW5cIDsKK+WFrOacieawtOmdoiA8IGtvdXl1dXN1aW1lblwgOwor562J5Zyn5byPIDwgdG91YXRzdXNoaWtpXCA7CivpmbDmgKflj43lv5wgPCBpbnNlaWhhbicnbm91XCA7CivntKDkurrnrYsgPCBzaGlyb3V0b3N1amlcIDsKK+e+juS6uuWxgCA8IHRzdXRzdW1vdGFzZVwgOwor5YCf5Zyw5paZIDwgc2hha3VjaGlyeW91XCA7Civpu4TnhrHnl4UgPCBrb3VuZXRzdWJ5b3VcIDsKK+Wdh+ihoee1jOa4iCA8IGtpbmtvdWtlaXphaVwgOwor5oqV56Wo546HIDwgdG91aHlvdXJpdHN1XCA7CivpsLvkuLwgPCB1bmFnaWRvbmJ1cmlcIDsKK+iYreagveWfueazlSA8IHJhbnNhaWJhaWhvdVwgOwor5q2m6KOF6ZuG5ZujIDwgYnVzb3VzaHV1ZGFuXCA7CivohIXov6vnmoQgPCBreW91aGFrdXRla2lcIDsKK+WNsOmRkeiovOaYjiA8IGlua2Fuc2hvdW1laVwgOwor5Z+f5YaF6LK/5piTIDwgaWtpbmFpYm91ZWtpXCA7Civkvb/lvpLooYzkvJ0gPCBzaGl0b2d5b3VkZW5cIDsKK+S9s+S6uuiWhOWRvSA8IGthamluaGFrdW1laVwgOwor5pS+5bCE57ea56eR5Yy7IDwgaG91c2hhc2Vua2FpXCA7CivmnInkvZPos4fnlKMgPCB5dXV0YWlzaGlzYW5cIDsKK+WvvuazsOmWouS/giA8IHRhaXRhaWthbmtlaVwgOwor5qyn5bee6YCj5ZCIIDwgb3VzaHV1cmVuZ291XCA7CivlpbPlrZDlrabnlJ8gPCBqb3NoaWdha3VzZWlcIDsKK+Wbo+e1kOW/gyA8IGRhbmtldHN1c2hpblwgOwor5Y2Y57SU5bmz5Z2HIDwgdGFuanVuaGVpa2luXCA7Civos6rllY/mm7ggPCBzaGl0c3Vtb25zaG9cIDsKK+WGjeW6pueiuuiqjSA8IHNhaWRva2FrdW5pblwgOwor6ay86Z2i5Lyd5b+DIDwga2ltZW5kZW5zaGluXCA7Civosr/mmJPpu5LlrZcgPCBib3Vla2lrdXJvamlcIDsKK+e1hOWQiOWToeiovCA8IGt1bWlhaWluc2hvdVwgOwor54af5p+/5Li7576pIDwganVrdXNoaXNodWdpXCA7CivkuK3nq4vmgKcgPCBjaHV1cml0c3VzZWlcIDsKK+WGt+aIv+ijhee9riA8IHJlaWJvdXNvdWNoaVwgOwor54++5Zyw55Sf55SjIDwgZ2VuY2hpc2Vpc2FuXCA7CivmlrDogZ7oqJjogIUgPCBzaGluYnVua2lzaGFcIDsKK+WRiueZuueKtiA8IGtva3VoYXRzdWpvdVwgOwor5aSn5bGx6bO05YuVIDwgdGFpemFubWVpZG91XCA7Civms6LnirbmlLvmkoMgPCBoYWpvdWtvdWdla2lcIDsKK+WNmOiomOaKleelqCA8IHRhbmtpdG91aHlvdVwgOwor5LiA5qyh6Zai5pWwIDwgaWNoaWppa2Fuc3V1XCA7CivlubzlvaLpgLLljJYgPCB5b3VrZWlzaGlua2FcIDsKK+WPjeW+qeiqrCA8IGhhbnB1a3VzZXRzdVwgOwor5Y2w5Yi36KGTIDwgaW5zYXRzdWp1dHN1XCA7Civog73lipvntaYgPCBub3VyeW9rdWt5dXVcIDsKK+mdkueJqeW4guWgtCA8IGFvbW9ub2ljaGliYVwgOwor5a2m55Sf6YGL5YuVIDwgZ2FrdXNlaXVuZG91XCA7CivloLHlvqnmjqrnva4gPCBob3VmdWt1c29jaGlcIDsKK+WbnuW+qeWPr+iDvSA8IGthaWZ1a3VrYW5vdVwgOwor5q2j6KeS5a6a5pyoIDwgc2Vpa2FrdWpvdWdpXCA7CivmrbTlj7LlnLDnkIYgPCByZWtpc2hpY2hpcmlcIDsKK+e3tOe/kuabsiA8IHJlbnNodXVreW9rdVwgOwor5bm05Lit54Sh5LyRIDwgbmVuanV1bXVreXV1XCA7Civku6PmlbDnmoTlkowgPCBkYWlzdXV0ZWtpd2FcIDsKK+i2heiDveWKmyA8IGNob3Vub3VyeW9rdVwgOwor5bem5Y+z55u456ewIDwgc2F5dXVzb3VzaG91XCA7CivmoLjliIboo4IgPCBrYWt1YnVucmV0c3VcIDsKK+W4neWbveS4u+e+qSA8IHRlaWtva3VzaHVnaVwgOwor6KW/5rSL5p2+6ZyyIDwgc2VpeW91c2hvdXJvXCA7Civlm57ou6Lli5jlrpogPCBrYWl0ZW5rYW5qb3VcIDsKK+S+neiol+WwhOaSgyA8IGl0YWt1c2hhZ2VraVwgOwor5q2j6KaP6KGo54++IDwgc2Vpa2loeW91Z2VuXCA7Civni6znq4vmqKkgPCBkb2t1cml0c3VrZW5cIDsKK+e3j+mgmOS6i+mkqCA8IHNvdXJ5b3VqaWthblwgOwor5b6F5a616I2JIDwgbWF0c3V5b2lndXNhXCA7CivkuIDkurrlqJggPCBoaXRvcmltdXN1bWVcIDsKK+ebl+mbo+mYsuatoiA8IHRvdW5hbmJvdXNoaVwgOwor5ruF56eB5aWJ5YWsIDwgbWVzc2hpaG91a291XCA7Civlm73nqI7lsYAgPCBrb2t1emVpa3lva3VcIDsKK+e3j+WQiOenkeWtpiA8IHNvdWdvdWthZ2FrdVwgOwor5ouY5p2f5pmC6ZaTIDwga291c29rdWppa2FuXCA7Civlm5vmlrnlhavmlrkgPCBzaGlob3VoYXBwb3VcIDsKK+S4u+imgeiruOWFgyA8IHNodXlvdXNob2dlblwgOwor5Y2B5YiG5p2h5Lu2IDwganV1YnVuam91a2VuXCA7CivmmYLku6PmgJ3mva4gPCBqaWRhaXNoaWNob3VcIDsKK+S7o+eQhuaKleelqCA8IGRhaXJpdG91aHlvdVwgOwor5Y+k5YW46Z+z5qW9IDwga290ZW4nJ29uZ2FrdVwgOwor6YqA6KGM5by355uXIDwgZ2lua291Z291dG91XCA7CivkuIDpnaLorZggPCBpY2hpbWVuc2hpa2lcIDsKK+WHuumhmOiAhSA8IHNodXRzdWdhbnNoYVwgOwor6LW354iG6KOF572uIDwga2liYWt1c291Y2hpXCA7CivpgK7mjZXoqLHoq74gPCB0YWlob2t5b2Rha3VcIDsKK+i6vuaWuSA8IHNoaXRzdWtla2F0YVwgOwor5q2v54mZ55a+5oKjIDwgc2hpZ2FzaGlra2FuXCA7Civli7/lv5jojYkgPCB3YXN1cmVuYWd1c2FcIDsKK+W8t+e2v+iWrCA8IGt5b3VtZW4nJ3lha3VcIDsKK+WFseWQjOellueVjCA8IGt5b3Vkb3Vzb2thaVwgOwor5rK55pat5aSn5pW1IDwgeXVkYW50YWl0ZWtpXCA7Civlg7vlv4MgPCBoaWdhbWlnb2tvcm9cIDsKK+Wwgualrei+suWutiA8IHNlbmd5b3Vub3VrYVwgOwor54ax5Y+v5aGR5oCnIDwgbmV0c3VrYXNvc2VpXCA7CivmorbmnKjprqogPCBrYWppa2ltYWd1cm9cIDsKK+W4guacieiyoeeUoyA8IHNoaXl1dXphaXNhblwgOwor5Zu95a626LOg5YSfIDwga29ra2FiYWlzaG91XCA7CivlpLHmmI7ogIUgPCBzaGl0c3VtZWlzaGFcIDsKK+mdmeaFi+e3j+ioiCA8IHNlaXRhaXNvdWtlaVwgOwor5bCC6ZaA6ZuR6KqMIDwgc2VubW9uemFzc2hpXCA7CivlvL7kuLjliJfou4ogPCBkYW5nYW5yZXNzaGFcIDsKK+Wls+mBk+alvSA8IG9uJyduYWRvdXJha3VcIDsKK+Wkp+ato+aZguS7oyA8IHRhaXNob3VqaWRhaVwgOwor6Kit6KiI5aSJ5pu0IDwgc2Vra2VpaGVua291XCA7Civkuobop6PkuovpoIUgPCByeW91a2Fpamlrb3VcIDsKK+Wun+mok+autemajiA8IGppa2tlbmRhbmthaVwgOwor5oiQ6ZW3546HIDwgc2VpY2hvdXJpdHN1XCA7Civnorrlrp/mgKcgPCBrYWt1aml0c3VzZWlcIDsKK+WumOWDmuaUv+ayuyA8IGthbnJ5b3VzZWlqaVwgOwor5Lq656iu5ZWP6aGMIDwgamluc2h1bW9uZGFpXCA7CivmvJTnv5LllY/poYwgPCBlbnNodXVtb25kYWlcIDsKK+WKtOWDjee1hOWQiCA8IHJvdWRvdWt1bWlhaVwgOwor54Gr54KO5pS+5bCE5ZmoIDwga2FlbmhvdXNoYWtpXCA7CivlkIjlkIzlp5Tlk6HkvJogPCBnb3Vkb3VpaW5rYWlcIDsKK+mGh+miqOe+juS/lyA8IGp1bnB1dWJpem9rdVwgOwor5qS/5rK5IDwgdHN1YmFraWFidXJhXCA7Civpu5Loo4XmnZ8gPCBrdXJvc2hvdXpva3VcIDsKK+afj+mkhSA8IGthc2hpd2Ftb2NoaVwgOwor6YCg5Y+N5pyJ55CGIDwgem91aGFuJyd5dXVyaVwgOwor5raI6LK75oCn5ZCRIDwgc2hvdWhpc2Vpa291XCA7CivlvqHnlKjmlrDogZ4gPCBnb3lvdXNoaW5idW5cIDsKK+WFrOWumuS+oeagvCA8IGtvdXRlaWtha2FrdVwgOwor5aCG56mN5L2c55SoIDwgdGFpc2VraXNheW91XCA7CivmlLvlrojlkIznm58gPCBrb3VzaHVkb3VtZWlcIDsKK+W3peenkeWkp+WtpiA8IGtvdWthZGFpZ2FrdVwgOwor56S+5YWs6YCj5ZCIIDwgc2hha291cmVuZ291XCA7Civou43kuovmlZnnt7QgPCBndW5qaWt5b3VyZW5cIDsKK+W5s+WSjOadoee0hCA8IGhlaXdham91eWFrdVwgOwor54Sh6LOH5qC86ICFIDwgbXVzaGlrYWt1c2hhXCA7CivnhrHmi6HmlaMgPCBuZXRzdWtha3VzYW5cIDsKK+ebuOauuumWoueojiA8IHNvdXNhaWthbnplaVwgOwor5Y2z5pmC5YGc5oimIDwgc29rdWppdGVpc2VuXCA7Civmn4TpoK0gPCB0c3VrYWdhc2hpcmFcIDsKK+a4rOWcsOihm+aYnyA8IHNva3VjaGllaXNlaVwgOwor56m65Lit5rWu6YGKIDwga3V1Y2h1dWZ1eXV1XCA7Civlv6Doh6PolLUgPCBjaHV1c2hpbmd1cmFcIDsKK+WLleeJqeWtpiA8IGRvdWJ1dHN1Z2FrdVwgOwor5LiA5p6a5LiLIDwgaWNoaW1haXNoaXRhXCA7Civkv6HnlKjoqZDmrLogPCBzaGluJyd5b3VzYWdpXCA7Civoh7PmnbHkuqwgPCBpdGFydXRvdWt5b3VcIDsKK+eLrOeri+aApyA8IGRva3VyaXRzdXNlaVwgOwor5piO55y455qT5q2vIDwgbWVpYm91a291c2hpXCA7CivkuIrnrYnlhbXmm7kgPCBqb3V0b3VoZWlzb3VcIDsKK+mHkeWIqeaUv+etliA8IGtpbnJpc2Vpc2FrdVwgOwor6I2J5qC55pyo55quIDwgc291a29ubW9rdWhpXCA7Civpm6jlvozpm6ogPCBhbWVub2NoaXl1a2lcIDsKK+WKtOWDjeeBveWusyA8IHJvdWRvdXNhaWdhaVwgOwor5o6o5a6a5bm06b2iIDwgc3VpdGVpbmVucmVpXCA7CivpgbrnlKPnrqHnkIbkurogPCBpc2Fua2FucmluaW5cIDsKK+iyv+aYk+S+neWtmOW6piA8IGJvdWVraWl6b25kb1wgOwor5pel5pys5paH5a2mIDwgbmlob25idW5nYWt1XCA7Civlhavnm67psLsgPCB5YXRzdW1ldW5hZ2lcIDsKK+Wun+mok+enkeWtpiA8IGppa2tlbmthZ2FrdVwgOwor5Yq05YON5aeU5ZOh5LyaIDwgcm91ZG91aWlua2FpXCA7CivlpKnni5foqbEgPCB0ZW5ndWJhbmFzaGlcIDsKK+ahiOWGheS/giA8IGFuJyduYWlnYWthcmlcIDsKK+WNsemZuuS/oeWPtyA8IGtpa2Vuc2hpbmdvdVwgOwor5rWB6KGM6ImyIDwgcnl1dWtvdXNob2t1XCA7Civpjb7kubPnn7MgPCBzaG91bnl1dXNla2lcIDsKK+ilv+asp+iruOWbvSA8IHNlaW91c2hva29rdVwgOwor5o6l57aa5oCnIDwgc2V0c3V6b2t1c2VpXCA7CivlpJzplpPllrbmpa0gPCB5YWthbicnZWlneW91XCA7CivmqKHlnovpo5vooYzmqZ8gPCBtb2tlaWhpa291a2lcIDsKK+ecn+Wun+aApyA8IHNoaW5qaXRzdXNlaVwgOwor5L2/5b6S5om/5LydIDwgc2hpdG9zaG91ZGVuXCA7Civlm73lrrbkuLvluK0gPCBrb2trYXNodXNla2lcIDsKK+mbquimi+eBr+exoCA8IHl1a2ltaWRvdXJvdVwgOwor5Li75bit5Yik5LqLIDwgc2h1c2VraWhhbmppXCA7CivpqqjogonohasgPCBrb3RzdW5pa3VzaHVcIDsKK+eKrOeVnOeUnyA8IGludWNoaWt1c2hvdVwgOwor5a6Y6KO96JGJ5pu4IDwga2Fuc2VpaGFnYWtpXCA7CivkvJ3oqJjmloflraYgPCBkZW5raWJ1bmdha3VcIDsKK+WItuWLleaUvuWwhCA8IHNlaWRvdWhvdXNoYVwgOwor6aCY5Y+O6Ki8IDwgcnlvdXNodXVzaG91XCA7Civms5XlvovooYzngrogPCBob3VyaXRzdWtvdWlcIDsKK+WFseeUo+WbveWutiA8IGt5b3VzYW5rb2trYVwgOwor5pWZ6IKy5qmf6ZaiIDwga3lvdWlrdWtpa2FuXCA7CivpnZ7luLjkv6Hlj7cgPCBoaWpvdXNoaW5nb3VcIDsKK+mbquimi+manOWtkCA8IHl1a2ltaXNob3VqaVwgOwor5qmf5qeL5pS56Z2pIDwga2lrb3VrYWlrYWt1XCA7CivmmLzlhYnoibIgPCBjaHV1a291c2hva3VcIDsKK+W+oeeOieadk+WtkCA8IG90YW1hamFrdXNoaVwgOwor5pyA57WC57WQ5p6cIDwgc2Fpc2h1dWtla2thXCA7CivnibnmgbXplqLnqI4gPCB0b2trZWlrYW56ZWlcIDsKK+WcsOmch+S6iOefpSA8IGppc2hpbicneW9jaGlcIDsKK+WFseWQjOWLn+mHkSA8IGt5b3Vkb3Vib2tpblwgOwor5LqL5YuZ5b2T5bGAIDwgamltdXRvdWt5b2t1XCA7CivkuInlj7fpm5HoqowgPCBzYW5nb3V6YXNzaGlcIDsKK+a8j+a0qembu+a1gSA8IHJvdWVpZGVucnl1dVwgOwor5a6j5oim5biD5ZGKIDwgc2Vuc2VuZnVrb2t1XCA7CivlhbHnlKPlnLDljLogPCBreW91c2FuY2hpa3VcIDsKK+S7o+eUqOaVmeWToSA8IGRhaXlvdWt5b3VpblwgOwor5YyX5qW154aKIDwgaG9ra3lva3VndW1hXCA7CivkuInop5Llrpropo8gPCBzYW5rYWt1am91Z2lcIDsKK+ilv+a0i+WwhuajiyA8IHNlaXlvdXNob3VnaVwgOwor5L+h5Y+354Sh6KaWIDwgc2hpbmdvdW11c2hpXCA7CivlnJ/lnLDmlLnpnakgPCB0b2NoaWthaWtha3VcIDsKK+eArOaIuOeJqeW4giA8IHNldG9tb25vaWNoaVwgOwor5Y+45Luk5a6kIDwgc2hpcmVpc2hpdHN1XCA7CivlronlgI3lt53ppIUgPCBhYmVrYXdhbW9jaGlcIDsKK+adseasp+iruOWbvSA8IHRvdW91c2hva29rdVwgOwor6Leh55uu55u457aaIDwgYXRvbWVzb3V6b2t1XCA7Civkurrlt6XlkbzlkLggPCBqaW5rb3Vrb2t5dXVcIDsKK+S/hOebsiA8IG5pd2FrYW1la3VyYVwgOwor6Iiq56m66YO15L6/IDwga291a3V1eXV1YmluXCA7CivkuKbooYzovLjlhaUgPCBoZWlrb3V5dW55dXVcIDsKK+e1jOa4iOagvOW3riA8IGtlaXphaWtha3VzYVwgOwor56S+5Lya6LOH5pysIDwgc2hha2Fpc2hpaG9uXCA7CivlpJbkuqTnibnmqKkgPCBnYWlrb3V0b2trZW5cIDsKK+WNsOWIt+eJqSA8IGluc2F0c3VidXRzdVwgOwor5qWt5YuZ5o+Q5pC6IDwgZ3lvdW11dGVpa2VpXCA7CivmvZzlnKjmhI/orZggPCBzZW56YWlpc2hpa2lcIDsKK+aKveixoeeahCA8IGNodXVzaG91dGVraVwgOwor5Yi25b6h6KOF572uIDwgc2VpZ3lvc291Y2hpXCA7Civnmb3mi43lrZAgPCBzaGlyYWJ5b3VzaGlcIDsKK+aPkOWHuuiAhSA8IHRlaXNodXRzdXNoYVwgOwor5omA5omA5pa55pa5IDwgc2hvc2hvaG91Ym91XCA7CivogJDlnKflipsgPCB0YWlhdHN1cnlva3VcIDsKK+WHuOmdoumPoSA8IHRvdHN1bWVua3lvdVwgOwor6auY6KGA5ZynIDwga291a2V0c3VhdHN1XCA7Civmn7HmmYLoqIggPCBoYXNoaXJhZG9rZWlcIDsKK+WbuuS9k+eHg+aWmSA8IGtvdGFpbmVucnlvdVwgOwor5YKY5q2v6LuKIDwga2FzYWhhZ3VydW1hXCA7CivpvLvlhYPmgJ3moYggPCBoYW5hbW90b2ppYW5cIDsKK+WPs+aKmOemgeatoiA8IHVzZXRzdWtpbnNoaVwgOwor6LuN5Zu96ImyIDwgZ3Vua29rdXNob2t1XCA7Civlhavpg47mvZ8gPCBoYWNoaXJvdWdhdGFcIDsKK+WNg+aAneS4h+iAgyA8IHNlbnNoaWJhbmtvdVwgOwor5L6d6aGY6YCA6IG3IDwgaWdhbnRhaXNob2t1XCA7CivkuInpg6jlkIjllLEgPCBzYW5idWdhc3Nob3VcIDsKK+iogOiqnuS4reaeoiA8IGdlbmdvY2h1dXN1dVwgOwor54++5Luj5paH5piOIDwgZ2VuZGFpYnVubWVpXCA7CivppIrorbflrabntJogPCB5b3Vnb2dha2t5dXVcIDsKK+Wuv+WRveeahCA8IHNodWt1bWVpdGVraVwgOwor5Zue6Lui6YGL5YuVIDwga2FpdGVuJyd1bmRvdVwgOwor6YGL6Ly45qWt6ICFIDwgdW4nJ3l1Z3lvdXNoYVwgOwor5Lit5b+D6KeSIDwgY2h1dXNoaW5rYWt1XCA7CivplbfpoIjpr6ggPCBuYWdhc3VrdWppcmFcIDsKK+efs+ayueWFrOWboyA8IHNla2l5dWtvdWRhblwgOwor5bGA6YOo6bq76YWUIDwga3lva3VidW1hc3VpXCA7CivnvqnlpKrlpKvnr4AgPCBnaWRheXV1YnVzaGlcIDsKK+mHkeWxnuWKoOW3pSA8IGtpbnpva3VrYWtvdVwgOwor5oKq5oCn6IWr55iNIDwgYWt1c2Vpc2h1eW91XCA7Civkv67kuoboqLwgPCBzaHV1cnlvdXNob3VcIDsKK+mmrOm5v+ato+ebtCA8IGJha2FzaG91amlraVwgOwor5ZCI5byB5Lya56S+IDwgZ291YmVuZ2Fpc2hhXCA7CivmrrXjgIXnlaAgPCBkYW5kYW5iYXRha2VcIDsKK+WFrOebiuS6i+alrSA8IGtvdWVraWppZ3lvdVwgOwor5L+h5Y+36Zu75rOiIDwgc2hpbmdvdWRlbnBhXCA7CivlpJrogonos6ogPCB0YW5pa3VzaGl0c3VcIDsKK+mAsuWFpeeBryA8IHNoaW4nJ255dXV0b3VcIDsKK+mbhue0hOeahCA8IHNodXV5YWt1dGVraVwgOwor5YW15YWt546JIDwgaHlvdXJva3VkYW1hXCA7Civmkanmk6bnhrEgPCBtYXNhdHN1bmV0c3VcIDsKK+WGhei8quWQjOW/lyA8IHVjaGl3YWRvdXNoaVwgOwor56S+5Lya5LqL5qWtIDwgc2hha2FpamlneW91XCA7CivmioDooZPlipsgPCBnaWp1dHN1cnlva3VcIDsKK+mbtue0sOS8gealrSA8IHJlaXNhaWtpZ3lvdVwgOwor5Luu5rq25o6lIDwga2FyaXlvdXNldHN1XCA7Civlm73lrprlhazlnJIgPCBrb2t1dGVpa291ZW5cIDsKK+W/nOWKm+W+hOi3ryA8IG91cnlva3VrZWlyb1wgOwor5LiL5L2N56+E55aH5YyWIDwga2FpaGFuY2h1dWthXCA7CivmjqfoqLTmo4TljbQgPCBrb3Vzb2tpa3lha3VcIDsKK+mAmuWLpOWumuacnyA8IHRzdXVraW50ZWlraVwgOwor6auY5ZOB6LOqIDwga291aGluc2hpdHN1XCA7CivmrbTlj7LlnLDlm7MgPCByZWtpc2hpY2hpenVcIDsKK+mbu+WtkOmDteS+vyA8IGRlbnNoaXl1dWJpblwgOwor5pmS5pyo57a/IDwgc2FyYXNoaW1vbWVuXCA7CivkvLjnuK7ms5UgPCBzaGluc2h1a3Vob3VcIDsKK+S6uuW3peefpeiDvSA8IGppbmtvdWNoaW5vdVwgOwor56m65Lit5oqV5LiLIDwga3V1Y2h1dXRvdWthXCA7Civmpb3lpKnkuLvnvqkgPCByYWt1dGVuc2h1Z2lcIDsKK+WFremAo+eZuiA8IHJva3VyZW5wYXRzdVwgOwor5rW35aSW5oqV6LOHIDwga2FpZ2FpdG91c2hpXCA7CivkvbXnmbrnl4cgPCBoZWloYXRzdXNob3VcIDsKK+aal+iovOeVquWPtyA8IGFuc2hvdWJhbmdvdVwgOwor5qyg5LmP55eHIDwga2V0c3Vib3VzaG91XCA7CivmnpXoqZ4gPCBtYWt1cmFrb3RvYmFcIDsKK+mWouevgOaKgCA8IGthbnNldHN1d2F6YVwgOwor5rKI5rKh6Ii5IDwgY2hpbmJvdHN1c2VuXCA7CivlgJnmiYAgPCBzb3Vyb3V0b2tvcm9cIDsKK+WuueepjeeOhyA8IHlvdXNla2lyaXRzdVwgOwor5qGC55S3IDwga2F0c3VyYW90b2tvXCA7CivkuLvlipvmoKogPCBzaHVyeW9rdWthYnVcIDsKK+W5tOm9ouWItumZkCA8IG5lbnJlaXNlaWdlblwgOwor5L6h5qC85oim5LqJIDwga2FrYWt1c2Vuc291XCA7Civpq5jpgJ/luqbpi7wgPCBrb3Vzb2t1ZG9rb3VcIDsKK+WxseaHkCA8IHlhbWFmdXRva29yb1wgOwor5Lm+5rm/6KiIIDwga2Fuc2hpdHN1a2VpXCA7CivpnZ7llrbliKnlm6PkvZMgPCBoaWVpcmlkYW50YWlcIDsKK+eBq+WKm+aUr+aPtCA8IGthcnlva3VzaGllblwgOwor6auY6YCf6YGT6LevIDwga291c29rdWRvdXJvXCA7Civkvb/nlKjnpoHmraIgPCBzaGl5b3VraW5zaGlcIDsKK+WGoOWpmuiRrOelrSA8IGthbmtvbnNvdXNhaVwgOwor5rC05bmz5bC+57+8IDwgc3VpaGVpYml5b2t1XCA7CivkuLzpo68gPCBkb25idXJpbWVzaGlcIDsKK+axuuitsOapn+mWoiA8IGtldHN1Z2lraWthblwgOwor5Lmd5pif6KGTIDwga3l1dXNlaWp1dHN1XCA7Civlj6PlhavkuIEgPCBrdWNoaWhhdGNob3VcIDsKK+mAo+mOluWPjeW/nCA8IHJlbnNhaGFuJydub3VcIDsKK+W4guawkeekvuS8miA8IHNoaW1pbnNoYWthaVwgOwor5qSc5a+f5bqBIDwga2Vuc2F0c3VjaG91XCA7CivooajooajntJkgPCBvbW90ZWJ5b3VzaGlcIDsKK+mDqOWIhumbhuWQiCA8IGJ1YnVuc2h1dWdvdVwgOwor5Zub5o2o5LqU5YWlIDwgc2hpc2hhZ29ueXV1XCA7Civlj5foqJfkvJrnpL4gPCBqdXRha3VnYWlzaGFcIDsKK+WVj+mhjOaEj+itmCA8IG1vbmRhaWlzaGlraVwgOwor6YeR6J6N5YWs5bqrIDwga2luJyd5dXVrb3Vrb1wgOwor55u05Y+W5byVIDwgamlraXRvcmloaWtpXCA7Civlj4vpgZTnlLLmlpAgPCB0b21vZGFjaGlnYWlcIDsKK+Wkp+WtpuWNkiA8IGRhaWdha3Vzb3RzdVwgOwor5LiA6Iis5pWZ6aSKIDwgaXBwYW5reW91eW91XCA7CivlpLHoqp7nl4cgPCBzaGl0c3Vnb3Nob3VcIDsKK+mZjembqumHjyA8IGtvdXNldHN1cnlvdVwgOwor5a6J5a6a5oGQ5oWMIDwgYW50ZWlreW91a291XCA7CivmsLTntKDljJbniakgPCBzdWlzb2thYnV0c3VcIDsKK+eSsOWig+WkieWMliA8IGthbmt5b3VoZW5rYVwgOwor5L2T5qC85qSc5p+7IDwgdGFpa2FrdWtlbnNhXCA7CivmvIHluKvnlLogPCByeW91c2hpbWFjaGlcIDsKK+WMluWtpuWQiOaIkCA8IGthZ2FrdWdvdXNlaVwgOwor5bmz5bmz5Yeh5YehIDwgaGVpaGVpYm9uYm9uXCA7CivluILloLTkvqHmoLwgPCBzaGlqb3VrYWtha3VcIDsKK+eJqeimi+arkyA8IG1vbm9taXlhZ3VyYVwgOwor5ZaE6Zqj6Zai5L+CIDwgemVucmlua2Fua2VpXCA7CivlkIjmiJDmtJfliaQgPCBnb3VzZWlzZW56YWlcIDsKK+ims+W/teS4u+e+qSA8IGthbicnbmVuc2h1Z2lcIDsKK+mAmuWLpOaZgumWkyA8IHRzdXVraW5qaWthblwgOwor57WM5riI5L2T5Yi2IDwga2VpemFpdGFpc2VpXCA7CivkvY/miYDmsI/lkI0gPCBqdXVzaG9zaGltZWlcIDsKK+eWvumiqOaAkua/pCA8IHNoaXBwdXVkb3RvdVwgOwor5Yy755mC5p2Q5paZIDwgaXJ5b3V6YWlyeW91XCA7CivmnInmqZ/ovrLmpa0gPCB5dXVraW5vdWd5b3VcIDsKK+WmqOWus+aUvumAgSA8IGJvdWdhaWhvdXNvdVwgOwor6YeR5bGe5YWD57SgIDwga2luem9rdWdlbnNvXCA7Civlj5bmrKHlupcgPCB0b3JpdHN1Z2l0ZW5cIDsKK+atr+WGheeZguazlSA8IHNoaWthcnlvdWhvdVwgOwor5oKq5oiv5bCP5YOnIDwgaXRhenVyYWtvem91XCA7CivlhajmqKnlpKfkvb8gPCB6ZW5rZW50YWlzaGlcIDsKK+WNseaApeWtmOS6oSA8IGtpa3l1dXNvbmJvdVwgOwor5a6H5a6Z5Lit57aZIDwgdWNodXVjaHV1a2VpXCA7CivpnZ7kurrplpPnmoQgPCBoaW5pbmdlbnRla2lcIDsKK+WPl+S/oeijhee9riA8IGp1c2hpbnNvdWNoaVwgOwor5pWw5YCk6KiI566XIDwgc3V1Y2hpa2Vpc2FuXCA7CivniYfoqIDpmrvoqp4gPCBoZW5nZW5zZWtpZ29cIDsKK+aHkOS4reaZguioiCA8IGthaWNodXVkb2tlaVwgOwor5pyn5pyI5aScIDwgb2Jvcm9kenVraXlvXCA7Civnq7bovKrpgbjmiYsgPCBrZWlyaW5zZW5zaHVcIDsKK+S6q+alveeahCA8IGt5b3VyYWt1dGVraVwgOwor5pqX5Y+36Kej6KqtIDwgYW5nb3VrYWlkb2t1XCA7Civlj43li5XmgJ3mg7MgPCBoYW5kb3VzaGlzb3VcIDsKK+Wun+iovOS4u+e+qSA8IGppc3Nob3VzaHVnaVwgOwor5qiZ5rqW5YGP5beuIDwgaHlvdWp1bmhlbnNhXCA7Civos4fmupDllY/poYwgPCBzaGlnZW5tb25kYWlcIDsKK+mBi+mAgealreiAhSA8IHVuc291Z3lvdXNoYVwgOwor6KGM5YuV5Zyw5bivIDwga291ZG91Y2hpdGFpXCA7CivmsLTlipvlraYgPCBzdWlyeW9rdWdha3VcIDsKK+W5s+etieS4u+e+qSA8IGJ5b3Vkb3VzaHVnaVwgOwor5Y+W5byV5YWIIDwgdG9yaWhpa2lzYWtpXCA7CivkuqTku6PmipXmiYsgPCBrb3V0YWl0b3VzaHVcIDsKK+S4vOmJoiA8IGRvbmJ1cmliYWNoaVwgOwor5YWl5Yqb57eaIDwgbnl1dXJ5b2t1c2VuXCA7CivkvY7ooYDlnKcgPCB0ZWlrZXRzdWF0c3VcIDsKK+WbveWutueLrOWNoCA8IGtva2thZG9rdXNlblwgOwor5Zyf5Zyw5pS56ImvIDwgdG9jaGlrYWlyeW91XCA7CivnkrDlooPln7rmupYgPCBrYW5reW91a2lqdW5cIDsKK+WkluS6pOaWh+abuCA8IGdhaWtvdWJ1bnNob1wgOwor6Lu95oyZ5aaE5YuVIDwga2Vpa3lvbW91ZG91XCA7CivpmLLomavliqDlt6UgPCBib3VjaHV1a2Frb3VcIDsKK+S4jeWcqOaKleelqCA8IGZ1emFpdG91aHlvdVwgOwor5Ly457iu5oCnIDwgc2hpbnNodWt1c2VpXCA7Civlvovku6TliLYgPCByaXRzdXJ5b3VzZWlcIDsKK+WrjOeFmemBi+WLlSA8IGtlbicnZW4nJ3VuZG91XCA7CivlsIHnt5jokYnmm7ggPCBmdXVrYW5oYWdha2lcIDsKK+W9ouW8j+eahCA8IGtlaXNoaWtpdGVraVwgOwor5rOw54S26Ieq6IulIDwgdGFpemVuamlqYWt1XCA7CivmlZfljJfkuLvnvqkgPCBoYWlib2t1c2h1Z2lcIDsKK+S+oeagvOaAp+iDvSA8IGtha2FrdXNlaW5vdVwgOwor5pu46aGe6YCB5qScIDwgc2hvcnVpc291a2VuXCA7CivkurrmqKnllY/poYwgPCBqaW5rZW5tb25kYWlcIDsKK+S7sueri+S6uiA8IG5ha2FkYWNoaW5pblwgOwor5piH6ZmN5Y+jIDwgc2hvdWtvdWd1Y2hpXCA7CivkuIDmrbvloLHlm70gPCBpc3NoaWhvdWtva3VcIDsKK+iomOmMsuS/giA8IGtpcm9rdWdha2FyaVwgOwor5bel5L2c54mpIDwga291c2FrdWJ1dHN1XCA7Civnt7TppqzlpKfmoLkgPCBuZXJpbWFkYWlrb25cIDsKK+S4gOezuOS4gOavqyA8IGlzc2hpaWNoaWdvdVwgOwor54m55q6K5LqL5oOFIDwgdG9rdXNodWppam91XCA7CivmraPnm7TogIUgPCBzaG91amlraW1vbm9cIDsKK+iAgeWwkeS4jeWumiA8IHJvdXNob3VmdXRlaVwgOwor5Lit5b+D55qEIDwgY2h1dXNoaW50ZWtpXCA7Civoh6rnv5LlrqQgPCBqaXNodXVzaGl0c3VcIDsKK+S7iuaYjuaXpSA8IGtvbm15b3VuaWNoaVwgOwor55u45LmX5bmz5Z2HIDwgc291am91aGVpa2luXCA7CivkuIflubTlgJnoo5wgPCBtYW4nJ25lbmtvdWhvXCA7CivlronlhajmlZnogrIgPCBhbnplbmt5b3Vpa3VcIDsKK+eEoeizg+S5l+i7iiA8IG11Y2hpbmpvdXNoYVwgOwor54mH5YuZ5aWR57SEIDwgaGVubXVrZWl5YWt1XCA7CivkuIDoiKzlpKfooYYgPCBpcHBhbnRhaXNodXVcIDsKK+WPpOWFuOaWh+WtpiA8IGtvdGVuYnVuZ2FrdVwgOwor6auY5qCh6YeO55CDIDwga291a291eWFreXV1XCA7CivplpPmjqXnmoQgPCBrYW5zZXRzdXRla2lcIDsKK+S4reiPr+aWmeeQhiA8IGNodXVrYXJ5b3VyaVwgOwor5Ye654mI54mpIDwgc2h1cHBhbmJ1dHN1XCA7CivlgaXlurfnirbmhYsgPCBrZW5rb3Vqb3V0YWlcIDsKK+aguOi7jee4riA8IGtha3VndW5zaHVrdVwgOwor6bm/5YWQ5bO255yMIDwga2Fnb3NoaW1ha2VuXCA7Civmupblgpnnirbms4EgPCBqdW5iaWpvdWt5b3VcIDsKK+mBuOWkluS9s+S9nCA8IHNlbmdhaWthc2FrdVwgOwor6KiA6Kqe5pWZ6IKyIDwgZ2VuZ29reW91aWt1XCA7CivlkIzmloflkIznqK4gPCBkb3VidW5kb3VzaHVcIDsKK+e1puS4juS9k+ezuyA8IGt5dXV5b3RhaWtlaVwgOwor6bq76Jas54qv572qIDwgbWF5YWt1aGFuemFpXCA7CivmnJ3ku6Tmmq7mlLkgPCBjaG91cmVpYm9rYWlcIDsKK+S4gOimi+itmCA8IGljaGlrZW5zaGlraVwgOwor5pS75pKD5YqbIDwga291Z2VraXJ5b2t1XCA7CivkupLmgbXmnaHntIQgPCBnb2tlaWpvdXlha3VcIDsKK+S4gOWbveS4gOelqCA8IGlra29rdWlwcHlvdVwgOwor56Cy6Imm5aSW5LqkIDwgaG91a2FuZ2Fpa291XCA7CivmlbTpq6rmlpkgPCBzZWloYXRzdXJ5b3VcIDsKK+a1geihjOiogOiRiSA8IGhheWFyaWtvdG9iYVwgOwor5Lqk6YCa5qmf6ZaiIDwga291dHN1dWtpa2FuXCA7CivmsLTpioDpm7vmsaAgPCBzdWlnaW5kZW5jaGlcIDsKK+WAkuS6iyA8IHNha2FzYW1hZ290b1wgOwor6L+95ZaE5L6b6aSKIDwgdHN1aXplbmt1eW91XCA7Civku5blipvmnKzpoZggPCB0YXJpa2lob25nYW5cIDsKK+espuWPt+ino+iqrSA8IGZ1Z291a2FpZG9rdVwgOwor55+l6IO95oyH5pWwIDwgY2hpbm91c2hpc3V1XCA7CivkupznhrHluK/msJflgJkgPCBhbmV0dGFpa2lrb3VcIDsKK+W9k+WWtualreaJgCA8IHRvdWVpZ3lvdXNob1wgOwor6IG35ZOh5Lya6K2wIDwgc2hva3VpbmthaWdpXCA7CivoqIDoqp7nibnmnIkgPCBnZW5nb3Rva3V5dXVcIDsKK+acgOWwj+mZkOW6piA8IHNhaXNob3VnZW5kb1wgOwor5p+T5LqV5ZCJ6YeOIDwgc29tZWl5b3NoaW5vXCA7Civlrozlhajniq/nvaogPCBrYW56ZW5oYW56YWlcIDsKK+aagemXhyA8IGFrYXRzdWtpeWFtaVwgOwor5pWZ6IKy5Yi25bqmIDwga3lvdWlrdXNlaWRvXCA7CivmiKblm73mmYLku6MgPCBzZW5nb2t1amlkYWlcIDsKK+WJjemnhueXh+eKtiA8IHplbmt1c2hvdWpvdVwgOwor5LiD6Z2i5YCSIDwgc2hpY2hpbWVuZG91XCA7CivogJDmub/mgKcgPCB0YWlzaGl0c3VzZWlcIDsKK+e0q+e2rOikkuizniA8IHNoaWp1aG91c2hvdVwgOwor5LiA6KiA5Y2K5Y+lIDwgaWNoaWdvbmhhbmt1XCA7CivkuI3ms5XljaDmnIkgPCBmdWhvdXNlbicneXV1XCA7Civku4/mloflraYgPCBmdXRzdWJ1bmdha3VcIDsKK+WutuW6reeSsOWigyA8IGthdGVpa2Fua3lvdVwgOwor55WR5rC057e0IDwgaGF0YWtlc3VpcmVuXCA7Civli4XmkrDpm4YgPCBjaG9rdXNlbnNodXVcIDsKK+S4g+mdouS9kyA8IHNoaWNoaW1lbnRhaVwgOwor6Iie5Y+w55uj552jIDwgYnV0YWlrYW50b2t1XCA7CivlkIjmiJDnmq7pnakgPCBnb3VzZWloaWtha3VcIDsKK+WcqOWuheWLpOWLmSA8IHphaXRha3VraW5tdVwgOwor54Sh5pS/5bqc5Li7576pIDwgbXVzZWlmdXNodWdpXCA7CivkuI3lnKjlnLDkuLsgPCBmdXphaWppbnVzaGlcIDsKK+S4gOWuv+S4gOmjryA8IGlzc2h1a3VpcHBhblwgOwor6ICB5Lq655eF6ZmiIDwgcm91amluYnlvdWluXCA7CivniYfogrrpo5vooYwgPCBrYXRhaGFpaGlrb3VcIDsKK+Wvvua9nOawtOiJpiA8IHRhaXNlbnN1aWthblwgOwor6K2m5oiS6K2m5aCxIDwga2Vpa2Fpa2VpaG91XCA7CivlirnnjofnmoQgPCBrb3VyaXRzdXRla2lcIDsKK+e0r+epjei1pOWtlyA8IHJ1aXNla2lha2FqaVwgOwor5a625peP5qeL5oiQIDwga2F6b2t1a291c2VpXCA7CivlhoXmn5TlpJbliZsgPCBuYWlqdXVnYWlnb3VcIDsKK+WxnuS6uuS4u+e+qSA8IHpva3VqaW5zaHVnaVwgOwor54ax6YeP6KiIIDwgbmV0c3VyeW91a2VpXCA7Civnoazou5/kuKHmtL4gPCBrb3VuYW5yeW91aGFcIDsKK+W6p+W4reeVquWPtyA8IHphc2VraWJhbmdvdVwgOwor56m65Lit5rWu5o+aIDwga3V1Y2h1dWZ1eW91XCA7CivkuIHnqJrlpYnlhawgPCBkZXRjaGlib3Vrb3VcIDsKK+S4gOaWueS6pOmAmiA8IGlwcG91a291dHN1dVwgOwor5LiJ5pel5pyI5b2iIDwgbWlrYWR6dWtpa2VpXCA7Civnp7vli5Xlm7Pmm7jppKggPCBpZG91dG9zaG9rYW5cIDsKK+aknOS6i+e3j+mVtyA8IGtlbmppc291Y2hvdVwgOwor5rOo6YeI6ICFIDwgY2h1dXNoYWt1c2hhXCA7Civni63lv4Pnl4cgPCBreW91c2hpbnNob3VcIDsKK+aWsOimj+aKleizhyA8IHNoaW5raXRvdXNoaVwgOwor5Y2Y6Kqe5qSc57SiIDwgdGFuZ29rZW5zYWt1XCA7CivlvKXnjJvlv4MgPCB5YXRha2Vnb2tvcm9cIDsKK+maoOWMv+eJqeizhyA8IGludG9rdWJ1c3NoaVwgOwor5aWz5Lq656aB5Yi2IDwgbnlvbmlua2luc2VpXCA7CivlpKfkv67pgZPpmaIgPCBkYWlzaHV1ZG91aW5cIDsKK+ajruael+WFrOWckiA8IHNoaW5yaW5rb3VlblwgOwor57eP6Iqx5byPIDwgc291YmFuYXNoaWtpXCA7CivljZTllYblm70gPCBreW91c2hvdWtva3VcIDsKK+WPl+mok+izh+agvCA8IGp1a2Vuc2hpa2FrdVwgOwor5LiD57WD55C0IDwgc2hpY2hpZ2Vua2luXCA7CivlpKflkozoqIDokYkgPCB5YW1hdG9rb3RvYmFcIDsKK+WEgOW8j+S4u+e+qSA8IGdpc2hpa2lzaHVnaVwgOwor6YCg5bGx6YGL5YuVIDwgem91emFuJyd1bmRvdVwgOwor5LiA6Iis5pWZ6IKyIDwgaXBwYW5reW91aWt1XCA7CivniIboo4LlvL4gPCBiYWt1cmV0c3VkYW5cIDsKK+eri+S9k+mfs+mfvyA8IHJpdHRhaW9ua3lvdVwgOwor5a6X5pWZ5b+DIDwgc2h1dWt5b3VzaGluXCA7Civnibnpm4boqJjkuosgPCB0b2t1c2h1dWtpamlcIDsKK+S7mOW4r+axuuitsCA8IGZ1dGFpa2V0c3VnaVwgOwor6KO957SZ5bel5aC0IDwgc2Vpc2hpa291am91XCA7CivlhazlhbHniakgPCBrb3VreW91YnV0c3VcIDsKK+aVkeaApeeusSA8IGt5dXVreXV1YmFrb1wgOwor5pWR5o+05oqV5omLIDwga3l1dWVudG91c2h1XCA7CivosqHlm6Pms5XkurogPCB6YWlkYW5ob3VqaW5cIDsKK+awkeS/l+iInui4iiA8IG1pbnpva3VidXlvdVwgOwor5oim5LqJ54qv572qIDwgc2Vuc291aGFuemFpXCA7Civpm6Pnh4PliqDlt6UgPCBuYW4nJ25lbmtha291XCA7CivljZfoiLnljJfppqwgPCBuYW5zZW5ob2t1YmFcIDsKK+apn+iDvemanOWusyA8IGtpbm91c2hvdWdhaVwgOwor5a6f6KGM5aeU5ZOh5LyaIDwgamlra291aWlua2FpXCA7Civni4Loqanmm7IgPCBreW91c2hpa3lva3VcIDsKK+aXpeacrOWbveawkSA8IG5paG9ua29rdW1pblwgOwor5L+E5YiG6ZmQIDwgbml3YWthYnVuZ2VuXCA7CivoiJ7ouI/mlZnluKsgPCBidXRvdWt5b3VzaGlcIDsKK+ael+mWk+WtpuagoSA8IHJpbmthbmdha2tvdVwgOwor5p2+5q+sIDwgbWF0c3Vwb2trdXJpXCA7CivoirHprYHpgZPkuK0gPCBvaXJhbmRvdWNodXVcIDsKK+a7kemZjeertuaKgCA8IGtha2tvdWt5b3VnaVwgOwor5Zyo5aSW5YWs6aSoIDwgemFpZ2Fpa291a2FuXCA7CivlrpfmlZnlraYgPCBzaHV1a3lvdWdha3VcIDsKK+mgreiZsSA8IGF0YW1hc2hpcmFtaVwgOwor5LiA5pel5LitIDwgaWNoaW5pY2hpanV1XCA7CivlnLDmlrnpgbjmjJkgPCBjaGlob3VzZW5reW9cIDsKK+axguiBt+iAhSA8IGt5dXVzaG9rdXNoYVwgOwor55Wc5q665aC0IDwgY2hpa3VzYXRzdWJhXCA7CivlkIjmiJDljJblraYgPCBnb3VzZWlrYWdha3VcIDsKK+engeijveiRieabuCA8IHNoaXNlaWhhZ2FraVwgOwor5a2m5bm05pyrIDwgZ2FrdW5lbm1hdHN1XCA7CivkuI3lrprnqY3liIYgPCBmdXRlaXNla2lidW5cIDsKK+ato+OAheWgguOAhSA8IHNlaXNlaWRvdWRvdVwgOwor5Y2K5L+h5Y2K55aRIDwgaGFuc2hpbmhhbmdpXCA7CivnqYDosaHomasgPCBrb2t1em91bXVzaGlcIDsKK+i8uOWFpei2hemBjiA8IHl1bnl1dWNob3VrYVwgOwor54Sh6Z+/5a6kIDwgbXVreW91c2hpdHN1XCA7CivnrY3ljLvogIUgPCB0YWtlbm9rb2lzaGFcIDsKK+Wbm+WFg+mAn+W6piA8IHNoaWdlbnNva3Vkb1wgOwor5LuY5bGe5a2m5qChIDwgZnV6b2t1Z2Fra291XCA7Civkurrlt6XnnJ/nj6AgPCBqaW5rb3VzaGluanVcIDsKK+a9m+W/g+WKmyA8IHNlbnNoaW5yeW9rdVwgOwor6IiI6KGM5Li7IDwga291Z3lvdW51c2hpXCA7CivkurrmqKnlm6PkvZMgPCBqaW5rZW5kYW50YWlcIDsKK+acrOaWh+aJueiplSA8IGhvbm1vbmhpaHlvdVwgOwor5Lm+5Zyw6L6y5rOVIDwga2FuY2hpbm91aG91XCA7Civllqfllqflm4Llm4IgPCBrZW5rZW5nb3Vnb3VcIDsKK+advuaelyA8IG1hdHN1YmF5YXNoaVwgOwor5Lq65a6a5bCL5ZWPIDwgamludGVpamlubW9uXCA7Civku7vmnJ/muoDkuoYgPCBuaW5raW1hbnJ5b3VcIDsKK+ertummrOaWsOiBniA8IGtlaWJhc2hpbmJ1blwgOwor5L+u6aO+5a2QIDwgc2h1dXNob2t1c2hpXCA7Civlj47nm4rnjocgPCBzaHV1ZWtpcml0c3VcIDsKK+elneWEgOiiiyA8IHNodXVnaWJ1a3Vyb1wgOwor6Zu75rCX5bel5a2mIDwgZGVua2lrb3VnYWt1XCA7CivlqZrlp7vlsYogPCBrb24nJ2ludG9kb2tlXCA7CivkvpvntabpgY7lpJogPCBreW91a3l1dWthdGFcIDsKK+WPo+mgreWvqeeQhiA8IGtvdXRvdXNoaW5yaVwgOwor6Zqc5a6z54mpIDwgc2hvdWdhaWJ1dHN1XCA7CivlubPlkozmlZnogrIgPCBoZWl3YWt5b3Vpa3VcIDsKK+m7kumKueeXhSA8IGt1cm9zYWJpYnlvdVwgOwor5Lq654mp6KmVIDwgamluYnV0c3VoeW91XCA7Civnt4/lkIjnl4XpmaIgPCBzb3Vnb3VieW91aW5cIDsKK+S4iuWxpOawl+a1gSA8IGpvdXNvdWtpcnl1dVwgOwor6ICB6b2i5bm06YeRIDwgcm91cmVpbmVua2luXCA7Civpm5HmiYDlvpcgPCB6YXRzdXNob3Rva3VcIDsKK+WJpeijveihkyA8IGhha3VzZWlqdXRzdVwgOwor5ryU5aWP57e057+SIDwgZW5zb3VyZW5zaHV1XCA7Civni6zljaDmrLIgPCBkb2t1c2VuJyd5b2t1XCA7Civku5XmjpvlnLDpm7cgPCBzaGlrYWtlamlyYWlcIDsKK+adn+afsSA8IHRzdWthYmFzaGlyYVwgOwor5Zue6Lui6LOH6YeRIDwga2FpdGVuc2hpa2luXCA7CivntbbmnJvnmoQgPCB6ZXRzdWJvdXRla2lcIDsKK+aal+S4reaooee0oiA8IGFuY2h1dW1vc2FrdVwgOwor5aSp54S26ImyIDwgdGVuJyduZW5zaG9rdVwgOwor5ZSv5oiR54us5bCKIDwgeXVpZ2Fkb2t1c29uXCA7Civpm4bmlaPkuLvnvqkgPCBzaHV1c2Fuc2h1Z2lcIDsKK+Wcn+eUo+eJqeWxiyA8IG1peWFnZW1vbm95YVwgOwor6Ieq57Wm6Ieq6LazIDwgamlreXV1amlzb2t1XCA7CivohILogqros6ogPCBzaGlib3VzaGl0c3VcIDsKK+Wul+aVmeWKhyA8IHNodXVreW91Z2VraVwgOwor5ZKM5bmz5Y2U5a6aIDwgd2FoZWlreW91dGVpXCA7Civku4/lv4MgPCBob3Rva2Vnb2tvcm9cIDsKK+WHuuWgtOiAhSA8IHNodXRzdWpvdXNoYVwgOwor5Zyw5pa55YiG5qipIDwgY2hpaG91YnVua2VuXCA7Civkub7mvIblg48gPCBrYW5zaGl0c3V6b3VcIDsKK+W4guWGheims+WFiSA8IHNoaW5haWthbmtvdVwgOwor5pS+5bCE6IO96ZuoIDwgaG91c2hhbm91YW1lXCA7CivlhoXnvbDnmoQgPCBuYWliYXRzdXRla2lcIDsKK+S4g+inkuW9oiA8IHNoaWNoaWtha2tlaVwgOwor6Kuc5aCx5qmf6ZaiIDwgY2hvdWhvdWtpa2FuXCA7CivljbPoiIjmm7IgPCBzb2treW91a3lva3VcIDsKK+WwseWtpue+qeWLmSA8IHNodXVnYWt1Z2ltdVwgOwor6Iiq56m65YSq5YuiIDwga291a3V1eXV1c2VpXCA7CivkurrmiY3nmbvnlKggPCBqaW56YWl0b3V5b3VcIDsKK+aVo+eZuueahCA8IHNhbnBhdHN1dGVraVwgOwor6KSH5pys5L2N5Yi2IDwgZnVrdWhvbicnaXNlaVwgOwor55Sf5rS75L+d6K23IDwgc2Vpa2F0c3Vob2dvXCA7Civpm4bkuK3osarpm6ggPCBzaHV1Y2h1dWdvdXVcIDsKK+W+tOWFteWFjemZpCA8IGNob3VoZWltZW5qb1wgOwor5YWs5a6z5ZWP6aGMIDwga291Z2FpbW9uZGFpXCA7CivljZjouqvotbTku7sgPCB0YW5zaGluZnVuaW5cIDsKK+W6g+WPo+eTtiA8IGhpcm9rdWNoaWJpblwgOwor5beu5Yil55So6KqeIDwgc2FiZXRzdXlvdWdvXCA7Civkurrlj6Pli5XmhYsgPCBqaW5rb3Vkb3V0YWlcIDsKK+Wuh+WumeeJqeeQhiA8IHVjaHV1YnV0c3VyaVwgOwor5YWo6Z2i5oim5LqJIDwgemVubWVuc2Vuc291XCA7CivntYzmuIjnirbmhYsgPCBrZWl6YWlqb3V0YWlcIDsKK+WnlOiol+eglOeptiA8IGl0YWt1a2Vua3l1dVwgOwor5Y2D6L6b5LiH6IumIDwgc2Vuc2hpbmJhbmt1XCA7CivljLvnmYLloLHphawgPCBpcnlvdWhvdXNodXVcIDsKK+awtOaZtuaZguioiCA8IHN1aXNob3Vkb2tlaVwgOwor5LiJ5paH5paH5aOrIDwgc2FubW9uYnVuc2hpXCA7Civlm57ou6LmnKjppqwgPCBrYWl0ZW5tb2t1YmFcIDsKK+S4jeaIpuadoee0hCA8IGZ1c2Vuam91eWFrdVwgOwor5LiA55Sf5oe45ZG9IDwgaXNzaG91a2VubWVpXCA7CivlnKfnuK7njocgPCBhc3NodWt1cml0c3VcIDsKK+aXpemAsuaciOatqSA8IG5pc3NoaW5nZXBwb1wgOwor5Y+X6KiX6LKp5aOyIDwganV0YWt1aGFuYmFpXCA7CivmlofljJbli7Lnq6AgPCBidW5rYWt1bnNob3VcIDsKK+aCoOaCoOmWkemWkSA8IHl1dXl1dWthbmthblwgOwor5LuP6Iux6L6e5YW4IDwgZnV0c3VlaWppdGVuXCA7Civlrr/ms4rkurogPCBzaHVrdWhha3VuaW5cIDsKK+eVmeWuiOeVqumbu+ipsSA8IHJ1c3ViYW5kZW53YVwgOwor6KGb55Sf5bel5a2mIDwgZWlzZWlrb3VnYWt1XCA7CivmlL/opovmlL7pgIEgPCBzZWlrZW5ob3Vzb3VcIDsKK+awtOaAp+Whl+aWmSA8IHN1aXNlaXRvcnlvdVwgOwor54yp57SF54axIDwgc2hvdWtvdW5ldHN1XCA7CivlhYjpgLLlhbXlmaggPCBzZW5zaGluaGVpa2lcIDsKK+iHquW3seS4reW/gyA8IGppa29jaHV1c2hpblwgOwor5Y2U5Yqb6Yu8IDwga3lvdXJ5b2t1a291XCA7CivlkIzlkozmlZnogrIgPCBkb3V3YWt5b3Vpa3VcIDsKK+Wtpum9ouWFkOerpSA8IGdha3VyZWlqaWRvdVwgOwor6IGW5Zyw5beh56S8IDwgc2VpY2hpanVucmVpXCA7CivnpL7lm6Pms5XkurogPCBzaGFkYW5ob3VqaW5cIDsKK+aJgOeVquWcsCA8IHRva29yb2JhbmNoaVwgOwor5rOo6YeI5pu4IDwgY2h1dXNoYWt1c2hvXCA7CivosqjnianovLjpgIEgPCBrYW1vdHN1eXVzb3VcIDsKK+eJueW+tOmHjyA8IHRva3VjaG91cnlvdVwgOwor5q2j5aSa6KeS5b2iIDwgc2VpdGFrYWt1a2VpXCA7Civmh5Dlt6XlkIggPCBmdXRva29yb2d1YWlcIDsKK+mbu+awl+WuuemHjyA8IGRlbmtpeW91cnlvdVwgOwor5rqW56aB5rK755SjIDwganVua2luY2hpc2FuXCA7Civmj4/lhpnlipsgPCBieW91c2hhcnlva3VcIDsKK+WMluWtpuani+mAoCA8IGthZ2FrdWtvdXpvdVwgOwor55Sf54mp5a2mIDwgc2VpYnV0c3VnYWt1XCA7CivkuIDlhZrni6zoo4EgPCBpdHRvdWRva3VzYWlcIDsKK+eEoemZkOWwj+aVsCA8IG11Z2Vuc2hvdXN1dVwgOwor5ri+54S25LiA5L2TIDwga29uemVuJydpdHRhaVwgOwor5rW35bqV5Zyw6ZyHIDwga2FpdGVpamlzaGluXCA7CivljZrlo6voqrLnqIsgPCBoYWt1c2hpa2F0ZWlcIDsKK+W5s+Wdh+Wvv+WRvSA8IGhlaWtpbmp1bXlvdVwgOwor5biC5rCR6YGL5YuVIDwgc2hpbWluJyd1bmRvdVwgOwor6KiY5b+15Ye654mIIDwga2luZW5zaHVwcGFuXCA7Civoo4Xnva7liLblvqEgPCBzb3VjaGlzZWlneW9cIDsKK+WOn+ijgeWIpOaJgCA8IGdlbnNhaWJhbnNob1wgOwor5qSc6KiO5aeU5ZOh5LyaIDwga2VudG91aWlua2FpXCA7CivljprnlJ/lpKfoh6MgPCBrb3VzZWlkYWlqaW5cIDsKK+ayueiEguW3pealrSA8IHl1c2hpa291Z3lvdVwgOwor57eP5pSv6YWN5Lq6IDwgc291c2hpaGFpbmluXCA7Civoqq3mm7jlipsgPCBkb2t1c2hvcnlva3VcIDsKK+aXpeeFp+aZgumWkyA8IG5pc3Nob3VqaWthblwgOwor5LiA6Iis5pWZ5pu4IDwgaXBwYW5reW91c2hvXCA7CivkuIDpg6jlp4vntYIgPCBpY2hpYnVzaGlqdXVcIDsKK+mWouaVsOWOn+WeiyA8IGthbnN1dWdlbmtlaVwgOwor55+l6K2Y5qyyIDwgY2hpc2hpa2l5b2t1XCA7CivkuInph43lrp3lhqAgPCBzYW5qdXVob3VrYW5cIDsKK+WFqOmAn+WKmyA8IHplbnNva3VyeW9rdVwgOwor5q2T6YCB6L+O5LyaIDwga2Fuc291Z2Vpa2FpXCA7Civnt4rmgKXpgb/pm6MgPCBraW5reXV1aGluYW5cIDsKK+WIuemCo+S4u+e+qSA8IHNldHN1bmFzaHVnaVwgOwor5bel5qWt5Zyw5Yy6IDwga291Z3lvdWNoaWt1XCA7CivmiJHmpb3lpJrluIIgPCBnYXJha3V0YWljaGlcIDsKK+ihhuitsOmZouitsOWToSA8IHNodXVnaWluZ2lpblwgOwor6Lui5YaZ5o265p+TIDwgdGVuc2hhbmFzc2VuXCA7Civoh6rnhLbngb3lrrMgPCBzaGl6ZW5zYWlnYWlcIDsKK+a3see0heiJsiA8IHNoaW5rb3VzaG9rdVwgOwor5aSp5LqV5qOn5pW3IDwgdGVuam91c2FqaWtpXCA7CivlhYjooYzmnaHku7YgPCBzZW5rb3Vqb3VrZW5cIDsKK+aciOS4i+awt+S6uiA8IGdla2thaHlvdWppblwgOwor5pyq5bm0IDwgaGl0c3VqaWRvc2hpXCA7CivosLfmh5AgPCB0YW5pYnV0b2tvcm9cIDsKK+mBuOiAg+WnlOWToeS8miA8IHNlbmtvdWlpbmthaVwgOwor5Yy76Jas5YiG5qWtIDwgaXlha3VidW5neW91XCA7Civpm4HpqqggPCBrYXJpZ2FuZWJvbmVcIDsKK+i6q+WFg+S/neiovCA8IG1pbW90b2hvc2hvdVwgOwor6Luf552A6Zm4IDwgbmFuY2hha3VyaWt1XCA7CivntJTmraPnp5HlraYgPCBqdW5zZWlrYWdha3VcIDsKK+S6jOmHjemBk+W+syA8IG5panV1ZG91dG9rdVwgOwor5oKy5Zac5Lqk5LqkIDwgaGlraWtvbW9nb21vXCA7Civnt4rmgKXli5XorbAgPCBraW5reXV1ZG91Z2lcIDsKK+WkqumZvembu+axoCA8IHRhaXlvdWRlbmNoaVwgOwor6KGX6aCt6Yyy6Z+zIDwgZ2FpdG91cm9rdW9uXCA7Civlm73pmpvmqZ/plqIgPCBrb2t1c2Fpa2lrYW5cIDsKK+adseWPoyA8IGhpZ2FzaGlndWNoaVwgOwor5YmN5YK+5ae/5YuiIDwgemVua2Vpc2hpc2VpXCA7CivluLDlsZ7mhI/orZggPCBraXpva3Vpc2hpa2lcIDsKK+WFrOihhuS+v+aJgCA8IGtvdXNodXViZW5qb1wgOwor5pel5pys5Zu95YaFIDwgbmlob25rb2t1bmFpXCA7CivoibLmg4Xni4IgPCBzaGlraWpvdWt5b3VcIDsKK+mDteS+v+iiiyA8IHl1dWJpbmJ1a3Vyb1wgOwor6YG45rCR5oCd5oOzIDwgc2VubWluc2hpc291XCA7CivlkoDlmrzpgYvli5UgPCBzb3NoYWt1dW5kb3VcIDsKK+iomOW/teWGmeecnyA8IGtpbmVuc2hhc2hpblwgOwor6Ki65a+f5Y+wIDwgc2hpbnNhdHN1ZGFpXCA7Civms6HmsqvnmoQgPCBob3VtYXRzdXRla2lcIDsKK+eBq+eHteW4g+WboyA8IGtvdGF0c3VidXRvblwgOwor5Luu6YeI5pS+IDwga2FyaXNoYWt1aG91XCA7CivlhajpnaLnpoHmraIgPCB6ZW5tZW5raW5zaGlcIDsKK+WMl+WbnuW4sOe3miA8IGtpdGFrYWlraXNlblwgOwor6YCj5ZCI6Imm6ZqKIDwgcmVuZ291a2FudGFpXCA7CivmgKXpgLLnmoQgPCBreXV1c2hpbnRla2lcIDsKK+S6uuWRveaVkeWKqSA8IGppbm1laWt5dXVqb1wgOwor5oim5LqJ54q25oWLIDwgc2Vuc291am91dGFpXCA7CivlpbPlrZDlpKflraYgPCBqb3NoaWRhaWdha3VcIDsKK+WbveWjq+eEoeWPjCA8IGtva3VzaGltdXNvdVwgOwor5bmz5Z2H5L2Z5ZG9IDwgaGVpa2luJyd5b21laVwgOwor5LqL5L6L56CU56m2IDwgamlyZWlrZW5reXV1XCA7CivliIbmlaPmipXos4cgPCBidW5zYW50b3VzaGlcIDsKK+iouuWvn+WIuCA8IHNoaW5zYXRzdWtlblwgOwor5qW15bCP5YCkIDwga3lva3VzaG91Y2hpXCA7Civlgbblg4/npLzmi50gPCBndXV6b3VyZWloYWlcIDsKK+WKueaenOimv+mdoiA8IGtvdWthdGVraW1lblwgOwor57eK5by157ep5ZKMIDwga2luY2hvdWthbndhXCA7CivkuI3oqLHopIfoo70gPCBmdWt5b2Z1a3VzZWlcIDsKK+WMl+asp+elnuipsSA8IGhva3VvdXNoaW53YVwgOwor5Lq65LqL6KGM5pS/IDwgamluamlneW91c2VpXCA7CivmmK3lkozlubTplpMgPCBzaG91d2FuZW5rYW5cIDsKK+WbveWtl+WVj+mhjCA8IGtva3VqaW1vbmRhaVwgOwor5L6b6KGA6ICFIDwga3lvdWtldHN1c2hhXCA7Civlm73li5nlpKfoh6MgPCBrb2t1bXVkYWlqaW5cIDsKK+adr+S6iyA8IHNha2F6dWtpZ290b1wgOwor6KiA6Kqe6Zqc5a6zIDwgZ2VuZ29zaG91Z2FpXCA7Civlho3osqnkvqHmoLwgPCBzYWloYW5rYWtha3VcIDsKK+W5s+Wdh+agquS+oSA8IGhlaWtpbmthYnVrYVwgOwor5a6J5oGv6aaZ6YW4IDwgYW5zb2t1a291c2FuXCA7CivorZzku6PlpKflkI0gPCBmdWRhaWRhaW15b3VcIDsKK+WPjuWFpeW9uSA8IHNodXVueXV1eWFrdVwgOwor56+A55So6ZuGIDwgc2V0c3V5b3VzaHV1XCA7CivphY3pgZTmlpkgPCBoYWl0YXRzdXJ5b3VcIDsKK+mhnue+qeiqnui+nuWFuCA8IHJ1aWdpZ29qaXRlblwgOwor6YGT6Lev6KiI55S7IDwgZG91cm9rZWlrYWt1XCA7Civlj6Toh6rli5Xou4ogPCBmdXJ1amlkb3VzaGFcIDsKK+eLrOaelSA8IGhpdG9yaW1ha3VyYVwgOwor5a655ae/56uv6bqXIDwgeW91c2hpdGFucmVpXCA7CivmlrDljZLogIUgPCBzaGluc290c3VzaGFcIDsKK+iri+iyoOalreiAhSA8IHVrZW9pZ3lvdXNoYVwgOwor6YCa5bi45Y+j6KqeIDwgdHN1dWpvdWtvdWdvXCA7CivlnKjlpJbpgqbkurogPCB6YWlnYWlob3VqaW5cIDsKK+WPjuebo+WKmyA8IHNodXVrYW5yeW9rdVwgOwor6ZaL5pS+57WM5riIIDwga2FpaG91a2VpemFpXCA7Civnmb7okYnnrrEgPCBoeWFrdXlvdWJha29cIDsKK+S9k+aTjeertuaKgCA8IHRhaXNvdWt5b3VnaVwgOwor5Yq05YON5ZCM55ufIDwgcm91ZG91ZG91bWVpXCA7Civlm73pmpvpg73luIIgPCBrb2t1c2FpdG9zaGlcIDsKK+acieWIuumJhOe3miA8IHl1dXNoaXRlc3NlblwgOwor5Zuj5L2T6KGM5YuVIDwgZGFudGFpa291ZG91XCA7Civlv5znlKjmlbDlraYgPCBvdXlvdXN1dWdha3VcIDsKK+WNlOWKm+iAhSA8IGt5b3VyeW9rdXNoYVwgOwor5Lqk6YCa5beh5p+7IDwga291dHN1dWp1bnNhXCA7CivpgJ/pgZTkvr8gPCBzb2t1dGF0c3ViaW5cIDsKK+eEoeaVteiJpumaiiA8IG11dGVraWthbnRhaVwgOwor6Iiq56m65Lya56S+IDwga291a3V1Z2Fpc2hhXCA7CivpioDnmb3oibIgPCBnaW5oYWt1c2hva3VcIDsKK+Wkp+aUv+WliemChCA8IHRhaXNlaWhvdWthblwgOwor5LiN5pKT5LiN5bGIIDwgZnV0b3VmdWt1dHN1XCA7Civnm7jplqLplqLkv4IgPCBzb3VrYW5rYW5rZWlcIDsKK+WQjOebn+e9t+alrSA8IGRvdW1laWhpZ3lvdVwgOwor5aS+56u55qGDIDwga3lvdWNoaWt1dG91XCA7Civou43lgpnnq7bkuokgPCBndW5iaWt5b3Vzb3VcIDsKK+W9ouWuueWLleipniA8IGtlaXlvdWRvdXNoaVwgOwor6KOc57Wm5bm557eaIDwgaG9reXV1a2Fuc2VuXCA7CivnlZznlJ/pgZMgPCBjaGlrdXNob3Vkb3VcIDsKK+mbqui+seaIpiA8IHNldHN1am9rdXNlblwgOwor54K65pu/6KOB5a6aIDwga2F3YXNlc2FpdGVpXCA7Civooajnj77kuLvnvqkgPCBoeW91Z2Vuc2h1Z2lcIDsKK+adseS6rOedgCA8IHRvdWt5b3VjaGFrdVwgOwor6Zu75L+h5bGAIDwgZGVuc2hpbmt5b2t1XCA7CivmlofmlZnlnLDljLogPCBidW5reW91Y2hpa3VcIDsKK+mdkuiJsueXhyA8IHNlaXNob2t1c2hvdVwgOwor5bqD5ZGK5Li7IDwga291a29rdW51c2hpXCA7Civph5HlsZ7nlrLlirQgPCBraW56b2t1aGlyb3VcIDsKK+WPs+aWuemrmOm6l+alvSA8IHVob3Vrb21hZ2FrdVwgOwor5by35Yi255aO6ZaLIDwga3lvdXNlaXNva2FpXCA7CivmnbHkuqznmbogPCB0b3VreW91aGF0c3VcIDsKK+itpuimlue3j+eboyA8IGtlaXNoaXNvdWthblwgOwor5Luj6KGo56S+5ZOhIDwgZGFpaHlvdXNoYWluXCA7CivlgJ/lsYvkvY/lsYUgPCBzaGFrdXlhenVtYWlcIDsKK+W+tOWFteWItuW6piA8IGNob3VoZWlzZWlkb1wgOwor55+t5pyf5aSn5a2mIDwgdGFua2lkYWlnYWt1XCA7Civnq4vkvZPmlL7pgIEgPCByaXR0YWlob3Vzb3VcIDsKK+WFqOi6q+a1tCA8IHplbnNoaW4nJ3lva3VcIDsKK+Wcp+i/q+WMheW4ryA8IGFwcGFrdWhvdXRhaVwgOwor5aSJ6LOq6ICFIDwgaGVuc2hpdHN1c2hhXCA7CivpgJrnlKjmnJ/plpMgPCB0c3V1eW91a2lrYW5cIDsKK+WLieW8t+aZgumWkyA8IGJlbmt5b3VqaWthblwgOwor5oi457GN6KyE5pysIDwga29zZWtpdG91aG9uXCA7Civlrrbluq3mlZnogrIgPCBrYXRlaWt5b3Vpa3VcIDsKK+WcsOmch+aOoumJsSA8IGppc2hpbnRhbmtvdVwgOwor6YG/6Zuj5qKv5a2QIDwgaGluYW5iYXNoaWdvXCA7CivlpI/mnKjnq4sgPCBuYXRzdWtvZGFjaGlcIDsKK+ekvuS8muWlieS7lSA8IHNoYWthaWhvdXNoaVwgOwor5ama5aSW5oCn5LqkIDwga29uZ2Fpc2Vpa291XCA7CivkuI3lj6/mipflipsgPCBmdWtha291cnlva3VcIDsKK+S4gOWhiiA8IGhpdG9rYXRhbWFyaVwgOwor6K2m5a+f5bqBIDwga2Vpc2F0c3VjaG91XCA7Civmpa3nlYzliJ0gPCBneW91a2FpaGF0c3VcIDsKK+Wft+ihjOapn+mWoiA8IHNoaWtrb3VraWthblwgOwor5Yuk5YuZ6KmV5a6aIDwga2lubXVoeW91dGVpXCA7CivlpKnplbfnr4AgPCB0ZW5jaG91c2V0c3VcIDsKK+W4uOeUqOWvvuaVsCA8IGpvdXlvdXRhaXN1dVwgOwor5aiY5b+DIDwgbXVzdW1lZ29rb3JvXCA7CivlpKfpgZPoirjkurogPCBkYWlkb3VnZWluaW5cIDsKK+m7kumiqOeZvembqCA8IGtva3VmdXVoYWt1dVwgOwor6IKl5Y6a5oCn6by754KOIDwgaGlrb3VzZWliaWVuXCA7CivpioDooYzmpa3li5kgPCBnaW5rb3VneW91bXVcIDsKK+ePvuWcsOiqv+afuyA8IGdlbmNoaWNob3VzYVwgOwor6YGg5rSL6Iiq5rW3IDwgZW4nJ3lvdWtvdWthaVwgOwor5aSW5Lqk6Zai5L+CIDwgZ2Fpa291a2Fua2VpXCA7Civnp4HlrabliqnmiJAgPCBzaGlnYWt1am9zZWlcIDsKK+eUo+ikpeeGsSA8IHNhbmpva3VuZXRzdVwgOwor54Sh55eb5YiG5aipIDwgbXV0c3V1YnVuYmVuXCA7CivkuI3oia/lgrXmqKkgPCBmdXJ5b3VzYWlrZW5cIDsKK+WcsOWfn+aZguWIuyA8IGNoaWlraWppa29rdVwgOwor5Ye554mI5Y2w5Yi3IDwgb3VoYW5pbnNhdHN1XCA7Civln7rlubnnlKPmpa0gPCBraWthbnNhbmd5b3VcIDsKK+i3r+S4iumnkOi7iiA8IHJvam91Y2h1dXNoYVwgOwor5Y2Y5Yud5byPIDwgdGFuc2hvdXNoaWtpXCA7CivkupzphbjljJbnqpLntKAgPCBhc2Fua2FjaGlzc29cIDsKK+mmluiEs+S8muirhyA8IHNodW5vdWthaWRhblwgOwor54us6KOB5pS/5rK7IDwgZG9rdXNhaXNlaWppXCA7CivlpJbkuqTllY/poYwgPCBnYWlrb3Vtb25kYWlcIDsKK+mgremggumqqCA8IHRvdWNob3Vrb3RzdVwgOwor56C055Sj55Sz6KuLIDwgaGFzYW5zaGluc2VpXCA7Civpg7flnJ/oirjog70gPCBreW91ZG9nZWlub3VcIDsKK+W+jOaWueWcsOWfnyA8IGtvdWhvdWNoaWlraVwgOwor5aSq6Zm95pS+5bCEIDwgdGFpeW91aG91c2hhXCA7Civlo4rooYDnl4UgPCBrYWlrZXRzdWJ5b3VcIDsKK+ilv+a0i+aWh+aYjiA8IHNlaXlvdWJ1bm1laVwgOwor5oyv5pu/6Ly46YCBIDwgZnVyaWthZXl1c291XCA7CivkuqTmj5vmnaHku7YgPCBrb3VrYW5qb3VrZW5cIDsKK+eZuuihjOW4guWgtCA8IGhha2tvdXNoaWpvdVwgOwor5LiA5pio5pio5bm0IDwgc2FraW90b3Rvc2hpXCA7Civoo73oj5Pmpa3ogIUgPCBzZWlrYWd5b3VzaGFcIDsKK+eci+adv+WomCA8IGthbmJhbm11c3VtZVwgOwor5oSb5Zu95Zuj5L2TIDwgYWlrb2t1ZGFudGFpXCA7CivlpInlvaLopo/liYcgPCBoZW5rZWlraXNva3VcIDsKK+S6uuawl+aKleelqCA8IG5pbmtpdG91aHlvdVwgOwor55S35aWz5bmz562JIDwgZGFuam9ieW91ZG91XCA7Civpg7Xkvr/okYnmm7ggPCB5dXViaW5oYWdha2lcIDsKK+e3qOmbhuWxgCA8IGhlbnNodXVreW9rdVwgOwor5pm05b6M6ZuoIDwgaGFyZW5vY2hpYW1lXCA7CivluILloLTmkqTpgIAgPCBzaGlqb3V0ZXR0YWlcIDsKK+WuieWumuWQjOS9jeS9kyA8IGFudGVpZG91aXRhaVwgOwor5a6a5pyf5qSc6Ki6IDwgdGVpa2lrZW5zaGluXCA7CivmtYHli5Xpo58gPCByeXV1ZG91c2hva3VcIDsKK+Wkj+elrSA8IG5hdHN1bWF0c3VyaVwgOwor5Zuj5L2T56u25oqAIDwgZGFudGFpa3lvdWdpXCA7Civpo5/pgZPmpb0gPCBzaG9rdWRvdXJha3VcIDsKK+awkemWk+Wbo+S9kyA8IG1pbmthbmRhbnRhaVwgOwor5bCB5bu65oCd5oOzIDwgaG91a2Vuc2hpc291XCA7CivoiKrntprot53pm6IgPCBrb3V6b2t1a3lvcmlcIDsKK+WPjOWzsOmnsemnnSA8IHNvdWhvdXJha3VkYVwgOwor55m+56eR5YWo5pu4IDwgaHlha2themVuc2hvXCA7CivoqabooYzpjK/oqqQgPCBzaGlrb3VzYWt1Z29cIDsKK+W3peWgtOWcsOW4ryA8IGtvdWpvdWNoaXRhaVwgOwor5q+b57mU6YymIDwga2VvcmluaXNoaWtpXCA7CivmlL/msrvmlLnpnakgPCBzZWlqaWthaWtha3VcIDsKK+W4guawkeS8mumkqCA8IHNoaW1pbmthaWthblwgOwor5rGC5Lq65Y+jIDwga3l1dWppbmd1Y2hpXCA7CivmnInpmZDkvJrnpL4gPCB5dXVnZW5nYWlzaGFcIDsKK+mHjeWVhuS4u+e+qSA8IGp1dXNob3VzaHVnaVwgOwor6aeF5YmN5bqD5aC0IDwgZWtpbWFlaGlyb2JhXCA7CivntYLnnYDpp4UgPCBzaHV1Y2hha3Vla2lcIDsKK+aUv+ayu+iyrOS7uyA8IHNlaWppc2VraW5pblwgOwor6buS5rC054axIDwga29rdXN1aW5ldHN1XCA7Civku67pgLLntJogPCBrYXJpc2hpbmt5dXVcIDsKK+WwgualreS4u+WppiA8IHNlbmd5b3VzaHVmdVwgOwor54++5aC055uj552jIDwgZ2VuYmFrYW50b2t1XCA7Civlhazou6LlkajmnJ8gPCBrb3V0ZW5zaHV1a2lcIDsKK+WPo+S4ieWRs+e3miA8IGt1Y2hpamFtaXNlblwgOwor6YWN6YGU5YWIIDwgaGFpdGF0c3VzYWtpXCA7Civlr53nianoqp4gPCBuZW1vbm9nYXRhcmlcIDsKK+S4gOaYqOaYqOWknCA8IGlzc2FrdXNha3V5YVwgOwor6Iul5q6/5Y6fIDwgd2FrYXRvbm9iYXJhXCA7CivooYDmuIXogp3ngo4gPCBrZXNzZWlrYW4nJ2VuXCA7Civkurrot6HmnKrouI8gPCBqaW5zZWtpbWl0b3VcIDsKK+W8t+WItuS/nemZuiA8IGt5b3VzZWlob2tlblwgOwor5LiA5pyb5Y2D6YeMIDwgaWNoaWJvdXNlbnJpXCA7CivlhrfolLXlrqQgPCByZWl6b3VzaGl0c3VcIDsKK+WIkeWLmeaJgOmVtyA8IGtlaW11c2hvY2hvdVwgOwor5aC05YaF5pS+6YCBIDwgam91bmFpaG91c291XCA7CivmnJ3kuInmmq7lm5sgPCBjaG91c2FuYm9zaGlcIDsKK+emj+elieWbveWutiA8IGZ1a3VzaGlrb2trYVwgOwor5rKh5Lqk5riJIDwgYm90c3Vrb3VzaG91XCA7CivplbfliIDkuIDmnp0gPCBjaG91dG91aXNzaGlcIDsKK+mdmeiEiOeYpCA8IGpvdW15YWt1cnl1dVwgOwor54Sh57ea5bel5a2mIDwgbXVzZW5rb3VnYWt1XCA7Civli53liKnmipXmiYsgPCBzaG91cml0b3VzaHVcIDsKK+Wkqeawl+amguazgSA8IHRlbmtpZ2Fpa3lvdVwgOwor6aqo57WE57mUIDwga290c3Vzb3NoaWtpXCA7CivljYPljZLplbcgPCBzZW5zb3RzdWNob3VcIDsKK+eEoeW4uOi/hemAnyA8IG11am91amluc29rdVwgOwor6KGM5YuV56eR5a2mIDwga291ZG91a2FnYWt1XCA7Civnm7TovYTlnLAgPCBjaG9ra2F0c3VjaGlcIDsKK+S6iOmYsuazqOWwhCA8IHlvYm91Y2h1dXNoYVwgOwor5piU5byPIDwgbXVrYXNoaXNoaWtpXCA7CivmpbXnp5jmg4XloLEgPCBnb2t1aGlqb3Vob3VcIDsKK+WwgeW7uuekvuS8miA8IGhvdWtlbnNoYWthaVwgOwor5LiA562L57mpIDwgaGl0b3N1amluYXdhXCA7CivlirTkvb/ntJvkuokgPCByb3VzaGlmdW5zb3VcIDsKK+iHquWtpuiHque/kiA8IGppZ2FrdWppc2h1dVwgOwor5LiN6YCj57aa57eaIDwgZnVyZW56b2t1c2VuXCA7CivmsrvlpJbms5XmqKkgPCBjaGlnYWlob3VrZW5cIDsKK+e1jOa4iOWkluS6pCA8IGtlaXphaWdhaWtvdVwgOwor5YiD54mp5LiJ5pinIDwgaGFtb25vemFubWFpXCA7CivlhYnlrabnuYrntq0gPCBrb3VnYWt1c2VuJydpXCA7CivlsLHogbfpm6MgPCBzaHV1c2hva3VuYW5cIDsKK+WFqOS8keatouespiA8IHplbmt5dXVzaGlmdVwgOwor5ZKM5rSL5oqY6KG3IDwgd2F5b3VzZXRjaHV1XCA7CivmuIXnrpfkvJrnpL4gPCBzZWlzYW5nYWlzaGFcIDsKK+W7g+iXqee9ruecjCA8IGhhaWhhbmNoaWtlblwgOwor6Ieo5bqK6Kyb576pIDwgcmluc2hvdWtvdWdpXCA7CivoqqzntYznr4AgPCBzZWtreW91YnVzaGlcIDsKK+e0lOaXpeacrOmiqCA8IGp1bicnbmlob25mdXVcIDsKK+aWh+Wtl+espuWPt+ezuyA8IG1vamlmdWdvdWtlaVwgOwor5oyZ5Zu95LiA6Ie0IDwga3lva29rdWl0Y2hpXCA7CivlpKfooYbpgYvli5UgPCB0YWlzaHV1dW5kb3VcIDsKK+W/g+i6q+eXhyA8IHNoaW5zaGluc2hvdVwgOwor5biC5aC06Kq/5p+7IDwgc2hpam91Y2hvdXNhXCA7CivlhazplovlpJbkuqQgPCBrb3VrYWlnYWlrb3VcIDsKK+mdouS8muWupCA8IG1lbmthaXNoaXRzdVwgOwor54us5Ym15YqbIDwgZG9rdXNvdXJ5b2t1XCA7CivlprnlqJggPCBpbW91dG9tdXN1bWVcIDsKK+Wkp+iUteWkp+iHoyA8IG9va3VyYWRhaWppblwgOwor5L+u5q2j5LqI566XIDwgc2h1dXNlaXlvc2FuXCA7Civlp4vmpa3lvI8gPCBzaGlneW91c2hpa2lcIDsKK+ihjOaUv+apn+mWoiA8IGd5b3VzZWlraWthblwgOwor5Yy755mC6Ly46YCB5qmfIDwgaXJ5b3V5dXNvdWtpXCA7CivmnaXlrqLnrYsgPCByYWlreWFrdXN1amlcIDsKK+mAsuWtpuWhviA8IHNoaW5nYWt1anVrdVwgOwor55uu55qE5qC8IDwgbW9rdXRla2lrYWt1XCA7CivmlL/mlZnliIbpm6IgPCBzZWlreW91YnVucmlcIDsKK+aQreS5l+ahiOWGhSA8IHRvdWpvdWFuJyduYWlcIDsKK+S6lOS6uuWbg+WtkCA8IGdvbmluYmF5YXNoaVwgOwor54us5ZaE5Li7576pIDwgZG9rdXplbnNodWdpXCA7CivoiKrnqbrmm7jnsKEgPCBrb3VrdXVzaG9rYW5cIDsKK+izm+WQpuWQjOelqCA8IHNhbnBpZG91aHlvdVwgOwor5Lq65paH5a2m5rS+IDwgamluYnVuZ2FrdWhhXCA7Civmj7TnlKjnlJ/nlKMgPCBlbicneW91c2Vpc2FuXCA7CivkuI3ogJXkvZzlnLAgPCBmdWtvdXNha3VjaGlcIDsKK+Wkp+S9v+WFrOmCuCA8IHRhaXNoaWtvdXRlaVwgOwor5rG66K2w5LqL6aCFIDwga2V0c3VnaWppa291XCA7CivmoKHmraPkv4IgPCBrb3VzZWlnYWthcmlcIDsKK+WKm+iHquaFoiA8IGNoaWthcmFqaW1hblwgOwor6YGO6YW45YyW5rC057SgIDwga2FzYW5rYXN1aXNvXCA7CivlsYvmlbfnlLogPCB5YXNoaWtpbWFjaGlcIDsKK+a4qeazieeZguazlSA8IG9uc2VucnlvdWhvdVwgOwor5LiA6aGw5LiA56yRIDwgaXBwaW4nJ2lzc2hvdVwgOwor6Zu75rCX5L+h5Y+3IDwgZGVua2lzaGluZ291XCA7CivpnJzmn7EgPCBzaGltb2Jhc2hpcmFcIDsKK+acjemjvuWTgSA8IGZ1a3VzaG9rdWhpblwgOwor6Iao5by1546HIDwgYm91Y2hvdXJpdHN1XCA7CivlsILnrqHmsLTln58gPCBzZW5rYW5zdWlpa2lcIDsKK+WkqeS9k+W0h+aLnSA8IHRlbnRhaXN1dWhhaVwgOwor6Imv5b+D55qEIDwgcnlvdXNoaW50ZWtpXCA7Civnm7jkupLlj4LnhacgPCBzb3Vnb3NhbnNob3VcIDsKK+WJsueDueaWmeeQhiA8IGthcHBvdXJ5b3VyaVwgOwor56m65b+15LuPIDwgc29yYW5lbmJ1dHN1XCA7Civpg4rlpJbpm7vou4ogPCBrb3VnYWlkZW5zaGFcIDsKK+eahueahuanmCA8IG1pbmFtaW5hc2FtYVwgOwor5L+u5q2j5Li7576pIDwgc2h1dXNlaXNodWdpXCA7Civog73njofntaYgPCBub3VyaXRzdWt5dXVcIDsKK+ijnOW8t+iovOaLoCA8IGhva3lvdXNob3Vrb1wgOwor5pif5Y2wIDwgaG9zaGlqaXJ1c2hpXCA7CivloIbnqY3niakgPCB0YWlzZWtpYnV0c3VcIDsKK+S6uuadkOmKgOihjCA8IGppbnphaWdpbmtvdVwgOwor6L+R5Luj6Z+z5qW9IDwga2luZGFpb25nYWt1XCA7Civoo4/pnaLlt6XkvZwgPCByaW1lbmtvdXNha3VcIDsKK+azleayu+ekvuS8miA8IGhvdWNoaXNoYWthaVwgOwor5Ye657SN5L+CIDwgc3VpdG91Z2FrYXJpXCA7CivlpKfnm6TmjK/oiJ4gPCBvb2JhbmJ1cnVtYWlcIDsKK+S4ieWykOS7o+ihqCA8IHNhbmdpZGFpaHlvdVwgOwor6JOE56mN566hIDwgY2hpa3VzZWtpa2FuXCA7Civni6zouqvogIUgPCBkb2t1c2hpbm1vbm9cIDsKK+aVmeWToee1hOWQiCA8IGt5b3Vpbmt1bWlhaVwgOwor5rW36Zuj5pWR5YqpIDwga2FpbmFua3l1dWpvXCA7CivpjLLpn7PmlL7pgIEgPCByb2t1b25ob3Vzb3VcIDsKK+S4ieiAheWHoemAgCA8IHNhbnNoYWJvbnRhaVwgOwor55+z56u56ImyIDwgc2VraWNoaWt1aXJvXCA7Civnm7TohbjnmYwgPCBjaG9rdWNob3VnYW5cIDsKK+eqgeeZuueahCA8IHRvcHBhdHN1dGVraVwgOwor5pel5pys5rW35rWBIDwgbmlob25rYWlyeXV1XCA7Civlj7LkuIrmnIDlpKcgPCBzaGlqb3VzYWlkYWlcIDsKK+iKuOihk+eahCA8IGdlaWp1dHN1dGVraVwgOwor6Z2e5pm26LOqIDwgaGlzaG91c2hpdHN1XCA7CivoqJjmhrbpmpzlrrMgPCBraW9rdXNob3VnYWlcIDsKK+S4jeWKtOaJgOW+lyA8IGZ1cm91c2hvdG9rdVwgOwor6ICB6I2Y5oCd5oOzIDwgcm91c291c2hpc291XCA7CivnjononIDpu40gPCB0b3Vtb3Jva29zaGlcIDsKK+i7jemcgOW3pealrSA8IGd1bmp1a291Z3lvdVwgOwor5bCP5b+D6ICFIDwgc2hvdXNoaW5tb25vXCA7Civpm6LlkIjpm4bmlaMgPCByaWdvdXNodXVzYW5cIDsKK+iJr+Wmu+izouavjSA8IHJ5b3VzYWlrZW5ib1wgOwor6LuN5Y+45Luk5a6YIDwgZ3Vuc2hpcmVpa2FuXCA7Civpu5LmsLTlvJUgPCBrdXJvbWl6dWhpa2lcIDsKK+iyv+aYk+S8muekviA8IGJvdWVraWdhaXNoYVwgOwor54eQ6YW46IKl5paZIDwgcmluc2FuaGlyeW91XCA7CivmhJ/nhrHliaQgPCBrYW4nJ25ldHN1emFpXCA7CivnhKHpmZDosqzku7sgPCBtdWdlbnNla2luaW5cIDsKK+Wor+alveWupCA8IGdvcmFrdXNoaXRzdVwgOwor6Y6u55eb6JasIDwgY2hpbnRzdXV5YWt1XCA7Civnp5HlrabmgJ3mg7MgPCBrYWdha3VzaGlzb3VcIDsKK+Wbm+a1t+WQjOiDniA8IHNoaWthaWRvdWhvdVwgOwor5Luj55CG5aeU5Lu754q2IDwgZGFpcmlpbmluam91XCA7CivlgaXlurfllY/poYwgPCBrZW5rb3Vtb25kYWlcIDsKK+aEn+WCt+S4u+e+qSA8IGthbnNob3VzaHVnaVwgOwor6aas6aCt6Kaz6Z+zIDwgYmF0b3VrYW4nJ25vblwgOwor5aSp6aCC6Led6ZuiIDwgdGVuY2hvdWt5b3JpXCA7Civog73njofnmoQgPCBub3VyaXRzdXRla2lcIDsKK+iqv+afu+mDqOmVtyA8IGNob3VzYWJ1Y2hvdVwgOwor5ZCI5ZSx5puyIDwgZ2Fzc2hvdWt5b2t1XCA7CivkuLnpoILptrQgPCB0YW5jaG91ZHp1cnVcIDsKK+ihjOWLleWRveS7pCA8IGtvdWRvdW1laXJlaVwgOwor54K65pu/5omL5b2iIDwga2F3YXNldGVnYXRhXCA7CivotaTpgZPmsJflm6MgPCBzZWtpZG91a2lkYW5cIDsKK+epuuS4reiQveS4iyA8IGt1dWNodXVyYWtrYVwgOwor6Z2p5paw55qEIDwga2FrdXNoaW50ZWtpXCA7CivlrprmoLzojbfph40gPCB0ZWlrYWt1a2FqdXVcIDsKK+eCuuabv+mKgOihjCA8IGthd2FzZWdpbmtvdVwgOwor5a6Y6IO95Li7576pIDwga2FuJydub3VzaHVnaVwgOwor5a625bqt5pWZ5birIDwga2F0ZWlreW91c2hpXCA7CivmmLzlpJzlhbzooYwgPCBjaHV1eWFrZW5rb3VcIDsKK+WuouWVhuWjsiA8IGt5YWt1c2hvdWJhaVwgOwor5LiA5ous5byPIDwgaWtrYXRzdXNoaWtpXCA7CivnlZznlKPmpa0gPCBjaGlrdXNhbmd5b3VcIDsKK+S8muekvuWWtualrSA8IGthaXNoYWVpZ3lvdVwgOwor6KKL6bygIDwgZnVrdXJvbmV6dW1pXCA7CivllZPokpnmgJ3mg7MgPCBrZWltb3VzaGlzb3VcIDsKK+mdnuW+queSsOeahCA8IGhpanVua2FudGVraVwgOwor5paH5rCR57Wx5Yi2IDwgYnVubWludG91c2VpXCA7CivpgY7phbjljJbniakgPCBrYXNhbmthYnV0c3VcIDsKK+S4gOW/teeZuui1tyA8IGljaGluZW5ob2traVwgOwor5Ye66KGA5q27IDwgc2h1a2tldHN1c2hpXCA7CivogrLmiJDmoL3ln7kgPCBpa3VzZWlzYWliYWlcIDsKK+ePvuWgtOaknOiovCA8IGdlbmJha2Vuc2hvdVwgOwor5pmC5Luj6ICD6Ki8IDwgamlkYWlrb3VzaG91XCA7CivmhJ/luqboia/lpb0gPCBrYW5kb3J5b3Vrb3VcIDsKK+eZvemrqumgrSA8IHNoaXJhZ2FhdGFtYVwgOwor6YCP5piO5Lq66ZaTIDwgdG91bWVpbmluZ2VuXCA7CivmlrDlvaLlvI8gPCBzaGlua2Vpc2hpa2lcIDsKK+W4uOWll+aJi+autSA8IGpvdXRvdXNodWRhblwgOwor5YWx5pyJ54mpIDwga3lvdXl1dWJ1dHN1XCA7CivlkozlubPlt6XkvZwgPCB3YWhlaWtvdXNha3VcIDsKK+eUs+WRiueusSA8IHNoaW5rb2t1YmFrb1wgOwor5pqX5Lit6aOb6LqNIDwgYW5jaHV1aGl5YWt1XCA7Civkupzlr5LluK/msJflgJkgPCBha2FudGFpa2lrb3VcIDsKK+abuOeVmeaWmSA8IGtha2l0b21lcnlvdVwgOwor6auY6Z+z6YOo6KiY5Y+3IDwga291b25idWtpZ291XCA7CivkurrmsJHoo4HliKQgPCBqaW5taW5zYWliYW5cIDsKK+aWveihjOimj+WJhyA8IHNoaWtvdWtpc29rdVwgOwor5Y2K6Lqr5LiN6ZqPIDwgaGFuc2hpbmZ1enVpXCA7CivluIzph4jnhrEgPCBraXNoYWt1bmV0c3VcIDsKK+aZrumAmuWQjeipniA8IGZ1dHN1dW1laXNoaVwgOwor5bGx5Y+j55yMIDwgeWFtYWd1Y2hpa2VuXCA7Civln7fnrYbogIUgPCBzaGlwcGl0c3VzaGFcIDsKK+WvvuixoeevhOWbsiA8IHRhaXNob3VoYW4nJ2lcIDsKK+S6uuawkeaIpue3miA8IGppbm1pbnNlbnNlblwgOwor57Ch5piO5by35Zu6IDwga2FubWVpa3lvdWtvXCA7Civlj6/og73pgbjmip4gPCBrYW5vdXNlbnRha3VcIDsKK+Wxi+WGheertuaKgCA8IG9rdW5haWt5b3VnaVwgOwor5aSa5oOF5LuP5b+DIDwgdGFqb3VidXNzaGluXCA7CivljZjntJToqIjnrpcgPCB0YW5qdW5rZWlzYW5cIDsKK+WFrOihhumbu+ipsSA8IGtvdXNodXVkZW53YVwgOwor5ZWG5Y+W5byVIDwgc2hvdXRvcmloaWtpXCA7CivoirHoh6rli5Xou4ogPCBoYW5hamlkb3VzaGFcIDsKK+S9jeebuOW5vuS9leWtpiA8IGlzb3VraWthZ2FrdVwgOwor5qSN54mp5rK5IDwgc2hva3VidXRzdXl1XCA7CivmlL7olanmga/lrZAgPCBob3V0b3VtdXN1a29cIDsKK+WHuuihgOaWkSA8IHNodWtrZXRzdWhhblwgOwor5LyB55S75a6kIDwga2lrYWt1c2hpdHN1XCA7CivkvrXlhaXou40gPCBzaGluJydueXV1Z3VuXCA7CivlhpnnnJ/mqZ/lupcgPCBzaGFzaGlua2l0ZW5cIDsKK+a8geeNsueJqSA8IGd5b2tha3VidXRzdVwgOwor5LiJ562J6LuN5pu5IDwgc2FudG91Z3Vuc291XCA7Civnt4rmgKXpgK7mjZUgPCBraW5reXV1dGFpaG9cIDsKK+WKm+WtpueahCA8IHJpa2lnYWt1dGVraVwgOwor6LKe5pON6LmC6LqqIDwgdGVpc291anV1cmluXCA7Civlv4PogrrmqZ/og70gPCBzaGlucGFpa2lub3VcIDsKK+e0hOadn+S6iyA8IHlha3Vzb2t1Z290b1wgOwor6ZuM6ZuE5ZCM5qCqIDwgc2hpeXV1ZG91c2h1XCA7CivpoIbpoqjmuoDluIYgPCBqdW5wdXVtYW5wYW5cIDsKK+WtpuagoeazleS6uiA8IGdha2tvdWhvdWppblwgOwor5aSJ5L2N6Zu75rWBIDwgaGVuJydpZGVucnl1dVwgOwor5YmN5ZOo5Yuk5YuZIDwgemVuc2hvdWtpbm11XCA7CivntYzluLflrZAgPCBreW91a2F0YWJpcmFcIDsKK+a1t+a0i+enkeWtpiA8IGthaXlvdWthZ2FrdVwgOwor6L6y5rCR6YGL5YuVIDwgbm91bWluJyd1bmRvdVwgOwor54Gr5raI5aO3IDwgaGlrZXNoaXRzdWJvXCA7Civosqzku7vnr4Tlm7IgPCBzZWtpbmluaGFuJydpXCA7CivnmbrlhYnloZfmlpkgPCBoYWtrb3V0b3J5b3VcIDsKK+aEn+W/nOS9nOeUqCA8IGthbicnbm91c2F5b3VcIDsKK+WIqeS8kem8oCA8IHJpa3l1dW5lenVtaVwgOwor5a2Q5oyB5piG5biDIDwga29tb2NoaWtvbmJ1XCA7CivluILllrbkvY/lroUgPCBzaGllaWp1dXRha3VcIDsKK+mghuW/nOWKmyA8IGp1bicnbm91cnlva3VcIDsKK+S6i+alremDqOmVtyA8IGppZ3lvdWJ1Y2hvdVwgOwor5aSn6IOG5LiN5pW1IDwgZGFpdGFuZnV0ZWtpXCA7CivkvIrli6LlpKfnpZ7lrq4gPCBpc2VkYWlqaW5ndXVcIDsKK+WkqeWcsOWJtemAoCA8IHRlbmNoaXNvdXpvdVwgOwor5biC5aC057WM5riIIDwgc2hpam91a2VpemFpXCA7Civntprmn4QgPCB0c3VkenVraWdhcmFcIDsKK+S6iOWumuacn+aXpSA8IHlvdGVpa2lqaXRzdVwgOwor5Yy755mC5oqA6KGTIDwgaXJ5b3VnaWp1dHN1XCA7CivkuIvljYrouqsgPCBzaGltb2hhbnNoaW5cIDsKK+ihqOaxuuaoqSA8IGh5b3VrZXRzdWtlblwgOwor5oqe5LiA55qEIDwgdGFrdWl0c3V0ZWtpXCA7Civkvb/lvbnli5XoqZ4gPCBzaGlla2lkb3VzaGlcIDsKK+a1geWLleeJqSA8IHJ5dXVkb3VidXRzdVwgOwor6Zmz6L+w5pu4IDwgY2hpbmp1dHN1c2hvXCA7CivlvrTlhbXmpJzmn7sgPCBjaG91aGVpa2Vuc2FcIDsKK+iHquWutueZuumbuyA8IGppa2FoYXRzdWRlblwgOwor6L+95oK85byPIDwgdHN1aXRvdXNoaWtpXCA7CivlkIzoqp7lj43lvqkgPCBkb3Vnb2hhbnB1a3VcIDsKK+W8geirluWkp+S8miA8IGJlbnJvbnRhaWthaVwgOwor5LiA6Iis5oqV56WoIDwgaXBwYW50b3VoeW91XCA7CivkuIDkurrmga/lrZAgPCBoaXRvcmltdXN1a29cIDsKK+mjsumjn+eJqSA8IGluc2hva3VidXRzdVwgOwor6YCA5b256LuN5Lq6IDwgdGFpZWtpZ3VuamluXCA7CivkurrnlJ/mnIDmgqogPCBqaW5zZWlzYWlha3VcIDsKK+WNsOWKoOmbu+WcpyA8IGlua2FkZW4nJ2F0c3VcIDsKK+a2suaAp+mZkOeVjCA8IGVraXNlaWdlbmthaVwgOwor5LqM6YW45YyW54Kt57SgIDwgbmlzYW5rYXRhbnNvXCA7CivmoITppIrlrabogIUgPCBlaXlvdWdha3VzaGFcIDsKK+aYvOmjn+S8miA8IGNodXVzaG9rdWthaVwgOwor6YO95biC5Lqk6YCaIDwgdG9zaGlrb3V0c3V1XCA7CivnlZznlKPlraYgPCBjaGlrdXNhbmdha3VcIDsKK+S6pOaPm+aVmeaOiCA8IGtvdWthbmt5b3VqdVwgOwor5a2m55Sf5pmC5LujIDwgZ2FrdXNlaWppZGFpXCA7CivorZjlrZfnjocgPCBzaGlraWppcml0c3VcIDsKK+aEm+ekvueyvuelniA8IGFpc2hhc2Vpc2hpblwgOwor6ICB5YyW54++6LGhIDwgcm91a2FnZW5zaG91XCA7CivpvLvpq5jpq5ggPCBoYW5hdGFrYWRha2FcIDsKK+ekvuS8muWVj+mhjCA8IHNoYWthaW1vbmRhaVwgOwor55uy566h6YqD5Ym1IDwgbW91a2FuanV1c291XCA7CivnibnliKXms5UgPCB0b2t1YmV0c3Vob3VcIDsKK+adsea1t+WcsOaWuSA8IHRvdWthaWNoaWhvdVwgOwor5Ye65ryB5qipIDwgc2h1dHN1Z3lva2VuXCA7CivnmbrooYzkvJrnpL4gPCBoYWtrb3VnYWlzaGFcIDsKK+i/keaJgOWQiOWjgSA8IGtpbmpvZ2FwcGVraVwgOwor6Z+z5aOw5Zyn57iuIDwgb25zZWlhc3NodWt1XCA7CivmsJHml4/kuLvnvqkgPCBtaW56b2t1c2h1Z2lcIDsKK+WwgumWgOenkeebriA8IHNlbm1vbmthbW9rdVwgOwor5rib6YeP57WM5Za2IDwgZ2VucnlvdWtlaWVpXCA7CivnnaHnnKDkuI3otrMgPCBzdWltaW5idXNva3VcIDsKK+mBi+mAgeWlkee0hCA8IHVuc291a2VpeWFrdVwgOwor6Iie5Y+w5Lit57aZIDwgYnV0YWljaHV1a2VpXCA7CivkuIvlsaTpmo7ntJogPCBrYXNvdWthaWt5dXVcIDsKK+mztuiBt+S6uiA8IHRvYmlzaG9rdW5pblwgOwor57WM5riI6ZeY5LqJIDwga2VpemFpdG91c291XCA7CivkuI3oia/lsJHlpbMgPCBmdXJ5b3VzaG91am9cIDsKK+W/nOaPtOa8lOiqrCA8IG91ZW4nJ2VuemV0c3VcIDsKK+mOrumtguabsiA8IGNoaW5rb25reW9rdVwgOwor6KGM5YuV5Y2K5b6EIDwga291ZG91aGFua2VpXCA7Civlh7rmvJTmlpkgPCBzaHV0c3VlbnJ5b3VcIDsKK+WcsOmch+WcsOW4ryA8IGppc2hpbmNoaXRhaVwgOwor6YCa6YGO6LK/5piTIDwgdHN1dWthYm91ZWtpXCA7CivntbHoqIjlubTpkZEgPCB0b3VrZWluZW5rYW5cIDsKK+S6uuaJi+S4jei2syA8IGhpdG9kZWJ1c29rdVwgOwor6YCa5L+X55qEIDwgdHN1dXpva3V0ZWtpXCA7CivljYHkuK3lhavkuZ0gPCBqaXRjaHV1aGFra3VcIDsKK+a7i+W8t+mjsuaWmSA8IGppa3lvdWlucnlvdVwgOwor5Zub6KeS5Y+356K8IDwgc2hpa2FrdWdvdW1hXCA7Civlm7rlrproprPlv7UgPCBrb3RlaWthbicnbmVuXCA7CivkvY7pn7Ppg6joqJjlj7cgPCB0ZWlvbmJ1a2lnb3VcIDsKK+e1jOmok+enkeWtpiA8IGtlaWtlbmthZ2FndVwgOwor6I236Zu757KS5a2QIDwga2FkZW5yeXV1c2hpXCA7Civkurrlt6XnlJ/lkb0gPCBqaW5rb3VzZWltZWlcIDsKK+mbu+awl+aWmemHkSA8IGRlbmtpcnlvdWtpblwgOwor5b6A5b6p6JGJ5pu4IDwgb3VmdWt1aGFnYWtpXCA7CivkurrpgKDnn7PmsrkgPCBqaW56b3VzZWtpeXVcIDsKK+Wcn+ibjSA8IHRzdWNoaWJvdGFydVwgOwor5aSp56u654mh5Li5IDwgdGVuamlrdWJvdGFuXCA7CivlvqHpprPotbDmp5ggPCBnb2NoaXNvdXNhbWFcIDsKK+S+teWFpeiAhSA8IHNoaW4nJ255dXVzaGFcIDsKK+Wkqei3r+attOeoiyA8IHRlbnJvcmVraXRlaVwgOwor5YWx5ZCM5L6/5omAIDwga3lvdWRvdWJlbmpvXCA7CivmmpfmrrrmnKrpgYIgPCBhbnNhdHN1bWlzdWlcIDsKK+acquaJleiyu+eUqCA8IG1paGFyYWloaXlvdVwgOwor56m65Ye65by1IDwga2FyYXNodXRjaG91XCA7Civnm7jkupLphY3lsZ4gPCBzb3Vnb2hhaXpva3VcIDsKK+egtOmhlOS4gOeskSA8IGhhZ2FuJydpc3Nob3VcIDsKK+ihgOWcp+ioiCA8IGtldHN1YXRzdWtlaVwgOwor6IOG5rGB6LOqIDwgdGFuanV1c2hpdHN1XCA7CivmsrvnmYLlirnmnpwgPCBjaGlyeW91a291a2FcIDsKK+eMn+WumOWItuW6piA8IHJ5b3VrYW5zZWlkb1wgOwor5Y+O5a655oKj6ICFIDwgc2h1dXlvdWthbmphXCA7CivmrabpmbXmoYPmupAgPCBidXJ5b3V0b3VnZW5cIDsKK+S6uuawkeaJgOaciSA8IGppbm1pbnNob3l1dVwgOwor5Y+N5bCE5L+C5pWwIDwgaGFuc2hha2Vpc3V1XCA7Civlt6Xmpa3mhI/ljKAgPCBrb3VneW91aXNob3VcIDsKK+ebuOWvvuipleS+oSA8IHNvdXRhaWh5b3VrYVwgOwor57WM5riI5ZWP6aGMIDwga2VpemFpbW9uZGFpXCA7Civpu4TnoqfnjokgPCBrb3VoZWtpZ3lva3VcIDsKK+malOaciOWIiiA8IGtha3VnZXRzdWthblwgOwor5LiJ5Y2B5YWt6KiIIDwgc2FuanV1cm9ra2VpXCA7Civmrovmpa3miYvlvZMgPCB6YW5neW91dGVhdGVcIDsKK+aKleeQg+WLleS9nCA8IHRvdWt5dXVkb3VzYVwgOwor6Ziy54G96KiT57e0IDwgYm91c2Fpa3VucmVuXCA7CivogJDnlKjlubTmlbAgPCB0YWl5b3VuZW5zdXVcIDsKK+awkeWumuaGsuazlSA8IG1pbnRlaWtlbnBvdVwgOwor56aP5Yip5Y6a55SfIDwgZnVrdXJpa291c2VpXCA7CivmtojogJflk4HosrsgPCBzaG91bW91aGluaGlcIDsKK+Wtpue0mumWiemOliA8IGdha2t5dXVoZWlzYVwgOwor5Lq655Sf6KiY6YyyIDwgamluc2Vpa2lyb2t1XCA7Civlrp/liKnkuLvnvqkgPCBqaXRzdXJpc2h1Z2lcIDsKK+W+qeWOn+WKmyA8IGZ1a3VnZW5yeW9rdVwgOwor56uj5bel5byPIDwgc2h1bmtvdXNoaWtpXCA7Civlhazkvb/ppKjlk6EgPCBrb3VzaGlrYW4nJ2luXCA7Civnq7bkuonnjocgPCBreW91c291cml0c3VcIDsKK+epjeeri+mHkSA8IHRzdW1pdGF0ZWtpblwgOwor5qSN54mp5ZySIDwgc2hva3VidXRzdWVuXCA7CivpgLLljJboq5bogIUgPCBzaGlua2Fyb25zaGFcIDsKK+epuuS4reapn+WLlSA8IGt1dWNodXVraWRvdVwgOwor5oqV56Wo57WQ5p6cIDwgdG91aHlvdWtla2thXCA7CivliY3mj5DmnaHku7YgPCB6ZW50ZWlqb3VrZW5cIDsKK+WkluS6uumBuOaJiyA8IGdhaWppbnNlbnNodVwgOwor5beo5aSn5YiG5a2QIDwga3lvZGFpYnVuc2hpXCA7CivotIvpgKDntJnluaMgPCBnYW56b3VzaGloZWlcIDsKK+eLrOi6q+WvriA8IGRva3VzaGlucnlvdVwgOwor5qSc5a6a6Kmm6aiTIDwga2VudGVpc2hpa2VuXCA7Civol43ntqzopJLnq6AgPCByYW5qdWhvdXNob3VcIDsKK+WPuOazleippumokyA8IHNoaWhvdXNoaWtlblwgOwor5p+U6Luf5L2T5pONIDwganV1bmFudGFpc291XCA7CivkuI3oia/lsI7kvZMgPCBmdXJ5b3Vkb3V0YWlcIDsKK+WvvuaIpui7iuegsiA8IHRhaXNlbnNoYWhvdVwgOwor5YWl5pyt6ICFIDwgbnl1dXNhdHN1c2hhXCA7CivmrbvkvZPop6PliZYgPCBzaGl0YWlrYWlib3VcIDsKK+WFvOalrei+suWutiA8IGtlbmd5b3Vub3VrYVwgOwor5paw5YWl55SfIDwgc2hpbicnbnl1dXNlaVwgOwor5YWs6ZaL6Yyy6Z+zIDwga291a2Fpcm9rdW9uXCA7Civmtbfou43lpKfoh6MgPCBrYWlndW5kYWlqaW5cIDsKK+WNl+S6rOiKseeBqyA8IG5hbmtpbmhhbmFiaVwgOwor56We6Kyh6ZuGIDwgc2hpbicneW91c2h1dVwgOwor5omB5qGD6IW654KOIDwgaGVudG91c2VuJydlblwgOwor5Lit5aSu6YqA6KGMIDwgY2h1dW91Z2lua291XCA7CivkuKHmpbXnq68gPCByeW91a3lva3V0YW5cIDsKK+Wcp+e4ruepuuawlyA8IGFzc2h1a3VrdXVraVwgOwor5biz6Z2i6Z2iIDwgY2hvdW1lbmR6dXJhXCA7CivopovnqY3mm7ggPCBtaXRzdW1vcmlzaG9cIDsKK+eglOWJiuS7oyA8IGtlbnNha3VzaGlyb1wgOwor5rG65riI5omL5q61IDwga2Vzc2Fpc2h1ZGFuXCA7Civku6PnkIbmpa3ogIUgPCBkYWlyaWd5b3VzaGFcIDsKK+mFjee9rui7ouaPmyA8IGhhaWNoaXRlbmthblwgOwor56aB5rK755Sj6ICFIDwga2luY2hpc2Fuc2hhXCA7CivmtLvli5XnmoQgPCBrYXRzdWRvdXRla2lcIDsKK+WFqOi6q+S4jemajyA8IHplbnNoaW5mdXp1aVwgOwor5oSb5LuW5Li7576p6ICFIDwgYWl0YXNodWdpc2hhXCA7Civlhajog73lipsgPCB6ZW4nJ25vdXJ5b2t1XCA7CivpgYvou6LmioDooZMgPCB1bnRlbmdpanV0c3VcIDsKK+mbu+WtkOmfs+alvSA8IGRlbnNoaW9uZ2FrdVwgOwor5Y2D5LiH54Sh6YePIDwgc2VubWFubXVyeW91XCA7Civoh6rmrrrluYfliqkgPCBqaXNhdHN1aG91am9cIDsKK+S7o+aVsOmWouaVsCA8IGRhaXN1dWthbnN1dVwgOwor6Z+z6Z+/6Kit6KiIIDwgb25reW91c2Vra2VpXCA7CivkubPmp5jnqoHotbcgPCBueXV1eW91dG9ra2lcIDsKK+S6i+WJjeWJsuW9kyA8IGppemVud2FyaWF0ZVwgOwor5YW15b255YWN54q2IDwgaGVpZWtpbWVuam91XCA7CivlpKnmtq/lraTni6wgPCB0ZW5nYWlrb2Rva3VcIDsKK+S4jeaJv+S4jeaJvyA8IGZ1c2hvdWJ1c2hvdVwgOwor54Sh5omA5bGe54++IDwgbXVzaG96b2t1Z2VuXCA7CivmnKjpgKDlrrblsYsgPCBtb2t1em91a2Fva3VcIDsKK+mkiuiAgeW5tOmHkSA8IHlvdXJvdW5lbmtpblwgOwor5LqL5YmN56CU5L+uIDwgaml6ZW5rZW5zaHV1XCA7Civpo5/ogonpoZ4gPCBzaG9rdW5pa3VydWlcIDsKK+S9k+ezu+aWh+azlSA8IHRhaWtlaWJ1bnBvdVwgOwor6IK65rS76YePIDwgaGFpa2F0c3VyeW91XCA7Civpm4zpm4TlkIzkvZMgPCBzaGl5dXVkb3V0YWlcIDsKK+mWi+elqOeOhyA8IGthaWh5b3VyaXRzdVwgOwor5bi46K2Y55qEIDwgam91c2hpa2l0ZWtpXCA7Civmp4vpgKDmsZrogbcgPCBrb3V6b3Vvc2hva3VcIDsKK+WfuuekjuefpeitmCA8IGtpc29jaGlzaGlraVwgOwor5Y+O5a655YqbIDwgc2h1dXlvdXJ5b2t1XCA7CivlnLDln5/ntJvkuokgPCBjaGlpa2lmdW5zb3VcIDsKK+WNmOWzsOmnsemnnSA8IHRhbnBvdXJha3VkYVwgOwor6LGh5b6055qEIDwgc2hvdWNob3V0ZWtpXCA7CivkurrmsJfllYblo7IgPCBuaW5raXNob3ViYWlcIDsKK+WNg+Wnv+S4h+aFiyA8IHNlbnNoaWJhbnRhaVwgOwor5YWs5pyJ6LKh55SjIDwga291eXV1emFpc2FuXCA7Civoh6rmhaLoqbEgPCBqaW1hbmJhbmFzaGlcIDsKK+aLm+W+heWuoiA8IHNob3V0YWlreWFrdVwgOwor5YWI6KGM5oqV6LOHIDwgc2Vua291dG91c2hpXCA7Civoo73pgKDlt6XnqIsgPCBzZWl6b3Vrb3V0ZWlcIDsKK+iHqueUseertuS6iSA8IGppeXV1a3lvdXNvdVwgOwor5bed6a2a5paZ55CGIDwga2F3YXVvcnlvdXJpXCA7CivkuqTpn7/mm7IgPCBrb3VreW91a3lva3VcIDsKK+mbu+ino+izqiA8IGRlbmthaXNoaXRzdVwgOwor54++5Luj56eR5a2mIDwgZ2VuZGFpa2FnYWt1XCA7CivlubPlupXoiLkgPCBoaXJhc29rb2J1bmVcIDsKK+eUo+alreapn+aisCA8IHNhbmd5b3VraWthaVwgOwor5LiN5ZCI5qC86ICFIDwgZnVnb3VrYWt1c2hhXCA7CivmmpHkuK3opovoiJ4gPCBzaG9jaHV1bWltYWlcIDsKK+iqmOWwjuWwi+WVjyA8IHl1dWRvdWppbm1vblwgOwor5bCx5Lu75byPIDwgc2h1dW5pbnNoaWtpXCA7Civlhrflh43lrqQgPCByZWl0b3VzaGl0c3VcIDsKK+eRoOeSg+WUkOiNiSA8IHJ1cmlrYXJha3VzYVwgOwor5a6a5b2i5YuV6KmeIDwgdGVpa2VpZG91c2hpXCA7CivphY3ohrPlrqQgPCBoYWl6ZW5zaGl0c3VcIDsKK+S6uumWk+mWouS/giA8IG5pbmdlbmthbmtlaVwgOwor6LWk5Y2B5a2X56S+IDwgc2VraWp1dWppc2hhXCA7CivluoPls7bnnIwgPCBoaXJvc2hpbWFrZW5cIDsKK+aapuaUueatoyA8IGtveW9taWthaXNlaVwgOwor54Sh55Sj6ZqO57SaIDwgbXVzYW5rYWlreXV1XCA7CivlvrPlt53mlrkgPCB0b2t1Z2F3YWdhdGFcIDsKK+WFreazleWFqOabuCA8IHJvcHBvdXplbnNob1wgOwor6ZuG5qip5o6S6ZmkIDwgc2h1dWtlbmhhaWpvXCA7Civlm73pmpvkvJrorbAgPCBrb2t1c2Fpa2FpZ2lcIDsKK+WFkOerpeaWh+WtpiA8IGppZG91YnVuZ2FrdVwgOwor6LuN5LqL56eY5a+GIDwgZ3VuamloaW1pdHN1XCA7Civku67lhaXlraYgPCBrYXJpbnl1dWdha3VcIDsKK+S7u+aEj+WHuumgrSA8IG5pbicnaXNodXR0b3VcIDsKK+S7mOmaj+ePvuixoSA8IGZ1enVpZ2Vuc2hvdVwgOwor5Y6f5b2i6LOqIDwgZ2Vua2Vpc2hpdHN1XCA7CivllIfmra/ovJTou4ogPCBzaGluc2hpaG9zaGFcIDsKK+WOn+WboOiqv+afuyA8IGdlbicnaW5jaG91c2FcIDsKK+aLheW9k+mDqOmVtyA8IHRhbnRvdWJ1Y2hvdVwgOwor5Li75Lu75pWZ5o6IIDwgc2h1bmlua3lvdWp1XCA7Civou43lgpnliYrmuJsgPCBndW5iaXNha3VnZW5cIDsKK+WFrOmWi+ijgeWIpCA8IGtvdWthaXNhaWJhblwgOwor5YiG6Kej5L+u55CGIDwgYnVua2Fpc2h1dXJpXCA7Civnmb7oirHmlonmlL4gPCBoeWFra2FzZWlob3VcIDsKK+m7kuiJsuiFqyA8IGtva3VzaG9rdXNodVwgOwor5Lq66YCg55yf54+gIDwgamluem91c2hpbmp1XCA7CivljZLmpa3nlJ8gPCBzb3RzdWd5b3VzZWlcIDsKK+elnue1jOmBjuaVjyA8IHNoaW5rZWlrYWJpblwgOwor6YCB6YeR54K65pu/IDwgc291a2lua2F3YXNlXCA7Civlm57lvqnlipsgPCBrYWlmdWt1cnlva3VcIDsKK+WOs+ato+enkeWtpiA8IGdlbnNlaWthZ2FrdVwgOwor5YWl5Lya5byPIDwgbnl1dWthaXNoaWtpXCA7Civlj7jms5Xmm7jlo6sgPCBzaGlob3VzaG9zaGlcIDsKK+WcqOWkluizh+eUoyA8IHphaWdhaXNoaXNhblwgOwor5rOV5b6L6YGV5Y+NIDwgaG91cml0c3VpaGFuXCA7CivlkJHlv4PlipsgPCBrb3VzaGlucnlva3VcIDsKK+eOieiZq+iJsiA8IHRhbWFtdXNoaWlyb1wgOwor54m55Yil5Y+3IDwgdG9rdWJldHN1Z291XCA7CivpgLLot6/mjIflsI4gPCBzaGlucm9zaGlkb3VcIDsKK+S6iOWCmeWNlOe0hCA8IHlvYmlreW91eWFrdVwgOwor6ISx5q+b55eHIDwgZGF0c3Vtb3VzaG91XCA7Civlp4vnkIPlvI8gPCBzaGlreXV1c2hpa2lcIDsKK+aVmeiCsueOqeWFtyA8IGt5b3Vpa3VnYW5ndVwgOwor5paH5rOV6KaP5YmHIDwgYnVucG91a2lzb2t1XCA7CivkvZXoibLmkKggPCBuYW5zaG9rdXp1cmlcIDsKK+WujOS6huaZguWItiA8IGthbnJ5b3VqaXNlaVwgOwor5L+h6KiX5qWtIDwgc2hpbnRha3VneW91XCA7Civkuovlrp/oqqToqo0gPCBqaWppdHN1Z29uaW5cIDsKK+i7jemcgOeUo+alrSA8IGd1bmp1c2FuZ3lvdVwgOwor5Zyf54WZIDwgdHN1Y2hpa2VtdXJpXCA7Civlg7vmoLnmgKcgPCBoaWdhbWlrb25qb3VcIDsKK+WlquS4ieaMryA8IGRhdHN1c2Fuc2hpblwgOwor6YmE54Gr5Li8IDwgdGVra2Fkb25idXJpXCA7Civoh6rnhLbnp5HlraYgPCBzaGl6ZW5rYWdha3VcIDsKK+Wkp+emj+mkhSA8IGRhaWZ1a3Vtb2NoaVwgOwor5q2m6ICF5L+u6KGMIDwgbXVzaGFzaHVneW91XCA7CivkvrXnlaXou40gPCBzaGlucnlha3VndW5cIDsKK+eUn+aIkOaWh+azlSA8IHNlaXNlaWJ1bnBvdVwgOwor5Y+N54mp6LOqIDwgaGFuYnVzc2hpdHN1XCA7Civlj7jms5XlpKfoh6MgPCBzaGlob3VkYWlqaW5cIDsKK+S4u+aEj+S4u+e+qeiAhSA8IHNodWlzaHVnaXNoYVwgOwor5Yi255CD5YqbIDwgc2Vpa3l1dXJ5b2t1XCA7CivlvqHnlKjllYbkurogPCBnb3lvdXNob3VuaW5cIDsKK+S9v+W+kuS/oeadoSA8IHNoaXRvc2hpbmpvdVwgOwor6Ki85oug54mp5Lu2IDwgc2hvdWtvYnVra2VuXCA7CivpmbjnlKPniakgPCByaWt1c2FuYnV0c3VcIDsKK+S6iOWCmeefpeitmCA8IHlvYmljaGlzaGlraVwgOwor5ZCI5ZCN5Lya56S+IDwgZ291bWVpZ2Fpc2hhXCA7CivlhbHlkIzkuIDoh7QgPCBreW91ZG91aXRjaGlcIDsKK+atpuWKm+aUv+ayuyA8IGJ1cnlva3VzZWlqaVwgOwor6LuM6YGT5L+u5q2jIDwga2lkb3VzaHV1c2VpXCA7CivovrLkvZzniakgPCBub3VzYWt1YnV0c3VcIDsKK+a5vuWyuOaIpuS6iSA8IHdhbmdhbnNlbnNvdVwgOwor5ZCI5qC856WI6aGYIDwgZ291a2FrdWtpZ2FuXCA7CivljJblrabogqXmlpkgPCBrYWdha3VoaXJ5b3VcIDsKK+ernOiIjOiYrSA8IHJ5dXV6ZXRzdXJhblwgOwor54us6KOB5Zu95a62IDwgZG9rdXNhaWtva2thXCA7CivkvY7liKnph5Hono0gPCB0ZWlyaWtpbicneXV1XCA7Civllrbmpa3nlZEgPCBlaWd5b3ViYXRha2VcIDsKK+Wcn+mhnumHkeWxniA8IGRvcnVpa2luem9rdVwgOwor6IKJ6aOf542jIDwgbmlrdXNob2t1anV1XCA7CivlhbHlkozmlL/kvZMgPCBreW91d2FzZWl0YWlcIDsKK+azleW+i+WtpiA8IGhvdXJpdHN1Z2FrdVwgOwor5rOV5bu36ZeY5LqJIDwgaG91dGVpdG91c291XCA7Civlho3nlJ/oo4Xnva4gPCBzYWlzZWlzb3VjaGlcIDsKK+aWsOeZuuaYjiA8IHNoaW5oYXRzdW1laVwgOwor5YyX5pa56aCY5ZyfIDwgaG9wcG91cnlvdWRvXCA7CivpgJfnlZnlrqIgPCB0b3VyeXV1a3lha3VcIDsKK+WFqOW7g+irluiAhSA8IHplbnBhaXJvbnNoYVwgOwor57Sv6YCy6Kqy56iOIDwgcnVpc2hpbmthemVpXCA7Civlm73pmLLkvJrorbAgPCBrb2t1Ym91a2FpZ2lcIDsKK+W+s+WztuecjCA8IHRva3VzaGltYWtlblwgOwor5LqM55m+5Y2B5pelIDwgbmloeWFrdXRvb2thXCA7CivkuovliY3pgJrloLEgPCBqaXplbnRzdXVob3VcIDsKK+ekvuS8muaEj+itmCA8IHNoYWthaWlzaGlraVwgOwor5o+05Yqp5YeN57WQIDwgZW5qb3RvdWtldHN1XCA7CivmuIXmsLTlr7ogPCBraXlvbWl6dWRlcmFcIDsKK+WuieWFqOesrOS4gCA8IGFuemVuZGFpaWNoaVwgOwor5YCL5Lq65pS75pKDIDwga29qaW5rb3VnZWtpXCA7CivmgqrmiK/lnYrkuLsgPCBpdGF6dXJhYm91enVcIDsKK+mBiuWLleWGhuacqCA8IHl1dWRvdWVuYm9rdVwgOwor5YaG5b2i5YqH5aC0IDwgZW5rZWlnZWtpam91XCA7CivnhrHlrrnph48gPCBuZXRzdXlvdXJ5b3VcIDsKK+aWh+ethualrSA8IGJ1bnBpdHN1Z3lvdVwgOwor6Iqt6JWJ5qK25pyoIDwgYmFzaG91a2FqaWtpXCA7CivohLPlh7rooYAgPCBub3VzaHVra2V0c3VcIDsKK+mcsuWHuueXhyA8IHJvc2h1dHN1c2hvdVwgOwor6auY6Laz6J+5IDwgdGFrYWFzaGlnYW5pXCA7Civmg4XloLHnp5HlraYgPCBqb3Vob3VrYWdha3VcIDsKK+engeWovOeqnyA8IHNoaXNob3VrdXRzdVwgOwor5YK35a6z5L+d6Zm6IDwgc2hvdWdhaWhva2VuXCA7CivnoLTnlKPlrqPlkYogPCBoYXNhbnNlbmtva3VcIDsKK+eZqeeXheaCo+iAhSA8IHJhaWJ5b3VrYW5qYVwgOwor6buS6Imy55mMIDwga29rdXNob2t1Z2FuXCA7Civlm6DlrZDliIbmnpAgPCBpbnNoaWJ1bnNla2lcIDsKK+iyp+ihgOeXhyA8IGhpbmtldHN1c2hvdVwgOwor6KqN6K2Y56WoIDwgbmluc2hpa2loeW91XCA7CivlvoXlkIjmlL/msrsgPCBtYWNoaWFpc2VpamlcIDsKK+acq+azleaAneaDsyA8IG1hcHBvdXNoaXNvdVwgOwor6Iiq57aa5pmC6ZaTIDwga291em9rdWppa2FuXCA7CivlsILlo7LnibnoqLEgPCBzZW5iYWl0b2treW9cIDsKK+WQjOeoruWQjOaWhyA8IGRvdXNodWRvdWJ1blwgOwor6YmE6YGT5LqL5pWFIDwgdGV0c3Vkb3VqaWtvXCA7CivnnJ/nkIbplqLmlbAgPCBzaGlucmlrYW5zdXVcIDsKK+eWq+eXheelniA8IHlha3VieW91Z2FtaVwgOwor6Zyy5Ye654uCIDwgcm9zaHV0c3VreW91XCA7CivlrZDlrZDlravlrasgPCBzaGlzaGlzb25zb25cIDsKK+WFq+S4iOWztiA8IGhhY2hpam91amltYVwgOwor6ZmN56We6KGTIDwga291c2hpbmp1dHN1XCA7Civoi7Hlm73nn7PmsrkgPCBlaWtva3VzZWtpeXVcIDsKK+S/neitt+ims+WvnyA8IGhvZ29rYW5zYXRzdVwgOwor56eY5a+G5YW15ZmoIDwgaGltaXRzdWhlaWtpXCA7Civpg7Xkvr/osq/ph5EgPCB5dXViaW5jaG9raW5cIDsKK+WTsuWtpuiAhSA8IHRldHN1Z2FrdXNoYVwgOwor5LqM6YeN5Lq65qC8IDwgbmlqdXVqaW5rYWt1XCA7Civnmb3ooaPmmI7lpoMgPCBieWFrdWVteW91aGlcIDsKK+eUn+S9k+ino+WJliA8IHNlaXRhaWthaWJvdVwgOwor54irIDwgdHN1bWVrYW5tdXJpXCA7CivlipvkuIDmna8gPCBjaGlrYXJhaXBwYWlcIDsKK+WHuuWTgeeJqSA8IHNodXBwaW5idXRzdVwgOwor56uL5aSq5a2Q56S8IDwgcml0dGFpc2hpcmVpXCA7Civlrp/pmpvllY/poYwgPCBqaXNzYWltb25kYWlcIDsKK+WFrOi7oumAn+W6piA8IGtvdXRlbnNva3Vkb1wgOwor5LiA55+z5LqM6bOlIDwgaXNzZWtpbmljaG91XCA7CivmlZnogrLoqrLnqIsgPCBreW91aWt1a2F0ZWlcIDsKK+S6uuS7o+WQjeipniA8IGppbmRhaW1laXNoaVwgOwor5qyh6YW45YyW54Kt57SgIDwgamlzYW5rYXRhbnNvXCA7CivngbDnmb3oibIgPCBrYWloYWt1c2hva3VcIDsKK+eLrOWxheWupCA8IGRva2t5b3NoaXRzdVwgOwor5YSq55Sf57WQ5amaIDwgeXV1c2Vpa2Vra29uXCA7Civlj6PpoK3oqabllY8gPCBrb3V0b3VzaGltb25cIDsKK+S6pOmAmuWuieWFqCA8IGtvdXRzdXVhbnplblwgOwor5o6l5b6F5L+CIDwgc2V0dGFpZ2FrYXJpXCA7CivkuIflubTpm6ogPCBtYW4nJ25lbicneXVraVwgOwor54uC5oOz5puyIDwga3lvdXNvdWt5b2t1XCA7Civlkozmlofoi7HoqLMgPCB3YWJ1bicnZWl5YWt1XCA7CivmnKzlrrbmnKzlhYMgPCBob25rZWhvbm1vdG9cIDsKK+ebsuebrumjm+ihjCA8IG1vdW1va3VoaWtvdVwgOwor5rue56m66KiY6YyyIDwgdGFpa3V1a2lyb2t1XCA7Civnq4vkvZPoo4Hmlq0gPCByaXR0YWlzYWlkYW5cIDsKK+WbveWGheS6i+aDhSA8IGtva3VuYWlqaWpvdVwgOwor5L6155Wl6ICFIDwgc2hpbnJ5YWt1c2hhXCA7CivmjqXop6bkuovmlYUgPCBzZXNzaG9rdWppa29cIDsKK+eUuuW9ueS6uiA8IG1hY2hpeWFrdW5pblwgOwor5Lm+54el6IWQ5py9IDwga2Fuc291ZnVreXV1XCA7CivomrDonJLnnIkgPCBnZWppZ2VqaW1heXVcIDsKK+WQiOizh+S8muekviA8IGdvdXNoaWdhaXNoYVwgOwor5b2r5Yi75YW35bqnIDwgY2hvdWtva3VndXphXCA7Civmsrvlronntq3mjIHms5UgPCBjaGlhbicnaWppaG91XCA7Civlrabnv5Llob4gPCBnYWt1c2h1dWp1a3VcIDsKK+aIuOWkluaSruW9sSA8IGtvZ2Fpc2F0c3VlaVwgOwor5b+c5oCl5L+u55CGIDwgb3VreXV1c2h1dXJpXCA7CivpurvphZTms6jlsIQgPCBtYXN1aWNodXVzaGFcIDsKK+acq+err+S+oeagvCA8IG1hdHRhbmtha2FrdVwgOwor5YG25YOP5bSH5oudIDwgZ3V1em91c3V1aGFpXCA7Civmma7pgJrliJfou4ogPCBmdXRzdXVyZXNzaGFcIDsKK+aWsOeZuuWjsiA8IHNoaW5oYXRzdWJhaVwgOwor5ZKM5bmz5Lqk5riJIDwgd2FoZWlrb3VzaG91XCA7Civnq7bkuonlipsgPCBreW91c291cnlva3VcIDsKK+W+queSsOirluazlSA8IGp1bmthbnJvbnBvdVwgOwor5aSx5ZCN5rCPIDwgc2hpdHN1bWVpc2hpXCA7CivooajluqfmlbcgPCBvbW90ZXphc2hpa2lcIDsKK+mjvemjn+aaluihoyA8IGhvdXNob2t1ZGFuaVwgOwor5qmf5qKw5bel5qWtIDwga2lrYWlrb3VneW91XCA7CivnhKHpmZDpm4blkIggPCBtdWdlbnNodXVnb3VcIDsKK+W+tOeZuuS7pCA8IGNob3VoYXRzdXJlaVwgOwor5pyJ5L6h6Ki85Yi4IDwgeXV1a2FzaG91a2VuXCA7Civmh5Dpiq0gPCBmdXRva29yb3plbmlcIDsKK+S6leaIuOerr+S8muitsCA8IGlkb2JhdGFrYWlnaVwgOwor5Ymv5Y+O5YWlIDwgZnVrdXNodXVueXV1XCA7CivmgZDllp3nvaogPCBreW91a2F0c3V6YWlcIDsKK+WxiOaKmOi7uCA8IGt1c3NldHN1amlrdVwgOwor5ZCI5YiH6KKLIDwgZ2Fzc2FpYnVrdXJvXCA7Civmtojmga/pgJogPCBzaG91c29rdXRzdXVcIDsKK+e3j+e1semBuOaMmSA8IHNvdXRvdXNlbmt5b1wgOwor5qCq5Li75qipIDwga2FidW51c2hpa2VuXCA7CivkurrmsJflvbnogIUgPCBuaW5raXlha3VzaGFcIDsKK+W4guWGhemAmuipsSA8IHNoaW5haXRzdXV3YVwgOwor5Y2g5pyJ546HIDwgc2VuJyd5dXVyaXRzdVwgOwor5Y2X5Lqs6KKLIDwgbmFua2luYnVrdXJvXCA7Civpq5jpq5jmjIcgPCB0YWthdGFrYXl1YmlcIDsKK+eZveiJsuWFiSA8IGhha3VzaG9rdWtvdVwgOwor5LiA562J6Zm45aOrIDwgaXR0b3VyaWt1c2hpXCA7CivorJvlkozmnaHntIQgPCBrb3V3YWpvdXlha3VcIDsKK+W3pealremDveW4giA8IGtvdWd5b3V0b3NoaVwgOwor5Y2T5LiK6Zu76KmxIDwgdGFrdWpvdWRlbndhXCA7CivlrqLoprPkuLvnvqkgPCBreWFra2Fuc2h1Z2lcIDsKK+WFseWQjOisgOitsCA8IGt5b3Vkb3Vib3VnaVwgOwor6LO86LK357WE5ZCIIDwga291YmFpa3VtaWFpXCA7Civoq4vosqDku5XkuosgPCB1a2VvaXNoaWdvdG9cIDsKK+mLuOmuqyA8IG5va29naXJpemFtZVwgOwor6ZuH55So5aWR57SEIDwga295b3VrZWl5YWt1XCA7CivlvZPmhI/ljbPlppkgPCB0b3Vpc29rdW15b3VcIDsKK+aXpeexs+WNlCA8IG5pY2hpYmVpa3lvdVwgOwor5Yq05YON5biC5aC0IDwgcm91ZG91c2hpam91XCA7Civlo6vlrpjlrabmoKEgPCBzaGlrYW5nYWtrb3VcIDsKK+WQjeiqieS8mumVtyA8IG1laXlva2FpY2hvdVwgOwor5bqm5pWw5YiG5biD5ZuzIDwgZG9zdXVidW5wdXp1XCA7CivlsYjmipjop5IgPCBrdXNzZXRzdWtha3VcIDsKK+auuuS6uueahCA8IHNhdHN1amludGVraVwgOwor5bmz5Z2H57Wm5LiOIDwgaGVpa2lua3l1dXlvXCA7Civlt6blm6PmiYcgPCBoaWRhcml1Y2hpd2FcIDsKK+mYsuWhteWupCA8IGJvdWppbnNoaXRzdVwgOwor5bCP5L6/5bCP5YOnIDwgc2hvdWJlbmtvem91XCA7CivlnJ/ln4MgPCB0c3VjaGlib2tvcmlcIDsKK+S6uuaoqei5gui6qiA8IGppbmtlbmp1dXJpblwgOwor5Zyn57iu6YW457SgIDwgYXNzaHVrdXNhbnNvXCA7CivlkKvmnInnjocgPCBnYW4nJ3l1dXJpdHN1XCA7CivlubTmrKHloLHlkYogPCBuZW5qaWhvdWtva3VcIDsKK+iEiOaQj+aVsCA8IG15YWt1aGFrdXN1dVwgOwor6YO15L6/55Wq5Y+3IDwgeXV1YmluYmFuZ291XCA7CivmjqjpgLLlipsgPCBzdWlzaGlucnlva3VcIDsKK+iBvuahn+aVtyA8IHRzdW5ib3NhamlraVwgOwor6KiI566X5ZWP6aGMIDwga2Vpc2FubW9uZGFpXCA7Civnt4/lkIjpm5HoqowgPCBzb3Vnb3V6YXNzaGlcIDsKK+e4rue3rOeauiA8IGNoaXJpbWVuaml3YVwgOwor5Zyf5Zyw5Y+O55SoIDwgdG9jaGlzaHV1eW91XCA7CivluoPlkYrlirnmnpwgPCBrb3Vrb2t1a291a2FcIDsKK+auuuS6uueLgiA8IHNhdHN1amlua3lvdVwgOwor6Ly45Ye65YWlIDwgeXVzaHV0c3VueXV1XCA7CivlubzlhZDmlZnogrIgPCB5b3VqaWt5b3Vpa3VcIDsKK+i/keaJgOi/t+aDkSA8IGtpbmpvbWVpd2FrdVwgOwor6Kaz5a6i5bitIDwga2Fua3lha3VzZWtpXCA7CivnhKHpmZDntJrmlbAgPCBtdWdlbmt5dXVzdXVcIDsKK+S4gOWIu+WNg+mHkSA8IGlra29rdXNlbmtpblwgOwor6Zmq5a+p5Yi25bqmIDwgYmFpc2hpbnNlaWRvXCA7Civnt6jpm4bmqZ/og70gPCBoZW5zaHV1a2lub3VcIDsKK+WFiOWPlueJueaoqSA8IHNlbnNodXRva2tlblwgOwor5bCC6ZaA5YiG6YeOIDwgc2VubW9uYnVuJyd5YVwgOwor5b+EIDwgcml0c3VzaGluYmVuXCA7Civlkb3lhqXliqAgPCBpbm9jaGlteW91Z2FcIDsKK+aLheWtkOiPjOmhniA8IHRhbnNoaWtpbnJ1aVwgOwor6Zai5L+C5by35YyWIDwga2Fua2Vpa3lvdWthXCA7Civmo67mnpfmtbQgPCBzaGlucmluJyd5b2t1XCA7CivmlLvmkoPpg6jpmoogPCBrb3VnZWtpYnV0YWlcIDsKK+enmOWvhuS8muitsCA8IGhpbWl0c3VrYWlnaVwgOwor6Ieq5YuV6LuK5LqL5pWFIDwgamlkb3VzaGFqaWtvXCA7Civmtojpn7Poo4Xnva4gPCBzaG91b25zb3VjaGlcIDsKK+a6gOW3nuS6i+WkiSA8IG1hbnNodXVqaWhlblwgOwor54iG55m6566hIDwgYmFrdWhhdHN1a2FuXCA7Civos4fnlKPoqZXkvqEgPCBzaGlzYW5oeW91a2FcIDsKK+WHuueJiOioseWPryA8IHNodXBwYW5reW9rYVwgOwor6buS5YWr5LiIIDwga3Vyb2hhY2hpam91XCA7Civlm73lhoXpnIDopoEgPCBrb2t1bmFpanV5b3VcIDsKK+WNiui6q+a1tCA8IGhhbnNoaW4nJ3lva3VcIDsKK+WNg+S4h+mVt+iAhSA8IHNlbmJhbmNob3VqYVwgOwor5YyW5a2m6Kmm6aiTIDwga2FnYWt1c2hpa2VuXCA7CivntLDog57ln7nppIogPCBzYWlib3ViYWl5b3VcIDsKK+mfs+mfu+e1hOe5lCA8IG9uJydpbnNvc2hpa2lcIDsKK+W6p+aomeWkieaPmyA8IHphaHlvdWhlbmthblwgOwor5qmf5qKw5bel5a2mIDwga2lrYWlrb3VnYWt1XCA7CivnrKzkuInpg6jplbcgPCBkYWlzYW5idWNob3VcIDsKK+Wlh+WyqeaAquefsyA8IGtpZ2Fua2Fpc2VraVwgOwor6ICQ6aKo5qeL6YCgIDwgdGFpZnV1a291em91XCA7Civmmpfnt5HoibIgPCBhbnJ5b2t1c2hva3VcIDsKK+efs+m5uOW3peWgtCA8IHNla2tlbmtvdWpvdVwgOwor5Zyo6YO36LuN5Lq6IDwgemFpZ291Z3VuamluXCA7Civlub3pnIrkvJrnpL4gPCB5dXVyZWlnYWlzaGFcIDsKK+eSsOWig+egtOWjiiA8IGthbmt5b3VoYWthaVwgOwor5Zu96Zqb5Li7576pIDwga29rdXNhaXNodWdpXCA7CivlvqHnr4DmlpnnkIYgPCBvc2VjaGlyeW91cmlcIDsKK+eti+iCieeXmyA8IGtpbicnbmlrdXRzdXVcIDsKK+S/rueQhuW3peWgtCA8IHNodXVyaWtvdWpvdVwgOwor6IG36IO957WmIDwgc2hva3Vub3VreXV1XCA7CivmlrDnlJ/niakgPCBzaGluc2VpYnV0c3VcIDsKK+WHjOmchOiKsSA8IG5vdXplbmthenVyYVwgOwor6buS6Imy5bCJIDwga29rdXNoaWtpam91XCA7Civom43ooosgPCBob3RhcnVidWt1cm9cIDsKK+WBtueZuueahCA8IGd1dWhhdHN1dGVraVwgOwor5ouS5ZCm5Y+N5b+cIDwga3lvaGloYW4nJ25vdVwgOwor54m555Sj54mpIDwgdG9rdXNhbmJ1dHN1XCA7CivkuIDoqIDkuIDlj6UgPCBpY2hpZ29uJydpa2t1XCA7CivljZjni6zpo5vooYwgPCB0YW5kb2t1aGlrb3VcIDsKK+S4u+aoqeWcqOawkSA8IHNodWtlbnphaW1pblwgOwor5YyW57Kn5a6kIDwga2VzaG91c2hpdHN1XCA7Civnt4/mlK/lh7ogPCBzb3VzaGlzaHV0c3VcIDsKK+S6uuagvOS4u+e+qSA8IGppbmtha3VzaHVnaVwgOwor6Ieq5q665pyq6YGCIDwgamlzYXRzdW1pc3VpXCA7Civlh7rlrrbpgYHkuJYgPCBzaHVra2V0b25zZWlcIDsKK+WTsuWtpuabuCA8IHRldHN1Z2FrdXNob1wgOwor5Y2a54mp6aSoIDwgaGFrdWJ1dHN1a2FuXCA7CivntJDpnanppYLpo6kgPCBoaW1va2F3YXVkb25cIDsKK+aEmuawkeaUv+etliA8IGd1bWluc2Vpc2FrdVwgOwor5Y2Y56eR5aSn5a2mIDwgdGFua2FkYWlnYWt1XCA7CivpganmraPliKnmvaQgPCB0ZWtpc2VpcmlqdW5cIDsKK+eZuumfs+iomOWPtyA8IGhhdHN1b25raWdvdVwgOwor6LuN5LqL5Y2U5a6aIDwgZ3VuamlreW91dGVpXCA7CivovrLlnLDlp5Tlk6HkvJogPCBub3VjaGlpaW5rYWlcIDsKK+S7suS7i+eJqSA8IGNodXVrYWlidXRzdVwgOwor6KW/6auY5p2x5L2OIDwgc2Vpa291dG91dGVpXCA7CivmkI3ogJfkurrlk6EgPCBzb25tb3VqaW4nJ2luXCA7Civnmb3poK3pt7IgPCBoYWt1dG91d2FzaGlcIDsKK+Wun+WLouS+oeagvCA8IGppc3NlaWtha2FrdVwgOwor5o+055So6Kit6KiIIDwgZW4nJ3lvdXNla2tlaVwgOwor54++5aC05Lit57aZIDwgZ2VuYmFjaHV1a2VpXCA7CivmnIDmlrDlvI8gPCBzYWlzaGluc2hpa2lcIDsKK+Wxsei6kei6hSA8IHlhbWF0c3V0c3VqaVwgOwor5oSf55+l6KOF572uIDwga2FuY2hpc291Y2hpXCA7CivorbDmsbrmqZ/plqIgPCBnaWtldHN1a2lrYW5cIDsKK+ecgembu+WKmyA8IHNob3VkZW5yeW9rdVwgOwor5a6J5b+D56uL5ZG9IDwgYW5qaW5yeW91bWVpXCA7CivlkIjlkIzkuovmpa0gPCBnb3Vkb3VqaWd5b3VcIDsKK+WQjOacn+S/oeWPtyA8IGRvdWtpc2hpbmdvdVwgOwor5Luy6ZaT5oSP6K2YIDwgbmFrYW1haXNoaWtpXCA7CivlqpLku4vlpInmlbAgPCBiYWlrYWloZW5zdXVcIDsKK+WvkuS4reawtOazsyA8IGthbmNodXVzdWllaVwgOwor5LiA5Yy554u8IDwgaXBwaWtpb29rYW1pXCA7Civooqvkv53pmbrniakgPCBoaWhva2VuYnV0c3VcIDsKK+a2iOaBr+etiyA8IHNob3Vzb2t1c3VqaVwgOwor5oeQ57SZIDwgZnV0b2tvcm9nYW1pXCA7Civmmpfmrrrkuovku7YgPCBhbnNhdHN1amlrZW5cIDsKK+aKmOiht+S4u+e+qSA8IHNldGNodXVzaHVnaVwgOwor5Y2Y5byP57C/6KiYIDwgdGFuc2hpa2lib2tpXCA7CivmlZnppIroqrLnqIsgPCBreW91eW91a2F0ZWlcIDsKK+S4h+W5tOethiA8IG1hbicnbmVuaGl0c3VcIDsKK+S4ieiAheS8muirhyA8IHNhbnNoYWthaWRhblwgOwor6YCj6KiY5oqV56WoIDwgcmVua2l0b3VoeW91XCA7Civlv4PnkIbnirbmhYsgPCBzaGlucmlqb3V0YWlcIDsKK+S7h+WQjOawjyA8IGthdGFraWRvdXNoaVwgOwor5rW35aSW5biC5aC0IDwga2FpZ2Fpc2hpam91XCA7Civml6LmiJDkuovlrp8gPCBraXNlaWppaml0c3VcIDsKK+S6i+WLmee3j+WxgCA8IGppbXVzb3VreW9rdVwgOwor5YmN6YCy5Z+65ZywIDwgemVuc2hpbmtpY2hpXCA7CivlkIzlt6XnlbDmm7IgPCBkb3Vrb3Vpa3lva3VcIDsKK+WRvemhjOmWouaVsCA8IG1laWRhaWthbnN1dVwgOwor5YyX6KW/6Iiq6LevIDwgaG9rdXNlaWtvdXJvXCA7CivlsYDlnLDnmoQgPCBreW9rdWNoaXRla2lcIDsKK+WQiOWQjOS8muWQiCA8IGdvdWRvdWthaWdvdVwgOwor56uL5Zyw5p2h5Lu2IDwgcml0Y2hpam91a2VuXCA7CivpnanmiYvooosgPCBrYXdhdGVidWt1cm9cIDsKK+WcsOeQhuWtpuiAhSA8IGNoaXJpZ2FrdXNoYVwgOwor5aSn5omA6auY5omAIDwgdGFpc2hva291c2hvXCA7Civph43opIfkv53pmbogPCBqdXVmdWt1aG9rZW5cIDsKK+mAmuW4uOWFteWZqCA8IHRzdXVqb3VoZWlraVwgOwor5aSW5Zu96YOo6ZqKIDwgZ2Fpa29rdWJ1dGFpXCA7CivmlofljJbkuqTmtYEgPCBidW5rYWtvdXJ5dXVcIDsKK+S4g+WIhuiiliA8IHNoaWNoaWJ1c29kZVwgOwor5biC5aSW6YCa6KmxIDwgc2hpZ2FpdHN1dXdhXCA7Civmr5vntLDooYDnrqEgPCBtb3VzYWlrZWtrYW5cIDsKK+WLleaFi+e1seioiCA8IGRvdXRhaXRvdWtlaVwgOwor56S+5YaF5oOF5aCxIDwgc2hhbmFpam91aG91XCA7CivkuK3lhazmlofluqsgPCBjaHV1a291YnVua29cIDsKK+Wcp+mbu+WKueaenCA8IGF0c3VkZW5rb3VrYVwgOwor6a2R6a2F6a2N6a2OIDwgY2hpbWltb3VyeW91XCA7CivlvqrnkrDns7vntbEgPCBqdW5rYW5rZWl0b3VcIDsKK+engemBlCA8IHdhdGFzaGl0YWNoaVwgOwor5a++5Lq66Zai5L+CIDwgdGFpamlua2Fua2VpXCA7Civmma7pgJrpgbjmjJkgPCBmdXRzdXVzZW5reW9cIDsKK+W/g+mciuihkyA8IHNoaW5yZWlqdXRzdVwgOwor5p2h5Lu26ZeY5LqJIDwgam91a2VudG91c291XCA7Civmnb7nq7nmooUgPCBzaG91Y2hpa3ViYWlcIDsKK+WNg+eKtuS4h+aFiyA8IHNlbmpvdWJhbnRhaVwgOwor5qC46ZaL55m6IDwga2FrdWthaWhhdHN1XCA7CivljJbmiJDlt6Xmpa0gPCBrYXNlaWtvdWd5b3VcIDsKK+e1jOa4iOWOn+irliA8IGtlaXphaWdlbnJvblwgOwor5qip6KyA6KGT5pWwIDwga2VuYm91anVzc3V1XCA7CivkuI3mj67nmbrmgKcgPCBmdWtpaGF0c3VzZWlcIDsKK+mrmOetieWtpuagoSA8IGtvdXRvdWdha2tvdVwgOwor6YCj5ZCI546L5Zu9IDwgcmVuZ291b3Vrb2t1XCA7Civlm73pmpvoibIgPCBrb2t1c2Fpc2hva3VcIDsKK+mDteS+v+abuOewoSA8IHl1dWJpbnNob2thblwgOwor5a2Q5L6b5b+DIDwga29kb21vZ29rb3JvXCA7Civnsr7npZ7lipsgPCBzZWlzaGlucnlva3VcIDsKK+a3seisgOmBoOaFriA8IHNoaW5ib3VlbnJ5b1wgOwor5L2P5rCR6YGL5YuVIDwganV1bWluJyd1bmRvdVwgOwor5rOV5paH5a2m6YOoIDwgaG91YnVuZ2FrdWJ1XCA7Civmma7pgJrpg7Xkvr8gPCBmdXRzdXV5dXViaW5cIDsKK+WGjeeqgeWFpSA8IHNhaXRvdHN1bnl1dVwgOwor5ZCb5Li75pS/5L2TIDwga3Vuc2h1c2VpdGFpXCA7Civnmbrkv6HlsYAgPCBoYXNzaGlua3lva3VcIDsKK+Wkp+WSjOW/gyA8IHlhbWF0b2dva29yb1wgOwor5o2y5Zyf6YeN5p2lIDwga2VuZG9jaG91cmFpXCA7CivlpbPlo7DlkIjllLEgPCBqb3NlaWdhc3Nob3VcIDsKK+exs+ilv+aIpuS6iSA8IGJlaXNlaXNlbnNvdVwgOwor6auY5bqm5oiQ6ZW3IDwga291ZG9zZWljaG91XCA7Civoqr/lvovluKsgPCBjaG91cml0c3VzaGlcIDsKK+S5vuW4g+aRqeaTpiA8IGthbnB1bWFzYXRzdVwgOwor5Lit6I+v5oCd5oOzIDwgY2h1dWthc2hpc291XCA7Civovp7ogbfpoZggPCBqaXNob2t1bmVnYWlcIDsKK+i0iOS4juiovOabuCA8IHpvdXlvc2hvdXNob1wgOwor5YK15YuZ5LiN5bGl6KGMIDwgc2FpbXVmdXJpa291XCA7CivlhazooYbooZvnlJ8gPCBrb3VzaHV1ZWlzZWlcIDsKK+aJgOaJgCA8IHRva29yb2Rva29yb1wgOwor56S+5Lya56eR5a2mIDwgc2hha2Fpa2FnYWt1XCA7CivovrLoirjljJblraYgPCBub3VnZWlrYWdha3VcIDsKK+S6pOmAmuaVtOeQhiA8IGtvdXRzdXVzZWlyaVwgOwor6Kaq5a+G5oSfIDwgc2hpbm1pdHN1a2FuXCA7Civnibnmrorpg6jpmoogPCB0b2t1c2h1YnV0YWlcIDsKK+eqk+mam+aXjyA8IG1hZG9naXdhem9rdVwgOwor5LqL5a6f54Sh5qC5IDwgamlqaXRzdW11a29uXCA7CivlhpnnnJ/ooZMgPCBzaGFzaGluanV0c3VcIDsKK+WtlOmbgOWmmeeOiyA8IGt1amFrdW15b3VvdVwgOwor6LKh55Sj5YiG5LiOIDwgemFpc2FuYnVuJyd5b1wgOwor6YKm5a2X5paw6IGeIDwgaG91amlzaGluYnVuXCA7CivmqZ/li5XoqIjnlLsgPCBraWRvdWtlaWtha3VcIDsKK+i8u+WwhOeGsSA8IGZ1a3VzaGFuZXRzdVwgOwor5a2k56uL5Li7576pIDwga29yaXRzdXNodWdpXCA7Civkvpvov7DogIUgPCBreW91anV0c3VzaGFcIDsKK+aYjuayu+WkqeeahyA8IG1laWppdGVuJydub3VcIDsKK+eEpueCuei3nemboiA8IHNob3V0ZW5reW9yaVwgOwor6ZuG5ZCI5pmC6ZaTIDwgc2h1dWdvdWppa2FuXCA7CivkvY/lroXlnLDljLogPCBqdXV0YWt1Y2hpa3VcIDsKK+Wkmuinkuiyv+aYkyA8IHRha2FrdWJvdWVraVwgOwor6Z2e5Zar54WZ6ICFIDwgaGlraXRzdWVuc2hhXCA7CivmtojljJbkuI3oia8gPCBzaG91a2FmdXJ5b3VcIDsKK+elnue1jOevgCA8IHNoaW5rZWlzZXRzdVwgOwor6Iie5Y+w54Wn5piOIDwgYnV0YWlzaG91bWVpXCA7CivkuI3nlJ/nlKPnmoQgPCBmdXNlaXNhbnRla2lcIDsKK+eIhueZuuaApyA8IGJha3VoYXRzdXNlaVwgOwor6Z2e55Sf55Sj55qEIDwgaGlzZWlzYW50ZWtpXCA7Civli5/pm4bkurrlk6EgPCBib3NodXVqaW4nJ2luXCA7Civljp/nqL/nlKjntJkgPCBnZW5rb3V5b3VzaGlcIDsKK+eEoeaEj+itmOeahCA8IG11aXNoaWtpdGVraVwgOwor57eP5Y+45Luk5a6YIDwgc291c2hpcmVpa2FuXCA7CivorbLmuKHmiYDlvpcgPCBqb3V0b3Nob3Rva3VcIDsKK+WtpuerpeS/neiCsiA8IGdha3Vkb3Vob2lrdVwgOwor5pyA57WC5YW15ZmoIDwgc2Fpc2h1dWhlaWtpXCA7Civmu5HotbDou4rovKogPCBrYXNzb3VzaGFyaW5cIDsKK+aciOWIiumbkeiqjCA8IGdla2thbnphc3NoaVwgOwor5YKN6Iul54Sh5Lq6IDwgYm91amFrdWJ1amluXCA7Civlhajml6XliLYgPCB6ZW4nJ25pY2hpc2VpXCA7Civli6TlirTlpYnku5UgPCBraW5yb3Vob3VzaGlcIDsKK+aAp+iFuuaRmOmZpCA8IHNlaXNlbnRla2lqb1wgOwor5raI5q+S6JasIDwgc2hvdWRva3V5YWt1XCA7CivmhrLms5XmlLnmraMgPCBrZW5wb3VrYWlzZWlcIDsKK+ihjOi3r+eXheiAhSA8IGtvdXJvYnlvdXNoYVwgOwor5LiA5Lq66Iqd5bGFIDwgaGl0b3Jpc2hpYmFpXCA7CivlhbHlkIzpmLLooZsgPCBreW91ZG91Ym91ZWlcIDsKK+mXmOW/l+a6gOa6gCA8IHRvdXNoaW1hbm1hblwgOwor5biC5Yui6Kq/5p+7IDwgc2hpc2VpY2hvdXNhXCA7CivkvJrljq3ou5/pqqggPCBlZW4nJ25hbmtvdHN1XCA7Civou43nlKjlnLDlm7MgPCBndW4nJ3lvdWNoaXp1XCA7CivmnbHlpZTopb/otbAgPCB0b3Vob25zZWlzb3VcIDsKK+mBk+W+s+W+iyA8IGRvdXRva3VyaXRzdVwgOwor5Lqk5Luj5L2c5qWtIDwga291dGFpc2FneW91XCA7Civlm73pmLLoibIgPCBrb2t1Ym91c2hva3VcIDsKK+aXpeiomOaWh+WtpiA8IG5pa2tpYnVuZ2FrdVwgOwor57WC5pyr6KuWIDwgc2h1dW1hdHN1cm9uXCA7Civml6Xns7vnsbPkurogPCBuaWtrZWliZWlqaW5cIDsKK+Wwhui7jeiBtyA8IHNob3VndW5zaG9rdVwgOwor6Iez5YWs6Iez5bmzIDwgc2hpa291c2hpaGVpXCA7CivplqLpgKPkvJrnpL4gPCBrYW5yZW5nYWlzaGFcIDsKK+S6uuaoqeWuo+iogCA8IGppbmtlbnNlbmdlblwgOwor5Lq66YCg5Lq66ZaTIDwgamluem91bmluZ2VuXCA7Civlgr7mlpzlrrbos4MgPCBrZWlzaGF5YWNoaW5cIDsKK+iHquawkeWFmuWJhyA8IGppbWludG91c29rdVwgOwor5Y+N5b6p6KiY5Y+3IDwgaGFucHVrdWtpZ291XCA7Civml6XmnKzoiKrnqbogPCBuaXBwb25rb3VrdXVcIDsKK+iLseaJjeaVmeiCsiA8IGVpc2Fpa3lvdWlrdVwgOwor6I2J5pyI5rWBIDwgc291Z2V0c3VyeXV1XCA7CivmjpLmsLTmnaHku7YgPCBoYWlzdWlqb3VrZW5cIDsKK+iLseWbveiIquepuiA8IGVpa29rdWtvdWt1dVwgOwor5piO6LWk6ImyIDwgbWVpc2VraXNob2t1XCA7Civop6PmsbrnrZYgPCBrYWlrZXRzdXNha3VcIDsKK+WPo+WUh+ijgiA8IGtvdXNoaW5yZXRzdVwgOwor5LiD6I2J57KlIDwgbmFuYWt1c2FnYXl1XCA7CivliY3lk6jpqI7lhbUgPCB6ZW5zaG91a2loZWlcIDsKK+awtOe0oOeIhuW8viA8IHN1aXNvYmFrdWRhblwgOwor5r2F5ryR55So5rC0IDwga2FuZ2FpeW91c3VpXCA7CivllYbmpa3lraYgPCBzaG91Z3lvdWdha3VcIDsKK+W7uuioreecgSA8IGtlbnNldHN1c2hvdVwgOwor5YiG5Yil5b+DIDwgZnVuYmV0c3VzaGluXCA7Civlu7roqK3nmoQgPCBrZW5zZXRzdXRla2lcIDsKK+mHkemLuCA8IGthbmVub2tvZ2lyaVwgOwor5LqM57+75b25IDwgcnlhbmZhbicneWFrdVwgOwor5LiA5paJ5bCE5pKDIDwgaXNzZWlzaGFnZWtpXCA7CivkuIDphbjljJbngq3ntKAgPCBpc3NhbmthdGFuc29cIDsKK+Wfuui7uOmAmuiyqCA8IGtpamlrdXRzdXVrYVwgOwor5YK+5pac55Sf55SjIDwga2Vpc2hhc2Vpc2FuXCA7CivlooPnlYznkIboq5YgPCBreW91a2Fpcmlyb25cIDsKK+Wkqeeah+mZm+S4iyA8IHRlbicnbm91aGVpa2FcIDsKK+WkqeeEtuaenOaxgSA8IHRlbicnbmVua2FqdXVcIDsKK+WPo+aLjeWtkCA8IGt1Y2hpYnlvdXNoaVwgOwor6ZyK6IKJ5LiA6Ie0IDwgcmVpbmlrdWl0Y2hpXCA7Civku5jliqDkvqHlgKTnqI4gPCBmdWtha2FjaGl6ZWlcIDsKK+e1jOa4iOW+qeiIiCA8IGtlaXphaWZ1a2tvdVwgOwor5Lq65Y+j57Wx6KiIIDwgamlua291dG91a2VpXCA7CivmiKbmmYLnlKPmpa0gPCBzZW5qaXNhbmd5b3VcIDsKK+WPpOmKreWtpuiAhSA8IGtvc2VuZ2FrdXNoYVwgOwor5a++5by+6YGT5by+IDwgdGFpZGFuZG91ZGFuXCA7Civoqo3oqLzlvI8gPCBuaW5zaG91c2hpa2lcIDsKK+ijvemAoOeVquWPtyA8IHNlaXpvdWJhbmdvdVwgOwor57eP5ous55qEIDwgc291a2F0c3V0ZWtpXCA7CivlpJrph43kurrmoLwgPCB0YWp1dWppbmtha3VcIDsKK+S4gOWIgOS4oeaWrSA8IGl0dG91cnlvdWRhblwgOwor5omY6Ymi5YOnIDwgdGFrdWhhdHN1em91XCA7CivlhbHnlKPkuLvnvqkgPCBreW91c2Fuc2h1Z2lcIDsKK+iomOWQjeaKleelqCA8IGtpbWVpdG91aHlvdVwgOwor5ZWG5qWt5Zu9IDwgc2hvdWd5b3Vrb2t1XCA7Civku7Lkurrlj6MgPCBuYWtvdWRvZ3VjaGlcIDsKK+ahnOWJjee3miA8IHNha3VyYXplbnNlblwgOwor5LyR5oap5pmC6ZaTIDwga3l1dWtlaWppa2FuXCA7CivkuLjlpKrotrPloLQgPCBtYXJ1dGFhc2hpYmFcIDsKK+ahg+iJsumBiuaIryA8IG1vbW9pcm95dXVnaVwgOwor5q2m5aOr6ZqO57SaIDwgYnVzaGlrYWlreXV1XCA7CivluLjnva7lp5Tlk6HkvJogPCBqb3VjaGlpaW5rYWlcIDsKK+Wbvemam+mbu+ipsSA8IGtva3VzYWlkZW53YVwgOwor5Lq65bel5Zyw6ZyHIDwgamlua291amlzaGluXCA7CivmvZzlnKjkuLvmqKkgPCBzZW56YWlzaHVrZW5cIDsKK+mBjuWwj+ipleS+oSA8IGthc2hvdWh5b3VrYVwgOwor56+E55aH6YOo6ZaAIDwgaGFuY2h1dWJ1bW9uXCA7Civkv67pgZPliLbluqYgPCBzaHV1ZG91c2VpZG9cIDsKK+e1seiqnuevhOeWhyA8IHRvdWdvaGFuY2h1dVwgOwor6KGb55Sf6Kit5YKZIDwgZWlzZWlzZXRzdWJpXCA7CivkuIDmrKHnlKPlk4EgPCBpY2hpamlzYW5waW5cIDsKK+W8t+WItuWKmyA8IGt5b3VzZWlyeW9rdVwgOwor5YWs5piO5q2j5aSnIDwga291bWVpc2VpZGFpXCA7Civlv4Xoqq3mm7ggPCBoaXRzdWRva3VzaG9cIDsKK+iKseeBq+e3mummmSA8IGhhbmFiaXNlbmtvdVwgOwor5Zyn5Yqb6KiIIDwgYXRzdXJ5b2t1a2VpXCA7CivoiLbnlKjmqZ/plqIgPCBoYWt1eW91a2lrYW5cIDsKK+maj+ethumbhiA8IHp1aWhpdHN1c2h1dVwgOwor5YWs5rCR5qip5rOVIDwga291bWlua2VuaG91XCA7CivnjKvnm67nn7MgPCBuZWtvbW9rdXNla2lcIDsKK+WLieW8t+acuiA8IGJlbmt5b3V6dWt1ZVwgOwor5piP552h54q25oWLIDwga29uc3Vpam91dGFpXCA7Civlr77lkJHou4rnt5ogPCB0YWlrb3VzaGFzZW5cIDsKK+mJhOaLs+WItuijgSA8IHRla2tlbnNlaXNhaVwgOwor5qGC5Yag6Kmp5Lq6IDwga2Vpa2Fuc2hpamluXCA7Civkurrlj6Poqr/mn7sgPCBqaW5rb3VjaG91c2FcIDsKK+WPuOazleino+WJliA8IHNoaWhvdWthaWJvdVwgOwor5Lq65Y+j6Z2Z5oWLIDwgamlua291c2VpdGFpXCA7CivmnInkvZPli5XnlKMgPCB5dXV0YWlkb3VzYW5cIDsKK+aOoeeUqOippumokyA8IHNhaXlvdXNoaWtlblwgOwor55m9546J5qW8IDwgaGFrdWd5b2t1cm91XCA7CivmsJfosaHmg4XloLEgPCBraXNob3Vqb3Vob3VcIDsKK+aciee3muaUvumAgSA8IHl1dXNlbmhvdXNvdVwgOwor6ZaL6YCa5byPIDwga2FpdHN1dXNoaWtpXCA7CivmiK/kuosgPCB0YXdhbXVyZWdvdG9cIDsKK+WWgOeXsOaknOafuyA8IGtha3V0YW5rZW5zYVwgOwor6YO35Zyf5paZ55CGIDwga3lvdWRvcnlvdXJpXCA7CivkuInmrrXoq5bms5UgPCBzYW5kYW5yb25wb3VcIDsKK+ilv+WNiueQgyA8IG5pc2hpaGFua3l1dVwgOwor5pmC5Luj57K+56WeIDwgamlkYWlzZWlzaGluXCA7CivoqoflpKfluoPlkYogPCBrb2RhaWtvdWtva3VcIDsKK+mDveW4guioiOeUuyA8IHRvc2hpa2Vpa2FrdVwgOwor6Zai5p2x5LiA5YaGIDwga2FudG91aWNoaWVuXCA7Civoh6rnhLbnmbrnlJ8gPCBzaGl6ZW5oYXNzZWlcIDsKK+WVhOacqOmzpSA8IHRha3Vib2t1Y2hvdVwgOwor5Y2Y5LiA5b2iIDwgdGFuJydpY2hpZ2F0YVwgOwor5qy95a6a5oay5rOVIDwga2ludGVpa2VucG91XCA7Civlv4XnhLbnmoQgPCBoaXRzdXplbnRla2lcIDsKK+aVsOWApOWItuW+oSA8IHN1dWNoaXNlaWd5b1wgOwor5q2m6ICF5Lq65b2iIDwgbXVzaGFuaW5neW91XCA7CivliIblkajlm57ot68gPCBidW5zaHV1a2Fpcm9cIDsKK+W4guawkeWkp+S8miA8IHNoaW1pbnRhaWthaVwgOwor6LWk5a2X5Zu95YK1IDwgYWthamlrb2t1c2FpXCA7Civkvb/nlKjmlrnms5UgPCBzaGl5b3Vob3Vob3VcIDsKK+awtOift+iegiA8IG1penVrYW1ha2lyaVwgOwor5bCP5pil5pel5ZKMIDwga29oYXJ1Yml5b3JpXCA7CivmmJ/mnIjlpJwgPCBob3NoaWR6dWt1eW9cIDsKK+e4nue5lOeJqSA8IHNoaW1hb3JpbW9ub1wgOwor5YWs5byP6Kmm5ZCIIDwga291c2hpa2lqaWFpXCA7CivnhaflsITlh6bnkIYgPCBzaG91c2hhc2hvcmlcIDsKK+W7uuiorealrSA8IGtlbnNldHN1Z3lvdVwgOwor5Y+C5Yuk5Lqk5pu/IDwgc2Fua2lua291dGFpXCA7CivnvorpoK3ni5fogokgPCB5b3V0b3VrdW5pa3VcIDsKK+aWoeaXi+alreiAhSA8IGFzc2VuZ3lvdXNoYVwgOwor5Lya56S+5qaC6KaBIDwga2Fpc2hhZ2FpeW91XCA7CivllYbkurrooZcgPCBzaG91bmlubWFjaGlcIDsKK+S4gOW5leeJqSA8IGhpdG9tYWt1bW9ub1wgOwor5rCR5Li75pS/5L2TIDwgbWluc2h1c2VpdGFpXCA7CivnspfmlL7ovrLmpa0gPCBzb2hvdW5vdWd5b3VcIDsKK+iyoeWLmeiruOihqCA8IHphaW11c2hvaHlvdVwgOwor6JqK5Y+W57ea6aaZIDwga2F0b3Jpc2Vua291XCA7CivluoPloLHmg4XloLEgPCBrb3Vob3Vqb3Vob3VcIDsKK+e3iuaApeS6i+aFiyA8IGtpbmt5dXVqaXRhaVwgOwor5Z2H6KGh5L6h5qC8IDwga2lua291a2FrYWt1XCA7Civlhazlronlp5Tlk6HkvJogPCBrb3VhbicnaWlua2FpXCA7CivlraPnr4DlpInnlbAgPCBraXNldHN1aGVuJydpXCA7CivmnInmhJ/lnLDpnIcgPCB5dXVrYW5qaXNoaW5cIDsKK+e3qeWSjOaMr+WLlSA8IGthbndhc2hpbmRvdVwgOwor5bm96ZyK5Lq65Y+jIDwgeXV1cmVpamlua291XCA7CivntbHoqp7mjIfmqJkgPCB0b3Vnb3NoaWh5b3VcIDsKK+acgOmrmOS+oeagvCA8IHNhaWtvdWtha2FrdVwgOwor55m+5Lq65YqbIDwgaHlha3VuaW5yaWtpXCA7CivphbjmgKfnmb3lnJ8gPCBzYW5zZWloYWt1ZG9cIDsKK+awkeaXj+iho+ijhSA8IG1pbnpva3Vpc2hvdVwgOwor5L6b6L+w5pu4IDwga3lvdWp1dHN1c2hvXCA7CivpnZ7llrbliKnkuovmpa0gPCBoaWVpcmlqaWd5b3VcIDsKK+Wun+alreeVjCA8IGppdHN1Z3lvdWthaVwgOwor5L+u5aOr6Kqy56iLIDwgc2h1dXNoaWthdGVpXCA7CivooYzlubPpjYsgPCB5dWtpaGlyYW5hYmVcIDsKK+WFrOebiuazleS6uiA8IGtvdWVraWhvdWppblwgOwor5q205Y+y5Li7576pIDwgcmVraXNoaXNodWdpXCA7CivlvIHmhbbmoLzlrZAgPCBiZW5rZWlnb3VzaGlcIDsKK+esrOS6jOS6uuensCA8IGRhaW5pbmluc2hvdVwgOwor5LiL5rWB56S+5LyaIDwga2FyeXV1c2hha2FpXCA7Civlv6vmpb3kuLvnvqkgPCBrYWlyYWt1c2h1Z2lcIDsKK+iQveaIkOW8jyA8IHJha3VzZWlzaGlraVwgOwor5p+z5bed6Y2LIDwgeWFuYWdhd2FuYWJlXCA7CivoiKrntprlipsgPCBrb3V6b2t1cnlva3VcIDsKK+WItumZkOmAn+W6piA8IHNlaWdlbnNva3Vkb1wgOwor5paH5q2m5Lih6YGTIDwgYnVuYnVyeW91ZG91XCA7CivkuIrmmIfpmZDluqYgPCBqb3VzaG91Z2VuZG9cIDsKK+S9nOeUqOepjeWIhiA8IHNheW91c2VraWJ1blwgOwor55u05o6l6LK7IDwgY2hva3VzZXRzdWhpXCA7CivohbnnrYvpgYvli5UgPCBmdWtraW4nJ3VuZG91XCA7Civlhazoqo3oqJjpjLIgPCBrb3VuaW5raXJva3VcIDsKK+WxseaiqOecjCA8IHlhbWFuYXNoaWtlblwgOwor5LiA57ay5omT5bC9IDwgaWNoaW1vdWRhamluXCA7Civmo5fmpLDlrZAgPCBuYXRzdW1leWFzaGlcIDsKK+WtpuagoeeUqOWTgSA8IGdha2tvdXlvdWhpblwgOwor5L2P5a6F5omL5b2TIDwganV1dGFrdXRlYXRlXCA7Civoqo3nn6Xnp5HlraYgPCBuaW5jaGlrYWdha3VcIDsKK+WVhuWjsumBk+WFtyA8IHNob3ViYWlkb3VndVwgOwor5Yi65r+A54mpIDwgc2hpZ2VraWJ1dHN1XCA7Civljp/lrZDmiKbkuokgPCBnZW5zaGlzZW5zb3VcIDsKK+a8q+mBiuWuoiA8IG1hbicneXV1a3lha3VcIDsKK+S6jOmHjeeEpueCuSA8IG5panV1c2hvdXRlblwgOwor55Om54WO6aSFIDwga2F3YXJhc2VuYmVpXCA7Civlm7Pmm7jppKjplbcgPCB0b3Nob2thbmNob3VcIDsKK+WcqOW6q+iqv+aVtCA8IHphaWtvY2hvdXNlaVwgOwor5a++5pWw6Zai5pWwIDwgdGFpc3V1a2Fuc3V1XCA7CivopqrlrZDkuLwgPCBveWFrb2RvbmJ1cmlcIDsKK+aUv+aVmeS4gOiHtCA8IHNlaWt5b3VpdGNoaVwgOwor5paH6Iq45om56KmVIDwgYnVuZ2VpaGloeW91XCA7Civnt5rlvaLku6PmlbAgPCBzZW5rZWlkYWlzdXVcIDsKK+mAo+WQiOaUv+aoqSA8IHJlbmdvdXNlaWtlblwgOwor6aC85q+N5a2Q6KybIDwgdGFub21vc2hpa291XCA7CivlnKjpn5PnsbPou40gPCB6YWlrYW5iZWlndW5cIDsKK+iRl+i/sOalrSA8IGNob2p1dHN1Z3lvdVwgOwor5LiA5aSc5Lme6aOfIDwgaWNoaXlha29qaWtpXCA7CivnlbDluLjntYLkuoYgPCBpam91c2h1dXJ5b3VcIDsKK+WTgeW9oiA8IHNoaW5ha2F0YWNoaVwgOwor6Kmm6aiT5Zyw542EIDwgc2hpa2Vuamlnb2t1XCA7CivnpL7lk6HmlZnogrIgPCBzaGFpbmt5b3Vpa3VcIDsKK+iSvOeZveiJsiA8IHNvdWhha3VzaG9rdVwgOwor5LyB5qWt5bm06YeRIDwga2lneW91bmVua2luXCA7CivkuZ7po5/moLnmgKcgPCBrb2ppa2lrb25qb3VcIDsKK+S8gealreWQiOWQjCA8IGtpZ3lvdWdvdWRvdVwgOwor6Ieq5Li75oyH6YedIDwgamlzaHVzaGlzaGluXCA7CivmhJ/mhajnhKHph48gPCBrYW5nYWltdXJ5b3VcIDsKK+S4g+i+uuW9oiA8IHNoaWNoaWhlbmtlaVwgOwor5pW15oCn5Zu95a62IDwgdGVraXNlaWtva2thXCA7CivnrYnlt67ntJrmlbAgPCB0b3VzYWt5dXVzdXVcIDsKK+W5tOacq+i/hCA8IG5lbm1hdHN1bWFkZVwgOwor5bir56+E5a2m5qChIDwgc2hpaGFuZ2Fra291XCA7CivntYzmuIjnpL7kvJogPCBrZWl6YWlzaGFrYWlcIDsKK+aUueiJr+S4u+e+qSA8IGthaXJ5b3VzaHVnaVwgOwor57WM5riI5Yi26KOBIDwga2VpemFpc2Vpc2FpXCA7CivkuLvmiKbmipXmiYsgPCBzaHVzZW50b3VzaHVcIDsKK+WjsuaYpeWuvyA8IGJhaXNodW4nJ3lhZG9cIDsKK+mBiuaSg+maiuWToSA8IHl1dWdla2l0YWlpblwgOwor5LiA5pmC5biw5LyRIDwgaWNoaWppa2lreXV1XCA7Civos6rngrnns7sgPCBzaGl0c3V0ZW5rZWlcIDsKK+WPl+ebiuiovOWIuCA8IGp1ZWtpc2hvdWtlblwgOwor5b6h5Ly96KmxIDwgb3RvZ2liYW5hc2hpXCA7Civmi5npgJ/kuLvnvqkgPCBzZXNzb2t1c2h1Z2lcIDsKK+acqumWi+aLk+WcsCA8IG1pa2FpdGFrdWNoaVwgOwor5YWo5qip5YWs5L2/IDwgemVua2Vua291c2hpXCA7CivntbHliLbntYzmuIggPCB0b3VzZWlrZWl6YWlcIDsKK+eUsOWckumiqOaZryA8IGRlbicnZW5mdXVrZWlcIDsKK+aXheihjOaXpeeoiyA8IHJ5b2tvdW5pdHRlaVwgOwor5pON5qWt546HIDwgc291Z3lvdXJpdHN1XCA7CivnhKHph4/lpKfmlbAgPCBtdXJ5b3VkYWlzdXVcIDsKK+WJsuW8leatqeWQiCA8IHdhcmliaWtpYnVhaVwgOwor5Y+N5qC46YGL5YuVIDwgaGFua2FrdXVuZG91XCA7CivmnpXlsY/poqggPCBtYWt1cmFieW91YnVcIDsKK+ihgOa2suWtpiA8IGtldHN1ZWtpZ2FrdVwgOwor6aaZ5riv6L+U6YKEIDwgaG9ua29uaGVua2FuXCA7CivkvIHmpa3lkIjkvbUgPCBraWd5b3VnYXBwZWlcIDsKK+mdnuihjOWwkeW5tCA8IGhpa291c2hvdW5lblwgOwor5Z+6552j5pWZIDwga2lyaXN1dG9reW91XCA7Civph47lpJbmkq7lvbEgPCB5YWdhaXNhdHN1ZWlcIDsKK+m8oOiKseeBqyA8IG5lenVtaWhhbmFiaVwgOwor5Y2D5omL6Kaz6Z+zIDwgc2VuanVrYW4nJ25vblwgOwor57K+56We5Li7576pIDwgc2Vpc2hpbnNodWdpXCA7CivntYLlp4vkuIDosqsgPCBzaHV1c2hpaWtrYW5cIDsKK+aNleeJqeW4syA8IHRvcmltb25vY2hvdVwgOwor55yM5rCR5Lya6aSoIDwga2VubWlua2Fpa2FuXCA7CivmlZnmnaHkuLvnvqkgPCBreW91am91c2h1Z2lcIDsKK+abtOeUn+S8muekviA8IGtvdXNlaWdhaXNoYVwgOwor57mK57at5bel5qWtIDwgc2VuJydpa291Z3lvdVwgOwor5Lq66ZaT5ZCM5aOrIDwgbmluZ2VuZG91c2hpXCA7Civosq/olLXlrqQgPCBjaG96b3VzaGl0c3VcIDsKK+WLmOWQiOiyv+aYkyA8IGthbmdvdWJvdWVraVwgOwor55m+5a625LqJ6bO0IDwgaHlha2thc291bWVpXCA7CivkuJbnlYzmlL/nrZYgPCBzZWthaXNlaXNha3VcIDsKK+W8lOWVj+WuoiA8IGNob3Vtb25reWFrdVwgOwor5a625bGL5Y+w5bizIDwga2Fva3VkYWljaG91XCA7CivmnbHmtbfpgZPnt5ogPCB0b3VrYWlkb3VzZW5cIDsKK+mBuuWkseeJqSA8IGlzaGl0c3VidXRzdVwgOwor5YuV6ISI6KGAIDwgZG91bXlha2tldHN1XCA7CivpgY7lvZPnq7bkuokgPCBrYXRvdWt5b3Vzb3VcIDsKK+a2suS9k+eqkue0oCA8IGVraXRhaWNoaXNzb1wgOwor5bmz5ZKM5Y2U5a6aIDwgaGVpd2FreW91dGVpXCA7CivnhKHnt5rpm7vkv6EgPCBtdXNlbmRlbnNoaW5cIDsKK+WFpeWgtOW8jyA8IG55dXVqb3VzaGlraVwgOwor57Sw6IOe6LOqIDwgc2FpYm91c2hpdHN1XCA7CivlsILploDnlKjoqp4gPCBzZW5tb24nJ3lvdWdvXCA7CivkurrpgKDogqXmlpkgPCBqaW56b3VoaXJ5b3VcIDsKK+Wkp+egsuS4iemWgCA8IHRhaWhvdXNhbm1vblwgOwor5a6f6aiT6KOF572uIDwgamlra2Vuc291Y2hpXCA7CivooYDmtrLlnosgPCBrZXRzdWVraWdhdGFcIDsKK+S4reWkruWKtOWDjSA8IGNodXVvdXJvdWRvdVwgOwor5YaF57ea55Wq5Y+3IDwgbmFpc2VuYmFuZ291XCA7CivkvJ3oqJjkvZzogIUgPCBkZW5raXNha3VzaGFcIDsKK+S6uuawkeWFrOekviA8IGppbm1pbmtvdXNoYVwgOwor6YCj57Wh5YiH56ymIDwgcmVucmFrdWtpcHB1XCA7CivmqJnorZjnga8gPCBoeW91c2hpa2l0b3VcIDsKK+e1jOWWtuWQiOeQhuWMliA8IGtlaWVpZ291cmlrYVwgOwor5YWx5ZCM5aKT5ZywIDwga3lvdWRvdWJvY2hpXCA7Civlrp/mhYvoqr/mn7sgPCBqaXR0YWljaG91c2FcIDsKK+e3j+WLmemVt+WumCA8IHNvdW11Y2hvdWthblwgOwor5re35Lmx54q25oWLIDwga29ucmFuam91dGFpXCA7Civli6Lou4ogPCBoYXp1bWlndXJ1bWFcIDsKK+WTgOWTiSA8IGthbmFzaGlpa2FuYVwgOwor5YyF5ous55qEIDwgaG91a2F0c3V0ZWtpXCA7CivliofkuK3liocgPCBnZWtpY2h1dWdla2lcIDsKK+WutuaXj+aEj+itmCA8IGthem9rdWlzaGlraVwgOwor5aSW5p+U5YaF5YmbIDwgZ2FpanV1bmFpZ291XCA7CivoqKrllY/osqnlo7IgPCBob3Vtb25oYW5iYWlcIDsKK+Wun+eUqOeahCA8IGppdHN1eW91dGVraVwgOwor5L6N5YWr6aiOIDwgc2FtdXJhaWhha2tpXCA7CivkuK3plpPoibIgPCBjaHV1a2Fuc2hva3VcIDsKK+aOkuaWpemBi+WLlSA8IGhhaXNla2l1bmRvdVwgOwor6ZaL6IW56KGTIDwga2FpZnVrdWp1dHN1XCA7Civljp/lrZDlvL7poK0gPCBnZW5zaGlkYW50b3VcIDsKK+ebtOaSg+W8viA8IGNob2t1Z2VraWRhblwgOwor5Za25qWt5qGI5YaFIDwgZWlneW91YW4nJ25haVwgOwor5aSp5paH6Iiq5rOVIDwgdGVubW9ua291aG91XCA7CivpnZ7lrp/pmpvnmoQgPCBoaWppc3NhaXRla2lcIDsKK+ijj+abuOitsua4oSA8IHVyYWdha2lqb3V0b1wgOwor5Ymv55Sj54mpIDwgZnVrdXNhbmJ1dHN1XCA7Civlkb3kuK3njocgPCBtZWljaHV1cml0c3VcIDsKK+ihgOWPi+eXhSA8IGtldHN1eXV1YnlvdVwgOwor6Zai5L+C5pu46aGeIDwga2Fua2Vpc2hvcnVpXCA7CivlhY3oqLHnmobkvJ0gPCBtZW5reW9rYWlkZW5cIDsKK+Wbnui7ouertuaKgCA8IGthaXRlbmt5b3VnaVwgOwor57WM5riI5rC05Z+fIDwga2VpemFpc3VpaWtpXCA7CivnhKHmrLLmgazmt6EgPCBtdXlva3V0ZW50YW5cIDsKK+iHquaIkeWun+ePviA8IGppZ2FqaXRzdWdlblwgOwor5Z+36KGM54y25LqIIDwgc2hpa2tvdXl1dXlvXCA7Civono3pgJrmiYvlvaIgPCB5dXV6dXV0ZWdhdGFcIDsKK+WOmueUn+W5tOmHkSA8IGtvdXNlaW5lbmtpblwgOwor6Zmi5YaF5oSf5p+TIDwgaW4nJ25haWthbnNlblwgOwor5oKq5oCn5rC06IWrIDwgYWt1c2Vpc3Vpc2h1XCA7Civlm6PljYHpg47kuIggPCBkYW5qdXVyb3Vqb3VcIDsKK+eyvueZveeOhyA8IHNlaWhha3VyaXRzdVwgOwor5Lul5b+D5Lyd5b+DIDwgaXNoaW5kZW5zaGluXCA7CivkuIDlrZfljYPph5EgPCBpY2hpamlzZW5raW5cIDsKK+alree4vuaCquWMliA8IGd5b3VzZWtpYWtrYVwgOwor5YW15Zmo5ouh5pWjIDwgaGVpa2lrYWt1c2FuXCA7CivkuqTlj4vplqLkv4IgPCBrb3V5dXVrYW5rZWlcIDsKK+Wbvemam+aUv+ayuyA8IGtva3VzYWlzZWlqaVwgOwor5Z2H6LOq5oCnIDwga2luc2hpdHN1c2VpXCA7Civmm7jpnaLlr6nnkIYgPCBzaG9tZW5zaGlucmlcIDsKK+S6uumWk+ekvuS8miA8IG5pbmdlbnNoYWthaVwgOwor6LuN5Zu95Li7576pIDwgZ3Vua29rdXNodWdpXCA7CivmsLTkuIrnq7bmioAgPCBzdWlqb3VreW91Z2lcIDsKK+ays+WOn+S5numjnyA8IGthd2FyYWtvamlraVwgOwor5oi457GN5L+CIDwga29zZWtpZ2FrYXJpXCA7Civkuozph43mkq7lvbEgPCBuaWp1dXNhdHN1ZWlcIDsKK+e1tuWvvuipleS+oSA8IHpldHRhaWh5b3VrYVwgOwor5Zyo57Gz6YKm5Lq6IDwgemFpYmVpaG91amluXCA7Civlm5vmnIjppqzpub8gPCBzaGlnYXRzdWJha2FcIDsKK+aWsOmAsuawl+mLrSA8IHNoaW5zaGlua2llaVwgOwor5omA5b6X5o6n6ZmkIDwgc2hvdG9rdWtvdWpvXCA7CivplqLkv4LkvJrnpL4gPCBrYW5rZWlnYWlzaGFcIDsKK+iHquS/oea6gOa6gCA8IGppc2hpbm1hbm1hblwgOwor5pel5pys5a2m6ICFIDwgbmlob25nYWt1c2hhXCA7CivmjqXlrqLmpa0gPCBzZWtreWFrdWd5b3VcIDsKK+aYpeaXpeWkp+ekviA8IGthc3VnYXRhaXNoYVwgOwor5rC055uDIDwgbWl6dXNha2F6dWtpXCA7CivmlofmmI7npL7kvJogPCBidW5tZWlzaGFrYWlcIDsKK+iThOiGv+eXhyA8IGNoaWt1bm91c2hvdVwgOwor5ZCM5Lq66ZuR6KqMIDwgZG91amluemFzc2hpXCA7CivoirHlvaLmoKogPCBoYW5hZ2F0YWthYnVcIDsKK+WPuOazleijgeWIpCA8IHNoaWhvdXNhaWJhblwgOwor5Lq65L2T5a6f6aiTIDwgamludGFpamlra2VuXCA7CivkuqHlkb3mlL/mqKkgPCBib3VtZWlzZWlrZW5cIDsKK+aMr+WHuuS6uiA8IGZ1cmlkYXNoaW5pblwgOwor5Luy6ZaT5ZCM5aOrIDwgbmFrYW1hZG91c2hpXCA7CivntYzllrblt6XlraYgPCBrZWllaWtvdWdha3VcIDsKK+W8geitt+S+nemgvOS6uiA8IGJlbmdvaXJhaW5pblwgOwor6LOb5ZCm5Lih6KuWIDwgc2FucGlyeW91cm9uXCA7CivkuI3ms5Xpm4bkvJogPCBmdWhvdXNodXVrYWlcIDsKK+ecvOmrmOaJi+S9jiA8IGdhbmtvdXNodXRlaVwgOwor56aB5qyy55qEIDwga2luJyd5b2t1dGVraVwgOwor6Ieq5YuV5bCP6YqDIDwgamlkb3VzaG91anV1XCA7CivlnLDln5/npL7kvJogPCBjaGlpa2lzaGFrYWlcIDsKK+S6pOa1geS6uuS6iyA8IGtvdXJ5dXVqaW5qaVwgOwor54m55q6K5Yq55p6cIDwgdG9rdXNodWtvdWthXCA7CivkuIDliIbliKUgPCBoaXRvZnVuYmV0c3VcIDsKK+iHquWutuS4reavkiA8IGppa2FjaHV1ZG9rdVwgOwor5Lq65rCX55Wq57WEIDwgbmlua2liYW5ndW1pXCA7CivmlbXmnKzkuLvnvqkgPCB0ZWtpaG9uc2h1Z2lcIDsKK+WPo+WGheaAp+S6pCA8IGtvdW5haXNlaWtvdVwgOwor6ISz6Luf5YyW55eHIDwgbm91bmFua2FzaG91XCA7CivljYrni6znq4sgPCBoYW5kb2t1cml0c3VcIDsKK+ePvuWcsOazleS6uiA8IGdlbmNoaWhvdWppblwgOwor6Ieq5YuV6LuK5rOlIDwgamlkb3VzaGFkb3JvXCA7CivkuIDmmYLlgZzmraIgPCBpY2hpaml0ZWlzaGlcIDsKK+WtpuWckue0m+S6iSA8IGdha3VlbmZ1bnNvdVwgOwor5pyA6auY5a2m5bqcIDwgc2Fpa291Z2FrdWZ1XCA7Civkv53pmbrlpZHntIQgPCBob2tlbmtlaXlha3VcIDsKK+Wls+aAp+W3ruWIpSA8IGpvc2Vpc2FiZXRzdVwgOwor5YWQ56ul56aP56WJIDwgamlkb3VmdWt1c2hpXCA7Civln7fli5nkuK0gPCBzaGl0c3VtdWNodXVcIDsKK+ippumok+WVj+mhjCA8IHNoaWtlbm1vbmRhaVwgOwor5ry46YCy5Li7576pIDwgemVuc2hpbnNodWdpXCA7Civpn7Pkv6HkuI3pgJogPCBvbnNoaW5mdXRzdXVcIDsKK+WLh+W+gOmCgemAsiA8IHl1dW91bWFpc2hpblwgOwor6Z2Z5q2i54q25oWLIDwgc2Vpc2hpam91dGFpXCA7CivljJfmlK/kuovlpIkgPCBob2t1c2hpamloZW5cIDsKK+WvuOWAn+ipkOasuiA8IHN1bnNoYWt1c2FnaVwgOwor5oyH5ZCN6YCa6KmxIDwgc2hpbWVpdHN1dXdhXCA7Civoi6blv4Pmg6jmhrogPCBrdXNoaW5zYW50YW5cIDsKK+eJveW8t+S7mOS8miA8IGtlbmt5b3VmdWthaVwgOwor5a+S5Ya35YmN57eaIDwga2FucmVpemVuc2VuXCA7CivliKnku5bkuLvnvqnogIUgPCByaXRhc2h1Z2lzaGFcIDsKK+imquaXpea0viA8IHNoaW4nJ25pY2hpaGFcIDsKK+mAn+W6puWItumZkCA8IHNva3Vkb3NlaWdlblwgOwor5Zub6YOo5ZCI5ZSxIDwgc2hpYnVnYXNzaG91XCA7Civpm7vpm7vlhaznpL4gPCBkZW5kZW5rb3VzaGFcIDsKK+emj+WztuecjCA8IGZ1a3VzaGltYWtlblwgOwor6Kq/6Imy5p2/IDwgY2hvdXNob2t1YmFuXCA7CivlhKrli53lgJnoo5wgPCB5dXVzaG91a291aG9cIDsKK+WPi+WlvemWouS/giA8IHl1dWtvdWthbmtlaVwgOwor5pWR5o+054mp6LOHIDwga3l1dWVuYnVzc2hpXCA7Civliarlrprpi48gPCBzZW50ZWliYXNhbWlcIDsKK+e3kem7hOiJsiA8IHJ5b2t1b3VzaG9rdVwgOwor5YyF57SZIDwgdHN1dHN1bWlnYW1pXCA7CivkuIvlsYvmlbcgPCBzaGltb3lhc2hpa2lcIDsKK+elnuekvuS7j+mWoyA8IGppbmphYnVra2FrdVwgOwor6LuK55So5ZOBIDwga3VydW1heW91aGluXCA7CivogJDkuYXlipsgPCB0YWlreXV1cnlva3VcIDsKK+awtOW5s+aAneiAgyA8IHN1aWhlaXNoaWtvdVwgOwor6Z+z5oSf5pWZ6IKyIDwgb25rYW5reW91aWt1XCA7Civlr53lj7DomasgPCBzaGluZGFpbXVzaGlcIDsKK+WXnOiZkOeahCA8IHNoaWd5YWt1dGVraVwgOwor5rue57SN5Yem5YiGIDwgdGFpbm91c2hvYnVuXCA7CivkuK3ntpnlsYAgPCBjaHV1a2Vpa3lva3VcIDsKK+WFseWQjOe1jOWWtiA8IGt5b3Vkb3VrZWllaVwgOwor6ZW35bqD6IiMIDwgY2hvdWtvdXpldHN1XCA7Civkuozlha3mmYLkuK0gPCBuaXJva3VqaWNodXVcIDsKK+S4gOaZguiznOmHkSA8IGljaGlqaXNoaWtpblwgOwor6Ieq54S25bSH5oudIDwgc2hpemVuc3V1aGFpXCA7Civlr6norbDmnKrkuoYgPCBzaGluZ2ltaXJ5b3VcIDsKK+mkiuWtkOe4gee1hCA8IHlvdXNoaWVuZ3VtaVwgOwor5pel5rKh5b6MIDwgbmljaGlib3RzdWdvXCA7CivmsI/ml4/liLbluqYgPCBzaGl6b2t1c2VpZG9cIDsKK+WLleiEiOeYpCA8IGRvdW15YWt1cnl1dVwgOwor5LiA6Lyq5oy/IDwgaWNoaXJpbnphc2hpXCA7Civou43pmaPljLvlraYgPCBndW5qaW4nJ2lnYWt1XCA7Civokrjnmbrnmr8gPCBqb3VoYXRzdXphcmFcIDsKK+ato+Wbm+mdouS9kyA8IHNlaXNoaW1lbnRhaVwgOwor5a6a5qC86KuL6LKgIDwgdGVpa2FrdXVrZW9pXCA7Civos4PlgJ/mqKkgPCBjaGluc2hha3VrZW5cIDsKK+WNuOWVj+WxiyA8IG9yb3NoaWRvbicneWFcIDsKK+mYsua5v+WJpCA8IGJvdXNoaXRzdXphaVwgOwor5Y+O56mr6auYIDwgc2h1dWtha3VkYWthXCA7Civlho3lh7rnmbogPCBzYWlzaHVwcGF0c3VcIDsKK+W+hemBh+aUueWWhCA8IHRhaWd1dWthaXplblwgOwor57mK57at5YWJ5a2mIDwgc2VuJydpa291Z2FrdVwgOwor6buS5Lq66ZyK5q2MIDwga29rdWppbnJlaWthXCA7CivlkajmpbXmmJ8gPCBzaHV1a3lva3VzZWlcIDsKK+mbtuihjOWIlyA8IHJlaWd5b3VyZXRzdVwgOwor54m55q6K5qmf6IO9IDwgdG9rdXNodWtpbm91XCA7CivntYzot6/nqY3liIYgPCBrZWlyb3Nla2lidW5cIDsKK+WbveWWtui+suWgtCA8IGtva3VlaW5vdWpvdVwgOwor5Zu957KL5Li7576pIDwga29rdXN1aXNodWdpXCA7Civlh7rnmbrngrkgPCBzaHVwcGF0c3V0ZW5cIDsKK+eUsueKtuiFuueCjiA8IGtvdWpvdXNlbicnZW5cIDsKK+WQiOagvOeOhyA8IGdvdWtha3VyaXRzdVwgOwor6LOH55Sj5ZCI6KiIIDwgc2hpc2FuZ291a2VpXCA7Civpr6jpo7Lppqzpo58gPCBnZWlpbmJhc2hva3VcIDsKK+W/g+iHk+eZuuS9nCA8IHNoaW56b3Vob3NzYVwgOwor5paw5Lq65q2M5omLIDwgc2hpbmppbmthc2h1XCA7CivovLjlhaXmiYvlvaIgPCB5dW55dXV0ZWdhdGFcIDsKK+Wcp+edgOerr+WtkCA8IGF0c3VnaXRhbnNoaVwgOwor5pyq5pS55b+D6ICFIDwgbWlrYWlzaGluc2hhXCA7CivnhKHlirnmipXnpaggPCBtdWtvdXRvdWh5b3VcIDsKK+ihjOmAsuabsiA8IGtvdXNoaW5reW9rdVwgOwor6Zuj5pS75LiN6JC9IDwgbmFua291ZnVyYWt1XCA7CivkuIDlv4PlkIzkvZMgPCBpc3NoaW5kb3V0YWlcIDsKK+WupeWSjOaUv+etliA8IHl1dXdhc2Vpc2FrdVwgOwor6ZmQ55WM5Yq555SoIDwgZ2Vua2Fpa291eW91XCA7CivljYHkuIflhITlnJ8gPCBqdXVtYW4nJ29rdWRvXCA7CivlpInmhYvlv4PnkIYgPCBoZW50YWlzaGlucmlcIDsKK+eZveeGseeBryA8IGhha3VuZXRzdXRvdVwgOwor5ouN5a2Q6KiY5Y+3IDwgaHlvdXNoaWtpZ291XCA7CivlhazkvJrllY/nrZQgPCBrb3VrYWltb25kb3VcIDsKK+iAg+WPpOWtpuiAhSA8IGtvdWtvZ2FrdXNoYVwgOwor6aOf5paZ5ZOBIDwgc2hva3VyeW91aGluXCA7Civph47nkIPpgbjmiYsgPCB5YWt5dXVzZW5zaHVcIDsKK+aTjei7iuS/giA8IHNvdXNoYWdha2FyaVwgOwor5aSi6YGK55eF6ICFIDwgbXV5dXVieW91c2hhXCA7CivopoHmiYDopoHmiYAgPCB5b3VzaG95b3VzaG9cIDsKK+a5v+mbu+axoCA8IHNoaXRzdWRlbmNoaVwgOwor6Kaz5o6M6KGTIDwga2Fuc2hvdWp1dHN1XCA7Civkvb/lvpLntpnmib8gPCBzaGl0b2tlaXNob3VcIDsKK+WKseejgembu+a1gSA8IHJlaWppZGVucnl1dVwgOwor5b+XIDwga29rb3JvemFzaGlcIDsKK+aUvyA8IG1hdHN1cmlnb3RvXCA7CivnpL7kvJrliLbluqYgPCBzaGFrYWlzZWlkb1wgOwor5Luj55CG6aCY5LqLIDwgZGFpcmlyeW91amlcIDsKK+eCueaVsOWIh+espiA8IHRlbnN1dWtpcHB1XCA7CivljJbmiJDogqXmlpkgPCBrYXNlaWhpcnlvdVwgOwor5pyq5oiQ5bm06ICFIDwgbWlzZWluZW5zaGFcIDsKK+ecn+mqqOmggiA8IHNoaW5rb3RjaG91XCA7Civlv4XopoHlk4EgPCBoaXRzdXlvdWhpblwgOwor55S75LiW55qEIDwga2FrdXNlaXRla2lcIDsKK+S4gOWkqeS4h+S5lyA8IGl0dGVuYmFuam91XCA7CivnhqjmlpfooosgPCBub3NoaWJ1a3Vyb1wgOwor5ris5Zyw5a2mIDwgc29rdWNoaWdha3VcIDsKK+imquWtkOmWouS/giA8IG95YWtva2Fua2VpXCA7Civpm4HmnKjpkaIgPCBnYW5naXlhc3VyaVwgOwor5YaN5Ymy5byVIDwgc2Fpd2FyaWJpa2lcIDsKK+aBkOaAluaUv+ayuyA8IGt5b3VmdXNlaWppXCA7CivlpYnnjK7lvI8gPCBob3VrZW5zaGlraVwgOwor6Jma5pWw5Y2Y5L2NIDwga3lvc3V1dGFuJydpXCA7CivpgbjmjJnliLbluqYgPCBzZW5reW9zZWlkb1wgOwor5Yid6KqV55SfIDwgaGF0c3V0YW5qb3VcIDsKK+S4ieacrOi2syA8IHNhbmJvbicnYXNoaVwgOwor5Yik5pat5YqbIDwgaGFuZGFucnlva3VcIDsKK+Wkp+mhmOaIkOWwsSA8IGRhaWdhbmpvdWp1XCA7CivljZToqr/mgKcgPCBreW91Y2hvdXNlaVwgOwor5YaG5Y2T5Lya6K2wIDwgZW50YWt1a2FpZ2lcIDsKK+WkqemBk+S5viA8IHRlbnRvdWJvc2hpXCA7CivlpKflrq7lvqHmiYAgPCBvb21peWFnb3Nob1wgOwor55m95pel5aSiIDwgaGFrdWppdHN1bXVcIDsKK+WIhuaekOihqCA8IGJ1bnNla2loeW91XCA7CivkuIrkuIvplqLkv4IgPCBqb3VnZWthbmtlaVwgOwor5om/6Ku+5pu4IDwgc2hvdWRha3VzaG9cIDsKK+Wwkemjn+WutiA8IHNob3VzaG9rdWthXCA7Civku67ln7fooYwgPCBrYXJpc2hpa2tvdVwgOwor5o+h5Yqb6KiIIDwgYWt1cnlva3VrZWlcIDsKK+WFrOWWtuS8gealrSA8IGtvdWVpa2lneW91XCA7Civph43mtrLliIbpm6IgPCBqdXVla2lidW5yaVwgOwor5LiN6Laz5YudIDwgZnVzb2t1Z2FjaGlcIDsKK+Wun+i3teeQhuaApyA8IGppc3NlbnJpc2VpXCA7CivluK/pi7ggPCBvYmlub2tvZ2lyaVwgOwor5b6M6YCy5Zu9IDwga291c2hpbmtva3VcIDsKK+ihjOS9j+WdkOiHpSA8IGd5b3VqdXV6YWdhXCA7CivoqIDooYzkuIDoh7QgPCBnZW5rb3VpdGNoaVwgOwor5rSX55y86JasIDwgc2VuZ2FuJyd5YWt1XCA7Civlvqnnv5LmlocgPCBmdWt1c2h1dWJ1blwgOwor5bqD5aSn54Sh6L66IDwga291ZGFpbXVoZW5cIDsKK+WEquWFiOS6i+mghSA8IHl1dXNlbmppa291XCA7CivmkLrluK/pm7voqbEgPCBrZWl0YWlkZW53YVwgOwor5q2i6KGA5bivIDwgc2hpa2V0c3V0YWlcIDsKK+S4i+Wuv+aWmSA8IGdlc2h1a3VyeW91XCA7CivmmYLku6PpjK/oqqQgPCBqaWRhaXNha3Vnb1wgOwor5Lq65bel6KGb5pifIDwgamlua291ZWlzZWlcIDsKK+mHjemHj+e0miA8IGp1dXJ5b3VreXV1XCA7Civnt5rlvaLpoIbluo8gPCBzZW5rZWlqdW5qb1wgOwor5Y+s5L2/IDwgbWVzaGl0c3VrYWlcIDsKK+WJjemAsui7uCA8IHplbnNoaW5qaWt1XCA7CivpiYTnn7Plv4MgPCB0ZXNzZWtpc2hpblwgOwor55SY6Iy26JSTIDwgYW1hY2hhZHp1cnVcIDsKK+WkluS6pOWumOijnCA8IGdhaWtvdWthbmhvXCA7CivnvbLlkI3lvI8gPCBzaG9tZWlzaGlraVwgOwor5Lq65b+D5ZywIDwgaGl0b2dva29jaGlcIDsKK+WbmuS6uuacjSA8IHNodXVqaW5mdWt1XCA7CivlvovlhIDogIUgPCByaWNoaWdpbW9ub1wgOwor5Yqb55+zIDwgY2hpa2FyYWlzaGlcIDsKK+S9j+WxheaJi+W9kyA8IGp1dWt5b3RlYXRlXCA7Civpm4HmnKjou4ogPCBnYW5naWd1cnVtYVwgOwor6YGT6Lev5qiZ56S6IDwgZG91cm9oeW91amlcIDsKK+eZvem8oCA8IHNoaXJvbmV6dW1pXCA7CivkuojlgpnlsIbmoKEgPCB5b2Jpc2hvdWtvdVwgOwor5oaC5qyd55eHIDwgeXV1dXRzdXNob3VcIDsKK+awkemWk+mjm+ihjCA8IG1pbmthbmhpa291XCA7Civlrp/pqJPlvI8gPCBqaWtrZW5zaGlraVwgOwor5rC45a2Q5L2c5qipIDwgZWlrb3Nha3VrZW5cIDsKK+ekvuS8mumBi+WLlSA8IHNoYWthaXVuZG91XCA7Civnp7vooYzoqIjnlLsgPCBpa291a2Vpa2FrdVwgOwor54uC5L+h6ICFIDwga3lvdXNoaW5zaGFcIDsKK+aOpei/kee1jOi3ryA8IHNla2tpbmtlaXJvXCA7CivkuJbnlYzntYzmuIggPCBzZWthaWtlaXphaVwgOwor5rWu5LiW6I2J5a2QIDwgdWtpeW96b3VzaGlcIDsKK+awkeaXj+eahCA8IG1pbnpva3V0ZWtpXCA7CivlrprmlbDmmK/mraMgPCB0ZWlzdXV6ZXNlaVwgOwor55m66KiA6ICFIDwgaGF0c3VnZW5zaGFcIDsKK+WKm+eYpCA8IGNoaWthcmFrb2J1XCA7CivljZjnuKbliJcgPCB0YW5qdXVyZXRzdVwgOwor5a6J5L+d5p2h57SEIDwgYW5wb2pvdXlha3VcIDsKK+iyqeWjsuWApOautSA8IGhhbmJhaW5lZGFuXCA7Civln7rlupXmp4vpgKAgPCBraXRlaWtvdXpvdVwgOwor5b+F6aCI5p2h5Lu2IDwgaGlzc3Vqb3VrZW5cIDsKK+S4ieS6uue1hCA8IHNhbicnbmluZ3VtaVwgOwor6buS5paR55eFIDwga29rdWhhbmJ5b3VcIDsKK+WMuuijgeWIpOaJgCA8IGt1c2FpYmFuc2hvXCA7CivkuojooYzmvJTnv5IgPCB5b2tvdWVuc2h1dVwgOwor6YG45oyZ6YGL5YuVIDwgc2Vua3lvdW5kb3VcIDsKK+Wbvemam+imj+aooSA8IGtva3VzYWlraWJvXCA7CivmgqrmgqrmiK8gPCB3YXJ1aXRhenVyYVwgOwor6YGL6Lui5YWN6KixIDwgdW50ZW5tZW5reW9cIDsKK+e3muW9ouirlueQhiA8IHNlbmtlaXJvbnJpXCA7Civlrp/nlKjlk4EgPCBqaXRzdXlvdWhpblwgOwor5aSn6IW/6aqoIDwgZGFpdGFpa290c3VcIDsKK+W5tOizgOmDteS+vyA8IG5lbmdheXV1YmluXCA7CivmuKnpoqjmmpbmiL8gPCBvbnB1dWRhbmJvdVwgOwor5YaF6YOo5qeL6YCgIDwgbmFpYnVrb3V6b3VcIDsKK+awtOicnOahgyA8IHN1aW1pdHN1dG91XCA7CivkuI3lrprlnovoqakgPCBmdXRlaWtlaXNoaVwgOwor5ryC5rWB6Ii5IDwgaHlvdXJ5dXVzZW5cIDsKK+m7hOmHkeW0h+aLnSA8IG91Z29uc3V1aGFpXCA7CivkuJboqbHlpbPmiL8gPCBzZXdhbnlvdWJvdVwgOwor54qs5YSS5a2m5rS+IDwga2VuanVnYWt1aGFcIDsKK+mguOWLleiEiCA8IGtlaWRvdW15YWt1XCA7CivkuIDlk4HmlpnnkIYgPCBpcHBpbnJ5b3VyaVwgOwor5Lqc56Gr6YW45aGpIDwgYXJ5dXVzYW4nJ2VuXCA7CivnlJ/lhbXms5UgPCBuYW1hYnlvdWhvdVwgOwor54OP57696ImyIDwga2FyYXN1YmFpcm9cIDsKK+W8n+W8n+WtkCA8IG90b3V0b2Rlc2hpXCA7CivliofmloflraYgPCBnZWtpYnVuZ2FrdVwgOwor5Yqg6Jas6aOvIDwga2F5YWt1bWVzaGlcIDsKK+WMl+WNiueQgyA8IGtpdGFoYW5reXV1XCA7Civpm4bkuK3nt5ogPCBzaHV1Y2h1dXNlblwgOwor5pyJ5aOw5a2Q6Z+zIDwgeXV1c2Vpc2hpaW5cIDsKK+W+l+alreWjqyA8IHRva3VneW91c2hpXCA7CivnmoblhbXliLbluqYgPCBrYWloZWlzZWlkb1wgOwor5YmN6YCy6KeSIDwgemVuc2hpbmtha3VcIDsKK+acque1jOmok+iAhSA8IG1pa2Vpa2Vuc2hhXCA7CivppIrmrpbmsaAgPCB5b3VzaG9rdWNoaVwgOwor5Zec6JmQ5oCnIDwgc2hpZ3lha3VzZWlcIDsKK+Wwiueah+eOi+aUmOWktyA8IHNvbicnbm91am91aVwgOwor5LiK5oSP5LiL6YGUIDwgam91aWthdGF0c3VcIDsKK+i7iumWk+i3nemboiA8IHNoYWthbmt5b3JpXCA7CivmsLfmsrPmmYLku6MgPCBoeW91Z2FqaWRhaVwgOwor5LiJ5Lq656ewIDwgc2FuJyduaW5zaG91XCA7Civmg4XloLHnkIboq5YgPCBqb3Vob3VyaXJvblwgOwor5b6h5aSa5b+Z5LitIDwgZ290YWJvdWNodXVcIDsKK+S4ree0muWTgSA8IGNodXVreXV1aGluXCA7CivmvILmtYHogIUgPCBoeW91cnl1dXNoYVwgOwor5oSb5p+T5piO546LIDwgYWl6ZW5teW91b3VcIDsKK+iqmOaDkeeJqSA8IHl1dXdha3Vtb25vXCA7CivpoK3ok4vpqqggPCB0b3VnYWlrb3RzdVwgOwor55m65piO5ZOBIDwgaGF0c3VtZWloaW5cIDsKK+W5s+mdouS6pOW3riA8IGhlaW1lbmtvdXNhXCA7CivlpLHmoLzogIUgPCBzaGlra2FrdXNoYVwgOwor5oiQ57i+6KGoIDwgc2Vpc2VraWh5b3VcIDsKK+e1jOmok+S4u+e+qSA8IGtlaWtlbnNodWdpXCA7CivlvIHorbflo6vkvJogPCBiZW5nb3NoaWthaVwgOwor5rOo5paH5YWIIDwgY2h1dW1vbnNha2lcIDsKK+e0lOaDheWPr+aGkCA8IGp1bmpvdWthcmVuXCA7CivovInosqjlkIPmsLQgPCBzYWlrYWtpc3N1aVwgOwor5pei5rG65ZuaIDwga2lrZXRzdXNodXVcIDsKK+WNiua/gemfs+espiA8IGhhbmRha3VvbmZ1XCA7Civplqjnp4DnlLvlrrYgPCBrZWlzaHV1Z2FrYVwgOwor5pGC5YuV6KuWIDwgc2V0c3Vkb3Vyb25cIDsKK+S8j+a1geawtCA8IGZ1a3VyeXV1c3VpXCA7Civni6zoo4HnmoQgPCBkb2t1c2FpdGVraVwgOwor6auY6Kq/5a2QIDwgdGFrYWNob3VzaGlcIDsKK+eri+iEmuWcsCA8IHJpa2t5YWt1Y2hpXCA7CivkuInljYropo/nrqEgPCBzYW5oYW5raWthblwgOwor5bCB5bu65pmC5LujIDwgaG91a2VuamlkYWlcIDsKK+i2iuWGrOizh+mHkSA8IGV0dG91c2hpa2luXCA7Civlho3mp4vnr4kgPCBzYWlrb3VjaGlrdVwgOwor5omA5biv6YGT5YW3IDwgc2hvdGFpZG91Z3VcIDsKK+WCsuWyuOeEoeekvCA8IGdvdWdhbmJ1cmVpXCA7CivnpL7kvJrkv53pmbogPCBzaGFrYWlob2tlblwgOwor5quT5aSq6byTIDwgeWFndXJhZGFpa29cIDsKK+atouihgOWJpCA8IHNoaWtldHN1emFpXCA7CivovIPlhKrkvY3oq5YgPCBrYWt1eXV1aXJvblwgOwor5LiW6KuW6Kq/5p+7IDwgeW9yb25jaG91c2FcIDsKK+WGrOacn+S8keaahyA8IHRvdWtpa3l1dWthXCA7CivkuKHmlrnlhbEgPCByeW91aG91dG9tb1wgOwor5LiK6YOo5qeL6YCgIDwgam91YnVrb3V6b3VcIDsKK+advuiRieadliA8IG1hdHN1YmFkenVlXCA7CivosaHlvaLmloflrZcgPCBzaG91a2VpbW9qaVwgOwor5Yqb5rC0IDwgY2hpa2FyYW1penVcIDsKK+ayluepjee1sSA8IGNodXVzZWtpdG91XCA7Civku5XkuovnrrEgPCBzaGlnb3RvYmFrb1wgOwor5rC36YaL6YW4IDwgaHlvdXNha3VzYW5cIDsKK+i+suacrOS4u+e+qSA8IG5vdWhvbnNodWdpXCA7Civmm7jnsY3llYYgPCBzaG9zZWtpc2hvdVwgOwor5LiA5YiH6KGG55SfIDwgaXNzYWlzaHVqb3VcIDsKK+aXp+aFi+S+neeEtiA8IGt5dXV0YWlpemVuXCA7CivmlbTnkIbnlarlj7cgPCBzZWlyaWJhbmdvdVwgOwor5Luu57a05pysIDwga2FyaXRvamlob25cIDsKK+eZuumbu+aJgCA8IGhhdHN1ZGVuc2hvXCA7CivlvZPluqfos4fnlKMgPCB0b3V6YXNoaXNhblwgOwor5a6Y6IO955qEIDwga2FuJydub3V0ZWtpXCA7Civmrovlk4HmlbTnkIYgPCB6YW5waW5zZWlyaVwgOwor5pyr5qKi55qEIDwgbWFzc2hvdXRla2lcIDsKK+S4remWk+WbvSA8IGNodXVrYW5rb2t1XCA7CivlroflrpnpgJ/luqYgPCB1Y2h1dXNva3Vkb1wgOwor5oCd57Si55qEIDwgc2hpc2FrdXRla2lcIDsKK+WNl+WPoyA8IG1pbmFtaWd1Y2hpXCA7CivliqDmsLTliIbop6MgPCBrYXN1aWJ1bmthaVwgOwor5Ye66Lqr5qChIDwgc2h1c3NoaW5rb3VcIDsKK+eBsOmdkuiJsiA8IGhhaXNlaXNob2t1XCA7CivoiKrmtbfooZMgPCBrb3VrYWlqdXRzdVwgOwor5bCP5p2x5LqsIDwgc2hvdXRvdWt5b3VcIDsKK+Wuo+S8neS+oeWApCA8IHNlbmRlbmthY2hpXCA7CivlubTlraPlpYnlhawgPCBuZW5raWJvdWtvdVwgOwor5Y2D5Lq65YqbIDwgc2VuJyduaW5yaWtpXCA7Civkurrlt6Xoip0gPCBqaW5rb3VzaGliYVwgOwor6Lu96YeP57SaIDwga2VpcnlvdWt5dXVcIDsKK+WKm+alrSA8IGNoaWthcmF3YXphXCA7CivosqjluaPntYzmuIggPCBrYWhlaWtlaXphaVwgOwor54Sh5pyf5oey5b25IDwgbXVraWNob3Vla2lcIDsKK+aLmOadn+WcpyA8IGtvdXNva3VhdHN1XCA7CivmiKbpl5jlipsgPCBzZW50b3VyeW9rdVwgOwor5biC5aC05Yy65YiGIDwgc2hpam91a3VidW5cIDsKK+eQg+mdoumPoSA8IGt5dXVtZW5reW91XCA7CivliJ3mnJ/oqK3lrpogPCBzaG9raXNldHRlaVwgOwor5Lq66YCg57mK57atIDwgamluem91c2VuJydpXCA7Civmma7pgJrpoJDph5EgPCBmdXRzdXV5b2tpblwgOwor5L2O5Yip6LOH6YeRIDwgdGVpcmlzaGlraW5cIDsKK+S6uuW9ouWKhyA8IG5pbmd5b3VnZWtpXCA7CivnhKHpqqjogIUgPCBidWtvdHN1bW9ub1wgOwor55yf54+g57Sw5belIDwgc2hpbmp1emFpa3VcIDsKK+S4u+efpeS4u+e+qSA8IHNodWNoaXNodWdpXCA7CivpgIbnnasgPCBzYWthbWF0c3VnZVwgOwor55S65aWJ6KGMIDwgbWFjaGlidWd5b3VcIDsKK+epuuiovOaWhyA8IGthcmFzaG91bW9uXCA7CivkuozpoIXkv4LmlbAgPCBuaWtvdWtlaXN1dVwgOwor57Sg5oCn5qeL6YCgIDwgc29zZWlrb3V6b3VcIDsKK+aEm+WbveS4u+e+qSA8IGFpa29rdXNodWdpXCA7CivmiKbpl5jmlK/mj7QgPCBzZW50b3VzaGllblwgOwor5Lq65ZCN6L6e5pu4IDwgamlubWVpamlzaG9cIDsKK+WJjei8qumnhuWLlSA8IHplbnJpbmt1ZG91XCA7CivkvqHmoLzmk43kvZwgPCBrYWtha3Vzb3VzYVwgOwor5pS+54mp57eaIDwgaG91YnV0c3VzZW5cIDsKK+W9ouiAjOS4i+WtpiA8IGtlaWppa2FnYWt1XCA7CivkuIDmnJ/kuIDkvJogPCBpY2hpZ29pY2hpZVwgOwor6Kq/5a2Q6ICFIDwgY2hvdXNoaW1vbm9cIDsKK+ePvuWun+aEnyA8IGdlbmppdHN1a2FuXCA7CivpsLnnr4AgPCBrYXRzdW9idXNoaVwgOwor56mN5YiG5a2mIDwgc2VraWJ1bmdha3VcIDsKK+Wcn+acqOW3peS6iyA8IGRvYm9rdWtvdWppXCA7CivlpbPlrZDpq5jnlJ8gPCBqb3NoaWtvdXNlaVwgOwor54++5a6f5oCnIDwgZ2Vuaml0c3VzZWlcIDsKK+mrmOmbu+WcpyA8IGtvdWRlbicnYXRzdVwgOwor5a2m5ZWP55qEIDwgZ2FrdW1vbnRla2lcIDsKK+eOi+mBk+alveWcnyA8IG91ZG91cmFrdWRvXCA7CivmgqrmiKboi6bpl5ggPCBha3VzZW5rdXRvdVwgOwor56We57WM5aSW56eRIDwgc2hpbmtlaWdla2FcIDsKK+WtpueptueahCA8IGdha2t5dXV0ZWtpXCA7CivpnZ7plovnpLrlkIjmhI8gPCBoaWthaWppZ291aVwgOwor5Y+O56mr56WtIDwgc2h1dWtha3VzYWlcIDsKK+eJqeeQhuWtpiA8IGJ1dHN1cmlnYWt1XCA7CivkuI3nnKDkuI3kvJEgPCBmdW1pbmZ1a3l1dVwgOwor5Z6C55u057eaIDwgc3VpY2hva3VzZW5cIDsKK+WQjeiqieaVmeaOiCA8IG1laXlva3lvdWp1XCA7Civlm7Pmm7jppKjlk6EgPCB0b3Nob2thbicnaW5cIDsKK+attOWPsuWtpiA8IHJla2lzaGlnYWt1XCA7CivmvaTmu5HliaQgPCBqdW5rYXRzdXphaVwgOwor57WE57mU5a2mIDwgc29zaGlraWdha3VcIDsKK+mrmOatjOaUvuWQnyA8IGtvdWthaG91Z2luXCA7Civnmbrpm7vlrZAgPCBoYXRzdWRlbnNoaVwgOwor5LiJ5bCK5LuPIDwgc2Fuem9uYnV0c3VcIDsKK+W8leWPluS6uiA8IGhpa2l0b3JpbmluXCA7Civmp4vmiJDljZjkvY0gPCBrb3VzZWl0YW4nJ2lcIDsKK+WkluS6uuiomOiAhSA8IGdhaWppbmtpc2hhXCA7CivmvILms4rogIUgPCBoeW91aGFrdXNoYVwgOwor5L6L5aSW5Yem55CGIDwgcmVpZ2Fpc2hvcmlcIDsKK+Wkq+WppuiMtueilyA8IG1lb3RvZGphd2FuXCA7CivnnJ/nlLDomasgPCBzYW5hZGFtdXNoaVwgOwor6ZeH5ZWG5Lq6IDwgeWFtaXNob3VuaW5cIDsKK+WFpea8geaWmSA8IG55dXVneW9yeW91XCA7CivlhajpnaLorJvlkowgPCB6ZW5tZW5rb3V3YVwgOwor5LiD5a6d54S8IDwgc2hpcHBvdXlha2lcIDsKK+mLvOmJhOadvyA8IGtvdXRldHN1YmFuXCA7CivlhKroia/moKogPCB5dXVyeW91a2FidVwgOwor5pys5qC855qEIDwgaG9ua2FrdXRla2lcIDsKK+W+qeiukOaIpiA8IGZ1a3VzaHV1c2VuXCA7CivmmrTlipvlm6MgPCBib3VyeW9rdWRhblwgOwor5Yid6Ki65paZIDwgc2hvc2hpbnJ5b3VcIDsKK+e+qeWLmeaVmeiCsiA8IGdpbXVreW91aWt1XCA7Civlj6PpgZTogIUgPCBrdWNoaWRhc3NoYVwgOwor6ICQ54ax5oCnIDwgdGFpbmV0c3VzZWlcIDsKK+Wil+ihgOWJpCA8IHpvdWtldHN1emFpXCA7CivmgrLoprPoq5bogIUgPCBoaWthbnJvbnNoYVwgOwor5YCL5Lq65oOF5aCxIDwga29qaW5qb3Vob3VcIDsKK+WMl+WMl+adsSA8IGhva3Vob2t1dG91XCA7CivnmbroqIDmqKkgPCBoYXRzdWdlbmtlblwgOwor55S65q6155Wd5q2pIDwgY2hvdXRhbnNlYnVcIDsKK+aApeaIkOmVtyA8IGt5dXVzZWljaG91XCA7Civku6PnkIblpKfkvb8gPCBkYWlyaXRhaXNoaVwgOwor5qeL6YCg5Li7576pIDwga291em91c2h1Z2lcIDsKK+WHuuizh+mhjSA8IHNodXNzaGlnYWt1XCA7CivlhoXliIbms4wgPCBuYWlidW5waXRzdVwgOwor5YWc6JmrIDwga2FidXRvbXVzaGlcIDsKK+WGhee3mumbu+ipsSA8IG5haXNlbmRlbndhXCA7CivlhaznpLrkvqHmoLwgPCBrb3VqaWtha2FrdVwgOwor5ray5L2T6YW457SgIDwgZWtpdGFpc2Fuc29cIDsKK+Wbm+aXrOevgCA8IHNoaWp1bnNldHN1XCA7CivmsoPluqbkuIHlub4gPCB5b3Vkb2NoaW5raVwgOwor5Lmd5a6Y6bOlIDwga3l1dWthbmNob3VcIDsKK+WIkeS6i+iotOionyA8IGtlaWppc29zaG91XCA7CivogIHkurrlipsgPCByb3VqaW5yeW9rdVwgOwor56i85YON5Lq65Y+jIDwga2Fkb3VqaW5rb3VcIDsKK+i7veapn+mWoumKgyA8IGtlaWtpa2FuanV1XCA7CivmqZ/lr4bkv53orbcgPCBraW1pdHN1aG9nb1wgOwor5bu656+J5aOrIDwga2VuY2hpa3VzaGlcIDsKK+WkqualteaLsyA8IHRhaWt5b2t1a2VuXCA7CivnlJ/nlarntYQgPCBuYW1hYmFuZ3VtaVwgOwor6aSK5q6W5aC0IDwgeW91c2hva3Vqb3VcIDsKK+S6iOWCmeS6pOa4iSA8IHlvYmlrb3VzaG91XCA7CivomZrohLHmhJ8gPCBreW9kYXRzdWthblwgOwor6LGh54mZ6LOqIDwgem91Z2VzaGl0c3VcIDsKK+mahum8u+ihkyA8IHJ5dXViaWp1dHN1XCA7CivooajpnaLnqY0gPCBoeW91bWVuc2VraVwgOwor6YCP6KaW5Zuz5rOVIDwgdG91c2hpenVob3VcIDsKK+e3tOe/kuippuWQiCA8IHJlbnNodXVqaWFpXCA7Civliqrlipvos54gPCBkb3J5b2t1c2hvdVwgOwor5Y2B5Lq65LimIDwganV1bmluJyduYW1pXCA7CivolqzpkbXpoK0gPCB5YWthbicnYXRhbWFcIDsKK+WPr+imluWFiee3miA8IGthc2hpa291c2VuXCA7CivnrYboqJjoqabpqJMgPCBoaWtraXNoaWtlblwgOwor5YWs5a6a55u45aC0IDwga291dGVpc291YmFcIDsKK+S+oeagvOimj+WItiA8IGtha2FrdWtpc2VpXCA7CivliqDph43lubPlnYcgPCBrYWp1dWhlaWtpblwgOwor5q2m6KOF6K2m5a6YIDwgYnVzb3VrZWlrYW5cIDsKK+WVhuWjsuetiyA8IHNob3ViYWlzdWppXCA7CivmsLTlrZDkvpvppIogPCBtaXp1Z29rdXlvdVwgOwor5riv5rm+5bGAIDwga291d2Fua3lva3VcIDsKK+WNg+WkieS4h+WMliA8IHNlbnBlbmJhbmthXCA7CivmsLTllYblo7IgPCBtaXp1c2hvdWJhaVwgOwor6YmE6YGT5L6/IDwgdGV0c3Vkb3ViaW5cIDsKK+afu+WumuS+oeagvCA8IHNhdGVpa2FrYWt1XCA7CivmsJHml4/lraYgPCBtaW56b2t1Z2FrdVwgOwor5q205Y+y5YqHIDwgcmVraXNoaWdla2lcIDsKK+a6neW9oumLvCA8IG1pem9nYXRha291XCA7CivmmI7mmbDlpKIgPCBtZWlzZWtpeXVtZVwgOwor5b2i5L2TIDwgbmFyaWthdGFjaGlcIDsKK+S4i+WxpOekvuS8miA8IGthc291c2hha2FpXCA7Civmlq3ntprnmoQgPCBkYW56b2t1dGVraVwgOwor5byP6YOo55yBIDwgc2hpa2lidXNob3VcIDsKK+altemBk+iAhSA8IGdva3Vkb3Vtb25vXCA7CivplovmoKHlvI8gPCBrYWlrb3VzaGlraVwgOwor5rCR57SE6KuWIDwgbWluJyd5YWt1cm9uXCA7CivpmLLlvqHnjocgPCBib3VneW9yaXRzdVwgOwor6KGo6Z2i55qEIDwgaHlvdW1lbnRla2lcIDsKK+ioiOaZguS/giA8IGtlaWppZ2FrYXJpXCA7Civlvoznmbrlk4EgPCBrb3VoYXRzdWhpblwgOwor6Ieq54S25Li7576pIDwgc2hpemVuc2h1Z2lcIDsKK+iWqeaRqeeEvCA8IHNhdHN1bWF5YWtpXCA7Civluormn7EgPCB0b2tvYmFzaGlyYVwgOwor6IiI5ZGz5pys5L2NIDwga3lvdW1paG9uJydpXCA7Civlh7rouqvlnLAgPCBzaHVzc2hpbmNoaVwgOwor54Sh5L2T6LOH55SjIDwgbXV0YWlzaGlzYW5cIDsKK+itt+i6q+ihkyA8IGdvc2hpbmp1dHN1XCA7CivntYzmuIjlsIHpjpYgPCBrZWl6YWlmdXVzYVwgOwor56u25LqJ55u45omLIDwga3lvdXNvdWFpdGVcIDsKK+WHuuayoSA8IHNodXRzdWJvdHN1XCA7CivkuI7lpKroqbEgPCB5b3RhYmFuYXNoaVwgOwor5bem56uvIDwgaGlkYXJpaGFzaGlcIDsKK+WGjeWFpeWtpiA8IHNhaW55dXVnYWt1XCA7CivkupTovKrlpKfkvJogPCBnb3JpbnRhaWthaVwgOwor5Y2U57SE5pu4IDwga3lvdXlha3VzaG9cIDsKK+aXpeacrOS4ieaZryA8IG5paG9uc2Fua2VpXCA7CivkuInnvr3ng48gPCBzYW5iYWdhcmFzdVwgOwor6Kiq5ZWP5a6iIDwgaG91bW9ua3lha3VcIDsKK+ayueaAp+Whl+aWmSA8IHl1c2VpdG9yeW91XCA7CivmsrvpqJPolqwgPCBjaGlrZW4nJ3lha3VcIDsKK+aAp+WWhOiqrCA8IHNlaXplbnNldHN1XCA7Civku5Xkuovmn4QgPCBzaGlnb3RvZ2FyYVwgOwor5aSn5qC56LazIDwgZGFpa29uJydhc2hpXCA7CivmlLnoqILlopfoo5wgPCBrYWl0ZWl6b3Vob1wgOwor5LiA6Iis5qaC5b+1IDwgaXBwYW5nYWluZW5cIDsKK+WFieeArOm+jSA8IG1pdHN1c2VyeXV1XCA7Civni7zol4nogIUgPCByb3V6ZWtpbW9ub1wgOwor5b+D5ouN5pWwIDwgc2hpbnBha3VzdXVcIDsKK+Wwj+S4gOaZgumWkyA8IGtvaWNoaWppa2FuXCA7CivkuInohJrmpIXlrZAgPCBzYW5reWFrdWlzdVwgOwor5YuV54mp6KqMIDwgZG91YnV0c3VzaGlcIDsKK+i/lOWNtOWApCA8IGhlbmt5YWt1Y2hpXCA7Civnmq7ohprmhJ/oppogPCBoaWZ1a2Fua2FrdVwgOwor54Sh6aeE6KmxIDwgbXVkYWJhbmFzaGlcIDsKK+WIhuWtkOW8jyA8IGJ1bnNoaXNoaWtpXCA7CivpmY3ou4rlj6MgPCBrb3VzaGFndWNoaVwgOwor5qSc5Ye65ZmoIDwga2Vuc2h1dHN1a2lcIDsKK+aoqeWIqeihjOS9vyA8IGtlbnJpa291c2hpXCA7CivokL3okYnmnb4gPCByYWt1eW91c2hvdVwgOwor5qW15YmN57eaIDwga3lva3V6ZW5zZW5cIDsKK+i2hei2iueCuSA8IGNob3VldHN1dGVuXCA7Civpu5LnjKnjgIUgPCBrdXJvc2hvdWpvdVwgOwor5ryi5a2X5aSJ5o+bIDwga2FuamloZW5rYW5cIDsKK+WbveaFtuevgCA8IGtva2tlaXNldHN1XCA7CivnhKHkvZPosqHnlKMgPCBtdXRhaXphaXNhblwgOwor5be055OmIDwgdG9tb2VnYXdhcmFcIDsKK+WkqeeUo+eJqSA8IHRlbnNhbmJ1dHN1XCA7CivntLPlo6vpjLIgPCBzaGluc2hpcm9rdVwgOwor5YaN5YWl5Zu9IDwgc2Fpbnl1dWtva3VcIDsKK+WFqOS9k+S8muitsCA8IHplbnRhaWthaWdpXCA7Civkuozph43mirXlvZMgPCBuaWp1dXRlaXRvdVwgOwor5YiH5pelIDwgc2hpbWVraXJpYmlcIDsKK+apn+aisOaWh+aYjiA8IGtpa2FpYnVubWVpXCA7CivnsKHmvZTmgKcgPCBrYW5rZXRzdXNlaVwgOwor5aSp5rSl5LmZ5aWzIDwgYW1hdHN1b3RvbWVcIDsKK+WIh+aWremdoiA8IHNldHN1ZGFubWVuXCA7CivlvJXovrznt5ogPCBoaWtpa29taXNlblwgOwor5Yip5a6z6Zai5L+CIDwgcmlnYWlrYW5rZWlcIDsKK+Wkmuinkue1jOWWtiA8IHRha2FrdWtlaWVpXCA7CivlpKvlqabliKXlp5MgPCBmdXVmdWJlc3NlaVwgOwor57KX5b+96ICFIDwgc29rb3RzdW1vbm9cIDsKK+mWi+S8muW8jyA8IGthaWthaXNoaWtpXCA7Civml6XmnKzoqp7oqLMgPCBuaWhvbmdveWFrdVwgOwor5Lqk5o+b5qmf6IO9IDwga291a2Fua2lub3VcIDsKK+eUo+WNteWgtOaJgCA8IHNhbnJhbmJhc2hvXCA7CivmhJ/lgrfnmoQgPCBrYW5zaG91dGVraVwgOwor5biC5pyJ54mpIDwgc2hpeXV1YnV0c3VcIDsKK+i1sOihjOi3nemboiA8IHNvdWtvdWt5b3JpXCA7CivnhKHlsL3ntYTlkIggPCBtdWppbmt1bWlhaVwgOwor5YaN55Sf5Yip55SoIDwgc2Fpc2Vpcml5b3VcIDsKK+iBluiBt+iAhSA8IHNlaXNob2t1c2hhXCA7CivoiKrnqbrmr43oiaYgPCBrb3VrdXVib2thblwgOwor5Lit6KGj5ZqiIDwgbmFrYWdha3VzaGlcIDsKK+eLrOeri+iqniA8IGRva3VyaXRzdWdvXCA7CivkurrlkI3ovp7lhbggPCBqaW5tZWlqaXRlblwgOwor5pio6Z2e5LuK5pivIDwgc2FrdWhpa29uemVcIDsKK+iCsuWFkOWupCA8IGlrdWppc2hpdHN1XCA7CivmlrDlj6TlhbjmtL4gPCBzaGlua290ZW5oYVwgOwor57mB5q6W5ZywIDwgaGFuc2hva3VjaGlcIDsKK+S4gOS6uuensCA8IGljaGluaW5zaG91XCA7CivplbfltI7nnIwgPCBuYWdhc2FraWtlblwgOwor57WM5Za26LOH5rqQIDwga2VpZWlzaGlnZW5cIDsKK+W5vOW/gyA8IG9zYW5hZ29rb3JvXCA7CivooqvlrrPlpoTmg7MgPCBoaWdhaW1vdXNvdVwgOwor6Zu75Yqb6KiIIDwgZGVucnlva3VrZWlcIDsKK+ijveawt+eavyA8IHNlaWh5b3V6YXJhXCA7CivntLDoj4zlhbXlmaggPCBzYWlraW5oZWlraVwgOwor6aO95ZKM5rq25rayIDwgaG91d2F5b3Vla2lcIDsKK+S4gOiIrOS8muioiCA8IGlwcGFua2Fpa2VpXCA7Civmupblgpnos4fph5EgPCBqdW5iaXNoaWtpblwgOwor5Li756iO5bGAIDwgc2h1emVpa3lva3VcIDsKK+aUv+WFmuaUv+ayuyA8IHNlaXRvdXNlaWppXCA7Civmr43lrZDlubTph5EgPCBib3NoaW5lbmtpblwgOwor5o6l57aa6KqeIDwgc2V0c3V6b2t1Z29cIDsKK+eJuembhuWPtyA8IHRva3VzaHV1Z291XCA7Civpu5LopJDoibIgPCBrb2trYXNzaG9rdVwgOwor576O5a655pW05b2iIDwgYml5b3VzZWlrZWlcIDsKK+S4reWbveS6uiA8IGNodXVnb2t1amluXCA7CivoirHnrbUgPCBoYW5hbXVzaGlyb1wgOwor5Yid5pyf5oqV6LOHIDwgc2hva2l0b3VzaGlcIDsKK+acgOefrei3nemboiA8IHNhaXRhbmt5b3JpXCA7CivlkajovrrmqZ/lmaggPCBzaHV1aGVua2lraVwgOwor5Yi26ZmQ5pmC6ZaTIDwgc2VpZ2VuamlrYW5cIDsKK+WLpOWKtOaEj+assiA8IGtpbnJvdWl5b2t1XCA7CivlvpPlsZ7lm70gPCBqdXV6b2t1a29rdVwgOwor5Y+j6L+U562UIDwga3VjaGloZW50b3VcIDsKK+WAieW6q+S8muekviA8IHNvdWtvZ2Fpc2hhXCA7CivnlLfpsKUgPCBvdG9rb3lhbW9tZVwgOwor5pyq6ZaL56S+5LyaIDwgbWlrYWlzaGFrYWlcIDsKK+a4m+ihsOeOhyA8IGdlbnN1aXJpdHN1XCA7CivlsI7pm7vnjocgPCBkb3VkZW5yaXRzdVwgOwor5LiA5LqG57ChIDwgaWNoaXJ5b3VrYW5cIDsKK+mBjuWkp+ipleS+oSA8IGthZGFpaHlvdWthXCA7CivoirHnpa0gPCBoYW5hbWF0c3VyaVwgOwor5YaN6Ly45Ye6IDwgc2FpeXVzaHV0c3VcIDsKK+mdkumKheiJsiA8IHNlaWRvdXNob2t1XCA7CivnoLTlu4nmgaXnvaogPCBoYXJlbmNoaXphaVwgOwor6ZqK5ZWG5a6/IDwgdGFpc2hvdXlhZG9cIDsKK+aZgumZkOijhee9riA8IGppZ2Vuc291Y2hpXCA7Civmma/msJflpInli5UgPCBrZWlraWhlbmRvdVwgOwor5byP5qyh56ysIDwgc2hpa2lzaGlkYWlcIDsKK+S4gOasoeiomOaGtiA8IGljaGlqaWtpb2t1XCA7CivnlJ/nlKPniakgPCBzZWlzYW5idXRzdVwgOwor6KGd5YuV6KGM54K6IDwgc2hvdWRvdWtvdWlcIDsKK+ioseWuueevhOWbsiA8IGt5b3lvdWhhbicnaVwgOwor5bm76Kaa55eHIDwgZ2Vua2FrdXNob3VcIDsKK+eUn+eUo+euoeeQhiA8IHNlaXNhbmthbnJpXCA7CivmipXmiYvlipsgPCB0b3VzaHVyeW9rdVwgOwor6ZaJ5Lya5byPIDwgaGVpa2Fpc2hpa2lcIDsKK+ayluepjeWxpCA8IGNodXVzZWtpc291XCA7CivljLvnmYLkvJ3pgZMgPCBpcnlvdWRlbmRvdVwgOwor5YKs55yg6KGTIDwgc2FpbWluanV0c3VcIDsKK+idmeidoOWCmCA8IGtvdW1vcmlnYXNhXCA7CivnqoHosqvlt6XkuosgPCB0b2trYW5rb3VqaVwgOwor5ZCR5pel5oCnIDwga291bmljaGlzZWlcIDsKK+WIneWnvyA8IGhhdHN1c3VnYXRhXCA7CivlkLjlj5bntJkgPCBzdWl0b3JpZ2FtaVwgOwor6YG46ICD5Z+65rqWIDwgc2Vua291a2lqdW5cIDsKK+mrmOipsSA8IHRha2FiYW5hc2hpXCA7Civpq5jlnKfnmoQgPCBrb3VhdHN1dGVraVwgOwor5pyJ5Yqb6ICFIDwgeXV1cnlva3VzaGFcIDsKK+WIpeWVj+mhjCA8IGJldHN1bW9uZGFpXCA7Civku6PmlbDlvI8gPCBkYWlzdXVzaGlraVwgOwor5YWl5riv5paZIDwgbnl1dWtvdXJ5b3VcIDsKK+iGnemgrSA8IGhpemFnYXNoaXJhXCA7CivnhKHlrr/ogIUgPCBtdXNodWt1bW9ub1wgOwor6YO95biC6YqA6KGMIDwgdG9zaGlnaW5rb3VcIDsKK+WOn+WtkOWKmyA8IGdlbnNoaXJ5b2t1XCA7CivmiJDmloflvosgPCBzZWlidW5yaXRzdVwgOwor55S35LiA5Yy5IDwgb3Rva29pcHBpa2lcIDsKK+Whnuagk+eXhyA8IHNva3VzZW5zaG91XCA7CivllYblo7Lmn4QgPCBzaG91YmFpZ2FyYVwgOwor6IW56Laz6aGeIDwgZnVrdXNva3VydWlcIDsKK+adseWNsOW6piA8IGhpZ2FzaGlpbmRvXCA7Civos4fmnKzlipsgPCBzaGlob25yeW9rdVwgOwor5be75p+xIDwgbWFraWJhc2hpcmFcIDsKK+elh+WckuelrSA8IGdpb25tYXRzdXJpXCA7CivkuIrkuqzkuK0gPCBqb3VreW91Y2h1dVwgOwor5YKs55yg6JasIDwgc2FpbWluJyd5YWt1XCA7CivlrqPkvJ3mmKDnlLsgPCBzZW5kZW4nJ2VpZ2FcIDsKK+aFiOWWhOS6i+alrSA8IGppemVuamlneW91XCA7Civnj77osaHlraYgPCBnZW5zaG91Z2FrdVwgOwor56eL5rSl5bO2IDwgYWtpdHN1c2hpbWFcIDsKK+e+iuWwj+WxiyA8IGhpdHN1amlnb3lhXCA7Civoo4Xpo77lk4EgPCBzb3VzaG9rdWhpblwgOwor5Y2D5pel5omLIDwgc2VuJyduaWNoaXRlXCA7CivliqDpgJ/luqboqIggPCBrYXNva3Vkb2tlaVwgOwor5YKy5oWi5LiN6YGcIDwgZ291bWFuZnVzb25cIDsKK+WIkeWLmeS9nOalrSA8IGtlaW11c2FneW91XCA7CivlnLDnkIPopo/mqKEgPCBjaGlreXV1a2lib1wgOwor5qSN5rCR5ZywIDwgc2hva3VtaW5jaGlcIDsKK+mAlOS4reioiOaZgiA8IHRvY2h1dWtlaWppXCA7CivlpJbliIbms4wgPCBnYWlidW5waXRzdVwgOwor6Zqj6L+R5omAIDwgdG9uYXJpa2luam9cIDsKK+WvvumgguinkiA8IHRhaWNob3VrYWt1XCA7Civpq5jlsITnibnnp5EgPCBrb3VzaGF0b2trYVwgOwor6IKp55Sy6aqoIDwga2Vua291a290c3VcIDsKK+S4iemdouWFreiHgiA8IHNhbm1lbnJvcHBpXCA7Civlvq7liIbmlq3pnaIgPCBiaWJ1bmRhbm1lblwgOwor5YiG5aip5L2c55SoIDwgYnVuYmVuc2F5b3VcIDsKK+iFsOW8geW9kyA8IGtvc2hpYmVudG91XCA7Civlj6Plt6fogIUgPCBrdWNoaWdvdXNoYVwgOwor5L+d5YGl5L2T6IKyIDwgaG9rZW50YWlpa3VcIDsKK+aatOi1sOmBi+i7oiA8IGJvdXNvdXVudGVuXCA7CivlupXlipsgPCBzb2tvZGppa2FyYVwgOwor5LiN5LiW5Ye6IDwgZnVzZWlzaHV0c3VcIDsKK+irruWVj+apn+mWoiA8IHNoaW1vbmtpa2FuXCA7CivlhYjml6Xku5ggPCBzYWtpaGlkenVrZVwgOwor6YCP6KaW5YqbIDwgdG91c2hpcnlva3VcIDsKK+WJteioreiAhSA8IHNvdXNldHN1c2hhXCA7CivnlLDoiI7oip3lsYUgPCBpbmFrYXNoaWJhaVwgOwor6YeR6a2a6YmiIDwga2luZ3lvYmFjaGlcIDsKK+eZjOmBuuS8neWtkCA8IGdhbicnaWRlbnNoaVwgOwor55m+6ay85aSc6KGMIDwgaHlha2tpeWFrb3VcIDsKK+eEoeatu+a6gOWhgSA8IG11c2hpbWFucnVpXCA7CivkuoznlarmirXlvZMgPCBuaWJhbnRlaXRvdVwgOwor6KGS5a2m55qEIDwgZ2VuZ2FrdXRla2lcIDsKK+e3j+WLmemDqOmVtyA8IHNvdW11YnVjaG91XCA7Civph5Hnn7PlraYgPCBraW5zZWtpZ2FrdVwgOwor6YeO6I+c55WRIDwgeWFzYWliYXRha2VcIDsKK+iHqueUseiyv+aYkyA8IGppeXV1Ym91ZWtpXCA7CivlubPlkozmnaHpoIUgPCBoZWl3YWpvdWtvdVwgOwor55u05oSf55qEIDwgY2hva2thbnRla2lcIDsKK+WLleeJqeebuCA8IGRvdWJ1dHN1c291XCA7CivmsJfliIbou6Lmj5sgPCBraWJ1bnRlbmthblwgOwor6LOD5LuV5LqLIDwgY2hpbnNoaWdvdG9cIDsKK+eJueioseS4uyA8IHRva2t5b251c2hpXCA7CivlhJLmlZnkuLvnvqkgPCBqdWt5b3VzaHVnaVwgOwor5aWJ57SN54mpIDwgaG91bm91YnV0c3VcIDsKK+Wls+atjOiInuS8jiA8IG9uJyduYWthYnVraVwgOwor5L+d6YeI5LitIDwgaG9zaGFrdWNodXVcIDsKK+mjm+ihjOapn+mbsiA8IGhpa291a2lndW1vXCA7CivpnZLol43oibIgPCBzZWlyYW5zaG9rdVwgOwor6ISF6L+r6ICFIDwga3lvdWhha3VzaGFcIDsKK+WLleeJqeeVjCA8IGRvdWJ1dHN1a2FpXCA7Civot6/pnaLpm7vou4ogPCByb21lbmRlbnNoYVwgOwor6YCa6KGM5LiKIDwgdHN1dWtvdWRvbWVcIDsKK+W8t+WlquiAhSA8IGdvdWRhdHN1c2hhXCA7CivohIXov6vnvaogPCBreW91aGFrdXphaVwgOwor5Y2Y54us6KGM54K6IDwgdGFuZG9rdWtvdWlcIDsKK+Wbo+e1kOaoqSA8IGRhbmtldHN1a2VuXCA7CivoqqDlv4PoqqDmhI8gPCBzZWlzaGluc2VpaVwgOwor57SE5Y2K5bm0IDwgeWFrdWhhbicnbmVuXCA7Civml6XmnKzmlpnnkIYgPCBuaWhvbnJ5b3VyaVwgOwor5oqV56Wo566xIDwgdG91aHlvdWJha29cIDsKK+e0oOS6uuiKuCA8IHNoaXJvdXRvZ2VpXCA7CivnqY3mpbXmgKcgPCBzZWtreW9rdXNlaVwgOwor5qW15bqn5qiZIDwga3lva3V6YWh5b3VcIDsKK+Wvneato+aciCA8IG5lc2hvdWdhdHN1XCA7CivmtZrmuKvmqZ8gPCBzaHVuc2V0c3VraVwgOwor57+86Z2i56mNIDwgeW9rdW1lbnNla2lcIDsKK+eVs+ihqCA8IHRhdGFtaW9tb3RlXCA7Civnt4/nm67pjLIgPCBzb3Vtb2t1cm9rdVwgOwor5qC45Y+N5b+cIDwga2FrdWhhbicnbm91XCA7CivliLbphbjolqwgPCBzZWlzYW4nJ3lha3VcIDsKK+i2heS6uueahCA8IGNob3VqaW50ZWtpXCA7CivnrKzkuIDmtYEgPCBkYWlpY2hpcnl1dVwgOwor5pWF5LqL5p2l5q20IDwga29qaXJhaXJla2lcIDsKK+WGhei8quWWp+WYqSA8IHVjaGl3YWdlbmthXCA7CivotrPmi43lrZAgPCBhc2hpYnlvdXNoaVwgOwor5byx5p2Q5paZIDwgeW93YXphaXJ5b3VcIDsKK+aOpeinpue3miA8IHNlc3Nob2t1c2VuXCA7CivkupznoZ3phbjloakgPCBhc2hvdXNhbicnZW5cIDsKK+S4gOinkueNo+W6pyA8IGlra2FrdWp1dXphXCA7Civlh7rlipsgPCBzaHV0c3VyeW9rdVwgOwor5b255Yqb5aOrIDwgeWFrdXJpa2lzaGlcIDsKK+e1sei9hOiAhSA8IHRvdWthdHN1c2hhXCA7Civlj43kvZPliLbmtL4gPCBoYW50YWlzZWloYVwgOwor5Yy65YqD5pW055CGIDwga3VrYWt1c2VpcmlcIDsKK+S7leS6i+S4rSA8IHNoaWdvdG9jaHV1XCA7CivlnJ/nmb7lp5MgPCBkb2J5YWt1c2hvdVwgOwor5paH5a2m6LOeIDwgYnVuZ2FrdXNob3VcIDsKK+aLm+iri+WbvSA8IHNob3VzZWlrb2t1XCA7Civnt4/lj47lhaUgPCBzb3VzaHV1bnl1dVwgOwor5ris6YeP6Ii5IDwgc29rdXJ5b3VzZW5cIDsKK+aUvuS7u+S4u+e+qSA8IGhvdW5pbnNodWdpXCA7Civpgbrml4/ntabku5ggPCBpem9rdWt5dXVmdVwgOwor5aSJ5L2N5Yi25b6hIDwgaGVuJydpc2VpZ3lvXCA7CivlgJ/lnLDmqKkgPCBzaGFrdWNoaWtlblwgOwor5paH6YOo5aSn6IejIDwgbW9uYnVkYWlqaW5cIDsKK+Wls+aoqeirluiAhSA8IGpva2Vucm9uc2hhXCA7CivkuIvlo6vlrpjlhbUgPCBrYXNoaWthbmhlaVwgOwor5rKW56mN5LiWIDwgY2h1dXNla2lzZWlcIDsKK+S4reemheWvuua5liA8IGNodXV6ZW5qaWtvXCA7Civlj6Pov7Dmm7ggPCBrb3VqdXRzdXNob1wgOwor5q6J6IG36ICFIDwganVuc2hva3VzaGFcIDsKK+ijveWTgeWOn+S+oSA8IHNlaWhpbmdlbmthXCA7CivkurrmsJHkuLvnvqkgPCBqaW5taW5zaHVnaVwgOwor5YuJ5by36YOo5bGLIDwgYmVua3lvdWJleWFcIDsKK+eXheiZq+WusyA8IGJ5b3VjaHV1Z2FpXCA7CivnpZ7lrq7lpJboi5EgPCBqaW5ndXVnYWllblwgOwor5qGc6aSFIDwgc2FrdXJhbW9jaGlcIDsKK+ahnOmjryA8IHNha3VyYW1lc2hpXCA7CivmioDooZPnmoQgPCBnaWp1dHN1dGVraVwgOwor5bCP6Kqs5a62IDwgc2hvdXNldHN1a2FcIDsKK+eJuee0hOW6lyA8IHRva3V5YWt1dGVuXCA7CivkuqTpgJrph48gPCBrb3V0c3V1cnlvdVwgOwor5YWo6Iis5pSv5o+0IDwgemVucGFuc2hpZW5cIDsKK+WwkeWjruacieeCuiA8IHNob3Vzb3V5dXVpXCA7CivntYzlj6PmipXkuI4gPCBrZWlrb3V0b3V5b1wgOwor6YGT5qGI5YaFIDwgbWljaGlhbicnbmFpXCA7Civmj5vmsJfoo4Xnva4gPCBrYW5raXNvdWNoaVwgOwor5YWx5ZKM5Yi25bqmIDwga3lvdXdhc2VpZG9cIDsKK+mBk+aZruiriyA8IG1pY2hpYnVzaGluXCA7Civlpb3oibLogIUgPCBrb3VzaG9rdXNoYVwgOwor5LqM6Kqy5YuJ5by3IDwgbmlrYWJlbmt5b3VcIDsKK+a2iOiHreWJpCA8IHNob3VzaHV1emFpXCA7CivkuojpmLLmjqXnqK4gPCB5b2JvdXNlc3NodVwgOwor54us5ZaE55qEIDwgZG9rdXplbnRla2lcIDsKK+eVsOWbveaDhee3kiA8IGlrb2t1am91Y2hvXCA7Civop6Plg4/lipsgPCBrYWl6b3VyeW9rdVwgOwor6YGL6Lui5YGc5q2iIDwgdW50ZW50ZWlzaGlcIDsKK+aCquWPo+mbkeiogCA8IGFra291em91Z29uXCA7Civou43ms5XkvJrorbAgPCBndW5wb3VrYWlnaVwgOwor55u05Ye6IDwgY2hva3VzaHV0c3VcIDsKK+a1uOmAj+WcpyA8IHNoaW50b3VhdHN1XCA7CivnhrHooYDmvKIgPCBuZWtrZXRzdWthblwgOwor5aSp5Zyw54Sh55SoIDwgdGVuY2hpbXV5b3VcIDsKK+eVs+iBtyA8IHRhdGFtaXNob2t1XCA7CivnlbDluLjmgKfmrLIgPCBpam91c2VpeW9rdVwgOwor5bKp55+z5a2mIDwgZ2Fuc2VraWdha3VcIDsKK+icnOafkeeVkSA8IG1pa2FuYmF0YWtlXCA7Civng4/lpKnni5cgPCBrYXJhc3V0ZW5ndVwgOwor57Sz5aOr55qEIDwgc2hpbnNoaXRla2lcIDsKK+S6uuW3peWPl+iDjiA8IGppbmtvdWp1dGFpXCA7Civml6XmnKzmlofms5UgPCBuaWhvbmJ1bnBvdVwgOwor56qS5oGv5q27IDwgY2hpc3Nva3VzaGlcIDsKK+S4iuS4i+awtOmBkyA8IGpvdWdlc3VpZG91XCA7CivkuInlpKfnr4AgPCBzYW5kYWlzZXRzdVwgOwor5rS75pat5bGkIDwga2F0c3VkYW5zb3VcIDsKK+mKgOihjOWPo+W6pyA8IGdpbmtvdWtvdXphXCA7Civnm67pvLvnq4sgPCBtZWhhbmFkYWNoaVwgOwor5ZGo5pyf5b6LIDwgc2h1dWtpcml0c3VcIDsKK+iNieWGoCA8IGt1c2FrYW5tdXJpXCA7CivpgIDntIXoibIgPCB0YWlrb3VzaG9rdVwgOwor5aSP5pyf5aSn5a2mIDwga2FraWRhaWdha3VcIDsKK+mAo+mCpuitsOS8miA8IHJlbnBvdWdpa2FpXCA7Civmkq7lg4/nrqEgPCBzYXRzdXpvdWthblwgOwor6IW55YWr5YiGIDwgaGFyYWhhY2hpYnVcIDsKK+acq+acn+eXh+eKtiA8IG1ha2tpam91dGFpXCA7CivkupTmrrXli5XoqZ4gPCBnb2RhbmRvdXNoaVwgOwor56uL5rOV5qmf6ZaiIDwgcmlwcG91a2lrYW5cIDsKK+WboOW+quWnkeaBryA8IGluanVua29zb2t1XCA7CivpgLLlhaXot68gPCBzaGluJydueXV1cm9cIDsKK+Wkp+WxseakkumtmiA8IG9vc2Fuc2hvdXVvXCA7CivomY7oppbnnIjnnIggPCBrb3NoaXRhbnRhblwgOwor6IOM5pel5oCnIDwgaGFpaml0c3VzZWlcIDsKK+iDjOmdoumjm+ihjCA8IGhhaW1lbmhpa291XCA7CivlvL7kuLjpgZPot68gPCBkYW5nYW5kb3Vyb1wgOwor6ZaT5aWP5puyIDwga2Fuc291a3lva3VcIDsKK+WEquWFiOWkluiyqCA8IHl1dXNlbmdhaWthXCA7CivlvZPnlKjmvKLlrZcgPCB0b3V5b3VrYW5qaVwgOwor5oyH5Y2X5b25IDwgc2hpbmFuJyd5YWt1XCA7CivohIXov6vnirYgPCBreW91aGFrdWpvdVwgOwor5rCR5pys5Li7576pIDwgbWlucG9uc2h1Z2lcIDsKK+WKn+WQjeW/gyA8IGtvdW15b3VzaGluXCA7Civlm57mlZnlm70gPCBrYWlreW91a29rdVwgOwor6aqo6Iac54KOIDwga290c3VtYWt1ZW5cIDsKK+S6uuW3peWPl+e0myA8IGppbmtvdWp1ZnVuXCA7CivkuLvopoHniankvqEgPCBzaHV5b3VidWtrYVwgOwor5rKi5bq15rysIDwgdGFrdWFuZHp1a2VcIDsKK+agueWIh+iZqyA8IG5la2lyaW11c2hpXCA7Civkurrlt6Xlj5fnsr4gPCBqaW5rb3VqdXNlaVwgOwor6YCB5paZ5YWxIDwgc291cnlvdXRvbW9cIDsKK+W8teacrOS6uiA8IGNob3Vob24nJ25pblwgOwor55m75bGx6Zu76LuKIDwgdG96YW5kZW5zaGFcIDsKK+aaq+WumuaUv+W6nCA8IHphbnRlaXNlaWZ1XCA7CivkuZfou4rlj6MgPCBqb3VzaGFndWNoaVwgOwor5LmX5ZCI6aas6LuKIDwgbm9yaWFpYmFzaGFcIDsKK+S4gOaXpei3ryA8IGljaGluaWNoaWppXCA7CivlnLDos6rlm7MgPCBjaGlzaGl0c3V6dVwgOwor5pyf5oiQ5ZCM55ufIDwga2lzZWlkb3VtZWlcIDsKK+eri+aYjuaIpiA8IHJpdHN1bWVpc2VuXCA7Civmir3osaHoq5YgPCBjaHV1c2hvdXJvblwgOwor5pWj5YWJ5pif6ZuyIDwgc2Fua291c2VpdW5cIDsKK+S7leios+ihqCA8IHNoaXdha2VoeW91XCA7Civpo6LppJPnmYLms5UgPCBraWdhcnlvdWhvdVwgOwor5Zu956iO5bqBIDwga29rdXplaWNob3VcIDsKK+ezuOWBj+aZr+awlyA8IGl0b2hlbmtlaWtpXCA7CivniankvqHlpInli5UgPCBidWtrYWhlbmRvdVwgOwor5oCn5oKq6KqsIDwgc2VpYWt1c2V0c3VcIDsKK+i/kemDiumDveW4giA8IGtpbmtvdXRvc2hpXCA7Civmh5Dpg7fnl4UgPCBrYWlreW91YnlvdVwgOwor5YWs6ZaL5pyf6ZaTIDwga291a2Fpa2lrYW5cIDsKK+WJjeW+jOS4jeimmiA8IHplbmdvZnVrYWt1XCA7CivmupblgpnkvZPmk40gPCBqdW5iaXRhaXNvdVwgOwor5q+N57O75a625pePIDwgYm9rZWlrYXpva3VcIDsKK+atr+enkeWMu+ihkyA8IHNoaWthaWp1dHN1XCA7Civph5HnrqHmpb3lmaggPCBraW5rYW5nYWtraVwgOwor5YiH56OL55Ci56OoIDwgc2Vzc2F0YWt1bWFcIDsKK+S4gOaZguino+mbhyA8IGljaGlqaWthaWtvXCA7Civmn5HmqZjpoZ4gPCBrYW5raXRzdXJ1aVwgOwor6YGL6Lui6LOH6YeRIDwgdW50ZW5zaGlraW5cIDsKK+WhkeaAp+mZkOeVjCA8IHNvc2VpZ2Vua2FpXCA7Civph5HmqKnmlL/msrsgPCBraW5rZW5zZWlqaVwgOwor6Ziy5b6h6YOo6ZqKIDwgYm91Z3lvYnV0YWlcIDsKK+mdmeatouihm+aYnyA8IHNlaXNoaWVpc2VpXCA7CivkuIDpn7Pnr4AgPCBpY2hpb25zZXRzdVwgOwor5YaN5bqm5Y2U6K2wIDwgc2FpZG9reW91Z2lcIDsKK+iEseeCremFuCA8IGRhdHN1dGFuc2FuXCA7CivmlrDmioDooZMgPCBzaGluZ2lqdXRzdVwgOwor6YCG5o6i55+lIDwgZ3lha3V0YW5jaGlcIDsKK+S4gOWIh+WQiOiyoSA8IGlzc2FpZ2Fzc2FpXCA7CivpgbrnlKPnm7jntpogPCBpc2Fuc291em9rdVwgOwor5ou+5b6X6ICFIDwgc2h1dXRva3VzaGFcIDsKK+WuneeJqeauvyA8IGhvdW1vdHN1ZGVuXCA7CivllqvnhZnluK0gPCBraXRzdWVuc2VraVwgOwor5Ya36KGA5ryiIDwgcmVpa2V0c3VrYW5cIDsKK+WhkeaAp+WkieW9oiA8IHNvc2VpaGVua2VpXCA7Civopovmp5jopovnnJ/kvLwgPCBtaXlvdW1pbWFuZVwgOwor5Li75Yqb6ImmIDwgc2h1cnlva3VrYW5cIDsKK+S4gOWkqeWbm+a1tyA8IGl0dGVuc2hpa2FpXCA7Civou4rlpKflt6UgPCBrdXJ1bWFkYWlrdVwgOwor6YGO6aOf55eHIDwga2FzaG9rdXNob3VcIDsKK+mfs+mfv+WKueaenCA8IG9ua3lvdWtvdWthXCA7Civlrr/lkb3oq5YgPCBzaHVrdW1laXJvblwgOwor5YWl6YeR56WoIDwgbnl1dWtpbmh5b3VcIDsKK+WNmOacrOS9jeaApyA8IHRhbmhvbicnaXNlaVwgOwor6Zuy5pWj6Zyn5raIIDwgdW5zYW5tdXNob3VcIDsKK+WFqOS9k+S4u+e+qSA8IHplbnRhaXNodWdpXCA7CivoirHlsYvmlbcgPCBoYW5heWFzaGlraVwgOwor5YWx55m96auqIDwgdG9tb3NoaXJhZ2FcIDsKK+WBnOatouaZgumWkyA8IHRlaXNoaWppa2FuXCA7CivkvY7nqbrpo5vooYwgPCB0ZWlrdXVoaWtvdVwgOwor5Y+j5bqn5L+CIDwga291emFrYWthcmlcIDsKK+eTouiZqyA8IHRlbnRvdW11c2hpXCA7CivnlJ/lrZjnjocgPCBzZWl6b25yaXRzdVwgOwor5pSv5bqm6YOo5bGLIDwgc2hpdGFrdWJleWFcIDsKK+eGiuacrOecjCA8IGt1bWFtb3Rva2VuXCA7Civnm7Tpiq3lvaIgPCBjaG9rdXNlbmtlaVwgOwor5YuV54mp5oCnIDwgZG91YnV0c3VzZWlcIDsKK+WOn+eIhueXhyA8IGdlbmJha3VzaG91XCA7CivliqDlt6Xosr/mmJMgPCBrYWtvdWJvdWVraVwgOwor6KGb5pif5pS+6YCBIDwgZWlzZWlob3Vzb3VcIDsKK+mbu+awl+WIhuinoyA8IGRlbmtpYnVua2FpXCA7Civlt6bkuIsgPCBoaWRhcmlzaGl0YVwgOwor6aKo6Ie05Zyw5Yy6IDwgZnV1Y2hpY2hpa3VcIDsKK+WvhumWieWuueWZqCA8IG1pcHBlaXlvdWtpXCA7CivpgKPluK/lgrXli5kgPCByZW50YWlzYWltdVwgOwor6YeR5Ymb6Jap5aCVIDwga29uZ291c2F0dGFcIDsKK+S4gOS6uuWkqeS4iyA8IGhpdG9yaWRlbmthXCA7Civpm7vli5XlvI8gPCBkZW5kb3VzaGlraVwgOwor5pmC6ZaT5Y+N6LuiIDwgamlrYW5oYW50ZW5cIDsKK+eUn+eUo+WKmyA8IHNlaXNhbnJ5b2t1XCA7Civlia/niafluKsgPCBmdWt1Ym9rdXNoaVwgOwor6IGW6aSQ5byPIDwgc2Vpc2Fuc2hpa2lcIDsKK+mAhumWouaVsCA8IGd5YWt1a2Fuc3V1XCA7CivkuIPkupTkuIkgPCBzaGljaGlnb3NhblwgOwor6aeQ55WZ6LuNIDwgY2h1dXJ5dXVndW5cIDsKK+WUr+eJqeirliA8IHl1aWJ1dHN1cm9uXCA7Civml4XllYbkurogPCB0YWJpc2hvdW5pblwgOwor6KW/5qyn5paH5piOIDwgc2Vpb3VidW5tZWlcIDsKK+S4i+mDqOe1hOe5lCA8IGthYnVzb3NoaWtpXCA7Civnm7jkuZflirnmnpwgPCBzb3Vqb3Vrb3VrYVwgOwor5rC05bmz6Led6ZuiIDwgc3VpaGVpa3lvcmlcIDsKK+eZvuWHuiA8IGh5YWt1c2h1dHN1XCA7CivmioDooZPmlpkgPCBnaWp1dHN1cnlvdVwgOwor6LuN5YKZ5pKk5buDIDwgZ3VuYml0ZXBwYWlcIDsKK+WbuuacieWQjeipniA8IGtveXV1bWVpc2hpXCA7Civnt7Tnv5LluLMgPCByZW5zaHV1Y2hvdVwgOwor6YCg55+z6auYIDwgem91a29rdWRha2FcIDsKK+i7jemaiuW8jyA8IGd1bnRhaXNoaWtpXCA7Civnv7voqLPogIUgPCBob24nJ3lha3VzaGFcIDsKK+a9pOebrumwryA8IHVydW1laXdhc2hpXCA7CivkurrplpPnlo7lpJYgPCBuaW5nZW5zb2dhaVwgOwor6Iy26KSQ6ImyIDwgY2hha2Fzc2hva3VcIDsKK+eiuuWun+W6piA8IGtha3VqaXRzdWRvXCA7CivmnInmqZ/ljJblraYgPCB5dXVraWthZ2FrdVwgOwor57eP5Yqb5oimIDwgc291cnlva3VzZW5cIDsKK+S7sumWk+WApOautSA8IG5ha2FtYW5lZGFuXCA7Civlpb3oibLmvKIgPCBrb3VzaG9rdWthblwgOwor5rip5pWF55+l5pawIDwgb25rb2NoaXNoaW5cIDsKK+WIneaKleeovyA8IGhhdHN1dG91a291XCA7CivkuIfkuIfkuIAgPCBtYW5tYW4nJ2ljaGlcIDsKK+aal+imluijhee9riA8IGFuc2hpc291Y2hpXCA7Civlm73lrrboqabpqJMgPCBrb2trYXNoaWtlblwgOwor6Z2S5p6c5biC5aC0IDwgc2Vpa2FpY2hpYmFcIDsKK+iLpeS+jSA8IHdha2F6YW11cmFpXCA7CivntLPlo6vmnI0gPCBzaGluc2hpZnVrdVwgOwor5rCR5LqL6KOB5YikIDwgbWluamlzYWliYW5cIDsKK+WOn+WtkOWFteWZqCA8IGdlbnNoaWhlaWtpXCA7CivkuIDku5XkuosgPCBoaXRvc2hpZ290b1wgOwor5ZeF56We57WMIDwga3l1dXNoaW5rZWlcIDsKK+iCr+WumuW/nOetlCA8IGtvdXRlaW91dG91XCA7CivlpInmm7TkuI3og70gPCBoZW5rb3VmdW5vdVwgOwor57aZ57aa55qEIDwga2Vpem9rdXRla2lcIDsKK+aWh+WtpueahCA8IGJ1bmdha3V0ZWtpXCA7CivntIDli6LmnKznt5ogPCBraXNlaWhvbnNlblwgOwor5YCZ55SxIDwgc291cm91eW9zaGlcIDsKK+m6u+ijj+iNieWxpSA8IGFzYXVyYXpvdXJpXCA7Civlha3ph43llLEgPCByb2t1anV1c2hvdVwgOwor5Y+w5rm+5Z2K5Li7IDwgdGFpd2FuYm91enVcIDsKK+Wto+WIiumbkeiqjCA8IGtpa2FuemFzc2hpXCA7CivljZfpmL/miKbkuokgPCBuYW4nJ2FzZW5zb3VcIDsKK+eEoee3muWRqOazoiA8IG11c2Vuc2h1dWhhXCA7CivnjoTkurrnrYsgPCBrdXJvdXRvc3VqaVwgOwor6ZW35pyf6YeR5YipIDwgY2hvdWtpa2lucmlcIDsKK+Wbg+WtkOaWuSA8IGhheWFzaGlrYXRhXCA7CivlpKfkurrniakgPCBkYWlqaW5idXRzdVwgOwor6aOb6KGM5qmf562JIDwgaGlrb3VraW5hZG9cIDsKK+WCgOWEoeaUv+W6nCA8IGthaXJhaXNlaWZ1XCA7CivlkIzns7voibIgPCBkb3VrZWlzaG9rdVwgOwor57SF55m957KJIDwgYmVuaW9zaGlyb2lcIDsKK+Wuo+iqk+W8jyA8IHNlbnNlaXNoaWtpXCA7CivluILlpJbpm7voqbEgPCBzaGlnYWlkZW53YVwgOwor6YCj6YKm5pS/5bqcIDwgcmVucG91c2VpZnVcIDsKK+aUvuatjOmrmOWQnyA8IGhvdWtha291Z2luXCA7CivkuK3lkoznhrEgPCBjaHV1d2FuZXRzdVwgOwor5b6u6YeP5YWD57SgIDwgYmlyeW91Z2Vuc29cIDsKK+iLseWtl+aWsOiBniA8IGVpamlzaGluYnVuXCA7CivmuoDouqvlibXnl40gPCBtYW5zaGluc291aVwgOwor56ys5LqM57WE5ZCIIDwgZGFpbmlrdW1pYWlcIDsKK+a2iOiAl+eahCA8IHNob3Vrb3V0ZWtpXCA7CivmlLvmkoPnmoQgPCBrb3VnZWtpdGVraVwgOwor5Z+L6JS154mpIDwgbWFpem91YnV0c3VcIDsKK+WJr+iqreacrCA8IGZ1a3Vkb2t1aG9uXCA7Civpup3pppnpvKAgPCBqYWtvdW5lenVtaVwgOwor5pyo6LOD5a6/IDwga2ljaGluJyd5YWRvXCA7Civlm5vop5Lmn7EgPCBzaGlrYWt1Y2h1dVwgOwor5Lit56m65aOBIDwgY2h1dWt1dWthYmVcIDsKK+WppuS6uuitpuWumCA8IGZ1amlua2Vpa2FuXCA7CivogIPoqLzlraYgPCBrb3VzaG91Z2FrdVwgOwor56ys5LiJ5LiW55WMIDwgZGFpc2Fuc2VrYWlcIDsKK+avmOaymemWgOWkqSA8IGJpc2hhbW9udGVuXCA7CivnpL7kvJrkuLvnvqkgPCBzaGFrYWlzaHVnaVwgOwor5a2m5L2N6KuW5paHIDwgZ2FrdWlyb25idW5cIDsKK+Wun+iovOeahCA8IGppc3Nob3V0ZWtpXCA7CivmlZHmuIjnrZYgPCBreXV1c2Fpc2FrdVwgOwor6LuN5Zu96Kq/IDwgZ3Vua29rdWNob3VcIDsKK+eZveidi+eXhSA8IGhha3Vyb3VieW91XCA7CivnpL7kuqTovp7ku6QgPCBzaGFrb3VqaXJlaVwgOwor5b605YW15b+M6YG/IDwgY2hvdWhlaWtpaGlcIDsKK+eLgueKrOeXhSA8IGt5b3VrZW5ieW91XCA7CivmsJHooYbnmoQgPCBtaW5zaHV1dGVraVwgOwor5qmf5Lya5Z2H562JIDwga2lrYWlraW50b3VcIDsKK+aaq+WumuaOque9riA8IHphbnRlaXNvY2hpXCA7CivmlrnlkJHpn7Pnl7QgPCBob3Vrb3VvbmNoaVwgOwor5LiA5Lih5bm0IDwgaWNoaXJ5b3VuZW5cIDsKK+S4lueVjOmKgOihjCA8IHNla2FpZ2lua291XCA7CivlpKfku4/mrr8gPCBkYWlidXRzdWRlblwgOwor5Yi56YKj55qEIDwgc2V0c3VuYXRla2lcIDsKK+WFqOaoqeWnlOS7uyA8IHplbmtlbicnaW5pblwgOwor5Ly96KmxIDwgdG9naWJhbmFzaGlcIDsKK+iHqueEtuiogOiqniA8IHNoaXplbmdlbmdvXCA7Civli4Xku7vlrpggPCBjaG9rdW5pbmthblwgOwor6KqH5aSn5aaE5oOzIDwga29kYWltb3Vzb3VcIDsKK+WPjOWNgeevgCA8IHNvdWp1dXNldHN1XCA7Civlpb3oibLmnKwgPCBrb3VzaG9rdWJvblwgOwor5YyW57Kn6YGT5YW3IDwga2VzaG91ZG91Z3VcIDsKK+S4jeWkieizh+acrCA8IGZ1aGVuc2hpaG9uXCA7CivnqpLljJbniakgPCBjaGlra2FidXRzdVwgOwor5p2+6aO+IDwgbWF0c3VrYXphcmlcIDsKK+S4ieinkue/vCA8IHNhbmtha3V5b2t1XCA7Civos57lkbPmnJ/pmZAgPCBzaG91bWlraWdlblwgOwor5oiQ6ZW35qCqIDwgc2VpY2hvdWthYnVcIDsKK+efs+adkOWVhiA8IHNla2l6YWlzaG91XCA7CivkvpvoqJfph5EgPCBreW91dGFrdWtpblwgOwor5b+D6IeT5aSW56eRIDwgc2hpbnpvdWdla2FcIDsKK+eMq+mhjeWkpyA8IGJ5b3VnYWt1ZGFpXCA7CivlnLDmlrnoibIgPCBjaGlob3VzaG9rdVwgOwor5bm+5L2V57Sa5pWwIDwga2lrYWt5dXVzdXVcIDsKK+S4iemDqOWQiOWljyA8IHNhbmJ1Z2Fzc291XCA7CivnlJ/kuK3ntpkgPCBuYW1hY2h1dWtlaVwgOwor5ZC45Y+O5YmkIDwga3l1dXNodXV6YWlcIDsKK+iSmeWPpOS6uueoriA8IG1vdWtvamluc2h1XCA7Civpm7vmsJfljJblraYgPCBkZW5raWthZ2FrdVwgOwor5p2x6aKoIDwgaGlnYXNoaWthemVcIDsKK+W7uuiUveeOhyA8IGtlbnBlaXJpdHN1XCA7CivlrqLoprPnmoQgPCBreWFra2FudGVraVwgOwor6LGG6IWQ5LiA5LiBIDwgdG91ZnVpdGNob3VcIDsKK+a2iOiyu+mDveW4giA8IHNob3VoaXRvc2hpXCA7CivkuIvntJrogbcgPCBrYWt5dXVzaG9rdVwgOwor5LiA5LiA44CH55WqIDwgaHlha3V0b29iYW5cIDsKK+S/rumjvuiqniA8IHNodXVzaG9rdWdvXCA7Civlrrbml4/liLbluqYgPCBrYXpva3VzZWlkb1wgOwor55Sf5a2Y5pyf6ZaTIDwgc2Vpem9ua2lrYW5cIDsKK+Wkp+mjn+a8oiA8IHRhaXNob2t1a2FuXCA7CivlhrfnrJHnmoQgPCByZWlzaG91dGVraVwgOwor5pSv57Wm6aGNIDwgc2hpa3l1dWdha3VcIDsKK+S4jeWdh+izqiA8IGZ1a2luc2hpdHN1XCA7Civku6PooajnmoQgPCBkYWloeW91dGVraVwgOwor5YWl6YGT6ZuyIDwgbnl1dWRvdWd1bW9cIDsKK+mHjuiJr+S7leS6iyA8IG5vcmFzaGlnb3RvXCA7CivlhbHpgJrngrkgPCBreW91dHN1dXRlblwgOwor5pel5LyK6L6e5YW4IDwgbmljaGlpaml0ZW5cIDsKK+WFrOW+s+W/gyA8IGtvdXRva3VzaGluXCA7CivkuI3mraPkuZfou4ogPCBmdXNlaWpvdXNoYVwgOwor6Kq/5p+757WQ5p6cIDwgY2hvdXNha2Vra2FcIDsKK+W9ouW8j+irliA8IGtlaXNoaWtpcm9uXCA7CivkuI3lvZPlu4nlo7IgPCBmdXRvdXJlbmJhaVwgOwor6YeR55Kw6aOfIDwga2lua2Fuc2hva3VcIDsKK+WHuuacreaJgCA8IHNodXNzYXRzdWpvXCA7Civmu4XlpJrnn6LpsYggPCBtZXR0YXlhdGFyYVwgOwor5YyX5qW15rW3IDwgaG9ra3lva3VrYWlcIDsKK+WJjeS6uuacqui4jyA8IHplbmppbm1pdG91XCA7CivooYzlrpjluoEgPCBneW91a2FuY2hvdVwgOwor5LiN5b2T5Yip5b6XIDwgZnV0b3VyaXRva3VcIDsKK+WbnuaVmeWvuumZoiA8IGthaWt5b3VqaWluXCA7Civkv53ouqvooZMgPCBob3NoaW5qdXRzdVwgOwor6ZGR6K2Y55y8IDwga2Fuc2hpa2lnYW5cIDsKK+WMl+altea0iyA8IGhva2t5b2t1eW91XCA7CivotaTntKsgPCBha2FtdXJhc2FraVwgOwor6LuN5LqL6KiT57e0IDwgZ3VuamlrdW5yZW5cIDsKK+W9q+WIu+eVjCA8IGNob3Vrb2t1a2FpXCA7Civppqzpub/oqbEgPCBiYWthYmFuYXNoaVwgOwor57eP5ZCI5Y+j5bqnIDwgc291Z291a291emFcIDsKK+eJqee0jeeojiA8IGJ1dHN1bm91emVpXCA7Civpg6HnnIzliLbluqYgPCBndW5rZW5zZWlkb1wgOwor5L2/55So5Y+v6IO9IDwgc2hpeW91a2Fub3VcIDsKK+S4i+Wls+S4rSA8IHNoaW1vam9jaHV1XCA7CivlhoXpg6jnlZnkv50gPCBuYWlidXJ5dXVob1wgOwor5Zyw5LiL5a6kIDwgY2hpa2FzaGl0c3VcIDsKK+WGjeiyqeWItuW6piA8IHNhaWhhbnNlaWRvXCA7CivooqvpgbjmjJnmqKkgPCBoaXNlbmt5b2tlblwgOwor6LK45pys5bGLIDwga2FzaGlob24nJ3lhXCA7CivniankvqHntbHliLYgPCBidWtrYXRvdXNlaVwgOwor6Zi/5ZGG6ZmA576F57WMIDwgYWhvZGFyYWt5b3VcIDsKK+WboOaVsOWIhuinoyA8IGluc3V1YnVua2FpXCA7Civpjb7kubPmtJ4gPCBzaG91bnl1dWRvdVwgOwor6IG35ZOh6YyyIDwgc2hva3VpbnJva3VcIDsKK+eUn+eUn+a1gei7oiA8IHNlaXNlaXJ1dGVuXCA7CivnhKHnn6XokpnmmKcgPCBtdWNoaW1vdW1haVwgOwor5qKv5a2Q6YWSIDwgaGFzaGlnb3pha2VcIDsKK+a7nuWcqOWuoiA8IHRhaXphaWt5YWt1XCA7Civok4Tpm7vmsaAgPCBjaGlrdWRlbmNoaVwgOwor6Kmm5o6Y6ICFIDwgc2hpa3V0c3VzaGFcIDsKK+Wkp+WtpuWvriA8IGRhaWdha3VyeW91XCA7Civlp6vlsI/mnb4gPCBoaW1la29tYXRzdVwgOwor55yf5a6f5ZGzIDwgc2hpbmppdHN1bWlcIDsKK+aXheW9ueiAhSA8IHRhYml5YWt1c2hhXCA7Civlm73msJHnmoQgPCBrb2t1bWludGVraVwgOwor5oim5rKh6ICFIDwgc2VuYm90c3VzaGFcIDsKK+a1geihjOeXhSA8IHJ5dXVrb3VieW91XCA7CivlvavliLvniYggPCBjaG91a29rdWJhblwgOwor5aCV6JC95Z2K5Li7IDwgZGFyYWt1Ym91enVcIDsKK+iInuWPsOW6puiDuCA8IGJ1dGFpZG9reW91XCA7Civlkajml4vmpa0gPCBzaHV1c2VuZ3lvdVwgOwor5Zuj5omH6JmrIDwgdWNoaXdhbXVzaGlcIDsKK+azsOilv+WQjeeUuyA8IHRhaXNlaW1laWdhXCA7Civmn7PohbAgPCB5YW5hZ2lnb3NoaVwgOwor5Y+j5bCP6KiAIDwga3VjaGlrb2dvdG9cIDsKK+azleayu+WbveWutiA8IGhvdWNoaWtva2thXCA7CivlhKrlhYjpoIbkvY0gPCB5dXVzZW5qdW4nJ2lcIDsKK+S7u+WRveW8jyA8IG5pbm1laXNoaWtpXCA7Civpm7vlipvlgrUgPCBkZW5yeW9rdXNhaVwgOwor5Y2Y5L2N57WE5ZCIIDwgdGFuJydpa3VtaWFpXCA7Civlipvli5XnmoQgPCByaWtpZG91dGVraVwgOwor5aSP5bi95a2QIDwgbmF0c3Vib3VzaGlcIDsKK+edoeecoOiWrCA8IHN1aW1pbicneWFrdVwgOwor5Y2455u45aC0IDwgb3Jvc2hpc291YmFcIDsKK+WNsOWIt+alrSA8IGluc2F0c3VneW91XCA7CivnrqHnkIbmg4XloLEgPCBrYW5yaWpvdWhvdVwgOwor5Lyd5bCO546HIDwgZGVuZG91cml0c3VcIDsKK+ibuOWFpemBkyA8IHRha29ueXV1ZG91XCA7Civoq4foqbHlrqQgPCBkYW53YXNoaXRzdVwgOwor5a6M5YWo5Li7576pIDwga2FuemVuc2h1Z2lcIDsKK+WuieaciOe1piA8IHlhc3VnZWtreXV1XCA7CivljJfmpbXmmJ8gPCBob2treW9rdXNlaVwgOwor5b6h6ZyK5LujIDwgbWl0YW1hc2hpcm9cIDsKK+S4g+S4jeaAneitsCA8IG5hbmFmdXNoaWdpXCA7CivmuKzph4/lo6sgPCBzb2t1cnlvdXNoaVwgOwor5Ye66aGY5pmCIDwgc2h1dHN1Z2FuamlcIDsKK+WgseW+qeihjOeCuiA8IGhvdWZ1a3Vrb3VpXCA7CivkuInop5LnkLQgPCBzYW5rYWt1Z290b1wgOwor6YmE5p2h57ayIDwgdGV0c3Vqb3Vtb3VcIDsKK+Wuo+S8neaWh+WPpSA8IHNlbmRlbm1vbmt1XCA7CivkuozmiJDmlofns7sgPCBuaXNlaWJ1bmtlaVwgOwor5L2T5YaF5pmC6KiIIDwgdGFpbmFpZG9rZWlcIDsKK+e/u+ios+aoqSA8IGhvbicneWFrdWtlblwgOwor546J5p2T5a2QIDwgdGFtYWpha3VzaGlcIDsKK+W3pealreWbvSA8IGtvdWd5b3Vrb2t1XCA7CivntYLlpJzpgYvou6IgPCBzaHV1eWF1bnRlblwgOwor5ZGo5peL5paZIDwgc2h1dXNlbnJ5b3VcIDsKK+i/veaSg+aIpiA8IHRzdWlnZWtpc2VuXCA7CivliqDpgJ/pgYvli5UgPCBrYXNva3V1bmRvdVwgOwor5YK355eF5YW1IDwgc2hvdWJ5b3VoZWlcIDsKK+W9vOWyuOahnCA8IGhpZ2FuemFrdXJhXCA7Civlr77mipfpg6jpmoogPCB0YWlrb3VidXRhaVwgOwor57WQ5ama6LK755SoIDwga2Vra29uaGl5b3VcIDsKK+S4gOaZguaJlSA8IGljaGlqaWJhcmFpXCA7CivlhoXlrrnniakgPCBuYWl5b3VidXRzdVwgOwor6LuN5LqL5pS/5qipIDwgZ3VuamlzZWlrZW5cIDsKK+acieapn+i+suazlSA8IHl1dWtpbm91aG91XCA7CivpmLLooZvpg6jplbcgPCBib3VlaWJ1Y2hvdVwgOwor6YGL5Za26LOH6YeRIDwgdW4nJ2Vpc2hpa2luXCA7CivmnIjopovolY7puqYgPCB0c3VraW1pc29iYVwgOwor5Lq655Sf6Iiq6LevIDwgamluc2Vpa291cm9cIDsKK+eEoeS4gOeJqSA8IG11aWNoaW1vdHN1XCA7CivnlJ/lkb3kv53pmbogPCBzZWltZWlob2tlblwgOwor5Yq05YON5YqbIDwgcm91ZG91cnlva3VcIDsKK+W/nOaApeaJi+W9kyA8IG91a3l1dXRlYXRlXCA7CivmnInlvaLnhKHlvaIgPCB5dXVrZWltdWtlaVwgOwor6Iul56u55LqtIDwgd2FrYXRha2V0ZWlcIDsKK+e/u+ios+abuCA8IGhvbicneWFrdXNob1wgOwor5Yiw552A6aeFIDwgdG91Y2hha3Vla2lcIDsKK+eUt+W/gyA8IG90b2tvZ29rb3JvXCA7CivlsJHlm73msJEgPCBzaG91a29rdW1pblwgOwor5Y+X5L+h5Zue6LevIDwganVzaGlua2Fpcm9cIDsKK+WPguiAg+Wbs+abuCA8IHNhbmtvdXRvc2hvXCA7CivnlJ/lrabllY8gPCBuYW1hZ2FrdW1vblwgOwor6Iux6ZuE5bSH5oudIDwgZWl5dXVzdXVoYWlcIDsKK+S7iuaciOWIhiA8IGtvbmdldHN1YnVuXCA7CivliIbmlbDlvI8gPCBidW5zdXVzaGlraVwgOwor5Y+X6aiT55Wq5Y+3IDwganVrZW5iYW5nb3VcIDsKK+mHjei+suS4u+e+qSA8IGp1dW5vdXNodWdpXCA7Civmjojos57lvI8gPCBqdXNob3VzaGlraVwgOwor5o6M5Lit5pysIDwgc2hvdWNodXVib25cIDsKK+ecgeWKm+WMliA8IHNob3VyeW9rdWthXCA7Civku6PooajmoLwgPCBkYWloeW91a2FrdVwgOwor6K235Zu956We56S+IDwgZ29rb2t1amluamFcIDsKK+aYvOiIiOihjCA8IGhpcnVrb3VneW91XCA7Civpu5nnpLrpjLIgPCBtb2t1c2hpcm9rdVwgOwor5piO5rK756We5a6uIDwgbWVpamlqaW5ndXVcIDsKK+WwkeaVsOaEj+imiyA8IHNob3VzdXVpa2VuXCA7CivkurrombEgPCBoaXRvc2hpcmFtaVwgOwor5q+U57+86YCj55CGIDwgaGl5b2t1cmVucmlcIDsKK+aknOWvn+WumCA8IGtlbnNhdHN1a2FuXCA7CivkvpvoqJfogIUgPCBreW91dGFrdXNoYVwgOwor5rW355Sj54mpIDwga2Fpc2FuYnV0c3VcIDsKK+acieacn+W5tOmHkSA8IHl1dWtpbmVua2luXCA7Civov5Tkv6HnlKggPCBoZW5zaGluJyd5b3VcIDsKK+S6jOWFg+aUvumAgSA8IG5pZ2VuaG91c291XCA7Civoh6rkv6HpgY7libAgPCBqaXNoaW5rYWpvdVwgOwor6YGB6LWw5puyIDwgdG9uc291a3lva3VcIDsKK+Wliee0jeebuOaSsiA8IGhvdW5vdXp1bW91XCA7CivovrvlvLfnm5cgPCB0c3VqaWdvdXRvdVwgOwor5Lq66Lqr5b6h5L6bIDwgaGl0b21pZ29rdXVcIDsKK+WFrOW8j+aIpiA8IGtvdXNoaWtpc2VuXCA7Civkv53orbfmpJzmnZ8gPCBob2dva2Vuc29rdVwgOwor5YiG55yM5Zyw5ZuzIDwgYnVua2VuY2hpenVcIDsKK+mdtOS4gOi2syA8IGt1dHN1aXNzb2t1XCA7CivpmL/oq5vov73lvpMgPCBheXV0c3Vpc2hvdVwgOwor6Zu75YWJ55+z54GrIDwgZGVua291c2Vra2FcIDsKK+azoueAvuS4h+S4iCA8IGhhcmFuYmFuam91XCA7Civnm7jkupLplqLkv4IgPCBzb3Vnb2thbmtlaVwgOwor5rWq6Iqx56+AIDwgbmFuaXdhYnVzaGlcIDsKK+WGhemDqOS7leanmCA8IG5haWJ1c2hpeW91XCA7CivlkITlpKflraYgPCBrYWt1ZGFpZ2FrdVwgOwor57eP6YCA5Y20IDwgc291dGFpa3lha3VcIDsKK+earuS4i+azqOWwhCA8IGhpa2FjaHV1c2hhXCA7Civkub7nh6Xph47oj5wgPCBrYW5zb3V5YXNhaVwgOwor55+t5qmf6Zai6YqDIDwgdGFua2lrYW5qdXVcIDsKK+ePvuWcsOaZgumWkyA8IGdlbmNoaWppa2FuXCA7Civlm73msJHmnI0gPCBrb2t1bWluZnVrdVwgOwor5LiA562J6LuN5pu5IDwgaXR0b3VndW5zb3VcIDsKK+Wun+WcqOirliA8IGppdHN1emFpcm9uXCA7CivmlZHmgKXou4ogPCBreXV1a3l1dXNoYVwgOwor6ZaT5o6l56iOIDwga2Fuc2V0c3V6ZWlcIDsKK+eNo+mBkyA8IGtlbW9ub21pY2hpXCA7Civlrrbluq3nlKjlk4EgPCBrYXRlaXlvdWhpblwgOwor5Lmx6ZaL55m6IDwgcmFua2FpaGF0c3VcIDsKK+aJgOW4r+S4uyA8IHNob3RhaW51c2hpXCA7CivpibHlsbHmioDluKsgPCBrb3V6YW5naXNoaVwgOwor6Ziy5a+S6Z20IDwgYm91a2FuZ3V0c3VcIDsKK+S4gOWtkOebuOS8nSA8IGlzc2hpc291ZGVuXCA7CivkuInop5Lmn7EgPCBzYW5rYWt1Y2h1dVwgOwor5LiA6ZurIDwgaGl0b3NoaXp1a3VcIDsKK+S7leios+W4syA8IHNoaXdha2VjaG91XCA7CivnspjnnYDmgKcgPCBuZW5jaGFrdXNlaVwgOwor5pmC6ZmQ56uL5rOVIDwgamlnZW5yaXBwb3VcIDsKK+e+iumbsiA8IGhpdHN1amlndW1vXCA7CivmhJvliKXpm6Loi6YgPCBhaWJldHN1cmlrdVwgOwor5a+G6YCg6YWSIDwgbWl0c3V6b3VzaHVcIDsKK+WbuuWumuizh+eUoyA8IGtvdGVpc2hpc2FuXCA7CivkuIDlpJzmvKwgPCBpY2hpeWFkenVrZVwgOwor5ZKM54us6L6e5YW4IDwgd2Fkb2t1aml0ZW5cIDsKK+eZu+agoeaLkuWQpiA8IHRvdWtvdWt5b2hpXCA7Civmlpzop5Lmn7EgPCBzaGFrYWt1Y2h1dVwgOwor5ryU5aWP5peF6KGMIDwgZW5zb3VyeW9rb3VcIDsKK+abuOeUu+mqqOiRoyA8IHNob2dha290dG91XCA7Civlr77nhafnmoQgPCB0YWlzaG91dGVraVwgOwor5b255Lq66aKoIDwgeWFrdW5pbmthemVcIDsKK+iIueiItualrSA8IHNlbnBha3VneW91XCA7CivpgYvli5XpgbjmiYsgPCB1bmRvdXNlbnNodVwgOwor5a2m5ZyS6YO95biCIDwgZ2FrdWVudG9zaGlcIDsKK+awtOmBk+WxgCA8IHN1aWRvdWt5b2t1XCA7Civlp4vnmbrpp4UgPCBzaGloYXRzdWVraVwgOwor5p2x5rSL5Li7576pIDwgdG91eW91c2h1Z2lcIDsKK+WMl+alteWcjyA8IGhva2t5b2t1a2VuXCA7Civml6XnlKjlk4EgPCBuaWNoaXlvdWhpblwgOwor5Y+N6YCG6ICFIDwgaGFuZ3lha3VzaGFcIDsKK+Wkp+miqOWRguaVtyA8IG9vYnVyb3NoaWtpXCA7CivmnInok4vosqjou4ogPCB5dXVnYWlrYXNoYVwgOwor5pS/5rK76LOH6YeRIDwgc2VpamlzaGlraW5cIDsKK+eZu+mMsua4iCA8IHRvdXJva3V6dW1pXCA7CivlsILlo7LlsYAgPCBzZW5iYWlreW9rdVwgOwor5qip5Yqb6ICFIDwga2Vucnlva3VzaGFcIDsKK+iogOirluapn+mWoiA8IGdlbnJvbmtpa2FuXCA7CivppIrorbflrabmoKEgPCB5b3Vnb2dha2tvdVwgOwor5oGS5LmF55qEIDwga291a3l1dXRla2lcIDsKK+i1sOihjOaZgumWkyA8IHNvdWtvdWppa2FuXCA7Civlj43pgIbnvaogPCBoYW5neWFrdXphaVwgOwor6KmV5L6h5Z+65rqWIDwgaHlvdWtha2lqdW5cIDsKK+eJueetieW4rSA8IHRva3V0b3VzZWtpXCA7CivlhoXmnI3olqwgPCBuYWlmdWt1eWFrdVwgOwor6IeG55eF6aKoIDwgb2t1YnlvdWthemVcIDsKK+S+m+e1puiAhSA8IGt5b3VreXV1c2hhXCA7CivlvavliLvluKsgPCBjaG91a29rdXNoaVwgOwor5paw6IGe6KiY5LqLIDwgc2hpbmJ1bmtpamlcIDsKK+Wkq+WUseWppumajyA8IGZ1c2hvdWZ1enVpXCA7Civpm7vlrZDovp7mm7ggPCBkZW5zaGlqaXNob1wgOwor5rGC5Lq66ZujIDwga3l1dWppbicnbmFuXCA7CivnjL/ovaEgPCBzYXJ1Z3V0c3V3YVwgOwor6Kmm5o6Y5qipIDwgc2hpa3V0c3VrZW5cIDsKK+WQjOaZgumMsumfsyA8IGRvdWppcm9rdW9uXCA7CivnrqHnkIbnpL7kvJogPCBrYW5yaXNoYWthaVwgOwor5LiA6KaW5ZCM5LuBIDwgaXNzaGlkb3VqaW5cIDsKK+ani+mAoOWkieWMliA8IGtvdXpvdWhlbmthXCA7CivlnKjkuqzkuK0gPCB6YWlreW91Y2h1dVwgOwor5pa556iL5byPIDwgaG91dGVpc2hpa2lcIDsKK+mdmeWKm+WtpiA8IHNlaXJpa2lnYWt1XCA7CivlpbPmtYHkvZzlrrYgPCBqb3J5dXVzYWtrYVwgOwor5LiA6Kan6KGoIDwgaWNoaXJhbmh5b3VcIDsKK+WMl+acnemuriA8IGtpdGFjaG91c2VuXCA7Civlj7jms5XliLbluqYgPCBzaGlob3VzZWlkb1wgOwor6ISI5omAIDwgbXlha3Vkb2tvcm9cIDsKK+eZvuWNg+mzpSA8IG1vbW9jaGlkb3JpXCA7Civli6Tli5nkuqTku6MgPCBraW5tdWtvdXRhaVwgOwor55+t57eo5pig55S7IDwgdGFucGVuJydlaWdhXCA7CivpioPliaPooZMgPCBqdXVrZW5qdXRzdVwgOwor5Lya5ZOh6KaP57SEIDwga2FpaW5raXlha3VcIDsKK+e0jemqqOWggiA8IG5vdWtvdHN1ZG91XCA7CivogLPlsI/pqqggPCBqaXNob3Vrb3RzdVwgOwor5aSn6Z2Z6ISIIDwgZGFpam91bXlha3VcIDsKK+e1jOa4iOWKmyA8IGtlaXphaXJ5b2t1XCA7CivlrabljZTkvJogPCBnYWt1a3lvdWthaVwgOwor5Lit5b+D54K5IDwgY2h1dXNoaW50ZW5cIDsKK+S6jOeCueWFiOWPliA8IG5pdGVuc2Vuc2h1XCA7Civlj43miKbkuLvnvqkgPCBoYW5zZW5zaHVnaVwgOwor5pq06JmO6aau5rKzIDwgYm91a29oeW91Z2FcIDsKK+WMl+alteWFiSA8IGhva2t5b2t1a291XCA7Civpo5/lk4HlupcgPCBzaG9rdWhpbnRlblwgOwor6aCY5Y+O5pu4IDwgcnlvdXNodXVzaG9cIDsKK+W3puiFleaKleaJiyA8IHNhd2FudG91c2h1XCA7CivkvYbmm7ggPCB0YWRhc2hpZ2FraVwgOwor5YmN5pyf6Kmm6aiTIDwgemVua2lzaGlrZW5cIDsKK+mAmuefpeihqCA8IHRzdXVjaGloeW91XCA7CivpgKPnmbrpioMgPCByZW5wYXRzdWp1dVwgOwor5pS75pKD5YG0IDwga291Z2VraWdhd2FcIDsKK+Wkp+S4reWwjyA8IGRhaWNodXVzaG91XCA7CivlubPlnYflvosgPCBoZWlraW5yaXRzdVwgOwor6LWk5qOf6JuHIDwgeWFtYWthZ2FzaGlcIDsKK+iiq+mBuOaMmeS6uiA8IGhpc2Vua3lvbmluXCA7CivoprPlv7XnmoQgPCBrYW4nJ25lbnRla2lcIDsKK+WwgumWgOiBtyA8IHNlbm1vbnNob2t1XCA7CivlhbHpgLLkvJogPCBreW91c2hpbmthaVwgOwor5L+h55So54q2IDwgc2hpbicneW91am91XCA7CivnuZTnianmpa0gPCBvcmltb25vZ3lvdVwgOwor6IOM5b6M6Zai5L+CIDwgaGFpZ29rYW5rZWlcIDsKK+iFsOWIgCA8IGtvc2hpZ2F0YW5hXCA7CivotoXnibnmgKUgPCBjaG91dG9ra3l1dVwgOwor6L+U5L+h5paZIDwgaGVuc2hpbnJ5b3VcIDsKK+WjgeaWsOiBniA8IGthYmVzaGluYnVuXCA7CivppJPprLzlpKflsIYgPCBnYWtpZGFpc2hvdVwgOwor55Wq5Y+36KiY5Y+3IDwgYmFuZ291a2lnb3VcIDsKK+iejeino+eGsSA8IHl1dWthaW5ldHN1XCA7Civnr4DljZrlo6sgPCBmdXNoaWhha2FzZVwgOwor6KaL54mp5Lq6IDwga2VuYnV0c3VuaW5cIDsKK+eZu+mMsuaWmSA8IHRvdXJva3VyeW91XCA7Civlkajml4vkurogPCBzaHV1c2VuJyduaW5cIDsKK+WIkeS6i+ijnOWEnyA8IGtlaWppaG9zaG91XCA7Civpq5jpupfoip0gPCBrb3VyYWlzaGliYVwgOwor5LiN6Kaq5YiHIDwgZnVzaGluc2V0c3VcIDsKK+imquWRiue9qiA8IHNoaW5rb2t1emFpXCA7CivolKbntIXokYkgPCB0c3V0YW1vbWlqaVwgOwor5LqU55uu6a6oIDwgZ29tb2t1enVzaGlcIDsKK+e3qOmbhumVtyA8IGhlbnNodXVjaG91XCA7Civlh7rniYjmpa0gPCBzaHVwcGFuZ3lvdVwgOwor6Kq/5pWZ5birIDwgY2hvdWt5b3VzaGlcIDsKK+mAsumnkOi7jSA8IHNoaW5jaHV1Z3VuXCA7CivliKXli5XpmoogPCBiZXRzdWRvdXRhaVwgOwor6YCG5Zm05bCEIDwgZ3lha3VmdW5zaGFcIDsKK+S4gOS9k+WFqOS9kyA8IGl0dGFpemVudGFpXCA7Civkuozlj6Pnm64gPCBmdXRha3VjaGltZVwgOwor5rW36YGL5ZCM55ufIDwga2FpdW5kb3VtZWlcIDsKK+WwguWuiOmYsuihmyA8IHNlbnNodWJvdWVpXCA7CivljZfpmL/pgKPpgqYgPCBuYW4nJ2FyZW5wb3VcIDsKK+mAhuWRvemhjCA8IGd5YWt1bWVpZGFpXCA7CivnmbrooYzpg6jmlbAgPCBoYWtrb3VidXN1dVwgOwor5YiR5LqL6KOB5YikIDwga2VpamlzYWliYW5cIDsKK+WFrOW5s+eEoeengSA8IGtvdWhlaW11c2hpXCA7CivniankvqHmjIfmlbAgPCBidWtrYXNoaXN1dVwgOwor57KY552A5YmkIDwgbmVuY2hha3V6YWlcIDsKK+WIkeS6i+iiq+WRiiA8IGtlaWppaGlrb2t1XCA7CivnlJ/niannlYwgPCBzZWlidXRzdWthaVwgOwor6KiY6ICF5Lya6KaLIDwga2lzaGFrYWlrZW5cIDsKK+W+k+i7jeiomOiAhSA8IGp1dWd1bmtpc2hhXCA7CivnqbrmsJfmirXmipcgPCBrdXVraXRlaWtvdVwgOwor5LqU55uu6aOvIDwgZ29tb2t1bWVzaGlcIDsKK+iyoueJqSA8IG1pdHN1Z2ltb25vXCA7Civnj77ph5HmraPkvqEgPCBnZW5raW5zZWlrYVwgOwor5o6h5o6Y5qipIDwgc2Fpa3V0c3VrZW5cIDsKK+Wkp+WQjOWwj+eVsCA8IGRhaWRvdXNob3VpXCA7CivnlJ/lkb3lgKvnkIYgPCBzZWltZWlyaW5yaVwgOwor5YWo5bmF55qEIDwgemVucHVrdXRla2lcIDsKK+mnhuWLleijhee9riA8IGt1ZG91c291Y2hpXCA7CivlvavliLvliIAgPCBjaG91a29rdXRvdVwgOwor5Y2D6LuN5LiH6aasIDwgc2VuZ3VuYmFuYmFcIDsKK+WkieW5u+iHquWcqCA8IGhlbmdlbmppemFpXCA7CivnoJTnqbblv4MgPCBrZW5reXV1c2hpblwgOwor55u45a++5Li7576pIDwgc291dGFpc2h1Z2lcIDsKK+eLrOWNoOeahCA8IGRva3VzZW50ZWtpXCA7CivphbjkuK3mr5IgPCBzYW5jaHV1ZG9rdVwgOwor6LuN5Yy75a2m5qChIDwgZ3VuJydpZ2Fra291XCA7CivotoXmlrDmmJ8gPCBjaG91c2hpbnNlaVwgOwor6YO95rCR5Lya6aSoIDwgdG9taW5rYWlrYW5cIDsKK+W4guWgtOS+oeWApCA8IHNoaWpvdWthY2hpXCA7CivpoILmiLTniakgPCBjaG91ZGFpbW9ub1wgOwor5bmz5ZKM6KuW6ICFIDwgaGVpd2Fyb25zaGFcIDsKK+Wuv+aziuaJgCA8IHNodWt1aGFrdWpvXCA7CivlsL/ntKDmqLnohIIgPCBueW91c29qdXNoaVwgOwor5aOy5Y2055uKIDwgYmFpa3lha3Vla2lcIDsKK+aOg+mZpOW9k+eVqiA8IHNvdWppdG91YmFuXCA7Civmp4vpgKDlvI8gPCBrb3V6b3VzaGlraVwgOwor5Luj55CG5oim5LqJIDwgZGFpcmlzZW5zb3VcIDsKK+S7o+ihqOS9nCA8IGRhaWh5b3VzYWt1XCA7CivlnLDnm6TmsojkuIsgPCBqaWJhbmNoaW5rYVwgOwor5qeL5oiQ5Li7576pIDwga291c2Vpc2h1Z2lcIDsKK+ato+WkmumdouS9kyA8IHNlaXRhbWVudGFpXCA7CivpgY7lpLHniq8gPCBrYXNoaXRzdWhhblwgOwor57SZ5LiA5p6aIDwga2FtaWljaGltYWlcIDsKK+S/neeojuWcsOWfnyA8IGhvemVpY2hpaWtpXCA7Civlho3oqo3orZggPCBzYWluaW5zaGlraVwgOwor5Lq65ZOh5pW055CGIDwgamluJydpbnNlaXJpXCA7CivpoqjnianoqakgPCBmdXVidXRzdXNoaVwgOwor5Lq66ZaT5Lul5YmNIDwgbmluZ2VuJydpemVuXCA7Civlrp/plqLmlbAgPCBqaXRzdWthbnN1dVwgOwor5aSn5aW954mpIDwgZGFpa291YnV0c3VcIDsKK+S5s+a/gea2siA8IG55dXVkYWt1ZWtpXCA7CivmsLTlhrflvI8gPCBzdWlyZWlzaGlraVwgOwor5bmz6Z2i5Zuz5b2iIDwgaGVpbWVuenVrZWlcIDsKK+W/g+mFjeaApyA8IHNoaW5wYWlzaG91XCA7CivlrqLlrqQgPCBreWFrdXNoaXRzdVwgOwor5a6H5a6Z5peF6KGMIDwgdWNodXVyeW9rb3VcIDsKK+W+jOWni+acqyA8IGF0b3NoaW1hdHN1XCA7Civlhajli6LlipsgPCB6ZW5zZWlyeW9rdVwgOwor6I2Y5ZyS5Yi25bqmIDwgc2hvdWVuc2VpZG9cIDsKK+mbouW/g+eOhyA8IHJpc2hpbnJpdHN1XCA7CivkvpvntabmupAgPCBreW91a3l1dWdlblwgOwor6Ieq56S+6KO95ZOBIDwgamlzaGFzZWloaW5cIDsKK+WIneacn+autemajiA8IHNob2tpZGFua2FpXCA7CivliY3pgJTpgbzpgaAgPCB6ZW50b3J5b3VlblwgOwor5aSn5paH56+AIDwgZGFpYnVuc2V0c3VcIDsKK+S4gOWknOWmuyA8IGhpdG95b2R6dW1hXCA7CivntZDlkIjlrZAgPCBrZXRzdWdvdXNoaVwgOwor5q275Lqh546HIDwgc2hpYm91cml0c3VcIDsKK+aZguWxgOafhCA8IGppa3lva3VnYXJhXCA7CivotaTokaHokITphZIgPCBha2FidWRvdXNodVwgOwor5Y6f5aeL5pmC5LujIDwgZ2Vuc2hpamlkYWlcIDsKK+mFjeW9k+eOhyA8IGhhaXRvdXJpdHN1XCA7CivmlbTpqqjluKsgPCBzZWlrb3RzdXNoaVwgOwor5Y+C6KyA5pys6YOoIDwgc2FuYm91aG9uYnVcIDsKK+Wls+WtkOWkp+eUnyA8IGpvc2hpZGFpc2VpXCA7CivplqLnqI7njocgPCBrYW56ZWlyaXRzdVwgOwor5o6S5aSW6YGL5YuVIDwgaGFpZ2FpdW5kb3VcIDsKK+S4reavkuatuyA8IGNodXVkb2t1c2hpXCA7CivmsLTlubPpo5vooYwgPCBzdWloZWloaWtvdVwgOwor5pyA5YmN5YiXIDwgc2FpemVucmV0c3VcIDsKK+S9juWbnui2o+WRsyA8IHRlaWthaXNodW1pXCA7CivkupLmgbXosr/mmJMgPCBnb2tlaWJvdWVraVwgOwor5Lq66ZaT5Lul5LiKIDwgbmluZ2VuJydpam91XCA7CivlvqHmiYDou4ogPCBnb3Nob2d1cnVtYVwgOwor5YKy5oWi54Sh56S8IDwgZ291bWFuYnVyZWlcIDsKK+S6uuafsSA8IGhpdG9iYXNoaXJhXCA7Civms5Xli5nlp5Tlk6HkvJogPCBob3VtdWlpbmthaVwgOwor5YaF5puy55CDIDwgbmFpa3lva2t5dXVcIDsKK+W+kuaJi+epuuaLsyA8IHRvc2h1a3V1a2VuXCA7Civkupzngq3ljJbniakgPCBhdGFua2FidXRzdVwgOwor5rC05rOz5aSn5LyaIDwgc3VpZWl0YWlrYWlcIDsKK+ino+aVo+iqrCA8IGthaXNhbnNldHN1XCA7CivnlLflpbPlkIzmqKkgPCBkYW5qb2RvdWtlblwgOwor5bm06YeR5Yi25bqmIDwgbmVua2luc2VpZG9cIDsKK+epuui7jeWfuuWcsCA8IGt1dWd1bmtpY2hpXCA7CivlpKflkozmmYLku6MgPCB5YW1hdG9qaWRhaVwgOwor5bu66YCg54mpIDwga2Vuem91YnV0c3VcIDsKK+W4neeOi+WIh+mWiyA8IHRlaW91c2Vra2FpXCA7CivnjK7ooYDou4ogPCBrZW5rZXRzdXNoYVwgOwor5bCP5ZOB6ZuGIDwgc2hvdWhpbnNodXVcIDsKK+mciuWuieWupCA8IHJlaWFuc2hpdHN1XCA7Civlj43mlL/lupzlhZogPCBoYW5zZWlmdXRvdVwgOwor6Zui552A6Zm4IDwgcmljaGFrdXJpa3VcIDsKK+iEium7hOmdkum4muWTpSA8IHNla2lzZWlpbmtvXCA7Civmra/np5Hnl4XpmaIgPCBzaGlrYWJ5b3VpblwgOwor6auY6YeO6IGWIDwga291eWFoaWppcmlcIDsKK+i8ieiyqOWxr+aVsCA8IHNhaWthdG9uc3V1XCA7CivmlbTpq6rliaQgPCBzZWloYXRzdXphaVwgOwor5Yem5LiW6KGTIDwgc2hvc2VpanV0c3VcIDsKK+irluiqrOWnlOWToSA8IHJvbnNldHN1aWluXCA7Civli53miYvmrKHnrKwgPCBrYXR0ZXNoaWRhaVwgOwor56m65oy66ZqK5ZOhIDwga3V1dGVpdGFpaW5cIDsKK+iHqueUsee1jOa4iCA8IGppeXV1a2VpemFpXCA7Civml5fpoK0gPCBoYXRhZ2FzaGlyYVwgOwor5a2Q5bm0IDwgbmV6dW1pZG9zaGlcIDsKK+WFq+W5oeWuriA8IGhhY2hpbWFuZ3V1XCA7CivosqHmlL/noLTntrsgPCB6YWlzZWloYXRhblwgOwor5q2M5ZSx5YqbIDwga2FzaG91cnlva3VcIDsKK+WbnuaKmOaQjSA8IGthaXNldHN1c29uXCA7CivmlL/msrvnjK7ph5EgPCBzZWlqaWtlbmtpblwgOwor6aqo5LuV5LqLIDwgaG9uZXNoaWdvdG9cIDsKK+iHhueXheiAhSA8IG9rdWJ5b3Vtb25vXCA7Civml4vpoqggPCB0c3VtdWppa2F6ZVwgOwor5omL6ZaT5LuV5LqLIDwgdGVtYXNoaWdvdG9cIDsKK+S4gOacrOWLneiyoCA8IGlwcG9uc2hvdWJ1XCA7CivmnJ3po6/liY0gPCBhc2FtZXNoaW1hZVwgOwor6LOq5a6fIDwgc2hpdHN1aml0c3VcIDsKK+WIiuihjOeJqSA8IGthbmtvdWJ1dHN1XCA7CivnnLzpj6HmqYsgPCBtZWdhbmViYXNoaVwgOwor6LO85YWl5YWIIDwga291bnl1dXNha2lcIDsKK+S4remAlOWNiuerryA8IGNodXV0b2hhbnBhXCA7CivpgJrpgY7lhIDnpLwgPCB0c3V1a2FnaXJlaVwgOwor5Li854mpIDwgZG9uYnVyaW1vbm9cIDsKK+W8mOS7geagvCA8IGtvdW5pbmt5YWt1XCA7Civoi7HlrZfpm4blkIggPCBlaWppc2h1dWdvdVwgOwor572y5ZCN6YGL5YuVIDwgc2hvbWVpdW5kb3VcIDsKK+WhkeaAp+aMh+aVsCA8IHNvc2Vpc2hpc3V1XCA7CivlkIjlkIzlirTntYQgPCBnb3Vkb3Vyb3Vzb1wgOwor5p2W5p+xIDwgdHN1ZWhhc2hpcmFcIDsKK+aXp+Wkp+mZuCA8IGt5dXV0YWlyaWt1XCA7CivkuLvnrqHmqZ/plqIgPCBzaHVrYW5raWthblwgOwor5aSp5rCX6YO95ZCIIDwgdGVua2l0c3Vnb3VcIDsKK+WFteWZqOW3peWgtCA8IGhlaWtpa291am91XCA7CivkuIvnnrwgPCBzaGl0YW1hYnV0YVwgOwor6Ki65a+f5pelIDwgc2hpbnNhdHN1YmlcIDsKK+W5s+awkeS4u+e+qSA8IGhlaW1pbnNodWdpXCA7Civlrrbml4/kvJrorbAgPCBrYXpva3VrYWlnaVwgOwor5p2x5a6u6IG3IDwgdG91Z3V1c2hva3VcIDsKK+a4m+WCteWfuumHkSA8IGdlbnNhaWtpa2luXCA7Civorablr5/nvbIgPCBrZWlzYXRzdXNob1wgOwor5YaX6KuH5Y+jIDwgam91ZGFuZ3VjaGlcIDsKK+e5lOeJqeWVhiA8IG9yaW1vbm9zaG91XCA7CivnpZblhYjltIfmi50gPCBzb3NlbnN1dWhhaVwgOwor5YWr6L665b2iIDwgaGFjaGloZW5rZWlcIDsKK+mHneS7leS6iyA8IGhhcmlzaGlnb3RvXCA7CivkuovlpKfmgJ3mg7MgPCBqaWRhaXNoaXNvdVwgOwor5aW95Lq654mpIDwga291amluYnV0c3VcIDsKK+WcsOWgtOeUo+alrSA8IGppYmFzYW5neW91XCA7CivlvoHmnI3mrLIgPCBzZWlmdWt1eW9rdVwgOwor6YCj6YKm5Zu95a62IDwgcmVucG91a29ra2FcIDsKK+eri+aGsuS4u+e+qSA8IHJpa2tlbnNodWdpXCA7CivmnYnmnpcgPCBzdWdpYmF5YXNoaVwgOwor6Kej6Kqs6ICFIDwga2Fpc2V0c3VzaGFcIDsKK+W6g+WRiualrSA8IGtvdWtva3VneW91XCA7Civlhavmlrnnvo7kurogPCBoYXBwb3ViaWppblwgOwor5Ym156uL6ICFIDwgc291cml0c3VzaGFcIDsKK+ino+eGseiWrCA8IGdlbmV0c3V5YWt1XCA7Civml6Xmm5zniYggPCBuaWNoaXlvdWJhblwgOwor5paw5b+r6YCfIDwgc2hpbmthaXNva3VcIDsKK+Wxi+agueijj+mDqOWxiyA8IHlhbmV1cmFiZXlhXCA7CivkuJbnlYzmg4Xli6IgPCBzZWthaWpvdXNlaVwgOwor5LiN5b+r5oyH5pWwIDwgZnVrYWlzaGlzdXVcIDsKK+mBoOa0i+iIqui3ryA8IGVuJyd5b3Vrb3Vyb1wgOwor5Lit5bm06ICFIDwgY2h1dW5lbm1vbm9cIDsKK+WbveWutue1jOa4iCA8IGtva2tha2VpemFpXCA7CivmiLTlhqDlvI8gPCB0YWlrYW5zaGlraVwgOwor6Ieo5pmC5aKX5YiKIDwgcmluaml6b3VrYW5cIDsKK+i7vealreW4qyA8IGthcnV3YXphc2hpXCA7CivkuK3lv4PlnLAgPCBjaHV1c2hpbmNoaVwgOwor5ZWG5oWj57+SIDwgc2hvdWthbnNodXVcIDsKK+eUn+eJqeaIpiA8IHNlaWJ1dHN1c2VuXCA7CivmlZHmgKXms5UgPCBreXV1a3l1dWhvdVwgOwor6aOf5YmN6YWSIDwgc2hva3V6ZW5zaHVcIDsKK+WFrOatpuWQiOS9kyA8IGtvdWJ1Z2F0dGFpXCA7Civmt7HlpJzml48gPCBzaGluJyd5YXpva3VcIDsKK+S6iOiumuacrOe3miA8IHlvc2FuaG9uc2VuXCA7CivmoLnmnKzkuLvnvqkgPCBrb25wb25zaHVnaVwgOwor6L+r5pKD56CyIDwgaGFrdWdla2lob3VcIDsKK+mdnuW4uOitpuaIkiA8IGhpam91a2Vpa2FpXCA7CivkuK3lpK7mlL/lupwgPCBjaHV1b3VzZWlmdVwgOwor6YCy6LuN5LitIDwgc2hpbmd1bmNodXVcIDsKK+WqkumFjOS6uiA8IGJhaXNoYWt1bmluXCA7CivkuKHmgKfnmoQgPCByeW91c2VpdGVraVwgOwor5Yi654q256qB6LW3IDwgc2hpam91dG9ra2lcIDsKK+a9nOWLouWKmyA8IHNlbnNlaXJ5b2t1XCA7CivlhaznmoTmibbliqkgPCBrb3V0ZWtpZnVqb1wgOwor5ZCI5oiQ5qi56ISCIDwgZ291c2VpanVzaGlcIDsKK+WJsuizpuizvOiytyA8IGthcHB1a291YmFpXCA7Civkv53lgaXlrqQgPCBob2tlbnNoaXRzdVwgOwor5bqD5ZGK5paZIDwga291a29rdXJ5b3VcIDsKK+mAn+WKm+W6piA8IHNva3VyeW9rdWRvXCA7Civnm4bmj5Dnga8gPCBib25kam91Y2hpblwgOwor5pyq5p2l5oyH5ZCRIDwgbWlyYWlzaGlrb3VcIDsKK+iHqueUseaUvuS7uyA8IGppeXV1aG91bmluXCA7Civoh6rou6LlkajmnJ8gPCBqaXRlbnNodXVraVwgOwor6IG056We57WMIDwgY2hvdXNoaW5rZWlcIDsKK+i2heWkp+WbvSA8IGNob3V0YWlrb2t1XCA7Civlh7rniYjlhYMgPCBzaHVwcGFubW90b1wgOwor6aas6bm/5YqbIDwgYmFrYWRqaWthcmFcIDsKK+iHquW3seS4u+W8tSA8IGppa29zaHVjaG91XCA7CivmmZLogIUgPCBzYXJhc2hpbW9ub1wgOwor6Zm45Y2K55CDIDwgcmlrdWhhbmt5dXVcIDsKK+WNg+iogOS4h+iqniA8IHNlbmdlbmJhbmdvXCA7CivntbHnjofogIUgPCB0b3Vzb3RzdXNoYVwgOwor5YWs5YWx5b+DIDwga291a3lvdXNoaW5cIDsKK+W+kuatqeertui1sCA8IHRvaG9reW91c291XCA7CivopqrlloToqablkIggPCBzaGluemVuamlhaVwgOwor56qS57Sg5Zu65a6aIDwgY2hpc3Nva290ZWlcIDsKK+S4reWFsei7jSA8IGNodXVreW91Z3VuXCA7CivmvILnmb3liaQgPCBoeW91aGFrdXphaVwgOwor5Y+O5YWl5rqQIDwgc2h1dW55dXVnZW5cIDsKK+a1t+S4iuS/nemZuiA8IGthaWpvdWhva2VuXCA7Civmrr/mp5jpoqggPCB0b25vc2FtYWZ1dVwgOwor5b+D6YWN5LqLIDwgc2hpbnBhaWdvdG9cIDsKK+mjm+ihjOeUsuadvyA8IGhpa291a291YmFuXCA7CivmjIflsI7kuLvkuosgPCBzaGlkb3VzaHVqaVwgOwor55u45LqS6YqA6KGMIDwgc291Z29naW5rb3VcIDsKK+i7jeWPuOS7pOmDqCA8IGd1bnNoaXJlaWJ1XCA7Civoq7jkuovkuIfnq68gPCBzaG9qaWJhbnRhblwgOwor5Yq054G95L+d6Zm6IDwgcm91c2FpaG9rZW5cIDsKK+WkqumZveeGsSA8IHRhaXlvdW5ldHN1XCA7CivliKTmsbrmlocgPCBoYW5rZXRzdWJ1blwgOwor5pmC6Lyq6YeR5YmbIDwgamlyaW5rb25nb3VcIDsKK+aEj+awl+mKt+ayiCA8IGlraXNob3VjaGluXCA7Civkv6Hku7DnmoQgPCBzaGlua291dGVraVwgOwor6Iad5ouN5a2QIDwgaGl6YWJ5b3VzaGlcIDsKK+mWoueojuWbnumBvyA8IGthbnplaWthaWhpXCA7Civnm7Lnm67nmoQgPCBtb3Vtb2t1dGVraVwgOwor56We6YCa5YqbIDwgamludHN1dXJpa2lcIDsKK+WFseWSjOS4u+e+qSA8IGt5b3V3YXNodWdpXCA7CivmgZDlprvnl4UgPCBreW91c2FpYnlvdVwgOwor6Zi/5aSa56aP6aKo6YKqIDwgb3RhZnVrdWthemVcIDsKK+S6iOmYsuaIpuS6iSA8IHlvYm91c2Vuc291XCA7CivphbjmgKflnJ/lo4wgPCBzYW5zZWlkb2pvdVwgOwor5b+g5a6f5bqmIDwgY2h1dWppdHN1ZG9cIDsKK+S/oeS7u+eKtiA8IHNoaW4nJ25pbmpvdVwgOwor5Lq66Lqr5L+d6K23IDwgamluc2hpbmhvZ29cIDsKK+S4reafsSA8IG5ha2FiYXNoaXJhXCA7CivmlrDlj4LogIUgPCBzaGluemFubW9ub1wgOwor5bm06YeR5L+d6Zm6IDwgbmVua2luaG9rZW5cIDsKK+aMh+WQkeiogOiqniA8IHNoaWtvdWdlbmdvXCA7Civlt6Hmn7vpg6jplbcgPCBqdW5zYWJ1Y2hvdVwgOwor55yf54qv5Lq6IDwgc2hpbmhhbicnbmluXCA7Civni7jniLogPCB0YW51a2lqaWppaVwgOwor5L+d6Ki85pyf6ZaTIDwgaG9zaG91a2lrYW5cIDsKK+S4jeazleebo+emgSA8IGZ1aG91a2Fua2luXCA7CivlvqHoi6blirTmp5ggPCBnb2t1cm91c2FtYVwgOwor6K2m5a+f54qsIDwga2Vpc2F0c3VrZW5cIDsKK+iHquayu+Wkp+iHoyA8IGppY2hpZGFpamluXCA7Civnq4vkvZPkuqTlt64gPCByaXR0YWlrb3VzYVwgOwor56uc6aCt6JuH5bC+IDwgcnl1dXRvdWRhYmlcIDsKK+WFhembu+acn+mWkyA8IGp1dWRlbmtpa2FuXCA7Civlj6LmmYLpm6ggPCBtdXJhc2hpZ3VyZVwgOwor5rW36aOf5rSeIDwga2Fpc2hva3Vkb3VcIDsKK+iomOaGtuWqkuS9kyA8IGtpb2t1YmFpdGFpXCA7Civlq6HlrqQgPCBjaGFrdXNoaXRzdVwgOwor5Y+C5YiX6ICFIDwgc2FucmV0c3VzaGFcIDsKK+mkiuitt+aVmeirrSA8IHlvdWdva3lvdXl1XCA7CivkurrmnKzkuLvnvqkgPCBqaW5wb25zaHVnaVwgOwor5rW35rSL5oqV5qOEIDwga2FpeW91dG91a2lcIDsKK+eUn+eJqeWcjyA8IHNlaWJ1dHN1a2VuXCA7CivkvpvntablnLAgPCBreW91a3l1dWNoaVwgOwor5bmy5riJ57ieIDwga2Fuc2hvdWppbWFcIDsKK+eLrOWJteeahCA8IGRva3Vzb3V0ZWtpXCA7CivkuI3pmo/mhI/pgYvli5UgPCBmdXp1aWl1bmRvdVwgOwor5ZKM5q2M5bGx55yMIDwgd2FrYXlhbWFrZW5cIDsKK+WkqumZvembu+azoiA8IHRhaXlvdWRlbnBhXCA7CivnkIbnp5HlpKflraYgPCByaWthZGFpZ2FrdVwgOwor5p+T6Imy5L2TIDwgc2Vuc2hva3V0YWlcIDsKK+W6p+mgremvqCA8IHphdG91a3VqaXJhXCA7Civov5HooZvluKvlm6MgPCBrb25vZXNoaWRhblwgOwor5LiA6KGj5biv5rC0IDwgaWNoaWl0YWlzdWlcIDsKK+izh+acrOS4u+e+qSA8IHNoaWhvbnNodWdpXCA7Civni5DnjL8gPCBraXRzdW5lemFydVwgOwor6Ieq55Sx57WQ5amaIDwgaml5dXVrZWtrb25cIDsKK+W/hemgiOenkeebriA8IGhpc3N1a2Ftb2t1XCA7Civov5Hku6PkuLvnvqkgPCBraW5kYWlzaHVnaVwgOwor5p2x5YyXIDwgaGlnYXNoaWtpdGFcIDsKK+WuiOitt+WkqeS9vyA8IHNodWdvdGVuc2hpXCA7Civml6XmnKzoqp7mloflrZcgPCBuaWhvbmdvbW9qaVwgOwor5L2c5qWt6YOo5LyaIDwgc2FneW91YnVrYWlcIDsKK+mDveW4guWGjeeUnyA8IHRvc2hpc2Fpc2VpXCA7Civnm67nmoToq5YgPCBtb2t1dGVraXJvblwgOwor55yB55Wl5pmCIDwgc2hvdXJ5YWt1amlcIDsKK+S4g+aciCA8IHNoaWNoaWdhdHN1XCA7CivlubznlJ/lmajlrpggPCB5b3VzZWlraWthblwgOwor5b6h55So57WE5ZCIIDwgZ295b3VrdW1pYWlcIDsKK+i7jeS6i+a8lOe/kiA8IGd1bmppZW5zaHV1XCA7Civnn7Pngq3mrrsgPCBzZWtpdGFuZ2FyYVwgOwor5YiG6KOC5oCnIDwgYnVucmV0c3VzZWlcIDsKK+efree4ruW9oiA8IHRhbnNodWt1a2VpXCA7CivkurrpgZPkuLvnvqkgPCBqaW5kb3VzaHVnaVwgOwor5YmN5Y+y5pmC5LujIDwgemVuc2hpamlkYWlcIDsKK+a1t+S4iuWwgemOliA8IGthaWpvdWZ1dXNhXCA7CivmnInogbfogIUgPCB5dXVzaG9rdXNoYVwgOwor5oSP5ZGz5rex6ZW3IDwgaW1pc2hpbmNob3VcIDsKK+S4gOaYlCA8IGhpdG9tdWthc2hpXCA7CivopqrlkozlipsgPCBzaGlud2FyeW9rdVwgOwor5Lqk6YCa6YGV5Y+NIDwga291dHN1dWloYW5cIDsKK+WFiOOAheaciCA8IHNlbnNlbmdldHN1XCA7Civlm5vljYHlhavmiYsgPCB5b25qdXVoYXR0ZVwgOwor5omL5be75a+/5Y+4IDwgdGVtYWtpenVzaGlcIDsKK+acieS9k+eJqSA8IHl1dXRhaWJ1dHN1XCA7CivmnbHlgbQgPCBoaWdhc2hpZ2F3YVwgOwor55+t57Wh55qEIDwgdGFucmFrdXRla2lcIDsKK+WFrOmWi+ism+W6pyA8IGtvdWthaWtvdXphXCA7CivniYfoqIDpmrvlj6UgPCBoZW5nZW5zZWtrdVwgOwor6a2F5Yqb55qEIDwgbWlyeW9rdXRla2lcIDsKK+WMluWtpuW8jyA8IGthZ2FrdXNoaWtpXCA7CivkuIDmkq4gPCBoaXRvdHN1bWFtaVwgOwor5aSq6Zm95pelIDwgdGFpeW91aml0c3VcIDsKK+mrmOmWoueojuWMliA8IGtvdWthbnplaWthXCA7CivpgYvpgIHkvJrnpL4gPCB1bnNvdWdhaXNoYVwgOwor5p2x5a6u5b6h5omAIDwgdG91Z3V1Z29zaG9cIDsKK+W7tua7nuWIqeaBryA8IGVudGFpcmlzb2t1XCA7Civph47nkIPnhrEgPCB5YWt5dXVuZXRzdVwgOwor54Gr54G96K2m5aCxIDwga2FzYWlrZWlob3VcIDsKK+mjvuS7mCA8IGthemFyaXRzdWtlXCA7Civnt4/mjIfmj67lrpggPCBzb3VzaGlraWthblwgOwor5pS+6YCB5pmC6ZaTIDwgaG91c291amlrYW5cIDsKK+eGseawl+eQgyA8IG5ldHN1a2lreXV1XCA7Civnqbrmg7PlipsgPCBrdXVzb3VyeW9rdVwgOwor5pyJ5a6z54Sh55uKIDwgeXV1Z2FpbXVla2lcIDsKK+mdmeWyoeecjCA8IHNoaXp1b2tha2VuXCA7CivlqabkurrllY/poYwgPCBmdWppbm1vbmRhaVwgOwor5pm06ICV6Zuo6KqtIDwgc2Vpa291dWRva3VcIDsKK+WPjemAhuS6uiA8IGhhbmd5YWt1bmluXCA7Civmn5Ppq6rliaQgPCBzZW5wYXRzdXphaVwgOwor5YWo6Lqr55eFIDwgemVuc2hpbmJ5b3VcIDsKK+S4jeaWh+aGsuazlSA8IGZ1YnVua2VucG91XCA7CivohbnoqbHooZMgPCBmdWt1d2FqdXRzdVwgOwor5LiA5a+45rOV5birIDwgaXNzdW5ib3VzaGlcIDsKK+WPr+iDveWLleipniA8IGthbm91ZG91c2hpXCA7CivmtYHph4/oqIggPCByeXV1cnlvdWtlaVwgOwor5a6M5YWo6ZuH55SoIDwga2FuemVua295b3VcIDsKK+e3mue5lOmdoiA8IHNlbnNoaWtpbWVuXCA7CivlrozntZDnt6ggPCBrYW5rZXRzdWhlblwgOwor5Ymv6by76IWU54KOIDwgZnVrdWJpa3V1ZW5cIDsKK+WtpueUn+iovCA8IGdha3VzZWlzaG91XCA7CivpgKDluaPlsYAgPCB6b3VoZWlreW9rdVwgOwor6Kqs5piO5pu4IDwgc2V0c3VtZWlzaG9cIDsKK+iHque1pueOhyA8IGppa3l1dXJpdHN1XCA7CivlpJrlhYPmlL7pgIEgPCB0YWdlbmhvdXNvdVwgOwor5omT54mp5birIDwgdWNoaW1vbm9zaGlcIDsKK+awl+aBr+WlhOWlhCA8IGtpc29rdWVuJydlblwgOwor5oOo5q666ICFIDwgemFuc2F0c3VzaGFcIDsKK+ejr+W3vuedgCA8IGlzb2dpbmNoYWt1XCA7Civph4jov6blpoLmnaUgPCBzaGFrYW55b3JhaVwgOwor5LqI57SE5ZCN57C/IDwgeW95YWt1bWVpYm9cIDsKK+iovOS6uuW4rSA8IHNob3VuaW5zZWtpXCA7Civlq6Hlh7ogPCBjaGFrdXNodXRzdVwgOwor5LiN6LK35ZCM55ufIDwgZnViYWlkb3VtZWlcIDsKK+S4i+W/gyA8IHNoaXRhZ29rb3JvXCA7Civoi6Xnmb3pq6ogPCB3YWthc2hpcmFnYVwgOwor6Z2e6LK35ZCM55ufIDwgaGliYWlkb3VtZWlcIDsKK+aVsOWtpueahCA8IHN1dWdha3V0ZWtpXCA7Civnm7Tlhobmn7EgPCBjaG9rdWVuY2h1dVwgOwor6Kqs5piO5paHIDwgc2V0c3VtZWlidW5cIDsKK+ebuOWvvuaVrOiqniA8IHNvdXRhaWtlaWdvXCA7CivntYzmuIjnibnljLogPCBrZWl6YWl0b2trdVwgOwor5Lu75oSP5Zuj5L2TIDwgbmluJydpZGFudGFpXCA7CivmsLTnlKPniakgPCBzdWlzYW5idXRzdVwgOwor5o6l5pW156e75YuVIDwgc2V0dGVraWlkb3VcIDsKK+aVmeWJh+acrCA8IGt5b3Vzb2t1Ym9uXCA7CivpsKXlr6HlraTni6wgPCBrYW5rYWtvZG9rdVwgOwor5LmZ5aWz5b+DIDwgb3RvbWVnb2tvcm9cIDsKK+ebuOWvvuWjsuiytyA8IGFpdGFpYmFpYmFpXCA7CivnhKHkurrlt6XloLQgPCBtdWppbmtvdWpvdVwgOwor5oim5Yud5Zu9IDwgc2Vuc2hvdWtva3VcIDsKK+WNl+WMl+acnSA8IG5hbmJva3VjaG91XCA7CivlpI/ooaMgPCBuYXRzdWdvcm9tb1wgOwor5bm75oOz5puyIDwgZ2Vuc291a3lva3VcIDsKK+S4jeaPm+e0meW5oyA8IGZ1a2Fuc2hpaGVpXCA7Civml4XoiIjooYwgPCB0YWJpa291Z3lvdVwgOwor55u45LmX5L2c55SoIDwgc291am91c2F5b3VcIDsKK+S6iOeul+S4jei2syA8IHlvc2FuZnVzb2t1XCA7CivosYbpm7vnkIMgPCBtYW1lZGVua3l1dVwgOwor6Kej6Kqs5pu4IDwga2Fpc2V0c3VzaG9cIDsKK+iWrOeQhuS9nOeUqCA8IHlha3VyaXNheW91XCA7Civnv7zmiYvnm64gPCB5b2t1c2h1bW9rdVwgOwor5ama57SE6ICFIDwga29uJyd5YWt1c2hhXCA7Civngrrmm7/nrqHnkIYgPCBrYXdhc2VrYW5yaVwgOwor6YOh5b255omAIDwgZ3VuJyd5YWt1c2hvXCA7Civnn6XorZjlsaQgPCBjaGlzaGlraXNvdVwgOwor5LqL5YmN5Y2U6K2wIDwgamlzZW5reW91Z2lcIDsKK+WOmumhlOeEoeaBpSA8IGtvdWdhbm11Y2hpXCA7Civmkp7mnKjprqsgPCBzaHVtb2t1emFtZVwgOwor56G86YW45pyrIDwgaG91c2FubWF0c3VcIDsKK+WuieWFqOijhee9riA8IGFuemVuc291Y2hpXCA7CivlppbooZPogIUgPCB5b3VqdXRzdXNoYVwgOwor5L2Z55m96aCBIDwgeW9oYWt1cGVlamlcIDsKK+e1seS4gOeahCA8IHRvdWl0c3V0ZWtpXCA7CivnqbrmsJfmhJ/mn5MgPCBrdXVraWthbnNlblwgOwor5rC06YGT5bel5LqLIDwgc3VpZG91a291amlcIDsKK+S4gOe0meWNiumKrSA8IGlzc2hpaGFuc2VuXCA7Civlj43lsITpgYvli5UgPCBoYW5zaGF1bmRvdVwgOwor6Lqr6Zqc6ICFIDwgc2hpbnNob3VzaGFcIDsKK+mjn+WNk+WhqSA8IHNob2t1dGFrdWVuXCA7CivlhavlrZfpq60gPCBoYWNoaWppaGlnZVwgOwor5b6p5rS756WtIDwgZnVra2F0c3VzYWlcIDsKK+S4u+eUo+eJqSA8IHNodXNhbmJ1dHN1XCA7Civnvo7ooZPnmoQgPCBiaWp1dHN1dGVraVwgOwor5aGp6aGe5rq25rayIDwgZW5ydWl5b3Vla2lcIDsKK+ePjeePvuixoSA8IGNoaW5nZW5zaG91XCA7CivkuInnqJzpj6EgPCBzYW5yeW91a3lvdVwgOwor5aSW5Lq66YOo6ZqKIDwgZ2FpamluYnV0YWlcIDsKK+aLnemHkeS4u+e+qSA8IGhhaWtpbnNodWdpXCA7CivlpKfpmbjmo5ogPCB0YWlyaWt1ZGFuYVwgOwor5q6/5qeY6Iq4IDwgdG9ub3NhbWFnZWlcIDsKK+a1t+mjn+W0liA8IGthaXNob2t1Z2FpXCA7CivlhYPnpoToopYgPCBnZW5yb2t1c29kZVwgOwor55Ww5L2T5ZCM5b+DIDwgaXRhaWRvdXNoaW5cIDsKK+S5l+aVsOWKueaenCA8IGpvdXN1dWtvdWthXCA7Civlhajnm5vmmYLku6MgPCB6ZW5zZWlqaWRhaVwgOwor5paH5pWZ5pePIDwgYnVua3lvdXpva3VcIDsKK+mdouWQkeS4jeiDjCA8IG1lbmtvdWZ1aGFpXCA7CivlubPlkozntq3mjIHou40gPCBoZWl3YWlqaWd1blwgOwor5rm/5bqm6KiIIDwgc2hpdHN1ZG9rZWlcIDsKK+WPrOmbhuiAhSA8IHNob3VzaHV1c2hhXCA7CivnqbrnkIbnqbroq5YgPCBrdXVyaWt1dXJvblwgOwor5YWr5qW15ouzIDwgaGFra3lva3VrZW5cIDsKK+S/oeS7sOW/gyA8IHNoaW5rb3VzaGluXCA7CivkurrkuIDlgI0gPCBoaXRvaWNoaWJhaVwgOwor5ZCI6KGG5Zu9IDwgZ2Fzc2h1dWtva3VcIDsKK+apn+mWouWupCA8IGtpa2Fuc2hpdHN1XCA7CivpnZ7luLjpmo7mrrUgPCBoaWpvdWthaWRhblwgOwor5YK355eN6LuN5Lq6IDwgc2hvdWlndW5qaW5cIDsKK+WGt+WNtOa2siA8IHJlaWt5YWt1ZWtpXCA7CivmvIHnjbLpq5ggPCBneW9rYWt1ZGFrYVwgOwor5YWs55So54mpIDwga291eW91YnV0c3VcIDsKK+WNmOeZuumKgyA8IHRhbnBhdHN1anV1XCA7CivkuI3ll5wgPCBidXRhc2hpbmFtaVwgOwor5pyI6LOm6LKp5aOyIDwgZ2VwcHVoYW5iYWlcIDsKK+S4h+S4luS4gOezuyA8IGJhbnNlaWlra2VpXCA7CivnrKzkuozpg6jplbcgPCBkYWluaWJ1Y2hvdVwgOwor6ZuA6JyCIDwgc3V6dW1lYmFjaGlcIDsKK+ihjOWEgOS9nOazlSA8IGd5b3VnaXNhaG91XCA7Civph43liqDnrpfnqI4gPCBqdXVrYXNhbnplaVwgOwor5Ya35Y205rC0IDwgcmVpa3lha3VzdWlcIDsKK+eMrueri+ihqCA8IGtvbmRhdGVoeW91XCA7CivkuIDlv4PkuI3kubEgPCBpc3NoaW5mdXJhblwgOwor6LuN5LqL6KOB5YikIDwgZ3VuamlzYWliYW5cIDsKK+iLpeiNieiJsiA8IHdha2FrdXNhaXJvXCA7CivnhafmmI7lmajlhbcgPCBzaG91bWVpa2lndVwgOwor5LiJ5Zu95LiAIDwgc2FuZ29rdWljaGlcIDsKK+edo+S/g+eKtiA8IHRva3Vzb2t1am91XCA7CivlsY3pmYDmnpfnjosgPCBzaGlkYXJpbicnb3VcIDsKK+S7ruWPl+WPliA8IGthcml1a2V0b3JpXCA7CivpgY7ljrvlrozkuoYgPCBrYWtva2FucnlvdVwgOwor5oim5b6M5qyn5beeIDwgc2VuZ29vdXNodXVcIDsKK+iii+Wwj+i3ryA8IGZ1a3Vyb2tvdWppXCA7Civorablr5/lrpggPCBrZWlzYXRzdWthblwgOwor6aaW6ISz5Lya6K2wIDwgc2h1bm91a2FpZ2lcIDsKK+WutuW6reaWmeeQhiA8IGthdGVpcnlvdXJpXCA7Civml6XmnKzpioDooYwgPCBuaWhvbmdpbmtvdVwgOwor6Ieq54S25b6LIDwgc2hpemVucml0c3VcIDsKK+iBt+WLmee1piA8IHNob2t1bXVreXV1XCA7CivpgaDkuqTov5HmlLsgPCBlbmtvdWtpbmtvdVwgOwor5peL5Zue6YGL5YuVIDwgc2Vua2FpdW5kb3VcIDsKK+eZgumkiuS4rSA8IHJ5b3V5b3VjaHV1XCA7CivlkIjmiJDniakgPCBnb3VzZWlidXRzdVwgOwor5biw5Zu95a2Q5aWzIDwga2lrb2t1c2hpam9cIDsKK+S4ieihjOWNiiA8IG1pa3VkYXJpaGFuXCA7CivooYzmlL/lraYgPCBneW91c2VpZ2FrdVwgOwor5a6f6KGM5YqbIDwgamlra291cnlva3VcIDsKK+mVt+eBq+mJoiA8IG5hZ2FoaWJhY2hpXCA7Civpm4zpm4Tmt5jmsbAgPCBzaGl5dXV0b3V0YVwgOwor5rW36aOf5Y+wIDwga2Fpc2hva3VkYWlcIDsKK+mDteS+v+eJqSA8IHl1dWJpbmJ1dHN1XCA7CivpioDmnKzkvY3liLYgPCBnaW5ob24nJ2lzZWlcIDsKK+epuuawl+aelSA8IGt1dWtpbWFrdXJhXCA7Civlpajlrabph5EgPCBzaG91Z2FrdWtpblwgOwor57WE6aCtIDwga3VtaWdhc2hpcmFcIDsKK+iHqualreiHquW+lyA8IGppZ291aml0b2t1XCA7CivlhaznlJ/mtLsgPCBrb3VzZWlrYXRzdVwgOwor6YGu6JS954mpIDwgc2hhaGVpYnV0c3VcIDsKK+S4u+agvOijnOiqniA8IHNodWtha3Vob2dvXCA7CivntbnnuZTniakgPCBraW51b3JpbW9ub1wgOwor6Iq46KGT6KuWIDwgZ2VpanV0c3Vyb25cIDsKK+WCmOW9ouWZqOWumCA8IHNhbmtlaWtpa2FuXCA7CivolqzlirnniakgPCB5YWtrb3VidXRzdVwgOwor57eR6JmrIDwgbWlkb3JpbXVzaGlcIDsKK+mbu+WMluijveWTgSA8IGRlbmthc2VpaGluXCA7Civluq3ku5XkuosgPCBuaXdhc2hpZ290b1wgOwor6LOH55Sj5L6h5YCkIDwgc2hpc2Fua2FjaGlcIDsKK+aCquizquWMliA8IGFrdXNoaXRzdWthXCA7CivkuK3lpK7nq7bppqwgPCBjaHV1b3VrZWliYVwgOwor55+l6K2Y5Lq6IDwgY2hpc2hpa2lqaW5cIDsKK+i1pOWtl+iyoeaUvyA8IGFrYWppemFpc2VpXCA7Civnmb3lhoXpmpwgPCBoYWt1bmFpc2hvdVwgOwor5pS/5rK75Lqh5ZG9IDwgc2Vpamlib3VtZWlcIDsKK+S6lOWNgeW5tOelrSA8IGdvanV1bmVuc2FpXCA7Civpgbrml4/lubTph5EgPCBpem9rdW5lbmtpblwgOwor5Lq65bel5qCE6aSKIDwgamlua291ZWl5b3VcIDsKK+aTrOWPpOWFuOeahCA8IGdpa290ZW50ZWtpXCA7Civmpb3lpKnnmoQgPCByYWt1dGVudGVraVwgOwor6Zu75rCX5Lya56S+IDwgZGVua2lnYWlzaGFcIDsKK+awl+maj+awl+WEmCA8IGtpenVpa2ltYW1hXCA7CivliKXli5jlrpogPCBiZXRzdWthbmpvdVwgOwor6YeR5p2T5a2QIDwga2FuYWpha3VzaGlcIDsKK+mVt+Wkp+aBryA8IGNob3V0YWlzb2t1XCA7CivogbTlj5bmlpkgPCBjaG91c2h1cnlvdVwgOwor54Sh5Y+N5YuV6YqDIDwgbXVoYW5kb3VqdXVcIDsKK+mBoOW/g+WIhumboiA8IGVuc2hpbmJ1bnJpXCA7CivloLTlpJbppqzliLggPCBqb3VnYWliYWtlblwgOwor6Z2S5bm05pmC5LujIDwgc2VpbmVuamlkYWlcIDsKK+mguOmdmeiEiCA8IGtlaWpvdW15YWt1XCA7CivmvIHnjbLph48gPCBneW9rYWt1cnlvdVwgOwor6Kqe5a2m5YqbIDwgZ29nYWt1cnlva3VcIDsKK+a6luWCmeWupCA8IGp1bmJpc2hpdHN1XCA7CivkuK3lubTlopcgPCBjaHV1ZG9zaGltYVwgOwor6Ieq55Sx5ZWP6aGMIDwgaml5dXVtb25kYWlcIDsKK+a8q+eUu+mbkeiqjCA8IG1hbmdhemFzc2hpXCA7CivkupzpiZvkuK3mr5IgPCBhZW5jaHV1ZG9rdVwgOwor6IOM562L5YqbIDwgaGFpa2lucnlva3VcIDsKK+aJgOacieeJqSA8IHNob3l1dWJ1dHN1XCA7CivnpZblhYjkvJ3mnaUgPCBzb3NlbmRlbnJhaVwgOwor55Sj5Zyf56WeIDwgdWJ1c3VuYWdhbWlcIDsKK+mbquekqyA8IHl1a2l0c3VidXRlXCA7CivmmpfotaToibIgPCBhbnNla2lzaG9rdVwgOwor5LuV56uL54mpIDwgc2hpdGF0ZW1vbm9cIDsKK+S4gOWFmuaUr+mFjSA8IGl0dG91c2hpaGFpXCA7Civml5fmqJkgPCBoYXRhamlydXNoaVwgOwor5aSi54++IDwgeXVtZXV0c3V0c3VcIDsKK+S4g+WbnuW/jCA8IHNoaWNoaWthaWtpXCA7CivkuLvoprPkuLvnvqkgPCBzaHVrYW5zaHVnaVwgOwor5rq26Kej54axIDwgeW91a2FpbmV0c3VcIDsKK+exs+WNgeeykiA8IGtvbWVqdXVyeXV1XCA7CivlkbzlkLjlmajns7sgPCBrb2t5dXVraWtlaVwgOwor54m55rOo5ZOBIDwgdG9rdWNodXVoaW5cIDsKK+mbm+elrSA8IGhpbmFtYXRzdXJpXCA7Civngrrmm7/mipXmqZ8gPCBrYXdhc2V0b3VraVwgOwor5LiA55+l5Y2K6KejIDwgaXRjaGloYW5rYWlcIDsKK+S4jeWumuWGoOipniA8IGZ1dGVpa2Fuc2hpXCA7Civku6PorbDmlL/kvZMgPCBkYWlnaXNlaXRhaVwgOwor5bmz5ZKM5pS75YuiIDwgaGVpd2Frb3VzZWlcIDsKK+S9juS+oeagvOWMliA8IHRlaWtha2FrdWthXCA7Civlj6TmlrDogZ4gPCBmdXJ1c2hpbmJ1blwgOwor6YWN6YGU5Lq6IDwgaGFpdGF0c3VuaW5cIDsKK+S6rOS6uuW9oiA8IGt5b3VuaW5neW91XCA7CivogpjmjpvmpIXlrZAgPCBoaWppa2FrZWlzdVwgOwor5YWs5YuZ54G95a6zIDwga291bXVzYWlnYWlcIDsKK+aZr+awl+W+queSsCA8IGtlaWtpanVua2FuXCA7CivplqLkv4Lms5Xopo8gPCBrYW5rZWlob3VraVwgOwor6LOA6Kme5Lqk5o+bIDwgZ2FzaGlrb3VrYW5cIDsKK+iAleWcsOaVtOeQhiA8IGtvdWNoaXNlaXJpXCA7CivlrozntZDmlocgPCBrYW5rZXRzdWJ1blwgOwor6KGo6KOP5LiA5L2TIDwgaHlvdXJpaXR0YWlcIDsKK+WPjeWvvuiJsiA8IGhhbnRhaXNob2t1XCA7CivllYblk4HlraYgPCBzaG91aGluZ2FrdVwgOwor5aW06Zq36Kej5pS+IDwgZG9yZWlrYWlob3VcIDsKK+WFpeWwhOinkiA8IG55dXVzaGFrYWt1XCA7CivmtojpmLLluoEgPCBzaG91Ym91Y2hvdVwgOwor6Zi/5aSa56aP6LGGIDwgb3RhZnVrdW1hbWVcIDsKK+Wlh+m6l+aJgCA8IGtpcmVpZG9rb3JvXCA7CivlpbPml7EgPCBvbicnbmFoaWRlcmlcIDsKK+WxseWQueiJsiA8IHlhbWFidWtpaXJvXCA7CivkvIHmpa3mlbTlgpkgPCBraWd5b3VzZWliaVwgOwor6LuN5LqL6KGM5YuVIDwgZ3Vuamlrb3Vkb3VcIDsKK+aJk+aSg+eOhyA8IGRhZ2VraXJpdHN1XCA7CivlnLDmlrnoh6rmsrsgPCBjaGlob3VqaWNoaVwgOwor6KuL5rGC6aGNIDwgc2Vpa3l1dWdha3VcIDsKK+eZvuW5tOelrSA8IGh5YWt1bmVuc2FpXCA7CivkuJbkv5fkuLvnvqkgPCBzZXpva3VzaHVnaVwgOwor6auY54Kt57Sg6Yu8IDwga291dGFuc29rb3VcIDsKK+aKkeeVmeiAhSA8IHlva3VyeXV1c2hhXCA7Civpo5/pgKPmmJ8gPCBzaG9rdXJlbnNlaVwgOwor6JC95pyt5YCkIDwgcmFrdXNhdHN1bmVcIDsKK+iHqueEtuWKmyA8IHNoaXplbnJ5b2t1XCA7CivmnInmqZ/ogqXmlpkgPCB5dXVraWhpcnlvdVwgOwor56eY5pu45a6kIDwgaGlzaG9zaGl0c3VcIDsKK+WNg+eni+alvSA8IHNlbnNodXVyYWt1XCA7Civmr5TkvovphY3liIYgPCBoaXJlaWhhaWJ1blwgOwor5o6i56m25b+DIDwgdGFua3l1dXNoaW5cIDsKK+WPjeWvvumBi+WLlSA8IGhhbnRhaXVuZG91XCA7Civmt7vku5jmm7jpoZ4gPCB0ZW5wdXNob3J1aVwgOwor5oGL5oSb6YGK5oivIDwgcmVuJydhaXl1dWdpXCA7Civlia/npL7plbcgPCBmdWt1c2hhY2hvdVwgOwor5oqV5bCE5Y6f55CGIDwgdG91c2hhZ2VucmlcIDsKK+Wkp+iogOWjruiqniA8IHRhaWdlbnNvdWdvXCA7CivmnIjkvovkvJogPCBnZXRzdXJlaWthaVwgOwor5pWw5pel6ZaTIDwgc3V1aml0c3VrYW5cIDsKK+WRveWQjeW8jyA8IG1laW1laXNoaWtpXCA7CivmjIflsI7lipsgPCBzaGlkb3VyeW9rdVwgOwor5oSf6Kaa55qEIDwga2Fua2FrdXRla2lcIDsKK+mHkeacrOS9jeWItiA8IGtpbmhvbicnaXNlaVwgOwor6YCg6Kqe5oiQ5YiGIDwgem91Z29zZWlidW5cIDsKK+WGjemWi+eZuiA8IHNhaWthaWhhdHN1XCA7CivlhaXlrabpm6MgPCBueXV1Z2FrdW5hblwgOwor5YiG5oqY5a2mIDwgYnVuc2VraWdha3VcIDsKK+eZvuenkei+nuWFuCA8IGh5YWtrYWppdGVuXCA7Civoi6XovKnogIUgPCBqYWt1aGFpbW9ub1wgOwor5LiH5Luj5LiN5piTIDwgYmFuZGFpZnVla2lcIDsKK+W5heWkieiqvyA8IGhhYmFoZW5jaG91XCA7CivljbHpmbrop5LluqYgPCBraWtlbmtha3Vkb1wgOwor5YyW5a2m5YW15ZmoIDwga2FnYWt1aGVpa2lcIDsKK+Wls+W/gyA8IG9uJyduYWdva29yb1wgOwor5bCP5oOR5pifIDwgc2hvdXdha3VzZWlcIDsKK+a8ouWtl+WItumZkCA8IGthbmppc2VpZ2VuXCA7CivlubTlip/liLbluqYgPCBuZW5rb3VzZWlkb1wgOwor5Lq654mp5YOPIDwgamluYnV0c3V6b3VcIDsKK+i6gemsseeXhSA8IHNvdXV0c3VieW91XCA7Civnm7TovLjlhaUgPCBjaG9rdXl1bnl1dVwgOwor5L+D6YCy5YmkIDwgc29rdXNoaW56YWlcIDsKK+a1t+W6leeBq+WxsSA8IGthaXRlaWthemFuXCA7CivpmpTpnbTmjrvnl5IgPCBrYWtrYXNvdXlvdVwgOwor5o+h6a6oIDwgbmlnaXJpenVzaGlcIDsKK+m8u+WHuuihgCA8IGJpc2h1a2tldHN1XCA7CivpnZnlv4MgPCBzaGl6dWdva29yb1wgOwor6Z2e5oim6KuW6ICFIDwgaGlzZW5yb25zaGFcIDsKK+aApemAsuWFmiA8IGt5dXVzaGludG91XCA7CivkuIfkuJbkuI3mmJMgPCBiYW5zZWlmdWVraVwgOwor5YaN55Sf57mK57atIDwgc2Fpc2Vpc2VuJydpXCA7CivpgYvou6Lns7vntbEgPCB1bnRlbmtlaXRvdVwgOwor5Lu75oSP5ZCM6KGMIDwgbmluJydpZG91a291XCA7CivpmqPnlLogPCB0b25hcmltYWNoaVwgOwor6Ieo5pmC5Zu95LyaIDwgcmluamlrb2trYWlcIDsKK+ippumok+acn+mWkyA8IHNoaWtlbmtpa2FuXCA7Civph5HlqZrlvI8gPCBraW5rb25zaGlraVwgOwor5rqA6Imm6aO+IDwgbWFua2Fuc2hva3VcIDsKK+W5tOWKn+WKoOS/uCA8IG5lbmtvdWthaG91XCA7Civlv5zmj7Tlm6PplbcgPCBvdWVuZGFuY2hvdVwgOwor5aSn5pmmIDwgb290c3Vnb21vcmlcIDsKK+WCjei/t+aDkSA8IGhhdGFtZWl3YWt1XCA7Civou43ljLvnt4/nm6MgPCBndW4nJ2lzb3VrYW5cIDsKK+aYvOmjn+aZgiA8IGNodXVzaG9rdWppXCA7CivoirjooZPnpa0gPCBnZWlqdXRzdXNhaVwgOwor5oWI5ZaE5Zuj5L2TIDwgaml6ZW5kYW50YWlcIDsKK+iHque/kuaZgumWkyA8IGppc2h1dWppa2FuXCA7Civmj6Hpo68gPCBuaWdpcmltZXNoaVwgOwor5Zu95a626KOc5YSfIDwga29ra2Fob3Nob3VcIDsKK+ebm+iAheW/heihsCA8IHNlaWphaGlzc3VpXCA7CivlrabnlJ/mnI0gPCBnYWt1c2VpZnVrdVwgOwor5Lq65paH5Li7576pIDwgamluYnVuc2h1Z2lcIDsKK+mbu+ipseeVquWPtyA8IGRlbndhYmFuZ291XCA7CivlsLHmpa3lnLAgPCBzaHV1Z3lvdWNoaVwgOwor6KGo56S654mpIDwgaHlvdWppYnV0c3VcIDsKK+i7ouWFpeeUnyA8IHRlbicnbnl1dXNlaVwgOwor55CG6KuW5L2T57O7IDwgcmlyb250YWlrZWlcIDsKK+WFpeWtpumHkSA8IG55dXVnYWt1a2luXCA7Civml6XmnKzmtbfmup0gPCBuaWhvbmthaWtvdVwgOwor57WM5bi45Yip55uKIDwga2Vpam91cmlla2lcIDsKK+mdqeaWsOezuyA8IGtha3VzaGlua2VpXCA7CivlvJXosqzovp7ku7sgPCBpbnNla2lqaW5pblwgOwor6Zm95qW157eaIDwgeW91a3lva3VzZW5cIDsKK+WHuua8lOiAhSA8IHNodXRzdWVuc2hhXCA7CivkvJrorbDlrqQgPCBrYWlnaXNoaXRzdVwgOwor5Yem5aWz6Iiq5rW3IDwgc2hvam9rb3VrYWlcIDsKK+mZuOmBi+WxgCA8IHJpa3V1bmt5b2t1XCA7Civov73lvrTph5EgPCB0c3VpY2hvdWtpblwgOwor5q666I+M5YqbIDwgc2Fra2lucnlva3VcIDsKK+aKleWuv+iAhSA8IHRvdXNodWt1c2hhXCA7CivmlrDluoHoiI4gPCBzaGluY2hvdXNoYVwgOwor5Ya35Y205YmkIDwgcmVpa3lha3V6YWlcIDsKK+S4gOi7kuS4gOi7kiA8IGlra2VuJydpa2tlblwgOwor6YGK6Kan5a6iIDwgeXV1cmFua3lha3VcIDsKK+m7hOmHkeiZqyA8IGtvZ2FuZW11c2hpXCA7CivllY/nrZTnhKHnlKggPCBtb25kb3VtdXlvdVwgOwor6YGL5ZG96KuW6ICFIDwgdW5tZWlyb25zaGFcIDsKK+m7kuatu+eXhSA8IGtva3VzaGlieW91XCA7Civpg7Xkvr/lsYAgPCB5dXViaW5reW9rdVwgOwor6I+c56iu5qKF6ZuoIDwgbmF0YW5lZHp1eXVcIDsKK+iqsuWkluaOiOalrSA8IGthZ2FpanVneW91XCA7Civlj43lsITnjocgPCBoYW5zaGFyaXRzdVwgOwor6Zuj5rCR5biw6YKEIDwgbmFubWlua2lrYW5cIDsKK+WBtuWDj+egtOWjiiA8IGd1dXpvdWhha2FpXCA7CivmlZnnmofluoEgPCBreW91a291Y2hvdVwgOwor6Iul6bOl5Li8IDwgd2FrYWRvcmlkb25cIDsKK+aMh+ekuuijhee9riA8IHNoaWppc291Y2hpXCA7CivlronlhajlnLDluK8gPCBhbnplbmNoaXRhaVwgOwor6Ieq5bex6KSH6KO9IDwgamlrb2Z1a3VzZWlcIDsKK+e+juihk+WVhiA8IGJpanV0c3VzaG91XCA7Civku5bkurrooYzlhIAgPCB0YW5pbmd5b3VnaVwgOwor5Yik5a6Y6LSU5bGTIDwgaG91Z2FuYmlpa2lcIDsKK+a7tOWumumHjyA8IHRla2l0ZWlyeW91XCA7CivlnKfmkL7nqbrmsJcgPCBhc3Nha3VrdXVraVwgOwor56We5a2m6ICFIDwgc2hpbmdha3VzaGFcIDsKK+Wvhui8uOWFpSA8IG1pdHN1eXVueXV1XCA7CivlgaXlurfnrqHnkIYgPCBrZW5rb3VrYW5yaVwgOwor6LiP5YiH55WqIDwgZnVtaWtpcmliYW5cIDsKK+ippumok+mjm+ihjCA8IHNoaWtlbmhpa291XCA7CivnlJ/nlKPpgY7libAgPCBzZWlzYW5rYWpvdVwgOwor5YmN5aWP5puyIDwgemVuc291a3lva3VcIDsKK+iAs+m8u+WSveWWieenkSA8IGppYmlpbmtvdWthXCA7CivnlJ/nkIbkvJHmmocgPCBzZWlyaWt5dXVrYVwgOwor5Lqk6Zqb5aC06KOPIDwga291c2Fpam91cmlcIDsKK+ijuOS4gOiyqyA8IGhhZGFrYWlra2FuXCA7CivlpY/ps7Tmm7IgPCBzb3VtZWlreW9rdVwgOwor6LGK6IKl5pys57eaIDwgaG91aGlob25zZW5cIDsKK+engeeUn+a0uyA8IHNoaXNlaWthdHN1XCA7CivntKvoibIgPCBtdXJhc2FraWlyb1wgOwor5Yik5pat6KaP5rqWIDwgaGFuZGFua2lqdW5cIDsKK+eUsumJhOiJpiA8IGtvdXRldHN1a2FuXCA7Civlv4Poh5Pnl4UgPCBzaGluem91YnlvdVwgOwor6Yys6YeR6KGTIDwgcmVua2luanV0c3VcIDsKK+m7kuWGhemanCA8IGtva3VuYWlzaG91XCA7CivmnInorZjogIUgPCB5dXVzaGlraXNoYVwgOwor5bGx5rSl5rOiIDwgeWFtYXRzdW5hbWlcIDsKK+iiluePjeacrCA8IHNodXVjaGluYm9uXCA7CivlpKnos4foi7HpgoEgPCB0ZW5zaGllaW1haVwgOwor5YWI552A6aCGIDwgc2VuY2hha3VqdW5cIDsKK+aKteaKl+mBi+WLlSA8IHRlaWtvdXVuZG91XCA7Civpg7Xkvr/liIfmiYsgPCB5dXViaW5raXR0ZVwgOwor5a6f5ZCN6KmeIDwgaml0c3VtZWlzaGlcIDsKK+mYsumjn+WJpCA8IGJvdXNob2t1emFpXCA7Civlr77np7Dou7ggPCB0YWlzaG91amlrdVwgOwor6L+R5pel54K5IDwga2luaml0c3V0ZW5cIDsKK+eUsOWckumDveW4giA8IGRlbicnZW50b3NoaVwgOwor6KGj5paZ5ZOB5bqXIDwgaXJ5b3VoaW50ZW5cIDsKK+S6jOmDqOWQiOWUsSA8IG5pYnVnYXNzaG91XCA7Civol43mmbbnn7MgPCByYW5zaG91c2VraVwgOwor5aWz5a2Q5L6bIDwgb24nJ25ha29kb21vXCA7CivmsqHpo5/lrZAgPCBtb3NzaG9rdXNoaVwgOwor6Zu75a2Q6aCt6ISzIDwgZGVuc2hpenVub3VcIDsKK+S/rue5leS4rSA8IHNodXV6ZW5jaHV1XCA7CivlibLos6bosqnlo7IgPCBrYXBwdWhhbmJhaVwgOwor6ICz5a2m5ZWPIDwgbWltaWdha3Vtb25cIDsKK+mqqOiRo+i2o+WRsyA8IGtvdHRvdXNodW1pXCA7Civou43lgpnliLbpmZAgPCBndW5iaXNlaWdlblwgOwor6ZW357KS57GzIDwgY2hvdXJ5dXVtYWlcIDsKK+mBi+WLleS4jei2syA8IHVuZG91YnVzb2t1XCA7CivliLbpmZDmvKLlrZcgPCBzZWlnZW5rYW5qaVwgOwor56We5L+h5b+DIDwga2FtaXNoaW5qaW5cIDsKK+eEoeWPjeWLleegsiA8IG11aGFuZG91aG91XCA7CivlpajlrabnlJ8gPCBzaG91Z2FrdXNlaVwgOwor5Y6f5Zug5LiN5piOIDwgZ2VuJydpbmZ1bWVpXCA7CivoprPlhbXlvI8gPCBrYW5wZWlzaGlraVwgOwor6Iul5bm05Z6LIDwgamFrdW5lbmdhdGFcIDsKK+i7veiHquWLlei7iiA8IGtlaWppZG91c2hhXCA7CivpvKDmtbfosZogPCBuZXp1bWlpcnVrYVwgOwor54uQ55aR6YCh5behIDwga29naXNodW5qdW5cIDsKK+mbhuepjeWgtCA8IHNodXVzZWtpam91XCA7CivmjIfkurrlvaIgPCB5dWJpbmluZ3lvdVwgOwor56iL5bqm5ZWP6aGMIDwgdGVpZG9tb25kYWlcIDsKK+imj+WumuaJk+W4rSA8IGtpdGVpZGFzZWtpXCA7Civmm7LoirjluKsgPCBreW9rdWdlaXNoaVwgOwor6bqm57KS6IWrIDwgYmFrdXJ5dXVzaHVcIDsKK+ebrueahOWcsCA8IG1va3V0ZWtpY2hpXCA7CivpoqjntIDntIrkubEgPCBmdXVraWJpbnJhblwgOwor5a2m55Sf5a+uIDwgZ2FrdXNlaXJ5b3VcIDsKK+WQiOaIkOWKmyA8IGdvdXNlaXJ5b2t1XCA7CivluILlj4LkuovkvJogPCBzaGlzYW5qaWthaVwgOwor6KiY5oa26KOF572uIDwga2lva3Vzb3VjaGlcIDsKK+aPkOS+m+WBtCA8IHRlaWt5b3VnYXdhXCA7Civpm6rluocgPCB5dWtpYmlzYXNoaVwgOwor6Zu75rCX5Lyd5bCOIDwgZGVua2lkZW5kb3VcIDsKK+a1t+Wklua0vuWFtSA8IGthaWdhaWhhaGVpXCA7CivlpKnos6bkurrmqKkgPCB0ZW5wdWppbmtlblwgOwor5oe45Z6C6YGL5YuVIDwga2Vuc3VpdW5kb3VcIDsKK+elnuenmOS4u+e+qSA8IHNoaW5waXNodWdpXCA7CivkuZfpmY3lrqIgPCBqb3Vrb3VreWFrdVwgOwor5YaF6Kaq546LIDwgbmFpc2hpbicnbm91XCA7CivpgaDmha7kvJrph4ggPCBlbnJ5b2VzaGFrdVwgOwor57Oe5YuJ5by3IDwga3Vzb2Jlbmt5b3VcIDsKK+aal+WPt+aJi+azlSA8IGFuZ291c2h1aG91XCA7Civnn6Lntpnml6kgPCB5YXRzdWdpYmF5YVwgOwor6ZW36KmxIDwgbmFnYWJhbmFzaGlcIDsKK+mBi+i8uOWkp+iHoyA8IHVuJyd5dWRhaWppblwgOwor6Z2e6KuW55CG55qEIDwgaGlyb25yaXRla2lcIDsKK+WkieabsueCuSA8IGhlbmt5b2t1dGVuXCA7Civlj7Pnv7zlm6PkvZMgPCB1eW9rdWRhbnRhaVwgOwor6ZW35Zub6KeSIDwgbmFnYXNoaWtha3VcIDsKK+imquWIh+awlyA8IHNoaW5zZXRzdWdpXCA7Civkv53lgaXooZvnlJ8gPCBob2tlbicnZWlzZWlcIDsKK+ebl+WTgeaVheiytyA8IHRvdWhpbmtvYmFpXCA7Civlia/npZ7ntYwgPCBmdWt1c2hpbmtlaVwgOwor6JGJ57eR5L2TIDwgeW91cnlva3V0YWlcIDsKK+mdmeatoui7jOmBkyA8IHNlaXNoaWtpZG91XCA7Civmhbbmh4nnvqnlob4gPCBrZWlvdWdpanVrdVwgOwor5b+r5YiA5Lmx6bq7IDwga2FpdG91cmFubWFcIDsKK+iPiuS6uuW9oiA8IGtpa3VuaW5neW91XCA7CivnjqnlvITniakgPCBnYW5yb3VidXRzdVwgOwor5Y+j6KiA6JGJIDwga3VjaGlrb3RvYmFcIDsKK+mbhuWQiOeahCA8IHNodXVnb3V0ZWtpXCA7Civoh7Pov5Hot53pm6IgPCBzaGlraW5reW9yaVwgOwor5Ymy5b2T6aGNIDwgd2FyaWF0ZWdha3VcIDsKK+W4uOe/kueahCA8IGpvdXNodXV0ZWtpXCA7CivmkI3lrrPkv53pmbogPCBzb25nYWlob2tlblwgOwor5qeL5oiQ6KaB57SgIDwga291c2VpeW91c29cIDsKK+aEn+Wcp+e0mSA8IGthbicnYXRzdXNoaVwgOwor5Y2U6K2w5LqL6aCFIDwga3lvdWdpamlrb3VcIDsKK+e0heeMv+WtkCA8IGJlbmltYXNoaWtvXCA7CivlvL7mgKfnjocgPCBkYW5zZWlyaXRzdVwgOwor6Iie5Y+w5L+z5YSqIDwgYnV0YWloYWl5dXVcIDsKK+WNseapn+S4gOmrqiA8IGtpa2lpcHBhdHN1XCA7CivljLvlrabpm5HoqowgPCBpZ2FrdXphc3NoaVwgOwor5reh57SF6ImyIDwgdGFua291c2hva3VcIDsKK+afs+ihjOadjiA8IHlhbmFnaWdvdXJpXCA7CivniankvqHmsLTmupYgPCBidWtrYXN1aWp1blwgOwor6LWk5Y2B5a2X6ZmEIDwgc2VraWp1dWppZnVcIDsKK+aJtumkiuWutuaXjyA8IGZ1eW91a2F6b2t1XCA7CivmtYHli5XnmoQgPCByeXV1ZG91dGVraVwgOwor55Kw5aKD5bqBIDwga2Fua3lvdWNob3VcIDsKK+eri+aGsuaUv+ayuyA8IHJpa2tlbnNlaWppXCA7CivmmIbomavlraYgPCBrb25jaHV1Z2FrdVwgOwor5bi45pel6aCDIDwgdHN1bmVoaWdvcm9cIDsKK+avlOe/vOWhmiA8IGhpeW9rdWR6dWthXCA7Civmt7fmiJDniakgPCBrb25zZWlidXRzdVwgOwor5Lq65bel6IeT5ZmoIDwgamlua291em91a2lcIDsKK+a6tuino+WKmyA8IHlvdWthaXJ5b2t1XCA7CivntJnnpKsgPCBrYW1pdHN1YnV0ZVwgOwor5pWZ6IKy6ZW3IDwga3lvdWlrdWNob3VcIDsKK+eEvOWNtOeCiSA8IHNob3VreWFrdXJvXCA7Civnpa3mlL/kuIDoh7QgPCBzYWlzZWlpdGNoaVwgOwor55m95qqA5rK5IDwgYnlha3VkYW4nJ3l1XCA7Civnib3lvJXlipsgPCBrZW4nJ2lucnlva3VcIDsKK+ims+WFieWxgCA8IGthbmtvdWt5b2t1XCA7CivkuI3oqIDlrp/ooYwgPCBmdWdlbmppa2tvdVwgOwor5YWl5a2m6ICFIDwgbnl1dWdha3VzaGFcIDsKK+WbveWtpuiAhSA8IGtva3VnYWt1c2hhXCA7Civku5Xkuovpg6jlsYsgPCBzaGlnb3RvYmV5YVwgOwor5rS75YuV6KqMIDwga2F0c3Vkb3VzaGlcIDsKK+WHuuWcn+WTgSA8IHNodXRzdWRvaGluXCA7CivntJnooajntJkgPCBrYW1pYnlvdXNoaVwgOwor6Kaz5YWJ5a6iIDwga2Fua291a3lha3VcIDsKK+aIkOS6uuaYoOeUuyA8IHNlaWppbicnZWlnYVwgOwor6Ieq55Sx5Za25qWtIDwgaml5dXVlaWd5b3VcIDsKK+WFseWtpuWItiA8IGt5b3VnYWt1c2VpXCA7Civpto4gPCBraWt1aXRhZGFraVwgOwor5qiZ5rqW6Kqk5beuIDwgaHlvdWp1bmdvc2FcIDsKK+e+nuaBpeW/gyA8IHNodXVjaGlzaGluXCA7Civlj4LorbDpmaLorbDlk6EgPCBzYW5naWluZ2lpblwgOwor6Jmr55y86Y+hIDwgbXVzaGltZWdhbmVcIDsKK+iogOiRieizqiA8IGtvdG9iYWppY2hpXCA7CivlrabogIXohpogPCBnYWt1c2hhaGFkYVwgOwor6YCa5L+h57ayIDwgdHN1dXNoaW5tb3VcIDsKK+aZruWPiueOhyA8IGZ1a3l1dXJpdHN1XCA7CivkubPlhZDohJrmsJcgPCBueXV1amlrYWtrZVwgOwor5Y2D6bOl6LazIDwgY2hpZG9yaWFzaGlcIDsKK+i7jemcgOW3peWgtCA8IGd1bmp1a291am91XCA7Civnm7jliqDlubPlnYcgPCBzb3VrYWhlaWtpblwgOwor57KX6KO95Lmx6YCgIDwgc29zZWlyYW56b3VcIDsKK+W+oeWQjeW+oeeSvSA8IGd5b21laWd5b2ppXCA7Civoo7jomasgPCBoYWRha2FtdXNoaVwgOwor6Lui6L2N5omLIDwgdGVudGV0c3VzaHVcIDsKK+izvOiyt+WKmyA8IGtvdWJhaXJ5b2t1XCA7CivlhaXos57ogIUgPCBueXV1c2hvdXNoYVwgOwor6Zm46LuN55yBIDwgcmlrdWd1bnNob3VcIDsKK+S7ruWHuuaJgCA8IGthcmlzaHVzc2hvXCA7CivmlofmsrvkuLvnvqkgPCBidW5jaGlzaHVnaVwgOwor5Y+k54mp5ZWGIDwga29idXRzdXNob3VcIDsKK+iHqueEtua3mOaxsCA8IHNoaXplbnRvdXRhXCA7CivlrrblroXmjZzmn7sgPCBrYXRha3Vzb3VzYVwgOwor5pei5oiQ5qaC5b+1IDwga2lzZWlnYWluZW5cIDsKK+aVtOWCmeW3peWgtCA8IHNlaWJpa291am91XCA7Civlr77nqbrnoLLngasgPCB0YWlrdXVob3VrYVwgOwor5rue56m65pmC6ZaTIDwgdGFpa3V1amlrYW5cIDsKK+ixoeW+tOipqSA8IHNob3VjaG91c2hpXCA7CivkuIvljZTorbAgPCBzaGl0YWt5b3VnaVwgOwor5Y+s6ZuG5LukIDwgc2hvdXNodXVyZWlcIDsKK+iyv+aYk+i1pOWtlyA8IGJvdWVraWFrYWppXCA7CivkuIDoqIDlsYXlo6sgPCBpY2hpZ2Vua29qaVwgOwor54Wn5Lya5YWIIDwgc2hvdWthaXNha2lcIDsKK+Wxi+S4iuW6reWckiA8IG9rdWpvdXRlaWVuXCA7CivloIbnqY3lraYgPCB0YWlzZWtpZ2FrdVwgOwor6Kqt6Kej5YqbIDwgZG9ra2Fpcnlva3VcIDsKK+mfs+WjsOihqOiomCA8IG9uc2VpaHlvdWtpXCA7CivohbjntZDmoLggPCBjaG91a2Vra2FrdVwgOwor5bm05oGw5aW9IDwgdG9zaGlrYWtrb3VcIDsKK+Wvqee+juS4u+e+qSA8IHNoaW5iaXNodWdpXCA7CivpgJrnlKPnnIEgPCB0c3V1c2Fuc2hvdVwgOwor5b+c55So5ZWP6aGMIDwgb3V5b3Vtb25kYWlcIDsKK+S6kuaBtemWoueojiA8IGdva2Vpa2FuemVpXCA7CivnnaPlrablrpggPCB0b2t1Z2FrdWthblwgOwor5oeQ5Lit54mpIDwga2FpY2h1dW1vbm9cIDsKK+mAmuS/oeekviA8IHRzdXVzaGluc2hhXCA7Civou5/mgKfkuIvnlrMgPCBuYW5zZWlnZWthblwgOwor5Zu96Kqe6L6e5YW4IDwga29rdWdvaml0ZW5cIDsKK+WFrOiqjeWAmeijnCA8IGtvdW5pbmtvdWhvXCA7CivnlJ/lubTmnIjml6UgPCBzZWluZW5nYXBwaVwgOwor5aWH562W57im5qiqIDwga2lzYWt1anV1b3VcIDsKK+WFieWtpuaWh+WtlyA8IGtvdWdha3Vtb2ppXCA7CivljYPnn7PoiLkgPCBzZW5nb2t1YnVuZVwgOwor5YGc6LuK5pmC6ZaTIDwgdGVpc2hhamlrYW5cIDsKK+mHkeeJm+WuriA8IGtpbmd5dXVreXV1XCA7CivmjqXlkIjlrZAgPCBzZXRzdWdvdXNoaVwgOwor55qH5a6k6LK7IDwga291c2hpdHN1aGlcIDsKK+WFseWSjOaUv+ayuyA8IGt5b3V3YXNlaWppXCA7Civlm73luqvlgrXmqKkgPCBrb2trb3NhaWtlblwgOwor6L+95b6056iOIDwgdHN1aWNob3V6ZWlcIDsKK+WjsOW4r+aooeWGmSA8IHNlaXRhaW1vc2hhXCA7CivmnIDlpKfpmZDluqYgPCBzYWlkYWlnZW5kb1wgOwor5bGA5aSW6ICFIDwga3lva3VnYWlzaGFcIDsKK+WFq+WIhumfs+espiA8IGhhY2hpYnVvbnB1XCA7Civnv4znv4zlubQgPCB5b2t1eW9rdW5lblwgOwor54m55Yil5qmfIDwgdG9rdWJldHN1a2lcIDsKK+a3oeikkOiJsiA8IHRhbmthc3Nob2t1XCA7CivlgY/ln7fnl4UgPCBoZW5zaHV1YnlvdVwgOwor5Luu5oOz56m66ZaTIDwga2Fzb3VrdXVrYW5cIDsKK+Wtpue/kuiAhSA8IGdha3VzaHV1c2hhXCA7CivpmLLpn7PlrqQgPCBib3VvbnNoaXRzdVwgOwor5bmz5oiQ5pmC5LujIDwgaGVpc2VpamlkYWlcIDsKK+WIqeebiuekvuS8miA8IHJpZWtpc2hha2FpXCA7CivogonkvZPnmoQgPCBuaWt1dGFpdGVraVwgOwor5a625bqt6Kiq5ZWPIDwga2F0ZWlob3Vtb25cIDsKK+aWmemHkeihqCA8IHJ5b3VraW5oeW91XCA7CivlhoXpmbjlm70gPCBuYWlyaWt1a29rdVwgOwor5YyF5a655YqbIDwgaG91eW91cnlva3VcIDsKK+WHuua8geacnyA8IHNodXRzdWd5b2tpXCA7CivoloTliKnlpJrlo7IgPCBoYWt1cml0YWJhaVwgOwor5Li75Lq65b25IDwgc2h1amluJyd5YWt1XCA7CivmsJHkuLvkuLvnvqkgPCBtaW5zaHVzaHVnaVwgOwor5aWz5oCn5ZCN6KmeIDwgam9zZWltZWlzaGlcIDsKK+aEm+aGjuS9teWtmCA8IGFpem91aGVpc29uXCA7CivmiJDlip/njocgPCBzZWlrb3VyaXRzdVwgOwor5YWs5pyJ54mpIDwga291eXV1YnV0c3VcIDsKK+ims+iJpuW8jyA8IGthbmthbnNoaWtpXCA7Civlj43lsITkvZznlKggPCBoYW5zaGFzYXlvdVwgOwor5pyI5aSc6Iy4IDwgdHN1a2l5b3Rha2VcIDsKK+acieS6i+eri+azlSA8IHl1dWppcmlwcG91XCA7CivlhaXlrabnlJ8gPCBueXV1Z2FrdXNlaVwgOwor5piO5b6M5pelIDwgbXlvdWdvbmljaGlcIDsKK+a0u+WLleiAhSA8IGthdHN1ZG91c2hhXCA7CivkuInljp/oibIgPCBzYW5nZW5zaG9rdVwgOwor55m65aOw5Zmo5a6YIDwgaGFzc2Vpa2lrYW5cIDsKK+WBj+Wft+eLgiA8IGhlbnNodXVreW91XCA7CivlqZrnpLzooaPoo4UgPCBrb25yZWlpc2hvdVwgOwor5Lit5aSu56qB56C0IDwgY2h1dW91dG9wcGFcIDsKK+S4iemgreaUv+ayuyA8IHNhbnRvdXNlaWppXCA7CivljbHpmbrlnLDluK8gPCBraWtlbmNoaXRhaVwgOwor5YyW5a2m5L2c55SoIDwga2FnYWt1c2F5b3VcIDsKK+eEoemWk+WcsOeNhCA8IG11Z2Vuamlnb2t1XCA7CivoqbHkuK0gPCBoYW5hc2hpY2h1dVwgOwor5b6A5b6p5YiH56ymIDwgb3VmdWt1a2lwcHVcIDsKK+iSi+S7i+efsyA8IHNob3VrYWlzZWtpXCA7CivnlLPlkYrmm7ggPCBzaGlua29rdXNob1wgOwor5a2Y5Zyo55CG55SxIDwgc29uemFpcml5dXVcIDsKK+e3qOesoOiMuCA8IGFtaWdhc2F0YWtlXCA7CivlsI/ljYrml6UgPCBrb2hhbicnbmljaGlcIDsKK+mdnuekvuS6pOeahCA8IGhpamFrb3V0ZWtpXCA7CivooajlvbDnirYgPCBoeW91c2hvdWpvdVwgOwor5YaF6Ki85LqLIDwgbmFpc2hvdWdvdG9cIDsKK+WwgeW7uuWItuW6piA8IGhvdWtlbnNlaWRvXCA7CivoqLrmlq3lraYgPCBzaGluZGFuZ2FrdVwgOwor5Y2X5qW154K5IDwgbmFua3lva3V0ZW5cIDsKK+S6uui6q+S6i+aVhSA8IGppbnNoaW5qaWtvXCA7Civmm7LlsITnoLIgPCBreW9rdXNoYWhvdVwgOwor5YWs6ZaL5o2c5p+7IDwga291a2Fpc291c2FcIDsKK+aIkeeUsOW8leawtCA8IGdhZGVuJydpbnN1aVwgOwor5YuV5L2c6KiY6YyyIDwgZG91c2FraXJva3VcIDsKK+WFiOeZuumaiiA8IHNlbnBhdHN1dGFpXCA7CivmiJDlsaTngavlsbEgPCBzZWlzb3VrYXphblwgOwor5oCn55Sf5rS7IDwgc2Vpc2Vpa2F0c3VcIDsKK+aknOmWsuWumCA8IGtlbicnZXRzdWthblwgOwor5rWB6YCa56iOIDwgcnl1dXRzdXV6ZWlcIDsKK+WIqeebiumFjeW9kyA8IHJpZWtpaGFpdG91XCA7CivmtJfmv6/ns4ogPCBzZW50YWt1bm9yaVwgOwor5Y2K55u057eaIDwgaGFuY2hva3VzZW5cIDsKK+a0l+a/r+exoCA8IHNlbnRha3VrYWdvXCA7CivmjqXlkIjliaQgPCBzZXRzdWdvdXphaVwgOwor5LiA5omA5oe45ZG9IDwgaXNzaG9rZW5tZWlcIDsKK+i+sueUo+eJqSA8IG5vdXNhbmJ1dHN1XCA7CivmupDms4noqrLnqI4gPCBnZW5zZW5rYXplaVwgOwor5pS/5rK757WQ56S+IDwgc2VpamlrZXNzaGFcIDsKK+WhteWfgyA8IGNoaXJpaG9rb3JpXCA7CivpqI7ppqzmsJHml48gPCBraWJhbWluem9rdVwgOwor6ZqU5LiW6YG65LydIDwga2FrdXNlaWlkZW5cIDsKK+WPpOmBk+WFt+WxiyA8IGZ1cnVkb3VndXlhXCA7CivlkLnlpY/mpb3lmaggPCBzdWlzb3VnYWtraVwgOwor5qmf6YqD5o6D5bCEIDwga2lqdXVzb3VzaGFcIDsKK+aOpeWPl+WbvSA8IHNldHN1anVrb2t1XCA7CivmrablrrblsYvmlbcgPCBidWtleWFzaGlraVwgOwor5Y2X5qW15rW3IDwgbmFua3lva3VrYWlcIDsKK+edoeecoOaZgumWkyA8IHN1aW1pbmppa2FuXCA7CivntZDohpzngo4gPCBrZXRzdW1ha3VlblwgOwor6Kaq552m5LyaIDwgc2hpbmJva3VrYWlcIDsKK+ehq+WMlueJqSA8IHJ5dXVrYWJ1dHN1XCA7Civmg7Plg4/lipsgPCBzb3V6b3VyeW9rdVwgOwor6Iq46KGT5ZOBIDwgZ2VpanV0c3VoaW5cIDsKK+eEoeiomOWQjeagqiA8IG11a2ltZWlrYWJ1XCA7CivljZfmpbXmtIsgPCBuYW5reW9rdXlvdVwgOwor5LqL5YuZ57eP6ZW3IDwgamltdXNvdWNob3VcIDsKK+WGjea4rOmHjyA8IHNhaXNva3VyeW91XCA7CivkuLvmsrvlirnog70gPCBzaHVqaWtvdW5vdVwgOwor5aSp5rSl5b6h56WWIDwgYW1hdHN1bWlveWFcIDsKK+awl+ixoeihm+aYnyA8IGtpc2hvdWVpc2VpXCA7CivmnInlirnmnJ/pmZAgPCB5dXVrb3VraWdlblwgOwor6L6y5aW06Kej5pS+IDwgbm91ZG9rYWlob3VcIDsKK+mcsuWHuuioiCA8IHJvc2h1dHN1a2VpXCA7Civlv4Poh5Ppurvnl7ogPCBzaGluem91bWFoaVwgOwor6YWU55Sf5aSi5q27IDwgc3Vpc2VpbXVzaGlcIDsKK+eEoeazleWcsOW4ryA8IG11aG91Y2hpdGFpXCA7CivooZfpoK3li5/ph5EgPCBnYWl0b3Vib2tpblwgOwor55WZ5a2m55SfIDwgcnl1dWdha3VzZWlcIDsKK+awtOS7leS6iyA8IG1penVzaGlnb3RvXCA7Civlrabnv5LnlKggPCBnYWt1c2h1dXlvdVwgOwor6I2S5ZSQ54Sh56i9IDwga291dG91bXVrZWlcIDsKK+azqOWwhOmHnSA8IGNodXVzaGFiYXJpXCA7CivoprPlr5/ogIUgPCBrYW5zYXRzdXNoYVwgOwor5qCE6aSK5LiN6LazIDwgZWl5b3VmdXNva3VcIDsKK+mAmuS/oeashCA8IHRzdXVzaGlucmFuXCA7CivlkI3oqonluILmsJEgPCBtZWl5b3NoaW1pblwgOwor6LuN5LqL5ZCM55ufIDwgZ3Vuamlkb3VtZWlcIDsKK+acieWKueS9nOeUqCA8IHl1dWtvdXNheW91XCA7CivkupTmnIjpl4cgPCBzYXRzdWtpeWFtaVwgOwor55m6552A5aC0IDwgaGF0Y2hha3Vqb3VcIDsKK+WFiOmBo+mDqOmaiiA8IHNlbmtlbmJ1dGFpXCA7CivlmInoqIDlloTooYwgPCBrYWdlbnplbmtvdVwgOwor6Ly45Ye656iOIDwgeXVzaHV0c3V6ZWlcIDsKK+WQiOWQjOS8muitsCA8IGdvdWRvdWthaWdpXCA7Civotbfmrbvlm57nlJ8gPCBraXNoaWthaXNlaVwgOwor6YCP6KaW55S75rOVIDwgdG91c2hpZ2Fob3VcIDsKK+eEoemKreaXheihjCA8IG11c2Vucnlva291XCA7CivlsLHogbfmmYIgPCBzaHV1c2hva3VqaVwgOwor5L+d5a6J6Kit5YKZIDwgaG9hbnNldHN1YmlcIDsKK+edgOecvOeCuSA8IGNoYWt1Z2FudGVuXCA7CivnqbrlhrflvI8gPCBrdXVyZWlzaGlraVwgOwor5rq25o6l5belIDwgeW91c2V0c3Vrb3VcIDsKK+S4uOacqOapiyA8IG1hcnVraWJhc2hpXCA7CivlhoXpg6jpl5jkuokgPCBuYWlidXRvdXNvdVwgOwor5LiN5q2j6J6N6LOHIDwgZnVzZWl5dXVzaGlcIDsKK+WxseW9ouecjCA8IHlhbWFnYXRha2VuXCA7CivkuqTpnIrooZMgPCBrb3VyZWlqdXRzdVwgOwor5ryi6Iux6L6e5YW4IDwga2FuJydlaWppdGVuXCA7CivlibXpgKDoqqwgPCBzb3V6b3VzZXRzdVwgOwor6aCY5Zyf5L+d5YWoIDwgcnlvdWRvaG96ZW5cIDsKK+aLm+W+heW4rSA8IHNob3V0YWlzZWtpXCA7CivnhKHkuovmga/ngb0gPCBidWppc29rdXNhaVwgOwor6Zuq5LiK6LuKIDwgc2V0c3Vqb3VzaGFcIDsKK+S6pOmfv+alvSA8IGtvdWt5b3VnYWt1XCA7CivovrLmpa3lm70gPCBub3VneW91a29rdVwgOwor5Y2T6LaK6aKoIDwgdGFrdWV0c3VmdXVcIDsKK+aMh+WQjeaJi+mFjSA8IHNoaW1laXRlaGFpXCA7Civpjq7nl5vmgKcgPCBjaGludHN1dXNlaVwgOwor6YGK6Kan6aOb6KGMIDwgeXV1cmFuaGlrb3VcIDsKK+iqjeitmOirliA8IG5pbnNoaWtpcm9uXCA7Civlj5fpqJPlnLDnjYQgPCBqdWtlbmppZ29rdVwgOwor6K2m5YKZ5by35YyWIDwga2VpYmlreW91a2FcIDsKK+WwseWvneWJjSA8IHNodXVzaGluemVuXCA7Civlv4PnkIbkuLvnvqkgPCBzaGlucmlzaHVnaVwgOwor5Y+M5puy57eaIDwgc291a3lva3VzZW5cIDsKK+mbouWpmuiotOionyA8IHJpa29uc29zaG91XCA7CivlpI/mmYLliLsgPCBuYXRzdWppa29rdVwgOwor5aSP5aSn5qC5IDwgbmF0c3VkYWlrb25cIDsKK+mfs+iok+e0ouW8lSA8IG9ua3Vuc2FrdWluXCA7CivljbHpmbrlm6DlrZAgPCBraWtlbicnaW5zaGlcIDsKK+adkeWFq+WIhiA8IG11cmFoYWNoaWJ1XCA7CivotoXpgY7li6Tli5kgPCBjaG91a2FraW5tdVwgOwor5YKY5LyQ5p6XIDwgc2FuYmF0c3VyaW5cIDsKK+W4uOioremkqCA8IGpvdXNldHN1a2FuXCA7CivljZfmpbXmmJ8gPCBuYW5reW9rdXNlaVwgOwor56We5a2m5aOrIDwgc2hpbmdha3VzaGlcIDsKK+mAsuatqeS4u+e+qSA8IHNoaW5wb3NodWdpXCA7CivkuIrlkYrlr6kgPCBqb3Vrb2t1c2hpblwgOwor5YWI5YWl6KazIDwgc2VuJydueXV1a2FuXCA7CivlhYjlhaXoposgPCBzZW4nJ255dXVrZW5cIDsKK+S/neWFqOS8muekviA8IGhvemVua2Fpc2hhXCA7CivmtJfmv6/niakgPCBzZW50YWt1bW9ub1wgOwor5LiH6JGJ6ZuGIDwgbWFuJyd5b3VzaHV1XCA7Civoh6rlt7HntLnku4sgPCBqaWtvc2hvdWthaVwgOwor5Lq66YGT5pSv5o+0IDwgamluZG91c2hpZW5cIDsKK+a6gOW3nuWbvSA8IG1hbnNodXVrb2t1XCA7CivluIzlsJHkvqHlgKQgPCBraXNob3VrYWNoaVwgOwor6KGo5b+g5aGUIDwgaHlvdWNodXV0b3VcIDsKK+S4iemHjeauuiA8IHNhbmp1dXNhdHN1XCA7Civlqabkurrnp5HlraYgPCBmdWppbmthZ2FrdVwgOwor5pSv5o+05Zuj5L2TIDwgc2hpZW5kYW50YWlcIDsKK+WIhuazjOa2siA8IGJ1bnBpdHN1ZWtpXCA7CivlroflrpnnqbrplpMgPCB1Y2h1dWt1dWthblwgOwor6Zqj5o6l55yMIDwgcmluc2V0c3VrZW5cIDsKK+WYmOWFq+eZviA8IHVzb2hhcHB5YWt1XCA7CivoiJ7ouI/lrqQgPCBidXRvdXNoaXRzdVwgOwor5b2T5bGA6ICFIDwgdG91a3lva3VzaGFcIDsKK+WMlueyp+eFieeTpiA8IGtlc2hvdXJlbmdhXCA7Civnt6nooZ3lm70gPCBrYW5zaG91a29rdVwgOwor5pep5pyf55m66KaLIDwgc291a2loYWtrZW5cIDsKK+iHqueEtuayu+eZkiA8IHNoaXplbmNoaXl1XCA7CivkuI3lj6/nn6XnmoQgPCBmdWthY2hpdGVraVwgOwor6Ki06Kif6LK755SoIDwgc29zaG91aGl5b3VcIDsKK+iXgeS6uuW9oiA8IHdhcmFuaW5neW91XCA7CivlvbHpn7/lipsgPCBlaWt5b3VyeW9rdVwgOwor54G95a6z5L+d6Zm6IDwgc2FpZ2FpaG9rZW5cIDsKK+Wkp+WZqOaZqeaIkCA8IHRhaWtpYmFuc2VpXCA7Civmlofnr4DmlbAgPCBidW5zZXRzdXN1dVwgOwor5pWw54+g5LiA6YCjIDwganV6dWljaGlyZW5cIDsKK+aWh+aYjumWi+WMliA8IGJ1bm1laWthaWthXCA7Civmgqrmjqjph48gPCB3YXJ1enVpcnlvdVwgOwor5ZCr5pyJ6YePIDwgZ2FuJyd5dXVyeW91XCA7Civoqpjpm7vnjocgPCB5dXVkZW5yaXRzdVwgOwor5Y+N5YuV5Li7576pIDwgaGFuZG91c2h1Z2lcIDsKK+ims+Wvn+ecvCA8IGthbnNhdHN1Z2FuXCA7CivmlL/lupzpq5jlrpggPCBzZWlmdWtvdWthblwgOwor6Y+h6aSFIDwga2FnYW1pbW9jaGlcIDsKK+ijj+WIh+iAhSA8IHVyYWdpcmltb25vXCA7Civkuqzpg73lupzoraYgPCBreW91dG9mdWtlaVwgOwor6Ziy6Zuq5p6XIDwgYm91c2V0c3VyaW5cIDsKK+WkqeelnumrrSA8IHRlbnNoaW5oaWdlXCA7CivmrrrlrrPogIUgPCBzYXRzdWdhaXNoYVwgOwor5Yuk546L5pSY5aS3IDwga2luJydub3Vqb3VpXCA7CivnqbrmjLrpg6jpmoogPCBrdXV0ZWlidXRhaVwgOwor5pWZ6IKy55yBIDwga3lvdWlrdXNob3VcIDsKK+mbouS5s+mjnyA8IHJpbnl1dXNob2t1XCA7CivmlZnogrLnmoQgPCBreW91aWt1dGVraVwgOwor5aSa5aOr5riI5riIIDwgdGFzaGlzZWlzZWlcIDsKK+S4jeWZqOeUqOiAhSA8IGJ1a2l5b3Vtb25vXCA7CivlhbXnq5nln7rlnLAgPCBoZWl0YW5raWNoaVwgOwor5pyJ55CG6Zai5pWwIDwgeXV1cmlrYW5zdXVcIDsKK+S6uuW3pemgreiEsyA8IGppbmtvdXp1bm91XCA7CivnibnliKXljLogPCB0b2t1YmV0c3VrdVwgOwor6LKh5pS/5YqbIDwgemFpc2Vpcnlva3VcIDsKK+WNgeWFremfs+espiA8IGp1dXJva3VvbnB1XCA7CivlvLfnoaznrZYgPCBreW91a291c2FrdVwgOwor5paw5bm05Y+3IDwgc2hpbicnbmVuZ291XCA7Civno6/pprTmnb4gPCBzb25hcmVtYXRzdVwgOwor5aWH5oOz5aSp5aSWIDwga2lzb3V0ZW5nYWlcIDsKK+WGheWuueimi+acrCA8IG5haXlvdW1paG9uXCA7CivlhaXppKjmlpkgPCBueXV1a2FucnlvdVwgOwor54mp55u46aOvIDwgbW9zc291bWVzaGlcIDsKK+ijvemdqealrSA8IHNlaWtha3VneW91XCA7CivkuK3lrabnlJ8gPCBjaHV1Z2FrdXNlaVwgOwor6Ly45Ye65rivIDwgeXVzaHV0c3Vrb3VcIDsKK+WNl+alteW4ryA8IG5hbmt5b2t1dGFpXCA7CivmlpnnkIbpgZPlhbcgPCByeW91cmlkb3VndVwgOwor5aSn5ZyP6Iiq6LevIDwgdGFpa2Vua291cm9cIDsKK+a6tuaOpeWJpCA8IHlvdXNldHN1emFpXCA7CivmgKXnl4XkurogPCBreXV1YnlvdW5pblwgOwor5a+E5a6/5paZIDwga2lzaHVrdXJ5b3VcIDsKK+mrmOWztueUsCA8IHRha2FzaGltYWRhXCA7CivlsI/mraPmnIggPCBrb3Nob3VnYXRzdVwgOwor5YuV5Yqb6KiIIDwgZG91cnlva3VrZWlcIDsKK+alteWkp+WApCA8IGt5b2t1ZGFpY2hpXCA7CivmupblgpnnrqHliLYgPCBqdW5iaWthbnNlaVwgOwor54OP5Y+jIDwga2FyYXN1Z3VjaGlcIDsKK+WHuumHkemhjSA8IHNodWtraW5nYWt1XCA7CivnlLPlkYrliLYgPCBzaGlua29rdXNlaVwgOwor57KNIDwgbWlyaW1laXRvcnVcIDsKK+mZo+mgreaMh+aPriA8IGppbnRvdXNoaWtpXCA7CivnsoEgPCBraXJvbWVpdG9ydVwgOwor57G1IDwgZGVrYW1lZXRvcnVcIDsKK+iHk+WZqOenu+akjSA8IHpvdWtpaXNob2t1XCA7Civln7rmnKzmpoLlv7UgPCBraWhvbmdhaW5lblwgOwor5a2Q5L6b6YGUIDwga29kb21vdGFjaGlcIDsKK+S8muitsOaXpeeoiyA8IGthaWdpbml0dGVpXCA7CivlhazlrprlnLDkvqEgPCBrb3V0ZWljaGlrYVwgOwor5Z+656SO56CU56m2IDwga2lzb2tlbmt5dXVcIDsKK+eSsOWig+axmuafkyA8IGthbmt5b3Vvc2VuXCA7CivlqpLku4vniakgPCBiYWlrYWlidXRzdVwgOwor55aR5b+D5pqX6ay8IDwgZ2lzaGluJydhbmtpXCA7Civpu4TpgZPoibIgPCBrb3Vkb3VzaG9rdVwgOwor5LiJ6JGJ6JmrIDwgc2FuJyd5b3VjaHV1XCA7Civlhajos6rljJYgPCB6ZW5zaGl0c3VrYVwgOwor55Sf5rS76ZujIDwgc2Vpa2F0c3VuYW5cIDsKK+e0sOWLleiEiCA8IHNhaWRvdW15YWt1XCA7CivmsZ/miLjliY3lr7/lj7ggPCBlZG9tYWV6dXNoaVwgOwor57eP55CG5aSn6IejIDwgc291cmlkYWlqaW5cIDsKK+ikh+mbkeWMliA8IGZ1a3V6YXRzdWthXCA7Civoh6rlt7HmuoDotrMgPCBqaWtvbWFuem9rdVwgOwor5Yui5Yqb5ZyPIDwgc2Vpcnlva3VrZW5cIDsKK+e1tuWvvuS4u+e+qSA8IHpldHRhaXNodWdpXCA7Civnq7AgPCBzZW5jaGlyaXR0b1wgOwor5q2j5ZGz5YCk5q61IDwgc2hvdW1pbmVkYW5cIDsKK+eroSA8IGhla3V0b3JpdHRvXCA7Civnq5MgPCBtaXJpcml0dG9ydVwgOwor56uPIDwga2lyb3JpdHRvcnVcIDsKK+WAi+S6uuaVmeaOiCA8IGtvamlua3lvdWp1XCA7CivopIfopIfnt5ogPCBmdWt1ZnVrdXNlblwgOwor5bCR5aOu5rCX6YutIDwgc2hvdXNvdWtpZWlcIDsKK+aWsOW5tOS8miA8IHNoaW4nJ25lbmthaVwgOwor5LiN56K65a6fIDwgZnVrYWt1aml0c3VcIDsKK+adseS6nOiruOWbvSA8IHRvdWFzaG9rb2t1XCA7Civlloflj63msLTku5kgPCByYXBwYXp1aXNlblwgOwor6Y6u55eb5YmkIDwgY2hpbnRzdXV6YWlcIDsKK+aAquS6uueJqSA8IGthaWppbmJ1dHN1XCA7CivpgJrlrabnlJ8gPCB0c3V1Z2FrdXNlaVwgOwor54iG5b+D5ZywIDwgYmFrdXNoaW5jaGlcIDsKK+Wun+ihjOWPr+iDvSA8IGppa2tvdWthbm91XCA7CivkuovliY3pgYvli5UgPCBqaXplbicndW5kb3VcIDsKK+Wni+acq+abuCA8IHNoaW1hdHN1c2hvXCA7CivlpJbmnaXmgqPogIUgPCBnYWlyYWlrYW5qYVwgOwor56u25LqJ5b+DIDwga3lvdXNvdXNoaW5cIDsKK+mBv+mbo+iok+e3tCA8IGhpbmFua3VucmVuXCA7Civlib3ou73ogIUgPCBoeW91a2lubW9ub1wgOwor6IW46ZaJ5aGeIDwgY2hvdWhlaXNva3VcIDsKK+iyqeWjsumDqOmWgCA8IGhhbmJhaWJ1bW9uXCA7Civou43lvZPlsYAgPCBndW50b3VreW9rdVwgOwor5Yq05YON6YGL5YuVIDwgcm91ZG91dW5kb3VcIDsKK+a6luWCmemKgOihjCA8IGp1bmJpZ2lua291XCA7Civlubnnt5rpgZPot68gPCBrYW5zZW5kb3Vyb1wgOwor5LiN6YCP5piO5oCnIDwgZnV0b3VtZWlzZWlcIDsKK+eZveWtkOmzqSA8IHNoaXJha29iYXRvXCA7CivnlLrlvbnloLQgPCBtYWNoaXlha3ViYVwgOwor5Yqg5Zyn5rC054KJIDwga2FhdHN1c3Vpcm9cIDsKK+S4jeW/oOWunyA8IGZ1Y2h1dWppdHN1XCA7Civooajpn7PmloflrZcgPCBoeW91b25tb25qaVwgOwor5oyH5ZCN5omT6ICFIDwgc2hpbWVpZGFzaGFcIDsKK+e3j+WPuOS7pOmDqCA8IHNvdXNoaXJlaWJ1XCA7CivljZrlrabogIUgPCBoYWt1Z2FrdXNoYVwgOwor5Lyd57Wx5Li7576pIDwgZGVudG91c2h1Z2lcIDsKK+aIpueVpeS4iiA8IHNlbnJ5YWt1am91XCA7CivkuLvopoHpg73luIIgPCBzaHV5b3V0b3NoaVwgOwor5Y2X5qW15ZyPIDwgbmFua3lva3VrZW5cIDsKK+S4oeiEmuimjyA8IHJ5b3VreWFrdWtpXCA7CivkvY7muKnmrrroj4wgPCB0ZWlvbnNha2tpblwgOwor5YWx6Kiz6ICFIDwga3lvdXlha3VzaGFcIDsKK+Wkq+WppumWouS/giA8IGZ1dWZ1a2Fua2VpXCA7Civlv43ogJDlipsgPCBuaW50YWlyeW9rdVwgOwor5L2c5qWt5pmC6ZaTIDwgc2FneW91amlrYW5cIDsKK+mbhumHkeS6uiA8IHNodXVraW4nJ25pblwgOwor6Z2e5bi45omL5q61IDwgaGlqb3VzaHVkYW5cIDsKK+WNgeWFq+mHkSA8IGp1dWhhY2hpa2luXCA7CivlsILliLbmlL/msrsgPCBzZW5zZWlzZWlqaVwgOwor5pig55S755uj552jIDwgZWlnYWthbnRva3VcIDsKK+WAn+eUqOiAhSA8IHNoYWt1eW91c2hhXCA7Civnk7AgPCBkZXNoaWd1cmFtdVwgOwor5r+D5reh55S75YOPIDwgbm91dGFuZ2F6b3VcIDsKK+err+mHkSA8IGhhc2hpdGFnYW5lXCA7Civnga/ngavnrqHliLYgPCB0b3VrYWthbnNlaVwgOwor6YeN6KaB5LqL6aCFIDwganV1eW91amlrb3VcIDsKK+mdnuW4uOWRvOmbhiA8IGhpam91a29zaHV1XCA7CivmjIHkuYXlipsgPCBqaWt5dXVyeW9rdVwgOwor5bGA5Zyw6aKoIDwga3lva3VjaGlmdXVcIDsKK+eZuueZjOaApyA8IGhhdHN1Z2Fuc2VpXCA7Civmj5rpmbjmlpkgPCB5b3VyaWt1cnlvdVwgOwor5a+G6LK/5piTIDwgbWl0c3Vib3Vla2lcIDsKK+mAmuS/oeWToSA8IHRzdXVzaGluJydpblwgOwor56uL5YCZ6KOc6ICFIDwgcmlra291aG9zaGFcIDsKK+WGoOWLleiEiCA8IGthbmRvdW15YWt1XCA7CivlpInlpY/mm7IgPCBoZW5zb3VreW9rdVwgOwor5rWE5YyW6KOF572uIDwgam91a2Fzb3VjaGlcIDsKK+W+oeeUn+aGjuanmCA8IG9haW5pa3VzYW1hXCA7CivooajlvbDlj7AgPCBoeW91c2hvdWRhaVwgOwor5Lq65ZOh5reY5rGwIDwgamluJydpbnRvdXRhXCA7CivokazpgIHmm7IgPCBzb3Vzb3VreW9rdVwgOwor5Lqk6YCa5LqL5pWFIDwga291dHN1dWppa29cIDsKK+WNg+WIhueOhyA8IHNlbmJ1bnJpdHN1XCA7Civlm5vovKrpp4bli5UgPCB5b25yaW5rdWRvdVwgOwor5Li45LiA5bm0IDwgbWFydWljaGluZW5cIDsKK+S7o+eQhuWFrOS9vyA8IGRhaXJpa291c2hpXCA7CivlpJbli5nlpKfoh6MgPCBnYWltdWRhaWppblwgOwor6ICB5buD54mpIDwgcm91aGFpYnV0c3VcIDsKK+WNl+alteWFiSA8IG5hbmt5b2t1a291XCA7Civnmq7nrpfnlKggPCBrYXdhemFuJyd5b3VcIDsKK+mHjuaIpuegsuWFtSA8IHlhc2VuaG91aGVpXCA7Civov73liIbnr4AgPCBvaXdha2VidXNoaVwgOwor5b6z5bed5YuiIDwgdG9rdWdhd2F6ZWlcIDsKK+WcsOWQjei+nuWFuCA8IGNoaW1laWppdGVuXCA7CivkuI3li5XnlKPlsYsgPCBmdWRvdXNhbicneWFcIDsKK+WJtemAoOeJqSA8IHNvdXpvdWJ1dHN1XCA7CivliJ3oiKrmtbcgPCBoYXRzdWtvdWthaVwgOwor6LO86Kqt5paZIDwga291ZG9rdXJ5b3VcIDsKK+W+l+elqOaVsCA8IHRva3VoeW91c3V1XCA7CivkvZPmhJ/muKnluqYgPCB0YWlrYW4nJ29uZG9cIDsKK+mbquaZr+iJsiA8IHl1a2lnZXNoaWtpXCA7CivoprPlhYnpg73luIIgPCBrYW5rb3V0b3NoaVwgOwor5ZCM5oCn5oSb6ICFIDwgZG91c2VpYWlzaGFcIDsKK+mDqOmaiuaSpOmAgCA8IGJ1dGFpdGV0dGFpXCA7Civnsr7npZ7nmoQgPCBzZWlzaGludGVraVwgOwor5Y2U6K2w5Lya5ZOhIDwga3lvdWdpa2FpaW5cIDsKK+WVk+iSmemBi+WLlSA8IGtlaW1vdXVuZG91XCA7CivlvrPlt53lhawgPCB0b2t1Z2F3YWtvdVwgOwor6Ieq56uL5b+DIDwgamlyaXRzdXNoaW5cIDsKK+S6gOeUsuaooeanmCA8IGtpa2tvdW1veW91XCA7CivooZvnlJ/nirbmhYsgPCBlaXNlaWpvdXRhaVwgOwor5ry46YCy55qEIDwgemVuc2hpbnRla2lcIDsKK+aVmeS8muaapiA8IGt5b3VrYWlyZWtpXCA7CivmrrrkurrogIUgPCBzYXRzdWppbnNoYVwgOwor6Y6W5Zu95Li7576pIDwgc2Frb2t1c2h1Z2lcIDsKK+eyvuelnueXhSA8IHNlaXNoaW5ieW91XCA7CivmrrrkurrnvaogPCBzYXRzdWppbnphaVwgOwor5oiQ5bm05byPIDwgc2VpbmVuc2hpa2lcIDsKK+WZqOeUqOiyp+S5jyA8IGtpeW91YmluYm91XCA7CivohLHnn7PmsrkgPCBkYXRzdXNla2l5dVwgOwor5YWI6YCy5Zu9IDwgc2Vuc2hpbmtva3VcIDsKK+ecvOeyvueWsuWKtCA8IGdhbnNlaWhpcm91XCA7CivlrqPkvJ3mqZ/plqIgPCBzZW5kZW5raWthblwgOwor5Zyf5Zuj5a2QIDwgdHN1Y2hpZGFuZ29cIDsKK+S9leaZguS9leaZgiA8IGl0c3VuYW5kb2tpXCA7CivmjqflrqQgPCBoaWthZXNoaXRzdVwgOwor5rCR5qip5Li7576pIDwgbWlua2Vuc2h1Z2lcIDsKK+W5tOasoee3j+S8miA8IG5lbmppc291a2FpXCA7Civmt7flkIjniakgPCBrb25nb3VidXRzdVwgOwor6LuN5qW96ZW3IDwgZ3VuZ2FrdWNob3VcIDsKK+azleW+i+S4iiA8IGhvdXJpdHN1am91XCA7CivnlZzniqznqI4gPCBjaGlrdWtlbnplaVwgOwor54Sh5YSf5Lqk5LuYIDwgbXVzaG91a291ZnVcIDsKK+efreacn+aJi+W9oiA8IHRhbmtpdGVnYXRhXCA7CivlhoXli5nlpKfoh6MgPCBuYWltdWRhaWppblwgOwor5LiA5LiW5LiA5LujIDwgaXNzZWljaGlkYWlcIDsKK+S6i+mghee0ouW8lSA8IGppa291c2FrdWluXCA7CivmlL7lsITnt5rnp5EgPCBob3VzaGFzZW5rYVwgOwor55qH5aSq5a2Q5aaDIDwga291dGFpc2hpaGlcIDsKK+aigeWxseaziiA8IHJ5b3V6YW5wYWt1XCA7CivlvavloZHooZMgPCBjaG91c29qdXRzdVwgOwor5Luj55So6aOfIDwgZGFpeW91c2hva3VcIDsKK+WmluaAquWkieWMliA8IHlvdWthaWhlbmdlXCA7CivkuKbmnKjpgZMgPCBuYW1pa2ltaWNoaVwgOwor5a6d55+z566xIDwgaG91c2VraWJha29cIDsKK+WNkualreW+jCA8IHNvdHN1Z3lvdWdvXCA7Civlj6Pop5LlipsgPCBrdWNoaWR6dW1vdVwgOwor5LqL5qWt5Li7IDwgamlneW91bnVzaGlcIDsKK+iHquiZkOeahCA8IGppZ3lha3V0ZWtpXCA7CivkuIvnm7joq4cgPCBzaGl0YXNvdWRhblwgOwor5aSJ5b2i6YOo6ZaAIDwgaGVua2VpYnVtb25cIDsKK+mHjuaIpueXhemZoiA8IHlhc2VuYnlvdWluXCA7Civnpr/poK3nl4UgPCB0b2t1dG91YnlvdVwgOwor5oim54G95Zyw5Yy6IDwgc2Vuc2FpY2hpa3VcIDsKK+W8vuedgOeCuSA8IGRhbmNoYWt1dGVuXCA7Civnibnli5nmqZ/plqIgPCB0b2t1bXVraWthblwgOwor5LqU5pyI55eFIDwgZ29nYXRzdWJ5b3VcIDsKK+egguezluWkp+aguSA8IHNhdG91ZGFpa29uXCA7CivlvL7lipvmgKcgPCBkYW5yeW9rdXNlaVwgOwor5qC454iG5by+IDwga2FrdWJha3VkYW5cIDsKK+WVhualreihlyA8IHNob3VneW91Z2FpXCA7CivpoK3mloflrZcgPCBrYXNoaXJhbW9qaVwgOwor5Y2K5Yqg5bel5ZOBIDwgaGFua2Frb3VoaW5cIDsKK+iHquiomOa4qeW6puioiCA8IGppa2lvbmRva2VpXCA7CivnuK7nt6zntJkgPCBjaGlyaW1lbnNoaVwgOwor5LqM562J5YiG57eaIDwgbml0b3VidW5zZW5cIDsKK+aOiOalreaZgumWkyA8IGp1Z3lvdWppa2FuXCA7CivlpKnnpZ7lnLDnpYcgPCB0ZW5qaW5jaGlnaVwgOwor6L+95Yqg5LqI566XIDwgdHN1aWtheW9zYW5cIDsKK+mdnuWQiOeQhueahCA8IGhpZ291cml0ZWtpXCA7CivlirTovrLmlL/lupwgPCByb3Vub3VzZWlmdVwgOwor5Y2X5Lqs6JmrIDwgbmFua2lubXVzaGlcIDsKK+ijgeaxuuabuCA8IHNhaWtldHN1c2hvXCA7CivkuIvmhI/kuIrpgZQgPCBrYWlqb3V0YXRzdVwgOwor5qC454eD5paZIDwga2FrdW5lbnJ5b3VcIDsKK+S5l+i7iuaLkuWQpiA8IGpvdXNoYWt5b2hpXCA7CivpgJDlrZfoqLMgPCBjaGlrdWppeWFrdVwgOwor5rC05rSX5L6/5omAIDwgc3Vpc2VuYmVuam9cIDsKK+WPjue0jeWutuWFtyA8IHNodXVub3VrYWd1XCA7CivmnKrplovlor7lnLAgPCBtaWthaWtvbmNoaVwgOwor5q2j5b2T6Ziy6KGbIDwgc2VpdG91Ym91ZWlcIDsKK+S4gOW+ueiAhSA8IGl0dGV0c3Vtb25vXCA7CivlvqHljZTlipsgPCBnb2t5b3VyeW9rdVwgOwor5a2m56eR6Kmm6aiTIDwgZ2Fra2FzaGlrZW5cIDsKK+S/guWxnuS4rSA8IGtlaXpva3VjaHV1XCA7CivmvZzmsLTmr43oiaYgPCBzZW5zdWlib2thblwgOwor57Gz5Y2wIDwga29tZWppcnVzaGlcIDsKK+eXheS4reWQnyA8IGJ5b3VjaHV1Z2luXCA7Civkvb/nlKjkvqHlgKQgPCBzaGl5b3VrYWNoaVwgOwor5qW16ZmQ5YCkIDwga3lva3VnZW5jaGlcIDsKK+aVmeiCsuWtpiA8IGt5b3Vpa3VnYWt1XCA7Civpm7voqbHlrqQgPCBkZW53YXNoaXRzdVwgOwor6YGg5b+D5YqbIDwgZW5zaGlucnlva3VcIDsKK+WumOWwiuawkeWNkSA8IGthbnNvbm1pbnBpXCA7Civlrq7ltI7nnIwgPCBtaXlhemFraWtlblwgOwor5ZWG5bel5qWtIDwgc2hvdWtvdWd5b3VcIDsKK+ihneWLleeahCA8IHNob3Vkb3V0ZWtpXCA7Civog4bnn7Pnl4cgPCB0YW5zZWtpc2hvdVwgOwor6Ly45Ye65ZOBIDwgeXVzaHV0c3VoaW5cIDsKK+aZrumBjeaWh+azlSA8IGZ1aGVuYnVucG91XCA7CivpgY7libDkurrlj6MgPCBrYWpvdWppbmtvdVwgOwor5LiJ55yg6JqVIDwgc2FubWlua2Fpa29cIDsKK+mWk+asoOaziSA8IGthbmtldHN1c2VuXCA7Civlh7rlhYjmqZ/plqIgPCBkZXNha2lraWthblwgOwor5rqW5YKZ5aeU5ZOh5LyaIDwganVuYmlpaW5rYWlcIDsKK+Wkqem+jeW3nSA8IHRlbnJ5dXVrYXdhXCA7CivmlZnnv5LnlJ8gPCBreW91c2h1dXNlaVwgOwor6Zqj5o6l5ZywIDwgcmluc2V0c3VjaGlcIDsKK+eZuueUn+eOhyA8IGhhc3NlaXJpdHN1XCA7CivokaHokITnlZEgPCBidWRvdWJhdGFrZVwgOwor5aKD55WM5qiZIDwga3lvdWthaWh5b3VcIDsKK+epuui7jeWKmyA8IGt1dWd1bnJ5b2t1XCA7CivkuqTlo7Dmm7IgPCBrb3VzZWlreW9rdVwgOwor54++5YaF6ZajIDwgZ2VuJyduYWlrYWt1XCA7CivljaDmmJ/ooZMgPCBzZW5zZWlqdXRzdVwgOwor6aaZ6L6b5paZIDwga291c2hpbnJ5b3VcIDsKK+eUuumBk+WgtCA8IG1hY2hpZG91am91XCA7CivlrqPkvJ3lirnmnpwgPCBzZW5kZW5rb3VrYVwgOwor5pmC44CF5Yi744CFIDwgamlqaWtva2tva3VcIDsKK+i/keS8vOioiOeulyA8IGtpbmppa2Vpc2FuXCA7Civli5XlipvmupAgPCBkb3VyeW9rdWdlblwgOwor5oGS562J5byPIDwga291dG91c2hpa2lcIDsKK+iojuS8kOi7jSA8IHRvdWJhdHN1Z3VuXCA7CivooajnnIvmnb8gPCBvbW90ZWthbmJhblwgOwor6K235oay6YGL5YuVIDwgZ29rZW4nJ3VuZG91XCA7Civmv4PpnZLoibIgPCBub3VzZWlzaG9rdVwgOwor5q665Lq654qvIDwgc2F0c3VqaW5oYW5cIDsKK+aui+W/teizniA8IHphbicnbmVuc2hvdVwgOwor5Y6f5Zug57WQ5p6cIDwgZ2VuJydpbmtla2thXCA7Civlj4vou43pg6jpmoogPCB5dXVndW5idXRhaVwgOwor6ISz5YWF6KGAIDwgbm91anV1a2V0c3VcIDsKK+mjn+S6uueoriA8IHNob2t1amluc2h1XCA7CivotaTopJDoibIgPCBzZWtrYXNzaG9rdVwgOwor54Sh5bC95Lya56S+IDwgbXVqaW5nYWlzaGFcIDsKK+iIiOS/oemMsiA8IGtvdXNoaW5yb2t1XCA7Civpm7vnhrHlmaggPCBkZW4nJ25ldHN1a2lcIDsKK+S9nOabsuiAhSA8IHNha2t5b2t1c2hhXCA7Civlj6Tku4rmnbHopb8gPCBrb2tvbnRvdXphaVwgOwor5ZSQ6YymIDwga2FyYW5pc2hpa2lcIDsKK+eci+itt+WppumVtyA8IGthbmdvZnVjaG91XCA7CivllYbmqJnmqKkgPCBzaG91aHlvdWtlblwgOwor5oKy5oak5oW35oWoIDwgaGlmdW5rb3VnYWlcIDsKK+W4uOitmOS6uiA8IGpvdXNoaWtpamluXCA7Civlj6Tku6PmlofmmI4gPCBrb2RhaWJ1bm1laVwgOwor6Kaz5a6i5bGkIDwga2Fua3lha3Vzb3VcIDsKK+eEoeeUo+aUv+WFmiA8IG11c2Fuc2VpdG91XCA7CivkuIDph43moZwgPCBoaXRvZXpha3VyYVwgOwor6YG45oyZ5rqW5YKZIDwgc2Vua3lvanVuYmlcIDsKK+WcsOWLleiqrCA8IGNoaWRvdXNldHN1XCA7CivmhI/orZjkuI3mmI4gPCBpc2hpa2lmdW1laVwgOwor55m95Lqc6LOqIDwgaGFrdWFzaGl0c3VcIDsKK+iGoOedgOWJpCA8IGtvdWNoYWt1emFpXCA7CivkuIDmrrXokL0gPCBpY2hpZGFucmFrdVwgOwor57WE5ZCI5Li7576pIDwga3VtaWFpc2h1Z2lcIDsKK+i7jeeUqOmzqSA8IGd1bicneW91YmF0b1wgOwor5L+X5paH5a2mIDwgem9rdWJ1bmdha3VcIDsKK+WAi+S9k+eZuueUnyA8IGtvdGFpaGFzc2VpXCA7Civpm7vlnKfoqIggPCBkZW4nJ2F0c3VrZWlcIDsKK+iWrOWxgOaWuSA8IHlha2t5b2t1aG91XCA7Civms5XliLblsYAgPCBob3VzZWlreW9rdVwgOwor6Jas5a2m6ICFIDwgeWFrdWdha3VzaGFcIDsKK+S/guS6ieeJqSA8IGtlaXNvdWJ1dHN1XCA7Civlm5vliIbpn7PnrKYgPCBzaGlidW4nJ29ucHVcIDsKK+S9v+W+kuabuOewoSA8IHNoaXRvc2hva2FuXCA7CivlhKrmn5TkuI3mlq0gPCB5dXVqdXVmdWRhblwgOwor6ISx5q+b5YmkIDwgZGF0c3Vtb3V6YWlcIDsKK+eFjumkheiSsuWboyA8IHNlbmJlaWJ1dG9uXCA7CivnrqHovYTmqKkgPCBrYW5rYXRzdWtlblwgOwor5YCf55So5pu4IDwgc2hha3V5b3VzaG9cIDsKK+S6iOWumuiqv+WSjCA8IHlvdGVpY2hvdXdhXCA7CivlpYnlhazlj6MgPCBob3Vrb3VndWNoaVwgOwor5YWI56WW5Lyd5p2lIDwgc2Vuem9kZW5yYWlcIDsKK+aUvumAgeWxgCA8IGhvdXNvdWt5b2t1XCA7Civkuovmpa3pg6jliLYgPCBqaWd5b3VidXNlaVwgOwor6buE55m96ImyIDwga29oYWt1c2hva3VcIDsKK+iHqOaZguWIl+i7iiA8IHJpbmppcmVzc2hhXCA7CivlrprmnJ/oqabpqJMgPCB0ZWlraXNoaWtlblwgOwor576957mU6KK0IDwgaGFvcmloYWthbWFcIDsKK+e3j+WQiOiqsueojiA8IHNvdWdvdWthemVpXCA7CivpgaDpmpTorJvnvqkgPCBlbmtha3Vrb3VnaVwgOwor6Zmk5bmV5byPIDwgam9tYWt1c2hpa2lcIDsKK+a1t+W6leayueeUsCA8IGthaXRlaXl1ZGVuXCA7CivnnJ/kuIDmloflrZcgPCBtYWljaGltb25qaVwgOwor6J2454mbIDwgZGVuZGVubXVzaGlcIDsKK+mbu+ipseiqv+afuyA8IGRlbndhY2hvdXNhXCA7CivmioDooZPmj7TliqkgPCBnaWp1dHN1ZW5qb1wgOwor5by35Yi255qEIDwga3lvdXNlaXRla2lcIDsKK+W8t+W/g+WJpCA8IGt5b3VzaGluemFpXCA7CivnlJ/mtLvnkrAgPCBzZWlrYXRzdWthblwgOwor5pil5LiA55WqIDwgaGFydWljaGliYW5cIDsKK+WNgeWFq+eVqiA8IGp1dWhhY2hpYmFuXCA7Civpu5LptqsgPCBrdXJvdHN1Z3VtaVwgOwor5YGP5ZCR5Zue6LevIDwgaGVua291a2Fpcm9cIDsKK+S6iOWumue0jeeojiA8IHlvdGVpbm91emVpXCA7CivnmoflkI7pmZvkuIsgPCBrb3Vnb3VoZWlrYVwgOwor6YCj6YKm5Yi25bqmIDwgcmVucG91c2VpZG9cIDsKK+mMpuibhyA8IG5pc2hpa2loZWJpXCA7CivntYLouqvlrpggPCBzaHV1c2hpbmthblwgOwor5Zu95L6NIDwga3VuaXphbXVyYWlcIDsKK+mbu+awl+mbu+WtkCA8IGRlbmtpZGVuc2hpXCA7Civku6PooYzmqZ/plqIgPCBkYWlrb3VraWthblwgOwor55ay5Yq05Zuw5oaKIDwgaGlyb3Vrb25wYWlcIDsKK+ebl+mbo+S/nemZuiA8IHRvdW5hbmhva2VuXCA7CivntJTnnJ/nhKHlnqIgPCBqdW5zaGlubXVrdVwgOwor5pyI6ZW355+zIDwgZ2V0Y2hvdXNla2lcIDsKK+aVmeiBt+WToSA8IGt5b3VzaG9rdWluXCA7CivkuIvkvY3kupLmj5vmgKcgPCBrYWlnb2thbnNlaVwgOwor5rOV5YuZ5aSn6IejIDwgaG91bXVkYWlqaW5cIDsKK+mAgeWIpeS8miA8IHNvdWJldHN1a2FpXCA7Civlh7rlk4Hlm70gPCBzaHVwcGlua29rdVwgOwor5YiR5LqL5Yem5YiGIDwga2VpamlzaG9idW5cIDsKK+mnkOi7iumBleWPjSA8IGNodXVzaGFpaGFuXCA7CivljZfkuqznlLogPCBuYW5raW5tYWNoaVwgOwor5pmC5qmf5bCa5pepIDwgamlraXNob3Vzb3VcIDsKK+mBk+W+s+eahCA8IGRvdXRva3V0ZWtpXCA7CivllYbmpa3nlYwgPCBzaG91Z3lvdWthaVwgOwor5Y+O57SN6aGNIDwgc2h1dW5vdWdha3VcIDsKK+m8jueri+aIpiA8IHRlaXJpdHN1c2VuXCA7Civljp/liYfnmoQgPCBnZW5zb2t1dGVraVwgOwor5bm06YeR5Z+66YeRIDwgbmVua2lua2lraW5cIDsKK+WCjeiBtOaWmSA8IGJvdWNob3VyeW91XCA7CivljYPlhobmnK0gPCBzZW4nJ2Vuc2F0c3VcIDsKK+WumuWPjuWFpSA8IHRlaXNodXVueXV1XCA7Civpganms5XooYzngrogPCB0ZWtpaG91a291aVwgOwor54mp6KaL6YGK5bGxIDwgbW9ub21peXVzYW5cIDsKK+W+l+aEj+a6gOmdoiA8IHRva3VpbWFubWVuXCA7CivmmYLlt67lh7rli6QgPCBqaXNhc2h1a2tpblwgOwor5pS/5rK75ZWP6aGMIDwgc2Vpamltb25kYWlcIDsKK+e1tuWvvuaVrOiqniA8IHpldHRhaWtlaWdvXCA7CivpjbXnm6Tmpb3lmaggPCBrZW5iYW5nYWtraVwgOwor6Ki06Kif5LqL5Lu2IDwgc29zaG91amlrZW5cIDsKK+aEj+WRs+W9ueWJsiA8IGltaXlha3V3YXJpXCA7Civlha3lpKflt54gPCByb2t1ZGFpc2h1dVwgOwor5Ymy5byV5Yi4IDwgd2FyaWJpa2lrZW5cIDsKK+S9j+eUn+a0uyA8IGp1dXNlaWthdHN1XCA7CivkvqHmoLzlronlrpogPCBrYWtha3VhbnRlaVwgOwor5LuK5LiK6Zmb5LiLIDwga2luam91aGVpa2FcIDsKK+mbu+awl+ezu+e1sSA8IGRlbmtpa2VpdG91XCA7CivliY3nq4vohbogPCB6ZW5yaXRzdXNlblwgOwor5YWM5o+b6YqA6KGMIDwgZGFrYW5naW5rb3VcIDsKK+WGmeecn+mbhiA8IHNoYXNoaW5zaHV1XCA7CivlhajkvJrkuIDoh7QgPCB6ZW5rYWlpdGNoaVwgOwor55m+5LiH6YGNIDwgaHlha3VtYW5iZW5cIDsKK+idieaZgumbqCA8IHNlbWlzaGlndXJlXCA7CivpurvolqzmgqPogIUgPCBtYXlha3VrYW5qYVwgOwor5Ymy5byV5YK1IDwgd2FyaWJpa2lzYWlcIDsKK+W/g+apn+S4gOi7oiA8IHNoaW5raWl0dGVuXCA7CivnhKHlkI3miKblo6sgPCBtdW1laXNlbnNoaVwgOwor5ZSv5LiA54Sh5LqMIDwgeXVpaXRzdW11bmlcIDsKK+aOpeedgOWJpCA8IHNldGNoYWt1emFpXCA7CivmiYvooZPlj7AgPCBzaHVqdXRzdWRhaVwgOwor6Ziy54Gr5omJIDwgYm91a2F0b2JpcmFcIDsKK+S5seWFpeiAhSA8IHJhbicnbnl1dXNoYVwgOwor6KiI55S755qEIDwga2Vpa2FrdXRla2lcIDsKK+iyoeaUv+WuieWumiA8IHphaXNlaWFudGVpXCA7Civoqr/ljbDlvI8gPCBjaG91aW5zaGlraVwgOwor55yL6K235a2m5qChIDwga2FuZ29nYWtrb3VcIDsKK+mAhui7ouWxpCA8IGd5YWt1dGVuc291XCA7CivnlJ/mtLvms5UgPCBzZWlrYXRzdWhvdVwgOwor57KY5Zyf6LOqIDwgbmVuZG9zaGl0c3VcIDsKK+WIhumhnuWfuua6liA8IGJ1bnJ1aWtpanVuXCA7CivpgIbovLjlhaUgPCBneWFrdXl1bnl1dVwgOwor5paH5pu45YG96YCgIDwgYnVuc2hvZ2l6b3VcIDsKK+WtpOi7jeWlrumXmCA8IGtvZ3VuZnVudG91XCA7CivmlrDoiIjlm70gPCBzaGlua291a29rdVwgOwor5pWw5qyh5peF5Yi4IDwgc3V1amlyeW9rZW5cIDsKK+WQiOebrueahCA8IGdvdW1va3V0ZWtpXCA7CivlkIjmiJDnuYrntq0gPCBnb3VzZWlzZW4nJ2lcIDsKK+aWsOS6uuizniA8IHNoaW5qaW5zaG91XCA7Civpm7vloLHlsYAgPCBkZW5wb3VreW9rdVwgOwor6LK05peP5pS/5rK7IDwga2l6b2t1c2VpamlcIDsKK+WNmuaEm+S4u+e+qSA8IGhha3VhaXNodWdpXCA7CivkuIDmlonmpJzmjJkgPCBpc3NlaWtlbmt5b1wgOwor5Lqc6Ymb6I+v6Luf6IaPIDwgYWVua2FuYW5rb3VcIDsKK+S4ieW5leeJqSA8IHNhbm1ha3Vtb25vXCA7Civnmb3mnKjok64gPCBoYWt1bW9rdXJlblwgOwor5ZWG5qWt5rivIDwgc2hvdWd5b3Vrb3VcIDsKK+S4gOmHjOWhmiA8IGljaGlyaWR6dWthXCA7CivntYLouqvliJEgPCBzaHV1c2hpbmtlaVwgOwor5L2O5rip6Ly46YCBIDwgdGVpb24nJ3l1c291XCA7CivpoqjlhYnmmI7lqpogPCBmdXVrb3VtZWliaVwgOwor5b6M6YOo5bqn5bitIDwga291YnV6YXNla2lcIDsKK+WLleWKm+WtpiA8IGRvdXJpa2lnYWt1XCA7Civnr4DmlpnnkIYgPCBzZWNoaXJ5b3VyaVwgOwor5Ye65ZOB5Lq6IDwgc2h1cHBpbicnbmluXCA7Civlgo3ogbTluK0gPCBib3VjaG91c2VraVwgOwor5LiN6YGp5YiHIDwgZnV0ZWtpc2V0c3VcIDsKK+WAi+S6uuaKleizhyA8IGtvamludG91c2hpXCA7CivlrabpmpvnmoQgPCBnYWt1c2FpdGVraVwgOwor56uc6aqo5bqnIDwgcnl1dWtvdHN1emFcIDsKK+S/nemZuuS8muekviA8IGhva2VuZ2Fpc2hhXCA7CivnoavljJbmsLTntKAgPCByeXV1a2FzdWlzb1wgOwor5Luu5p2h57SEIDwga2FyaWpvdXlha3VcIDsKK+aXpeacrOWIl+WztiA8IG5paG9ucmV0dG91XCA7Civpmo7ntJrnq6AgPCBrYWlreXV1c2hvdVwgOwor5oim5pmC5YWs5YK1IDwgc2Vuamlrb3VzYWlcIDsKK+aKteaKl+WKmyA8IHRlaWtvdXJ5b2t1XCA7Civmo67mnpflraYgPCBzaGlucmluZ2FrdVwgOwor5rW35ZOh57WE5ZCIIDwga2FpaW5rdW1pYWlcIDsKK+eZvuS4h+iogCA8IGh5YWt1bWFuZ2VuXCA7Civkv67ovp7nlpHllY8gPCBzaHV1amlnaW1vblwgOwor5riv55S6IDwgbWluYXRvbWFjaGlcIDsKK+azleWumuiyqOW5oyA8IGhvdXRlaWthaGVpXCA7CivkvZPlhoXlj5fnsr4gPCB0YWluYWlqdXNlaVwgOwor5YyW57Kn5LiLIDwga2VzaG91c2hpdGFcIDsKK+iZq+iWrCA8IG11c2hpZ3VzdXJpXCA7Civmpb3oprPkuLvnvqkgPCByYWtrYW5zaHVnaVwgOwor6LWk5o+Q54GvIDwgYWthY2hvdWNoaW5cIDsKK+WFpemZouaCo+iAhSA8IG55dXVpbmthbmphXCA7CivlibXpgKDkuLsgPCBzb3V6b3VudXNoaVwgOwor6Zai6YCj5LqL6aCFIDwga2FucmVuamlrb3VcIDsKK+WOn+S+oeioiOeulyA8IGdlbmtha2Vpc2FuXCA7Civpm7vlrZDlm57ot68gPCBkZW5zaGlrYWlyb1wgOwor5YCZ5a2d6LOiIDwgaG91c2hhdXNoZW5cIDsKK+mHjeeCueS4u+e+qSA8IGp1dXRlbnNodWdpXCA7CivkvqHpm7vlrZDluK8gPCBrYWRlbnNoaXRhaVwgOwor5pyJ5Yq56ZyA6KaBIDwgeXV1a291anV5b3VcIDsKK+S6i+alreW5tOW6piA8IGppZ3lvdW5lbmRvXCA7Civnm7jlj43lrprnkIYgPCBzb3VoYW50ZWlyaVwgOwor5YWt5YiG5YSA5bqnIDwgcm9rdWJ1bmdpemFcIDsKK+WGrOWwhui7jSA8IGZ1eXVzaG91Z3VuXCA7CivlronlrprnirbmhYsgPCBhbnRlaWpvdXRhaVwgOwor5rCR5Li75pS/5rK7IDwgbWluc2h1c2VpamlcIDsKK+eLrOe/kuabuCA8IGRva3VzaHV1c2hvXCA7CivlhazoqLzmlpkgPCBrb3VzaG91cnlvdVwgOwor5ZSQ57SFIDwga2FyYWt1cmVuYWlcIDsKK+e2v+e5lOeJqSA8IG1lbicnb3JpbW9ub1wgOwor5YyW5a2m57mK57atIDwga2FnYWt1c2VuJydpXCA7Civntbblr77pn7PmhJ8gPCB6ZXR0YWlvbmthblwgOwor5YWI5YWl5Li7IDwgc2VuJydueXV1c2h1XCA7CivmnIDntYLnmoQgPCBzYWlzaHV1dGVraVwgOwor5pys5bu656+JIDwgaG9ua2VuY2hpa3VcIDsKK+iHqueEtuegtOWjiiA8IHNoaXplbmhha2FpXCA7CivloLHpgZPmqZ/plqIgPCBob3Vkb3VraWthblwgOwor5o2V6Jmc5Lqk5o+bIDwgaG9yeW9rb3VrYW5cIDsKK+eLl+WwvuiNiSA8IGVub2tvcm9ndXNhXCA7CivkupznsbPliKnliqDmnYkgPCBhbWVyaWthc3VnaVwgOwor5L6h5YCk5Yik5patIDwga2FjaGloYW5kYW5cIDsKK+ihjOWVhuS6uiA8IGd5b3VzaG91bmluXCA7CivliIfliIbms5UgPCBzZXRzdWJ1bmhvdVwgOwor5omL57e05omL566hIDwgdGVyZW50ZWt1ZGFcIDsKK+WZqOaisOS9k+aTjSA8IGtpa2FpdGFpc291XCA7CivppIrogIHkv53pmbogPCB5b3Vyb3Vob2tlblwgOwor5bCP55m+5aeTIDwga29ieWFrdXNob3VcIDsKK+W/g+S4iOWkqyA8IGtva29yb2pvdWJ1XCA7Civps6XpoZ7lraYgPCBjaG91cnVpZ2FrdVwgOwor5byx5bm06ICFIDwgamFrdW5lbm1vbm9cIDsKK+S4remaiumVtyA8IGNodXV0YWljaG91XCA7CivkuI3lvZPooajnpLogPCBmdXRvdWh5b3VqaVwgOwor5a6J5YWo6YGL6LuiIDwgYW56ZW4nJ3VudGVuXCA7Civnm7joq4flvbkgPCBzb3VkYW4nJ3lha3VcIDsKK+S6pOmam+evhOWbsiA8IGtvdXNhaWhhbicnaVwgOwor5b+c55So56eR5a2mIDwgb3V5b3VrYWdha3VcIDsKK+mjn+S6i+aZgiA8IHNob2t1amlkb2tpXCA7CivlhavpnaLkvZMgPCBoYWNoaW1lbnRhaVwgOwor5LiN5pW05ZCI5Lq6IDwgZnVzZWlnb3VqaW5cIDsKK+WOn+WIpOaxuiA8IGdlbmhhbmtldHN1XCA7CivljZjlhYPliLbluqYgPCB0YW5nZW5zZWlkb1wgOwor5LiA5q2p5YmN6YCyIDwgaXBwb3plbnNoaW5cIDsKK+WbveeOi+mZm+S4iyA8IGtva3VvdWhlaWthXCA7CivmpbXlnLDlnI8gPCBreW9rdWNoaWtlblwgOwor5pS+6YCB6KGb5pifIDwgaG91c291ZWlzZWlcIDsKK+WvguWFiea1hOWcnyA8IGpha2tvdWpvdWRvXCA7Civnm6Plr5/lrpggPCBrYW5zYXRzdWthblwgOwor5b6M55Sf5aSn5LqLIDwgZ29zaG91ZGFpamlcIDsKK+S4ieawkeS4u+e+qSA8IHNhbm1pbnNodWdpXCA7Civnmb3njonnsokgPCBzaGlyYXRhbWFrb1wgOwor5ZWG5qWt5paHIDwgc2hvdWd5b3VidW5cIDsKK+awl+euoeWIh+mWiyA8IGtpa2Fuc2Vra2FpXCA7CivlpKnli5XoqqwgPCB0ZW5kb3VzZXRzdVwgOwor5YKy5bK45LiN6YGcIDwgZ291Z2FuZnVzb25cIDsKK+i+u+iqrOazlSA8IHRzdWppc2VwcG91XCA7CivlrrbniLbplbfliLYgPCBrYWZ1Y2hvdXNlaVwgOwor5pqX6buS5pif6ZuyIDwgYW5rb2t1c2VpdW5cIDsKK+i/keS7o+WbveWutiA8IGtpbmRhaWtva2thXCA7CivnhYnkuLnooZMgPCByZW50YW5qdXRzdVwgOwor6KW/5rW35bK4IDwgbmlzaGlrYWlnYW5cIDsKK+WJjemAlOacieacmyA8IHplbnRveXV1Ym91XCA7CivmgKXkuIrmmIcgPCBreXV1am91c2hvdVwgOwor5a6d55+z5ZWGIDwgaG91c2VraXNob3VcIDsKK+aPm+eul+eOhyA8IGthbnNhbnJpdHN1XCA7Civlu7roqK3ogIUgPCBrZW5zZXRzdXNoYVwgOwor5YyX44CF6KW/IDwgaG9rdWhva3VzZWlcIDsKK+mfs+alveeQhuirliA8IG9uZ2FrdXJpcm9uXCA7Civlp5ToqJfosqnlo7IgPCBpdGFrdWhhbmJhaVwgOwor6YqA5ama5byPIDwgZ2lua29uc2hpa2lcIDsKK+S4ieWvkuWbm+a4qSA8IHNhbmthbnNoaW9uXCA7CivosqfkuY/miYDluK8gPCBiaW5ib3Vqb3RhaVwgOwor5b6h5Ly96I2J5a2QIDwgb3RvZ2l6b3VzaGlcIDsKK+elnuWliOW3neecjCA8IGthbmFnYXdha2VuXCA7Civpm7vmsJfoo4Xnva4gPCBkZW5raXNvdWNoaVwgOwor5Zyw5pa56K2w5LyaIDwgY2hpaG91Z2lrYWlcIDsKK+WOn+WLleWKmyA8IGdlbmRvdXJ5b2t1XCA7Civkv4Tmma/msJcgPCBuaXdha2FnZWlraVwgOwor6KOF55Sy6YOo6ZqKIDwgc291a291YnV0YWlcIDsKK+S4jeWPr+WFpeaApyA8IGZ1a2FueXV1c2VpXCA7CivmgqrmiK/ogIUgPCBpdGF6dXJhbW9ub1wgOwor5aSn56aP5bizIDwgZGFpZnVrdWNob3VcIDsKK+aZguevgOafhCA8IGppc2V0c3VnYXJhXCA7CivljZfkuqzmnKjntr8gPCBuYW5raW5tb21lblwgOwor56Ov6bWvIDwgaXNvaGl5b2RvcmlcIDsKK+WNsOixoeS4u+e+qSA8IGluc2hvdXNodWdpXCA7CivlkLjooYDprLwgPCBreXV1a2V0c3VraVwgOwor57OW5bC/55eFIDwgdG91bnlvdWJ5b3VcIDsKK+S4gOW8teS4gOW8myA8IGl0Y2hvdWlzc2hpXCA7CivljLrplpPliJfou4ogPCBrdWthbnJlc3NoYVwgOwor6Lui5Lu75YWIIDwgdGVuJyduaW5zYWtpXCA7CivmlK/phY3lipsgPCBzaGloYWlyeW9rdVwgOwor55u45oCd55u45oSbIDwgc291c2hpc291YWlcIDsKK+iIquepuuWfuuWcsCA8IGtvdWt1dWtpY2hpXCA7Civnm6Pmn7voqJjpjLIgPCBrYW5zYWtpcm9rdVwgOwor5oqA6KGT56e76LuiIDwgZ2lqdXRzdWl0ZW5cIDsKK+eUo+WFkOWItumZkCA8IHNhbmppc2VpZ2VuXCA7CivljZjpn7Pnr4AgPCB0YW4nJ29uc2V0c3VcIDsKK+aWsOiBnueoriA8IHNoaW5idW5kYW5lXCA7Civpo73lkoznirbmhYsgPCBob3V3YWpvdXRhaVwgOwor5L2O5LiY6Zm1IDwgdGVpa3l1dXJ5b3VcIDsKK+Wbvemam+eahCA8IGtva3VzYWl0ZWtpXCA7Civpg7flnJ/oibIgPCBreW91ZG9zaG9rdVwgOwor56uc55Sw5aerIDwgdGF0c3V0YWhpbWVcIDsKK+Wwj+WtpumkqCA8IHNob3VnYWt1a2FuXCA7Civnn6Xog73mpJzmn7sgPCBjaGlub3VrZW5zYVwgOwor5L2/56+A5ZujIDwgc2hpc2V0c3VkYW5cIDsKK+a2iOaBr+aWhyA8IHNob3Vzb2t1YnVuXCA7Civnt4vooaPojYkgPCBoaWdvcm9tb3NvdVwgOwor5Li76KiI5bGAIDwgc2h1a2Vpa3lva3VcIDsKK+mBk+W+s+W/gyA8IGRvdXRva3VzaGluXCA7CivmnKrmsbrlm5ogPCBtaWtldHN1c2h1dVwgOwor5oSb5ZSx5puyIDwgYWlzaG91a3lva3VcIDsKK+WtpOW9seaChOeEtiA8IGtvZWlzaG91emVuXCA7CivkupTnqK7nq7bmioAgPCBnb3NodWt5b3VnaVwgOwor5YG15a+f6ZqKIDwgdGVpc2F0c3V0YWlcIDsKK+Wbo+S9k+S/nemZuiA8IGRhbnRhaWhva2VuXCA7Civnmbrkv6HlgbQgPCBoYXNzaGluZ2F3YVwgOwor5aeJ5aa56YO95biCIDwgc2hpbWFpdG9zaGlcIDsKK+mBoOWxsemHjCA8IHRvb3lhbWF6YXRvXCA7CivnpZ7ntYznl5sgPCBzaGlua2VpdHN1dVwgOwor5LiN6YCa566H5omAIDwgZnV0c3V1a2FzaG9cIDsKK+elnue1jOeXhyA8IHNoaW5rZWlzaG91XCA7CivnpZ7ntYznl4UgPCBzaGlua2VpYnlvdVwgOwor56C06YKq6aGV5q2jIDwgaGFqYWtlbnNob3VcIDsKK+aUv+ayu+Wbo+S9kyA8IHNlaWppZGFudGFpXCA7CivkuIDllpzkuIDmhoIgPCBpa2tpaWNoaXl1dVwgOwor5a6a552A5rayIDwgdGVpY2hha3Vla2lcIDsKK+W8geiovOWtpiA8IGJlbnNob3VnYWt1XCA7Civmupblgpnlkb3ku6QgPCBqdW5iaW1laXJlaVwgOwor5Y+X6aiT56eR55uuIDwganVrZW5rYW1va3VcIDsKK+acqOeuoealveWZqCA8IG1va2thbmdha2tpXCA7Civnmbrkv6HkurogPCBoYXNzaGluJyduaW5cIDsKK+S4remrmOmfs+mDqCA8IGNodXVrb3VvbmJ1XCA7Civlj4vmhJvntZDlqZogPCB5dXVhaWtla2tvblwgOwor57eR5Zyw5bivIDwgcnlva3VjaGl0YWlcIDsKK+a1t+i7jeWfuuWcsCA8IGthaWd1bmtpY2hpXCA7CivnlJ/mtLvlnI8gPCBzZWlrYXRzdWtlblwgOwor6Zu75a2Q57Sg5a2QIDwgZGVuc2hpc29zaGlcIDsKK+eGseS8neWwjiA8IG5ldHN1ZGVuZG91XCA7CivpgZPlvrPlraYgPCBkb3V0b2t1Z2FrdVwgOwor5oSb5Zu96YGL5YuVIDwgYWlrb2t1dW5kb3VcIDsKK+mBqeagvOiAhSA8IHRla2lrYWt1c2hhXCA7Civlm7Pmm7jlrqQgPCB0b3Nob3NoaXRzdVwgOwor6Kaz6Z+z5qeYIDwga2FuJydub25zYW1hXCA7CivntZDlqZrlvI8gPCBrZWtrb25zaGlraVwgOwor6KW/5rSL5byPIDwgc2VpeW91c2hpa2lcIDsKK+S6uuaWh+WcsOeQhiA8IGppbm1vbmNoaXJpXCA7CivlirTlg43kuonorbAgPCByb3Vkb3Vzb3VnaVwgOwor5oOF5aCx5Yem55CGIDwgam91aG91c2hvcmlcIDsKK+WPr+Wkieizh+acrCA8IGthaGVuc2hpaG9uXCA7Civngrrmm7/lt67nm4ogPCBrYXdhc2VzYWVraVwgOwor6KqY5ouQ5LqL5Lu2IDwgeXV1a2FpamlrZW5cIDsKK+S4ieWkp+mDveW4giA8IHNhbmRhaXRvc2hpXCA7CivnlLflhqXliKkgPCBvdG9rb215b3VyaVwgOwor5omA6KaB5pmC6ZaTIDwgc2hveW91amlrYW5cIDsKK+Wls+aoqemBi+WLlSA8IGpva2VuJyd1bmRvdVwgOwor5YiG5pWj5Yem55CGIDwgYnVuc2Fuc2hvcmlcIDsKK+i1sOihjOWPr+iDvSA8IHNvdWtvdWthbm91XCA7Civlkb3ntrEgPCBpbm9jaGlkenVuYVwgOwor5rWB6KiA6aOb6KqeIDwgcnl1dWdlbmhpZ29cIDsKK+S4gOaWsOe0gOWFgyA8IGlzc2hpbmtpZ2VuXCA7CivlvpLmiYvkvZPmk40gPCB0b3NodXRhaXNvdVwgOwor5LiK6IWV6aqoIDwgam91d2Fua290c3VcIDsKK+eUn+WRveWKmyA8IHNlaW1laXJ5b2t1XCA7CivnoazpqqjmvKIgPCBrb3Vrb3RzdWthblwgOwor5ZWG5qWt5ZywIDwgc2hvdWd5b3VjaGlcIDsKK+mHkei9oSA8IGthbmFndXRzdXdhXCA7CivkuIflubTluoogPCBtYW4nJ25lbmRva29cIDsKK+WPo+i7iiA8IGt1Y2hpZ3VydW1hXCA7CivorJvph4jluKsgPCBrb3VzaGFrdXNoaVwgOwor5LiJ5bmF5a++IDwgc2FucHVrdXRzdWlcIDsKK+ibi+eZveWwvyA8IHRhbnBha3VueW91XCA7CivliLrmv4Doh60gPCBzaGlnZWtpc2h1dVwgOwor6I2J6Z6L6JmrIDwgd2FyYWppbXVzaGlcIDsKK+mHkeiejealrSA8IGtpbicneXV1Z3lvdVwgOwor5bCB5bu65Li7576pIDwgaG91a2Vuc2h1Z2lcIDsKK+iPnOeoruayuSA8IG5hdGFuZWFidXJhXCA7Civlj5fpqJPmiKbkuokgPCBqdWtlbnNlbnNvdVwgOwor5Ye66Zuy5aSn56S+IDwgaXp1bW90YWlzaGFcIDsKK+mbm+S6uuW9oiA8IGhpbmFuaW5neW91XCA7CivmqKnploDli6LlrrYgPCBrZW5tb25zZWlrYVwgOwor54Sh552A6Zm4IDwgbXVjaGFrdXJpa3VcIDsKK+S4iuWIhuWIpSA8IGpvdWZ1bmJldHN1XCA7CivlpKfli5XohIggPCBkYWlkb3VteWFrdVwgOwor54Sh57ea5pON57imIDwgbXVzZW5zb3VqdXVcIDsKK+elnueEoeaciCA8IGthbicnbmFkenVraVwgOwor5bm86aa05p+TIDwgb3NhbmFuYWppbWlcIDsKK+WGhuWRqOeOhyA8IGVuc2h1dXJpdHN1XCA7CivlgJ/lrrbkuonorbAgPCBzaGFra2Fzb3VnaVwgOwor5a6H5a6Z56eR5a2mIDwgdWNodXVrYWdha3VcIDsKK+WVhualreWPsiA8IHNob3VneW91c2hpXCA7Civlj6Tlhbjoirjog70gPCBrb3RlbmdlaW5vdVwgOwor5bGx5bKz55eFIDwgc2FuZ2FrdWJ5b3VcIDsKK+imquS7u+WumCA8IHNoaW4nJ25pbmthblwgOwor6L+96Leh6ICFIDwgdHN1aXNla2lzaGFcIDsKK+ixquiPr+e1oueImyA8IGdvdWtha2VucmFuXCA7CivnmbrkvJrlvI8gPCBoYWtrYWlzaGlraVwgOwor5amm5Lq66YGL5YuVIDwgZnVqaW4nJ3VuZG91XCA7CivluorpnaLnqY0gPCB5dWthbWVuc2VraVwgOwor5LiN5YuV5piO546LIDwgZnVkb3VteW91b3VcIDsKK+S9k+WkluWPl+eyviA8IHRhaWdhaWp1c2VpXCA7Civni7jopqrniLYgPCB0YW51a2lveWFqaVwgOwor5pyo55+z5ryiIDwgYm9rdXNla2lrYW5cIDsKK+WbvemYsuecgSA8IGtva3Vib3VzaG91XCA7Civli6Tli5nlubTpmZAgPCBraW5tdW5lbmdlblwgOwor5Zu95paH5a2mIDwga29rdWJ1bmdha3VcIDsKK+eUn+auluiFuiA8IHNlaXNob2t1c2VuXCA7CivmuoDloLTkuIDoh7QgPCBtYW5qb3VpdGNoaVwgOwor5YmN5LiW55Sf5a2YIDwgemVuc2VzZWl6b25cIDsKK+iHquauuueahCA8IGppc2F0c3V0ZWtpXCA7CivkvJroqIjlubTluqYgPCBrYWlrZWluZW5kb1wgOwor6YCg54mp5Li7IDwgem91YnV0c3VzaHVcIDsKK+S4h+iRieS7ruWQjSA8IG1hbicneW91Z2FuYVwgOwor5YKN6IG06ZqP5oSPIDwgYm91Y2hvdXp1aWlcIDsKK+eUqOWFteihkyA8IHlvdWhlaWp1dHN1XCA7Civntbblr77lpJrmlbAgPCB6ZXR0YWl0YXN1dVwgOwor5Y+W6Kq/IDwgdG9yaXNoaXJhYmVcIDsKK+mAgOiBt+mHkSA8IHRhaXNob2t1a2luXCA7CivntIXnmb3oqablkIggPCBrb3VoYWt1amlhaVwgOwor5Lya6KiI55uj5p+7IDwga2Fpa2Vpa2Fuc2FcIDsKK+W9juaciOeKtiA8IHdhbmdldHN1am91XCA7CivlhavntJjkuIDlrocgPCBoYWtrb3VpY2hpdVwgOwor6Iie5Y+w6KOF572uIDwgYnV0YWlzb3VjaGlcIDsKK+eUn+ayoeW5tCA8IHNlaWJvdHN1bmVuXCA7CivljZjkuIDmgKcgPCB0YW4nJ2l0c3VzZWlcIDsKK+m8u+afsSA8IGhhbmFiYXNoaXJhXCA7CivmjIHntprlipsgPCBqaXpva3VyeW9rdVwgOwor5LqL5YuZ6ZW35a6YIDwgamltdWNob3VrYW5cIDsKK+S4gOiIrOekvuS8miA8IGlwcGFuc2hha2FpXCA7Civml6XluJ3mmYLku6MgPCBuaXR0ZWlqaWRhaVwgOwor5paw6IGe5qWtIDwgc2hpbmJ1bmd5b3VcIDsKK+eZu+Wdgui7iue3miA8IHRvaGFuc2hhc2VuXCA7CivnpZ7ntYzmoLggPCBzaGlua2Vpa2FrdVwgOwor5LiW55WM5pyA5aSnIDwgc2VrYWlzYWlkYWlcIDsKK+aMh+WwjuWOn+eQhiA8IHNoaWRvdWdlbnJpXCA7CivmnqLou7jlm70gPCBzdXVqaWt1a29rdVwgOwor6YCg5qyh6aGb5rKbIDwgem91aml0ZW5wYWlcIDsKK+iIquepuueuoeeQhiA8IGtvdWt1dWthbnJpXCA7CivkuInoibLniYggPCBzYW5zaG9rdWJhblwgOwor56qv5Y2wIDwga2FtYWppcnVzaGlcIDsKK+S4remWk+mnhSA8IGNodXVrYW4nJ2VraVwgOwor6IO96KOF5p2fIDwgbm91c2hvdXpva3VcIDsKK+e1kOaZtuWtpiA8IGtlc3Nob3VnYWt1XCA7CivmhJ/mn5PntYzot68gPCBrYW5zZW5rZWlyb1wgOwor6Kej5rG65rOVIDwga2Fpa2V0c3Vob3VcIDsKK+itpuaIkuiJsiA8IGtlaWthaXNob2t1XCA7CivkuoznrYnou43mm7kgPCBuaXRvdWd1bnNvdVwgOwor5LiA5q+b5L2cIDwgaWNoaW1vdXNha3VcIDsKK+a4qeeGseaApyA8IG9uJyduZXRzdXNlaVwgOwor6Ziy54Gr5aGX5paZIDwgYm91a2F0b3J5b3VcIDsKK+iHque4hOiHque4myA8IGppam91amliYWt1XCA7CivpgJTkuK3kuIvou4ogPCB0b2NodXVnZXNoYVwgOwor55Kw5aKD5L+d6K23IDwga2Fua3lvdWhvZ29cIDsKK+WYmOeZuuimi+WZqCA8IHVzb2hha2tlbmtpXCA7CivpnaLkvJrmmYLplpMgPCBtZW5rYWlqaWthblwgOwor6YeN5qmf6Zai6YqDIDwganV1a2lrYW5qdXVcIDsKK+WGheWPjeiEmiA8IG5haWhhbmt5YWt1XCA7Civms5XmoYjlr6norbAgPCBob3VhbnNoaW5naVwgOwor5bu257iE5ryBIDwgaGFlbmF3YXJ5b3VcIDsKK+ebtOaWueS9kyA8IGNob2t1aG91dGFpXCA7Civoh6rli5XliLblvqEgPCBqaWRvdXNlaWd5b1wgOwor5a625peP6YGUIDwga2F6b2t1dGFjaGlcIDsKK+WIuua/gOeahCA8IHNoaWdla2l0ZWtpXCA7CivlgIvkurrmjIflsI4gPCBrb2ppbnNoaWRvdVwgOwor6Ieq54S255m654GrIDwgc2hpemVuaGFra2FcIDsKK+S4u+WLmeWkp+iHoyA8IHNodW11ZGFpamluXCA7Civnn63mnJ/msbrmiKYgPCB0YW5raWtlc3NlblwgOwor6KiA6Kqe6YGL55SoIDwgZ2VuZ291bicneW91XCA7CivkuqTmj5vlsYAgPCBrb3VrYW5reW9rdVwgOwor5Y2x6Zm65oCd5oOzIDwga2lrZW5zaGlzb3VcIDsKK+epuuWfn+euoeeQhiA8IGt1dWlraWthbnJpXCA7CivlvqHmrr/lpbPkuK0gPCBnb3RlbmpvY2h1dVwgOwor5LiD5bm05b+MIDwgc2hpY2hpbmVua2lcIDsKK+mao+S/neS6i+alrSA8IHJpbnBvamlneW91XCA7CivmgqrmiK/mm7ggPCBpdGF6dXJhZ2FraVwgOwor5Y2D5Lq66YedIDwgc2VuJyduaW5iYXJpXCA7CivlkIjmhI/lv4PkuK0gPCBnb3Vpc2hpbmp1dVwgOwor5LiW55WM6KiY6YyyIDwgc2VrYWlraXJva3VcIDsKK+WfuuacrOadoeS7tiA8IGtpaG9uam91a2VuXCA7CivovrLmsJHkuIDmj4YgPCBub3VtaW4nJ2lra2lcIDsKK+WJjeS7o+acquiBniA8IHplbmRhaW1pbW9uXCA7Civmtojmr5LmtrIgPCBzaG91ZG9rdWVraVwgOwor6KSH5ZCI5rGa5p+TIDwgZnVrdWdvdW9zZW5cIDsKK+e1tuWvvumbtuW6piA8IHpldHRhaXJlaWRvXCA7Civmp4vmiJDlj6/og70gPCBrb3VzZWlrYW5vdVwgOwor5LiA5Lq66Iie5Y+wIDwgaGl0b3JpYnV0YWlcIDsKK+earuS4i+e1hOe5lCA8IGhpa2Fzb3NoaWtpXCA7CivmsrnnoKXnn7MgPCBhYnVyYXRvaXNoaVwgOwor5Zyw5LiL6LOH5rqQIDwgY2hpa2FzaGlnZW5cIDsKK+eLkOmlgumjqSA8IGtpdHN1bmV1ZG9uXCA7Civmv4PopJDoibIgPCBub3VrYXNzaG9rdVwgOwor5p2Q5pyo5ZWGIDwgemFpbW9rdXNob3VcIDsKK+eZveWMluWAi+S9kyA8IGhha3VrYWtvdGFpXCA7Civpm7voqbHlm57nt5ogPCBkZW53YWthaXNlblwgOwor5LiN5q2j5ZKs5ZCIIDwgZnVzZWlrb3Vnb3VcIDsKK+aRqeiotuS4jeaAneitsCA8IG1ha2FmdXNoaWdpXCA7Civljp/oibLniYggPCBnZW5zaG9rdWJhblwgOwor576O5a655L2T5pONIDwgYml5b3V0YWlzb3VcIDsKK+WNlOitsOmbouWpmiA8IGt5b3VnaXJpa29uXCA7CivolKbomL8gPCB0c3V0YWthenVyYVwgOwor5rip5pqW5YmN57eaIDwgb25kYW56ZW5zZW5cIDsKK+WNmOmgheW8jyA8IHRhbmtvdXNoaWtpXCA7CivmlrDopo/kv53nrqEgPCBzaGlua2lob2thblwgOwor5Zyf5rCX6ImyIDwgdHN1Y2hpa2Vpcm9cIDsKK+WPlue3oCA8IHRvcmlzaGltYXJpXCA7Civku5jlsZ7nr4AgPCBmdXpva3VzZXRzdVwgOwor5LiA6LKr55Wq5Y+3IDwgaWtrYW5iYW5nb3VcIDsKK+ePvuihjOazleimjyA8IGdlbmtvdWhvdWtpXCA7CivkuIDnlarpto8gPCBpY2hpYmFuZG9yaVwgOwor57SL56ug5a2mIDwgbW9uc2hvdWdha3VcIDsKK+ecn+WPquS4rSA8IG1hdHRhZGFuYWthXCA7CivnpZblm73lvqnluLAgPCBzb2tva3VmdWtraVwgOwor5ZCr5rC054Kt57SgIDwgZ2Fuc3VpdGFuc29cIDsKK+WKtOWDjeaZgumWkyA8IHJvdWRvdWppa2FuXCA7Civlh7rluK3ogIUgPCBzaHVzc2VraXNoYVwgOwor54K65pu/55u45aC0IDwga2F3YXNlc291YmFcIDsKK+S4lueVjOS4gOWRqCA8IHNla2FpaXNzaHV1XCA7CivljLvnmYLms5XkurogPCBpcnlvdWhvdWppblwgOwor6ZaA5YmN55S6IDwgbW9uemVubWFjaGlcIDsKK+awt+iiiyA8IGtvb3JpYnVrdXJvXCA7CivpvJPoiJ7mv4DlirEgPCBrb2J1Z2VraXJlaVwgOwor5pWZ6KiT55qEIDwga3lvdWt1bnRla2lcIDsKK+iyr+mHkeWxgCA8IGNob2tpbmt5b2t1XCA7Civlrpjlg5roh60gPCBrYW5yeW91c2h1dVwgOwor6LmE6YmE5belIDwgdGVpdGV0c3Vrb3VcIDsKK+eykuW6puWIhuW4gyA8IHJ5dXVkb2J1bnB1XCA7CivnpZ7ntYzlraYgPCBzaGlua2VpZ2FrdVwgOwor5oqV5LiL6LOH5pysIDwgdG91a2FzaGlob25cIDsKK+eUqOaEj+WRqOWIsCA8IHlvdWlzaHV1dG91XCA7CivooajnjoTplqIgPCBvbW90ZWdlbmthblwgOwor5YaF54eD5qmf6ZaiIDwgbmFpbmVua2lrYW5cIDsKK+WHuuW8teW6lyA8IHNodXRjaG91dGVuXCA7Civml4XooYzpnoQgPCByeW9rb3VrYWJhblwgOwor5rib5aGp6aOfIDwgZ2VuJydlbnNob2t1XCA7Civlm6PkvZPlrqIgPCBkYW50YWlreWFrdVwgOwor6Ziy5rC05Yqg5belIDwgYm91c3Vpa2Frb3VcIDsKK+W/g+mciuWtpiA8IHNoaW5yZWlnYWt1XCA7CivlgIvkurrmtojosrsgPCBrb2ppbnNob3VoaVwgOwor5Luu5oCn6L+R6KaWIDwga2FzZWlraW5zaGlcIDsKK+Wkp+ato+eQtCA8IHRhaXNob3Vnb3RvXCA7CivmrKDli6TnjocgPCBrZWtraW5yaXRzdVwgOwor5a6a552A5YmkIDwgdGVpY2hha3V6YWlcIDsKK+WNl+ilvyA8IG1pbmFtaW5pc2hpXCA7CivlhaXloLTmlpkgPCBueXV1am91cnlvdVwgOwor6YCQ6Kqe6KizIDwgY2hpa3Vnb3lha3VcIDsKK+aAneiAg+WKmyA8IHNoaWtvdXJ5b2t1XCA7CivkubPnlKjniZsgPCBueXV1eW91Z3l1dVwgOwor5q2j6Kaa5Z2KIDwgc2hvdWdha3Vib3VcIDsKK+e3keiXu+mhniA8IHJ5b2t1c291cnVpXCA7Civnm67mkoPogIUgPCBtb2t1Z2VraXNoYVwgOwor6buS5puc55+zIDwga29rdXlvdXNla2lcIDsKK+epuuawl+S8neafkyA8IGt1dWtpZGVuc2VuXCA7CivmuoDkuIDlubQgPCBtYW4nJ2ljaGluZW5cIDsKK+ayoeaIkeeahCA8IGJvdHN1Z2F0ZWtpXCA7CivlkKvlobXnjocgPCBnYW5qaW5yaXRzdVwgOwor5bm85bm05pmC5LujIDwgeW91bmVuamlkYWlcIDsKK+mAgOiBt+iAhSA8IHRhaXNob2t1c2hhXCA7CivolLXlsYvmlbcgPCBrdXJheWFzaGlraVwgOwor56S+5Lya5b6p5biwIDwgc2hha2FpZnVra2lcIDsKK+mbu+awl+ijveWTgSA8IGRlbmtpc2VpaGluXCA7CivljIXph5EgPCB0c3V0c3VtaWtpblwgOwor5YaN5bu656+JIDwgc2Fpa2VuY2hpa3VcIDsKK+eUo+WppuS6uuenkeWMuyA8IHNhbmZ1amlua2FpXCA7CivkuIDosqvkvZzmpa0gPCBpa2thbnNhZ3lvdVwgOwor5rue5Zyo5pyf6ZaTIDwgdGFpemFpa2lrYW5cIDsKK+eMrui6q+eahCA8IGtlbnNoaW50ZWtpXCA7CivnhKHlvaLosqHnlKMgPCBtdWtlaXphaXNhblwgOwor5aao5a6z54mpIDwgYm91Z2FpYnV0c3VcIDsKK+eCueecvOiWrCA8IHRlbmdhbicneWFrdVwgOwor5YWD6aaW55u4IDwgbW90b3NodXNob3VcIDsKK+eEoeaWrei7oui8iSA8IG11ZGFudGVuc2FpXCA7CivmgZDmsLTnl4UgPCBreW91c3VpYnlvdVwgOwor5Z2H6KGh5LqI566XIDwga2lua291eW9zYW5cIDsKK+WvhuWjsuWTgSA8IG1pdHN1YmFpaGluXCA7Civnn7Plt53nnIwgPCBpc2hpa2F3YWtlblwgOwor5LuY5biv5p2h5Lu2IDwgZnV0YWlqb3VrZW5cIDsKK+WJr+S8mumVtyA8IGZ1a3VrYWljaG91XCA7CivnmbrmmI7ogIUgPCBoYXRzdW1laXNoYVwgOwor6LuN5LqL5bel5aC0IDwgZ3Vuamlrb3Vqb3VcIDsKK+acieWKueaVsOWtlyA8IHl1dWtvdXN1dWppXCA7CivlibXkvZznmoQgPCBzb3VzYWt1dGVraVwgOwor6IeN5LiL5Li555SwIDwgc2Vpa2F0YW5kZW5cIDsKK+Wkp+mAhue9qiA8IHRhaWd5YWt1emFpXCA7CivoqabnlKjmnJ/plpMgPCBzaGl5b3VraWthblwgOwor5LiA5YWD55qEIDwgaWNoaWdlbnRla2lcIDsKK+WMluWtpuWkieWMliA8IGthZ2FrdWhlbmthXCA7Civoh6rli5Xou4rnqI4gPCBqaWRvdXNoYXplaVwgOwor6KiA6Kqe6YGT5patIDwgZ29uZ29kb3VkYW5cIDsKK+eZvumdouebuCA8IGh5YWt1bWVuc291XCA7CivkuI3kvrXnlaUgPCBmdXNoaW5yeWFrdVwgOwor5Y+k54uQIDwgZnVydWdpdHN1bmVcIDsKK+S7mOWxnueJqSA8IGZ1em9rdWJ1dHN1XCA7Civmi4Xkv53nianmqKkgPCB0YW5wb2J1a2tlblwgOwor5Za25qWt5pmC6ZaTIDwgZWlneW91amlrYW5cIDsKK+WLieW8t+S4rSA8IGJlbmt5b3VjaHV1XCA7CivlhpnnnJ/luLMgPCBzaGFzaGluY2hvdVwgOwor5LiA55uu5pWjIDwgaWNoaW1va3VzYW5cIDsKK+miqOWKm+ioiCA8IGZ1dXJ5b2t1a2VpXCA7CivmtLvnlKjlvaIgPCBrYXRzdXlvdWtlaVwgOwor6Ieq5YuV5omJIDwgamlkb3V0b2JpcmFcIDsKK+aEm+Wmu+W8geW9kyA8IGFpc2FpYmVudG91XCA7CivkvJrnpL7nq4sgPCBrYWlzaGFyaXRzdVwgOwor576O55qE5auM5oKqIDwgYml0ZWtpa2VuJydvXCA7Civopovnm67lvaIgPCBtaW1la2F0YWNoaVwgOwor5LiJ5Y2D5LiW55WMIDwgc2FuemVuc2VrYWlcIDsKK+mRkeWIpeaJgCA8IGthbmJldHN1c2hvXCA7CivlpJrph43mlL7pgIEgPCB0YWp1dWhvdXNvdVwgOwor5LqM6YeN5aSW5LqkIDwgbmlqdXVnYWlrb3VcIDsKK+S7ruWlkee0hCA8IGthcmlrZWl5YWt1XCA7CivmoLjmi6HmlaMgPCBrYWt1a2FrdXNhblwgOwor5ZGo6L665Zu9IDwgc2h1dWhlbmtva3VcIDsKK+S6iOWCmeW3peS9nCA8IHlvYmlrb3VzYWt1XCA7Civnn63ms6LmlL7pgIEgPCB0YW5wYWhvdXNvdVwgOwor6aKo5YWJ57W25L2zIDwgZnV1a291emVra2FcIDsKK+W/heeEtuaApyA8IGhpdHN1emVuc2VpXCA7CivkuLvmg4XkuLvnvqkgPCBzaHVqb3VzaHVnaVwgOwor5Lih5pu/5ZWGIDwgcnlvdWdhZXNob3VcIDsKK+ihjOWLleS4u+e+qSA8IGtvdWRvdXNodWdpXCA7Civoh6rliIboh6rouqsgPCBqaWJ1bmppc2hpblwgOwor6ISx6Imy5YmkIDwgZGFzc2hva3V6YWlcIDsKK+WknOWFieWhl+aWmSA8IHlha291dG9yeW91XCA7Civlj7Plv4PlrqQgPCB1c2hpbnNoaXRzdVwgOwor5Yqb6Z2pIDwgY2hpa2FyYWdhd2FcIDsKK+S4reWkruWPoyA8IGNodXVvdWd1Y2hpXCA7CivnnJ/oj4znl4cgPCBzaGlua2luc2hvdVwgOwor5Zyn5Yqb5rOiIDwgYXRzdXJ5b2t1aGFcIDsKK+W4sOeEoeS7ruiqrCA8IGtpbXVrYXNldHN1XCA7CivluILloLTljp/nkIYgPCBzaGlqb3VnZW5yaVwgOwor5YWo5Zu955qEIDwgemVua29rdXRla2lcIDsKK+S6rOa7i+WcsOaWuSA8IGtlaWppY2hpaG91XCA7CivnuITmoq/lrZAgPCBuYXdhYmFzaGlnb1wgOwor5aSn576p5ZCN5YiGIDwgdGFpZ2ltZWlidW5cIDsKK+WRvOWQuOmBi+WLlSA8IGtva3l1dXVuZG91XCA7Civonrrml4vpmo7mrrUgPCByYXNlbmthaWRhblwgOwor6Iux6Kqe5pWZ6IKyIDwgZWlnb2t5b3Vpa3VcIDsKK+ixoeeJmea1t+WyuCA8IHpvdWdla2FpZ2FuXCA7CivmiJHnianpoZQgPCB3YWdhbW9ub2dhb1wgOwor5pel5pys6ISz54KOIDwgbmlob24nJ25vdWVuXCA7Civpo5/loILou4ogPCBzaG9rdWRvdXNoYVwgOwor6YGL5Za25aeU5ZOh5LyaIDwgdW4nJ2VpaWlua2FpXCA7CivlloTnn6XorZggPCB6ZW5jaGlzaGlraVwgOwor5ZKM6a2C5ryi5omNIDwgd2Frb25rYW5zYWlcIDsKK+e1jOWWtuWGjeW7uiA8IGtlaWVpc2Fpa2VuXCA7CivohLPkuIvlnoLkvZMgPCBub3VrYXN1aXRhaVwgOwor5LiA5YaG5pytIDwgaWNoaWVuc2F0c3VcIDsKK+imluiBtOimmiA8IHNoaWNob3VrYWt1XCA7Civli5/ph5HpgYvli5UgPCBib2tpbicndW5kb3VcIDsKK+iAkOeGsemLvCA8IHRhaW5ldHN1a291XCA7CivliLvoi6bli4nlirEgPCBrb2trdWJlbnJlaVwgOwor5pei5ama55S35oCnIDwga2lrb25kYW5zZWlcIDsKK+mdqeWRveeahCA8IGtha3VtZWl0ZWtpXCA7CivmsrvmsLTlt6XkuosgPCBjaGlzdWlrb3VqaVwgOwor5bCP5LyR5q2iIDwgc2hvdWt5dXVzaGlcIDsKK+aXpeacrOS6uuirliA8IG5paG9uamlucm9uXCA7Civlpb3lj5bntYQgPCBrb3V0b3Jpa3VtaVwgOwor5Y2a5aWV5a6/IDwgYmFrdWNoaXlhZG9cIDsKK+i7jeS6i+WFrOWCtSA8IGd1bmppa291c2FpXCA7CivljYHkurrljYHoibIgPCBqdXVuaW50b2lyb1wgOwor54Sh6YWN5Lya56S+IDwgbXVoYWlnYWlzaGFcIDsKK+iEs+iyp+ihgCA8IG5vdWhpbmtldHN1XCA7Civlrrbml4/miYvlvZMgPCBrYXpva3V0ZWF0ZVwgOwor5rSX56S85byPIDwgc2VucmVpc2hpa2lcIDsKK+eUsumqqOaWhyA8IGtvdWtvdHN1YnVuXCA7Civml6XpioDliLggPCBuaWNoaWdpbmtlblwgOwor576F6Yed55uk5bqnIDwgcmFzaGluYmFuemFcIDsKK+emj+elieapn+WZqCA8IGZ1a3VzaGlraWtpXCA7CivosqfmsJHnqp8gPCBoaW5taW5rdXRzdVwgOwor5aWJ54yu54mpIDwgaG91a2VuYnV0c3VcIDsKK+Wun+alreWutiA8IGppdHN1Z3lvdWthXCA7Civog7jnrpfnlKggPCBtdW5lemFuJyd5b3VcIDsKK+aaq+WumuS6iOeulyA8IHphbnRlaXlvc2FuXCA7Civoh6rosrvlh7rniYggPCBqaWhpc2h1cHBhblwgOwor5Yas5pyo56uLIDwgZnV5dWtvZGFjaGlcIDsKK+W4uOeUqOa8ouWtlyA8IGpvdXlvdWthbmppXCA7CivntZDntK7ns7ggPCBrZXNzYXRzdXNoaVwgOwor546L5L6v6LK05pePIDwgb3Vrb3VraXpva3VcIDsKK+mAhuWuo+S8nSA8IGd5YWt1c2VuZGVuXCA7CivkurrkvZPmqKHlnosgPCBqaW50YWltb2tlaVwgOwor6a6u57SF6ImyIDwgc2Vua291c2hva3VcIDsKK+WFpeWbveeojiA8IG55dXVrb2t1emVpXCA7Civml6Xopb/ovp7lhbggPCBuaXNzZWlqaXRlblwgOwor56eB5YSAIDwgd2F0YWt1c2hpZ2lcIDsKK+aEn+aDheenu+WFpSA8IGthbmpvdWlueXV1XCA7Civmi6HlpKfpj6EgPCBrYWt1ZGFpa3lvdVwgOwor5Zyw5pa556u26aasIDwgY2hpaG91a2VpYmFcIDsKK+mBk+alveiAhSA8IGRvdXJha3Vtb25vXCA7CivlpbPmiL/lvbkgPCBueW91Ym91eWFrdVwgOwor5p2h57SE5Zu9IDwgam91eWFrdWtva3VcIDsKK+WKm+i2syA8IGNoaWthcmFhc2hpXCA7CivntYzmuIjlirnmnpwgPCBrZWl6YWlrb3VrYVwgOwor5Luj5pu/54mpIDwgZGFpdGFpYnV0c3VcIDsKK+a3t+WHneWcnyA8IGtvbmt1cml6ZXRvXCA7CivmsJHkuovoqLToqJ8gPCBtaW5qaXNvc2hvdVwgOwor5YyW5a2m6KiY5Y+3IDwga2FnYWt1a2lnb3VcIDsKK+engeS+myA8IHdhdGFzaGlkb21vXCA7Civlj4LliqDmhI/orZggPCBzYW5rYWlzaGlraVwgOwor5oim5pmC5L2T5Yi2IDwgc2Vuaml0YWlzZWlcIDsKK+iHqueUseW4guWgtCA8IGppeXV1c2hpam91XCA7CivlhrfmiL/lrozlgpkgPCByZWlib3VrYW5iaVwgOwor6Ieq5bex5Y+M5a++IDwgamlrb3NvdXRzdWlcIDsKK+a2iOavkuWJpCA8IHNob3Vkb2t1emFpXCA7CivlipvosqAgPCBjaGlrYXJhbWFrZVwgOwor54Gr54e15o6b5biDIDwga290YXRzdWdha2VcIDsKK+S4h+iDveiWrCA8IG1hbicnbm91eWFrdVwgOwor5L+h5oaR5oCnIDwgc2hpbnB5b3VzZWlcIDsKK+W4jOacm+S+oeagvCA8IGtpYm91a2FrYWt1XCA7CivliJfkvJ3kvZMgPCByZXRzdWRlbnRhaVwgOwor5Y+j5Y+v56yRIDwga3VjaGlva2FzaGlcIDsKK+mBuOWvvuacrOmDqCA8IHNlbnRhaWhvbmJ1XCA7CivlhYjpoK3miZPogIUgPCBzZW50b3VkYXNoYVwgOwor5a6f55Sf5rS7IDwgamlzc2Vpa2F0c3VcIDsKK+WQjeWJjeepuumWkyA8IG5hbWFla3V1a2FuXCA7Civnmb7lp5PlrrYgPCBoeWFrdXNob3V5YVwgOwor5rWF6I2J5rW36IuUIDwgYXNha3VzYW5vcmlcIDsKK+S6i+alreacrOmDqCA8IGppZ3lvdWhvbmJ1XCA7CivnkIboq5bpl5jkuokgPCByaXJvbnRvdXNvdVwgOwor5Lq65Y+j5aKX5YqgIDwgamlua291em91a2FcIDsKK+WkluS6pOi+nuS7pCA8IGdhaWtvdWppcmVpXCA7CivlkIzpn7PnlbDnvqnoqp4gPCBkb3VvbicnaWdpZ29cIDsKK+awj+Wnk+WItuW6piA8IHNoaXNlaXNlaWRvXCA7CivkuIDlsYDpg6ggPCBpY2hpa3lva3VidVwgOwor57iE5paH5pmC5LujIDwgam91bW9uamlkYWlcIDsKK+mWk+S4gOmrqiA8IGthbicnaXBwYXRzdVwgOwor5LiW55WM5aSn5oimIDwgc2VrYWl0YWlzZW5cIDsKK+apn+WLlea8lOe/kiA8IGtpZG91ZW5zaHV1XCA7Civoh6rorablm6Plk6EgPCBqaWtlaWRhbicnaW5cIDsKK+mbu+awl+aKteaKlyA8IGRlbmtpdGVpa291XCA7CivpjqfkuIDlhbcgPCB5b3JvaWljaGlndVwgOwor55S65Lq654mpIDwgY2hvdW5pbm1vbm9cIDsKK+mAmuios+WumCA8IHRzdXV5YWt1a2FuXCA7Civlv4XopoHmgqogPCBoaXRzdXlvdWFrdVwgOwor6YmE6YGT57ayIDwgdGV0c3Vkb3Vtb3VcIDsKK+WOn+eUo+eJqSA8IGdlbnNhbmJ1dHN1XCA7Civlmajmpb3mm7IgPCBraWdha3VreW9rdVwgOwor5b+F6KaB5oCnIDwgaGl0c3V5b3VzZWlcIDsKK+mYsumfs+ijhee9riA8IGJvdW9uc291Y2hpXCA7CivljYrpnaLorZggPCBoYW5tZW5zaGlraVwgOwor5rC05r6EIDwgbWl6dXN1bWFzaGlcIDsKK+WPluaJsSA8IHRvcmlhdHN1a2FpXCA7CivlpKLlv4PlnLAgPCB5dW1lZ29rb2NoaVwgOwor6LKg5YK15ZCI6KiIIDwgZnVzYWlnb3VrZWlcIDsKK+S7iumAseS4rSA8IGtvbnNodXVjaHV1XCA7CivoqbHkuIvmiYsgPCBoYW5hc2hpYmV0YVwgOwor6YGK6LuN6KiY6ICFIDwgeXV1Z3Vua2lzaGFcIDsKK+S+oeWApOS9k+ezuyA8IGthY2hpdGFpa2VpXCA7Civkuozph43ntZDlqZogPCBuaWp1dWtla2tvblwgOwor5LiA6ZW35LiA55+tIDwgaXRjaG91aXR0YW5cIDsKK+itt+mAgeiIueWboyA8IGdvc291c2VuZGFuXCA7Civniq/ooYznj77loLQgPCBoYW5rb3VnZW5iYVwgOwor5oSP6KaL5bqD5ZGKIDwgaWtlbmtvdWtva3VcIDsKK+Wwj+S5l+eahCA8IHNob3Vqb3V0ZWtpXCA7CivlloTlm6DlloTmnpwgPCB6ZW4nJ2luemVua2FcIDsKK+eri+iEmueCuSA8IHJpa2t5YWt1dGVuXCA7CivpiYTlhZwgPCB0ZXRzdWthYnV0b1wgOwor54Sh5Lq65Zyw5bivIDwgbXVqaW5jaGl0YWlcIDsKK+e1jOWWtui7ouaPmyA8IGtlaWVpdGVua2FuXCA7CivkuI3kv6Hlrp8gPCBmdXNoaW5qaXRzdVwgOwor6LKp5aOy5qmf5LyaIDwgaGFuYmFpa2lrYWlcIDsKK+S6ieWlquaIpiA8IHNvdWRhdHN1c2VuXCA7CivllYblrablo6sgPCBzaG91Z2FrdXNoaVwgOwor5LiK5bGL5pW3IDwga2FtaXlhc2hpa2lcIDsKK+iLpeWkp+WwhiA8IHdha2FkYWlzaG91XCA7CivpgaDpmpTmk43kvZwgPCBlbmtha3Vzb3VzYVwgOwor5pON6Ii15a6kIDwgc291ZGFzaGl0c3VcIDsKK+aIkOS6uuW8jyA8IHNlaWppbnNoaWtpXCA7CivmhaPnlKjoqp7lj6UgPCBrYW4nJ3lvdWdva3VcIDsKK+a2suS9k+epuuawlyA8IGVraXRhaWt1dWtpXCA7CivmlrDpnaLnm64gPCBzaGlubWVubW9rdVwgOwor5rOo5paH5pyNIDwgY2h1dW1vbmZ1a3VcIDsKK+S4iuajn+W8jyA8IGpvdXRvdXNoaWtpXCA7CivotaTpioXoibIgPCBzaGFrdWRvdWlyb1wgOwor5Ye65YiD5YyF5LiBIDwgZGViYWJvdWNob3VcIDsKK+WQkeWtpuW/gyA8IGtvdWdha3VzaGluXCA7CivmuIfmnJvogIUgPCBrYXRzdWJvdXNoYVwgOwor5Zyf6K6a5pys57eaIDwgZG9zYW5ob25zZW5cIDsKK+iyoeaUv+aUr+aPtCA8IHphaXNlaXNoaWVuXCA7Civlrq7lu7fnlLvlrrYgPCBreXV1dGVpZ2FrYVwgOwor5Z+36YGU5ZCPIDwgc2hpdHRhdHN1cmlcIDsKK+acgOW+jOWIl+i7iiA8IHNhaWdvcmVzc2hhXCA7CivnkIblt6Xlrabpg6ggPCByaWtvdWdha3VidVwgOwor5L+d566h5Lya56S+IDwgaG9rYW5nYWlzaGFcIDsKK+S5l+W/g+WcsCA8IG5vcmlnb2tvY2hpXCA7CivphY3lkIjnpoHlv4wgPCBoYWlnb3VraW5raVwgOwor5byU56Wt5paZIDwgY2hvdXNhaXJ5b3VcIDsKK+mBjuWJsOaKleizhyA8IGtham91dG91c2hpXCA7CivlrrbplbfliLbluqYgPCBrYWNob3VzZWlkb1wgOwor5Y+v6IG06Led6ZuiIDwga2FjaG91a3lvcmlcIDsKK+S4i+aknOWIhiA8IHNoaXRha2VuYnVuXCA7CivopqrpoZ7nuIHogIUgPCBzaGlucnVpZW5qYVwgOwor6ZaL5YKs5byPIDwga2Fpc2Fpc2hpa2lcIDsKK+eUsOiIjuWomCA8IGluYWthbXVzdW1lXCA7CivnrrHngavpiaIgPCBoYWtvaGliYWNoaVwgOwor54Sh55CG5b+D5LitIDwgbXVyaXNoaW5qdXVcIDsKK+WJr+mmluebuCA8IGZ1a3VzaHVzaG91XCA7CivlubTos4DokYnmm7ggPCBuZW5nYWhhZ2FraVwgOwor5pW15oS+5b+DIDwgdGVraWdhaXNoaW5cIDsKK+mHiOepuua1tyA8IHNoYWt1a3V1a2FpXCA7CivpgKPpgqbkuojnrpcgPCByZW5wb3V5b3NhblwgOwor57WE57mU56WoIDwgc29zaGlraWh5b3VcIDsKK+WHuui6q+iAhSA8IHNodXNzaGluc2hhXCA7CivlibXkvqHlrabkvJogPCBzb3VrYWdha2thaVwgOwor5LuV5LqL6YePIDwgc2hpZ290b3J5b3VcIDsKK+WNiuaciOW9oiA8IGhhbmdldHN1a2VpXCA7CivliIblrZDoqqwgPCBidW5zaGlzZXRzdVwgOwor5Y2K5pyI5byBIDwgaGFuZ2V0c3ViZW5cIDsKK+ato+etlOeOhyA8IHNlaXRvdXJpdHN1XCA7CivliKnlrZDoo5zntaYgPCByaXNoaWhva3l1dVwgOwor5a2j56+A55qEIDwga2lzZXRzdXRla2lcIDsKK+awt+aelSA8IGtvb3JpbWFrdXJhXCA7CivmsLTmn7EgPCBtaXp1YmFzaGlyYVwgOwor5qC55pys5Y6f55CGIDwga29ucG9uZ2VucmlcIDsKK+WuieWFqOS/nemanCA8IGFuemVuaG9zaG91XCA7Civljp/lrZDoqqwgPCBnZW5zaGlzZXRzdVwgOwor5YGl5bq35L+d6Zm6IDwga2Vua291aG9rZW5cIDsKK+aal+m7kuaZguS7oyA8IGFua29rdWppZGFpXCA7CivkuJbku6PkuqTku6MgPCBzZWRhaWtvdXRhaVwgOwor56We5ZiX56WtIDwga2FuJyduYW1lc2FpXCA7CivmoafoiJ7lj7AgPCBoaW5va2lidXRhaVwgOwor6Lui6YCB6Zu76KmxIDwgdGVuc291ZGVud2FcIDsKK+WvvuWxgOiAhSA8IHRhaWt5b2t1c2hhXCA7Civosp3mrrvpqqggPCBrYWlnYXJhYm9uZVwgOwor5Y2D5Lih566xIDwgc2VucnlvdWJha29cIDsKK+aYreWSjOaZguS7oyA8IHNob3V3YWppZGFpXCA7CivntJTlj47lhaUgPCBqdW5zaHV1bnl1dVwgOwor54mp55CG55qEIDwgYnV0c3VyaXRla2lcIDsKK+ael+eUo+eJqSA8IHJpbnNhbmJ1dHN1XCA7CivnqoHnhLbmrbsgPCB0b3RzdXplbnNoaVwgOwor5L2/55So6Kix5Y+vIDwgc2hpeW91a3lva2FcIDsKK+iovOWPluazlSA8IHNob3V0b3JpaG91XCA7CivmrbTlj7LnmoQgPCByZWtpc2hpdGVraVwgOwor57WE57mU55qEIDwgc29zaGlraXRla2lcIDsKK+i0iOWRiOW8jyA8IHpvdXRlaXNoaWtpXCA7CivnqY3ovInph48gPCBzZWtpc2FpcnlvdVwgOwor6Ieq55m655qEIDwgamloYXRzdXRla2lcIDsKK+W3sSA8IHRzdWNoaW5vdG9cIDsKK+WxoSA8IHNoaWJhc2hpYmFcIDsKK+isgCA8IGhha2FyaWdvdG9cIDsKK+eGnyA8IHRzdWt1ZHp1a3VcIDsKK+WYtCA8IGt1Y2hpYmFzaGlcIDsKK+OAhSA8IGt1cmlrYWVzaGlcIDsKK+Wcn+efs+a1gSA8IGRvc2VraXJ5dXVcIDsKK+W4gueUuuadkSA8IHNoaWNob3Vzb25cIDsKK+mfs+alveaYoOeUuyA8IG9uZ2FrdWVpZ2FcIDsKK+mjn+WhqeawtCA8IHNob2t1ZW5zdWlcIDsKK+a9pOa7keayuSA8IGp1bmthdHN1eXVcIDsKK+a1geaYn+e+pCA8IHJ5dXVzZWlndW5cIDsKK+Wlkee0hOmHkSA8IGtlaXlha3VraW5cIDsKK+axuuitsOaWhyA8IGtldHN1Z2lidW5cIDsKK+iSuOeVmemFkiA8IGpvdXJ5dXVzaHVcIDsKK+mHneiRieaouSA8IHNoaW4nJ3lvdWp1XCA7CivnjJvli4nlvLcgPCBtb3ViZW5reW91XCA7CivlroflrpnpgYrms7MgPCB1Y2h1dXl1dWVpXCA7Civmt7HliLvljJYgPCBzaGlua29rdWthXCA7CivliIfpgJogPCBraXJpZG9vc2hpXCA7CivmiYDlvpfpoZQgPCB0b2tvcm9lZ2FvXCA7CivlvqHlrqLmp5ggPCBva3lha3VzYW1hXCA7CivolLXmm7jnpaggPCB6b3VzaG9oeW91XCA7Civkurrlt6Xpm6ogPCBqaW5rb3V5dWtpXCA7CivlkIzohbnku5QgPCBkb3VmdWt1c2hpXCA7CivlsITlgJblv4MgPCBzaGFrb3VzaGluXCA7Civkv53lgaXliLbluqYgPCBob2tlbnNlaWRvXCA7CivmupblgpnpgYvli5UgPCBqdW5iaXVuZG91XCA7Civku6PorbDliLbluqYgPCBkYWlnaXNlaWRvXCA7CivljZrlo6vlj7cgPCBoYWt1c2hpZ291XCA7CivlhaXmvIHogIUgPCBueXV1Z3lvc2hhXCA7CivliKXpmaTmqKkgPCBiZXRzdWpva2VuXCA7CivmiKbpl5jmnI0gPCBzZW50b3VmdWt1XCA7CivmqKHlnovlnLDlm7MgPCBtb2tlaWNoaXp1XCA7CivppIrpto/mpa0gPCB5b3VrZWlneW91XCA7CivorbDmsbrmqKkgPCBnaWtldHN1a2VuXCA7CivlhaXlnJLmlpkgPCBueXV1ZW5yeW91XCA7CivlhKrlhYjnmoQgPCB5dXVzZW50ZWtpXCA7CivnhKHojLboi6bojLYgPCBtdWNoYWt1Y2hhXCA7CivlkIzkuIDoppYgPCBkb3VpdHN1c2hpXCA7Civlj6TlvoDku4rmnaUgPCBrb291a29ucmFpXCA7Civpm6PooYzpgZMgPCBuYW5neW91ZG91XCA7CivpgbrlpLHlk4EgPCBpc2hpdHN1aGluXCA7Civpo5/mlofljJYgPCBzaG9rdWJ1bmthXCA7Civpr7Dpq60gPCBuYW1henVoaWdlXCA7CivmsJHkuLvlm70gPCBtaW5zaHVrb2t1XCA7Civlho3luLDnhrEgPCBzYWlraW5ldHN1XCA7Civngq3ljJbniakgPCB0YW5rYWJ1dHN1XCA7Civmlq3niYfnmoQgPCBkYW5wZW50ZWtpXCA7CivmurrmrbvkvZMgPCBkZWtpc2hpdGFpXCA7CivmtbfmtIvlraYgPCBrYWl5b3VnYWt1XCA7Civmra/npZ7ntYwgPCBzaGlzaGlua2VpXCA7Civlj6Plj6MgPCBrdWNoaWd1Y2hpXCA7Civlj43mipfnmoQgPCBoYW5rb3V0ZWtpXCA7Civplovlgqzlm70gPCBrYWlzYWlrb2t1XCA7CivlvqHkuKHopqogPCBnb3J5b3VzaGluXCA7CivmkanliKnmlK/lpKkgPCBtYXJpc2hpdGVuXCA7Civkv67mraPmtrIgPCBzaHV1c2VpZWtpXCA7CivliJ3oqaMgPCBoYXRzdW1vdWRlXCA7Civnn7PnlbMgPCBpc2hpZGF0YW1pXCA7Civkurrngrrmt5jmsbAgPCBqaW4nJ2l0b3V0YVwgOwor5Y6a55Sf55yBIDwga291c2Vpc2hvdVwgOwor6YCG6KqsIDwgZ3lha3VzZXRzdVwgOwor6auY57Sa6LuKIDwga291a3l1dXNoYVwgOwor6Luf5paH5a2mIDwgbmFuYnVuZ2FrdVwgOwor56i85YON5pmC6ZaTIDwga2Fkb3VqaWthblwgOwor6Kmm5L2c5ZOBIDwgc2hpc2FrdWhpblwgOwor6Kaz6Kan5paZIDwga2FucmFucnlvdVwgOwor5LiN5L+h5Lu7IDwgZnVzaGluJyduaW5cIDsKK+iMuOmbsiA8IGtpbm9rb2d1bW9cIDsKK+i/kemBkyA8IGNoaWthbWljaGlcIDsKK+S4ieiEmuaetiA8IHNhbmt5YWt1a2FcIDsKK+WkieaFi+eahCA8IGhlbnRhaXRla2lcIDsKK+WMu+eZguWItuW6piA8IGlyeW91c2VpZG9cIDsKK+i/kei/kSA8IGNoaWthZGppa2FcIDsKK+S5numrmOiplSA8IGtvdWtvdWh5b3VcIDsKK+awtOW/gyA8IG1penVnb2tvcm9cIDsKK+avm+awiOiLlCA8IG1vdXNlbmdva2VcIDsKK+mdoue9tee9teWAkiA8IG1lbmJhYmF0b3VcIDsKK+S4ieWwuuW4ryA8IHNhbmpha3VvYmlcIDsKK+W/nOaApeetliA8IG91a3l1dXNha3VcIDsKK+eggueFmSA8IHN1bmFrZW11cmlcIDsKK+S6uumBk+eahCA8IGppbmRvdXRla2lcIDsKK+a1t+mFuOa8vyA8IHVtaWhvb3p1a2lcIDsKK+aJv+iqjeeKtiA8IHNob3VuaW5qb3VcIDsKK+maj+ethuWutiA8IHp1aWhpdHN1a2FcIDsKK+aguOiejeWQiCA8IGtha3V5dXVnb3VcIDsKK+aKvemBuOWIuCA8IGNodXVzZW5rZW5cIDsKK+W3nemtmiA8IGthd2F6YWthbmFcIDsKK+WFjeioseiovCA8IG1lbmt5b3Nob3VcIDsKK+e+juWuueihkyA8IGJpeW91anV0c3VcIDsKK+ijj+iyuOWxiyA8IHVyYWdhc2hpeWFcIDsKK+mYsuavkumdoiA8IGJvdWRva3VtZW5cIDsKK+W8geaFtuifuSA8IGJlbmtlaWdhbmlcIDsKK+WNr+W5tCA8IHVzYWdpZG9zaGlcIDsKK+S6jOe3muW8jyA8IG5pc2Vuc2hpa2lcIDsKK+W/heimgeS6iyA8IGhpdHN1eW91amlcIDsKK+eZuuaYjuWutiA8IGhhdHN1bWVpa2FcIDsKK+eLrOijgeiAhSA8IGRva3VzYWlzaGFcIDsKK+ecuuacm+aoqSA8IGNob3Vib3VrZW5cIDsKK+WGhemAmuiAhSA8IG5haXRzdXVzaGFcIDsKK+S4remVt+acnyA8IGNodXVjaG91a2lcIDsKK+mBuOaMmemBleWPjSA8IHNlbmt5b2loYW5cIDsKK+ePvuixoeirliA8IGdlbnNob3Vyb25cIDsKK+mtlOihk+W4qyA8IG1hanV0c3VzaGlcIDsKK+WbveWcn+W6gSA8IGtva3Vkb2Nob3VcIDsKK+epjeWIhuazlSA8IHNla2lidW5ob3VcIDsKK+S/oeWPt+eBryA8IHNoaW5nb3V0b3VcIDsKK+WNiumZsOmZvSA8IGhhbicnaW4nJ3lvdVwgOwor5pel5pys5pmC6ZaTIDwgbmlob25qaWthblwgOwor6L676L67IDwgdHN1aml0c3VqaVwgOwor5bmz6Z2i6Y+hIDwgaGVpbWVua3lvdVwgOwor5YyX5p6VIDwga2l0YW1ha3VyYVwgOwor5a6F6YWN5L6/IDwgdGFrdWhhaWJpblwgOwor6JCO57iu55eHIDwgaXNodWt1c2hvdVwgOwor5aSp55uu5bGxIDwgdGVubW9rdXphblwgOwor5YGP5bmz6LazIDwgaGVucGVpc29rdVwgOwor5rOV5a2m5aOrIDwgaG91Z2FrdXNoaVwgOwor5aW06Zq35Yi25bqmIDwgZG9yZWlzZWlkb1wgOwor5qeL6YCg5L+d5oyBIDwga291em91aG9qaVwgOwor56K65Z+3IDwga2FrdXNoaXRzdVwgOwor5rC35a6kIDwgaHlvdXNoaXRzdVwgOwor55m654WZ562SIDwgaGF0c3VlbnRvdVwgOwor5YG06aCt6JGJIDwgc29rdXRvdXlvdVwgOwor5aSp55qH5p2vIDwgdGVuJydub3VoYWlcIDsKK+e0sOiDnuaguCA8IHNhaWJvdWtha3VcIDsKK+iHquWLlei7iuWMliA8IGppZG91c2hha2FcIDsKK+eLrOaTheWgtCA8IGRva3VzZW5qb3VcIDsKK+aXpeacrOabuOe0gCA8IG5paG9uc2hva2lcIDsKK+ijvemLvOalrSA8IHNlaWtvdWd5b3VcIDsKK+WFieeGseiyuyA8IGtvdW5ldHN1aGlcIDsKK+aEm+mDt+W/gyA8IGFpa3lvdXNoaW5cIDsKK+axuuWIpSA8IGtldHN1YmV0c3VcIDsKK+eUn+eUo+mrmCA8IHNlaXNhbmRha2FcIDsKK+a1t+awtOa1tCA8IGthaXN1aXlva3VcIDsKK+S7rue5g+W4ryA8IGthcmlob3V0YWlcIDsKK+WPiuesrOiAhSA8IGt5dXVkYWlzaGFcIDsKK+W+jOaKgCA8IHVzaGlyb3dhemFcIDsKK+WNjeW3tCA8IG1hbmppZG9tb2VcIDsKK+exs+mZuOi7jSA8IGJlaXJpa3VndW5cIDsKK+W/g+WupCA8IHNoaW5zaGl0c3VcIDsKK+azqOaWh+WTgSA8IGNodXVtb25oaW5cIDsKK+aBkuW4uOeahCA8IGtvdWpvdXRla2lcIDsKK+S6uuW9ouW4qyA8IG5pbmd5b3VzaGlcIDsKK+amtOaVo+W8viA8IHJ5dXVzYW5kYW5cIDsKK+eZuumbu+apnyA8IGhhdHN1ZGVua2lcIDsKK+S4jeepuuaIkOWwsSA8IGZ1a3V1am91anVcIDsKK+aXp+W4guihlyA8IGt5dXVzaGlnYWlcIDsKK+ims+imp+W4rSA8IGthbnJhbnNla2lcIDsKK+Wun+eUqOWMliA8IGppdHN1eW91a2FcIDsKK+iAg+ePvuWtpiA8IGtvdWdlbmdha3VcIDsKK+W5s+WSjOmBi+WLlSA8IGhlaXdhdW5kb3VcIDsKK+WFrOWumuatqeWQiCA8IGtvdXRlaWJ1YWlcIDsKK+Wkqeiho+eEoee4qyA8IHRlbicnaW11aG91XCA7CivplovlgqzkuK0gPCBrYWlzYWljaHV1XCA7CivnkIbot6/mlbTnhLYgPCByaXJvc2VpemVuXCA7CivnnYDoibIgPCBjaGFrdXNob2t1XCA7CivljZfkuqznubvlrZAgPCBuYW5raW5qdXN1XCA7Civlhobpj6EgPCBtYXJ1a2FnYW1pXCA7CivnlKPmpa3nlYwgPCBzYW5neW91a2FpXCA7CivpgaPnm7QgPCB5YXJpbmFvc2hpXCA7CivomZrnhKHkuLvnvqkgPCBreW9tdXNodWdpXCA7CivlurbmsJHliocgPCBzaG9taW5nZWtpXCA7CivkuI3ku5XmnKsgPCBmdXNoaW1hdHN1XCA7CivlkYbmsJfogIUgPCB1dHN1a2Vtb25vXCA7Civop6PliZblraYgPCBrYWlib3VnYWt1XCA7Civku67ln4vokawgPCBrYXJpbWFpc291XCA7Civph6PpgZPlhbcgPCB0c3VyaWRvdWd1XCA7CivnlJ/nlKPpoY0gPCBzZWlzYW5nYWt1XCA7CivmgrLliofnmoQgPCBoaWdla2l0ZWtpXCA7CivnnYDohLEgPCBjaGFrdWRhdHN1XCA7CivljJfmsLfmtIsgPCBob3BweW91eW91XCA7CivljYHkuozmnIggPCBqdXVuaWdhdHN1XCA7CivlkIzlrablubQgPCBkb3VnYWt1bmVuXCA7CivlvZfmmJ8gPCBob3VraWJvc2hpXCA7Civnj77ku6PnmoQgPCBnZW5kYWl0ZWtpXCA7CivlpKLliKTmlq0gPCB5dW1laGFuZGFuXCA7CivlsrPlj4vkvJogPCBnYWt1eXV1a2FpXCA7Civli5jlrprlsLsgPCBrYW5qb3VqaXJpXCA7CivlhobpiYsgPCBtYXJ1Z2FuJyduYVwgOwor5b6M5b6MIDwgbm9jaGlub2NoaVwgOwor5ZCI5a6/5omAIDwgZ2Fzc2h1a3Vqb1wgOwor6KCx5oOR55qEIDwga293YWt1dGVraVwgOwor56m66ZaT6Lu4IDwga3V1a2FuamlrdVwgOwor5Lit6ZaT5bGkIDwgY2h1dWthbnNvdVwgOwor54m557Sa6YWSIDwgdG9ra3l1dXNodVwgOwor5qip5aiB5Li7576pIDwga2VuJydpc2h1Z2lcIDsKK+WNuOWVhiA8IG9yb3NoaXNob3VcIDsKK+e9suWQjeWbvSA8IHNob21laWtva3VcIDsKK+i+u+ikhCA8IHRzdWppdHN1bWFcIDsKK+awl+eCjuS4h+S4iCA8IGtpZW5iYW5qb3VcIDsKK+a8lOWKh+eahCA8IGVuZ2VraXRla2lcIDsKK+S6pOaIpuWbvSA8IGtvdXNlbmtva3VcIDsKK+WkluW9oueahCA8IGdhaWtlaXRla2lcIDsKK+S4remWk+WtkCA8IGNodXVrYW5zaGlcIDsKK+iKsemwuSA8IGhhbmFnYXRzdW9cIDsKK+aVtOa1geWtkCA8IHNlaXJ5dXVzaGlcIDsKK+WEquWFiOagqiA8IHl1dXNlbmthYnVcIDsKK+efreWFteaApSA8IHRhbnBlaWt5dXVcIDsKK+W8geaFtue4niA8IGJlbmtlaWppbWFcIDsKK+eJoeS4uembqiA8IGJvdGFuJyd5dWtpXCA7CivmlpzmoLzmgKcgPCBzaGFrYWt1c2VpXCA7CivptrTlmLQgPCB0c3VydWhhc2hpXCA7Civpq5jop5LnoLIgPCBrb3VrYWt1aG91XCA7CivmrbTlubTpvaIgPCByZWtpbmVucmVpXCA7CivnhKHliIbliKUgPCBtdWZ1bmJldHN1XCA7CivliLrmiJ/mgKcgPCBzaGlnZWtpc2VpXCA7CivlhYjpmqMgPCBzYWtpZG9uYXJpXCA7CivpgJrooYznqI4gPCB0c3V1a291emVpXCA7CivotoXoh6rnhLYgPCBjaG91c2hpemVuXCA7CivliYrmsLfmqZ8gPCBzYWt1aHlvdWtpXCA7CivlpZHntITogIUgPCBrZWl5YWt1c2hhXCA7CivlpJznm5fomasgPCB5b3RvdW11c2hpXCA7CivkuInkuInkuZ3luqYgPCBzYW5zYW5rdWRvXCA7CivlronlhajnjocgPCBhbnplbnJpdHN1XCA7Civljp/lrZDnl4cgPCBnZW5zaGlzaG91XCA7Civljp/lrZDnl4UgPCBnZW5zaGlieW91XCA7CivoqIjnrpfmqZ/plpMgPCBrZWlzYW5raW1hXCA7CivlraPnr4DmhJ8gPCBraXNldHN1a2FuXCA7Civml6fli5jlrpogPCBreXV1a2Fuam91XCA7Civku67oqr/ljbAgPCBrYXJpY2hvdWluXCA7CivnpLzlhIDkvZzms5UgPCByZWlnaXNhaG91XCA7Civmu4XojLboi6bojLYgPCBtZWNoYWt1Y2hhXCA7CivkuZfou4ros4MgPCBqb3VzaGFjaGluXCA7Civlt6botrMgPCBoaWRhcmlhc2hpXCA7CivpmLLomavliaQgPCBib3VjaHV1emFpXCA7CivlvpflpLEgPCB0b2t1c2hpdHN1XCA7CivmoLjmiKbkuokgPCBrYWt1c2Vuc291XCA7Civnmbrlo7Lml6UgPCBoYXRzdWJhaWJpXCA7CivogLPkuIvohbrngo4gPCBqaWthc2VuJydlblwgOwor5a6a6Laz5pWwIDwgdGVpc29rdXN1dVwgOwor55+z5rK55Y2x5qmfIDwgc2VraXl1a2lraVwgOwor6YeM56We5qW9IDwgc2F0b2thZ3VyYVwgOwor5ZKE44CFIDwgdG90c3V0b3RzdVwgOwor6Jap5pGp6IqLIDwgc2F0c3VtYWltb1wgOwor5aem6YCa572qIDwga2FudHN1dXphaVwgOwor5bGx5p6X5a2mIDwgc2FucmluZ2FrdVwgOwor5Ymv6K2w6ZW3IDwgZnVrdWdpY2hvdVwgOwor5YiR5LqL5LqL5Lu2IDwga2VpamlqaWtlblwgOwor6Iiq56m655eFIDwga291a3V1YnlvdVwgOwor5ryi6LaK6Z+zIDwga2FuJydldHN1b25cIDsKK+WHuuWFpeWPoyA8IGRlaXJpZ3VjaGlcIDsKK+WIqeeUqOS+oeWApCA8IHJpeW91a2FjaGlcIDsKK+mFkuWHpiA8IHNha2Vkb2tvcm9cIDsKK+S7rue0jeeojiA8IGthcmlub3V6ZWlcIDsKK+e3j+WQiOeahCA8IHNvdWdvdXRla2lcIDsKK+S7suijgeiAhSA8IGNodXVzYWlzaGFcIDsKK+WHuuWxleiAhSA8IHNodXR0ZW5zaGFcIDsKK+a0u+Wtl+S9kyA8IGthdHN1aml0YWlcIDsKK+iCmOmJhOegsiA8IGhpamlkZXBwb3VcIDsKK+Wvvui5oOWcsCA8IHRhaXNla2ljaGlcIDsKK+Wbnue3muiyoOiNtyA8IGthaXNlbmZ1a2FcIDsKK+W7u+a8lealrSA8IGthaXNvdWd5b3VcIDsKK+S9jumanOeijSA8IHRlaXNob3VnYWlcIDsKK+ats+aciCA8IHRvc2hpdHN1a2lcIDsKK+aui+S9memhjSA8IHphbicneW9nYWt1XCA7CivmqKrou4ogPCB5b2tvZ3VydW1hXCA7CivmsrvnmYLms5UgPCBjaGlyeW91aG91XCA7CivmqZ/morDmsrkgPCBraWthaWFidXJhXCA7Civoh6rnmbrmgKcgPCBqaWhhdHN1c2VpXCA7Civkv6Hlj7fmiYsgPCBzaGluZ291c2h1XCA7CivpppblsL7kuIDosqsgPCBzaHViaWlra2FuXCA7CivljLvnmYLkv53pmbogPCBpcnlvdWhva2VuXCA7CivmoIPmnKjnnIwgPCB0b2NoaWdpa2VuXCA7Civoqr/mn7vnpaggPCBjaG91c2FoeW91XCA7Civmraboo4Xop6PpmaQgPCBidXNvdWthaWpvXCA7Civnt6jlubTlj7IgPCBoZW4nJ25lbnNoaVwgOwor5Zyf552A5rCRIDwgZG9jaGFrdW1pblwgOwor5Y2T5Ye6IDwgdGFrdXNodXRzdVwgOwor6YCy5ZGI5pysIDwgc2hpbnRlaWJvblwgOwor55Ge5a6d56ugIDwgenVpaG91c2hvdVwgOwor6KGo5oSP5paH5a2XIDwgaHlvdWltb25qaVwgOwor6JC96YG46ICFIDwgcmFrdXNlbnNoYVwgOwor5YaF5YuY5a6aIDwgdWNoaWthbmpvdVwgOwor5aWJ57SN6aGNIDwgaG91bm91Z2FrdVwgOwor5byP5pelIDwgc2hpa2lqaXRzdVwgOwor57Sw6IOe5a2mIDwgc2FpYm91Z2FrdVwgOwor6YO95biC5Zu95a62IDwgdG9zaGlrb2trYVwgOwor5p6c5a6f5bqXIDwga2FqaXRzdXRlblwgOwor54Sh54K65b6S6aOfIDwgbXVpdG9zaG9rdVwgOwor5pig55S76Z+z5qW9IDwgZWlnYW9uZ2FrdVwgOwor5a6f5pmC6ZaTIDwgaml0c3VqaWthblwgOwor5YWl5ryB5qipIDwgbnl1dWd5b2tlblwgOwor5YWl6LOqIDwgbnl1dXNoaWNoaVwgOwor6JGX5L2c6ICFIDwgY2hvc2FrdXNoYVwgOwor552A552AIDwgY2hha3VjaGFrdVwgOwor5Y2X5YG0IDwgbWluYW1pZ2F3YVwgOwor6ISx6ISC5LmzIDwgZGFzc2hpbnl1dVwgOwor5YmN5b6M5bem5Y+zIDwgemVuZ29zYXl1dVwgOwor56Wt56WA5paZIDwgc2Fpc2hpcnlvdVwgOwor6YeO5oim54m556eRIDwgeWFzZW50b2trYVwgOwor5LiN576I5aWU5pS+IDwgZnVraWhvbnBvdVwgOwor5YaF5byB5oW2IDwgdWNoaWJlbmtlaVwgOwor5ZCR5LiK5b+DIDwga291am91c2hpblwgOwor5LiA5omL6LKp5aOyIDwgaXR0ZWhhbmJhaVwgOwor54mn576K6ICFIDwgYm9rdXlvdXNoYVwgOwor5Y+C6Kaz5Lq6IDwgc2Fua2FuJyduaW5cIDsKK+earuihoyA8IGthd2Fnb3JvbW9cIDsKK+Wdh+S4gOWMliA8IGtpbicnaXRzdWthXCA7CivlhbHlkIzogIUgPCBreW91ZG91c2hhXCA7CivmmI7mnJ3kvZMgPCBtaW5jaG91dGFpXCA7Civloanog6HmpJIgPCBzaGlva29zaG91XCA7CivogJDpnIfmgKcgPCB0YWlzaGluc2VpXCA7CivmlrDopb/omK0gPCBuecWrasSrcmFuZG9cIDsKK+WMuuWMuiA8IG1hY2hpbWFjaGlcIDsKK+edgOeZuiA8IGNoYWt1aGF0c3VcIDsKK+S4gOaemuiynSA8IGljaGltYWlnYWlcIDsKK+S5seaatOiAhSA8IHJhbmJvdW1vbm9cIDsKK+WQhOS4gOmDqCA8IGtha3VpY2hpYnVcIDsKK+mZsOaXpeWQkSA8IGthZ2VoaW5hdGFcIDsKK+e0q+WuuOauvyA8IHNoaXNoaW5kZW5cIDsKK+W5vemciuagqiA8IHl1dXJlaWthYnVcIDsKK+aJgOW+l+iAhSA8IHNob3Rva3VzaGFcIDsKK+i7jeS6i+WKmyA8IGd1bmppcnlva3VcIDsKK+WLneiyoOS6iyA8IHNob3VidWdvdG9cIDsKK+W9k+W6p+mgkOmHkSA8IHRvdXpheW9raW5cIDsKK+iKsemLjyA8IGhhbmFiYXNhbWlcIDsKK+e1puawtOi7iiA8IGt5dXVzdWlzaGFcIDsKK+e0sOiDnuWjgSA8IHNhaWJvdWhla2lcIDsKK+W6rea8hiA8IG5pd2F1cnVzaGlcIDsKK+ahnOiKseeIm+a8qyA8IG91a2FyYW5tYW5cIDsKK+WPr+mAhuaApyA8IGthZ3lha3VzZWlcIDsKK+iHqueUseiHquWcqCA8IGppeXV1aml6YWlcIDsKK+S5vueHpeeEoeWRsyA8IGthbnNvdW11bWlcIDsKK+S6jOmgheWumueQhiA8IG5pa291dGVpcmlcIDsKK+aHuOiznumHkSA8IGtlbnNob3VraW5cIDsKK+egguW1kCA8IHN1bmFhcmFzaGlcIDsKK+WQq+WXveiWrCA8IGdhbnNvdXlha3VcIDsKK+imi+WtpuiAhSA8IGtlbmdha3VzaGFcIDsKK+WEquWFiOW4rSA8IHl1dXNlbnNla2lcIDsKK+WwkeaVsOiAhSA8IHNob3VzdXVzaGFcIDsKK+WFseWQjOe3miA8IGt5b3Vkb3VzZW5cIDsKK+W5tOeUtyA8IHRvc2hpb3Rva29cIDsKK+WPiuesrOeCuSA8IGt5dXVkYWl0ZW5cIDsKK+a0u+aAp+axmuazpSA8IGthc3NlaW9kZWlcIDsKK+WIhumhnuihqCA8IGJ1bnJ1aWh5b3VcIDsKK+i/keecvOmPoSA8IGtpbmdhbmt5b3VcIDsKK+mWouaVsOaXjyA8IGthbnN1dXpva3VcIDsKK+eUuuadkeWItiA8IGNob3Vzb25zZWlcIDsKK+alteaCquS6uiA8IGdva3Vha3VuaW5cIDsKK+W8leWPl+S6uiA8IGhpa2l1a2VuaW5cIDsKK+e3qOW5tOS9kyA8IGhlbicnbmVudGFpXCA7Civku6PpoZjkurogPCBkYWlnYW4nJ25pblwgOwor5pyJ5Yqb6aasIDwgeXV1cnlva3ViYVwgOwor5qyh5qyhIDwgdHN1Z2l0c3VnaVwgOwor5LiJ5LiJ5LqU5LqUIDwgc2Fuc2FuZ29nb1wgOwor6Zmk6Zuq6LuKIDwgam9zZXRzdXNoYVwgOwor5aSn5a+p6ZmiIDwgZGFpc2hpbicnaW5cIDsKK+eojumWoumVtyA8IHplaWthbmNob3VcIDsKK+S4remWk+S9kyA8IGNodXVrYW50YWlcIDsKK+a7i+mkiueJqSA8IGppeW91YnV0c3VcIDsKK+S5neW3peWkpyA8IGt5dXVrb3VkYWlcIDsKK+WIgOeWtSA8IGthdGFuYWtpenVcIDsKK+WKoOa5v+WZqCA8IGthc2hpdHN1a2lcIDsKK+aWsOiogueJiCA8IHNoaW50ZWliYW5cIDsKK+mBleajmiA8IGNoaWdhaWRhbmFcIDsKK+WNgeS6uuWKmyA8IGp1dW5pbnJpa2lcIDsKK+S4i+Wuv+S6uiA8IGdlc2h1a3VuaW5cIDsKK+Wkp+alreeJqSA8IG9vd2F6YW1vbm9cIDsKK+ebtOethiA8IGNob2t1aGl0c3VcIDsKK+WBtOmdouimsyA8IHNva3VtZW5rYW5cIDsKK+W8kOW/gyA8IGZ1dGFnb2tvcm9cIDsKK+ePvuixoeeVjCA8IGdlbnNob3VrYWlcIDsKK+i/veippumokyA8IHRzdWlzaGlrZW5cIDsKK+WFiOWkqeeahCA8IHNlbnRlbnRla2lcIDsKK+W7uuevieWutiA8IGtlbmNoaWt1a2FcIDsKK+awtOmHj+ioiCA8IHN1aXJ5b3VrZWlcIDsKK+ebtOeriyA8IGNob2t1cml0c3VcIDsKK+WFnOifuSA8IGthYnV0b2dhbmlcIDsKK+imquihm+maiiA8IHNoaW4nJ2VpdGFpXCA7Civnm7LnqpMgPCBtZWt1cmFtYWRvXCA7CivlhYjlpKnnl4UgPCBzZW50ZW5ieW91XCA7CivnuYHmrpbmnJ8gPCBoYW5zaG9rdWtpXCA7CivoiLnlub3pnIogPCBmdW5heXV1cmVpXCA7CivmsJHml4/mgKcgPCBtaW56b2t1c2VpXCA7CivlvqHkuobmib8gPCBnb3J5b3VzaG91XCA7CivmsLTom4fluqcgPCBtaXp1aGViaXphXCA7Civmi53lpJbnmoQgPCBoYWlnYWl0ZWtpXCA7CivliLrmiJ/liaQgPCBzaGlnZWtpemFpXCA7CivmiYDlvpfnqI4gPCBzaG90b2t1emVpXCA7Civmo4nlrp/msrkgPCBtZW5qaXRzdXl1XCA7Civlh7rnjYQgPCBzaHV0c3Vnb2t1XCA7Civlh7rnjJ8gPCBzaHV0c3VyeW91XCA7Civli6TntprogIUgPCBraW56b2t1c2hhXCA7CivlpKnnmofliLYgPCB0ZW4nJ25vdXNlaVwgOwor5Zar54WZ6LuKIDwga2l0c3VlbnNoYVwgOwor5a6f57+S55SfIDwgamlzc2h1dXNlaVwgOwor5L2T57O755qEIDwgdGFpa2VpdGVraVwgOwor6YGK6IiI56iOIDwgeXV1a3lvdXplaVwgOwor5L+u6YGT5aOrIDwgc2h1dWRvdXNoaVwgOwor5paw5pWZ5b6SIDwgc2hpbmt5b3V0b1wgOwor56CC5Z+DIDwgc3VuYWJva29yaVwgOwor5Y2a6Kan5LyaIDwgaGFrdXJhbmthaVwgOwor5YmN55m76YyyIDwgemVudG91cm9rdVwgOwor5p2x5rSL5a2mIDwgdG91eW91Z2FrdVwgOwor5aSn5bCG6LuNIDwgZGFpc2hvdWd1blwgOwor5Zyo5bqr566h55CGIDwgemFpa29rYW5yaVwgOwor5Y6f5a2Q5qC4IDwgZ2Vuc2hpa2FrdVwgOwor5aSn5YWs5Zu9IDwgdGFpa291a29rdVwgOwor5LyR5oGv5omAIDwga3l1dXNva3Vqb1wgOwor5bem6ICzIDwgaGlkYXJpbWltaVwgOwor6auY6Zqc5a6zIDwga291c2hvdWdhaVwgOwor5Yqb5bivIDwgY2hpa2FyYW9iaVwgOwor5rGC6YGT6ICFIDwga3l1dWRvdXNoYVwgOwor5aSp5a6I6ZajIDwgdGVuc2h1a2FrdVwgOwor56CC5ZqiIDwgc3VuYWJ1a3Vyb1wgOwor5Lm+54mp5bGLIDwga2FuYnV0c3V5YVwgOwor5rC06YmE56CyIDwgbWl6dWRlcHBvdVwgOwor5Y2D5LiJ5bGLIDwgc2VubWl0c3V5YVwgOwor5YWl5riv56iOIDwgbnl1dWtvdXplaVwgOwor6YqA6KGM5qWtIDwgZ2lua291Z3lvdVwgOwor54Gr54G95L+d6Zm6IDwga2FzYWlob2tlblwgOwor5LyR5rOK5omAIDwga3l1dWhha3Vqb1wgOwor5Lq65bel55qEIDwgamlua291dGVraVwgOwor57216KmI6ZuR6KiAIDwgYmFyaXpvdWdvblwgOwor5YWJ6JiaIDwgaGlrYXJpZ29rZVwgOwor6IG06KaW6ICFIDwgY2hvdXNoaXNoYVwgOwor5Lih5Zu96KqeIDwgcnlvdWtva3Vnb1wgOwor6YGT6Lev5bCB6Y6WIDwgZG91cm9mdXVzYVwgOwor6Iqx6KmeIDwgaGFuYWtvdG9iYVwgOwor6auY54Cs6IifIDwgdGFrYXNlYnVuZVwgOwor57WE57mU5ZCNIDwgc29zaGlraW1laVwgOwor5Yid5rC3IDwgaGF0c3Vnb29yaVwgOwor5ZCM5pyf5byPIDwgZG91a2lzaGlraVwgOwor5aSn6IW46I+MIDwgZGFpY2hvdWtpblwgOwor5Y2K54uC5LmxIDwgaGFua3lvdXJhblwgOwor6LSF5rKi5ZOBIDwgemVpdGFrdWhpblwgOwor5bCP5aeU5ZOh5LyaIDwgc2hvdWlpbmthaVwgOwor5LiA5pys6YGTIDwgaXBwb25taWNoaVwgOwor5Yip5r2k546HIDwgcmlqdW5yaXRzdVwgOwor6L+r5a6z6ICFIDwgaGFrdWdhaXNoYVwgOwor5aSn5qW15q6/IDwgZGFpZ29rdWRlblwgOwor6YeN6YeP5oSfIDwganV1cnlvdWthblwgOwor576O5a2m55qEIDwgYmlnYWt1dGVraVwgOwor5YaZ55Sf5bizIDwgc2hhc2VpY2hvdVwgOwor5Lqk5riJ5aeU5ZOhIDwga291c2hvdWlpblwgOwor5buD5qOE54mpIDwgaGFpa2lidXRzdVwgOwor6Zu756OB55+zIDwgZGVuamlzaGFrdVwgOwor6YCg5Za254mpIDwgem91ZWlidXRzdVwgOwor5oqA6KGT6Z2iIDwgZ2lqdXRzdW1lblwgOwor5LuV572u6ICFIDwgc2hpb2tpbW9ub1wgOwor6Ium6Im+IDwgbmlnYXlvbW9naVwgOwor5pmC5Yi76KGoIDwgamlrb2t1aHlvdVwgOwor5ZCI5ZCM6KGM54K6IDwgZ291ZG91a291aVwgOwor54KJ6L666KuH6KmxIDwgcm9oZW5kYW53YVwgOwor5q+S56eR5a2mIDwgZG9rdWthZ2FrdVwgOwor55u06KGM5L6/IDwgY2hva2tvdWJpblwgOwor5omL5YaF6IG3IDwgdGVuYWlzaG9rdVwgOwor5peF6KGM5YWIIDwgcnlva291c2FraVwgOwor5qC45by+6aCtIDwga2FrdWRhbnRvdVwgOwor6YGO5Y675YiG6KmeIDwga2Frb2J1bnNoaVwgOwor56m66ZuG5ZCIIDwga3V1c2h1dWdvdVwgOwor55q/56ekIDwgc2FyYWJha2FyaVwgOwor54m56Kix5paZIDwgdG9ra3lvcnlvdVwgOwor5Li75oOF55qEIDwgc2h1am91dGVraVwgOwor5Za25Yip5Lya56S+IDwgZWlyaWdhaXNoYVwgOwor5pu06KGj5a6kIDwga291aXNoaXRzdVwgOwor5q665LyQIDwgc2F0c3ViYXRzdVwgOwor5Lya5bit6IazIDwga2Fpc2VraXplblwgOwor5Y2D5LiA5aScIDwgc2VuJydpY2hpeWFcIDsKK+ecn+eUsOe0kCA8IHNhbmFkYWhpbW9cIDsKK+mBk+WtpuiAhSA8IGRvdWdha3VzaGFcIDsKK+aPrueZuuaApyA8IGtpaGF0c3VzZWlcIDsKK+ayuOOAhSA8IGZ1dHN1ZnV0c3VcIDsKK+WHuuizh+mHkSA8IHNodXNzaGlraW5cIDsKK+eJp+e+iueKrCA8IGJva3V5b3VrZW5cIDsKK+S6uuS6i+S4jeecgSA8IGppbmppZnVzZWlcIDsKK+iSuOeVmeawtCA8IGpvdXJ5dXVzdWlcIDsKK+eVsOaAp+mWouS/giA8IGlzZWlrYW5rZWlcIDsKK+etieWcp+e3miA8IHRvdWF0c3VzZW5cIDsKK+avkuWRs+W9uSA8IGRva3VtaXlha3VcIDsKK+WFjuiEoyA8IG1pdHN1a3VjaGlcIDsKK+S6i+aVheWOn+WboCA8IGppa29nZW4nJ2luXCA7CivlhKroia/lupcgPCB5dXVyeW91dGVuXCA7CivlhoXoirjogIUgPCB1Y2hpZ2Vpc2hhXCA7CivmgqrpgZTogIUgPCB3YXJ1ZGFzc2hhXCA7CivkuInpnaLpj6EgPCBzYW5tZW5reW91XCA7Civni7jolY7puqYgPCB0YW51a2lzb2JhXCA7Civoo4/mm7jkurogPCB1cmFnYWtpbmluXCA7CivnibnlpKflj7cgPCB0b2t1ZGFpZ291XCA7CivntYTnuZTkvZMgPCBzb3NoaWtpdGFpXCA7Civnj77lrp/ljJYgPCBnZW5qaXRzdWthXCA7CivlpJrnm67nmoQgPCB0YW1va3V0ZWtpXCA7CivlsIbmnaXmgKcgPCBzaG91cmFpc2VpXCA7CivkuIDkurrohbkgPCBoaXRvcmliYXJhXCA7CivluqfmioAgPCBzdXdhcml3YXphXCA7CivnlLvkuIDljJYgPCBrYWt1aXRzdWthXCA7Civph43ph5HlsZ4gPCBqdXVraW56b2t1XCA7Civoia/os6ogPCByeW91c2hpdHN1XCA7Civmp43oob4gPCB5YXJpYnVzdW1hXCA7Civlrrblh7rlsJHlpbMgPCBpZWRlc2hvdWpvXCA7Civnq4vkvJrkurogPCB0YWNoaWFpbmluXCA7Civlj6TlhbjkuLvnvqkgPCBrb3RlbnNodWdpXCA7CivkuI3ms5XmipXmo4QgPCBmdWhvdXRvdWtpXCA7CivpgJDml6UgPCBjaGlrdWppdHN1XCA7CivmrbTlj7LkuIogPCByZWtpc2hpam91XCA7Civoo73piYTmiYAgPCBzZWl0ZXRzdWpvXCA7Civoi6Xnt5EgPCB3YWthbWlkb3JpXCA7CivkuIDkurrogIUgPCBoaXRvcmltb25vXCA7Civou4ros4MgPCBrdXJ1bWFjaGluXCA7Civkuozph43onrrml4sgPCBuaWp1dXJhc2VuXCA7Civpga7mlq3lo4EgPCBzaGFkYW5wZWtpXCA7Civnibnlo7LloLQgPCB0b2t1YmFpam91XCA7CivlkYrnn6Xmnb8gPCBrb2t1Y2hpYmFuXCA7CivmspbnqY3mnJ8gPCBjaHV1c2VraWtpXCA7Civku67oqJjlhaUgPCBrYXJpa2lueXV1XCA7Civkv67pgZPkvJogPCBzaHV1ZG91a2FpXCA7CivkvY3nm7jpgJ/luqYgPCBpc291c29rdWRvXCA7CivmoZ/moq/lrZAgPCBzYW5iYXNoaWdvXCA7Civnlarlj7fmnK0gPCBiYW5nb3VmdWRhXCA7CivlsJHmlbDngrkgPCBzaG91c3V1dGVuXCA7CivlsbHnjKvluqcgPCB5YW1hbmVrb3phXCA7Civlr53lj7DliLggPCBzaGluZGFpa2VuXCA7CivmsLTpioDmn7EgPCBzdWlnaW5jaHV1XCA7CivotaTmtbfkuoAgPCBha2F1bWlnYW1lXCA7Civpqqjnm7jlraYgPCBrb3Nzb3VnYWt1XCA7Civpn7Ppn7vpg6jploAgPCBvbicnaW5idW1vblwgOwor5qmf6IO95Li7576pIDwga2lub3VzaHVnaVwgOwor5aSn6Ie85q2vIDwgZGFpa3l1dXNoaVwgOwor5qmf5qKw6K2m5YKZIDwga2lrYWlrZWliaVwgOwor5rCR5peP5Y+yIDwgbWluem9rdXNoaVwgOwor5LqU56ic6YOtIDwgZ29yeW91a2FrdVwgOwor5aWR57SE5pu4IDwga2VpeWFrdXNob1wgOwor5b2x5rOV5birIDwga2FnZWJvdXNoaVwgOwor6YeR5Ymb55+zIDwga29uZ291c2VraVwgOwor55WR6bygIDwgaGF0YW5lenVtaVwgOwor54m56Kix5bqBIDwgdG9ra3lvY2hvdVwgOwor5Z+656SO6Kmm6aiTIDwga2lzb3NoaWtlblwgOwor5a625bqt6I+c5ZySIDwga2F0ZWlzYWllblwgOwor54m55aOy5ZOBIDwgdG9rdWJhaWhpblwgOwor6YGT6Lev5bel5LqLIDwgZG91cm9rb3VqaVwgOwor5LiL6KuL6LKgIDwgc2hpdGF1a2VvaVwgOwor5Y+O56mr5pyfIDwgc2h1dWtha3VraVwgOwor5Lqc54i+54S25LiBIDwgYXJ1emVuY2hpblwgOwor5Zub6Ium5YWr6IumIDwgc2hpa3VoYWtrdVwgOwor552A5omVIDwgY2hha3ViYXJhaVwgOwor6Zm45oim6ZqKIDwgcmlrdXNlbnRhaVwgOwor57Wm5rC0566hIDwga3l1dXN1aWthblwgOwor5aeU57Sw6Z2i6KuHIDwgaXNhaW1lbmRhblwgOwor56We56eY55qEIDwgc2hpbnBpdGVraVwgOwor6YeN6YeP5Zm4IDwganV1cnlvdXRvblwgOwor5a++5qCh6Kmm5ZCIIDwgdGFpa291amlhaVwgOwor5Y+O56mr5pmCIDwgc2h1dWtha3VqaVwgOwor6auY5Zyn57iuIDwga291YXNzaHVrdVwgOwor6JGX5L2c5qipIDwgY2hvc2FrdWtlblwgOwor5Lq65rCX5L2c5a62IDwgbmlua2lzYWtrYVwgOwor5Luj5Z+36KGMIDwgZGFpc2hpa2tvdVwgOwor6ZmQ5a6a55qEIDwgZ2VudGVpdGVraVwgOwor6auY5Zyn57eaIDwga291YXRzdXNlblwgOwor5Luu5o6h55SoIDwga2FyaXNhaXlvdVwgOwor5pqW5Yas55Ww5aSJIDwgZGFudG91aWhlblwgOwor5Ye65pKDIDwgc2h1dHN1Z2VraVwgOwor5pS56Z2p6ICFIDwga2Fpa2FrdXNoYVwgOwor5Zyw5LiL6YmEIDwgY2hpa2F0ZXRzdVwgOwor5bCK546L5YWaIDwgc29uJydub3V0b3VcIDsKK+Wcn+S/temamyA8IGRvaHlvdWdpd2FcIDsKK+Wkp+WxseeMqyA8IG9veWFtYW5la29cIDsKK+iIquepuuWtpiA8IGtvdWt1dWdha3VcIDsKK+WOn+adkOaWmSA8IGdlbnphaXJ5b3VcIDsKK+WHuueUo+aVsCA8IHNodXNzYW5zdXVcIDsKK+ashOWPgueFpyA8IHJhbnNhbnNob3VcIDsKK+WHuueUn+aVsCA8IHNodXNzZWlzdXVcIDsKK+WuiOWCmeeOhyA8IHNodWJpcml0c3VcIDsKK+aWh+iKuOWtpiA8IGJ1bmdlaWdha3VcIDsKK+Wls+aAp+S4gOiIrCA8IGpvc2VpaXBwYW5cIDsKK+e0heWGoOmzpSA8IGtvdWthbmNob3VcIDsKK+WIneWgtOaJgCA8IGhhdHN1YmFzaG9cIDsKK+S5s+eKtua2siA8IG55dXVqb3Vla2lcIDsKK+WNmOWdkOW8jyA8IHRhbnphc2hpa2lcIDsKK+WcqOeVmeawkSA8IHphaXJ5dXVtaW5cIDsKK+e+jumhlOihkyA8IGJpZ2FuanV0c3VcIDsKK+eFruayuOWZqCA8IHNoYWZ1dHN1a2lcIDsKK+WEquiJr+WTgSA8IHl1dXJ5b3VoaW5cIDsKK+aAqueNo+aYoOeUuyA8IGthaWp1dWVpZ2FcIDsKK+WkmueoruWkmuanmCA8IHRhc2h1dGF5b3VcIDsKK+WzoOmBkyA8IHRvdWdlbWljaGlcIDsKK+S6jOmDqOaVmeaOiCA8IG5pYnVreW91anVcIDsKK+aIpuihk+WutiA8IHNlbmp1dHN1a2FcIDsKK+mAn+W6pumBleWPjSA8IHNva3Vkb2loYW5cIDsKK+S7leS6i+W4qyA8IHNoaWdvdG9zaGlcIDsKK+W5tOW8tyA8IHRvc2hpZHp1eW9cIDsKK+aoquaWreatqemBkyA8IG91ZGFuaG9kb3VcIDsKK+eEoeeUn+eJqSA8IG11c2VpYnV0c3VcIDsKK+mbkeaWh+WutiA8IHphdHN1YnVua2FcIDsKK+WQjOiqv+iAhSA8IGRvdWNob3VzaGFcIDsKK+S6iOe0hOW4rSA8IHlveWFrdXNla2lcIDsKK+mHkeefs+aWhyA8IGtpbnNla2lidW5cIDsKK+e3tOe/kuiIuSA8IHJlbnNodXVzZW5cIDsKK+iIl+ijhemBk+i3ryA8IGhvc291ZG91cm9cIDsKK+a4rOa3seapnyA8IHNva3VzaGlua2lcIDsKK+iJtuiJtiA8IHRzdXlhdHN1eWFcIDsKK+eZuuimi+aWmSA8IGhha2tlbnJ5b3VcIDsKK+ihkuWtpuiAhSA8IGdlbmdha3VzaGFcIDsKK+W8leWHuueJqSA8IGhpa2lkZW1vbm9cIDsKK+mWi+aetuW8jyA8IGthaWthc2hpa2lcIDsKK+WMheWQq+eahCA8IGhvdWdhbnRla2lcIDsKK+WQiOWlj+iqvyA8IGdhc3NvdWNob3VcIDsKK+eUsOm1kSA8IGhvdG90b2dpc3VcIDsKK+WFseWSjOWbvSA8IGt5b3V3YWtva3VcIDsKK+WvqeWIpOWToSA8IHNoaW5wYW4nJ2luXCA7CivnhKHnt5rmioDluKsgPCBtdXNlbmdpc2hpXCA7CivmuIXmnJ3kvZMgPCBzZWljaG91dGFpXCA7Civpo5vps6XmmYLku6MgPCBhc3VrYWppZGFpXCA7Civooajml6XmnKwgPCBvbW90ZW5paG9uXCA7Civnj77ku6PliocgPCBnZW5kYWlnZWtpXCA7CivlsbHpr6ggPCB5YW1ha3VqaXJhXCA7CivljbPlirnolqwgPCBzb2trb3V5YWt1XCA7Civml6XpgYvli5UgPCBuaWNoaXVuZG91XCA7CivojYnmnpUgPCBrdXNhbWFrdXJhXCA7Civogbfpmo7liLYgPCBzaG9ra2Fpc2VpXCA7CivliY3ou4rou7ggPCB6ZW5zaGFqaWt1XCA7Civlm57ot6/ln7rmnb8gPCBrYWlyb2tpYmFuXCA7CivkuIrmmIfnt5ogPCBqb3VzaG91c2VuXCA7CivmqZ/lr4bmgKcgPCBraW1pdHN1c2VpXCA7CivmmI7ntLDooaggPCBtZWlzYWloeW91XCA7CivlvaLmiJDlpJbnp5EgPCBrZWlzZWlnZWthXCA7Civkv67ovp7lraYgPCBzaHV1amlnYWt1XCA7CivlkI3oqonogbcgPCBtZWl5b3Nob2t1XCA7CivlroflrpnlhbXlmaggPCB1Y2h1dWhlaWtpXCA7Civlm5vlpKnnjosgPCBzaGl0ZW4nJ25vdVwgOwor55Ww5bi45rCX6LGhIDwgaWpvdWtpc2hvdVwgOwor5Lq655u45a2mIDwgbmluc291Z2FrdVwgOwor552A5a6fIDwgY2hha3VqaXRzdVwgOwor5o6I5qWt5paZIDwganVneW91cnlvdVwgOwor6Ymb5Lit5q+SIDwgZW5jaHV1ZG9rdVwgOwor54Sh5qmf5YyW5a2mIDwgbXVraWthZ2FrdVwgOwor6Ieq55Sx5Li7576pIDwgaml5dXVzaHVnaVwgOwor5rK755mC5LujIDwgY2hpcnlvdWRhaVwgOwor5YK36JasIDwga2l6dWd1c3VyaVwgOwor5L2N6KiY6L+96LSIIDwgaWtpdHN1aXNvdVwgOwor5biv6buE6ImyIDwgdGFpb3VzaG9rdVwgOwor6Iy25p+xIDwgY2hhYmFzaGlyYVwgOwor55u05o6lIDwgY2hva3VzZXRzdVwgOwor5bqV5ZyfIDwgc29rb3RzdWNoaVwgOwor5a6f5YaZ5pig55S7IDwgamlzc2hhZWlnYVwgOwor6LW35bel5byPIDwga2lrb3VzaGlraVwgOwor6Ieq55Sx5pmC6ZaTIDwgaml5dXVqaWthblwgOwor55Wz6YedIDwgdGF0YW1paGFyaVwgOwor55m654axIDwgaGF0c3VuZXRzdVwgOwor5YiH5a6fIDwgc2V0c3VqaXRzdVwgOwor5Y+W5b6X6ICFIDwgc2h1dG9rdXNoYVwgOwor5b6h56S85aWJ5YWsIDwgb3JlaWJvdWtvdVwgOwor5bGx6aKqIDwgeWFtYW9yb3NoaVwgOwor5oKq5bmz562JIDwgYWt1YnlvdWRvdVwgOwor5YWJ54mpIDwgaGlrYXJpbW9ub1wgOwor5YmU5Ye6IDwgdGVraXNodXRzdVwgOwor55Sf6a2aIDwgbmFtYXpha2FuYVwgOwor5pyx5a2Q5a2mIDwgc2h1c2hpZ2FrdVwgOwor6Lu96YeR5bGeIDwga2Vpa2luem9rdVwgOwor5YGl6ISa5a62IDwga2Vua3lha3VrYVwgOwor5YWI6Kaa6ICFIDwgc2Vua2FrdXNoYVwgOwor5LiN5pW06ISIIDwgZnVzZWlteWFrdVwgOwor5Luy6ZaT5YaFIDwgbmFrYW1hdWNoaVwgOwor5bCG5p2l5YOPIDwgc2hvdXJhaXpvdVwgOwor5L2O5pWZ5LyaIDwgdGVpa3lvdWthaVwgOwor5oCn6KGd5YuVIDwgc2Vpc2hvdWRvdVwgOwor5ZyS6Iq455So5YW3IDwgZW5nZWl5b3VndVwgOwor57SZ6Iqd5bGFIDwga2FtaXNoaWJhaVwgOwor5YGP6L66IDwga2F0YWhvcm9yaVwgOwor5L2c5oiQ6ICFIDwgc2FrdXNlaXNoYVwgOwor5Zue5pil5YmkIDwga2Fpc2h1bnphaVwgOwor5raI6LK76YePIDwgc2hvdWhpcnlvdVwgOwor5Lim6KO95ZOBIDwgbmFtaXNlaWhpblwgOwor6Iqx55WRIDwgaGFuYWJhdGFrZVwgOwor56C06Iy255uu6Iy2IDwgaGFjaGFtZWNoYVwgOwor5bCC5pyJ5qipIDwgc2VuJyd5dXVrZW5cIDsKK+S5l+mmrOmdtCA8IGpvdWJhZ3V0c3VcIDsKK+WAmemWkyA8IHNvdXJvdWFpZGFcIDsKK+S4jeepj+aWh+abuCA8IGZ1b25idW5zaG9cIDsKK+WHuuizh+iAhSA8IHNodXNzaGlzaGFcIDsKK+WMluefs+WtpiA8IGthc2VraWdha3VcIDsKK+a8ouWtl+aWh+WMliA8IGthbmppYnVua2FcIDsKK+iBtOiouuWZqCA8IGNob3VzaGlua2lcIDsKK+mAsuWHuiA8IHNoaW5zaHV0c3VcIDsKK+eMqeeMqeighSA8IHNob3Vqb3ViYWVcIDsKK+S5seaVsOihqCA8IHJhbnN1dWh5b3VcIDsKK+S6iOWCmeippumokyA8IHlvYmlzaGlrZW5cIDsKK+WKtOWLmeeuoeeQhiA8IHJvdW11a2FucmlcIDsKK+W6l+WNuCA8IHRhbmFvcm9zaGlcIDsKK+Wfi+eri+WcsCA8IHVtZXRhdGVjaGlcIDsKK+WFseWQjOaApyA8IGt5b3Vkb3VzZWlcIDsKK+eGn+e3tOiAhSA8IGp1a3VyZW5zaGFcIDsKK+adseWMl+adsSA8IHRvdWhva3V0b3VcIDsKK+W5s+WSjOS8muitsCA8IGhlaXdha2FpZ2lcIDsKK+eVpei/sCA8IHJ5YWt1anV0c3VcIDsKK+eUn+S9k+iGnCA8IHNlaXRhaW1ha3VcIDsKK+S7u+WLmemDqOmaiiA8IG5pbm11YnV0YWlcIDsKK+awkeihhumnhSA8IG1pbnNodXVla2lcIDsKK+Wuh+WumemjnyA8IHVjaHV1c2hva3VcIDsKK+W4uOW4uCA8IHRzdW5lZHp1bmVcIDsKK+aXpeWFiea1tCA8IG5pa2tvdXlva3VcIDsKK+S7o+aVsOWtpiA8IGRhaXN1dWdha3VcIDsKK+Wwj+mWk+eJqeWxiyA8IGtvbWFtb25veWFcIDsKK+iDveW9ueiAhSA8IG5vdXlha3VzaGFcIDsKK+ayluepjeWcnyA8IGNodXVzZWtpZG9cIDsKK+W8leWKm+WcjyA8IGlucnlva3VrZW5cIDsKK+WIpeWPoyA8IGJldHN1a3VjaGlcIDsKK+S4reaKmOW4vSA8IG5ha2FvcmVib3VcIDsKK+mdnua0u+WLlSA8IGhpa2F0c3Vkb3VcIDsKK+e4puaoqueEoeWwvSA8IGp1dW91bXVqaW5cIDsKK+WFq+apiyA8IHlhdHN1aGFzaGlcIDsKK+WbveWutuS4u+e+qSA8IGtva2thc2h1Z2lcIDsKK+mBjuWJsOaKleS4jiA8IGtham91dG91eW9cIDsKK+irlueQhuWbnui3ryA8IHJvbnJpa2Fpcm9cIDsKK+acieWKn+eroCA8IHl1dWtvdXNob3VcIDsKK+aKleelqOiAhSA8IHRvdWh5b3VzaGFcIDsKK+aUu+aSg+maiiA8IGtvdWdla2l0YWlcIDsKK+WgseWRiuiAhSA8IGhvdWtva3VzaGFcIDsKK+eZuuihqOiAhSA8IGhhcHB5b3VzaGFcIDsKK+aDo+euoemgmCA8IHNvdWthbnJ5b3VcIDsKK+iHquWjiuS9nOeUqCA8IGppa2Fpc2F5b3VcIDsKK+mBuOaKnuiCoiA8IHNlbnRha3VzaGlcIDsKK+aKgOihk+iAhSA8IGdpanV0c3VzaGFcIDsKK+mAsuatqeeahCA8IHNoaW5wb3Rla2lcIDsKK+Wfi+iUtemHjyA8IG1haXpvdXJ5b3VcIDsKK+S7leS6i+WPsCA8IHNoaWdvdG9kYWlcIDsKK+aAp+aIkOeGnyA8IHNlaXNlaWp1a3VcIDsKK+awuOW5tOmWkyA8IG5hZ2FuZW5rYW5cIDsKK+iDjOaVmeiAhSA8IGhhaWt5b3VzaGFcIDsKK+i+sOW5tCA8IHRhdHN1ZG9zaGlcIDsKK+aJi+W3pealrSA8IHNodWtvdWd5b3VcIDsKK+a6luWCmeacn+mWkyA8IGp1bmJpa2lrYW5cIDsKK+WIpeWIpSA8IGJldHN1YmV0c3VcIDsKK+Wwu+mkoCA8IHNoaXJpbW9jaGlcIDsKK+eUs+iri+iAhSA8IHNoaW5zZWlzaGFcIDsKK+a8lOWHuuWutiA8IGVuc2h1dHN1a2FcIDsKK+S4gOWuieW/gyA8IGhpdG9hbnNoaW5cIDsKK+WkqeS4i+eEoeWPjCA8IHRlbmthbXVzb3VcIDsKK+ihjOalveWcsCA8IGtvdXJha3VjaGlcIDsKK+mjn+euoeazlSA8IHNob2trYW5ob3VcIDsKK+ims+a4rOiIuSA8IGthbnNva3VzZW5cIDsKK+ertuWQiOiAhSA8IGt5b3Vnb3VzaGFcIDsKK+WBpeiEs+WJpCA8IGtlbicnbm91emFpXCA7CivkuIDngInljYPph4wgPCBpc3NoYXNlbnJpXCA7Civnmb3mqLogPCBzaGlyYWthbmJhXCA7Civph5HliZvmnZYgPCBrb25nb3VkenVlXCA7CivmqKrooYzpl4rmrakgPCBvdWtvdWthcHBvXCA7CivorJ3ogonnpa0gPCBzaGFuaWt1c2FpXCA7CivopIflhpnntJkgPCBmdWt1c2hhc2hpXCA7CivpgLHliIroqowgPCBzaHV1a2Fuc2hpXCA7Civlj47nqI7miYAgPCBzaHV1emVpc2hvXCA7CivlibDkvZnkvqHlgKQgPCBqb3V5b2thY2hpXCA7CivlhavmnIggPCBoYWNoaWdhdHN1XCA7CivpgJrooYzkurogPCB0c3V1a291bmluXCA7CivpkZHlrprmlpkgPCBrYW50ZWlyeW91XCA7CivouI/ou4ogPCBmdW1pZ3VydW1hXCA7CivmlofljJblm73lrrYgPCBidW5rYWtva2thXCA7CivoiJ7lj7DnqL3lj6QgPCBidXRhaWdlaWtvXCA7CivlkIzkuIDkurogPCBkb3VpdHN1bmluXCA7Civpq5jmva7nt5ogPCBrb3VjaG91c2VuXCA7CivmtbjpgI/mgKcgPCBzaGludG91c2VpXCA7CivooYDoibLntKAgPCBrZXNzaGlraXNvXCA7CivohLPpnIfnm6ogPCBub3VzaGludG91XCA7CivkvIrli6LlpKflu58gPCBpc2V0YWlieW91XCA7Civos4PosrjkurogPCBjaGludGFpbmluXCA7Civlh7rnlJ/lnLAgPCBzaHVzc2VpY2hpXCA7CivnlaXoqqwgPCByeWFrdXNldHN1XCA7Civnt7Tnv5LnlJ8gPCByZW5zaHV1c2VpXCA7CivluqfluK3ooaggPCB6YXNla2loeW91XCA7CivoprPmuKzogIUgPCBrYW5zb2t1c2hhXCA7Civnm7jkupLmlK/mj7QgPCBzb3Vnb3NoaWVuXCA7CivlnLDnjYTogLMgPCBqaWdva3VtaW1pXCA7Civpq5jntJrlk4EgPCBrb3VreXV1aGluXCA7CivpgaDml6XngrkgPCBlbmppdHN1dGVuXCA7CivmvKLlrabogIUgPCBrYW5nYWt1c2hhXCA7CivniafloLTps6UgPCBtYWtpYmF0b3JpXCA7CivnlLPovrwgPCBtb3VzaGlrb21pXCA7CivliIfliIcgPCBzZXRzdXNldHN1XCA7CivmrbvliJHlm5ogPCBzaGlrZWlzaHV1XCA7CivmsLfnoILns5YgPCBrb29yaXphdG91XCA7Civmma7pgY3ljp/nkIYgPCBmdWhlbmdlbnJpXCA7CivlhbHokZfogIUgPCBreW91Y2hvc2hhXCA7Civpqqjpq4Tngo4gPCBrb3RzdXp1aWVuXCA7CivkuI3ljbPkuI3pm6IgPCBmdXNva3VmdXJpXCA7CivmlL7niaflnLAgPCBob3Vib2t1Y2hpXCA7Civmgqrlm6DmgqrmnpwgPCBha3VpbicnYWtrYVwgOwor55m96KGA55CDIDwgaGFra2Vra3l1dVwgOwor55uy5aOBIDwgbWVrdXJha2FiZVwgOwor5rq25bKp5rWBIDwgeW91Z2Fucnl1dVwgOwor5q275YK36ICFIDwgc2hpc2hvdXNoYVwgOwor5byP6YOo5a6YIDwgc2hpa2lidWthblwgOwor6ISG5byx5oCnIDwgemVpamFrdXNlaVwgOwor57Wm5rC05qCTIDwga3l1dXN1aXNlblwgOwor6a+o5bmVIDwga3VqaXJhbWFrdVwgOwor6Kaz5ris57ayIDwga2Fuc29rdW1vdVwgOwor5oCl6KGM5Yi4IDwga3l1dWtvdWtlblwgOwor55m95pifIDwgc2hpcm9ib3NoaVwgOwor55m+5pelIDwgaHlha3VuaWNoaVwgOwor6ZmE5ZKM6Zu35ZCMIDwgZnV3YXJhaWRvdVwgOwor5b6h6Z6t5pK7IDwgZ29iZW50YXRzdVwgOwor57eR5Y2B5a2XIDwgcnlva3VqdXVqaVwgOwor5YyW57Kn6YOo5bGLIDwga2VzaG91YmV5YVwgOwor5rWB57ea5b2iIDwgcnl1dXNlbmtlaVwgOwor6Iac6LOqIDwgbWFrdXNoaXRzdVwgOwor5Y6f5aeL55qEIDwgZ2Vuc2hpdGVraVwgOwor54mn576K5ZywIDwgYm9rdXlvdWNoaVwgOwor5Ye65YWlIDwgc2h1dHN1bnl1dVwgOwor56Oo6KO955+z5ZmoIDwgbWFzZWlzZWtraVwgOwor54i25a2Q5a625bqtIDwgZnVzaGlrYXRlaVwgOwor5Z+8546J55yMIDwgc2FpdGFtYWtlblwgOwor5L2Z6Z+75auL5auLIDwgeW9pbmpvdWpvdVwgOwor5pS75pKD6LuNIDwga291Z2VraWd1blwgOwor5pW16Imm6ZqKIDwgdGVraWthbnRhaVwgOwor5bm05LiLIDwgdG9zaGlzaGl0YVwgOwor6aOf5Zmo5qOaIDwgc2hva2tpZGFuYVwgOwor5Lyd6YCB5YWIIDwgZGVuc291c2FraVwgOwor56iy6I236a6oIDwgaW5hcml6dXNoaVwgOwor5L+C6ZW3IDwga2FrYXJpY2hvdVwgOwor5b6p6Kq/5ZmoIDwgZnVrdWNob3VraVwgOwor5aSn55eF5Lq6IDwgZGFpYnlvdW5pblwgOwor5YWx5Yq06ICFIDwga3lvdXJvdXNoYVwgOwor5YCZ6Kq/IDwgc291cm91Y2hvdVwgOwor55eF5Y6f6I+MIDwgYnlvdWdlbmtpblwgOwor5pyd6a6u5Lq6IDwgY2hvdXNlbmppblwgOwor57iE5paH5Zyf5ZmoIDwgam91bW9uZG9raVwgOwor5YSq6LaK5qipIDwgeXV1ZXRzdWtlblwgOwor6a+o5bC6IDwga3VqaXJhamFrdVwgOwor5LiA5Lq65peFIDwgaGl0b3JpdGFiaVwgOwor5paH5a2m6KuWIDwgYnVuZ2FrdXJvblwgOwor6IKJ5oSf55qEIDwgbmlra2FudGVraVwgOwor5oCl6KGM5L6/IDwga3l1dWtvdWJpblwgOwor55Sy5LmZ5LiZIDwga291b3RzdWhlaVwgOwor5Lit5rOi6ZW3IDwgY2h1dWhhY2hvdVwgOwor54Sh6IG36ICFIDwgbXVzaG9rdXNoYVwgOwor5Y+O56iO5a6YIDwgc2h1dXplaWthblwgOwor5a2m6YOo6ZW3IDwgZ2FrdWJ1Y2hvdVwgOwor6LKh5YuZ566h55CGIDwgemFpbXVrYW5yaVwgOwor6LaF5qC85a2QIDwgY2hvdWtvdXNoaVwgOwor56mC54q26Iqx5bqPIDwgc3Vpam91a2Fqb1wgOwor6ZeK6JGJ5qi5IDwga2F0c3V5b3VqdVwgOwor55ub5ZyfIDwgbW9yaXRzdWNoaVwgOwor5YWx6bO06ICFIDwga3lvdW1laXNoYVwgOwor54Sh5L2T54mpIDwgbXV0YWlidXRzdVwgOwor5rWu5rCX5aWzIDwgdXdha2lvbicnbmFcIDsKK+eZu+ernOmWgCA8IHRvdXJ5dXVtb25cIDsKK+S4gOe+qeeahCA8IGljaGlnaXRla2lcIDsKK+esrOS4gOadoSA8IGRhaWljaGlqb3VcIDsKK+i+nuabuOmDqOmWgCA8IGppc2hvYnVtb25cIDsKK+WGheeUqOiWrCA8IG5haXlvdXlha3VcIDsKK+apn+WLlemDqOmaiiA8IGtpZG91YnV0YWlcIDsKK+S/neWuieWHpuWIhiA8IGhvYW5zaG9idW5cIDsKK+iKseaapiA8IGhhbmFnb3lvbWlcIDsKK+W6p+aomei7uCA8IHphaHlvdWppa3VcIDsKK+etlua6kOWcsCA8IHNha3VnZW5jaGlcIDsKK+ebtOWIlyA8IGNob2t1cmV0c3VcIDsKK+WEqueUn+WtpiA8IHl1dXNlaWdha3VcIDsKK+aEj+aAneihqOekuiA8IGlzaGloeW91amlcIDsKK+WIhumaiumVtyA8IGJ1bnRhaWNob3VcIDsKK+WWtuWIqeS6i+alrSA8IGVpcmlqaWd5b3VcIDsKK+WJjeWAn+mHkSA8IHplbnNoYWtraW5cIDsKK+earuiGmuenu+akjSA8IGhpZnVpc2hva3VcIDsKK+S7suijgeS6uiA8IGNodXVzYWluaW5cIDsKK+i1pOmBk+elrSA8IHNla2lkb3VzYWlcIDsKK+adseWMl+WkpyA8IHRvdWhva3VkYWlcIDsKK+Wun+iovOirliA8IGppc3Nob3Vyb25cIDsKK+S4jeeHg+eJqSA8IGZ1bmVuYnV0c3VcIDsKK+WFqOW8t+miqCA8IHplbmt5b3VmdXVcIDsKK+itsOS6i+WmqOWusyA8IGdpamlib3VnYWlcIDsKK+Wwj+WkqeWcsCA8IHNob3V0ZW5jaGlcIDsKK+mFoumFuOWhqSA8IHNha3VzYW4nJ2VuXCA7CivotoXpn7PpgJ8gPCBjaG91b25zb2t1XCA7Civlr4blkYrogIUgPCBtaWtrb2t1c2hhXCA7CivliIbpoZ7lraYgPCBidW5ydWlnYWt1XCA7Civlvavph5HluKsgPCBjaG91a2luc2hpXCA7CivkuIDpqI7lvZPljYMgPCBpa2tpdG91c2VuXCA7CivpmL/pvLvlj6vllpogPCBhYmlreW91a2FuXCA7Civntbblr77muKnluqYgPCB6ZXR0YWlvbmRvXCA7Civpu4Tph5HkuJbnlYwgPCBvdWdvbnNla2FpXCA7CivlhbHpgJroqp4gPCBreW91dHN1dWdvXCA7Civlhr3lhr0gPCByZXRzdXJldHN1XCA7CivnpZ7np5jlraYgPCBzaGluaGlnYWt1XCA7CivkuIDmnKzmqYsgPCBpcHBvbmJhc2hpXCA7CivnrKzkupTliJcgPCBkYWlnb3JldHN1XCA7CivntLPlo6vnlKggPCBzaGluc2hpeW91XCA7CivkuIDmnprlsqkgPCBpY2hpbWFpaXdhXCA7CivkuIDmnKzmp40gPCBpcHBvbicneWFyaVwgOwor5Zuw56qu6ICFIDwga29ua3l1dXNoYVwgOwor5YWl5a6kIDwgbnl1dXNoaXRzdVwgOwor5qOS5rip5bqm6KiIIDwgYm91b25kb2tlaVwgOwor5Yas5pSv5bqmIDwgZnV5dWppdGFrdVwgOwor5YWx5ZCM5L2TIDwga3lvdWRvdXRhaVwgOwor5bCR5pWw5YWaIDwgc2hvdXN1dXRvdVwgOwor5YWo5rCR6KGGIDwgemVubWluc2h1dVwgOwor55u45Y+N55qEIDwgc291aGFudGVraVwgOwor5rWu6YGK54mpIDwgZnV5dXVidXRzdVwgOwor5Yq05YON55yBIDwgcm91ZG91c2hvdVwgOwor5a2r5oGv5a2QIDwgbWFnb211c3Vrb1wgOwor5Y+N5a++5oSP6KaLIDwgaGFudGFpaWtlblwgOwor5L6b6aSK5aGaIDwga3V5b3VkenVrYVwgOwor6aeG6YCQ6ImmIDwga3VjaGlrdWthblwgOwor57Sg5Lq655uuIDwgc2hpcm91dG9tZVwgOwor57K+6IKJ5bqXIDwgc2VpbmlrdXRlblwgOwor5Y+M5q676aGeIDwgc291a2FrdXJ1aVwgOwor5qyj5rGC5rWE5ZyfIDwgZ29uZ3Vqb3Vkb1wgOwor6YeR6LKo5rqW5YKZIDwga2lua2FqdW5iaVwgOwor5aWo5Yqx6YeRIDwgc2hvdXJlaWtpblwgOwor5LiN57K+6autIDwgYnVzaG91aGlnZVwgOwor6KuW55CG57Sg5a2QIDwgcm9ucmlzb3NoaVwgOwor6IO95YuV55qEIDwgbm91ZG91dGVraVwgOwor57SE5Y2K5YiGIDwgeWFrdWhhbmJ1blwgOwor5bGx6I2SIDwgeWFtYWFyYXNoaVwgOwor57ay5ryB5qWtIDwgYW1pZ3lvZ3lvdVwgOwor5o6I5qWt5LitIDwganVneW91Y2h1dVwgOwor5bKp55+z5ZyPIDwgZ2Fuc2VraWtlblwgOwor6Zyy5Zyw5qC95Z+5IDwgcm9qaXNhaWJhaVwgOwor5b2555uu5p+EIDwgeWFrdW1lZ2FyYVwgOwor5Y+k5aKz5pmC5LujIDwga29mdW5qaWRhaVwgOwor5LiA5pys5p2+IDwgaXBwb25tYXRzdVwgOwor5aGp54WO6aSFIDwgc2hpb3NlbmJlaVwgOwor5Y2X44CF6KW/IDwgbmFuJyduYW5zZWlcIDsKK+WcqOWtpueUnyA8IHphaWdha3VzZWlcIDsKK+WJg+WIgOegpSA8IGthbWlzb3JpZG9cIDsKK+WkmueZuuaApyA8IHRhaGF0c3VzZWlcIDsKK+eEoeeFmeeBq+iWrCA8IG11ZW5rYXlha3VcIDsKK+WEqui2iuaEnyA8IHl1dWV0c3VrYW5cIDsKK+eJuee0muWTgSA8IHRva2t5dXVoaW5cIDsKK+S4ieinkumMkCA8IHNhbmtha3VzdWlcIDsKK+WCkeeJqSA8IGtldHN1YnV0c3VcIDsKK+W/heayu+iWrCA8IGhpdGNoaXlha3VcIDsKK+WNmOaMr+WLlSA8IHRhbnNoaW5kb3VcIDsKK+S4u+W8teiAhSA8IHNodWNob3VzaGFcIDsKK+aOkuS7luW+iyA8IGhhaXRhcml0c3VcIDsKK+aUv+ayu+apn+aniyA8IHNlaWppa2lrb3VcIDsKK+aEj+W/l+axuuWumiA8IGlzaGlrZXR0ZWlcIDsKK+WEqui2iuaApyA8IHl1dWV0c3VzZWlcIDsKK+W9ouaFi+WtpiA8IGtlaXRhaWdha3VcIDsKK+W3pealreeVjCA8IGtvdWd5b3VrYWlcIDsKK+W3pealreeUqCA8IGtvdWd5b3V5b3VcIDsKK+epjeS5sembsiA8IHNla2lyYW4nJ3VuXCA7Civmi53oprPmlpkgPCBoYWlrYW5yeW91XCA7CivpoJjmtbfnt5ogPCByeW91a2Fpc2VuXCA7Civop5LliIbmlaMgPCBrYWt1YnVuc2FuXCA7CivkuI3opovorZggPCBmdWtlbnNoaWtpXCA7CivlpKflrabnlJ8gPCBkYWlnYWt1c2VpXCA7CivmnIDljJfnq68gPCBzYWlob2t1dGFuXCA7CivooajpnaLkuIogPCBoeW91bWVuam91XCA7Civmv4PnoavphbggPCBub3VyeXV1c2FuXCA7CivnlaXnrYYgPCByeWFrdWhpdHN1XCA7CivmsLTljJbniakgPCBzdWlrYWJ1dHN1XCA7CivotoXkvJ3lsI4gPCBjaG91ZGVuZG91XCA7CivmloflrabogIUgPCBidW5nYWt1c2hhXCA7Civnspfnm67pm6ogPCB6YXJhbWV5dWtpXCA7Civlj7LlrabogIUgPCBzaGlnYWt1c2hhXCA7Civlm73msJHou40gPCBrb2t1bWluZ3VuXCA7CivlkoDlmrznrYsgPCBzb3NoYWt1a2luXCA7CivkvY/miYDpjLIgPCBqdXVzaG9yb2t1XCA7Civpp5DlgZzou4ogPCBjaHV1dGVpc2hhXCA7CivmpI3mqLnnpa0gPCBzaG9rdWp1c2FpXCA7CivosqDojbfliIbmlaMgPCBmdWthYnVuc2FuXCA7Civop5LpgJ/luqYgPCBrYWt1c29rdWRvXCA7Civlt6bliKkgPCBoaWRhcmlraWtpXCA7CivlpKfotaTmlpEgPCBkYWlzZWtpaGFuXCA7CivlnLDkuK3mtbcgPCBjaGljaHV1a2FpXCA7CivkvLjppIUgPCBub3NoaW1vY2hpXCA7CivkuI3lgY/kuI3lhZogPCBmdWhlbmZ1dG91XCA7CivlhoXlhpEgPCB1Y2hpa2FidXRvXCA7CivllYblo7LkurogPCBzaG91YmFpbmluXCA7CivlkIzluornlbDlpKIgPCBkb3VzaG91aW11XCA7Civlj5flj5bkurogPCB1a2V0b3JpbmluXCA7CivopovmnKzluIIgPCBtaWhvbicnaWNoaVwgOwor54Sh6ZmQ6LuM6YGTIDwgbXVnZW5raWRvdVwgOwor5oqV56Wo5qipIDwgdG91aHlvdWtlblwgOwor5o6i54Wn54GvIDwgdGFuc2hvdXRvdVwgOwor5YWo5Yud6LuNIDwgemVuc2hvdWd1blwgOwor57Wm5rC05aGUIDwga3l1dXN1aXRvdVwgOwor5r2u5bmy54upIDwgc2hpb2hpZ2FyaVwgOwor6LuN5LqL6aGn5ZWPIDwgZ3Vuamlrb21vblwgOwor54mh576K5bqnIDwgb2hpdHN1aml6YVwgOwor6IC9576O5Li7576pIDwgdGFuYmlzaHVnaVwgOwor5Y+O56iO5Lq6IDwgc2h1dXplaW5pblwgOwor5Zac5YqH5pig55S7IDwga2lnZWtpZWlnYVwgOwor5bem5YG0IDwgaGlkYXJpZ2F3YVwgOwor6YG45oqe5qipIDwgc2VudGFrdWtlblwgOwor5o6h54K56KGoIDwgc2FpdGVuaHlvdVwgOwor5bel5bel5ZubIDwga3Vua3Vuc2hpaVwgOwor5YWl5Y+jIDwgaGFpcmlndWNoaVwgOwor6KiY6Yyy55qEIDwga2lyb2t1dGVraVwgOwor6LGG5p2/6YqAIDwgbWFtZWl0YWdpblwgOwor57W25a++6YePIDwgemV0dGFpcnlvdVwgOwor5p2x5YyX5Lq6IDwgdG91aG9rdWppblwgOwor5rW36LuN55yBIDwga2FpZ3Vuc2hvdVwgOwor6YeR5Ymb5YqbIDwga29uZ291cmlraVwgOwor55yf5pqX6ZeHIDwgbWFrdXJheWFtaVwgOwor5qSc55ar5a6YIDwga2VuJydla2lrYW5cIDsKK+WupOmVtyA8IHNoaXRzdWNob3VcIDsKK+WvvuixoeWkliA8IHRhaXNob3VnYWlcIDsKK+aWsOa9n+ecjCA8IG5paWdhdGFrZW5cIDsKK+mXh+WGjeiyqSA8IHlhbWlzYWloYW5cIDsKK+WLleeJqeaEmyA8IGRvdWJ1dHN1YWlcIDsKK+abvOePoOaymeiPryA8IG1hbmp1c2hhZ2VcIDsKK+S9v+eUqOmHjyA8IHNoaXlvdXJ5b3VcIDsKK+WEquWnvyA8IHlhc2FzdWdhdGFcIDsKK+iXgeWNiue0mSA8IHdhcmFiYW5zaGlcIDsKK+aooeaTrOippumokyA8IG1vZ2lzaGlrZW5cIDsKK+aWsOmWi+WcsCA8IHNoaW5rYWljaGlcIDsKK+mdnuW4uOitmCA8IGhpam91c2hpa2lcIDsKK+S4gOmdouimsyA8IGljaGltZW5rYW5cIDsKK+euoee1g+alvSA8IGthbmdlbmdha3VcIDsKK+imj+WJh+mBleWPjSA8IGtpc29rdWloYW5cIDsKK+acgOaBteWbvSA8IHNhaWtlaWtva3VcIDsKK+aFouaAp+eahCA8IG1hbnNlaXRla2lcIDsKK+Wkj+eCieWGrOaJhyA8IGthcm90b3VzZW5cIDsKK+aOqOioiOWtpiA8IHN1aWtlaWdha3VcIDsKK+WJr+mgmOS6iyA8IGZ1a3VyeW91amlcIDsKK+WNsOWIt+iAhSA8IGluc2F0c3VzaGFcIDsKK+iAkOeBq+WKmyA8IHRhaWthcnlva3VcIDsKK+WPi+emheafkyA8IHl1dXplbnpvbWVcIDsKK+WgseWRiuabuCA8IGhvdWtva3VzaG9cIDsKK+mqqOagvOetiyA8IGtva2tha3VraW5cIDsKK+mbqOWkqeaxuuihjCA8IHV0ZW5rZWtrb3VcIDsKK+iXu+WhqeiNiSA8IG1vc2hpb2d1c2FcIDsKK+mbhuWkp+aIkCA8IHNodXV0YWlzZWlcIDsKK+aFouaAp+eXhSA8IG1hbnNlaWJ5b3VcIDsKK+Wuo+iogOeahCA8IHNlbmdlbnRla2lcIDsKK+WFremHjeWljyA8IHJva3VqdXVzb3VcIDsKK+mfs+mfv+WtpiA8IG9ua3lvdWdha3VcIDsKK+eUs+eriyA8IG1vdXNoaXRhdGVcIDsKK+W3pealrea4ryA8IGtvdWd5b3Vrb3VcIDsKK+e3j+i+nuiBtyA8IHNvdWppc2hva3VcIDsKK+i7jeWbo+mVtyA8IGd1bmRhbmNob3VcIDsKK+aEj+imi+S6pOaPmyA8IGlrZW5rb3VrYW5cIDsKK+W5tOmVt+iAhSA8IG5lbmNob3VzaGFcIDsKK+e3j+WLmeWxgCA8IHNvdW11a3lva3VcIDsKK+S4jeS5vuaAp+ayuSA8IGZ1a2Fuc2VpeXVcIDsKK+mdouebuOethiA8IG1lbnNvdWZ1ZGVcIDsKK+aVo+atqemBkyA8IHNhbnBvbWljaGlcIDsKK+ekuuWcp+ioiCA8IHNoaWF0c3VrZWlcIDsKK+S4lue0gOacqyA8IHNlaWtpbWF0c3VcIDsKK+esrOS4ieWbvSA8IGRhaXNhbmdva3VcIDsKK+aKleelqOaVsCA8IHRvdWh5b3VzdXVcIDsKK+S9leeuh+aciCA8IG5hbmthZ2V0c3VcIDsKK+eUs+iri+abuCA8IHNoaW5zZWlzaG9cIDsKK+akjeeJqSA8IHNob2t1YnV0c3VcIDsKK+iFueiGnOeCjiA8IGZ1a3VtYWt1ZW5cIDsKK+a4qeazieeUuiA8IG9uc2VubWFjaGlcIDsKK+S4u+WLleeahCA8IHNodWRvdXRla2lcIDsKK+azjOWwv+WZqOenkSA8IGhpbnlvdWtpa2FcIDsKK+S4jeaWh+W+iyA8IGZ1YnVucml0c3VcIDsKK+W8geW9k+eusSA8IGJlbnRvdWJha29cIDsKK+WyqeeHlSA8IGl3YXRzdWJhbWVcIDsKK+WkqeS9k+WtpiA8IHRlbnRhaWdha3VcIDsKK+WNsOWIt+e0mSA8IGluc2F0c3VzaGlcIDsKK+S9juaIkOmVtyA8IHRlaXNlaWNob3VcIDsKK+S/r+S7sOinkiA8IGZ1Z3lvdWtha3VcIDsKK+W4t+W5hOS4iuWljyA8IGlha3Vqb3Vzb3VcIDsKK+aUvueGseWZqCA8IGhvdW5ldHN1a2lcIDsKK+e0lOiJr+WTgSA8IGp1bnJ5b3VoaW5cIDsKK+WCmeW+jOihqCA8IGJpbmdvb21vdGVcIDsKK+aal+auuuiAhSA8IGFuc2F0c3VzaGFcIDsKK+W5s+aVmeWToSA8IGhpcmFreW91aW5cIDsKK+S4jeimmuiAhSA8IGZ1a2FrdW1vbm9cIDsKK+aIkOmVt+eCuSA8IHNlaWNob3V0ZW5cIDsKK+adseaoque3miA8IHRvdXlva29zZW5cIDsKK+aVkea4iOiAhSA8IGt5dXVzYWlzaGFcIDsKK+efpeiDveeahCA8IGNoaW5vdXRla2lcIDsKK+WEsuWPoyA8IG1vdWtlZ3VjaGlcIDsKK+WFqOaoqeWnlOWToSA8IHplbmtlbicnaWluXCA7CivlubvopprliaQgPCBnZW5rYWt1emFpXCA7CivmnpznianlsYsgPCBrdWRhbW9ub3lhXCA7CivmvJTnrpfmqZ/mp4sgPCBlbnphbmtpa291XCA7CivkurrmoLzogIUgPCBqaW5rYWt1c2hhXCA7CivnhKHok4vosqjou4ogPCBtdWdhaWthc2hhXCA7Civph5HlsZ7plpMgPCBraW56b2t1a2FuXCA7CivoirHmn7Pnl4UgPCBrYXJ5dXVieW91XCA7Civmo5/nk6YgPCBtdW5hZ2F3YXJhXCA7Civpq5jmnpUgPCB0YWthbWFrdXJhXCA7CivogIHlpKflm70gPCByb3V0YWlrb2t1XCA7Civku6PoqIDkurogPCBkYWlnZW4nJ25pblwgOwor5b+D5b6X6aGUIDwga29rb3JvZWdhb1wgOwor5Luj6KGo6ICFIDwgZGFpaHlvdXNoYVwgOwor5Li755+l55qEIDwgc2h1Y2hpdGVraVwgOwor5paH5a2m55WMIDwgYnVuZ2FrdWthaVwgOwor5YiH5pat5qmfIDwgc2V0c3VkYW5raVwgOwor5LiA5pmC55qEIDwgaWNoaWppdGVraVwgOwor5Lqk6YCa57ayIDwga291dHN1dW1vdVwgOwor5LqM5Y2B5LiW57SAIDwgbmlqaXNzZWlraVwgOwor5L+d6K235Yem5YiGIDwgaG9nb3Nob2J1blwgOwor5Zyw55CD5Lq6IDwgY2hpa3l1dWppblwgOwor6IS56ISbIDwgZnVrdXJhaGFnaVwgOwor6auY5puHIDwgdGFrYWd1bW9yaVwgOwor55qu6Iaa56eR5a2mIDwgaGlmdWthZ2FrdVwgOwor5Zyw55CD5LiKIDwgY2hpa3l1dWpvdVwgOwor6YCG5o+Q5qGIIDwgZ3lha3V0ZWlhblwgOwor5a++5pWw6KGoIDwgdGFpc3V1aHlvdVwgOwor6KGG5oSa5pS/5rK7IDwgc2h1Z3VzZWlqaVwgOwor5pWX5oim5Zu9IDwgaGFpc2Vua29rdVwgOwor5L6N5b6T5q2m5a6YIDwgamlqdXVidWthblwgOwor5paw6KO95ZOBIDwgc2hpbnNlaWhpblwgOwor5o6n6Ki05pyf6ZaTIDwga291c29raWthblwgOwor5LiK5L2N5qeL6YCgIDwgam91aWtvdXpvdVwgOwor5qW16Led6ZuiIDwga3lva3VreW9yaVwgOwor5bi45Lu75aeU5ZOhIDwgam91bmluJydpaW5cIDsKK+iKneWxheWwj+WxiyA8IHNoaWJhaWdveWFcIDsKK+ahnOiKsSA8IHNha3VyYWJhbmFcIDsKK+WFrOenn+WFrOiqsiA8IGtvdXNva291a2FcIDsKK+eGn+e3tOW3pSA8IGp1a3VyZW5rb3VcIDsKK+iJsue0oOS9kyA8IHNoaWtpc290YWlcIDsKK+S4uOegpeefsyA8IG1hcnV0b2lzaGlcIDsKK+WQjOaXj+S8miA8IGRvdXpva3VrYWlcIDsKK+e1jOa4iOeahCA8IGtlaXphaXRla2lcIDsKK+aYk+aEn+afk+aApyA8IGlrYW5zZW5zZWlcIDsKK+eJm+S5s+WxiyA8IGd5dXVueXV1eWFcIDsKK+e3tOe/kuWgtCA8IHJlbnNodXVqb3VcIDsKK+e0gOS8iuWci+WxiyA8IGtpbm9rdW5peWFcIDsKK+ahkeiLuiA8IGt1d2FpY2hpZ29cIDsKK+WknOm3ueiVjum6piA8IHlvdGFrYXNvYmFcIDsKK+eJueijveWTgSA8IHRva3VzZWloaW5cIDsKK+WLpOWLmeaZgumWkyA8IGtpbm11amlrYW5cIDsKK+WOreS4luS4u+e+qSA8IGVuc2Vpc2h1Z2lcIDsKK+WNmOS9jeiomOWPtyA8IHRhbicnaWtpZ291XCA7CivohJroibIgPCBreWFrdXNob2t1XCA7CivkuI3oqqDlrp8gPCBmdXNlaWppdHN1XCA7CivlvpPmnaXlnosgPCBqdXVyYWlnYXRhXCA7Civlr77osaHkvZMgPCB0YWlzaG91dGFpXCA7Civnsonnn7PpubggPCBrb25hc2Vra2VuXCA7CivlpJzlsL/nl4cgPCB5YW55b3VzaG91XCA7CivotoXmlofpnaIgPCBjaG91YnVubWVuXCA7CivmjpLku5bkuLvnvqkgPCBoYWl0YXNodWdpXCA7Civli5XnianlnJIgPCBkb3VidXRzdWVuXCA7Civnt4/nm6PnnaMgPCBzb3VrYW50b2t1XCA7Civlrp/pmpvnmoQgPCBqaXNzYWl0ZWtpXCA7CivpoLzkv6HntJkgPCByYWlzaGluc2hpXCA7Civlroflrpnpo5vooYwgPCB1Y2h1dWhpa291XCA7CivlrqPmlZnluKsgPCBzZW5reW91c2hpXCA7CivmoZzogokgPCBzYWt1cmFuaWt1XCA7Civosqzku7vogIUgPCBzZWtpbmluc2hhXCA7CivplqLnr4Dngo4gPCBrYW5zZXRzdWVuXCA7Civogqnou4ogPCBrYXRhZ3VydW1hXCA7CivlhbHps7Tmnb8gPCBreW91bWVpYmFuXCA7CivlrpfkuLvlm70gPCBzb3VzaHVrb2t1XCA7Civku67lkI3ojYnntJkgPCBrYW5hem91c2hpXCA7Civml6fou43kurogPCBreXV1Z3VuamluXCA7CivljYrmv4HngrkgPCBoYW5kYWt1dGVuXCA7CivlnZHlhoXkuovmlYUgPCBrb3VuYWlqaWtvXCA7CivljYrplbflvaIgPCBoYW5jaG91a2VpXCA7CivkuK3msLTpgZMgPCBjaHV1c3VpZG91XCA7CivpgbjmiYvmnZEgPCBzZW5zaHVtdXJhXCA7Civoq5bnkIbmvJTnrpcgPCByb25yaWVuemFuXCA7Civos6rph48gPCBzaGl0c3VyeW91XCA7CivljbDliLfnlKggPCBpbnNhdHN1eW91XCA7CivpnIrmn6nou4ogPCByZWlreXV1c2hhXCA7Civmtbflsrjnq68gPCBrYWlnYW5iYXRhXCA7CivlpJbnlKjolqwgPCBnYWl5b3V5YWt1XCA7CivntKvmlpHnl4UgPCBzaGloYW5ieW91XCA7Civom7jphY3lvZMgPCB0YWtvaGFpdG91XCA7Civpq5jmiYDnl4UgPCBrb3VzaG9ieW91XCA7CivnlZzmrrogPCBjaGlrdXNhdHN1XCA7CivlpKflsI/kvr8gPCBkYWlzaG91YmVuXCA7Civpm7vmsJfmr5vluIMgPCBkZW5raW1vdWZ1XCA7CivnsbPlm73msJEgPCBiZWlrb2t1bWluXCA7CivlkLjmsLTmgKcgPCBreXV1c3Vpc2VpXCA7Civpm7LprKLoirHpoZQgPCB1bmJpbmthZ2FuXCA7Civlv7XkupTml6UgPCBuZW5nb25pY2hpXCA7Civlh7rmnaXlv4MgPCBkZWtpZ29rb3JvXCA7CivkuK3lv4Ppg6ggPCBjaHV1c2hpbmJ1XCA7CivlvqHliY3kvJrorbAgPCBnb3plbmthaWdpXCA7CivohIjohIggPCBteWFrdW15YWt1XCA7CivnlJ/kvZPlraYgPCBzZWl0YWlnYWt1XCA7CivmpZTlvaIgPCBrdXNhYmlnYXRhXCA7Civkuojlgpnoqr/mn7sgPCB5b2JpY2hvdXNhXCA7CivlubPlkozkuLvnvqkgPCBoZWl3YXNodWdpXCA7Civogq/lrprnmoQgPCBrb3V0ZWl0ZWtpXCA7CivmoZzntJkgPCBzYWt1cmFnYW1pXCA7Civms6jmhI/kuovpoIUgPCBjaHV1aWppa291XCA7Civli5XnianljJYgPCBkb3VidXRzdWthXCA7CivmsLTlubPnv7wgPCBzdWloZWl5b2t1XCA7Civosr/mmJPmpa0gPCBib3Vla2lneW91XCA7CivohbDluIPlm6MgPCBrb3NoaWJ1dG9uXCA7CivniIbmkoPmqZ8gPCBiYWt1Z2VraWtpXCA7CivoqIDooYzpjLIgPCBnZW5rb3Vyb2t1XCA7Civlm6PlnLDml48gPCBkYW5jaGl6b2t1XCA7CivkubHoqr/lrZAgPCByYW5jaG91c2hpXCA7Civlgpnok4TnsbMgPCBiaWNoaWt1bWFpXCA7CivlpKfkuZfnmoQgPCBkYWlqb3V0ZWtpXCA7CivnhKHog73lipsgPCBtdW5vdXJ5b2t1XCA7CivpharovrLloLQgPCByYWt1bm91am91XCA7Civog7jpg6jlpJbnp5EgPCBreW91YnVnZWthXCA7CivosqjlrqLoiLkgPCBrYWt5YWt1c2VuXCA7CivmhJ/mn5Pnl4cgPCBrYW5zZW5zaG91XCA7CivnnJ/nkIbmlZkgPCBzaGlucmlreW91XCA7CivmhYjlloTpjYsgPCBqaXplbicnbmFiZVwgOwor55eF5a6kIDwgYnlvdXNoaXRzdVwgOwor5oqA6KGT5aOrIDwgZ2lqdXRzdXNoaVwgOwor6IqL5L6NIDwgaW1vemFtdXJhaVwgOwor5ZOo5oiS6ImHIDwgc2hvdWthaXRlaVwgOwor6YWS55+z6YW4IDwgc2h1c2VraXNhblwgOwor5pW35biD5ZujIDwgc2hpa2lidXRvblwgOwor6Z2e5Y+v5o+b576kIDwgaGlrYWthbmd1blwgOwor5Y+N5YmH6YeRIDwgaGFuc29rdWtpblwgOwor6YG65Lyd5oOF5aCxIDwgaWRlbmpvdWhvdVwgOwor5pyJ5qmf54mpIDwgeXV1a2lidXRzdVwgOwor6IKJ6LOqIDwgbmlrdXNoaXRzdVwgOwor5a+E55Sf54Gr5bGxIDwga2lzZWlrYXphblwgOwor5oq96LGh55S7IDwgY2h1dXNob3VnYVwgOwor56ef5YCf5qipIDwgc29zaGFrdWtlblwgOwor5YaF55Sz5pu4IDwgbmFpc2hpbnNob1wgOwor5ZCM57Sa55SfIDwgZG91a3l1dXNlaVwgOwor5ZCR57Gz55qEIDwga291YmVpdGVraVwgOwor6Kaq6KGb5YW1IDwgc2hpbicnZWloZWlcIDsKK+S7j+aWh+enkSA8IGZ1dHN1YnVua2FcIDsKK+S6jOmDqOaOiOalrSA8IG5pYnVqdWd5b3VcIDsKK+WPluW8leaJgCA8IHRvcmloaWtpam9cIDsKK+mbu+i7iuizgyA8IGRlbnNoYWNoaW5cIDsKK+mbhuaVo+WcsCA8IHNodXVzYW5jaGlcIDsKK+e2uuaDs+absiA8IGtpc291a3lva3VcIDsKK+S4iuiqv+WtkCA8IHV3YWNob3VzaGlcIDsKK+WGheiHk+W8kyA8IG5haXpvdWt5dXVcIDsKK+WNiumWi+WbvSA8IGhhbmthaWtva3VcIDsKK+ijvemAoOalrSA8IHNlaXpvdWd5b3VcIDsKK+i/veaSg+apnyA8IHRzdWlnZWtpa2lcIDsKK+S4ieinkuetiyA8IHNhbmtha3VraW5cIDsKK+mdnuWWtuWIqeeahCA8IGhpZWlyaXRla2lcIDsKK+etiea3see3miA8IHRvdXNoaW5zZW5cIDsKK+mnhuWLleWKmyA8IGt1ZG91cnlva3VcIDsKK+ays+W3neW3peS6iyA8IGthc2Vua291amlcIDsKK+mHjeW3pealrSA8IGp1dWtvdWd5b3VcIDsKK+m6u+e5lOeJqSA8IGFzYW9yaW1vbm9cIDsKK+aXpeWwhOeXhSA8IG5pc3NoYWJ5b3VcIDsKK+eGseihgOWFkCA8IG5la2tldHN1amlcIDsKK+mHkeWxnuijvSA8IGtpbnpva3VzZWlcIDsKK+acrOWlkee0hCA8IGhvbmtlaXlha3VcIDsKK+ebuOaJi+asoeesrCA8IGFpdGVzaGlkYWlcIDsKK+m7hOikkOiJsiA8IG91a2Fzc2hva3VcIDsKK+izvOWFpeiAhSA8IGtvdW55dXVzaGFcIDsKK+S4jeeyvuiAhSA8IGJ1c2hvdW1vbm9cIDsKK+S4u+W/nOWKmyA8IHNodW91cnlva3VcIDsKK+S+v+WunOS4u+e+qSA8IGJlbmdpc2h1Z2lcIDsKK+WfvOeOieWLoiA8IHNhaXRhbWF6ZWlcIDsKK+WuneiIuSA8IHRha2FyYWJ1bmVcIDsKK+mHjeWCt+iAhSA8IGp1dXNob3VzaGFcIDsKK+earuiGmuWRvOWQuCA8IGhpZnVrb2t5dXVcIDsKK+WxseahnCA8IHlhbWF6YWt1cmFcIDsKK+S6nOaIkOWxpOWcjyA8IGFzZWlzb3VrZW5cIDsKK+WCt+Wus+e9qiA8IHNob3VnYWl6YWlcIDsKK+S9nOaIpuS4iiA8IHNha3VzZW5qb3VcIDsKK+WBtOWupCA8IHNva3VzaGl0c3VcIDsKK+iGneaelSA8IGhpemFtYWt1cmFcIDsKK+a9nOawtOeXhSA8IHNlbnN1aWJ5b3VcIDsKK+S4reaAp+e0mSA8IGNodXVzZWlzaGlcIDsKK+S5s+mmliA8IGNoaWNoaWt1YmlcIDsKK+iouueZguaJgCA8IHNoaW5yeW91am9cIDsKK+epuui7jeWkp+WwiSA8IGt1dWd1bnRhaWlcIDsKK+aXpeacrOmjnyA8IG5paG9uc2hva3VcIDsKK+eovOWDjeeOhyA8IGthZG91cml0c3VcIDsKK+mAo+WQiOWbvSA8IHJlbmdvdWtva3VcIDsKK+WFrOawkeWtpiA8IGtvdW1pbmdha3VcIDsKK+eglOeptuiAhSA8IGtlbmt5dXVzaGFcIDsKK+mdmeawtOWcpyA8IHNlaXN1aWF0c3VcIDsKK+eZu+mMsuiAhSA8IHRvdXJva3VzaGFcIDsKK+a6luaxuuWLnSA8IGp1bmtlc3Nob3VcIDsKK+alteWKmyA8IGt5b2t1cnlva3VcIDsKK+air+WtkOi7iiA8IGhhc2hpZ29zaGFcIDsKK+S4ieimquetiSA8IHNhbnNoaW50b3VcIDsKK+S4jee0lOeJqSA8IGZ1anVuYnV0c3VcIDsKK+S4iuWls+S4rSA8IGthbWlqb2NodXVcIDsKK+mzpeWPluecjCA8IHRvdHRvcmlrZW5cIDsKK+ahkeeVkSA8IGt1d2FiYXRha2VcIDsKK+iyp+S5j+msriA8IGJpbmJvdWt1amlcIDsKK+WUr+S4gOW6piA8IHRhZGFpY2hpZG9cIDsKK+aiteWSjOi+nuWFuCA8IGJvbndhaml0ZW5cIDsKK+WlveiJsuWutiA8IGtvdXNob2t1a2FcIDsKK+avm+earuWVhiA8IGtlZ2F3YXNob3VcIDsKK+avlOi8g+e0miA8IGhpa2FrdWt5dXVcIDsKK+ePvuWcqOmrmCA8IGdlbnphaWRha2FcIDsKK+eVpeW8jyA8IHJ5YWt1c2hpa2lcIDsKK+mZuOa1t+epuiA8IHJpa3VrYWlrdXVcIDsKK+WPjOecvOmPoSA8IHNvdWdhbmt5b3VcIDsKK+aOp+iotOeQhueUsSA8IGtvdXNvcml5dXVcIDsKK+mnkOi8quWgtCA8IGNodXVyaW5qb3VcIDsKK+mDqOmaiuWMuuWIhiA8IGJ1dGFpa3VidW5cIDsKK+aeleiosSA8IG1ha3VyYW1vdG9cIDsKK+eZvemJhOmJsSA8IGhha3V0ZWtrb3VcIDsKK+Wkp+WuruS6uiA8IG9vbWl5YWJpdG9cIDsKK+aCqumtlOS4u+e+qSA8IGFrdW1hc2h1Z2lcIDsKK+mbquWQiOaIpiA8IHl1a2lnYXNzZW5cIDsKK+eJh+agl+eyiSA8IGthdGFrdXJpa29cIDsKK+eZuuihqOS8miA8IGhhcHB5b3VrYWlcIDsKK+WuneexpCA8IHRha2FyYWt1amlcIDsKK+WQkOeAieeJqSA8IHRvc2hhYnV0c3VcIDsKK+itt+WyuOW3peS6iyA8IGdvZ2Fua291amlcIDsKK+ijj+ihqOe0mSA8IHVyYWJ5b3VzaGlcIDsKK+WIh+aWreWbsyA8IHNldHN1ZGFuenVcIDsKK+aAneaDkeiytyA8IG9tb3dha3VnYWlcIDsKK+ims+W/teirliA8IGthbicnbmVucm9uXCA7Civnjonpn7Pnm6QgPCBneW9rdW9uYmFuXCA7Civlrp3nrrEgPCB0YWthcmFiYWtvXCA7Civlj43li5XnmoQgPCBoYW5kb3V0ZWtpXCA7Civos6rojYkgPCBzaGljaGlndXNhXCA7CivmlZHlkb3oiYcgPCBreXV1bWVpdGVpXCA7Civntbblr77nmoQgPCB6ZXR0YWl0ZWtpXCA7Civpqqjlo7cgPCBrb3RzdXRzdWJvXCA7CivmuKzph4/lm7MgPCBzb2t1cnlvdXp1XCA7CivkuInlpKflm70gPCBzYW5kYWlrb2t1XCA7CivlnLDmlrnnl4UgPCBjaGlob3VieW91XCA7Civlrr/nm7QgPCBzaHVrdWNob2t1XCA7Civlh7rniYjogIUgPCBzaHVwcGFuc2hhXCA7Civkvpvntabot68gPCBreW91a3l1dXJvXCA7Civnq5zmto7pppkgPCByeXV1emVua291XCA7CivlsITniIbloLQgPCBzaGFiYWt1am91XCA7CivmuKzph4/lmaggPCBzb2t1cnlvdWtpXCA7CivlnJ/kv5flraYgPCBkb3pva3VnYWt1XCA7Civnvo7lpbPmoZwgPCBiaWpvemFrdXJhXCA7CivljZfjgIXmnbEgPCBuYW4nJ25hbnRvdVwgOwor5Lq65qC85qipIDwgamlua2FrdWtlblwgOwor5YiG6Kej55qEIDwgYnVua2FpdGVraVwgOwor55Sw5aSr6YeO5Lq6IDwgZGVucHV5YWppblwgOwor5LuW6Kaa55qEIDwgdGFrYWt1dGVraVwgOwor5aSp5Li75pWZIDwgdGVuc2h1a3lvdVwgOwor6Zuq5YyW57KnIDwgeXVraWdlc2hvdVwgOwor5b2i5byP576OIDwga2Vpc2hpa2liaVwgOwor5aWH5aWH5oCq5oCqIDwga2lraWthaWthaVwgOwor6Zu76YCa5aSnIDwgZGVudHN1dWRhaVwgOwor5LiJ6KeS54K5IDwgc2Fua2FrdXRlblwgOwor5Lyd5pu46bOpIDwgZGVuc2hvYmF0b1wgOwor5LuW6Kaa55eHIDwgdGFrYWt1c2hvdVwgOwor5raI6ICX5oimIDwgc2hvdW1vdXNlblwgOwor5LuV6Kiz5pu4IDwgc2hpd2FrZXNob1wgOwor6YGK5LyR5ZywIDwgeXV1a3l1dWNoaVwgOwor5YKZ5LuYIDwgc29uYWV0c3VrZVwgOwor5Y+N5b+c5oCnIDwgaGFuJydub3VzZWlcIDsKK+aatOi1sOaXjyA8IGJvdXNvdXpva3VcIDsKK+e0gOWFg+evgCA8IGtpZ2Vuc2V0c3VcIDsKK+a4qeazieWuvyA8IG9uc2VuJyd5YWRvXCA7CivllJDovpvlrZAgPCB0b3VnYXJhc2hpXCA7Civml6XkuK3pn5MgPCBuaXRjaHV1a2FuXCA7CivnkIbop6PlipsgPCByaWthaXJ5b2t1XCA7CivnlaXlpaogPCByeWFrdWRhdHN1XCA7CivlhazlhbHosqEgPCBrb3VreW91emFpXCA7CivmpJzlrprmlpkgPCBrZW50ZWlyeW91XCA7CivluILplbfpgbggPCBzaGljaG91c2VuXCA7Civlronmma7oq4sgPCB5YXN1YnVzaGluXCA7CivnpZ7ku6PmloflrZcgPCBqaW5kYWltb2ppXCA7Civlj6TlhbjmmYLku6MgPCBrb3RlbmppZGFpXCA7CivluILkvJrorbDlk6EgPCBzaGlrYWlnaWluXCA7CivmsLTpgZPmlpkgPCBzdWlkb3VyeW91XCA7CivkuKHmiJDmlZcgPCByeW91c2VpYmFpXCA7CivljbHpmbrosqDmi4UgPCBraWtlbmZ1dGFuXCA7CivliJ3nr4Dlj6UgPCBoYXRzdXpla2t1XCA7Civmr5TovIPnmoQgPCBoaWtha3V0ZWtpXCA7Civlm73pgKPou40gPCBrb2t1cmVuZ3VuXCA7CivkuIrntJrnlJ8gPCBqb3VreXV1c2VpXCA7CivnhKHpoJPnnYAgPCBtdXRvbmNoYWt1XCA7Civlho3mnaXmnIggPCBzYXJhaWdldHN1XCA7Civlvozml6Xoq4cgPCBnb2ppdHN1ZGFuXCA7CivlgpnojZLpo58gPCBiaWtvdXNob2t1XCA7CivlgaXlurfkuI3lrokgPCBrZW5rb3VmdWFuXCA7Civmnb7omasgPCBtYXRzdW11c2hpXCA7CivkuI3ooYzot6EgPCBmdWd5b3VzZWtpXCA7Civmlpzpmb3ml48gPCBzaGF5b3V6b2t1XCA7CivpnZLljJbniakgPCBzZWlrYWJ1dHN1XCA7Civlv5zmgKXmuKHmsrMgPCBvdWt5dXV0b2thXCA7CivlpKnnjovlsbEgPCB0ZW4nJ25vdXphblwgOwor5LqM6YeN5ZCm5a6aIDwgbmlqdXVoaXRlaVwgOwor5Y6E5LuL6ICFIDwgeWFra2FpbW9ub1wgOwor5YuH54yb5b+DIDwgeXV1bW91c2hpblwgOwor5q2m5Yqb5oimIDwgYnVyeW9rdXNlblwgOwor5LiJ6KeS5rOVIDwgc2Fua2FrdWhvdVwgOwor5oSP5rCX6KGd5aSpIDwgaWtpc2hvdXRlblwgOwor5a6X5pWZ55S7IDwgc2h1dWt5b3VnYVwgOwor56CU56m255SfIDwga2Vua3l1dXNlaVwgOwor5Ye65aWU6ICFIDwgc2h1cHBvbnNoYVwgOwor5Y+O55uK6YeRIDwgc2h1dWVraWtpblwgOwor5rC36I+T5a2QIDwga29vcmlnYXNoaVwgOwor5Yy75a2m55So6KqeIDwgaWdha3V5b3Vnb1wgOwor6Iie5Y+w5Yq55p6cIDwgYnV0YWlrb3VrYVwgOwor6Lu95bel5qWtIDwga2Vpa291Z3lvdVwgOwor6KiY5oa25YqbIDwga2lva3VyeW9rdVwgOwor5Y2z6IiI6KmpIDwgc29ra3lvdXNoaVwgOwor5Y+k55Sf54mpIDwga29zZWlidXRzdVwgOwor54ax5oSb6ICFIDwgbmV0c3VhaXNoYVwgOwor5aSp6aCC54K5IDwgdGVuY2hvdXRlblwgOwor54Sh6LOH5YqbIDwgbXVzaGlyeW9rdVwgOwor6IiI6KGM5qipIDwga291Z3lvdWtlblwgOwor5p2+5qC55rK5IDwgc2hvdWtvbicneXVcIDsKK+S4oemaoyA8IHJ5b3Vkb25hcmlcIDsKK+eZvua4iOalvSA8IGt1ZGFyYWdha3VcIDsKK+WcqOS7u+S4rSA8IHphaW5pbmNodXVcIDsKK+a7nuWcqOS4rSA8IHRhaXphaWNodXVcIDsKK+ijveiMtualrSA8IHNlaWNoYWd5b3VcIDsKK+iyv+aYk+WVhiA8IGJvdWVraXNob3VcIDsKK+WbveWLmeecgSA8IGtva3VtdXNob3VcIDsKK+S4reWNl+exsyA8IGNodXVuYW5iZWlcIDsKK+e+pOmbgCA8IG11cmFzdXp1bWVcIDsKK+ahkOS4gOiRiSA8IGtpcmloaXRvaGFcIDsKK+mbu+S9jeW3ruioiCA8IGRlbicnaXNha2VpXCA7CivlhaXpgbjogIUgPCBueXV1c2Vuc2hhXCA7CivnuKbnpL7kvJogPCB0YXRlc2hha2FpXCA7CivluqbmlbDliIbluIMgPCBkb3N1dWJ1bnB1XCA7Civmk43nuKbluK0gPCBzb3VqdXVzZWtpXCA7Civlkajml4vlsYsgPCBzaHV1c2VuJyd5YVwgOwor5paH5a2m5aOrIDwgYnVuZ2FrdXNoaVwgOwor6YGL6YCB5L+d6Zm6IDwgdW5zb3Vob2tlblwgOwor5bel5a2m6ICFIDwga291Z2FrdXNoYVwgOwor5Y+k5Lyd6KqsIDwga29kZW5zZXRzdVwgOwor5Y2w5Yi35belIDwgaW5zYXRzdWtvdVwgOwor5r2c5rC05pyNIDwgc2Vuc3VpZnVrdVwgOwor5pyo6LOqIDwgbW9rdXNoaXRzdVwgOwor5aSn5Li75pWZIDwgZGFpc2h1a3lvdVwgOwor5LiK5aC05qCqIDwgam91am91a2FidVwgOwor6aGe5Z6L55qEIDwgcnVpa2VpdGVraVwgOwor5a6f54mpIDwgaml0c3VidXRzdVwgOwor5LiL6ZyyIDwgc2hpdGF0c3V5dVwgOwor5ZC55Ye654mpIDwgZnVraWRlbW9ub1wgOwor5oqX55yf6I+MIDwga291c2hpbmtpblwgOwor6Zuj5rOi5r2fIDwgbmFuaXdhZ2F0YVwgOwor56ef5YCf5ZywIDwgc29zaGFrdWNoaVwgOwor5Yqg6L6y56CyIDwga2FuJydub25ob3VcIDsKK+mAoOefs+eojiA8IHpvdWtva3V6ZWlcIDsKK+mnkOi7iuWgtCA8IGNodXVzaGFqb3VcIDsKK+ippueul+ihqCA8IHNoaXNhbmh5b3VcIDsKK+e1jOa4iOWtpiA8IGtlaXphaWdha3VcIDsKK+aApeWLvumFjSA8IGt5dXVrb3ViYWlcIDsKK+WEgOW8j+eUqCA8IGdpc2hpa2l5b3VcIDsKK+mrmOaJi+Wwj+aJiyA8IHRha2F0ZWtvdGVcIDsKK+ihgOagk+eXhyA8IGtlc3NlbnNob3VcIDsKK+S8iumBlOWnvyA8IGRhdGVzdWdhdGFcIDsKK+eXheWOn+S9kyA8IGJ5b3VnZW50YWlcIDsKK+eEoeWRs+S5vueHpSA8IG11bWlrYW5zb3VcIDsKK+S4i+mZouitsOmVtyA8IGthaW5naWNob3VcIDsKK+WFq+WIhuebriA8IGhhY2hpYnVubWVcIDsKK+ino+aekOaApyA8IGthaXNla2lzZWlcIDsKK+i7jeWCmeeuoeeQhiA8IGd1bmJpa2FucmlcIDsKK+Wuouims+aApyA8IGt5YWtrYW5zZWlcIDsKK+eVnOWKmyA8IGNoaWt1cnlva3VcIDsKK+i2heWqkuS9kyA8IGNob3ViYWl0YWlcIDsKK+awtOiKreiViSA8IG1penViYXNob3VcIDsKK+mVt+acn+eahCA8IGNob3VraXRla2lcIDsKK+ecvOmPoeibhyA8IG1lZ2FuZWhlYmlcIDsKK+aoueiEguWKoOW3pSA8IGp1c2hpa2Frb3VcIDsKK+WHuueJiOeVjCA8IHNodXBwYW5rYWlcIDsKK+W8geWEn+mHkSA8IGJlbnNob3VraW5cIDsKK+acqueGn+iAhSA8IG1panVrdW1vbm9cIDsKK+WIhuaVo+WeiyA8IGJ1bnNhbmdhdGFcIDsKK+efree3qOmbhiA8IHRhbnBlbnNodXVcIDsKK+WvkuakvyA8IGthbnRzdWJha2lcIDsKK+WIqeawtOW3peS6iyA8IHJpc3Vpa291amlcIDsKK+a3oei3r+WztiA8IGF3YWppc2hpbWFcIDsKK+Wil+aulueCiSA8IHpvdXNob2t1cm9cIDsKK+S4i+imi+advyA8IHNoaXRhbWlpdGFcIDsKK+WIhuaVmeWgtCA8IGJ1bmt5b3Vqb3VcIDsKK+mdnuW4uOS6i+aFiyA8IGhpam91aml0YWlcIDsKK+atpuijheicgui1tyA8IGJ1c291aG91a2lcIDsKK+WPsuaWmemkqCA8IHNoaXJ5b3VrYW5cIDsKK+acieWjsOmfs+WMliA8IHl1dXNlaW9ua2FcIDsKK+ihgOWwj+advyA8IGtlc3Nob3ViYW5cIDsKK+izqueahCA8IHNoaXRzdXRla2lcIDsKK+mHkeiJsuWggiA8IGtvbmppa2lkb3VcIDsKK+a8ouaWueiWrCA8IGthbnBvdXlha3VcIDsKK+S+oeWApOWfuua6liA8IGthY2hpa2lqdW5cIDsKK+iqv+eQhuWZqOWFtyA8IGNob3VyaWtpZ3VcIDsKK+egsueFmeW8vumbqCA8IGhvdWVuZGFuJyd1XCA7Civnv7voqLPlrrYgPCBob24nJ3lha3VrYVwgOwor5bmz562J6KazIDwgYnlvdWRvdWthblwgOwor5qSc5p+75a6YIDwga2Vuc2hvdWthblwgOwor5aSJ5YiG5a2mIDwgaGVuYnVuZ2FrdVwgOwor5YmN5qC954mpIDwgc2VuemFpbW9ub1wgOwor5by35aOu5YmkIDwga3lvdXNvdXphaVwgOwor5rW355Sj5qWtIDwga2Fpc2FuZ3lvdVwgOwor6aas6ICz5p2x6aKoIDwgYmFqaXRvdWZ1dVwgOwor54yu57SN6ICFIDwga2VuJydub3VzaGFcIDsKK+WFremAo+aYnyA8IHJva3VyZW5zZWlcIDsKK+ailOWtkCA8IGt1Y2hpbmFzaGlcIDsKK+WLhemhmOWvuiA8IGNob2t1Z2FuamlcIDsKK+S8neafk+eXhSA8IGRlbnNlbmJ5b3VcIDsKK+mpgOWcsCA8IG1hc3NoaWd1cmFcIDsKK+S4reiPr+mNiyA8IGNodXVrYW5hYmVcIDsKK+WkqeS4iuW3nSA8IHRlbmpvdWdhd2FcIDsKK+a0i+iKpeWtkCA8IHlvdWdhcmFzaGlcIDsKK+eahuWLpOizniA8IGthaWtpbnNob3VcIDsKK+mHkeWxnueJhyA8IGtpbnpva3VoZW5cIDsKK+Wlh+ihk+W4qyA8IGtpanV0c3VzaGlcIDsKK+Wil+WKoOeOhyA8IHpvdWthcml0c3VcIDsKK+aomea6luWeiyA8IGh5b3VqdW5rZWlcIDsKK+mHkei1pOiJsiA8IGtpbicnYWthaXJvXCA7Civosqzku7vmhJ8gPCBzZWtpbmlua2FuXCA7Civmt4vlt7Tnr4AgPCByaW5wYXNldHN1XCA7Civkvpvnianlj7AgPCBrdW1vdHN1ZGFpXCA7CivnsbPlm73kurogPCBiZWlrb2t1amluXCA7CivnrYnmuKnlvI8gPCB0b3VvbnNoaWtpXCA7CivliY3ku7vogIUgPCB6ZW4nJ25pbnNoYVwgOwor6KO96YCg5YWDIDwgc2Vpem91bW90b1wgOwor5oOF5aCx6YePIDwgam91aG91cnlvdVwgOwor5bmz6KGM56e75YuVIDwgaGVpa291aWRvdVwgOwor5raI6ICX5ZOBIDwgc2hvdW1vdWhpblwgOwor5Lih5omL5YipIDwgcnlvdXRla2lraVwgOwor6JOE6Zu75ZmoIDwgY2hpa3VkZW5raVwgOwor5a++6KeS57eaIDwgdGFpa2FrdXNlblwgOwor5bGx5YiAIDwgeWFtYWdhdGFuYVwgOwor5LiA5pmp5LitIDwgaGl0b2Jhbmp1dVwgOwor5LiL6YGTIDwgc2hpdGFtaWNoaVwgOwor5pqX5Ymj5q66IDwgYW5rZW5zYXRzdVwgOwor6aCt6Laz6aGeIDwgdG91c29rdXJ1aVwgOwor5Zyo5p2x5LqsIDwgemFpdG91a3lvdVwgOwor5qOE6KiA6JGJIDwgc3V0ZWtvdG9iYVwgOwor5YWN56iO6KGoIDwgbWVuemVpaHlvdVwgOwor5Zu95rCR5oCnIDwga29rdW1pbnNlaVwgOwor6KOc5Yqp5YuV6KmeIDwgaG9qb2RvdXNoaVwgOwor5b2r5Yi75a62IDwgY2hvdWtva3VrYVwgOwor5LiN6Lq+IDwgYnVzaGl0c3VrZVwgOwor55Sf5Y21IDwgbmFtYXRhbWFnb1wgOwor6Kqt5pu455WMIDwgZG9rdXNob2thaVwgOwor6aKo6JasIDwga2F6ZWd1c3VyaVwgOwor5puy6KqsIDwga3lva3VzZXRzdVwgOwor5bGF55WZ5rCRIDwga3lvcnl1dW1pblwgOwor5Li46KO4IDwgbWFydWhhZGFrYVwgOwor5peL5YWJ6KeSIDwgc2Vua291a2FrdVwgOwor6aOv57KSIDwgbWVzaGl0c3VidVwgOwor5bCP6ZaT5L2/IDwga29tYWR6dWthaVwgOwor6KeS6Iac54KOIDwga2FrdW1ha3VlblwgOwor54yr6LuKIDwgbmVrb2d1cnVtYVwgOwor6bCt6ISa6aGeIDwga2lreWFrdXJ1aVwgOwor6ZGR6K2Y5a62IDwga2Fuc2hpa2lrYVwgOwor6IiI6KGM5birIDwga291Z3lvdXNoaVwgOwor5LiJ6LaKIDwgbWl0c3Vrb3NoaVwgOwor5ay25aSp5LiLIDwga2FrYWFkZW5rYVwgOwor5Zu65b2i54mpIDwga29rZWlidXRzdVwgOwor57Sh57i+57O4IDwgYm91c2VraWl0b1wgOwor5ZCm5a6a5b+c562UIDwgaGl0ZWlvdXRvdVwgOwor5ZCd5ZeH5a62IDwgcmluc2hva3VrYVwgOwor54K65pu/5bC7IDwga2F3YXNlamlyaVwgOwor6Kqt6ICF5qyEIDwgZG9rdXNoYXJhblwgOwor5Ye65LiW5L2cIDwgc2h1c3Nlc2FrdVwgOwor5YuV5pGp5pOmIDwgZG91bWFzYXRzdVwgOwor6YOo5YiG6aOfIDwgYnVidW5zaG9rdVwgOwor5Ye654mI5rOVIDwgc2h1cHBhbmhvdVwgOwor6Kqy6aGM5puyIDwga2FkYWlreW9rdVwgOwor5a6i5pyIIDwga3lha3VnZXRzdVwgOwor5q666Jmr5YmkIDwgc2F0Y2h1dXphaVwgOwor6JaE6Zuq6I2JIDwgdXN1eXVraXNvdVwgOwor5Lq65L2T5a2mIDwgamludGFpZ2FrdVwgOwor5bmz5Z+O5LqsIDwgaGVpam91a3lvdVwgOwor5LiJ6KeS5bi9IDwgc2Fua2FrdWJvdVwgOwor6KGd5pKD5rOiIDwgc2hvdWdla2loYVwgOwor6Ieq5bex6LOH5pysIDwgamlrb3NoaWhvblwgOwor6YO16YCB5paZIDwgeXV1c291cnlvdVwgOwor55+z54Kt6YW4IDwgc2VraXRhbnNhblwgOwor5b6B5pyN6ICFIDwgc2VpZnVrdXNoYVwgOwor6aGU6LKMIDwga2Fva2F0YWNoaVwgOwor6buE6YeR5pmC5LujIDwgb3Vnb25qaWRhaVwgOwor5ZG95Luk5LiA5LiLIDwgbWVpcmVpaWtrYVwgOwor5by36KGM6LuNIDwga3lvdWtvdWd1blwgOwor57SN5LuY5pyf6ZmQIDwgbm91ZnVraWdlblwgOwor5Luj6KGo5ZujIDwgZGFpaHlvdWRhblwgOwor5bCP5YWQ6bq755e6IDwgc2hvdW5pbWFoaVwgOwor6ISa5pys5a62IDwga3lha3Vob25rYVwgOwor6I+T5a2Q6YmiIDwga2FzaGliYWNoaVwgOwor55u05YaG6YyQIDwgY2hva3VlbnN1aVwgOwor5a6j5Lyd6KiY5LqLIDwgc2VuZGVua2lqaVwgOwor5Ye654mI5qipIDwgc2h1cHBhbmtlblwgOwor5YaN5pyN5b25IDwgc2FpZnVrdWVraVwgOwor55Sf5pS+6YCBIDwgbmFtYWhvdXNvdVwgOwor6KiI566X5bC6IDwga2Vpc2FuamFrdVwgOwor5aSP5a2j5LyR5pqHIDwga2FraWt5dXVrYVwgOwor6YCa5Yuk6ICFIDwgdHN1dWtpbnNoYVwgOwor5LiA5aGB57eaIDwgaWNoaXJ1aXNlblwgOwor6Ieo5pmC5pS/5bqcIDwgcmluamlzZWlmdVwgOwor5bC65YWrIDwgc2hha3VoYWNoaVwgOwor5ray6YeP6KiIIDwgZWtpcnlvdWtlaVwgOwor5LiJ5pel5LiJ5pmpIDwgbWlra2FtaWJhblwgOwor5YiH5pSv5Li5IDwga2lyaXNoaXRhblwgOwor6ZeH5biC5aC0IDwgeWFtaXNoaWpvdVwgOwor5p2x55S3IDwgYXp1bWFvdG9rb1wgOwor6Zqc5a6z6ICFIDwgc2hvdWdhaXNoYVwgOwor6LK05peP55qEIDwga2l6b2t1dGVraVwgOwor5Y2w5Yi35Lq6IDwgaW5zYXRzdW5pblwgOwor5rW36LOK6Ii5IDwga2Fpem9rdXNlblwgOwor5oq96LGh5YyWIDwgY2h1dXNob3VrYVwgOwor6Kyb57+S5LyaIDwga291c2h1dWthaVwgOwor5oSb546p54mpIDwgYWlnYW5idXRzdVwgOwor6bq76ZuA5bGLIDwgbWF6ZWphbicneWFcIDsKK+S8neafk+avkiA8IGRlbnNlbmRva3VcIDsKK+eEoeeQhumbo+mhjCA8IG11cmluYW5kYWlcIDsKK+S7luWbveiAhSA8IHRha29rdW1vbm9cIDsKK+S6iOWCmeijhee9riA8IHlvYmlzb3VjaGlcIDsKK+aenOaoueagveWfuSA8IGthanVzYWliYWlcIDsKK+mHjeWxpOeahCA8IGp1dXNvdXRla2lcIDsKK+izquaouCA8IHNoaXRzdWJva3VcIDsKK+S6lOmHjeWhlCA8IGdvanV1bm90b3VcIDsKK+S4i+e0muWvqSA8IGtha3l1dXNoaW5cIDsKK+iCmOaelSA8IGhpamltYWt1cmFcIDsKK+eyl+iho+eyl+mjnyA8IHNvaXNvc2hva3VcIDsKK+S9juaJgOW+lyA8IHRlaXNob3Rva3VcIDsKK+S7j+a7hSA8IGJ1dHN1bWV0c3VcIDsKK+WwgumWgOeroCA8IHNlbm1vbnNob3VcIDsKK+mLs+mAoOaJgCA8IGNodXV6b3VzaG9cIDsKK+efreaZguaXpSA8IHRhbmppaml0c3VcIDsKK+S8kealreaXpSA8IGt5dXVneW91YmlcIDsKK+WFiOerr+eahCA8IHNlbnRhbnRla2lcIDsKK+S6uuawkeWnlOWToSA8IGppbm1pbicnaWluXCA7CivllqflmKnohbAgPCBrZW5rYWdvc2hpXCA7CivojYnlj4zntJkgPCBrdXNhem91c2hpXCA7Civnqbrmg7PnmoQgPCBrdXVzb3V0ZWtpXCA7Civpo73lkozokrjmsJcgPCBob3V3YWpvdWtpXCA7Civpm6rpgZTno6ggPCB5dWtpZGFydW1hXCA7CivljLnlpKvljLnlqaYgPCBoaXBwdWhpcHB1XCA7CivlhoXkuqTmuIkgPCBuYWlrb3VzaG91XCA7CivluoPlkYrnpL4gPCBrb3Vrb2t1c2hhXCA7CivlsI/ljIUgPCBrb2R6dXRzdW1pXCA7Civlr4blr4YgPCBtaXRzdW1pdHN1XCA7CivkuozliIbpn7PnrKYgPCBuaWJ1bicnb25wdVwgOwor6LKo54mp6aeFIDwga2Ftb3RzdWVraVwgOwor5Y2D5rOi5LiH5rOiIDwgc2VucGFiYW5wYVwgOwor6LKn5LmP57GkIDwgYmluYm91Z3VqaVwgOwor5a++6Kmx5byPIDwgdGFpd2FzaGlraVwgOwor5bCx5LitIDwgbmFrYW5kenVrdVwgOwor5YWx55Sj6LuNIDwga3lvdXNhbmd1blwgOwor5LiK6JOGIDwgdXdhbXVzaGlyb1wgOwor5LiN5om/6Ku+IDwgZnVzaG91ZGFrdVwgOwor5rGC5Lq66KqMIDwga3l1dWppbnNoaVwgOwor6Z6t5q+b6JmrIDwgYmVubW91Y2h1dVwgOwor57Ch5Y2Y5pyNIDwga2FudGFuZnVrdVwgOwor6buS56mC55eFIDwga3Vyb2hvYnlvdVwgOwor6ISx5YqbIDwgZGF0c3VyeW9rdVwgOwor6LOq5pytIDwgc2hpY2hpZnVkYVwgOwor5YiG5ouF6aGNIDwgYnVudGFuZ2FrdVwgOwor55Ww5bi455m655SfIDwgaWpvdWhhc3NlaVwgOwor5rK75a6J6YOo6ZqKIDwgY2hpYW5idXRhaVwgOwor5aSq6Zm96JmrIDwgdGFpeW91Y2h1dVwgOwor5pqr5a6a55qEIDwgemFudGVpdGVraVwgOwor5Luj6KGo5L6LIDwgZGFpaHlvdXJlaVwgOwor5LiJ6I+xIDwgbWl0c3ViaXNoaVwgOwor5YiD5YK35rKZ5rGwIDwgbmluam91emF0YVwgOwor5ZCM5Zu95rCRIDwgZG91a29rdW1pblwgOwor6KiY5b+154mpIDwga2luZW5idXRzdVwgOwor5pen5L2T5Yi2IDwga3l1dXRhaXNlaVwgOwor5Luu5p6VIDwga2FyaW1ha3VyYVwgOwor5Y2X5rSL5p2QIDwgbmFuJyd5b3V6YWlcIDsKK+mdnuW4uOWPoyA8IGhpam91Z3VjaGlcIDsKK+S4iuihqOe0mSA8IHV3YWJ5b3VzaGlcIDsKK+mdoueZveWRsyA8IG9tb3NoaXJvbWlcIDsKK+S/neWtmOmjnyA8IGhvem9uc2hva3VcIDsKK+S4jea0u+aAp+WMliA8IGZ1a2Fzc2Vpa2FcIDsKK+WNiuaEj+itmCA8IGhhbicnaXNoaWtpXCA7Civkvpvlh7ogPCBreW91c2h1dHN1XCA7Civlrq7lrqQgPCBreXV1c2hpdHN1XCA7CivmnKzoqr/lrZAgPCBob25jaG91c2hpXCA7CivnuZTlpbPmmJ8gPCBzaG9rdWpvc2VpXCA7CivmmKXpnJ4gPCBoYXJ1Z2FzdW1pXCA7CivlsILploDnmoQgPCBzZW5tb250ZWtpXCA7Civpo5/niakgPCBzaG9rdW1vdHN1XCA7CivloLHlhJ/ph5EgPCBob3VzaG91a2luXCA7Civmk7LlvL7nrZIgPCB0ZWtpZGFudG91XCA7CivosqfkuY/npZ4gPCBiaW5ib3VnYW1pXCA7CivmmJTpoqggPCBtdWthc2hpZnV1XCA7CivlpKfntbHpoJggPCBkYWl0b3VyeW91XCA7Civph4/lrZDoq5YgPCByeW91c2hpcm9uXCA7CivkuK3lipvnsokgPCBjaHV1cmlraWtvXCA7Civlrp3ls7YgPCB0YWthcmFqaW1hXCA7Civlt6Xkuovnj77loLQgPCBrb3VqaWdlbmJhXCA7CivnnLzpj6HnjL8gPCBtZWdhbmV6YXJ1XCA7Civku4/mp5ggPCBob3Rva2VzYW1hXCA7CivohJrlipsgPCBreWFrdXJ5b2t1XCA7Civmpa3nlYzntJkgPCBneW91a2Fpc2hpXCA7CivpnZ7lhazlvI8gPCBoaWtvdXNoaWtpXCA7CivmsLTlhbXmnI0gPCBzdWloZWlmdWt1XCA7Civosq/mnKjloLQgPCBjaG9ib2t1am91XCA7Civmoq/lrZDmrrUgPCBoYXNoaWdvZGFuXCA7CivlvZPmrbPpp5IgPCB0b3VzYWlnb21hXCA7CivlrpfmlZnlrrYgPCBzaHV1a3lvdWthXCA7CivnoJTnqbblrpggPCBrZW5reXV1a2FuXCA7CivmronmlZnogIUgPCBqdW5reW91c2hhXCA7Civmronpm6PogIUgPCBqdW4nJ25hbnNoYVwgOwor5aOB6Ki06KifIDwga2FiZXpvc2hvdVwgOwor5LiL6IG3IDwgc2hpdGFzaG9rdVwgOwor6Ieq5bex5a6j5LydIDwgamlrb3NlbmRlblwgOwor546J5pW055CGIDwgZ3lva3VzZWlyaVwgOwor6Iyo5Z+O55yMIDwgaWJhcmFraWtlblwgOwor5bGI5puy6YOoIDwga3Vra3lva3VidVwgOwor5raI6Ziy6ZqKIDwgc2hvdWJvdXRhaVwgOwor5pyn5piG5biDIDwgb2Jvcm9rb25idVwgOwor5rCX566h5pSv54KOIDwga2lrYW5zaGllblwgOwor55yL55eF5Lq6IDwga2FuYnlvdW5pblwgOwor6Iqx6Zu76LuKIDwgaGFuYWRlbnNoYVwgOwor5Zyw5paH5a2mIDwgY2hpbW9uZ2FrdVwgOwor5Y+j5L6b5pu4IDwga291a3lvdXNob1wgOwor5puy562GIDwga3lva3VoaXRzdVwgOwor5omL5YmN5Yud5omLIDwgdGVtYWVnYXR0ZVwgOwor5L+d5a6I5Li7576pIDwgaG9zaHVzaHVnaVwgOwor6I2J6YeO55CDIDwga3VzYXlha3l1dVwgOwor5qSc5LqL5bGAIDwga2VuamlreW9rdVwgOwor5pyo56uv5b6u5aG1IDwga29wcGFtaWppblwgOwor5YWt6L665b2iIDwgcm9rdWhlbmtlaVwgOwor5q275Lqh6KiY5LqLIDwgc2hpYm91a2lqaVwgOwor6Kqt6ICF5bGkIDwgZG9rdXNoYXNvdVwgOwor5YKs5L+D54q2IDwgc2Fpc29rdWpvdVwgOwor5YK+5pac6KeSIDwga2Vpc2hha2FrdVwgOwor6YGO5Ymw5Yip55uKIDwga2Fqb3VyaWVraVwgOwor5Y+O55uj54q2IDwgc2h1dWthbmpvdVwgOwor5Zyw6ZyH5a2mIDwgamlzaGluZ2FrdVwgOwor5Zyo5LiW5LitIDwgemFpc2VpY2h1dVwgOwor5aWl5bqn5pW3IDwgb2t1emFzaGlraVwgOwor5LiA57qPIDwgaGl0b21hdG9tZVwgOwor576O6KGT6aSoIDwgYmlqdXRzdWthblwgOwor6Kix5a656YePIDwga3lveW91cnlvdVwgOwor5aWz5bCK55S35Y2RIDwgam9zb25kYW5waVwgOwor5bCE5pKD5aC0IDwgc2hhZ2VraWpvdVwgOwor5b6M5aSp55qEIDwga291dGVudGVraVwgOwor6aeQ5bGv5ZywIDwgY2h1dXRvbmNoaVwgOwor6aOv5quDIDwgbWVzaGliaXRzdVwgOwor6ISz5rqi6KGAIDwgbm91aWtrZXRzdVwgOwor5a2Y5ZG95LitIDwgem9ubWVpY2h1dVwgOwor57O75YiX5YyWIDwga2VpcmV0c3VrYVwgOwor5Ye654mI5bGLIDwgc2h1cHBhbicneWFcIDsKK+Wvqee+jueahCA8IHNoaW5iaXRla2lcIDsKK+aBkuS5heaApyA8IGtvdWt5dXVzZWlcIDsKK+iyneafsSA8IGthaWJhc2hpcmFcIDsKK+eJh+iyv+aYkyA8IGthdGFib3Vla2lcIDsKK+aWh+eMruWtpiA8IGJ1bmtlbmdha3VcIDsKK+WNgeS6jOWNmOihoyA8IGp1dW5paGl0b2VcIDsKK+aZguS7o+iJsiA8IGppZGFpc2hva3VcIDsKK+WIhumbouiqsueojiA8IGJ1bnJpa2F6ZWlcIDsKK+Wkp+Wkp+eahCA8IGRhaWRhaXRla2lcIDsKK+S6jOmHjeapiyA8IG5panV1YmFzaGlcIDsKK+WcsOiqjOWtpiA8IGNoaXNoaWdha3VcIDsKK+WMluWtpueahCA8IGthZ2FrdXRla2lcIDsKK+absuebtCA8IGt5b2t1Y2hva3VcIDsKK+iCieW8vuaIpiA8IG5pa3VkYW5zZW5cIDsKK+S4gOe1g+eQtCA8IGljaGlnZW5raW5cIDsKK+mBiueJp+awkSA8IHl1dWJva3VtaW5cIDsKK+S4uOeTpiA8IG1hcnVnYXdhcmFcIDsKK+aguOWun+mokyA8IGtha3VqaWtrZW5cIDsKK+iyqOeJqei7iiA8IGthbW90c3VzaGFcIDsKK+S7u+aEj+aNnOafuyA8IG5pbicnaXNvdXNhXCA7CivmsYLkurrogIUgPCBreXV1amluc2hhXCA7CivkuIPnq4ggPCBuYW5ha2FtYWRvXCA7CivlnLDpnIflm70gPCBqaXNoaW5rb2t1XCA7CivlsYXnlZnlnLAgPCBreW9yeXV1Y2hpXCA7CivkuIrkvY3mpoLlv7UgPCBqb3VpZ2FpbmVuXCA7CivpmpzlrZDntJkgPCBzaG91amlnYW1pXCA7CivoiJ7lj7DpgZPlhbcgPCBidXRhaWRvdWd1XCA7CivmvZzlh73nl4UgPCBzZW5rYW5ieW91XCA7CivkuIDnqbQgPCBoaXRvdHN1YW5hXCA7CivlvJXnjofogIUgPCBpbnNvdHN1c2hhXCA7CivkuIrmmKDmmYLplpMgPCBqb3VlaWppa2FuXCA7CivlravlqJggPCBtYWdvbXVzdW1lXCA7Civmtbfos4rniYggPCBrYWl6b2t1YmFuXCA7Civkv6Hku7DogIUgPCBzaGlua291c2hhXCA7CivmtojpmLLou4ogPCBzaG91Ym91c2hhXCA7CivkuInnrYnos54gPCBzYW50b3VzaG91XCA7CivnhKHorablr58gPCBtdWtlaXNhdHN1XCA7Civku4/mgKcgPCBob3Rva2VzaG91XCA7CivpnZnpnZkgPCBzaGl6dXNoaXp1XCA7CivlvanoibLnlLsgPCBzYWlzaG9rdWdhXCA7Civli6flkYrogIUgPCBrYW5rb2t1c2hhXCA7CivoqIjlmajpo5vooYwgPCBrZWlraWhpa291XCA7Civlrp/lipsgPCBqaXRzdXJ5b2t1XCA7Civmm7LnjocgPCBreW9rdXJpdHN1XCA7CivlpKfpvJMgPCBvb3RzdWR6dW1pXCA7CivluoPlkYrmrIQgPCBrb3Vrb2t1cmFuXCA7Civos57ph5HnjosgPCBzaG91a2luJydvdVwgOwor5oim54G95a2k5YWQIDwgc2Vuc2Fpa29qaVwgOwor6YCa55+l54q2IDwgdHN1dWNoaWpvdVwgOwor5bel5L2c5ZOBIDwga291c2FrdWhpblwgOwor5Zyw5pS/5a2mIDwgY2hpc2VpZ2FrdVwgOwor5aSq6Zm956WeIDwgdGFpeW91c2hpblwgOwor57aZ5om/6ICFIDwga2Vpc2hvdXNoYVwgOwor5Z+65pys5Y6f55CGIDwga2lob25nZW5yaVwgOwor5Lmz6KO95ZOBIDwgbnl1dXNlaWhpblwgOwor54uQ6ImyIDwga2l0c3VuZWlyb1wgOwor6YGK5pKD6ZqKIDwgeXV1Z2VraXRhaVwgOwor5Y2R5oCv6ICFIDwgaGlreW91bW9ub1wgOwor5YaN5pWZ6IKyIDwgc2Fpa3lvdWlrdVwgOwor5Zu95YaF57eaIDwga29rdW5haXNlblwgOwor5Zmb54WZ6I2JIDwga2FtaXRhYmFrb1wgOwor5LiA552hIDwgaGl0b25lbXVyaVwgOwor5oWI5ZaE5biCIDwgaml6ZW4nJ2ljaGlcIDsKK+WbnuaDs+mMsiA8IGthaXNvdXJva3VcIDsKK+WkluS6pOeahCA8IGdhaWtvdXRla2lcIDsKK+aDheaEj+aKleWQiCA8IGpvdWl0b3Vnb3VcIDsKK+S4i+eUuiA8IHNoaXRhbWFjaGlcIDsKK+euoeeQhuapn+iDvSA8IGthbnJpa2lub3VcIDsKK+S6uuW/gyA8IGhpdG9nb2tvcm9cIDsKK+S/rueQhuS4rSA8IHNodXVyaWNodXVcIDsKK+iHqOaZguiomOWPtyA8IHJpbmppa2lnb3VcIDsKK+S4ieetieimqiA8IHNhbnRvdXNoaW5cIDsKK+WcsOihqOmdoiA8IGNoaWh5b3VtZW5cIDsKK+W5sua4ieioiCA8IGthbnNob3VrZWlcIDsKK+eglOeptuS8miA8IGtlbmt5dXVrYWlcIDsKK+iCluWDj+aoqSA8IHNob3V6b3VrZW5cIDsKK+S4g+eUnyA8IHNoaWNoaXNob3VcIDsKK+WFteW9ueW/jOmBvyA8IGhlaWVraWtpaGlcIDsKK+eHlem6piA8IGthcmFzdW11Z2lcIDsKK+W9ueS4jei2syA8IHlha3VidXNva3VcIDsKK+S4gOeVqiA8IGhpdG90c3VnYWlcIDsKK+azqOaEj+WKmyA8IGNodXVpcnlva3VcIDsKK+iFueS4iuatuyA8IGZ1a3Vqb3VzaGlcIDsKK+e3qOmbhuiAhSA8IGhlbnNodXVzaGFcIDsKK+W6g+WRiuadvyA8IGtvdWtva3ViYW5cIDsKK+a4ieemvemhniA8IHNob3VraW5ydWlcIDsKK+WAkumMr+iAhSA8IHRvdXNha3VzaGFcIDsKK+awtOeWseeYoSA8IG1penVib3Vzb3VcIDsKK+W5s+etieaoqSA8IGJ5b3Vkb3VrZW5cIDsKK+Wkp+mch+eBvSA8IGRhaXNoaW5zYWlcIDsKK+mHjeeXh+S+iyA8IGp1dXNob3VyZWlcIDsKK+WcsOWfn+eahCA8IGNoaWlraXRla2lcIDsKK+WFseeUo+ezuyA8IGt5b3VzYW5rZWlcIDsKK+mWi+mWieapiyA8IGthaWhlaWt5b3VcIDsKK+aIpuS6ieaYoOeUuyA8IHNlbnNvdWVpZ2FcIDsKK+mZs+aDheabuCA8IGNoaW5qb3VzaG9cIDsKK+iyoeaUv+WNseapnyA8IHphaXNlaWtpa2lcIDsKK+aKleapn+eGsSA8IHRvdWtpbmV0c3VcIDsKK+aciemZkOiKseW6jyA8IHl1dWdlbmtham9cIDsKK+eJqeiqniA8IG1vbm9nYXRhcmlcIDsKK+WGl+irh+S6iyA8IGpvdWRhbmtvdG9cIDsKK+acgOmrmOe0miA8IHNhaWtvdWt5dXVcIDsKK+aAneaDkeW4qyA8IG9tb3dha3VzaGlcIDsKK+Wls+mBlCA8IG9uJyduYXRhY2hpXCA7Civopb/ml6XmnKwgPCBuaXNoaW5paG9uXCA7Civov5Hku6PnmoQgPCBraW5kYWl0ZWtpXCA7CivotoXlpKflnosgPCBjaG91b29nYXRhXCA7CivnoJXmsLfoiLkgPCBzYWloeW91c2VuXCA7CivmvIHmpa3ms5UgPCBneW9neW91aG91XCA7CivmnKfmnIggPCBvYm9yb2R6dWtpXCA7CivmnKrop6PmsbogPCBtaWthaWtldHN1XCA7CivniYfot5sgPCBrYXRhY2hpbmJhXCA7Civou43kuovln7rlnLAgPCBndW5qaWtpY2hpXCA7Civlt6jkurrlm70gPCBreW9qaW5rb2t1XCA7CivmnIDlsI/pmZAgPCBzYWlzaG91Z2VuXCA7CivmnKvml6UgPCBtYXRzdWppdHN1XCA7CivlhazlhbHmgKcgPCBrb3VreW91c2VpXCA7CivkuI3mraPkuovku7YgPCBmdXNlaWppa2VuXCA7Civlh7rmnaXmrKHnrKwgPCBkZWtpc2hpZGFpXCA7Civlt6Xlrablo6sgPCBrb3VnYWt1c2hpXCA7CivphZLpgKDmpa0gPCBzaHV6b3VneW91XCA7CivlpInkvZPku67lkI0gPCBoZW50YWlnYW5hXCA7CivoibLpiZvnrYYgPCBpcm9lbnBpdHN1XCA7CivmnJvmnIggPCBtb2NoaWR6dWtpXCA7Civoi7Hpm4TkuLvnvqkgPCBlaXl1dXNodWdpXCA7CivngavmiZPnn7MgPCBoaXVjaGlpc2hpXCA7CivphrjpgKDmpa0gPCBqb3V6b3VneW91XCA7CivlpKfpmrwgPCBvb2hheWFidXNhXCA7CivljZjnnLzpj6EgPCB0YW5nYW5reW91XCA7Civnl7ToqbHllqflmKkgPCBjaGl3YWdlbmthXCA7CivmvIHmpa3mqKkgPCBneW9neW91a2VuXCA7Civnn7Pnga/nsaAgPCBpc2hpZG91cm91XCA7CivljZfmsLfmtIsgPCBuYW5weW91eW91XCA7CivpsYjloLTon7kgPCB0YXJhYmFnYW5pXCA7CivlsqHlsbHnnIwgPCBva2F5YW1ha2VuXCA7Civng4/mnInlhYjnlJ8gPCB1eXV1c2Vuc2VpXCA7CivntKHnuL7lt6UgPCBib3VzZWtpa291XCA7CivotbfniIbolqwgPCBraWJha3V5YWt1XCA7Civnorroqo3mm7ggPCBrYWt1bmluc2hvXCA7CivmhrLms5XpgZXlj40gPCBrZW5wb3VpaGFuXCA7Civlm57ou6LmpIXlrZAgPCBrYWl0ZW4nJ2lzdVwgOwor6KqV55Sf55+zIDwgdGFuam91c2VraVwgOwor6Ziy6Iet5YmkIDwgYm91c2h1dXphaVwgOwor6Yyr6KO95ZOBIDwgc3V6dXNlaWhpblwgOwor5pyI5pyIIDwgdHN1a2lkenVraVwgOwor6LKo54mp6Ii5IDwga2Ftb3RzdXNlblwgOwor5LiA5aGB5omLIDwgaWNoaXJ1aXNodVwgOwor6ISa57ea576OIDwga3lha3VzZW5iaVwgOwor6IO955m75Y2K5bO2IDwgbm90b2hhbnRvdVwgOwor5Yqj5oCn6YG65LydIDwgcmVzc2VpaWRlblwgOwor5pyJ5L6h54mpIDwgeXV1a2FidXRzdVwgOwor6KuL6LKg5Yi25bqmIDwgdWtlb2lzZWlkb1wgOwor5qSN55Sf5ZuzIDwgc2hva3VzZWl6dVwgOwor5LiA5rihIDwgaGl0b3dhdGFyaVwgOwor55m65oOF5pyfIDwgaGF0c3Vqb3VraVwgOwor55m95rC056S+IDwgaGFrdXN1aXNoYVwgOwor5rC06LuK5bCP5bGLIDwgc3Vpc2hhZ295YVwgOwor5o6h566X5qCqIDwgc2Fpc2Fua2FidVwgOwor6KSQ5q+b5ZKM56iuIDwgYWthZ2V3YXNodVwgOwor6ZW35LiB5aC0IDwgbmFnYWNob3ViYVwgOwor5aa+6IW5IDwgbWVrYWtlYmFyYVwgOwor5pyJ5a2U6JmrIDwgeXV1a291Y2h1dVwgOwor5Zu65a6a6LKg5YK1IDwga290ZWlmdXNhaVwgOwor5aSp54S255eYIDwgdGVuJyduZW50b3VcIDsKK+S+nemhmOWFjeWumCA8IGlnYW5tZW5rYW5cIDsKK+Wbm+aLjeWtkCA8IHlvbmJ5b3VzaGlcIDsKK+WGl+mVt+ezuyA8IGpvdWNob3VrZWlcIDsKK+aXpeacrOW8jyA8IG5paG9uc2hpa2lcIDsKK+a6gOW5tOm9oiA8IG1hbicnbmVucmVpXCA7CivmtojpmLLoiYcgPCBzaG91Ym91dGVpXCA7CivlsI/mtrLog54gPCBzaG91ZWtpaG91XCA7CivpppbllLHogIUgPCBzaHVzaG91c2hhXCA7Civpm7LpnJ4gPCBrdW1va2FzdW1pXCA7Civml6XmnKzlubMgPCBuaWhvbmRhaXJhXCA7CivpnanooosgPCBrYXdhYnVrdXJvXCA7CivpiYTpnaLnmq4gPCB0ZXRzdW1lbnBpXCA7CivkuLvmqKnlm70gPCBzaHVrZW5rb2t1XCA7Civosrfmjpvph5EgPCBrYWlrYWtla2luXCA7Civnn7PngbDnn7MgPCBzZWtrYWlzZWtpXCA7CivnsbPllY/lsYsgPCBrb21lZG9uJyd5YVwgOwor5oCd5oOz5YqHIDwgc2hpc291Z2VraVwgOwor5LiH5Zu95rCRIDwgYmFua29rdW1pblwgOwor5Yun5ZGK54q2IDwga2Fua29rdWpvdVwgOwor5pWX5YyX5oSfIDwgaGFpYm9rdWthblwgOwor5a+G6Ly46Ii5IDwgbWl0c3V5dXNlblwgOwor5Ye65p2l5LiN5Ye65p2lIDwgZGVraWZ1ZGVraVwgOwor5Y+v5aSJ57+8IDwga2FoZW4nJ3lva3VcIDsKK+aUv+W6nOapn+mWoiA8IHNlaWZ1a2lrYW5cIDsKK+WBj+mgreeXmyA8IGhlbnRvdXRzdXVcIDsKK+W5tOm9oue1piA8IG5lbnJlaWt5dXVcIDsKK+mAj+ejgeeOhyA8IHRvdWppcml0c3VcIDsKK+S6i+S7tuiomOiAhSA8IGppa2Vua2lzaGFcIDsKK+W5s+WuieW+jOacnyA8IGhlaWFua291a2lcIDsKK+WOhOS7i+S6iyA8IHlha2thaWdvdG9cIDsKK+S8j+WwhOa/oCA8IGZ1a3VzaGFnb3VcIDsKK+aekOWHuiA8IHNla2lzaHV0c3VcIDsKK+aHuOWjheWegiA8IGtlbicneW91c3VpXCA7CivnlYzno4HmpbUgPCBrYWlqaWt5b2t1XCA7Civlv5znlKjlipsgPCBvdXlvdXJ5b2t1XCA7Civml6Xmm5zml6UgPCBuaWNoaXlvdWJpXCA7CivmtojpmLLnvbIgPCBzaG91Ym91c2hvXCA7Civpm4fnlKjkv53pmbogPCBrb3lvdWhva2VuXCA7CivosqfkuY/mgKcgPCBiaW5ib3VzaG91XCA7CivmoLjltKnlo4ogPCBrYWt1aG91a2FpXCA7CivkuI3mvZTmhJ8gPCBmdWtldHN1a2FuXCA7CivmlbDlrabogIUgPCBzdXVnYWt1c2hhXCA7CivogbTlj5bogIUgPCBjaG91c2h1c2hhXCA7Civoqq3mm7jkurogPCBkb2t1c2hvamluXCA7Civkv53orbfosr/mmJMgPCBob2dvYm91ZWtpXCA7CivliY3ku7vlnLAgPCB6ZW4nJ25pbmNoaVwgOwor5ryB6Imy5a62IDwgZ3lvc2hva3VrYVwgOwor5LiW55WM5Yi26KaHIDwgc2VrYWlzZWloYVwgOwor6KO95L2c6ICFIDwgc2Vpc2FrdXNoYVwgOwor5LiN5p2fIDwgZnV0c3V0c3VrYVwgOwor5rKh5YCL5oCnIDwgYm90c3Vrb3NlaVwgOwor54Sh5qmf6IKl5paZIDwgbXVraWhpcnlvdVwgOwor5YWo5bqX5LitIDwgemVudGVuY2h1dVwgOwor6auY6YeO6LGG6IWQIDwga291eWFkb3VmdVwgOwor5a6Y57Wm5ZOBIDwga2Fua3l1dWhpblwgOwor55m96YeR5pePIDwgaGFra2luem9rdVwgOwor5aSp5paH5a2mIDwgdGVubW9uZ2FrdVwgOwor5YW15a2m6ICFIDwgaGVpZ2FrdXNoYVwgOwor5ZCI5ZSx6ZqKIDwgZ2Fzc2hvdXRhaVwgOwor5Luj6K2w5pS/5rK7IDwgZGFpZ2lzZWlqaVwgOwor5LiN5oiQ56uLIDwgZnVzZWlyaXRzdVwgOwor54yr5p+zIDwgbmVrb3lhbmFnaVwgOwor54yu57SN5ZOBIDwga2VuJydub3VoaW5cIDsKK+e0sOeykuWIhiA8IHNhaXJ5dXVidW5cIDsKK+aEj+mmrOW/g+eMvyA8IGliYXNoaW4nJ2VuXCA7CivnjJvnt7Tnv5IgPCBtb3VyZW5zaHV1XCA7CivkuqTpgJrpgbrlhZAgPCBrb3V0c3V1aWppXCA7CivkvovlpJbnmoQgPCByZWlnYWl0ZWtpXCA7CivlirnnjofljJYgPCBrb3VyaXRzdWthXCA7CivpmaTomavoj4ogPCBqb2NodXVnaWt1XCA7CivntIXnlJ/lp5wgPCBiZW5pc2hvdWdhXCA7CivlubLmi5PlnLAgPCBrYW50YWt1Y2hpXCA7Civlh43lgrfogIUgPCB0b3VzaG91c2hhXCA7CivlkIzlm73kurogPCBkb3Vrb2t1amluXCA7Civnm67nmoToqp4gPCBtb2t1dGVraWdvXCA7Civosrjku5ggPCBrYXNoaXRzdWtlXCA7CivkuInlm73lv5cgPCBzYW5nb2t1c2hpXCA7CivkurrniannlLsgPCBqaW5idXRzdWdhXCA7CivlkLjlhaXlmaggPCBreXV1bnl1dWtpXCA7CivpmLLlr5LmnI0gPCBib3VrYW5mdWt1XCA7Civkv67pmaLplbcgPCBzaHV1aW5jaG91XCA7Civlm73lhoXms5UgPCBrb2t1bmFpaG91XCA7CivmjqLnqbbogIUgPCB0YW5reXV1c2hhXCA7CivliJ3lv4PogIUgPCBzaG9zaGluc2hhXCA7Civni7jmsYEgPCB0YW51a2lqaXJ1XCA7CivmnKrplovnmbogPCBtaWthaWhhdHN1XCA7CivluoPlkYrloZQgPCBrb3Vrb2t1dG91XCA7Civplovmi5PogIUgPCBrYWl0YWt1c2hhXCA7CivkurrpoZ7lraYgPCBqaW5ydWlnYWt1XCA7Civnn6Xml6XmtL4gPCBjaGluaWNoaWhhXCA7CivmnIDpq5jmva4gPCBzYWlrb3VjaG91XCA7CivlpKnnhLbmuK8gPCB0ZW4nJ25lbmtvdVwgOwor5Y+N6YCG5YWQIDwgaGFuZ3lha3VqaVwgOwor5LiA5Zu96ICFIDwgaWtrb2t1bW9ub1wgOwor5aW95p2Q5paZIDwga291emFpcnlvdVwgOwor5aSq6Zm95pqmIDwgdGFpeW91cmVraVwgOwor5bi455So55mWIDwgam91eW91aGVraVwgOwor5pep5pWZ6IKyIDwgc291a3lvdWlrdVwgOwor5qC85a2Q57ieIDwga291c2hpamltYVwgOwor5Y+N6LuN55qEIDwgaGFuZ3VudGVraVwgOwor6Jas5YyF57SZIDwgeWFrdWhvdXNoaVwgOwor5YW15pu56ZW3IDwgaGVpc291Y2hvdVwgOwor5ryi5paH5a2mIDwga2FuYnVuZ2FrdVwgOwor5oCl5YWI6YuSIDwga3l1dXNlbnBvdVwgOwor5LiN5oqxIDwga2FrYXdhcmF6dVwgOwor5Y+j5aWH6bqXIDwga3VjaGlnaXJlaVwgOwor6KGM5pS/5rOVIDwgZ3lvdXNlaWhvdVwgOwor6YCB6YeR6aGNIDwgc291a2luZ2FrdVwgOwor5rGC5ama6ICFIDwga3l1dWtvbnNoYVwgOwor5YaN6Kq/5pW0IDwgc2FpY2hvdXNlaVwgOwor6aKo6KaL6baPIDwga2F6YW1pZG9yaVwgOwor5Z+35pS/5a6YIDwgc2hpc3NlaWthblwgOwor6IO95qW95aCCIDwgbm91Z2FrdWRvdVwgOwor5aW95LiL54mpIDwga291a2FidXRzdVwgOwor5Y+M55m65qmfIDwgc291aGF0c3VraVwgOwor6YG65qOE6LKo54mpIDwgaWtpa2Ftb3RzdVwgOwor5YWs5YWx5YK1IDwga291a3lvdXNhaVwgOwor5pio5bm05p2lIDwgc2FrdW5lbnJhaVwgOwor5o+Q5L6b6ICFIDwgdGVpa3lvdXNoYVwgOwor6Ya46YCg5a2mIDwgam91em91Z2FrdVwgOwor5LiA5omAIDwgaGl0b3Rva29yb1wgOwor5b6X54K55ZyPIDwgdG9rdXRlbmtlblwgOwor54Kt5YyW5rC057SgIDwgdGFua2FzdWlzb1wgOwor5a+p576O5a2mIDwgc2hpbmJpZ2FrdVwgOwor5aWz5L6/5omAIDwgb24nJ25hYmVuam9cIDsKK+WRieacjeeJqSA8IGdvZnVrdW1vbm9cIDsKK+eXh+WAmee+pCA8IHNob3Vrb3VndW5cIDsKK+WbsueigeS4iee0miA8IGlnb3Nhbmt5dXVcIDsKK+eUo+WppuS6uuenkSA8IHNhbmZ1amlua2FcIDsKK+absuWwuiA8IGt5b2t1c2hha3VcIDsKK+agvOWtkOeqkyA8IGtvdXNoaW1hZG9cIDsKK+aWh+aYjuWbvSA8IGJ1bm1laWtva3VcIDsKK+ihjOaUv+aoqSA8IGd5b3VzZWlrZW5cIDsKK+mHkeacqOeKgCA8IGtpbm1va3VzZWlcIDsKK+eQhuaDs+S4u+e+qSA8IHJpc291c2h1Z2lcIDsKK+WNgeWtl+egsueBqyA8IGp1dWppaG91a2FcIDsKK+mbquizqiA8IHl1a2lzaGl0c3VcIDsKK+mDvemBk+W6nOecjCA8IHRvZG91ZnVrZW5cIDsKK+m6nemmmeixjOixhiA8IGpha291ZW5kb3VcIDsKK+aJi+acreWeiyA8IHRlZnVkYWdhdGFcIDsKK+WFqOiIrOeahCA8IHplbnBhbnRla2lcIDsKK+eJueauiumLvCA8IHRva3VzaHVrb3VcIDsKK+Wcp+e4ruaApyA8IGFzc2h1a3VzZWlcIDsKK+ebsuWUluWtpuagoSA8IG1vdWFnYWtrb3VcIDsKK+S/neWuieadoeS+iyA8IGhvYW5qb3VyZWlcIDsKK+efs+WZqOaZguS7oyA8IHNla2tpamlkYWlcIDsKK+S8vOmdnueQhuWxiCA8IGVzZXJpa3V0c3VcIDsKK+WumOaIv+mVtyA8IGthbmJvdWNob3VcIDsKK+iomOW/teWIh+aJiyA8IGtpbmVua2l0dGVcIDsKK+eZveegguezliA8IHNoaXJvemF0b3VcIDsKK+WAi+S6uuWAi+S6uiA8IGtvamlua29qaW5cIDsKK+aYpeWIhueCuSA8IHNodW5idW50ZW5cIDsKK+aXp+S4u+S6uiA8IGt5dXVzaHVqaW5cIDsKK+eKh+eKhyA8IGhpc2hpaGlzaGlcIDsKK+mbm+ixhiA8IGhpeW9rb21hbWVcIDsKK+W7tua7nuWIqeWtkCA8IGVudGFpcmlzaGlcIDsKK+iRiee3kee0oCA8IHlvdXJ5b2t1c29cIDsKK+e2sumgrSA8IGFtaWdhc2hpcmFcIDsKK+WIhua0vuS4u+e+qSA8IGJ1bnBhc2h1Z2lcIDsKK+WGhemdoueahCA8IG5haW1lbnRla2lcIDsKK+avgOiqieikkuiytiA8IGtpeW9ob3VoZW5cIDsKK+iCuue1kOaguCA8IGhhaWtla2tha3VcIDsKK+WUr+e+juS4u+e+qSA8IHl1aWJpc2h1Z2lcIDsKK+WhqemtmiA8IHNoaW96YWthbmFcIDsKK+WbnuWPjumHkSA8IGthaXNodXVraW5cIDsKK+e2v+W4veWtkCA8IHdhdGFib3VzaGlcIDsKK+S4reWftyA8IGNodXVzaGl0c3VcIDsKK+Wkj+iZqyA8IG5hdHN1bXVzaGlcIDsKK+aApemAsua0viA8IGt5dXVzaGluaGFcIDsKK+i7jeS6i+ihm+aYnyA8IGd1bmppZWlzZWlcIDsKK+iKuOihk+mZoiA8IGdlaWp1dHN1aW5cIDsKK+amtOW8vuegsiA8IHJ5dXVkYW5wb3VcIDsKK+WGkumZuuW/gyA8IGJvdWtlbnNoaW5cIDsKK+WPr+eHg+eJqSA8IGthbmVuYnV0c3VcIDsKK+aXpeacrOS4gCA8IG5paG9uJydpY2hpXCA7Civkv67nt7TogIUgPCBzaHV1cmVuc2hhXCA7Civlj43lsITpj6EgPCBoYW5zaGFreW91XCA7Civkuoznm7Top5IgPCBuaWNob2trYWt1XCA7CivnhKHmiJHlpKLkuK0gPCBtdWdhbXVjaHV1XCA7CivlnovlpInmj5sgPCBrYXRhaGVua2FuXCA7Civljrvli6LniZsgPCBreW9zZWl1c2hpXCA7CivkuojlrprmnJ/pmZAgPCB5b3RlaWtpZ2VuXCA7Civniq/nvarlraYgPCBoYW56YWlnYWt1XCA7Civljp/nsY3lnLAgPCBnZW5zZWtpY2hpXCA7Civntr7pjKYgPCBheWFuaXNoaWtpXCA7CivmgKfpgZPlvrMgPCBzZWlkb3V0b2t1XCA7CivlubPmu5HljJYgPCBoZWlrYXRzdWthXCA7Civnq4vkvZPmmKDnlLsgPCByaXR0YWllaWdhXCA7Civpg7Xkvr/nrrEgPCB5dXViaW5iYWtvXCA7Civlj5fkv6HmlpkgPCBqdXNoaW5yeW91XCA7Civlho3ntYTnuZQgPCBzYWlzb3NoaWtpXCA7Civnvo7ooZPnlYwgPCBiaWp1dHN1a2FpXCA7CivlpKnmsJfmqKHmp5ggPCB0ZW5raW1veW91XCA7CivkuI3nrYnlvI8gPCBmdWRvdXNoaWtpXCA7Civngavlj6Pljp/muZYgPCBrYWtvdWdlbmtvXCA7CivmnIjliKUgPCB0c3VraWJldHN1XCA7Civooajpn7PlrZfmr40gPCBoeW91b25qaWJvXCA7CivntITlrprmm7ggPCB5YWt1am91c2hvXCA7CivkuInnrofml6UgPCBzYW5nYW5pY2hpXCA7Civpn7Plo7DoqIDoqp4gPCBvbnNlaWdlbmdvXCA7CivnmbrnpaXlnLAgPCBoYXNzaG91Y2hpXCA7CivkuIDmmKjmmKjml6UgPCBzYWtpb3RvdG9pXCA7Civli53miYvlj6MgPCBrYXR0ZWd1Y2hpXCA7CivlpJXpo5/lvowgPCB5dXVzaG9rdWdvXCA7CivmkKzlhaXml6UgPCBoYW4nJ255dXViaVwgOwor6LGq5ZWG5bGkIDwgZ291c2hvdXNvdVwgOwor5aW06LGG6IWQIDwgeWFra29kb3VmdVwgOwor6ISx5rOV6KGM54K6IDwgZGFwcG91a291aVwgOwor5oSf6Kaa6KuWIDwga2Fua2FrdXJvblwgOwor5Zu955Sj6LuKIDwga29rdXNhbnNoYVwgOwor5LiN5rWB6YCaIDwgZnVyeXV1dHN1dVwgOwor5qmL6aCt5aChIDwga3lvdXRvdWhvdVwgOwor5YCL5Lq65Li7576pIDwga29qaW5zaHVnaVwgOwor5aSP5pmC6ZaTIDwgbmF0c3VqaWthblwgOwor55+z54Kt5bGkIDwgc2VraXRhbnNvdVwgOwor57W55LiA5Yy5IDwga2ludWlwcGlraVwgOwor5bu655m95pu4IDwga2VucGFrdXNob1wgOwor5raI6Ziy5rOVIDwgc2hvdWJvdWhvdVwgOwor5Lit6L+R5p2xIDwgY2h1dWtpbnRvdVwgOwor5LiN5q2j6KaP6LuNIDwgZnVzZWlraWd1blwgOwor5aWq55WlIDwgZGF0c3VyeWFrdVwgOwor6Ki85Lq65Y+wIDwgc2hvdW5pbmRhaVwgOwor5rC055Sj5qWtIDwgc3Vpc2FuZ3lvdVwgOwor5q+U5L6L5byPIDwgaGlyZWlzaGlraVwgOwor55S35omA5bivIDwgb3Rva29qb3RhaVwgOwor5L+u5pW054mIIDwgc2h1dXNlaWhhblwgOwor5YeG55yL6K235ammIDwganVua2FuZ29mdVwgOwor5Ya35rC05rW0IDwgcmVpc3VpeW9rdVwgOwor5aSP576957mUIDwgbmF0c3ViYW9yaVwgOwor6KSS6KiA6JGJIDwgaG9tZWtvdG9iYVwgOwor57mB57mBIDwgc2hpZ2VzaGlnZVwgOwor5LqL5YuZ5py6IDwgamltdWR6dWt1ZVwgOwor5Li75YKs5Zu9IDwgc2h1c2Fpa29rdVwgOwor5aSn5aSW5YiIIDwgb29zb3RvZ2FyaVwgOwor5riF566X5Lq6IDwgc2Vpc2FuJyduaW5cIDsKK+S9j+awkeelqCA8IGp1dW1pbmh5b3VcIDsKK+avjeWtkOWutuW6rSA8IGJvc2hpa2F0ZWlcIDsKK+eEoee3muWxgCA8IG11c2Vua3lva3VcIDsKK+aCquadkOaWmSA8IGFrdXphaXJ5b3VcIDsKK+aXpeeFp+ioiCA8IG5pc3Nob3VrZWlcIDsKK+aUr+aMgeeOhyA8IHNoaWppcml0c3VcIDsKK+S6jOmAo+eZuiA8IG5pcmVucGF0c3VcIDsKK+WQjOWQjeeVsOS6uiA8IGRvdW1laWlqaW5cIDsKK+WFt+ixoeeahCA8IGd1c2hvdXRla2lcIDsKK+WJr+aKteW9kyA8IGZ1a3V0ZWl0b3VcIDsKK+iCsuWFkOaZgumWkyA8IGlrdWppamlrYW5cIDsKK+aZguS+oeeZuuihjCA8IGppa2FoYWtrb3VcIDsKK+iDuOiGnOeCjiA8IGt5b3VtYWt1ZW5cIDsKK+mZpOa5v+WZqCA8IGpvc2hpdHN1a2lcIDsKK+S5l+aPm+mnhSA8IG5vcmlrYWVla2lcIDsKK+S4gOWRqCA8IGhpdG9tZWd1cmlcIDsKK+WPpOacrOWxiyA8IGZ1cnVob24nJ3lhXCA7Civlt6jlpKfnl4cgPCBreW9kYWlzaG91XCA7CivkvJrorbDkuovpoIUgPCBrYWlnaWppa291XCA7Civnn6Xml6XlrrYgPCBjaGluaWNoaWthXCA7Civnmb3nnLzoppYgPCBoYWt1Z2Fuc2hpXCA7CivnhaflsITms5UgPCBzaG91c2hhaG91XCA7Civku67mg7PoqJjmhrYgPCBrYXNvdWtpb2t1XCA7Civng4/ps6kgPCBrYXJhc3ViYXRvXCA7CivotaTkv6Hlj7cgPCBha2FzaGluZ291XCA7CivplbfmlrnlvaIgPCBjaG91aG91a2VpXCA7CivkuIflm73lj7IgPCBiYW5rb2t1c2hpXCA7CivpgKDlhbXlu6AgPCB6b3VoZWlzaG91XCA7CivmnbHkuqzmub4gPCB0b3VreW91d2FuXCA7Civni6zlibXmgKcgPCBkb2t1c291c2VpXCA7Civpg6jliIbpurvphZQgPCBidWJ1bm1hc3VpXCA7CivmpJzkuovmjqfoqLQgPCBrZW5qaWtvdXNvXCA7CivmlL7mtarnmZYgPCBob3Vyb3VoZWtpXCA7CivooYzmlL/lrpggPCBneW91c2Vpa2FuXCA7CivmsqHotqPlkbMgPCBib3RzdXNodW1pXCA7CivpmbbphZTlooMgPCB0b3VzdWlreW91XCA7Civlj43lsITop5IgPCBoYW5zaGFrYWt1XCA7Civml4Xng48gPCB0YWJpZ2FyYXN1XCA7CivkuIPlhYkgPCBuYW5haGlrYXJpXCA7CivnibnlirnolqwgPCB0b2trb3V5YWt1XCA7CivlqJjlqb8gPCBtdXN1bWVtdWtvXCA7Civml6XmsqEgPCBuaWNoaWJvdHN1XCA7CivlpJrpoIXlvI8gPCB0YWtvdXNoaWtpXCA7Civooajmg4XnrYsgPCBoeW91am91a2luXCA7CivntYzllrbnrqHnkIYgPCBrZWllaWthbnJpXCA7CivliKnnm4rnjocgPCByaWVraXJpdHN1XCA7CivkuInmi43lrZAgPCBzYW5ieW91c2hpXCA7Civph4/osqnlupcgPCByeW91aGFudGVuXCA7Civnt6jpm4blrZAgPCBoZW5zaHV1c2hpXCA7CivlhpfplbfmgKcgPCBqb3VjaG91c2VpXCA7CivpvLvnnLzpj6EgPCBoYW5hbWVnYW5lXCA7CivlhoXoppbpj6EgPCBuYWlzaGlreW91XCA7CivotaTnv6Hnv6AgPCBha2FzaG91YmluXCA7Civpo5vooYzmmYLplpMgPCBoaWtvdWppa2FuXCA7CivnhrHmqZ/plqIgPCBuZXRzdWtpa2FuXCA7CivmkYLorbfohbogPCBzZXRzdWdvc2VuXCA7Civlr77mipfnrZYgPCB0YWlrb3VzYWt1XCA7Civov5Hku6PliocgPCBraW5kYWlnZWtpXCA7CivlvrnlupXnmoQgPCB0ZXR0ZWl0ZWtpXCA7Civlm5vlrZfnhp/oqp4gPCB5b2ppanVrdWdvXCA7CivmrbTku6Plj7IgPCByZWtpZGFpc2hpXCA7Civml6nopovooaggPCBoYXlhbWloeW91XCA7Civoh6jmqZ/lv5zlpIkgPCByaW5raW91aGVuXCA7CivmipXlsITop5IgPCB0b3VzaGFrYWt1XCA7CivlrprmnJ/kv53pmbogPCB0ZWlraWhva2VuXCA7Civnm6PnnaPogIUgPCBrYW50b2t1c2hhXCA7CivlhbHnlKPlnI8gPCBreW91c2Fua2VuXCA7Civlrp/ooYzkuK0gPCBqaWtrb3VjaHV1XCA7CivnjJvmlLvmkoMgPCBtb3Vrb3VnZWtpXCA7Civpm7vlrZDmrrsgPCBkZW5zaGlrYWt1XCA7CivpgKDoqIDpo5voqp4gPCB6b3VnZW5oaWdvXCA7CivmnZHlvbnloLQgPCBtdXJheWFrdWJhXCA7CivntLDpm6ogPCBzYXNhbWV5dWtpXCA7Civpmbjou5/poqggPCByaWt1bmFucHV1XCA7CivmlL/msrvoibIgPCBzZWlqaXNob2t1XCA7Civmr43lrZDojYkgPCBoYWhha29ndXNhXCA7CivnibnlvoXnlJ8gPCB0b2t1dGFpc2VpXCA7CivpoK3liIYgPCBrYXNoaXJhYnVuXCA7CivkuK3nm6TmiKYgPCBjaHV1YmFuc2VuXCA7Civkuovli5nnlKjlk4EgPCBqaW11eW91aGluXCA7CivoiJ7ouI/pnbQgPCBidXRvdWd1dHN1XCA7CivoqIDoqp7lnLDnkIYgPCBnZW5nb2NoaXJpXCA7CivlpKfpmarlr6kgPCBkYWliYWlzaGluXCA7CivnhKHnuIHku48gPCBtdWVuYm90b2tlXCA7CivmlpHniZsgPCBtYWRhcmF1c2hpXCA7Civnt5HoibIgPCByeW9rdXNob2t1XCA7Civoqo3lrproqLwgPCBuaW50ZWlzaG91XCA7Civnvo7ooZPmm7ggPCBiaWp1dHN1c2hvXCA7CivoqIjph4/ms5UgPCBrZWlyeW91aG91XCA7Civljp/mjK/li5UgPCBnZW5zaGluZG91XCA7CivlraboirjkvJogPCBnYWt1Z2Vpa2FpXCA7CivohILogqrlv4MgPCBzaGlib3VzaGluXCA7Civni7jppYLpo6kgPCB0YW51a2l1ZG9uXCA7CivmsLTnlKPluoEgPCBzdWlzYW5jaG91XCA7CivlkIjmhrLnmoQgPCBnb3VrZW50ZWtpXCA7CivkuLvkvZPnmoQgPCBzaHV0YWl0ZWtpXCA7Civniq/nvarooYzngrogPCBoYW56YWlrb3VpXCA7Civml6XmnIggPCBuaWNoaWdldHN1XCA7CivnqoPnm5fni4IgPCBzZXR0b3VreW91XCA7CivlpbPkuIDoiKwgPCBvbicnbmFpcHBhblwgOwor5rG65Yud57eaIDwga2Vzc2hvdXNlblwgOwor5pet5pelIDwga3lva3VqaXRzdVwgOwor6Ly46YCB5qmf6ZaiIDwgeXVzb3VraWthblwgOwor5Y+j5LiK5omLIDwga3VjaGlqb3V6dVwgOwor5bel5aC06ZW3IDwga291am91Y2hvdVwgOwor5peX5LqM5rWBIDwgaGF0YW5pcnl1dVwgOwor6KOc5Yqp6Imm6ImHIDwgaG9qb2thbnRlaVwgOwor5Y2z5L2N5byPIDwgc29rdWlzaGlraVwgOwor5LqU6YeM6Zyn5LitIDwgZ29yaW11Y2h1dVwgOwor5oeQ5p+U562WIDwga2FpanV1c2FrdVwgOwor5LiJ5pel5aSp5LiLIDwgbWlra2F0ZW5rYVwgOwor5bm75oOz5YqHIDwgZ2Vuc291Z2VraVwgOwor5Z+65pys5Y2Y5L2NIDwga2lob250YW4nJ2lcIDsKK+S6i+WLmeWupCA8IGppbXVzaGl0c3VcIDsKK+i2heimj+WJhyA8IGNob3VraXNva3VcIDsKK+aguOWutuaXjyA8IGtha3VrYXpva3VcIDsKK+WkleaciOWknCA8IHl1dWR6dWtleW9cIDsKK+eMtuS6iOacn+mWkyA8IHl1dXlva2lrYW5cIDsKK+Wkp+ihhui7iiA8IGRhaXNodXVzaGFcIDsKK+eEoeexjeiAhSA8IG11c2VraW1vbm9cIDsKK+aXpeeLrOS8iiA8IG5pY2hpZG9rdWlcIDsKK+mao+e1hCA8IHRvbmFyaWd1bWlcIDsKK+aCque/kuaFoyA8IGFrdXNodXVrYW5cIDsKK+ehq+mFuOmKhSA8IHJ5dXVzYW5kb3VcIDsKK+awtOeUo+WtpiA8IHN1aXNhbmdha3VcIDsKK+eDj+mHkSA8IGthcmFzdWdhbmVcIDsKK+W5uOemj+aEnyA8IGtvdWZ1a3VrYW5cIDsKK+izoOWEn+mHkSA8IGJhaXNob3VraW5cIDsKK+iri+iyoOW3peS6iyA8IHVrZW9pa291amlcIDsKK+mavOenkSA8IGhheWFidXNha2FcIDsKK+WFseeUo+WFmiA8IGt5b3VzYW50b3VcIDsKK+eJqeW/gyA8IG1vbm9nb2tvcm9cIDsKK+aXheaelSA8IHRhYmltYWt1cmFcIDsKK+e0hembgCA8IGJlbmlzdXp1bWVcIDsKK+eItuaWuSA8IGNoaWNoaWthdGFcIDsKK+W+jOmAgOaWh+WtlyA8IGtvdXRhaW1vamlcIDsKK+iIueadv+WhgCA8IGZ1bmFpdGFiZWlcIDsKK+WFqOWtpumAoyA8IHplbmdha3VyZW5cIDsKK+ebtOi1sOi3ryA8IGNob2t1c291cm9cIDsKK+eUt+WwiuWls+WNkSA8IGRhbnNvbmpvaGlcIDsKK+awt+ixhuiFkCA8IGtvb3JpZG91ZnVcIDsKK+WFpeWxheiAhSA8IG55dXVreW9zaGFcIDsKK+aXpemZsOiAhSA8IGhpa2FnZW1vbm9cIDsKK+e1tue4gee3miA8IHpldHN1ZW5zZW5cIDsKK+Wkp+aFiOWkp+aCsiA8IGRhaWppZGFpaGlcIDsKK+WhteiKpSA8IGNoaXJpYWt1dGFcIDsKK+WTgeipleS8miA8IGhpbnB5b3VrYWlcIDsKK+awtOeTtuW6pyA8IG1penVnYW1lemFcIDsKK+WQhOWbo+S9kyA8IGtha3VkYW50YWlcIDsKK+adpeadpemAsSA8IHJhaXJhaXNodXVcIDsKK+Wbm+WNgembgCA8IHNoaWp1dWthcmFcIDsKK+WmguS9leanmOW4qyA8IGlrYXNhbWFzaGlcIDsKK+mAmueUqOmWgCA8IHRzdXV5b3Vtb25cIDsKK+eIqualiuaenSA8IHRzdW1heW91amlcIDsKK+aVo+mrquWxiyA8IHNhbnBhdHN1eWFcIDsKK+agoeato+WItyA8IGtvdXNlaXp1cmlcIDsKK+m7kuecvOmPoSA8IGt1cm9tZWdhbmVcIDsKK+iHqOeVjOS6i+aVhSA8IHJpbmthaWppa29cIDsKK+mbqOeHlSA8IGFtYXRzdWJhbWVcIDsKK+WmueWpvyA8IGltb3V0b211a29cIDsKK+mAoOiIuealrSA8IHpvdXNlbmd5b3VcIDsKK+ims+WKh+S8miA8IGthbmdla2lrYWlcIDsKK+mbqueFmSA8IHl1a2lrZW11cmlcIDsKK+WFrOWus+eXhSA8IGtvdWdhaWJ5b3VcIDsKK+WPl+S/oeWBtCA8IGp1c2hpbmdhd2FcIDsKK+S8gealreW/gyA8IGtpZ3lvdXNoaW5cIDsKK+WboOaenOmWouS/giA8IGluZ2FrYW5rZWlcIDsKK+S/rue5leW3pSA8IHNodXV6ZW5rb3VcIDsKK+WNmOi6q+mKgyA8IHRhbnNoaW5qdXVcIDsKK+inkuibmSA8IHRzdW5vZ2FlcnVcIDsKK+eVsOeoruS6pOmFjSA8IGlzaHVrb3VoYWlcIDsKK+WknOmWk+WLpOWLmSA8IHlha2Fua2lubXVcIDsKK+eZvuW5tOebriA8IGh5YWt1bmVubWVcIDsKK+ayoeeQhuaDsyA8IGJvdHN1cmlzb3VcIDsKK+mdmeiEiOeCjiA8IGpvdW15YWt1ZW5cIDsKK+W+oeWbveiHquaFoiA8IG9rdW5pamltYW5cIDsKK+WFqOiDveiAhSA8IHplbicnbm91c2hhXCA7CivlkYnmnI3llYYgPCBnb2Z1a3VzaG91XCA7CivnnIHos4fmupAgPCBzaG91c2hpZ2VuXCA7Civpm4blkIjoq5YgPCBzaHV1Z291cm9uXCA7CivnpoHnhZnluK0gPCBraW4nJ2Vuc2VraVwgOwor5aSx5qWtIDwgc2hpdHN1Z3lvdVwgOwor6Kit56uLIDwgc2V0c3VyaXRzdVwgOwor6ZW35pa55L2TIDwgY2hvdWhvdXRhaVwgOwor5Y+X5L+h5Lq6IDwganVzaGluJyduaW5cIDsKK+aApeWBnOi7iiA8IGt5dXV0ZWlzaGFcIDsKK+mbkeeJqSA8IHphdHN1YnV0c3VcIDsKK+elnue1jOenkeWMuyA8IHNoaW5rZWlrYWlcIDsKK+eznuW6puiDuCA8IGt1c29kb2t5b3VcIDsKK+a2iOmYsuWjqyA8IHNob3Vib3VzaGlcIDsKK+acieeQhuW8jyA8IHl1dXJpc2hpa2lcIDsKK+e1guWIl+i7iiA8IHNodXVyZXNzaGFcIDsKK+aJgOacieagvCA8IHNob3l1dWtha3VcIDsKK+efpeimmuefpSA8IGNoaWtha3VjaGlcIDsKK+mBiuaSg+aJiyA8IHl1dWdla2lzaHVcIDsKK+ino+eGseWJpCA8IGdlbmV0c3V6YWlcIDsKK+W6l+Wxi+eJqSA8IHRlbicneWFtb25vXCA7CivnhrHng4ggPCBuZXRzdXJldHN1XCA7CivpgYrmkoPmiKYgPCB5dXVnZWtpc2VuXCA7CivlsbHmsLTplqMgPCBzYW5zdWlrYWt1XCA7CivoqqzmlZnluKsgPCBzZWtreW91c2hpXCA7Civls7bluJ3lm70gPCB0b3V0ZWlrb2t1XCA7CivljZHliqPmvKIgPCBoaXJldHN1a2FuXCA7Civpmo/npZ4gPCBrYW4nJ25hZ2FyYVwgOwor6KO46bqmIDwgaGFkYWthbXVnaVwgOwor5YWo55Sf5ravIDwgemVuc2hvdWdhaVwgOwor5YWo5Lya6KGGIDwgemVua2Fpc2h1dVwgOwor5Y+O5a656ICFIDwgc2h1dXlvdXNoYVwgOwor6Kej6ZuG5ZCIIDwga2Fpc2h1dWdvdVwgOwor55u45a++55qEIDwgc291dGFpdGVraVwgOwor55+z54Gw5LmzIDwgc2Vra2Fpbnl1dVwgOwor5YWx5pyJ6ICFIDwga3lvdXl1dXNoYVwgOwor5oyH5a6a5bitIDwgc2hpdGVpc2VraVwgOwor5ZWG5ZOB5ZCNIDwgc2hvdWhpbm1laVwgOwor5qC55pys55qEIDwga29ucG9udGVraVwgOwor576O6KGT5bGVIDwgYmlqdXRzdXRlblwgOwor57ie5qih5qeYIDwgc2hpbWFtb3lvdVwgOwor5raI6Ziy5ZujIDwgc2hvdWJvdWRhblwgOwor5Lm+6JGh6JCEIDwgaG9zaGlidWRvdVwgOwor6Zyc5pyIIDwgc2hpbW90c3VraVwgOwor57695qC56LuKIDwgaGFuZWd1cnVtYVwgOwor5a6M5YWo6Kmm5ZCIIDwga2FuemVuamlhaVwgOwor55m65YuV5qmfIDwgaGF0c3Vkb3VraVwgOwor6ZeY54mb5aOrIDwgdG91Z3l1dXNoaVwgOwor5ZCM5oOF56WoIDwgZG91am91aHlvdVwgOwor5YWl5Lya6YeRIDwgbnl1dWthaWtpblwgOwor54ax56Gs5YyWIDwgbmV0c3Vrb3VrYVwgOwor5aSi5p6VIDwgeXVtZW1ha3VyYVwgOwor5peF5b+DIDwgdGFiaWdva29yb1wgOwor6ZeY54mb5aC0IDwgdG91Z3l1dWpvdVwgOwor5Y+N5a++56WoIDwgaGFudGFpaHlvdVwgOwor54qs5L6NIDwgaW51emFtdXJhaVwgOwor5Ya35Y205ZmoIDwgcmVpa3lha3VraVwgOwor5YCf5YWl6YeRIDwga2FyaWlyZWtpblwgOwor5ZWG5ZOB5Yi4IDwgc2hvdWhpbmtlblwgOwor5YWs56S65Zyw5L6hIDwga291amljaGlrYVwgOwor5q2T5qW96KGXIDwga2FucmFrdWdhaVwgOwor56CU5YmK55ukIDwga2Vuc2FrdWJhblwgOwor5LiA5a2X5LiA5Y+lIDwgaWNoaWppaWtrdVwgOwor6K2Y5YilIDwgc2hpa2liZXRzdVwgOwor5Y6f55CG5Li7576pIDwgZ2VucmlzaHVnaVwgOwor5pys57GN5ZywIDwgaG9uc2VraWNoaVwgOwor5rCX5qyd55eHIDwga2l1dHN1c2hvdVwgOwor5oGL5aWz5oi/IDwga29pbnlvdWJvdVwgOwor6ISz56We57WMIDwgbm91c2hpbmtlaVwgOwor6Iag5Y6f55eFIDwga291Z2VuYnlvdVwgOwor54m95Yi255CDIDwga2Vuc2Vpa3l1dVwgOwor5paw6YCg6Ii5IDwgc2hpbnpvdXNlblwgOwor5oSf6Kaa54K5IDwga2Fua2FrdXRlblwgOwor5YG95ZCb5a2QIDwgbmlzZWt1bnNoaVwgOwor5rG65Yud54K5IDwga2Vzc2hvdXRlblwgOwor5aSa5pWw5rG6IDwgdGFzdXVrZXRzdVwgOwor5oSP6K2Y55qEIDwgaXNoaWtpdGVraVwgOwor5Y+N5bCE55qEIDwgaGFuc2hhdGVraVwgOwor5LiN5rS755m6IDwgZnVrYXBwYXRzdVwgOwor5Y+X6aCY6Ki8IDwganVyeW91c2hvdVwgOwor57SU5paH5a2mIDwganVuYnVuZ2FrdVwgOwor54m55oCl5Yi4IDwgdG9ra3l1dWtlblwgOwor5aa+5Ye6IDwgc2hvdXNodXRzdVwgOwor6buE6YeR6KGTIDwgb3Vnb25qdXRzdVwgOwor5Luu5YuY5a6aIDwga2FyaWthbmpvdVwgOwor57eR546JIDwgcnlva3VneW9rdVwgOwor54OP6JuHIDwga2FyYXN1aGViaVwgOwor6ZyK6ZW36aGeIDwgcmVpY2hvdXJ1aVwgOwor5YWo6Lqr5YOPIDwgemVuc2hpbnpvdVwgOwor5a+G6Ly45ZOBIDwgbWl0c3V5dWhpblwgOwor5pei6Kit57eaIDwga2lzZXRzdXNlblwgOwor5LqM6YCj5byPIDwgbmlyZW5zaGlraVwgOwor56ul6Kmx5L2c5a62IDwgZG91d2FzYWtrYVwgOwor5rib6YCf5p2QIDwgZ2Vuc29rdXphaVwgOwor5YWJ56OB5rCXIDwgaGlrYXJpamlraVwgOwor6Ki85piO5pu4IDwgc2hvdW1laXNob1wgOwor6ZaL5ouT5ZywIDwga2FpdGFrdWNoaVwgOwor5Luu5YWN6KixIDwga2FyaW1lbmt5b1wgOwor54m55Ye6IDwgdG9rdXNodXRzdVwgOwor57SZ6KKLIDwga2FtaWJ1a3Vyb1wgOwor5Y2w6LGh55qEIDwgaW5zaG91dGVraVwgOwor5pen5pWZ5b6SIDwga3l1dWt5b3V0b1wgOwor6LKo54mp5L6/IDwga2Ftb3RzdWJpblwgOwor5aao5a6z6KGM54K6IDwgYm91Z2Fpa291aVwgOwor6Zuq5p+zIDwgeXVraXlhbmFnaVwgOwor5pyJ5pyb5qCqIDwgeXV1Ym91a2FidVwgOwor5oWj5L6L55qEIDwga2FucmVpdGVraVwgOwor6Kaz55u45a2mIDwga2Fuc291Z2FrdVwgOwor6IKJ55So56iuIDwgbmlrdXlvdXNodVwgOwor6YGL5Za257WM6LK7IDwgdW4nJ2Vpa2VpaGlcIDsKK+aYpeS8kSA8IGhhcnV5YXN1bWlcIDsKK+WfuuWcsOWxgCA8IGtpY2hpa3lva3VcIDsKK+mBqeW/nOeXhyA8IHRla2lvdXNob3VcIDsKK+S4remrmOeUnyA8IGNodXVrb3VzZWlcIDsKK+S4i+a6luWCmSA8IHNoaXRhanVuYmlcIDsKK+S/oemgvOaEnyA8IHNoaW5yYWlrYW5cIDsKK+eZuumFteS5syA8IGhha2tvdW55dXVcIDsKK+aXheiKuOS6uiA8IHRhYmlnZWluaW5cIDsKK+S6uumbquW0qSA8IGhpdG9uYWRhcmVcIDsKK+S4u+S/oeWPtyA8IHNodXNoaW5nb3VcIDsKK+S6jOmDqOWQiOWljyA8IG5pYnVnYXNzb3VcIDsKK+S/oeWlieiAhSA8IHNoaW5wb3VzaGFcIDsKK+WQjeiqieavgOaQjSA8IG1laXlva2lzb25cIDsKK+Wwuuiyq+azlSA8IHNoYWtrYW5ob3VcIDsKK+e+juihk+WTgSA8IGJpanV0c3VoaW5cIDsKK+iomOmMsuaYoOeUuyA8IGtpcm9rdWVpZ2FcIDsKK+mAmuS/oeiyuyA8IHRzdXVzaGluaGlcIDsKK+S/oemgvOaApyA8IHNoaW5yYWlzZWlcIDsKK+aEn+immuavmyA8IGthbmtha3Vtb3VcIDsKK+mghuW/nOaApyA8IGp1bicnbm91c2VpXCA7CivluLjnv5LogIUgPCBqb3VzaHV1c2hhXCA7Civnvo7ooZPlj7IgPCBiaWp1dHN1c2hpXCA7CivmqoDpgqPlr7ogPCBkYW4nJ25hZGVyYVwgOwor5Y2D5q2z6aO0IDwgY2hpdG9zZWFtZVwgOwor6KO95p2Q5qWtIDwgc2VpemFpZ3lvdVwgOwor5paw5qmf6Lu4IDwgc2hpbmtpamlrdVwgOwor6IKJ6aWF6aCtIDwgbmlrdW1hbmp1dVwgOwor5rC06LOH5rqQIDwgbWl6dXNoaWdlblwgOwor55m96bOl5bqnIDwgaGFrdWNob3V6YVwgOwor55m+5YiG5q+UIDwgaHlha3VidW5oaVwgOwor6Kmm6YeR55+zIDwgc2hpa2luc2VraVwgOwor6YGL5pCs566h55CGIDwgdW5wYW5rYW5yaVwgOwor5YSq562J6LOeIDwgeXV1dG91c2hvdVwgOwor5Yy756eR5aSn5a2mIDwgaWthZGFpZ2FrdVwgOwor5aSn6KGG57SZIDwgdGFpc2h1dXNoaVwgOwor6Iqx6KaL5pmCIDwgaGFuYW1pZG9raVwgOwor5Yqg5rib5LmX6ZmkIDwga2FnZW5qb3Vqb1wgOwor5aGX5pOm5YmkIDwgdG9zYXRzdXphaVwgOwor6Zi/54mH5oim5LqJIDwgYWhlbnNlbnNvdVwgOwor5pyo6KO95ZOBIDwgbW9rdXNlaWhpblwgOwor5YaF6KeS55CDIDwgbmFpa2Fra3l1dVwgOwor6aWS6IiM5a62IDwgam91emV0c3VrYVwgOwor54ax5Yem55CGIDwgbmV0c3VzaG9yaVwgOwor6Kem55m6IDwgc2hva3VoYXRzdVwgOwor5paw5bm557eaIDwgc2hpbmthbnNlblwgOwor5YuV5ZCR6KGoIDwgZG91a291aHlvdVwgOwor5Lqk6Z+/6KmpIDwga291a3lvdXNoaVwgOwor5oyo5ou254q2IDwgYWlzYXRzdWpvdVwgOwor6Zml5rKh5rmWIDwga2FuYm90c3Vrb1wgOwor5ZSv5ZSv6Ku+6Ku+IDwgaWlkYWt1ZGFrdVwgOwor5L+h5aSp57+BIDwgc2hpbnRlbicnb3VcIDsKK+i1t+mbu+WKmyA8IGtpZGVucnlva3VcIDsKK+mOrumtguelrSA8IGNoaW5rb25zYWlcIDsKK+iItuadpeWTgSA8IGhha3VyYWloaW5cIDsKK+aJi+WhqeeavyA8IHRlc2hpb3phcmFcIDsKK+m7kuW6lee/syA8IGt1cm9zb2tvaGlcIDsKK+WtpueUn+W4vSA8IGdha3VzZWlib3VcIDsKK+e2meeItiA8IG1hbWFjaGljaGlcIDsKK+awtOagveWfuSA8IG1penVzYWliYWlcIDsKK+WWtumAoOeJqSA8IGVpem91YnV0c3VcIDsKK+aXpeeFp+aoqSA8IG5pc3Nob3VrZW5cIDsKK+ebuOWvvuiqpOW3riA8IHNvdXRhaWdvc2FcIDsKK+WFiemHj+WtkCA8IGtvdXJ5b3VzaGlcIDsKK+S4h+aEmuevgCA8IGJhbmd1c2V0c3VcIDsKK+iDveeLguiogCA8IG5vdWt5b3VnZW5cIDsKK+mjsumFkumBi+i7oiA8IGluc2h1dW50ZW5cIDsKK+eDj+e0mSA8IGthcmFzdWdhbWlcIDsKK+aUr+aMgeWKmyA8IHNoaWppcnlva3VcIDsKK+e1seioiOihqCA8IHRvdWtlaWh5b3VcIDsKK+WFiOWPsuWtpiA8IHNlbnNoaWdha3VcIDsKK+aMh+WQjeippuWQiCA8IHNoaW1laWppYWlcIDsKK+aXpeS7jyA8IG5pY2hpZnV0c3VcIDsKK+ehq+mFuOe0mSA8IHJ5dXVzYW5zaGlcIDsKK+aAp+W3ruWIpSA8IHNlaXNhYmV0c3VcIDsKK+mdtOS4iyA8IGt1dHN1c2hpdGFcIDsKK+acrOWbveS6uiA8IGhvbmdva3VqaW5cIDsKK+W3qOimlueahCA8IGt5b3NoaXRla2lcIDsKK+i7oui9jeapnyA8IHRlbnRldHN1a2lcIDsKK+ihqOW/oOeikSA8IGh5b3VjaHV1aGlcIDsKK+WPjuizhOe9qiA8IHNodXV3YWl6YWlcIDsKK+iWrOWJpOW4qyA8IHlha3V6YWlzaGlcIDsKK+W+jOimi+S6uiA8IGtvdWtlbicnbmluXCA7CivpgKPnlKjlvaIgPCByZW4nJ3lvdWtlaVwgOwor5L2Z55m95rOoIDwgeW9oYWt1Y2h1dVwgOwor5Lyd57Wx55qEIDwgZGVudG91dGVraVwgOwor57iu5bC6IDwgc2h1a3VzaGFrdVwgOwor5b6S5byf5Yi25bqmIDwgdG90ZWlzZWlkb1wgOwor6Kaq5qip6ICFIDwgc2hpbmtlbnNoYVwgOwor57SL57695LqM6YeNIDwgbW9uaGFidXRhZVwgOwor5YaG5aSp5LqVIDwgbWFydXRlbmpvdVwgOwor5aWz5Li7IDwgb24nJ25hYXJ1amlcIDsKK+WwkeW5tOmZoiA8IHNob3VuZW4nJ2luXCA7CivmrbTpnZLngq0gPCByZWtpc2VpdGFuXCA7CivosqjluaPliLbluqYgPCBrYWhlaXNlaWRvXCA7CivooI/lt6XoiLkgPCBrYW5pa291c2VuXCA7Civnm67lhavliIYgPCBtZWhhY2hpYnVuXCA7Civlm5vljYHogqkgPCBzaGlqdXVrYXRhXCA7Civmpb3oprPnmoQgPCByYWtrYW50ZWtpXCA7Civlv4PlgZzmraIgPCBzaGludGVpc2hpXCA7CivpgJ/lsITnoLIgPCBzb2t1c2hhaG91XCA7CivmlbXlpLEgPCB0ZWtpc2hpdHN1XCA7Civml6XlkozkuIvpp4QgPCBoaXlvcmlnZXRhXCA7CivmlrDlu7rmnZAgPCBzaGlua2VuemFpXCA7CivkuI3lv4XopoEgPCBmdWhpdHN1eW91XCA7CivmiYHpnZLnn7MgPCBoZW5zZWlzZWtpXCA7Civlj4znkIPoj4wgPCBzb3VreXV1a2luXCA7CivkuJbnlYzlubPlkowgPCBzZWthaWhlaXdhXCA7CivmsLTnvornvq4gPCBtaXp1eW91a2FuXCA7CivmipzmnKznmoQgPCBiYXBwb250ZWtpXCA7CivmlZnlrqQgPCBreW91c2hpdHN1XCA7CivljZjnmbrmqZ8gPCB0YW5wYXRzdWtpXCA7CivnhKHnkIbplqLmlbAgPCBtdXJpa2Fuc3V1XCA7Civou6LpgIHlhYggPCB0ZW5zb3VzYWtpXCA7CivlhaXkvJrogIUgPCBueXV1a2Fpc2hhXCA7CivkuLjmnKjoiLkgPCBtYXJ1a2lidW5lXCA7Civpn7PlkJDmnJfmnJcgPCBvbnRvcm91cm91XCA7CivluIzph4jmtrIgPCBraXNoYWt1ZWtpXCA7CivmooXpm6jliY3nt5ogPCBiYWl1emVuc2VuXCA7CivmnIjmm5zml6UgPCBnZXRzdXlvdWJpXCA7CivmnIDos4Pms5UgPCBzYWljaGluaG91XCA7Civpm7vmsJfmmYLoqIggPCBkZW5raWRva2VpXCA7CivpnanmlrDmtL4gPCBrYWt1c2hpbmhhXCA7Civntbbmu4UgPCB6ZXRzdW1ldHN1XCA7CivkuozljYHlm5vml6UgPCBuaWp1dXlva2thXCA7CivmiKbnl4XmrbsgPCBzZW5ieW91c2hpXCA7CivnlLfmgKfnmoQgPCBkYW5zZWl0ZWtpXCA7CivkubPphbjoj4wgPCBueXV1c2Fua2luXCA7CivliY3nhafnga8gPCB6ZW5zaG91dG91XCA7CivmgrLmrYzmhbfmhaggPCBoaWtha291Z2FpXCA7Civohbjmjbvou6IgPCBjaG91bmVudGVuXCA7CivopqrliIbmoKogPCBveWFidW5rYWJ1XCA7CivlrabnlKjlk4EgPCBnYWt1eW91aGluXCA7CivnibnmrormgKcgPCB0b2t1c2h1c2VpXCA7CivljZjoibLnlLsgPCB0YW5zaG9rdWdhXCA7Civku5Xnq4vliLggPCBzaGl0YXRla2VuXCA7CivkuojpmLLljLvlraYgPCB5b2JvdWlnYWt1XCA7CivlvZPmnJ/liKnnm4ogPCB0b3VraXJpZWtpXCA7CivopoHnn7MgPCBrYW5hbWVpc2hpXCA7Civnmq7kuIvohILogqogPCBoaWthc2hpYm91XCA7CivpmbDlvIHmhbYgPCBrYWdlYmVua2VpXCA7Civmt7fooYDlhZAgPCBrb25rZXRzdWppXCA7Civosqnlo7LlhYMgPCBoYW5iYWltb3RvXCA7CivluLjnv5Lniq8gPCBqb3VzaHV1aGFuXCA7Civpmbbno4HlmajlupcgPCB0b3VqaWtpdGVuXCA7CivmuIXmtrzliaQgPCBzZWlyeW91emFpXCA7CivmnIDlsI/lgKQgPCBzYWlzaG91Y2hpXCA7CivliIfnrKblo7LloLQgPCBraXBwdXVyaWJhXCA7Civoo7jkvZPkuLvnvqkgPCByYXRhaXNodWdpXCA7CivmsLTml4/ppKggPCBzdWl6b2t1a2FuXCA7CivlhbHniq/ogIUgPCBreW91aGFuc2hhXCA7Civlr7/lj7jpo68gPCBzdXNoaW1lc2hpXCA7CivmgKXou6Lmj5sgPCBreXV1dGVua2FuXCA7Civmi5vlvoXnirYgPCBzaG91dGFpam91XCA7CivmiZPmkrLlgrcgPCBkYWJva3VzaG91XCA7Civpn7PmqJnmloflrZcgPCBvbnB5b3Vtb2ppXCA7CivnibnlvoXliLggPCB0b2t1dGFpa2VuXCA7Civmr5Lkurrlj4IgPCBkb2t1bmluamluXCA7CivkuI3mraPopo/miKYgPCBmdXNlaWtpc2VuXCA7CivlpKnnq7rokbUgPCB0ZW5qaWt1YW9pXCA7CivlpbPkuJbluK8gPCBvbicnbmFqb3RhaVwgOwor5Lq66ZaT55qEIDwgbmluZ2VudGVraVwgOwor6Ki65pat5pu4IDwgc2hpbmRhbnNob1wgOwor6Jia6IuU5a2mIDwgc2VudGFpZ2FrdVwgOwor57W25a++5L2N572uIDwgemV0dGFpaWNoaVwgOwor5Y6f56i/5paZIDwgZ2Vua291cnlvdVwgOwor55uj552j5a6YIDwga2FudG9rdWthblwgOwor5ZWG5YuZ55yBIDwgc2hvdW11c2hvdVwgOwor5a6j5ZGK5pu4IDwgc2Vua29rdXNob1wgOwor5aSc5aSc5LitIDwgeW9ydXlvbmFrYVwgOwor6KOP6KmxIDwgdXJhYmFuYXNoaVwgOwor6YCa5L+h57C/IDwgdHN1dXNoaW5ib1wgOwor5aCG56mN5bKpIDwgdGFpc2VraWdhblwgOwor5oqR55WZ5omAIDwgeW9rdXJ5dXVqb1wgOwor5pKe5pyo5p2WIDwgc2h1bW9rdXp1ZVwgOwor6buE6YeR546HIDwgb3Vnb25yaXRzdVwgOwor5aCG56mN5bGkIDwgdGFpc2VraXNvdVwgOwor5ZCI5ZSx5ZujIDwgZ2Fzc2hvdWRhblwgOwor5aW95pW15omLIDwga291dGVraXNodVwgOwor57Ch5piT5L+d6Zm6IDwga2FuJydpaG9rZW5cIDsKK+eyieiWrCA8IGtvbmFndXN1cmlcIDsKK+aWh+eroOmhjCA8IGJ1bnNob3VkYWlcIDsKK+WvoemgreaUv+ayuyA8IGthdG91c2VpamlcIDsKK+mHkeeJqeWxiyA8IGthbmFtb25veWFcIDsKK+Wbo+iPiuelrSA8IGRhbmdpa3VzYWlcIDsKK+e3qeihnea2siA8IGthbnNob3Vla2lcIDsKK+WvhOWuv+iIjiA8IGtpc2h1a3VzaGFcIDsKK+e4ruWItyA8IHNodWt1c2F0c3VcIDsKK+a9nOacm+mPoSA8IHNlbmJvdWt5b3VcIDsKK+aWsOW3pue/vCA8IHNoaW5zYXlva3VcIDsKK+mBoeWPiueahCA8IHNva3l1dXRla2lcIDsKK+WQjOaDheW/gyA8IGRvdWpvdXNoaW5cIDsKK+S4i+eoveWPpCA8IHNoaXRhZ2Vpa29cIDsKK+ertuS6ieiAhSA8IGt5b3Vzb3VzaGFcIDsKK+WVhuW6l+ihlyA8IHNob3V0ZW5nYWlcIDsKK+eOieaJi+eusSA8IHRhbWF0ZWJha29cIDsKK+Wcn+ixmiA8IHRzdWNoaWJ1dGFcIDsKK+S4iuWNiui6qyA8IGpvdWhhbnNoaW5cIDsKK+S4i+awtOWHpueQhiA8IGdlc3Vpc2hvcmlcIDsKK+a4rOWumuazlSA8IHNva3V0ZWlob3VcIDsKK+mZjeWcp+WJpCA8IGtvdWF0c3V6YWlcIDsKK+aApeWCvuaWnCA8IGt5dXVrZWlzaGFcIDsKK+S4oeajsumhniA8IHJ5b3VzZWlydWlcIDsKK+acgOS4iue0miA8IHNhaWpvdWt5dXVcIDsKK+WBg+aciOWIgCA8IGVuZ2V0c3V0b3VcIDsKK+eci+itt+WNkiA8IGthbmdvc290c3VcIDsKK+iomOaGtue0oOWtkCA8IGtpb2t1c29zaGlcIDsKK+mfs+WjsOiomOWPtyA8IG9uc2Vpa2lnb3VcIDsKK+WSjOW5s+S8muitsCA8IHdhaGVpa2FpZ2lcIDsKK+e9q+e3muihqCA8IGtlaXNlbmh5b3VcIDsKK+egtOWjiuS4u+e+qSA8IGhha2Fpc2h1Z2lcIDsKK+mHneWcn+ernCA8IGhhcmltb2d1cmFcIDsKK+Wuh+WumeWfuuWcsCA8IHVjaHV1a2ljaGlcIDsKK+eBr+WPsOWuiCA8IHRvdWRhaW1vcmlcIDsKK+S7ruWFjeeKtiA8IGthcmltZW5qb3VcIDsKK+W8vuiWrOW6qyA8IGRhbicneWFrdWtvXCA7CivlkIjms5XnmoQgPCBnb3Vob3V0ZWtpXCA7CivkuI3lj6/nn6Xoq5YgPCBmdWthY2hpcm9uXCA7Civoh6rooZvmiYvmrrUgPCBqaWVpc2h1ZGFuXCA7CivmjKvmipjmhJ8gPCB6YXNldHN1a2FuXCA7CivlsI/lo7LlgKTmrrUgPCBrb3VyaW5lZGFuXCA7CivmlZHlh7ogPCBreXV1c2h1dHN1XCA7Civlo4HlnJ8gPCBrYWJldHN1Y2hpXCA7CivotaTmlrDogZ4gPCBha2FzaGluYnVuXCA7CivohqDnnYDoqp4gPCBrb3VjaGFrdWdvXCA7CivntYLmraLlvaIgPCBzaHV1c2hpa2VpXCA7Civlh7rmuK/oiLkgPCBzaHVra291c2VuXCA7CivovLjlhaXpoY0gPCB5dW55dXVnYWt1XCA7CivnlLLmrrvpoZ4gPCBrb3VrYWt1cnVpXCA7CivluILloLTopo/mqKEgPCBzaGlqb3VraWJvXCA7CivorbDlk6Hnq4vms5UgPCBnaWlucmlwcG91XCA7Civpmpzlo4HnlLsgPCBzaG91aGVraWdhXCA7CivmurbmjqXmqZ8gPCB5b3VzZXRzdWtpXCA7CivkuZfntYTlk6EgPCBub3Jpa3VtaWluXCA7CivohY7oh5Pnl4UgPCBqaW56b3VieW91XCA7Civlj6/mkKzlvI8gPCBrYWhhbnNoaWtpXCA7CivlgaXnrYblrrYgPCBrZW5waXRzdWthXCA7CivmraPkuK3nt5ogPCBzZWljaHV1c2VuXCA7CivljYPlubTplpMgPCBzZW4nJ25lbmthblwgOwor5qOS56OB55+zIDwgYm91amlzaGFrdVwgOwor6Kaz6LOe6a2aIDwga2Fuc2hvdWd5b1wgOwor56We5a2m5qChIDwgc2hpbmdha2tvdVwgOwor5L2c5qWt5pyNIDwgc2FneW91ZnVrdVwgOwor55m6552A5omAIDwgaGF0Y2hha3Vqb1wgOwor6Kaq6L+R5oSfIDwgc2hpbmtpbmthblwgOwor5Lmx5rOl5rWBIDwgcmFuZGVpcnl1dVwgOwor5b2T55u05ZOhIDwgdG91Y2hva3VpblwgOwor5a2m57Sa5aeU5ZOhIDwgZ2Fra3l1dWlpblwgOwor57Wx6KiI55qEIDwgdG91a2VpdGVraVwgOwor57WQ5pyrIDwga2V0c3VtYXRzdVwgOwor6Iq46KGT5a62IDwgZ2VpanV0c3VrYVwgOwor546E6Zai5YWIIDwgZ2Vua2Fuc2FraVwgOwor6Kaq5p+xIDwgb3lhYmFzaGlyYVwgOwor5rex5rW36a2aIDwgc2hpbmthaWd5b1wgOwor5ZCM5b+X55qEIDwgZG91c2hpdGVraVwgOwor57Kb57KbIDwgc2h1a3VzaHVrdVwgOwor5L6h5Y2D6YeRIDwgYXRhaXNlbmtpblwgOwor6K2w5Lya5Li7576pIDwgZ2lrYWlzaHVnaVwgOwor5Lmd5Zue5oimIDwga3l1dWthaXNlblwgOwor5Z+656SO56eR5a2mIDwga2lzb2thZ2FrdVwgOwor5Zu96KibIDwga3VuaW5hbWFyaVwgOwor5o2c5p+75pys6YOoIDwgc291c2Fob25idVwgOwor5Y2K5rC45LmFIDwgaGFuJydlaWt5dXVcIDsKK+mbkeW9ueWppiA8IHphdHN1ZWtpZnVcIDsKK+WGt+WHjealrSA8IHJlaXRvdWd5b3VcIDsKK+e2v+WfgyA8IHdhdGFib2tvcmlcIDsKK+Wuh+WumeaOouafuyA8IHVjaHV1dGFuc2FcIDsKK+WEkuaVmeeahCA8IGp1a3lvdXRla2lcIDsKK+imquaXpSA8IHNoaW4nJ25pY2hpXCA7CivphZsgPCBzYWtlbm9tb3RvXCA7Civmj5rpmbjoiaYgPCB5b3VyaWt1a2FuXCA7Civph43orLnmhY4gPCBqdXVraW5zaGluXCA7Civlh43osYbohZAgPCBzaGltaWRvdWZ1XCA7CivmsLjosLflnJIgPCBuYWdhdGFuaWVuXCA7Civkuozmp73lvI8gPCBuaXNvdXNoaWtpXCA7Civnm7jkuZfnqY0gPCBzb3Vqb3VzZWtpXCA7Civoj4zpoZ7lraYgPCBraW5ydWlnYWt1XCA7CivmlrDliIrmm7ggPCBzaGlua2Fuc2hvXCA7CivpnZLlsJHlubQgPCBzZWlzaG91bmVuXCA7CivmjqjpgLLogIUgPCBzdWlzaGluc2hhXCA7CivngbznhrEgPCBzaGFrdW5ldHN1XCA7CivliJfluK3ogIUgPCByZXNzZWtpc2hhXCA7Civlm73nlKPlk4EgPCBrb2t1c2FuaGluXCA7Civmh5Dml6foq4cgPCBrYWlreXV1ZGFuXCA7Civmnq/ojYnnhrEgPCBrb3NvdW5ldHN1XCA7Civpm4fkuLsgPCB5YXRvaW51c2hpXCA7CivkuK3nlLLmnb8gPCBjaHV1a2FucGFuXCA7Civln4vkvI/mra8gPCBtYWlmdWt1c2hpXCA7CivlhoXnt5LkuosgPCBuYWlzaG9nb3RvXCA7CivkuIDnrYnljZIgPCBpdHRvdXNvdHN1XCA7CivkupzpurvnuZTniakgPCBhbWFvcmltb25vXCA7CivnpZ7ku6PmnYkgPCBqaW5kYWlzdWdpXCA7CivlgKTltanmoKogPCBuZWdhc2FrYWJ1XCA7CivmlL/msrvlipsgPCBzZWlqaXJ5b2t1XCA7CivnrZTnlLPmm7ggPCB0b3VzaGluc2hvXCA7CivpoIbluo/kuI3lkIwgPCBqdW5qb2Z1ZG91XCA7CivntpnlqJggPCBtYW1hbXVzdW1lXCA7CivkubHlv4PogIUgPCByYW5zaGluc2hhXCA7CivntYzmuIjmj7TliqkgPCBrZWl6YWllbmpvXCA7CivnhLzlpLEgPCBzaG91c2hpdHN1XCA7CivkurrplpPmpa0gPCBuaW5nZW53YXphXCA7CivntK/nrpfmuKnluqYgPCBydWlzYW5vbmRvXCA7CivlhbHorIDogIUgPCBreW91Ym91c2hhXCA7CivmnaXos5PluK0gPCByYWloaW5zZWtpXCA7CivoiJ7ouI/mm7IgPCBidXRvdWt5b2t1XCA7Civkv67ooYzogIUgPCBzaHVneW91c2hhXCA7Civls7bmoLnnnIwgPCBzaGltYW5la2VuXCA7CivlvLfnoazoq5YgPCBreW91a291cm9uXCA7Civms5Xmsrvlm70gPCBob3VjaGlrb2t1XCA7CivkuI3lvpfnrZYgPCBmdXRva3VzYWt1XCA7CivoqLPlh7ogPCB5YWt1c2h1dHN1XCA7Civng4jml6UgPCByZXRzdWppdHN1XCA7CivlnKjnsbPkuK0gPCB6YWliZWljaHV1XCA7CivljL/lkI3mgKcgPCB0b2t1bWVpc2VpXCA7CivnmbvlsbHpnbQgPCB0b3phbmd1dHN1XCA7CivmtarmvKvkuLvnvqkgPCByb21hbnNodWdpXCA7CivluqfmlbfniaIgPCB6YXNoaWtpcm91XCA7CivnpZ7moLzljJYgPCBzaGlua2FrdWthXCA7CivotaTlpJbnt5ogPCBzZWtpZ2Fpc2VuXCA7CivolqznlKjphZIgPCB5YWt1eW91c2h1XCA7CivntZDmoLjoj4wgPCBrZWtrYWt1a2luXCA7Civnt6Dku5ggPCBzaGltZXRzdWtlXCA7CivojYnlsaXomasgPCB6b3VyaW11c2hpXCA7Civmraboo4Xpg73luIIgPCBidXNvdXRvc2hpXCA7CivlpKfooYbmgKcgPCB0YWlzaHV1c2VpXCA7Civlr4Tlrr/nlJ8gPCBraXNodWt1c2VpXCA7CivmmIfmsZ7msLQgPCBzaG91a291c3VpXCA7CivmrabogIXmhYQgPCBtdXNoYWJ1cnVpXCA7Civmlofnq6Doq5YgPCBidW5zaG91cm9uXCA7Civnibnpgbjlk4EgPCB0b2t1c2VuaGluXCA7Civov5HopqrogIUgPCBraW5zaGluc2hhXCA7CivopIfmlbDlvaIgPCBmdWt1c3V1a2VpXCA7Civlub3pgoPlooMgPCB5dXVzdWlreW91XCA7Civlho3mipXnpaggPCBzYWl0b3VoeW91XCA7CivkuI3mtLvli5UgPCBmdWthdHN1ZG91XCA7Civlhajlr67liLYgPCB6ZW5yeW91c2VpXCA7CivlubPlkozlm73lrrYgPCBoZWl3YWtva2thXCA7Civov73mgrzkvJogPCB0c3VpdG91a2FpXCA7CivpgZPot6/lnLDlm7MgPCBkb3Vyb2NoaXp1XCA7CivnrZLps6UgPCB0c3V0c3Vkb3JpXCA7Civnmb3lhbXmiKYgPCBoYWt1aGVpc2VuXCA7Civoq4vmsYLmqKkgPCBzZWlreXV1a2VuXCA7Civlv6DpnIrloZQgPCBjaHV1cmVpdG91XCA7CivpmpnplpPpoqggPCBzdWtpbWFrYXplXCA7CivlhbHmnInlnLAgPCBreW91eXV1Y2hpXCA7CivniYfngrrmm78gPCBrYXRhZ2F3YXNlXCA7Civnt6nooZ3lvIEgPCBrYW5zaG91YmVuXCA7Civlrr/moLnojYkgPCBzaHVra29uc291XCA7CivlpKfnq4vogIUgPCBvb2RhdGVtb25vXCA7Civms7DlsbHmnKggPCB0YWlzYW5ib2t1XCA7Civns7jnirbomasgPCBzaGlqb3VjaHV1XCA7CivntbbnuIHkvZMgPCB6ZXRzdWVudGFpXCA7Civph4zoqIDokYkgPCBzYXRva290b2JhXCA7CivlvqHmnLHljbDoiLkgPCBnb3NodWluc2VuXCA7Civos7zoqq3ogIUgPCBrb3Vkb2t1c2hhXCA7Civlo7Losrfpq5ggPCBiYWliYWlkYWthXCA7CivmjLrpgLLpmoogPCB0ZWlzaGludGFpXCA7CivoqZQgPCBtaWtvdG9ub3JpXCA7CivohLHmsLTnl4cgPCBkYXNzdWlzaG91XCA7Civli6fpgLLluLMgPCBrYW5qaW5jaG91XCA7Civmi6HlvLXljJYgPCBrYWt1Y2hvdWthXCA7CivmrrrkurrprLwgPCBzYXRzdWppbmtpXCA7CivmtYHli5XmgKcgPCByeXV1ZG91c2VpXCA7Civlm5vph43llLEgPCBzaGlqdXVzaG91XCA7CivmlZnogrLogIUgPCBreW91aWt1c2hhXCA7Civlj43lr77lgbQgPCBoYW50YWlnYXdhXCA7CivnkLTkuIDlvLUgPCBrb3RvaXRjaG91XCA7CivlhoXlnKjnmoQgPCBuYWl6YWl0ZWtpXCA7CivkuInmrrXot7MgPCBzYW5kYW50b2JpXCA7Civpo5vouo3nmoQgPCBoaXlha3V0ZWtpXCA7CivmiYvplbfnjL8gPCB0ZW5hZ2F6YXJ1XCA7CivogIHnnLzpj6EgPCByb3VnYW5reW91XCA7Civku67lh6bliIYgPCBrYXJpc2hvYnVuXCA7CivooovogLMgPCBmdWt1cm9taW1pXCA7CivlhajkurrmoLwgPCB6ZW5qaW5rYWt1XCA7CivliIbms4zniakgPCBidW5waWJ1dHN1XCA7Civoq4vmsYLmm7ggPCBzZWlreXV1c2hvXCA7CivntZDlrp8gPCBrZXRzdWppdHN1XCA7CivkuI3msbrmlq0gPCBmdWtldHN1ZGFuXCA7CivlhYjlhYjpgLEgPCBzZW5zZW5zaHV1XCA7Civoh7Tlkb3nmoQgPCBjaGltZWl0ZWtpXCA7CivkubPnn7Poi7EgPCBueXV1c2VraWVpXCA7CivosqHmlL/lraYgPCB6YWlzZWlnYWt1XCA7Civntprlh7ogPCB6b2t1c2h1dHN1XCA7CivlpJzpg47oh6rlpKcgPCB5YXJvdWppZGFpXCA7Civpo7Lpo5/lupcgPCBpbnNob2t1dGVuXCA7Civpg6jliIblkKblrpogPCBidWJ1bmhpdGVpXCA7CivntJnoo73lk4EgPCBrYW1pc2VpaGluXCA7CivonZ8gPCBoYXJpbmV6dW1pXCA7CivorJvlkozkvJrorbAgPCBrb3V3YWthaWdpXCA7Civnt6jntYTmqZ/morAgPCBoZW5zb2tpa2FpXCA7Civms5XlvovmoYggPCBob3VyaXRzdWFuXCA7CivljYrnm7Lnl4cgPCBoYW5tb3VzaG91XCA7CivnoZ3phbjpioAgPCBzaG91c2FuZ2luXCA7CivljLvnmYLlmajmorAgPCBpcnlvdWtpa2FpXCA7CivpmLLnt4/nnIEgPCBib3Vzb3VzaG91XCA7CivmraPopo/liIbluIMgPCBzZWlraWJ1bnB1XCA7CivpgIbmr5TkvosgPCBneWFrdWhpcmVpXCA7CivmipXmm7jnrrEgPCB0b3VzaG9iYWtvXCA7CivkvJrlk6HlkI3nsL8gPCBrYWlpbm1laWJvXCA7Civmv4PntKsgPCBrb211cmFzYWtpXCA7Civln47kuIvnlLogPCBqb3VrYW1hY2hpXCA7CivnibnliKXlp5QgPCB0b2t1YmV0c3VpXCA7CivmnZHoip3lsYUgPCBtdXJhc2hpYmFpXCA7Civntpnmga/lrZAgPCBtYW1hbXVzdWtvXCA7Civnmbrkv6Hpn7MgPCBoYXNzaGluJydvblwgOwor5aSp5aSJ5Zyw55WwIDwgdGVucGVuY2hpaVwgOwor5pyJ5Y+y5Lul5p2lIDwgeXV1c2hpaXJhaVwgOwor5Zub5q2755CDIDwgc2hpc2hpa3l1dVwgOwor54yu6YeR566xIDwga2Vua2luYmFrb1wgOwor5oim55Wl5a62IDwgc2Vucnlha3VrYVwgOwor5YWs6IG05LyaIDwga291Y2hvdWthaVwgOwor5rqd6bygIDwgZG9idW5lenVtaVwgOwor6JCZIDwga3V0YWJpcmVydVwgOwor6KSH5pWw5ZueIDwgZnVrdXN1dWthaVwgOwor5Lya6KiI5a2mIDwga2Fpa2VpZ2FrdVwgOwor57Ch55Wl5YyWIDwga2Fucnlha3VrYVwgOwor57Wm6Zu757eaIDwga3l1dWRlbnNlblwgOwor5ZCJ56Wl5aSpIDwga2lzc2hvdXRlblwgOwor5L+d6K236Zai56iOIDwgaG9nb2thbnplaVwgOwor5pyq5biw6YKE6ICFIDwgbWlraWthbnNoYVwgOwor5b6h5b2x55+zIDwgbWlrYWdlaXNoaVwgOwor5YaF5Zu955SjIDwgbmFpa29rdXNhblwgOwor5LiJ5pel5Z2K5Li7IDwgbWlra2Fib3V6dVwgOwor6Zuq5pyI6IqxIDwgc2V0c3VnZWtrYVwgOwor56eB5pu4566xIDwgc2hpc2hvYmFrb1wgOwor55u05pig6aSoIDwgY2hva3VlaWthblwgOwor55eF55CG5a2mIDwgYnlvdXJpZ2FrdVwgOwor5b6p5Yi754mIIDwgZnVra29rdWJhblwgOwor6YCA5buD55qEIDwgdGFpaGFpdGVraVwgOwor56K65Zu65LiN5YuVIDwga2Fra29mdWRvdVwgOwor5Lq66ZaT5a2mIDwgbmluZ2VuZ2FrdVwgOwor5LiL552A6aGeIDwgc2hpdGFnaXJ1aVwgOwor5ZSQ5aSJ5pyoIDwgdG91aGVuYm9rdVwgOwor57ea5pKu5b2xIDwgc2Vuc2F0c3VlaVwgOwor5paH5oi/5YW35bGLIDwgYnVuYm91Z3V5YVwgOwor5paw55Sf6Z2iIDwgc2hpbnNlaW1lblwgOwor5bq354WV5a2X5YW4IDwga291a2lqaXRlblwgOwor6KGA6ISIIDwga2V0c3VteWFrdVwgOwor5pWw5pel5b6MIDwgc3V1aml0c3Vnb1wgOwor5pyq5p2l5rC45YqrIDwgbWlyYWllaWdvdVwgOwor6LaF5ZCI6YeRIDwgY2hvdWdvdWtpblwgOwor5aSa5Zu957GNIDwgdGFrb2t1c2VraVwgOwor56mN566X5rOVIDwgc2VraXNhbmhvdVwgOwor54Sh55CG566X5q61IDwgbXVyaXNhbmRhblwgOwor5aSW54K65rOVIDwgZ2FpdGFtZWhvdVwgOwor5Ye65ZOB6ICFIDwgc2h1cHBpbnNoYVwgOwor6Kaa6YaS5YmkIDwga2FrdXNlaXphaVwgOwor6auY5bGx6J22IDwga291emFuY2hvdVwgOwor6L+R57iB5bGeIDwga2luJydlbnpva3VcIDsKK+S4iumBlOmDqCA8IGthbmRhY2hpbWVcIDsKK+WPr+mNm+mJhCA8IGthdGFudGV0c3VcIDsKK+W/g+eQhueahCA8IHNoaW5yaXRla2lcIDsKK+S5l+aPm+WIuCA8IG5vcmlrYWVrZW5cIDsKK+aVmeiCsueVjCA8IGt5b3Vpa3VrYWlcIDsKK+mZsOaltee3miA8IGlua3lva3VzZW5cIDsKK+WNiuiJh+i6qyA8IGhhbnRlaXNoaW5cIDsKK+imquWFhOW8nyA8IG95YWt5b3VkYWlcIDsKK+aXhemkqOalrSA8IHJ5b2thbmd5b3VcIDsKK+Wtpuacn+acqyA8IGdha2tpbWF0c3VcIDsKK+iZnue+juS6uuiNiSA8IGd1YmlqaW5zb3VcIDsKK+WIsOadpeeJqSA8IHRvdXJhaW1vbm9cIDsKK+ixoeeJmee0sOW3pSA8IHpvdWdlemFpa3VcIDsKK+ayluS7suS7lSA8IG9raW5ha2FzaGlcIDsKK+WkluWbveijvSA8IGdhaWtva3VzZWlcIDsKK+e1guebpOaIpiA8IHNodXViYW5zZW5cIDsKK+mAhuWFiee3miA8IGd5YWtrb3VzZW5cIDsKK+ixoeW+tOa0viA8IHNob3VjaG91aGFcIDsKK+WLp+mAsuWFgyA8IGthbmppbm1vdG9cIDsKK+mtmumhnuWtpiA8IGd5b3J1aWdha3VcIDsKK+mOjOm8rCA8IGthbWFpdGFjaGlcIDsKK+e4nueRqueRmSA8IHNoaW1hbWVub3VcIDsKK+ecn+epuueuoSA8IHNoaW5rdXVrYW5cIDsKK+iIjuWIqeWIpSA8IHNoYXJpYmV0c3VcIDsKK+S6rOmYquelniA8IGtlaWhhbnNoaW5cIDsKK+aFo+e/kuazlSA8IGthbnNodXVob3VcIDsKK+a7heiMtua7heiMtiA8IG1lY2hhbWVjaGFcIDsKK+mgremZgOiiiyA8IHp1ZGFidWt1cm9cIDsKK+mZsOalteeuoSA8IGlua3lva3VrYW5cIDsKK+a3t+WSjOeJqSA8IGtvbndhYnV0c3VcIDsKK+WIgOmNm+WGtiA8IGthdGFuYWthamlcIDsKK+a9nOS8j+aApyA8IHNlbnB1a3VzZWlcIDsKK+miqOi7iuWwj+WxiyA8IGZ1dXNoYWdveWFcIDsKK+aLm+W+heWIuCA8IHNob3V0YWlrZW5cIDsKK+WtkOS+m+mDqOWxiyA8IGtvZG9tb2JleWFcIDsKK+axguaEm+iqh+ekuiA8IGt5dXVhaWtvamlcIDsKK+WPl+mbo+evgCA8IGp1bmFuc2V0c3VcIDsKK+a4rOWumuWApCA8IHNva3V0ZWljaGlcIDsKK+WMlueyp+e0mSA8IGtlc2hvdWdhbWlcIDsKK+Wkp+aGsueroCA8IGRhaWtlbnNob3VcIDsKK+eOi+aUv+W+qeWPpCA8IG91c2VpZnVra29cIDsKK+WNmOiJsuWFiSA8IHRhbnNob2trb3VcIDsKK+iii+eJqSA8IGZ1a3Vyb21vbm9cIDsKK+eUsuauu+e2sSA8IGtvdWtha3Vrb3VcIDsKK+mbhuWQiOS9kyA8IHNodXVnb3V0YWlcIDsKK+S4gOS6uumDqOWxiyA8IGhpdG9yaWJleWFcIDsKK+eri+W+gOeUnyA8IHRhY2hpb3Vqb3VcIDsKK+erlSA8IGRlc2hpcml0dG9cIDsKK+S4jeiyt+mBi+WLlSA8IGZ1YmFpdW5kb3VcIDsKK+WtkOWurumguCA8IHNoaWt5dXVrZWlcIDsKK+WQneWXh+WQneWXhyA8IGtlY2hpa2VjaGlcIDsKK+e1jOmok+eahCA8IGtlaWtlbnRla2lcIDsKK+WMlueyp+eusSA8IGtlc2hvdWJha29cIDsKK+S6jOeVquaYnyA8IG5pYmFuYm9zaGlcIDsKK+ilv+WPoyA8IG5pc2hpZ3VjaGlcIDsKK+azleW+i+WutiA8IGhvdXJpdHN1a2FcIDsKK+Wumuacn+mgkOmHkSA8IHRlaWtpeW9raW5cIDsKK+S4gOWumuacn+mWkyA8IGl0dGVpa2lrYW5cIDsKK+a0l+a/r+advyA8IHNlbnRha3VpdGFcIDsKK+a7keayouWJpCA8IGthdHRha3V6YWlcIDsKK+WvvuensOaApyA8IHRhaXNob3VzZWlcIDsKK+WwkeW5tOazlSA8IHNob3VuZW5ob3VcIDsKK+W+s+W3neWutiA8IHRva3VnYXdha2VcIDsKK+WcsOS4i+mBi+WLlSA8IGNoaWthdW5kb3VcIDsKK+a1geWLleS9kyA8IHJ5dXVkb3V0YWlcIDsKK+e1guWIiuWPtyA8IHNodXVrYW5nb3VcIDsKK+ebo+S/ruiAhSA8IGthbnNodXVzaGFcIDsKK+WFsee3qOiAhSA8IGt5b3VoZW5zaGFcIDsKK+aHkOeWkeS4u+e+qSA8IGthaWdpc2h1Z2lcIDsKK+iejemAmueEoeeijSA8IHl1dXp1dW11Z2VcIDsKK+S/neWuieimgeWToSA8IGhvYW4nJ3lvdWluXCA7CivntbHoqIjlraYgPCB0b3VrZWlnYWt1XCA7CivovKrpg63nt5ogPCByaW5rYWt1c2VuXCA7Civou43oiabps6UgPCBndW5rYW5kb3JpXCA7CivllYboiLnpmoogPCBzaG91c2VudGFpXCA7CivotoXmuoDlk6EgPCBjaG91bWFuJydpblwgOwor54mH5omL6Y2LIDwga2F0YXRlbmFiZVwgOwor6IKh6Zai56+AIDwga29rYW5zZXRzdVwgOwor56+A56+AIDwgZnVzaGlidXNoaVwgOwor6Kq/5ZGz5paZIDwgY2hvdW1pcnlvdVwgOwor5Y+I5bCP5L2cIDwgbWF0YWtvc2FrdVwgOwor562S6KKWIDwgdHN1dHN1c29kZVwgOwor5LiN5q2j55u0IDwgZnVzaG91amlraVwgOwor5rSq56mN5bGkIDwga291c2VraXNvdVwgOwor5qSc5Zyn5ZmoIDwga2VuJydhdHN1a2lcIDsKK+S4u+aIkeS4u+e+qSA8IHNodWdhc2h1Z2lcIDsKK+afk+eJqeWxiyA8IHNvbWVtb25veWFcIDsKK+mFjeiGs+S6uiA8IGhhaXplbicnbmluXCA7CivlooPnlYznt5ogPCBreW91a2Fpc2VuXCA7CivpnZnniannlLsgPCBzZWlidXRzdWdhXCA7CivmlZnogrLms5UgPCBreW91aWt1aG91XCA7Civlj47pm4bprZQgPCBzaHV1c2h1dW1hXCA7Civpm6LogbfogIUgPCByaXNob2t1c2hhXCA7CivniafluKvppKggPCBib2t1c2hpa2FuXCA7CivljaDpoJjou40gPCBzZW5yeW91Z3VuXCA7Civns7jljbAgPCBpdG9qaXJ1c2hpXCA7CivkuK3nlJ/ku6MgPCBjaHV1c2VpZGFpXCA7CivngrrkurogPCBoaXRvdG9uYXJpXCA7CivkuIvljYrmnJ8gPCBzaGltb2hhbmtpXCA7CivmlZnkvJrms5UgPCBreW91a2FpaG91XCA7Civljp/msLTniIYgPCBnZW5zdWliYWt1XCA7CivnlIUgPCBzZW5jaGlndXJhXCA7Civnk7ggPCBoZWt1dG9ndXJhXCA7Civngq3kv7UgPCBzdW1pZGF3YXJhXCA7Civnk7EgPCBtaXJpZ3VyYW11XCA7Civnk6kgPCBraXJvZ3VyYW11XCA7Civnk6cgPCBkZWthZ3VyYW11XCA7CivliLrnuY3ns7ggPCBzaGlzaHV1aXRvXCA7CivkuI3kvZzngrrniq8gPCBmdXNha3VpaGFuXCA7CivmkK3kuZfmqYsgPCB0b3Vqb3VreW91XCA7Civnn7PpubjnrrEgPCBzZWtrZW5iYWtvXCA7Civlm57ou6Lou7ggPCBrYWl0ZW5qaWt1XCA7CivliLvkuIDliLsgPCBrb2t1aWtrb2t1XCA7CivlibXpgKDnmoQgPCBzb3V6b3V0ZWtpXCA7Civnl7TlkYbnl4cgPCBjaGlob3VzaG91XCA7CivnsbPmiYAgPCBrb21lZG9rb3JvXCA7CivmjpLmsLTph48gPCBoYWlzdWlyeW91XCA7CivlkITmg4XloLEgPCBrYWt1am91aG91XCA7CivoiJfoo4XnhYnnk6YgPCBob3NvdXJlbmdhXCA7CivmipXlvbHlm7Pms5UgPCB0b3VlaXp1aG91XCA7CivmoLjmlofms5UgPCBrYWt1YnVucG91XCA7Civlo7LkuIrpq5ggPCB1cmlhZ2VkYWthXCA7Civmt7HmiJDlsqkgPCBzaGluc2VpZ2FuXCA7Civog7jkuInlr7ggPCBtdW5lc2FuenVuXCA7CivlvpfmhI/lrqIgPCB0b2t1aWt5YWt1XCA7CivlvrTlhbXliLYgPCBjaG91aGVpc2VpXCA7Civnq6/ov5EgPCBoYXNoaWRqaWthXCA7CivpjpbpjowgPCBrdXNhcmlnYW1hXCA7CivmgKfmnKzog70gPCBzZWlob24nJ25vdVwgOwor5ruF6KOCIDwgbWV0c3VyZXRzdVwgOwor5LyR6Ki65pelIDwga3l1dXNoaW5iaVwgOwor5Z+36YeR6Yu8IDwgc2hpa2tvbmdvdVwgOwor57eP54q26Iqx5bqPIDwgc291am91a2Fqb1wgOwor56uc55qu5be7IDwgcnl1dWhpbWFraVwgOwor5Zue5biw54axIDwga2Fpa2luZXRzdVwgOwor56Wd6LOA5LyaIDwgc2h1a3VnYWthaVwgOwor55Sf5rS76LK7IDwgc2Vpa2F0c3VoaVwgOwor5rOV5YuZ5bGAIDwgaG91bXVreW9rdVwgOwor5Lit5a2m5qChIDwgY2h1dWdha2tvdVwgOwor5pyI6KaL6I2JIDwgdHN1a2ltaXNvdVwgOwor5riF5rWE54Sh5Z6iIDwgc2Vpam91bXVrdVwgOwor6YCa5L+X5YyWIDwgdHN1dXpva3VrYVwgOwor55u05Lqk5oCnIDwgY2hva2tvdXNlaVwgOwor56iy54ax55eFIDwgaW1vY2hpYnlvdVwgOwor5LiJ6Z2i6KiY5LqLIDwgc2FubWVua2lqaVwgOwor6auY6LiP55qEIDwga291dG91dGVraVwgOwor57Wm5paZ5pelIDwga3l1dXJ5b3ViaVwgOwor5omN5rCX57im5qiqIDwgc2Fpa2lqdXVvdVwgOwor5LiH5bm06Z2SIDwgbWFuJyduZW5zZWlcIDsKK+Wwj+WJjeaPkCA8IHNob3V6ZW50ZWlcIDsKK+WFreS4ieWItiA8IHJva3VzYW5zZWlcIDsKK+mAoOael+WtpiA8IHpvdXJpbmdha3VcIDsKK+acrOS9jeiyqOW5oyA8IGhvbicnaWthaGVpXCA7Civlhajosqzku7sgPCB6ZW5zZWtpbmluXCA7Civppqzpub/kuIHlr6cgPCBiYWthdGVpbmVpXCA7CivnhafmmI7lvL4gPCBzaG91bWVpZGFuXCA7CivmhJvlm73lv4MgPCBhaWtva3VzaGluXCA7Civmva7nhZkgPCBzaGlva2VtdXJpXCA7Civnn7Ppubjnmr8gPCBzZWtrZW56YXJhXCA7CivkuojlrproqqwgPCB5b3RlaXNldHN1XCA7CivnrYboiIwgPCBoaXRzdXpldHN1XCA7Civml6XokaHovp7mm7ggPCBuaXBwb2ppc2hvXCA7CivohLPnoazloZ4gPCBub3Vrb3Vzb2t1XCA7Civnt4/lpKflsIYgPCBzb3VkYWlzaG91XCA7Civlp4vmnKvlsYsgPCBzaGltYXRzdXlhXCA7Civlm73mnInmnpcgPCBrb2t1eXV1cmluXCA7Civolqzlrabpg6ggPCB5YWt1Z2FrdWJ1XCA7CivmibnliKTlipsgPCBoaWhhbnJ5b2t1XCA7CivnrYnouqvlpKcgPCB0b3VzaGluZGFpXCA7CivkvY3nm7jnqbrplpMgPCBpc291a3V1a2FuXCA7CivmtbfkuovooZvmmJ8gPCBrYWlqaWVpc2VpXCA7CivnqbrmsJfmqZ/morAgPCBrdXVraWtpa2FpXCA7Civnt4/mlLvmkoMgPCBzb3Vrb3VnZWtpXCA7Civpq5jlsbHnl4UgPCBrb3V6YW5ieW91XCA7CivkupTmnIjnpa0gPCBnb2dhdHN1c2FpXCA7CivlhbHlkIzkupXmiLggPCBreW91ZG91aWRvXCA7Civou43mpb3pmoogPCBndW5nYWt1dGFpXCA7CivkuInph43llLEgPCBzYW5qdXVzaG91XCA7CivljZfkuqzosYYgPCBuYW5raW5tYW1lXCA7Civmm7LppqzluKsgPCBreW9rdWJhc2hpXCA7Civlia/lj7jku6QgPCBmdWt1c2hpcmVpXCA7CivpjKbpr4kgPCBuaXNoaWtpZ29pXCA7CivmmLzml6XkuK0gPCBoaXJ1aGluYWthXCA7CivlkIjnkIbkuLvnvqkgPCBnb3VyaXNodWdpXCA7CivluLjorZjlrrYgPCBqb3VzaGlraWthXCA7Civmu5HohLEgPCBrYXRzdWRhdHN1XCA7CivlpKnmtKXlvqHlp4kgPCBhbWF0c3VtaWtvXCA7CivlpKnmiYvlj6ToiJ4gPCB0ZW50ZWtvbWFpXCA7CivoqIDokYnlsLsgPCBrb3RvYmFqaXJpXCA7CivogrrmtbjmvaQgPCBoYWlzaGluanVuXCA7CivlpJzlhYnmmYLoqIggPCB5YWtvdWRva2VpXCA7CivogJXkvZzogIUgPCBrb3VzYWt1c2hhXCA7CivlkIzlv4PlhoYgPCBkb3VzaGluJydlblwgOwor6Ie05q276YePIDwgY2hpc2hpcnlvdVwgOwor5byB6Ki86KuWIDwgYmVuc2hvdXJvblwgOwor5paw55m75aC0IDwgc2hpbnRvdWpvdVwgOwor6Ieq6Lui6LuK5bGLIDwgaml0ZW5zaGF5YVwgOwor5by35Yqb57KJIDwga3lvdXJpa2lrb1wgOwor5LqI5YKZ5a6kIDwgeW9iaXNoaXRzdVwgOwor5bqX6aCt5qCqIDwgdGVudG91a2FidVwgOwor55m65bCE6JasIDwgaGFzc2hheWFrdVwgOwor6Ieq5a6255So6LuKIDwgamlrYXlvdXNoYVwgOwor5Y2Y5L2N5Yi25bqmIDwgdGFuJydpc2VpZG9cIDsKK+WMlueyp+awtCA8IGtlc2hvdW1penVcIDsKK+WNgemAsuazlSA8IGppc3NoaW5ob3VcIDsKK+aWh+Wtl+aDheWgsSA8IG1vamlqb3Vob3VcIDsKK+aWh+ethuWutiA8IGJ1bnBpdHN1a2FcIDsKK+W+k+mHj+eojiA8IGp1dXJ5b3V6ZWlcIDsKK+eTpuWxi+aguSA8IGthd2FyYXlhbmVcIDsKK+mWouS/guiqvyA8IGthbmtlaWNob3VcIDsKK+WUr+W/g+irliA8IHl1aXNoaW5yb25cIDsKK+WKseaMr+euoSA8IHJlaXNoaW5rYW5cIDsKK+WFqOaXpeepuiA8IHplbicnbmlra3V1XCA7CivkuozmnprohbAgPCBuaW1haWdvc2hpXCA7CivmtYHliJHlnLAgPCByeXV1a2VpY2hpXCA7CivmtKrnqY3kuJYgPCBrb3VzZWtpc2VpXCA7CivpnIfngb3lnLAgPCBzaGluc2FpY2hpXCA7CivnrYbnrZIgPCBmdWRlZHp1dHN1XCA7Civopo/liLbop6PpmaQgPCBraXNlaWthaWpvXCA7Civmj4/lh7ogPCBieW91c2h1dHN1XCA7CivnnLzou5/oho8gPCBnYW4nJ25hbmtvdVwgOwor5rC05pm25L2TIDwgc3Vpc2hvdXRhaVwgOwor54K55ruF5ZmoIDwgdGVubWV0c3VraVwgOwor5YWE5byf5YiGIDwga3lvdWRhaWJ1blwgOwor6YeR6ZaA5qmLIDwga2lubW9ua3lvdVwgOwor5pmv5Yud5ZywIDwga2Vpc2hvdWNoaVwgOwor5YaF5o6l5YaGIDwgbmFpc2V0c3VlblwgOwor55Sf5rS76IumIDwgc2Vpa2F0c3VrdVwgOwor5p2x54Wn5a6uIDwgdG91c2hvdWd1dVwgOwor5Y+X6Zuj5puyIDwganVuYW5reW9rdVwgOwor5a++5rWB5ZyPIDwgdGFpcnl1dWtlblwgOwor5LiL5rC05bel5LqLIDwgZ2VzdWlrb3VqaVwgOwor5Y2x6Zm654mpIDwga2lrZW5idXRzdVwgOwor56CU5L+u55SfIDwga2Vuc2h1dXNlaVwgOwor6L+R6Kaq5amaIDwga2luc2hpbmtvblwgOwor5Lqk6Kqt5paHIDwga291ZG9rdWJ1blwgOwor6ISz5Y2S5LitIDwgbm91c290Y2h1dVwgOwor54S85q275L2TIDwgc2hvdXNoaXRhaVwgOwor5LiA56We5pWZIDwgaXNzaGlua3lvdVwgOwor5rS+5Ye65omAIDwgaGFzaHV0c3Vqb1wgOwor5oyv5YuV6KiIIDwgc2hpbmRvdWtlaVwgOwor5bGI5oqY6KqeIDwga3Vzc2V0c3Vnb1wgOwor5puy6aas5ZujIDwga3lva3ViYWRhblwgOwor5rOo5bCE5rayIDwgY2h1dXNoYWVraVwgOwor5ZCI5oSP5oOF5q27IDwgZ291aWpvdXNoaVwgOwor56aP56aE5a+/IDwgZnVrdXJva3VqdVwgOwor57SZ5ZC56ZuqIDwga2FtaWZ1YnVraVwgOwor5Luy5LuL6ICFIDwgY2h1dWthaXNoYVwgOwor6ZuG6YWN5Lq6IDwgc2h1dWhhaW5pblwgOwor5a6a56SO5byPIDwgdGVpc29zaGlraVwgOwor6KOB5Yik6ZW3IDwgc2FpYmFuY2hvdVwgOwor6Zu76Kmx5bGAIDwgZGVud2FreW9rdVwgOwor5L+456W/57GzIDwgaG91cm9rdW1haVwgOwor6Iqx5ZC56ZuqIDwgaGFuYWZ1YnVraVwgOwor5Zyf5aOBIDwgdHN1Y2hpa2FiZVwgOwor5YW157On57GzIDwgaHlvdXJvdW1haVwgOwor6KeS57Sw5belIDwgdHN1bm96YWlrdVwgOwor6Ly46YCB5YqbIDwgeXVzb3VyeW9rdVwgOwor5p6X6YeO5bqBIDwgcmluJyd5YWNob3VcIDsKK+aUr+mFjeeahCA8IHNoaWhhaXRla2lcIDsKK+Wkqum8k+apiyA8IHRhaWtvYmFzaGlcIDsKK+eulOWKm+eyiSA8IGhha3VyaWtpa29cIDsKK+eNheWtkOm8uyA8IHNoaXNoaWJhbmFcIDsKK+mAo+maiumVtyA8IHJlbnRhaWNob3VcIDsKK+err+acq+apnyA8IHRhbm1hdHN1a2lcIDsKK+WQueWlj+alvSA8IHN1aXNvdWdha3VcIDsKK+eGseWwhOeXhSA8IG5lc3NoYWJ5b3VcIDsKK+aThSA8IGhvc2hpaW1hbWFcIDsKK+atpuijheW5s+WSjCA8IGJ1c291aGVpd2FcIDsKK+W+s+eUqOeTtiA8IHRva3V5b3ViaW5cIDsKK+aJi+e2miA8IHRldHN1ZHp1a2lcIDsKK+Wkqea0peelniA8IGFtYXRzdWthbWlcIDsKK+mZjeawtOmHjyA8IGtvdXN1aXJ5b3VcIDsKK+WHuumHkeiAhSA8IHNodWtraW5zaGFcIDsKK+WFuOWei+eahCA8IHRlbmtlaXRla2lcIDsKK+ieouefsyA8IGhvdGFydWlzaGlcIDsKK+S4reaeouaApyA8IGNodXVzdXVzZWlcIDsKK+i/t+W9qeacjSA8IG1laXNhaWZ1a3VcIDsKK+S9j+WuhemboyA8IGp1dXRha3VuYW5cIDsKK+S7mOW4r+S6i+mghSA8IGZ1dGFpamlrb3VcIDsKK+WMlueyp+aWmSA8IGtlc2hvdXJ5b3VcIDsKK+W/g+eQhuWtpiA8IHNoaW5yaWdha3VcIDsKK+iKs+WQjemMsiA8IGhvdW1laXJva3VcIDsKK+WLleWKm+eCiSA8IGRvdXJ5b2t1cm9cIDsKK+Wwj+WFkOeXhSA8IHNob3VuaWJ5b3VcIDsKK+WwkeW5tOWboyA8IHNob3VuZW5kYW5cIDsKK+WFqOmdoueahCA8IHplbm1lbnRla2lcIDsKK+ihjOaWueS4jeaYjiA8IHl1a3VlZnVtZWlcIDsKK+Wwj+W4guawkSA8IHNob3VzaGltaW5cIDsKK+icnOicgiA8IG1pdHN1YmFjaGlcIDsKK+Wkqeawl+S6iOWgsSA8IHRlbmtpeW9ob3VcIDsKK+S4jeW5s+S4jea6gCA8IGZ1aGVpZnVtYW5cIDsKK+iiq+S/nemZuuiAhSA8IGhpaG9rZW5zaGFcIDsKK+WJr+asoeeahCA8IGZ1a3VqaXRla2lcIDsKK+akjumWk+advyA8IHRzdWlrYW5iYW5cIDsKK+imquWtkOmbu+ipsSA8IG95YWtvZGVud2FcIDsKK+iqsueojueOhyA8IGthemVpcml0c3VcIDsKK+mDteaUv+ecgSA8IHl1dXNlaXNob3VcIDsKK+Wkj+WgtOaJgCA8IG5hdHN1YmFzaG9cIDsKK+WkmuaDheWkmuaBqCA8IHRham91dGFrb25cIDsKK+euseafsyA8IGhha295YW5hZ2lcIDsKK+e1jOWWtuegtOe2uyA8IGtlaWVpaGF0YW5cIDsKK+WOmuWMlueypyA8IGF0c3VnZXNob3VcIDsKK+izm+WKqeS8muWToSA8IHNhbmpva2FpaW5cIDsKK+S6jOS6uue1hCA8IGZ1dGFyaWd1bWlcIDsKK+iHtOWRveWCtyA8IGNoaW1laXNob3VcIDsKK+euseaelSA8IGhha29tYWt1cmFcIDsKK+WJr+mDveW/gyA8IGZ1a3V0b3NoaW5cIDsKK+exs+S/tSA8IGtvbWVkYXdhcmFcIDsKK+eZuuahiOiAhSA8IGhhdHN1YW5zaGFcIDsKK+W8t+WKm+eKryA8IGdvdXJpa2loYW5cIDsKK+S4i+mDqOani+mAoCA8IGthYnVrb3V6b3VcIDsKK+a0l+a/r+S7oyA8IHNlbnRha3VkYWlcIDsKK+mBiuazs+ihkyA8IHl1dWVpanV0c3VcIDsKK+avjuWcn+abnOaXpSA8IG1haWRveW91YmlcIDsKK+ijvemZtualrSA8IHNlaXRvdWd5b3VcIDsKK+eQg+W6p+aomSA8IGt5dXV6YWh5b3VcIDsKK+ayiOS4geiKsSA8IGNoaW5jaG91Z2VcIDsKK+icguicnCA8IGhhY2hpbWl0c3VcIDsKK+S6iOeul+aOque9riA8IHlvc2Fuc29jaGlcIDsKK+iRoeiQhOeJmSA8IHBvcnV0b2dhcnVcIDsKK+S4jeepj+WIhuWtkCA8IGZ1b25idW5zaGlcIDsKK+aVmeS8muWggiA8IGt5b3VrYWlkb3VcIDsKK+aUr+W6l+mVtyA8IHNoaXRlbmNob3VcIDsKK+WWnOaAkuWTgOalvSA8IGtpZG9haXJha3VcIDsKK+W+oeW5tOeOiSA8IG90b3NoaWRhbWFcIDsKK+ilv+a0i+iRsSA8IHNlaXlvdW5lZ2lcIDsKK+eTnOWun+mhlCA8IHVyaXphbmVnYW9cIDsKK+ecn+epuuW4ryA8IHNoaW5rdXV0YWlcIDsKK+erueetkiA8IHRha2VkenV0c3VcIDsKK+i/vemAgeaknCA8IHRzdWlzb3VrZW5cIDsKK+acquaxuueboyA8IG1pa2V0c3VrYW5cIDsKK+a8ouWSjOi+nuWFuCA8IGthbndhaml0ZW5cIDsKK+aZrumAmuagqiA8IGZ1dHN1dWthYnVcIDsKK+WPi+iqvOWbveWutiA8IHl1dWdpa29ra2FcIDsKK+ebuOS6kuS/nemZuiA8IHNvdWdvaG9rZW5cIDsKK+WVhuW6l+S4uyA8IHNob3V0ZW5zaHVcIDsKK+aOoeefs+WgtCA8IHNhaXNla2lqb3VcIDsKK+eJouWQjeS4uyA8IHJvdW5hbnVzaGlcIDsKK+e0r+mAsueojiA8IHJ1aXNoaW56ZWlcIDsKK+Wkp+ertuS6iSA8IGRhaWt5b3Vzb3VcIDsKK+ajruael+azlSA8IHNoaW5yaW5ob3VcIDsKK+WQjOmDt+S6uiA8IGRvdWt5b3VqaW5cIDsKK+a0vuWHuuWppiA8IGhhc2h1dHN1ZnVcIDsKK+S6i+Wkp+S4u+e+qSA8IGppZGFpc2h1Z2lcIDsKK+WGheWbveWCtSA8IG5haWtva3VzYWlcIDsKK+S6lOi8quS8muitsCA8IGdvcmlua2FpZ2lcIDsKK+aUr+W6pumHkSA8IHNoaXRha3VraW5cIDsKK+err+erryA8IGhhc2hpYmFzaGlcIDsKK+WGjea1uOekvCA8IHNhaXNoaW5yZWlcIDsKK+WbveacieWcsCA8IGtva3V5dXVjaGlcIDsKK+imquWxleabuCA8IHNoaW50ZW5zaG9cIDsKK+iqnuW9ouWkieWMliA8IGdva2VpaGVua2FcIDsKK+W7ieaBpeW/gyA8IHJlbmNoaXNoaW5cIDsKK+eahuaXoumjnyA8IGthaWtpc2hva3VcIDsKK+mdnuaIpumXmOWToSA8IGhpc2VudG91aW5cIDsKK+i7ouWxheWFiCA8IHRlbmt5b3Nha2lcIDsKK+mAo+e1oemnhSA8IHJlbnJha3Vla2lcIDsKK+mbu+ipseWPoyA8IGRlbndhZ3VjaGlcIDsKK+eEoeW/teeEoeaDsyA8IG11bmVubXVzb3VcIDsKK+eyvuWLpOizniA8IHNlaWtpbnNob3VcIDsKK+WBpeW/mOeXhyA8IGtlbmJvdXNob3VcIDsKK+idtueVqiA8IGNob3V0c3VnYWlcIDsKK+a8lOeul+aJi+mghiA8IGVuemFudGVqdW5cIDsKK+aVmeS8muWPsiA8IGt5b3VrYWlzaGlcIDsKK+WwkeW5tOS8miA8IHNob3VuZW5rYWlcIDsKK+i0i+aJi+e0mSA8IG5pc2V0ZWdhbWlcIDsKK+WHuuW+gei7jSA8IHNodXNzZWlndW5cIDsKK+atpuaWreS4u+e+qSA8IGJ1ZGFuc2h1Z2lcIDsKK+ioiOeUu+iAhSA8IGtlaWtha3VzaGFcIDsKK+aVo+aWh+eahCA8IHNhbmJ1bnRla2lcIDsKK+S4luipseS6uumWkyA8IHNld2FuaW5nZW5cIDsKK+W5vuS9leW5s+WdhyA8IGtpa2FoZWlraW5cIDsKK+aLoOaJgCA8IHlvcmlkb2tvcm9cIDsKK+S6uuW3pemZjembqCA8IGppbmtvdWtvdXVcIDsKK+m7kum8oCA8IGt1cm9uZXp1bWlcIDsKK+WPi+WlveeahCA8IHl1dWtvdXRla2lcIDsKK+iHquWVj+iHquetlCA8IGppbW9uaml0b3VcIDsKK+WPrOWWmueKtiA8IHNob3VrYW5qb3VcIDsKK+iqjeiovOiAhSA8IG5pbnNob3VzaGFcIDsKK+W5tOeUo+mhjSA8IG5lbnNhbmdha3VcIDsKK+aPm+eul+ihqCA8IGthbnphbmh5b3VcIDsKK+aylue4hOecjCA8IG9raW5hd2FrZW5cIDsKK+aVkeS4lui7jSA8IGt5dXVzZWlndW5cIDsKK+a6gOi2s+aEnyA8IG1hbnpva3VrYW5cIDsKK+WlieWFrOWFiCA8IGhvdWtvdXNha2lcIDsKK+mbu+WgseaWmSA8IGRlbnBvdXJ5b3VcIDsKK+iNkuS6i+W4qyA8IGFyYWdvdG9zaGlcIDsKK+ahg+a6kOmDtyA8IHRvdWdlbmt5b3VcIDsKK+iTruaciOWwvCA8IHJlbmdldHN1bmlcIDsKK+eah+e0gOW5tOW6piA8IGtvdWtpbmVuZG9cIDsKK+e+veaWkeiaiiA8IGhhbWFkYXJha2FcIDsKK+actOW/teS7gSA8IGJva3VuZW5qaW5cIDsKK+WtkOWurueZjCA8IHNoaWt5dXVnYW5cIDsKK+ihqOWPoyA8IG9tb3RlZ3VjaGlcIDsKK+ejgeWKm+ioiCA8IGppcnlva3VrZWlcIDsKK+agueeykuiPjCA8IGtvbnJ5dXVraW5cIDsKK+e4puaXi+ebpCA8IHRhdGVzZW5iYW5cIDsKK+W4guW9ueaJgCA8IHNoaXlha3VzaG9cIDsKK+aknOa1geioiCA8IGtlbnJ5dXVrZWlcIDsKK+WNs+WjsuS8miA8IHNva3ViYWlrYWlcIDsKK+W7tuS6uuWToSA8IG5vYmVqaW4nJ2luXCA7Civlj6PohZTlpJbnp5EgPCBrb3Vrb3VnZWthXCA7Civoqr/lkIjliaQgPCBjaG91Z291emFpXCA7CivopoHnorroqo0gPCB5b3VrYWt1bmluXCA7CivluLjnt5HmqLkgPCBqb3VyeW9rdWp1XCA7Civnq4jnpZ4gPCBrYW1hZG9nYW1pXCA7CivpgbjnkIPnnLwgPCBzZW5reXV1Z2FuXCA7Civnn7PlkIjmiKYgPCBpc2hpZ2Fzc2VuXCA7CivlsIHlu7rnmoQgPCBob3VrZW50ZWtpXCA7Civpp5DlnKjmiYAgPCBjaHV1emFpc2hvXCA7CivkuJbluK/kuLsgPCBzZXRhaW51c2hpXCA7CivlubPluLjlv4MgPCBoZWlqb3VzaGluXCA7Civpu5LprqogPCBrdXJvbWFndXJvXCA7CivohLPmgKfpurvnl7ogPCBub3VzZWltYWhpXCA7CivkupTljYHpn7PpoIYgPCBnb2p1dW9uanVuXCA7CivosYblj7DpoqggPCBtYW1ldGFpZnV1XCA7CivmvJTnrpfnsr7luqYgPCBlbnphbnNlaWRvXCA7CivpibHlsbHmpa0gPCBrb3V6YW5neW91XCA7CivljYHlrZfmnrbnirYgPCBqdXVqaWtham91XCA7Civooajlh7ogPCBoeW91c2h1dHN1XCA7Civmp4vmlofmnKggPCBrb3VidW5tb2t1XCA7Civlj4LorIDplbcgPCBzYW5ib3VjaG91XCA7CivkuI3ogIHkuI3mrbsgPCBmdXJvdWZ1c2hpXCA7CivkuJbnlYzkuLvnvqkgPCBzZWthaXNodWdpXCA7CivlhpnnnJ/ppKggPCBzaGFzaGlua2FuXCA7CivmiKbmmYLoibIgPCBzZW5qaXNob2t1XCA7CivonrrpiL/ntLDlt6UgPCByYWRlbnphaWt1XCA7CivoqJjovInkuovpoIUgPCBraXNhaWppa291XCA7CivkvY/lroXooZcgPCBqdXV0YWt1Z2FpXCA7CivpoJPnj43mvKIgPCB0b25jaGlua2FuXCA7CivlvLHphbjmgKcgPCBqYWt1c2Fuc2VpXCA7CivkuK3ku5XliIcgPCBuYWthamlraXJpXCA7Civngq3ntKDnuYrntq0gPCB0YW5zb3NlbicnaVwgOwor5ZSQ6KGjIDwga2FyYWtvcm9tb1wgOwor5Yid6Iie5Y+wIDwgaGF0c3VidXRhaVwgOwor5YaZ55yf6aGUIDwgc2hhc2hpbmdhb1wgOwor54Sh57ea6Zu76KmxIDwgbXVzZW5kZW53YVwgOwor5Y2X5Lqs546JIDwgbmFua2luZGFtYVwgOwor6Ii557GN5rivIDwgc2Vuc2VraWtvdVwgOwor54eQ54Gw55+zIDwgcmlua2Fpc2VraVwgOwor5LiA5bm06ZaTIDwgaWNoaW5lbmthblwgOwor6Z2e5o6l6KemIDwgaGlzZXNzaG9rdVwgOwor5oyB57aa55qEIDwgaml6b2t1dGVraVwgOwor5rip5oOF5Li7576pIDwgb25qb3VzaHVnaVwgOwor5Za25qWt5LitIDwgZWlneW91Y2h1dVwgOwor6LaF6YGO6aGNIDwgY2hvdWthZ2FrdVwgOwor6aCQ6LK4546HIDwgeW90YWlyaXRzdVwgOwor5Luj55So6IKJIDwgZGFpeW91bmlrdVwgOwor5YCL5Lq657WM5Za2IDwga29qaW5rZWllaVwgOwor5pmC57O75YiXIDwgamlrZWlyZXRzdVwgOwor562G5peBIDwgZnVkZXp1a3VyaVwgOwor5aWU5pS+5LiN576IIDwgaG9ucG91ZnVraVwgOwor5a2Q5L6b5pyNIDwga29kb21vZnVrdVwgOwor6K2m6KaW5bqBIDwga2Vpc2hpY2hvdVwgOwor5YWN55ar5oCnIDwgbWVuJydla2lzZWlcIDsKK+ezu+e1seeahCA8IGtlaXRvdXRla2lcIDsKK+i7jeeUqOmHkSA8IGd1bicneW91a2luXCA7CivojZLku5XkuosgPCBhcmFzaGlnb3RvXCA7CivnmbvlsbHlrqIgPCB0b3phbmt5YWt1XCA7CivkvY7os4Pph5EgPCB0ZWljaGluZ2luXCA7CivkvrXlrrPogIUgPCBzaGluZ2Fpc2hhXCA7Civlo7LkuIrnpaggPCB1cmlhZ2VweW91XCA7CivpiYTlmajmmYLku6MgPCB0ZWtraWppZGFpXCA7CivmlL7pgIHliocgPCBob3Vzb3VnZWtpXCA7Civml6XnqIvooaggPCBuaXR0ZWloeW91XCA7Civlia/okazlk4EgPCBmdWt1c291aGluXCA7CivpvaPokL0gPCBrb21hb3Rvc2hpXCA7CivmjL/lhaXmlocgPCBzb3VueXV1YnVuXCA7CivliJ3lrabogIUgPCBzaG9nYWt1c2hhXCA7CivmlZnnv5LmiYAgPCBreW91c2h1dWpvXCA7CivlhaXloLTploAgPCBueXV1am91bW9uXCA7CivlrpjluoHooZcgPCBrYW5jaG91Z2FpXCA7CivniankvqHpqLDosrQgPCBidWtrYXRvdWtpXCA7Civopo/liYfnmoQgPCBraXNva3V0ZWtpXCA7CivlsI/lhorlrZAgPCBzaG91c2Fzc2hpXCA7CivovLvlsITnt5ogPCBmdWt1c2hhc2VuXCA7CivlgKkgPCB0c3VyYXRzdXJhXCA7CivljYHpgLLliLYgPCBqaXNzaGluc2VpXCA7CivopIfoo73lk4EgPCBmdWt1c2VpaGluXCA7Civmo67mnpfluK8gPCBzaGlucmludGFpXCA7CivntZDmmbbns7sgPCBrZXNzaG91a2VpXCA7CivnhKHnp6nluo8gPCBtdWNoaXRzdWpvXCA7Civml6XmnKzoiJ7ouIogPCBuaWhvbmJ1eW91XCA7Civogb7llJblrabmoKEgPCByb3VhZ2Fra291XCA7CivpjKjntrEgPCBpa2FyaWR6dW5hXCA7CivkuLvoprPnmoQgPCBzaHVrYW50ZWtpXCA7CivnoLTlo4rlipsgPCBoYWthaXJ5b2t1XCA7CivkuInmr5vkvZwgPCBzYW5tb3VzYWt1XCA7Civmoafnmq7okbogPCBoaXdhZGFidWtpXCA7CivlipvnuZTmqZ8gPCByaWtpc2hva2tpXCA7Civlha3pnaLkvZMgPCByb2t1bWVudGFpXCA7Civnj77ku6Poi7Hoqp4gPCBnZW5kYWllaWdvXCA7Civnmb3kurrnqK4gPCBoYWt1amluc2h1XCA7CivmsY7npZ7oq5YgPCBoYW5zaGlucm9uXCA7Civku67lrprmrL4gPCBrYXJpdGVpa2FuXCA7CivntI3nqI7poY0gPCBub3V6ZWlnYWt1XCA7Civoq7jlpJblm70gPCBzaG9nYWlrb2t1XCA7CivlpJbmjqXlhoYgPCBnYWlzZXRzdWVuXCA7CivljYHkuozkvb/lvpIgPCBqdXVuaXNoaXRvXCA7Civoo73ntJnmpa0gPCBzZWlzaGlneW91XCA7CivpiZvnm7Tnt5ogPCBlbmNob2t1c2VuXCA7Civlv4Ppm7voqIggPCBzaGluZGVua2VpXCA7Civnpo/liKnooaggPCBmdWt1cmloeW91XCA7CivnrZLlvaIgPCB0c3V0c3VnYXRhXCA7Civlvq7nlJ/niakgPCBiaXNlaWJ1dHN1XCA7Civlrp3nn7PlupcgPCBob3VzZWtpdGVuXCA7CivlibXmpa3ogIUgPCBzb3VneW91c2hhXCA7Civml6XmnKzluq3lnJIgPCBuaWhvbnRlaWVuXCA7Civpnanoo73lk4EgPCBrYXdhc2VpaGluXCA7CivlubPlubTkvZwgPCBoZWluZW5zYWt1XCA7Civmt7Hnt5EgPCBmdWthbWlkb3JpXCA7CivpgbrkvJ3mmpflj7cgPCBpZGVuJydhbmdvdVwgOwor54y/6Iqd5bGFIDwgc2FydXNoaWJhaVwgOwor5aC05aSW5qCqIDwgam91Z2Fpa2FidVwgOwor6by76JasIDwgaGFuYWd1c3VyaVwgOwor5byB6Ki85rOVIDwgYmVuc2hvdWhvdVwgOwor5Y2U5a6a5pu4IDwga3lvdXRlaXNob1wgOwor6LuN5LqL6Ly46YCBIDwgZ3Vuaml5dXNvdVwgOwor5LqU5pes56+AIDwgZ29qdW5zZXRzdVwgOwor5Ly05oCn6YG65LydIDwgaGFuc2VpaWRlblwgOwor5omA5p+EIDwgdG9rb3JvZ2FyYVwgOwor5Yid5Lu757WmIDwgc2hvbmlua3l1dVwgOwor6Zm45pu5562JIDwgcmlrdXNvdXRvdVwgOwor57WM5Za25Y+C5YqgIDwga2VpZWlzYW5rYVwgOwor5aW95oiQ57i+IDwga291c2Vpc2VraVwgOwor6YCa5pyJ5oCnIDwgdHN1dXl1dXNlaVwgOwor6IG05bCO54qsIDwgY2hvdWRvdWtlblwgOwor5LqI5YKZ6YG45oyZIDwgeW9iaXNlbmt5b1wgOwor5b6h6auY56WW6aCt5be+IDwgb2tvc296dWtpblwgOwor5LqI5YKZ6Imm6ZqKIDwgeW9iaWthbnRhaVwgOwor56OB5Yqb57eaIDwgamlyeW9rdXNlblwgOwor6Zui5ama546HIDwgcmlrb25yaXRzdVwgOwor56Gd6YW45aGpIDwgc2hvdXNhbicnZW5cIDsKK+S6iOWCmemBuOaJiyA8IHlvYmlzZW5zaHVcIDsKK+WGjeeiuuiqjSA8IHNhaWtha3VuaW5cIDsKK+eZuuahiOaoqSA8IGhhdHN1YW5rZW5cIDsKK+mFquijveWTgSA8IHJha3VzZWloaW5cIDsKK+Wcn+aAp+mqqCA8IGRvc2hvdWJvbmVcIDsKK+mBv+WmiuiWrCA8IGhpbmluJyd5YWt1XCA7CivkuI3lgLbmiLTlpKkgPCBmdWd1dGFpdGVuXCA7CivmjIHkuLsgPCBtb2NoaW51c2hpXCA7CivnmbrnlJ/lraYgPCBoYXNzZWlnYWt1XCA7CivkurrnqK7nmoQgPCBqaW5zaHV0ZWtpXCA7Civno4Hnn7Pnm6QgPCBqaXNoYWt1YmFuXCA7CivlpKfolLXntYwgPCBkYWl6b3VreW91XCA7CivmsrPljp/ptrggPCBrYXdhcmFoaXdhXCA7Civmi5nliqMgPCBzZXRzdXJldHN1XCA7CivnlZnnva7loLQgPCByeXV1Y2hpam91XCA7CivpgJrpoqjlrZQgPCB0c3V1ZnV1a291XCA7CivopoHmsYLogIUgPCB5b3VreXV1c2hhXCA7Civnn6XmgbXooosgPCBjaGllYnVrdXJvXCA7CivntJnpiYTnoLIgPCBrYW1pZGVwcG91XCA7CivliJ3po5vooYwgPCBoYXRzdWhpa291XCA7CivnmbvlsbHlj6MgPCB0b3phbmd1Y2hpXCA7Civosq/msLTph48gPCBjaG9zdWlyeW91XCA7CivnpL7kvJrpjYsgPCBzaGFrYWluYWJlXCA7CivlubPlkozpg6jpmoogPCBoZWl3YWJ1dGFpXCA7Civmrorli7Los54gPCBzaHVrdW5zaG91XCA7CivpgYvli5XpnbQgPCB1bmRvdWd1dHN1XCA7CivkuqTpmpvlm70gPCBrb3VzYWlrb2t1XCA7CivlhavmloflrZcgPCBoYWNoaW1vbmppXCA7Civoo4HliKTmspnmsbAgPCBzYWliYW56YXRhXCA7Civplovnmbrpg6ggPCBrYWloYXRzdWJ1XCA7Civoqr/ljbDlm70gPCBjaG91aW5rb2t1XCA7Civnm7jntprnqI4gPCBzb3V6b2t1emVpXCA7CivonYvkurrlvaIgPCByb3VuaW5neW91XCA7CivkurrlkI3pjLIgPCBqaW5tZWlyb2t1XCA7CivllrbliKnms5XkurogPCBlaXJpaG91amluXCA7CivokL3nrKznlJ8gPCByYWt1ZGFpc2VpXCA7Civlh53ngbDlsqkgPCBneW91a2FpZ2FuXCA7CivliKnku5jlgrUgPCByaXRzdWtpc2FpXCA7CivorbDkvJrmlL/msrsgPCBnaWthaXNlaWppXCA7Civpm6jlpKnpoIblu7YgPCB1dGVuanVuJydlblwgOwor5L2T6IWU5aOBIDwgdGFpa291aGVraVwgOwor5oyH5o6M57SLIDwgc2hpc2hvdW1vblwgOwor5LuY5biv6LK755SoIDwgZnV0YWloaXlvdVwgOwor5aWH6Leh55qEIDwga2lzZWtpdGVraVwgOwor5Luj6K2w5ZOh5ZujIDwgZGFpZ2lpbmRhblwgOwor6JuL55m95rqQIDwgdGFucGFrdWdlblwgOwor5pat5pyr6a2UIDwgZGFubWF0c3VtYVwgOwor6Kmz5Lyd56S+IDwgc2hvdWRlbnNoYVwgOwor6JGs5YSA5byPIDwgc291Z2lzaGlraVwgOwor5pCN5a6z6aGNIDwgc29uZ2FpZ2FrdVwgOwor6YmE6Yu85qWtIDwgdGVra291Z3lvdVwgOwor5pqX57Sr6ImyIDwgYW5zaGlzaG9rdVwgOwor5YWI5Lu76aCGIDwgc2VuJyduaW5qdW5cIDsKK+WlveaIpueahCA8IGtvdXNlbnRla2lcIDsKK+mYsumVt+WumCA8IGJvdWNob3VrYW5cIDsKK+awtOWcp+ioiCA8IHN1aWF0c3VrZWlcIDsKK+WkluWbveWLoiA8IGdhaWtva3V6ZWlcIDsKK+mfk+WbveS6uiA8IGthbmtva3VqaW5cIDsKK+aVoumXmOizniA8IGthbnRvdXNob3VcIDsKK+a1geizqiA8IHJ5dXVzaGljaGlcIDsKK+apn+WGhemjnyA8IGtpbmFpc2hva3VcIDsKK+ijj+eVque1hCA8IHVyYWJhbmd1bWlcIDsKK+WbvemYsuirliA8IGtva3Vib3Vyb25cIDsKK+S6jOmHjeiqsueojiA8IG5panV1a2F6ZWlcIDsKK+aJtumkiuaOp+mZpCA8IGZ1eW91a291am9cIDsKK+Wbvemam+e3miA8IGtva3VzYWlzZW5cIDsKK+ihm+aYn+mDveW4giA8IGVpc2VpdG9zaGlcIDsKK+mbu+awl+Wbnui3ryA8IGRlbmtpa2Fpcm9cIDsKK+iyuOmHkeW6qyA8IGthc2hpa2lua29cIDsKK+mAn+iomOihkyA8IHNva2tpanV0c3VcIDsKK+WbveiogOiRiSA8IGt1bmlrb3RvYmFcIDsKK+aKveWHuiA8IGNodXVzaHV0c3VcIDsKK+WMkOihjOeWuSA8IGZ1a2tvdXNoaW5cIDsKK+eUuuW3peWgtCA8IG1hY2hpa291YmFcIDsKK+WcsOS4i+S6jOmajiA8IGNoaWthbmlrYWlcIDsKK+iHs+aApeS+vyA8IHNoaWt5dXViaW5cIDsKK+WuneWGoOeroCA8IGhvdWthbnNob3VcIDsKK+iLpeaXpumCoyA8IHdha2FkYW4nJ25hXCA7CivmjJHmiKbogIUgPCBjaG91c2Vuc2hhXCA7CivpiYTpibHnn7MgPCB0ZWtrb3VzZWtpXCA7CivmqKrpmpTohpwgPCBvdWtha3VtYWt1XCA7CivpoJDph5Hlj6PluqcgPCB5b2tpbmtvdXphXCA7CivlkIzmpa3ogIUgPCBkb3VneW91c2hhXCA7CivmtLvnlKjoqp4gPCBrYXRzdXlvdWdvXCA7Civmt7HlkbzlkLggPCBzaGlua29reXV1XCA7CivkuInnlarpto8gPCBzYW5iYW5kb3JpXCA7CivliKTku7vlrpggPCBoYW4nJ25pbmthblwgOwor5aSW5Zu95YK1IDwgZ2Fpa29rdXNhaVwgOwor6YCj57Wh6Ii5IDwgcmVucmFrdXNlblwgOwor6JC956ys54K5IDwgcmFrdWRhaXRlblwgOwor6YCy6KGM55u4IDwgc2hpbmtvdXNvdVwgOwor6Imy5oGL5rKZ5rGwIDwgaXJva29pemF0YVwgOwor5rG65a6a55qEIDwga2V0dGVpdGVraVwgOwor6IKJ5paZ55CGIDwgbmlrdXJ5b3VyaVwgOwor5paH5rOV55qEIDwgYnVucG91dGVraVwgOwor5Zu95paH5rOVIDwga29rdWJ1bnBvdVwgOwor6LaF5byp57SaIDwgY2hvdWRva3l1dVwgOwor5aSn6JS155yBIDwgb29rdXJhc2hvdVwgOwor5oSf5oOF55qEIDwga2Fuam91dGVraVwgOwor5LmX5ZCI6Ii5IDwgbm9yaWFpYnVuZVwgOwor5b6z55So5ZOBIDwgdG9rdXlvdWhpblwgOwor54eD5paZ5qOSIDwgbmVucnlvdWJvdVwgOwor5LqM5pel6YWUIDwgZnV0c3VrYXlvaVwgOwor56We57WM57O7IDwgc2hpbmtlaWtlaVwgOwor5Luu6K2w6ZW3IDwga2FyaWdpY2hvdVwgOwor6LKo5bmj5L6h5YCkIDwga2FoZWlrYWNoaVwgOwor54us5pat6KuWIDwgZG9rdWRhbnJvblwgOwor5aSW5Zu95Lq6IDwgZ2Fpa29rdWppblwgOwor54+N57Oe5ryiIDwgY2hpbnB1bmthblwgOwor5oyv5YuV5p2/IDwgc2hpbmRvdWJhblwgOwor5q6L5YuZ5pW055CGIDwgemFubXVzZWlyaVwgOwor5Li75pWZ5YagIDwgc2h1a3lvdWthblwgOwor5q2j5pWZ5birIDwgc2Vpa3lvdXNoaVwgOwor57Sw6I+M5a2mIDwgc2Fpa2luZ2FrdVwgOwor6Jyc5pyIIDwgbWl0c3VnZXRzdVwgOwor6ICV5L2c5ZywIDwga291c2FrdWNoaVwgOwor5pS56YCy5YWaIDwga2Fpc2hpbnRvdVwgOwor5LiJ5YiG5pCXIDwgc2FuYnV0c3VraVwgOwor5LyR6ZaR5ZywIDwga3l1dWthbmNoaVwgOwor6LuN55So6ImmIDwgZ3VuJyd5b3VrYW5cIDsKK+aWsOiBnue0mSA8IHNoaW5idW5zaGlcIDsKK+i8u+WwhOeCuSA8IGZ1a3VzaGF0ZW5cIDsKK+WFrOWWtuS/nemZuiA8IGtvdWVpaG9rZW5cIDsKK+S4luS/l+eahCA8IHNlem9rdXRla2lcIDsKK+mHjeWcp+aEnyA8IGp1dWF0c3VrYW5cIDsKK+ixhumJhOegsiA8IG1hbWVkZXBwb3VcIDsKK+WEquengOWTgSA8IHl1dXNodXVoaW5cIDsKK+epuua2mSA8IHNvcmFuYW1pZGFcIDsKK+mHkeiejeeVjCA8IGtpbicneXV1a2FpXCA7Civlgo3ogbTliLggPCBib3VjaG91a2VuXCA7Civosq/ph5HnrrEgPCBjaG9raW5iYWtvXCA7Civlm73looPnt5ogPCBrb2treW91c2VuXCA7CivorbLmuKHmi4Xkv50gPCBqb3V0b3RhbnBvXCA7CivompXns7jmpa0gPCBzYW5zaGlneW91XCA7CivkuIDlubTojYkgPCBpY2hpbmVuc291XCA7Civpq5jlr4bluqYgPCBrb3VtaXRzdWRvXCA7CivlhY3nlqvkvZMgPCBtZW4nJ2VraXRhaVwgOwor56OB5rCX5bWQIDwgamlraWFyYXNoaVwgOwor5oyv5YuV5pWwIDwgc2hpbmRvdXN1dVwgOwor5aSn56S85pyNIDwgdGFpcmVpZnVrdVwgOwor5pS56Imv56iuIDwga2FpcnlvdXNodVwgOwor5YyX5Zu95Lq6IDwgaG9ra29rdWppblwgOwor54mi5b255Lq6IDwgcm91eWFrdW5pblwgOwor5riL5riLIDwgc2hpYnVzaGlidVwgOwor5YaF56Wd6KiAIDwgbmFpc2h1dWdlblwgOwor5LiA5a625Zuj5qySIDwgaWtrYWRhbnJhblwgOwor5Luj6K2w5ZOh5LyaIDwgZGFpZ2lpbmthaVwgOwor5Y2K6Lqr5YOPIDwgaGFuc2hpbnpvdVwgOwor5aSn6buS5aSpIDwgZGFpa29rdXRlblwgOwor56aP6KKLIDwgZnVrdWJ1a3Vyb1wgOwor6KOc5q2j5LqI566XIDwgaG9zZWl5b3NhblwgOwor5LiN5YiG5YmyIDwgZnVidW5rYXRzdVwgOwor6KW/5YyX6KW/IDwgc2VpaG9rdXNlaVwgOwor6YGO5Ymw6Ziy6KGbIDwga2Fqb3Vib3VlaVwgOwor562S5YWIIDwgdHN1dHN1c2FraVwgOwor562G5YqbIDwgaGl0c3VyeW9rdVwgOwor5oCS6auq5aSpIDwgZG9oYXRzdXRlblwgOwor5oiR5b+DIDwgd2FnYWtva29yb1wgOwor5LqI5YKZ5bqn5bitIDwgeW9iaXphc2VraVwgOwor5Y+N6Z2p5ZG9IDwgaGFua2FrdW1laVwgOwor6KGb55Sf5Z+65rqWIDwgZWlzZWlraWp1blwgOwor5paw6IGe56S+IDwgc2hpbmJ1bnNoYVwgOwor5LiA5qmf6Lu4IDwgaWNoaWtpamlrdVwgOwor5L+d6K235Zuj5L2TIDwgaG9nb2RhbnRhaVwgOwor6ZuG6a2a54GvIDwgc2h1dWd5b3RvdVwgOwor6Zuq6KaL6YWSIDwgeXVraW1pemFrZVwgOwor5YSA6KOF6aas6LuKIDwgZ2lzb3ViYXNoYVwgOwor5Z2K5Li76aCtIDwgYm91enVhdGFtYVwgOwor5YWI6aiT55qEIDwgc2Vua2VudGVraVwgOwor6ZeH57Wm5LiOIDwgeWFtaWt5dXV5b1wgOwor5pmC5LqL5ZWP6aGMIDwgamlqaW1vbmRhaVwgOwor5YKN6IG05Lq6IDwgYm91Y2hvdW5pblwgOwor5LqL5a6f5LiKIDwgamlqaXRzdWpvdVwgOwor576p5L6g5b+DIDwgZ2lreW91c2hpblwgOwor55So5rC05aCAIDwgeW91c3VpYm9yaVwgOwor6buS6Iu6IDwga3Vyb2ljaGlnb1wgOwor5Luu5pmu6KuLIDwga2FyaWJ1c2hpblwgOwor5Y2g6aCY5ZywIDwgc2VucnlvdWNoaVwgOwor5a+d6KOF5ZOBIDwgc2hpbnNvdWhpblwgOwor55S65YaF5LyaIDwgY2hvdW5haWthaVwgOwor5ZCM55uf5Zu9IDwgZG91bWVpa29rdVwgOwor55m66IKy5pyfIDwgaGF0c3Vpa3VraVwgOwor6KqT57SE5pu4IDwgc2VpeWFrdXNob1wgOwor55m65bGV5LitIDwgaGF0dGVuY2h1dVwgOwor6Iy255Wq55qEIDwgY2hhYmFudGVraVwgOwor54m555Sj5ZOBIDwgdG9rdXNhbmhpblwgOwor5aSr5amm5Zan5ZipIDwgZnV1ZnVnZW5rYVwgOwor6KO957KJ5qWtIDwgc2VpZnVuZ3lvdVwgOwor5raI5Y675rOVIDwgc2hvdWt5b2hvdVwgOwor6IKb6ZaA5a2mIDwga291bW9uZ2FrdVwgOwor56ep56aEIDwgY2hpdHN1cm9rdVwgOwor5aSn5Y+45pWZIDwgZGFpc2hpa3lvdVwgOwor5aaE5oOz55eHIDwgbW91c291c2hvdVwgOwor5b6h55So6YGUIDwgZ295b3VkYXRzdVwgOwor5bGV56S654mpIDwgdGVuamlidXRzdVwgOwor6Ieq5q666ICFIDwgamlzYXRzdXNoYVwgOwor5L2c5puy5a62IDwgc2Fra3lva3VrYVwgOwor5YWs5pWZ5LyaIDwga291a3lvdWthaVwgOwor5Y+I6ZqjIDwgbWF0YWRvbmFyaVwgOwor6KiI55S75oCnIDwga2Vpa2FrdXNlaVwgOwor5YiH6L+r5oSfIDwgc2VwcGFrdWthblwgOwor5p6i5a+G6ZmiIDwgc3V1bWl0c3VpblwgOwor5Zub5YWt5YikIDwgc2hpcm9rdWJhblwgOwor6L+95L2T6aiTIDwgdHN1aXRhaWtlblwgOwor5YWl5aC06ICFIDwgbnl1dWpvdXNoYVwgOwor5Y2K55eF5Lq6IDwgaGFuYnlvdW5pblwgOwor6YeR6YuPIDwga2FuYWJhc2FtaVwgOwor5pat5Zu65oqX6K2wIDwgZGFua29rb3VnaVwgOwor5o2c57Si6ZqKIDwgc291c2FrdXRhaVwgOwor5Y+L5aW95Zu9IDwgeXV1a291a29rdVwgOwor5q6/5LiK5Lq6IDwgdGVuam91Yml0b1wgOwor54Sh5rC054mpIDwgbXVzdWlidXRzdVwgOwor5YGl5bq355qEIDwga2Vua291dGVraVwgOwor5paw5L2T5pONIDwgc2hpbnRhaXNvdVwgOwor5oeQ5omLIDwgZnV0b2tvcm9kZVwgOwor56m65Lit57eaIDwga3V1Y2h1dXNlblwgOwor55Sw6IiO6YGTIDwgaW5ha2FtaWNoaVwgOwor5rOi5LmD6IqxIDwgbmFtaW5vaGFuYVwgOwor5YG25YOP5pWZIDwgZ3V1em91a3lvdVwgOwor56We6Kmx5a2mIDwgc2hpbndhZ2FrdVwgOwor55u457aa5qipIDwgc291em9rdWtlblwgOwor5oCn5pWZ6IKyIDwgc2Vpa3lvdWlrdVwgOwor5YmN5ZOo57eaIDwgemVuc2hvdXNlblwgOwor5LqU6Lyq6IGW54GrIDwgZ29yaW5zZWlrYVwgOwor54us5aWP6ICFIDwgZG9rdXNvdXNoYVwgOwor6Ieq5YiG5Yud5omLIDwgamlidW5rYXR0ZVwgOwor6LWk6KGA55CDIDwgc2Vra2Vra3l1dVwgOwor5aSp5Y+w5a6XIDwgdGVuZGFpc2h1dVwgOwor6LuN5qW95omLIDwgZ3VuZ2FrdXNodVwgOwor6LuN6ZyA5pmv5rCXIDwgZ3VuanVrZWlraVwgOwor6LuN6Imm5be7IDwgZ3Vua2FubWFraVwgOwor6buS57eRIDwga3Vyb21pZG9yaVwgOwor5pqX6KSQ6ImyIDwgYW5rYXNzaG9rdVwgOwor6YCG5L2c55SoIDwgZ3lha3VzYXlvdVwgOwor5oyR5oim54q2IDwgY2hvdXNlbmpvdVwgOwor5qSc6YeP57eaIDwga2VucnlvdXNlblwgOwor57ay5p2T5a2QIDwgYW1pamFrdXNoaVwgOwor5YaN5rOo5paHIDwgc2FpY2h1dW1vblwgOwor5YaF5Y+N6LazIDwgbmFpaGFuc29rdVwgOwor5bm05bCR6ICFIDwgbmVuc2hvdXNoYVwgOwor5paw55Sf5LujIDwgc2hpbnNlaWRhaVwgOwor5L+d566h54mpIDwgaG9rYW5idXRzdVwgOwor5Z+65bqV6YOo6ZaAIDwga2l0ZWlidW1vblwgOwor5YSq5Yud6ICFIDwgeXV1c2hvdXNoYVwgOwor5pS56Imv54K5IDwga2FpcnlvdXRlblwgOwor5Li45aSq5bCP5bGLIDwgbWFydXRhZ295YVwgOwor5oWE54OIIDwgcml0c3VyZXRzdVwgOwor57Wm5o6S5rC0IDwga3l1dWhhaXN1aVwgOwor5aSp55y86Y+hIDwgdGVuZ2Fua3lvdVwgOwor5LiJ6YCj5YudIDwgc2FucmVuc2hvdVwgOwor5LiN55m65by+IDwgZnVoYXRzdWRhblwgOwor5Y2K5a6Y55qEIDwgaGFua2FudGVraVwgOwor5oyv5YuV5a2QIDwgc2hpbmRvdXNoaVwgOwor6Yu45q2vIDwgbm9rb2dpcmliYVwgOwor5rS755m65YyWIDwga2FwcGF0c3VrYVwgOwor5LqI5oOz5Yip55uKIDwgeW9zb3VyaWVraVwgOwor5Y+O6ZuG5a62IDwgc2h1dXNodXVrYVwgOwor6YW45YyW6YmEIDwgc2Fua2F0ZXRzdVwgOwor5paw5Lq6546LIDwgc2hpbmppbicnb3VcIDsKK+W7tuaXpeaVsCA8IG5vYmVuaXNzdXVcIDsKK+WlieeMrumgjCA8IGhvdWtlbnNob3VcIDsKK+iyuOW6l+iIlyA8IGthc2hpdGVucG9cIDsKK+S6lOmfs+mfs+majiA8IGdvb24nJ29ua2FpXCA7CivkuozkurrlhbEgPCBmdXRhcml0b21vXCA7Civlj47mloLliaQgPCBzaHV1cmVuemFpXCA7Civlm73pmpvms5UgPCBrb2t1c2FpaG91XCA7Civpq5jlrablubQgPCBrb3VnYWt1bmVuXCA7CivmoLjngb3lrrMgPCBrYWt1c2FpZ2FpXCA7CivkvL3ojYnlrZAgPCB0b2dpem91c2hpXCA7Civnhb3mg4XnmoQgPCBzZW5qb3V0ZWtpXCA7Civoqo3oqLzlrpggPCBuaW5zaG91a2FuXCA7CivppIrompXmpa0gPCB5b3VzYW5neW91XCA7CivngavlsbHohIggPCBrYXphbm15YWt1XCA7Civoj5znqK7mrrsgPCBuYXRhbmVnYXJhXCA7Civpgb/mmpHlrqIgPCBoaXNob2t5YWt1XCA7CivngavmsJfljrPnpoEgPCBrYWtpZ2Vua2luXCA7Civmm7joqZXmrIQgPCBzaG9oeW91cmFuXCA7CivlhaXloLTnqI4gPCBueXV1am91emVpXCA7CivmuozliYwgPCBoYXRzdXJhdHN1XCA7CivoqabkvZzou4ogPCBzaGlzYWt1c2hhXCA7CivnjYTkuK3oqJggPCBnb2t1Y2h1dWtpXCA7CivkubPlhYTlvJ8gPCBjaGlreW91ZGFpXCA7CivljYHlrZfmnrblg48gPCBqdXVqaWthem91XCA7CivkuozkuIPml6UgPCBmdXRhbmFub2thXCA7CivmraPmlZnkvJogPCBzZWlreW91a2FpXCA7CivlhYjnlJ/mlrkgPCBzZW5zZWlnYXRhXCA7CivojYnpm7Lpm4AgPCBrdXNhaGliYXJpXCA7Civkvo3lvpPogbcgPCBqaWp1dXNob2t1XCA7Civlh6bnkIbpgY7nqIsgPCBzaG9yaWthdGVpXCA7CivlnLDlvaLlraYgPCBjaGlrZWlnYWt1XCA7CivkuIDlrprkuI3lpIkgPCBpdHRlaWZ1aGVuXCA7CivmnIjkuIvnvo7kurogPCBnZWtrYWJpamluXCA7CivkuIDnm7Tnt5ogPCBpdGNob2t1c2VuXCA7CivlpKnnnLzpgJogPCB0ZW5nYW50c3V1XCA7Civku7LosrfkurogPCBuYWthZ2FpbmluXCA7CivolqznkIblraYgPCB5YWt1cmlnYWt1XCA7CivngKzmiLjlhoXmtbcgPCBzZXRvbmFpa2FpXCA7CivogIHmlL/msrvlrrYgPCByb3VzZWlqaWthXCA7Civlm73mloflsIIgPCBrb2t1YnVuc2VuXCA7CivkuIDlubTnlJ8gPCBpY2hpbmVuc2VpXCA7CivlrprlvI/ljJYgPCB0ZWlzaGlraWthXCA7CivllYbmpa3ljJYgPCBzaG91Z3lvdWthXCA7CivkuIDovKrou4ogPCBpY2hpcmluc2hhXCA7Civlip/liKnkuLvnvqkgPCBrb3VyaXNodWdpXCA7Civmu7Lngq3pi7wgPCBzaGludGFua291XCA7Civou43nlKjniqwgPCBndW4nJ3lvdWtlblwgOwor5YWt6KeS5aCCIDwgcm9ra2FrdWRvdVwgOwor5bqK5pqW5oi/IDwgeXVrYWRhbmJvdVwgOwor562G5LiN57K+IDwgZnVkZWJ1c2hvdVwgOwor5rW354eVIDwgdW1pdHN1YmFtZVwgOwor5YWs6Ki85Lq6IDwga291c2hvdW5pblwgOwor6KaP5Yi257ep5ZKMIDwga2lzZWlrYW53YVwgOwor54mn6I2J5ZywIDwgYm9rdXNvdWNoaVwgOwor5bGe5oCn5YCkIDwgem9rdXNlaWNoaVwgOwor6Kej5q+S6JasIDwgZ2Vkb2t1eWFrdVwgOwor5rqA5pyf5pelIDwgbWFua2lqaXRzdVwgOwor5ZCN5L2c6YG4IDwgbWVpc2FrdXNlblwgOwor5aaC5piv5oiR6IGeIDwgbnlvemVnYW1vblwgOwor5piO5rK75pmC5LujIDwgbWVpamlqaWRhaVwgOwor5ZWG55So5paHIDwgc2hvdXlvdWJ1blwgOwor5ZCM5YyW5L2c55SoIDwgZG91a2FzYXlvdVwgOwor5Zu96Kqe5a2mIDwga29rdWdvZ2FrdVwgOwor5Y+v5Y+K55qEIDwga2FreXV1dGVraVwgOwor5Yil6YCU6aCQ6YeRIDwgYmV0dG95b2tpblwgOwor6YeR6KKLIDwga2FuYWJ1a3Vyb1wgOwor5YaZ55yf54+tIDwgc2hhc2hpbmhhblwgOwor5rK56JmrIDwgYWJ1cmFtdXNoaVwgOwor5LiA5YWD6KuWIDwgaWNoaWdlbnJvblwgOwor5LiL56iu5qC55oCnIDwgZ2VzdWtvbmpvdVwgOwor6Kq/5Ymk5birIDwgY2hvdXphaXNoaVwgOwor5Y2Y5LiJ5b2iIDwgdGFuc2FuZ2F0YVwgOwor55Sy5YaR5birIDwga2F0Y2h1dXNoaVwgOwor5YWI5Lu76ICFIDwgc2VuJyduaW5zaGFcIDsKK+absue3mue+jiA8IGt5b2t1c2VuYmlcIDsKK+mKgOeLkCA8IGdpbmdpdHN1bmVcIDsKK+WNl+miqCA8IG1pbmFtaWthemVcIDsKK+WFrOe0hOaVsCA8IGtvdXlha3VzdXVcIDsKK+eGseeLguiAhSA8IG5la2t5b3VzaGFcIDsKK+awtOe0i+WtpiA8IHN1aW1vbmdha3VcIDsKK+S6uueoruWtpiA8IGppbnNodWdha3VcIDsKK+aui+W/jeaApyA8IHphbicnbmluc2VpXCA7Civmj7TliqnkuqTpmpsgPCBlbmpva291c2FpXCA7CivomZDmrrogPCBneWFrdXNhdHN1XCA7Civnm7jplqLnmoQgPCBzb3VrYW50ZWtpXCA7CivlhpnnnJ/niYggPCBzaGFzaGluYmFuXCA7CivnlJ/mga/lnLAgPCBzZWlzb2t1Y2hpXCA7Civlm73kvJrorbDlk6EgPCBrb2trYWlnaWluXCA7CivlnJ/lnLDliKnnlKggPCB0b2NoaXJpeW91XCA7Civnn6XmgKfnmoQgPCBjaGlzZWl0ZWtpXCA7CivmoITmnq/nm5voobAgPCBlaWtvc2Vpc3VpXCA7CivmnKrnmbrpgZQgPCBtaWhhdHRhdHN1XCA7CivplovluZXmiKYgPCBrYWltYWt1c2VuXCA7Civnm7jkupLkvZznlKggPCBzb3Vnb3NheW91XCA7CivmsLTpj6EgPCBtaXp1a2FnYW1pXCA7CivoiJ7lj7DooaPoo4UgPCBidXRhaWlzaG91XCA7CivlvozphY3moKogPCBrb3VoYWlrYWJ1XCA7CivlgZzms4rlnLAgPCB0ZWloYWt1Y2hpXCA7CivnvbnmgqPnjocgPCByaWthbnJpdHN1XCA7CivpgLLooYzlvaIgPCBzaGlua291a2VpXCA7CivpgZPlvrPkuIogPCBkb3V0b2t1am91XCA7CivnpL7kvJrnmoQgPCBzaGFrYWl0ZWtpXCA7CivpnIfmupDlnLAgPCBzaGluZ2VuY2hpXCA7CivmmJ/pm7LoqqwgPCBzZWl1bnNldHN1XCA7CivmsrPljp/ogIUgPCBrYXdhcmFtb25vXCA7CivmurrmrbvogIUgPCBkZWtpc2hpc2hhXCA7CivmtbfllYbms5UgPCBrYWlzaG91aG91XCA7CivnkIbpq6rlupcgPCByaWhhdHN1dGVuXCA7Civpnanlkb3ou40gPCBrYWt1bWVpZ3VuXCA7CivmtLvniakgPCBrYXRzdWJ1dHN1XCA7CivljbXphZIgPCB0YW1hZ296YWtlXCA7CivlkIjorbDliLbluqYgPCBnb3VnaXNlaWRvXCA7Civmm7joqozlraYgPCBzaG9zaGlnYWt1XCA7CivkuozphbjljJbnoavpu4QgPCBuaXNhbmthaW91XCA7CivnkIbpq6rluKsgPCByaWhhdHN1c2hpXCA7CivkuJbkv5flv4MgPCBzZXpva3VzaGluXCA7Civpganku7vogIUgPCB0ZWtpbmluc2hhXCA7CivlpInlnKfmiYAgPCBoZW4nJ2F0c3Vqb1wgOwor5ryi5rCR5pePIDwga2FubWluem9rdVwgOwor6YGp55So5oCnIDwgdGVraXlvdXNlaVwgOwor6YO96bOlIDwgbWl5YWtvZG9yaVwgOwor5rG66KOCIDwga2V0c3VyZXRzdVwgOwor6Jas566xIDwga3VzdXJpYmFrb1wgOwor6bqm55WRIDwgbXVnaWJhdGFrZVwgOwor6ZuM6ZuE55Ww5qCqIDwgc2hpeXV1aXNodVwgOwor55u06KuH5YikIDwgamlrYWRhbnBhblwgOwor6IOM5L+h6ICFIDwgaGFpc2hpbnNoYVwgOwor562G6ICV5paZIDwgaGlra291cnlvdVwgOwor5Lyd5rOV6IKMIDwgZGVuYm91aGFkYVwgOwor57mK5q+b6JmrIDwgc2VubW91Y2h1dVwgOwor56u25aOy5Lq6IDwga3lvdWJhaW5pblwgOwor5L2c6Kme6ICFIDwgc2FrdXNoaXNoYVwgOwor6buS5ryGIDwga29rdXNoaXRzdVwgOwor5a6J5q276KGTIDwgYW5zaGlqdXRzdVwgOwor5ZaJ5LuPIDwgbm9kb2JvdG9rZVwgOwor5Y+N5bCE6Kqk5beuIDwgaGFuc2hhZ29zYVwgOwor5aGp57Sg6YW45aGpIDwgZW5zb3NhbicnZW5cIDsKK+apn+WLleWKmyA8IGtpZG91cnlva3VcIDsKK+e1tuWvvuiqpOW3riA8IHpldHRhaWdvc2FcIDsKK+acgOe1guWbniA8IHNhaXNodXVrYWlcIDsKK+S4u+imgeWbvSA8IHNodXlvdWtva3VcIDsKK+WPjemZveWtkCA8IGhhbicneW91c2hpXCA7CivlhoXlkJHnmoQgPCBuYWlrb3V0ZWtpXCA7CivpmLLmva7loKQgPCBib3VjaG91dGVpXCA7CivnianmkI3kuovmlYUgPCBidXNzb25qaWtvXCA7CivmtrLmmbbnm6QgPCBla2lzaG91YmFuXCA7CivnpZ7ntYzmiKYgPCBzaGlua2Vpc2VuXCA7Civpu4TlhavkuIggPCBraWhhY2hpam91XCA7Civooajkuozpmo4gPCBvbW90ZW5pa2FpXCA7CivoqabpqJPnmoQgPCBzaGlrZW50ZWtpXCA7CivlsaDmrrrloLQgPCB0b3NhdHN1am91XCA7Civml4XmlK/luqYgPCB0YWJpaml0YWt1XCA7Civlhajpg6jkv53pmbogPCB6ZW5idWhva2VuXCA7Civph5Hogb4gPCBrYW5hdHN1bmJvXCA7Civmm7jnsKHpm4YgPCBzaG9rYW5zaHV1XCA7CivllrbmnpflsYAgPCBlaXJpbmt5b2t1XCA7CivnhKHph43lipsgPCBtdWp1dXJ5b2t1XCA7CivpgbrlpLHogIUgPCBpc2hpdHN1c2hhXCA7Civmgqrlt6vlsbHmiK8gPCB3YXJ1ZnV6YWtlXCA7CivmlbTlvaLlpJbnp5EgPCBzZWlrZWlnZWthXCA7CivnlJ/lvpfmqKkgPCBzZWl0b2t1a2VuXCA7CivnsbPpqJLli5UgPCBrb21lc291ZG91XCA7CivmlrDkvZPliLYgPCBzaGludGFpc2VpXCA7CivooYDmuIXlraYgPCBrZXNzZWlnYWt1XCA7Civpg6jplbfplrIgPCBidWNob3VldHN1XCA7CivlpJzmg7Pmm7IgPCB5YXNvdWt5b2t1XCA7CivmrablrrbmlL/mqKkgPCBidWtlc2Vpa2VuXCA7CivmpoLlv7XnmoQgPCBnYWluZW50ZWtpXCA7CivnqbrkuK3mqKkgPCBrdXVjaHV1a2VuXCA7CivkuozpoIXliIbluIMgPCBuaWtvdWJ1bnB1XCA7CivlkajpgYrliLggPCBzaHV1eXV1a2VuXCA7CivlibXkvZzogIUgPCBzb3VzYWt1c2hhXCA7CivlkKvns5bph48gPCBnYW50b3VyeW91XCA7CivlgLnntITlrrYgPCBrZW4nJ3lha3VrYVwgOwor5Ye65by15omAIDwgc2h1dGNob3Vqb1wgOwor5pig55S75Lya56S+IDwgZWlnYWdhaXNoYVwgOwor566h55CG6IG3IDwga2FucmlzaG9rdVwgOwor6YmE56Cy55m+5ZCIIDwgdGVwcG91eXVyaVwgOwor5oGQ5oCW55eHIDwga3lvdWZ1c2hvdVwgOwor5pS/55Wl5a62IDwgc2Vpcnlha3VrYVwgOwor5YWs6KGG57ayIDwga291c2h1dW1vdVwgOwor5YWl5aC05qipIDwgbnl1dWpvdWtlblwgOwor5ZCN6KqJ5Lya5ZOhIDwgbWVpeW9rYWlpblwgOwor552j5oim6ZqKIDwgdG9rdXNlbnRhaVwgOwor5Y2D57696ba0IDwgc2VuYmFkenVydVwgOwor5L2P5a6F5ZywIDwganV1dGFrdWNoaVwgOwor5b+c5Yuf55So57SZIDwgb3Vib3lvdXNoaVwgOwor5YaF5oOR5pifIDwgbmFpd2FrdXNlaVwgOwor55yf5q2j55u0IDwgbWFzaG91amlraVwgOwor5a2j56+A6aKoIDwga2lzZXRzdWZ1dVwgOwor5L2O5a2m5bm0IDwgdGVpZ2FrdW5lblwgOwor5a2m57GN57C/IDwgZ2FrdXNla2lib1wgOwor56uL5L2T6Y+hIDwgcml0dGFpa3lvdVwgOwor5LqM6aCF5byPIDwgbmlrb3VzaGlraVwgOwor55m+5pel57SFIDwgc2FydXN1YmVyaVwgOwor6LuN55Wl5a62IDwgZ3Vucnlha3VrYVwgOwor6Ieq5rWE5L2c55SoIDwgamlqb3VzYXlvdVwgOwor5rCR6K2a6ZuGIDwgbWluZGFuc2h1dVwgOwor5oWw5ZWP6KKLIDwgaW1vbmJ1a3Vyb1wgOwor5raI55+z54GwIDwgc2hvdXNla2thaVwgOwor5Y2Y5LiA5YyWIDwgdGFuJydpdHN1a2FcIDsKK+WwgueUqOi7iiA8IHNlbicneW91c2hhXCA7Civku5XoiJ7niakgPCBzaGltYWltb25vXCA7CivlpKfnmb3ps6UgPCBvb2hha3VjaG91XCA7Civnt6nlvpDmm7IgPCBrYW5qb2t5b2t1XCA7CivliIDliaPllYYgPCB0b3VrZW5zaG91XCA7CivkvL3oip3lsYUgPCB0b2dpc2hpYmFpXCA7CivlpJbosqjpoJDph5EgPCBnYWlrYXlva2luXCA7CivmsJfosaHluoEgPCBraXNob3VjaG91XCA7CivkuIDlhobnjokgPCBpY2hpZW5kYW1hXCA7CivmgZDmgJbmmKDnlLsgPCBreW91ZnVlaWdhXCA7CivoqrLnqI7mjqfpmaQgPCBrYXplaWtvdWpvXCA7Civlt6HmtIvoiaYgPCBqdW4nJ3lvdWthblwgOwor5b+F6ZyA5ZOBIDwgaGl0c3VqdWhpblwgOwor5LiN5L+h55SoIDwgZnVzaGluJyd5b3VcIDsKK+a4rOWcsOe3miA8IHNva3VjaGlzZW5cIDsKK+mrmOacqOWxpCA8IGtvdWJva3Vzb3VcIDsKK+ioseWuueiqpOW3riA8IGt5b3lvdWdvc2FcIDsKK+ihqOWxpOaApyA8IGh5b3Vzb3VzZWlcIDsKK+awtOiWrCA8IG1penVndXN1cmlcIDsKK+WHuuW4reewvyA8IHNodXNzZWtpYm9cIDsKK+imqueOi+WmgyA8IHNoaW4nJ25vdWhpXCA7CivphY3ntabns7sgPCBoYWlreXV1a2VpXCA7CivlpInlnKflmaggPCBoZW4nJ2F0c3VraVwgOwor5a6f5L2T6Y+hIDwgaml0dGFpa3lvdVwgOwor5YSq5Yud5p2vIDwgeXV1c2hvdWhhaVwgOwor6YGp5LiN6YGpIDwgdGVraWZ1dGVraVwgOwor5LiN5a6a5pyf5YiRIDwgZnV0ZWlraWtlaVwgOwor56S+5Lqk55qEIDwgc2hha291dGVraVwgOwor6YWN57Wm57GzIDwgaGFpa3l1dW1haVwgOwor5pu46KiY5bGAIDwgc2hva2lreW9rdVwgOwor6LSI5Y+O6LOEIDwgem91c2h1dXdhaVwgOwor5Ye45Ye557SZIDwgdG90c3VvdXNoaVwgOwor6KOB5Yik5Lq6IDwgc2FpYmFuJyduaW5cIDsKK+S7iumBk+W/gyA8IGltYWRvdXNoaW5cIDsKK+aYjuayu+e2reaWsCA8IG1laWppaXNoaW5cIDsKK+e0ueS7i+iAhSA8IHNob3VrYWlzaGFcIDsKK+iogOiqnuapn+iDvSA8IGdlbmdva2lub3VcIDsKK+S/neeojuWAieW6qyA8IGhvemVpc291a29cIDsKK+awl+ixoeWtpiA8IGtpc2hvdWdha3VcIDsKK+ebuOe2muS6uiA8IHNvdXpva3VuaW5cIDsKK+iiq+WRiuW4rSA8IGhpa29rdXNla2lcIDsKK+S5s+iEguiCqiA8IG55dXVzaGlib3VcIDsKK+i+sueJp+WcsCA8IG5vdWJva3VjaGlcIDsKK+WMu+eZguapn+mWoiA8IGlyeW91a2lrYW5cIDsKK+aCquaIr+WtkCA8IGl0YXp1cmFra29cIDsKK+WwhOeahOWgtCA8IHNoYXRla2lqb3VcIDsKK+azieeGsSA8IGl6dW1pbmV0c3VcIDsKK+azleWtpuiAhSA8IGhvdWdha3VzaGFcIDsKK+WFqOWbvee0mSA8IHplbmtva3VzaGlcIDsKK+aVkembo+iIuSA8IGt5dXVuYW5zZW5cIDsKK+mHkeiejeWCtSA8IGtpbicneXV1c2FpXCA7Civnn7PkupXogbDkupIgPCBpc2hpaXNvdWdvXCA7Civou43kuovlsIHpjpYgPCBndW5qaWZ1dXNhXCA7CivkuIrovInlnKcgPCBqb3VzYWlhdHN1XCA7Civlj6PllqflmKkgPCBrdWNoaWdlbmthXCA7CivmiJDkurrnl4UgPCBzZWlqaW5ieW91XCA7CivoirHmsLTmnKggPCBoYW5hbWl6dWtpXCA7CivpgKDlnJLooZMgPCB6b3Vlbmp1dHN1XCA7CivkubPohbrngo4gPCBueXV1c2VuJydlblwgOwor5L2N6ZqO5Yuy562JIDwgaWthaWt1bnRvdVwgOwor5rW05a6kIDwgeW9rdXNoaXRzdVwgOwor5rW35rWB55O2IDwga2Fpcnl1dWJpblwgOwor5YiG5YWJ5a2mIDwgYnVua291Z2FrdVwgOwor5rCR5Li755qEIDwgbWluc2h1dGVraVwgOwor57K+55m957OWIDwgc2VpaGFrdXRvdVwgOwor54Sh5qmf6LOqIDwgbXVraXNoaXRzdVwgOwor5oSb5aiYIDwgbWFuYW11c3VtZVwgOwor6YCa6Kmx5paZIDwgdHN1dXdhcnlvdVwgOwor6ICQ54Gr54WJ55OmIDwgdGFpa2FyZW5nYVwgOwor5pS56Imv5ZOBIDwga2FpcnlvdWhpblwgOwor57K+55m957GzIDwgc2VpaGFrdW1haVwgOwor5b+r5YmK6Yu8IDwga2Fpc2FrdWtvdVwgOwor5pel5ZCR5rC0IDwgaGluYXRhbWl6dVwgOwor5Y+k54u4IDwgZnVydWRhbnVraVwgOwor6Zmq5a+p5ZOhIDwgYmFpc2hpbicnaW5cIDsKK+WPpOS7iueEoemhniA8IGtva29ubXVydWlcIDsKK+W4q+Wbo+mVtyA8IHNoaWRhbmNob3VcIDsKK+e1hOiBt+S9kyA8IHNvc2hva3V0YWlcIDsKK+aenOWun+mFkiA8IGthaml0c3VzaHVcIDsKK+Wpv+mkiuWtkCA8IG11a295b3VzaGlcIDsKK+WGmeecn+W4qyA8IHNoYXNoaW5zaGlcIDsKK+mbu+azoueuoeeQhiA8IGRlbnBha2FucmlcIDsKK+ays+eDjyA8IGthd2FnYXJhc3VcIDsKK+S4i+aknOafuyA8IHNoaXRha2Vuc2FcIDsKK+WEquWLneaIpiA8IHl1dXNob3VzZW5cIDsKK+engeWumyA8IHdhdGFzaGlhdGVcIDsKK+mAo+e2muS9kyA8IHJlbnpva3V0YWlcIDsKK+WkqeWIkeeXhSA8IHRlbmtlaWJ5b3VcIDsKK+awkeS6i+S6i+S7tiA8IG1pbmppamlrZW5cIDsKK+WNiue/heebriA8IGhhbnNoaW1va3VcIDsKK+iMtueVquWKhyA8IGNoYWJhbmdla2lcIDsKK+iHqueEtuS/neittyA8IHNoaXplbmhvZ29cIDsKK+WGmeecn+WxiyA8IHNoYXNoaW4nJ3lhXCA7CivnlLvlg4/lh6bnkIYgPCBnYXpvdXNob3JpXCA7Civoia/lsI7kvZMgPCByeW91ZG91dGFpXCA7CivmlZHkuJbkuLsgPCBreXV1c2Vpc2h1XCA7CivmnKrnnYDmiYsgPCBtaWNoYWt1c2h1XCA7CivkvZzoqanms5UgPCBzYWt1c2hpaG91XCA7CivnnJ/prZrpsLkgPCBtYW5hZ2F0c3VvXCA7Civlh7rlvLXlk6EgPCBzaHV0Y2hvdWluXCA7Civkurrlipvou4ogPCBqaW5yaWtpc2hhXCA7CivnqK7nqK7pm5HlpJogPCBzaHVqdXphdHRhXCA7Civlv4XnvbAgPCBoaXRzdWJhdHN1XCA7CivnpZ3ml6UgPCBzaHVrdWppdHN1XCA7Civlm73pmpvkurogPCBrb2t1c2FpamluXCA7CivmuKzplbfmqZ8gPCBzb2t1Y2hvdWtpXCA7CivlsI/kuLvoprMgPCBzaG91c2h1a2FuXCA7CivmmKDnlLvkv7PlhKogPCBlaWdhaGFpeXV1XCA7Civlrp/ot7XnmoQgPCBqaXNzZW50ZWtpXCA7CivpgKPntZDlmaggPCByZW5rZXRzdWtpXCA7CivogJDkuYXmgKcgPCB0YWlreXV1c2VpXCA7CivmnYnkuKbmnKggPCBzdWdpbmFtaWtpXCA7CivntYLkuoblvowgPCBzaHV1cnlvdWdvXCA7CivlpKnpgZPmp5ggPCB0ZW50b3VzYW1hXCA7CivlkIrmqYsgPCB0c3VyaWJhc2hpXCA7Civmkq7lvbHpmoogPCBzYXRzdWVpdGFpXCA7CivoirHoj5bokrIgPCBoYW5hc2hvdWJ1XCA7CivmpJznnLzpj6EgPCBrZW5nYW5reW91XCA7CivlvaLoqLEgPCBrYXRhYmFrYXJpXCA7CivphbjljJbniakgPCBzYW5rYWJ1dHN1XCA7Civms6LmnpUgPCBuYW1pbWFrdXJhXCA7CivlsI/kvZzmlpkgPCBrb3Nha3VyeW91XCA7CivlurbmsJHnmoQgPCBzaG9taW50ZWtpXCA7CivovKroiJ7mm7IgPCByaW5idWt5b2t1XCA7Civno4HmsJfpjLLpn7MgPCBqaWtpcm9rdW9uXCA7CivkuI3ljZTlkozpn7MgPCBmdWt5b3V3YW9uXCA7Civlh43ntZDlmaggPCB0b3VrZXRzdWtpXCA7CivlpI/onJzmn5EgPCBuYXRzdW1pa2FuXCA7CivmnKzkvY3oqJjlj7cgPCBob24nJ2lraWdvdVwgOwor562J5pa555qEIDwgdG91aG91dGVraVwgOwor6KGb55Sf566h55CGIDwgZWlzZWlrYW5yaVwgOwor5bKp5riF5rC0IDwgaXdhc2hpbWl6dVwgOwor56uL5qGI6ICFIDwgcml0c3VhbnNoYVwgOwor55u45LqS5Li7576pIDwgc291Z29zaHVnaVwgOwor6JGX6L+w5a62IDwgY2hvanV0c3VrYVwgOwor6ISz5qKF5q+SIDwgbm91YmFpZG9rdVwgOwor6LuN55So5ZOBIDwgZ3VuJyd5b3VoaW5cIDsKK+W/nOWLn+izh+mHkSA8IG91Ym9zaGlraW5cIDsKK+WDleS7sumWkyA8IGJva3VuYWthbWFcIDsKK+mbo+imluiBtCA8IG5hbnNoaWNob3VcIDsKK+W+qeWPpOS4u+e+qSA8IGZ1a2tvc2h1Z2lcIDsKK+W+s+e+qeW/gyA8IHRva3VnaXNoaW5cIDsKK+i/kea1t+eJqSA8IGtpbmthaW1vbm9cIDsKK+adsea0i+mAmiA8IHRvdXlvdXRzdXVcIDsKK+asoeS6nOehq+mFuCA8IGppYXJ5dXVzYW5cIDsKK+W5s+WuieaZguS7oyA8IGhlaWFuamlkYWlcIDsKK+mJhOegsueOiSA8IHRlcHBvdWRhbWFcIDsKK+awtOenpCA8IG1penViYWthcmlcIDsKK+a1geWksSA8IHJ5dXVzaGl0c3VcIDsKK+S+oeagvOihqCA8IGtha2FrdWh5b3VcIDsKK+iqv+WBnOiAhSA8IGNob3V0ZWlzaGFcIDsKK+attOWPsuimsyA8IHJla2lzaGlrYW5cIDsKK+W7uuevieiyuyA8IGtlbmNoaWt1aGlcIDsKK+mJi+WxkSA8IGthbicnbmFrdXp1XCA7Civkurrmg4XliocgPCBuaW5qb3VnZWtpXCA7Civoj7HppIUgPCBoaXNoaW1vY2hpXCA7CivlpJrnpZ7mlZkgPCB0YXNoaW5reW91XCA7Civmg4XloLHmqZ/lmaggPCBqb3Vob3VraWtpXCA7CivliY3lk6jlnLAgPCB6ZW5zaG91Y2hpXCA7CivkuInkvY3kuIDkvZMgPCBzYW5taWl0dGFpXCA7CivmlL/li5nmrKHlrpggPCBzZWltdWppa2FuXCA7CivlkInml6UgPCBraWNoaW5pY2hpXCA7CivkuIDluqbkuIggPCBpY2hpZG9kYWtlXCA7CivolqzmjIcgPCBrdXN1cml5dWJpXCA7CivpgKPntaHkvJogPCByZW5yYWt1a2FpXCA7CivkuIDoiKzogbcgPCBpcHBhbnNob2t1XCA7Civpm4zpm4TnlbDkvZMgPCBzaGl5dXVpdGFpXCA7CivnpL7kvJrlraYgPCBzaGFrYWlnYWt1XCA7CivlgbXlr5/mqZ8gPCB0ZWlzYXRzdWtpXCA7Civlr53lj7Dou4ogPCBzaGluZGFpc2hhXCA7CivlubTku6PniakgPCBuZW5kYWltb25vXCA7CivkuKHmm7/kurogPCByeW91Z2FlbmluXCA7CivlkITmlrkgPCBvbm9vbm9nYXRhXCA7Civmrabmlq3mlL/msrsgPCBidWRhbnNlaWppXCA7CivlkIjmoLzogIUgPCBnb3VrYWt1c2hhXCA7Civph5Hmp4wgPCBrYW5hZHp1Y2hpXCA7CivlsILnlKjnt5ogPCBzZW4nJ3lvdXNlblwgOwor5biv5Z+f5bmFIDwgdGFpaWtpaGFiYVwgOwor5Yid5LiA5b+1IDwgc2hvaWNoaW5lblwgOwor57S55LuL54q2IDwgc2hvdWthaWpvdVwgOwor5raI5q+S5ZmoIDwgc2hvdWRva3VraVwgOwor5pem6YKj6KGGIDwgZGFuJyduYXNodXVcIDsKK+WgheS/oeekvCA8IGtlbnNoaW5yZWlcIDsKK+WumOWFrOW6gSA8IGthbmtvdWNob3VcIDsKK+iBtOiBnuWDpyA8IGNob3Vtb25zb3VcIDsKK+WkquW5s+alvSA8IHRhaWhlaXJha3VcIDsKK+S4oeWkqeenpCA8IHJ5b3V0ZW5iaW5cIDsKK+WtlOmbgOefsyA8IGt1amFrdXNla2lcIDsKK+WJteS9nOaoqSA8IHNvdXNha3VrZW5cIDsKK+iJsuS6i+W4qyA8IGlyb2dvdG9zaGlcIDsKK+mFuOWMlueCree0oCA8IHNhbmthdGFuc29cIDsKK+awtOW9qeeUu+WutiA8IHN1aXNhaWdha2FcIDsKK+mZjemtlOihkyA8IGtvdW1hanV0c3VcIDsKK+Wwkeizh+acrCA8IHNob3VzaGlob25cIDsKK+izh+eUo+agqiA8IHNoaXNhbmthYnVcIDsKK+WfuuekjuS7o+isnSA8IGtpc290YWlzaGFcIDsKK+aBkOaAluW/gyA8IGt5b3VmdXNoaW5cIDsKK+Wun+mok+eahCA8IGppa2tlbnRla2lcIDsKK+S9v+W+kumBlCA8IHNoaXRvdGFjaGlcIDsKK+WJjemgrSA8IG1hZWdhc2hpcmFcIDsKK+WuiemFkuWgtCA8IHlhc3VzYWthYmFcIDsKK+iBtOiBnuS8miA8IGNob3Vtb25rYWlcIDsKK+iCsuWFkOmjnyA8IGlrdWppc2hva3VcIDsKK+eUt+S+v+aJgCA8IG90b2tvYmVuam9cIDsKK+mmluWun+aknCA8IGt1YmlqaWtrZW5cIDsKK+e0sOiDnuiGnCA8IHNhaWJvdW1ha3VcIDsKK+WQjeS6uuiCjCA8IG1laWppbmhhZGFcIDsKK+Wwj+WtpuagoSA8IHNob3VnYWtrb3VcIDsKK+S4gOadr+apn+WrjCA8IGlwcGFpa2lnZW5cIDsKK+aXp+iXqeS4uyA8IGt5dXVoYW5zaHVcIDsKK+awkeacieaelyA8IG1pbicneXV1cmluXCA7CivotaTpiYTpibEgPCBzZWtpdGVra291XCA7CivmnKzojYnlraYgPCBob256b3VnYWt1XCA7Civkv67mraPogIUgPCBzaHV1c2Vpc2hhXCA7CivpoqjpgJ/oqIggPCBmdXVzb2t1a2VpXCA7CivpgZPot6/ovLjpgIEgPCBkb3Vyb3l1c291XCA7CivmvZzlnKjnmoQgPCBzZW56YWl0ZWtpXCA7CivlpInmi43lrZAgPCBoZW5ieW91c2hpXCA7Civml6fmgJ3mg7MgPCBreXV1c2hpc291XCA7CivkupznhrHluK/mnpcgPCBhbmV0dGFpcmluXCA7Civpm5HmnKjmnpcgPCB6b3Vib2t1cmluXCA7CivmiKbpl5jnmoQgPCBzZW50b3V0ZWtpXCA7CivpnZLmga/lkJDmga8gPCBhb2lraXRvaWtpXCA7CivntYLpm7vou4ogPCBzaHV1ZGVuc2hhXCA7Civog4znvo7pr6ggPCBzZW1pa3VqaXJhXCA7CivmhYfmh4PnhKHnpLwgPCBpbmdpbmJ1cmVpXCA7CivnqbTmnZPlrZAgPCBhbmFqYWt1c2hpXCA7CivkuIDlubTkuK0gPCBpY2hpbmVuanV1XCA7CivpiYTnoLLmsLQgPCB0ZXBwb3VtaXp1XCA7Civlhajlm73msJEgPCB6ZW5rb2t1bWluXCA7Civkurrlj6PlraYgPCBqaW5rb3VnYWt1XCA7CivmtYHlh7ogPCByeXV1c2h1dHN1XCA7CivmtLvlipsgPCBrYXRzdXJ5b2t1XCA7Civnm7Tmu5HpmY0gPCBjaG9ra2Fra291XCA7Civns57nnJ/pnaLnm64gPCBrdXNvbWFqaW1lXCA7CivkuIrnlLPmm7ggPCBqb3VzaGluc2hvXCA7CivljbXnhLwgPCB0YW1hZ295YWtpXCA7Civph53ljYPmnKwgPCBoYXJpc2VuYm9uXCA7Civoh6rkuLvopo/liLYgPCBqaXNodWtpc2VpXCA7CivkuInmpa3lnLAgPCBzYW5neW91Y2hpXCA7CivkuKblpKfmirUgPCBuYW1pdGFpdGVpXCA7Civnmb3pm7Lnn7MgPCBoYWt1dW5zZWtpXCA7CivmsLTnhZkgPCBtaXp1a2VtdXJpXCA7CivmrKDluK3ogIUgPCBrZXNzZWtpc2hhXCA7CivlvJXlvZPph5EgPCBoaWtpYXRla2luXCA7Civoo4Xpo77pn7MgPCBzb3VzaG9rdW9uXCA7CivoppbogbTogIUgPCBzaGljaG91c2hhXCA7CivkubPoh63lhZAgPCBueXV1c2h1dWppXCA7CivmiYvmsqLmnKwgPCBzaHV0YWt1Ym9uXCA7CivorabmiJLlv4MgPCBrZWlrYWlzaGluXCA7CivlvKXnlJ/mmYLku6MgPCB5YXlvaWppZGFpXCA7CivkuK3lm73oqp4gPCBjaHV1Z29rdWdvXCA7CivlhaXmiYvpm6MgPCBueXV1c2h1bmFuXCA7Civpm7vmtYHoqIggPCBkZW5yeXV1a2VpXCA7CivpgZPpgZMgPCBtaWNoaW1pY2hpXCA7CivkuojlgpnkvJroq4cgPCB5b2Jpa2FpZGFuXCA7CivlkJvkuLvlm70gPCBrdW5zaHVrb2t1XCA7Civpn7Pmpb3lraYgPCBvbmdha3VnYWt1XCA7CivpjK/lrZfnl4cgPCBzYWt1amlzaG91XCA7CivnrYnkvY3mp4vpgKAgPCB0b3Vpa291em91XCA7CivlpKfnm6Tnn7MgPCBkYWliYW5qYWt1XCA7CivliIblrZDph48gPCBidW5zaGlyeW91XCA7CivkuIDnlarojLYgPCBpY2hpYmFuY2hhXCA7Civku5bmtYHoqablkIggPCB0YXJ5dXVqaWFpXCA7Civlronlrprmk43kvZwgPCBhbnRlaXNvdXNhXCA7CivnhKHlhJ/ooYzngrogPCBtdXNob3Vrb3VpXCA7CivpgYXliLvogIUgPCBjaGlrb2t1c2hhXCA7Civlho3nmbrotrMgPCBzYWlob3Nzb2t1XCA7Civlr77ouaDnmoQgPCB0YWlzaG90ZWtpXCA7CivlpI/mnJ/lrabmoKEgPCBrYWtpZ2Fra291XCA7Civmp43ooZPlrrYgPCBzb3VqdXRzdWthXCA7CivmrYzorKHmm7IgPCBrYXlvdWt5b2t1XCA7CivmtLvkurrnlLsgPCBrYXRzdWppbmdhXCA7CivkuozoqIDnm64gPCBmdXRha290b21lXCA7Civljp/lrZDph48gPCBnZW5zaGlyeW91XCA7CivlvLfohbAgPCB0c3V5b2dvc2hpXCA7CivlpKfluYXniakgPCBvb2hhYmFtb25vXCA7Civni6zlpY/kvJogPCBkb2t1c291a2FpXCA7CivliJ3pnJwgPCBoYXRzdXNoaW1vXCA7CivlroflrpnljLvlraYgPCB1Y2h1dWlnYWt1XCA7CivlkI3oqonpmaTpmoogPCBtZWl5b2pvdGFpXCA7CivkupToh5Plha3ohZEgPCBnb3pvdXJvcHB1XCA7Civlj7Plt6YgPCBtaWdpaGlkYXJpXCA7CivohLHoh63liaQgPCBkYXNzaHV1emFpXCA7Civlv6vpgJ/oiLkgPCBrYWlzb2t1c2VuXCA7CivnlJ/mrpblmaggPCBzZWlzaG9rdWtpXCA7Civou4rkuK3oq4cgPCBzaGFjaHV1ZGFuXCA7Civpjq7pnZnliaQgPCBjaGluc2VpemFpXCA7CivlkIjkvbXnl4cgPCBnYXBwZWlzaG91XCA7Civmh4fopqrkvJogPCBrb25zaGlua2FpXCA7CivnnYDpm6ogPCBjaGFrdXNldHN1XCA7Civlv4Xmu4UgPCBoaXRzdW1ldHN1XCA7Civnib3niZvmmJ8gPCBrZW5neXV1c2VpXCA7Civln7fooYzlp5Tlk6EgPCBzaGlra291aWluXCA7Civph4zlv4MgPCBzYXRvZ29rb3JvXCA7Civlm5vpnaLmpZrmrYwgPCBzaGltZW5zb2thXCA7CivojLbmn4TmnZMgPCBjaGFiaXNoYWt1XCA7CivmnInnpZ7oq5YgPCB5dXVzaGlucm9uXCA7Civlkb3kuK3mlbAgPCBtZWljaHV1c3V1XCA7Civmlrnop6Pnn7MgPCBob3VrYWlzZWtpXCA7Civlo7Lmjpvph5EgPCB1cmlrYWtla2luXCA7CivotoXlt6jmmJ8gPCBjaG91a3lvc2VpXCA7Civnq4vkvZPnmoQgPCByaXR0YWl0ZWtpXCA7Civnmb3mmLzlpKIgPCBoYWt1Y2h1dW11XCA7CivmlrDoqJjpjLIgPCBzaGlua2lyb2t1XCA7Civkv53ph4jph5EgPCBob3NoYWt1a2luXCA7Civlj43nspLlrZAgPCBoYW5yeXV1c2hpXCA7CivkuIvotrPmlpkgPCBnZXNva3VyeW91XCA7Civms6jmlofmm7ggPCBjaHV1bW9uc2hvXCA7CivlqIHpoqjloILloIIgPCBpZnV1ZG91ZG91XCA7CivljJblkIjniakgPCBrYWdvdWJ1dHN1XCA7CivlsYvlvaLoiLkgPCB5YWthdGFidW5lXCA7Civou43kuovkvJrorbAgPCBndW5qaWthaWdpXCA7Civot5vooYzmma/msJcgPCBoYWtvdWtlaWtpXCA7CivpgYvli5XlipsgPCB1bmRvdXJ5b2t1XCA7Civpipjpipjnmr8gPCBtZWltZWl6YXJhXCA7Civpu5Lmm5zlsqkgPCBrb2t1eW91Z2FuXCA7Civljp/kvZzogIUgPCBnZW5zYWt1c2hhXCA7CivlhbXnq5nlraYgPCBoZWl0YW5nYWt1XCA7CivntLDlr4bnlLsgPCBzYWltaXRzdWdhXCA7CivppYLpo6nnsonnl4UgPCB1ZG9ua29ieW91XCA7CivkuIDnlarnt5ogPCBpY2hpYmFuc2VuXCA7CivljYrkurrliY0gPCBoYW4nJ25pbm1hZVwgOwor5YqH5aC06KGXIDwgZ2VraWpvdWdhaVwgOwor5aSp5LiL5LiA5ZOBIDwgdGVua2FpcHBpblwgOwor5rG66K2w5qipIDwga2V0c3VnaWtlblwgOwor5Z+65Zyw6ZaJ6Y6WIDwga2ljaGloZWlzYVwgOwor6JG156WtIDwgYW9pbWF0c3VyaVwgOwor5LiA5qe95byPIDwgaXNzb3VzaGlraVwgOwor5a6F5oCl5L6/IDwgdGFra3l1dWJpblwgOwor5rK55aO3IDwgYWJ1cmF0c3Vib1wgOwor6ICB5Lq655eFIDwgcm91amluYnlvdVwgOwor562G6KiY55So5YW3IDwgaGlra2l5b3VndVwgOwor6JK45rCX5qmf6ZaiIDwgam91a2lraWthblwgOwor5ZCI5qC854K5IDwgZ291a2FrdXRlblwgOwor5Yi76LazIDwga2l6YW1pYXNoaVwgOwor6Kmm5L6b5ZOBIDwgc2hpa3lvdWhpblwgOwor5Lit5aCF5omLIDwgY2h1dWtlbnNodVwgOwor6JGb6aWF6aCtIDwga3V6dW1hbmp1dVwgOwor5o6l5a6i5ammIDwgc2Vra3lha3VmdVwgOwor5rS75a2X5pysIDwga2F0c3VqaWhvblwgOwor5ZWP6aGM5YqHIDwgbW9uZGFpZ2VraVwgOwor56OB5rCX5oq15oqXIDwgamlraXRlaWtvdVwgOwor6IG06Kyb55SfIDwgY2hvdWtvdXNlaVwgOwor5rC05p6VIDwgbWl6dW1ha3VyYVwgOwor6LO96Yqt566xIDwgc2Fpc2VuYmFrb1wgOwor5o+Q5ZSx6ICFIDwgdGVpc2hvdXNoYVwgOwor5LiB5a2X5a6a6KaPIDwgdGVpamlqb3VnaVwgOwor5Zm06aOv54mpIDwgZnVucGFubW9ub1wgOwor5Zu65a6a6YeR5YipIDwga290ZWlraW5yaVwgOwor5YiG5qW15YyWIDwgYnVua3lva3VrYVwgOwor566h55CG5bGAIDwga2FucmlreW9rdVwgOwor6KeS6YyQ5Y+wIDwga2FrdXN1aWRhaVwgOwor56aP5bKh55yMIDwgZnVrdW9rYWtlblwgOwor54us5aOH5aC0IDwgZG9rdWRhbmpvdVwgOwor5Luy6ZaT6KSSIDwgbmFrYW1hYm9tZVwgOwor6ZqP5oOz6YyyIDwgenVpc291cm9rdVwgOwor5pKu5b2x6ICFIDwgc2F0c3VlaXNoYVwgOwor5aaC6I+p6JapIDwgbnlvYm9zYXRzdVwgOwor5ZG95Lit5by+IDwgbWVpY2h1dWRhblwgOwor55yf5YiG5pWwIDwgc2hpbmJ1bnN1dVwgOwor6bCv6ZuyIDwgaXdhc2hpZ3Vtb1wgOwor6ZuH55So5Li7IDwga295b3VudXNoaVwgOwor5b+D5p+EIDwga29rb3JvZ2FyYVwgOwor6LW35YuV5pmC6ZaTIDwga2lkb3VqaWthblwgOwor5bm7IDwgbWFib3Jvc2hpXCA7CivlsY0gPCBzaGlrYWJhbmVcIDsKK+WtpCA8IG1pbmFzaGlnb1wgOwor54yqIDwgaW5vc2hpc2hpXCA7CivllIcgPCBrdWNoaWJpcnVcIDsKK+aqoyA8IGhvYmFzaGlyYVwgOwor5qmYIDwgdGFjaGliYW5hXCA7CivlhbUgPCB0c3V3YW1vbm9cIDsKK+mKgCA8IHNoaXJvZ2FuZVwgOwor6YKqIDwgeW9rb3NoaW1hXCA7Civlsa/nlLDlhbUgPCB0b25kZW5oZWlcIDsKK+aVtemDqOmaiiA8IHRla2lidXRhaVwgOwor5oq15b2T5qipIDwgdGVpdG91a2VuXCA7CivmnZHlpKvlrZAgPCBzb25wdXVzaGlcIDsKK+iHquW3seasuueeniA8IGppa29naW1hblwgOwor5oWw5a6J5peF6KGMIDwgaWFucnlva291XCA7Civmj5rmsLTou4ogPCB5b3VzdWlzaGFcIDsKK+aVkeaPtOi7jSA8IGt5dXVlbmd1blwgOwor6IKy5q+b5YmkIDwgaWt1bW91emFpXCA7CivnnaboqIAgPCBtdXRzdWdvdG9cIDsKK+WPjuWlqiA8IHNodXVkYXRzdVwgOwor6buS6aCt5be+IDwga3Vyb3p1a2luXCA7Civop6Pmr5LliaQgPCBnZWRva3V6YWlcIDsKK+aBkOWWnSA8IGt5b3VrYXRzdVwgOwor6auY5ae/5YuiIDwga291c2hpc2VpXCA7CivlsYvlj7DlupcgPCB5YXRhaW1pc2VcIDsKK+i1t+ejgeWKmyA8IGtpamlyeW9rdVwgOwor5Y6f55Sf5p6XIDwgZ2Vuc2VpcmluXCA7CivmrbTlj7LnlLsgPCByZWtpc2hpZ2FcIDsKK+ebrumgrSA8IG1lZ2FzaGlyYVwgOwor6I2J6aSgIDwga3VzYW1vY2hpXCA7CivliY3ljYrnlJ8gPCB6ZW5oYW5zZWlcIDsKK+WtmOWcqOirliA8IHNvbnphaXJvblwgOwor5YqH6IG3IDwgZ2VraXNob2t1XCA7CivluIzmnJvnmoQgPCBraWJvdXRla2lcIDsKK+iWrOS7oyA8IGt1c3VyaWRhaVwgOwor5Lq65bel6Zu3IDwgamlua291cmFpXCA7CivlsILnlKjmqZ8gPCBzZW4nJ3lvdWtpXCA7CivlvLfnm7QgPCBreW91Y2hva3VcIDsKK+W6pumHj+ihoSA8IGRvcnlvdWtvdVwgOwor5YWa5aSn5LyaIDwgdG91dGFpa2FpXCA7CivlkIzkuZfogIUgPCBkb3Vqb3VzaGFcIDsKK+WKtOWLleiAhSA8IHJvdWRvdXNoYVwgOwor5Y2Y5pWw5Z6LIDwgdGFuc3V1a2VpXCA7CivlvpPlhYTlvJ8gPCBqdXVrZWl0ZWlcIDsKK+m9p+atr+mhniA8IGdlc3NoaXJ1aVwgOwor5ZCE5YaKIDwga2FrdXNhdHN1XCA7CivpgJroqqwgPCB0c3V1c2V0c3VcIDsKK+WGoOacqOmWgCA8IGthYnVraW1vblwgOwor5LuY5bGe5ZOBIDwgZnV6b2t1aGluXCA7CivoqKrllY/ogIUgPCBob3Vtb25zaGFcIDsKK+ays+WPoyA8IGthd2FndWNoaVwgOwor6YCG6LOKIDwgZ3lha3V6b2t1XCA7CivpgZPojYkgPCBtaWNoaWt1c2FcIDsKK+eZuumgreS6uiA8IGhvdHRvdW5pblwgOwor5q2756WeIDwgc2hpbmlnYW1pXCA7Civmlofpgbjlt6UgPCBidW5zZW5rb3VcIDsKK+mBqeiBtyA8IHRla2lzaG9rdVwgOwor5qyg6JC9IDwga2V0c3VyYWt1XCA7Civlt7vprqggPCBtYWtpenVzaGlcIDsKK+WQjOWxheS6uiA8IGRvdWt5b25pblwgOwor5Y+C6Kmj5Lq6IDwgc2Fua2VpbmluXCA7Civlvbnlk6HkvJogPCB5YWt1aW5rYWlcIDsKK+WtpOeri+iqniA8IGtvcml0c3Vnb1wgOwor55Sf6I+T5a2QIDwgbmFtYWdhc2hpXCA7Civpm7vmsJflmajlhbcgPCBkZW5raWtpZ3VcIDsKK+WLneeOhyA8IHNob3VyaXRzdVwgOwor5YuY5a6a5pu4IDwga2Fuam91c2hvXCA7CivplovlgqzlnLAgPCBrYWlzYWljaGlcIDsKK+iQveW+jOiAhSA8IHJha3Vnb3NoYVwgOwor5Ye66LuNIDwgc2h1dHN1Z3VuXCA7CivljbHmqZ/miZPogIUgPCBraWtpZGFzaGFcIDsKK+WNiuaXpSA8IGhhbicnbmljaGlcIDsKK+WhqeWMluawtOe0oCA8IGVua2FzdWlzb1wgOwor5Y6E5bm0IDwgeWFrdWRvc2hpXCA7CivnlLflrZDmoKEgPCBkYW5zaGlrb3VcIDsKK+WJpeiEsSA8IGhha3VkYXRzdVwgOwor5LiA6Ium5Yq0IDwgaGl0b2t1cm91XCA7CivlgqzmtpnlvL4gPCBzYWlydWlkYW5cIDsKK+e1seayu+aoqSA8IHRvdWNoaWtlblwgOwor5b6S5qGcIDwgYWRhemFrdXJhXCA7CivljYPml6UgPCBzZW4nJ25pY2hpXCA7CivnpoHou6LovIkgPCBraW50ZW5zYWlcIDsKK+S6uuS6i+eVsOWLlSA8IGppbmppaWRvdVwgOwor5riv5rm+56iOIDwga291d2FuemVpXCA7CivkuI3lr5vlrrkgPCBmdWthbicneW91XCA7CivliKXooYwgPCBiZXRzdWd5b3VcIDsKK+S4jeS/oeS7sCA8IGZ1c2hpbmtvdVwgOwor5aSq5YWs5pybIDwgdGFpa291Ym91XCA7CivkuLjmi6zlvKcgPCBtYXJ1Z2Fra29cIDsKK+WkluWQkeaApyA8IGdhaWtvdXNlaVwgOwor6JC9552AIDwgcmFrdWNoYWt1XCA7CivkuI3otrPliY0gPCB0YXJhenVtYWVcIDsKK+S6jOWbvemWkyA8IG5pa29rdWthblwgOwor5Lqc6Ymb6YmE5p2/IDwgYWVudGVwcGFuXCA7CivkvJrokazogIUgPCBrYWlzb3VzaGFcIDsKK+mBruS6jOeEoeS6jCA8IHNoYW5pbXVuaVwgOwor6YCG6KWyIDwgZ3lha3VzaHV1XCA7Civnpo/lr7/ojYkgPCBmdWt1anVzb3VcIDsKK+avkuauuiA8IGRva3VzYXRzdVwgOwor56K65a6fIDwga2FrdWppdHN1XCA7Civms5Xmm7nnlYwgPCBob3Vzb3VrYWlcIDsKK+mHjeWHuiA8IGp1dXNodXRzdVwgOwor5Y+j5YWIIDwga3VjaGlzYWtpXCA7CivpgYvovLjnnIEgPCB1bicneXVzaG91XCA7Civlj6PlhYMgPCBrdWNoaW1vdG9cIDsKK+W8j+ebriA8IHNoaWtpbW9rdVwgOwor5Y2T5oqcIDwgdGFrdWJhdHN1XCA7CivkuZfou4rpp4UgPCBqb3VzaGFla2lcIDsKK+acnemuruiqniA8IGNob3VzZW5nb1wgOwor6Z2p5ZG95a62IDwga2FrdW1laWthXCA7CivmqZ/lr4bosrsgPCBraW1pdHN1aGlcIDsKK+S6uumAoOexsyA8IGppbnpvdW1haVwgOwor5rSL5ZOB5bqXIDwgeW91aGludGVuXCA7CivlgIvkurrnmoQgPCBrb2ppbnRla2lcIDsKK+S4gOWFg+WMliA8IGljaGlnZW5rYVwgOwor5Lyd6YGT6Ii5IDwgZGVuZG91c2VuXCA7CivmsqHlhaUgPCBib3RzdW55dXVcIDsKK+Wcp+i/q+aEnyA8IGFwcGFrdWthblwgOwor5LqI6Ziy562WIDwgeW9ib3VzYWt1XCA7Civoi6XpmqDlsYUgPCB3YWthaW5reW9cIDsKK+WumuS9j+iAhSA8IHRlaWp1dXNoYVwgOwor5Y+z5LiLIDwgbWlnaXNoaXRhXCA7CivmsLTmurbmgKcgPCBzdWl5b3VzZWlcIDsKK+W8t+eDiCA8IGt5b3VyZXRzdVwgOwor6YG66KiA5pu4IDwgeXVpZ29uc2hvXCA7Civku6Pnh4Pou4ogPCBkYWluZW5zaGFcIDsKK+WkieaIkOWyqSA8IGhlbnNlaWdhblwgOwor5LiA5a6a6YePIDwgaXR0ZWlyeW91XCA7Civoi6bngbDnn7MgPCBrdWthaXNla2lcIDsKK+W3puW/g+aIvyA8IHNhc2hpbmJvdVwgOwor6Lyq55Wq5Yi2IDwgcmluYmFuc2VpXCA7Civoq4vpoZjogIUgPCBzZWlnYW5zaGFcIDsKK+mAuOiEsSA8IGl0c3VkYXRzdVwgOwor55m96buSIDwgc2hpcm9rdXJvXCA7Civnm7TpgZQgPCBqaWtpdGF0c3VcIDsKK+Wcp+i/q+aApyA8IGFwcGFrdXNlaVwgOwor5oGL5LuHIDwga29pZ2F0YWtpXCA7CivnvoXnlJ/ploAgPCByYXNob3Vtb25cIDsKK+ebtOmAsiA8IGNob2t1c2hpblwgOwor5YCL5Lq655SoIDwga29qaW4nJ3lvdVwgOwor5Lqr5Y+X6ICFIDwga3lvdWp1c2hhXCA7CivlvqHotrPlirQgPCBnb3Nva3Vyb3VcIDsKK+ebtOmAmiA8IGNob2t1dHN1dVwgOwor5Ym956qDIDwgaHlvdXNldHN1XCA7CivniKzomavpoZ4gPCBoYWNodXVydWlcIDsKK+i/t+S/oeWutiA8IG1laXNoaW5rYVwgOwor5Ymy5664IDwgd2FyaWJhc2hpXCA7Civmm7jnsKHmlocgPCBzaG9rYW5idW5cIDsKK+ioseWPr+iovCA8IGt5b2thc2hvdVwgOwor5rCR5Li75YWaIDwgbWluc2h1dG91XCA7CivlhY3pu5wgPCBtZW5jaHV0c3VcIDsKK+mHkeS7jyA8IGthbmFidXRzdVwgOwor55m96be6IDwgc2hpcmFzYWdpXCA7CivphrXlh7ogPCBreW9zaHV0c3VcIDsKK+ebtOi9hCA8IGNob2trYXRzdVwgOwor5aSq5YiA5YWIIDwgdGFjaGlzYWtpXCA7CivljaDluKsgPCB1cmFuYWlzaGlcIDsKK+S8nemBk+iAhSA8IGRlbmRvdXNoYVwgOwor55uj6KaW6Ii5IDwga2Fuc2hpc2VuXCA7CivnuITmmpbnsL4gPCBuYXdhbm9yZW5cIDsKK+e2v+ijveWTgSA8IG1lbnNlaWhpblwgOwor55qu6Z20IDwga2F3YWd1dHN1XCA7Civlh7rotbDppqwgPCBzaHVzc291YmFcIDsKK+aApeWIhyA8IGt5dXVzZXRzdVwgOwor5LqM6ZqO5bu6IDwgbmlrYWlkYXRlXCA7Civkv67mraPmoYggPCBzaHV1c2VpYW5cIDsKK+Wuo+S8neaIpiA8IHNlbmRlbnNlblwgOwor6YWJ5bm0IDwgdG9yaWRvc2hpXCA7Civoq4vosqDmpa0gPCB1a2VvaWd5b3VcIDsKK+mhnuS6uueMvyA8IHJ1aWppbicnZW5cIDsKK+WQiOeQhueahCA8IGdvdXJpdGVraVwgOwor5Yud6LKg5birIDwgc2hvdWJ1c2hpXCA7Civns7jomq/ompMgPCBpdG9taW1penVcIDsKK+W7tumVt+aIpiA8IGVuY2hvdXNlblwgOwor5Zyf5bu65qWtIDwgZG9rZW5neW91XCA7CivotIjlkYjlk4EgPCB6b3V0ZWloaW5cIDsKK+mHkemJseWcsCA8IGtpbmtvdWNoaVwgOwor55yf6KO4IDwgbWFwcGFkYWthXCA7CivmmLzlvqHpo68gPCBoaXJ1Z29oYW5cIDsKK+iSmeWPpOilniA8IG1vdWtvaGlkYVwgOwor5Y2K5pyI5YiKIDwgaGFuZ2Vra2FuXCA7Civlh7rooYAgPCBzaHVra2V0c3VcIDsKK+eZvemxmiA8IHNoaXJvZ2lzdVwgOwor6YGT562LIDwgbWljaGlzdWppXCA7CivnnIzmsJHnqI4gPCBrZW5taW56ZWlcIDsKK+aJh+WLleiAhSA8IHNlbmRvdXNoYVwgOwor6ZuG5Lya5omAIDwgc2h1dWthaWpvXCA7CivmnKjlt6XloLQgPCBtb2trb3Vqb3VcIDsKK+a0kuiQveiAhSA8IHNoYXJlbW9ub1wgOwor5oim6ZeY5bi9IDwgc2VudG91Ym91XCA7CivlpJXljJbnsqcgPCB5dXVnZXNob3VcIDsKK+mBk+erryA8IG1pY2hpYmF0YVwgOwor5Y+v5YuV5aCwIDwga2Fkb3V6ZWtpXCA7CivlpKflubTlopcgPCBvb3Rvc2hpbWFcIDsKK+azleeQhuWtpiA8IGhvdXJpZ2FrdVwgOwor6buE6aC36JuHIDwgYW9kYWlzaG91XCA7CivpgI/mmI7kvZMgPCB0b3VtZWl0YWlcIDsKK+aVhemanOi7iiA8IGtvc2hvdXNoYVwgOwor55uj6KaW6ICFIDwga2Fuc2hpc2hhXCA7Civljbjlo7IgPCBvcm9zaGl1cmlcIDsKK+W/mOWksSA8IGJvdXNoaXRzdVwgOwor6JSt5Y+jIDwga2FnZWd1Y2hpXCA7CivljbXlpKcgPCB0YW1hZ29kYWlcIDsKK+W8geaFtuiNiSA8IGJlbmtlaXNvdVwgOwor5Yid6IqxIDwgaGF0c3VoYW5hXCA7CivpgZPnqIsgPCBtaWNoaW5vcmlcIDsKK+WtmOWcqOiAhSA8IHNvbnphaXNoYVwgOwor5YWo5Zu95Yy6IDwgemVua29rdWt1XCA7Civnmb3pq6ogPCBoYWt1aGF0c3VcIDsKK+Wkqeeah+aXlyA8IHRlbicnbm91a2lcIDsKK+WumOWDmuWMliA8IGthbnJ5b3VrYVwgOwor5pei5b6X5qipIDwga2l0b2t1a2VuXCA7CivlhYnnt5rpioMgPCBrb3VzZW5qdXVcIDsKK+ejlOWIkSA8IGhhcml0c3VrZVwgOwor5Luu6Z2i5YqHIDwga2FtZW5nZWtpXCA7CivmqZ/morDnmoQgPCBraWthaXRla2lcIDsKK+W9puaYnyA8IGhpa29ib3NoaVwgOwor6YG65Lyd5Zyw5ZuzIDwgaWRlbmNoaXp1XCA7CivovpvovqMgPCBzaGlucmF0c3VcIDsKK+ato+eJqSA8IHNob3VidXRzdVwgOwor5ZOB44CFIDwgc2hpbmFqaW5hXCA7CivnhqjmlpfntJkgPCBub3NoaWdhbWlcIDsKK+WGmeakjeapnyA8IHNoYXNob2traVwgOwor5Ye66JeNIDwgc2h1dHN1cmFuXCA7CivmnKzkvZPoq5YgPCBob250YWlyb25cIDsKK+eZuuWjsOazlSA8IGhhc3NlaWhvdVwgOwor57Wm5rmv5ZmoIDwga3l1dXRvdWtpXCA7CivlubToi6UgPCB0b3NoaXdha2FcIDsKK+mBiuiIiOiyuyA8IHl1dWt5b3VoaVwgOwor5bmz5a6J5LqsIDwgaGVpYW5reW91XCA7CivpgIboh6MgPCBneWFrdXNoaW5cIDsKK+eUn+asoOS8uCA8IG5hbWFha3ViaVwgOwor6YCB5LuY5YWIIDwgc291ZnVzYWtpXCA7CivlpJbph47luK0gPCBnYWl5YXNla2lcIDsKK+W5s+iKnSA8IGhpcmFzaGliYVwgOwor5qiq6Z2iIDwgeW9rb3RzdXJhXCA7Civnq4vkvZPmiKYgPCByaXR0YWlzZW5cIDsKK+ebtOiqrSA8IGNob2t1ZG9rdVwgOwor55uj6KaW57ayIDwga2Fuc2hpbW91XCA7CivmnIjmsLTph5EgPCBnZXNzdWlraW5cIDsKK+ato+aKleaJiyA8IHNlaXRvdXNodVwgOwor5Yed6KGAIDwgZ3lvdWtldHN1XCA7CivpgaDotaTlpJYgPCBlbnNla2lnYWlcIDsKK+aMh+ekuuiWrCA8IHNoaWppeWFrdVwgOwor6YCD6IWwIDwgbmlnZWdvc2hpXCA7Civlv4PlpKogPCB0b2tvcm90ZW5cIDsKK+ebtOiosyA8IGNob2t1eWFrdVwgOwor5Yid6ICzIDwgaGF0c3VtaW1pXCA7Civkv6Hlj7fmqZ8gPCBzaGluZ291a2lcIDsKK+S6leaIuOi7iiA8IGlkb2d1cnVtYVwgOwor5pyJ5ZCN56iOIDwgeXV1bWVpemVpXCA7Civnq4vkvZPmhJ8gPCByaXR0YWlrYW5cIDsKK+WEquWFiOaoqSA8IHl1dXNlbmtlblwgOwor5a6f6aiT5aC0IDwgamlra2Vuam91XCA7CivniaHkuLnppIUgPCBib3RhbW9jaGlcIDsKK+e1jOWbo+mAoyA8IGtlaWRhbnJlblwgOwor5LiN5rOV6KGM54K6IDwgZnVob3Vrb3VpXCA7Civmlq3poK3lj7AgPCBkYW50b3VkYWlcIDsKK+S6iOe0hOiAhSA8IHlveWFrdXNoYVwgOwor57WC5aSc54GvIDwgc2h1dXlhdG91XCA7Civmmpfpu5LpnaIgPCBhbmtva3VtZW5cIDsKK+Wuo+S8neWxiyA8IHNlbmRlbicneWFcIDsKK+S7o+abv+WTgSA8IGRhaXRhaWhpblwgOwor54Kt6YW45aGpIDwgdGFuc2FuJydlblwgOwor5LiL5a6/5bGLIDwgZ2VzaHVrdXlhXCA7Civoo5zntabnt5ogPCBob2t5dXVzZW5cIDsKK+WQjeS6uuaIpiA8IG1laWppbnNlblwgOwor5LiA6Iis5bitIDwgaXBwYW5zZWtpXCA7Civpga3pm6PogIUgPCBzb3VuYW5zaGFcIDsKK+eZvembqiA8IGhha3VzZXRzdVwgOwor5Ye66ImyIDwgc2h1c3Nob2t1XCA7Civljp/lrZDnoLIgPCBnZW5zaGlob3VcIDsKK+WAkue9ruazlSA8IHRvdWNoaWhvdVwgOwor5buD55a+IDwgaGFpc2hpdHN1XCA7CivnhafmupblmaggPCBzaG91anVua2lcIDsKK+WOn+S9j+awkSA8IGdlbmp1dW1pblwgOwor6IGW5YWs5LyaIDwgc2Vpa291a2FpXCA7Civliofng4ggPCBnZWtpcmV0c3VcIDsKK+WOn+eUo+WcsCA8IGdlbnNhbmNoaVwgOwor6Z2p5ZG95YWQIDwga2FrdW1laWppXCA7CivpgJ/nrYYgPCBzb2t1aGl0c3VcIDsKK+WEqumnv+mmrCA8IHl1dXNodW5iYVwgOwor5Li75oOF6KuWIDwgc2h1am91cm9uXCA7CivpqqjokaPlk4EgPCBrb3R0b3VoaW5cIDsKK+euoeiyoeS6uiA8IGthbnphaW5pblwgOwor5ryU5YqH55WMIDwgZW5nZWtpa2FpXCA7CivpioDplqPlr7ogPCBnaW5rYWt1amlcIDsKK+miqOmzpeW6pyA8IGZ1dWNob3V6YVwgOwor5oyf55685ZmoIDwga3lvdWtlbmtpXCA7CivmlZnmjojms5UgPCBreW91anVob3VcIDsKK+mbu+awl+mHnCA8IGRlbmtpZ2FtYVwgOwor6Zu75rCX6YePIDwgZGVua2lyeW91XCA7CivmsLTlj6MgPCBtaXp1Z3VjaGlcIDsKK+atu+S9k+mBuuajhCA8IHNoaXRhaWlraVwgOwor54K55YWJ5rqQIDwgdGVua291Z2VuXCA7Civml6XliIrntJkgPCBuaWtrYW5zaGlcIDsKK+mWk+eLguiogCA8IGFpa3lvdWdlblwgOwor5q665oiuIDwgc2F0c3VyaWt1XCA7CivogIHkurrmgKcgPCByb3VqaW5zZWlcIDsKK+W+jOWupCA8IGtvdXNoaXRzdVwgOwor6KiI5pWw566hIDwga2Vpc3V1a2FuXCA7Civph5HliKnpnpggPCBraW5yaXNob3VcIDsKK+iThOWmviA8IGNoaWt1c2hvdVwgOwor5Luu5pS/5bqcIDwga2FyaXNlaWZ1XCA7Civnj77ku6PniYggPCBnZW5kYWliYW5cIDsKK+S9juWnv+WLoiA8IHRlaXNoaXNlaVwgOwor5oCl6ZmN5LiLIDwga3l1dWtvdWthXCA7Civnq6XoqbHliocgPCBkb3V3YWdla2lcIDsKK+Wun+mok+WPsCA8IGppa2tlbmRhaVwgOwor5rC05oiQ5bKpIDwgc3Vpc2VpZ2FuXCA7CivlvqHlr67kurogPCBnb3J5b3VuaW5cIDsKK+iHqui6q+eVqiA8IGppc2hpbmJhblwgOwor56CC5pmC6KiIIDwgc3VuYWRva2VpXCA7CivlhoXph47lronmiZMgPCBuYWl5YWFuZGFcIDsKK+ihgOmBlOejqCA8IGNoaWRhcnVtYVwgOwor6aSK6baP5aC0IDwgeW91a2Vpam91XCA7CivpgLLnmbogPCBzaGlucGF0c3VcIDsKK+iEsei1sOWFtSA8IGRhc3NvdWhlaVwgOwor6Iy26KKLIDwgY2hhYnVrdXJvXCA7CivojZjlnJLliLYgPCBzaG91ZW5zZWlcIDsKK+WIneepuiA8IGhhdHN1em9yYVwgOwor5YmN5Y2K5oimIDwgemVucGFuc2VuXCA7CivoqJPoqYHlraYgPCBrdW5rb2dha3VcIDsKK+i7iuS6leaIuCA8IGt1cnVtYWlkb1wgOwor5aSW5YuZ55yBIDwgZ2FpbXVzaG91XCA7CivmlrDmmYLku6MgPCBzaGluamlkYWlcIDsKK+a4ieWklumDqCA8IHNob3VnYWlidVwgOwor5qiq6YGTIDwgeW9rb21pY2hpXCA7CivmhJ/lhYnntJkgPCBrYW5rb3VzaGlcIDsKK+aSruW9seapnyA8IHNhdHN1ZWlraVwgOwor5LiA55Sf5ravIDwgaXNzaG91Z2FpXCA7CivmsLTmupDlnLAgPCBzdWlnZW5jaGlcIDsKK+aVtOa1geWZqCA8IHNlaXJ5dXVraVwgOwor5bmz56mP54Sh5LqLIDwgaGVpb25idWppXCA7CivokL3mnK0gPCByYWt1c2F0c3VcIDsKK+WIruebriA8IGthdHN1bW9rdVwgOwor55m96YWSIDwgc2hpcm96YWtlXCA7CivpioDooYznlYwgPCBnaW5rb3VrYWlcIDsKK+ePvuS9j+aJgCA8IGdlbmp1dXNob1wgOwor5YuY5omAIDwga2FuZG9rb3JvXCA7CivliY3lj6PkuIogPCBtYWVrb3Vqb3VcIDsKK+WcsOWvvuepuiA8IGNoaXRhaWt1dVwgOwor6L+956qBIDwgdHN1aXRvdHN1XCA7CivnrKzkuIDpm4YgPCBkYWlpc3NodXVcIDsKK+W8j+acjSA8IHNoaWtpZnVrdVwgOwor5aSp55qH5a62IDwgdGVuJydub3VrZVwgOwor5Y2U5YqbIDwga3lvdXJ5b2t1XCA7CivntabmsrnoiLkgPCBreXV1eXVzZW5cIDsKK+S7o+abuOS6uiA8IGRhaXNob25pblwgOwor5Ym15aeL6ICFIDwgc291c2hpc2hhXCA7CivkvqHmoLzluK8gPCBrYWtha3V0YWlcIDsKK+WgtOaJgOafhCA8IGJhc2hvZ2FyYVwgOwor5L+h5Y+35omAIDwgc2hpbmdvdWpvXCA7CivmmI7mmI7lvozml6UgPCBzaGlhc2F0dGVcIDsKK+efs+aMgSA8IGlzaGltb2NoaVwgOwor5oKq5b6q55KwIDwgYWt1anVua2FuXCA7CivokL3ml6UgPCByYWt1aml0c3VcIDsKK+S4gOawl+WRteaIkCA8IGlra2lrYXNlaVwgOwor5a6f6aiT5YCkIDwgamlra2VuY2hpXCA7CivpgLjniakgPCBpY2hpbW90c3VcIDsKK+S4jemiqOa1gSA8IGJ1ZnV1cnl1dVwgOwor5a6j5Lyd5ZOhIDwgc2VuZGVuJydpblwgOwor6Zmk6Zu76YedIDwgam9kZW5iYXJpXCA7CivooZvnlJ/lraYgPCBlaXNlaWdha3VcIDsKK+ebtOiFuCA8IGNob2t1Y2hvdVwgOwor5q2m5Zmo6LK45LiOIDwgYnVraXRhaXlvXCA7CivnmbropovogIUgPCBoYWtrZW5zaGFcIDsKK+azleeOi+W6gSA8IGhvdW91Y2hvdVwgOwor5q205pelIDwgcmVraWppdHN1XCA7CivkuIDnlarmiYsgPCBpY2hpYmFudGVcIDsKK+S4gOWkq+WkmuWmuyA8IGlwcHV0YXNhaVwgOwor6ZmQ55WM54K5IDwgZ2Vua2FpdGVuXCA7Civmnb/nm67ntJkgPCBpdGFtZWdhbWlcIDsKK+aEgeWYhuWgtCA8IHNodXV0YW5iYVwgOwor6YCy54mpIDwgc2hpbm1vdHN1XCA7CivoirHnm7jmkrIgPCBoYW5henVtb3VcIDsKK+atr+enkeWtpiA8IHNoaWthZ2FrdVwgOwor5LuV5LqL552AIDwgc2hpZ290b2dpXCA7CivlhYnmlofnpL4gPCBrb3VidW5zaGFcIDsKK+mrmOeHpeWcsCA8IGtvdXNvdWNoaVwgOwor6L6y5Zyw5rOVIDwgbm91Y2hpaG91XCA7CivokZvmoLnmua8gPCBrYWtrb250b3VcIDsKK+WHuueriyA8IHNodXR0YXRzdVwgOwor55yf562GIDwgc2hpbnBpdHN1XCA7CivmraPmnIggPCBzaG91Z2F0c3VcIDsKK+WHnee4riA8IGd5b3VzaHVrdVwgOwor5YWJ6Zu7566hIDwga291ZGVua2FuXCA7CivouqvliIbmn4QgPCBtaWJ1bmdhcmFcIDsKK+ims+imp+WIuCA8IGthbnJhbmtlblwgOwor56aB5Yi25ZOBIDwga2luc2VpaGluXCA7CivnnYDnm64gPCBjaGFrdW1va3VcIDsKK+W9k+expOiAhSA8IHRvdXNlbnNoYVwgOwor6YCy5YyW6KuWIDwgc2hpbmthcm9uXCA7Civlho3mpJzoqI4gPCBzYWlrZW50b3VcIDsKK+WFreitmCA8IHJva3VzaGlraVwgOwor5Y2K5aSP55SfIDwgaGFuZ2VzaG91XCA7CivlvqHpo6/mmYIgPCBnb2hhbmRva2lcIDsKK+aEm+W8n+WtkCA8IG1hbmFkZXNoaVwgOwor5omL5byV5pu4IDwgdGViaWtpc2hvXCA7Civmj67nmbrmsrkgPCBraWhhdHN1eXVcIDsKK+e/sOael+mZoiA8IGthbnJpbicnaW5cIDsKK+aVtOWQiOaApyA8IHNlaWdvdXNlaVwgOwor5paZ55CG55WqIDwgcnlvdXJpYmFuXCA7CivljYHkuozlrq4gPCBqdXVuaWt5dXVcIDsKK+eUn+eUo+iyoSA8IHNlaXNhbnphaVwgOwor5LiA5Luj6KiYIDwgaWNoaWRhaWtpXCA7CivlhYPlp4vnpa0gPCBnZW5zaGlzYWlcIDsKK+S6oeWRveiAhSA8IGJvdW1laXNoYVwgOwor5pyJ56iO5ZOBIDwgeXV1emVpaGluXCA7CivnnLznlr4gPCBnYW5zaGl0c3VcIDsKK+Wkp+S9v+mkqCA8IHRhaXNoaWthblwgOwor6ZmQ5a6a6KmeIDwgZ2VudGVpc2hpXCA7CivmrYzmnpUgPCB1dGFtYWt1cmFcIDsKK++8uOe3miA8IGVra3VzdXNlblwgOwor54Sh6aeE6aOvIDwgbXVkYW1lc2hpXCA7Civnt4/msbrnrpcgPCBzb3VrZXNzYW5cIDsKK+attOWPsuWutiA8IHJla2lzaGlrYVwgOwor5rW35rC05bi9IDwga2Fpc3VpYm91XCA7CivmjqfpmaTpoY0gPCBrb3Vqb2dha3VcIDsKK+efpeaCiSA8IGNoaXNoaXRzdVwgOwor5a625pS/5a2mIDwga2FzZWlnYWt1XCA7CivlhoXlvJ/lrZAgPCB1Y2hpZGVzaGlcIDsKK+WkmuW/meS4rSA8IHRhYm91Y2h1dVwgOwor5Yil54mpIDwgYmV0c3Vtb25vXCA7Civljp/lr7jlpKcgPCBnZW5zdW5kYWlcIDsKK+ebtOe1kCA8IGNob2trZXRzdVwgOwor5qmf6IO955qEIDwga2lub3V0ZWtpXCA7CivlpbPmgKfnmoQgPCBqb3NlaXRla2lcIDsKK+a7kee/lOapnyA8IGthc3Nob3VraVwgOwor5bm05aeL54q2IDwgbmVuc2hpam91XCA7CivlrZDnhanmgqkgPCBrb2Jvbicnbm91XCA7CivmjIfljZfou4ogPCBzaGluYW5zaGFcIDsKK+WHneeriyA8IGd5b3VyaXRzdVwgOwor5bi456+AIDwgdG9rb2J1c2hpXCA7CivlhpnnlJ/mlocgPCBzaGFzZWlidW5cIDsKK+aomeitmCA8IGh5b3VzaGlraVwgOwor5YaF6YGK5pifIDwgbmFpeXV1c2VpXCA7Civlvozlh7ogPCBrb3VzaHV0c3VcIDsKK+WIneeJqSA8IGhhdHN1bW9ub1wgOwor6Ium6KGM6ICFIDwga3VneW91c2hhXCA7CivnvarmgqrmhJ8gPCB6YWlha3VrYW5cIDsKK+eEoeeXh+eKtiA8IG11c2hvdWpvdVwgOwor6Iqx6YGTIDwgaGFuYW1pY2hpXCA7Civop5LnoILns5YgPCBrYWt1emF0b3VcIDsKK+eUn+i/lOS6iyA8IG5hbWFoZW5qaVwgOwor5Ye655m6IDwgc2h1cHBhdHN1XCA7CivljZjntJTmgKcgPCB0YW5qdW5zZWlcIDsKK+WMl+WPoyA8IGtpdGFndWNoaVwgOwor5aSn5YOn5q2jIDwgZGFpc291am91XCA7CivlubTnjokgPCB0b3NoaWRhbWFcIDsKK+S4gOi6q+S4iiA8IGlzc2hpbmpvdVwgOwor5L+u6YGT5bC8IDwgc2h1dWRvdW5pXCA7Civou43mlL7pgIEgPCBndW5ob3Vzb3VcIDsKK+eZu+iomOaWmSA8IHRvdWtpcnlvdVwgOwor6Iux5Zu95Lq6IDwgZWlrb2t1amluXCA7Civlgb3oqLzogIUgPCBnaXNob3VzaGFcIDsKK+mBk+i3r+apiyA8IGRvdXJva3lvdVwgOwor5qmZ6ImyIDwgZGFpZGFpaXJvXCA7Civnn6nlt64gPCBrYW5lemFzaGlcIDsKK+WNg+S4hyA8IGNoaXlvcm96dVwgOwor5pKu5b2x5omAIDwgc2F0c3VlaWpvXCA7CivlvaLmhYvoq5YgPCBrZWl0YWlyb25cIDsKK+WBveiovOe9qiA8IGdpc2hvdXphaVwgOwor6aaW6KyA6ICFIDwgc2h1Ym91c2hhXCA7CivopIflj7fljJYgPCBmdWt1Z291a2FcIDsKK+W8k+W8piA8IHl1bWlkenVydVwgOwor5aeL56WW6bOlIDwgc2hpc29jaG91XCA7CivnibnoqLHms5UgPCB0b2treW9ob3VcIDsKK+mkiuavm+WJpCA8IHlvdW1vdXphaVwgOwor5rWu5rCX6ICFIDwgdXdha2ltb25vXCA7Civnm7LnqbQgPCBtZWt1cmFhbmFcIDsKK+WNseapn+eqgeegtCA8IGtpa2l0b3BwYVwgOwor5pqX6buS6KGXIDwgYW5rb2t1Z2FpXCA7CivlpKflhYPluKUgPCBkYWlnZW5zdWlcIDsKK+WFjeioseeKtiA8IG1lbmt5b2pvdVwgOwor6I2J566SIDwga3VzYWJvdWtpXCA7Civlh7rnj74gPCBzaHV0c3VnZW5cIDsKK+WknOWFieiZqyA8IHlha291Y2h1dVwgOwor5aWH5aSp54OIIDwga2l0ZXJldHN1XCA7CivljJnliqDmuJsgPCBzYWppa2FnZW5cIDsKK+WHneedgCA8IGd5b3VjaGFrdVwgOwor5Yqj5byxIDwgcmV0c3VqYWt1XCA7CivmipXmiYvmnb8gPCB0b3VzaHViYW5cIDsKK+W+k+alreWToSA8IGp1dWd5b3VpblwgOwor5om56KmV55y8IDwgaGloeW91Z2FuXCA7Civkv67pgZPlpbMgPCBzaHV1ZG91am9cIDsKK+Wcp+eXm+eCuSA8IGF0dHN1dXRlblwgOwor5rW35YW16ZqKIDwga2FpaGVpdGFpXCA7CivogIPoqrLooaggPCBrb3VrYWh5b3VcIDsKK+m6puiKveezliA8IGJha3VnYXRvdVwgOwor55yf546HIDwgc2hpbnNvdHN1XCA7Civoi6bomasgPCBuaWdhbXVzaGlcIDsKK+api+iEmiA8IGt5b3VreWFrdVwgOwor5bem6IWVIDwgaGlkYXJpdWRlXCA7CivmlofoirjmrIQgPCBidW5nZWlyYW5cIDsKK+WknOebsueXhyA8IHlhbW91c2hvdVwgOwor5oqV56i/6ICFIDwgdG91a291c2hhXCA7CivnhKHlt67liKUgPCBtdXNhYmV0c3VcIDsKK+epuuaMuumaiiA8IGt1dXRlaXRhaVwgOwor5b6u6Kq/5pW0IDwgYmljaG91c2VpXCA7Civlj6Plv6Dlrp8gPCBrdWNoaW1hbWVcIDsKK+iKseaooeanmCA8IGhhbmFtb3lvdVwgOwor5pyJ5ZCN5qChIDwgeXV1bWVpa291XCA7CivnibnoqLHmqKkgPCB0b2treW9rZW5cIDsKK+mrmOm8viA8IHRha2FpYmlraVwgOwor5qeL5oiQ5a2QIDwga291c2Vpc2hpXCA7CivnnJ/niakgPCBzaGluYnV0c3VcIDsKK+W8lOWuoiA8IGNob3VreWFrdVwgOwor6KuL6aGY5pu4IDwgc2VpZ2Fuc2hvXCA7Civmi6Hlo7DmqZ8gPCBrYWt1c2Vpa2lcIDsKK+WMu+eZguapn+WZqCA8IGlyeW91a2lraVwgOwor55m+6JasIDwgaHlha3V5YWt1XCA7CivoqI7oq5bkvJogPCB0b3Vyb25rYWlcIDsKK+iMtuetkiA8IGNoYWR6dXRzdVwgOwor5byf5aiYIDwgb3RvbXVzdW1lXCA7CivnnIHnlaUgPCBzaG91cnlha3VcIDsKK+aLmOe9ruaJgCA8IGtvdWNoaXNob1wgOwor5Lqk5riJ5ZOhIDwga291c2hvdWluXCA7CivlirTlvbnloLQgPCByb3Vla2lqb3VcIDsKK+mVt+Wwvum2jyA8IG5hZ2FvZG9yaVwgOwor5rC06YqA54GvIDwgc3VpZ2ludG91XCA7CivkuLvmiJDliIYgPCBzaHVzZWlidW5cIDsKK+S/rui+nuazlSA8IHNodXVqaWhvdVwgOwor5Y2T6Kmx5LyaIDwgdGFrdXdha2FpXCA7CivpgIbmtYEgPCBneWFrdXJ5dXVcIDsKK+atjOW/gyA8IHV0YWdva29yb1wgOwor5omL5bel6Iq4IDwgc2h1a291Z2VpXCA7CivmlpnnkIbms5UgPCByeW91cmlob3VcIDsKK+aJv+iqjeWbsyA8IHNob3VuaW56dVwgOwor5pys5bO25Lq6IDwgaG9udG91amluXCA7CivmgZLluLjmgKcgPCBrb3Vqb3VzZWlcIDsKK+mAseacqyA8IHNodXVtYXRzdVwgOwor552A5rC3IDwgY2hha3VoeW91XCA7Civnmb3oj4ogPCBzaGlyYWdpa3VcIDsKK+W5tOazoiA8IHRvc2hpbmFtaVwgOwor57WE57mU5YyWIDwgc29zaGlraWthXCA7CivlvqHmlrDpgKAgPCBnb3NoaW56b3VcIDsKK+ato+WupCA8IHNlaXNoaXRzdVwgOwor5Lm+6Zu75rGgIDwga2FuZGVuY2hpXCA7Civoh6rkvZzovrIgPCBqaXNha3Vub3VcIDsKK+iPiuaciCA8IGtpa3VkenVraVwgOwor5Yi256m65qipIDwgc2Vpa3V1a2VuXCA7CivoirHmpLDoj5wgPCBoYW5heWFzYWlcIDsKK+ertuaKgOWgtCA8IGt5b3VnaWpvdVwgOwor5pen5Yi25bqmIDwga3l1dXNlaWRvXCA7CivlhbHlkozmlL8gPCBreW91d2FzZWlcIDsKK+WkqeS4i+eEoeavlCA8IHRlbmthbXVoaVwgOwor5bCK546L5a62IDwgc29uJydub3VrYVwgOwor5bm05q+OIDwgdG9zaGlnb3RvXCA7CivpgLHml6UgPCBzaHV1aml0c3VcIDsKK+mBhemAsuWFkCA8IGNoaXNoaW5qaVwgOwor6Iqx6KGXIDwgaGFuYW1hY2hpXCA7Civlt53nuIEgPCBrYXdhYnVjaGlcIDsKK+W9ouS7oyA8IGthdGFzaGlyb1wgOwor5qCE6aSK5a2mIDwgZWl5b3VnYWt1XCA7Civmjqnorbfpg6jpmoogPCBlbmdvYnV0YWlcIDsKK+eZveiJsiA8IGhha3VzaG9rdVwgOwor5LiN5LuL5YWlIDwgZnVrYWlueXV1XCA7CivmipXmiYvmiKYgPCB0b3VzaHVzZW5cIDsKK+eKrOW8teWtkCA8IGludWhhcmlrb1wgOwor6YCB6Zu757eaIDwgc291ZGVuc2VuXCA7CivljbXpu4TlmqIgPCByYW4nJ291bm91XCA7CivliKXmo58gPCBiZXRzdW11bmVcIDsKK+awl+Wcp+ioiCA8IGtpYXRzdWtlaVwgOwor6aeG6Jmr5YmkIDwga3VjaHV1emFpXCA7Civniqzov73niakgPCBpbnVvdW1vbm9cIDsKK+S4ieaWkem2iSA8IG1pZnV1enVyYVwgOwor5YaK56uLIDwgc2FrdXJpdHN1XCA7Civppqzpub/ph47pg44gPCBiYWtheWFyb3VcIDsKK+WztumiqCA8IHNoaW1ha2F6ZVwgOwor5ouN5a2Q5pyoIDwgaHlvdXNoaWdpXCA7CivlpJrmr5vkvZwgPCB0YW1vdXNha3VcIDsKK+aJi+iNt+eJqSA8IHRlbmltb3RzdVwgOwor5byx5Y2SIDwgamFrdXNvdHN1XCA7Civlh6DluLPpnaIgPCBraWNob3VtZW5cIDsKK+aooeevhOeahCA8IG1vaGFudGVraVwgOwor5YOV6YGUIDwgYm9rdXRhY2hpXCA7Civpq63pnaIgPCBoaWdlZHp1cmFcIDsKK+ethuiomOW4syA8IGhpa2tpY2hvdVwgOwor5by15YqbIDwgY2hvdXJ5b2t1XCA7Civou5/os6ogPCBuYW5zaGl0c3VcIDsKK+mVt+i3nemboiA8IGNob3VreW9yaVwgOwor576O5bCR5bm0IDwgYmlzaG91bmVuXCA7Civkub7nh6XmnZAgPCBrYW5zb3V6YWlcIDsKK+eUn+eUo+iAhSA8IHNlaXNhbnNoYVwgOwor5LiN5pyN5b6TIDwgZnVmdWt1anV1XCA7CivmnKzmoLzmtL4gPCBob25rYWt1aGFcIDsKK+iPseW9oiA8IGhpc2hpZ2F0YVwgOwor5Y6f5a2Q5oimIDwgZ2Vuc2hpc2VuXCA7CivkuI3lpInph48gPCBmdWhlbnJ5b3VcIDsKK+mhlOmmtOafkyA8IGthb25hamltaVwgOwor6YCy5o2XIDwgc2hpbmNob2t1XCA7CivokL3okYnmqLkgPCByYWt1eW91anVcIDsKK+S4iemgreetiyA8IHNhbnRvdWtpblwgOwor5YO76KqsIDwgaGVraXNldHN1XCA7Civlj6Poqp7oi7Hoqp4gPCBrb3Vnb2VpZ29cIDsKK+S7o+iogOiAhSA8IGRhaWdlbnNoYVwgOwor6Iy255WRIDwgY2hhYmF0YWtlXCA7Civmj67nmbrluqYgPCBraWhhdHN1ZG9cIDsKK+Wkp+iHqueEtiA8IGRhaXNoaXplblwgOwor5LiN5pmC552AIDwgZnVqaWNoYWt1XCA7CivntbHliLbnt5ogPCB0b3VzZWlzZW5cIDsKK+aoque2sSA8IHlva29kenVuYVwgOwor5YWO6ICzIDwgdXNhZ2ltaW1pXCA7CivlhYnpm7vmsaAgPCBrb3VkZW5jaGlcIDsKK+iKseS+m+mkiiA8IGhhbmFrdXlvdVwgOwor6Zuj5ZWP6aGMIDwgbmFubW9uZGFpXCA7Civntpnpm7vpjbUgPCBrZWlkZW5rZW5cIDsKK+apn+aisOWtpiA8IGtpa2FpZ2FrdVwgOwor5bO26ZmwIDwgc2hpbWFrYWdlXCA7Civlqabkurrnl4UgPCBmdWppbmJ5b3VcIDsKK+WQjOWlveiAhSA8IGRvdWtvdXNoYVwgOwor5YG95aaK5aigIDwgZ2luaW5zaGluXCA7Civnn6LljbAgPCB5YWppcnVzaGlcIDsKK+edgOacjSA8IGNoYWt1ZnVrdVwgOwor54Gr57iE6YqDIDwgaGluYXdhanV1XCA7Civlu7rlnaogPCB0YXRldHN1Ym9cIDsKK+WJr+WwuiA8IGZ1a3VzaGFrdVwgOwor5Yid5pilIDwgaGF0c3VoYXJ1XCA7CivliY3li5jlrpogPCBtYWVrYW5qb3VcIDsKK+aXoueZuuihqCA8IGtpaGFwcHlvdVwgOwor5YWx56uLIDwga3lvdXJpdHN1XCA7CivoirHoj7EgPCBoYW5hYmlzaGlcIDsKK+eUsueKtuiFuiA8IGtvdWpvdXNlblwgOwor56i95Y+k5LqLIDwga2Vpa29nb3RvXCA7CivmiJDmlofms5UgPCBzZWlidW5ob3VcIDsKK+W7tuWdqiA8IG5vYmV0c3Vib1wgOwor6KaP5qC85ZOBIDwga2lrYWt1aGluXCA7Civku5Xkuovml6UgPCBzaGlnb3RvYmlcIDsKK+WIhuS4jueojiA8IGJ1bicneW96ZWlcIDsKK+eZveeEoeWeoiA8IHNoaXJvbXVrdVwgOwor5LqM562J6LOeIDwgbml0b3VzaG91XCA7CivmpbXph48gPCBreW9rdXJ5b3VcIDsKK+WumuS8keaXpSA8IHRlaWt5dXViaVwgOwor6Imv6K2YIDwgcnlvdXNoaWtpXCA7CivlvJ/liIYgPCBvdG91dG9idW5cIDsKK+eZveeBr+ayuSA8IGhha3V0b3V5dVwgOwor6Imy6Kq/IDwgc2hpa2ljaG91XCA7CivpiYTngavlkbPlmYwgPCB0ZWtrYW1pc29cIDsKK+mBi+i7ouW4rSA8IHVudGVuc2VraVwgOwor5YWs5rCR6aSoIDwga291bWlua2FuXCA7Civnr6TovrLlrrYgPCB0b2t1bm91a2FcIDsKK+iMieiOieiKsSA8IG1hdHN1cmlrYVwgOwor5Lq65bel5rivIDwgamlua291a291XCA7Civps7blj6MgPCB0b2JpZ3VjaGlcIDsKK+mrmOmZteWcnyA8IGtvdXJ5b3Vkb1wgOwor5oSf5YWJ5p2/IDwga2Fua291YmFuXCA7Civlhavnpo8gPCBoYWNoaWZ1a3VcIDsKK+iJsuimmiA8IHNoaWtpa2FrdVwgOwor5LiJ5LmX5qC5IDwgc2Fuam91a29uXCA7Civnn7Pku48gPCBzZWtpYnV0c3VcIDsKK+eUt+miqOWRgiA8IG90b2tvYnVyb1wgOwor5aWz6YOO6IqxIDwgb21pbmFlc2hpXCA7Civmu57ntI3ogIUgPCB0YWlub3VzaGFcIDsKK+ats+WHuiA8IHNhaXNodXRzdVwgOwor5Lyd6YGT5birIDwgZGVuZG91c2hpXCA7Civlv5zlj6zlhbUgPCBvdXNob3VoZWlcIDsKK+ikh+WNgeWtlyA8IGZ1a3VqdXVqaVwgOwor55u05rWBIDwgY2hva3VyeXV1XCA7CivpmL/lvKXpmYDntYwgPCBhbWlkYWt5b3VcIDsKK+iKjeiWrCA8IHNoYWt1eWFrdVwgOwor5YaN5qeL5oiQIDwgc2Fpa291c2VpXCA7CivmnInmrrXogIUgPCB5dXVkYW5zaGFcIDsKK+WNmOiho+eJqSA8IGhpdG9lbW9ub1wgOwor6KaP5qC85YikIDwga2lrYWt1YmFuXCA7CivnrKzkuInogIUgPCBkYWlzYW5zaGFcIDsKK+WHuuacrSA8IHNodXNzYXRzdVwgOwor5Ymy5aKXIDwgd2FyaW1hc2hpXCA7CivkvZPmk43loLQgPCB0YWlzb3Vqb3VcIDsKK+S4u+a1gea0viA8IHNodXJ5dXVoYVwgOwor6Iqd6I2JIDwgc2hpYmFrdXNhXCA7CivluoPloLHlrpggPCBrb3Vob3VrYW5cIDsKK+ecn+adsSA8IG1haGlnYXNoaVwgOwor5Lq65bel5rGgIDwgamlua291aWtlXCA7Civlj6Pok4vlnoIgPCBrb3VnYWlzdWlcIDsKK+mHkeWJm+eggiA8IGtvbmdvdXNoYVwgOwor5Y2B5LiJ5aScIDwganV1c2FuJyd5YVwgOwor5aSn5a2m6ZmiIDwgZGFpZ2FrdWluXCA7CivkuZfnlKjou4ogPCBqb3V5b3VzaGFcIDsKK+S4jeaYjueiuiA8IGZ1bWVpa2FrdVwgOwor6Zi/5byl6ZmA57GkIDwgYW1pZGFrdWppXCA7CivonIPmsJfmpbwgPCBzaGlua2lyb3VcIDsKK+ikh+iRieapnyA8IGZ1a3V5b3VraVwgOwor5LqM562J6KaqIDwgbml0b3VzaGluXCA7CivojYnnq7bppqwgPCBrdXNha2VpYmFcIDsKK+aouOebtCA8IGJva3VjaG9rdVwgOwor6Zqg5YWD6LGGIDwgaW5nZW5tYW1lXCA7CivluZXmnKsgPCBiYWt1bWF0c3VcIDsKK+e0r+S5l+aguSA8IHJ1aWpvdWtvblwgOwor5qSO6aqoIDwgdHN1aWtvdHN1XCA7CivmnbHmtIvkurogPCB0b3V5b3VqaW5cIDsKK+ertuaKgOS8miA8IGt5b3VnaWthaVwgOwor5Yun6KqY5ZOhIDwga2FuJyd5dXVpblwgOwor6ICB5amG5b+DIDwgcm91YmFzaGluXCA7CivlgrXmqKnogIUgPCBzYWlrZW5zaGFcIDsKK+esrOS4gOe+qSA8IGRhaWljaGlnaVwgOwor5q2j5Ye6IDwgc2Vpc2h1dHN1XCA7CivlnKflgJLnmoQgPCBhdHRvdXRla2lcIDsKK+S4jeaYjueerSA8IGZ1bWVpcnlvdVwgOwor5pS+6Zu7566hIDwgaG91ZGVua2FuXCA7Civlh7bml6UgPCBreW91aml0c3VcIDsKK+WJjei6q+mggyA8IG1hZW1pZ29yb1wgOwor5bCR5pWw5rS+IDwgc2hvdXN1dWhhXCA7CivnibnmjZzpg6ggPCB0b2t1c291YnVcIDsKK+iqv+mmrOW4qyA8IGNob3ViYXNoaVwgOwor6YGK5aSxIDwgeXV1c2hpdHN1XCA7CivnkIboq5bnmoQgPCByaXJvbnRla2lcIDsKK+mjsuawtOmHjyA8IGluc3VpcnlvdVwgOwor6Kq/55CG5rOVIDwgY2hvdXJpaG91XCA7CivntK/niq/ogIUgPCBydWloYW5zaGFcIDsKK+i7iuidpiA8IGt1cnVtYWViaVwgOwor5aW96YO95ZCIIDwga291dHN1Z291XCA7Civlronlhajln58gPCBhbnplbicnaWtpXCA7CivomZrmoITlv4MgPCBreW9laXNoaW5cIDsKK+Wumuacn+eahCA8IHRlaWtpdGVraVwgOwor5Yid5b25IDwgaGF0c3V5YWt1XCA7Civoqo3lj6/oqLwgPCBuaW5rYXNob3VcIDsKK+S/oeW/g+WutiA8IHNoaW5qaW5rYVwgOwor5by35aem572qIDwgZ291a2FuemFpXCA7CivmlZnmjojkvJogPCBreW91anVrYWlcIDsKK+mAo+WQiOi7jSA8IHJlbmdvdWd1blwgOwor6YG45Ye6IDwgc2Vuc2h1dHN1XCA7Civov6vmjIEgPCBzZXJpbW9jaGlcIDsKK+mHjeWQiOS9kyA8IGp1dWdvdXRhaVwgOwor5Yqg6JmQ5oSbIDwga2FneWFrdWFpXCA7CivmsrPlt53mlbcgPCBrYXNlbmppa2lcIDsKK+i7jemaiuiRrCA8IGd1bnRhaXNvdVwgOwor5pWw5bm06ZaTIDwgc3V1bmVua2FuXCA7Civou73msJfnkIMgPCBrZWlraWt5dXVcIDsKK+mdkua1ruiNiSA8IGFvdWtpa3VzYVwgOwor5a2Y5Zyo5oSP576pIDwgc29uemFpaWdpXCA7Civlronmpb3mrbsgPCBhbnJha3VzaGlcIDsKK+mHkeW5s+ezliA8IGtvbnBlaXRvdVwgOwor5a6a5L2P5ZywIDwgdGVpanV1Y2hpXCA7Civph5HovKrpmpsgPCBrb25yaW56YWlcIDsKK+aWmeeQhuW6lyA8IHJ5b3VyaXRlblwgOwor6LK/5piT6aKoIDwgYm91ZWtpZnV1XCA7Civkurrlt6XmnpcgPCBqaW5rb3VyaW5cIDsKK+a1t+mBi+alrSA8IGthaXVuZ3lvdVwgOwor6KGj6aOf5L2PIDwgaXNob2t1anV1XCA7CivnnYDluoogPCBjaGFrdXNob3VcIDsKK+WvneWFt+mhniA8IHNoaW5ndXJ1aVwgOwor5bm05byxIDwgdG9zaGl5b3dhXCA7CivlsbHptokgPCB5YW1hdXp1cmFcIDsKK+adseWNl+adsSA8IHRvdW5hbnRvdVwgOwor77y35p2vIDwgZGFidXJ1aGFpXCA7CivnlLLmnb/lk6EgPCBrb3VoYW4nJ2luXCA7Civnj77ku6Plj7IgPCBnZW5kYWlzaGlcIDsKK+agueiPnOmhniA8IGtvbnNhaXJ1aVwgOwor552A5bitIDwgY2hha3VzZWtpXCA7CivlrprkvovkvJogPCB0ZWlyZWlrYWlcIDsKK+axuumXmOeKtiA8IGtldHRvdWpvdVwgOwor6JqV5Y2157SZIDwgc2FucmFuc2hpXCA7CivlpJbokpnlj6QgPCBzb3RvbW91a29cIDsKK+i+u+acrSA8IHRzdWppZnVkYVwgOwor6LuK5Lih5YyWIDwgc2hhcnlvdWthXCA7CivpganliIcgPCB0ZWtpc2V0c3VcIDsKK+WPiOW+k+WFhOW8nyA8IG1hdGFpdG9rb1wgOwor55m655eFIDwgaGF0c3VieW91XCA7CivmhJ/lhYnmgKcgPCBrYW5rb3VzZWlcIDsKK+esrOS4gOeroCA8IGRhaWlzc2hvdVwgOwor55eF6K2YIDwgYnlvdXNoaWtpXCA7CivlibXlh7ogPCBzb3VzaHV0c3VcIDsKK+WIpeWupCA8IGJlc3NoaXRzdVwgOwor6Ieo55WM54K5IDwgcmlua2FpdGVuXCA7CivllYblo7LmsJcgPCBzaG91YmFpZ2lcIDsKK+WbveaGsuazlSA8IGtva2tlbnBvdVwgOwor5Lih6Zmb5LiLIDwgcnlvdWhlaWthXCA7CivpmZDlrprniYggPCBnZW50ZWliYW5cIDsKK+WJjei7iui8qiA8IHplbnNoYXJpblwgOwor5bm05bWpIDwgdG9zaGlrYXNhXCA7Civnvr3mr5vluIPlm6MgPCB1bW91ZnV0b25cIDsKK+mbhOeJm+ezniA8IG91c2hpa3Vzb1wgOwor5LiN5aaK55eHIDwgZnVuaW5zaG91XCA7CivlpInmtYHlmaggPCBoZW5yeXV1a2lcIDsKK+WIneWtqyA8IGhhdHN1bWFnb1wgOwor5Ye65b6hIDwgc2h1dHN1Z3lvXCA7Civph53kvpvppIogPCBoYXJpa3V5b3VcIDsKK+W+ruimlueahCA8IGJpc2hpdGVraVwgOwor55uj6KaW5aGUIDwga2Fuc2hpdG91XCA7Civnmb3njokgPCBzaGlyYXRhbWFcIDsKK+WNoOaLoOWcsCA8IHNlbmt5b2NoaVwgOwor5oyH5ZCR5oCnIDwgc2hpa291c2VpXCA7CivkuIDkurrnlKggPCBoaXRvcml5b3VcIDsKK+iqv+mmrOWgtCA8IGNob3ViYWpvdVwgOwor5YaN6Ly45YWlIDwgc2FpeXVueXV1XCA7Civntr/mtKXoposgPCB3YXRhdHN1bWlcIDsKK+WEquiJr+WFkCA8IHl1dXJ5b3VqaVwgOwor5rWu5YuV56WoIDwgZnVkb3VoeW91XCA7CivlhYjlpKnmgKcgPCBzZW50ZW5zZWlcIDsKK+W9ouaIkOWxpCA8IGtlaXNlaXNvdVwgOwor55u05pKDIDwgY2hva3VnZWtpXCA7CivluKvnr4Tku6MgPCBzaGloYW5kYWlcIDsKK+W5tOWvhCA8IHRvc2hpeW9yaVwgOwor5LyR5q2i56ymIDwga3l1dXNoaWZ1XCA7Civmpo7ojLggPCBlbm9raXRha2VcIDsKK+S4jemdouebriA8IGZ1bWVubW9rdVwgOwor6Ii56JmrIDwgZnVuYW11c2hpXCA7CivlsI/ns6Dpm6ggPCBrb251a2FhbWVcIDsKK+acrOS6iOeulyA8IGhvbicneW9zYW5cIDsKK+aMh+WNl+eVqiA8IHNoaW5hbmJhblwgOwor6Ieq55Sx5qWtIDwgaml5dXVneW91XCA7CivnpoHovLjlk4EgPCBraW4nJ3l1aGluXCA7Civlj7jkvJrogIUgPCBzaGlrYWlzaGFcIDsKK+aKleeov+ashCA8IHRvdWtvdXJhblwgOwor55m954axIDwgaGFrdW5ldHN1XCA7CivmpbXoloQgPCBreW9rdWhha3VcIDsKK+eZveeGiiA8IHNoaXJva3VtYVwgOwor5oy/6Kmx55qEIDwgc291d2F0ZWtpXCA7CivlibLku5ggPCB3YXJpdHN1a2VcIDsKK+WIneWkoiA8IGhhdHN1eXVtZVwgOwor6YGT5Lit6KiYIDwgZG91Y2h1dWtpXCA7CivljYrloanmsLQgPCBoYW4nJ2Vuc3VpXCA7CivmjpLku5bnmoQgPCBoYWl0YXRla2lcIDsKK+Wkp+iFuOeCjiA8IGRhaWNob3VlblwgOwor5YiG5a6kIDwgYnVuc2hpdHN1XCA7CivlsLzms5XluKsgPCBhbWFob3VzaGlcIDsKK+Wumue9rue2siA8IHRlaWNoaWFtaVwgOwor5bq25Ye6IDwgc2hvc2h1dHN1XCA7CivlhaXmu4UgPCBueXV1bWV0c3VcIDsKK+iKuOiDveeVjCA8IGdlaW5vdWthaVwgOwor5Y2K5r+B6Z+zIDwgaGFuZGFrdW9uXCA7CivphY3nrqHlt6UgPCBoYWlrYW5rb3VcIDsKK+WJsuS4iyA8IHdhcmlzaGl0YVwgOwor54++5Luj5Lq6IDwgZ2VuZGFpamluXCA7CivovrLmvIHmsJEgPCBub3VneW9taW5cIDsKK+W4guadviA8IGljaGltYXRzdVwgOwor5aWz5oCn5a2mIDwgam9zZWlnYWt1XCA7Civkub7nh6XlnLAgPCBrYW5zb3VjaGlcIDsKK+WIhumhnuazlSA8IGJ1bnJ1aWhvdVwgOwor5Yip5bex5Li7576pIDwgcmlrb3NodWdpXCA7Civnn7Poho/lg48gPCBzZWtrb3V6b3VcIDsKK+W9seatpuiAhSA8IGthZ2VtdXNoYVwgOwor5rS754mI5pysIDwga2FwcGFuYm9uXCA7Civku5XkuovloLQgPCBzaGlnb3RvYmFcIDsKK+WppuS6uuacjSA8IGZ1amluZnVrdVwgOwor5a+d5b+D5ZywIDwgbmVnb2tvY2hpXCA7CivlhKrnlLcgPCB5YXNhb3Rva29cIDsKK+e1teW3u+eJqSA8IGVtYWtpbW9ub1wgOwor5LiN5paZ57ChIDwgZnVyeW91a2VuXCA7CivljJbnn7PlsaQgPCBrYXNla2lzb3VcIDsKK+aZqemkkOS8miA8IGJhbnNhbmthaVwgOwor5LuV5pS+6aGMIDwgc2hpaG91ZGFpXCA7CivmoYjlhoXnirYgPCBhbicnbmFpam91XCA7CivlpJrlhYPnmoQgPCB0YWdlbnRla2lcIDsKK+WItua1t+aoqSA8IHNlaWthaWtlblwgOwor5Lqk6YWN56iuIDwga291aGFpc2h1XCA7CivovaLmrrogPCByZWtpc2F0c3VcIDsKK+WcqOS9j+iAhSA8IHphaWp1dXNoYVwgOwor5oiQ54af5pyfIDwgc2VpanVrdWtpXCA7CivnnJ/lrp8gPCBzaGluaml0c3VcIDsKK+WFseWSjOWFmiA8IGt5b3V3YXRvdVwgOwor5bmz5pa55qC5IDwgaGVpaG91a29uXCA7Civoq5zloLHlk6EgPCBjaG91aG91aW5cIDsKK+iIiOWlruWJpCA8IGtvdWZ1bnphaVwgOwor55m95rudIDwgc2hpcmF0YWtpXCA7CivlhYjopovogIUgPCBzZW5rZW5zaGFcIDsKK+iIquepuuWIuCA8IGtvdWt1dWtlblwgOwor6YCf5Y+jIDwgaGF5YWt1Y2hpXCA7CivlhYnpm7vlrZAgPCBrb3VkZW5zaGlcIDsKK+mAsuWFpSA8IHNoaW4nJ255dXVcIDsKK+WEsueJqSA8IG1vdWtlbW9ub1wgOwor6IWw6auYIDwga29zaGlkYWthXCA7Civlo7Llm73lpbQgPCBiYWlrb2t1ZG9cIDsKK+e5geWIhuaVsCA8IGhhbmJ1bnN1dVwgOwor5oCn6KGM5YuVIDwgc2Vpa291ZG91XCA7CivpioDooYzliLggPCBnaW5rb3VrZW5cIDsKK+api+ahgSA8IGhhc2hpZ2V0YVwgOwor5LiH5LiH5q2zIDwgYmFuYmFuemFpXCA7Civpqqjos6ogPCBrb3NzaGl0c3VcIDsKK+WBnOiIueWgtCA8IHRlaXNlbmpvdVwgOwor6IWw6aqoIDwga29zaGlib25lXCA7CivlmIbpoZjmm7ggPCB0YW5nYW5zaG9cIDsKK+WGjeeUn+eUoyA8IHNhaXNlaXNhblwgOwor5Zyw5a++5ZywIDwgY2hpdGFpY2hpXCA7Civkv67po74gPCBzaHV1c2hva3VcIDsKK+aWh+S9k+irliA8IGJ1bnRhaXJvblwgOwor6Kq/5p+75ZujIDwgY2hvdXNhZGFuXCA7Civnmb3mtaogPCBzaGlyYW5hbWlcIDsKK+WNmOihjOacrCA8IHRhbmtvdWJvblwgOwor5bCP5aSc5puyIDwgc2F5b2t5b2t1XCA7Civlh7rkuJbplpMgPCBzaHVzc2VrZW5cIDsKK+eZvea1nCA8IHNoaXJhaGFtYVwgOwor6Im256iuIDwgdHN1eWFkYW5lXCA7CivpgJ/lipsgPCBzb2t1cnlva3VcIDsKK+WNmOihjOabuCA8IHRhbmtvdXNob1wgOwor5LiA5pmC6ZaTIDwgaWNoaWppa2FuXCA7CivmuKnms4npg7cgPCBvbnNlbmt5b3VcIDsKK+i+u+W6lyA8IHRzdWppbWlzZVwgOwor5pyJ5ZCN5Lq6IDwgeXV1bWVpamluXCA7CivlvoznlLLmnb8gPCBrb3VrYW5wYW5cIDsKK+WWtuWIqeS4u+e+qSA8IGVpcmlzaHVnaVwgOwor5byx5L2T5YyWIDwgamFrdXRhaWthXCA7CivntYzmuIjpnaIgPCBrZWl6YWltZW5cIDsKK+S/rumok+mBkyA8IHNodWdlbmRvdVwgOwor6Iy25omAIDwgY2hhZG9rb3JvXCA7CivlvoDnlJ/pmpsgPCBvdWpvdWdpd2FcIDsKK+W6g+WPoyA8IGhpcm9rdWNoaVwgOwor5bC66aqoIDwgc2hha2tvdHN1XCA7Civlh7rloYEgPCBzaHV0c3VydWlcIDsKK+aui+WtmOiAhSA8IHphbnpvbnNoYVwgOwor6Iiq56m65L6/IDwga291a3V1YmluXCA7CivmoLjmraboo4UgPCBrYWt1YnVzb3VcIDsKK+ebruW6hyA8IG1hYmlzYXNoaVwgOwor55m95rC0IDwgc2hpcm9taXp1XCA7CivoibLnpZ4gPCBzaGlraXNoaW5cIDsKK+Wfi+iUtemHkSA8IG1haXpvdWtpblwgOwor5a2k56uL5YyWIDwga29yaXRzdWthXCA7CivogZblrrbml48gPCBzZWlrYXpva3VcIDsKK+azpeeCreWcsCA8IGRlaXRhbmNoaVwgOwor5aSW6Lyq6Ii5IDwgZ2Fpcmluc2VuXCA7CivopIfliKnms5UgPCBmdWt1cmlob3VcIDsKK+WFpeakjSA8IG55dXVzaG9rdVwgOwor6JK455WZ5ZmoIDwgam91cnl1dWtpXCA7CivpkZHlrprmm7ggPCBrYW50ZWlzaG9cIDsKK+ijveawt+apnyA8IHNlaWh5b3VraVwgOwor55u05bGeIDwgY2hva3V6b2t1XCA7CivmtojosrvosqEgPCBzaG91aGl6YWlcIDsKK+iRl+S9nOWutiA8IGNob3Nha3VrYVwgOwor5biC6LKp5ZOBIDwgc2hpaGFuaGluXCA7Civlt7vpoK3oqIAgPCBrYW50b3VnZW5cIDsKK+WHoeWksSA8IGJvbnNoaXRzdVwgOwor6Kq/55CG5birIDwgY2hvdXJpc2hpXCA7Civlha3mnIggPCByb2t1Z2F0c3VcIDsKK+ecn+ahkeeTnCA8IG1ha3V3YXVyaVwgOwor6ZqP5b6T6ICFIDwgenVpanV1c2hhXCA7CivkuIDlr7jlhYggPCBpc3N1bnNha2lcIDsKK+aWh+WtpumDqCA8IGJ1bmdha3VidVwgOwor5LqI57SE5Yi2IDwgeW95YWt1c2VpXCA7Civnt5rpgJ/luqYgPCBzZW5zb2t1ZG9cIDsKK+W5s+mdouW9oiA8IGhlaW1lbmtlaVwgOwor6KSH5q+U5L6LIDwgZnVrdWhpcmVpXCA7CivmlaPmsLTou4ogPCBzYW5zdWlzaGFcIDsKK+S4gOaZgumHkSA8IGljaGlqaWtpblwgOwor5YmN5bm05bqmIDwgemVuJyduZW5kb1wgOwor54Sh5aOw5pig55S7IDwgbXVzZWllaWdhXCA7CivlhaXmnK0gPCBueXV1c2F0c3VcIDsKK+eZuuihjOiAhSA8IGhha2tvdXNoYVwgOwor5YGc55WZ5omAIDwgdGVpcnl1dWpvXCA7Civlrq7ln47nnIwgPCBtaXlhZ2lrZW5cIDsKK+WJjeWJjeWbniA8IHplbnplbmthaVwgOwor54eX5b6z5YipIDwga2FuZG9rdXJpXCA7CivmrbvliJHloLQgPCBzaGlrZWlqb3VcIDsKK+WxsemBkyA8IHlhbWFtaWNoaVwgOwor5be75a2Q5pysIDwga2Fuc2hpaG9uXCA7CivpgIDlh7ogPCB0YWlzaHV0c3VcIDsKK+alveevgCA8IGdha3VzZXRzdVwgOwor5bi45aSPIDwgdG9rb25hdHN1XCA7CivnlLrorbDkvJogPCBjaG91Z2lrYWlcIDsKK+eUs+mBlCA8IHNoaW50YXRzdVwgOwor5Lq655Sf6KazIDwgamluc2Vpa2FuXCA7CivnnJ/nj6Dosp0gPCBzaGluanVnYWlcIDsKK+iLpeadviA8IHdha2FtYXRzdVwgOwor5bGA6ZW3IDwga3lva3VjaG91XCA7CivprLznk6YgPCBvbmlnYXdhcmFcIDsKK+W4neWupCA8IHRlaXNoaXRzdVwgOwor5Lqs6YO95biCIDwga3lvdXRvc2hpXCA7Civpm6jlj7DpoqggPCBhbWV0YWlmdXVcIDsKK+iHqueUseW9oiA8IGppeXV1Z2F0YVwgOwor5YWN6Kix5Yi2IDwgbWVua3lvc2VpXCA7Civpm5HloLHmrIQgPCB6YXBwb3VyYW5cIDsKK+aEm+WFmuW/gyA8IGFpdG91c2hpblwgOwor6Ziy5q2i5rOVIDwgYm91c2hpaG91XCA7Civoo5zliqnmvKLlrZcgPCBob2pva2FuamlcIDsKK+W6iuS4iyA8IHl1a2FzaGl0YVwgOwor6YG45oyZ5rOVIDwgc2Vua3lvaG91XCA7Civlkozoi7Hovp7mm7ggPCB3YWVpamlzaG9cIDsKK+edgOS/oSA8IGNoYWt1c2hpblwgOwor5aSp5LqV6KOPIDwgdGVuam91dXJhXCA7CivljYrpmbDlvbEgPCBoYW4nJ2luJydlaVwgOwor5pyA6YeN54K5IDwgc2FpanV1dGVuXCA7CivkuIDlr77kuIAgPCBpdHRhaWljaGlcIDsKK+eZveacrSA8IHNoaXJvZnVkYVwgOwor5YiH5YWlIDwgc2V0c3VueXV1XCA7CivmqJnmnK0gPCBoeW91c2F0c3VcIDsKK+WHuuWLlSA8IHNodXRzdWRvdVwgOwor6L+r5YqbIDwgaGFrdXJ5b2t1XCA7CivlsZHpiYQgPCBrdXp1dGV0c3VcIDsKK+mrque2sSA8IGthbWlkenVuYVwgOwor6YG45oyZ5rCRIDwgc2Vua3lvbWluXCA7CivpgJDkuIAgPCBjaGlrdWljaGlcIDsKK+aVmeWUhuiAhSA8IGt5b3VzYXNoYVwgOwor5paZ55CG5Lq6IDwgcnlvdXJpbmluXCA7Civoh6rnlLHluK0gPCBqaXl1dXNla2lcIDsKK+aciOWIiuiqjCA8IGdla2thbnNoaVwgOwor5L616aOfIDwgc2hpbnNob2t1XCA7CivkuI3nhp/nt7QgPCBmdWp1a3VyZW5cIDsKK+WPpOWFuOeahCA8IGtvdGVudGVraVwgOwor6Iqx5rC3IDwgaGFuYWdvb3JpXCA7Civkv4Tpm6ggPCBuaXdha2FhbWVcIDsKK+Wkieatu+iAhSA8IGhlbnNoaXNoYVwgOwor5pys5qC85YyWIDwgaG9ua2FrdWthXCA7Civku5XkuIrlt6UgPCBzaGlhZ2Vrb3VcIDsKK+eJoeS4ueadjyA8IGJvdGFua3lvdVwgOwor5bmz5pa55b2iIDwgaGVpaG91a2VpXCA7CivlpInljJbnkIMgPCBoZW5rYWt5dXVcIDsKK+mBoOmalOimliA8IGVua2FrdXNoaVwgOwor6Iy25a6kIDwgY2hhc2hpdHN1XCA7Civpm5HoqJjluLMgPCB6YWtraWNob3VcIDsKK+WcqOagoeeUnyA8IHphaWtvdXNlaVwgOwor55m95pelIDwgaGFrdWppdHN1XCA7CivkvqDpqqggPCBreW91a290c3VcIDsKK+WQjOS9jeWFg+e0oCA8IGRvdWlnZW5zb1wgOwor5pGp5pOm6Z+zIDwgbWFzYXRzdW9uXCA7CivlsJHpo58gPCBzaG91c2hva3VcIDsKK+W3s+W5tCA8IGhlYmlkb3NoaVwgOwor6JuN54OP6LOKIDwgaG90YXJ1aWthXCA7CivoibbniakgPCB0c3V5YW1vbm9cIDsKK+WGjeeUn+azlSA8IHNhaXNlaWhvdVwgOwor5aSa55m65qmfIDwgdGFoYXRzdWtpXCA7CivlhrflpbQgPCBoaXlheWFra29cIDsKK+a0u+eJiOWxiyA8IGthcHBhbicneWFcIDsKK+mHkeWJm+aJiyA8IGtvbmdvdXNodVwgOwor6KKr5a6z6aGNIDwgaGlnYWlnYWt1XCA7Civlho3lvpPlhYTlvJ8gPCBmdXRhaXRva29cIDsKK+mBuOaMmeaoqSA8IHNlbmt5b2tlblwgOwor5Z+65pys57WmIDwga2lob25reXV1XCA7CivpnZ7ph5HlsZ4gPCBoaWtpbnpva3VcIDsKK+Wwj+mgrSA8IGtvZ2FzaGlyYVwgOwor54yp54yp57eLIDwgc2hvdWpvdWhpXCA7Civlm57mlZnlvpIgPCBrYWlreW91dG9cIDsKK+aMh+ekuuWFiCA8IHNoaWppc2FraVwgOwor5YKZ5b+Y6YyyIDwgYmlib3Vyb2t1XCA7CivnoILns5bpu40gPCBzYXRvdWtpYmlcIDsKK+ahiOWGheabuCA8IGFuJyduYWlzaG9cIDsKK+WKn+WKtOmHkSA8IGtvdXJvdWtpblwgOwor6KKr5beu5YilIDwgaGlzYWJldHN1XCA7Civnl5jnl5XpnaIgPCBhYmF0YXp1cmFcIDsKK+acseaWh+mHkSA8IHNodWJ1bmtpblwgOwor5LiN6Ky55oWOIDwgZnVraW5zaGluXCA7Civogp3noazlpIkgPCBrYW5rb3VoZW5cIDsKK+acq+acn+eahCA8IG1ha2tpdGVraVwgOwor56S85aWJ5YWsIDwgcmVpYm91a291XCA7CivljZTmioDogIUgPCBreW91Z2lzaGFcIDsKK+Wkmui2s+mhniA8IHRhc29rdXJ1aVwgOwor5bGI6L6xIDwga3V0c3Vqb2t1XCA7CivnpZ7np5jmgKcgPCBzaGlucGlzZWlcIDsKK+ayuOmosOeCuSA8IGZ1dHRvdXRlblwgOwor6aSK6a2a5rGgIDwgeW91Z3lvY2hpXCA7CivprZTms5XnmoQgPCBtYWhvdXRla2lcIDsKK+S6nOmJm+WHuOeJiCA8IGFlbnRvcHBhblwgOwor6KO95rC35omAIDwgc2VpaHlvdWpvXCA7CivplqLopb/lvIEgPCBrYW5zYWliZW5cIDsKK+mqqOiGnCA8IGtvdHN1bWFrdVwgOwor5YWr5Y2D6I2JIDwgeWFjaGlndXNhXCA7CivnlLrop5IgPCBtYWNoaWthZG9cIDsKK+i+u+WQmyA8IHRzdWppZ2ltaVwgOwor55yB5YqbIDwgc2hvdXJ5b2t1XCA7Civpr4nluZ8gPCBrb2lub2JvcmlcIDsKK+mBk+S6pOazlSA8IGRvdWtvdWhvdVwgOwor6YeO6I+c5rGBIDwgeWFzYWlqaXJ1XCA7CivmlqHml4vmlpkgPCBhc3NlbnJ5b3VcIDsKK+i1pOmwryA8IGFrYWl3YXNoaVwgOwor6Iiq5rW35aOrIDwga291a2Fpc2hpXCA7Civmta7li5XmoKogPCBmdWRvdWthYnVcIDsKK+mqqOiCiSA8IGtvdHN1bmlrdVwgOwor5YaF5a6kIDwgbmFpc2hpdHN1XCA7Civmt7fkuqTmnpcgPCBrb25rb3VyaW5cIDsKK+aooeevhOWbmiA8IG1vaGFuc2h1dVwgOwor5bed5bK4IDwga2F3YWdpc2hpXCA7CivorJvnvqnpjLIgPCBrb3VnaXJva3VcIDsKK+W5leS4iyA8IG1ha3VzaGl0YVwgOwor55uu5Y2wIDwgbWVqaXJ1c2hpXCA7CivnlJ/lrZjogIUgPCBzZWl6b25zaGFcIDsKK+Wwu+i7vSA8IHNoaXJpZ2FydVwgOwor5LiN6Kys5oCnIDwgZnVieXV1c2VpXCA7CivlsI7pm7vmgKcgPCBkb3VkZW5zZWlcIDsKK+aUuemdqeahiCA8IGthaWtha3VhblwgOwor56OB5rCX5rWu5LiKIDwgamlraWZ1am91XCA7CivnlLfooYYgPCBvdG9rb3NodXVcIDsKK+azleaUueatoyA8IGhvdWthaXNlaVwgOwor55Sf55Sj5oCnIDwgc2Vpc2Fuc2VpXCA7CivpsJDlj6MgPCB3YW5pZ3VjaGlcIDsKK+S4iuS4reS4iyA8IGpvdWNodXVnZVwgOwor5L+h6LaKIDwgc2hpbicnZXRzdVwgOwor5L+K6YC4IDwgc2h1bicnaXRzdVwgOwor57Wm5rC05omAIDwga3l1dXN1aWpvXCA7CivnjJznlpHlv4MgPCBzYWlnaXNoaW5cIDsKK+S4jeiqv+azlSA8IGJ1Y2hvdWhvdVwgOwor5bGe6KiXIDwgc2hva3V0YWt1XCA7Civnm7LliKQgPCBtZWt1cmFiYW5cIDsKK+WPl+WLleeahCA8IGp1ZG91dGVraVwgOwor6Kq/55CG5Y+wIDwgY2hvdXJpZGFpXCA7CivnqbrplpHlnLAgPCBrdXVrYW5jaGlcIDsKK+WKtOWDjeelrSA8IHJvdWRvdXNhaVwgOwor5YaN5p2l6YCxIDwgc2FyYWlzaHV1XCA7CivoibLmsqIgPCBzaGlraXRha3VcIDsKK+WFreWwuiA8IHJva3VzaGFrdVwgOwor5Luj6KGo6YOoIDwgZGFpaHlvdWJ1XCA7Civlg4XlsJHlt64gPCBraW5zaG91c2FcIDsKK+WRqOacn+aApyA8IHNodXVraXNlaVwgOwor6aOb6KGM5pyNIDwgaGlrb3VmdWt1XCA7CivkuI3nibnlrpogPCBmdXRva3V0ZWlcIDsKK+ihqOmdouWMliA8IGh5b3VtZW5rYVwgOwor5biC5pyJ5ZywIDwgc2hpeXV1Y2hpXCA7CivmqJnmupboqp4gPCBoeW91anVuZ29cIDsKK+i+m+WPoyA8IGthcmFrdWNoaVwgOwor5rC05bmz6Z2iIDwgc3VpaGVpbWVuXCA7CivkuqTpgJrot68gPCBrb3V0c3V1cm9cIDsKK+a2iOiyu+iAhSA8IHNob3VoaXNoYVwgOwor5Y+k6YGT5YW3IDwgZnVydWRvdWd1XCA7Civln7rmnKznmoQgPCBraWhvbnRla2lcIDsKK+iNieWbo+WtkCA8IGt1c2FkYW5nb1wgOwor55yf54+g6ImyIDwgc2hpbmp1aXJvXCA7CivntbHluKXmqKkgPCB0b3VzdWlrZW5cIDsKK+iJsuassiA8IHNoaWtpeW9rdVwgOwor57e057+S5qmfIDwgcmVuc2h1dWtpXCA7CivmpbXnhrEgPCBnb2t1bmV0c3VcIDsKK+i3s+iZqyA8IHRvYmltdXNoaVwgOwor5piH6ZmN6Ii1IDwgc2hvdWtvdWRhXCA7CivlhbXluqvnnIwgPCBoeW91Z29rZW5cIDsKK+WFrOa1t+S4iiA8IGtvdWthaWpvdVwgOwor5r+A5oim5Yy6IDwgZ2VraXNlbmt1XCA7CivlhIDnpLznmoQgPCBnaXJlaXRla2lcIDsKK+acieW5s+ezliA8IGFydWhlaXRvdVwgOwor55eb54OIIDwgdHN1dXJldHN1XCA7CivkuqTpgJrosrsgPCBrb3V0c3V1aGlcIDsKK+iHo+evgCA8IHNoaW5zZXRzdVwgOwor6YeR6a2a6I2JIDwga2luZ3lvc291XCA7CivnnYDngavngrkgPCBjaGFra2F0ZW5cIDsKK+mBuOaMmeaIpiA8IHNlbmt5b3NlblwgOwor6aqo566xIDwga290c3ViYWtvXCA7CivlrpfkuLvmqKkgPCBzb3VzaHVrZW5cIDsKK+awtOmFuOaguSA8IHN1aXNhbmtvblwgOwor6LWk5Y2B5a2XIDwgc2VraWp1dWppXCA7Civok4Tpn7PmqZ8gPCBjaGlrdW9ua2lcIDsKK+S/l+iqrCA8IHpva3VzZXRzdVwgOwor6Ieq5bCK5b+DIDwgamlzb25zaGluXCA7CivooajoqJjms5UgPCBoeW91a2lob3VcIDsKK+mcsuWkqeWVhiA8IHJvdGVuc2hvdVwgOwor5LyR5bu35pelIDwga3l1dXRlaWJpXCA7Civpo7LphZLnmZYgPCBpbnNodWhla2lcIDsKK+S4gOaWiemrmCA8IGlzc2VpZGFrYVwgOwor5Yem5YiR5Y+wIDwgc2hva2VpZGFpXCA7CivlhrfmiL/ou4ogPCByZWlib3VzaGFcIDsKK+aknOeWq+aJgCA8IGtlbicnZWtpam9cIDsKK+eFp+W6puioiCA8IHNob3Vkb2tlaVwgOwor5Y+O56iO5ZCPIDwgc2h1dXplaXJpXCA7Civllonoh6rmhaIgPCBub2RvamltYW5cIDsKK+mHkeeci+advyA8IGtpbmthbmJhblwgOwor5pWj5by+6YqDIDwgc2FuZGFuanV1XCA7CivlhLLlvbkgPCBtb3VrZXlha3VcIDsKK+Wfuemkiua2siA8IGJhaXlvdWVraVwgOwor5aSp54uX6aKoIDwgdGVuZ3VrYXplXCA7CivkuIDmnKzmnYkgPCBpcHBvbnN1Z2lcIDsKK+a4rOW+ruioiCA8IHNva3ViaWtlaVwgOwor6aKo6Ie05p6XIDwgZnV1Y2hpcmluXCA7CivlnLDnkIblraYgPCBjaGlyaWdha3VcIDsKK+e+jumjn+WutiA8IGJpc2hva3VrYVwgOwor5bC/6YGT54KOIDwgbnlvdWRvdWVuXCA7CivonrPonoLmi7MgPCB0b3Vyb3VrZW5cIDsKK+iqv+eQhuS6uiA8IGNob3VyaW5pblwgOwor5Zar54WZ5omAIDwga2l0c3VlbmpvXCA7CivmmYLliIbmmYIgPCBqaWJ1bmRva2lcIDsKK+S+m+i/sCA8IGt5b3VqdXRzdVwgOwor5YWr6YeN5qGcIDwgeWFlemFrdXJhXCA7CivljZfom67oiLkgPCBuYW5iYW5zZW5cIDsKK+ixjOixhuixhiA8IGVuZG91bWFtZVwgOwor5bO754OIIDwgc2h1bnJldHN1XCA7CivnlLfohbkgPCBvdG9rb2JhcmFcIDsKK+WbnuaVsOWIuCA8IGthaXN1dWtlblwgOwor6KO96YCg6ICFIDwgc2Vpem91c2hhXCA7Civph43lvbnkvJogPCBqdXV5YWtrYWlcIDsKK+WMl+asp+S6uiA8IGhva3VvdWppblwgOwor5LiA5Lq65a2QIDwgaGl0b3Jpa2tvXCA7CivmpbXmtYEgPCBreW9rdXJ5dXVcIDsKK+atu+eUn+imsyA8IHNoaXNlaWthblwgOwor54Kt55a955eFIDwgdGFuc29ieW91XCA7Civnmb3lnLDlm7MgPCBoYWt1Y2hpenVcIDsKK+eVpeeroCA8IHJ5YWt1c2hvdVwgOwor6byI55Sy6ImyIDwgYmVra291aXJvXCA7CivkuZfou4rliLggPCBqb3VzaGFrZW5cIDsKK+a4rOeoi+WZqCA8IHNva3V0ZWlraVwgOwor5YaG6Iie5puyIDwgZW5idWt5b2t1XCA7Civoia/ml6UgPCByeW91aml0c3VcIDsKK+a2iOiyu+eojiA8IHNob3VoaXplaVwgOwor5aOB5LiA6YeNIDwga2FiZWhpdG9lXCA7Civlm5vpnaLkvZMgPCBzaGltZW50YWlcIDsKK+W3puWJjSA8IGhpZGFyaW1hZVwgOwor5Zyo5p2l57eaIDwgemFpcmFpc2VuXCA7CivlpKfnkIbnn7MgPCBkYWlyaXNla2lcIDsKK+eUn+eUo+WcsCA8IHNlaXNhbmNoaVwgOwor5a++6LOqIDwgdGFpc2hpdHN1XCA7CivkuI3ms5Xnp7vmsJEgPCBmdWhvdWltaW5cIDsKK+eJh+eUsOiIjiA8IGthdGFpbmFrYVwgOwor6KSH5YaZ5qmfIDwgZnVrdXNoYWtpXCA7CivlsI/oqqwgPCBzaG91c2V0c3VcIDsKK+miqOS/l+eUuyA8IGZ1dXpva3VnYVwgOwor5bem5YWaIDwgaGlkYXJpdG91XCA7CivohIfpgZMgPCB3YWtpbWljaGlcIDsKK+WBtOmdouWbsyA8IHNva3VtZW56dVwgOwor5qO556ekIDwgc2FvYmFrYXJpXCA7CivotormqKnooYzngrogPCBla2tlbmtvdWlcIDsKK+iogOiqnuWtpiA8IGdlbmdvZ2FrdVwgOwor5beh6Iiq6Ii5IDwganVua291c2VuXCA7Civljp/lp4vmnpcgPCBnZW5zaGlyaW5cIDsKK+iHs+S4iuaoqSA8IHNoaWpvdWtlblwgOwor5bCP5aOy5ZWGIDwga291cmlzaG91XCA7CivmoZzosp0gPCBzYWt1cmFnYWlcIDsKK+e1seWItuWTgSA8IHRvdXNlaWhpblwgOwor55eF5rKhIDwgYnlvdWJvdHN1XCA7CivnrKzkuIDlr6kgPCBkYWlpc3NoaW5cIDsKK+e0heavm+S6uiA8IGtvdW1vdWppblwgOwor6Ii55qmLIDwgZnVuYWJhc2hpXCA7CivorITlhpnniYggPCB0b3VzaGFiYW5cIDsKK+aOp+iotOWvqSA8IGtvdXNvc2hpblwgOwor5Lit5Y+k6LuKIDwgY2h1dWtvc2hhXCA7Civpq6rmsrkgPCBrYW1pYWJ1cmFcIDsKK+aWsOe0gOWFgyA8IHNoaW5raWdlblwgOwor57e057+S5omAIDwgcmVuc2h1dWpvXCA7Civnq4vmlrnmoLkgPCByaXBwb3Vrb25cIDsKK+efremfs+majiA8IHRhbicnb25rYWlcIDsKK+S4u+aEj+S4u+e+qSA8IHNodWlzaHVnaVwgOwor5a6j6KqT5pu4IDwgc2Vuc2Vpc2hvXCA7Civkuozmi43lrZAgPCBuaWJ5b3VzaGlcIDsKK+WKtOi+suWFmiA8IHJvdW5vdXRvdVwgOwor5b285bK46IqxIDwgaGlnYW5iYW5hXCA7Civlv6DprYLnopEgPCBjaHV1a29uaGlcIDsKK+acieWKueaApyA8IHl1dWtvdXNlaVwgOwor5LiJ5pel5pyIIDwgbWlrYWR6dWtpXCA7CivnmbrmjK/mqZ8gPCBoYXNzaGlua2lcIDsKK+iHquW3seaknOafuyA8IGppa29rZW5zYVwgOwor57eP5YuZ5bqBIDwgc291bXVjaG91XCA7Civnl4XmrKAgPCBieW91a2V0c3VcIDsKK+WFq+WIhyA8IHlhdHN1Z2lyaVwgOwor5rWB6KGM6KqeIDwgcnl1dWtvdWdvXCA7CivlhoXprq7kurogPCBuYWlzZW5qaW5cIDsKK+WFpeWKmyA8IG55dXVyeW9rdVwgOwor55Sf55CG55qEIDwgc2Vpcml0ZWtpXCA7CivlkI3oqonmhb4gPCBtZWl5b3lva3VcIDsKK+WKquWKm+WutiA8IGRvcnlva3VrYVwgOwor5Zyo5p2l56iuIDwgemFpcmFpc2h1XCA7CivnlLrnrYsgPCBtYWNoaXN1amlcIDsKK+WkmuS6i+WkmumboyA8IHRhaml0YW5hblwgOwor5Yqg56Gr5rOVIDwga2FyeXV1aG91XCA7CivlpKflrrbml48gPCBkYWlrYXpva3VcIDsKK+aZr+aVmeW+kiA8IGtlaWt5b3V0b1wgOwor77yh77yi77yj6aCGIDwgxJNixKtzaMSranVuXCA7CivohILotrMgPCBhYnVyYWFzaGlcIDsKK+eUuueriyA8IGNob3VyaXRzdVwgOwor6auY56mN6ZuyIDwga291c2VraXVuXCA7CivmhI/msJfmj5rmj5ogPCBpa2l5b3V5b3VcIDsKK+S5l+iIueWIuCA8IGpvdXNlbmtlblwgOwor6ISa6Ki7IDwga3lha3VjaHV1XCA7Civlho3lr6nmn7sgPCBzYWlzaGluc2FcIDsKK+eUqOiqnumbhiA8IHlvdWdvc2h1dVwgOwor5qW15pyIIDwgZ29rdWdldHN1XCA7CivosqDlgrfogIUgPCBmdXNob3VzaGFcIDsKK+iEguizqiA8IHNoaXNoaXRzdVwgOwor5Yq05YON5rOVIDwgcm91ZG91aG91XCA7CivmsY7nlKjmqZ8gPCBoYW4nJ3lvdWtpXCA7CivoiJ/mqYsgPCBmdW5haGFzaGlcIDsKK+S+m+ihgCA8IGt5b3VrZXRzdVwgOwor5ZCN6KqJ5b+DIDwgbWVpeW9zaGluXCA7CivpkZHlrprkurogPCBrYW50ZWluaW5cIDsKK+W3neS4iyA8IGthd2FzaGltb1wgOwor5oqV56Wo5pelIDwgdG91aHlvdWJpXCA7CivlhYjooYzoqZ4gPCBzZW5rb3VzaGlcIDsKK+eLrOa8lOS8miA8IGRva3VlbmthaVwgOwor6Z+z6Z+75a2mIDwgb24nJ2luZ2FrdVwgOwor5Yqf5Yq06ICFIDwga291cm91c2hhXCA7Civlrp/pjLIgPCBqaXRzdXJva3VcIDsKK+iEs+e0sOiDniA8IG5vdXNhaWJvdVwgOwor576O5paH6Kq/IDwgYmlidW5jaG91XCA7CivmmI7ntLDmm7ggPCBtZWlzYWlzaG9cIDsKK+eUt+aWh+WtlyA8IG90b2tvbW9qaVwgOwor5ZKM6Iux6L6e5YW4IDwgd2FlaWppdGVuXCA7Civnt4/li5jlrpogPCBzb3VrYW5qb3VcIDsKK+iJsuW8sSA8IHNoaWtpamFrdVwgOwor5Zue6Kan5p2/IDwga2FpcmFuYmFuXCA7Civku7vlkb3nirYgPCBuaW5tZWlqb3VcIDsKK+eZuuWHuiA8IGhhc3NodXRzdVwgOwor5LiK57SN6YeRIDwgam91bm91a2luXCA7Civmi7fllY/lj7AgPCBnb3Vtb25kYWlcIDsKK+iFsOe4hCA8IGtvc2hpbmF3YVwgOwor55Sf56+AIDwgbmFtYWJ1c2hpXCA7CivkuIrlpY/mlocgPCBqb3Vzb3VidW5cIDsKK+iHquiyrOeCuSA8IGppc2VraXRlblwgOwor6Laz6IWwIDwgYXNoaWtvc2hpXCA7Civliqnnm6PnnaMgPCBqb2thbnRva3VcIDsKK+WFpeS7jyA8IG55dXVidXRzdVwgOwor5Yem55Sf6KiTIDwgc2hvc2Vpa3VuXCA7CivlhaXkuqQgPCBpcmltYWppcmlcIDsKK+iFsOe0kCA8IGtvc2hpaGltb1wgOwor5pys6Kmm6aiTIDwgaG9uc2hpa2VuXCA7CivlpJbkv6Hpg6ggPCBnYWlzaGluYnVcIDsKK+S/rueviSA8IHNodXVjaGlrdVwgOwor5LiA5Lq65YmNIDwgaGl0b3JpbWFlXCA7CivlirTlg43mqKkgPCByb3Vkb3VrZW5cIDsKK+iCiemjnyA8IG5pa3VzaG9rdVwgOwor5Zyw55CD5YSAIDwgY2hpa3l1dWdpXCA7CivlnLDkuIrmqKkgPCBjaGlqb3VrZW5cIDsKK+S/oee0hCA8IHNoaW4nJ3lha3VcIDsKK+mHkeWxj+miqCA8IGtpbmJ5b3VidVwgOwor5bCO6Zu75L2TIDwgZG91ZGVudGFpXCA7CivlhbHnm4rosrsgPCBreW91ZWtpaGlcIDsKK+iEseiQvSA8IGRhdHN1cmFrdVwgOwor5LiN5oSP6Kmm6aiTIDwgZnVpc2hpa2VuXCA7Civppqzpub/pnaIgPCBiYWthZHp1cmFcIDsKK+Wcn+eUqOazoiA8IGRveW91bmFtaVwgOwor57eP6YG45oyZIDwgc291c2Vua3lvXCA7CivliLblvqHnm6QgPCBzZWlneW9iYW5cIDsKK+W/g+aEj+awlyA8IGtva29yb2lraVwgOwor5qih56+E6Kmm5ZCIIDwgbW9oYW5qaWFpXCA7Civph43lirTlg40gPCBqdXVyb3Vkb3VcIDsKK+aJi+amtOW8viA8IHRlcnl1dWRhblwgOwor5LiA5p6a5LiKIDwgaWNoaW1haXVlXCA7CivlpKnkupXnga8gPCB0ZW5qb3V0b3VcIDsKK+mkiumtmuWgtCA8IHlvdWd5b2pvdVwgOwor5oqV56Wo5omAIDwgdG91aHlvdWpvXCA7CivovKnlh7ogPCBoYWlzaHV0c3VcIDsKK+W6p+aomeezuyA8IHphaHlvdWtlaVwgOwor5YaG5YCf5qy+IDwgZW5zaGFra2FuXCA7Civntbblr77oq5YgPCB6ZXR0YWlyb25cIDsKK+aNleiZq+e2siA8IGhvY2h1dWFtaVwgOwor5Ye65p2l5pifIDwgZGVraWJvc2hpXCA7Civkuozph43mr43pn7MgPCBuaWp1dWJvaW5cIDsKK+iKseafs+eVjCA8IGthcnl1dWthaVwgOwor5YWs5rCR5qipIDwga291bWlua2VuXCA7CivlpoLkvZXoqLEgPCBpa2FiYWthcmlcIDsKK+a4heaVmeW+kiA8IHNlaWt5b3V0b1wgOwor57Sr5aSW57eaIDwgc2hpZ2Fpc2VuXCA7Civkv67npZMgPCBzaHV1ZnV0c3VcIDsKK+WQjOWlveS8miA8IGRvdWtvdWthaVwgOwor5rSX6LuK5aC0IDwgc2Vuc2hham91XCA7CivlsZXmnJvou4ogPCB0ZW5ib3VzaGFcIDsKK+WtpumWpSA8IGdha3ViYXRzdVwgOwor5pqX5Y+35bizIDwgYW5nb3VjaG91XCA7CivkvY3osqAgPCBrdXJhaW1ha2VcIDsKK+iLl+S7oyA8IG5hd2FzaGlyb1wgOwor5bGx55S3IDwgeWFtYW90b2tvXCA7CivluYzppqzou4ogPCBob3JvYmFzaGFcIDsKK+Wkp+S8gealrSA8IGRhaWtpZ3lvdVwgOwor5aOy56yR5ammIDwgYmFpc2hvdWZ1XCA7CivmjqHngrnogIUgPCBzYWl0ZW5zaGFcIDsKK+aghOiAgOaghOiPryA8IGVpeW91ZWlnYVwgOwor6ZaT6ZqZ5q+UIDwga2FuZ2VraWhpXCA7Civlo67ooYzkvJogPCBzb3Vrb3VrYWlcIDsKK+WGjeeUn+WTgSA8IHNhaXNlaWhpblwgOwor5YWs56S+5YK1IDwga291c2hhc2FpXCA7CivmoZzojYkgPCBzYWt1cmFzb3VcIDsKK+Wuoui2syA8IGt5YWt1YXNoaVwgOwor5bGe55uuIDwgc2hva3Vtb2t1XCA7CivmnKrmnaXlraYgPCBtaXJhaWdha3VcIDsKK+S/l+ethiA8IHpva3VoaXRzdVwgOwor5pyr5aeL57WCIDwgc3Vlc2hpanV1XCA7CivlhJ/ljbQgPCBzaG91a3lha3VcIDsKK+a9nOawtOiJpiA8IHNlbnN1aWthblwgOwor5rC06YGT566hIDwgc3VpZG91a2FuXCA7Civmr43oqp7oqbHogIUgPCBib2dvd2FzaGFcIDsKK+WkqeeQhuaVmSA8IHRlbnJpa3lvdVwgOwor5qW95b6LIDwgZ2FrdXJpdHN1XCA7CivmoZzoibIgPCBzYWt1cmFpcm9cIDsKK+S6iOaDs+mrmCA8IHlvc291ZGFrYVwgOwor5omL5p+E6aGUIDwgdGVnYXJhZ2FvXCA7CivmiYvoirjlk4EgPCBzaHVnZWloaW5cIDsKK+W5s+ihoemMmCA8IGhlaWtvdXN1aVwgOwor5oqX5q+S57SgIDwga291ZG9rdXNvXCA7CivlsI/nvoogPCBrb2hpdHN1amlcIDsKK+Wkp+ixhueylSA8IGRhaXp1a2FzdVwgOwor56CU56m26LK7IDwga2Vua3l1dWhpXCA7Civlrp/os6ogPCBqaXNzaGl0c3VcIDsKK+efpeiDveeKryA8IGNoaW5vdWhhblwgOwor6YG45omL5qipIDwgc2Vuc2h1a2VuXCA7Civpup3pppnpub8gPCBqYWtvdWppa2FcIDsKK+a1t+WyuOe3miA8IGthaWdhbnNlblwgOwor6LK/5piT5rivIDwgYm91ZWtpa291XCA7CivmmqblubTluqYgPCByZWtpbmVuZG9cIDsKK+WkqeWuruWbsyA8IHRlbmt5dXV6dVwgOwor5pyJ5qip6ICFIDwgeXV1a2Vuc2hhXCA7CivkvZPoo4HkuIogPCB0ZWlzYWlqb3VcIDsKK+S8iumBlOeUtyA8IGRhdGVvdG9rb1wgOwor5LyR5YiK5pelIDwga3l1dWthbmJpXCA7CivogpjpiYQgPCBoaWppdGV0c3VcIDsKK+izg+mkhSA8IGNoaW5tb2NoaVwgOwor5Y+k5YW45a2mIDwga290ZW5nYWt1XCA7Civlrp3osp0gPCB0YWthcmFnYWlcIDsKK+i7veWPoyA8IGthcnVrdWNoaVwgOwor5pS56KiC54mIIDwga2FpdGVpYmFuXCA7CivnlJ/lrZjmqKkgPCBzZWl6b25rZW5cIDsKK+i2heiEsSA8IGNob3VkYXRzdVwgOwor6Kmy5ZWP6aGMIDwgZ2FpbW9uZGFpXCA7Civmmpflj7flraYgPCBhbmdvdWdha3VcIDsKK+S7o+ihjOiAhSA8IGRhaWtvdXNoYVwgOwor55S354mpIDwgb3Rva29tb25vXCA7CivlhavljYPmrbMgPCB5YWNoaXRvc2VcIDsKK+WPo+ecn+S8vCA8IGt1Y2hpbWFuZVwgOwor5Ye654mI6YOoIDwgc2h1cHBhbmJ1XCA7CivogbfplbcgPCBzaG9rdWNob3VcIDsKK+ims+a4rOaJgCA8IGthbnNva3Vqb1wgOwor57WM5riI55WMIDwga2VpemFpa2FpXCA7CivkuI3nhrHlv4MgPCBmdW5lc3NoaW5cIDsKK+WFrOazleS6uiA8IGtvdWhvdWppblwgOwor5LyR55yg5pyfIDwga3l1dW1pbmtpXCA7Civlia/nt4/nkIYgPCBmdWt1c291cmlcIDsKK+S8tOWlj+iAhSA8IGJhbnNvdXNoYVwgOwor5a++6KuH6ICFIDwgdGFpZGFuc2hhXCA7Civosr/mmJPms5UgPCBib3Vla2lob3VcIDsKK+WckumBiuS8miA8IGVuJyd5dXVrYWlcIDsKK+izm+aIkOiAhSA8IHNhbnNlaXNoYVwgOwor5LuP6aGUIDwgaG90b2tlZ2FvXCA7Civoirjog73kurogPCBnZWlub3VqaW5cIDsKK+WIhuitsuWcsCA8IGJ1bmpvdWNoaVwgOwor5bGI5YWJ5oCnIDwga3Vra291c2VpXCA7CivnnJ/nj6Dmub4gPCBzaGluanV3YW5cIDsKK+S7j+mgmCA8IGZ1dHN1cnlvdVwgOwor5Lqk6YCa56aNIDwga291dHN1dWthXCA7Civmi53ngavmlZkgPCBoYWlrYWt5b3VcIDsKK+euh+adoeabuCA8IGtham91Z2FraVwgOwor55Wl5q20IDwgcnlha3VyZWtpXCA7CivpgbjmjJnkurogPCBzZW5reW9uaW5cIDsKK+mFqui+suWutiA8IHJha3Vub3VrYVwgOwor5bel6Iq45ZOBIDwga291Z2VpaGluXCA7CivmnKrmnaXlnosgPCBtaXJhaWdhdGFcIDsKK+W8gemwk+mhniA8IGJlbnNhaXJ1aVwgOwor54Sh6LOH5qC8IDwgbXVzaGlrYWt1XCA7Civku7vlkb3mqKkgPCBuaW5tZWlrZW5cIDsKK+iZq+WegueCjiA8IGNodXVzdWllblwgOwor6aqo5p+EIDwga290c3VnYXJhXCA7CivmnKjmiLjlvqHlhY0gPCBraWRvZ29tZW5cIDsKK+egtOiQveaIuCA8IGdvcm90c3VraVwgOwor57ep5LiL6JasIDwga2FuZ2V5YWt1XCA7CivmnInmqZ/nmoQgPCB5dXVraXRla2lcIDsKK+i1pOiJsiA8IHNla2lzaG9rdVwgOwor5q2j5Y+N5a++IDwgc2VpaGFudGFpXCA7CivlsLvnmZYgPCBzaGlyaWt1c2VcIDsKK+mdkua1t+WOnyA8IGFvdW5hYmFyYVwgOwor5Ye56Z2i6Y+hIDwgb3VtZW5reW91XCA7CivloLHpgZPpmaMgPCBob3Vkb3VqaW5cIDsKK+alteWwjyA8IGt5b2t1c2hvdVwgOwor5Yqj5Yui5oSfIDwgcmVzc2Vpa2FuXCA7Civoh6rlt7Hnlo7lpJYgPCBqaWtvc29nYWlcIDsKK+S/teeJqSA8IGh5b3Vtb3RzdVwgOwor5b6h5paZ5ZywIDwgZ29yeW91Y2hpXCA7CivnlJ/niKogPCBuYW1hZHp1bWVcIDsKK+advumiqCA8IG1hdHN1a2F6ZVwgOwor6KiI566X6ICFIDwga2Vpc2Fuc2hhXCA7CivnhKHpp4Tlj6MgPCBtdWRhZ3VjaGlcIDsKK+adjuaJv+aZqSA8IHJpc2hvdWJhblwgOwor6LaF57W2IDwgY2hvdXpldHN1XCA7CivoiLnlrqQgPCBzZW5zaGl0c3VcIDsKK+emj+mfs+abuCA8IGZ1a3VpbnNob1wgOwor5YWr5Y2m5o6MIDwgaGFra2VzaG91XCA7Civoh6rkuLvnmoQgPCBqaXNodXRla2lcIDsKK+mAsuatqeWFmiA8IHNoaW5wb3RvdVwgOwor55u45Y+N5oCnIDwgc291aGFuc2VpXCA7Civog73li5XmhYsgPCBub3Vkb3V0YWlcIDsKK+WPuOS7pOWumCA8IHNoaXJlaWthblwgOwor5Zyw6ZyH6KiIIDwgamlzaGlua2VpXCA7CivntJnkuIDph40gPCBrYW1paGl0b2VcIDsKK+awtOWKoOa4myA8IG1penVrYWdlblwgOwor5Ye654mI6LK7IDwgc2h1cHBhbmhpXCA7CivmnpzloLHogIUgPCBrYWhvdW1vbm9cIDsKK+aIkOmVt+acnyA8IHNlaWNob3VraVwgOwor6IW654axIDwgc2VuJyduZXRzdVwgOwor5rWE5Zyf5pWZIDwgam91ZG9reW91XCA7CivmnZ/pq6ogPCBzb2t1aGF0c3VcIDsKK+i7ouWHuiA8IHRlbnNodXRzdVwgOwor5aSp5LqV5p2/IDwgdGVuam91aXRhXCA7Civpm4blobXmqZ8gPCBzaHV1amlua2lcIDsKK+WHjOazouaApyA8IHJ5b3VoYXNlaVwgOwor5b+r55S35a2QIDwga2FpZGFuc2hpXCA7CivlpKnni5fojLggPCB0ZW5ndXRha2VcIDsKK+eLmeaSg+WFtSA8IHNvZ2VraWhlaVwgOwor5aSW6Lyq5bGxIDwgZ2FpcmluemFuXCA7CivmmIfpmY3mqZ8gPCBzaG91a291a2lcIDsKK+WfuuekjuaOp+mZpCA8IGtpc29rb3Vqb1wgOwor5bO25bO2IDwgc2hpbWFqaW1hXCA7CivmlL7ngavni4IgPCBob3VrYWt5b3VcIDsKK+miqOmmrOeJmyA8IGZ1dWJhZ3l1dVwgOwor6Zm25Zmo5ZWGIDwgdG91a2lzaG91XCA7CivnlaXmnI0gPCByeWFrdWZ1a3VcIDsKK+S4ieWhgee3miA8IHNhbnJ1aXNlblwgOwor5bO25bGxIDwgc2hpbWF5YW1hXCA7CivpgZPnvqnlv4MgPCBkb3VnaXNoaW5cIDsKK+i2heaZguepuiA8IGNob3VqaWt1dVwgOwor5b6u57KS5a2QIDwgYmlyeXV1c2hpXCA7CivmsLTlubPnt5ogPCBzdWloZWlzZW5cIDsKK+WGjeWwi+WVjyA8IHNhaWppbm1vblwgOwor6ayx5YuDIDwgdXRzdWJvdHN1XCA7CivmnbHpm7IgPCBzaGlub25vbWVcIDsKK+eUn+a7hSA8IHNob3VtZXRzdVwgOwor5riF5o6D6LuKIDwgc2Vpc291c2hhXCA7Civkv5fniakgPCB6b2t1YnV0c3VcIDsKK+iEseehqyA8IGRhdHN1cnl1dVwgOwor6ISI57WhIDwgbXlha3VyYWt1XCA7CivkuIDlrprmuKnluqYgPCBpdHRlaW9uZG9cIDsKK+acgOWJjee3miA8IHNhaXplbnNlblwgOwor57W25a++6ICFIDwgemV0dGFpc2hhXCA7CivmraPnorrluqYgPCBzZWlrYWt1ZG9cIDsKK+awt+WJiuapnyA8IGh5b3VzYWtraVwgOwor5YiG6Kej6IO9IDwgYnVua2Fpbm91XCA7Civlm5vop5LlvaIgPCBzaGlrYWtrZWlcIDsKK+Wuo+iogOabuCA8IHNlbmdlbnNob1wgOwor5Y+45Luk5aGUIDwgc2hpcmVpdG91XCA7CivlraborZggPCBnYWt1c2hpa2lcIDsKK+eri+WkquWtkCA8IHJpdHRhaXNoaVwgOwor5pyJ6LmE6aGeIDwgeXV1dGVpcnVpXCA7Civkvb/nlKjogIUgPCBzaGl5b3VzaGFcIDsKK+S+teeVpSA8IHNoaW5yeWFrdVwgOwor5aSp5LiK55WMIDwgdGVuam91a2FpXCA7CivpnZLmtbfkuoAgPCBhb3VtaWdhbWVcIDsKK+adpemBiuiAhSA8IHJhaXl1dXNoYVwgOwor5beo5Lq66LuNIDwga3lvamluZ3VuXCA7Civlrabpg6jnlJ8gPCBnYWt1YnVzZWlcIDsKK+W3peWtpumDqCA8IGtvdWdha3VidVwgOwor5pWZ56eR5pu4IDwga3lvdWthc2hvXCA7CivntYzmuIjms5UgPCBrZWl6YWlob3VcIDsKK+egtOWCt+miqCA8IGhhc2hvdWZ1dVwgOwor6IG36LKsIDwgc2hva3VzZWtpXCA7CivmjIHlj4LkurogPCBqaXNhbicnbmluXCA7Civnt4/nnaPlupwgPCBzb3V0b2t1ZnVcIDsKK+aXpeacrOmrqiA8IG5paG9uZ2FtaVwgOwor6Im25LqLIDwgdHN1eWFnb3RvXCA7CivliLblvqHmo5IgPCBzZWlneW9ib3VcIDsKK+aknOahiOabuCA8IGtlbicnYW5zaG9cIDsKK+eOiem0qyA8IHRhbWFzaGlnaVwgOwor5q2p6YGT5qmLIDwgaG9kb3VreW91XCA7CivlnLDmlrnntJkgPCBjaGlob3VzaGlcIDsKK+aXpeWCreWPliA8IGhpeW91dG9yaVwgOwor5Zyw542E5aSJIDwgamlnb2t1aGVuXCA7CivlkIjlpY/lm6MgPCBnYXNzb3VkYW5cIDsKK+eTpueJiCA8IGthd2FyYWJhblwgOwor5aSp5LqV5omHIDwgdGVuam91c2VuXCA7Civlgrflj6MgPCBraXp1Z3VjaGlcIDsKK+WFqOWPjeWwhCA8IHplbmhhbnNoYVwgOwor5a+G57SEIDwgbWl0c3V5YWt1XCA7CivlpInpgJ/mqZ8gPCBoZW5zb2t1a2lcIDsKK+eEoeeQhuW8jyA8IG11cmlzaGlraVwgOwor6Lu95Yq05YONIDwga2Vpcm91ZG91XCA7CivlrabooZMgPCBnYWt1anV0c3VcIDsKK+ato+WPjeWQiCA8IHNlaWhhbmdvdVwgOwor57WM5riI5qyEIDwga2VpemFpcmFuXCA7Civou5LkuIsgPCBub2tpc2hpdGFcIDsKK+i7iuS7oyA8IGt1cnVtYWRhaVwgOwor5YCf5paZIDwgc2hha3VyeW91XCA7CivnlJ/lrZflvJUgPCBpa2lqaWJpa2lcIDsKK+aKleelqOWMuiA8IHRvdWh5b3VrdVwgOwor5Lq66YGUIDwgaGl0b3RhY2hpXCA7CivmnKjmm5zml6UgPCBtb2t1eW91YmlcIDsKK+WHuuacqOW5tCA8IGRla2lkb3NoaVwgOwor5YCZ5paHIDwgc291cm91YnVuXCA7CivnopPmsLfls6AgPCB1c3VpdG91Z2VcIDsKK+WvuueUtyA8IHRlcmFvdG9rb1wgOwor5Yqg5YWl6YeRIDwga2FueXV1a2luXCA7CivmsJHplpPkurogPCBtaW5rYW5qaW5cIDsKK+WFrOWLn+agqiA8IGtvdWJva2FidVwgOwor5qW15YyXIDwga3lva3Vob2t1XCA7CivkuZfppqzmnI0gPCBqb3ViYWZ1a3VcIDsKK+iEseeNhCA8IGRhdHN1Z29rdVwgOwor5pel5pys6aCYIDwgbmlob25yeW91XCA7CivokZfmm7jlkI0gPCBjaG9zaG9tZWlcIDsKK+e1jOWWtuWtpiA8IGtlaWVpZ2FrdVwgOwor55m96Ymb6YmxIDwgaGFrdWVua291XCA7CivnlLrmlrkgPCBtYWNoaWthdGFcIDsKK+eyl+ebruezliA8IHphcmFtZXRvdVwgOwor5omL5YmN5ZGz5ZmMIDwgdGVtYWVtaXNvXCA7CivlhoXnjoTplqIgPCBuYWlnZW5rYW5cIDsKK+WcsOaWueeojiA8IGNoaWhvdXplaVwgOwor6auY5Z2PIDwgdGFrYXRzdWtpXCA7Civlt6Hmn7vplbcgPCBqdW5zYWNob3VcIDsKK+WNsOWIt+apnyA8IGluc2F0c3VraVwgOwor5YeN5q276ICFIDwgdG91c2hpc2hhXCA7Civnmb3pioXosqggPCBoYWt1ZG91a2FcIDsKK+iyuOizgyA8IGthc2hpY2hpblwgOwor5Y6f5aeL5Lq6IDwgZ2Vuc2hpamluXCA7CivliqDlt6Xos4MgPCBrYWtvdWNoaW5cIDsKK+WFgeaWh+WFgeatpiA8IGluYnVuaW5idVwgOwor56u56Lyq6bqpIDwgY2hpa3V3YWZ1XCA7CivkuIDmlrnnmoQgPCBpcHBvdXRla2lcIDsKK+WHuuS7leS6iyA8IGRlc2hpZ290b1wgOwor5q2j5b+15aC0IDwgc2hvdW5lbmJhXCA7CivlgInmlbcgPCBrdXJhc2hpa2lcIDsKK+S5numjnyA8IGtvdHN1amlraVwgOwor5p+U6YGT5aC0IDwganV1ZG91am91XCA7CivohIrpq4Tngo4gPCBzZWtpenVpZW5cIDsKK+S6jOmHjemHnCA8IG5panV1Z2FtYVwgOwor56uL5pa55L2TIDwgcmlwcG91dGFpXCA7CivkvLjnuK4gPCBzaGluc2h1a3VcIDsKK+mBoOmalOaApyA8IGVua2FrdXNlaVwgOwor6Lu95q2M5YqHIDwga2Vpa2FnZWtpXCA7CivliLbli5Xnga8gPCBzZWlkb3V0b3VcIDsKK+WCrOecoOWJpCA8IHNhaW1pbnphaVwgOwor5LuK5LiA5bqmIDwgaW1haWNoaWRvXCA7CivmlLvpmLLmiKYgPCBrb3Vib3VzZW5cIDsKK+a1hOWcn+WulyA8IGpvdWRvc2h1dVwgOwor5pON57im5qG/IDwgc291anV1a2FuXCA7CivmlofmmI7ppKggPCBidW5tZWlrYW5cIDsKK+WwjumWouaVsCA8IGRvdWthbnN1dVwgOwor5rue5Zyo5ZywIDwgdGFpemFpY2hpXCA7Civkurros6ogPCBoaXRvamljaGlcIDsKK+acnemjnyA8IGNob3VzaG9rdVwgOwor5LiK57SN57GzIDwgam91bm91bWFpXCA7CivlroflrpnmnI0gPCB1Y2h1dWZ1a3VcIDsKK+WIqeWPo+iAhSA8IHJpa291bW9ub1wgOwor5pa55rOV6KuWIDwgaG91aG91cm9uXCA7Civok4vnhLbmgKcgPCBnYWl6ZW5zZWlcIDsKK+WNiuijveWTgSA8IGhhbnNlaWhpblwgOwor5bO75YilIDwgc2h1bmJldHN1XCA7CivkuIDloLTpnaIgPCBpY2hpYmFtZW5cIDsKK+efs+eJiOeUuyA8IHNla2liYW5nYVwgOwor55m76Yyy57C/IDwgdG91cm9rdWJvXCA7Civoh6rmmrToh6rmo4QgPCBqaWJvdWppa2lcIDsKK+S4gOaYqOaZqSA8IGlzc2FrdWJhblwgOwor5bGK5pu4IDwgdG9kb2tlc2hvXCA7CivlrqLnrYsgPCBreWFrdXN1amlcIDsKK+WkmualteWMliA8IHRha3lva3VrYVwgOwor5aSn5LiA55WqIDwgb29pY2hpYmFuXCA7CivooZvmmJ/lm70gPCBlaXNlaWtva3VcIDsKK+ebuOaSsumDqOWxiyA8IHN1bW91YmV5YVwgOwor5pyN6aO+IDwgZnVrdXNob2t1XCA7CivlgpHlh7ogPCBrZXNzaHV0c3VcIDsKK+S8keiBtyA8IGt5dXVzaG9rdVwgOwor5LiL57Sa55SfIDwga2FreXV1c2VpXCA7CivmqJnmupbmmYIgPCBoeW91anVuamlcIDsKK+S6jOmBkyA8IGZ1dGFtaWNoaVwgOwor6auY6b2i6ICFIDwga291cmVpc2hhXCA7CivkuIDkuIHliY0gPCBpdGNob3VtYWVcIDsKK+iIueS4uyA8IGZ1bmFudXNoaVwgOwor6aOf6YCaIDwgc2hva3V0c3V1XCA7CivmqKrmgYvmhZUgPCB5b2tvcmVuYm9cIDsKK+iyoeeUo+eojiA8IHphaXNhbnplaVwgOwor6Ieq5bex5L+d5a2YIDwgamlrb2hvem9uXCA7Civkuozph43ouqsgPCBuaWp1dXNoaW5cIDsKK+WuoueoriA8IGt5YWt1ZGFuZVwgOwor6LOK6JmQIDwgem9rdWd5YWt1XCA7CivnlJ/nkIblraYgPCBzZWlyaWdha3VcIDsKK+eGseWZqOWFtyA8IG5ldHN1a2lndVwgOwor5a+S5Ya357SXIDwga2FucmVpc2hhXCA7CivmsLTpgZPmoJMgPCBzdWlkb3VzZW5cIDsKK+aOoue0ouacqCA8IHRhbnNha3VnaVwgOwor56CU56m256eRIDwga2Vua3l1dWthXCA7CivkubPpiaIgPCBueXV1YmFjaGlcIDsKK+aciOmhjSA8IGdldHN1Z2FrdVwgOwor5a6f5pa95L6LIDwgamlzc2hpcmVpXCA7Civplbfpn7Ppmo4gPCBjaG91b25rYWlcIDsKK+S4jeipleWIpCA8IGZ1aHlvdWJhblwgOwor5pyI6aCDIDwgdHN1a2lnb3JvXCA7CivpgbjmiYvlm6MgPCBzZW5zaHVkYW5cIDsKK+S9nOeUtyA8IHNha3VvdG9rb1wgOwor5aSa5LqL5aSa56uvIDwgdGFqaXRhdGFuXCA7Civlip/liKnnmoQgPCBrb3VyaXRla2lcIDsKK+WkqeeQg+WEgCA8IHRlbmt5dXVnaVwgOwor55S35b25IDwgb3Rva295YWt1XCA7CivnnJ/nj6DlsaQgPCBzaGluanVzb3VcIDsKK+W5s+Wdh+eCuSA8IGhlaWtpbnRlblwgOwor5LiK6bayIDwgam91Yml0YWtpXCA7CivohZXmnpUgPCB1ZGVtYWt1cmFcIDsKK+mAo+WQiOS8miA8IHJlbmdvdWthaVwgOwor5bel5qWt5YyWIDwga291Z3lvdWthXCA7CivotaTpgZPlhIAgPCBzZWtpZG91Z2lcIDsKK+i1pOeGsSA8IHNla2luZXRzdVwgOwor5paH5a2m5bqnIDwgYnVuZ2FrdXphXCA7Civmm5bmmKfmqKHns4ogPCBhaW1haW1va29cIDsKK+iIjOWFiCA8IHNoaXRhc2FraVwgOwor5Yq05YON5YWaIDwgcm91ZG91dG91XCA7CivohbnmjIEgPCBoYXJhbW9jaGlcIDsKK+e1jOa4iOaIpiA8IGtlaXphaXNlblwgOwor54+N6KqsIDwgY2hpbnNldHN1XCA7CivnsbPnqbrou40gPCBiZWlrdXVndW5cIDsKK+aVt+Wxhee9riA8IHNoaWtpaWNoaVwgOwor5LuY6JC9IDwgdHN1a2VvY2hpXCA7CivphY3lvZPph5EgPCBoYWl0b3VraW5cIDsKK+iFsOaOmyA8IGtvc2hpa2FrZVwgOwor5LmF6ZeKIDwga3l1dWthdHN1XCA7Civpo5vomornl4cgPCBoaWJ1bnNob3VcIDsKK+WvhueMnyA8IG1pdHN1cnlvdVwgOwor6LWk55ei6I+MIDwgc2VraXJpa2luXCA7CivkupTljYHogqkgPCBnb2p1dWthdGFcIDsKK+mrmOetieWumCA8IGtvdXRvdWthblwgOwor5Zyw5pa554mIIDwgY2hpaG91YmFuXCA7CivnlLPlubQgPCBzYXJ1ZG9zaGlcIDsKK+adkOizqiA8IHphaXNoaXRzdVwgOwor54mH6ISz5rK5IDwgaGVuJydub3V5dVwgOwor5p2+6J2JIDwgbWF0c3V6ZW1pXCA7Civkuovli5nmrKHlrpggPCBqaW11amlrYW5cIDsKK+WlieihjOaJgCA8IGJ1Z3lvdXNob1wgOwor6IKv5a6a5paHIDwga291dGVpYnVuXCA7CivkuqzooaggPCBreW91b21vdGVcIDsKK+iKs+mmmeWJpCA8IGhvdWtvdXphaVwgOwor54Gr54G95rWBIDwga2FzYWlyeXV1XCA7CivljbDliLfmiYAgPCBpbnNhdHN1am9cIDsKK+aiheaapiA8IHVtZWdveW9taVwgOwor5aSn6IGW5aCCIDwgZGFpc2VpZG91XCA7CivntYzmuIjmgKcgPCBrZWl6YWlzZWlcIDsKK+ibh+e0i+efsyA8IGphbW9uc2VraVwgOwor5rWB6KGM5q2MIDwgcnl1dWtvdWthXCA7CivkvZzniakgPCBzYWt1bW90c3VcIDsKK+iznue9sCA8IHNob3ViYXRzdVwgOwor5LiJ6KeS5rSyIDwgc2Fua2FrdXN1XCA7CivlrqTnlLogPCBtdXJvbWFjaGlcIDsKK+S4ieaWh+WIpCA8IHNhbm1vbmJhblwgOwor5LiJ6KeS5rOiIDwgc2Fua2FrdWhhXCA7Civlrp/pmpvmgKcgPCBqaXNzYWlzZWlcIDsKK+erueefouadpSA8IHRha2V5YXJhaVwgOwor5bmz6KGM57eaIDwgaGVpa291c2VuXCA7CivokbHlnYrkuLsgPCBuZWdpYm91enVcIDsKK+Wtq+W8n+WtkCA8IG1hZ29kZXNoaVwgOwor5a6556mN5q+UIDwgeW91c2VraWhpXCA7CivkuLvnnLzngrkgPCBzaHVnYW50ZW5cIDsKK+mBoOmalOWcsCA8IGVua2FrdWNoaVwgOwor5LiJ6KeS5q+UIDwgc2Fua2FrdWhpXCA7CivlsI/mm7IgPCBzaG91a3lva3VcIDsKK+mVt+aZgumWkyA8IGNob3VqaWthblwgOwor5Y2K56uv6ICFIDwgaGFucGFtb25vXCA7Civni6znpoHms5UgPCBkb2traW5ob3VcIDsKK+W6g+WRiuiyuyA8IGtvdWtva3VoaVwgOwor5qSc5Ye6IDwga2Vuc2h1dHN1XCA7CivmnIDlhKrpgYcgPCBzYWl5dXVndXVcIDsKK+WPsOmiqOecvCA8IHRhaWZ1dWdhblwgOwor5pyq5pWZ6IKyIDwgbWlreW91aWt1XCA7Civkv4rmipwgPCBzaHVuYmF0c3VcIDsKK+ijgeaWreW4qyA8IHNhaWRhbnNoaVwgOwor6IKJ562GIDwgbmlrdWhpdHN1XCA7CivlhajljZjlsIQgPCB6ZW50YW5zaGFcIDsKK+iFsOW8sSA8IGtvc2hpeW93YVwgOwor5Yq55p6c55qEIDwga291a2F0ZWtpXCA7CivnqbrmiYvlvaIgPCBrdXV0ZWdhdGFcIDsKK+WNsOWIu+W4qyA8IGlua29rdXNoaVwgOwor6IOG546JIDwga2ltb3R0YW1hXCA7CivpnZLlubTovKkgPCBzZWluZW5oYWlcIDsKK+WJsueDueW6lyA8IGthcHBvdXRlblwgOwor5p2+6Iy4IDwgbWF0c3V0YWtlXCA7Civosr/mmJPlk4EgPCBib3Vla2loaW5cIDsKK+WJiuWyqeapnyA8IHNha3VnYW5raVwgOwor5qGc5qGDIDwgc2FrdXJhbmJvXCA7Civlr4Lmu4UgPCBqYWt1bWV0c3VcIDsKK+acrOizqiA8IGhvbnNoaXRzdVwgOwor5a6M5LqG5b6MIDwga2FucnlvdWdvXCA7CivlpKfkuIrmrrUgPCBkYWlqb3VkYW5cIDsKK+WckuiKuOWtpiA8IGVuZ2VpZ2FrdVwgOwor5oyH55u45pKyIDwgeXViaXp1bW91XCA7CivmsJflrofluoPlpKcgPCBraXVrb3VkYWlcIDsKK+iCqeeUsuW4ryA8IGtlbmtvdXRhaVwgOwor5q2j5b2T5oCnIDwgc2VpdG91c2VpXCA7CivnlKPlrqQgPCBzYW5zaGl0c3VcIDsKK+egguezluawtCA8IHNhdG91bWl6dVwgOwor5pa56YyQ5b2iIDwgaG91c3Vpa2VpXCA7Civnm7jlvZPmlbAgPCBzb3V0b3VzdXVcIDsKK+iFsOW4gyA8IGtvc2hpbnVub1wgOwor6IWw5be7IDwga29zaGltYWtpXCA7CivkvYPnha4gPCB0c3VrdWRhbmlcIDsKK+mGuOmAoOmFkiA8IGpvdXpvdXNodVwgOwor5bem5Lit6ZaTIDwgc2FjaHV1a2FuXCA7CivkvJ3ku6TogIUgPCBkZW5yZWlzaGFcIDsKK+acqOe2v+mHnSA8IG1vbWVuYmFyaVwgOwor5qGB5qmLIDwga2V0YWJhc2hpXCA7CivmnKjniYjnlLsgPCBtb2t1aGFuZ2FcIDsKK+aknOafu+W9uSA8IGtlbnNheWFrdVwgOwor5b+Y5bm05LyaIDwgYm91bmVua2FpXCA7CivlroflrpnlraYgPCB1Y2h1dWdha3VcIDsKK+actOiopSA8IGJva3V0b3RzdVwgOwor6aOf6JmrIDwgc2hva3VjaHV1XCA7CivnnJ/nkIblgKQgPCBzaGlucmljaGlcIDsKK+mFjeawtOeuoSA8IGhhaXN1aWthblwgOwor5aSq6Zm96aKoIDwgdGFpeW91ZnV1XCA7Civmnb7ohIIgPCBtYXRzdXlhbmlcIDsKK+S4g+mboyA8IHNoaWNoaW5hblwgOwor5L2/55So5rOVIDwgc2hpeW91aG91XCA7CivljbDliLflsYsgPCBpbnNhdHN1eWFcIDsKK+mfs+WjsOWtpiA8IG9uc2VpZ2FrdVwgOwor5LyK6YGU5aWzIDwgZGF0ZW9uJyduYVwgOwor55S35Z2CIDwgb3Rva296YWthXCA7Civlrr/ms4ogPCBzaHVrdWhha3VcIDsKK+S8r+eItSA8IGhha3VzaGFrdVwgOwor5qKT5byTIDwgYXp1c2F5dW1pXCA7Civlia/oqZ7lj6UgPCBmdWt1c2hpa3VcIDsKK+Wun+aVsOS9kyA8IGppc3N1dXRhaVwgOwor5aSa5pWw5oSP6KaLIDwgdGFzdXVpa2VuXCA7CivppIXogowgPCBtb2NoaWhhZGFcIDsKK+ijj+mVt+WxiyA8IHVyYW5hZ2F5YVwgOwor5p2x5bel5aSnIDwgdG91a291ZGFpXCA7CivlsYXlrqQgPCBreW9zaGl0c3VcIDsKK+mhjemamyA8IGhpdGFpZ2l3YVwgOwor55WZ5YilIDwgcnl1dWJldHN1XCA7Civmra/np5HljLvluKsgPCBzaGlrYWlzaGlcIDsKK+iKseaZguioiCA8IGhhbmFkb2tlaVwgOwor6KO96YCg5ZOBIDwgc2Vpem91aGluXCA7CivoqIjnrpfmm7ggPCBrZWlzYW5zaG9cIDsKK+WItuWLleaJiyA8IHNlaWRvdXNodVwgOwor5LiN6KaP5b6LIDwgZnVraXJpdHN1XCA7Civlj6PohZTnmYwgPCBrb3Vrb3VnYW5cIDsKK+WbnuetlOiAhSA8IGthaXRvdXNoYVwgOwor5Y2Y5b6T6ZmjIDwgdGFuanV1amluXCA7Civlj43oi7Hpm4QgPCBoYW4nJ2VpeXV1XCA7CivkuLvmqKnogIUgPCBzaHVrZW5zaGFcIDsKK+Wkp+acrOWxsSA8IGRhaWhvbnphblwgOwor5Lit5ZKM5YmkIDwgY2h1dXdhemFpXCA7CivmhYjlloTnrrEgPCBqaXplbmJha29cIDsKK+acgOW3pue/vCA8IHNhaXNheW9rdVwgOwor5LiJ6KeS5peXIDwgc2Fua2FrdWtpXCA7Civnvo7ljJbpgYvli5UgPCBiaWthdW5kb3VcIDsKK+WKoOWFpeiAhSA8IGthbnl1dXNoYVwgOwor6KO+5qih5qeYIDwgc3Vzb21veW91XCA7CivkuIDpmrvnnLwgPCBpc3Nla2lnYW5cIDsKK+S9v+eUqOaoqSA8IHNoaXlvdWtlblwgOwor6L+R5L2T6KmpIDwga2ludGFpc2hpXCA7CivlpKnni7zmmJ8gPCB0ZW5yb3VzZWlcIDsKK+i0iOeJqSA8IG9rdXJpbW9ub1wgOwor5YaN54qv6ICFIDwgc2FpaGFuc2hhXCA7Civlk6jmiJLmqZ8gPCBzaG91a2Fpa2lcIDsKK+mAmumBjumnhSA8IHRzdXVrYWVraVwgOwor5aSn5Lq65YWxIDwgb3RvbmFkb21vXCA7Civpp5Dml6UgPCBjaHV1bmljaGlcIDsKK+iLpuW/g+irhyA8IGt1c2hpbmRhblwgOwor5pON57im5aOrIDwgc291anV1c2hpXCA7CivnnJ/nj6DlhYkgPCBzaGluanVrb3VcIDsKK+afv+a4iyA8IGtha2lzaGlidVwgOwor6YCf5bqm6KiIIDwgc29rdWRva2VpXCA7CivnhKHosqzku7sgPCBtdXNla2luaW5cIDsKK+aSreS9hue3miA8IGJhbnRhbnNlblwgOwor6IGW6KqV56WtIDwgc2VpdGFuc2FpXCA7CivnhKHkuIDmlocgPCBtdWljaGltb25cIDsKK+W4uOWIhuaVsCA8IGpvdWJ1bnN1dVwgOwor5LiL6YeRIDwgc2hpdGFnYW5lXCA7CivkuK3otoogPCBjaHV1Z29zaGlcIDsKK+WGjeiAg+aFriA8IHNhaWtvdXJ5b1wgOwor5YSA5YW46ZW3IDwgZ2l0ZW5jaG91XCA7Civlt6Xlrabnp5EgPCBrb3VnYWt1a2FcIDsKK+iHquW3seS4u+e+qSA8IGppa29zaHVnaVwgOwor5aqS6LOqIDwgYmFpc2hpdHN1XCA7CivkuqTmrZPkvJogPCBrb3VrYW5rYWlcIDsKK+WkqeixoeWEgCA8IHRlbnNob3VnaVwgOwor5Lm+6I2JIDwgaG9zaGlndXNhXCA7CivnkLTniKogPCBrb3RvZHp1bWVcIDsKK+iFsOWeoyA8IGtvc2hpZ2FraVwgOwor5byV55So5paHIDwgaW4nJ3lvdWJ1blwgOwor5L+C5a6YIDwga2FrYXJpa2FuXCA7CivojZLms5XluKsgPCBhcmFob3VzaGlcIDsKK+iEiOaQjyA8IG15YWt1aGFrdVwgOwor546J6JmrIDwgdGFtYW11c2hpXCA7CivnlJ/llL4gPCBuYW1hdHN1YmFcIDsKK+Wun+ihjOWnlOWToSA8IGppa2tvdWlpblwgOwor55mC6aSK6LK7IDwgcnlvdXlvdWhpXCA7CivmqZ/plqLplbcgPCBraWthbmNob3VcIDsKK+WQkeWcsOaApyA8IGtvdWNoaXNlaVwgOwor5Yex5peL6ZaAIDwgZ2Fpc2VubW9uXCA7Civpo5/ogokgPCBzaG9rdW5pa3VcIDsKK+ioreWCmeiyuyA8IHNldHN1YmloaVwgOwor5p2+56ygIDwgbWF0c3VrYXNhXCA7Civoo4HnuKvluKsgPCBzYWlob3VzaGlcIDsKK+iyoeeUo+aoqSA8IHphaXNhbmtlblwgOwor5oqV55+z5qmfIDwgdG91c2VraWtpXCA7CivmhJvmoKHlv4MgPCBhaWtvdXNoaW5cIDsKK+S8j+mtlOauvyA8IGZ1a3VtYWRlblwgOwor6Iy25Zmo57WEIDwgY2hha2lndW1pXCA7CivkuInloYHmiYsgPCBzYW5ydWlzaHVcIDsKK+S4g+mBkyA8IHNoaWNoaWRvdVwgOwor6Jma54Sh55qEIDwga3lvbXV0ZWtpXCA7CivnlLPlhaUgPCBtb3VzaGlpcmVcIDsKK+S8neWwjuaApyA8IGRlbmRvdXNlaVwgOwor5a6i5qeYIDwga3lha3VzYW1hXCA7CivmloflrZfliJcgPCBtb2ppcmV0c3VcIDsKK+WPjeiKu+mhniA8IGhhbnN1dXJ1aVwgOwor5a6a5Z6L6KmpIDwgdGVpa2Vpc2hpXCA7CivmsLToj5PlrZAgPCBtaXp1Z2FzaGlcIDsKK+WAn+S4uyA8IGthcmludXNoaVwgOwor6buN5Zuj5a2QIDwga2liaWRhbmdvXCA7Civou5/lj6Pok4sgPCBuYW5rb3VnYWlcIDsKK+S5vuiCiSA8IGhvc2hpbmlrdVwgOwor6ZeH55u45aC0IDwgeWFtaXNvdWJhXCA7Civlrr/mlpkgPCBzaHVrdXJ5b3VcIDsKK+Wun+alrSA8IGppdHN1Z3lvdVwgOwor5ZCI5rCX6YGT5a62IDwgYWlraWRvdWthXCA7Civlrr/mlbUgPCBzaHVrdXRla2lcIDsKK+Wuh+WumeWNmiA8IHVjaHV1aGFrdVwgOwor5LiD6LyqIDwgc2hpY2hpcmluXCA7CivnlKPlh7ogPCBzYW5zaHV0c3VcIDsKK+iKpeWtkOiPnCA8IGthcmFzaGluYVwgOwor54+N6YGT5YW3IDwgY2hpbmRvdWd1XCA7CivkvZXml6UgPCBuYW4nJ25pY2hpXCA7Civos6rngrkgPCBzaGl0c3V0ZW5cIDsKK+m7hOihqOe0mSA8IGtpYnlvdXNoaVwgOwor6ISz5a6kIDwgbm91c2hpdHN1XCA7CivlvpPlp4nlprkgPCBqdXVzaGltYWlcIDsKK+WxseS8jyA8IHlhbWFidXNoaVwgOwor5a2Q56aP6ICFIDwga29idWt1c2hhXCA7CivmgJ3mg7PnlYwgPCBzaGlzb3VrYWlcIDsKK+awkeihhuWMliA8IG1pbnNodXVrYVwgOwor6YiN6buE6ImyIDwgbmlidWtpaXJvXCA7Civlrp/moKogPCBqaXRzdWthYnVcIDsKK+S4ieinkuW9oiA8IHNhbmtha2tlaVwgOwor5L615aWqIDwgc2hpbmRhdHN1XCA7CivlpKfmnKzllrYgPCBkYWlob24nJ2VpXCA7CivnjJvnibnoqJMgPCBtb3V0b2trdW5cIDsKK+eUuuS4rSA8IG1hY2hpbmFrYVwgOwor55S65LimIDwgbWFjaGluYW1pXCA7CivkuojlkYrnt6ggPCB5b2tva3VoZW5cIDsKK+WGt+a5v+W4gyA8IHJlaXNoaXBwdVwgOwor5qiZ5rqW5YyWIDwgaHlvdWp1bmthXCA7CivkuIros6ogPCBqb3VzaGl0c3VcIDsKK+S4i+iyvCA8IHNoaXRhYmFyaVwgOwor6aOf57SFIDwgc2hva3ViZW5pXCA7CivljZfom67kurogPCBuYW5iYW5qaW5cIDsKK+abtOihoyA8IGtvcm9tb2dhZVwgOwor6aOf57OnIDwgc2hva3VyeW91XCA7CivnlLDlnJLoqakgPCBkZW4nJ2Vuc2hpXCA7CivkuK3ooaggPCBuYWthb21vdGVcIDsKK+S4ieinkuW6pyA8IHNhbmtha3V6YVwgOwor5bCP5aeRIDwga29qdXV0b21lXCA7Civlho3oqabpqJMgPCBzYWlzaGlrZW5cIDsKK+agg+acqCA8IHRvY2hpbm9raVwgOwor5a+S5biv5p6XIDwga2FudGFpcmluXCA7CivohILmgKcgPCBhYnVyYXNob3VcIDsKK+WAieS4uyA8IGt1cmFudXNoaVwgOwor5YK+5pac6Z2iIDwga2Vpc2hhbWVuXCA7CivmrbvkuqHogIUgPCBzaGlib3VzaGFcIDsKK+S4g+izoiA8IHNoaWNoaWtlblwgOwor6YG65peP5om25YqpIDwgaXpva3VmdWpvXCA7CivlqJHnvoXlj4zmqLkgPCBzYXJhc291anVcIDsKK+S4ieinkuW4hiA8IHNhbmtha3Vob1wgOwor5bC75Y+WIDwgc2hpcml0b3JpXCA7CivlqZrlp7vms5UgPCBrb24nJ2luaG91XCA7Civkuozph43nqpMgPCBuaWp1dW1hZG9cIDsKK+iHqueEtumhniA8IHNoaXplbnJ1aVwgOwor5bCC5aOy5ZOBIDwgc2VuYmFpaGluXCA7CivmoLzlvI8gPCBrYWt1c2hpa2lcIDsKK+S4jee1seS4gCA8IGZ1dG91aXRzdVwgOwor5pi86bO2IDwgaGlydXRvbmJpXCA7CivlpJzkvJrmnI0gPCB5YWthaWZ1a3VcIDsKK+S6ruebtCA8IHJ5b3VjaG9rdVwgOwor5pqi6YGUIDwgY2hvdXRhdHN1XCA7CivlhZrmtL7lv4MgPCB0b3VoYXNoaW5cIDsKK+aAneaDs+eKryA8IHNoaXNvdWhhblwgOwor6IWw5YWDIDwga29zaGltb3RvXCA7CivohIflt64gPCB3YWtpemFzaGlcIDsKK+W8geW9k+S7oyA8IGJlbnRvdWRhaVwgOwor5p2J5664IDwgc3VnaWJhc2hpXCA7Civogp3oh5PnmYwgPCBrYW56b3VnYW5cIDsKK+S7mOeEvCA8IHRzdWtleWFraVwgOwor57WM5riI5Lq6IDwga2VpemFpamluXCA7Civku4/mlZnlvpIgPCBidWtreW91dG9cIDsKK+exs+a1t+i7jSA8IGJlaWthaWd1blwgOwor5ZCr5rK55bGkIDwgZ2FuJyd5dXNvdVwgOwor5oOF5aCx6KqMIDwgam91aG91c2hpXCA7CivlrabmrpYgPCBnYWt1c2hva3VcIDsKK+WHseaXi+i7jSA8IGdhaXNlbmd1blwgOwor6J6N6Kej54K5IDwgeXV1a2FpdGVuXCA7Civmt4vlt7TnkIMgPCByaW5wYWt5dXVcIDsKK+WrjOeFmeaoqSA8IGtlbicnZW5rZW5cIDsKK+Wkq+WppuS7siA8IGZ1dWZ1bmFrYVwgOwor5oSf5p+T5Y6fIDwga2Fuc2VuZ2VuXCA7Civov47os5PppKggPCBnZWloaW5rYW5cIDsKK+agquW8jyA8IGthYnVzaGlraVwgOwor6KmV6K2w5LyaIDwgaHlvdWdpa2FpXCA7Civlpb3nlLflrZAgPCBrb3VkYW5zaGlcIDsKK+aXqeaYpeizpiA8IHNvdXNodW5mdVwgOwor5p+P5qeZIDwgYnlha3VzaGluXCA7CivllonpoK3nmYwgPCBrb3V0b3VnYW5cIDsKK+eLrOmFjCA8IGRva3VzaGFrdVwgOwor5a+d5qWt5birIDwgbmV3YXphc2hpXCA7CivkurrmoLzljJYgPCBqaW5rYWt1a2FcIDsKK+WvheW5tCA8IHRvcmFkb3NoaVwgOwor57a66bqX5LqLIDwga2lyZWlnb3RvXCA7CivoqJjlkI3moKogPCBraW1laWthYnVcIDsKK+aQuuW4r+WTgSA8IGtlaXRhaWhpblwgOwor6aeQ5bGv5omAIDwgY2h1dXRvbmpvXCA7CivnoJTnqbbmiYAgPCBrZW5reXV1am9cIDsKK+acgOWFiOerryA8IHNhaXNlbnRhblwgOwor5bGF5L2P6ICFIDwga3lvanV1c2hhXCA7CivoqoflvLXms5UgPCBrb2Nob3Vob3VcIDsKK+Wwj+WShCA8IGtvYmFuYXNoaVwgOwor5Li46IWwIDwgbWFydWdvc2hpXCA7CivmmLzpo68gPCBoaXJ1bWVzaGlcIDsKK+imluimmuWMliA8IHNoaWtha3VrYVwgOwor5LyQ5pyoIDwgYmF0c3Vib2t1XCA7Civkv4rlgpEgPCBzaHVua2V0c3VcIDsKK+S4reiPr+ihlyA8IGNodXVrYWdhaVwgOwor6IG35q20IDwgc2hva3VyZWtpXCA7CivpgKPliKTnirYgPCByZW5iYW5qb3VcIDsKK+m6nemmmeeMqyA8IGpha291bmVrb1wgOwor5aSJ5YWJ5pifIDwgaGVua291c2VpXCA7Civlr6nmn7vlrpggPCBzaGluc2FrYW5cIDsKK+WkmueUqOS4rSA8IHRheW91Y2h1dVwgOwor5pep5p2x5oimIDwgc291dG91c2VuXCA7Civpu5nnp5jmqKkgPCBtb2t1aGlrZW5cIDsKK+WGkumZuuirhyA8IGJvdWtlbmRhblwgOwor5bi45YKZ6JasIDwgam91Yml5YWt1XCA7CivmnrbmqYsgPCBrYWtlaGFzaGlcIDsKK+WmiuWppuacjSA8IG5pbnB1ZnVrdVwgOwor5p+P5pyoIDwga2FzaGl3YWdpXCA7CivkvZPph43oqIggPCB0YWlqdXVrZWlcIDsKK+itpuWumOmaiiA8IGtlaWthbnRhaVwgOwor5Luu5qmLIDwga2FyaWJhc2hpXCA7CivorJvoq4fnpL4gPCBrb3VkYW5zaGFcIDsKK+ixhueykiA8IG1hbWV0c3VidVwgOwor5LyR5pelIDwga3l1dWppdHN1XCA7CivkuIrolqwgPCB1d2FndXN1cmlcIDsKK+i/keS7o+ipqSA8IGtpbmRhaXNoaVwgOwor54WZ6I2J6YqtIDwgdGFiYWtvc2VuXCA7CivplpPmipXoqZ4gPCBrYW50b3VzaGlcIDsKK+etlOW8geiAhSA8IHRvdWJlbnNoYVwgOwor5bmz6KGM5qOSIDwgaGVpa291Ym91XCA7Civon7vlnLDnjYQgPCBhcmlqaWdva3VcIDsKK+WvhuWupCA8IG1pc3NoaXRzdVwgOwor5omB5qGD6IW6IDwgaGVudG91c2VuXCA7CivlhazliKTlu7cgPCBrb3VoYW50ZWlcIDsKK+eOieeroCA8IGd5b2t1c2hvdVwgOwor5pWw5YSE5bm0IDwgc3V1b2t1bmVuXCA7Civnm4bnga/nsaAgPCBib25kb3Vyb3VcIDsKK+Wuv+WwhiA8IHNodWt1c2hvdVwgOwor57WC5oim5b6MIDwgc2h1dXNlbmdvXCA7CivlsIbljZIgPCBzaG91c290c3VcIDsKK+S4oeiIjCA8IHJ5b3V6ZXRzdVwgOwor57eo6ZuG6YOoIDwgaGVuc2h1dWJ1XCA7Civlkajlm7LplbcgPCBzaHV1aWNob3VcIDsKK+WFrOmBuOWItiA8IGtvdXNlbnNlaVwgOwor6IG35qWtIDwgc2hva3VneW91XCA7Civkv67nkIblt6UgPCBzaHV1cmlrb3VcIDsKK+acgOmBqeWMliA8IHNhaXRla2lrYVwgOwor5YyW5a2m6ICFIDwga2FnYWt1c2hhXCA7CivlsI7lh7ogPCBkb3VzaHV0c3VcIDsKK+i0iOizhOe9qiA8IHpvdXdhaXphaVwgOwor5a6/5a2mIDwgc2h1a3VnYWt1XCA7CivkuI3mib/oqo0gPCBmdXNob3VuaW5cIDsKK+S6lOmHjeWUsSA8IGdvanV1c2hvdVwgOwor5bCP5YaKIDwgc2hvdXNhdHN1XCA7Civoh6rlt7HpoZXnpLogPCBqaWtva2VuamlcIDsKK+W5tOm9oumghiA8IG5lbnJlaWp1blwgOwor6LOt5Y2a5aC0IDwgdG9iYWt1am91XCA7CivkuKHohJogPCByeW91a3lha3VcIDsKK+eci+WuiOiAhSA8IGthbnNodXNoYVwgOwor6ISx5Ye6IDwgZGFzc2h1dHN1XCA7CivlrqLluK0gPCBreWFrdXNla2lcIDsKK+W8sembu+WZqCA8IGpha3VkZW5raVwgOwor5LiL6I2JIDwgc2hpdGFrdXNhXCA7Civml6XmnKznmoQgPCBuaWhvbnRla2lcIDsKK+WwhOWHuiA8IHNoYXNodXRzdVwgOwor6ZaL5aK+5ZywIDwga2Fpa29uY2hpXCA7CivmmqbooZMgPCByZWtpanV0c3VcIDsKK+emgeeMn+acnyA8IGtpbnJ5b3VraVwgOwor6LWk5ZyfIDwgYWthdHN1Y2hpXCA7CivliY3poY3pg6ggPCB6ZW5nYWt1YnVcIDsKK+ipleirluWutiA8IGh5b3Vyb25rYVwgOwor6Ieq5bex6LKg5ouFIDwgamlrb2Z1dGFuXCA7CivkuIDmlonlrokgPCBpc3NlaXlhc3VcIDsKK+mcsuWkqemiqOWRgiA8IHJvdGVuYnVyb1wgOwor5LiA6Kaq562JIDwgaXNzaGludG91XCA7Civlho3mlL7pgIEgPCBzYWlob3Vzb3VcIDsKK+WMluWtpue3miA8IGthZ2FrdXNlblwgOwor5oim5q276ICFIDwgc2Vuc2hpc2hhXCA7CivkuIDmloflrZcgPCBpY2hpbW9uamlcIDsKK+aEj+awl+aKleWQiCA8IGlraXRvdWdvdVwgOwor5paH5aOr6YCjIDwgYnVuc2hpcmVuXCA7CivmnKjntr/ns7ggPCBtb21lbicnaXRvXCA7CivnhKbpm7vmsJcgPCBzaG91ZGVua2lcIDsKK+aOiOS4juW8jyA8IGp1eW9zaGlraVwgOwor55uu5YiG6YePIDwgbWVidW5yeW91XCA7CivlpKnkuIvkuIAgPCB0ZW5rYWljaGlcIDsKK+S4reWPpOWTgSA8IGNodXVrb2hpblwgOwor5Lit57W2IDwgY2h1dXpldHN1XCA7CivluILloLTmgKcgPCBzaGlqb3VzZWlcIDsKK+S4reaAp+WhqSA8IGNodXVzZWllblwgOwor5LiL6IW5IDwgc2hpdGFiYXJhXCA7CivohLHkv5cgPCBkYXRzdXpva3VcIDsKK+aWh+iqnuiqvyA8IGJ1bmdvY2hvdVwgOwor5pWj5YW157eaIDwgc2FucGVpc2VuXCA7CivmtYHooYzlhZAgPCByeXV1a291amlcIDsKK+iFueaZguioiCA8IGhhcmFkb2tlaVwgOwor5biD6KKL6IW5IDwgaG90ZWliYXJhXCA7CivnhKHmlZnogrIgPCBtdWt5b3Vpa3VcIDsKK+afj+aJiyA8IGthc2hpd2FkZVwgOwor5pWZ5Yy65rCRIDwga3lvdWt1bWluXCA7CivlnLDpnIfluK8gPCBqaXNoaW50YWlcIDsKK+mVt+acn+aIpiA8IGNob3VraXNlblwgOwor6YCa55+l57C/IDwgdHN1dWNoaWJvXCA7Civkub7niakgPCBob3NoaW1vbm9cIDsKK+Wun+WtpiA8IGppdHN1Z2FrdVwgOwor5Yqg5bel5qWtIDwga2Frb3VneW91XCA7CivkuI3ooYznirYgPCBmdWd5b3Vqb3VcIDsKK+ahn+S/tSA8IHNhbmRhd2FyYVwgOwor6IOh6bq75rK5IDwgZ29tYWFidXJhXCA7Civml6XmnKznjL8gPCBuaWhvbnphcnVcIDsKK+eMn+iJsiA8IHJ5b3VzaG9rdVwgOwor5pen5LiW55WMIDwga3l1dXNla2FpXCA7CivkuIDohIggPCBpY2hpbXlha3VcIDsKK+awtOW5s+WLlSA8IHN1aWhlaWRvdVwgOwor6LWk5Y+jIDwgc2VraWd1Y2hpXCA7Civnn63lpKfnlJ8gPCB0YW5kYWlzZWlcIDsKK+iCluWDj+eUuyA8IHNob3V6b3VnYVwgOwor5LiA6KeS542jIDwgaWtrYWt1anV1XCA7Civlj6/lpInplbcgPCBrYWhlbmNob3VcIDsKK+S4gOimgee0oCA8IGljaGl5b3Vzb1wgOwor5YWQ56ul5YqHIDwgamlkb3VnZWtpXCA7CivkuK3nq4sgPCBjaHV1cml0c3VcIDsKK+Wfi+iRrOWcsCA8IG1haXNvdWNoaVwgOwor5LiK6KO95pysIDwgam91c2VpYm9uXCA7CivkuKHmgKfoirEgPCByeW91c2Vpa2FcIDsKK+Wun+ihjOiAhSA8IGppa2tvdXNoYVwgOwor6IG35o6MIDwgc2hva3VzaG91XCA7Civlgr7mlpzoqIggPCBrZWlzaGFrZWlcIDsKK+WupOWkliA8IHNoaXRzdWdhaVwgOwor54qv572q6ICFIDwgaGFuemFpc2hhXCA7Civlr5LljbUgPCBrYW50YW1hZ29cIDsKK+e1tuS6pOeKtiA8IHpla2tvdWpvdVwgOwor5aSW5p2l6ICFIDwgZ2FpcmFpc2hhXCA7CivkvJ3lsI7kvZMgPCBkZW5kb3V0YWlcIDsKK+izquaEnyA8IHNoaXRzdWthblwgOwor5qC85YilIDwga2FrdWJldHN1XCA7CivmoLjlipsgPCBrYWt1cnlva3VcIDsKK+aWnOa7kemZjSA8IHNoYWtha2tvdVwgOwor5bi45bmz5YCJIDwgam91aGVpc291XCA7CivkuLvlgqzogIUgPCBzaHVzYWlzaGFcIDsKK+aflOi7n+aApyA8IGp1dW5hbnNlaVwgOwor5YiG5ouF6YeRIDwgYnVudGFua2luXCA7CivlhrfolLXou4ogPCByZWl6b3VzaGFcIDsKK+acgOmrmOijgSA8IHNhaWtvdXNhaVwgOwor5Lih56uvIDwgcnlvdWhhc2hpXCA7CivliqDlhaXmqKkgPCBrYW55dXVrZW5cIDsKK+S4oeeriyA8IHJ5b3VyaXRzdVwgOwor5YmN5L2P5omAIDwgemVuanV1c2hvXCA7CivlsZXmnJvloZQgPCB0ZW5ib3V0b3VcIDsKK+mBjuaVj+eXhyA8IGthYmluc2hvdVwgOwor5Lq66aCt56iOIDwgbmludG91emVpXCA7CivoiJ7lj7DliocgPCBidXRhaWdla2lcIDsKK+S4i+e0kCA8IHNoaXRhaGltb1wgOwor5bmz5Z2H5YCkIDwgaGVpa2luY2hpXCA7Civku4rml6UgPCBrb24nJ25pY2hpXCA7CivmoLzlrZDpnaIgPCBrb3VzaGltZW5cIDsKK+aXqemjryA8IGhheWFtZXNoaVwgOwor5rC06Iy25bGLIDwgbWl6dWNoYXlhXCA7Civmg4XloLHntrIgPCBqb3Vob3Vtb3VcIDsKK+W3tOaXpuadjyA8IGhhdGFua3lvdVwgOwor6LK45pa5IDwga2FzaGlrYXRhXCA7Civlr6nnvo7nnLwgPCBzaGluYmlnYW5cIDsKK+iHqueEtuimsyA8IHNoaXplbmthblwgOwor6YGL5ZCm5aSp6LOmIDwgdW5wdXRlbnB1XCA7Civlr4zmoITppIrljJYgPCBmdWVpeW91a2FcIDsKK+iEguiCqumFuCA8IHNoaWJvdXNhblwgOwor6ZaA5aSW5ryiIDwgbW9uZ2Fpa2FuXCA7Civkub7mub8gPCBrYW5zaGl0c3VcIDsKK+aKl+iPjOaApyA8IGtvdWtpbnNlaVwgOwor6aGN57iBIDwgZ2FrdWJ1Y2hpXCA7CivkvJ3mn5PmgKcgPCBkZW5zZW5zZWlcIDsKK+WNsOW6puaUr+mCoyA8IGluZG9zaGluYVwgOwor5pyq57WE57mUIDwgbWlzb3NoaWtpXCA7CivmrKfljJbkuLvnvqkgPCBvdWthc2h1Z2lcIDsKK+awtOanmOa2siA8IHN1aXlvdWVraVwgOwor5pWR5Yqp6ZqKIDwga3l1dWpvdGFpXCA7CivnhKHkuoznhKHkuIkgPCBtdW5pbXV6YW5cIDsKK+S/neWtmOmHjyA8IGhvem9ucnlvdVwgOwor5LiJ5pel5LiJ5aScIDwgbWlra2FtaXlvXCA7CivniaHkuLnmtbfogIEgPCBib3RhbicnZWJpXCA7CivmoLjlhbXlmaggPCBrYWt1aGVpa2lcIDsKK+S4jea6gOi2syA8IGZ1bWFuem9rdVwgOwor6ZW36KuH6K2wIDwgbmFnYWRhbmdpXCA7CivlhpLpmbrogIUgPCBib3VrZW5zaGFcIDsKK+S4gOeykiA8IGhpdG90c3VidVwgOwor5auh5rWBIDwgY2hha3VyeXV1XCA7Civmm7Lnm64gPCBreW9rdW1va3VcIDsKK+mjn+assiA8IHNob2t1eW9rdVwgOwor57696JKy5ZujIDwgaGFuZWJ1dG9uXCA7Civmn7TlnqMgPCBzaGliYWdha2lcIDsKK+WcsOaWueWCtSA8IGNoaWhvdXNhaVwgOwor5Lqu5pyIIDwgcnlvdWdldHN1XCA7CivmnKzloLTniakgPCBob25iYW1vbm9cIDsKK+iqnuWtpuiAhSA8IGdvZ2FrdXNoYVwgOwor5LiL56m/IDwgc2hpdGFiYWtpXCA7Civlho3oqabooYwgPCBzYWlzaGlrb3VcIDsKK+S4gOevgCA8IGhpdG9mdXNoaVwgOwor5bGF5LiI6auYIDwgaXRha2VkYWthXCA7CivlpKrpmb3ns7sgPCB0YWl5b3VrZWlcIDsKK+eglOeptuWToSA8IGtlbmt5dXVpblwgOwor5byl57ir562WIDwgYmlob3VzYWt1XCA7CivnhKHloLHphawgPCBtdWhvdXNodXVcIDsKK+iYhua6neapiyA8IHJva291a3lvdVwgOwor57W25a++5YCkIDwgemV0dGFpY2hpXCA7CivlpKnpoILlhIAgPCB0ZW5jaG91Z2lcIDsKK+S4reeVpSA8IGNodXVyeWFrdVwgOwor5rW36LOK546LIDwga2Fpem9rdW91XCA7CivosqHnlYzkurogPCB6YWlrYWlqaW5cIDsKK+miqOadpeWdiiA8IGZ1dXJhaWJvdVwgOwor54q26KKLIDwgam91YnVrdXJvXCA7Civlr5LlhrflnLAgPCBrYW5yZWljaGlcIDsKK+WJjee9ruipniA8IHplbmNoaXNoaVwgOwor54mp6YePIDwgYnV0c3VyeW91XCA7CivliqDliKTkurogPCBrYWhhbicnbmluXCA7Civli5Xmu5Hou4ogPCBkb3VrYXNzaGFcIDsKK+e1kOawt+acnyA8IGtlcHB5b3VraVwgOwor6Zu75rCX5qmf5ZmoIDwgZGVua2lraWtpXCA7CivlsZXmnJvlj7AgPCB0ZW5ib3VkYWlcIDsKK+ekvOaLneWggiA8IHJlaWhhaWRvdVwgOwor6auY5oCn6IO9IDwga291c2Vpbm91XCA7Civkub7mtbfoi5QgPCBob3NoaW5vcmlcIDsKK+S9v+eUqOS+iyA8IHNoaXlvdXJlaVwgOwor5pyJ55Sw54S8IDwgYXJpdGF5YWtpXCA7Civpq5jlkajms6IgPCBrb3VzaHV1aGFcIDsKK+Wwv+aknOafuyA8IG55b3VrZW5zYVwgOwor55Kw54q257eaIDwga2Fuam91c2VuXCA7CivmnKvmtYEgPCBtYXRzdXJ5dXVcIDsKK+eZuuaDs+azlSA8IGhhc3NvdWhvdVwgOwor5qCq5Li7IDwga2FidW51c2hpXCA7CivkuIvnn7MgPCBzaGl0YWlzaGlcIDsKK+WFjeeojueCuSA8IG1lbnplaXRlblwgOwor5YCk5q616KGoIDwgbmVkYW5oeW91XCA7Civpo6/mmYIgPCBtZXNoaWRva2lcIDsKK+ebtOW8n+WtkCA8IGppa2lkZXNoaVwgOwor6Ieq5bex5auM5oKqIDwgamlrb2tlbicnb1wgOwor6YCj6YKm5Yi2IDwgcmVucG91c2VpXCA7Civkvb/nlKjkurogPCBzaGl5b3VuaW5cIDsKK+akjeacqOmJoiA8IHVla2liYWNoaVwgOwor54Wn5bCE6YeOIDwgc2hvdXNoYXlhXCA7CivkvZzku5ggPCBzYWt1ZHp1a2VcIDsKK+aFiOWWhOW/gyA8IGppemVuc2hpblwgOwor5LiK5568IDwgdXdhbWFidXRhXCA7CivmnKjnhYnnk6YgPCBtb2t1cmVuZ2FcIDsKK+acqOe2v+eJqSA8IG1vbWVubW9ub1wgOwor5YWt5YiG5YSAIDwgcm9rdWJ1bmdpXCA7CivoppblnLDlubMgPCBzaGljaGloZWlcIDsKK+W3peS9nOWToSA8IGtvdXNha3VpblwgOwor5Lyv5Y+UIDwgaGFrdXNodWt1XCA7CivniKrpnakgPCB0c3VtYWthd2FcIDsKK+WupOWGhSA8IHNoaXRzdW5haVwgOwor5a6/5Li7IDwgeWFkb251c2hpXCA7Civlm57mvJXlupcgPCBrYWlzb3V0ZW5cIDsKK+efs+eCree0gCA8IHNla2l0YW5raVwgOwor5oqV5qmf55qEIDwgdG91a2l0ZWtpXCA7CivnjJ/niqzluqcgPCByeW91a2VuemFcIDsKK+S6jOaciCA8IGZ1dGF0c3VraVwgOwor5pel6YyyIDwgbmljaGlyb2t1XCA7Civnmq7osqHluIMgPCBrYXdhemFpZnVcIDsKK+S4gOeepSA8IGljaGliZXRzdVwgOwor6ISz6KGA5qCTIDwgbm91a2Vzc2VuXCA7CivmraPliYfljJYgPCBzZWlzb2t1a2FcIDsKK+Wkp+WlpeanmCA8IG9vb2t1c2FtYVwgOwor5Luk5a6kIDwgcmVpc2hpdHN1XCA7CivkvZPkuK0gPCBrYXJhZGFqdXVcIDsKK+asoOmZpei7iiA8IGtla2thbnNoYVwgOwor5LiA5aSn5LqLIDwgaWNoaWRhaWppXCA7CivpgKPliIbmlbAgPCByZW5idW5zdXVcIDsKK+S/rueQhuS7oyA8IHNodXVyaWRhaVwgOwor5Luy5aW9IDwgbmFrYXlvc2hpXCA7CivolYHpurvnlrkgPCBqaW5tYXNoaW5cIDsKK+WFt+eUs+abuCA8IGd1c2hpbnNob1wgOwor6Kqt5pu45a62IDwgZG9rdXNob2thXCA7Civnvo7ooZPpg6ggPCBiaWp1dHN1YnVcIDsKK+aEn+isneelrSA8IGthbnNoYXNhaVwgOwor6LK05pa55pa5IDwgYW5hdGFnYXRhXCA7Civoqr/pq6ogPCBjaG91aGF0c3VcIDsKK+adseS6rOmDvSA8IHRvdWt5b3V0b1wgOwor5pen5a2X5L2TIDwga3l1dWppdGFpXCA7Civoo73kvZzosrsgPCBzZWlzYWt1aGlcIDsKK+S6jOmAsemWkyA8IG5pc2h1dWthblwgOwor6YOo6JC95rCRIDwgYnVyYWt1bWluXCA7Civnianos6ogPCBidXNzaGl0c3VcIDsKK+aXqemBkyA8IGhheWFtaWNoaVwgOwor5Yqg55uf5Zu9IDwga2FtZWlrb2t1XCA7CivkuIDlpJzkuK0gPCBoaXRveWFqdXVcIDsKK+ani+mAoOS9kyA8IGtvdXpvdXRhaVwgOwor5Lit5Yy75a2mIDwgY2h1dWlnYWt1XCA7Civlj5fkv6HogIUgPCBqdXNoaW5zaGFcIDsKK+S8muitsOmMsiA8IGthaWdpcm9rdVwgOwor56aB54WZ6LuKIDwga2luJydlbnNoYVwgOwor54mH6YGTIDwga2F0YW1pY2hpXCA7Civpm7vlrZDpioMgPCBkZW5zaGlqdXVcIDsKK+WFt+S9k+etliA8IGd1dGFpc2FrdVwgOwor6LuK5o6M5Yy6IDwgc2hhc2hvdWt1XCA7CivnibnoqK0gPCB0b2t1c2V0c3VcIDsKK+S7luWbveawkSA8IHRha29rdW1pblwgOwor5YSS5a2m6ICFIDwganVnYWt1c2hhXCA7CivlkI3mjqLlgbUgPCBtZWl0YW50ZWlcIDsKK+WbvemAo+aXlyA8IGtva3VyZW5raVwgOwor6a+j54OP6LOKIDwgc3VydW1laWthXCA7CivlhajluILmsJEgPCB6ZW5zaGltaW5cIDsKK+WgsemBk+WumCA8IGhvdWRvdWthblwgOwor5LuP5a2mIDwgYnV0c3VnYWt1XCA7Civml6XmnKzmmbQgPCBuaWhvbmJhcmVcIDsKK+W4g+Wbo+eariA8IGZ1dG9uZ2F3YVwgOwor5L+u57mV6LK7IDwgc2h1dXplbmhpXCA7CivpnLLpnJwgPCB0c3V5dWppbW9cIDsKK+WwgumWgOabuCA8IHNlbm1vbnNob1wgOwor5YWs55So6LuKIDwga291eW91c2hhXCA7CivogJDmgKfoj4wgPCB0YWlzZWlraW5cIDsKK+acreadnyA8IHNhdHN1dGFiYVwgOwor5ZCM56iu6aGeIDwgZG91c2h1cnVpXCA7Civpn7Pln5/lpJYgPCBvbicnaWtpZ2FpXCA7CivlpI/ps6UgPCBuYXRzdWRvcmlcIDsKK+izquWVjyA8IHNoaXRzdW1vblwgOwor6Kaq5ZKM5oCnIDwgc2hpbndhc2VpXCA7CivliY3poK3okYkgPCB6ZW50b3V5b3VcIDsKK+ePoOaaluewviA8IHRhbWFub3JlblwgOwor54us56uLIDwgZG9rdXJpdHN1XCA7CivkuZ3mmJ/lrrYgPCBreXV1c2Vpa2FcIDsKK+mAmuawl+WtlCA8IHRzdXVraWtvdVwgOwor5pyI5qyhIDwgdHN1a2luYW1pXCA7CivorKzoqqwgPCBieXV1c2V0c3VcIDsKK+mao+S6uuaEmyA8IHJpbmppbicnYWlcIDsKK+S4jeaJv+efpSA8IGZ1c2hvdWNoaVwgOwor5q275Lqh5pWwIDwgc2hpYm91c3V1XCA7CivlrabljZIgPCBnYWt1c290c3VcIDsKK+WxheS9j+aoqSA8IGt5b2p1dWtlblwgOwor6Ymk5ous5bynIDwga2FnaWtha2tvXCA7CivlgKbmgKDmhJ8gPCBrZW50YWlrYW5cIDsKK+WGt+iUteiIuSA8IHJlaXpvdXNlblwgOwor5aW06LypIDwgeWF0c3ViYXJhXCA7CivlkIjmiJDphZIgPCBnb3VzZWlzaHVcIDsKK+WRs+WZjOaxgSA8IG1pc29zaGlydVwgOwor5oyH5bCO6ICFIDwgc2hpZG91c2hhXCA7CivlrablipsgPCBnYWt1cnlva3VcIDsKK+WNiuWPr+mAmiA8IGhhbmthdHN1dVwgOwor54Sh6K2m5ZGKIDwgbXVrZWlrb2t1XCA7Civln7rmnKzlkIjmhI8gPCBraWhvbmdvdWlcIDsKK+Wkp+ilv+mDtyA8IGRhaXNhaWdvdVwgOwor552h55yg5YmkIDwgc3VpbWluemFpXCA7Civml4vnm6Tlt6UgPCBzZW5iYW5rb3VcIDsKK+W4r+WIhuaVsCA8IHRhaWJ1bnN1dVwgOwor5bCP5YWQ56eR5Yy7IDwgc2hvdW5pa2FpXCA7CivlvozntpnogIUgPCBrb3VrZWlzaGFcIDsKK+S6ruWvnyA8IHJ5b3VzYXRzdVwgOwor5aSp5pel5aGpIDwgdGVucGlzaGlvXCA7CivlqIHlnKfnmoQgPCBpYXRzdXRla2lcIDsKK+S6jOmHjeW6lSA8IG5panV1em9rb1wgOwor5Y+I5byf5a2QIDwgbWF0YWRlc2hpXCA7CivmlZHlkb3lhbcgPCBreXV1bWVpZ3VcIDsKK+S4reasoSA8IG5ha2F0c3VnaVwgOwor56aB54yf5Yy6IDwga2lucnlvdWt1XCA7CivlvKnntJroiaYgPCBkb2t5dXVrYW5cIDsKK+aXp+itmCA8IGt5dXVzaGlraVwgOwor5Lq65aa7IDwgaGl0b2R6dW1hXCA7CivmgZLkuYXljJYgPCBrb3VreXV1a2FcIDsKK+aWsOmHiCA8IHNoaW5zaGFrdVwgOwor5YW35L2T55qEIDwgZ3V0YWl0ZWtpXCA7CivohbnkuIDmna8gPCBoYXJhaXBwYWlcIDsKK+agvOeQhuirliA8IGtha3VyaXJvblwgOwor5pel6Ku+IDwgbmljaGlkYWt1XCA7CivmhJ/orJ3nirYgPCBrYW5zaGFqb3VcIDsKK+iCoeS4iyA8IG1hdGFzaGl0YVwgOwor54++6KGM54qvIDwgZ2Vua291aGFuXCA7Civnj43lrqIgPCBjaGlua3lha3VcIDsKK+aXpeS7mOWNsCA8IGhpZHp1a2VpblwgOwor5aSq6Zm954GvIDwgdGFpeW91dG91XCA7CivmiJHmrabogIXnvoUgPCBnYW11c2hhcmFcIDsKK+WklumdoiA8IHNvdG9kenVyYVwgOwor5oOF5aCx5rqQIDwgam91aG91Z2VuXCA7CivmmKXoibIgPCBzaHVuc2hva3VcIDsKK+WFrOS9v+mkqCA8IGtvdXNoaWthblwgOwor57+M5pyIIDwgeW9rdWdldHN1XCA7CivluIbnq4vosp0gPCBob3RhdGVnYWlcIDsKK+iLpeatpuiAhSA8IHdha2FtdXNoYVwgOwor5Lqs5aWzIDwga3lvdW9uJyduYVwgOwor5riF566X5pu4IDwgc2Vpc2Fuc2hvXCA7CivmnKzooZfpgZMgPCBob25rYWlkb3VcIDsKK+S4suafvyA8IGt1c2hpZ2FraVwgOwor6YO15L6/6LuKIDwgeXV1Ymluc2hhXCA7Civoh6rlt7HniqDnibIgPCBqaWtvZ2lzZWlcIDsKK+e/jOaXpSA8IHlva3VqaXRzdVwgOwor5LiA54K55qmfIDwgaWNoaXRlbmtpXCA7CivkuKHmpbUgPCByeW91a3lva3VcIDsKK+Wkj+miqOmCqiA8IG5hdHN1a2F6ZVwgOwor5LuP5ZCNIDwgYnV0c3VteW91XCA7CivnibnoibIgPCB0b2t1c2hva3VcIDsKK+S4remBk+a0viA8IGNodXVkb3VoYVwgOwor5pq06aKo5Z+fIDwgYm91ZnV1aWtpXCA7CivnmbrnpoHmnKwgPCBoYWtraW5ib25cIDsKK+Wcp+mbu+awlyA8IGF0c3VkZW5raVwgOwor5beo5Lq65YWaIDwga3lvamludG91XCA7Civpo5/lrqIgPCBzaG9ra3lha3VcIDsKK+aZguS7o+eJqSA8IGppZGFpbW9ub1wgOwor5bGP6aKo5bKpIDwgYnlvdWJ1aXdhXCA7Civlv6voqJjpjLIgPCBrYWlraXJva3VcIDsKK+eItuimqiA8IGNoaWNoaW95YVwgOwor5pq06aKo5ZyPIDwgYm91ZnV1a2VuXCA7Civku67kvY8gPCBrYXJpenVtYWlcIDsKK+mbqumdtCA8IHl1a2lndXRzdVwgOwor5LiN5oiQ57i+IDwgZnVzZWlzZWtpXCA7Civnj77lh7ogPCBnZW5zaHV0c3VcIDsKK+S7j+WKmyA8IGJ1dHN1cmlraVwgOwor5aSa6Z+z56+AIDwgdGFvbnNldHN1XCA7CivpgKPluK/mhJ8gPCByZW50YWlrYW5cIDsKK+mDqOWIhueahCA8IGJ1YnVudGVraVwgOwor5bCC6ZaA5bqXIDwgc2VubW9udGVuXCA7CivmhaPnlKjpn7MgPCBrYW4nJ3lvdW9uXCA7CivlpJzku5XkuosgPCB5b3NoaWdvdG9cIDsKK+a8lOe/kuaelyA8IGVuc2h1dXJpblwgOwor5LiL5qeYIDwgc2hpbW96YW1hXCA7Civmn5Dpq5jmoKEgPCBib3Vrb3Vrb3VcIDsKK+e5sOi2iiA8IGt1cmlrb3NoaVwgOwor57a/6I+T5a2QIDwgd2F0YWdhc2hpXCA7Civot6jnt5rmqYsgPCBrb3Nlbmt5b3VcIDsKK+eFmeiNieebhiA8IHRhYmFrb2JvblwgOwor5Y+X6aiT56WoIDwganVrZW5oeW91XCA7CivlhoXmlpzoppYgPCBuYWlzaGFzaGlcIDsKK+mbu+S/oeapnyA8IGRlbnNoaW5raVwgOwor5Zyn57iu5qmfIDwgYXNzaHVrdWtpXCA7CivnianohbAgPCBtb25vZ29zaGlcIDsKK+S4ieakjyA8IG1pdHN1bWF0YVwgOwor5a6f6KGM5qipIDwgamlra291a2VuXCA7Civmnb7ljp8gPCBtYXRzdWJhcmFcIDsKK+ebuOS6kuaJtuWKqSA8IHNvdWdvZnVqb1wgOwor6LOD5YCfIDwgY2hpbnNoYWt1XCA7Civnj77ooYzms5UgPCBnZW5rb3Vob3VcIDsKK+iHqueEtueVjCA8IHNoaXplbmthaVwgOwor5oe45Z6C57eaIDwga2Vuc3Vpc2VuXCA7CivkuIrmiYvogIUgPCBqb3V6dW1vbm9cIDsKK+aXpeacrOWtpiA8IG5paG9uZ2FrdVwgOwor5o6S6Zqc5ZmoIDwgaGFpc2hvdWtpXCA7CivnnJ/lpI/ml6UgPCBtYW5hdHN1YmlcIDsKK+eGn+mjnyA8IGp1a3VzaG9rdVwgOwor5oSf54Sh6YePIDwga2FubXVyeW91XCA7Civntabku5jph5EgPCBreXV1ZnVraW5cIDsKK+S7mOS6uiA8IHRzdWtlYml0b1wgOwor5Luj5ZCN6KmeIDwgZGFpbWVpc2hpXCA7CivlkIzpn7PnlbDnvqkgPCBkb3VvbicnaWdpXCA7CivmlZHliqnoiLkgPCBreXV1am9zZW5cIDsKK+eJveW8lei7iiA8IGtlbicnaW5zaGFcIDsKK+WxheS9j+aApyA8IGt5b2p1dXNlaVwgOwor5oqX5Yed5Zu6IDwga291Z3lvdWtvXCA7CivnnIvorbfplbcgPCBrYW5nb2Nob3VcIDsKK+S9juaAp+iDvSA8IHRlaXNlaW5vdVwgOwor54Sh6KiI55S7IDwgbXVrZWlrYWt1XCA7CivlpJrpnaLop5IgPCB0YW1lbmtha3VcIDsKK+S9juWRqOazoiA8IHRlaXNodXVoYVwgOwor55CG5oOz6YO3IDwgcmlzb3VreW91XCA7CivooqvniIbogIUgPCBoaWJha3VzaGFcIDsKK+eyvuijveezliA8IHNlaXNlaXRvdVwgOwor5pyJ55So5oCnIDwgeXV1eW91c2VpXCA7CivlqK/mpb3ooZcgPCBnb3Jha3VnYWlcIDsKK+W+jOWkqeaApyA8IGtvdXRlbnNlaVwgOwor5qCh5Y+L5LyaIDwga291eXV1a2FpXCA7CivljZjliKnooaggPCB0YW5yaWh5b3VcIDsKK+iHquW3seacrOS9jSA8IGppa29ob24nJ2lcIDsKK+aciOW9sSA8IHRzdWtpa2FnZVwgOwor55mC6aSK5omAIDwgcnlvdXlvdWpvXCA7Civkv53lrojnmoQgPCBob3NodXRla2lcIDsKK+aciOW9oiA8IHRzdWtpZ2F0YVwgOwor55qH5rCR5YWaIDwga291bWludG91XCA7Civkuozph43llLEgPCBuaWp1dXNob3VcIDsKK+S4g+abnCA8IHNoaWNoaXlvdVwgOwor5Y216IOO55SfIDwgcmFudGFpc2VpXCA7CivkuIDmnIggPCBoaXRvdHN1a2lcIDsKK+e3mummmeS7oyA8IHNlbmtvdWRhaVwgOwor5a++6KeS5YyWIDwgdGFpa2FrdWthXCA7CivmnIDpq5jngrkgPCBzYWlrb3V0ZW5cIDsKK+WkqeizqiA8IHRlbnNoaXRzdVwgOwor5LiL5pW3IDwgc2hpdGFqaWtpXCA7CivmnIDkvY7pmZAgPCBzYWl0ZWlnZW5cIDsKK+S4g+aYnyA8IHNoaWNoaXNlaVwgOwor5q2M5ZCI5oimIDwgdXRhZ2Fzc2VuXCA7CivlubPlkozos54gPCBoZWl3YXNob3VcIDsKK+aVsOS/guaVsCA8IHN1dWtlaXN1dVwgOwor5pyo54Kt55S7IDwgbW9rdXRhbmdhXCA7Civlho3pmY3oh6ggPCBzYWlrb3VyaW5cIDsKK+aYn+epuiA8IGhvc2hpem9yYVwgOwor5YaN6Kq/5p+7IDwgc2FpY2hvdXNhXCA7Civpq5jph47mp5kgPCBrb3V5YW1ha2lcIDsKK+Wumua7kei7iiA8IHRlaWthc3NoYVwgOwor5Ly85oiR6JyCIDwgamlnYWJhY2hpXCA7Civml4vlhYnmgKcgPCBzZW5rb3VzZWlcIDsKK+WQjeaKleaJiyA8IG1laXRvdXNodVwgOwor54m5562GIDwgdG9rdWhpdHN1XCA7CivkuIDml6UgPCB0c3VpdGFjaGlcIDsKK+aOoeeul+aApyA8IHNhaXNhbnNlaVwgOwor5LyB5qWt6ICFIDwga2lneW91c2hhXCA7CivkurrkvJ0gPCBoaXRvZHp1dGVcIDsKK+eVsOW4uOmrmOa4qSA8IGlqb3Vrb3VvblwgOwor54uQ54GrIDwga2l0c3VuZWJpXCA7CivpioDnoILlrZAgPCBnaW5zdW5hZ29cIDsKK+eIhuijgiA8IGJha3VyZXRzdVwgOwor54m556uLIDwgdG9rdXJpdHN1XCA7Civkurrku5ggPCBoaXRvZHp1a2lcIDsKK+WbveWIhuWvuiA8IGtva3VidW5qaVwgOwor6aSK6LGa5aC0IDwgeW91dG9uam91XCA7CivpnZ7lr77np7AgPCBoaXRhaXNob3VcIDsKK+S4jemKuemLvCA8IGZ1c2h1dWtvdVwgOwor5aSx6KiAIDwgc2hpdHN1Z2VuXCA7CivkuIDpmaLliLYgPCBpY2hpaW5zZWlcIDsKK+aJi+S7leS6iyA8IHRlc2hpZ290b1wgOwor6IOG5Zqi54KOIDwgdGFuJydub3VlblwgOwor6Zuq6YGTIDwgeXVraW1pY2hpXCA7Civpm5HpjLIgPCB6YXRzdXJva3VcIDsKK+W8t+aJk+iAhSA8IGt5b3VkYXNoYVwgOwor6KaP56+E55qEIDwga2loYW50ZWtpXCA7CivnvoXntJfntJkgPCByYXNoYWdhbWlcIDsKK+iEseiho+WgtCA8IGRhdHN1aWpvdVwgOwor5aWz6IW5IDwgb24nJ25hYmFyYVwgOwor54ax6YePIDwgbmV0c3VyeW91XCA7CivmlZHliqnntrIgPCBreXV1am9tb3VcIDsKK+mbqui+sSA8IHNldHN1am9rdVwgOwor5aSq6Zmw5pqmIDwgdGFpaW5yZWtpXCA7Civmj5rnvr3onbYgPCBhZ2VoYWNob3VcIDsKK+mgreagqiA8IGF0YW1ha2FidVwgOwor5aOr5ZCb5a2QIDwgc2hpa3Vuc2hpXCA7CivohbDnvr3nm64gPCBrb3NoaWJhbWVcIDsKK+eJh+S4gOaWuSA8IGthdGFpcHBvdVwgOwor6Zi/54mH56qfIDwgYWhlbmt1dHN1XCA7CivlpLHooYAgPCBzaGlra2V0c3VcIDsKK+aapuaciCA8IHJla2lnZXRzdVwgOwor5ZC+5pyo6aaZIDwgd2FyZW1va291XCA7CivlpInos6ogPCBoZW5zaGl0c3VcIDsKK+mjn+WHuiA8IGhhbWlkYXNoaVwgOwor5aSn5Z6L6LuKIDwgb29nYXRhc2hhXCA7CivlpI/lraPnhrEgPCBrYWtpbmV0c3VcIDsKK+WknOipsSA8IHlvYmFuYXNoaVwgOwor5YaF6Zm46ZynIDwgbmFpcmlrdW11XCA7CivmpI3lrZfmqZ8gPCBzaG9rdWppa2lcIDsKK+mBiuimp+iIuSA8IHl1dXJhbnNlblwgOwor5Lmz5oi/54KOIDwgbnl1dWJvdWVuXCA7CivohLPmjKvlgrcgPCBub3V6YXNob3VcIDsKK+WkqeiiiyA8IHRlbmJ1a3Vyb1wgOwor5a2m55Sf6KqyIDwgZ2FrdXNlaWthXCA7CivpnbTntJAgPCBrdXRzdWhpbW9cIDsKK+iXgeW4g+WboyA8IHdhcmFidXRvblwgOwor6Kmz6L+wIDwgc2hvdWp1dHN1XCA7CivmipXmqZ/lv4MgPCB0b3VraXNoaW5cIDsKK+mDteS+v+iIuSA8IHl1dWJpbnNlblwgOwor6Z2S5bm05ZujIDwgc2VpbmVuZGFuXCA7Civli6flkYrmoYggPCBrYW5rb2t1YW5cIDsKK+eJueeZuiA8IHRva3VoYXRzdVwgOwor6LuN5LqL5o+05YqpIDwgZ3VuamllbmpvXCA7CivlpKnmloflj7AgPCB0ZW5tb25kYWlcIDsKK+iHqueEtuazlSA8IHNoaXplbmhvdVwgOwor55+z54Gw5rSeIDwgc2Vra2FpZG91XCA7CivlvIrooaPnoLTluL0gPCBoZWlpaGFib3VcIDsKK+mdtOevpiA8IGt1dHN1YmVyYVwgOwor5aKX5YiK5Y+3IDwgem91a2FuZ291XCA7CivkuIvlvbkgPCBzaGl0YXlha3VcIDsKK+S4oeWyuCA8IHJ5b3VnaXNoaVwgOwor5puy5a2mIDwga3lva3VnYWt1XCA7CivlhoXlpKfoh6MgPCBuYWlkYWlqaW5cIDsKK+ePvuWcqOWcsCA8IGdlbnphaWNoaVwgOwor5oim6LuK6ZqKIDwgc2Vuc2hhdGFpXCA7Civnhp/pgZQgPCBqdWt1dGF0c3VcIDsKK+S4keW5tCA8IHVzaGlkb3NoaVwgOwor5LqM6YeN5Li4IDwgbmlqdXVtYXJ1XCA7CivpnLLojYkgPCB0c3V5dWt1c2FcIDsKK+mFkumAoOWgtCA8IHNodXpvdWpvdVwgOwor5oSb6Kqt6ICFIDwgYWlkb2t1c2hhXCA7CivkuIPkupTkuInnuIQgPCBzaGltZW5hd2FcIDsKK+aWh+WMlumBuueUoyA8IGJ1bmthaXNhblwgOwor55+z54Gw5rC0IDwgc2Vra2Fpc3VpXCA7CivlpKflnLDpnIcgPCBkYWlqaXNoaW5cIDsKK+iplemHiCA8IGh5b3VzaGFrdVwgOwor5LiN5ouh5aSnIDwgZnVrYWt1ZGFpXCA7CivkuLvlsI7ogIUgPCBzaHVkb3VzaGFcIDsKK+mrmOiSlOe1tSA8IHRha2FtYWtpZVwgOwor6Ieq54S25q27IDwgc2hpemVuc2hpXCA7CivlsYXkvY/lnLAgPCBreW9qdXVjaGlcIDsKK+S4gOW+iyA8IGljaGlyaXRzdVwgOwor5rG65q276ZqKIDwga2Vzc2hpdGFpXCA7CivkuLvohLPogIUgPCBzaHVub3VzaGFcIDsKK+iInualvemdoiA8IGJ1Z2FrdW1lblwgOwor6a2a5LuL6aGeIDwgZ3lva2FpcnVpXCA7CivmnIDpq5jmpJwgPCBzYWlrb3VrZW5cIDsKK+eGseaxmuafkyA8IG5ldHN1b3NlblwgOwor5oGS5pif5bm0IDwga291c2VpbmVuXCA7Civoh6rlnKjpiaQgPCBqaXphaWthZ2lcIDsKK+ertui1sOmmrCA8IGt5b3Vzb3ViYVwgOwor5b6h5omL5rSXIDwgbWl0YXJhc2hpXCA7CivlopfluYXlmaggPCB6b3VmdWt1a2lcIDsKK+aXpeacrOWBtCA8IG5paG9uZ2F3YVwgOwor5Lq66aGe5Y+yIDwgamlucnVpc2hpXCA7Civoi6blirTmp5ggPCBrdXJvdXNhbWFcIDsKK+emgOiri+abuCA8IHJpbnNlaXNob1wgOwor6aKo5Y+jIDwga2F6YWd1Y2hpXCA7Civkv7Poq6fluKsgPCBoYWlrYWlzaGlcIDsKK+Wkj+idiSA8IG5hdHN1emVtaVwgOwor6Ieq5a625Y+X57K+IDwgamlrYWp1c2VpXCA7CivmhaPnlKjoqp4gPCBrYW4nJ3lvdWdvXCA7CivlpbPlrabnlJ8gPCBqb2dha3VzZWlcIDsKK+mbu+WtkOeuoSA8IGRlbnNoaWthblwgOwor5qK15aSp546LIDwgYm9udGVuJydvdVwgOwor6Zye6I2JIDwga2FzdW1pc291XCA7CivlkIjmiJDntJkgPCBnb3VzZWlzaGlcIDsKK+m7hOmKhemJsSA8IGtvdWRvdWtvdVwgOwor6Ieq5a625Y+X57KJIDwgamlrYWp1ZnVuXCA7CivniafnlZwgPCBib2t1Y2hpa3VcIDsKK+WPuOaVmeWMuiA8IHNoaWt5b3VrdVwgOwor6Kej5pWj5qipIDwga2Fpc2Fua2VuXCA7CivpganpvaLmnJ8gPCB0ZWtpcmVpa2lcIDsKK+WogeWah+eahCA8IGlrYWt1dGVraVwgOwor6YqD6YCj5bCEIDwganV1cmVuc2hhXCA7CivlhY3nqI7lk4EgPCBtZW56ZWloaW5cIDsKK+eEvOmkhSA8IHlha2ltb2NoaVwgOwor6auY5rC05rqWIDwga291c3VpanVuXCA7CivlpKrpmb3lubQgPCB0YWl5b3VuZW5cIDsKK+awkeeUn+WnlOWToSA8IG1pbnNlaWlpblwgOwor55+z57Sw5belIDwgaXNoaXphaWt1XCA7Civlr53lsI/kvr8gPCBuZXNob3ViZW5cIDsKK+acq+WDmiA8IGJhdHN1cnlvdVwgOwor5Ya36JS15rOVIDwgcmVpem91aG91XCA7CivphY3liIbms5UgPCBoYWlidW5ob3VcIDsKK+iAvee+jueahCA8IHRhbmJpdGVraVwgOwor6Ki76YeIIDwgY2h1dXNoYWt1XCA7CivmvZzoiKroiYcgPCBzZW5rb3V0ZWlcIDsKK+WQjOeqk+eUnyA8IGRvdXNvdXNlaVwgOwor5pS+5rWq6ICFIDwgaG91cm91c2hhXCA7CivnqK7mpoLlv7UgPCBzaHVnYWluZW5cIDsKK+aXqeaYjuaIpiA8IHNvdW1laXNlblwgOwor5b6u56mN5YiGIDwgYmlzZWtpYnVuXCA7Civps6XnnrDlm7MgPCBjaG91a2FuenVcIDsKK+Wls+eOi+icgiA8IGpvb3ViYWNoaVwgOwor5paw57eRIDwgc2hpbnJ5b2t1XCA7CivlpLHohJogPCBzaGlra3lha3VcIDsKK+WkluS6pOWumCA8IGdhaWtvdWthblwgOwor5q2v6IKJ54KOIDwgc2hpbmlrdWVuXCA7Civoh6rnhLbmnpcgPCBzaGl6ZW5yaW5cIDsKK+a8lOe/kuWgtCA8IGVuc2h1dWpvdVwgOwor5bCP6bqm6ImyIDwga29tdWdpaXJvXCA7Civlvqnlj6Toqr8gPCBmdWtrb2Nob3VcIDsKK+WPjeecgeS8miA8IGhhbnNlaWthaVwgOwor54ax5biv6a2aIDwgbmV0dGFpZ3lvXCA7CivlpLHogbcgPCBzaGlzc2hva3VcIDsKK+WNmOiRieapnyA8IHRhbicneW91a2lcIDsKK+aEm+S7luS4u+e+qSA8IGFpdGFzaHVnaVwgOwor5omA5pyJ6ICFIDwgc2hveXV1c2hhXCA7Civosqnlo7LogIUgPCBoYW5iYWlzaGFcIDsKK+S4u+S6uumhlCA8IHNodWppbmdhb1wgOwor5ruR56i96ICFIDwgb2Rva2Vtb25vXCA7CivmsLTpo6LppYkgPCBtaXp1a2lraW5cIDsKK+a1t+S4iuazlSA8IGthaWpvdWhvdVwgOwor54ax5Y+v5aGRIDwgbmV0c3VrYXNvXCA7CivlpI/oj4ogPCBuYXRzdWdpa3VcIDsKK+S4gOWFmuS4gOa0viA8IGl0dG91aXBwYVwgOwor5YyW5a2m5ZOBIDwga2FnYWt1aGluXCA7CivnuJ7om4cgPCBzaGltYWhlYmlcIDsKK+S4reWTsiA8IGNodXV0ZXRzdVwgOwor5a2Q5rKi5bGxIDwga29kYWt1c2FuXCA7CivkvZnmsLTlkJAgPCB5b3N1aWhha2lcIDsKK+aAquWlh+aYoOeUuyA8IGthaWtpZWlnYVwgOwor6Kiz6L+wIDwgeWFrdWp1dHN1XCA7CivmlrDnr4kgPCBzaGluY2hpa3VcIDsKK+Wkj+iNiSA8IG5hdHN1Z3VzYVwgOwor5pio5bm05bqmIDwgc2FrdW5lbmRvXCA7CivnjonkuLIgPCB0YW1hZ3VzaGlcIDsKK+iHqueEtuaVsCA8IHNoaXplbnN1dVwgOwor5YaN6KiC54mIIDwgc2FpdGVpYmFuXCA7CivpnZLlubTkvJogPCBzZWluZW5rYWlcIDsKK+S4reWPoyA8IG5ha2FndWNoaVwgOwor5aWz55mWIDwgb24nJ25hZ3VzZVwgOwor54++5Zyw5Lq6IDwgZ2VuY2hpamluXCA7Civmh5DnlpHlv4MgPCBrYWlnaXNoaW5cIDsKK+WnpeahnCA8IHViYXpha3VyYVwgOwor5pyd5pel5b2xIDwgYXNhaGlrYWdlXCA7Civph4jov6bniZ/lsLwgPCBzaGFrYW11bmlcIDsKK+iqmOWwjuW8viA8IHl1dWRvdWRhblwgOwor6LKp5aOy57ayIDwgaGFuYmFpbW91XCA7CivkuK3ljZIgPCBjaHV1c290c3VcIDsKK+WFq+eZvuS4hyA8IHlhb3lvcm96dVwgOwor5LiL5Z2CIDwgc2hpbW9zYWthXCA7CivosqfkuY/kurogPCBiaW5ib3VuaW5cIDsKK+W3peS6i+S4rSA8IGtvdWppY2h1dVwgOwor56qD55uX572qIDwgc2V0dG91emFpXCA7CivpoqjkuIsgPCBrYXphc2hpbW9cIDsKK+mcnue2siA8IGthc3VtaWFtaVwgOwor5Y6f6KOB5YikIDwgZ2Vuc2FpYmFuXCA7CivngrnngavolqwgPCB0ZW5rYXlha3VcIDsKK+a1t+S4iuaoqSA8IGthaWpvdWtlblwgOwor5YyW5a2m5YmkIDwga2FnYWt1emFpXCA7Civnsr7oo73ms5UgPCBzZWlzZWlob3VcIDsKK+S4oeWPoyA8IHJ5b3VndWNoaVwgOwor5pa555y857SZIDwgaG91Z2Fuc2hpXCA7Civlj5fos57ogIUgPCBqdXNob3VzaGFcIDsKK+aOqOiWpuiAhSA8IHN1aXNlbnNoYVwgOwor6Zuq5qih5qeYIDwgeXVraW1veW91XCA7CivniIbnq7kgPCBiYWt1Y2hpa3VcIDsKK+S4gOe0muWTgSA8IGlra3l1dWhpblwgOwor5qC85a2Q54K5IDwga291c2hpdGVuXCA7Civml6Xni6wgPCBuaWNoaWRva3VcIDsKK+izvOiyt+iAhSA8IGtvdWJhaXNoYVwgOwor5LiA562J6LOeIDwgaXR0b3VzaG91XCA7Civku5blm73kurogPCB0YWtva3VqaW5cIDsKK+epuuawl+a1tCA8IGt1dWtpeW9rdVwgOwor5pen54mpIDwga3l1dWJ1dHN1XCA7CivnjaPlgY8gPCBrZW1vbm9oZW5cIDsKK+WkluS6pOWboyA8IGdhaWtvdWRhblwgOwor5Z+36KGM6YOoIDwgc2hpa2tvdWJ1XCA7CivpnLLnqIsgPCB0c3V5dWhvZG9cIDsKK+iqv+evgCA8IGNob3VzZXRzdVwgOwor55CG56We6KuWIDwgcmlzaGlucm9uXCA7Civlj5fpqJPmlpkgPCBqdWtlbnJ5b3VcIDsKK+mgreWtlyA8IGthc2hpcmFqaVwgOwor5Yud5omL5YWDIDwga2F0dGVtb3RvXCA7Civnm7jlr77oq5YgPCBzb3V0YWlyb25cIDsKK+WIiuihjOS8miA8IGthbmtvdWthaVwgOwor542E5Y2SIDwgZ29rdXNvdHN1XCA7Civkv53ogrLmlpkgPCBob2lrdXJ5b3VcIDsKK+e3j+izh+eUoyA8IHNvdXNoaXNhblwgOwor5L2P5rCR56iOIDwganV1bWluemVpXCA7CivkuJTlj4ggPCBrYXRzdW1hdGFcIDsKK+S/uOe1puaXpSA8IGhvdWt5dXViaVwgOwor54mp5rWBIDwgYnV0c3VyeXV1XCA7CivkuKHlh7ggPCByeW91dG90c3VcIDsKK+mZs+i/sCA8IGNoaW5qdXRzdVwgOwor6KGM5pS/5bqcIDwgZ3lvdXNlaWZ1XCA7Civlh6blpbPohpwgPCBzaG9qb21ha3VcIDsKK+maj+S8tOiAhSA8IHp1aWhhbnNoYVwgOwor5paw552AIDwgc2hpbmNoYWt1XCA7CivlpbPniakgPCBvbicnbmFtb25vXCA7CivkuI3ljbAgPCBmdWppcnVzaGlcIDsKK+aCquWuo+S8nSA8IGFrdXNlbmRlblwgOwor5pu45LuYIDwga2FraXRzdWtlXCA7CivlpJrpnaLnmoQgPCB0YW1lbnRla2lcIDsKK+ipsOiNiSA8IHRzdW1la3VzYVwgOwor5a++5oim6LuKIDwgdGFpc2Vuc2hhXCA7CivkuK3kvY0gPCBjaHV1Z3VyYWlcIDsKK+eGiuicgiA8IGt1bWFiYWNoaVwgOwor6Ium5Yq05oCnIDwga3Vyb3VzaG91XCA7CivmgZDlprvlrrYgPCBreW91c2Fpa2FcIDsKK+WNium5ueawtCA8IGhhbmthbnN1aVwgOwor56S+5Lya57WM5riIIDwgc2hha2Fpa2VpXCA7CivntZDot4/otrrluqcgPCBrZWtrYWZ1emFcIDsKK+WvhuiIquiAhSA8IG1pa2tvdXNoYVwgOwor5LiA562J6KaqIDwgaXR0b3VzaGluXCA7CivmlZnogbcgPCBreW91c2hva3VcIDsKK+WkseekvCA8IHNoaXRzdXJlaVwgOwor6KOc5by3562LIDwgaG9reW91a2luXCA7CivnnIvmnb/lsYsgPCBrYW5iYW4nJ3lhXCA7CivnpL7lk6Hlr64gPCBzaGFpbnJ5b3VcIDsKK+WRvOWQuOazlSA8IGtva3l1dWhvdVwgOwor54mp5qyyIDwgYnV0c3V5b2t1XCA7CivkuIDlj6MgPCBoaXRva3VjaGlcIDsKK+aTgumJoiA8IHN1cmliYWNoaVwgOwor5L2T6YeP5ZmoIDwgdGFpcnlvdWtpXCA7CivljJblrabkuIogPCBrYWdha3Vqb3VcIDsKK+S8veiXjemzpSA8IGdhcmFuY2hvdVwgOwor5b+D6IeT6YOoIDwgc2hpbnpvdWJ1XCA7CivniIbnmbogPCBiYWt1aGF0c3VcIDsKK+acgOmrmOWzsCA8IHNhaWtvdWhvdVwgOwor56u26Lyq5aC0IDwga2Vpcmluam91XCA7Civph43lqZrogIUgPCBqdXVrb25zaGFcIDsKK+imgeaSg+apnyA8IHlvdWdla2lraVwgOwor5rCX5YyW54axIDwga2lrYW5ldHN1XCA7CivmmKjml6UgPCBzYWt1aml0c3VcIDsKK+aXpeaVmee1hCA8IG5pa2t5b3Vzb1wgOwor6JOW6bq75a2Q5rK5IDwgaGltYXNoaXl1XCA7CivnuK7ntIQgPCBzaHVrdXlha3VcIDsKK+S4ieetieaYnyA8IHNhbnRvdXNlaVwgOwor5ZG95ZCN5rOVIDwgbWVpbWVpaG91XCA7Civlj4LliqDlm70gPCBzYW5rYWtva3VcIDsKK+acqumWi+aLkyA8IG1pa2FpdGFrdVwgOwor5YaN57eo5oiQIDwgc2FpaGVuc2VpXCA7CivlpLHnnYAgPCBzaGl0Y2hha3VcIDsKK+mAj+awtOaApyA8IHRvdXN1aXNlaVwgOwor5LiA5YiXIDwgaWNoaXJldHN1XCA7Civlj43lr77oq5YgPCBoYW50YWlyb25cIDsKK+WtpuiKuOWToSA8IGdha3VnZWlpblwgOwor5Ya35YeN6a2aIDwgcmVpdG91Z3lvXCA7CivmlZfmrovlhbUgPCBoYWl6YW5oZWlcIDsKK+S4i+WBtCA8IHNoaXRhZ2F3YVwgOwor6ZuA6ImyIDwgc3V6dW1laXJvXCA7Civmm7jnlJ/oq5YgPCBzaG9zZWlyb25cIDsKK+iyoeaUv+mboyA8IHphaXNlaW5hblwgOwor5LiA5YSyIDwgaGl0b21vdWtlXCA7CivliLbnmYzliaQgPCBzZWlnYW56YWlcIDsKK+aXj+a7hSA8IHpva3VtZXRzdVwgOwor55m65rOh5YmkIDwgaGFwcG91emFpXCA7CivkvJ3lpYfnmoQgPCBkZW5raXRla2lcIDsKK+e1huWJteiGjyA8IGJhbnNvdWtvdVwgOwor5LiL5L2cIDwgc2hpdGFzYWt1XCA7Civnn7PngbDlsqkgPCBzZWtrYWlnYW5cIDsKK+iqv+eVpSA8IGNob3VyeWFrdVwgOwor5YW15a2m5qChIDwgaGVpZ2Fra291XCA7Civlr4zlsbHnnIwgPCB0b3lhbWFrZW5cIDsKK+ipsuW9k+iAhSA8IGdhaXRvdXNoYVwgOwor54K55pWw5Yi2IDwgdGVuc3V1c2VpXCA7CivmmJTml6UgPCBzZWtpaml0c3VcIDsKK+mrmOefpeecjCA8IGtvdWNoaWtlblwgOwor5Y+j5LiK5pu4IDwga291am91c2hvXCA7Civop6PmlL7mhJ8gPCBrYWlob3VrYW5cIDsKK+W5s+WSjOeahCA8IGhlaXdhdGVraVwgOwor6Ieq6ZaJ55eHIDwgamloZWlzaG91XCA7Civpo7LnlKjmsLQgPCBpbicneW91c3VpXCA7CivlpKrpmb3lhYkgPCB0YWl5b3Vrb3VcIDsKK+api+mgreS/nSA8IGt5b3V0b3Vob1wgOwor5Y+k5pu45biCIDwga29zaG9pY2hpXCA7CivlpKnnhLbloakgPCB0ZW4nJ25lbmVuXCA7Civmlq3nhrEgPCBkYW4nJ25ldHN1XCA7CivmmI7ml6UgPCBteW91bmljaGlcIDsKK+S4i+S4iyA8IHNoaW1vamltb1wgOwor5pW355+zIDwgc2hpa2lpc2hpXCA7Civnibnmkq4gPCB0b2t1c2F0c3VcIDsKK+WFrOWus+e9qiA8IGtvdWdhaXphaVwgOwor5rer5aOy5a6/IDwgaW5iYWl5YWRvXCA7Civotbfoq4vmlocgPCBraXNob3Vtb25cIDsKK+mhmOS6iyA8IG5lZ2FpZ290b1wgOwor56KB55uk57ieIDwgZ29iYW5qaW1hXCA7CivpoLvlh7ogPCBoaW5zaHV0c3VcIDsKK+e2suiiiyA8IGFtaWJ1a3Vyb1wgOwor5L+X5LiW6ZaTIDwgem9rdXNla2VuXCA7CivnlJjntI3osYYgPCBhbWFuYXR0b3VcIDsKK+S5vumFque0oCA8IGthbnJha3Vzb1wgOwor5Ya26YeR5a2mIDwgeWFraW5nYWt1XCA7CivlhpfplbfluqYgPCBqb3VjaG91ZG9cIDsKK+inkumAkCA8IGtha3VjaGlrdVwgOwor56eB5a626ZuGIDwgc2hpa2FzaHV1XCA7CivkuIPkuIkgPCBzaGljaGlzYW5cIDsKK+e0sOmdoiA8IGhvc29vbW90ZVwgOwor5biC6KGX5ZywIDwgc2hpZ2FpY2hpXCA7Civlj6/oqq3mgKcgPCBrYWRva3VzZWlcIDsKK+aYjuekuueahCA8IG1laWppdGVraVwgOwor5aSn5Zue6LuiIDwgZGFpa2FpdGVuXCA7CivlkYnmnI3lupcgPCBnb2Z1a3V0ZW5cIDsKK+S4reiPr+S4vCA8IGNodXVrYWRvblwgOwor5aSn6KW/5rSLIDwgdGFpc2VpeW91XCA7CivnkIbmg7PnmoQgPCByaXNvdXRla2lcIDsKK+Wmu+W4r+iAhSA8IHNhaXRhaXNoYVwgOwor5YWr5a6d6I+cIDwgaGFwcG91c2FpXCA7Civlj4zouYTnjbggPCBzb3V0ZWlqdXVcIDsKK+mbhue1kCA8IHNodXVrZXRzdVwgOwor5Zu95YWo5ZyfIDwga29rdXplbmRvXCA7CivkuozpgLLms5UgPCBuaXNoaW5ob3VcIDsKK+ilv+miqCA8IG5pc2hpa2F6ZVwgOwor6Ieq54S25aKXIDwgc2hpemVuem91XCA7CivmmYLku6PliocgPCBqaWRhaWdla2lcIDsKK+Wkj+eXqSA8IG5hdHN1eWFzZVwgOwor5re35oiQ6YWSIDwga29uc2Vpc2h1XCA7CivlhazlgI3mlbAgPCBrb3ViYWlzdXVcIDsKK+WHpuaWueeuiyA8IHNob2hvdXNlblwgOwor55mM57Sw6IOeIDwgZ2Fuc2FpYm91XCA7CivntK/muJvnqI4gPCBydWlnZW56ZWlcIDsKK+aJgOS9nOS6iyA8IHNob3NhZ290b1wgOwor54Sh6ZmQ5bCPIDwgbXVnZW5zaG91XCA7CivnianmjIcgPCBtb25vc2FzaGlcIDsKK+eqg+ebl+eKryA8IHNldHRvdWhhblwgOwor5LuV5omL5qCqIDwgc2hpdGVrYWJ1XCA7Civlj6PkuIvmiYsgPCBrdWNoaWJldGFcIDsKK+mHkeabnOaXpSA8IGtpbicneW91YmlcIDsKK+S9juawtOa6liA8IHRlaXN1aWp1blwgOwor6KO95L2c5omAIDwgc2Vpc2FrdWpvXCA7CivkvJ3lo7DnrqEgPCBkZW5zZWlrYW5cIDsKK+mHj+WtkOWMliA8IHJ5b3VzaGlrYVwgOwor5pif5b2xIDwgaG9zaGlrYWdlXCA7Civni6zlipsgPCBkb2t1cnlva3VcIDsKK+WlveS4gOWvviA8IGtvdWl0dHN1aVwgOwor6Kem6Ki6IDwgc2hva3VzaGluXCA7Civkuovli5nlsYAgPCBqaW11a3lva3VcIDsKK+WjuueavyA8IHRzdWJvemFyYVwgOwor5Ymv6by76IWUIDwgZnVrdWJpa3V1XCA7CivmtarosrvnmZYgPCByb3VoaWhla2lcIDsKK+e1puiyu+eUnyA8IGt5dXVoaXNlaVwgOwor55yM5Lq65LyaIDwga2Vuamlua2FpXCA7CivkuLvku7vogIUgPCBzaHVuaW5zaGFcIDsKK+WFrOeUqOaWhyA8IGtvdXlvdWJ1blwgOwor572q5Lq6IDwgdHN1bWliaXRvXCA7CivooYzmlL/ljLogPCBneW91c2Vpa3VcIDsKK+aOqOiWpueKtiA8IHN1aXNlbmpvdVwgOwor5Lit6Led6ZuiIDwgY2h1dWt5b3JpXCA7CivlhbHnlKPljJYgPCBreW91c2Fua2FcIDsKK+S8muacn+S4rSA8IGthaWtpY2h1dVwgOwor6YeO55CD5aC0IDwgeWFreXV1am91XCA7CivplpHlj6Tps6UgPCBrYW5rb2RvcmlcIDsKK+eUo+ikpeacnyA8IHNhbmpva3VraVwgOwor5Li75bCO5qipIDwgc2h1ZG91a2VuXCA7Civli5/ph5HnrrEgPCBib2tpbmJha29cIDsKK+ehrOWPo+iTiyA8IGtvdWtvdWdhaVwgOwor5pW354mpIDwgc2hpa2ltb25vXCA7Civlj7LoqJjmioQgPCBzaGlraXNob3VcIDsKK+W5tOm9ouWxpCA8IG5lbnJlaXNvdVwgOwor6aCt6aCC6YOoIDwgdG91Y2hvdWJ1XCA7Civpm6rnlLcgPCB5dWtpb3Rva29cIDsKK+aXqeWgtOexsyA8IGhheWFiYW1haVwgOwor5Y+j6Kqe6KizIDwga291Z295YWt1XCA7CivmsrnlnKfoqIggPCB5dWF0c3VrZWlcIDsKK+Wkj+eJqSA8IG5hdHN1bW9ub1wgOwor5LqM5q+b5L2cIDwgbmltb3VzYWt1XCA7CivmpJzns5boqIggPCBrZW50b3VrZWlcIDsKK+iqmOWwjuS9kyA8IHl1dWRvdXRhaVwgOwor55yf5Zub6KeSIDwgbWFzaGlrYWt1XCA7CivnlLPlkb3oqJggPCBzaGlubWVpa2lcIDsKK+iEguiCquWxpCA8IHNoaWJvdXNvdVwgOwor57Wx6KiIIDwgYmFyYXRzdWtpXCA7Civnianlk4HnqI4gPCBidXBwaW56ZWlcIDsKK+mzs+e/hemQmCA8IGhvdXNoaXRvdVwgOwor5aWz5pa5IDwgb24nJ25hZ2F0YVwgOwor5paw5qmLIDwgc2hpbmJhc2hpXCA7CivlsaTnqY3pm7IgPCBzb3VzZWtpdW5cIDsKK+enkuaZguioiCA8IGJ5b3Vkb2tlaVwgOwor54+K55Ga56SBIDwgc2FuZ29zaG91XCA7CivpgKPkvZPoqZ4gPCByZW50YWlzaGlcIDsKK+eGseeXhSA8IG5ldHN1YnlvdVwgOwor6Zu754axIDwgZGVuJyduZXRzdVwgOwor5pif5bGRIDwgaG9zaGlrdXp1XCA7CivlpKnmsJflhbflkIggPCB0ZW5raWd1YWlcIDsKK+WxgeeQhuWxiCA8IGhlcmlrdXRzdVwgOwor5b+X6aGY6ICFIDwgc2hpZ2Fuc2hhXCA7CivmtarkurrnlJ8gPCByb3VuaW5zZWlcIDsKK+S4jeWPr+mAhiA8IGZ1a2FneWFrdVwgOwor6ZqU57W2IDwga2FrdXpldHN1XCA7Civni6zku48gPCBkb2t1ZnV0c3VcIDsKK+Wkp+mYquW4giA8IG9vc2FrYXNoaVwgOwor5aa75a6kIDwgc2Fpc2hpdHN1XCA7CivmhJvoqq3mm7ggPCBhaWRva3VzaG9cIDsKK+WPr+WhkeeJqSA8IGthc29idXRzdVwgOwor5paw6YCg6KqeIDwgc2hpbnpvdWdvXCA7CivnianlubIgPCBtb25vaG9zaGlcIDsKK+WPjeWvvuiAhSA8IGhhbnRhaXNoYVwgOwor57Sw6YGTIDwgaG9zb21pY2hpXCA7Civpu5LnoILns5YgPCBrdXJvemF0b3VcIDsKK+eOhOexs+iMtiA8IGdlbm1haWNoYVwgOwor5ryU57m55rOVIDwgZW4nJ2VraWhvdVwgOwor6Ieo5aC05oSfIDwgcmluam91a2FuXCA7CivnhrHnkIMgPCBuZXRzdWt5dXVcIDsKK+WBj+ilv+miqCA8IGhlbnNlaWZ1dVwgOwor6aaZ5ZGz5paZIDwga291bWlyeW91XCA7CivmraPnlLLmnb8gPCBzZWlrYW5wYW5cIDsKK+WvqeitsOS8miA8IHNoaW5naWthaVwgOwor6Z2S5qOu55yMIDwgYW9tb3Jpa2VuXCA7CivkuI3mhJ/nl4cgPCBmdWthbnNob3VcIDsKK+e4nueJqSA8IHNoaW1hbW9ub1wgOwor56aB6KGb6ZqKIDwga2luJydlaXRhaVwgOwor5paw5p6VIDwgbmlpbWFrdXJhXCA7CivmlL7msLTou4ogPCBob3VzdWlzaGFcIDsKK+iAkOawtOaApyA8IHRhaXN1aXNlaVwgOwor546E6Zai55WqIDwgZ2Vua2FuYmFuXCA7CivliY3lpJznpa0gPCB6ZW4nJ3lhc2FpXCA7CivmnIjmoYLlhqAgPCBnZWtrZWlrYW5cIDsKK+e1puihgCA8IGt5dXVrZXRzdVwgOwor5LqM5YiA5rWBIDwgbml0b3VyeXV1XCA7CivmlrDmnK0gPCBzaGluc2F0c3VcIDsKK+aJgOacieaoqSA8IHNob3l1dWtlblwgOwor5Ya35YeN6LuKIDwgcmVpdG91c2hhXCA7CivmlrDmnIggPCBzaGluZ2V0c3VcIDsKK+adpeS8muiAhSA8IHJhaWthaXNoYVwgOwor5paw5puyIDwgc2hpbmt5b2t1XCA7CivkuIDlj6PlkIzpn7MgPCBpa2t1ZG91b25cIDsKK+S4iuetieWTgSA8IGpvdXRvdWhpblwgOwor6I2S55mC5rK7IDwgYXJhcnlvdWppXCA7Civmpb3oprPoq5YgPCByYWtrYW5yb25cIDsKK+WAtuiIjuWulyA8IGt1c2hhc2h1dVwgOwor54Sh6KiA5YqHIDwgbXVnb25nZWtpXCA7CivlhaXoi5HliLggPCBueXV1ZW5rZW5cIDsKK+iFsememOeCjiA8IGtlbnNob3VlblwgOwor5LiN5Y+v5oCd6K2wIDwgZnVrYXNoaWdpXCA7Civpq5jlubTogIUgPCBrb3VuZW5zaGFcIDsKK+ipsOeJqSA8IHRzdW1lbW9ub1wgOwor5o6i5rW354GvIDwgdGFua2FpdG91XCA7CivnhKHopo/lvosgPCBtdWtpcml0c3VcIDsKK+eDj+iynSA8IGthcmFzdWdhaVwgOwor6Z205bqVIDwga3V0c3V6b2tvXCA7CivlvaLlrrnoqZ4gPCBrZWl5b3VzaGlcIDsKK+WMu+S6i+S8nemBkyA8IGlqaWRlbmRvdVwgOwor5pen5bm0IDwgZnVydXRvc2hpXCA7Civlsqnpm7Lpm4AgPCBpd2FoaWJhcmlcIDsKK+aYn+WeiyA8IGhvc2hpZ2F0YVwgOwor5b6S56u26LWwIDwgdG9reW91c291XCA7CivkuI3miKbli50gPCBmdXNlbnNob3VcIDsKK+iHqueEtuS6uiA8IHNoaXplbmppblwgOwor5a625bqt55qEIDwga2F0ZWl0ZWtpXCA7Civpq5jmsJflnKcgPCBrb3VraWF0c3VcIDsKK+a7keeoveacrCA8IGtva2tlaWJvblwgOwor5aWz5a2Q5a+uIDwgam9zaGlyeW91XCA7CivlpLHmnJsgPCBzaGl0c3Vib3VcIDsKK+aUv+ayu+eahCA8IHNlaWppdGVraVwgOwor5LiK562J5YW1IDwgam91dG91aGVpXCA7CivnhLzntZAgPCBzaG91a2V0c3VcIDsKK+WOn+eov+e0mSA8IGdlbmtvdXNoaVwgOwor6Imy55y86Y+hIDwgaXJvbWVnYW5lXCA7Civmpb3orZzlj7AgPCBnYWt1ZnVkYWlcIDsKK+WGt+awtOWhiiA8IHJlaXN1aWthaVwgOwor5L+d6K236ImyIDwgaG9nb3Nob2t1XCA7CivlobXntJkgPCBjaGlyaWdhbWlcIDsKK+iJsuWPjuW3riA8IGlyb3NodXVzYVwgOwor576O6KGT5a62IDwgYmlqdXRzdWthXCA7Civlho3oqZXkvqEgPCBzYWloeW91a2FcIDsKK+WkseaYjiA8IHNoaXRzdW1laVwgOwor5rqW5YKZ5LitIDwganVuYmljaHV1XCA7CivlhYnlkIjmiJAgPCBrb3Vnb3VzZWlcIDsKK+aCquadoeS7tiA8IGFrdWpvdWtlblwgOwor5LiJ5oKq6LajIDwgc2FuYWt1c2h1XCA7CivkuLvnlKPlnLAgPCBzaHVzYW5jaGlcIDsKK+mfs+mDqOiomOWPtyA8IG9uYnVraWdvdVwgOwor5be756mN6ZuyIDwga2Vuc2VraXVuXCA7CivluIznoavphbggPCBraXJ5dXVzYW5cIDsKK+aWh+aciCA8IGZ1bWlkenVraVwgOwor6ISx56mA5qmfIDwgZGFra29rdWtpXCA7CivpvI7oq4fkvJogPCB0ZWlkYW5rYWlcIDsKK+ikh+acrOS9jSA8IGZ1a3Vob24nJ2lcIDsKK+S/l+i2o+WRsyA8IHpva3VzaHVtaVwgOwor57WC5q2i56ymIDwgc2h1dXNoaWZ1XCA7Civngq3os6ogPCB0YW5zaGl0c3VcIDsKK+eyvuijveWTgSA8IHNlaXNlaWhpblwgOwor5oay5YW16ZqKIDwga2VucGVpdGFpXCA7CivoqoXmrrogPCBjaHV1c2F0c3VcIDsKK+Wkp+aYlCA8IG9vbXVrYXNoaVwgOwor6YWN5YG26ICFIDwgaGFpZ3V1c2hhXCA7CivlhYXlvZPph5EgPCBqdXV0b3VraW5cIDsKK+a2iOeBq+agkyA8IHNob3VrYXNlblwgOwor5aWI6Imv5pmC5LujIDwgbmFyYWppZGFpXCA7Civlr4TnlZnogIUgPCBraXJ5dXVzaGFcIDsKK+eBsOelnualvSA8IGhhaWthZ3VyYVwgOwor6YeR5LiA5bCBIDwga2luJydpcHB1dVwgOwor5bqK6YGL5YuVIDwgeXVrYXVuZG91XCA7CivplbfpnbQgPCBuYWdhZ3V0c3VcIDsKK+WvhOeUn+iZqyA8IGtpc2VpY2h1dVwgOwor57O46LuKIDwgaXRvZ3VydW1hXCA7CivlpJzmmZIgPCB5b3phcmFzaGlcIDsKK+S4ieetieWIhiA8IHNhbnRvdWJ1blwgOwor5Zar5rC057eaIDwga2lzc3Vpc2VuXCA7CivlpI/mnI0gPCBuYXRzdWZ1a3VcIDsKK+aCqueOieWMliA8IGFrdWRhbWFrYVwgOwor6LaF57Ch5piTIDwgY2hvdWthbicnaVwgOwor6Z205aKoIDwga3V0c3V6dW1pXCA7Civoo7jppqwgPCBoYWRha2F1bWFcIDsKK+aIr+S9nOiAhSA8IGdlc2FrdXNoYVwgOwor5aa55YiGIDwgaW1vdXRvYnVuXCA7Civml6XloqggPCBuaWNoaWJva3VcIDsKK+aWsOW8jyA8IHNoaW5zaGlraVwgOwor6Z2S55Oi566qIDwgYW9ieW91dGFuXCA7CivmgqPogIXmp5ggPCBrYW5qYXNhbWFcIDsKK+S6lOWvuOmHmCA8IGdvc3Vua3VnaVwgOwor5Luu55m76KiYIDwga2FyaXRvdWtpXCA7CivlkIjlkIzou40gPCBnb3Vkb3VndW5cIDsKK+Wkj+aZgiA8IG5hdHN1ZG9raVwgOwor54K46KOCIDwgc2FrdXJldHN1XCA7CivnibnliKUgPCB0b2t1YmV0c3VcIDsKK+ikh+mbkSA8IGZ1a3V6YXRzdVwgOwor6Z205Z6LIDwga3V0c3VnYXRhXCA7CivnspLpo58gPCByeXV1c2hva3VcIDsKK+mdnuePvualrSA8IGhpZ2VuZ3lvdVwgOwor5Yuk5Yq06ICFIDwga2lucm91c2hhXCA7Civlm7rlrprplbcgPCBrb3RlaWNob3VcIDsKK+auuuiPjOWJpCA8IHNha2tpbnphaVwgOwor57WQ6IacIDwga2V0c3VtYWt1XCA7CivmtIvmnI3lsYsgPCB5b3VmdWt1eWFcIDsKK+i1t+eIhuWJpCA8IGtpYmFrdXphaVwgOwor6KGo56S654GvIDwgaHlvdWppdG91XCA7Civkvr/liKnluLMgPCBiZW5yaWNob3VcIDsKK+WPluadkOePrSA8IHNodXphaWhhblwgOwor6ISC6IKq5L2TIDwgc2hpYm91dGFpXCA7Civpg7Xkvr/lsYsgPCB5dXViaW4nJ3lhXCA7CivnuJ7mn4QgPCBzaGltYWdhcmFcIDsKK+S4rei+nuWFuCA8IGNodXVqaXRlblwgOwor5rSX6Z2i5Y+wIDwgc2VubWVuZGFpXCA7CivlpLHmgYsgPCBzaGl0c3VyZW5cIDsKK+WGheijj+mbmyA8IGRhaXJpYmluYVwgOwor5YWo5LqM6YeNIDwgemVuJyduaWp1dVwgOwor5rq26Kej5oCnIDwgeW91a2Fpc2VpXCA7CivlpLHlv7UgPCBzaGl0c3VuZW5cIDsKK+mbqOabhyA8IGFtYWd1bW9yaVwgOwor5pW05pWw6KuWIDwgc2Vpc3V1cm9uXCA7CivoqZXmsbogPCBoeW91a2V0c3VcIDsKK+awkeekvuWFmiA8IG1pbnNoYXRvdVwgOwor5LyB55S75pu4IDwga2lrYWt1c2hvXCA7CivnlJ/lnLDnjYQgPCBpa2lqaWdva3VcIDsKK+e0lOexs+mFkiA8IGp1bm1haXNodVwgOwor5Zue6YGK6a2aIDwga2FpeXV1Z3lvXCA7CivnhKHplqLlv4MgPCBtdWthbnNoaW5cIDsKK+iAs+m8u+WSveWWiSA8IGppYmlpbmtvdVwgOwor5aWz5Z2CIDwgb24nJ25hemFrYVwgOwor57aa55m6IDwgem9rdWhhdHN1XCA7Civlj4vkurrplpMgPCB5dXVqaW5rYW5cIDsKK+acieaWkOmWoyA8IHl1dWhpa2FrdVwgOwor6LKp5aOy5bqXIDwgaGFuYmFpdGVuXCA7Civpm5HmoKogPCB6YXRzdWthYnVcIDsKK+W/l+acm+agoSA8IHNoaWJvdWtvdVwgOwor5aWJ6L+O6ZaAIDwgaG91Z2VpbW9uXCA7CivniZvliLogPCBneXV1c2FzaGlcIDsKK+Wft+iRlyA8IHNodXVjaGFrdVwgOwor6Z2i5Lya5Lq6IDwgbWVua2FpbmluXCA7CivkuIDnrofmnIggPCBpa2thZ2V0c3VcIDsKK+mAgeawtOeuoSA8IHNvdXN1aWthblwgOwor57OW6LOqIDwgdG91c2hpdHN1XCA7Civlhrflh43oiLkgPCByZWl0b3VzZW5cIDsKK+W5tOmFjeiAhSA8IG5lbnBhaXNoYVwgOwor5omL5pWw5paZIDwgdGVzdXVyeW91XCA7Civpm6LprYLnl4UgPCByaWtvbmJ5b3VcIDsKK+epuuawl+axmuafkyA8IGt1dWtpb3NlblwgOwor54mH5Y+jIDwga2F0YWt1Y2hpXCA7CivmsLTkuK3oirEgPCBzdWljaHV1a2FcIDsKK+WLleWQjeipniA8IGRvdW1laXNoaVwgOwor57Sw6IWwIDwgaG9zb2dvc2hpXCA7Civng4/luL3lrZDosp0gPCBlYm9zaGlnYWlcIDsKK+m7hOmHkeiJsiA8IGtvZ2FuZWlyb1wgOwor5LqM5YWD55qEIDwgbmlnZW50ZWtpXCA7CivnuJ7moJfpvKAgPCBzaGltYXJpc3VcIDsKK+Wor+alveWgtCA8IGdvcmFrdWpvdVwgOwor6YGK6Kan5ZywIDwgeXV1cmFuY2hpXCA7CivmnKzlm6DlnYogPCBob24nJ2luYm91XCA7CivlhbHmoITlnI8gPCBreW91ZWlrZW5cIDsKK+ebuOWvvuatuyA8IGFpdGFpamluaVwgOwor5Zu96Ieq5oWiIDwga3VuaWppbWFuXCA7Civph43lpKfoppYgPCBqdXVkYWlzaGlcIDsKK+S8gealreWGhSA8IGtpZ3lvdW5haVwgOwor6ZuG5pytIDwgc2h1dXNhdHN1XCA7CivlkIznqpPkvJogPCBkb3Vzb3VrYWlcIDsKK+azleiTruiNiSA8IGhvdXJlbnNvdVwgOwor5rW35aSW54mIIDwga2FpZ2FpYmFuXCA7CivmiYfnirblnLAgPCBzZW5qb3VjaGlcIDsKK+aXpeWHuiA8IG5pc3NodXRzdVwgOwor5omT5pKD5oimIDwgZGFnZWtpc2VuXCA7CivmnInosaHnhKHosaEgPCB1em91bXV6b3VcIDsKK+mAj+WGmee0mSA8IHRvdXNoYXNoaVwgOwor5Lq65paH5Y+yIDwgamluYnVuc2hpXCA7CivmjIflrprliLggPCBzaGl0ZWlrZW5cIDsKK+mmmeawtOeTtiA8IGtvdXN1aWJpblwgOwor54ax5biv55eFIDwgbmV0YWlieW91XCA7CivkvJ3oqJjniakgPCBkZW5raW1vbm9cIDsKK+ioiOmHj+WZqCA8IGtlaXJ5b3VraVwgOwor6KOc5YSf6YeRIDwgaG9zaG91a2luXCA7Civou73niq/nvaogPCBrZWloYW56YWlcIDsKK+WdqumHjyA8IHRzdWJvcnlvdVwgOwor5ZCI5oay5oCnIDwgZ291a2Vuc2VpXCA7CivlnLDpjq7npa0gPCBqaWNoaW5zYWlcIDsKK+S4u+S9k+aApyA8IHNodXRhaXNlaVwgOwor57Sg57KS5a2QIDwgc29yeXV1c2hpXCA7Civonb/lnLDnjYQgPCBoYWVqaWdva3VcIDsKK+Wkp+eBveWusyA8IGRhaXNhaWdhaVwgOwor5aW05YenIDwgeWFra29kYWtvXCA7Civmpb3lpKnlrrYgPCByYWt1dGVua2FcIDsKK+eQhuaAp+eahCA8IHJpc2VpdGVraVwgOwor57a/5rK5IDwgd2F0YWFidXJhXCA7CivnhLbnhLYgPCBzaGlrYWppa2FcIDsKK+m8k+esm+maiiA8IGtvdGVraXRhaVwgOwor6LW36Ki054y25LqIIDwga2lzb3l1dXlvXCA7Civlr5LmmpboqIggPCBrYW5kYW5rZWlcIDsKK+iKseeyieeXhyA8IGthZnVuc2hvdVwgOwor5Lq654K655qEIDwgamluJydpdGVraVwgOwor5LyK5Yui56We5a6uIDwgaXNlamluZ3V1XCA7Civlj5fpoJjogIUgPCBqdXJ5b3VzaGFcIDsKK+S8geeUu+aApyA8IGtpa2FrdXNlaVwgOwor5YaF6ZyA5Z6LIDwgbmFpanVnYXRhXCA7CivlsLjkvY3ntKDppJAgPCBzaGlpc29zYW5cIDsKK+eEpueGsSA8IHNob3VuZXRzdVwgOwor5Y6f5oiQ5bKpIDwgZ2Vuc2VpZ2FuXCA7CivooajnpLrmnb8gPCBoeW91amliYW5cIDsKK+Wkj+WxsSA8IG5hdHN1eWFtYVwgOwor54iq5YiHIDwgdHN1bWVraXJpXCA7CivmsLjkuYXmra8gPCBlaWt5dXVzaGlcIDsKK+WNg+ekvuacrSA8IHNlbmphZnVkYVwgOwor6I+p5o+Q5b+DIDwgYm9kYWlzaGluXCA7CivmlL/miYAgPCBtYW5kb2tvcm9cIDsKK+aVmeW8jyA8IGt5b3VzaGlraVwgOwor6KGo56S65pu4IDwgaHlvdWppc2hvXCA7CivmlL7msLTnrqEgPCBob3VzdWlrYW5cIDsKK+WPjOWtkOiRiSA8IHNvdXNoaXlvdVwgOwor5oCn6Lui5o+bIDwgc2VpdGVua2FuXCA7CivovLjpgIHph48gPCB5dXNvdXJ5b3VcIDsKK+aJgOacieWcsCA8IHNob3l1dWNoaVwgOwor6byT5omL6ZW3IDwga29zaHVjaG91XCA7CivniKrlhYggPCB0c3VtYXNha2lcIDsKK+e3j+acrOW6lyA8IHNvdWhvbnRlblwgOwor5YWD5rCX6ICFIDwgZ2Vua2ltb25vXCA7Civku6PlvIHogIUgPCBkYWliZW5zaGFcIDsKK+mHjuWkqemiqOWRgiA8IG5vdGVuYnVyb1wgOwor55S65Yy76ICFIDwgbWFjaGlpc2hhXCA7Civoo73mnZDmiYAgPCBzZWl6YWlzaG9cIDsKK+Whqea8rCA8IHNoaW9kenVrZVwgOwor5Y+N5Lmx6LuNIDwgaGFucmFuZ3VuXCA7Civnt4/kurrlj6MgPCBzb3VqaW5rb3VcIDsKK+W6l+S7leiIniA8IG1pc2VqaW1haVwgOwor5Lit5L+d6ICFIDwgY2h1dWhvc2hhXCA7CivlpZTlh7ogPCBob25zaHV0c3VcIDsKK+eri+azleiAhSA8IHJpcHBvdXNoYVwgOwor6I2J55u45pKyIDwga3VzYXp1bW91XCA7CivkuojlgpnpjKggPCB5b2JpaWthcmlcIDsKK+malOaciCA8IGtha3VnZXRzdVwgOwor5q2T6YCB5LyaIDwga2Fuc291a2FpXCA7Civlj4znv4XpoZ4gPCBzb3VzaGlydWlcIDsKK+e0mee0sOW3pSA8IGthbWl6YWlrdVwgOwor5bGx5rC06I2YIDwgc2Fuc3Vpc291XCA7CivooajmspnmsbAgPCBvbW90ZXphdGFcIDsKK+WUkOeNheWtkCA8IGthcmFqaXNoaVwgOwor5bmz5ZKM5Zu9IDwgaGVpd2Frb2t1XCA7CivkvY7msJflnKcgPCB0ZWlraWF0c3VcIDsKK+S9nOalreeUqCA8IHNhZ3lvdXlvdVwgOwor5pKD55m6IDwgZ2VraWhhdHN1XCA7Civln7fnrYYgPCBzaGlwcGl0c3VcIDsKK+awtOWus+WcsCA8IHN1aWdhaWNoaVwgOwor57eP5pys5bGxIDwgc291aG9uemFuXCA7CivmvJToqqzlrrYgPCBlbnpldHN1a2FcIDsKK+ebsuiFuOeCjiA8IG1vdWNob3VlblwgOwor5pal5YqbIDwgc2VraXJ5b2t1XCA7CivntYLnmbogPCBzaHV1aGF0c3VcIDsKK+mBo+WUkOS9vyA8IGtlbnRvdXNoaVwgOwor5Z2C6YGTIDwgc2FrYW1pY2hpXCA7CivkvZzmpa3nj60gPCBzYWd5b3VoYW5cIDsKK+a0u+aAp+eCrSA8IGthc3NlaXRhblwgOwor5pyA5bCP5YyWIDwgc2Fpc2hvdWthXCA7CivkuZfpmY3loLQgPCBqb3Vrb3Vqb3VcIDsKK+S/l+S4lueVjCA8IHpva3VzZWthaVwgOwor5q+b57mU54mpIDwga2Vvcmltb25vXCA7Civlv5fpoZjmm7ggPCBzaGlnYW5zaG9cIDsKK+S4jeatu+mzpSA8IGZ1c2hpY2hvdVwgOwor5oKy6Kaz55qEIDwgaGlrYW50ZWtpXCA7CivmkrLmu4UgPCBib2t1bWV0c3VcIDsKK+aIkOWKn+iAhSA8IHNlaWtvdXNoYVwgOwor55yL6K235a2mIDwga2FuZ29nYWt1XCA7CivkuIrlkJHnt5ogPCBqb3Vrb3VzZW5cIDsKK+a2iOeCjuWJpCA8IHNob3VlbnphaVwgOwor5YWs5LyR5pelIDwga291a3l1dWJpXCA7Civnt4/nvbfmpa0gPCBzb3VoaWd5b3VcIDsKK+WGjeaKleizhyA8IHNhaXRvdXNoaVwgOwor5q2M5YqH5aC0IDwga2FnZWtpam91XCA7CivmtYTmsLTloLQgPCBqb3VzdWlqb3VcIDsKK+mbquWlsyA8IHl1a2lvbicnbmFcIDsKK+ips+WvhiA8IHNob3VtaXRzdVwgOwor5rC06ICV5rOVIDwgc3Vpa291aG91XCA7CivlpKfmvJTnv5IgPCBkYWllbnNodXVcIDsKK+eEoeeQhueEoeS9kyA8IG11cmltdXRhaVwgOwor5a6f5ris5ZuzIDwgamlzc29rdXp1XCA7CivohqjlvLXluqYgPCBib3VjaG91ZG9cIDsKK+aYoOWGmeW5lSA8IGVpc2hhbWFrdVwgOwor5LiK5rC06YGTIDwgam91c3VpZG91XCA7CivlhajkvY/msJEgPCB6ZW5qdXVtaW5cIDsKK+a1hOawtOWcsCA8IGpvdXN1aWNoaVwgOwor6ZuR5a2mIDwgemF0c3VnYWt1XCA7CivlnYfos6ogPCBraW5zaGl0c3VcIDsKK+eUt+aAp+eUqCA8IGRhbnNlaXlvdVwgOwor5aW95aWH5b+DIDwga291a2lzaGluXCA7CivogonkvZPnvo4gPCBuaWt1dGFpYmlcIDsKK+WbveWutueahCA8IGtva2thdGVraVwgOwor54qg54my55qEIDwgZ2lzZWl0ZWtpXCA7CivpgKPlrZDnqpMgPCByZW5qaW1hZG9cIDsKK+ebuOWvvuaApyA8IHNvdXRhaXNlaVwgOwor54OP55OcIDwga2FyYXN1dXJpXCA7CivplqLlv4PkuosgPCBrYW5zaGluamlcIDsKK+WMl+aWl+aYnyA8IGhva3V0b3NlaVwgOwor5pys5oug5ZywIDwgaG9ua3lvY2hpXCA7CivoiJ7ouI/nl4UgPCBidXRvdWJ5b3VcIDsKK+WGheWkluS6uiA8IG5haWdhaWppblwgOwor5pKy5q66IDwgYm9rdXNhdHN1XCA7CivmkZjnmbogPCB0ZWtpaGF0c3VcIDsKK+S4i+eoruWlsyA8IGdlc3VvbicnbmFcIDsKK+i1pOmbu+i7iiA8IGFrYWRlbnNoYVwgOwor5aSP5ZCRIDwgbmF0c3VtdWtpXCA7Civnspjmnb/lsqkgPCBuZW5iYW5nYW5cIDsKK+S6i+alreiAhSA8IGppZ3lvdXNoYVwgOwor5q2T6L+O5LyaIDwga2FuZ2Vpa2FpXCA7CivoqJflhZDmiYAgPCB0YWt1amlzaG9cIDsKK+awtOaZguioiCA8IG1penVkb2tlaVwgOwor5o2o6YmiIDwgc3V0ZWJhY2hpXCA7Civnm7LlsI7niqwgPCBtb3Vkb3VrZW5cIDsKK+iyqeWjsuS6uiA8IGhhbmJhaW5pblwgOwor6a+QIDwgc3ViYXNoaXJpXCA7Civkurrlm73oqJggPCBqaW5rb2t1a2lcIDsKK+aZruWPiueJiCA8IGZ1a3l1dWJhblwgOwor6a6XIDwga29ub3NoaXJvXCA7CivljYrpg6jml48gPCBoYW5idXpva3VcIDsKK+mjm+mBk+WFtyA8IHRvYmlkb3VndVwgOwor5Lq66ZaT55WMIDwgbmluZ2Vua2FpXCA7CivkubPmr43ou4ogPCB1YmFndXJ1bWFcIDsKK+aDqOatu+S9kyA8IHphbnNoaXRhaVwgOwor5aCF54mpIDwga2F0YWJ1dHN1XCA7CivpgYvmkKzkurogPCB1bnBhbicnbmluXCA7CivmipfnlJ/liaQgPCBrb3VzZWl6YWlcIDsKK+WbvemJhCA8IGtva3V0ZXRzdVwgOwor6KeS5qi9IDwgdHN1bm9kYXJ1XCA7CivmkoPmu4UgPCBnZWtpbWV0c3VcIDsKK+S4lui/t+iogCA8IHlvbWFpZ290b1wgOwor5Lyd6KiA5p2/IDwgZGVuZ29uYmFuXCA7Civoh6rnq4voqp4gPCBqaXJpdHN1Z29cIDsKK+ezp+enoyA8IHJ5b3VtYXRzdVwgOwor54ax5biv5p6XIDwgbmV0dGFpcmluXCA7CivmsLjkuYXmgKcgPCBlaWt5dXVzZWlcIDsKK+ijveacrOWxiyA8IHNlaWhvbicneWFcIDsKK+axvei7iuizgyA8IGtpc2hhY2hpblwgOwor6Zqj5a6kIDwgcmluc2hpdHN1XCA7CivnpoHoo4/mp5ggPCBraW5yaXNhbWFcIDsKK+aFo+eUqOWPpSA8IGthbicneW91a3VcIDsKK+ims+WFieWcsCA8IGthbmtvdWNoaVwgOwor5Lya6KaL6ICFIDwga2Fpa2Vuc2hhXCA7CivmnbHlpKnntIUgPCB0b3V0ZW5rb3VcIDsKK+ims+WFieWboyA8IGthbmtvdWRhblwgOwor5oqA5ben55qEIDwgZ2lrb3V0ZWtpXCA7Civmpb3pmqDlsYUgPCByYWt1aW5reW9cIDsKK+mrmOmAn+W6piA8IGtvdXNva3Vkb1wgOwor56eB55Sf5a2QIDwgc2hpc2Vpc2hpXCA7Civml6XoqJjluLMgPCBuaWtraWNob3VcIDsKK+aUv+ayu+WtpiA8IHNlaWppZ2FrdVwgOwor5aSW5LuYIDwgc290b2R6dWtlXCA7CivmsLTnkIblraYgPCBzdWlyaWdha3VcIDsKK+avjeWtkOWvriA8IGJvc2hpcnlvdVwgOwor552A5b+D5ZywIDwga2lnb2tvY2hpXCA7CivlpI/kvZwgPCBuYXRzdXNha3VcIDsKK+aIkuWOs+S7pCA8IGthaWdlbnJlaVwgOwor5oqV5LiO6YePIDwgdG91eW9yeW91XCA7CivnhaflsLogPCBzaG91c2hha3VcIDsKK+aEj+awl+i7kumrmCA8IGlraWtlbmtvdVwgOwor6Zuq5YWOIDwgeXVraXVzYWdpXCA7Civlk7rkubPpoZ4gPCBob255dXVydWlcIDsKK+Wkp+idmeidoCA8IG9va291bW9yaVwgOwor54Sh5oqV56WoIDwgbXV0b3VoeW91XCA7CivmjIfkuoblm7MgPCBzaGlyeW91enVcIDsKK+mBqeW/nOaApyA8IHRla2lvdXNlaVwgOwor6KWy54i1IDwgc2h1dXNoYWt1XCA7CivmvKvmiY3luKsgPCBtYW56YWlzaGlcIDsKK+S6i+alreeojiA8IGppZ3lvdXplaVwgOwor5Y+O5a655omAIDwgc2h1dXlvdWpvXCA7Civlm73nkr3mm7ggPCBrb2t1amlzaG9cIDsKK+aEn+immuWZqCA8IGthbmtha3VraVwgOwor5pWZ6IKy6LK7IDwga3lvdWlrdWhpXCA7Civlm7rlrprntaYgPCBrb3RlaWt5dXVcIDsKK+Wxleimp+S8miA8IHRlbnJhbmthaVwgOwor5Lqk5Luj5Yi2IDwga291dGFpc2VpXCA7CivpmJ0gPCBrb3phdG9oZW5cIDsKK+imhua7hSA8IGZ1a3VtZXRzdVwgOwor5beh6KaW6ImHIDwganVuc2hpdGVpXCA7Civlt6HoppboiLkgPCBqdW5zaGlzZW5cIDsKK+axjumWouaVsCA8IGhhbmthbnN1dVwgOwor5YWo5Lq655SfIDwgemVuamluc2VpXCA7Civmlq3lvLfluqYgPCBkYW5reW91ZG9cIDsKK+WHpuWls+S9nCA8IHNob2pvc2FrdVwgOwor5YCL5oCn55qEIDwga29zZWl0ZWtpXCA7Civloqjlo7cgPCBzdW1pdHN1Ym9cIDsKK+WFqOmfs+majiA8IHplbicnb25rYWlcIDsKK+iqheS8kCA8IGNodXViYXRzdVwgOwor5Y+N5Lmx6ICFIDwgaGFucmFuc2hhXCA7Civou73pn7Pmpb0gPCBrZWlvbmdha3VcIDsKK+WbnuW+qeacnyA8IGthaWZ1a3VraVwgOwor5LiN5ZCI5qC8IDwgZnVnb3VrYWt1XCA7Civlkajms6LoqIggPCBzaHV1aGFrZWlcIDsKK+S4jeWPr+asoCA8IGZ1a2FrZXRzdVwgOwor5pS+5Ye6IDwgaG91c2h1dHN1XCA7CivntYLmpbUgPCBzaHV1a3lva3VcIDsKK+ehrOWMlueXhyA8IGtvdWthc2hvdVwgOwor6YCG5Yq55p6cIDwgZ3lha2tvdWthXCA7Civoo7jnt5ogPCBoYWRha2FzZW5cIDsKK+imhuayoSA8IGZ1a3Vib3RzdVwgOwor5LiA562J5Zu9IDwgaXR0b3Vrb2t1XCA7CivlhajlsIHlnLAgPCB6ZW5ob3VjaGlcIDsKK+WIhumFjemHkSA8IGJ1bnBhaWtpblwgOwor6Kqe5bC+5aSJ5YyWIDwgZ29iaWhlbmthXCA7Civlm57pgYroiLkgPCBrYWl5dXVzZW5cIDsKK+WFrOS8muWggiA8IGtvdWthaWRvdVwgOwor54Sh6KGo5oOFIDwgbXVoeW91am91XCA7CivnhanlnosgPCB1cnVzYWdhdGFcIDsKK+awtOmkg+WtkCA8IHN1aWd5b3V6YVwgOwor6KmU5YuFIDwgc2hvdWNob2t1XCA7CivpoqjlnJ/nl4UgPCBmdXVkb2J5b3VcIDsKK+aUr+WHuiA8IHNoaXNodXRzdVwgOwor6YCD6YG/55qEIDwgdG91aGl0ZWtpXCA7Civlj6TmloflraYgPCBrb2J1bmdha3VcIDsKK+WEquetieeUnyA8IHl1dXRvdXNlaVwgOwor57ai5a+GIDwgY2h1dW1pdHN1XCA7Civlm7rlrprnpaggPCBrb3RlaWh5b3VcIDsKK+WvvuWQkei7iiA8IHRhaWtvdXNoYVwgOwor57WE5puyIDwga3VtaWt5b2t1XCA7Civkuovmpa3nlYwgPCBqaWd5b3VrYWlcIDsKK+aJueWIpOeahCA8IGhpaGFudGVraVwgOwor5aSp5Zyw5Lq6IDwgdGVuY2hpamluXCA7CivooYDntbHmm7ggPCBrZXR0b3VzaG9cIDsKK+S4reS6jOmajiA8IGNodXVuaWthaVwgOwor57aZ5a6kIDwga2Vpc2hpdHN1XCA7Civlm73ooaggPCBrdW5pb21vdGVcIDsKK+WxseiRoeiQhCA8IHlhbWFidWRvdVwgOwor6buE6YGT6Z2iIDwga291ZG91bWVuXCA7Civlj5fpm6PpgLEgPCBqdW5hbnNodXVcIDsKK+WwiuWOs+atuyA8IHNvbmdlbnNoaVwgOwor6ICD5Y+k5a2mIDwga291a29nYWt1XCA7Civkv53pmbroqLwgPCBob2tlbnNob3VcIDsKK+mrmOWIhuWtkCA8IGtvdWJ1bnNoaVwgOwor5Yal5Yqg6YeRIDwgbXlvdWdha2luXCA7CivlhoXlnLDnsbMgPCBuYWljaGltYWlcIDsKK+aer+iRieWJpCA8IGthcmVoYXphaVwgOwor57eg5YiHIDwgc2hpbWVraXJpXCA7Civmi5vlvoXml6UgPCBzaG91dGFpYmlcIDsKK+iqk+mhmOaoqSA8IHNlaWdhbmtlblwgOwor5oSb5Zu96ICFIDwgYWlrb2t1c2hhXCA7CivoqLTpoZjkurogPCBzb2dhbicnbmluXCA7CivpoJjkuovppKggPCByeW91amlrYW5cIDsKK+S4u+eKr+iAhSA8IHNodWhhbnNoYVwgOwor6Ziy6K235aOBIDwgYm91Z29oZWtpXCA7Civos4fph5HmupAgPCBzaGlraW5nZW5cIDsKK+m8oOWSrOeXhyA8IHNva291c2hvdVwgOwor5LiJ6YeN55uXIDwgc2FuanV1dG91XCA7CivpgKPkvZPlvaIgPCByZW50YWlrZWlcIDsKK+Wcn+iJsiA8IHRzdWNoaWlyb1wgOwor54++5q616ZqOIDwgZ2VuZGFua2FpXCA7CivmiJDlubTogIUgPCBzZWluZW5zaGFcIDsKK+mHkeino+emgSA8IGtpbmthaWtpblwgOwor57695a2Q56qBIDwgaGFuZXRzdWtpXCA7CivmtJfmv6/nsokgPCBzZW50YWt1a29cIDsKK+WFieWMluWtpiA8IGtvdWthZ2FrdVwgOwor6L6y5a2m6YOoIDwgbm91Z2FrdWJ1XCA7CivkuLvku7vliLYgPCBzaHVuaW5zZWlcIDsKK+iInui4j+acjSA8IGJ1dG91ZnVrdVwgOwor57WM6aiT6KuWIDwga2Vpa2Vucm9uXCA7CivntYzpqJPoq4cgPCBrZWlrZW5kYW5cIDsKK+aOpee2miA8IHNldHN1em9rdVwgOwor5pOm6YGO5YK3IDwgc2Fra2FzaG91XCA7CivnsbPnspIgPCBrb21ldHN1YnVcIDsKK+ezn+a8rCA8IGthc3VkenVrZVwgOwor5Zub6YeN5aWPIDwgc2hpanV1c291XCA7CivouJ0gPCBrdXJ1YnVzaGlcIDsKK+ebuOWvvuWApCA8IHNvdXRhaWNoaVwgOwor5q+N5a2Q5YWxIDwgYm9zaGl0b21vXCA7CivpiYTngavlt7sgPCB0ZWtrYW1ha2lcIDsKK+iLseS9nOaWhyA8IGVpc2FrdWJ1blwgOwor5oim6LuK5YW1IDwgc2Vuc2hhaGVpXCA7Civlho3mipXnqL8gPCBzYWl0b3Vrb3VcIDsKK+aVmemkiumDqCA8IGt5b3V5b3VidVwgOwor56uL5rOV5qipIDwgcmlwcG91a2VuXCA7CivlpqXljZTngrkgPCBkYWt5b3V0ZW5cIDsKK+mbsuS7meWysyA8IHVuemVuZGFrZVwgOwor5Y+X6aCY5pu4IDwganVyeW91c2hvXCA7CivkuI3mtLvljJYgPCBmdWthdHN1a2FcIDsKK+aWh+eroOiqniA8IGJ1bnNob3Vnb1wgOwor6Z2S5L+h5Y+3IDwgYW9zaGluZ291XCA7CivmmYLoqIjnmr8gPCB0b2tlaXphcmFcIDsKK+W5veWGpeeVjCA8IHl1dW1laWthaVwgOwor5Z+36KGM5ZCPIDwgc2hpa2tvdXJpXCA7CivnrYnpq5jnt5ogPCB0b3Vrb3VzZW5cIDsKK+e1nummluWPsCA8IGtvdXNodWRhaVwgOwor56C05pOm6Z+zIDwgaGFzYXRzdW9uXCA7CivpgIHlj5fkv6EgPCBzb3VqdXNoaW5cIDsKK+aSq+WtkCA8IG5hZGVzaGlrb1wgOwor5LiA56We6KuWIDwgaXNzaGlucm9uXCA7CivnnYDpgZPmpb0gPCBraWRvdXJha3VcIDsKK+aYjuW+jOW5tCA8IG15b3Vnb25lblwgOwor5rOV5YuZ55yBIDwgaG91bXVzaG91XCA7CivphbXntKDlraYgPCBrb3Vzb2dha3VcIDsKK+ezoOayuSA8IG51a2FhYnVyYVwgOwor6ZW354mpIDwgY2hvdWJ1dHN1XCA7Civlm7Plg4/lraYgPCB6dXpvdWdha3VcIDsKK+WlieWKoOW4syA8IGhvdWdhY2hvdVwgOwor5oSf5ZiG6KmeIDwga2FudGFuc2hpXCA7CivliY3lo7LliLggPCBtYWV1cmlrZW5cIDsKK+imquW/gyA8IG95YWdva29yb1wgOwor6KGG6KqsIDwgc2h1dXNldHN1XCA7Civlv5fpoZjlhbUgPCBzaGlnYW5oZWlcIDsKK+WPjeWwhOWFiSA8IGhhbnNoYWtvdVwgOwor55qu57Sw5belIDwga2F3YXphaWt1XCA7CivlvqnmsLTlmaggPCBmdWt1c3Vpa2lcIDsKK+mWoumAo+aApyA8IGthbnJlbnNlaVwgOwor57Wx6Kqe5a2mIDwgdG91Z29nYWt1XCA7CivntbblppkgPCB6ZXRzdW15b3VcIDsKK+ism+a8lOaWmSA8IGtvdWVucnlvdVwgOwor5pWs6ICB5LyaIDwga2Vpcm91a2FpXCA7CivmmYLplpPou7ggPCBqaWthbmppa3VcIDsKK+WPjeWvvuWFmiA8IGhhbnRhaXRvdVwgOwor5pCt5LmX6ICFIDwgdG91am91c2hhXCA7CivkuZ3liIbkuZ3ljpggPCBrdWJ1a3VyaW5cIDsKK+ezuOahnCA8IGl0b3pha3VyYVwgOwor56S+5rCR5YWaIDwgc2hhbWludG91XCA7CivntZ7pppbliJEgPCBrb3VzaHVrZWlcIDsKK+WJteW7uuiAhSA8IHNvdWtlbnNoYVwgOwor5pyA5aSn6ZmQIDwgc2FpZGFpZ2VuXCA7CivpmbPliJcgPCBjaGlucmV0c3VcIDsKK+ezuOafsyA8IGl0b3lhbmFnaVwgOwor5qWT5a2Q6aaZIDwgZnV1c2hpa291XCA7Civmt7fmiJDlsqkgPCBrb25zZWlnYW5cIDsKK+Wft+aLlyA8IHNoaXRzdXlvdVwgOwor57SZ57KY5ZyfIDwga2FtaW5lbmRvXCA7CivmnaHku7bmlocgPCBqb3VrZW5idW5cIDsKK+aEj+itmOS9kyA8IGlzaGlraXRhaVwgOwor56eB5LyB5qWtIDwgc2hpa2lneW91XCA7CivnqbrmqKHmp5ggPCBzb3JhbW95b3VcIDsKK+WFrOacieaelyA8IGtvdXl1dXJpblwgOwor5bGx5rC05qW8IDwgc2Fuc3Vpcm91XCA7Civoo4MgPCBrYW1pc2hpbW9cIDsKK+WvhOeVmeWcsCA8IGtpcnl1dWNoaVwgOwor5pat5Ymb5oCnIDwgZGFuZ291c2VpXCA7CivnqbrlhYPmsJcgPCBrYXJhZ2Vua2lcIDsKK+ihpCA8IGtvcm9tb2hlblwgOwor5omT566X55qEIDwgZGFzYW50ZWtpXCA7CivpgIDolLXlk4EgPCB0YWl6b3VoaW5cIDsKK+imquWvhiA8IHNoaW5taXRzdVwgOwor5b2x6Z+/5ZyPIDwgZWlreW91a2VuXCA7CivnnJ/lloTnvo4gPCBzaGluemVuYmlcIDsKK+aJi+ihk+ihoyA8IHNodWp1dHN1aVwgOwor5Lq66ZaT5oSbIDwgbmluZ2VuJydhaVwgOwor55CG55+l55qEIDwgcmljaGl0ZWtpXCA7CivnrZLpn7MgPCB0c3V0c3VvdG9cIDsKK+eQpeePgOiJsiA8IGtvaGFrdWlyb1wgOwor5b6h6JSt5qeYIDwgb2thZ2VzYW1hXCA7Civmr5vntLDnrqEgPCBtb3VzYWlrYW5cIDsKK+e0i+aJgCA8IG1vbmRva29yb1wgOwor6KKL57ayIDwgZnVrdXJvYW1pXCA7Civnmb3og6HpursgPCBzaGlyb2dvbWFcIDsKK+iHquW3seimj+WItiA8IGppa29raXNlaVwgOwor5Li75Lq65YWsIDwgc2h1amlua291XCA7CivlkIzlp5Tlk6HkvJogPCBkb3VpaW5rYWlcIDsKK+S6uumWk+aApyA8IG5pbmdlbnNlaVwgOwor5Y2Y5a2U6aGeIDwgdGFua291cnVpXCA7CivlkIzlirTogIUgPCBkb3Vyb3VzaGFcIDsKK+WNs+aZguaApyA8IHNva3VqaXNlaVwgOwor5Lmz5ZGR5YWQIDwgY2hpbm9taWdvXCA7CivkuI3lvrPmvKIgPCBmdXRva3VrYW5cIDsKK+mBremBh+aIpiA8IHNvdWd1dXNlblwgOwor6KiA5LydIDwga290b2R6dXRlXCA7Civlj4jlrrbmnaUgPCBtYXRhZ2VyYWlcIDsKK+eBq+afsSA8IGhpYmFzaGlyYVwgOwor5LiA5aa75aSa5aSrIDwgaXNzYWl0YWZ1XCA7CivplqXml48gPCBiYXRzdXpva3VcIDsKK+ato+abuOazlSA8IHNlaXNob2hvdVwgOwor54us6Ieq5oCnIDwgZG9rdWppc2VpXCA7CivlvIHosqHlpKkgPCBiZW56YWl0ZW5cIDsKK+WLpOWLmeWFiCA8IGtpbm11c2FraVwgOwor6KeS5Y+JIDwgdHN1bm9tYXRhXCA7CivmjIHkuYXmiKYgPCBqaWt5dXVzZW5cIDsKK+mHjeimgeimliA8IGp1dXlvdXNoaVwgOwor56m65qKF6ZuoIDwga2FyYXRzdXl1XCA7Civmt7fmiJDlm6MgPCBrb25zZWlkYW5cIDsKK+S4jeato+ihjOeCuiA8IGZ1c2Vpa291aVwgOwor5oqc6YyoIDwgYmF0c3VieW91XCA7Civngavlj6Plo4EgPCBrYWtvdWhla2lcIDsKK+aZgumWk+ihqCA8IGppa2FuaHlvdVwgOwor56CC5Yip6YGTIDwgamFyaW1pY2hpXCA7CivkvJroqIjlrpggPCBrYWlrZWlrYW5cIDsKK+izpOalreWppiA8IHNlbmd5b3VmdVwgOwor57WM6aiT6ICFIDwga2Vpa2Vuc2hhXCA7Civpn5Plm73oqp4gPCBoYW5rb2t1Z29cIDsKK+aVmeadkOiyuyA8IGt5b3V6YWloaVwgOwor5Zu956uLIDwga29rdXJpdHN1XCA7Civli53liKnogIUgPCBzaG91cmlzaGFcIDsKK+a9nOS8j+acnyA8IHNlbnB1a3VraVwgOwor5aSn5Zuj5YaGIDwgZGFpZGFuJydlblwgOwor5Y2I5YmN5qeYIDwgZ296ZW5zYW1hXCA7Civmtbfmva7pn7MgPCBrYWljaG91b25cIDsKK+ato+eKr+iAhSA8IHNlaWhhbnNoYVwgOwor5Y+v5Zyn5oCnIDwga2FhdHN1c2VpXCA7CivoiLnlpKflt6UgPCBmdW5hZGFpa3VcIDsKK+Wcn+WcsOafhCA8IHRvY2hpZ2FyYVwgOwor55m76Ii356S8IDwgdG91Z2VucmVpXCA7Civmv4DnqoEgPCBnZWtpdG90c3VcIDsKK+aUv+W6nOetiyA8IHNlaWZ1c3VqaVwgOwor5rS75oCn5YmkIDwga2Fzc2VpemFpXCA7Civlj43kvZPliLYgPCBoYW50YWlzZWlcIDsKK+iXu+iPjOmhniA8IHNvdWtpbnJ1aVwgOwor5ruR55+z57KJIDwga2Fzc2VraWtvXCA7Civnt6nooZ3lmaggPCBrYW5zaG91a2lcIDsKK+mzqee+veiJsiA8IGhhdG9iYWlyb1wgOwor6aGV5b6u6Y+hIDwga2VuYmlreW91XCA7CivlkI3lupfooZcgPCBtZWl0ZW5nYWlcIDsKK+WIqeS8keiJsiA8IHJpa3l1dWlyb1wgOwor5Zu95LqL54qvIDwga29rdWppaGFuXCA7CivploDmnb4gPCBrYWRvbWF0c3VcIDsKK+a3t+aIkOWTgSA8IGtvbnNlaWhpblwgOwor5YiG6YWN6ICFIDwgYnVucGFpc2hhXCA7CivljYrpgI/mmI4gPCBoYW50b3VtZWlcIDsKK+WIhuawtOe3miA8IGJ1bnN1aXNlblwgOwor6YGK5oiv55qEIDwgeXV1Z2l0ZWtpXCA7Civov5HoppbnnLwgPCBraW5zaGlnYW5cIDsKK+S8muioiOWjqyA8IGthaWtlaXNoaVwgOwor5oqc6YGTIDwgbnVrZW1pY2hpXCA7CivliJ3lubTlhbUgPCBzaG9uZW5oZWlcIDsKK+WQjOW5tOi8qSA8IGRvdW5lbnBhaVwgOwor54+N54Sh6aGeIDwgY2hpbm11cnVpXCA7Civnrp3lj6Pku6QgPCBrYW5rb3VyZWlcIDsKK+WQiOazleaApyA8IGdvdWhvdXNlaVwgOwor57eP6aCY5LqLIDwgc291cnlvdWppXCA7Civlt57mlL/lupwgPCBzaHV1c2VpZnVcIDsKK+WVhuWLmeWumCA8IHNob3VtdWthblwgOwor6ZW35pyIIDwgbmFnYXRzdWtpXCA7Civlv5zmjqXplpMgPCBvdXNldHN1bWFcIDsKK+ihgOiCiSA8IGtldHN1bmlrdVwgOwor5Y+C5Lya6ICFIDwgc2Fua2Fpc2hhXCA7CivkupTkurrntYQgPCBnb25pbmd1bWlcIDsKK+m7hOawtOaZtiA8IGtpenVpc2hvdVwgOwor5YaF6KOP5qeYIDwgZGFpcmlzYW1hXCA7CivlpKfooYbljJYgPCB0YWlzaHV1a2FcIDsKK+mHjeWkp+aApyA8IGp1dWRhaXNlaVwgOwor5aSW5Zu96KqeIDwgZ2Fpa29rdWdvXCA7Civnj77nirbntq3mjIEgPCBnZW5qb3VpamlcIDsKK+WLouWKm+WutiA8IHNlaXJ5b2trYVwgOwor5aOw5qW95a62IDwgc2VpZ2FrdWthXCA7Civoo73pnbTmpa0gPCBzZWlrYWd5b3VcIDsKK+e0m+WksSA8IGZ1bnNoaXRzdVwgOwor566x6aas6LuKIDwgaGFrb2Jhc2hhXCA7Civlrq7lhoXnnIEgPCBrdW5haXNob3VcIDsKK+Wcn+eJoiA8IHRzdWNoaXJvdVwgOwor5LqL5qWt5omAIDwgamlneW91c2hvXCA7Civnqb/lsbHnlLIgPCBzZW56YW5rb3VcIDsKK+iHqOa4r+e3miA8IHJpbmtvdXNlblwgOwor5ZSv5ZCN6KuWIDwgeXVpbWVpcm9uXCA7CivnsbPmsrkgPCBrb21lYWJ1cmFcIDsKK+aUuemAoOi7iiA8IGthaXpvdXNoYVwgOwor6buE6YeR5Zu9IDwgb3Vnb25rb2t1XCA7CivoiovnvornvrkgPCBpbW95b3VrYW5cIDsKK+abtOeUn+WTgSA8IGtvdXNlaWhpblwgOwor5bqD5bCP6LevIDwgaGlyb2tvdWppXCA7CivnrYvpgZMgPCBzdWppbWljaGlcIDsKK+epuui/lOS6iyA8IHNvcmFoZW5qaVwgOwor56+z56+lIDwgaGljaGlyaWtpXCA7CivohZDmpI3lnJ8gPCBmdXNob2t1ZG9cIDsKK+asoeWWhOetliA8IGppemVuc2FrdVwgOwor576O6L6e6bqX5Y+lIDwgYmlqaXJlaWt1XCA7CivpgaDnnLzpj6EgPCB0b29tZWdhbmVcIDsKK+WJtemAoOiAhSA8IHNvdXpvdXNoYVwgOwor5LyR6Zu75pelIDwga3l1dWRlbmJpXCA7Civmnb/ploDlupcgPCBoYW5tb250ZW5cIDsKK+ihneeqgSA8IHNob3V0b3RzdVwgOwor5bCO5YWl6YOoIDwgZG91bnl1dWJ1XCA7CivnpoXllY/nrZQgPCB6ZW5tb25kb3VcIDsKK+ikh+aVsOWAiyA8IGZ1a3VzdXVrb1wgOwor55uy5a2m5qChIDwgbW91Z2Fra291XCA7CivnoJTkv67oqrIgPCBrZW5zaHV1a2FcIDsKK+W8vuaAp+S9kyA8IGRhbnNlaXRhaVwgOwor57Gz5quDIDwga29tZWJpdHN1XCA7CivnjK7lkYjmnKwgPCBrZW50ZWlib25cIDsKK+WwvumVt+m2jyA8IG9uYWdhZG9yaVwgOwor5pS+6YCB57ayIDwgaG91c291bW91XCA7CivpurvphZTolqwgPCBtYXN1aXlha3VcIDsKK+WNg+W5tOe0gCA8IHNlbicnbmVua2lcIDsKK+WDp+W4veW8gSA8IHNvdWJvdWJlblwgOwor5aSq6byT6IW5IDwgdGFpa29iYXJhXCA7CivkuI3oqIDkuI3oqp4gPCBmdWdlbmZ1Z29cIDsKK+WJjeijheegsiA8IHplbnNvdWhvdVwgOwor5YiG6YGj6ZqKIDwgYnVua2VudGFpXCA7CivlkLnlpY/ogIUgPCBzdWlzb3VzaGFcIDsKK+ernOmqqCA8IHJ5dXVrb3RzdVwgOwor5aW96KeS5a62IDwga291a2FrdWthXCA7CivntZDkuoYgPCBrZXRzdXJ5b3VcIDsKK+aCquWkqeWAmSA8IGFrdXRlbmtvdVwgOwor5o6o6YCy5qmfIDwgc3Vpc2hpbmtpXCA7CivmiZjpiaIgPCB0YWt1aGF0c3VcIDsKK+mJpOWNgeWtlyA8IGthZ2lqdXVqaVwgOwor5Lmx5rCX5rWBIDwgcmFua2lyeXV1XCA7Civlhrflh43liaQgPCByZWl0b3V6YWlcIDsKK+WIneWvvumdoiA8IHNob3RhaW1lblwgOwor6ZaP5bm0IDwgdXJ1dWRvc2hpXCA7Civnq40gPCBkZWthcml0dG9cIDsKK+acquWPjui8iSA8IG1pc2h1dXNhaVwgOwor5Zec5aW95ZOBIDwgc2hpa291aGluXCA7CivmgqrlpKnkvb8gPCBha3V0ZW5zaGlcIDsKK+W8t+WMluexsyA8IGt5b3VrYW1haVwgOwor5rC06Zu36ImHIDwgc3VpcmFpdGVpXCA7CivoprPmpZPkvJogPCBrYW5wdXVrYWlcIDsKK+S9k+mok+irhyA8IHRhaWtlbmRhblwgOwor54Sh5oSf6KaaIDwgbXVrYW5rYWt1XCA7CivnvqTpgJ/luqYgPCBndW5zb2t1ZG9cIDsKK+mbu+e3j+eglCA8IGRlbnNvdWtlblwgOwor5LiN56K65a6aIDwgZnVrYWt1dGVpXCA7Civnmb3nmb7lkIggPCBzaGlyYXl1cmlcIDsKK+iInui4iuWKhyA8IGJ1eW91Z2VraVwgOwor54Gr5Y+j5LiYIDwga2Frb3VreXV1XCA7CivkuI3mraPnorogPCBmdXNlaWtha3VcIDsKK+evgOe0hCA8IHNldHN1eWFrdVwgOwor6Zm95a2Q57eaIDwgeW91c2hpc2VuXCA7CivkuIvpg6jmqZ/plqIgPCBrYWJ1a2lrYW5cIDsKK+WAi+S6uuiqpOW3riA8IGtvamluZ29zYVwgOwor5pmC6ZaT57WmIDwgamlrYW5reXV1XCA7CivliIbmsLTnlYwgPCBidW5zdWlrYWlcIDsKK+S5seWPjeWwhCA8IHJhbmhhbnNoYVwgOwor6Kej562U5qyEIDwga2FpdG91cmFuXCA7CivprZrpm7foiYcgPCBneW9yYWl0ZWlcIDsKK+WFrOacieWcsCA8IGtvdXl1dWNoaVwgOwor5qy6556e55qEIDwgZ2ltYW50ZWtpXCA7CivmmI7nnq3luqYgPCBtZWlyeW91ZG9cIDsKK+S8muioiOS/giA8IGthaWtlaWtlaVwgOwor6J+H6JuZIDwgaGlraWdhZXJ1XCA7CivovLjlhaXnqI4gPCB5dW55dXV6ZWlcIDsKK+icgOm7jSA8IG1vcm9rb3NoaVwgOwor5LiN5b+D5b6XIDwgZnVrb2tvcm9lXCA7Civkuozmpa3lnLAgPCBuaWd5b3VjaGlcIDsKK+WNmOWtkOirliA8IHRhbnNoaXJvblwgOwor6Ki85oug6YeRIDwgc2hvdWtva2luXCA7CivnlJ/mvJTlpY8gPCBuYW1hZW5zb3VcIDsKK+W+ruWIhuWtpiA8IGJpYnVuZ2FrdVwgOwor5bCC5b6T6ICFIDwgc2VuanV1c2hhXCA7Civku5nlj7Dkvq8gPCBzZW5kYWlrb3VcIDsKK+ihgOecvCA8IGNoaW1hbmFrb1wgOwor5664566xIDwgaGFzaGliYWtvXCA7CivopIflvI8gPCBmdWt1c2hpa2lcIDsKK+WFhOW8n+aEmyA8IGt5b3VkYWlhaVwgOwor5LiH6I+v6Y+hIDwgbWFuZ2VreW91XCA7Civopb/lgbQgPCBuaXNoaWdhd2FcIDsKK+aQjeWksSA8IHNvbnNoaXRzdVwgOwor5Lq66ZaT5YOPIDwgbmluZ2Vuem91XCA7Civlm57luLDnmoQgPCBrYWlraXRla2lcIDsKK+W4guawkeeojiA8IHNoaW1pbnplaVwgOwor5a+M5aOr6aGNIDwgZnVqaWJpdGFpXCA7Civpl5blhaUgPCBjaGluJydueXV1XCA7CivonILps6UgPCBoYWNoaWRvcmlcIDsKK+mWi+elqOaJgCA8IGthaWh5b3Vqb1wgOwor5L2T6IKy6aSoIDwgdGFpaWt1a2FuXCA7CivngrrkvZMgPCB0ZWl0YXJha3VcIDsKK+Wkieiqv+azoiA8IGhlbmNob3VoYVwgOwor5ZCM55uf6LuNIDwgZG91bWVpZ3VuXCA7CivlkYroqLTkurogPCBrb2t1c29uaW5cIDsKK+WtpuWjq+mZoiA8IGdha3VzaGlpblwgOwor5YCr55CG55qEIDwgcmlucml0ZWtpXCA7CivngrnpvLvolqwgPCB0ZW5iaXlha3VcIDsKK+aKleabuOashCA8IHRvdXNob3JhblwgOwor6Ki06Kif5rOVIDwgc29zaG91aG91XCA7Civmurbos6ogPCB5b3VzaGl0c3VcIDsKK+Wbm+WNiuWIhiA8IHNoaWhhbmJ1blwgOwor5ZC46Z+z5p2QIDwga3l1dW9uemFpXCA7CivliJ3kvZPpqJMgPCBzaG90YWlrZW5cIDsKK+i8uOWFpeebpCA8IHl1bnl1dWJhblwgOwor5LiN55+l54GrIDwgc2hpcmFudWhpXCA7CivljbXntLDog54gPCByYW5zYWlib3VcIDsKK+eBsOWcnyA8IGhhaXRzdWNoaVwgOwor5LqM5qW15YyWIDwgbmlreW9rdWthXCA7CivljZfkuqzpjKAgPCBuYW5raW5qb3VcIDsKK+mzqeaZguioiCA8IGhhdG9kb2tlaVwgOwor5ZO65Lmz55O2IDwgaG9ueXV1YmluXCA7Civopb/mtIvpoqggPCBzZWl5b3VmdXVcIDsKK+aXouijveacjSA8IGtpc2VpZnVrdVwgOwor6Ieq55Sx5oSP5b+XIDwgaml5dXVpc2hpXCA7Civph47lpJbliocgPCB5YWdhaWdla2lcIDsKK+aZrumBjeeahCA8IGZ1aGVudGVraVwgOwor5LqL5qWt5ZujIDwgamlneW91ZGFuXCA7CivlsI/lvbnkurogPCBrb3lha3VuaW5cIDsKK+mzpeWqkuiKsSA8IGNob3ViYWlrYVwgOwor6Ieq5rK76aCYIDwgamljaGlyeW91XCA7Civoo4/miYkgPCB1cmF0b2JpcmFcIDsKK+egtOWjiueahCA8IGhha2FpdGVraVwgOwor5pCs5Ye6IDwgaGFuc2h1dHN1XCA7Civnqq7mjqrlpKcgPCBreXV1c29kYWlcIDsKK+mBlOejqOiIuSA8IGRhcnVtYXNlblwgOwor5YaF5Zyo5oCnIDwgbmFpemFpc2VpXCA7CivlsI/ojbfniakgPCBrb25pbW90c3VcIDsKK+aXpeezu+S6uiA8IG5pa2tlaWppblwgOwor57K+56We56eRIDwgc2Vpc2hpbmthXCA7CivkuIDlkIjnm64gPCBpY2hpZ291bWVcIDsKK+S9j+Wxhei3oSA8IGp1dWt5b2F0b1wgOwor5YaN5oqX5byBIDwgc2Fpa291YmVuXCA7CivovrLkvZzmpa0gPCBub3VzYWd5b3VcIDsKK+ieouWFieeHiCA8IGtlaWtvdXRvdVwgOwor5LuY5bm06KGoIDwgZnVuZW5weW91XCA7CivmraPoqqTooaggPCBzZWlnb2h5b3VcIDsKK+ijj+aDhSA8IHVyYW5hc2FrZVwgOwor5Zub6Lyq6LuKIDwgeW9ucmluc2hhXCA7Civon4fogqEgPCBrYWVydW1hdGFcIDsKK+S4iemHjeWljyA8IHNhbmp1dXNvdVwgOwor5L+d6Ki85pu4IDwgaG9zaG91c2hvXCA7CivlkKblrprnmoQgPCBoaXRlaXRla2lcIDsKK+S4jemAo+e2miA8IGZ1cmVuem9rdVwgOwor5q2m5pat55qEIDwgYnVkYW50ZWtpXCA7Civlh7rnqYLmnJ8gPCBzaHVzc3Vpa2lcIDsKK+S4iuWNiuacnyA8IGthbWloYW5raVwgOwor5Y2Y5a2Q6JGJIDwgdGFuc2hpeW91XCA7Civlvq7liIbllYYgPCBiaWJ1bnNob3VcIDsKK+ihgOeFmSA8IGNoaWtlbXVyaVwgOwor576p5YWE5byfIDwgZ2lreW91ZGFpXCA7CivopIfntKDmlbAgPCBmdWt1c29zdXVcIDsKK+i7ouagoeeUnyA8IHRlbmtvdXNlaVwgOwor5pi85aSc5bivIDwgY2h1dXlhb2JpXCA7Civkuovku7booaggPCBqaWtlbmh5b3VcIDsKK+W8t+ehrOa0viA8IGt5b3Vrb3VoYVwgOwor5o6S5rCX6YePIDwgaGFpa2lyeW91XCA7CivkuozmrKHoqJjmhrYgPCBuaWppa2lva3VcIDsKK+Wls+aWh+WtlyA8IG9uJyduYW1vamlcIDsKK+eEoeaJgOWxniA8IG11c2hvem9rdVwgOwor5ZGo5rOi5pWwIDwgc2h1dWhhc3V1XCA7CivnjJvnpr3poZ4gPCBtb3VraW5ydWlcIDsKK+eUn+aFi+ezuyA8IHNlaXRhaWtlaVwgOwor5ruR6JC9IDwga2F0c3VyYWt1XCA7CivmjIHniakgPCBtb2NoaW1vbm9cIDsKK+aVo+aWh+ipqSA8IHNhbmJ1bnNoaVwgOwor5qC95Z+556iuIDwgc2FpYmFpc2h1XCA7Civljp/okZfogIUgPCBnZW5jaG9zaGFcIDsKK+mbu+ipseaWmSA8IGRlbndhcnlvdVwgOwor5oqA6IO96LOeIDwgZ2lub3VzaG91XCA7Civmlpnph5HmiYAgPCByeW91a2luam9cIDsKK+aUr+mFjeiAhSA8IHNoaWhhaXNoYVwgOwor5rSX5r+v5bGLIDwgc2VudGFrdXlhXCA7CivlgbTov5HogIUgPCBzb2traW5zaGFcIDsKK+mWgOWPoyA8IGthZG9ndWNoaVwgOwor5a6f56S+5LyaIDwgamlzc2hha2FpXCA7CivlvqHpgKPntaEgPCBnb3JlbnJha3VcIDsKK+mmmeW3neecjCA8IGthZ2F3YWtlblwgOwor54K55ru05ZmoIDwgdGVudGVraWtpXCA7CivkuojlrprooaggPCB5b3RlaWh5b3VcIDsKK+W8geitt+aWmSA8IGJlbmdvcnlvdVwgOwor5Li76KaB6aeFIDwgc2h1eW91ZWtpXCA7CivljLrkvJrorbDlk6EgPCBrdWthaWdpaW5cIDsKK+aMn+auuiA8IGt5b3VzYXRzdVwgOwor5a++5b+c562WIDwgdGFpb3VzYWt1XCA7CivovLjlhaXmuK8gPCB5dW55dXVrb3VcIDsKK+WQjOW/l+S8miA8IGRvdXNoaWthaVwgOwor6L+O5pKD5qmfIDwgZ2VpZ2VraWtpXCA7CivkurrlnLDlkI0gPCBqaW5jaGltZWlcIDsKK+S/nemZuuaWmSA8IGhva2VucnlvdVwgOwor5aSn5ZKM6IqLIDwgeWFtYXRvaW1vXCA7Civpq5jlhKrlhYggPCBrb3V5dXVzZW5cIDsKK+aUvumAgeazlSA8IGhvdXNvdWhvdVwgOwor56S65Yqb5ZuzIDwgamlyeW9rdXp1XCA7Civlj6TkuovoqJjkvJ0gPCBrb2ppa2lkZW5cIDsKK+mbquWls+mDjiA8IHl1a2lqb3JvdVwgOwor6KGo5pu4IDwgb21vdGVnYWtpXCA7Civpm7bntLDovrIgPCByZWlzYWlub3VcIDsKK+eziuS7oyA8IG5vcmlzaGlyb1wgOwor55yf5riF5rC0IDwgbWFzaGltaXp1XCA7CivliqnlpKrliIAgPCBzdWtlZGFjaGlcIDsKK+WFi+W3seW/gyA8IGtva2tpc2hpblwgOwor6Kit6KiI6ICFIDwgc2Vra2Vpc2hhXCA7CivnhKHnpZ7oq5YgPCBtdXNoaW5yb25cIDsKK+eEoeeCuueEoeetliA8IG11aW11c2FrdVwgOwor5pyJ6KKL6aGeIDwgeXV1dGFpcnVpXCA7CivkuIDmrrrpgqMgPCBpc3NldHN1bmFcIDsKK+W/g+eQhuaIpiA8IHNoaW5yaXNlblwgOwor5b6h5q205q20IDwgb3Jla2lyZWtpXCA7CivkuI3lubPnrYkgPCBmdWJ5b3Vkb3VcIDsKK+WIqeWwv+WJpCA8IHJpbnlvdXphaVwgOwor56m06ZqZIDwga2V0c3VnZWtpXCA7CivniafmrYznmoQgPCBib2trYXRla2lcIDsKK+a8uOi/kee3miA8IHplbmtpbnNlblwgOwor5a2Q5a6J6LKdIDwga295YXN1a2FpXCA7Civml4Xml6XoqJggPCB0YWJpbmlra2lcIDsKK+WjsuS4iumHkSA8IHVyaWFnZWtpblwgOwor5Y+X57Wm6ICFIDwganVreXV1c2hhXCA7CivmmI7lubTluqYgPCBteW91bmVuZG9cIDsKK+S6jOaemuiIjCA8IG5pbWFpaml0YVwgOwor5LiJ6YeN5YagIDwgc2FuanV1a2FuXCA7Civoqpjpm7vlrZAgPCB5dXVkZW5zaGlcIDsKK+mMr+mbkSA8IHNha3V6YXRzdVwgOwor5Zyn5a+GIDwgYXRzdW1pdHN1XCA7CivplqLkv4LoqZ4gPCBrYW5rZWlzaGlcIDsKK+e0oemMmOW9oiA8IGJvdXN1aWtlaVwgOwor5aWJ5bmj5L2/IDwgaG91aGVpc2hpXCA7CivluILmsJHms5UgPCBzaGltaW5ob3VcIDsKK+acgOaVrOekvCA8IHNhaWtlaXJlaVwgOwor5qS0IDwgdG9kb21hdHN1XCA7Civoi6blrabnlJ8gPCBrdWdha3VzZWlcIDsKK+Wwj+eUn+aEj+awlyA8IGtvbmFtYWlraVwgOwor5b6X5oSP5YWIIDwgdG9rdWlzYWtpXCA7Civpm6jku5XluqYgPCBhbWFqaXRha3VcIDsKK+WRqOazouW4ryA8IHNodXVoYXRhaVwgOwor5rys54mpIDwgdHN1a2Vtb25vXCA7CivnrqHliLblrpggPCBrYW5zZWlrYW5cIDsKK+icnOixhiA8IG1pdHN1bWFtZVwgOwor5ryC552AIDwgaHlvdWNoYWt1XCA7Civnh4PmlpnosrsgPCBuZW5yeW91aGlcIDsKK+mHj+iomOWPtyA8IHJ5b3VraWdvdVwgOwor55m65YWJ5L2TIDwgaGFra291dGFpXCA7CivljYrlhoblvaIgPCBoYW4nJ2Vua2VpXCA7CivmsZrmn5PpmaTljrsgPCBvc2Vuam9reW9cIDsKK+aPkOWHuiA8IHRlaXNodXRzdVwgOwor5YaG6Jmr6aGeIDwgZW5jaHV1cnVpXCA7CivmibbppIrnvqnli5kgPCBmdXlvdWdpbXVcIDsKK+aHuOaDs+aWhyA8IGtlc291YnVtaVwgOwor5qSc5r2u5ZmoIDwga2VuY2hvdWtpXCA7Civlp4nlprnnt6ggPCBzaGltYWloZW5cIDsKK+ihgOezluWApCA8IGtldHRvdWNoaVwgOwor5rex6Z20IDwgZnVrYWd1dHN1XCA7CivnhKHph43ph48gPCBtdWp1dXJ5b3VcIDsKK+mbu+ipseW4syA8IGRlbndhY2hvdVwgOwor5Y2I5YmN5LitIDwgZ296ZW5jaHV1XCA7Civllrbmpa3miYAgPCBlaWd5b3VzaG9cIDsKK+evgOassiA8IHNldHN1eW9rdVwgOwor57Gz5biC5aC0IDwgYmVpaWNoaWJhXCA7CivkuI3li5Xlv4MgPCBmdWRvdXNoaW5cIDsKK+iii+W4ryA8IGZ1a3Vyb29iaVwgOwor5bCP5Yik5b2iIDwga29iYW5nYXRhXCA7CivnhafmmI7lmaggPCBzaG91bWVpa2lcIDsKK+W+ueeUsuW8viA8IHRla2tvdWRhblwgOwor5a6u5YaF5bqBIDwga3VuYWljaG91XCA7Civmk6zlj6TkuLvnvqkgPCBnaWtvc2h1Z2lcIDsKK+W4guawkeaoqSA8IHNoaW1pbmtlblwgOwor56mA6aOfIDwga29rdXNob2t1XCA7CivljYroiLfnoLIgPCBoYW5nZW5ob3VcIDsKK+aoqeWogeetiyA8IGtlbicnaXN1amlcIDsKK+Wkiembu+aJgCA8IGhlbmRlbnNob1wgOwor56mN6ZuqIDwgc2VraXNldHN1XCA7Civpm7vop6PmtrIgPCBkZW5rYWlla2lcIDsKK+mbsuS4iuS6uiA8IHVuam91Yml0b1wgOwor56+A5qaRIDwgZnVzaGlrdXJlXCA7CivkuIDlkajlubQgPCBpc3NodXVuZW5cIDsKK+ihgOaXjyA8IGtldHN1em9rdVwgOwor566h5Yi25aGUIDwga2Fuc2VpdG91XCA7Civoj6/ljrPntYwgPCBrZWdvbmt5b3VcIDsKK+WvvuaDheWgsSA8IHRhaWpvdWhvdVwgOwor5qC85aSJ5YyWIDwga2FrdWhlbmthXCA7CivmlZnogrLlrrYgPCBreW91aWt1a2FcIDsKK+WuieaBr+mmmSA8IGFuc29rdWtvdVwgOwor55+z6bm45rC0IDwgc2Vra2Vuc3VpXCA7CivkuI3li4nlvLcgPCBmdWJlbmt5b3VcIDsKK+WhqeWMlueJqSA8IGVua2FidXRzdVwgOwor5Lmd5a+45LqU5YiGIDwga3VzdW5nb2J1XCA7CivkuKHnlKjmqZ8gPCByeW91eW91a2lcIDsKK+W9k+S4lumiqCA8IHRvdXNlaWZ1dVwgOwor562W55WlIDwgc2FrdXJ5YWt1XCA7CivmoLzlpKnkupUgPCBnb3V0ZW5qb3VcIDsKK+S4reiAleapnyA8IGNodXVrb3VraVwgOwor5LiN6YGp5qC8IDwgZnV0ZWtrYWt1XCA7CivpgaDlv4PliIYgPCBlbnNoaW5idW5cIDsKK+mNvOihkyA8IHNoaW5qdXRzdVwgOwor5pmu6YCa5rOVIDwgZnV0c3V1aG91XCA7CivlqpLmn5PliaQgPCBiYWlzZW56YWlcIDsKK+egtOijgumfsyA8IGhhcmV0c3VvblwgOwor5Li76Kaz6KuWIDwgc2h1a2Fucm9uXCA7CivkuoznlarkvZwgPCBuaWJhbnNha3VcIDsKK+eUn+WRvee3miA8IHNlaW1laXNlblwgOwor56m65a++56m6IDwga3V1dGFpa3V1XCA7CivnjJvlkLnpm6ogPCBtb3VmdWJ1a2lcIDsKK+aLk+auliA8IHRha3VzaG9rdVwgOwor6auY5bCE56CyIDwga291c2hhaG91XCA7CivkuIDmranpioAgPCBpY2hpYnVnaW5cIDsKK+WliOiJr+a8rCA8IG5hcmFkenVrZVwgOwor5b2i6LGh5YyWIDwga2Vpc2hvdWthXCA7CivlhoXlnLDkurogPCBuYWljaGlqaW5cIDsKK+efs+WNl+iKsSA8IHNoYWt1bmFnZVwgOwor5YKA5YSh5birIDwga2FpcmFpc2hpXCA7CivkuIDmranph5EgPCBpY2hpYnVraW5cIDsKK+Wls+mDjuicmOibmyA8IGpvcm91Z3Vtb1wgOwor55ep5oiR5oWiIDwgeWFzZWdhbWFuXCA7Civom5not7MgPCBrYWVydXRvYmlcIDsKK+aCquWboOe4gSA8IGFrdWluJyduZW5cIDsKK+S4jeecoOeXhyA8IGZ1bWluc2hvdVwgOwor6Zu76Kej5qe9IDwgZGVua2Fpc291XCA7Civms5Xoj6/lrpcgPCBob2trZXNodXVcIDsKK+S4gOeerOmWkyA8IGlzc2h1bmthblwgOwor5q2j5LiJ5L2NIDwgc2hvdXNhbm1pXCA7CivlvL7pgZPlvL4gPCBkYW5kb3VkYW5cIDsKK+a3t+WQiOaelyA8IGtvbmdvdXJpblwgOwor5rC05aKo55S7IDwgc3VpYm9rdWdhXCA7CivkuqTmmJPkvJogPCBrb3Vla2lrYWlcIDsKK+mrmOaliuWtkCA8IHRha2F5b3VqaVwgOwor5qip5aiB55qEIDwga2VuJydpdGVraVwgOwor56S+55So6LuKIDwgc2hheW91c2hhXCA7CivliIbmsLTltrogPCBidW5zdWlyZWlcIDsKK+WtkOS+m+eUqCA8IGtvZG9tb3lvdVwgOwor6Kaq5a2d6KGMIDwgb3lha291a291XCA7CivnmbrlsITnrZIgPCBoYXNzaGF0b3VcIDsKK+aLvuS4h+WGhiA8IGp1dW1hbicnZW5cIDsKK+WLpOeah+WutiA8IGtpbicnbm91a2FcIDsKK+S5s+WMluWJpCA8IG55dXVrYXphaVwgOwor6L+R5Zyw54K5IDwga2luY2hpdGVuXCA7CivlnKflipsgPCBhdHN1cnlva3VcIDsKK+eEoeertuS6iSA8IG11a3lvdXNvdVwgOwor5Lqk6Zqb5rOVIDwga291c2FpaG91XCA7Civlj4LkuI7ogIUgPCBzYW4nJ3lvc2hhXCA7Civnq7nnrpIgPCB0YWtlYm91a2lcIDsKK+mjsuaWmeawtCA8IGlucnlvdXN1aVwgOwor6by76Z2iIDwgaGFuYWR6dXJhXCA7Civnp4vml6XlkowgPCBha2liaXlvcmlcIDsKK+WMuuW9ueaJgCA8IGt1eWFrdXNob1wgOwor56uL5b+X5LydIDwgcmlzc2hpZGVuXCA7CivlpKnnp6Tmo5IgPCB0ZW5iaW5ib3VcIDsKK+Wkieiqv+WZqCA8IGhlbmNob3VraVwgOwor6Zai5L+C6ICFIDwga2Fua2Vpc2hhXCA7CivkuI3pmo/mhI/nrYsgPCBmdXp1aWlraW5cIDsKK+Wkp+aIkOWKnyA8IGRhaXNlaWtvdVwgOwor5LqM5Lq656ewIDwgbmluaW5zaG91XCA7Civlgbblg4/oppYgPCBndXV6b3VzaGlcIDsKK+WBtui5hOmhniA8IGd1dXRlaXJ1aVwgOwor5p2l6Kiq6ICFIDwgcmFpaG91c2hhXCA7CivpqJLkubHnvaogPCBzb3VyYW56YWlcIDsKK+WujOaIkOWTgSA8IGthbnNlaWhpblwgOwor56e76KGM5pyf6ZaTIDwgaWtvdWtpa2FuXCA7Civoopblj6MgPCBzb2RlZ3VjaGlcIDsKK+WJtemAoOaApyA8IHNvdXpvdXNlaVwgOwor5o275Ye6IDwgbmVuc2h1dHN1XCA7Civlj4joq4vosqAgPCBtYXRhdWtlb2lcIDsKK+mHkemWo+WvuiA8IGtpbmtha3VqaVwgOwor6KqY6Zu75L2TIDwgeXV1ZGVudGFpXCA7CivljZfkuqznsbMgPCBuYW5raW5tYWlcIDsKK+eEoeelnue1jCA8IG11c2hpbmtlaVwgOwor6YqA5Lqk5o+bIDwgZ2lua291a2FuXCA7CivltZkgPCB5YW1hc2hpbmFcIDsKK+ijveWhqealrSA8IHNlaWVuZ3lvdVwgOwor5pWZ5Lya5ZOhIDwga3lvdWthaWluXCA7CivllZPon4QgPCBrZWljaGl0c3VcIDsKK+aQreS5l+WIuCA8IHRvdWpvdWtlblwgOwor6YGO56Gr6YW4IDwga2FyeXV1c2FuXCA7CivpgYvlkb3nmoQgPCB1bm1laXRla2lcIDsKK+ims+ahnOS8miA8IGthbicnb3VrYWlcIDsKK+a2membqCA8IG5hbWlkYWFtZVwgOwor54Sh56S86ICFIDwgYnVyZWltb25vXCA7Civmp4vmlofms5UgPCBrb3VidW5wb3VcIDsKK+evpOWunyA8IHRva3VqaXRzdVwgOwor6Y6W57O4IDwga3VzYXJpaXRvXCA7Civnpr/pt7IgPCBoYWdld2FzaGlcIDsKK+ihgOWwvyA8IGtldHN1bnlvdVwgOwor5o6l6L+R5oimIDwgc2Vra2luc2VuXCA7CivnhKHms5XogIUgPCBtdWhvdW1vbm9cIDsKK+aHsue9sCA8IGNob3ViYXRzdVwgOwor5LiN6YGp5b2TIDwgZnV0ZWtpdG91XCA7CivnhKHmsLTpjYsgPCBtdXN1aW5hYmVcIDsKK+aciOe1puaXpSA8IGdla2t5dXViaVwgOwor5Zu95YqbIDwga29rdXJ5b2t1XCA7CivmlqXlgJnpmoogPCBzZWtrb3V0YWlcIDsKK+WJtealreiyuyA8IHNvdWd5b3VoaVwgOwor5Zu95YilIDwga3VuaWJldHN1XCA7Civph43opoHmgKcgPCBqdXV5b3VzZWlcIDsKK+e3j+WjsuS4iiA8IHNvdXVyaWFnZVwgOwor5Y2B5YaG546JIDwganV1ZW5kYW1hXCA7Civmir3mlpcgPCBoaWtpZGFzaGlcIDsKK+WAq+eQhuWtpiA8IHJpbnJpZ2FrdVwgOwor5LiA6YCx6ZaTIDwgaXNzaHV1a2FuXCA7CivnpL7lhoXloLEgPCBzaGFuYWlob3VcIDsKK+S9j+WuheiyuyA8IGp1dXRha3VoaVwgOwor5bGI5Zyw5oCnIDwga3V0Y2hpc2VpXCA7Civku5jliqDkvqHlgKQgPCBmdWtha2FjaGlcIDsKK+evieWxsSA8IHRzdWtpeWFtYVwgOwor5Zu95pyJ5YyWIDwga29rdXl1dWthXCA7CivpgJrpoqjmqZ8gPCB0c3V1ZnV1a2lcIDsKK+WutuWxi+aVtyA8IGlleWFzaGlraVwgOwor5bGx5qSS6a2aIDwgc2Fuc2hvdXVvXCA7Civlhazmlofmm7ggPCBrb3VidW5zaG9cIDsKK+axuuWumuirliA8IGtldHRlaXJvblwgOwor5L+d6Ki85Lq6IDwgaG9zaG91bmluXCA7Civmsr/mtbflt54gPCBlbmthaXNodXVcIDsKK+S4jemBk+W+syA8IGZ1ZG91dG9rdVwgOwor5L6/5LmX6ICFIDwgYmluam91c2hhXCA7CivkuIDljYfnk7YgPCBpc3Nob3ViaW5cIDsKK+epuuiFueaZgiA8IGt1dWZ1a3VqaVwgOwor5YmN6KGb5oimIDwgemVuJydlaXNlblwgOwor6KKW5LuYIDwgc29kZXRzdWtlXCA7CivmhJ/mg4Xoq5YgPCBrYW5qb3Vyb25cIDsKK+aUr+mFjeaoqSA8IHNoaWhhaWtlblwgOwor5Zuj5a2Q6by7IDwgZGFuZ29iYW5hXCA7Civlhajoq5bngrkgPCB6ZW5yb250ZW5cIDsKK+aJvOauuiA8IHlha3VzYXRzdVwgOwor6YGT5YyW6ICFIDwgZG91a2Vtb25vXCA7Civopb/mtIvntJkgPCBzZWl5b3VzaGlcIDsKK+abuOiomOmVtyA8IHNob2tpY2hvdVwgOwor5Zyf5aOM5rGa5p+TIDwgZG9qb3Vvc2VuXCA7CivooYDloZcgPCBjaGltaWRvcm9cIDsKK+W/jOiogOiRiSA8IGltaWtvdG9iYVwgOwor6Zuj5LqL5qWtIDwgbmFuamlneW91XCA7Civku5jluK/nmoQgPCBmdXRhaXRla2lcIDsKK+mrmOmjm+i7iiA8IHRha2FiaXNoYVwgOwor6Zu76Kmx5LitIDwgZGVud2FjaHV1XCA7Civpu4TpgZPluK8gPCBrb3Vkb3V0YWlcIDsKK+mrmOagoeeUnyA8IGtvdWtvdXNlaVwgOwor6bq56bu0IDwga291amlrYWJpXCA7Civmtpnph5EgPCBuYW1pZGFraW5cIDsKK+iCuuawtOiFqyA8IGhhaXN1aXNodVwgOwor5ZWG55So6KqeIDwgc2hvdXlvdWdvXCA7CivnlaXoqJjms5UgPCByeWFra2lob3VcIDsKK+ihgOWcpyA8IGtldHN1YXRzdVwgOwor5r2u5aKDIDwgc2hpb3pha2FpXCA7CivokaHokITmo5ogPCBidWRvdWRhbmFcIDsKK+WlieWFrOS6uiA8IGhvdWtvdW5pblwgOwor56if6LOqIDwgaGluc2hpdHN1XCA7Civmub/nlLAgPCBzaGl0c3VkZW5cIDsKK+S7j+azleWDpyA8IGJ1cHBvdXNvdVwgOwor6buS6auqIDwga29rdWhhdHN1XCA7CivkvZPogrLnpa0gPCB0YWlpa3VzYWlcIDsKK+aZrumAmuW8viA8IGZ1dHN1dWRhblwgOwor5oim5Lit5rS+IDwgc2VuY2h1dWhhXCA7Civpq5jlsbHluK8gPCBrb3V6YW50YWlcIDsKK+aAp+eKr+e9qiA8IHNlaWhhbnphaVwgOwor5rCR6Iq45ZOBIDwgbWluZ2VpaGluXCA7CivopqrkvJrnpL4gPCBveWFnYWlzaGFcIDsKK+aJk+a2iCA8IHVjaGlrZXNoaVwgOwor5Y+C6LOA5bizIDwgc2FuZ2FjaG91XCA7CivkuInovKrou4ogPCBzYW5yaW5zaGFcIDsKK+eUo+enkeWtpiA8IHNhbmthZ2FrdVwgOwor6LuK5YaF54GvIDwgc2hhbmFpdG91XCA7CivljLvli5nlrqQgPCBpbXVzaGl0c3VcIDsKK+awuOe2muaApyA8IGVpem9rdXNlaVwgOwor6KGo5YG0IDwgb21vdGVnYXdhXCA7CivmjqLmpJzpmoogPCB0YW5rZW50YWlcIDsKK+Wun+WLmeWutiA8IGppdHN1bXVrYVwgOwor5b+F6aCI5qC8IDwgaGlzc3VrYWt1XCA7CivlpKflkozmrYwgPCB5YW1hdG91dGFcIDsKK+S4uOWkquadkCA8IG1hcnV0YXphaVwgOwor56CU5L+u5omAIDwga2Vuc2h1dWpvXCA7CivlhazmmI7lhZogPCBrb3VtZWl0b3VcIDsKK+e1teepuuiogCA8IGVzb3JhZ290b1wgOwor576F6Yed55ukIDwgcmFzaGluYmFuXCA7CivkuIrpmaLorbDlk6EgPCBqb3VpbmdpaW5cIDsKK+WZqOmHj+S6uiA8IGtpcnlvdWppblwgOwor5Zu96Zqb6KqeIDwga29rdXNhaWdvXCA7Civlm5vovrrlvaIgPCBzaGloZW5rZWlcIDsKK+eZuuS9nOeahCA8IGhvc3NhdGVraVwgOwor6IG+5a2m5qChIDwgcm91Z2Fra291XCA7CivpkJjmkp4gPCBrYW5ldHN1a2lcIDsKK+aOg+a1t+iJhyA8IHNvdWthaXRlaVwgOwor5Y+C6ICD5pu4IDwgc2Fua291c2hvXCA7CivljJbnsqflk4EgPCBrZXNob3VoaW5cIDsKK+WcsOW5s+mdoiA8IGNoaWhlaW1lblwgOwor6KGM5YiXIDwgZ3lvdXJldHN1XCA7CivkvY7og73ogIUgPCB0ZWlub3VzaGFcIDsKK+WFiOmok+irliA8IHNlbmtlbnJvblwgOwor6ZuG6Iux56S+IDwgc2h1dWVpc2hhXCA7CivnlKjmsLTmsaAgPCB5b3VzdWljaGlcIDsKK+WPl+mbo+WKhyA8IGp1bmFuZ2VraVwgOwor5YCJ5bqr5qWtIDwgc291a29neW91XCA7CivljYPlha3mnKwgPCBzZW5yb3Bwb25cIDsKK+i8uOWFpeWTgSA8IHl1bnl1dWhpblwgOwor5YyW57Kn5Y+wIDwga2VzaG91ZGFpXCA7CivloanliqDmuJsgPCBzaGlva2FnZW5cIDsKK+WomOWtkOi7jSA8IGpvdXNoaWd1blwgOwor6Ieq5rK755yBIDwgamljaGlzaG91XCA7CivlsL7plbfnjL8gPCBvbmFnYXphcnVcIDsKK+itpumYsuWboyA8IGtlaWJvdWRhblwgOwor5q2j6Kej6ICFIDwgc2Vpa2Fpc2hhXCA7CivpmZDluqbpoY0gPCBnZW5kb2dha3VcIDsKK+WGjea0l+ekvCA8IHNhaXNlbnJlaVwgOwor5aeJ5aa55qChIDwgc2hpbWFpa291XCA7CivmoLzpl5jmioAgPCBrYWt1dG91Z2lcIDsKK+mdkuaYpeacnyA8IHNlaXNodW5raVwgOwor6YCf6KiY6YyyIDwgc29ra2lyb2t1XCA7CivlhKrli53ppqwgPCB5dXVzaG91YmFcIDsKK+WHqSA8IGtvZ2FyYXNoaVwgOwor5rCX5YCZ5a2mIDwga2lrb3VnYWt1XCA7Civnl4XpmaLoiLkgPCBieW91aW5zZW5cIDsKK+WbveaWh+enkSA8IGtva3VidW5rYVwgOwor5ouF5b2T6ICFIDwgdGFudG91c2hhXCA7CivmnaXloLTogIUgPCByYWlqb3VzaGFcIDsKK+aJjeanjCA8IHNhaWR6dWNoaVwgOwor5o6S5rC05rqdIDwgaGFpc3Vpa291XCA7Civls7vkuIvliaQgPCBzaHVuZ2V6YWlcIDsKK+WkluWVhumDqCA8IGdhaXNob3VidVwgOwor5rm/5r2kIDwgc2hpdHN1anVuXCA7CivpvLvooZ0gPCBoYW5hdHN1a2lcIDsKK+ato+aWueW9oiA8IHNlaWhvdWtlaVwgOwor5riL57SZIDwgc2hpYnVnYW1pXCA7CivmnIjntYzluK8gPCBnZWtrZWl0YWlcIDsKK+inkuihjOeBryA8IGtha3VhbmRvblwgOwor6Kqy5b606YeRIDwga2FjaG91a2luXCA7CivkuqTmj5voiLkgPCBrb3VrYW5zZW5cIDsKK+S/neeuoeiovCA8IGhva2Fuc2hvdVwgOwor5re75Yqg54mpIDwgdGVua2Ftb25vXCA7CivpvKDorJsgPCBuZXp1bWlrb3VcIDsKK+adpeims+iAhSA8IHJhaWthbnNoYVwgOwor5b6h5a626aiS5YuVIDwgb2llc291ZG91XCA7Civpj6Hmnb8gPCBrYWdhbWlpdGFcIDsKK+e2uue+heaYnyA8IGtpcmFib3NoaVwgOwor5bGx5bKz6YOoIDwgc2FuZ2FrdWJ1XCA7CivnmbrlsZXmgKcgPCBoYXR0ZW5zZWlcIDsKK+epuueptCA8IGthcmFrZXRzdVwgOwor5Y2U5a6a5qGIIDwga3lvdXRlaWFuXCA7Civpuqbpo68gPCBtdWdpbWVzaGlcIDsKK+mLvOiJsiA8IGhhZ2FuZWlyb1wgOwor5rOo5bCE5ZmoIDwgY2h1dXNoYWtpXCA7CivmiZXmmoEgPCBmdXRzdWd5b3VcIDsKK+WPuOazleaoqSA8IHNoaWhvdWtlblwgOwor6Jmr6J67IDwgbXVzaGlrZXJhXCA7CivmraPmlLvms5UgPCBzZWlrb3Vob3VcIDsKK+aJi+aLjeWtkCA8IHRlYnlvdXNoaVwgOwor56S+5Lya6Z2iIDwgc2hha2FpbWVuXCA7CivosaHnmq7nl4UgPCB6b3VoaWJ5b3VcIDsKK+emgeWPjeiogCA8IGtpbmhhbmdlblwgOwor54Sh5Y+M56qTIDwgbXVzb3VtYWRvXCA7CivmmYLplpPlibIgPCBqaWthbndhcmlcIDsKK+eUqOW/g+ajkiA8IHlvdWppbmJvdVwgOwor5YaN5oSf5p+TIDwgc2Fpa2Fuc2VuXCA7Civmr5voo73lk4EgPCBtb3VzZWloaW5cIDsKK+S6jOW6puS4ieW6piA8IG5pZG9zYW5kb1wgOwor6auY56WW6aCt5be+IDwga29zb3p1a2luXCA7CivmoLzntI3luqsgPCBrYWt1bm91a29cIDsKK+e3j+e0ouW8lSA8IHNvdXNha3VpblwgOwor5LqI5a+p5bu3IDwgeW9zaGludGVpXCA7CivojLblsYvphZIgPCBjaGF5YXpha2VcIDsKK+Wbm+WIhuWGhiA8IHNoaWJ1bicnZW5cIDsKK+S9l+S9j+WxhSA8IHdhYml6dW1haVwgOwor54mH5omL5qG2IDwga2F0YXRlb2tlXCA7CivlibXliIrlj7cgPCBzb3VrYW5nb3VcIDsKK+Wbm+WIhuWFrSA8IHNoaWJ1cm9rdVwgOwor56ul5q2MIDwgd2FyYWJldXRhXCA7CivpmLLmvZzntrIgPCBib3VzZW5tb3VcIDsKK+aJk+aTsiA8IGNob3VjaGFrdVwgOwor5ZCN5Yi65YikIDwgbWVpc2hpYmFuXCA7CivmsrPnq6Xlt7sgPCBrYXBwYW1ha2lcIDsKK+WLsuS4gOetiSA8IGt1bicnaXR0b3VcIDsKK+WPjeeJqeWxiyA8IHRhbm1vbm95YVwgOwor5LqI5YKZ6YOo5ZOBIDwgeW9iaWJ1aGluXCA7CivkupLorbLnmoQgPCBnb2pvdXRla2lcIDsKK+S4lueVjOeahCA8IHNla2FpdGVraVwgOwor5b6h6L+35oORIDwgZ29tZWl3YWt1XCA7CivkuInpg6jkvZwgPCBzYW5idXNha3VcIDsKK+a0u+mHjyA8IGthdHN1cnlvdVwgOwor5q2j6Z2i5ZuzIDwgc2hvdW1lbnp1XCA7CivooajlhbfluKsgPCBoeW91Z3VzaGlcIDsKK+S4jemBqeS7uyA8IGZ1dGVraW5pblwgOwor57WM5LyB5bqBIDwga2Vpa2ljaG91XCA7CivpgYvli5XpoJggPCB1bmRvdXJ5b3VcIDsKK+WFiOiIrOadpSA8IHNlbnBhbnJhaVwgOwor5a6a5Yag6KmeIDwgdGVpa2Fuc2hpXCA7Civoh6rlt7HmibnliKQgPCBqaWtvaGloYW5cIDsKK+aOpeWwvui+niA8IHNldHN1YmlqaVwgOwor5rC054Sh5pyIIDwgbWluYWR6dWtpXCA7Civpp5DlnKjlk6EgPCBjaHV1emFpaW5cIDsKK+WZtOWHuiA8IGZ1bnNodXRzdVwgOwor5riL55quIDwgc2hpYnVrYXdhXCA7CivovLjlsL/nrqEgPCB5dW55b3VrYW5cIDsKK+iXgemdtCA8IHdhcmFndXRzdVwgOwor5Zu96Ziy6LK7IDwga29rdWJvdWhpXCA7Civkvo3lvpPplbcgPCBqaWp1dWNob3VcIDsKK+mOluaoiyA8IGt1c2FyaXRvaVwgOwor5rS76Lu4IDwga2F0c3VqaWt1XCA7Civmrrrpoqjmma8gPCBzYXBwdXVrZWlcIDsKK+S4reaUr+mCoyA8IG5ha2FzaGluYVwgOwor6Kqk5oy/5YWlIDwgZ29zb3VueXV1XCA7CivmraPmlZnmjoggPCBzZWlreW91anVcIDsKK+S8keeBq+WxsSA8IGt5dXVrYXphblwgOwor5a2Q5a6I5q2MIDwga29tb3JpdXRhXCA7CivmsbrlrprnqL8gPCBrZXR0ZWlrb3VcIDsKK+mYsueBq+WjgSA8IGJvdWthaGVraVwgOwor5rm/5p2/IDwgc2hpdHN1YmFuXCA7Civmta7ooosgPCB1a2lidWt1cm9cIDsKK+WPsOa5vuS6uiA8IHRhaXdhbmppblwgOwor5rS76LqNIDwga2F0c3V5YWt1XCA7Civml6Xnq6Dml5cgPCBuaXNzaG91a2lcIDsKK+mDqOmaiumVtyA8IGJ1dGFpY2hvdVwgOwor5b6h55yf5b2xIDwgZ29zaGluJydlaVwgOwor6Jmr6IW5IDwgbXVzaGliYXJhXCA7Civlh53lm7rngrkgPCBneW91a290ZW5cIDsKK+aUr+W6l+e2siA8IHNoaXRlbm1vdVwgOwor5pWw6KGo56S6IDwgc3V1aHlvdWppXCA7CivpoqjlkJHoqIggPCBmdXVrb3VrZWlcIDsKK+ibjeWFieadvyA8IGtlaWtvdWJhblwgOwor5paw6IGe6IiXIDwgc2hpbmJ1bmhvXCA7Civopb/ljZfopb8gPCBzZWluYW5zZWlcIDsKK+mBv+mbt+mHnSA8IGhpcmFpc2hpblwgOwor542F5a2Q6IieIDwgc2hpc2hpbWFpXCA7Civku7vmnJ/kuK0gPCBuaW5raWNodXVcIDsKK+aWuemdoumaiiA8IGhvdW1lbnRhaVwgOwor6aKo6Yi06I2JIDwgZnV1cmluc291XCA7Civmm7Lni6zmpb0gPCBreW9rdWdvbWFcIDsKK+ecn+WQkeazlSA8IG1ha2tvdWhvdVwgOwor5ZWG6Ii55peXIDwgc2hvdXNlbmtpXCA7CivpvKDoibIgPCBuZXp1bWlpcm9cIDsKK+azpemdtCA8IGRvcm9ndXRzdVwgOwor56CU5L+u5ZOhIDwga2Vuc2h1dWluXCA7CivoqZXliKToqJggPCBoeW91YmFua2lcIDsKK+aZrumAmuS+vyA8IGZ1dHN1dWJpblwgOwor5Ymv55+l5LqLIDwgZnVrdWNoaWppXCA7Civmr43pm4blm6MgPCBib3NodXVkYW5cIDsKK+S4ieWGoOeOiyA8IHNhbmthbicnb3VcIDsKK+aBi+aEm+imsyA8IHJlbicnYWlrYW5cIDsKK+ethuWiqCA8IGhpdHN1Ym9rdVwgOwor6Yed6bC7IDwgaGFyaXVuYWdpXCA7CivpvLvntrEgPCBoYW5hZHp1bmFcIDsKK+WcsOW9ueaoqSA8IGNoaWVraWtlblwgOwor562G5aGaIDwgZnVkZWR6dWthXCA7Civmma7pgJrkurogPCBmdXRzdXVqaW5cIDsKK+a7neWjuiA8IHRha2l0c3Vib1wgOwor5YaN5Y2U6K2wIDwgc2Fpa3lvdWtpXCA7Civku6Pota3oibIgPCB0YWlzaGFpcm9cIDsKK+aOpeWwvuiqniA8IHNldHN1Ymlnb1wgOwor5YqH5L2c5a62IDwgZ2VraXNha2thXCA7Civph43miKbou4ogPCBqdXVzZW5zaGFcIDsKK+mfs+alvemaiiA8IG9uZ2FrdXRhaVwgOwor5ZGK6YGUIDwga29rdXRhdHN1XCA7Civlho3npoHmraIgPCBzYWlraW5zaGlcIDsKK+eHu+iSuOWJpCA8IGt1bmpvdXphaVwgOwor5rSL6KOB5birIDwgeW91c2Fpc2hpXCA7CivnnJ/mraPpnaIgPCBtYXNob3VtZW5cIDsKK+a8j+WHuiA8IHJvdXNodXRzdVwgOwor562G5ZynIDwgaGl0c3VhdHN1XCA7CivmnIjntYzliY0gPCBnZWtrZWltYWVcIDsKK+eqrualtSA8IGt5dXVreW9rdVwgOwor5L2O5bGx5bivIDwgdGVpemFudGFpXCA7CivlirHmjK/lmaggPCByZWlzaGlua2lcIDsKK+mHkemvsSA8IGtpbnNoYWNoaVwgOwor6Iux6ZuE55qEIDwgZWl5dXV0ZWtpXCA7CivoqJjogIXluK0gPCBraXNoYXNla2lcIDsKK+WBpeW6t+iAhSA8IGtlbmtvdXNoYVwgOwor6IKl5rqA55eHIDwgaGltYW5zaG91XCA7CivmnIDlpKflgKQgPCBzYWlkYWljaGlcIDsKK+ioiOeUu+ahiCA8IGtlaWtha3VhblwgOwor6I+v5Y6z5a6XIDwga2Vnb25zaHV1XCA7CivkuLvopoHngrkgPCBzaHV5b3V0ZW5cIDsKK+WPo+mrrSA8IGt1Y2hpaGlnZVwgOwor6Jmr57GgIDwgbXVzaGlrYWdvXCA7CivmtYHooYAgPCByeXV1a2V0c3VcIDsKK+aGkeeJqSA8IHRzdWtpbW9ub1wgOwor56mN546HIDwgc2VraXJpdHN1XCA7CivkvJrlk6HoqLwgPCBrYWlpbnNob3VcIDsKK+eyvuiWhOWFkCA8IHNlaWhha3VqaVwgOwor5oy/5YWl5ZuzIDwgc291bnl1dXp1XCA7Civph5zpo68gPCBrYW1hbWVzaGlcIDsKK+S4geW5tOiAhSA8IHRlaW5lbnNoYVwgOwor5rex54iqIDwgZnVrYWR6dW1lXCA7Civnq7nluJsgPCBjaGlrdWhha3VcIDsKK+ebo+afu+W9uSA8IGthbnNheWFrdVwgOwor6JaE5YyW57KnIDwgdXN1Z2VzaG91XCA7Civlh7rli6TnsL8gPCBzaHVra2luYm9cIDsKK+S4reWkrue3miA8IGNodXVvdXNlblwgOwor5bGl5q205pu4IDwgcmlyZWtpc2hvXCA7Civms6Hpiq0gPCBhYnVrdXplbmlcIDsKK+mkiuWXo+WtkCA8IHlvdXNoaXNoaVwgOwor5oKq6LOqIDwgYWt1c2hpdHN1XCA7CivlpKfmtbfljp8gPCBvb3VuYWJhcmFcIDsKK+S9juS+oeagvCA8IHRlaWtha2FrdVwgOwor5Lqk6Zqb5LiKIDwga291c2Fpam91XCA7CivpurvooosgPCBhc2FidWt1cm9cIDsKK+WPguiAg+WTgSA8IHNhbmtvdWhpblwgOwor56We57WM56eRIDwgc2hpbmtlaWthXCA7CivlsI/kvZzovrIgPCBrb3Nha3Vub3VcIDsKK+iHqueUu+iHquizmyA8IGppZ2FqaXNhblwgOwor56eB5paH5pu4IDwgc2hpYnVuc2hvXCA7CivmsbrlrprniYggPCBrZXR0ZWliYW5cIDsKK+W/g+S4jeWFqCA8IHNoaW5mdXplblwgOwor5Lmz5bm85YWQIDwgbnl1dXlvdWppXCA7Civopo/liYfmm7ggPCBraXNva3VzaG9cIDsKK+a7neWPoyA8IHRha2lndWNoaVwgOwor5Yqg6Zmk5byPIDwga2Fqb3NoaWtpXCA7CivpvKDnrpcgPCBuZXp1bWl6YW5cIDsKK+a5v+W8jyA8IHNoaXNzaGlraVwgOwor5Y+45rOV5a6YIDwgc2hpaG91a2FuXCA7CivnqYDniakgPCBrb2t1bW90c3VcIDsKK+epuuWvvuWcsCA8IGt1dXRhaWNoaVwgOwor5q2j6KaW55y8IDwgc2Vpc2hpZ2FuXCA7Civml6nmhbbmiKYgPCBzb3VrZWlzZW5cIDsKK+azpemBkyA8IGRvcm9taWNoaVwgOwor5Y+k6Z20IDwgZnVydWd1dHN1XCA7CivmjpjliYrmqZ8gPCBrdXNzYWt1a2lcIDsKK+acqueiuuWumiA8IG1pa2FrdXRlaVwgOwor6auY5p625qmLIDwga291a2FreW91XCA7CivmsojprLEgPCBjaGluJyd1dHN1XCA7CivlgIvliKXljJYgPCBrb2JldHN1a2FcIDsKK+WQm+mBlCA8IGtpbWl0YWNoaVwgOwor5oy/5YWl5Y+lIDwgc291bnl1dWt1XCA7Civpt7LpvLsgPCB3YXNoaWJhbmFcIDsKK+aKmOS8jyA8IHNoYWt1YnVrdVwgOwor6byg56m0IDwgbmV6dW1pYW5hXCA7Civmu5Hlj7AgPCBzdWJlcmlkYWlcIDsKK+aUv+aoqeWFmiA8IHNlaWtlbnRvdVwgOwor5bCE5Yip5b+DIDwgc2hhcmlzaGluXCA7Civnq5zlt7sgPCB0YXRzdW1ha2lcIDsKK+mHo+mQmCA8IHRzdXJpZ2FuZVwgOwor55uj5a+f5Yy7IDwga2Fuc2F0c3VpXCA7CivpgZPljJbmlrkgPCBkb3VrZWdhdGFcIDsKK+WNiuS6jOmHjSA8IGhhbicnbmlqdXVcIDsKK+emgeayu+eUoyA8IGtpbmNoaXNhblwgOwor6aaW5L2N5omT6ICFIDwgc2h1aWRhc2hhXCA7CivljZjoqp7pm4YgPCB0YW5nb3NodXVcIDsKK+eUqOawtOWcsCA8IHlvdXN1aWlrZVwgOwor6LuK6auY55+tIDwgc2hha291dGFuXCA7Civov5HmtbfprZogPCBraW5rYWlneW9cIDsKK+acqOmHkeWcnyA8IG1va3VraW5kb1wgOwor5oyB57aa5oCnIDwgaml6b2t1c2VpXCA7CivlkI3lt6XlpKcgPCBtZWlrb3VkYWlcIDsKK+aUr+mFjeS6uiA8IHNoaWhhaW5pblwgOwor5bm55LqL6ZW3IDwga2FuamljaG91XCA7CivplbfmsLTot68gPCBjaG91c3Vpcm9cIDsKK+W5s+WFmuWToSA8IGhpcmF0b3VpblwgOwor5b6q55Kw57eaIDwganVua2Fuc2VuXCA7CivkuIvliYvkuIogPCBnZWtva3Vqb3VcIDsKK+a6gOWupCA8IG1hbnNoaXRzdVwgOwor5LiK5bGk6aKoIDwgam91c291ZnV1XCA7CivlnKflu7bpi7wgPCBhdHN1ZW5rb3VcIDsKK+WboOaenOW/nOWgsSA8IGluZ2FvdWhvdVwgOwor5rqW5pWZ5ZOhIDwganVua3lvdWluXCA7Civpt6bpt68gPCBtaXNvc2F6YWlcIDsKK+WHueecvOmPoSA8IG91Z2Fua3lvdVwgOwor54mp5L6h6auYIDwgYnVra2FkYWthXCA7Civoqpjmi5DnvaogPCB5dXVrYWl6YWlcIDsKK+err+WlsyA8IGhhc2hpdGFtZVwgOwor5b6q55Kw57O7IDwganVua2Fua2VpXCA7Civph6Pph50gPCB0c3VyaWJhcmlcIDsKK+a0vueUn+eahCA8IGhhc2VpdGVraVwgOwor57Sg5Y+N5b+cIDwgc29oYW4nJ25vdVwgOwor5Zyo6YO36ICFIDwgemFpZ291c2hhXCA7Civph5HpjpYgPCBraW5ndXNhcmlcIDsKK+WMl+a1t+mBkyA8IGhva2thaWRvdVwgOwor5LiL5aWz5LiL55S3IDwgZ2Vqb2dlbmFuXCA7Civmnpfmqo7nl4UgPCByaW5nb2J5b3VcIDsKK+iXpOiUkyA8IGZ1amlkenVydVwgOwor6Jas5LqL5rOVIDwgeWFrdWppaG91XCA7Civnn63mr5vnqK4gPCB0YW5tb3VzaHVcIDsKK+amguW/teirliA8IGdhaW5lbnJvblwgOwor6Ymb6ImyIDwgbmFtYXJpaXJvXCA7CivpgZPlvrPlrrYgPCBkb3V0b2t1a2FcIDsKK+WPguS4juWumCA8IHNhbicneW9rYW5cIDsKK+a4i+afvyA8IHNoaWJ1Z2FraVwgOwor5pyA57WC5qGIIDwgc2Fpc2h1dWFuXCA7CivkuJbnlYzmlrAgPCBzZWthaXNoaW5cIDsKK+WPguiAg+S6uiA8IHNhbmtvdW5pblwgOwor5bGL5Y+w6aqoIDwgeWF0YWlib25lXCA7CivlpKfmrZPov44gPCBkYWlrYW5nZWlcIDsKK+S4iuWxpOmajiA8IGpvdXNvdWthaVwgOwor5LiA5YiH57WMIDwgaXNzYWlreW91XCA7Civlj6TpiYQgPCBmdXJ1dGV0c3VcIDsKK+WGjemFjee9riA8IHNhaWhhaWNoaVwgOwor6IKM6KWm6KKiIDwgaGFkYWp1YmFuXCA7Civlha3op5LlvaIgPCByb2trYWtrZWlcIDsKK+aWsOeUn+WFkCA8IHNoaW5zZWlqaVwgOwor6Yi06JmrIDwgc3V6dW11c2hpXCA7Civphpzmpa3lqaYgPCBzaHVneW91ZnVcIDsKK+WQjOizqiA8IGRvdXNoaXRzdVwgOwor6KOB5Yik5qipIDwgc2FpYmFua2VuXCA7CivlpKfnpZ7lrq4gPCBkYWlqaW5ndXVcIDsKK+ato+aVmeWToSA8IHNlaWt5b3VpblwgOwor5Y+j6YeRIDwga3VjaGlnYW5lXCA7CivnqoHmkoMgPCB0b3RzdWdla2lcIDsKK+aCquaIr+edgCA8IGl0YXp1cmFnaVwgOwor5pi86KGM54GvIDwgaGlydWFuZG9uXCA7CivlnLDlubPnt5ogPCBjaGloZWlzZW5cIDsKK+WuiealveakheWtkCA8IGFucmFrdWlzdVwgOwor6YWN6Zu757eaIDwgaGFpZGVuc2VuXCA7Civnmb3poK3nv4EgPCBoYWt1dG91b3VcIDsKK+eZuuWwhOWPsCA8IGhhc3NoYWRhaVwgOwor6buS57iBIDwga3Vyb2J1Y2hpXCA7CivkuLvpmaPlnLAgPCBzaHVqaW5jaGlcIDsKK+aEn+aDs+aWhyA8IGthbnNvdWJ1blwgOwor5raI5YyW57O7IDwgc2hvdWtha2VpXCA7Civpjq7lnKcgPCBjaGluJydhdHN1XCA7CivkuLvoprPmgKcgPCBzaHVrYW5zZWlcIDsKK+Wkp+azleW7tyA8IGRhaWhvdXRlaVwgOwor5pyA57WC5pelIDwgc2Fpc2h1dWJpXCA7CivmsbrlrprmqKkgPCBrZXR0ZWlrZW5cIDsKK+WWquWksSA8IHNvdXNoaXRzdVwgOwor5YWO5bCP5bGLIDwgdXNhZ2lnb3lhXCA7CivlpJrnpZ7oq5YgPCB0YXNoaW5yb25cIDsKK+WnlOWToeS7mOiolyA8IGlpbmZ1dGFrdVwgOwor5b6M5Y2K55SfIDwga291aGFuc2VpXCA7CivnqK7msrkgPCB0YW5lYWJ1cmFcIDsKK+Wil+iogueJiCA8IHpvdXRlaWJhblwgOwor5omA5Zyo5ZywIDwgc2hvemFpY2hpXCA7Civngb3lrrPlnLAgPCBzYWlnYWljaGlcIDsKK+a2iOWMlueuoSA8IHNob3VrYWthblwgOwor5bm05Luj6aCGIDwgbmVuZGFpanVuXCA7CivnpZ7ntYzngo4gPCBzaGlua2VpZW5cIDsKK+WlieS7leiAhSA8IGhvdXNoaXNoYVwgOwor5ZSQ5quDIDwga2FyYWJpdHN1XCA7Civlho3lj5fmtbggPCBzYWlqdXNoaW5cIDsKK+WPo+i7vSA8IGt1Y2hpZ2FydVwgOwor56qu5bGIIDwga3l1dWt1dHN1XCA7CivkuojlgpnpgYvli5UgPCB5b2JpdW5kb3VcIDsKK+S6jOS6uuWJjSA8IGZ1dGFyaW1hZVwgOwor5a+M5aOr5aO6IDwgZnVqaXRzdWJvXCA7CivpgbrnlKPnrqHnkIYgPCBpc2Fua2FucmlcIDsKK+eZvuiyqOW6lyA8IGh5YWtrYXRlblwgOwor5qiq5pat5bmVIDwgb3VkYW5tYWt1XCA7CivkuozkurrliIYgPCBmdXRhcmlidW5cIDsKK+e0jeeojuiAhSA8IG5vdXplaXNoYVwgOwor6YW45oCn57SZIDwgc2Fuc2Vpc2hpXCA7Civlt6blj7Pou7ggPCBzYXl1dWppa3VcIDsKK+WkqeawtOahtiA8IHRlbnN1aW9rZVwgOwor6buS56u5IDwga3Vyb2NoaWt1XCA7Civlj4vpgZQgPCB0b21vZGFjaGlcIDsKK+WTgeeJqSA8IHNoaW5hbW9ub1wgOwor6LK06YeR5bGeIDwga2lraW56b2t1XCA7Civms6LnvoXonJwgPCBoYXJhbWl0c3VcIDsKK+eLqeeMn+acnyA8IHNodXJ5b3VraVwgOwor5paH5rOV5pu4IDwgYnVucG91c2hvXCA7Civnq7nlhYkgPCB0YWtlbWl0c3VcIDsKK+iXgeiLniA8IHdhcmFkenV0b1wgOwor5Y2g6aCY5LiLIDwgc2VucnlvdWthXCA7Civnh4PnhLzngokgPCBuZW5zaG91cm9cIDsKK+WPpOethuWutiA8IGtvaGl0c3VrYVwgOwor6Ziy6KGb5bqBIDwgYm91ZWljaG91XCA7CivlpKfnpa3lj7ggPCBkYWlzYWlzaGlcIDsKK+WUkOadviA8IGthcmFtYXRzdVwgOwor6Zub572M57KfIDwgaGluYWdlc2hpXCA7CivlhajlpKnlgJkgPCB6ZW50ZW5rb3VcIDsKK+i2heefreazoiA8IGNob3V0YW5wYVwgOwor5pS+5bCE6IO9IDwgaG91c2hhbm91XCA7CivliY3np5HogIUgPCB6ZW5rYW1vbm9cIDsKK+mVt+mHjuecjCA8IG5hZ2Fub2tlblwgOwor55+l5oG154axIDwgY2hpZW5ldHN1XCA7CivljIXoo4XntJkgPCBob3Vzb3VzaGlcIDsKK+S6ieitsOihjOeCuiA8IHNvdWdpa291aVwgOwor57Gz55Sj5ZywIDwgYmVpc2FuY2hpXCA7Civlhavop5LlvaIgPCBoYWtrYWtrZWlcIDsKK+S6lOWkp+a0siA8IGdvZGFpc2h1dVwgOwor5paw5a2m5pyfIDwgc2hpbmdha2tpXCA7CivpurvlqYbosYbohZAgPCBtxIFib2RvdWZ1XCA7CivphY3pm7vnm6QgPCBoYWlkZW5iYW5cIDsKK+iLseaWh+WtpiA8IGVpYnVuZ2FrdVwgOwor6JqK5p+xIDwga2FiYXNoaXJhXCA7CivlvqHlhYTlvJ8gPCBnb2t5b3VkYWlcIDsKK+ijgeWIpOaJgCA8IHNhaWJhbnNob1wgOwor5Y+C6Zmi6YG4IDwgc2FuJydpbnNlblwgOwor56u55LiyIDwgdGFrZWd1c2hpXCA7Civou43kurrpoqggPCBndW5qaW5mdXVcIDsKK+eEoeW+l+eCuSA8IG11dG9rdXRlblwgOwor6KuW55CG55qEIDwgcm9ucml0ZWtpXCA7Civpu5Lnmb0gPCBrb2t1Ynlha3VcIDsKK+WKg+acn+eahCA8IGtha2tpdGVraVwgOwor56We572wIDwgc2hpbmJhdHN1XCA7CivmsrnonYkgPCBhYnVyYXplbWlcIDsKK+S4ieecgeWggiA8IHNhbnNlaWRvdVwgOwor5Y+W6KqsIDwgdG9yaXNldHN1XCA7CivomZrlvLHlhZAgPCBreW9qYWt1amlcIDsKK+aWh+WMluaYoOeUuyA8IGJ1bmthZWlnYVwgOwor5b2T5LqL5Zu9IDwgdG91amlrb2t1XCA7Civoq5bkuonogIUgPCByb25zb3VzaGFcIDsKK+aUvuWwhOe3miA8IGhvdXNoYXNlblwgOwor6Ju45aO8IDwgdGFrb3RzdWJvXCA7CivltIfmi53ogIUgPCBzdXVoYWlzaGFcIDsKK+WBpeW6t+azlSA8IGtlbmtvdWhvdVwgOwor5oCq5paH5pu4IDwga2FpYnVuc2hvXCA7CivpgK7mjZXmrbQgPCB0YWlob3Jla2lcIDsKK+ethumgreiAhSA8IGhpdHRvdXNoYVwgOwor5rmn5Ye6IDwgeW91c2h1dHN1XCA7CivnqbrlrqQgPCBrdXVzaGl0c3VcIDsKK+S5vueUn+WnnCA8IGthbnNob3VnYVwgOwor55Sf5q6L6ICFIDwgc2VpemFuc2hhXCA7Civmt6HmsLTprZogPCB0YW5zdWlneW9cIDsKK+i0iOetlOWTgSA8IHpvdXRvdWhpblwgOwor5Lqk5o+b5omLIDwga291a2Fuc2h1XCA7Civom43lhYnkvZMgPCBrZWlrb3V0YWlcIDsKK+awt+eCueS4iyA8IGh5b3V0ZW5rYVwgOwor6KqY5ouQ54qvIDwgeXV1a2FpaGFuXCA7CivnhY7njonlrZAgPCBpcml0YW1hZ29cIDsKK+iIiOS/oeaJgCA8IGtvdXNoaW5qb1wgOwor55SY5ZGz5paZIDwga2FubWlyeW91XCA7CivoqabpqJPntJkgPCBzaGlrZW5zaGlcIDsKK+iCieilpuiioiA8IG5pa3VqdWJhblwgOwor55uj5a6I5Lq6IDwga2Fuc2h1bmluXCA7CivlopflpKflj7cgPCB6b3VkYWlnb3VcIDsKK+a7kei1sOi8qiA8IGthc3NvdXJpblwgOwor5YaN5Ym16YCgIDwgc2Fpc291em91XCA7CivmiLjnsY3ms5UgPCBrb3Nla2lob3VcIDsKK+mMmOW9oiA8IHRzdW11Z2F0YVwgOwor6I2S54mp5bGLIDwgYXJhbW9ub3lhXCA7CivkuK3opb/pg6ggPCBjaHV1c2VpYnVcIDsKK+iHquWLleeahCA8IGppZG91dGVraVwgOwor5YCf5a625Lq6IDwgc2hha2thbmluXCA7Civms5Xlrabpg6ggPCBob3VnYWt1YnVcIDsKK+i7jeizh+mHkSA8IGd1bnNoaWtpblwgOwor5paH5rOV5oCnIDwgYnVucG91c2VpXCA7CivovrLlpKvnl4cgPCBub3VmdXNob3VcIDsKK+adkOaWmeiyuyA8IHphaXJ5b3VoaVwgOwor5YKs5raZ6YqDIDwgc2FpcnVpanV1XCA7CivlpInmj5vlrZAgPCBoZW5rYW5zaGlcIDsKK+adkOacqOWxiyA8IHphaW1va3V5YVwgOwor6LKn56qu5YyWIDwgaGlua3l1dWthXCA7Civml6nlkIjngrkgPCBoYXlhZ2F0ZW5cIDsKK+i7iummrOizgyA8IHNoYWJhY2hpblwgOwor56uc6aiO5YW1IDwgcnl1dWtpaGVpXCA7CivlnJ/lj7Dnn7MgPCBkb2RhaWlzaGlcIDsKK+ippumok+euoSA8IHNoaWtlbmthblwgOwor5aSn5Y+N5a++IDwgZGFpaGFudGFpXCA7CivpnZ7lm73msJEgPCBoaWtva3VtaW5cIDsKK+Wwj+ixhumxkiA8IGF6dWtpbWFzdVwgOwor6I6i6LGM6LGGIDwgc2F5YWVuZG91XCA7CivkuKHmm7/mqZ8gPCByeW91Z2Fla2lcIDsKK+e2v+eBq+iWrCA8IG1lbmtheWFrdVwgOwor5Lq65rCR6LuNIDwgamlubWluZ3VuXCA7CivmrKDli6TogIUgPCBrZWtraW5zaGFcIDsKK+Wwj+S9nOexsyA8IGtvc2FrdW1haVwgOwor5rOl5p2/5bKpIDwgZGVpYmFuZ2FuXCA7Civmk6zpnanntJkgPCBnaWtha3VzaGlcIDsKK+iytOmHjeWTgSA8IGtpY2hvdWhpblwgOwor54Gr5bGx56SrIDwga2F6YW5yZWtpXCA7CivpoZTlhpnnnJ8gPCBrYW9qYXNoaW5cIDsKK+WFsea8lOiAhSA8IGt5b3VlbnNoYVwgOwor5pWR6K2354+tIDwga3l1dWdvaGFuXCA7Civph5HolJMgPCBrYW5lZHp1cnVcIDsKK+WGjeW+queSsCA8IHNhaWp1bmthblwgOwor5oSP5ZGz5YaF5a65IDwgaW1pbmFpeW91XCA7CivojbvmsZ/nr4AgPCBvZ2llYnVzaGlcIDsKK+mbhuWFieWZqCA8IHNodXVrb3VraVwgOwor5LiA6YOo5YiGIDwgaWNoaWJ1YnVuXCA7Civph6PoiLkgPCB0c3VyaWJ1bmVcIDsKK+ijheeUsui7iiA8IHNvdWtvdXNoYVwgOwor5paw5LiW57SAIDwgc2hpbnNlaWtpXCA7CivkuojlgpnliKTkuosgPCB5b2JpaGFuamlcIDsKK+mJoueJqSA8IGhhY2hpbW9ub1wgOwor5rWa5rirIDwgc2h1bnNldHN1XCA7Civmt5HlvrMgPCBzaHVrdXRva3VcIDsKK+elneemjyA8IHNodWt1ZnVrdVwgOwor6KOB5Yik5a6YIDwgc2FpYmFua2FuXCA7Civlh7rli6Tml6UgPCBzaHVra2luYmlcIDsKK+mAgeS/oeapnyA8IHNvdXNoaW5raVwgOwor5rKh6JC9IDwgYm90c3VyYWt1XCA7CivnqpPlj6MgPCBtYWRvZ3VjaGlcIDsKK+mbkeWxheWcsCA8IHpha2t5b2NoaVwgOwor6Iux5pWw5Zu9IDwgZWlzdXVrb2t1XCA7Civkv53nrqHmlpkgPCBob2thbnJ5b3VcIDsKK+atpuWutuaZguS7oyA8IGJ1a2VqaWRhaVwgOwor5Y2K6LK055+zIDwgaGFua2lzZWtpXCA7Civou43nlKjmqZ8gPCBndW4nJ3lvdWtpXCA7Civlk4Hmn4QgPCBzaGluYWdhcmFcIDsKK+WMu+eZgumBjuiqpCA8IGlyeW91a2Fnb1wgOwor6JmO6JC956ybIDwgbW9nYXJpYnVlXCA7CivnlJ/pgoTogIUgPCBzZWlrYW5zaGFcIDsKK+aHh+irh+S8miA8IGtvbmRhbmthaVwgOwor5pyq5YWs6KGoIDwgbWlrb3VoeW91XCA7Civopb/mtIvkurogPCBzZWl5b3VqaW5cIDsKK+eUsOiIjuiAhSA8IGluYWthbW9ub1wgOwor5ZC4552AIDwga3l1dWNoYWt1XCA7CivmtojljJbmtrIgPCBzaG91a2Fla2lcIDsKK+atpuWutuaUv+ayuyA8IGJ1a2VzZWlqaVwgOwor5aWz546L6Zmb5LiLIDwgam9vdWhlaWthXCA7CivnqbTlsYXkurogPCBrZWtreW9qaW5cIDsKK+WmqOalreWToSA8IGJvdWd5b3VpblwgOwor6aKo5ZGC5pW3IDwgZnVyb3NoaWtpXCA7Civlj6PohIcgPCBrdWNoaXdha2lcIDsKK+S9leabnOaXpSA8IG5hbicneW91YmlcIDsKK+itpuaIkue3miA8IGtlaWthaXNlblwgOwor56K66KqsIDwga2FrdXNldHN1XCA7CivkuqTmj5vlrKIgPCBrb3VrYW5qb3VcIDsKK+Wkp+mBk+iKuCA8IGRhaWRvdWdlaVwgOwor5YGc5q2i57eaIDwgdGVpc2hpc2VuXCA7CivoloTnt5EgPCB1c3VtaWRvcmlcIDsKK+WTgeaVsCA8IHNoaW5ha2F6dVwgOwor5YuJ5by35a62IDwgYmVua3lvdWthXCA7CivmtarmvKvnmoQgPCByb21hbnRla2lcIDsKK+WLp+S4lue4kiA8IGthbnpleW9yaVwgOwor56u557Sw5belIDwgdGFrZXphaWt1XCA7CivnlKPljbXlj6MgPCBzYW5yYW5rb3VcIDsKK+aEn+WLleipniA8IGthbmRvdXNoaVwgOwor5rC05Zyn5qmfIDwgc3VpYXRzdWtpXCA7Civpn7Pmpb3npa0gPCBvbmdha3VzYWlcIDsKK+m5v+eariA8IHNoaWthZ2F3YVwgOwor6buZ5q66IDwgbW9rdXNhdHN1XCA7Civkurrmg4XmnKwgPCBuaW5qb3Vib25cIDsKK+eah+mciuauvyA8IGtvdXJlaWRlblwgOwor5oGQ57iuIDwga3lvdXNodWt1XCA7Civkvb/lkb3ogIUgPCBzaGltZWlzaGFcIDsKK+eqgeWHuiA8IHRvc3NodXRzdVwgOwor5Luj55So5ZOBIDwgZGFpeW91aGluXCA7CivokYnoj5zpoZ4gPCB5b3VzYWlydWlcIDsKK+mDvemiqCA8IG1peWFrb2Z1dVwgOwor5rK557OfIDwgYWJ1cmFrYXN1XCA7CivlhpnnnJ/mqZ8gPCBzaGFzaGlua2lcIDsKK+awtOizqiA8IHN1aXNoaXRzdVwgOwor55S35LyK6YGUIDwgb3Rva29kYXRlXCA7CivlhbXnq5nnt5ogPCBoZWl0YW5zZW5cIDsKK+W4r+mbu+S9kyA8IHRhaWRlbnRhaVwgOwor56qB5YWlIDwgdG90c3VueXV1XCA7CivmlofljJbnmoQgPCBidW5rYXRla2lcIDsKK+acqueZuuihqCA8IG1paGFwcHlvdVwgOwor5YWI5L2P5rCRIDwgc2VuanV1bWluXCA7CivpgJTkuIrlm70gPCB0b2pvdWtva3VcIDsKK+Wkp+awl+axmuafkyA8IHRhaWtpb3NlblwgOwor5Y2K6Z+z6ZqOIDwgaGFuJydvbmthaVwgOwor55m95pyo5bGLIDwgc2hpcm9raXlhXCA7Civku5Xmp5jmm7ggPCBzaGl5b3VzaG9cIDsKK+awkeS6i+eahCA8IG1pbmppdGVraVwgOwor5oiQ5bGk5ZyPIDwgc2Vpc291a2VuXCA7CivokrjmsJflnKcgPCBqb3VraWF0c3VcIDsKK+S4oeabv+aJgCA8IHJ5b3VnYWVqb1wgOwor56ig5a+GIDwgY2hvdW1pdHN1XCA7Civpu5LmqKsgPCBrdXJvZ2FzaGlcIDsKK+a0u+attCA8IGthdHN1cmVraVwgOwor5b6M5Y2K5oimIDwga291aGFuc2VuXCA7Civlj6PntIUgPCBrdWNoaWJlbmlcIDsKK+WPs+erryA8IG1pZ2loYXNoaVwgOwor5bm95a+C5ZGzIDwgeXV1amFrdW1pXCA7CivluJ3njovlraYgPCB0ZWlvdWdha3VcIDsKK+iyr+awtOaxoCA8IGNob3N1aWNoaVwgOwor6Jas55O2IDwga3VzdXJpYmluXCA7Civlk7LlraYgPCB0ZXRzdWdha3VcIDsKK+aWsOS4lueVjCA8IHNoaW5zZWthaVwgOwor5ZG95Luk5rOVIDwgbWVpcmVpaG91XCA7Civln7rnpI7lt6XkuosgPCBraXNva291amlcIDsKK+ePvuWDj+a2siA8IGdlbnpvdWVraVwgOwor6Kaz6Kan6LuKIDwga2FucmFuc2hhXCA7CivkvJrnpL7okawgPCBrYWlzaGFzb3VcIDsKK+mJhOa4iyA8IGthbmFzaGlidVwgOwor56aB6YWS5rOVIDwga2luc2h1aG91XCA7CivohLPohpzngo4gPCBub3VtYWt1ZW5cIDsKK+WPjue4riA8IHNodXVzaHVrdVwgOwor5Y+w56ekIDwgZGFpYmFrYXJpXCA7Civmlofpg6jnnIEgPCBtb25idXNob3VcIDsKK+i7jeS6i+mAmiA8IGd1bmppdHN1dVwgOwor6ISz6IWr55iNIDwgbm91c2h1eW91XCA7CivkuJbnlYzkuIAgPCBzZWthaWljaGlcIDsKK+W/heiqrSA8IGhpdHN1ZG9rdVwgOwor5Y2a6K2YIDwgaGFrdXNoaWtpXCA7Civlho3liIbphY0gPCBzYWlidW5wYWlcIDsKK+aOm+W4g+WboyA8IGtha2VidXRvblwgOwor5aSW5rSL6Ii5IDwgZ2FpeW91c2VuXCA7Civpu5Lmnb4gPCBrdXJvbWF0c3VcIDsKK+e1hOiBt+WbsyA8IHNvc2hva3V6dVwgOwor54Sh55CG5b6A55SfIDwgbXVyaW91am91XCA7CivkuqTmj5vlk4EgPCBrb3VrYW5oaW5cIDsKK+eBq+mjn+mzpSA8IGhpa3VpZG9yaVwgOwor6LKv5rC05qe9IDwgY2hvc3Vpc291XCA7CivmtbfmsLTprZogPCBrYWlzdWlneW9cIDsKK+eyvumAsuaXpSA8IHNob3VqaW5iaVwgOwor5Y2T6K2YIDwgdGFrdXNoaWtpXCA7CivolqzniakgPCB5YWt1YnV0c3VcIDsKK+S4ieiJsuaXlyA8IHNhbnNob2traVwgOwor6YCD5Lqh6ICFIDwgdG91Ym91c2hhXCA7CivpgZPlhbfnrrEgPCBkb3VndWJha29cIDsKK+WHuuW7t+aXpSA8IHNodXR0ZWliaVwgOwor55S75a2m57SZIDwgZ2FnYWt1c2hpXCA7CivmsLfonZUgPCBoeW91c2hva3VcIDsKK+iyr+iUteaJgCA8IGNob3pvdXNob1wgOwor5p2x5rW36YGTIDwgdG91a2FpZG91XCA7CivkuqTmj5vlj7AgPCBrb3VrYW5kYWlcIDsKK+aIpuaZguS4rSA8IHNlbmppY2h1dVwgOwor5Y2T6KqsIDwgdGFrdXNldHN1XCA7Civpu5LmmJ8gPCBrdXJvYm9zaGlcIDsKK+a3t+WIhuaVsCA8IGtvbmJ1bnN1dVwgOwor55Sf55+z54GwIDwgc2Vpc2Vra2FpXCA7CivkuI3mpJzmnZ8gPCBmdWtlbnNva3VcIDsKK+Wwj+advuiPnCA8IGtvbWF0c3VuYVwgOwor6LSI5ZGI6ICFIDwgem91dGVpc2hhXCA7CivpoZ7mpoLlv7UgPCBydWlnYWluZW5cIDsKK+S7u+WkqeWggiA8IG5pbnRlbmRvdVwgOwor5Y2X5pa555SjIDwgbmFucG91c2FuXCA7CivntZDntI3ph5EgPCB5dWlub3VraW5cIDsKK+engOaKnCA8IHNodXViYXRzdVwgOwor5b+D6KGAIDwgc2hpbmtldHN1XCA7CivlpKrliIDnrYsgPCB0YWNoaXN1amlcIDsKK+awtOiZqyA8IG1penVtdXNoaVwgOwor6JST6I2JIDwgdHN1cnVrdXNhXCA7CivlvLfpo68gPCBrb3dhbWVzaGlcIDsKK+eGn+Wtl+iokyA8IGp1a3VqaWt1blwgOwor5aOw5piO5pu4IDwgc2VpbWVpc2hvXCA7CivllY/poYzngrkgPCBtb25kYWl0ZW5cIDsKK+WIhuW3peWgtCA8IGJ1bmtvdWpvdVwgOwor5a6a5bm05Yi2IDwgdGVpbmVuc2VpXCA7CivlnLDlhYPntJkgPCBqaW1vdG9zaGlcIDsKK+mgkOiol+mHkSA8IHlvdGFrdWtpblwgOwor6Ziy56m656CyIDwgYm91a3V1aG91XCA7CivpnZnlnKfmr5QgPCBzZWlhdHN1aGlcIDsKK+iRm+mkhSA8IGt1enVtb2NoaVwgOwor5Zue6aGn6YyyIDwga2Fpa29yb2t1XCA7CivptonosYYgPCB1enVyYW1hbWVcIDsKK+S4oeabv+WxiyA8IHJ5b3VnYWV5YVwgOwor5Lq65rCX6ICFIDwgbmlua2ltb25vXCA7CivkuI3oia/lk4EgPCBmdXJ5b3VoaW5cIDsKK+Wwj+S+v+aJgCA8IHNob3ViZW5qb1wgOwor5b6q55Kw5oCnIDwganVua2Fuc2VpXCA7CivllYbnlKjljJYgPCBzaG91eW91a2FcIDsKK+S6pOaPm+WGhiA8IGtvdWthbicnZW5cIDsKK+ippumok+azlSA8IHNoaWtlbmhvdVwgOwor5a2m5ZyS56WtIDwgZ2FrdWVuc2FpXCA7CivkvZXmmYLmmYLliIYgPCBpdHN1amlidW5cIDsKK+mHkeebpSA8IGthbmFkYXJhaVwgOwor5Y+j55mWIDwga3VjaGlndXNlXCA7CivnrKzlha3mhJ8gPCBkYWlyb2trYW5cIDsKK+iyp+awkeihlyA8IGhpbm1pbmdhaVwgOwor5ZG95Luk5pu4IDwgbWVpcmVpc2hvXCA7CivljYrlsI7kvZMgPCBoYW5kb3V0YWlcIDsKK+efs+mgrSA8IGlzaGlhdGFtYVwgOwor6bOl6buQIDwgdG9yaW1vY2hpXCA7Civmtpnlo7AgPCBuYW1pZGFnb2VcIDsKK+WFteWZqOW7oCA8IGhlaWtpc2hvdVwgOwor6JC96auqIDwgcmFrdWhhdHN1XCA7Civoo4HliKTkuIogPCBzYWliYW5qb3VcIDsKK+WjsuaYpeWppiA8IGJhaXNodW5wdVwgOwor5YuF6aGNIDwgY2hva3VnYWt1XCA7CivphY3pm7vmiYAgPCBoYWlkZW5zaG9cIDsKK+ekvuS6pOeVjCA8IHNoYWtvdWthaVwgOwor5YSq5Yud5peXIDwgeXV1c2hvdWtpXCA7CivmiYvlk4HluKsgPCB0ZWppbmFzaGlcIDsKK+mrhOiGnOeCjiA8IHp1aW1ha3VlblwgOwor5L+u6YGT6ZmiIDwgc2h1dWRvdWluXCA7CivljbXoibIgPCB0YW1hZ29pcm9cIDsKK+a1t+ibh+W6pyA8IHVtaWhlYml6YVwgOwor56iy5YWJIDwgaW5hYmlrYXJpXCA7Civlkb3ku6TmlocgPCBtZWlyZWlidW5cIDsKK+adsea0i+miqCA8IHRvdXlvdWZ1dVwgOwor5byf5oGv5a2QIDwgb3RvbXVzdWtvXCA7CivkupTlpKflm70gPCBnb2RhaWtva3VcIDsKK+aOpemqqOWMuyA8IHNla2tvdHN1aVwgOwor5pyb6YGg6Y+hIDwgYm91ZW5reW91XCA7CivmooXpm6jnqbogPCB0c3V5dXpvcmFcIDsKK+W3peWToeWvriA8IGtvdWlucnlvdVwgOwor54Sh6YGK55eFIDwgbXV5dXVieW91XCA7Civmrr/pgZQgPCB0b25vdGFjaGlcIDsKK+Wbvemam+WMliA8IGtva3VzYWlrYVwgOwor6ama55Ww55qEIDwga3lvdWl0ZWtpXCA7CivokL3po74gPCByYWt1c2hva3VcIDsKK+mWouadseW8gSA8IGthbnRvdWJlblwgOwor55u45LqS5L6d5a2YIDwgc291Z29pem9uXCA7CivopIflkIjoqp4gPCBmdWt1Z291Z29cIDsKK+W8mOa4iOS8miA8IGtvdXNhaWthaVwgOwor6Iez6L+R5by+IDwgc2hpa2luZGFuXCA7CivmnKzlubTluqYgPCBob24nJ25lbmRvXCA7CivmlZHorbfmiYAgPCBreXV1Z29zaG9cIDsKK+ayiOedgCA8IGNoaW5jaGFrdVwgOwor5ZGR5rCX6ICFIDwgbm9ua2ltb25vXCA7CivlsI/kvZzmqKkgPCBrb3Nha3VrZW5cIDsKK+S7o+eQhuavjSA8IGRhaXJpaGFoYVwgOwor5YiG55WM57eaIDwgYnVua2Fpc2VuXCA7Civnq6/looPmnJ8gPCBoYXpha2Fpa2lcIDsKK+iqnua6kOWtpiA8IGdvZ2VuZ2FrdVwgOwor5b+D6Zu75ZuzIDwgc2hpbmRlbnp1XCA7CivlgaXlurflnLAgPCBrZW5rb3VjaGlcIDsKK+iqnuW9meimj+WJhyA8IGdvaWtpc29rdVwgOwor5rCP5a2Q5pytIDwgdWppa29mdWRhXCA7Civoq7jllY/poYwgPCBzaG9tb25kYWlcIDsKK+WPo+WUh+acnyA8IGtvdXNoaW5raVwgOwor5bCG5qOL55ukIDwgc2hvdWdpYmFuXCA7CivnjYXlrZDllJAgPCBzaGlzaGl0b3VcIDsKK+W5s+S/oeW+kiA8IGhlaXNoaW50b1wgOwor56Wl5pyIIDwgc2hvdXRzdWtpXCA7CivlpKfmsJflnKcgPCB0YWlraWF0c3VcIDsKK+Wwhui7jeWutiA8IHNob3VndW5rZVwgOwor5Y2D5Luj57SZIDwgY2hpeW9nYW1pXCA7CivkuLvmiKboq5YgPCBzaHVzZW5yb25cIDsKK+WKo+etieeUnyA8IHJldHRvdXNlaVwgOwor5paw5a2X5L2TIDwgc2hpbmppdGFpXCA7Civlj47njocgPCBzaHV1cml0c3VcIDsKK+e0jeWTgeabuCA8IG5vdWhpbnNob1wgOwor55qH5aSq5a2QIDwga291dGFpc2hpXCA7Civnorrnq4sgPCBrYWt1cml0c3VcIDsKK+mokuaTvue9qiA8IHNvdWpvdXphaVwgOwor5Y2K5a6Y5aCxIDwgaGFua2FucG91XCA7CivlkIzkvLTogIUgPCBkb3VoYW5zaGFcIDsKK+a1t+m8oOadvyA8IG5hbWFrb2JhblwgOwor5YeG5aOr5a6YIDwganVuc2hpa2FuXCA7Civlrp/pqJPogIUgPCBqaWtrZW5zaGFcIDsKK+S7o+eQhualrSA8IGRhaXJpZ3lvdVwgOwor5LiA5qyh5YWDIDwgaWNoaWppZ2VuXCA7CivnlKjnm4rmqKkgPCB5b3Vla2lrZW5cIDsKK+S4iuiFleetiyA8IGpvdXdhbmtpblwgOwor5Y+C5pS/5qipIDwgc2Fuc2Vpa2VuXCA7Civlt6HnpLzogIUgPCBqdW5yZWlzaGFcIDsKK+Wun+mok+e+pCA8IGppa2tlbmd1blwgOwor56m65pmv5rCXIDwga2FyYWdlaWtpXCA7CivljaDogIUgPCB1cmFuYWlzaGFcIDsKK+WGmeecn+WutiA8IHNoYXNoaW5rYVwgOwor6LuK5qSF5a2QIDwga3VydW1haXN1XCA7Civmj67mr6vmlpkgPCBraWdvdXJ5b3VcIDsKK+iHquW3seW8geittyA8IGppa29iZW5nb1wgOwor6K2m5ZGK6Z+zIDwga2Vpa29rdW9uXCA7CivmlZnmjojpmaMgPCBreW91anVqaW5cIDsKK+WIneS4g+aXpSA8IHNob25hbm9rYVwgOwor5a6J5b+D5oSfIDwgYW5zaGlua2FuXCA7Civlv6Dnr4AgPCBjaHV1c2V0c3VcIDsKK+mJouW3uyA8IGhhY2hpbWFraVwgOwor5aSn5YWl6YGTIDwgb29ueXV1ZG91XCA7CivnpL7kvJrmgqogPCBzaGFrYWlha3VcIDsKK+WShOWutiA8IGhhbmFzaGlrYVwgOwor5Li76KO95ZOBIDwgc2h1c2VpaGluXCA7CivnhKHmsJflipsgPCBtdWtpcnlva3VcIDsKK+ekvuS8muaApyA8IHNoYWthaXNlaVwgOwor6ISx6ISC57a/IDwgZGFzc2hpbWVuXCA7CivmsJfosaHlj7AgPCBraXNob3VkYWlcIDsKK+WRveS7pOW9oiA8IG1laXJlaWtlaVwgOwor6KuW55CG5a2mIDwgcm9ucmlnYWt1XCA7Civlrp/kvZPoq5YgPCBqaXR0YWlyb25cIDsKK+Wwj+S8mua0viA8IHNob3VrYWloYVwgOwor5ZCM5YCk5oCnIDwgZG91Y2hpc2VpXCA7CivphbjmgKflsqkgPCBzYW5zZWlnYW5cIDsKK+efjemRoCA8IGtha3VzaGFrdVwgOwor5LiL6Laz55WqIDwgZ2Vzb2t1YmFuXCA7CivkupTljYHpn7Plm7MgPCBnb2p1dW9uenVcIDsKK+aWpeWAmeWFtSA8IHNla2tvdWhlaVwgOwor5aW95b2x6Z+/IDwga291ZWlreW91XCA7CivnlJ/ljJblraYgPCBzZWlrYWdha3VcIDsKK+ippuS5l+i7iiA8IHNoaWpvdXNoYVwgOwor5Zyn5Yi255qEIDwgYXNzZWl0ZWtpXCA7Civngq3phbjntJkgPCB0YW5zYW5zaGlcIDsKK+WIqeS7luS4u+e+qSA8IHJpdGFzaHVnaVwgOwor5YaN5b6T5byfIDwgc2FpanV1dGVpXCA7CivkvZnoqIjogIUgPCB5b2tlaW1vbm9cIDsKK+avkuiZqyA8IGRva3VtdXNoaVwgOwor5LiN5a+d55WqIDwgZnVzaGluYmFuXCA7CivnkIblsYjlsYsgPCByaWt1dHN1eWFcIDsKK+S/neeuoeS6uiA8IGhva2FuJyduaW5cIDsKK+WEquiJr+mmrCA8IHl1dXJ5b3ViYVwgOwor6YGL6Ly46YePIDwgdW4nJ3l1cnlvdVwgOwor5Y2T57W2IDwgdGFrdXpldHN1XCA7CivlpKrlubPmtIsgPCB0YWloZWl5b3VcIDsKK+iyr+iUteWTgSA8IGNob3pvdWhpblwgOwor5Y2Y57OW6aGeIDwgdGFudG91cnVpXCA7Civlj5bmtoggPCB0b3Jpa2VzaGlcIDsKK+iBmualveesrCA8IGp1cmFrdWRhaVwgOwor55Sf5Y2K5Y+vIDwgbmFtYWhhbmthXCA7Civlkajlr4YgPCBzaHV1bWl0c3VcIDsKK+iSn+iSuyA8IGtvbicnbnlha3VcIDsKK+WNlOitsOaJgCA8IGt5b3VnaXNob1wgOwor5LuK5bm05bqmIDwga29uJyduZW5kb1wgOwor5ZCE5pyIIDwga2FrdXRzdWtpXCA7CivmrrXooosgPCBkYW5idWt1cm9cIDsKK+ekvuS8muWxpCA8IHNoYWthaXNvdVwgOwor5oCd5pil5pyfIDwgc2hpc2h1bmtpXCA7CivmlL7lsITmgKcgPCBob3VzaGFzZWlcIDsKK+iZq+WqkuiKsSA8IGNodXViYWlrYVwgOwor5Yqg5oyB56WI56W3IDwga2FqaWtpdG91XCA7CivlhoXlkJHmgKcgPCBuYWlrb3VzZWlcIDsKK+WEquW+heWIuCA8IHl1dXRhaWtlblwgOwor5Zub5Lq657WEIDwgeW9uaW5ndW1pXCA7CivpgIDlrLDnmoQgPCB0YWllaXRla2lcIDsKK+WWhOW+jOetliA8IHplbmdvc2FrdVwgOwor5Y+O5rKhIDwgc2h1dWJvdHN1XCA7CivpiYTlsZEgPCB0ZXRzdWt1enVcIDsKK+WKqeaJi+W4rSA8IGpvc2h1c2VraVwgOwor54Gr5pyo6YeRIDwga2Ftb2t1a2luXCA7CivljZPnrYYgPCB0YWt1aGl0c3VcIDsKK+awj+WtkOW4syA8IHVqaWtvY2hvdVwgOwor55qH5aSq5ZCOIDwga291dGFpZ291XCA7Civlj5bmrKEgPCB0b3JpdHN1Z2lcIDsKK+eJueaUu+maiiA8IHRva2tvdXRhaVwgOwor5Y2T56uLIDwgdGFrdXJpdHN1XCA7CivpgbroqIDogIUgPCB5dWlnb25zaGFcIDsKK+mDt+Wcn+WPsiA8IGt5b3Vkb3NoaVwgOwor5q2j6YGTIDwgbWFzYW1pY2hpXCA7Civku5jlsZ7moKEgPCBmdXpva3Vrb3VcIDsKK+ayiOayoSA8IGNoaW5ib3RzdVwgOwor57Wx5rK76ICFIDwgdG91Y2hpc2hhXCA7CivlkI3kurroirggPCBtZWlqaW5nZWlcIDsKK+WHhOaWh+WPpSA8IHN1Z29tb25rdVwgOwor5oim54G96ICFIDwgc2Vuc2Fpc2hhXCA7CivoqabkvZzmqZ8gPCBzaGlzYWt1a2lcIDsKK+m7hOaer+iMtiA8IGtpZ2FyYWNoYVwgOwor6IOD6IW46JasIDwgaWNob3V5YWt1XCA7Civmr5LoiIwgPCBkb2t1emV0c3VcIDsKK+mZvembu+WtkCA8IHlvdWRlbnNoaVwgOwor56Oo5rGBIDwgdG9naXNoaXJ1XCA7Civmlofmrormp5ggPCBtb25qdXNhbWFcIDsKK+W9ueiBtyA8IHlha3VzaG9rdVwgOwor5LuY5bGe5pu4IDwgZnV6b2t1c2hvXCA7CivoqI7oq5bogIUgPCB0b3Vyb25zaGFcIDsKK+Wkmuaxl+eXhyA8IHRha2Fuc2hvdVwgOwor56Kn546JIDwgaGVraWd5b2t1XCA7CivmipXmiYvpmaMgPCB0b3VzaHVqaW5cIDsKK+S4ree2meaJgCA8IGNodXVrZWlqb1wgOwor5qC55oug5ZywIDwga29ua3lvY2hpXCA7Civms5XkurrnqI4gPCBob3VqaW56ZWlcIDsKK+WcsOWFg+awkSA8IGppbW90b21pblwgOwor5bm05pyf6ICFIDwgbmVua2ltb25vXCA7CivphbfnhrEgPCBrb2t1bmV0c3VcIDsKK+iKseWNieWckuiKuCA8IGtha2llbmdlaVwgOwor6Z+z5qW95oCnIDwgb25nYWt1c2VpXCA7CivooqvlkYrkurogPCBoaWtva3VuaW5cIDsKK+aWh+WMluW6gSA8IGJ1bmthY2hvdVwgOwor5YGP5ZCR5p2/IDwgaGVua291YmFuXCA7Civog4zku7vnvaogPCBoYWluaW56YWlcIDsKK+WCjeims+iAhSA8IGJvdWthbnNoYVwgOwor6JS15rWaIDwga3VyYXphcmFlXCA7CivmmJ/nirbkvZMgPCBzZWlqb3V0YWlcIDsKK+a2iOWMluWJpCA8IHNob3VrYXphaVwgOwor5qyn5bee54mIIDwgb3VzaHV1YmFuXCA7Civlkozoo73oi7Hoqp4gPCB3YXNlaWVpZ29cIDsKK+WPo+aXqSA8IGt1Y2hpYmF5YVwgOwor5bCP6LGG57KlIDwgYXp1a2lnYXl1XCA7CivmsYHniakgPCBzaGlydW1vbm9cIDsKK+ezu+Wbs+WtpiA8IGtlaXp1Z2FrdVwgOwor6YW354OIIDwga29rdXJldHN1XCA7Civku67lkI3miYvmnKwgPCBrYW5hZGVob25cIDsKK+iThOepjSA8IGNoaWt1c2VraVwgOwor5pu457Ch566LIDwgc2hva2Fuc2VuXCA7Civlho3phY3liIYgPCBzYWloYWlidW5cIDsKK+W8seiZqyA8IHlvd2FtdXNoaVwgOwor5Y2U6K2w5a6YIDwga3lvdWdpa2FuXCA7CivlkIzpoZ7poIUgPCBkb3VydWlrb3VcIDsKK+iHqui7oui7uCA8IGppdGVuamlrdVwgOwor5b+g54OIIDwgY2h1dXJldHN1XCA7CivkuIrnlLLmnb8gPCBqb3VrYW5wYW5cIDsKK+aDnOWIpSA8IHNla2liZXRzdVwgOwor5YWo5Zyw5pa5IDwgemVuY2hpaG91XCA7CivkvJrnpL7ms5UgPCBrYWlzaGFob3VcIDsKK+a0u+WKhyA8IGthdHN1Z2VraVwgOwor5aWJ5LuV5ZOBIDwgaG91c2hpaGluXCA7CivmiKrmi7PpgZMgPCBzZWtrZW5kb3VcIDsKK+WPsOaJgCA8IGRhaWRva29yb1wgOwor5LuV6Iie5bGLIDwgc2hpbW90YXlhXCA7CivmipjoobfmoYggPCBzZXRjaHV1YW5cIDsKK+iIquepuumaiiA8IGtvdWt1dXRhaVwgOwor6J2m6J+H5Y+jIDwgZ2FtYWd1Y2hpXCA7CivnpoHmraLms5UgPCBraW5zaGlob3VcIDsKK+mBk+WFt+aWuSA8IGRvdWd1a2F0YVwgOwor5b6M56iLIDwgbm9jaGlob2RvXCA7Civml6bpgqPoirggPCBkYW4nJ25hZ2VpXCA7CivmibbppIrmlpkgPCBmdXlvdXJ5b3VcIDsKK+W8k+ihkyA8IGt5dXVqdXRzdVwgOwor5LiN5L+h5b+DIDwgZnVzaGluamluXCA7CivpgaDov5EgPCBvY2hpa29jaGlcIDsKK+WKm+iqrCA8IHJpa2lzZXRzdVwgOwor5bmz5a6J5pydIDwgaGVpYW5jaG91XCA7CivlhoXph47luK0gPCBuYWl5YXNla2lcIDsKK+WboOaenOW+iyA8IGluZ2FyaXRzdVwgOwor6Iux5ZKM6L6e5YW4IDwgZWl3YWppdGVuXCA7Civou73mvJTliocgPCBrZWllbmdla2lcIDsKK+S6iOWCmeS8muitsCA8IHlvYmlrYWlnaVwgOwor5p2/6YeR5belIDwgYmFua2lua291XCA7CivlrprkvqHooaggPCB0ZWlrYWh5b3VcIDsKK+evpOW/l+WutiA8IHRva3VzaGlrYVwgOwor6bSs6ImyIDwgdWd1aXN1aXJvXCA7CivoqabpqJPloLQgPCBzaGlrZW5qb3VcIDsKK+aXheihjOiAhSA8IHJ5b2tvdXNoYVwgOwor5q2v6b2m54KOIDwgc2hpZ2luJydlblwgOwor6Ju45Z2K5Li7IDwgdGFrb2JvdXp1XCA7CivljZrniakgPCBoYWt1YnV0c3VcIDsKK+WPguaUv+WumCA8IHNhbnNlaWthblwgOwor6LuN5LqL55qEIDwgZ3Vuaml0ZWtpXCA7Civlj6Tpiq3lraYgPCBrb3Nlbmdha3VcIDsKK+i7jeWumOaGsiA8IGd1bmthbmtlblwgOwor6Zai5pWw6KuWIDwga2Fuc3V1cm9uXCA7CivmsrvnmYLosrsgPCBjaGlyeW91aGlcIDsKK+avkuethiA8IGRva3VoaXRzdVwgOwor5ZGR5Y+jIDwgbm9taWd1Y2hpXCA7Civlkb3kuZ4gPCBpbm9jaGlnb2lcIDsKK+adv+mHkeWxiyA8IGJhbmtpbicneWFcIDsKK+aTjei7iuWgtCA8IHNvdXNoYWpvdVwgOwor5oqV6J6N6LOHIDwgdG91eXV1c2hpXCA7CivnpL7kuqTmgKcgPCBzaGFrb3VzZWlcIDsKK+aTrOeIhuW8viA8IGdpYmFrdWRhblwgOwor56u56Jy76JuJIDwgdGFrZXRvbmJvXCA7CivmgYvlv4MgPCBrb2lnb2tvcm9cIDsKK+i2heWFmua0viA8IGNob3V0b3VoYVwgOwor5ZWP6aGM5aSWIDwgbW9uZGFpZ2FpXCA7CivkuIDoiKznmoQgPCBpcHBhbnRla2lcIDsKK+izh+acrOmHkSA8IHNoaWhvbmtpblwgOwor5oKq5Y+jIDwgd2FydWd1Y2hpXCA7CivnlLflrZDnlKggPCBkYW5zaGl5b3VcIDsKK+WInembqiA8IGhhdHN1eXVraVwgOwor56S+5Lya5YWaIDwgc2hha2FpdG91XCA7Civljq3kuJbnmoQgPCBlbnNlaXRla2lcIDsKK+W8seiFsCA8IHlvd2Fnb3NoaVwgOwor6KiT57e055SfIDwga3VucmVuc2VpXCA7CivpgIbpnpggPCBneWFrdXpheWFcIDsKK+i0iOWRiOacrCA8IHpvdXRlaWJvblwgOwor5LqM6Zmi5Yi25bqmIDwgbmlpbnNlaWRvXCA7CivlubTpoIMgPCB0b3NoaWdvcm9cIDsKK+WutuaXj+azlSA8IGthem9rdWhvdVwgOwor5Lq65rCX5qCqIDwgbmlua2lrYWJ1XCA7Civoqq3lvozmhJ8gPCBkb2t1Z29rYW5cIDsKK+WNmOe0sOiDniA8IHRhbnNhaWJvdVwgOwor6bO056a96aGeIDwgbWVpa2lucnVpXCA7CivlhoXpg6jnmoQgPCBuYWlidXRla2lcIDsKK+e3tOWFteWgtCA8IHJlbnBlaWpvdVwgOwor5aSP5pyf5pmC6ZaTIDwga2FraWppa2FuXCA7CivlpKfliY3mj5AgPCBkYWl6ZW50ZWlcIDsKK+edgOmZuCA8IGNoYWt1cmlrdVwgOwor5YaN5b6T5YWEIDwgc2FpanV1a2VpXCA7CivlkYrliKUgPCBrb2t1YmV0c3VcIDsKK+WPr+WLleapiyA8IGthZG91a3lvdVwgOwor5rC05rK5IDwgbWl6dWFidXJhXCA7CivmsLfmsLQgPCBrb29yaW1penVcIDsKK+mfs+alveWggiA8IG9uZ2FrdWRvdVwgOwor6I2S6Zqg5YWDIDwgc2F5YWluZ2VuXCA7CivkupXmiLjlsYvlvaIgPCBpZG95YWthdGFcIDsKK+a0l+ekvOWQjSA8IHNlbnJlaW1laVwgOwor54++5qWt5ZOhIDwgZ2VuZ3lvdWluXCA7CivkuIDlt6XlpKsgPCBoaXRva3VmdXVcIDsKK+WJjei8vyA8IHNha2lnb3NoaVwgOwor5Y+35a6kIDwgZ291c2hpdHN1XCA7Civohp3lsI/lg6cgPCBoaXpha296b3VcIDsKK+iHquW3seefm+ebviA8IGppa29tdWp1blwgOwor5L2c6Kme5a62IDwgc2FrdXNoaWthXCA7CivkvZzngrrnmoQgPCBzYWt1aXRla2lcIDsKK+Wwj+Wuh+WumSA8IHNob3V1Y2h1dVwgOwor6aKo5rC05a6zIDwgZnV1c3VpZ2FpXCA7CivlpKfou4rovKogPCBkYWlzaGFyaW5cIDsKK+aUueWumueJiCA8IGthaXRlaWhhblwgOwor56S+5Lya5Lq6IDwgc2hha2FpamluXCA7CivmgqrlvbHpn78gPCBha3VlaWt5b3VcIDsKK+ilv+mDqOWKhyA8IHNlaWJ1Z2VraVwgOwor6ZuR6LKo5ZWGIDwgemFra2FzaG91XCA7CivliqPnrYnmhJ8gPCByZXR0b3VrYW5cIDsKK+WHuumhmCA8IHNodXRzdWdhblwgOwor6YCP5piO5oCnIDwgdG91bWVpc2VpXCA7Civlh7rpoYwgPCBzaHV0c3VkYWlcIDsKK+iLpeWkq+WppiA8IHdha2FmdXVmdVwgOwor6bGX6ZuyIDwgdXJva29ndW1vXCA7CivptIPoiIwgPCBnZWtpemV0c3VcIDsKK+mZsOmZvemBkyA8IG9ubXlvdWRvdVwgOwor5LyR5oap5omAIDwga3l1dWtlaWpvXCA7CivphY3ntabmiYAgPCBoYWlreXV1am9cIDsKK+ijhei6q+WFtyA8IHNvdXNoaW5ndVwgOwor54Sh5qyg5bitIDwgbXVrZXNzZWtpXCA7Civoh6rliLblv4MgPCBqaXNlaXNoaW5cIDsKK+mAmumHiCA8IHRzdXVzaGFrdVwgOwor56CC57KSIDwgc3VuYXRzdWJ1XCA7Civlia/kvZznlKggPCBmdWt1c2F5b3VcIDsKK+WGjemBuOaMmSA8IHNhaXNlbmt5b1wgOwor6Zqg5Yy/6ICFIDwgaW50b2t1c2hhXCA7CivlkIzkurrnqK4gPCBkb3VqaW5zaHVcIDsKK+mBi+mAgealrSA8IHVuc291Z3lvdVwgOwor5YaF5YuZ55yBIDwgbmFpbXVzaG91XCA7Civngq3phbjmsLQgPCB0YW5zYW5zdWlcIDsKK+ihm+eUn+eahCA8IGVpc2VpdGVraVwgOwor5YaN55m66KGMIDwgc2FpaGFra291XCA7CivpgbroqIDnirYgPCB5dWlnb25qb3VcIDsKK+mAn+mBlCA8IHNva3V0YXRzdVwgOwor54K555y85rC0IDwgdGVuZ2Fuc3VpXCA7Civou73lkIjph5EgPCBrZWlnb3VraW5cIDsKK+S4gOeZuuWxiyA8IGlwcGF0c3V5YVwgOwor5Ye66ZmjIDwgc2h1dHN1amluXCA7Civlhajoo73lk4EgPCB6ZW5zZWloaW5cIDsKK+mAmumBlCA8IHRzdXV0YXRzdVwgOwor5b+c5Y+s6ICFIDwgb3VzaG91c2hhXCA7CivliJ3ph5wgPCBoYXRzdWdhbWFcIDsKK+WPpOWNsOe0mSA8IGZ1cnVpbnNoaVwgOwor6LOH5pys6LKhIDwgc2hpaG9uemFpXCA7Civlm57poafnmoQgPCBrYWlrb3Rla2lcIDsKK+S6jOimquetiSA8IG5pc2hpbnRvdVwgOwor5Lqk5oim5qipIDwga291c2Vua2VuXCA7CivluoPloLHoqowgPCBrb3Vob3VzaGlcIDsKK+S+i+W5tOelrSA8IHJlaW5lbnNhaVwgOwor5LqI6Ziy6JasIDwgeW9ib3V5YWt1XCA7Civlkozlo7DlraYgPCB3YXNlaWdha3VcIDsKK+WHuumWgCA8IHNodXRzdW1vblwgOwor6Z+z5qW95Y+yIDwgb25nYWt1c2hpXCA7CivokI7nuK7ohY4gPCBpc2h1a3VqaW5cIDsKK+ebl+iBtOWZqCA8IHRvdWNob3VraVwgOwor5LqI57SE6YeRIDwgeW95YWt1a2luXCA7Civph6PloIAgPCB0c3VyaWJvcmlcIDsKK+aYpeWgtOaJgCA8IGhhcnViYXNob1wgOwor56ef5bq46Kq/IDwgc295b3VjaG91XCA7Civov5HpoIMgPCBjaGlrYWdvcm9cIDsKK+mztuiBtyA8IHRvYmlzaG9rdVwgOwor5Y6f5a2Q6KuWIDwgZ2Vuc2hpcm9uXCA7CivnhKHmqZ/niakgPCBtdWtpYnV0c3VcIDsKK+axuuitsOahiCA8IGtldHN1Z2lhblwgOwor5Ym15L2c5a62IDwgc291c2FrdWthXCA7CivniJvnhp/mnJ8gPCByYW5qdWt1a2lcIDsKK+S4remWk+a0viA8IGNodXVrYW5oYVwgOwor55+z562GIDwgc2VraWhpdHN1XCA7Civph4znqIvmqJkgPCByaXRlaWh5b3VcIDsKK+izh+acrOirliA8IHNoaWhvbnJvblwgOwor5LuK5qeY5q2MIDwgaW1heW91dXRhXCA7Civnn7Pnq7kgPCBzZWtpY2hpa3VcIDsKK+W8lee2sSA8IGhpa2lkenVuYVwgOwor5Lya5rSl5aGXIDwgYWlkenVudXJpXCA7CivkuLjlnYrkuLsgPCBtYXJ1Ym91enVcIDsKK+enu+akjeaApyA8IGlzaG9rdXNlaVwgOwor55+t562SIDwgdGFuZHp1dHN1XCA7CivliKXlpKnlnLAgPCBiZXR0ZW5jaGlcIDsKK+avkueJqSA8IGRva3VidXRzdVwgOwor5Y2z5pelIDwgc29rdWppdHN1XCA7CivpmLLnqbrlo5UgPCBib3VrdXVnb3VcIDsKK+mAg+mBkyA8IG5pZ2VtaWNoaVwgOwor6YGL6YCB5paZIDwgdW5zb3VyeW91XCA7CivnpZ7kuLsgPCBrYW4nJ251c2hpXCA7Civlub3pnIroiLkgPCB5dXVyZWlzZW5cIDsKK+S8r+WCmee3miA8IGhha3ViaXNlblwgOwor6IOD6IW455eFIDwgaWNob3VieW91XCA7CivljbHmqZ/nrqHnkIYgPCBraWtpa2FucmlcIDsKK+WQiOWNsCA8IGFpamlydXNoaVwgOwor5Z+656SO5L2T5ripIDwga2lzb3RhaW9uXCA7CivljZLmpa0gPCBzb3RzdWd5b3VcIDsKK+WRiuekuuadvyA8IGtva3VqaWJhblwgOwor5bCP5L2c5Lq6IDwga29zYWt1bmluXCA7Civpm6LplpPnrZYgPCByaWthbnNha3VcIDsKK+WLneedgCA8IHNob3VjaGFrdVwgOwor5byxIDwgbmF5b25heW9cIDsKK+i5siA8IHRzdWt1YmFpXCA7Civlp5EgPCBzaHV1dG9tZVwgOwor5aGKIDwga2F0YW1hcmlcIDsKK+WgpCA8IHRzdXRzdW1pXCA7CivpvJMgPCB0c3VkenVtaVwgOwor5rqQIDwgbWluYW1vdG9cIDsKK+m2jyA8IG5pd2F0b3JpXCA7Civlj6IgPCBrdXNhbXVyYVwgOwor5Y2wIDwgc2hpcnVzaGlcIDsKK+mtgiA8IHRhbWFzaGlpXCA7CivohbggPCBoYXJhd2F0YVwgOwor5p2vIDwgc2FrYXp1a2lcIDsKK+mbtyA8IGthbWluYXJpXCA7Civpm4EgPCBrYXJpZ2FuZVwgOwor5pqBIDwgYWthdHN1a2lcIDsKK+e0qyA8IG11cmFzYWtpXCA7CivmjowgPCB0ZW5vaGlyYVwgOwor5oqRIDwgc29tb3NvbW9cIDsKK+aHkCA8IGZ1dG9rb3JvXCA7CivlkJDlh7ogPCB0b3NodXRzdVwgOwor6YeR5Z6LIDwga2FuYWdhdGFcIDsKK+efs+elniA8IHNoYWt1amluXCA7CivlkI3liLkgPCBtZWlzYXRzdVwgOwor5by+552AIDwgZGFuY2hha3VcIDsKK+iQveexjSA8IHJha3VzZWtpXCA7Civnn6LnrZIgPCB5YWR6dXRzdVwgOwor5b+D5pyNIDwgc2hpbnB1a3VcIDsKK+mAhui7oiA8IGd5YWt1dGVuXCA7CivlkIjlipsgPCBnb3VyeW9rdVwgOwor6JaZ5YiAIDwgbmFnaW5hdGFcIDsKK+WQjOWIlyA8IGRvdXJldHN1XCA7CivmsJHmlbDoqJggPCBtaW5zdXVraVwgOwor6YmE56Cy5bqnIDwgdGVwcG91emFcIDsKK+ebguiYreebhuS8miA8IHVyYWJvbicnZVwgOwor5paH5YyW5Lq6IDwgYnVua2FqaW5cIDsKK+acqOW3peaJgCA8IG1va2tvdWpvXCA7CivljLvnp5Hmra/np5EgPCBpa2FzaGlrYVwgOwor55u06Z2iIDwgY2hva3VtZW5cIDsKK+S4gOiIrOazlSA8IGlwcGFuaG91XCA7Civlvqnmpa0gPCBmdWt1Z3lvdVwgOwor6JaE5Y+jIDwgdXN1a3VjaGlcIDsKK+WKtOWLmeiAhSA8IHJvdW11c2hhXCA7CivojYnpo58gPCBzb3VzaG9rdVwgOwor5paH5bqr5pysIDwgYnVua29ib25cIDsKK+W4uOmXhyA8IHRva295YW1pXCA7CivlkIjlhoogPCBnb3VzYXRzdVwgOwor5Yml6JC9IDwgaGFrdXJha3VcIDsKK+iMtumrqiA8IGNoYXBhdHN1XCA7CivpgJ/oqq0gPCBzb2t1ZG9rdVwgOwor5Y6z5a+GIDwgZ2VubWl0c3VcIDsKK+S7o+eQhuS6uiA8IGRhaXJpbmluXCA7CivmtbfmsLTnnYAgPCBrYWlzdWlnaVwgOwor5Ye66YO3IDwgc2h1a2t5b3VcIDsKK+WOmuW6lSA8IGF0c3V6b2tvXCA7Civoh6rlt7HmtYEgPCBqaWtvcnl1dVwgOwor5byV56qTIDwgaGlraW1hZG9cIDsKK+S4geWvp+iqniA8IHRlaW5laWdvXCA7CivliIbovYQgPCBidW5rYXRzdVwgOwor6Z+z5qW95LyaIDwgb25nYWtrYWlcIDsKK+WQjOiDnuaEmyA8IGRvdWhvdWFpXCA7CivpgJroqq0gPCB0c3V1ZG9rdVwgOwor5q+b5ZSQ5Lq6IDwga2V0b3VqaW5cIDsKK+awkeS6i+S4iiA8IG1pbmppam91XCA7Civmt6HlvannlLsgPCB0YW5zYWlnYVwgOwor5pyf5b6F5YCkIDwga2l0YWljaGlcIDsKK+mBnOiJsiA8IHNvbnNob2t1XCA7Civlhajoo7jkvZMgPCB6ZW5yYXRhaVwgOwor56uL5L2T5rS+IDwgcml0dGFpaGFcIDsKK+i/vei3oSA8IHRzdWlzZWtpXCA7Civli7LniLUgPCBrdW5zaGFrdVwgOwor6K236YCB6Ii5IDwgZ29zb3VzZW5cIDsKK+mAmuiosyA8IHRzdXV5YWt1XCA7Civph47om67kurogPCB5YWJhbmppblwgOwor5Y+q5Y+qIDwgdGFkYXRhZGFcIDsKK+WPi+WeoyA8IHRvbW9nYWtpXCA7CivlpbPmgKfou40gPCBqb3NlaWd1blwgOwor5ZCM6Laj5ZGzIDwgZG91c2h1bWlcIDsKK+WNiuaciCA8IGhhbnRzdWtpXCA7Civlj6/li5XmgKcgPCBrYWRvdXNlaVwgOwor5LiN6aSK55SfIDwgZnV5b3Vqb3VcIDsKK+mjveWSjOeCuSA8IGhvdXdhdGVuXCA7CivnnJ/ov7kgPCBzaGluc2VraVwgOwor5pei5b6A55eHIDwga2lvdXNob3VcIDsKK+WQieS+iyA8IGtpdHN1cmVpXCA7Civov5HpiYQgPCBraW50ZXRzdVwgOwor6Iy26aOvIDwgY2hhbWVzaGlcIDsKK+WIpeiogCA8IGJldHN1Z2VuXCA7CivmrpbnlKMgPCBzaG9rdXNhblwgOwor6YeR5Y+jIDwga2luZ3VjaGlcIDsKK+mAoOihgCA8IHpvdWtldHN1XCA7Civps6XnsaAgPCB0b3Jpa2Fnb1wgOwor5YuD55m6IDwgYm9wcGF0c3VcIDsKK+W7uueviSA8IGtlbmNoaWt1XCA7CivkuIDoh7TngrkgPCBpdGNoaXRlblwgOwor5Ye66LqrIDwgc2h1c3NoaW5cIDsKK+ethuiomOiAhSA8IGhpa2tpc2hhXCA7CivljYHmnIggPCBqdXVnYXRzdVwgOwor6YCB6aKo5qmfIDwgc291ZnV1a2lcIDsKK+WPo+WNoCA8IGt1Y2hpdXJhXCA7Civlp6vlvqHlrZAgPCBoaW1lbWlrb1wgOwor5omL6YWN5pu4IDwgdGVoYWlzaG9cIDsKK+ato+eriyA8IHNlaXJpdHN1XCA7Civpr6jpqqggPCBnZWlrb3RzdVwgOwor5rGC5b+DIDwga3l1dXNoaW5cIDsKK+ebuOmOmiA8IGFpZHp1Y2hpXCA7CivnnLzorZggPCBnYW5zaGlraVwgOwor6ISz54+K55GaIDwgbm91c2FuZ29cIDsKK+S4iuWxpOWcnyA8IGpvdXNvdWRvXCA7Civlv4Pmi40gPCBzaGlucGFrdVwgOwor5LqI57SE6KqeIDwgeW95YWt1Z29cIDsKK+W9vOatpCA8IGthcmVrb3JlXCA7Civmsrnmp73oiLkgPCB5dXNvdXNlblwgOwor5q2v56OoIDwgaGFtaWdha2lcIDsKK+W4nemXlSA8IHRlaWtldHN1XCA7CivkuIDlr7joposgPCBjaG90dG9taVwgOwor5LqI6Ziy57eaIDwgeW9ib3VzZW5cIDsKK+WLmOWumuaXpSA8IGthbmpvdWJpXCA7CivlhoXpsJAgPCB1Y2hpd2FuaVwgOwor5Y+k5Ym1IDwgZnVydWtpenVcIDsKK+m0qOeMnyA8IGthbW9yeW91XCA7CivmsqHljbQgPCBib2treWFrdVwgOwor5YaF5biR6YeRIDwgbmFpZG9raW5cIDsKK+mHkeWKmyA8IGtpbnJ5b2t1XCA7Civlj7PlgbQgPCBtaWdpZ2F3YVwgOwor5Ye66LaFIDwgc2h1dGNob3VcIDsKK+WPo+WJjSA8IGt1Y2hpbWFlXCA7CivkvJ3pgIHot68gPCBkZW5zb3Vyb1wgOwor5Yi76JaEIDwga29rdWhha3VcIDsKK+mKgOe0sOW3pSA8IGdpbnphaWt1XCA7Civkurrnm7joposgPCBuaW5zb3VtaVwgOwor5rC05oCnIDwgbWl6dXNob3VcIDsKK+W6g+iiliA8IGhpcm9zb2RlXCA7Civph43lipsgPCBqdXVyeW9rdVwgOwor6aKo5Yi655S7IDwgZnV1c2hpZ2FcIDsKK+ebuOmJhCA8IHNvdXRldHN1XCA7Civojbfou4ogPCBuaWd1cnVtYVwgOwor5YuV54mpIDwgZG91YnV0c3VcIDsKK+WNiOmkkOS8miA8IGdvc2Fua2FpXCA7Civnn6XnlaUgPCBjaGlyeWFrdVwgOwor55uu6YyyIDwgbW9rdXJva3VcIDsKK+eEoeasoOWLpCA8IG11a2Vra2luXCA7Civmr5Tph43oqIggPCBoaWp1dWtlaVwgOwor5YiH6KuWIDwgc2V0c3Vyb25cIDsKK+mBi+mAgeW6lyA8IHVuc291dGVuXCA7Civlh7bos4ogPCBreW91em9rdVwgOwor5pON5L2c55ukIDwgc291c2FiYW5cIDsKK+edgOijhSA8IGNoYWt1c291XCA7CivlnKjluqvlk4EgPCB6YWlrb2hpblwgOwor6YGF6ISIIDwgY2hpbXlha3VcIDsKK+awtOW8lSA8IG1penVoaWtpXCA7CivmqYjpqqggPCB0b3Vrb3RzdVwgOwor5q6y5ruFIDwgc2VubWV0c3VcIDsKK+WGoOmbqiA8IGthbnNldHN1XCA7CivljJfmpbUgPCBob2treW9rdVwgOwor5bm76KGTIDwgZ2VuanV0c3VcIDsKK+awt+W6iiA8IGh5b3VzaG91XCA7CivlioPnrZYgPCBrYWt1c2FrdVwgOwor5rCR5Li75YyWIDwgbWluc2h1a2FcIDsKK+WNs+W4rSA8IHNva3VzZWtpXCA7Civlu7bmu57ph5EgPCBlbnRhaWtpblwgOwor5Y+I5Y+IIDwgbWF0YW1hdGFcIDsKK+awtOW6lSA8IG1pbmFzb2tvXCA7CivllJDnoLTpoqggPCBrYXJhaGFmdVwgOwor55u06YWNIDwgY2hva3VoYWlcIDsKK+WIh+iogCA8IHNldHN1Z2VuXCA7Civoh6rlhazmsJEgPCBqaWtvdW1pblwgOwor5oCl5ZGKIDwga3l1dWtva3VcIDsKK+mHiOWFuCA8IHNoYWt1dGVuXCA7Civos6LlpKvkurogPCBrZW5wdWppblwgOwor5q+r5pyrIDwgZ291bWF0c3VcIDsKK+WNiuaKmCA8IGhhbnNldHN1XCA7CivlubPoopYgPCBoaXJhc29kZVwgOwor5LqM5bqm5omL6ZaTIDwgbmlkb2RlbWFcIDsKK+mvm+mjryA8IHRhaW1lc2hpXCA7CivpgYvou6LogIUgPCB1bnRlbnNoYVwgOwor5YiH6KaBIDwgc2V0c3V5b3VcIDsKK+W3u+mbsiA8IG1ha2lndW1vXCA7CivkuI3moLzlpb0gPCBidWtha2tvdVwgOwor5YKs5rer5YmkIDwgc2FpaW56YWlcIDsKK+aui+eJqSA8IHphbmJ1dHN1XCA7CivmoITppIrnn60gPCBlaXlvdXRhblwgOwor5oWL44CFIDwgd2F6YXdhemFcIDsKK+WKq+eVpSA8IGdvdXJ5YWt1XCA7Civlj43liKUgPCB0YW5iZXRzdVwgOwor5q2j55u0IDwgc2hvdWppa2lcIDsKK+WMu+WtpueVjCA8IGlnYWt1a2FpXCA7CivlirnnjocgPCBrb3VyaXRzdVwgOwor54Sh5bi45oSfIDwgbXVqb3VrYW5cIDsKK+WPquS6iyA8IHRhZGFnb3RvXCA7CivnoqnlraYgPCBzZWtpZ2FrdVwgOwor6IOM5qC85aW9IDwgc2VrYWtrb3VcIDsKK+Wxseafu+WtkCA8IHNhbnphc2hpXCA7CivljLvlrabnlJ8gPCBpZ2FrdXNlaVwgOwor5rC05bWpIDwgbWl6dWthc2FcIDsKK+mWi+alreWMuyA8IGthaWd5b3VpXCA7Civnm7TpgIEgPCBjaG9rdXNvdVwgOwor5YiG6KOCIDwgYnVucmV0c3VcIDsKK+W9ueafhCA8IHlha3VnYXJhXCA7Civlh4zovrEgPCByeW91am9rdVwgOwor5b6L5paHIDwgcml0c3VidW5cIDsKK+eoi+OAhSA8IGhvZG9ob2RvXCA7Civlj47lhaUgPCBzaHV1bnl1dVwgOwor5L6/6KGj6ZqKIDwgYmVuJydpdGFpXCA7Civoi6Xpto8gPCB3YWthZG9yaVwgOwor5rKI5YuHIDwgY2hpbicneXV1XCA7Civlj4zlha0gPCBzdWdvcm9rdVwgOwor5buD57W2IDwgaGFpemV0c3VcIDsKK+W5ueS6i+S8miA8IGthbmppa2FpXCA7CivpgZPns7ggPCBtaWNoaWl0b1wgOwor5aSa5Y6f5a2QIDwgdGFnZW5zaGlcIDsKK+WJteeriyA8IHNvdXJpdHN1XCA7CivljZTlv4MgPCBreW91c2hpblwgOwor5YyX5pydIDwgaG9rdWNob3VcIDsKK+WLh+eDiCA8IHl1dXJldHN1XCA7CivmgKfliKUgPCBzZWliZXRzdVwgOwor5YuD54S2IDwgYm90c3V6ZW5cIDsKK+WNgeWtl+W9oiA8IGp1dWppa2VpXCA7CivljZjlvI8gPCB0YW5zaGlraVwgOwor5aSW6YeO5omLIDwgZ2FpeWFzaHVcIDsKK+WBpeiDg+mMoCA8IGtlbicnaWpvdVwgOwor6Zai6KW/6aasIDwga2Fuc2FpYmFcIDsKK+aMh+ekuuipniA8IHNoaWppc2hpXCA7Civlj4LliJcgPCBzYW5yZXRzdVwgOwor5piO5pel6JGJIDwgYXNoaXRhYmFcIDsKK+awl+W/gyA8IGtpZ29rb3JvXCA7Civnn63ot53pm6IgPCB0YW5reW9yaVwgOwor5LiA6LuS5bGLIDwgaWtrZW4nJ3lhXCA7Civlt53poqggPCBrYXdha2F6ZVwgOwor6Iq45YKZ57eaIDwgZ2VpYmlzZW5cIDsKK+WIgOihkyA8IHRvdWp1dHN1XCA7CivljKHmlZEgPCBreW91a3l1dVwgOwor5q2754mpIDwgc2hpYnV0c3VcIDsKK+WIs+iInyA8IGt1cmlidW5lXCA7CivpmaPlpKrpvJMgPCBqaW5kYWlrb1wgOwor55yf5Yas5pelIDwgbWFmdXl1YmlcIDsKK+Wbm+Wto+WgsSA8IHNoaWtpaG91XCA7CivliIbonZUgPCBidW5zaG9rdVwgOwor55m96bOlIDwgaGFrdWNob3VcIDsKK+WFtemjnyA8IGhlaXNob2t1XCA7Civmrr/mp5ggPCB0b25vc2FtYVwgOwor5Y+C5YWlIDwgc2FuJydueXV1XCA7Civlj5fku5ggPCB1a2V0c3VrZVwgOwor5Y2Y5bivIDwgaGl0b2VvYmlcIDsKK+efr+a/gCA8IGt5b3VnZWtpXCA7CivmgKrlgpEgPCBrYWlrZXRzdVwgOwor5Yi66IKhIDwgc2FzdW1hdGFcIDsKK+axsuWPliA8IGt1bWl0b3JpXCA7CivnoILmtZwgPCBzdW5haGFtYVwgOwor57mB6I+v6KGXIDwgaGFua2FnYWlcIDsKK+iok+e3tOaJgCA8IGt1bnJlbmpvXCA7CivpgZTnrYYgPCB0YXBwaXRzdVwgOwor5rW35rC05ripIDwga2Fpc3Vpb25cIDsKK+eti+mbu+WbsyA8IGtpbmRlbnp1XCA7CivlibLnpLwgPCBrYXRzdXJlaVwgOwor5q+O5pyIIDwgbWFpdHN1a2lcIDsKK+azjOWwv+W5viA8IGhpbnlvdWtpXCA7CivljYflvaIgPCBtYXN1Z2F0YVwgOwor5LiN5a6J5b+DIDwgZnVhbnNoaW5cIDsKK+W3nemcpyA8IGthd2FnaXJpXCA7CivliofnmoQgPCBnZWtpdGVraVwgOwor6Kiq5ZWP552AIDwgaG91bW9uZ2lcIDsKK+WIhuiYliA8IGJ1bmtldHN1XCA7CivkvJrnpL7lk6EgPCBrYWlzaGFpblwgOwor5Y+U5LiWIDwgc2h1a3VzZWlcIDsKK+WFgOm3uSA8IGhhZ2V0YWthXCA7Civms5XnjovmqKkgPCBob3VvdWtlblwgOwor5YuY5rG6IDwga2Fua2V0c3VcIDsKK+S4jeWwjuS9kyA8IGZ1ZG91dGFpXCA7CivljZjoqablkIggPCB0YW5zaGlhaVwgOwor5Y2z5aaZIDwgc29rdW15b3VcIDsKK+WJo+eqgSA8IGtlbnRzdWt1XCA7Civlv4XlrpogPCBoaXRzdWpvdVwgOwor5YmN57SEIDwgemVuJyd5YWt1XCA7Civliofnl5sgPCBnZWtpdHN1dVwgOwor5Y2I5bm0IDwgdW1hZG9zaGlcIDsKK+W5s+iQvSA8IGhpcmFvY2hpXCA7CivnoazlvI8gPCBrb3VzaGlraVwgOwor5YaZ55Sf55S7IDwgc2hhc2VpZ2FcIDsKK+W4uOitmCA8IGpvdXNoaWtpXCA7CivnrqHnkIbkurogPCBrYW5yaW5pblwgOwor5b+D5a2mIDwgc2hpbmdha3VcIDsKK+avjuaXpSA8IG1haW5pY2hpXCA7Civnmb3pqqggPCBoYWtrb3RzdVwgOwor5LiA5a626KiAIDwgaWtrYWdvdG9cIDsKK+WNh+W4rSA8IG1hc3VzZWtpXCA7CivlkIzmnJ/nlJ8gPCBkb3VraXNlaVwgOwor5qiq6aKoIDwgeW9rb2themVcIDsKK+S4geWumuimjyA8IHRlaWpvdWdpXCA7CivpsJDotrMgPCB3YW5pYXNoaVwgOwor6YGF562GIDwgY2hpaGl0c3VcIDsKK+avjeaWuSA8IGhhaGFrYXRhXCA7CivlrojlgpnpmoogPCBzaHViaXRhaVwgOwor5rC35aOBIDwgaHlvdWhla2lcIDsKK+eenuedgCA8IG1hbmNoYWt1XCA7CivovpvovpsgPCBrYXJhZ2FyYVwgOwor55u46K2YIDwgc291c2hpa2lcIDsKK+iPnOeuuCA8IHNhaWJhc2hpXCA7CivkvbXlkIjnvaogPCBoZWlnb3phaVwgOwor6YCx57WmIDwgc2h1dWt5dXVcIDsKK+WFq+mdoiA8IGhhY2hpbWVuXCA7CivljZrlraYgPCBoYWt1Z2FrdVwgOwor5q6W5rCRIDwgc2hva3VtaW5cIDsKK+mAsue0miA8IHNoaW5reXV1XCA7CivmsJfnhKHnsr4gPCBraWJ1c2hvdVwgOwor5LiJ5p6a55uuIDwgc2FubWFpbWVcIDsKK+WJjeevgCA8IHplbnNldHN1XCA7Civlvpflv4MgPCB0b2t1c2hpblwgOwor5omL6YWN5birIDwgdGVoYWlzaGlcIDsKK+edgOiIuSA8IGNoYWt1c2VuXCA7CivlvJXmva4gPCBoaWtpc2hpb1wgOwor5bi46KitIDwgam91c2V0c3VcIDsKK+eEoeiHquimmiA8IG11amlrYWt1XCA7CivlvpflvpcgPCB0b2t1dG9rdVwgOwor6JC95r2uIDwgcmFrdWNob3VcIDsKK+W8seavkiA8IGpha3Vkb2t1XCA7CivljqXlhrcgPCBrZXRzdXJlaVwgOwor6JS15YWDIDwga3VyYW1vdG9cIDsKK+W7uueJqSA8IHRhdGVtb25vXCA7Civmrbvmu4UgPCBzaGltZXRzdVwgOwor5YuH5rG6IDwgeXV1a2V0c3VcIDsKK+WFiOmrmCA8IHNha2lkYWthXCA7Civnmbrpp4UgPCBoYXRzdWVraVwgOwor54Gr5LqL5rOlIDwga2FqaWRvcm9cIDsKK+mAgOiJsiA8IHRhaXNob2t1XCA7CivmsJflrqQgPCBraXNoaXRzdVwgOwor5Lq65bel6KqeIDwgamlua291Z29cIDsKK+aXouW+gOattCA8IGtpb3VyZWtpXCA7CivlhobpjJAgPCBtYXJ1Z2lyaVwgOwor5LiA6Iis5oCnIDwgaXBwYW5zZWlcIDsKK+WLnealvSA8IHNob3VyYWt1XCA7CivlubTmnIjml6UgPCBuZW5nYXBwaVwgOwor5YWO6aasIDwgdXNhZ2l1bWFcIDsKK+W9k+aciCA8IHRvdWdldHN1XCA7CivljYPls7YgPCBjaGlzaGltYVwgOwor5qiq6ZuyIDwgeW9rb2d1bW9cIDsKK+WkieaIkOWZqCA8IGhlbnNlaWtpXCA7CivlvpDlvpAgPCBzb3Jvc29yb1wgOwor5YWD6auYIDwgbW90b2Rha2FcIDsKK+acquS/oeiAhSA8IG1pc2hpbmphXCA7CivluKvoqqwgPCBzaGlzZXRzdVwgOwor5YyF5pGCIDwgaG91c2V0c3VcIDsKK+auv+aWuSA8IHRvbm9nYXRhXCA7CivmsJHlrr8gPCBtaW5zaHVrdVwgOwor5LiN5qGI5YaFIDwgZnVhbicnbmFpXCA7Civoh6rmo4TphZIgPCB5YWtlemFrZVwgOwor5aGR5by+5oCnIDwgc29kYW5zZWlcIDsKK+atpuWZqOWAiSA8IGJ1a2lndXJhXCA7CivpgKPntZAgPCByZW5rZXRzdVwgOwor6IG06Z+z5ZmoIDwgY2hvdW9ua2lcIDsKK+ebtOiogCA8IGNob2t1Z2VuXCA7CivlubPku67lkI0gPCBoaXJhZ2FuYVwgOwor5b2O5pyIIDwgd2FuZ2V0c3VcIDsKK+aEn+efpeWZqCA8IGthbmNoaWtpXCA7Civlt6HpjKsgPCBqdW5zaGFrdVwgOwor5b2O5puyIDwgd2Fua3lva3VcIDsKK+ebtOinkiA8IGNob2trYWt1XCA7Civlu4nnm7QgPCByZW5jaG9rdVwgOwor55u06KaWIDwgY2hva3VzaGlcIDsKK+atu+a0uyA8IHNoaWthdHN1XCA7Civlv4PlooMgPCBzaGlua3lvdVwgOwor5bmz6ISIIDwgaGVpbXlha3VcIDsKK+W9k+aXpSA8IHRvdWppdHN1XCA7CivliY3ljYrmnJ8gPCB6ZW5wYW5raVwgOwor5b6p5a2mIDwgZnVrdWdha3VcIDsKK+WFpemWoyA8IG55dXVrYWt1XCA7Civnqbroq5blrrYgPCBrdXVyb25rYVwgOwor5oG15q+U5a+/6aGUIDwgZWJpc3VnYW9cIDsKK+aoqumVtyA8IHlva29uYWdhXCA7CivmrbvmsqEgPCBzaGlib3RzdVwgOwor5YyF5ousIDwgaG91a2F0c3VcIDsKK+W/oOWRiiA8IGNodXVrb2t1XCA7Civlt7vou7ggPCBtYWtpamlrdVwgOwor6L6y6ZaR5pyfIDwgbm91a2Fua2lcIDsKK+eZvumbtyA8IGh5YWt1cmFpXCA7CivkuI3os5vmiJAgPCBmdXNhbnNlaVwgOwor55m+6ZujIDwgaHlha3VuYW5cIDsKK+mkium2j+WutiA8IHlvdWtlaWthXCA7Civlh7roir0gPCBzaHV0c3VnYVwgOwor6I+F56ygIDwgc3VnZWdhc2FcIDsKK+WJm+ebtCA8IGdvdWNob2t1XCA7CivljYHkuozmlK8gPCBqdXVuaXNoaVwgOwor5Yqg5rm/IDwga2FzaGl0c3VcIDsKK+ani+aIkOavlCA8IGtvdXNlaWhpXCA7CivlkJHml6XokbUgPCBoaW1hd2FyaVwgOwor55m66Zu7IDwgaGF0c3VkZW5cIDsKK+WIhuiEiCA8IGJ1bm15YWt1XCA7Civnm6PoqLMgPCBrYW4nJ3lha3VcIDsKK+mBheedgCA8IGNoaWNoYWt1XCA7CivmqZ/mpa3lrrYgPCBraWd5b3VrYVwgOwor5YWa6ZalIDwgdG91YmF0c3VcIDsKK+WIpee0jSA8IGJldHN1bm91XCA7CivliJHnvbAgPCBrZWliYXRzdVwgOwor5YaF6YGUIDwgbmFpdGF0c3VcIDsKK+awtOa7uOS8nSA8IHN1aWtvZGVuXCA7CivlvqHlrKLmp5ggPCBvam91c2FtYVwgOwor5b+D5ZqiIDwgc2hpbicnbm91XCA7CivlvbnlvpcgPCB5YWt1dG9rdVwgOwor6Ieo5bqK5Yy7IDwgcmluc2hvdWlcIDsKK+mAo+eriyA8IHJlbnJpdHN1XCA7Civpg7fmhIEgPCBreW91c2h1dVwgOwor5b235b2/IDwgaG91ZnV0c3VcIDsKK+W6reefsyA8IG5pd2Fpc2hpXCA7CivliIfogIUgPCBraXJlbW9ub1wgOwor6YGF55m6IDwgY2hpaGF0c3VcIDsKK+aghOmkiua6kCA8IGVpeW91Z2VuXCA7CivlpJrlubTojYkgPCB0YW5lbnNvdVwgOwor6I235Y6E5LuLIDwgbml5YWtrYWlcIDsKK+WFg+memCA8IG1vdG9zYXlhXCA7CivlirHno4HmkI0gPCByZWlqaXNvblwgOwor5a6J5YWo55OjIDwgYW56ZW5iZW5cIDsKK+mHjemFuOe0oCA8IGp1dXNhbnNvXCA7Civlv5jljbQgPCBib3VreWFrdVwgOwor5q205q20IDwgcmVraXJla2lcIDsKK+S6jOWhgeaJiyA8IG5pcnVpc2h1XCA7Civnorrkv6EgPCBrYWt1c2hpblwgOwor55+z5p+xIDwgc2VraWNodXVcIDsKK+acqOW3peWFtyA8IG1va2tvdWd1XCA7CivmrKDnlaogPCBrZXRzdWJhblwgOwor5b2w5b6zIDwgc2hvdXRva3VcIDsKK+eCueecvOWZqCA8IHRlbmdhbmtpXCA7CivmhJrlm7PmhJrlm7MgPCBndXp1Z3V6dVwgOwor6bGI6IW5IDwgdGFyYWZ1a3VcIDsKK+WJsueJqSA8IHdhcmVtb25vXCA7CivluZXoh6MgPCBiYWt1c2hpblwgOwor5YWl6YuPIDwgbnl1dWt5b3VcIDsKK+iOq+Wkp+WwjyA8IG1lcml5YXN1XCA7Civoo73pi7zmiYAgPCBzZWlrb3Vqb1wgOwor6Lu96bSoIDwga2FydWdhbW9cIDsKK+maoOiUveWtkCA8IGlucGVpc2hpXCA7Civli5jlrprloLQgPCBrYW5qb3ViYVwgOwor57695Zuj5omHIDwgaGF1Y2hpd2FcIDsKK+W/teS7jyA8IG5lbmJ1dHN1XCA7CivnoLTmiJLlg6cgPCBoYWthaXNvdVwgOwor54Cs5oi454mpIDwgc2V0b21vbm9cIDsKK+iPiuefsyA8IGtpa3Vpc2hpXCA7CivlhrfooYAgPCByZWlrZXRzdVwgOwor5bmz57W5IDwgaGlyYWdpbnVcIDsKK+mFkuWRkSA8IHNha2Vub21pXCA7CivokYnmoZwgPCBoYXpha3VyYVwgOwor552A57GzIDwgY2hha3ViZWlcIDsKK+Wkp+iLseaWrSA8IGRhaWVpZGFuXCA7CivlvLfmlbUgPCBreW91dGVraVwgOwor5rGC5YSfIDwga3l1dXNob3VcIDsKK+mAmuensCA8IHRzdXVzaG91XCA7Civlv6Dlg5UgPCBjaHV1Ym9rdVwgOwor5rC05YqbIDwgc3Vpcnlva3VcIDsKK+aui+aciCA8IHphbmdldHN1XCA7Civli4Xmm7ggPCBjaG9rdXNob1wgOwor5YWI6K2w5qipIDwgc2VuZ2lrZW5cIDsKK+WFsemAmiA8IGt5b3V0c3V1XCA7Civlj43mipfmnJ8gPCBoYW5rb3VraVwgOwor5pys5Lya6K2wIDwgaG9ua2FpZ2lcIDsKK+WJjeeVpSA8IHplbnJ5YWt1XCA7Civmrormm7QgPCBrb3Rvc2FyYVwgOwor5bym5pyIIDwgZ2VuZ2V0c3VcIDsKK+iLseexs+S6uiA8IGVpYmVpamluXCA7CivkvY7poIbkvY0gPCB0ZWlqdW4nJ2lcIDsKK+ebruiWrCA8IG1lZ3VzdXJpXCA7CivkuI3ogIHms4kgPCBmdXJvdXNlblwgOwor5Y2U5ZWGIDwga3lvdXNob3VcIDsKK+eZvumMrCA8IGh5YWt1cmVuXCA7CivlhazpgZQgPCBrb3V0YXRzdVwgOwor5byx5pW1IDwgamFrdXRla2lcIDsKK+mAhueulyA8IGd5YWt1c2FuXCA7Civpu5njgIUgPCBtb2t1bW9rdVwgOwor5YWr6YGUIDwgaGF0dGF0c3VcIDsKK+WFq+mBkyA8IGhhY2hpZG91XCA7CivljJflsbEgPCBraXRheWFtYVwgOwor5Ym/5ruFIDwgc291bWV0c3VcIDsKK+WQjeWum+S6uiA8IG5hYXRlbmluXCA7CivlkozmsJfol7nol7kgPCB3YWtpYWlhaVwgOwor6Ieq55Sx6KmpIDwgaml5dXVzaGlcIDsKK+W7g+eJqSA8IGhhaWJ1dHN1XCA7Civlhazov7AgPCBrb3VqdXRzdVwgOwor5b+g5L+hIDwgY2h1dXNoaW5cIDsKK+earuizqiA8IGhpc2hpdHN1XCA7Civnn7PmlocgPCBpc2hpYnVtaVwgOwor5b2i5byPIDwga2Vpc2hpa2lcIDsKK+WHi+iQvSA8IGNob3VyYWt1XCA7CivmhI/lv5fnmoQgPCBpc2hpdGVraVwgOwor5Y245YCkIDwgb3Jvc2hpbmVcIDsKK+aIpumXmOWToSA8IHNlbnRvdWluXCA7Civljp/nlLvlg48gPCBnZW5nYXpvdVwgOwor55+t5pelIDwgdGFuaml0c3VcIDsKK+awtOWFiCA8IG1penVzYWtpXCA7Civlt7foqqwgPCBrb3VzZXRzdVwgOwor5aSn6IW/6YOoIDwgZGFpdGFpYnVcIDsKK+WFsei7myA8IGt5b3V5YWt1XCA7Civpu5LjgIUgPCBrdXJvZ3Vyb1wgOwor5Yml54S8IDwgc3VraXlha2lcIDsKK+a7i+izgOecjCA8IHNoaWdha2VuXCA7Civph43msLTntKAgPCBqdXVzdWlzb1wgOwor6YCi552AIDwgaG91Y2hha3VcIDsKK+W7g+eGsSA8IGhhaW5ldHN1XCA7CivkurrpgKDmuZYgPCBqaW56b3Vrb1wgOwor5b255a6FIDwgeWFrdXRha3VcIDsKK+WIsOedgCA8IHRvdWNoYWt1XCA7Civoq4vosqDluKsgPCB1a2VvaXNoaVwgOwor6Iy56Ju4IDwgeXVkZWRha29cIDsKK+awtOa6luWZqCA8IHN1aWp1bmtpXCA7CivmvKvnlLvmnKwgPCBtYW5nYWhvblwgOwor5LiN55yf6Z2i55uuIDwgZnVtYWppbWVcIDsKK+WGjeiqrCA8IHNhaXNldHN1XCA7CivpgKPnmbogPCByZW5wYXRzdVwgOwor5b6p5ZSxIDwgZnVrdXNob3VcIDsKK+efpeaXpSA8IGNoaW5pY2hpXCA7CivlvrTlj44gPCBjaG91c2h1dVwgOwor5YuF5pKwIDwgY2hva3VzZW5cIDsKK+S6kuaPm+aApyA8IGdva2Fuc2VpXCA7CivliIbnr4AgPCBidW5zZXRzdVwgOwor6YWN5YiXIDwgaGFpcmV0c3VcIDsKK+eorueoruebuCA8IHNodWp1c291XCA7Civlh6bnvbAgPCBzaG9iYXRzdVwgOwor5LqI6Ziy5rOVIDwgeW9ib3Vob3VcIDsKK+WuieWFqOeBryA8IGFuemVudG91XCA7CivmrbTmnJ0gPCByZWtpY2hvdVwgOwor5YqH5q+SIDwgZ2VraWRva3VcIDsKK+i/veeptiA8IHRzdWlreXV1XCA7CivmrbPmnKsgPCBzYWltYXRzdVwgOwor5qiq6Lu4IDwgeW9rb2ppa3VcIDsKK+WIhuethiA8IGJ1bnBpdHN1XCA7CivovK/pjLIgPCBzaHV1cm9rdVwgOwor5Y2K5Y+jIDwgaGFua3VjaGlcIDsKK+mBi+mAgeS6uiA8IHVuc291bmluXCA7CivljYHlk7IgPCBqdXR0ZXRzdVwgOwor55m+6YG4IDwgaHlha3VzZW5cIDsKK+S4iummluWwviA8IGpvdXNodWJpXCA7Civku4/oiI7liKkgPCBidXNzaGFyaVwgOwor6IiH5aSq6ICFIDwgeW90YW1vbm9cIDsKK+a6gOWkqeS4iyA8IG1hbnRlbmthXCA7CivlvpfmiYvli53miYsgPCBldGVrYXR0ZVwgOwor5YWI6YeRIDwgc2FraWdhbmVcIDsKK+i7vemjnyA8IGtlaXNob2t1XCA7CivliIbnq4sgPCBidW5yaXRzdVwgOwor5L6h5qC85beuIDwga2FrYWt1c2FcIDsKK+WGheiosyA8IHVjaGl3YWtlXCA7Civov73npo8gPCB0c3VpZnVrdVwgOwor54Sh6Iqx5p6cIDwgaWNoaWppa3VcIDsKK+assua3sSA8IHlva3VidWthXCA7CivkuI3kurrmg4UgPCBmdW5pbmpvdVwgOwor5Zyf5bu65bGLIDwgZG9rZW4nJ3lhXCA7Civmrarmm7IgPCB3YWlreW9rdVwgOwor5YWl6LaFIDwgbnl1dWNob3VcIDsKK+WJsuazqCA8IHdhcmljaHV1XCA7CivmsJHlipsgPCBtaW5yeW9rdVwgOwor6YGu5pat5qmfIDwgc2hhZGFua2lcIDsKK+S5seadreatryA8IHJhbmd1aWJhXCA7CivonYvntLDlt6UgPCByb3V6YWlrdVwgOwor5YyX5aOBIDwgaG9rdWhla2lcIDsKK+eznOeIm+aApyA8IGJpcmFuc2VpXCA7CivosrTlhazlrZAgPCBraWtvdXNoaVwgOwor5buD5ruFIDwgaGFpbWV0c3VcIDsKK+awtOS4iiA8IG1pbmFrYW1pXCA7CivliJ3nm4YgPCBoYXRzdWJvblwgOwor5buJ5L6h54mIIDwgcmVua2FiYW5cIDsKK+ato+acrSA8IHNob3VmdWRhXCA7CivlhaXos54gPCBueXV1c2hvdVwgOwor5YWI6YGUIDwgc2VuZGF0c3VcIDsKK+atouacqCA8IHRvbWFyaWdpXCA7CivnnYDnnLwgPCBjaGFrdWdhblwgOwor5Yid55m6IDwgc2hvaGF0c3VcIDsKK+WOn+WtkOeCiSA8IGdlbnNoaXJvXCA7Civou6Lmj5vngokgPCB0ZW5rYW5yb1wgOwor6buO5piO5pyfIDwgcmVpbWVpa2lcIDsKK+i7n+mqqCA8IG5hbmtvdHN1XCA7Civoj5bokrLmua8gPCBzaG91YnV5dVwgOwor54Sh6aeE6aqoIDwgbXVkYWJvbmVcIDsKK+mhnuS8vOWTgSA8IHJ1aWppaGluXCA7Civpo5vooYzpmoogPCBoaWtvdXRhaVwgOwor5b2T5bGAIDwgdG91a3lva3VcIDsKK+auuuWusyA8IHNhdHN1Z2FpXCA7Civph5Hps7PoirEgPCBraW5wb3VnZVwgOwor6buS6Zuy5q+NIDwga3Vyb3VubW9cIDsKK+iQveaOjCA8IHJha3VzaG91XCA7Civnm7jmiYvmlrkgPCBhaXRlZ2F0YVwgOwor5LiN5a6M5YWoIDwgZnVrYW56ZW5cIDsKK+W8t+W8sSA8IGt5b3VqYWt1XCA7Civlv4PkuK0gPCBzaGluY2h1dVwgOwor56WW5Zu95oSbIDwgc29rb2t1YWlcIDsKK+W5s+eavyA8IGhpcmF6YXJhXCA7Civli5/pm4bosrsgPCBib3NodXVoaVwgOwor5Yid55SjIDwgaGF0c3V6YW5cIDsKK+W4uOe3kSA8IGpvdXJ5b2t1XCA7CivnlJ/nlKPosrsgPCBzZWlzYW5oaVwgOwor57Wx5ZCI5YyWIDwgdG91Z291a2FcIDsKK+aXheihjOWutiA8IHJ5b2tvdWthXCA7CivnpL7lpJbnp5ggPCBzaGFnYWloaVwgOwor5Y2X5LuPIDwgbmFuZnV0c3VcIDsKK+W+k+S+oeeojiA8IGp1dWthemVpXCA7CivljYHlhasgPCBqdXVoYWNoaVwgOwor5L2/5b6S5pu4IDwgc2hpdG9zaG9cIDsKK+mBqealrSA8IHRla2lneW91XCA7CivprLHprLEgPCB1dHN1dXRzdVwgOwor6L+955m9IDwgdHN1aWhha3VcIDsKK+W+k+WNkiA8IGp1dXNvdHN1XCA7CivlvqHlhqAgPCBva2FubXVyaVwgOwor5b6L5ZGCIDwgcml0c3VyeW9cIDsKK+i+o+iFlSA8IHJhdHN1d2FuXCA7CivnnYDnlKggPCBjaGFrdXlvdVwgOwor6YCG55SoIDwgZ3lha3V5b3VcIDsKK+mAhueUoyA8IGd5YWt1emFuXCA7Civlha3opqogPCByb2t1c2hpblwgOwor5b6M5Y+jIDwgYXRva3VjaGlcIDsKK+WvneWMlueypyA8IG5lZ2VzaG91XCA7CivlibXkuJbmnJ8gPCBzb3VzZWlraVwgOwor6YeR55uu6a+bIDwga2lubWVkYWlcIDsKK+WNmOS4gCA8IHRhbicnaXRzdVwgOwor5biv57eRIDwgdGFpcnlva3VcIDsKK+efs+W8kyA8IGlzaGl5dW1pXCA7Civpgbjmm7IgPCBzZW5reW9rdVwgOwor6YCa54mSIDwgdHN1dWNob3VcIDsKK+S4iuS4i+e3miA8IGpvdWdlc2VuXCA7CivnkIbkuovlm70gPCByaWppa29rdVwgOwor5rC05rqW5YSAIDwgc3VpanVuZ2lcIDsKK+WGjeS/nemZuiA8IHNhaWhva2VuXCA7CivnnIznq4sgPCBrZW5yaXRzdVwgOwor5Yil54q2IDwgYmV0c3Vqb3VcIDsKK+S4i+mmrOWFiCA8IGdlYmFzYWtpXCA7Civlh43ntZAgPCB0b3VrZXRzdVwgOwor5a+E5LuY6KGM54K6IDwga2lmdWtvdWlcIDsKK+azieiyqOe0mSA8IHNlbmthc2hpXCA7CivlvqHku6TlrKIgPCBnb3JlaWpvdVwgOwor5bed6J2JIDwga2F3YXNlbWlcIDsKK+mDt+WbvSA8IGt5b3Vrb2t1XCA7Civov73nlLMgPCB0c3Vpc2hpblwgOwor6Zu75rCX6KGXIDwgZGVua2lnYWlcIDsKK+egguWxsSA8IHN1bmF5YW1hXCA7Civlvovli5UgPCByaXRzdWRvdVwgOwor5q2j5o6lIDwgc2Vpc2V0c3VcIDsKK+i/q+ecnyA8IGhha3VzaGluXCA7Civou43mlL/pg6ggPCBndW5zZWlidVwgOwor5b6h6aGM55uuIDwgb2RhaW1va3VcIDsKK+ecgeethiA8IHNlaWhpdHN1XCA7CivlvJ/lvqEgPCBvdG91dG9nb1wgOwor5YeE57W2IDwgc2VpemV0c3VcIDsKK+W+jOWIlyA8IGtvdXJldHN1XCA7CivnhKHkv53oqLwgPCBtdWhvc2hvdVwgOwor5Y+v5YiG5oCnIDwga2FidW5zZWlcIDsKK+S6nOmJm+mJhCA8IGFlbnRldHN1XCA7Civli5XlronlrpogPCBkb3VhbnRlaVwgOwor5bm0546HIDwgbmVucml0c3VcIDsKK+WIkeS6i+S4iiA8IGtlaWppam91XCA7CivlpbPmgKfnlKggPCBqb3NlaXlvdVwgOwor5YaX6IiMIDwgam91emV0c3VcIDsKK+aomeiouyA8IGh5b3VjaHV1XCA7CivnnJ/nmb0gPCBtYXNzaGlyb1wgOwor5YW46JasIDwgdGVuJyd5YWt1XCA7Civkub7nh6XngokgPCBrYW5zb3Vyb1wgOwor5byx5bCRIDwgamFrdXNob3VcIDsKK+iCsuWFkOazlSA8IGlrdWppaG91XCA7Civnm7TnrZQgPCBjaG9rdXRvdVwgOwor55+z5bGxIDwgaXNoaXlhbWFcIDsKK+iMnOiJsiA8IGFrYW5laXJvXCA7CivnmbroqIAgPCBoYXRzdWdlblwgOwor5oSb6bOl5a62IDwgYWljaG91a2FcIDsKK+acrOiInuWPsCA8IGhvbmJ1dGFpXCA7CivlgIvkurrmgKcgPCBrb2ppbnNlaVwgOwor5byT5b2iIDwgeXVtaW5hcmlcIDsKK+WJr+acqCA8IGZ1a3Vib2t1XCA7Civkvp3lrZjnl4cgPCBpem9uc2hvdVwgOwor55yf55eHIDwgc2hpbnNob3VcIDsKK+WKo+aDhSA8IHJldHN1am91XCA7CivmgqrmgKfluqYgPCBha3VzZWlkb1wgOwor5Yal572wIDwgbWVpYmF0c3VcIDsKK+elnuOAhSA8IGthbWlnYW1pXCA7CivliqPmgqogPCByZXRzdWFrdVwgOwor6a6u6KGAIDwgc2Vua2V0c3VcIDsKK+e+jueUt+WtkCA8IGJpbmFuc2hpXCA7CivlvbnlibIgPCB5YWt1d2FyaVwgOwor55+z5a6kIDwgaXNoaW11cm9cIDsKK+iLpeihhiA8IHdha2FzaHV1XCA7Civmr43lkJsgPCBoYWhhZ2ltaVwgOwor6Zu75rOi5rOVIDwgZGVucGFob3VcIDsKK+i7jeS6i+S4iiA8IGd1bmppam91XCA7CivlubPnhrEgPCBoZWluZXRzdVwgOwor55u056iOIDwgY2hva3V6ZWlcIDsKK+i/keedgCA8IGtpbmNoYWt1XCA7CivpgZPmnb8gPCBtaWNoaWl0YVwgOwor54OP54qA6KeSIDwgdXNhaWtha3VcIDsKK+efqeWwuiA8IGthbmVqYWt1XCA7CivlgY/lvq7liIYgPCBoZW5iaWJ1blwgOwor57Sg5a+S6LKnIDwgc3VrYW5waW5cIDsKK+ixmuWwj+WxiyA8IGJ1dGFnb3lhXCA7Civlu7bmu57nqI4gPCBlbnRhaXplaVwgOwor6YG45oqcIDwgc2VuYmF0c3VcIDsKK+WGpeeOi+aYnyA8IG1laW91c2VpXCA7Civlhobnm6TnirYgPCBlbmJhbmpvdVwgOwor55m96J+7IDwgc2hpcm9hcmlcIDsKK+W8t+WlqiA8IGdvdWRhdHN1XCA7CivolLXmm7jlrrYgPCB6b3VzaG9rYVwgOwor6Yyy6Z+z5qmfIDwgcm9rdW9ua2lcIDsKK+mBjuiIrOadpSA8IGthaGFucmFpXCA7CivpkZrlrZTmqZ8gPCBzYW5rb3VraVwgOwor5LiA6Iis5Lq6IDwgaXBwYW5qaW5cIDsKK+WIuuauuiA8IHNoaXNhdHN1XCA7Civlh6Hnmb4gPCBib25weWFrdVwgOwor5b6L5LukIDwgcml0c3VyZWlcIDsKK+ebuOaJi+W9uSA8IGFpdGV5YWt1XCA7CivlhoXohb8gPCB1Y2hpbW9tb1wgOwor5q2p5ZCI57WmIDwgYnVhaWt5dXVcIDsKK+S6leaIuOe2sSA8IGlkb2R6dW5hXCA7Civml6Lnn6XmlbAgPCBraWNoaXN1dVwgOwor6LuN6ZalIDwgZ3VuYmF0c3VcIDsKK+W3peWLmeW6lyA8IGtvdW11dGVuXCA7CivluaPniakgPCBoZWltb3RzdVwgOwor6YC45qW9IDwgaXRzdXJha3VcIDsKK+mAn+axuiA8IHNva2tldHN1XCA7CivljJflgbQgPCBob2t1c29rdVwgOwor5LiA5pyx6YqAIDwgaXNzaHVnaW5cIDsKK+W9q+WIuyA8IGNob3Vrb2t1XCA7CivpgIbmva4gPCBzYWthc2hpb1wgOwor56Cy5YiXIDwgaG91cmV0c3VcIDsKK+iIquepuuapnyA8IGtvdWt1dWtpXCA7Civpu5LnubvlrZAgPCBrdXJvanVzdVwgOwor55m76KiY5omAIDwgdG91a2lzaG9cIDsKK+ato+W8jyA8IHNlaXNoaWtpXCA7CivpganmmYLmiZMgPCB0ZWtpamlkYVwgOwor5Yag57W2IDwga2FuemV0c3VcIDsKK+auv+WOnyA8IHRvbm9iYXJhXCA7Civlh7jnirYgPCB0b3RzdWpvdVwgOwor5ZCI55CG5oCnIDwgZ291cmlzZWlcIDsKK+mBlOaWhyA8IHRhdHN1YnVuXCA7CivlvoHkvJAgPCBzZWliYXRzdVwgOwor5bm75ruFIDwgZ2VubWV0c3VcIDsKK+W8vuWcpyA8IGRhbicnYXRzdVwgOwor6Lu96Lu9IDwga2FydWdhcnVcIDsKK+mZsOmbu+WtkCA8IGluZGVuc2hpXCA7CivlhYXooYAgPCBqdXVrZXRzdVwgOwor5YaF6IG3IDwgbmFpc2hva3VcIDsKK+WKqeWLleipniA8IGpvZG91c2hpXCA7CivmhbDol4nmlpkgPCBpc2hhcnlvdVwgOwor6Luf6YmEIDwgbmFudGV0c3VcIDsKK+ihm+eUn+WFtSA8IGVpc2VpaGVpXCA7Civnn7PloqggPCBzZWtpYm9rdVwgOwor5L2O54mp5L6hIDwgdGVpYnVra2FcIDsKK+WAi+S6uuWxlSA8IGtvamludGVuXCA7Civlrp/kvZPljJYgPCBqaXR0YWlrYVwgOwor5Yik5rG6IDwgaGFua2V0c3VcIDsKK+efreWknCA8IG1pamlrYXlvXCA7CivlvLflnKcgPCBreW91YXRzdVwgOwor6YKq6a2U6ICFIDwgamFtYW1vbm9cIDsKK+W5s+a7kSA8IGhlaWthdHN1XCA7CivprKLplbcgPCBiaW4nJ25hZ2FcIDsKK+exs+itsOS8miA8IGJlaWdpa2FpXCA7CivnhKHlsL3olLUgPCBtdWppbnpvdVwgOwor5YaG572QIDwgbWFydWdhbWFcIDsKK+ebtOebtCA8IGppa2lqaWtpXCA7Civlt7vntJkgPCBtYWtpZ2FtaVwgOwor5YW86IG3IDwga2Vuc2hva3VcIDsKK+i7ouaPm+acnyA8IHRlbmthbmtpXCA7CivmrKDmlocgPCBrZXRzdWJ1blwgOwor5Luj6K2w5aOrIDwgZGFpZ2lzaGlcIDsKK+m8u+a/gemfsyA8IGJpZGFrdW9uXCA7CivlhqznqbogPCBmdXl1em9yYVwgOwor6YGF5pelIDwgY2hpaml0c3VcIDsKK+WIpeauvyA8IGJldHN1ZGVuXCA7CivliKXmrrUgPCBiZXRzdWRhblwgOwor6YCG5rWqIDwgc2FrYW5hbWlcIDsKK+eZveiTriA8IGJ5YWt1cmVuXCA7Civnn7PlnqMgPCBpc2hpZ2FraVwgOwor6auY6Zu75L2NIDwga291ZGVuJydpXCA7CivmjIHlj4Lph5EgPCBqaXNhbmtpblwgOwor5ZSv55CG6KuWIDwgeXVpcmlyb25cIDsKK+i7uOi2syA8IGppa3Vhc2hpXCA7CivlkI3mnJvlrrYgPCBtZWlib3VrYVwgOwor5aSa5YWD6KuWIDwgdGFnZW5yb25cIDsKK+ebrueahCA8IG1va3V0ZWtpXCA7CivokKnlsZ4gPCBoYWdpem9rdVwgOwor6Ieq5qOE57OeIDwgeWFrZWt1c29cIDsKK+ato+espuWPtyA8IHNlaWZ1Z291XCA7CivnhKHnlKPogIUgPCBtdXNhbnNoYVwgOwor6YCf5qWtIDwgaGF5YXdhemFcIDsKK+iCsuWFkOabuCA8IGlrdWppc2hvXCA7CivluILnq4sgPCBzaGlyaXRzdVwgOwor6Iul6I2JIDwgd2FrYWt1c2FcIDsKK+Wumuacn+iIuSA8IHRlaWtpc2VuXCA7CivnnYDmsLQgPCBjaGFrdXN1aVwgOwor5omL5byB5b2TIDwgdGViZW50b3VcIDsKK+S5vueHpeapnyA8IGthbnNvdWtpXCA7CivkuInml6XplpMgPCBtaWtrYWthblwgOwor5Y2B5LqM5YiGIDwganV1bmlidW5cIDsKK+eoveWPpOWPsCA8IGtlaWtvZGFpXCA7Civou6LovY0gPCB0ZW50ZXRzdVwgOwor6bCQ55quIDwgd2FuaWdhd2FcIDsKK+atouWuvyA8IHNoaXNodWt1XCA7CivoirjooZMgPCBnZWlqdXRzdVwgOwor5YWI6aCt5LyNIDwgc2VudG91Z29cIDsKK+ato+WulyA8IG1hc2FtdW5lXCA7CivmqKrohbkgPCB5b2tvYmFyYVwgOwor5YaX562GIDwgam91aGl0c3VcIDsKK+WFrOiBtyA8IGtvdXNob2t1XCA7CivlkITjgIUgPCBzb3Jlem9yZVwgOwor5YiD5rihIDwgaGF3YXRhcmlcIDsKK+mzqeWwviA8IG1pem9vY2hpXCA7Civlh7rmnaXpq5ggPCBkZWtpZGFrYVwgOwor5Ye65ryUIDwgc2h1dHN1ZW5cIDsKK+mBqeW9uSA8IHRla2l5YWt1XCA7CivouqvplbcgPCBzaGluY2hvdVwgOwor5LiJ5LiW55u4IDwgc2FuemVzb3VcIDsKK+WKm+WtpiA8IHJpa2lnYWt1XCA7CivoibLpgZMgPCBzaGlraWRvdVwgOwor55m+6Iq4IDwgaHlha3VnZWlcIDsKK+S5juWPpOatoueCuSA8IG9rb3RvdGVuXCA7Civli6LlipsgPCBzZWlyeW9rdVwgOwor6Ii56ZyKIDwgZnVuYWRhbWFcIDsKK+mBi+aguemIjSA8IHVua29uZG9uXCA7CivnoILljp8gPCBzdW5haGFyYVwgOwor5b2O5YWlIDwgd2FuJydueXV1XCA7CivooZvnlJ/kuIogPCBlaXNlaWpvdVwgOwor5Yi25pytIDwgc2Vpc2F0c3VcIDsKK+alvemVtyA8IGdha3VjaG91XCA7Civnm7TnkIMgPCBjaG9ra3l1dVwgOwor5Yy75a2m5aOrIDwgaWdha3VzaGlcIDsKK+iri+iyoOS6uiA8IHVrZW9pbmluXCA7CivmpbXpmZAgPCBreW9rdWdlblwgOwor6a6r6IaaIDwgc2FtZWhhZGFcIDsKK+aWremdouWbsyA8IGRhbm1lbnp1XCA7CivnmbroibIgPCBoYXNzaG9rdVwgOwor6Jma5Luu54y/IDwga29rZXphcnVcIDsKK+acquS9v+eUqCA8IG1pc2hpeW91XCA7Civpm7vms6LmmJ8gPCBkZW5wYXNlaVwgOwor6JGs5YiXIDwgc291cmV0c3VcIDsKK+WLheWVjyA8IGNob2t1bW9uXCA7CivlvL7lipsgPCBkYW5yeW9rdVwgOwor5byP5aC0IDwgc2hpa2lqb3VcIDsKK+mrmOmrmCA8IHRha2FkYWthXCA7Civpn7Ppn7voq5YgPCBvbicnaW5yb25cIDsKK+WJsuW8lSA8IHdhcmliaWtpXCA7CivmqZ/morDlt6UgPCBraWthaWtvdVwgOwor5qyy5b+DIDwgeW9rdXNoaW5cIDsKK+WGjeWwgemOliA8IHNhaWZ1dXNhXCA7CivliZTmiokgPCB0ZWtrZXRzdVwgOwor6Ziy5rOi5aCkIDwgYm91aGF0ZWlcIDsKK+assuW+lyA8IHlva3V0b2t1XCA7CivpgYvou6LmiYsgPCB1bnRlbnNodVwgOwor6a6u6IKJIDwgc2VuJyduaWt1XCA7CivpgIbmp5ggPCBzYWthc2FtYVwgOwor6YCy5pKDIDwgc2hpbmdla2lcIDsKK+S6ieimh+aIpiA8IHNvdWhhc2VuXCA7Civpu5LmloflrZcgPCBrdXJvbW9qaVwgOwor54Sh6aeE6LazIDwgbXVkYWFzaGlcIDsKK+WLleWKmyA8IGRvdXJ5b2t1XCA7Civli4Xlkb0gPCBjaG9rdW1laVwgOwor552A54mp5ZywIDwga2ltb25vamlcIDsKK+Wkluawl+WcjyA8IGdhaWtpa2VuXCA7Civlh5vng4ggPCByaW5yZXRzdVwgOwor6ZaL5Lya5pelIDwga2Fpa2FpYmlcIDsKK+eUseadpeabuCA8IHl1cmFpc2hvXCA7Civmrablo6sgPCBtb25vbm9mdVwgOwor6bWd5Y+j55ihIDwgZ2Frb3Vzb3VcIDsKK+auuuS6uiA8IHNhdHN1amluXCA7Civlg63otoogPCBzZW4nJ2V0c3VcIDsKK+mAo+aXpSA8IHJlbmppdHN1XCA7CivmraPlpKIgPCBtYXNheXVtZVwgOwor5Lm+54el5p6cIDwga2Fuc291a2FcIDsKK+WIt+aVsCA8IHNhdHN1c3V1XCA7Civou4vovaIgPCBhdHN1cmVraVwgOwor5a6J5YWo5oCnIDwgYW56ZW5zZWlcIDsKK+WEsuiThCA8IGNob2NoaWt1XCA7Civlr4zlo6vkupTmuZYgPCBmdWppZ29rb1wgOwor5YaG56qTIDwgbWFydW1hZG9cIDsKK+iLpeiAhSA8IHdha2Ftb25vXCA7Civou4rovYQgPCBzaGFrYXRzdVwgOwor5oGQ44CFIDwga293YWdvd2FcIDsKK+mAmuaagSA8IHRzdXVneW91XCA7CivliY3miZUgPCBtYWViYXJhaVwgOwor55m+6IGeIDwgaHlha3VidW5cIDsKK+aYr+aYr+mdnumdniA8IHplemVoaWhpXCA7CivnmbrogrIgPCBoYXRzdWlrdVwgOwor6YCQ5p2hIDwgY2hpa3Vqb3VcIDsKK+ebiuebiiA8IG1hc3VtYXN1XCA7CivmqKrnuJ4gPCB5b2tvamltYVwgOwor6YGU5byBIDwgdGF0c3ViZW5cIDsKK+aghOmkiuWjqyA8IGVpeW91c2hpXCA7Civlj7DluIPlt74gPCBkYWlidWtpblwgOwor5bej56qfIDwgc291a3V0c3VcIDsKK+W3neetiyA8IGthd2FzdWppXCA7Civmp4vmiJDlk6EgPCBrb3VzZWlpblwgOwor5YWN6IG3IDwgbWVuc2hva3VcIDsKK+aooeevhOeUnyA8IG1vaGFuc2VpXCA7Civpp4bli5XovKogPCBrdWRvdXJpblwgOwor5YuH5YqbIDwgeXV1cnlva3VcIDsKK+W3neerryA8IGthd2FiYXRhXCA7Civli4HljZIgPCBrZWlzb3RzdVwgOwor5p2x5rSL5Y+yIDwgdG95b2Z1bWlcIDsKK+WGheelnSA8IHVjaGlpd2FpXCA7CivojYnniakgPCBrdXNhbW9ub1wgOwor5bKz6bqTIDwgZ2FrdXJva3VcIDsKK+WIhualtSA8IGJ1bmt5b2t1XCA7Civmp43ooZMgPCBzb3VqdXRzdVwgOwor6YCj5o6lIDwgcmVuc2V0c3VcIDsKK+WNmOeyvuW6piA8IHRhbnNlaWRvXCA7CivngavmnKjlnJ8gPCBrYW1va3Vkb1wgOwor5Luj6K2w5Yi2IDwgZGFpZ2lzZWlcIDsKK+acquWumueovyA8IG1pdGVpa291XCA7CivlhaXnsY0gPCBueXV1c2VraVwgOwor5LiW6Kmx54mpIDwgc2V3YW1vbm9cIDsKK+WJr+WvqSA8IGZ1a3VzaGluXCA7Civnn6XlipsgPCBjaGlyeW9rdVwgOwor5Ymy5a6JIDwgd2FyaXlhc3VcIDsKK+WHpuaxuiA8IHNob2tldHN1XCA7CivlubTmnKsgPCBuZW5tYXRzdVwgOwor5bm+5pelIDwgaWt1bmljaGlcIDsKK+W5tOaciCA8IG5lbmdldHN1XCA7CivliIfmoKogPCBraXJpa2FidVwgOwor5Yq55YqbIDwga291cnlva3VcIDsKK+ims+aIpuiomCA8IGthbnNlbmtpXCA7CivlpKnnk5znsokgPCB0ZW5rYWZ1blwgOwor6aq46aqoIDwgZ2Fpa290c3VcIDsKK+W9ouaIkOacnyA8IGtlaXNlaWtpXCA7CivmlL7mmKDmqKkgPCBob3VlaWtlblwgOwor5byP5Y+wIDwgc2hpa2lkYWlcIDsKK+ebo+imluaJgCA8IGthbnNoaWpvXCA7CivpqqjpsZcgPCBrb3RzdXJpblwgOwor5b6h5pys5bCKIDwgZ29ob256b25cIDsKK+WNmOe0lOWMliA8IHRhbmp1bmthXCA7CivlgIvkurrlkI0gPCBrb2ppbm1laVwgOwor5qSc55y85Yy7IDwga2VuZ2FuJydpXCA7Civlho3nmbogPCBzYWloYXRzdVwgOwor5q275YqbIDwgc2hpcnlva3VcIDsKK+acqui4j+WzsCA8IG1pdG91aG91XCA7CivlirTlipsgPCByb3VyeW9rdVwgOwor5qiq562LIDwgeW9rb3N1amlcIDsKK+aWreaWreWbuiA8IGRhbmRhbmtvXCA7Civlt4znqp8gPCBnYW5rdXRzdVwgOwor5Yas54mpIDwgZnV5dW1vbm9cIDsKK+mAhuaVsCA8IGd5YWt1c3V1XCA7CivlhY7ntrIgPCB1c2FnaWFtaVwgOwor5pqW5oi/5ZmoIDwgZGFuYm91a2lcIDsKK+eZveezuCA8IHNoaXJhaXRvXCA7CivmrbvliKUgPCBzaGliZXRzdVwgOwor5YiH5pytIDwga2lyaWZ1ZGFcIDsKK+aWoeaXi+iAhSA8IGFzc2Vuc2hhXCA7CivliIfmnJsgPCBzZXRzdWJvdVwgOwor5bmz5pelIDwgaGVpaml0c3VcIDsKK+W3puebriA8IGhpZGFyaW1lXCA7Civou73olJEgPCBrZWliZXRzdVwgOwor5LuP55Sf5LyaIDwgYnVzc2hvdWVcIDsKK+WJo+WuoiA8IGtlbmt5YWt1XCA7CivlhoXnmbogPCBuYWloYXRzdVwgOwor6KaP5qC85YyWIDwga2lrYWt1a2FcIDsKK+WPuOS7pOmDqCA8IHNoaXJlaWJ1XCA7CivmhI/ljKDmqKkgPCBpc2hvdWtlblwgOwor6IqL6JmrIDwgaW1vbXVzaGlcIDsKK+aki+mzpSA8IG11a3Vkb3JpXCA7CivlubPmlL8gPCBoaXJhbWFzYVwgOwor5bCK5pWs6KqeIDwgc29ua2VpZ29cIDsKK+mqqOmrhCA8IGtvdHN1enVpXCA7CivlvaLmhYvntKAgPCBrZWl0YWlzb1wgOwor55uu5risIDwgbW9rdXNva3VcIDsKK+WFg+e3oCA8IG1vdG9qaW1lXCA7CivmiJHliKnmiJHliKkgPCBnYXJpZ2FyaVwgOwor55+z5LqAIDwgaXNoaWdhbWVcIDsKK+WFiOe0sCA8IHNha2lib3NvXCA7Civli4Xku7sgPCBjaG9rdW5pblwgOwor55+b5YWIIDwgaG9rb3Nha2lcIDsKK+e+juWwkeWlsyA8IGJpc2hvdWpvXCA7CivluqbluqYgPCB0YWJpdGFiaVwgOwor5YaG6YGL5YuVIDwgZW4nJ3VuZG91XCA7Civli4Xku6QgPCBjaG9rdXJlaVwgOwor5YWI57SEIDwgc2VuJyd5YWt1XCA7CivosaHniZnoibIgPCB6b3VnZWlyb1wgOwor6JCp5Y6fIDwgaGFnaXdhcmFcIDsKK+WFpeelniA8IG55dXVzaGluXCA7Civmra/liJcgPCBzaGlyZXRzdVwgOwor5YiH5patIDwgc2V0c3VkYW5cIDsKK+W7g+WroSA8IGhhaWNoYWt1XCA7CivmrarlipsgPCB3YWlyeW9rdVwgOwor5byP5YW4IDwgc2hpa2l0ZW5cIDsKK+ioseWPr+abuCA8IGt5b2thc2hvXCA7Civov73mkoMgPCB0c3VpZ2VraVwgOwor5ZWG6K2w5ZOhIDwgc2hvdWdpaW5cIDsKK+W+oeS4gOaWsCA8IGdvaXNzaGluXCA7CivoiovolJMgPCBpbW9kenVydVwgOwor5oSJ5b+r54qvIDwgeXVrYWloYW5cIDsKK+W3u+eJqSA8IG1ha2ltb25vXCA7CivmjIfnpLrmnb8gPCBzaGlqaWJhblwgOwor55u45q66IDwgc291c2F0c3VcIDsKK+WGl+eJqSA8IGpvdWJ1dHN1XCA7CivpiYTlt6XmiYAgPCB0ZWtrb3Vqb1wgOwor5YmN5bGIIDwgemVua3V0c3VcIDsKK+WIs+W9oiA8IGt1cmlrYXRhXCA7CivntYzllrbpm6MgPCBrZWllaW5hblwgOwor5q2j5YmyIDwgc2Vpa2F0c3VcIDsKK+i6jemAsiA8IHlha3VzaGluXCA7CivlvIHliKUgPCBiZW5iZXRzdVwgOwor6Zmw6Zm95birIDwgb24nJ3lvdWppXCA7Civmj5vmsJfmiYcgPCBrYW5raXNlblwgOwor6Z2e5ZCI5rOVIDwgaGlnb3Vob3VcIDsKK+mjm+ihjOiJhyA8IGhpa291dGVpXCA7CivnnYDmiYsgPCBjaGFrdXNodVwgOwor6aOb6KGM6Ii5IDwgaGlrb3VzZW5cIDsKK+e1jOWWtumZoyA8IGtlaWVpamluXCA7CivlvqHmnaXlhYkgPCBnb3JhaWtvdVwgOwor5LiN5pat6I2JIDwgZnVkYW5zb3VcIDsKK+iMtua8rCA8IGNoYWR6dWtlXCA7CivnlZnps6UgPCByeXV1Y2hvdVwgOwor5qCE6aSK5YmkIDwgZWl5b3V6YWlcIDsKK+iIuei2syA8IGZ1bmFhc2hpXCA7CivpgKPpjpblupcgPCByZW5zYXRlblwgOwor5YW155WlIDwgaGVpcnlha3VcIDsKK+eZveelqCA8IGhha3VoeW91XCA7CivlhbXms5XlrrYgPCBoZWlob3VrYVwgOwor6aC75bqm5pWwIDwgaGluZG9zdXVcIDsKK+izh+acrOWutiA8IHNoaWhvbmthXCA7CivlgY/po58gPCBoZW5zaG9rdVwgOwor5pyA5Y+z57+8IDwgc2FpdXlva3VcIDsKK+aghOmkiuWIhiA8IGVpeW91YnVuXCA7CivmrYzlkIggPCB1dGFhd2FzZVwgOwor6LqR6LqFIDwgdHN1dHN1amlcIDsKK+atjOWPoyA8IHV0YWd1Y2hpXCA7CivpsLnmnKggPCBrYXRzdW9naVwgOwor6L+r5pKDIDwgaGFrdWdla2lcIDsKK+WPr+WHpuWIhiA8IGthc2hvYnVuXCA7CivmsbLjgIUgPCBreXV1a3l1dVwgOwor6JKZ5Y+k5paRIDwgbW91a29oYW5cIDsKK+WIneaBiyA8IGhhdHN1a29pXCA7CivlhYjnqIsgPCBzYWtpaG9kb1wgOwor6Ii56LODIDwgZnVuYWNoaW5cIDsKK+iMtua4iyA8IGNoYXNoaWJ1XCA7CivpgI/lvrkgPCB0b3V0ZXRzdVwgOwor55eF6LqrIDwgYnlvdXNoaW5cIDsKK+WvkueoveWPpCA8IGthbmdlaWtvXCA7CivnrKzkuInntIAgPCBkYWlzYW5raVwgOwor5qaC6KqsIDwgZ2Fpc2V0c3VcIDsKK+W6iuW6lyA8IHRva29taXNlXCA7CivnoILpoqjlkYIgPCBzdW5hYnVyb1wgOwor6YGL6Lui5aOrIDwgdW50ZW5zaGlcIDsKK+esrOS4gOe3miA8IGRhaWlzc2VuXCA7Civoia/olqwgPCByeW91eWFrdVwgOwor5qyg5aC0IDwga2V0c3Vqb3VcIDsKK+WIh+aIuyA8IHNldHN1cmFpXCA7CivmqJnnn7MgPCBoeW91c2VraVwgOwor5YG96YeRIDwgbmlzZWdhbmVcIDsKK+ebruaomSA8IG1va3VoeW91XCA7CivpioDooYzlrrYgPCBnaW5rb3VrYVwgOwor5Yqb5YCGIDwgcmlraXJ5b3VcIDsKK+mBuOWIpSA8IHNlbmJldHN1XCA7CivliLrlrqIgPCBzaGlreWFrdVwgOwor5LiJ5LuZ5Y+JIDwgc2Fuc2Vuc2FcIDsKK+mAkOW5tCA8IGNoaWt1bmVuXCA7Civprqvnmq4gPCBzYW1lZ2F3YVwgOwor5bqD5bqDIDwgaGlyb2Jpcm9cIDsKK+WGjeW3peS6iyA8IHNhaWtvdWppXCA7CivmqKrnlLogPCB5b2tvY2hvdVwgOwor6KOP5pel5pysIDwgdXJhbmlob25cIDsKK+iiq+WCreiAhSA8IGhpeW91c2hhXCA7Civov5Hml6UgPCBraW5qaXRzdVwgOwor5bqD5bmFIDwgaGlyb2hhYmFcIDsKK+WKm+S9nCA8IHJpa2lzYWt1XCA7CivmpJzplrIgPCBrZW4nJ2V0c3VcIDsKK+eerOWIuyA8IHNodW5rb2t1XCA7CivnmbrnnYAgPCBoYXRjaGFrdVwgOwor5qW16KuWIDwga3lva3Vyb25cIDsKK+edgOW8viA8IGNoYWt1ZGFuXCA7Civou73msLTngokgPCBrZWlzdWlyb1wgOwor5YW454mpIDwgdGVuYnV0c3VcIDsKK+iHqueUsea4ryA8IGppeXV1a291XCA7CivlvqHmm7nlrZAgPCBvbnpvdXNoaVwgOwor6Ziy5rC05omJIDwgYm91c3VpaGlcIDsKK+eZveeamSA8IGhha3VzZWtpXCA7CivlsYXlv4PlnLAgPCBpZ29rb2NoaVwgOwor5Zyw5LiL6YGTIDwgY2hpa2Fkb3VcIDsKK+eZveeZvSA8IGhha3VoYWt1XCA7CivliIfmg4UgPCBzZXRzdWpvdVwgOwor5YiR5b6LIDwga2Vpcml0c3VcIDsKK+aomeeahCA8IGh5b3V0ZWtpXCA7Civlh7rmiYAgPCBkZWRva29yb1wgOwor54Sh6aeE6IqxIDwgbXVkYWJhbmFcIDsKK+i/veW+tCA8IHRzdWljaG91XCA7CivnnYDlupUgPCBjaGFrdXRlaVwgOwor5YWa55WlIDwgdG91cnlha3VcIDsKK+eEoeWumuimiyA8IG11dGVpa2VuXCA7CivluorlsbEgPCB0b2tveWFtYVwgOwor55eb6KaaIDwgdHN1dWtha3VcIDsKK+W5tOW8jyA8IG5lbnNoaWtpXCA7CivnmbrnmYwgPCBoYXRzdWdhblwgOwor552A5bi9IDwgY2hha3Vib3VcIDsKK+WGhea/oCA8IHVjaGlib3JpXCA7CivlhYjnnYAgPCBzZW5jaGFrdVwgOwor552A5bivIDwgY2hha3V0YWlcIDsKK+W4uOaYpSA8IHRva29oYXJ1XCA7Civnvo7lrrnluKsgPCBiaXlvdXNoaVwgOwor55m654Gr54K5IDwgaGFra2F0ZW5cIDsKK+iNt+aNjCA8IG5pc2FiYWtpXCA7CivlubPluq0gPCBoaXJhbml3YVwgOwor5bGx6bOpIDwgeWFtYWJhdG9cIDsKK+WxsemzpSA8IHlhbWFkb3JpXCA7CivpgJrlraYgPCB0c3V1Z2FrdVwgOwor55Wc6aGeIDwgY2hpa3VydWlcIDsKK+W5s+W6lSA8IGhpcmF6b2tvXCA7CivlhaXnjYQgPCBueXV1Z29rdVwgOwor5YWs54i1IDwga291c2hha3VcIDsKK+iJsuiJtiA8IGlyb3RzdXlhXCA7CivlubPluZUgPCBoaXJhbWFrdVwgOwor54++5Luj5YyWIDwgZ2VuZGFpa2FcIDsKK+WFiOeZuiA8IHNlbnBhdHN1XCA7Civnpo/kupXnnIwgPCBmdWt1aWtlblwgOwor55m955OcIDwgc2hpcm91cmlcIDsKK+S4jeaVrOiZlCA8IGZ1a2Vpa2VuXCA7Civov5HmjqUgPCBraW5zZXRzdVwgOwor5LiB5a2Q5rK5IDwgY2hvdWppeXVcIDsKK+i7ouiBtyA8IHRlbnNob2t1XCA7CivpgI/lr58gPCB0b3VzYXRzdVwgOwor5YqH5L2cIDwgZ2VraXNha3VcIDsKK+iyoeWLmeWumCA8IHphaW11a2FuXCA7CivmlpnnkIblsYsgPCByeW91cml5YVwgOwor6Lu457SiIDwgamlrdXNha3VcIDsKK+W4reaWmSA8IHNla2lyeW91XCA7CivmrKDlj7cgPCBrZXRzdWdvdVwgOwor5YGc6LuK5aC0IDwgdGVpc2hhYmFcIDsKK+aEn+WFieW6piA8IGthbmtvdWRvXCA7CivnhKHog73ogIUgPCBtdW5vdXNoYVwgOwor55m+542jIDwgaHlha3VqdXVcIDsKK+WDmuiIuSA8IHRvbW9idW5lXCA7CivnnJ/lv4MgPCBtYWdva29yb1wgOwor5YqH5LitIDwgZ2VraWNodXVcIDsKK+i5hOmJhCA8IHRlaXRldHN1XCA7CivkuqTlj4nngrkgPCBrb3VzYXRlblwgOwor5rC35rKz5pyfIDwgaHlvdWdha2lcIDsKK+mAgOWxiCA8IHRhaWt1dHN1XCA7CivkvY7pm7vkvY0gPCB0ZWlkZW4nJ2lcIDsKK+WHuuS4lumtmiA8IHNodXNzZXVvXCA7CivpgYvou6Llj7AgPCB1bnRlbmRhaVwgOwor5YmN5ZOyIDwgemVudGV0c3VcIDsKK+WHuuW7rCA8IHNodXRzdXJvXCA7CivpgankvZwgPCB0ZWtpc2FrdVwgOwor6YeO5b+D5a62IDwgeWFzaGlua2FcIDsKK+WGheazlSA8IHVjaGlub3JpXCA7Civlh7rluqYgPCBzaHV0c3Vkb1wgOwor5YqD5LiAIDwga2FrdWl0c3VcIDsKK+iHqueUseaoqSA8IGppeXV1a2VuXCA7Civou7jnrrEgPCBqaWt1YmFrb1wgOwor6Ziy5rC05biDIDwgYm91c3VpZnVcIDsKK+WHuuW4rSA8IHNodXNzZWtpXCA7Civlho3oh6jmtL4gPCBzYWlyaW5oYVwgOwor5Yil5aOyIDwgYmV0c3ViYWlcIDsKK+W4neaXpSA8IHRlaWppdHN1XCA7Civmp4vnr4kgPCBrb3VjaGlrdVwgOwor55uu5pKDIDwgbW9rdWdla2lcIDsKK+i7jeiBtyA8IGd1bnNob2t1XCA7CivlkI3loLTpnaIgPCBtZWliYW1lblwgOwor562G6KiY5L2TIDwgaGlra2l0YWlcIDsKK+W8pualveWZqCA8IGdlbmdha2tpXCA7Civmu57lnKjosrsgPCB0YWl6YWloaVwgOwor6KaP5a6a5YCkIDwga2l0ZWljaGlcIDsKK+S4gOS9k+aEnyA8IGl0dGFpa2FuXCA7CivlhqzmnI0gPCBmdXl1ZnVrdVwgOwor6Iy25p2TIDwgY2hhc2hha3VcIDsKK+murueDiCA8IHNlbnJldHN1XCA7CivotaTnoILns5YgPCBha2F6YXRvdVwgOwor54mb5bCP5bGLIDwgdXNoaWdveWFcIDsKK+W7ieS+oeWTgSA8IHJlbmthaGluXCA7CivmsJHpnIDlk4EgPCBtaW5qdWhpblwgOwor55yf5Lq66ZaTIDwgbWFuaW5nZW5cIDsKK+WGmeakjSA8IHNoYXNob2t1XCA7Civph5Hnm57oirEgPCBraW5zZW5rYVwgOwor5Yil5aCCIDwgYmV0c3Vkb3VcIDsKK+WIhuWuvyA8IGJ1bnNodWt1XCA7Civlhajmu4UgPCB6ZW5tZXRzdVwgOwor5bGx6aKoIDwgeWFtYWthemVcIDsKK+iNieaRuiA8IGt1c2F6dXJpXCA7CivmsZ/miLjmmYLku6MgPCBlZG9qaWRhaVwgOwor5YWI54mpIDwgc2FraW1vbm9cIDsKK+WPluaymeaxsCA8IHRvcml6YXRhXCA7CivpioDooYzlk6EgPCBnaW5rb3VpblwgOwor5bGk5L2N5a2mIDwgc291aWdha3VcIDsKK+eZvueCuSA8IGh5YWt1dGVuXCA7CivpgIblpKIgPCBzYWtheXVtZVwgOwor6YCP6KaW5ZuzIDwgdG91c2hpenVcIDsKK+WQjee+qeS6uiA8IG1laWdpbmluXCA7CivntabmsrnmiYAgPCBreXV1eXVqb1wgOwor5YWJ54axIDwga291bmV0c3VcIDsKK+iHqui1sOegsiA8IGppc291aG91XCA7CivliY3liJcgPCB6ZW5yZXRzdVwgOwor5a+E56i/6ICFIDwga2lrb3VzaGFcIDsKK+aKkuaDheipqSA8IGpvam91c2hpXCA7CivpgIblooMgPCBneWFra3lvdVwgOwor5YaG5YiD5YiAIDwgZW5qaW50b3VcIDsKK+eZh+eZqiA8IGthbnNoYWt1XCA7Civou43nuK4gPCBndW5zaHVrdVwgOwor6a6t5ryBIDwgc2FrZXJ5b3VcIDsKK+mBlOS6uiA8IHRhdHN1amluXCA7CivoibLntJkgPCBzaGlraXNoaVwgOwor55m95r+BIDwgaGFrdWRha3VcIDsKK+WEgeengCA8IHNodW5zaHV1XCA7CivluYXluoMgPCBoYWJhaGlyb1wgOwor5bGx6ZynIDwgeWFtYWdpcmlcIDsKK+S4ieS4g+aXpSA8IG1pbmFub2thXCA7CivpgLjlh7ogPCBpc3NodXRzdVwgOwor5YWl5rW0IDwgbnl1dXlva3VcIDsKK+asoOS+vyA8IGtldHN1YmluXCA7Civou73nn7MgPCBrYXJ1aXNoaVwgOwor5YiH5aa7IDwga2lyaXp1bWFcIDsKK+W3u+acqyA8IGthbm1hdHN1XCA7Civlr7rlsI/lsYsgPCB0ZXJha295YVwgOwor6Led6aqoIDwga3lva290c3VcIDsKK+eUsOmbsumbgCA8IHRhaGliYXJpXCA7CivmuKnmub/luIMgPCBvbnNoaXBwdVwgOwor55Sf6aaWIDwgbmFtYWt1YmlcIDsKK+WFpea0myA8IG55dXVyYWt1XCA7Civnm7Tmg4UgPCBjaG9rdWpvdVwgOwor5Ye25a6FIDwga3lvdXRha3VcIDsKK+WxsemamyA8IHlhbWFnaXdhXCA7Civluq3lhYggPCBuaXdhc2FraVwgOwor5b6h6Z2i55u4IDwgZ29tZW5zb3VcIDsKK+WxsemZsCA8IHlhbWFrYWdlXCA7CivliYPliIAgPCBrYW1pc29yaVwgOwor5qiq5rOiIDwgeW9rb25hbWlcIDsKK+edgOWcsCA8IGNoYWt1Y2hpXCA7CivkuIrmma/msJcgPCBqb3VrZWlraVwgOwor6IKy6Iux5LyaIDwgaWt1ZWlrYWlcIDsKK+S5l+mmrOmaiiA8IGpvdWJhdGFpXCA7CivlnLDkuIvooZcgPCBjaGlrYWdhaVwgOwor55uX5o6YIDwgdG91a3V0c3VcIDsKK+ecgeW6gSA8IHNob3VjaG91XCA7CivnlZnph5EgPCB0b21lZ2FuZVwgOwor5qmL5qKBIDwga3lvdXJ5b3VcIDsKK+eUuumVtyA8IGNob3VjaG91XCA7CivlsZ7poJggPCB6b2t1cnlvdVwgOwor6YCa5ZGKIDwgdHN1dWtva3VcIDsKK+WJjeWAnyA8IHplbnNoYWt1XCA7CivpnZLmh7jlt6MgPCBhb2tha2VzdVwgOwor5qyg5LmPIDwga2V0c3Vib3VcIDsKK+alteiHtCA8IGt5b2t1Y2hpXCA7CivkuI3mlaznvaogPCBmdWtlaXphaVwgOwor5Y6f5a2Q5L6hIDwgZ2Vuc2hpa2FcIDsKK+WIpeWRvSA8IGJldHN1bWVpXCA7Civoia/nrZYgPCByeW91c2FrdVwgOwor55SY6aOfIDwgYW1hc2hva3VcIDsKK+WGheaeoCA8IHVjaGl3YWt1XCA7CivmqYvmna0gPCBoYXNoaWd1aVwgOwor57eP5q2m57eaIDwgc291YnVzZW5cIDsKK+S4jee4uee3uyA8IGJ1a2lyeW91XCA7CivliKXlj7cgPCBiZXRzdWdvdVwgOwor5YCf6YqtIDwgc2hha3VzZW5cIDsKK+ecieWwuyA8IG1heXVqaXJpXCA7CivnnJ/lpoIgPCBzaGluJydueW9cIDsKK+ino+WDj+W6piA8IGthaXpvdWRvXCA7Civoi6XmsLQgPCB3YWthbWl6dVwgOwor5o6n6Ki054q2IDwga291c29qb3VcIDsKK+mAmuWKmyA8IHRzdXVyaWtpXCA7CivlupflhYggPCBtaXNlc2FraVwgOwor55WU6YGTIDwgYXplbWljaGlcIDsKK+iLpeauvyA8IHdha2F0b25vXCA7Civlho3mpJzmn7sgPCBzYWlrZW5zYVwgOwor6YCa5YmHIDwgdHN1dXNva3VcIDsKK+WIneWPoyA8IHNob2t1Y2hpXCA7CivmqL3mn78gPCB0YXJ1Z2FraVwgOwor6Iet6KaaIDwgc2h1dWtha3VcIDsKK+ikh+W6p+apnyA8IGZ1a3V6YWtpXCA7CivmibnoqZXlrrYgPCBoaWh5b3VrYVwgOwor5b6h5Lit5YWDIDwgb2NodXVnZW5cIDsKK+S6uuecn+S8vCA8IGhpdG9tYW5lXCA7CivmqKrmp5ggPCB5b2tvemFtYVwgOwor5qiq5qeNIDwgeW9rb3lhcmlcIDsKK+WGt+W+uSA8IHJlaXRldHN1XCA7CivnmoTlnLDkvY0gPCB0ZWtpY2hpaVwgOwor552j5L+DIDwgdG9rdXNva3VcIDsKK+aPm+awl+WPoyA8IGthbmtpa291XCA7Civoqr/mn7vlk6EgPCBjaG91c2FpblwgOwor5LiW6Kmx5b25IDwgc2V3YXlha3VcIDsKK+WIpOWIpSA8IGhhbmJldHN1XCA7CivluLjlrqIgPCBqb3VreWFrdVwgOwor5biz5bC7IDwgY2hvdWppcmlcIDsKK+aCquefpeaBtSA8IHdhcnVkamllXCA7Civoi5fmsLQgPCBuYXdhbWl6dVwgOwor55+t5pyf6ZaTIDwgdGFua2lrYW5cIDsKK+W+oeS4u+S6uiA8IGdvc2h1amluXCA7CivlsbHpib4gPCB5YW1hYm9rb1wgOwor6auE6JmrIDwgenVpbXVzaGlcIDsKK+eahuanmCA8IG1pbmFzYW1hXCA7CivliKXlhowgPCBiZXNzYXRzdVwgOwor5ZCM5pmC5oCnIDwgZG91amlzZWlcIDsKK+W4t+WtkCA8IGthdGFiaXJhXCA7CivojYnluIIgPCBrdXNhaWNoaVwgOwor6buE5aSJ57GzIDwgb3VoZW5tYWlcIDsKK+S9meaJgOiAhSA8IHlvc29tb25vXCA7Civnmb3mqoAgPCBieWFrdWRhblwgOwor6Iul5qeYIDwgd2FrYXNhbWFcIDsKK+ebtOWwhCA8IGNob2t1c2hhXCA7CivlsbHph4wgPCB5YW1hemF0b1wgOwor6YCA5Y20IDwgdGFpa3lha3VcIDsKK+a7i+mkiuWIhiA8IGppeW91YnVuXCA7Civmp43njokgPCB5YXJpZGFtYVwgOwor5qOa54mh5Li5IDwgdGFuYWJvdGFcIDsKK+eUsumJhCA8IGtvdXRldHN1XCA7CivpipjphZLlsYsgPCBtZWlzaHV5YVwgOwor5aGp6aGe5rOJIDwgZW5ydWlzZW5cIDsKK+WxgOmdoiA8IGt5b2t1bWVuXCA7Civkv53oj4zogIUgPCBob2tpbnNoYVwgOwor6YCa5L+hIDwgdHN1dXNoaW5cIDsKK+altee3miA8IGt5b2t1c2VuXCA7CivpmLLnoILmnpcgPCBib3VzYXJpblwgOwor6YCa5L+XIDwgdHN1dXpva3VcIDsKK+iIuee4gSA8IGZ1bmFiZXJpXCA7CivnmpPmnIggPCBrb3VnZXRzdVwgOwor6Imy55u4IDwgc2hpa2lzb3VcIDsKK+iJsuebsiA8IHNoaWtpbW91XCA7CivnnInloqggPCBtYXl1enVtaVwgOwor5YaF5o6lIDwgbmFpc2V0c3VcIDsKK+mWieS4lueVjCA8IGhlaXNla2FpXCA7Civlt7TmiKYgPCB0b21vZXNlblwgOwor5YWo5puyIDwgemVua3lva3VcIDsKK+i7uOeJqSA8IGppa3Vtb25vXCA7Civmpa3nuL4gPCBneW91c2VraVwgOwor5Zyw5LiL6IyOIDwgY2hpa2FrZWlcIDsKK+Wkmui+uuW9oiA8IHRhaGVua2VpXCA7CivlhaXmnKggPCBueXV1Ym9rdVwgOwor5qW157SwIDwgZ29rdWJvc29cIDsKK+S4jeaYjuaclyA8IGZ1bWVpcm91XCA7CivpgIHliKUgPCBzb3ViZXRzdVwgOwor6Laz6aaWIDwgYXNoaWt1YmlcIDsKK+WFvOaRgiA8IGtlbnNldHN1XCA7CivliKXkvr8gPCBiZXRzdWJpblwgOwor5bm05YilIDwgbmVuYmV0c3VcIDsKK+azpeeBq+WxsSA8IGRlaWthemFuXCA7CivnlJ/pjLIgPCBuYW1hcm9rdVwgOwor5Lqs6YO95bqcIDwga3lvdXRvZnVcIDsKK+eZveaihSA8IHNoaXJhdW1lXCA7Civoh4boqqwgPCBva3VzZXRzdVwgOwor5Luk5aSr5Lq6IDwgcmVpZnVqaW5cIDsKK+WFiOanmCA8IHNha2lzYW1hXCA7Civlhajml6UgPCB6ZW5qaXRzdVwgOwor5biD5byVIDwgbnVub2Jpa2lcIDsKK+e9t+WFjeaoqSA8IGhpbWVua2VuXCA7CivkuIHlrZflvaIgPCB0ZWlqaWtlaVwgOwor55uj5a+fIDwga2Fuc2F0c3VcIDsKK+WIhuWKmyA8IGJ1bnJ5b2t1XCA7CivlgJnoo5zogIUgPCBrb3Vob3NoYVwgOwor5YKN6ICzIDwga2F0YW1pbWlcIDsKK+eVpeiogCA8IHJ5YWt1Z2VuXCA7CivliKXkurogPCBiZXRzdW5pblwgOwor5bCP6a2aIDwga296YWthbmFcIDsKK+W3puaJiyA8IGhpZGFyaXRlXCA7CivoibLnlLogPCBpcm9tYWNoaVwgOwor6Imy55S3IDwgaXJvb3Rva29cIDsKK+alveeroCA8IGdha3VzaG91XCA7CivliIbliKUgPCBidW5iZXRzdVwgOwor57W155S76aSoIDwga2FpZ2FrYW5cIDsKK+msseeXhSA8IHV0c3VieW91XCA7Civlm73llrbljJYgPCBrb2t1ZWlrYVwgOwor6YCG5L+uIDwgZ3lha3VzaHVcIDsKK+eJqeaVheiAhSA8IGJ1a2tvc2hhXCA7CivliY3nm7jmkrIgPCBtYWV6dW1vdVwgOwor56CU57Gz5qmfIDwga2VubWFpa2lcIDsKK+ebtOWjsiA8IGNob2t1YmFpXCA7CivlgJ/osrggPCBzaGFrdXRhaVwgOwor5pqX6buS5pyfIDwgYW5rb2t1a2lcIDsKK+WAn+iyoSA8IHNoYWt1emFpXCA7Civnj77mmYLngrkgPCBnZW5qaXRlblwgOwor6Zqj5L+d6aSoIDwgcmlucG9rYW5cIDsKK+WGrOWxsSA8IGZ1eXV5YW1hXCA7CivliIblhoogPCBidW5zYXRzdVwgOwor54S85aS35by+IDwgc2hvdWlkYW5cIDsKK+S4geWtl+W4ryA8IHRlaWppdGFpXCA7Civou43nlaUgPCBndW5yeWFrdVwgOwor5Yqg6YWN57GzIDwga2FoYWltYWlcIDsKK+eUqOmBlCA8IHlvdXRhdHN1XCA7CivojZLlpLcgPCBhcmFlYmlzdVwgOwor5qW156uvIDwga3lva3V0YW5cIDsKK+ecn+WNlyA8IG1hbWluYW1pXCA7Civmra/np5HljLvpmaIgPCBzaGlrYWlpblwgOwor6auY57K+5bqmIDwga291c2VpZG9cIDsKK+eVpeijhSA8IHJ5YWt1c291XCA7CivpmbDplqLmlbAgPCBpbmthbnN1dVwgOwor5rC05rOz5bi9IDwgc3VpZWlib3VcIDsKK+WIl+S8nSA8IHJldHN1ZGVuXCA7CivosrjosrvnlJ8gPCB0YWloaXNlaVwgOwor6Ii556uvIDwgZnVuYWJhdGFcIDsKK+mvqOW6pyA8IGt1amlyYXphXCA7CivnnYDku7sgPCBjaGFrdW5pblwgOwor5aKX56iO5qGIIDwgem91emVpYW5cIDsKK+i+u+WggiA8IHRzdWppZG91XCA7Civkv7rpgZQgPCBvcmV0YWNoaVwgOwor6aST6ay85YWxIDwgZ2FraWRvbW9cIDsKK+ecn+WLhyA8IHNoaW4nJ3l1dVwgOwor5YKY57SZIDwga2FzYWdhbWlcIDsKK+ioseWPr+WItiA8IGt5b2thc2VpXCA7Civnmb3mmLwgPCBoYWt1Y2h1dVwgOwor55e855a+IDwga29zaGl0c3VcIDsKK+WBveiAhSA8IG5pc2Vtb25vXCA7CivlhYvmnI0gPCBrb2t1ZnVrdVwgOwor5aWz5oCn5YOPIDwgam9zZWl6b3VcIDsKK+eUu+izqiA8IGdhc2hpdHN1XCA7Civot7Pouo0gPCBjaG91eWFrdVwgOwor54Gr5pif5bm0IDwga2FzZWluZW5cIDsKK+eZuuaYjiA8IGhhdHN1bWVpXCA7CivkupznoavphbggPCBhcnl1dXNhblwgOwor6YCG5LiKIDwgZ3lha3Vqb3VcIDsKK+WFiOaciCA8IHNlbmdldHN1XCA7CivlubPku4QgPCBoeW91c29rdVwgOwor5YaG5b2iIDwgbWFydWdhdGFcIDsKK+WGjei7jeWCmSA8IHNhaWd1bmJpXCA7Civmnb/lsYvosp0gPCBpdGF5YWdhaVwgOwor5bCR6aGNIDwgc2hvdWdha3VcIDsKK+aWoeaXi+ahiCA8IGFzc2VuJydhblwgOwor6Iqx5bSX5bKpIDwga2Frb3VnYW5cIDsKK+i/lOWNtCA8IGhlbmt5YWt1XCA7Civlh7blhYYgPCBreW91Y2hvdVwgOwor5qWT57OWIDwga2FlZGV0b3VcIDsKK+W5leWGhSA8IG1ha3V1Y2hpXCA7CivmnKrlrozmiJAgPCBtaWthbnNlaVwgOwor5be75bC6IDwgbWFraWpha3VcIDsKK+WFiOaXpSA8IHNlbmppdHN1XCA7CivnhKHnlKjlv4MgPCBidXlvdWppblwgOwor5oiQ5paH5YyWIDwgc2VpYnVua2FcIDsKK+WAn+impyA8IHNoYWt1cmFuXCA7Civnspfmgqrlk4EgPCBzb2FrdWhpblwgOwor5o6n6Ki05qipIDwga291c29rZW5cIDsKK+mnkumzpSA8IGtvbWFkb3JpXCA7Civoqr/nkIbloLQgPCBjaG91cmliYVwgOwor5Zyw5LiL57eaIDwgY2hpa2FzZW5cIDsKK+W5leWDmiA8IGJha3VyeW91XCA7Civlhpnlrp8gPCBzaGFqaXRzdVwgOwor5Lqc56Gd6YW4IDwgYXNob3VzYW5cIDsKK+WFg+aXpSA8IGdhbmppdHN1XCA7Civnmb3mj48gPCBoYWt1YnlvdVwgOwor5bC76YeNIDwgc2hpcmlvbW9cIDsKK+iEm+mqqCA8IGtlaWtvdHN1XCA7CivkvZPns7vljJYgPCB0YWlrZWlrYVwgOwor5YWD5pa5IDwgbW90b2thdGFcIDsKK+eZuuaPmiA8IGhhdHN1eW91XCA7CivntYzllrbogIUgPCBrZWllaXNoYVwgOwor6Iy25aO6IDwgY2hhdHN1Ym9cIDsKK+S/rui6qyA8IHNodXVzaGluXCA7CivnmbrmjpggPCBoYWtrdXRzdVwgOwor5bed5bqVIDwga2F3YXpva29cIDsKK+W3neW6iiA8IGthd2Fkb2tvXCA7Civlh7bkvZwgPCBreW91c2FrdVwgOwor5qaC55WlIDwgZ2Fpcnlha3VcIDsKK+iiq+WGmeS9kyA8IGhpc2hhdGFpXCA7Civlt53luYUgPCBrYXdhaGFiYVwgOwor5YK355eFIDwgc2hvdWJ5b3VcIDsKK+akjuiMuCA8IHNoaWl0YWtlXCA7Civlt57lt54gPCBzaHV1c2h1dVwgOwor5YGc6IG3IDwgdGVpc2hva3VcIDsKK+S+kemjnyA8IHl1dXNob2t1XCA7CivliIblqKnmnJ8gPCBidW5iZW5raVwgOwor5b6M5LuV6IieIDwgYXRvamltYWlcIDsKK+WGheWxgCA8IG5haWt5b2t1XCA7CivnlLfopqogPCBvdG9rb295YVwgOwor6KOP6Z2i5Y+yIDwgcmltZW5zaGlcIDsKK+iKseafhCA8IGhhbmFnYXJhXCA7CivopovkuJbniakgPCBtaXNlbW9ub1wgOwor5bGx6KWeIDwgeWFtYWhpZGFcIDsKK+i+u+WNoCA8IHRzdWppdXJhXCA7Civmp5jmp5ggPCBzYW1hemFtYVwgOwor55yf5LitIDwgbWFuJyduYWthXCA7CivlhoXlr4YgPCBuYWltaXRzdVwgOwor6Kqe5b2Z5YqbIDwgZ29pcnlva3VcIDsKK+iKseadnyA8IGhhbmF0YWJhXCA7CivlhoXlrp8gPCBuYWlqaXRzdVwgOwor5YWx5biDIDwgdG9tb251bm9cIDsKK+WxseijviA8IHlhbWFzdXNvXCA7Civpq5jnqbogPCB0YWthem9yYVwgOwor6Iqx5pytIDwgaGFuYWZ1ZGFcIDsKK+mtlOazleeTtiA8IG1haG91YmluXCA7Civnmb7mhYsgPCBoeWFrdXRhaVwgOwor5YiG5aip5pmCIDwgYnVuYmVuamlcIDsKK+S4iuS4i+WLlSA8IGpvdWdlZG91XCA7CivlubPpnaLlm7MgPCBoZWltZW56dVwgOwor6ICQ54Gr5oCnIDwgdGFpa2FzZWlcIDsKK+eXlOeWviA8IGppc2hpdHN1XCA7Civlho3lrprnvqkgPCBzYWl0ZWlnaVwgOwor6Zu75rCX5belIDwgZGVua2lrb3VcIDsKK+WPjeWPpOexoCA8IGhvZ3VrYWdvXCA7CivlhavluaEgPCBoYWNoaW1hblwgOwor5b6h6ZmN6KqVIDwgZ29rb3V0YW5cIDsKK+W3oeWvnyA8IGp1bnNhdHN1XCA7Civou73mpa0gPCBrYXJ1d2F6YVwgOwor5bed5bC7IDwga2F3YWppcmlcIDsKK+aYjuaWh+WMliA8IG1laWJ1bmthXCA7CivohbnlhbflkIggPCBoYXJhZ3VhaVwgOwor55u05YmNIDwgY2hva3V6ZW5cIDsKK+mBuOaMmeaXpSA8IHNlbmt5b2JpXCA7Civmo5LooZMgPCBib3VqdXRzdVwgOwor6Iqx5pmCIDwgaGFuYWRva2lcIDsKK+WFpeW5lSA8IG55dXVtYWt1XCA7Civnmbrmg4UgPCBoYXRzdWpvdVwgOwor5L+z6KyUIDwgaGFpZ3lha3VcIDsKK+WyqeiEiCA8IGdhbm15YWt1XCA7CivluLPlhYMgPCBjaG91bW90b1wgOwor55eF55qEIDwgYnlvdXRla2lcIDsKK+aoquW5hSA8IHlva29oYWJhXCA7CivovLjnsr7nrqEgPCB5dXNlaWthblwgOwor55eF55mWIDwgYnlvdWhla2lcIDsKK+Wwj+WjsuW6lyA8IGtvdXJpdGVuXCA7Civlroflrpnoq5YgPCB1Y2h1dXJvblwgOwor6IO46auYIDwgbXVuYWRha2FcIDsKK+mRkeWumuWutiA8IGthbnRlaWthXCA7Civkv4PpgLIgPCBzb2t1c2hpblwgOwor5qiZ5b60IDwgaHlvdWNob3VcIDsKK+Wbuua6tuS9kyA8IGtveW91dGFpXCA7CivmoYjlhoXmiYAgPCBhbicnbmFpam9cIDsKK+eXheeXhyA8IGJ5b3VzaG91XCA7Civoh6rkv6HlrrYgPCBqaXNoaW5rYVwgOwor5Ya35Y20IDwgcmVpa3lha3VcIDsKK+S6nOmJm+acqyA8IGFlbm1hdHN1XCA7Civoho/ooYAgPCBrb3VrZXRzdVwgOwor5YK354mpIDwga2l6dW1vbm9cIDsKK+Wwjumbu+W6piA8IGRvdWRlbmRvXCA7CivnnIznn6XkuosgPCBrZW5jaGlqaVwgOwor55m+5byKIDwgaHlha3VoZWlcIDsKK+WHneS5syA8IGd5b3VueXV1XCA7CivnlZzoiI4gPCBjaGlrdXNoYVwgOwor5oSP5rCX6Zi75ZaqIDwgaWtpc29zb3VcIDsKK+WFseWtpiA8IGt5b3VnYWt1XCA7CivlroflrpnoprMgPCB1Y2h1dWthblwgOwor6Zu75YuV5qmfIDwgZGVuZG91a2lcIDsKK+WwkemHjyA8IHNob3VyeW91XCA7CivkuIDkuIHnm64gPCBpdGNob3VtZVwgOwor5LyK6YGU6KGGIDwgZGF0ZXNodXVcIDsKK+iFi+eqqeiFuiA8IGVraWthc2VuXCA7CivkuI3mlofms5UgPCBmdWJ1bnBvdVwgOwor55m+5bm0IDwgaHlha3VuZW5cIDsKK+i2s+i7vSA8IGFzaGlnYXJ1XCA7CivkuIDosqvmgKcgPCBpa2thbnNlaVwgOwor5Y+j5YaF54KOIDwga291bmFpZW5cIDsKK+WBpeethiA8IGtlbnBpdHN1XCA7CivpgY7kuI3otrMgPCBrYWZ1c29rdVwgOwor5a+S6aSFIDwga2FubW9jaGlcIDsKK+WvrumVtyA8IHJ5b3VjaG91XCA7CivmhJvnlKjogIUgPCBhaXlvdXNoYVwgOwor5L+K6LazIDwgc2h1bnNva3VcIDsKK+WFrOawkeenkSA8IGtvdW1pbmthXCA7CivlhaXlr4IgPCBueXV1amFrdVwgOwor5Ye65qC85a2QIDwgZGVnb3VzaGlcIDsKK+S/oeiqjSA8IHNoaW4nJ25pblwgOwor5LuK5LiW57SAIDwga29uc2Vpa2lcIDsKK+WFpeWtpiA8IG55dXVnYWt1XCA7Civmpa3niakgPCB3YXphbW9ub1wgOwor5pyq5ama6ICFIDwgbWlrb25zaGFcIDsKK+i1pOmdtCA8IGFrYWd1dHN1XCA7CivlgJnoo5znlJ8gPCBrb3Vob3NlaVwgOwor5bee5aKDIDwgc2h1dWt5b3VcIDsKK+adseWNl+S6nCA8IHRvdW5hbicnYVwgOwor5L+h6KiXIDwgc2hpbnRha3VcIDsKK+S+m+mkiuWhlCA8IGt1eW91dG91XCA7CivlgaXog4PliaQgPCBrZW4nJ2l6YWlcIDsKK+Wuv+mnhSA8IHNodWt1ZWtpXCA7CivmpbXngrkgPCBreW9rdXRlblwgOwor5L+X6Kq/IDwgem9rdWNob3VcIDsKK+iIjOeZjCA8IHpldHN1Z2FuXCA7Civnm7TkuK0gPCB0YWRhbmFrYVwgOwor6Iqx5oi/IDwgaGFuYWZ1c2FcIDsKK+S/rumok+iAhSA8IHNodWdlbmphXCA7Civnlqvnl4UgPCB5YWt1YnlvdVwgOwor6Iul5a6uIDwgd2FrYW1peWFcIDsKK+WFg+W4syA8IG1vdG9jaG91XCA7Civlr5vpl4ogPCBrYW5rYXRzdVwgOwor5a+46YmEIDwgc3VudGV0c3VcIDsKK+mBleeKr+ihjOeCuiA8IGloYW5rb3VpXCA7Civmn5TpgZPnnYAgPCBqdXVkb3VnaVwgOwor55m+5a6zIDwgaHlha3VnYWlcIDsKK+W+ruezu+aVsCA8IGJpa2Vpc3V1XCA7Civku5Xnva7loLQgPCBzaGlva2liYVwgOwor5YG255m6IDwgZ3V1aGF0c3VcIDsKK+W5s+aWueWSjCA8IGhlaWhvdXdhXCA7CivlsI/ouqsgPCBzaG91c2hpblwgOwor5a6/6aGYIDwgc2h1a3VnYW5cIDsKK+S8tOWlj+mDqCA8IGJhbnNvdWJ1XCA7CivnlJ/olqwgPCBzaG91eWFrdVwgOwor5a6/6aGMIDwgc2h1a3VkYWlcIDsKK+WPpOWGmeacrCA8IGtvc2hhaG9uXCA7Civnk7boqbAgPCBiaW5kenVtZVwgOwor5YGP56qfIDwgaGVua3V0c3VcIDsKK+WFiOWxsSA8IHNha2l5YW1hXCA7CivnlLfoibIgPCBuYW5zaG9rdVwgOwor6ISx6LyqIDwgZGF0c3VyaW5cIDsKK+WHuuadpeeJqSA8IGRla2ltb25vXCA7CivlgLnntIQgPCBrZW4nJ3lha3VcIDsKK+iNieS4iCA8IGt1c2F0YWtlXCA7CivlnJ/ppYXpoK0gPCBkb21hbmp1dVwgOwor5LiW6Kmx5Lq6IDwgc2V3YWJpdG9cIDsKK+WFpeWhviA8IG55dXVqdWt1XCA7Civnvo7poZTmsLQgPCBiaWdhbnN1aVwgOwor6Ieq55Sx5YiRIDwgaml5dXVrZWlcIDsKK+WhqemiqOWRgiA8IHNoaW9idXJvXCA7CivlhYXpm7vlmaggPCBqdXVkZW5raVwgOwor6KKr6aiT6ICFIDwgaGlrZW5zaGFcIDsKK+Wwj+eGiuW6pyA8IGtvZ3VtYXphXCA7CivlhKrlvaIgPCB5YXNhZ2F0YVwgOwor5omL5L+h6KqeIDwgdGVzaGluZ29cIDsKK+WFiOWuoiA8IHNlbmt5YWt1XCA7CivotaTmr5vluIMgPCBha2FnZXR0b1wgOwor5L+X6KGGIDwgem9rdXNodXVcIDsKK+WxseiGmiA8IHlhbWFoYWRhXCA7CivmppXmqLkgPCBnYWp1bWFydVwgOwor5YWI5a6JIDwgc2FraXlhc3VcIDsKK+mmrOmdoiA8IHVtYWR6dXJhXCA7CivmsLTlvannlLsgPCBzdWlzYWlnYVwgOwor5LiA5Lq65a+dIDwgaGl0b3JpbmVcIDsKK+mdkuWRs+azpSA8IGFvbWlkb3JvXCA7Civnmb7lp5MgPCBoeWFrdXNlaVwgOwor6Ieq55Sx5YWaIDwgaml5dXV0b3VcIDsKK+WFheWunyA8IGp1dWppdHN1XCA7Civoipnok4nls7AgPCBmdXlvdWhvdVwgOwor6JC96Iqx55SfIDwgcmFra2FzZWlcIDsKK+iKseW9oiA8IGhhbmFnYXRhXCA7CivlsbHplpPpg6ggPCBzYW5rYW5idVwgOwor55uX5Lq6IDwgbnVzdWJpdG9cIDsKK+WQjOaZguS7oyA8IGRvdWppZGFpXCA7Civnmb3lppkgPCBzaGlyb3RhZVwgOwor5bGx6ISIIDwgeWFtYW5hbWlcIDsKK+eEoeWul+a0viA8IG11c2h1dWhhXCA7CivoirHlvIEgPCBoYW5hYmlyYVwgOwor5YWl5Zu9IDwgbnl1dWtva3VcIDsKK+altea0iyA8IGt5b2t1eW91XCA7Civou43mlL/lupwgPCBndW5zZWlmdVwgOwor55m95aOBIDwgaGFrdWhla2lcIDsKK+eZveWiqCA8IGhha3Vib2t1XCA7Civnmbrlo7IgPCBoYXRzdWJhaVwgOwor5YaF5YqbIDwgbmFpcnlva3VcIDsKK+i1pOmKhSA8IHNoYWt1ZG91XCA7Civnmq7liaUgPCBrYXdhaGFnaVwgOwor5amm5Lq65LyaIDwgZnVqaW5rYWlcIDsKK+WOn+e5iue2rSA8IGdlbnNlbicnaVwgOwor5beo5Yi5IDwga3lvc2F0c3VcIDsKK+mqqOebpCA8IGtvdHN1YmFuXCA7Civpr4nlj6MgPCBrb2lndWNoaVwgOwor55Sf6ImyIDwgc2Vpc2hva3VcIDsKK+e2membu+awlyA8IGtlaWRlbmtpXCA7CivkuI3mlofmmI4gPCBmdWJ1bm1laVwgOwor5bmz5Zyf6ZaTIDwgaGlyYWRvbWFcIDsKK+asoeeUt+WdiiA8IGppbmFuYm91XCA7CivlhYjlpKogPCBzYWtpYnV0b1wgOwor6LaF6LaKIDwgY2hvdWV0c3VcIDsKK+iGgOiDseeCjiA8IGJvdWtvdWVuXCA7CivmnInlirnmiZMgPCB5dXVrb3VkYVwgOwor6Zuo6YeP6KiIIDwgdXJ5b3VrZWlcIDsKK+WFteWNkiA8IGhlaXNvdHN1XCA7CivlroflrpnoiLkgPCB1Y2h1dXNlblwgOwor5rib6KGw5ZmoIDwgZ2Vuc3Vpa2lcIDsKK+anmOW8jyA8IHlvdXNoaWtpXCA7CivkvLTpo58gPCBiYW5zaG9rdVwgOwor5aSa6Iq45oCnIDwgdGFnZWlzZWlcIDsKK+WFteWKmyA8IGhlaXJ5b2t1XCA7CivotaTliIfnrKYgPCBha2FnaXBwdVwgOwor5qW95qW9IDwgcmFrdXJha3VcIDsKK+mrmOa9riA8IHRha2FzaGlvXCA7CivlhoXlgbQgPCB1Y2hpZ2F3YVwgOwor6ISF6L+rIDwga3lvdWhha3VcIDsKK+iFueiGnCA8IGZ1a3VtYWt1XCA7CivngavmmJ/kurogPCBrYXNlaWppblwgOwor5YaF5YCJIDwgdWNoaWd1cmFcIDsKK+aXpeiIquapnyA8IG5pa2tvdWtpXCA7Civku4rkuJbnlYwgPCBrb25zZWthaVwgOwor6Iqx5a6IIDwgaGFuYW1vcmlcIDsKK+iDuOmDrSA8IGt5b3VrYWt1XCA7Civou43pnIDlk4EgPCBndW5qdWhpblwgOwor55eF5q+SIDwgYnlvdWRva3VcIDsKK+altealvSA8IGdva3VyYWt1XCA7CivmsLTokrjmsJcgPCBzdWlqb3VraVwgOwor5qW15qW1IDwgZ29rdWdva3VcIDsKK+WNmOa8ouWtlyA8IHRhbmthbmppXCA7CivljYHmloflrZcgPCBqdXVtb25qaVwgOwor5a6I5YKZ5YW1IDwgc2h1YmloZWlcIDsKK+eXheattCA8IGJ5b3VyZWtpXCA7Civmmpflj7fmlocgPCBhbmdvdWJ1blwgOwor6Iqx5auBIDwgaGFuYXlvbWVcIDsKK+WFqOWKmyA8IHplbnJ5b2t1XCA7CivlhbHlhbEgPCB0b21vZG9tb1wgOwor6auY562J56eRIDwga291dG91a2FcIDsKK+iKseWpvyA8IGhhbmFtdWtvXCA7CivotIvpppYgPCBuaXNla3ViaVwgOwor6Iul5ZCbIDwgd2FrYWdpbWlcIDsKK+WxgOiIjiA8IGt5b2t1c2hhXCA7Civlt57kv5cgPCBzaHV1em9rdVwgOwor5re75LmX5ZOhIDwgdGVuam91aW5cIDsKK+akjeeUnyA8IHNob2t1c2VpXCA7CivmqKnlipsgPCBrZW5yeW9rdVwgOwor5YSq5aWzIDwgeWFzYW9uJydhXCA7Civlrr/phZQgPCBzaHVrdXN1aVwgOwor6LWr6LWrIDwga2FrdWtha3VcIDsKK+ahiOWGheWbsyA8IGFuJyduYWl6dVwgOwor5ZCI6KiA6JGJIDwgYWlrb3RvYmFcIDsKK+WvhumAoCA8IG1pdHN1em91XCA7Civmpb3mm7IgPCBnYWtreW9rdVwgOwor6auY5rOiIDwgdGFrYW5hbWlcIDsKK+S8mumjnyA8IGthaXNob2t1XCA7CivlrprmnJ/liLggPCB0ZWlraWtlblwgOwor5YCS56uLIDwgdG91cml0c3VcIDsKK+iJsuaEnyA8IHNoaWtpa2FuXCA7Civlt6bkuIogPCBoaWRhcml1ZVwgOwor5LqI566X5qGIIDwgeW9zYW4nJ2FuXCA7CivlpJrmp5jmgKcgPCB0YXlvdXNlaVwgOwor5YWI5ZOyIDwgc2VudGV0c3VcIDsKK+iHquizoOazlSA8IGppYmFpaG91XCA7CivmpbXmnbEgPCBreW9rdXRvdVwgOwor5Ye65LiN57K+IDwgZGVidXNob3VcIDsKK+WuieWxseWyqSA8IGFuemFuZ2FuXCA7CivogIHlpKflrrYgPCByb3V0YWlrYVwgOwor5rCP57Sg5oCnIDwgdWppc3Vqb3VcIDsKK+S4iuWkqeawlyA8IGpvdXRlbmtpXCA7CivnrKzkuIDlo7AgPCBkYWlpc3NlaVwgOwor5bCO54Gr57eaIDwgZG91a2FzZW5cIDsKK+mtmuWxiyA8IHNha2FuYXlhXCA7Civkvp3poLzlv4MgPCBpcmFpc2hpblwgOwor6Lez566xIDwgdG9iaWJha29cIDsKK+i7n+W8jyA8IG5hbnNoaWtpXCA7CivosqDlgrXogIUgPCBmdXNhaXNoYVwgOwor6auY5q6/IDwgdGFrYWRvbm9cIDsKK+W+jOmgremDqCA8IGtvdXRvdWJ1XCA7CivlgY/niYcgPCBrYXRhaGFyYVwgOwor5bed5LiKIDwga2F3YWthbWlcIDsKK+earuiGmueXhSA8IGhpZnVieW91XCA7CivlsbHnqIsgPCB5YW1haG9kb1wgOwor55m65YuVIDwgaGF0c3Vkb3VcIDsKK+iAgeWkq+WppiA8IHJvdWZ1dWZ1XCA7CivlhYjlj6MgPCBzZW5rdWNoaVwgOwor5Zyw5LiL5rC0IDwgY2hpa2FzdWlcIDsKK+iCi+mqqCA8IHJva2tvdHN1XCA7Civpm7vmsJfku6MgPCBkZW5raWRhaVwgOwor5a6a576p5Z+fIDwgdGVpZ2lpa2lcIDsKK+eVnOeUoyA8IGNoaWt1c2FuXCA7CivoibLlvakgPCBzaGlraXNhaVwgOwor6Imv5b+DIDwgcnlvdXNoaW5cIDsKK+eUn+exsyA8IG5hbWFnb21lXCA7CivnlKjnrYYgPCB5b3VoaXRzdVwgOwor5pS+54Gr572qIDwgaG91a2F6YWlcIDsKK+mbqOWQiOe+vSA8IGFtYWdhcHBhXCA7Civlj5fliJHogIUgPCBqdWtlaXNoYVwgOwor6IeT54mpIDwgem91bW90c3VcIDsKK+mdnuWFrOmWiyA8IGhpa291a2FpXCA7CivpgZnjgIUgPCBoYXJ1YmFydVwgOwor6aqo54GwIDwga290c3ViYWlcIDsKK+aZruiri+WgtCA8IGZ1c2hpbmJhXCA7CivlpJrls7bmtbcgPCB0YXRvdWthaVwgOwor6Ii55peFIDwgZnVuYXRhYmlcIDsKK+iIueaWuSA8IGZ1bmFrYXRhXCA7CivlirTlg43mrYwgPCByb3Vkb3VrYVwgOwor5a+E5riv5ZywIDwga2lrb3VjaGlcIDsKK+iKseWckiA8IGhhbmF6b25vXCA7CivlrprmnJ/kvr8gPCB0ZWlraWJpblwgOwor6LuN5b6LIDwgZ3Vucml0c3VcIDsKK+i7jeW9uSA8IGd1bicneWFrdVwgOwor5pyq5p2l5b2iIDwgbWlyYWlrZWlcIDsKK+eZvuWEhCA8IGh5YWt1b2t1XCA7CivlsZHnsaAgPCBrdXp1a2Fnb1wgOwor55eb5pKDIDwgdHN1dWdla2lcIDsKK+WFqOS5syA8IHplbicnbnl1dVwgOwor5qC86Kq/IDwga2FrdWNob3VcIDsKK+i8uOWHuiA8IHl1c2h1dHN1XCA7Civpo5vooYzlo6sgPCBoaWtvdXNoaVwgOwor5qaC5ousIDwgZ2Fpa2F0c3VcIDsKK+iGoOedgCA8IGtvdWNoYWt1XCA7CivlpornlKPlqaYgPCBuaW5zYW5wdVwgOwor55+t5pmC6ZaTIDwgdGFuamlrYW5cIDsKK+S9teiorSA8IGhlaXNldHN1XCA7Civnmb7lgI0gPCBoeWFrdWJhaVwgOwor5YGP5beu5YCkIDwgaGVuc2FjaGlcIDsKK+S4i+mZjee3miA8IGtha291c2VuXCA7CivmtIvoj5PlrZAgPCB5b3VnYXNoaVwgOwor5pat6KOB5qmfIDwgZGFuc2Fpa2lcIDsKK+i7iuW6pyA8IGt1cnVtYXphXCA7CivlhYjlhaUgPCBzZW4nJ255dXVcIDsKK+mjm+ihjOWgtCA8IGhpa291am91XCA7CivlgJ/nlKggPCBzaGFrdXlvdVwgOwor5a6/6LODIDwgeWFkb2NoaW5cIDsKK+eVnOeKrCA8IGNoaWt1a2VuXCA7CivmgbXmr5TpoIjorJsgPCBlYmlzdWtvdVwgOwor5YKN5p2WIDwgc29iYWR6dWVcIDsKK+WFg+WFgyA8IG1vdG9tb3RvXCA7Civlt6XlhbflhaUgPCBrb3VndWlyZVwgOwor5L2T5rip6KiIIDwgdGFpb25rZWlcIDsKK+WvneiiiyA8IG5lYnVrdXJvXCA7CivnmbrooYzml6UgPCBoYWtrb3ViaVwgOwor6Iqd5ZywIDwgc2hpYmFjaGlcIDsKK+aLt+WVj+WFtyA8IGdvdW1vbmd1XCA7CivnmoTkuK0gPCB0ZWtpY2h1dVwgOwor6Zmk5aSW5L6LIDwgam9nYWlyZWlcIDsKK+Wwsee4myA8IHNodXViYWt1XCA7Civlr7/ogIHkurogPCBqdXJvdWppblwgOwor5a+G6KyAIDwgbWl0c3Vib3VcIDsKK+WFrOWPluWnlCA8IGtvdXRvcmlpXCA7CivpmaLlpJblm6MgPCBpbmdhaWRhblwgOwor5LiN5aSJ5oCnIDwgZnVoZW5zZWlcIDsKK+WvhuirhyA8IG1pdHN1ZGFuXCA7CivlpJrnlKPns7sgPCB0YXNhbmtlaVwgOwor55m65LukIDwgaGF0c3VyZWlcIDsKK+Wwj+imj+aooSA8IHNob3VraWJvXCA7CivlkIjorbDliLYgPCBnb3VnaXNlaVwgOwor57at566h5p2fIDwgaWthbnNva3VcIDsKK+iJr+WwhiA8IHJ5b3VzaG91XCA7CivlrqLou4ogPCBreWFrdXNoYVwgOwor6ISx6ImyIDwgZGFzc2hva3VcIDsKK+mrmOa4qeioiCA8IGtvdW9ua2VpXCA7Civpq5jmnK0gPCBrb3VzYXRzdVwgOwor5Yid562J56eRIDwgc2hvdG91a2FcIDsKK+iomOaGtuazlSA8IGtpb2t1aG91XCA7Civku4rmnJ3mlrkgPCBrZXNhZ2F0YVwgOwor55m+5LiHIDwgaHlha3VtYW5cIDsKK+egtOegleaApyA8IGhhc2Fpc2VpXCA7Civpub/ph47oi5EgPCByb2t1eWFvblwgOwor5LuZ6aqoIDwgc2Vua290c3VcIDsKK+WuiemFkiA8IHlhc3V6YWtlXCA7Civlg7vlooMgPCBoZWtpa3lvdVwgOwor6LuK5bGLIDwga3VydW1heWFcIDsKK+iInuWPsOijjyA8IGJ1dGFpdXJhXCA7CivntYzllrbmqKkgPCBrZWllaWtlblwgOwor6Lqr5b+DIDwgc2hpbnNoaW5cIDsKK+eXm+aDnCA8IHRzdXVzZWtpXCA7CivkuI3nh4PmgKcgPCBmdW5lbnNlaVwgOwor5YG95pytIDwgbmlzZWZ1ZGFcIDsKK+elnuelh+WumCA8IGppbmdpa2FuXCA7CivlgJ/niakgPCBrYXJpbW9ub1wgOwor6LWk6JuZIDwgYWthZ2FlcnVcIDsKK+iiq+Wus+iAhSA8IGhpZ2Fpc2hhXCA7Civku5jppqwgPCB0c3VrZXVtYVwgOwor5rC06YW45Z+6IDwgc3Vpc2Fua2lcIDsKK+WkqeS9k+WbsyA8IHRlbnRhaXp1XCA7Civov5Hot53pm6IgPCBraW5reW9yaVwgOwor5rqW56S+5ZOhIDwganVuc2hhaW5cIDsKK+i1pOiZqyA8IGFrYW11c2hpXCA7CivkvZfoqIAgPCB3YWJpZ290b1wgOwor5Lq65Lu26LK7IDwgamlua2VuaGlcIDsKK+W4uOW+l+aEjyA8IGpvdXRva3VpXCA7CivnlJ/nmq4gPCBuYW1ha2F3YVwgOwor5qW15oCnIDwga3lva3VzZWlcIDsKK+iJsuWlsyA8IGlyb29uJyduYVwgOwor6Lyq5LyQIDwgcmluYmF0c3VcIDsKK+WAjeeOhyA8IGJhaXJpdHN1XCA7Civnmq7ohILohbogPCBoaXNoaXNlblwgOwor54Sh5a6a5b2iIDwgbXV0ZWlrZWlcIDsKK+WPr+eUqOaApyA8IGtheW91c2VpXCA7CivkurrnlJ/mtL4gPCBqaW5zZWloYVwgOwor5L+X56ewIDwgem9rdXNob3VcIDsKK+WxseeMvyA8IHlhbWF6YXJ1XCA7CivlsbHnjKsgPCB5YW1hbmVrb1wgOwor5Lyd6YGUIDwgZGVudGF0c3VcIDsKK+eZuuihjOaJgCA8IGhha2tvdWpvXCA7CivmkanlpKnmpbwgPCBtYXRlbnJvdVwgOwor5a+16IejIDwgY2hvdXNoaW5cIDsKK+Wwj+mWk+eJqSA8IGtvbWFtb25vXCA7CivmpI3mr5sgPCBzaG9rdW1vdVwgOwor5b6h5aSn5bGkIDwgZ290YWlzb3VcIDsKK+itpuWCmemaiiA8IGtlaWJpdGFpXCA7CivlibLng7nnnYAgPCBrYXBwb3VnaVwgOwor5Y2U5ZKM6Z+zIDwga3lvdXdhb25cIDsKK+WPl+WLleaFiyA8IGp1ZG91dGFpXCA7Civnt4/li5Xlk6EgPCBzb3Vkb3VpblwgOwor6IKJ6Y2LIDwgbmlrdW5hYmVcIDsKK+eUt+eItSA8IGRhbnNoYWt1XCA7CivoirHmnpfns5YgPCBrYXJpbnRvdVwgOwor5Lq66a2CIDwgaGl0b2RhbWFcIDsKK+iFueeXmyA8IGZ1a3V0c3V1XCA7CivoiLnlupUgPCBmdW5hem9rb1wgOwor6Ii55bqKIDwgZnVuYWRva29cIDsKK+mnhuiQvSA8IGtha2VvY2hpXCA7CivmpbXluIwgPCBnb2t1bWFyZVwgOwor5Lq66aqoIDwgamlua290c3VcIDsKK+Wwj+e1kCA8IGtvbXVzdWJpXCA7CivmraPnpL7lk6EgPCBzZWlzaGFpblwgOwor562J5rip57eaIDwgdG91b25zZW5cIDsKK+Wun+iqrCA8IGppc3NldHN1XCA7CivlvqHpnIrlsYsgPCBtaXRhbWF5YVwgOwor5LiA5aSV6KmxIDwgaXNzZWtpd2FcIDsKK+Wwj+eCuuabvyA8IGtvZ2F3YXNlXCA7CivnrKzkuIDkvY0gPCBkYWlpY2hpaVwgOwor5bGl54mpIDwgaGFraW1vbm9cIDsKK+eXheW+tCA8IGJ5b3VjaG91XCA7CivnqI7plqLlkI8gPCB6ZWlrYW5yaVwgOwor6aSK6IKy6LK7IDwgeW91aWt1aGlcIDsKK+WumuiqrCA8IHRlaXNldHN1XCA7Civoh6jmnIggPCByaW5nZXRzdVwgOwor5rWB6Y+R6aasIDwgeWFidXNhbWVcIDsKK+eXheW8sSA8IGJ5b3VqYWt1XCA7CivmjqfoqLTkurogPCBrb3Vzb25pblwgOwor6Iy26Kmx5LyaIDwgY2hhd2FrYWlcIDsKK+WWq+e3iuS6iyA8IGtpa2tpbmppXCA7CivlkLjph5HliZsgPCBrb2tvbmdvdVwgOwor6aqo5p2QIDwga290c3V6YWlcIDsKK+eUo+eJqSA8IHNhbmJ1dHN1XCA7CivmpJzmnK0gPCBrZW5zYXRzdVwgOwor6LKq6aOfIDwgZG9uc2hva3VcIDsKK+S/oeeUqCA8IHNoaW4nJ3lvdVwgOwor6ISH6IW5IDwgd2FraWJhcmFcIDsKK+iAgee3tOWutiA8IHJvdXJlbmthXCA7CivkuI3oqr/lkowgPCBmdWNob3V3YVwgOwor55Sf54mpIDwgbmFtYW1vbm9cIDsKK+WxgOeVqiA8IGt5b2t1YmFuXCA7CivlsI/nrZYgPCBzaG91c2FrdVwgOwor5qeN5YWIIDwgeWFyaXNha2lcIDsKK+awl+euoeaUryA8IGtpa2Fuc2hpXCA7Civnl7Dlo7ogPCB0YW50c3Vib1wgOwor6auq5bqKIDwga2FtaWRva29cIDsKK+awtOmFuOWMliA8IHN1aXNhbmthXCA7CivlpKfkurrmsJcgPCBkYWluaW5raVwgOwor5a+S6ImyIDwga2Fuc2hva3VcIDsKK+mdkumKheWZqCA8IHNlaWRvdWtpXCA7CivmpI3moL0gPCBzaG9rdXNhaVwgOwor5LyR6LazIDwga3l1dXNva3VcIDsKK+iIueWuvyA8IGZ1bmF5YWRvXCA7Civku4/ploAgPCBidXRzdW1vblwgOwor6aOb6KGM5L6/IDwgaGlrb3ViaW5cIDsKK+WCjeW9uSA8IHdha2l5YWt1XCA7Civogonov6sgPCBuaWt1aGFrdVwgOwor5Y+v6IO95rOVIDwga2Fub3Vob3VcIDsKK+ecn+ePoOavjSA8IHNoaW5qdWJvXCA7CivmoLjohpwgPCBrYWt1bWFrdVwgOwor5bCC5pS756eRIDwgc2Vua291a2FcIDsKK+WMluiGv+iPjCA8IGthbm91a2luXCA7CivkuqHpqrggPCBuYWtpZ2FyYVwgOwor6IeY5pyIIDwgcm91Z2V0c3VcIDsKK+akjeaelyA8IHNob2t1cmluXCA7CivpnZ7luLjnt5ogPCBoaWpvdXNlblwgOwor57K+5LiA5p2vIDwgc2VpaXBwYWlcIDsKK+mBh+S4jemBhyA8IGd1dWZ1Z3V1XCA7Civog7johpwgPCBreW91bWFrdVwgOwor6aO96aOfIDwgaG91c2hva3VcIDsKK+S/rueGnyA8IHNodXVqdWt1XCA7CivmnKrogJXlnLAgPCBtaWtvdWNoaVwgOwor6ZaA5LiL55SfIDwgbW9ua2FzZWlcIDsKK+S4gOmiqOWRgiA8IGhpdG9mdXJvXCA7CivlroXoqLogPCB0YWt1c2hpblwgOwor5bCP56aEIDwgc2hvdXJva3VcIDsKK+S8neiqrCA8IGRlbnNldHN1XCA7CivotrPnmZYgPCBhc2hpa3VzZVwgOwor6ISx56iOIDwgZGF0c3V6ZWlcIDsKK+S6rOmfvyA8IGt5b3VreW91XCA7Civln7nppIrln7ogPCBiYWl5b3VraVwgOwor6Lui5YWlIDwgdGVuJydueXV1XCA7Civou43pmorljJYgPCBndW50YWlrYVwgOwor5ryU6Iq45LyaIDwgZW5nZWlrYWlcIDsKK+WvvueriyA8IHRhaXJpdHN1XCA7CivmlofkurrnlLsgPCBidW5qaW5nYVwgOwor54++5pmC5LujIDwgZ2VuamlkYWlcIDsKK+iFq+eJqSA8IHNodW1vdHN1XCA7CivluoPnr4Tlm7IgPCBrb3VoYW4nJ2lcIDsKK+alteWkpyA8IGt5b2t1ZGFpXCA7CivnlaXmm7ggPCByeWFrdXNob1wgOwor5a6/6IiOIDwgc2h1a3VzaGFcIDsKK+i7jeWNkiA8IGd1bnNvdHN1XCA7CivlhoblsYvmoLkgPCBtYXJ1eWFuZVwgOwor5bOw5bOwIDwgbWluZW1pbmVcIDsKK+WfuemkiuWcnyA8IGJhaXlvdWRvXCA7Civlr5LmsJflm6MgPCBrYW5raWRhblwgOwor5a656ImyIDwgeW91c2hva3VcIDsKK+eyl+WIqeebiiA8IGFyYXJpZWtpXCA7Civku4vpjK8gPCBrYWlzaGFrdVwgOwor5LqI566X5aSWIDwgeW9zYW5nYWlcIDsKK+mdnuawkeS4uyA8IGhpbWluc2h1XCA7CivltYzlhaUgPCBrYW4nJ255dXVcIDsKK+i7kuWIpSA8IGtlbmJldHN1XCA7CivlgbTlvbkgPCBzb2JheWFrdVwgOwor6Lui5YCfIDwgdGVuc2hha3VcIDsKK+WPl+ebiuiAhSA8IGp1ZWtpc2hhXCA7CivohIrntKIgPCBzZWtpc2FrdVwgOwor5a6J5a6a5p2/IDwgYW50ZWliYW5cIDsKK+iomOW/temkqCA8IGtpbmVua2FuXCA7CivkuIDmrankuIDmrakgPCBpcHBvaXBwb1wgOwor5aSn5a6H5a6ZIDwgZGFpdWNodXVcIDsKK+iyoemWpSA8IHphaWJhdHN1XCA7CivkupzmgKXmgKcgPCBha3l1dXNlaVwgOwor5pyo6bygIDwga2luZXp1bWlcIDsKK+mqqOaKmCA8IGtvc3NldHN1XCA7CivohJrnq4sgPCBreWF0YXRzdVwgOwor5YO75LqLIDwgaGlnYWdvdG9cIDsKK+ioiOeul+ewvyA8IGtlaXNhbmJvXCA7CivnlaXmlocgPCByeWFrdWJ1blwgOwor6LuS5YWIIDwgbm9raXNha2lcIDsKK+mdmeatoueUuyA8IHNlaXNoaWdhXCA7CivkuI3mlbTlkIggPCBmdXNlaWdvdVwgOwor5LqM6YeN6aGOIDwgbmlqdXVhZ29cIDsKK+WItuW+oeapnyA8IHNlaWd5b2tpXCA7CivmoLnntbYgPCBrb256ZXRzdVwgOwor5p6d6YGTIDwgZWRhbWljaGlcIDsKK+S6jOetieWIhiA8IG5pdG91YnVuXCA7Civlrr/ogIEgPCBzaHVrdXJvdVwgOwor6LK46YeRIDwga2FzaGlraW5cIDsKK+W5s+eCieazlSA8IGhlaXJvaG91XCA7Civpq5jlr4YgPCBrb3VtaXRzdVwgOwor5LqU56ic5aChIDwgZ29yeW91aG9cIDsKK+acquadpeWDjyA8IG1pcmFpem91XCA7CivotrPmuKnlmaggPCBzb2t1b25raVwgOwor5LqM562J5YW1IDwgbml0b3VoZWlcIDsKK+iytOaXj+mZoiA8IGtpem9rdWluXCA7Civku4/pgZMgPCBidXRzdWRvdVwgOwor5L2V6ICFIDwgbmFuaW1vbm9cIDsKK+iJr+S/lyA8IHJ5b3V6b2t1XCA7CivoqJjlj7foq5YgPCBraWdvdXJvblwgOwor5L2P6IG3IDwganV1c2hva3VcIDsKK+aflOihkyA8IGp1dWp1dHN1XCA7CivnlJ/msLQgPCBuYW1hbWl6dVwgOwor5ZCN6Kme5Y+lIDwgbWVpc2hpa3VcIDsKK+iDuOezniA8IG11bmVrdXNvXCA7CivlrqLoiLkgPCBreWFrdXNlblwgOwor6ICB6aqoIDwgcm91a290c3VcIDsKK+aelei+uiA8IG1ha3VyYWJlXCA7CivlsKTniakgPCB5dXVidXRzdVwgOwor5Lyd6aas6Ii5IDwgdGVubWFzZW5cIDsKK+S5semrqiA8IHJhbnBhdHN1XCA7CivpioDmsrPns7sgPCBnaW5nYWtlaVwgOwor5L2T572wIDwgdGFpYmF0c3VcIDsKK+S6uumHjCA8IGhpdG96YXRvXCA7CivlrqLohrMgPCBreWFrdXplblwgOwor5aSn5a6u5Y+4IDwgZGFpZ3V1amlcIDsKK+iCieimqiA8IG5pa3VzaGluXCA7CivmtYHooYznm64gPCBoYXlhcmltZVwgOwor6YGg6KaW55y8IDwgZW5zaGlnYW5cIDsKK+WvjOexpCA8IHRvbWlrdWppXCA7CivljbXlt6Pngo4gPCByYW5zb3VlblwgOwor5YG15a+fIDwgdGVpc2F0c3VcIDsKK+iDveethiA8IG5vdWhpdHN1XCA7Civkub7poqggPCBrYXJha2F6ZVwgOwor6auq5Z6LIDwga2FtaWdhdGFcIDsKK+acquS6oeS6uiA8IG1pYm91amluXCA7CivlvJXnlKjnrKYgPCBpbicneW91ZnVcIDsKK+iJr+S5hSA8IHJ5b3VreXV1XCA7CivmnZHpm6ggPCBtdXJhc2FtZVwgOwor5p+U6YGT5a62IDwganV1ZG91a2FcIDsKK+i7kuS4piA8IG5va2luYW1pXCA7CivkuI3lnYfooaEgPCBmdWtpbmtvdVwgOwor6LuS5LiIIDwgbm9raXRha2VcIDsKK+WvkueruSA8IGthbmNoaWt1XCA7CivmnIjpvaIgPCBnZXRzdXJlaVwgOwor5a++6Kmx6ICFIDwgdGFpd2FzaGFcIDsKK+i3s+aigSA8IGNob3VyeW91XCA7Civlr5LnqbogPCBzYW11em9yYVwgOwor6Kif5YuZ6YOoIDwgc2hvdW11YnVcIDsKK+S7sOinkiA8IGd5b3VrYWt1XCA7CivlvqHpnIrliY0gPCBnb3JlaXplblwgOwor5YWM5o+b5Yi4IDwgZGFrYW5rZW5cIDsKK+S4jeaRgueUnyA8IGZ1c2Vzc2VpXCA7Civmpb3liocgPCBnYWt1Z2VraVwgOwor5pel5pys6aKoIDwgbmlob25mdXVcIDsKK+mjhOmjhCA8IGh5b3VoeW91XCA7CivmnKjpqqggPCBtb2trb3RzdVwgOwor5YCZ6KOc5ZywIDwga291aG9jaGlcIDsKK+eOiemrhCA8IGd5b2t1enVpXCA7CivnoILpmLLmnpcgPCBzYWJvdXJpblwgOwor5L+X5rWBIDwgem9rdXJ5dXVcIDsKK+S4i+Wjq+WumCA8IGthc2hpa2FuXCA7CivluILorbDkvJogPCBzaGlnaWthaVwgOwor5LiA5pmC5pyfIDwgaWNoaWppa2lcIDsKK+WBpeWunyA8IGtlbmppdHN1XCA7Civoh6rosqDlv4MgPCBqaWZ1c2hpblwgOwor6LGq6ZuqIDwgZ291c2V0c3VcIDsKK+ebuOWQiOWCmCA8IGFpYWlnYXNhXCA7CivogbToppogPCBjaG91a2FrdVwgOwor6KyZ6K2y6KqeIDwga2Vuam91Z29cIDsKK+ePjemHjSA8IGNoaW5jaG91XCA7CivmibbmjIHnsbMgPCBmdWNoaW1haVwgOwor5YaN6LW35YuVIDwgc2Fpa2lkb3VcIDsKK+eNo+WMu+WtpiA8IGp1dWlnYWt1XCA7CivpnZ7luLjnlKggPCBoaWpvdXlvdVwgOwor56C05buJ5oGlIDwgaGFyZW5jaGlcIDsKK+WHuuaUvumhjCA8IGRlaG91ZGFpXCA7CivlronlrprmhJ8gPCBhbnRlaWthblwgOwor5YG05aOBIDwgc29rdWhla2lcIDsKK+aknOWwvyA8IGtlbicnbnlvdVwgOwor6aSK6ICB6ZmiIDwgeW91cm91aW5cIDsKK+S5sembkSA8IHJhbnphdHN1XCA7CivlsZ7mnJsgPCBzaG9rdWJvdVwgOwor6YeO6Imv54yrIDwgbm9yYW5la29cIDsKK+S4rem7kiA8IG5ha2FndXJvXCA7CivmnKrkuIHlubQgPCBtaXRlaW5lblwgOwor5Lq66LazIDwgaGl0b2FzaGlcIDsKK+WvvueJqSA8IHRhaWJ1dHN1XCA7CivlronlrprmgKcgPCBhbnRlaXNlaVwgOwor546J6aGUIDwgZ3lva3VnYW5cIDsKK+mir+miryA8IHNhc3NhdHN1XCA7Civku4/oqqwgPCBidXNzZXRzdVwgOwor5bO25Y+wIDwgc2hpbWFkYWlcIDsKK+S7h+iujiA8IGt5dXVzaHV1XCA7CivkvbXnmbogPCBoZWloYXRzdVwgOwor6aeQ55WZIDwgY2h1dXJ5dXVcIDsKK+eVpeW4vSA8IHJ5YWt1Ym91XCA7CivmsbrnrpfmnJ8gPCBrZXNzYW5raVwgOwor5pyd6aOvIDwgYXNhbWVzaGlcIDsKK+iHquS5l+aguSA8IGppam91a29uXCA7Civlhajojbfph40gPCB6ZW5rYWp1dVwgOwor5L2V56iLIDwgbmFuaWhvZG9cIDsKK+WlpeW+oeauvyA8IG9rdWdvdGVuXCA7Civpoqjpo58gPCBmdXVzaG9rdVwgOwor55Wz5bGLIDwgdGF0YW1peWFcIDsKK+ijvemAoOaJgCA8IHNlaXpvdWpvXCA7CivlgbTlnKcgPCBzb2t1YXRzdVwgOwor6LSW572qIDwgc2hva3V6YWlcIDsKK+W/q+eUt+WFkCA8IGthaWRhbmppXCA7CivogqnogpggPCBrYXRhaGlqaVwgOwor5pe65paH56S+IDwgb3VidW5zaGFcIDsKK+afk+iJsiA8IHNlbnNob2t1XCA7CivotoXpn7Pms6IgPCBjaG91b25wYVwgOwor5a6I6K236ZyKIDwgc2h1Z29yZWlcIDsKK+eEoeacn+W7tuacnyA8IG11a2llbmtpXCA7CivmnKjmm77lt50gPCBraXNvZ2F3YVwgOwor5byx6Z+z5ZmoIDwgamFrdW9ua2lcIDsKK+adkemHjCA8IG11cmF6YXRvXCA7Civku5nooZMgPCBzZW5qdXRzdVwgOwor5L+X5qW9IDwgem9rdWdha3VcIDsKK+mmluetiyA8IGt1YmlzdWppXCA7CivkvYfnq4sgPCBjaG9yaXRzdVwgOwor5a+G552AIDwgbWl0Y2hha3VcIDsKK+axuueul+aXpSA8IGtlc3NhbmJpXCA7CivohbDmnb8gPCBrb3NoaWl0YVwgOwor6IKh6IKJIDwgbW9tb25pa3VcIDsKK+iEsea8jyA8IGRhdHN1cm91XCA7Civoh6rkuLvmqKkgPCBqaXNodWtlblwgOwor6IO95byB5a62IDwgbm91YmVua2FcIDsKK+WPr+iDveaApyA8IGthbm91c2VpXCA7CivlpKfml6bpgqMgPCBvb2RhbicnbmFcIDsKK+S4uOmrtyA8IG1hcnVtYWdlXCA7CivljbDluqbmlZkgPCBpbmRva3lvdVwgOwor5bGI5puyIDwga3Vra3lva3VcIDsKK+iIueS6uiA8IGZ1bmFiaXRvXCA7CivpqqjlpKogPCBob25lYnV0b1wgOwor6auY5Y2SIDwga291c290c3VcIDsKK+eEoeS6uuWztiA8IG11amludG91XCA7CivlsLHmpa0gPCBzaHV1Z3lvdVwgOwor6aOf6YGTIDwgc2hva3Vkb3VcIDsKK+ecn+S8vOS6iyA8IG1hbmVnb3RvXCA7CivosLfpoqggPCB0YW5pa2F6ZVwgOwor6KyE5YaZ5ZmoIDwgdG91c2hha2lcIDsKK+S7ruiRuiA8IGthcmlidWtpXCA7Civpoqjpm6ogPCBmdXVzZXRzdVwgOwor5p+U6IKMIDwgeWF3YWhhZGFcIDsKK+mnkOeLrCA8IGNodXVkb2t1XCA7CivluLDpgoTogIUgPCBraWthbnNoYVwgOwor546J6ZaAIDwgZ3lva3Vtb25cIDsKK+WKqeeUo+mZoiA8IGpvc2FuJydpblwgOwor5pyI6aOfIDwgZ2Vzc2hva3VcIDsKK+Wls+W6l+WToSA8IGpvdGVuJydpblwgOwor5qCX55+zIDwga3VyaWlzaGlcIDsKK+Wwj+azoiA8IHNhemFuYW1pXCA7Civom7jpg6jlsYsgPCB0YWtvYmV5YVwgOwor5LqI566X5LiKIDwgeW9zYW5qb3VcIDsKK+WumueriyA8IHRlaXJpdHN1XCA7CivkuLjpppYgPCBtYXJ1a3ViaVwgOwor5Lit6auYIDwgbmFrYWRha2FcIDsKK+WumuaZguWItiA8IHRlaWppc2VpXCA7Civlrpjnq4sgPCBrYW5yaXRzdVwgOwor6IO9546HIDwgbm91cml0c3VcIDsKK+ato+W8puazoiA8IHNlaWdlbmhhXCA7CivkvZnmiYDkuosgPCB5b3NvZ290b1wgOwor6Laz5qWtIDwgYXNoaXdhemFcIDsKK+acqOmQuCA8IGJva3V0YWt1XCA7CivkuLvpo58gPCBzaHVzaG9rdVwgOwor5L+X5puyIDwgem9ra3lva3VcIDsKK+S9nOeXhSA8IHNha3VieW91XCA7CivkvZXnmb4gPCBuYW5ieWFrdVwgOwor5LuB6KGTIDwgamluanV0c3VcIDsKK+mmrOm5v+iAhSA8IGJha2Ftb25vXCA7CivmoZzmua8gPCBzYWt1cmF5dVwgOwor5qSc5ZynIDwga2VuJydhdHN1XCA7CivlhIDnpLzlhbUgPCBnaXJlaWhlaVwgOwor5LiA6b2jIDwgaGl0b2tvbWFcIDsKK+i2s+aisCA8IGFzaGlrYXNlXCA7CivmnIjpnaIgPCBnZXRzdW1lblwgOwor5pel5pys6YWSIDwgbmlob25zaHVcIDsKK+WwveaXpSA8IGppbmppdHN1XCA7CivlsJHmrLIgPCBzaG91eW9rdVwgOwor55S75byVIDwga2FrdWJpa2lcIDsKK+aXqeeUo+WFkCA8IHNvdXphbmppXCA7CivnlZnlraYgPCByeXV1Z2FrdVwgOwor5a2m57+SIDwgZ2FrdXNodXVcIDsKK+i3i+aWhyA8IGJhdHN1YnVuXCA7CivlsbHlvaYgPCB5YW1hYmlrb1wgOwor5bGx5b2iIDwgeWFtYWdhdGFcIDsKK+eXheS4rSA8IGJ5b3VjaHV1XCA7CivmjqHntr/lmaggPCBzYWltZW5raVwgOwor5YG25YqbIDwgZ3V1cnlva3VcIDsKK+iLsemAo+mCpiA8IGVpcmVucG91XCA7Civku7vogbcgPCBuaW5zaG9rdVwgOwor6ISx5q+bIDwgZGF0c3Vtb3VcIDsKK+aXqeeUn+WFkCA8IHNvdXNlaWppXCA7CivmnKjpi48gPCBraWJhc2FtaVwgOwor6LKn6KGAIDwgaGlua2V0c3VcIDsKK+WKoOebn+iAhSA8IGthbWVpc2hhXCA7CivpmY3pm6jph48gPCBrb3V1cnlvdVwgOwor6ICz6KixIDwgbWltaW1vdG9cIDsKK+WCkeS6uiA8IGtldHN1amluXCA7Civlr77msbogPCB0YWlrZXRzdVwgOwor5bCE5q66IDwgc2hhc2F0c3VcIDsKK+itpuWCmeiJhyA8IGtlaWJpdGVpXCA7Civlh7rmnaXkuosgPCBkZWtpZ290b1wgOwor5Luk6ImyIDwgcmVpc2hva3VcIDsKK+S+oembu+WtkCA8IGthZGVuc2hpXCA7CivlsIHmrrogPCBmdXVzYXRzdVwgOwor5Y+k55Sf55WMIDwga29zZWlrYWlcIDsKK+Wwj+anjCA8IGtvZHp1Y2hpXCA7CivlrabnuL4gPCBnYWt1c2VraVwgOwor5bGx5bedIDwgeWFtYWdhd2FcIDsKK+mrmOS9jiA8IHRha2FoaWt1XCA7CivkuK3poIMgPCBuYWthZ29yb1wgOwor6IG36IO9IDwgc2hva3Vub3VcIDsKK+WxiOaKmCA8IGt1c3NldHN1XCA7Civlrp/nm7QgPCBqaXRjaG9rdVwgOwor6YeR6a2a5bGLIDwga2luZ3lveWFcIDsKK+iFsOaKmCA8IGtvc2hpb3JlXCA7CivmnKjlpKnok7wgPCBtYXRhdGFiaVwgOwor5a6f55uKIDwgaml0c3Vla2lcIDsKK+WNiuijuOS9kyA8IGhhbnJhdGFpXCA7CivlrprnnYAgPCB0ZWljaGFrdVwgOwor5qKB5pyoIDwgcnlvdWJva3VcIDsKK+aXpeacrOi7jSA8IG5paG9uZ3VuXCA7Civml6XmnKzou4ogPCBuaWhvbnNoYVwgOwor5YG25YG2IDwgdGFtYXRhbWFcIDsKK+S/rue+hemBkyA8IHNodXJhZG91XCA7CivotrPml6kgPCBhc2hpYmF5YVwgOwor5ZWG6KGM54K6IDwgc2hvdWtvdWlcIDsKK+iIjOS7oyA8IHpldHN1ZGFpXCA7Civmn7Hnn7MgPCBjaHV1c2VraVwgOwor5bGx5bGxIDwgeWFtYXlhbWFcIDsKK+adoemHjOWItiA8IGpvdXJpc2VpXCA7CivkuK3pmpQgPCBjaHV1a2FrdVwgOwor5bGA5omAIDwga3lva3VzaG9cIDsKK+afk+ethiA8IHNlbnBpdHN1XCA7CivmipXlvbHms5UgPCB0b3VlaWhvdVwgOwor5L+h5oaRIDwgc2hpbnB5b3VcIDsKK+ahn+apiyA8IHNhbmJhc2hpXCA7CivogonntLAgPCBuaWt1Ym9zb1wgOwor5a6i55SoIDwga3lha3V5b3VcIDsKK+S4remZkCA8IG5ha2FnaXJpXCA7CivmnInlsL7poZ4gPCB5dXViaXJ1aVwgOwor5bGx5a+6IDwgeWFtYWRlcmFcIDsKK+asp+e+heW3tCA8IHlvdXJvcHBhXCA7CivkuIfpqqggPCBiYW5rb3RzdVwgOwor5LiW6ZaT5L2TIDwgc2VrZW50ZWlcIDsKK+S8iumBlOW3uyA8IGRhdGVtYWtpXCA7Civkv67lvqkgPCBzaHV1ZnVrdVwgOwor5LuP6ImmIDwgZnV0c3VrYW5cIDsKK+Wun+eUqCA8IGppdHN1eW91XCA7Civkv67lvpcgPCBzaHV1dG9rdVwgOwor6IOG55WlIDwgdGFucnlha3VcIDsKK+awtOWIqeaoqSA8IHN1aXJpa2VuXCA7Civlj7LlrablrrYgPCBzaGlnYWtrYVwgOwor5Li46ZG/IDwgbWFydW5vbWlcIDsKK+WxseWuiCA8IHlhbWFtb3JpXCA7CivotrPmkbogPCBhc2hpenVyaVwgOwor6aOf6KiAIDwgc2hva3VnZW5cIDsKK+e0jeS7mOmHkSA8IG5vdWZ1a2luXCA7CivolY7puqbmrrsgPCBzb2JhZ2FyYVwgOwor5LqM6KiAIDwgZnV0YWtvdG9cIDsKK+S9k+eGsSA8IHRhaW5ldHN1XCA7CivotaTps6XotaTohbkgPCBha2Frb2trb1wgOwor5pa55ZCR6Ii1IDwgaG91a291ZGFcIDsKK+S7rue2tCA8IGthcml0b2ppXCA7CivlpI/oh7Pnt5ogPCBnZXNoaXNlblwgOwor5LiN5Z2H562JIDwgZnVraW50b3VcIDsKK+Wuh+WumeW4vSA8IHVjaHV1Ym91XCA7CivnhKHpoLzmvKIgPCBidXJhaWthblwgOwor5bGI5b6TIDwga3V0c3VqdXVcIDsKK+Wun+ePviA8IGppdHN1Z2VuXCA7Civmv4PluqboqIggPCBub3Vkb2tlaVwgOwor54++6IG3IDwgZ2Vuc2hva3VcIDsKK+ixgemBlCA8IGthdHRhdHN1XCA7Civkv6Hlv7UgPCBzaGluJyduZW5cIDsKK+mhjumqqCA8IGdha2tvdHN1XCA7CivkuIDmmKjlubQgPCBvdG90b3NoaVwgOwor5pyq57WM6aiTIDwgbWlrZWlrZW5cIDsKK+S4iemjnyA8IHNhbnNob2t1XCA7CivmnJ3lr53lnYogPCBhc2FuZWJvdVwgOwor5LqG6KaaIDwgcnlvdWtha3VcIDsKK+e+pOmbsiA8IG11cmFrdW1vXCA7CivmnIjph5EgPCBnZXRzdWtpblwgOwor6LWk5rKIIDwgc2VraWNoaW5cIDsKK+S4i+mhjiA8IHNoaXRhYWdvXCA7CivlsbHlp6sgPCB5YW1haGltZVwgOwor6ISC5rGXIDwgYWJ1cmFhc2VcIDsKK+iFsOW8gSA8IGtvc2hpYmVuXCA7Civlrp3njokgPCBob3VneW9rdVwgOwor6YGO5aSn6KaWIDwga2FkYWlzaGlcIDsKK+WwkeaVtSA8IHNob3V0ZWtpXCA7Civnv6Hnv6DoibIgPCBoaXN1aWlyb1wgOwor6amN5bCGIDwgZ3lvdXNob3VcIDsKK+S4mOmZtSA8IGt5dXVyeW91XCA7CivnlaXlkI0gPCByeWFrdW1laVwgOwor5Zyf5qC55oCnIDwgZG9rb25qb3VcIDsKK+eVpeWPtyA8IHJ5YWt1Z291XCA7CivnlaXlj7IgPCByeWFrdXNoaVwgOwor55Wq5Y2SIDwgYmFuc290c3VcIDsKK+e3j+aooeanmCA8IHNvdW1veW91XCA7CivnlaXlj5YgPCByeWFrdXNodVwgOwor6KiI566X5qmfIDwga2Vpc2Fua2lcIDsKK+W8geW9k+WxiyA8IGJlbnRvdXlhXCA7Civku6PmiZPogIUgPCBkYWlkYXNoYVwgOwor5a6f54q2IDwgaml0c3Vqb3VcIDsKK+WAn+WcsCA8IHNoYWt1Y2hpXCA7CivkvbXmrrogPCBoZWlzYXRzdVwgOwor6IWw5bivIDwga29zaGlvYmlcIDsKK+S4iumdtCA8IHV3YWd1dHN1XCA7Civohpzlo4EgPCBtYWt1aGVraVwgOwor6aKo5aqS6IqxIDwgZnV1YmFpa2FcIDsKK+iEseaWhyA8IGRhdHN1YnVuXCA7CivlrZjnq4sgPCBzb25yaXRzdVwgOwor54Sh6Kmm6aiTIDwgbXVzaGlrZW5cIDsKK+WuneeJqSA8IGhvdW1vdHN1XCA7CivphrjpgKDphaIgPCBqb3V6b3VzdVwgOwor5L+X5b2iIDwgem9rdWd5b3VcIDsKK+WPjeWLlea0viA8IGhhbmRvdWhhXCA7CivntYzmuIjlrrYgPCBrZWl6YWlrYVwgOwor5reL5be06IW6IDwgcmlucGFzZW5cIDsKK+S6uuiGmiA8IGhpdG9oYWRhXCA7CivpoqjotrMgPCBrYXphYXNoaVwgOwor5Lm+6KOCIDwga2FucmV0c3VcIDsKK+ahjuaijyA8IHNoaWtrb2t1XCA7CivkuIDpoIMgPCBoaXRva29yb1wgOwor6Ieq5Li75oCnIDwgamlzaHVzZWlcIDsKK+e/jOmAsSA8IHlva3VzaHV1XCA7CivotorlpKnmpb0gPCBldGVucmFrdVwgOwor5qip5Yip6YeRIDwga2VucmlraW5cIDsKK+WvvuaXpSA8IHRhaW5pY2hpXCA7CivmnqDntYQgPCB3YWt1Z3VtaVwgOwor5oWi5oCn5YyWIDwgbWFuc2Vpa2FcIDsKK+e/u+iosyA8IGhvbicneWFrdVwgOwor5Lq66ISIIDwgamlubXlha3VcIDsKK+aOiOS5s+acnyA8IGp1bnl1dWtpXCA7CivlsILploDoqp4gPCBzZW5tb25nb1wgOwor5bGx5Z+OIDwgeWFtYWppcm9cIDsKK+WJjeiInuWPsCA8IG1hZWJ1dGFpXCA7CivlpKnniL7kuY7ms6IgPCB0ZW5pd29oYVwgOwor6ISa5pysIDwga3lha3Vob25cIDsKK+mBuOenkeeUnyA8IHNlbmthc2VpXCA7CivmnbHoip0gPCB0b3VzaGliYVwgOwor6LWk5qirIDwgYWthZ2FzaGlcIDsKK+iEiuakjiA8IHNla2l0c3VpXCA7Civlrp/pmpvlrrYgPCBqaXNzYWlrYVwgOwor5p+054qsIDwgc2hpYmFpbnVcIDsKK+S/ruWtpiA8IHNodXVnYWt1XCA7Civkv4rlvrMgPCBzaHVudG9rdVwgOwor5LiA5pi85aScIDwgaXRjaHV1eWFcIDsKK+aciOi8qiA8IGdldHN1cmluXCA7Civku7Lnp4sgPCBjaHV1c2h1dVwgOwor5Li76L+wIDwgc2h1anV0c3VcIDsKK+ihhuitsOmZoiA8IHNodXVnaWluXCA7CivkurrogokgPCBqaW4nJ25pa3VcIDsKK+WqkumFjCA8IGJhaXNoYWt1XCA7Civml6XmnKzoo70gPCBuaWhvbnNlaVwgOwor5L6L5pyIIDwgcmVpZ2V0c3VcIDsKK+eUn+WomCA8IGtpbXVzdW1lXCA7CivljbDliKTluKsgPCBpbmJhbnNoaVwgOwor5Luj562GIDwgZGFpaGl0c3VcIDsKK+WvhuauuiA8IG1pc3NhdHN1XCA7CivmmrTpo58gPCBib3VzaG9rdVwgOwor5bGx5Zu9IDwgeWFtYWd1bmlcIDsKK+iBt+eoriA8IHNob2t1c2h1XCA7CivkuIDpmpsgPCBoaXRva2l3YVwgOwor5bCP54Gr5ZmoIDwgc2hvdWtha2lcIDsKK+eEoemiqOW4ryA8IG11ZnV1dGFpXCA7CivkuIDpmoUgPCBoaXRvc3VtaVwgOwor5bCx5bqKIDwgc2h1dXNob3VcIDsKK+S4iOmVtyA8IHRha2VuYWdhXCA7CivpoK3pq6ogPCB0b3VoYXRzdVwgOwor54yl6ZuRIDwgd2FpemF0c3VcIDsKK+i2s+W9oiA8IGFzaGlnYXRhXCA7CivotbDmn7vnt5ogPCBzb3VzYXNlblwgOwor5a6J54mpIDwgeWFzdW1vbm9cIDsKK+epuuaJi+WutiA8IGthcmF0ZWthXCA7CivlpKnkupXlgKQgPCB0ZW5qb3VuZVwgOwor5a+S5qW1IDwga2Fua3lva3VcIDsKK+i2s+W8sSA8IGFzaGl5b3dhXCA7CivoqIjnrpfmnKggPCBrZWlzYW5naVwgOwor5YCZ5ZOJIDwgc291cm91eWFcIDsKK+S+i+aXpSA8IHJlaWppdHN1XCA7CivkuK3pgJ8gPCBjaHV1c29rdVwgOwor5o6h54Kt5omAIDwgc2FpdGFuam9cIDsKK+W8geWLmeWumCA8IGJlbm11a2FuXCA7Civlj5fnm4rmqKkgPCBqdWVraWtlblwgOwor55Sf5aOBIDwgbmFtYWthYmVcIDsKK+WKoOW3pee0mSA8IGtha291c2hpXCA7CivogonnmoQgPCBuaWt1dGVraVwgOwor6IO45qSOIDwga3lvdXRzdWlcIDsKK+aVmeWLmeiqsiA8IGt5b3VtdWthXCA7CivmoYLmnIggPCBrZWlnZXRzdVwgOwor5a6k5ripIDwgc2hpdHN1b25cIDsKK+mAo+WLleapnyA8IHJlbmRvdWtpXCA7Civku5nnqp8gPCBzZW5rdXRzdVwgOwor5a+n5pelIDwgbmVpaml0c3VcIDsKK+itsOS6i+mMsiA8IGdpamlyb2t1XCA7Civlho3mnaXlubQgPCBzYXJhaW5lblwgOwor5LiA5pio5aScIDwgaXNzYWt1eWFcIDsKK+eVquS7mCA8IGJhbmR6dWtlXCA7CivlroflrpnlobUgPCB1Y2h1dWppblwgOwor5rC06YGT5bGLIDwgc3VpZG91eWFcIDsKK+i1pOadviA8IGFrYW1hdHN1XCA7CivnlaXkvZMgPCByeWFrdXRhaVwgOwor5qKF5bmyIDwgdW1lYm9zaGlcIDsKK+iFueWjgSA8IGZ1a3VoZWtpXCA7CivkuK3ou7ggPCBjaHV1amlrdVwgOwor55Wl5LydIDwgcnlha3VkZW5cIDsKK+iFuOWjgSA8IGNob3VoZWtpXCA7CivosaHomasgPCB6b3VtdXNoaVwgOwor5p6X56uLIDwgcmlucml0c3VcIDsKK+mHjei7jOadoSA8IGp1dWtpam91XCA7Civos6rnlpEgPCBzaGl0c3VnaVwgOwor5bGx5ZC5IDwgeWFtYWJ1a2lcIDsKK+i4j+WIhyA8IGZ1bWlraXJpXCA7CivpgZXntITph5EgPCBpeWFrdWtpblwgOwor5p2P6Iy4IDwgYW56dXRha2VcIDsKK+eUn+WbvSA8IHNob3Vrb2t1XCA7CivpuJrptaHnl4UgPCBvdW11YnlvdVwgOwor5p2f6ISpIDwgc29rdXNodXVcIDsKK+WNmOaAp+iKsSA8IHRhbnNlaWthXCA7Civlrr/mpa0gPCBzaHVrdWdvdVwgOwor5rOo5oSP54K5IDwgY2h1dWl0ZW5cIDsKK+W4uOWCmemHkSA8IGpvdWJpa2luXCA7CivnlLPlkYogPCBzaGlua29rdVwgOwor5a+S5pyIIDwga2FuZ2V0c3VcIDsKK+acieitmCA8IHl1dXNoaWtpXCA7Civou6Lnp7vmgKcgPCB0ZW4nJ2lzZWlcIDsKK+mkhee2siA8IG1vY2hpYW1pXCA7CivkvZXmp5ggPCBuYW5pc2FtYVwgOwor57+B6LKdIDwgb2tpbmFnYWlcIDsKK+a0u+eBq+WxsSA8IGtha2themFuXCA7Civlr4zmnK0gPCB0b21pZnVkYVwgOwor5bGA5aSWIDwga3lva3VnYWlcIDsKK+mjn+iGsyA8IHNob2t1emVuXCA7CivmnYnoi5QgPCBzdWdpZ29rZVwgOwor5a+G5p6XIDwgbWl0c3VyaW5cIDsKK+WAieWNkiA8IHNvdXNvdHN1XCA7CivlrqLmrr8gPCBreWFrdWRlblwgOwor5Lim6LazIDwgbmFtaWFzaGlcIDsKK+WKoOW3peeojiA8IGtha291emVpXCA7CivnlZHkvZwgPCBoYXRhc2FrdVwgOwor55Om5bGLIDwga2F3YXJheWFcIDsKK+WuouatuyA8IGt5YWt1c2hpXCA7CivnlLfliY0gPCBvdG9rb21hZVwgOwor5bGA5aCxIDwga3lva3Vob3VcIDsKK+mhsOi5mSA8IGhpbnNodWt1XCA7Civnvo7nsqfpmaIgPCBiaXNob3VpblwgOwor5a6u5qeYIDwgbWl5YXNhbWFcIDsKK+S9nOafhCA8IHNha3VnYXJhXCA7CivnjK7phYwgPCBrZW5zaGFrdVwgOwor6Iy2566q56ylIDwgY2hhZGFuc3VcIDsKK+mjn+iCsiA8IHNob2t1aWt1XCA7CivlmbTngavlsbEgPCBmdW5rYXphblwgOwor5Zyw5pa55pmCIDwgY2hpaG91amlcIDsKK+S4oei2syA8IHJ5b3Vzb2t1XCA7CivmgqrppJPprLwgPCB3YXJ1Z2FraVwgOwor5Y2a5oSb5a62IDwgaGFrdWFpa2FcIDsKK+S6jOiCoSA8IGZ1dGFtYXRhXCA7CivkuIrpgZQgPCBqb3V0YXRzdVwgOwor5oOF5aCx6YOoIDwgam91aG91YnVcIDsKK+iGneWFgyA8IGhpemFtb3RvXCA7Civlrr/mnJsgPCBzaHVrdWJvdVwgOwor5pel5pys6Iy2IDwgbmlob25jaGFcIDsKK+iEseW4vSA8IGRhdHN1Ym91XCA7CivnlLPlh7ogPCBtb3VzaGlkZVwgOwor5p+E54mpIDwgZ2FyYW1vbm9cIDsKK+S4iui/sCA8IGpvdWp1dHN1XCA7CivkvZzmm7IgPCBzYWtreW9rdVwgOwor6ICz57OeIDwgbWltaWt1c29cIDsKK+iAgeiLpSA8IHJvdW55YWt1XCA7CivlhYnooYzlt64gPCBrb3Vrb3VzYVwgOwor5aSW6ICz6YGTIDwgZ2Fpamlkb3VcIDsKK+iCieeJmyA8IG5pa3VneXV1XCA7CivlsbHlhYMgPCB5YW1hbW90b1wgOwor5Zyw6ZyH5rOiIDwgamlzaGluaGFcIDsKK+S4ieWhgeaJkyA8IHNhbnJ1aWRhXCA7CivmnZ/nuJsgPCBzb2t1YmFrdVwgOwor5Yu+5byV54q2IDwga291aW5qb3VcIDsKK+WcsOmbt+a6kCA8IGppcmFpZ2VuXCA7Civpm7vmqZ/lrZAgPCBkZW5raXNoaVwgOwor5pyr6JGJIDwgbWF0c3V5b3VcIDsKK+W4uOWCmei7jSA8IGpvdWJpZ3VuXCA7CivkvZXmnIggPCBuYW5nYXRzdVwgOwor6LGa6I2JIDwgYnV0YWt1c2FcIDsKK+WwkeWwkSA8IHNob3VzaG91XCA7CivlsI/lnovljJYgPCBrb2dhdGFrYVwgOwor5Yi35q+b5YWIIDwgaGFrZXNha2lcIDsKK+aal+mXhyA8IGt1cmF5YW1pXCA7CivnjonokbEgPCB0YW1hbmVnaVwgOwor6Z2S5YaF6ZqcIDwgYW9zb2tvaGlcIDsKK+ipleitsOWToSA8IGh5b3VnaWluXCA7CivkubPoh60gPCBueXV1c2h1dVwgOwor55SY5Y+jIDwgYW1ha3VjaGlcIDsKK+WFrOWIhuavjSA8IGtvdWJ1bmJvXCA7CivmnKjoj58gPCBtaW1penVrdVwgOwor5Y+v6IG05bqmIDwga2FjaG91ZG9cIDsKK+eEoeadoeS7tiA8IG11am91a2VuXCA7Civnn6Lpo5vnmb0gPCB5YWdhc3VyaVwgOwor5omL6IWV5a62IDwgc2h1d2Fua2FcIDsKK+eUo+WIpSA8IHNhbmJldHN1XCA7CivmpJzkuovmraMgPCBrZW5qaXNlaVwgOwor5L6/5aO6IDwgYmVudHN1Ym9cIDsKK+S4gOi8myA8IGljaGlyeW91XCA7Civos5zniakgPCB0YW1hbW9ub1wgOwor5YG95ZaE6ICFIDwgZ2l6ZW5zaGFcIDsKK+S8neWwjuW6piA8IGRlbmRvdWRvXCA7Civlhazli5/lgrUgPCBrb3Vib3NhaVwgOwor6aaW5p63IDwga3ViaWthc2VcIDsKK+WtkOeItSA8IHNoaXNoYWt1XCA7CivkvovlvI8gPCByZWlzaGlraVwgOwor54++55SfIDwgZ2VuJyduYW1hXCA7CivmnKjoi7ogPCBraWljaGlnb1wgOwor5qmf6Zai6YqDIDwga2lrYW5qdXVcIDsKK+eKrOm3siA8IGludXdhc2hpXCA7CivmnKzoibIgPCBob25zaG9rdVwgOwor5Lmx6ISIIDwgcmFubXlha3VcIDsKK+WvhuaOpSA8IG1pc3NldHN1XCA7CivkuIDouo0gPCBpY2hpeWFrdVwgOwor5bGx5Lq6IDwgeWFtYWJpdG9cIDsKK+iEh+aBryA8IGt5b3Vzb2t1XCA7Civnvr3ooaMgPCBoYWdvcm9tb1wgOwor5pyN6JasIDwgZnVrdXlha3VcIDsKK+atpuWLh+S8nSA8IGJ1eXV1ZGVuXCA7CivmorXliLkgPCBib25zZXRzdVwgOwor5LyP5rWBIDwgZnVrdXJ5dXVcIDsKK+WItuW+oeS4iyA8IHNlaWd5b2thXCA7Civlr77lsYAgPCB0YWlreW9rdVwgOwor6JOu6I+v6I2JIDwgcmVuZ2Vzb3VcIDsKK+WgseefpeapnyA8IGhvdWNoaWtpXCA7CivnjKvotrMgPCBuZWtvYXNoaVwgOwor5bCP5aiYIDwga29tdXN1bWVcIDsKK+S7o+eJqSA8IGRhaWJ1dHN1XCA7Civlp6vpsZIgPCBoaW1lbWFzdVwgOwor5pys6IWwIDwgaG9uZ29zaGlcIDsKK+iFueWIhyA8IGhhcmFraXJpXCA7Civmmanpo68gPCBiYW5tZXNoaVwgOwor57+857+8IDwgeW9rdXlva3VcIDsKK+eUn+WCtyA8IG5hbWFraXp1XCA7CivosZrogokgPCBidXRhbmlrdVwgOwor5aSP6Iez54K5IDwgZ2VzaGl0ZW5cIDsKK+mgremHkSA8IGF0YW1ha2luXCA7CivmraboirjogIUgPCBidWdlaXNoYVwgOwor576O6LOqIDwgYmlzaGl0c3VcIDsKK+i1sOmmrOeBryA8IHNvdW1hdG91XCA7CivlsYrlh7ogPCB0b2Rva2VkZVwgOwor6LWk5b+DIDwgc2VraXNoaW5cIDsKK+eKtumqqCA8IGpvdWtvdHN1XCA7Civnv6DoibIgPCBzdWlzaG9rdVwgOwor5Lih6KKWIDwgcnlvdXNvZGVcIDsKK+S4uOiWrCA8IGdhbicneWFrdVwgOwor5a6/5omAIDwgc2h1a3VzaG9cIDsKK+aenOeJqSA8IGt1ZGFtb25vXCA7Civkuozph43nqI4gPCBuaWp1dXplaVwgOwor54++54mpIDwgZ2VuYnV0c3VcIDsKK+S4i+iriyA8IHNoaXRhdWtlXCA7CivmnKjogLMgPCBraWt1cmFnZVwgOwor5bC95YqbIDwgamlucnlva3VcIDsKK+ato+avlOS+iyA8IHNlaWhpcmVpXCA7CivpoJDph5HogIUgPCB5b2tpbnNoYVwgOwor5Lq655WcIDwgamluY2hpa3VcIDsKK+WKoOmAn+W6piA8IGthc29rdWRvXCA7CivmraPlvZPljJYgPCBzZWl0b3VrYVwgOwor5omL5LiN6LazIDwgdGVidXNva3VcIDsKK+WBtOeBq+WxsSA8IHNva2themFuXCA7CivpgY7kuI3lj4ogPCBrYWZ1a3l1dVwgOwor5q666byg5YmkIDwgc2Fzc296YWlcIDsKK+iomOW/teelrSA8IGtpbmVuc2FpXCA7Civkv4Llk6EgPCBrYWthcmlpblwgOwor5LiN5omL6ZqbIDwgZnV0ZWdpd2FcIDsKK+S4jeetiei+uiA8IGZ1dG91aGVuXCA7CivooqvlrrPlnLAgPCBoaWdhaWNoaVwgOwor5pel5pys57SZIDwgbmlob25zaGlcIDsKK+S4gOirviA8IGljaGlkYWt1XCA7CivmvZzmsLTlpKsgPCBzZW5zdWlmdVwgOwor5b6h6ZmA5LuPIDwgb2RhYnV0c3VcIDsKK+WtpuattCA8IGdha3VyZWtpXCA7Civlrr/mgqogPCBzaHVrdWFrdVwgOwor6IO45bqnIDwgbXVuYWd1cmFcIDsKK+S4gOiqrSA8IGljaGlkb2t1XCA7Civlr6Xlr6UgPCByeW91cnlvdVwgOwor5p2l552AIDwgcmFpY2hha3VcIDsKK+S8kealrSA8IGt5dXVneW91XCA7CivlpJzlrabmoKEgPCB5YWdha2tvdVwgOwor5YaN5LiK5pigIDwgc2Fpam91ZWlcIDsKK+S/ruS6hiA8IHNodXVyeW91XCA7Civog7jluYUgPCBtdW5laGFiYVwgOwor5aSW5p2l6KqeIDwgZ2FpcmFpZ29cIDsKK+mbo+egtOiIuSA8IG5hbnBhc2VuXCA7CivkuIDoqIAgPCBoaXRva290b1wgOwor5a6/5b+XIDwgc2h1a3VzaGlcIDsKK+mnkuS4i+mnhCA8IGtvbWFnZXRhXCA7CivohZXlipsgPCB3YW5yeW9rdVwgOwor6IW55LitIDwgZnVrdWNodXVcIDsKK+S4gOinkiA8IGhpdG9rYWRvXCA7CivogonmrLIgPCBuaWt1eW9rdVwgOwor5rOo5oSP5pu4IDwgY2h1dWlzaG9cIDsKK+ePoOeOiSA8IHNodWd5b2t1XCA7Civku4DniakgPCBqdXVtb3RzdVwgOwor5LqU6YeN5aWPIDwgZ29qdXVzb3VcIDsKK+iCqeabuCA8IGthdGFnYWtpXCA7CivmvKvoq4flrrYgPCBtYW5kYW5rYVwgOwor5YCN57K+5bqmIDwgYmFpc2VpZG9cIDsKK+e0jeS7mOiAhSA8IG5vdWZ1c2hhXCA7Civlrr/lvIogPCBzaHVrdWhlaVwgOwor5Zm054Gr5Y+jIDwgZnVua2Frb3VcIDsKK+S7i+itt+S6uiA8IGthaWdvbmluXCA7CivkubHnrYYgPCByYW5waXRzdVwgOwor5Lq654mpIDwgamluYnV0c3VcIDsKK+S/l+S/oSA8IHpva3VzaGluXCA7CivnjK7ooYAgPCBrZW5rZXRzdVwgOwor5qC85a6JIDwga2FrdXlhc3VcIDsKK+S4oeiTiyA8IHJ5b3VidXRhXCA7Civlrabmpa0gPCBnYWt1Z3lvdVwgOwor5Lq654i1IDwgamluc2hha3VcIDsKK+eMpeikuyA8IHdhaXNldHN1XCA7CivpgZPorbDkvJogPCBkb3VnaWthaVwgOwor5pyJ5qmf5L2TIDwgeXV1a2l0YWlcIDsKK+ixmueusSA8IGJ1dGFiYWtvXCA7Civku67mrr8gPCBrYXJpZG9ub1wgOwor6aOb55+zIDwgdG9iaWlzaGlcIDsKK+S5seeriyA8IHJhbnJpdHN1XCA7CivmrbvnlKPlhZAgPCBzaGl6YW5qaVwgOwor5a6/5bizIDwgeWFkb2Nob3VcIDsKK+WvkuWvkiA8IHNhbXV6YW11XCA7CivmnLHnrYYgPCBzaHVoaXRzdVwgOwor5LiN6KaP5YmHIDwgZnVraXNva3VcIDsKK+S4u+iEiCA8IHNodW15YWt1XCA7CivmvZzmsLTlmaggPCBzZW5zdWlraVwgOwor5LuY5re7IDwgdHN1a2lzb2lcIDsKK+acrOevgCA8IGhvbmJ1c2hpXCA7Civmm7LoirggPCBreW9rdWdlaVwgOwor5pyr56+AIDwgbWFzc2V0c3VcIDsKK+i2s+WFgyA8IGFzaGltb3RvXCA7CivosqHniakgPCB6YWlidXRzdVwgOwor5bCP5ZCNIDwgc2hvdW15b3VcIDsKK+aVtOWCmeW3pSA8IHNlaWJpa291XCA7CivkuZfntYQgPCBub3Jpa3VtaVwgOwor5a+d5ae/IDwgbmVzdWdhdGFcIDsKK+abs+iIuSA8IGhpa2lidW5lXCA7CivmnKvnrYYgPCBtYXBwaXRzdVwgOwor6I2S5q2m6ICFIDwgYXJhbXVzaGFcIDsKK+mBoOWcsOeCuSA8IGVuY2hpdGVuXCA7CivmmLzpoIMgPCBoaXJ1Z29yb1wgOwor54us6LqrIDwgZG9rdXNoaW5cIDsKK+eQtOabsiA8IGtpbmt5b2t1XCA7CivkuqzniakgPCBreW91bW9ub1wgOwor5p+Q5pyIIDwgYm91Z2V0c3VcIDsKK+WkluWtl+e0mSA8IGdhaWppc2hpXCA7Civku4rmmYLliIYgPCBpbWFqaWJ1blwgOwor6LGG57KVIDwgbWFtZWthc3VcIDsKK+S4reiFuSA8IGNodXVmdWt1XCA7Civlj43li5XlrrYgPCBoYW5kb3VrYVwgOwor6aCG6YCGIDwganVuZ3lha3VcIDsKK+Wkp+aZpuaXpSA8IG9vbWlzb2thXCA7CivmnYnnmq4gPCBzdWdpa2F3YVwgOwor5bCG5Y+IIDwgaGF0YW1hdGFcIDsKK+S4jeeyvuW3pyA8IGZ1c2Vpa291XCA7CivlpKfkuIjlpKsgPCBkYWlqb3VidVwgOwor6ISx5Y20IDwgZGFra3lha3VcIDsKK+WvguWvniA8IHNla2liYWt1XCA7Civpo5/nlKggPCBzaG9rdXlvdVwgOwor5p+Q5pelIDwgYm91aml0c3VcIDsKK+S/neWFqOS8miA8IGhvemVua2FpXCA7CivlkIzntKDkvZMgPCBkb3Vzb3RhaVwgOwor5pmp6YWMIDwgYmFuc2hha3VcIDsKK+S4reiCiSA8IGNodXVuaWt1XCA7Civkvp3mgJnotJTlsZMgPCBla29oaWlraVwgOwor6LKe54OIIDwgdGVpcmV0c3VcIDsKK+WGjeS6pOS7mCA8IHNhaWtvdWZ1XCA7Civpo7LniakgPCBub21pbW9ub1wgOwor5Lih6IaaIDwgcnlvdWhhZGFcIDsKK+Wun+W8viA8IGppdHN1ZGFuXCA7CivkuIvokKAgPCBzaGl0YW1vZVwgOwor5aSp5pel5rOVIDwgdGVucGlob3VcIDsKK+absuiAhSA8IGt1c2Vtb25vXCA7CivlrojorbfnpZ4gPCBzaHVnb2ppblwgOwor5qGD5ZySIDwgbW9tb3pvbm9cIDsKK+e1hOWQiOiyuyA8IGt1bWlhaWhpXCA7Civpppblt7sgPCBrdWJpbWFraVwgOwor5LuP5rCXIDwgaG90b2tlZ2lcIDsKK+aYpemiqCA8IGhhcnVrYXplXCA7CivojZLolarlnLAgPCBrb3VidWNoaVwgOwor5Lim6IKJIDwgbmFtaW5pa3VcIDsKK+aEm+Wqm+ecjCA8IGVoaW1la2VuXCA7CivmnKrpnZLlubQgPCBtaXNlaW5lblwgOwor5a6i5bm0IDwga3lha3VuZW5cIDsKK+i2iuWNlyA8IGJldG9uYW11XCA7CivkuKHohIcgPCByeW91d2FraVwgOwor6aKo56qTIDwga2F6YW1hZG9cIDsKK+S6uuS6i+ashCA8IGppbmppcmFuXCA7CivpoqjnqbQgPCBmdXVrZXRzdVwgOwor5LuP5q6/IDwgYnV0c3VkZW5cIDsKK+iDuOWjgSA8IGt5b3VoZWtpXCA7Civplbfpn7PnrKYgPCBjaG91b25wdVwgOwor5a6a5byPIDwgdGVpc2hpa2lcIDsKK+S4jeWdh+aWiSA8IGZ1a2luc2VpXCA7CivkuKHogpggPCByeW91aGlqaVwgOwor5rqW5YKZ6YeRIDwganVuYmlraW5cIDsKK+WroeeUtyA8IGNoYWt1bmFuXCA7CivkubPnmb0gPCBueXV1aGFrdVwgOwor5reL5be05rayIDwgcmlucGFla2lcIDsKK+S6i+WLmemVtyA8IGppbXVjaG91XCA7Civkv67nkIblsYsgPCBzaHV1cml5YVwgOwor5L2O5a+GIDwgdGVpbWl0c3VcIDsKK+S4oeiAsyA8IHJ5b3VtaW1pXCA7Civmh5DnlpHoq5YgPCBrYWlnaXJvblwgOwor5ZaJ6aCt54KOIDwga291dG91ZW5cIDsKK+aatOiZkCA8IGJvdWd5YWt1XCA7CivogpjmjpsgPCBoaWppa2FrZVwgOwor55aO5aSW5oSfIDwgc29nYWlrYW5cIDsKK+S4oee/vCA8IHJ5b3V5b2t1XCA7Civlr4blo7IgPCBtaXRzdWJhaVwgOwor5pyo55+zIDwgYm9rdXNla2lcIDsKK+eOieeglSA8IGd5b2t1c2FpXCA7CivkuIPojYkgPCBuYW5ha3VzYVwgOwor5Yqg6YCf5ZmoIDwga2Fzb2t1a2lcIDsKK+WuruWuiCA8IG1peWFtb3JpXCA7Civnjonnn7MgPCB0YW1haXNoaVwgOwor5bqt5LiL6aeEIDwgbml3YWdldGFcIDsKK+S7suaYpSA8IGNodXVzaHVuXCA7CivmoZHljp8gPCBrdXdhYmFyYVwgOwor6K2Y6Za+IDwgc2hpa2lpa2lcIDsKK+S6uuazoiA8IGhpdG9uYW1pXCA7CivmmKXpm6ggPCBoYXJ1c2FtZVwgOwor57+z55uuIDwga2FzdW1pbWVcIDsKK+eMv+iCoSA8IHNhcnVtYXRhXCA7CivkvJHmiJogPCBreXV1c2VraVwgOwor6Z2e5bi45YukIDwgaGlqb3VraW5cIDsKK+mHjueQg+mDqCA8IHlha3l1dWJ1XCA7CivlrqLlsaQgPCBreWFrdXNvdVwgOwor5YmN6aeG5oimIDwgemVua3VzZW5cIDsKK+aYpemZvSA8IHNodW4nJ3lvdVwgOwor6LKe5reRIDwgdGVpc2h1a3VcIDsKK+WuiOW9uSA8IG1vcml5YWt1XCA7CivkuLvnr4AgPCBzaHVzZXRzdVwgOwor5oyH5bCO6YOoIDwgc2hpZG91YnVcIDsKK+iyoeeUo+WutiA8IHphaXNhbmthXCA7CivkuIDoirEgPCBoaXRvaGFuYVwgOwor6aGU6ImyIDwgZ2Fuc2hva3VcIDsKK+S4ree0sCA8IGNodXVib3NvXCA7CivkuK3ntJogPCBjaHV1a3l1dVwgOwor5bGF5YKs5L+DIDwgaXphaXNva3VcIDsKK+eOh+ebtCA8IHNvdGNob2t1XCA7CivnjKvoiIwgPCBuZWtvaml0YVwgOwor5LiJ6ISaIDwgc2Fua3lha3VcIDsKK+aZuuitmCA8IGNoaXNoaWtpXCA7CivlvZPmrbPppqwgPCB0b3VzYWliYVwgOwor5LiL6IKlIDwgc2hpbW9nb2VcIDsKK+Wun+WusyA8IGppdHN1Z2FpXCA7CivlsI/kuIAgPCBzaG91aWNoaVwgOwor6LKq5qyyIDwgZG9uJyd5b2t1XCA7Civku4HnjovlipsgPCBuaW91cmlraVwgOwor5Lq65qyyIDwgamluJyd5b2t1XCA7CivlpJrogonmnpwgPCB0YW5pa3VrYVwgOwor5pyA55ub5pyfIDwgc2Fpc2Vpa2lcIDsKK+Wun+WtmCA8IGppdHN1em9uXCA7Civlj43mr5TkvosgPCBoYW5waXJlaVwgOwor6aCY6KKWIDwgcnlvdXNodXVcIDsKK+aXsemtgyA8IGthbmJhdHN1XCA7Civnibnpm4YgPCB0b2t1c2h1dVwgOwor5pyr55S3IDwgYmF0c3VuYW5cIDsKK+mfs+izqiA8IG9uc2hpdHN1XCA7Civlr7jlgJ8gPCBzdW5zaGFrdVwgOwor5aWz5a2Q6auYIDwgam9zaGlrb3VcIDsKK+mWi+Wbnui3ryA8IGthaWthaXJvXCA7CivotoXkv5cgPCBjaG91em9rdVwgOwor5puy566hIDwga3lva3VrYW5cIDsKK+Wvqeafu+WToSA8IHNoaW5zYWluXCA7CivohIjli5UgPCBteWFrdWRvdVwgOwor6IKp5bmFIDwga2F0YWhhYmFcIDsKK+S6i+WLmeapn+WZqCA8IGppbXVraWtpXCA7CivmoYjlh7ogPCBhbnNodXRzdVwgOwor6bqd6aaZ5rC0IDwgamFrb3VzdWlcIDsKK+aXpeacrOeKrCA8IG5paG9ua2VuXCA7Civkuovli5nph48gPCBqaW11cnlvdVwgOwor6IKh5byVIDwgbW9tb2hpa2lcIDsKK+S4uOemvyA8IG1hcnVoYWdlXCA7CivlvJXnlKjlj6UgPCBpbicneW91a3VcIDsKK+S+m+S6uiA8IHRvbW9iaXRvXCA7Civnp5HlrabpmaIgPCBrYWdha3VpblwgOwor5Lq65qeYIDwgaGl0b3NhbWFcIDsKK+S5s+eJmyA8IG55dXVneXV1XCA7CivlsILkuIAgPCBzZW4nJ2l0c3VcIDsKK+WJjemgremDqCA8IHplbnRvdWJ1XCA7CivljYHlm5vml6UgPCBqdXV5b2trYVwgOwor5p6V5pyoIDwgbWFrdXJhZ2lcIDsKK+iCoeW6pyA8IG1hdGFndXJhXCA7CivnibnplbcgPCB0b2t1Y2hvdVwgOwor54u46Je7IDwgdGFudWtpbW9cIDsKK+e8tuipsCA8IGthbmR6dW1lXCA7CivkuIDnv7wgPCBpY2hpeW9rdVwgOwor5a6f5aa5IDwgaml0c3VtYWlcIDsKK+S4reepuiA8IG5ha2F6b3JhXCA7Civpo7LmsLQgPCBub21pbWl6dVwgOwor5Lit56iLIDwgbmFrYWhvZG9cIDsKK+S7iuaciCA8IGtvbmdldHN1XCA7CivosrjmnKwgPCBrYXNoaWhvblwgOwor5Lim56uLIDwgaGVpcml0c3VcIDsKK+WuieWuvyA8IHlhc3V5YWRvXCA7Civoh6rlt7HmmpfnpLogPCBqaWtvYW5qaVwgOwor6IO95YqbIDwgbm91cnlva3VcIDsKK+mAo+atjOW4qyA8IHJlbmdhc2hpXCA7CivnianpmbAgPCBtb25va2FnZVwgOwor5a6J5a6JIDwgeWFzdXlhc3VcIDsKK+WtpuW+syA8IGdha3V0b2t1XCA7CivmlK/mj7TogIUgPCBzaGllbnNoYVwgOwor57+S55mWIDwgc2h1dWhla2lcIDsKK+aituacqOW6pyA8IGthamlraXphXCA7CivkuLjnn7MgPCBtYXJ1aXNoaVwgOwor5Zyw5pa55Yy6IDwgY2hpaG91a3VcIDsKK+S4h+e3kSA8IGJhbnJ5b2t1XCA7Civlrr/lkb0gPCBzaHVrdW1laVwgOwor5bGx54Gr5LqLIDwgeWFtYWthamlcIDsKK+aJjeacqua6gCA8IHNhaW1pbWFuXCA7Civku4/mlocgPCBmdXRzdWJ1blwgOwor54mb6Z2pIDwgZ3l1dWthd2FcIDsKK+iBluaXpSA8IHNlaWppdHN1XCA7Civkurrmn4QgPCBoaXRvZ2FyYVwgOwor5Lqr5qW9IDwga3lvdXJha3VcIDsKK+advuafjyA8IHNob3VoYWt1XCA7CivnvqTnq7kgPCBtdXJhdGFrZVwgOwor6K2m6LmVIDwga2VpaGl0c3VcIDsKK+S5s+a/gSA8IG55dXVkYWt1XCA7Civnv6DnjokgPCBzdWlneW9rdVwgOwor5Lq66aGe54y/IDwgamlucnVpZW5cIDsKK+aXpemjnyA8IG5pc3Nob2t1XCA7Civku4fmlbUgPCBreXV1dGVraVwgOwor6Z266Z6oIDwgbWFra2F0c3VcIDsKK+Wnv+imiyA8IHN1Z2F0YW1pXCA7CivorbDlrprmm7ggPCBnaXRlaXNob1wgOwor5a6f5ZyoIDwgaml0c3V6YWlcIDsKK+aciOeVqiA8IHRzdWtpYmFuXCA7CivnkrDkuIMgPCBrYW4nJ25hbmFcIDsKK+iDuOWFiCA8IG11bmFzYWtpXCA7Civog7jlhYMgPCBtdW5hbW90b1wgOwor5LiA57WEIDwgaGl0b2t1bWlcIDsKK+iMtuWdiuS4uyA8IGNoYWJvdXp1XCA7CivnjKvns54gPCBuZWtvYmFiYVwgOwor5Yqg55uf5bqXIDwga2FtZWl0ZW5cIDsKK+mdtOmfsyA8IGt1dHN1b3RvXCA7CivkuZfniakgPCBub3JpbW9ub1wgOwor6aKo54mpIDwgZnV1YnV0c3VcIDsKK+S9nOWKhyA8IHNha3VnZWtpXCA7CivmmpboibIgPCBkYW5zaG9rdVwgOwor5L2V5Y2SIDwgbmFuaXRvem9cIDsKK+e3qeS4i+WJpCA8IGthbmdlemFpXCA7CivnjofnhLYgPCBzb3RzdXplblwgOwor6JCM6buE6ImyIDwgbW9lZ2lpcm9cIDsKK+epuuawl+mKgyA8IGt1dWtpanV1XCA7CivkvJHlraYgPCBreXV1Z2FrdVwgOwor6bm55rC05rmWIDwga2Fuc3Vpa29cIDsKK+S4ieethiA8IHNhbnBpdHN1XCA7CivkvY/lj4sgPCBzdW1pdG9tb1wgOwor5rW36ICB6IWwIDwgZWJpZ29zaGlcIDsKK+advuaYjiA8IHRhaW1hdHN1XCA7Civku67lvbkgPCBrYXJpeWFrdVwgOwor55Sf6KiI6LK7IDwgc2Vpa2VpaGlcIDsKK+S4reeavyA8IGNodXV6YXJhXCA7CivkurrmlbAgPCBoaXRva2F6dVwgOwor5ama57SEIDwga29uJyd5YWt1XCA7CivkuIvnqbQgPCBzaGl0YWFuYVwgOwor5a6/5YWtIDwgeWFkb3Jva3VcIDsKK+WPguWKoOiAhSA8IHNhbmthc2hhXCA7Civml6XmnKzmtbcgPCBuaWhvbmthaVwgOwor6ICz5py2IDwgbWltaXRhYnVcIDsKK+abuOeVmSA8IGtha2l0b21lXCA7CivkuIDnrYsgPCBoaXRvc3VqaVwgOwor5a2m5a+uIDwgZ2FrdXJ5b3VcIDsKK+S4gOethiA8IGhpdG9mdWRlXCA7CivooqvkuZfmlbAgPCBoaWpvdXN1dVwgOwor54mH6ZqFIDwga2F0YXN1bWlcIDsKK+ixgeeEtiA8IGthdHN1emVuXCA7CivmiYvpoqjnkLQgPCB0ZWZ1dWtpblwgOwor54mH6ZmwIDwga2F0YWthZ2VcIDsKK+S6peaciCA8IGdhaWdldHN1XCA7Civms6jmhI/loLEgPCBjaHV1aWhvdVwgOwor6aKo5pmv55S7IDwgZnV1a2VpZ2FcIDsKK+izquWxiyA8IHNoaWNoaXlhXCA7CivnjKrnqoEgPCBjaG90b3RzdVwgOwor5Lqs5pa5IDwga3lvdWdhdGFcIDsKK+mbu+WtkOmfsyA8IGRlbnNoaW9uXCA7CivniZvpjYsgPCBneXV1bmFiZVwgOwor5a6f5ZCNIDwgaml0c3VtZWlcIDsKK+i7ouWMluezliA8IHRlbmthdG91XCA7CivmnaXmnIggPCByYWlnZXRzdVwgOwor6IO45LitIDwga3lvdWNodXVcIDsKK+S4gOeoriA8IGhpdG9rdXNhXCA7CivplonntYzmnJ8gPCBoZWlrZWlraVwgOwor5piO6YGUIDwgbWVpdGF0c3VcIDsKK+Wuv+S+vyA8IHNodWt1YmVuXCA7Civlr4bku6QgPCBtaXRzdXJlaVwgOwor5LiA56eSIDwgaWNoaWJ5b3VcIDsKK+S6kuWKqeeahCA8IGdvam90ZWtpXCA7Civkub7miYDluK8gPCBrYW5qb3RhaVwgOwor5aSn6Z+z5aOwIDwgZGFpb25qb3VcIDsKK+egtOeUo+iAhSA8IGhhc2Fuc2hhXCA7Civplonlm57ot68gPCBoZWlrYWlyb1wgOwor5Li754mpIDwgc2h1YnV0c3VcIDsKK+e+pOeZuiA8IGd1bnBhdHN1XCA7Civmm7LnkIMgPCBreW9ra3l1dVwgOwor5pep6ZCYIDwgaGF5YWdhbmVcIDsKK+iDoem6u+aTgiA8IGdvbWFzdXJpXCA7CivmqZ/pm7fljp8gPCBraXJhaWdlblwgOwor5LqM5qGBIDwgZnV0YWtldGFcIDsKK+adpeaXpSA8IHJhaW5pY2hpXCA7CivniKrpn7MgPCB0c3VtYW90b1wgOwor5pat6auqIDwgZGFucGF0c3VcIDsKK+absueOiSA8IG1hZ2F0YW1hXCA7CivlpJrlrZTmgKcgPCB0YWtvdXNlaVwgOwor5ZCI5oiQ6Z+zIDwgZ291c2Vpb25cIDsKK+egtOmtlOW8kyA8IGhhbWF5dW1pXCA7CivlrqLliIYgPCBreWFrdWJ1blwgOwor5L2V5L2VIDwgbmFuaW5hbmlcIDsKK+mAoOW9seWJpCA8IHpvdWVpemFpXCA7Civog4blipsgPCB0YW5yeW9rdVwgOwor5LqL5p+EIDwga290b2dhcmFcIDsKK+S7ruWuriA8IGthcmltaXlhXCA7Civmm7jniakgPCBzaG9tb3RzdVwgOwor54mb6YWqIDwgZ3l1dXJha3VcIDsKK+WApuaAoOacnyA8IGtlbnRhaWtpXCA7Civni6znv5IgPCBkb2t1c2h1dVwgOwor5Luu5a6FIDwga2FyaXRha3VcIDsKK+WtkOWunSA8IGtvZGFrYXJhXCA7Civpn67okbEgPCBuaXJhbmVnaVwgOwor5pyq57SN6ICFIDwgbWlub3VzaGFcIDsKK+S6jOmHjeaYnyA8IG5panV1c2VpXCA7CivkvZfkurogPCB3YWJpYml0b1wgOwor5LuP5byPIDwgYnVzc2hpa2lcIDsKK+S4ieebtCA8IHNhbmNob2t1XCA7CivkvZXkuosgPCBuYW5pZ290b1wgOwor6IKJ5aSqIDwgbmlrdWJ1dG9cIDsKK+e5geS9k+WtlyA8IGhhbnRhaWppXCA7CivkuInnmb4gPCBzYW5ieWFrdVwgOwor54m56LOeIDwgdG9rdXNob3VcIDsKK+a2iOmfs+WZqCA8IHNob3VvbmtpXCA7CivpoZTnnYAgPCBnYW5jaGFrdVwgOwor5aSa5Lq65pWwIDwgdGFuaW56dXVcIDsKK+i1tOS7u+WcsCA8IGZ1bmluY2hpXCA7Civlj6TnlJ/ku6MgPCBrb3NlaWRhaVwgOwor5Lmz5qWtIDwgbnl1dWd5b3VcIDsKK+aXpemKgCA8IG5pY2hpZ2luXCA7CivmnpXluK0gPCBjaGluc2VraVwgOwor6LOT5a6iIDwgaGlua3lha3VcIDsKK+iKneWxheawlyA8IHNoaWJhaWdlXCA7Civlrp/lg48gPCBqaXRzdXpvdVwgOwor5a6f5YONIDwgaml0c3Vkb3VcIDsKK+aoquW6p+aomSA8IG91emFoeW91XCA7Civoh6rorablm6MgPCBqaWtlaWRhblwgOwor5pqr5a6a5qGIIDwgemFudGVpYW5cIDsKK+mtmuW4guWgtCA8IHVvaWNoaWJhXCA7Civlrq7kurogPCBtaXlhYml0b1wgOwor5pen6YeMIDwgZnVydXNhdG9cIDsKK+S4gOeavyA8IGhpdG9zYXJhXCA7CivkuIDnmq4gPCBoaXRva2F3YVwgOwor5LqM5pa5IDwgZnV0YWthdGFcIDsKK+mnhemmrOi7iiA8IGVraWJhc2hhXCA7CivkuIrnlaUgPCBqb3VyeWFrdVwgOwor6LKr5b65IDwga2FudGV0c3VcIDsKK+WvvuipseS9kyA8IHRhaXdhdGFpXCA7CivmnqLlr4YgPCBzdXVtaXRzdVwgOwor5LiA55mWIDwgaGl0b2t1c2VcIDsKK+WuruS4rSA8IGt5dXVjaHV1XCA7CivosYbmrrsgPCBtYW1lZ2FyYVwgOwor54++5bC6IDwgZ2Vuc2hha3VcIDsKK+S6uuW9sSA8IGhpdG9rYWdlXCA7CivlrqLkvZMgPCBreWFrdXRhaVwgOwor5riF5o6D5aSrIDwgc2Vpc291ZnVcIDsKK+Wun+S+iyA8IGppdHN1cmVpXCA7Civpq5jmhJ/luqYgPCBrb3VrYW5kb1wgOwor5pyo5qeMIDwga2lkenVjaGlcIDsKK+e0gOWFg+WJjSA8IGtpZ2VuemVuXCA7Civno6jnoJTntJkgPCBtYWtlbnNoaVwgOwor54++5a6fIDwgZ2Vuaml0c3VcIDsKK+WuouS6uiA8IGt5YWt1amluXCA7Civml6LlqZrogIUgPCBraWtvbnNoYVwgOwor6Zy56Z2CIDwgaGVraXJla2lcIDsKK+aQrOmAgeazoiA8IGhhbnNvdWhhXCA7CivorbLokYkgPCB5dXp1cmloYVwgOwor55aO6ZaL6ICFIDwgc29rYWlzaGFcIDsKK+aAneaDs+WutiA8IHNoaXNvdWthXCA7CivosLfmsLQgPCB0YW5pbWl6dVwgOwor6LGq5pelIDwgZ291bmljaGlcIDsKK+acjeavkiA8IGZ1a3Vkb2t1XCA7CivlsqnnlLDluK8gPCBpd2F0YW9iaVwgOwor6IG35Z+fIDwgc2hva3Vpa2lcIDsKK+aatOeZuiA8IGJvdWhhdHN1XCA7CivplovplonmqZ8gPCBrYWloZWlraVwgOwor5bqP56C05oClIDwgam9oYWt5dXVcIDsKK+i2s+W/oOWunyA8IGFzaGltYW1lXCA7Civpo5/mjIcgPCBzaG9rdXNoaVwgOwor5Y2K5rib5pyfIDwgaGFuZ2Vua2lcIDsKK+aXpei8qiA8IG5pY2hpcmluXCA7Civoh6rnhLbnvo4gPCBzaGl6ZW5iaVwgOwor6IKp5YWIIDwga2F0YXNha2lcIDsKK+WklumwkCA8IHNvdG93YW5pXCA7CivpoLvnmbogPCBoaW5wYXRzdVwgOwor5YmN5LiW57SAIDwgemVuc2Vpa2lcIDsKK+acrOacqyA8IGhvbm1hdHN1XCA7CivnoJTno6jntJkgPCBrZW5tYXNoaVwgOwor5LiH54mpIDwgYmFubW90c3VcIDsKK+eOieadryA8IGd5b2t1aGFpXCA7CivnjK7niakgPCBrZW5tb3RzdVwgOwor5Lq65bGxIDwgaGl0b3lhbWFcIDsKK+mdkuWGmeecnyA8IGFvamFzaGluXCA7Civml6notrMgPCBoYXlhYXNoaVwgOwor56WI56W35pu4IDwga2l0b3VzaG9cIDsKK+mcp+mbqCA8IGtpcmlzYW1lXCA7CivluLDpgoTlhbUgPCBraWthbmhlaVwgOwor6ZaJ57WM5b6MIDwgaGVpa2VpZ29cIDsKK+izouWTsiA8IGtlbnRldHN1XCA7CivniYfotrMgPCBrYXRhYXNoaVwgOwor5LiA54mHIDwgaGl0b2hpcmFcIDsKK+WkmuaWuemdoiA8IHRhaG91bWVuXCA7Civnh5XlsL7mnI0gPCBlbmJpZnVrdVwgOwor56aA6K2w5pu4IDwgcmluZ2lzaG9cIDsKK+acrOaXpSA8IGhvbmppdHN1XCA7Civkub7mi60gPCBrYXJhYnVraVwgOwor54i25YWE5LyaIDwgZnVrZWlrYWlcIDsKK+mrmOm6l+alvSA8IGtvbWFnYWt1XCA7Civpo5/mhJ8gPCBzaG9rdWthblwgOwor5pW06auqIDwgc2VpaGF0c3VcIDsKK+S7j+WjhyA8IGJ1dHN1ZGFuXCA7Civkuojmg7PlpJYgPCB5b3NvdWdhaVwgOwor5omB5qGD5rK5IDwgaGVudG91eXVcIDsKK+WtpuWJsiA8IGdha3V3YXJpXCA7CivmlbTpqqggPCBzZWlrb3RzdVwgOwor6LSL5L2cIDwgbmlzZXNha3VcIDsKK+WtpuWJhyA8IGdha3Vzb2t1XCA7Civmm7LmsLQgPCBreW9rdXN1aVwgOwor6Z2S5bm05pyfIDwgc2VpbmVua2lcIDsKK+miqOaciCA8IGZ1dWdldHN1XCA7CivpnJzpm6ogPCBzb3VzZXRzdVwgOwor5Z2H562J5YyWIDwga2ludG91a2FcIDsKK+S5seaOmCA8IHJhbmt1dHN1XCA7Civlj5fpqJPogIUgPCBqdWtlbnNoYVwgOwor5pmC5Luj55u4IDwgamlkYWlzb3VcIDsKK+S5neaXpSA8IGtva29ub2thXCA7Civml6XosaogPCBuaWNoaWdvdVwgOwor5aKX5Yqg5YiGIDwgem91a2FidW5cIDsKK+S6jOmAo+mKgyA8IG5pcmVuanV1XCA7CivkuZ3ml48gPCBreXV1em9rdVwgOwor6Kqt6Z+/IDwgeW9taWt5b3VcIDsKK+eJm+inkiA8IGd5dXVrYWt1XCA7CivlpKfpm6ogPCB0YWlzZXRzdVwgOwor5aSW6aOfIDwgZ2Fpc2hva3VcIDsKK+S4gOWbnui7oiA8IGlra2FpdGVuXCA7CivlpJXpo68gPCB5dXVtZXNoaVwgOwor6IG35ZCNIDwgc2hva3VtZWlcIDsKK+aZqeevgCA8IGJhbnNldHN1XCA7CivkuozlvbkgPCBmdXRheWFrdVwgOwor5Li76ISz6YOoIDwgc2h1bm91YnVcIDsKK+S6jOW9oiA8IGZ1dGFuYXJpXCA7CivmmKXoj4ogPCBzaHVuZ2lrdVwgOwor5a2m5YOVIDwgZ2FrdWJva3VcIDsKK+e0jeS7mOabuCA8IG5vdWZ1c2hvXCA7CivosYbmlpkgPCBtYW1lcnlvdVwgOwor5pyd5pW1IDwgY2hvdXRla2lcIDsKK+WNmOW8geiKsSA8IHRhbmJlbmthXCA7CivmtYHmtarogIUgPCBydXJvdXNoYVwgOwor5pWj6auqIDwgc2FucGF0c3VcIDsKK+iPk+WtkOebhiA8IGthc2hpYm9uXCA7CivorI7orI4gPCBuYXpvbmF6b1wgOwor5YWs55So6KqeIDwga291eW91Z29cIDsKK+WmhOiqrCA8IG1vdXNldHN1XCA7CivpoJPnnYAgPCB0b25jaGFrdVwgOwor5LuP5Zm4IDwgZnV0c3V0b25cIDsKK+WmluihkyA8IHlvdWp1dHN1XCA7Civpm5vps6UgPCBoaW5hZG9yaVwgOwor6Zu76aO+IDwgZGVuc2hva3VcIDsKK+WkqumZveeCiSA8IHRhaXlvdXJvXCA7Civml6foqLMgPCBreXV1eWFrdVwgOwor5pyI5pyrIDwgdHN1a2l6dWVcIDsKK+eLrOeZvSA8IGRva3VoYWt1XCA7CivnjJvng4ggPCBtb3VyZXRzdVwgOwor5Y+X6Lqr5b2iIDwgdWtlbWlrZWlcIDsKK+awkeWWtuWMliA8IG1pbicnZWlrYVwgOwor5Lq65pyb5a62IDwgamluYm91a2FcIDsKK+eIqui3oSA8IHRzdW1lYXRvXCA7Civku67liJ0gPCBrYXJpc29tZVwgOwor5p2l5a6iIDwgcmFpa3lha3VcIDsKK+aciOabnCA8IGdldHN1eW91XCA7Civnv4zmnJ0gPCB5b2t1Y2hvdVwgOwor57eP5LqM6ZqOIDwgc291bmlrYWlcIDsKK+e5gembkSA8IGhhbnphdHN1XCA7Civop6Ppm4fogIUgPCBrYWlrb3NoYVwgOwor5ryi5pmC5LujIDwga2FuamlkYWlcIDsKK+WGheWklumHjiA8IG5haWdhaXlhXCA7CivniYfku67lkI0gPCBrYXRha2FuYVwgOwor6ISx6KGj5omAIDwgZGF0c3Vpam9cIDsKK+iBt+WIhiA8IHNob2t1YnVuXCA7Civkub7lvI8gPCBrYW5zaGlraVwgOwor6Z2i6K2YIDwgbWVuc2hpa2lcIDsKK+S6uuWeoyA8IGhpdG9nYWtpXCA7CivotIjkuI7ogIUgPCB6b3V5b3NoYVwgOwor5aSx6YyvIDwgc2hpc3Nha3VcIDsKK+S5heaWuSA8IGhpc2FrYXRhXCA7CivmnIjmmI4gPCBnZXRzdW1laVwgOwor5aOw6auYIDwga293YWRha2FcIDsKK+irlui/sCA8IHJvbmp1dHN1XCA7Civnv4zmmKUgPCB5b2t1c2h1blwgOwor5L+d5a6I57O7IDwgaG9zaHVrZWlcIDsKK+irvuirviA8IGRha3VkYWt1XCA7CivorZjogIUgPCBzaGlraXNoYVwgOwor5LuV5Y+jIDwgc2hpa3VjaGlcIDsKK+a1t+mmrOWbniA8IGthaWJha2FpXCA7Civoh6rloJXokL0gPCBqaWRhcmFrdVwgOwor54+N5aaZIDwgY2hpbm15b3VcIDsKK+iyneWhmiA8IGthaWR6dWthXCA7CivmnKzloYHmiZMgPCBob25ydWlkYVwgOwor6IGW5ZOyIDwgc2VpdGV0c3VcIDsKK+aEm+mkkOS8miA8IGFpc2Fua2FpXCA7Civlr77mipfppqwgPCB0YWlrb3ViYVwgOwor6Z2i6KmwIDwgbWVua2l0c3VcIDsKK+e4nummrCA8IHNoaW1hdW1hXCA7Civku67lkI3mlocgPCBrYW5hYnVtaVwgOwor6aOf5bC9IDwgc2hva3VqaW5cIDsKK+izreS6iyA8IGtha2Vnb3RvXCA7CivkuIDmtYEgPCBpY2hpcnl1dVwgOwor5Lit5p+EIDwgY2h1dWdhcmFcIDsKK+abuOacrSA8IHNob3NhdHN1XCA7CivlppnolqwgPCBteW91eWFrdVwgOwor5Li75pelIDwgc2h1aml0c3VcIDsKK+iruOiruCA8IG1vcm9tb3JvXCA7Civog6HpurvloakgPCBnb21hc2hpb1wgOwor5Yqg5bel5ZOBIDwga2Frb3VoaW5cIDsKK+aoqeWIqeabuCA8IGtlbnJpc2hvXCA7Civoq7joqqwgPCBzaG9zZXRzdVwgOwor5buD6KaB57SgIDwgaGFpeW91c29cIDsKK+Wls+imqiA8IG9uJyduYW95YVwgOwor5pu05pu0IDwgc2FyYXNhcmFcIDsKK+adk+WtkCA8IHNoYWt1c2hpXCA7Civnqbrmg7PlrrYgPCBrdXVzb3VrYVwgOwor5puy5puyIDwga3VtYWd1bWFcIDsKK+aYjuiJsiA8IG1laXNob2t1XCA7Civosqnlo7Lpg6ggPCBoYW5iYWlidVwgOwor55y86Y+h5bGLIDwgbWVnYW5leWFcIDsKK+S7luWHuiA8IHRhc2h1dHN1XCA7CivliY3kuJbnlYwgPCB6ZW5zZWthaVwgOwor5pys5aC05omAIDwgaG9uYmFzaG9cIDsKK+mbqOmdtCA8IGFtYWd1dHN1XCA7CivomZrnhKHlhZogPCBreW9tdXRvdVwgOwor5Lq66aGe5oSbIDwgamlucnVpYWlcIDsKK+S6jOmHjeWljyA8IG5panV1c291XCA7CivmhJvlpb3ogIUgPCBhaWtvdXNoYVwgOwor5ZCI5oiQ6KqeIDwgZ291c2VpZ29cIDsKK+acrOW8jyA8IGhvbnNoaWtpXCA7Civku4/liY0gPCBidXRzdXplblwgOwor6Zuq6ZuyIDwgeXVraWd1bW9cIDsKK+mbqOmcsCA8IGFtZWFyYXJlXCA7CivmnKjlvasgPCBtb2t1Y2hvdVwgOwor5pqR54axIDwgc2hvbmV0c3VcIDsKK+efs+eBq+efoiA8IGlzaGliaXlhXCA7CivnianoibIgPCBidXNzaG9rdVwgOwor6IG35Lq6IDwgc2hva3VuaW5cIDsKK+WHuue0jeewvyA8IHN1aXRvdWJvXCA7Civoq6forJQgPCBrYWlneWFrdVwgOwor54us54m5IDwgZG9rdXRva3VcIDsKK+WksemAnyA8IHNoaXNzb2t1XCA7CivmmKXnua0gPCBoYXJ1bWF5dVwgOwor54ax6aGYIDwgbmV0c3VnYW5cIDsKK+i7jeeuoeWMuiA8IGd1bmthbmt1XCA7CivmnKvlubQgPCBtYXRzdW5lblwgOwor5auh5a2rIDwgY2hha3Vzb25cIDsKK+eJqeiHrSA8IG1vbm9ndXNhXCA7Civlq6HlrZAgPCBjaGFrdXNoaVwgOwor6Kuk6KukIDwgZ2FrdWdha3VcIDsKK+eLoeeMviA8IGtvdWthdHN1XCA7Civpm5Hpo58gPCB6YXNzaG9rdVwgOwor5Li75oyBIDwgc2h1bW9jaGlcIDsKK+WssOWFkCA8IG1pZG9yaWdvXCA7Civnp4vnlLDnnIwgPCBha2l0YWtlblwgOwor57im6ZW3IDwgdGF0ZW5hZ2FcIDsKK+WEkuWtpueVjCA8IGp1Z2Fra2FpXCA7CivkuIvmiYvns54gPCBoZXRha3Vzb1wgOwor5LqJ5aWqIDwgc291ZGF0c3VcIDsKK+S7j+WDjyA8IGJ1dHN1em91XCA7CivmnKrlor7lnLAgPCBtaWtvbmNoaVwgOwor5aSn5aSa5pWwIDwgZGFpdGFzdXVcIDsKK+WtkOWNiOe3miA8IHNoaWdvc2VuXCA7CivogIHlrp8gPCByb3VqaXRzdVwgOwor5aSn6YCGIDwgZGFpZ3lha3VcIDsKK+aXpeiTriA8IG5pY2hpcmVuXCA7CivmraPluLjljJYgPCBzZWlqb3VrYVwgOwor55m66YW157SgIDwgaGFra291c29cIDsKK+i3nembouioiCA8IGt5b3Jpa2VpXCA7CivnhrHpm7cgPCBuZXRzdXJhaVwgOwor6Ii55bCP5bGLIDwgZnVuYWdveWFcIDsKK+mGuOmAoOaJgCA8IGpvdXpvdWpvXCA7Civoqabpo58gPCBzaGlzaG9rdVwgOwor5pW36YeRIDwgc2hpa2lraW5cIDsKK+WroeWmuyA8IGNoYWt1c2FpXCA7CivkuIDmo58gPCBoaXRvbXVuZVwgOwor5aSn57SN6KiAIDwgZGFpbmFnb25cIDsKK+WkqeaWh+WutiA8IHRlbm1vbmthXCA7CivmqKHpgKDogIUgPCBtb3pvdXNoYVwgOwor5aSx6LehIDwgc2hpc3Nla2lcIDsKK+WvneS4jei2syA8IG5lYnVzb2t1XCA7CivkurrliLogPCBqaW5zYXNoaVwgOwor6Zu76YmEIDwgZGVudGV0c3VcIDsKK+S6uuWIpSA8IG5pbmJldHN1XCA7CivlsILploDlrrYgPCBzZW5tb25rYVwgOwor6KuW6KqsIDwgcm9uc2V0c3VcIDsKK+acqueEtuW9oiA8IG1pemVua2VpXCA7CivmnKzlsYAgPCBob25reW9rdVwgOwor5Ymq6KOB5qmfIDwgc2Vuc2Fpa2lcIDsKK+S4reaMhyA8IG5ha2F5dWJpXCA7Civos7zosrfpg6ggPCBrb3ViYWlidVwgOwor6LK45YCfIDwgdGFpc2hha3VcIDsKK+eNsuW+lyA8IGtha3V0b2t1XCA7Civoq5boqbAgPCByb25raXRzdVwgOwor5oWI5ZaE5LyaIDwgaml6ZW5rYWlcIDsKK+aCqui2o+WRsyA8IGFrdXNodW1pXCA7CivkuIDmoYEgPCBoaXRva2V0YVwgOwor5pa96KGTIDwgc2hpanV0c3VcIDsKK+mhm+acqyA8IHRlbm1hdHN1XCA7CivotIjkuI7nqI4gPCB6b3V5b3plaVwgOwor6LKh5YqbIDwgemFpcnlva3VcIDsKK+iqnumDqCA8IGthdGFyaWJlXCA7Civkv53lrZjns7sgPCBob3pvbmtlaVwgOwor5LiJ5puyIDwgc2Fua3lva3VcIDsKK+awl+WLlei7iiA8IGtpZG91c2hhXCA7CivmsLjkvY/ogIUgPCBlaWp1dXNoYVwgOwor5pmv54mpIDwga2VpYnV0c3VcIDsKK+aWueihkyA8IGhvdWp1dHN1XCA7CivnibnntIQgPCB0b2t1eWFrdVwgOwor57mw6KiAIDwga3VyaWdvdG9cIDsKK+eJm+iCiSA8IGd5dXVuaWt1XCA7CivmnYnlnqMgPCBzdWdpZ2FraVwgOwor546L5a6kIDwgb3VzaGl0c3VcIDsKK+S4gOadnyA8IGhpdG90YWJhXCA7CivniaHnvoogPCBvaGl0c3VqaVwgOwor6LC35bqVIDwgdGFuaXpva29cIDsKK+acqueGn+WFkCA8IG1panVrdWppXCA7CivkuIDmnKggPCBpY2hpYm9rdVwgOwor5Lq65YKRIDwgamlua2V0c3VcIDsKK+iomOW/teWTgSA8IGtpbmVuaGluXCA7CivnoLTnk5znl4UgPCBoYWthYnlvdVwgOwor5pio56eLIDwgc2FrdXNodXVcIDsKK+iwt+W3nSA8IHRhbmlnYXdhXCA7Civku4Tku4QgPCBob25vYm9ub1wgOwor56C055Sj5rOVIDwgaGFzYW5ob3VcIDsKK+WBnOmbu+aXpSA8IHRlaWRlbmJpXCA7CivosrfkuLsgPCBrYWludXNoaVwgOwor5Y+X6aiT55SfIDwganVrZW5zZWlcIDsKK+mZuOiSuOawlyA8IG9rYWpvdWtpXCA7CivkuIDmmYIgPCBoaXRvdG9raVwgOwor5piH57WmIDwgc2hvdWt5dXVcIDsKK+Wun+ihjOaZgiA8IGppa2tvdWppXCA7CivniYfohp0gPCBrYXRhaGl6YVwgOwor6aOy5YqpIDwgbm9taXN1a2VcIDsKK+absuaCqiA8IGt5b2t1YWt1XCA7CivmqKHpgKDntJkgPCBtb3pvdXNoaVwgOwor5LqM5Y6f5a2QIDwgbmlnZW5zaGlcIDsKK+S4gOaXlyA8IGhpdG9oYXRhXCA7CivkuIDml48gPCBpY2hpem9rdVwgOwor6aOf5ZOBIDwgc2hva3VoaW5cIDsKK+eJqee0jSA8IGJ1dHN1bm91XCA7CivlpLHoqr8gPCBzaGl0Y2hvdVwgOwor54Wu6a2aIDwgbml6YWthbmFcIDsKK+WkseiqniA8IHNoaXRzdWdvXCA7CivkuIflm73ml5cgPCBiYW5rb2traVwgOwor5pep6ICzIDwgaGF5YW1pbWlcIDsKK+S4uOW6lSA8IG1hcnV6b2tvXCA7Civkuovli5nnmoQgPCBqaW11dGVraVwgOwor5Lq65Lq6IDwgaGl0b2JpdG9cIDsKK+aVo+mAuCA8IHNhbicnaXRzdVwgOwor54mH6IKMIDwga2F0YWhhZGFcIDsKK+abuOW8jyA8IHNob3NoaWtpXCA7CivkurrkuosgPCBoaXRvZ290b1wgOwor57eP6auqIDwgc291aGF0c3VcIDsKK+acjeWxniA8IGZ1a3V6b2t1XCA7CivnibnnqK4gPCB0b2t1ZGFuZVwgOwor5Lit5b2iIDwgY2h1dWdhdGFcIDsKK+S6uuS4rSA8IGhpdG9uYWthXCA7Civmjqjnp7vnmoQgPCBzdWlpdGVraVwgOwor5LiA5pKDIDwgaWNoaWdla2lcIDsKK+epuuawl+eptCA8IGt1dWtpYW5hXCA7Civlj5flrrnogIUgPCBqdXlvdXNoYVwgOwor57Og5ZGz5ZmMIDwgbnVrYW1pc29cIDsKK+aWueW9ouazoiA8IGhvdWtlaWhhXCA7CivmiKbliY3mtL4gPCBzZW56ZW5oYVwgOwor5Yem55CG5aC0IDwgc2hvcmlqb3VcIDsKK+S6jOW8pueQtCA8IG5pZ2Vua2luXCA7CivkuK3luq0gPCBuYWthbml3YVwgOwor5aeL55m6IDwgc2hpaGF0c3VcIDsKK+isnee1tiA8IHNoYXpldHN1XCA7Civkub7lkrMgPCBrYXJhemVraVwgOwor6YWS6YCg5a62IDwgc2h1em91a2FcIDsKK+S4reW5lSA8IG5ha2FtYWt1XCA7CivkuK3luYUgPCBjaHV1aGFiYVwgOwor5o6y56S65p2/IDwga2VpamliYW5cIDsKK+WGhemiqOWRgiA8IHVjaGlidXJvXCA7Civoq7johp0gPCBtb3JvaGl6YVwgOwor6Ku46IaaIDwgbW9yb2hhZGFcIDsKK+S4reW4rSA8IG5ha2FzZWtpXCA7CivmnJ3lpJUgPCBjaG91c2VraVwgOwor54mn56ybIDwgYm9rdXRla2lcIDsKK+S4oeW+lyA8IHJ5b3V0b2t1XCA7CivnuKbou7ggPCB0YXRlamlrdVwgOwor5Lit5Yq05aeUIDwgY2h1dXJvdWlcIDsKK+WnpueJqSA8IGthbmJ1dHN1XCA7Civpo5/liLsgPCBzaG9ra29rdVwgOwor546J5Z6jIDwgdGFtYWdha2lcIDsKK+aEm+eMq+WutiA8IGFpYnlvdWthXCA7CivkuInlm57lv4wgPCBzYW5rYWlraVwgOwor57eP5LuV6IieIDwgc291amltYWlcIDsKK+mbsui2syA8IGt1bW9hc2hpXCA7Civnt5HpoqggPCByeW9rdWZ1dVwgOwor54mp56iuIDwgbW9ub2RhbmVcIDsKK+S4puW5hSA8IG5hbWloYWJhXCA7CivlppnnrZYgPCBteW91c2FrdVwgOwor6Z2Z6ISIIDwgam91bXlha3VcIDsKK+eJqeeojiA8IGJ1dHN1emVpXCA7CivkuLvlrqIgPCBzaHVreWFrdVwgOwor6Ya46YCg5a62IDwgam91em91a2FcIDsKK+S6pOS6pCA8IGtvbW9nb21vXCA7CivniIbolqwgPCBiYWt1eWFrdVwgOwor5Lit5bO2IDwgbmFrYWppbWFcIDsKK+S6pOS7mOmHkSA8IGtvdWZ1a2luXCA7CivkuovlhbEgPCBrb3RvZG9tb1wgOwor5omH6aKo5qmfIDwgc2VucHV1a2lcIDsKK+S4jeaCiSA8IGZ1c2hpdHN1XCA7CivlhajlgJnoo5wgPCB6ZW5rb3Vob1wgOwor55CG5oOz6KuWIDwgcmlzb3Vyb25cIDsKK+eJp+elniA8IGJva3VzaGluXCA7Civnt5HpnZIgPCByb2t1c2hvdVwgOwor5ryi5pWw5a2XIDwga2Fuc3V1amlcIDsKK+i8neeFjOW4nSA8IGtpa291dGVpXCA7CivmlK/mjIHogIUgPCBzaGlqaXNoYVwgOwor5pa56IifIDwgaGFrb2J1bmVcIDsKK+mjr+S6iyA8IG1hbWFnb3RvXCA7CivkuK3lsI8gPCBjaHV1c2hvdVwgOwor5pel57GzIDwgbmljaGliZWlcIDsKK+eEvOmzpSA8IHlha2l0b3JpXCA7CivlpKfmloflrZcgPCBkYWltb25qaVwgOwor6Ky555u0IDwga2luY2hva3VcIDsKK+S4reWtpiA8IGNodXVnYWt1XCA7Civnt7TpiYQgPCByZW50ZXRzdVwgOwor5aSJ6KqsIDwgaGVuc2V0c3VcIDsKK+aVteilsiA8IHRla2lzaHV1XCA7CivlrZDljYjnkrAgPCBzaGlnb2thblwgOwor5pS+6YCQIDwgaG91Y2hpa3VcIDsKK+S4ieW9uSA8IHNhbicneWFrdVwgOwor6KqN6K2YIDwgbmluc2hpa2lcIDsKK+iJtuemj+WutiA8IGVucHVrdWthXCA7CivlsILploDljLsgPCBzZW5tb24nJ2lcIDsKK+abtOW5tOacnyA8IGtvdW5lbmtpXCA7Civml6XmnKzliIAgPCBuaWhvbnRvdVwgOwor57eR6ZaAIDwgcnlva3Vtb25cIDsKK+S4jeihjOWEgCA8IGZ1Z3lvdWdpXCA7CivluLDlt6PmgKcgPCBraXNvdXNlaVwgOwor5LiL5omL54mpIDwgZ2V0ZW1vbm9cIDsKK+adkeS6uiA8IG11cmFiaXRvXCA7Civmj5DmoYjogIUgPCB0ZWlhbnNoYVwgOwor5Y+X5L+h5qmfIDwganVzaGlua2lcIDsKK+S4i+W4ryA8IHNoaXRhb2JpXCA7CivkuIDlvbkgPCBoaXRveWFrdVwgOwor6LGq5YKRIDwgZ291a2V0c3VcIDsKK+aPmuWtkOaxnyA8IHlvdXN1a291XCA7CivkuovkuosgPCBrb3RvZ290b1wgOwor57a/6ZuyIDwgd2F0YWd1bW9cIDsKK+S5seWFpSA8IHJhbicnbnl1dVwgOwor57a/6ZuqIDwgd2F0YXl1a2lcIDsKK+e1jOW4uOiyuyA8IGtlaWpvdWhpXCA7CivkuojkuoggPCBrYW5lZ2FuZVwgOwor5LiW5bGAIDwgc2Vpa3lva3VcIDsKK+e3tOmBlCA8IHJlbnRhdHN1XCA7CivmmofmmocgPCBoaW1haGltYVwgOwor6ZqG6ZqGIDwgcnl1dXJ5dXVcIDsKK+a1t+eOi+aYnyA8IGthaW91c2VpXCA7CivkuIDluqYgPCBoaXRvdGFiaVwgOwor6ZqF6ZqFIDwgc3VtaXp1bWlcIDsKK+W5vOeomuWckiA8IHlvdWNoaWVuXCA7CivkuIDlubQgPCBoaXRvdG9zZVwgOwor6Z2Z57KbIDwgc2Vpc2h1a3VcIDsKK+WhqemurSA8IHNoaW96YWtlXCA7Civml4/nsY0gPCB6b2t1c2VraVwgOwor5aSn6JKcIDwgbmluJyduaWt1XCA7CivkuIDluZUgPCBoaXRvbWFrdVwgOwor5pyI5qGC5qi5IDwgZ2Vra2VpanVcIDsKK+acquiomOWFpSA8IG1pa2lueXV1XCA7CivkuIDlt7sgPCBoaXRvbWFraVwgOwor6Zuj6KmwIDwgbmFua2l0c3VcIDsKK+mbgOi6jSA8IGpha3V5YWt1XCA7CivkuK3loZcgPCBuYWthbnVyaVwgOwor6Zmq6aOfIDwgYmFpc2hva3VcIDsKK+eglOejqOadkCA8IGtlbm1hemFpXCA7CivkuozlubTojYkgPCBuaW5lbnNvdVwgOwor6aCM5pilIDwgc2hvdXNodW5cIDsKK+e+qeWLh+i7jSA8IGdpeXV1Z3VuXCA7Civmlofoqp7mlocgPCBidW5nb2J1blwgOwor6KqV55Sf5pelIDwgdGFuam91YmlcIDsKK+S8r+WJjOilv+eIviA8IGJ1cmFqaXJ1XCA7CivkuIflsYsgPCB5b3JvenV5YVwgOwor5Lit5Z6jIDwgbmFrYWdha2lcIDsKK+mHkeaZguioiCA8IGtpbmRva2VpXCA7CivpoqjlipsgPCBmdXVyeW9rdVwgOwor56m65rSe5YyWIDwga3V1ZG91a2FcIDsKK+eznuWRs+WZjCA8IGt1c29taXNvXCA7CivkubHkvJAgPCByYW5iYXRzdVwgOwor5pel5pys5Lq6IDwgbmlob25qaW5cIDsKK+eMq+WxniA8IG5la296b2t1XCA7CivmgKfpgYrmiK8gPCBzZWl5dXVnaVwgOwor5Lit5Zu9IDwgY2h1dWdva3VcIDsKK+asoeeCueiAhSA8IGppdGVuc2hhXCA7CivpoIPml6UgPCBrZWlqaXRzdVwgOwor6Ziy6IWQ5YmkIDwgYm91ZnV6YWlcIDsKK+ips+iouyA8IHNob3VjaHV1XCA7Civml6XmnKzkuK0gPCBuaWhvbmp1dVwgOwor6ZuR6KuHIDwgemF0c3VkYW5cIDsKK+iFleebuOaSsiA8IHVkZXp1bW91XCA7CivlnLDln5/lt64gPCBjaGlpa2lzYVwgOwor5L+d6K236bOlIDwgaG9nb2Nob3VcIDsKK+aXpeebtCA8IG5pdGNob2t1XCA7Civnt5HphZIgPCByeW9rdXNodVwgOwor5LiA5a6kIDwgaXNzaGl0c3VcIDsKK+WkquiFvyA8IGZ1dG9tb21vXCA7CivlsI/miYvlhYggPCBrb3Rlc2FraVwgOwor54Sh6ZmN5rC0IDwgbXVrb3VzdWlcIDsKK+aWree1tiA8IGRhbnpldHN1XCA7CivkuIDlrZAgPCBoaXRvcmlnb1wgOwor5aer5qeYIDwgaGltZXNhbWFcIDsKK+m8u+WRvOWQuCA8IGJpa29reXV1XCA7Civpm7vok4QgPCBkZW5jaGlrdVwgOwor6YeN6aiO5YW1IDwganV1a2loZWlcIDsKK+WPpOS7o+WPsiA8IGtvZGFpc2hpXCA7CivmnKvku6MgPCBtYXRzdWRhaVwgOwor6KiA6ZyKIDwga290b2RhbWFcIDsKK+S4oeWbvSA8IHJ5b3Vnb2t1XCA7CivkuLvlj5YgPCBzaHV1ZG9yaVwgOwor6Zuo6JuZIDwgYW1hZ2FlcnVcIDsKK+eGn+iqrSA8IGp1a3Vkb2t1XCA7CivnjonkvZMgPCBneW9rdXRhaVwgOwor54mn54mbIDwgYm9rdWd5dXVcIDsKK+WhvumVtyA8IGp1a3VjaG91XCA7CivnhrHooYAgPCBuZWtrZXRzdVwgOwor6IO96Iie5Y+wIDwgbm91YnV0YWlcIDsKK+eOieS7oyA8IGd5b2t1ZGFpXCA7Civpm4boqLsgPCBzaHV1Y2h1dVwgOwor56u26aas6aasIDwga2VpYmF1bWFcIDsKK+malOmAsSA8IGtha3VzaHV1XCA7CivlhY3np5/lnLAgPCBtZW5zb2NoaVwgOwor5pel55SoIDwgbmljaGl5b3VcIDsKK+abuOWPliA8IGtha2l0b3JpXCA7CivkuozmrKHnmoQgPCBuaWppdGVraVwgOwor5ryU5aWP6ICFIDwgZW5zb3VzaGFcIDsKK+S4u+WKmyA8IHNodXJ5b2t1XCA7CivlhbfkvZPmgKcgPCBndXRhaXNlaVwgOwor5pyI5YaFIDwgZ2V0c3VuYWlcIDsKK+S5nuS4kCA8IGtvdHN1Z2FpXCA7CivkuIPlpJUgPCB0YW5hYmF0YVwgOwor6Kyh54mpIDwgdXRhaW1vbm9cIDsKK+mgu+WwvyA8IGhpbicnbnlvdVwgOwor5aSp572wIDwgdGVuYmF0c3VcIDsKK+S4gOetiei7iiA8IGl0dG91c2hhXCA7CivpnaLnmb0gPCBvbW9zaGlyb1wgOwor5puy5ZCNIDwga3lva3VtZWlcIDsKK+e3j+i9hCA8IHNvdWthdHN1XCA7CivkuK3lj6QgPCBjaHV1YnVydVwgOwor5LiN5ZOB6KGMIDwgZnVoaW5rb3VcIDsKK+eLvOW6pyA8IG9va2FtaXphXCA7CivoqLzot6EgPCBzaG91c2VraVwgOwor54m556eR5YW1IDwgdG9ra2FoZWlcIDsKK+iEguiCquayuSA8IHNoaWJvdXl1XCA7Civlt6blpKfoh6MgPCBzYWRhaWppblwgOwor6YeR5a2X5aGUIDwga2luaml0b3VcIDsKK+WlrueZuiA8IGZ1bnBhdHN1XCA7Civpq5jph47lsbEgPCBrb3V5YXNhblwgOwor5aSn54aK5bqnIDwgb29ndW1hemFcIDsKK+aYjua7hSA8IG1laW1ldHN1XCA7Civpmbjph6MgPCBva2FkenVyaVwgOwor6KyA55WlIDwgYm91cnlha3VcIDsKK+S4gOWhqSA8IGhpdG9zaGlvXCA7CivpoqjkuIogPCBrYXpha2FtaVwgOwor5YaS6Zm65a62IDwgYm91a2Vua2FcIDsKK+WkluiCoSA8IHNvdG9tYXRhXCA7Civloanmv4PluqYgPCBlbicnbm91ZG9cIDsKK+e1tumjnyA8IHplc3Nob2t1XCA7Civmm7jliJ0gPCBrYWtpem9tZVwgOwor5pel5LmD5Li4IDwgaGlub21hcnVcIDsKK+iqpue/kiA8IHNob3VzaHV1XCA7CivniIbnrJEgPCBiYWt1c2hvdVwgOwor57+S5L2cIDwgc2h1dXNha3VcIDsKK+eJueazqCA8IHRva3VjaHV1XCA7CivmmqblraYgPCByZWtpZ2FrdVwgOwor5Li45YK3IDwgdGFtYWtpenVcIDsKK+S9leWHpui/hCA8IGRva29tYWRlXCA7Civov5HkvLzlgKQgPCBraW5qaWNoaVwgOwor6YCP56OB5oCnIDwgdG91amlzZWlcIDsKK+WlieelnSA8IGhvdXNodWt1XCA7Civkv53orbfpoJggPCBob2dvcnlvdVwgOwor5Lit5YWxIDwgY2h1dWt5b3VcIDsKK+eJuea0vuWToSA8IHRva3VoYWluXCA7CivkuKbliJcgPCBoZWlyZXRzdVwgOwor5LmF5LmFIDwgaGlzYWJpc2FcIDsKK+WUvua2suiFuiA8IGRhZWtpc2VuXCA7Civnt5HosYYgPCByeW9rdXRvdVwgOwor5aW954mpIDwga291YnV0c3VcIDsKK+S4i+mZouitsOWToSA8IGthaW5naWluXCA7Civluq3mnKjmiLggPCBuaXdha2lkb1wgOwor6Z2S55WzIDwgYW9kYXRhbWlcIDsKK+mbm+iPiiA8IGhpbmFnaWt1XCA7CivmmYLmmYIgPCB0b2tpZG9raVwgOwor5b6M5o+06ICFIDwga291ZW5zaGFcIDsKK+m7hOmJhOmJsSA8IG91dGVra291XCA7CivlpLHnrJEgPCBzaGlzc2hvdVwgOwor5pWX6ImyIDwgaGFpc2hva3VcIDsKK+mbquiGmiA8IHl1a2loYWRhXCA7CivmmpflrqQgPCBhbnNoaXRzdVwgOwor5Y+k5Luj5Lq6IDwga29kYWlqaW5cIDsKK+S6i+WLmeacjSA8IGppbXVmdWt1XCA7CivlsI/puqbnsokgPCBrb211Z2lrb1wgOwor5LiL5ZGzIDwgc2hpdGFhamlcIDsKK+S4jea6tuaApyA8IGZ1eW91c2VpXCA7CivntZDpq6ogPCBrZXBwYXRzdVwgOwor6aGn5ZWP5ZujIDwga29tb25kYW5cIDsKK+aYvOaZgiA8IGhpcnVkb2tpXCA7Civkv53mnInogIUgPCBob3l1dXNoYVwgOwor6YG/55eF6ZmiIDwgaGlieW91aW5cIDsKK+WJjeaZr+awlyA8IG1hZWdlaWtpXCA7CivkuLjkuosgPCBtYXJ1Z290b1wgOwor6Zu75rCX5qSF5a2QIDwgZGVua2lpc3VcIDsKK+WkluS6pOWToSA8IGdhaWtvdWluXCA7CivmlofnrrEgPCBmdW1pYmFrb1wgOwor5aSn562SIDwgb29kenV0c3VcIDsKK+S4uOS4uCA8IG1hcnVtYXJ1XCA7CivpmLLpm6ogPCBib3VzZXRzdVwgOwor6YqF55u45aC0IDwgZG91c291YmFcIDsKK+ios+iqrSA8IHlha3Vkb2t1XCA7CivkuIPlkbMgPCBzaGljaGltaVwgOwor5pa555WlIDwgaG91cnlha3VcIDsKK+S4uOS4gCA8IG1hcnVpY2hpXCA7CivkuK3kvY4gPCBuYWthYmlrdVwgOwor5aeL5pyrIDwgc2hpbWF0c3VcIDsKK+Wkp+erpSA8IG9vd2FyYXdhXCA7Civlgr7mlpzluqYgPCBrZWlzaGFkb1wgOwor6auY5bqm6KiIIDwga291ZG9rZWlcIDsKK+mdkueOiSA8IHNlaWd5b2t1XCA7Civov5HmnKrmnaUgPCBraW5taXJhaVwgOwor5o2V6a+o6Ii5IDwgaG9nZWlzZW5cIDsKK+WkseelniA8IHNoaXNzaGluXCA7Civpm4bokL0gPCBzaHV1cmFrdVwgOwor6Z2Z54mpIDwgc2VpYnV0c3VcIDsKK+WKoOWus+iAhSA8IGthZ2Fpc2hhXCA7CivmlbDnj6DnjokgPCBqdXp1ZGFtYVwgOwor5LiA5ZCRIDwgaGl0YXN1cmFcIDsKK+eLrOWtpiA8IGRva3VnYWt1XCA7CivmmKjmnJ0gPCBzYWt1Y2hvdVwgOwor5LiA5Y+iIDwgaGl0b211cmFcIDsKK+absuS6iyA8IGt1c2Vnb3RvXCA7CivmiYvnvr3lhYggPCB0ZWJhc2FraVwgOwor6KOc5Yqp57+8IDwgaG9qb3lva3VcIDsKK+S4reS4rSA8IG5ha2FuYWthXCA7CivmhYjmgrLlv4MgPCBqaWhpc2hpblwgOwor6aGe5YilIDwgcnVpYmV0c3VcIDsKK+WkluiyqOWCtSA8IGdhaWthc2FpXCA7CivnuK7nt6wgPCBjaGlyaW1lblwgOwor5oOF5aCx5YyWIDwgam91aG91a2FcIDsKK+aYqOaagSA8IHNha3VneW91XCA7Civnt4/kuojnrpcgPCBzb3V5b3NhblwgOwor55yf5aSc5LitIDwgbWF5b25ha2FcIDsKK+e1kOmhmCA8IGtlY2hpZ2FuXCA7CivmmKjmmKUgPCBzYWt1c2h1blwgOwor5LiH5YilIDwgYmFuYmV0c3VcIDsKK+mggeWyqSA8IGtldHN1Z2FuXCA7CivkuKbkuKYgPCBuYW1pbmFtaVwgOwor57im57ieIDwgdGF0ZWppbWFcIDsKK+iml+mtlCA8IG5vem9raW1hXCA7CivlopfoqK0gPCB6b3VzZXRzdVwgOwor5LiA5YmyIDwgaWNoaXdhcmlcIDsKK+WkleeriyA8IHl1dWRhY2hpXCA7CivloanovpsgPCBzaGlva2FyYVwgOwor5pen5rWBIDwga3l1dXJ5dXVcIDsKK+S4i+aEj+itmCA8IGthaXNoaWtpXCA7Civku6PnqL3lj6QgPCBkYWlnZWlrb1wgOwor5rC45L2P5qipIDwgZWlqdXVrZW5cIDsKK+S/neacieexsyA8IGhveXV1bWFpXCA7Civoh6rlm73oqp4gPCBqaWtva3Vnb1wgOwor5Y+N5a++6KqeIDwgaGFudGFpZ29cIDsKK+WkieeVsOS9kyA8IGhlbicnaXRhaVwgOwor57W56YedIDwga2ludWJhcmlcIDsKK+eNhOS4rSA8IGdva3VjaHV1XCA7CivliKnlt7HnmoQgPCByaWtvdGVraVwgOwor5LiA5YWIIDwgaGl0b21henVcIDsKK+W7uuWFt+WxiyA8IHRhdGVndXlhXCA7CivmmIfmoLwgPCBzaG91a2FrdVwgOwor6Ziy5a+S5YW3IDwgYm91a2FuZ3VcIDsKK+Wls+WtpuagoSA8IGpvZ2Fra291XCA7Civkv53lrojmgKcgPCBob3NodXNlaVwgOwor57mt546JIDwgbWF5dWRhbWFcIDsKK+aYjuaciCA8IG1laWdldHN1XCA7Civpnq3mkrsgPCBiZW50YXRzdVwgOwor6Zuo57KSIDwgYW1ldHN1YnVcIDsKK+WlveaZr+awlyA8IGtvdWtlaWtpXCA7CivlubPlkozntq3mjIEgPCBoZWl3YWlqaVwgOwor5Lqk5LuY6ICFIDwga291ZnVzaGFcIDsKK+WPr+WkieaVsCA8IGthaGVuc3V1XCA7CivoirHmloflrZcgPCBoYW5hbW9qaVwgOwor5pq05YqbIDwgYm91cnlva3VcIDsKK+mdouS8muaXpSA8IG1lbmthaWJpXCA7CivoprPplrIgPCBrYW4nJ2V0c3VcIDsKK+eFmeiNieWxiyA8IHRhYmFrb3lhXCA7Civnt5Hol7sgPCByeW9rdXNvdVwgOwor5aOu57W2IDwgc291emV0c3VcIDsKK+mbqOaooeanmCA8IGFtZW1veW91XCA7CivmlZnnsY0gPCBreW91c2VraVwgOwor5piO5pilIDwgbXlvdXNodW5cIDsKK+S4h+S7oyA8IHlvcm96dXlvXCA7CivmlK/ohIggPCBzaGlteWFrdVwgOwor5o+657GD5pyfIDwgeW91cmFua2lcIDsKK+eqgeegtOWPoyA8IHRvcHBha291XCA7Civni6zlm70gPCBkb2t1a29rdVwgOwor6L+R5Luj5YyWIDwga2luZGFpa2FcIDsKK+eCueeBq+ezuyA8IHRlbmtha2VpXCA7CivkuozlubTnlJ8gPCBuaW5lbnNlaVwgOwor5pif5rCX5L2TIDwgc2Vpa2l0YWlcIDsKK+S4jeetieWPtyA8IGZ1ZG91Z291XCA7CivmnInngrrou6LlpIkgPCB1aXRlbnBlblwgOwor5LqU6L665b2iIDwgZ29oZW5rZWlcIDsKK+S6jOi8qui7iiA8IG5pcmluc2hhXCA7CivkuInkuIsgPCBzYW5zaGl0YVwgOwor5aSn55WlIDwgdGFpcnlha3VcIDsKK+eUqOeuquespSA8IHlvdWRhbnN1XCA7CivlpbPmsJcgPCBvbicnbmFra2VcIDsKK+WhqeixhiA8IHNoaW9tYW1lXCA7CivlhrfolLXluqsgPCByZWl6b3Vrb1wgOwor5LiH5LiAIDwgbWFuJydpY2hpXCA7Civpm6rnqbogPCB5dWtpem9yYVwgOwor6KyA5q66IDwgYm91c2F0c3VcIDsKK+e1hOmVtyA8IGt1bWljaG91XCA7CivoqIDoqqwgPCBnZW5zZXRzdVwgOwor5LiN5omA5a2YIDwgZnVzaG96b25cIDsKK+inkumAmiA8IGtha3V0c3V1XCA7CivmipXlhYnlmaggPCB0b3Vrb3VraVwgOwor5rWc6IyE5a2QIDwgaGFtYW5hc3VcIDsKK+WPpOabuOWxlSA8IGtvc2hvdGVuXCA7CivkuozljYHku6MgPCBuaWp1dWRhaVwgOwor5LiA5LiAIDwgaXRzdWl0c3VcIDsKK+e1sei9hCA8IHRvdWthdHN1XCA7CivorKHmm7IgPCB5b3VreW9rdVwgOwor57SF6bGSIDwgYmVuaW1hc3VcIDsKK+W4guihl+WbsyA8IHNoaWdhaXp1XCA7Civni6zllLEgPCBkb2t1c2hvdVwgOwor5qi55p6d54q2IDwganVzaGlqb3VcIDsKK+e3keiMtiA8IHJ5b2t1Y2hhXCA7Civluo/nm6TmiKYgPCBqb2JhbnNlblwgOwor5pi85bitIDwgaGlydXNla2lcIDsKK+eBq+aIkOWyqSA8IGthc2VpZ2FuXCA7CivntYTlkIjlk6EgPCBrdW1pYWlpblwgOwor5Lqc6ISx6Ie8IDwgYWRha2t5dXVcIDsKK+e0hemurSA8IGJlbml6YWtlXCA7CivntI3pqqggPCBub3Vrb3RzdVwgOwor6ayx6YeR6ImyIDwgdWtvbicnaXJvXCA7Civml6fmoKogPCBreXV1a2FidVwgOwor5aer5a6uIDwgaGltZW1peWFcIDsKK+WinOiQvSA8IHRzdWlyYWt1XCA7CivprLzmrabogIUgPCBvbmltdXNoYVwgOwor5pac5oqV5b2xIDwgc2hhdG91ZWlcIDsKK+aVsOeZviA8IHN1dWh5YWt1XCA7Civpm4bntIQgPCBzaHV1eWFrdVwgOwor6KqY55m6IDwgeXV1aGF0c3VcIDsKK+a7keepuuapnyA8IGtha2t1dWtpXCA7CivniYfmoJcgPCBrYXRha3VyaVwgOwor5pes5pyIIDwganVuZ2V0c3VcIDsKK+i7vemojuWFtSA8IGtlaWtpaGVpXCA7CivkuozlhYPoq5YgPCBuaWdlbnJvblwgOwor5omL5paZ55CGIDwgdGVyeW91cmlcIDsKK+WNmOWIqeazlSA8IHRhbnJpaG91XCA7CivlvqHnpZ7ovL8gPCBvbWlrb3NoaVwgOwor5YWI6Yut5YyWIDwgc2VuJydlaWthXCA7Civpm7vnlaUgPCBkZW5yeWFrdVwgOwor5pKS5biD5YmkIDwgc2FwcHV6YWlcIDsKK+aWh+eJqSA8IGJ1bmJ1dHN1XCA7CivlkYnmnI3lsYsgPCBnb2Z1a3V5YVwgOwor5pS556+JIDwga2FpY2hpa3VcIDsKK+ippuetiyA8IHRhbWVzdWppXCA7CivoqabnrYYgPCBzaGloaXRzdVwgOwor5pen5pqmIDwga3l1dXJla2lcIDsKK+aXrOaXpSA8IGp1bmppdHN1XCA7Civpm5HnqI4gPCB6YXRzdXplaVwgOwor6Kqt54mpIDwgeW9taW1vbm9cIDsKK+a6tuino+eCiSA8IHlvdWthaXJvXCA7Civpm6rnm7IgPCBzZXRzdW1vdVwgOwor5Y+v5aSJ5oCnIDwga2FoZW5zZWlcIDsKK+itpuWvnyA8IGtlaXNhdHN1XCA7CivlubTpvaLlt64gPCBuZW5yZWlzYVwgOwor6Kej6KqsIDwga2Fpc2V0c3VcIDsKK+e3qee3qSA8IHl1cnV5dXJ1XCA7Civml6nml6kgPCBoYXlhYmF5YVwgOwor6KeS6LKdIDwgdHN1bm9nYWlcIDsKK+WIgOWcreWutiA8IHRvdWtlaWthXCA7CivmkYLpo58gPCBzZXNzaG9rdVwgOwor6KW/6ZmjIDwgbmlzaGlqaW5cIDsKK+mzs+S7meiKsSA8IGhvdXNlbmthXCA7Civop6bop5IgPCBzaG9ra2FrdVwgOwor5aOB57SZIDwga2FiZWdhbWlcIDsKK+WwjuazoueuoSA8IGRvdWhha2FuXCA7CivljZjmr5TkvosgPCB0YW5waXJlaVwgOwor5o2V6a+o56CyIDwgaG9nZWlob3VcIDsKK+e0kOmdqSA8IGhpbW9rYXdhXCA7Civnm7TotrPooosgPCBqaWthdGFiaVwgOwor5pen5pWZIDwga3l1dWt5b3VcIDsKK+mbhuepjSA8IHNodXVzZWtpXCA7Civln4vpqqggPCBtYWlrb3RzdVwgOwor5peX5pysIDwgaGF0YW1vdG9cIDsKK+WklueJqSA8IGdhaWJ1dHN1XCA7CivmgqrlpKrpg44gPCBha3V0YXJvdVwgOwor5pyJ55CG5pWwIDwgeXV1cmlzdXVcIDsKK+mDqOWIhuWTgSA8IGJ1YnVuaGluXCA7Civlj6/nh4PmgKcgPCBrYW5lbnNlaVwgOwor5LiN5ZaE5oSfIDwgZnV6ZW5rYW5cIDsKK+e0mumVtyA8IGt5dXVjaG91XCA7CivmlqzmrrogPCB6YW5zYXRzdVwgOwor5rSX6Z2i5omAIDwgc2VubWVuam9cIDsKK+eJqeaDhSA8IGJ1dHN1am91XCA7Civpm4bnpaggPCBzaHV1aHlvdVwgOwor6Zuo55S3IDwgYW1lb3Rva29cIDsKK+eIhuayiCA8IGJha3VjaGluXCA7CivlpJzng48gPCB5b2dhcmFzdVwgOwor6YCB5rK5566hIDwgc291eXVrYW5cIDsKK+agvOWtkOaIuCA8IGtvdXNoaWRvXCA7CivlhbfkvZPkvosgPCBndXRhaXJlaVwgOwor5aer5Z6jIDwgaGltZWdha2lcIDsKK+aUr+aMgeadrSA8IHNoaWppa291XCA7CivnhornrLkgPCBrdW1hemFzYVwgOwor54ax55m6IDwgbmVwcGF0c3VcIDsKK+eEoemZkOWkpyA8IG11Z2VuZGFpXCA7CivpoIbliJcgPCBqdW5yZXRzdVwgOwor5aKo57mpIDwgc3VtaW5hd2FcIDsKK+eyvuexs+aJgCA8IHNlaW1haWpvXCA7CivorJnmipEgPCBrZW4nJ3lva3VcIDsKK+aSruimgSA8IHNhdHN1eW91XCA7CivlpInniakgPCBoZW5idXRzdVwgOwor57Wx6Kqe6KuWIDwgdG91Z29yb25cIDsKK+acqumWi+WiviA8IG1pa2Fpa29uXCA7CivmmKXlrrUgPCBzaHVuc2hvdVwgOwor5L2c5qWt6LK7IDwgc2FneW91aGlcIDsKK+mXh+mbsiA8IHlhbWlrdW1vXCA7CivlpKfpmKrlupwgPCBvb3Nha2FmdVwgOwor54yK576O5riTIDwgZ2VpYmlrZWlcIDsKK+aJk+aSg+eOiyA8IGRhZ2VraW91XCA7CivntprokL0gPCB6b2t1cmFrdVwgOwor6Zuq546JIDwgeXVraWRhbWFcIDsKK+aRmOmMsiA8IHRla2lyb2t1XCA7CivluoPokYnmqLkgPCBrb3V5b3VqdVwgOwor57eK57iuIDwga2luc2h1a3VcIDsKK+ippuedgCA8IHNoaWNoYWt1XCA7CivojYnlibXmnJ8gPCBzb3Vzb3VraVwgOwor5L6N6KGb6ZW3IDwgamllaWNob3VcIDsKK+S6jOmAsuacqCA8IG5pc2hpbmdpXCA7CivlpJbmv6AgPCBzb3RvYm9yaVwgOwor5aa+5a6FIDwgc2hvdXRha3VcIDsKK+mhleWcqOWMliA8IGtlbnphaWthXCA7Civlho3oqablkIggPCBzYWlzaGlhaVwgOwor5Lyd6Z+z5ZmoIDwgZGVuJydvbmtpXCA7Civnvqnli5nnmoQgPCBnaW11dGVraVwgOwor6Ly45Y21566hIDwgeXVyYW5rYW5cIDsKK+S9juWIqemHkSA8IHRlaXJpa2luXCA7CivmiKbliKnlk4EgPCBzZW5yaWhpblwgOwor5paH6Kqe5L2TIDwgYnVuZ290YWlcIDsKK+S5vuaAp+ayuSA8IGthbnNlaXl1XCA7Civop5LoopYgPCBrYWt1c29kZVwgOwor5pOC57KJ5pyoIDwgc3VyaWtvZ2lcIDsKK+mXh+mXhyA8IHlhbWl5YW1pXCA7CivmjIflsI7lk6EgPCBzaGlkb3VpblwgOwor5pyq6ZaL5ZywIDwgbWlrYWljaGlcIDsKK+enmOabuOWumCA8IGhpc2hva2FuXCA7CivlpJrmub8gPCB0YXNoaXRzdVwgOwor6Z2i5o6lIDwgbWVuc2V0c3VcIDsKK+mbkeeUqCA8IHphdHN1eW91XCA7CivmlrDmoKogPCBzaGlua2FidVwgOwor5pG66LazIDwgc3VyaWFzaGlcIDsKK+atpuWutueJqSA8IGJ1a2Vtb25vXCA7CivmlbTnkIbliLggPCBzZWlyaWtlblwgOwor6IKy6Zub5ZmoIDwgaWt1c3V1a2lcIDsKK+Wcp+aQvuapnyA8IGFzc2FrdWtpXCA7Civml4Hml4EgPCBrYXRhZ2F0YVwgOwor5paw5p+EIDwgc2hpbmdhcmFcIDsKK+aUv+eVpSA8IHNlaXJ5YWt1XCA7CivopovpgJogPCBtaXRvb3NoaVwgOwor6Zuj54mpIDwgbmFuYnV0c3VcIDsKK+S6jOWIhuazlSA8IG5pYnVuaG91XCA7Civmt7fmiJDoqp4gPCBrb25zZWlnb1wgOwor54+I55Cy6IuRIDwga291aGlpZW5cIDsKK+S6jOmDqOS9nCA8IG5pYnVzYWt1XCA7Civnt4/kvJrlsYsgPCBzb3VrYWl5YVwgOwor6KaL6L+UIDwgbWlrYWVzaGlcIDsKK+S7leaJi+aIpiA8IHNoaXRlc2VuXCA7Civlp6vlkJsgPCBoaW1lZ2ltaVwgOwor5pS755WlIDwga291cnlha3VcIDsKK+e1kOirliA8IGtldHN1cm9uXCA7CivlpY/mm7IgPCBzb3VreW9rdVwgOwor5aW95aW954i6IDwga291a291eWFcIDsKK+eojuWLmee9siA8IHplaW11c2hvXCA7Civosqnlo7LmqZ8gPCBoYW5iYWlraVwgOwor6Zy95pyIIDwgc2VpZ2V0c3VcIDsKK+epuuawl+WtlCA8IGt1dWtpa291XCA7CivnlrLlirTmhJ8gPCBoaXJvdWthblwgOwor5pS+5rC06LevIDwgaG91c3Vpcm9cIDsKK+aWsOaapiA8IHNoaW5yZWtpXCA7CivnhLzogokgPCB5YWtpbmlrdVwgOwor57WQ6KiAIDwga2V0c3VnZW5cIDsKK+iovOelqCA8IHNob3VoeW91XCA7Civpmo/nrYYgPCB6dWloaXRzdVwgOwor5aSW5rOVIDwgc290b25vcmlcIDsKK+aWsOaYpSA8IHNoaW5zaHVuXCA7CivkvJrorbDmiYAgPCBrYWlnaXNob1wgOwor6Zm457aaIDwgcmlrdXpva3VcIDsKK+eGseeGsSA8IGF0c3VhdHN1XCA7Civlopfnr4kgPCB6b3VjaGlrdVwgOwor5b2i5a656KqeIDwga2VpeW91Z29cIDsKK+S4gOWbnuaIpiA8IGlra2Fpc2VuXCA7CivnuK7muJsgPCBzaHVrdWdlblwgOwor57mB5q6WIDwgaGFuc2hva3VcIDsKK+WkqealtSA8IHRlbmt5b2t1XCA7CivnlpHllY/oqZ4gPCBnaW1vbnNoaVwgOwor5pen5bmVIDwga3l1dWJha3VcIDsKK+e1ueiOoiA8IGtpbnVzYXlhXCA7Civoi6blirTkurogPCBrdXJvdW5pblwgOwor5aSx5qC8IDwgc2hpa2tha3VcIDsKK+iBlueBq+WPsCA8IHNlaWthZGFpXCA7Civml6XluLggPCBuaWNoaWpvdVwgOwor5rC05L2N5qiZIDwgc3VpaWh5b3VcIDsKK+aCsuims+irliA8IGhpa2Fucm9uXCA7CivlpoToqp7miJIgPCBtb3Vnb2thaVwgOwor6ZuR54S2IDwgemF0c3V6ZW5cIDsKK+awuOWwj+S9nCA8IGVpa29zYWt1XCA7Civngq3ntKDpi7wgPCB0YW5zb2tvdVwgOwor57mK57at5p2fIDwgc2VuaXNva3VcIDsKK+ino+aUvuWMuiA8IGthaWhvdWt1XCA7Civkv53lrojlhZogPCBob3NodXRvdVwgOwor5pS+54axIDwgaG91bmV0c3VcIDsKK+iqmOauuiA8IHl1dXNhdHN1XCA7CivntKDos6ogPCBzb3NoaXRzdVwgOwor57SF5LiA54K5IDwga291aXR0ZW5cIDsKK+WegumrqiA8IHRhcmVnYW1pXCA7Civpm4HniKogPCBnYW5kenVtZVwgOwor57im5rOiIDwgdGF0ZW5hbWlcIDsKK+iouueZgiA8IHNoaW5yeW91XCA7CivntprntpogPCB6b2t1em9rdVwgOwor54iG5pKDIDwgYmFrdWdla2lcIDsKK+WutuW6reeUqCA8IGthdGVpeW91XCA7CivopovorZggPCBrZW5zaGlraVwgOwor6Jma56m66JS1IDwga29rdXV6b3VcIDsKK+iqsOafkCA8IGRhcmVzb3JlXCA7Civml4vlvosgPCBzZW5yaXRzdVwgOwor5Lya6KiI6KqyIDwga2Fpa2Vpa2FcIDsKK+eGsea6kCA8IG5ldHN1Z2VuXCA7Civli6Tli5nogIUgPCBraW5tdXNoYVwgOwor5aSc5qGcIDwgeW96YWt1cmFcIDsKK+aWh+acqyA8IGJ1bm1hdHN1XCA7Civot53pm6LmhJ8gPCBreW9yaWthblwgOwor5pen5a6FIDwga3l1dXRha3VcIDsKK+iqv+aVmSA8IGNob3VreW91XCA7CivmmYLlgbYgPCB0b2tpdGFtYVwgOwor5aaC5a6fIDwgbnlvaml0c3VcIDsKK+aWjuaXpSA8IHNhaWppdHN1XCA7CivnhrHmtpkgPCBuZXRzdXJ1aVwgOwor6Zu75qW1IDwgZGVua3lva3VcIDsKK+WhteeusSA8IGdvbWliYWtvXCA7CivmlY/mtLsgPCBiaW5rYXRzdVwgOwor6ZaL6ZeiIDwga2FpYnlha3VcIDsKK+eFpeeZuiA8IGthbnBhdHN1XCA7CivnnIvorbfms5UgPCBrYW5nb2hvdVwgOwor5aSn5pelIDwgZGFpbmljaGlcIDsKK+WCrOS6i+WgtCA8IHNhaWppam91XCA7CivprLzlhbXpmoogPCBraWhlaXRhaVwgOwor5aWz5a2Q5aSnIDwgam9zaGlkYWlcIDsKK+mfk+S6uiA8IGthcmFiaXRvXCA7CivlpJbmnqAgPCBzb3Rvd2FrdVwgOwor5ZSv5oiR6KuWIDwgeXVpZ2Fyb25cIDsKK+acquijveWTgSA8IG1pc2VpaGluXCA7Civmlbfmnb8gPCBzaGlraWl0YVwgOwor6Kqs5piOIDwgc2V0c3VtZWlcIDsKK+eEoee1seWItiA8IG11dG91c2VpXCA7CivnuKbmqKogPCB0YXRleW9rb1wgOwor6KaB6KijIDwgeW91a2V0c3VcIDsKK+Wil+eZuiA8IHpvdWhhdHN1XCA7CivpgKDoiLnmiYAgPCB6b3VzZW5qb1wgOwor6Lqr5pSv5bqmIDwgbWlqaXRha3VcIDsKK+aYjuWTsiA8IG1laXRldHN1XCA7CivlpJzmmLwgPCB5b3J1aGlydVwgOwor6YeR5pys5L2NIDwga2luaG9uJydpXCA7CivlpJXmnIggPCB5dXVkenVraVwgOwor5aSa6Z2i5oCnIDwgdGFtZW5zZWlcIDsKK+Wkp+Wei+apnyA8IG9vZ2F0YWtpXCA7CivmlrnlvI8gPCBob3VzaGlraVwgOwor5pyq6ZaL5Lq6IDwgbWlrYWlqaW5cIDsKK+mWgOmWpSA8IG1vbmJhdHN1XCA7Civol4HlsYvmoLkgPCB3YXJheWFuZVwgOwor5pyI5LiW55WMIDwgZ2Vzc2VrYWlcIDsKK+W+l+aEj+mhlCA8IHRva3VpZ2FvXCA7CivmiYvplpPpmpkgPCB0ZW1haGltYVwgOwor5pS/5rK754qvIDwgc2VpamloYW5cIDsKK+aYpeWFiCA8IGhhcnVzYWtpXCA7Civlp4vlgKQgPCBoYWppbWVuZVwgOwor5rSX6Z2i5ZmoIDwgc2VubWVua2lcIDsKK+aWsOW9oiA8IHNoaW5nYXRhXCA7CivkurrmloflrZcgPCBoaXRvbW9qaVwgOwor5qih6YCg5ZOBIDwgbW96b3VoaW5cIDsKK+mZuOebuCA8IHJpa3VzaG91XCA7CivlkbzlkLjlmaggPCBrb2t5dXVraVwgOwor57W557a/IDwga2ludXdhdGFcIDsKK+Wcn+WcsOmRkSA8IHRvY2hpa2FuXCA7CivniYblo4EgPCBzaG91aGVraVwgOwor5aOK5ruFIDwga2FpbWV0c3VcIDsKK+mam+eJqSA8IGtpd2Ftb25vXCA7CivmsJfpgIHnrqEgPCBraXNvdWthblwgOwor5L2O6YeR5YipIDwgdGVpa2lucmlcIDsKK+WkreaKmCA8IHlvdXNldHN1XCA7Civoi7HlsI/mloflrZcgPCBlaWtvbW9qaVwgOwor5pW15pa5IDwgdGVraWdhdGFcIDsKK+mVt+mVtyA8IG5hZ2FuYWdhXCA7CivluL3lrZDlsYsgPCBib3VzaGl5YVwgOwor5b6h5oiQ5YqfIDwgZ29zZWlrb3VcIDsKK+ePiueRmua1tyA8IHNhbmdva2FpXCA7CivntIToq74gPCB5YWt1ZGFrdVwgOwor5pWw5pelIDwgc3V1aml0c3VcIDsKK+abs+WFieW8viA8IGVpa291ZGFuXCA7CivljYPph4znnLwgPCBzZW5yaWdhblwgOwor6Ziy57iuIDwgYm91c2h1a3VcIDsKK+iQveS4i+WCmCA8IHJha2thc2FuXCA7Civmk4Hnq4sgPCB5b3VyaXRzdVwgOwor5rih6Iiq6ICFIDwgdG9rb3VzaGFcIDsKK+aVsOaVsCA8IGthenVrYXp1XCA7CivlpKfmiYAgPCBvb2Rva29yb1wgOwor5Zyw6bygIDwgamluZXp1bWlcIDsKK+S4i+aJi+S6uiA8IGdlc2h1bmluXCA7Civlh6blpbPmnpcgPCBzaG9qb3JpblwgOwor57SU6KGAIDwganVua2V0c3VcIDsKK+S6i+alremDqCA8IGppZ3lvdWJ1XCA7Civlr4zlsbHmiL8gPCBmdXphbmJvdVwgOwor57KJ6aO+IDwgZnVuc2hva3VcIDsKK+e4puabuCA8IHRhdGVnYWtpXCA7Civmk6bnlrUgPCBzdXJpa2l6dVwgOwor5aGa56m0IDwgdHN1a2FhbmFcIDsKK+aOpeW+heiyuyA8IHNldHRhaWhpXCA7CivnuYrntq3mgKcgPCBzZW4nJ2lzZWlcIDsKK+aJi+ipseazlSA8IHNodXdhaG91XCA7CivkvZXlh6blhbblh6YgPCBkb2tvc29rb1wgOwor5L+d6aSK5ZywIDwgaG95b3VjaGlcIDsKK+eFp+eEvCA8IHRlcml5YWtpXCA7CivliKnlt7Hlv4MgPCByaWtvc2hpblwgOwor54K554Gr5qCTIDwgdGVua2FzZW5cIDsKK+e1tuethiA8IHplcHBpdHN1XCA7Civpm6Pmm7IgPCBuYW5reW9rdVwgOwor6KiI55WlIDwga2Vpcnlha3VcIDsKK+mOlOmJseeCiSA8IHlvdWtvdXJvXCA7Civlj6/mj5vnvqQgPCBrYWthbmd1blwgOwor5Lya6K2w5aC0IDwga2FpZ2lqb3VcIDsKK+S6uumdnuS6uiA8IG5pbnBpbmluXCA7CivopovokL0gPCBtaW90b3NoaVwgOwor54K46JasIDwgc2FrdXlha3VcIDsKK+iKseeyieeuoSA8IGthZnVua2FuXCA7Civln4voqK0gPCBtYWlzZXRzdVwgOwor6YGO5r+A5rS+IDwga2FnZWtpaGFcIDsKK+aOpemqqCA8IHNla2tvdHN1XCA7Civpmb3niakgPCB5b3VidXRzdVwgOwor6KuW5a6iIDwgcm9ua3lha3VcIDsKK+inkuesmyA8IHRzdW5vYnVlXCA7CivnhrHmnJsgPCBuZXRzdWJvdVwgOwor5rq26Kej5bqmIDwgeW91a2FpZG9cIDsKK+mWsuiqrSA8IGV0c3Vkb2t1XCA7Civlj6Xoqq3ngrkgPCBrdXRvdXRlblwgOwor5o2c5p+76ZmjIDwgc291c2FqaW5cIDsKK+iqsOW9vCA8IHRhcmVrYXJlXCA7CivnsbPpo58gPCBiZWlzaG9rdVwgOwor57Si6I6rIDwgc2FrdWJha3VcIDsKK+WWtuWIqeeahCA8IGVpcml0ZWtpXCA7Civooqvngb3ogIUgPCBoaXNhaXNoYVwgOwor5LiN5b6T6aCGIDwgZnVqdXVqdW5cIDsKK+WPjeWwhOeCiSA8IGhhbnNoYXJvXCA7Civpm5Hmm7IgPCB6YWtreW9rdVwgOwor5L2d5YOC55eFIDwga3VydWJ5b3VcIDsKK+WkquW3uyA8IGZ1dG9tYWtpXCA7CivmlrDlprsgPCBuaWlkenVtYVwgOwor6YO95Lya5Lq6IDwgdG9rYWlqaW5cIDsKK+e1kOe0riA8IGtlc3NhdHN1XCA7CivlkarnpoHpgZMgPCBqdWtvbmRvdVwgOwor5Y+k54mI5pysIDwga29oYW5ib25cIDsKK+a4rOWAmeaJgCA8IHNva2tvdWpvXCA7Civml6fliocgPCBreXV1Z2VraVwgOwor5rS+6YGj6ZqKIDwgaGFrZW50YWlcIDsKK+aRmOiKryA8IHRla2lzaGluXCA7CivmrZPov47lrrQgPCBrYW5nZWllblwgOwor54mp5LqLIDwgbW9ub2dvdG9cIDsKK+aIkOWKn+ijoSA8IHNlaWtvdXJpXCA7CivoqLPms6ggPCB5YWt1Y2h1dVwgOwor5pS55pytIDwga2Fpc2F0c3VcIDsKK+WutuW6reashCA8IGthdGVpcmFuXCA7Civnha7msrggPCBzaGFmdXRzdVwgOwor5aSn5bWQIDwgb29hcmFzaGlcIDsKK+WkmuWkieaVsCA8IHRhaGVuc3V1XCA7CivnlLfmgKfnvo4gPCBkYW5zZWliaVwgOwor6ZuR5paHIDwgemF0c3VidW5cIDsKK+mrmOapn+iDvSA8IGtvdWtpbm91XCA7CivntJnoirEgPCBrYW1pYmFuYVwgOwor5Lq66ZaT6IumIDwgbmluZ2Vua3VcIDsKK+eEvOeJqSA8IHlha2ltb25vXCA7CivntZDnr4AgPCBrZXNzZXRzdVwgOwor6ZW36Lu4IDwgY2hvdWppa3VcIDsKK+WkluW6rSA8IHNvdG9uaXdhXCA7CivkuInlkbPnt5ogPCBzaGFtaXNlblwgOwor57WE57SQIDwga3VtaWhpbW9cIDsKK+eykumKgCA8IHRzdWJ1Z2luXCA7CivplovosYEgPCBrYWlrYXRzdVwgOwor57iB5pelIDwgZW4nJ25pY2hpXCA7CivlkIznqIvluqYgPCBkb3V0ZWlkb1wgOwor5aSc5bWQIDwgeW9hcmFzaGlcIDsKK+aVsOW8jyA8IHN1dXNoaWtpXCA7Civlpb3loanoj4wgPCBrb3VlbmtpblwgOwor6YCB5rCX566hIDwgc291a2lrYW5cIDsKK+eKoOeJsuiAhSA8IGdpc2Vpc2hhXCA7CivoirHntIvmnb8gPCBrYW1vbmJhblwgOwor6Zu75a2Q5YyWIDwgZGVuc2hpa2FcIDsKK+eJm+S5syA8IGd5dXVueXV1XCA7CivlsL3mnKrmnaUgPCBqaW5taXJhaVwgOwor5Y+l6Kqt5rOVIDwga3V0b3Vob3VcIDsKK+WlveWkqeawlyA8IGtvdXRlbmtpXCA7CivplbfotrMgPCBjaG91c29rdVwgOwor5aGp54mpIDwgc2hpb21vbm9cIDsKK+eJh+WBtCA8IGthdGFnYXdhXCA7CivmtYTljJbmp70gPCBqb3VrYXNvdVwgOwor6ZuA5paRIDwgc29iYWthc3VcIDsKK+acieWjsOmfsyA8IHl1dXNlaW9uXCA7Civpm7LlvaIgPCBrdW1vZ2F0YVwgOwor57WM56m0IDwga2Vpa2V0c3VcIDsKK+WPjeS9nOeUqCA8IGhhbnNheW91XCA7Civmkp7nnYAgPCBkb3VjaGFrdVwgOwor5YWo6Ieq5YuVIDwgemVuamlkb3VcIDsKK+WPjeWvvua0viA8IGhhbnRhaWhhXCA7Civml6fkvZwgPCBreXV1c2FrdVwgOwor57SF6IqxIDwgYmVuaWJhbmFcIDsKK+WHpuWls+aApyA8IHNob2pvc2VpXCA7CivmiYvplpPos4MgPCB0ZW1hY2hpblwgOwor6Zmw5rm/IDwgaW5zaGl0c3VcIDsKK+e3qOabsiA8IGhlbmt5b2t1XCA7CivntYTnq4sgPCBrdW1pdGF0ZVwgOwor57Sw57SwIDwgaG9zb2Jvc29cIDsKK+ippuaOmCA8IHNoaWt1dHN1XCA7CivloannhLwgPCBzaGlveWFraVwgOwor5aSW5bGAIDwgZ2Fpa3lva3VcIDsKK+Wil+auliA8IHpvdXNob2t1XCA7Civml6fkurogPCBmdXJ1Yml0b1wgOwor5LiA5Zue5YiGIDwgaWtrYWlidW5cIDsKK+e9ueeBveiAhSA8IHJpc2Fpc2hhXCA7CivoqLPmpa0gPCB5YWt1Z3lvdVwgOwor5o6S6ZuqIDwgaGFpc2V0c3VcIDsKK+eym+i7jSA8IHNodWt1Z3VuXCA7CivnhrHmhJ8gPCBuZXRzdWthblwgOwor5aSx5aKcIDwgc2hpdHRzdWlcIDsKK+WbvemzpSA8IGtva3VjaG91XCA7Civosq/ngq3miYAgPCBjaG90YW5qb1wgOwor6Ku45YWxIDwgbW9yb3RvbW9cIDsKK+acieS6uuWMliA8IHl1dWppbmthXCA7CivlpJblrqIgPCBnYWlreWFrdVwgOwor5Y2w6LGh5rS+IDwgaW5zaG91aGFcIDsKK+eGseaDhSA8IG5ldHN1am91XCA7CivlpJblrasgPCBzb3RvbWFnb1wgOwor57OW6JycIDwgdG91bWl0c3VcIDsKK+mbo+W9uSA8IG5hbicneWFrdVwgOwor5aGX54mpIDwgbnVyaW1vbm9cIDsKK+eJiOS4iyA8IGhhbnNoaXRhXCA7Civmp43pqI7lhbUgPCBzb3VraWhlaVwgOwor6Zmk5rm/IDwgam9zaGl0c3VcIDsKK+mAg+mBv+ihjCA8IHRvdWhpa291XCA7CivlhoXngavoiYcgPCBuYWlrYXRlaVwgOwor57Wx546HIDwgdG91c290c3VcIDsKK+aXheWFiCA8IHRhYmlzYWtpXCA7CivntLDnrYYgPCBzYWloaXRzdVwgOwor6Zuq5ba6IDwgc2V0c3VyZWlcIDsKK+e1ueeJqSA8IGtpbnVtb25vXCA7CivliKnmqKnlsYsgPCByaWtlbicneWFcIDsKK+ios+afhCA8IHdha2VnYXJhXCA7CivopZ/ohbAgPCBlcmlrb3NoaVwgOwor57WQ552AIDwga2V0Y2hha3VcIDsKK+e3keaelyA8IHJ5b2t1cmluXCA7CivplrLlhbXlj7AgPCBlcHBlaWRhaVwgOwor57WQ55ufIDwga2V0c3VtZWlcIDsKK+a3t+eoruiqniA8IGtvbnNodWdvXCA7CivnhrHlvIEgPCBuZXRzdWJlblwgOwor6YCP6YGO5oCnIDwgdG91a2FzZWlcIDsKK+S8muimi+iomCA8IGthaWtlbmtpXCA7Civpm5Hlv7UgPCB6YXRzdW5lblwgOwor6KiO5q27IDwgdWNoaWppbmlcIDsKK+ebuOS8vOeCuSA8IHNvdWppdGVuXCA7CivonrrlrZDph5ggPCBuZWppa3VnaVwgOwor5Yem5aWz5bOwIDwgc2hvam9ob3VcIDsKK+eci+itt+W4qyA8IGthbmdvc2hpXCA7CivmlK/miZUgPCBzaGloYXJhaVwgOwor6Kaq552mIDwgc2hpbmJva3VcIDsKK+WggOerryA8IGhvcmliYXRhXCA7CivpmaXmsqEgPCBrYW5ib3RzdVwgOwor6KeS54mbIDwga2FrdWd5dXVcIDsKK+mbkeW9uSA8IHphdHN1ZWtpXCA7Civpm6rlsbEgPCB5dWtpeWFtYVwgOwor5pyJ6aCC54K5IDwgdWNob3V0ZW5cIDsKK+iruOS6uiA8IG1vcm9iaXRvXCA7CivkuIDnrYnmmJ8gPCBpdHRvdXNlaVwgOwor5LiL5rC06YGTIDwgZ2VzdWlkb3VcIDsKK+mdnuS6uuaDhSA8IGhpbmluam91XCA7CivpmaPmsqEgPCBqaW5ib3RzdVwgOwor54i25LiKIDwgY2hpY2hpdWVcIDsKK+mbquWusyA8IHNldHN1Z2FpXCA7CivplbfoopYgPCBuYWdhc29kZVwgOwor6Ziy54axIDwgYm91bmV0c3VcIDsKK+S4u+e+qeiAhSA8IHNodWdpc2hhXCA7CivnuITlvLUgPCBuYXdhYmFyaVwgOwor5rS+6YGj6LuNIDwgaGFrZW5ndW5cIDsKK+WGjeaPkOahiCA8IHNhaXRlaWFuXCA7Civnvo7mhI/orZggPCBiaWlzaGlraVwgOwor6KOP6YGTIDwgdXJhbWljaGlcIDsKK+mao+aOpSA8IHJpbnNldHN1XCA7Civntpnmr40gPCBtYW1haGFoYVwgOwor5aSn5ZadIDwgZGFpa2F0c3VcIDsKK+e3j+acrOWutiA8IHNvdWhvbmtlXCA7CivluqblpJboppYgPCBkb2dhaXNoaVwgOwor5Ye65p2l5YW35ZCIIDwgZGVraWd1YWlcIDsKK+mcsuWHuiA8IHJvc2h1dHN1XCA7CivoqKrml6UgPCBob3VuaWNoaVwgOwor6YGg5b6B6ZqKIDwgZW5zZWl0YWlcIDsKK+WhqeawtCA8IHNoaW9taXp1XCA7CivnkIbmg7PlnosgPCByaXNvdWtlaVwgOwor5pW35ZywIDwgc2hpa2ljaGlcIDsKK+S7ruWIhuaVsCA8IGthYnVuc3V1XCA7CivpmobmmIwgPCByeXV1c2hvdVwgOwor5paw5L+uIDwgc2hpbnNodXVcIDsKK+WKqeaVsOipniA8IGpvc3V1c2hpXCA7Civnsr7nrpfmiYAgPCBzZWlzYW5qb1wgOwor5aSn5ZCJIDwgZGFpa2ljaGlcIDsKK+WkmumdouS9kyA8IHRhbWVudGFpXCA7CivmlrDkvZwgPCBzaGluc2FrdVwgOwor6Zai6ISHIDwgc2VraXdha2VcIDsKK+eHreWPsCA8IHNob2t1ZGFpXCA7Civngq3nqq8gPCBzdW1pZ2FtYVwgOwor6Zu75ZynIDwgZGVuJydhdHN1XCA7Civpm6jlpbMgPCBhbWVvbicnbmFcIDsKK+a/gOmchyA8IGdla2lzaGluXCA7CivlpInlnKcgPCBoZW4nJ2F0c3VcIDsKK+W9oumquOWMliA8IGtlaWdhaWthXCA7CivmrKfnsbPkurogPCBvdWJlaWppblwgOwor5aSn5Y2SIDwgZGFpc290c3VcIDsKK+e1jOW4q+WxiyA8IGt5b3VqaXlhXCA7CivoqqTlpInmj5sgPCBnb2hlbmthblwgOwor6YKE5LuY6YeRIDwga2FucHVraW5cIDsKK+WjgeW9uSA8IGthYmV5YWt1XCA7Civmjpvou7ggPCBrYWtlamlrdVwgOwor57iE5bC7IDwgbmF3YWppcmlcIDsKK+ijsuiloCA8IHVjaGlrYWtlXCA7Civln7rnnaMgPCBraXJpc3V0b1wgOwor5pmp5b6h6aOvIDwgYmFuZ29oYW5cIDsKK+iFleiHquaFoiA8IHVkZWppbWFuXCA7CivmtYTmsLTlmaggPCBqb3VzdWlraVwgOwor5Yqp5pWZ6KutIDwgam9reW91eXVcIDsKK+Wkp+WIpSA8IHRhaWJldHN1XCA7CivmlonliJcgPCBzZWlyZXRzdVwgOwor6Zuq5Zu9IDwgeXVraWd1bmlcIDsKK+WHpuWls+WcsCA8IHNob2pvY2hpXCA7CivlpKflhoogPCB0YWlzYXRzdVwgOwor57e75a+GIDwgY2hpbWl0c3VcIDsKK+WkieWTsiA8IGhlbnRldHN1XCA7Civns7jnq7kgPCBzaGljaGlrdVwgOwor6ZaL6ISaIDwga2Fpa3lha3VcIDsKK+aUr+WxgCA8IHNoaWt5b2t1XCA7CivlpLHkv50gPCBzaGl0c3Vob1wgOwor5Yip55So6ICFIDwgcml5b3VzaGFcIDsKK+e1gueGhCA8IHNodXVzb2t1XCA7CivnhKHnsr7ljbUgPCBtdXNlaXJhblwgOwor6bGpIDwgaGF0YWhhdGFcIDsKK+eEoemWouS/giA8IG11a2Fua2VpXCA7CivlpJblipsgPCBnYWlyeW9rdVwgOwor6Kq/5LyPIDwgY2hvdWJ1a3VcIDsKK+mbm+WeiyA8IGhpbmFnYXRhXCA7CivmraPlrZfms5UgPCBzZWlqaWhvdVwgOwor6KaB55WlIDwgeW91cnlha3VcIDsKK+i7jeWMu+eboyA8IGd1bicnaWthblwgOwor6a+RIDwga2F6dW5va29cIDsKK+itpuS4luWutiA8IGtlaXNlaWthXCA7CivmnaXlrabmnJ8gPCByYWlnYWtraVwgOwor5pig55S76KmVIDwgZWlnYWh5b3VcIDsKK+aJueWIpOiAhSA8IGhpaGFuc2hhXCA7CivploDohIggPCBtb25teWFrdVwgOwor5bmz5Y+Z5paHIDwgaGVpam9idW5cIDsKK+ikkOiJsiA8IGthc3Nob2t1XCA7CivkuInph43oi6YgPCBzYW5qdXVrdVwgOwor6a2BIDwgc2FraWdha2VcIDsKK+aooeWAo+iAhSA8IG1vaG91c2hhXCA7CivprKMgPCB0YXRlZ2FtaVwgOwor6Zu75YqbIDwgZGVucnlva3VcIDsKK+S6iOmBuOS8miA8IHlvc2Vua2FpXCA7CivmvJTlpY/kvJogPCBlbnNvdWthaVwgOwor5pWw5YiXIDwgc3V1cmV0c3VcIDsKK+aUvuWfkiA8IGhvdXJhdHN1XCA7CivlpJblgbQgPCBzb3RvZ2F3YVwgOwor6KGo6ZaAIDwgb21vdGVtb25cIDsKK+aVsOWGiiA8IHN1dXNhdHN1XCA7Civpm7LliqkgPCBrdW1vc3VrZVwgOwor6ZuR5ZqiIDwgemF0c3Vub3VcIDsKK+S4jea0u+aApyA8IGZ1a2Fzc2VpXCA7Civmv4HphZIgPCBkb2J1cm9rdVwgOwor5Zyf6LOqIDwgZG9zaGl0c3VcIDsKK+mWi+WPo+mDqCA8IGthaWtvdWJ1XCA7CivmlbXlgbQgPCB0ZWtpZ2F3YVwgOwor5Y+M6IO05qmfIDwgc291ZG91a2lcIDsKK+iopeW8gSA8IHRvdHN1YmVuXCA7Civoo4/ooaggPCB1cmFvbW90ZVwgOwor6Kqt5LqGIDwgZG9rdXJ5b3VcIDsKK+eBsOevqSA8IGhhaWZ1cnVpXCA7CivnsqXohbkgPCBrYXl1YmFyYVwgOwor6aCI5byl5bGxIDwgc2h1bWlzZW5cIDsKK+eAieihgCA8IHNoYWtldHN1XCA7Civlgb3pgKDnvaogPCBnaXpvdXphaVwgOwor5aCF54KtIDwga2F0YXp1bWlcIDsKK+e2v+W8kyA8IHdhdGF5dW1pXCA7CivppJ4gPCBoYW5hbXVrZVwgOwor5Z6C6ICzIDwgdGFyZW1pbWlcIDsKK+ipsOWVjyA8IGtpdHN1bW9uXCA7Civnp4DnlLvlrrYgPCBzaHV1Z2FrYVwgOwor5Lqk5Luj5ZOhIDwga291dGFpaW5cIDsKK+WjsuWNtCA8IGJhaWt5YWt1XCA7CivmjqHooYAgPCBzYWlrZXRzdVwgOwor57im5YiXIDwganV1cmV0c3VcIDsKK+i1pOmbu+ipsSA8IGFrYWRlbndhXCA7CivmnInmnJ/liJEgPCB5dXVraWtlaVwgOwor5Y+j6Kmx5rOVIDwga291d2Fob3VcIDsKK+aIuOS4u+aoqSA8IGtvc2h1a2VuXCA7CivntbbmnJsgPCB6ZXRzdWJvdVwgOwor5YWs5a6J5a6YIDwga291YW5rYW5cIDsKK+aSg+ayiCA8IGdla2ljaGluXCA7Civop5Lmn7EgPCBrYWt1Y2h1dVwgOwor5Zu96L6xIDwga29rdWpva3VcIDsKK+atr+eJmeeKtiA8IHNoaWdham91XCA7CivkvJ3lo7DlmaggPCBkZW5zZWlraVwgOwor6aCRIDwga2F0YWt1bmFcIDsKK+S/nemZuumHkSA8IGhva2Vua2luXCA7Civlo6vljZIgPCBzaGlzb3RzdVwgOwor5oyH5pWw6YOoIDwgc2hpc3V1YnVcIDsKK+ixquiPr+iIuSA8IGdvdWthc2VuXCA7CivkuLjmmpfoqJggPCBtYXJ1YW5raVwgOwor5Zyw6KKLIDwgamlidWt1cm9cIDsKK+WjsuWHuiA8IHVyaWRhc2hpXCA7Civnt4rlr4YgPCBraW5taXRzdVwgOwor5Z+65rqW54K5IDwga2lqdW50ZW5cIDsKK+aPuuevrSA8IHl1cmlrYWdvXCA7Civpm6rlg48gPCBzZXRzdXpvdVwgOwor57SF546JIDwga291Z3lva3VcIDsKK+exs+iUtSA8IGtvbWVndXJhXCA7Civlvozmj7TkvJogPCBrb3VlbmthaVwgOwor5r2u6aKoIDwgc2hpb2themVcIDsKK+Wei+e0mSA8IGthdGFnYW1pXCA7CivnnIzorbDkvJogPCBrZW5naWthaVwgOwor6Kiq5a6iIDwgaG91a3lha3VcIDsKK+ihjOWcqOaJgCA8IGFuemFpc2hvXCA7CivpmrwgPCBoYXlhYnVzYVwgOwor6Kix5auBIDwgaWluYXp1a2VcIDsKK+aNj+mAoCA8IG5ldHN1em91XCA7Civlj6Poqp7mlocgPCBrb3Vnb2J1blwgOwor5a+d54WZ6I2JIDwgbmV0YWJha29cIDsKK+aWreegtOWjiiA8IGRhbmhha2FpXCA7CivpmbUgPCBtaXNhc2FnaVwgOwor56OB6YmE6YmxIDwgaml0ZWtrb3VcIDsKK+WGhueCuuabvyA8IGVuZ2F3YXNlXCA7CivnnIvorbflhbUgPCBrYW5nb2hlaVwgOwor5Za25qWt6YOoIDwgZWlneW91YnVcIDsKK+mWj+enkiA8IHVydXVieW91XCA7CivkuI3mtojljJYgPCBmdXNob3VrYVwgOwor5r2k6aO+IDwganVuc2hva3VcIDsKK+aLs+mqqCA8IGdlbmtvdHN1XCA7Civntr/lr4YgPCBtZW5taXRzdVwgOwor5LiN5b6z576pIDwgZnV0b2t1Z2lcIDsKK+WcsOWQuembqiA8IGppZnVidWtpXCA7Civmv4DotoogPCBnZWtpZXRzdVwgOwor6aCI5byl5aOHIDwgc2h1bWlkYW5cIDsKK+e2v+WunyA8IG1lbmppdHN1XCA7CivkvZDluZXmtL4gPCBzYWJha3VoYVwgOwor6ZaKIDwgdHN1a2FlcnVcIDsKK+mgk+eXtOawlyA8IHRvbmNoaWtpXCA7Civlm73os4ogPCBrb2t1em9rdVwgOwor5aSa5pWw5YWaIDwgdGFzdXV0b3VcIDsKK+eCuea7hSA8IHRlbm1ldHN1XCA7Civmv4Dos54gPCBnZWtpc2hvdVwgOwor5o6h5rK55qipIDwgc2FpeXVrZW5cIDsKK+adpeS4lue0gCA8IHJhaXNlaWtpXCA7CivpmpTlo4EgPCBrYWt1aGVraVwgOwor5bGx5rC055S7IDwgc2Fuc3VpZ2FcIDsKK+aOg+mZpOS6uiA8IHNvdWppbmluXCA7CivmhI/lkbPpg6jploAgPCBpbWlidW1vblwgOwor5LiA562J5ZywIDwgaXR0b3VjaGlcIDsKK+eojuWLmeWumCA8IHplaW11a2FuXCA7CivnnIvorbfkurogPCBrYW5nb25pblwgOwor5Y2K5YiH56ymIDwgaGFua2lwcHVcIDsKK+Wcp+eAmOWZqCA8IGF0c3Vyb2tpXCA7Civnt5HlnLAgPCByeW9rdWNoaVwgOwor5Z+65rqW5rOVIDwga2lqdW5ob3VcIDsKK+evgOmbuyA8IHNldHN1ZGVuXCA7Civlj5forJvogIUgPCBqdWtvdXNoYVwgOwor5ris6Led5YSAIDwgc29ra3lvZ2lcIDsKK+eymOeymCA8IG5lYmFuZWJhXCA7Civlhrflh43mqZ8gPCByZWl0b3VraVwgOwor6Yu4IDwgbm9rb2dpcmlcIDsKK+etiei3nemboiA8IHRvdWt5b3JpXCA7Civngo7nhrEgPCBlbicnbmV0c3VcIDsKK+WbveiosSA8IGt1bmltb3RvXCA7CivkuI3lkI3mlbAgPCBmdW1laXN1dVwgOwor6ZaL55m6IDwga2FpaGF0c3VcIDsKK+ippumBi+i7oiA8IHNoaXVudGVuXCA7Civnvqnli4flhbUgPCBnaXl1dWhlaVwgOwor6Kaq55S76Z2iIDwgb3lhZ2FtZW5cIDsKK+aLkuWQpuaoqSA8IGt5b2hpa2VuXCA7Civkuoznlarnt5ogPCBuaWJhbnNlblwgOwor5Za25qWt6LK7IDwgZWlneW91aGlcIDsKK+ebuOS8vOW9oiA8IHNvdWppa2VpXCA7Civnvbnngb3msJEgPCByaXNhaW1pblwgOwor5a+E55Sf5pyoIDwgeWFkb3JpZ2lcIDsKK+imquaXjyA8IHNoaW56b2t1XCA7CivngavolqzluqsgPCBrYXlha3Vrb1wgOwor6LWk6aCt5be+IDwgYWthenVraW5cIDsKK+icpeictOW6pyA8IHRva2FnZXphXCA7CivorabloLHpn7MgPCBrZWlob3VvblwgOwor57KJ57KJIDwga29uYWdvbmFcIDsKK+Wkp+icpeictCA8IG9vdG9rYWdlXCA7Civpm4fkurogPCB5YXRvaW5pblwgOwor5pu055Sf5pyfIDwga291c2Vpa2lcIDsKK+ioreWVjyA8IHNldHN1bW9uXCA7CivlnJ/lt6booZvploAgPCBkb3phZW1vblwgOwor6Kaa5pu4IDwgb2JvZWdha2lcIDsKK+eWkeWVj+aWhyA8IGdpbW9uYnVuXCA7Civojbfngrrmm78gPCBuaWdhd2FzZVwgOwor57eo5YWlIDwgaGVuJydueXV1XCA7Civmi5Lpo58gPCBreW9zaG9rdVwgOwor6IWO6IeT54KOIDwgamluem91ZW5cIDsKK+e0r+aciCA8IHJ1aWdldHN1XCA7CivlnoLnm7QgPCBzdWljaG9rdVwgOwor5a+E6LSI6ICFIDwga2l6b3VzaGFcIDsKK+WutuW6reWGhSA8IGthdGVpbmFpXCA7CivntIXmrrsgPCBiZW5pZ2FyYVwgOwor6JC96Kqe5a62IDwgcmFrdWdva2FcIDsKK+eEoeevgOaTjSA8IG11c2Vzc291XCA7Civop5LlupcgPCBrYWRvbWlzZVwgOwor57e05LmzIDwgcmVuJydueXV1XCA7CivlrrnnlpHogIUgPCB5b3VnaXNoYVwgOwor57Gz57OgIDwga29tZW51a2FcIDsKK+WxlemWi+WbsyA8IHRlbmthaXp1XCA7Civnp4HnlJ/lhZAgPCBzaGlzZWlqaVwgOwor6Lq+IDwgc2hpdHN1a2VcIDsKK+e3j+WKmyA8IHNvdXJ5b2t1XCA7CivlpKfmiYvnrYsgPCBvb3Rlc3VqaVwgOwor57Sv5pelIDwgcnVpaml0c3VcIDsKK+WFrOWumuS+oSA8IGtvdXRlaWthXCA7CivmsJfliIblsYsgPCBraWJ1bicneWFcIDsKK+WcqOiBtyA8IHphaXNob2t1XCA7Civln4vmsqEgPCBtYWlib3RzdVwgOwor5LiA562J5YW1IDwgaXR0b3VoZWlcIDsKK+S4i+awtOeuoSA8IGdlc3Vpa2FuXCA7CivmlbTmlbDmr5QgPCBzZWlzdXVoaVwgOwor57KY552AIDwgbmVuY2hha3VcIDsKK+eznua6nCA8IGt1c29kYW1lXCA7Civnr4npgKAgPCBjaGlrdXpvdVwgOwor56S+5YuZ5omAIDwgc2hhbXVzaG9cIDsKK+inpuWqkiA8IHNob2t1YmFpXCA7Civpq5jlsaTpm7IgPCBrb3Vzb3V1blwgOwor5bi45aWX6KqeIDwgam91dG91Z29cIDsKK+iIueWkluapnyA8IHNlbmdhaWtpXCA7CivpmorliJcgPCB0YWlyZXRzdVwgOwor5Y+M5pqX6LuKIDwgc291YW5zaGFcIDsKK+e0ouaVtSA8IHNha3V0ZWtpXCA7Civml4XlrqLmqZ8gPCByeW9rYWtraVwgOwor5aKX5Yi3IDwgem91c2F0c3VcIDsKK+e3keS+vyA8IHJ5b2t1YmVuXCA7Civmva7otrMgPCBzaGlvYXNoaVwgOwor6Zay5q20IDwgZXRzdXJla2lcIDsKK+mBi+WWtuiAhSA8IHVuJydlaXNoYVwgOwor5oGj5oSP55qEIDwgc2hpaXRla2lcIDsKK+e0jeacrSA8IG5vdXNhdHN1XCA7CivnoLTlpKnojZIgPCBoYXRlbmtvdVwgOwor54ax5biv5aScIDwgbmV0dGFpeWFcIDsKK+mBlOaIkOW6piA8IHRhc3NlaWRvXCA7CivlpJrop5LlvaIgPCB0YWtha2tlaVwgOwor5oyv6KKWIDwgZnVyaXNvZGVcIDsKK+ezn+axgSA8IGthc3VqaXJ1XCA7CivlhaXkvJrmqKkgPCBpcmlhaWtlblwgOwor5Y2D6JGJ55yMIDwgY2hpYmFrZW5cIDsKK+S6lOaciOmbqCA8IHNhbWlkYXJlXCA7CivmupbkvJrlk6EgPCBqdW5rYWlpblwgOwor6Ku6IDwga290b3dhemFcIDsKK+e0hOadnyA8IHlha3Vzb2t1XCA7CivmsLTmm5zml6UgPCBzdWl5b3ViaVwgOwor5riH5rC05pyfIDwga2Fzc3Vpa2lcIDsKK+aKkemssSA8IHlva3V1dHN1XCA7Civnq7bppqzloLQgPCBrZWliYWpvdVwgOwor5oyH6LKrIDwgeXViaW51a2lcIDsKK+mzqeWwj+WxiyA8IGhhdG9nb3lhXCA7Civmv4Doh60gPCBnZWtpc2h1dVwgOwor5LiN5q2j6KaWIDwgZnVzZWlzaGlcIDsKK+imi+aJgCA8IG1pZG9rb3JvXCA7Civlm5vljYrmnJ8gPCBzaGloYW5raVwgOwor57KX546HIDwgYXJhcml0c3VcIDsKK+S9nOeUqOeCuSA8IHNheW91dGVuXCA7CivpgYrlnJLlnLAgPCB5dXVlbmNoaVwgOwor6LuM6YGT6Ii5IDwga2lkb3VzZW5cIDsKK+W8geeQhuWjqyA8IGJlbnJpc2hpXCA7CivntYLluZUgPCBzaHV1bWFrdVwgOwor6KWy5pKDIDwgc2h1dWdla2lcIDsKK+m6u+mFlOmKgyA8IG1hc3VpanV1XCA7CivopIwgPCBmdW5kb3NoaVwgOwor5pyo6J665a2QIDwgbW9rdW5lamlcIDsKK+e1kOWxgCA8IGtla2t5b2t1XCA7CivmranmlbDoqIggPCBob3N1dWtlaVwgOwor5Li76aGM5q2MIDwgc2h1ZGFpa2FcIDsKK+eti+mqqCA8IHN1amlib25lXCA7CivmraPkvJrlk6EgPCBzZWlrYWlpblwgOwor5b6u5YiG5rOVIDwgYmlidW5ob3VcIDsKK+WLleWToeS7pCA8IGRvdWlucmVpXCA7CivoprPlrqIgPCBrYW5reWFrdVwgOwor5o6l552AIDwgc2V0Y2hha3VcIDsKK+mdkueTpuWPsCA8IHNlaWdhZGFpXCA7CivpmaPliJcgPCBqaW5yZXRzdVwgOwor5rih6Ii55aC0IDwgdG9zZW5qb3VcIDsKK+Wcn+ethiA8IHRzdWt1c2hpXCA7CivnspvnhLYgPCBzaHVrdXplblwgOwor5oSP6K2Y5LiLIDwgaXNoaWtpa2FcIDsKK+e0sOW8lSA8IGhvc29iaWtpXCA7CivopqrlsYAgPCBveWFreW9rdVwgOwor5L+d6K235Zu9IDwgaG9nb2tva3VcIDsKK+WQjOaAp+aEmyA8IGRvdXNlaWFpXCA7CivmsrnlnKflmaggPCB5dWF0c3VraVwgOwor54eV6Z2S5ouzIDwgZW5zZWlrZW5cIDsKK+W5vOW5tOacnyA8IHlvdW5lbmtpXCA7Civosaroj6/niYggPCBnb3VrYWJhblwgOwor6KGo6Iq4IDwgb21vdGVnZWlcIDsKK+WMu+WOn+eXhSA8IGlnZW5ieW91XCA7Civpm7voqbHnt5ogPCBkZW53YXNlblwgOwor5Ya35YeN5bqrIDwgcmVpdG91a29cIDsKK+mChOS7mOeojiA8IGthbnB1emVpXCA7CivlvIHorbfogIUgPCBiZW5nb3NoYVwgOwor6KOF552AIDwgc291Y2hha3VcIDsKK+mbu+ipsee2siA8IGRlbndhbW91XCA7CivnmbvlsbHpgZMgPCB0b3phbmRvdVwgOwor6JukIDwgaGFtYWd1cmlcIDsKK+a/g+e4riA8IG5vdXNodWt1XCA7CivmhI/lkbPljp/nkIYgPCBpbWlnZW5yaVwgOwor5o+Q54GvIDwgY2hvdWNoaW5cIDsKK+mYv+aIv+mzpSA8IGFob3Vkb3JpXCA7CivkuojlgpnnmoQgPCB5b2JpdGVraVwgOwor6KOP55S6IDwgdXJhbWFjaGlcIDsKK+Wcn+elniA8IHVjaGlnYW1pXCA7CivmibbliqnmlpkgPCBmdWpvcnlvdVwgOwor5aCA5bedIDwgaG9yaWthd2FcIDsKK+eMv+efpeaBtSA8IHNhcnVkamllXCA7CivlnLDolLXpoZQgPCBqaXpvdWdhb1wgOwor57W25ZG9IDwgemV0c3VtZWlcIDsKK+mZi+WKoyA8IHJvdXJldHN1XCA7CivkvZzmpa3loLQgPCBzYWd5b3ViYVwgOwor562G6aCGIDwgaGl0c3VqdW5cIDsKK+epuuebuOWgtCA8IGt1dXNvdWJhXCA7CivoorTnnYAgPCBoYWthbWFnaVwgOwor5Zu957GNIDwga29rdXNla2lcIDsKK+aMveiCiSA8IGhpa2luaWt1XCA7Civmt7flkIjoqp4gPCBrb25nb3Vnb1wgOwor5aal5Y2U5qGIIDwgZGFreW91YW5cIDsKK+e0sOWvhiA8IHNhaW1pdHN1XCA7CivplpPmn4QgPCBhaWRhZ2FyYVwgOwor54Sh5oq15oqXIDwgbXV0ZWlrb3VcIDsKK+aSg+WinCA8IGdla2l0c3VpXCA7CivokYnnr4DngrkgPCBoYXNldHRlblwgOwor5LuW5YuV6KmeIDwgdGFkb3VzaGlcIDsKK+aYoOeUu+eLgiA8IGVpZ2FreW91XCA7Civlm73nrZYgPCBrb2t1c2FrdVwgOwor5rOV6I+v57WMIDwgaG9rZWt5b3VcIDsKK+ethumZoyA8IGhpdHN1amluXCA7CivphaLmlpnnkIYgPCBzdXJ5b3VyaVwgOwor5pS/5bqc57GzIDwgc2VpZnVtYWlcIDsKK+e1kOWboyA8IGtldHN1ZGFuXCA7CivonqLpm6ogPCBrZWlzZXRzdVwgOwor5aW957WQ5p6cIDwga291a2Vra2FcIDsKK+a0u+aAp+WMliA8IGthc3NlaWthXCA7CivliqnoqIDogIUgPCBqb2dvbnNoYVwgOwor6KOP5Y2D5a62IDwgdXJhc2Vua2VcIDsKK+iIjuWIqeWhlCA8IHNoYXJpdG91XCA7CivonbbprqsgPCBjaG91emFtZVwgOwor5pCm5omLIDwga2FyYW1ldGVcIDsKK+S4jeelneWEgCA8IGJ1c2h1dWdpXCA7Civlm6PntZAgPCBkYW5rZXRzdVwgOwor6YGO5rih55qEIDwga2F0b3Rla2lcIDsKK+mZtuiKuOWutiA8IHRvdWdlaWthXCA7CivntJnlsZEgPCBrYW1pa3V6dVwgOwor5L2c5qWt5ZOhIDwgc2FneW91aW5cIDsKK+ihgOiJsiA8IGtlc3Nob2t1XCA7CivlpJrmkanlt50gPCB0YW1hZ2F3YVwgOwor5b6u6Ium56yRIDwgYmlrdXNob3VcIDsKK+asuueenuiAhSA8IGdpbWFuc2hhXCA7CivploDmnK0gPCBtb25zYXRzdVwgOwor56uL5rOV5bqcIDwgcmlwcG91ZnVcIDsKK+iiq+eBveWcsCA8IGhpc2FpY2hpXCA7CivnjJvmiZPogIUgPCBtb3VkYXNoYVwgOwor57W25YCrIDwgemV0c3VyaW5cIDsKK+Wei+aeoCA8IGthdGF3YWt1XCA7CivkuI3npaXkuosgPCBmdXNob3VqaVwgOwor57WQ5p6c6KuWIDwga2Vra2Fyb25cIDsKK+mXh+W4giA8IHlhbWlpY2hpXCA7Civono3pm6ogPCB5dXVzZXRzdVwgOwor57CS56uLIDwgc2Fucml0c3VcIDsKK+S4i+awtOa6nSA8IGdlc3Vpa291XCA7CivmsLTpoqjlkYIgPCBtaXp1YnVyb1wgOwor5pa55L2N6KeSIDwgaG91aWtha3VcIDsKK+mYsuWhteedgCA8IGJvdWppbmdpXCA7Civml6Loppbmg7MgPCBraXNoaWthblwgOwor5Zyw54axIDwgY2hpbmV0c3VcIDsKK+iBviA8IG1pbWlzaGlpXCA7Civlj6Poqp7kvZMgPCBrb3Vnb3RhaVwgOwor5bm56YOo5LyaIDwga2FuYnVrYWlcIDsKK+S6pOmam+iyuyA8IGtvdXNhaWhpXCA7CivnrYvph5EgPCBzdWppZ2FuZVwgOwor5q2m5aOr6YGTIDwgYnVzaGlkb3VcIDsKK+mtlOaWuemZoyA8IG1haG91amluXCA7CivnrpfooZMgPCBzYW5qdXRzdVwgOwor6JGh6JCE6YWSIDwgYnVkb3VzaHVcIDsKK+mVt+aXhSA8IG5hZ2F0YWJpXCA7Civlj4zlrZDluqcgPCBmdXRhZ296YVwgOwor6ISx5rC05qmfIDwgZGFzc3Vpa2lcIDsKK+eBq+WPo+WOnyA8IGtha291Z2VuXCA7CivkvY7mrKHlhYMgPCB0ZWlqaWdlblwgOwor6Ziy5Lq6IDwgc2FraW1vcmlcIDsKK+WOs+WGrOacnyA8IGdlbnRvdWtpXCA7CivkuI3pgIDou6IgPCBmdXRhaXRlblwgOwor6J+76JyCIDwgYXJpYmFjaGlcIDsKK+aJi+Wcn+eUoyA8IHRlbWl5YWdlXCA7CivljbHpmbroppYgPCBraWtlbnNoaVwgOwor6KGd56uLIDwgdHN1aXRhdGVcIDsKK+iInui4iuWboyA8IGJ1dG91ZGFuXCA7CivkuI3msbrlrpogPCBmdWtldHRlaVwgOwor5Zue5biw57eaIDwga2Fpa2lzZW5cIDsKK+e2tCA8IHRzdWR6dXJpXCA7CivljLrmsJHnqI4gPCBrdW1pbnplaVwgOwor5L2V55Wq55uuIDwgbmFuYmFubWVcIDsKK+ewoeeVpSA8IGthbnJ5YWt1XCA7CivohLHmsJfmsLQgPCBkYWtraXN1aVwgOwor5YiR5YuZ5omAIDwga2VpbXVzaG9cIDsKK+WBpeWVluWutiA8IGtlbnRhbmthXCA7CivnoLTlo4rogIUgPCBoYWthaXNoYVwgOwor6Ieq5oSP6K2YIDwgamlpc2hpa2lcIDsKK+S4g+WNgei3ryA8IG5hbmFzb2ppXCA7CivoprPoh6rlnKggPCBrYW5qaXphaVwgOwor6YGg5b+D5qmfIDwgZW5zaGlua2lcIDsKK+aNqOeMqyA8IHN1dGVuZWtvXCA7CivmnLHljbDoiLkgPCBzaHVpbnNlblwgOwor5rSX5r+v5qmfIDwgc2VudGFra2lcIDsKK+S4jeWLleeUoyA8IGZ1ZG91c2FuXCA7Civon4DosLcgPCBrb21la2FtaVwgOwor5Zm05rCX5a2UIDwgZnVua2lrb3VcIDsKK+ifr+iZqyA8IGd5b3VjaHV1XCA7CivonablpLfmnb4gPCBlem9tYXRzdVwgOwor6ay85YiR5LqLIDwgb25pa2VpamlcIDsKK+aEn+WYhuespiA8IGthbnRhbmZ1XCA7Civms5XljLvlraYgPCBob3VpZ2FrdVwgOwor57KJ5pyrIDwgZnVubWF0c3VcIDsKK+evgSA8IHRha2FtdXJhXCA7Civln5LlpJYgPCByYWNoaWdhaVwgOwor6bOl5bCP5bGLIDwgdG9yaWdveWFcIDsKK+WdquaVsCA8IHRzdWJvc3V1XCA7CivnrY0gPCB0YWtlbm9rb1wgOwor6Ieq5Za25qWtIDwgamllaWd5b3VcIDsKK+eznuWwvyA8IGZ1bicnbnlvdVwgOwor6KGo55m9IDwgaHlvdWhha3VcIDsKK+eyvumMrOaJgCA8IHNlaXJlbmpvXCA7Civlm5vnmb4gPCB5b25oeWFrdVwgOwor57Sw5YilIDwgc2FpYmV0c3VcIDsKK+aJi+mPoSA8IHRla2FnYW1pXCA7Civpu4Toj5bokrIgPCBraXNob3VidVwgOwor5Lqc5aSn6Zm4IDwgYXRhaXJpa3VcIDsKK+WCmeiAg+ashCA8IGJpa291cmFuXCA7CivooI/ogqEgPCBnYW5pbWF0YVwgOwor5aCA5YmyIDwgaG9yaXdhcmlcIDsKK+eJh+aJi+mWkyA8IGthdGF0ZW1hXCA7CivkurrplpPlkbMgPCBuaW5nZW5taVwgOwor6Zai5a6IIDwgc2VraW1vcmlcIDsKK+eEoeaEj+itmCA8IG11aXNoaWtpXCA7CivmipXos4flrrYgPCB0b3VzaGlrYVwgOwor5LiL5rC05p2/IDwgZ2VzdWlpdGFcIDsKK+ihgOeojiA8IGtldHN1emVpXCA7CivppqzouYTlvaIgPCBiYXRlaWtlaVwgOwor5YWo6Z+z56ymIDwgemVuJydvbnB1XCA7Civln7fli5kgPCBzaGl0c3VtdVwgOwor5o2V54mpIDwgdG9yaW1vbm9cIDsKK+aIkOmmmSA8IG5hcmlreW91XCA7Civpq5jovJ3luqYgPCBrb3VraWRvdVwgOwor57Gz5p2+IDwgYmVpbWF0c3VcIDsKK+evgOezuCA8IGZ1c2hpaXRvXCA7CivkuI3lj6/kvrUgPCBmdWthc2hpblwgOwor6buE5Y+j5YWQIDwga291a291amlcIDsKK+WIhuenkeS8miA8IGJ1bmtha2FpXCA7Civnr4DnsbMgPCBzZXRzdW1haVwgOwor6JyY6Jub6IacIDwga3Vtb21ha3VcIDsKK+S6i+alreWutiA8IGppZ3lvdWthXCA7Civmib/oq74gPCBzaG91ZGFrdVwgOwor5YWl5Lya5ZywIDwgaXJpYWljaGlcIDsKK+ethuirhyA8IGhpdHN1ZGFuXCA7Civlm7Pmm7jppKggPCB0b3Nob2thblwgOwor6ZaL5bGAIDwga2Fpa3lva3VcIDsKK+ijveeJiOaJgCA8IHNlaWhhbmpvXCA7CivmnbHlpKflr7ogPCB0b3VkYWlqaVwgOwor6Y6M6aaWIDwga2FtYWt1YmlcIDsKK+eri+mjnyA8IHJpc3Nob2t1XCA7CivkuK3kvY3mlbAgPCBjaHV1aXN1dVwgOwor6KGG55uuIDwgc2h1dW1va3VcIDsKK+ethuinpiA8IGhpc3Nob2t1XCA7Civlj4Los4DogIUgPCBzYW5nYXNoYVwgOwor5om55YeG5pu4IDwgaGlqdW5zaG9cIDsKK+WeguW5lSA8IHRhcmVtYWt1XCA7Civnq4vpoZggPCByaXRzdWdhblwgOwor5pGC5YuVIDwgc2V0c3Vkb3VcIDsKK+iInui4j+S8miA8IGJ1dG91a2FpXCA7Civnsr7lr4YgPCBzZWltaXRzdVwgOwor55CG5YyW5a2mIDwgcmlrYWdha3VcIDsKK+evgOeptCA8IGZ1c2hpYW5hXCA7CivnmbvlsbHogIUgPCB0b3phbnNoYVwgOwor5Yqp5pWZ5o6IIDwgam9reW91anVcIDsKK+WIkeWLmeWumCA8IGtlaW11a2FuXCA7CivnmbggPCBtaXp1bm90b1wgOwor5pS/5YuZ5a6YIDwgc2VpbXVrYW5cIDsKK+evgOeojiA8IHNldHN1emVpXCA7CivmraPnvqnmhJ8gPCBzZWlnaWthblwgOwor57O45Y+jIDwgaXRvZ3VjaGlcIDsKK+WMu+iWrOWTgSA8IGl5YWt1aGluXCA7CivljJbnsqfnnYAgPCBrZXNob3VnaVwgOwor5omL6LuKIDwgdGVndXJ1bWFcIDsKK+eBq+mBlOejqCA8IGhpZGFydW1hXCA7CivplbflsLsgPCBuYWdhamlyaVwgOwor5r+B5rWBIDwgZGFrdXJ5dXVcIDsKK+e0oOS6uiA8IHNoaXJvdXRvXCA7CivkuI3lvrnlupUgPCBmdXRldHRlaVwgOwor5r+A5rWBIDwgZ2VraXJ5dXVcIDsKK+Wft+S6iyA8IHNoaXRzdWppXCA7CivnlZnlrojlroUgPCBydXN1dGFrdVwgOwor5omA6L2EIDwgc2hva2F0c3VcIDsKK+aLkue1tiA8IGt5b3pldHN1XCA7Civlh6HoqablkIggPCBib25zaGlhaVwgOwor5LiH5q2p6KiIIDwgbWFucG9rZWlcIDsKK+S6jOaemuiynSA8IG5pbWFpZ2FpXCA7CivmjpLml6UgPCBoYWluaWNoaVwgOwor55So5rC06LevIDwgeW91c3Vpcm9cIDsKK+ezu+WIlyA8IGtlaXJldHN1XCA7CivoobDmu4UgPCBzdWltZXRzdVwgOwor5pmC6KiI5bqXIDwgdG9rZWl0ZW5cIDsKK+WbuuWumuWtkCA8IGtvdGVpc2hpXCA7CivmnInnhZnngq0gPCB5dXVlbnRhblwgOwor6KOP6ay86ZaAIDwgdXJha2ltb25cIDsKK+aOoeaOmCA8IHNhaWt1dHN1XCA7CivlvqHmr43mp5ggPCBva2Fhc2FtYVwgOwor5Z+S5YaFIDwgcmFjaGluYWlcIDsKK+mBk+elluelniA8IGRvdXNvamluXCA7CivlnKjml6UgPCB6YWluaWNoaVwgOwor5ZCI5rOV5YyWIDwgZ291aG91a2FcIDsKK+a8geiJsiA8IGd5b3Nob2t1XCA7Civmi5nnrYYgPCBzZXBwaXRzdVwgOwor57SU5LiAIDwganVuJydpdHN1XCA7Civpppbpg73lnI8gPCBzaHV0b2tlblwgOwor5LiJ5q+b54yrIDwgbWlrZW5la29cIDsKK+aOouefpeapnyA8IHRhbmNoaWtpXCA7CivmrbvngavlsbEgPCBzaGlrYXphblwgOwor6Imy5qih5qeYIDwgaXJvbW95b3VcIDsKK+ezuOmbu+ipsSA8IGl0b2RlbndhXCA7Civph43lpKfljJYgPCBqdXVkYWlrYVwgOwor5pCs5YWlIDwgaGFuJydueXV1XCA7CivplqLlj5YgPCBzZWtpdG9yaVwgOwor5LiJ5q6155uuIDwgc2FuZGFubWVcIDsKK+elreWjh+W6pyA8IHNhaWRhbnphXCA7CivmkL7kubMgPCBzYWt1bnl1dVwgOwor54OP5bi95a2Q5ZCNIDwgZWJvc2hpbmFcIDsKK+a8q+ethiA8IG1hbnBpdHN1XCA7CivlhYTlvJ/lrZAgPCBhbmlkZXNoaVwgOwor6YGL5ZG96KuWIDwgdW5tZWlyb25cIDsKK+aZrumAmuenkSA8IGZ1dHN1dWthXCA7CivkuIrlj6Tlj7IgPCBqb3Vrb3NoaVwgOwor6aCQ6LKv6YeRIDwgeW9jaG9raW5cIDsKK+aKnOe+pCA8IGJhdHN1Z3VuXCA7CivlpqXlvZPmgKcgPCBkYXRvdXNlaVwgOwor5Zu95p+EIDwga3VuaWdhcmFcIDsKK+iRoeiQhOiJsiA8IGJ1ZG91aXJvXCA7CivmjpLmsLTot68gPCBoYWlzdWlyb1wgOwor5qiq5pat6Z2iIDwgb3VkYW5tZW5cIDsKK+aVtOe1jOapnyA8IHNlaWtlaWtpXCA7CivmiYvooosgPCB0ZWJ1a3Vyb1wgOwor6Zaj5YOaIDwga2FrdXJ5b3VcIDsKK+ewoeS9k+WtlyA8IGthbnRhaWppXCA7CivpoqjpgqrmsJflkbMgPCBrYXplZ2ltaVwgOwor5Y+v5rq254mHIDwga2F5b3VoZW5cIDsKK+WEgOS7l+WFtSA8IGdpam91aGVpXCA7CivpmbjlsYvmoLkgPCByb2t1eWFuZVwgOwor57Gk5byVIDwga3VqaWJpa2lcIDsKK+W6p+irh+S8miA8IHphZGFua2FpXCA7CivluIbliY3oiLkgPCBob21hZXNlblwgOwor5oyH6Kmx5rOVIDwgc2hpd2Fob3VcIDsKK+WBvemAoOWTgSA8IGdpem91aGluXCA7CivnrYvogokgPCBraW4nJ25pa3VcIDsKK+S4luW4r+aVsCA8IHNldGFpc3V1XCA7CivkuIDlkajmnJ8gPCBpc3NodXVraVwgOwor5Lit6ICz54KOIDwgY2h1dWppZW5cIDsKK+eqk+mamyA8IG1hZG9naXdhXCA7Civlr4zlo6vpgJogPCBmdWppdHN1dVwgOwor5a625bGL56iOIDwga2Fva3V6ZWlcIDsKK+mWk+WFqyA8IGthbnBhY2hpXCA7CivnrLnoiJ8gPCBzYXNhYnVuZVwgOwor5qmf5YuV6ZqKIDwga2lkb3V0YWlcIDsKK+mYsueBq+e3miA8IGJvdWthc2VuXCA7CivmlZnorbfpmaIgPCBreW91Z29pblwgOwor5o6l5bK4IDwgc2V0c3VnYW5cIDsKK+aIr+iogCA8IHRhd2Fnb3RvXCA7CivonrrlrZDlsbEgPCBuZWppeWFtYVwgOwor5Lmz5YWQ6ZmiIDwgbnl1dWppaW5cIDsKK+ihgOa2siA8IGtldHN1ZWtpXCA7CivohZXmmYLoqIggPCB1ZGVkb2tlaVwgOwor6KCP546JIDwga2FuaXRhbWFcIDsKK+ihgOa2mSA8IGtldHN1cnVpXCA7CivmiLjooosgPCB0b2J1a3Vyb1wgOwor5pyx5Y2w54q2IDwgc2h1aW5qb3VcIDsKK+aOqOWvnyA8IHN1aXNhdHN1XCA7CivnnJ/mhI/nvqkgPCBzaGluJydpZ2lcIDsKK+mBiuaKgOWgtCA8IHl1dWdpam91XCA7Civli6flt6XloLQgPCBrYW5rb3ViYVwgOwor5o6l5a6iIDwgc2Vra3lha3VcIDsKK+S4ieWGoOmmrCA8IHNhbmthbmJhXCA7Civll4XoppogPCBreXV1a2FrdVwgOwor5aSp5omN5YWQIDwgdGVuc2FpamlcIDsKK+mAhuiMguacqCA8IHNha2Ftb2dpXCA7Civmipjnr4AgPCBvcmlmdXNoaVwgOwor6KOc5YWF5YW1IDwgaG9qdXVoZWlcIDsKK+W7uuitsOiAhSA8IGtlbmdpc2hhXCA7CivluLjlpJznga8gPCBqb3V5YXRvdVwgOwor5r2k5ruRIDwganVua2F0c3VcIDsKK+mOjOi2syA8IGthbWFhc2hpXCA7CivojYnlsYvmoLkgPCBrdXNheWFuZVwgOwor5r2u5rWBIDwgY2hvdXJ5dXVcIDsKK+Wbm+aciCA8IHNoaWdhdHN1XCA7CivlmLLnrJEgPCBjaG91c2hvdVwgOwor5qip5aiB6ICFIDwga2VuJydpc2hhXCA7Civnqq7ov70gPCBreXV1dHN1aVwgOwor56qu6L+rIDwga3l1dWhha3VcIDsKK+aPoeWKmyA8IGFrdXJ5b2t1XCA7CivnoJXlsqnmqZ8gPCBzYWlnYW5raVwgOwor6JGh6JCE57OWIDwgYnVkb3V0b3VcIDsKK+eZveS6nOmkqCA8IGhha3Vha2FuXCA7Civmt7flkozmgKcgPCBrb253YXNlaVwgOwor5bem6aGn5Y+z55yEIDwgc2Frb3ViZW5cIDsKK+WMlueyp+auvyA8IGtld2FpZGVuXCA7CivpjZvpiYQgPCB0YW50ZXRzdVwgOwor5o+a5YqbIDwgeW91cnlva3VcIDsKK+WNg+WIhuavlCA8IHNlbmJ1bmhpXCA7Civnq7nolq4gPCB0YWtleWFidVwgOwor5omN6ImyIDwgc2Fpc2hva3VcIDsKK+aZguioiOWPsCA8IHRva2VpZGFpXCA7CivlkIzmr43lp4kgPCBkb3Vib3NoaVwgOwor56uL6KuWIDwgcml0c3Vyb25cIDsKK+exs+WdqiA8IGJlaXRzdWJvXCA7CivmpaAgPCBrdXN1bm9raVwgOwor562G566xIDwgZnVkZWJha29cIDsKK+a4rOmHjyA8IHNva3VyeW91XCA7CivnrYnnrYkgPCBuYWRvbmFkb1wgOwor56uL6KiAIDwgcml0c3VnZW5cIDsKK+m7hOawtOS7mSA8IGtpc3Vpc2VuXCA7CivnspvlhZogPCBzaHVrdXRvdVwgOwor5byx5ZGz5ZmMIDwgeW93YW1pc29cIDsKK+ijuOWHuiA8IHJhc2h1dHN1XCA7CivpjYvph5wgPCBuYWJla2FtYVwgOwor55WZ5a6I5LitIDwgcnVzdWNodXVcIDsKK+ihneaSgyA8IHNob3VnZWtpXCA7Civmt7fpm5EgPCBrb256YXRzdVwgOwor5bCP5YWQ56eRIDwgc2hvdW5pa2FcIDsKK+mVt+S5hSA8IGNob3VreXV1XCA7CivkuInljYHmiLggPCBzYW5qaWtrb1wgOwor6Zu76Zui5bGkIDwgZGVucmlzb3VcIDsKK+mrmOi4j+a0viA8IGtvdXRvdWhhXCA7CivnkIblt6Xns7sgPCByaWtvdWtlaVwgOwor54Sh56S86KybIDwgYnVyZWlrb3VcIDsKK+WcsOWigyA8IGRqaXpha2FpXCA7CivmjL/mipwgPCBzb3ViYXRzdVwgOwor5Luu5ZCN5paH5a2XIDwga2FuYW1vamlcIDsKK+S4jeWNgeWIhiA8IGZ1anV1YnVuXCA7Civlk7rkubPmnJ8gPCBob255dXVraVwgOwor55+z5rK5546LIDwgc2VraXl1b3VcIDsKK+iho+aJiyA8IGtvcm9tb2RlXCA7CivlvqHliKnnm4ogPCBnb3JpeWFrdVwgOwor5oqV5pu45a62IDwgdG91c2hva2FcIDsKK+mBuueVmeWTgSA8IGlyeXV1aGluXCA7Civom7jotrMgPCB0YWtvYXNoaVwgOwor6YG65Lyd55eFIDwgaWRlbmJ5b3VcIDsKK+aPmueCreapnyA8IHlvdXRhbmtpXCA7CivpnZ7lpInmj5sgPCBoaWhlbmthblwgOwor5pS55q2j5qGIIDwga2Fpc2VpYW5cIDsKK+mrmOmrmOW6piA8IGtvdWtvdWRvXCA7CivntYznlKPlqaYgPCBrZWlzYW5wdVwgOwor5o6l5ZCIIDwgc2V0c3Vnb3VcIDsKK+ijj+WPoyA8IHVyYWd1Y2hpXCA7CivmipHnlZkgPCB5b2t1cnl1dVwgOwor6LWk6KO46KO4IDwgc2VraXJhcmFcIDsKK+a3t+WQiOapnyA8IGtvbmdvdWtpXCA7Civmva7mmYIgPCBzaGlvZG9raVwgOwor5a+E6LSI5ZOBIDwga2l6b3VoaW5cIDsKK+a/g+WvhiA8IG5vdW1pdHN1XCA7CivlpJzooYzmgKcgPCB5YWtvdXNlaVwgOwor5YmN6KGb5rS+IDwgemVuJydlaWhhXCA7CivmnKrmsbrnrpcgPCBtaWtlc3NhblwgOwor5Zu95a2mIDwga29rdWdha3VcIDsKK+a8oOa8oCA8IGJha3ViYWt1XCA7Civmj4nkuosgPCBtb21lZ290b1wgOwor5Li76KaB6YOoIDwgc2h1eW91YnVcIDsKK+mBv+WvkuWcsCA8IGhpa2FuY2hpXCA7CivmsLTlnqLpm6IgPCBtaXp1Z29yaVwgOwor5aeU6KiX55SfIDwgaXRha3VzZWlcIDsKK+itpuWgseapnyA8IGtlaWhvdWtpXCA7CivmuKnnvajms5UgPCBvbicnYW5wb3VcIDsKK+WvvuW/nOeJiCA8IHRhaW91YmFuXCA7CivlloflmJvmlZkgPCByYW1ha3lvdVwgOwor6YG655WZ5YiGIDwgaXJ5dXVidW5cIDsKK+aYhuW4g+iMtiA8IGtvbmJ1Y2hhXCA7CivpvLvpq60gPCBoYW5haGlnZVwgOwor5LmX566X5ZmoIDwgam91emFua2lcIDsKK+eri+iRtSA8IHRhY2hpYW9pXCA7CivnsonkubMgPCBmdW4nJ255dXVcIDsKK+m8u+mrmCA8IGhhbmF0YWthXCA7CivokazlhIDnpL4gPCBzb3VnaXNoYVwgOwor5Yik5qSc5LqLIDwgaGFua2VuamlcIDsKK+WWgOihgCA8IGtha2tldHN1XCA7CivnibnnlbDngrkgPCB0b2t1aXRlblwgOwor5L+d6Zm65bGLIDwgaG9rZW4nJ3lhXCA7CivmipXniakgPCBuYWdlbW9ub1wgOwor5Zyw5Y21IDwgaml0YW1hZ29cIDsKK+S4jemDveWQiCA8IGZ1dHN1Z291XCA7CivmiYDmjIHph5EgPCBzaG9qaWtpblwgOwor6JmO5rKz6LGaIDwgdG9yYWZ1Z3VcIDsKK+aKgOiDveiAhSA8IGdpbm91c2hhXCA7CivmipforbDmlocgPCBrb3VnaWJ1blwgOwor6KKW5Z6jIDwgc29kZWdha2lcIDsKK+aXouijveWTgSA8IGtpc2VpaGluXCA7Civln7rnpI7nmoQgPCBraXNvdGVraVwgOwor5rex6YWSIDwgZnVrYXpha2VcIDsKK+iynee0sOW3pSA8IGthaXphaWt1XCA7Civpu5Lnmb7lkIggPCBrdXJveXVyaVwgOwor56m66LGGIDwgc29yYW1hbWVcIDsKK+iMtuiPk+WtkCA8IGNoYWdhc2hpXCA7CivpvLvpoqggPCBoYW5ha2F6ZVwgOwor57Gz5LuPIDwgYmVpZnV0c3VcIDsKK+WQpuWumuaWhyA8IGhpdGVpYnVuXCA7CivmjZXlpLEgPCBob3NoaXRzdVwgOwor5oqE54mpIDwgc2hvdW1vbm9cIDsKK+erueewoSA8IGNoaWt1a2FuXCA7CivmirnmrrogPCBtYXNzYXRzdVwgOwor5byB6K235aOrIDwgYmVuZ29zaGlcIDsKK+aJi+ijj+WJoyA8IHNodXJpa2VuXCA7CivpioDmmYLoqIggPCBnaW5kb2tlaVwgOwor5LiJ6YCj56ymIDwgc2FucmVucHVcIDsKK+ijj+S7mCA8IHVyYWR6dWtlXCA7CivllJDpi6QgPCBrYXJhc3VraVwgOwor5Zyn5Ye6IDwgYXNzaHV0c3VcIDsKK+eri+iEmiA8IHJpa2t5YWt1XCA7Civnq7nnroYgPCB0YWtlYmVyYVwgOwor5Zu95Zu9IDwga3VuaWd1bmlcIDsKK+ewkuWlqiA8IHNhbmRhdHN1XCA7CivlnYfkuIAgPCBraW4nJ2l0c3VcIDsKK+a8j+azhCA8IHJvdXNldHN1XCA7CivpvLvpnakgPCBoYW5hZ2F3YVwgOwor56m66KqsIDwga3V1c2V0c3VcIDsKK+Wwj+WIh+WtkCA8IGtva2lyaWtvXCA7CivmkK3kuZflk6EgPCB0b3Vqb3VpblwgOwor5LiW55WM6KazIDwgc2VrYWlrYW5cIDsKK+Wcp+WFpSA8IGF0c3VueXV1XCA7CivmjJnlvI8gPCBreW9zaGlraVwgOwor56m66KiAIDwgc29yYWdvdG9cIDsKK+WUkOmHkSA8IGthcmFrYW5lXCA7CivlgInluqvnlaogPCBzb3Vrb2JhblwgOwor6JmO6ayaIDwgdG9yYWhpZ2VcIDsKK+a6tueZuiA8IHlvdWhhdHN1XCA7Civmu7Tmu7QgPCB0ZWtpdGVraVwgOwor5ryC5rWBIDwgaHlvdXJ5dXVcIDsKK+mPkeefoiA8IGthYnVyYXlhXCA7Civmlofnp5Hns7sgPCBidW5rYWtlaVwgOwor6IO95paH5a62IDwgbm91YnVua2FcIDsKK+W8geitt+WboyA8IGJlbmdvZGFuXCA7Civlt6sgPCBrYW4nJ25hZ2lcIDsKK+mKgOS4lueVjCA8IGdpbnNla2FpXCA7Civmi5nmlocgPCBzZXRzdWJ1blwgOwor6J6i54GrIDwgaG90YXJ1YmlcIDsKK+WMiOeJmeWIqSA8IGhhbmdhcmlpXCA7CivmiY3nlaUgPCBzYWlyeWFrdVwgOwor6YqA6bygIDwgZ2luJyduZXp1XCA7CivnjL/nnJ/kvLwgPCBzYXJ1bWFuZVwgOwor54yq5Y+j5omNIDwgY2hva296YWlcIDsKK+mLs+eJqeW4qyA8IGltb25vc2hpXCA7CivnhKHpiYTnoLIgPCBtdXRlcHBvdVwgOwor5ZCM5YiG5q+NIDwgZG91YnVuYm9cIDsKK+WbveWOnyA8IGt1bmliYXJhXCA7CivmnKrmtojljJYgPCBtaXNob3VrYVwgOwor6Jue6J2TIDwgbmFtZWt1amlcIDsKK+epuuidiSA8IHV0c3VzZW1pXCA7Civnr4nluq0gPCBjaGlrdXRlaVwgOwor56+k5a2mIDwgdG9rdWdha3VcIDsKK+W6g+adseiqniA8IGthbnRvbmdvXCA7Civlr78gPCBrb3RvYnVraVwgOwor5LiA56eB5Lq6IDwgaXNzaGlqaW5cIDsKK+iejeeGsSA8IHl1dW5ldHN1XCA7CivmvKLolLXoqp4gPCBrYW56b3Vnb1wgOwor5LqM5Lq655uuIDwgZnV0YXJpbWVcIDsKK+WvjOWjq+e1uSA8IGZ1amlnaW51XCA7CivogpvploDnp5EgPCBrb3Vtb25rYVwgOwor6Z2Z6Zu75rCXIDwgc2VpZGVua2lcIDsKK+mNi+iTiyA8IG5hYmVidXRhXCA7Civljp/li5XmqZ8gPCBnZW5kb3VraVwgOwor5Lm+6Ii55rigIDwga2FuZG9ra3VcIDsKK+m8k+WQueiAhSA8IGtvc3Vpc2hhXCA7CivlpKflkoznha4gPCB5YW1hdG9uaVwgOwor562G5rSXIDwgZnVkZWFyYWlcIDsKK+iMtumBk+WFtyA8IGNoYWRvdWd1XCA7Civlm7DljbQgPCBrb25reWFrdVwgOwor5oe457W2IDwga2VuemV0c3VcIDsKK+aOkuawl+euoSA8IGhhaWtpa2FuXCA7Civpu5Lpu7QgPCBrdXJva2FiaVwgOwor5b2T5LqL6ICFIDwgdG91amlzaGFcIDsKK+Wik+iqjOmKmCA8IGJvc2hpbWVpXCA7Civpu5LpuqYgPCBrdXJvbXVnaVwgOwor55+t5rC06LevIDwgdGFuc3Vpcm9cIDsKK+aIkOeoiyA8IG5hcnVob2RvXCA7CivllqvojLblupcgPCBraXNzYXRlblwgOwor5pmC6ZaT5bivIDwgamlrYW50YWlcIDsKK+eEoeawtOmFuCA8IG11c3Vpc2FuXCA7CivmiY3niakgPCBzYWlidXRzdVwgOwor6buS6be6IDwga3Vyb3NhZ2lcIDsKK+mJpOm8uyA8IGthZ2liYW5hXCA7CivnoLTpmLLms5UgPCBoYWJvdWhvdVwgOwor5re36KGAIDwga29ua2V0c3VcIDsKK+euseW6rSA8IGhha29uaXdhXCA7CivlkIjmrZPmnKggPCBuZW11bm9raVwgOwor5ouZ5oKqIDwgc2V0c3Vha3VcIDsKK+iBluatjOmaiiA8IHNlaWthdGFpXCA7Civpu5LptKggPCBrdXJvZ2Ftb1wgOwor6YqA6auqIDwgZ2lucGF0c3VcIDsKK+ibhuiZqyA8IHVqaW11c2hpXCA7CivljbDntJnnqI4gPCBpbnNoaXplaVwgOwor6KCN5bqnIDwgc2Fzb3JpemFcIDsKK+iiluS4iCA8IHNvZGV0YWtlXCA7CivmiKbnlaUgPCBzZW5yeWFrdVwgOwor5paH5oi/5YW3IDwgYnVuYm91Z3VcIDsKK+S/neeuoemHkSA8IGhva2Fua2luXCA7Civlm57li4UgPCBrYWljaG9rdVwgOwor5pyA5aSa5pWwIDwgc2FpdGFzdXVcIDsKK+S4jemAj+aYjiA8IGZ1dG91bWVpXCA7CivmoL3ln7nmiYAgPCBzYWliYWlqb1wgOwor5p6X5qqO6YWSIDwgcmluZ29zaHVcIDsKK+WbveS6uiA8IGt1bmliaXRvXCA7Civmr43ntLDog54gPCBib3NhaWJvdVwgOwor5aW95omT6ICFIDwga291ZGFzaGFcIDsKK+WGhuetkuW9oiA8IGVudG91a2VpXCA7CivmkYLplqLlrrYgPCBzZWtrYW5rZVwgOwor5q2j6KaP6LuNIDwgc2Vpa2lndW5cIDsKK+a1nOmiqCA8IGhhbWFrYXplXCA7CivluLjlpZflj6UgPCBqb3V0b3VrdVwgOwor56uq55C0IDwgdGF0ZWdvdG9cIDsKK+a4i+iMtiA8IHNoaWJ1Y2hhXCA7CivmnKrmsbrmuIggPCBtaWtlc3NhaVwgOwor6Jqw6JySIDwgZ2VqaWdlamlcIDsKK+e0jeaIuOiJsiA8IG5hbmRvaXJvXCA7Civmipfml6UgPCBrb3VuaWNoaVwgOwor6Z2e57ea5b2iIDwgaGlzZW5rZWlcIDsKK+miqOWRgumHnCA8IGZ1cm9nYW1hXCA7CivlvIHorbfkurogPCBiZW5nb25pblwgOwor5riL6ImyIDwgc2hpYnVpcm9cIDsKK+mOruWuiOW6nCA8IGNoaW5qdWZ1XCA7CivkuIDlvLXnvoUgPCBpdGNob3VyYVwgOwor5a2Q5Lya56S+IDwga29nYWlzaGFcIDsKK+S4jeWHjea4ryA8IGZ1dG91a291XCA7CivmtLvprZogPCBrYXRzdWd5b1wgOwor5Y215aGU5aC0IDwgcmFudG91YmFcIDsKK+S4reWkrumDqCA8IGNodXVvdWJ1XCA7CivkuI3lh43mtrIgPCBmdXRvdWVraVwgOwor5aSp56ek5bqnIDwgdGVuYmluemFcIDsKK+epuuiAsyA8IHNvcmFtaW1pXCA7CivljbHpmbrmgKcgPCBraWtlbnNlaVwgOwor5LiN5YeN5rW3IDwgZnV0b3VrYWlcIDsKK+Wkp+ecn+mdouebriA8IG9vbWFqaW1lXCA7CivnmbvlsbHluL0gPCB0b3phbmJvdVwgOwor6Yqt6YeRIDwgemVuaWthbmVcIDsKK+eFjuixhuiFkCA8IGlyaWRvdWZ1XCA7CivliLjlo7LmqZ8gPCBrZW5iYWlraVwgOwor5pmC6ZaT5aSWIDwgamlrYW5nYWlcIDsKK+aLneWvnyA8IGhhaXNhdHN1XCA7CivmsJflgJnluK8gPCBraWtvdXRhaVwgOwor5qW95Zmo5bqXIDwgZ2Fra2l0ZW5cIDsKK+aJv+acjSA8IHNob3VmdWt1XCA7CivmpJzpnZ7pgZXkvb8gPCBrZWJpaXNoaVwgOwor5oiq54S2IDwgc2V0c3V6ZW5cIDsKK+m+jeiInyA8IHJ5dXVzaHV1XCA7CivmnKzph5HluqsgPCBob25raW5rb1wgOwor6ZuE5byB5a62IDwgeXV1YmVua2FcIDsKK+S7mOW4r+eKryA8IGZ1dGFpaGFuXCA7Civopb/mtIvnooEgPCBzZWl5b3Vnb1wgOwor5oim5LqJ5b6MIDwgc2Vuc291Z29cIDsKK+aVj+iFleWutiA8IGJpbndhbmthXCA7CivkuK3ku6XkuIogPCBjaHV1aWpvdVwgOwor6auY5LiL6aeEIDwgdGFrYWdldGFcIDsKK+mdnuWjsuWTgSA8IGhpYmFpaGluXCA7Civmt7foibIgPCBrb25zaG9rdVwgOwor5L2V5Luj55uuIDwgbmFuZGFpbWVcIDsKK+mrmOaetue3miA8IGtvdWthc2VuXCA7CivmsLTpnaLkuIsgPCBzdWltZW5rYVwgOwor57K+5rK55omAIDwgc2VpeXVzaG9cIDsKK+adseilv+WxiyA8IHRvdXphaXlhXCA7CivmuqLmtYEgPCBpdHN1cnl1dVwgOwor6YqF54mI55S7IDwgZG91aGFuZ2FcIDsKK+aKleaKgCA8IG5hZ2V3YXphXCA7Civngorpo6/lmaggPCBzdWloYW5raVwgOwor5oiR54mpIDwgd2FnYW1vbm9cIDsKK+WFg+W4peW6nCA8IGdlbnN1aWZ1XCA7CivpvLvoqLEgPCBoYW5hbW90b1wgOwor6bOl5LmL5bejIDwgdG9yaW5vc3VcIDsKK+WMu+eZgui7iiA8IGlyeW91c2hhXCA7CivnibnnlbDmgKcgPCB0b2t1aXNlaVwgOwor5rqd5rOlIDwgZG9idWRvcm9cIDsKK+emhOmrmCA8IHJva3VkYWthXCA7Civlhqzoh7Pnt5ogPCB0b3VqaXNlblwgOwor56m/5a2U5qmfIDwgc2Vua291a2lcIDsKK+eEoeiTi+i7iiA8IG11Z2Fpc2hhXCA7Civmup3msLQgPCBkb2J1bWl6dVwgOwor56m657GkIDwga2FyYWt1amlcIDsKK+aKteaKl+WZqCA8IHRlaWtvdWtpXCA7CivokrjmsJfoiLkgPCBqb3VraXNlblwgOwor6Z2e6Kix5a65IDwgaGlreW95b3VcIDsKK+mBoOi/keazlSA8IGVua2luaG91XCA7CivpiYTpqqggPCB0ZWtrb3RzdVwgOwor5rmv54WZIDwgeXVrZW11cmlcIDsKK+a3oeiJsiA8IHRhbnNob2t1XCA7Civku67lrprms5UgPCBrYXRlaWhvdVwgOwor6KW/5rSL55S7IDwgc2VpeW91Z2FcIDsKK+engemJhCA8IHNoaXRldHN1XCA7CivpgZTno6jlv4wgPCBkYXJ1bWFraVwgOwor56eS6YCfIDwgYnlvdXNva3VcIDsKK+epuueusSA8IGthcmFiYWtvXCA7CivnqoHnq4sgPCB0b3R0YXRzdVwgOwor55Wz5oiQ6KqeIDwgam91c2VpZ29cIDsKK+aAquS6i+S7tiA8IGthaWppa2VuXCA7CivmiYDmjIHogIUgPCBzaG9qaXNoYVwgOwor5pOs5Lq65rOVIDwgZ2lqaW5ob3VcIDsKK+WUkOiNiSA8IGthcmFrdXNhXCA7CivmupblpKfmiYsgPCBqdW4nJ29vdGVcIDsKK+Wbnui7ouapnyA8IGthaXRlbmtpXCA7Civon7vloZogPCBhcmlkenVrYVwgOwor5r2u5YWIIDwgc2hpb3Nha2lcIDsKK+iZmuiqrCA8IGt5b3NldHN1XCA7CivooYDkvr8gPCBrZXRzdWJlblwgOwor5oim5rKhIDwgc2VuYm90c3VcIDsKK+WPr+WTgOebuCA8IGthd2Fpc291XCA7CivmjIflhYggPCB5dWJpc2FraVwgOwor6Yym57W1IDwgbmlzaGlraWVcIDsKK+S6pOmam+WutiA8IGtvdXNhaWthXCA7Civpm6LkubPmnJ8gPCByaW55dXVraVwgOwor56OB5oCn5bGkIDwgamlzZWlzb3VcIDsKK+i2iuWGrOmaiiA8IGV0dG91dGFpXCA7CivlvqHnhKHmspnmsbAgPCBnb2J1c2F0YVwgOwor5omL5p6VIDwgdGVtYWt1cmFcIDsKK+WPs+mhp+W3puechCA8IHVrb3NhYmVuXCA7CivorZzpnaLlj7AgPCBmdW1lbmRhaVwgOwor56eA6YC4IDwgc2h1dWl0c3VcIDsKK+S7ruWwj+WxiyA8IGthcmlnb3lhXCA7Civnm67oq5boposgPCBtb2t1cm9taVwgOwor56u55qeNIDwgdGFrZXlhcmlcIDsKK+a8lOeul+WtkCA8IGVuemFuc2hpXCA7Civpu5LpiYQgPCBrdXJvZ2FuZVwgOwor5pyJ6ZmQ5YCLIDwgeXV1Z2Vua29cIDsKK+aIuOmanOWtkCA8IHRvc2hvdWppXCA7Civlj6/pjZvmgKcgPCBrYXRhbnNlaVwgOwor5aSq6byT5YikIDwgdGFpa29iYW5cIDsKK+a1t+WdiuS4uyA8IHVtaWJvdXp1XCA7CivnrYnlvI8gPCB0b3VzaGlraVwgOwor6Jep6ZalIDwgaGFuYmF0c3VcIDsKK+a1gemHjyA8IHJ5dXVyeW91XCA7Civpu43prZrlrZAgPCBraWJpbmFnb1wgOwor56qB55m6IDwgdG9wcGF0c3VcIDsKK+mJpOmHnSA8IGthZ2liYXJpXCA7CivmipXlrr8gPCB0b3VzaHVrdVwgOwor5Za25p6X572yIDwgZWlyaW5zaG9cIDsKK+erueaelyA8IGNoaWt1cmluXCA7Civlm7rmnInlgKQgPCBrb3l1dWNoaVwgOwor5ZWT55m6IDwga2VpaGF0c3VcIDsKK+erueadkCA8IGNoaWt1emFpXCA7CivpgbrkvJ3lraYgPCBpZGVuZ2FrdVwgOwor6IKy56iu5omAIDwgaWt1c2h1am9cIDsKK+epuueZuiA8IGt1dWhhdHN1XCA7CivmiZXmi60gPCBmdXNzaG9rdVwgOwor6YeR6Y2N6YeRIDwga2lubWVra2lcIDsKK+elnumiqCA8IGthbWlrYXplXCA7CivmtYHpgJ8gPCByeXV1c29rdVwgOwor5rWB6YCaIDwgcnl1dXRzdXVcIDsKK+a7neW3nSA8IHRha2lnYXdhXCA7Civlj4LkuovlrpggPCBzYW5qaWthblwgOwor55u46KuH5omAIDwgc291ZGFuam9cIDsKK+eEoeeojuWTgSA8IG11emVpaGluXCA7CivnqYDnspIgPCBrb2t1cnl1dVwgOwor56uv5pyrIDwgdGFubWF0c3VcIDsKK+WUkOe0mSA8IGthcmFrYW1pXCA7Civlv5znrZTog70gPCBvdXRvdW5vdVwgOwor5qSc5ZWP5omAIDwga2VubW9uam9cIDsKK+WyoeWgtOaJgCA8IG9rYWJhc2hvXCA7CivlnLDolLXlsIogPCBqaXpvdXNvblwgOwor56m65LiW6L6eIDwga2FyYXNlamlcIDsKK+ihqOWFt+WxiyA8IGh5b3VndXlhXCA7CivlvJTmhbDph5EgPCBjaG91aWtpblwgOwor5Yid55Sj5ammIDwgc2hvc2FucHVcIDsKK+ibuOeEvCA8IHRha295YWtpXCA7CivnpZ3pm7sgPCBzaHVrdWRlblwgOwor5oGQ6b6NIDwga3lvdXJ5dXVcIDsKK+aal+iomOeJqSA8IGFua2ltb25vXCA7CivpurvphZTliaQgPCBtYXN1aXphaVwgOwor6Jeq5Yy76ICFIDwgeWFidWlzaGFcIDsKK+WTgeiWhCA8IHNoaW5hdXN1XCA7Civmi53lgJ8gPCBoYWlzaGFrdVwgOwor5L2V5pmC6aCDIDwgaXRzdWdvcm9cIDsKK+eorue0mSA8IHRhbmVnYW1pXCA7CivmuKnnhrEgPCBvbicnbmV0c3VcIDsKK+mJhOmJoiA8IHRlcHBhY2hpXCA7CivmuoDmnIggPCBtYW5nZXRzdVwgOwor6Y2L54mpIDwgbmFiZW1vbm9cIDsKK+S6jOe+qeeahCA8IG5pZ2l0ZWtpXCA7Civpm4Hnmq7ntJkgPCBnYW5waXNoaVwgOwor5pel5ZKM6KaLIDwgaGl5b3JpbWlcIDsKK+azoumiqCA8IG5hbWlrYXplXCA7CivnpL7kvJrpg6ggPCBzaGFrYWlidVwgOwor6ZGR5YilIDwga2FuYmV0c3VcIDsKK+m7kuixuSA8IGt1cm9oeW91XCA7CivmiL/miL8gPCBmdXNhZnVzYVwgOwor6buS6LGGIDwga3Vyb21hbWVcIDsKK+WIpeS4lueVjCA8IGJlc3Nla2FpXCA7CivnhKHlkI3msI8gPCBtdW1laXNoaVwgOwor6ZuH5YKt6ICFIDwga295b3VzaGFcIDsKK+WUkOeqgSA8IHRvdXRvdHN1XCA7CivntaLnt57lrZAgPCBheWFkb25zdVwgOwor5rim54q25paHIDwga2Fqb3Vtb25cIDsKK+m7meirviA8IG1va3VkYWt1XCA7Civoh6rli5Xou4ogPCBqaWRvdXNoYVwgOwor6Zmk6I2J5YmkIDwgam9zb3V6YWlcIDsKK+mHjum8oCA8IG5vbmV6dW1pXCA7CivkuI3lhazmraMgPCBmdWtvdXNlaVwgOwor6ZeY5oqA5aC0IDwgdG91Z2lqb3VcIDsKK+WWrOacqCA8IGt5b3Vib2t1XCA7Civpu5noqq0gPCBtb2t1ZG9rdVwgOwor5oGl6aqoIDwgY2hpa290c3VcIDsKK+S4u+iomOaGtiA8IHNodWtpb2t1XCA7CivmiYvlv4MgPCB0ZWdva29yb1wgOwor56qB54S2IDwgdG90c3V6ZW5cIDsKK+m8u+S4i+mVtyA8IGJpa2FjaG91XCA7CivmnIDlpKfljJYgPCBzYWlkYWlrYVwgOwor5oq85YiHIDwgb3NoaWtpcmlcIDsKK+mYsueCjuWJpCA8IGJvdWVuemFpXCA7CivmipHlnKcgPCB5b2t1YXRzdVwgOwor5oW256WdIDwga2Vpc2h1a3VcIDsKK+ethuWkqiA8IGZ1ZGVidXRvXCA7CivpiYTpgZMgPCB0ZXRzdWRvdVwgOwor5L2V5pmC6ZaTIDwgbmFuamlrYW5cIDsKK+ezu+e1seaouSA8IGtlaXRvdWp1XCA7CivlvqHoh6rouqsgPCBnb2ppc2hpblwgOwor5LiK6I+T5a2QIDwgam91Z2FzaGlcIDsKK+iZmuiEsSA8IGt5b2RhdHN1XCA7CivmsrPpsZIgPCBrYXdhbWFzdVwgOwor6KKr5rib5pWwIDwgaGlnZW5zdXVcIDsKK+aYn+adoeaXlyA8IHNlaWpvdWtpXCA7Civpiq3oi5QgPCB6ZW5pZ29rZVwgOwor56uL5pytIDwgdGF0ZWZ1ZGFcIDsKK+WZm+WCtyA8IGthbWlraXp1XCA7Civph47ptrIgPCBub2JpdGFraVwgOwor55aO5rC05oCnIDwgc29zdWlzZWlcIDsKK+iHquayu+aoqSA8IGppY2hpa2VuXCA7CivpgK7mjZXogIUgPCB0YWlob3NoYVwgOwor5ryU5Ye6IDwgZW5zaHV0c3VcIDsKK+m8u+e0mSA8IGhhbmFnYW1pXCA7CivmuKnmuKkgPCBudWt1bnVrdVwgOwor5LqM6aCt562LIDwgbml0b3VraW5cIDsKK+m8u+ezniA8IGhhbmFrdXNvXCA7CivntKDmtarkurogPCBzdXJvdW5pblwgOwor56eL5aC05omAIDwgYWtpYmFzaG9cIDsKK+iIueeBq+S6iyA8IGZ1bmFrYWppXCA7CivogrLnqK7lrrYgPCBpa3VzaHVrYVwgOwor5oKq6YCGIDwgYWt1Z3lha3VcIDsKK+ato+iqsuWkliA8IHNlaWthZ2FpXCA7CivnhYnnk6bloYAgPCByZW5nYWJlaVwgOwor5oKq6L6jIDwgYWt1cmF0c3VcIDsKK+iLseaWh+azlSA8IGVpYnVucG91XCA7CivmnKrmsbrlrpogPCBtaWtldHRlaVwgOwor6buS6KGoIDwga29rdWh5b3VcIDsKK+WBpeW6t+e+jiA8IGtlbmtvdWJpXCA7CivkuKHorbDpmaIgPCByeW91Z2lpblwgOwor5oSb5ZSx5q2MIDwgYWlzaG91a2FcIDsKK+S6jOacrOajkiA8IG5paG9uYm91XCA7CivpvLvnrYsgPCBoYW5hc3VqaVwgOwor5rKI6buZIDwgY2hpbm1va3VcIDsKK+mdkueJqeWxiyA8IGFvbW9ub3lhXCA7Civph5Hpq6ogPCBraW5wYXRzdVwgOwor5Luu5a6a5b2iIDwga2F0ZWlrZWlcIDsKK+mJiOixhiA8IG5hdGFtYW1lXCA7Civno6/pt7ggPCBpc29zaGlnaVwgOwor5rqd5bedIDwgZG9idWdhd2FcIDsKK+iHquWLleipniA8IGppZG91c2hpXCA7Civkvr/lrpzkuIogPCBiZW5naWpvdVwgOwor55Sw6IiO6aKoIDwgaW5ha2FmdXVcIDsKK+mNteadnyA8IGthZ2l0YWJhXCA7CivnpZ7pgJ8gPCBzaGluc29rdVwgOwor5pyd5b6h6aOvIDwgYXNhZ29oYW5cIDsKK+m7kuibhyA8IGt1cm9oZWJpXCA7CivmjIfmj67mqKkgPCBzaGlraWtlblwgOwor6Kit6KiI5ZuzIDwgc2Vra2VpenVcIDsKK+a6gOaCpiA8IG1hbicnZXRzdVwgOwor5oiR5oiRIDwgd2FyZXdhcmVcIDsKK+mDqOWkluiAhSA8IGJ1Z2Fpc2hhXCA7CivmuIXmvZQgPCBzZWlrZXRzdVwgOwor6JGs5YSA5aC0IDwgc291Z2lqb3VcIDsKK+ejgeaAp+S9kyA8IGppc2VpdGFpXCA7CivpioDmnKzkvY0gPCBnaW5ob24nJ2lcIDsKK+ethuWQjSA8IGhpdHN1bWVpXCA7CivmlL/lhZrlk6EgPCBzZWl0b3VpblwgOwor5a++5b+c5YCkIDwgdGFpb3VjaGlcIDsKK+i7jeiJpuaXlyA8IGd1bmthbmtpXCA7CivkuozkuZfmoLkgPCBuaWpvdWtvblwgOwor56iu55WcIDwgc2h1Y2hpa3VcIDsKK+aMh+aPruajkiA8IHNoaWtpYm91XCA7Civmr43lm73oqp4gPCBib2tva3Vnb1wgOwor55S755So57SZIDwgZ2F5b3VzaGlcIDsKK+mKheiJsiA8IGRvdXNob2t1XCA7CivmpJzmuKnlmaggPCBrZW4nJ29ua2lcIDsKK+WPjemqqCA8IGhhbmtvdHN1XCA7CivllYbms4EgPCBzaG91a3lvdVwgOwor6aeG5r2c6ImHIDwga3VzZW50ZWlcIDsKK+WgleiDjue9qiA8IGRhdGFpemFpXCA7Civmub/luqYgPCBzaGl0c3Vkb1wgOwor56OB5rCX5a2mIDwgamlraWdha3VcIDsKK+ifhOS8jyA8IGNoaXBwdWt1XCA7CivmtYXokbEgPCBhc2F0c3VraVwgOwor5oeQ54KJ54GwIDwga2Fpcm9iYWlcIDsKK+imgeazqOaEjyA8IHlvdWNodXVpXCA7CivliJ3nlJ/lhZAgPCBzaG9zZWlqaVwgOwor5oiS5b6LIDwga2Fpcml0c3VcIDsKK+S4jemuruaYjiA8IGZ1c2VubWVpXCA7Civnq7rlraYgPCBqaWt1Z2FrdVwgOwor5aSp6bWe57WoIDwgYmlyb3Vkb3VcIDsKK+WQueiyqyA8IGZ1a2ludWtpXCA7CivnrLnljp8gPCBzYXNhaGFyYVwgOwor56qT5p6gIDwgbWFkb3dha3VcIDsKK+WUkOeJqSA8IHRvdW1vdHN1XCA7Civoo73ns5bmiYAgPCBzZWl0b3Vqb1wgOwor56uv5bGAIDwgdGFua3lva3VcIDsKK+aKnuS4gCA8IHRha3VpdHN1XCA7CivlhYjpp4bogIUgPCBzZW5rdXNoYVwgOwor5Yqp5oiQ6YeRIDwgam9zZWlraW5cIDsKK+a4oeadpeS6uiA8IHRvcmFpamluXCA7CivnrYblhYggPCBmdWRlc2FraVwgOwor6YCf6KiY6ICFIDwgc29ra2lzaGFcIDsKK+mKreeusSA8IHplbmliYWtvXCA7CivpjKjms4ogPCBieW91aGFrdVwgOwor6Imm6LyJ5qmfIDwga2Fuc2Fpa2lcIDsKK+a3t+a1tCA8IGtvbicneW9rdVwgOwor5rex5rexIDwgZnVrYWJ1a2FcIDsKK+iXquibhyA8IHlhYnVoZWJpXCA7Civoo73nsonmqZ8gPCBzZWlmdW5raVwgOwor5Lmx5bGk6ZuyIDwgcmFuc291dW5cIDsKK+WPguS6i+S8miA8IHNhbmppa2FpXCA7CivnqK7niakgPCB0YW5lbW9ub1wgOwor56iu54mbIDwgdGFuZXVzaGlcIDsKK+ibh+avkiA8IGhlYmlkb2t1XCA7CivmiIzlubQgPCBpbnVkb3NoaVwgOwor6YGV5rOV6KGM54K6IDwgaWhvdWtvdWlcIDsKK+aOkuawl+W8gSA8IGhhaWtpYmVuXCA7Civmu5HliaQgPCBrYXRzdXphaVwgOwor6buS6Ii5IDwga3Vyb2Z1bmVcIDsKK+ato+e1sea0viA8IHNlaXRvdWhhXCA7CivpioDnv7wgPCBnaW4nJ3lva3VcIDsKK+azpei2syA8IGRvcm9hc2hpXCA7Civoo5zkvZDlvbkgPCBob3NheWFrdVwgOwor6Y6M5b2iIDwga2FtYWdhdGFcIDsKK+acqumFjeW9kyA8IG1paGFpdG91XCA7Civmu4XljbQgPCBtZWtreWFrdVwgOwor5piv6Z2e5YWxIDwgemVoaXRvbW9cIDsKK+mHo+mKrSA8IHRzdXJpc2VuXCA7CivmnKrliIrooYwgPCBtaWthbmtvdVwgOwor5p6i5qmf5Y2/IDwgc3V1a2lrZWlcIDsKK+acqumBgue9qiA8IG1pc3VpemFpXCA7CivmlofljJbosqEgPCBidW5rYXphaVwgOwor5q2m6KOF6Ii5IDwgYnVzb3VzZW5cIDsKK+iomOiAheWboyA8IGtpc2hhZGFuXCA7CivllYbmpa0gPCBzaG91Z3lvdVwgOwor5b6h55So6YK4IDwgZ295b3V0ZWlcIDsKK+W+oeWFiOajkiA8IG9zYWtpYm91XCA7CivpibHohIggPCBrb3VteWFrdVwgOwor6JqK54e7IDwga2FpYnVzaGlcIDsKK+WQg+mAhiA8IHNoYWtrdXJpXCA7Civpurnoj4wgPCBrb3VqaWtpblwgOwor5a6a5q+U5L6LIDwgdGVpaGlyZWlcIDsKK+WRveiEiCA8IG1laW15YWt1XCA7Civlr4zlo6vlt50gPCBmdWppa2F3YVwgOwor6buS6IKJIDwga3Vyb25pa3VcIDsKK+m6puiXgSA8IG11Z2l3YXJhXCA7CivnlKPljbXmnJ8gPCBzYW5yYW5raVwgOwor56u55Z6jIDwgdGFrZWdha2lcIDsKK+WIhuebuOapnyA8IGJ1bnNvdWtpXCA7CivpjZvmjqUgPCB0YW5zZXRzdVwgOwor6Yed6YeRIDwgaGFyaWdhbmVcIDsKK+S8muaEj+aWh+WtlyA8IGthaWltb2ppXCA7CivpioDnuIEgPCBnaW5idWNoaVwgOwor5LiK5bGk6ZuyIDwgam91c291dW5cIDsKK+mHkemMhiA8IGthbmFzYWJpXCA7CivnqI7njocgPCB6ZWlyaXRzdVwgOwor56uL5bGxIDwgdGF0ZXlhbWFcIDsKK+S4ieasoeWFgyA8IHNhbmppZ2VuXCA7CivnvqTppqznnIwgPCBndW5tYWtlblwgOwor6bqm6JKUIDwgbXVnaW1ha2lcIDsKK+WPpOmHkSA8IGZ1cnVnYW5lXCA7CivllYTmnKggPCB0YWt1Ym9rdVwgOwor5Y+j6YeNIDwga3VjaGlvbW9cIDsKK+WFteermemDqCA8IGhlaXRhbmJ1XCA7CivkuI3lhazlubMgPCBmdWtvdWhlaVwgOwor5riH5pybIDwga2F0c3Vib3VcIDsKK+aJjeWKmyA8IHNhaXJ5b2t1XCA7Civlj6TphZIgPCBmdXJ1emFrZVwgOwor5YmN6by757eSIDwgbWFlaGFuYW9cIDsKK+S4jeWHjeWJpCA8IGZ1dG91emFpXCA7CivpvLvnhoogPCBoYW5hZ3VtYVwgOwor6Yyr5p2WIDwgc2hha3Vqb3VcIDsKK+epuuaSriA8IGt1dXNhdHN1XCA7Civpu5nntIQgPCBtb2t1eWFrdVwgOwor54mp55yf5Ly8IDwgbW9ub21hbmVcIDsKK+mBiuatqemBkyA8IHl1dWhvZG91XCA7CivnpL7oqqwgPCBzaGFzZXRzdVwgOwor5rWF57eRIDwgc2Vucnlva3VcIDsKK+aJi+WIgCA8IHRlZ2F0YW5hXCA7CivlkIjnuIHlpYfnuIEgPCBhaWVua2llblwgOwor54Sh5Yi26ZmQIDwgbXVzZWlnZW5cIDsKK+epjealtSA8IHNla2t5b2t1XCA7CivmiZPlgrcgPCB1Y2hpa2l6dVwgOwor6YmE6ImyIDwgdGV0c3Vpcm9cIDsKK+S9k+iCsuWutiA8IHRhaWlrdWthXCA7CivliIblspDpp4UgPCBidW5raWVraVwgOwor56aP6ICzIDwgZnVrdW1pbWlcIDsKK+a7heS6oSA8IG1ldHN1Ym91XCA7CivljLvnmYLnlKggPCBpcnlvdXlvdVwgOwor5oWE54S2IDwgcml0c3V6ZW5cIDsKK+WQjOiqrCA8IGRvdXNldHN1XCA7CivnqpLmga8gPCBjaGlzc29rdVwgOwor5Y+z6LazIDwgbWlnaWFzaGlcIDsKK+mAruaNleeKtiA8IHRhaWhvam91XCA7Civmspbph6MgPCBva2lkenVyaVwgOwor6YGO5Y675bizIDwga2Frb2Nob3VcIDsKK+m7kuexsyA8IGt1cm9nb21lXCA7CivmqZ/li5XmgKcgPCBraWRvdXNlaVwgOwor6YmE6IWVIDwgdGV0c3V3YW5cIDsKK+WPm+mAhiA8IGhhbmd5YWt1XCA7CivnhrHpoqjngokgPCBuZXBwdXVyb1wgOwor5q2p6KGM6ICFIDwgaG9rb3VzaGFcIDsKK+m7nueptCA8IHRlbmtldHN1XCA7CivmsLTps6UgPCBtaXp1ZG9yaVwgOwor5rqA5ZarIDwgbWFua2l0c3VcIDsKK+WGhumMkOW9oiA8IGVuc3Vpa2VpXCA7CivmiJHlm70gPCB3YWdha3VuaVwgOwor5a6I6Yqt5aW0IDwgc2h1c2VuZG9cIDsKK+mBk+WMluW4qyA8IGRvdWtlc2hpXCA7CivmgqroiIwgPCBha3V6ZXRzdVwgOwor6JmO54yrIDwgdG9yYW5la29cIDsKK+S4i+iFuemDqCA8IGthZnVrdWJ1XCA7Civlj43mlL/lupwgPCBoYW5zZWlmdVwgOwor5Zue6Lui5YSAIDwga2FpdGVuZ2lcIDsKK+S4iuiNieWxpSA8IHV3YXpvdXJpXCA7CivnsbPkuIrpmaIgPCBiZWlqb3VpblwgOwor5rSS6ISxIDwgc2hhZGF0c3VcIDsKK+m6u+e2sSA8IGFzYWR6dW5hXCA7Civpu5Dnq78gPCBtb2NoaXphb1wgOwor5pyd56i95Y+kIDwgYXNhZ2Vpa29cIDsKK+WQq+iThCA8IGdhbmNoaWt1XCA7Civoo73nsonmiYAgPCBzZWlmdW5qb1wgOwor6KKr5rK76ICFIDwgaGljaGlzaGFcIDsKK+WPgumFjCA8IHNhbnNoYWt1XCA7Civlrq7nlLDlrrYgPCBtaXlhdGFrZVwgOwor6L+R6KGb5YW1IDwga29ub2VoZWlcIDsKK+WyqeaJi+ecjCA8IGl3YXRla2VuXCA7CivpgKPpmorml5cgPCByZW50YWlraVwgOwor566h5qW95ZmoIDwga2FuZ2Fra2lcIDsKK+isneaBqeS8miA8IHNoYW9ua2FpXCA7CivppIronILlrrYgPCB5b3Vob3VrYVwgOwor5LqU57ea57SZIDwgZ29zZW5zaGlcIDsKK+WQhOihjCA8IGtha3VneW91XCA7CivpjYvlupUgPCBuYWJlem9rb1wgOwor5bmz55Sf552AIDwgaGVpemVpZ2lcIDsKK+apn+W4huiIuSA8IGtpaGFuc2VuXCA7CivmgqrogIUgPCB3YXJ1bW9ub1wgOwor6by75rC0IDwgaGFuYW1penVcIDsKK+mdnuaOkuawtCA8IGhpaGFpc3VpXCA7CivnnYDnlarlj7cgPCBraWJhbmdvdVwgOwor5LiN5YCr572qIDwgZnVyaW56YWlcIDsKK+mjtOe0sOW3pSA8IGFtZXphaWt1XCA7Civlgb3kvLznl4cgPCBnaWppc2hvdVwgOwor5aSn5bqD6ZaTIDwgb29oaXJvbWFcIDsKK+mBv+mbo+iAhSA8IGhpbmFuc2hhXCA7CivlrprluLjms6IgPCB0ZWlqb3VoYVwgOwor5LuY5bGe6KqeIDwgZnV6b2t1Z29cIDsKK+aCtue1tiA8IG1vbnpldHN1XCA7CivlubTkvJrosrsgPCBuZW5rYWloaVwgOwor5pWF6LK36ICFIDwga29iYWlzaGFcIDsKK+S6lOWkp+a0iyA8IGdvZGFpeW91XCA7Civnq4vlkb0gPCByaXRzdW1laVwgOwor54+q6Je75ZyfIDwga2Vpc291ZG9cIDsKK+WOs+mBlCA8IGdlbnRhdHN1XCA7CivkurrlkI3nsL8gPCBqaW5tZWlib1wgOwor5o6S5rCX5Y+jIDwgaGFpa2lrb3VcIDsKK+mBv+WmiuazlSA8IGhpbmluaG91XCA7CivnibnkvqHlk4EgPCB0b2trYWhpblwgOwor6YeN6KqsIDwganV1c2V0c3VcIDsKK+aPmuaKl+avlCA8IHlvdWtvdWhpXCA7CivpjYvlsLsgPCBuYWJlamlyaVwgOwor6L6e5pu46aGeIDwgamlzaG9ydWlcIDsKK+Wkp+W+gOeUnyA8IGRhaW91am91XCA7Civov73otbfoqLQgPCB0c3Vpa2lzb1wgOwor5rC36ZyHIDwgaHlvdXNoaW5cIDsKK+mBjuWNiuaVsCA8IGthaGFuc3V1XCA7CivpiYTnrYYgPCB0ZXBwaXRzdVwgOwor5a6J5oGv5pelIDwgYW5zb2t1YmlcIDsKK+WGjea1ruS4iiA8IHNhaWZ1am91XCA7CivmtLvnnLwgPCBrYXRzdWdhblwgOwor5Zuz5pu45Yi4IDwgdG9zaG9rZW5cIDsKK+eZuui1t+S6uiA8IGhva2tpbmluXCA7CivmtJ7nqp8gPCBkb3VrdXRzdVwgOwor6YGT5YW36KuWIDwgZG91Z3Vyb25cIDsKK+WIhuebuOW/nCA8IGJ1bnNvdW91XCA7CivmiJHlhJggPCB3YWdhbWFtYVwgOwor56uL5YCZ6KOcIDwgcmlra291aG9cIDsKK+mBv+aakeWcsCA8IGhpc2hvY2hpXCA7CivmsLTpmpsgPCBtaXp1Z2l3YVwgOwor5o6l6aqo5pyoIDwgbml3YXRva29cIDsKK+ekvuS8muenkSA8IHNoYWthaWthXCA7Civph43opIcgPCBjaG91ZnVrdVwgOwor5rS755m6IDwga2FwcGF0c3VcIDsKK+S4iuapn+WrjCA8IGpvdWtpZ2VuXCA7CivkuqTmj5vmiYAgPCBrb3VrYW5qb1wgOwor5Zac5q2M5YqHIDwga2lrYWdla2lcIDsKK+a3u+WKoOWJpCA8IHRlbmthemFpXCA7CivmnKrlvqnlk6EgPCBtaWZ1a3VpblwgOwor5raI5rKIIDwgc2hvdWNoaW5cIDsKK+ismemBnOiqniA8IGtlbnNvbmdvXCA7CivmnKrlh6bnva4gPCBtaXNob2NoaVwgOwor5oKq562GIDwgYWt1aGl0c3VcIDsKK+WcsOW9ouWbsyA8IGNoaWtlaXp1XCA7CivmnKrnn6XmlbAgPCBtaWNoaXN1dVwgOwor56Gs6aqoIDwga291a290c3VcIDsKK+WFq+a9rui3ryA8IHlhc2hpb2ppXCA7CivmsqLooI8gPCBzYXdhZ2FuaVwgOwor5Luj55CG6ICFIDwgZGFpcmlzaGFcIDsKK+aGq+WvnyA8IGJpbnNhdHN1XCA7CivpupfnrYYgPCByZWloaXRzdVwgOwor6JeB57SZIDwgd2FyYWdhbWlcIDsKK+i7jeS7pOmDqCA8IGd1bnJlaWJ1XCA7Civnq4vlg48gPCByaXRzdXpvdVwgOwor5qiq5paH5a2XIDwgeW9rb21vamlcIDsKK+a0u+eUqCA8IGthdHN1eW91XCA7Civmtojmr5IgPCBzaG91ZG9rdVwgOwor5aSq5Y+k5LujIDwgdGFpa29kYWlcIDsKK+aIkeS6uiA8IHdhcmVoaXRvXCA7CivpjYvloqggPCBuYWJlenVtaVwgOwor6buS54yrIDwga3Vyb25la29cIDsKK+aIkeS6iyA8IHdhZ2Frb3RvXCA7Civlub7kvZXlraYgPCBraWthZ2FrdVwgOwor6KW/5rSL5YyWIDwgc2VpeW91a2FcIDsKK+WIkeS9meiAhSA8IGtlaXlvc2hhXCA7CivmuKHkuJbkurogPCB0b3NlaW5pblwgOwor5ZCM6IOeIDwgaGFyYWthcmFcIDsKK+e+hemHneWEgCA8IHJhc2hpbmdpXCA7CivlrZDpn7PnvqQgPCBzaGlpbmd1blwgOwor5pqX6Ki85YyWIDwgYW5zaG91a2FcIDsKK+a7kei1sOi3ryA8IGthc3NvdXJvXCA7Civoo73lm7Pmnb8gPCBzZWl6dWJhblwgOwor55qH57Wx6K2cIDwga291dG91ZnVcIDsKK+eQhuWtpumDqCA8IHJpZ2FrdWJ1XCA7CivnqbrlpKIgPCBzb3JheXVtZVwgOwor5rOl57iEIDwgZG9yb25hd2FcIDsKK+iLseiqnuWhviA8IGVpZ29qdWt1XCA7CivphYvplbcgPCBzaHV1Y2hvdVwgOwor5oKy5Zac5YqHIDwgaGlraWdla2lcIDsKK+S/neeuoeaelyA8IGhva2FucmluXCA7CivljYrpnbQgPCBoYW5ndXRzdVwgOwor5oK2552AIDwgbW9uY2hha3VcIDsKK+WGjeatpuijhSA8IHNhaWJ1c291XCA7Civpu5LnhoogPCBrdXJvZ3VtYVwgOwor6JKy6a2aIDwga2FtYXRvdG9cIDsKK+WWieWFgyA8IG5vZG9tb3RvXCA7CivnqbrloIAgPCBrYXJhYm9yaVwgOwor6LWk6Jy76JuJIDwgYWthdG9uYm9cIDsKK+iWhOiGnCA8IGhha3VtYWt1XCA7Civnqq/lhYMgPCBrYW1hbW90b1wgOwor5rib5ZynIDwgZ2VuJydhdHN1XCA7CivnhKHovrrpmpsgPCBtdWhlbnphaVwgOwor5LiN6Ieq54S2IDwgZnVzaGl6ZW5cIDsKK+iFjuS4jeWFqCA8IGppbmZ1emVuXCA7CivnqJrmi5kgPCBjaGlzZXRzdVwgOwor56WQ562GIDwgeXV1aGl0c3VcIDsKK+WutOS8muWgtCA8IGVua2Fpam91XCA7Civlj6TojYkgPCBmdXJ1a3VzYVwgOwor5LiN5L+h6ICFIDwgZnVzaGluamFcIDsKK+WPo+iNkiA8IGt1Y2hpYXJhXCA7CivljZjmnKzkvY0gPCB0YW5ob24nJ2lcIDsKK+WGhumMkOWPsCA8IGVuc3VpZGFpXCA7CivnpZ3npa0gPCBzaHVrdXNhaVwgOwor5Zug5p6c6ICFIDwgaW5nYW1vbm9cIDsKK+S4jeS/oee+qSA8IGZ1c2hpbmdpXCA7CivljYrplbcgPCBoYW4nJ25hZ2FcIDsKK+mJhOeTtiA8IHRldHN1YmluXCA7CivmsLTpg6ggPCBtaXp1bm9idVwgOwor6LuN5LqL6Z2iIDwgZ3VuamltZW5cIDsKK+aBkuays+aymSA8IGdvdWdhc2hhXCA7CivmgqrnmZYgPCB3YXJ1Z3VzZVwgOwor6buS5r2uIDwga3Vyb3NoaW9cIDsKK+iThOmbuyA8IGNoaWt1ZGVuXCA7Civmr43ps6UgPCBoYWhhZG9yaVwgOwor6Ieq5rK75L2TIDwgamljaGl0YWlcIDsKK+edgOWwuuWcsCA8IGtpamFrdWppXCA7CivlvozljYrmnJ8gPCBrb3VoYW5raVwgOwor5Y+j6IiMIDwga291emV0c3VcIDsKK+elneegsiA8IHNodWt1aG91XCA7Civmr5vpq6ogPCBtb3VoYXRzdVwgOwor6Ieq5rK75LyaIDwgamljaGlrYWlcIDsKK+S+oeWApOimsyA8IGthY2hpa2FuXCA7Civopb/pgYroqJggPCBzZWl5dXVraVwgOwor55uj5p+75aeU5ZOhIDwga2Fuc2FpaW5cIDsKK+ekvOevgCA8IHJlaXNldHN1XCA7CivlubTku6PoqJggPCBuZW5kYWlraVwgOwor5oSf5oOF5a62IDwga2Fuam91a2FcIDsKK+aWh+WMluelrSA8IGJ1bmthc2FpXCA7Civlj4rokL0gPCBreXV1cmFrdVwgOwor6YqD5q66IDwganV1c2F0c3VcIDsKK+WkieaPm+WZqCA8IGhlbmthbmtpXCA7Civmg4XnhrEgPCBqb3VuZXRzdVwgOwor5LiW55WM5Y+yIDwgc2VrYWlzaGlcIDsKK+WPl+eyvuWNtSA8IGp1c2VpcmFuXCA7Civph5HohIggPCBraW5teWFrdVwgOwor5Y+q6ICFIDwgdGFkYW1vbm9cIDsKK+aHh+WIhyA8IGtvbnNldHN1XCA7CivnpoHniakgPCBraW5tb3RzdVwgOwor5bm055Sy5paQIDwgdG9zaGlnYWlcIDsKK+iZkOaUvyA8IGd5YWt1c2VpXCA7CivlkI3nrYYgPCBtZWloaXRzdVwgOwor56K66Ki8IDwga2FrdXNob3VcIDsKK+WQjOethiA8IGRvdWhpdHN1XCA7CivphY3pgZQgPCBoYWl0YXRzdVwgOwor5rOl5LuV5ZCIIDwgZG9yb2ppYWlcIDsKK+a4heWtkOmfsyA8IHNlaXNoaWluXCA7CivkuozmnJ/kvZwgPCBuaWtpc2FrdVwgOwor6Yu45bGRIDwgbm9rb2t1enVcIDsKK+aoque0i+etiyA8IG91bW9ua2luXCA7Civmt4Dlt50gPCB5b2RvZ2F3YVwgOwor6YGL5YuV55WMIDwgdW5kb3VrYWlcIDsKK+aDkea6uiA8IHdha3VkZWtpXCA7CivmnKrnmbroposgPCBtaWhha2tlblwgOwor5rWF5rKTIDwgYXNhZ3V0c3VcIDsKK+WQjOeptCA8IGRvdWtldHN1XCA7Civlgbblg4/ljJYgPCBndXV6b3VrYVwgOwor6KOc6IG05ZmoIDwgaG9jaG91a2lcIDsKK+iLseiqnuWKhyA8IGVpZ29nZWtpXCA7Civph6Pns7ggPCB0c3VyaWl0b1wgOwor6Zu7566X5qmfIDwgZGVuc2Fua2lcIDsKK+a0l+eGiiA8IGFyYWlndW1hXCA7Civlho3lkJ/lkbMgPCBzYWlnaW5taVwgOwor6YeN572wIDwganV1YmF0c3VcIDsKK+WGhumMkOS9kyA8IGVuc3VpdGFpXCA7CivmtYHmsLcgPCByeXV1aHlvdVwgOwor5rOo55uuIDwgY2h1dW1va3VcIDsKK+mdkuWkqeS6lSA8IGFvdGVuam91XCA7Civlj4zohJogPCBzb3VreWFrdVwgOwor5rWq5puyIDwgcm91a3lva3VcIDsKK+mdnuaIpuirliA8IGhpc2Vucm9uXCA7CivmnKrnmbrooYwgPCBtaWhha2tvdVwgOwor55u45aC05birIDwgc291YmFzaGlcIDsKK+WPpOaIpuWgtCA8IGtvc2Vuam91XCA7CivkuInnlbPntIAgPCBzYW5qb3VraVwgOwor5aW95oSP55qEIDwga291aXRla2lcIDsKK+W+oemms+i1sCA8IGdvY2hpc291XCA7Civph5HnuIEgPCBraW5idWNoaVwgOwor5Y2K6YGTIDwgaGFubWljaGlcIDsKK+WMl+mZuCA8IGhva3VyaWt1XCA7CivmibbppIrogIUgPCBmdXlvdXNoYVwgOwor5Y2B5a2X6LuNIDwganV1amlndW5cIDsKK+aMieaJi+ekvCA8IGFuc2h1cmVpXCA7CivlkIzkvY3op5IgPCBkb3Vpa2FrdVwgOwor5Y6f6JasIDwgZ2VuJyd5YWt1XCA7CivljbPoq74gPCBzb2t1ZGFrdVwgOwor5rS75q66IDwga2Fzc2F0c3VcIDsKK+WRqOa1gSA8IHNodXVyeXV1XCA7CivovKrou6LmqZ8gPCByaW50ZW5raVwgOwor56iy5aa7IDwgaW5hZHp1bWFcIDsKK+WOreS6uuiAhSA8IGVuamluc2hhXCA7CivnhKHphY3lvZMgPCBtdWhhaXRvdVwgOwor5ZSQ5aKoIDwga2FyYXN1bWlcIDsKK+WvjOijleeojiA8IGZ1eXV1emVpXCA7CivnlbDlj6PlkIzpn7MgPCBpa3Vkb3VvblwgOwor6Yej56u/IDwgdHN1cml6YW9cIDsKK+mBjuWKtOatuyA8IGthcm91c2hpXCA7CivntIXooZvlhbUgPCBrb3VlaWhlaVwgOwor6Yed566xIDwgaGFyaWJha29cIDsKK+euoeeQhuiAhSA8IGthbnJpc2hhXCA7CivlpJzllYbkurogPCB5b2FraW5kb1wgOwor6IiM5LiL6IW6IDwgemVra2FzZW5cIDsKK+aJgOaMgeWTgSA8IHNob2ppaGluXCA7CivntIDooYzmlocgPCBraWtvdWJ1blwgOwor54Gr5bGx54GwIDwga2F6YW5iYWlcIDsKK+mojuWjq+mBkyA8IGtpc2hpZG91XCA7CivlibDkvZnph5EgPCBqb3V5b2tpblwgOwor5Y2T6LaKIDwgdGFrdWV0c3VcIDsKK+ixiuawtOacnyA8IGhvdXN1aWtpXCA7CivkvY7og73lhZAgPCB0ZWlub3VqaVwgOwor5biw57SN5rOVIDwga2lub3Vob3VcIDsKK+eNheWtkOW6pyA8IHNoaXNoaXphXCA7CivkuqTmj5vlmaggPCBrb3VrYW5raVwgOwor5LiW55WM5Lq6IDwgc2VrYWlqaW5cIDsKK+ihm+eUn+maiiA8IGVpc2VpdGFpXCA7Civlj5bntYQgPCB0b3Jpa3VtaVwgOwor6JKy6Ym+IDwga2FtYWJva29cIDsKK+a1t+aKnCA8IGthaWJhdHN1XCA7Civph5HnrrEgPCBrYW5lYmFrb1wgOwor55CG5LqL6ZW3IDwgcmlqaWNob3VcIDsKK+W5s+Wxi+aguSA8IGhpcmF5YW5lXCA7Civmtojmga8gPCBzaG91c29rdVwgOwor5YWD6ICB6ZmiIDwgZ2Vucm91aW5cIDsKK+ajhOaoqeiAhSA8IGtpa2Vuc2hhXCA7CivkuJbnlYzkuK0gPCBzZWthaWp1dVwgOwor5rKz5Y+j5rivIDwga2Frb3Vrb3VcIDsKK+WPo+esmyA8IGt1Y2hpYnVlXCA7Civljp/ojLggPCBoYXJhdGFrZVwgOwor6bSb6bSmIDwgb3NoaWRvcmlcIDsKK+iWrOeOiSA8IGt1c3VkYW1hXCA7CivkuI3kvZPoo4EgPCBmdXRlaXNhaVwgOwor6JmQ5b6FIDwgZ3lha3V0YWlcIDsKK+avkuicmOibmyA8IGRva3VndW1vXCA7CivljZjoqp7nr4cgPCB0YW5nb2hlblwgOwor6buS5p6gIDwga3Vyb3dha3VcIDsKK+mHkeeptCA8IGtpbmtldHN1XCA7CivnlJ/lvpLmlbAgPCBzZWl0b3N1dVwgOwor6buS5pyNIDwga3Vyb2Z1a3VcIDsKK+e+iuearue0mSA8IHlvdWhpc2hpXCA7Civli53ppqwgPCBrYWNoaXVtYVwgOwor56C06ZCYIDwgd2FyZWdhbmVcIDsKK+W/heimgSA8IGhpdHN1eW91XCA7Civmt7flhaUgPCBrb24nJ255dXVcIDsKK+avjeezu+WItiA8IGJva2Vpc2VpXCA7CivlsZXnpLrloLQgPCB0ZW5qaWpvdVwgOwor5b+N6KGTIDwgbmluanV0c3VcIDsKK+WOs+e9sCA8IGdlbmJhdHN1XCA7Civlvozpgbrnl4cgPCBrb3Vpc2hvdVwgOwor5rWB5pyoIDwgcnl1dWJva3VcIDsKK+mIjeeJqSA8IGRvbmJ1dHN1XCA7CivlvJXngavmuKnluqYgPCBpbmthb25kb1wgOwor5Y+455u0IDwgc2hpY2hva3VcIDsKK+emgeassiA8IGtpbicneW9rdVwgOwor5riH5LuwIDwga2F0c3Vnb3VcIDsKK+enqeW6jyA8IGNoaXRzdWpvXCA7CivljZLoq5YgPCBzb3RzdXJvblwgOwor5LiN5a6a6KmeIDwgZnV0ZWlzaGlcIDsKK+awtOicnCA8IHN1aW1pdHN1XCA7CivliqDmi4XogIUgPCBrYXRhbnNoYVwgOwor55+z6auYIDwga29rdWRha2FcIDsKK+mZvembu+awlyA8IHlvdWRlbmtpXCA7Civlkb3ml6UgPCBtZWluaWNoaVwgOwor5b6p6K6QIDwgZnVrdXNodXVcIDsKK+Wuo+S8neiyuyA8IHNlbmRlbmhpXCA7CivlkIznjocgPCBkb3VyaXRzdVwgOwor5oOc5pilIDwgc2VraXNodW5cIDsKK+WKh+aYoOeUuyA8IGdla2llaWdhXCA7CivnpLzniakgPCByZWltb3RzdVwgOwor55+t6auqIDwgdGFucGF0c3VcIDsKK+iZmuWunyA8IGt5b2ppdHN1XCA7CivmgYvnnYAgPCByZW5jaGFrdVwgOwor6Zi/5Y+k5bGL6LKdIDwgYWtveWFnYWlcIDsKK+mBiuiVqeWFkCA8IHl1dXRvdWppXCA7Civlvqnoqr8gPCBmdWt1Y2hvdVwgOwor6YeR5rqA5a62IDwga2lubWFua2FcIDsKK+mMoOWJjeWxiyA8IGpvdW1hZXlhXCA7Civnn6XlkI3luqYgPCBjaGltZWlkb1wgOwor5ZCN54mpIDwgbWVpYnV0c3VcIDsKK+WMl+mAsiA8IGhva3VzaGluXCA7Civlh7rpsYjnm64gPCBkZXRhcmFtZVwgOwor6buE5piPIDwgdGFzb2dhcmVcIDsKK+aHh+ipseS8miA8IGtvbndha2FpXCA7Civpgb/pm6PmsJEgPCBoaW5hbm1pblwgOwor5Y+y55WlIDwgc2hpcnlha3VcIDsKK+WNgeWtl+ihlyA8IGp1dWppZ2FpXCA7CivkuLvmvJTogIUgPCBzaHVlbnNoYVwgOwor5rOl5r+YIDwgbnVrYXJ1bWlcIDsKK+iXpOajmiA8IGZ1amlkYW5hXCA7CivkuJbkv5fljJYgPCBzZXpva3VrYVwgOwor57KX6KO95ZOBIDwgc29zZWloaW5cIDsKK+WOs+eymyA8IGdlbnNodWt1XCA7CivpiYTmo5IgPCB0ZXRzdWJvdVwgOwor6bOp6bqmIDwgaGF0b211Z2lcIDsKK+WPs+W/g+aIvyA8IHVzaGluYm91XCA7CivlnKfliLbogIUgPCBhc3NlaXNoYVwgOwor5bGV56S65ZOBIDwgdGVuamloaW5cIDsKK+mJhOaigyA8IGthbmF0ZWtvXCA7CivokL3prYQgPCByYWt1aGFrdVwgOwor6YeP55qEIDwgcnlvdXRla2lcIDsKK+W/oOiJryA8IGNodXVyeW91XCA7Civmm7joqJjlrpggPCBzaG9raWthblwgOwor6YO35Zyf5oSbIDwga3lvdWRvYWlcIDsKK+iyr+iUteW6qyA8IGNob3pvdWtvXCA7Civol6nmnK0gPCBoYW5zYXRzdVwgOwor55Sf55yf6Z2i55uuIDwga2ltYWppbWVcIDsKK+S4i+mmrOiplSA8IGdlYmFoeW91XCA7CivkuI3og73ogIUgPCBmdW5vdXNoYVwgOwor5YuF6aGYIDwgY2hva3VnYW5cIDsKK+mFkuiUtSA8IHNha2FndXJhXCA7Civli4XpoYwgPCBjaG9rdWRhaVwgOwor5LiN6Imv5YyWIDwgZnVyeW91a2FcIDsKK+iWhOiNt+ezliA8IGhha2thdG91XCA7CivoloTojbfnsr4gPCBoYWtrYXNlaVwgOwor5byx6ZyHIDwgamFrdXNoaW5cIDsKK+avlOWWqeeahCA8IGhpeXV0ZWtpXCA7CivnpoHmnK0gPCBraW5zYXRzdVwgOwor5LqJ6K2w5qipIDwgc291Z2lrZW5cIDsKK+mHjeemgemMriA8IGp1dWtpbmtvXCA7CivpgYvli5XmrIQgPCB1bmRvdXJhblwgOwor56iu5YilIDwgc2h1YmV0c3VcIDsKK+m7kuaIvyA8IGt1cm9idXNhXCA7CivovrLnuYHmnJ8gPCBub3VoYW5raVwgOwor5oKm5qW9IDwgZXRzdXJha3VcIDsKK+awtOiNiSA8IG1penVrdXNhXCA7CivmhJvlrZAgPCBpdG9zaGlnb1wgOwor6YmE5p2QIDwgdGV0c3V6YWlcIDsKK+W8pumfsyA8IHRzdXJ1b3RvXCA7CivllJDlgpggPCBrYXJha2FzYVwgOwor5oSf5Y+X5oCnIDwga2FuanVzZWlcIDsKK+m6puadnyA8IG11Z2l0YWJhXCA7CivlhbXlmajlt6UgPCBoZWlraWtvdVwgOwor5YCq6Zuy5p6XIDwgZ2VpdW5yaW5cIDsKK+awtOiMjiA8IG1penVndWtpXCA7CivpgYvpgIHoiLkgPCB1bnNvdXNlblwgOwor5oaC5LqLIDwgdXJlaWdvdG9cIDsKK+efremdtCA8IHRhbmd1dHN1XCA7CivmsLToi5QgPCBtaXp1Z29rZVwgOwor6YGK5Ya26YOOIDwgeXV1eWFyb3VcIDsKK+eUu+S7mee0mSA8IGdhc2Vuc2hpXCA7CivmtIvmoqggPCB5b3VuYXNoaVwgOwor5aSa5q616ZqOIDwgdGFkYW5rYWlcIDsKK+ippumok+apnyA8IHNoaWtlbmtpXCA7CivkuIDoiKzoq5YgPCBpcHBhbnJvblwgOwor5Yqg566X56iOIDwga2FzYW56ZWlcIDsKK+aui+mbqiA8IHphbnNldHN1XCA7CivljprntJkgPCBhdHN1Z2FtaVwgOwor5rW05a6iIDwgeW9ra3lha3VcIDsKK+WIhuWykOe3miA8IGJ1bmtpc2VuXCA7Civlloflj63miYsgPCByYXBwYXNodVwgOwor5rC06Ii5IDwgbWl6dWJ1bmVcIDsKK+azpeayvCA8IGRvcm9udW1hXCA7Civlj43nmbogPCBoYW5wYXRzdVwgOwor56We5qeYIDwga2FtaXNhbWFcIDsKK+ejqOefsyA8IHRvZ2lpc2hpXCA7CivlvIHpq6ogPCBiZW5wYXRzdVwgOwor5rOl5rC0IDwgZG9yb21penVcIDsKK+azoeayqyA8IGhvdW1hdHN1XCA7CivlhY3nvarnrKYgPCBtZW56YWlmdVwgOwor54qs6buE5qWKIDwgaW51dHN1Z2VcIDsKK+elnualrSA8IGthbWl3YXphXCA7CivmsLTohbkgPCBtaXp1YmFyYVwgOwor5Y+C552AIDwgc2FuY2hha3VcIDsKK+WOreS4luimsyA8IGVuc2Vpa2FuXCA7CivnorrntIQgPCBrYWt1eWFrdVwgOwor5rC06ISIIDwgc3VpbXlha3VcIDsKK+WNiuS4lue0gCA8IGhhbnNlaWtpXCA7CivphbXmr43oj4wgPCBrb3Vib2tpblwgOwor56We5qOaIDwga2FtaWRhbmFcIDsKK+WGt+e9qOazlSA8IHJlaWFucG91XCA7Civlj6TniakgPCBmdXJ1bW9ub1wgOwor5oSb6JS154mIIDwgYWl6b3ViYW5cIDsKK+W/q+e1tiA8IGthaXpldHN1XCA7CivlvqHlgYnmlrkgPCBvZXJhZ2F0YVwgOwor6KiY5pWw5rOVIDwga2lzdXVob3VcIDsKK+epuuS4i+aJiyA8IGthcmFoZXRhXCA7Civph5HniakgPCBrYW5hbW9ub1wgOwor56We5qC8IDwgc2hpbmtha3VcIDsKK+emv+WxsSA8IGhhZ2V5YW1hXCA7CivljYHolqwgPCBkb2t1ZGFtaVwgOwor5LiN5YGl5bq3IDwgZnVrZW5rb3VcIDsKK+ayiOeXmyA8IGNoaW50c3V1XCA7CivmgKXnl4UgPCBreXV1YnlvdVwgOwor5o6i5qSc5a62IDwgdGFua2Vua2FcIDsKK+efs+mPgyA8IHNla2l6b2t1XCA7CivlpKfmsJflnI8gPCB0YWlraWtlblwgOwor542F5a2Q5ZC8IDwgc2hpc2hpa3VcIDsKK+eojuWIpSA8IHplaWJldHN1XCA7Civku6PnkIbmqKkgPCBkYWlyaWtlblwgOwor54mp5Lu26LK7IDwgYnVra2VuaGlcIDsKK+m7kuW5lSA8IGt1cm9tYWt1XCA7CivnpZ3mna8gPCBzaHVrdWhhaVwgOwor5oKq5pOmIDwgd2FydXp1cmVcIDsKK+ato+imj+WFtSA8IHNlaWtpaGVpXCA7Civlho3phY3luIMgPCBzYWloYWlmdVwgOwor6by75YWIIDwgaGFuYXNha2lcIDsKK+elnuaciCA8IGtvdWR6dWtpXCA7CivmsJHojYkgPCB0YW1pZ3VzYVwgOwor5Zub55Wz5Y2KIDwgeW9qb3VoYW5cIDsKK+a0u+W8gSA8IGthdHN1YmVuXCA7CivlsZXnpLrkvJogPCB0ZW5qaWthaVwgOwor5aSn6YO95biCIDwgZGFpdG9zaGlcIDsKK+WSjOWupCA8IHdhc2hpdHN1XCA7CivlhYjlrabmnJ8gPCBzZW5nYWtraVwgOwor5oKq5rSS6JC9IDwgd2FydWphcmVcIDsKK+mHiOeEtiA8IHNoYWt1emVuXCA7Civoh6rmsJHlhZogPCBqaW1pbnRvdVwgOwor5Yy755mC5ZOBIDwgaXJ5b3VoaW5cIDsKK+WGheaymeaxsCA8IHVjaGl6YXRhXCA7Civlk7LkurogPCB0ZXRzdWppblwgOwor56aP5b6zIDwgZnVrdXRva3VcIDsKK+m7kuWxsSA8IGt1cm95YW1hXCA7Civli7/oq5YgPCBtb2NoaXJvblwgOwor5YiG5YWJ5ZmoIDwgYnVua291a2lcIDsKK+aAqueJqSA8IGthaWJ1dHN1XCA7CivopqrkuI3lrZ0gPCBveWFmdWtvdVwgOwor56aP5byVIDwgZnVrdWJpa2lcIDsKK+WNkuiAhSA8IHNvdHN1c2hhXCA7CivnuIHotbfniakgPCBlbmdpbW9ub1wgOwor5rWB5pif6ZuoIDwgcnl1dXNlaXVcIDsKK+WOn+eZuiA8IGdlbnBhdHN1XCA7CivlibLpq5ggPCB3YXJpZGFrYVwgOwor6JGX6L+wIDwgY2hvanV0c3VcIDsKK+W5tOiyouexsyA8IG5lbmd1bWFpXCA7Civljprnmq4gPCBhdHN1a2F3YVwgOwor5rSX5rWE5ZmoIDwgc2Vuam91a2lcIDsKK+avm+iZsSA8IGtlamlyYW1pXCA7CivlvqrnkrDlmaggPCBqdW5rYW5raVwgOwor6YWS57OfIDwgc2FrZWthc3VcIDsKK+eEoeeQhuefoueQhiA8IG11cml5YXJpXCA7CivlgaXlurflhZAgPCBrZW5rb3VqaVwgOwor56iO55CG5aOrIDwgemVpcmlzaGlcIDsKK+W8lemHkSA8IGhpa2lnYW5lXCA7Civlj6TmsrMgPCBmdXJ1a2F3YVwgOwor5Lq65oOF5ZGzIDwgbmluam91bWlcIDsKK+etieiqnue3miA8IHRvdWdvc2VuXCA7Civmr5Lom4cgPCBkb2t1aGViaVwgOwor5Y2B5a2X57eaIDwganV1amlzZW5cIDsKK+S4jeS9v+eUqCA8IGZ1c2hpeW91XCA7CivkuIDnlJ/pnaIgPCBpc3NlaW1lblwgOwor5peF6KGM6KiYIDwgcnlva291a2lcIDsKK+mJhOW6iiA8IGthbmF0b2tvXCA7CivlgIvkvZPnvqQgPCBrb3RhaWd1blwgOwor5ZCN5puyIDwgbWVpa3lva3VcIDsKK+WPo+iTi+mfsyA8IGtvdWdhaW9uXCA7CivlkIzmnIggPCBkb3VnZXRzdVwgOwor5Zyn5bu25qmfIDwgYXRzdWVua2lcIDsKK+WSjOWjsOazlSA8IHdhc2VpaG91XCA7CivljaDnrpcgPCB1cmF5YXNhblwgOwor6auY6aC75bqmIDwga291aGluZG9cIDsKK+Wwj+ixhuiJsiA8IGF6dWtpaXJvXCA7Civmr5LolqwgPCBkb2t1eWFrdVwgOwor5Y6z576O5riTIDwgZ2VuYmlrZWlcIDsKK+axuueEtiA8IGtldHN1emVuXCA7CivnpLrlqIHpgYvli5UgPCBqaWl1bmRvdVwgOwor54Gr5bGx5by+IDwga2F6YW5kYW5cIDsKK+WNiuirp+mfsyA8IGhhbmthaW9uXCA7Civmg4Xlrp8gPCBqb3VqaXRzdVwgOwor56eL5Y+jIDwgYWtpZ3VjaGlcIDsKK+WPluaxuiA8IHRvcmlraW1lXCA7CivlkIzml6UgPCBkb3VqaXRzdVwgOwor56Wt5byPIDwgc2Fpc2hpa2lcIDsKK+iZkOS9vyA8IGd5YWt1c2hpXCA7CivmspDmtbQgPCBtb2t1eW9rdVwgOwor6YmE5bGxIDwgdGV0c3V6YW5cIDsKK+axguazleiAhSA8IGd1aG91c2hhXCA7CivngavlsbHluK8gPCBrYXphbnRhaVwgOwor5rSe5a+fIDwgZG91c2F0c3VcIDsKK+S4i+mnhOeusSA8IGdldGFiYWtvXCA7CivpgZPpoIYgPCBtaWNoaWp1blwgOwor56We5b6zIDwgc2hpbnRva3VcIDsKK+iKnea1t+iAgSA8IHNoaWJhZWJpXCA7CivlpKfliIbnnIwgPCBvb2l0YWtlblwgOwor5b6p57GNIDwgZnVrdXNla2lcIDsKK+Wxsee+iumrrSA8IHlhZ2loaWdlXCA7CivngKzmiLjpmpsgPCBzZXRvZ2l3YVwgOwor5q+S6Iy4IDwgZG9rdXRha2VcIDsKK+W7tumHkSA8IG5vYmVnYW5lXCA7CivnooznoowgPCByb2t1cm9rdVwgOwor6Yqt5LqAIDwgemVuaWdhbWVcIDsKK+eBq+WxseWztiA8IGthemFudG91XCA7CivkuIDlpKvkuIDlqaYgPCBpcHB1aXBwdVwgOwor5q2v6LuKIDwgaGFndXJ1bWFcIDsKK+S4jeWvqeeBqyA8IGZ1c2hpbmJpXCA7CivlpYnku5XlpbMgPCBob3VzaGltZVwgOwor54Gr5bGx5bKpIDwga2F6YW5nYW5cIDsKK+W8lei2iiA8IGhpa2tvc2hpXCA7CivliYPpq6ogPCB0ZWloYXRzdVwgOwor5b+954S2IDwga290c3V6ZW5cIDsKK+eOieegguWIqSA8IHRhbWFqYXJpXCA7CivkuIDliIbljYogPCBpcHB1bmhhblwgOwor5Y+k5qCqIDwgZnVydWthYnVcIDsKK+iKsemzpeeUuyA8IGthY2hvdWdhXCA7CivnhKHoj4zms5UgPCBtdWtpbmhvdVwgOwor5oKE5oKEIDwgc3Vnb3N1Z29cIDsKK+eEoeWFjeiosSA8IG11bWVua3lvXCA7CivlvoXpgb/nt5ogPCB0YWloaXNlblwgOwor56Gs562GIDwga291aGl0c3VcIDsKK+W5tOizgOeKtiA8IG5lbmdham91XCA7Civlj6Tlj4LogIUgPCBrb3NhbnNoYVwgOwor5b+F552AIDwgaGl0Y2hha3VcIDsKK+S6lOWIhuS6lOWIhiA8IGdvYnVnb2J1XCA7Civlj6TmnI0gPCBmdXJ1ZnVrdVwgOwor5YiG5bKQ54K5IDwgYnVua2l0ZW5cIDsKK+S+jeW+k+WumCA8IGppanV1a2FuXCA7CivlhoXph47miYsgPCBuYWl5YXNodVwgOwor5rK56YCB566hIDwgeXVzb3VrYW5cIDsKK+awtOeTtiA8IG1penVnYW1lXCA7Civoqpjom77nga8gPCB5dXVnYXRvdVwgOwor5b+D55qEIDwgc2hpbnRla2lcIDsKK+ioiOeQhuWjqyA8IGtlaXJpc2hpXCA7Civpm5HosqjlupcgPCB6YWtrYXRlblwgOwor5bqn5Y+z6YqYIDwgemF5dXVtZWlcIDsKK+WQvuWtkCA8IHdhZ2ltb2tvXCA7CivlrZDpn7PmgKcgPCBzaGlpbnNlaVwgOwor5rCX55+tIDwga2ltaWppa2FcIDsKK+W+l+etliA8IHRva3VzYWt1XCA7Civli4Xoo4EgPCBjaG9rdXNhaVwgOwor5pyf5b6F5oSfIDwga2l0YWlrYW5cIDsKK+mBqemHjyA8IHRla2lyeW91XCA7Civlv4Pnl5sgPCBzaGludHN1dVwgOwor6YGL5YuV5a62IDwgdW5kb3VzaGFcIDsKK+mHkeaYnyA8IGtpbmJvc2hpXCA7CivmhJrpgKPpmoogPCBndXJlbnRhaVwgOwor5Y6f5a2Q6ZuyIDwgZ2Vuc2hpdW5cIDsKK+S7o+eQhuW6lyA8IGRhaXJpdGVuXCA7CivlvL7olqwgPCBkYW4nJ3lha3VcIDsKK+awtOeOiSA8IG1penV0YW1hXCA7CivnpoHlnKcgPCBraW4nJ2F0c3VcIDsKK+W+s+ebriA8IHRva3Vtb2t1XCA7Civoq7jlmajmorAgPCBzaG9raWthaVwgOwor6YeM5pa5IDwgc2F0b2thdGFcIDsKK+azleW+iyA8IGhvdXJpdHN1XCA7Civph4jmmI4gPCBzaGFrdW1laVwgOwor5pON6Ii15omLIDwgc291ZGFzaHVcIDsKK+WHuuatr+S6gCA8IGRlYmFrYW1lXCA7CivkuI3lgaXlhaggPCBmdWtlbnplblwgOwor5rS75YuVIDwga2F0c3Vkb3VcIDsKK+m7kuWGhiA8IGt1cm9tYXJ1XCA7Civnm7joo5zmgKcgPCBzb3Vob3NlaVwgOwor5rC054mpIDwgbWl6dW1vbm9cIDsKK+W+l+elqCA8IHRva3VoeW91XCA7CivliJ3mnJ/lgKQgPCBzaG9raWNoaVwgOwor5rS+5Ye6IDwgaGFzaHV0c3VcIDsKK+mHiOaUviA8IHNoYWt1aG91XCA7CivmjqXpoK3ovp4gPCBzZXR0b3VqaVwgOwor55Sf5b6S5LyaIDwgc2VpdG9rYWlcIDsKK+a1geWFpSA8IHJ5dXVueXV1XCA7CivmrovomZAgPCB6YW5neWFrdVwgOwor6Jas5bGLIDwga3VzdXJpeWFcIDsKK+iWrOWxgCA8IHlha2t5b2t1XCA7Civnoaznm7QgPCBrb3VjaG9rdVwgOwor5ZCI5byPIDwgZ291c2hpa2lcIDsKK+elnuWmmSA8IHNoaW5teW91XCA7CivpgaDpgZMgPCB0b29taWNoaVwgOwor6aCQ6KiA6ICFIDwgeW9nZW5zaGFcIDsKK+W9k+iBtyA8IHRvdXNob2t1XCA7CivlupXpnakgPCBzb2tvZ2F3YVwgOwor6Jas5a2mIDwgeWFrdWdha3VcIDsKK+emj+WKqSA8IGZ1a3VzdWtlXCA7Civplovlgqzml6UgPCBrYWlzYWliaVwgOwor6IO06ZaT5aOwIDwgZG91bWFnb2VcIDsKK+iDjOeVquWPtyA8IHNlYmFuZ291XCA7Civmta7mtarogIUgPCBmdXJvdXNoYVwgOwor5Lya5ZOh5Yi4IDwga2FpaW5rZW5cIDsKK+S8muWToeWItiA8IGthaWluc2VpXCA7Civmr5vnrYYgPCBtb3VoaXRzdVwgOwor6Iux57Gz5rOVIDwgZWliZWlob3VcIDsKK+WOu+aciCA8IGt5b2dldHN1XCA7CivnnYDpp4UgPCBjaGFrdWVraVwgOwor5ZCI55CG6KuWIDwgZ291cmlyb25cIDsKK+Wkp+mDqOWIhiA8IGRhaWJ1YnVuXCA7CivmgZDmgqYgPCBreW91ZXRzdVwgOwor6JSt5qeYIDwga2FnZXNhbWFcIDsKK+elnuWfnyA8IHNoaW4nJ2lraVwgOwor5Y2D55SfIDwgc2VuJyduYXJpXCA7CivoloTlvLEgPCBoYWt1amFrdVwgOwor5LqU6KeS5b2iIDwgZ29rYWtrZWlcIDsKK+S4reimj+aooSA8IGNodXVraWJvXCA7Civlv4XnhLYgPCBoaXRzdXplblwgOwor5aSn6YO95LyaIDwgZGFpdG9rYWlcIDsKK+itt+mAgei7iiA8IGdvc291c2hhXCA7Civph43miYvku6MgPCBvbW90ZWRhaVwgOwor5ZCM5bGAIDwgZG91a3lva3VcIDsKK+iSuOedgCA8IGpvdWNoYWt1XCA7CivluoPloLHpg6ggPCBrb3Vob3VidVwgOwor5Y2K546JIDwgaGFuZ3lva3VcIDsKK+mAhumiqCA8IGd5YWt1ZnV1XCA7CivliIbpqqggPCBidW5rb3RzdVwgOwor5b6M6bOl57696ZmiIDwgZ290b2JhaW5cIDsKK+W5vOmhlCA8IG9zYW5hZ2FvXCA7CivlkIzlrr8gPCBkb3VzaHVrdVwgOwor5ZCN5a6fIDwgbWVpaml0c3VcIDsKK+atouihgCA8IHNoaWtldHN1XCA7Civli5XohIggPCBkb3VteWFrdVwgOwor552A6aCGIDwgY2hha3VqdW5cIDsKK+iSuOeZuiA8IGpvdWhhdHN1XCA7CivpgIbpoIYgPCBneWFrdWp1blwgOwor5ZCI5a6/IDwgZ2Fzc2h1a3VcIDsKK+WKh+iplSA8IGdla2loeW91XCA7CivphbjmrKAgPCBzYW5rZXRzdVwgOwor5b6M55m6IDwga291aGF0c3VcIDsKK+S4ieadr+mFoiA8IHNhbmJhaXp1XCA7Civnr4Dngq3lmaggPCBzZXR0YW5raVwgOwor6YmE5YiGIDwgdGV0c3VidW5cIDsKK+W4jOacm+iAhSA8IGtpYm91c2hhXCA7CivlpJbnp5HlraYgPCBnZWthZ2FrdVwgOwor5YiR5LqL54qvIDwga2VpamloYW5cIDsKK+mFjee3muWbsyA8IGhhaXNlbnp1XCA7CivmqZ/morDoq5YgPCBraWthaXJvblwgOwor552A6Zu7IDwgY2hha3VkZW5cIDsKK+W3neeni+aymSA8IGthd2FhaXNhXCA7Civlj4vmiJAgPCB0b21vbmFyaVwgOwor5paH5YyW5ZyPIDwgYnVua2FrZW5cIDsKK+aOpemgreiqniA8IHNldHRvdWdvXCA7CivmsLTmtJ8gPCBtaXp1YmFuYVwgOwor5LqL5pWF5q20IDwgamlrb3Jla2lcIDsKK+WJjei/sCA8IHplbmp1dHN1XCA7CivlibLorbIgPCBrYXRzdWpvdVwgOwor5bGx5bCP5bGLIDwgeWFtYWdveWFcIDsKK+WOn+absiA8IGdlbmt5b2t1XCA7Civns7jonLvom4kgPCBpdG90b25ib1wgOwor5Y2B6YeN5LqM5Y2B6YeNIDwgdG9laGF0YWVcIDsKK+W+jOeUoyA8IG5vY2hpemFuXCA7Civnp7vou6LlhYggPCBpdGVuc2FraVwgOwor6JC96I6rIDwgcmFrdWJha3VcIDsKK+mBqeiplSA8IHRla2loeW91XCA7Civok4vniakgPCBmdXRhbW9ub1wgOwor5Ye66aasIDwgc2h1dHN1YmFcIDsKK+awtOayoSA8IHN1aWJvdHN1XCA7CivlvqHniakgPCBneW9idXRzdVwgOwor5aSn5Yuy5L2NIDwgZGFpa3VuJydpXCA7CivlvZPnr4AgPCB0b3VzZXRzdVwgOwor5ZC45Y+jIDwgc3Vpa3VjaGlcIDsKK+Wkp+ebrueOiSA8IG9vbWVkYW1hXCA7CivlrpjlhazlkI8gPCBrYW5rb3VyaVwgOwor5oKL5ZeHIDwgcmluc2hva3VcIDsKK+WNlOitsOWToSA8IGt5b3VnaWluXCA7Civou43kuovniq8gPCBndW5qaWhhblwgOwor6ZqP6KGM5ZOhIDwgenVpa291aW5cIDsKK+S4gOi+uuWAkiA8IGlwcGVudG91XCA7Civph53lsbEgPCBoYXJpeWFtYVwgOwor5Y+W5byVIDwgdG9yaWhpa2lcIDsKK+ayoeW5tCA8IGJvdHN1bmVuXCA7Civlj7Llrp8gPCBzaGlqaXRzdVwgOwor6JGJ6ISIIDwgeW91bXlha3VcIDsKK+WPsOWvhiA8IHRhaW1pdHN1XCA7Civnj77ku6Poqp4gPCBnZW5kYWlnb1wgOwor6YGU6K2YIDwgdGFzc2hpa2lcIDsKK+m6puS9nCA8IG11Z2lzYWt1XCA7CivkuI3lsI7mgKcgPCBmdWRvdXNlaVwgOwor5oCn5oKqIDwgc2hvdXdhcnVcIDsKK+eQhuWuueW4qyA8IHJpeW91c2hpXCA7CivlvpPniakgPCBqdXVidXRzdVwgOwor5Lmx6auY5LiLIDwgcmFua291Z2VcIDsKK+W9ueeVnCA8IGVraWNoaWt1XCA7Civlh6HpqqggPCBib25rb3RzdVwgOwor6YeR5bGRIDwga2FuYWt1enVcIDsKK+W/heauuiA8IGhpc3NhdHN1XCA7Civlj6Tlr7ogPCBmdXJ1ZGVyYVwgOwor56S+5Lqk5a62IDwgc2hha291a2FcIDsKK+a0m+S4rSA8IHJha3VjaHV1XCA7Civlh7jpnaIgPCB0b3RzdW1lblwgOwor5paH5YyW5Y+yIDwgYnVua2FzaGlcIDsKK+WQuOWFpSA8IGt5dXVueXV1XCA7CivkuI3nlKjlk4EgPCBmdXlvdWhpblwgOwor5Yiw6YGUIDwgdG91dGF0c3VcIDsKK+WPo+WunyA8IGtvdWppdHN1XCA7CivpgI/mmI7luqYgPCB0b3VtZWlkb1wgOwor5LiN5a6a5rOVIDwgZnV0ZWlob3VcIDsKK+WKh+iWrCA8IGdla2l5YWt1XCA7Civnn63nuK4gPCB0YW5zaHVrdVwgOwor5rip5o6S5rC0IDwgb25oYWlzdWlcIDsKK+WGt+m6piA8IGhpeWFtdWdpXCA7CivnpZ3lhbggPCBzaHVrdXRlblwgOwor5Ye66ZmzIDwgc2h1dGNoaW5cIDsKK+iIquepuui3ryA8IGtvdWt1dXJvXCA7CivokZvnsaAgPCB0c3VkenVyYVwgOwor6LOH55Sj5a62IDwgc2hpc2Fua2FcIDsKK+mhnuS8vOeCuSA8IHJ1aWppdGVuXCA7Civmt6HmsLTmuZYgPCB0YW5zdWlrb1wgOwor5bqD5aCx6KqyIDwga291aG91a2FcIDsKK+W+s+ayoiA8IHRva3V0YWt1XCA7Civph4jlsIogPCBzaGFrdXNvblwgOwor5bmz6Y2LIDwgaGlyYW5hYmVcIDsKK+mFkuaovSA8IHNha2FkYXJ1XCA7CivlvIHoiIwgPCBiZW56ZXRzdVwgOwor5bCP5Lq65pWwIDwga29uaW56dXVcIDsKK+aEm+efpeecjCA8IGFpY2hpa2VuXCA7Civov73pjLIgPCB0c3Vpcm9rdVwgOwor5oGL5aa7IDwga29pZHp1bWFcIDsKK+W+qea0uyA8IGZ1a2thdHN1XCA7CivkurrpgKDol40gPCBqaW56b3VhaVwgOwor5Yy75a2m6ICFIDwgaWdha3VzaGFcIDsKK+aCquaEn+aDhSA8IGFra2Fuam91XCA7Civmgavllp0gPCBkb3VrYXRzdVwgOwor5pyq5Yem5YiGIDwgbWlzaG9idW5cIDsKK+W3rumFjeS6uiA8IHNhaGFpbmluXCA7CivkvY7poLvluqYgPCB0ZWloaW5kb1wgOwor5L2c54K654qvIDwgc2FrdWloYW5cIDsKK+WJo+ihkyA8IGtlbmp1dHN1XCA7CivljrPlvosgPCBnZW5yaXRzdVwgOwor5q2v56eR55SoIDwgc2hpa2F5b3VcIDsKK+WKq+e9sCA8IGdvdWJhdHN1XCA7CivlvavnkKIgPCBjaG91dGFrdVwgOwor5YyW54mpIDwgYmFrZW1vbm9cIDsKK+iWquWJsiA8IG1ha2l3YXJpXCA7CivlvZPnm7QgPCB0b3VjaG9rdVwgOwor5YaN5Yem55CGIDwgc2Fpc2hvcmlcIDsKK+WJr+iZuSA8IGZ1a3VuaWppXCA7CivoirHojKPok5kgPCBoYW5hZ296YVwgOwor5YyX54iGIDwgaG9rdWJha3VcIDsKK+eOhOatpuWyqSA8IGdlbmJ1Z2FuXCA7CivluLjpo58gPCBqb3VzaG9rdVwgOwor6bCQ6a6rIDwgd2FuaXphbWVcIDsKK+azqOWFpSA8IGNodXVueXV1XCA7CivmgKXls7sgPCBreXV1c2h1blwgOwor5ray54q25YyWIDwgZWtpam91a2FcIDsKK+eEoeWIqeaBryA8IG11cmlzb2t1XCA7CivpmaPnvr3nuZQgPCBqaW5iYW9yaVwgOwor6bOp6IO4IDwgaGF0b211bmVcIDsKK+aIpumXmOapnyA8IHNlbnRvdWtpXCA7CivmnInmhI/nmoQgPCB5dXVpdGVraVwgOwor5bqX6LODIDwgdGFuYWNoaW5cIDsKK+WVj+mhjOWFkCA8IG1vbmRhaWppXCA7Civlv4PmoLkgPCBrb2tvcm9uZVwgOwor5Yas6bOlIDwgZnV5dWRvcmlcIDsKK+WNlOalrSA8IGt5b3VneW91XCA7CivlgrXli5nogIUgPCBzYWltdXNoYVwgOwor5Yed6ZuGIDwgZ3lvdXNodXVcIDsKK+S4gOmojuiojiA8IGlra2l1Y2hpXCA7Civoo5zntabot68gPCBob2t5dXVyb1wgOwor6YCB6YGUIDwgc291dGF0c3VcIDsKK+W9q+eJqSA8IGhvcmltb25vXCA7CivlupXosYYgPCBzb2tvbWFtZVwgOwor6bOl6IKMIDwgdG9yaWhhZGFcIDsKK+mzpeiCiSA8IHRvcmluaWt1XCA7Civmr43niakgPCBoYWhhbW9ub1wgOwor5b2iIDwga2F0YWNoaVwgOwor6L2NIDwgd2FkYWNoaVwgOwor5be3IDwgY2hpbWF0YVwgOwor6LejIDwgaGFkYXNoaVwgOwor6LajIDwgb21vbXVraVwgOwor5bGAIDwgdHN1Ym9uZVwgOwor5a+nIDwgbXVzaGlyb1wgOwor5426IDwga2F3YXVzb1wgOwor54uQIDwga2l0c3VuZVwgOwor5auCIDwgYW5peW9tZVwgOwor6KmxIDwgaGFuYXNoaVwgOwor54eVIDwgdHN1YmFtZVwgOwor5ru0IDwgc2hpenVrdVwgOwor5rmWIDwgbWl6dXVtaVwgOwor5YmjIDwgdHN1cnVnaVwgOwor5YedIDwgc2hpa29yaVwgOwor5YagIDwga2FubXVyaVwgOwor5qS/IDwgdHN1YmFraVwgOwor5qKfIDwgZnVrdXJvdVwgOwor6aCCIDwgaXRhZGFraVwgOwor5p+xIDwgaGFzaGlyYVwgOwor5L+OIDwgbWFuYWl0YVwgOwor5p6XIDwgaGF5YXNoaVwgOwor5L6NIDwgc2FtdXJhaVwgOwor576KIDwgaGl0c3VqaVwgOwor5p2xIDwgaGlnYXNoaVwgOwor5piUIDwgbXVrYXNoaVwgOwor57WMIDwgdGF0ZWl0b1wgOwor6YymIDwgbmlzaGlraVwgOwor56eBIDwgd2F0YXNoaVwgOwor56WtIDwgbWF0c3VyaVwgOwor56S+IDwgeWFzaGlyb1wgOwor56K6IDwgdGFzaGlrYVwgOwor6YK4IDwgeWFzaGlraVwgOwor56S+5YWxIDwgc2hha3lvdVwgOwor5b+D5p2QIDwgc2hpbnphaVwgOwor6L+R6ZaTIDwgY2hpa2FtYVwgOwor5Y675bCxIDwga3lvc2h1dVwgOwor5YmN6KGoIDwgemVucHlvdVwgOwor5ZCb5YG0IDwga3Vuc29rdVwgOwor6L+96YCBIDwgdHN1aXNvdVwgOwor5Y2g5pyJIDwgc2VuJyd5dXVcIDsKK+W/jOaXpSA8IGtpbmljaGlcIDsKK+WNoOabuCA8IHVyYWJ1bWlcIDsKK+W4s+mdoiA8IGNob3VtZW5cIDsKK+ebtOmfsyA8IGNob2t1b25cIDsKK+WKn+e4viA8IGtvdXNla2lcIDsKK+awkealrSA8IG1pbmd5b3VcIDsKK+iWhOWRvSA8IGhha3VtZWlcIDsKK+W4remghiA8IHNla2lqdW5cIDsKK+ebiumzpSA8IGVraWNob3VcIDsKK+ayluWkqSA8IGNodXV0ZW5cIDsKK+S4i+WxpOWcnyA8IGthc291ZG9cIDsKK+W/nOaOpSA8IG91c2V0c3VcIDsKK+eeoOiLpSA8IGRvdWpha3VcIDsKK+i1t+WLleapnyA8IGtpZG91a2lcIDsKK+W+jOa1gSA8IGtvdXJ5dXVcIDsKK+WPrOWWmiA8IHNob3VrYW5cIDsKK+W8leeulyA8IGhpa2l6YW5cIDsKK+W4r+mdqSA8IG9iaWthd2FcIDsKK+WHuumHkSA8IHNodWtraW5cIDsKK+WNgeWtl+aetiA8IGp1dWppa2FcIDsKK+WPq+WWmiA8IGt5b3VrYW5cIDsKK+WQieWHtiA8IGtpa2t5b3VcIDsKK+mHjeWcpyA8IGp1dWF0c3VcIDsKK+i/sOmDqCA8IGp1dHN1YnVcIDsKK+m3suW6pyA8IHdhc2hpemFcIDsKK+W8k+eurSA8IGt5dXVzZW5cIDsKK+WIhumAsiA8IGJ1bnNoaW5cIDsKK+iPqeiWqSA8IGJvc2F0c3VcIDsKK+WIhumAnyA8IGZ1bnNva3VcIDsKK+awtOaSgyA8IHN1aWdla2lcIDsKK+ayouWcsCA8IHNhd2FjaGlcIDsKK+WIh+i/qyA8IHNlcHBha3VcIDsKK+WNl+acnSA8IG5hbmNob3VcIDsKK+S6uuW3pembqCA8IGppbmtvdXVcIDsKK+W/teW/tSA8IG5lbicnbmVuXCA7CivvvK7pn78gPCBlbnVreW91XCA7CivmraPntpogPCBzZWl6b2t1XCA7CivokL3nrKwgPCByYWt1ZGFpXCA7Civph6PlkIggPCB0c3VyaWFpXCA7CivmraPntbkgPCBzaG91a2VuXCA7CivppJPprLzpgZMgPCBnYWtpZG91XCA7CivljrPlrrkgPCBnZW4nJ3lvdVwgOwor6YCy6KGMIDwgc2hpbmtvdVwgOwor5ZCJ5YWGIDwga2l0Y2hvdVwgOwor5LiN5a6a5pyfIDwgZnV0ZWlraVwgOwor5YuV55qEIDwgZG91dGVraVwgOwor5ZCM5YOaIDwgZG91cnlvdVwgOwor5q2j57WMIDwgc2Vpa3lvdVwgOwor5YyX5rqAIDwgaG9rdW1hblwgOwor5Y2K5qC8IDwgaGFua2FrdVwgOwor6YCa6KyAIDwgdHN1dWJvdVwgOwor5qih5pOs5bqXIDwgbW9naXRlblwgOwor5Y+s5ZG9IDwgc2hvdW1laVwgOwor6YCa6KuWIDwgdHN1dXJvblwgOwor5bqP6KqsIDwgam9zZXRzdVwgOwor5rOl5LitIDwgZGVpY2h1dVwgOwor5bqV6KeSIDwgdGVpa2FrdVwgOwor5Ymy6IiIIDwgd2FyaWtvdVwgOwor5b6z5pybIDwgdG9rdWJvdVwgOwor5oCl5aSJIDwga3l1dWhlblwgOwor5Y+j5ZSHIDwga291c2hpblwgOwor6bOl57ayIDwgdG9yaWFtaVwgOwor5oGt5YC5IDwga3lvdWtlblwgOwor5Y+r5Y+3IDwga3lvdWdvdVwgOwor5Y+k5q2m6YGTIDwga29idWRvdVwgOwor5qCE6aSK57SgIDwgZWl5b3Vzb1wgOwor5Yi66KGdIDwgc2hpc2hvdVwgOwor5bm96LC3IDwgeXV1a29rdVwgOwor6YSZ5q2MIDwgaGluYXV0YVwgOwor5q6154mpIDwgZGFubW9ub1wgOwor5ZCM5L+hIDwgZG91c2hpblwgOwor55+z55ukIDwgc2VraWJhblwgOwor5q2756WoIDwgc2hpaHlvdVwgOwor5Ymy6IW5IDwga2FwcHVrdVwgOwor5buQ6IiOIDwga3l1dXNoYVwgOwor6YCa6KiIIDwgdHN1dWtlaVwgOwor5Y+w5YyXIDwgdGFpaG9rdVwgOwor5Yuk546LIDwga2luJydub3VcIDsKK+W/q+W+qSA8IGthaWZ1a3VcIDsKK+awkeaciSA8IG1pbicneXV1XCA7CivmrbTnqIsgPCByZWtpdGVpXCA7CivnoLTmu4UgPCBoYW1ldHN1XCA7CivmgKXlopcgPCBreXV1em91XCA7CivpgJrop6MgPCB0c3V1a2FpXCA7CivliKToqq0gPCBoYW5kb2t1XCA7Civph43llLEgPCBqdXVzaG91XCA7CivlkI3kvZwgPCBtZWlzYWt1XCA7CivpgJroprMgPCB0c3V1a2FuXCA7CivlvJTnpa0gPCBjaG91c2FpXCA7CivlkITlgZwgPCBrYWt1dGVpXCA7CivmganlgJ8gPCBvbnNoYWt1XCA7Civlj7LliocgPCBzaGlnZWtpXCA7CivljJfmtIsgPCBob2t1eW91XCA7CivpgJropqcgPCB0c3V1cmFuXCA7CivpganogIUgPCB0ZWtpc2hhXCA7Civlia/ohY4gPCBmdWt1amluXCA7CivnpL7kuK0gPCBzaGFjaHV1XCA7Civov73otIggPCB0c3Vpem91XCA7CivmgKXloLEgPCBreXV1aG91XCA7CivluKvplbcgPCBzaGljaG91XCA7CivliIDouqsgPCB0b3VzaGluXCA7CivliqDnrYYgPCBrYWhpdHN1XCA7Civljrvlo7AgPCBreW9zaG91XCA7CivlkI3ku6MgPCBteW91ZGFpXCA7CivljKHmraMgPCBreW91c2VpXCA7Civouqvli53miYsgPCBtaWdhdHRlXCA7CivlkIjkvZwgPCBnYXNzYWt1XCA7CivnhKHliKnlrZAgPCBtdXJpc2hpXCA7CivlvpPmpa0gPCBqdXVneW91XCA7CivljYrmmYIgPCBoYW50b2tpXCA7CivokL3no5AgPCByYWt1YmFuXCA7Civljp/lr6kgPCBnZW5zaGluXCA7Civmr5LmtrIgPCBkb2t1ZWtpXCA7CivlvbzmsI8gPCBrYXJlc2hpXCA7CivluJ3pmbUgPCB0ZWlyeW91XCA7CivlvrPmlL8gPCB0b2t1c2VpXCA7CivmsJHml48gPCBtaW56b2t1XCA7CivpgaDogLMgPCB0b29taW1pXCA7CivnkaDnkoPoibIgPCBydXJpaXJvXCA7CivlkI3kuLsgPCBuYW51c2hpXCA7CivmgKXlnYIgPCBreXV1aGFuXCA7CivliJ3oqLogPCBzaG9zaGluXCA7CivluoPop5IgPCBrb3VrYWt1XCA7CivlkInkuosgPCBraXRzdWppXCA7CivmsI/ml48gPCBzaGl6b2t1XCA7CivlvJTnoLIgPCBjaG91aG91XCA7Civlu7rnrZYgPCBrZW5zYWt1XCA7CivliY3okYkgPCB6ZW4nJ3lvdVwgOwor6YCa6KGMIDwgdHN1dWtvdVwgOwor5ZCM5LiAIDwgZG91aXRzdVwgOwor5bm+6KixIDwgaWt1YmFrdVwgOwor6YeN5Y6aIDwgY2hvdWtvdVwgOwor6I236YCBIDwgbmlva3VyaVwgOwor5b6p5penIDwgZnVra3l1dVwgOwor6IOD6IW454KOIDwgaWNob3VlblwgOwor5rKh5Y+OIDwgYm9zc2h1dVwgOwor5bu756ugIDwga2Fpc2hvdVwgOwor5Y2a5o2cIDwgaGFrdXNvdVwgOwor55+l55qEIDwgY2hpdGVraVwgOwor5ZCE5Lq6IDwga2FrdWppblwgOwor5q6L55WZIDwgemFucnl1dVwgOwor6LW35YuV5pmCIDwga2lkb3VqaVwgOwor5bmV6LuNIDwgYmFrdWd1blwgOwor5bu656uLIDwga29ucnl1dVwgOwor5rKD5ZywIDwgeW9rdWNoaVwgOwor6YGK6IiIIDwgeXV1a3lvdVwgOwor5b6p5paHIDwgZnVrdWJ1blwgOwor5ZCI5LiAIDwgZ291aXRzdVwgOwor5Yil6KGoIDwgYmVwcHlvdVwgOwor5Ymv572yIDwgZnVrdXNob1wgOwor5Y+X5Y+WIDwgdWtldG9yaVwgOwor5b+D5oi/IDwgc2hpbmJvdVwgOwor5Y+k5Yi5IDwga29zYXRzdVwgOwor5Yq055u4IDwgcm91c2hvdVwgOwor6YOt5riFIDwga2FrdXNlaVwgOwor5Ye66LWwIDwgc2h1c3NvdVwgOwor5bm76KaaIDwgZ2Vua2FrdVwgOwor5Ymb6IW5IDwgZ291ZnVrdVwgOwor5q666Zmj5birIDwgdGF0ZXNoaVwgOwor6aGe576p6KqeIDwgcnVpZ2lnb1wgOwor5q2v55+zIDwgc2hpc2VraVwgOwor5a626KiI57C/IDwga2FrZWlib1wgOwor5oGl5LiYIDwgY2hpa3l1dVwgOwor5YWo6bqmIDwgemVuYmFrdVwgOwor5Y2a5omTIDwgYmFrdWNoaVwgOwor6L+96KqNIDwgdHN1aW5pblwgOwor6YeP5YiRIDwgcnlvdWtlaVwgOwor6YeN5Yi7IDwganV1a29rdVwgOwor56K65a6IIDwga2FrdXNodVwgOwor55m76KiY57C/IDwgdG91a2lib1wgOwor6L+96KmmIDwgdHN1aXNoaVwgOwor5Ye66LOHIDwgc2h1c3NoaVwgOwor55yf6LSLIDwgc2hpbmdhblwgOwor5rCX5oyBIDwga2ltb2NoaVwgOwor6YeN5q+N6Z+zIDwganV1Ym9pblwgOwor5bmz6KeSIDwgaGVpa2FrdVwgOwor5q2j56K6IDwgc2Vpa2FrdVwgOwor6L+96KiOIDwgdHN1aXRvdVwgOwor5q+s5qCXIDwgaWdhZ3VyaVwgOwor5q2755eFIDwgc2hpYnlvdVwgOwor5YWx6bO0IDwga3lvdW1laVwgOwor5Y+N5Y+OIDwgdGFuc2h1dVwgOwor6YGF55+l5oG1IDwgb3NvZGppZVwgOwor5b+W5bqmIDwgc29udGFrdVwgOwor5biv6YeRIDwgb2JpZ2FuZVwgOwor6I2Y6YeNIDwgc291Y2hvdVwgOwor5aSn6YGO5Y67IDwgZGFpa2Frb1wgOwor5b+D5oOFIDwgc2hpbmpvdVwgOwor5Yy55pW1IDwgaGl0dGVraVwgOwor6YOo5rS7IDwgYnVrYXRzdVwgOwor6YeO5YWOIDwgbm91c2FnaVwgOwor5rC45bm0IDwgbmFnYW5lblwgOwor5Yqg566X5ZmoIDwga2FzYW5raVwgOwor6YCG6KGMIDwgZ3lha2tvdVwgOwor5aSn55u45pKyIDwgb296dW1vdVwgOwor6L+F6YCfIDwgamluc29rdVwgOwor5qmf6IO96KqeIDwga2lub3Vnb1wgOwor5b6M5pu4IDwgYXRvZ2FraVwgOwor5YmN6IaKIDwgemVucGFrdVwgOwor6YeR5YG0IDwga2luZ2F3YVwgOwor5b+D5oCnIDwgc2hpbnNlaVwgOwor6L+w6KqeIDwganV0c3Vnb1wgOwor56Kn5bGxIDwgaGVraXphblwgOwor5rKI5ZCfIDwgY2hpbmdpblwgOwor5pyJ5rCX6Z+zIDwgeXV1a2lvblwgOwor5YmN6ISzIDwgemVuJydub3VcIDsKK+W5tOihqCA8IG5lbnB5b3VcIDsKK+WJjeiEmiA8IG1hZWFzaGlcIDsKK+atjuensCA8IHRhbnNob3VcIDsKK+WHuuismyA8IHNodWtrb3VcIDsKK+S4jeadoeeQhiA8IGZ1am91cmlcIDsKK+WIuuiNiSA8IGlyYWt1c2FcIDsKK+WNg+aMryA8IHNlbmJ1cmlcIDsKK+W/g+W+lyA8IGtva29yb2VcIDsKK+aBkuS5hSA8IGtvdWt5dXVcIDsKK+WPquS7iiA8IHRhZGFpbWFcIDsKK+WPjeWJhyA8IGhhbnNva3VcIDsKK+WPo+S+myA8IGtvdWt5b3VcIDsKK+W8t+eBqyA8IHRzdXlvYmlcIDsKK+aBi+S7siA8IGtvaW5ha2FcIDsKK+atu+eQgyA8IHNoaWt5dXVcIDsKK+WKqeeVqiA8IHN1a2ViYW5cIDsKK+W+jOaXpSA8IGdvbmljaGlcIDsKK+mFjeW9uSA8IGhhaXlha3VcIDsKK+aBi+S6uiA8IGtvaWJpdG9cIDsKK+Wkp+mBk+WFtyA8IG9vZG91Z3VcIDsKK+WumuS9jee9riA8IHRlaWljaGlcIDsKK+aAquWKmyA8IGthaXJpa2lcIDsKK+W+geacjSA8IHNlaWZ1a3VcIDsKK+avjeanmCA8IGthYXNhbWFcIDsKK+ecn+irpiA8IHNoaW50ZWlcIDsKK+W8seeCuSA8IGpha3V0ZW5cIDsKK+mAo+iNmCA8IHJlbmNoYW5cIDsKK+WGhumhlCA8IG1hcnVnYW9cIDsKK+ebsumAsiA8IG1vdXNoaW5cIDsKK+W/oOWtnSA8IGNodXVrb3VcIDsKK+mzpeeesCA8IGNob3VrYW5cIDsKK+W5vOiZqyA8IHlvdWNodXVcIDsKK+iQveeQgyA8IHJha2t5dXVcIDsKK+W3qOmhjSA8IGt5b2dha3VcIDsKK+WJsueulyA8IHdhcml6YW5cIDsKK+mBi+mAgeWxiyA8IHVuc291eWFcIDsKK+mAoOWWtuiyuyA8IHpvdWVpaGlcIDsKK+WPjeWFsSA8IGhhbmt5b3VcIDsKK+aui+eFpyA8IHphbnNob3VcIDsKK+WMl+adsSA8IGhva3V0b3VcIDsKK+mAuOiBniA8IGl0c3VidW5cIDsKK+mFkuW4rSA8IHNodXNla2lcIDsKK+efs+eCrSA8IHNla2l0YW5cIDsKK+awt+WxsSA8IGh5b3V6YW5cIDsKK+W8leeOhyA8IGluc290c3VcIDsKK+W7tuedgCA8IGVuY2hha3VcIDsKK+awt+WxiyA8IGtvb3JpeWFcIDsKK+WNseWxgCA8IGtpa3lva3VcIDsKK+iSmeWPpOiqniA8IG1vdWtvZ29cIDsKK+WHuOinkiA8IHRva2tha3VcIDsKK+ebrumAgSA8IG1va3Vzb3VcIDsKK+apn+aisOenkSA8IGtpa2Fpa2FcIDsKK+ebtOi8uCA8IGNob2t1eXVcIDsKK+egleawtyA8IHNhaWh5b3VcIDsKK+ecn+iogCA8IHNoaW5nb25cIDsKK+W7uueZvSA8IGtlbnBha3VcIDsKK+atpueVpSA8IGJ1cnlha3VcIDsKK+aAp+WIhiA8IHNob3VidW5cIDsKK+WGl+mVtyA8IGpvdWNob3VcIDsKK+eiuuWgsSA8IGtha3Vob3VcIDsKK+W6p+iBtyA8IHphc2hva3VcIDsKK+WPo+S4rSA8IGtvdWNodXVcIDsKK+WGt+mFtyA8IHJlaWtva3VcIDsKK+asoeW5tOW6piA8IGppbmVuZG9cIDsKK+autOauuiA8IG91c2F0c3VcIDsKK+WFpemtgiA8IG55dXVrb25cIDsKK+W/l+WtpiA8IHNoaWdha3VcIDsKK+WkmumHjeWMliA8IHRhanV1a2FcIDsKK+W+gOaXpSA8IG91aml0c3VcIDsKK+axguWpmiA8IGt5dXVrb25cIDsKK+W7tueZuiA8IGVucGF0c3VcIDsKK+WNg+S7o+WlsyA8IGNoaXlvam9cIDsKK+ecn+ilvyA8IG1hbmlzaGlcIDsKK+WPpOekvuWvuiA8IGtvc2hhamlcIDsKK+W8k+eKtiA8IGt5dXVqb3VcIDsKK+mGnOWQjSA8IHNodXVtZWlcIDsKK+awkeW/gyA8IG1pbnNoaW5cIDsKK+aoqemrmCA8IGtlbmRha2FcIDsKK+S4gOWxpOebriA8IGlzc291bWVcIDsKK+awkeW+syA8IG1pbnRva3VcIDsKK+WPjeS/lyA8IGhhbnpva3VcIDsKK+axuuWLnSA8IGtlc3Nob3VcIDsKK+WGhemZuCA8IG5haXJpa3VcIDsKK+ebtOi3ryA8IGNob2t1cm9cIDsKK+mBqeeiuiA8IHRla2tha3VcIDsKK+iMtumHnCA8IGNoYWdhbWFcIDsKK+WokeWphuawlyA8IHNoYWJha2VcIDsKK+i+m+mFuCA8IHNoaW5zYW5cIDsKK+W4jOmHiCA8IGtpc2hha3VcIDsKK+WHtuihjCA8IGt5b3Vrb3VcIDsKK+avjuacnSA8IG1haWNob3VcIDsKK+eZvemvqCA8IGhha3VnZWlcIDsKK+WNiuW8kyA8IGhhbmt5dXVcIDsKK+WKseejgeapnyA8IHJlaWppa2lcIDsKK+S4jemmluWwviA8IGZ1c2h1YmlcIDsKK+WIneiNtyA8IGhhdHN1bmlcIDsKK+WMl+aUryA8IGhva3VzaGlcIDsKK+aCquaEn+WMliA8IGFra2Fua2FcIDsKK+W+hemBv+aJgCA8IHRhaWhpam9cIDsKK+WGhemWsiA8IG5haWV0c3VcIDsKK+WGhemWoyA8IG5haWtha3VcIDsKK+mFjeWxniA8IGhhaXpva3VcIDsKK+iUteWMvyA8IHpvdXRva3VcIDsKK+W4q+i1sCA8IHNoaXdhc3VcIDsKK+ayiOWAqyA8IGNoaW5yaW5cIDsKK+mFkuWuoiA8IHNodWtha3VcIDsKK+avlOaXpSA8IGhpbmljaGlcIDsKK+WOn+WRiiA8IGdlbmtva3VcIDsKK+Wbm+iCoeWQjSA8IHNoaWtvbmFcIDsKK+eZvemtmiA8IHNoaXJhdW9cIDsKK+WNiuW5tCA8IGhhbicnbmVuXCA7CivpgYvnrYYgPCB1bnBpdHN1XCA7Civpt7nljKAgPCB0YWtham91XCA7CivmrbTnhLYgPCByZWtpemVuXCA7CivkuI3kurrmsJcgPCBmdW5pbmtpXCA7CivlhazpoJggPCBrb3VyeW91XCA7Civov5HopqogPCBraW5zaGluXCA7CivmgKXkvb8gPCBreXV1c2hpXCA7Civlib3nm5cgPCBoeW91dG91XCA7Civlubzoi6UgPCB5b3VqYWt1XCA7Civopb/mrKfljJYgPCBzZWlvdWthXCA7CivlhajpoY0gPCB6ZW5nYWt1XCA7CivmqJnpq5ggPCBoeW91a291XCA7CivljbPlo7IgPCBzb2t1YmFpXCA7Civkuozpmo7lsYsgPCBuaWthaXlhXCA7CivljYPluqYgPCBjaGl0YWJpXCA7CivlvLfmsJcgPCB0c3V5b2tpXCA7Civmo5LmmpfoqJggPCBib3VhbmtpXCA7CivluoHoiI4gPCBjaG91c2hhXCA7CivliofnlYwgPCBnZWtpa2FpXCA7CivljYPlubQgPCBjaGl0b3NlXCA7CivkuI3kuIDoh7QgPCBmdWl0Y2hpXCA7CivooYDlj43lkJAgPCBjaGloZWRvXCA7CivliofnlJogPCBnZWtpamluXCA7CivmqKrpoZQgPCB5b2tvZ2FvXCA7Civmm7PngavlvL4gPCBlaWthZGFuXCA7Civli6fmpa0gPCBrYW5neW91XCA7Civlh53oppYgPCBneW91c2hpXCA7CivliLrnuY0gPCBzaGlzaHV1XCA7CivnnqDnm64gPCBkb3Vtb2t1XCA7Civlho3pjLIgPCBzYWlyb2t1XCA7CivnnJ/omasgPCBtYW11c2hpXCA7Civps6XnjaMgPCBjaG91anV1XCA7CivlvrnlrrUgPCB0ZXNzaG91XCA7CivljZHlsYggPCBoaWt1dHN1XCA7CivliqDnhrEgPCBrYW5ldHN1XCA7CivnsKHntKDljJYgPCBrYW5zb2thXCA7CivlgIvkvZPlt64gPCBrb3RhaXNhXCA7Civlho3pi7MgPCBzYWljaHV1XCA7CivmsLfloYogPCBoeW91a2FpXCA7CivlkIzpn7Poqp4gPCBkb3VvbmdvXCA7CivljZLlr78gPCBzb3RzdWp1XCA7CivlvLfmrLIgPCBnb3V5b2t1XCA7CivljZTlrpogPCBreW91dGVpXCA7CivlhbXplbcgPCBoZWljaG91XCA7CivphYzlqaYgPCBzaGFrdWZ1XCA7CivnoLLmkoMgPCBob3VnZWtpXCA7CivmsJflr4YgPCBraW1pdHN1XCA7CivpgbjnkIMgPCBzZW5reXV1XCA7Civljp/liYcgPCBnZW5zb2t1XCA7CivlhbHpl5ggPCBreW91dG91XCA7CivkuZfli5nlk6EgPCBqb3VtdWluXCA7Civnm7Toq6sgPCBjaG9ra2FuXCA7Civoo4/mnKjmiLggPCB1cmFraWRvXCA7CivnmbrppqwgPCBoYXRzdWJhXCA7CivliLrntaEgPCBzaGlyYWt1XCA7Civlhajpm4YgPCB6ZW5zaHV1XCA7CivljZPlrZAgPCB0ZWlidXJ1XCA7Civnm7Toq4cgPCBqaWtpZGFuXCA7CivlhaXpm7sgPCBueXV1ZGVuXCA7CivliY3nq6AgPCB6ZW5zaG91XCA7Civnn7PmrrUgPCBpc2hpZGFuXCA7Civmrabng4ggPCBidXJldHN1XCA7Civnm7ToqbEgPCBjaG9rdXdhXCA7Civno4HlipsgPCBqaXJ5b2t1XCA7CivmsLTlnqIgPCBtaXp1YWthXCA7CivlubPoh7wgPCBoaXJhdXN1XCA7CivlvbnmiYAgPCB5YWt1c2hvXCA7CivpgannlKggPCB0ZWtpeW91XCA7CivpgKPntpogPCByZW56b2t1XCA7CivljbXlmqIgPCByYW4nJ25vdVwgOwor5rCP5a+6IDwgdWppZGVyYVwgOwor5YWl6ZqKIDwgbnl1dXRhaVwgOwor5b+D5aSWIDwgc2hpbmdhaVwgOwor6YeR5q+Y576FIDwga29ucGlyYVwgOwor5Y2K5a61IDwgaGFuc2hvdVwgOwor6YCj57WhIDwgcmVucmFrdVwgOwor5Yi257SEIDwgc2VpeWFrdVwgOwor556R55uuIDwgbWVpbW9rdVwgOwor5Yqb54K5IDwgcmlraXRlblwgOwor5rC05ZynIDwgc3VpYXRzdVwgOwor5bm76IG0IDwgZ2VuY2hvdVwgOwor5qiZ6aGMIDwgaHlvdWRhaVwgOwor5rC35ZqiIDwgaHlvdW5vdVwgOwor5b+15YqbIDwgbmVucmlraVwgOwor54Sh6YCg5L2cIDwgbXV6b3VzYVwgOwor55u06KanIDwgamlraXJhblwgOwor5Y2D5bCLIDwgY2hpaGlyb1wgOwor5YWo6ZW3IDwgemVuY2hvdVwgOwor5Y2a5aSnIDwgaGFrdWRhaVwgOwor5Y2B5LqM5pmCIDwganV1bmlqaVwgOwor6JC95raZIDwgcmFrdXJ1aVwgOwor5YaF6YeRIDwgdWNoaWtpblwgOwor55m76aCCIDwgdG91Y2hvdVwgOwor55uX6LOKIDwgdG91em9rdVwgOwor5Y2a5aOrIDwgaGFrdXNoaVwgOwor5oSP5oOz5aSWIDwgaXNvdWdhaVwgOwor5LiN5a6J5a6aIDwgZnVhbnRlaVwgOwor55m66Z+zIDwgaGF0c3VvblwgOwor5YWl6ZaAIDwgbnl1dW1vblwgOwor5q+S5omLIDwgZG9rdXNodVwgOwor55+z5qmLIDwgc2Vra3lvdVwgOwor55yf6I+MIDwgc2hpbmtpblwgOwor55m96Z2iIDwgaGFrdW1lblwgOwor5b655aScIDwgdGV0c3V5YVwgOwor6Zmw6Zu75rCXIDwgaW5kZW5raVwgOwor55+z5qeoIDwgc2Vra2FrdVwgOwor5YiH6IW5IDwgc2VwcHVrdVwgOwor5b+g5ZCbIDwgY2h1dWt1blwgOwor6JaE6aas6bm/IDwgdXN1YmFrYVwgOwor6JS15Lq6IDwga3Vyb3Vkb1wgOwor5bm06ICBIDwgdG9zaGlvaVwgOwor6IuU6aGeIDwga29rZXJ1aVwgOwor5LiB5a2X6LevIDwgdGVpamlyb1wgOwor55m66ZyyIDwgaGF0c3Vyb1wgOwor5YWH6aGeIDwga3lvdXJ1aVwgOwor6YCU57W2IDwgdG96ZXRzdVwgOwor55u06KGMIDwgY2hva2tvdVwgOwor5Yqb5ryVIDwgcmlraXNvdVwgOwor5Y2g5ZywIDwgc2hpbWVqaVwgOwor5b+D5ZywIDwga29rb2NoaVwgOwor5o+Q56S66YOoIDwgdGVpamlidVwgOwor5YWI6aCDIDwgc2Vua29yb1wgOwor5q275q+SIDwgc2hpZG9rdVwgOwor5oWw5ZWP5ZOBIDwgaW1vbmhpblwgOwor5bqc56uLIDwgZnVyaXRzdVwgOwor5Y6f5L2cIDwgZ2Vuc2FrdVwgOwor5Y2w5ZOyIDwgaW50ZXRzdVwgOwor5Ya36KmVIDwgcmVpaHlvdVwgOwor5b+D5ZugIDwgc2hpbicnaW5cIDsKK+mAn+eulyA8IHNva3VzYW5cIDsKK+WOhOWJjSA8IHlha3VtYWVcIDsKK+aui+alrSA8IHphbmd5b3VcIDsKK+iNkuihjCA8IGFyYWd5b3VcIDsKK+WGhemAmiA8IG5haXRzdXVcIDsKK+imquaWh+WtlyA8IG95YW1vamlcIDsKK+WLneaZryA8IHNob3VrZWlcIDsKK+eereeEtiA8IHJ5b3V6ZW5cIDsKK+W+k+WxniA8IGp1dXpva3VcIDsKK+W8pualvSA8IGdlbmdha3VcIDsKK+WKg+eEtiA8IGtha3V6ZW5cIDsKK+WNs+WQnyA8IHNva3VnaW5cIDsKK+WNg+WnqyA8IHNlbmhpbWVcIDsKK+W/oOWLpCA8IGNodXVraW5cIDsKK+W/oOWLhyA8IGNodXV5dXVcIDsKK+eQhuiyoeWutiA8IHJpemFpa2FcIDsKK+WGt+immiA8IHJlaWtha3VcIDsKK+mAmueulyA8IHRzdXVzYW5cIDsKK+mAhue4gSA8IGd5YWt1ZW5cIDsKK+acieiAtueEoeiAtiA8IHV5YW11eWFcIDsKK+eoveWPpOaXpSA8IGtlaWtvYmlcIDsKK+WInee0miA8IHNob2t5dXVcIDsKK+avkuaApyA8IGRva3VzZWlcIDsKK+W3oemBiiA8IGp1bicneXV1XCA7CivlvpPlrrkgPCBzaG91eW91XCA7CivljZflm70gPCBuYW5nb2t1XCA7CivkuozloYHmiZMgPCBuaXJ1aWRhXCA7CivlvLfmmrQgPCBreW91Ym91XCA7CivluZXoiI4gPCBiYWt1c2hhXCA7CivmsLfljp8gPCBoeW91Z2VuXCA7CivlubPnuZQgPCBoaXJhb3JpXCA7Civlv5zlipsgPCBvdXJ5b2t1XCA7Civli53mlZcgPCBzaG91aGFpXCA7CivmiYvnm7joposgPCB0ZXNvdW1pXCA7CivmsYLliJEgPCBreXV1a2VpXCA7CivlpJznm5fom74gPCB5b3RvdWdhXCA7Civlt7vosp0gPCBtYWtpZ2FpXCA7CivlvI/mrKEgPCBzaGlraWppXCA7CivlhpnosaEgPCBzaGFzaG91XCA7CivlpbPmgKfnvo4gPCBqb3NlaWJpXCA7Civmrovmn7EgPCB6YW5jaHV1XCA7Civnn7PmnZAgPCBzZWtpemFpXCA7Civpoqjpgqrlo7AgPCBrYXplZ29lXCA7Civljq3kuJblrrYgPCBlbnNlaWthXCA7Civpgqbmpb0gPCBob3VnYWt1XCA7CivliaPnjokgPCBrZW5kYW1hXCA7CivljJfltrogPCBob2t1cmVpXCA7CivlubTntaYgPCBuZW5reXV1XCA7Civlhajph48gPCB6ZW5yeW91XCA7CivlvozlraYgPCBrb3VnYWt1XCA7CivpgoTmtYEgPCBrYW5yeXV1XCA7CivljbPliLsgPCBzb2trb2t1XCA7Civlh7bogZ4gPCBreW91YnVuXCA7CivmsJHlm70gPCBtaW5rb2t1XCA7CivlhaXph5EgPCBueXV1a2luXCA7CivliZvnkIMgPCBnb3VreXV1XCA7Civnhqjmlpfnm64gPCBub3NoaW1lXCA7CivljYrlm70gPCBoYW5nb2t1XCA7CivmsLjliKUgPCBlaWJldHN1XCA7Civphbfkvb8gPCBrb2t1c2hpXCA7Civlv6vkvZwgPCBrYWlzYWt1XCA7CivljbDliLcgPCBpbnNhdHN1XCA7Civov73ntI0gPCB0c3Vpbm91XCA7CivmsLfliIMgPCBoeW91amluXCA7CivpmbDorIDlrrYgPCBpbmJvdWthXCA7Civlha3pgZMgPCByb2t1ZG91XCA7CivljJflsrggPCBob2t1Z2FuXCA7CivpgIHnsY0gPCBzb3VzZWtpXCA7CivliKXnp7AgPCBiZXNzaG91XCA7Civpmo/mhI/nrYsgPCB6dWlpa2luXCA7Civluq3nlaogPCBuaXdhYmFuXCA7CivovrLolqwgPCBub3V5YWt1XCA7CivpgYrnjJ8gPCB5dXVyeW91XCA7CivnmbvpjLIgPCB0b3Vyb2t1XCA7CivljaDljZwgPCBzZW5ib2t1XCA7CivmiYvliqDmuJsgPCB0ZWthZ2VuXCA7Civorprnvo7mrYwgPCBzYW5iaWthXCA7CivokYnmnIggPCBoYWR6dWtpXCA7Civlt6jos4ogPCBreW96b2t1XCA7Civoj6/nh60gPCBrYXNob2t1XCA7CivlvZPmg5EgPCB0b3V3YWt1XCA7CivliIbntI0gPCBidW4nJ25vdVwgOwor5Yid56mCIDwgaGF0c3Vob1wgOwor5b+F5YudIDwgaGlzc2hvdVwgOwor55m96YqRIDwgaGFrdXNlblwgOwor5YWo6YCfIDwgemVuc29rdVwgOwor5YWl6YG4IDwgbnl1dXNlblwgOwor5YWo6YCaIDwgemVudHN1dVwgOwor55m96YqFIDwgaGFrdWRvdVwgOwor55m96YqAIDwgaGFrdWdpblwgOwor5YWl6YGTIDwgbnl1dWRvdVwgOwor6YKq5puyIDwgamFreW9rdVwgOwor5Y2c5Y2gIDwgYm9rdXNlblwgOwor5ZCM5L2N5L2TIDwgZG91aXRhaVwgOwor5bel6LODIDwga291Y2hpblwgOwor5rC35YOPIDwgaHlvdXpvdVwgOwor6aGe6Z+z6KqeIDwgcnVpb25nb1wgOwor6YGK54mnIDwgeXV1Ym9rdVwgOwor6YCx55WqIDwgc2h1dWJhblwgOwor5b+D5Yq0IDwgc2hpbnJvdVwgOwor5Yid56eLIDwgc2hvc2h1dVwgOwor5bm+56iLIDwgaWt1aG9kb1wgOwor5q6L5pW1IDwgemFudGVraVwgOwor6YCa56CUIDwgdHN1dWtlblwgOwor5Y2U5ZCMIDwga3lvdWRvdVwgOwor5bmz562JIDwgYnlvdWRvdVwgOwor5Y+J5omL57ayIDwgc2FkZWFtaVwgOwor5Y2z5YCkIDwgc29rdWNoaVwgOwor6YCa55+lIDwgdHN1dWNoaVwgOwor55mC6aSKIDwgcnlvdXlvdVwgOwor5bm056uvIDwgdG9zaGloYVwgOwor5bqt55CDIDwgdGVpa3l1dVwgOwor5q6J5pWZIDwganVua3lvdVwgOwor5q2M5rKiIDwgdXRhemF3YVwgOwor5YuB5pW1IDwga2VpdGVraVwgOwor5YaN6Kq/IDwgc2FpY2hvdVwgOwor5YaN6KqtIDwgc2FpZG9rdVwgOwor5rGC5Lq6IDwga3l1dWppblwgOwor5Yqf5qWtIDwga291Z3lvdVwgOwor6Imy6buSIDwgaXJvZ3Vyb1wgOwor5Y2X5YyXIDwgbmFuYm9rdVwgOwor5bCP57as6baPIDwga29qdWtlaVwgOwor5Y2a5Yq0IDwgYmFrdXJvdVwgOwor5pm06Zuo6KiIIDwgc2VpdWtlaVwgOwor5paH5bqr5YyWIDwgYnVua29rYVwgOwor56C05bGAIDwgaGFreW9rdVwgOwor5q2j5qWtIDwgc2VpZ3lvdVwgOwor6YeO5qyh6aasIDwgeWFqaXVtYVwgOwor5biv6IqvIDwgb2Jpc2hpblwgOwor5Y2K5ZGoIDwgaGFuc2h1dVwgOwor6YGh5rqQIDwgc2FrdWdlblwgOwor5YWo6LqrIDwgemVuc2hpblwgOwor5q+S5a6zIDwgZG9rdWdhaVwgOwor6KGX6Lev5qi5IDwgZ2Fpcm9qdVwgOwor5YaF6Ku+IDwgbmFpZGFrdVwgOwor5bm456aPIDwga291ZnVrdVwgOwor5Yuk5oGqIDwga2lua2FrdVwgOwor5Ye657K+IDwgc2h1c3NlaVwgOwor5b6p5ZG9IDwgZnVrdW1laVwgOwor6Iul6YCgIDwgd2FrYXpvdVwgOwor5bqX55WqIDwgbWlzZWJhblwgOwor6a2N6a2OIDwgbW91cnlvdVwgOwor5o6n6Ki06ZmiIDwga291c29pblwgOwor6YGp5rOVIDwgdGVraWhvdVwgOwor5YSq6ZW3IDwgeXV1Y2hvdVwgOwor5b+Z5LitIDwgYm91Y2h1dVwgOwor5Y2R5YqjIDwgaGlyZXRzdVwgOwor5Yip55m6IDwgcmloYXRzdVwgOwor5LuZ5Lq65o6MIDwgc2Fib3RlblwgOwor5b6p5Y+3IDwgZnVrdWdvdVwgOwor5b+D5YOPIDwgc2hpbnpvdVwgOwor6YCj55SoIDwgcmVuJyd5b3VcIDsKK+awl+WKmyA8IGtpcnlva3VcIDsKK+auteW5syA8IGRhbmJpcmFcIDsKK+WFseiyqSA8IGt5b3VoYW5cIDsKK+WGheiovCA8IG5haXNob3VcIDsKK+WGheiouiA8IG5haXNoaW5cIDsKK+WJiueJhyA8IHNha3VoZW5cIDsKK+W+qeWOnyA8IGZ1a3VnZW5cIDsKK+eZuumAsiA8IGhhc3NoaW5cIDsKK+W8lOaWhyA8IGNob3VidW5cIDsKK+WMl+WkqSA8IGhva3V0ZW5cIDsKK+WMl+WkpyA8IGhva3VkYWlcIDsKK+WFg+mHkSA8IG1vdG9raW5cIDsKK+iLpei8qSA8IGpha3VoYWlcIDsKK+ebiuiZqyA8IGVraWNodXVcIDsKK+W+s+WIqSA8IHRva2t1cmlcIDsKK+WLgeaNtyA8IGtlaXNob3VcIDsKK+W/heS/riA8IGhpc3NodXVcIDsKK+ebsuiFuCA8IG1vdWNob3VcIDsKK+W+s+WIhiA8IHRva3VidW5cIDsKK+iSuOWZqCA8IG11c2hpa2lcIDsKK+W+ruWKmyA8IGJpcnlva3VcIDsKK+WMv+WQjSA8IHRva3VtZWlcIDsKK+W6teeCuSA8IGlvcml0ZW5cIDsKK+W7tuajkiA8IG5vYmVib3VcIDsKK+W4uOe/kiA8IGpvdXNodXVcIDsKK+WItueQgyA8IHNlaWt5dXVcIDsKK+WIhuenkiA8IGZ1bmJ5b3VcIDsKK+atk+alvSA8IGthbnJha3VcIDsKK+awtOS4rSA8IHN1aWNodXVcIDsKK+mDqOWxgCA8IGJ1a3lva3VcIDsKK+WHjeiCiSA8IHRvdW5pa3VcIDsKK+mAmueUqCA8IHRzdXV5b3VcIDsKK+iNieiJsiA8IGt1c2Fpcm9cIDsKK+WMl+WigyA8IGhva2t5b3VcIDsKK+mtgumthCA8IGtvbnBha3VcIDsKK+W+tOWFtSA8IGNob3VoZWlcIDsKK+mFjeS/oSA8IGhhaXNoaW5cIDsKK+mAl+eVmSA8IHRvdXJ5dXVcIDsKK+mBqeatoyA8IHRla2lzZWlcIDsKK+ato+acnSA8IHNlaWNob3VcIDsKK+ato+aclCA8IHNlaXNha3VcIDsKK+WHhOiFlSA8IHN1Z291ZGVcIDsKK+WFiemAnyA8IGtvdXNva3VcIDsKK+WLmOW/jSA8IGthbicnbmluXCA7CivlhYjpgLIgPCBzZW5zaGluXCA7CivlhYjpgLEgPCBzZW5zaHV1XCA7CivlhaXosqIgPCBueXV1a291XCA7CivphZLku6MgPCBzYWthZGFpXCA7Civnmb3ouqsgPCBzaGlyb21pXCA7Civlt6vooZMgPCBmdWp1dHN1XCA7CivpgJ/nkIMgPCBzb2treXV1XCA7Civov5TntI0gPCBoZW4nJ25vdVwgOwor5b6p5Yi7IDwgZnVra29rdVwgOwor6Lu96ZyHIDwga2Vpc2hpblwgOwor6I2S6IKdIDwgYXJhZ2ltb1wgOwor5Ye656mCIDwgc2h1c3N1aVwgOwor5byV5o+bIDwgaGlraWthZVwgOwor6Ly76LyzIDwgZnVrdXNvdVwgOwor5qyy5rGCIDwgeW9ra3l1dVwgOwor5bu25p2/IDwgbm9iZWl0YVwgOwor55yf56m6IDwgc2hpbmt1dVwgOwor55y855uuIDwgZ2FubW9rdVwgOwor5byV5o6lIDwgaW5zZXRzdVwgOwor6Imy6a2UIDwgc2hpa2ltYVwgOwor5b+F5LitIDwgaGl0Y2h1dVwgOwor6Lyq6YOtIDwgcmlua2FrdVwgOwor576p5o+06YeRIDwgZ2llbmtpblwgOwor5Y2Y5L2cIDwgdGFuc2FrdVwgOwor55yB57eaIDwgc2hvdXNlblwgOwor5by+5bmVIDwgZGFubWFrdVwgOwor5bm055uKIDwgbmVuJydla2lcIDsKK+W+qeWFmiA8IGZ1a3V0b3VcIDsKK+WFiei7uCA8IGtvdWppa3VcIDsKK+W7v+aXpSA8IGhhdHN1a2FcIDsKK+W8seW/lyA8IGpha3VzaGlcIDsKK+WMl+WbvSA8IGhva2tva3VcIDsKK+W8t+W8gSA8IGt5b3ViZW5cIDsKK+mChOaapiA8IGthbnJla2lcIDsKK+WKseaMryA8IHJlaXNoaW5cIDsKK+i+nuiJsiA8IGppc2hva3VcIDsKK+WHuuekviA8IHNodXNzaGFcIDsKK+iNieiCpSA8IGt1c2Fnb2VcIDsKK+WIqeeOhyA8IHJpcml0c3VcIDsKK+eZuui2syA8IGhvc3Nva3VcIDsKK+WFrOiplSA8IGtvdWh5b3VcIDsKK+WFrOiovCA8IGtvdXNob3VcIDsKK+WNgeWFrSA8IGp1dXJva3VcIDsKK+WIpeePjSA8IGJldGNoaW5cIDsKK+WNlOS8miA8IGt5b3VrYWlcIDsKK+S/r+eesOWbsyA8IGZ1a2FuenVcIDsKK+W+oeaWsOmmmSA8IG9zaGlua29cIDsKK+S6nOexs+WIqeWKoCA8IGFtZXJpa2FcIDsKK+WMuuWIpSA8IGt1YmV0c3VcIDsKK+WNg+WEhCA8IHNlbicnb2t1XCA7CivmsJfkvY0gPCBraWd1cmFpXCA7CivlvqHlrrbkurogPCBnb2tlbmluXCA7CivlvLHlvJ8gPCBqYWt1dGVpXCA7CivlhbHopZ8gPCB0b21vZXJpXCA7CivnnLznl4UgPCBnYW5ieW91XCA7Civlha3op5IgPCByb2trYWt1XCA7CivljZLkvI0gPCBzb3RzdWdvXCA7CivlpKflr7rpmaIgPCBkYWlqaWluXCA7Civmrq/lrq4gPCBoaW5reXV1XCA7CivnoJTlraYgPCBrZW5nYWt1XCA7Civmrovlv7UgPCB6YW4nJ25lblwgOwor6I2356mNIDwgbmlkenVtaVwgOwor5Y2X5LitIDwgbmFuY2h1dVwgOwor5Ya36IKJIDwgcmVpbmlrdVwgOwor6JC95omLIDwgcmFrdXNodVwgOwor55u457aaIDwgc291em9rdVwgOwor5q6L5b+NIDwgemFuJyduaW5cIDsKK+awl+S7mCA8IGtpZHp1a2VcIDsKK+WFpeippiA8IG55dXVzaGlcIDsKK+aui+W/gyA8IHphbnNoaW5cIDsKK+eDj+e+veeOiSA8IHViYXRhbWFcIDsKK+WJtealrSA8IHNvdWd5b3VcIDsKK+WHoeetliA8IGJvbnNha3VcIDsKK+WLieW8tyA8IGJlbmt5b3VcIDsKK+WFseijjyA8IHRvbW91cmFcIDsKK+W+jOWOhCA8IGF0b3lha3VcIDsKK+iQveaIkCA8IHJha3VzZWlcIDsKK+WFqOinkiA8IHplbmtha3VcIDsKK+W8seW5tCA8IGpha3VuZW5cIDsKK+WLp+WtpiA8IGthbmdha3VcIDsKK+WNiuS9nCA8IGhhbnNha3VcIDsKK+W6tua1gSA8IHNob3J5dXVcIDsKK+aAp+ihjOeCuiA8IHNlaWtvdWlcIDsKK+attOaIpiA8IHJla2lzZW5cIDsKK+S4gOiIrOWMliA8IGlwcGFua2FcIDsKK+W3neidpiA8IGthd2FlYmlcIDsKK+atjOabsiA8IGtha3lva3VcIDsKK+W+heWQiCA8IG1hY2hpYWlcIDsKK+W4sOe1kCA8IGtpa2V0c3VcIDsKK+efs+W6rSA8IHNla2l0ZWlcIDsKK+WNkuS4rSA8IHNvdGNodXVcIDsKK+WNk+S4iiA8IHRha3Vqb3VcIDsKK+WFhei2syA8IGp1dXNva3VcIDsKK+iMtuiFuSA8IGNoYWJhcmFcIDsKK+WFjeiyrCA8IG1lbnNla2lcIDsKK+iNkue4hCA8IGFyYW5hd2FcIDsKK+WDu+mahSA8IGhla2lndXVcIDsKK+WKh+aakSA8IGdla2lzaG9cIDsKK+ebtOe1jCA8IGNob2trZWlcIDsKK+WNgeS6lOWknCA8IGp1dWdveWFcIDsKK+ebrue4gSA8IG1hYnVjaGlcIDsKK+WDu+mZrCA8IGhla2lzdXVcIDsKK+mBjeattCA8IGhlbnJla2lcIDsKK+W4r+e0mSA8IG9iaWdhbWlcIDsKK+W5sueToiA8IGthbnB5b3VcIDsKK+WEn+mHkSA8IHNob3VraW5cIDsKK+awj+S6uiA8IHVqaWhpdG9cIDsKK+efpeW+syA8IGNoaXRva3VcIDsKK+mBiuattCA8IHl1dXJla2lcIDsKK+S6jOmZouWItiA8IG5paW5zZWlcIDsKK+WFrOihhiA8IGtvdXNodXVcIDsKK+WFiOiyoCA8IHNlbm1ha2VcIDsKK+ecvOeQgyA8IGdhbmt5dXVcIDsKK+W4veeroCA8IGJvdXNob3VcIDsKK+i/keensCA8IGtpbnNob3VcIDsKK+eZuuitsCA8IGhhdHN1Z2lcIDsKK+WHuueboyA8IHNodWtrYW5cIDsKK+mAgeeQgyA8IHNvdWt5dXVcIDsKK+WutuaUv+WppiA8IGthc2VpZnVcIDsKK+iJr+miqCA8IHJ5b3VmdXVcIDsKK+WIhueVmSA8IGJ1bnJ5dXVcIDsKK+WLmOWvqSA8IGthbnNoaW5cIDsKK+mBqeadkCA8IHRla2l6YWlcIDsKK+mCgOaSgyA8IHlvdWdla2lcIDsKK+mAo+a/gSA8IHJlbmRha3VcIDsKK+esrOS6jOe+qSA8IGRhaW5pZ2lcIDsKK+atv+W+jCA8IGJvdHN1Z29cIDsKK+WGhui7jOmBkyA8IGVua2lkb3VcIDsKK+ecn+ebuCA8IHNoaW5zb3VcIDsKK+ecn+ebtCA8IG1hc3N1Z3VcIDsKK+W9ueWQjSA8IHlha3VtZWlcIDsKK+W+k+WDlSA8IGp1dWJva3VcIDsKK+mBk+alvSA8IGRvdXJha3VcIDsKK+eerOaWrSA8IHNodW5kYW5cIDsKK+mHjuiRoeiQhCA8IG5vYnVkb3VcIDsKK+eZuuiqniA8IGhhdHN1Z29cIDsKK+WLp+WlqCA8IGthbnNob3VcIDsKK+WKm+aKlSA8IHJpa2l0b3VcIDsKK+WIkeeNhCA8IGtlaWdva3VcIDsKK+eZvuioiCA8IGh5YWtrZWlcIDsKK+WNg+S4oSA8IHNlbnJ5b3VcIDsKK+W+jOWFiCA8IGF0b3Nha2lcIDsKK+WNgeS5nSA8IGp1dWt5dXVcIDsKK+eZuuipsSA8IGhhdHN1d2FcIDsKK+WMl+WNiiA8IGhva3VoYW5cIDsKK+W7g+alrSA8IGhhaWd5b3VcIDsKK+eZuuiouyA8IGhhdGNodXVcIDsKK+WNgeS4oSA8IGp1dXJ5b3VcIDsKK+WKm+aIpiA8IHJpa2lzZW5cIDsKK+WNgeS4gyA8IGp1dW5hbmFcIDsKK+WNgeS4gCA8IGp1dWljaGlcIDsKK+W8leW9kyA8IGhpa2lhdGVcIDsKK+mAuOawkSA8IGl0c3VtaW5cIDsKK+W+i+WEgCA8IHJpY2hpZ2lcIDsKK+W/nOWLn+iAhSA8IG91Ym9zaGFcIDsKK+WJjeattCA8IHplbnJla2lcIDsKK+WJr+acrCA8IGZ1a3Vob25cIDsKK+iJsemboyA8IGthbicnbmFuXCA7Civpurvlrp/msrkgPCBhc2FtaXl1XCA7CivojLbpo6/kuosgPCBzYWhhbmppXCA7CivlvI/lvq4gPCBzaGlraWJpXCA7CivpgYrmpb0gPCB5dXVyYWt1XCA7Civou73ph48gPCBrZWlyeW91XCA7Civou73ph40gPCBrZWljaG91XCA7Civnm67nrpcgPCBtb2t1c2FuXCA7Civlh7rnlKMgPCBzaHVzc2FuXCA7CivnmbroppogPCBoYWtrYWt1XCA7CivpgLLmsLQgPCBzaGluc3VpXCA7Civlhavph43pm7IgPCB5YWVndW1hXCA7CivmrLLmnJsgPCB5b2t1Ym91XCA7Civli4flsIYgPCB5dXVzaG91XCA7Civnm5/ntIQgPCBtZWl5YWt1XCA7Civnm7jnp7AgPCBzb3VzaG91XCA7Civlvbzlh6YgPCBrYXNoaWtvXCA7Civnn67lsI8gPCB3YWlzaG91XCA7Civnnavmr5sgPCBtYXRzdWdlXCA7CivpgrjlroUgPCB0ZWl0YWt1XCA7Civnm67nq68gPCBtZWhhc2hpXCA7Civli4nlraYgPCBiZW5nYWt1XCA7Civpr6jogokgPCBnZWluaWt1XCA7CivlhKrotoogPCB5dXVldHN1XCA7Civnmb7ooYwgPCBoeWFra291XCA7Civov5HnnLwgPCBjaGlrYW1lXCA7Civoj4zmr5IgPCBraW5kb2t1XCA7CivmrbTlubQgPCByZWtpbmVuXCA7CivmnKrouI/mn7sgPCBtaXRvdXNhXCA7CivlvJPluKsgPCB5dW1pc2hpXCA7CivlhYjoppogPCBzZW5rYWt1XCA7CivlvozkvZwgPCBhdG9zYWt1XCA7Civlt6joiLYgPCBreW9oYWt1XCA7CivlupXmtYEgPCB0ZWlyeXV1XCA7CivntbXokYnmm7ggPCBlaGFnYWtpXCA7CivnmbrooaggPCBoYXBweW91XCA7Civpgbjmip4gPCBzZW50YWt1XCA7CivmrKDmoLwgPCBrZWtrYWt1XCA7CivlhbHokZcgPCBreW91Y2hvXCA7CivnqL3lj6TloLQgPCBrZWlrb2JhXCA7CivluoPmvKAgPCBrb3ViYWt1XCA7CivojYnnrJsgPCBrdXNhYnVlXCA7Civli53loLEgPCBzaG91aG91XCA7CivliJ3mva4gPCBzaG9jaG91XCA7CivliqnlubMgPCBzdWtlYmVpXCA7CivlronlhajmnJ8gPCBhbnplbmtpXCA7CivlvLflpKcgPCBreW91ZGFpXCA7Civlj43mhI/oqp4gPCBoYW4nJ2lnb1wgOwor6Lyq6KqtIDwgcmluZG9rdVwgOwor55+l5bCGIDwgY2hpc2hvdVwgOwor5YaF6IacIDwgbmFpbWFrdVwgOwor5by35aOuIDwga3lvdXNvdVwgOwor5b255YOnIDwgeWFrdXNvdVwgOwor5YCL5Lq65beuIDwga29qaW5zYVwgOwor5YqH5oimIDwgZ2VraXNlblwgOwor57eP5YuZ6YOoIDwgc291bXVidVwgOwor5q+S5YiDIDwgZG9rdWppblwgOwor55m96J2LIDwgaGFrdXJvdVwgOwor5biG57axIDwgaG9kenVuYVwgOwor6LuN6ZW3IDwgZ3VuY2hvdVwgOwor5Yqb5b25IDwgcmlraWVraVwgOwor6K2m6YOo6KOcIDwga2VpYnVob1wgOwor5Ya356yRIDwgcmVpc2hvdVwgOwor5LiO5aSq6YOOIDwgeW90YXJvdVwgOwor6Iy257KlIDwgY2hhZ2F5dVwgOwor5bu75b+DIDwga2Fpc2hpblwgOwor55yL55eFIDwga2FuYnlvdVwgOwor55uu56S8IDwgbW9rdXJlaVwgOwor6Ly46KGAIDwgeXVrZXRzdVwgOwor5L2N54mM5aCCIDwgaWhhaWRvdVwgOwor5Yud5ZywIDwgc2hvdWNoaVwgOwor5Yid5rmvIDwgaGF0c3V5dVwgOwor576p5aSq5aSrIDwgZ2lkYXl1dVwgOwor5Ye254ybIDwga3lvdW1vdVwgOwor5LiJ6Z6t6YWSIDwgc2hhbnBlblwgOwor6Imm6ZW3IDwga2FuY2hvdVwgOwor5aaD5q6/5LiLIDwgaGlkZW5rYVwgOwor5YeN55+zIDwgdG91c2VraVwgOwor5Yi25qyyIDwgc2VpeW9rdVwgOwor5Ye654mIIDwgc2h1cHBhblwgOwor5byf5auBIDwgb3RveW9tZVwgOwor5Ye254q2IDwga3lvdWpvdVwgOwor5qi66ImyIDwga2FiYWlyb1wgOwor6YCA5r2uIDwgdGFpY2hvdVwgOwor56CC5ZywIDwgc3VuYWNoaVwgOwor6YGT5pWZIDwgZG91a3lvdVwgOwor5ryr55S75a62IDwgbWFuZ2FrYVwgOwor6YGO5pelIDwga2FqaXRzdVwgOwor6Lui6YedIDwgdGVuc2hpblwgOwor6Iy2566xIDwgY2hhYmFrb1wgOwor5biw552AIDwga2ljaGFrdVwgOwor6YGp5omAIDwgdGVraXNob1wgOwor5YO76YKRIDwgaGVraXl1dVwgOwor5LiN5pys5oSPIDwgZnVob24nJ2lcIDsKK+atjuaBryA8IHRhbnNva3VcIDsKK+iLm+iZkCA8IGthZ3lha3VcIDsKK+atqeWQiOeulyA8IGJ1YWl6YW5cIDsKK+W9q+WDjyA8IGNob3V6b3VcIDsKK+iqnuW9meeahCA8IGdvaXRla2lcIDsKK+efs+WhlCA8IHNla2l0b3VcIDsKK+i/lOeQgyA8IGhlbmt5dXVcIDsKK+efs+WhgCA8IGlzaGliZWlcIDsKK+W8n+WnqyA8IG90b2hpbWVcIDsKK+WIqeauliA8IHJpc2hva3VcIDsKK+W9ueS6uiA8IHlha3VuaW5cIDsKK+i+seefpSA8IGpva3VjaGlcIDsKK+WLp+WRiiA8IGthbmtva3VcIDsKK+ebsuebriA8IG1vdW1va3VcIDsKK+eXm+miqCA8IHRzdXVmdXVcIDsKK+mAuOadkCA8IGl0c3V6YWlcIDsKK+esrOS4gOiqsiA8IGRhaWlra2FcIDsKK+WHuueCrSA8IHNodXR0YW5cIDsKK+W8seWbvSA8IGpha2tva3VcIDsKK+iNt+eJqSA8IG5pbW90c3VcIDsKK+WMl+S4iiA8IGhva3Vqb3VcIDsKK+S6leaIuOerryA8IGlkb2JhdGFcIDsKK+WJr+aJiyA8IGZ1a3VzaHVcIDsKK+WJveaCjSA8IGh5b3VrYW5cIDsKK+iJsumHjCA8IGlyb3phdG9cIDsKK+eQhuS6i+S8miA8IHJpamlrYWlcIDsKK+ebpOefsyA8IGJhbmpha3VcIDsKK+i+suebuCA8IG5vdXNob3VcIDsKK+mBiuaSgyA8IHl1dWdla2lcIDsKK+eBq+abnOaXpSA8IGtheW91YmlcIDsKK+WFpeiIjiA8IG55dXVzaGFcIDsKK+W+oeS4jea1hCA8IGdvZnVqb3VcIDsKK+mAkOasoSA8IGNoaWt1amlcIDsKK+i+uueWhiA8IGhlbmt5b3VcIDsKK+WJjeaWuSA8IG1hZWthdGFcIDsKK+eZveiPnCA8IGhha3VzYWlcIDsKK+acquWumue+qSA8IG1pdGVpZ2lcIDsKK+WJsuaEmyA8IGthdHN1YWlcIDsKK+ebo+edoyA8IGthbnRva3VcIDsKK+i6gemssSA8IHNvdXV0c3VcIDsKK+alvemaiiA8IGdha3V0YWlcIDsKK+auieWbvSA8IGp1bmtva3VcIDsKK+mAhuavlCA8IGd5YWt1aGlcIDsKK+WvvuS9jeazlSA8IHRhaWlob3VcIDsKK+WGpeemjyA8IG1laWZ1a3VcIDsKK+edpuaciCA8IG11dHN1a2lcIDsKK+WIu+acrCA8IGtva3Vob25cIDsKK+ato+WtkCA8IHNob3VzaGlcIDsKK+W5veasnSA8IHl1dXV0c3VcIDsKK+auuuWCtyA8IHNhc3Nob3VcIDsKK+a1rua1quWFkCA8IGZ1cm91amlcIDsKK+WppuS6uuenkSA8IGZ1amlua2FcIDsKK+WGhee0hCA8IG5haXlha3VcIDsKK+W8t+WRsyA8IHRzdXlvbWlcIDsKK+WJo+aInyA8IGtlbmdla2lcIDsKK+i/lOeFpyA8IGhlbnNob3VcIDsKK+iJh+mVtyA8IHRlaWNob3VcIDsKK+S7luS4lueVjCA8IHRhc2VrYWlcIDsKK+mBqeW9kyA8IHRla2l0b3VcIDsKK+aFsOWKtOmHkSA8IGlyb3VraW5cIDsKK+aoqeiDvSA8IGtlbicnbm91XCA7CivmraPlq6EgPCBzZWl0ZWtpXCA7CivmrLLmg4UgPCB5b2t1am91XCA7CivluqfmlbcgPCB6YXNoaWtpXCA7CivmpbzplqMgPCByb3VrYWt1XCA7CivliIbms6ggPCBidW5jaHV1XCA7CivljIXkuIEgPCBob3VjaG91XCA7Civnmbroir0gPCBoYXRzdWdhXCA7CivpgLLmlbAgPCBzaGluc3V1XCA7CivnkIbkuI3lsL0gPCByaWZ1amluXCA7Civnmb7oiKwgPCBoeWFwcGFuXCA7Civlh7rmuKAgPCBzaHVra3lvXCA7CivljZjlnZDmqZ8gPCB0YW56YWtpXCA7CivokL3ln44gPCByYWt1am91XCA7CivlibLlvZMgPCB3YXJpYXRlXCA7CivmrLLlv7UgPCB5b2t1bmVuXCA7CivmqJ/ohLMgPCBzaG91bm91XCA7CivkuI3po73lkowgPCBmdWhvdXdhXCA7Civov5HngasgPCBjaGlrYWJpXCA7CivliKXmoLwgPCBiZWtrYWt1XCA7Civnlr7poqggPCBzaGlwcHV1XCA7CivokL3lnLAgPCByYWt1Y2hpXCA7CivlhbHnt6ggPCBreW91aGVuXCA7CivmraTlpbQgPCBrb3lhdHN1XCA7Civnm5fnmZYgPCB0b3VoZWtpXCA7CivoiLnplbcgPCBzZW5jaG91XCA7Civku6PorbDlk6EgPCBkYWlnaWluXCA7CivnoJTkv64gPCBrZW5zaHV1XCA7CivliLfmlrAgPCBzYXNzaGluXCA7CivpnZ7lkIjnkIYgPCBoaWdvdXJpXCA7Civmrr/kuK0gPCBkZW5jaHV1XCA7CivlvLflipsgPCBnb3VyaWtpXCA7Civluo/mm7IgPCBqb2t5b2t1XCA7Civnt4/li5noqrIgPCBzb3VtdWthXCA7Civluormnb8gPCB5dWthaXRhXCA7CivpgJrmnIkgPCB0c3V1eXV1XCA7CivlhbXns6cgPCBoeW91cm91XCA7Civnm4bnn7MgPCBib25zZWtpXCA7CivmrKPmgqYgPCBraW5ldHN1XCA7CivlhbjnsY0gPCB0ZW5zZWtpXCA7CivpgZPlvrMgPCBkb3V0b2t1XCA7Civnl4Xpm6MgPCBieW91bmFuXCA7Civlipvlo6sgPCByaWtpc2hpXCA7CivmpLDlrZDmsrkgPCB5YXNoaXl1XCA7Civou4rovJsgPCBzaGFyeW91XCA7CivlhbXnsY0gPCBoZWlzZWtpXCA7CivpgJ/mlq0gPCBzb2t1ZGFuXCA7Civou4rou7ggPCBzaGFqaWt1XCA7CivlhoXnqY0gPCBuYWlzZWtpXCA7CivliaPlvaIgPCBrZW5nYXRhXCA7CivojZLniakgPCBhcmFtb25vXCA7Civnm7LniIYgPCBtb3ViYWt1XCA7Civlg7voq5YgPCBoZWtpcm9uXCA7CivlvLflhbUgPCBreW91aGVpXCA7CivlhazntIQgPCBrb3V5YWt1XCA7CivmrrXkuJggPCBkYW5reXV1XCA7CivovrLniacgPCBub3Vib2t1XCA7CivlhaXntr8gPCBpcmV3YXRhXCA7CivmsLTms7PnnYAgPCBzdWllaWdpXCA7CivmqKrnt5ogPCB5b2tvc2VuXCA7Civnmb3nvr0gPCBzaGlyYWhhXCA7Civls7vpmbogPCBzaHVua2VuXCA7Civlt6vnpZ0gPCBmdXNodWt1XCA7Civou7joo4UgPCBqaWt1c291XCA7Civnm6PnjYQgPCBrYW5nb2t1XCA7CivliKXmmYIgPCBiZXRzdWppXCA7CivlvJTllY8gPCBjaG91bW9uXCA7CivlhajntJogPCB6ZW5reXV1XCA7CivlhoXnpo8gPCBuYWlmdWt1XCA7CivlhpnnnJ8gPCBzaGFzaGluXCA7Civlh53mu54gPCBneW91dGFpXCA7CivpgZPluoogPCBkb3VzaG91XCA7Civmrorli50gPCBzaHVzaG91XCA7Civou43otrMgPCBndW5zb2t1XCA7Civlg7voqIAgPCBoZWtpZ2VuXCA7CivntbXojYnntJkgPCBlem91c2hpXCA7CivliaPluZUgPCBrZW5tYWt1XCA7Civlh7bmrbMgPCBreW91c2FpXCA7CivliZvlvLcgPCBnb3VreW91XCA7CivliIbmpa0gPCBidW5neW91XCA7Civou6Loqr8gPCB0ZW5jaG91XCA7CivmrYzlp6sgPCB1dGFoaW1lXCA7CivpgaDlsbEgPCB0b295YW1hXCA7CivmqKrns7ggPCB5b2tvaXRvXCA7CivmrKHlvI8gPCBqaXNoaWtpXCA7CivpgYrlvIsgPCB5dXV5b2t1XCA7CivpgbrlpLEgPCBpc2hpdHN1XCA7CivpgbjlpaggPCBzZW5zaG91XCA7Civlg7voposgPCBoZWtpa2VuXCA7CivoirHokbUgPCBoYW5hYW9pXCA7CivokL3lkb0gPCByYWt1bWVpXCA7CivpgYrlu5MgPCB5dXVrYWt1XCA7CivmqLnnq4sgPCBqdXJpdHN1XCA7CivprZTooZMgPCBtYWp1dHN1XCA7Civlh6HmtYEgPCBib25yeXV1XCA7CivoiIzpn7MgPCB6ZXRzdW9uXCA7CivliJ3ml6UgPCBoYXRzdWhpXCA7CivlvJXlj5cgPCBoaWtpdWtlXCA7CivlioflpIkgPCBnZWtpaGVuXCA7Civlu7rlm70gPCBrZW5rb2t1XCA7Civnn63lhoogPCB0YW56YWt1XCA7Civnn7Plg48gPCBzZWtpem91XCA7CivnnaPmiKYgPCB0b2t1c2VuXCA7CivnnLrmnJsgPCBjaG91Ym91XCA7Civlioflo4cgPCBnZWtpZGFuXCA7Civov5Hms4EgPCBraW5reW91XCA7CivmrKDluK0gPCBrZXNzZWtpXCA7Civlt6jnn7MgPCBreW9zZWtpXCA7CivmrbTlj7IgPCByZWtpc2hpXCA7CivlubPmnI0gPCBoZWlmdWt1XCA7Civou6LopoYgPCB0ZW5wdWt1XCA7CivmqZ/nlaUgPCBraXJ5YWt1XCA7CivlsI/niqzluqcgPCBrb2ludXphXCA7CivliofloLQgPCBnZWtpam91XCA7Civouqvov5EgPCBtaWRqaWthXCA7CivpgIbml4UgPCBnZWtpcnlvXCA7CivouqvovrogPCBzaGlucGVuXCA7CivliIbmnpAgPCBidW5zZWtpXCA7CivlvLHkvZMgPCBqYWt1dGFpXCA7CivmqKrnrJsgPCB5b2tvYnVlXCA7CivnmbrntaYgPCBoYWtreXV1XCA7Civou73oloQgPCBrZWloYWt1XCA7CivlvJXlipsgPCBpbnJ5b2t1XCA7Civlhobnm4YgPCBtYXJ1Ym9uXCA7CivotaTlkbPlmYwgPCBha2FtaXNvXCA7CivokZfkvZwgPCBjaG9zYWt1XCA7Civnl6nouqsgPCBzb3VzaGluXCA7CivoirHoibIgPCBoYW5haXJvXCA7CivpgJ/miJAgPCBzb2t1c2VpXCA7Civlt6bnm7QgPCBzYWNob2t1XCA7CivliY3lubQgPCB6ZW4nJ25lblwgOwor6YCB5paZIDwgc291cnlvdVwgOwor6bGX5pyoIDwgcmluYm9rdVwgOwor55m957KJIDwgb3NoaXJvaVwgOwor5YaF55qEIDwgbmFpdGVraVwgOwor6Ium56+AIDwga3VzZXRzdVwgOwor55m957GzIDwgaGFrdW1haVwgOwor55+t5L+hIDwgdGFuc2hpblwgOwor5qiq56m0IDwgeW9rb2FuYVwgOwor5qW16YGTIDwgZ29rdWRvdVwgOwor5a++576p6KqeIDwgdGFpZ2lnb1wgOwor55y35pePIDwga2Vuem9rdVwgOwor6YGT5a2mIDwgZG91Z2FrdVwgOwor5YG06Z2iIDwgc29rdW1lblwgOwor5bmj5p2fIDwgaGVpc29rdVwgOwor5Yqp5YuiIDwgc3VrZXplaVwgOwor5Yqf5ZCNIDwga291bXlvdVwgOwor6ImH6LqrIDwgdGVpc2hpblwgOwor5rGa5p+T6I+MIDwgb3NlbmtpblwgOwor6YGO5a+GIDwga2FtaXRzdVwgOwor5LiJ5pel6LevIDwgbWlra2FqaVwgOwor5Yqq5YqbIDwgZG9yeW9rdVwgOwor5bGF6YWS5bGLIDwgaXpha2F5YVwgOwor5bqt5birIDwgbml3YXNoaVwgOwor6aqo6aq8IDwga29ra2FrdVwgOwor5Yqp5YqbIDwgam9yeW9rdVwgOwor6L+95pS+IDwgdHN1aWhvdVwgOwor6Ieq5a626KO9IDwgamlrYXNlaVwgOwor6YGK5a2mIDwgeXV1Z2FrdVwgOwor5q2z5YWlIDwgc2Fpbnl1dVwgOwor6bOp5ZCIIDwga3l1dWdvdVwgOwor5qyg5a2XIDwga2V0c3VqaVwgOwor5aGX5biD5YmkIDwgdG9mdXphaVwgOwor5q2j5YyXIDwgc2VpaG9rdVwgOwor5YK36LehIDwga2l6dWF0b1wgOwor5q2m5YqbIDwgYnVyeW9rdVwgOwor6YGp5ZywIDwgdGVraWNoaVwgOwor5Yqf5YqbIDwga291cmlraVwgOwor5Y+k5YW46KqeIDwga290ZW5nb1wgOwor6I2S5rOiIDwgYXJhbmFtaVwgOwor6L+R5qWtIDwga2luZ3lvdVwgOwor55yf5pu4IDwgc2hpbnNob1wgOwor5bq15a6kIDwgYW5qaXRzdVwgOwor5YWx55uKIDwga3lvdWVraVwgOwor6YCa5oCnIDwgdHN1dXNlaVwgOwor5q2j5YmHIDwgc2Vpc29rdVwgOwor6ayx6KGAIDwgdWtrZXRzdVwgOwor5YW855SoIDwga2VuJyd5b3VcIDsKK+WKtOS9nCA8IHJvdXNha3VcIDsKK+mAmuW/tSA8IHRzdXVuZW5cIDsKK+WHi+auiyA8IGNob3V6YW5cIDsKK+S4jeaZr+awlyA8IGZ1a2Vpa2lcIDsKK+WGt+a2vCA8IHJlaXJ5b3VcIDsKK+i7veiInyA8IGtlaXNodXVcIDsKK+iQveS9kyA8IHJha3V0YWlcIDsKK+mAo+W5tCA8IHJlbicnbmVuXCA7CivliIfmj5sgPCBraXJpa2FlXCA7Civnl5Xot6EgPCBrb25zZWtpXCA7CivlkIjnkIbljJYgPCBnb3VyaWthXCA7CivlubLmi5MgPCBrYW50YWt1XCA7CivmrbvkurogPCBzaGliaXRvXCA7CivlhaznmoQgPCBrb3V0ZWtpXCA7Civlu7rliY0gPCB0YXRlbWFlXCA7CivliIfmjpsgPCBraWtrYWtlXCA7CivpgLLlsZUgPCBzaGludGVuXCA7CivmrKDlpoIgPCBrZXRzdWpvXCA7CivpqqjpoIIgPCBrb3RjaG91XCA7CivmqKrnnYAgPCBvdWNoYWt1XCA7CivliIbmjowgPCBidW5zaG91XCA7CivlvIHlhJ8gPCBiZW5zaG91XCA7Civmi4nkuIHoqp4gPCByYXRlbmdvXCA7CivliJHmiK4gPCBrZWlyaWt1XCA7CivpgJrlvIogPCB0c3V1aGVpXCA7CivnmbrnpaUgPCBoYXNzaG91XCA7CivpgJrlvIEgPCB0c3V1YmVuXCA7CivmrbTkvJ0gPCByZWtpZGVuXCA7Civlub3mhIEgPCB5dXVzaHV1XCA7CivokL3kurogPCBvY2h1dWRvXCA7CivlhaXnm6MgPCBueXV1a2FuXCA7CivmrbvkuK0gPCBzaGljaHV1XCA7CivmrbTku7sgPCByZWtpbmluXCA7CivliKXlvowgPCBiZXRzdWdvXCA7Civpm7vno4Hms6IgPCBkZW5qaWhhXCA7CivmrbTku6MgPCByZWtpZGFpXCA7CivlhbHnlKggPCBreW91eW91XCA7CivmpbXosqcgPCBnb2t1aGluXCA7CivlhbHnlKMgPCBreW91c2FuXCA7CivmqKnnm4ogPCBrZW4nJ2VraVwgOwor5bm75oORIDwgZ2Vud2FrdVwgOwor6Lui6JC9IDwgdGVucmFrdVwgOwor5bmV5pS/IDwgYmFrdXNlaVwgOwor55yM5pyJIDwga2VuJyd5dXVcIDsKK+i/veaHkCA8IHRzdWlrYWlcIDsKK+mtmuiFuSA8IGd5b2Z1a3VcIDsKK+mAmuW4uCA8IHRzdXVqb3VcIDsKK+i/veaGtiA8IHRzdWlva3VcIDsKK+i6iui6hyA8IGNodXVjaG9cIDsKK+msvOiTriA8IG9uaWJhc3VcIDsKK+ecn+aRryA8IHNoaW5zaGlcIDsKK+mbu+ejgeawlyA8IGRlbmppa2lcIDsKK+eahuebriA8IGthaW1va3VcIDsKK+eZveeggiA8IGhha3VzaGFcIDsKK+amguiplSA8IGdhaWh5b3VcIDsKK+W8i+S6uiA8IHlva3VqaW5cIDsKK+WHneacmyA8IGd5b3Vib3VcIDsKK+WCvuinkiA8IGtlaWtha3VcIDsKK+WFuOeNhCA8IHRlbmdva3VcIDsKK+mvm+eEvCA8IHRhaXlha2lcIDsKK+mBqeWQiCA8IHRla2lnb3VcIDsKK+WKh+WJpCA8IGdla2l6YWlcIDsKK+WIpeW4rSA8IGJlc3Nla2lcIDsKK+WFg+emhCA8IGdlbnJva3VcIDsKK+WCvuimhiA8IGtlaWZ1a3VcIDsKK+mtmuiCiSA8IGd5b25pa3VcIDsKK+WFpeeUqCA8IG55dXV5b3VcIDsKK+eZveecvCA8IGhha3VnYW5cIDsKK+iNkualrSA8IGFyYXdhemFcIDsKK+WIuuWtkCA8IHNhc2hpa29cIDsKK+ato+S9kyA8IHNob3V0YWlcIDsKK+mAhuW+kiA8IGd5YWt1dG9cIDsKK+Wxsem6kyA8IHNhbnJva3VcIDsKK+i/juaYpSA8IGdlaXNodW5cIDsKK+eZveebriA8IHNoaXJvbWVcIDsKK+WIl+W8tyA8IHJla2t5b3VcIDsKK+i+sualrSA8IG5vdWd5b3VcIDsKK+WIh+aEmyA8IHNldHN1YWlcIDsKK+WAmemzpSA8IGtvdWNob3VcIDsKK+aghOmkiuS+oSA8IGVpeW91a2FcIDsKK+mChOS/lyA8IGdlbnpva3VcIDsKK+mAn+WwhCA8IHNva3VzaGFcIDsKK+i/t+aDkSA8IG1laXdha3VcIDsKK+mAvOWhniA8IGhpc3Nva3VcIDsKK+eXm+iogCA8IHRzdXVnZW5cIDsKK+WIneW3syA8IGhhdHN1bWlcIDsKK+esrOS6jOasoSA8IGRhaW5pamlcIDsKK+eWvui1sCA8IHNoaXNzb3VcIDsKK+WIl+W6pyA8IHJldHN1emFcIDsKK+edgOW6pyA8IGNoYWt1emFcIDsKK+iMtuauuyA8IGNoYWdhcmFcIDsKK+i/veW+kyA8IHRzdWlqdXVcIDsKK+ato+S4rSA8IHNlaWNodXVcIDsKK+i6rOihjCA8IGt5dXVrb3VcIDsKK+eZveeXtCA8IGhha3VjaGlcIDsKK+S6leaIuOawtCA8IGlkb21penVcIDsKK+WHtuaJiyA8IGt5b3VzaHVcIDsKK+W4guazgSA8IHNoaWt5b3VcIDsKK+WIl+W4rSA8IHJlc3Nla2lcIDsKK+W4nealrSA8IHRlaWd5b3VcIDsKK+WJjeWegiA8IG1hZWRhcmVcIDsKK+S4gOWAi+S6uiA8IGlra29qaW5cIDsKK+S6oeellueItiA8IGJvdXNvZnVcIDsKK+W+oeacseWNsCA8IGdvc2h1aW5cIDsKK+edgOW3pSA8IGNoYWtrb3VcIDsKK+WJsuWLmCA8IHdhcmlrYW5cIDsKK+eVsOaAp+S9kyA8IGlzZWl0YWlcIDsKK+eZuueWuSA8IGhvc3NoaW5cIDsKK+mzpeS6uiA8IGNob3VqaW5cIDsKK+i/juaSgyA8IGdlaWdla2lcIDsKK+mAsuWhgSA8IHNoaW5ydWlcIDsKK+WJo+WRkSA8IGtlbicnbm9uXCA7CivlhpLmtpwgPCBib3V0b2t1XCA7CivmpJzpj6EgPCBrZW5reW91XCA7CivlhYjnmocgPCBzZW4nJ25vdVwgOwor6YCA5bitIDwgdGFpc2VraVwgOwor5Yil5a60IDwgYmV0c3VlblwgOwor6YCx5aCxIDwgc2h1dWhvdVwgOwor5Ymy5YmNIDwgd2FyaW1hZVwgOwor5YaG5ruRIDwgZW5rb3RzdVwgOwor5Yil5a6FIDwgYmV0dGFrdVwgOwor5YWN55arIDwgbWVuJydla2lcIDsKK+WJsuWIpCA8IHdhcmloYW5cIDsKK+mdnuWQjOacnyA8IGhpZG91a2lcIDsKK+i7uOe3miA8IGppa3VzZW5cIDsKK+WNgemcsuebpCA8IHNvcm9iYW5cIDsKK+WBtOi+uiA8IHNva3VoZW5cIDsKK+asoOWToSA8IGtldHN1aW5cIDsKK+ajkumxiCA8IGJvdWRhcmFcIDsKK+WFpeeJqSA8IGlyZW1vbm9cIDsKK+WFpeeJoiA8IG55dXVyb3VcIDsKK+mBuOS7uyA8IHNlbicnbmluXCA7Civlh7bmgqogPCBreW91YWt1XCA7CivnrYboqJjlhbcgPCBoaWtraWd1XCA7CivnlarplbcgPCBiYW5jaG91XCA7CivnqY/lgaXmtL4gPCBvbmtlbmhhXCA7CivogrLlhZDlnJIgPCBpa3VqaWVuXCA7CivlubzlsJEgPCB5b3VzaG91XCA7Civpm7vmsJfngokgPCBkZW5raXJvXCA7CivojYnmnKggPCBzb3Vtb2t1XCA7Civnm67mmJ8gPCBtZWJvc2hpXCA7Civkvp3lrZjmgKcgPCBpem9uc2VpXCA7Civlub3lr4IgPCB5dXVqYWt1XCA7Civlg5roiaYgPCByeW91a2FuXCA7CivliIblt7sgPCBidW5tYWtpXCA7Civmr5Tlj6HlsbEgPCBoaWVpemFuXCA7Civnmannl4UgPCByYWlieW91XCA7CivpgJrlpY8gPCB0c3V1c291XCA7CivnlqPotrMgPCBpYm9hc2hpXCA7Civkvp3poLzogIUgPCBpcmFpc2hhXCA7Civoia/og70gPCByeW91bm91XCA7CivovInnqY0gPCBzYWlzZWtpXCA7CivojLbmo5ogPCBjaGFkYW5hXCA7CivlubzlrZAgPCBvc2FuYWdvXCA7CivpgankvosgPCB0ZWtpcmVpXCA7CivmpJzph50gPCBrZW5zaGluXCA7Civlh7rlu7cgPCBzaHV0dGVpXCA7CivltKnokL0gPCBob3VyYWt1XCA7CivnnJ/lvbEgPCBzaGluJydlaVwgOwor5bm05bCRIDwgbmVuc2hvdVwgOwor5bmj5bibIDwgaGVpaGFrdVwgOwor5Ye25by+IDwga3lvdWRhblwgOwor6YCf5aCxIDwgc29rdWhvdVwgOwor55Sy6auYIDwga291ZGFrYVwgOwor55m954q2IDwgaGFrdWpvdVwgOwor6KO95rK55omAIDwgc2VpeXVqb1wgOwor6YGp5Lu7IDwgdGVraW5pblwgOwor5Yi25ZynIDwgc2VpYXRzdVwgOwor55a+6KaWIDwgc2hpc3NoaVwgOwor6Ium54axIDwga3VuZXRzdVwgOwor55m654uCIDwgaGFra3lvdVwgOwor5Ym15L2cIDwgc291c2FrdVwgOwor5qqE5paHIDwgZ2VraWJ1blwgOwor5YaF5rGgIDwgdWNoaWlrZVwgOwor55uu5pKlIDwgbWViYWNoaVwgOwor5YGP6YedIDwgaGVuc2hpblwgOwor6YCA5a2mIDwgdGFpZ2FrdVwgOwor5YGP6YeNIDwgaGVuY2hvdVwgOwor5bm05a2QIDwgdG9zaGlnb1wgOwor6YCa5aCxIDwgdHN1dWhvdVwgOwor5Z+65pys6KqeIDwga2lob25nb1wgOwor5Ymj5YWIIDwga2Vuc2FraVwgOwor5Ye25bm0IDwga3lvdW5lblwgOwor55yf5bmzIDwgbWFwcGlyYVwgOwor55mS552AIDwgeXVjaGFrdVwgOwor5b6h5LiJ5a62IDwgZ29zYW5rZVwgOwor5Ymv5L2/IDwgZnVrdXNoaVwgOwor6I6r5aSnIDwgYmFrdWRhaVwgOwor5YmN5Y6EIDwgbWFleWFrdVwgOwor6a2a56ucIDwgZ3lvcnl1dVwgOwor6L+35a6uIDwgbWVpa3l1dVwgOwor6YGF5Yi7IDwgY2hpa29rdVwgOwor5bmU5bmVIDwgbWFubWFrdVwgOwor5LqU56+A5Y+lIDwgZ29zZWtrdVwgOwor5qOu6ZaRIDwgc2hpbmthblwgOwor6L6f5piTIDwgaGVraWVraVwgOwor5YWl5ryBIDwgbnl1dWd5b1wgOwor55u05oqrIDwgY2hva3VoaVwgOwor6Kqk5YuV5L2cIDwgZ29kb3VzYVwgOwor55m654WZIDwgaGF0c3VlblwgOwor6Iif6KGMIDwgc2h1dWtvdVwgOwor5bK46L66IDwga2lzaGliZVwgOwor6YGT5L+XIDwgZG91em9rdVwgOwor6YCy5Y+WIDwgc2hpbnNodVwgOwor6Iao6ZqGIDwgYm91cnl1dVwgOwor5YCN6aGNIDwgYmFpZ2FrdVwgOwor55uu5oyHIDwgbW9rdXNoaVwgOwor5b2x5Y2w5pysIDwgZWlpbmhvblwgOwor6a2U56qfIDwgbWFrdXRzdVwgOwor5Yed5b+1IDwgZ3lvdW5lblwgOwor5beh5q20IDwganVucmVraVwgOwor5bGx6aCCIDwgc2FuY2hvdVwgOwor5YWl5rmvIDwgbnl1dXRvdVwgOwor5Ye65bGVIDwgc2h1dHRlblwgOwor5YWl5rigIDwgbnl1dWt5b1wgOwor6Iub54OIIDwga2FyZXRzdVwgOwor57WM5Za26LK7IDwga2VpZWloaVwgOwor6L+r5a6zIDwgaGFrdWdhaVwgOwor5YWr5rSyIDwgeWFzaGltYVwgOwor5YaG55u45aC0IDwgZW5zb3ViYVwgOwor6L2f5rKIIDwgZ291Y2hpblwgOwor55yM5bqBIDwga2VuY2hvdVwgOwor5Yeh5bq4IDwgYm9uJyd5b3VcIDsKK+eZh+eZliA8IGthbnBla2lcIDsKK+iJsue0oCA8IHNoaWtpc29cIDsKK+i/keW5tCA8IGtpbicnbmVuXCA7Civnm4bmmq4gPCBib25rdXJlXCA7CivouYnot4wgPCBzYXRldHN1XCA7CivlubTlopcgPCB0b3NoaW1hXCA7CivpgZPkuLsgPCBkb3VzaHV1XCA7Civlh4vmgrQgPCBjaG91c3VpXCA7CivpgZPkuK0gPCBkb3VjaHV1XCA7CivlsbHpmb0gPCBzYW4nJ3lvdVwgOwor5bGx6Zm1IDwgc2FucnlvdVwgOwor6YGK5LyRIDwgeXV1a3l1dVwgOwor55eY6IuXIDwgdG91YnlvdVwgOwor6YCx5YiKIDwgc2h1dWthblwgOwor6KKr55aR6ICFIDwgaGlnaXNoYVwgOwor5bqW5Y6oIDwgaG91Y2h1dVwgOwor5YCS6ZajIDwgdG91a2FrdVwgOwor5YiX5Zu9IDwgcmVra29rdVwgOwor552j5YqxIDwgdG9rdXJlaVwgOwor5beh5qWtIDwganVuZ3lvdVwgOwor5qiZ5rqWIDwgaHlvdWp1blwgOwor6I+K5YikIDwga2lrdWJhblwgOwor55Sj6aGNIDwgc2FuZ2FrdVwgOwor6YCx5YaFIDwgc2h1dW5haVwgOwor6bC75bGLIDwgdW5hZ2l5YVwgOwor5YWl5rC0IDwgbnl1dXN1aVwgOwor5Yi25YudIDwgc2Vpc2hvdVwgOwor5Yi75Yi7IDwga29ra29rdVwgOwor5YKZ6JOEIDwgYmljaGlrdVwgOwor6YCa5ZCNIDwgdG9vcmluYVwgOwor6LuN57GNIDwgZ3Vuc2VraVwgOwor6Ii56Ii2IDwgc2VucGFrdVwgOwor6YCj5YudIDwgcmVuc2hvdVwgOwor6YCa5Y+yIDwgdHN1dXNoaVwgOwor55u05b6MIDwgY2hva3Vnb1wgOwor55u05b6AIDwgY2hva3VvdVwgOwor5pS+54Gr6a2UIDwgaG91a2FtYVwgOwor5L+u6aSKIDwgc2h1dXlvdVwgOwor5LiN5pat552AIDwgZnVkYW5naVwgOwor6IGW6Lev5YqgIDwgc2Vpcm9rYVwgOwor55eF6I+MIDwgYnlvdWtpblwgOwor5Ye65aWUIDwgc2h1cHBvblwgOwor5qW96IGWIDwgZ2FrdXNlaVwgOwor6Ii56IW5IDwgc2VucHVrdVwgOwor5LiL57ea6YOoIDwga2FzZW5idVwgOwor55m95rSyIDwgc2hpcmFzdVwgOwor5Yeh5bCPIDwgYm9uc2hvdVwgOwor5YmN5Lu7IDwgemVuJyduaW5cIDsKK+W3qOacqCA8IGt5b2Jva3VcIDsKK+iIrOiLpSA8IGhhbicnbnlhXCA7CivlgrfogIUgPCBzaG91c2hhXCA7Civlhobmm7IgPCBlbmt5b2t1XCA7CivlsL7pqqggPCBiaWtvdHN1XCA7CivluoPlkYogPCBrb3Vrb2t1XCA7Civoip3nlJ8gPCBzaGliYWZ1XCA7CivpgJrli6QgPCB0c3V1a2luXCA7Civoh6roqqwgPCBqaXNldHN1XCA7CivlhYXmuqIgPCBqdXVpdHN1XCA7CivnnIvlrqIgPCBrYW5rYWt1XCA7CivojLbmiZggPCBjaGF0YWt1XCA7CivnnJ/lpI8gPCBtYW5hdHN1XCA7CivovrrluYUgPCBoZW5wdWt1XCA7CivlupflhoUgPCB0ZW4nJ25haVwgOwor5aSa5qyh5YWDIDwgdGFqaWdlblwgOwor5bed5p+zIDwgc2Vucnl1dVwgOwor5qWt6IW5IDwgZ291aGFyYVwgOwor6Imv56iuIDwgcnlvdXNodVwgOwor5YCf6YeRIDwgc2hha2tpblwgOwor5YmK5LqVIDwgc2FrdXNlaVwgOwor5Ly86Z2e6ICFIDwgZXNlbW9ub1wgOwor5bqP5YiXIDwgam9yZXRzdVwgOwor5YCS6YyvIDwgdG91c2FrdVwgOwor5bid5b6zIDwgdGVpdG9rdVwgOwor6ISz5aSW56eRIDwgbm91Z2VrYVwgOwor6YCa5YiGIDwgdHN1dWJ1blwgOwor6L+95ZaEIDwgdHN1aXplblwgOwor5Ye25aCxIDwga3lvdWhvdVwgOwor5b6h5LiL5ZWPIDwgZ29rYW1vblwgOwor5qSc6KqNIDwga2VuJyduaW5cIDsKK+iNkuW3uyA8IGFyYW1ha2lcIDsKK+eXheiIjiA8IGJ5b3VzaGFcIDsKK+iInuiMuCA8IG1haXRha2VcIDsKK+mAseS7pCA8IHNodXVyZWlcIDsKK+WHhuW3niA8IGp1bnNodXVcIDsKK+iGg+iCreiHjSA8IG90dG9zZWlcIDsKK+WFseagkyA8IHRvbW9zZW5cIDsKK+Wls+aAp+WZqCA8IGpvc2Vpa2lcIDsKK+WtteWNteWZqCA8IGZ1cmFua2lcIDsKK+aknOiovCA8IGtlbnNob3VcIDsKK+eEoeeQhuinoyA8IG11cmlrYWlcIDsKK+W4uOWuvyA8IGpvdXlhZG9cIDsKK+S/oemgvCA8IHNoaW5yYWlcIDsKK+WFieayoiA8IGtvdXRha3VcIDsKK+W4neW7nyA8IHRlaWJ5b3VcIDsKK+WHueWcsCA8IGt1Ym9jaGlcIDsKK+WHuOWdiiA8IGRla29ib3VcIDsKK+i7jeelqCA8IGd1bnB5b3VcIDsKK+ebm+W+syA8IHNlaXRva3VcIDsKK+alreiAhSA8IGd5b3VzaGFcIDsKK+i7jeelniA8IGd1bnNoaW5cIDsKK+i5iOilsiA8IHRvdXNodXVcIDsKK+iIn+iJhyA8IHNodXV0ZWlcIDsKK+aoquajkiA8IHlva29ib3VcIDsKK+W5tOWPjiA8IG5lbnNodXVcIDsKK+WFpeaihSA8IG55dXViYWlcIDsKK+iFk+mqqCA8IGhpa290c3VcIDsKK+WFseaciSA8IGt5b3V5dXVcIDsKK+mwpOWtkCA8IGJ1cmlra29cIDsKK+ebuOWuoiA8IGFpa3lha3VcIDsKK+eItuaAp+aEmyA8IGZ1c2VpYWlcIDsKK+i/veWPtyA8IHRzdWlnb3VcIDsKK+mAo+S9nCA8IHJlbnNha3VcIDsKK+WFjuasoCA8IHRva2V0c3VcIDsKK+WFhuawkSA8IGNob3VtaW5cIDsKK+WIpeWEgCA8IGJldHN1Z2lcIDsKK+mdnuatpuijhSA8IGhpYnVzb3VcIDsKK+iJr+efpSA8IHJ5b3VjaGlcIDsKK+mAo+S8kSA8IHJlbmt5dXVcIDsKK+WIh+WRsyA8IGtpcmVhamlcIDsKK+mAoOS9nCA8IHpvdXNha3VcIDsKK+WFreabuCA8IHJva3VzaG9cIDsKK+edgOWJoyA8IGNoYWtrZW5cIDsKK+WIhuWRqCA8IGJ1bnNodXVcIDsKK+WFreabnCA8IHJva3V5b3VcIDsKK+WFq+aclCA8IGhhc3Nha3VcIDsKK+WIquS/riA8IHNhbnNodXVcIDsKK+WHhuWwhiA8IGp1bnNob3VcIDsKK+iFlemmliA8IHVkZWt1YmlcIDsKK+ecvOWKmyA8IGdhbnJpa2lcIDsKK+mAmuS+iyA8IHRzdXVyZWlcIDsKK+aomeamnCA8IGh5b3Vib3VcIDsKK+WFpeadpSA8IG55dXVyYWlcIDsKK+eVpeitnCA8IHJ5YWt1ZnVcIDsKK+i9ouaWrSA8IHJla2lkYW5cIDsKK+i7oueUqCA8IHRlbicneW91XCA7CivnmpDmnIggPCBzYXRzdWtpXCA7CivpgKPkuK0gPCByZW5jaHV1XCA7CivlhYPmrYwgPCBtb3RvdXRhXCA7CivoibLnmb0gPCBpcm9qaXJvXCA7Civlsqnop5IgPCBpd2FrYWRvXCA7CivlkIzniLbmr40gPCBkb3VmdWJvXCA7CivojLblupcgPCBjaGFtaXNlXCA7Civlh53loYogPCBneW91a2FpXCA7Civlh7rlk4EgPCBzaHVwcGluXCA7CivovrLlraYgPCBub3VnYWt1XCA7CivpgJrkurogPCB0c3V1amluXCA7CivnlaXoqp4gPCByeWFrdWdvXCA7Civlg63nlKggPCBzZW4nJ3lvdVwgOwor6LiK6LqNIDwgeW91eWFrdVwgOwor6Iy25bitIDwgY2hhc2VraVwgOwor6L+95YiKIDwgdHN1aWthblwgOwor55So6YePIDwgeW91cnlvdVwgOwor6Ieq6JmQIDwgamlneWFrdVwgOwor6ay855WcIDwga2ljaGlrdVwgOwor6IWQ6aOfIDwgZnVzaG9rdVwgOwor5bm05YaFIDwgbmVuJyduYWlcIDsKK+WCjeiBtCA8IGJvdWNob3VcIDsKK+W3puaKmCA8IHNhc2V0c3VcIDsKK+eZveahgyA8IGhha3V0b3VcIDsKK+Wls+aAp+WMliA8IGpvc2Vpa2FcIDsKK+iLpeaenSA8IHdha2FlZGFcIDsKK+i/keWbvSA8IGtpbmdva3VcIDsKK+iIueexjSA8IHNlbnNla2lcIDsKK+WFg+aomSA8IGdlbnB5b3VcIDsKK+WHuuWPoyA8IGRlZ3VjaGlcIDsKK+WIh+WJiiA8IHNlc3Nha3VcIDsKK+eVpeinoyA8IHJ5YWtrYWlcIDsKK+WIgOWMoCA8IHRvdXNob3VcIDsKK+eZuuahiCA8IGhhdHN1YW5cIDsKK+eEoeacn+mZkCA8IG11a2lnZW5cIDsKK+i7n+eQgyA8IG5hbmt5dXVcIDsKK+S/rumMrCA8IHNodXVyZW5cIDsKK+iHquWutueUqCA8IGppa2F5b3VcIDsKK+ebtOWljyA8IGppa2lzb3VcIDsKK+iIque2miA8IGtvdXpva3VcIDsKK+iJr+eUsCA8IHJ5b3VkZW5cIDsKK+i2s+mfsyA8IGFzaGlvdG9cIDsKK+WFiOajkiA8IHNha2lib3VcIDsKK+Wutuezu+WbsyA8IGtha2VpenVcIDsKK+S4gOS4lue0gCA8IGlzc2Vpa2lcIDsKK+WIiOWFpSA8IGthcmlpcmVcIDsKK+eZveacqCA8IHNoaXJha2lcIDsKK+iHqueUseW6piA8IGppeXV1ZG9cIDsKK+aomeacrCA8IGh5b3Vob25cIDsKK+eZveabuCA8IGhha3VzaG9cIDsKK+axmuafk+a6kCA8IG9zZW5nZW5cIDsKK+i7jeeUqCA8IGd1bicneW91XCA7CivliJ3kubMgPCBzaG9ueXV1XCA7CivlubPkv6EgPCBoZWlzaGluXCA7CivojZLlo4EgPCBhcmFrYWJlXCA7CivlhavmjpsgPCBoYWtrYWtlXCA7CivovKrmpa0gPCByaW5neW91XCA7CivojLblr64gPCBjaGFyeW91XCA7CivlubPkvZwgPCBoZWlzYWt1XCA7Civnm7Lln7cgPCBtb3VzaHV1XCA7CivnlJjphZIgPCBhbWF6YWtlXCA7CivlhYPmoJMgPCBtb3Rvc2VuXCA7CivlhavmjLogPCBoYXRjaG91XCA7CivnnJ/liaMgPCBzaGlua2VuXCA7Civkvp3poLznirYgPCBpcmFpam91XCA7Civlh7nlh7ggPCBvdXRvdHN1XCA7CivovpvlrZAgPCBrYXJhc2hpXCA7Civlh7jlh7kgPCB0b3RzdW91XCA7Civnmb7mlrkgPCBoeWFwcG91XCA7CivlgbTog4wgPCBzb2t1aGFpXCA7CivnmYLms5UgPCByeW91aG91XCA7CivlhaXmjpsgPCBpcmVrYWt1XCA7Civov7fkv6EgPCBtZWlzaGluXCA7Civlh7bliIMgPCBreW91amluXCA7CivnrKzkuIDmrakgPCBkYWlpcHBvXCA7Civlh7rlhbUgPCBzaHVwcGVpXCA7Civnmb3mlpEgPCBoYWt1aGFuXCA7CivpgIDkuqwgPCB0YWlreW91XCA7Civnmb3mlocgPCBoYWt1YnVuXCA7Civlvq7lobXlrZAgPCBtaWppbmtvXCA7Civlh7jlhoYgPCB0b3RzdWVuXCA7CivlsbHos4ogPCBzYW56b2t1XCA7CivnnLzkuK0gPCBnYW5jaHV1XCA7CivotJTlsZPnm64gPCBoaWlraW1lXCA7CivlgbTogZ4gPCBzb2t1YnVuXCA7Civmpa3nqK4gPCBneW91c2h1XCA7CivlhavmiYsgPCB5YXRzdWRlXCA7CivoibLniakgPCBpcm9tb25vXCA7Civnl7Pnl4UgPCByaW5ieW91XCA7CivlhYPmnI0gPCBnZW5wdWt1XCA7Civkv67pgZMgPCBzaHV1ZG91XCA7CivlhYvmmI4gPCBrb2t1bWVpXCA7CivlubTkuIogPCB0b3NoaXVlXCA7Civkv53ph4ggPCBob3NoYWt1XCA7CivlhaXmiYsgPCBueXV1c2h1XCA7CivlhaXmiYAgPCBueXV1c2hvXCA7Civov7DkvZwgPCBqdXNzYWt1XCA7Civpm7vno4HloLQgPCBkZW5qaWJhXCA7Civnm7TllrYgPCBjaG9rdWVpXCA7CivlsI/pnaIgPCBzaG91bWVuXCA7CivlsL/phbggPCBueW91c2FuXCA7CivovpvlpLcgPCBrb2J1c2hpXCA7Civlha3mg4UgPCByb2t1am91XCA7CivkuIDkvZPljJYgPCBpdHRhaWthXCA7CivlvqHml6Xmp5ggPCBvaGlzYW1hXCA7Civpn7Pnvr3lsYsgPCBvdG93YXlhXCA7Civpq5jnsrEgPCBrb3VyeWFuXCA7CivlsI/pm6MgPCBzaG91bmFuXCA7CivlsYDpg6ggPCBreW9rdWJ1XCA7CivljLvpmaLplbcgPCBpaW5jaG91XCA7CivljbDmrKfoqp4gPCBpbicnb3Vnb1wgOwor5bid5Zu9IDwgdGVpa29rdVwgOwor5Ye65LyaIDwgc2h1a2thaVwgOwor6ayx54S2IDwgdXRzdXplblwgOwor5YK355eVIDwgc2hvdWtvblwgOwor5YaN5a+pIDwgc2Fpc2hpblwgOwor55yM5YaFIDwga2VuJyduYWlcIDsKK+Wwv+mBkyA8IG55b3Vkb3VcIDsKK+WBtOe3miA8IHNva3VzZW5cIDsKK+WFrOW+syA8IGtvdXRva3VcIDsKK+W4uOWLnSA8IGpvdXNob3VcIDsKK+WGpeWigyA8IG1laWt5b3VcIDsKK+ecn+S6uiA8IHNoaW5qaW5cIDsKK+WGt+WYsiA8IHJlaWNob3VcIDsKK+mmtOm5vyA8IHRvbmFrYWlcIDsKK+ebtOWPgiA8IGppa2lzYW5cIDsKK+WHuuadpeeniyA8IGRla2lha2lcIDsKK+mjm+ihjOapnyA8IGhpa291a2lcIDsKK+WFpeW/tSA8IG55dXVuZW5cIDsKK+iEiumrhCA8IHNla2l6dWlcIDsKK+eEoeS9nOeCuiA8IG11c2FrdWlcIDsKK+ecn+S4iyA8IG1hc2hpdGFcIDsKK+WGhuWuiSA8IGVuJyd5YXN1XCA7CivlsIrplbcgPCBzb25jaG91XCA7Civlgb3nrYYgPCBnaWhpdHN1XCA7Civnm7jliYsgPCBzb3Vrb2t1XCA7Civohp3ooYwgPCBzaGlra291XCA7Civpg73luILpg6ggPCB0b3NoaWJ1XCA7Civou6Lms6ggPCB0ZW5jaHV1XCA7CivluqfokrLlm6MgPCB6YWJ1dG9uXCA7CivlhaXlu7cgPCBueXV1dGVpXCA7Civkv5fovKkgPCB6b2t1aGFpXCA7CivohJrpn7sgPCBreWFrdWluXCA7Civlh6Hkv5cgPCBib256b2t1XCA7Civlr5LprpIgPCBrYW5idW5hXCA7Civmpa3nl4UgPCBnb3VieW91XCA7CivovrLljZogPCBub3VoYWt1XCA7CivovrLljZQgPCBub3VreW91XCA7CivlhajluYUgPCB6ZW5wdWt1XCA7CivmlL7oqrLlvowgPCBob3VrYWdvXCA7CivlhajluK0gPCB6ZW5zZWtpXCA7Civpq5jnpoQgPCBrb3Vyb2t1XCA7Civov5HkvZwgPCBraW5zYWt1XCA7CivojbfkuLsgPCBuaW51c2hpXCA7Civoia/muK8gPCByeW91a291XCA7Civlr7jpmpkgPCBzdW5nZWtpXCA7CivkuIDmnKzmsJcgPCBpcHBvbmdpXCA7Civnm67liY0gPCBtb2t1emVuXCA7CivlsqnogowgPCBpd2FoYWRhXCA7Civlh6HkurogPCBib24nJ25pblwgOwor5L+h6LKpIDwgc2hpbnBhblwgOwor6Zu75rCX5bGLIDwgZGVua2l5YVwgOwor5L+X6LajIDwgem9rdXNodVwgOwor5L+u6KuWIDwgc2h1dXJvblwgOwor5YW15a2mIDwgaGVpZ2FrdVwgOwor55Sw6J66IDwgdGFuaXNoaVwgOwor55Sj6KSlIDwgc2Fuam9rdVwgOwor5bCP6YqDIDwgc2hvdWp1dVwgOwor5L6/6YCaIDwgYmVudHN1dVwgOwor5bCP6YmiIDwga29iYWNoaVwgOwor5pyq5p2l5rS+IDwgbWlyYWloYVwgOwor6LWk6aOvIDwgc2VraWhhblwgOwor5bid5YqHIDwgdGVpZ2VraVwgOwor5YWx5a2YIDwga3lvdXpvblwgOwor55yB5LukIDwgc2hvdXJlaVwgOwor6Ieq57KbIDwgamlzaHVrdVwgOwor55m+5bqmIDwgaHlha3Vkb1wgOwor5qCE6KqJ56S8IDwgZWl5b3JlaVwgOwor5YaF5aOBIDwgbmFpaGVraVwgOwor55a+55eFIDwgc2hpcHBlaVwgOwor5YWD5oKqIDwgZ2VuJydha3VcIDsKK+ezluiho+mMoCA8IHRvdWlqb3VcIDsKK+eWvOeXmyA8IHRvdXRzdXVcIDsKK+Wus+mzpSA8IGdhaWNob3VcIDsKK+WCjeeZvSA8IGJvdWhha3VcIDsKK+iJr+awkSA8IHJ5b3VtaW5cIDsKK+i6geeXhSA8IHNvdWJ5b3VcIDsKK+eQhuirluWutiA8IHJpcm9ua2FcIDsKK+eUsOiZqyA8IHRhbXVzaGlcIDsKK+eZveW4hiA8IHNoaXJhaG9cIDsKK+mrmOebtCA8IGtvdWppa2lcIDsKK+aJk+alveWZqCA8IGRhZ2Fra2lcIDsKK+eUn+ihgCA8IG5hbWFjaGlcIDsKK+eEoeS9nOazlSA8IGJ1c2Fob3VcIDsKK+WFpeWumiA8IG55dXVqb3VcIDsKK+i7oualrSA8IHRlbmd5b3VcIDsKK+WxiOiolyA8IGt1dHRha3VcIDsKK+ebtOS8nSA8IGppa2lkZW5cIDsKK+iMtuWMmSA8IGNoYXNhamlcIDsKK+iHquethiA8IGppaGl0c3VcIDsKK+S7geeOi+mWgCA8IG5pb3Vtb25cIDsKK+iLl+W6iiA8IG5hZWRva29cIDsKK+i1pOmdoiA8IHNla2ltZW5cIDsKK+WPpOWFuOa0viA8IGtvdGVuaGFcIDsKK+WGheWcpyA8IG5haWF0c3VcIDsKK+eXm+eCuSA8IHRzdXV0ZW5cIDsKK+e0oOWwgeWutiA8IHNvaG91a2FcIDsKK+WFiOW5tCA8IHNlbicnbmVuXCA7CivnlrHnlrkgPCBob3VzaGluXCA7Civkv5forKEgPCB6b2t1eW91XCA7CivlsI/pgZMgPCBrb21pY2hpXCA7Civoh6rnq4sgPCBqaXJpdHN1XCA7Civkv67ooYwgPCBzaHVneW91XCA7CivlhoXlm70gPCBuYWlrb2t1XCA7Civkv5foq7ogPCB6b2t1Z2VuXCA7Civoh7Pnpo8gPCBzaGlmdWt1XCA7Civlr7rpiq0gPCB0ZXJhc2VuXCA7CivovrLkvZwgPCBub3VzYWt1XCA7Civkv5foq6YgPCB6b2t1dGFpXCA7Civkv4rosaogPCBzaHVuZ291XCA7Civkv5foq5YgPCB6b2t1cm9uXCA7Civnl4fnirYgPCBzaG91am91XCA7Civkv5foq4cgPCB6b2t1ZGFuXCA7CivlsI7pgJogPCBkb3V0c3V1XCA7CivprZrml48gPCBneW96b2t1XCA7CivlhaXlqb8gPCBpcmltdWtvXCA7Civlg7vmnZEgPCBoZWtpc29uXCA7CivprqjlsYsgPCBzdXNoaXlhXCA7Civlr4Tpo58gPCBraXNob2t1XCA7Civnmb3lsbEgPCBoYWt1c2FuXCA7Civnl4XnirYgPCBieW91am91XCA7CivlhYPlubQgPCBnYW4nJ25lblwgOwor5bit5LiKIDwgc2VraWpvdVwgOwor6I2S5LqLIDwgYXJhZ290b1wgOwor55uj5L+uIDwga2Fuc2h1dVwgOwor5q2p5ZCI5Yi2IDwgYnVhaXNlaVwgOwor5YG455uXIDwgY2h1dXRvdVwgOwor5YO75pu4IDwgaGVraXNob1wgOwor55WZ572uIDwgcnl1dWNoaVwgOwor6L6b5YWaIDwga2FyYXRvdVwgOwor5qC86ZeYIDwga2FrdXRvdVwgOwor55Wq57WEIDwgYmFuZ3VtaVwgOwor6a2C5p+xIDwga29uY2h1dVwgOwor55m+5a6YIDwgaHlha2thblwgOwor5L2c6aKoIDwgc2FrdWZ1dVwgOwor6a2a5rKz5bK4IDwgdW9nYXNoaVwgOwor6aas6aOfIDwgYmFzaG9rdVwgOwor6Ieq55Sx5YyWIDwgaml5dXVrYVwgOwor6Imm5qmLIDwga2Fua3lvdVwgOwor5qiZ5a6aIDwgaHlvdXRlaVwgOwor5qiq5aWqIDwgb3VkYXRzdVwgOwor55m95a2QIDwgc2hpcm9rb1wgOwor5YaN5ZGKIDwgc2Fpa29rdVwgOwor6LuN5qW9IDwgZ3VuZ2FrdVwgOwor5bGx6IqLIDwgeWFtYWltb1wgOwor5bid5LqsIDwgdGVpa3lvdVwgOwor6Ly75bCEIDwgZnVrdXNoYVwgOwor5YWl5aOwIDwgbmlzc2hvdVwgOwor5o6I55Sj5omAIDwganVzYW5qb1wgOwor6aeG5YuV5qmfIDwga3Vkb3VraVwgOwor5a+G6ZuyIDwgbWl0c3V1blwgOwor5LqM566H5omAIDwgbmlrYXNob1wgOwor5YK+5rOoIDwga2VpY2h1dVwgOwor5YWl5aKoIDwgaXJlenVtaVwgOwor5a+G6ZuGIDwgbWlzc2h1dVwgOwor6YGV54qv6ICFIDwgaWhhbnNoYVwgOwor6Ieq55S75YOPIDwgamlnYXpvdVwgOwor6Imy5p+EIDwgaXJvZ2FyYVwgOwor5b2i5oSP5ouzIDwga2VpaWtlblwgOwor6IOM6auYIDwgc2VpdGFrYVwgOwor5bCG6LuNIDwgc2hvdWd1blwgOwor5qaC5rOBIDwgZ2Fpa3lvdVwgOwor5YWo5Z+fIDwgemVuJydpa2lcIDsKK+avjeaAp+aEmyA8IGJvc2VpYWlcIDsKK+S6leaIuOWBtCA8IGlkb2dhd2FcIDsKK+WxseiFuSA8IHNhbnB1a3VcIDsKK+WFiOWtpiA8IHNlbmdha3VcIDsKK+iEmumDqCA8IGt5YWt1YnVcIDsKK+iDtOmVtyA8IGRvdW5hZ2FcIDsKK+WDp+acjSA8IHNvdWZ1a3VcIDsKK+WGjeWLnSA8IHNhaXNob3VcIDsKK+iFueiUtSA8IGZ1a3V6b3VcIDsKK+iJr+adkCA8IHJ5b3V6YWlcIDsKK+S9jumhjSA8IHRlaWdha3VcIDsKK+mtmuaLkyA8IGd5b3Rha3VcIDsKK+i8lOW8vCA8IGhvaGl0c3VcIDsKK+WFqOWbvSA8IHplbmdva3VcIDsKK+iJr+abuCA8IHJ5b3VzaG9cIDsKK+WusOmgmCA8IHNhaXJ5b3VcIDsKK+eZveWkqiA8IHNoaXJhdGFcIDsKK+eZveWknCA8IGJ5YWt1eWFcIDsKK+i5tOeIqiA8IGtlZHp1bWVcIDsKK+i1pOmMhiA8IGFrYXNhYmlcIDsKK+WFpeWboyA8IG55dXVkYW5cIDsKK+W3peWNmiA8IGtvdWhha3VcIDsKK+W3ruWIpSA8IHNhYmV0c3VcIDsKK+WGquS5lyA8IGJla2lqb3VcIDsKK+i7jeacjSA8IGd1bnB1a3VcIDsKK+eUsuiDhCA8IGthdGNodXVcIDsKK+iHqueZuiA8IGppaGF0c3VcIDsKK+eVouernyA8IGhpa2t5b3VcIDsKK+agoemWsiA8IGtvdWV0c3VcIDsKK+eWjueVpSA8IHNvcnlha3VcIDsKK+WyqeekgSA8IGdhbnNob3VcIDsKK+WCt+atjiA8IHNob3V0YW5cIDsKK+iJsuaWhyA8IGlyb2J1bWlcIDsKK+egtOegleapnyA8IGhhc2Fpa2lcIDsKK+mmlumgmCA8IHNodXJ5b3VcIDsKK+mBleitpue9qiA8IGlrZWl6YWlcIDsKK+W4jOWcn+mhniA8IGtpZG9ydWlcIDsKK+i1pOmHkSA8IGFrYWdhbmVcIDsKK+mpleiChiA8IGt5b3VzaGlcIDsKK+Wtpum9oiA8IGdha3VyZWlcIDsKK+WutemXhyA8IHlvaXlhbWlcIDsKK+Wwj+irliA8IHNob3Vyb25cIDsKK+S6nOmJm+W8lSA8IGFlbmJpa2lcIDsKK+WkquWusOW6nCA8IGRhemFpZnVcIDsKK+WyqeefsyA8IGdhbnNla2lcIDsKK+iFueiKuCA8IGhhcmFnZWlcIDsKK+eZveWcsCA8IHNoaXJvamlcIDsKK+aguOmFuCA8IGtha3VzYW5cIDsKK+WFreWQiCA8IHJpa3Vnb3VcIDsKK+iIueatjCA8IGZ1bmF1dGFcIDsKK+WvvuixoSA8IHRhaXNob3VcIDsKK+mosOiQvSA8IHRvdXJha3VcIDsKK+WBj+eZliA8IGhlbnBla2lcIDsKK+WFuOWJhyA8IHRlbnNva3VcIDsKK+ajkue4niA8IGJvdWppbWFcIDsKK+S8iumBlOiAhSA8IGRhdGVzaGFcIDsKK+WFreWNgSA8IHJva3VqdXVcIDsKK+i1pOmBkyA8IHNla2lkb3VcIDsKK+eUn+iCiSA8IHNlaW5pa3VcIDsKK+mAgeipseWZqCA8IHNvdXdha2lcIDsKK+akjeeariA8IHNob2t1aGlcIDsKK+Wun+mcgCA8IGppdHN1anVcIDsKK+WFjeWbmiA8IG1lbnNodXVcIDsKK+S8tOWkqemAoyA8IGJhdGVyZW5cIDsKK+mnhumAkCA8IGt1Y2hpa3VcIDsKK+S6nOm6u+W4gyA8IGFtYW51bm9cIDsKK+mnkOi7iiA8IGNodXVzaGFcIDsKK+agqumHkSA8IGthYnVraW5cIDsKK+iHqueOiSA8IGppZ3lva3VcIDsKK+Wls+mDjuWxiyA8IGpvcm91eWFcIDsKK+Wuv+mKrSA8IHlhZG9zZW5cIDsKK+mmlumVtyA8IHNodWNob3VcIDsKK+iFueiDjCA8IGZ1a3VoYWlcIDsKK+WZtOmcp+WZqCA8IGZ1bm11a2lcIDsKK+eXheatuyA8IGJ5b3VzaGlcIDsKK+WwhOinkiA8IHNoYWtha3VcIDsKK+iLseWNmOiqniA8IGVpdGFuZ29cIDsKK+WuoumWkyA8IGt5YWt1bWFcIDsKK+W3peS9nCA8IGtvdXNha3VcIDsKK+WEgOW8jyA8IGdpc2hpa2lcIDsKK+eUsOe0syA8IGRlbnNoaW5cIDsKK+WvvuiosyA8IHRhaXlha3VcIDsKK+i1pOi7jSA8IHNla2lndW5cIDsKK+iEgui6qyA8IGFidXJhbWlcIDsKK+Wzoea5viA8IGt5b3V3YW5cIDsKK+i7jeaLoSA8IGd1bmtha3VcIDsKK+eZvuWRsyA8IGh5YWt1bWlcIDsKK+iNt+mmrOi7iiA8IG5pYmFzaGFcIDsKK+aTrOaFi+iqniA8IGdpdGFpZ29cIDsKK+WvvuinkiA8IHRhaWtha3VcIDsKK+afsemdoiA8IGNodXVtZW5cIDsKK+W3qOS5syA8IGt5b255dXVcIDsKK+eVsOmCpuS6uiA8IGlob3VqaW5cIDsKK+eUu+ethiA8IGdhaGl0c3VcIDsKK+S+m+impyA8IGt5b3VyYW5cIDsKK+aAquaIkeS6uiA8IGtlZ2FuaW5cIDsKK+WvuOiplSA8IHN1bnB5b3VcIDsKK+WGheS4rSA8IHVjaGlqdXVcIDsKK+WKueaenOmfsyA8IGtvdWthb25cIDsKK+WvhumAmiA8IG1pdHRzdXVcIDsKK+WAtueZuiA8IGd1aGF0c3VcIDsKK+WFrOWDlSA8IGtvdWJva3VcIDsKK+S9k+mHjyA8IHRhaXJ5b3VcIDsKK+Wik+eikemKmCA8IGJvaGltZWlcIDsKK+Wul+mWgCA8IHNodXVtb25cIDsKK+iHhueXhSA8IG9rdWJ5b3VcIDsKK+WFqOWEqiA8IHplbicneXV1XCA7Civpo5vooYzlrrYgPCBoaWtvdWthXCA7CivnlaXnlLsgPCByeWFrdWdhXCA7Civkv7jntaYgPCBob3VreXV1XCA7Civlrr/pgYsgPCBzaHVrdXVuXCA7CivoiLnmnb8gPCBmdW5haXRhXCA7Civkv4roi7EgPCBzaHVuJydlaVwgOwor6Iqz5aKoIDwgaG91Ym9rdVwgOwor55m+5YyBIDwgaHlha3VtZVwgOwor55Sf57W5IDwgc3V6dXNoaVwgOwor6Luf5byxIDwgbmFuamFrdVwgOwor5LyR6aSoIDwga3l1dWthblwgOwor5a+G6Ly4IDwgbWl0c3V5dVwgOwor5YWa5YmHIDwgdG91c29rdVwgOwor5L+u57mVIDwgc2h1dXplblwgOwor5LyR6aSKIDwga3l1dXlvdVwgOwor5qa05by+IDwgcnl1dWRhblwgOwor5bGx56mNIDwgc2Fuc2VraVwgOwor6Ii25p2lIDwgaGFrdXJhaVwgOwor6LWk6LKnIDwgc2VraWhpblwgOwor6Iux5YKRIDwgZWlrZXRzdVwgOwor5qW15pqRIDwgZ29rdXNob1wgOwor55eF5qOfIDwgYnlvdXRvdVwgOwor54Gr54ao5paXIDwgaGlub3NoaVwgOwor6IKM6aqoIDwga2lrb3RzdVwgOwor6Imv5oCnIDwgcnlvdXNlaVwgOwor6Laz6Iq4IDwgYXNoaWdlaVwgOwor6IW457eaIDwgY2hvdXNlblwgOwor6Lyq5ZSxIDwgcmluc2hvdVwgOwor5YGJ54mpIDwgZXJhbW9ub1wgOwor55m95YiDIDwgaGFrdWppblwgOwor5L6u6JSRIDwgYnViZXRzdVwgOwor6Iul5YWaIDwgd2FrYXRvdVwgOwor55eF5qC5IDwgYnlvdWtvblwgOwor5Lya6ZuGIDwga2Fpc2h1dVwgOwor5bGR57O4IDwga3V6dWl0b1wgOwor5qKf572qIDwga3lvdXphaVwgOwor55m95YW1IDwgaGFrdWhlaVwgOwor5L2O6YCfIDwgdGVpc29rdVwgOwor5YWl5LyaIDwgbnl1dWthaVwgOwor5bGR57GzIDwga3V6dW1haVwgOwor6Lu95aaZIDwga2VpbXlvdVwgOwor6Ieq5ruFIDwgamltZXRzdVwgOwor5LyR6Zu7IDwga3l1dWRlblwgOwor5bO25qC5IDwgc2hpbWFuZVwgOwor5a2m6aKoIDwgZ2FrdWZ1dVwgOwor5YO15bGNIDwga3lvbnNoaVwgOwor5YWI5Yi7IDwgc2Vua29rdVwgOwor5YSq5L2N5oCnIDwgeXV1aXNlaVwgOwor6IKJ6aWFIDwgbmlrdW1hblwgOwor5L216KqtIDwgaGVpZG9rdVwgOwor6aas6LezIDwgdW1hdG9iaVwgOwor6Lui5bGeIDwgdGVuem9rdVwgOwor6LWk6KqgIDwgc2VraXNlaVwgOwor6Imv5birIDwgcnlvdXNoaVwgOwor5Lya6ZW3IDwga2FpY2hvdVwgOwor5qC86KiAIDwga2FrdWdlblwgOwor6aeB6KuWIDwgYmFrdXJvblwgOwor54Sh6Laj5ZGzIDwgbXVzaHVtaVwgOwor6YGO54++5pyqIDwga2FnZW5taVwgOwor5YWD5Ye2IDwgZ2Vua3lvdVwgOwor6IKJ6aGeIDwgbmlrdXJ1aVwgOwor55a85pyoIDwgaGlpcmFnaVwgOwor6Lui5a6FIDwgdGVudGFrdVwgOwor5qCE6YGUIDwgZWl0YXRzdVwgOwor6Lui5a2mIDwgdGVuZ2FrdVwgOwor6Ieq5rS7IDwgamlrYXRzdVwgOwor5L+456aEIDwgaG91cm9rdVwgOwor6Iul5Lq6IDwgd2Frb3Vkb1wgOwor5qW95omNIDwgZ2FrdXNhaVwgOwor5a+G6K2wIDwgbWl0c3VnaVwgOwor6aaZ6LuKIDwga3lvdXNoYVwgOwor5L+X57SvIDwgem9rdXJ1aVwgOwor6ZW35qSF5a2QIDwgbmFnYWlzdVwgOwor6IG+5ZSW6ICFIDwgcm91YXNoYVwgOwor5YGc5rOKIDwgdGVpaGFrdVwgOwor5qWK5p+zIDwgeW91cnl1dVwgOwor5bCP6IiFIDwga29qdXV0b1wgOwor6Ieq5rG6IDwgamlrZXRzdVwgOwor55m+5LqLIDwgaHlha3VqaVwgOwor5a+G6KqeIDwgbWl0c3Vnb1wgOwor6IO46KWfIDwga3lvdWtpblwgOwor5bC/566hIDwgbnlvdWthblwgOwor6ayx5bGIIDwgdWtrdXRzdVwgOwor6LuN5bGeIDwgZ3Vuem9rdVwgOwor5paH5a2X55ukIDwgbW9qaWJhblwgOwor55eb5oakIDwgdHN1dWZ1blwgOwor5LqU5Y2B6Z+zIDwgZ29qdXVvblwgOwor5bGx55WqIDwgeWFtYWJhblwgOwor5qW95oOzIDwgZ2FrdXNvdVwgOwor6Ieq5q66IDwgamlzYXRzdVwgOwor6ISx6Ie8IDwgZGFra3l1dVwgOwor6aaW6LazIDwgc2h1c29rdVwgOwor6ISx6IetIDwgZGFzc2h1dVwgOwor6LuN5bCGIDwgZ3Vuc2hvdVwgOwor5YK35oK0IDwgc2hvdXN1aVwgOwor5YGP5rWBIDwgaGVucnl1dVwgOwor6ISz6IacIDwgbm91bWFrdVwgOwor54++6auYIDwgZ2VuZGFrYVwgOwor6Iej5rCRIDwgc2hpbm1pblwgOwor6ay85amGIDwgb25pYmFiYVwgOwor5L2c6KmpIDwgc2FrdXNoaVwgOwor6ISx6IW4IDwgZGF0Y2hvdVwgOwor5a6F6YWNIDwgdGFrdWhhaVwgOwor5LyR6YyYIDwga3l1dXN1aVwgOwor55Sw55WRIDwgZGVucGF0YVwgOwor55eb5oGoIDwgdHN1dWtvblwgOwor6Iez5qW1IDwgc2hpZ29rdVwgOwor5qW15oKqIDwgZ29rdWFrdVwgOwor5a6J6YC4IDwgYW4nJ2l0c3VcIDsKK+WkqeWppue+hSA8IHRlbnB1cmFcIDsKK+WDu+WcsCA8IGhla2ljaGlcIDsKK+WDu+WcqCA8IGhla2l6YWlcIDsKK+Wumui3oSA8IGpvdXNla2lcIDsKK+i8quS9nCA8IHJpbnNha3VcIDsKK+WyqeazoiA8IGl3YW5hbWlcIDsKK+Wzu+aLkiA8IHNodW5reW9cIDsKK+iJr+WmuyA8IHJ5b3VzYWlcIDsKK+iHhua4rCA8IG9rdXNva3VcIDsKK+eUo+eXmyA8IHNhbnRzdXVcIDsKK+WvnemBk+WFtyA8IG5lZG91Z3VcIDsKK+iBt+majiA8IHNob2trYWlcIDsKK+eVnea6nSA8IHVuZW1pem9cIDsKK+alteW+riA8IGt5b2t1YmlcIDsKK+eVsOWIhuWtkCA8IGlidW5zaGlcIDsKK+iGnOeKtiA8IG1ha3Vqb3VcIDsKK+eUmOeariA8IGFtYWthd2FcIDsKK+i1pOiVqiA8IGFrYWthYnVcIDsKK+WxseeKrCA8IHlhbWFpbnVcIDsKK+S/iuerpSA8IHNodW5kb3VcIDsKK+alveW4qyA8IGdha3VzaGlcIDsKK+ahkeiJsiA8IGt1d2Fpcm9cIDsKK+iFleeroCA8IHdhbnNob3VcIDsKK+mmrOihkyA8IGJhanV0c3VcIDsKK+eXheaFiyA8IGJ5b3V0YWlcIDsKK+iFleeriyA8IHVkZXRhdGVcIDsKK+iFueeZkiA8IGhhcmFpc2VcIDsKK+iInuaJhyA8IG1haW91Z2lcIDsKK+WvruiIjiA8IHJ5b3VzaGFcIDsKK+alteW6piA8IGt5b2t1ZG9cIDsKK+WBlealvSA8IGthaXJha3VcIDsKK+eQg+mdoiA8IGt5dXVtZW5cIDsKK+Wwj+e3qCA8IHNob3VoZW5cIDsKK+iHquiyqeapnyA8IGppaGFua2lcIDsKK+eXheaCoyA8IGJ5b3VrYW5cIDsKK+WuouiqniA8IGt5YWt1Z29cIDsKK+aelemgrSA8IGNoaW50b3VcIDsKK+alteW3piA8IGt5b2t1c2FcIDsKK+eToueuqiA8IGh5b3V0YW5cIDsKK+WFq+mHjeWeoyA8IHlhZWdha2lcIDsKK+iKuOS6iyA8IGdlaWdvdG9cIDsKK+akjeaouSA8IHNob2t1anVcIDsKK+Wun+ipsSA8IGppdHN1d2FcIDsKK+eWvuaCoyA8IHNoaWtrYW5cIDsKK+eEoeS+oeWApCA8IG11a2FjaGlcIDsKK+ahg+iJsiA8IG1vbW9pcm9cIDsKK+aknOagoSA8IGtlbmd5b3VcIDsKK+Wun+iovCA8IGppc3Nob3VcIDsKK+S7iumggyA8IGltYWdvcm9cIDsKK+iFsOeXmyA8IHlvdXRzdXVcIDsKK+Wwj+eykiA8IGtvdHN1YnVcIDsKK+alreW4qyA8IHdhemFzaGlcIDsKK+iKseS7oyA8IGhhbmFkYWlcIDsKK+WuouimsyA8IGt5YWtrYW5cIDsKK+S/l+ecvCA8IHpva3VnYW5cIDsKK+S9v+iHoyA8IHNoaXNoaW5cIDsKK+WvkuiPiiA8IGthbmdpa3VcIDsKK+S6uuS6i+mZoiA8IGppbmppaW5cIDsKK+S8kei8iSA8IGt5dXVzYWlcIDsKK+Wwu+ebriA8IHNoaXJpbWVcIDsKK+WumuiplSA8IHRlaWh5b3VcIDsKK+S8kei7oiA8IGt5dXV0ZW5cIDsKK+eXheW8iiA8IGJ5b3VoZWlcIDsKK+WCt+WusyA8IHNob3VnYWlcIDsKK+WumuiosyA8IHRlaXlha3VcIDsKK+i7jeWbvSA8IGd1bmtva3VcIDsKK+mtlOWKmyA8IG1hcnlva3VcIDsKK+aknOadnyA8IGtlbnNva3VcIDsKK+S4jeWknOWfjiA8IGZ1eWFqb3VcIDsKK+WxheeVmSA8IGt5b3J5dXVcIDsKK+e+juS4iOWkqyA8IGJpam91ZnVcIDsKK+iNj+iDoem6u+ayuSA8IGVnb21heXVcIDsKK+WyqeajmiA8IGl3YWRhbmFcIDsKK+S7j+mZgCA8IGJ1dHN1ZGFcIDsKK+Wus+iZqyA8IGdhaWNodXVcIDsKK+WwseecoCA8IHNodXVtaW5cIDsKK+iEh+iDvSA8IHdha2lub3VcIDsKK+WEhOWFhiA8IG9rdWNob3VcIDsKK+eXheW3oyA8IGJ5b3Vzb3VcIDsKK+i1pOiGmiA8IGFrYWhhZGFcIDsKK+Wwj+erpSA8IGtvd2FwcGFcIDsKK+S7j+mWoyA8IGJ1a2tha3VcIDsKK+aYk+aQjeWTgSA8IGlzb25oaW5cIDsKK+S7j+mWkyA8IGJ1dHN1bWFcIDsKK+i1pOiFuSA8IGFrYWhhcmFcIDsKK+WwvOWDp+mZoiA8IG5pc291aW5cIDsKK+iFjuefsyA8IGppbnNla2lcIDsKK+iJr+WTgSA8IHJ5b3VoaW5cIDsKK+iDg+iiiyA8IGlidWt1cm9cIDsKK+eEoeeQhuaVsCA8IG11cmlzdXVcIDsKK+Wzu+W2uiA8IHNodW5yZWlcIDsKK+WEkuS7jyA8IGp1YnV0c3VcIDsKK+mtheWKmyA8IG1pcnlva3VcIDsKK+iyuOmWkyA8IGthc2hpbWFcIDsKK+iDuOiHhiA8IGt5b3Vva3VcIDsKK+eEoemfu+ipqSA8IG11aW5zaGlcIDsKK+mtmuS/oSA8IGd5b3NoaW5cIDsKK+iFleeZvSA8IHdhbnBha3VcIDsKK+WkmuanmOWMliA8IHRheW91a2FcIDsKK+iDuOiFuiA8IGt5b3VzZW5cIDsKK+S6rOmiqCA8IGt5b3VmdXVcIDsKK+alveWkqSA8IHJha3V0ZW5cIDsKK+iJr+WPiyA8IHJ5b3V5dXVcIDsKK+iEseepgCA8IGRha2tva3VcIDsKK+ePremVtyA8IGhhbmNob3VcIDsKK+S8neiqpiA8IGRlbnNob3VcIDsKK+WwiuensCA8IHNvbnNob3VcIDsKK+WBg+aciCA8IGVuZ2V0c3VcIDsKK+WvvuetliA8IHRhaXNha3VcIDsKK+WAn+asviA8IHNoYWtrYW5cIDsKK+alveWjhyA8IGdha3VkYW5cIDsKK+S+v+ebiiA8IGJlbicnZWtpXCA7CivkvJroqq0gPCBrYWlkb2t1XCA7Civmo7rmobYgPCBrYW4nJ29rZVwgOwor5L2O6JC9IDwgdGVpcmFrdVwgOwor55eF5a6zIDwgYnlvdWdhaVwgOwor5YGJ5pa5IDwgZXJhZ2F0YVwgOwor55qu6Iaa56eR5Yy7IDwgaGlmdWthaVwgOwor55WM5qiZIDwga2FpaHlvdVwgOwor6LOD6YqtIDwgY2hpbnNlblwgOwor5L2e6IejIDwgbmVpc2hpblwgOwor5L2Z6ImyIDwgeW9zaG9rdVwgOwor6aOy6aOfIDwgaW5zaG9rdVwgOwor5bGL5qC56KOPIDwgeWFuZXVyYVwgOwor5YK+5Zu9IDwga2Vpa29rdVwgOwor5pq06aKo6ZuoIDwgYm91ZnV1dVwgOwor5L+C55WZIDwga2Vpcnl1dVwgOwor55S35rCXIDwgb3Rva29naVwgOwor5qWT5bGeIDwgZnV1em9rdVwgOwor6IOD6JasIDwgaWd1c3VyaVwgOwor5LuZ6YO3IDwgc2Vua3lvdVwgOwor5qCX6ImyIDwga3VyaWlyb1wgOwor6LO86KqtIDwga291ZG9rdVwgOwor55Sf55CG5pelIDwgc2VpcmliaVwgOwor6LuK5YqbIDwgc2hhcmlraVwgOwor5YiG6ZmQ6ICFIDwgYnVnZW5qYVwgOwor6Iel5omAIDwgZnVzaGlkb1wgOwor5L2T6IetIDwgdGFpc2h1dVwgOwor6aas6ISaIDwgYmFreWFrdVwgOwor5a+456eSIDwgc3VuYnlvdVwgOwor5Lq65LqL6YOoIDwgamluamlidVwgOwor6LW3562GIDwga2loaXRzdVwgOwor6aeQ57GzIDwgY2h1dWJlaVwgOwor5Lm+6a2aIDwgaG9zaGl1b1wgOwor6bia6bWh6LKdIDwgb3VtdWdhaVwgOwor6IKd6KaBIDwga2FuJyd5b3VcIDsKK+ajruaelyA8IHNoaW5yaW5cIDsKK+i1pOe1hCA8IGFrYWd1bWlcIDsKK+i7ouS7uyA8IHRlbicnbmluXCA7CivmoLzntI0gPCBrYWt1bm91XCA7CivlsI/nmaogPCBrb3NoYWt1XCA7CivotaTntJkgPCBha2FnYW1pXCA7CivpqZrmrY4gPCBreW91dGFuXCA7Civotbfnq4sgPCBraXJpdHN1XCA7CivkuIDkuIHlrZcgPCBpdHRlaWppXCA7CivkvZzogIUgPCBzYWt1c2hhXCA7Civpo5/ppIwgPCBzaG9rdWppXCA7CivohbjmuoAgPCBjaG91bWFuXCA7Civku7LosrcgPCBuYWthZ2FpXCA7CivliIbpm6LmtL4gPCBidW5yaWhhXCA7CivlsI/ntLDlt6UgPCBrb3phaWt1XCA7Civnl4XlpIkgPCBieW91aGVuXCA7Civmmpflj7fljJYgPCBhbmdvdWthXCA7Civlg6XlgJYgPCBneW91a291XCA7Civos6DosqwgPCBiYWlzZWtpXCA7Civos57os5sgPCBzaG91c2FuXCA7CivlsIrnmocgPCBzb24nJ25vdVwgOwor546E6bqmIDwgZ2VuYmFrdVwgOwor6ISI566hIDwgbXlha2thblwgOwor5p6i6Lu4IDwgc3V1amlrdVwgOwor6Iie5aerIDwgbWFpaGltZVwgOwor55eb5ZiGIDwgdHN1dXRhblwgOwor5bCo54qsIDwgbXVrdWludVwgOwor5qOf5qKBIDwgdG91cnlvdVwgOwor5Y+z5b6A5bem5b6AIDwgdW91c2FvdVwgOwor5Y2w5bqm5rSLIDwgaW5kb3lvdVwgOwor5aGp57Sg6YW4IDwgZW5zb3NhblwgOwor5bGg5q66IDwgdG9zYXRzdVwgOwor6LOK6LuNIDwgem9rdWd1blwgOwor6IW45rayIDwgY2hvdWVraVwgOwor6IiO5a6FIDwgc2hhdGFrdVwgOwor6Lqr5ZG9IDwgc2hpbm1laVwgOwor5L6d6aC85Lq6IDwgaXJhaW5pblwgOwor55ar5a2mIDwgZWtpZ2FrdVwgOwor5bCP55S6IDwga29tYWNoaVwgOwor5bCP55S3IDwga29vdG9rb1wgOwor6IWw5rmvIDwga29zaGl5dVwgOwor5bCE55qEIDwgc2hhdGVraVwgOwor6ISz55eFIDwgbm91YnlvdVwgOwor5bCP55SfIDwgc2hvdXNlaVwgOwor54i25q+N5LyaIDwgZnVib2thaVwgOwor5bGx5qSSIDwgc2Fuc2hvdVwgOwor5L2z56+AIDwga2FzZXRzdVwgOwor5LuK6YCxIDwga29uc2h1dVwgOwor6IGW6YCxIDwgc2Vpc2h1dVwgOwor6aOy6YWS5a62IDwgaW5zaHVrYVwgOwor5LiN6KqN5Y+vIDwgZnVuaW5rYVwgOwor5L2O57+8IDwgdGVpeW9rdVwgOwor6Imy5LqLIDwgaXJvZ290b1wgOwor5p+/6ImyIDwga2FraWlyb1wgOwor55Sw5qW9IDwgZGVuZ2FrdVwgOwor5LuK6L+EIDwgaW1hbWFkZVwgOwor5Lm+6aOvIDwgaG9zaGlpaVwgOwor6Imv5Lq6IDwgcnlvdWppblwgOwor5a6/57iBIDwgc2h1a3VlblwgOwor6Iej5b6TIDwgc2hpbmp1dVwgOwor6IW55rC0IDwgZnVrdXN1aVwgOwor6LeL5riJIDwgYmFzc2hvdVwgOwor55S65p2RIDwgY2hvdXNvblwgOwor5YCS5pyoIDwgdG91Ym9rdVwgOwor5oWw5Yq05LyaIDwgaXJvdWthaVwgOwor6Ieo5bitIDwgcmluc2VraVwgOwor5L+u5q2jIDwgc2h1dXNlaVwgOwor5pyo6a2aIDwgbW9rdWd5b1wgOwor6LGG6IWQ5bGLIDwgdG91ZnV5YVwgOwor6auY5aOwIDwgdGFrYWdvZVwgOwor5L2156ewIDwgaGVpc2hvdVwgOwor5YiG6Zui5qmfIDwgYnVucmlraVwgOwor5qaC5YmHIDwgZ2Fpc29rdVwgOwor6ICQ6ZyHIDwgdGFpc2hpblwgOwor5qCE6IG3IDwgZWlzaG9rdVwgOwor5LuP6LehIDwgYnVzc2VraVwgOwor54Gr54KO55O2IDwga2FlbmJpblwgOwor6LKr6YCaIDwga2FudHN1dVwgOwor6IGW6LmfIDwgc2Vpc2VraVwgOwor5bO25Zu9IDwgdG91Z29rdVwgOwor55Sj5qWtIDwgc2FuZ3lvdVwgOwor6IWw5rCXIDwga29zaGlrZVwgOwor5YK35Ym1IDwgc2hvdXNvdVwgOwor6aOf6ZaTIDwgc2hva2thblwgOwor5b6h5aSa5YiGIDwgZ290YWJ1blwgOwor5Luu6KaqIDwga2FyaW95YVwgOwor6IKy6IuXIDwgaWt1YnlvdVwgOwor5a6Y6IO9IDwga2FuJydub3VcIDsKK+izg+iyuCA8IGNoaW50YWlcIDsKK+WyoeaDmiA8IG9rYWJvcmVcIDsKK+aeneixhiA8IGVkYW1hbWVcIDsKK+iBtOiosSA8IGNob3VreW9cIDsKK+eUn+alrSA8IG5hcml3YWlcIDsKK+S7o+iqrSA8IGRhaWRva3VcIDsKK+ePvuixoSA8IGdlbnNob3VcIDsKK+Wun+e/kiA8IGppc3NodXVcIDsKK+S7suijgSA8IGNodXVzYWlcIDsKK+Wwj+eIqiA8IGtvZHp1bWVcIDsKK+eWjuWvhiA8IHNvbWl0c3VcIDsKK+iBtOinoyA8IGNob3VrYWlcIDsKK+iyp+i+siA8IGhpbicnbm91XCA7Civoh6jmmYLosrsgPCByaW5qaWhpXCA7Civku6PoqLogPCBkYWlzaGluXCA7CivogbToppYgPCBjaG91c2hpXCA7CivlsZ7moLwgPCB6b2trYWt1XCA7CivlgrflhbUgPCBzaG91aGVpXCA7Civmpb3lhbggPCBnYWt1dGVuXCA7CivnlLvmlbAgPCBrYWt1c3V1XCA7Civohrrmh7IgPCB5b3VjaG91XCA7CivlgI3ml6cgPCBiYWlreXV1XCA7CivlpKflpKrpvJMgPCBvb2RhaWtvXCA7Civpq5jlnKcgPCBrb3VhdHN1XCA7CivnlLrmlL8gPCBjaG91c2VpXCA7CivmpbXliJEgPCBreW9ra2VpXCA7CivlpoLkvZXnqIsgPCBpa2Fob2RvXCA7CivniaHniZvluqcgPCBvdXNoaXphXCA7Civnl4XlkI0gPCBieW91bWVpXCA7CivliqDlt6XosrsgPCBrYWtvdWhpXCA7Civmorbmo5IgPCBrYWppYm91XCA7CivmpbXlhqAgPCBreW9ra2FuXCA7CivmpbXlhoUgPCBnb2t1bmFpXCA7Civnl4Xlj4sgPCBieW91eXV1XCA7CivpqrDlrZAgPCBzYWlrb3JvXCA7CivlsqHlvJUgPCBva2FoaWtpXCA7CivlgrTlg4IgPCBzZW11c2hpXCA7CivmnLHpnpggPCBzaHV6YXlhXCA7CivkurrkuovoqrIgPCBqaW5qaWthXCA7Civlrp/nuL4gPCBqaXNzZWtpXCA7Civnl4Xljp8gPCBieW91Z2VuXCA7CivmpbXlhYkgPCBreW9ra291XCA7CivkuqjpgJogPCBrb3V0c3V1XCA7CivmnKzpoJggPCBob25yeW91XCA7Civkurrot6EgPCBoaXRvYXRvXCA7Civku5joqK0gPCBmdXNldHN1XCA7CivpppbntJogPCBzaHVreXV1XCA7CivkvpvniakgPCBrdW1vdHN1XCA7Civls7vljrMgPCBzaHVuZ2VuXCA7CivosaHpmZAgPCBzaG91Z2VuXCA7CivouqvkvZMgPCBzaGludGFpXCA7Civoh7PlppkgPCBzaGlteW91XCA7CivnlJjmoJcgPCBhbWFndXJpXCA7Civku5XoqLMgPCBzaGl3YWtlXCA7Civouo3li5UgPCB5YWt1ZG91XCA7Civku6PooaggPCBkYWloeW91XCA7Civph47oia/niqwgPCBub3JhaW51XCA7Civnl4Xli6IgPCBieW91c2VpXCA7CivlrrnnqY0gPCB5b3VzZWtpXCA7Civku4/oqp4gPCBidXRzdWdvXCA7CivohbDmpI4gPCB5b3V0c3VpXCA7Civouqvku6MgPCBzaGluZGFpXCA7Civml6XmnKzplpMgPCBuaWhvbm1hXCA7Civnjonpn7MgPCBneW9rdW9uXCA7CivlpKfosYbmsrkgPCBkYWl6dXl1XCA7Civlr5Pnm64gPCBndXVtb2t1XCA7CivmnaXpgLEgPCByYWlzaHV1XCA7CivoiLnlgbQgPCBzZW5zb2t1XCA7CivmnKzpnIcgPCBob25zaGluXCA7CivmnKjpnbQgPCBraWd1dHN1XCA7CivpppnnrrEgPCBrb3ViYWtvXCA7CivmnJ3poqggPCBhc2FrYXplXCA7CivlhZDnq6XnlLsgPCBqaWRvdWdhXCA7CivmvJToiJ7loLQgPCBlbmJ1am91XCA7CivlsqnlsbEgPCBpd2F5YW1hXCA7Civmpb3kurogPCBnYWt1amluXCA7CivosYbpoZ4gPCBtYW1lcnVpXCA7CivlrpjntaYgPCBrYW5reXV1XCA7CivnjonpnLIgPCBneW9rdXJvXCA7CivoiLnkvr8gPCBmdW5hYmluXCA7Civlgqzkv4MgPCBzYWlzb2t1XCA7CivnlJ/mlrAgPCBzZWlzaGluXCA7CivotoXnhLYgPCBjaG91emVuXCA7CivkvJ3nv5IgPCBkZW5zaHV1XCA7CivnlZnlubQgPCByeXV1bmVuXCA7CivotIXogokgPCB6ZWluaWt1XCA7Civpq5jlj7AgPCB0YWthZGFpXCA7CivlsqnlrqQgPCBpd2FtdXJvXCA7Civkv7XmlbAgPCBoeW91c3V1XCA7CivlraboirggPCBnYWt1Z2VpXCA7CivnlLfmiYsgPCBvdG9rb2RlXCA7CivkvLzpnZ7kuosgPCBlc2Vnb3RvXCA7CivmooXmr5IgPCBiYWlkb2t1XCA7CivkuI3ntZDmnpwgPCBmdWtla2thXCA7CivmnJ3pnYQgPCBhc2Ftb3lhXCA7CivlsYjmnI0gPCBrdXBwdWt1XCA7CivmnJ3pnKcgPCBhc2FnaXJpXCA7CivogozoibIgPCBoYWRhaXJvXCA7CivlraboiI4gPCBnYWt1c2hhXCA7CivmpbXkuIogPCBnb2t1am91XCA7Civnl4flgJkgPCBzaG91a291XCA7CivoiLnkuK0gPCBzZW5jaHV1XCA7CivogonoibIgPCBuaWt1aXJvXCA7Civkv67mlLkgPCBzaHV1a2FpXCA7Civlsrjlo4EgPCBnYW5wZWtpXCA7CivkurroqLwgPCBuaW5zaG91XCA7CivnlaXlrZcgPCByeWFrdWppXCA7Civkv67mkrAgPCBzaHV1c2VuXCA7CivlnLDkuIvljJYgPCBjaGlrYWthXCA7CivkvI/nvaogPCBmdWt1emFpXCA7Civlr4bnlLsgPCBtaXRzdWdhXCA7Civlhavnmb7plbcgPCB5YW9jaG91XCA7CivppKHonJwgPCBhbm1pdHN1XCA7CivogL3oqq0gPCB0YW5kb2t1XCA7CivogonohasgPCBuaWt1c2h1XCA7Civkv5fmm7ggPCB6b2t1c2hvXCA7CivogIHphpwgPCByb3VzaHV1XCA7CivpqZXmhaIgPCBreW91bWFuXCA7CivlgJTlvLcgPCBrdWtreW91XCA7Civnl4XkurogPCBieW91bmluXCA7CivlgY/ln7cgPCBoZW5zaHV1XCA7CivpgY7po73lkowgPCBrYWhvdXdhXCA7CivkubPphbggPCBueXV1c2FuXCA7Civkva/ni4IgPCB5b3VreW91XCA7Civmm7PppqwgPCBoaWtpdW1hXCA7Civlr77mtYEgPCB0YWlyeXV1XCA7CivpoZTpu5IgPCBnYW5ndXJvXCA7CivkvI/nuKsgPCBmdXNlbnVpXCA7Civmm7LppqwgPCBreW9rdWJhXCA7CivotaTnh5AgPCBzZWtpcmluXCA7CivlgpHkvZwgPCBrZXNzYWt1XCA7CivnkZ7npaUgPCB6dWlzaG91XCA7CivkvI/nt5ogPCBmdWt1c2VuXCA7CivlgoDlhKEgPCBrdWd1dHN1XCA7Civnj43oq4cgPCBjaGluZGFuXCA7Civkv5fmlocgPCB6b2t1YnVuXCA7CivlgJLluZUgPCB0b3ViYWt1XCA7CivlrrbnlZwgPCBrYWNoaWt1XCA7CivkuK3po68gPCBjaHV1aGFuXCA7CivnkIPoj4wgPCBreXV1a2luXCA7Civml6nlsJHlpbMgPCBzYW90b21lXCA7CivkuK3poqggPCBjaHV1YnV1XCA7Civpoqjpjq4gPCBmdXVjaGluXCA7CivlgJ/lsYsgPCBzaGFrdXlhXCA7Civls7bkuK0gPCB0b3VjaHV1XCA7Civlrp3nn7MgPCBob3VzZWtpXCA7Civog4bnn7MgPCB0YW5zZWtpXCA7CivlsbHluKsgPCB5YW1hc2hpXCA7CivmnKjph5EgPCBtb2t1a2luXCA7CivlpoLkvZXniakgPCBpa2Ftb25vXCA7CivlsZ7mgKcgPCB6b2t1c2VpXCA7CivmnaXoqLogPCByYWlzaGluXCA7CivniYjnlLvlrrYgPCBoYW5nYWthXCA7Civkvr/mnI0gPCBiZW5wdWt1XCA7CivkuqHopqogPCBib3VzaGluXCA7Civku5XojYkgPCBzaGlndXNhXCA7CivkuZ3ph40gPCBrb2tvbm9lXCA7Civkv4rmlY8gPCBzaHVuYmluXCA7CivouIrlrZcgPCBvZG9yaWppXCA7CivlsbHls6EgPCB5YW1ha2FpXCA7CivotaTmva4gPCBha2FzaGlvXCA7CivlrabntJogPCBnYWtreXV1XCA7CivnlaXlm7MgPCByeWFrdXp1XCA7CivkuKHpoK0gPCByeW91dG91XCA7CivlsJrmm7QgPCBuYW9zYXJhXCA7CivkuK3pmoogPCBjaHV1dGFpXCA7CivmnKjpgKAgPCBtb2t1em91XCA7CivkvJ3npaggPCBkZW5weW91XCA7CivmnJ3phZIgPCBhc2F6YWtlXCA7Civlr4LnhLYgPCBzZWtpemVuXCA7CivlsILmpa0gPCBzZW5neW91XCA7Civot6HlvaIgPCBhdG9rYXRhXCA7CivlgbbkvZwgPCBndXVzYWt1XCA7CivlsI/mn4QgPCBrb2R6dWthXCA7CivogbTnvaogPCBjaG91emFpXCA7CivkvZnnhrEgPCB5b25ldHN1XCA7CivkuKHpnaIgPCByeW91bWVuXCA7Civkv6HmhJsgPCBzaGluJydhaVwgOwor5L+X5omNIDwgem9rdXNhaVwgOwor5a2Y57aaIDwgc29uem9rdVwgOwor5pyb6YO3IDwgYm91a3lvdVwgOwor5a6d55SfIDwgaG91c2hvdVwgOwor576O6auqIDwgYmloYXRzdVwgOwor5Lit6ZaTIDwgY2h1dWthblwgOwor5LiA6auqIDwgaXBwYXRzdVwgOwor5Luy57aZIDwgY2h1dWtlaVwgOwor5a6J552AIDwgYW5jaGFrdVwgOwor5a2j56+AIDwga2lzZXRzdVwgOwor5oSb6aOy6ICFIDwgYWlpbnNoYVwgOwor5LqM6KaqIDwgZnV0YW95YVwgOwor6LGa6LazIDwgdG9uc29rdVwgOwor5L2Z54OIIDwgeW9yZXRzdVwgOwor5p2+6JGJIDwgbWF0c3ViYVwgOwor5a6J55u0IDwgYW5jaG9rdVwgOwor6aKo6YCfIDwgZnV1c29rdVwgOwor6aGO6autIDwgYWdvaGlnZVwgOwor57+86LObIDwgeW9rdXNhblwgOwor5bGe5bO2IDwgem9rdXRvdVwgOwor6IK655eFIDwgaGFpYnlvdVwgOwor5a6f55CGIDwgaml0c3VyaVwgOwor5a2m56ulIDwgZ2FrdWRvdVwgOwor5a6J5a6a5ZmoIDwgYW50ZWlraVwgOwor5qOL5a6iIDwga2lreWFrdVwgOwor5pyr6LevIDwgbWF0c3Vyb1wgOwor6aeE6I+T5a2QIDwgZGFnYXNoaVwgOwor5bCG5p2lIDwgc2hvdXJhaVwgOwor5LqG6KejIDwgcnlvdWthaVwgOwor55WR5ZywIDwgaGF0YWNoaVwgOwor55S35ai8IDwgZGFuc2hvdVwgOwor5a2k56uLIDwga29yaXRzdVwgOwor5ZSQ6IOh6bq7IDwgdG91Z29tYVwgOwor6IW55bivIDwgZnVrdXRhaVwgOwor5L+X5oOFIDwgem9rdWpvdVwgOwor5LqG6KaLIDwgcnlvdWtlblwgOwor5Li46Yu8IDwgbWFydWtvdVwgOwor5L+K5omNIDwgc2h1bnNhaVwgOwor5YGc6Z+z56ymIDwgdGVpb25wdVwgOwor5L+X5oKqIDwgem9rdWFrdVwgOwor6IG357WEIDwgc2hva3Vzb1wgOwor576k6ZuGIDwgZ3Vuc2h1dVwgOwor576k6ZuEIDwgZ3VuJyd5dXVcIDsKK+WxseWnpSA8IHlhbWF1YmFcIDsKK+S4iumhjiA8IGpvdWdha3VcIDsKK+WvneauvyA8IHNoaW5kZW5cIDsKK+WwkeaVsCA8IHNob3VzdXVcIDsKK+WckuiKuOWutiA8IGVuZ2Vpa2FcIDsKK+Wwj+aWjiA8IHNob3VzYWlcIDsKK+aKleW9seapnyA8IHRvdWVpa2lcIDsKK+iEguawlyA8IGFidXJha2VcIDsKK+WwveW/oCA8IGppbmNodXVcIDsKK+iLseWQieWIqSA8IGlnaXJpc3VcIDsKK+adoeiZqyA8IGpvdWNodXVcIDsKK+eVpeWPmSA8IHJ5YWt1am9cIDsKK+e+jumjnyA8IGJpc2hva3VcIDsKK+WxseWlpSA8IHlhbWFva3VcIDsKK+ePjeiUtSA8IGNoaW56b3VcIDsKK+eEoeWjsOmfsyA8IG11c2Vpb25cIDsKK+S/l+W/tSA8IHpva3VuZW5cIDsKK+agvOautSA8IGtha3VkYW5cIDsKK+S4gOmjnyA8IGlzc2hva3VcIDsKK+eNhOmWgCA8IGdva3Vtb25cIDsKK+WUkOiMhOWtkCA8IHRvdW5hc3VcIDsKK+aXpeacrOiqniA8IG5paG9uZ29cIDsKK+S5seiqvyA8IHJhbmNob3VcIDsKK+S6uuiHoyA8IGppbnNoaW5cIDsKK+S4gOmhniA8IGljaGlydWlcIDsKK+S5seiqrSA8IHJhbmRva3VcIDsKK+S6gOijgiA8IGtpcmV0c3VcIDsKK+iDuOawtCA8IGt5b3VzdWlcIDsKK+aeoOe3miA8IHdha3VzZW5cIDsKK+S8keecoCA8IGt5dXVtaW5cIDsKK+iHqOS8kSA8IHJpbmt5dXVcIDsKK+W+k+S4ieS9jSA8IGp1c2FubWlcIDsKK+WppuWls+WtkCA8IGZ1am9zaGlcIDsKK+S8j+ebriA8IGZ1c2hpbWVcIDsKK+S4h+mboyA8IGJhbicnbmFuXCA7CivlsY7lsL8gPCBzaGlueW91XCA7CivkuIrpmbggPCBqb3VyaWt1XCA7CivlsLrluqYgPCBzaGFrdWRvXCA7CivkuIfpmpwgPCBiYW5zaG91XCA7CivmnIDpgakgPCBzYWl0ZWtpXCA7CivlsLHlvbkgPCBzaHV1ZWtpXCA7CivkuIDpnaIgPCBpY2hpbWVuXCA7Civlr77mlbUgPCB0YWl0ZWtpXCA7Civlt6XkuovosrsgPCBrb3VqaWhpXCA7CivmuKnluqboqIggPCBvbmRva2VpXCA7Civku4/nuIEgPCBidXRzdWVuXCA7Civku5XntYQgPCBzaGlrdW1pXCA7CivmoZDmnZAgPCBraXJpemFpXCA7CivlsITmkoMgPCBzaGFnZWtpXCA7CivlronlrprljJYgPCBhbnRlaWthXCA7CivkuIDpm6ggPCBoaXRvYW1lXCA7Civmn7HnirYgPCBjaHV1am91XCA7CivkvZzms4EgPCBzYWtreW91XCA7CivkuIDpm6MgPCBpY2hpbmFuXCA7CivlsbHlnLAgPCB5YW1hY2hpXCA7Civms5Xonrrosp0gPCBob3JhZ2FpXCA7Civog7TmrLIgPCBkb3V5b2t1XCA7CivpoY3pnaIgPCBnYWt1bWVuXCA7Civnj43oirggPCBjaGluZ2VpXCA7Civmo67ljrMgPCBzaGluZ2VuXCA7CivnlLflm5ogPCBkYW5zaHV1XCA7Civmoq/lrZAgPCBoYXNoaWdvXCA7CivmnpXntbUgPCBtYWt1cmFlXCA7CivnlarlgpggPCBiYW5nYXNhXCA7CivpnZ7luLjmmYIgPCBoaWpvdWppXCA7CivkuIDpmaMgPCBpY2hpamluXCA7Civku4/ntYwgPCBidWtreW91XCA7CivpoKzpq60gPCBob29oaWdlXCA7CivmnKroqK0gPCBtaXNldHN1XCA7CivnlaXlhIAgPCByeWFrdWdpXCA7CivkuLvou7ggPCBzaHVqaWt1XCA7CivpoKzpqqggPCBob29ib25lXCA7CivkubHooYwgPCByYW5neW91XCA7CivogonnnLwgPCBuaWt1Z2FuXCA7CivkuK3pgZMgPCBjaHV1ZG91XCA7CivlrqLmvJQgPCBreWFrdWVuXCA7Civlroznhp8gPCBrYW5qdWt1XCA7CivkuIDploAgPCBpY2hpbW9uXCA7CivmmpfprLEgPCBhbicndXRzdVwgOwor5YWr5Y2D5LujIDwgeWFjaGl5b1wgOwor5qSN5LuYIDwgdWV0c3VrZVwgOwor55CG56qfIDwgcmlrdXRzdVwgOwor5a6f5ryUIDwgaml0c3VlblwgOwor5bC85a+6IDwgYW1hZGVyYVwgOwor5Lit6L6yIDwgY2h1dW5vdVwgOwor5p2R6JC9IDwgc29ucmFrdVwgOwor5pyr6KOUIDwgbWF0c3VlaVwgOwor5bC65a+4IDwgc2VraXN1blwgOwor5pyo6KO9IDwgbW9rdXNlaVwgOwor5L2X5q2MIDwgd2FiaXV0YVwgOwor5L+u5aOrIDwgc2h1dXNoaVwgOwor6aKo6KmVIDwgZnV1aHlvdVwgOwor55Wq5Lq6IDwgYmFuJyduaW5cIDsKK+Wus+avkiA8IGdhaWRva3VcIDsKK+acl+iqrSA8IHJvdWRva3VcIDsKK+Wun+a4rCA8IGppc3Nva3VcIDsKK+eUn+WeoyA8IGlrZWdha2lcIDsKK+WxnuWbvSA8IHpva2tva3VcIDsKK+S6lOiJsiA8IGdvc2hva3VcIDsKK+i1pOacrSA8IGFrYWZ1ZGFcIDsKK+S4jee0sOW3pSA8IGJ1c2Fpa3VcIDsKK+adv+e3oCA8IGl0YWppbWVcIDsKK+ePjeiBniA8IGNoaW5idW5cIDsKK+S9meawtOi3ryA8IHlvc3Vpcm9cIDsKK+eUuuWQjSA8IGNob3VtZWlcIDsKK+acneimiyA8IGNob3VrZW5cIDsKK+aarumbqiA8IGJvc2V0c3VcIDsKK+S9s+aciCA8IGthZ2V0c3VcIDsKK+iCieeVjCA8IG5pa3VrYWlcIDsKK+adpeiBtCA8IHJhaWNob3VcIDsKK+S7u+eUqCA8IG5pbicneW91XCA7Civog7jmnb8gPCBtdW5haXRhXCA7Civkv6HlpYkgPCBzaGlucG91XCA7Civmnb/ntJkgPCBpdGFnYW1pXCA7CivkuozoibIgPCBuaXNob2t1XCA7Civpp5DmlK8gPCBjaHV1c2hpXCA7Civmm7Lot68gPCBreW9rdXJvXCA7CivlsJHlvJ8gPCBzaG91dGVpXCA7Civnm7jpgZXngrkgPCBzb3VpdGVuXCA7CivkuKHovKogPCByeW91cmluXCA7CivmnKjonYsgPCBtb2t1cm91XCA7CivkuIDpjKAgPCBpY2hpam91XCA7Civlrp/ms4EgPCBqaWtreW91XCA7CivotaTml5cgPCBha2FoYXRhXCA7Civkv4LlsZ4gPCBrZWl6b2t1XCA7CivkuKHou40gPCByeW91Z3VuXCA7Civog47mr5IgPCB0YWlkb2t1XCA7CivnlZnku7sgPCByeXV1bmluXCA7CivmnL3okYkgPCBrdWNoaWJhXCA7Civmm7zojbznvoUgPCBtYW5kYXJhXCA7CivlsbHli5ggPCB5YW1ha2FuXCA7CivlsJHlubQgPCBzaG91bmVuXCA7Civku4rnqIsgPCBpbWFob2RvXCA7Civpp5LmkI0gPCBrb21hc29uXCA7CivnvarpmpwgPCB6YWlzaG91XCA7CivlsI/lupcgPCBzaG91dGVuXCA7CivlnLDpm7fngasgPCBqaXJhaWthXCA7Civlhazli5nlk6EgPCBrb3VtdWluXCA7Civlrr/moLkgPCBzaHVra29uXCA7CivmnIjoqZUgPCBnZXBweW91XCA7CivmoYjlsbHlrZAgPCBrYWthc2hpXCA7CivkuIvpg6ggPCBzaGltb2JlXCA7CivmnZ/nvqQgPCBzb2t1Z3VuXCA7Civlrp/mr40gPCBqaXRzdWJvXCA7CivkuI3pgZQgPCBmdXRhdHN1XCA7Civlj6Tku6Poqp4gPCBrb2RhaWdvXCA7CivnlJ/kuIDmnKwgPCBraWlwcG9uXCA7CivkuIvpgZQgPCBrYXRhdHN1XCA7Civpo5vohJogPCBoaWt5YWt1XCA7CivnlLrlhoUgPCBjaG91bmFpXCA7CivmnIjoposgPCB0c3VraW1pXCA7Civkv5flobUgPCB6b2t1amluXCA7CivlgIvliKUgPCBrb2JldHN1XCA7CivlsZ7lkI0gPCB6b2t1bWVpXCA7Civku5jnnYAgPCBmdWNoYWt1XCA7CivkuIrpgLIgPCBqb3VzaGluXCA7CivnjJ/pioMgPCByeW91anV1XCA7CivkuqTntaEgPCBrb3VyYWt1XCA7CivkvZXmn5AgPCBuYW5pYm91XCA7CivouqvotJTlsZMgPCBtaWJpaWtpXCA7Civku5XnnYAgPCBzaGlraXNlXCA7CivmnKjolKYgPCBraWR6dXRhXCA7CivogonniYcgPCBuaWt1aGVuXCA7CivnlLflhKogPCBkYW4nJ3l1dVwgOwor5pyo6JOuIDwgbW9rdXJlblwgOwor5pyq5pW055CGIDwgbWlzZWlyaVwgOwor5LqI56eR55SfIDwgeW9rYXNlaVwgOwor5puy6K2cIDwga3lva3VmdVwgOwor6IKl5rqcIDwga29lZGFtZVwgOwor6LOe546pIDwgc2hvdWdhblwgOwor5YCf5Lq6IDwga2FyaW5pblwgOwor5L+K5aOrIDwgc2h1bnNoaVwgOwor5pu46KmVIDwgc2hvaHlvdVwgOwor5a+G5pWZIDwgbWlra3lvdVwgOwor5LiA6YGTIDwgaWNoaWRvdVwgOwor5LiA6YGHIDwgaWNoaWd1dVwgOwor5pu46Ki8IDwgc2hvc2hvdVwgOwor6LKr56aEIDwga2Fucm9rdVwgOwor5pyq57WM6YGOIDwgbWlrZWlrYVwgOwor6LaK5bm0IDwgZXRzdW5lblwgOwor5LiA6YCjIDwgaWNoaXJlblwgOwor5LiJ6Lu4IDwgc2FuamlrdVwgOwor6ICB6IejIDwgcm91c2hpblwgOwor5p2h57SEIDwgam91eWFrdVwgOwor6LGG6JS1IDwgbWFtZXpvdVwgOwor5L2Z5pelIDwgeW9qaXRzdVwgOwor55CD55WMIDwga3l1dWthaVwgOwor5L2c5paHIDwgc2FrdWJ1blwgOwor5rW35p2+6LKdIDwgbWlydWdhaVwgOwor5L2O5pyoIDwgdGVpYm9rdVwgOwor6aas5pa5IDwgdW1ha2F0YVwgOwor5Lmx6IejIDwgcmFuc2hpblwgOwor5L2V5pmCIDwgbmFuZG9raVwgOwor6LWk5omLIDwgc2VraXNodVwgOwor5YCS5LyPIDwgdG91ZnVrdVwgOwor5puy6KejIDwga3lva2thaVwgOwor5LiA6LyqIDwgaWNoaXJpblwgOwor5bCK5a65IDwgc29uJyd5b3VcIDsKK+S4iui2syA8IGpvdXNva3VcIDsKK+S4oeirliA8IHJ5b3Vyb25cIDsKK+S4gOi7jSA8IGljaGlndW5cIDsKK+eUuuS6uiA8IGNob3VuaW5cIDsKK+S4iui2iiA8IGpvdWV0c3VcIDsKK+WxgOWToSA8IGt5b2t1aW5cIDsKK+WwguWxniA8IHNlbnpva3VcIDsKK+S9leaVhSA8IG5hbml5dWVcIDsKK+S7i+eXhSA8IGthaWJ5b3VcIDsKK+S7j+eUuyA8IGJ1dHN1Z2FcIDsKK+iEseWtlyA8IGRhdHN1amlcIDsKK+eMm+i/vSA8IG1vdXRzdWlcIDsKK+i0heayoiA8IHplaXRha3VcIDsKK+S/oeWPtyA8IHNoaW5nb3VcIDsKK+eUsOS9nCA8IGRlbnNha3VcIDsKK+WFteWFkOW4ryA8IGhla29vYmlcIDsKK+WxseS4rSA8IHNhbmNodXVcIDsKK+acrOiFuSA8IGhvbnB1a3VcIDsKK+S6lOevgCA8IGdvc2V0c3VcIDsKK+S4u+iZuSA8IHNodW5pamlcIDsKK+S4puijvSA8IG5hbWlzZWlcIDsKK+eUmuWFrSA8IGppbnJva3VcIDsKK+i1pOaBpSA8IGFrYWhhamlcIDsKK+i6q+Wlh+m6lyA8IG1pZ2lyZWlcIDsKK+acseiCiSA8IHNodW5pa3VcIDsKK+S9meaOpSA8IHlvc2V0c3VcIDsKK+aknOafu+WToSA8IGtlbnNhaW5cIDsKK+eUsuS5mSA8IGtvdW90c3VcIDsKK+S6leetkiA8IGlkenV0c3VcIDsKK+acrOiDvSA8IGhvbicnbm91XCA7CivnkaPmnKsgPCBzYW1hdHN1XCA7CivkurrnmocgPCBuaW4nJ25vdVwgOwor5Lq655qEIDwgamludGVraVwgOwor6ISG5byxIDwgemVpamFrdVwgOwor6aWR5riHIDwga2lrYXRzdVwgOwor5Li76JasIDwgc2h1eWFrdVwgOwor5Y2x5qmf5oSfIDwga2lraWthblwgOwor6LWk6IyE5a2QIDwgYWthbmFzdVwgOwor5a6Y5pyJIDwga2FuJyd5dXVcIDsKK+S7lueJqSA8IHRhYnV0c3VcIDsKK+e+veiZqyA8IGhhbXVzaGlcIDsKK+eUo+S8kSA8IHNhbmt5dXVcIDsKK+S9nOaIpiA8IHNha3VzZW5cIDsKK+S8r+aelyA8IGJlcnVyaW5cIDsKK+iDjOaVmSA8IGhhaWt5b3VcIDsKK+ixiuiDuCA8IGhvdWt5b3VcIDsKK+afs+adoSA8IHJ5dXVqb3VcIDsKK+err+atpuiAhSA8IGhhbXVzaGFcIDsKK+eUn+S5syA8IHNlaW55dXVcIDsKK+WNsOW6puS6uiA8IGluZG9qaW5cIDsKK+WGheWuieaJkyA8IG5haWFuZGFcIDsKK+iCieaxoCA8IG5pa3VjaGlcIDsKK+S4ieinkiA8IHNhbmtha3VcIDsKK+S4i+imiyA8IHNoaXRhbWlcIDsKK+S8j+aoiyA8IGZ1c2Vkb2lcIDsKK+iCieaxgSA8IG5pa3VqdXVcIDsKK+Wxi+agueadvyA8IHlhbmVpdGFcIDsKK+eEoeacn+WIkSA8IG11a2lrZWlcIDsKK+eOhOe/gSA8IGdlbicnbm91XCA7CivoqJjlv7XnopEgPCBraW5lbmhpXCA7CivkuIDoqqwgPCBpc3NldHN1XCA7Civpp5Dlsa8gPCBjaHV1dG9uXCA7CivlsLHlirQgPCBzaHV1cm91XCA7CivosrfniakgPCBrYWltb25vXCA7Civpg73luILljJYgPCB0b3NoaWthXCA7CivlsYXlgJkgPCBpc291cm91XCA7CivmnI3ohrogPCBmdWt1eW91XCA7Civmnq/muIcgPCBrb2thdHN1XCA7Civpoqjnv5IgPCBmdXVzaHV1XCA7CivkuZfnvoMgPCBqb3ViZWtpXCA7CivlsYjkvLggPCBrdXNzaGluXCA7Civkv5flg6cgPCB6b2t1c291XCA7Civlupznn6XkuosgPCBmdWNoaWppXCA7CivlhoXogLPngo4gPCBuYWlqaWVuXCA7CivmnKzntaYgPCBob25reXV1XCA7CivkuK3okYkgPCBjaHV1eW91XCA7Civnvarot6EgPCB6YWlzZWtpXCA7Civpo5vnpKsgPCB0c3VidXRlXCA7CivmnaHnm64gPCBqb3Vtb2t1XCA7CivkuIDopqcgPCBpY2hpcmFuXCA7Civlr4bluqYgPCBtaXRzdWRvXCA7CivkuIrooaggPCBqb3VoeW91XCA7CivljJfkuqzoqp4gPCBwZWtpbmdvXCA7CivkuIvooYAgPCBnZWtldHN1XCA7CivotrPlirQgPCBzb2t1cm91XCA7CivlsI/lloQgPCBzaG91emVuXCA7Civku67msbogPCBrYWtldHN1XCA7CivkupXnm64gPCBzZWltb2t1XCA7CivlsJrlj4ggPCBuYW9tYXRhXCA7CivniqzlsI/lsYsgPCBpbnVnb3lhXCA7Civmmpfouo0gPCBhbicneWFrdVwgOwor5b285bK45LyaIDwgaGlnYW4nJ2VcIDsKK+iyqOeJqSA8IGthbW90c3VcIDsKK+Wun+aKgCA8IGppdHN1Z2lcIDsKK+acrOexpCA8IGhvbmt1amlcIDsKK+iEseWWtiA8IGRhdHN1ZWlcIDsKK+S9k+W+lyA8IHRhaXRva3VcIDsKK+acrOexjSA8IGhvbnNla2lcIDsKK+Wwj+WTgSA8IHNob3VoaW5cIDsKK+acieiBtyA8IHl1dXNva3VcIDsKK+S9s+WuoiA8IGtha3lha3VcIDsKK+e+juihkyA8IGJpanV0c3VcIDsKK+i1pOWtkCA8IHNla2lzaGlcIDsKK+Wus+W/gyA8IGdhaXNoaW5cIDsKK+aYvOmkkCA8IGNodXVzYW5cIDsKK+S6jOedgCA8IG5pY2hha3VcIDsKK+ebuOW8n+WtkCA8IGFpZGVzaGlcIDsKK+S/l+S8nSA8IHpva3VkZW5cIDsKK+aguOWtkCA8IGtha3VzaGlcIDsKK+acrOeusSA8IGhvbmJha29cIDsKK+S6jOebtCA8IG5pY2hva3VcIDsKK+mmrOW4giA8IHVtYWljaGlcIDsKK+S9leW5tCA8IG5hbicnbmVuXCA7CivlsI/lj6MgPCBrb2d1Y2hpXCA7Civmnb7nhaQgPCBzaG91YmFpXCA7CivmnKznrYsgPCBob25zdWppXCA7CivmnbHni6wgPCB0b3Vkb2t1XCA7CivnjaPogokgPCBqdXVuaWt1XCA7Civkuoznmb4gPCBuaWh5YWt1XCA7Civmm7LoiJ4gPCBrdXNlbWFpXCA7Civnj43njaMgPCBjaGluanV1XCA7CivmnKznq6AgPCBob25zaG91XCA7CivkuLvnv7wgPCBzaHV5b2t1XCA7CivnvqTokL0gPCBndW5yYWt1XCA7Civpo7TnjokgPCBhbWVkYW1hXCA7CivogITnoowgPCBtb3Vyb2t1XCA7Civlrq7lu7cgPCBreXV1dGVpXCA7CivlsLHku7sgPCBzaHV1bmluXCA7CivlppnpvaIgPCBteW91cmVpXCA7CivmmYLpm6ggPCBzaGlndXJlXCA7CivmnKjnq4sgPCBrb2RhY2hpXCA7Civnjovnq4sgPCBvdXJpdHN1XCA7CivlsI/li4cgPCBzaG91eXV1XCA7CivogbfmqKkgPCBzaG9ra2VuXCA7Civlr4Tlrr8gPCBraXNodWt1XCA7Civps7Plh7DluqcgPCBob3VvdXphXCA7Civog4zlvrMgPCBoYWl0b2t1XCA7CivmoLzlpJYgPCBrYWt1Z2FpXCA7Civlkr3poK3ngo4gPCBpbnRvdWVuXCA7CivkuIrolJ8gPCBqb3V6b2t1XCA7CivkuK3og4wgPCBjaHV1emVpXCA7CivotaTlpJYgPCBzZWtpZ2FpXCA7CivkuKHoiLcgPCByeW91Z2VuXCA7CivlraPmnKsgPCBraW1hdHN1XCA7Civmnb7mv6QgPCBzaG91dG91XCA7Civmn4TmnZMgPCBoaXNoYWt1XCA7Civni6zotbAgPCBkb2t1c291XCA7CivmipXlvbHlm7MgPCB0b3VlaXp1XCA7CivnjonnqL8gPCBneW9ra291XCA7Civkvr/kvqsgPCBiZW4nJ25laVwgOwor5LiN6KGb55SfIDwgZnVlaXNlaVwgOwor5LuW5q66IDwgdGFzYXRzdVwgOwor5LiL6JGJIDwgc2hpdGFiYVwgOwor6Laz5LujIDwgYXNoaWRhaVwgOwor5Lit6ICBIDwgY2h1dXJvdVwgOwor5pyI57WmIDwgZ2Vra3l1dVwgOwor6aeQ5ZyoIDwgY2h1dXphaVwgOwor5Lih6IWVIDwgcnlvdXVkZVwgOwor542E6IiOIDwgZ29rdXNoYVwgOwor5bCO5YWlIDwgZG91bnl1dVwgOwor5pW055CG6YOoIDwgc2VpcmlidVwgOwor5YWl5q+N5bGLIDwgaXJpbW95YVwgOwor5LmZ56iuIDwgb3RzdXNodVwgOwor54md6baPIDwgbWVuZG9yaVwgOwor5aSa6Laj5ZGzIDwgdGFzaHVtaVwgOwor5a2f5pilIDwgbW91c2h1blwgOwor5L6b5YuiIDwgdG9tb3plaVwgOwor5a+p5ZWPIDwgc2hpbm1vblwgOwor5LuL5q67IDwga2Fpa2FrdVwgOwor5LiA6JGJIDwgaWNoaXlvdVwgOwor5pyA57WCIDwgc2Fpc2h1dVwgOwor5Lmz55mMIDwgbnl1dWdhblwgOwor6IC95rq6IDwgdGFuZGVraVwgOwor5L2P5a6FIDwganV1dGFrdVwgOwor6LaF5YukIDwgY2hvdWtpblwgOwor6ICB55eFIDwgcm91YnlvdVwgOwor6LOT5qC8IDwgaGlua2FrdVwgOwor5pyd56S8IDwgY2hvdXJlaVwgOwor6Z+z6KiY5Y+3IDwgb25raWdvdVwgOwor5bCP5L6/IDwgc2hvbmJlblwgOwor5bCB5YWlIDwgZnV1bnl1dVwgOwor5pil6Zu3IDwgc2h1bnJhaVwgOwor5bCP5Z2K5Li7IDwga29ib3V6dVwgOwor5Lit57eoIDwgY2h1dWhlblwgOwor5pyq552AIDwgbWljaGFrdVwgOwor5pu457WMIDwgc2hva3lvdVwgOwor5a+45Yi7IDwgc3Vua29rdVwgOwor5LqL54mpIDwgamlidXRzdVwgOwor5LuV5qWtIDwgc2hpd2F6YVwgOwor5pel5pys55S7IDwgbmlob25nYVwgOwor54++5qWtIDwgZ2VuZ3lvdVwgOwor5puz57ayIDwgaGlraWFtaVwgOwor5bCK5L+hIDwgc29uc2hpblwgOwor6LaF5YehIDwgY2hvdWJvblwgOwor5Luy5patIDwgY2h1dWRhblwgOwor5bCP5LydIDwgc2hvdWRlblwgOwor6Z6m6Z+GIDwgYnVyYW5rb1wgOwor57SA5YWD5b6MIDwga2lnZW5nb1wgOwor5Lmx55SoIDwgcmFuJyd5b3VcIDsKK+S4g+iJsiA8IG5hbmFpcm9cIDsKK+S4iuiGiiA8IGpvdWhha3VcIDsKK+S9leWltCA8IGRveWF0c3VcIDsKK+S9k+a4qeWZqCA8IHRhaW9ua2lcIDsKK+S4gOiKuCA8IGljaGlnZWlcIDsKK+eKrOmHmCA8IGludWt1Z2lcIDsKK+acqueZuiA8IG1paGF0c3VcIDsKK+Wwj+S6uiA8IHNob3VuaW5cIDsKK+S9l+WjsCA8IHdhYmlnb2VcIDsKK+S4gOiJsiA8IGhpdG9pcm9cIDsKK+S4u+etiyA8IHNodXN1amlcIDsKK+S4reezuCA8IGNodXVpdG9cIDsKK+izh+agvCA8IHNoaWtha3VcIDsKK+abuOexjSA8IHNob3Nla2lcIDsKK+Wuv+WgtCA8IHNodWt1YmFcIDsKK+aYpemXmCA8IHNodW50b3VcIDsKK+aatOiQvSA8IGJvdXJha3VcIDsKK+S6rOa0myA8IGtlaXJha3VcIDsKK+S4h+iDvSA8IG1hbicnbm91XCA7CivkuInogrIgPCBzYW4nJ2lrdVwgOwor5LiJ6IKhIDwgc2FubWF0YVwgOwor5LiA6IazIDwgaWNoaXplblwgOwor54m56Zu7IDwgdG9rdWRlblwgOwor6aCG6Kq/IDwganVuY2hvdVwgOwor5769566SIDwgaGFib3VraVwgOwor6ISa5YWJIDwga3lha2tvdVwgOwor54us6KOBIDwgZG9rdXNhaVwgOwor576K6IacIDwgeW91bWFrdVwgOwor5pyr55SfIDwgc3VlbmFyaVwgOwor5p+75a+fIDwgc2FzYXRzdVwgOwor5LiK57+8IDwgam91eW9rdVwgOwor5LyR5oCgIDwga3l1dXRhaVwgOwor5Lmx542yIDwgcmFua2FrdVwgOwor576p57W2IDwgZ2l6ZXRzdVwgOwor5piH6aCGIDwgc2hvdWp1blwgOwor54++5pyJIDwgZ2VuJyd5dXVcIDsKK+iyneauvCA8IGthaWdhcmFcIDsKK+eJqemfsyA8IG1vbm9vdG9cIDsKK+W+rua4qea5ryA8IGJpb250b3VcIDsKK+S4u+elniA8IHNodXNoaW5cIDsKK+eOieeSvSA8IGd5b2t1amlcIDsKK+S8muW4rSA8IGthaXNla2lcIDsKK+eLvOiXiSA8IHJvdXpla2lcIDsKK+e+iuiCiSA8IHlvdW5pa3VcIDsKK+mgkOihgCA8IHlva2V0c3VcIDsKK+iytOWppuS6uiA8IGtpZnVqaW5cIDsKK+miqOeWuSA8IGZ1dXNoaW5cIDsKK+eOieeRmyA8IGd5b2t1ZWlcIDsKK+Wuv+WWtiA8IHNodWt1ZWlcIDsKK+S7luaXpSA8IHRhaml0c3VcIDsKK+iAgeeGnyA8IHJvdWp1a3VcIDsKK+izh+aWmSA8IHNoaXJ5b3VcIDsKK+mnkOWFtSA8IGNodXVoZWlcIDsKK+WPs+Wkp+iHoyA8IHVkYWlqaW5cIDsKK+S9juWcpyA8IHRlaWF0c3VcIDsKK+advualkyA8IHNob3VmdXVcIDsKK+S7iuacnSA8IGtvbmNob3VcIDsKK+S4ueeipyA8IHRhbnBla2lcIDsKK+aaruiJsiA8IGJvc2hva3VcIDsKK+S7leaWuSA8IHNoaWthdGFcIDsKK+W4sOWMluS6uiA8IGtpa2FqaW5cIDsKK+S7iuabtCA8IGltYXNhcmFcIDsKK+WvhuWRiiA8IG1pa2tva3VcIDsKK+eKr+i3oSA8IGhhbnNla2lcIDsKK+iytOacrSA8IGtpc2F0c3VcIDsKK+mjhOeEtiA8IGh5b3V6ZW5cIDsKK+S7iuaagSA8IGtvbmd5b3VcIDsKK+aXqemmrCA8IGhheWF1bWFcIDsKK+S9nOWTgSA8IHNha3VoaW5cIDsKK+iyoOaltSA8IGZ1a3lva3VcIDsKK+aIpuW+jOa0viA8IHNlbmdvaGFcIDsKK+S6uuagvCA8IGppbmtha3VcIDsKK+acrOeJqSA8IGhvbm1vbm9cIDsKK+S7iuaZgiA8IGltYWRva2lcIDsKK+adpeattCA8IHJhaXJla2lcIDsKK+mfs+iosyA8IG9uJyd5YWt1XCA7Civku4rmmKUgPCBrb25zaHVuXCA7Civosq/mnKggPCBjaG9ib2t1XCA7CivosrfmmKUgPCBiYWlzaHVuXCA7Civlr4zlipsgPCBmdXJ5b2t1XCA7CivkuIrntJogPCBqb3VreXV1XCA7CivkuIrntJkgPCB1d2FnYW1pXCA7CivogZrmlaMgPCBzaHV1c2FuXCA7CivkuIrntJAgPCB1d2FoaW1vXCA7Civku4rmlrkgPCBpbWFnYXRhXCA7CivmnKjniYggPCBtb2t1aGFuXCA7CivmnKjniYcgPCBtb2t1aGVuXCA7Civog4zlnKcgPCBoYWlhdHN1XCA7CivogonlvL4gPCBuaWt1ZGFuXCA7CivnjYTnqpMgPCBnb2t1c291XCA7CivlrablubQgPCBnYWt1bmVuXCA7CivlrqLlnJ8gPCBreWFrdWRvXCA7CivorbTosqwgPCBrZW5zZWtpXCA7CivkvY7llLEgPCB0ZWlzaG91XCA7Civml6fpoqggPCBreXV1ZnV1XCA7CivlrZjlv7UgPCB6b24nJ25lblwgOwor546H54i+IDwgc290c3VqaVwgOwor5a2m5bi9IDwgZ2FrdWJvdVwgOwor5pys54S2IDwgaG9uJyduZW5cIDsKK+eLguiogCA8IGt5b3VnZW5cIDsKK+S7leaOmyA8IHNoaWtha2VcIDsKK+agquWIuCA8IGthYnVrZW5cIDsKK+mjm+ayqyA8IGhpbWF0c3VcIDsKK+miqOeLgiA8IGZ1dWt5b3VcIDsKK+WtkOaBryA8IHNoaXNva3VcIDsKK+mmrOWMuSA8IGJhaGl0c3VcIDsKK+abuOebriA8IHNob21va3VcIDsKK+S4iueusSA8IHV3YWJha29cIDsKK+iDuOWDjyA8IGt5b3V6b3VcIDsKK+iDtOWFgyA8IGRvdW1vdG9cIDsKK+aal+iJsiA8IGFuc2hva3VcIDsKK+WujOWjgSA8IGthbmJla2lcIDsKK+iDhuWaoiA8IHRhbicnbm91XCA7CivosYrnhp8gPCBob3VqdWt1XCA7CivkuIrnrZYgPCBqb3VzYWt1XCA7CivpoY7ntJAgPCBhZ29oaW1vXCA7CivmnKjngq0gPCBtb2t1dGFuXCA7CivkvZnlipsgPCB5b3J5b2t1XCA7Civlj5flg4/mqZ8gPCBqdXpvdWtpXCA7CivkuK3nm6QgPCBjaHV1YmFuXCA7CivoqJjlv7XmqLkgPCBraW5lbmp1XCA7CivogLPmoJMgPCBtaW1pc2VuXCA7CivkvZnlibIgPCB5b2thdHN1XCA7CivkuIfnrZYgPCBiYW5zYWt1XCA7Civku6Tmga8gPCByZWlzb2t1XCA7Civnsonlvq7lobUgPCBrb21pamluXCA7CivniYfpnaIgPCBrYXRhbWVuXCA7CivngrrmlL/ogIUgPCBpc2Vpc2hhXCA7CivnibnphY0gPCB0b2t1aGFpXCA7CivkubPmuIUgPCBueXV1c2VpXCA7Civml6XpnLIgPCBuaWNoaXJvXCA7CivlpKfniqzluqcgPCBvb2ludXphXCA7Civml6XmmYLoqIggPCBoaWRva2VpXCA7CivkubPmtrIgPCBueXV1ZWtpXCA7CivnjK7nq4sgPCBrb25kYXRlXCA7CivkuKHnnLwgPCByeW91Z2FuXCA7CivkvZXlh6YgPCBkb2tvaXJhXCA7CivosYbngq0gPCBtYW1ldGFuXCA7Civlrp/lk6EgPCBqaXRzdWluXCA7Civnj43mnKwgPCBjaGlucG9uXCA7Civku6PlvbkgPCBkYWl5YWt1XCA7CivkubHmtYEgPCByYW5yeXV1XCA7CivkuIDnq68gPCBpcHBhc2hpXCA7Civnj43mm7ggPCBjaGluc2hvXCA7CivkvZXlhbEgPCBuYW50b21vXCA7Civlr5LkuK0gPCBrYW5jaHV1XCA7CivmmYLkuovoq5YgPCBqaWppcm9uXCA7CivkuK3nk7YgPCBjaHV1YmluXCA7CivkuIfnpo8gPCBtYW5wdWt1XCA7Civogbflt6UgPCBzaG9ra291XCA7CivlroXlnLAgPCB0YWt1Y2hpXCA7CivkubPmsYEgPCBueXV1anV1XCA7CivmoKHlgIkgPCBhemVrdXJhXCA7Civnv5XnhLYgPCBreXV1emVuXCA7Civkv53ppIrpmaIgPCBob3lvdWluXCA7CivmlrDprq4gPCBzaGluc2VuXCA7CivosYrmvIEgPCBob3VyeW91XCA7CivoravoqIAgPCB1d2Fnb3RvXCA7CivmnJ3mva4gPCBhc2FzaGlvXCA7Civoh6rnhLbolq8gPCBqaW5lbmpvXCA7Civkv53lgaXmiYAgPCBob2tlbmpvXCA7Civpoqjmva4gPCBmdXVjaG91XCA7Civog7TkuK0gPCBkb3VuYWthXCA7CivpoJrogokgPCBrZWluaWt1XCA7CivkvZzkvosgPCBzYWt1cmVpXCA7Civpm6LlvIHoirEgPCByaWJlbmthXCA7CivmnKzmtYEgPCBob25yeXV1XCA7Civlr4bkuosgPCBtaXRzdWppXCA7Civku7DlsbEgPCBneW91c2FuXCA7Civku4/mgakgPCBidXRzdW9uXCA7CivmrKHkuJbku6MgPCBqaXNlZGFpXCA7Civku5blvosgPCB0YXJpdHN1XCA7CivmnaXmmKUgPCByYWloYXJ1XCA7CivkuI3lmajnlKggPCBidWtpeW91XCA7Civnj77lvbkgPCBnZW4nJ2VraVwgOwor5LiA56S8IDwgaWNoaXJlaVwgOwor6aCG6ImvIDwganVucnlvdVwgOwor5LiK55+zIDwgdXdhaXNoaVwgOwor5a6f5YuZIDwgaml0c3VtdVwgOwor5a2Q5bGAIDwga29reW9rdVwgOwor5omL5aWH6bqXIDwgdGVnaXJlaVwgOwor5LiL552AIDwgc2hpdGFnaVwgOwor5pyq5rG6IDwgbWlrZXRzdVwgOwor5aSn6buSIDwgZGFpa29rdVwgOwor5aGp5Z+65oCnIDwgZW5raXNlaVwgOwor5LuV5bqmIDwgc2hpdGFrdVwgOwor5a2m5aSWIDwgZ2FrdWdhaVwgOwor6aCs57SFIDwgaG9vYmVuaVwgOwor6Z2i6ZW3IDwgb21vbmFnYVwgOwor6K2Y6KqeIDwgc2hpa2lnb1wgOwor5L2O5L+XIDwgdGVpem9rdVwgOwor5LiL55uuIDwgc2hpdGFtZVwgOwor5p2P5p6XIDwga3lvdXJpblwgOwor5a2R5a2RIDwgYm91ZnVyaVwgOwor5pqX57eRIDwgYW5yeW9rdVwgOwor6aas5Li7IDwgYmFudXNoaVwgOwor54m56LWmIDwgdG9rdXNoYVwgOwor5LiN55m6IDwgZnVoYXRzdVwgOwor5L2V5Lq6IDwgbmFucGl0b1wgOwor6KiY5b+15pelIDwga2luZW5iaVwgOwor6auY56WW54i2IDwga291c29mdVwgOwor5LuK5pel5LitIDwga3lvdWp1dVwgOwor6IG35a6JIDwgc2hva3VhblwgOwor5pmv6ImyIDwga2VzaGlraVwgOwor5p2R5pyJIDwgc29uJyd5dXVcIDsKK+adkOacqCA8IHphaW1va3VcIDsKK+acp+awlyA8IG9ib3JvZ2VcIDsKK+S4h+ebriA8IGJhbm1va3VcIDsKK+mcsumqqCA8IHJva290c3VcIDsKK+S7j+W6pyA8IGJ1dHN1emFcIDsKK+mjm+acrSA8IGhpc2F0c3VcIDsKK+Wkp+m3uiA8IGRhaXNhZ2lcIDsKK+irlumngSA8IHJvbmJha3VcIDsKK+miqOa1gSA8IGZ1dXJ5dXVcIDsKK+WtpuWgsSA8IGdha3Vob3VcIDsKK+iCieWjsCA8IG5pa3VzZWlcIDsKK+S7o+WwhiA8IGRhaXNob3VcIDsKK+ixiuaygyA8IGhvdXlva3VcIDsKK+iQjum7hOeXhSA8IGlvdWJ5b3VcIDsKK+iBluW7nyA8IHNlaWJ5b3VcIDsKK+WutuS4uyA8IHlhbnVzaGlcIDsKK+S4gOedgCA8IGl0Y2hha3VcIDsKK+S4gOecvCA8IGljaGlnYW5cIDsKK+S4gOecuCA8IGljaGlib3VcIDsKK+itmOimiyA8IHNoaWtrZW5cIDsKK+afkOWbvSA8IGJvdWtva3VcIDsKK+adieadkCA8IHN1Z2l6YWlcIDsKK+S4gOecoCA8IGljaGltaW5cIDsKK+S7geW+syA8IGppbnRva3VcIDsKK+Wum+WFiCA8IGF0ZXNha2lcIDsKK+aTrOWPpOaWhyA8IGdpa29idW5cIDsKK+aWsOmiqCA8IHNoaW5wdXVcIDsKK+S4gOebtCA8IGl0Y2hva3VcIDsKK+S7iuW5tCA8IGtvbicnbmVuXCA7Civog5rkubMgPCBoYWlueXV1XCA7Civkuozml6UgPCBmdXRzdWthXCA7Civmlq3po58gPCBkYW5qaWtpXCA7CivkubPmo5IgPCBueXV1Ym91XCA7CivkuIvnlaUgPCBnZXJ5YWt1XCA7CivnkZ7lhYYgPCB6dWljaG91XCA7CivmlrDpoZQgPCBzaGluZ2FvXCA7CivkuIfnl4UgPCBtYW5ieW91XCA7Civpn7vohJogPCBpbmt5YWt1XCA7CivlnLDooaPpoZ4gPCBjaGlpcnVpXCA7Civnv7zmo58gPCB5b2t1dG91XCA7CivkuInnlLcgPCBzYW4nJ25hblwgOwor5p2Q5paZIDwgemFpcnlvdVwgOwor5amG576F6ZaAIDwgYmFyYW1vblwgOwor5a6Y5YOaIDwga2FucnlvdVwgOwor5paH6bOlIDwgYnVuY2hvdVwgOwor5Lq65b6zIDwgbmludG9rdVwgOwor5Luw5aSpIDwgZ3lvdXRlblwgOwor6LOK5a6zIDwgem9rdWdhaVwgOwor6aGM55uuIDwgZGFpbW9rdVwgOwor5Lq65b2iIDwgbmluZ3lvdVwgOwor54mb6LuKIDwgZ3l1dXNoYVwgOwor6LOK5a2QIDwgem9rdXNoaVwgOwor56eY5pu46KqyIDwgaGlzaG9rYVwgOwor5pys5qWtIDwgaG9uZ3lvdVwgOwor5Y2w55S757SZIDwgaW5nYXNoaVwgOwor6LKn5byxIDwgaGluamFrdVwgOwor54iG6aKoIDwgYmFrdWZ1dVwgOwor6ICB5py9IDwgcm91a3l1dVwgOwor5pep6YCfIDwgc2Fzc29rdVwgOwor5pen6YGTIDwga3l1dWRvdVwgOwor6ICB5pyoIDwgcm91Ym9rdVwgOwor54m56KqNIDwgdG9rdW5pblwgOwor5pys5qOaIDwgaG9uZGFuYVwgOwor5aaZ6LajIDwgbXlvdXNodVwgOwor54mp6LGhIDwgYnVzc2hvdVwgOwor5LuP5a+6IDwgYnV0c3VqaVwgOwor5LqI5oOz5bGLIDwgeW9zb3V5YVwgOwor5oWI5ZaE5a62IDwgaml6ZW5rYVwgOwor5pyr5qKiIDwgbWFzc2hvdVwgOwor6KuW6ZujIDwgcm9uJyduYW5cIDsKK+Wcn+abnOaXpSA8IGRveW91YmlcIDsKK+S4iueOiSA8IGpvdWRhbWFcIDsKK+irlumbhiA8IHJvbnNodXVcIDsKK+ael+WtpiA8IHJpbmdha3VcIDsKK+WtpuWVjyA8IGdha3Vtb25cIDsKK+ixquaXjyA8IGdvdXpva3VcIDsKK+iBt+WgtCA8IHNob2t1YmFcIDsKK+acrOagvCA8IGhvbmtha3VcIDsKK+S8muWJhyA8IGthaXNva3VcIDsKK+S4u+a1gSA8IHNodXJ5dXVcIDsKK+aXoui/sCA8IGtpanV0c3VcIDsKK+e+qeeDiCA8IGdpcmV0c3VcIDsKK+mZjembqOaelyA8IGtvdXVyaW5cIDsKK+eJqeitsCA8IGJ1dHN1Z2lcIDsKK+iyuOWutiA8IGthc2hpeWFcIDsKK+acieavkiA8IHl1dWRva3VcIDsKK+aWsOmWiyA8IHNoaW5rYWlcIDsKK+S4i+eJqSA8IGthYnV0c3VcIDsKK+S7meWlsyA8IHNlbicnbnlvXCA7CivniIbpm7cgPCBiYWt1cmFpXCA7CivkvI/li6IgPCBmdXNlemVpXCA7CivkuIrniakgPCBqb3Vtb25vXCA7CivmnJ3poqjlkYIgPCBhc2FidXJvXCA7CivmnqDlpJYgPCB3YWt1Z2FpXCA7CivmnKzmnJ0gPCBob25jaG91XCA7Civnibnoo4UgPCB0b2t1c291XCA7CivpoJjnqbogPCByeW91a3V1XCA7CivlrablkI0gPCBnYWt1bWVpXCA7Civml6fouZ8gPCBmdXJ1YXRvXCA7CivmnKvmnJ8gPCBtYXRzdWdvXCA7CivmnKjmna8gPCBtb2t1aGFpXCA7Civlho3kuIvku5ggPCBzYWlrYWZ1XCA7CivmtIvnlLvlrrYgPCB5b3VnYWthXCA7CivorKzoq5YgPCBieXV1cm9uXCA7CivmnKjmnZAgPCBtb2t1emFpXCA7Civlrablj4sgPCBnYWt1eXV1XCA7CivmnKjmnKwgPCBtb2t1aG9uXCA7CivkuIvnhrEgPCBnZW5ldHN1XCA7Civlrpropo/luqcgPCBqb3VnaXphXCA7CivmnaXlvqkgPCByYWlmdWt1XCA7CivmnKjmm5wgPCBtb2t1eW91XCA7Civmm7LmtaYgPCBreW9rdWhvXCA7CivpoZ7nhLwgPCBydWlzaG91XCA7CivpoqjmoLwgPCBmdXVrYWt1XCA7Civmnb7lsYsgPCBtYXRzdXlhXCA7CivpoK3nm64gPCB0b3Vtb2t1XCA7CivkuZ3mnIggPCBrdWdhdHN1XCA7CivkvI/lhbUgPCBmdWt1aGVpXCA7Civnibnono0gPCB0b2t1eXV1XCA7CivkubHmkoMgPCByYW5nZWtpXCA7CivnjaPmrLIgPCBqdXV5b2t1XCA7CivlpKnpoJggPCB0ZW5yeW91XCA7CivpnIDnlKjlrrYgPCBqdXlvdWthXCA7Civkv53lgaXlqaYgPCBob2tlbmZ1XCA7CivosYbmnb8gPCBtYW1laXRhXCA7Civos7zlhaUgPCBrb3VueXV1XCA7CivppIXlsYsgPCBtb2NoaXlhXCA7Civlq6HmiqsgPCBjaGFrdWhpXCA7CivmnJ3mnaUgPCBjaG91cmFpXCA7CivorKzoposgPCBieXV1a2VuXCA7CivkuIvngasgPCBzaGl0YWJpXCA7CivosYbmnKwgPCBtYW1laG9uXCA7Civpq5jnpZbmr40gPCBrb3Vzb2JvXCA7CivlppnoqIggPCBteW91a2VpXCA7Civku4rlpJUgPCBrb24nJ3l1dVwgOwor5Lmd5pifIDwga3l1dXNlaVwgOwor5ae/57W1IDwgc3VnYXRhZVwgOwor6IG35ZOhIDwgc2hva3VpblwgOwor5aSc6aOfIDwgeWFzaG9rdVwgOwor55CD5ZujIDwga3l1dWRhblwgOwor5aSW6ICz54KOIDwgZ2FpamllblwgOwor5aSa6aOfIDwgdGFzaG9rdVwgOwor6IKW5YOPIDwgc2hvdXpvdVwgOwor5p2x5bGLIDwgYXp1bWF5YVwgOwor5aSp6ZuyIDwgYW1hZ3Vtb1wgOwor5LiN5r2UIDwgZnVrZXRzdVwgOwor5LiN6KOB5Y+vIDwgZnVzYWlrYVwgOwor5a2m5YaFIDwgZ2FrdW5haVwgOwor5Lit5q2jIDwgY2h1dXNlaVwgOwor5paH6Z2pIDwgYnVua2FrdVwgOwor5p2f5bivIDwgc29rdXRhaVwgOwor6K2m5YKZ5ZOhIDwga2VpYmlpblwgOwor5pyf5pelIDwga2lqaXRzdVwgOwor6aOf5b6MIDwgc2hva3Vnb1wgOwor5LiN5ruFIDwgZnVtZXRzdVwgOwor5pyd5pa5IDwgYXNhZ2F0YVwgOwor5aSV6aKoIDwgeXV1a2F6ZVwgOwor6Z+z56+AIDwgb25zZXRzdVwgOwor5aSn6Zm4IDwgdGFpcmlrdVwgOwor6Kqk5L2c5YuVIDwgZ29zYWRvdVwgOwor6IG05Y+WIDwgY2hvdXNodVwgOwor54us55y8IDwgZG9rdWdhblwgOwor5LiL5rmvIDwgc2hpbW95dVwgOwor5aSc6ZyyIDwgeW90c3V5dVwgOwor5Lq65aOwIDwgaGl0b2dvZVwgOwor54+N5a6dIDwgY2hpbnBvdVwgOwor5aaE6KmVIDwgbW91aHlvdVwgOwor6IG35YuZIDwgc2hva3VtdVwgOwor6aOv5bGLIDwgbWVzaGl5YVwgOwor5p2/5aOBIDwgaXRha2FiZVwgOwor5Lq65aKDIDwgamlua3lvdVwgOwor5Lm+5b6zIDwga2VudG9rdVwgOwor5Luu5ZCN5pysIDwga2FuYWhvblwgOwor5pu45qOaIDwgc2hvZGFuYVwgOwor5aSV6Z2EIDwgeXV1bW95YVwgOwor5p2l5a6FIDwgcmFpdGFrdVwgOwor572u54mpIDwgb2tpbW9ub1wgOwor542E5q27IDwgZ29rdXNoaVwgOwor5pyr5oqAIDwgbWF0c3VnaVwgOwor5pyt5omAIDwgZnVkYXNob1wgOwor5aSV6ZynIDwgeXV1Z2lyaVwgOwor6aCS55m9IDwgaGFucGFrdVwgOwor5LiK5rW3IDwgc2hhbmhhaVwgOwor5pak6YePIDwga2lucnlvdVwgOwor5paw6YGTIDwgc2hpbmRvdVwgOwor5pmp56eLIDwgYmFuc2h1dVwgOwor5LiK5rWBIDwgam91cnl1dVwgOwor5LmX5o+bIDwgbm9yaWthZVwgOwor5LiJ5rWBIDwgc2Fucnl1dVwgOwor5LiK5rSbIDwgam91cmFrdVwgOwor5pyr5oiQIDwgdXJhbmFyaVwgOwor54mH6KaqIDwga2F0YW95YVwgOwor6LOg5YSfIDwgYmFpc2hvdVwgOwor57+M5pmpIDwgeW9rdWJhblwgOwor5Lmd5oudIDwga3l1dWhhaVwgOwor5Luu5YWNIDwga2FyaW1lblwgOwor5Li45p2QIDwgbWFydXphaVwgOwor5Lu75L6gIDwgbmlua3lvdVwgOwor6IKJ5L2TIDwgbmlrdXRhaVwgOwor5pyI5pelIDwgdHN1a2loaVwgOwor5pW16ZmjIDwgdGVraWppblwgOwor6aCF55uuIDwga291bW9rdVwgOwor5aSJ6Z2pIDwgaGVua2FrdVwgOwor5LiA5rWqIDwgaWNoaXJvdVwgOwor5paZ6YeRIDwgcnlvdWtpblwgOwor6ICB5byxIDwgcm91amFrdVwgOwor5aSV6ZeHIDwgeXV1eWFtaVwgOwor5pWw6Zq7IDwgc3V1c2VraVwgOwor5paw6LuKIDwgc2hpbnNoYVwgOwor5Lit5p6iIDwgY2h1dXN1dVwgOwor5LqL5bGAIDwgamlreW9rdVwgOwor5paH6Y6uIDwgYnVuY2hpblwgOwor5Luu5YCfIDwga2FzaGFrdVwgOwor5Luj5YWlIDwgZGFpbnl1dVwgOwor5LiA5rOhIDwgaGl0b2F3YVwgOwor6Zuo6aKoIDwgYW1la2F6ZVwgOwor6LGq5beeIDwgZ291c2h1dVwgOwor5Yqp55Sj5omAIDwgam9zYW5qb1wgOwor6Z2p6KOFIDwga2F3YXNvdVwgOwor5LuP5Y2wIDwgZnV0c3VpblwgOwor5Li75pWZIDwgc2h1a3lvdVwgOwor5LiA5rG6IDwgaWtrZXRzdVwgOwor5LqL5a6fIDwgamlqaXRzdVwgOwor5LqI5a+fIDwgeW9zYXRzdVwgOwor5LiA5rGXIDwgaGl0b2FzZVwgOwor6Ku46KizIDwgc2hvd2FrZVwgOwor5aem562WIDwga2Fuc2FrdVwgOwor5Luy5LuVIDwgbmFrYXNoaVwgOwor5Luy5LuLIDwgY2h1dWthaVwgOwor5Luy5Lq6IDwgbmFrb3Vkb1wgOwor5Lqs5ZywIDwga3lvdWNoaVwgOwor6LK35Y+OIDwgYmFpc2h1dVwgOwor5LiA5q+rIDwgaWNoaWdvdVwgOwor5p6g5YaFIDwgd2FrdW5haVwgOwor5LiA5q+bIDwgaWNoaW1vdVwgOwor6ICz5Z6iIDwgbWltaWFrYVwgOwor54mn6I2JIDwgYm9rdXNvdVwgOwor6aSo5YaFIDwga2FuJyduYWlcIDsKK+S4reaXrCA8IGNodXVqdW5cIDsKK+e4pumalCA8IGp1dWtha3VcIDsKK+Wkp+aZguS7oyA8IG9vamlkYWlcIDsKK+aeuOarnumFuCA8IGt1ZW5zYW5cIDsKK+mbkemngSA8IHphcHBha3VcIDsKK+mgk+eLgiA8IHRvbmt5b3VcIDsKK+iZmueEoeWDpyA8IGtvbXVzb3VcIDsKK+WksemAjyA8IHNoaXR0b3VcIDsKK+S4oeabvyA8IHJ5b3VnYWVcIDsKK+mbqumaoCA8IHNldGNoaW5cIDsKK+WssOiomOWPtyA8IGVpa2lnb3VcIDsKK+acq+W6pyA8IG1hdHN1emFcIDsKK+mjtOWdiiA8IGFtZW5ib3VcIDsKK+S/neWBpeWMuyA8IGhva2VuJydpXCA7Civku6PkvZwgPCBkYWlzYWt1XCA7CivkuLjmkI0gPCBtYXJ1em9uXCA7CivmnpflhoUgPCByaW4nJ25haVwgOwor5pyr5bqDIDwgc3VlaGlyb1wgOwor6aCt5a2X6KqeIDwgdG91amlnb1wgOwor5Luj5LyRIDwgZGFpa3l1dVwgOwor54mn6IiOIDwgYm9rdXNoYVwgOwor5LuP5YW3IDwgYnV0c3VndVwgOwor5pyr5bitIDwgbWFzc2VraVwgOwor6Ky56IG0IDwga2luY2hvdVwgOwor6Ku46KGMIDwgc2hvZ3lvdVwgOwor5pyo5aSq5YiAIDwga2lkYWNoaVwgOwor546J5bqnIDwgZ3lva3V6YVwgOwor5pys5beeIDwgaG9uc2h1dVwgOwor54yb5q+SIDwgbW91ZG9rdVwgOwor57eY6buZIDwga2FubW9rdVwgOwor5LuL5YWlIDwga2Fpbnl1dVwgOwor5pud5pu4IDwgYmFrdXNob1wgOwor6LG55aSJIDwgaHlvdWhlblwgOwor5pWR6ZujIDwga3l1dW5hblwgOwor5Lih5patIDwgcnlvdWRhblwgOwor5aWl6KGMIDwgb2t1eXVraVwgOwor5pyd5bu3IDwgY2hvdXRlaVwgOwor5paH6YCaIDwgYnVudHN1dVwgOwor6aOf5aGpIDwgc2hva3VlblwgOwor54ax6ZuyIDwgbmV0c3V1blwgOwor6JOu6I+v5bqnIDwgcmVuZ2V6YVwgOwor5pWZ6ZaAIDwga3lvdW1vblwgOwor6ZuR6Z+zIDwgemF0c3VvblwgOwor54ub54qsIDwga29tYWludVwgOwor54+N5ZWPIDwgY2hpbm1vblwgOwor5oSb5pu45a62IDwgYWlzaG9rYVwgOwor6ZuB6aaWIDwgZ2Fua3ViaVwgOwor5pqm5rOVIDwgcmVraWhvdVwgOwor5aSp6Lu4IDwgdGVuamlrdVwgOwor6Kqe6YeIIDwgZ29zaGFrdVwgOwor5Lq65YmNIDwgaGl0b21hZVwgOwor6aas5YiA6LKdIDwgbWF0ZWdhaVwgOwor54++5Lu7IDwgZ2VuJyduaW5cIDsKK+WknOmBkyA8IHlvbWljaGlcIDsKK+irluiqvyA8IHJvbmNob3VcIDsKK+S5meW3oSA8IG90c3VqdW5cIDsKK+Wkj+mHjiA8IG5hdHN1bm9cIDsKK+WklumDrSA8IGdhaWtha3VcIDsKK+ePjeWTgSA8IGNoaW5waW5cIDsKK+acneW4giA8IGFzYWljaGlcIDsKK+WlieiqrSA8IGhvdWRva3VcIDsKK+aYvOekvCA8IGNodXVyZWlcIDsKK+acq+WwviA8IG1hdHN1YmlcIDsKK+S4i+acnyA8IHNoaW1va2lcIDsKK+aVsOmHjyA8IHN1dXJ5b3VcIDsKK+eHl+mFkiA8IGthbnpha2VcIDsKK+S7leS6iyA8IHNoaWdvdG9cIDsKK+irluiplSA8IHJvbnB5b3VcIDsKK+S4iuacjSA8IHV3YWZ1a3VcIDsKK+acqOWxpSA8IHBva2t1cmlcIDsKK+acq+WvuiA8IG1hdHN1amlcIDsKK+irluiovCA8IHJvbnNob3VcIDsKK+eJqee9riA8IG1vbm9va2lcIDsKK+acjeW+kyA8IGZ1a3VqdXVcIDsKK+S4ieaciCA8IG1pdHN1a2lcIDsKK+i2o+aEj+abuCA8IHNodWlzaG9cIDsKK+acjeW9uSA8IGZ1a3Vla2lcIDsKK+S4oeaQjSA8IHJ5b3V6b25cIDsKK+eJm+iEgiA8IGd5dXVzaGlcIDsKK+eJp+e+iiA8IGJva3V5b3VcIDsKK+WkiemHjyA8IGhlbnJ5b3VcIDsKK+S4h+aciSA8IGJhbicneXV1XCA7CivmnKzlroUgPCBob250YWt1XCA7Civmm7LmioAgPCBreW9rdWdpXCA7CivpnZLom5kgPCBhb2dhZXJ1XCA7CivmnInlvrMgPCB5dXV0b2t1XCA7CivnibnntJogPCB0b2treXV1XCA7CivnjK7mnKggPCBrZW5ib2t1XCA7Civpo5vlnLAgPCB0b2JpY2hpXCA7CivnjKvmnb8gPCBuZWtvaXRhXCA7Civml6Xoi7EgPCBuaWNoaWVpXCA7Civoq4vorIEgPCBzZWlldHN1XCA7CivmmJPntYwgPCBla2lreW91XCA7Civosp3libIgPCBrYWl3YXJpXCA7CivkuI3ml6UgPCBmdWppdHN1XCA7CivmmpbmtYEgPCBkYW5yeXV1XCA7CivpnZLomasgPCBhb211c2hpXCA7CivkuInmmKUgPCBzYW5zaHVuXCA7CivkuIDmnK0gPCBpc3NhdHN1XCA7CivogJDlnKcgPCB0YWlhdHN1XCA7CivnuKvph50gPCBudWliYXJpXCA7CivpgYvmkKzosrsgPCB1bnBhbmhpXCA7CivpoILngrkgPCBjaG91dGVuXCA7CivkuIDmm7IgPCBpa2t5b2t1XCA7CivkuLnlv7UgPCB0YW4nJ25lblwgOwor6Z+z54mpIDwgaW5tb3RzdVwgOwor5pel6IieIDwgbmljaGlidVwgOwor5pen6IeYIDwga3l1dXJvdVwgOwor542j5b+DIDwganV1c2hpblwgOwor6KuL6KiXIDwgc2VpdGFrdVwgOwor6ICB5aKDIDwgcm91a3lvdVwgOwor5pSY5aS36KuWIDwgam91aXJvblwgOwor5oeQ55aR5rS+IDwga2FpZ2loYVwgOwor5LuK5LiAIDwgaW1haWNoaVwgOwor5LiH5pabIDwgYmFua29rdVwgOwor54Sh54WZ54KtIDwgbXVlbnRhblwgOwor5LiJ5pWZIDwgc2Fua3lvdVwgOwor5LiA5pmpIDwgaGl0b2JhblwgOwor5aSp6LGhIDwgdGVuc2hvdVwgOwor5pmp54afIDwgYmFuanVrdVwgOwor5aal57WQIDwgZGFrZXRzdVwgOwor5pil56eLIDwgaGFydWFraVwgOwor54mb57y2IDwgZ3l1dWthblwgOwor5a6J6Z2Z5pmCIDwgYW5zZWlqaVwgOwor5pyA5by3IDwgc2Fpa3lvdVwgOwor5aSJ6YCfIDwgaGVuc29rdVwgOwor5aSJ6YCaIDwgaGVudHN1dVwgOwor5pqX5q66IDwgYW5zYXRzdVwgOwor5pW16LuNIDwgdGVraWd1blwgOwor54m5562JIDwgdG9rdXRvdVwgOwor54mH6IWVIDwga2F0YXVkZVwgOwor5LiA5pesIDwgaWNoaWp1blwgOwor5aWz55Sf5b6SIDwgam9zZWl0b1wgOwor5Lme5am/IDwga29pbXVrb1wgOwor6JmO54eV5ouzIDwga29lbmtlblwgOwor6aC45qSOIDwga2VpdHN1aVwgOwor6LKs5Lu7IDwgc2VraW5pblwgOwor6aGU5paZIDwgZ2FucnlvdVwgOwor5q2j5bi45L2NIDwgc2Vpam91aVwgOwor5pyr5aWzIDwgbWF0c3Vqb1wgOwor5pyx5aKoIDwgc2h1Ym9rdVwgOwor5LiB5pWwIDwgY2hvdXN1dVwgOwor5peX6ImyIDwgaGF0YWlyb1wgOwor6KOc5Yqp6YeRIDwgaG9qb2tpblwgOwor5aWz6ImyIDwgam9zaG9rdVwgOwor5pen6IGeIDwga3l1dWJ1blwgOwor6Zi/5amG5pOmIDwgYWJhenVyZVwgOwor54mH6IK6IDwga2F0YWhhaVwgOwor5pyx5aGXIDwgc2h1bnVyaVwgOwor6aCY5rC0IDwgcnlvdXN1aVwgOwor6Z2i6Ii1IDwgb21va2FqaVwgOwor5Li45bivIDwgbWFydW9iaVwgOwor55C155C26KGMIDwgYml3YWtvdVwgOwor57eP6auYIDwgc291ZGFrYVwgOwor5aOw6YePIDwgc2VpcnlvdVwgOwor5Yqp55Sj5ammIDwgam9zYW5wdVwgOwor5pyn5aScIDwgb2Jvcm95b1wgOwor5aOB6Z2iIDwgaGVraW1lblwgOwor57+w5aKoIDwga2FuYm9rdVwgOwor546E5aaZIDwgZ2VubXlvdVwgOwor5L+u576F5aC0IDwgc2h1cmFiYVwgOwor57645byxIDwgcnVpamFrdVwgOwor5Lmd5aSnIDwga3l1dWRhaVwgOwor5LiJ5oyvIDwgc2Fuc2hpblwgOwor5LiN5oqcIDwgZnViYXRzdVwgOwor5aSn6KmwIDwgb29kenVtZVwgOwor6LGq5ZWGIDwgZ291c2hvdVwgOwor5omL5LiA5p2vIDwgdGVpcHBhaVwgOwor5Lit5bm0IDwgY2h1dW5lblwgOwor5LiA5o+hIDwgaWNoaWFrdVwgOwor5puy5bqHIDwga3lva3VoaVwgOwor6Kqs6KutIDwgc2V0c3V5dVwgOwor54Sh57ea5qmfIDwgbXVzZW5raVwgOwor5Lit5bi9IDwgY2h1dWJvdVwgOwor5pil55ygIDwgc2h1bm1pblwgOwor6aCs5qGBIDwgaG9vZ2V0YVwgOwor5LiH54Gv5LyaIDwgbWFuZG91ZVwgOwor54mn56ulIDwgYm9rdWRvdVwgOwor5p2x5LqsIDwgdG91a3lvdVwgOwor5pys5Zu9IDwgaG9uZ29rdVwgOwor6Kqs6KmxIDwgc2V0c3V3YVwgOwor5LqM5YiXIDwgbmlyZXRzdVwgOwor5LiA5ousIDwgaWtrYXRzdVwgOwor6Z2e6IG3IDwgaGlzaG9rdVwgOwor5pS56YuzIDwga2FpY2h1dVwgOwor54yb5pKDIDwgbW91Z2VraVwgOwor5pWP6YCfIDwgYmluc29rdVwgOwor6aCs5p2WIDwgaG9vZHp1ZVwgOwor5paw6JGXIDwgc2hpbmNob1wgOwor5rC05L2N6KiIIDwgc3VpaWtlaVwgOwor576e5oGlIDwgc2h1dWNoaVwgOwor5Lmd5ZywIDwga3l1dWNoaVwgOwor5piO56K6IDwgbWVpa2FrdVwgOwor57eP6aGNIDwgc291Z2FrdVwgOwor5LqM5YWrIDwgbmloYWNoaVwgOwor5ryi5pa55Yy7IDwga2FucG91aVwgOwor5pmv5rOBIDwga2Vpa3lvdVwgOwor5pel57WmIDwgbmlra3l1dVwgOwor576955uu5p2/IDwgaGFtZWl0YVwgOwor5YW35L2T5qGIIDwgZ3V0YWlhblwgOwor6ZuG6YeRIDwgc2h1dWtpblwgOwor6Zuo6LazIDwgYW1lYXNoaVwgOwor5pqm5pWwIDwgcmVraXN1dVwgOwor5paw6Iy2IDwgc2hpbmNoYVwgOwor6aKo5ZynIDwgZnV1YXRzdVwgOwor57eP6Z2pIDwgc291Z2F3YVwgOwor5Lit5bCKIDwgY2h1dXpvblwgOwor5piO556tIDwgbWVpcnlvdVwgOwor57i36KqsIDwgcnVzZXRzdVwgOwor6ZuG6YWNIDwgc2h1dWhhaVwgOwor5pyI5aSuIDwgZ2V0c3VvdVwgOwor5Lit5a6uIDwgY2h1dWd1dVwgOwor57a/6aO0IDwgd2F0YWFtZVwgOwor5pyI5aScIDwgdHN1a2l5b1wgOwor5pel5pys5YyWIDwgbmlob25rYVwgOwor5LiJ5b6zIDwgc2FudG9rdVwgOwor6Zmw6ayxIDwgaW4nJ3V0c3VcIDsKK+e3kemZsCA8IHJ5b2t1aW5cIDsKK+aVteimliA8IHRla2lzaGlcIDsKK+aUvumAuCA8IGhvdWl0c3VcIDsKK+eglOejqOapnyA8IGtlbm1ha2lcIDsKK+S4iuW9uSA8IHV3YXlha3VcIDsKK+Wil+mhjSA8IHpvdWdha3VcIDsKK+S4gOaBryA8IGhpdG9pa2lcIDsKK+S5s+WJpCA8IG55dXV6YWlcIDsKK+aYjueZvSA8IG1laWhha3VcIDsKK+Wkp+mbkeaKiiA8IG9vemFwcGFcIDsKK+S4i+W6pyA8IHNoaW1vemFcIDsKK+WPpOS6leaIuCA8IGZ1cnVpZG9cIDsKK+S4gOW/tSA8IGljaGluZW5cIDsKK+S4h+W8lSA8IG1hbmJpa2lcIDsKK+iDg+a9sOeYjSA8IGlrYWl5b3VcIDsKK+eJueeUoyA8IHRva3VzYW5cIDsKK+acqOWPoyA8IGtpZ3VjaGlcIDsKK+S4gOW+uSA8IGl0dGV0c3VcIDsKK+mhlOW9uSA8IGthb3lha3VcIDsKK+e/u+WIuyA8IGhvbmtva3VcIDsKK+S4ieW5tCA8IHNhbicnbmVuXCA7Civml6Xnq4sgPCBoaXRhY2hpXCA7CivmlZHosqcgPCBreXV1aGluXCA7Civmlq3ohbggPCBkYW5jaG91XCA7CivmnY/ku4EgPCBreW91bmluXCA7CivkuIflubQgPCBtYW4nJ25lblwgOwor54mp55qEIDwgYnV0dGVraVwgOwor6Zm46aKoIDwgcmlrdWZ1dVwgOwor5aSa576p5oCnIDwgdGFnaXNlaVwgOwor5LiA5byPIDwgaXNzaGlraVwgOwor54q25rOBIDwgam91a3lvdVwgOwor55SY6Zyy54WuIDwga2Fucm9uaVwgOwor5paw6IGeIDwgc2hpbmJ1blwgOwor5pys5YmHIDwgaG9uc29rdVwgOwor5Lit5aSWIDwgY2h1dWdhaVwgOwor5LmZ5aWz5bqnIDwgb3RvbWV6YVwgOwor5aW0562JIDwgeWF0c3VyYVwgOwor54us5patIDwgZG9rdWRhblwgOwor6Kmw6LKsIDwga2lzc2VraVwgOwor6ICQ5LmFIDwgdGFpa3l1dVwgOwor6Zuj6KqtIDwgbmFuZG9rdVwgOwor6aGn5a6iIDwga29reWFrdVwgOwor54us5paHIDwgZG9rdWJ1blwgOwor5L+d5a6I5rS+IDwgaG9zaHVoYVwgOwor5peX56u/IDwgaGF0YXphb1wgOwor6ZyK6JasIDwgcmVpeWFrdVwgOwor5pWZ6KiTIDwga3lvdWt1blwgOwor5LiN5bGIIDwgZnVrdXRzdVwgOwor5pyo5YiAIDwgYm9rdXRvdVwgOwor5paw576FIDwgc2hpcmFnaVwgOwor5aKX6ZW3IDwgem91Y2hvdVwgOwor5pqB5pifIDwgZ3lvdXNlaVwgOwor6Zm66ZujIDwga2VuJyduYW5cIDsKK+WPmeS6i+ipqSA8IGpvamlzaGlcIDsKK+S4iuWxpSA8IHV3YWJha2lcIDsKK+acrOWFgyA8IGhvbm1vdG9cIDsKK+Wkp+aOg+mZpCA8IG9vc291amlcIDsKK+eDj+m+jeiMtiA8IMWrcm9uY2hhXCA7CivkuK3loIUgPCBjaHV1a2VuXCA7CivlpI/ompUgPCBuYXRzdWdvXCA7CivlpbPnjovon7sgPCBqb291YXJpXCA7CivljYrmr43pn7MgPCBoYW5ib2luXCA7CivkuInlsLogPCBzYW5qYWt1XCA7CivlpKnojYkgPCB0ZW5ndXNhXCA7CivmnIjllYYgPCBnZXNzaG91XCA7CivnhKHmlL/lupwgPCBtdXNlaWZ1XCA7CivkuIvlrr8gPCBnZXNodWt1XCA7CivorbDmsbogPCBnaWtldHN1XCA7CivkubHkvZwgPCByYW5zYWt1XCA7CivkuIvlrrYgPCBzaGl0YXlhXCA7CivniZvnl5ggPCBneXV1dG91XCA7CivniannkIYgPCBidXRzdXJpXCA7Civmm7TlnLAgPCBzYXJhY2hpXCA7CivniZvnlqsgPCBneXV1ZWtpXCA7Civnvqnlkozlm6MgPCBnaXdhZGFuXCA7CivmnJ3lh6ogPCBhc2FuYWdpXCA7CivkuIDlsLogPCBpc3NoYWt1XCA7Civni6zmjqIgPCBkb2t1dGFuXCA7Civnt5Hph44gPCByeW9rdXlhXCA7CivkuIPlrp0gPCBzaGlwcG91XCA7Civml6fnm6QgPCBreXV1YmFuXCA7CivoqbPop6MgPCBzaG91a2FpXCA7CivlpZHntIQgPCBrZWl5YWt1XCA7Civpm6PooYwgPCBuYW5neW91XCA7CivmnIjlj44gPCBnZXNzaHV1XCA7Civpm5HoqbEgPCB6YXRzdXdhXCA7Civml6fnm4YgPCBreXV1Ym9uXCA7CivkuIDlrr8gPCBpc3NodWt1XCA7CivnhKHpqqggPCBidWtvdHN1XCA7Civlpb3kuovlrrYgPCBrb3V6dWthXCA7Civlo7LooYwgPCB1cmV5dWtpXCA7CivpoIHmlbAgPCBwxJNqaXN1dVwgOwor5pat57aaIDwgZGFuem9rdVwgOwor6Z+z5puyIDwgb25neW9rdVwgOwor5LiA5a2YIDwgaWNoaXpvblwgOwor5aSV6I+FIDwgeXV1c3VnZVwgOwor5pa9562WIDwgc2hpc2FrdVwgOwor5pel55m9IDwgbmlwcGFrdVwgOwor5aSn6IW4IDwgZGFpY2hvdVwgOwor6KGM54K66ICFIDwga291aXNoYVwgOwor54mi542EIDwgcm91Z29rdVwgOwor54qs5qmHIDwgaW51em9yaVwgOwor5LiO5aWqIDwgeW9kYXRzdVwgOwor5pys5Lq6IDwgaG9uJyduaW5cIDsKK+eGn+irhyA8IGp1a3VkYW5cIDsKK+apn+mWouW6qyA8IGtpa2Fua29cIDsKK+apn+mWouW6pyA8IGtpa2FuemFcIDsKK+eJoeeMqyA8IG9zdW5la29cIDsKK+aZqeaYpSA8IGJhbnNodW5cIDsKK+eLrOaIvyA8IGRva3Vib3VcIDsKK+aWsOexsyA8IHNoaW5tYWlcIDsKK+aWueetliA8IGhvdXNha3VcIDsKK+eKrOanmSA8IGludW1ha2lcIDsKK+acqOS7jyA8IGtpYnV0c3VcIDsKK+aXqeeVqiA8IGhheWFiYW5cIDsKK+acrOS4uCA8IGhvbm1hcnVcIDsKK+aZqeaWuSA8IGJhbmdhdGFcIDsKK+e5ree0rCA8IGtlbmNodXVcIDsKK+mdkuelqCA8IHNlaWh5b3VcIDsKK+eMm+WwhiA8IG1vdXNob3VcIDsKK+WQjOaEj+imiyA8IGRvdWlrZW5cIDsKK+S4iOWkqyA8IG1hc3VyYW9cIDsKK+aciOWIqSA8IGdldHN1cmlcIDsKK+aUueiosyA8IGthaXlha3VcIDsKK+Wil+mHjyA8IHpvdXJ5b3VcIDsKK+mbtuiQvSA8IHJlaXJha3VcIDsKK+S4uOWNgSA8IG1hcnVqdXVcIDsKK+mbhuioiCA8IHNodXVrZWlcIDsKK+ipseihkyA8IHdhanV0c3VcIDsKK+eJneeKrCA8IG1lc3VpbnVcIDsKK+eGn+impyA8IGp1a3VyYW5cIDsKK+eGn+imliA8IGp1a3VzaGlcIDsKK+mdouebriA8IG1lbm1va3VcIDsKK+eFjumNiyA8IGlyaW5hYmVcIDsKK+eOhOS6uiA8IGt1cm91dG9cIDsKK+aWreeusSA8IGRhbmJha29cIDsKK+itsOS6i+WggiA8IGdpamlkb3VcIDsKK+Whq+mamSA8IHRlbmdla2lcIDsKK+S4iuWhlyA8IHV3YW51cmlcIDsKK+S4gOWmgiA8IGljaGlueW9cIDsKK+S4jeWfkiA8IGZ1cmFjaGlcIDsKK+e3iui/qyA8IGtpbnBha3VcIDsKK+S4h+WigyA8IGJhbmt5b3VcIDsKK+irluetliA8IHJvbnNha3VcIDsKK+ios+i8iSA8IHlha3VzYWlcIDsKK+aYjua+hCA8IG1laWNob3VcIDsKK+S4gOWkpyA8IGljaGlkYWlcIDsKK+ipleirliA8IGh5b3Vyb25cIDsKK+iqv+e3tCA8IGNob3VyZW5cIDsKK+S4reWOnyA8IGNodXVnZW5cIDsKK+iqpOiEsSA8IGdvZGF0c3VcIDsKK+iqreiAhSA8IGRva3VzaGFcIDsKK+WjsuiWrCA8IGJhaXlha3VcIDsKK+ixhuS5syA8IHRvdW55dXVcIDsKK+S4gOWjsCA8IGhpdG9rb2VcIDsKK+WkqeezuOeTnCA8IGhlY2hpbWFcIDsKK+S/neWuieaelyA8IGhvYW5yaW5cIDsKK+iFkOiRieWcnyA8IGZ1eW91ZG9cIDsKK+S4i+WcsCA8IHNoaXRhamlcIDsKK+Wil+mAsiA8IHpvdXNoaW5cIDsKK+mdoueWlCA8IG1lbmNob3VcIDsKK+mgguaItCA8IGNob3VkYWlcIDsKK+irlueptiA8IHJvbmt5dXVcIDsKK+aWsOeojiA8IHNoaW56ZWlcIDsKK+a1t+ixmuW6pyA8IGlydWthemFcIDsKK+S4i+WbsyA8IHNoaXRhenVcIDsKK+iHquihm+maiiA8IGppZWl0YWlcIDsKK+aUueihjCA8IGthaWd5b3VcIDsKK+iqnuiEiCA8IGdvbXlha3VcIDsKK+e5iue2ree0oCA8IHNlbicnaXNvXCA7CivkuInlm70gPCBzYW5nb2t1XCA7CivkuKHlkI0gPCByeW91bWVpXCA7Civpmo/ouqsgPCB6dWlzaGluXCA7CivnhKHpm5EgPCBtdXphdHN1XCA7Civnp7vooYzmgKcgPCBpa291c2VpXCA7CivkuK3liY0gPCBjaHV1emVuXCA7CivopqrpuJ4gPCBzaGlucmFuXCA7Civpm7vohLMgPCBkZW4nJ25vdVwgOwor5rmv5rmv5amGIDwgeXV0YW5wb1wgOwor5Lit5YiGIDwgY2h1dWJ1blwgOwor57W26aCCIDwgemV0Y2hvdVwgOwor6aCR5by3IDwgZ2Fua3lvdVwgOwor57mL57ibIDwga2VpYmFrdVwgOwor5aSq57O4IDwgZnV0b2l0b1wgOwor5Lqk5bC+5pyfIDwga291YmlraVwgOwor5aeL5qWtIDwgc2hpZ3lvdVwgOwor5LiA5ZujIDwgaWNoaWRhblwgOwor5pep54afIDwgc291anVrdVwgOwor6KqH6ImyIDwga29zaG9rdVwgOwor6KiX6YCBIDwgdGFrdXNvdVwgOwor6ZuM6JiCIDwgbWVzaGliZVwgOwor6aCG5b+cIDwganVuJydub3VcIDsKK+mZuOmAgSA8IHJpa3Vzb3VcIDsKK+aciOS6iyA8IGdldHN1amlcIDsKK+imqumzpSA8IG95YWRvcmlcIDsKK+eJueautSA8IHRva3VkYW5cIDsKK+S4oeWJjSA8IHJ5b3VtYWVcIDsKK+Wkp+eykiA8IG9vdHN1YnVcIDsKK+iok+i/qiA8IGt1bnRla2lcIDsKK+mZtuejgeWZqCA8IHRvdWppa2lcIDsKK+eJueauiiA8IHRva3VzaHVcIDsKK+Wig+mBhyA8IGt5b3VndXVcIDsKK+ippuiWrCA8IHNoaXlha3VcIDsKK+mHjemmrOWgtCA8IG9tb2JhYmFcIDsKK+ipkOihkyA8IHNhanV0c3VcIDsKK+S4oeWIhiA8IHJ5b3VidW5cIDsKK+ats+aZguiomCA8IHNhaWppa2lcIDsKK+mYv+WkmuemjyA8IG90YWZ1a3VcIDsKK+S4jeWQiSA8IGZ1a2l0c3VcIDsKK+S4iuWRiiA8IGpvdWtva3VcIDsKK+W+oeevgOS7iyA8IG9zZWtrYWlcIDsKK+mZuOi7jSA8IHJpa3VndW5cIDsKK+S6nOm6u+S7geayuSA8IGFtYW5peXVcIDsKK+aWsOebpCA8IHNoaW5iYW5cIDsKK+mfu+W+iyA8IGlucml0c3VcIDsKK+aatOWcpyA8IGJvdWF0c3VcIDsKK+ioseirviA8IGt5b2Rha3VcIDsKK+eIhueglSA8IGJha3VzYWlcIDsKK+S4oeWDjyA8IHJ5b3V6b3VcIDsKK+eLguaFiyA8IGt5b3V0YWlcIDsKK+Wpv+WFpSA8IG11a29pcmlcIDsKK+ios+ipqSA8IHlha3VzaGlcIDsKK+mbouiEsSA8IHJpZGF0c3VcIDsKK+aYh+autSA8IHNob3VkYW5cIDsKK+eJp+awkSA8IGJva3VtaW5cIDsKK+WkqeeqkyA8IHRlbm1hZG9cIDsKK+S4gOWRvSA8IGljaGltZWlcIDsKK+aVmeiCsiA8IGt5b3Vpa3VcIDsKK+S4gOWRsyA8IGhpdG9hamlcIDsKK+WkseemgSA8IHNoaWtraW5cIDsKK+e3j+iplSA8IHNvdWh5b3VcIDsKK+WmmeazlSA8IG15b3Vob3VcIDsKK+imqumqqCA8IG95YWJvbmVcIDsKK+abuOS4rSA8IHNob2NodXVcIDsKK+S4h+WNmiA8IGJhbnBha3VcIDsKK+eVquWwj+WxiyA8IGJhbmdveWFcIDsKK+mfs+W+iyA8IG9ucml0c3VcIDsKK+S4i+WKoyA8IGdlcmV0c3VcIDsKK+aEm+eKrOWutiA8IGFpa2Vua2FcIDsKK+S4ieWKqSA8IHNhbnN1a2VcIDsKK+S4oeS+vyA8IHJ5b3ViZW5cIDsKK+iAvee+jua0viA8IHRhbmJpaGFcIDsKK+aYpeacrCA8IHNodW5wb25cIDsKK+S4g+WNgSA8IG5hbmFqdXVcIDsKK+imv+mdoiA8IHRla2ltZW5cIDsKK+S4h+WKmyA8IG1hbnJpa2lcIDsKK+S4geWNiiA8IGNob3VoYW5cIDsKK+Wkp+emjyA8IGRhaWZ1a3VcIDsKK+WkqeelkCA8IHRlbicneXV1XCA7CivmmKjmmakgPCBzYWt1YmFuXCA7Civkv53ogrLmiYAgPCBob2lrdWpvXCA7CivmmanlubQgPCBiYW4nJ25lblwgOwor54Wn6KanIDwgc2hvdXJhblwgOwor57eK6KaBIDwga2luJyd5b3VcIDsKK+WmqOalrSA8IGJvdWd5b3VcIDsKK+S4oeS6uiA8IHJ5b3VuaW5cIDsKK+ims+mfsyA8IGthbicnbm9uXCA7CivmmYLmipggPCB0b2tpb3JpXCA7CivpgYrpm6Lln7ogPCB5dXVyaWtpXCA7CivmkrDpjLIgPCBzZW5yb2t1XCA7CivkupLliqnkvJogPCBnb2pva2FpXCA7CivmlLnoia8gPCBrYWlyeW91XCA7Civmlr3niakgPCBzZW1vdHN1XCA7Civlpa7mv4AgPCBmdW5nZWtpXCA7CivkuKHkuIkgPCByeW91c2FuXCA7Civpm7vnrpcgPCBkZW5zb3JvXCA7CivntZDpnLIgPCBrZXRzdXJvXCA7CivmlZnnt7QgPCBreW91cmVuXCA7CivkuIrlgbQgPCB1d2FnYXdhXCA7Civlp6bmgqogPCBrYW4nJ2FrdVwgOwor6KOc5Yqp57eaIDwgaG9qb3NlblwgOwor6KeS6YyQIDwga2FrdXN1aVwgOwor57WQ6ZuGIDwga2Vzc2h1dVwgOwor5LiL5YCkIDwgc2hpdGFuZVwgOwor5aWz5rmvIDwgb24nJ25heXVcIDsKK+S4gOWFgyA8IGljaGlnZW5cIDsKK+e+heWIlyA8IHJhcmV0c3VcIDsKK+aaluWbvSA8IGRhbmtva3VcIDsKK+S6i+WLmeaJgCA8IGppbXVzaG9cIDsKK+mZs+isnSA8IGNoaW5zaGFcIDsKK+S4gOWEhCA8IGljaGlva3VcIDsKK+iok+iqrSA8IGt1bmRva3VcIDsKK+eIm+eGnyA8IHJhbmp1a3VcIDsKK+aYjuacnSA8IG1pbmNob3VcIDsKK+iol+iogCA8IHRha3VnZW5cIDsKK+mgmOWfnyA8IHJ5b3Vpa2lcIDsKK+iogOiyrCA8IGdlbnNla2lcIDsKK+S/neitt+mHkSA8IGhvZ29raW5cIDsKK+WkqueZvSA8IHRhaWhha3VcIDsKK+eJueaXqCA8IHRva3VzaGlcIDsKK+WkqeeahyA8IHRlbicnbm91XCA7CivmlbDnp5IgPCBzdXVieW91XCA7CivmlaPnrZYgPCBzYW5zYWt1XCA7CivkuIfkvZwgPCBtYW5zYWt1XCA7CivmmI7mmbAgPCBtZWlzZWtpXCA7CivmmanlraYgPCBiYW5nYWt1XCA7CivmmI7mmakgPCBteW91YmFuXCA7CivkuIDlgI0gPCBpY2hpYmFpXCA7CivntYLpm7sgPCBzaHV1ZGVuXCA7Civml6XmrKcgPCBuaWNoaW91XCA7CivmmI7mmJ8gPCBteW91am91XCA7CivkuInkurogPCBzYW4nJ25pblwgOwor57im56ybIDwgdGF0ZWJ1ZVwgOwor6ZuG576kIDwgc2h1dWd1blwgOwor5LiH5Lq6IDwgbWFuJyduaW5cIDsKK+Wkp+eXhSA8IHRhaWJ5b3VcIDsKK+iPk+WtkOWZqCA8IGthc2hpa2lcIDsKK+mgreWPliA8IHRvdWRvcmlcIDsKK+mbqOesoCA8IGFtYWdhc2FcIDsKK+e4pueptCA8IHRhdGVhbmFcIDsKK+S4gOS7uyA8IGljaGluaW5cIDsKK+Wkp+eUtyA8IG9vb3Rva29cIDsKK+e9sOWJhyA8IGJhc3Nva3VcIDsKK+mch+ebqiA8IHNoaW50b3VcIDsKK+mciueahCA8IHJlaXRla2lcIDsKK+aEm+Wmu+WutiA8IGFpc2Fpa2FcIDsKK+WkluebuCA8IGdhaXNob3VcIDsKK+WkmueZuiA8IHRhaGF0c3VcIDsKK+mbqOepuiA8IGFtYXpvcmFcIDsKK+eEtuirviA8IHplbmRha3VcIDsKK+iprue0oiA8IHNlbnNha3VcIDsKK+aVo+elqCA8IHNhbnB5b3VcIDsKK+mkiueItuavjSA8IHlvdWZ1Ym9cIDsKK+e3tOe/kiA8IHJlbnNodXVcIDsKK+ipleiAhSA8IGh5b3VzaGFcIDsKK+eGn+e3tCA8IGp1a3VyZW5cIDsKK+WklueahCA8IGdhaXRla2lcIDsKK+manOazpeeDj+iziiA8IGFvcmlpa2FcIDsKK+eLrOWWhCA8IGRva3V6ZW5cIDsKK+Wkj+edgCA8IG5hdHN1Z2lcIDsKK+WkqeeQgyA8IHRlbmt5dXVcIDsKK+i1t+mbu+apnyA8IGtpZGVua2lcIDsKK+Wmu+aIuCA8IHRzdW1hZG9cIDsKK+S6jOatu+W+jCA8IG5pc2hpZ29cIDsKK+aWkeeMqyA8IGhhbm15b3VcIDsKK+aZi+WxsSA8IHNoaW56YW5cIDsKK+aXi+avmyA8IHRzdW11amlcIDsKK+WgsemFrCA8IGhvdXNodXVcIDsKK+iRieeJoeS4uSA8IGhhYm90YW5cIDsKK+W3sueEtuW9oiA8IGl6ZW5rZWlcIDsKK+eDiOmchyA8IHJlc3NoaW5cIDsKK+aYpeaDhSA8IHNodW5qb3VcIDsKK+e3rOe+iiA8IG1lbicneW91XCA7CivnuJ/npLwgPCBqb2t1cmVpXCA7CivlpKfnjYQgPCB0YWlnb2t1XCA7Civni4LlpZQgPCBreW91aG9uXCA7CivloqjoibIgPCBzdW1paXJvXCA7Civnt4/oirEgPCBzb3ViYW5hXCA7CivmlabnnaYgPCB0b25ib2t1XCA7CivlpKfopo/mqKEgPCBkYWlraWJvXCA7Civni6zlkJ8gPCBkb2t1Z2luXCA7CivlhbfkvZPljJYgPCBndXRhaWthXCA7CivopobpnaIgPCBmdWt1bWVuXCA7CivnuZTniakgPCBvcmltb25vXCA7Civkv53lronlrpggPCBob2Fua2FuXCA7Civml6fmnaUgPCBreXV1cmFpXCA7Civml6fmnZEgPCBreXV1c29uXCA7Civph47njaPmtL4gPCB5YWp1dWhhXCA7Civni6zljaAgPCBkb2t1c2VuXCA7Civpm7vkvY3lt64gPCBkZW4nJ2lzYVwgOwor5pel5pydIDwgbml0Y2hvdVwgOwor5aaC5pyIIDwgbmlnYXRzdVwgOwor5aSx54K5IDwgc2hpdHRlblwgOwor6ZuR56mAIDwgemFra29rdVwgOwor6KWf6auqIDwgZXJpZ2FtaVwgOwor6Kaq6YeMIDwgb3lhemF0b1wgOwor54Wn6IeoIDwgc2hvdXJpblwgOwor5pep5pilIDwgc291c2h1blwgOwor5pio5bm0IDwgc2FrdW5lblwgOwor5aSp54S2IDwgdGVuJyduZW5cIDsKK+WlpeanmCA8IG9rdXNhbWFcIDsKK+aXpeaZgiA8IG5pY2hpamlcIDsKK+e3keiCpSA8IHJ5b2t1aGlcIDsKK+mdnuWvvuW/nCA8IGhpdGFpb3VcIDsKK+iTlum6u+WtkCA8IGhpbWFzaGlcIDsKK+ijuOS9k+eUuyA8IHJhdGFpZ2FcIDsKK+mgmOWGhSA8IHJ5b3VuYWlcIDsKK+S6i+WLmeWumCA8IGppbXVrYW5cIDsKK+mbu+eQgyA8IGRlbmt5dXVcIDsKK+eJh+aWuSA8IGthdGFob3VcIDsKK+ios+iAhSA8IHlha3VzaGFcIDsKK+eJueW+hSA8IHRva3V0YWlcIDsKK+i1t+iotOeKtiA8IGtpc29qb3VcIDsKK+iln+mmliA8IGVyaWt1YmlcIDsKK+WlquagvCA8IGRha2tha3VcIDsKK+mHjuaarueUqCA8IHlhYm95b3VcIDsKK+aVteeKtiA8IHRla2lqb3VcIDsKK+aSg+mAgCA8IGdla2l0YWlcIDsKK+eEoeeBr+eBqyA8IG11dG91a2FcIDsKK+mbo+eZliA8IG5hbmt1c2VcIDsKK+aYpeW1kCA8IHNodW5yYW5cIDsKK+ilsumbtyA8IHNodXVyYWlcIDsKK+WmmeaJgCA8IG15b3VzaG9cIDsKK+aYjuW+syA8IG1laXRva3VcIDsKK+mbo+eXhyA8IG5hbnNob3VcIDsKK+mbo+eXhSA8IG5hbmJ5b3VcIDsKK+eEoeihgCA8IG11a2V0c3VcIDsKK+eEoeiomOWQjSA8IG11a2ltZWlcIDsKK+aYlOW5tCA8IHNla2luZW5cIDsKK+eCkumjryA8IGNoYWFoYW5cIDsKK+iqmOeIhiA8IHl1dWJha3VcIDsKK+WklueCuiA8IGdhaXRhbWVcIDsKK+mch+eBvSA8IHNoaW5zYWlcIDsKK+aYpeWvkiA8IHNodW5rYW5cIDsKK+eIhuatuyA8IGJha3VzaGlcIDsKK+mDveitsOmBuCA8IHRvZ2lzZW5cIDsKK+e2suiGnCA8IG1vdW1ha3VcIDsKK+eGn+efpSA8IGp1a3VjaGlcIDsKK+aYjuW5tCA8IG15b3VuZW5cIDsKK+Wkqea4myA8IHRlbmJpa2lcIDsKK+S/neiCsuWckiA8IGhvaWt1ZW5cIDsKK+WnieWpvyA8IGFuZW11a29cIDsKK+e1gui7iiA8IHNodXVzaGFcIDsKK+eyvum6piA8IHNlaWJha3VcIDsKK+eGn+edoSA8IGp1a3VzdWlcIDsKK+e4q+eJqSA8IG51aW1vbm9cIDsKK+e3iue4myA8IGtpbmJha3VcIDsKK+eGn+ecoCA8IGp1a3VtaW5cIDsKK+S/neiCsuWZqCA8IGhvaWt1a2lcIDsKK+WiqOezuCA8IHN1bWlpdG9cIDsKK+mZsOiGsyA8IGthZ2V6ZW5cIDsKK+ipqeeahCA8IHNoaXRla2lcIDsKK+aYn+WtpiA8IHNlaWdha3VcIDsKK+aEm+WlveWutiA8IGFpa291a2FcIDsKK+mdkuaYpSA8IHNlaXNodW5cIDsKK+aah+S6uiA8IGhpbWFqaW5cIDsKK+mfs+WKmyA8IG9ucnlva3VcIDsKK+eCuumKgCA8IHRhbWVnaW5cIDsKK+iok+iCsiA8IGt1bicnaWt1XCA7CivlpaXmlrkgPCBva3VnYXRhXCA7Civni6nkurogPCBrYXJ5dWRvXCA7CivntK/pgLIgPCBydWlzaGluXCA7CivnhLzoiosgPCB5YWtpaW1vXCA7Civlp5Tku7vnirYgPCBpbmluam91XCA7Civpmaroh6MgPCBiYWlzaGluXCA7CivniafluKsgPCBib2t1c2hpXCA7CivlvqHmiqvpnLLnm64gPCBvaGlyb21lXCA7CivmlrDmoYggPCBzaGluJydhblwgOwor6ZqO57SaIDwga2Fpa3l1dVwgOwor54m55a6aIDwgdG9rdXRlaVwgOwor55So5Zmo55S7IDwgeW91a2lnYVwgOwor5pio5aSVIDwgc2FrdXl1dVwgOwor6Zq755y8IDwgc2VraWdhblwgOwor5L+d6aSK5omAIDwgaG95b3Vqb1wgOwor5a625bqt56eRIDwga2F0ZWlrYVwgOwor5aKX57WmIDwgem91a3l1dVwgOwor5LiN5ZCN6KqJIDwgZnVtZWl5b1wgOwor5pen5oKqIDwga3l1dWFrdVwgOwor5pWw5ru0IDwgc3V1dGVraVwgOwor57a+57W5IDwgYXlhZ2ludVwgOwor57Si6YGTIDwgc2FrdWRvdVwgOwor57WQ6KqeIDwga2V0c3Vnb1wgOwor5aWz5omLIDwgb24nJ25hZGVcIDsKK+eGseeLgiA8IG5la2t5b3VcIDsKK+Wls+aIvyA8IG55b3Vib3VcIDsKK+Wklua1tyA8IHNvdG91bWlcIDsKK+Wkp+assiA8IHRhaXlva3VcIDsKK+e1kOiolyA8IGtldHRha3VcIDsKK+WkluaziiA8IGdhaWhha3VcIDsKK+imhui8qiA8IGZ1a3VyaW5cIDsKK+aVtOa1gSA8IHNlaXJ5dXVcIDsKK+mgguS4iiA8IGNob3Vqb3VcIDsKK+S6lOi8quaXlyA8IGdvcmlua2lcIDsKK+eGseeHlyA8IGF0c3VrYW5cIDsKK+aXpeW9kyA8IGhpYXRhcmlcIDsKK+ezoOmbqCA8IG51a2FhbWVcIDsKK+aXp+W8iiA8IGt5dXVoZWlcIDsKK+eJueWkpyA8IHRva3VkYWlcIDsKK+imquiosSA8IG95YW1vdG9cIDsKK+aYpeWdiiA8IGhhcnVib3VcIDsKK+S9nOalreihoyA8IHNhZ3lvdWlcIDsKK+ipq+eKtiA8IHdhYmlqb3VcIDsKK+mbu+a1gSA8IGRlbnJ5dXVcIDsKK+acqOaIuOmKrSA8IGtpZG9zZW5cIDsKK+eJueWjsiA8IHRva3ViYWlcIDsKK+iAs+S4i+iFuiA8IGppa2FzZW5cIDsKK+eEoeiJsiA8IG11c2hva3VcIDsKK+irluaVtSA8IHJvbnRla2lcIDsKK+WutuW6reedgCA8IGthdGVpZ2lcIDsKK+mbgOeQgyA8IGphbmt5dXVcIDsKK+aWh+anmCA8IG1vbicneW91XCA7CivlpKfmpa0gPCB0YWlneW91XCA7Civml4XmiYAgPCB0YWJpc2hvXCA7Civns7jpi7ggPCBpdG9ub2tvXCA7CivlpJbpmbDpg6ggPCBnYWlpbmJ1XCA7CivnibnloLEgPCB0b2t1aG91XCA7Civmlofmpb0gPCBidW5yYWt1XCA7CivnhKHohbAgPCBtdWdvc2hpXCA7CivpnaLlvbEgPCBvbW9rYWdlXCA7CivnhZnnqoEgPCBlbnRvdHN1XCA7CivlopPnqbQgPCBib2tldHN1XCA7Civlkozoj5PlrZAgPCB3YWdhc2hpXCA7Civoqr/mm7ggPCBjaG91c2hvXCA7CivpnanluK8gPCBrYXdhb2JpXCA7Civml4XmhIEgPCByeW9zaHV1XCA7Civoh6rlnKjnlLsgPCBqaXphaWdhXCA7Civop6PohLEgPCBnZWRhdHN1XCA7CivmmLzliY0gPCBoaXJ1bWFlXCA7Civntprnt6ggPCB6b2t1aGVuXCA7CivogJXpgYvmqZ8gPCBrb3V1bmtpXCA7CivnhrHmvJQgPCBuZXRzdWVuXCA7Civpm6rmtJ4gPCBib25ib3JpXCA7Civnt4/nnaMgPCBzb3V0b2t1XCA7CivkuIDlm57lv4wgPCBpa2thaWtpXCA7CivplpPpmpkgPCBrYW5nZWtpXCA7CivkuI3lj6/op6MgPCBmdWtha2FpXCA7CivpnbTlsYsgPCBrdXRzdXlhXCA7Civmlo7mnI0gPCBzYWlmdWt1XCA7Civml6flsYUgPCBreXV1a3lvXCA7CivkuI3lj6/oppYgPCBmdWthc2hpXCA7CivlpKfmnKggPCB0YWlib2t1XCA7Civln47pg60gPCBqb3VrYWt1XCA7CivpmbjnqLIgPCByaWt1dG91XCA7Civnt4/nkIblupwgPCBzb3VyaWZ1XCA7CivlpLHmlawgPCBzaGlra2VpXCA7CivplovpmbMgPCBrYWljaGluXCA7CivlpLHmlZcgPCBzaGlwcGFpXCA7CivlpYfmipwgPCBraWJhdHN1XCA7CivkuozliIbmnKggPCBuaWJ1bmdpXCA7CivlpLHmlL8gPCBzaGlzc2VpXCA7CivoqI7nqbYgPCB0b3VreXV1XCA7CivpnIrmn6kgPCByZWlreXV1XCA7Civoqq3mnKwgPCBkb2t1aG9uXCA7CivpmLLoh60gPCBib3VzaHV1XCA7Civoqq3mm7ggPCBkb2t1c2hvXCA7Civniq/kurogPCBoYW4nJ25pblwgOwor5aWl5bqtIDwgb2t1bml3YVwgOwor5aaK5aigIDwgbmluc2hpblwgOwor5aWl5bqVIDwgb2t1em9rb1wgOwor54mn5ZywIDwgYm9rdWNoaVwgOwor5bqD6L6e6IuRIDwga291amllblwgOwor57eo54mpIDwgYW1pbW9ub1wgOwor5aSp5pW1IDwgdGVudGVraVwgOwor6ZyK5pyoIDwgcmVpYm9rdVwgOwor5aSc5puyIDwgeWFreW9rdVwgOwor57eP55S7IDwgc291a2FrdVwgOwor5aSa5pWw5rS+IDwgdGFzdXVoYVwgOwor6Zmj56ygIDwgamluZ2FzYVwgOwor6ZqG55ubIDwgcnl1dXNlaVwgOwor6KmV54K5IDwgaHlvdXRlblwgOwor5L+d6K236ICFIDwgaG9nb3NoYVwgOwor5aSc6ZaT6YOoIDwgeWFrYW5idVwgOwor5paH5pWZIDwgYnVua3lvdVwgOwor55WZ5a6I6Zu7IDwgcnVzdWRlblwgOwor5aSJ5qKDIDwgaGVudGVrb1wgOwor57Gz6bqmIDwgYmVpYmFrdVwgOwor57Sw6J66IDwga2lzaGFnb1wgOwor54ax5rCXIDwgbmV0c3VrZVwgOwor5pio5YasIDwgc2FrdXRvdVwgOwor5pil5YiGIDwgc2h1bmJ1blwgOwor6ZW36ZuoIDwgbmFnYWFtZVwgOwor5pen5aWXIDwga3l1dXRvdVwgOwor6Kqe5pyrIDwgZ29tYXRzdVwgOwor57On6YGTIDwgcnlvdWRvdVwgOwor5o6D6Zmk5qmfIDwgc291amlraVwgOwor6KWf6LazIDwgZXJpYXNoaVwgOwor6Ky55ZGKIDwga2lua29rdVwgOwor5LqL5YuZ5LyaIDwgamltdWthaVwgOwor5pat5b+1IDwgZGFuJyduZW5cIDsKK+aXpeWknCA8IG5pY2hpeWFcIDsKK+aXpeWklSA8IG5pc3Nla2lcIDsKK+aYpeWFiSA8IHNodW5rb3VcIDsKK+aUvua1gSA8IGhvdXJ5dXVcIDsKK+mch+aXpiA8IHNoaW50YW5cIDsKK+WlpeWxsSA8IG9rdXlhbWFcIDsKK+mdmeWvgiA8IHNlaWpha3VcIDsKK+S6i+WJjeW+jCA8IGppemVuZ29cIDsKK+iPqeaPkOaouSA8IGJvZGFpanVcIDsKK+eBq+mJoiA8IGhpYmFjaGlcIDsKK+e1tue4gSA8IHpldHN1ZW5cIDsKK+WkleaWuSA8IHl1dWdhdGFcIDsKK+eyl+mjnyA8IHNvc2hva3VcIDsKK+iyneeLrOalvSA8IGJhaWdvbWFcIDsKK+Wig+ebriA8IHNha2FpbWVcIDsKK+eEoemYsuWCmSA8IG11Ym91YmlcIDsKK+S4jeaAneitsCA8IGZ1c2hpZ2lcIDsKK+aXheWuoiA8IHJ5b2tha3VcIDsKK+S4jeepj+W9kyA8IGZ1b250b3VcIDsKK+aYreS7oyA8IHNob3VkYWlcIDsKK+eEoeethiA8IG11aGl0c3VcIDsKK+WkseaFiyA8IHNoaXR0YWlcIDsKK+e1kOiFuCA8IGtldGNob3VcIDsKK+eJueWFuCA8IHRva3V0ZW5cIDsKK+WPr+WhkeadkCA8IGthc296YWlcIDsKK+WkseaEjyA8IHNoaXRzdWlcIDsKK+eIhuW8viA8IGJha3VkYW5cIDsKK+eJueWFjSA8IHRva3VtZW5cIDsKK+aUr+a1gSA8IHNoaXJ5dXVcIDsKK+aPmumZuCA8IHlvdXJpa3VcIDsKK+imquiIuSA8IG95YWJ1bmVcIDsKK+mZuOeUoyA8IHJpa3VzYW5cIDsKK+mZuOeUnyA8IHJpa3VzZWlcIDsKK+mdouWjgSA8IG1lbnBla2lcIDsKK+aOoumzpSA8IHRhbmNob3VcIDsKK+e0hOiogCA8IHlha3VnZW5cIDsKK+ais+e2v+apnyA8IHNvbWVua2lcIDsKK+eyl+mbkSA8IHNvemF0c3VcIDsKK+eEoeaJi+mghiA8IG11dGVqdW5cIDsKK+mbu+aSgyA8IGRlbmdla2lcIDsKK+aVmeabuCA8IGt5b3VzaG9cIDsKK+mWk+i/kSA8IG1hZGppa2FcIDsKK+aWsOWxhSA8IHNoaW5reW9cIDsKK+e0uuiJsiA8IGtvbicnaXJvXCA7Civntpnnm64gPCB0c3VnaW1lXCA7Civpm7fmkoMgPCByYWlnZWtpXCA7CivlsL7nirboirEgPCBiaWpvdWthXCA7Civlob7nlJ8gPCBqdWt1c2VpXCA7Civoqr/lvKYgPCBjaG91Z2VuXCA7Civnh4PmlpkgPCBuZW5yeW91XCA7CivpmqDmu4UgPCBpbm1ldHN1XCA7CivlpKfmga8gPCB0YWlzb2t1XCA7Civpm4bmqKkgPCBzaHV1a2VuXCA7Civkvr/liKnlsYsgPCBiZW5yaXlhXCA7CivplovpgJogPCBrYWl0c3V1XCA7CivpmaPnl5sgPCBqaW50c3V1XCA7CivlpJbmiJogPCBnYWlzZWtpXCA7CivntrLnjJ8gPCBhbWlyeW91XCA7CivmlbXmiYsgPCB0ZWtpc2h1XCA7CivlpKflvrMgPCBkYWl0b2t1XCA7Civpm6Lml6UgPCByaW5pY2hpXCA7Civnsr7pgLIgPCBzaG91amluXCA7Civkuojnn6XlpKIgPCB5b2NoaW11XCA7Civnsr7pgJogPCBzZWl0c3V1XCA7CivnhYnnjYQgPCByZW5nb2t1XCA7CivlvqHnpZ7nsaQgPCBvbWlrdWppXCA7Civoq7jlm70gPCBzaG9rb2t1XCA7Civml6flkI0gPCBreXV1bWVpXCA7CivmmKDlhpnmqZ8gPCBlaXNoYWtpXCA7Civpm6PmlbUgPCBuYW50ZWtpXCA7Civkv53orbfnqI4gPCBob2dvemVpXCA7CivngJ3pnZIgPCByZWtpc2VpXCA7Civlj5nkuovmlocgPCBqb2ppYnVuXCA7Civml6flj4sgPCBreXV1eXV1XCA7CivntZDnuIEgPCBrZWNoaWVuXCA7Civoop7pvo0gPCBrb25yeW91XCA7CivmlrDlqZogPCBzaGlua29uXCA7Civoi7HkvJroqbEgPCBlaWthaXdhXCA7CivmloflvLEgPCBidW5qYWt1XCA7Civml6Xlj44gPCBuaXNzaHV1XCA7CivkuI3lj6/og70gPCBmdWthbm91XCA7Civpm5HmnKggPCB6b3Vib2t1XCA7CivoqqzlvpcgPCBzZXR0b2t1XCA7CivmmKDnlLvppKggPCBlaWdha2FuXCA7CivpnZblm70gPCBzZWlrb2t1XCA7CivlpKnluZUgPCB0ZW5tYWt1XCA7CivplrLopqcgPCBldHN1cmFuXCA7Civpnanlkb0gPCBrYWt1bWVpXCA7CivnuZTluIMgPCBzaG9rdWZ1XCA7Civml6XljbAgPCBuaWNoaWluXCA7CivnuYrlvLEgPCBzZW5qYWt1XCA7CivntLDohZUgPCBob3NvdWRlXCA7Civpm7bmiKYgPCB6ZXJvc2VuXCA7CivopprogIUgPCBrYWt1c2hhXCA7CivntYTnuZQgPCBzb3NoaWtpXCA7CivorKzkvJ0gPCBieXV1ZGVuXCA7Civoqpjmg5EgPCB5dXV3YWt1XCA7CivniafkurogPCBib2t1amluXCA7CivplbfovrogPCBjaG91aGVuXCA7CivpnIrlu58gPCByZWlieW91XCA7Civoqa7mlrkgPCBzZW5rYXRhXCA7CivniYfliY0gPCBrYXRhbWFlXCA7Civpoqjpm7LlhZAgPCBmdXV1bmppXCA7CivlnoLov7kgPCBzdWlqYWt1XCA7CivloqjmsYEgPCBib2t1anV1XCA7CivmlLnmmqYgPCBrYWlyZWtpXCA7CivpmKrnpZ4gPCBoYW5zaGluXCA7CivmlbXlvL4gPCB0ZWtpZGFuXCA7CivploDot6EgPCBtb256ZWtpXCA7Civnspfph5EgPCBhcmFnYW5lXCA7CivopqrnsbMgPCBzaGluYmVpXCA7CivmlY/mjbcgPCBiaW5zaG91XCA7CivniYjlhYMgPCBoYW5tb3RvXCA7CivmpZXlhoblvaIgPCBkYWVua2VpXCA7Civopovnv5IgPCBtaW5hcmFpXCA7CivmlrDlnLAgPCBzaGluY2hpXCA7CivmlL7mk7IgPCBob3V0ZWtpXCA7CivmvJTlpY/lrrYgPCBlbnNvdWthXCA7CivmlbfluIMgPCBzaGlraWZ1XCA7CivniZvkuLwgPCBneXV1ZG9uXCA7Civop5Lnm4YgPCBrYWt1Ym9uXCA7CivoqZTmm7ggPCBzaG91c2hvXCA7CivlpKflraYgPCBkYWlnYWt1XCA7Civlj6/loZHmgKcgPCBrYXNvc2VpXCA7Civlo4Hmnb8gPCBrYWJlaXRhXCA7CivooqvpmaTmlbAgPCBoaWpvc3V1XCA7CivmloflraYgPCBidW5nYWt1XCA7CivmlLvmkoMgPCBrb3VnZWtpXCA7CivkuozmrKHlhYMgPCBuaWppZ2VuXCA7Civnt5HmqLkgPCByeW9rdWp1XCA7CivniKrljbAgPCB0c3VtZWluXCA7CivmiYvmlofluqsgPCB0ZWJ1bmtvXCA7Civml6fkvosgPCBreXV1cmVpXCA7Civns57onb8gPCBrdXNvYmFlXCA7CivkuIDnrofmiYAgPCBpa2thc2hvXCA7CivkuojlgpnpmoogPCB5b2JpdGFpXCA7CivnlpHllY/nrKYgPCBnaW1vbmZ1XCA7CivnuZTlp6sgPCBvcmloaW1lXCA7CivntIXoibIgPCBiZW5paXJvXCA7CivpmbjmtbcgPCByaWt1a2FpXCA7CivntYLnq68gPCBzaHV1dGFuXCA7Civop5LnlaogPCBrYWRvYmFuXCA7Civlm7rlrprosrsgPCBrb3RlaWhpXCA7Civnsr7oqq0gPCBzZWlkb2t1XCA7CivnuZTlpbMgPCBzaG9rdWpvXCA7Civml6Xku5ggPCBoaWR6dWtlXCA7CivnhrHmhJsgPCBuZXRzdWFpXCA7CivlooPmtq8gPCBreW91Z2FpXCA7CivpnJzlpJwgPCBzaGltb3lvXCA7CivlpbPlgpEgPCBqb2tldHN1XCA7CivlpKnlpbMgPCB0ZW4nJ255b1wgOwor6KeS55O2IDwga2FrdWJpblwgOwor57Sh57i+IDwgYm91c2VraVwgOwor5pen5Li7IDwga3l1dXNodVwgOwor5aSn5aWzIDwgb29vbicnbmFcIDsKK+aVteWvviA8IHRla2l0YWlcIDsKK+ioiOa4rCA8IGtlaXNva3VcIDsKK+aWsOWTgSA8IHNoaW5waW5cIDsKK+aYjuayu+W6pyA8IG1laWppemFcIDsKK+eQhuaDs+WutiA8IHJpc291a2FcIDsKK+eEoeeGsSA8IG11bmV0c3VcIDsKK+Wcn+Wjh+WgtCA8IGRvdGFuYmFcIDsKK+S6jOasoeS8miA8IG5pamlrYWlcIDsKK+e3j+ahkCA8IHNvdWdpcmlcIDsKK+irluWRiiA8IHJvbmtva3VcIDsKK+eGseW/gyA8IG5lc3NoaW5cIDsKK+WlieWRiiA8IGhvdWtva3VcIDsKK+WkseWcsCA8IHNoaXRjaGlcIDsKK+e+qeWLmeaEnyA8IGdpbXVrYW5cIDsKK+aVsOWtpiA8IHN1dWdha3VcIDsKK+aSg+eglSA8IGdla2lzYWlcIDsKK+iqreWjsiA8IHlvbWl1cmlcIDsKK+aOmOmRvyA8IGt1c3Nha3VcIDsKK+mbueWusyA8IGh5b3VnYWlcIDsKK+e3j+afhCA8IHNvdWdhcmFcIDsKK+mciuWmmSA8IHJlaW15b3VcIDsKK+S4ieWPiei3ryA8IHNhbnNhcm9cIDsKK+WkieWuuSA8IGhlbicneW91XCA7Civml4Xlg6cgPCB0YWJpc291XCA7Civnhp/mha4gPCBqdWt1cnlvXCA7Civngo7oibIgPCBlbnNob2t1XCA7CivoqLPmnKwgPCB5YWt1aG9uXCA7Civloqjmm7ggPCBib2t1c2hvXCA7CivntJvns74gPCBmdW5reXV1XCA7Civmjqjph48gPCBzdWlyeW91XCA7Civmkp7nkIMgPCBkb3VreXV1XCA7CivlpJnlpJwgPCBzaHVrdXlhXCA7CivnhrHluqYgPCBuZXRzdWRvXCA7CivpnIflpK4gPCBzaGluJydvdVwgOwor5rOi5biD6Iy2IDwgaGFidWNoYVwgOwor57Sv56mNIDwgcnVpc2VraVwgOwor6KOP6YeYIDwgdXJha3VnaVwgOwor6KOP6YeRIDwgdXJhZ2FuZVwgOwor5pSq5ouMIDwga2FrdWhhblwgOwor6Zm45qmLIDwgcmlra3lvdVwgOwor6Ki85paHIDwgc2hvdW1vblwgOwor6LWk5ZWE5pyo6bOlIDwgYWthZ2VyYVwgOwor5LiN5oSb5oOzIDwgYnVhaXNvdVwgOwor6Ki65patIDwgc2hpbmRhblwgOwor5aSn5Zu9IDwgdGFpa29rdVwgOwor6Ki75paHIDwgY2h1dW1vblwgOwor57S656KnIDwga29ucGVraVwgOwor5LiA566H5bm0IDwgaWtrYW5lblwgOwor5pS55oKbIDwga2Fpc2h1blwgOwor57W254ShIDwgemV0c3VtdVwgOwor5aSW5aOBIDwgZ2FpaGVraVwgOwor5aGe5rqQIDwgc29rdWdlblwgOwor5aSn5Zi0IDwgb29oYXNoaVwgOwor5paw5YW1IDwgc2hpbnBlaVwgOwor6Kiz5paHIDwgeWFrdWJ1blwgOwor5LqI5YKZ6YeRIDwgeW9iaWtpblwgOwor5o6b6YeRIDwga2FrZWtpblwgOwor5pWX5bCGIDwgaGFpc2hvdVwgOwor5o6o6YCyIDwgc3Vpc2hpblwgOwor6ZuE5b+DIDwgeXV1c2hpblwgOwor5pW15aGBIDwgdGVraXJ1aVwgOwor57ay5qOaIDwgYW1pZGFuYVwgOwor6Zm45qOaIDwgcmlrdWhvdVwgOwor5LiN5Y+v55+lIDwgZnVrYWNoaVwgOwor5Zu96aKoIDwga29rdWZ1dVwgOwor6ZqG5pu/IDwgcnl1dXRhaVwgOwor57ea5o+PIDwgc2VuYnlvdVwgOwor6Kq/5ZCIIDwgY2hvdWdvdVwgOwor6I+p5o+Q5a+6IDwgYm9kYWlqaVwgOwor56Gr6buE5bGxIDwgaW91eWFtYVwgOwor6Zmw5qW1IDwgaW5reW9rdVwgOwor5aSP5aC0IDwgbmF0c3ViYVwgOwor57Sg5Zug5pWwIDwgc29pbnN1dVwgOwor6KSH6KO9IDwgZnVrdXNlaVwgOwor5aSW5ZynIDwgZ2FpYXRzdVwgOwor5LuP6Jit6KW/IDwgZnVyYW5zdVwgOwor54af5bm0IDwganVrdW5lblwgOwor57WQ55CDIDwga2Vra3l1dVwgOwor5aSW5Zu9IDwgZ2Fpa29rdVwgOwor5o6l6L6eIDwgc2V0c3VqaVwgOwor5LiN5ZCI55CGIDwgZnVnb3VyaVwgOwor57K+6JaEIDwgc2VpaGFrdVwgOwor5o6D6Zmk5ammIDwgc291amlmdVwgOwor5o2V6aOfIDwgaG9zaG9rdVwgOwor5pW15Zu9IDwgdGVra29rdVwgOwor6YeO5pqu5aSpIDwgeWFib3RlblwgOwor5aSJ5Z+fIDwgaGVuJydpa2lcIDsKK+S/neitt+WnlOWToSA8IGhvZ29paW5cIDsKK+mZveaapiA8IHlvdXJla2lcIDsKK+WutuWFt+etiSA8IGthZ3V0b3VcIDsKK+Wkp+WQjSA8IGRhaW15b3VcIDsKK+iWlOiWh+iJsiA8IGJhcmFpcm9cIDsKK+WbvembuyA8IGtva3VkZW5cIDsKK+Wkp+WPoyA8IG9vZ3VjaGlcIDsKK+S4jeaEieW/qyA8IGZ1eXVrYWlcIDsKK+i+suapn+WFtyA8IG5vdWtpZ3VcIDsKK+WbvemboyA8IGtva3VuYW5cIDsKK+i8uOmAgeiyuyA8IHl1c291aGlcIDsKK+m9siA8IG11c2hpYmFcIDsKK+mZveaYpSA8IHlvdXNodW5cIDsKK+eci+itt+WppiA8IGthbmdvZnVcIDsKK+WbvemamyA8IGtva3VzYWlcIDsKK+e0i+eroCA8IG1vbnNob3VcIDsKK+WcsOmBkyA8IGppbWljaGlcIDsKK+imqueOiSA8IG95YWRhbWFcIDsKK+W+oeelnueBqyA8IGdvamlua2FcIDsKK+aVheWunyA8IGtvaml0c3VcIDsKK+WbvemYsiA8IGtva3Vib3VcIDsKK+aUvuWwvyA8IGhvdW55b3VcIDsKK+aWh+WNmiA8IGJ1bmhha3VcIDsKK+S6iOWCmei7jSA8IHlvYmlndW5cIDsKK+aTr+aWpSA8IGhpbnNla2lcIDsKK+e4ruWbsyA8IHNodWt1enVcIDsKK+mWk+iGnCA8IGthbm1ha3VcIDsKK+Wkp+WKmyA8IGRhaXJpa2lcIDsKK+aOqOizniA8IHN1aXNob3VcIDsKK+a/gOmXmCA8IGdla2l0b3VcIDsKK+WkluWRqCA8IGdhaXNodXVcIDsKK+WPpOaWh+abuCA8IGtvbW9uam9cIDsKK+WbsOmboyA8IGtvbicnbmFuXCA7CivnuKblnZEgPCB0YXRla291XCA7CivntabmupAgPCBreXV1Z2VuXCA7CivpnLLku48gPCByb2Z1dHN1XCA7Civoh6rooZvmqKkgPCBqaWVpa2VuXCA7CivoqqHlkYogPCBrYWlrb2t1XCA7CivlnLDou7ggPCBjaGlqaWt1XCA7CivlpKflh7YgPCBkYWlreW91XCA7CivptqsgPCB0c3VndW1pXCA7CivopoHnm64gPCB5b3Vtb2t1XCA7CivntYTniYggPCBrdW1paGFuXCA7CivnuZTlhYMgPCBvcmltb3RvXCA7CivopZ/nq6AgPCBlcmlzaG91XCA7CivptaQgPCBpa2FydWdhXCA7Civpm5vlo4cgPCBoaW5hZGFuXCA7CivptYYgPCBjaGlkb3JpXCA7CivntJTnnJ8gPCBqdW5zaGluXCA7CivpmrflsZ4gPCByZWl6b2t1XCA7CivmlpzkuqQgPCBoYXN1a2FpXCA7CivnuYHliocgPCBoYW5nZWtpXCA7CivnhanmgqkgPCBib24nJ25vdVwgOwor5aOy5Zu9IDwgYmFpa29rdVwgOwor57SU55uKIDwganVuJydla2lcIDsKK+aWmeS6rSA8IHJ5b3V0ZWlcIDsKK+e3nuW4syA8IGRvbmNob3VcIDsKK+mwmCA8IG11cm9hamlcIDsKK+aVteWLoiA8IHRla2l6ZWlcIDsKK+ihqOmdoiA8IGh5b3VtZW5cIDsKK+mVt+iKiyA8IG5hZ2FpbW9cIDsKK+e0lOeZvSA8IGp1bnBha3VcIDsKK+mvsyA8IHN1a2Vzb3VcIDsKK+mYsuavkiA8IGJvdWRva3VcIDsKK+aVsOWMuSA8IHN1dWhpa2lcIDsKK+mbu+WNkyA8IGRlbnRha3VcIDsKK+e1gueCuSA8IHNodXV0ZW5cIDsKK+e3iuaApSA8IGtpbmt5dXVcIDsKK+aVteWJjSA8IHRla2l6ZW5cIDsKK+WkleWHqiA8IHl1dW5hZ2lcIDsKK+WQiOawo+mBkyA8IGFpa2lkb3VcIDsKK+e5muS5sSA8IHJ5b3VyYW5cIDsKK+e4hOWiqCA8IGpvdWJva3VcIDsKK+msmCA8IGthdHN1cmFcIDsKK+imqua9riA8IG95YXNoaW9cIDsKK+eCueeBq+WZqCA8IHRlbmtha2lcIDsKK+ijnOihgCA8IGhva2V0c3VcIDsKK+ims+a4rCA8IGthbnNva3VcIDsKK+eFruW5siA8IG5pYm9zaGlcIDsKK+e2seaJiyA8IHRzdW5hZGVcIDsKK+mZuOaIpiA8IHJpa3VzZW5cIDsKK+e+veS6jOmHjSA8IGhhYnV0YWVcIDsKK+mbhuWhtSA8IHNodXVqaW5cIDsKK+imj+a6luWMliA8IGtpanVua2FcIDsKK+malOW5tCA8IGtha3VuZW5cIDsKK+mrmOW6puW3riA8IGtvdWRvc2FcIDsKK+eEoeacrSA8IG11c2F0c3VcIDsKK+eEoeaciCA8IG11Z2V0c3VcIDsKK+eGseWUsSA8IG5lc3Nob3VcIDsKK+WvhOS7mOmHkSA8IGtpZnVraW5cIDsKK+aWieS4gCA8IHNlaWl0c3VcIDsKK+eBq+WPo+a5liA8IGtha291a29cIDsKK+Wil+W8tyA8IHpvdWt5b3VcIDsKK+mZuuaCqiA8IGtlbicnYWt1XCA7CivplbfogIEgPCBjaG91cm91XCA7CivmlL/msrvlsYsgPCBzZWlqaXlhXCA7CivooYzpoK0gPCBneW91dG91XCA7CivlgIvjgIXkurogPCBrb2tvamluXCA7CivpmqDlr4YgPCBvbm1pdHN1XCA7CivpnI3kubEgPCBrYWt1cmFuXCA7Civlm73pgZMgPCBrb2t1ZG91XCA7CivntZDmsLcgPCBrZXBweW91XCA7Civpm4blm6MgPCBzaHV1ZGFuXCA7CivmlL/msrvlrrYgPCBzZWlqaWthXCA7Civlm73pgKMgPCBrb2t1cmVuXCA7CivpgYvllrbosrsgPCB1bicnZWloaVwgOwor6Zmz5oOFIDwgY2hpbmpvdVwgOwor54Gr5664IDwgaGliYXNoaVwgOwor6J2m5aS36I+KIDwgZXpvZ2lrdVwgOwor5aOy5Y2cIDwgYmFpYm9rdVwgOwor5pWX5YyXIDwgaGFpYm9rdVwgOwor5aKX5bmFIDwgem91ZnVrdVwgOwor5L+d6K235p6XIDwgaG9nb3JpblwgOwor5r2u6aiSIDwgc2hpb3NhaVwgOwor5pyo5oi455WqIDwga2lkb2JhblwgOwor57Si54S2IDwgc2FrdXplblwgOwor57a+5biDIDwgYXlhbnVub1wgOwor57KY6IacIDwgbmVubWFrdVwgOwor5pGC55CGIDwgc2V0c3VyaVwgOwor6Zuq5YakIDwgc2V0c3VlblwgOwor5aKo5a6IIDwgYm9rdXNodVwgOwor57KJ6Iy2IDwga29uYWNoYVwgOwor6KeS5p2QIDwga2FrdXphaVwgOwor57WM5q20IDwga2VpcmVraVwgOwor6Zui5YilIDwgcmliZXRzdVwgOwor6ZeY54mbIDwgdG91Z3l1dVwgOwor5pGp5ruFIDwgbWFtZXRzdVwgOwor5Zu96LuNIDwga29rdWd1blwgOwor5r+r6Ke0IDwgcmFuc2hvdVwgOwor5pWZ5YW4IDwga3lvdXRlblwgOwor5Zyw6KGoIDwgY2hpaHlvdVwgOwor5o6o6JasIDwgc3VpeWFrdVwgOwor6Zmz5byBIDwgY2hpbmJlblwgOwor54Ks54e1IDwga290YXRzdVwgOwor6KGM6ZaTIDwgZ3lvdWthblwgOwor6ZaL56uLIDwga2Fpcnl1dVwgOwor5pKe5pyoIDwgc2h1bW9rdVwgOwor5rWF55+l5oG1IDwgYXNhZGppZVwgOwor6ZuR5YuZIDwgemF0c3VtdVwgOwor57Sw5rWBIDwgc2Fpcnl1dVwgOwor6ZuG5ZCIIDwgc2h1dWdvdVwgOwor5Zyw6JyCIDwgamliYWNoaVwgOwor6Z2S6LGM6LGGIDwgYW9lbmRvdVwgOwor6Zm65bO7IDwga2Vuc2h1blwgOwor6KGX6YyyIDwgZ2Fpcm9rdVwgOwor5aWz5LiI5aSrIDwgam9qb3VidVwgOwor5YaG6KiY5Y+3IDwgZW5raWdvdVwgOwor6ZuR5YmHIDwgemFzc29rdVwgOwor6KOF6JasIDwgc291eWFrdVwgOwor5Zu96LOTIDwga29rdWhpblwgOwor6Zm45bK4IDwgcmlrdWdhblwgOwor5aGX5oq5IDwgdG9tYXRzdVwgOwor6Zm95bCEIDwgaGl6YXNoaVwgOwor6Zai55m9IDwga2FucGFrdVwgOwor54Sm5oWuIDwgc2hvdXJ5b1wgOwor5Lqc5a+S5bivIDwgYWthbnRhaVwgOwor5oyv6Yi0IDwgc2hpbnJlaVwgOwor6ZuR5YW1IDwgem91aHlvdVwgOwor6Zqj5Zu9IDwgcmluZ29rdVwgOwor6ZuA5Y2TIDwgamFudGFrdVwgOwor6Zuq5LitIDwgc2V0Y2h1dVwgOwor5aKo5aCkIDwgYm9rdXRlaVwgOwor6KiX5a6jIDwgdGFrdXNlblwgOwor5pCN55uKIDwgc29uJydla2lcIDsKK+mZo+W5lSA8IGppbm1ha3VcIDsKK+axn+aIuOW3nSA8IGVkb2dhd2FcIDsKK+eBsOeavyA8IGhhaXphcmFcIDsKK+e1kOadnyA8IGtlc3Nva3VcIDsKK+eBsOeZvSA8IGthaWhha3VcIDsKK+imquagqiA8IG95YWthYnVcIDsKK+W5vOWFkOiqniA8IHlvdWppZ29cIDsKK+mOuSA8IGthc3VnYWlcIDsKK+WbveirliA8IGtva3Vyb25cIDsKK+e3keWcnyA8IHJ5b2t1ZG9cIDsKK+a/gOirliA8IGdla2lyb25cIDsKK+aal+aal+ijoSA8IGFuJydhbnJpXCA7CivkuI3mtYTloLQgPCBmdWpvdWJhXCA7CivopoHmsYIgPCB5b3VreXV1XCA7Civpi6kgPCBraXNzYWtpXCA7CivnhrHkuK0gPCBuZXRjaHV1XCA7Civmua/msrvloLQgPCB0b3VqaWJhXCA7Civoo4/ohbkgPCB1cmFoYXJhXCA7CivoqZXliKQgPCBoeW91YmFuXCA7CivntI3mtrwgPCBub3VyeW91XCA7Civlm7PoqqwgPCB6dXNldHN1XCA7CivplpPnlLcgPCBtYW90b2tvXCA7CivmkbrmnKwgPCBzaG91aG9uXCA7CivohLPlkbPlmYwgPCBub3VtaXNvXCA7Civpm5HkuosgPCB6YXRzdWppXCA7CivlrZDnlLvpnaIgPCBrb2dhbWVuXCA7Civntbbmga8gPCB6ZXNzb2t1XCA7CivpmaPlrrkgPCBqaW4nJ3lvdVwgOwor6Zm45aSnIDwgcmlrdWRhaVwgOwor6KSl55ihIDwgam9rdXNvdVwgOwor57KX562LIDwgYXJhc3VqaVwgOwor6ZW355+tIDwgY2hvdXRhblwgOwor6Kaq5pa5IDwgb3lha2F0YVwgOwor5Y+v6KaW5YyWIDwga2FzaGlrYVwgOwor6Kit5Za2IDwgc2V0c3VlaVwgOwor57W15b+DIDwgZWdva29yb1wgOwor5oud6aCYIDwgaGFpcnlvdVwgOwor57W25b6MIDwgemV0c3Vnb1wgOwor5LiN5rOo5oSPIDwgZnVjaHV1aVwgOwor57KY56igIDwgbmVuY2h1dVwgOwor5pKu5b2xIDwgc2F0c3VlaVwgOwor6K236KGb6ImmIDwgZ29laWthblwgOwor5aGp5a6zIDwgc2hpb2dhaVwgOwor6KOc57a0IDwgaG90ZXRzdVwgOwor56+k6L6yIDwgdG9rdW5vdVwgOwor5o+u55m6IDwga2loYXRzdVwgOwor54OP5pyoIDwga29rdXRhblwgOwor5qyh5omT6ICFIDwgamlkYXNoYVwgOwor5aCG5pyxIDwgdHN1aXNodVwgOwor6Zm45ZywIDwgcmlrdWNoaVwgOwor5aKD5Z+fIDwga3lvdWlraVwgOwor5oqr6Zyy5a60IDwgaGlyb3VlblwgOwor54Wn5ZCIIDwgc2hvdWdvdVwgOwor6KmV5LydIDwgaHlvdWRlblwgOwor6Ieq6KGb5a6YIDwgamllaWthblwgOwor5Z6L55WqIDwga2F0YWJhblwgOwor54S85aOyIDwgc2h1dW1haVwgOwor55WZ5a6I55WqIDwgcnVzdWJhblwgOwor6KSH55y8IDwgZnVrdWdhblwgOwor5Lqc6Z+z6YCfIDwgYW9uc29rdVwgOwor54Sh5a6/IDwgbXVzaHVrdVwgOwor6KeS5bi9IDwga2FrdWJvdVwgOwor6ZW355S3IDwgY2hvdW5hblwgOwor6Kaq5oyHIDwgb3lheXViaVwgOwor6KeS5bivIDwga2FrdW9iaVwgOwor54Sh5a6fIDwgbXVqaXRzdVwgOwor57Si5p2hIDwgc2FrdWpvdVwgOwor57eP5YmHIDwgc291c29rdVwgOwor6LmEIDwgaGlkenVtZVwgOwor5aKX5Y+OIDwgem91c2h1dVwgOwor57a+5Y+WIDwgYXlhdG9yaVwgOwor57aa5aCxIDwgem9rdWhvdVwgOwor5aCx5b6zIDwgaG91dG9rdVwgOwor5pGp5pOmIDwgbWFzYXRzdVwgOwor5aCx5b6pIDwgaG91ZnVrdVwgOwor5b6h5rOo5oSPIDwgZ29jaHV1aVwgOwor6KaL5paZIDwga2VucnlvdVwgOwor6KGo6KOFIDwgaHlvdXNvdVwgOwor5Zu96JGsIDwga29rdXNvdVwgOwor6KW/5pqmIDwgc2VpcmVraVwgOwor57Gg57WhIDwgcm91cmFrdVwgOwor5Yy756eR5a2mIDwgaWthZ2FrdVwgOwor57KX55quIDwgYXJha2F3YVwgOwor54Kt5p+xIDwgdGFuY2h1dVwgOwor6Kaz5b+1IDwga2FuJyduZW5cIDsKK+e0lOactCA8IGp1bmJva3VcIDsKK+iok+WRiiA8IGt1bmtva3VcIDsKK+ilv+aXpSA8IG5pc2hpYmlcIDsKK+exs+epgCA8IGJlaWtva3VcIDsKK+eVsOaWueaApyA8IGlob3VzZWlcIDsKK+aTgeWjgSA8IHlvdWhla2lcIDsKK+ioreWCmSA8IHNldHN1YmlcIDsKK+ihgOixhiA8IGNoaW1hbWVcIDsKK+Wcp+e4riA8IGFzc2h1a3VcIDsKK+e3kuS9nCA8IHNob3Nha3VcIDsKK+eEoemRkeafuyA8IG11a2Fuc2FcIDsKK+e0muaVsCA8IGt5dXVzdXVcIDsKK+e0i+acjSA8IG1vbnB1a3VcIDsKK+ijleemjyA8IHl1dWZ1a3VcIDsKK+aOm+eulyA8IGtha2V6YW5cIDsKK+e1teWnvyA8IGVzdWdhdGFcIDsKK+isrCA8IGF5YW1hcmlcIDsKK+WcsOexjSA8IGNoaXNla2lcIDsKK+S6jOeVquebriA8IG5pYmFubWVcIDsKK+aOoueptiA8IHRhbmt5dXVcIDsKK+eykueVjCA8IHJ5dXVrYWlcIDsKK+ehrOWMluayuSA8IGtvdWtheXVcIDsKK+aQjea1gSA8IHNvbnJ5dXVcIDsKK+iqvCA8IHlvc2hpbWlcIDsKK+aYoOeUu+elrSA8IGVpZ2FzYWlcIDsKK+iqriA8IHlhc2FzaGlcIDsKK+a8humjnyA8IHNoaWtrdWlcIDsKK+aYoOeUu+ekviA8IGVpZ2FzaGFcIDsKK+eCueaPjyA8IHRlbmJ5b3VcIDsKK+S4jeato+imjyA8IGZ1c2Vpa2lcIDsKK+iNiuajmOe3miA8IGJhcmFzZW5cIDsKK+aLk+mKgCA8IHRha3VnaW5cIDsKK+e1tuWjgSA8IHplcHBla2lcIDsKK+aFsOmciuelrSA8IGlyZWlzYWlcIDsKK+WtpuagoeWMuyA8IGdha2tvdWlcIDsKK+mZuOWFtSA8IHJpa3VoZWlcIDsKK+e2seWFtyA8IHRzdW5hZ3VcIDsKK+eyl+eOiSA8IGFyYXRhbWFcIDsKK+e2suWFgyA8IGFtaW1vdG9cIDsKK+iogOWPiiA8IGdlbmt5dXVcIDsKK+mHkeaWh+WtlyA8IGtpbm1vamlcIDsKK+ezuOaeoCA8IGl0b3dha3VcIDsKK+mZpOWNtCA8IGpva3lha3VcIDsKK+a8q+mMsiA8IG1hbnJva3VcIDsKK+maj+S4gCA8IHp1aWljaGlcIDsKK+ezuOadiSA8IGl0b3N1Z2lcIDsKK+eBsOauuyA8IGhhaWdhcmFcIDsKK+aRguaUvyA8IHNlc3Nob3VcIDsKK+ilhSA8IGNoaWhheWFcIDsKK+WhqeWRsyA8IHNoaW9hamlcIDsKK+e1kOWwviA8IGtldHN1YmlcIDsKK+e0hOaVsCA8IHlha3VzdXVcIDsKK+mYsuWjgSA8IGJvdWhla2lcIDsKK+W+oeazleW6piA8IGdvaGF0dG9cIDsKK+WhgeWjgSA8IHJ1aWhla2lcIDsKK+e1kOWvqSA8IGtlc3NoaW5cIDsKK+aLmemAnyA8IHNlc3Nva3VcIDsKK+aSruWcnyA8IHNhdHN1ZG9cIDsKK+awl+S/nemkiiA8IGtpaG95b3VcIDsKK+igjiA8IHV3YWJhbWlcIDsKK+mJhOeBq+WgtCA8IHRla2thYmFcIDsKK+WLpOWLmeWToSA8IGtpbm11aW5cIDsKK+inkuWcsCA8IGthZG9jaGlcIDsKK+e1jOWtpiA8IGtlaWdha3VcIDsKK+eyi+eLgiA8IHN1aWt5b3VcIDsKK+ijj+eZvSA8IHVyYWppcm9cIDsKK+WhteWFpSA8IGdvbWlpcmVcIDsKK+eVsOaYn+S6uiA8IGlzZWlqaW5cIDsKK+e0sOW4ryA8IGhvc29vYmlcIDsKK+ichiA8IHNoaWppbWlcIDsKK+eEoeWPoyA8IG11a3VjaGlcIDsKK+Wft+W/tSA8IHNodXVuZW5cIDsKK+mZuOS4iiA8IHJpa3Vqb3VcIDsKK+aYoOeUu+eVjCA8IGVpZ2FrYWlcIDsKK+a8q+mBiiA8IG1hbicneXV1XCA7CivntbbllLEgPCB6ZXNzaG91XCA7CivombEgPCBzaGlyYW1pXCA7CivkupTnlb/lhoUgPCBnb2tpbmFpXCA7CivlvqHnoLTnrpcgPCBnb2hhc2FuXCA7CivlnLDnm64gPCBjaGltb2t1XCA7CivlkKblrproqp4gPCBoaXRlaWdvXCA7CivnhKHlipsgPCBtdXJ5b2t1XCA7Civolb4gPCB0c3Vib21pXCA7Civmir3pgbggPCBjaHV1c2VuXCA7Civntbblj6sgPCB6ZWtreW91XCA7CivpgZXmhrLmgKcgPCBpa2Vuc2VpXCA7CivloanljJbpioAgPCBlbmthZ2luXCA7Civlm73nsosgPCBrb2t1c3VpXCA7Civplonmpa0gPCBoZWlneW91XCA7CivnsbPni6wgPCBiZWlkb2t1XCA7CivmjK/oiJ4gPCBmdXJ1bWFpXCA7Civkv53orbflj7ggPCBob2dvc2hpXCA7CivplbfmrYwgPCBuYWdhdXRhXCA7CivntI3lvpcgPCBuYXR0b2t1XCA7CivlnJ/nnYAgPCBkb2NoYWt1XCA7Civlm73nrYkgPCBrb2t1dG91XCA7CivloILlroggPCBkb3Vtb3JpXCA7Civmi53orIEgPCBoYWlldHN1XCA7CivlvpfmhI/msJcgPCB0b2t1aWdlXCA7CivmkqTlj44gPCB0ZXNzaHV1XCA7Civnga/mmI4gPCB0b3VteW91XCA7Civmi53oqq0gPCBoYWlkb2t1XCA7CivnrYnplpEgPCBuYW96YXJpXCA7Civpj6TpqqggPCBydWtvdHN1XCA7CivmiYvntLDlt6UgPCB0ZXphaWt1XCA7CivoiI7liKnloakgPCBzaGFyaWVuXCA7CivlnKjnlZkgPCB6YWlyeXV1XCA7CivmkI3mlpkgPCBzb25yeW91XCA7CivlnK3nkqcgPCBrZWloZWtpXCA7Civmj4/ms5UgPCBieW91aG91XCA7Civopqrppqzpub8gPCBveWFiYWthXCA7CivoiJ7ouIrlrrYgPCBidXRvdWthXCA7Civlm73nqI4gPCBrb2t1emVpXCA7CivlpYflvaLlhZAgPCBraWtlaWppXCA7CivploDmn7EgPCBtb25jaHV1XCA7CivljYjlvozkuK0gPCBnb2dvanV1XCA7CivoiYAgPCBoYXNoaWtlXCA7Civlm7Dnqq4gPCBrb25reXV1XCA7CivooajntJkgPCBoeW91c2hpXCA7Civng4jlpbMgPCByZXRzdWpvXCA7Civoqa3lvIHlrrYgPCBraWJlbmthXCA7CivopqrlloQgPCBzaGluemVuXCA7CivmvKvoqq0gPCBtYW5kb2t1XCA7CivplqLmiYAgPCBzZWtpc2hvXCA7Civns7jlupUgPCBpdG96b2tvXCA7CivmvKvoqZUgPCBtYW5weW91XCA7CivopovlooMgPCBtaXNha2FpXCA7CivogaIgPCBzaGlrYXRvXCA7Civog4PmtJfmtYQgPCBpc2Vuam91XCA7CivmipjovrwgPCBvcmlrb21pXCA7CivkuI3lkIzljJYgPCBmdWRvdWthXCA7Civnv7wgPCB0c3ViYXNhXCA7CivnlbDmlZnlvpIgPCBpa3lvdXRvXCA7CivmjojniLUgPCBqdXNoYWt1XCA7Civpj6HpnaIgPCBreW91bWVuXCA7Civlm7rnnYAgPCBrb2NoYWt1XCA7CivmjqjmuKwgPCBzdWlzb2t1XCA7Civlm73nm4ogPCBrb2t1ZWtpXCA7Civmua/liqDmuJsgPCB5dWthZ2VuXCA7CivntITlrpogPCB5YWt1am91XCA7CivpnZ7oqrLnqI4gPCBoaWthemVpXCA7Civlkozmpb3lmaggPCB3YWdha2tpXCA7CivntbHkuIAgPCB0b3VpdHN1XCA7Civplovmi5MgPCBrYWl0YWt1XCA7Civoo5zmrrogPCBob3NhdHN1XCA7Civns7jlsZEgPCBpdG9rdXp1XCA7CivpgZXms5XogIUgPCBpaG91c2hhXCA7CivmkoPliaMgPCBnZWtpa2VuXCA7CivmiYHpoY0gPCBoZW5nYWt1XCA7CivmvJToqqwgPCBlbnpldHN1XCA7CivmiYDpoJggPCBzaG9yeW91XCA7Civnq7nppqwgPCBjaGlrdWJhXCA7Civlm73nlKMgPCBrb2t1c2FuXCA7CivooYDnuIEgPCBrZXRzdWVuXCA7CivopIfmlrkgPCBmdWt1aG91XCA7CivnspfmnKsgPCBzb21hdHN1XCA7Civpjq7prYIgPCBjaGluZ29uXCA7CivopIfmlbAgPCBmdWt1c3V1XCA7CivmkI3lvpcgPCBzb250b2t1XCA7CivloJXlipsgPCBkYXJ5b2t1XCA7CivovLjpgIHmqZ8gPCB5dXNvdWtpXCA7CivkuI7ph47lhZogPCB5b3lhdG91XCA7CivooYDns4ogPCBjaGlub3JpXCA7CivlvJXngavngrkgPCBpbmthdGVuXCA7CivmvLjokL0gPCB6ZW5yYWt1XCA7CivnspfmlrkgPCBhcmFrYXRhXCA7Civns7jlp6sgPCBpdG9oaW1lXCA7Civnr4DnvqkgPCBzZXRzdWdpXCA7Civnvr3lrZDmnb8gPCBoYWdvaXRhXCA7CivnrYbouZ8gPCBoaXNzZWtpXCA7Civpn7PmspnmsbAgPCBvdG9zYXRhXCA7Civnpr7mnKznp5EgPCBrYWhvbmthXCA7CivkuI3lj6/liIYgPCBmdWthYnVuXCA7CivntYLlgKQgPCBvd2FyaW5lXCA7CivooYDnrYsgPCBjaGlzdWppXCA7Civln47lo4EgPCBqb3VoZWtpXCA7CivpvKDlvoTpg6ggPCBzb2tlaWJ1XCA7CivlnLDmrrsgPCBjaGlrYWt1XCA7CivnrZborIAgPCBzYWt1Ym91XCA7Civono3pgJogPCB5dXVkenV1XCA7CivplovluZUgPCBrYWltYWt1XCA7CivllqvpqZogPCBiaWtrdXJpXCA7CivplonluZUgPCBoZWltYWt1XCA7CivpjpbpqqggPCBzYWtvdHN1XCA7CivmuoDpoY0gPCBtYW5nYWt1XCA7CivooZfnnYAgPCBtYWNoaWdpXCA7CivlnKfmrrogPCBhc3NhdHN1XCA7Civpjq7pnZkgPCBjaGluc2VpXCA7CivnhKHmioDlt6cgPCBtdWdpa291XCA7Civon4von4AgPCBrb29yb2dpXCA7Civmi53ogbQgPCBoYWljaG91XCA7Civmv4HngrkgPCBkYWt1dGVuXCA7CivooI/nvLYgPCBrYW5pa2FuXCA7CivnpI4gPCBpc2hpenVlXCA7CivplbflvoQgPCBjaG91a2VpXCA7Civpg73orbDkvJogPCB0b2dpa2FpXCA7CivmjqjmnI0gPCBzdWlmdWt1XCA7CivplpHlr4IgPCBrYW5qYWt1XCA7Civns77llY8gPCBreXV1bW9uXCA7Civoo4/mm7ggPCB1cmFnYWtpXCA7CivkuojlgpnmoKEgPCB5b2Jpa291XCA7CivplbflubwgPCBjaG91eW91XCA7CivmkL7lj5YgPCBzYWt1c2h1XCA7CivloIXkurogPCBrYXRhamluXCA7CivlnJ/mqYsgPCBkb2Jhc2hpXCA7CivoprPkuJbpn7MgPCBrYW56ZW9uXCA7CivmiYvov5EgPCB0ZWRqaWthXCA7Civoo4/mlrkgPCB1cmFrYXRhXCA7CivljYrpgY7ljrsgPCBoYW5rYWtvXCA7CivkuI3lj4LliqAgPCBmdXNhbmthXCA7Civmv4DmuJsgPCBnZWtpZ2VuXCA7Civnspflv70gPCBzb2tvdHN1XCA7CivntI3lhaUgPCBub3VueXV1XCA7CivmioDooZMgPCBnaWp1dHN1XCA7CivmipXolqwgPCB0b3V5YWt1XCA7Civmv4DmtaogPCBnZWtpcm91XCA7CivmgaPmhI/mgKcgPCBzaGlpc2VpXCA7Civlm73ms5UgPCBrb2t1aG91XCA7CivnspLlvoQgPCByeXV1a2VpXCA7CivnlKYgPCB5b21pZ2FlXCA7Civku5jliqDnqI4gPCBmdWthemVpXCA7Civlm73msJEgPCBrb2t1bWluXCA7Civnsr7lppkgPCBzZWlteW91XCA7Civmv4HmsLQgPCBkYWt1c3VpXCA7CivmmYLoqIjluqcgPCB0b2tlaXphXCA7CivmjpLmlqUgPCBoYWlzZWtpXCA7Civpg6jlsYvku6MgPCBoZXlhZGFpXCA7Civmr43pn7PmgKcgPCBib2luc2VpXCA7CivooYznirYgPCBneW91am91XCA7Civonbbosp0gPCBjaG91Z2FpXCA7CivkuI3lvpfmhI8gPCBmdXRva3VpXCA7CivopZ/lhYMgPCBlcmltb3RvXCA7Civpm7voqbHmqZ8gPCBkZW53YWtpXCA7CivnhKHmi4Xkv50gPCBtdXRhbnBvXCA7Civmh7jpmpQgPCBrZW5rYWt1XCA7Civoo4/mioAgPCB1cmF3YXphXCA7CivlnKjmlrkgPCB6YWlrYXRhXCA7Civnq7novKogPCBjaGlrdXdhXCA7CivmjpLmkoMgPCBoYWlnZWtpXCA7Civmjqrovp7ms5UgPCBzb2ppaG91XCA7CivmjqHmip4gPCBzYWl0YWt1XCA7CivlhavkuZ3liIYgPCBoYWtrdWJ1XCA7Civonp/omasgPCBtZWljaHV1XCA7Civngb3ljoQgPCBzYWl5YWt1XCA7CivlnJ/ml6UgPCBkb25pY2hpXCA7CivmoLnlpKrmnb8gPCBuZWRhaXRhXCA7CivmiJDpioAgPCBuYXJpZ2luXCA7CivniZwgPCB1c2hpaGVuXCA7Civnr4TnlocgPCBoYW5jaHV1XCA7CivngavliqDmuJsgPCBoaWthZ2VuXCA7Civkupznh5DphbggPCBhcmluc2FuXCA7CivmmYLoqIjlsYsgPCB0b2tlaXlhXCA7Civmjozmj6EgPCBzaG91YWt1XCA7CivmiJDph5EgPCBuYXJpa2luXCA7CivmvZTnmb0gPCBrZXBwYWt1XCA7CivpnZLkuozmiY0gPCBhb25pc2FpXCA7CivmvZTnmZYgPCBrZXBwZWtpXCA7CivmvKLnsY0gPCBrYW5zZWtpXCA7CivlnKfmjqUgPCBhc3NldHN1XCA7Civph47mlL7lm7MgPCBub2hvdXp1XCA7CivnspLlrZAgPCByeXV1c2hpXCA7CivmiY3oppogPCBzYWlrYWt1XCA7Civngavlj6MgPCBoaWd1Y2hpXCA7CivmiYDorIIgPCBpd2F5dXJ1XCA7CivplpPlj6MgPCBtYWd1Y2hpXCA7CivplqPlhoUgPCBrYWt1bmFpXCA7CivlubzlhZDmnJ8gPCB5b3VqaWtpXCA7CivmuoDouqsgPCBtYW5zaGluXCA7CivmjInmkanoho8gPCBhbm1ha291XCA7CivmsJfoi6blirQgPCBraWd1cm91XCA7Civoo4/luq0gPCB1cmFuaXdhXCA7Civoo4/lupcgPCB1cmFkYW5hXCA7Civlm73mnIkgPCBrb2t1eXV1XCA7CivmlL/lupzmoYggPCBzZWlmdWFuXCA7Civlm73mm7ggPCBrb2t1c2hvXCA7CivngavlipsgPCBrYXJ5b2t1XCA7Civnq5zou4ogPCByeXV1c2hhXCA7CivkuojlgpnlvbkgPCB5b2JpZWtpXCA7CivmiJHovKkgPCB3YWdhaGFpXCA7CivmuoDotrMgPCBtYW56b2t1XCA7CivooYDmva4gPCBjaGlzaGlvXCA7CivmvIbntbUgPCB1cnVzaGllXCA7CivpvbfpvaogPCBha3VzZWt1XCA7CivlnLDlv4MgPCBjaGlzaGluXCA7CivnqbrppqwgPCBrYXJhdW1hXCA7Civlm73mlocgPCBrb2t1YnVuXCA7Civlm73mlZkgPCBrb2treW91XCA7Civlm73mlL8gPCBrb2t1c2VpXCA7CivnsbPlr6kgPCBiZWlzaGluXCA7CivlnanloJ0gPCBydXRzdWJvXCA7CivkuI3pgZPnkIYgPCBmdWRvdXJpXCA7Civph5HnhKHlnqIgPCBraW5tdWt1XCA7Civlm6PmoJcgPCBkb25ndXJpXCA7Civlm7PmmJ8gPCB6dWJvc2hpXCA7Civoo4/lsbEgPCB1cmF5YW1hXCA7CivmipjntJkgPCBvcmlnYW1pXCA7CivooYzmsLQgPCBneW91enVpXCA7Civnsonlo4EgPCBmdW5wZWtpXCA7Civlgb3pgKDljbAgPCBnaXpvdWluXCA7Civnq4vouqsgPCByaXNzaGluXCA7Civnq7noo70gPCB0YWtlc2VpXCA7CivnhKHmibnliKQgPCBtdWhpaGFuXCA7CivooYDmsoggPCBrZXRjaGluXCA7CivmiYvolJMgPCB0ZWR6dXJ1XCA7Civmr64gPCBtdXNoaXJ1XCA7Civlm7Pmm7josrsgPCB0b3Nob2hpXCA7Civngavku5ggPCBoaXRzdWtlXCA7CivlubjpgYvlhZAgPCBrb3V1bmppXCA7CivllJDpu40gPCB0b3VraWJpXCA7CivlnLDls6EgPCBjaGlreW91XCA7CivloanmsLTmuZYgPCBlbnN1aWtvXCA7CivmtYHluIPmnKwgPCBydWZ1Ym9uXCA7Civnr4nmuK8gPCBjaGlra291XCA7CivnqbrpmpkgPCBrdXVnZWtpXCA7CivmipznqbQgPCBudWtlYW5hXCA7CivlsbHojLboirEgPCBzYXphbmthXCA7Civnp7vmsJHms5UgPCBpbWluaG91XCA7CivnqbrpmbggPCBrdXVyaWt1XCA7CivprLznmb7lkIggPCBvbml5dXJpXCA7CivplpPkuK0gPCBhaWRhanV1XCA7CivmjpLlsL8gPCBoYWlueW91XCA7Civlm73miYsgPCBrb2t1c2h1XCA7CivooajmmI4gPCBoeW91bWVpXCA7CivlpYjoia/nnIwgPCBuYXJha2VuXCA7CivkuI3li53miYsgPCBmdWthdHRlXCA7Civlm57mlZkgPCBrYWlreW91XCA7CivlnLDlraYgPCBjaGlnYWt1XCA7CivmvIHnpIEgPCBneW9zaG91XCA7CivooajmlawgPCBoeW91a2VpXCA7Civmv4DmhqQgPCBnZWtpZnVuXCA7CivmvaTmsqIgPCBqdW50YWt1XCA7CivmjK/mm78gPCBmdXJpa2FlXCA7Civnr6bmo5IgPCBiZXJhYm91XCA7CivmipXnpaggPCB0b3VoeW91XCA7Civlm73mg4UgPCBrb2t1am91XCA7CivlnKjlroUgPCB6YWl0YWt1XCA7CivkuI3liKnnm4ogPCBmdXJpZWtpXCA7CivlnKjlraYgPCB6YWlnYWt1XCA7CivluILlkI/lk6EgPCBzaGlyaWluXCA7CivmhI/opovmm7ggPCBpa2Vuc2hvXCA7CivmhbDpnIrloZQgPCBpcmVpdG91XCA7Civnq4voqLwgPCByaXNzaG91XCA7Civmo5cgPCBuYXRzdW1lXCA7Civmjpvlo7AgPCBrYWtlZ29lXCA7CivmorsgPCBzaGlraW1pXCA7CivmiJHliKnli4kgPCBnYXJpYmVuXCA7CivooYzmnKsgPCB5dWt1c3VlXCA7CivooYzmm7ggPCBneW91c2hvXCA7CivmuL7ouqsgPCBrb25zaGluXCA7Civlm7Dmg5EgPCBrb253YWt1XCA7CivooYbmnJsgPCBzaHV1Ym91XCA7CivmuJvph48gPCBnZW5yeW91XCA7Civmm5kgPCBha2Vib25vXCA7Civmk6zlrp3nj6AgPCBnaWJvc2hpXCA7CivlpKflkozntbUgPCB5YW1hdG9lXCA7CivooYzmlbAgPCBneW91c3V1XCA7Civlm7PlvI8gPCB6dXNoaWtpXCA7CivlsI/liIfmiYsgPCBrb2dpdHRlXCA7CivmvL/mtrIgPCBzaG91ZWtpXCA7CivmmZIgPCBzYXJhc2hpXCA7Civou6Lot6/lmaggPCB0ZW5yb2tpXCA7CivnqYDpoZ4gPCBrb2t1cnVpXCA7CivmvKDnhLYgPCBiYWt1emVuXCA7CivnqoHpgLIgPCB0b3NzaGluXCA7CivnsbPlj44gPCBiZWlzaHV1XCA7Civml4EgPCB0c3VrdXJpXCA7CivliKTkuovoo5wgPCBoYW5qaWhvXCA7CivlsaDomIfmlaMgPCB0b3Nvc2FuXCA7Civnqb/pgJogPCBzZW50c3V1XCA7Civooajmg4UgPCBoeW91am91XCA7CivlmbTmtYEgPCBmdW5yeXV1XCA7CivnqK7ppqwgPCB0YW5ldW1hXCA7Civmt6Hpm6ogPCBhd2F5dWtpXCA7Civlj4LorbDpmaIgPCBzYW5naWluXCA7CivmjqXlj5cgPCBzZXRzdWp1XCA7CivmjKjmi7YgPCBhaXNhdHN1XCA7CivmjKvmipggPCB6YXNldHN1XCA7CivmjqXlj44gPCBzZXNzaHV1XCA7CivmiYvntrEgPCB0YWR6dW5hXCA7Civlm73lr74gPCBrb2t1dGFpXCA7Civkuojlgpnlk4EgPCB5b2JpaGluXCA7CivmvIHnjbIgPCBneW9rYWt1XCA7CivmiYnntbUgPCB0b2JpcmFlXCA7CivmvIHnjJ8gPCBneW9yeW91XCA7Civlm73lrpogPCBrb2t1dGVpXCA7CivnkIblt6Xnp5EgPCByaWtvdWthXCA7CivngavokazloLQgPCBrYXNvdWJhXCA7CivllIfpn7MgPCBzaGluJydvblwgOwor5a+S5Z6i6ZuiIDwga2FuZ29yaVwgOwor6KGM5oiQIDwgaWtpbmFyaVwgOwor5ruR55+zIDwga2Fzc2VraVwgOwor6Ziy6KGb6LK7IDwgYm91ZWloaVwgOwor5Zyw5Y+jIDwgamlndWNoaVwgOwor5omL566SIDwgdGVib3VraVwgOwor5ZSQ6ZaAIDwga2FyYW1vblwgOwor6aas5bCP5bGLIDwgdW1hZ295YVwgOwor56uc6ISzIDwgcnl1dW5vdVwgOwor5Zu95aSnIDwga29rdWRhaVwgOwor57Gz5L+XIDwgYmVpem9rdVwgOwor5Zu95aSWIDwga29rdWdhaVwgOwor6KOP5YG0IDwgdXJhZ2F3YVwgOwor5r+B5aOwIDwgZGFtaWdvZVwgOwor57Gz5L2cIDwgYmVpc2FrdVwgOwor5LqI5YKZ5YW1IDwgeW9iaWhlaVwgOwor5ZSx6YGTIDwgc2hvdWRvdVwgOwor5ZWP6LKsIDwgbW9uc2VraVwgOwor56m66LC3IDwga3V1a29rdVwgOwor5r+A5aKXIDwgZ2VraXpvdVwgOwor5bCP6YGT5YW3IDwga29kb3VndVwgOwor56uv57axIDwgaGFkenVuYVwgOwor5rex6YGgIDwgc2hpbicnZW5cIDsKK+ijj+S9nCA8IHVyYXNha3VcIDsKK+ijguWCtyA8IHJlc3Nob3VcIDsKK+ibruilnyA8IGJhbmthcmFcIDsKK+W4jOWFg+e0oCA8IGtpZ2Vuc29cIDsKK+aAuiA8IGtvcmFlcnVcIDsKK+S4lueVjOiqniA8IHNla2FpZ29cIDsKK+exs+S4rSA8IGJlaWNodXVcIDsKK+eri+iFuSA8IHJpcHB1a3VcIDsKK+eojumhjSA8IHplaWdha3VcIDsKK+erv+eruSA8IHNhb2Rha2VcIDsKK+a3q+mAuCA8IGluJydpdHN1XCA7CivlvqQgPCB0YWtlc2hpXCA7CivorbfooZvlhbUgPCBnb2VpaGVpXCA7Civnqbroqr8gPCBrdXVjaG91XCA7CivomavpoZ4gPCBjaHV1cnVpXCA7CivlvaLogIzkuIsgPCBrZWlqaWthXCA7CivmjbrljbAgPCBuYXRzdWluXCA7CivooYblurYgPCBzaHV1c2hvXCA7Civnq7nnq78gPCB0YWtlemFvXCA7CivpnZLpm7voqbEgPCBhb2RlbndhXCA7Civkuozmnprnm64gPCBuaW1haW1lXCA7CivllY/oqLogPCBtb25zaGluXCA7Civmi5PmnKwgPCB0YWt1aG9uXCA7CivnqY3ovIkgPCBzZWtpc2FpXCA7CivnqbropbIgPCBrdXVzaHV1XCA7Civku5blupznnIwgPCB0YWZ1a2VuXCA7Civkv53nt5rljLogPCBob3Nlbmt1XCA7Civlt70gPCB0YXRzdW1pXCA7CivlnKjkv5cgPCB6YWl6b2t1XCA7Civlh7rnqL3lj6QgPCBkZWdlaWtvXCA7CivnqbrooYwgPCBrdXVneW91XCA7CivlnLDkuLsgPCBqaW51c2hpXCA7CivkuI3lhbfogIUgPCBmdWd1c2hhXCA7CivlnLDkuK0gPCBjaGljaHV1XCA7CivmvJTnrpfmqZ8gPCBlbnphbmtpXCA7CivpgbrkvJ3ms5UgPCBpZGVuaG91XCA7Civlm73lj7cgPCBrb2t1Z291XCA7CivpjK/op5IgPCBzYWtrYWt1XCA7CivlnKjkuqwgPCB6YWlreW91XCA7Civmi43mlbAgPCBoYWt1c3V1XCA7Civpgbrlrrbml48gPCBpa2F6b2t1XCA7CivlsI/liKnlj6MgPCBrb3Jpa291XCA7CivlnKjkuK0gPCB6YWljaHV1XCA7CivooajlnKggPCBoeW91emFpXCA7Civmu7TmsLQgPCB0ZWtpc3VpXCA7CivmiZPnjocgPCBkYXJpdHN1XCA7Civpi7PpgKAgPCBjaHV1em91XCA7Civlm5vlm70gPCBzaGlrb2t1XCA7Civlm73lirQgPCBrb2t1cm91XCA7Civmv4Dli5UgPCBnZWtpZG91XCA7Civnq4vnsbMgPCByeXV1YmVpXCA7CivnrYvms6ggPCBraW5jaHV1XCA7Civmv4DlirEgPCBnZWtpcmVpXCA7CivmipHmraIgPCB5b2t1c2hpXCA7CivmvKLml48gPCBrYW56b2t1XCA7Civnr4DluqYgPCBzZXRzdWRvXCA7CivlpKnmsJfpgYsgPCB0ZW5raXVuXCA7CivmvIHmpa0gPCBneW9neW91XCA7CivmtrLph48gPCBla2lyeW91XCA7CivlupzorbDkvJogPCBmdWdpa2FpXCA7Civom4fooI0gPCBkYWthdHN1XCA7Civlm73lhoUgPCBrb2t1bmFpXCA7Civlm73lhbggPCBrb2t1dGVuXCA7CivonYvnn7MgPCByb3VzZWtpXCA7Civnq5znpZ4gPCByeXV1amluXCA7CivmtojpmLIgPCBzaG91Ym91XCA7CivmtYHpupcgPCByeXV1cmVpXCA7Civnq6/nmoQgPCB0YW50ZWtpXCA7CivmuKnoibIgPCBvbnNob2t1XCA7CivmupbnlKggPCBqdW4nJ3lvdVwgOwor56m06JS1IDwgYW5hZ3VyYVwgOwor5ouN5omLIDwgaGFrdXNodVwgOwor5omL54etIDwgdGVzaG9rdVwgOwor5aOsIDwgbWl6dW5vZVwgOwor5q2i6Z+z5ZmoIDwgc2hpb25raVwgOwor5ZCI5rCX5LyaIDwgYWlraWthaVwgOwor6YaN6YaQ5ZGzIDwgZGFpZ29taVwgOwor566x5birIDwgaGFrb3NoaVwgOwor6KGo5Y+3IDwgaHlvdWdvdVwgOwor6buE6bq7IDwgdHN1bmFzb1wgOwor6Jmr6YW4IDwgbXVzaGl6dVwgOwor5rqA55uuIDwgbWFubW9rdVwgOwor5oud5b6pIDwgaGFpZnVrdVwgOwor6ZCY5qW8IDwgc2hvdXJvdVwgOwor56uL56eLIDwgcmlzc2h1dVwgOwor56eL6aKoIDwgc2h1dWZ1dVwgOwor5oq85o26IDwgb3VuYXRzdVwgOwor5oSP5Zuz55qEIDwgaXRvdGVraVwgOwor5rWm6aKoIDwgdXJha2F6ZVwgOwor56m66Iy2IDwga2FyYWNoYVwgOwor56uc55y8IDwgcnl1dWdhblwgOwor5rW36Zm4IDwga2FpcmlrdVwgOwor5Zyw56OB5rCXIDwgY2hpamlraVwgOwor56iO6L68IDwgemVpa29taVwgOwor55Sf5oSP5rCXIDwgbmFtYWlraVwgOwor6buS6a+bIDwga3Vyb2RhaVwgOwor56m66ImyIDwgc29yYWlyb1wgOwor5Zub5qyh5YWDIDwgeW9qaWdlblwgOwor5oyZ5Zu9IDwga3lva29rdVwgOwor6KGw5YWGIDwgc3VpY2hvdVwgOwor5Zu95LitIDwga3VuaWp1dVwgOwor56eL6ZycIDwgc2h1dXNvdVwgOwor5ZaJ56ybIDwgbm9kb2J1ZVwgOwor56eL6ZyWIDwgc2h1dXJpblwgOwor5b6h55uu546JIDwgb21lZGFtYVwgOwor6KGM5ZWTIDwgZ3lvdWtlaVwgOwor5ZqPIDwga3VzaGFtaVwgOwor56eL6ZuoIDwgYWtpc2FtZVwgOwor56m66IW5IDwga3V1ZnVrdVwgOwor5oy/5YWlIDwgc291bnl1dVwgOwor5ZKM6aOfIDwgd2FzaG9rdVwgOwor5oqc5pOiIDwgYmF0dGVraVwgOwor6Y2156m0IDwga2FnaWFuYVwgOwor6J+75be7IDwgYXJpbWFraVwgOwor5oyH5ZynIDwgc2hpYXRzdVwgOwor5oqV5pOyIDwgdG91dGVraVwgOwor5YWs5paH5omAIDwga3Vtb25qb1wgOwor5oyH5ZuzIDwgc2FzaGl6dVwgOwor5b6h5bqn5omAIDwgZ296YXNob1wgOwor5rq65rC0IDwgZGVraXN1aVwgOwor5aSn6Yu45bGRIDwgb2dha3V6dVwgOwor56+J5ZywIDwgdHN1a2lqaVwgOwor55SY5rW36IuUIDwgYW1hbm9yaVwgOwor5bu66K2w5qGIIDwga2VuZ2lhblwgOwor6J2L54etIDwgcm91c29rdVwgOwor5rq65q27IDwgZGVraXNoaVwgOwor56KB5Lya5omAIDwgZ29rYWlqb1wgOwor5ouZ5a6FIDwgc2V0dGFrdVwgOwor5omL5rKiIDwgc2h1dGFrdVwgOwor5oqR5o+aIDwgeW9rdXlvdVwgOwor56yK5rOVIDwgemFydWhvdVwgOwor5oeH56+kIDwga29udG9rdVwgOwor5ZSQ6JavIDwga2FyYWltb1wgOwor56iO6Kq/IDwgemVpY2hvdVwgOwor6Jit6YuzIDwgcmFuY2h1dVwgOwor5ouh5aSnIDwga2FrdWRhaVwgOwor6Ziy54Gr5oi4IDwgYm91a2Fkb1wgOwor6YqF6ZC4IDwgZG91dGFrdVwgOwor55m75bGx5a62IDwgdG96YW5rYVwgOwor54KK5LqL5aC0IDwgc3VpamliYVwgOwor5oiQ54afIDwgc2VpanVrdVwgOwor5rqc5rGgIDwgdGFtZWlrZVwgOwor5rWm6YeMIDwgdXJhemF0b1wgOwor6Iux5paH56eRIDwgZWlidW5rYVwgOwor5rmv54aoIDwgeXVub3NoaVwgOwor5Zar54WZIDwga2l0c3VlblwgOwor5rqA5r2uIDwgbWFuY2hvdVwgOwor5ZqH5ZqHIDwga2Fra2FrdVwgOwor5ouT5aSnIDwgdGFrdWRhaVwgOwor5rqQ5rWBIDwgZ2Vucnl1dVwgOwor56mO6ISxIDwgZWlkYXRzdVwgOwor56qB56uvIDwgdG9wcGFuYVwgOwor6YW45oCn6ZuoIDwgc2Fuc2VpdVwgOwor6buE6ZuAIDwga291amFrdVwgOwor5ZaA55ewIDwga2FrdXRhblwgOwor6by76KGAIDwgaGFuYWRqaVwgOwor6Yyv57acIDwgc2FrdXNvdVwgOwor6KGT5LitIDwganV0Y2h1dVwgOwor5rS+55Sf6KqeIDwgaGFzZWlnb1wgOwor5rS+6ZalIDwgaGFiYXRzdVwgOwor6YG65Lyd5oCnIDwgaWRlbnNlaVwgOwor5Yy755mC6LK7IDwgaXJ5b3VoaVwgOwor5aSn56WW54i2IDwgZGFpc29mdVwgOwor6bq76ZuAIDwgbWF6ZWphblwgOwor56+G5Yi7IDwgdGVua29rdVwgOwor6LuN6I285YipIDwgZ3VuZGFyaVwgOwor5oiv5q2MIDwgemFyZXV0YVwgOwor5ZSQ6Ie8IDwga2FyYXVzdVwgOwor5rqA5rSyIDwgbWFuc2h1dVwgOwor5rm+5rWBIDwgd2Fucnl1dVwgOwor5ZaE546JIDwgemVuZGFtYVwgOwor56eB6YCaIDwgc2hpdHN1dVwgOwor56iu6IuXIDwgc2h1YnlvdVwgOwor55m95Lqc57SAIDwgaGFrdWFraVwgOwor5Li8IDwgZG9uYnVyaVwgOwor5rW36LOKIDwga2Fpem9rdVwgOwor56iu6IqLIDwgdGFuZWltb1wgOwor5oim5q20IDwgc2VucmVraVwgOwor6aiO6aas5oimIDwga2liYXNlblwgOwor55uu5LiA5p2vIDwgbWVpcHBhaVwgOwor5oyH5YCkIDwgc2FzaGluZVwgOwor6KiY5LqL5paHIDwga2lqaWJ1blwgOwor5rW36LGhIDwgc2VpdWNoaVwgOwor5oq85aOyIDwgb3NoaXVyaVwgOwor5ZOB6KmVIDwgaGlucHlvdVwgOwor5oOo6YW3IDwgemFua29rdVwgOwor5ZKM5aSq6byTIDwgd2FkYWlrb1wgOwor5oKq6aOfIDwgYWt1amlraVwgOwor6Juu55qEIDwgYmFudGVraVwgOwor5LqI5a6a5qGIIDwgeW90ZWlhblwgOwor56We6auEIDwgc2hpbnp1aVwgOwor6JiH6YmEIDwgc290ZXRzdVwgOwor6J+E5bGFIDwgY2hpa2t5b1wgOwor5oSa6KqsIDwgZ3VzZXRzdVwgOwor5oe45r+BIDwga2VuZGFrdVwgOwor5rqd5p2/IDwgZG9idWl0YVwgOwor56ym5Y+35ZmoIDwgZnVnb3VraVwgOwor5Zqi5LitIDwgbm91Y2h1dVwgOwor5pu46KiY6KOcIDwgc2hva2lob1wgOwor56eY6KijIDwgaGlrZXRzdVwgOwor56m655m9IDwga3V1aGFrdVwgOwor5b+c5o+05ZujIDwgb3VlbmRhblwgOwor6YG65Lyd5a2QIDwgaWRlbnNoaVwgOwor6Zmk6I2J5ZmoIDwgam9zb3VraVwgOwor6Jm56ImyIDwgbmlqaWlyb1wgOwor562W5a6aIDwgc2FrdXRlaVwgOwor5rWB6YCjIDwgcnl1dXJlblwgOwor56mN566XIDwgc2VraXNhblwgOwor5LqI5a6a5pelIDwgeW90ZWliaVwgOwor5oKq6Zi7IDwgdHN1d2FyaVwgOwor5oiv5puyIDwgZ2lreW9rdVwgOwor5L+d5oyB6ICFIDwgaG9qaXNoYVwgOwor5ouh5YWFIDwga2FrdWp1dVwgOwor56mA57KJIDwga29rdWZ1blwgOwor5ZSQ57O4IDwga2FyYWl0b1wgOwor6YmE6Y6aIDwgdGV0dHN1aVwgOwor56m655O2IDwga2FyYWJpblwgOwor5Y2Y5L2N5YWDIDwgdGFuaWdlblwgOwor5oSP5Zyw5oKqIDwgaWppd2FydVwgOwor5rqA5qCqIDwgbWFua2FidVwgOwor56eY6KGTIDwgaGlqdXRzdVwgOwor6JuL55m9IDwgdGFucGFrdVwgOwor5LiK5Ye65p2lIDwgam91ZGVraVwgOwor5ZGo6YGKIDwgc2h1dXl1dVwgOwor56ym5Y+35YyWIDwgZnVnb3VrYVwgOwor5ruF5bqmIDwgbWV0c3Vkb1wgOwor5rqA5pu0IDwgbWFuemFyYVwgOwor5ZGo6L66IDwgc2h1dWhlblwgOwor5oiQ5qGCIDwgbmFyaWtlaVwgOwor5rW36JuHIDwgdW1paGViaVwgOwor5rS76LevIDwga2F0c3Vyb1wgOwor6buS6LKCIDwga3Vyb3RlblwgOwor5LiN55u45b+cIDwgZnVzb3VvdVwgOwor6Yqt6JG1IDwgemVuaWFvaVwgOwor6Iux6Kqe54mIIDwgZWlnb2JhblwgOwor6YeN54Gr5ZmoIDwganV1a2FraVwgOwor5rOi6Z+zIDwgbmFtaW90b1wgOwor5pGp5Yip5pSvIDwgbWFyaXNoaVwgOwor56ic57eaIDwgcnlvdXNlblwgOwor55Ww56uv6KaWIDwgaXRhbnNoaVwgOwor5omN5b6zIDwgc2FpdG9rdVwgOwor56uL5qGIIDwgcml0c3VhblwgOwor6buZ6KqNIDwgbW9rdW5pblwgOwor56m654iGIDwga3V1YmFrdVwgOwor5ZCE6aeFIDwga2FrdWVraVwgOwor5oq85YWlIDwgb3NoaWlyZVwgOwor5re355SoIDwga29uJyd5b3VcIDsKK+a4pua9riA8IHV6dXNoaW9cIDsKK+iRrOWEgOWxiyA8IHNvdWdpeWFcIDsKK+mgheS9jee9riA8IGtvdWljaGlcIDsKK+mHo+mtmiA8IGNob3VneW9cIDsKK+aIkeaWuSA8IHdhZ2Fob3VcIDsKK+eptOeGiiA8IGFuYWd1bWFcIDsKK+aJgOW+lyA8IHNob3Rva3VcIDsKK+WMu+W4q+azlSA8IGlzaGlob3VcIDsKK+a6nOaBryA8IHRhbWVpa2lcIDsKK+aBremghiA8IGt5b3VqdW5cIDsKK+a8j+WIuyA8IHJvdWtva3VcIDsKK+iRoeiQhOWckiA8IGJ1ZG91ZW5cIDsKK+iWqemVtyA8IHNhdGNob3VcIDsKK+a1geiogCA8IHJ5dXVnZW5cIDsKK+aLheS7uyA8IHRhbicnbmluXCA7Civnq4vmmKUgPCByaXNzaHVuXCA7Civnqq/mpa0gPCB5b3VneW91XCA7CivmipzljrsgPCBiYWtreW91XCA7CivmuKnmtbQgPCBvbicneW9rdVwgOwor56aB6LazIDwga2luc29rdVwgOwor5rqW5oClIDwganVua3l1dVwgOwor5ZCD6Z+zIDwga2l0c3VvblwgOwor6YmE6LevIDwgdGV0c3Vyb1wgOwor5LqU5paX57GzIDwgZ290b2JlaVwgOwor56S+6ZW3IDwgc2hhY2hvdVwgOwor5ZCE6Z2iIDwga2FrdW1lblwgOwor6buS6KGAIDwga3Vyb2NoaVwgOwor5raI6ICXIDwgc2hvdW1vdVwgOwor56uj5oiQIDwgc2h1bnNlaVwgOwor6buS6J+7IDwga3Vyb2FyaVwgOwor5Y+v5oSb5rCXIDwga2F3YWlnZVwgOwor5rWB6KGMIDwgcnl1dWtvdVwgOwor56qS5q27IDwgY2hpc3NoaVwgOwor6YeR6auYIDwga2luZGFrYVwgOwor5LqU57ea6K2cIDwgZ29zZW5mdVwgOwor5ZCE6ZqOIDwga2FrdWthaVwgOwor56eL6I2JIDwgYWtpa3VzYVwgOwor5omN5a2mIDwgc2FpZ2FrdVwgOwor5b6h5bqc5YaFIDwgZ29mdW5haVwgOwor5a2Q6aas5bqnIDwga291bWF6YVwgOwor5oSJ6ImyIDwgeXVzaG9rdVwgOwor5bCP6Iql5a2QIDwga29rZXNoaVwgOwor5riF5r+BIDwgc2VpZGFrdVwgOwor5ZGo6KanIDwgc2h1dXJhblwgOwor5oGS5rip5ZmoIDwga291b25raVwgOwor5omA5bGeIDwgc2hvem9rdVwgOwor5oim5b25IDwgc2VuJydla2lcIDsKK+efpeaBteiAhSA8IGNoaWVzaGFcIDsKK+iWhOmbsiA8IHVzdWd1bW9cIDsKK+iWhOmbqiA8IHVzdXl1a2lcIDsKK+elnei+niA8IHNodWt1amlcIDsKK+aKkeWItiA8IHlva3VzZWlcIDsKK+aBi+miqCA8IGtvaWthemVcIDsKK+elnui8vyA8IG1pa29zaGlcIDsKK+mBuui0iOWIhiA8IGl6b3VidW5cIDsKK+m5v+i/vSA8IHNoaWthb2lcIDsKK+ellui/sCA8IHNvanV0c3VcIDsKK+aIiuaIjCA8IGJvanV0c3VcIDsKK+iWrOmFkiA8IHlha3VzaHVcIDsKK+WRquihkyA8IGp1anV0c3VcIDsKK+WPpOmhlCA8IGZ1cnVnYW9cIDsKK+WkquWIgOmtmiA8IHRhY2hpdW9cIDsKK+aJi+WmuyA8IHRlZHp1bWFcIDsKK+a3t+a/gSA8IGtvbmRha3VcIDsKK+WKqea8lOiAhSA8IGpvZW5zaGFcIDsKK+mHkemhjSA8IGtpbmdha3VcIDsKK+S7o+eQhumDqCA8IGRhaXJpYnVcIDsKK+aDqOiQvSA8IHNhbnJha3VcIDsKK+iYiuiThCA8IHVuY2hpa3VcIDsKK+mKgOiJsiA8IGdpbicnaXJvXCA7Civpuqbop5IgPCBiYWtrYWt1XCA7Civlj7DplqMgPCBkYWlrYWt1XCA7CivmuoDluK0gPCBtYW5zZWtpXCA7Civnp7vli5XkvZMgPCBpZG91dGFpXCA7CivpgYvli5XosrsgPCB1bmRvdWhpXCA7CivlpKnptZ3ntaggPCBiaXJvdWRvXCA7CivkuIDphbjljJYgPCBpc3NhbmthXCA7CivnpZ3os4AgPCBzaHVrdWdhXCA7CivmgqroqZUgPCBha3VoeW91XCA7CivmgqroqLMgPCBha3V5YWt1XCA7Civolarpm5EgPCBidXphdHN1XCA7Civpu5LojLYgPCBrdXJvY2hhXCA7CivnqI7nm64gPCB6ZWltb2t1XCA7CivpgaDot53pm6IgPCBlbmt5b3JpXCA7CivkvZDos4DnnIwgPCBzYWdha2VuXCA7CivnpLrpgZQgPCBqaXRhdHN1XCA7CivomY7nqbQgPCBrb2tldHN1XCA7Civpq5jpn7Ppg6ggPCBrb3VvbmJ1XCA7Civpjq7lrpogPCBjaGludGVpXCA7CivnlbDnq6/ogIUgPCBpdGFuc2hhXCA7CivnrZLkupUgPCB0c3V0c3VpXCA7Civlk7LnkIYgPCB0ZXRzdXJpXCA7CivpiI3otrMgPCBkb25zb2t1XCA7CivnqbrmobYgPCBrYXJhb2tlXCA7CivoloTpiI0gPCB1c3Vub3JvXCA7Civmh7LmgqogPCBjaG91YWt1XCA7CivnqbrmoKogPCBrdXVrYWJ1XCA7Civom67ml48gPCBiYW56b2t1XCA7CivnrJvlkLkgPCBmdWVmdWtpXCA7CivmhJ/ljJbpmaIgPCBrYW5rYWluXCA7Civnq5zlrq4gPCByeXV1Z3V1XCA7CivnpZ3oqIAgPCBzaHV1Z2VuXCA7CivmgaXovrEgPCBjaGlqb2t1XCA7CivkuI3mqZ/lq4wgPCBmdWtpZ2VuXCA7Civpg6jlpJbnp5ggPCBidWdhaWhpXCA7CivlloTmgqogPCB6ZW4nJ2FrdVwgOwor6YeN6Y6uIDwganV1Y2hpblwgOwor6JaE6YGHIDwgaGFrdWd1dVwgOwor5Lqc54ax5bivIDwgYW5ldHRhaVwgOwor5omL5Y+jIDwgdGVndWNoaVwgOwor5rKI6ZmNIDwgY2hpbmtvdVwgOwor5ZaE5b6zIDwgemVudG9rdVwgOwor5rer5qyyIDwgaW4nJ3lva3VcIDsKK+mKgOe0mSA8IGdpbmdhbWlcIDsKK+WvjOWjq+WxsSA8IGZ1amlzYW5cIDsKK+mItOiYrSA8IHN1enVyYW5cIDsKK+aIpuWfnyA8IHNlbicnaWtpXCA7CivlkJ/oqqYgPCBnaW5zaG91XCA7CivmjIfmj67miYAgPCBzaGlraWpvXCA7Civlk4Hnm64gPCBoaW5tb2t1XCA7CivphpzpoZ4gPCBzaHV1cnVpXCA7CivnlJ/phqTmsrkgPCBraWpvdXl1XCA7CivpioXnrpQgPCBkb3VoYWt1XCA7CivmiKblm70gPCBzZW5nb2t1XCA7CivmhJvnnYAgPCBhaWNoYWt1XCA7CivmtYTnkaDnkoMgPCBqb3VydXJpXCA7Civoo5zkvZDlrpggPCBob3Nha2FuXCA7CivpiI3op5IgPCBkb25rYWt1XCA7CivpuqbojLYgPCBtdWdpY2hhXCA7Civpu5Lnt5ogPCBrb2t1c2VuXCA7CivpgY7ljrvlvaIgPCBrYWtva2VpXCA7CivojYnku67lkI0gPCBzb3VnYW5hXCA7CivmhJrnm7QgPCBndWNob2t1XCA7CivpioDnrpQgPCBnaW5wYWt1XCA7Civol6ToibIgPCBmdWppaXJvXCA7CivmiLjlj6MgPCB0b2d1Y2hpXCA7Civnqbrmj5ogPCBrYXJhYWdlXCA7CivpioDnrJsgPCBnaW50ZWtpXCA7CivlvqHmqZ/lq4wgPCBnb2tpZ2VuXCA7CivnrKzkuIAgPCBkYWlpY2hpXCA7Civph47pgZMgPCBub21pY2hpXCA7CivllJDmrYwgPCBrYXJhdXRhXCA7CivlkIzoqr8gPCBkb3VjaG91XCA7CivkuI3lsaXooYwgPCBmdXJpa291XCA7CivlkIjoqr8gPCBnb3VjaG91XCA7Civlj6PovKogPCBrdWNoaXdhXCA7Civlv6DprYIgPCBjaHV1a29uXCA7CivlkIToq5YgPCBrYWt1cm9uXCA7CivlkIjoqZUgPCBnYXBweW91XCA7Civlj5nov7AgPCBqb2p1dHN1XCA7Civnq4vloLQgPCB0YWNoaWJhXCA7CivllJDmp5ggPCBrYXJheW91XCA7CivpmL/lvJfliKnliqAgPCBhZnVyaWthXCA7CivpurvnuIQgPCBhc2FuYXdhXCA7CivptrrptJIgPCBzZWtpcmVpXCA7Civmgqroh60gPCBha3VzaHV1XCA7Civmk6zkurrljJYgPCBnaWppbmthXCA7CivnqY3mnKggPCB0c3VtaWtpXCA7CivmupbliYcgPCBqdW5zb2t1XCA7Civpjq7lj7AgPCBjaGluZGFpXCA7CivliIbluqblmaggPCBidW5kb2tpXCA7CivmsojphZQgPCBjaGluc3VpXCA7Civpu5nnpbcgPCBtb2t1dG91XCA7Civph5HotaQgPCBraW4nJ2FrYVwgOwor56uL5Zu9IDwgcmlra29rdVwgOwor5omL5LitIDwgc2h1Y2h1dVwgOwor5omL5LiLIDwgdGVzaGl0YVwgOwor5Y+O6LyJIDwgc2h1dXNhaVwgOwor5Ye655uu6YeRIDwgZGVtZWtpblwgOwor5aSc5rG96LuKIDwgeW9naXNoYVwgOwor5rqA5Y2TIDwgbWFudGFrdVwgOwor5bem5rS+57O7IDwgc2FoYWtlaVwgOwor5rim5be7IDwgdXp1bWFraVwgOwor5rW354yrIDwgdW1pbmVrb1wgOwor5oSa54mpIDwgZ3VidXRzdVwgOwor6YeN6LKsIDwganV1c2VraVwgOwor6by75rGXIDwgaGFuYWFzZVwgOwor5oCl6YCBIDwga3l1dXNvdVwgOwor5ZaE5aWzIDwgemVuJydueW9cIDsKK+mJm+ethiA8IGVucGl0c3VcIDsKK+aIkuWQjSA8IGthaW15b3VcIDsKK+WOhOmboyA8IHlha3VuYW5cIDsKK+a1t+eJmyA8IGthaWd5dXVcIDsKK+iWrOiOoiA8IHlha2t5b3VcIDsKK+m8u+atjCA8IGhhbmF1dGFcIDsKK+aGkeaLoCA8IGh5b3VreW9cIDsKK+mJhOe0oiA8IHRlc3Nha3VcIDsKK+WPjei2iiA8IGhhbmV0c3VcIDsKK+WQueiBtCA8IGZ1aWNob3VcIDsKK+a5r+WPoyA8IHl1Z3VjaGlcIDsKK+WPpOiqrCA8IGtvc2V0c3VcIDsKK+awtOmjtCA8IG1penVhbWVcIDsKK+WNs+mhjCA8IHNva3VkYWlcIDsKK+WPo+iqrCA8IGt1emV0c3VcIDsKK+ipkOasuue9qiA8IHNhZ2l6YWlcIDsKK+eoruadvyA8IHRhbmVpdGFcIDsKK+iZq+awlyA8IG11c2hpa2VcIDsKK+epuuW4rSA8IGt1dXNla2lcIDsKK+a4rOWumiA8IHNva3V0ZWlcIDsKK+mlgumjqeWxiyA8IHVkb24nJ3lhXCA7Civmub7lhoUgPCB3YW4nJ25haVwgOwor5oSV54S2IDwgZ2FrdXplblwgOwor56iu5pysIDwgdGFuZWhvblwgOwor5Y+O6LOEIDwgc2h1dXdhaVwgOwor5aSi5oOz5a62IDwgbXVzb3VrYVwgOwor6KiY6K2c5rOVIDwga2lmdWhvdVwgOwor5LiA5q275b6MIDwgaXNzaGlnb1wgOwor6YeN6KizIDwganV1eWFrdVwgOwor6YiN6ImyIDwgbmliaWlyb1wgOwor5rex5oWuIDwgc2hpbnJ5b1wgOwor6Z2e6KGb55SfIDwgaGllaXNlaVwgOwor56iu5pePIDwgc2h1em9rdVwgOwor6YeM6KaqIDwgc2F0b295YVwgOwor6buS55ejIDwga3Vyb2F6YVwgOwor6YaL6YW4IDwgc2FrdXNhblwgOwor6bqm56ybIDwgbXVnaWJ1ZVwgOwor5ZCb6IejIDwga3Vuc2hpblwgOwor5rSe56m0IDwgaG9yYWFuYVwgOwor6Kqk5oqV5LiLIDwgZ290b3VrYVwgOwor5rW45r2kIDwgc2hpbmp1blwgOwor5Y+k6KGAIDwgZnVydWNoaVwgOwor5oaC5oiaIDwgeXV1c2VraVwgOwor5ZCr576eIDwgZ2Fuc2h1dVwgOwor56m65bCGIDwga3V1c2hvdVwgOwor5rC06Zm4IDwgc3VpcmlrdVwgOwor5LiN6Ieq55SxIDwgZnVqaXl1dVwgOwor5rWB55SoIDwgcnl1dXlvdVwgOwor5rqA5LqGIDwgbWFucnlvdVwgOwor5rWB55SjIDwgcnl1dXphblwgOwor56mN5oKqIDwgc2VraWFrdVwgOwor6Ymb55u0IDwgZW5jaG9rdVwgOwor44CDIDwgb25hamlrdVwgOwor5oKq562WIDwgYWt1c2FrdVwgOwor6bqm56eLIDwgbXVnaWFraVwgOwor6YeR6J6NIDwga2luJyd5dXVcIDsKK+iLseaVsOWtlyA8IGVpc3V1amlcIDsKK+W/hemcgCA8IGhpdHN1anVcIDsKK+elnue1jCA8IHNoaW5rZWlcIDsKK+WPjeimhiA8IGhhbnB1a3VcIDsKK+eqgeWmgiA8IHRvdHN1am9cIDsKK+a2suaZtiA8IGVraXNob3VcIDsKK+WQjOiFuSA8IGRvdWZ1a3VcIDsKK+epjeW8iiA8IHNla2loZWlcIDsKK+iZmualrSA8IGt5b2d5b3VcIDsKK+ayueiPnCA8IGFidXJhbmFcIDsKK+WNiumhjSA8IGhhbmdha3VcIDsKK+axuuitsCA8IGtldHN1Z2lcIDsKK+mJhOefsyA8IHRlc3Nla2lcIDsKK+W/q+mBqSA8IGthaXRla2lcIDsKK+mFt+mBhyA8IGtva3VndXVcIDsKK+m7meeEtiA8IG1va3VuZW5cIDsKK+mFqumFuCA8IHJha3VzYW5cIDsKK+mHieiWrCA8IHl1dXlha3VcIDsKK+WRiuefpSA8IGtva3VjaGlcIDsKK+efpeaDheaEjyA8IGNoaWpvdWlcIDsKK+miqOWRguahtiA8IGZ1cm9va2VcIDsKK+aBi+iNiSA8IGtvaWd1c2FcIDsKK+a1puazoiA8IHVyYW5hbWlcIDsKK+iWrOexoCA8IHlha3Vyb3VcIDsKK+iLseiqnuWcjyA8IGVpZ29rZW5cIDsKK+epuuWcpyA8IGt1dWF0c3VcIDsKK+S9jumfs+mDqCA8IHRlaW9uYnVcIDsKK+eni+awtCA8IHNodXVzdWlcIDsKK+WPs+iFlSA8IG1pZ2l1ZGVcIDsKK+WPo+iMtiA8IGt1Y2hpamFcIDsKK+W+kumjnyA8IHRvc2hva3VcIDsKK+mFqui+siA8IHJha3Vub3VcIDsKK+iWhOiCiSA8IHVzdW5pa3VcIDsKK+WMl+muriA8IGhva3VzZW5cIDsKK+m7hOeGnyA8IGtvdWp1a3VcIDsKK+S6jOacn+WItiA8IG5pa2lzZWlcIDsKK+WPjuiUtSA8IHNodXV6b3VcIDsKK+a1tOanvSA8IHlva3Vzb3VcIDsKK+mHkeiJsiA8IGtvbmppa2lcIDsKK+aTrOWjsOiqniA8IGdpc2VpZ29cIDsKK+WOn+iouyA8IGdlbmNodXVcIDsKK+aCqueXhyA8IGFrdXNob3VcIDsKK+aCqueXhSA8IGFrdWJ5b3VcIDsKK+WMlumqqCA8IGtha290c3VcIDsKK+mHjOiKiyA8IHNhdG9pbW9cIDsKK+WPjeiQvSA8IGhhbnJha3VcIDsKK+W/g+mFjSA8IHNoaW5wYWlcIDsKK+awt+i8qiA8IGh5b3VyaW5cIDsKK+aEn+acjSA8IGthbnB1a3VcIDsKK+avkumtmiA8IGRva3VneW9cIDsKK+engeassiA8IHNoaXlva3VcIDsKK+m5v+egpiA8IHJva3VzYWlcIDsKK+eUqOWLmeWToSA8IHlvdW11aW5cIDsKK+eqruS5jyA8IGt5dXVib3VcIDsKK+a3seWknCA8IHNoaW4nJ3lhXCA7Civnorroqo0gPCBrYWt1bmluXCA7CivmuJvlj44gPCBnZW5zaHV1XCA7CivolqznpLwgPCB5YWt1cmVpXCA7CivpjKjlnLAgPCBieW91Y2hpXCA7CivoloTnuIEgPCB1c3ViZXJpXCA7CivlvqHoi6blirQgPCBnb2t1cm91XCA7CivmnKrnmbvoqJggPCBtaXRvdWtpXCA7CivnsKHmmJPljJYgPCBrYW4nJ2lrYVwgOwor6JaE57W5IDwgdXN1Z2ludVwgOwor5b+r6Ku+IDwga2FpZGFrdVwgOwor5YyX6aKoIDwgaG9rdWZ1dVwgOwor5LiA6YGO5oCnIDwgaWtrYXNlaVwgOwor6YeN6IG0IDwganV1Y2hvdVwgOwor6YqY5p+EIDwgbWVpZ2FyYVwgOwor5oKq546JIDwgYWt1ZGFtYVwgOwor56eY5puyIDwgaGlreW9rdVwgOwor6JaE57SZIDwgdXN1Z2FtaVwgOwor6JaE57SFIDwgdXN1YmVuaVwgOwor6YGL6YCB6LK7IDwgdW5zb3VoaVwgOwor5riL5ZGzIDwgc2hpYnVtaVwgOwor5Y2X6YCyIDwgbmFuc2hpblwgOwor5Yy75bir5LyaIDwgaXNoaWthaVwgOwor6YqY5pyoIDwgbWVpYm9rdVwgOwor5ZCN56ewIDwgbWVpc2hvdVwgOwor5rWB5rGXIDwgcnl1dWthblwgOwor5YyX6Z2iIDwgaG9rdW1lblwgOwor5oKJ55qGIDwgc2hpa2thaVwgOwor5rWB5rC0IDwgcnl1dXN1aVwgOwor6Ieq5Y+Z5LydIDwgamlqb2RlblwgOwor56qB5YWIIDwgdG9zc2FraVwgOwor5rS75rOBIDwga2Fra3lvdVwgOwor6YeI576pIDwgc2hha3VnaVwgOwor5aSp5rCX5bGLIDwgdGVua2l5YVwgOwor6Zuj5piT5bqmIDwgbmFuJydpZG9cIDsKK+WQieelpSA8IGtpc3Nob3VcIDsKK+ehq+mFuCA8IHJ5dXVzYW5cIDsKK+W8sem9oiA8IGpha3VyZWlcIDsKK+azoeebmyA8IGF3YW1vcmlcIDsKK+WMl+mZkCA8IGhva3VnZW5cIDsKK+eni+aZtCA8IGFraWJhcmVcIDsKK+eptOWHuSA8IGFuYWJva29cIDsKK+mHkee2siA8IGthbmFhbWlcIDsKK+WPt+esmyA8IGdvdXRla2lcIDsKK+ibh+WPoyA8IGphZ3VjaGlcIDsKK+a3keWlsyA8IHNodWt1am9cIDsKK+WPjOe/vCA8IHNvdXlva3VcIDsKK+S7ruaVsOmDqCA8IGthc3V1YnVcIDsKK+WNiui+siA8IGhhbicnbm91XCA7CivpiI3nl5sgPCBkb250c3V1XCA7CivljYHlrZfot68gPCBqdXVqaXJvXCA7CivljJfploAgPCBraXRhbW9uXCA7CivlkLjniakgPCBzdWltb25vXCA7CivljYHpgLIgPCBqaXNzaGluXCA7CivolqznlKggPCB5YWt1eW91XCA7CivpioDmnY8gPCBnaW4nJ25hblwgOwor5rih5LuPIDwgdG9mdXRzdVwgOwor56OK6JC9IDwgcmFpcmFrdVwgOwor6Jma5b+DIDwga3lvc2hpblwgOwor5rSX5ruMIDwgc2VuZGVraVwgOwor5rSl5rOiIDwgdHN1bmFtaVwgOwor5rKW57iEIDwgb2tpbmF3YVwgOwor5rCR6LiKIDwgbWluJyd5b3VcIDsKK+iZmuW8sSA8IGt5b2pha3VcIDsKK+WPpOethiA8IGtvaGl0c3VcIDsKK+W+jOmHnCA8IGF0b2dhbWFcIDsKK+mHjeevpCA8IGp1dXRva3VcIDsKK+a3u+WJiiA8IHRlbnNha3VcIDsKK+mHkeetiyA8IGtpbnN1amlcIDsKK+W+l+mBkyA8IHRva3Vkb3VcIDsKK+iyoOespuWPtyA8IGZ1ZnVnb3VcIDsKK+mHjeeusSA8IGp1dWJha29cIDsKK+WQhOecjCA8IGtha3VrZW5cIDsKK+WPr+elnSA8IGthc2hpa3VcIDsKK+WQjOeXhSA8IGRvdWJ5b3VcIDsKK+Wkp+W+oeaJgCA8IG9vZ29zaG9cIDsKK+WPjue0jSA8IHNodXVub3VcIDsKK+epuuS4rSA8IGt1dWNodXVcIDsKK+m7kuadvyA8IGtva3ViYW5cIDsKK+iXgeeBsCA8IHdhcmFiYWlcIDsKK+WIhuW4g+WbsyA8IGJ1bnB1enVcIDsKK+mKg+aSgyA8IGp1dWdla2lcIDsKK+efs+mvmyA8IGlzaGlkYWlcIDsKK+mGnOiBniA8IHNodXVidW5cIDsKK+ijveWbs+WutiA8IHNlaXp1a2FcIDsKK+W+jOmAuCA8IGtvdWl0c3VcIDsKK+WPsOefsyA8IGRhaWlzaGlcIDsKK+WNk+irliA8IHRha3Vyb25cIDsKK+auv+mWoyA8IGRlbmtha3VcIDsKK+iWhOeariA8IHVzdWthd2FcIDsKK+aIpuaZguS4iyA8IHNlbmppa2FcIDsKK+WOmuiHvCA8IGF0c3V1c3VcIDsKK+WNmuimpyA8IGhha3VyYW5cIDsKK+Wkqeawl+WbsyA8IHRlbmtpenVcIDsKK+WNmOinkiA8IHRhbmtha3VcIDsKK+iZjuW3uyA8IHRvcmFrYW5cIDsKK+W9k+mZkCA8IHRvdWdpcmlcIDsKK+epjeWIhiA8IHNla2lidW5cIDsKK+mMr+S5sSA8IHNha3VyYW5cIDsKK+m7kuaWkSA8IGtva3VoYW5cIDsKK+ayu+eZgiA8IGNoaXJ5b3VcIDsKK+WNmOikhyA8IHRhbnB1a3VcIDsKK+aui+mrmCA8IHphbmRha2FcIDsKK+mJhOapiyA8IHRla2t5b3VcIDsKK+i7jeS6i+iyuyA8IGd1bmppaGlcIDsKK+a3t+S9nCA8IGtvbnNha3VcIDsKK+mHkeefsyA8IGtpbnNla2lcIDsKK+eCjuWkqeS4iyA8IGVudGVua2FcIDsKK+S7iuaXpeaYjuaXpSA8IGt5b3Vhc3VcIDsKK+WPjueojiA8IHNodXV6ZWlcIDsKK+aDnOaVlyA8IHNla2loYWlcIDsKK+eosuWPoiA8IGluYW11cmFcIDsKK+a1ruW9qyA8IHVraWJvcmlcIDsKK+W+jOi2syA8IGF0b2FzaGlcIDsKK+WMl+i+uiA8IGhva3VoZW5cIDsKK+iCpea6gOWFkCA8IGhpbWFuamlcIDsKK+mHo+eTtiA8IHRzdXJ1YmVcIDsKK+a1qua8q+a0viA8IHJvbWFuaGFcIDsKK+aFn+WTrSA8IGRvdWtva3VcIDsKK+aDkeaYnyA8IHdha3VzZWlcIDsKK+WNiuilnyA8IGhhbicnZXJpXCA7Civotbfph43mqZ8gPCBraWp1dWtpXCA7CivlnKfnoJXmqZ8gPCBhc3NhaWtpXCA7CivmrbvprYQgPCBzaGloYWt1XCA7Civlm57ot6/lm7MgPCBrYWlyb3p1XCA7CivnorrogZ4gPCBrYWt1YnVuXCA7CivmgYvnl4UgPCBrb2l5YW1pXCA7Civph5HnmoQgPCBraW50ZWtpXCA7CivljYroopYgPCBoYW5zb2RlXCA7CivlkLjmrrsgPCBzdWlnYXJhXCA7CivomavlnoIgPCBjaHV1c3VpXCA7CivmsJHooYYgPCBtaW5zaHV1XCA7CivlhbXlmajluqsgPCBoZWlraWtvXCA7CivpiYTmn7EgPCB0ZXRjaHV1XCA7Civmr47pgLEgPCBtYWlzaHV1XCA7CivmrovpoY0gPCB6YW5nYWt1XCA7Civmga/ngb0gPCBzb2t1c2FpXCA7CivlspDpmJznnIwgPCBnaWZ1a2VuXCA7CivlvLHpm7sgPCBqYWt1ZGVuXCA7CivolLXnsbMgPCBrdXJhbWFpXCA7CivmtbflsbEgPCB1bWl5YW1hXCA7Civmrovpn78gPCB6YW5reW91XCA7CivmtIvmpb0gPCB5b3VnYWt1XCA7Civph43nl4UgPCBqdXVieW91XCA7CivolqzmtrIgPCB5YWt1ZWtpXCA7CivoloTniakgPCB1c3Vtb25vXCA7CivoloTniYcgPCBoYWt1aGVuXCA7Civms6XmtbcgPCBkb3JvdW1pXCA7Civlurbli5noqrIgPCBzaG9tdWthXCA7CivlvqHooosgPCBvZnVrdXJvXCA7CivmsLToirggPCBtaXp1Z2VpXCA7CivljbPoiIggPCBzb2treW91XCA7Civnp5jlr4YgPCBoaW1pdHN1XCA7CivljbXohpwgPCByYW5tYWt1XCA7Civlj43nm64gPCBoYW5tb2t1XCA7CivmsLToibIgPCBtaXp1aXJvXCA7Civpm6LnuIHnirYgPCByaWVuam91XCA7CivolYPnpZ4gPCBiYW5zaGluXCA7Civph53nirYgPCBoYXJpam91XCA7Civmronpm6MgPCBqdW4nJ25hblwgOwor5b6L6KqeIDwgcml0c3Vnb1wgOwor5oGL54yrIDwga29pbmVrb1wgOwor5ZKM5byPIDwgd2FzaGlraVwgOwor5Y2Y6JGJIDwgdGFuJyd5b3VcIDsKK+m7meW+kyA8IG1va3VqdXVcIDsKK+mHkeeOiSA8IGtpbnRhbWFcIDsKK+mKgOW5lSA8IGdpbm1ha3VcIDsKK+efoumdoiA8IHlhb21vdGVcIDsKK+eojuWPjiA8IHplaXNodXVcIDsKK+eosuS9nCA8IGluYXNha3VcIDsKK+a0i+acjSA8IHlvdWZ1a3VcIDsKK+ato+imj+WMliA8IHNlaWtpa2FcIDsKK+WNsOiCiSA8IGluJyduaWt1XCA7CivmgKfnmZYgPCBzZWloZWtpXCA7CivlvIHpp4EgPCBiZW5wYWt1XCA7CivomK3lraYgPCByYW5nYWt1XCA7CivlkI3mtYEgPCBtZWlyeXV1XCA7CivmgbXmsqIgPCBrZWl0YWt1XCA7CivlvaLot6EgPCBrZWlzZWtpXCA7CivlkIzmtYEgPCBkb3VyeXV1XCA7CivlvJTpm7sgPCBjaG91ZGVuXCA7CivokL3pm7cgPCByYWt1cmFpXCA7Civlj4znkqcgPCBzb3VoZWtpXCA7CivmgqrmlrkgPCBha3VnYXRhXCA7CivlkIjmtYEgPCBnb3VyeXV1XCA7CivokL3pm4EgPCByYWt1Z2FuXCA7CivnpL7mrbQgPCBzaGFyZWtpXCA7CivokL3pmb0gPCByYWt1eW91XCA7Civph43niIYgPCBqdXViYWt1XCA7Civku4rlh7rmnaUgPCBpbWFkZWtpXCA7Civpu5LluK8gPCBrdXJvb2JpXCA7Civlj5nniLUgPCBqb3NoYWt1XCA7CivljJfopb8gPCBob2t1c2VpXCA7CivmpJzms6LlmaggPCBrZW5wYWtpXCA7Civlj6PngasgPCBrdWNoaWJpXCA7Civlj5TniLYgPCBzaHVrdWZ1XCA7Civms6Xmo5IgPCBkb3JvYm91XCA7CivmsYHnsokgPCBzaGlydWtvXCA7CivlvLHphbggPCBqYWt1c2FuXCA7CivolLXnm7ggPCB6b3VzaG91XCA7CivljYPojYkgPCBjaGlndXNhXCA7CivlkKvmnIkgPCBnYW4nJ3l1dVwgOwor5Y+N54mpIDwgdGFubW9ub1wgOwor6bOl6aGeIDwgY2hvdXJ1aVwgOwor5byB6ZujIDwgYmVuJyduYW5cIDsKK+WNs+e0jSA8IHNva3Vub3VcIDsKK+ekvualrSA8IHNoYWd5b3VcIDsKK+awl+iEiCA8IGtpbXlha3VcIDsKK+ekvOalvSA8IHJlaWdha3VcIDsKK+avjeimqiA8IGhhaGFveWFcIDsKK+enu+WHuiA8IGlzaHV0c3VcIDsKK+W+s+iCsiA8IHRva3Vpa3VcIDsKK+ejgeefsyA8IGppc2hha3VcIDsKK+a2iOWOuyA8IHNob3VreW9cIDsKK+mGnOeUtyA8IGJ1b3Rva29cIDsKK+egtOijgiA8IGhhcmV0c3VcIDsKK+a2iOWNsCA8IGtlc2hpaW5cIDsKK+WQjOalrSA8IGRvdWd5b3VcIDsKK+engeWhviA8IHNoaWp1a3VcIDsKK+aCquaIryA8IGl0YXp1cmFcIDsKK+WLlei7uCA8IGRvdWppa3VcIDsKK+eip+epuiA8IGhla2lrdXVcIDsKK+WKiOmgrSA8IGhla2l0b3VcIDsKK+iYreWbvSA8IHJhbmtva3VcIDsKK+WNs+etlCA8IHNva3V0b3VcIDsKK+S4i+S7mOmHkSA8IGthZnVraW5cIDsKK+mJhOW/gyA8IHRlc3NoaW5cIDsKK+avm+iZqyA8IGtlbXVzaGlcIDsKK+mBv+mbo+aJgCA8IGhpbmFuam9cIDsKK+aBi+aysyA8IGtvaWthd2FcIDsKK+mFjee1piA8IGhhaWt5dXVcIDsKK+WQjOagvCA8IGRvdWtha3VcIDsKK+eJh+aEj+WcsCA8IGthdGFpamlcIDsKK+iWrOaWuSA8IHlha3Vob3VcIDsKK+a0u+WtlyA8IGthdHN1amlcIDsKK+WTgOWIpSA8IGFpYmV0c3VcIDsKK+W+kuiKsSA8IGFkYWJhbmFcIDsKK+ekvOacjSA8IHJlaWZ1a3VcIDsKK+aBi+awtCA8IGtvaW1penVcIDsKK+WTgOWIhyA8IGFpc2V0c3VcIDsKK+WQiOagvCA8IGdvdWtha3VcIDsKK+a1t+WOnyA8IHVuYWJhcmFcIDsKK+m6u+WxkSA8IGFzYWt1enVcIDsKK+WPpOaxoCA8IGZ1cnVpa2VcIDsKK+aEmuWKoyA8IGd1cmV0c3VcIDsKK+efrei7uCA8IHRhbmppa3VcIDsKK+mGnOeKtiA8IHNodXVqb3VcIDsKK+WQhOagoSA8IGtha3Vrb3VcIDsKK+aBi+atuyA8IGtvaWppbmlcIDsKK+aCquW+syA8IGFrdXRva3VcIDsKK+awl+e1tiA8IGtpemV0c3VcIDsKK+ayiOa+sSA8IGNoaW5kZW5cIDsKK+WKiOmWiyA8IGhla2lrYWlcIDsKK+WPpOatjCA8IGZ1cnV1dGFcIDsKK+iQvemBuCA8IHJha3VzZW5cIDsKK+WJr+mhjCA8IGZ1a3VkYWlcIDsKK+W8j+mDqCA8IHNoaWtpYnVcIDsKK+WNnOetriA8IGJva3V6ZWlcIDsKK+WMu+WtpumDqCA8IGlnYWt1YnVcIDsKK+WRguW+iyA8IHJvcmV0c3VcIDsKK+iRiei6qyA8IHlvdXNoaW5cIDsKK+W+kOiEiCA8IGpvbXlha3VcIDsKK+eip+ecvCA8IGhla2lnYW5cIDsKK+W+jOiFuSA8IGF0b2JhcmFcIDsKK+attOmBiiA8IHJla2l5dXVcIDsKK+S6iOWgsemfsyA8IHlvaG91b25cIDsKK+W9rOiUmiA8IGhpbnV0c3VcIDsKK+emheWvuiA8IHplbmRlcmFcIDsKK+miqOWRguS7oyA8IGZ1cm9kYWlcIDsKK+atu+i7uCA8IHNoaWppa3VcIDsKK+a1geWfnyA8IHJ5dXVpa2lcIDsKK+W+jOefpeaBtSA8IGF0b2RqaWVcIDsKK+m2tOenkSA8IHRzdXJ1a2FcIDsKK+aBreaVrCA8IGt5b3VrZWlcIDsKK+axjueUqCA8IGhhbicneW91XCA7Civlt67mqZ/plqIgPCBzYWtpa2FuXCA7Civlj5Tmr40gPCBzaHVrdWJvXCA7Civnp4DlkJ8gPCBzaHV1Z2luXCA7CivliY3pq6ogPCBtYWVnYW1pXCA7CivlkoDlmrwgPCBzb3NoYWt1XCA7CivmrrromasgPCBzYXRjaHV1XCA7Civli6TooYwgPCBnb25neW91XCA7CivoqZDmrLrluKsgPCBzYWdpc2hpXCA7CivljbXnmb0gPCByYW5wYWt1XCA7Civph5Hmo5IgPCBrYW5hYm91XCA7CivluqfpqqggPCB6YWtvdHN1XCA7CivlvrTnqI4gPCBjaG91emVpXCA7CivlirTos4MgPCByb3VjaGluXCA7CivlkIjmjowgPCBnYXNzaG91XCA7CivlpJbnpZbniLYgPCBnYWlzb2Z1XCA7Civli4XoqLEgPCBjaG9ra3lvXCA7Civnn63oqZUgPCB0YW5weW91XCA7Civoq5bnkIblkowgPCByb25yaXdhXCA7Civnp5jku48gPCBoaWJ1dHN1XCA7Civph47llrblnLAgPCB5YWVpY2hpXCA7CivmtbfkuoAgPCB1bWlnYW1lXCA7CivpgoHpgLIgPCBtYWlzaGluXCA7Civpm7Dlm7LmsJcgPCBmdW4nJ2lraVwgOwor5Zug576O57eaIDwgaW5iaXNlblwgOwor5Y+k5pysIDwgZnVydWJvblwgOwor5Y+N5qeYIDwga2Fpc2FtYVwgOwor5rCR56aPIDwgbWlucHVrdVwgOwor5rCX5LiI5aSrIDwga2lqb3VidVwgOwor5Yid5pyf5YyWIDwgc2hva2lrYVwgOwor6YGF6ZycIDwgb3Nvamltb1wgOwor5rSb5aSWIDwgcmFrdWdhaVwgOwor6YWS55mWIDwgc2h1aGVraVwgOwor6YKq6KqsIDwgamFzZXRzdVwgOwor5rCP56WeIDwgdWppZ2FtaVwgOwor5q616JC9IDwgZGFucmFrdVwgOwor5ZG75ZCfIDwgc2hpbmdpblwgOwor6YmE5aOBIDwgdGVwcGVraVwgOwor56eL5L2cIDwgYWtpc2FrdVwgOwor5Yy656uLIDwga3VyaXRzdVwgOwor5ZCE5omAIDwga2FrdXNob1wgOwor5oOo5YqHIDwgc2FuZ2VraVwgOwor5oGL5paHIDwga29pYnVtaVwgOwor5rOV5oKmIDwgaG91ZXRzdVwgOwor6YKm6KizIDwgaG91eWFrdVwgOwor5rC055CDIDwgc3Vpa3l1dVwgOwor5rWm5Lq6IDwgdXJhYml0b1wgOwor6YqA5YG0IDwgZ2luZ2F3YVwgOwor5Y+W5pu/IDwgdG9yaWthZVwgOwor5q2p6KGM5ZmoIDwgaG9rb3VraVwgOwor5YmN6ZmzIDwgemVuY2hpblwgOwor55+z6J2LIDwgc2VraXJvdVwgOwor6JOs55SfIDwgeW9tb2dpdVwgOwor5rWB5YuVIDwgcnl1dWRvdVwgOwor5rmv6LGG6IWQIDwgeXVkb3VmdVwgOwor6KOP6IOM5oi4IDwgdXJhc2Vkb1wgOwor6YCG6bGXIDwgZ2VraXJpblwgOwor55+l6KGMIDwgY2hpZ3lvdVwgOwor5ZCM5b25IDwgZG91eWFrdVwgOwor6YW45ry/IDwgaG9venVraVwgOwor5q206KanIDwgcmVraXJhblwgOwor5rC054miIDwgbWl6dXJvdVwgOwor5rC054mbIDwgc3VpZ3l1dVwgOwor5pS+55Sf5LyaIDwgaG91am91ZVwgOwor6IKy5YWQ6ZmiIDwgaWt1amlpblwgOwor5LiN5L2c54K6IDwgZnVzYWt1aVwgOwor6bOl6LKdIDwgdG9yaWdhaVwgOwor5rC054iGIDwgc3VpYmFrdVwgOwor5q2m6KOF5YW3IDwgYnVzb3VndVwgOwor5YyX57GzIDwgaG9rdWJlaVwgOwor5LiL6aeE55WqIDwgZ2V0YWJhblwgOwor5Y2T55SoIDwgdGFrdXlvdVwgOwor5Ym96Lu9IDwgaHlvdWtpblwgOwor5ZKO5Lq6IDwgdG9nYW5pblwgOwor6JGJ6JyCIDwgaGFiYWNoaVwgOwor5b6z55SoIDwgdG9rdXlvdVwgOwor5Y2B55uuIDwganV1bW9rdVwgOwor5ZCM5bitIDwgZG91c2VraVwgOwor55yf6buSIDwgbWFra3Vyb1wgOwor6Ieq5YuV5YyWIDwgamlkb3VrYVwgOwor5Yqj6KeSIDwgcmVra2FrdVwgOwor6Jas5a6zIDwgeWFrdWdhaVwgOwor56aE5ZG9IDwgcm9rdW1laVwgOwor5Yi76ZmQIDwga29rdWdlblwgOwor5ZCb5a+1IDwga3VuY2hvdVwgOwor5ZCE5bqXIDwga2FrdXRlblwgOwor5Y2T55CDIDwgdGFra3l1dVwgOwor54Sh6YGg5oWuIDwgYnVlbnJ5b1wgOwor6YGL5YuV5aC0IDwgdW5kb3ViYVwgOwor5a626KiI6LK7IDwga2FrZWloaVwgOwor56aA5ZGKIDwgcmlua29rdVwgOwor5ZGo5YiwIDwgc2h1dXRvdVwgOwor5rGX5rC0IDwgYXNlbWl6dVwgOwor5YyX56uvIDwgaG9rdXRhblwgOwor6Z+z5qW95a62IDwgb25nYWtrYVwgOwor6buS5Lq6IDwga29rdWppblwgOwor5b2856iLIDwgYXJlaG9kb1wgOwor6YGT6L66IDwgbWljaGliZVwgOwor5q2m6KGTIDwgYnVqdXRzdVwgOwor5aSW56WW5q+NIDwgZ2Fpc29ib1wgOwor5q6L6I+KIDwgemFuZ2lrdVwgOwor5rKh5oiRIDwgYm90c3VnYVwgOwor5rWB5LqhIDwgcnl1dWJvdVwgOwor5Yq05YuZ6KqyIDwgcm91bXVrYVwgOwor5Yid6Z+zIDwgaGF0c3VuZVwgOwor6YO956uLIDwgdG9yaXRzdVwgOwor5Yil6ZuiIDwgYmV0c3VyaVwgOwor5b6T55qEIDwganV1dGVraVwgOwor56C056u5IDwgaGFjaGlrdVwgOwor6JK855m9IDwgc291aGFrdVwgOwor5rC05ru0IDwgc3VpdGVraVwgOwor5Yqb6KGMIDwgcnlva2tvdVwgOwor54Sh6LuM6YGTIDwgbXVraWRvdVwgOwor6YG46KmVIDwgc2VucHlvdVwgOwor56Sr5bKpIDwgcmVraWdhblwgOwor5ZCE5bGkIDwga2FrdXNvdVwgOwor5Yil6ZmiIDwgYmV0c3VpblwgOwor5YqH6KmpIDwgZ2VraXNoaVwgOwor6YmE5YmHIDwgdGVzc29rdVwgOwor6YGF6YCfIDwgY2hpc29rdVwgOwor56Kn5rC0IDwgaGVraXN1aVwgOwor55+z6Ie8IDwgaXNoaXVzdVwgOwor5bm06aGNIDwgbmVuZ2FrdVwgOwor5Yil6ZaTIDwgYmV0c3VtYVwgOwor5rGB5rCXIDwgc2hpcnVrZVwgOwor5rSb5YaFIDwgcmFrdW5haVwgOwor5q+O56eSIDwgbWFpYnlvdVwgOwor5b6u54axIDwgYmluZXRzdVwgOwor5rC05rW0IDwgc3VpeW9rdVwgOwor5oOR5LmxIDwgd2FrdXJhblwgOwor6IOD55eZ5pSjIDwgaWtlaXJlblwgOwor5Y+k5byPIDwga29zaGlraVwgOwor6YGL5YuV5ZOhIDwgdW5kb3VpblwgOwor5qmf5qKw6KqeIDwga2lrYWlnb1wgOwor5Y2K54afIDwgaGFuanVrdVwgOwor5rC05rWBIDwgc3Vpcnl1dVwgOwor5Y6f5pyoIDwgZ2VuYm9rdVwgOwor5Yuk57aaIDwga2luem9rdVwgOwor6YC86L+rIDwgaGlwcGFrdVwgOwor5Y6a5p2/IDwgYXRzdWl0YVwgOwor576O5a656ZmiIDwgYml5b3VpblwgOwor5byx6ICFIDwgamFrdXNoYVwgOwor6YeR5bmzIDwga2lucGlyYVwgOwor5Y2x5rCXIDwgYWJ1bmFnZVwgOwor5oCl5omAIDwga3l1dXNob1wgOwor5q6756u/IDwga2FyYXNhb1wgOwor5LiA6Lui5qmfIDwgaXR0ZW5raVwgOwor5Y+W5b6XIDwgc2h1dG9rdVwgOwor5Y2z5q27IDwgc29rdXNoaVwgOwor6bSH6ImyIDwgdG9raWlyb1wgOwor5Y+w5bC7IDwgZGFpamlyaVwgOwor5p2T5paH5a2XIDwgc2hhbW9qaVwgOwor6L+96ZqPIDwgdHN1aXp1aVwgOwor5Yuy56ugIDwga3Vuc2hvdVwgOwor6YCj6YePIDwgcmVucnlvdVwgOwor5o6i5p+75qmfIDwgdGFuc2FraVwgOwor55Sw6IiO5a62IDwgaW5ha2F5YVwgOwor5ZCI5aOBIDwgZ2FwcGVraVwgOwor5Ye66aGNIDwgZGViaXRhaVwgOwor5Yi56YKjIDwgc2V0c3VuYVwgOwor5bm06ZW3IDwgbmVuY2hvdVwgOwor5Ye66aCtIDwgc2h1dHRvdVwgOwor5YiH6ZmkIDwgc2V0c3Vqb1wgOwor6JGt57CAIDwgeW9zaGl6dVwgOwor6YGL6Lui6LK7IDwgdW50ZW5oaVwgOwor5qmZ55qu5rK5IDwgdG91aGl5dVwgOwor5rSL5YKYIDwgeW91Z2FzYVwgOwor6YGO5bm05bqmIDwga2FuZW5kb1wgOwor56CU56m2IDwga2Vua3l1dVwgOwor6YCy6LuNIDwgc2hpbmd1blwgOwor6YWS5q+SIDwgc2h1ZG9rdVwgOwor6Jas5ZOBIDwgeWFrdWhpblwgOwor5rKI5oCdIDwgY2hpbnNoaVwgOwor5Y2X5rSLIDwgbmFuJyd5b3VcIDsKK+atu+iCiSA8IHNoaW5pa3VcIDsKK+aAneaDkSA8IG9tb3dha3VcIDsKK+mztuiJsiA8IHRvYmlpcm9cIDsKK+mBi+WLleWFtyA8IHVuZG91Z3VcIDsKK+iQveiDhiA8IHJha3V0YW5cIDsKK+mzpeiRrCA8IGNob3Vzb3VcIDsKK+ayouWxsSA8IHRha3VzYW5cIDsKK+W+oeWtmOefpSA8IGdvem9uamlcIDsKK+WIuui6qyA8IHNhc2hpbWlcIDsKK+WQhOWcsCA8IGtha3VjaGlcIDsKK+iWhOWiqCA8IHVzdXp1bWlcIDsKK+WutuaUv+enkSA8IGthc2Vpa2FcIDsKK+WQhOWbvSA8IGtha2tva3VcIDsKK+iRpuesmyA8IGFzaGlidWVcIDsKK+Wwj+Wlh+m6lyA8IGtvZ2lyZWlcIDsKK+W5lembuyA8IG1ha3VkZW5cIDsKK+WJpeijvSA8IGhha3VzZWlcIDsKK+mGnOaFiyA8IHNodXV0YWlcIDsKK+efree1oSA8IHRhbnJha3VcIDsKK+enu+S9j+iAhSA8IGlqdXVzaGFcIDsKK+awkeaziiA8IG1pbnBha3VcIDsKK+ekvuWRiiA8IHNoYWtva3VcIDsKK+W8geiGnCA8IGJlbm1ha3VcIDsKK+mBk+WFt+WxiyA8IGRvdWd1eWFcIDsKK+mGnOaCqiA8IHNodXVha3VcIDsKK+iWrOWJpCA8IHlha3V6YWlcIDsKK+avlOeOhyA8IGhpcml0c3VcIDsKK+W8iue/kiA8IGhlaXNodXVcIDsKK+W9ueeJmyA8IGVraWd5dXVcIDsKK+WQjOe+qeiqniA8IGRvdWdpZ29cIDsKK+ayvOWcsCA8IG51bWFjaGlcIDsKK+iOq+mAoyA8IGJha3VyZW5cIDsKK+azleWQjSA8IGhvdW15b3VcIDsKK+aooeaTrOaIpiA8IG1vZ2lzZW5cIDsKK+WInemAnyA8IHNob3Nva3VcIDsKK+WQjeWPtyA8IG15b3Vnb3VcIDsKK+azleWNmiA8IGhvdWhha3VcIDsKK+mAhumBiyA8IGd5YWt1dW5cIDsKK+eciembqiA8IGJpc2V0c3VcIDsKK+WHuOmPoSA8IHRva2t5b3VcIDsKK+WQiOWPoyA8IGFpa3VjaGlcIDsKK+ekvuWJhyA8IHNoYXNva3VcIDsKK+iNkumnkiA8IGFyYWdvbWFcIDsKK+awuOaXpSA8IGVpaml0c3VcIDsKK+WIhumHnSA8IGZ1bnNoaW5cIDsKK+WIhumHjyA8IGJ1bnJ5b3VcIDsKK+iSsuWFrOiLsSA8IHRhbnBvcG9cIDsKK+WIpei3ryA8IGJldHN1cm9cIDsKK+azleWKmyA8IGhvdXJpa2lcIDsKK+avlOeGsSA8IGhpbmV0c3VcIDsKK+azleWJhyA8IGhvdXNva3VcIDsKK+eoveWPpOedgCA8IGtlaWtvZ2lcIDsKK+eevCA8IG1hYnV0YVwgOwor6L63IDwgc3ViZXJ1XCA7CivnnrMgPCBoaXRvbWlcIDsKK+i8qSA8IHlha2FyYVwgOwor55uyIDwgbWVzaGlpXCA7Civou4ogPCBrdXJ1bWFcIDsKK+W6jyA8IHRzdWlkZVwgOwor55qGIDwgbWluJyduYVwgOwor5bmVIDwgdG9iYXJpXCA7CivluJ0gPCBtaWthZG9cIDsKK+W3piA8IGhpZGFyaVwgOwor55a+IDwgc2hpdHN1XCA7CivnlbMgPCB0YXRhbWlcIDsKK+eVoCA8IGhhdGFrZVwgOwor55OmIDwga2F3YXJhXCA7CivlsqwgPCBtaXNha2lcIDsKK+WxiiA8IHRvZG9rZVwgOwor5bCKIDwgbWlrb3RvXCA7Civlrp0gPCB0YWthcmFcIDsKK+eNoyA8IGtlbW9ub1wgOwor54u8IDwgb29rYW1pXCA7Civni6wgPCBkb2l0c3VcIDsKK+iqoCA8IG1ha290b1wgOwor6Ki8IDwgYWthc2hpXCA7CivniLYgPCBjaGljaGlcIDsKK+iomyA8IG5hbWFyaVwgOwor5aiYIDwgbXVzdW1lXCA7Civlp78gPCBzdWdhdGFcIDsKK+WmviA8IHdhcmF3YVwgOwor5aa5IDwgaW1vdXRvXCA7CivopoEgPCBrYW5hbWVcIDsKK+iltyA8IHRhc3VraVwgOwor54WZIDwga2VtdXJpXCA7CivopZYgPCBmdXN1bWFcIDsKK+ijuCA8IGhhZGFrYVwgOwor6KK0IDwgaGFrYW1hXCA7CivooosgPCBmdWt1cm9cIDsKK+ihoyA8IGtvcm9tb1wgOwor5Z+DIDwgaG9rb3JpXCA7Civon4AgPCBzaHV0c3VcIDsKK+m8rCA8IGl0YWNoaVwgOwor6bygIDwgbmV6dW1pXCA7CivlnJ8gPCB0c3VjaGlcIDsKK+a8hiA8IHVydXNoaVwgOwor6Ju5IDwgc2FuYWdpXCA7Civom5kgPCBrYXdhenVcIDsKK+WZqCA8IHV0c3V3YVwgOwor5rivIDwgbWluYXRvXCA7CivolqwgPCBrdXN1cmlcIDsKK+iWqiA8IHRha2lnaVwgOwor5raZIDwgbmFtaWRhXCA7CivolocgPCB6ZW5tYWlcIDsKK+iWhCA8IHN1c3VraVwgOwor6bSJIDwga2FyYXN1XCA7CivljqggPCBrdXJpeWFcIDsKK+WNuCA8IG9yb3NoaVwgOwor5Y21IDwgdGFtYWdvXCA7CivmraogPCBpYml0c3VcIDsKK+mtmiA8IHNha2FuYVwgOwor5Y2XIDwgbWluYW1pXCA7CivljKAgPCB0YWt1bWlcIDsKK+aruyA8IHNha3VyYVwgOwor6Iu6IDwgaWNoaWdvXCA7Civli6IgPCBoYXp1bWlcIDsKK+aqnCA8IGhpbm9raVwgOwor6IiFIDwgc2h1dXRvXCA7CivmpoogPCBzYWtha2lcIDsKK+WFiSA8IGhpa2FyaVwgOwor6aSoIDwgeWFrYXRhXCA7CivlgJkgPCBzb3Vyb3VcIDsKK+mfvyA8IGhpYmlraVwgOwor5p+zIDwgeWFuYWdpXCA7Civkv4QgPCBuaXdha2FcIDsKK+S/giA8IGtha2FyaVwgOwor5L6/IDwgeW9zdWdhXCA7CivmnpUgPCBtYWt1cmFcIDsKK+acuiA8IHRzdWt1ZVwgOwor5LuPIDwgaG90b2tlXCA7Civmm4cgPCBrdW1vcmlcIDsKK+mbgCA8IHN1enVtZVwgOwor5LqsIDwgbWl5YWtvXCA7CivpmqMgPCB0b25hcmlcIDsKK+S5mSA8IGtpbm90b1wgOwor5LmNIDwgbmFnYXJhXCA7CivkuIcgPCB5b3JvenVcIDsKK+S4gyA8IHNoaWNoaVwgOwor5LiBIDwgaGlub3RvXCA7Civnt5EgPCBtaWRvcmlcIDsKK+e1oyA8IGthc3VyaVwgOwor57WGIDwga2l6dW5hXCA7CivnsL4gPCBzdWRhcmVcIDsKK+mPoSA8IGthZ2FtaVwgOwor6Y6WIDwga3VzYXJpXCA7CivnrZIgPCB0c3V0c3VcIDsKK+aNjCA8IHNhYmFraVwgOwor6Yu8IDwgaGFnYW5lXCA7Civnq6UgPCB3YXJhYmVcIDsKK+mLjyA8IGhhc2FtaVwgOwor5omJIDwgdG9iaXJhXCA7CivmiYAgPCB0b2tvcm9cIDsKK+W7g+iZmiA8IGhhaWt5b1wgOwor5b+/5oCSIDwgZnVuJydudVwgOwor6YCB6L+OIDwgc291Z2VpXCA7Civov4Xpm7cgPCBqaW5yYWlcIDsKK+W/l+aTjSA8IHNoaXNvdVwgOwor6YCa6LKoIDwgdHN1dWthXCA7CivlkI3liLogPCBtZWlzaGlcIDsKK+WQjOWJjSA8IGRvdXplblwgOwor56S85YW4IDwgcmVpdGVuXCA7CivliY3ooZsgPCB6ZW4nJ2VpXCA7Civnn6LnrYggPCB5YWhhenVcIDsKK+mHkeWdkSA8IGtpbmtvdVwgOwor5Y6f5b2iIDwgZ2Vua2VpXCA7CivlvqnmqKkgPCBmdWtrZW5cIDsKK+WJjeihjCA8IHplbmtvdVwgOwor5ZCN5YiGIDwgbWVpYnVuXCA7CivlvaLnirYgPCBrZWlqb3VcIDsKK+WIl+i7iiA8IHJlc3NoYVwgOwor5ZCN5YiAIDwgbWVpdG91XCA7Civlu4Pol6kgPCBoYWloYW5cIDsKK+mFjeacrCA8IGhhaWhvblwgOwor5Y6a5b+XIDwga291c2hpXCA7CivoloTlkbMgPCBoYWt1bWlcIDsKK+ekvuWDpyA8IHNoYXNvdVwgOwor5ZCI5YmkIDwgZ291emFpXCA7CivlkIzlh6YgPCBkb3VzaG9cIDsKK+azleWFuCA8IGhvdXRlblwgOwor56S+5YK1IDwgc2hhc2FpXCA7CivlubTovKogPCBuZW5yaW5cIDsKK+W5tOi8qSA8IG5lbnBhaVwgOwor56OB5b+DIDwgamlzaGluXCA7CivliIbpgaMgPCBidW5rZW5cIDsKK+WPi+WlvSA8IHl1dWtvdVwgOwor5Yuk55WqIDwga2luYmFuXCA7Civnn7PnopEgPCBzZWtpaGlcIDsKK+WQiOWIhyA8IGdhc3NhaVwgOwor6YCA6LuiIDwgdGFpdGVuXCA7CivmraPnt6ggPCBzZWloZW5cIDsKK+WPjeWkiSA8IGhhbnBlblwgOwor5Y+x5ZKkIDwgc2hpdHRhXCA7CivlkIzlhZogPCBkb3V0b3VcIDsKK+W5vei2oyA8IHl1dXNodVwgOwor5Yqg57WmIDwga2FreXV1XCA7CivlkI3lhKogPCBtZWl5dXVcIDsKK+WOs+WwgSA8IGdlbnB1dVwgOwor5biv6Zu7IDwgdGFpZGVuXCA7Civlvovms5UgPCByaXBwb3VcIDsKK+WHjOmbsiA8IHJ5b3V1blwgOwor5b+r5oSfIDwga2Fpa2FuXCA7CivpgbjogIMgPCBzZW5rb3VcIDsKK+efoueoriA8IHlhZGFuZVwgOwor5rGO5oSbIDwgaGFuJydhaVwgOwor5by355uXIDwgZ291dG91XCA7CivljrPlr5IgPCBnZW5rYW5cIDsKK+mHj+WZqCA8IHJ5b3VraVwgOwor5ZCN5YOnIDwgbWVpc291XCA7CivmraPntbEgPCBzZWl0b3VcIDsKK+mBiuiVqSA8IHl1dXRvdVwgOwor5rG65a6aIDwga2V0dGVpXCA7CivokrjmsJEgPCBqb3VtaW5cIDsKK+W8vueXlSA8IGRhbmtvblwgOwor6YeN5Zm4IDwganV1dG9uXCA7Civov4Lpl4ogPCB1a2F0c3VcIDsKK+mAoOipoyA8IHpvdWtlaVwgOwor5reh44CFIDwgdGFudGFuXCA7CivljrPlroggPCBnZW5zaHVcIDsKK+WPsOWQjSA8IHRhaW1laVwgOwor5Y6z5a2YIDwgZ2Vuc29uXCA7CivmraPns7sgPCBzZWlrZWlcIDsKK+mCquelniA8IGphc2hpblwgOwor6L666ZmsIDwgaGVuc3V1XCA7CivpgKDoqIAgPCB6b3VnZW5cIDsKK+mAg+i1sCA8IHRvdXNvdVwgOwor6YCa6KqeIDwgdHN1dWdvXCA7CivliIbovIkgPCBidW5zYWlcIDsKK+mFuOaApyA8IHNhbnNlaVwgOwor55u46ZaiIDwgc291a2FuXCA7CivlvozmrrUgPCBrb3VkYW5cIDsKK+ekvuS8miA8IHNoYWthaVwgOwor6YCa6KmxIDwgdHN1dXdhXCA7CivlvqnmoKEgPCBmdWtrb3VcIDsKK+WQjOWApCA8IGRvdWNoaVwgOwor5YiH6LqrIDwga2lyaW1pXCA7CivlkJvkuLsgPCBrdW5zaHVcIDsKK+iNiemeiyA8IHdhcmFqaVwgOwor5rOV5L6LIDwgaG91cmVpXCA7CivliLboo4EgPCBzZWlzYWlcIDsKK+WNl+aWuSA8IG5hbnBvdVwgOwor5YyX5rW3IDwgaG9ra2FpXCA7Civlv6DmhJsgPCBjaHV1YWlcIDsKK+mHkeWToSA8IGtpbicnaW5cIDsKK+WNmOaWhyA8IHRhbmJ1blwgOwor56K65bqmIDwga2FrdWRvXCA7CivmsJHmnJsgPCBtaW5ib3VcIDsKK+iWhOWIqSA8IGhha3VyaVwgOwor56S+5LqkIDwgc2hha291XCA7Civlvq7mnI0gPCBiaWZ1a3VcIDsKK+axguaEmyA8IGt5dXVhaVwgOwor5Y2Y5pWwIDwgdGFuc3V1XCA7Civlv4XmkLogPCBoaWtrZWlcIDsKK+mHkeWTgSA8IGtpbnBpblwgOwor5Yqj562JIDwgcmV0dG91XCA7Civnm6TpnaIgPCBiYW5tZW5cIDsKK+WMoOawlyA8IHNob3VraVwgOwor5YuV55SjIDwgZG91c2FuXCA7Civlu7bntI0gPCBlbicnbm91XCA7CivnoJXniYcgPCBzYWloZW5cIDsKK+ecn+mAhiA8IG1hc2FrYVwgOwor5ZCM5L2TIDwgZG91dGFpXCA7CivmsrPljJcgPCBrYWhva3VcIDsKK+ekvuS4uyA8IHNoYXNodVwgOwor5Y2X5pSvIDwgbmFuc2hpXCA7Civlj6PlkLsgPCBrb3VmdW5cIDsKK+W8vueQtCA8IGRhbmtpblwgOwor5bir6ZaAIDwgc2hpbW9uXCA7CivmsJfml6kgPCBraWJheWFcIDsKK+aApeWgtCA8IGt5dXViYVwgOwor5ZCM5Ly0IDwgZG91aGFuXCA7CivpgKPooaEgPCByZW5rb3VcIDsKK+WPo+WQnyA8IGtvdWdpblwgOwor5rOV5Lq6IDwgaG91amluXCA7CivlhrfpnZkgPCByZWlzZWlcIDsKK+i/lOmHkSA8IGhlbmtpblwgOwor5Y+C5aCCIDwgc2FuZG91XCA7Civlv6vlvIEgPCBrYWliZW5cIDsKK+W/oOaBlSA8IGNodXVqb1wgOwor5Y+s5YufIDwgc2hvdWJvXCA7CivlkIjkvbUgPCBnb3VoZWlcIDsKK+WQkOS5syA8IHRvbnl1dVwgOwor5ZCN5Lq6IDwgbWVpamluXCA7CivlkIjkvZMgPCBnYXR0YWlcIDsKK+iWhOWFiSA8IGhha2tvdVwgOwor6JST5bu2IDwgbWFuJydlblwgOwor5b2T54S2IDwgdG91emVuXCA7Civlj43lmawgPCBoYW56ZWlcIDsKK+WOn+WvuCA8IGdlbnN1blwgOwor5ZCM5LuBIDwgZG91amluXCA7CivlkIzkurogPCBkb3VuaW5cIDsKK+WFuOm6lyA8IHRlbnJlaVwgOwor5ZCR5LiKIDwga291am91XCA7Civlt6Ppto8gPCBzdWRvcmlcIDsKK+WNgeacrCA8IGp1cHBvblwgOwor5buD6ImmIDwgaGFpa2FuXCA7CivmsZ/lsbEgPCBrb3V6YW5cIDsKK+W6p+iWrCA8IHpheWFrdVwgOwor6JCO57iuIDwgaXNodWt1XCA7Civph43lkIggPCBqdXVnb3VcIDsKK+W6g+iogCA8IGtvdWdlblwgOwor5buD6Ii5IDwgaGFpc2VuXCA7Civlu5DogqUgPCBreXV1aGlcIDsKK+WQjOS5lyA8IGRvdWpvdVwgOwor5b+c5oClIDwgb3VreXV1XCA7CivpgYroirggPCB5dXVnZWlcIDsKK+aui+eXlSA8IHphbmtvblwgOwor5YmN6JGXIDwgemVuY2hvXCA7Civoj5bokrIgPCBzaG91YnVcIDsKK+mHjuWOnyA8IG5vaGFyYVwgOwor5rG65aOKIDwga2Vra2FpXCA7Civljp/lrZAgPCBnZW5zaGlcIDsKK+avm+awiCA8IG1vdXNlblwgOwor5Y2g5ougIDwgc2Vua3lvXCA7CivliKXoo70gPCBiZXNzZWlcIDsKK+W8iuekviA8IGhlaXNoYVwgOwor5q+U5rOBIDwgaGlreW91XCA7CivpgI/oppYgPCB0b3VzaGlcIDsKK+WNiuaVsCA8IGhhbnN1dVwgOwor6Yac5aWzIDwgc2h1dWpvXCA7Civlirnnm64gPCBraWtpbWVcIDsKK+awkeaUvyA8IG1pbnNlaVwgOwor6bO056a9IDwgbWVpa2luXCA7CivmsJHmlL4gPCBtaW5wb3VcIDsKK+i/kemDtyA8IGtpbmdvdVwgOwor6YWS5omLIDwgc2FrYXRlXCA7Civov5TpgoQgPCBoZW5rYW5cIDsKK+W8k+efoiA8IHl1bWl5YVwgOwor5YmN6I+cIDwgemVuc2FpXCA7Civlj43llY8gPCBoYW5tb25cIDsKK+WHpumBhyA8IHNob2d1dVwgOwor5b+D5oqAIDwgc2hpbmdpXCA7CivliJ3oposgPCBzaG9rZW5cIDsKK+asoOiIqiA8IGtla2tvdVwgOwor55uX6Zu7IDwgdG91ZGVuXCA7Civlt6jpr6ggPCBreW9nZWlcIDsKK+ayg+WcnyA8IHlva3Vkb1wgOwor5be76aaWIDwga2Fuc2h1XCA7Civlh7rotrMgPCBkZWFzaGlcIDsKK+aui+eUnyA8IHphbnNlaVwgOwor5YyX5qynIDwgaG9rdW91XCA7Civnm5fpm6MgPCB0b3VuYW5cIDsKK+WKoOemhCA8IGthcm9rdVwgOwor5Y+35L+4IDwgZ291aG91XCA7CivljbHmgKUgPCBraWt5dXVcIDsKK+WJm+iHhiA8IGdvdW9rdVwgOwor5by+54mHIDwgZGFucGVuXCA7CivnnIzpgZMgPCBrZW5kb3VcIDsKK+WNs+W/nCA8IHNva3VvdVwgOwor5q2m56WeIDwgYnVzaGluXCA7Civov5TpgIEgPCBoZW5zb3VcIDsKK+W+qeaUuSA8IGZ1a2thaVwgOwor6YeR5YmbIDwga29uZ291XCA7CivluaPosqIgPCBoZWlrb3VcIDsKK+mFjeaJgCA8IGhhaXNob1wgOwor5Y215b2iIDwgcmFua2VpXCA7Civph5HliLggPCBraW5rZW5cIDsKK+mFlOaFiyA8IHN1aXRhaVwgOwor5beo6a2BIDwga3lva2FpXCA7CivolYPlnLAgPCBiYW5jaGlcIDsKK+WNgeaVsCA8IGp1dXN1dVwgOwor5rG95ZynIDwga2lhdHN1XCA7Civlh6HpgIAgPCBib250YWlcIDsKK+mBlOiAhSA8IHRhc3NoYVwgOwor5b6T5p2lIDwganV1cmFpXCA7CivpgbjnrqEgPCBzZW5rYW5cIDsKK+WIhuitsiA8IGJ1bmpvdVwgOwor5Y+45LyaIDwgc2hpa2FpXCA7CivlvqHmlpkgPCBnb3J5b3VcIDsKK+WGhumrmCA8IGVuZGFrYVwgOwor6L+R6L66IDwga2lucGVuXCA7Civlj6PlhoUgPCBrb3VuYWlcIDsKK+WHuuiyuyA8IHNodXBwaVwgOwor6YeR5YagIDwga2lua2FuXCA7CivljbDlvaIgPCBpbmd5b3VcIDsKK+WPuOS7pCA8IHNoaXJlaVwgOwor6YeN5YiRIDwganV1a2VpXCA7Civov73oqLQgPCB0c3Vpc29cIDsKK+WPt+S7pCA8IGdvdXJlaVwgOwor5Yqg56GrIDwga2FyeXV1XCA7CivliZvog4YgPCBnb3V0YW5cIDsKK+mHkeWFtyA8IGthbmFndVwgOwor5Y+O5Y+XIDwgc2h1dWp1XCA7CivphY3mha4gPCBoYWlyeW9cIDsKK+i/t+irliA8IG1laXJvblwgOwor5q+O5q+OIDwgbWFpbWFpXCA7Civov73oqJggPCB0c3Vpa2lcIDsKK+edoeiTriA8IHN1aXJlblwgOwor5b+D5oSPIDwgc2hpbicnaVwgOwor5Ymy57eaIDwga2Fzc2VuXCA7CivliIfoq4wgPCBzZWtrYW5cIDsKK+W/mOW5tCA8IGJvdW5lblwgOwor5Y2z5bqnIDwgc29rdXphXCA7Civlt7vpoK0gPCBrYW50b3VcIDsKK+WKueeUqCA8IGtvdXlvdVwgOwor6JKy5p+zIDwgaG9yeXV1XCA7CivmgZLkvosgPCBrb3VyZWlcIDsKK+WPsuS8nSA8IHNoaWRlblwgOwor5b+N5b6TIDwgbmluanV1XCA7Civphbflr5IgPCBrb2trYW5cIDsKK+WLh+eMmyA8IHl1dW1vdVwgOwor5q+s5p6cIDwga3l1dWthXCA7CivojbfotrMgPCBuaWFzaGlcIDsKK+W4uOmBkyA8IGpvdWRvdVwgOwor5YiG6KmeIDwgYnVuc2hpXCA7CivmsrvkubEgPCBjaGlyYW5cIDsKK+WNteW3oyA8IHJhbnNvdVwgOwor5q2755SjIDwgc2hpemFuXCA7CivmrbvnlJ8gPCBzaGlzZWlcIDsKK+WNmuaEmyA8IGhha3VhaVwgOwor5bi46YCjIDwgam91cmVuXCA7CivlhpLpoK0gPCBib3V0b3VcIDsKK+aAp+WQkSA8IHNlaWtvdVwgOwor5biw6YO3IDwga2lreW91XCA7CivmsLTlubMgPCBzdWloZWlcIDsKK+ayu+S4liA8IGNoaXNlaVwgOwor5byV55SoIDwgaW4nJ3lvdVwgOwor6a6u6bqXIDwgc2VucmVpXCA7Civnm67ph5ggPCBtZWt1Z2lcIDsKK+WPjeWLlSA8IGhhbmRvdVwgOwor5YmN6IWVIDwgbWFldWRlXCA7Civlj7LkuZcgPCBzaGlqb3VcIDsKK+WIhuinoyA8IGJ1bmthaVwgOwor5Y+C5ZCRIDwgc2Fua291XCA7Civlj7PkuIogPCBtaWdpdWVcIDsKK+mBo+exsyA8IGtlbmJlaVwgOwor5Y+k5L+XIDwga296b2t1XCA7Civlvozmma8gPCBrb3VrZWlcIDsKK+WOluWkpyA8IGJvdWRhaVwgOwor6YCA6KGMIDwgdGFpa291XCA7Civlj6/kuZ8gPCBrYW5hcmlcIDsKK+W6p+iIiCA8IHpha3lvdVwgOwor5q2j55y8IDwgc2VpZ2FuXCA7CivlvoXmnJsgPCB0YWlib3VcIDsKK+ejgeWjgSA8IGppaGVraVwgOwor5beu6aGNIDwgc2FnYWt1XCA7CivmrovniYcgPCB6YW5wZW5cIDsKK+WPpeS9nCA8IGt1c2FrdVwgOwor5b6M5piGIDwga291a29uXCA7CivmraPnm64gPCBtYXNhbWVcIDsKK+efoueOiSA8IHlhZGFtYVwgOwor5Y2B5oyHIDwganVzc2hpXCA7CivljZjmgKcgPCB0YW5zZWlcIDsKK+avm+aguSA8IG1vdWtvblwgOwor6JK45pWjIDwgam91c2FuXCA7CivlvozmlrkgPCBrb3Vob3VcIDsKK+mFjeW9kyA8IGhhaXRvdVwgOwor5Yqg55mCIDwga2FyeW91XCA7Civlvovml4sgPCByaXNzZW5cIDsKK+WPo+S8nSA8IGtvdWRlblwgOwor6YWS5bqXIDwgc2h1dGVuXCA7CivluKvpgZMgPCBzaGlkb3VcIDsKK+W6leiNtyA8IHNva29uaVwgOwor5YiK6KGMIDwga2Fua291XCA7Civlh7roqLQgPCBzaHVzc29cIDsKK+WNmuW+kiA8IGJha3V0b1wgOwor56CC5rygIDwgc2FiYWt1XCA7CivmgKXli58gPCBreXV1Ym9cIDsKK+W8seeBqyA8IHlvd2FiaVwgOwor5YmN6ICFIDwgemVuc2hhXCA7CivmgKXli5kgPCBreXV1bXVcIDsKK+W3qOmgrSA8IGt5b3RvdVwgOwor6JGJ54mpIDwgaGFtb25vXCA7CivliIboooIgPCBidW5iZWlcIDsKK+WGhumggiA8IGVuY2hvdVwgOwor5rCX5oGvIDwga2lzb2t1XCA7CivlvozmlLsgPCBrb3Vrb3VcIDsKK+mzqeebriA8IGhhdG9tZVwgOwor6YeN5L2TIDwganV1dGFpXCA7CivljrPlkb0gPCBnZW5tZWlcIDsKK+S4i+S4luipsSA8IGdlc2V3YVwgOwor5YaS6Zm6IDwgYm91a2VuXCA7Civljp/lm6AgPCBnZW4nJ2luXCA7CivlhoXpoIUgPCBuYWlrb3VcIDsKK+WJjee/hSA8IHplbnNoaVwgOwor5bqm6IO4IDwgZG9reW91XCA7CivnnIvosqsgPCBrYW5rYW5cIDsKK+WNmuW8lSA8IGhha3VpblwgOwor5qmf6ZW3IDwga2ljaG91XCA7CivlibLnrKYgPCB3YXJpZnVcIDsKK+awl+aApyA8IGtpc2hvdVwgOwor5Y2B5oiSIDwgamlra2FpXCA7Civlj5fkv6EgPCBqdXNoaW5cIDsKK+ebrumAlCA8IG1va3V0b1wgOwor6L6y6YGTIDwgbm91ZG91XCA7Civnn7PngbAgPCBzZWtrYWlcIDsKK+awkeaDhSA8IG1pbmpvdVwgOwor5Y6a5ZywIDwgYXRzdWppXCA7Civph43ku7sgPCBqdXVuaW5cIDsKK+i/juizkyA8IGdlaWhpblwgOwor5Y6z5ZCbIDwgZ2Vua3VuXCA7CivliY3nva4gPCB6ZW5jaGlcIDsKK+mHjeS7oyA8IGp1dWRhaVwgOwor5YiX6JepIDwgcmVwcGFuXCA7Civps6Xnm64gPCB0b3JpbWVcIDsKK+WNmOW8gSA8IHRhbmJlblwgOwor5q615q61IDwgZGFuZGFuXCA7CivmsLTlsYsgPCBtaXp1eWFcIDsKK+W+gOaYlCA8IG91c2VraVwgOwor6YeR5Li7IDwga2luc2h1XCA7CivnoLTmoLwgPCBoYWtha3VcIDsKK+WNg+aFriA8IHNlbnJ5b1wgOwor5Y675YuiIDwga3lvc2VpXCA7CivlvZPmrbMgPCB0b3VzYWlcIDsKK+earumdqSA8IGhpa2FrdVwgOwor5YaF6Z2iIDwgbmFpbWVuXCA7Civlt7fplpMgPCBrb3VrYW5cIDsKK+WGt+mFkiA8IHJlaXNodVwgOwor5Y215a2QIDwgcmFuc2hpXCA7CivmgKrlhYkgPCBrYWlrb3VcIDsKK+WFvOmhjCA8IGtlbmRhaVwgOwor5qqA6YKjIDwgZGFuJyduYVwgOwor6YeO5LitIDwgbm9uYWthXCA7CivpgKDoiLkgPCB6b3VzZW5cIDsKK+WPguWGhSA8IHNhbmRhaVwgOwor5rC05a6zIDwgc3VpZ2FpXCA7CivlvrnlupUgPCB0ZXR0ZWlcIDsKK+awl+W8sSA8IGtpeW93YVwgOwor5Y+b5LmxIDwgaGFucmFuXCA7CivlvqHmhbYgPCBneW9rZWlcIDsKK+ecjOitpiA8IGtlbmtlaVwgOwor5bid6YGTIDwgdGVpZG91XCA7CivliKXojZggPCBiZXNzb3VcIDsKK+eigeW4rSA8IGdvc2VraVwgOwor5Yid6JGJIDwgc2hveW91XCA7CivlvbzmlrkgPCBrYW5hdGFcIDsKK+ebn+mCpiA8IG1laWhvdVwgOwor5b+r5aCxIDwga2FpaG91XCA7Civljq3ljq0gPCBpeWFpeWFcIDsKK+awtOWtkCA8IG1penVnb1wgOwor5YaN6ZaLIDwgc2Fpa2FpXCA7CivpgaDnp7AgPCBlbnNob3VcIDsKK+WMl+aWuSA8IGhvcHBvdVwgOwor5YaF6ZmjIDwgbmFpamluXCA7CivljYrlvoQgPCBoYW5rZWlcIDsKK+iRm+a5ryA8IGt1enV5dVwgOwor6a6u6a2aIDwgc2VuZ3lvXCA7CivlhrfpgYcgPCByZWlndXVcIDsKK+WNiuW9sSA8IGhhbicnZWlcIDsKK+WPjeS+iyA8IGhhbnJlaVwgOwor5bej6ZubIDwgc3VoaW5hXCA7Civov6bmpbznvoUgPCBrYXJ1cmFcIDsKK+W+ruW8sSA8IGJpamFrdVwgOwor6YO35p2RIDwgZ291c29uXCA7CivnoazmgKcgPCBrb3VzZWlcIDsKK+mFkuWxiyA8IHNha2F5YVwgOwor5YmN57eoIDwgemVucGVuXCA7CivpgIDolLUgPCB0YWl6b3VcIDsKK+WHneitsCA8IGd5b3VnaVwgOwor5YmN57eaIDwgemVuc2VuXCA7Civlt53pnaIgPCBrYXdhbW9cIDsKK+WOn+WTgSA8IGdlbnBpblwgOwor5byV54WnIDwgaW5zaG91XCA7CivlhajppKggPCB6ZW5rYW5cIDsKK+i/keipoCA8IGtpbicnZWlcIDsKK+iSmeaYpyA8IG1vdW1haVwgOwor5q6L5ruTIDwgemFuc2hpXCA7CivmspnkuJggPCBzYWt5dXVcIDsKK+atu+eCuSA8IHNoaXRlblwgOwor55u46LKMIDwgc291Ym91XCA7CivpgIHokawgPCBzb3Vzb3VcIDsKK+eZvemtlCA8IGhha3VtYVwgOwor5Y2c5bGFIDwgYm9ra3lvXCA7Civnoo3lrZAgPCBnYWlzaGlcIDsKK+avjuaZqSA8IG1haWJhblwgOwor5Y6z5YasIDwgZ2VudG91XCA7Civlj4vkurogPCB5dXVqaW5cIDsKK+ebiumHkSA8IGVraWtpblwgOwor5Yq054G9IDwgcm91c2FpXCA7CivljZflsrggPCBuYW5nYW5cIDsKK+aJi+W/oOWunyA8IHRlbWFtZVwgOwor552A6I23IDwgY2hha2thXCA7Civokabmr5sgPCBhc2hpZ2VcIDsKK+asoeesrCA8IHNoaWRhaVwgOwor5Y6a5ZGzIDwgYXRzdW1pXCA7CivlhbXpm6MgPCBoZWluYW5cIDsKK+WNs+WknCA8IHNva3V5YVwgOwor5b2i5pyoIDwga2F0YWdpXCA7CivluKvos4cgPCBzaGlzaGlcIDsKK+WNl+WxsSA8IG5hbnphblwgOwor55yL6KaWIDwga2Fuc2hpXCA7Civov5HoppYgPCBraW5zaGlcIDsKK+W3jOmgrSA8IGdhbnRvdVwgOwor6Iy26YGTIDwgY2hhZG91XCA7CivmrKHnq6AgPCBqaXNob3VcIDsKK+WFt+mZsyA8IGd1Y2hpblwgOwor5oCq5Lq6IDwga2FpamluXCA7Civnmbvpq5ggPCB0b3Vrb3VcIDsKK+ebpOi4niA8IGJhbmt5b1wgOwor5YW16ZqKIDwgaGVpdGFpXCA7CivpgKPnvbIgPCByZW5zaG9cIDsKK+mnhOa0kuiQvSA8IGRhamFyZVwgOwor5q2j54qvIDwgc2VpaGFuXCA7CivljZjlsIQgPCB0YW5zaGFcIDsKK+WPguS8miA8IHNhbmthaVwgOwor5YqH55S7IDwgZ2VraWdhXCA7Civlhajpn7MgPCB6ZW4nJ29uXCA7CivljbXloZQgPCByYW50b3VcIDsKK+WFmummliA8IHRvdXNodVwgOwor6YGO56ewIDwga2FzaG91XCA7CivljYHlubIgPCBqaWtrYW5cIDsKK+iLsemgmCA8IGVpcnlvdVwgOwor5Y2R5bGsIDwgaGl6b2t1XCA7Civlt6jpkJggPCBvb2dhbmVcIDsKK+aoqumgmCA8IG91cnlvdVwgOwor55+z5rK5IDwgc2VraXl1XCA7Civlu7vnirYgPCBrYWlqb3VcIDsKK+S4i+mnhOWxiyA8IGdldGF5YVwgOwor6YGU56OoIDwgZGFydW1hXCA7Civljp/li5UgPCBnZW5kb3VcIDsKK+WNl+WuiyA8IG5hbnNvdVwgOwor5byx5rCXIDwgeW93YWtpXCA7CivlhajpnaIgPCB6ZW5tZW5cIDsKK+W+oeW5uCA8IG1peXVraVwgOwor5b6Y5b6KIDwgaGFpa2FpXCA7Civpg7XmlL8gPCB5dXVzZWlcIDsKK+WNiuWztiA8IGhhbnRvdVwgOwor5Y2R5bCPIDwgaGlzaG91XCA7Civnmb3ppqwgPCBoYWt1YmFcIDsKK+ebuOirhyA8IHNvdWRhblwgOwor5qyd56mNIDwgdXNzZWtpXCA7CivlvoHmiKYgPCBzZWlzZW5cIDsKK+WJsuebriA8IHdhcmVtZVwgOwor5YWo6ZyKIDwgemVucmVpXCA7CivpgKPnuYsgPCByZW5rZWlcIDsKK+W9k+advyA8IGF0ZWl0YVwgOwor5Y+C5LiOIDwgc2FuJyd5b1wgOwor5b6M5oKUIDwga291a2FpXCA7Civlj4LkuIogPCBzYW5qb3VcIDsKK+ayiOS4iyA8IGNoaW5rYVwgOwor55yf6JavIDwgc2hpbmpvXCA7Civlh73ok4sgPCBrYW5nYWlcIDsKK+WOn+WInSA8IGdlbnNob1wgOwor5YmN56uvIDwgemVudGFuXCA7Civlv6vlk4kgPCBrYWlzYWlcIDsKK+awl+WtpiA8IGtpZ2FrdVwgOwor5rC05Z+fIDwgc3VpaWtpXCA7Civlvq7lsJEgPCBiaXNob3VcIDsKK+WFqOmaiiA8IHplbnRhaVwgOwor6YCB6Ie0IDwgc291Y2hpXCA7CivpgKPntr8gPCByZW5tZW5cIDsKK+WJteeXlSA8IHNvdWtvblwgOwor5qyy55uuIDwgeW9rdW1lXCA7CivlvpfluqYgPCB0b2t1ZG9cIDsKK+W+k+W8nyA8IGp1dXRlaVwgOwor6YOo5pePIDwgYnV6b2t1XCA7CivolYPkurogPCBiYW5qaW5cIDsKK+iPnOeoriA8IG5hdGFuZVwgOwor55u06Ki0IDwgamlraXNvXCA7Civljp/lhbggPCBnZW50ZW5cIDsKK+mxl+iMjiA8IHJpbmtlaVwgOwor5YWl6ZmiIDwgbnl1dWluXCA7Civnn63mr5sgPCB0YW5tb3VcIDsKK+iNkuiqlSA8IGtvdXRhblwgOwor5Yid6ICBIDwgc2hvcm91XCA7CivphbflkI8gPCBrb2t1cmlcIDsKK+mAo+e0ryA8IHJlbnJ1aVwgOwor6JWD5Li7IDwgYmFuc2h1XCA7CivluKvoqJMgPCBzaGlrdW5cIDsKK+aoqemZkCA8IGtlbmdlblwgOwor5YuY5qScIDwga2Fua2VuXCA7CivpgbrniakgPCBpYnV0c3VcIDsKK+WHhuiosSA8IGp1bmt5b1wgOwor6YWS5aC0IDwgc2FrYWJhXCA7CivlhajplosgPCB6ZW5rYWlcIDsKK+auieatuyA8IGp1bnNoaVwgOwor5Y6f5YOPIDwgZ2Vuem91XCA7Civnm67oqLEgPCBtZW1vdG9cIDsKK+awtOWaoiA8IHN1aW5vdVwgOwor5b2T5pa5IDwgdG91aG91XCA7Civlh7rojbcgPCBzaHVra2FcIDsKK+ecn+iPsCA8IG1ha29tb1wgOwor5Y2X5aSpIDwgbmFudGVuXCA7Civnm67op5IgPCBtZWthZG9cIDsKK+WGjemBuCA8IHNhaXNlblwgOwor5buD55ukIDwgaGFpYmFuXCA7CivnoavlrokgPCByeXV1YW5cIDsKK+apn+i7uCA8IGtpamlrdVwgOwor5Yui5pybIDwgc2VpYm91XCA7CivmqKnploAgPCBrZW5tb25cIDsKK+mKmOOAhSA8IG1laW1laVwgOwor5YuY5qGIIDwga2FuJydhblwgOwor5b6M5bm0IDwga291bmVuXCA7CivljLvlsYAgPCBpa3lva3VcIDsKK+WGjemBiiA8IHNhaXl1dVwgOwor56Cy5omLIDwgaG91c2h1XCA7Civnmb3pnLIgPCBoYWt1cm9cIDsKK+iKsemzpSA8IGthY2hvdVwgOwor6L+96IKlIDwgdHN1aWhpXCA7Civlv7XlhpkgPCBuZW5zaGFcIDsKK+efpeatryA8IGNoaXNoaVwgOwor5biG6LWwIDwgaGFuc291XCA7CivlvoDlvqkgPCBvdWZ1a3VcIDsKK+efs+amtCA8IHpha3Vyb1wgOwor55m96ZuyIDwgaGFrdXVuXCA7Civlho3pgIEgPCBzYWlzb3VcIDsKK+WFiemgrSA8IGtvdXRvdVwgOwor5b6L5birIDwgcmlzc2hpXCA7CivmhIjjgIUgPCBpeW9peW9cIDsKK+WFtemLkiA8IGhlaWhvdVwgOwor5Ye66IqxIDwgZGViYW5hXCA7CivmranmuKwgPCBob3Nva3VcIDsKK+WFiOmgrSA8IHNlbnRvdVwgOwor5bqD57iBIDwgaGlyb2VuXCA7CivmtarjgIUgPCByb3Vyb3VcIDsKK+WKm+a8lCA8IHJpa2llblwgOwor6YKq5qyyIDwgamF5b2t1XCA7Civpp4Tms5XonrogPCBkYWJvcmFcIDsKK+W/g+WcnyA8IHNoaW5kb1wgOwor5b6u5aaZIDwgYmlteW91XCA7CivlvoTluq0gPCBrZWl0ZWlcIDsKK+WIpee0mSA8IGJlc3NoaVwgOwor5b+c5Y+sIDwgb3VzaG91XCA7Civlh7roiLkgPCBkZWZ1bmVcIDsKK+mFt+WIkSA8IGtva2tlaVwgOwor5b+r5YiAIDwga2FpdG91XCA7CivlhYjpnq0gPCBzZW5iZW5cIDsKK+W3p+mBhSA8IGtvdWNoaVwgOwor5bqn56SBIDwgemFzaG91XCA7Civpgbjngq0gPCBzZW50YW5cIDsKK+W8gea4iCA8IGJlbnNhaVwgOwor5Y2K5aSpIDwgaGFudGVuXCA7Civlv5flkJEgPCBzaGlrb3VcIDsKK+WHuuiHjSA8IGRlYmVzb1wgOwor5b235b6oIDwgaG91a291XCA7CivljYrlpJwgPCBoYW4nJ3lhXCA7CivliLbnqbogPCBzZWlrdXVcIDsKK+WOn+S6uiA8IGdlbmppblwgOwor5YaN6LuiIDwgc2FpdGVuXCA7CivlvaLmiJAgPCBrZWlzZWlcIDsKK+W4guiyqSA8IHNoaWhhblwgOwor56Gd5a6JIDwgc2hvdWFuXCA7CivliJ3ntYwgPCBzaG9rZWlcIDsKK+WNiuWjiiA8IGhhbmthaVwgOwor5byU5q2MIDwgY2hvdWthXCA7Civov5HokZcgPCBraW5jaG9cIDsKK+iQveasviA8IHJha2thblwgOwor5YiH5769IDwga2lyaWhhXCA7CivnoZ3lrZAgPCBnYXJhc3VcIDsKK+W5uee3miA8IGthbnNlblwgOwor6YO95b+DIDwgdG9zaGluXCA7Civnorrkv50gPCBrYWt1aG9cIDsKK+ats+atsyA8IHNhaXNhaVwgOwor5YWF6Zu7IDwganV1ZGVuXCA7CivmsaDkuq0gPCBjaGl0ZWlcIDsKK+WGhei8qiA8IHVjaGl3YVwgOwor6YGL55SoIDwgdW4nJ3lvdVwgOwor55ub6KazIDwgc2Vpa2FuXCA7CivljYPlpJwgPCBzZW4nJ3lhXCA7Civluo/nq6AgPCBqb3Nob3VcIDsKK+WItuempiA8IHNlaWd5b1wgOwor5YiG572yIDwgYnVuc2hvXCA7CivlvaLmhYsgPCBrZWl0YWlcIDsKK+ehrOWkiSA8IGtvdWhlblwgOwor5YWI6ZmjIDwgc2VuamluXCA7Civlhazph5EgPCBrb3VraW5cIDsKK+mzpea4oSA8IGNob3R0b1wgOwor6YGF55WqIDwgb3NvYmFuXCA7Civlipvms7MgPCByaWtpZWlcIDsKK+ato+ayuSA8IHNob3V5dVwgOwor5Y2w5YyjIDwgaW5iYWtvXCA7CivljbPlirkgPCBzb2trb3VcIDsKK+iNt+iIuSA8IG5pYnVuZVwgOwor5bqD56+EIDwga291aGFuXCA7Civnn7PmnKggPCBpc2hpa2lcIDsKK+eiqeWEkiA8IHNla2lqdVwgOwor6JGX5pu4IDwgY2hvc2hvXCA7Civlt53ovrogPCBrYXdhYmVcIDsKK+mzqea0viA8IGhhdG9oYVwgOwor5q+N5b6hIDwgaGFoYWdvXCA7CivpgY7kv53orbcgPCBrYWhvZ29cIDsKK+mEreWjsCA8IHRlaXNlaVwgOwor56Cy5by+IDwgaG91ZGFuXCA7CivlvZPmiYAgPCB0b3VzaG9cIDsKK+ebm+ijhSA8IHNlaXNvdVwgOwor5rC05YuiIDwgc3Vpc2VpXCA7Civpg73luoEgPCB0b2Nob3VcIDsKK+WFremDqCA8IHJva3VidVwgOwor5q2i5rC0IDwgc2hpc3VpXCA7Civprq7pi60gPCBzZW4nJ2VpXCA7CivphZLlkI0gPCBzaHVtZWlcIDsKK+ebm+ihsCA8IHNlaXN1aVwgOwor5rCR5ZujIDwgbWluZGFuXCA7CivoirjpoqggPCBnZWlmdXVcIDsKK+W8puadkCA8IGdlbnphaVwgOwor5Yid562JIDwgc2hvdG91XCA7CivlhazpgrggPCBrb3V0ZWlcIDsKK+WNsOWIuyA8IGlua29rdVwgOwor5Ymy54O5IDwga2FwcG91XCA7Civok67lj7AgPCByZW5kYWlcIDsKK+ato+auvyA8IHNlaWRlblwgOwor5YaN6LKpIDwgc2FpaGFuXCA7CivliIfnt5ogPCBzZXNzZW5cIDsKK+WJo+eKtiA8IGtlbmpvdVwgOwor5Y215YaGIDwgcmFuJydlblwgOwor6YW35Ly8IDwga29rdWppXCA7CivliKXnqK4gPCBiZXNzaHVcIDsKK+edpeedqCA8IGhlaWdlaVwgOwor6JGJ5p+EIDwgeW91aGVpXCA7CivokZfmmI4gPCBjaG9tZWlcIDsKK+W+k+WniSA8IGp1dXNoaVwgOwor5q665oSPIDwgc2F0c3VpXCA7Civovp7ooaggPCBqaWh5b3VcIDsKK+mdnuWWtuWIqSA8IGhpZWlyaVwgOwor5YWs6YG4IDwga291c2VuXCA7CivlvpPlprkgPCBqdXVtYWlcIDsKK+WIqeemjyA8IHJpZnVrdVwgOwor57WM57ev5YSAIDwga2VpaWdpXCA7CivljaDlj5YgPCBzZW5zaHVcIDsKK+avjuW5tCA8IG1haW5lblwgOwor5q6L5pqRIDwgemFuc2hvXCA7CivlhazpgZMgPCBrb3Vkb3VcIDsKK+ato+atoyA8IHNlaXNlaVwgOwor5bmz57GzIDwgaGVpYmVpXCA7CivphY3lkIggPCBoYWlnb3VcIDsKK+awtOWIhiA8IHN1aWJ1blwgOwor55yf576OIDwgc2hpbmJpXCA7CivluYToiI4gPCBha3VzaGFcIDsKK+mtmumxlyA8IGd5b3JpblwgOwor55+i5p+EIDwgeWFnYXJhXCA7CivlhaXpg6ggPCBueXV1YnVcIDsKK+efs+aWpyA8IHNla2lmdVwgOwor5YaX6KuHIDwgam91ZGFuXCA7CivmsLTlhrcgPCBzdWlyZWlcIDsKK+efruaYnyA8IHdhaXNlaVwgOwor6JK85aSpIDwgc291dGVuXCA7CivlhajpgZMgPCB6ZW5kb3VcIDsKK+W5vOerpSA8IHlvdWRvdVwgOwor6L2f6L2fIDwgZ291Z291XCA7CivnnaHnnKAgPCBzdWltaW5cIDsKK+W3qOizhyA8IGt5b3NoaVwgOwor6JGJ5pu4IDwgaGFnYWtpXCA7CivljIXluK8gPCBob3V0YWlcIDsKK+WOhOS7iyA8IHlha2thaVwgOwor5rCR5Za2IDwgbWluJydlaVwgOwor5YuH5patIDwgeXV1ZGFuXCA7Civli5Xmj7ogPCBkb3V5b3VcIDsKK+auv+W+oSA8IHRvbm9nb1wgOwor5Y2B5ZueIDwganVra2FpXCA7CivljYHlm5sgPCBqdXV5b25cIDsKK+W3qOiyoSA8IGt5b3phaVwgOwor5Y2U5ZKMIDwga3lvdXdhXCA7Civlub3nqpMgPCB5dXVzb3VcIDsKK+W3nei3ryA8IGthd2FqaVwgOwor5YuH5pWiIDwgeXV1a2FuXCA7Civlt6josaEgPCBreW96b3VcIDsKK+WGl+iogCA8IGpvdWdlblwgOwor5qyg54mHIDwga2FrZXJhXCA7CivpgKPnm58gPCByZW5tZWlcIDsKK+W5vOeomiA8IHlvdWNoaVwgOwor5b6M5aSpIDwga291dGVuXCA7CivlhbfotrMgPCBndXNva3VcIDsKK+mxl+eyiSA8IHJpbnB1blwgOwor5YyW5a2mIDwga2FnYWt1XCA7CivpgbXms5UgPCBqdW5wb3VcIDsKK+eZvemHkSA8IGhha2tpblwgOwor6YGp5ripIDwgdGVraW9uXCA7CivljZfljYogPCBuYW5oYW5cIDsKK+mAuOeQgyA8IGlra3l1dVwgOwor6YWN5YmkIDwgaGFpemFpXCA7Civmra/moLkgPCBzaGlrb25cIDsKK+WNkuWOuyA8IHNva2t5b1wgOwor5YaN6KqVIDwgc2FpdGFuXCA7CivpgbjmsJEgPCBzZW5taW5cIDsKK+W4guihlyA8IHNoaWdhaVwgOwor5bWp6auYIDwgc3V1a291XCA7CivlhYjpi5IgPCBzZW5wb3VcIDsKK+ecn+e2vyA8IG1hd2F0YVwgOwor5qyj54S2IDwga2luemVuXCA7CivlkZHlhbXooZsgPCBub25iZWVcIDsKK+W+jOWhtSA8IGtvdWppblwgOwor5YWo6LuNIDwgemVuZ3VuXCA7CivpgIHnqL8gPCBzb3Vrb3VcIDsKK+WGt+iUtSA8IHJlaXpvdVwgOwor6YWN5YiGIDwgaGFpYnVuXCA7Civlvqnlk6EgPCBmdWt1aW5cIDsKK+WHuue0jSA8IHN1aXRvdVwgOwor5Yem572uIDwgc2hvY2hpXCA7Civlho3oqKogPCBzYWlob3VcIDsKK+iNieiRiSA8IGt1c2FiYVwgOwor5bm056iOIDwgbmVuemVpXCA7Civlho3oqIIgPCBzYWl0ZWlcIDsKK+iLm+mFtyA8IGtha29rdVwgOwor5by35omTIDwga3lvdWRhXCA7CivpgqrmlZkgPCBqYWt5b3VcIDsKK+efouaWhyA8IHlhYnVtaVwgOwor5YaF6KuHIDwgbmFpZGFuXCA7CivmsI/lkI0gPCBzaGltZWlcIDsKK+WFt+ixoSA8IGd1c2hvdVwgOwor55yf57SFIDwgc2hpbmt1XCA7CivljZPlirkgPCB0YWtrb3VcIDsKK+iJpum9oiA8IGthbnJlaVwgOwor5Yuk5oCgIDwga2ludGFpXCA7CivljbPku4ogPCBzb2trb25cIDsKK+mAo+eVqiA8IHJlbmJhblwgOwor5b605YufIDwgY2hvdWJvXCA7CivpgqbmlocgPCBob3VidW5cIDsKK+W9k+W6lyA8IHRvdXRlblwgOwor5qyg54K5IDwga2V0dGVuXCA7CivlvIrmnZEgPCBoZWlzb25cIDsKK+W9k+W5tCA8IHRvdW5lblwgOwor5bm056WtIDwgbmVuc2FpXCA7CivlvbzlpbMgPCBrYW5vam9cIDsKK+iNt+e4hCA8IG5pbmF3YVwgOwor5q275paHIDwgc2hpYnVuXCA7CivojY/oi5IgPCBqaW56ZW5cIDsKK+ats+aZqSA8IHNhaWJhblwgOwor5YyF5a65IDwgaG91eW91XCA7CivovrLoirggPCBub3VnZWlcIDsKK+W5tOekvCA8IG5lbnJlaVwgOwor5byU5peXIDwgY2hvdWtpXCA7CivpgIDnpL4gPCB0YWlzaGFcIDsKK+WNiuWNiiA8IGhhbmhhblwgOwor5Yil55uDIDwgYmVwcGFpXCA7CivpgY7mv4AgPCBrYWdla2lcIDsKK+WGheiokyA8IG5haWt1blwgOwor55qH6LuNIDwga291Z3VuXCA7CivmsLTku5kgPCBzdWlzZW5cIDsKK+WNtOS4iyA8IGt5YWtrYVwgOwor5LiN576p55CGIDwgZnVnaXJpXCA7Civlho3oo70gPCBzYWlzZWlcIDsKK+W8t+aFoiA8IGdvdW1hblwgOwor5biM6JaEIDwga2loYWt1XCA7CivljZjlhYMgPCB0YW5nZW5cIDsKK+mBoOa1hSA8IHRvb2FzYVwgOwor6L2G6L2kIDwgcm9rdXJvXCA7Civmr5LlqaYgPCBkb2t1ZnVcIDsKK+WNl+WFiSA8IG5hbmtvdVwgOwor6YWN5YG2IDwgaGFpZ3V1XCA7CivlhoXoprMgPCBuYWlrYW5cIDsKK+eZuumAgSA8IGhhc3NvdVwgOwor5b6h5ZGKIDwgb3RzdWdlXCA7CivlhoXopqcgPCBuYWlyYW5cIDsKK+mBoOa0iyA8IGVuJyd5b3VcIDsKK+W8vuaApyA8IGRhbnNlaVwgOwor5YaF6KaLIDwgbmFpa2VuXCA7CivlvaLlrrkgPCBrZWl5b3VcIDsKK+acieaEj+W3riA8IHl1dWlzYVwgOwor5by35oOFIDwgZ291am91XCA7CivljYPljYMgPCBjaGlkamlcIDsKK+i/kee4gSA8IGtpbicnZW5cIDsKK+ecn+euhyA8IHNoaW5rb1wgOwor6a2a6aGeIDwgZ3lvcnVpXCA7Civli4fmiKYgPCB5dXVzZW5cIDsKK+m2j+WPoyA8IGtlaWtvdVwgOwor5bi4572uIDwgam91Y2hpXCA7CivljZLlhYggPCBzb3NzZW5cIDsKK+mBoOayiCA8IGVuY2hpblwgOwor5q2j5pysIDwgc2VpaG9uXCA7CivmraPmnKggPCBtYXNha2lcIDsKK+WFqOiyjCA8IHplbmJvdVwgOwor6YOo5bCGIDwgYnVzaG91XCA7CivlhYjpgaMgPCBzZW5rZW5cIDsKK+ehq+WMliA8IHJ5dXVrYVwgOwor6YGh5rGCIDwgc29reXV1XCA7CivnnLznnrwgPCBnYW5rZW5cIDsKK+WNiuWIhiA8IGhhbnB1blwgOwor5YiG56S+IDwgYnVuc2hhXCA7CivmraPmm7ggPCBzZWlzaG9cIDsKK+WFpeiyuyA8IG55dXVoaVwgOwor55+t5omAIDwgdGFuc2hvXCA7CivljYjliLsgPCBnb2tva3VcIDsKK+WNoOS9jyA8IHNlbmp1dVwgOwor5beh6KanIDwganVucmFuXCA7CivmsJflhJggPCBraW1hbWFcIDsKK+W/jOS4rSA8IGtpY2h1dVwgOwor5YaF6KOFIDwgbmFpc291XCA7CivlvbnloLQgPCB5YWt1YmFcIDsKK+mtlOmiqCA8IG1ha2F6ZVwgOwor5Ye656qTIDwgZGVtYWRvXCA7Civnm67ohIIgPCBtZXlhbmlcIDsKK+WKqeaVmSA8IGpva3lvdVwgOwor6YWS5LuZIDwgc2h1c2VuXCA7Civpto/ljbUgPCBrZWlyYW5cIDsKK+ecn+eruSA8IG1hZGFrZVwgOwor55yL57WMIDwga2Fua2luXCA7Civlu7rmnZAgPCBrZW56YWlcIDsKK+eZuui7iiA8IGhhc3NoYVwgOwor5rCR5YW1IDwgbWlucGVpXCA7CivlvqnliIogPCBmdWtrYW5cIDsKK+WNiuWGhiA8IGhhbicnZW5cIDsKK+WLmOW9kyA8IGthbmRvdVwgOwor5byK5pS/IDwgaGVpc2VpXCA7CivljIjlpbQgPCBreW91ZG9cIDsKK+mFkuS5sSA8IHNodXJhblwgOwor55uy6ICFIDwgbW91c2hhXCA7Civlu4PmtrIgPCBoYWlla2lcIDsKK+W3puihqCA8IHNhaHlvdVwgOwor6YGF5rueIDwgY2hpdGFpXCA7CivliIDnpLwgPCB0b3VyZWlcIDsKK+W8geaYjiA8IGJlbm1laVwgOwor5b+D5LqLIDwgc2hpbmppXCA7Civli5jlvIEgPCBrYW5iZW5cIDsKK+assuawlyA8IHlva3VrZVwgOwor55+t5oWuIDwgdGFucnlvXCA7CivljYPliIYgPCBzZW5idW5cIDsKK+WKo+aVlyA8IHJlcHBhaVwgOwor5q+O5aSVIDwgbWFpeXV1XCA7CivnoLLlo7AgPCBob3VzZWlcIDsKK+WFiei8qiA8IGtvdXJpblwgOwor5Y2S5YCSIDwgc290dG91XCA7CivljZjkvZMgPCB0YW50YWlcIDsKK+eZvui2syA8IG11a2FkZVwgOwor5qyn5rSyIDwgb3VzaHV1XCA7Civli4XmhI8gPCBjaG9rdWlcIDsKK+WFrOirliA8IGtvdXJvblwgOwor5Y2B5YiGIDwganVwcHVuXCA7CivprZrpm7cgPCBneW9yYWlcIDsKK+WFiOi8qSA8IHNlbnBhaVwgOwor5bmz55uuIDwgaGlyYW1lXCA7Civpg7flo6sgPCBnb3VzaGlcIDsKK+atpOaWuSA8IGtvbmF0YVwgOwor5Ymj5rOVIDwga2VucG91XCA7CivojLbojLYgPCBjaGFjaGFcIDsKK+ato+aWuSA8IHNlaWhvdVwgOwor5q2m5pWZIDwgYnVreW91XCA7Civliarmr5sgPCBzZW5tb3VcIDsKK+mFjeS5lyA8IGhhaWpvdVwgOwor55+c5oyBIDwga3lvdWppXCA7CivovrLogJUgPCBub3Vrb3VcIDsKK+WNg+WGhiA8IHNlbicnZW5cIDsKK+WIneeUnyA8IHNob3NlaVwgOwor5YWs6KqNIDwga291bmluXCA7Civlt6HooYwgPCBqdW5rb3VcIDsKK+WMuuWKgyA8IGt1a2FrdVwgOwor5q2j5paHIDwgc2VpYnVuXCA7CivmrYzmoLwgPCBrYWtha3VcIDsKK+W5veeVjCA8IHl1dWthaVwgOwor5q2j5pWwIDwgc2Vpc3V1XCA7CivlvozlkbMgPCBhdG9hamlcIDsKK+egsuWhlCA8IGhvdXRvdVwgOwor56Gd5YyWIDwgc2hvdWthXCA7CivlhbzooYwgPCBrZW5rb3VcIDsKK+W9q+WhkSA8IGNob3Vzb1wgOwor5Y2B5YWoIDwganV1emVuXCA7CivlhazoqLEgPCBrb3VreW9cIDsKK+WNl+S6rCA8IG5hbmtpblwgOwor55+l5oWuIDwgY2hpcnlvXCA7CivmrbvmiYAgPCBzaGlzaG9cIDsKK+W5vOeUnyA8IHlvdXNlaVwgOwor6YGT5rCRIDwgZG91bWluXCA7CivljYrlgKQgPCBoYW4nJ25lXCA7CivmgrbjgIUgPCBtb25tb25cIDsKK+i/lOetlCA8IGhlbnRvdVwgOwor6Iy26ImyIDwgY2hhaXJvXCA7CivmqKnorIAgPCBrZW5ib3VcIDsKK+m2j+WGoCA8IHRvc2FrYVwgOwor55m+6LKoIDwgaHlha2thXCA7Civlu7vmlocgPCBrYWlidW5cIDsKK+WLgeaCjSA8IGtlaWthblwgOwor5YWD6LuNIDwgZ2VuZ3VuXCA7CivljYHlhIQgPCBqdXVva3VcIDsKK+W8leaJiyA8IGhpa2l0ZVwgOwor6a2U6ZqcIDwgbWFzaG91XCA7CivliIfnm64gPCBraXJlbWVcIDsKK+W8leaIuCA8IGhpa2lkb1wgOwor6Luf6aKoIDwgbmFucHV1XCA7CivnnLznlYwgPCBnYW5rYWlcIDsKK+iMtuiHvCA8IGNoYXVzdVwgOwor6YG45pu4IDwgc2Vuc2hvXCA7Civoi7HoqLMgPCBlaXlha3VcIDsKK+i7oumfsyA8IHRlbicnb25cIDsKK+aui+W9sSA8IHphbicnZWlcIDsKK+iKs+mGhyA8IGhvdWp1blwgOwor5bm055SjIDwgbmVuc2FuXCA7CivlubTnlJ8gPCBuZW5zZWlcIDsKK+WNg+WAjSA8IHNlbmJhaVwgOwor5buD5q6LIDwgaGFpemFuXCA7Civoia/ppqwgPCByeW91YmFcIDsKK+W5s+eUnyA8IGhlaXplaVwgOwor6YGK5rCRIDwgeXV1bWluXCA7CivokZvluIMgPCBrdXp1ZnVcIDsKK+W7g+atoiA8IGhhaXNoaVwgOwor6Lyq6LuiIDwgcmludGVuXCA7Civpq5jnt6/luqYgPCBrb3VpZG9cIDsKK+W4huiIuSA8IGhvYnVuZVwgOwor5Y2B5YCNIDwganV1YmFpXCA7CivliZvmr5sgPCBnb3Vtb3VcIDsKK+avjuWbniA8IG1haWthaVwgOwor5q+N5Zu9IDwgYm9rb2t1XCA7CivmsJHkurogPCBtaW5qaW5cIDsKK+ecn+eggiA8IG1hc2Fnb1wgOwor5Yqp5omLIDwgc3VrZXRlXCA7CivmraLmj5ogPCBzaGl5b3VcIDsKK+W5veeOhCA8IHl1dWdlblwgOwor6Iq46YGTIDwgZ2VpZG91XCA7CivliqDmjK8gPCBrYXNoaW5cIDsKK+ebm+iAhSA8IGpvdXNoYVwgOwor5b255ZOhIDwgeWFrdWluXCA7Civlvq7kubMgPCBiaW55dXVcIDsKK+ecjOeojiA8IGtlbnplaVwgOwor5YSq6YGHIDwgeXV1Z3V1XCA7Civnn7Plt6UgPCBzZWtrb3VcIDsKK+WGheiUtSA8IG5haXpvdVwgOwor5rCR5Li7IDwgbWluc2h1XCA7CivliJ3niq8gPCBzaG9oYW5cIDsKK+auv+WggiA8IGRlbmRvdVwgOwor5bq25rCRIDwgc2hvbWluXCA7CivnnqzmmYIgPCBzaHVuamlcIDsKK+WEqumAgCA8IHl1dXRhaVwgOwor5Ye555uuIDwga3Vib21lXCA7CivliqPmiY0gPCByZXNzYWlcIDsKK+i8qui3nSA8IHJpbmt5b1wgOwor6L+U56S8IDwgaGVucmVpXCA7CivliIDnl5UgPCB0b3Vrb25cIDsKK+mztOaIuCA8IG5hcnV0b1wgOwor5YuY5a6aIDwga2Fuam91XCA7CivlhoXokpkgPCBuYWltb3VcIDsKK+ebruezniA8IG1la3Vzb1wgOwor5bqn5rW0IDwgemF5b2t1XCA7CivmqJnoqp4gPCBoeW91Z29cIDsKK+eZveipsSA8IGhha3V3YVwgOwor5Yik54S2IDwgaGFuemVuXCA7CivnoILlrZAgPCBzdW5hZ29cIDsKK+aCoOOAhSA8IHl1dXl1dVwgOwor5Yq05b25IDwgcm91ZWtpXCA7CivojJfojbcgPCBteW91Z2FcIDsKK+ebruexoCA8IG1la2Fnb1wgOwor552A54mpIDwga2ltb25vXCA7Civou4rpoqggPCBzaGFmdXVcIDsKK+aomeiomCA8IGh5b3VraVwgOwor6aya6auvIDwgc2h1emVuXCA7CivliY3mrrUgPCB6ZW5kYW5cIDsKK+mBruaWrSA8IHNoYWRhblwgOwor6YGp5pmCIDwgdGVraWppXCA7CivojYnntJkgPCBzb3VzaGlcIDsKK+iQveW+jCA8IHJha3Vnb1wgOwor55uy566hIDwgbW91a2FuXCA7CivljYHkuIkgPCBqdXVzYW5cIDsKK+WNgeS4hyA8IGp1dW1hblwgOwor5q+S5ZGzIDwgZG9rdW1pXCA7CivokYnlt7sgPCBoYW1ha2lcIDsKK+W8teWtkCA8IGhhcmlrb1wgOwor55+z5bGLIDwgaXNoaXlhXCA7CivlvqHkuLsgPCBvbnVzaGlcIDsKK+mDveWQiCA8IHRzdWdvdVwgOwor5b6h5LitIDwgb25jaHV1XCA7CivoirHovKogPCBoYW5hd2FcIDsKK+W8geaFtiA8IGJlbmtlaVwgOwor5LiN6LKe5a+dIDwgZnV0ZW5lXCA7CivlhY3oqLEgPCBtZW5reW9cIDsKK+W5sueKryA8IGthbnBhblwgOwor5Ymq5p6dIDwgc2Vuc2hpXCA7CivoirHou7ggPCBrYWppa3VcIDsKK+W5veeEtiA8IHl1dXplblwgOwor5Ye555SwIDwga3Vib3RhXCA7Civoi6boobcgPCBrdWNodXVcIDsKK+eZuuimiyA8IGhha2tlblwgOwor5YWO6KeSIDwgdG9rYWt1XCA7CivlvZPlnLAgPCB0b3VjaGlcIDsKK+W5sueJqSA8IGhpbW9ub1wgOwor5bmz54mIIDwgaGVpaGFuXCA7Civoi6booYwgPCBrdWd5b3VcIDsKK+mvqOiEgiA8IGdlaXNoaVwgOwor5YaN6IiIIDwgc2Fpa291XCA7CivokL3luqYgPCBvY2hpZG9cIDsKK+egsuWPsCA8IGhvdWRhaVwgOwor5YaN6IeoIDwgc2FpcmluXCA7CivnnJ/nlLAgPCBzYW5hZGFcIDsKK+WKqeW9uSA8IGpveWFrdVwgOwor5q+O5Y+3IDwgbWFpZ291XCA7CivliqPmgKcgPCByZXNzZWlcIDsKK+ebruesiiA8IG1lemFydVwgOwor5q2v5b2iIDwgaGFnYXRhXCA7CivlvL7lpY8gPCBkYW5zb3VcIDsKK+WMheWQqyA8IGhvdWdhblwgOwor5buD5qChIDwgaGFpa291XCA7Civlvozkvr8gPCBrb3ViaW5cIDsKK+WMjeWMkCA8IGhvZnVrdVwgOwor6YOK5aSWIDwga291Z2FpXCA7CivlvLflp6YgPCBnb3VrYW5cIDsKK+eZveihoyA8IGJ5YWt1ZVwgOwor5beo6ImmIDwga3lva2FuXCA7CivpgLLmrakgPCBzaGlucG9cIDsKK+WHoeecvCA8IGJvbmdhblwgOwor5YOn6ZaAIDwgc291bW9uXCA7Civov5Tnm4MgPCBoZW5wYWlcIDsKK+W3peiKuCA8IGtvdWdlaVwgOwor6LuN6ZqKIDwgZ3VudGFpXCA7CivokL3lt64gPCByYWt1c2FcIDsKK+W3qOiIuSA8IGt5b3NlblwgOwor6bGX54q2IDwgcmluam91XCA7Civou43pmaMgPCBndW5qaW5cIDsKK+i8quismyA8IHJpbmtvdVwgOwor5q6L5a2YIDwgemFuem9uXCA7CivlubPnhLYgPCBoZWl6ZW5cIDsKK+WIh+eJhyA8IHNlcHBlblwgOwor5YyX5YWJIDwgaG9ra291XCA7CivmrablvrMgPCBidXRva3VcIDsKK+ecieebriA8IGJpbW9rdVwgOwor55y854K5IDwgZ2FudGVuXCA7Civli5XlpKkgPCBkb3V0ZW5cIDsKK+WKn+W+syA8IGt1ZG9rdVwgOwor5b6M5Lu2IDwga291a2VuXCA7CivoiabpmoogPCBrYW50YWlcIDsKK+atr+WMu+iAhSA8IGhhaXNoYVwgOwor6IuX6KOUIDwgYnlvdWVpXCA7CivliqDlvbkgPCBrYXlha3VcIDsKK+W+jOS7oyA8IGtvdWRhaVwgOwor6bGX54mHIDwgcmlucGVuXCA7CivlvIrlupcgPCBoZWl0ZW5cIDsKK+ecn+eQhiA8IHNoaW5yaVwgOwor5YSV6LypIDwgc2FpaGFpXCA7Civnmq7ohpwgPCBoaW1ha3VcIDsKK+S8vOmhlOe1tSA8IG5pZ2FvZVwgOwor5b255YSAIDwgeWFrdWdpXCA7CivnnJ/nj6AgPCBzaGluanVcIDsKK+WJquaWrSA8IHNlbmRhblwgOwor5YWs6JGsIDwga291c291XCA7CivnoILloLQgPCBzdW5hYmFcIDsKK+W8geW9kyA8IGJlbnRvdVwgOwor6YCT5ribIDwgdGVpZ2VuXCA7CivlvoDkv6EgPCBvdXNoaW5cIDsKK+i7jemWgCA8IGd1bm1vblwgOwor5bqn5qiZIDwgemFoeW91XCA7CivprZrpgZMgPCBneW9kb3VcIDsKK+iJh+mmliA8IHRlaXNodVwgOwor6YKq5a6XIDwgamFzaHV1XCA7CivmraPlvKYgPCBzZWlnZW5cIDsKK+WLh+WnvyA8IHl1dXNoaVwgOwor5YiG54WZIDwgYnVuJydlblwgOwor5qyg5pysIDwga2VwcG9uXCA7Civmr47liIYgPCBtYWlmdW5cIDsKK+WItuatoiA8IHNlaXNoaVwgOwor6YO15Yi4IDwgeXV1a2VuXCA7CivojZLno68gPCBhcmFpc29cIDsKK+i7vei8qSA8IGtlaWhhaVwgOwor6I+v5pePIDwga2F6b2t1XCA7Civmp4vpgKAgPCBrb3V6b3VcIDsKK+iRl+WkpyA8IGNob2RhaVwgOwor5Ye654mpIDwgZGVtb25vXCA7CivojIXoiI4gPCBib3VzaGFcIDsKK+W6p+alrSA8IHphZ3lvdVwgOwor5Yud5ZugIDwgc2hvdWluXCA7Civnmq7ogokgPCBoaW5pa3VcIDsKK+WJjeagvSA8IHNlbnphaVwgOwor56Cy5YW1IDwgaG91aGVpXCA7CivlhoXogZ4gPCBuYWlidW5cIDsKK+WIhueCuSA8IGJ1bnRlblwgOwor5q275a6IIDwgc2hpc2h1XCA7CivlupXmraIgPCB0ZWlzaGlcIDsKK+WFteiIuSA8IGhlaXNlblwgOwor5Yil5rOVIDwgYmVwcG91XCA7Civlh7jniYggPCB0b3BwYW5cIDsKK+mAmuawlyA8IHRzdXVraVwgOwor5Yqg5beeIDwga2FzaHV1XCA7CivmraPluLggPCBzZWlqb3VcIDsKK+W7u+W7iiA8IGthaXJvdVwgOwor6YCf5q2pIDwgc29rdWhvXCA7CivlubLmvZ8gPCBoaWdhdGFcIDsKK+i7vei6gSA8IGtlaXNvdVwgOwor6YGl5oudIDwgeW91aGFpXCA7Civoirjoq4cgPCBnZWlkYW5cIDsKK+W3p+iAhSA8IGtvdXNoYVwgOwor5YSq6KuaIDwgeXV1am91XCA7Civps6nluqcgPCBoYXRvemFcIDsKK+efreWkpyA8IHRhbmRhaVwgOwor5bem57+8IDwgc2F5b2t1XCA7CivojLbnrYUgPCBjaGFzZW5cIDsKK+WJjeadvyA8IG1hZWl0YVwgOwor5YO76YGgIDwgaGVraWVuXCA7Civpq5jpupcgPCBrb3VyYWlcIDsKK+i6q+mggyA8IG1pZ29yb1wgOwor5YmN5p2hIDwgemVuam91XCA7CivlhaXojbcgPCBueXV1a2FcIDsKK+WJsuaLoCA8IGtha2t5b1wgOwor5by35Zu6IDwga3lvdWtvXCA7CivlubPmupYgPCBoZWlqdW5cIDsKK+W8n+WmuSA8IHRlaW1haVwgOwor55eb6aOyIDwgdHN1dWluXCA7Civlir7lpY8gPCBnYWlzb3VcIDsKK+W5sua6gCA8IGthbm1hblwgOwor5YmN5pu4IDwgemVuc2hvXCA7Civlu7blubQgPCBlbicnbmVuXCA7Civnl4XprZQgPCBieW91bWFcIDsKK+WIqeassiA8IHJpeW9rdVwgOwor6YOt5YWsIDwga2Fra291XCA7Civluq3mnKggPCBuaXdha2lcIDsKK+alvemfsyA8IGdha3VvblwgOwor5q6L5aGBIDwgemFucnVpXCA7CivlhaXoi5EgPCBueXV1ZW5cIDsKK+iLpeiRiSA8IHdha2FiYVwgOwor5YeG55yLIDwganVua2FuXCA7CivluLjnlKggPCBqb3V5b3VcIDsKK+WLsuWKnyA8IGt1bmtvdVwgOwor5byK5a6zIDwgaGVpZ2FpXCA7CivmraTlsrggPCBzaGlnYW5cIDsKK+W5s+a3oSA8IGhlaXRhblwgOwor54Gr5LqL5aC0IDwga2FqaWJhXCA7CivlhajoiKwgPCB6ZW5wYW5cIDsKK+WJjeaZryA8IHplbmtlaVwgOwor6YGg5oiaIDwgZW5zZWtpXCA7CivmrrrliLAgPCBzYXR0b3VcIDsKK+ebruebmyA8IG1lbW9yaVwgOwor6Iul6I+cIDwgd2FrYW5hXCA7CivluIbnq4sgPCBob3RhdGVcIDsKK+mDoeWItiA8IGd1bnNlaVwgOwor6YO15L6/IDwgeXV1YmluXCA7Civou6LpgIEgPCB0ZW5zb3VcIDsKK+ebrueZvSA8IG1lamlyb1wgOwor55uq55uqIDwgdG91dG91XCA7CivliJ3mrrUgPCBzaG9kYW5cIDsKK+iIuemgrSA8IHNlbmRvdVwgOwor5b2T5YiGIDwgdG91YnVuXCA7CivpgLHmnJ8gPCBzaHV1a2lcIDsKK+mDjuWQmyA8IHJvdWt1blwgOwor6L+R54q2IDwga2luam91XCA7Civlt6jnt6ggPCBreW9oZW5cIDsKK+iKseimiyA8IGhhbmFtaVwgOwor5YaF57eaIDwgbmFpc2VuXCA7CivmrKDmkI0gPCBrZXNzb25cIDsKK+WGhee3kiA8IG5haXNob1wgOwor5YiR5rOVIDwga2VpaG91XCA7Civps7TlrZAgPCBuYXJ1a29cIDsKK+WJjeaWhyA8IHplbmJ1blwgOwor5q2m5a2mIDwgYnVnYWt1XCA7Civlh7rmva4gPCBkZXNoaW9cIDsKK+W4reeUuyA8IHNla2lnYVwgOwor6YCG5q+bIDwgc2FrYWdlXCA7Civpganlv5wgPCB0ZWtpb3VcIDsKK+mtmuiynSA8IGd5b2JhaVwgOwor6Iul6Iq9IDwgd2FrYW1lXCA7Civou6LovIkgPCB0ZW5zYWlcIDsKK+WGt+ecvCA8IHJlaWdhblwgOwor5Yuk5YuJIDwga2luYmVuXCA7Civmq5vmr5QgPCBzaGlwcGlcIDsKK+mAgeawtCA8IHNvdXN1aVwgOwor5Yuk5Yq0IDwga2lucm91XCA7CivluILnqI4gPCBzaGl6ZWlcIDsKK+avjeS5syA8IGJvbnl1dVwgOwor6Lui6LuiIDwgdGVudGVuXCA7CivpgZTmiJAgPCB0YXNzZWlcIDsKK+WGhee0myA8IG5haWZ1blwgOwor5Yu/5L2TIDwgbW90dGFpXCA7Civli5jlkIggPCBrYW5nb3VcIDsKK+iMtueilyA8IGNoYXdhblwgOwor6LuN6YWNIDwgZ3VuYmFpXCA7CivlubPmsLQgPCBoZWlzdWlcIDsKK+mzpeWxiyA8IHRvcml5YVwgOwor5bmz5rCRIDwgaGVpbWluXCA7CivlubPmsI8gPCBoZWlzaGlcIDsKK+mAo+aenSA8IHJlbnNoaVwgOwor5q+N5LiKIDwgaGFoYXVlXCA7Civli5XlkJEgPCBkb3Vrb3VcIDsKK+eWvumnhiA8IHNoaWtrdVwgOwor5Ye95rigIDwga2Fua3lvXCA7CivovrLnlKMgPCBub3VzYW5cIDsKK+WIkeatuyA8IGtlaXNoaVwgOwor5qW86ZaAIDwgcm91bW9uXCA7CivlhaznvbIgPCBrb3VzaG9cIDsKK+W5tOatryA8IG5lbnNoaVwgOwor6YCg5p6XIDwgem91cmluXCA7CivoiLnpmoogPCBzZW50YWlcIDsKK+mBoOW/gyA8IGVuc2hpblwgOwor6Iub6IubIDwgaXJhaXJhXCA7CivlvLHlkbMgPCB5b3dhbWlcIDsKK+mBqeW6piA8IHRla2lkb1wgOwor5YmK5pGpIDwgc2FrdW1hXCA7CivovKrolLUgPCByaW56b3VcIDsKK+W8vuWKviA8IGRhbmdhaVwgOwor6YGU5oSPIDwgdGF0c3VpXCA7CivlupXmnKwgPCB0ZWlob25cIDsKK+WIsOadpSA8IHRvdXJhaVwgOwor55m66ImmIDwgaGFra2FuXCA7CivliI7mrbsgPCBmdW5zaGlcIDsKK+i7jemBkyA8IGd1bmRvdVwgOwor5Ym15bu6IDwgc291a2VuXCA7CivliY3mj5AgPCB6ZW50ZWlcIDsKK+WGrOedgCA8IGZ1eXVnaVwgOwor6YCg5pysIDwgem91aG9uXCA7CivnnIvngrkgPCBrYW50ZW5cIDsKK+aso+aHkCA8IGtpbmthaVwgOwor6JaE44CFIDwgdXN1dXN1XCA7CivlhqznnKAgPCB0b3VtaW5cIDsKK+ixqumbqOemjSA8IGdvdXVrYVwgOwor5Yud5YipIDwgc2hvdXJpXCA7Civnmbvoh6ggPCB0b3VyaW5cIDsKK+i7iumBkyA8IHNoYWRvdVwgOwor5by35YyWIDwga3lvdWthXCA7Civovpvnm64gPCBrYXJhbWVcIDsKK+WLleWLoiA8IGRvdXNlaVwgOwor55e06YiNIDwgY2hpZG9uXCA7Civmrovlk4EgPCB6YW5waW5cIDsKK+W6uOaJjSA8IHlvdXNhaVwgOwor5YuV5Yq0IDwgZG91cm91XCA7Civou5LovIogPCBrZW5jaGlcIDsKK+WFieiKkiA8IGtvdWJvdVwgOwor5biv54q2IDwgb2Jpam91XCA7Civoi6bogokgPCBrdW5pa3VcIDsKK+mAo+aYnyA8IHJlbnNlaVwgOwor55uu546JIDwgbWVkYW1hXCA7CivojLbnm4YgPCBjaGFib25cIDsKK+mDjuWFmiA8IHJvdWRvdVwgOwor5biD55+zIDwgZnVzZWtpXCA7Civoh6Xpvo0gPCBnYXJ5b3VcIDsKK+W8geWkqSA8IGJlbnRlblwgOwor5YiH5q2vIDwgc2Vzc2hpXCA7Civnn63lkb0gPCB0YW5tZWlcIDsKK+W3o+eusSA8IHN1YmFrb1wgOwor5q6/5LiKIDwgdGVuam91XCA7CivoiLfploAgPCBnZW5tb25cIDsKK+mBuOWumiA8IHNlbnRlaVwgOwor5YuH5ZCNIDwgeXV1bWVpXCA7CivmraPlpKcgPCBzZWlkYWlcIDsKK+mrkemrjyA8IGRva3Vyb1wgOwor5Yip5pytIDwgcmlmdWRhXCA7Civpgbflrq4gPCBzZW5ndXVcIDsKK+i7ouiyuCA8IHRlbnRhaVwgOwor5byB5aOrIDwgYmVuc2hpXCA7Civkupzpurvoo70gPCBhbWFzZWlcIDsKK+mBk+W/tSA8IGRvdW5lblwgOwor556z5a2QIDwgZG91c2hpXCA7CivlvZPku6MgPCB0b3VkYWlcIDsKK+W6iuacuiA8IHNob3VnaVwgOwor5YWI6IisIDwgc2VucGFuXCA7CivlvZPkurogPCB0b3VuaW5cIDsKK+mBteWuiCA8IGp1bnNodVwgOwor6LuK6LyqIDwgc2hhcmluXCA7CivliJ3moKEgPCBzaG9rb3VcIDsKK+i7jei7iiA8IGd1bnNoYVwgOwor6YCj5pWXIDwgcmVucGFpXCA7CivlupXmlbAgPCB0ZWlzdXVcIDsKK+WHuuawtCA8IGRlbWl6dVwgOwor6Lqr6YqtIDwgbWl6ZW5pXCA7CivoiabovIkgPCBrYW5zYWlcIDsKK+W6g+adsSA8IGthbnRvblwgOwor5biD55uuIDwgbnVub21lXCA7Civlhbjnr4QgPCB0ZW5wYW5cIDsKK+eXhemZoiA8IGJ5b3VpblwgOwor55+l5ZG9IDwgY2hpbWVpXCA7Civnm5fnlKggPCB0b3V5b3VcIDsKK+WJm+aApyA8IGdvdXNlaVwgOwor5b2T5LiWIDwgdG91c2VpXCA7Civli4nlirEgPCBiZW5yZWlcIDsKK+WHuuauuyA8IGRlZ2FyYVwgOwor5YWO6IKJIDwgdG9uaWt1XCA7CivnnKDmsJcgPCBuZW11a2VcIDsKK+iMtueVqiA8IGNoYWJhblwgOwor55yf5rC0IDwgbWFtaXp1XCA7Civlt6bnqIsgPCBzYWhvZG9cIDsKK+mrmOmiqCA8IGtvdWZ1dVwgOwor5bm95p6XIDwgeXV1cmluXCA7Civov5TmuIggPCBoZW5zYWlcIDsKK+WGrOeTnCA8IHRvdWdhblwgOwor5q6K5YuyIDwgc2h1a3VuXCA7CivlhYnog4wgPCBrb3VoYWlcIDsKK+i7jOi3oSA8IGtpc2VraVwgOwor5byx5YagIDwgamFra2FuXCA7Civnn6Xlj4sgPCBjaGl5dXVcIDsKK+WKoOWcpyA8IGthYXRzdVwgOwor6Iy255O2IDwgY2hhYmluXCA7CivliKnmlbUgPCByaXRla2lcIDsKK+WIpOaYjiA8IGhhbm1laVwgOwor6YGp5a6cIDwgdGVraWdpXCA7Civmrorlip8gPCBzaHVrb3VcIDsKK+W8peWLkiA8IG1pcm9rdVwgOwor5Yal55WMIDwgbWVpa2FpXCA7Civoiq3olYkgPCBiYXNob3VcIDsKK+mBi+W8kyA8IHVua3l1dVwgOwor5Ymj5bivIDwga2VudGFpXCA7Civpq5jpn7MgPCB0YWthbmVcIDsKK+iJr+iyqCA8IHJ5b3VrYVwgOwor55+t5YmjIDwgdGFua2VuXCA7CivlhYjogZYgPCBzZW5zZWlcIDsKK+WFqOexsyA8IHplbmJlaVwgOwor55uy54K5IDwgbW91dGVuXCA7CivliKTmlq0gPCBoYW5kYW5cIDsKK+atk+WjsCA8IGthbnNlaVwgOwor5qy95a6aIDwga2ludGVpXCA7CivpgI/mmI4gPCB0b3VtZWlcIDsKK+mHjeOAhSA8IGp1dWp1dVwgOwor6Luf6KuWIDwgbmFucm9uXCA7CivpgrjlhoUgPCB0ZWluYWlcIDsKK+WFjee9qiA8IG1lbnphaVwgOwor5buD5bidIDwgaGFpdGVpXCA7Civnn63liIAgPCB0YW50b3VcIDsKK+WFrOeulyA8IGtvdXNhblwgOwor6IiM6aCtIDwgemV0dG91XCA7CivpgbjlpJYgPCBzZW5nYWlcIDsKK+atu+WOuyA8IHNoaWt5b1wgOwor6LuN6LOHIDwgZ3Vuc2hpXCA7CivlvJXlkIggPCBoaWtpYWlcIDsKK+W5veaZryA8IHl1dWtlaVwgOwor6YGK5bqVIDwgeXV1dGVpXCA7Civnn6nliYcgPCBrdXNva3VcIDsKK+W3oeekvCA8IGp1bnJlaVwgOwor5bm05p2lIDwgbmVucmFpXCA7CivliJ3ml6wgPCBzaG9qdW5cIDsKK+W5s+advyA8IGhlaWJhblwgOwor5YSA6KGoIDwgZ2loeW91XCA7CivlhbXnqK4gPCBoZWlzaHVcIDsKK+W3qOegsiA8IGt5b2hvdVwgOwor55qG57SNIDwga2Fpbm91XCA7CivmrovlhZogPCB6YW50b3VcIDsKK+asoeW4rSA8IGppc2VraVwgOwor5q2M5aOwIDwgdXRhZ29lXCA7CivmqKHntKIgPCBtb3Nha3VcIDsKK+aui+WFiSA8IHphbmtvdVwgOwor5YWD6ICBIDwgZ2Vucm91XCA7CivoirPojYkgPCBob3Vzb3VcIDsKK+ecn+aoqiA8IG1heW9rb1wgOwor5YWr56uvIDwgaGF0dGFuXCA7CivliIbmoKEgPCBidW5rb3VcIDsKK+mAo+aKlSA8IHJlbnRvdVwgOwor55uX54qvIDwgdG91aGFuXCA7CivlvL7kuLggPCBkYW5nYW5cIDsKK+atjOWigyA8IGtha3lvdVwgOwor5YaZ55SfIDwgc2hhc2VpXCA7Civmrovlg48gPCB6YW56b3VcIDsKK+atqeWTqCA8IGhvc2hvdVwgOwor55yM5rCRIDwga2VubWluXCA7CivliaPlsbEgPCBrZW56YW5cIDsKK+WKtOWKnyA8IHJvdWtvdVwgOwor6YCj5oimIDwgcmVuc2VuXCA7CivlhrfnhLYgPCByZWl6ZW5cIDsKK+WLleS5sSA8IGRvdXJhblwgOwor5Yi25oayIDwgc2Vpa2VuXCA7CivlvJPli6IgPCB5dW56ZWlcIDsKK+WGheecgSA8IG5haXNlaVwgOwor5bmz5piOIDwgaGVpbWVpXCA7CivmrbvliJEgPCBzaGlrZWlcIDsKK+ecieavmyA8IG1heXVnZVwgOwor6YCg5oiQIDwgem91c2VpXCA7Civlu4PlsYsgPCBoYWlva3VcIDsKK+WIh+abvyA8IHNldHRhaVwgOwor6YCD5pWjIDwgdG91c2FuXCA7Civouqvou70gPCBtaWdhcnVcIDsKK+efouWFiCA8IHlhc2FraVwgOwor6LuN6KuHIDwgZ3VuZGFuXCA7CivlubTmlbAgPCBuZW5zdXVcIDsKK+Wxsee+iuW6pyA8IHlhZ2l6YVwgOwor5q2j5ZGzIDwgc2hvdW1pXCA7CivpgIDmlaMgPCB0YWlzYW5cIDsKK+iKuOiDvSA8IGdlaW5vdVwgOwor6YCj5oOzIDwgcmVuc291XCA7CivmrovkvZkgPCB6YW4nJ3lvXCA7CivpgaPlpJYgPCBrZW5nYWlcIDsKK+W8geWPoyA8IGJlbmtvdVwgOwor55qT56SsIDwga291YmFuXCA7CivmraPlj7cgPCBzZWlnb3VcIDsKK+iLpueskSA8IGt1c2hvdVwgOwor5YiG5piOIDwgYnVubWVpXCA7CivlvJPlhbcgPCBreXV1Z3VcIDsKK+eZjOiFqyA8IGdhbnNodVwgOwor55+u5Lq6IDwgd2FpamluXCA7CivojZLmtbcgPCBhcmF1bWlcIDsKK+mztOWLlSA8IG1laWRvdVwgOwor5YaF55WMIDwgbmFpa2FpXCA7CivluqfluK0gPCB6YXNla2lcIDsKK+ato+WNlyA8IHNlaW5hblwgOwor6Iq46ICFIDwgZ2Vpc2hhXCA7CivmraPljYggPCBzaG91Z29cIDsKK+WGheeUqCA8IG5haXlvdVwgOwor5Yil5oeHIDwgYmVra29uXCA7CivliIbmlbAgPCBidW5zdXVcIDsKK+WIhuaVoyA8IGJ1bnNhblwgOwor5YSq6ICFIDwgeXV1c2hhXCA7CivljZLloZTlqYYgPCBzb3RvYmFcIDsKK+atr+WGoCA8IHNoaWthblwgOwor5YaN54++IDwgc2FpZ2VuXCA7Civlurflr6cgPCBrb3VuZWlcIDsKK+WKn+WKtCA8IGtvdXJvdVwgOwor5qyE5bmyIDwgcmFua2FuXCA7CivliJfmjJkgPCByZWtreW9cIDsKK+WJjeWxsSA8IHplbnphblwgOwor5byl5LmFIDwgYmlreXV1XCA7Civnmbrnq68gPCBob3R0YW5cIDsKK+WIneaIpiA8IHNob3NlblwgOwor6LuN6KOFIDwgZ3Vuc291XCA7CivliKXmhI8gPCBiZXRzdWlcIDsKK+WHuuaZgiA8IGRlZG9raVwgOwor6YCj5by+IDwgcmVuZGFuXCA7CivkupzpurvoibIgPCBhbWFpcm9cIDsKK+efpeS6uiA8IGNoaWppblwgOwor6Iyr54S2IDwgYm91emVuXCA7CivovJTnv7wgPCBob3lva3VcIDsKK+i+suazlSA8IG5vdWhvdVwgOwor5Yip5oGvIDwgcmlzb2t1XCA7CivlupzluoEgPCBmdWNob3VcIDsKK+W6tuWtkCA8IHNob3NoaVwgOwor6I+v5aWiIDwga3lhc2hhXCA7Civoh7Ppm6MgPCBzaGluYW5cIDsKK+WKtOS9vyA8IHJvdXNoaVwgOwor5buJ5aOyIDwgcmVuYmFpXCA7CivmrbvkvZMgPCBzaGl0YWlcIDsKK+mAouW8lSA8IGFpYmlraVwgOwor5YGc6aCTIDwgdGVpdG9uXCA7CivpgbrlkYogPCB5dWlnb3VcIDsKK+WHveaVsCA8IGthbnN1dVwgOwor5Ya35rehIDwgcmVpdGFuXCA7CivnnJ/mmLwgPCBtYWhpcnVcIDsKK+WHuuaWuSA8IGRla2F0YVwgOwor5Ymj5aOrIDwga2Vuc2hpXCA7Civlhaznm4ogPCBrb3Vla2lcIDsKK+iIuei3ryA8IGZ1bmFqaVwgOwor55aO6ZqUIDwgc29rYWt1XCA7CivliqDlhaUgPCBrYW55dXVcIDsKK+i+suawkSA8IG5vdW1pblwgOwor6YGg5Zu9IDwgb25nb2t1XCA7CivlhbfnlLMgPCBndXNoaW5cIDsKK+iNt+acrSA8IG5pZnVkYVwgOwor5bit5qyhIDwgc2VraWppXCA7CivliKnlvpcgPCByaXRva3VcIDsKK+WFqOebsiA8IHplbm1vdVwgOwor5q275LqhIDwgc2hpYm91XCA7Civlt6jnjaMgPCBreW9qdXVcIDsKK+ato+WFtSA8IHNlaWhlaVwgOwor5YWo55ubIDwgemVuc2VpXCA7CivouYjpnrQgPCB0YXRhcmFcIDsKK+mAo+W4ryA8IHJlbnRhaVwgOwor6YCf5bqmIDwgc29rdWRvXCA7CivliLDlupUgPCB0b3V0ZWlcIDsKK+WFjeeojiA8IG1lbnplaVwgOwor6IiM6YuSIDwgemVwcG91XCA7CivpgKDluaMgPCB6b3VoZWlcIDsKK+aomeekuiA8IGh5b3VqaVwgOwor5bmz5omLIDwgaGlyYXRlXCA7CivlgZzpm7sgPCB0ZWlkZW5cIDsKK+WBpemXmCA8IGtlbnRvdVwgOwor6Iif6YGLIDwgc2h1dXVuXCA7CivmqKrnm64gPCB5b2tvbWVcIDsKK+WHseaXiyA8IGdhaXNlblwgOwor55uu5qyhIDwgbW9rdWppXCA7Civlhrfms4kgPCByZWlzZW5cIDsKK+WFqOeZkiA8IHplbicneXVcIDsKK+eZveejgSA8IGhha3VqaVwgOwor6L+U5pysIDwgaGVucG9uXCA7CivliKXlvaIgPCBiZWtrZWlcIDsKK+W5u+aDsyA8IGdlbnNvdVwgOwor55yL5p2/IDwga2FuYmFuXCA7Civlho3nh4MgPCBzYWluZW5cIDsKK+edgOaEjyA8IGNoYWt1aVwgOwor5YaF54q2IDwgbmFpam91XCA7CivliKXlvZMgPCBiZXR0b3VcIDsKK+i/keadsSA8IGtpbnRvdVwgOwor5bu65YW3IDwgdGF0ZWd1XCA7Civov5HmnaUgPCBraW5yYWlcIDsKK+i/lOabuCA8IGhlbnNob1wgOwor5bqP5bmVIDwgam9tYWt1XCA7CivlgbTpjpYgPCBzb2t1c2FcIDsKK+amguirliA8IGdhaXJvblwgOwor55eF6LqvIDwgYnlvdWt1XCA7Civmpb3orZwgPCBnYWt1ZnVcIDsKK+WGt+axlyA8IHJlaWthblwgOwor5YiG5ouFIDwgYnVudGFuXCA7CivovqPmsrkgPCByYXpleXVcIDsKK+WKh+WMliA8IGdla2lrYVwgOwor5Ya35rC0IDwgcmVpc3VpXCA7CivpgoTlhYMgPCBrYW5nZW5cIDsKK+WIqeW5hSA8IHJpaGFiYVwgOwor5Yeh5pu4IDwgYm9uc2hvXCA7CivpgKPls7AgPCByZW5wb3VcIDsKK+WKh+WLmSA8IGdla2ltdVwgOwor5YiH5omLIDwga2lyZXRlXCA7CivlubvmgKogPCBnZW5rYWlcIDsKK+i/veaFlSA8IHRzdWlib1wgOwor55m656CyIDwgaGFwcG91XCA7CivouqvoqLEgPCBtaW1vdG9cIDsKK+mBqeWQpiA8IHRla2loaVwgOwor5Ye65o6bIDwgZGVnYWtlXCA7Civlhobnhp8gPCBlbmp1a3VcIDsKK+i/keaZryA8IGtpbmtlaVwgOwor6YCj5bGxIDwgcmVuemFuXCA7Civpq5jpgoEgPCBrb3VtYWlcIDsKK+WJjeWljyA8IHplbnNvdVwgOwor5bqX5bGLIDwgbWlzZXlhXCA7Civlh6bmlrkgPCBzaG9ob3VcIDsKK+mdkua1t+iLlCA8IGFvbm9yaVwgOwor6YGN5ZyoIDwgaGVuemFpXCA7CivliKXlt7sgPCBiZWtrYW5cIDsKK+WGl+a8qyA8IGpvdW1hblwgOwor5qaC6KazIDwgZ2Fpa2FuXCA7CivliY3lpJwgPCB6ZW4nJ3lhXCA7Civlu7rlgKQgPCB0YXRlbmVcIDsKK+W5u+W9sSA8IGdlbicnZWlcIDsKK+mAo+WwhCA8IHJlbnNoYVwgOwor5YmN5aOyIDwgbWFldXJpXCA7CivmpoLopoEgPCBnYWl5b3VcIDsKK+WCjei8qSA8IGhvdWJhaVwgOwor55m955yJIDwgaGFrdWJpXCA7Civls6Hpg6ggPCBreW91YnVcIDsKK+WItuWumiA8IHNlaXRlaVwgOwor6Lu9572qIDwga2VpemFpXCA7CivnlarpoK0gPCBiYW50b3VcIDsKK+WIneW5tCA8IHNob25lblwgOwor6L6b5rCXIDwgc2hpbmtpXCA7CivlibLlkIggPCB3YXJpYWlcIDsKK+alvOimsyA8IHJvdWthblwgOwor6Ium55ebIDwga3V0c3V1XCA7Civlub7lubQgPCBpa3VuZW5cIDsKK+WGrOavmyA8IGZ1eXVnZVwgOwor5YWI55+lIDwgc2VuY2hpXCA7CivlupflrZAgPCB0YW5ha29cIDsKK+mtmue+pCA8IGd5b2d1blwgOwor6YCA5b25IDwgdGFpZWtpXCA7CivlubzlubQgPCB5b3VuZW5cIDsKK+i/guabsiA8IHVreW9rdVwgOwor5Ymy5Y2wIDwgd2FyaWluXCA7CivliKnlsL8gPCByaW55b3VcIDsKK+S8vOmdnuimqiA8IGVzZW95YVwgOwor5bqK5bGLIDwgdG9rb3lhXCA7CivpgIDlu7cgPCB0YWl0ZWlcIDsKK+aoqeePviA8IGdvbmdlblwgOwor5YG06YOoIDwgc29rdWJ1XCA7CivluLDmnI0gPCBraWZ1a3VcIDsKK+ecvOW6lSA8IGdhbnRlaVwgOwor6YCA5buDIDwgdGFpaGFpXCA7CivliKXlsYUgPCBiZWtreW9cIDsKK+eVmemjsiA8IHJ5dXVpblwgOwor5Yiq5a6aIDwgc2FudGVpXCA7CivmrITlpJYgPCByYW5nYWlcIDsKK+WGoOawtCA8IGthbnN1aVwgOwor5Yil5bCBIDwgYmVwcHV1XCA7CivnnLzluK8gPCBnYW50YWlcIDsKK+W5s+W5tCA8IGhlaW5lblwgOwor5bmz5bmzIDwgaGVpaGVpXCA7Civoh4bpnaIgPCBva3VtZW5cIDsKK+W7g+WTgSA8IGhhaWhpblwgOwor6L+35b2pIDwgbWVpc2FpXCA7CivluILmsJEgPCBzaGltaW5cIDsKK+W6hOWxiyA8IHNob3V5YVwgOwor6Imy6ImyIDwgaXJvaXJvXCA7CivlhqDmr5sgPCBrYW5tb3VcIDsKK+W4uOaVsCA8IGpvdXN1dVwgOwor6L6y5p6XIDwgbm91cmluXCA7CivlubPluLggPCBoZWlqb3VcIDsKK+iLlOeZrCA8IHRhaXNlblwgOwor55my55mHIDwgdGVua2FuXCA7Civkupzpurvns7ggPCBhbWFpdG9cIDsKK+WIpOWumiA8IGhhbnRlaVwgOwor5Yik5a6YIDwgaGFuZ2FuXCA7Civlt53ngKwgPCBrYXdhc2VcIDsKK+W7t+S4gSA8IHRlaXRlaVwgOwor55m655SfIDwgaGFzc2VpXCA7CivovrLmnZEgPCBub3Vzb25cIDsKK+WBtOi/kSA8IHNva2tpblwgOwor55uk5qC5IDwgYmFua29uXCA7CivprYLog4YgPCBrb250YW5cIDsKK+WFreWNgei3ryA8IG11c29qaVwgOwor6L2f54S2IDwgZ291emVuXCA7CivliKXlrKogPCBiZXBwaW5cIDsKK+asoOWTgSA8IGtlcHBpblwgOwor6a2a57ayIDwgZ3lvbW91XCA7CivlhoXmua8gPCB1Y2hpeXVcIDsKK+S6nOa4qeW4ryA8IGFvbnRhaVwgOwor55Sf6bqpIDwgbmFtYWZ1XCA7Civlub3lsYUgPCB5dXVreW9cIDsKK+mAo+WknCA8IHJlbicneWFcIDsKK+W3oea8lCA8IGp1bicnZW5cIDsKK+atjOS8miA8IHV0YWthaVwgOwor5YWs54S2IDwga291emVuXCA7Civlt7vmr5sgPCBtYWtpZ2VcIDsKK+i7jeiJpiA8IGd1bmthblwgOwor6YCj5aOwIDwgcmVuam91XCA7CivkvZnmiYDoposgPCB5b3NvbWlcIDsKK+iHqumHjSA8IGppY2hvdVwgOwor5YaF5riIIDwgbmFpc2FpXCA7CivlhYjnlaogPCBzZW5iYW5cIDsKK+mBiuWQnyA8IHl1dWdpblwgOwor6YGK5ZCbIDwgeXV1a3VuXCA7Civou43oiLkgPCBndW5zZW5cIDsKK+iNieacrCA8IHNvdWhvblwgOwor55uy5patIDwgbW91ZGFuXCA7CivnnYDlsLogPCBraWpha3VcIDsKK+iJqOiJnyA8IG1vdWRvdVwgOwor5YG96LazIDwgZ2lzb2t1XCA7CivojYnmm7ggPCBzb3VzaG9cIDsKK+WFqOeEtiA8IHplbnplblwgOwor5YiX5a+nIDwgcmVlbmluXCA7CivprZrnsr4gPCBneW9zZWlcIDsKK+iJpuiJhyA8IGthbnRlaVwgOwor55uu5pa5IDwgbWVrYXRhXCA7Civlh6HmiY0gPCBib25zYWlcIDsKK+WHoeaJiyA8IGJvbnNodVwgOwor5YWF55SoIDwganV1eW91XCA7CivprZrnsokgPCBneW9mdW5cIDsKK+WHoeaIpiA8IGJvbnNlblwgOwor5bq45ZCbIDwgeW91a3VuXCA7CivlgKTpoIMgPCBuZWdvcm9cIDsKK+WHtuW+kiA8IGt5b3V0b1wgOwor55aO6YCaIDwgc290c3V1XCA7Civoh7Pov5EgPCBzaGlraW5cIDsKK+W5ouW5oSA8IGRvdWJhblwgOwor5bmz5bGLIDwgaGlyYXlhXCA7CivpgYXlj4IgPCBjaGlzYW5cIDsKK+mAhuWtkCA8IHNha2Fnb1wgOwor5aeU5ZOh5LyaIDwgaWlua2FpXCA7Civnmb3ni5AgPCBieWFra29cIDsKK+WApOmemCA8IG5lemF5YVwgOwor5Ye65bqrIDwgc2h1a2tvXCA7Civov73lsL4gPCB0c3VpYmlcIDsKK+WHuuW6nCA8IHNodXBwdVwgOwor5Yid5amaIDwgc2hva29uXCA7Civlh7rlupcgPCBkZW1pc2VcIDsKK+WGheayuyA8IG5haWNoaVwgOwor6L6y5pS/IDwgbm91c2VpXCA7CivliZvli4cgPCBnb3V5dXVcIDsKK+asoOWLpCA8IGtla2tpblwgOwor5YWx5ryUIDwga3lvdWVuXCA7Civoh6rpgakgPCBqaXRla2lcIDsKK+WHoeaFriA8IGJvbnJ5b1wgOwor6YCA5a6YIDwgdGFpa2FuXCA7CivnnLzlrZQgPCBnYW5rb3VcIDsKK+eVjOmdoiA8IGthaW1lblwgOwor6YGv5LiWIDwgdG9uc2VpXCA7CivlubPlrpogPCBoZWl0ZWlcIDsKK+iPr+WGkSA8IGthY2h1dVwgOwor6Lyq55WqIDwgcmluYmFuXCA7Civkvp3lrZjluqYgPCBpem9uZG9cIDsKK+WHuuW4qyA8IHN1aXNoaVwgOwor5YmN5ZCNIDwgemVubWVpXCA7CivpgZPlhYMgPCBkb3VnZW5cIDsKK+WJjeWPtyA8IHplbmdvdVwgOwor5Yik5aOrIDwgaGFuc2hpXCA7CivovKrnlJ8gPCByaW5zZWlcIDsKK+WGheawlyA8IHVjaGlraVwgOwor5YKN6KiTIDwgYm91a3VuXCA7CivnnLjlrZAgPCBib3VzaGlcIDsKK+mBheWKuSA8IGNoaWtvdVwgOwor5buD5YW1IDwgaGFpaGVpXCA7CivlhY3nirYgPCBtZW5qb3VcIDsKK+W4huahgSA8IGhvZ2V0YVwgOwor5qmf5qWtIDwga2lneW91XCA7CivpgJPlopcgPCB0ZWl6b3VcIDsKK+W5leW6nCA8IGJha3VmdVwgOwor5bit5o2yIDwgc2Vra2VuXCA7CivojbflvbkgPCBuaXlha3VcIDsKK+WGheauvyA8IG5haWRlblwgOwor5YKN6KazIDwgYm91a2FuXCA7CivnlYzpmoggPCBrYWl3YWlcIDsKK+WIhuWwgSA8IGJ1bnBvdVwgOwor5YWs5rqWIDwga291anVuXCA7Civlgo3oppYgPCB3YWtpbWlcIDsKK+eZveeFmSA8IGhha3VlblwgOwor6IuU54q2IDwgdGFpam91XCA7CivprZTnrJsgPCBtYXRla2lcIDsKK+WJteS4liA8IHNvdXNlaVwgOwor6Lez6aasIDwgY2hvdWJhXCA7CivluLjmhYsgPCBqb3V0YWlcIDsKK+W6g+WgtCA8IGhpcm9iYVwgOwor5bGx6aGbIDwgc2FudGVuXCA7CivlgZzou4ogPCB0ZWlzaGFcIDsKK+mrmOimpyA8IGtvdXJhblwgOwor55SY6a+bIDwgYW1hZGFpXCA7CivluoPln58gPCBrb3Vpa2lcIDsKK+aoqua6oiA8IG91aXRzdVwgOwor5Yas5pelIDwgZnV5dWJpXCA7Civpq5joposgPCB0YWthbWlcIDsKK+WDp+e2sSA8IHNvdWdvdVwgOwor5YmN5YmNIDwgbWFlbWFlXCA7CivluqfljZMgPCB6YXRha3VcIDsKK+WGoOacqCA8IGthYnVraVwgOwor6Imv57iBIDwgcnlvdWVuXCA7CivliZvlgaUgPCBnb3VrZW5cIDsKK+WBveiovCA8IGdpc2hvdVwgOwor5biC5pyJIDwgc2hpeXV1XCA7Civluq3liY0gPCB0ZWl6ZW5cIDsKK+mYv+WDp+elhyA8IGFzb3VnaVwgOwor5qSc6LuKIDwga2Vuc2hhXCA7Civlupflk6EgPCB0ZW4nJ2luXCA7CivpgLLljJYgPCBzaGlua2FcIDsKK+aoueawtyA8IGp1aHlvdVwgOwor5bqE5ZySIDwgc2hvdWVuXCA7Civoh6rotrMgPCBqaXNva3VcIDsKK+mqqOi6qyA8IGhvbmVtaVwgOwor5YWt5rOVIDwgcm9wcG91XCA7Civlh7rlrrYgPCBzaHVra2VcIDsKK+mrmOijgSA8IGtvdXNhaVwgOwor55S76ZuGIDwgZ2FzaHV1XCA7CivliIblqKkgPCBidW5iZW5cIDsKK+iJsuezuCA8IGlyb2l0b1wgOwor55S76ZqcIDwgZ2FzaG91XCA7CivlsbHpnIogPCBzYW5yZWlcIDsKK+WGmeacrCA8IHNoYWhvblwgOwor5YWl5rW3IDwgaXJpdW1pXCA7CivouYLouqogPCBqdXVyaW5cIDsKK+W5leWxiyA8IG1ha3V5YVwgOwor5Yi75Y2wIDwga29rdWluXCA7Civlh6HluLggPCBib25qb3VcIDsKK+i/t+WmhCA8IG1laW1vdVwgOwor55eb6IumIDwgdHN1dWt1XCA7Civnm4bmma8gPCBib25rZWlcIDsKK+iIueiNtyA8IGZ1bmFuaVwgOwor6YCj5ZCfIDwgcmVuZ2luXCA7CivliJ3lm54gPCBzaG9rYWlcIDsKK+W7g+S6uiA8IGhhaWppblwgOwor5Ymb5L2TIDwgZ291dGFpXCA7Civou4rnt5ogPCBzaGFzZW5cIDsKK+mAo+WQiCA8IHJlbmdvdVwgOwor55uy5oOzIDwgbW91c291XCA7CivlubTloLEgPCBuZW5wb3VcIDsKK+ebuOaApyA8IGFpc2hvdVwgOwor6Iul5rmvIDwgd2FrYXl1XCA7CivlhazmsJEgPCBrb3VtaW5cIDsKK+W4guaXpSA8IGljaGliaVwgOwor5qeY55u4IDwgeW91c291XCA7CivpsYjlrZAgPCB0YXJha29cIDsKK+WIhuWkliA8IGJ1bmdhaVwgOwor55uj5oi/IDwga2FuYm91XCA7CivluIPmlZkgPCBmdWt5b3VcIDsKK+mAoOWPjSA8IHpvdWhhblwgOwor5YiG5aOyIDwgYnVuYmFpXCA7Civlh4Tmg6ggPCBzZWlzYW5cIDsKK+ebm+aMmSA8IHNlaWt5b1wgOwor6Lu955uuIDwga2FydW1lXCA7CivluLDlv4MgPCBraXNoaW5cIDsKK+iMmOaenSA8IHJlaXNoaVwgOwor55u45b25IDwgYWl5YWt1XCA7CivluqflhYMgPCB6YW1vdG9cIDsKK+WGjeadpSA8IHNhaXJhaVwgOwor5YW85qWtIDwga2VuZ291XCA7Civnm77luqcgPCB0YXRlemFcIDsKK+WGt+aIvyA8IHJlaWJvdVwgOwor5Yi25YuVIDwgc2VpZG91XCA7Civnm7jlvZMgPCBzb3V0b3VcIDsKK+W3oeaknCA8IGp1bmtlblwgOwor5YW15qipIDwgaGVpa2VuXCA7Civnmb7muIggPCBrdWRhcmFcIDsKK+iHs+irliA8IHNoaXJvblwgOwor6Ii56ImZIDwgc2Vuc291XCA7CivlsbHplpMgPCB5YW1hYWlcIDsKK+W5s+WdhyA8IGhlaWtpblwgOwor5bGx6ZaAIDwgc2FubW9uXCA7Civlgq3oiLkgPCB5b3VzZW5cIDsKK+WGhuafsSA8IGVuY2h1dVwgOwor55Sf6aGeIDwgc2VpcnVpXCA7CivlubPlnLAgPCBoZWljaGlcIDsKK+mAo+WLlSA8IHJlbmRvdVwgOwor5YmN5L6/IDwgemVuYmluXCA7CivlurjkurogPCB5b3VqaW5cIDsKK+W5tOWbniA8IG5lbmthaVwgOwor6YCA5ZujIDwgdGFpZGFuXCA7Civnm7LlvpMgPCBtb3VqdXVcIDsKK+WGl+aWhyA8IGpvdWJ1blwgOwor5YWo5qynIDwgemVuJydvdVwgOwor552+5Li4IDwga291Z2FuXCA7Civoh7PoqIAgPCBzaGlnZW5cIDsKK+mAo+WIpCA8IHJlbnBhblwgOwor6LuS56uvIDwgbm9raWJhXCA7CivluKvlvJ8gPCBzaGl0ZWlcIDsKK+WJjeS7tiA8IHplbmtlblwgOwor5YWr5Y2B6LevIDwgeWFzb2ppXCA7CivlsY/poqggPCBieW91YnVcIDsKK+ebuOW4rSA8IGFpc2VraVwgOwor5YmN5LujIDwgemVuZGFpXCA7CivnlJ/pnaIgPCBzZWltZW5cIDsKK+iLpuaxgSA8IG5pZ2FyaVwgOwor5LyK5Yui6J2mIDwgaXNlZWJpXCA7CivliY3kurogPCB6ZW5qaW5cIDsKK+WIh+WcsCA8IGtpcmVqaVwgOwor5Ye25aSiIDwga3lvdW11XCA7CivliIblnLAgPCBidW5jaGlcIDsKK+iJtuemjyA8IGVucHVrdVwgOwor6Iul5rCXIDwgd2FrYWdlXCA7CivnlKPpmaIgPCBzYW4nJ2luXCA7CivliIblm6MgPCBidW5kYW5cIDsKK+iHquiouyA8IGppY2h1dVwgOwor5Yid5Y+3IDwgc2hvZ291XCA7CivpgLjkuosgPCBpdHN1amlcIDsKK+WDu+ebriA8IGhpZ2FtZVwgOwor5YiA5ZytIDwgdG91a2VpXCA7CivlhormlbAgPCBzYXNzdXVcIDsKK+eUu+mLsiA8IGdhYnlvdVwgOwor5Ye65Z+OIDwgZGVqaXJvXCA7CivlubzlkI0gPCB5b3VtZWlcIDsKK+Wwj+m8uyA8IGtvYmFuYVwgOwor5YaF5peoIDwgbmFpc2hpXCA7Civnl5vnvbUgPCB0c3V1YmFcIDsKK+iHquimmiA8IGppa2FrdVwgOwor5YaF5pa5IDwgbmFpaG91XCA7Civlgb3olqwgPCBnaXlha3VcIDsKK+eXheiHpSA8IGJ5b3VnYVwgOwor5YWx5qCEIDwga3lvdWVpXCA7CivlgKTpgYcgPCBjaGlndXVcIDsKK+W5tuWRkSA8IGhlaWRvblwgOwor5bm+5Y2DIDwgaWt1c2VuXCA7Civpq5jokZcgPCBrb3VjaG9cIDsKK+Wwj+m6piA8IGtvbXVnaVwgOwor5YiG5Za2IDwgYnVuJydlaVwgOwor5qOS6Yu8IDwgYm91a291XCA7CivpgIHlkYggPCBzb3V0ZWlcIDsKK+W6p+S4rSA8IHphY2h1dVwgOwor5bm25ZCIIDwgaGVpZ291XCA7Civkv67pmaIgPCBzaHV1aW5cIDsKK+W6leWApCA8IHNva29uZVwgOwor5biw5bGeIDwga2l6b2t1XCA7Civlt6XmlbAgPCBrb3VzdXVcIDsKK+WFteabuSA8IGhlaXNvdVwgOwor5YW15pu4IDwgaGVpc2hvXCA7Civmm77npZbniLYgPCBoaWppamlcIDsKK+WIkeWQjSA8IGtlaW1laVwgOwor6LuN56S8IDwgZ3VucmVpXCA7CivmqLnmnKggPCBqdW1va3VcIDsKK+mrmOiPnCA8IHRha2FuYVwgOwor55u45a++IDwgc291dGFpXCA7CivlubTlj7cgPCBuZW5nb3VcIDsKK+imi+aghOWdiiA8IG1pZWJvdVwgOwor6Iqx54GrIDwgaGFuYWJpXCA7CivlsZXplosgPCB0ZW5rYWlcIDsKK+ebuOWuvyA8IGFpeWFkb1wgOwor6YCA5Y67IDwgdGFpa3lvXCA7CivluK/lsIEgPCBvYmlmdXVcIDsKK+S6nOmJm+eJiCA8IGFlbmJhblwgOwor5YeN5a+SIDwgdG91a2FuXCA7CivlubPljp8gPCBoZWlnZW5cIDsKK+WHjeWusyA8IHRvdWdhaVwgOwor5bGx6YeOIDwgc2FuJyd5YVwgOwor6YCP5YaZIDwgdG91c2hhXCA7CivliLbku6QgPCBzZWlyZWlcIDsKK+WFreacrCA8IHJvcHBvblwgOwor6Ium5qW9IDwga3VyYWt1XCA7CivluLDlroUgPCBraXRha3VcIDsKK+eWveiFqyA8IHNvc2hvdVwgOwor5qiq5qC5IDwgeW9rb25lXCA7Civlub7liIYgPCBpa3VidW5cIDsKK+eVsOiqrCA8IGlzZXRzdVwgOwor6a2U55CDIDwgbWFreXV1XCA7Civlh7blmaggPCBreW91a2lcIDsKK+S/nemdqSA8IGhva2FrdVwgOwor5YaN5oyZIDwgc2Fpa3lvXCA7Civkv4rppqwgPCBzaHVubWVcIDsKK+WFq+acrCA8IGhhcHBvblwgOwor5YWs5pyJIDwga291eXV1XCA7CivlgY/oposgPCBoZW5rZW5cIDsKK+W6nOS4rSA8IGZ1Y2h1dVwgOwor55uu5bC7IDwgbWVqaXJpXCA7CivlhbbmlrkgPCBzb25hdGFcIDsKK+ebm+W5tCA8IHNlaW5lblwgOwor5bCP6bSoIDwga29nYW1vXCA7CivpgIDli6IgPCB0YWlzZWlcIDsKK+i/lOWgsSA8IGhlbnBvdVwgOwor5YaF5o6iIDwgbmFpdGFuXCA7CivmqKnmn4QgPCBrZW5wZWlcIDsKK+Wwj+mzpSA8IGtvdG9yaVwgOwor5bm05YqfIDwgbmVua291XCA7CivnlLDph44gPCBkZW4nJ3lhXCA7CivlhbXmlbAgPCBoZWlzdXVcIDsKK+ebquWwvSA8IHRvdWppblwgOwor55y85YmNIDwgZ2FuemVuXCA7CivoiabnoLIgPCBrYW5wb3VcIDsKK+W6l+S4uyA8IHRlbnNodVwgOwor6Lui55SfIDwgdGVuc2VpXCA7CivotrPpp4QgPCBhc2hpZGFcIDsKK+WFq+aZryA8IGhha2tlaVwgOwor55m75qW8IDwgdG91cm91XCA7Civnm67lrokgPCBtZXlhc3VcIDsKK+amgueulyA8IGdhaXNhblwgOwor5YiG5Y6YIDwgYnVucmluXCA7CivlvqHnjKrlj6MgPCBvY2hva29cIDsKK+i/veWKoCA8IHRzdWlrYVwgOwor5qiq5pyoIDwgeW9rb2dpXCA7CivlhKrmuKUgPCB5dXVha3VcIDsKK+W4huW9sSA8IGhva2FnZVwgOwor5bm05YidIDwgbmVuc2hvXCA7CivohbDplpMgPCB5b3VrYW5cIDsKK+iNieWxiyA8IHNvdW9rdVwgOwor5YWs5piOIDwga291bWVpXCA7CivlubTliIogPCBuZW5rYW5cIDsKK+W5tOWIhiA8IG5lbmJ1blwgOwor5bmV5Za2IDwgYmFrdWVpXCA7CivlsI/psK0gPCBrb2hhZGFcIDsKK+W5s+WIhiA8IGhlaWJ1blwgOwor5bmz5YehIDwgaGVpYm9uXCA7CivnmIvnmbIgPCBmdXV0ZW5cIDsKK+i/veWIhiA8IG9pd2FrZVwgOwor6bCl5aSrIDwgeWFtb21lXCA7CivnlKjph5EgPCB5b3VraW5cIDsKK+mujuS4puWlsyA8IGFpbmFtZVwgOwor6a2U54mpIDwgbWFtb25vXCA7CivlhazmlocgPCBrb3VidW5cIDsKK+iMtuW3viA8IGNoYWtpblwgOwor5YiR5YW4IDwga2VpdGVuXCA7Civov5HlnKggPCBraW56YWlcIDsKK+WIpeS7tiA8IGJla2tlblwgOwor5bGx6L66IDwgeWFtYWJlXCA7CivnlaXoqJggPCByeWFra2lcIDsKK+W3p+aJiyA8IGtvdXNodVwgOwor55yf5ZGzIDwgc2hpbm1pXCA7CivouqvnqbogPCBtaXNvcmFcIDsKK+iKi+eJiCA8IGltb2JhblwgOwor5beh5oudIDwganVucGFpXCA7CivnlKPph5EgPCBzYW5raW5cIDsKK+WFqOaVsCA8IHplbnN1dVwgOwor5YWo5pWXIDwgemVucGFpXCA7CivnnJ/lkKYgPCBzaGlucGlcIDsKK+iLpeacqCA8IHdha2FnaVwgOwor5YiX5YCZIDwgcmVra291XCA7Civov73lhLogPCB0c3VpbmFcIDsKK+WGt+WusyA8IHJlaWdhaVwgOwor5bqK5LiKIDwgeXVrYXVlXCA7Civlgb3ohpwgPCBnaW1ha3VcIDsKK+W4huW4gyA8IGhvbnVub1wgOwor5Yed5Zu6IDwgZ3lvdWtvXCA7CivpgJTkuK0gPCB0b2NodXVcIDsKK+WGheaGgiA8IG5haXl1dVwgOwor5L+X6ZaTIDwgem9ra2FuXCA7Civkv4Ppn7MgPCBzb2t1b25cIDsKK+Wwj+mqqCA8IGtvYm9uZVwgOwor5YW45ougIDwgdGVua3lvXCA7Civnmbvmnb8gPCB0b3ViYW5cIDsKK+WIneS7oyA8IHNob2RhaVwgOwor5YiA5YmjIDwgdG91a2VuXCA7CivluZXlkI8gPCBiYWt1cmlcIDsKK+mtmueBryA8IGd5b3RvdVwgOwor6Iaa6LqrIDwgaGFkYW1pXCA7CivnmZbmr5sgPCBrdXNlZ2VcIDsKK+WDreeOiyA8IHNlbicnb3VcIDsKK+WGjeaAnSA8IHNhaXNoaVwgOwor55yM5Za2IDwga2VuJydlaVwgOwor6a6u5piOIDwgc2VubWVpXCA7CivnlJ/phZIgPCBraXpha2VcIDsKK+WIhuWFmiA8IGJ1bnRvdVwgOwor5bm+5Lq6IDwgaWt1bmluXCA7CivohLPpq4QgPCBub3V6dWlcIDsKK+ecn+WMlyA8IG1ha2l0YVwgOwor5beo5oKqIDwga3lvYWt1XCA7CivojYrlprsgPCBrZWlzYWlcIDsKK+WFqOaQjSA8IHplbnNvblwgOwor5YiD5YWIIDwgaGFzYWtpXCA7CivlsbHot68gPCB5YW1hamlcIDsKK+W4r+WfnyA8IHRhaWlraVwgOwor6L+U5ZOBIDwgaGVucGluXCA7CivlsI/pppYgPCBrb2t1YmlcIDsKK+W5tOS9mSA8IG5lbicneW9cIDsKK+eUmOmFuCA8IGthbnNhblwgOwor6aiS6ZyKIDwgc291cmVpXCA7Civoh7PoirggPCBzaGlnZWlcIDsKK+mAgOS8miA8IHRhaWthaVwgOwor5a+h6buZIDwga2Ftb2t1XCA7CivliIPlgrcgPCBuaW5qb3VcIDsKK+WGjeW7uiA8IHNhaWtvblwgOwor5qW156eYIDwgZ29rdWhpXCA7CivpgIPkuqEgPCB0b3Vib3VcIDsKK+mAgOS7uyA8IHRhaW5pblwgOwor5bm05LujIDwgbmVuZGFpXCA7Civlgo3nt5ogPCBib3VzZW5cIDsKK+ecgeWWtiA8IHNob3VlaVwgOwor5biw5Zu9IDwga2lrb2t1XCA7CivnnYDkuIggPCBraXRha2VcIDsKK+i+suWgtCA8IG5vdWpvdVwgOwor6Lu95ribIDwga2VpZ2VuXCA7CivpqqjokaMgPCBrb3R0b3VcIDsKK+eZguayuyA8IHJ5b3VqaVwgOwor6L665ZywIDwgaGVuY2hpXCA7Civpp53ps6UgPCBkYWNob3VcIDsKK+WGheW+hCA8IG5haWtlaVwgOwor6IW56YOoIDwgZnVrdWJ1XCA7Civlh7rlhYggPCBkZXNha2lcIDsKK+WFg+adpSA8IGdhbnJhaVwgOwor55yf5YasIDwgbWFmdXl1XCA7CivovKrmoL0gPCByaW5zYWlcIDsKK+W3qOW8viA8IGt5b2RhblwgOwor5YWD5pysIDwgZ2VucG9uXCA7Civlh7blhbcgPCBreW91Z3VcIDsKK+iHquiLpSA8IGppamFrdVwgOwor5bm05LitIDwgbmVuanV1XCA7CivnmbrmlaMgPCBoYXNzYW5cIDsKK+W4q+WboyA8IHNoaWRhblwgOwor6aex6aedIDwgcmFrdWRhXCA7CivlhoXlu7cgPCBuYWl0ZWlcIDsKK+WCjeezuyA8IGJvdWtlaVwgOwor5YiG5L2TIDwgYnVudGFpXCA7CivlubPmmJPljJYgPCBoZWlpa2FcIDsKK+i/juWQiCA8IGdlaWdvdVwgOwor5a6J5L+d55CGIDwgYW5wb3JpXCA7Civkv67pgKAgPCBzaHV6b3VcIDsKK+iNieWggiA8IHNvdWRvdVwgOwor5bmy5LiOIDwga2FuJyd5b1wgOwor5qmf5bGLIDwgaGF0YXlhXCA7CivovrLlnLAgPCBub3VjaGlcIDsKK+abvuelluavjSA8IGhpYmFiYVwgOwor6Iiq56m6IDwga291a3V1XCA7CivluILlrZAgPCBpY2hpa29cIDsKK+WwiumhlCA8IHNvbmdhblwgOwor6LuN54qsIDwgZ2Vua2VuXCA7Civkv67ovp4gPCBzaHV1amlcIDsKK+eUn+i6qyA8IG5hbWFtaVwgOwor5qiq5omLIDwgeW9rb3RlXCA7CivlgZzoiLkgPCB0ZWlzZW5cIDsKK+ecjOWLoiA8IGtlbnNlaVwgOwor5YWt5oSfIDwgcm9ra2FuXCA7CivlhYPml6YgPCBnYW50YW5cIDsKK+eUu+iqvyA8IGdhY2hvdVwgOwor5YaX5a6YIDwgam91a2FuXCA7Civlh6bliIYgPCBzaG9idW5cIDsKK+i7veawtCA8IGtlaXN1aVwgOwor6Ieq6IW5IDwgamliYXJhXCA7CivliIbkuI4gPCBidW4nJ3lvXCA7Civlh6blh6YgPCBzaG9zaG9cIDsKK+iKkua0iyA8IGJvdXlvdVwgOwor5bCP6ZuqIDwga295dWtpXCA7CivlsI/pm6ggPCBrb3NhbWVcIDsKK+WwjumbuyA8IGRvdWRlblwgOwor5YW15b25IDwgaGVpZWtpXCA7CivlsI/pm4AgPCBrb2dhcmFcIDsKK+exkOakheWtkCA8IHRvdWlzdVwgOwor5Ye95Lq6IDwga2FuamluXCA7Civnm5floYEgPCB0b3VydWlcIDsKK+iLpuaJiyA8IG5pZ2F0ZVwgOwor5a++6aGUIDwgdGFpZ2FuXCA7Civoi6XmiYsgPCB3YWthdGVcIDsKK+WGrOWgtCA8IGZ1eXViYVwgOwor5YKs55ygIDwgc2FpbWluXCA7CivlhKrmn5QgPCB5dXVqdXVcIDsKK+Wwj+aWh+WtlyA8IGtvbW9qaVwgOwor6Iq45p6XIDwgZ2VpcmluXCA7Civnm7jlj40gPCBzb3VoYW5cIDsKK+W3qOWyqSA8IGt5b2dhblwgOwor5biv5ZCMIDwgdGFpZG91XCA7CivluLjli6QgPCBqb3VraW5cIDsKK+iNmOWPuCA8IHNob3VqaVwgOwor5YeN5Y6fIDwgdG91Z2VuXCA7Civmpb3nlYwgPCBnYWtrYWlcIDsKK+iNmOWOsyA8IHNvdWdvblwgOwor5Ye65LiWIDwgc2h1c3NlXCA7Civlh4TlkbMgPCBzdWdvbWlcIDsKK+iHque/kiA8IGppc2h1dVwgOwor5Yeh5YOnIDwgYm9uc291XCA7Civlr77pnaIgPCB0YWltZW5cIDsKK+eVquiMtiA8IGJhbmNoYVwgOwor55Ww6ImyIDwgaXNob2t1XCA7Civlhoblr4IgPCBlbmpha3VcIDsKK+W3nuW0jiA8IHN1c2FraVwgOwor6L+R5YKNIDwga2luYm91XCA7CivlhaXlvqEgPCBueXV1Z29cIDsKK+WGheWuriA8IG5haWd1dVwgOwor5biC5aG1IDwgc2hpamluXCA7Civot7XoqIAgPCBzZW5nZW5cIDsKK+iKs+abuCA8IGhvdXNob1wgOwor55So6KuHIDwgeW91ZGFuXCA7CivoirHmnKggPCBrYWJva3VcIDsKK+S9meaJgOebriA8IHlvc29tZVwgOwor5YWs5bmzIDwga291aGVpXCA7CivlhoXlrasgPCBuYWlzb25cIDsKK+S/nei6qyA8IGhvc2hpblwgOwor55m65oakIDwgaGFwcHVuXCA7CivoiIznq68gPCB6ZXR0YW5cIDsKK+WFqOW6lyA8IHplbnRlblwgOwor5a++6ZmjIDwgdGFpamluXCA7CivkvovpoYwgPCByZWlkYWlcIDsKK+W4r+WJoyA8IHRhaWtlblwgOwor5bid5ZG9IDwgdGVpbWVpXCA7Civou5/ms6UgPCBuYW5kZWlcIDsKK+iMheWxiyA8IGJvdW9rdVwgOwor5YWl5bqrIDwgbnl1dWtvXCA7CivnlKjoqIAgPCB5b3VnZW5cIDsKK+eZuuaEjyA8IGhhdHN1aVwgOwor5YWl5bqcIDwgbnl1dWZ1XCA7CivoirjmlocgPCBnZWlidW5cIDsKK+WwgumWgCA8IHNlbm1vblwgOwor5biv5YiAIDwgdGFpdG91XCA7Civoi6blv4MgPCBrdXNoaW5cIDsKK+aqgOWQmyA8IGRhbmt1blwgOwor5YW85a6YIDwga2Vua2FuXCA7CivlsL/ot68gPCBueW91cm9cIDsKK+ecjOS8miA8IGtlbmthaVwgOwor55uk5Y+wIDwgYmFuZGFpXCA7CivluIPlnLAgPCBudW5vamlcIDsKK+iHs+e0lCA8IHNoaWp1blwgOwor6I2J5Y6fIDwgc291Z2VuXCA7Civoh6rnuJsgPCBqaWJha3VcIDsKK+aihemFkiA8IHVtZXNodVwgOwor5YWD5omLIDwgbW90b2RlXCA7CivkuIvpmaLorbAgPCBrYWluZ2lcIDsKK+ecjOS7pCA8IGtlbnJlaVwgOwor5a+d6aaWIDwgbmVrdWJpXCA7CivnlJ/oqpUgPCBzZWl0YW5cIDsKK+i7n+awtCA8IG5hbnN1aVwgOwor6L+R5LujIDwga2luZGFpXCA7CivnnIzkurogPCBrZW5qaW5cIDsKK+ebhuWcsCA8IGJvbmNoaVwgOwor5a215YyW5ZmoIDwgZnVrYWtpXCA7Civou43muK8gPCBndW5rb3VcIDsKK+WFmuW8iiA8IHRvdWhlaVwgOwor5Ya35Y6zIDwgcmVpZ2VuXCA7Civoh63ntKAgPCBzaHV1c29cIDsKK+iMhOWtkCA8IG5hc3ViaVwgOwor55uX5ZOBIDwgdG91aGluXCA7CivoiJfnn7MgPCBob3Nla2lcIDsKK+iHque1piA8IGppa3l1dVwgOwor6L+U5LiKIDwgaGVuam91XCA7CivprZrmoq8gPCBneW90ZWlcIDsKK+ebm+WQjSA8IHNlaW1laVwgOwor5YWo5bO2IDwgemVudG91XCA7Civota3poZQgPCBzaGFnYW5cIDsKK+WFseWvnSA8IHRvbW9uZVwgOwor5omL55yf5Ly8IDwgdGVtYW5lXCA7CivlsI/piq0gPCBrb3plbmlcIDsKK+i/keS4liA8IGtpbnNlaVwgOwor6Ieo57WCIDwgcmluanV1XCA7CivluLjkvosgPCBqb3VyZWlcIDsKK+WFqOWyuCA8IHplbmdhblwgOwor5beo5aSnIDwga3lvZGFpXCA7CivovpvlkbMgPCBrYXJhbWlcIDsKK+WGheWkliA8IG5haWdhaVwgOwor55uu5YWIIDwgbWVzYWtpXCA7CivluLjkvY8gPCBqb3VqdXVcIDsKK+i+suWFtSA8IG5vdWhlaVwgOwor5YKN55uuIDwgaGF0YW1lXCA7CivlsZXopqcgPCB0ZW5yYW5cIDsKK+W4uOS8miA8IGpvdWthaVwgOwor5bi45Lu7IDwgam91bmluXCA7Civkv6/op5IgPCBmdWtha3VcIDsKK+eXtOa8oiA8IGNoaWthblwgOwor6LuN5rOVIDwgZ3VucG91XCA7CivlsI/ph5EgPCBrb2dhbmVcIDsKK+WGt+WJmyA8IHJlaWdvdVwgOwor5bi45Lq6IDwgam91amluXCA7CivprZrmnb8gPCBneW9iYW5cIDsKK+W0qea9sCA8IGhvdWthaVwgOwor5LiN5aaC5oSPIDwgZnVueW9pXCA7Civlg6fmraMgPCBzb3Vqb3VcIDsKK+WFgeaBrSA8IGlua3lvdVwgOwor6Lu45pyoIDwgamlrdWdpXCA7Civnm7jkvJ0gPCBzb3VkZW5cIDsKK+W4neWGoCA8IHRlaWthblwgOwor5L216Z+zIDwgcGluJydpblwgOwor6auY55uuIDwgdGFrYW1lXCA7Civlhobln58gPCBlbicnaWtpXCA7Civlr5LpoqggPCBrYW5wdXVcIDsKK+mnhemgrSA8IGVraXRvdVwgOwor5YK+54CJIDwga2Vpc2hhXCA7Civlhrflh40gPCByZWl0b3VcIDsKK+i7jeawkSA8IGd1bm1pblwgOwor6aqo57KJIDwga29wcHVuXCA7Civnl4XnkIYgPCBieW91cmlcIDsKK+W4uOS4liA8IHRva295b1wgOwor6Ia16IeTIDwgc3Vpem91XCA7CivlhbblpbQgPCBzb2l0c3VcIDsKK+WFheW9kyA8IGp1dXRvdVwgOwor5L+u6KOcIDwgc2h1dWhvXCA7CivluIPlkYogPCBmdWtva3VcIDsKK+iIjueboyA8IHNoYWthblwgOwor5YSS5pWZIDwganVreW91XCA7Civkv5forbAgPCB6b2t1Z2lcIDsKK+a5r+aWh+WtlyA8IHl1bW9qaVwgOwor5Ya35YWJIDwgcmVpa291XCA7Civlr53pmpsgPCBuZWdpd2FcIDsKK+eahOWxiyA8IHRla2l5YVwgOwor55Ww5qmf56iuIDwgaWtpc2h1XCA7Civnm4rlj4sgPCBla2l5dXVcIDsKK+WGheWcqCA8IG5haXphaVwgOwor5YW15aSJIDwgaGVpaGVuXCA7CivlsbHokbUgPCB3YXNhYmlcIDsKK+WBteefpSA8IHRlaWNoaVwgOwor55ar55mYIDwgZWtpcmVpXCA7Civnm7LkurogPCBtb3VqaW5cIDsKK+eah+WuriA8IGtvdWd1dVwgOwor6IO96Z2iIDwgbm91bWVuXCA7Civnm5vlhbggPCBzZWl0ZW5cIDsKK+aguembqiA8IG5leXVraVwgOwor6IyF5aC0IDwga2F5YWJhXCA7CivluLDkuIAgPCBraWl0c3VcIDsKK+eah+WtqyA8IGtvdXNvblwgOwor5L6u6L6xIDwgYnVqb2t1XCA7Civnlarnt5ogPCBiYW5zZW5cIDsKK+i+suS8miA8IG5vdWthaVwgOwor5L+X6KqeIDwgem9rdWdvXCA7Civnm67ku4ogPCBtb2trb25cIDsKK+ebtOS4iyA8IGNob2trYVwgOwor5bGx6I+cIDwgc2Fuc2FpXCA7Civou6LmoKEgPCB0ZW5rb3VcIDsKK+S/l+ipsSA8IHpva3V3YVwgOwor55al55msIDwga2Fpc2VuXCA7Civoi6blraYgPCBrdWdha3VcIDsKK+WFg+W4pSA8IGdlbnN1aVwgOwor55m95a+/IDwgaGFrdWp1XCA7CivlhqXliKkgPCBteW91cmlcIDsKK+eZuuWxlSA8IGhhdHRlblwgOwor5beh5ZueIDwganVua2FpXCA7CivovKrlu7sgPCByaW4nJ25lXCA7CivlhbjlnosgPCB0ZW5rZWlcIDsKK+WxseiNmCA8IHNhbnNvdVwgOwor5YWs5aOyIDwga291YmFpXCA7CivohLHpgIAgPCBkYXR0YWlcIDsKK+S/l+inoyA8IHpva2thaVwgOwor6IOM6bCtIDwgc2ViaXJlXCA7CivotaTploAgPCBha2Ftb25cIDsKK+WxjeidiyA8IHNoaXJvdVwgOwor55Wd57mUIDwgdW5lb3JpXCA7Civkv5foposgPCB6b2trZW5cIDsKK+WAieiNtyA8IGt1cmFuaVwgOwor6Iqz5oOFIDwgaG91am91XCA7CivpppbprYEgPCBzaHVrYWlcIDsKK+eUn+iWkSA8IHNob3VnYVwgOwor5YW15ZujIDwgaGVpZGFuXCA7Civlr77pgYcgPCB0YWlndXVcIDsKK+S6nOegkumFuCA8IGFoaXNhblwgOwor55Sf6JWDIDwgc2VpYmFuXCA7CivlhY3lrpggPCBtZW5rYW5cIDsKK+W4guWGhSA8IHNoaW5haVwgOwor6Lu95oyZIDwga2Vpa3lvXCA7Civoia/moYggPCByeW91YW5cIDsKK+WuuemhlCA8IHlvdWdhblwgOwor5YaG5ZGzIDwgbWFydW1pXCA7Civnm5vkvJogPCBzZWlrYWlcIDsKK+WGhuWRqCA8IGVuc2h1dVwgOwor6Iq45b2TIDwgZ2VpdG91XCA7CivnlJjolq8gPCBrYW5zaG9cIDsKK+WGheWRvSA8IG5haW1laVwgOwor6LuK5qScIDwgc2hha2VuXCA7CivoirPlv5cgPCBob3VzaGlcIDsKK+Wwj+i2syA8IGtvYXNoaVwgOwor5a++6L66IDwgdGFpaGVuXCA7Civoi5flrZcgPCBteW91amlcIDsKK+iDjOmqqCA8IHNlYm9uZVwgOwor5YaF5ZCrIDwgbmFpZ2FuXCA7CivppqzpnakgPCBiYWtha3VcIDsKK+ebn+S4uyA8IG1laXNodVwgOwor5YaF5ZCIIDwgbmFpZ291XCA7Civlt6jlj6MgPCBreW9rb3VcIDsKK+WGjeWLpCA8IHNhaWtpblwgOwor5biC5YK1IDwgc2hpc2FpXCA7CivlsqnnqbQgPCBpd2FhbmFcIDsKK+WFg+WvhyA8IGdlbmtvdVwgOwor5L2Z6ZyHIDwgeW9zaGluXCA7CivlhpXlhqAgPCBiZW5rYW5cIDsKK+iMtuS8miA8IGNoYWthaVwgOwor5L2O6aCtIDwgdGVpdG91XCA7CivlhobljZMgPCBlbnRha3VcIDsKK+WvhumWiSA8IG1pcHBlaVwgOwor5bGx6IOMIDwgeWFtYXNlXCA7Civmp5jmhYsgPCB5b3V0YWlcIDsKK+iMtuS7oyA8IGNoYWRhaVwgOwor5YKs5raZIDwgc2FpcnVpXCA7Civog4zpprMgPCBoYWljaGlcIDsKK+iEsei1sCA8IGRhc3NvdVwgOwor55m+5aScIDwgbW9tb3lvXCA7Civoi6blooMgPCBrdWt5b3VcIDsKK+WGmeWDjyA8IHNoYXpvdVwgOwor5a6f6aiTIDwgamlra2VuXCA7CivojLbkurogPCBjaGFqaW5cIDsKK+iLseWbvSA8IGVpa29rdVwgOwor5YaN5YiKIDwgc2Fpa2FuXCA7CivlhoXli6QgPCBuYWlraW5cIDsKK+iCuumtmiA8IGhhaWd5b1wgOwor6Ieq55m9IDwgamloYWt1XCA7Civou43mm7ggPCBndW5zaG9cIDsKK+WCjeeCuSA8IGJvdXRlblwgOwor5L6/6KanIDwgYmVucmFuXCA7Civnmbvlo4cgPCB0b3VkYW5cIDsKK+aknOecvCA8IGtlbmdhblwgOwor5qCh6ZaAIDwga291bW9uXCA7CivpppbpoYwgPCBzaHVkYWlcIDsKK+WFiOWmuyA8IHNlbnNhaVwgOwor6aqo55u4IDwga29zc291XCA7CivpmL/kv67nvoUgPCBhc2h1cmFcIDsKK+eUmOiNiSA8IGthbnpvdVwgOwor55SY6Iy2IDwgYW1hY2hhXCA7CivnmbvloLQgPCB0b3Vqb3VcIDsKK+WvnemFkiA8IG5lemFrZVwgOwor5b6h6ZuR54WuIDwgb3pvdW5pXCA7CivlhYTlprkgPCBrZWltYWlcIDsKK+WFpeWWtiA8IG55dXVlaVwgOwor5YW85YukIDwga2Vua2luXCA7Civou5LmlbAgPCBrZW5zdXVcIDsKK+WFiOWkqSA8IHNlbnRlblwgOwor5YaG5YaFIDwgZW4nJ25haVwgOwor5YaF5YaFIDwgbmFpbmFpXCA7Civou43ml4UgPCBndW5yeW9cIDsKK+WGheWFuCA8IG5haXRlblwgOwor6Lu95b+rIDwga2Vpa2FpXCA7Civlhajlk6EgPCB6ZW4nJ2luXCA7Civoh6jnlYwgPCByaW5rYWlcIDsKK+mrmOeArCA8IHRha2FzZVwgOwor5YWo5ZOBIDwgemVucGluXCA7CivmpJznl7AgPCBrZW50YW5cIDsKK+WFpeWUkCA8IG5pdHRvdVwgOwor5bCP6KmxIDwgc2hvdXdhXCA7Civog4zpnakgPCBzZWdhd2FcIDsKK+W3qOWEhCA8IGt5b29rdVwgOwor6IOM6Z2iIDwgaGFpbWVuXCA7CivlgrXmqKkgPCBzYWlrZW5cIDsKK+i8quWnpiA8IHJpbmthblwgOwor55aR542EIDwgZ2lnb2t1XCA7Civnmq7ohprnp5EgPCBoaWZ1a2FcIDsKK+Wwj+iogCA8IGtvZ290b1wgOwor5qSc55WqIDwga2VuYmFuXCA7CivlhYXloasgPCBqdXV0ZW5cIDsKK+WxpOe+pCA8IHNvdWd1blwgOwor6Iqx5bGLIDwgaGFuYXlhXCA7Civou5/mipUgPCBuYW50b3VcIDsKK+i7ouaIpiA8IHRlbnNlblwgOwor5YG254S2IDwgZ3V1emVuXCA7CivnlJ/ogrIgPCBzZWlpa3VcIDsKK+WyqeebpCA8IGdhbmJhblwgOwor5YWx5YqpIDwga3lvdWpvXCA7CivovIPlt64gPCBrYWt1c2FcIDsKK+WFteWIgyA8IGhlaWppblwgOwor6IuX5ZyDIDwgYnlvdWhvXCA7Civlho3ku7sgPCBzYWluaW5cIDsKK+S9memMsiA8IHlvcm9rdVwgOwor55eF5rCXIDwgYnlvdWtpXCA7Civpp4XpgJMgPCBla2l0ZWlcIDsKK+Wun+mamyA8IGppc3NhaVwgOwor55Sf6ICFIDwgc2hvdWphXCA7CivnlLHnt5IgPCB5dWlzaG9cIDsKK+S/s+iBliA8IGhhaXNlaVwgOwor5bGx57O7IDwgc2Fua2VpXCA7CivnlLfns7sgPCBkYW5rZWlcIDsKK+WvvuirliA8IHRhaXJvblwgOwor5a+u6LK7IDwgcnlvdWhpXCA7Civouqvmn4QgPCBtaWdhcmFcIDsKK+WAq+ekviA8IHJpbnNoYVwgOwor5beo5L2TIDwga3lvdGFpXCA7CivlhoXkvY8gPCBuYWlqdXVcIDsKK+eah+WQjiA8IGtvdWdvdVwgOwor5bCP6KKWIDwga29zb2RlXCA7Civlr77oqp4gPCB0c3VpZ29cIDsKK+iDvei+ryA8IG5vdWJlblwgOwor6Ium5ZGzIDwgbmlnYW1pXCA7CivprYXmg5EgPCBtaXdha3VcIDsKK+WGjeS4iSA8IHNhaXNhblwgOwor5beo5Lq6IDwga3lvamluXCA7CivlsIboo5wgPCBzaG91aG9cIDsKK+iKuOWkpyA8IGdlaWRhaVwgOwor6Ii35qKvIDwgZ2VudGVpXCA7CivohLHooaMgPCBkYXRzdWlcIDsKK+WGhuS4mCA8IGVua3l1dVwgOwor6Iqd5bGFIDwgc2hpYmFpXCA7Civou5/mgKcgPCBuYW5zZWlcIDsKK+eahuWLpCA8IGthaWtpblwgOwor5beo5LiHIDwga3lvbWFuXCA7Civmn7vplrIgPCBzYWV0c3VcIDsKK+WvuOiogCA8IHN1bmdlblwgOwor5a+G6YCBIDwgbWlzc291XCA7CivnlKjntJkgPCB5b3VzaGlcIDsKK+S9k+mHjSA8IHRhaWp1dVwgOwor5qOE57SEIDwga2l5YWt1XCA7Civkvo3oqq0gPCBqaWRva3VcIDsKK+mqqOeJjCA8IGthcnV0YVwgOwor6aqo54mHIDwga29wcGVuXCA7CivlhJLlraYgPCBqdWdha3VcIDsKK+iHqueEtiA8IHNoaXplblwgOwor6LWk6LWkIDwgYWthYWthXCA7CivoibLmgqogPCBpcm9ha3VcIDsKK+iLpuWKmyA8IGt1dXJpaVwgOwor6Lqr5pa5IDwgbWlrYXRhXCA7Civmpbfmm7ggPCBrYWlzaG9cIDsKK+WunemRkSA8IGhvdWthblwgOwor5byf5bCP54i2IDwgb3Rvb2ppXCA7Civkv6HogIUgPCBzaGluamFcIDsKK+iGv+eYjSA8IG5vdXlvdVwgOwor5qaC5pWwIDwgZ2Fpc3V1XCA7Civoirjln58gPCBnZWlpa2lcIDsKK+Wwj+iZjiA8IGtvZG9yYVwgOwor6Imy5oGLIDwgaXJva29pXCA7CivogrrploAgPCBoYWltb25cIDsKK+eVoueUnyA8IGhpc3NlaVwgOwor55Sf57SZIDwga2lnYW1pXCA7CivlhYjlkJsgPCBzZW5rdW5cIDsKK+i1pOiynSA8IGFrYWdhaVwgOwor5L6L6KejIDwgcmVpa2FpXCA7CivnmoblhbUgPCBrYWloZWlcIDsKK+i7jeaDhSA8IGd1bmpvdVwgOwor6auY5q2vIDwgdGFrYWJhXCA7CivlhbXkubEgPCBoZWlyYW5cIDsKK+S9lemBjSA8IG5hbmJlblwgOwor6aeE6LODIDwgZGFjaGluXCA7CivlsL7nv7wgPCBiaXlva3VcIDsKK+mrhOa2siA8IHp1aWVraVwgOwor5bCB6J2LIDwgZnV1cm91XCA7CivlhZrlhoUgPCB0b3VuYWlcIDsKK+WFrOS9jyA8IGtvdWp1dVwgOwor55Sf57KLIDwga2lzc3VpXCA7Civkv5fogLMgPCB6b2t1amlcIDsKK+WutOmBiiA8IGVuJyd5dXVcIDsKK+WFg+WPtyA8IGdlbmdvdVwgOwor6aqo54KtIDwga290dGFuXCA7CivlgbTms7MgPCBzb2JhZWlcIDsKK+iLseS/iiA8IGVpc2h1blwgOwor6ISx6JepIDwgZGFwcGFuXCA7CivlhIDlrrggPCBnaXNoaW5cIDsKK+S/guiIuSA8IGtlaXNlblwgOwor5p+U6aCGIDwganV1anVuXCA7CivnlarniqwgPCBiYW5rZW5cIDsKK+mmrOi6qyA8IGJhc2hpblwgOwor55eZ5pSjIDwga2VpcmVuXCA7Civkvr/oiLkgPCBiaW5zZW5cIDsKK+iFjuiHkyA8IGppbnpvdVwgOwor6aaz6LWwIDwgY2hpc291XCA7CivkuLvmsrvljLsgPCBzaHVqaWlcIDsKK+iFi+iHrSA8IHdha2lnYVwgOwor5LiN6Kqg5oSPIDwgZnVzZWlpXCA7CivlgZzmu54gPCB0ZWl0YWlcIDsKK+iLseS6rCA8IGVpa3lvdVwgOwor5a+d6KiAIDwgbmVnb3RvXCA7CivlgYnng4ggPCBpcmV0c3VcIDsKK+mtr+WbvSA8IHJva29rdVwgOwor5YWF5YiGIDwganV1YnVuXCA7CivnmobkvJ0gPCBrYWlkZW5cIDsKK+eXtOaDhSA8IGNoaWpvdVwgOwor5bSH5pWsIDwgc3V1a2VpXCA7CivlvqHoqaDmrYwgPCBnb2Vpa2FcIDsKK+i7ouWvnSA8IGdvcm9uZVwgOwor6IWQ6IKJIDwgZnVuaWt1XCA7CivovLjlhaUgPCB5dW55dXVcIDsKK+WFiOWFtSA8IHNlbnBlaVwgOwor6LuN5bi9IDwgZ3VuYm91XCA7Civkv5fnuIEgPCB6b2t1ZW5cIDsKK+iFueetiyA8IGZ1a2tpblwgOwor6Ieq5racIDwgaml0b2t1XCA7CivohprnnYAgPCBoYWRhZ2lcIDsKK+Wuuei1piA8IHlvdXNoYVwgOwor5bC/57SgIDwgbnlvdXNvXCA7CivmoITpgLIgPCBlaXNoaW5cIDsKK+alk+aelyA8IGZ1dXJpblwgOwor5L2Z6LOKIDwgeW96b2t1XCA7CivmpJzmuKkgPCBrZW4nJ29uXCA7Civlr5PoqIAgPCBndXVnZW5cIDsKK+mmlui8qiA8IGt1Yml3YVwgOwor6Iq45ZCNIDwgZ2VpbWVpXCA7CivlgaXmsJcgPCBrZW5hZ2VcIDsKK+aghOi+sSA8IGVpam9rdVwgOwor6IOD5LiL5Z6CIDwgaWthc3VpXCA7CivotaToo7ggPCBzZWtpcmFcIDsKK+Wwj+iIuSA8IGtvYnVuZVwgOwor5LyN6ZW3IDwgZ29jaG91XCA7CivlsYjnrYsgPCBrdWtraW5cIDsKK+WuueiyjCA8IHlvdWJvdVwgOwor55m65LyaIDwgaGFra2FpXCA7Civoh6rmsoggPCBqaWNoaW5cIDsKK+eXm+aJkyA8IHRzdXVkYVwgOwor5a626LODIDwgeWFjaGluXCA7Civnmbvku5kgPCB0b3VzZW5cIDsKK+iKs+WQjSA8IGhvdW1laVwgOwor5a2m6ZmiIDwgZ2FrdWluXCA7CivliLfmr5vnm64gPCBoYWtlbWVcIDsKK+mtlOWigyA8IG1ha3lvdVwgOwor55Sy54OP6LOKIDwga291aWthXCA7CivoiIzmoLkgPCB6ZWtrb25cIDsKK+W0qeW+oSA8IGhvdWd5b1wgOwor6aWF6aCtIDwgbWFuanV1XCA7CivkvZzorZwgPCBzYWt1ZnVcIDsKK+WFiOS+vyA8IHNlbmJpblwgOwor5bCP6IadIDwga29oaXphXCA7Civlsqzmub4gPCBrb3V3YW5cIDsKK+Wwj+iFuSA8IGtvYmFyYVwgOwor5YWD5YCkIDwgbW90b25lXCA7Civpqqjms5UgPCBrb3Bwb3VcIDsKK+iJr+WutiA8IHJ5b3VrZVwgOwor5YWJ5L2TIDwga291dGFpXCA7CivlrpjovrogPCBrYW5wZW5cIDsKK+Wun+i7iiA8IGppc3NoYVwgOwor5a+G6KiIIDwgbWlra2VpXCA7Civkupzmi4nmr5jkupwgPCBhcmFiaWFcIDsKK+S7i+mxlyA8IGthaXJpblwgOwor6IO46KOPIDwga3lvdXJpXCA7CivlsI/ohIcgPCBrb3dha2lcIDsKK+S8iumBlOedgCA8IGRhdGVnaVwgOwor5bSH5oudIDwgc3V1aGFpXCA7CivmpoLlv7UgPCBnYWluZW5cIDsKK+eUqOebiiA8IHlvdWVraVwgOwor5bGv55SwIDwgdG9uZGVuXCA7Civohr7ngpkgPCBrYWlzaGFcIDsKK+WFiOS7oyA8IHNlbmRhaVwgOwor5bCP6IKhIDwga29tYXRhXCA7Civou6LlpIkgPCB0ZW5wZW5cIDsKK+i7ouWjsiA8IHRlbmJhaVwgOwor5b6h6KaL6IieIDwgb21pbWFpXCA7Civlrp/ot7UgPCBqaXNzZW5cIDsKK+WumOi7jSA8IGthbmd1blwgOwor6IOM6LWwIDwgaGFpc291XCA7CivouqvlvaIgPCBtaW5hcmlcIDsKK+agoeiokyA8IGtvdWt1blwgOwor5bCP6ICzIDwga29taW1pXCA7CivogbTpn7MgPCBjaG91b25cIDsKK+WuueiqjSA8IHlvdW5pblwgOwor6ISx6ISCIDwgZGFzc2hpXCA7CivkvJrph4ggPCBlc2hha3VcIDsKK+WtlOmbgCA8IGt1amFrdVwgOwor5bCP6ICFIDwga29tb25vXCA7Civku6PpoZggPCBkYWlnYW5cIDsKK+mkium2jyA8IHlvdWtlaVwgOwor6IOM5paH5a2XIDwgc2Vtb2ppXCA7Civkv4LntK8gPCBrZWlydWlcIDsKK+iCnemKmCA8IGthbm1laVwgOwor5L2Z6KeSIDwgeW9rYWt1XCA7CivohLHogpsgPCBkYWtrb3VcIDsKK+WvneiXgSA8IG5ld2FyYVwgOwor5YSq5puH6I+vIDwgdWRvbmdlXCA7CivlgbbmnIkgPCBndXV5dXVcIDsKK+WvhuihjCA8IG1pa2tvdVwgOwor5YWD5LiJIDwgZ2FuemFuXCA7CivkvZPoqIAgPCB0YWlnZW5cIDsKK+i6q+W5hSA8IG1paGFiYVwgOwor5Luy6ZaTIDwgbmFrYW1hXCA7CivkvLTotbAgPCBiYW5zb3VcIDsKK+i7ouWcsCA8IHRlbmNoaVwgOwor6Imv5aScIDwgcnlvdXlhXCA7CivkvZPopoEgPCB0YWl5b3VcIDsKK+S8nemAgSA8IGRlbnNvdVwgOwor6LSL6YCgIDwgZ2Fuem91XCA7CivlvqHopYHopJMgPCBvbXV0c3VcIDsKK+iHqOaknCA8IHJpbmtlblwgOwor5a++6IGvIDwgdGFpcmVuXCA7CivpppborIAgPCBzaHVib3VcIDsKK+WDleWpoiA8IGJva3VoaVwgOwor5qOS54q2IDwgYm91am91XCA7Civku5bpoJggPCB0YXJ5b3VcIDsKK+WvuOiDtCA8IHp1bmRvdVwgOwor5Lq66a2aIDwgbmluZ3lvXCA7CivkvZPoo4EgPCB0ZWlzYWlcIDsKK+WBtuaVsCA8IGd1dXN1dVwgOwor6aSK6a2aIDwgeW91Z3lvXCA7CivlsI7nt5ogPCBkb3VzZW5cIDsKK+WujOi1sCA8IGthbnNvdVwgOwor6aas6J2/IDwgdW1hYmFlXCA7Civku6TplqggPCByZWlrZWlcIDsKK+Wvvue9riA8IHRhaWNoaVwgOwor6aeQ6IuxIDwgY2h1dWVpXCA7Civopb/nj63niZkgPCBzdXBlaW5cIDsKK+iCqei6qyA8IGthdGFtaVwgOwor5LuK6aKoIDwgaW1hZnV1XCA7CivpgJnjgIUgPCBob3Vob3VcIDsKK+iKuOS6uiA8IGdlaW5pblwgOwor5p+U6YGTIDwganV1ZG91XCA7CivohLHnt5ogPCBkYXNzZW5cIDsKK+agueiPnCA8IGtvbnNhaVwgOwor6IOh6J22IDwga29jaG91XCA7CivlsI/ns6AgPCBrb251a2FcIDsKK+aknOahiCA8IGtlbicnYW5cIDsKK+WumuirliA8IHRlaXJvblwgOwor5qW95bGLIDwgZ2FrdXlhXCA7Civnl4XlvowgPCBieW91Z29cIDsKK+iGv+axgSA8IG5vdWp1dVwgOwor5YKy5bK4IDwgZ291Z2FuXCA7CivlsI/nsbMgPCBrb2dvbWVcIDsKK+WtpumDqCA8IGdha3VidVwgOwor6Ieo5pu4IDwgcmluc2hvXCA7Civmn7voqq0gPCBzYWRva3VcIDsKK+iFq+eYjSA8IHNodXlvdVwgOwor5qW95a+dIDwgcmFrdW5lXCA7CivlsIHnt5ggPCBmdXVrYW5cIDsKK+agueiMjiA8IGtvbmtlaVwgOwor6Iao5rqAIDwgYm91bWFuXCA7Civkv67nkIYgPCBzaHV1cmlcIDsKK+iEseezniA8IGRhcHB1blwgOwor6IeY5qKFIDwgcm91YmFpXCA7Civmn7voqLwgPCBzYXNob3VcIDsKK+WAkua9sCA8IHRvdWthaVwgOwor6IiM5oimIDwgemVzc2VuXCA7Civpq5jmhaIgPCBrb3VtYW5cIDsKK+aflOi7nyA8IGp1dW5hblwgOwor5bCP566xIDwga29iYWtvXCA7CivlsL3nmIEgPCBqaW5zdWlcIDsKK+WwiuewoSA8IHNvbmthblwgOwor5bCO566hIDwgZG91a2VuXCA7CivlrproposgPCB0ZWlrZW5cIDsKK+eTpuekqyA8IGdhcmVraVwgOwor5a6f6KOFIDwgamlzc291XCA7CivmpbXlr5IgPCBnb2trYW5cIDsKK+mnheiIjiA8IGVraXNoYVwgOwor5p2l6a6uIDwgcmFpc2VuXCA7CivkurrpoZ4gPCBqaW5ydWlcIDsKK+S6oemtgiA8IGJvdWtvblwgOwor6LSI6LOEIDwgem91d2FpXCA7Civkvb/ogZggPCBzaGloZWlcIDsKK+S6uumgrSA8IGppbnRvdVwgOwor6LWw6ICFIDwgc291c2hhXCA7Civlrp/ooYwgPCBqaWtrb3VcIDsKK+i7jeWWtiA8IGd1bicnZWlcIDsKK+i7veS+vyA8IGtlaWJlblwgOwor5L2/6ICFIDwgc2hpc2hhXCA7CivlgbbmiJAgPCBndXVzZWlcIDsKK+i7ouWLpCA8IHRlbmtpblwgOwor5L+X55S7IDwgem9rdWdhXCA7Civlr77nsbMgPCB0YWliZWlcIDsKK+i3neeIqiA8IGt5b3NvdVwgOwor5Lq66Z2iIDwgamlubWVuXCA7CivogIHpvaIgPCByb3VyZWlcIDsKK+iJr+WQjyA8IHJ5b3VyaVwgOwor5p2+6ZyyIDwgc2hvdXJvXCA7CivlsIHnrZIgPCBmdXV0b3VcIDsKK+mjm+mzpSA8IGhpY2hvdVwgOwor6ISa57WGIDwga3lhaGFuXCA7CivlgbbmhJ8gPCBndXVrYW5cIDsKK+iynemhniA8IGthaXJ1aVwgOwor5LuY6YyyIDwgZnVyb2t1XCA7CivlgY/ml4EgPCBoZW5ib3VcIDsKK+S7o+mHkSA8IGRhaWtpblwgOwor5YGP5pacIDwgaGVuc2hhXCA7Civlr5LogqUgPCBrYW5nb2VcIDsKK+i7ouWGmSA8IHRlbnNoYVwgOwor5Lya6KuHIDwga2FpZGFuXCA7CivoiI7lvJ8gPCBzaGF0ZWlcIDsKK+mmtOiHtCA8IGp1bmNoaVwgOwor6a2a5LuLIDwgZ3lva2FpXCA7CivlgpjlsYsgPCBrYXNheWFcIDsKK+S8neiogCA8IGRlbmdvblwgOwor6LuK5Y+wIDwgc2hhZGFpXCA7CivkuI3opovnm64gPCBtaWppbWVcIDsKK+WvvuepuiA8IHRhaWt1dVwgOwor5Lya6KiIIDwga2Fpa2VpXCA7CivkvZzoiIggPCBzYWtrb3VcIDsKK+iFuOeCjiA8IGNob3VlblwgOwor5Lq66ZaTIDwgbmluZ2VuXCA7CivlrabosrsgPCBnYWt1aGlcIDsKK+adsemdoiA8IHRvdW1lblwgOwor5bCP56C0IDwgc2hvdWhhXCA7Civpo5vprZogPCB0b2JpdW9cIDsKK+WxseawtCA8IHNhbnN1aVwgOwor5L2Z6IiIIDwgeW9reW91XCA7CivlsbHmsJcgPCB5YW1ha2VcIDsKK+Wwj+efsyA8IGtvaXNoaVwgOwor6JWO6bqm57KJIDwgc29iYWtvXCA7Civou43li6IgPCBndW56ZWlcIDsKK+S9meiHrSA8IHlvc2h1dVwgOwor5Lya6KaLIDwga2Fpa2VuXCA7CivlsIHnpoUgPCBob3V6ZW5cIDsKK+i0heiogCA8IHplaWdlblwgOwor54++6YeRIDwgZ2Vua2luXCA7CivlsYXnhLYgPCBreW96ZW5cIDsKK+WEhOS4hyA8IG9rdW1hblwgOwor5qSc5oyZIDwga2Vua3lvXCA7Civou6LlgJIgPCB0ZW50b3VcIDsKK+eUuuatqSA8IGNob3VidVwgOwor5YOn5YW1IDwgc291aGVpXCA7CivnlpHmg5EgPCBnaXdha3VcIDsKK+S7o+i/lCA8IGRhaWhlblwgOwor5qW95ZyfIDwgcmFrdWRvXCA7Civoh6jmiKYgPCByaW5zZW5cIDsKK+WuneiUtSA8IGhvdXpvdVwgOwor5qW95ZySIDwgcmFrdWVuXCA7Civmnpfph44gPCByaW4nJ3lhXCA7CivkuqzpmKogPCBrZWloYW5cIDsKK+i1pOe3miA8IGFrYXNlblwgOwor5LuW6YO3IDwgdGFreW91XCA7Civou43liIAgPCBndW50b3VcIDsKK+eXtOWRhiA8IGNoaWhvdVwgOwor5p2h6aCFIDwgam91a291XCA7CivlsI/nm64gPCBrb21va3VcIDsKK+aghOiQvSA8IGVpcmFrdVwgOwor6Lui5L2PIDwgdGVuanV1XCA7CivnlKjms5UgPCB5b3Vob3VcIDsKK+iHhuaWrSA8IG9rdWRhblwgOwor6LqN5aaCIDwgeWFrdWpvXCA7CivlsI/nmr8gPCBrb3phcmFcIDsKK+Wwj+eauiA8IGtvaml3YVwgOwor5Lqh6ZyKIDwgYm91cmVpXCA7Civmoq3lrZDprZogPCBrYW1hc3VcIDsKK+iIueWeiyA8IHNlbmtlaVwgOwor6LWk57WMIDwgc2Vra2VpXCA7CivkvZ7ogIUgPCBuZWlzaGFcIDsKK+mmrOiCiSA8IGJhbmlrdVwgOwor5YGV5oiQIDwga2Fpc2VpXCA7Civou43lhbUgPCBndW5wZWlcIDsKK+adpembuyA8IHJhaWRlblwgOwor5p2x6ZaAIDwgdG91bW9uXCA7CivnlKjmsLQgPCB5b3VzdWlcIDsKK+i7iuWGhSA8IHNoYW5haVwgOwor6aat6ICFIDwgZ3lvc2hhXCA7CivkuI3pmo/mhI8gPCBmdXp1aWlcIDsKK+mtheS6hiA8IG1pcnlvdVwgOwor5LqM6aOfIDwgbmlqaWtpXCA7CivohILnsokgPCBzaGlmdW5cIDsKK+iHs+W9kyA8IHNoaXRvdVwgOwor5L2T6IKyIDwgdGFpaWt1XCA7CivlsaXmrbQgPCByaXJla2lcIDsKK+WDp+S+tiA8IHNvdXJ5b1wgOwor5p6X6YGTIDwgcmluZG91XCA7CivlgKTmnK0gPCBuZWZ1ZGFcIDsKK+e0q+mZveiKsSA8IGFqaXNhaVwgOwor5L2O6IO9IDwgdGVpbm91XCA7CivmnaXpmKogPCByYWloYW5cIDsKK+S+i+elrSA8IHJlaXNhaVwgOwor6LK06YWsIDwga2lzaHV1XCA7Civog5rog44gPCBoYWl0YWlcIDsKK+WDp+S8vSA8IHNvdWd5YVwgOwor5qGn55quIDwgaGl3YWRhXCA7CivlrZDosZogPCBrb2J1dGFcIDsKK+iyr+mHkSA8IGNob2tpblwgOwor5Luj6LWwIDwgZGFpc291XCA7CivogrrokYkgPCBoYWl5b3VcIDsKK+WDreS4iiA8IHNlbmpvdVwgOwor6Ieo5b6hIDwgcmluZ3lvXCA7CivosqfpibEgPCBoaW5rb3VcIDsKK+WBj+aEmyA8IGhlbicnYWlcIDsKK+WBveWtpiA8IGdpZ2FrdVwgOwor5YKR5aOrIDwga2Vzc2hpXCA7Civph47oia/nnYAgPCBub3JhZ2lcIDsKK+mmluiEsyA8IHNodW5vdVwgOwor55Sf5q6LIDwgc2VpemFuXCA7Civmnb/ph5EgPCBiYW5raW5cIDsKK+ajn+acqCA8IG11bmFnaVwgOwor55Wq5omAIDwgYmFuc2hvXCA7Civkuo7omK3nm4YgPCB1cmFib25cIDsKK+i3r+aomSA8IHJvaHlvdVwgOwor6LuK5L2TIDwgc2hhdGFpXCA7CivoiLnlk6EgPCBzZW4nJ2luXCA7CivlrZfoqLMgPCBqaXlha3VcIDsKK+iLpuWRs+e0oCA8IGt1bWlzb1wgOwor5YGP5oCnIDwgaGVuc2VpXCA7Civmo43mo5IgPCBrb25ib3VcIDsKK+WBnOW5tCA8IHRlaW5lblwgOwor5YKY5ZywIDwga2FzYWppXCA7CivlrpjoiI4gPCBrYW5zaGFcIDsKK+mokueEtiA8IHNvdXplblwgOwor5bGx5p6XIDwgc2FucmluXCA7CivmpbXlj7MgPCBreW9rdXVcIDsKK+acqOmtgiA8IGtvZGFtYVwgOwor6IWO54KOIDwgamluJydlblwgOwor5bGx5p2RIDwgc2Fuc29uXCA7CivkurrpgbggPCBqaW5zZW5cIDsKK+Wwj+eMqyA8IGtvbmVrb1wgOwor5Luu6KiXIDwga2F0YWt1XCA7Civmo5Lmna0gPCBib3VndWlcIDsKK+S6uumBkyA8IGppbmRvdVwgOwor6aas57OnIDwgYmFyeW91XCA7Civos4fosqEgPCBzaGl6YWlcIDsKK+mmrOezniA8IG1hZ3Vzb1wgOwor5YOF5YOFIDwga2lua2luXCA7CivmpbXljbAgPCBnb2t1aW5cIDsKK+S7o+ismyA8IGRhaWtvdVwgOwor5Lya6JGsIDwga2Fpc291XCA7Civou4rkuIogPCBzaGFqb3VcIDsKK+iHs+WwiiA8IHNoaXNvblwgOwor6IiF5aeRIDwga3l1dWtvXCA7Civogrroh5MgPCBoYWl6b3VcIDsKK+i6q+WGhSA8IG1pdWNoaVwgOwor6Lqr5YWxIDwgbWlkb21vXCA7Civoh7Plrp0gPCBzaGlob3VcIDsKK+S9k+ezuyA8IHRhaWtlaVwgOwor5YGP5bmzIDwgaGVucGVpXCA7Civlr5/nn6UgPCBzYXRjaGlcIDsKK+acq+mmmSA8IG1ha2tvdVwgOwor5pyo6aasIDwgbW9rdWJhXCA7CivlgbTlpbMgPCBzb2JhbWVcIDsKK+acrOmkqCA8IGhvbmthblwgOwor5Luj6KiAIDwgZGFpZ2VuXCA7Civogrrog54gPCBoYWlob3VcIDsKK+S6uui7iiA8IGppbnNoYVwgOwor5pyx6aGUIDwgc2h1Z2FuXCA7CivnlKjmnZAgPCB5b3V6YWlcIDsKK+i2s+a5ryA8IGFzaGl5dVwgOwor5YK+5YCSIDwga2VpdG91XCA7Civmpa3li5kgPCBneW91bXVcIDsKK+WAjeaVsCA8IGJhaXN1dVwgOwor6ICB6ZuEIDwgcm91eXV1XCA7CivoiLnlh7ogPCBmdW5hZGVcIDsKK+iHquWuhSA8IGppdGFrdVwgOwor6ISH55uuIDwgd2FraW1lXCA7CivmnKzpoZggPCBob25nYW5cIDsKK+acrOmhjCA8IGhvbmRhaVwgOwor5Lmx6ZuyIDwgcmFuJyd1blwgOwor55a+5ZG8IDwgc2hpa2tvXCA7CivoiLnlhbcgPCBmdW5hZ3VcIDsKK+WutuetiyA8IGllc3VqaVwgOwor5pys6Z+zIDwgaG9uJyduZVwgOwor5LuY6KiXIDwgZnV0YWt1XCA7CivnlJ/mnaUgPCBzZWlyYWlcIDsKK+WApuaGiiA8IGtlbnBhaVwgOwor5p6i6KaBIDwgc3V1eW91XCA7CivporHpoqggPCB0YWlmdXVcIDsKK+WvneeZliA8IG5lZ3VzZVwgOwor54Sh5LqL5pWFIDwgbXVqaWtvXCA7Civoh43luK8gPCBzZWl0YWlcIDsKK+aknOWumiA8IGtlbnRlaVwgOwor5p2l6YK4IDwgcmFpdGVpXCA7CivohbnmoYggPCBmdWt1YW5cIDsKK+eUn+acqCA8IG5hbWFraVwgOwor5L2Z56iLIDwgeW9ob2RvXCA7CivlgrLlgKggPCBnb3VreW9cIDsKK+mqqOWtkCA8IGtvc3NoaVwgOwor5p2l6YGKIDwgcmFpeXV1XCA7CivmnbHou40gPCB0b3VndW5cIDsKK+WxleacmyA8IHRlbmJvdVwgOwor6ICz6LyqIDwgbWltaXdhXCA7CivlsI/mva4gPCBrb3NoaW9cIDsKK+aituacqCA8IGthamlraVwgOwor6LKn6LOkIDwgaGluc2VuXCA7CivmnaXov44gPCByYWlnb3VcIDsKK+aciemrqiA8IHVoYXRzdVwgOwor6LWk55eiIDwgc2VraXJpXCA7Civkvr/ms5UgPCBiZW5wb3VcIDsKK+S9juepuiA8IHRlaWt1dVwgOwor5Lyd6IGeIDwgZGVuYnVuXCA7CivmnKzpmoogPCBob250YWlcIDsKK+WyqeWxpCA8IGdhbnNvdVwgOwor5pyd6aGUIDwgYXNhZ2FvXCA7CivouqvkuIggPCBtaXRha2VcIDsKK+acrOmZoyA8IGhvbmppblwgOwor5pys6ZmiIDwgaG9uJydpblwgOwor5bCo5q+bIDwgbXVrdWdlXCA7CivlrprntIsgPCBqb3Vtb25cIDsKK+mkiuixmiA8IHlvdXRvblwgOwor5LuY6KGoIDwgZnVoeW91XCA7CivmnLHploAgPCBzaHVtb25cIDsKK+S9teeUqCA8IGhlaXlvdVwgOwor5pyo6ZmwIDwga29rYWdlXCA7CivlgrXkuLsgPCBzYWlzaHVcIDsKK+adpei7iiA8IHJhaXNoYVwgOwor6IOM562LIDwgaGFpa2luXCA7CivlsbHmiYsgPCB5YW1hdGVcIDsKK+iFi+avmyA8IHdha2lnZVwgOwor5L6/5q6/IDwgYmVuZGVuXCA7Civogp3og4YgPCBrYW50YW5cIDsKK+acnemcsiA8IGNob3Vyb1wgOwor5bGv5omAIDwgdG9uc2hvXCA7Civos4DooaggPCBnYWh5b3VcIDsKK+WuneeulyA8IGhvdXNhblwgOwor5LiA5pio5pelIDwgb3RvdG9pXCA7CivpoqjpnJwgPCBmdXVzb3VcIDsKK+i1t+eIhiA8IGtpYmFrdVwgOwor6IiI5ZGzIDwga3lvdW1pXCA7Civogonoir0gPCBuaWt1Z2FcIDsKK+WtpOiInyA8IGtvc2h1dVwgOwor5LqM6YCyIDwgbmlzaGluXCA7CivmnZHpgZMgPCBzb25kb3VcIDsKK+WBj+WlvSA8IGhlbmtvdVwgOwor5LqM6YCaIDwgbml0c3V1XCA7CivlgKTluYUgPCBuZWhhYmFcIDsKK+miqOmYsiA8IGZ1dWJvdVwgOwor5p6v6JGJIDwga2FyZWhhXCA7CivlrrbnnaMgPCBrYXRva3VcIDsKK+WBtuWQnyA8IGd1dWtpblwgOwor5Lyd57eaIDwgZGVuc2VuXCA7Civoh6rlm70gPCBqaWtva3VcIDsKK+iHqOWcqCA8IHJpbnphaVwgOwor5L2Z55m9IDwgeW9oYWt1XCA7Civlrr/nl74gPCBzaHVrdWFcIDsKK+WvhueUnyA8IG1pc3NlaVwgOwor5a+E55WZIDwga2lyeXV1XCA7CivmnaXos5MgPCByYWloaW5cIDsKK+S8nee1sSA8IGRlbnRvdVwgOwor55S75b+DIDwgZ2FzaGluXCA7CivlsI7msLQgPCBkb3VzdWlcIDsKK+adpeiyoiA8IHJhaWtvdVwgOwor6ISx5rOVIDwgZGFwcG91XCA7CivlgKTltakgPCBuZWdhc2FcIDsKK+WHuuadpeWApCA8IGRla2luZVwgOwor6LGq6YK4IDwgZ291dGVpXCA7CivkvZnnl4UgPCB5b2J5b3VcIDsKK+iAgemFkiA8IHJvdXNodVwgOwor5L2O55uuIDwgaGlrdW1lXCA7CivkvZznlLsgPCBzYWt1Z2FcIDsKK+eNo+mhniA8IGp1dXJ1aVwgOwor6LGq6YKBIDwgZ291bWFpXCA7CivlsITms5UgPCBzaGFob3VcIDsKK+mnhOeJqSA8IGRhbW9ub1wgOwor6ISx5rC0IDwgZGFzc3VpXCA7Civpo5vouo0gPCBoaXlha3VcIDsKK+S5semFlCA8IHJhbnN1aVwgOwor5Lmx6YWSIDwgcmFuc2h1XCA7CivoiI7lhYQgPCBzaGFrZWlcIDsKK+S7sOiHpSA8IGd5b3VnYVwgOwor55Wq5aSWIDwgYmFuZ2FpXCA7CivlsqnloakgPCBnYW4nJ2VuXCA7CivkvZXnlaogPCBuYW5iYW5cIDsKK+abuOmiqCA8IHNob2Z1dVwgOwor6ISz5q27IDwgbm91c2hpXCA7CivkuozotrMgPCBuaXNva3VcIDsKK+e+vemiqCA8IGhha2F6ZVwgOwor6LGq6L6yIDwgZ291bm91XCA7CivnlLvluYUgPCBnYWZ1a3VcIDsKK+abuOmhniA8IHNob3J1aVwgOwor55Sf5oaOIDwgYWluaWt1XCA7CivkuK3po5sgPCBjaHV1aGlcIDsKK+iwt+mWkyA8IHRhbmltYVwgOwor5p2x6KW/IDwgdG91emFpXCA7Civoh63lkbMgPCBzaHV1bWlcIDsKK+eQtOe3miA8IGtpbnNlblwgOwor6IOh55OcIDwga3l1dXJpXCA7Civpo5votoogPCBoaWV0c3VcIDsKK+adpeirhyA8IHJhaWRhblwgOwor5YCJ5bupIDwgc291cmluXCA7CivohZDmnL0gPCBmdWt5dXVcIDsKK+WuieepjyA8IGFuJydub25cIDsKK+WApOWuiSA8IG5leWFzdVwgOwor5Luj6ImmIDwgZGFpa2FuXCA7Civlr7jms5UgPCBzdW5wb3VcIDsKK+iDjuebpCA8IHRhaWJhblwgOwor6ICB6L6yIDwgcm91bm91XCA7CivkubHpgKAgPCByYW56b3VcIDsKK+WCjeS6uiA8IGJvdWppblwgOwor5bGI5oyHIDwga3Vzc2hpXCA7CivogrLnqK4gPCBpa3VzaHVcIDsKK+aiheaelyA8IGJhaXJpblwgOwor5pyo6YeYIDwga2lrdWdpXCA7CivnlLflt6UgPCBkYW5rb3VcIDsKK+ixvOiyhSA8IGhpa3l1dVwgOwor5pyI6ZaTIDwgZ2Vra2FuXCA7Civku4/okawgPCBidXNzb3VcIDsKK+WAn+WutiA8IHNoYWtrYVwgOwor5pu46Z2iIDwgc2hvbWVuXCA7CivmnaXoqKogPCByYWlob3VcIDsKK+S4remfsyA8IGNodXVvblwgOwor6LSI562UIDwgem91dG91XCA7CivogIHovKkgPCByb3VoYWlcIDsKK+iBvuiAhSA8IHJvdXNoYVwgOwor5qGR5rW3IDwgc291a2FpXCA7CivlsI/mpa8gPCBrb2RhdGVcIDsKK+afseekjiA8IGNodXVzb1wgOwor6IGa6JC9IDwganVyYWt1XCA7CivmpJzlk4EgPCBrZW5waW5cIDsKK+WBtuWDjyA8IGd1dXpvdVwgOwor5a2Y572uIDwgc29uY2hpXCA7CivmnKzpgrggPCBob250ZWlcIDsKK+acrOmCpiA8IGhvbnBvdVwgOwor5p2l6KazIDwgcmFpa2FuXCA7CivppIrompUgPCB5b3VzYW5cIDsKK+acrOmBuCA8IGhvbnNlblwgOwor6aC96b2iIDwgdGFpcmVpXCA7CivnkrDmtbcgPCBrYW5rYWlcIDsKK+acqOmDqCA8IG1va3VidVwgOwor5pys6YGTIDwgaG9uZG91XCA7CivlsYXmiYAgPCBreW9zaG9cIDsKK+i3r+W6iiA8IHJvc2hvdVwgOwor5YG95L2cIDwgZ2lzYWt1XCA7CivkubHou40gPCByYW5ndW5cIDsKK+iznue+jiA8IHNob3ViaVwgOwor6LKv6JS1IDwgY2hvem91XCA7CivlgKHlqaYgPCBzaG91ZnVcIDsKK+acnemHjiA8IGNob3V5YVwgOwor6IOa54+gIDwgaGFpc2h1XCA7CivmnKrpgLIgPCBtaXNoaW5cIDsKK+S8keespiA8IGt5dXVmdVwgOwor6aKo6YeHIDwgZnV1c2FpXCA7CivnlKPlu4MgPCBzYW5wYWlcIDsKK+S7pOiBniA8IHJlaWJ1blwgOwor6Ieq5YqbIDwgamlyaWtpXCA7Civkv4LmlbAgPCBrZWlzdXVcIDsKK+S4remZsCA8IGNodXVpblwgOwor5qSc5Y2wIDwga2VuJydpblwgOwor5bCR5p6XIDwgc2hvcmluXCA7CivlgaXlhaggPCBrZW56ZW5cIDsKK+WvruavjSA8IHJ5b3Vib1wgOwor55S75a2mIDwgZ2FnYWt1XCA7CivkupLop5IgPCBnb2tha3VcIDsKK+izque0oCA8IHNoaXNzb1wgOwor5qC55rqQIDwga29uZ2VuXCA7Civmn7PnnIkgPCByeXV1YmlcIDsKK+S6ieirliA8IHNvdXJvblwgOwor6LWw5rOVIDwgc291aG91XCA7CivkuIrpqLAgPCBqb3V0b3VcIDsKK+WxseWutiA8IHlhbWFnYVwgOwor5a6f55SfIDwgbWlzaG91XCA7CivmnKvovKkgPCBtYXBwYWlcIDsKK+WxnuW3riA8IHpva3VzYVwgOwor5LiN6aa0IDwgZnVuYXJlXCA7CivmpL/kuosgPCBjaGluamlcIDsKK+mmluePrSA8IHNodWhhblwgOwor5a6a55WqIDwgdGVpYmFuXCA7CivlgbbkurogPCBndXVqaW5cIDsKK+eUt+WtkCA8IGRhbnNoaVwgOwor5Luj572yIDwgZGFpc2hvXCA7Civku6Pnva4gPCBkYWljaGlcIDsKK+S8iuWLouS4uSA8IGlzZXRhblwgOwor6IK655mMIDwgaGFpZ2FuXCA7CivppYznsbMgPCBzZW5tYWlcIDsKK+i2o+aXqCA8IHNodXNoaVwgOwor5LuK6IisIDwga29ucGFuXCA7CivlsIrmnaUgPCBzb25yYWlcIDsKK+air+W9oiA8IHRlaWtlaVwgOwor5LqM6KaLIDwgZnV0YW1pXCA7Civoh6rlhJggPCBqaW1hbWFcIDsKK+aenOiCiSA8IGthbmlrdVwgOwor5qSc5YiGIDwga2VuYnVuXCA7CivkuKHpmaIgPCByeW91aW5cIDsKK+eUsuWtkCA8IGthc3NoaVwgOwor5LiA6amaIDwgaWtreW91XCA7CivkupTooYwgPCBnb2d5b3VcIDsKK+iHs+S+vyA8IHNoaWJlblwgOwor5bCK5pu4IDwgc29uc2hvXCA7CivlsI/mmLwgPCBrb2hpcnVcIDsKK+abnemcsiA8IGJha3Vyb1wgOwor5bCP5pilIDwga29oYXJ1XCA7CivkvZnngJ0gPCB5b3Jla2lcIDsKK+eMrumljCA8IGtlbnNlblwgOwor5L+h5b6SIDwgc2hpbnRvXCA7Civnlarlj7cgPCBiYW5nb3VcIDsKK+S4gOmnhCA8IGljaGlkYVwgOwor6aGe6aGMIDwgcnVpZGFpXCA7Civmm5zpnIogPCB5b3VyZWlcIDsKK+agueayuyA8IGtvbmNoaVwgOwor5YGJ5YqbIDwgaXJ5b2t1XCA7Civlr6HmrLIgPCBrYXlva3VcIDsKK+aciemFjSA8IHl1dWhhaVwgOwor5LuV572uIDwgc2hpb2tpXCA7Civpoqjou4ogPCBmdXVzaGFcIDsKK+aal+m7mSA8IGFubW9rdVwgOwor5bGx5aWzIDwgeWFtYW1lXCA7Civmmpfpu5IgPCBhbmtva3VcIDsKK+WwgeabuCA8IGZ1dXNob1wgOwor5LuP6ICFIDwgYnVzc2hhXCA7Civmo4TlrZAgPCBzdXRlZ29cIDsKK+WAueWQnSA8IGtlbnJpblwgOwor6Ieq5L6bIDwgamlreW91XCA7CivkuInpn5MgPCBzYW5rYW5cIDsKK+S6iOihqCA8IHlvaHlvdVwgOwor5LiH6aCDIDwgYmFua2VpXCA7CivkuIDpo5sgPCBpY2hpaGlcIDsKK+agueavmyA8IGtvbm1vdVwgOwor5L2Z5ru0IDwgeW90ZWtpXCA7CivlgI3lpKcgPCBiYWlkYWlcIDsKK+iHquS9nCA8IGppc2FrdVwgOwor6IKy55SfIDwgaWt1c2VpXCA7CivnlLvlooMgPCBnYWt5b3VcIDsKK+acqOiziiA8IHRva3VzYVwgOwor5bCK5pWsIDwgc29ua2VpXCA7CivkuIrpnaIgPCBqb3VtZW5cIDsKK+WxheW4uCA8IGt5b2pvdVwgOwor5Luj57SNIDwgZGFpbm91XCA7Civlr5LmsJcgPCBzYW11a2VcIDsKK+S4iemdoiA8IHNhbm1lblwgOwor5bCK5pSYIDwgc29uam91XCA7CivlgZzkvJogPCB0ZWlrYWlcIDsKK+WAjeWilyA8IGJhaXpvdVwgOwor5qSc5L6/IDwga2VuYmVuXCA7CivnlJ/lrZggPCBzZWl6b25cIDsKK+WxkeWxiyA8IGt1enV5YVwgOwor6aGY6Z2iIDwgZ2FubWVuXCA7CivpoqjotqMgPCBmdXVzaHVcIDsKK+iDuOavmyA8IG11bmFnZVwgOwor5bGx5aC0IDwgeWFtYWJhXCA7CivlsY/lsYUgPCBoZWlreW9cIDsKK+S4h+mbtyA8IGJhbnJhaVwgOwor5LiJ6ZqOIDwgc2FuZ2FpXCA7Civlr53mp5ggPCBuZXphbWFcIDsKK+atpOWHpuetiSA8IGtva29yYVwgOwor55Wq5YW1IDwgYmFucGVpXCA7CivmnJ3os4AgPCBjaG91Z2FcIDsKK+WvvuaVsCA8IHRhaXN1dVwgOwor5a+p5p+7IDwgc2hpbnNhXCA7Civlr53mpa0gPCBuZXdhemFcIDsKK+mcsuilv+S6nCA8IHJvc2hpYVwgOwor5pys6KuWIDwgaG9ucm9uXCA7CivlgJ/llY8gPCBzaGFtb25cIDsKK+abvumBiiA8IHNvdXl1dVwgOwor55Ci56OoIDwgdGFrdW1hXCA7CivohbnlrZAgPCBoYXJha29cIDsKK+ahn+aVtyA8IHNhamlraVwgOwor5a++5pSvIDwgdGFpc2hpXCA7CivppIrogrIgPCB5b3Vpa3VcIDsKK+S8r+eItiA8IGhha3VmdVwgOwor5pys6KqMIDwgaG9uc2hpXCA7CivlrZDnqK4gPCBrb2RhbmVcIDsKK+Wwj+aMhyA8IGtveXViaVwgOwor5pyq6KqtIDwgbWlkb2t1XCA7Civnm67ljLvogIUgPCBtZWlzaGFcIDsKK+S4gOmauyA8IGlzc2VraVwgOwor5a+45patIDwgc3VuZGFuXCA7CivogIHoobAgPCByb3VzdWlcIDsKK+iFkOW/gyA8IGZ1c2hpblwgOwor5pq06aKoIDwgYm91ZnV1XCA7CivkvZnmsqIgPCB5b3Rha3VcIDsKK+WumueCuSA8IHRlaXRlblwgOwor5pu46YGTIDwgc2hvZG91XCA7CivkuK3pg6ggPCBjaHV1YnVcIDsKK+WBj+S6uiA8IGhlbmppblwgOwor5YCm5Y6tIDwga2VuJydlblwgOwor5a2m55ujIDwgZ2Fra2FuXCA7CivppIrogIEgPCB5b3Vyb3VcIDsKK+eUo+WjsCA8IHVidWdvZVwgOwor6aO06ImyIDwgYW1laXJvXCA7CivnlLDlnLAgPCBkZW5jaGlcIDsKK+acneitsCA8IGNob3VnaVwgOwor55Sw5ZySIDwgZGVuJydlblwgOwor6aaZ5rivIDwgaG9ua29uXCA7CivmoYLmnpcgPCBrZWlyaW5cIDsKK+S4gOmWkyA8IGhpdG9tYVwgOwor5a2Y55+lIDwgem9uY2hpXCA7CivkuK3pgJQgPCBjaHV1dG9cIDsKK+eQuueRryA8IGhvdXJvdVwgOwor6aC76aC7IDwgaGlucGluXCA7CivlsLvlsL4gPCBzaGlwcG9cIDsKK+eUmuWkpyA8IGppbmRhaVwgOwor5L6L5pWwIDwgcmVpc3V1XCA7CivkuozokYkgPCBmdXRhYmFcIDsKK+mjvOiCsiA8IHNoaWlrdVwgOwor5L+z5aOHIDwgaGFpZGFuXCA7Civlsa/llrYgPCB0b24nJ2VpXCA7CivmnaXoh6ggPCByYWlyaW5cIDsKK+aiteWkqSA8IGJvbnRlblwgOwor5aaC5L2V5qeYIDwgaWtheW91XCA7Civlr5LmooUgPCBrYW5iYWlcIDsKK+agueafoiA8IGtvbnRlaVwgOwor5L2V5q2zIDwgbmFuc2FpXCA7CivmoJfmr5sgPCBrdXJpZ2VcIDsKK+WwiuaFriA8IHNvbnJ5b1wgOwor5L2P5rCRIDwganV1bWluXCA7CivlsJHmgakgPCBzaG91b25cIDsKK+eUo+WcsCA8IHNhbmNoaVwgOwor5LyB55S7IDwga2lrYWt1XCA7CivnlJjloakgPCBhbWFqaW9cIDsKK+i1pOacrCA8IGFrYWhvblwgOwor6aKo6KejIDwgZnV1a2FpXCA7CivkvbXmnIkgPCBoZWl5dXVcIDsKK+Wxi+WkliA8IG9rdWdhaVwgOwor6aas5qmHIDwgYmFzb3JpXCA7CivkuK3ouqsgPCBuYWthbWlcIDsKK+eQhuelniA8IHJpc2hpblwgOwor5qC55pysIDwgbmVtb3RvXCA7CivkurrntbkgPCBqaW5rZW5cIDsKK+S4u+izkyA8IHNodWhpblwgOwor55Sf5ZywIDwgc2VpY2hpXCA7CivpoqjoposgPCBrYXphbWlcIDsKK+S7luensCA8IHRhc2hvdVwgOwor6aaZ5rC0IDwga291c3VpXCA7Civlr5LmnZEgPCBrYW5zb25cIDsKK+adieiPnCA8IHN1Z2luYVwgOwor55WZ5L+dIDwgcnl1dWhvXCA7Civog73mm7ggPCBub3VzaG9cIDsKK+S9nOalrSA8IHNhZ3lvdVwgOwor5YCo5YKyIDwga3lvZ291XCA7CivmoLnmmpcgPCBuZWt1cmFcIDsKK+i3oeWcsCA8IGF0b2NoaVwgOwor5Lq657OeIDwgamlucHVuXCA7CivlrabnkIYgPCBnYWt1cmlcIDsKK+S9mealrSA8IHlvZ3lvdVwgOwor5bCP5b2iIDwga29nYXRhXCA7CivmnIjorJ0gPCBnZXNzaGFcIDsKK+WvhuagkyA8IG1pc3NlblwgOwor5a+S5pqWIDwga2FuZGFuXCA7CivpoqjooosgPCBmdXV0YWlcIDsKK+S4iemHjSA8IHNhbmp1dVwgOwor6LKh57WMIDwgemFpa2VpXCA7CivlrZjnlJ8gPCB6b25qb3VcIDsKK+S4h+mHkSA8IG1hbmtpblwgOwor5bCK5b2xIDwgc29uJydlaVwgOwor5qC55pa5IDwgbmVrYXRhXCA7CivnlKjlk4EgPCB5b3VoaW5cIDsKK+S7rueXhSA8IGtlYnlvdVwgOwor5LiK6YWSIDwgam91c2h1XCA7CivlrpfmtL4gPCBzaHV1aGFcIDsKK+WumuazlSA8IGpvdWhvdVwgOwor5a625qWtIDwga2FneW91XCA7Civog6HmpJIgPCBrb3Nob3VcIDsKK+iDhuaxgSA8IHRhbmp1dVwgOwor55Cl54+AIDwga29oYWt1XCA7Civog73mlocgPCBub3VidW5cIDsKK+Wwj+W5hSA8IGtvaGFiYVwgOwor5a2k54usIDwga29kb2t1XCA7CivnlKPlk4EgPCBzYW5waW5cIDsKK+S4jemBqSA8IGZ1dGVraVwgOwor5a+G5pu4IDwgbWlzc2hvXCA7CivogqHngasgPCBtYXRhYmlcIDsKK+e+jumGnCA8IGJpc2h1dVwgOwor5LiA6YeMIDwgaWNoaXJpXCA7Civlr7XmhJsgPCBjaG91YWlcIDsKK+WuneauvyA8IGhvdWRlblwgOwor5bCP5beuIDwgc2hvdXNhXCA7Civnj6DnrpcgPCBzaHV6YW5cIDsKK+S4jemAmiA8IGZ1dHN1dVwgOwor6ISz5bm5IDwgbm91a2FuXCA7Civkvpvlv5wgPCBreW91b3VcIDsKK+eOieiXuyA8IHRhbWFtb1wgOwor6IKd54KOIDwga2FuJydlblwgOwor5LiJ6YG4IDwgc2Fuc2VuXCA7CivlsIvluLggPCBqaW5qb3VcIDsKK+S/ruWWtiA8IHNodXVlaVwgOwor6IOh5qGDIDwga3VydW1pXCA7CivkuIfpgqYgPCBiYW5wb3VcIDsKK+iAgeiNmCA8IHJvdXNvdVwgOwor5a6Y5rCRIDwga2FubWluXCA7CivnoLTprZTnn6IgPCBoYW1heWFcIDsKK+WxnuWQjyA8IHpva3VyaVwgOwor5p6h55uuIDwgbWFzdW1lXCA7CivkuIHphYkgPCB0ZWl5dXVcIDsKK+i2iuW+jCA8IGVjaGlnb1wgOwor5bCa5bCaIDwgbmFvbmFvXCA7CivkuInpgKMgPCBzYW5yZW5cIDsKK+S4u+ioiCA8IHNodWtlaVwgOwor5qCh5pysIDwga291aG9uXCA7Civmmq7pkJggPCBib3Nob3VcIDsKK+WwgeW7uiA8IGhvdWtlblwgOwor5YCS5YOPIDwgdG91em91XCA7CivnvoXph50gPCByYXNoaW5cIDsKK+aiteWUhCA8IGJvbmJhaVwgOwor5LiK6L66IDwgam91aGVuXCA7CivkuIDpg60gPCBpa2tha3VcIDsKK+S4gOmDqCA8IGljaGlidVwgOwor5L2V5p6aIDwgbmFubWFpXCA7Civlr7jlv5cgPCBzdW5zaGlcIDsKK+S9nuaZuiA8IG5laWNoaVwgOwor5Li76KazIDwgc2h1a2FuXCA7Civlrrbmn4QgPCBpZWdhcmFcIDsKK+Wwj+WztiA8IGtvamltYVwgOwor5pys6JGsIDwgaG9uc291XCA7CivnlKPljbUgPCBzYW5yYW5cIDsKK+S6uueoriA8IGppbnNodVwgOwor5a6M5rK7IDwga2FuY2hpXCA7CivkvZXmnaEgPCBuYW5qb3VcIDsKK+S7o+eUqCA8IGRhaXlvdVwgOwor55u46YOo5bGLIDwgYWliZXlhXCA7CivkvK/mr40gPCBoYWt1Ym9cIDsKK+S/s+WQjSA8IGhhaW1laVwgOwor5a2k5YWQ6ZmiIDwga29qaWluXCA7Civnvqnos4ogPCBnaXpva3VcIDsKK+Wwj+WxsSA8IGtveWFtYVwgOwor5bCK5bSHIDwgc29uc3V1XCA7Civkv7Plj4sgPCBoYWl5dXVcIDsKK+S4gOmAsSA8IGlzc2h1dVwgOwor5LyR5ryUIDwga3l1dWVuXCA7CivkuIDpgJogPCBpdHRzdXVcIDsKK+iEh+aIuCA8IHdha2lkb1wgOwor5bC/5ZmoIDwgbnlvdWtpXCA7CivkuInou40gPCBzYW5ndW5cIDsKK+eLremcpyA8IHNhZ2lyaVwgOwor5qC55ougIDwga29ua3lvXCA7CivkupXntrEgPCBpZHp1bmFcIDsKK+S7iuaXpeaXpSA8IGt5b3ViaVwgOwor5LiH6LuNIDwgYmFuZ3VuXCA7CivmnbHnq68gPCB0b3V0YW5cIDsKK+acrOiNiSA8IGhvbnpvdVwgOwor6LK755uuIDwgaGltb2t1XCA7Civku5nnlYwgPCBzZW5rYWlcIDsKK+eUo+WJjSA8IHNhbnplblwgOwor546J6I+cIDwgdGFtYW5hXCA7CivmnKvojLYgPCBtYXRjaGFcIDsKK+mjr+exsyA8IGhhbm1haVwgOwor6aCG6aKoIDwganVucHV1XCA7CivmnLHoibIgPCBzaHVpcm9cIDsKK+S8neazlSA8IGRlbnBvdVwgOwor55S75LyvIDwgZ2FoYWt1XCA7Civni63pmpggPCBreW91YWlcIDsKK+eNo+ihjCA8IGp1dWtvdVwgOwor5LiN6LazIDwgZnVzb2t1XCA7Civos4fnlKMgPCBzaGlzYW5cIDsKK+WrgeiPnCA8IHlvbWVuYVwgOwor5LqU57WMIDwgZ29reW91XCA7Civpp4XmiYsgPCBla2lzaHVcIDsKK+eUn+WJjSA8IHNlaXplblwgOwor5LiL6LazIDwgZ2Vzb2t1XCA7CivkvZXmlrkgPCBkb25hdGFcIDsKK+ixmuiIjiA8IHRvbnNoYVwgOwor6Laz5aC0IDwgYXNoaWJhXCA7CivpoIbpoIYgPCBqdW5qdW5cIDsKK+iNvOaes+WwvCA8IGRha2luaVwgOwor5LiA6LqrIDwgaXNzaGluXCA7CivogqXmsoMgPCBoaXlva3VcIDsKK+aiseWMhSA8IGtvbnBvdVwgOwor5p6X55SjIDwgcmluc2FuXCA7Civkurrnn6UgPCBqaW5jaGlcIDsKK+e9sOmHkSA8IGJha2tpblwgOwor5Luk54q2IDwgcmVpam91XCA7CivkvovlubQgPCByZWluZW5cIDsKK+eLremWkyA8IGhhemFtYVwgOwor6ISb5be+IDwgaGFiYWtpXCA7CivlsaXkv64gPCByaXNodXVcIDsKK+iGneS4iyA8IHNoaWtrYVwgOwor5LqM57SaIDwgbmlreXV1XCA7CivmtbfogIHpjKAgPCBlYmlqb3VcIDsKK+acrOiGsyA8IGhvbnplblwgOwor5LiA6LevIDwgaWNoaXJvXCA7CivohIbmgKcgPCB6ZWlzZWlcIDsKK+S9k+aTjSA8IHRhaXNvdVwgOwor5L2/5b25IDwgc2hpZWtpXCA7CivmmanppJAgPCBiYW5zYW5cIDsKK+iCneayuSA8IGthbicneXVcIDsKK+e+pOirliA8IGd1bnJvblwgOwor55So5L6/IDwgeW91YmVuXCA7Civku4rnlJ8gPCBrb25qb3VcIDsKK+WwkeWlsyA8IHNob3Vqb1wgOwor5Lq655u4IDwgbmluc291XCA7CivkuojntIQgPCB5b3lha3VcIDsKK+S6uuebriA8IGhpdG9tZVwgOwor55SY5YWaIDwgYW1hdG91XCA7Civosqfnm7ggPCBoaW5zb3VcIDsKK+iDjOaZryA8IGhhaWtlaVwgOwor6aeS5bqnIDwga29tYXphXCA7Civlronmpb0gPCBhbnJha3VcIDsKK+S4luiplSA8IHNlaHlvdVwgOwor54+t55SwIDwgaGFuZGVuXCA7CivmnInok4sgPCB5dXVnYWlcIDsKK+eUqOS7tiA8IHlvdWtlblwgOwor5LmX6Ii5IDwgam91c2VuXCA7Civlrp/mma8gPCBqaWtrZWlcIDsKK+Wxi+WGhSA8IG9rdW5haVwgOwor5a2m5rS+IDwgZ2FrdWhhXCA7CivpoqjoiLkgPCBmdXVzZW5cIDsKK+aflOavmyA8IGp1dW1vdVwgOwor54++54q2IDwgZ2Vuam91XCA7Civpn7Ppn78gPCBvbmt5b3VcIDsKK+acqOiCjCA8IGtpaGFkYVwgOwor5bCK5aSnIDwgc29uZGFpXCA7CivohLPlpKkgPCBub3V0ZW5cIDsKK+WqmuiWrCA8IGJpeWFrdVwgOwor6aKo6Ie0IDwgZnV1Y2hpXCA7Civlr53luoogPCBuZWRva29cIDsKK+S4luilsiA8IHNlc2h1dVwgOwor6ICB57e0IDwgcm91cmVuXCA7CivkuI3oqbMgPCBmdXNob3VcIDsKK+Wun+aWvSA8IGppc3NoaVwgOwor5LiH6KydIDwgYmFuc2hhXCA7CivkuInoq5YgPCBzYW5yb25cIDsKK+S/l+WLmSA8IHpva3VtdVwgOwor6aeF5byBIDwgZWtpYmVuXCA7CivmnKznvbIgPCBob25zaG9cIDsKK+WvneW3uyA8IG5lbWFraVwgOwor5a6f5pWwIDwgamlzc3V1XCA7CivkurrnlJ8gPCBqaW5zZWlcIDsKK+WuiOagqiA8IHNodXNodVwgOwor6JWO6bqm5bGLIDwgc29iYXlhXCA7Civkuonnq68gPCBzb3V0YW5cIDsKK+S4gOitsCA8IGljaGlnaVwgOwor5Ly05pifIDwgYmFuc2VpXCA7Civpo5vnq5wgPCBoaXJ5dXVcIDsKK+agueW5uSA8IGtvbmthblwgOwor6LWk5bi9IDwgYWthYm91XCA7CivppIrnlJ8gPCB5b3Vqb3VcIDsKK+aatOi1sCA8IGJvdXNvdVwgOwor5LiK6KiIIDwgam91a2VpXCA7Civlrr/mhI8gPCBzaHVrdWlcIDsKK+WujOacrCA8IGthbnBvblwgOwor6ICz55uuIDwgamltb2t1XCA7CivkvZ7mgqogPCBuZWlha3VcIDsKK+S/r+S8jyA8IGZ1ZnVrdVwgOwor6aiZ5Y+WIDwgaGVuc2h1XCA7Civkv6/ku7AgPCBmdWd5b3VcIDsKK+S4iuimpyA8IGpvdXJhblwgOwor5LiH6KiAIDwgbWFuZ2VuXCA7Civlr77lpJYgPCB0YWlnYWlcIDsKK+S9j+aJgCA8IGp1dXNob1wgOwor6LKh55WMIDwgemFpa2FpXCA7CivpoqjogZ4gPCBmdXVidW5cIDsKK+S4iuimhiA8IHV3YW9vaVwgOwor5a655oWLIDwgeW91ZGFpXCA7CivosqHnlKMgPCB6YWlzYW5cIDsKK+mbjOaNu+WtkCA8IG1lbmVqaVwgOwor5Lih6JmOIDwgcnlvdWtvXCA7CivnjKXoq4cgPCB3YWlkYW5cIDsKK+i2iuWigyA8IGVra3lvdVwgOwor5LiK6KO9IDwgam91c2VpXCA7Civkv5flhJIgPCB6b2t1anVcIDsKK+S4iuijgSA8IGpvdXNhaVwgOwor5Lyd5p2lIDwgZGVucmFpXCA7Civlr53lsI8gPCBuZXNob3VcIDsKK+acrOe1uSA8IGhvbmtlblwgOwor6aOv55uSIDwgaGFuZ291XCA7CivkuIvooaggPCBrYWh5b3VcIDsKK+iFleWJjSA8IHVkZW1hZVwgOwor5Luu5rOKIDwga2FoYWt1XCA7CivkvZnlvrMgPCB5b3Rva3VcIDsKK+S9nuW8gSA8IG5laWJlblwgOwor5Lit6I+vIDwgY2h1dWthXCA7CivlrrPmgqogPCBnYWlha3VcIDsKK+WwgeWcsCA8IGhvdWNoaVwgOwor5a6M5pWXIDwga2FucGFpXCA7Civkv5rkv5cgPCByaXpva3VcIDsKK+Wxi+S4iiA8IG9rdWpvdVwgOwor5pyo57WEIDwga2lndW1pXCA7CivmnInog70gPCB5dXVub3VcIDsKK+WwmuWPpCA8IHNob3Vrb1wgOwor6IOM5oi7IDwgaGFpcmVpXCA7CivlrqPmiKYgPCBzZW5zZW5cIDsKK+S6lOebriA8IGdvbW9rdVwgOwor5a+T5bGFIDwgZ3V1a3lvXCA7CivlsIvllY8gPCBqaW5tb25cIDsKK+aatOirliA8IGJvdXJvblwgOwor5p2h55eVIDwgam91a29uXCA7CivkvbXlrZggPCBoZWl6b25cIDsKK+WvjOWysyA8IGZ1Z2FrdVwgOwor6IOh5byTIDwga29reXV1XCA7CivmmLzppIkgPCBoaXJ1Z2VcIDsKK+eQtOafsSA8IGtvdG9qaVwgOwor6Lao5YuiIDwgc3V1c2VpXCA7CivpoJHov7cgPCBnYW5tZWlcIDsKK+Wum+aJgCA8IGF0ZXNob1wgOwor5p+Q5p+QIDwgYm91Ym91XCA7Civosq/ngq0gPCBjaG90YW5cIDsKK+S6jOebriA8IGZ1dGFtZVwgOwor5pq06KiAIDwgYm91Z2VuXCA7Civkv4rlgYkgPCBzaHVuJydpXCA7CivlsIrlkb0gPCBzb25tZWlcIDsKK+iCpeaWmSA8IGhpcnlvdVwgOwor5a6f5oWLIDwgaml0dGFpXCA7CivmnKjnrrEgPCBraWJha29cIDsKK+aciee9qiA8IHl1dXphaVwgOwor5a2m5qChIDwgZ2Fra291XCA7CivmnKjnrqEgPCBtb2trYW5cIDsKK+eOhOexsyA8IGdlbm1haVwgOwor54+I55CyIDwga291aGlpXCA7CivpoqjntIsgPCBmdXVtb25cIDsKK+agquWxiyA8IGthYnV5YVwgOwor5bCK5ZCbIDwgc29ua3VuXCA7Civlrp/mhI8gPCBqaXRzdWlcIDsKK+S9juW7iSA8IHRlaXJlblwgOwor6aO854qsIDwga2FpaW51XCA7CivlsIrlj7cgPCBzb25nb3VcIDsKK+S7lua1gSA8IHRhcnl1dVwgOwor5pyr56uvIDwgbWF0dGFuXCA7Civkurrngb0gPCBqaW5zYWlcIDsKK+S4i+iWrCA8IGdleWFrdVwgOwor5a+G5bCBIDwgbWlwcHV1XCA7CivlsI/ljJkgPCBrb3NhamlcIDsKK+WwiuWOsyA8IHNvbmdlblwgOwor6IKJ5qGCIDwgbmlra2VpXCA7CivotbDloYEgPCBzb3VydWlcIDsKK+S8neaQrCA8IGRlbnBhblwgOwor5a+b5aSnIDwga2FuZGFpXCA7Civlj6TkuovoqJggPCBrb2ppa2lcIDsKK+acrOeovyA8IGhvbmtvdVwgOwor5a2Q5qeYIDwga29zYW1hXCA7Civlrr/lsYsgPCB5YWRveWFcIDsKK+Wvv+WRvSA8IGp1bXlvdVwgOwor55yf6Z2i55uuIDwgbWFqaW1lXCA7CivkuInolLUgPCBzYW56b3VcIDsKK+mfs+mHjyA8IG9ucnlvdVwgOwor5LmX566XIDwgam91emFuXCA7CivmoLnlpKogPCBuZWJ1dG9cIDsKK+itsOmVtyA8IGdpY2hvdVwgOwor5pu457+wIDwgc2hva2FuXCA7CivmnaXnirYgPCByYWlqb3VcIDsKK+S7j+azlSA8IGJ1cHBvdVwgOwor5a6J5omLIDwgeWFzdWRlXCA7Civlr77lj6UgPCB0c3Vpa3VcIDsKK+S4reiAsyA8IGNodXVqaVwgOwor5pys56S+IDwgaG9uc2hhXCA7CivkuIvokL0gPCBnZXJha3VcIDsKK+itpumYsiA8IGtlaWJvdVwgOwor5a+S5aScIDwga2FuJyd5YVwgOwor5a6I5oiQIDwgc2h1c2VpXCA7Civnibnpq5ggPCB0b2trb3VcIDsKK+acq+ekviA8IG1hc3NoYVwgOwor5L2X5a+dIDwgd2FiaW5lXCA7Civlrp/lvJ8gPCBqaXR0ZWlcIDsKK+eOsueTjyA8IHJlaXJvdVwgOwor6ICB55y8IDwgcm91Z2FuXCA7CivmoL3ln7kgPCBzYWliYWlcIDsKK+eJoem2jyA8IG9uZG9yaVwgOwor5bCP5YW1IDwga29oeW91XCA7CivmnIjntYwgPCBnZWtrZWlcIDsKK+iDjOW6gyA8IHNlYmlyb1wgOwor5a2j5pilIDwga2lzaHVuXCA7CivlsI/lhZAgPCBzaG91bmlcIDsKK+ixiueolCA8IGhvdW5lblwgOwor54md6beEIDwgaGlua2VpXCA7CivosaHnnLwgPCB6b3VnYW5cIDsKK+eOs+eRgSA8IHRhaW1haVwgOwor5pqX6KqmIDwgYW5zaG91XCA7CivpqJLkurogPCBzb3VqaW5cIDsKK+WtkOagqiA8IGtva2FidVwgOwor5pi86ZaTIDwgaGlydW1hXCA7CivkvY7lsaQgPCB0ZWlzb3VcIDsKK+agueWfjiA8IG5lamlyb1wgOwor5LqA55SyIDwga2lra291XCA7CivpoZXokZcgPCBrZW5jaG9cIDsKK+mokuS5sSA8IHNvdXJhblwgOwor5bCK5YWsIDwgc29ua291XCA7CivlrrXlrq4gPCB5b21peWFcIDsKK+S9j+WwgiA8IGp1dXNlblwgOwor6Z+z6YCfIDwgb25zb2t1XCA7CivkvJDmjqEgPCBiYXNzYWlcIDsKK+S+v+S5lyA8IGJpbmpvdVwgOwor5Lm+55SwIDwga2FuZGVuXCA7CivosYbnp5EgPCBtYW1la2FcIDsKK+iEseWFmiA8IGRhdHRvdVwgOwor5L2e5aemIDwgbmVpa2FuXCA7CivkvY/lrrYgPCBzdW1pa2FcIDsKK+eOsueOsiA8IHJlaXJlaVwgOwor5L625Ly0IDwgcnlvaGFuXCA7Civos5zmna8gPCBzaGloYWlcIDsKK+iyoea6kCA8IHphaWdlblwgOwor5a6J5oGvIDwgYW5zb2t1XCA7CivlsIrlg48gPCBzb256b3VcIDsKK+S4jeiJryA8IGZ1cnlvdVwgOwor5a6a5bi4IDwgdGVpam91XCA7CivnjK7ojLYgPCBrZW5jaGFcIDsKK+S4gOiPiiA8IGlra2lrdVwgOwor5a6u5a62IDwgbWl5YWtlXCA7CivpoqjnpZ4gPCBmdXVqaW5cIDsKK+WvvuWHpiA8IHRhaXNob1wgOwor5Lih576pIDwgcnlvdWdpXCA7CivkuIfoirggPCBiYW5nZWlcIDsKK+izouaYjiA8IGtlbm1laVwgOwor6LKv5rC0IDwgY2hvc3VpXCA7Civmnq/mnKggPCBrYXJla2lcIDsKK+S4gOiNmCA8IGlpY2hhblwgOwor5a+45YmNIDwgc3VuemVuXCA7Civlro/lvIEgPCBrb3ViZW5cIDsKK+WvvuWGhSA8IHRhaW5haVwgOwor6ICB55SfIDwgcm91c2VpXCA7Civnjbrnpa0gPCBkYXNzYWlcIDsKK+eLrOiqniA8IGRva3Vnb1wgOwor5LiK6Ie8IDwgdXdhdXN1XCA7CivlsI/kvZwgPCBrb3Nha3VcIDsKK+acrOeblyA8IGhvbnRvdVwgOwor6aO95rqAIDwgaG91bWFuXCA7CivpgqPnlLHku5YgPCBuYXl1dGFcIDsKK+WvuOWIhiA8IHN1bmJ1blwgOwor54us6KmxIDwgZG9rdXdhXCA7CivkuIfoiKwgPCBiYW5wYW5cIDsKK+S4iuiHiCA8IGpvdXJvdVwgOwor5pyo55uuIDwgbW9rdW1lXCA7CivlrqblrpggPCBrYW5nYW5cIDsKK+abtOe0lyA8IHNhcmFzYVwgOwor5Lq65rCXIDwgaGl0b2tlXCA7CivmnKjnmr8gPCBraXphcmFcIDsKK+S6uuawkSA8IGppbm1pblwgOwor5LiK6IWVIDwgam91d2FuXCA7CivlsIrkvZMgPCBzb250YWlcIDsKK+acqOeariA8IG1va3VoaVwgOwor5Luj5pu/IDwgZGFpdGFpXCA7Civmn5DmiYAgPCBib3VzaG9cIDsKK+WtkOaWuSA8IGtva2F0YVwgOwor5L2c5aC0IDwgc2FrdWJhXCA7CivosqfmsJEgPCBoaW5taW5cIDsKK+S7iuanmCA8IGltYXlvdVwgOwor5Lqs5rWcIDwga2VpaGluXCA7CivmnInnqI4gPCB5dXV6ZWlcIDsKK+iEseS8miA8IGRha2thaVwgOwor5LiK6IOMIDwgdXdhemVpXCA7Civlr7XlhZAgPCBjaG91amlcIDsKK+S4iuiCoiA8IGpvdXNoaVwgOwor5pm66KyAIDwgY2hpYm91XCA7CivpoZ7ogZogPCBydWlqdXVcIDsKK+acrOeVqiA8IGhvbmJhblwgOwor54m56ZyAIDwgdG9rdWp1XCA7CivosrTmp5ggPCBraXNhbWFcIDsKK+iBsOaYjiA8IHNvdW1laVwgOwor6aKo55y8IDwgZnV1Z2FuXCA7CivogIHnjaogPCByb3VrYWlcIDsKK+WutuWhviA8IGthanVrdVwgOwor6LOH5pysIDwgc2hpaG9uXCA7CivkvZzlnJ8gPCBzYWt1ZG9cIDsKK+S8muW8jyA8IGVzaGlraVwgOwor576a576KIDwgcmVpeW91XCA7CivkuInogIUgPCBzYW5zaGFcIDsKK+ixqueIvSA8IGdvdXNvdVwgOwor5L2c5ZuzIDwgc2FrdXp1XCA7CivnjKvog4wgPCBuZWtvemVcIDsKK+mjm+eBqyA8IHRvYmloaVwgOwor54mH6bGXIDwgaGVucmluXCA7Civpp4XlkI0gPCBla2ltZWlcIDsKK+S7o+aVsCA8IGRhaXN1dVwgOwor6LGQ55SwIDwgdG95b3RhXCA7Civni6zooYwgPCBkb2trb3VcIDsKK+eJm+mmrCA8IGd5dXViYVwgOwor5Li456eYIDwgbWFydWhpXCA7Civpo5vngJEgPCBoaWJha3VcIDsKK+WAtualvemDqCA8IGt1cmFidVwgOwor6aCS6KGMIDwgaGFua291XCA7CivmnbHmr44gPCB0b3VtYWlcIDsKK+iDoeWbvSA8IGtva29rdVwgOwor5qGI5YaFIDwgYW4nJ25haVwgOwor5L2V5ZueIDwgbmFua2FpXCA7CivorbfouqsgPCBnb3NoaW5cIDsKK+acqOeQtCA8IG1va2tpblwgOwor5LuP5pu4IDwgYnVzc2hvXCA7CivpoZ7nuoIgPCBydWlzYW5cIDsKK+mdkum7tCA8IGFva2FiaVwgOwor5pyo55CGIDwgbW9rdXJpXCA7CivkvpvkuI4gPCBreW91eW9cIDsKK+iukuislyA8IHphbmJvdVwgOwor5a+d5YiDIDwgbmV0YWJhXCA7CivkuIDnvr0gPCBpY2hpd2FcIDsKK+iCieaEnyA8IG5pa2thblwgOwor6LOi5omNIDwga2Vuc2FpXCA7CivlsYvmoLnlsYsgPCB5YW5leWFcIDsKK+WuieWvpyA8IGFuJyduZWlcIDsKK+S4u+egsiA8IHNodWhvdVwgOwor5a+d5YW3IDwgc2hpbmd1XCA7Civosr/mmJMgPCBib3Vla2lcIDsKK+ePvuaVsCA8IGdlbnN1dVwgOwor6Z+z6Kq/IDwgb25jaG91XCA7Civpp4XliY0gPCBla2ltYWVcIDsKK+WuiOWuriA8IHlhbW9yaVwgOwor6Z+z6KqtIDwgb25kb2t1XCA7CivmnprmlbAgPCBtYWlzdXVcIDsKK+iBoeaVjyA8IHNvdWJpblwgOwor6LKn5qOSIDwgYmluYm91XCA7CivmnIjnm7ggPCBnZXNzb3VcIDsKK+mdkum3uiA8IGFvc2FnaVwgOwor5a2m5b6SIDwgZ2FrdXRvXCA7CivmnInnm4ogPCB5dXVla2lcIDsKK+S7iuaZqSA8IGtvbmJhblwgOwor5a+S5YmkIDwga2FuemFpXCA7Civos6Lmha4gPCBrZW5yeW9cIDsKK+S4i+e1tSA8IHNoaXRhZVwgOwor6K6S6KiAIDwgemFuZ2VuXCA7CivotablhY0gPCBzaGFtZW5cIDsKK+S6iOa4rCA8IHlvc29rdVwgOwor6aKo55C0IDwgZnV1a2luXCA7CivkuInntYQgPCBtaWt1bWlcIDsKK+S4iee1gyA8IHNhbmdlblwgOwor5LiK57SNIDwgam91bm91XCA7CivnjovniakgPCBvdW1vbm9cIDsKK+S4gOe4tyA8IGljaGlydVwgOwor5LqM5rWBIDwgbmlyeXV1XCA7CivmtbfogIHojLYgPCBlYmljaGFcIDsKK+iBluaWrSA8IHNlaWRhblwgOwor5L2p5YmjIDwgaGFpa2VuXCA7CivkurrmnZAgPCBqaW56YWlcIDsKK+acqueGnyA8IG1panVrdVwgOwor5LiK57GzIDwgam91bWFpXCA7CivkuK3noLQgPCBjaHV1aGFcIDsKK+S6uuacmyA8IGppbmJvdVwgOwor5a+h5L2cIDwga2FzYWt1XCA7CivkuK3noKUgPCBuYWthdG9cIDsKK+mir+eIvSA8IHNhc3NvdVwgOwor5a6f5ZywIDwgaml0Y2hpXCA7Civog4zlmqIgPCBoYWlub3VcIDsKK+izpuW9uSA8IGJ1eWFrdVwgOwor5pyJ55SoIDwgeXV1eW91XCA7CivmnInnlKMgPCB5dXVzYW5cIDsKK+aciOeUoyA8IGdlc3NhblwgOwor5LyP5bGLIDwgZnVzZXlhXCA7CivpmL/lqr3muK8gPCBhbWFrb3VcIDsKK+adkeawkSA8IHNvbm1pblwgOwor55CD5oqAIDwga3l1dWdpXCA7CivmnprmjJkgPCBtYWlreW9cIDsKK+aXpemggyA8IGhpZ29yb1wgOwor5LiL562WIDwgZ2VzYWt1XCA7CivpnZLprqsgPCBhb3phbWVcIDsKK+Wtl+W8lSA8IGppYmlraVwgOwor5L2O5ZCfIDwgdGVpZ2luXCA7CivkvZXljYMgPCBuYW56ZW5cIDsKK+S9leWNgSA8IG5hbmp1dVwgOwor6aas5YqbIDwgYmFyaWtpXCA7CivlrZjlu4MgPCB6b25wYWlcIDsKK+ejgeaWueS9jSA8IGppaG91aVwgOwor5LiJ562JIDwgc2FudG91XCA7CivkuIDnsYwgPCBpdGNodXVcIDsKK+WtkOW9uSA8IGtveWFrdVwgOwor5LyP5a2XIDwgZnVzZWppXCA7CivogJDmsLQgPCB0YWlzdWlcIDsKK+S4iuerryA8IGpvdXRhblwgOwor6aeE5L2cIDwgZGFzYWt1XCA7CivkuLnnlLAgPCB0YW5kZW5cIDsKK+mnheS8nSA8IGVraWRlblwgOwor5a2X5bmVIDwgamltYWt1XCA7CivkuIfnq68gPCBiYW50YW5cIDsKK+S4iuepuiA8IGpvdWt1dVwgOwor542w54ybIDwgbmVpbW91XCA7CivniYfpm7IgPCBoZW4nJ3VuXCA7Civni6zoi7EgPCBkb2t1ZWlcIDsKK+aXpembgCA8IGhpZ2FyYVwgOwor6aGM57C9IDwgZGFpc2VuXCA7Civlr4blgbUgPCBtaXR0ZWlcIDsKK+mgu+e5gSA8IGhpbnBhblwgOwor5LiA562WIDwgaXNzYWt1XCA7CivkvZXliIYgPCBuYW5wdW5cIDsKK+eJvemAoyA8IGtlbnJlblwgOwor5a2r5a2QIDwgbWFnb2tvXCA7CivkuInnqK4gPCBzYW5zaHVcIDsKK+S4iueoiyA8IGpvdXRlaVwgOwor5pel6ZmwIDwgaGlrYWdlXCA7CivppqzlhYsgPCBtYXJ1a3VcIDsKK+WumOWWtiA8IGthbicnZWlcIDsKK+e+veeUsCA8IGhhbmVkYVwgOwor5LiA56yRIDwgaXNzaG91XCA7CivpnaLpoKwgPCBtZW5wb29cIDsKK+aXpemZkCA8IGhpZ2lyaVwgOwor5Lih55uuIDwgcnlvdW1lXCA7CivmnKzmupAgPCBob25nZW5cIDsKK+iCieWxiyA8IG5pa3V5YVwgOwor5aem6KiIIDwga2Fua2VpXCA7CivpnZnppIogPCBzZWl5b3VcIDsKK+iyoeaUvyA8IHphaXNlaVwgOwor5a2k5a6iIDwga29rYWt1XCA7Civku6TlvJ8gPCByZWl0ZWlcIDsKK+agquS+oSA8IGthYnVrYVwgOwor5Lit55SfIDwgbmFrYXRlXCA7Civni6zoh6ogPCBkb2t1amlcIDsKK+S7o+W8gSA8IGRhaWJlblwgOwor5a+G5L2/IDwgbWlzc2hpXCA7CivlrrblhYMgPCBpZW1vdG9cIDsKK+eJp+mHjiA8IGJva3V5YVwgOwor6Z2i6Z2iIDwgbWVubWVuXCA7Civkuovmpa0gPCBqaWd5b3VcIDsKK+S4geeomiA8IGRldGNoaVwgOwor5p2l5pu4IDwgcmFpc2hvXCA7Civml6XplbcgPCBoaW5hZ2FcIDsKK+S6lOahgSA8IGdva2V0YVwgOwor5Lya5aCCIDwga2FpZG91XCA7Civlr4bkvJogPCBtaWtrYWlcIDsKK+iziuW+kiA8IHpva3V0b1wgOwor54yr56eRIDwgbmVrb2thXCA7Civml4XppKggPCByeW9rYW5cIDsKK+S7u+WumCA8IG5pbmthblwgOwor5a2f5a2QIDwgbW91c2hpXCA7CivnvqTnm7IgPCBndW5tb3VcIDsKK+aYj+i/tyA8IGtvbm1laVwgOwor5Lmz5q+NIDwgbnl1dWJvXCA7Civku5blv4MgPCB0YXNoaW5cIDsKK+S9j+WDpyA8IGp1dXNvdVwgOwor5LiA56WoIDwgaXBweW91XCA7CivpjZvlhrblsYsgPCBrYWppeWFcIDsKK+afu+WPjiA8IHNhc2h1dVwgOwor5LqM5qC4IDwgbmlrYWt1XCA7Civlrp/li6IgPCBqaXNzZWlcIDsKK+S7ruWxiyA8IGthcml5YVwgOwor5L2e5Lq6IDwgbmVpamluXCA7CivmnKvms5UgPCBtYXBwb3VcIDsKK+adpeaWuSA8IGtpa2F0YVwgOwor6aOy5paZIDwgaW5yeW91XCA7CivlrpjljbAgPCBrYW4nJ2luXCA7CivkurrmiYsgPCBoaXRvZGVcIDsKK+abuOeKtiA8IHNob2pvdVwgOwor5Luu5a+dIDwga2FyaW5lXCA7CivlrZTlrZ8gPCBrb3Vtb3VcIDsKK+S7ruWutiA8IGthcmlpZVwgOwor5LuB5oSbIDwgamluJydhaVwgOwor5aSn6bqmIDwgb29tdWdpXCA7Civni63nvqkgPCBreW91Z2lcIDsKK+isnemHkSA8IHNoYWtpblwgOwor5a2Q5a6IIDwga29tb3JpXCA7Civlrr/kuJYgPCBzdWt1c2VcIDsKK+WlrumXmCA8IGZ1bnRvdVwgOwor5a6X5YuZIDwgc2h1dW11XCA7CivlqZrnpLwgPCBrb25yZWlcIDsKK+acrOauvyA8IGhvbmRlblwgOwor54yb56a9IDwgbW91a2luXCA7Civku4HmgbUgPCBqaW5rZWlcIDsKK+S6lOaXpSA8IGl0c3VrYVwgOwor5pm66IO9IDwgY2hpbm91XCA7CivkuIDnnqwgPCBpc3NodW5cIDsKK+miqOa0niA8IGZ1dWRvdVwgOwor5pas6aaWIDwgemFuc2h1XCA7Civml6Xpiq0gPCBoaXplbmlcIDsKK+acrOashCA8IGhvbnJhblwgOwor5LuP5birIDwgYnVzc2hpXCA7CivlrrbkuKYgPCB5YW5hbWlcIDsKK+ixiuawtCA8IGhvdXN1aVwgOwor5LiB55uuIDwgY2hvdW1lXCA7Civku6TlrasgPCByZWlzb25cIDsKK+S7j+W3pSA8IGJ1a2tvdVwgOwor5aGp5Z+65bqmIDwgZW5raWRvXCA7CivogonloYogPCBuaWtrYWlcIDsKK+aarueniyA8IGJvc2h1dVwgOwor5pm66ICFIDwgY2hpc2hhXCA7CivmlrnpnaIgPCBob3VtZW5cIDsKK+WtmOWkliA8IHpvbmdhaVwgOwor576O55qEIDwgYml0ZWtpXCA7CivkvLblhKogPCByZWl5dXVcIDsKK+efoue+veaguSA8IHlhYmFuZVwgOwor5LmX5rCXIDwgbm9yaWtpXCA7CivkuIrnlaogPCBqb3ViYW5cIDsKK+miqOawtCA8IGZ1dXN1aVwgOwor5LuY5bGeIDwgZnV6b2t1XCA7CivkuInnlaogPCBzYW5iYW5cIDsKK+WtpuWckiA8IGdha3VlblwgOwor6KyZ6YGcIDwga2Vuc29uXCA7CivkuIrnlLAgPCBqb3VkZW5cIDsKK+WknOm3uSA8IHlvdGFrYVwgOwor6LSI5ZGIIDwgem91dGVpXCA7Civoq5bpoYwgPCByb25kYWlcIDsKK+S8muWQiCA8IGthaWdvdVwgOwor55CG5a2mIDwgcmlnYWt1XCA7Civml6fpg70gPCBreXV1dG9cIDsKK+i0iOWPtyA8IHpvdWdvdVwgOwor5Lit54GrIDwgY2h1dWJpXCA7CivkvJ3ljZggPCBkZW50YW5cIDsKK+Wuo+S8nSA8IHNlbmRlblwgOwor6LSL5Y2wIDwgbmlzZWluXCA7Civog4zku7sgPCBoYWluaW5cIDsKK+e/u+ahiCA8IGhvbicnYW5cIDsKK+eOi+anmCA8IG91c2FtYVwgOwor5Lu75ZywIDwgbmluY2hpXCA7CivkuIDnlosgPCBpcHBpa2lcIDsKK+iAgeadpSA8IHJvdXJhaVwgOwor5LuW5a6XIDwgdGFzaHV1XCA7CivogIHmnYkgPCByb3VzYW5cIDsKK+WujOWFqCA8IGthbnplblwgOwor5pat6Z2iIDwgZGFubWVuXCA7Civku6TlprkgPCByZWltYWlcIDsKK+WknOmzpSA8IHlhY2hvdVwgOwor54yb55yBIDwgbW91c2VpXCA7Civmn5TlkowgPCBueXV1d2FcIDsKK+WumuS+iyA8IHRlaXJlaVwgOwor54++5a2YIDwgZ2Vuem9uXCA7CivkubHmna0gPCByYW5ndWlcIDsKK+S8tOS+tiA8IGhhbnJ5b1wgOwor5a6a5L2PIDwgdGVpanV1XCA7CivlrojlhbUgPCBzaHVoZWlcIDsKK+iDjOS4rSA8IHNlbmFrYVwgOwor54m56KixIDwgdG9ra3lvXCA7CivlrZjlnKggPCBzb256YWlcIDsKK+iDjOS4iCA8IHNldGFrZVwgOwor54m56KiTIDwgdG9ra3VuXCA7CivniIbpn7MgPCBiYWt1b25cIDsKK+S4i+eNhCA8IGdlZ29rdVwgOwor5LuK5bCaIDwgaW1hbmFvXCA7Civkurrlt6UgPCBqaW5rb3VcIDsKK+S5seaatCA8IHJhbmJvdVwgOwor5pyb5qiTIDwgYm91cm91XCA7CivkuInnjL8gPCBtaXphcnVcIDsKK+irlumZoyA8IHJvbmppblwgOwor5Ly25Lq6IDwgcmVpamluXCA7CivorLnoqIAgPCBraW5nZW5cIDsKK+acseabuCA8IHNodXNob1wgOwor6aSo5aiDIDwga2FuJydhaVwgOwor54mH6LyqIDwga2F0YXdhXCA7CivlronlgKQgPCB5YXN1bmVcIDsKK+acrOadpSA8IGhvbnJhaVwgOwor5piO6KiAIDwgbWVpZ2VuXCA7Civnv7DmnpcgPCBrYW5yaW5cIDsKK+S7pOWggiA8IHJlaWRvdVwgOwor5LiH54q2IDwgYmFuam91XCA7CivlrpfkuLsgPCBzb3VzaHVcIDsKK+mciumtgiA8IHJlaWtvblwgOwor5pys5pyoIDwgbW90b2tpXCA7CivmnKzmnJsgPCBob25tb3VcIDsKK+e9ueeXhSA8IHJpYnlvdVwgOwor6aGY54q2IDwgZ2Fuam91XCA7CivmnKvmnKsgPCBzdWV6dWVcIDsKK+eZvuWQiOaguSA8IHl1cmluZVwgOwor5a2Q5ZqiIDwgc2hpbm91XCA7CivkuozmiYsgPCBmdXRhdGVcIDsKK+S5seaVsCA8IHJhbnN1dVwgOwor5pil6JqVIDwgaGFydWdvXCA7CivmnKjmnKsgPCBrb251cmVcIDsKK+iCjOWQiCA8IGhhZGFhaVwgOwor546L5pydIDwgb3VjaG91XCA7Civpm7fps7QgPCByYWltZWlcIDsKK+S7u+WRvSA8IG5pbm1laVwgOwor5LuA5a6dIDwganV1aG91XCA7CivkurrlsYsgPCBoaXRveWFcIDsKK+acpuacpyA8IG1vdXJvdVwgOwor5pym5pymIDwgbW91bW91XCA7CivkuK3mtLIgPCBuYWthc3VcIDsKK+izm+WYhiA8IHNhbnRhblwgOwor5pel6LazIDwgaGlhc2hpXCA7Civmlpzpmb0gPCBzaGF5b3VcIDsKK+Wkp+miqCA8IG9va2F6ZVwgOwor5aWq6YKEIDwgZGFra2FuXCA7Civpn7Pnt6AgPCBuZWppbWVcIDsKK+WkqemhlCA8IHRlbmdhblwgOwor54mp6KaLIDwgbW9ub21pXCA7CivpmL/nvoXmvKIgPCBhcmFrYW5cIDsKK+WtpuWLmSA8IGdha3VtdVwgOwor5pu/5q2MIDwga2FldXRhXCA7CivlrZjlkb0gPCB6b25tZWlcIDsKK+Wlrui/hSA8IGZ1bmppblwgOwor6LOt5Y2aIDwgdG9iYWt1XCA7CivmnYnmiLggPCBzdWdpZG9cIDsKK+iyp+WvkiA8IGhpbmthblwgOwor5pyJ5qeYIDwgYXJpeW91XCA7CivmnKzmlocgPCBob25tb25cIDsKK+adpeW6lyA8IHJhaXRlblwgOwor5pys5pWwIDwgaG9uc3V1XCA7Civmlqfpkb8gPCBmdXNha3VcIDsKK+adpeW5tCA8IHJhaW5lblwgOwor5paH6aGMIDwgYnVuZGFpXCA7Civnjovml48gPCBvdXpva3VcIDsKK+S6lOW+syA8IGdvdG9rdVwgOwor5LiH54K5IDwgbWFudGVuXCA7Civku4rlpJwgPCBrb24nJ3lhXCA7CivkuK3msJcgPCBjaHV1a2lcIDsKK+S8neS7pCA8IGRlbnJlaVwgOwor5LuP5aGUIDwgYnV0dG91XCA7CivpnJzpm7AgPCBzb3VmdW5cIDsKK+mgreeXmyA8IHp1dHN1dVwgOwor5Li75qipIDwgc2h1a2VuXCA7Civpm7fprZogPCByYWlneW9cIDsKK+S4h+eBryA8IG1hbmRvdVwgOwor6LKh5a6dIDwgemFpaG91XCA7CivlpJzpoqggPCB5b2themVcIDsKK+iyquWpqiA8IGRvbnJhblwgOwor5LyQ5YCSIDwgYmF0dG91XCA7Civph47ot6/lrZAgPCBub2ppa29cIDsKK+ePvuWcsCA8IGdlbmNoaVwgOwor54yb54qsIDwgbW91a2VuXCA7CivlpKnpm7cgPCB0ZW5yYWlcIDsKK+acneaZqSA8IGFzYWJhblwgOwor5LuW5Zu9IDwgdGFrb2t1XCA7Civku67lkI0gPCBrZW15b3VcIDsKK+miqOaZryA8IGZ1dWtlaVwgOwor6KuW6YuSIDwgcm9ucG91XCA7CivmlofpnaIgPCBidW5tZW5cIDsKK+S8juWAhiA8IGdpcnlvdVwgOwor6aSD5a2QIDwgZ3lvdXphXCA7CivlrablhYQgPCBnYWtrZWlcIDsKK+eKr+e9qiA8IGhhbnphaVwgOwor5aSn6ZujIDwgdGFpbmFuXCA7CivkuK3mrKcgPCBjaHV1b3VcIDsKK+S8neS4liA8IGRlbnNlaVwgOwor5aSa6aGNIDwgdGFnYWt1XCA7CivlpKnpmbogPCB0ZW5rZW5cIDsKK+S8muS4uyA8IGthaXNodVwgOwor5p2x5a6uIDwgdG91Z3V1XCA7CivogZbln58gPCBzZWlpa2lcIDsKK+S7o+WTgSA8IGRhaWhpblwgOwor6aCT55+lIDwgdG9uY2hpXCA7CivlpJXpoZQgPCB5dXVnYW9cIDsKK+S5seaIpiA8IHJhbnNlblwgOwor6ICD5oWuIDwga291cnlvXCA7Civku4vlnKggPCBrYWl6YWlcIDsKK+aVtOmiqCA8IHNlaWZ1dVwgOwor5Lu75YWNIDwgbmlubWVuXCA7CivlrZjliIYgPCB6b25idW5cIDsKK+S7pOWQjSA8IHJlaW1laVwgOwor6aOy5bGLIDwgbm9taXlhXCA7CivkurrlpJYgPCBuaW5nYWlcIDsKK+aWp+mJniA8IGZ1ZXRzdVwgOwor5aSc6ZynIDwgeW9naXJpXCA7CivnjJvnhLYgPCBtb3V6ZW5cIDsKK+S6uuWjqyA8IGppbnNoaVwgOwor6Z2i6LKMIDwgbWVuYm91XCA7Civosqnlo7IgPCBoYW5iYWlcIDsKK+S4u+aguSA8IHNodWtvblwgOwor5aSn6ZaiIDwgb296ZWtpXCA7Civml6foqaAgPCBreXV1ZWlcIDsKK+S7iuWbniA8IGtvbmthaVwgOwor5pel6KqMIDwgbmlzc2hpXCA7Civml6noqIggPCBzb3VrZWlcIDsKK+S7o+WPgiA8IGRhaXNhblwgOwor5aSn6ZaAIDwgZGFpbW9uXCA7CivmnKzmi6AgPCBob25reW9cIDsKK+acieacmyA8IHl1dWJvdVwgOwor5pW06aCTIDwgc2VpdG9uXCA7Civml6foqJggPCBreXV1a2lcIDsKK+WmhOiogCA8IG1vdWdlblwgOwor5peF6LevIDwgdGFiaWppXCA7Civosarlv6sgPCBnb3VrYWlcIDsKK+aXqeimiyA8IGhheWFtaVwgOwor6Zu76aGVIDwgZGVua2VuXCA7CivlpJbpm7sgPCBnYWlkZW5cIDsKK+adv+WhgCA8IGl0YWJlaVwgOwor54mH6KiAIDwgaGVuZ2VuXCA7CivnvarnirYgPCB6YWlqb3VcIDsKK+eOqeW8hCA8IGdhbnJvdVwgOwor5aWJ6YG3IDwgaG91c2VuXCA7CivmnKzmh5AgPCBob25rYWlcIDsKK+S4ueacsSA8IHRhbnNodVwgOwor5Li45pyoIDwgbWFydWtpXCA7CivlrabkuosgPCBnYWt1amlcIDsKK+aciOaXpiA8IGdldHRhblwgOwor5aSc6ZW3IDwgeW9uYWdhXCA7CivpnaLoq4cgPCBtZW5kYW5cIDsKK+Wliei/jiA8IGhvdWdlaVwgOwor5pyJ5pWwIDwgeXV1c3V1XCA7CivlqpLmn5MgPCBiYWlzZW5cIDsKK+e5gemWkSA8IGhhbmthblwgOwor5Luy5YCkIDwgbmFrYW5lXCA7CivkuIrmsLQgPCBqb3VzdWlcIDsKK+iqmOmbuyA8IHl1dWRlblwgOwor5pm0552AIDwgaGFyZWdpXCA7CivnvbDngrkgPCBiYXR0ZW5cIDsKK+Wkp+mOjCA8IG9vZ2FtYVwgOwor5Lqh5aa7IDwgYm91c2FpXCA7CivpnZLosYYgPCBhb21hbWVcIDsKK+iyp+WbsCA8IGhpbmtvblwgOwor5Luy5L+dIDwgY2h1dWhvXCA7Civnj43lpYcgPCBjaGlua2lcIDsKK+Wkp+mNiyA8IG9vbmFiZVwgOwor5pyA5pepIDwgbW9oYXlhXCA7CivkuIfmsJEgPCBiYW5taW5cIDsKK+S5l+aJiyA8IG5vcml0ZVwgOwor5LuP5Y+CIDwgYnVzc2FuXCA7CivkuIDms4ogPCBpcHBha3VcIDsKK+S4u+aWhyA8IHNodWJ1blwgOwor54++5YuiIDwgZ2Vuc2VpXCA7CivogIHlubwgPCByb3V5b3VcIDsKK+iAgeW5tCA8IHJvdW5lblwgOwor5LiJ5q27IDwgc2Fuc2hpXCA7Civku5blipsgPCB0YXJpa2lcIDsKK+acrOaApyA8IGhvbnNlaVwgOwor57+75byEIDwgaG9ucm91XCA7CivosqHlm6MgPCB6YWlkYW5cIDsKK+iqjOmdoiA8IHNoaW1lblwgOwor5LiH5q27IDwgYmFuc2hpXCA7CivkuIfmrbMgPCBtYW56YWlcIDsKK+WtkOS+myA8IGtvZG9tb1wgOwor5a2Y5LqhIDwgc29uYm91XCA7CivkuozlrZAgPCBmdXRhZ29cIDsKK+Wcn+S4i+W6pyA8IGRvZ2V6YVwgOwor6aCG55WqIDwganVuYmFuXCA7Civpm7Lpm4YgPCB1bnNodXVcIDsKK+mbsumbgCA8IGhpYmFyaVwgOwor54++5YmNIDwgZ2VuemVuXCA7Civku4vljbUgPCBrYWlyYW5cIDsKK+Wkp+mJiCA8IG9vbmF0YVwgOwor6Zuj6aGMIDwgbmFuZGFpXCA7CivmnKzlvbEgPCBob24nJ2VpXCA7CivkuKbmnKggPCBuYW1pa2lcIDsKK+aWnOi+uiA8IHNoYWhlblwgOwor6LOi5Li7IDwga2Vuc2h1XCA7Civmm7jmlo4gPCBzaG9zYWlcIDsKK+e+iuavmyA8IHlvdW1vdVwgOwor5aSn6YeRIDwgdGFpa2luXCA7Civku4HlkJsgPCBqaW5rdW5cIDsKK+S4jeanmCA8IGJ1emFtYVwgOwor5Lq65ZOhIDwgamluJydpblwgOwor5Lit5pelIDwgbmFrYWJpXCA7CivmnKvlvJ8gPCBtYXR0ZWlcIDsKK+S6uuWTgSA8IGppbnBpblwgOwor5LiJ5qipIDwgc2Fua2VuXCA7CivkuIDmrKEgPCBpY2hpamlcIDsKK+eGsemiqCA8IG5lcHB1dVwgOwor5LiK5qeYIDwgdWV6YW1hXCA7CivlpKfphZIgPCBvb3pha2VcIDsKK+S6uuWRvSA8IGppbm1laVwgOwor57im6ZmjIDwganV1amluXCA7Civlq4HlvqEgPCB5b21lZ29cIDsKK+iznuS4jiA8IHNob3V5b1wgOwor5pys5bqXIDwgaG9udGVuXCA7Civpm7LplpMgPCBrdW1vbWFcIDsKK+Wni+e1giA8IHNoaWp1dVwgOwor6KuW6LObIDwgcm9uc2FuXCA7Civku4/lhbggPCBidXR0ZW5cIDsKK+S4iealrSA8IHNhbmdvdVwgOwor5Luj5Lu7IDwgZGFpbmluXCA7CivnvqjmnJsgPCBzZW5ib3VcIDsKK+ippumokyA8IHNoaWtlblwgOwor5LiW5p+EIDwgeW9nYXJhXCA7Civoqp7pjLIgPCBnb3Jva3VcIDsKK+WkqemBkyA8IHRlbmRvdVwgOwor5Lq65Y+CIDwgbmluamluXCA7CivlpKnpgYsgPCB0ZW4nJ3VuXCA7CivkuIDmqLkgPCBpY2hpanVcIDsKK+S7iuWGrCA8IGtvbnRvdVwgOwor5aSn6YGTIDwgZGFpZG91XCA7CivmhbDlronogIUgPCBpYW5zaGFcIDsKK+mboumalCA8IHJpa2FrdVwgOwor5pq05rCRIDwgYm91bWluXCA7Civpm6LpmbggPCByaXJpa3VcIDsKK+iAgeWusyA8IHJvdWdhaVwgOwor5paH6YG4IDwgYnVuc2VuXCA7CivmnKjlt6UgPCBtb2trb3VcIDsKK+S5seWwhCA8IHJhbnNoYVwgOwor5aSp6L66IDwgdGVwcGVuXCA7Civosqzli5kgPCBzZWtpbXVcIDsKK+aWh+mBiyA8IGJ1bicndW5cIDsKK+aXheijhSA8IHJ5b3NvdVwgOwor5pa56KiAIDwgaG91Z2VuXCA7CivkuInmoYEgPCBtaWtldGFcIDsKK+iAgeWsoiA8IHJvdWpvdVwgOwor6IGW5YOPIDwgc2Vpem91XCA7Civml4XooYwgPCByeW9rb3VcIDsKK+mbo+mWoiA8IG5hbmthblwgOwor5paw6KqeIDwgc2hpbmdvXCA7CivlpKfovKogPCB0YWlyaW5cIDsKK+acrOWxsSA8IGhvbnphblwgOwor5aSp6LuNIDwgdGVuZ3VuXCA7CivkuInmnpogPCBzYW5tYWlcIDsKK+adv+WJjSA8IGl0YW1hZVwgOwor54++5LujIDwgZ2VuZGFpXCA7CivpoLvmrbsgPCBoaW5zaGlcIDsKK+acrOWxiyA8IGhvbicneWFcIDsKK+S4ieadvyA8IHNhbnBhblwgOwor6aGe5pysIDwgcnVpaG9uXCA7Civlo7DploAgPCBzZWltb25cIDsKK+ePvuS7iiA8IGdlbmtvblwgOwor5Lqr5Y+XIDwga3lvdWp1XCA7CivpoqjluKsgPCBmdXVzaGlcIDsKK+mhnuabuCA8IHJ1aXNob1wgOwor5pys5bCKIDwgaG9uem9uXCA7CivkuIrmnJ8gPCBrYW1pa2lcIDsKK+eGsemXmCA8IG5ldHRvdVwgOwor54+N5ZGzIDwgY2hpbm1pXCA7Civmm7jmiL8gPCBzaG9ib3VcIDsKK+S4gOahiCA8IGljaGlhblwgOwor5LiJ5pysIDwgc2FuYm9uXCA7CivppIrliIYgPCB5b3VidW5cIDsKK+ixquWloiA8IGdvdXNoYVwgOwor5pS56aGMIDwga2FpZGFpXCA7CivkuIrmm7ggPCBqb3VzaG9cIDsKK+acqOWxkSA8IGtpa3V6dVwgOwor5LuP5LyaIDwgYnV0c3VlXCA7CivkuqHlkb0gPCBib3VtZWlcIDsKK+aWreiogCA8IGRhbmdlblwgOwor5aSW6YGKIDwgZ2FpeXV1XCA7CivnjonlsYsgPCB0YW1heWFcIDsKK+S7leS4iiA8IHNoaWFnZVwgOwor6aGY5pybIDwgZ2FubW91XCA7CivniKzomasgPCBoYWNodXVcIDsKK+eMruacrCA8IGtlbnBvblwgOwor5pyA5oKqIDwgc2FpYWt1XCA7Civni6zmvJQgPCBkb2t1ZW5cIDsKK+mhmOabuCA8IGdhbnNob1wgOwor5pyr5a2rIDwgbWFzc29uXCA7CivmmpfmtYEgPCBhbnJ5dXVcIDsKK+acq+WtkCA8IG1hc3NoaVwgOwor57+g5bWQIDwgc3VpcmFuXCA7Civpo5/lmaggPCBzaG9ra2lcIDsKK+Wkp+i2syA8IG9vYXNoaVwgOwor5Lqh5Y+LIDwgYm91eXV1XCA7Civku4rku4ogPCBpbWFpbWFcIDsKK+S7iuS6uiA8IGtvbmppblwgOwor6IGW5Lq6IDwgc2VpamluXCA7CivnjaPmgKcgPCBqdXVzZWlcIDsKK+mbsumHjyA8IHVucnlvdVwgOwor5LiK5pesIDwgam91anVuXCA7CivkuIDmnJ0gPCBpdGNob3VcIDsKK+Wkoui3ryA8IHl1bWVqaVwgOwor5LiA5pyNIDwgaXBwdWt1XCA7Civoq4foq5YgPCBkYW5yb25cIDsKK+S4oeaLsyA8IGphbmtlblwgOwor6aOv5Y+wIDwgaGFuZGFpXCA7Civml6XoiKogPCBuaWtrb3VcIDsKK+e9t+alrSA8IGhpZ3lvdVwgOwor5Lq65YGPIDwgbmluYmVuXCA7CivlpJbovKogPCBnYWlyaW5cIDsKK+WkqeiznCA8IHRlbnNoaVwgOwor5LiJ5pa5IDwgc2FucG91XCA7CivpnZLol40gPCBzZWlyYW5cIDsKK+mfsueJqSA8IGFlbW9ub1wgOwor5Li75b6TIDwgc2h1anV1XCA7Civmlq3oo4EgPCBkYW5zYWlcIDsKK+S6uuWAqyA8IGppbnJpblwgOwor6KuL6KiTIDwgc2Vpa3VuXCA7CivnjKXmnKwgPCB3YWlob25cIDsKK+S5vuWdpCA8IGtlbmtvblwgOwor5Lmx5aOyIDwgcmFuYmFpXCA7CivlpInpgbcgPCBoZW5zZW5cIDsKK+mhjOadkCA8IGRhaXphaVwgOwor5aSW6LuKIDwgZ2Fpc2hhXCA7CivkuKHmiYsgPCByeW91dGVcIDsKK+S4g+aXpSA8IG5hbm9rYVwgOwor5aSJ6YCgIDwgaGVuem91XCA7CivpoZjmlocgPCBnYW5tb25cIDsKK+WlieihjCA8IGJ1Z3lvdVwgOwor5LuB5Lq6IDwgamluamluXCA7CivmnKzlprsgPCBob25zYWlcIDsKK+miqOWusyA8IGZ1dWdhaVwgOwor5auJ5aasIDwgc2hpdHRvXCA7CivorJ3nvaogPCBzaGF6YWlcIDsKK+S6uuS9kyA8IG5pbnRlaVwgOwor5paH6LGqIDwgYnVuZ291XCA7Civmlr3olqwgPCBzZXlha3VcIDsKK+aWnOimliA8IHNoYXNoaVwgOwor5pWw6LuSIDwgc3V1a2VuXCA7Civnvarmpa0gPCB6YWlnb3VcIDsKK+mbu+i7iiA8IGRlbnNoYVwgOwor6aGe5o6oIDwgcnVpc3VpXCA7CivlpInou6IgPCBoZW50ZW5cIDsKK+S4gOaTsiA8IGl0dGVraVwgOwor54yb5pqRIDwgbW91c2hvXCA7Civoq7joirggPCBzaG9nZWlcIDsKK+S6iOWRiiA8IHlva29rdVwgOwor5pu45bqXIDwgc2hvdGVuXCA7CivmnKzloYEgPCBob25ydWlcIDsKK+eHu+ijvSA8IGt1bnNlaVwgOwor6Zui6YO3IDwgcmlreW91XCA7CivntbXml6XoqJggPCBlbmlra2lcIDsKK+mdkuiNiSA8IGFva3VzYVwgOwor5aSW6LKMIDwgZ2FpYm91XCA7CivkuK3luqcgPCBjaHV1emFcIDsKK+e9sOadryA8IGJhcHBhaVwgOwor6aC45pyoIDwga3ViaWtpXCA7CivkuZnlpJwgPCBvdHN1eWFcIDsKK+mgk+atuyA8IHRvbnNoaVwgOwor5pil552AIDwgaGFydWdpXCA7Civnt6jpmoogPCBoZW50YWlcIDsKK+iqreiqpiA8IGRva3VqdVwgOwor5Lqs5Lq6IDwga2VpamluXCA7CivnjJvmlLsgPCBtb3Vrb3VcIDsKK+S6jOWJsiA8IG5pd2FyaVwgOwor5pyo5Z6LIDwga2lnYXRhXCA7CivmnJvlpJYgPCBib3VnYWlcIDsKK+aaruaYpSA8IGJvc2h1blwgOwor5Li75bCOIDwgc2h1ZG91XCA7CivlqK/mpb0gPCBnb3Jha3VcIDsKK+mZgOe+heWwvCA8IGRhcmFuaVwgOwor5pq05pS/IDwgYm91c2VpXCA7CivoqqTorKwgPCBnb2J5dXVcIDsKK+S6gOWNnCA8IGtpYm9rdVwgOwor6Kqt6KejIDwgZG9ra2FpXCA7CivkuLvlrrAgPCBzaHVzYWlcIDsKK+eOi+WbvSA8IG91a29rdVwgOwor5aSa6KqtIDwgdGFkb2t1XCA7CivkuZfloLQgPCBub3JpYmFcIDsKK+WkouimiyA8IHl1bWVtaVwgOwor5Lih5bqmIDwgcnlvdWRvXCA7CivpoLvmlbAgPCBoaW5zdXVcIDsKK+iqpOiqrSA8IGdvZG9rdVwgOwor5pmm5riLIDwga2FpanV1XCA7CivkuI3mg5EgPCBmdXdha3VcIDsKK+aVl+i7jSA8IGhhaWd1blwgOwor5p2l5LyaIDwgcmFpa2FpXCA7CivkuIDmiYsgPCBoaXRvdGVcIDsKK+e+heaWueS9jSA8IHJhaG91aVwgOwor5p2l5Lu7IDwgcmFpbmluXCA7Civmm77lrasgPCBoaW1hZ29cIDsKK+iqpOiosyA8IGdveWFrdVwgOwor5pyX5aCxIDwgcm91aG91XCA7CivlpJrop5IgPCB0YWtha3VcIDsKK+S4h+aEnyA8IGJhbmthblwgOwor5aWI6JC9IDwgbmFyYWt1XCA7CivlpJzopbIgPCB5YXNodXVcIDsKK+eKoOeJmyA8IGdpZ3l1dVwgOwor5pil55S7IDwgc2h1bmdhXCA7CivmnaHku7YgPCBqb3VrZW5cIDsKK+aVo+iyoSA8IHNhbnphaVwgOwor6ZqP6aCGIDwgenVpanVuXCA7CivmnaXkuJYgPCByYWlzZWlcIDsKK+e4puiyqyA8IGp1dWthblwgOwor5LiN5b6zIDwgZnV0b2t1XCA7Civnt5Hpm6ggPCByeW9rdXVcIDsKK+WkluimiyA8IHNvdG9taVwgOwor5piP552hIDwga29uc3VpXCA7CivoqanpgbggPCBzaGlzZW5cIDsKK+mdoue5iyA8IG9tb2dhaVwgOwor5paw6Iq9IDwgc2hpbm1lXCA7CivmlbDoqZ4gPCBzdXVzaGlcIDsKK+aYjuecuCA8IG1laWJvdVwgOwor6aCt5pWwIDwgdG91c3V1XCA7CivmmrTmjJkgPCBib3VreW9cIDsKK+malOmboiA8IGtha3VyaVwgOwor5pys5ZG9IDwgaG9ubWVpXCA7CivpoZ7lvaIgPCBydWlrZWlcIDsKK+S4reWtkCA8IG5ha2Fnb1wgOwor5puz5a2QIDwgaGlraWtvXCA7CivlpKnompUgPCB0ZW5zYW5cIDsKK+Wls+e1piA8IGpva3l1dVwgOwor6Zu76KejIDwgZGVua2FpXCA7CivmnIjloLEgPCBnZXBwb3VcIDsKK+acgOWkpyA8IHNhaWRhaVwgOwor54e76JK4IDwga3Vuam91XCA7CivkupHkupEgPCB1bicnbnVuXCA7CivpmpnplpMgPCBzdWtpbWFcIDsKK+acgOWkliA8IHNhaWdhaVwgOwor5pS56YCgIDwga2Fpem91XCA7CivlpKfomY4gPCBvb2RvcmFcIDsKK+mZtemnlSA8IHJ5b3VnYVwgOwor5aOy6LK3IDwgYmFpYmFpXCA7CivkuLjlpKogPCBtYXJ1dGFcIDsKK+adkeS8miA8IHNvbmthaVwgOwor576O5b6zIDwgYml0b2t1XCA7CivmnKrlj44gPCBtaXNodXVcIDsKK+S4gOW/nCA8IGljaGlvdVwgOwor5pyN5ZywIDwgZnVrdWppXCA7CivorJ3npLwgPCBzaGFyZWlcIDsKK+acqOWPoiA8IGtvbXVyYVwgOwor5LiA5b6zIDwgaXR0b2t1XCA7CivkuozkurogPCBmdXRhcmlcIDsKK+iAgeWFtSA8IHJvdWhlaVwgOwor542E5bGLIDwgZ29rdXlhXCA7CivnhY7ppIUgPCBzZW5iZWlcIDsKK+S4iuW4ryA8IHV3YW9iaVwgOwor6ZuR6LiPIDwgemF0dG91XCA7Civmlofol7sgPCBidW5zb3VcIDsKK+eGseizmyA8IG5lc3NhblwgOwor5pWZ6K23IDwga3lvdWdvXCA7CivkubPlhZAgPCBueXV1amlcIDsKK+e+pOWxhSA8IGd1bmt5b1wgOwor57qP57a/IDwgdGVubWVuXCA7CivnlbDkvZPlrZcgPCBpdGFpamlcIDsKK+eMm+aCqiA8IG1vdWFrdVwgOwor5aSn6JS1IDwgb29rdXJhXCA7CivkuIflt7sgPCBtYW5nYW5cIDsKK+aXpeeoiyA8IG5pdHRlaVwgOwor5LiB5bqmIDwgY2hvdWRvXCA7CivlpKnok4sgPCB0ZW5nYWlcIDsKK+aVmeirrSA8IGt5b3V5dVwgOwor5LiA5bqnIDwgaWNoaXphXCA7CivkuZflkIggPCBub3JpYWlcIDsKK+mfs+aomSA8IG9ucHlvdVwgOwor5LmX5Y+3IDwgam91Z291XCA7CivmmrTmgqogPCBib3Vha3VcIDsKK+miqOWQkSA8IGZ1dWtvdVwgOwor5pys5YiGIDwgaG9uYnVuXCA7CivmlZHorbcgPCBreXV1Z29cIDsKK+e4puimpyA8IGp1dXJhblwgOwor5pyN5ZaqIDwgZnVrdW1vXCA7CivmnKjliaMgPCBib2trZW5cIDsKK+Wkp+iRlyA8IHRhaWNob1wgOwor5pOs6Z2pIDwgZ2lrYWt1XCA7Civoq5bogIUgPCByb25zaGFcIDsKK+irluiAgyA8IHJvbmtvdVwgOwor6Z+z5qW9IDwgb25nYWt1XCA7CivmnJflkJ8gPCByb3VnaW5cIDsKK+mbquimiyA8IHl1a2ltaVwgOwor5Lmx5YCrIDwgcmFucmluXCA7Civpm7LooaggPCB1bnB5b3VcIDsKK+eJm+eariA8IGd5dXVoaVwgOwor5LiK5bGkIDwgam91c291XCA7Civpm6PoqJMgPCBuYW5rdW5cIDsKK+iAgeS9kyA8IHJvdXRhaVwgOwor6Zm46ZuiIDwgcmlrdXJpXCA7Civmlq3nvaogPCBkYW56YWlcIDsKK+iok+mbuyA8IGt1bmRlblwgOwor54mi55WqIDwgcm91YmFuXCA7CivmmYLmtYEgPCBqaXJ5dXVcIDsKK+aWrOe9qiA8IHphbnphaVwgOwor5peF57GgIDwgaGF0YWdvXCA7CivmmbTmnJcgPCBzZWlyb3VcIDsKK+S4ieWwgSA8IHNhbnB1dVwgOwor54ax6KqgIDwgbmVzc2VpXCA7CivkuInlr7ggPCBzYW56dW5cIDsKK+iAgeS6uiA8IHJvdWppblwgOwor5pm05puHIDwgc2VpZG9uXCA7CivpoqjliY0gPCBmdXV6ZW5cIDsKK+mZo+miqCA8IGppbnB1dVwgOwor6ZuG6LKoIDwgc2h1dWthXCA7CivpmqfpgZMgPCBzdWlkb3VcIDsKK+acgOWWhCA8IHNhaXplblwgOwor572q5oKqIDwgemFpYWt1XCA7CivmmpbmiL8gPCBkYW5ib3VcIDsKK+aVrOiZlCA8IGtlaWtlblwgOwor6Zqj6YKmIDwgcmlucG91XCA7CivkubHkuqQgPCByYW5rb3VcIDsKK+iAgeS4rSA8IHJvdWp1dVwgOwor5aWz56WeIDwgbWVnYW1pXCA7CivpnZLnrYsgPCBhb3N1amlcIDsKK+iruOeoriA8IHNob3NodVwgOwor5pyL5Y+LIDwgaG91eXV1XCA7CivmlofoirggPCBidW5nZWlcIDsKK+mZsOmZvSA8IG9uJyd5b3VcIDsKK+S4geWvpyA8IHRlaW5laVwgOwor5LiA5a++IDwgaXR0c3VpXCA7Civnvqnlob4gPCBnaWp1a3VcIDsKK+Wkp+iIuSA8IG9vYnVuZVwgOwor6Z2S56u5IDwgYW9kYWtlXCA7CivpnannoKUgPCBrYXdhdG9cIDsKK+mbkeiqjCA8IHphc3NoaVwgOwor54mH55y8IDwga2F0YW1lXCA7Civmlq3nt5ogPCBkYW5zZW5cIDsKK+S5seS4liA8IHJhbnNlaVwgOwor54af6K2wIDwganVrdWdpXCA7CivpmqDpgLggPCBpbml0c3VcIDsKK+Wkp+iHoyA8IGRhaWppblwgOwor576O5a2mIDwgYmlnYWt1XCA7CivmlL/oq5YgPCBzZWlyb25cIDsKK+acjeWLmSA8IGZ1a3VtdVwgOwor6Z2S56m6IDwgYW96b3JhXCA7CivmnInljYogPCB5dXVoYW5cIDsKK+mbkeiogCA8IHpvdWdvblwgOwor5ZCM5oSP6KqeIDwgZG91aWdvXCA7CivkuIvlp5MgPCBnZXNob3VcIDsKK+WmmeeOiyA8IG15b3VvdVwgOwor5peF56iLIDwgcnlvdGVpXCA7CivlpYnntI0gPCBob3Vub3VcIDsKK+eGn+iqniA8IGp1a3Vnb1wgOwor54uZ5pKDIDwgc29nZWtpXCA7CivnjLblpKogPCB5dWRheWFcIDsKK+WknOiIuSA8IHlvZnVuZVwgOwor5aSn6IOGIDwgZGFpdGFuXCA7CivkuIrlpKkgPCBqb3V0ZW5cIDsKK+aXqeeUoyA8IHNvdXphblwgOwor5aSn6IKhIDwgb29tYXRhXCA7CivmnIDljZcgPCBzYWluYW5cIDsKK+WkqeiBniA8IHRlbmJ1blwgOwor6Ki06L+9IDwgc290c3VpXCA7CivoqaDoqqYgPCBlaXNob3VcIDsKK+aZpuaXpSA8IG1pc29rYVwgOwor6KiY6YyyIDwga2lyb2t1XCA7Civmm7jlkI0gPCBzaG9tZWlcIDsKK+S4h+WkqSA8IGJhbnRlblwgOwor5Lit5ZKMIDwgY2h1dXdhXCA7CivmlLnoqIIgPCBrYWl0ZWlcIDsKK+aXpeeUoyA8IG5pc3NhblwgOwor6Z2i55u4IDwgbWVuc291XCA7CivoqZXorbAgPCBoeW91Z2lcIDsKK+Wkp+iAgSA8IHRhaXJvdVwgOwor6aKo5L2TIDwgZnV1dGVpXCA7CivniZ3niZsgPCBtZXVzaGlcIDsKK+Wil+mFjSA8IHpvdWhhaVwgOwor5LiA5aWzIDwgaWNoaWpvXCA7CivkuIrloLQgPCBqb3Vqb3VcIDsKK+Wkp+e+pCA8IHRhaWd1blwgOwor6Zmi6ZW3IDwgaW5jaG91XCA7CivkuK3lj6UgPCBjaHV1a3VcIDsKK+S4ieWhgSA8IHNhbnJ1aVwgOwor6Zq76KqeIDwgc2VraWdvXCA7Civmm4flpKkgPCBkb250ZW5cIDsKK+aciOWFiSA8IGdla2tvdVwgOwor6ZyK6IO9IDwgcmVpbm91XCA7Civlp7vml48gPCBpbnpva3VcIDsKK+S4ueWJjSA8IHRhbnplblwgOwor5Li45YmkIDwgZ2FuemFpXCA7CivkuIDlpKIgPCBpY2hpbXVcIDsKK+acgOWInSA8IHNhaXNob1wgOwor5LiA5aScIDwgaGl0b3lvXCA7CivkuIfloLQgPCBtYW5qb3VcIDsKK+iruOebuCA8IHNob3NvdVwgOwor5aWH562WIDwga2lzYWt1XCA7CivlqZrlp7sgPCBrb24nJ2luXCA7CivkuI7lnKcgPCB5b2F0c3VcIDsKK+eGlOinoyA8IHlvdWthaVwgOwor5aSa6IKJIDwgdGFuaWt1XCA7CivmmpfluZUgPCBhbm1ha3VcIDsKK+mahumBiyA8IHJ5dXV1blwgOwor6Z+L6aeE5aSpIDwgaWRhdGVuXCA7Civoqpjoh7QgPCB5dXVjaGlcIDsKK+aaluW4ryA8IGRhbnRhaVwgOwor5LiL5Zu9IDwgZ2Vrb2t1XCA7CivmmqvlrpogPCB6YW50ZWlcIDsKK+aWreeoriA8IGRhbnNodVwgOwor54us5b6AIDwgZG9rdW91XCA7CivkuInlm7IgPCBtaXRzdWlcIDsKK+WkluiBniA8IGdhaWJ1blwgOwor54m55rS+IDwgdG9rdWhhXCA7CivkuLvlgpggPCBzaHVzYW5cIDsKK+eCuuaUv+WutiA8IGlzZWlrYVwgOwor5aSp57ayIDwgdGVubW91XCA7CivpmbbphZQgPCB0b3VzdWlcIDsKK+abuOWGmSA8IHNob3NoYVwgOwor5LqM5bqm55uuIDwgbmlkb21lXCA7CivnjYTlkI8gPCBnb2t1cmlcIDsKK+eLrOW6pyA8IGRva3V6YVwgOwor5LiA5Zu9IDwgaWtrb2t1XCA7CivpoJjluIMgPCByeW91ZnVcIDsKK+eJh+eJhyA8IGhlbnBlblwgOwor5LiA5ZugIDwgaWNoaWluXCA7CivpnKfnrJsgPCBtdXRla2lcIDsKK+mZuOmBiyA8IHJpa3V1blwgOwor54Sh6ZeHIDwgbXV5YW1pXCA7Civpm4TonIIgPCBvYmFjaGlcIDsKK+e1uembsiA8IGtlbicndW5cIDsKK+eFruixhiA8IG5pbWFtZVwgOwor54aU6J6NIDwgeW91eXV1XCA7CivkuLvkvZMgPCBzaHV0YWlcIDsKK+iok+mAoyA8IGt1bnJlblwgOwor5LiH5ZaEIDwgbWFuemVuXCA7Civmlofns7sgPCBidW5rZWlcIDsKK+aWveeZgiA8IHNlcnlvdVwgOwor5Li75Lu7IDwgc2h1bmluXCA7CivmlazogIEgPCBrZWlyb3VcIDsKK+mghuW9kyA8IGp1bnRvdVwgOwor6Zm96LuiIDwgeW91dGVuXCA7Civml6XnhLwgPCBoaXlha2VcIDsKK+S4iuWTgSA8IGpvdWJvblwgOwor5Li75Lq6IDwgc2h1amluXCA7Civpm4TomIIgPCB5dXV6dWlcIDsKK+mbo+iIuSA8IG5hbnNlblwgOwor6ZqG6LW3IDwgcnl1dWtpXCA7Civlp7vmiJogPCBpbnNla2lcIDsKK+mhnuWQjCA8IHJ1aWRvdVwgOwor6Kqm57WMIDwgenVreW91XCA7Civml6nngKwgPCBoYXlhc2VcIDsKK+abuOS9kyA8IHNob3RhaVwgOwor57eS6KuWIDwgY2hvcm9uXCA7CivkuLvkuIogPCBzaHVqb3VcIDsKK+acgOS4rSA8IG1vbmFrYVwgOwor6ZuR6I+MIDwgemFra2luXCA7Civmlofnr4QgPCBidW5wYW5cIDsKK+aWsOebhiA8IG5paWJvblwgOwor5aKX6LOHIDwgem91c2hpXCA7CivmnIDkuIogPCBtb2dhbWlcIDsKK+Wkp+etiyA8IG9vc3VqaVwgOwor5aqS5L2TIDwgYmFpdGFpXCA7CivniIbnoLQgPCBiYWt1aGFcIDsKK+eLrOWxhSA8IGRva2t5b1wgOwor54m55qipIDwgdG9ra2VuXCA7CivoqLPoqp4gPCB5YWt1Z29cIDsKK+S4reS9kCA8IGNodXVzYVwgOwor5LiH5Y+jIDwgYmFua291XCA7Civpm5HojYkgPCB6YXNzb3VcIDsKK+S4iuWNiiA8IGpvdWhhblwgOwor6Zm46LevIDwgcmlrdXJvXCA7CivlqpLku4sgPCBiYWlrYWlcIDsKK+WkqeepuiA8IHRlbmt1dVwgOwor57eS6KiAIDwgY2hvZ2VuXCA7CivpnIDntaYgPCBqdWt5dXVcIDsKK+S4juWKmyA8IHlvcmlraVwgOwor5aSn56m6IDwgb296b3JhXCA7CivlpJbnsbMgPCBnYWltYWlcIDsKK+WkqeeonyA8IHRlbnBpblwgOwor5Lit5LqMIDwgY2h1dW5pXCA7CivlpYfnmZYgPCBraWhla2lcIDsKK+aVj+iFlSA8IGJpbndhblwgOwor5aSp56ekIDwgdGVuYmluXCA7CivntKLpurogPCBzb3VtZW5cIDsKK+e+pOWDjyA8IGd1bnpvdVwgOwor5aWu54S2IDwgZnVuemVuXCA7CivkuIfliqsgPCBtYW5nb3VcIDsKK+S4iuWJjSA8IHV3YW1hZVwgOwor6ZuM6IqxIDwgbWViYW5hXCA7CivlpYfnl4UgPCBraWJ5b3VcIDsKK+mdkueJqSA8IGFvbW9ub1wgOwor5aSp56WeIDwgdGVuamluXCA7CivnhLbov4QgPCBzYW1hZGVcIDsKK+mhjOWQjSA8IGRhaW1laVwgOwor6aGM5Y+3IDwgZGFpZ291XCA7CivlpKfnpa0gPCB0YWlzYWlcIDsKK+S4ieWIhiA8IHNhbnB1blwgOwor576p5L6gIDwgZ2lreW91XCA7Civnt4/oo48gPCBzb3V1cmFcIDsKK+eJqeaoqSA8IGJ1a2tlblwgOwor5aSc56m6IDwgeW96b3JhXCA7Civnt4/oo4EgPCBzb3VzYWlcIDsKK+eEoemHjyA8IG11cnlvdVwgOwor6ZuA6I2YIDwgamFuc291XCA7Civnt4ropIwgPCBraW5rb25cIDsKK+S4luS/lyA8IHNlem9rdVwgOwor54mb5q2pIDwgZ3l1dWhvXCA7Civml6fmtL4gPCBreXV1aGFcIDsKK+e+heWMlyA8IHJhaG9rdVwgOwor57Sw6a2aIDwgc2F5b3JpXCA7CivkuIvlg5UgPCBnZWJva3VcIDsKK+Wkp+egsiA8IHRhaWhvdVwgOwor5pWw562JIDwgc3V1dG91XCA7CivlpbPmu50gPCBtZWRha2lcIDsKK+itpuaJiyA8IGtlaXNodVwgOwor6ZqP6KGMIDwgenVpa291XCA7CivlpoLms5UgPCBueW9ob3VcIDsKK+S4gOWGhiA8IGljaGllblwgOwor5LiA5YW3IDwgaWNoaWd1XCA7CivmlbDlr4TlsYsgPCBzdWtpeWFcIDsKK+e3qOiRlyA8IGhlbmNob1wgOwor54ib54ibIDwgcmFucmFuXCA7CivmmpblnLAgPCBkYW5jaGlcIDsKK+e2uOiogCA8IHJpbmdlblwgOwor5pS+6IOGIDwgaG91dGFuXCA7CivoqJPoq60gPCBrdW4nJ3l1XCA7Civoqq3noLQgPCBkb2t1aGFcIDsKK+S4ieWAjSA8IHNhbmJhaVwgOwor54yb5YuHIDwgbW91eXV1XCA7CivpoZ7kvosgPCBydWlyZWlcIDsKK+iok+iqoSA8IGt1bmthaVwgOwor6Ky55pu4IDwga2luc2hvXCA7CivmmI7mnJcgPCBtZWlyb3VcIDsKK+WkqeebgyA8IHRlbnBhaVwgOwor5pq05YuVIDwgYm91ZG91XCA7CivloKTpmLIgPCB0ZWlib3VcIDsKK+iojuirliA8IHRvdXJvblwgOwor5pel5q+OIDwgaGlnb3RvXCA7CivkuI3ku7IgPCBmdW5ha2FcIDsKK+Wkp+eavyA8IG9vemFyYVwgOwor5LiJ5L2TIDwgc2FudGFpXCA7CivlkIzmhI/nvqkgPCBkb3VpZ2lcIDsKK+aWh+ebsiA8IG1vbm1vdVwgOwor54ax57eaIDwgbmVzc2VuXCA7Civnhp/ogIMgPCBqdWtrb3VcIDsKK+eMn+WFtyA8IHJ5b3VndVwgOwor5aKT6KGoIDwgYm9oeW91XCA7CivmmLXmh4cgPCBqaWtrb25cIDsKK+Wls+a1gSA8IGpvcnl1dVwgOwor6ZyK55+lIDwgcmVpY2hpXCA7CivkuIrku6MgPCBqb3VkYWlcIDsKK+Wlh+eJuSA8IGtpZG9rdVwgOwor576O5L+XIDwgYml6b2t1XCA7CivmmJPmlq0gPCBla2lkYW5cIDsKK+S4jeS5mSA8IGZ1aXRzdVwgOwor572q5ZCNIDwgemFpbWVpXCA7CivmmI/mmI8gPCBrb25rb25cIDsKK+mbkee6giA8IHphc3NhblwgOwor5aaZ5qGIIDwgbXlvdWFuXCA7CivlpbPms6IgPCBtZW5hbWlcIDsKK+mbouexjSA8IHJpc2VraVwgOwor5piO5patIDwgbWVpZGFuXCA7CivmlaznpLwgPCBrZWlyZWlcIDsKK+mbt+elniA8IHJhaWppblwgOwor6Kq/55CGIDwgY2hvdXJpXCA7Civmlq3nhLYgPCBkYW56ZW5cIDsKK+aYjuaVjyA8IG1laWJpblwgOwor54mI5qipIDwgaGFua2VuXCA7Civng4jpoqggPCByZXBwdXVcIDsKK+S4h+S4hyA8IG1hbm1hblwgOwor6KiA6KuWIDwgZ2Vucm9uXCA7CivpmbjooYwgPCByaWtrb3VcIDsKK+Wkp+eUnyA8IGRhaXNlaVwgOwor6ZuA576FIDwgamFrdXJhXCA7CivkuIHkuqUgPCB0ZWlnYWlcIDsKK+itsOW4rSA8IGdpc2VraVwgOwor576O5LqLIDwgbWlnb3RvXCA7Civlp5Hmga8gPCBrb3Nva3VcIDsKK+e5geebmyA8IGhhbmpvdVwgOwor5LiA5Lq6IDwgaGl0b3JpXCA7CivmlL7nuKYgPCBob3VqdXVcIDsKK+irlueCuSA8IHJvbnRlblwgOwor6Kmp57eoIDwgc2hpaGVuXCA7Civml6Xmp5ggPCBoaXNhbWFcIDsKK+mZquimsyA8IGJhaWthblwgOwor5LiA5LqMIDwgaWNoaW5pXCA7CivntKDpppYgPCBzb2t1YmlcIDsKK+eIm+a8qyA8IHJhbm1hblwgOwor54m55o6qIDwgdG9rdXNvXCA7Civoqabnt7QgPCBzaGlyZW5cIDsKK+iogOiosyA8IGlpd2FrZVwgOwor5Z+56aSKIDwgYmFpeW91XCA7CivoqIDoqIAgPCBnZW5nZW5cIDsKK+e3j+iPnCA8IHNvdXphaVwgOwor5aSa55eFIDwgdGFieW91XCA7CivmkqTpgIAgPCB0ZXR0YWlcIDsKK+aUuee3qCA8IGthaWhlblwgOwor54Sh6LODIDwgbXVjaGluXCA7Civpm4Tnt6ggPCB5dXVoZW5cIDsKK+e4gee1hCA8IGVuZ3VtaVwgOwor54m55oqAIDwgdG9rdWdpXCA7CivmlZnnpZYgPCBreW91c29cIDsKK+eJqeaQjSA8IGJ1c3NvblwgOwor6KaB6aCFIDwgeW91a291XCA7CivnvbDkv7ggPCBiYXBwb3VcIDsKK+WnieW8nyA8IHNoaW1haVwgOwor6Zui56SBIDwgcmlzaG91XCA7Civpn7Pln58gPCBvbicnaWtpXCA7CivloLHpgZMgPCBob3Vkb3VcIDsKK+aXreaaiSA8IGt5b2traVwgOwor57W26LObIDwgemVzc2FuXCA7CivlpoLmnaUgPCBueW9yYWlcIDsKK+Wkp+eJqSA8IG9vbW9ub1wgOwor6Zyy5ru0IDwgcm90ZWtpXCA7CivntprooYwgPCB6b2trb3VcIDsKK+eJiOacrCA8IGhhbnBvblwgOwor5pqW5YasIDwgZGFudG91XCA7Civpm7vnlaogPCBkZW5iYW5cIDsKK+Wkp+iiiOijnyA8IG9vZ2VzYVwgOwor5pep5pmpIDwgc291YmFuXCA7CivpnIrnjaMgPCByZWlqdXVcIDsKK+e3qOe6giA8IGhlbnNhblwgOwor5paw5rS+IDwgc2hpbnBhXCA7Civpm5HnqK4gPCB6YXNzaHVcIDsKK+mbquebriA8IHl1a2ltZVwgOwor5pen5pmCIDwga3l1dWppXCA7CivoqpXnlJ8gPCB0YW5qb3VcIDsKK+aYvOWvnSA8IGhpcnVuZVwgOwor5LqL5YuZ5bGLIDwgamltdXlhXCA7Civmta7kuJbntbUgPCB1a2l5b2VcIDsKK+eJueaBtSA8IHRva2tlaVwgOwor54WZ6I2JIDwgdGFiYWtvXCA7CivnkLXnkLbmuZYgPCBiaXdha29cIDsKK+ishOacrCA8IHRvdWhvblwgOwor5pS556uEIDwga2FpemFuXCA7Civnibnlv6sgPCB0b2trYWlcIDsKK+S6i+WLmeWutiA8IGppbXVrYVwgOwor5pel5pWwIDwgaGlrYXp1XCA7Civmlq3msLQgPCBkYW5zdWlcIDsKK+WmmeaKgCA8IG15b3VnaVwgOwor5aa75bivIDwgc2FpdGFpXCA7CivlqIHllp0gPCBpa2F0c3VcIDsKK+eFjuiMtiA8IHNlbmNoYVwgOwor6Zu3542jIDwgcmFpanV1XCA7CivpnZLmoZAgPCBhb2dpcmlcIDsKK+Wkp+a9riA8IG9vc2hpb1wgOwor6Zm26Iq4IDwgdG91Z2VpXCA7Civml5fml6UgPCBoYXRhYmlcIDsKK+mdkuafsyA8IGFveWFnaVwgOwor6Kit572uIDwgc2V0Y2hpXCA7CivnianmgKcgPCBidXNzZWlcIDsKK+aal+S4rSA8IGFuY2h1dVwgOwor5pi85aScIDwgY2h1dXlhXCA7CivoqIDokYkgPCBrb3RvYmFcIDsKK+e0oemMmCA8IGJvdXN1aVwgOwor5aSW54GvIDwgZ2FpdG91XCA7Civln7zpioAgPCBzYWlnaW5cIDsKK+S4jeWPr+mBvyA8IGZ1a2FoaVwgOwor6ZaT6bSoIDwgYWlnYW1vXCA7CivpnKfmsLcgPCBtdWh5b3VcIDsKK+aYpeWtoyA8IHNodW5raVwgOwor5aKX572uIDwgem91Y2hpXCA7Civntr7nvoUgPCByeW91cmFcIDsKK+eLguWPpSA8IGt5b3VrdVwgOwor6Zmz6IWQIDwgY2hpbnB1XCA7CivloLHorJ0gPCBob3VzaGFcIDsKK+eFqee0ryA8IGhhbnJ1aVwgOwor54mH5omLIDwga2F0YXRlXCA7CivniYfmiLggPCBrYXRhZG9cIDsKK+aWkeawlyA8IG11cmFraVwgOwor5pWm54WMIDwgdG9ua291XCA7CivlpKfms6IgPCBvb25hbWlcIDsKK+aWreahiCA8IGRhbicnYW5cIDsKK+WkqeawtCA8IHRlbnN1aVwgOwor5aSW5rmvIDwgc290b3l1XCA7CivmmablhqUgPCBrYWltZWlcIDsKK+aVmeeItiA8IGt5b3VmdVwgOwor57SU6YqAIDwganVuZ2luXCA7CivlpKfmsLQgPCBvb21penVcIDsKK+Wklua4ryA8IGdhaWtvdVwgOwor6Kqs5rOVIDwgc2VwcG91XCA7CivopovovrwgPCBtaWtvbWlcIDsKK+ioquexsyA8IGhvdWJlaVwgOwor57Sw6LqrIDwgaG9zb21pXCA7CivmlofmsJEgPCBidW5taW5cIDsKK+eCremJsSA8IHRhbmtvdVwgOwor5pen5oGpIDwga3l1dW9uXCA7CivntJTph5EgPCBqdW5raW5cIDsKK+S6i+WLmeWZqCA8IGppbXVraVwgOwor5aSc5rOKIDwgeWFoYWt1XCA7CivmlrnmlrkgPCBob3Vib3VcIDsKK+e2v+ezuCA8IG1lbnNoaVwgOwor5peo5b+1IDwgc2hpbmVuXCA7Civmk43oiLkgPCBzb3VzZW5cIDsKK+e2vuezuCA8IGF5YWl0b1wgOwor6Zu75rqQIDwgZGVuZ2VuXCA7CivlpoTlv7UgPCBtb3VuZW5cIDsKK+ilv+mBiiA8IHNlaXl1dVwgOwor5aWu5oimIDwgZnVuc2VuXCA7Civngq3phbggPCB0YW5zYW5cIDsKK+e0jemHkSA8IG5vdWtpblwgOwor57SN6YeHIDwgbm91c2FpXCA7CivoprPopqcgPCBrYW5yYW5cIDsKK+iruOaJiyA8IG1vcm90ZVwgOwor6Z+z5L+hIDwgb25zaGluXCA7Civnsr7prYIgPCBzZWlrb25cIDsKK+WknOavjiA8IHlvZ290b1wgOwor5pWj5ryrIDwgc2FubWFuXCA7Civnt6nnm64gPCB5dXJ1bWVcIDsKK+eJh+W9sSA8IGhlbicnZWlcIDsKK+WmhOW8gSA8IGJvdWJlblwgOwor6ZyK5q6/IDwgcmVpZGVuXCA7Civml6LlvpcgPCBraXRva3VcIDsKK+irluaXqCA8IHJvbnNoaVwgOwor57K+6auEIDwgc2VpenVpXCA7CivlvqHmtJLokL0gPCBvc2hhcmVcIDsKK+S6i+WLmeWToSA8IGppbXVpblwgOwor5Z+06LyqIDwgaGFuaXdhXCA7Civoq5bmlq0gPCByb25kYW5cIDsKK+irluaWhyA8IHJvbmJ1blwgOwor54WZ566hIDwga2lzZXJ1XCA7Civoqr/mn7sgPCBjaG91c2FcIDsKK+akjeacqOWxiyA8IHVla2l5YVwgOwor54Sh6IetIDwgbXVzaHV1XCA7CivpnbHluK8gPCBqaW50YWlcIDsKK+aYjuWkpyA8IG1laWRhaVwgOwor6ZaJ6aSoIDwgaGVpa2FuXCA7Civoq7jmgqogPCBzaG9ha3VcIDsKK+WjgeeUuyA8IGhla2lnYVwgOwor57Sg6LazIDwgc3Vhc2hpXCA7CivmlbXmrakgPCB0ZWtpZnVcIDsKK+mbhOeKrCA8IG9zdWludVwgOwor5aKX56iOIDwgem91emVpXCA7Civlor7nlLAgPCBrb25kZW5cIDsKK+aUueeJiCA8IGthaWhhblwgOwor54i25b6hIDwgdGV0ZWdvXCA7CivkuI3lj6/oqqQgPCBmdWthZ29cIDsKK+mWoumWgCA8IGthbm1vblwgOwor5aSn5qC5IDwgZGFpa29uXCA7Civpm5HngoogPCB6b3VzdWlcIDsKK+WknOalrSA8IHlhZ3lvdVwgOwor57Sw6KuWIDwgc2Fpcm9uXCA7CivniaflpKsgPCBib2t1ZnVcIDsKK+aWh+ahiCA8IGJ1bicnYW5cIDsKK+aXheaDhSA8IHJ5b2pvdVwgOwor5aSJ5q27IDwgaGVuc2hpXCA7CivlpJbmp5ggPCB0b3phbWFcIDsKK+Wkp+afhCA8IG9vZ2FyYVwgOwor5b6h6YeI6L+mIDwgb3NoYWthXCA7Civoq7jlvaYgPCBzaG9nZW5cIDsKK+mWk+mamyA8IG1hZ2l3YVwgOwor54Sh6IGKIDwgYnVyeW91XCA7Civplbfpp4YgPCBjaG91a3VcIDsKK+mbsuavjSA8IGtpcmFyYVwgOwor5pep5a+dIDwgaGF5YW5lXCA7Civopb/osqIgPCBzYWlnb25cIDsKK+aVmea0viA8IGt5b3VoYVwgOwor5pON57imIDwgc291anV1XCA7CivlpKfmnKwgPCB0YWlob25cIDsKK+Wkp+acmyA8IHRhaW1vdVwgOwor6KuW5ougIDwgcm9ua3lvXCA7Civml6XlsIQgPCBuaXNzaGFcIDsKK+WlieaLnSA8IGhvdWhhaVwgOwor54mn5aC0IDwgbWFraWJhXCA7CivoqIjnrpcgPCBrZWlzYW5cIDsKK+mZpOexjSA8IGpvc2VraVwgOwor57O46YGKIDwgaXRveXV1XCA7Civpm6PmsrsgPCBuYW5jaGlcIDsKK+WiqOeXlSA8IGJva2tvblwgOwor5Y2w5a2X5qmfIDwgaW5qaWtpXCA7Civoq5bmiKYgPCByb25zZW5cIDsKK+WkqeaYjiA8IHRlbm1laVwgOwor5aKT55+zIDwgYm9zZWtpXCA7CivloqjnlLsgPCBib2t1Z2FcIDsKK+mbo+awkSA8IG5hbm1pblwgOwor57Sg6KqtIDwgc29kb2t1XCA7CivopoHoq6YgPCB5b3V0ZWlcIDsKK+WkqeaWhyA8IHRlbm1vblwgOwor5aSn5pa5IDwgb29rYXRhXCA7Civnoavpu4Tms4kgPCBpb3VzZW5cIDsKK+mWi+mWgCA8IGthaW1vblwgOwor57e054KtIDwgcmVudGFuXCA7CivplonploAgPCBoZWltb25cIDsKK+Wil+ebiiA8IHpvdWVraVwgOwor5aSW5p2lIDwgZ2FpcmFpXCA7Civpl4fot68gPCB5YW1pamlcIDsKK+WkluadkCA8IGdhaXphaVwgOwor6ZaA6ZmiIDwgbW9uJydpblwgOwor57SN6LGGIDwgbmF0dG91XCA7CivploDpmZAgPCBtb25nZW5cIDsKK+aWueW9oiA8IGhvdWtlaVwgOwor5paH5pS/IDwgYnVuc2VpXCA7CivlpbPlrpggPCBueW9rYW5cIDsKK+eEoee1piA8IG11a3l1dVwgOwor5pep5aSnIDwgc291ZGFpXCA7CivopoHopqcgPCB5b3VyYW5cIDsKK+mbm+autSA8IHN1dWRhblwgOwor6Z2i5a2QIDwgbWVudHN1XCA7CivmlbDmnpogPCBzdXVtYWlcIDsKK+mbqOaoiyA8IGFtYWRvaVwgOwor6ZuE5ri+IDwgeXV1a29uXCA7CivopIfpn7MgPCBmdWt1b25cIDsKK+aYjuWQmyA8IG1laWt1blwgOwor6Zm655u4IDwga2Vuc291XCA7Civnibnli5kgPCB0b2t1bXVcIDsKK+eJqeWTgSA8IGJ1cHBpblwgOwor5aKX55SjIDwgem91c2FuXCA7CivmkI3ph5EgPCBzb25raW5cIDsKK+mVt+mWkSA8IG5vZG9rYVwgOwor6Kqe5pePIDwgZ296b2t1XCA7CivlgYnkuIjlpKsgPCBpam91ZnVcIDsKK+irluW8gSA8IHJvbmJlblwgOwor5pel5aCxIDwgbmlwcG91XCA7CivploDpkZEgPCBtb25rYW5cIDsKK+WgleiQvSA8IGRhcmFrdVwgOwor6Zai6YCjIDwga2FucmVuXCA7Civnha7niakgPCBuaW1vbm9cIDsKK+aXheWvnSA8IHRhYmluZVwgOwor6Zmz55quIDwgY2hpbnBpXCA7CivluIPmtbfoi5QgPCBmdW5vcmlcIDsKK+e0q+iYrSA8IHNoaXJhblwgOwor6ZaL6YqAIDwga2FpZ2luXCA7CivnhKHnrZYgPCBtdXNha3VcIDsKK+ispuWSsyA8IGtlaWdhaVwgOwor5aal5Y2UIDwgZGFreW91XCA7CivlpKfmioAgPCBvb3dhemFcIDsKK+eyvumMrCA8IHNlaXJlblwgOwor5pen5ZyfIDwga3l1dWRvXCA7Civpm7vmlq0gPCBkZW5kYW5cIDsKK+mcsOW8viA8IHNhbmRhblwgOwor5pWZ5qGIIDwga3lvdWFuXCA7CivlppnlkbMgPCBteW91bWlcIDsKK+aYjuWInSA8IG1laXNob1wgOwor57We572qIDwga291emFpXCA7CivmmKjku4ogPCBzYWtrb25cIDsKK+e1qOe3niA8IGp1dXRhblwgOwor5pa55a+4IDwgaG91c3VuXCA7CivlpInmlLkgPCBoZW5rYWlcIDsKK+mbtuaVlyA8IHJlaWhhaVwgOwor5aWl5aaZIDwgb3VteW91XCA7CivmlaPmlocgPCBzYW5idW5cIDsKK+aVo+aVoyA8IHNhbnphblwgOwor5Zyf6b6NIDwgbW9ndXJhXCA7CivnuKbmlq0gPCBqdXVkYW5cIDsKK+ismuWPtyA8IHNoaWdvdVwgOwor5aWz5ZuaIDwgam9zaHV1XCA7Civmlq3lrpogPCBkYW50ZWlcIDsKK+irluWumiA8IHJvbnRlaVwgOwor5aG155WMIDwgamlua2FpXCA7Civoq5blrZ8gPCByb25tb3VcIDsKK+aXpeWSjCA8IGhpeW9yaVwgOwor57ay54q2IDwgbW91am91XCA7CivlpKflvaIgPCBvb2d5b3VcIDsKK+aFsOWuieS8miA8IGlhbmthaVwgOwor6Zuj5paHIDwgbmFuYnVuXCA7CivmiqvpnLLnm64gPCBoaXJvbWVcIDsKK+exs+mjryA8IGJlaWhhblwgOwor57ay54mIIDwgYW1paGFuXCA7Civlo7LmlocgPCBiYWlidW5cIDsKK+aXpeWQkSA8IGhpbmF0YVwgOwor57K+6L6yIDwgc2Vpbm91XCA7CivmlrDlqaYgPCBzaGlucHVcIDsKK+mYsuepuiA8IGJvdWt1dVwgOwor5aSp5bqVIDwgdGVudGVpXCA7CivlpKrlubMgPCB0YWloZWlcIDsKK+WlpeWcsCA8IG9rdWNoaVwgOwor5aSn5bqXIDwgb29kYW5hXCA7Civpm5Hmm7ggPCB6YXNzaG9cIDsKK+mWo+itsCA8IGtha3VnaVwgOwor54Gw6LKdIDwgaGFpZ2FpXCA7CivlpKfluYUgPCBvb2hhYmFcIDsKK+Wkp+W4qyA8IGRhaXNoaVwgOwor57WQ57SNIDwgeXVpbm91XCA7Civml4Xlm6MgPCByeW9kYW5cIDsKK+e5geW/mSA8IGhhbmJvdVwgOwor5Zyw6auqIDwgamlnYW1pXCA7CivpmLLnpqYgPCBib3VneW9cIDsKK+e0sOiDniA8IHNhaWJvdVwgOwor5pel5YukIDwgbmlra2luXCA7CivngrnojLYgPCB0ZW5jaGFcIDsKK+mVt+mAlCA8IGNob3V0b1wgOwor5LqI5YKZ6aasIDwgeW9iaWJhXCA7CivmsJfljJblmaggPCBraWtha2lcIDsKK+aRmOiKvSA8IHRla2lnYVwgOwor6ZuE5p2+IDwgb21hdHN1XCA7Civml6nlh7ogPCBoYXlhZGVcIDsKK+Wlh+WmmSA8IGtpbXlvdVwgOwor5aSW5b6EIDwgZ2Fpa2VpXCA7CivlpJblvoEgPCBnYWlzZWlcIDsKK+aOpemgrSA8IHNldHRvdVwgOwor6KiT54K5IDwga3VudGVuXCA7CivmrabogIXntbUgPCBtdXNoYWVcIDsKK+irluWkliA8IHJvbmdhaVwgOwor5aSc5bqXIDwgeW9taXNlXCA7CivntYPnt5ogPCBnZW5zZW5cIDsKK+irvuWQpiA8IGRha3VoaVwgOwor54Sh55ebIDwgbXV0c3V1XCA7CivnhKHnl4UgPCBtdWJ5b3VcIDsKK+Wjn+aWrSA8IHJvdWRhblwgOwor54mH5YiDIDwga2F0YWhhXCA7CivmlbXlvbEgPCB0ZWtpZWlcIDsKK+e1ueebriA8IGtpbnVtZVwgOwor54Wu5rGBIDwgbmlqaXJ1XCA7Civoo77ph44gPCBzdXNvbm9cIDsKK+WknOW4giA8IHlvaWNoaVwgOwor5aSn5bGxIDwgdGFpemFuXCA7Civoq7jlkJsgPCBzaG9rdW5cIDsKK+mcnOWusyA8IHNvdWdhaVwgOwor5pS55piTIDwga2FpZWtpXCA7Civlo67mjJkgPCBzb3VreW9cIDsKK+e0heiRiSA8IG1vbWlqaVwgOwor5paO5a6uIDwgc2FpZ3V1XCA7Civpm6PmiYAgPCBuYW5zaG9cIDsKK+WlquWPliA8IGRhc3NodVwgOwor5aSq5a6IIDwgdGFpc2h1XCA7CivmlonlsIQgPCBzZWlzaGFcIDsKK+WkieW9oiA8IGhlbmtlaVwgOwor57Sg6IKMIDwgc3VoYWRhXCA7CivlpKrlrZcgPCBmdXRvamlcIDsKK+WkqeWtqyA8IHRlbnNvblwgOwor6ZuR5pCNIDwgemFzc29uXCA7Civml6XlgpggPCBoaWdhc2FcIDsKK+mdqeWFtyA8IGthd2FndVwgOwor6Z2i5YmNIDwgbWVuemVuXCA7CivpnIrls7AgPCByZWlob3VcIDsKK+mat+abuCA8IHJlaXNob1wgOwor6KeS55quIDwga2FrdWhpXCA7CivmlbDlubQgPCBzdXVuZW5cIDsKK+WlruWKsSA8IGZ1bnJlaVwgOwor6Z2e5YqbIDwgaGlyaWtpXCA7Civoq63lkYogPCB5dWtva3VcIDsKK+miqOWcn+iomCA8IGZ1ZG9raVwgOwor5paH5a6YIDwgYnVua2FuXCA7Civml6zkvZkgPCBqdW4nJ3lvXCA7CivntIXojLYgPCBrb3VjaGFcIDsKK+e0sOe3uyA8IHNhaWNoaVwgOwor5Z+L6JS1IDwgbWFpem91XCA7CivpnIrlsbEgPCByZWl6YW5cIDsKK+ijj+mWgCA8IHVyYW1vblwgOwor6Zu75belIDwgZGVua291XCA7CivmlpzloZQgPCBzaGF0b3VcIDsKK+WknOWvkiA8IHlvemFtdVwgOwor5aGp54WuIDwgc2hpb25pXCA7Civoq7jliIMgPCBtb3JvaGFcIDsKK+Wfi+iRrCA8IG1haXNvdVwgOwor57a/5q+bIDwgd2F0YWdlXCA7CivntZDnpL4gPCBrZXNzaGFcIDsKK+ikkuiytiA8IGhvdWhlblwgOwor57Sv57SvIDwgcnVpcnVpXCA7CivlnLDpnIogPCBjaGlyZWlcIDsKK+WknOWtpiA8IHlhZ2FrdVwgOwor5pel5LyKIDwgbmljaGlpXCA7Civop5LnlYwgPCBrYWtrYWlcIDsKK+aVj+aEnyA8IGJpbmthblwgOwor5pW35bGFIDwgc2hpa2lpXCA7Civngq3ogrogPCB0YW5oYWlcIDsKK+eFmeavkiA8IGVuZG9rdVwgOwor54ax5oSPIDwgbmV0c3VpXCA7CivlnLDpmo4gPCBjaGlrYWlcIDsKK+aXheWIuCA8IHJ5b2tlblwgOwor6Zqj5p2RIDwgcmluc29uXCA7CivpnaLlgJIgPCBtZW5kb3VcIDsKK+aXpeS4rSA8IGhpbmFrYVwgOwor5aWR5ZCIIDwga2VpZ291XCA7CivpnIrlqpIgPCByZWliYWlcIDsKK+exs+mKrSA8IGJlaXNlblwgOwor6Kqe5a2mIDwgZ29nYWt1XCA7CivoqpjlsI4gPCB5dXVkb3VcIDsKK+mbkeaEnyA8IHpha2thblwgOwor5paO5aC0IDwgc2Fpam91XCA7CivlpbPkvZMgPCBueW90YWlcIDsKK+mdouS9kyA8IG1lbnRlaVwgOwor5aWJ5ZGIIDwgaG91dGVpXCA7CivmkoPnoLQgPCBnZWtpaGFcIDsKK+mdouS8miA8IG1lbmthaVwgOwor5aOy5bqXIDwgYmFpdGVuXCA7Civoq5blj6IgPCByb25zb3VcIDsKK+mbu+WtkCA8IGRlbnNoaVwgOwor54i15L2NIDwgc2hha3VpXCA7CivlpbPkurogPCBueW9uaW5cIDsKK+e1tueJiCA8IHplcHBhblwgOwor6Zuq5bSpIDwgbmFkYXJlXCA7CivntJvntJsgPCBmdW5wdW5cIDsKK+WjruW5tCA8IHNvdW5lblwgOwor5aSn5Z6LIDwgb29nYXRhXCA7CivntJTntr8gPCBqdW5tZW5cIDsKK+Whqea5ryA8IHNoaW95dVwgOwor5aWz5LitIDwgam9jaHV1XCA7CivploDooZsgPCBtb24nJ2VpXCA7CivlnoLoqJMgPCBzdWlrdW5cIDsKK+mYsueKryA8IGJvdWhhblwgOwor54ax5bivIDwgbmV0dGFpXCA7CivnhJrngasgPCB0YWtpYmlcIDsKK+aUueaCqiA8IGthaWFrdVwgOwor57SU57O7IDwganVua2VpXCA7CivlpaXkvJ0gPCBva3VkZW5cIDsKK+Whqea1tCA8IGVueW9rdVwgOwor6KuH5ZCIIDwgZGFuZ291XCA7CivpnIrln58gPCByZWlpa2lcIDsKK+irluWIpCA8IHJvbnBhblwgOwor54Wu5pa5IDwgbmlrYXRhXCA7CivnhormiYsgPCBrdW1hZGVcIDsKK+e0lOeyiyA8IGp1bnN1aVwgOwor6Kqt5ZuzIDwgZG9rdXp1XCA7Civngavok4sgPCBoaWJ1dGFcIDsKK+iqv+WSjCA8IGNob3V3YVwgOwor6Kq/5ZGzIDwgY2hvdW1pXCA7Civml4XkurogPCByeW9qaW5cIDsKK+e3j+aVsCA8IHNvdXN1dVwgOwor6ZuR5be+IDwgem91a2luXCA7CivpmoXmnKggPCBzdW1pa2lcIDsKK+imqueWjiA8IHNoaW5zb1wgOwor5pa55L6/IDwgaG91YmVuXCA7Civpm6Llrq4gPCByaWt5dXVcIDsKK+e1oueImyA8IGtlbnJhblwgOwor5b6h5rKz56ulIDwgb2thcHBhXCA7CivlpJblnLAgPCBnYWljaGlcIDsKK+WhqeawlyA8IHNoaW9rZVwgOwor5o6l6L+RIDwgc2Vra2luXCA7Civpm4TlvIEgPCB5dXViZW5cIDsKK+exs+i7jSA8IGJlaWd1blwgOwor5pS55buDIDwga2FpaGFpXCA7Civpmo7mlbAgPCBrYWlzdXVcIDsKK+WcsOmHkSA8IGppZ2FuZVwgOwor6Kq/5Y2wIDwgY2hvdWluXCA7CivnsaTpgYsgPCBrdWppdW5cIDsKK+a/gemfsyA8IGRha3VvblwgOwor5aSn5ZKMIDwgeWFtYXRvXCA7Civoq4fliKQgPCBkYW5wYW5cIDsKK+mVt+ibhyA8IGNob3VkYVwgOwor5pa55LuKIDwgaG91a29uXCA7CivntIXnsokgPCBiZW5pa29cIDsKK+WcsOmFkiA8IGppemFrZVwgOwor6Zq75b2xIDwgc2VraWVpXCA7CivlnJ/pjYsgPCBkb25hYmVcIDsKK+eBsOiJsiA8IGhhaWlyb1wgOwor5aSp5Y+wIDwgdGVuZGFpXCA7CivlpKflkJsgPCB0YWlrdW5cIDsKK+mZsOaguCA8IGlua2FrdVwgOwor57Sw55uuIDwgaG9zb21lXCA7Civmj5DopoEgPCB0ZWl5b3VcIDsKK+eBq+iKsSA8IGhpYmFuYVwgOwor6ZuR5bGFIDwgemFra3lvXCA7Civln4vnt5ogPCBtYWlzZW5cIDsKK+aVsOWbniA8IHN1dWthaVwgOwor5aWV5LiWIDwgZWtpc2VpXCA7CivpvaYgPCBoYWd1a2lcIDsKK+Wkp+WNiiA8IHRhaWhhblwgOwor6byIIDwgc3VwcG9uXCA7CivopJDol7sgPCBrYXNzb3VcIDsKK+m7nCA8IGNodXRzdVwgOwor54Sh5q+SIDwgbXVkb2t1XCA7CivlpKfljJkgPCBvb3NhamlcIDsKK+e1tua1tyA8IHpla2thaVwgOwor6ZuE5bOwIDwgeXV1aG91XCA7CivntI3nqI4gPCBub3V6ZWlcIDsKK+Wcn+mHnCA8IGRvZ2FtYVwgOwor5aSn5YuiIDwgdGFpemVpXCA7Civnt5LmiKYgPCBjaG9zZW5cIDsKK+m6kyA8IGZ1bW90b1wgOwor5aSn5YuHIDwgdGFpeXV1XCA7Civoo7Poo74gPCBtb3N1c29cIDsKK+mZpOaguCA8IGpva2FrdVwgOwor6Kej5q+SIDwgZ2Vkb2t1XCA7CivpmbDmmqYgPCBpbnJla2lcIDsKK+eEoeassiA8IG11eW9rdVwgOwor6Kqj5ZGKIDwgYnVrb2t1XCA7CivlpKfliIYgPCBkYWlidW5cIDsKK+Wkp+WIgCA8IGRhaXRvdVwgOwor6ZuR5amaIDwgemFra29uXCA7CivmkI3ogJcgPCBzb25tb3VcIDsKK+Wcp+i/qyA8IGFwcGFrdVwgOwor5aSn5YehIDwgb295b3NvXCA7Civpmo/miYAgPCB6dWlzaG9cIDsKK+mbheWuoiA8IGdha2FrdVwgOwor5aSp5YW1IDwgdGVucGVpXCA7CivptaUgPCBrYWtlc3VcIDsKK+maoOW/jSA8IGluJyduaW5cIDsKK+mZpOacjSA8IGpvZnVrdVwgOwor6bSsIDwgdWd1aXN1XCA7CivlpKflhaggPCB0YWl6ZW5cIDsKK+m0jiA8IGthbW9tZVwgOwor6Zu75ZG9IDwgZGVubWVpXCA7Civoo5zoqLsgPCBob2NodXVcIDsKK+aRuOeJjCA8IG1vdXBhaVwgOwor5oSb54WZ5a62IDwgYWllbmthXCA7Civpg6jlsYvnnYAgPCBoZXlhZ2lcIDsKK+mciuWJoyA8IHJlaWtlblwgOwor5pWw5ZCNIDwgc3V1bWVpXCA7Civooajpn7MgPCBoeW91b25cIDsKK+S6iOWCmeiyuyA8IHlvYmloaVwgOwor5aSW5YukIDwgZ2Fpa2luXCA7Civpmo/mhJ8gPCB6dWlrYW5cIDsKK+mxuCA8IHN1enVraVwgOwor54Kv55y8IDwga2VpZ2FuXCA7CivpsbAgPCBzaGlpcmFcIDsKK+WknOWHqiA8IHlvbmFnaVwgOwor6ZqP5oOzIDwgenVpc291XCA7CivpsLkgPCBrYXRzdW9cIDsKK+aOqOirliA8IHN1aXJvblwgOwor6bCvIDwgaXdhc2hpXCA7CivlpInlkI0gPCBoZW5tZWlcIDsKK+e1puayuSA8IGt5dXV5dVwgOwor6bCaIDwgaGFyYWthXCA7CivntYLnhIkgPCBzaHV1ZW5cIDsKK+mwhiA8IHNhd2FyYVwgOwor54ax5Z6LIDwgbmVra2VpXCA7Civpm7flkIwgPCByYWlkb3VcIDsKK+mcp+S4rSA8IG11Y2h1dVwgOwor6a+xIDwgc2hhY2hpXCA7Civpr7AgPCBuYW1henVcIDsKK+mvqCA8IGt1amlyYVwgOwor6a+jIDwgc3VydW1lXCA7CivmlbDljYMgPCBzdXVzZW5cIDsKK+aVsOWNgSA8IHN1dWp1dVwgOwor6KaB55SoIDwgeW91eW91XCA7CivntprmmKAgPCB6b2t1ZWlcIDsKK+WftOeUnyA8IGhhbnl1dVwgOwor5aSW5Ye6IDwgc290b2RlXCA7Civpm7LlkZEgPCB3YW50YW5cIDsKK+muqiA8IG1hZ3Vyb1wgOwor57WQ5rueIDwga2V0dGFpXCA7CivprpYgPCBrYWppa2FcIDsKK+eCieerryA8IHJvYmF0YVwgOwor6ZuR5aCxIDwgemFwcG91XCA7CivntK/niq8gPCBydWloYW5cIDsKK+aOqOioiCA8IHN1aWtlaVwgOwor54Wn5b+cIDwgc2hvdW91XCA7CivnuKvlkIggPCBob3Vnb3VcIDsKK+Wbm+maoyA8IHNoaXJpblwgOwor5aSW5YW4IDwgZ2FpdGVuXCA7CivngJjpgY7lmaggPCByb2tha2lcIDsKK+Wbm+mahSA8IHlvc3VtaVwgOwor5aCF54miIDwga2Vucm91XCA7CivngavnuIQgPCBoaW5hd2FcIDsKK+WkieWLlSA8IGhlbmRvdVwgOwor6ZqP5b6TIDwgenVpanV1XCA7Civpm4TlpKcgPCB5dXVkYWlcIDsKK+aWh+S+iyA8IGJ1bnJlaVwgOwor6Zuj5ZWPIDwgbmFubW9uXCA7CivmlZnllIYgPCBreW91c2FcIDsKK+aOouioqiA8IHRhbmJvdVwgOwor5o276LuiIDwgbmVudGVuXCA7CivmlZnlk6EgPCBreW91aW5cIDsKK+Wbs+mMsiA8IHp1cm9rdVwgOwor5aSn5LujIDwgZGFpZGFpXCA7Civoo5zliqnlk6EgPCBob2pvaW5cIDsKK+ijj+ilnyA8IHVyYWVyaVwgOwor5Zyf6LazIDwgZG9zb2t1XCA7CivlpJblgrUgPCBnYWlzYWlcIDsKK+aOiOizniA8IGp1c2hvdVwgOwor6KaL54mpIDwgbWltb25vXCA7CivlpKnkuLwgPCB0ZW5kb25cIDsKK+Wkp+S5sSA8IHRhaXJhblwgOwor54Wn5bqmIDwgc2hvdWRvXCA7CivmlofkurogPCBidW5qaW5cIDsKK+Wkp+S5lyA8IGRhaWpvdVwgOwor5aOy5ZOBIDwgYmFpaGluXCA7CivlpKnkuI4gPCB0ZW4nJ3lvXCA7CivlnLDorKEgPCBqaXV0YWlcIDsKK+ijveiMtiA8IHNlaWNoYVwgOwor5aSc5Ly9IDwgeW90b2dpXCA7CivlpJrkvZwgPCB0YXNha3VcIDsKK+mVt+iAhSA8IGNob3VqYVwgOwor5aOy5ZCNIDwgYmFpbWVpXCA7CivloYrmoLkgPCBrYWlrb25cIDsKK+eEmuabuCA8IGZ1bnNob1wgOwor5pGC55SfIDwgc2Vzc2VpXCA7CivplqLnqbogPCBrYW5rdXVcIDsKK+eEoeaYjiA8IG11bXlvdVwgOwor5q+U5LiY5bC8IDwgYmlrdW5pXCA7Civlm73pgYsgPCBrb2t1dW5cIDsKK+mWiee1jCA8IGhlaWtlaVwgOwor6KGA6aSFIDwga2VwcGVpXCA7Civpm7vlgZwgPCBkZW50ZWlcIDsKK+aVsOWApCA8IHN1dWNoaVwgOwor6Zai56iOIDwga2FuemVpXCA7CivmlbDlgI0gPCBzdXViYWlcIDsKK+WknOS4rSA8IHlvbmFrYVwgOwor5pWj5YW1IDwgc2FucGVpXCA7CivlpJbkurogPCBnYWlqaW5cIDsKK+Wjh+WgtCA8IGRhbmpvdVwgOwor5o2o6LqrIDwgc3V0ZW1pXCA7CivloZfmlpkgPCB0b3J5b3VcIDsKK+e0oOeEvCA8IHN1eWFraVwgOwor54WZ5bmVIDwgZW5tYWt1XCA7CivlpJbkubEgPCBnYWlyYW5cIDsKK+mbkeWTgSA8IHphcHBpblwgOwor6Kej5pWjIDwga2Fpc2FuXCA7Civmk7HluqcgPCBrYWt1emFcIDsKK+eyvueyviA8IHNlaXplaVwgOwor57W25pmvIDwgemVra2VpXCA7CivoqLHlrrkgPCBreW95b3VcIDsKK+WcsOijgSA8IGNoaXNhaVwgOwor57K+57KJIDwgc2VpZnVuXCA7CivpnpAgPCBrb2hhemVcIDsKK+aNlemAuCA8IGhvaXRzdVwgOwor5pWR5YqpIDwga3l1dWpvXCA7Civnsr7nsbMgPCBzZWltYWlcIDsKK+aUueWWhCA8IGthaXplblwgOwor5Zyn6KaaIDwgYWtrYWt1XCA7CivmlbDkurogPCBzdXVuaW5cIDsKK+mZsOW+syA8IGludG9rdVwgOwor54Gr56iuIDwgaGlkYW5lXCA7CivpnJ4gPCBrYXN1bWlcIDsKK+mcmSA8IG1pem9yZVwgOwor6Kit5a6aIDwgc2V0dGVpXCA7CivoqanlkJ8gPCBzaGlnaW5cIDsKK+mbmyA8IGhpeW9rb1wgOwor57Sv5ribIDwgcnVpZ2VuXCA7CivntJTnhLYgPCBqdW56ZW5cIDsKK+aVsOS4hyA8IHN1dW1hblwgOwor5aSJ5LmxIDwgaGVucmFuXCA7Civms6LmraLloLQgPCBoYXRvYmFcIDsKK+mZquW+kyA8IGJhaWp1dVwgOwor6KGj6YmiIDwgaWhhdHN1XCA7CivooqvopoYgPCBoaWZ1a3VcIDsKK+eCr+eCryA8IGtlaWtlaVwgOwor54Kt54GrIDwgc3VtaWJpXCA7Civlm73osrsgPCBrb2t1aGlcIDsKK+WcsOiZqyA8IG1pbWl6dVwgOwor5Zue6YGKIDwga2FpeXV1XCA7CivoprPmoZwgPCBrYW4nJ291XCA7CivmmJPli5XluqYgPCBpZG91ZG9cIDsKK+WeguevhCA8IHN1aWhhblwgOwor6Zuj5Lu2IDwgbmFua2VuXCA7CivoqJPlsI4gPCBrdW5kb3VcIDsKK+mRoiA8IHlhc3VyaVwgOwor57W15Zuz6Z2iIDwgZXp1bWVuXCA7CivmlZfkuqEgPCBoYWlib3VcIDsKK+WjsuS6uiA8IGJhaW5pblwgOwor5r2u6ZaTIDwgc2hpb21hXCA7Civoo7jlqabnlLsgPCByYWZ1Z2FcIDsKK+mbouS5syA8IHJpbnl1dVwgOwor6KOP6Iq4IDwgdXJhZ2VpXCA7Civlm57ou6IgPCBrYWl0ZW5cIDsKK+WgtOaVsCA8IGJha2F6dVwgOwor54Gr55q/IDwgaGl6YXJhXCA7CivmrankuIDmrakgPCBob2lwcG9cIDsKK+Wil+WkpyA8IHpvdWRhaVwgOwor57iB5YWIIDwgZW5zYWtpXCA7CivkuInljYHot68gPCBtaXNvamlcIDsKK+WjsuS4iiA8IHVyaWFnZVwgOwor6ZuR5L+zIDwgemFwcGFpXCA7Civlm73oqp4gPCBrb2t1Z29cIDsKK+mMuiA8IGthemFyaVwgOwor57WM5pu4IDwga2Vpc2hvXCA7CivmlLnlhYMgPCBrYWlnZW5cIDsKK+aPm+eulyA8IGthbnphblwgOwor57KX57KXIDwgYXJhYXJhXCA7CivngorniKggPCBzdWlzYW5cIDsKK+a/gOiqniA8IGdla2lnb1wgOwor57Sh5q+bIDwgYm91bW91XCA7CivnhKHlv4MgPCBtdXNoaW5cIDsKK+e0q+aqgCA8IHNoaXRhblwgOwor57iB5YG0IDwgZW5nYXdhXCA7CivkuI3mspnmsbAgPCBidXNhdGFcIDsKK+mKjSA8IGNoaXRzdVwgOwor6KOc57+SIDwgaG9zaHV1XCA7CivpmaPlsYsgPCBqaW4nJ3lhXCA7Civpm5Hku7YgPCB6YWtrZW5cIDsKK+mJiyA8IGthbicnbmFcIDsKK+S4jeatu+i6qyA8IGZ1amltaVwgOwor6ZuR5Lq6IDwgem91bmluXCA7Civnt7TlhbUgPCByZW5wZWlcIDsKK+Wik+WgtCA8IGhha2FiYVwgOwor6ZuF5L+XIDwgZ2F6b2t1XCA7CivphqogPCBtb3JvbWlcIDsKK+aUvuS7uyA8IGhvdW5pblwgOwor5Yqg5aWI6ZmAIDwga2FuYWRhXCA7CivmjqjogIMgPCBzdWlrb3VcIDsKK+e0lOavmyA8IGp1bm1vdVwgOwor57SF5raZIDwga291cnVpXCA7CivntKDmqLggPCBzb2Jva3VcIDsKK+WZtOmjryA8IGZ1bnBhblwgOwor57aZ5a2QIDwgbWFtYWtvXCA7CivntJTmraMgPCBqdW5zZWlcIDsKK+imh+alrSA8IGhhZ3lvdVwgOwor54Gr546JIDwgaGlkYW1hXCA7CivoqKrllY8gPCBob3Vtb25cIDsKK+mVt+ebriA8IG5hZ2FtZVwgOwor57Wx5b6hIDwgdG91Z3lvXCA7CivpgZYgPCBhcHBhcmVcIDsKK+ifu+mjnyA8IGFyaWt1aVwgOwor5pC+5rK5IDwgc2FrdXl1XCA7Civku6XpgaDmqKkgPCBpZW5rZW5cIDsKK+ihv+ijjyA8IGVyaXVyYVwgOwor6KOc57WmIDwgaG9reXV1XCA7Civmlr3ppJPprLwgPCBzZWdha2lcIDsKK+ipleS+oSA8IGh5b3VrYVwgOwor6ZaA55WqIDwgbW9uYmFuXCA7Civlm7PooaggPCB6dWh5b3VcIDsKK+i/miA8IHRvdGVtb1wgOwor57Gz57a/IDwgYmVpbWVuXCA7Civlobnlo5UgPCB6YW5nb3VcIDsKK+S4iemHjeecjCA8IG1pZWtlblwgOwor57eR5YyWIDwgcnlva2thXCA7CivpmYvlsYsgPCByb3Vva3VcIDsKK+WcsOiCjCA8IGppaGFkYVwgOwor6Ziy5by+IDwgYm91ZGFuXCA7CivlvqHmspnmsbAgPCBnb3NhdGFcIDsKK+iogOWkliA8IGdlbmdhaVwgOwor57eP5YuiIDwgc291emVpXCA7Civlm57oqJMgPCBrYWlrdW5cIDsKK+e1kOaIkCA8IGtlc3NlaVwgOwor6LuIIDwgeWFnYXRlXCA7CivntITmrL4gPCB5YWtrYW5cIDsKK+i6uyA8IHV0c3VrZVwgOwor6LquIDwgc2VnYXJlXCA7CivmkqTlu4MgPCB0ZXBwYWlcIDsKK+WboOilsiA8IGluc2h1dVwgOwor57Gz57KJIDwgYmVpZnVuXCA7CivnhanlirQgPCBoYW5yb3VcIDsKK+WiqOWIkSA8IGJva2tlaVwgOwor54Sh5a2mIDwgbXVnYWt1XCA7Civmr5vnubvlrZAgPCBrZWp1c3VcIDsKK+aPj+egtCA8IGJ5b3VoYVwgOwor5pGY5p6cIDwgdGVraWthXCA7CivpmbDlmqIgPCBmdWd1cmlcIDsKK+i4tSA8IGtha2F0b1wgOwor5LiN5ZCM5oSPIDwgZnVkb3VpXCA7Civmi7PpioMgPCBrZW5qdXVcIDsKK+evgOmFkiA8IHNlc3NodVwgOwor5Zm06ZaAIDwgZnVubW9uXCA7Civooajoo48gPCBoeW91cmlcIDsKK+maj+WIhiA8IHp1aWJ1blwgOwor57W25a++IDwgemV0dGFpXCA7Civnspfnm64gPCB6YXJhbWVcIDsKK+a8oumfsyA8IGthbicnb25cIDsKK+aMh+i8qiA8IHl1Yml3YVwgOwor57KJ56CVIDwgZnVuc2FpXCA7CivpmbDllIcgPCBpbnNoaW5cIDsKK+mao+S6uiA8IHJpbmppblwgOwor57Gz56qBIDwgbcSTdG9ydVwgOwor57Sg5pW1IDwgc3V0ZWtpXCA7CivlopfliIogPCB6b3VrYW5cIDsKK+Wil+WIhiA8IHpvdWJ1blwgOwor5r2u6LevIDwgc2hpb2ppXCA7CivooZPoqIggPCBqdWtrZWlcIDsKK+e0jeadryA8IG5vdWhhaVwgOwor6KGG6K2wIDwgc2h1dWdpXCA7CivngrnmlbAgPCB0ZW5zdXVcIDsKK+e0jeacrCA8IG5vdWhvblwgOwor5ouz6YGTIDwga29uZG91XCA7CivpmaPllrYgPCBqaW4nJ2VpXCA7CivntJnmlbAgPCBzaGlzdXVcIDsKK+e0m+aTviA8IGZ1bmpvdVwgOwor6ZaA54GvIDwgbW9udG91XCA7Civmi6Dph5EgPCBreW9raW5cIDsKK+mWgOeBqyA8IGthZG9iaVwgOwor57W25aW9IDwgemVra291XCA7CivntKDmj48gPCBzb2J5b3VcIDsKK+iisee0lyA8IGZ1a3VzYVwgOwor6ZqP5Ly0IDwgenVpaGFuXCA7Civmj5DnkLQgPCB0ZWlraW5cIDsKK+iomOWFpSA8IGtpbnl1dVwgOwor5Zyo57GzIDwgemFpYmVpXCA7Civopprmgp8gPCBrYWt1Z29cIDsKK+Wil+S/uCA8IHpvdWhvdVwgOwor5aKX5L6/IDwgem91YmluXCA7CivoqIEgPCBnb25iZW5cIDsKK+a8j+mbuyA8IHJvdWRlblwgOwor5LqI5YKZ56eRIDwgeW9iaWthXCA7CivopJDngq0gPCBrYXR0YW5cIDsKK+aOu+eXkiA8IHNvdXlvdVwgOwor54KJ5qOaIDwgcm9kYW5hXCA7CivlooPlhoUgPCBrZWlkYWlcIDsKK+aOqOefpSA8IHN1aWNoaVwgOwor54Gr5rC0IDwgaGltaXp1XCA7CivopoHmiYAgPCB5b3VzaG9cIDsKK+WcsOeojiA8IGNoaXplaVwgOwor57W55ZywIDwga2ludWppXCA7CivmsZ/miLjliY0gPCBlZG9tYWVcIDsKK+eyvua2siA8IHNlaWVraVwgOwor5o6i55+lIDwgdGFuY2hpXCA7Civlmajph48gPCBraXJ5b3VcIDsKK+igjSA8IHNhc29yaVwgOwor6ZW35rmvIDwgbmFnYXl1XCA7CivmvLjov5EgPCB6ZW5raW5cIDsKK+mZouWGhSA8IGluJyduYWlcIDsKK+WgtOWkliA8IGpvdWdhaVwgOwor5Z6C5rqWIDwgc3VpanVuXCA7CivnhKHlkYogPCBtdWtva3VcIDsKK+iok+S7pCA8IGt1bnJlaVwgOwor57Sv5bm0IDwgcnVpbmVuXCA7CivlnKfnpZ4gPCBhc3NoaW5cIDsKK+exs+eUoyA8IGJlaXNhblwgOwor57WQ5amaIDwga2Vra29uXCA7CivntI3miYAgPCBuYXNzaG9cIDsKK+ibjSA8IGhvdGFydVwgOwor5pKk5ZueIDwgdGVra2FpXCA7CivnsaDnm64gPCBrYWdvbWVcIDsKK+e0lOaEmyA8IGp1bicnYWlcIDsKK+aJi+m8uyA8IHRlYmFuYVwgOwor6ZW35rOiIDwgY2hvdWhhXCA7CivlnoLmto4gPCB6dWl6ZW5cIDsKK+e0ouW8lSA8IHNha3VpblwgOwor57SU5oOFIDwganVuam91XCA7Civntbblk4EgPCB6ZXBwaW5cIDsKK+aOoueVqiA8IHRhbmJhblwgOwor6ZaA5q2vIDwgbW9uc2hpXCA7Civmv4PntLogPCBub3Vrb25cIDsKK+e0hOaJiyA8IHlha3V0ZVwgOwor6Ja6IDwgbmF6dW5hXCA7CivoobDogJcgPCBzdWltb3VcIDsKK+ethumgrSA8IGhpdHRvdVwgOwor5o6h55SoIDwgc2FpeW91XCA7CivmjZXnuJsgPCBob2Jha3VcIDsKK+iVqCA8IHdhcmFiaVwgOwor57KJ54KtIDwgZnVudGFuXCA7CivpmarkuZcgPCBiYWlqb3VcIDsKK+iUtiA8IHNvbm9rb1wgOwor5Zyn552AIDwgYXRzdWdpXCA7CivlnqPmoLkgPCBrYWtpbmVcIDsKK+iTrCA8IHlvbW9naVwgOwor6Kej5YmWIDwga2FpYm91XCA7CivntbHlkIggPCB0b3Vnb3VcIDsKK+Wcn+efsyA8IGRvc2VraVwgOwor6JKFIDwgc3VrdW1vXCA7CivlnLDnlaogPCBjaGliYW5cIDsKK+eEmuWIkSA8IGZ1bmtlaVwgOwor57Sw5a2XIDwgaG9zb2ppXCA7CivnhKHlhJ8gPCBtdXNob3VcIDsKK+e1guWknCA8IHNodXV5YVwgOwor6KiA5LiKIDwgZ29uam91XCA7Civkv53orbfljLogPCBob2dva3VcIDsKK+mWk+acjSA8IGFpZnVrdVwgOwor5rWF6IyF55SfIDwgYXNhaml1XCA7CivnhKHlgrcgPCBtdWtpenVcIDsKK+aSpOWOuyA8IHRla2t5b1wgOwor6Iy4IDwga2lub2tvXCA7Civlm6DnuIEgPCBpbicnbmVuXCA7CivlmIbpoZggPCB0YW5nYW5cIDsKK+a+seeyiSA8IGRlbnB1blwgOwor6KaB5a6zIDwgeW91Z2FpXCA7CivntJnlsYsgPCBrYW1peWFcIDsKK+mWk+aVsCA8IG1ha2F6dVwgOwor5Zu956aBIDwga29ra2luXCA7CivmjL/ntbUgPCBzYXNoaWVcIDsKK+WcsOeNhCA8IGppZ29rdVwgOwor5Z6C5qWKIDwgc3VpeW91XCA7CivlnJ/nlKMgPCBtaXlhZ2VcIDsKK+ino+S9kyA8IGthaXRhaVwgOwor5o6l54K5IDwgc2V0dGVuXCA7Civlm73npI4gPCBrb2t1c29cIDsKK+iGoCA8IG5pa2F3YVwgOwor56uv6bqXIDwgdGFucmVpXCA7CivooYDohr8gPCBjaGl1bWlcIDsKK+ino+S7uyA8IGthaW5pblwgOwor57SZ5a2QIDwga2FtaWtvXCA7Civngq3lsaQgPCB0YW5zb3VcIDsKK+aSpOWFtSA8IHRlcHBlaVwgOwor57Sv5aKXIDwgcnVpem91XCA7CivooYzogIUgPCBneW91amFcIDsKK+eDiOWjqyA8IHJlc3NoaVwgOwor5ryr6KuHIDwgbWFuZGFuXCA7CivmiYvpp5IgPCB0ZWdvbWFcIDsKK+WgheWhgSA8IGtlbnJ1aVwgOwor5a625YW35bGLIDwga2FndXlhXCA7CivmiYvpppYgPCB0ZWt1YmlcIDsKK+Wwj+awl+WRsyA8IGtva2ltaVwgOwor54KJ5b+DIDwgcm9zaGluXCA7CivnrYbpi5IgPCBoaXBwb3VcIDsKK+WgguWggiA8IGRvdWRvdVwgOwor6Kaq5ZKMIDwgc2hpbndhXCA7CivlnoLmnKggPCB0YXJ1a2lcIDsKK+WgtOWGhSA8IGpvdW5haVwgOwor5oyJ6IW5IDwgYW5wdWt1XCA7CivlnLDngrkgPCBjaGl0ZW5cIDsKK+mXh+WxiyA8IHlhbWl5YVwgOwor57W25LiWIDwgemVzc2VpXCA7CivntYTlkIggPCBrdW1pYWlcIDsKK+aJi+mggyA8IHRlZ29yb1wgOwor6KaG5ZyfIDwgZnVrdWRvXCA7Civln7nlnLAgPCBiYWljaGlcIDsKK+WbnuekvCA8IGthaXJlaVwgOwor5omA6aGYIDwgc2hvZ2FuXCA7CivntZDlhZogPCBrZXR0b3VcIDsKK+e0lOWilyA8IGp1bnpvdVwgOwor57iFIDwgb2Rvc2hpXCA7Civoo73mnZAgPCBzZWl6YWlcIDsKK+eDmeWNsCA8IHJha3VpblwgOwor5omL6ZqbIDwgdGVnaXdhXCA7CivmiYvpmpkgPCB0ZXN1a2lcIDsKK+imquWIhiA8IG95YWJ1blwgOwor562J6L66IDwgdG91aGVuXCA7CivngrnlnKggPCB0ZW56YWlcIDsKK+e1puS4jiA8IGt5dXV5b1wgOwor54Kt5aG1IDwgdGFuamluXCA7CivnspfmnI0gPCBzb2Z1a3VcIDsKK+Wfn+WkliA8IGlraWdhaVwgOwor57Sw5ZCbIDwgc2Fpa3VuXCA7CivlpKnompXns7ggPCB0ZWd1c3VcIDsKK+ezkiA8IGhvc2hpaVwgOwor5ouZ6JGXIDwgc2V0Y2hvXCA7CivmiYvplbcgPCB0ZW5hZ2FcIDsKK+mXh+WknCA8IHlhbWl5b1wgOwor5Zu9546LIDwga29rdW91XCA7CivnsonmnKwgPCBmdW5wb25cIDsKK+Wcj+eCuSA8IGtlbnRlblwgOwor54Gr5bqKIDwgaGlkb2tvXCA7CivooYDnrqEgPCBrZWtrYW5cIDsKK+e1jOS8nSA8IGtlaWRlblwgOwor6KGo55quIDwgaHlvdWhpXCA7CivnrIIgPCB1dHN1Ym9cIDsKK+aOkuawtCA8IGhhaXN1aVwgOwor5Zu954i2IDwga29rdWZ1XCA7CivntLDliIYgPCBzYWlidW5cIDsKK+eriCA8IGthbWFkb1wgOwor5oyB57aaIDwgaml6b2t1XCA7Civmj6HmiYsgPCBha3VzaHVcIDsKK+aJi+mNiyA8IHRlbmFiZVwgOwor56uc6aasIDwgcnl1dW1lXCA7Civnqq7pvKAgPCBreXV1c29cIDsKK+WfjuWhgSA8IGpvdXJ1aVwgOwor5ruR6LuKIDwga2Fzc2hhXCA7Civnq6XpoZQgPCBkb3VnYW5cIDsKK+enpCA8IGhha2FyaVwgOwor6ZaA5byfIDwgbW9udGVpXCA7CivmiKbpm7IgPCBzZW4nJ3VuXCA7CivnpoogPCBtaXNvZ2lcIDsKK+aJi+mJpCA8IHRla2FnaVwgOwor5rm+6aCtIDwgd2FudG91XCA7CivntI3lk4EgPCBub3VoaW5cIDsKK+aQjeWusyA8IHNvbmdhaVwgOwor57Gz5p2QIDwgYmVpemFpXCA7CivnlbDmlofljJYgPCBpYnVua2FcIDsKK+a6gOmdoiA8IG1hbm1lblwgOwor56uc6aCtIDwgcnl1dXp1XCA7Civllqvpo68gPCBraXBwYW5cIDsKK+e0ouWFtyA8IHNha3VndVwgOwor6KOP5p2/IDwgdXJhaXRhXCA7CivmiYvphYwgPCB0ZWpha3VcIDsKK+aLmeiAhSA8IHNlc3NoYVwgOwor56CmIDwgdG9yaWRlXCA7CivplbfluqcgPCBjaG91emFcIDsKK+mWieWxsSA8IGhlaXphblwgOwor5Zyw5qScIDwgY2hpa2VuXCA7CivplovlsIEgPCBrYWlmdXVcIDsKK+eCreWKtCA8IHRhbnJvdVwgOwor57SU5YiGIDwganVuYnVuXCA7Civlnabmh5AgPCB0YW5rYWlcIDsKK+a6gOmWiyA8IG1hbmthaVwgOwor57Sv5LmXIDwgcnVpam91XCA7Civmjqjmlq0gPCBzdWlkYW5cIDsKK+aJueiplSA8IGhpaHlvdVwgOwor5o6I5qWtIDwganVneW91XCA7CivkvY3nm7jlt64gPCBpc291c2FcIDsKK+e0r+S4liA8IHJ1aXNlaVwgOwor6KGA55u4IDwga2Vzc291XCA7CivopIfluqcgPCBmdWt1emFcIDsKK+a/g+a3oSA8IG5vdXRhblwgOwor5omL6Lu9IDwgdGVnYXJ1XCA7CivlnKjmoKEgPCB6YWlrb3VcIDsKK+ikpeWppiA8IGpva3VmdVwgOwor6ZW35bGLIDwgbmFnYXlhXCA7CivooYDnl7AgPCBrZXR0YW5cIDsKK+mWi+WniyA8IGthaXNoaVwgOwor5Z+f5YaFIDwgaWtpbmFpXCA7Civplbflr78gPCBjaG91anVcIDsKK+WcqOadpSA8IHphaXJhaVwgOwor6KOB5patIDwgc2FpZGFuXCA7Civnk7wgPCBzYXJha2VcIDsKK+aKnOiQgyA8IGJhc3N1aVwgOwor57Sb5LqJIDwgZnVuc291XCA7CivmiYvotrMgPCB0ZWFzaGlcIDsKK+Wcp+acjSA8IGFwcHVrdVwgOwor57Sb5LmxIDwgZnVucmFuXCA7CivmvbDnmI0gPCBrYWl5b3VcIDsKK+aOqOaMmSA8IHN1aWt5b1wgOwor5Zu95q+NIDwga29rdWJvXCA7CivnspLluqYgPCByeXV1ZG9cIDsKK+WcsOaWhyA8IGNoaW1vblwgOwor6JaU6JaH5ZySIDwgYmFyYWVuXCA7CivmuLjprZogPCB5dXVneW9cIDsKK+Wcn+acqCA8IGRvYm9rdVwgOwor57Gz5oeHIDwgYmVpa29uXCA7CivplqPlk6EgPCBrYWt1aW5cIDsKK+mWgOWkliA8IG1vbmdhaVwgOwor5o265p+TIDwgbmFzc2VuXCA7Civln47lhbUgPCBqb3VoZWlcIDsKK+a8geiIuSA8IGd5b3NlblwgOwor6YGO5rih5pyfIDwga2F0b2tpXCA7Civpl4flgKQgPCB5YW1pbmVcIDsKK+eLuCA8IHRhbnVraVwgOwor5oyB55eFIDwgamlieW91XCA7CivplbflpbMgPCBjaG91am9cIDsKK+WbveaoqSA8IGtva2tlblwgOwor57SK5LmxIDwgYnVucmFuXCA7CivlnJ/mlrkgPCBkb2thdGFcIDsKK+aJk+iouiA8IGRhc2hpblwgOwor5Zyn5pC+IDwgYXNzYWt1XCA7CivmvJTnubkgPCBlbicnZWtpXCA7Civoo5zlvLcgPCBob2t5b3VcIDsKK+mWgOWcsCA8IG1vbmNoaVwgOwor56uL6YyQIDwgcmlzc3VpXCA7CivlloTpmqMgPCB6ZW5yaW5cIDsKK+aIpui7iiA8IHNlbnNoYVwgOwor5omL6KixIDwgdGVtb3RvXCA7CivoobDmrosgPCBzdWl6YW5cIDsKK+eyieWxiyA8IGtvbmF5YVwgOwor5omA6KuWIDwgc2hvcm9uXCA7Civlm6PmrJIgPCBkYW5yYW5cIDsKK+a6gOi8iSA8IG1hbnNhaVwgOwor5bGF5aC05omAIDwgaWJhc2hvXCA7CivmuoDou4ogPCBtYW5zaGFcIDsKK+WcqOaJgCA8IHphaXNob1wgOwor57Gz5bidIDwgYmVpdGVpXCA7Civllp3ph4cgPCBrYXNzYWlcIDsKK+ibrumiqCA8IGJhbnB1dVwgOwor5oeH6aGYIDwga29uZ2FuXCA7CivnrYboh7QgPCBoaXRjaGlcIDsKK+Wbs+afhCA8IHp1Z2FyYVwgOwor5oiK6L6wIDwgYm9zaGluXCA7Civlm73mmK8gPCBrb2t1emVcIDsKK+eznuS+vyA8IGZ1bmJlblwgOwor6YGV5ZKM5oSfIDwgaXdha2FuXCA7Civmva7ngKwgPCBzaGlvc2VcIDsKK+erpeiyniA8IGRvdXRlaVwgOwor56qB6aKoIDwgdG9wcHV1XCA7CivngavlhYggPCBob3Nha2lcIDsKK+exs+WxiyA8IGtvbWV5YVwgOwor54Gr5YWDIDwgaGltb3RvXCA7CivlnLDlvaIgPCBjaGlrZWlcIDsKK+a4miA8IG5hZ2lzYVwgOwor57K+5YukIDwgc2Vpa2luXCA7Civmipzns7ggPCBiYXNzaGlcIDsKK+eptOmmrCA8IGFuYXVtYVwgOwor54Gr5YK3IDwgeWFrZWRvXCA7Civmu4Xoj4wgPCBtZWtraW5cIDsKK+eUn+iVjum6piA8IGtpc29iYVwgOwor562G6ICVIDwgaGlra291XCA7Civpjq7orbcgPCBjaGluZ29cIDsKK+ibrumatyA8IGJhbnJlaVwgOwor5raOIDwgeW9kYXJlXCA7CivnrYbogIUgPCBoaXNzaGFcIDsKK+WcqOW9uSA8IHphaWVraVwgOwor5Zyw5bmzIDwgY2hpaGVpXCA7CivmjqjlrpogPCBzdWl0ZWlcIDsKK+WVj+mhjCA8IG1vbmRhaVwgOwor6ZaA5YmNIDwgbW9uemVuXCA7Civlm5vmoYEgPCB5b2tldGFcIDsKK+ihjOauiiA8IGd5b3Vqb1wgOwor56m66Z+zIDwgc29yYW5lXCA7CivlnKflu7YgPCBhdHN1ZW5cIDsKK+mWgOWHuiA8IGthZG9kZVwgOwor5o6h5a+4IDwgc2Fpc3VuXCA7Civmibbnv7wgPCBmdXlva3VcIDsKK+axgCA8IG1pZ2l3YVwgOwor5rC1IDwgc2FuenVpXCA7CivnsaDlsYUgPCByb3VreW9cIDsKK+aHuOi7jSA8IGtlbmd1blwgOwor56m66Zu7IDwga3V1ZGVuXCA7Civoo73lk4EgPCBzZWloaW5cIDsKK+epuumamyA8IGt1dXNhaVwgOwor6Y2b6YysIDwgdGFucmVuXCA7Civlm73mioAgPCBrb2t1Z2lcIDsKK+mMsumfsyA8IHJva3VvblwgOwor5omA6JS1IDwgc2hvem91XCA7CivplovkvJogPCBrYWlrYWlcIDsKK+a9n+a5liA8IHNla2lrb1wgOwor5LiN5rCX5ZGzIDwgYnVraW1pXCA7CivllonovKogPCBub2Rvd2FcIDsKK+a4i+mdoiA8IGp1dW1lblwgOwor6ZaJ5LyaIDwgaGVpa2FpXCA7CivnrYbntJkgPCBoaXNzaGlcIDsKK+epuumWqCA8IGt1dWtlaVwgOwor5ryU55uuIDwgZW5tb2t1XCA7CivnqbrplpMgPCBrdXVrYW5cIDsKK+aotSA8IGtpa29yaVwgOwor5qiuIDwgaG9rdXNvXCA7CivmiY3oirggPCBzYWlnZWlcIDsKK+ikh+WIqSA8IGZ1a3VyaVwgOwor6KOP5aOwIDwgdXJhZ29lXCA7Civmu57ntI0gPCB0YWlub3VcIDsKK+aLoOeCuSA8IGt5b3RlblwgOwor5omL6Iq4IDwgc2h1Z2VpXCA7CivmuKzpiZsgPCBzb2t1ZW5cIDsKK+WcqOWumCA8IHphaWthblwgOwor5Zm054WZIDwgZnVuJydlblwgOwor5qWUIDwga3VzYWJpXCA7CivmvILnoIIgPCBoeW91c2FcIDsKK+mWgOS6uiA8IG1vbmppblwgOwor5qSqIDwga3VudWdpXCA7CivnrYbnrpcgPCBoaXNzYW5cIDsKK+WbveaBqSA8IGtva3VvblwgOwor5omN6IWVIDwgc2Fpd2FuXCA7Civlm7DmhoogPCBrb25wYWlcIDsKK+evgOawtCA8IHNlc3N1aVwgOwor562G56uvIDwgaGl0dGFuXCA7CivmiYvohZUgPCBzaHV3YW5cIDsKK+a9nOawtCA8IHNlbnN1aVwgOwor5r+A5oCSIDwgZ2VraWRvXCA7CivmiY3og70gPCBzYWlub3VcIDsKK+mNm+mAoCA8IHRhbnpvdVwgOwor5qCeIDwgc2hpb3JpXCA7CivlnLDlpIkgPCBjaGloZW5cIDsKK+ihgOagkyA8IGtlc3NlblwgOwor5omL6IG3IDwgdGVqb2t1XCA7CivnqpPovrogPCBtYWRvYmVcIDsKK+ihk+aVsCA8IGp1c3N1dVwgOwor5p2OIDwgc3Vtb21vXCA7Civmv4HluqYgPCBkYWt1ZG9cIDsKK+WcqOWkqSA8IHphaXRlblwgOwor5Zyo5aSWIDwgemFpZ2FpXCA7CivooYDmm7ggPCBrZXNzaG9cIDsKK+WcsOWfnyA8IGNoaWlraVwgOwor5pqmIDwga295b21pXCA7CivmuJvphY0gPCBnZW5wYWlcIDsKK+epjembsiA8IHNla2l1blwgOwor5pi0IDwgc3ViYXJ1XCA7CivmuoDokpkgPCBtYW5tb3VcIDsKK+W+oeats+aariA8IG9zZWlib1wgOwor5ry45ribIDwgemVuZ2VuXCA7Civmu5HnqbogPCBrYWtrdXVcIDsKK+a3semWkyA8IGZ1a2FtYVwgOwor6KGA5paRIDwga2VwcGFuXCA7CivnqJrpsKQgPCB3YXJhc2FcIDsKK+a4m+mAgCA8IGdlbnRhaVwgOwor56uv6ImHIDwgdGFudGVpXCA7CivmjqXlkLsgPCBzZXBwdW5cIDsKK+aLmOazpSA8IGtvdWRlaVwgOwor562L55uuIDwgc3VqaW1lXCA7CivnqJrpro4gPCBjaGlheXVcIDsKK+S6iOWCmeWToSA8IHlvYmlpblwgOwor6Jyl6Jy0IDwgdG9rYWdlXCA7Civmi53mrr8gPCBoYWlkZW5cIDsKK+eomumtmiA8IGNoaWd5b1wgOwor5pig55S75YyWIDwgZWlnYWthXCA7CivlmbTmsLQgPCBmdW5zdWlcIDsKK+aJi+e0mSA8IHRlZ2FtaVwgOwor56+G5pu4IDwgdGVuc2hvXCA7CivnqK7poZ4gPCBzaHVydWlcIDsKK+a4hemFkiA8IHNlaXNodVwgOwor57KJ5L2TIDwgZnVudGFpXCA7CivllYbpgYsgPCBzaG91dW5cIDsKK+epuui7oiA8IGt1dXRlblwgOwor5qyn5Y2w6KqeIDwgb3VpbmdvXCA7CivlnYfliIYgPCBraW5idW5cIDsKK+a7heengSA8IG1lc3NoaVwgOwor56m66LuNIDwga3V1Z3VuXCA7Civnqbrou4ogPCBrdXVzaGFcIDsKK+eyi+S6uiA8IHN1aWppblwgOwor5Zuz5qGI5a62IDwgenVhbmthXCA7CivmiYvnsaAgPCB0ZWthZ29cIDsKK+a6gOiFlCA8IG1hbmtvdVwgOwor5oqr54CdIDwgaGlyZWtpXCA7CivmiYvnrrEgPCB0ZWJha29cIDsKK+aJi+euoSA8IHRla3VkYVwgOwor5omL562LIDwgdGVzdWppXCA7CivmiYvnrYggPCB0ZWhhenVcIDsKK+aMmeaJiyA8IGt5b3NodVwgOwor5omWIDwgaGFtZXJ1XCA7CivnqoHosqsgPCB0b2trYW5cIDsKK+eruee4gSA8IHRha2VlblwgOwor5o6S5Y21IDwgaGFpcmFuXCA7Civmua/oirEgPCB5dWJhbmFcIDsKK+aHh+iriyA8IGtvbnNlaVwgOwor5oeH6KuHIDwga29uZGFuXCA7CivmjajloLQgPCBzdXRlYmFcIDsKK+a5r+iIuSA8IHl1YnVuZVwgOwor6KGG5oSaIDwgc2h1dWd1XCA7CivmhpYgPCBuYW1hamlcIDsKK+a3semDqCA8IHNoaW5idVwgOwor5oi457GNIDwga29zZWtpXCA7Civnr4Dmk40gPCBzZXNzb3VcIDsKK+iiq+WRiiA8IGhpa29rdVwgOwor5ruF55u4IDwgbWVzc291XCA7Civnq6/nt5ogPCB0YW5zZW5cIDsKK+err+e3kiA8IHRhbmNob1wgOwor5Zyo5YukIDwgemFpa2luXCA7CivmvZTmlo4gPCBrZXNzYWlcIDsKK+Wcp+WLnSA8IGFzc2hvdVwgOwor5rW36bygIDwgbmFtYWtvXCA7CivmjqXkvLQgPCBzZXBwYW5cIDsKK+erueewgCA8IHRha2VzdVwgOwor5Zyw5YWDIDwgamltb3RvXCA7CivmtrLpnaIgPCBla2ltZW5cIDsKK+ibh+i2syA8IGRhc29rdVwgOwor5Zu95ZyfIDwga29rdWRvXCA7Civlv5zmj7TmrYwgPCBvdWVua2FcIDsKK+epuuirliA8IGt1dXJvblwgOwor56m66KuHIDwga3V1ZGFuXCA7CivlvaAgPCBrdXdha3VcIDsKK+a8gea4ryA8IGd5b2tvdVwgOwor5oSb6bOlIDwgYWljaG91XCA7Civlu5MgPCBrdXJ1d2FcIDsKK+igseaDkSA8IGtvd2FrdVwgOwor5o6S5L6/IDwgaGFpYmVuXCA7Civlm73llrYgPCBrb2t1ZWlcIDsKK+W5nyA8IG5vYm9yaVwgOwor5bmJIDwgdGF6dW5hXCA7Civmi67mja4gPCBraWtreW9cIDsKK+aMr+WtkCA8IGZ1cmlrb1wgOwor5Zm45pWwIDwgdG9uc3V1XCA7CivmvIHms5UgPCBneW9ob3VcIDsKK+Wbo+WhiiA8IGRhbmthaVwgOwor5Zyw5LujIDwgY2hpZGFpXCA7Civllqvnt4ogPCBraWtraW5cIDsKK+aJi+eZliA8IHRla3VzZVwgOwor6Yyv6KqkIDwgc2FrdWdvXCA7CivnqI7plqIgPCB6ZWlrYW5cIDsKK+W1kCA8IGFyYXNoaVwgOwor5ryB5rCRIDwgZ3lvbWluXCA7CivlnKjkvY8gPCB6YWlqdXVcIDsKK+iaiumJpCA8IGthYmFyaVwgOwor5Zyo5Lu7IDwgemFpbmluXCA7Civmva7lubIgPCBzaGlvaGlcIDsKK+a1t+mtmiA8IGthaWd5b1wgOwor566X5pWwIDwgc2Fuc3V1XCA7CivlnJ/kv7UgPCBkb2h5b3VcIDsKK+Wcn+S/lyA8IGRvem9rdVwgOwor5omT55CDIDwgZGFreXV1XCA7CivpvLvpj6EgPCBiaWt5b3VcIDsKK+aOiOS5syA8IGp1bnl1dVwgOwor5rW36amiIDwgYXNoaWthXCA7CivmvKvmlocgPCBtYW5idW5cIDsKK+ihqOWcnyA8IGh5b3Vkb1wgOwor5Zu95YuZIDwga29rdW11XCA7CivmiJHnrYkgPCB3YXJlcmFcIDsKK+aMveWbniA8IGJhbmthaVwgOwor56m66JmaIDwga3V1a3lvXCA7CivlnJ/kuK0gPCBkb2NodXVcIDsKK+aJgOeUoyA8IHNob3NhblwgOwor5aufIDwgaml5dWt1XCA7Civono3ngrkgPCB5dXV0ZW5cIDsKK+a8ouaWhyA8IGthbmJ1blwgOwor5omL546JIDwgdGVkYW1hXCA7Civllqrnq6AgPCBtb3Nob3VcIDsKK+Wbo+WToSA8IGRhbicnaW5cIDsKK+aJi+eLrSA8IHRlemVtYVwgOwor5Zu95YWJIDwga29ra291XCA7CivpioDpsZcgPCBnaW5yaW5cIDsKK+mYv+iYremZgCA8IG9yYW5kYVwgOwor5ZWT6JKZIDwga2VpbW91XCA7CivooYblpJogPCBzaHV1dGFcIDsKK+eojumHkSA8IHplaWtpblwgOwor6buS6bWQIDwga3Vyb2ppXCA7CivooI/luqcgPCBrYW5pemFcIDsKK+a8geadkSA8IGd5b3NvblwgOwor5rW36ZujIDwga2FpbmFuXCA7CivnqbrojbcgPCBrYXJhbmlcIDsKK+Wbm+WNgyA8IHlvbnNlblwgOwor5Zub5Y2BIDwgeW9uanV1XCA7Civlm73kvJogPCBrb2trYWlcIDsKK+WctyA8IGFrdXRzdVwgOwor5Zuz5L2TIDwgenV1dGFpXCA7CivnrrHlsYsgPCBoYWtveWFcIDsKK+a7heazlSA8IG1lcHBvdVwgOwor5oq15oqXIDwgdGVpa291XCA7Civmv4HkuJYgPCBkYWt1c2VcIDsKK+eEoeaFiOaCsiA8IG11amloaVwgOwor6b2y6J2VIDwgdXNob2t1XCA7CivooajlhbcgPCBoeW91Z3VcIDsKK+a8geaSiCA8IGd5b3JvdVwgOwor5rib6ICXIDwgZ2VubW91XCA7CivooYzlj7ggPCBneW91amlcIDsKK+WPl+ipseWZqCA8IGp1d2FraVwgOwor56qS57SgIDwgY2hpc3NvXCA7Civpi63op5IgPCBlaWtha3VcIDsKK+enmOmMsiA8IGhpcm9rdVwgOwor57+76LuK6a2aIDwgbWFuYm91XCA7CivkuI3lh7rmnaUgPCBmdWRla2lcIDsKK+ihsOS6oSA8IHN1aWJvdVwgOwor56uc546LIDwgcnl1dW91XCA7CivlmbTlsIQgPCBmdW5zaGFcIDsKK+WQjiA8IGtpc2FraVwgOwor5ZWP572qIDwgbW9uemFpXCA7Civpm5HprZrlr50gPCB6YWtvbmVcIDsKK+WOoCA8IGthd2F5YVwgOwor6JuH6IW5IDwgamFiYXJhXCA7CivkvIrlpKrliKkgPCBpdGFyaWlcIDsKK+aJi+awtCA8IHRlbWl6dVwgOwor5oSb6YO3IDwgYWlreW91XCA7CivppYLpo6nnsokgPCB1ZG9ua29cIDsKK+aJi+avrCA8IHRlbWFyaVwgOwor5oqY5oqYIDwgb3Jpb3JpXCA7Civmua/njokgPCB5dWRhbWFcIDsKK+aMmeWLlSA8IGt5b2RvdVwgOwor5rWB6Z+zIDwgcnl1dW9uXCA7CivmiYvmrrUgPCBzaHVkYW5cIDsKK+a1gemcsiA8IHJ5dXVyb1wgOwor5oqK5o2JIDwgaGFzb2t1XCA7CivmtYHpm6IgPCByeXV1cmlcIDsKK+m8oOiziiA8IHNvem9rdVwgOwor55SY5rW36ICBIDwgYW1hZWJpXCA7CivmjJnlhbUgPCBreW9oZWlcIDsKK+a4qeeqgSA8IG9uZG9ydVwgOwor5omL5qmfIDwgdGViYXRhXCA7CivlhZwgPCBrYWJ1dG9cIDsKK+aLt+WVjyA8IGdvdW1vblwgOwor6J6N5pyXIDwgeXV1cm91XCA7CivpurrpoZ4gPCBtZW5ydWlcIDsKK+a4m+eulyA8IGdlbnphblwgOwor5omL5qWtIDwgdGV3YXphXCA7CivmvLjlopcgPCB6ZW56b3VcIDsKK+a1t+i7jSA8IGthaWd1blwgOwor5raI6LK7IDwgc2hvdWhpXCA7CivmtarpgJ8gPCBuYW5pd2FcIDsKK+mKgOmJsSA8IGdpbmtvdVwgOwor5ZWP562UIDwgbW9uZG91XCA7CivlkLnps7QgPCBzdWltZWlcIDsKK+ethuaJjSA8IGhpc3NhaVwgOwor6YqA6Yi0IDwgZ2lucmVpXCA7CivmuIXntJQgPCBzZWlqdW5cIDsKK+ethuaIpiA8IGhpc3NlblwgOwor5bCP6aas6bm/IDwga29iYWthXCA7CivomZroqpUgPCBreW90YW5cIDsKK+a3i+iPjCA8IHJpbmtpblwgOwor5rib56iOIDwgZ2VuemVpXCA7CivnrZblv5wgPCBzYWt1b3VcIDsKK+epuuepuiA8IGt1dWt1dVwgOwor56u25q2pIDwga3lvdWhvXCA7CivmuKnnn7MgPCBvbmpha3VcIDsKK+iZmuiogCA8IGt5b2dlblwgOwor5omL5p+EIDwgdGVnYXJhXCA7CivmiYvmnrcgPCB0ZWthc2VcIDsKK+a3t+e3miA8IGtvbnNlblwgOwor5LuHIDwga2F0YWtpXCA7CivnrYbmhI8gPCBoaXRzdWlcIDsKK+aJi+acrSA8IHRlZnVkYVwgOwor5b6h6I+T5a2QIDwgb2thc2hpXCA7CivnrZTlvIEgPCB0b3ViZW5cIDsKK+a0l+mhlCA8IHNlbmdhblwgOwor5rWc6L66IDwgaGFtYWJlXCA7Civpu5LpiZsgPCBrb2t1ZW5cIDsKK+a6gOawtCA8IG1hbnN1aVwgOwor5oi45qOaIDwgdG9kYW5hXCA7CivpvI7oq4cgPCB0ZWlkYW5cIDsKK+a5v+awlyA8IHNoaWtrZVwgOwor5oiR5rWBIDwgZ2FyeXV1XCA7CivmgqrpoqggPCBha3VmdXVcIDsKK+a0l+mdoiA8IHNlbm1lblwgOwor5rSL6aKoIDwgeW91ZnV1XCA7CivnqbrnoLIgPCBrdXVob3VcIDsKK+a9nOWDjyA8IHNlbnpvdVwgOwor5oSb6KqtIDwgYWlkb2t1XCA7CivmiYDmnJsgPCBzaG9tb3VcIDsKK+aJgOaciSA8IHNob3l1dVwgOwor6buS6YWSIDwga3Vyb2tpXCA7CivmiZPmkrIgPCBkYWJva3VcIDsKK+emhemWgCA8IHplbm1vblwgOwor5omT5pKDIDwgZGFnZWtpXCA7CivkuInnn6XlnJ8gPCB0YXRha2lcIDsKK+a0numWgCA8IGRvdW1vblwgOwor5ZC46aOyIDwga3l1dWluXCA7Civnqbrnm64gPCBzb3JhbWVcIDsKK+a5r+awtCA8IHl1bWl6dVwgOwor5oKq6ZyKIDwgYWt1cmVpXCA7CivmiYvmkbogPCB0ZXN1cmlcIDsKK+evgOS8miA8IHNlY2hpZVwgOwor5oiR5qyyIDwgZ2F5b2t1XCA7Civmua/mrr8gPCB5dWRvbm9cIDsKK+err+agqiA8IGhha2FidVwgOwor5rmn5rC0IDwgeXV1c3VpXCA7Civllrbmpa0gPCBlaWd5b3VcIDsKK+a4m+eUoyA8IGdlbnNhblwgOwor6LOT5L2N6KqeIDwgaGluaWdvXCA7CivmiYvmi60gPCB0ZWZ1a2lcIDsKK+WQuembqiA8IGZ1YnVraVwgOwor5rq65oSbIDwgZGVraWFpXCA7CivnrYvlrZAgPCBzdWppa29cIDsKK+mJhOmLvCA8IHRla2tvdVwgOwor5oKM6aCGIDwgdGVpanVuXCA7CivmtJfpjKwgPCBzZW5yZW5cIDsKK+a6gOadryA8IG1hbnBhaVwgOwor6Jas6aSMIDwgeWFrdWppXCA7Civnpo/pgYsgPCBmdWt1dW5cIDsKK+aRqeiOq+aesyA8IG1hbWFraVwgOwor6Jar6aKoIDwga3VucHV1XCA7CivpjLLnlLsgPCByb2t1Z2FcIDsKK+a8huWZqCA8IHNoaWtraVwgOwor5rWE6LKhIDwgam91emFpXCA7CivomY7okL0gPCBtb2dhcmlcIDsKK+a4qeeBuCA8IG9ua3l1dVwgOwor5oKq6YqtIDwgYWt1c2VuXCA7CivlkI3pppkgPCBtZWlrb3VcIDsKK+WSjOiosyA8IHdheWFrdVwgOwor5raZ6IW6IDwgcnVpc2VuXCA7CivmirHljbUgPCBob3VyYW5cIDsKK+aJleW6lSA8IGZ1dHRlaVwgOwor5rSL6YqAIDwgeW91Z2luXCA7Civpjq7mkqsgPCBjaGluYnVcIDsKK+WWquacjSA8IG1vZnVrdVwgOwor5ZKM6KaqIDwgd2FzaGluXCA7CivmiYvlvbkgPCB0ZXlha3VcIDsKK+mKgOijvSA8IGdpbnNlaVwgOwor6buZ6KixIDwgbW9ra3lvXCA7CivmiYvlvaIgPCB0ZWdhdGFcIDsKK+aJk+W4rSA8IGRhc2VraVwgOwor6Jar6Zm2IDwga3VudG91XCA7CivmiYvlvJUgPCB0ZWJpa2lcIDsKK+a4vuayjCA8IGtvbnRvblwgOwor5ryU5YqHIDwgZW5nZWtpXCA7CivnpoHovLggPCBraW4nJ3l1XCA7Civmta7oloQgPCBmdWhha3VcIDsKK+WQjOmhniA8IGRvdXJ1aVwgOwor5rSL6YWSIDwgeW91c2h1XCA7CivmiYvluLMgPCB0ZWNob3VcIDsKK+aIkOaVlyA8IHNlaWJhaVwgOwor6Jma6IGeIDwga3lvYnVuXCA7CivpiI3plpMgPCBub3JvbWFcIDsKK+mHnemtmiA8IGhhcml5b1wgOwor5rOi6ZaTIDwgbmFtaW1hXCA7CivpvJPohpwgPCBrb21ha3VcIDsKK+aGq+eEtiA8IGJpbnplblwgOwor5oKq6YGTIDwgYWt1ZG91XCA7Civms6LplbcgPCBoYWNob3VcIDsKK+m8k+iFuSA8IGtvZnVrdVwgOwor5rOV6ZujIDwgaG91bmFuXCA7CivmsrjpqLAgPCBmdXR0b3VcIDsKK+esoOWtkCA8IGthc2Fnb1wgOwor5rS76KiIIDwga2Fra2VpXCA7Civmu57lnKggPCB0YWl6YWlcIDsKK+a4oea4iSA8IHRvc2hvdVwgOwor6YeR6a2aIDwga2luZ3lvXCA7CivpipjojLYgPCBtZWljaGFcIDsKK+engeiUtSA8IHNoaXpvdVwgOwor5ZGz6KaaIDwgbWlrYWt1XCA7CivpvpXnga8gPCBnYW5kb3VcIDsKK+m7tOiPjCA8IGJhaWtpblwgOwor5oqc5YmjIDwgYmFra2VuXCA7CivlloTmoLkgPCB6ZW5rb25cIDsKK+WQjemWgCA8IG1laW1vblwgOwor56m65rivIDwga3V1a291XCA7CivpjJjnirYgPCBzdWlqb3VcIDsKK+a6tuWqkiA8IHlvdWJhaVwgOwor5rK/6Z2pIDwgZW5rYWt1XCA7CivlsI/nmb7lkIggPCBzYXl1cmlcIDsKK+err+W9uSA8IGhheWFrdVwgOwor5ZGJ6LaKIDwgZ29ldHN1XCA7Civmt7fnhLYgPCBrb256ZW5cIDsKK+eti+WQiCA8IHN1amlhaVwgOwor5rib5rOVIDwgZ2VucG91XCA7CivnqbrmtJ4gPCBrdXVkb3VcIDsKK+a6kOW5syA8IGdlbnBlaVwgOwor5ZCN6ZGRIDwgbWVpa2FuXCA7Civph47pp5IgPCBub2dvbWFcIDsKK+a1ruiFqyA8IG11a3VtaVwgOwor6bq76KOPIDwgYXNhdXJhXCA7CivnqK7nl5ggPCBzaHV0b3VcIDsKK+mIjemHjSA8IGRvbmp1dVwgOwor5omA5a6aIDwgc2hvdGVpXCA7CivmtpnnrqEgPCBydWlrYW5cIDsKK+aJgOWtmCA8IHNob3pvblwgOwor5rOl6YWUIDwgZGVpc3VpXCA7CivmuJvmrrogPCBnZW5zYWlcIDsKK+a4m+autSA8IGdlbnRhblwgOwor6Y6u5bqnIDwgY2hpbnphXCA7CivlkIjpjbUgPCBhaWthZ2lcIDsKK+eri+aGsiA8IHJpa2tlblwgOwor56S86YeRIDwgcmVpa2luXCA7CivmuoDlubIgPCBtYW5rYW5cIDsKK+emveiIjiA8IGtpbnNoYVwgOwor5ZGK6KutIDwga29rdXl1XCA7CivnqbrmrIQgPCBrdXVyYW5cIDsKK+ayoemgrSA8IGJvdHRvdVwgOwor5Y+l6ZuGIDwga3VzaHV1XCA7CivmiYvloakgPCB0ZXNoaW9cIDsKK+a5v+W4gyA8IHNoaXBwdVwgOwor56uv5bGxIDwgaGF5YW1hXCA7Civnq5zluqcgPCByeXV1emFcIDsKK+mJhOijvSA8IHRlc3NlaVwgOwor5Y+X6aCYIDwganVyeW91XCA7CivmuIfmsLQgPCBrYXNzdWlcIDsKK+eDj+W4veWtkCA8IGVib3NoaVwgOwor5ZCI6YeRIDwgZ291a2luXCA7Civmt7fmt4YgPCBrb25rb3VcIDsKK+WTgeetiSA8IGhpbnRvdVwgOwor5oKq6KiAIDwgYWt1Z2VuXCA7CivllpzmgqYgPCBraWV0c3VcIDsKK+m8k+esmyA8IGtvdGVraVwgOwor6bq76JasIDwgbWF5YWt1XCA7Civnq6/lrZAgPCB0YW5zaGlcIDsKK+iZmuekvCA8IGt5b3JlaVwgOwor6J6N5ZCIIDwgeXV1Z291XCA7CivlkIzpgqYgPCBkb3Vob3VcIDsKK+aHh+abuCA8IGtvbnNob1wgOwor5rm+5bK4IDwgd2FuZ2FuXCA7CivmuoDlsbEgPCBtYW56YW5cIDsKK+aJjeWZuCA8IHNhaXRvblwgOwor56iy54axIDwgaW1vY2hpXCA7Civpjq7lroggPCBjaGluanVcIDsKK+WTgeeoriA8IGhpbnNodVwgOwor6buE6I+KIDwga2lnaWt1XCA7CivmhJrnrZYgPCBndXNha3VcIDsKK+WQhOmDqCA8IGtha3VidVwgOwor56WW54i25q+NIDwgc29mdWJvXCA7Civms6Lot68gPCBuYW1pamlcIDsKK+WPjemdoiA8IGhhbm1lblwgOwor5Y2B5YWt5aScIDwgaXpheW9pXCA7CivmiYDlnKggPCBzaG96YWlcIDsKK+aCquihgCA8IG9rZXRzdVwgOwor5oWo54S2IDwgZ2FpemVuXCA7Civnq7blo7IgPCBrZWliYWlcIDsKK+iXu+iNiSA8IG1vZ3VzYVwgOwor56e7552AIDwgaWNoYWt1XCA7CivnpZ3oqZ4gPCBub3JpdG9cIDsKK+WQjOi8qSA8IGRvdWhhaVwgOwor5oCl6aCIIDwga3l1dXN1XCA7Civnp5jnrZYgPCBoaXNha3VcIDsKK+a2iOejqCA8IHNob3VtYVwgOwor5oaO5rCXIDwgbmlrdWdlXCA7CivlkIzou4ogPCBkb3VzaGFcIDsKK+a5luW/gyA8IGtvc2hpblwgOwor56iu54GrIDwgdGFuZWJpXCA7CivmiYvlk4EgPCB0ZWppbmFcIDsKK+aIkeWutiA8IHdhZ2F5YVwgOwor56m65pu5IDwga3V1c291XCA7Civov4Llm57ot68gPCB1a2Fpcm9cIDsKK+aJjeWQjSA8IHNhaW1laVwgOwor56S+6LOTIDwgc2hhaGluXCA7CivmtrLnirYgPCBla2lqb3VcIDsKK+ilpOikuOWutiA8IGJvcm95YVwgOwor5oG16LSIIDwga2Vpem91XCA7CivnpLzos5sgPCByYWlzYW5cIDsKK+epguazoiA8IGhvbmFtaVwgOwor6Y+k5Yi7IDwgcnVrb2t1XCA7Civph5HpioAgPCBraW5naW5cIDsKK+mKgOe1jCA8IGdpbmtlaVwgOwor5ZKM57a0IDwgd2F0b2ppXCA7CivpnZLntKvomIcgPCBhb2ppc29cIDsKK+e3keWVhOacqOmzpSA8IGFvZ2VyYVwgOwor6YqA57O4IDwgZ2luc2hpXCA7Civmt6HmsLQgPCB0YW5zdWlcIDsKK+epuuaWhyA8IGt1dWJ1blwgOwor5ZCf6KmgIDwgZ2luJydlaVwgOwor6YqA57KJIDwgZ2lucHVuXCA7Civmh6blvLEgPCBkYWpha3VcIDsKK+aBreizgCA8IGt5b3VnYVwgOwor5Y216buEIDwgcmFuJydvdVwgOwor5rqA5aGBIDwgbWFucnVpXCA7Civmganos54gPCBvbnNob3VcIDsKK+awtOm7vSA8IGFtZW5ib1wgOwor5ZOA55ebIDwgYWl0c3V1XCA7Civpuqboir0gPCBiYWt1Z2FcIDsKK+WPsOi7iiA8IGRhaXNoYVwgOwor5ZOB55WqIDwgaGluYmFuXCA7CivmiYvlhpkgPCBzaHVzaGFcIDsKK+azleirliA8IGhvdXJvblwgOwor5omL5YWIIDwgdGVzYWtpXCA7CivmganorpAgPCBvbnNodXVcIDsKK+WOn+mfsyA8IGdlbicnb25cIDsKK+epuuaMuiA8IGt1dXRlaVwgOwor6YiN6KGMIDwgZG9ua291XCA7CivmiYvlgrcgPCB0ZWtpenVcIDsKK+epuuaLsyA8IGt1dWtlblwgOwor6Yed6LevIDwgc2hpbnJvXCA7CivlkIzoqJMgPCBkb3VrdW5cIDsKK+mHkei8qiA8IGthbmF3YVwgOwor5rKi6L66IDwgc2F3YWJlXCA7CivpvIjnlLIgPCBiZWtrb3VcIDsKK+epuuaJiyA8IGthcmF0ZVwgOwor56S86KOFIDwgcmVpc291XCA7CivnqbrmiYAgPCBrdXVzaG9cIDsKK+W/temhmCA8IG5lbmdhblwgOwor5ZCI6KiIIDwgZ291a2VpXCA7CivpurvnuZQgPCBhc2FvcmlcIDsKK+WRque4myA8IGp1YmFrdVwgOwor56m65oimIDwga3V1c2VuXCA7CivmhajmrY4gPCBnYWl0YW5cIDsKK+W/temgrSA8IG5lbnRvdVwgOwor56eR55m9IDwgc2VyaWZ1XCA7Civolq7omoogPCB5YWJ1a2FcIDsKK+a6gOWToSA8IG1hbicnaW5cIDsKK+WPm+i7jSA8IGhhbmd1blwgOwor6buE57KJIDwga2luYWtvXCA7Civpjpblm70gPCBzYWtva3VcIDsKK+aEgeeciSA8IHNodXViaVwgOwor6bq757WyIDwgYXNhaXRvXCA7CivmiY3kurogPCBzYWlqaW5cIDsKK+WQjOihviA8IGRvdWtpblwgOwor56uL5ZywIDwgcml0Y2hpXCA7Civpu5LnqYIgPCBrdXJvYm9cIDsKK+aDhee3kiA8IGpvdWNob1wgOwor5rKD6YeOIDwgeW9rdXlhXCA7CivmhJvnjKsgPCBhaWJ5b3VcIDsKK+mGuOmAoCA8IGpvdXpvdVwgOwor5rm+5Y+jIDwgd2Fua291XCA7CivpioPnnLwgPCBqdXVnYW5cIDsKK+eroOWPpSA8IHNob3VrdVwgOwor5oa25b+1IDwgb2t1bmVuXCA7CivmiKbliY0gPCBzZW56ZW5cIDsKK+m4nui8vyA8IHJhbicneW9cIDsKK+aGp+aGrCA8IGRvdWtlaVwgOwor5ray5rGBIDwgZWtpanV1XCA7CivmhqTmh6MgPCBmdW5tYW5cIDsKK+WPr+iqrSA8IGthZG9rdVwgOwor5oe45Z6CIDwga2Vuc3VpXCA7CivnqI7ms5UgPCB6ZWlob3VcIDsKK+WOs+mHjSA8IGdlbmp1dVwgOwor6YqA55ukIDwgZ2luYmFuXCA7Civlj4vou40gPCB5dXVndW5cIDsKK+WSjOedpiA8IHdhYm9rdVwgOwor6YqA55uDIDwgZ2lucGFpXCA7CivmhqTmhaggPCBmdW5nYWlcIDsKK+mJhOe3miA8IHRlc3NlblwgOwor6by75q+bIDwgaGFuYWdlXCA7Civlj6Poqr8gPCBrdWNob3VcIDsKK+err+WAqiA8IHRhbmdlaVwgOwor6YeR6KuHIDwga2luZGFuXCA7Civlj6ToqLsgPCBrb2NodXVcIDsKK+a1geefsyA8IHNhc3VnYVwgOwor6YmE57KJIDwgdGVwcHVuXCA7CivpuqbnsokgPCBtdWdpa29cIDsKK+a3seaJiyA8IGZ1a2FkZVwgOwor6buS55uuIDwga3Vyb21lXCA7CivmhpDmhqsgPCByZW5iaW5cIDsKK+WOn+mHjiA8IGdlbicneWFcIDsKK+WPl+irviA8IGp1ZGFrdVwgOwor5rCX6ayxIDwga2l1dHN1XCA7CivolqzoiJcgPCB5YWt1aG9cIDsKK+WQjeiRlyA8IG1laWNob1wgOwor6YmE566hIDwgdGVra2FuXCA7Civph43oqIAgPCBqdXVnb25cIDsKK+awt+mcpyA8IGh5b3VtdVwgOwor6YeR6KW0IDwga2lucmFuXCA7CivmsLTpnaIgPCBtaW5vbW9cIDsKK+emjeemjyA8IGthZnVrdVwgOwor5rC36ZuoIDwgaGlzYW1lXCA7CivpiYTnrYsgPCB0ZWtraW5cIDsKK+mFlOmhlCA8IHN1aWdhblwgOwor5ZCI6JGXIDwgZ291Y2hvXCA7Civnpr3njaMgPCBraW5qdXVcIDsKK+awtOmbtyA8IHN1aXJhaVwgOwor5Y+X6Ki7IDwganVjaHV1XCA7CivmsLTpm6MgPCBzdWluYW5cIDsKK+WQm+iHqCA8IGt1bnJpblwgOwor5Y+X6KiXIDwganV0YWt1XCA7CivmiKbkubEgPCBzZW5yYW5cIDsKK+S4jeWFt+WQiCA8IGZ1Z3VhaVwgOwor5ZWP5bGLIDwgdG9uJyd5YVwgOwor6YmE56qTIDwgdGVzc291XCA7CivmhafmlY8gPCBrZWliaW5cIDsKK+ibh+W6pyA8IGhlYml6YVwgOwor5rmv5YWDIDwgeXVtb3RvXCA7CivpvLvmooEgPCBiaXJ5b3VcIDsKK+WPjeirliA8IGhhbnJvblwgOwor5Zac5YqHIDwga2lnZWtpXCA7CivmhoLmhqQgPCB5dXVmdW5cIDsKK+aEn+a2mSA8IGthbnJ1aVwgOwor56m05bGFIDwga2Vra3lvXCA7Civnq4vlhqwgPCByaXR0b3VcIDsKK+aGguaFriA8IHl1dXJ5b1wgOwor5ZKM54usIDwgd2Fkb2t1XCA7Civph5Honb8gPCBraW5iYWVcIDsKK+awtOmWgCA8IHN1aW1vblwgOwor5ZaE5ZOJIDwgemVuemFpXCA7CivljZjpn7MgPCB0YW4nJ29uXCA7CivpiZvnmb0gPCBlbnBha3VcIDsKK+WPguisgCA8IHNhbmJvdVwgOwor5oaC5oK2IDwgeXV1bW9uXCA7CivpvLvmnKggPCBoYW5hZ2lcIDsKK+WSjOeJmyA8IHdhZ3l1dVwgOwor6JaE6JGJIDwgdXN1eW91XCA7CivllJDmiLggPCBrYXJhZG9cIDsKK+WQiOiHtCA8IGdhdGNoaVwgOwor5Y2X6Z2iIDwgbmFubWVuXCA7CivmtbfmtZwgPCBrYWloaW5cIDsKK+awkemiqCA8IG1pbnB1dVwgOwor5oKq56iOIDwgYWt1emVpXCA7CivlkLnnrqEgPCBzdWlrYW5cIDsKK+mJhOegsiA8IHRlcHBvdVwgOwor5ZCE6IeqIDwga2FrdWppXCA7CivpurvnlrkgPCBtYXNoaW5cIDsKK+WWp+S8nSA8IGtlbmRlblwgOwor6JaE6Iy2IDwgdXN1Y2hhXCA7CivljZfpmoUgPCBuYW5ndXVcIDsKK+aCquelniA8IGFrdWppblwgOwor56uL5L2TIDwgcml0dGFpXCA7CivljYrpn7MgPCBoYW4nJ29uXCA7CivljZfpmZAgPCBuYW5nZW5cIDsKK+eqgeWgpCA8IHRvdHRlaVwgOwor5Zaq5LitIDwgbW9jaHV1XCA7CivmuJvloakgPCBnZW4nJ2VuXCA7CivmuKXlnLAgPCBha3VjaGlcIDsKK+a3oeW9qSA8IHRhbnNhaVwgOwor5rW35rC0IDwga2Fpc3VpXCA7Civmta7mtYEgPCBmdXJ5dXVcIDsKK+mHkeiUtSA8IGtpbnpvdVwgOwor5oSb5qyyIDwgYWl5b2t1XCA7CivljrPoq4cgPCBnZW5kYW5cIDsKK+iWhOiJsiA8IHVzdWlyb1wgOwor56Wt56S8IDwgc2FpcmVpXCA7Civnn6XmgbXmra8gPCBjaGllYmFcIDsKK+iZmuaguSA8IGt5b2tvblwgOwor5b6u6ZyHIDwgYmlzaGluXCA7CivphanphYogPCBtZWl0ZWlcIDsKK+WQjOe9qiA8IGRvdXphaVwgOwor5rWu5rKIIDwgZnVjaGluXCA7CivmsLTpioAgPCBzdWlnaW5cIDsKK+W+oemhjCA8IGd5b2RhaVwgOwor5ZOA5qW9IDwgYWlyYWt1XCA7Civnqbrln58gPCBrdXVpa2lcIDsKK+mKgOa8oiA8IGdpbmthblwgOwor5rex5bGxIDwgbWl5YW1hXCA7Civph47okpwgPCBub2JpcnVcIDsKK+a0u+eJiCA8IGthcHBhblwgOwor5rCX6ZW3IDwga2luYWdhXCA7CivnqbrlnLAgPCBha2ljaGlcIDsKK+aEm+alvSA8IGFpZ3lvdVwgOwor6YeO6I+KIDwgbm9naWt1XCA7CivmsJHplpMgPCBtaW5rYW5cIDsKK+aCquebuCA8IGFrdXNvdVwgOwor5b6h6ZyKIDwgbWl0YW1hXCA7Civms5XntrIgPCBob3Vtb3VcIDsKK+aCsueXmyA8IGhpdHN1dVwgOwor6bqm55SwIDwgbXVnaXRhXCA7CivmsLTpg7cgPCBzdWlnb3VcIDsKK+WQiOe5iiA8IGdvdXNlblwgOwor5LiN6LW36Ki0IDwgZnVraXNvXCA7CivmhaLmgKcgPCBtYW5zZWlcIDsKK+WQkeexsyA8IGtvdWJlaVwgOwor6YqA5rOlIDwgZ2luZGVpXCA7CivomZrmlbAgPCBreW9zdXVcIDsKK+aCqueWqyA8IGFrdWVraVwgOwor5rC06L66IDwgbWl6dWJlXCA7CivnqJ/mgKcgPCBoaW5zZWlcIDsKK+mNm+WGtiA8IHRhbicneWFcIDsKK+aCqueUqCA8IGFrdXlvdVwgOwor5oSJ5qW9IDwgeXVyYWt1XCA7CivnhKHljLvmnZEgPCBtdWlzb25cIDsKK+awtOi7iiA8IHN1aXNoYVwgOwor6JmO5paRIDwgdG9yYWZ1XCA7Civlvozpm6MgPCBrb3VuYW5cIDsKK+epuuWQjSA8IGt1dW1laVwgOwor6Yym5ZywIDwga2luY2hpXCA7CivpvLvmga8gPCBiaXNva3VcIDsKK+aCqueQgyA8IGFra3l1dVwgOwor5ZCI566XIDwgZ2Fzc2FuXCA7CivmtbfmnIggPCBrdXJhZ2VcIDsKK+WUkOWtkCA8IGthcmFrb1wgOwor5rWB5rS+IDwgcnl1dWhhXCA7CivoloTntJcgPCBoYWt1c2FcIDsKK+a3t+WcqCA8IGtvbnphaVwgOwor5ZCM56qTIDwgZG91c291XCA7Civpipjmnb8gPCBtZWliYW5cIDsKK+ayuee1tSA8IGFidXJhZVwgOwor5Y2K6YeRIDwgaGFua2luXCA7Civmr5vpoK0gPCBtb3V0b3VcIDsKK+WQjOeoriA8IGRvdXNodVwgOwor6YeN572qIDwganV1emFpXCA7CivphaLosZogPCBzdWJ1dGFcIDsKK+WNg+mIniA8IHNlbmtpblwgOwor56m65YmNIDwga3V1emVuXCA7Civlv5zoq74gPCBvdWRha3VcIDsKK+a4m+WFjSA8IGdlbm1lblwgOwor5rCR6YG4IDwgbWluc2VuXCA7CivnqbrlhrcgPCBrdXVyZWlcIDsKK+aDmuawlyA8IG5vcm9rZVwgOwor5ZKM5qW9IDwgd2FyYWt1XCA7CivmgKrohZUgPCBrYWl3YW5cIDsKK+WQiOelrSA8IGdvdXNhaVwgOwor5ZWG5YuZIDwgc2hvdW11XCA7CivmgqrnhrEgPCBhbmV0c3VcIDsKK+m7hOawtCA8IGtpbWl6dVwgOwor5Y+j57W1IDwga3VjaGllXCA7CivlvqHphYwgPCBvc2hha3VcIDsKK+awl+i7vSA8IGtpZ2FydVwgOwor5p6c5qi55ZySIDwga2FqdWVuXCA7CivmtbfmkI0gPCBrYWlzb25cIDsKK+aFruWkliA8IHJ5b2dhaVwgOwor6YWS6LGqIDwgc2h1Z291XCA7CivljYrovKogPCBoYW5yaW5cIDsKK+mHkeeyiSA8IGtpbnB1blwgOwor5b2T6aeFIDwgdG91ZWtpXCA7CivlvqHpgYogPCBneW95dXVcIDsKK+azleebuCA8IGhvc3NvdVwgOwor5rex5ZGzIDwgZnVrYW1pXCA7Civljp/okZcgPCBnZW5jaG9cIDsKK+m6pua5ryA8IG11Z2l5dVwgOwor5ZCM55ufIDwgZG91bWVpXCA7CivmtKrmsLQgPCBrb3V6dWlcIDsKK+WTgOaEgSA8IGFpc2h1dVwgOwor5ZCJ55u4IDwga2lzc291XCA7CivnqbrkvLwgPCBzb3JhbmlcIDsKK+WSjOacjSA8IHdhZnVrdVwgOwor5b6h6Lui5amGIDwgb3RlbmJhXCA7CivolqznkIYgPCB5YWt1cmlcIDsKK+W+jOmHkSA8IGF0b2tpblwgOwor6bm1542yIDwgcm9rYWt1XCA7Civlkb3moLkgPCBtZWlrb25cIDsKK+mMoOWJjSA8IGpvdW1hZVwgOwor5ZCN55SjIDwgbWVpc2FuXCA7CivmhJvmga8gPCBhaXNva3VcIDsKK+azpeeKtiA8IGRlaWpvdVwgOwor5b+F6KaLIDwgaGlra2VuXCA7Civlj43nsbMgPCBoYW5iZWlcIDsKK+egtOmPoSA8IGhha3lvdVwgOwor6YeN56iOIDwganV1emVpXCA7CivphaLom7ggPCBzdWRha29cIDsKK+WPoueloCA8IGhva29yYVwgOwor5b6T6LuNIDwganV1Z3VuXCA7Civmr5vpiI4gPCBrZWJhcmlcIDsKK+mDqOmVtyA8IGJ1Y2hvdVwgOwor5oOo5pWXIDwgemFucGFpXCA7Civmgqrms5UgPCBha3Vob3VcIDsKK+WPs+ebriA8IG1pZ2ltZVwgOwor5b+F6KGwIDwgaGlzc3VpXCA7Civmra/pu5IgPCBoYWd1cm9cIDsKK+awkeirliA8IG1pbnJvblwgOwor5Y+C57GgIDwgc2Fucm91XCA7CivmgqrmsLQgPCBha3VzdWlcIDsKK+aEieaCpiA8IHl1ZXRzdVwgOwor6Yed55uuIDwgaGFyaW1lXCA7CivljJfpg6ggPCBob2t1YnVcIDsKK+aCquawlyA8IHdhcnVnaVwgOwor55+i6bGIIDwgeWF0YXJhXCA7CivnpI7nn7MgPCBzb3Nla2lcIDsKK+a1tOW+jCA8IHlva3Vnb1wgOwor5Y2T6KaLIDwgdGFra2VuXCA7Civlkb3mlbAgPCBtZWlzdXVcIDsKK+aui+mquCA8IHphbmdhaVwgOwor6aKo5ZGC5bGLIDwgZnVyb3lhXCA7Civms6Xngq0gPCBkZWl0YW5cIDsKK+WQjeeKtiA8IG1laWpvdVwgOwor6JGb6aShIDwga3V6dWFuXCA7CivmsrznlLAgPCBudW1hZGFcIDsKK+elreauvyA8IHNhaWRlblwgOwor56Cy6YeRIDwgaG91a2luXCA7Civlj6TnnYAgPCBmdXJ1Z2lcIDsKK+mKgOaJhyA8IGdpbnNlblwgOwor6YeN55+zIDwgb21vc2hpXCA7CivlvLfpn7MgPCBreW91b25cIDsKK+axmuiBtyA8IG9zaG9rdVwgOwor5re35LmxIDwga29ucmFuXCA7Civph5Hnm64gPCBrYW5lbWVcIDsKK+aEj+WRs+irliA8IGltaXJvblwgOwor56CU6ZG9IDwga2Vuc2FuXCA7CivlvLHpn7MgPCB5b3dhbmVcIDsKK+aui+mjryA8IHphbnBhblwgOwor5rC06JGsIDwgc3Vpc291XCA7CivljYroo4EgPCBoYW5zYWlcIDsKK+WUr+S4gCA8IHl1aXRzdVwgOwor54Sh6YKq5rCXIDwgbXVqYWtpXCA7CivlvqHoqJcgPCBnb3Rha3VcIDsKK+W+ruihtyA8IGJpY2h1dVwgOwor5Y2K6KG/IDwgaGFuZXJpXCA7CivomZrlpoQgPCBreW9tb3VcIDsKK+axuueulyA8IGtlc3NhblwgOwor5YyW6LqrIDwga2VzaGluXCA7CivmgaznhLYgPCB0ZW56ZW5cIDsKK+iWrOa5ryA8IHlha3V5dVwgOwor5rG956ybIDwga2l0ZWtpXCA7CivmtrzlkbMgPCByeW91bWlcIDsKK+awtOiPnCA8IG1penVuYVwgOwor5rW35bK4IDwga2FpZ2FuXCA7Civmgqrmpa0gPCBha3Vnb3VcIDsKK+mJhOadvyA8IHRlcHBhblwgOwor6JO06I+cIDwganVuc2FpXCA7CivlkKvmsLQgPCBnYW5zdWlcIDsKK+W9sei6qyA8IGthZ2VtaVwgOwor5q+b6LazIDwga2Vhc2hpXCA7Civmra/pq4QgPCBzaGl6dWlcIDsKK+iQvemmrCA8IHJha3ViYVwgOwor5Y+M55y8IDwgc291Z2FuXCA7Civlj43nnIEgPCBoYW5zZWlcIDsKK+azqOayuSA8IGNodXV5dVwgOwor6YO36LuNIDwgZ291Z3VuXCA7CivmsojnoIIgPCBjaGluc2FcIDsKK+WLp+mKgCA8IGthbmdpblwgOwor5Yy76KGTIDwgaWp1dHN1XCA7CivpoqjlkYLloLQgPCBmdXJvYmFcIDsKK+aEn+WlriA8IGthbnB1blwgOwor5raZ5ZqiIDwgcnVpbm91XCA7CivljbXog54gPCByYW5ob3VcIDsKK+mHjueQgyA8IHlha3l1dVwgOwor5ZGJ5pyNIDwgZ29mdWt1XCA7CivnpZ7mpb0gPCBrYWd1cmFcIDsKK+W/oOe+qSA8IGNodXVnaVwgOwor5rC06IWrIDwgc3Vpc2h1XCA7Civol43mn5MgPCBhaXpvbWVcIDsKK+aCquabuCA8IGFrdXNob1wgOwor5rSL5pysIDwgeW91aG9uXCA7CivlkJvmsJEgPCBrdW5taW5cIDsKK+iRiemZsCA8IGhha2FnZVwgOwor6Zi/6JiH5bGxIDwgYXNvc2FuXCA7CivmsrjngrkgPCBmdXR0ZW5cIDsKK+aBrOa3oSA8IHRlbnRhblwgOwor6buZ5bqnIDwgbW9rdXphXCA7CivmtrLliaQgPCBla2l6YWlcIDsKK+auv+i7jSA8IGRlbmd1blwgOwor5byK6aKoIDwgaGVpZnV1XCA7Civph5HniYwgPCBraW5wYWlcIDsKK+mKheWxsSA8IGRvdXphblwgOwor5rW35aSWIDwga2FpZ2FpXCA7Civpg7Xosq8gPCB5dXVjaG9cIDsKK+mHjueJmyA8IHlhZ3l1dVwgOwor5rS75oCnIDwga2Fzc2VpXCA7CivnpL7mrr8gPCBzaGFkZW5cIDsKK+mHjeeJiCA8IGp1dWhhblwgOwor5oKq5paHIDwgYWt1YnVuXCA7CivlvqHlrrboirggPCBvaWVnZWlcIDsKK+mFjeiGsyA8IGhhaXplblwgOwor6YqA5bGxIDwgZ2luemFuXCA7Civlv43ogJAgPCBuaW50YWlcIDsKK+aCquaUvyA8IGFrdXNlaVwgOwor56Wt5paHIDwgc2FpbW9uXCA7CivlkITmtL4gPCBrYWt1aGFcIDsKK+mBuumqqCA8IGlrb3RzdVwgOwor6buS5be+IDwga3Vyb2dvXCA7CivmganmsqIgPCBvbnRha3VcIDsKK+a1t+WfnyA8IGthaWlraVwgOwor5oSb5Zu9IDwgYWlrb2t1XCA7CivpiYTmi7MgPCB0ZWtrZW5cIDsKK+WQjeauiyA8IG5hZ29yaVwgOwor6Jma5ZCNIDwga3lvbWVpXCA7CivlvL7pgZMgPCBkYW5kb3VcIDsKK+awkeiKuCA8IG1pbmdlaVwgOwor5ZO65LmzIDwgaG9ueXV1XCA7Civlj7Dmub4gPCB0YWl3YW5cIDsKK+awuOe2miA8IGVpem9rdVwgOwor5q2j6Z2iIDwgbWF0b21vXCA7Civph43ngbAgPCBqdXVrYWlcIDsKK+WNsee1tSA8IGFidW5hZVwgOwor5oGl5q+bIDwgY2hpbW91XCA7CivliqnplbcgPCBqb2Nob3VcIDsKK+a2suS9kyA8IGVraXRhaVwgOwor6YiN5qC5IDwgZG9ua29uXCA7Civmg4Xlv7UgPCBqb3VuZW5cIDsKK+aui+mHkSA8IHphbmtpblwgOwor5q+s6Je7IDwgbWFyaW1vXCA7Civolqvmn5MgPCBrdW5zZW5cIDsKK+avm+ifuSA8IGtlZ2FuaVwgOwor5ZOB5ZCNIDwgaGlubWVpXCA7CivmgqrmipUgPCBha3V0b3VcIDsKK+WOn+ebpCA8IGdlbmJhblwgOwor5YuV6LyqIDwgZG91cmluXCA7CivmgqrmiY0gPCBha3VzYWlcIDsKK+ayu+awtCA8IGNoaXN1aVwgOwor6buS5a2QIDwgaG9rdXJvXCA7Civli4fpgoEgPCB5dXVtYWlcIDsKK+aCsuaEgSA8IGhpc2h1dVwgOwor5q6K6YGHIDwgc2h1Z3V1XCA7CivmgqrmhYsgPCBha3V0YWlcIDsKK+WPpOa1gSA8IGtvcnl1dVwgOwor5Y2B6IO9IDwganV1bm91XCA7CivpioDloYogPCBnaW5rYWlcIDsKK+iXu+WxkSA8IG1va3V6dVwgOwor5ZCM5qC5IDwgZG91a29uXCA7Civpu5nlpZEgPCBtb2trZWlcIDsKK+mHjea2siA8IGp1dWVraVwgOwor5q+S6Ju+IDwgZG9rdWdhXCA7Civph5Hms6UgPCBrb25kZWlcIDsKK+axoOeVlCA8IGNoaWhhblwgOwor5ZCM5p2RIDwgZG91c29uXCA7CivlkI3mnK0gPCBuYWZ1ZGFcIDsKK+WNmOe0lCA8IHRhbmp1blwgOwor5aSn6YOo5bGLIDwgb29iZXlhXCA7CivomIrlpaUgPCB1bicnbm91XCA7Civlv6vnnKAgPCBrYWltaW5cIDsKK+aCquW/tSA8IGFrdW5lblwgOwor5ZCM5pyLIDwgZG91Ym91XCA7CivlkIjmnb8gPCBnb3ViYW5cIDsKK+mHkeawlyA8IGthbmFrZVwgOwor56eY5Yy/IDwgaGl0b2t1XCA7Civnpo/lr78gPCBmdWt1anVcIDsKK+WQiOacrCA8IGdhcHBvblwgOwor6YGt6ZujIDwgc291bmFuXCA7Civph43msLQgPCBqdXVzdWlcIDsKK+awtOemvSA8IHN1aWtpblwgOwor6Jma5LydIDwga3lvZGVuXCA7CivljZfnsbMgPCBuYW5iZWlcIDsKK+m2j+e+pCA8IGtlaWd1blwgOwor5aCV6IOO5Yy7IDwgZGF0YWlpXCA7CivljZjnsKEgPCB0YW5rYW5cIDsKK+aCquW8iiA8IGFrdWhlaVwgOwor5b6p57iBIDwgZnVrdWVuXCA7Civpu73li4kgPCBiaW5iZW5cIDsKK+emheWwvCA8IHplbicnbmlcIDsKK+WQjOaWrSA8IGRvdWRhblwgOwor5Y+W5rC0IDwgc2h1c3VpXCA7CivmtYTln58gPCBqb3Vpa2lcIDsKK+mFkueojiA8IHNodXplaVwgOwor5ZCM5paHIDwgZG91YnVuXCA7Civli53oqLQgPCBzaG91c29cIDsKK+WQjOaVsCA8IGRvdXN1dVwgOwor5b6T6ICFIDwganV1c2hhXCA7CivlkIjmlrkgPCBhaWthdGFcIDsKK+WOn+eJiCA8IGdlbnBhblwgOwor6JaE5p2/IDwgdXN1aXRhXCA7CivljZfnq68gPCBuYW50YW5cIDsKK+W8t+irhyA8IGdvdWRhblwgOwor56eA5Y+lIDwgc2h1dWt1XCA7Civlj6Tmpb0gPCBrb2dha3VcIDsKK+mIjeaJjSA8IGRvbnNhaVwgOwor6Je75aGpIDwgbW9zaGlvXCA7Civlj43mr5sgPCBoYW5tb3VcIDsKK+awtOedgCA8IG1penVnaVwgOwor56KR55+zIDwgaGlzZWtpXCA7CivliqDpgJ8gPCBrYXNva3VcIDsKK+axmueJqSA8IG9idXRzdVwgOwor5Y+w5pysIDwgZGFpaG9uXCA7Civpto/ns54gPCBrZWlmdW5cIDsKK+awtOebpCA8IHN1aWJhblwgOwor5Y2D56+HIDwgc2VucGVuXCA7CivpiI3mhJ8gPCBkb25rYW5cIDsKK+avm+iEmyA8IGtlenVuZVwgOwor6bOz6LymIDwgaG91cmVuXCA7CivkuI3nlKjmhI8gPCBmdXlvdWlcIDsKK+S5heaFiOebriA8IGt1amltZVwgOwor5bu66YCgIDwga2Vuem91XCA7CivliLrprZogPCB0b2dldW9cIDsKK+mDqOiQvSA8IGJ1cmFrdVwgOwor5Y+35pWwIDwgZ291c3V1XCA7CivpioPliaMgPCBqdXVrZW5cIDsKK+WPguauvyA8IHNhbmRlblwgOwor5rC055axIDwgc3VpaG91XCA7Civlj7PmlocgPCB5dXVidW5cIDsKK+WPpOacqCA8IGtvYm9rdVwgOwor5ZCb5oGpIDwga3VuJydvblwgOwor5aSn5b6h5LujIDwgb29taXlvXCA7Civlvq7npoQgPCBiaXJva3VcIDsKK+eigeefsyA8IGdvaXNoaVwgOwor5rC055SwIDwgc3VpZGVuXCA7CivlupXprZogPCBzb2tvdW9cIDsKK+enmOS4rSA8IGhpY2h1dVwgOwor5q666I+MIDwgc2Fra2luXCA7Civpipjku5kgPCBtZWlzZW5cIDsKK+W8seihjCA8IGpha2tvdVwgOwor5ZG85ZCNIDwgeW9iaW5hXCA7CivmsbrmsLQgPCBrZXNzdWlcIDsKK+WQjOaGgiA8IGRvdXl1dVwgOwor6YqF5YOPIDwgZG91em91XCA7CivmrZPov44gPCBrYW5nZWlcIDsKK+mJhOWhlCA8IHRldHRvdVwgOwor5ZCM5oSfIDwgZG91a2FuXCA7CivmtarkurogPCByb3VuaW5cIDsKK+WJlOmZpCA8IHRla2lqb1wgOwor5rKh5pu4IDwgYm9zc2hvXCA7Civpt7nmtL4gPCB0YWthaGFcIDsKK+WJjembuyA8IHplbmRlblwgOwor5oOz5YOPIDwgc291em91XCA7Civlj5bmnZAgPCBzaHV6YWlcIDsKK+iYreS6uiA8IHJhbmppblwgOwor6I+M6aGeIDwga2lucnVpXCA7CivnpZ7lrq4gPCBqaW5ndXVcIDsKK+WNteeKtiA8IHJhbmpvdVwgOwor5oKq5aSpIDwgYWt1dGVuXCA7Civpga3pgYcgPCBzb3VndXVcIDsKK+WJiumZpCA8IHNha3Vqb1wgOwor5Y2K552hIDwgaGFuc3VpXCA7CivlkL7lprkgPCB3YWdpbW9cIDsKK+WPs+aKmCA8IHVzZXRzdVwgOwor5Y6f5rK5IDwgZ2VuJyd5dVwgOwor5q2z6KiIIDwgc2Fpa2VpXCA7CivmgKfmoLkgPCBzaG91bmVcIDsKK+iRm+iXpCA8IGthdHRvdVwgOwor5oKq5aC0IDwgd2FydWJhXCA7Civlj7PmiYsgPCBtaWdpdGVcIDsKK+WPieacqCA8IG1hdGFnaVwgOwor5q2p6Kq/IDwgaG9jaG91XCA7Civljp/msJEgPCBnZW5taW5cIDsKK+WQjeW6lyA8IG1laXRlblwgOwor5Yi46Z2iIDwga2VubWVuXCA7CivlubLpsYggPCBoaWRhcmFcIDsKK+WQiOW8gSA8IGdvdWJlblwgOwor5byB6KuWIDwgYmVucm9uXCA7CivmtYHlhIAgPCByeXV1Z2lcIDsKK+awtOeFriA8IG1penVuaVwgOwor5bqn6ZW3IDwgemFjaG91XCA7Civmr5LntKAgPCBkb2t1c29cIDsKK+W6lemdoiA8IHRlaW1lblwgOwor5b28562JIDwga2FyZXJhXCA7Civljpjmr5sgPCByaW5tb3VcIDsKK+WOu+adpSA8IGt5b3JhaVwgOwor5byB6KejIDwgYmVua2FpXCA7CivpgYvph50gPCB1bnNoaW5cIDsKK+WPpOaJiyA8IGZ1cnV0ZVwgOwor5q+b562LIDwga2VzdWppXCA7CivnpL7lsYsgPCBzaGFva3VcIDsKK+WPr+aDnCA8IGF0dGFyYVwgOwor6YGK6YeRIDwgeXV1a2luXCA7CivlkJvlrZAgPCBrdW5zaGlcIDsKK+WIqememCA8IHJpemF5YVwgOwor5oCo5pW1IDwgb250ZWtpXCA7CivmnInmhI/nvqkgPCB5dXVpZ2lcIDsKK+mHjuiWlOiWhyA8IG5vYmFyYVwgOwor5oGL5oSbIDwgcmVuJydhaVwgOwor5qyg6YWNIDwga2VwcGFpXCA7Civlkb3ku6QgPCBtZWlyZWlcIDsKK+WQjeWxsSA8IG1laXphblwgOwor55yf6bSoIDwgbWFnYW1vXCA7CivpgKPplqIgPCByZW5rYW5cIDsKK+axgOa4miA8IHRlaXNob1wgOwor5b6h55uu6KaL5b6XIDwgb21lbWllXCA7CivlkIzlsYUgPCBkb3VreW9cIDsKK+mBhemFjSA8IGNoaWhhaVwgOwor5qKF6Zuo5pyfIDwgYmFpdWtpXCA7CivmgbXlrZggPCBrZWl6b25cIDsKK+WQjOWwgSA8IGRvdWZ1dVwgOwor5Y+w5b2iIDwgZGFpa2VpXCA7CivmgYvmgYsgPCByZW5yZW5cIDsKK+mBoOi2syA8IGVuc29rdVwgOwor5YmN6YeRIDwgbWFla2luXCA7CivliaXouqsgPCBtdWtpbWlcIDsKK+awtOa6kCA8IHN1aWdlblwgOwor6YCB6aKoIDwgc291ZnV1XCA7CivpgbroqIAgPCB5dWlnb25cIDsKK+aBr+WtkCA8IG11c3Vrb1wgOwor5oKq5ZCNIDwgYWt1bWVpXCA7Civljp/moYggPCBnZW4nJ2FuXCA7CivnpZblm70gPCBzb2tva3VcIDsKK+iUteabuCA8IHpvdXNob1wgOwor5oKq5Y+LIDwgYWt1eXV1XCA7Civlub3pnIogPCB5dXVyZWlcIDsKK+aCsuWKhyA8IGhpZ2VraVwgOwor5bqn6YeRIDwgemFnYW5lXCA7Civlj43miKYgPCBoYW5zZW5cIDsKK+W6pumHjyA8IGRvcnlvdVwgOwor6YeO5b+DIDwgeWFzaGluXCA7Civli4PoiIggPCBib2trb3VcIDsKK+WMluefsyA8IGthc2VraVwgOwor56S+5aSWIDwgc2hhZ2FpXCA7Civlj6Tlu58gPCBrb2J5b3VcIDsKK+W6g+mWkyA8IGhpcm9tYVwgOwor5rC35rKzIDwgaHlvdWdhXCA7CivlubPpnaIgPCBoZWltZW5cIDsKK+WQu+WQiCA8IGZ1bmdvdVwgOwor5YiG6aGeIDwgYnVucnVpXCA7CivlvoznlJ8gPCBnb3Nob3VcIDsKK+W/q+alvSA8IGtlcmFrdVwgOwor6Jas5ZySIDwgeWFrdWVuXCA7Civmga/lpbMgPCBzb2t1am9cIDsKK+azleWkliA8IGhvdWdhaVwgOwor6YmE5YKYIDwgdGVzc2FuXCA7Civlub3plokgPCB5dXVoZWlcIDsKK+W/jeazlSA8IG5pbnBvdVwgOwor5ZCM5aSnIDwgZG91ZGFpXCA7Civlvbnnm64gPCB5YWt1bWVcIDsKK+iRl+iAhSA8IGNob3NoYVwgOwor5ZCN5aOwIDwgbWVpc2VpXCA7Civlj6Tlt6MgPCBmdXJ1c3VcIDsKK+awtOawlyA8IG1penVrZVwgOwor5bm06ZmQIDwgbmVuZ2VuXCA7CivmsqLlurUgPCB0YWt1YW5cIDsKK+avkuefoiA8IGRva3V5YVwgOwor5ZCI5aWPIDwgZ2Fzc291XCA7Civmr5vnmq4gPCBrZWdhd2FcIDsKK+WNl+a6nyA8IG5hbm1laVwgOwor55uu6by7IDwgbWVoYW5hXCA7Civpg73nnaMgPCB0b3Rva3VcIDsKK+WNl+a6gCA8IG5hbm1hblwgOwor6YGL6LODIDwgdW5jaGluXCA7Civljp/mlocgPCBnZW5idW5cIDsKK+m6puS+oSA8IGJha3VrYVwgOwor56aB5LukIDwga2lucmVpXCA7Civol6nkuLsgPCBoYW5zaHVcIDsKK+efpeiCsiA8IGNoaWlrdVwgOwor5Yq56IO9IDwga291bm91XCA7CivliIbpmpsgPCBidW56YWlcIDsKK+mBgei1sCA8IHRvbnNvdVwgOwor5ZCJ5aCxIDwga2lwcG91XCA7CivmgKDmhaIgPCB0YWltYW5cIDsKK+mAoOmFkiA8IHpvdXNodVwgOwor5YiG6ZmiIDwgYnVuJydpblwgOwor5YiG6ZmQIDwgYnVuZ2VuXCA7CivmgJ3mha4gPCBzaGlyeW9cIDsKK+WHsemiqCA8IGdhaWZ1dVwgOwor5oCo5b+1IDwgb24nJ25lblwgOwor5YyW55SfIDwga2VzaG91XCA7Civph5HlsbEgPCBraW56YW5cIDsKK+aCn+WFpSA8IGdvbnl1dVwgOwor6YC46LazIDwgaXNzb2t1XCA7CivnoKXnn7MgPCB0b2lzaGlcIDsKK+WPpOWutiA8IGZ1cnVpZVwgOwor6Jas5ZGzIDwgeWFrdW1pXCA7CivnnLzpj6EgPCBtZWdhbmVcIDsKK+ecn+mdkiA8IG1hc3Nhb1wgOwor5Y2K5ribIDwgaGFuZ2VuXCA7Civlj7flpJYgPCBnb3VnYWlcIDsKK+mBlOimsyA8IHRha2thblwgOwor5Ye66ZqbIDwgZGVnaXdhXCA7Civlj47lt64gPCBzaHV1c2FcIDsKK+axuuaEjyA8IGtldHN1aVwgOwor5bqV6L66IDwgdGVpaGVuXCA7CivlkJvlkb0gPCBrdW5tZWlcIDsKK+mHjuWuvyA8IG5vanVrdVwgOwor55+t57eoIDwgdGFucGVuXCA7CivokZvnsokgPCBrdXp1a29cIDsKK+mAmumBiyA8IHRzdXV1blwgOwor6JaE5aGpIDwgdXN1amlvXCA7CivmgqrkurogPCBha3VuaW5cIDsKK+mAo+i8iSA8IHJlbnNhaVwgOwor5Yil6YK4IDwgYmV0dGVpXCA7Civms6Llj4ogPCBoYWt5dXVcIDsKK+WOn+aLoCA8IGdlbmt5b1wgOwor5byp57SaIDwgZG9reXV1XCA7Civmr5vnjokgPCBrZWRhbWFcIDsKK+mHjOWtkCA8IHNhdG9nb1wgOwor56S+5ZG9IDwgc2hhbWVpXCA7Civmra/ogokgPCBoYW5pa3VcIDsKK+iNt+mejSA8IG5pZ3VyYVwgOwor55+z57KJIDwgaXNoaWtvXCA7CivmgqnkubEgPCBub3VyYW5cIDsKK+WOhOaXpSA8IHlha3ViaVwgOwor5Y2X5qynIDwgbmFuJydvdVwgOwor6ICz6by756eRIDwgamliaWthXCA7CivpgYropqcgPCB5dXVyYW5cIDsKK+mBruiUvSA8IHNoYWhlaVwgOwor6Jas5Yq5IDwgeWFra291XCA7CivlkI3lk4EgPCBtZWloaW5cIDsKK+ekvuWPiyA8IHNoYXl1dVwgOwor6YOh55yMIDwgZ3Vua2VuXCA7Civph43lqZogPCBqdXVrb25cIDsKK+mAgemHkSA8IHNvdWtpblwgOwor5Y6a5omLIDwgYXRzdWRlXCA7CivluZXplpMgPCBtYWt1YWlcIDsKK+W5tOmHkSA8IG5lbmtpblwgOwor5Y+N5bCEIDwgaGFuc2hhXCA7Civlj43lr74gPCBoYW50YWlcIDsKK+WQjeWQnyA8IG1laWdpblwgOwor55uu6auYIDwgbWVkYWthXCA7Civov5Tpm7sgPCBoZW5kZW5cIDsKK+mIjeWIgCA8IGRvbnRvdVwgOwor56C0542EIDwgaGFnb2t1XCA7CivmsrnlnKcgPCB5dWF0c3VcIDsKK+WNr+aciCA8IHVkenVraVwgOwor5rC05pyoIDwgbWl6dWtpXCA7CivnoILnpKsgPCBzYXJla2lcIDsKK+aAkuW8tSA8IGRvY2hvdVwgOwor55S75p625bqnIDwgZ2FrYXphXCA7CivliIbpioUgPCBmdW5kb3VcIDsKK+S4jeWuieawlyA8IGZ1YW5nZVwgOwor6YC46KmxIDwgaXRzdXdhXCA7CivojYnprZogPCBzb3VneW9cIDsKK+WNs+aZgiA8IHNva3VqaVwgOwor5byB6ICFIDwgYmVuc2hhXCA7CivpgJrot68gPCB0c3V1cm9cIDsKK+iTruaguSA8IHJlbmtvblwgOwor5ZCI5ZCMIDwgZ291ZG91XCA7Civov5HpmqMgPCBraW5yaW5cIDsKK+Wkp+WHuuadpSA8IG9vZGVraVwgOwor6YeN5aSJIDwganV1aGVuXCA7CivpoqjpgqrmsJcgPCBrYXpla2VcIDsKK+iNkummrCA8IGFyYXVtYVwgOwor5b+r5oyZIDwga2Fpa3lvXCA7CivliIbph44gPCBidW4nJ3lhXCA7CivphZLmna8gPCBzaHVoYWlcIDsKK+WQjOWLoiA8IGRvdXplaVwgOwor5rCX5qW9IDwga2lyYWt1XCA7CivmsJHmqKkgPCBtaW5rZW5cIDsKK+WIg+mHnSA8IGhhYmFyaVwgOwor5q2m5Zmo5bqrIDwgYnVraWtvXCA7Civlj4Llrq4gPCBzYW5ndXVcIDsKK+WIhumFjSA8IGJ1bnBhaVwgOwor6YG66ISxIDwgaWRhdHN1XCA7Civov7AgPCBqdXRzdVwgOwor5b+FIDwgaGl0c3VcIDsKK+i+uyA8IHRzdWppXCA7CivlvrkgPCB0ZXRzdVwgOwor556lIDwgYmV0c3VcIDsKK+W+jCA8IG5vY2hpXCA7CivlvosgPCByaXRzdVwgOwor552AIDwgY2hha3VcIDsKK+W8jyA8IHNoaWtpXCA7CivnmrogPCBzaGl3YVwgOwor6LqFIDwgY2hva3VcIDsKK+eZviA8IGh5YWt1XCA7Civnmb0gPCBzaGlyb1wgOwor55m8IDwgaG90c3VcIDsKK+eZuiA8IGhhdHN1XCA7CivlubggPCBzYWNoaVwgOwor5bm0IDwgdG9zaGlcIDsKK+eZqiA8IHNoYWt1XCA7Civlt7QgPCB0b21vZVwgOwor55eFIDwgeWFtYWlcIDsKK+eVpSA8IHJ5YWt1XCA7CivnlZwgPCBjaGlrdVwgOwor55S6IDwgbWFjaGlcIDsKK+eUtyA8IG90b2tvXCA7CivnlLEgPCB5b3NoaVwgOwor5bO2IDwgc2hpbWFcIDsKK+izqiA8IHRhY2hpXCA7CivlsrggPCBraXNoaVwgOwor5bGIIDwga3V0c3VcIDsKK+WwuyA8IHNoaXJpXCA7Civlr6YgPCBqaXRzdVwgOwor5a+fIDwgc2F0c3VcIDsKK+WvhiA8IG1pdHN1XCA7CivlrrQgPCB1dGFnZVwgOwor5a6iIDwga3lha3VcIDsKK+eMviA8IGthdHN1XCA7CivoqqwgPCBzZXRzdVwgOwor6KmwIDwga2l0c3VcIDsKK+eIuiA8IGppamlpXCA7CivniKogPCB0c3VtZVwgOwor6KijIDwga2V0c3VcIDsKK+inuCA8IHNob2t1XCA7Civop5IgPCB0c3Vub1wgOwor5aa7IDwgdHN1bWFcIDsKK+eGsSA8IG5ldHN1XCA7Civopb8gPCBuaXNoaVwgOwor5aW0IDwgeWF0c3VcIDsKK+WlqiA8IGRhdHN1XCA7CivlpI8gPCBuYXRzdVwgOwor54OIIDwgcmV0c3VcIDsKK+iityA8IGF3YXNlXCA7Civngo4gPCBob25vb1wgOwor5aKDIDwgc2FrYWlcIDsKK+WhtSA8IGNoaXJpXCA7CivloZogPCB0c3VrYVwgOwor5Z+6IDwgbW90b2lcIDsKK+WfkiA8IHJhY2hpXCA7CivpvaIgPCB5b3dhaVwgOwor6by+IDwgaWJpa2lcIDsKK+icgiA8IGhhY2hpXCA7Civpu5AgPCBtb2NoaVwgOwor5ruFIDwgbWV0c3VcIDsKK+ialSA8IGthaWtvXCA7Civpub8gPCBzaGlrYVwgOwor6JmrIDwgbXVzaGlcIDsKK+iZniA8IG9zb3JlXCA7CivlmYIgPCB1d2FzYVwgOwor5re1IDwgZnVjaGlcIDsKK+m3siA8IHdhc2hpXCA7Civmt5EgPCBzaHVrdVwgOwor6ba0IDwgdHN1cnVcIDsKK+WWhyA8IHJhdHN1XCA7CivllL4gPCB0c3ViYVwgOwor5rOJIDwgaXp1bWlcIDsKK+ayuSA8IGFidXJhXCA7CivmsqEgPCBib3RzdVwgOwor5ZKEIDwgdG90c3VcIDsKK+axgSA8IHRzdXl1XCA7CivpsIwgPCBkb2pvdVwgOwor5ZCJIDwga2ljaGlcIDsKK+WPoyA8IGt1Y2hpXCA7CivljZggPCBoaXRvZVwgOwor5Y2SIDwgc290c3VcIDsKK+asoSA8IHRzdWdpXCA7Civmq5sgPCBrdXNoaVwgOwor6IqdIDwgc2hpYmFcIDsKK+WKmyA8IHJ5b2t1XCA7CivoibYgPCB0c3V5YVwgOwor5qmLIDwgaGFzaGlcIDsKK+aoqyA8IGthc2hpXCA7CivoiIwgPCBzaGl0YVwgOwor5YiDIDwgeWFpYmFcIDsKK+iFsCA8IGtvc2hpXCA7CivlhY4gPCB1c2FnaVwgOwor5YWAIDwga290c3VcIDsKK+iEiCA8IG15YWt1XCA7Civpo68gPCBtZXNoaVwgOwor5qKoIDwgbmFzaGlcIDsKK+aioiA8IGtvenVlXCA7CivmopMgPCBhenVzYVwgOwor6aGNIDwgaGl0YWlcIDsKK+mggSA8IHBlaWppXCA7Civnv4EgPCBva2luYVwgOwor6Z6tIDwgbXVjaGlcIDsKK+mehCA8IGthYmFuXCA7Civmnb4gPCBtYXRzdVwgOwor572wIDwgYmF0c3VcIDsKK+e9qiA8IHRzdW1pXCA7CivkvZsgPCBidXRzdVwgOwor5L2NIDwga3VyYWlcIDsKK+S8uCA8IG5vc2hpXCA7CivpnLAgPCBhcmFyZVwgOwor6ZycIDwgc2hpbW9cIDsKK+aciCA8IHRzdWtpXCA7Civmm7IgPCBreW9rdVwgOwor6ZucIDwgemF0c3VcIDsKK+S7mSA8IHNlbnRvXCA7Civpm4cgPCB5YXRvaVwgOwor5Lm+IDwgaG9zaGlcIDsKK+S4uyA8IG51c2hpXCA7CivntrEgPCB0c3VuYVwgOwor57W2IDwgemV0c3VcIDsKK+e1giA8IG93YXJpXCA7Civmk40gPCBtaXNhb1wgOwor56+AIDwgYnVzaGlcIDsKK+eukiA8IGhvdWtpXCA7CivnrZQgPCBrb3RhZVwgOwor5ouCIDwgZnV0c3VcIDsKK+aIpiA8IGlrdXNhXCA7CivpgZMgPCBtaWNoaVwgOwor6YC5IDwgdGF0c3VcIDsKK+mAhiA8IGd5YWt1XCA7Civnnr3ogIUgPCBrb3NoYVwgOwor5ZCN5YmNIDwgbmFtYWVcIDsKK+W4sOmghiA8IGtpanVuXCA7CivluqfoppYgPCB6YXNoaVwgOwor5b+r5omTIDwga2FpZGFcIDsKK+mAgei+niA8IHNvdWppXCA7CivlkI3liKkgPCBtZWlyaVwgOwor55yJ6ZaTIDwgbWlrZW5cIDsKK+ejgeaApyA8IGppc2VpXCA7CivolqzkvqEgPCB5YWtrYVwgOwor56Cy54WZIDwgaG91ZW5cIDsKK+ekvOWEgCA8IHJlaWdpXCA7Civms5XlhbcgPCBob3VndVwgOwor5ZCP5YWaIDwgcml0b3VcIDsKK+ebrumhlCA8IG1lZ2FvXCA7CivnopHmlocgPCBoaWJ1blwgOwor6YCj6KqeIDwgcmVuZ29cIDsKK+mHjeWbsiA8IGNob3VpXCA7Civmsq7llqogPCBzb3NvdVwgOwor6YG657+SIDwgaXNodXVcIDsKK+mBuOiAhSA8IHNlbmphXCA7CivmrYzogZYgPCBrYXNlaVwgOwor6YCg6KqeIDwgem91Z29cIDsKK+egsueBqyA8IGhvdWthXCA7CivokrjmsJcgPCBqb3VraVwgOwor5oCq5aWHIDwga2Fpa2lcIDsKK+mAo+iomCA8IHJlbmtpXCA7Civph43lmaggPCBqdXVraVwgOwor5Yqg57OWIDwga2F0b3VcIDsKK+aBqeWFuCA8IG9udGVuXCA7Civluo/oq5YgPCBqb3JvblwgOwor5q+F54S2IDwga2l6ZW5cIDsKK+WItuimhyA8IHNlaWhhXCA7CivmrY7nvo4gPCB0YW5iaVwgOwor6YCA6LevIDwgdGFpcm9cIDsKK+W/nOaJiyA8IG91c2h1XCA7CivpgJ/oqJggPCBzb2traVwgOwor5rOi5LmxIDwgaGFyYW5cIDsKK+W/nOaIpiA8IG91c2VuXCA7CivpgKPopocgPCByZW5wYVwgOwor5oCo5aOwIDwgZW5zZWlcIDsKK+ayueWNmCA8IHl1dGFuXCA7Civluo/oqZ4gPCBqb3NoaVwgOwor5Yy75qWtIDwgaWd5b3VcIDsKK+W6j+iogCA8IGpvZ2VuXCA7Civlv5jmiJEgPCBib3VnYVwgOwor6I236YeNIDwga2FqdXVcIDsKK+WMuuaknCA8IGt1a2VuXCA7CivljZfmlpcgPCBuYW50b1wgOwor5rK95Yi4IDwga29rZW5cIDsKK+WNiuacnyA8IGhhbmtpXCA7CivlkIzkvqEgPCBkb3VrYVwgOwor5YuV55S7IDwgZG91Z2FcIDsKK+ays+WNlyA8IGthbmFuXCA7CivoloTliIMgPCB1c3ViYVwgOwor5Yqg566XIDwga2FzYW5cIDsKK+W5tOizpiA8IG5lbnB1XCA7Civlj6PlkbMgPCBrb3VtaVwgOwor6L+36LevIDwgbWVpcm9cIDsKK+ayueWJpCA8IHl1emFpXCA7CivlubTos4AgPCBuZW5nYVwgOwor5Y+v5YuVIDwga2Fkb3VcIDsKK+W5tOiyoiA8IG5lbmd1XCA7CivlvqHmoKogPCBva2FidVwgOwor5Y6o5a2QIDwgenVzaGlcIDsKK+WIpeiomCA8IGJla2tpXCA7CivlkI/kurogPCByaWppblwgOwor5ZCE5YCLIDwga2Fra29cIDsKK+mCquefpSA8IGphY2hpXCA7Civlj6Tlj4IgPCBrb3NhblwgOwor5rOV5LqLIDwgaG91amlcIDsKK+iVg+WktyA8IGJhbicnaVwgOwor6YeN5ZGzIDwgb21vbWlcIDsKK+aouem9oiA8IGp1cmVpXCA7CivljYPmnKggPCBjaGlnaVwgOwor5oG15LiOIDwga2VpeW9cIDsKK+mFuOW6piA8IHNhbmRvXCA7CivlirHno4EgPCByZWlqaVwgOwor5Ymj6IieIDwga2VuYnVcIDsKK+azleS4uyA8IGhvc3N1XCA7Civmr43muK8gPCBib2tvdVwgOwor6YeO5ZCIIDwgeWFnb3VcIDsKK+WQjOS6iyA8IGRvdWppXCA7Civlj6/liIYgPCBrYWJ1blwgOwor6YeO5Y+yIDwgeWFzaGlcIDsKK+WKqeelrSA8IGpvc2FpXCA7CivlkITkvY0gPCBrYWt1aVwgOwor5b6h5pytIDwgb2Z1ZGFcIDsKK+mBjuiIrCA8IGthaGFuXCA7CivliIbos6YgPCBidW5wdVwgOwor56iu44CFIDwgc2h1anVcIDsKK+W/mOaBqSA8IGJvdW9uXCA7CivlvoXmqZ8gPCB0YWlraVwgOwor5oGp5Lq6IDwgb25qaW5cIDsKK+W/jOaGmiA8IGtpdGFuXCA7CivpgYvoiKogPCB1bmtvdVwgOwor5rKz5YaFIDwgaGFub2lcIDsKK+aBqOS6iyA8IGtvbmppXCA7CivmgKflmaggPCBzZWlraVwgOwor5oCS5aOwIDwgZG9zZWlcIDsKK+apn+mmliA8IGtpc2h1XCA7CivliJfoqJggPCByZWtraVwgOwor5Y+k5Yi2IDwga29zZWlcIDsKK+WPjeWTuiA8IGhhbnBvXCA7CivljYHml6UgPCB0b29rYVwgOwor5b6h5pi8IDwgb2hpcnVcIDsKK+mDveawkSA8IHRvbWluXCA7CivnnIvpgY4gPCBrYW5rYVwgOwor5Y+k5YiAIDwga290b3VcIDsKK+W8peeUnyA8IHlheW9pXCA7CivpgIHoqbEgPCBzb3V3YVwgOwor5bmz6KqeIDwgaGVpZ29cIDsKK+avkuawlyA8IGRva2tlXCA7Civnn5vnm74gPCBtdWp1blwgOwor56C05rC0IDwgaGFzdWlcIDsKK+mHkeWIqSA8IGtpbnJpXCA7Civms4nkuIsgPCBzZW5rYVwgOwor6L+U6L6eIDwgaGVuamlcIDsKK+m1nuavmyA8IGdhbW91XCA7Civlj5nli7IgPCBqb2t1blwgOwor5rKW5ZCIIDwgb2tpYWlcIDsKK+WPpOWFuCA8IGtvdGVuXCA7Civpr6jpo7IgPCBnZWlpblwgOwor6YeN5YipIDwganV1cmlcIDsKK+WNsOW9sSA8IGluJydlaVwgOwor5Y2Y5omTIDwgdGFuZGFcIDsKK+W+oeaVsCA8IG9rYXp1XCA7Civlj5fli5UgPCBqdWRvdVwgOwor6YGT576pIDwgZG91Z2lcIDsKK+W+jOaetiA8IGtvdWthXCA7CivpgaDnuIEgPCB0b29lblwgOwor5YiG6KqyIDwgYnVua2FcIDsKK+mCpueUuyA8IGhvdWdhXCA7Civph47lhZogPCB5YXRvdVwgOwor552A6KGjIDwgeWFrdWlcIDsKK+WPl+WIkSA8IGp1a2VpXCA7Civmr47mrKEgPCBtYWlqaVwgOwor5b6M5pyfIDwga291a2lcIDsKK+iVqeWFkCA8IHRvdWppXCA7CivmsrnkupUgPCB5dXNlaVwgOwor5bu656KRIDwga2VucGlcIDsKK+WGpemXhyA8IG1laWFuXCA7CivluIPpmaMgPCBmdWppblwgOwor6I2S6YeOIDwga291eWFcIDsKK+ayu+S4iyA8IGNoaWthXCA7CivovrrphJkgPCBoZW5waVwgOwor6YWS5b6SIDwgc2h1dG9cIDsKK+apn+mbtyA8IGtpcmFpXCA7CivmrYznqL8gPCBrYWtvdVwgOwor5byn54q2IDwga29qb3VcIDsKK+mBt+enuyA8IHNlbicnaVwgOwor5biw6YKEIDwga2lrYW5cIDsKK+atr+eXmyA8IGhhaXRhXCA7CivmsJHmiLggPCBtaW5rb1wgOwor5Yqg55ufIDwga2FtZWlcIDsKK+iPiuiKsSA8IGtpa2thXCA7Civlj6TkvosgPCBrb3JlaVwgOwor5Y+w5LiLIDwgZGFpa2FcIDsKK+WIu+iLpiA8IGtva2t1XCA7Civmr43mqKkgPCBib2tlblwgOwor5Y+k5L2TIDwga290YWlcIDsKK+W+gOadpSA8IG91cmFpXCA7Civlj5flg48gPCBqdXpvdVwgOwor5Y+l5LyaIDwga3VrYWlcIDsKK+WPpOS8nSA8IGtvZGVuXCA7Civlv5zlr74gPCBvdXRhaVwgOwor5Y2x5bOwIDwga2lob3VcIDsKK+auuuawlyA8IHNha2tpXCA7CivliqnnlKMgPCBqb3NhblwgOwor5biw6L6yIDwga2lub3VcIDsKK+WPpOS7oyA8IGtvZGFpXCA7Civlj6Tku4ogPCBrb2tvblwgOwor5Y+k5Lq6IDwga29qaW5cIDsKK+mBlee0hCA8IGl5YWt1XCA7Civljp/lm7MgPCBnZW56dVwgOwor5Y2B5omLIDwgaml0dGVcIDsKK+awkeaEjyA8IG1pbicnaVwgOwor5Y+C5YqgIDwgc2Fua2FcIDsKK+WGtumHkSA8IHlha2luXCA7Civnn7PngasgPCBzZWtrYVwgOwor5YW16aasIDwgaGVpYmFcIDsKK+W+oeaJgCA8IGdvc2hvXCA7Civph47kurogPCB5YWppblwgOwor5byB55aPIDwgYmVuc29cIDsKK+WOn+WZqCA8IGdlbmtpXCA7CivpgKDoirEgPCB6b3VrYVwgOwor5bid6YO9IDwgdGVpdG9cIDsKK+iLsemtgiA8IGVpa29uXCA7Civljq3lkbMgPCBpeWFtaVwgOwor5Y2x5a6zIDwga2lnYWlcIDsKK+W6l+iIlyA8IHRlbnBvXCA7CivphY3luIMgPCBoYWlmdVwgOwor5q615q2pIDwgdGFuYnVcIDsKK+WNmOW6pyA8IHRhbnphXCA7Civlj5nku7sgPCBqb25pblwgOwor5qyn57GzIDwgb3ViZWlcIDsKK+aAkuWPtyA8IGRvZ291XCA7CivmsLjlrZggPCBlaXpvblwgOwor5bel6Z2iIDwga3VtZW5cIDsKK+WGhemcgCA8IG5haWp1XCA7Civlj5fku7sgPCBqdW5pblwgOwor5b6M5o+0IDwga291ZW5cIDsKK+ecjOitsCA8IGtlbmdpXCA7Civli6TmsYIgPCBnb25ndVwgOwor55yL6K23IDwga2FuZ29cIDsKK+WGhumZoyA8IGVuamluXCA7Civphbjln7ogPCBzYW5raVwgOwor5biw6LaoIDwga2lzdXVcIDsKK+W9k+apnyA8IHRvdWtpXCA7CivlvIHnkIYgPCBiZW5yaVwgOwor5q+N5p2QIDwgYm96YWlcIDsKK+W+kuaJiyA8IHRvc2h1XCA7Civnm5vpgYsgPCBzZWl1blwgOwor5q2v54mZIDwgc2hpZ2FcIDsKK+awkeW6piA8IG1pbmRvXCA7CivpgYvnrpcgPCB1bnphblwgOwor5b+c5aSJIDwgb3VoZW5cIDsKK+mFkuWutiA8IHNodWthXCA7CivlvKXmvKsgPCBiaW1hblwgOwor6YWS5a60IDwgc2h1ZW5cIDsKK+mun+mxhyA8IGFua291XCA7CivovZ/pn7MgPCBnb3VvblwgOwor5b6h5b+1IDwgZ29uZW5cIDsKK+W+l+aEjyA8IHRva3VpXCA7Civlhbjpm4UgPCB0ZW5nYVwgOwor5Y+M5LqSIDwgc291Z29cIDsKK+WLmOawlyA8IGthbmtpXCA7Civovp7pgIAgPCBqaXRhaVwgOwor5Y6f5Y+lIDwgZ2Vua3VcIDsKK+mBuueVmSA8IGlyeXV1XCA7CivmqZ/pioMgPCBraWp1dVwgOwor6YO95pS/IDwgdG9zZWlcIDsKK+WLleawlyA8IGRvdWtpXCA7Civlv5zloLEgPCBvdWhvdVwgOwor5bm86Iq9IDwgeW91Z2FcIDsKK+ehrOW6piA8IGtvdWRvXCA7CivlvqnluLAgPCBmdWtraVwgOwor5qy6556eIDwgZ2ltYW5cIDsKK+mBoOefoiA8IHRvb3lhXCA7CivpgY7nqIsgPCBrYXRlaVwgOwor5rC05aSrIDwgc3VpZnVcIDsKK+avjeaWkSA8IGJvaGFuXCA7CivmgJzkv5AgPCByZWlyaVwgOwor5biC6YOoIDwgc2hpYnVcIDsKK+WKq+eBqyA8IGdvdWthXCA7CivlhqXpgJQgPCBtZWlkb1wgOwor5Y+C5LqLIDwgc2FuamlcIDsKK+W+oeW5oyA8IGdvaGVpXCA7CivlvL7mqZ8gPCBkYW5raVwgOwor6YGg55y8IDwgZW5nYW5cIDsKK+egtOaRpyA8IGhhc2FpXCA7Civov5HooZsgPCBrb25vZVwgOwor55+t5rOiIDwgdGFucGFcIDsKK+mBoOebriA8IHRvb21lXCA7CivphofljJYgPCBqdW5rYVwgOwor5Yik6ICFIDwgaGFuamFcIDsKK+egtOaQjSA8IGhhc29uXCA7CivpgZPnoLQgPCBkb3VoYVwgOwor6Iux6ZyKIDwgZWlyZWlcIDsKK+WLh+awlyA8IHl1dWtpXCA7CivmsJflrZQgPCBraWtvdVwgOwor5Yqg54K5IDwga2F0ZW5cIDsKK+mFuOWRsyA8IHNhbm1pXCA7CivlhqDovp4gPCBrYW5qaVwgOwor6Iux6ZuEIDwgZWl5dXVcIDsKK+W/q+WRsyA8IGthaW1pXCA7CivlubPoh6UgPCBoZWlnYVwgOwor5Y6a5YipIDwga291cmlcIDsKK+W+kuW8nyA8IHRvdGVpXCA7Civnn63msJcgPCB0YW5raVwgOwor5rCR5a62IDwgbWlua2FcIDsKK+W3rumHkSA8IHNha2luXCA7Civpg6jmlbAgPCBidXN1dVwgOwor5bqD576pIDwga291Z2lcIDsKK+WLh+atpiA8IHl1dWJ1XCA7CivlhYjpp4YgPCBzZW5rdVwgOwor6YKq5rOVIDwgamFob3VcIDsKK+W/jOWeoyA8IGlnYWtpXCA7CivliY3np5EgPCB6ZW5rYVwgOwor5rCP5a2QIDwgdWppa29cIDsKK+W3rumFjSA8IHNhaGFpXCA7Civnn63mrYwgPCB0YW5rYVwgOwor5YaF6YeOIDwgbmFpeWFcIDsKK+ebuOijnCA8IHNvdWhvXCA7CivlvKbmrYwgPCBnZW5rYVwgOwor5Y2D5a62IDwgc2Vua2VcIDsKK+iLpumboyA8IGt1bmFuXCA7CivlvJjms5UgPCBndWhvdVwgOwor5qmf6LuiIDwga2l0ZW5cIDsKK+egtOaIkiA8IGhha2FpXCA7Civmr4DmkI0gPCBraXNvblwgOwor5Y2B5a2XIDwganV1amlcIDsKK+W3rumBoyA8IHNha2VuXCA7CivlvqHlrrQgPCBneW9lblwgOwor5YuY5p+7IDwga2Fuc2FcIDsKK+efruaouSA8IHdhaWp1XCA7Civnmb3pm6ggPCBoYWt1dVwgOwor5b6h5a6FIDwgb3Rha3VcIDsKK+WGhemDqCA8IG5haWJ1XCA7Civlhrfoqp4gPCByZWlnb1wgOwor5bqn56aFIDwgemF6ZW5cIDsKK+iNt+iRiSA8IGtheW91XCA7Civoi6bpl5ggPCBrdXRvdVwgOwor6L6e6K2yIDwgamlqb3VcIDsKK+WMu+WtpiA8IGlnYWt1XCA7CivliqDmuJsgPCBrYWdlblwgOwor5bqn56S8IDwgemFyZWlcIDsKK+mFkuWZqCA8IHNodWtpXCA7Civlt6bpgbcgPCBzYXNlblwgOwor55m76ZmiIDwgdG91aW5cIDsKK+WFiOmdniA8IHNlbnBpXCA7CivpgYvnl7QgPCB1bmNoaVwgOwor5biC6LK7IDwgc2hpaGlcIDsKK+W+gOW5tCA8IG91bmVuXCA7CivlupznqI4gPCBmdXplaVwgOwor56CU5pGpIDwga2VubWFcIDsKK+W3oemCjyA8IGp1bnJhXCA7CivliaPnkr0gPCBrZW5qaVwgOwor5YWN6ZmkIDwgbWVuam9cIDsKK+iKsemtgSA8IG9pcmFuXCA7Civlu7bmu54gPCBlbnRhaVwgOwor5bem6L66IDwgc2FoZW5cIDsKK+W+ruWhtSA8IG1pamluXCA7Civpg6jmiYAgPCBidXNob1wgOwor5Yy55ammIDwgaGlwcHVcIDsKK+WFiemZsCA8IGtvdWluXCA7CivmrKHnlLcgPCBqaW5hblwgOwor5Yqg5rOVIDwga2Fob3VcIDsKK+W+jOWwviA8IGtvdWJpXCA7Civlhobou6IgPCBlbnRlblwgOwor6YGT55CGIDwgZG91cmlcIDsKK+ats+asoSA8IHNhaWppXCA7CivlhpfosrsgPCBqb3VoaVwgOwor5Yil566HIDwgYmVra29cIDsKK+iMtuipsSA8IGNoYXdhXCA7Civmr43mgKcgPCBib3NlaVwgOwor5rCX5ZyPIDwga2lrZW5cIDsKK+W4guitsCA8IHNoaWdpXCA7CivmsJflm6MgPCBraWRhblwgOwor5b+c5YiGIDwgb3VidW5cIDsKK+W+oeWkpyA8IG9udGFpXCA7CivliqDmsLQgPCBrYXN1aVwgOwor5q+b5biDIDwgbW91ZnVcIDsKK+WGjei1tyA8IHNhaWtpXCA7CivmsLjliqsgPCBlaWdvdVwgOwor5rC05YyWIDwgc3Vpa2FcIDsKK+mAlOerryA8IHRvdGFuXCA7Civpg73luqYgPCB0c3Vkb1wgOwor5q+N5b2iIDwgYm9rZWlcIDsKK+W5s+e0oCA8IGhlaXNvXCA7Civli7/mgKogPCBtb2trZVwgOwor5YaZ6K2cIDwgc2hhZnVcIDsKK+ato+avlCA8IHNlaWhpXCA7CivlvbzlsrggPCBoaWdhblwgOwor5Y2w5YikIDwgaW5wYW5cIDsKK+avjuW6piA8IG1haWRvXCA7Civlhajpg70gPCB6ZW50b1wgOwor5Y2w5YiAIDwgaW50b3VcIDsKK+WFqOmDqCA8IHplbmJ1XCA7CivmsLTliKkgPCBzdWlyaVwgOwor5b2p5bqmIDwgc2FpZG9cIDsKK+W9ouW9sSA8IGtlaWVpXCA7CivliKXnp5EgPCBiZWtrYVwgOwor6YGg54GrIDwgdG9vYmlcIDsKK+iRieacqyA8IGhhenVlXCA7Civlv6vkuosgPCBrYWlqaVwgOwor5bqc55yMIDwgZnVrZW5cIDsKK+WGl+iqniA8IGpvdWdvXCA7CivljLrln58gPCBrdWlraVwgOwor5beo6LK7IDwga3lvaGlcIDsKK+W+oeWdiiA8IGdvYm91XCA7Civnn6LmnaUgPCB5YXJhaVwgOwor5YyW5bCOIDwga2Vkb3VcIDsKK+iLsemCgSA8IGVpbWFpXCA7CivlvozlprsgPCBnb3NhaVwgOwor5q+U5bO2IDwgaGl0b3VcIDsKK+WNmOWPpSA8IHRhbmt1XCA7CivmsJflk4EgPCBraWhpblwgOwor5YaN6K2wIDwgc2FpZ2lcIDsKK+W3peiyuyA8IGtvdWhpXCA7Civli53miYsgPCBrYXR0ZVwgOwor55y856qpIDwgZ2Fua2FcIDsKK+W4g+iiiyA8IGhvdGVpXCA7CivoibbpupcgPCBlbnJlaVwgOwor5YSq6ZuFIDwgeXV1Z2FcIDsKK+avm+WtlCA8IGtlYW5hXCA7CivnoLTlsYsgPCBoYW9rdVwgOwor5Yuk5oOwIDwga2luZGFcIDsKK+WGheitsCA8IG5haWdpXCA7CivmrZTmrLcgPCBreW9raVwgOwor6Ly46YqAIDwgeXVnaW5cIDsKK+WFqOi6ryA8IHplbmt1XCA7CivlubPnqY8gPCBoZWlvblwgOwor5Y2z5L2NIDwgc29rdWlcIDsKK+W6j+ebpCA8IGpvYmFuXCA7Civov5Hnv5IgPCBraW5qdVwgOwor5qih6YCgIDwgbW96b3VcIDsKK+avjeWxiyA8IG9tb3lhXCA7CivprZHprYUgPCBjaGltaVwgOwor5rC45L2PIDwgZWlqdXVcIDsKK+ebruiMtiA8IG1lY2hhXCA7Civlhazot68gPCBrb3Vyb1wgOwor5YiH56ymIDwga2lwcHVcIDsKK+aoqui7oiA8IG91dGVuXCA7CivlubTnp58gPCBuZW5zb1wgOwor6LuN6byTIDwgZ3Vua29cIDsKK+WNiuWPryA8IGhhbmthXCA7CivljYrlj6UgPCBoYW5rdVwgOwor5Y2Y5YipIDwgdGFucmlcIDsKK+W+s+WMliA8IHRva2thXCA7CivliKnnm4ogPCByaWVraVwgOwor5qyh54K5IDwgaml0ZW5cIDsKK+W9k+W6pyA8IHRvdXphXCA7CivlvpPlm6AgPCBqdXVpblwgOwor5rC45LujIDwgZWl0YWlcIDsKK+awl+WLoiA8IGtpc2VpXCA7Civmra/mnLYgPCBzaGlkYVwgOwor5q2z5pquIDwgc2VpYm9cIDsKK+W9vOWltCA8IGFpdHN1XCA7Civlvqnlj6QgPCBmdWtrb1wgOwor5YeE6Im2IDwgc2VpZW5cIDsKK+avjeWtkCA8IGJvc2hpXCA7CivpgaDmtbcgPCBlbmthaVwgOwor5rCX5YmNIDwga2ltYWVcIDsKK+WNg+WPpCA8IHNlbmtvXCA7Civlhrfoj5MgPCByZWlrYVwgOwor5byV5pWwIDwgaW5zdXVcIDsKK+WMquWboyA8IGhpZGFuXCA7CivphY3lgpkgPCBoYWliaVwgOwor5b6u5YuVIDwgYmlkb3VcIDsKK+awuOS4liA8IGVpc2VpXCA7CivmrrXlt64gPCBkYW5zYVwgOwor5b255aSrIDwgZWtpZnVcIDsKK+awl+WIhiA8IGtpYnVuXCA7CivphZLkv50gPCBzaHVob1wgOwor5by35oSPIDwga3lvdWlcIDsKK+WGheimjyA8IG5haWtpXCA7CivpgaDms7MgPCBlbicnZWlcIDsKK+iNieiKsSA8IHNvdWthXCA7CivphZTkvZkgPCBzdWl5b1wgOwor6JKy5ZujIDwgZnV0b25cIDsKK+W+oeWPsCA8IG1pZGFpXCA7Civou43pto8gPCBzaGFtb1wgOwor6YCj55CGIDwgcmVucmlcIDsKK+mCquaOqCA8IGphc3VpXCA7CivmsJHliKkgPCBtaW5yaVwgOwor6YGL5ryVIDwgdW5zb3VcIDsKK+mAo+ePoCA8IHJlbmp1XCA7CivliKnnlKggPCByaXlvdVwgOwor5b6u5YiGIDwgYmlidW5cIDsKK+WNiOWJjSA8IGdvemVuXCA7Civoi7Hos4cgPCBlaXNoaVwgOwor5YaF6KOPIDwgZGFpcmlcIDsKK+i8uOmAgSA8IHl1c291XCA7CivlhYjpgJQgPCBzZW5kb1wgOwor5Yqp5pS7IDwgam9rb3VcIDsKK+auv+WuhyA8IGRlbicndVwgOwor6Iqf6ZmkIDwgc2Fuam9cIDsKK+WIh+ejiyA8IHNlc3NhXCA7CivmsJHlhbcgPCBtaW5ndVwgOwor6bWE5bC+IDwgc2hpYmlcIDsKK+WMu+WNmiA8IGloYWt1XCA7CivojLboj5MgPCBjaGFrYVwgOwor5b6u5YWJIDwgYmlrb3VcIDsKK+atqeaVsCA8IGhvc3V1XCA7Civmr47lpJwgPCBtYWl5b1wgOwor5q2m5patIDwgYnVkYW5cIDsKK+WNmOS9jSA8IHRhbicnaVwgOwor5YW86KOcIDwga2VucG9cIDsKK+WKoOaVsCA8IGthc3V1XCA7CivlvZPlrrYgPCB0b3VrZVwgOwor5by35byVIDwgZ291aW5cIDsKK+W+kuWQjSA8IGFkYW5hXCA7CivlvqHlh7ggPCBvZGVrb1wgOwor5b2T5a2XIDwgYXRlamlcIDsKK+mFjeS4iyA8IGhhaWthXCA7CivlhazoqLQgPCBrb3Vzb1wgOwor5bmz55mSIDwgaGVpeXVcIDsKK+eZuui1tyA8IGhva2tpXCA7CivmsJfkvZMgPCBraXRhaVwgOwor6YKq5oWzIDwgamFrZW5cIDsKK+WMuuWIhiA8IGt1YnVuXCA7Civpgb/mmpEgPCBoaXNob1wgOwor6YGK5rOzIDwgeXV1ZWlcIDsKK+WMuuWHpiA8IGt1c2hvXCA7Civmr43loIIgPCBib2RvdVwgOwor5b6h5YWNIDwgZ29tZW5cIDsKK+W+oeWFiCA8IG9zYWtpXCA7CivojLboiJcgPCBjaGFob1wgOwor5YuH5b6AIDwgeXV1b3VcIDsKK+W8k+aJiyA8IHl1bmRlXCA7CivljZfkuIsgPCBuYW5rYVwgOwor5Yy65YaFIDwga3VuYWlcIDsKK+iJsummmSA8IGlyb2thXCA7CivlvpLlirQgPCB0b3JvdVwgOwor5YWa6K2wIDwgdG91Z2lcIDsKK+mCquaCqiA8IGphYWt1XCA7CivlubTnlKsgPCBuZW5wb1wgOwor6YOo5aSWIDwgYnVnYWlcIDsKK+atjOabuCA8IGthc2hvXCA7CivliZvmsJcgPCBnb3VraVwgOwor5byn5b2iIDwga29rZWlcIDsKK+WLouWutiA8IHNlaWthXCA7CivlioPmnJ8gPCBrYWtraVwgOwor56CC5bKpIDwgc2FnYW5cIDsKK+mCquaBiyA8IGphcmVuXCA7CivmsJfkuIggPCBraWpvdVwgOwor5b6p5L2NIDwgZnVrdWlcIDsKK+W+kuWIkSA8IHRva2VpXCA7Civnm67nt5ogPCBtZXNlblwgOwor6JCM5pyoIDwgbW9lZ2lcIDsKK+WGt+e9tSA8IHJlaWJhXCA7CivmsJHkuosgPCBtaW5qaVwgOwor55+p5b2iIDwga3VrZWlcIDsKK+mBuuaXjyA8IGl6b2t1XCA7Civmr5vllJAgPCBrZXRvdVwgOwor5YWo6KO4IDwgemVucmFcIDsKK+mCquW/tSA8IGphbmVuXCA7CivliqnmiJAgPCBqb3NlaVwgOwor6LuN6aasIDwgZ3VuYmFcIDsKK+WJteahiCA8IHNvdWFuXCA7CivmqKHoqaYgPCBtb3NoaVwgOwor6YGK5q2pIDwgeXV1aG9cIDsKK+WHueecvCA8IG91Z2FuXCA7CivlvZPlpJwgPCB0b3V5YVwgOwor6LuK6aasIDwgc2hhYmFcIDsKK+WKoOaLhSA8IGthdGFuXCA7CivptKjlsYUgPCBrYW1vaVwgOwor5b6h5L6bIDwgb3RvbW9cIDsKK+W+kuWFmiA8IHRvdG91XCA7Civlhobok4sgPCBlbmdhaVwgOwor5Y2D5LujIDwgY2hpeW9cIDsKK+WFhOiytCA8IGFuaWtpXCA7Civoi6boqIAgPCBrdWdlblwgOwor5b6h5Ly9IDwgb3RvZ2lcIDsKK+WMluWQiCA8IGthZ291XCA7CivliKnngrkgPCByaXRlblwgOwor6ay86Z2iIDwga2ltZW5cIDsKK+i8v+irliA8IHlvcm9uXCA7CivljYHkupQgPCBqdXVnb1wgOwor5q275b6MIDwgc2hpZ29cIDsKK+WNgeS6jCA8IGp1dW5pXCA7CivmqKrooYwgPCBvdWtvdVwgOwor5b6h5LuBIDwgZ29qaW5cIDsKK+W+jOWFiSA8IGdva291XCA7CivlhYjorbAgPCBzZW5naVwgOwor6YGg5p2lIDwgZW5yYWlcIDsKK+WJjeatryA8IG1hZWJhXCA7CivpgaDmnJsgPCBlbmJvdVwgOwor5Ye655WqIDwgZGViYW5cIDsKK+efpeW3sSA8IGNoaWtpXCA7CivlirHlvKcgPCByZWlrb1wgOwor55yL56C0IDwga2FucGFcIDsKK+W+oeS4iiA8IG9rYW1pXCA7CivlhY3oqLQgPCBtZW5zb1wgOwor5b255YuZIDwgZWtpbXVcIDsKK+iSmeWPpCA8IG1vdWtvXCA7CivlhqDogIUgPCBrYW5qYVwgOwor5buD5qOEIDwgaGFpa2lcIDsKK+WIqea9pCA8IHJpanVuXCA7Civlg6fpmaIgPCBzb3VpblwgOwor6LuN6Z20IDwgZ3Vua2FcIDsKK+WGpOe9qiA8IGVuemFpXCA7CivpgaDmma8gPCBlbmtlaVwgOwor5YaF6IuRIDwgbmFpZW5cIDsKK+W7g+ahiCA8IGhhaWFuXCA7Civou43pnIAgPCBndW5qdVwgOwor6ay86ZaAIDwga2ltb25cIDsKK+mBoOaWuSA8IGVucG91XCA7Civlt6boiLcgPCBzYWdlblwgOwor5YWB6KixIDwgaW5reW9cIDsKK+W4sOekviA8IGtpc2hhXCA7CivliqPlvKcgPCByZWtrb1wgOwor6YOo5ZOBIDwgYnVoaW5cIDsKK+egguWhtSA8IHNhamluXCA7CivliJ3mvJQgPCBzaG9lblwgOwor5q2p5buKIDwgaG9yb3VcIDsKK+atjOaJiyA8IGthc2h1XCA7CivlvozkuosgPCBrb3VqaVwgOwor5YuH5ammIDwgeXV1ZnVcIDsKK+atquW6piA8IHdhaWRvXCA7CivlubPngokgPCBoZWlyb1wgOwor6L6y56eRIDwgbm91a2FcIDsKK+atpuW8gSA8IGJ1YmVuXCA7Civpg73lhoUgPCB0b25haVwgOwor5byf5a2QIDwgZGVzaGlcIDsKK+W3puiEsyA8IHNhbm91XCA7CivliqDlubQgPCBrYW5lblwgOwor6L+R55W/IDwga2lua2lcIDsKK+W8geW6pyA8IGJlbnphXCA7CivliKXmtL4gPCBiZXBwYVwgOwor5q2j5bqnIDwgc2VpemFcIDsKK+W8leWwjiA8IGluZG91XCA7CivpgKPmrYwgPCByZW5nYVwgOwor6a2U6YGTIDwgbWFkb3VcIDsKK+W9seWDjyA8IGVpem91XCA7Civlt6vogIUgPCBmdXNoYVwgOwor5Ye554mIIDwgb3ViYW5cIDsKK+WGheiAsyA8IG5haWppXCA7CivlvZPlkKYgPCB0b3VoaVwgOwor5Yip5rC0IDwgcmlzdWlcIDsKK+mAoOasoSA8IHpvdWppXCA7Civlha3oirEgPCByaWtrYVwgOwor5Yem55CGIDwgc2hvcmlcIDsKK+W7tuW8lSA8IGVuJydpblwgOwor552/5pm6IDwgZWljaGlcIDsKK+WFq+iLpiA8IGhha2t1XCA7Civmr5TlgKsgPCBoaXJpblwgOwor6YGO5pWPIDwga2FiaW5cIDsKK+W7tuW7tiA8IGVuJydlblwgOwor5YuV5ZugIDwgZG91aW5cIDsKK+W8iuWxpSA8IGhlaXJpXCA7CivpgbrlvrMgPCBpdG9rdVwgOwor56C05YCrIDwgaGFyaW5cIDsKK+WMl+S6rCA8IHBla2luXCA7CivnoILlmLQgPCBzYXNoaVwgOwor5YmN5pyfIDwgemVua2lcIDsKK+asoeaVsCA8IGppc3V1XCA7CivpgKDmqZ8gPCB6b3VraVwgOwor5q+U5L6LIDwgaGlyZWlcIDsKK+mDqOWIhiA8IGJ1YnVuXCA7Civlho3nuIEgPCBzYWllblwgOwor55uu55ypIDwgbWVtYWlcIDsKK+aoueiEgiA8IGp1c2hpXCA7Civmrovln7ogPCB6YW5raVwgOwor6YC45pu4IDwgaXNzaG9cIDsKK+mDveS8miA8IHRva2FpXCA7CivmrL3mhZUgPCBraW5ib1wgOwor6YOo5YaFIDwgYnVuYWlcIDsKK+WFreiFkSA8IHJvcHB1XCA7CivpgJPmrKEgPCB0ZWlqaVwgOwor6YO95Lq6IDwgdG9qaW5cIDsKK+mBi+aQrCA8IHVucGFuXCA7CivliY3ml6UgPCBtYWViaVwgOwor5q+N5L2TIDwgYm90YWlcIDsKK+WIqeaoqSA8IHJpa2VuXCA7CivpgbfluqcgPCBzZW56YVwgOwor5Yqg5a6zIDwga2FnYWlcIDsKK+mBoOaFriA8IGVucnlvXCA7Civli6fljJYgPCBrYW5nZVwgOwor5YuH5ZuzIDwgeXV1dG9cIDsKK+iPqeaPkCA8IGJvZGFpXCA7Civlg6fpg70gPCBzb3V6dVwgOwor5q2m5a6YIDwgYnVrYW5cIDsKK+WIneatqSA8IHNob2hvXCA7Civnn7PlmaggPCBzZWtraVwgOwor6YCA5rK7IDwgdGFpamlcIDsKK+iPsuaJjSA8IGhpc2FpXCA7Civli6Tli5kgPCBraW5tdVwgOwor5q2j5a2XIDwgc2VpamlcIDsKK+W3qOe0sCA8IGtvc2FpXCA7CivpgYvmjIcgPCB1bnNoaVwgOwor6bOl5bGFIDwgdG9yaWlcIDsKK+W5s+awlyA8IGhlaWtpXCA7CivpgKPmnrYgPCByZW5rYVwgOwor5YiG5rS+IDwgYnVucGFcIDsKK+i7jemDqCA8IGd1bmJ1XCA7Civlh7rmua8gPCBpZGV5dVwgOwor5bqm5pWwIDwgZG9zdXVcIDsKK+mBiuaKgCA8IHl1dWdpXCA7CivpgIDmrakgPCB0YWlob1wgOwor6YKm5ZyfIDwgaG91ZG9cIDsKK+mBv+WvkiA8IGhpa2FuXCA7Civpg6jkvJogPCBidWthaVwgOwor5Yip5qC5IDwgcmlrb25cIDsKK+W0jumZvSA8IGtpeW91XCA7CivlubTmrKEgPCBuZW5qaVwgOwor5beu562JIDwgc2F0b3VcIDsKK+i7jOmBkyA8IGtpZG91XCA7CivpgbrlsL8gPCBpbnlvdVwgOwor5q275ZugIDwgc2hpaW5cIDsKK+WLsuS9jSA8IGt1bicnaVwgOwor6JGs5YW3IDwgc291Z3VcIDsKK+WGhuetkiA8IGVudG91XCA7CivliIbmr40gPCBidW5ib1wgOwor6Iy255uuIDwgY2hhbWVcIDsKK+W6l+aYryA8IHRlbnplXCA7Civli5/lhbUgPCBib2hlaVwgOwor5q6/5LiLIDwgZGVua2FcIDsKK+asneaGpCA8IHVwcHVuXCA7CivokazlhIAgPCBzb3VnaVwgOwor6YGV5b+DIDwgaXNoaW5cIDsKK+W8seWMliA8IGpha2thXCA7CivliqDlopcgPCBrYXpvdVwgOwor6YGK5oOwIDwgeXV1ZGFcIDsKK+WLn+WCtSA8IGJvc2FpXCA7CivpgY7mgKAgPCBrYXRhaVwgOwor5Ye65rGBIDwgZGFzaGlcIDsKK+ebo+eQhiA8IGthbnJpXCA7CivliY3miK8gPCB6ZW5naVwgOwor5bir54i2IDwgc2hpZnVcIDsKK+W6uOaEmiA8IHlvdWd1XCA7CivlvJXllqkgPCBpbicneXVcIDsKK+W4neeOiyA8IHRlaW91XCA7Civpgb/lpoogPCBoaW5pblwgOwor5YaF56eRIDwgbmFpa2FcIDsKK+W6j+aWhyA8IGpvYnVuXCA7Civou43ot68gPCBndW5yb1wgOwor5bqP5pWwIDwgam9zdXVcIDsKK+aui+WLmSA8IHphbm11XCA7CivliJ3mnJ8gPCBzaG9raVwgOwor6Lqr6YeNIDwgbWlvbW9cIDsKK+W6p+aJgCA8IHphc2hvXCA7CivovKroiJ4gPCByaW5idVwgOwor6YCU5pa5IDwgdG9ob3VcIDsKK+WEgOijhSA8IGdpc291XCA7Civlub3mmpcgPCB5dXVhblwgOwor6Iux57GzIDwgZWliZWlcIDsKK+i7jeiyuyA8IGd1bnBpXCA7CivprZTooZcgPCBtYWdhaVwgOwor6Lui6KibIDwgdGVua2FcIDsKK+i7ouiomCA8IHRlbmtpXCA7Civlh7HmrYwgPCBnYWlrYVwgOwor5qyh5bm0IDwgamluZW5cIDsKK+mBuuWiqCA8IGlib2t1XCA7CivpgYXlu7YgPCBjaGllblwgOwor5bm85pmCIDwgeW91amlcIDsKK+ebhueUuyA8IGJvbmdhXCA7CivliJHmnJ8gPCBrZWlraVwgOwor5bm05pyfIDwgbmVua2lcIDsKK+WLleS9nCA8IGRvdXNhXCA7Civlh7rmp5ggPCBkZXlvdVwgOwor6Iq46IuRIDwgZ2VpZW5cIDsKK+W8p+WFiSA8IGtva291XCA7CivmrYzlo4cgPCBrYWRhblwgOwor5YW156eRIDwgaGVpa2FcIDsKK+WKqeWRvSA8IGpvbWVpXCA7Civpq5jpm4UgPCBrb3VnYVwgOwor5bi45ripIDwgam91b25cIDsKK+WJjeW+jCA8IHplbmdvXCA7CivmrabllY8gPCBidW1vblwgOwor5Yq05YuZIDwgcm91bXVcIDsKK+W3ruebiiA8IHNhZWtpXCA7CivpgKPmiZMgPCByZW5kYVwgOwor5YSq6Im2IDwgeXV1ZW5cIDsKK+iKseiMjiA8IGtha2VpXCA7CivnoILkuIogPCBzYWpvdVwgOwor6LuN6K2wIDwgZ3VuZ2lcIDsKK+W5s+aZgiA8IGhlaWppXCA7CivkvIrlkYLms6IgPCBpcm9oYVwgOwor5YaG55ukIDwgZW5iYW5cIDsKK+WBvembuyA8IGdpZGVuXCA7Civnmq7nm7ggPCBoaXNvdVwgOwor6L+U5q2MIDwgaGVua2FcIDsKK+WJjeW6pyA8IHplbnphXCA7Civnl6nouq8gPCBzb3VrdVwgOwor5YiG5pyoIDwgYnVuZ2lcIDsKK+ato+WToSA8IHNlaWluXCA7CivlhoXnmq4gPCBuYWloaVwgOwor5qih56+EIDwgbW9oYW5cIDsKK+iKveiDniA8IGdhaG91XCA7CivliIDmnrYgPCB0b3VrYVwgOwor6LyJ6I23IDwgc2Fpa2FcIDsKK+earueZrCA8IGhpemVuXCA7CivpgYrlsbEgPCB5dXNhblwgOwor5q2m5ZCNIDwgYnVtZWlcIDsKK+S6nOmJm+iPryA8IGFlbmthXCA7Civoipnok4kgPCBmdXlvdVwgOwor5q275YWQIDwgc2hpamlcIDsKK+W6leaEjyA8IHNva29pXCA7Civoh6rpppYgPCBqaXNodVwgOwor6LuN6KiYIDwgZ3Vua2lcIDsKK+WKo+WMliA8IHJla2thXCA7CivpgaDlpKcgPCBlbmRhaVwgOwor5YW355y8IDwgZ3VnYW5cIDsKK+asoeWumCA8IGppa2FuXCA7CivmrKHlrZAgPCBqaXNoaVwgOwor5q2m5YuyIDwgYnVrdW5cIDsKK+W7tuWRvSA8IGVubWVpXCA7CivlhYPntKAgPCBnZW5zb1wgOwor5q2m5YuHIDwgYnV5dXVcIDsKK+atpuWKnyA8IGJ1a291XCA7Civlu7flkI8gPCB0ZWlyaVwgOwor5YaG55KwIDwgZW5rYW5cIDsKK+WyqemtmiA8IGl3YW5hXCA7CivliJ3miYsgPCBzaG90ZVwgOwor5YSq576OIDwgeXV1YmlcIDsKK+WEkuiJryA8IGp1Z29uXCA7CivlhZDnq6UgPCBqaWRvdVwgOwor5q2T5ZG8IDwga2Fua29cIDsKK+mzs+WHsCA8IGhvdW91XCA7Civnn6XkuosgPCBjaGlqaVwgOwor6YGT5aSuIDwgZG91b3VcIDsKK+i7jeihoyA8IGd1bicnaVwgOwor5Yi25bqmIDwgc2VpZG9cIDsKK+atqeWFtSA8IGhvaGVpXCA7CivlgZzpn7MgPCB0ZWlvblwgOwor5byV5L6LIDwgaW5yZWlcIDsKK+eXtOipsSA8IGNoaXdhXCA7CivliqDlhqAgPCBrYWthblwgOwor6YCj5bqnIDwgcmVuemFcIDsKK+mBoOWcsCA8IGVuY2hpXCA7Civnmb3npo0gPCBoYWtrYVwgOwor6YGO5aSnIDwga2FkYWlcIDsKK+iLm+eojiA8IGthemVpXCA7CivpgYrlpbMgPCB5dXVqb1wgOwor6Lyd57eaIDwga2lzZW5cIDsKK+WFpeebuCA8IGlyaWFpXCA7CivoiovojI4gPCB6dWlraVwgOwor55aO6ZaLIDwgc29rYWlcIDsKK+WJjeWppiA8IHplbnB1XCA7CivlgY/poJcgPCBoZW5wYVwgOwor6YG35YyWIDwgc2VuZ2VcIDsKK+e2reaMgeiyuyA8IGlqaWhpXCA7CivokL3kuIsgPCByYWtrYVwgOwor5YW354++IDwgZ3VnZW5cIDsKK+WGt+awlyA8IHJlaWtpXCA7CivlhJLogIUgPCBqdXNoYVwgOwor6IiX6YGTIDwgaG9kb3VcIDsKK+WFiOelliA8IHNlbnpvXCA7CivnmbrnoLQgPCBoYXBwYVwgOwor55Wz6Z+7IDwgam91aW5cIDsKK+ebuOajkiA8IGFpYm91XCA7Civlu4PlnJIgPCBoYWllblwgOwor6L+R5pmCIDwga2luamlcIDsKK+mtmuiCpSA8IGd5b2hpXCA7Civouo3otbcgPCB5YWtraVwgOwor6Iqx57SLIDwga2Ftb25cIDsKK+WFg+elliA8IGdhbnNvXCA7Civnm5fmsZcgPCBuZWFzZVwgOwor5q2m5Lq6IDwgYnVqaW5cIDsKK+iKseeyiSA8IGthZnVuXCA7CivoiJ7ouYggPCBidXRvdVwgOwor5bm+5bqmIDwgaWt1ZG9cIDsKK+asoeWbniA8IGppa2FpXCA7CivprLHokrwgPCB1c3NvdVwgOwor6Iie6LiKIDwgYnV5b3VcIDsKK+i8quemjSA8IHJpbmthXCA7CivliJHlvpIgPCBrZWl0b1wgOwor5bm05b6MIDwgbmVuZ29cIDsKK+mAo+WtkCA8IHJlbmppXCA7Civnm7jmnb8gPCBhaWJhblwgOwor5YmN5aC0IDwgemVuYmFcIDsKK+eUsOm6qSA8IGRlbmJ1XCA7Civlh7nmiYAgPCBvdXNob1wgOwor5YG96YCgIDwgZ2l6b3VcIDsKK+iLpueVjCA8IGt1Z2FpXCA7CivluLjmmYIgPCBqb3VqaVwgOwor6YKE5LuYIDwga2FucHVcIDsKK+mBi+WWtiA8IHVuJydlaVwgOwor5bm05bqmIDwgbmVuZG9cIDsKK+mAruWknCA8IHRhaXlhXCA7CivpgIDluqcgPCB0YWl6YVwgOwor5Yip5a6zIDwgcmlnYWlcIDsKK+iJseiLpiA8IGthbmt1XCA7CivmrKHlloQgPCBqaXplblwgOwor5Yip5a2QIDwgcmlzaGlcIDsKK+WIpeWutiA8IGJla2tlXCA7CivpgbrkvZwgPCBpc2FrdVwgOwor6I2S5pyoIDwgYXJha2lcIDsKK+WyqemWkyA8IGl3YW1hXCA7Civluq3lnJIgPCB0ZWllblwgOwor6a+o5rOiIDwgZ2VpaGFcIDsKK+W5tOW3riA8IG5lbnNhXCA7Civpr6jmsrkgPCBnZWl5dVwgOwor6Lm26LW3IDwga2Vra2lcIDsKK+WGhua6gCA8IGVubWFuXCA7CivovrLmnJ8gPCBub3VraVwgOwor5Yik5a2QIDwgaGFua29cIDsKK+iPr+WOsyA8IGtlZ29uXCA7CivpgaDlh7ogPCB0b29kZVwgOwor6YGL5ZG9IDwgdW5tZWlcIDsKK+mBk+WMliA8IGRvdWtlXCA7CivmrYzku5kgPCBrYXNlblwgOwor6Lui576pIDwgdGVuZ2lcIDsKK+asoeWPtyA8IGppZ291XCA7CivmrYzkurogPCBrYWppblwgOwor55u45pKyIDwgc3Vtb3VcIDsKK+iJtuiBniA8IGVuYnVuXCA7Civluo/lpY8gPCBqb3NvdVwgOwor6L+R5omAIDwga2luam9cIDsKK+WHoeaJkyA8IGJvbmRhXCA7Civlh7nlvaIgPCBvdWtlaVwgOwor6IiO6LK7IDwgc2hhaGlcIDsKK+mBjuWLpCA8IGtha2luXCA7CivpgY7lirQgPCBrYXJvdVwgOwor6Ieq6YK4IDwgaml0ZWlcIDsKK+mBi+WLoiA8IHVuc2VpXCA7Civlt6jms6IgPCBreW9oYVwgOwor6YGL5YuVIDwgdW5kb3VcIDsKK+i+nuafhCA8IGppaGVpXCA7CivpgY7libAgPCBrYWpvdVwgOwor55Wd6ZaTIDwgdW5lbWFcIDsKK+iHqumBuCA8IGppc2VuXCA7Civovp7mnpcgPCBqaXJpblwgOwor5bmz5a62IDwgaGVpa2VcIDsKK+mAuOWTgSA8IGlwcGluXCA7CivpgZPlhbcgPCBkb3VndVwgOwor5bmz5a6JIDwgaGVpYW5cIDsKK+eahueEoSA8IGthaW11XCA7Civlh6HmhJogPCBib25ndVwgOwor5YiG5bKQIDwgYnVua2lcIDsKK+WJjeWPpCA8IHplbmtvXCA7CivnlLvppIUgPCBnYWJlaVwgOwor5L6d5Lyw5ZywIDwgZWtvamlcIDsKK+i+nuabuCA8IGppc2hvXCA7CivpgKDlnJIgPCB6b3VlblwgOwor5Ymw5L2ZIDwgam91eW9cIDsKK+W6tuWLmSA8IHNob211XCA7CivnlLvpoqggPCBnYWZ1dVwgOwor5YSA56+EIDwgZ2loYW5cIDsKK+iKs+eciSA8IGhvdWJpXCA7CivliJ3lpJwgPCBzaG95YVwgOwor5qi55rayIDwganVla2lcIDsKK+WIneWkjyA8IHNob2thXCA7CivluIzmnJsgPCBraWJvdVwgOwor5beo5q2pIDwga3lvaG9cIDsKK+W5vOWlsyA8IHlvdWpvXCA7CivnlLvpoYwgPCBnYWRhaVwgOwor5YiG5a62IDwgYnVua2VcIDsKK+W4jOabuCA8IGtpc2hvXCA7CivluLDmipUgPCBraXRvdVwgOwor5Yak5p6JIDwgZW4nJ291XCA7CivmqLnmtbcgPCBqdWthaVwgOwor5bm+5aScIDwgaWt1eW9cIDsKK+W5vuWkmiA8IGlrdXRhXCA7CivmrKHlhYQgPCBqaWtlaVwgOwor5qyh5YWDIDwgamlnZW5cIDsKK+i/t+WtkCA8IG1haWdvXCA7CivmqZ/morAgPCBraWthaVwgOwor5bqn5Y+zIDwgemF5dXVcIDsKK+W5u+WkoiA8IGdlbm11XCA7CivlhYjniLYgPCBzZW5wdVwgOwor6YGh5LiKIDwgc29qb3VcIDsKK+apn+aguSA8IGtpa29uXCA7Civlgb3oqpMgPCBnaXNlaVwgOwor6YCg5Za2IDwgem91ZWlcIDsKK+iIl+ijhSA8IGhvc291XCA7CivnlbDpg7cgPCBpa3lvdVwgOwor55S76Z2iIDwgZ2FtZW5cIDsKK+WAjemfsyA8IGJhaW9uXCA7Civmo4vpoqggPCBraWZ1dVwgOwor5YG96KiIIDwgZ2lrZWlcIDsKK+ebuOaEmyA8IHNvdWFpXCA7Civlgb3oqIAgPCBnaWdlblwgOwor5YG26KqeIDwgZ3V1Z29cIDsKK+apn+adkCA8IGtpemFpXCA7CivmrKHkvr8gPCBqaWJpblwgOwor6YCj5ZG8IDwgcmVua29cIDsKK+W3puanmCA8IHNheW91XCA7CivlgbboqaAgPCBndXVlaVwgOwor6a2U56WeIDwgbWFqaW5cIDsKK+W7iuS4iyA8IHJvdWthXCA7CivpqZ/pm6ggPCBzaHV1dVwgOwor55uy5oSbIDwgbW91YWlcIDsKK+WGjeahiCA8IHNhaWFuXCA7CivmhI/msJflnLAgPCBpa3VqaVwgOwor5YSA56S8IDwgZ2lyZWlcIDsKK+iHquizmyA8IGppc2FuXCA7CivpgKPlj6UgPCByZW5rdVwgOwor6Lev6aCtIDwgcm90b3VcIDsKK+i/t+WkoiA8IG1laW11XCA7Civoi7Hms5UgPCBlaWhvdVwgOwor6Ieq6LKpIDwgamloYW5cIDsKK+iLpua4iyA8IGt1anV1XCA7Civnm7jlv5wgPCBzb3VvdVwgOwor5qyh5LujIDwgamlkYWlcIDsKK+WwvumwrSA8IG9iaXJlXCA7CivluKvmgakgPCBzaGlvblwgOwor5YWs5q2mIDwga291YnVcIDsKK+i7ouenuyA8IHRlbicnaVwgOwor6Lev6Z2iIDwgcm9tZW5cIDsKK+Wyoei+uiA8IG9rYWJlXCA7CivlgYnouZ8gPCBpc2VraVwgOwor5YWa5rS+IDwgdG91aGFcIDsKK+mBi+S4iiA8IHVuam91XCA7Civmpa3oi6YgPCBnb3VrdVwgOwor5bGk6ZuyIDwgc291dW5cIDsKK+W6p+WDjyA8IHphem91XCA7CivluLfluZUgPCBpYmFrdVwgOwor5bi35bizIDwgaWNob3VcIDsKK+WIqeWPoyA8IHJpa291XCA7CivmqZ/mlY8gPCBraWJpblwgOwor5YWl5q2vIDwgaXJlYmFcIDsKK+W6tuS6iyA8IHNob2ppXCA7CivprZTnnaEgPCBtYXN1aVwgOwor5qiq5q27IDwgb3VzaGlcIDsKK+i7jOevhCA8IGtpaGFuXCA7CivlhobmnKwgPCBlbnBvblwgOwor5YSS55SfIDwganVzZWlcIDsKK+W3oeafuyA8IGp1bnNhXCA7Civlho3mmKAgPCBzYWllaVwgOwor5bq15Li7IDwgYW5zaHVcIDsKK+iHquiqjSA8IGppbmluXCA7CivoirHniYcgPCBrYWhlblwgOwor6ay856WeIDwga2lqaW5cIDsKK+i8uOa2siA8IHl1ZWtpXCA7CivnlJjpnLIgPCBrYW5yb1wgOwor5qqA5b6SIDwgZGFudG9cIDsKK+eVsOixoSA8IGlzaG91XCA7CivojILmnpcgPCBtb3JpblwgOwor5L+d6aSKIDwgaG95b3VcIDsKK+WFieazoiA8IGtvdWhhXCA7Civot53pm6IgPCBreW9yaVwgOwor5bem5pa5IDwgc2Fob3VcIDsKK+W6p+S5lyA8IHpham91XCA7CivmqLnmnpcgPCBqdXJpblwgOwor6a2U55WMIDwgbWFrYWlcIDsKK+W5s+WSjCA8IGhlaXdhXCA7CivlhbfmnIkgPCBndXl1dVwgOwor5YWs5qGIIDwga291YW5cIDsKK+WHpuWlsyA8IHNob2pvXCA7CivluJ3luqcgPCB0ZWl6YVwgOwor5YiR5ZCPIDwga2VpcmlcIDsKK+mAgeWPlyA8IHNvdWp1XCA7Civlt67mkI0gPCBzYXNvblwgOwor5qih5qeYIDwgbW95b3VcIDsKK+apn+aJjSA8IGtpc2FpXCA7Civlh6HlpKsgPCBib25wdVwgOwor5Yi75LiLIDwga29ra2FcIDsKK+mAgOWMliA8IHRhaWthXCA7Civlh4blsIkgPCBqdW4nJ2lcIDsKK+WGtuW3pSA8IHlha291XCA7CivmqKrmn4QgPCBvdWhlaVwgOwor5YW45pWFIDwgdGVua29cIDsKK+iJsuebriA8IGlyb21lXCA7CivliKnkvr8gPCByaWJlblwgOwor55S76YGTIDwgZ2Fkb3VcIDsKK+i3r+mKgCA8IHJvZ2luXCA7CivojYnlsaUgPCB6b3VyaVwgOwor5L+d6Zm6IDwgaG9rZW5cIDsKK+W5tOWIqSA8IG5lbnJpXCA7Civoi7Hmm7ggPCBlaXNob1wgOwor5YWt5pelIDwgbXVpa2FcIDsKK+WIhuWMuiA8IGJ1bmt1XCA7Civlhavml6UgPCB5b3VrYVwgOwor5YWs5pa5IDwga3Vib3VcIDsKK+aoquaatCA8IG91Ym91XCA7CivlhqXlupwgPCBtZWlmdVwgOwor5YiR5YW3IDwga2VpZ3VcIDsKK+iLpuadryA8IGt1aGFpXCA7Civoi7HmmI4gPCBlaW1laVwgOwor5qqA5a62IDwgZGFua2FcIDsKK+aooeacrCA8IG1vaG9uXCA7CivlhaXml6UgPCBpcmloaVwgOwor5bC+6ZW3IDwgb25hZ2FcIDsKK+i+suWppiA8IG5vdWZ1XCA7CivlsI/prKIgPCBrb2JpblwgOwor5Yik5LqLIDwgaGFuamlcIDsKK+WIhuWIqSA8IGJ1bnJpXCA7Civoi7Hmlq0gPCBlaWRhblwgOwor5YKF6IKyIDwgZnVpa3VcIDsKK+aoquaWrSA8IG91ZGFuXCA7Civoi7HmlocgPCBlaWJ1blwgOwor5Yeh5ZmoIDwgYm9ua2lcIDsKK+iLseaVsCA8IGVpc3V1XCA7CivlhrTlr5IgPCBnb2thblwgOwor6YCU5LiKIDwgdG9qb3VcIDsKK+W4g+W3viA8IGZ1a2luXCA7Civnm7jloLQgPCBzb3ViYVwgOwor6aiS6Z+zIDwgc291b25cIDsKK+WFmuaYryA8IHRvdXplXCA7CivovrLlpbQgPCBub3Vkb1wgOwor55So6YCUIDwgeW91dG9cIDsKK+WFieaghCA8IGtvdWVpXCA7CivojLblsYsgPCBjaGF5YVwgOwor6Ly/5pybIDwgeW9ib3VcIDsKK+iHquiRlyA8IGppY2hvXCA7CivlhZDmm7kgPCBqaXNvdVwgOwor5Ye65YmNIDwgZGVtYWVcIDsKK+Wwj+mmrCA8IGtvdW1hXCA7Civojbflj7AgPCBuaWRhaVwgOwor55SY6YWiIDwgYW1henVcIDsKK+iLl+acqCA8IG5hZWdpXCA7Civpp7vppqwgPCBrYW5iYVwgOwor55S76LObIDwgZ2FzYW5cIDsKK+eZveaXlyA8IGhha2tpXCA7CivpgIHku5ggPCBzb3VmdVwgOwor5YaF5b+cIDwgbmFpb3VcIDsKK+WHjeWcnyA8IHRvdWRvXCA7CivluK/lnLAgPCBvYmlqaVwgOwor6L665ZyfIDwgaGVuZG9cIDsKK+WwvumMoCA8IGJpam91XCA7CivliJHkuosgPCBrZWlqaVwgOwor5YaG5by+IDwgZW5kYW5cIDsKK+ebruWeoiA8IG1lYWthXCA7Civov5Hlj6QgPCBraW5rb1wgOwor6Lu95rWuIDwga2VpZnVcIDsKK+iLm+aWgiA8IGthcmVuXCA7Civou6LngokgPCB0ZW5yb1wgOwor6L6y5ZySIDwgbm91ZW5cIDsKK+W3u+WwviA8IGthbmJpXCA7Civnp4vliIDprZogPCBzYW5tYVwgOwor5L2z6bqXIDwga2FyZWlcIDsKK+iJtueEtiA8IGVuemVuXCA7Civoi7HmiY0gPCBlaXNhaVwgOwor6IWw6YOoIDwgeW91YnVcIDsKK+i7veayuSA8IGtlaXl1XCA7CivluYfliqkgPCBob3Vqb1wgOwor5YaF5biRIDwgbmFpZG9cIDsKK+eUu+irhyA8IGdhZGFuXCA7CivlhpnlrZcgPCBzaGFqaVwgOwor5L6b6aSKIDwga3V5b3VcIDsKK+WAkuiqniA8IHRvdWdvXCA7CivprLzngasgPCBvbmliaVwgOwor6a2a5rK5IDwgZ3lveXVcIDsKK+W4neWcnyA8IHRlaWRvXCA7CivmqZ/lq4wgPCBraWdlblwgOwor6Iqx5qKoIDwga2FyaW5cIDsKK+WFjOaPmyA8IGRha2FuXCA7CivprZTms5UgPCBtYWhvdVwgOwor6Ium5oimIDwga3VzZW5cIDsKK+WCt+eXjSA8IHNob3VpXCA7CivlgJnoo5wgPCBrb3Vob1wgOwor5bi45YuZIDwgam91bXVcIDsKK+W4sOWPgiA8IGtpc2FuXCA7CivlhoblsYUgPCBtYWRvaVwgOwor5qi55bm5IDwganVrYW5cIDsKK+iLpuaFriA8IGt1cnlvXCA7CivppqzpvaIgPCBiYXJlaVwgOwor5L2Z6b2iIDwgeW9yZWlcIDsKK+eXlOeYuyA8IGppcm91XCA7Civlt6jlr4wgPCBreW9mdVwgOwor5YWs5bqrIDwga291a29cIDsKK+WCmeegsiA8IGJpaG91XCA7Civlhazluo8gPCBrb3Vqb1wgOwor6Ium5oOFIDwga3Vqb3VcIDsKK+iMtuWckiA8IGNoYWVuXCA7Civoi6bmgrYgPCBrdW1vblwgOwor6Ium5oKpIDwga3Vub3VcIDsKK+eUqOiqniA8IHlvdWdvXCA7Civlt6blrpggPCBzYWthblwgOwor5qeQ5qi5IDwga2FpanVcIDsKK+WGl+WkmiA8IGpvdXRhXCA7Civou5/mtL4gPCBuYW5wYVwgOwor5YWs5biDIDwga291ZnVcIDsKK+eVsOiFuSA8IGlmdWt1XCA7CivlhYjmiYsgPCBzZW50ZVwgOwor5YWs5beuIDwga291c2FcIDsKK+iMtuWZqCA8IGNoYWtpXCA7Civoh5PohZEgPCB6b3VmdVwgOwor6ayx5rueIDwgdXR0YWlcIDsKK+ahgummrCA8IGtlaW1hXCA7Civov5Tku5ggPCBoZW5wdVwgOwor5qKF6YWiIDwgdW1lenVcIDsKK+i+suWLmSA8IG5vdW11XCA7CivluLjlgpkgPCBqb3ViaVwgOwor6Ium5b25IDwga3Vla2lcIDsKK+iIjOemjSA8IHpla2thXCA7CivltZDmsJcgPCByYW5raVwgOwor5qK16KqeIDwgYm9uZ29cIDsKK+ecjOS4iyA8IGtlbmthXCA7CivohZXovKogPCB1ZGV3YVwgOwor6LW36Zu7IDwga2lkZW5cIDsKK+W4q+WEkiA8IHNoaWp1XCA7CivlrrbptKggPCBhaGlydVwgOwor5a+d6aGUIDwgbmVnYW9cIDsKK+i+suWFtyA8IG5vdWd1XCA7CivluILllrYgPCBzaGllaVwgOwor5YaG5aKzIDwgZW5wdW5cIDsKK+iJsuawlyA8IGlyb2tlXCA7Civovp7ljrsgPCBqaWt5b1wgOwor6ay85q2vIDwgb25pYmFcIDsKK+WwgemOliA8IGZ1dXNhXCA7Civoi7Hlsa8gPCBlaXRvblwgOwor5bCW6YOoIDwgc2VuYnVcIDsKK+W3peWgtCA8IGtvdWJhXCA7CivnmbrluIMgPCBoYXBwdVwgOwor5biw5Lu7IDwga2luaW5cIDsKK+WFhOW+jCA8IGFuaWdvXCA7Civlhavph43mra8gPCB5YWViYVwgOwor5YC26ICFIDwga3VzaGFcIDsKK+S/muiruiA8IHJpZ2VuXCA7Civkv47osYYgPCBzb3RvdVwgOwor55Sf6J2LIDwga2lyb3VcIDsKK+WFi+W3sSA8IGtva2tpXCA7CivlhoXlm6AgPCBuYWlpblwgOwor6Leb6KGMIDwgaGFrb3VcIDsKK+ebsuS6gCA8IG1vdWtpXCA7Civoi6blr5IgPCBrdWthblwgOwor55ar55eiIDwgZWtpcmlcIDsKK+ebm+WEgCA8IHNlaWdpXCA7CivluILljLogPCBzaGlrdVwgOwor6aas6aaWIDwgYmFzaHVcIDsKK+S9memmmSA8IHlva291XCA7CivnmbvlsbEgPCB0b3phblwgOwor5YaX5Y+lIDwgam91a3VcIDsKK+Wkp+S8r+eItiA8IG9vb2ppXCA7CivovrLkuosgPCBub3VqaVwgOwor5qip5aiBIDwga2VuJydpXCA7Civnm67kuIsgPCBtb2trYVwgOwor5bau5bKoIDwga2Vuc29cIDsKK+iHquekviA8IGppc2hhXCA7CivnlqPnl5QgPCBpYm9qaVwgOwor5L2Z6aKoIDwgeW9mdXVcIDsKK+S9memhniA8IHlvcnVpXCA7CivlhZDlrasgPCBqaXNvblwgOwor6aas6aCtIDwgYmF0b3VcIDsKK+eUmOiXuyA8IGFtYW1vXCA7CivlrrbpoqggPCBrYWZ1dVwgOwor6Im25pu4IDwgZW5zaG9cIDsKK+WEquW8pyA8IHl1dWtvXCA7Civovp7ku6QgPCBqaXJlaVwgOwor5qOJ6IqxIDwgbWVua2FcIDsKK+apn+WGhSA8IGtpbmFpXCA7Civlhazlm7MgPCBrb3V6dVwgOwor5YW15Za2IDwgaGVpZWlcIDsKK+eUsOiIjiA8IGluYWthXCA7Civlt6blj7MgPCBzYXl1dVwgOwor5YWo5ZyfIDwgemVuZG9cIDsKK+WFqOWbsyA8IHplbnp1XCA7Civog6/plpMgPCBrb2thblwgOwor55S76IGWIDwgZ2FzZWlcIDsKK+W4jOS7oyA8IGtpZGFpXCA7CivlsI/osYYgPCBhenVraVwgOwor5YW15ZOhIDwgaGVpaW5cIDsKK+ahiOmFjSA8IGFuYmFpXCA7Civlrrbpm7sgPCBrYWRlblwgOwor5YaF5YuZIDwgbmFpbXVcIDsKK+WwiuiytCA8IHNvbmtpXCA7Civlt67liIYgPCBzYWJ1blwgOwor5YaF5YqpIDwgbmFpam9cIDsKK+eTpuinoyA8IGdha2FpXCA7CivlhqDkvY0gPCBrYW4nJ2lcIDsKK+aiheimiyA8IHVtZW1pXCA7Civlt6Xli5kgPCBrb3VtdVwgOwor5qih5Z6LIDwgbW9rZWlcIDsKK+aghOmkiiA8IGVpeW91XCA7Civkv5jomZwgPCBmdXJ5b1wgOwor6a2U5omLIDwgbWFzaHVcIDsKK+S9jumbsiA8IHRlaXVuXCA7CivluIPku6QgPCBmdXJlaVwgOwor55m95aCKIDwgaGFrdWFcIDsKK+WFvOWLmSA8IGtlbm11XCA7Civot6/ogqkgPCByb2tlblwgOwor5Ly86aGUIDwgbmlnYW9cIDsKK+eUsue+hSA8IGtvdXJhXCA7Civoh6rnlLEgPCBqaXl1dVwgOwor5qOE6IOMIDwga2loYWlcIDsKK+S+v+ihoyA8IGJlbicnaVwgOwor5YaG5YWJIDwgZW5rb3VcIDsKK+iHqueUqCA8IGppeW91XCA7Civkvb/pgJQgPCBzaGl0b1wgOwor6Lu95b6uIDwga2VpYmlcIDsKK+WFteWMqiA8IGhlaWhpXCA7Civlt6XlhbcgPCBrb3VndVwgOwor55m75Z2CIDwgdG9oYW5cIDsKK+WvjOmJsSA8IGZ1a291XCA7Civkvq7oqIAgPCBidWdlblwgOwor6Ly/5ZywIDwgeW9jaGlcIDsKK+iKuOWtkCA8IGdlaWtvXCA7Civog4zpm6IgPCBoYWlyaVwgOwor5bem5YK+IDwgc2FrZWlcIDsKK+S/neiPjCA8IGhva2luXCA7CivlhavljaYgPCBoYWtrZVwgOwor6Lu95bqmIDwga2VpZG9cIDsKK+W3tOS6uiA8IGhhamluXCA7CivnlLvntJkgPCBnYXNoaVwgOwor5YWs5YufIDwga291Ym9cIDsKK+eVquebriA8IGJhbm1lXCA7CivlpKfkvK/mr40gPCBvb29iYVwgOwor5YW85YKZIDwga2VuYmlcIDsKK+WvhOmHkSA8IGtpa2luXCA7CivotbDot68gPCBzb3Vyb1wgOwor6a2U5by+IDwgbWFkYW5cIDsKK+WyoeebriA8IG9rYW1lXCA7CivlrpjpnIAgPCBrYW5qdVwgOwor55Ge6ZuyIDwgenVpdW5cIDsKK+mrmOa4qSA8IGtvdW9uXCA7CivlsL7oirEgPCBvYmFuYVwgOwor5a++6KmxIDwgdGFpd2FcIDsKK+S8nemmrCA8IHRlbm1hXCA7CivovY3lj4kgPCB0ZXNzYVwgOwor5L6d6KiXIDwgaXRha3VcIDsKK+iEs+ijoSA8IG5vdXJpXCA7CivmqKnljJYgPCBnb25nZVwgOwor6Ium5ZCfIDwga3VnaW5cIDsKK+iKuOWmkyA8IGdlaWdpXCA7Civot6/nt5ogPCByb3NlblwgOwor6LWk6LqrIDwgYWthbWlcIDsKK+WFteWCmSA8IGhlaWJpXCA7Civlr4zovrIgPCBmdW5vdVwgOwor5L+u576FIDwgc2h1cmFcIDsKK+iKpeWtkCA8IGtlc2hpXCA7CivnlpHngrkgPCBnaXRlblwgOwor5qi95L+OIDwgc29uc29cIDsKK+S+jeismyA8IGppa291XCA7Civou43miYsgPCBndW50ZVwgOwor5qip5YipIDwga2VucmlcIDsKK+S8mumjsiA8IGthaWluXCA7Civlhbjkvo0gPCB0ZW5qaVwgOwor5a6J6Z2ZIDwgYW5zZWlcIDsKK+mnhei3ryA8IGVraXJvXCA7CivlhaXlhoUgPCBqdWRhaVwgOwor5YWa5YuZIDwgdG91bXVcIDsKK+WFt+S9kyA8IGd1dGFpXCA7Civnmbrlj6UgPCBob2trdVwgOwor6Ium5Yq0IDwga3Vyb3VcIDsKK+anmOWtkCA8IHlvdXN1XCA7Civkv53ogrIgPCBob2lrdVwgOwor55S756i/IDwgZ2Frb3VcIDsKK+S+i+ipsSA8IHJlaXdhXCA7CivlhajlgpkgPCB6ZW5iaVwgOwor5YWa5YipIDwgdG91cmlcIDsKK+iHqueCiiA8IGppc3VpXCA7CivkvbPos5MgPCBrYWhpblwgOwor55Sf57O4IDwga2lpdG9cIDsKK+aooeWGmSA8IG1vc2hhXCA7Civlg6flvpIgPCBzb3V0b1wgOwor55aO5ryPIDwgc29yb3VcIDsKK+WuiemWkSA8IGFua2FuXCA7CivmqLnkuIogPCBqdWpvdVwgOwor5L2Z6LypIDwgeW9oYWlcIDsKK+aiheiKsSA8IGJhaWthXCA7CivlhIDlrrkgPCBnaXlvdVwgOwor55Sw56efIDwgZGVuc29cIDsKK+mmrOi7iiA8IGJhc2hhXCA7CivlhYjli5kgPCBzZW5tdVwgOwor5L+6562JIDwgb3JlcmFcIDsKK+aooeWAoyA8IG1vaG91XCA7Civlr4zosaogPCBmdWdvdVwgOwor6aas6LmEIDwgYmF0ZWlcIDsKK+i3teelmiA8IHNlbnNvXCA7Civot6/nqIsgPCByb3RlaVwgOwor57Sr6Zuy6IuxIDwgZ2VuZ2VcIDsKK+WvhOi0iCA8IGtpem91XCA7CivkvZPouq8gPCB0YWlrdVwgOwor55e05oSaIDwgY2hpZ3VcIDsKK+iDjOmDqCA8IGhhaWJ1XCA7Civkv53nt5ogPCBob3NlblwgOwor6Iux5Li7IDwgZWlzaHVcIDsKK+WFg+WIqSA8IGdlbnJpXCA7CivlgKvnkIYgPCByaW5yaVwgOwor6LuK5bqrIDwgc2hha29cIDsKK+Wvk+ipsSA8IGd1dXdhXCA7Civnlo/msLQgPCBzb3N1aVwgOwor5L2Z6LKhIDwgeW96YWlcIDsKK+iEvuiHnyA8IGhpem91XCA7Civlg6flsLwgPCBzb3VuaVwgOwor55m65L2cIDwgaG9zc2FcIDsKK+iHquayuyA8IGppY2hpXCA7CivnmZLlkIggPCB5dWdvdVwgOwor5YWF5YKZIDwganV1YmlcIDsKK+iEvuiFqyA8IGhpc2h1XCA7CivlsL7nsaAgPCBiaXJvdVwgOwor55eb5omLIDwgaXRhZGVcIDsKK+WutuiyoSA8IGthemFpXCA7Civou6LlqYYgPCB0ZW5iYVwgOwor6ay85a2QIDwgb25pZ29cIDsKK+WumOmAlCA8IGthbnRvXCA7Civoh6rmsJEgPCBqaW1pblwgOwor5L+d566hIDwgaG9rYW5cIDsKK+aghOi7oiA8IGVpdGVuXCA7CivmpJzms6IgPCBrZW5wYVwgOwor5a2X6Z2iIDwgamltZW5cIDsKK+i3r+ebpCA8IHJvYmFuXCA7CivoiLXmiYsgPCBkYXNodVwgOwor5L2Z6KuHIDwgeW9kYW5cIDsKK+WvjOijlSA8IGZ1eXV1XCA7CivnlKPnnYAgPCB1YnVnaVwgOwor5YGP5rOiIDwgaGVuaGFcIDsKK+WBveacrCA8IGdpaG9uXCA7Civoibblp78gPCBlbnNoaVwgOwor5YSq5YipIDwgeXV1cmlcIDsKK+alteaEjyA8IGdva3VpXCA7Civku67pnaIgPCBrYW1lblwgOwor5YG95pu4IDwgZ2lzaG9cIDsKK+Wyoea5ryA8IG9rYXl1XCA7Civkv53nqI4gPCBob3plaVwgOwor5L2Z6KiIIDwgeW9rZWlcIDsKK+WDheW3riA8IGtpbnNhXCA7Civkv6/nnrAgPCBmdWthblwgOwor6Ieo5qmfIDwgcmlua2lcIDsKK+acquabvuaciSA8IG1pem91XCA7CivoiYfluqsgPCB0ZWlrb1wgOwor5bCK6ICFIDwgc29uamFcIDsKK+i3oeebriA8IGF0b21lXCA7Civot6/nlKggPCByb3lvdVwgOwor5a626KiTIDwga2FrdW5cIDsKK+S9juiqniA8IHRlaWdvXCA7Civlrp/osrsgPCBqaXBwaVwgOwor5YK+5beuIDwga2Vpc2FcIDsKK+eUt+eMqyA8IG9uZWtvXCA7CivnlKbnlJ8gPCBzb3NlaVwgOwor6LW36I2JIDwga2lzb3VcIDsKK+S9meijlSA8IHlveXV1XCA7CivltanlkbwgPCBzdXVrb1wgOwor5a6Y6LK7IDwga2FucGlcIDsKK+mkiumviSA8IHlvdXJpXCA7Civou43lpKsgPCBndW5wdVwgOwor55aO5p6XIDwgc29yaW5cIDsKK+WutuijgSA8IGthc2FpXCA7Civkv7PnlLsgPCBoYWlnYVwgOwor5LuW6Z2iIDwgdGFtZW5cIDsKK+Wwj+e0iyA8IGtvbW9uXCA7CivnlJ/nkIYgPCBzZWlyaVwgOwor6IWL56qpIDwgZWtpa2FcIDsKK+S7mOmajyA8IGZ1enVpXCA7Civlrrbonb8gPCBpZWJhZVwgOwor5qSc5p+7IDwga2Vuc2FcIDsKK+WCmeW/mCA8IGJpYm91XCA7CivlsI/nsosgPCBrb2lraVwgOwor5a6f6KiYIDwgamlra2lcIDsKK+S6uummrCA8IGppbmJhXCA7CivlhITliqsgPCBva2t1dVwgOwor6Ieq5pq0IDwgamlib3VcIDsKK+S+v+enmCA8IGJlbnBpXCA7CivlrpjoqbEgPCBrYW53YVwgOwor5Lyv54i26LK0IDwgb2ppa2lcIDsKK+eWjuaUviA8IHNvaG91XCA7CivkvZnolqsgPCB5b2t1blwgOwor6Ieq5piOIDwgamltZWlcIDsKK+iHqOaZgiA8IHJpbmppXCA7CivppIzpo58gPCBlamlraVwgOwor5a6a6KaPIDwgam91Z2lcIDsKK+iIueWwviA8IHNlbmJpXCA7Civku4rpmpsgPCBpbWF3YVwgOwor5YSE5YaGIDwgb2t1ZW5cIDsKK+WEgOWIgCA8IGdpdG91XCA7CivlrojorbcgPCBzaHVnb1wgOwor5Lya6LK7IDwga2FpaGlcIDsKK+WyqeaguSA8IGl3YW5lXCA7CivnlLfmu50gPCBvZGFraVwgOwor55Oc56eRIDwgdXJpa2FcIDsKK+i7veS+riA8IGtlaWJ1XCA7CivkvpvnsbMgPCBrdW1haVwgOwor5qCE6J66IDwgc2F6YWVcIDsKK+WApOautSA8IG5lZGFuXCA7CivlraTou40gPCBrb2d1blwgOwor5YG95oKqIDwgZ2lha3VcIDsKK+S6nOm6u+S7gSA8IGFtYW5pXCA7CivnlrLlvIogPCBoaWhlaVwgOwor5Lya6K2wIDwga2FpZ2lcIDsKK+adpemnlSA8IHJhaWdhXCA7Civpq5jluqcgPCBrb3V6YVwgOwor6Imv5Yy7IDwgcnlvdWlcIDsKK+S8neiomCA8IGRlbmtpXCA7CivkvJroqbEgPCBrYWl3YVwgOwor5L2Z6IqzIDwgeW9ob3VcIDsKK+S5sem6uyA8IHJhbm1hXCA7Civlgpjlr78gPCBzYW5qdVwgOwor5bGx5rKzIDwgc2FuZ2FcIDsKK+iAs+mghiA8IGppanVuXCA7CivkvL3ol40gPCBnYXJhblwgOwor5YSA5LuXIDwgZ2lqb3VcIDsKK+WuiOihmyA8IHNodWVpXCA7Civou43li5kgPCBndW5tdVwgOwor55Sj5rmvIDwgdWJ1eXVcIDsKK+mmmeiPryA8IGtvdWdlXCA7CivlsL7nh4ggPCBiaXRvdVwgOwor5L6b56WtIDwgZ3VzYWlcIDsKK+izk+i+niA8IGhpbmppXCA7CivkupTljYHot68gPCBpc29qaVwgOwor6Iie5a2QIDwgbWFpa29cIDsKK+iHquaFoiA8IGppbWFuXCA7Civmpb3lmaggPCBnYWtraVwgOwor55aR5b+1IDwgZ2luZW5cIDsKK+S9meiBniA8IHlvYnVuXCA7CivlraboqrIgPCBnYWtrYVwgOwor6aas6ICVIDwgYmFrb3VcIDsKK+i4j+afuyA8IHRvdXNhXCA7CivnlLvmpbwgPCBnYXJvdVwgOwor6ISx55quIDwgZGFwcGlcIDsKK+adpemZoiA8IHJhaWluXCA7Civkvo3npa0gPCBqaXNhaVwgOwor6LuN5YKZIDwgZ3VuYmlcIDsKK+eUo+awlyA8IHNhbmtlXCA7CivnlKPmr5sgPCB1YnVnZVwgOwor6IWQ54ibIDwgZnVyYW5cIDsKK+iEseeWvSA8IGRhc3NvXCA7CivlsqnmiLggPCBpd2F0b1wgOwor5a+/55uDIDwganVoYWlcIDsKK+iHquW8gSA8IGppYmVuXCA7CivnlarmiYsgPCBiYW50ZVwgOwor5YG45a6JIDwgdG91YW5cIDsKK+Wwj+eQtCA8IG9nb3RvXCA7Civkv4TnhLYgPCBnYXplblwgOwor55S75p2/IDwgZ2FiYW5cIDsKK+Wtl+iokyA8IGppa3VuXCA7CivmorPmr5sgPCBzb21vdVwgOwor6aOb6Zu7IDwgaGlkZW5cIDsKK+S6jOmajiA8IG5pa2FpXCA7CivnlLvmnZAgPCBnYXphaVwgOwor6LuN5LqLIDwgZ3VuamlcIDsKK+eQhuiyoSA8IHJpemFpXCA7CivnlLvmnKwgPCBnYWhvblwgOwor55W45b2iIDwga2lrZWlcIDsKK+S7o+itsCA8IGRhaWdpXCA7CivotbDnoLQgPCBzb3VoYVwgOwor5YK15YuZIDwgc2FpbXVcIDsKK+i6q+WIhiA8IG1pYnVuXCA7Civos4Tos4IgPCB3YWlyb1wgOwor6IKy6IuxIDwgaWt1ZWlcIDsKK+Wwj+eKrCA8IGtvaW51XCA7CivnlLHmnaUgPCB5dXJhaVwgOwor5Ly9576FIDwga3lhcmFcIDsKK+S7j+iyqCA8IGZ1a2thXCA7CivmnbHpg70gPCB0b3V0b1wgOwor5p2x6YOoIDwgdG91YnVcIDsKK+S7ruijhSA8IGthc291XCA7Civoh6rlsL0gPCBqaWppblwgOwor55CG6KuWIDwgcmlyb25cIDsKK+WBj+W3riA8IGhlbnNhXCA7CivlsIrniLYgPCBzb25wdVwgOwor5YG95aCxIDwgZ2lob3VcIDsKK+Wumue+qSA8IHRlaWdpXCA7Civlgpnlk4EgPCBiaWhpblwgOwor6LKo6LuKIDwga2FzaGFcIDsKK+S/l+awlyA8IHpva2tlXCA7Civoh6rlrrMgPCBqaWdhaVwgOwor6LK46LK7IDwgdGFpaGlcIDsKK+eVmeaEjyA8IHJ5dXVpXCA7CivkvZXnrocgPCBuYW5rb1wgOwor5YCL5pWwIDwga29zdXVcIDsKK+WvneebuCA8IG5lem91XCA7CivporbpoqggPCBndWZ1dVwgOwor5qGC55quIDwga2VpaGlcIDsKK+mjsumFkiA8IGluc2h1XCA7CivkuqjpgYsgPCBrb3V1blwgOwor55CG6KejIDwgcmlrYWlcIDsKK+S9leetiSA8IG5hbnJhXCA7Civosqnot68gPCBoYW5yb1wgOwor5L+X5q2MIDwgem9ra2FcIDsKK+S5l+mmrCA8IGpvdWJhXCA7Civku5joqIAgPCBmdWdlblwgOwor6LWk55uuIDwgYWthbWVcIDsKK+S7i+ittyA8IGthaWdvXCA7Civku5boqIAgPCB0YWdvblwgOwor5LqU6YeNIDwgZ29qdXVcIDsKK+iInuWPsCA8IGJ1dGFpXCA7CivmnJ3ppIkgPCBhc2FnZVwgOwor5a+h55S3IDwgeWFtb29cIDsKK+S7luimiyA8IHRha2VuXCA7CivoiI7llrYgPCBzaGFlaVwgOwor5LyO6Iq4IDwgZ2lnZWlcIDsKK+eWjuWkliA8IHNvZ2FpXCA7Civlgbblm6AgPCBndXVpblwgOwor5a6J572uIDwgYW5jaGlcIDsKK+WCjeWPlyA8IGJvdWp1XCA7CivlsqnlsYsgPCBpd2F5YVwgOwor5LqM6YeNIDwgZnV0YWVcIDsKK+iCpeiCsiA8IGhpaWt1XCA7CivlsI/mu50gPCBvdGFraVwgOwor5YG95ZaEIDwgZ2l6ZW5cIDsKK+aip+ahkCA8IGdvdG91XCA7CivnlLvmiY0gPCBnYXNhaVwgOwor55S75omLIDwgZ2FzaHVcIDsKK+miqOmfuyA8IGZ1dWluXCA7Civku5booYwgPCB0YWtvdVwgOwor6LKh6LKoIDwgemFpa2FcIDsKK+S6kumBuCA8IGdvc2VuXCA7CivpoqjpnaEgPCBmdXViaVwgOwor5LyO6IO9IDwgZ2lub3VcIDsKK+acqumWiyA8IG1pa2FpXCA7CivosrTopqcgPCBraXJhblwgOwor6aKo6ZuyIDwgZnV1dW5cIDsKK+S5lumboiA8IGthaXJpXCA7CivnlrLlirQgPCBoaXJvdVwgOwor5YG95ZCNIDwgZ2ltZWlcIDsKK+S6uuiqniA8IGppbmdvXCA7Civpoqjpm4UgPCBmdXVnYVwgOwor5LqU6LyqIDwgZ29yaW5cIDsKK+WBveWPsiA8IGdpc2hpXCA7CivkuojpgbggPCB5b3NlblwgOwor5LmX6ZmkIDwgam91am9cIDsKK+WBj+WlhyA8IGhlbmtpXCA7CivkuLvppqwgPCBzaHVtZVwgOwor5L+d5pyJIDwgaG95dXVcIDsKK+iHquWcqCA8IGppemFpXCA7CivkuozovKogPCBuaXJpblwgOwor5pyd6ZaTIDwgYXNhbWFcIDsKK+iEs+azoiA8IG5vdWhhXCA7Civlrp/np5EgPCBqaWtrYVwgOwor5bGg5omAIDwgdG9zaG9cIDsKK+eWkeWVjyA8IGdpbW9uXCA7CivoiI7liKkgPCBzaGFyaVwgOwor5LqM6LuNIDwgbmlndW5cIDsKK+WAkuW9sSA8IHRvdWVpXCA7Civku5bolqYgPCB0YXplblwgOwor6aeE54qsIDwgZGFrZW5cIDsKK+mjm+i7iiA8IGhpc2hhXCA7CivlsbnluqYgPCBraXR0b1wgOwor5YCt5a+HIDwgd2Frb3VcIDsKK+Wwj+atjCA8IGtvdXRhXCA7CivkuLvpn7MgPCBzaHVvblwgOwor5a6555aRIDwgeW91Z2lcIDsKK+S9meeUnyA8IHlvc2VpXCA7Civnvo7pupcgPCBiaXJlaVwgOwor5a6a56SOIDwgdGVpc29cIDsKK+WyqeWgtCA8IGl3YWJhXCA7Civoh6rllY8gPCBqaW1vblwgOwor5YG95YW1IDwgZ2loZWlcIDsKK+iFleacqCA8IHVkZWdpXCA7CivnlLvluJYgPCBnYWpvdVwgOwor57696Z+zIDwgaGFvdG9cIDsKK+WAieW6qyA8IHNvdWtvXCA7CivmnLrovrogPCBraWhlblwgOwor55Ww5Zu9IDwgaWtva3VcIDsKK+adkeiyuyA8IHNvbnBpXCA7Civos6LogIUgPCBrZW5qYVwgOwor5pys6YOoIDwgaG9uYnVcIDsKK+S6kuitsiA8IGdvam91XCA7Civlr77mrKcgPCB0YWlvdVwgOwor6ICB6LqvIDwgcm91a3VcIDsKK+eUo+W+jCA8IHNhbmdvXCA7CivnlKjluqYgPCB5b3Vkb1wgOwor5pu46ZmiIDwgc2hvaW5cIDsKK+ahkOayuSA8IHRvdXl1XCA7CivmnKrpgYIgPCBtaXN1aVwgOwor55Sf5b6SIDwgc2VpdG9cIDsKK+eUn+W+jCA8IHNlaWdvXCA7CivohJrmsJcgPCBrYWtrZVwgOwor546L6YGTIDwgb3Vkb3VcIDsKK+izm+e+jiA8IHNhbmJpXCA7CivohZDmlZcgPCBmdWhhaVwgOwor6LmE5Y+JIDwgdGVpc2FcIDsKK+acqOmAmiA8IGFrZWJpXCA7Civku5XoiJ4gPCBqaW1haVwgOwor6LaK5qipIDwgZWtrZW5cIDsKK+i3i+aJiCA8IGJha2tvXCA7CivkvZnnh7wgPCB5b2ppblwgOwor6Ieq5YmNIDwgamltYWVcIDsKK+iDg+eXmyA8IGl0c3V1XCA7CivlsI/mnp0gPCBrb2VkYVwgOwor6IOD55eFIDwgaWJ5b3VcIDsKK+iHquWIhiA8IGppYnVuXCA7Civotbfmr5sgPCBraW1vdVwgOwor55Gq55GZIDwgbWVub3VcIDsKK+miqOmCqiA8IGZ1dWphXCA7CivkvZzngrogPCBzYWt1aVwgOwor5a6J55ygIDwgYW5taW5cIDsKK+iHquWFmiA8IGppdG91XCA7CivlsL/mhI8gPCBueW91aVwgOwor5pyb6YGgIDwgYm91ZW5cIDsKK+S6iOiogCA8IHlvZ2VuXCA7CivkuZ3ovKogPCBrdXJpblwgOwor5Lmx6LK7IDwgcmFucGlcIDsKK+S7luiBniA8IHRhYnVuXCA7CivmnKrouI8gPCBtaXRvdVwgOwor5a++5qGIIDwgdGFpYW5cIDsKK+S6iOimiyA8IHlva2VuXCA7Civku5bogIUgPCB0YXNoYVwgOwor5Luu57SNIDwga2Fub3VcIDsKK+eMqummliA8IGlrdWJpXCA7CivkuI3poIYgPCBmdWp1blwgOwor5LiA6aaWIDwgaXNzaHVcIDsKK+eUo+WxiyA8IHVidXlhXCA7Civku67nsqcgPCBrZXdhaVwgOwor6LGq6KqeIDwgZ291Z29cIDsKK+mhnumfuyA8IHJ1aWluXCA7CivpoZ7pn7MgPCBydWlvblwgOwor6LKn6IumIDwgaGlua3VcIDsKK+eUt+WlsyA8IGRhbmpvXCA7CivmoLnmsJcgPCBrb25raVwgOwor6LWk5q+bIDwgYWthZ2VcIDsKK+S4gOmjryA8IGlwcGFuXCA7Civnvo7poqggPCBiaWZ1dVwgOwor6aOb6KGMIDwgaGlrb3VcIDsKK+S6rOiPryA8IGtlaWthXCA7CivlronnlKMgPCBhbnphblwgOwor5LiA6aKoIDwgaXBwdXVcIDsKK+e+jumhlCA8IGJpZ2FuXCA7Civlrp/niLYgPCBqaXBwdVwgOwor6Ieq5LydIDwgamlkZW5cIDsKK+iBluiAhSA8IHNlaWphXCA7Civkvr/miYAgPCBiZW5qb1wgOwor5LiW6ZaTIDwgc2VrZW5cIDsKK+S4gOmgrSA8IGl0dG91XCA7Civoh6rku4ogPCBqaWtvblwgOwor5Li76YOoIDwgc2h1YnVcIDsKK+S4gOmghSA8IGlra291XCA7CivnlLDlpKsgPCBkZW5wdVwgOwor6aOb6J2XIDwgYmF0dGFcIDsKK+eQhuezuyA8IHJpa2VpXCA7CivnlKPlqaYgPCBzYW5wdVwgOwor5a+45pqHIDwgc3Vua2FcIDsKK+aetuepuiA8IGtha3V1XCA7CivnlKPlqYYgPCBzYW5iYVwgOwor6LGM6LGGIDwgZW5kb3VcIDsKK+S4i+mYqiA8IGdlaGFuXCA7Civlr7jmmYIgPCBzdW5qaVwgOwor5qK15a2XIDwgYm9uamlcIDsKK+eUmOWtkCA8IGFtYWdvXCA7CivkvZPmuKkgPCB0YWlvblwgOwor5LuB576pIDwgamluZ2lcIDsKK+S4u+i+niA8IHNodWppXCA7CivmmrTpo7IgPCBib3VpblwgOwor5a+d5qO6IDwgbmVrYW5cIDsKK+i1sOafuyA8IHNvdXNhXCA7CivkuIDpmo4gPCBpa2thaVwgOwor5pys6Ki0IDwgaG9uc29cIDsKK+S4gOmaiiA8IGl0dGFpXCA7Civmm7npgZQgPCBzb3VkYVwgOwor6LKn6ICFIDwgaGluamFcIDsKK+eUsOWcgyA8IGRlbnBvXCA7Civku5jnrosgPCBmdXNlblwgOwor5LiA6ZaDIDwgaXNzZW5cIDsKK+S+ruaFoiA8IGJ1bWFuXCA7CivkvZzmrYwgPCBzYWtrYVwgOwor5pyo5LmD5LyKIDwgbWlpcmFcIDsKK+e+qemHkSA8IGdpa2luXCA7Civkv53lroggPCBob3NodVwgOwor6aKo6KutIDwgZnV1eXVcIDsKK+S4lumKgCA8IHNlZ2luXCA7Civkv53lrZggPCBob3pvblwgOwor55SY5aSiIDwga2FubXVcIDsKK+WwpOW6piA8IHl1dWRvXCA7CivmnIjos6YgPCBnZXBwdVwgOwor5bGV5aKTIDwgdGVuYm9cIDsKK+ePque0oCA8IGtlaXNvXCA7CivmoLjmnpwgPCBrYWtrYVwgOwor5bCK5oSPIDwgc29uJydpXCA7CivpppnmsrkgPCBrb3V5dVwgOwor55So5ZmoIDwgeW91a2lcIDsKK+ahiOaWhyA8IGFubW9uXCA7CivmnJfoqaAgPCByb3VlaVwgOwor5YCS5Y+lIDwgdG91a3VcIDsKK+WAkuWPmSA8IHRvdWpvXCA7Civku67nnKAgPCBrYW1pblwgOwor5LqU6IeTIDwgZ296b3VcIDsKK+iDjOazsyA8IGhhaWVpXCA7CivkuqHogIUgPCBtb3VqYVwgOwor5LiH6YeMIDwgYmFucmlcIDsKK+eQhuefpSA8IHJpY2hpXCA7Civku4/npZYgPCBidXNzb1wgOwor6aeE5paHIDwgZGFidW5cIDsKK+e+qei7jSA8IGdpZ3VuXCA7CivlgK3kurogPCB3YWppblwgOwor5LiD6YeNIDwgbmFuYWVcIDsKK+S4i+mDjiA8IGdlcm91XCA7CivkuIrpg6ggPCBqb3VidVwgOwor6aCT6aasIDwgdG9ubWFcIDsKK+S4iemDqCA8IHNhbmJ1XCA7CivkuI3pgZwgPCBmdXNvblwgOwor5LiN6YGHIDwgZnVndXVcIDsKK+S+v+WunCA8IGJlbmdpXCA7CivkuI3pgJ4gPCBmdXRlaVwgOwor5bCP5bedIDwgb2dhd2FcIDsKK+S4jemAgCA8IGZ1dGFpXCA7Civnvo7phZIgPCBiaXNodVwgOwor5Li76Ki0IDwgc2h1c29cIDsKK+aal+mbsiA8IGFuJyd1blwgOwor5LqM5Y2B6YeNIDwgaGF0YWVcIDsKK+eUt+WFkCA8IGRhbmppXCA7CivkuozogIUgPCBuaXNoYVwgOwor55S75YOPIDwgZ2F6b3VcIDsKK+S/s+WRsyA8IGhhaW1pXCA7CivnlKjli5kgPCB5b3VtdVwgOwor5amm6YGTIDwgZnVkb3VcIDsKK+adkee/gSA8IHNvbm91XCA7Civlronms7AgPCBhbnRhaVwgOwor6IKl5rqAIDwgaGltYW5cIDsKK+S4i+i8qSA8IGdlaGFpXCA7CivlrrbmnaUgPCBrZXJhaVwgOwor5YCk5LiKIDwgbmVhZ2VcIDsKK+eUmOWRsyA8IGthbm1pXCA7Civkv7Plj6UgPCBoYWlrdVwgOwor5LiA6YGNIDwgaXBwZW5cIDsKK+iAgeiIlyA8IHJvdWhvXCA7Civmmpfpl5ggPCBhbnRvdVwgOwor5LiL6LuKIDwgZ2VzaGFcIDsKK+eUmuWPpSA8IGppbmt1XCA7CivkupvntLAgPCBzYXNhaVwgOwor55CG55SxIDwgcml5dXVcIDsKK+S6uuelliA8IGppbnNvXCA7CivkubHoiJ4gPCByYW5idVwgOwor5L6N5b6TIDwgamlqdXVcIDsKK+Wog+msnyA8IGFpa2FuXCA7CivkvJrmtL4gPCBrYWloYVwgOwor5LuW55WMIDwgdGFrYWlcIDsKK+S6lOe1gyA8IGdvZ2VuXCA7CivlsI/lrZcgPCBrb2F6YVwgOwor5bGL5Y+wIDwgeWF0YWlcIDsKK+WwiuWutiA8IHNvbmthXCA7CivkuIDou6IgPCBpdHRlblwgOwor55S75Lq6IDwgZ2FqaW5cIDsKK+mhjOi+niA8IGRhaWppXCA7CivkuIDou5IgPCBpa2tlblwgOwor5a6f5qKFIDwgbWl1bWVcIDsKK+i3r+WCjSA8IHJvYm91XCA7CivmnKzoiJcgPCBob25wb1wgOwor5LiN6LK3IDwgZnViYWlcIDsKK+S4i+izpCA8IGdlc2VuXCA7Civlr53mga8gPCBuZWlraVwgOwor5p6v54elIDwga29zb3VcIDsKK+acqOiIniA8IGtvbWFpXCA7CivogIHnv4EgPCByb3VvdVwgOwor57696J+7IDwgaGFhcmlcIDsKK+Wvm+aBlSA8IGthbmpvXCA7CivosrvnlKggPCBoaXlvdVwgOwor5Luj54i2IDwgZGFpZnVcIDsKK+iyq+ebriA8IGthbm1lXCA7CivnvqnoqJMgPCBnaWt1blwgOwor5LqI57SNIDwgeW9ub3VcIDsKK+S4h+iyqCA8IGJhbmthXCA7Civmnb/nm64gPCBpdGFtZVwgOwor6aCt6YeNIDwgenVvbW9cIDsKK+aiheWckiA8IGJhaWVuXCA7CivosrTnlLcgPCB0YWthb1wgOwor5a6a5pyfIDwgdGVpa2lcIDsKK+Wwj+WjsCA8IGtvZ29lXCA7CivmoYLlurUgPCBrZWlhblwgOwor5LiA6LKrIDwgaWtrYW5cIDsKK+eUn+S/nSA8IHNlaWhvXCA7Civkvr/lmaggPCBiZW5raVwgOwor5pyq6IGeIDwgbWltb25cIDsKK+mfs+mfuyA8IG9uJydpblwgOwor5pmv6ZuyIDwga2VpdW5cIDsKK+S6jOetiSA8IG5pdG91XCA7CivkuIroq60gPCBqb3V5dVwgOwor5LqI566XIDwgeW9zYW5cIDsKK+mhnuiqniA8IHJ1aWdvXCA7Civot6/kuIogPCByb2pvdVwgOwor5pys576pIDwgaG9uZ2lcIDsKK+ixhuiFkCA8IHRvdWZ1XCA7Civpp4TlvIEgPCBkYWJlblwgOwor5amm6K2mIDwgZnVrZWlcIDsKK+i1t+WxhSA8IGtpa3lvXCA7Civmnb/nlLsgPCBoYW5nYVwgOwor5L2T5oqAIDwgdGFpZ2lcIDsKK+S/neWGtyA8IGhvcmVpXCA7CivkvZnmhqQgPCB5b2Z1blwgOwor5LiK6Ki0IDwgam91c29cIDsKK+S/neWFqCA8IGhvemVuXCA7CivkuoznqK4gPCBuaXNodVwgOwor5p6c54S2IDwga2F6ZW5cIDsKK+mfs+majiA8IG9ua2FpXCA7Civnvo7oq4cgPCBiaWRhblwgOwor5a625oayIDwga2FrZW5cIDsKK+S7o+a8lCA8IGRhaWVuXCA7CivkvZnmg4UgPCB5b2pvdVwgOwor5a+h5bGFIDwga2FreW9cIDsKK+eKrOmmrCA8IGtlbmJhXCA7CivlsLzlg6cgPCBuaXNvdVwgOwor57+h57+gIDwgaGlzdWlcIDsKK+aer+a3oSA8IGtvdGFuXCA7CivmnKrnt7QgPCBtaXJlblwgOwor5LiA6KiIIDwgaWtrZWlcIDsKK+e+juimsyA8IGJpa2FuXCA7CivpoJDph5EgPCB5b2tpblwgOwor5L2Z5b+1IDwgeW9uZW5cIDsKK+mhjOipoCA8IGRhaWVpXCA7CivmnKjntr8gPCBtb21lblwgOwor5Li56ImyIDwgbmlpcm9cIDsKK+eOi+e1sSA8IG91dG91XCA7CivotqPlkbMgPCBzaHVtaVwgOwor6LOi5q+NIDwga2VuYm9cIDsKK+aal+i7oiA8IGFudGVuXCA7CivmnKrntI0gPCBtaW5vdVwgOwor6K2w6aGMIDwgZ2lkYWlcIDsKK+S9meW8iiA8IHlvaGVpXCA7CivotaTlrZcgPCBha2FqaVwgOwor6aSK54i2IDwgeW91ZnVcIDsKK+adpeeUsSA8IHJhaXl1XCA7CivmoLnlrZAgPCBuZWtrb1wgOwor5a+45ZyfIDwgc3VuZG9cIDsKK+S9leW6piA8IG5hbmRvXCA7Civog6HluqcgPCBhZ3VyYVwgOwor5qGI5aSWIDwgYW5nYWlcIDsKK+S9nOWLmeihoyA8IHNhbXVlXCA7Civmm7PoiKogPCBlaWtvdVwgOwor55CG5rOVIDwgcmlob3VcIDsKK+miqOe0gCA8IGZ1dWtpXCA7Civku6Pmr40gPCBkYWlib1wgOwor5Lq654K6IDwgamluJydpXCA7CivkvJ3mkq0gPCBkZW5wYVwgOwor57216KiAIDwgYmFnZW5cIDsKK+mojuWFtSA8IGtpaGVpXCA7CivmoZHlnJIgPCBzb3VlblwgOwor5LqS55SoIDwgZ295b3VcIDsKK+S4u+e+qSA8IHNodWdpXCA7CivmnaHnkIYgPCBqb3VyaVwgOwor5bCP5YuiIDwga296ZWlcIDsKK+WvhOWvkyA8IGtpZ3V1XCA7CivkuoznlaogPCBuaWJhblwgOwor6IOM5b6MIDwgaGFpZ29cIDsKK+eJoem5vyA8IG9qaWthXCA7CivmnKznp5EgPCBob25rYVwgOwor6aas5bGLIDwgdW1heWFcIDsKK+S8neaOiCA8IGRlbmp1XCA7CivlsI/liKQgPCBrb2JhblwgOwor576957+8IDwgdXlva3VcIDsKK+aeneavmyA8IGVkYWdlXCA7Civlr7/lj7ggPCBzdXNoaVwgOwor6aaW5bqnIDwgc2h1emFcIDsKK+mmluW6nCA8IHNodWZ1XCA7CivkuqHniLYgPCBib3VmdVwgOwor5pmu6YGNIDwgZnVoZW5cIDsKK+S9meWvkiA8IHlva2FuXCA7CivorZzpnaIgPCBmdW1lblwgOwor5Lu75pyfIDwgbmlua2lcIDsKK+i1reWcnyA8IHNoYWRvXCA7CivlrrblsYsgPCBrYW9rdVwgOwor6IGW5rK5IDwgc2VpeXVcIDsKK+eMn+iZjiA8IHJha2tvXCA7Civlr53lnYogPCBuZWJvdVwgOwor6aO054WuIDwgYW1lbmlcIDsKK+aeouapnyA8IHN1dWtpXCA7CivkvY/lsYUgPCBzdW1haVwgOwor6IOD5byxIDwgaWpha3VcIDsKK+S8neaJiyA8IHRzdXRlXCA7CivlrrXlr50gPCB5b2luZVwgOwor6Laz5LiLIDwgc29ra2FcIDsKK+Wwj+WDpyA8IGtvem91XCA7Civlrp3luqsgPCBob3Vrb1wgOwor6aCG6LevIDwganVucm9cIDsKK+S4iuiNtyA8IHV3YW5pXCA7CivkuIDokaYgPCBpY2hpaVwgOwor5a6u5bGFIDwgbWl5YWlcIDsKK+iEseWFjiA8IGRhdHRvXCA7Civnvr3nuZQgPCBoYW9yaVwgOwor5pqX6KaWIDwgYW5zaGlcIDsKK+ael+aqjiA8IHJpbmdvXCA7Civku6PmoYggPCBkYWlhblwgOwor6aaW5bC+IDwgc2h1YmlcIDsKK+i2iuWGrCA8IGV0dG91XCA7Civlronlv4MgPCBhbmppblwgOwor6LKq5rGaIDwgdGFuJydvXCA7CivkvqHlgKQgPCBrYWNoaVwgOwor5aaW6a2UIDwgeW91bWFcIDsKK+S4gOiJmCA8IGlzc291XCA7CivmnaXmvJQgPCByYWllblwgOwor5LyR5oSPIDwga3l1dWlcIDsKK+mkiuavjSA8IHlvdWJvXCA7CivkuIDoh7QgPCBpdGNoaVwgOwor6aeF5ZOhIDwgZWtpaW5cIDsKK+S8muW+lyA8IGV0b2t1XCA7Civlr53lj7AgPCBuZWRhaVwgOwor5LiN6ICBIDwgZnVyb3VcIDsKK+itt+mAgSA8IGdvc291XCA7Civku5bmnZEgPCB0YXNvblwgOwor5p2c5ryPIDwgenVyb3VcIDsKK+afu+WumiA8IHNhdGVpXCA7CivlrpflrrYgPCBzb3VrZVwgOwor54md6aasIDwgaGluYmFcIDsKK+e+juiCsiA8IGJpaWt1XCA7CivmoYjliIYgPCBhbmJ1blwgOwor5LuP5p6cIDwgYnVra2FcIDsKK+iAgeeIuiA8IHJvdXlhXCA7CivogIHniLYgPCByb3VmdVwgOwor6aCt6JOLIDwgenVnYWlcIDsKK+eQhuaVsCA8IHJpc3V1XCA7CivkupzmtYEgPCBhcnl1dVwgOwor6LGh54mZIDwgem91Z2VcIDsKK+itpumCjyA8IGtlaXJhXCA7CivlronlsYUgPCBhbmt5b1wgOwor5p2x5qynIDwgdG91b3VcIDsKK+mnhuWLlSA8IGt1ZG91XCA7CivotJTlsZMgPCBoaWlraVwgOwor5a+h5YW1IDwga2FoZWlcIDsKK+S7luaWuSA8IHRhaG91XCA7Civku7vmhI8gPCBuaW4nJ2lcIDsKK+mhnue4gSA8IHJ1aWVuXCA7CivkvZnllpggPCB5b3plblwgOwor6K6S6KqjIDwgemFuYnVcIDsKK+S6oeavjSA8IGJvdWJvXCA7CivlsYXnlZnlroggPCBpcnVzdVwgOwor5a6J5a6aIDwgYW50ZWlcIDsKK+S4i+e3kiA8IHNhZ2VvXCA7CivlroflrpkgPCB1Y2h1dVwgOwor6K6S6Ki0IDwgemFuc29cIDsKK+mfs+ipqSA8IG9uc2hpXCA7CivkvI7lt6UgPCBnaWtvdVwgOwor6Z+z6KiTIDwgb25rdW5cIDsKK+izouaEmiA8IGtlbmd1XCA7Civog4Plo4EgPCBpaGVraVwgOwor5L2Z5ZG9IDwgeW9tZWlcIDsKK+S4jeeyiyA8IGJ1c3VpXCA7Civlppbpm7IgPCB5b3V1blwgOwor6LW05Lu7IDwgZnVuaW5cIDsKK+izpuaApyA8IGZ1c2VpXCA7Civku6PmiZMgPCBkYWlkYVwgOwor5qGI5Lu2IDwgYW5rZW5cIDsKK+eNo+eariA8IGp1dWhpXCA7CivkupTmrrUgPCBnb2RhblwgOwor6LOb5oSPIDwgc2FuJydpXCA7Civmnb/mnKggPCBoYW5naVwgOwor6aOi5rCRIDwga2ltaW5cIDsKK+mjm+aziSA8IGhpc2VuXCA7CivmnKrnhLYgPCBtaXplblwgOwor6aeQ5LyKIDwgY2h1dWlcIDsKK+aYoOmFjSA8IGVpaGFpXCA7CivlraTluIYgPCBrb2hhblwgOwor5L2c5YuVIDwgc2Fkb3VcIDsKK+S4gOezuCA8IGlzc2hpXCA7CivkuI3nrYkgPCBmdXRvdVwgOwor5Lq65pmCIDwgbmluamlcIDsKK+mgreiEsyA8IHp1bm91XCA7CivmnKjngbAgPCBraWJhaVwgOwor576F57SXIDwgcmFzaGFcIDsKK+Wlh+m6lyA8IGtpcmVpXCA7Civku5XmiYsgPCBzaGl0ZVwgOwor6aas5Yi4IDwgYmFrZW5cIDsKK+WuruWPuCA8IGd1dWppXCA7CivnkIbmg7MgPCByaXNvdVwgOwor5a6l5ZKMIDwgeXV1d2FcIDsKK+itsOirliA8IGdpcm9uXCA7Civmm7jnlLsgPCBzaG9nYVwgOwor542y54mpIDwgZW1vbm9cIDsKK+WlrumjmyA8IGZ1bnBpXCA7CivogqXlpKcgPCBoaWRhaVwgOwor5L2Z5YWaIDwgeW90b3VcIDsKK+eQhuaApyA8IHJpc2VpXCA7CivmmYLoq5YgPCBqaXJvblwgOwor6K2m6K23IDwga2VpZ29cIDsKK+iyoOaVsCA8IGZ1c3V1XCA7Civkuozmp5ggPCBuaXlvdVwgOwor576p55y8IDwgZ2lnYW5cIDsKK+afu+WVjyA8IHNhbW9uXCA7CivnkIblv7UgPCByaW5lblwgOwor6Z2S6aasIDwgYW91bWFcIDsKK+itq+iqniA8IHNlbmdvXCA7CivmnKrmuoAgPCBtaW1hblwgOwor5a625YaFIDwga2FuYWlcIDsKK+S4luefpSA8IHNlY2hpXCA7Civlrprlk6EgPCB0ZWlpblwgOwor6LK35omLIDwga2FpdGVcIDsKK+WvneakheWtkCA8IG5laXN1XCA7CivmnaXmnJ8gPCByYWlraVwgOwor5LqV5qGBIDwgaWdldGFcIDsKK+aal+e/syA8IGFuJydlaVwgOwor5pyq5riIIDwgbWlzYWlcIDsKK+WnieiytCA8IGFuZWtpXCA7CivogIHmr40gPCByb3Vib1wgOwor5LuW5b+1IDwgdGFuZW5cIDsKK+Wum+WQjSA8IGF0ZW5hXCA7CivlpbPpm6MgPCBqb25hblwgOwor5aW06Zq3IDwgZG9yZWlcIDsKK+S4luebuCA8IHNlc291XCA7Civku7LlsYUgPCBuYWthaVwgOwor5pyr5rS+IDwgbWFwcGFcIDsKK+mdnumboyA8IGhpbmFuXCA7CivkuIvnn6UgPCBnZWRqaVwgOwor5aSq6byTIDwgdGFpa29cIDsKK+mgiOiHviA8IHNodXl1XCA7CivmnJ3mua8gPCBhc2F5dVwgOwor5aWU6aasIDwgaG9uYmFcIDsKK+iBluaBqSA8IHNlaW9uXCA7Civlq4zmsJcgPCBrZW5raVwgOwor5LiN55ygIDwgZnVtaW5cIDsKK+S6nOaXjyA8IGF6b2t1XCA7Civku4HmhYggPCBqaW5qaVwgOwor5Luu5a+TIDwga2FndXVcIDsKK+S7j+W+kiA8IGJ1dHRvXCA7Civmnb/miLggPCBpdGFkb1wgOwor5Lq65oiRIDwgamluZ2FcIDsKK+iyp+aJkyA8IGhpbmRhXCA7CivkvZnkurogPCB5b25pblwgOwor5LuW5bqXIDwgdGF0ZW5cIDsKK+Wkp+m7hCA8IGRhaW91XCA7CivkuIrnnYAgPCB1d2FnaVwgOwor5aSn6bq7IDwgdGFpbWFcIDsKK+acrOawlyA8IGhvbmtpXCA7CivogIHmqLkgPCByb3VqdVwgOwor5piv6KqNIDwgemVuaW5cIDsKK+iyoOaLhSA8IGZ1dGFuXCA7Civmmpfnt5ogPCBhbnNlblwgOwor5LiK55uuIDwgdXdhbWVcIDsKK+aghOWGoCA8IGVpa2FuXCA7CivkvY7kvqEgPCB0ZWlrYVwgOwor546L5rC0IDwgb3VzdWlcIDsKK+S7iuW+jCA8IGtvbmdvXCA7CivkuJbnlYwgPCBzZWthaVwgOwor5a2f5aWzIDwgbW91am9cIDsKK+mjm+adpSA8IGhpcmFpXCA7Civkuozmm7QgPCBuaWtvdVwgOwor6aas5LiKIDwgYmFqb3VcIDsKK+WutuS6uiA8IGtlbmluXCA7Civku4HmgZUgPCBqaW5qb1wgOwor5a2f5aSPIDwgbW91a2FcIDsKK+aWkemzqSA8IGlrYXJ1XCA7Civpoqjms6IgPCBmdXVoYVwgOwor5LuK5bqmIDwga29uZG9cIDsKK+S4i+eWsyA8IGdla2FuXCA7Civpn7PoibIgPCBuZWlyb1wgOwor6ICM5p2lIDwgamlyYWlcIDsKK+adnOaSsCA8IHp1c2FuXCA7CivorY7oqZAgPCBraXNzYVwgOwor5LiL55WMIDwgZ2VrYWlcIDsKK+S4i+eUtyA8IGdlbmFuXCA7CivkuIvnlLAgPCBnZWRlblwgOwor5pqW57C+IDwgbm9yZW5cIDsKK+S7luWxsSA8IHRhemFuXCA7CivlrZDlpbMgPCBzaGlqb1wgOwor546L5qipIDwgb3VrZW5cIDsKK+mjm+aVoyA8IGhpc2FuXCA7CivlrIzmhYsgPCBzaGluYVwgOwor576O55S3IDwgYmluYW5cIDsKK+e+jueUsCA8IGJpZGVuXCA7CivkuIDnlJ8gPCBpc3NlaVwgOwor5a6J5YWoIDwgYW56ZW5cIDsKK+S6lOaMhyA8IGdvc2hpXCA7Civku4/lrrYgPCBidWtrZVwgOwor54m56KiYIDwgdG9ra2lcIDsKK+aXoumBgiA8IGtpc3VpXCA7CivpoYznlLsgPCBkYWlnYVwgOwor6IGW5a+/IDwgc2VpanVcIDsKK+isueipsSA8IGtpbndhXCA7CivkuI3niq8gPCBmdWJvblwgOwor5LuK5a61IDwga295b2lcIDsKK+S6lOaIkiA8IGdva2FpXCA7CivmnZ7mhoIgPCBraXl1dVwgOwor6Z2i6YOoIDwgbWVuYnVcIDsKK+aYjuiomCA8IG1laWtpXCA7Civku5blp5MgPCB0YXNlaVwgOwor5aWz6YOOIDwgam9yb3VcIDsKK+iyoeW4gyA8IHNhaWZ1XCA7CivmnKrmnaUgPCBtaXJhaVwgOwor5LiN54eDIDwgZnVuZW5cIDsKK+S4gOeMriA8IGlra29uXCA7Civmlr3pjKAgPCBzZWpvdVwgOwor5a6J5L2PIDwgYW5qdXVcIDsKK+W6p+akheWtkCA8IHphaXN1XCA7CivpnZ7pgZMgPCBoaWRvdVwgOwor6Zyn6ZuwIDwgbXVmdW5cIDsKK+adv+WxiyA8IGl0YXlhXCA7CivkupTmgqogPCBnb2FrdVwgOwor5a2m5Yy6IDwgZ2Fra3VcIDsKK+S6uuWvvyA8IGppbmp1XCA7CivkuI7ngrkgPCB5b3RlblwgOwor5Lq65a62IDwgamlua2FcIDsKK+acquaYjiA8IG1pbWVpXCA7CivkupLmgbUgPCBnb2tlaVwgOwor6Z2i6LyqIDwgb21vd2FcIDsKK+iyp+WvjCA8IGhpbnB1XCA7Civnj77loLQgPCBnZW5iYVwgOwor6LKn5a62IDwgaGlua2FcIDsKK+mhnueBqyA8IHJ1aWthXCA7CivlrZjlkKYgPCB6b25waVwgOwor5p2/5a2QIDwgaXRhZ29cIDsKK+WloOmDvSA8IHRlbnRvXCA7CivogZblpJwgPCBzZWl5YVwgOwor5LuK5aSPIDwga29ua2FcIDsKK+S6iOaDsyA8IHlvc291XCA7Civku7vli5kgPCBuaW5tdVwgOwor5pa56YeMIDwgaG91cmlcIDsKK+eOi+aUvyA8IG91c2VpXCA7Civnvo7ngrkgPCBiaXRlblwgOwor5LqM5b+1IDwgbmluZW5cIDsKK+ism+ipsSA8IGtvdXdhXCA7Civos5vlkKYgPCBzYW5waVwgOwor5aSn6ZuoIDwgb29hbWVcIDsKK+WklemkiSA8IHl1dWdlXCA7CivlpKrpmbAgPCB0YWlpblwgOwor5pyd5pelIDwgYXNhaGlcIDsKK+S7o+WToSA8IGRhaWluXCA7CivkuIrmvJQgPCBqb3VlblwgOwor5paH6ZuFIDwgYnVuZ2FcIDsKK+S4jea6gCA8IGZ1bWFuXCA7CivotIjkuI4gPCB6b3V5b1wgOwor5Lmx5omTIDwgcmFuZGFcIDsKK+WklumhjCA8IGdlZGFpXCA7CivniaHooKMgPCBib3JlaVwgOwor5aWu6LW3IDwgZnVua2lcIDsKK+S6uuWkqyA8IG5pbnB1XCA7CivogLblrKIgPCB5YWpvdVwgOwor5aaE6KqeIDwgbW91Z29cIDsKK+iynuWppiA8IHRlaWZ1XCA7CivnvqnmsJEgPCBnaW1pblwgOwor6Kqe6aGeIDwgZ29ydWlcIDsKK+aWuemAlCA8IGhvdXRvXCA7Civku4/lmaggPCBidWtraVwgOwor5pel6KqyIDwgbmlra2FcIDsKK+iqnumghiA8IGdvanVuXCA7CivkuLvmn7sgPCBzaHVzYVwgOwor5aSa6ZujIDwgdGFuYW5cIDsKK+S4jea1hCA8IGZ1am91XCA7Civml6XoqJggPCBuaWtraVwgOwor5Lul5YyXIDwgaWhva3VcIDsKK+WtkOWIhiA8IGtvYnVuXCA7CivlpJbpnIAgPCBnYWlqdVwgOwor5a2m5L2NIDwgZ2FrdWlcIDsKK+acrOaJiyA8IGhvbnRlXCA7Civosp7lpbMgPCB0ZWlqb1wgOwor6Z+z56iLIDwgb250ZWlcIDsKK+e/u+aEjyA8IGhvbicnaVwgOwor6KyA6K2wIDwgYm91Z2lcIDsKK+S4jeazlSA8IGZ1aG91XCA7Civku6Pli5kgPCBkYWltdVwgOwor576F5ryiIDwgcmFrYW5cIDsKK+e9ueeBvSA8IHJpc2FpXCA7CivmnKrmiJAgPCBtaXNlaVwgOwor5pyA5pyfIDwgc2FpZ29cIDsKK+mbqumnhCA8IHNldHRhXCA7CivlpJXpmb0gPCB5dXVoaVwgOwor5aSc6ZaTIDwgeWFrYW5cIDsKK+iAgeW+jCA8IHJvdWdvXCA7Civml4XosrsgPCByeW9oaVwgOwor5LqV5a6IIDwgaW1vcmlcIDsKK+mdkuiynSA8IGFvZ2FpXCA7CivkuIvmsLQgPCBnZXN1aVwgOwor5aWI6L66IDwgbmFoZW5cIDsKK+aVtOmZpCA8IHNlaWpvXCA7CivkuI3mr5sgPCBmdW1vdVwgOwor5LiL5rCRIDwgZ2VtaW5cIDsKK+WrjOaCqiA8IGtlbicnb1wgOwor6LKn5ZyfIDwgaGluZG9cIDsKK+mbu+mboiA8IGRlbnJpXCA7CivpoZ7mr5QgPCBydWloaVwgOwor5LiN5q27IDwgZnVzaGlcIDsKK+S4i+autSA8IGdlZGFuXCA7Civpm7bpnLIgPCByZWlyb1wgOwor5LqM5bCBIDwgbmlmdXVcIDsKK+mbt+mbsiA8IHJhaXVuXCA7Civku5bli5UgPCB0YWRvdVwgOwor5LiK5q2vIDwgdXdhYmFcIDsKK+S6jOWuriA8IG5pZ3V1XCA7Civku5blirEgPCB0YXJlaVwgOwor54+t5ZOhIDwgaGFuaW5cIDsKK+irt+iqpiA8IGZ1dWp1XCA7CivkuIDmsLQgPCBpc3N1aVwgOwor5LqI5a6aIDwgeW90ZWlcIDsKK+iytOWQmyA8IGtpa3VuXCA7Civmlq3ot68gPCBkYW5yb1wgOwor54u854WZIDwgcm91ZW5cIDsKK+iytOWQjSA8IGtpbWVpXCA7Civku67ku6QgPCB0YXRvZVwgOwor5LiA5q61IDwgaXR0YW5cIDsKK+S4gOatsyA8IGlzc2FpXCA7CivmnaXloLQgPCByYWliYVwgOwor6Z+z55ukIDwgb25iYW5cIDsKK+S7i+WKqSA8IGthaWpvXCA7CivkuIfmqZ8gPCBiYW5raVwgOwor6Zuq6Iqx6I+cIDwgb2thcmFcIDsKK+mjr+WgtCA8IGhhbmJhXCA7CivlpKfpg6ggPCBkYWlidVwgOwor5pmC56m6IDwgamlrdXVcIDsKK+mfs+eXtCA8IG9uY2hpXCA7Civmlofpg6ggPCBtb25idVwgOwor5pqX5r65IDwgYW50YW5cIDsKK+ipsemhjCA8IHdhZGFpXCA7CivlpJrph40gPCB0YWp1dVwgOwor6Kmx6aCtIDwgd2F0b3VcIDsKK+S6i+WkiSA8IGppaGVuXCA7CivmmannlJ8gPCBva3V0ZVwgOwor6Zuo6ZaTIDwgYW1hYWlcIDsKK+WmluiJtiA8IHlvdWVuXCA7CivlpJbph44gPCBnYWl5YVwgOwor5LiL5qChIDwgZ2Vrb3VcIDsKK+irluitsCA8IHJvbmdpXCA7Civoqq3pgY4gPCBkb2trYVwgOwor5piO576OIDwgbWVpYmlcIDsKK+S7mOS8miA8IGZ1a2FpXCA7Civoq4vosqAgPCB1a2VvaVwgOwor5Li75oiRIDwgc2h1Z2FcIDsKK+mjveWSjCA8IGhvdXdhXCA7CivkuozloYEgPCBuaXJ1aVwgOwor6Kqk6YWNIDwgZ29oYWlcIDsKK+mboumWkyA8IHJpa2FuXCA7Civnv7vlrZcgPCBob25qaVwgOwor6aOb5aCxIDwgaGlob3VcIDsKK+S7luS6uiA8IHRhbmluXCA7CivlpJbpg6ggPCBnYWlidVwgOwor6KuW6KqeIDwgcm9uZ29cIDsKK+abnOaXpSA8IHlvdWJpXCA7CivlpJbpg44gPCB1aXJvdVwgOwor6Z2S6J2/IDwgYW9iYWVcIDsKK+e9qOazlSA8IGFucG91XCA7CivogIHlqYYgPCByb3ViYVwgOwor6LKh5YuZIDwgemFpbXVcIDsKK+S4i+abuCA8IGdlc2hvXCA7Civmlr3ooYwgPCBzZWtvdVwgOwor5pyA5oSbIDwgc2FpYWlcIDsKK+abluaYpyA8IGFpbWFpXCA7Civml6noi5cgPCBzYW5hZVwgOwor5LiH5py2IDwgYmFuZGFcIDsKK+acrOWutiA8IGhvbmtlXCA7CivlpJbpgZMgPCBnZWRvdVwgOwor5aqa5oWLIDwgYml0YWlcIDsKK+aZguefrSA8IGppdGFuXCA7CivmmpfmtpkgPCBhbnJ1aVwgOwor5pyJ5b+DIDwgdXNoaW5cIDsKK+ePvuS4liA8IGdlbnplXCA7CivmmqLmsJcgPCBub25raVwgOwor6ICB5aaTIDwgcm91Z2lcIDsKK+acquWumiA8IG1pdGVpXCA7CivkuI3mmJMgPCBmdWVraVwgOwor5pyq5a6MIDwgbWlrYW5cIDsKK+S4jeaYjiA8IGZ1bWVpXCA7Civosrzku5ggPCB0ZW5wdVwgOwor5pyr5a2jIDwgbWFra2lcIDsKK+iAgeWlsyA8IHJvdWpvXCA7CivkuIDmna8gPCBpcHBhaVwgOwor576O5pysIDwgYmlob25cIDsKK+S4iuaYoCA8IGpvdWVpXCA7CivnjovlrasgPCBvdXNvblwgOwor5LiL5pesIDwgZ2VqdW5cIDsKK+S4jeaWrSA8IGZ1ZGFuXCA7CivkuIDmnKwgPCBpcHBvblwgOwor5LiN5paHIDwgZnVidW5cIDsKK+adkOWZqCA8IHphaWtpXCA7Civlhavnmb7lsYsgPCB5YW95YVwgOwor5LiJ5pelIDwgbWlra2FcIDsKK+Wni+elliA8IHNoaXNvXCA7CivkuI3mlY8gPCBmdWJpblwgOwor6LGK5a+MIDwgaG91ZnVcIDsKK+e+juaZryA8IGJpa2VpXCA7CivnvqnmjJkgPCBnaWt5b1wgOwor6KuH6KmxIDwgZGFud2FcIDsKK+aVrOmBoCA8IGtlaWVuXCA7CivmnKrlqZogPCBtaWtvblwgOwor5pyd5a+dIDwgYXNhbmVcIDsKK+iyuOS4jiA8IHRhaXlvXCA7CivosqDlgrUgPCBmdXNhaVwgOwor5LmZ5a2QIDwgb3RvZ29cIDsKK+Wkp+ixhiA8IGRhaXp1XCA7Civpm6jph48gPCB1cnlvdVwgOwor576p5omLIDwgZ2lzaHVcIDsKK+S4gOaWuSA8IGlwcG91XCA7CivkuIDmlqQgPCBpa2tpblwgOwor576p5oimIDwgZ2lzZW5cIDsKK+iqueislyA8IGhpYm91XCA7Civnt4vpr4kgPCBoaWdvaVwgOwor576I5peFIDwga2lyeW9cIDsKK+e+qeaGpCA8IGdpZnVuXCA7CivkuozlkJsgPCBuaWt1blwgOwor5LiW5omNIDwgc2VzYWlcIDsKK+S6jOWPtyA8IG5pZ291XCA7CivmnIDlt6YgPCBzYWlzYVwgOwor5Lqh5YWQIDwgYm91amlcIDsKK+abuOW6qyA8IHNob2tvXCA7Civpm7vot68gPCBkZW5yb1wgOwor5LmZ5aWzIDwgb3RvbWVcIDsKK+aWh+iqniA8IGJ1bmdvXCA7CivkuJbmhYsgPCBzZXRhaVwgOwor546p5ZGzIDwgZ2FubWlcIDsKK+mhp+aFriA8IGtvcnlvXCA7CivlpJzoraYgPCB5YWtlaVwgOwor6Zqg6aGVIDwgaW5rZW5cIDsKK+eOi+WfjiA8IG91am91XCA7CivkuIrmiYsgPCBqb3V6dVwgOwor5pys5ZyfIDwgaG9uZG9cIDsKK+e+juaMmSA8IGJpa3lvXCA7CivkuIDmjJkgPCBpa2t5b1wgOwor6Zui6L6yIDwgcmlub3VcIDsKK+S4h+aIuCA8IGJhbmtvXCA7Civpn7PmupAgPCBvbmdlblwgOwor5LqM5YiGIDwgbmlidW5cIDsKK+aaq+aZgiA8IHphbmppXCA7CivmmI7npLogPCBtZWlqaVwgOwor6Zqg6Z2iIDwgaW5tZW5cIDsKK+iotOmhmCA8IHNvZ2FuXCA7CivnvqnlvJ8gPCBnaXRlaVwgOwor546H5ZyfIDwgc290dG9cIDsKK+S6pOS6kiA8IGtvdWdvXCA7CivoqqToqo0gPCBnb25pblwgOwor6Z2i5721IDwgbWVuYmFcIDsKK+WkluiqniA8IGdhaWdvXCA7CivlpJroqIAgPCB0YWdlblwgOwor5LqU5YCNIDwgZ29iYWlcIDsKK+mghuasoSA8IGp1bmppXCA7CivpoZjmhI8gPCBnYW4nJ2lcIDsKK+miqOWcnyA8IGZ1dWRvXCA7Civpm6Pot68gPCBuYW5yb1wgOwor54eD6LK7IDwgbmVucGlcIDsKK+S6lOS9kyA8IGdvdGFpXCA7CivmnInlpI8gPCB5dXVrYVwgOwor5LqM5YCNIDwgbmliYWlcIDsKK+S4i+W+oSA8IGdlZ3lvXCA7CivnjqnlhbcgPCBnYW5ndVwgOwor6Kmt6L6vIDwga2liZW5cIDsKK+Wlpee+qSA8IG9rdWdpXCA7Civpm7voqbEgPCBkZW53YVwgOwor54yb5omTIDwgbW91ZGFcIDsKK+mcgOimgSA8IGp1eW91XCA7CivlpKfom4cgPCBkYWlqYVwgOwor5pyx5Y2wIDwgc2h1aW5cIDsKK+WkluiiqyA8IGdhaWhpXCA7CivmnIDlpJogPCBzYWl0YVwgOwor5LiN5bmzIDwgZnVoZWlcIDsKK+Wls+ezuyA8IGpva2VpXCA7CivosLflnLAgPCB5YWNoaVwgOwor5LiK5bqnIDwgam91emFcIDsKK+e4gei+uiA8IGVucGVuXCA7Civkuovku7YgPCBqaWtlblwgOwor5LqM5LmXIDwgbmlqb3VcIDsKK+S4iuW4gyA8IGpvdWZ1XCA7CivmnKzli5kgPCBob25tdVwgOwor5LqM5LiWIDwgbmlzZWlcIDsKK+S6jOS4iSA8IG5pc2FuXCA7CivorbLmuKEgPCBqb3V0b1wgOwor6aKo5ZGzIDwgZnV1bWlcIDsKK+itt+azlSA8IGdvaG91XCA7CivosZrlhZAgPCB0b25qaVwgOwor6Zuj6KqeIDwgbmFuZ29cIDsKK+aVheiytyA8IGtvYmFpXCA7Civpm5HosrsgPCB6YXBwaVwgOwor6ZuR6LKoIDwgemFra2FcIDsKK+S4i+WxsSA8IGdlemFuXCA7CivmlZfoqLQgPCBoYWlzb1wgOwor5aOw6KqJIDwgc2VpeW9cIDsKK+S4iuWxiyA8IHV3YXlhXCA7CivnjovlhqAgPCBvdWthblwgOwor6aKo5YyWIDwgZnV1a2FcIDsKK+aatOW+kiA8IGJvdXRvXCA7CivnvqnlprkgPCBnaW1haVwgOwor5LiH5a+/IDwgYmFuanVcIDsKK+mhnuWtlyA8IHJ1aWppXCA7CivpmY3prZQgPCBnb3VtYVwgOwor6Z+z5qCTIDwgb25zZW5cIDsKK+mfu+abuCA8IGluc2hvXCA7Civmlr3nsbMgPCBzZW1haVwgOwor6K2y5q2pIDwgam91aG9cIDsKK+aWh+iLkSA8IGJ1bmVuXCA7Civnvo7lrrkgPCBiaXlvdVwgOwor6KuH576pIDwgZGFuZ2lcIDsKK+maoOmBgSA8IGludG9uXCA7CivkuIDlrpogPCBpdHRlaVwgOwor6aCT5oyrIDwgdG9uemFcIDsKK+mbkeiomCA8IHpha2tpXCA7CivpmqDpgIAgPCBpbnRhaVwgOwor6Z2x55quIDwgamlucGlcIDsKK+miqOWEgCA8IGZ1dWdpXCA7CivpmaTpnIogPCBqb3JlaVwgOwor5aGp6aGeIDwgZW5ydWlcIDsKK+mZsOmWgCA8IGlubW9uXCA7Civml6fnl74gPCBreXV1YVwgOwor6Z+75paHIDwgaW5idW5cIDsKK+acgOWPpCA8IHNhaWtvXCA7CivnuYHojIIgPCBoYW5tb1wgOwor5aSa6Iq4IDwgdGFnZWlcIDsKK+mZpOmaiiA8IGpvdGFpXCA7CivlpJboi5EgPCBnYWllblwgOwor5pyr5LiWIDwgbWFzc2VcIDsKK+S4h+WkqyA8IGJhbnB1XCA7CivkuLvli5kgPCBzaHVtdVwgOwor6Kut56S6IDwgeXVzaGlcIDsKK+mbheiogCA8IGdhZ2VuXCA7CivnhKHpoqggPCBtdWZ1dVwgOwor6Z2i55quIDwgbWVucGlcIDsKK+mgreW3viA8IHp1a2luXCA7CivnhKHpoZ4gPCBtdXJ1aVwgOwor576O5aSnIDwgYmlkYWlcIDsKK+e3mui3ryA8IHNlbnJvXCA7CivnhKHpoYwgPCBtdWRhaVwgOwor54Sh6aC8IDwgYnVyYWlcIDsKK+ippuijnCA8IHNoaWhvXCA7Civnvo7lo7AgPCBiaXNlaVwgOwor5aSa6IO9IDwgdGFub3VcIDsKK+S4i+WfjiA8IGdlam91XCA7CivmmK/mraMgPCB6ZXNlaVwgOwor5pWj6I+vIDwgc2FuZ2VcIDsKK+Wkj+iHsyA8IGdlc2hpXCA7Civnt4/ouqsgPCBzb3VtaVwgOwor5LiN5ZyoIDwgZnV6YWlcIDsKK+iqpOiBniA8IGdvYnVuXCA7CivpnaLnlLsgPCBtZW5nYVwgOwor54Sh6Zu7IDwgbXVkZW5cIDsKK+eEoemboyA8IGJ1bmFuXCA7CivlpJbogLMgPCBnYWlqaVwgOwor6Z2e55WqIDwgaGliYW5cIDsKK+acieS9mSA8IHl1dXlvXCA7CivnhKHpmZAgPCBtdWdlblwgOwor5LiN5ZaEIDwgZnV6ZW5cIDsKK+S4jeWVjyA8IGZ1bW9uXCA7CivmnInkuosgPCB5dXVqaVwgOwor56Gr6buE6I+vIDwgaW91a2FcIDsKK+e+qeWLhyA8IGdpeXV1XCA7CivpoJLluIMgPCBoYW5wdVwgOwor6KuW56C0IDwgcm9ucGFcIDsKK+e9teWjsCA8IGJhc2VpXCA7CivkuIvlk4EgPCBnZWhpblwgOwor5pyI5LiLIDwgZ2Vra2FcIDsKK+iok+i+niA8IGt1bmppXCA7CivlpKLnsr4gPCBtdXNlaVwgOwor6Z+z5oSfIDwgb25rYW5cIDsKK+S4jeWPgiA8IGZ1c2FuXCA7CivpoIbluo8gPCBqdW5qb1wgOwor6aGe5Y+lIDwgcnVpa3VcIDsKK+S4iuWPpCA8IGpvdWtvXCA7CivkuInlj4kgPCBzYW5zYVwgOwor6Zm66LevIDwga2Vucm9cIDsKK+mYsumZpCA8IGJvdWpvXCA7CivkuI3li6IgPCBidXplaVwgOwor6Kmx6Iq4IDwgd2FnZWlcIDsKK+e+juWQjSA8IGJpbWVpXCA7CivloanphbggPCBlbnNhblwgOwor5aSn56m0IDwgb29hbmFcIDsKK+eMquWPoyA8IGNob2tvXCA7CivmlqTnm64gPCBraW5tZVwgOwor54mn5q2MIDwgYm9ra2FcIDsKK+S4i+WJpCA8IGdlemFpXCA7CivnhKHpiq0gPCBtdXNlblwgOwor5aC06Z2iIDwgYmFtZW5cIDsKK+iogOi+niA8IGdlbmppXCA7CivnhKHpipggPCBtdW1laVwgOwor6Kqk566XIDwgZ29zYW5cIDsKK+eIqueJmSA8IHNvdWdhXCA7CivlpKrnpZYgPCB0YWlzb1wgOwor5pqX5aScIDwgYW4nJ3lhXCA7CivlpKnnpZYgPCB0ZW5zb1wgOwor6K235oayIDwgZ29rZW5cIDsKK+WkmuerryA8IHRhdGFuXCA7CivoqaDojYkgPCBlaXNvdVwgOwor5aOu576OIDwgc291YmlcIDsKK+WkmueoriA8IHRhc2h1XCA7CivnhKHphY0gPCBtdWhhaVwgOwor54qv5oSPIDwgaGFuJydpXCA7CivkuIvlg6cgPCBnZXNvdVwgOwor576p5Lq6IDwgZ2lqaW5cIDsKK+S4gOWIhiA8IGlwcHVuXCA7CivlpYfnkZ4gPCBraXp1aVwgOwor6KuW55CGIDwgcm9ucmlcIDsKK+Wkp+egtCA8IHRhaWhhXCA7Civpm4Xoh7QgPCBnYWNoaVwgOwor5LiN5YCrIDwgZnVyaW5cIDsKK+ipseiAhSA8IHdhc2hhXCA7Civml6Xms6IgPCBuaXBwb1wgOwor5LiW5LujIDwgc2VkYWlcIDsKK+S4luS6uiA8IHNlamluXCA7CivmlYXogIEgPCBrb3JvdVwgOwor5LiK5YCkIDwgdXdhbmVcIDsKK+eEoemBkyA8IG11ZG91XCA7CivkuI3kvr8gPCBmdWJlblwgOwor5aKX6KOcIDwgem91aG9cIDsKK+e5lOebriA8IG9yaW1lXCA7CivoqJPoqbEgPCBrdW53YVwgOwor54Sh6L66IDwgbXVoZW5cIDsKK+maoOiUvSA8IGlucGVpXCA7CivnvoXlhbggPCByYXRlblwgOwor6Zmw6KyAIDwgaW5ib3VcIDsKK+iok+ipgSA8IGt1bmtvXCA7CivlppPmpbwgPCBnaXJvdVwgOwor5paH55uuIDwgYXlhbWVcIDsKK+WkieenuyA8IGhlbicnaVwgOwor5LiL5Lq6IDwgZ2VuaW5cIDsKK+aatOWIqSA8IGJvdXJpXCA7CivmmpfllqkgPCBhbicneXVcIDsKK+WhkemAoCA8IHNvem91XCA7CivlqZrlhIAgPCBrb25naVwgOwor57SZ6a2aIDwgc2hpbWlcIDsKK+S4h+S6iyA8IGJhbmppXCA7Civoq7jmtL4gPCBzaG9oYVwgOwor5LiK5LiLIDwgam91Z2VcIDsKK+S4ieS4liA8IHNhbnplXCA7Civpm7vno4EgPCBkZW5qaVwgOwor6aCR5Zu6IDwgZ2Fua29cIDsKK+e+juS6uiA8IGJpamluXCA7CivnvbflhY0gPCBoaW1lblwgOwor5aSn55O2IDwgb29iaW5cIDsKK+iogOiqniA8IGdlbmdvXCA7CivlpLfni4QgPCBpdGVraVwgOwor5pqX5ZCbIDwgYW5rdW5cIDsKK+aal+WQiCA8IGFuZ291XCA7CivorbflsrggPCBnb2dhblwgOwor5b6h56We6YWSIDwgb21pa2lcIDsKK+eJqeaVhSA8IGJ1a2tvXCA7CivlpKnnkIYgPCB0ZW5yaVwgOwor57Sg6aSKIDwgc295b3VcIDsKK+WnkOW+oSA8IGFuZWdvXCA7CivlpJznlaogPCB5b2JhblwgOwor6Zyy54K5IDwgcm90ZW5cIDsKK+mfs+WkpyA8IG9uZGFpXCA7Civpn7Plo7AgPCBvbnNlaVwgOwor5aSa55SoIDwgdGF5b3VcIDsKK+WkmueUoyA8IHRhc2FuXCA7CivntKDpoZQgPCBzdWdhb1wgOwor5pS557WEIDwga2Fpc29cIDsKK+e0q+mbsiA8IHNoaXVuXCA7Civnt6jogIUgPCBoZW5qYVwgOwor5aWz5qipIDwgam9rZW5cIDsKK+WkqeeLlyA8IHRlbmd1XCA7CivlpaXmra8gPCBva3ViYVwgOwor5pep5pyfIDwgc291a2lcIDsKK+e0oOmdoiA8IHN1bWVuXCA7CivnuKvnm64gPCBudWltZVwgOwor54Sh6KyAIDwgbXVib3VcIDsKK+aXheasoSA8IHJ5b2ppXCA7Civml6XmnKwgPCBuaWhvblwgOwor54Sh6KuWIDwgbXVyb25cIDsKK+mdnualrSA8IGhpZ291XCA7Civml6bmmq4gPCB0YW5ib1wgOwor57O46a2aIDwgaXRveW9cIDsKK+mbqOedgCA8IGFtYWdpXCA7CivlqIHlnKcgPCBpYXRzdVwgOwor54Sh6KiAIDwgbXVnb25cIDsKK+WmguaYryA8IG55b3plXCA7CivlqIHlmocgPCBpa2FrdVwgOwor5pWw55CGIDwgc3V1cmlcIDsKK+eGseeggiA8IG5lc3NhXCA7CivlpKnngasgPCB0ZW5waVwgOwor54yK5LiLIDwgZ2Vpa2FcIDsKK+mYsuittyA8IGJvdWdvXCA7CivpoK3kuIogPCB6dWpvdVwgOwor6Z2S5qKFIDwgYW91bWVcIDsKK+Whl+ijhSA8IHRvc291XCA7CivmlYXnn6UgPCBrb2NoaVwgOwor6Zqg57eaIDwgaW5zZW5cIDsKK+imlumHjiA8IHNoaXlhXCA7CivpmbDojI4gPCBpbmtlaVwgOwor54eg54GrIDwgb2tpYmlcIDsKK+mfs+WQjSA8IG9ubWVpXCA7CivlpqXlvZMgPCBkYXRvdVwgOwor5pmC5aCxIDwgamlob3VcIDsKK+e1jOi3ryA8IGtlaXJvXCA7CivloanolLUgPCBlbnpvdVwgOwor5pig5bCEIDwgZWlzaGFcIDsKK+iruuaWhyA8IG9ubW9uXCA7CivloqjntbUgPCBzdW1pZVwgOwor57Sw6YOoIDwgc2FpYnVcIDsKK+e3tOejqCA8IHJlbm1hXCA7CivorJ3mgakgPCBzaGFvblwgOwor5piG5biDIDwga29uYnVcIDsKK+mbsueFmSA8IHVuJydlblwgOwor5aW95omTIDwga291ZGFcIDsKK+mYsuihmyA8IGJvdWVpXCA7CivlpKfmsrMgPCB0YWlnYVwgOwor6Zu354GrIDwgcmFpa2FcIDsKK+e2sue+hSA8IG1vdXJhXCA7CivoqJPnvqkgPCBrdW5naVwgOwor5pio5aScIDwgeXV1YmVcIDsKK+eEoeiTiyA8IG11Z2FpXCA7CivopofpgZMgPCBoYWRvdVwgOwor6KW/6YOoIDwgc2VpYnVcIDsKK+mbh+eUqCA8IGtveW91XCA7Civpn7Plg48gPCBvbnpvdVwgOwor5LyK5L2Q5pyoIDwgaXNha2lcIDsKK+Wmu+WlsyA8IHNhaWpvXCA7CivlpKfmrYwgPCBvb3V0YVwgOwor5paH5q6KIDwgbW9uanVcIDsKK+eEoeiPjCA8IG11a2luXCA7CivmlofmraYgPCBidW5idVwgOwor5oWw5a6J5ammIDwgaWFuZnVcIDsKK+eEoeiMtiA8IG11Y2hhXCA7Civpn7Pkvr8gPCBvbmJpblwgOwor5aSa5q+bIDwgdGFtb3VcIDsKK+Wkp+aouSA8IHRhaWp1XCA7CivlpJbmsJcgPCBnYWlraVwgOwor54Sh6Iq4IDwgbXVnZWlcIDsKK+Wkp+anmCA8IG9veW91XCA7Civoo73pursgPCBzZWltYVwgOwor57eP56S+IDwgc291amFcIDsKK+itpuWPpSA8IGtlaWt1XCA7CivpnZ7mg4UgPCBoaWpvdVwgOwor5pmC5YyWIDwgc2hpa2VcIDsKK+mbqOa7tCA8IHV0ZWtpXCA7Civpm7LmtbcgPCB1bmthaVwgOwor6ZuR54WuIDwgem91bmlcIDsKK+aYn+WbsyA8IHNlaXp1XCA7CivopoHot68gPCB5b3Vyb1wgOwor5aWz5b6hIDwgbnlvZ29cIDsKK+aWoeaXiyA8IGFzc2VuXCA7Civpm7Lms6UgPCB1bmRlaVwgOwor6K2m5YuZIDwga2VpbXVcIDsKK+eEoeiDvSA8IG11bm91XCA7CivniqzlhJIgPCBrZW5qdVwgOwor5aSn6KaL5b6XIDwgb29taWVcIDsKK+aVsOasoSA8IHN1dWppXCA7CivmlbXmqZ8gPCB0ZWtraVwgOwor6Zuy5rC0IDwgdW5zdWlcIDsKK+WmluWphiA8IHlvdWJhXCA7CivpnZLmga8gPCBhb2lraVwgOwor6ZaR6ZuFIDwga2FuZ2FcIDsKK+Wkp+aenSA8IG9vZWRhXCA7Civlo7Lmt6sgPCBiYWlpblwgOwor6Zyn5pWjIDwgbXVzYW5cIDsKK+Wls+W4nSA8IGpvdGVpXCA7Civnt5rnlLsgPCBzZW5nYVwgOwor5paw5omLIDwgYXJhdGVcIDsKK+eEoee9qiA8IG11emFpXCA7CivmlaPmrakgPCBzYW5wb1wgOwor6Zuo5rC3IDwgdWh5b3VcIDsKK+aWh+abuCA8IG1vbmpvXCA7Civml6LlrpogPCBraXRlaVwgOwor57Sb6K2wIDwgZnVuZ2lcIDsKK+mZpOeulyA8IGpvemFuXCA7CivorbDkvJogPCBnaWthaVwgOwor5bCE5omL5bqnIDwgaXRlemFcIDsKK+ippua8lCA8IHNoaWVuXCA7CivmkqvogrIgPCBidWlrdVwgOwor6Kqe5qC5IDwgZ29rb25cIDsKK+eGseazoiA8IG5lcHBhXCA7CivlpJrmnJsgPCB0YWJvdVwgOwor5aWz5bCKIDwgam9zb25cIDsKK+eJouWbuiA8IHJvdWtvXCA7CivoqbHms5UgPCB3YWhvdVwgOwor54KJ6L66IDwgcm9oZW5cIDsKK+eFqeeRoyA8IGhhbnNhXCA7Civnt4/nkIYgPCBzb3VyaVwgOwor54Sh57OWIDwgbXV0b3VcIDsKK+mZveeariA8IHlvdWhpXCA7CivlpKfmkI0gPCBvb3pvblwgOwor6Zyy5oKqIDwgcm9ha3VcIDsKK+eKgOWIqSA8IHNhaXJpXCA7CivlpJrmlbAgPCB0YXN1dVwgOwor57ay55uuIDwgYW1pbWVcIDsKK+WkqeaOiCA8IHRlbmp1XCA7CivlpJbmlrkgPCBzb3Bwb1wgOwor57KX6aSQIDwgc29zYW5cIDsKK+eyl+mjryA8IHNvaGFuXCA7CivplonpjpYgPCBoZWlzYVwgOwor57Sg6KGMIDwgc29rb3VcIDsKK+e1uee1tSA8IGtpbnVlXCA7CivorZzku6MgPCBmdWRhaVwgOwor5aGp56iOIDwgZW56ZWlcIDsKK+e1tee1uSA8IGVnaW51XCA7CivpmqDnhLYgPCBpbnplblwgOwor6Kqe5pWwIDwgZ29zdXVcIDsKK+aYoOWAqyA8IGVpcmluXCA7Civnsr7pi60gPCBzZWllaVwgOwor6Zuy5pmvIDwgdW5rZWlcIDsKK+eJiOWbsyA8IGhhbnRvXCA7CivlpYflt4wgPCBraWdhblwgOwor5aeJ5LiKIDwgYW5ldWVcIDsKK+eEoeeovSA8IG11a2VpXCA7CivopbLooaMgPCBzaHV1aVwgOwor6ZaT6YGgIDwgbWFkb29cIDsKK+eEoeeojiA8IG11emVpXCA7CivoqaDmrY4gPCBlaXRhblwgOwor5aSn5oSaIDwgdGFpZ3VcIDsKK+mbsuaVoyA8IHVuc2FuXCA7Civpm6LmnZEgPCByaXNvblwgOwor5aSc5oimIDwgeWFzZW5cIDsKK+S4jeaEj+awlyA8IGJ1aWtpXCA7CivntbXnrYYgPCBlZnVkZVwgOwor5aSa5omNIDwgdGFzYWlcIDsKK+aWh+aEjyA8IGJ1bicnaVwgOwor6KWk6KS4IDwgcmFucnVcIDsKK+Wkp+aCnyA8IGRhaWdvXCA7CivnhKHnpLwgPCBidXJlaVwgOwor57m75a2QIDwgc2h1c3VcIDsKK+mWi+mBiyA8IGthaXVuXCA7CivlpKfmgakgPCBkYWlvblwgOwor6Kmy5qGIIDwgZ2FpYW5cIDsKK+WkouaDsyA8IG11c291XCA7CivopabooqIgPCBqdWJhblwgOwor6Zuj5piTIDwgbmFuJydpXCA7Civml6jlkbMgPCB1bWFtaVwgOwor6Kmx5p+EIDwgd2FoZWlcIDsKK+WlieWuiSA8IGhvdWFuXCA7CivloJXog44gPCBkYXRhaVwgOwor5aSa5oSfIDwgdGFrYW5cIDsKK+aSreeoriA8IGhhc2h1XCA7CivoqrLlvbkgPCBrYWVraVwgOwor6Zmi55SfIDwgaW5zZWlcIDsKK+ijnOmhjCA8IGhvZGFpXCA7CivlpJrmg4UgPCB0YWpvdVwgOwor6Zui5pWjIDwgcmlzYW5cIDsKK+ippuahiCA8IHNoaWFuXCA7CivlpJrmgaggPCB0YWtvblwgOwor5aSn5bqmIDwgdGFpZG9cIDsKK+aVteaEjyA8IHRla2lpXCA7CivmlofluqsgPCBidW5rb1wgOwor6KaL6IieIDwgbWltYWlcIDsKK+Wglee9qiA8IGRhemFpXCA7CivloannlLAgPCBlbmRlblwgOwor54Sh55uKIDwgbXVla2lcIDsKK+Wkp+W3riA8IHRhaXNhXCA7CivlpKflt6UgPCBkYWlrdVwgOwor5aSa5b2iIDwgdGFrZWlcIDsKK+aVrOaFlSA8IGtlaWJvXCA7Civmj7Tou40gPCBlbmd1blwgOwor5pWs5oSbIDwga2VpYWlcIDsKK+WkmuW8gSA8IHRhYmVuXCA7CivpnZ7lkb0gPCBoaW1laVwgOwor6KyA5Y+bIDwgbXVob25cIDsKK+eyl+mKhSA8IHNvZG91XCA7CivmkanogJcgPCBtYW1vdVwgOwor54i25ZCbIDwgZnVrdW5cIDsKK+aUvuaYoCA8IGhvdWVpXCA7CivntIXok64gPCBndXJlblwgOwor6ZuB5pyoIDwgZ2FuZ2lcIDsKK+ijj+mdoiA8IHJpbWVuXCA7Civmlrnlm7MgPCBob3V6dVwgOwor6Zuo5oi4IDwgYW1hZG9cIDsKK+eEoeeUqCA8IG11eW91XCA7CivniaHkuLkgPCBib3RhblwgOwor5aSn5bC+IDwgdGFpYmlcIDsKK+eyl+mFkiA8IHNvc2h1XCA7Civlo7LmiYsgPCB1cml0ZVwgOwor5aKX5rS+IDwgem91aGFcIDsKK+iqmOW8lSA8IHl1dWluXCA7CivlpKflrrYgPCB0YWlrZVwgOwor6ZuF5paHIDwgZ2FidW5cIDsKK+imh+iAhSA8IGhhc2hhXCA7CivmlbDluqYgPCBzdXVkb1wgOwor5aSn5a2XIDwgb29hemFcIDsKK+aWreWbuiA8IGRhbmtvXCA7CivojY/og6HpursgPCBlZ29tYVwgOwor5paH5a2XIDwgbW9uamlcIDsKK+eHleW3oyA8IGVuc291XCA7CivlpaXljbAgPCBva3VpblwgOwor5aSr5ammIDwgbWVvdG9cIDsKK+WkmuWxpCA8IHRhc291XCA7CivoqLTmqKkgPCBzb2tlblwgOwor6Zu25bqmIDwgcmVpZG9cIDsKK+eCueiAhSA8IHRlbmphXCA7CivntbXnlLsgPCBrYWlnYVwgOwor6Z2e5YehIDwgaGlib25cIDsKK+Wls+WEqiA8IGpveXV1XCA7CivoqqTlsIQgPCBnb3NoYVwgOwor5aSW5a6uIDwgZ2VrdXVcIDsKK+WkquWkqyA8IHRheXV1XCA7CivlpKflpaUgPCBvb29rdVwgOwor5o6S6ZmkIDwgaGFpam9cIDsKK+WmguS4iiA8IGpvam91XCA7CivlpKflo7AgPCBvb2dvZVwgOwor5pOs5q+bIDwgZ2ltb3VcIDsKK+WlkeWNsCA8IGtlaWluXCA7CivopoHntKAgPCB5b3Vzb1wgOwor6Zuy5bGFIDwga3Vtb2lcIDsKK+mcsuWRvSA8IHJvbWVpXCA7CivpmbDmr5sgPCBpbm1vdVwgOwor57mU5ZywIDwgb3JpamlcIDsKK+mciuWkoiA8IHJlaW11XCA7CivlpJrlpKcgPCB0YWRhaVwgOwor5o2V6a+oIDwgaG9nZWlcIDsKK+WkmuWjsiA8IHRhYmFpXCA7CivpnLLlj7AgPCByb2RhaVwgOwor57mB5aSaIDwgaGFudGFcIDsKK+mZpOazlSA8IGpvaG91XCA7CivnhJzngokgPCBrb25yb1wgOwor6Zui5bK4IDwgcmlnYW5cIDsKK+eCree0oCA8IHRhbnNvXCA7CivlpJbloLQgPCBnYWliYVwgOwor6Zui5bGxIDwgcml6YW5cIDsKK+Wkp+WYmCA8IG9vdXNvXCA7CivmlbDlpJogPCBzdXV0YVwgOwor6ZqP5pmCIDwgenVpamlcIDsKK+mciuWckiA8IHJlaWVuXCA7CivmlL/lupwgPCBzZWlmdVwgOwor6Zi/5ryVIDwgYWtvZ2lcIDsKK+aWl+WNlyA8IHRvbmFuXCA7Civlo7LlrZAgPCB1cmlrb1wgOwor6Zu75aC0IDwgZGVuYmFcIDsKK+WkluWboCA8IGdhaWluXCA7CivpmLLngasgPCBib3VrYVwgOwor6Zyy5YWJIDwgcm9rb3VcIDsKK+Wkp+WRsyA8IG9vYWppXCA7Civmlr3kuLsgPCBzZXNodVwgOwor54Sh5rOVIDwgbXVob3VcIDsKK+aVheWxsSA8IGtvemFuXCA7CivlpKflj7AgPCBvb2RhaVwgOwor5Zyo6YeOIDwgemFpeWFcIDsKK+eBq+iJsiA8IGhpaXJvXCA7Civmloflj6UgPCBtb25rdVwgOwor6by/IDwgZ290c3VcIDsKK+eEoeawtCA8IG11c3VpXCA7CivpvI4gPCBrYW5hZVwgOwor54Sh5q+bIDwgbXVtb3VcIDsKK+Wbs+mdoiA8IHp1bWVuXCA7CivmlL7lsYEgPCBob3VoaVwgOwor5aOy5aWzIDwgYmFpdGFcIDsKK+WkqeWKqSA8IHRlbmpvXCA7CivnsbPosqggPCBiZWlrYVwgOwor54Sh5q6LIDwgbXV6YW5cIDsKK+mWi+iKsSA8IGthaWthXCA7CivlpJzlj4kgPCB5YXNoYVwgOwor5Z+655ukIDwga2liYW5cIDsKK+m3qSA8IGhldHN1XCA7CivlpKfliKQgPCBvb2JhblwgOwor57Sg55u0IDwgc3VuYW9cIDsKK+imqueIuiA8IG95YWppXCA7CivpnIDlk4EgPCBqdWhpblwgOwor6KOc6KybIDwgaG9rb3VcIDsKK+mbo+WgtCA8IG5hbmJhXCA7Civpto0gPCBpc3VrYVwgOwor5aOy5aC0IDwgdXJpYmFcIDsKK+m2iSA8IHV6dXJhXCA7CivpmaLmnKwgPCBpbnBvblwgOwor5aSa5YuiIDwgdGF6ZWlcIDsKK+Wbm+mhpyA8IHNoaWtvXCA7CivlpKflhJIgPCBkYWlqdVwgOwor5aSc5YmNIDwgeWF6ZW5cIDsKK+exs+iqniA8IGJlaWdvXCA7CivpmLvmraIgPCBzb3NoaVwgOwor5aSW5YuZIDwgZ2FpbXVcIDsKK+mbkeWkmiA8IHphdHRhXCA7CivlpJzliIYgPCB5YWJ1blwgOwor5pWX5ZugIDwgaGFpaW5cIDsKK+exs+ipsSA8IGJlaXdhXCA7CivpsZcgPCB1cm9rb1wgOwor6bC7IDwgdW5hZ2lcIDsKK+aWieWCmSA8IHNlaWJpXCA7CivntbXmloflrZcgPCBlbW9qaVwgOwor5aKT5omAIDwgYm9zaG9cIDsKK+mwkiA8IGF3YWJpXCA7CivpsI8gPCBoeW9rdVwgOwor6Kqe5YuiIDwgZ29zZWlcIDsKK+mwjSA8IGluYWRhXCA7CivoqqTliKQgPCBnb2hhblwgOwor6bCJIDwgaGlnYWlcIDsKK+mvjyA8IGFzYXJpXCA7Civlm7PpkZEgPCB6dWthblwgOwor6a6tIDwgc2hha2VcIDsKK+mbsuWPsCA8IHVuZGFpXCA7Civoqo3lkKYgPCBuaW5waVwgOwor54Sh5qC5IDwgbXVrb25cIDsKK+WkieWMliA8IGhlbmdlXCA7Civoqo3lj68gPCBuaW5rYVwgOwor6au6IDwgZ2F0c3VcIDsKK+e2suaIuCA8IGFtaWRvXCA7CivoqJjmhrYgPCBraW9rdVwgOwor5paH5LqLIDwgYnVuamlcIDsKK+aTrOaFiyA8IGdpdGFpXCA7CivnspfojLYgPCBzb2NoYVwgOwor5aSc5LyaIDwgeWFrYWlcIDsKK+e0lOeQhiA8IGp1bnJpXCA7Civpm6LlkIggPCByaWdvdVwgOwor6Zuj5Y+lIDwgbmFua3VcIDsKK+e3nuWtkCA8IGRvbnN1XCA7Civpm6Llj40gPCByaWhhblwgOwor57Sg54mHIDwgc29oZW5cIDsKK+iqpOS8nSA8IGdvZGVuXCA7Civns7jnm64gPCBpdG9tZVwgOwor57W15p+EIDwgZWdhcmFcIDsKK+iomOW/tSA8IGtpbmVuXCA7CivnhKHmlq0gPCBtdWRhblwgOwor6Zmw5oOoIDwgaW5zYW5cIDsKK+eEoeaVsCA8IG11c3V1XCA7CivntbXmnK0gPCBlZnVkYVwgOwor5pWw5L6hIDwgc3V1a2FcIDsKK+e2v+W4gyA8IG1lbnB1XCA7Civpm7vkvY0gPCBkZW4nJ2lcIDsKK+eyvueylyA8IHNlaXNvXCA7Civpm6jlhbcgPCBhbWFndVwgOwor6Z2oIDwgZWt1Ym9cIDsKK+aOqeiUvSA8IGVucGVpXCA7Civpm6PlhIAgPCBuYW5naVwgOwor6ZqJIDwgZ2V0c3VcIDsKK+ippuWQiCA8IHNoaWFpXCA7CivpmqDlo6sgPCBpbnNoaVwgOwor5aKz5aKTIDwgZnVuYm9cIDsKK+ihsOmBiyA8IHN1aXVuXCA7Civpm4Xlj7cgPCBnYWdvdVwgOwor6Kmg5ZCfIDwgZWlnaW5cIDsKK+aUv+WLmSA8IHNlaW11XCA7CivloLTmnKsgPCBiYXN1ZVwgOwor57a+5a2QIDwgcmluenVcIDsKK+eEoeaJjSA8IG11c2FpXCA7CivngqzngasgPCBreW9rYVwgOwor57Gz6IuxIDwgYmVpZWlcIDsKK+maoOWdiiA8IG9uYm91XCA7Civpmrvlj6UgPCBzZWtrdVwgOwor54Sh5oWuIDwgbXVyeW9cIDsKK+WggOaxnyA8IGhvcmllXCA7Civpm6Lku7sgPCByaW5pblwgOwor57WQ5p6cIDwga2Vra2FcIDsKK+ihsOi6ryA8IHN1aWt1XCA7Civpm6PkuosgPCBuYW5qaVwgOwor5Zyw6JS1IDwgaml6b3VcIDsKK+eEoeaDhSA8IG11am91XCA7Civpj4kgPCBzaHl1dVwgOwor6Y6nIDwgeW9yb2lcIDsKK+ipkOWPliA8IHNhc2h1XCA7Civpm4XlhYQgPCBnYWtlaVwgOwor6YyoIDwgaWthcmlcIDsKK+mMmCA8IHRzdW11XCA7CivnhKHlv7UgPCBtdW5lblwgOwor5Zue6LevIDwga2Fpcm9cIDsKK+imquacqCA8IG95YWdpXCA7Civpm5HkvZwgPCB6b3VzYVwgOwor6ZmQ5bqmIDwgZ2VuZG9cIDsKK+mIuiA8IGd5b2t1XCA7CivloYHmiZMgPCBydWlkYVwgOwor5Zyf6JS1IDwgZG96b3VcIDsKK+imi+anmCA8IG1peW91XCA7CivmlYXkuLsgPCBrb3NodVwgOwor6KW/5qynIDwgc2Vpb3VcIDsKK+imh+aoqSA8IGhha2VuXCA7CivnspfnrKggPCBzb2hvblwgOwor57Sh5qmfIDwgYm91a2lcIDsKK+Wbs+inoyA8IHp1a2FpXCA7CivlnLDoibIgPCBqaWlyb1wgOwor5Zyf6JGsIDwgZG9zb3VcIDsKK+aOque9riA8IHNvY2hpXCA7CivlopPlnLAgPCBib2NoaVwgOwor5Zyo6IuxIDwgemFpZWlcIDsKK+eznOeImyA8IGJpcmFuXCA7CivloLTmiYAgPCBiYXNob1wgOwor6KGX6LevIDwgZ2Fpcm9cIDsKK+Whl+W3pSA8IHRva291XCA7Civpmo/lk6EgPCB6dWlpblwgOwor5ouX6Z+zIDwgeW91b25cIDsKK+imi+aghCA8IG1pYmFlXCA7CivntbnluIMgPCBrZW5wdVwgOwor54Sh5bC9IDwgbXVqaW5cIDsKK+mZpOWkliA8IGpvZ2FpXCA7Civlopflk6EgPCB6b3VpblwgOwor57W15be7IDwgZW1ha2lcIDsKK+imi+acrCA8IG1paG9uXCA7CivpmaLlpJYgPCBpbmdhaVwgOwor57eP5YuZIDwgc291bXVcIDsKK+mXiuatqSA8IGthcHBvXCA7CivourUgPCBuZXJhdVwgOwor6Zqg5YWDIDwgaW5nZW5cIDsKK+eEoeWumCA8IG11a2FuXCA7Civln7rmnKwgPCBraWhvblwgOwor57KX56ClIDwgYXJhdG9cIDsKK+WgseaBqSA8IGhvdW9uXCA7CivntKDmnZAgPCBzb3phaVwgOwor57eP5Ye6IDwgc291ZGVcIDsKK+WckuiKuCA8IGVuZ2VpXCA7Civot5sgPCBiaWtrb1wgOwor5o2V6JmcIDwgaG9yeW9cIDsKK+mao+S/nSA8IHJpbnBvXCA7CivlopPlj4IgPCBib3NhblwgOwor6KO455y8IDwgcmFnYW5cIDsKK+e1tuWutiA8IHpla2tlXCA7CivoqJjlj7cgPCBraWdvdVwgOwor5r++57SZIDwgcm9zaGlcIDsKK+aRqeaQjSA8IG1hc29uXCA7CivloZTlqYYgPCB0b3ViYVwgOwor57Sg5pWwIDwgc29zdXVcIDsKK+Wik+WJjSA8IGJvemVuXCA7CivopqrlvqEgPCBveWFnb1wgOwor54K55pKtIDwgdGVucGFcIDsKK+iotOS6uiA8IHNvbmluXCA7CivooZfooaIgPCBnYWlrdVwgOwor6ZaL5ryUIDwga2FpZW5cIDsKK+e0i+aXpSA8IG1vbmJpXCA7CivpmaTlj7cgPCBqb2dvdVwgOwor5Zuw6IumIDwga29ua3VcIDsKK+mZpOWOuyA8IGpva3lvXCA7CivpmaLlj7cgPCBpbmdvdVwgOwor6ZqK5LyNIDwgdGFpZ29cIDsKK+ifu+mFuCA8IGdpc2FuXCA7CivlnLDnp58gPCBjaGlzb1wgOwor57Sw5b6uIDwgc2FpYmlcIDsKK+aLnei+niA8IGhhaWppXCA7CivlnJ/nrqEgPCBkb2thblwgOwor5aGK5ZyfIDwga2FpZG9cIDsKK+ijj+ebriA8IHVyYW1lXCA7CivoppbluqYgPCBzaGlkb1wgOwor57KX54WuIDwgYXJhbmlcIDsKK+imluW3riA8IHNoaXNhXCA7CivntKDmgKcgPCBzdWpvdVwgOwor57Sw5belIDwgc2Fpa3VcIDsKK+mZquS+jSA8IGJhaWppXCA7CivloLDloKQgPCBlbnRlaVwgOwor6JecIDwgYWthemFcIDsKK+Wcp+eglSA8IGFzc2FpXCA7CivnhKHlirkgPCBtdWtvdVwgOwor5Zyw55ukIDwgamliYW5cIDsKK+iWiiA8IGF6YW1pXCA7CivngavmobYgPCBoaW9rZVwgOwor5o2V57iEIDwgaG9qb3VcIDsKK+e1tuWPpSA8IHpla2t1XCA7CivnsKHntKAgPCBrYW5zb1wgOwor6JSmIDwgdHN1dGFcIDsKK+iUpCA8IGJpdHN1XCA7CivmirzpgIEgPCBvdXNvdVwgOwor5Zyf56CCIDwgZG9zaGFcIDsKK+eCueW3riA8IHRlbnNhXCA7CivloKHloYEgPCBob3J1aVwgOwor57SU5bqmIDwganVuZG9cIDsKK+Wcp+eXlSA8IGFra29uXCA7CivojKggPCBpYmFyYVwgOwor6IycIDwgYWthbmVcIDsKK+eyvuafuyA8IHNlaXNhXCA7CivojIAgPCBodXRzdVwgOwor6Iu2IDwgZGV0c3VcIDsKK+aBteavlOWvvyA8IGViaXN1XCA7CivloLTlkbMgPCBiYWFqaVwgOwor54OI5ammIDwgcmVwcHVcIDsKK+aOiOeUoyA8IGp1c2FuXCA7CivnhKHkvZMgPCBtdXRhaVwgOwor6KGM6ISaIDwgYW5neWFcIDsKK+eEoeS9jyA8IG11anV1XCA7Civmj7rmm7MgPCB5b3VlaVwgOwor5Zyf55SoIDwgZG95b3VcIDsKK+ieuumIvyA8IHJhZGVuXCA7CivnhKHkurogPCBtdW5pblwgOwor5Zyf55O2IDwgZG9iaW5cIDsKK+mYsuWFtyA8IGJvdWd1XCA7Civplbfmn4QgPCBuYWdhZVwgOwor6KWf5bqmIDwga2luZG9cIDsKK+iho+ezpyA8IGlyeW91XCA7CivpmLLlgpkgPCBib3ViaVwgOwor6IKtIDwgZG90c3VcIDsKK+e1kOWPpSA8IGtla2t1XCA7CivogosgPCBhYmFyYVwgOwor5omT6aCGIDwgZGFqdW5cIDsKK+aRguWutiA8IHNla2tlXCA7CivloIXlm7ogPCBrZW5nb1wgOwor5omL6aCGIDwgdGVqdW5cIDsKK+aJk+mbuyA8IGRhZGVuXCA7Civmj5DmoYggPCB0ZWlhblwgOwor5Zyn54K5IDwgYXR0ZW5cIDsKK+ijnOatoyA8IGhvc2VpXCA7Civmj6HmlqcgPCBha3VmdVwgOwor5omT6ZaLIDwgZGFrYWlcIDsKK+imgeWbsyA8IHlvdXp1XCA7CivopoHlm6AgPCB5b3VpblwgOwor56u26aasIDwga2VpYmFcIDsKK+a8j+ipsSA8IHJvdXdhXCA7CivmjqHmsrkgPCBzYWl5dVwgOwor5aC05LujIDwgYmFkYWlcIDsKK+eyl+aatCA8IHNvYm91XCA7CivlnLDmuKkgPCBjaGlvblwgOwor6KOP5q+bIDwgdXJha2VcIDsKK+mWgOaJiSA8IG1vbnBpXCA7CivploDmiLggPCBtb25rb1wgOwor57KSIDwgdHN1YnVcIDsKK+aKq+imiyA8IGhpa2VuXCA7Civnr6kgPCBmdXJ1aVwgOwor54Kt5ZujIDwgdGFkb25cIDsKK+WbnuebriA8IGthaW1lXCA7Civmu4Xph5EgPCBtZWtraVwgOwor562PIDwgaWthZGFcIDsKK+WcsOatqSA8IGNoaWhvXCA7CivmiYvpjKAgPCB0ZWpvdVwgOwor5Zyw5q2MIDwgaml1dGFcIDsKK+mWgOW+kiA8IG1vbnRvXCA7Civnp6sgPCBqb3RzdVwgOwor5Zuz54mIIDwgenVoYW5cIDsKK+eBq+WxsSA8IGthemFuXCA7Civns7vlm7MgPCBrZWl6dVwgOwor5Zyn5q27IDwgYXNzaGlcIDsKK+aJi+mHkSA8IHRla2luXCA7CivlnJ/msJEgPCBkb21pblwgOwor54K55YmNIDwgdGVtYWVcIDsKK+aOouafuyA8IHRhbnNhXCA7CivntI3lj5cgPCBub3VqdVwgOwor5omL6YWNIDwgdGVoYWlcIDsKK+aOiOaoqSA8IGp1a2VuXCA7CivnrYboqJggPCBoaWtraVwgOwor57KX5oKqIDwgc29ha3VcIDsKK+e0oOS9kyA8IHNvdGFpXCA7Civns57lnJ8gPCBmdW5kb1wgOwor55WZ5a6I5bGFIDwgcnVzdWlcIDsKK+mVt+WxhSA8IG5hZ2FpXCA7CivmvKvnvbUgPCBtYW5iYVwgOwor56uv6YqtIDwgaGFzZW5cIDsKK+eWmSA8IGdpdHN1XCA7CivkuI3lvpfmiYsgPCBmdWV0ZVwgOwor566q56ylIDwgdGFuc3VcIDsKK+Wbs+azlSA8IHp1aG91XCA7CivmvaTnm64gPCB1cnVtZVwgOwor5rmW6Z2iIDwga29tZW5cIDsKK+aPmuWxiyA8IGFnZXlhXCA7Civoo4/miYsgPCB1cmF0ZVwgOwor6J6f6Ju+IDwgbWVpZ2FcIDsKK+Wcp+aUvyA8IGFzc2VpXCA7CivmirzntbUgPCBvc2hpZVwgOwor5rmv6YqtIDwgeXVzZW5cIDsKK+mWsuWFtSA8IGVwcGVpXCA7Civoo5zlvKYgPCBob2dlblwgOwor6KGM54GvIDwgYW5kb25cIDsKK+aJi+ipsSA8IHNodXdhXCA7CivlnKfmjpIgPCBhcHBhaVwgOwor5Za26L6yIDwgZWlub3VcIDsKK+aJi+ijvSA8IHRlc2VpXCA7Civln47kuIsgPCBqb3VrYVwgOwor57KX5aSnIDwgc29kYWlcIDsKK+WbuuaciSA8IGtveXV1XCA7CivmuKnpoZQgPCBvbmdhblwgOwor54KK5LqLIDwgc3VpamlcIDsKK+eCjuS4iiA8IGVuam91XCA7CivmjbvmjKsgPCBuZW56YVwgOwor5ryU566XIDwgZW56YW5cIDsKK+a4qemghiA8IG9uanVuXCA7CivnqoHpo5sgPCB0b3BwaVwgOwor54Sh5oSP576pIDwgbXVpZ2lcIDsKK+exs+WvvyA8IGJlaWp1XCA7CivmipXntrIgPCB0b2FtaVwgOwor5pCN5L+dIDwgc29ucG9cIDsKK+ijj+WxiyA8IHVyYXlhXCA7CivmjqrlrpogPCBzb3RlaVwgOwor5oim6KiYIDwgc2Vua2lcIDsKK+aJi+iWhCA8IHRldXN1XCA7CivlnKjluqsgPCB6YWlrb1wgOwor56ul6KmxIDwgZG91d2FcIDsKK+mWk+S7oyA8IG1hZGFpXCA7CivlnKflt7sgPCBha2thblwgOwor5ryr55S7IDwgbWFuZ2FcIDsKK+aPmuWPpSA8IGFnZWt1XCA7Civoo5zloasgPCBob3RlblwgOwor57KX5ZOBIDwgc29oaW5cIDsKK+Wcn+W3pSA8IGRva291XCA7Civlm5vml6UgPCB5b2trYVwgOwor5omL6I2SIDwgdGVhcmFcIDsKK+exs+WhqSA8IGJlaWVuXCA7Civmjqnlo5UgPCBlbmdvdVwgOwor5Zyo5a62IDwgemFpa2VcIDsKK+ijnOWbniA8IGhva2FpXCA7Civmpb4gPCBoYXpvdVwgOwor5qSjIDwgc2hpZGVcIDsKK+mWgOS4iyA8IG1vbmthXCA7CivlmbTngasgPCBmdW5rYVwgOwor57KX5YipIDwgYXJhcmlcIDsKK+ijj+WcsCA8IHVyYWppXCA7Civmt6vpoqggPCBpbnB1dVwgOwor5omT6ICFIDwgZGFzaGFcIDsKK+aggyA8IHRvY2hpXCA7CivlnLDlo7AgPCBqaWdvZVwgOwor5Zu95bqrIDwga29ra29cIDsKK+adgSA8IGVidXJpXCA7CivnrYbnpo0gPCBoaWtrYVwgOwor6Jy76JuJIDwgdG9uYm9cIDsKK+ihjOaWuSA8IHl1a3VlXCA7Civoo7jlg48gPCByYXpvdVwgOwor5Zuz5b2iIDwgenVrZWlcIDsKK++8sO+8oyA8IHDEq3NoxKtcIDsKK+aJk+e3miA8IGRhc2VuXCA7CivlnLDlm7MgPCBjaGl6dVwgOwor6KGo5oSPIDwgaHlvdWlcIDsKK+aKgOeglCA8IGdpa2VuXCA7CivmiYvnuZQgPCB0ZW9yaVwgOwor6KO45L2TIDwgcmF0YWlcIDsKK+Wbs+W3pSA8IHp1a291XCA7CivoobDlvq4gPCBzdWliaVwgOwor6KOP5ZCNIDwgdXJhbmFcIDsKK+Wcn+WhiiA8IGRva2FpXCA7CivmiYvnt7QgPCB0ZXJlblwgOwor5Zyf5aGBIDwgZG9ydWlcIDsKK+Wcn+WhgCA8IGRvYmVpXCA7CivllJDpn7MgPCB0b3VvblwgOwor5Zug5b6qIDwgaW5qdW5cIDsKK+ewv+WkliA8IGJvZ2FpXCA7CivmjqHlkKYgPCBzYWloaVwgOwor5pKlIDwgYmFjaGlcIDsKK+aKgOeboyA8IGdpa2FuXCA7CivnqbrovLggPCBrdXV5dVwgOwor6KOc5YWFIDwgaG9qdXVcIDsKK+WdkeWEkiA8IGtvdWp1XCA7Civlm7rlrpogPCBrb3RlaVwgOwor5oyZ5o6qIDwga3lvc29cIDsKK+aJk+eulyA8IGRhc2FuXCA7Civmjp8gPCBva2l0ZVwgOwor5Zyf5ZqiIDwgZG9ub3VcIDsKK+a8uOasoSA8IHplbmppXCA7Civnqbrot68gPCBrdXVyb1wgOwor5Zu95aiBIDwga29rdWlcIDsKK+a9nOaZgiA8IHNlbmppXCA7Civmh6QgPCBjaHl1dVwgOwor6KOc5Lu7IDwgaG9uaW5cIDsKK+a8q+atqSA8IG1hbnBvXCA7CivmvIHngasgPCBneW9rYVwgOwor5oeH6KmxIDwga29ud2FcIDsKK+epuuiyuyA8IGt1dWhpXCA7Civom67oqp4gPCBiYW5nb1wgOwor5oiv57W1IDwgemFyZWVcIDsKK+Wbo+WtkCA8IGRhbmdvXCA7CivlnJ/lj7AgPCBkb2RhaVwgOwor5ra86ZuoIDwgcnlvdXVcIDsKK+WdiuS4uyA8IGJvdXp1XCA7CivllrbnuZUgPCBlaXplblwgOwor56e76aeQIDwgaWNodXVcIDsKK+iZjumtmiA8IG9rb3plXCA7CivnrpfmnKggPCBzYW5naVwgOwor5omL55u4IDwgdGVzb3VcIDsKK+Wcp+WAkiA8IGF0dG91XCA7CivmtbfpsLsgPCBhbmFnb1wgOwor5baNIDwgc2hpaHVcIDsKK+aGgui6qyA8IHVraW1pXCA7CivmibnngrkgPCBoaXRlblwgOwor5Zyf5YG2IDwgZG9ndXVcIDsKK+ihjOWuriA8IGFuZ3V1XCA7Civls6AgPCB0b3VnZVwgOwor5bKPIDwgZ3V3YW5cIDsKK+WTgOmhmCA8IGFpZ2FuXCA7CivlnJ/kurogPCBkb2ppblwgOwor5a2wIDwgaXp1cmVcIDsKK+aEm+mkkCA8IGFpc2FuXCA7CivlrIcgPCBrdXdhaVwgOwor6JuH6KGMIDwgZGFrb3VcIDsKK+a1hem7hCA8IGFzYWdpXCA7Civmhbbos4AgPCBrZWlnYVwgOwor6KGX5ZuzIDwgZ2FpenVcIDsKK+WjtyA8IHRzdWJvXCA7CivmiZPngrkgPCBkYXRlblwgOwor5ryP5paXIDwgcm91dG9cIDsKK+a4oeiIuSA8IHRvc2VuXCA7Civmt6vooYwgPCBpbmtvdVwgOwor5Z6UIDwgc2h5b3VcIDsKK+WejyA8IHJvdHN1XCA7Civlm64gPCBvdG9yaVwgOwor5rip57+SIDwgc2FyYWlcIDsKK+evgOWppiA8IHNlcHB1XCA7Civllp3noLQgPCBrYXBwYVwgOwor5ZenIDwgZ2Fyb25cIDsKK+WXliA8IHNodWh1XCA7CivlkozpoqggPCB3YWZ1dVwgOwor6J665peLIDwgcmFzZW5cIDsKK+eon+itsCA8IHJpbmdpXCA7CivmhoLomZ4gPCB5dXVndVwgOwor5omT5rOVIDwgZGFob3VcIDsKK+WTmCA8IHNhc291XCA7CivmibbmoZEgPCBmdXNvdVwgOwor6Jma6L6eIDwga3lvamlcIDsKK+ihm+WFtSA8IGVpaGVpXCA7CivmhJrpiI0gPCBndWRvblwgOwor6byg6LypIDwgc29oYWlcIDsKK+WQiyA8IGluY2hpXCA7Civlm57ku5ggPCBrYWlmdVwgOwor5Y2NIDwgbWFuamlcIDsKK+m8oOi5iiA8IHNva2VpXCA7CivljIEgPCBtb25tZVwgOwor5oqK5o+hIDwgaGFha3VcIDsKK+a4oeexsyA8IHRvYmVpXCA7Civmi7Plm7ogPCBnZW5rb1wgOwor5oqV5omTIDwgdG91ZGFcIDsKK+m6kum6nyA8IGtpcmluXCA7CivmhoLoi6YgPCB5dXVrdVwgOwor5Zef5q2OIDwgc2F0YW5cIDsKK+WEsiA8IG1vdWtlXCA7CivmtbfovrogPCB1bWliZVwgOwor5oSb6LuKIDwgYWlzaGFcIDsKK+aJk+ajkiA8IGRhYm91XCA7CivlgZ8gPCBrdXdhdVwgOwor5YCMIDwga3V3YW5cIDsKK+aCqumtlCA8IGFrdW1hXCA7Civmua/ngYwgPCB5dWthblwgOwor5omL5qG2IDwgdGVva2VcIDsKK+eosuiNtyA8IGluYXJpXCA7CivmtabovrogPCB1cmFiZVwgOwor5ZKM6YeRIDwgd2FraW5cIDsKK+m6nemmmSA8IGpha291XCA7CivpiI3pursgPCBkb25tYVwgOwor5oKq6aasIDwgYWt1bWVcIDsKK+aJi+acrCA8IHRlaG9uXCA7CivkuYQgPCBzaGltZVwgOwor5rib56OoIDwgZ2VubWFcIDsKK+eqgeegtCA8IHRvcHBhXCA7CivmtbfosZogPCBpcnVrYVwgOwor6JuH566hIDwgamFrYW5cIDsKK+WTgOipqSA8IGFpc2hpXCA7CivmiZPmlbAgPCBkYXN1dVwgOwor5oSa6KuWIDwgZ3Vyb25cIDsKK+aJi+aWpyA8IHRlb25vXCA7Civmi53lj5cgPCBoYWlqdVwgOwor5rWq6LK7IDwgcm91aGlcIDsKK+aJi+aVsCA8IHRlc3V1XCA7CivmiLjmnb8gPCB0b2l0YVwgOwor5ryi5ZyfIDwga2FuZG9cIDsKK+aEmuioiCA8IGd1a2VpXCA7CivpiZvpjJggPCBlbnN1aVwgOwor56uL5rS+IDwgcmlwcGFcIDsKK+aEmuimiyA8IGd1a2VuXCA7Civmg7notbcgPCBqYWtraVwgOwor5ZGz6YaCIDwgbWlyaW5cIDsKK+WRvemBiyA8IG1laXVuXCA7Civnp5joqIggPCBoaWtlaVwgOwor6JiH6YCjIDwgc29yZW5cIDsKK+aEmuihjCA8IGd1a291XCA7Civnqbrnlo4gPCBrdXVzb1wgOwor5ryB5aSrIDwgZ3lvZnVcIDsKK+aLneWFtyA8IGhhaWd1XCA7CivpioDosqggPCBnaW5rYVwgOwor56uv5pysIDwgaGFob25cIDsKK+a1gei7oiA8IHJ1dGVuXCA7CivmtbTooaMgPCB5b2t1aVwgOwor5ryB5aC0IDwgZ3lvYmFcIDsKK+aEj+ihqCA8IGloeW91XCA7CivmiK/mlocgPCBnaWJ1blwgOwor5ray6IKlIDwgZWtpaGlcIDsKK+epuueQhiA8IGt1dXJpXCA7CivmuoDmnJ8gPCBtYW5raVwgOwor5rmW5rC0IDwga29zdWlcIDsKK+WSjOiumiA8IHdhc2FuXCA7Civnq6/mlbAgPCBoYXN1dVwgOwor5ZiY5a2XIDwgdXNvamlcIDsKK+aIkOahiCA8IHNlaWFuXCA7Civms6LpoK0gPCBoYXRvdVwgOwor5oSb6JS1IDwgYWl6b3VcIDsKK+m6pumFkiA8IGJpaXJ1XCA7CivlkI3ppqwgPCBtZWliYVwgOwor5ZKM6KiTIDwgd2FrdW5cIDsKK+WSjOinoyA8IHdha2FpXCA7Civms6LpnaIgPCBoYW1lblwgOwor5omL5b2TIDwgdGVhdGVcIDsKK+eosuepgiA8IGluYWhvXCA7CivpvLvnt5IgPCBoYW5hb1wgOwor5ZKM6KO9IDwgd2FzZWlcIDsKK+mLpOewviA8IGpvcmVuXCA7Civlkozoo4UgPCB3YXNvdVwgOwor5ouF5L+dIDwgdGFucG9cIDsKK+WSjOijgSA8IHdhc2FpXCA7CivmhoLnm64gPCB1a2ltZVwgOwor5rip5rmvIDwgb250b3VcIDsKK+WQjOmfsyA8IGRvdW9uXCA7Civmhq7nhLYgPCBidXplblwgOwor5oKq6YGLIDwgYWt1dW5cIDsKK+aHuOaetiA8IGtlbmdhXCA7CivmgqPpg6ggPCBrYW5idVwgOwor6YqY6I+TIDwgbWVpa2FcIDsKK+m7kuihoyA8IGtva3VlXCA7Civmgp/pgZMgPCBnb2RvdVwgOwor5ZGz6KaLIDwgYWppbWlcIDsKK+eEoeaEj+WRsyA8IG11aW1pXCA7CivmuKnmsLQgPCBvbnN1aVwgOwor6by756uvIDwgYml0YW5cIDsKK+a4oea0iyA8IHRveW91XCA7CivmhJvogrIgPCBhaWlrdVwgOwor5ruF5aSaIDwgbWV0dGFcIDsKK+a3q+eMpSA8IGlud2FpXCA7CivmvIHlhbcgPCBneW9ndVwgOwor5oKq6LevIDwgYWt1cm9cIDsKK+aDheipsSA8IGpvdXdhXCA7CivnqK7nmq4gPCBzaHVoaVwgOwor5oSa6ICFIDwgZ3VzaGFcIDsKK+aJh+WtkCA8IHNlbnN1XCA7Civph47ppqwgPCBub3VtYVwgOwor56aF6KmxIDwgemVud2FcIDsKK+aIkeaFoiA8IGdhbWFuXCA7Civlj6TpoqggPCBrb2Z1dVwgOwor56m65rCXIDwga3V1a2lcIDsKK+epuuavjSA8IGt1dWJvXCA7CivllL7mtrIgPCBkYWVraVwgOwor5rqA5bqnIDwgbWFuemFcIDsKK+WWtuW6rSA8IGVpdGVpXCA7CivomZrnqbogPCBrb2t1dVwgOwor5re15rqQIDwgZW5nZW5cIDsKK+WSjOiIuSA8IHdhc2VuXCA7CivnpL7pgYsgPCBzaGF1blwgOwor5om55YikIDwgaGloYW5cIDsKK+aJi+WeoiA8IHRlYWthXCA7CivmgqroqIggPCBha2tlaVwgOwor5om55YeGIDwgaGlqdW5cIDsKK+m8k+erpSA8IGtvZG91XCA7CivlkI/pgZMgPCByb2RvdVwgOwor5oqV5LiOIDwgdG91eW9cIDsKK+aHuOaDsyA8IGtlc291XCA7Civlj5fpm6MgPCBqdW5hblwgOwor5oi45aSWIDwga29nYWlcIDsKK+aHuuaClCA8IHphbmdlXCA7Civpi7PniakgPCBpbW9ub1wgOwor5rip5pqWIDwgb25kYW5cIDsKK+a4oeadpSA8IHRvcmFpXCA7CivmgaXpg6ggPCBjaGlidVwgOwor5oe45b+1IDwga2VuZW5cIDsKK+aCquihjCA8IGFra291XCA7Civmt6HmuZYgPCB0YW5rb1wgOwor5oiQ5bCxIDwgam91anVcIDsKK+enn+eojiA8IHNvemVpXCA7CivlloTmhI8gPCB6ZW4nJ2lcIDsKK+WPpOmKrSA8IGtvc2VuXCA7Civnq6XlpbMgPCBkb3Vqb1wgOwor6byg55arIDwgc29la2lcIDsKK+a1gee9qiA8IHJ1emFpXCA7Civll5rlkr0gPCBvZXRzdVwgOwor5oGp6LWmIDwgb25zaGFcIDsKK+aJi+WLoiA8IHRlemVpXCA7CivmhI/lm7rlnLAgPCBpa29qaVwgOwor5reY5rGwIDwgdG91dGFcIDsKK+a0kuiQvSA8IHNoYXJlXCA7CivmtbfnoIIgPCBrYWlzYVwgOwor5Y+w6LyqIDwgZGFpd2FcIDsKK+a5luWyuCA8IGtvZ2FuXCA7CivmtLXnvo4gPCBqdW5iaVwgOwor56ys5LqMIDwgZGFpbmlcIDsKK+ekuuirhyA8IGppZGFuXCA7Civph47pg44gPCB5YXJvdVwgOwor5rOV6KqeIDwgaG91Z29cIDsKK+WQiOitsCA8IGdvdWdpXCA7Civmh4fmhI8gPCBrb24nJ2lcIDsKK+aHiuaCqSA8IG91bm91XCA7CivlkI3oqokgPCBtZWl5b1wgOwor5oSa55e0IDwgZ3VjaGlcIDsKK+awtOm2jyA8IGt1aW5hXCA7Civlj4npioMgPCBzYWp1dVwgOwor5rip5oOFIDwgb25qb3VcIDsKK+aEm+eUqCA8IGFpeW91XCA7Civmh4jmgKAgPCBnZXRhaVwgOwor5oSa55SfIDwgZ3VzZWlcIDsKK+mHiOi/piA8IHNoYWthXCA7Civmua/lnqIgPCB5dWFrYVwgOwor5oGL6LevIDwga29pamlcIDsKK+a0vuexsyA8IGhhYmVpXCA7Civms5XooqsgPCBoYXBwaVwgOwor6JeN6ImyIDwgYWlpcm9cIDsKK+err+WNiCA8IHRhbmdvXCA7CivomZrnhKEgPCBreW9tdVwgOwor5omL5LujIDwgdGVkYWlcIDsKK+WPl+i6qyA8IHVrZW1pXCA7CivmuKHlvqEgPCB0b2d5b1wgOwor5rC06a2UIDwgc3VpbWFcIDsKK+mHjui2oyA8IHlhc2h1XCA7Civlv6vpn7MgPCBrYWlvblwgOwor5omA5L2cIDwgc2hvc2FcIDsKK+WPpOixqiA8IGtvZ291XCA7Civph5HosqggPCBraW5rYVwgOwor5oSb54qsIDwgYWlrZW5cIDsKK+ejr+i+uiA8IGlzb2JlXCA7CivpvLvmsYEgPCBiaWp1dVwgOwor5oOw55ygIDwgZGFtaW5cIDsKK+aCque9tSA8IGFrdWJhXCA7CivmiJDlj6UgPCBzZWlrdVwgOwor5omA5LiOIDwgc2hveW9cIDsKK+WPpOiruiA8IGtvZ2VuXCA7CivnqLLmnKggPCBpbmFnaVwgOwor5Y+k6KiTIDwga29rdW5cIDsKK+epuuW3oyA8IGFraXN1XCA7CivmgqrnuIEgPCBha3VlblwgOwor5rip5a2YIDwgb256b25cIDsKK+WPl+ismyA8IGp1a291XCA7Civlj6HopqcgPCBlaXJhblwgOwor5Y2x6ZujIDwga2luYW5cIDsKK+W+oei+nuWEgCA8IG9qaWdpXCA7Civlv4XpoIggPCBoaXNzdVwgOwor5Y+N6KqeIDwgaGFuZ29cIDsKK+m8u+aguSA8IGJpa29uXCA7Civlj43oqLQgPCBoYW5zb1wgOwor6Yut5pWPIDwgZWliaW5cIDsKK+aEm+a2siA8IGFpZWtpXCA7CivlkI3oiJcgPCBtZWlob1wgOwor5rS+55SfIDwgaGFzZWlcIDsKK+WWh+WPrSA8IHJhcHBhXCA7CivpjbzljLsgPCBoYXJpaVwgOwor5oCq6KidIDwga2VnZW5cIDsKK+mHjuibriA8IHlhYmFuXCA7CivljbDpkZEgPCBpbmthblwgOwor5rGa6L6xIDwgb2pva3VcIDsKK+mKg+eBqyA8IGp1dWthXCA7CivmhJrmsJEgPCBndW1pblwgOwor5Zaq5Li7IDwgbW9zaHVcIDsKK+WNl+mYvyA8IG5hbicnYVwgOwor6buE54+tIDwgb3VoYW5cIDsKK+WQjee+qSA8IG1laWdpXCA7CivmsJHpnIAgPCBtaW5qdVwgOwor6Jma5qCEIDwga3lvZWlcIDsKK+a2heangyA8IG5laGFuXCA7Civmt7vlrZcgPCBzb2VqaVwgOwor5ZOh5pWwIDwgaW56dXVcIDsKK+a1ruawlyA8IHV3YWtpXCA7Civms6LntIsgPCBoYW1vblwgOwor56aF55S7IDwgemVuZ2FcIDsKK+eptOWgtCA8IGFuYWJhXCA7CivlkozmvKIgPCB3YWthblwgOwor5oSP5qyyIDwgaXlva3VcIDsKK+mHjuiPnCA8IHlhc2FpXCA7Civlj6TojLYgPCBrb2NoYVwgOwor56We56S+IDwgamluamFcIDsKK+m7hOeHkCA8IG91cmluXCA7CivmtYXngKwgPCBhc2FzZVwgOwor5b6h6ZujIDwgZ29uYW5cIDsKK+mHjuiNiSA8IHlhc291XCA7CivlvqHpmbAgPCBva2FnZVwgOwor6JqV5bqnIDwgc2FuemFcIDsKK+a4qeWOmiA8IG9ua291XCA7CivpioDms6IgPCBnaW5wYVwgOwor6YqA5rKzIDwgZ2luZ2FcIDsKK+aFleaDhSA8IGJvam91XCA7CivlkozmtIsgPCB3YXlvdVwgOwor5ZCN57C/IDwgbWVpYm9cIDsKK+a3i+W3tCA8IHJpbnBhXCA7CivmhYfmh4MgPCBpbmdpblwgOwor5b+16KqmIDwgbmVuanVcIDsKK+aEm+abuCA8IGFpc2hvXCA7Civmsr/nt5ogPCBlbnNlblwgOwor6YeR6IKlIDwga2lucGlcIDsKK+WOn+iiqyA8IGdlbnBpXCA7CivolZfojYkgPCByb3NvdVwgOwor5rCX6YeNIDwga2lvbW9cIDsKK+WNl+mDqCA8IG5hbmJ1XCA7Civmt6vlo7IgPCBpbmJhaVwgOwor56eY5pysIDwgaGlob25cIDsKK+aEmuaYpyA8IGd1bWFpXCA7CivmtYHmtaogPCBydXJvdVwgOwor5rC06LevIDwgc3Vpcm9cIDsKK+awl+mFjSA8IGtlaGFpXCA7CivolqznoJQgPCB5YWdlblwgOwor5Y+X6IOOIDwganV0YWlcIDsKK+W+rumGuiA8IGJpa3VuXCA7CivljYrph4wgPCBoYW5yaVwgOwor56iy5a2QIDwgaW5hZ29cIDsKK+avlOmhniA8IGhpcnVpXCA7CivmtYHmsJEgPCBydW1pblwgOwor5Y2D6YeMIDwgc2VucmlcIDsKK+WQjOelliA8IGRvdXNvXCA7CivpiYTngasgPCB0ZWtrYVwgOwor56C06aGUIDwgaGFnYW5cIDsKK+WNkei/kSA8IGhpa2luXCA7CivlvqHph5wgPCBva2FtYVwgOwor5b6h6YeRIDwgb2thbmVcIDsKK+a1puabsiA8IHVyYXdhXCA7Civph43nuIEgPCBqdXVlblwgOwor6YOo6aaWIDwgYnVzaHVcIDsKK+mDvembuyA8IHRvZGVuXCA7CivmhJrmjJkgPCBndWt5b1wgOwor5ZOA5oarIDwgYWliaW5cIDsKK+WTgOaGkCA8IGFpcmVuXCA7Civlvanpm7IgPCBzYWl1blwgOwor6YOo6aGeIDwgYnVydWlcIDsKK+iUrOiPnCA8IHNvc2FpXCA7CivlkozmnKwgPCB3YWhvblwgOwor5ray5a6JIDwgZWtpYW5cIDsKK+epuuS9kCA8IGt1dXNhXCA7Civlj5fntI0gPCBqdW5vdVwgOwor5ZOA5oOFIDwgYWlqb3VcIDsKK+WTgOaCvCA8IGFpdG91XCA7Civlkozmm7ggPCB3YXNob1wgOwor5oaC5ZOtIDwgdWtpbmVcIDsKK+WPl+eyiSA8IGp1ZnVuXCA7Civpg6jpnaIgPCBidW1lblwgOwor55+u6baPIDwgY2hhYm9cIDsKK+avq+mHkCA8IGdvdXJpXCA7CivmhJvmg7MgPCBhaXNvdVwgOwor6buE5qWKIDwgdHN1Z2VcIDsKK+mLs+WeiyA8IGlnYXRhXCA7Civlvq7os6QgPCBiaXNlblwgOwor5ZKM5paHIDwgd2FidW5cIDsKK+iWhOedgCA8IHVzdWdpXCA7Civms6LnirYgPCBoYWpvdVwgOwor6JaE55uuIDwgdXN1bWVcIDsKK+W+kui8qSA8IHRvaGFpXCA7Civph4znqIsgPCByaXRlaVwgOwor6JuH5L2TIDwgamF0YWlcIDsKK+eoveWPpCA8IGtlaWtvXCA7CivmhJrlvJ8gPCBndXRlaVwgOwor5oSa5byEIDwgZ3Vyb3VcIDsKK+iWq+eFmSA8IGt1bmVuXCA7CivmsrvnmZIgPCBjaGl5dVwgOwor5oKy5q2OIDwgaGl0YW5cIDsKK+axmuiHrSA8IG9zaHV1XCA7CivljZHoqIAgPCBoaWdlblwgOwor5rCR6KmxIDwgbWlud2FcIDsKK+avlOmHjSA8IGhpanV1XCA7Civnpo3moLkgPCBrYWtvblwgOwor6YeO56CyIDwgeWFob3VcIDsKK+aEieW/qyA8IHl1a2FpXCA7CivnqY/lgaUgPCBvbmtlblwgOwor5Y6f576pIDwgZ2VuZ2lcIDsKK+mYv+W8pemZgCA8IGFtaWRhXCA7CivmsrnnlLAgPCB5dWRlblwgOwor5by+6ZuoIDwgZGFuJyd1XCA7Civpg73pgpEgPCB0b3l1dVwgOwor5Y2K6KO4IDwgaGFucmFcIDsKK+W+oeipoCA8IGd5b2VpXCA7Civph43nm64gPCBvbW9tZVwgOwor56CC6ZiyIDwgc2Fib3VcIDsKK+WRquaWhyA8IGp1bW9uXCA7CivlvqHopqcgPCBnb3JhblwgOwor5ZCQ54CJIDwgdG9zaGFcIDsKK+a3q+S5sSA8IGlucmFuXCA7CivnpZ7mraYgPCBqaW5tdVwgOwor5ZCI54K5IDwgZ2F0ZW5cIDsKK+aEm+WtqyA8IGFpc29uXCA7CivmtYXmiYsgPCBhc2FkZVwgOwor6JqV5YW3IDwgc2FuZ3VcIDsKK+aDsOaApyA8IGRhc2VpXCA7CivlsYXlkIjpgZMgPCBpYWRvdVwgOwor5rK554q2IDwgeXVqb3VcIDsKK+mHjueUnyA8IHlhc2VpXCA7Civms6LmtaogPCBoYXJvdVwgOwor6JOu6I+vIDwgcmVuZ2VcIDsKK+aEm+WpvyA8IGFpc2VpXCA7Civlv43oi6YgPCBuaW5rdVwgOwor6YqD5bqnIDwganV1emFcIDsKK+WOn+ewvyA8IGdlbmJvXCA7CivpioDluqcgPCBnaW56YVwgOwor5oSb5aa7IDwgYWlzYWlcIDsKK+eojuWQjyA8IHplaXJpXCA7CivmhJvlpb0gPCBhaWtvdVwgOwor5Yq06Z+zIDwgcm91b25cIDsKK+mHjueNoyA8IHlhanV1XCA7Civph47njKogPCB5YWNob1wgOwor5rC06IKlIDwgc3VpaGlcIDsKK+WLn+mHkSA8IGJva2luXCA7CivphbjntKAgPCBzYW5zb1wgOwor6YeO54qsIDwgeWFrZW5cIDsKK+W7tumrhCA8IGVuenVpXCA7CivnqI7li5kgPCB6ZWltdVwgOwor5oKq5pelIDwgYWt1YmlcIDsKK+eomuWFkCA8IGNoaWdvXCA7Civlv43ogIUgPCBuaW5qYVwgOwor6by75YaFIDwgYmluYWlcIDsKK+WPpeeCuSA8IGt1dGVuXCA7CivnoLToq4cgPCBoYWRhblwgOwor5ZKM5bCaIDwgb3Nob3VcIDsKK+W9k+i3ryA8IHRvdXJvXCA7Civmg4XmhJsgPCBqb3VhaVwgOwor6YOo6LKhIDwgYnV6YWlcIDsKK+mJhOaJiSA8IHRlcHBpXCA7Civmtbflm7MgPCBrYWl6dVwgOwor5oSa5ZWPIDwgZ3Vtb25cIDsKK+awtOe0oCA8IHN1aXNvXCA7Civlk4Dlj7cgPCBhaWdvdVwgOwor5oKy5oakIDwgaGlmdW5cIDsKK+m6u+W5uSA8IG9nYXJhXCA7CivljbDnsaAgPCBpbnJvdVwgOwor56e75YWlIDwgaW55dXVcIDsKK+azsOaWlyA8IHRhaXRvXCA7CivmhJvlkJ8gPCBhaWdpblwgOwor6YeN5rmvIDwgb21veXVcIDsKK+asuumomSA8IGdpaGVuXCA7CivlvqHohbkgPCBvbmFrYVwgOwor5oKy5oGLIDwgaGlyZW5cIDsKK+WPpeazlSA8IGt1aG91XCA7Civlvq7nvaogPCBiaXphaVwgOwor5Y6f55S7IDwgZ2VuZ2FcIDsKK+WPpOazlSA8IGtvaG91XCA7CivomZrlgb0gPCBreW9naVwgOwor5Yuy6KiYIDwga3Vua2lcIDsKK+mHkeazoiA8IGtpbnBhXCA7Civmtbflj4IgPCBpcmlrb1wgOwor56eY5Y+yIDwgaGlzaGlcIDsKK+mCqumBkyA8IGphZG91XCA7CivljrPniLYgPCBnZW5wdVwgOwor6YqA5ZywIDwgZ2luamlcIDsKK+ekvuaYryA8IHNoYXplXCA7CivmtbfljLogPCBrYWlrdVwgOwor5Y2w56iOIDwgaW56ZWlcIDsKK+mHjeayuSA8IGp1dXl1XCA7Civnn67ouq8gPCB3YWlrdVwgOwor5oKq5b+DIDwgb3NoaW5cIDsKK+axl+eWuSA8IGFzZW1vXCA7CivmgqrlvpIgPCBha3V0b1wgOwor56G857SgIDwgaG91c29cIDsKK+WPl+a0lyA8IGp1c2VuXCA7CivpioDlmaggPCBnaW5raVwgOwor5b+r55mSIDwga2FpeXVcIDsKK+mHkeatryA8IGtpbmJhXCA7Civnn63ot68gPCB0YW5yb1wgOwor6YGg6Z+zIDwgdG9vbmVcIDsKK+W+rue0sCA8IGJpc2FpXCA7Civli4PotbcgPCBib2traVwgOwor5oSa5YOnIDwgZ3Vzb3VcIDsKK+emheWutiA8IHplbmtlXCA7CivliqDphY0gPCBrYWhhaVwgOwor5ZOB5L2NIDwgaGluJydpXCA7CivmrKfpoqggPCBvdWZ1dVwgOwor5rWE5ZyfIDwgam91ZG9cIDsKK+acqumAmuWlsyA8IG9ib2tvXCA7CivmgJLmv6QgPCBkb3RvdVwgOwor5oO55Y+lIDwgamFra3VcIDsKK+ejqOa3rCA8IG1hc2FpXCA7CivmsLjnnKAgPCBlaW1pblwgOwor5by36Ki0IDwgZ291c29cIDsKK+WShOWXnyA8IHRvc3NhXCA7CivmrabpgZMgPCBidWRvdVwgOwor5Y+N5q+UIDwgaGFucGlcIDsKK+WNsOebuCA8IGluem91XCA7CivmrKHpoZ4gPCBqaXJ1aVwgOwor5Y+N5q2vIDwgc29wcGFcIDsKK+WJqumZpCA8IHNlbmpvXCA7Civphrjmr40gPCBqb3Vib1wgOwor5q2m6L66IDwgYnVoZW5cIDsKK+W6p+mrmCA8IHpha291XCA7CivlkozlkI0gPCB3YW1laVwgOwor5oSb5Lq6IDwgYWlqaW5cIDsKK+WSjOWQiCA8IHdhZ291XCA7CivljYrnq68gPCBoYW5wYVwgOwor6JaE5pelIDwgdXN1YmlcIDsKK+aEmuS6uiA8IGd1amluXCA7Civlv5znlKggPCBvdXlvdVwgOwor5ZCm5b+cIDwgaXlhb3VcIDsKK+avjeiJpiA8IGJva2FuXCA7Civmsrnmlq0gPCB5dWRhblwgOwor5q+N6Ii5IDwgYm9zZW5cIDsKK+WPpOadpSA8IGtvcmFpXCA7Civlj6Tmm7ggPCBrb3Nob1wgOwor6YeO5pyrIDwgbm96dWVcIDsKK+mHjuacmyA8IHlhYm91XCA7CivmraPot68gPCBzZWlyb1wgOwor6Ymx5Yy6IDwga291a3VcIDsKK+azouW9oiA8IGhha2VpXCA7CivliY3pnZ4gPCB6ZW5waVwgOwor5rGa5r+BIDwgb2Rha3VcIDsKK+eigeebpCA8IGdvYmFuXCA7CivlvJjoqpMgPCBndXplaVwgOwor5rWu5LiWIDwgdWtpeW9cIDsKK+W6p+mgrSA8IHphdG91XCA7CivlkJDmga8gPCB0b2lraVwgOwor5oKq5aWzIDwgYWt1am9cIDsKK+avm+e5lCA8IGtlb3JpXCA7CivmsZ/muZYgPCBnb3Vrb1wgOwor5oGp5oSbIDwgb24nJ2FpXCA7CivmgqrlpKIgPCBha3VtdVwgOwor5YyX57evIDwgaG9rdWlcIDsKK+iWhOaJiyA8IHVzdWRlXCA7CivmganmgbUgPCBvbmtlaVwgOwor5rC454miIDwgZWlyb3VcIDsKK+WNiOedoSA8IGdvc3VpXCA7CivmtYHliJEgPCBydWtlaVwgOwor6YqA5L2NIDwgZ2luJydpXCA7CivljZfnlLsgPCBuYW5nYVwgOwor5Zuy54KJ6KOPIDwgaXJvcmlcIDsKK+W8geittyA8IGJlbmdvXCA7Civli6Toi6YgPCBraW5rdVwgOwor5Yqp6KiAIDwgam9nb25cIDsKK+azleW6piA8IGhhdHRvXCA7Civmg4XlkbMgPCBqb3VtaVwgOwor5ZCm5a6aIDwgaGl0ZWlcIDsKK+W9see1tSA8IGthZ2VlXCA7CivlkIzluqcgPCBkb3V6YVwgOwor56C057a7IDwgaGF0YW5cIDsKK+a0vuWFtSA8IGhhaGVpXCA7CivnpoXlkbMgPCB6ZW5taVwgOwor5oKq5ZugIDwgYWt1aW5cIDsKK+iSlOe1tSA8IG1ha2llXCA7CivljJXnrrggPCBoaWNob1wgOwor5Y2K55SwIDwgaGFuZGFcIDsKK+aBi+aFlSA8IHJlbmJvXCA7Civph43miYsgPCBvbW9kZVwgOwor5q2m6KOFIDwgYnVzb3VcIDsKK+WNkeeMpSA8IGhpd2FpXCA7CivnoLTnrpcgPCBoYXNhblwgOwor5ZGR5ZCQIDwgZG9udG9cIDsKK+ayueW9qSA8IHl1c2FpXCA7Civlj6Hmha4gPCBlaXJ5b1wgOwor5rWB5Lq6IDwgcnVuaW5cIDsKK+W+oeeSvSA8IGd5b2ppXCA7Civlj5bmiYsgPCB0b3R0ZVwgOwor5ZCN5a6bIDwgbmFhdGVcIDsKK+edgOmhniA8IGtpcnVpXCA7CivmrYzoq5YgPCBrYXJvblwgOwor6YeN5oSbIDwganV1YWlcIDsKK+WPsOW6pyA8IGRhaXphXCA7CivlibLos6YgPCB3YXBwdVwgOwor55yf6a+JIDwgbWFnb2lcIDsKK+aui+iKsSA8IHphbmthXCA7Civpu4TkurogPCBvdWppblwgOwor5rC05ripIDwgc3Vpb25cIDsKK+mBi+i8uCA8IHVuJyd5dVwgOwor6Jep5YSSIDwgaGFuanVcIDsKK+m6l+WPpSA8IHJlaWt1XCA7CivokYnojLYgPCBoYWRqYVwgOwor5b6h546JIDwgb3RhbWFcIDsKK+mBk+i3ryA8IGRvdXJvXCA7CivpgYvou6IgPCB1bnRlblwgOwor5Yid6ZmjIDwgdWlqaW5cIDsKK+mAo+mOliA8IHJlbnNhXCA7CivpgY3ot68gPCBoZW5yb1wgOwor6Ymb5Li5IDwgZW50YW5cIDsKK+awtOazsyA8IHN1aWVpXCA7Civms6XlnJ8gPCBkZWlkb1wgOwor5Y+L5oSbIDwgeXV1YWlcIDsKK+WQjOWknCA8IGRvdXlhXCA7Civph43luqYgPCBqdXVkb1wgOwor5YmN6LyqIDwgbWFld2FcIDsKK+ayu+WuiSA8IGNoaWFuXCA7CivpiI3lmaggPCBkb25raVwgOwor5oCn5oSbIDwgc2VpYWlcIDsKK+eggue1tSA8IHN1bmFlXCA7CivmspnlvKUgPCBzaGFtaVwgOwor56Wt5YW3IDwgc2FpZ3VcIDsKK+mFjea1gSA8IGhhaXJ1XCA7CivliIjpmaQgPCBnYWlqb1wgOwor5oCo5oGoIDwgZW5rb25cIDsKK+mBoOimiyA8IHRvb21pXCA7CivojbfppqwgPCBuaXVtYVwgOwor55yf6aGUIDwgbWFnYW9cIDsKK+WIqemIjSA8IHJpZG9uXCA7CivmgJ3mhZUgPCBzaGlib1wgOwor5oCg5oOwIDwgdGFpZGFcIDsKK+WIqemHkSA8IHJpa2luXCA7CivphZTmrakgPCBzdWlob1wgOwor5Ye56Z2iIDwgb3VtZW5cIDsKK+WQn+WRsyA8IGdpbm1pXCA7CivmraboirggPCBidWdlaVwgOwor5b6S54S2IDwgdG96ZW5cIDsKK+mHkeWtkCA8IGtpbnN1XCA7CivljZjmr5QgPCB0YW5waVwgOwor6YGO6KiAIDwga2Fnb25cIDsKK+ekvuWToSA8IHNoYWluXCA7CivmgqrkuosgPCBha3VqaVwgOwor5b2p55S7IDwgc2FpZ2FcIDsKK+iWq+WMliA8IGt1bmthXCA7CivnpZblhYggPCBzb3NlblwgOwor6YiN5YyWIDwgZG9ua2FcIDsKK+WIpemAlCA8IGJldHRvXCA7Civlj7DloLQgPCBkYWliYVwgOwor6JaE5ZywIDwgdXN1amlcIDsKK+WNsOadkCA8IGluemFpXCA7CivlubPph44gPCBoZWl5YVwgOwor5oGv5ZC5IDwgaWJ1a2lcIDsKK+WQjeWPpSA8IG1laWt1XCA7CivmrabogIUgPCBtdXNoYVwgOwor56S+5YuZIDwgc2hhbXVcIDsKK+WOn+aEjyA8IGdlbicnaVwgOwor5Y+k5aKzIDwga29mdW5cIDsKK+mHjuWkqSA8IG5vdGVuXCA7CivlkIjlkKYgPCBnb3VoaVwgOwor5Yq057WEIDwgcm91c29cIDsKK+mHjuWkliA8IHlhZ2FpXCA7Civluqfoq4cgPCB6YWRhblwgOwor5byX57SgIDwgZnVzc29cIDsKK+azleWLmSA8IGhvdW11XCA7CivlvqHkuJbovp4gPCBvc2VqaVwgOwor56C054mHIDwgaGFoZW5cIDsKK+WQkOWJpCA8IHRvemFpXCA7CivlvqHmrr8gPCBnb3RlblwgOwor5Yy65rCRIDwga3VtaW5cIDsKK+efsyA8IGtva3VcIDsKK+i/qyA8IGhha3VcIDsKK+i/hCA8IG1hZGVcIDsKK+W/gyA8IHNoaW5cIDsKK+i+vCA8IGtvbXVcIDsKK+W+tCA8IGNob3VcIDsKK+W+syA8IHRva3VcIDsKK+i+sSA8IGpva3VcIDsKK+eerSA8IHJ5b3VcIDsKK+eerCA8IHNodW5cIDsKK+W+qSA8IGZ1a3VcIDsKK+W9vCA8IGthcmVcIDsKK+W9uSA8IHlha3VcIDsKK+W9sSA8IGthZ2VcIDsKK+edpiA8IGJva3VcIDsKK+W8viA8IHRhbWFcIDsKK+W8tyA8IGt5b3VcIDsKK+i8ryA8IHNodXVcIDsKK+eciSA8IG1heXVcIDsKK+i8gyA8IGtha3VcIDsKK+ebtCA8IGhpdGFcIDsKK+i7kiA8IG5va2lcIDsKK+W7giA8IHNob3VcIDsKK+eavyA8IHNhcmFcIDsKK+W6tSA8IGlvcmlcIDsKK+eariA8IGthd2FcIDsKK+W6rSA8IG5pd2FcIDsKK+W6lyA8IG1pc2VcIDsKK+W6lSA8IHNva29cIDsKK+i6kSA8IHRla2lcIDsKK+i6iiA8IGNodXVcIDsKK+W6iiA8IHl1a2FcIDsKK+eahCA8IG1hdG9cIDsKK+W5uSA8IG1pa2lcIDsKK+W5syA8IGhpcmFcIDsKK+i5oCA8IHNla2lcIDsKK+eZliA8IGt1c2VcIDsKK+W5hSA8IGhhYmFcIDsKK+W4uCA8IHRvd2FcIDsKK+W4jCA8IG1hcmVcIDsKK+W4gyA8IG51bm9cIDsKK+W3uyA8IG1ha2lcIDsKK+i2syA8IGFzaGlcIDsKK+i2iiA8IGV0c3VcIDsKK+eVmSA8IHJ5dXVcIDsKK+eUsyA8IHNhcnVcIDsKK+eUnyA8IG5hbWFcIDsKK+W0liA8IGdha2VcIDsKK+W0jiA8IHNha2lcIDsKK+WzsCA8IG1pbmVcIDsKK+iziiA8IHpva3VcIDsKK+izgyA8IGNoaW5cIDsKK+WxsSA8IHlhbWFcIDsKK+WxkSA8IGt1enVcIDsKK+ixhiA8IG1hbWVcIDsKK+eQtCA8IGtvdG9cIDsKK+WvviA8IHRzdWlcIDsKK+WvuiA8IHRlcmFcIDsKK+WvjCA8IHRvbWlcIDsKK+WvgiA8IHNhYmlcIDsKK+WuvyA8IHlhZG9cIDsKK+WuriA8IG1peWFcIDsKK+WupCA8IG11cm9cIDsKK+eOliA8IGt5dXVcIDsKK+eOiSA8IGRhbWFcIDsKK+WuiSA8IHlhc3VcIDsKK+WuiCA8IG1vcmlcIDsKK+WuhSA8IHRha3VcIDsKK+WtuCA8IGdha3VcIDsKK+WtqyA8IG1hZ29cIDsKK+eNqCA8IGRva3VcIDsKK+eNhCA8IGdva3VcIDsKK+eMqyA8IG5la29cIDsKK+isoSA8IHV0YWlcIDsKK+isjiA8IG5hem9cIDsKK+WrgSA8IHlvbWVcIDsKK+iqsCA8IGRhcmVcIDsKK+WpvyA8IG11a29cIDsKK+eJqSA8IG1vbm9cIDsKK+eJmyA8IHVzaGlcIDsKK+iplSA8IGh5b3VcIDsKK+WphiA8IGJhYmFcIDsKK+iosyA8IHdha2VcIDsKK+eIhiA8IGJha3VcIDsKK+WnqyA8IGhpbWVcIDsKK+WmmSA8IG15b3VcIDsKK+eGiiA8IGt1bWFcIDsKK+eFpCA8IHN1c3VcIDsKK+eEvCA8IHlha2lcIDsKK+WkqyA8IG90dG9cIDsKK+WkoiA8IHl1bWVcIDsKK+WknCA8IHlvcnVcIDsKK+WkliA8IGhva2FcIDsKK+ijviA8IHN1c29cIDsKK+WjsSA8IGljaGlcIDsKK+WjkyA8IGF0c3VcIDsKK+WjgSA8IGthYmVcIDsKK+eCuiA8IHRhbWVcIDsKK+eCrSA8IHN1bWlcIDsKK+iiliA8IHNvZGVcIDsKK+WikyA8IGhha2FcIDsKK+WhqSA8IHNoaW9cIDsKK+WhniA8IHNva3VcIDsKK+ihkyA8IHN1YmVcIDsKK+ihjCA8IGd5b3VcIDsKK+eAnSA8IHJla2lcIDsKK+WggCA8IGhvcmlcIDsKK+a/gSA8IGRha3VcIDsKK+a/gCA8IGdla2lcIDsKK+WeoyA8IGtha2lcIDsKK+WeiyA8IGthdGFcIDsKK+idiSA8IHNlbWlcIDsKK+WdgiA8IHNha2FcIDsKK+m8uyA8IGhhbmFcIDsKK+WckiA8IHNvbm9cIDsKK+WbvSA8IGt1bmlcIDsKK+m7tCA8IGthYmlcIDsKK+m7mSA8IG1va3VcIDsKK+m7kiA8IGt1cm9cIDsKK+m7jSA8IGtpYmlcIDsKK+ibhyA8IGhlYmlcIDsKK+a6uiA8IGRla2lcIDsKK+m6piA8IG11Z2lcIDsKK+iapCA8IG5vbWlcIDsKK+a6oiA8IGl0c3VcIDsKK+a6nSA8IG1pem9cIDsKK+iZjiA8IHRvcmFcIDsKK+m3uSA8IHRha2FcIDsKK+iXpCA8IGZ1amlcIDsKK+iXgSA8IHdhcmFcIDsKK+WWiSA8IG5vZG9cIDsKK+a1tCA8IHlva3VcIDsKK+a1nCA8IGhhbWFcIDsKK+WUryA8IHRhZGFcIDsKK+a0niA8IGhvcmFcIDsKK+a0myA8IHJha3VcIDsKK+WUliA8IG9zaGlcIDsKK+iTriA8IGhhc3VcIDsKK+mzqSA8IGhhdG9cIDsKK+mzpSA8IHRvcmlcIDsKK+azpSA8IGRvcm9cIDsKK+azoiA8IG5hbWlcIDsKK+iTiyA8IGZ1dGFcIDsKK+ayvCA8IG51bWFcIDsKK+iSuyA8IGpha3VcIDsKK+iSsiA8IGdhbWFcIDsKK+ayoiA8IHNhd2FcIDsKK+mxiCA8IHRhcmFcIDsKK+iQvSA8IG9jaGlcIDsKK+awtCA8IG1penVcIDsKK+awkSA8IHRhbWlcIDsKK+WPsyA8IG1pZ2lcIDsKK+WPpCA8IGZ1cnVcIDsKK+avjSA8IGhhaGFcIDsKK+iPiiA8IGtpa3VcIDsKK+WPiyA8IHRvbW9cIDsKK+WPiCA8IG1hdGFcIDsKK+auvyA8IGRvbm9cIDsKK+auuyA8IGthcmFcIDsKK+iOoiA8IHNheWFcIDsKK+WOnyA8IGhhcmFcIDsKK+iNiSA8IGt1c2FcIDsKK+WNhyA8IG1hc3VcIDsKK+mssSA8IHV0c3VcIDsKK+msmiA8IGhpZ2VcIDsKK+WMmSA8IHNhamlcIDsKK+WMlyA8IGhva3VcIDsKK+iMjiA8IGt1a2lcIDsKK+iMhSA8IGtheWFcIDsKK+WMgiA8IG5pb3VcIDsKK+mrtyA8IG1hZ2VcIDsKK+mrqiA8IGthbWlcIDsKK+iLlCA8IGtva2VcIDsKK+mqqCA8IGhvbmVcIDsKK+WKqSA8IHN1a2VcIDsKK+WJsiA8IHdhcmlcIDsKK+apnyA8IGhhdGFcIDsKK+WJiiA8IHNha3VcIDsKK+iIuSA8IGZ1bmVcIDsKK+WIuiA8IHRvZ2VcIDsKK+aoqiA8IHlva29cIDsKK+WIiCA8IGthcmlcIDsKK+aohSA8IG1vbWlcIDsKK+mnkiA8IGtvbWFcIDsKK+iHjSA8IGhlc29cIDsKK+WGrCA8IGZ1eXVcIDsKK+iGnSA8IGhpemFcIDsKK+iGnCA8IG1ha3VcIDsKK+mmliA8IGt1YmlcIDsKK+WGhiA8IG1hcnVcIDsKK+WGhSA8IHVjaGlcIDsKK+WFsSA8IGRvbW9cIDsKK+alrSA8IHdhemFcIDsKK+WFrSA8IHJva3VcIDsKK+WFpSA8IG55dXVcIDsKK+WFgyA8IG1vdG9cIDsKK+WEmCA8IG1hbWFcIDsKK+iEhyA8IHdha2lcIDsKK+iEgiA8IHlhbmlcIDsKK+iDuCA8IG11bmVcIDsKK+ajmiA8IHRhbmFcIDsKK+iCnSA8IGtpbW9cIDsKK+iCmCA8IGhpamlcIDsKK+WCmCA8IGthc2FcIDsKK+iCjCA8IGhhZGFcIDsKK+iCiSA8IG5pa3VcIDsKK+aigyA8IHRla29cIDsKK+WBvSA8IG5pc2VcIDsKK+ahkCA8IGtpcmlcIDsKK+ahgyA8IG1vbW9cIDsKK+ahgSA8IGtldGFcIDsKK+iAsyA8IG1pbWlcIDsKK+mgrCA8IGhvaG9cIDsKK+aglyA8IGt1cmlcIDsKK+mggyA8IGdvcm9cIDsKK+afmiA8IHl1enVcIDsKK+S+oSA8IGF0YWlcIDsKK+adliA8IHRzdWVcIDsKK+adkSA8IG11cmFcIDsKK+adjyA8IGFuenVcIDsKK+adiSA8IHN1Z2lcIDsKK+S8vSA8IHRvZ2lcIDsKK+acrSA8IGZ1ZGFcIDsKK+mbsiA8IGt1bW9cIDsKK+S7siA8IG5ha2FcIDsKK+mbqiA8IHl1a2lcIDsKK+mbjCA8IG1lc3VcIDsKK+S6uiA8IGhpdG9cIDsKK+mamSA8IHN1a2lcIDsKK+aahyA8IGhpbWFcIDsKK+S5iyA8IGtvcmVcIDsKK+aZgiA8IHRva2lcIDsKK+aYvCA8IGhpcnVcIDsKK+e4piA8IHRhdGVcIDsKK+aYpSA8IGhhcnVcIDsKK+S4iCA8IGRha2VcIDsKK+e4hCA8IG5hd2FcIDsKK+mXhyA8IHlhbWlcIDsKK+aXhSA8IHRhYmlcIDsKK+e2vyA8IHdhdGFcIDsKK+e1uSA8IGtpbnVcIDsKK+e1hCA8IGt1bWlcIDsKK+e0kCA8IGhpbW9cIDsKK+e0hSA8IGJlbmlcIDsKK+eypSA8IGtheXVcIDsKK+eyiSA8IGtvbmFcIDsKK+exsyA8IGtvbWVcIDsKK+exoCA8IGthZ29cIDsKK+mQmCA8IGthbmVcIDsKK+aPuiA8IHl1cmlcIDsKK+aPjyA8IGJ5b3VcIDsKK+eusSA8IGhha29cIDsKK+euoSA8IGt1ZGFcIDsKK+mNtSA8IGthZ2lcIDsKK+mNiyA8IG5hYmVcIDsKK+etiyA8IHN1amlcIDsKK+etiSA8IG5hZG9cIDsKK+etiCA8IGhhenVcIDsKK+ethiA8IGZ1ZGVcIDsKK+esuSA8IHNhc2FcIDsKK+aMhyA8IHl1YmlcIDsKK+eruSA8IHRha2VcIDsKK+eqkyA8IG1hZG9cIDsKK+mKkSA8IHp1a3VcIDsKK+epuiA8IHNvcmFcIDsKK+aJhyA8IG91Z2lcIDsKK+aIvyA8IGZ1c2FcIDsKK+mItCA8IHN1enVcIDsKK+eoriA8IHRhbmVcIDsKK+aIkSA8IHdhcmVcIDsKK+eojSA8IHlheWFcIDsKK+eoiyA8IGhvZG9cIDsKK+mHnSA8IGhhcmlcIDsKK+mHnCA8IGthbWFcIDsKK+mHmCA8IGt1Z2lcIDsKK+emvyA8IGhhZ2VcIDsKK+aGqSA8IGlrb2lcIDsKK+mFkiA8IHNha2VcIDsKK+aFiyA8IHphbWFcIDsKK+aDkSA8IHdha3VcIDsKK+aCqiA8IHdhcnVcIDsKK+eipyA8IGhla2lcIDsKK+aBpSA8IGhhamlcIDsKK+mAmiA8IHRzdXVcIDsKK+eggiA8IHN1bmFcIDsKK+W/nOaPtCA8IG91ZW5cIDsKK+WPpOWZqCA8IGtva2lcIDsKK+WHjembqCA8IHRvdXVcIDsKK+W+kuatqSA8IHRvaG9cIDsKK+WPr+WQpiA8IGthaGlcIDsKK+W+kOatqSA8IGpvaG9cIDsKK+W6h+ittyA8IGhpZ29cIDsKK+mHjuWWtiA8IHlhZWlcIDsKK+azleS8miA8IGhvdWVcIDsKK+WQjOS9jSA8IGRvdWlcIDsKK+WNseaHvCA8IGtpZ3VcIDsKK+WPpeWPpSA8IGt1a3VcIDsKK+WPo+WPlyA8IGt1anVcIDsKK+ayu+WFtyA8IGppZ3VcIDsKK+WGt+mbqCA8IHJlaXVcIDsKK+W9k+eCuiA8IHRvdWlcIDsKK+WPs+WFmiA8IHV0b3VcIDsKK+mBuueyviA8IGlzZWlcIDsKK+mHjuWNkSA8IHlhaGlcIDsKK+WPs+WCviA8IHVrZWlcIDsKK+WMu+abuCA8IGlzaG9cIDsKK+mBleiDjCA8IGloYWlcIDsKK+aAqOWXnyA8IGVuc2FcIDsKK+m4muWTpSA8IGlua29cIDsKK+egtOavgCA8IGhha2lcIDsKK+WPjeWQkCA8IGhlZG9cIDsKK+WPjeWPpCA8IGhvZ29cIDsKK+WPpOWEgCA8IGtvZ2lcIDsKK+WNsOW6piA8IGluZG9cIDsKK+mBuueovyA8IGlrb3VcIDsKK+ebuOmBlSA8IHNvdWlcIDsKK+W6p+iHpSA8IHphZ2FcIDsKK+W4sOmAlCA8IGtpdG9cIDsKK+WGhumhsSA8IGVucm9cIDsKK+ejgeWgtCA8IGppYmFcIDsKK+WPpOS6iyA8IGtvamlcIDsKK+awuOWvvyA8IGVpanVcIDsKK+W+gOaZgiA8IG91amlcIDsKK+ejgeWcnyA8IGppZG9cIDsKK+m0ieeJhyA8IGFoZW5cIDsKK+WNsOWtlyA8IGluamlcIDsKK+mBleeulyA8IGlzYW5cIDsKK+WPmeS6iyA8IGpvamlcIDsKK+ejgeWZqCA8IGppa2lcIDsKK+W+ruW+riA8IGJpYmlcIDsKK+W4sOi3ryA8IGtpcm9cIDsKK+W+oeaEjyA8IGd5b2lcIDsKK+eggua0siA8IHNhc3VcIDsKK+WNiOW+jCA8IGdvZ29cIDsKK+avgOajhCA8IGtpa2lcIDsKK+mBoOelliA8IGVuc29cIDsKK+W+jOaJiyA8IGdvdGVcIDsKK+W5suiRiSA8IGhpYmFcIDsKK+W8leeBqyA8IGlua2FcIDsKK+W+oeW9sSA8IGdvZWlcIDsKK+aouemZsCA8IGp1aW5cIDsKK+iLsemfsyA8IGVpb25cIDsKK+axmuWQjSA8IG9tZWlcIDsKK+ejgeWMuiA8IGppa3VcIDsKK+mCqua3qyA8IGphaW5cIDsKK+i/guiogCA8IHVnZW5cIDsKK+ejgeWMliA8IGppa2FcIDsKK+WMu+W4qyA8IGlzaGlcIDsKK+W9vOaIkSA8IGhpZ2FcIDsKK+WNseWdkCA8IGtpemFcIDsKK+apn+mBiyA8IGtpdW5cIDsKK+WKqea8lCA8IGpvZW5cIDsKK+mCquawlyA8IGpha2lcIDsKK+W8peasoSA8IHlhamlcIDsKK+W+gOW+gCA8IG91b3VcIDsKK+WIgOiHqiA8IHRvamlcIDsKK+W+oeWtkCA8IG1pa29cIDsKK+WMu+WumCA8IGlrYW5cIDsKK+WKoOa4qSA8IGthb25cIDsKK+mBjueWjiA8IGthc29cIDsKK+W/nOWLnyA8IG91Ym9cIDsKK+mBuua8jyA8IGlyb3VcIDsKK+W+jOWutiA8IGdva2VcIDsKK+WMu+WkpyA8IGlkYWlcIDsKK+autOaJkyA8IG91ZGFcIDsKK+atqeatpiA8IGhvYnVcIDsKK+mBleeKryA8IGloYW5cIDsKK+WGhuiyqCA8IGVua2FcIDsKK+awl+WRsyA8IGdpbWlcIDsKK+awl+WQiCA8IGtpYWlcIDsKK+W4g+ihjSA8IGZ1ZW5cIDsKK+mtlOmthSA8IG1hbWlcIDsKK+W+jOWgtCA8IGdvYmFcIDsKK+egtOWutiA8IGJha2FcIDsKK+awl+WMliA8IGtpa2FcIDsKK+W+geWktyA8IHNlaWlcIDsKK+awtOS9jSA8IHN1aWlcIDsKK+WGhuimjyA8IGVua2lcIDsKK+ebiOiZpyA8IGVpa2lcIDsKK+W+oeWQjSA8IG1pbmFcIDsKK+mDqOWxiyA8IGhleWFcIDsKK+iLseiyqCA8IGVpa2FcIDsKK+mBjua4oSA8IGthdG9cIDsKK+mBleazlSA8IGlob3VcIDsKK+aut+WvjCA8IGlucHVcIDsKK+iMo+iTmSA8IGdvemFcIDsKK+iLseiqniA8IGVpZ29cIDsKK+mBi+aysyA8IHVuZ2FcIDsKK+efpeaBtSA8IGNoaWVcIDsKK+mBi+awlyA8IHVua2lcIDsKK+i8uOi0jyA8IHl1ZWlcIDsKK+WLouWtkCA8IHNla29cIDsKK+WMheWbsiA8IGhvdWlcIDsKK+W+gOWPpCA8IG91a29cIDsKK+WKoOaMgSA8IGthamlcIDsKK+W8p+W6piA8IGtvZG9cIDsKK+mDveWWtiA8IHRvZWlcIDsKK+avlOWWqSA8IGhpeXVcIDsKK+mBuuaWhyA8IGlidW5cIDsKK+mAoueArCA8IG91c2VcIDsKK+WHuuebriA8IGRlbWVcIDsKK+atpuaKgCA8IGJ1Z2lcIDsKK+W6p+a0siA8IHphc3VcIDsKK+W+oeS7oyA8IG1peW9cIDsKK+WMu+S8miA8IGlrYWlcIDsKK+W+l+S9kyA8IGV0YWlcIDsKK+W9seWNsCA8IGVpaW5cIDsKK+WGhuiIniA8IGVuYnVcIDsKK+m1nOWMoCA8IHVqb3VcIDsKK+avjeWNsCA8IGJvaW5cIDsKK+mAuOapnyA8IGlra2lcIDsKK+mDqOWToSA8IGJ1aW5cIDsKK+earuiGmiA8IGhpZnVcIDsKK+WIt+avmyA8IGhha2VcIDsKK+atpuW6qyA8IGJ1a29cIDsKK+apn+e4gSA8IGtpZW5cIDsKK+egguWcnyA8IHNhZG9cIDsKK+mBuuaBqCA8IGlrb25cIDsKK+iKseitnCA8IGthZnVcIDsKK+avlOS+oSA8IGhpa2FcIDsKK+atpuWutiA8IGJ1a2VcIDsKK+aoquiHpSA8IG91Z2FcIDsKK+mssemHkSA8IHVrb25cIDsKK+avlOS4mCA8IGJpa3VcIDsKK+mDveS4iyA8IHRva2FcIDsKK+efouWgtCA8IHlhYmFcIDsKK+mBleaGsiA8IGlrZW5cIDsKK+W7tuWvvyA8IGVuanVcIDsKK+eZvuiIjCA8IG1venVcIDsKK+atpuWkqyA8IGJ1ZnVcIDsKK+egguWIqSA8IGphcmlcIDsKK+mDqOS4iyA8IGJ1a2FcIDsKK+eeveWlsyA8IGdvemVcIDsKK+WHuuatryA8IGRlYmFcIDsKK+mBjuW6piA8IGthZG9cIDsKK+atpuWZqCA8IGJ1a2lcIDsKK+mBi+W6pyA8IHVuemFcIDsKK+asoeW6jyA8IGppam9cIDsKK+aooeeziiA8IG1va29cIDsKK+iKseiKvSA8IGthZ2FcIDsKK+W5s+aYkyA8IGhlaWlcIDsKK+atqeWQiCA8IGJ1YWlcIDsKK+eWjumfsyA8IHNvaW5cIDsKK+aoueeariA8IGp1aGlcIDsKK+W6nOW6qyA8IGZ1a29cIDsKK+mBuuWTgSA8IGloaW5cIDsKK+eWkembsiA8IGdpdW5cIDsKK+mBuuWRvSA8IGltZWlcIDsKK+atpOWHpiA8IGtva29cIDsKK+atpuWFtyA8IGJ1Z3VcIDsKK+WHoOahiCA8IGtpYW5cIDsKK+atpuWCmSA8IGJ1YmlcIDsKK+i/veaJiyA8IG90dGVcIDsKK+eVsOmiqCA8IGlmdXVcIDsKK+eVsOmhniA8IGlydWlcIDsKK+WIqeW3sSA8IHJpa29cIDsKK+atpuS6iyA8IGJ1amlcIDsKK+iNiuajmCA8IGJhcmFcIDsKK+mtlOe+hSA8IG1hcmFcIDsKK+mBuuS9kyA8IGl0YWlcIDsKK+mBuuS8nSA8IGlkZW5cIDsKK+mBjuWOuyA8IGtha29cIDsKK+asp+WMliA8IG91a2FcIDsKK+eWjumBoCA8IHNvZW5cIDsKK+eWkei+niA8IGdpamlcIDsKK+W3pua0viA8IHNhaGFcIDsKK+iJtue+jiA8IGVuYmlcIDsKK+mpoummrCA8IHJvYmFcIDsKK+WykOmYnCA8IGdpZnVcIDsKK+W6p+WToSA8IHphaW5cIDsKK+awuOOAhSA8IGVpZWlcIDsKK+ecn+W4hiA8IG1haG9cIDsKK+ebuOaJiyA8IGFpdGVcIDsKK+W6puWQiCA8IGRvYWlcIDsKK+mBleS+iyA8IGlyZWlcIDsKK+WIqeWZqCA8IHJpa2lcIDsKK+iJsue1tSA8IGlyb2VcIDsKK+W7g+S9jSA8IGhhaWlcIDsKK+W4g+aWvSA8IGZ1c2VcIDsKK+iHquiyuyA8IGppaGlcIDsKK+iHquiyoCA8IGppZnVcIDsKK+WFpeaxnyA8IGlyaWVcIDsKK+movummrCA8IHJhYmFcIDsKK+iKseeOiyA8IGthb3VcIDsKK+aji+mZoiA8IGtpaW5cIDsKK+W4t+W5hCA8IGlha3VcIDsKK+iLseatpiA8IGVpYnVcIDsKK+eVsOi2oyA8IGlzaHVcIDsKK+WFt+ahiCA8IGd1YW5cIDsKK+iHquihmyA8IGppZWlcIDsKK+eVsOirliA8IGlyb25cIDsKK+ebuOWtkCA8IGFpa29cIDsKK+W6nOS4iyA8IGZ1a2FcIDsKK+mtlOeOiyA8IG1hb3VcIDsKK+WIqeS7liA8IHJpdGFcIDsKK+mojummrCA8IGtpYmFcIDsKK+apn+W9sSA8IGtpZWlcIDsKK+eZuuadoSA8IGJhbmVcIDsKK+WGheaEjyA8IG5haWlcIDsKK+apn+W6jyA8IGtpam9cIDsKK+W4neWogSA8IHRlaWlcIDsKK+i/guWbniA8IHVrYWlcIDsKK+mAgOS9jSA8IHRhaWlcIDsKK+aihembqCA8IGJhaXVcIDsKK+aooeaTrCA8IG1vZ2lcIDsKK+WGhuW8pyA8IGVua29cIDsKK+eXsueXuiA8IG1haGlcIDsKK+ebruWcsCA8IG1lamlcIDsKK+WGhuW6pyA8IGVuemFcIDsKK+iKseaouSA8IGthanVcIDsKK+eUu+itnCA8IGdhZnVcIDsKK+apn+WunCA8IGtpZ2lcIDsKK+WwvumDqCA8IGJpYnVcIDsKK+ebsuWUliA8IG1vdWFcIDsKK+S+nemhmCA8IGlnYW5cIDsKK+S+nemgvCA8IGlyYWlcIDsKK+eWkee+qSA8IGdpZ2lcIDsKK+ecn+S8vCA8IG1hbmVcIDsKK+aji+itnCA8IGtpZnVcIDsKK+WFkOaIryA8IGppZ2lcIDsKK+ecn+S4iiA8IG1hdWVcIDsKK+W4jOWcnyA8IGtpZG9cIDsKK+iHmeiEgiA8IGVuamlcIDsKK+WBg+iHpSA8IGVuZ2FcIDsKK+iDoem6uyA8IGdvbWFcIDsKK+agl+m8oCA8IHJpc3VcIDsKK+WvuumZoiA8IGppaW5cIDsKK+ebruWHpiA8IG1lZG9cIDsKK+mnhOmmrCA8IGRhYmFcIDsKK+WFrOWutiA8IGt1Z2VcIDsKK+msseawlyA8IHVra2lcIDsKK+i7veaYkyA8IGtlaWlcIDsKK+iLseWtlyA8IGVpamlcIDsKK+S/muiqniA8IHJpZ29cIDsKK+WxoOiYhyA8IHRvc29cIDsKK+mnhumZpCA8IGt1am9cIDsKK+WvnemWkyA8IG5lbWFcIDsKK+ebruS4iiA8IG1ldWVcIDsKK+i8quW3riA8IHdhc2FcIDsKK+S9memfuyA8IHlvaW5cIDsKK+eVsOerryA8IGl0YW5cIDsKK+W3peWQiCA8IGd1YWlcIDsKK+iKseW6jyA8IGtham9cIDsKK+Wxsee+iiA8IHlhZ2lcIDsKK+iLpuWcnyA8IGt1ZG9cIDsKK+Wvv+izgCA8IGp1Z2FcIDsKK+iHqueUuyA8IGppZ2FcIDsKK+efs+aWkemtmiA8IHVndWlcIDsKK+iLseWSjCA8IGVpd2FcIDsKK+eUu+e0oCA8IGdhc29cIDsKK+aiqOiKsSA8IHJpa2FcIDsKK+eUsee4gSA8IHl1ZW5cIDsKK+mtmuW6pyA8IHVvemFcIDsKK+WFt+WCmSA8IGd1YmlcIDsKK+i2iuiotCA8IGVzc29cIDsKK+WEkuWutiA8IGp1a2FcIDsKK+i1t+iotCA8IGtpc29cIDsKK+S/muiAsyA8IHJpamlcIDsKK+WutumBiyA8IGthdW5cIDsKK+eVsOeKtiA8IGlqb3VcIDsKK+almualmiA8IHNvc29cIDsKK+mlkemkkyA8IGtpZ2FcIDsKK+eah+S9jSA8IGtvdWlcIDsKK+Wutui3ryA8IGllamlcIDsKK+mtlOWlsyA8IG1ham9cIDsKK+mlgumjqSA8IHVkb25cIDsKK+Wtl+mfsyA8IGppb25cIDsKK+WvhOiqniA8IGtpZ29cIDsKK+iAs+m8uyA8IGppYmlcIDsKK+mkk+msvCA8IGdha2lcIDsKK+iDpOijlCA8IGluZWlcIDsKK+WEsuS9jSA8IGNob2lcIDsKK+iHquajhCA8IHlha2VcIDsKK+eQhumdniA8IHJpaGlcIDsKK+WEquS9jSA8IHl1dWlcIDsKK+aghOiqiSA8IGVpeW9cIDsKK+i8lOS9kCA8IGhvc2FcIDsKK+S8iumBlCA8IGRhdGVcIDsKK+eVsOanmCA8IGl5b3VcIDsKK+S9meiYiiA8IHlvdW5cIDsKK+WutuiaiiA8IGlla2FcIDsKK+WwvOeUqyA8IGppaG9cIDsKK+WBieadkCA8IGl6YWlcIDsKK+eVsOacrCA8IGlob25cIDsKK+akjeacqCA8IHVla2lcIDsKK+iDvOiDnSA8IHRha29cIDsKK+iIquWuhyA8IGtvdXVcIDsKK+eWkeaHvCA8IGdpa3VcIDsKK+eVsOaVsCA8IGlzdXVcIDsKK+eWkeaDpyA8IGdpZ3VcIDsKK+mtgeWBiSA8IGthaWlcIDsKK+S/neeEoSA8IGhvbXVcIDsKK+iHquaEmyA8IGppYWlcIDsKK+aghOiPryA8IGVpZ2FcIDsKK+WBieaMmSA8IGlreW9cIDsKK+WBieaJjSA8IGlzYWlcIDsKK+eQhui3ryA8IHJpcm9cIDsKK+izpuipoCA8IGZ1ZWlcIDsKK+eVj+aVrCA8IGlrZWlcIDsKK+S/nea4qSA8IGhvb25cIDsKK+eUu+aetiA8IGdha2FcIDsKK+S6jOmZoiA8IG5paW5cIDsKK+iHquW3sSA8IGppa29cIDsKK+ixqumbqCA8IGdvdXVcIDsKK+S7mOitsCA8IGZ1Z2lcIDsKK+S/neavjSA8IGhvYm9cIDsKK+WuieiHpSA8IGFuZ2FcIDsKK+S6nOmItCA8IGFyZWlcIDsKK+S7mOiomCA8IGZ1a2lcIDsKK+Wwj+eBqyA8IGJveWFcIDsKK+mnhOebriA8IGRhbWVcIDsKK+Wxi+aguSA8IHlhbmVcIDsKK+S+neeEtiA8IGl6ZW5cIDsKK+eVsOWtmCA8IGl6b25cIDsKK+S6jOmDqCA8IG5pYnVcIDsKK+miqOmbqCA8IGZ1dXVcIDsKK+alleWGhiA8IGRhZW5cIDsKK+WBveWNsCA8IGdpaW5cIDsKK+eVsOWkiSA8IGloZW5cIDsKK+eVmeWuiCA8IHJ1c3VcIDsKK+S9jeebuCA8IGlzb3VcIDsKK+S4gOm8kyA8IGlra29cIDsKK+eUqOaEjyA8IHlvdWlcIDsKK+iAs+iqniA8IGppZ29cIDsKK+eVsOWfnyA8IGlpa2lcIDsKK+S/neaMgSA8IGhvamlcIDsKK+iIiOS6nCA8IGtvdWFcIDsKK+eTpuaWryA8IGdhc3VcIDsKK+iHquWIqSA8IGppcmlcIDsKK+S9meeFmSA8IHlvZW5cIDsKK+S4i+mnhCA8IGdldGFcIDsKK+S4i+mmrCA8IGdlYmFcIDsKK+WBh+WQjSA8IGthbmFcIDsKK+eVsOWQjCA8IGlkb3VcIDsKK+iAtuiYhyA8IHlhc29cIDsKK+eRoOeSgyA8IHJ1cmlcIDsKK+WBieWLsiA8IGlrdW5cIDsKK+S5hemBoCA8IGt1b25cIDsKK+iHquS9mSA8IGppeW9cIDsKK+S4jemboiA8IGZ1cmlcIDsKK+iHquS7liA8IGppdGFcIDsKK+e+jumfsyA8IGJpb25cIDsKK+WtkOetiSA8IGtvcmFcIDsKK+S4i+mZoiA8IGthaW5cIDsKK+S4jemWkyA8IGJ1bWFcIDsKK+eUu+WboCA8IGdhaW5cIDsKK+S9meazoiA8IHlvaGFcIDsKK+eVj+WPiyA8IGl5dXVcIDsKK+Wwj+aJiyA8IGtvdGVcIDsKK+i2o+aEjyA8IHNodWlcIDsKK+WBieS6uiA8IGlqaW5cIDsKK+S/neWuiSA8IGhvYW5cIDsKK+S9meaugyA8IHlvb3VcIDsKK+i3r+WcsCA8IHJvamlcIDsKK+eQteeQtiA8IGJpd2FcIDsKK+aarumbsiA8IGJvdW5cIDsKK+iDg+a2siA8IGlla2lcIDsKK+S6nOiBliA8IGFzZWlcIDsKK+S4i+mHjiA8IGdleWFcIDsKK+S4iumHjiA8IHVlbm9cIDsKK+iCjOeQhiA8IGtpbWVcIDsKK+mmtOafkyA8IG5hamlcIDsKK+S6nOe+pCA8IGFndW5cIDsKK+S4lui+niA8IHNlamlcIDsKK+S4jemBiyA8IGZ1dW5cIDsKK+S9meaghCA8IHlvZWlcIDsKK+aiqOWckiA8IHJpZW5cIDsKK+S+m+W+oSA8IGd1Z29cIDsKK+i3r+WKoCA8IHJ1a2FcIDsKK+S6nOe2sSA8IGFrb3VcIDsKK+S9meaahyA8IHlva2FcIDsKK+S4gOmBjiA8IGlra2FcIDsKK+Wwj+WxiyA8IGtveWFcIDsKK+S4gOmAlCA8IGl0dG9cIDsKK+e+jui+niA8IGJpamlcIDsKK+WuieawlyA8IGFua2lcIDsKK+aghOaeryA8IGVpa29cIDsKK+Wvk+aEjyA8IGd1dWlcIDsKK+S4luipsSA8IHNld2FcIDsKK+S6nOeoriA8IGFzaHVcIDsKK+aZtOmbqCA8IHNlaXVcIDsKK+Wwj+WknCA8IHNheW9cIDsKK+mjm+ewtyA8IGhpZW5cIDsKK+mfs+mgrSA8IG9uZG9cIDsKK+S9meaKgCA8IHlvZ2lcIDsKK+S4jeiqniA8IGZ1Z29cIDsKK+S9meaJgCA8IHlvc29cIDsKK+eOi+iAhSA8IG91amFcIDsKK+aal+mDqCA8IGFuYnVcIDsKK+S+m+WliSA8IGd1YnVcIDsKK+Wus+aEjyA8IGdhaWlcIDsKK+S6iOekuiA8IHlvamlcIDsKK+WuieaYkyA8IGFuJydpXCA7CivkuIvooYYgPCBnZXN1XCA7CivkuIrooaMgPCBqb3VpXCA7CivlrZfmr40gPCBqaWJvXCA7Civog4zmiLggPCBzZWRvXCA7Civlr4TluK0gPCB5b3NlXCA7CivkvbPlrrQgPCBrYWVuXCA7CivniqDpo5sgPCBnaWhpXCA7CivkuI3omZ4gPCBmdWd1XCA7CivohZDlhJIgPCBmdWp1XCA7CivnvbXoqYggPCBiYXJpXCA7Civku5bmtL4gPCB0YWhhXCA7CivlronmiZMgPCBhbmRhXCA7CivmmpforZwgPCBhbnB1XCA7CivmmK/pnZ4gPCB6ZWhpXCA7CivlrrblrrYgPCBpZWllXCA7CivmnrjmnZ4gPCBrdWtvXCA7CivnjL/oh4IgPCBlbnBpXCA7CivkupHniL4gPCB1bmppXCA7Civkupzngq0gPCBhdGFuXCA7Civku6XmnbEgPCBpdG91XCA7CivlronluqcgPCBhbnphXCA7Civml5fpvJMgPCBraWtvXCA7Civpno3ppqwgPCBhbmJhXCA7CivkuIDoh4IgPCBpcHBpXCA7CivmnKjnk5wgPCBib2tlXCA7Civogqnlt74gPCBoaXJlXCA7CivmmYLpgYsgPCBqaXVuXCA7Civpn7voqp4gPCBpbmdvXCA7Civpn7PorZwgPCBvbnB1XCA7CivkuIrntbUgPCB1d2FlXCA7CivlraTlvbEgPCBrb2VpXCA7CivmoYjkvqEgPCBhbmthXCA7CivnjJvogIUgPCBtb3NhXCA7Civnvr3nm64gPCBoYW1lXCA7CivorbforKggPCBnb211XCA7CivkuozmrKEgPCBuaWppXCA7CivlpoLpnLIgPCBqb3JvXCA7CivkuI3nqY8gPCBmdW9uXCA7CivlronloLUgPCBhbmRvXCA7CivppqzlhbcgPCBiYWd1XCA7Civku5bmhJsgPCB0YWFpXCA7Civlrrblh7ogPCBpZWRlXCA7Civlronlm7ogPCBhbmtvXCA7CivlrrblhbcgPCBrYWd1XCA7CivkuI3no6ggPCBmdW1hXCA7Civml6XplpMgPCBoaWFpXCA7CivkvI7lpbMgPCBnaWpvXCA7Civlr4TkuI4gPCBraXlvXCA7CivpnZLpnZIgPCBhb2FvXCA7CivkuozmnJ8gPCBuaWtpXCA7CivlronlkKYgPCBhbnBpXCA7Civog6HkubEgPCB1cm9uXCA7CivkuojmnJ8gPCB5b2tpXCA7CivnvqnnkIYgPCBnaXJpXCA7CivorY/oqrkgPCBraWhpXCA7CivkuIvnl6IgPCBnZXJpXCA7Civos63loLQgPCB0b2JhXCA7Civos4DlrrQgPCBnYWVuXCA7CivlroflhoUgPCB1ZGFpXCA7Civku6XlpJYgPCBpZ2FpXCA7CivlpKLprZQgPCBtdW1hXCA7CivmnaXmhI8gPCByYWlpXCA7CivmmpfnpLogPCBhbmppXCA7Civlronkv50gPCBhbnBvXCA7CivpnZ7pgYsgPCBoaXVuXCA7Civogb7llJYgPCByb3VhXCA7Civnvr3mr5sgPCB1bW91XCA7Civpn7PntKAgPCBvbnNvXCA7CivotIjkvY0gPCB6b3VpXCA7Civku5jlm7MgPCBmdXp1XCA7CivkuojlvowgPCB5b2dvXCA7CivkuozluqYgPCBuaWRvXCA7CivnvqnmsJcgPCBnaWtpXCA7Civnvqnmr40gPCBnaWJvXCA7Civoqp7pn7MgPCBnb29uXCA7Civku6XljZcgPCBpbmFuXCA7CivlpJzpmbAgPCB5YWluXCA7Civku5jlkowgPCBmdXdhXCA7CivnjovmiYsgPCBvdXRlXCA7Civnvr3moLkgPCBoYW5lXCA7CivpnZ7orbAgPCBoaWdpXCA7Civku6XlhoUgPCBpbmFpXCA7CivkuIDmtL4gPCBpcHBhXCA7CivkuInmr5sgPCBtaWtlXCA7Civpm7fpm6ggPCByYWl1XCA7Civpm5HprZogPCBqYWtvXCA7CivorbfnrKYgPCBnb2Z1XCA7Civpm7LpnKcgPCB1bm11XCA7Civos6bkuI4gPCBmdXlvXCA7CivlpKfph44gPCBvb25vXCA7CivkuIDmrakgPCBpcHBvXCA7Civmlo7pg6ggPCBpbmJlXCA7Civku6PkvY0gPCBkYWlpXCA7CivnjovluqcgPCBvdXphXCA7Civku6Pku6MgPCB5b3lvXCA7Civku5bkuosgPCB0YWppXCA7Civni5Lni5IgPCBoaWhpXCA7Civni5Dni7ggPCBrb3JpXCA7CivpnLLoqp4gPCByb2dvXCA7CivlpKfot68gPCBvb2ppXCA7CivnjovlrrYgPCBvdWtlXCA7Civnvqnmj7QgPCBnaWVuXCA7CivnjovlpoMgPCBvdWhpXCA7CivnjovlpbMgPCBvdWpvXCA7CivpnZLokYkgPCBhb2JhXCA7CivpnZLoj5wgPCBhb25hXCA7CivkupLliqkgPCBnb2pvXCA7CivkupTliIYgPCBnb2J1XCA7Civkuovli5kgPCBqaW11XCA7CivkuIvmiYsgPCBoZXRhXCA7CivkuIvmiLggPCBnZWtvXCA7CivmnbHkup4gPCB0b3VhXCA7CivmnKjlnLAgPCBraWppXCA7CivnjovlnJ8gPCBvdWRvXCA7Civnvo7mioAgPCBiaWdpXCA7CivoqqToqJggPCBnb2tpXCA7Civpn7Pms6IgPCBvbnBhXCA7Civpn7vmr40gPCBpbmJvXCA7CivkuojlgpkgPCB5b2JpXCA7CivkuozkvqEgPCBuaWthXCA7Civmlr3ogqUgPCBzZWhpXCA7CivkuozkvZAgPCBuaXNhXCA7Civml6nnqLIgPCB3YXNlXCA7CivnhZnpnKcgPCBlbm11XCA7CivnhZnpm6ggPCBlbicndVwgOwor6aKo5ZGCIDwgZnVyb1wgOwor5Lm+5L2NIDwga2VuaVwgOwor5pOs6Z+zIDwgZ2lvblwgOwor57iB6LW3IDwgZW5naVwgOwor5Lmd5YiGIDwga3VidVwgOwor5LiN5a6JIDwgZnVhblwgOwor54i256WWIDwgZnVzb1wgOwor5LiA5a62IDwgaWtrZVwgOwor6Zmw6ZicIDwgaW5mdVwgOwor5pqX5oSaIDwgYW5ndVwgOwor5LiO5aSqIDwgeW90YVwgOwor5LiL5aWzIDwgZ2Vqb1wgOwor54Sh6aeEIDwgbXVkYVwgOwor57iB6KqeIDwgZW5nb1wgOwor6ZuF6KqeIDwgZ2Fnb1wgOwor542j5Yy7IDwganV1aVwgOwor576O5aerIDwgYmlraVwgOwor5amm5aWzIDwgZnVqb1wgOwor6aKo5L2NIDwgZnV1aVwgOwor576O5aWzIDwgYmlqb1wgOwor6Z2S56ClIDwgYW90b1wgOwor54Sh6Z+zIDwgbXVvblwgOwor6K2w5qGIIDwgZ2lhblwgOwor5LiN5ZuzIDwgZnV0b1wgOwor6ZqY6LevIDwgYWlyb1wgOwor54yb5aiBIDwgbW91aVwgOwor5aSa576pIDwgdGFnaVwgOwor5pq05aiBIDwgYm91aVwgOwor6Kqe576pIDwgZ29naVwgOwor6Zmw6YOoIDwgaW5idVwgOwor5aWz546LIDwgam9vdVwgOwor6Z2e55CGIDwgaGlyaVwgOwor6Zuy6ISCIDwgZnVrZVwgOwor576p5YuZIDwgZ2ltdVwgOwor6Zui6IumIDwgcmlrdVwgOwor6Z2S55SwIDwgYW90YVwgOwor5LiN5ZGzIDwgZnVtaVwgOwor5LiJ5ZGzIDwgc2FtaVwgOwor5LiL5Y+lIDwgZ2VrdVwgOwor57i357i3IDwgcnVydVwgOwor5aOB6J2oIDwgZGFuaVwgOwor576O5ZGzIDwgYmltaVwgOwor5LiL5Y2RIDwgZ2ViaVwgOwor6K235oyBIDwgZ29qaVwgOwor5LiA5Y+lIDwgaWtrdVwgOwor54Sh6YmbIDwgbXVlblwgOwor576O5YyWIDwgYmlrYVwgOwor5LiN5YKZIDwgZnViaVwgOwor54qg5omTIDwgZ2lkYVwgOwor5aSW56eRIDwgZ2VrYVwgOwor5aSn55uuIDwgb29tZVwgOwor57iB6ICFIDwgZW5qYVwgOwor5pel5q2pIDwgaGlidVwgOwor6Z+z5a2XIDwgb25qaVwgOwor6Zmi6K2wIDwgaW5naVwgOwor5LiA5L2QIDwgaXNzYVwgOwor54i25q+NIDwgZnVib1wgOwor6Z2e5q+AIDwgaGlraVwgOwor5pmC5beuIDwgamlzYVwgOwor57Sw6ZuoIDwgc2FpdVwgOwor6ZyK55WwIDwgcmVpaVwgOwor5Z+66Z+zIDwga2lvblwgOwor57ev57eaIDwgaXNlblwgOwor6Zqg6ICFIDwgaW5qYVwgOwor6Za76a2UIDwgZW5tYVwgOwor5pel5pelIDwgaGliaVwgOwor5pWw54+gIDwganV6dVwgOwor6Zmw6JCOIDwgaW4nJ2lcIDsKK+mfs+WQkCA8IG9udG9cIDsKK+mfs+WPiSA8IG9uc2FcIDsKK+mdkuacqCA8IGFva2lcIDsKK+WogeWOsyA8IGlnZW5cIDsKK+isneaEjyA8IHNoYWlcIDsKK+e2uue+hSA8IGtpcmFcIDsKK+WfuumDqCA8IGtpYnVcIDsKK+WmguaEjyA8IG55b2lcIDsKK+WlveaCqiA8IGtvdW9cIDsKK+mfs+S+oSA8IG9ua2FcIDsKK+aXouW+gCA8IGtpb3VcIDsKK+WlpeaEjyA8IG9rdWlcIDsKK+Wik+eikSA8IGJvaGlcIDsKK+mbqOawtCA8IHVzdWlcIDsKK+WknOaalyA8IHlhYW5cIDsKK+aZguS6iyA8IGppamlcIDsKK+WnlOS7uyA8IGluaW5cIDsKK+WltOWpoiA8IG51aGlcIDsKK+Wkp+aJiyA8IG9vZGVcIDsKK+mcsuW6pyA8IHJvemFcIDsKK+mZsOeUuyA8IGluZ2FcIDsKK+WjiuatuyA8IGVzaGlcIDsKK+eEoeeijSA8IG11Z2VcIDsKK+ipkOasuiA8IHNhZ2lcIDsKK+mdkuWcsCA8IGFvamlcIDsKK+mdkuWbsyA8IGFvenVcIDsKK+eyl+mHjiA8IHNveWFcIDsKK+Wkp+WxiyA8IG9veWFcIDsKK+iqpOW3riA8IGdvc2FcIDsKK+eEoeeQhiA8IG11cmlcIDsKK+WkouWvkCA8IG11YmlcIDsKK+WkmuWykCA8IHRha2lcIDsKK+eFmeazoiA8IGVucGFcIDsKK+aXp+S6iyA8IGt1amlcIDsKK+iqnuWwviA8IGdvYmlcIDsKK+mcsuWWtiA8IHJvZWlcIDsKK+mZsOawlyA8IGlua2lcIDsKK+WkmuWkmiA8IHRhdGFcIDsKK+Wcn+mWkyA8IGRvbWFcIDsKK+aOqui+niA8IHNvamlcIDsKK+eEoea0viA8IG11aGFcIDsKK+a/vumBjiA8IHJva2FcIDsKK+m9sSA8IHNla3VcIDsKK+mbqOWkqSA8IHV0ZW5cIDsKK+mbqOWjsCA8IHVzZWlcIDsKK+m8jyA8IGJla2lcIDsKK+eEoeavlCA8IG11aGlcIDsKK+imi+ebriA8IG1pbWVcIDsKK+m6vyA8IG1hcm9cIDsKK+mbqOWfnyA8IHVpa2lcIDsKK+WknOWNiiA8IHlvd2FcIDsKK+m2qiA8IGtla2lcIDsKK+eEoeapnyA8IG11a2lcIDsKK+m0qCA8IGthbW9cIDsKK+maoOW+riA8IGluYmlcIDsKK+ijnOiomCA8IGhva2lcIDsKK+maj+aEjyA8IHp1aWlcIDsKK+mxpyA8IGhhbW9cIDsKK+mxmiA8IGtpc3VcIDsKK+mwpCA8IGJ1cmlcIDsKK+mwmSA8IGhheWFcIDsKK+mwkCA8IHdhbmlcIDsKK+WknOWFtyA8IHlhZ3VcIDsKK+mvliA8IHNhYmFcIDsKK+mvlCA8IGJvcmFcIDsKK+mviiA8IGhhemVcIDsKK+mutCA8IGdvcmlcIDsKK+musiA8IG1hdGVcIDsKK+muqyA8IHNhbWVcIDsKK+mukiA8IGZ1bmFcIDsKK+mtuSA8IHRvZG9cIDsKK+mqrSA8IGhhZ2lcIDsKK+mqiSA8IGh5dXVcIDsKK+eyl+iPkyA8IHNva2FcIDsKK+eBq+eurSA8IGhpeWFcIDsKK+e1teacrCA8IGVob25cIDsKK+mfriA8IG5pcmFcIDsKK+meoCA8IG1hcmlcIDsKK+Wcn+iqniA8IGRvZ29cIDsKK+mdhCA8IG1veWFcIDsKK+WcsOihoyA8IGNoaWlcIDsKK+mbh+WToSA8IGtvaW5cIDsKK+mbheWRsyA8IGdhbWlcIDsKK+ewv+iomCA8IGJva2lcIDsKK+mWliA8IHl1cnVcIDsKK+eEoeaJiyA8IG11dGVcIDsKK+eEoeaIkSA8IG11Z2FcIDsKK+mRkyA8IHlhcmlcIDsKK+mRgyA8IHR5b3VcIDsKK+mYv+aIvyA8IGFob3VcIDsKK+mNrCA8IGt1d2FcIDsKK+ijnOiCpSA8IGhvaGlcIDsKK+mJviA8IGhva29cIDsKK+imj+aooSA8IGtpYm9cIDsKK+iiiOijnyA8IGtlc2FcIDsKK+mEmSA8IGhpbmFcIDsKK+Whl+W4gyA8IHRvZnVcIDsKK+mAqSA8IGthbXVcIDsKK+mApyA8IHNha29cIDsKK+i/jSA8IGNodW5cIDsKK+i9jCA8IHNvcmlcIDsKK+mZpOWknCA8IGpveWFcIDsKK+eBq+eCiSA8IGthcm9cIDsKK+izrSA8IGtha2VcIDsKK+aKvOmfuyA8IG91aW5cIDsKK+aTrOWPpCA8IGdpa29cIDsKK+ixmiA8IGJ1dGFcIDsKK+eEoeWeoiA8IG11a3VcIDsKK+eEoeWcsCA8IG11amlcIDsKK+ilniA8IGhpZGFcIDsKK+e0oOaJiyA8IHN1ZGVcIDsKK+iksSA8IGthaWVcIDsKK+ijmyA8IHlvdXVcIDsKK+iisCA8IGhvcm9cIDsKK+ifuSA8IGthbmlcIDsKK+eEoeWRsyA8IG11bWlcIDsKK+iaiyA8IGJ1eW9cIDsKK+iZmSA8IGh1a3VcIDsKK+iXqiA8IHlhYnVcIDsKK+iVqiA8IGthYnVcIDsKK+iUhyA8IGtpa2VcIDsKK+iTvCA8IHRhZGVcIDsKK+iTkSA8IG1pbm9cIDsKK+iRsSA8IG5lZ2lcIDsKK+mZouS4uyA8IGluanVcIDsKK+WgguWuhyA8IGRvdXVcIDsKK+mYv+WFhCA8IGFrZWlcIDsKK+iLhiA8IHN1c2FcIDsKK+iKuSA8IHNlcmlcIDsKK+eEoeS+oSA8IG11a2FcIDsKK+iKkiA8IG5vZ2lcIDsKK+WgtOWQiCA8IGJhYWlcIDsKK+e1teWDjyA8IGV6b3VcIDsKK+eEoeS6jCA8IG11bmlcIDsKK+iGgyA8IG90c3VcIDsKK+iEmyA8IHN1bmVcIDsKK+iho+e0iyA8IGVtb25cIDsKK+e0jeWxiyA8IG5heWFcIDsKK+imi+WgtCA8IG1pYmFcIDsKK+eskemhlCA8IGVnYW9cIDsKK+e9oCA8IHdhbmFcIDsKK+aPtuaPhCA8IHlheXVcIDsKK+e2myA8IGthc2VcIDsKK+eyl+actiA8IHNvZGFcIDsKK+ezoCA8IG51a2FcIDsKK+eziiA8IG5vcmlcIDsKK+aJi+mWkyA8IHRlbWFcIDsKK+Wbs+eUuyA8IHp1Z2FcIDsKK+eygiA8IGt1bWVcIDsKK+ewlyA8IHlhbmFcIDsKK+eujSA8IHRhZ2FcIDsKK+euhiA8IGhlcmFcIDsKK+esiiA8IHphcnVcIDsKK+eBq+WxiyA8IGhveWFcIDsKK+eArOaIuCA8IHNldG9cIDsKK+ieu+ibhCA8IGtlcmFcIDsKK+eYpCA8IGtvYnVcIDsKK+mWk+WkqyA8IG1hYnVcIDsKK+eUlSA8IG1pa2FcIDsKK+eyl+W4gyA8IHNvZnVcIDsKK+eRlSA8IGtpenVcIDsKK+eNtiA8IG55b3VcIDsKK+ibmem7vSA8IGFib3VcIDsKK+aOj+aRuCA8IHN1cmlcIDsKK+eHuCA8IGppeXVcIDsKK+ijuOWppiA8IHJhZnVcIDsKK+Wbs+ahiCA8IHp1YW5cIDsKK+Wcn+aJiyA8IGRvdGVcIDsKK+a7kyA8IGthc3VcIDsKK+a4qembhSA8IG9uZ2FcIDsKK+aPtOWKqSA8IGVuam9cIDsKK+m9n+m9rCA8IHNvZ29cIDsKK+apsyA8IG51ZGVcIDsKK+apsiA8IHp1c2FcIDsKK+Wbm+aWuSA8IHlvbW9cIDsKK+aovSA8IHRhcnVcIDsKK+aouiA8IGthYmFcIDsKK+alhSA8IGh5a3VcIDsKK+akqCA8IHRhZnVcIDsKK+akpSA8IG5hZ2lcIDsKK+aggiA8IHRvZ2FcIDsKK+adoyA8IHNvbWFcIDsKK+WbveW6nCA8IGtvZnVcIDsKK+aNu+WtkCA8IG5lamlcIDsKK+aJi+e+vSA8IHRlYmFcIDsKK+a3q+mbqCA8IGluJyd1XCA7Civoo5zliqkgPCBob2pvXCA7Civmua/okYkgPCB5dWJhXCA7CivlnJ/lmaggPCBkb2tpXCA7CivmjInmkakgPCBhbm1hXCA7CivmiaggPCBzYXRlXCA7Civmjojlj5cgPCBqdWp1XCA7CivmiZPnoLQgPCBkYWhhXCA7Civmi7/mjZUgPCBkYWhvXCA7CivlnJ/ljKogPCBkb2hpXCA7CivlvbYgPCBraWh1XCA7CivlvLYgPCBneWF1XCA7CivlvJcgPCBkb3J1XCA7CivlvJMgPCB5dW1pXCA7Civlu6cgPCBzaGF1XCA7CivluKQgPCBnZXlvXCA7CivluKIgPCBrYWh1XCA7Civlt6QgPCByZWh1XCA7Civltq8gPCBzaGl1XCA7CivltYAgPCBjaGl1XCA7CivlnKjkvY0gPCB6YWlpXCA7CivltKggPCBzZWh1XCA7Civls4UgPCBrdXJhXCA7Civmta7lobXlrZAgPCB1bmthXCA7CivlsbYgPCBuYXRhXCA7CivmhJvppqwgPCBhaWJhXCA7CivlrqggPCB0ZXdhXCA7CivmjojkuI4gPCBqdXlvXCA7Civlm5vlm7IgPCBzaGlpXCA7Civlm7rljJYgPCBrb2thXCA7CivmhJvpo7IgPCBhaWluXCA7CivlrLwgPCByaXdhXCA7Civlk4Dpn7MgPCBhaW9uXCA7CivlrLYgPCBrYWthXCA7CivlqoMgPCBqeXV1XCA7Civlm57lkJEgPCBla291XCA7CivmiK/nlLsgPCBnaWdhXCA7Civlob4gPCBqdWt1XCA7Civln5YgPCBnb21pXCA7CivmhbDorJ0gPCBpc2hhXCA7CivlnL4gPCBneXV1XCA7CivlmLggPCBzYXpvXCA7CivlmIEgPCBzYWh1XCA7Civll70gPCB1Z2FpXCA7CivllqIgPCB0ZWh1XCA7CivllaYgPCByYWh1XCA7Civlkozpn7MgPCB3YW9uXCA7CivlkrYgPCBrdXVpXCA7Civmirzlv40gPCBvc3N1XCA7Civnp7vou6IgPCBpdGVuXCA7CivpioXpkbwgPCBkb3JhXCA7CivliosgPCBzeW91XCA7Civlh7ggPCBkZWtvXCA7CivmhJvovJ0gPCBhaWtpXCA7Civmua/nha4gPCB5dW5pXCA7CivmgqrprLwgPCBha2tpXCA7Civkv4cgPCBreWF1XCA7CivkvqAgPCBreWFuXCA7CivkvZcgPCB3YWJpXCA7CivkuoAgPCBrYW1lXCA7CivkuZ8gPCBuYXJpXCA7CivmhJvorbcgPCBhaWdvXCA7Civlk4DoqbEgPCBhaXdhXCA7Civlk4DoqLQgPCBhaXNvXCA7CivlkYnpoIggPCBnb3N1XCA7Civnp5joqbEgPCBoaXdhXCA7Civmua/msJcgPCB5dWdlXCA7Civpu4TouqsgPCBraW1pXCA7CivlkozorbAgPCB3YWdpXCA7Civlkozoqp4gPCB3YWdvXCA7CivlkJDpnLIgPCB0b3JvXCA7CivmganpoacgPCBvbmtvXCA7CivmgbXpm6ggPCBrZWl1XCA7CivmtbfoiosgPCBrYWl1XCA7CivmtYTooaMgPCBqb3VlXCA7CivolY7puqYgPCBzb2JhXCA7CivpuJrptaEgPCBvdW11XCA7CivlkIjplpMgPCBhaW1hXCA7Civlj7PpnaIgPCB1bWVuXCA7CivpvLvnpZYgPCBiaXNvXCA7CivmgqrosqggPCBha2thXCA7CivmuKHmrKcgPCB0b291XCA7Civlj6Tpn7MgPCBrb29uXCA7CivlmJTlkJAgPCBvdXRvXCA7Civlkozoi7EgPCB3YWVpXCA7Civlj6Tpm4UgPCBrb2dhXCA7Civmu4vlkbMgPCBqaW1pXCA7CivllJbnhLYgPCBhemVuXCA7CivomIfoirMgPCBzdW91XCA7Civol43opLggPCBib3JvXCA7CivmgqrooaMgPCBha3VpXCA7Civmua/lsYsgPCB5dXlhXCA7CivllL7mo4QgPCBkYWtpXCA7Civlj7PovrogPCB1aGVuXCA7Civllpzlr78gPCBraWp1XCA7Civmua/lpbMgPCB5dW5hXCA7Civljq3pm6IgPCBvbnJpXCA7CivpvLvngo4gPCBiaWVuXCA7Civph47ovrogPCBub2JlXCA7CivmganoqrwgPCBvbmdpXCA7Civph47ot68gPCBub2ppXCA7CivlkarnrKYgPCBqdWZ1XCA7Civlj6Toqp4gPCBrb2dvXCA7CivllrbliKkgPCBlaXJpXCA7Civlv5zpnIAgPCBvdWp1XCA7CivmiJHliKkgPCBnYXJpXCA7Civnp7vmsJEgPCBpbWluXCA7CivlloflmJsgPCByYW1hXCA7Civmho7mgqogPCB6b3VvXCA7Civlj7PokYkgPCB1eW91XCA7Civlk4DmrYwgPCBhaWthXCA7Civlj5fomIogPCBqdXVuXCA7CivlvqHpoZQgPCBva2FvXCA7CivpubXnsL8gPCByb2JvXCA7CivljYHpm6ggPCBqdXV1XCA7Civlj7PohLMgPCB1bm91XCA7CivmuKnlkowgPCBvbndhXCA7CivmsLjpgaAgPCBlaWVuXCA7Civph47oia8gPCBub3JhXCA7Civmtbfmnb4gPCBtaXJ1XCA7CivlkozmrYwgPCB3YWthXCA7CivmsZrooYwgPCBva291XCA7CivnoLTpoqggPCBoYWZ1XCA7CivmhJvmkqsgPCBhaWJ1XCA7Civpu4Tms4kgPCB5b21pXCA7Civlv5zoqLQgPCBvdXNvXCA7Civlk4DmhZUgPCBhaWJvXCA7CivlkIjnnYAgPCBhaWdpXCA7CivlvqHouqsgPCBvbm1pXCA7CivmhbDllY8gPCBpbW9uXCA7CivljLrosrsgPCBrdWhpXCA7CivlkYbmsJcgPCBha2tlXCA7CivpgqrprZQgPCBqYW1hXCA7Civpg73phJkgPCB0b2hpXCA7CivnoLTpgqogPCBoYWphXCA7CivlvoDot68gPCBvdXJvXCA7Civpgqrpo5sgPCBqYWhpXCA7CivnpZbmr40gPCBzb2JvXCA7CivmtL7miYsgPCBoYWRlXCA7CivlvKXpmYAgPCBtaWRhXCA7Civph47njL8gPCB5YWVuXCA7Civlj5fnkIYgPCBqdXJpXCA7Civlkbzlv5wgPCBrb291XCA7Civnp5jlpaUgPCBoaW91XCA7CivmsZrnqaIgPCBvd2FpXCA7CivmhJrlm7MgPCBndXp1XCA7CivmtYHluIMgPCBydWZ1XCA7Civmr43oqp4gPCBib2dvXCA7Civph47ngasgPCBub2JpXCA7CivlkozlrZcgPCB3YWppXCA7CivlkIjmrZMgPCBuZW11XCA7CivlvqHojLYgPCBvY2hhXCA7CivpurvluIMgPCBtYWZ1XCA7CivmgqrmhJ8gPCBva2FuXCA7Civnp7vkvY8gPCBpanV1XCA7CivomZrkvY0gPCBreW9pXCA7CivmgbXmlrkgPCBlaG91XCA7CivmhJvlhZAgPCBhaWppXCA7CivmspnmsbAgPCBzYXRhXCA7CivmrabpgYsgPCBidXVuXCA7CivlvqHnsL4gPCBtaXN1XCA7CivlkbPlmYwgPCBtaXNvXCA7Civlj7PmlrkgPCB1aG91XCA7CivkupzntLDkupwgPCBhamlhXCA7Civlu4jploAgPCBhbW9pXCA7CivmsZrngrkgPCBvdGVuXCA7Civmr5vnvr0gPCBrZWJhXCA7Civph47mmq4gPCB5YWJvXCA7CivlkIjmhI8gPCBnb3VpXCA7CivlvqHnpLwgPCBvcmVpXCA7Civms6LluIMgPCBoYWJ1XCA7CivlvqHnopcgPCBvd2FuXCA7CivpgbrotIggPCBpem91XCA7CivmsZrms6UgPCBvZGVpXCA7Civnn7Pok7QgPCBhb3NhXCA7CivlvqHnm4YgPCBvYm9uXCA7CivmsZrmsLQgPCBvc3VpXCA7CivljZfnhKEgPCBuYW11XCA7Civov73poqggPCBvaXRlXCA7CivnoJLntKAgPCBoaXNvXCA7CivmgKrmiJEgPCBrZWdhXCA7Civlj7PlsrggPCB1Z2FuXCA7CivmsZrmn5MgPCBvc2VuXCA7CivmganlqIEgPCBvbicnaVwgOwor6I236aeEIDwgbmlkYVwgOwor5ZCI5ZuzIDwgYWl6dVwgOwor6YG66JGXIDwgaWNob1wgOwor5bm+6YeNIDwgaWt1ZVwgOwor5rGa5pCNIDwgb3NvblwgOwor5ZCP5ZOhIDwgcmlpblwgOwor5Y6t5oKqIDwgZW4nJ29cIDsKK+WOu+W5tCA8IGtvem9cIDsKK+WQjeWMuyA8IG1laWlcIDsKK+WQj+WLmSA8IHJpbXVcIDsKK+i/tyA8IG1laVwgOwor5b+1IDwgbmVuXCA7Civnn60gPCB0YW5cIDsKK+W/qyA8IGthaVwgOwor6L+lIDwga2VpXCA7Civnn6UgPCBjaGlcIDsKK+efnCA8IGtpblwgOwor5b+ZIDwgYm91XCA7Civov5QgPCBoZW5cIDsKK+i/jiA8IGdlaVwgOwor5b+NIDwgbmluXCA7Civov4UgPCBqaW5cIDsKK+i+vyA8IHRlblwgOwor5567IDwgc2VuXCA7CivovrIgPCBub3VcIDsKK+i+ryA8IGJlblwgOwor5b6qIDwganVuXCA7CivnnqAgPCBkb3VcIDsKK+W+niA8IGp1dVwgOwor5b6FIDwgdGFpXCA7CivlvakgPCBzYWlcIDsKK+edoSA8IHN1aVwgOwor6L2fIDwgZ291XCA7CivlvZMgPCB0b3VcIDsKK+W9iCA8IGRhblwgOwor55ypIDwgZ2VuXCA7CivnnKAgPCBtaW5cIDsKK+W8nyA8IHRlaVwgOwor5bybIDwgc2hpXCA7CivlvJggPCBrb3VcIDsKK+ecjCA8IGtlblwgOwor55yLIDwga2FuXCA7CivlvIQgPCByb3VcIDsKK+ecgSA8IHNlaVwgOwor55u4IDwgc291XCA7Civlu6IgPCBoYWlcIDsKK+i7jSA8IGd1blwgOwor5buJIDwgcmVuXCA7Civnm4YgPCBib25cIDsKK+W6uCA8IHlvdVwgOwor55qwIDwgaG91XCA7CivouocgPCBjaG9cIDsKK+W5viA8IGlrdVwgOwor5bm9IDwgeXV1XCA7CivnmYwgPCBnYW5cIDsKK+i3oSA8IGF0b1wgOwor6LefIDwga29uXCA7Civot50gPCBreW9cIDsKK+eWiiA8IGpvdVwgOwor55WqIDwgYmFuXCA7CivnlaYgPCBhemVcIDsKK+eVlCA8IGhhblwgOwor55SjIDwgc2FuXCA7CivotIUgPCB6ZWlcIDsKK+eTtiA8IGJpblwgOwor6LOjIDwgYmFpXCA7Civnk5wgPCB1cmlcIDsKK+WyqSA8IGl3YVwgOwor6LKhIDwgemFpXCA7CivosaEgPCB6b3VcIDsKK+WxjyA8IGhlaVwgOwor5bCaIDwgbmFvXCA7CivlsIQgPCBzaGFcIDsKK+WwgSA8IGZ1dVwgOwor5a+4IDwgc3VuXCA7CivlrrUgPCB5b2lcIDsKK+WusyA8IGdhaVwgOwor5a6bIDwgYXRlXCA7CivlrZggPCBzb25cIDsKK+WsqiA8IGhpblwgOwor6Ku4IDwgc2hvXCA7Civoq5YgPCByb25cIDsKK+WrjCA8IGl5YVwgOwor54qsIDwgaW51XCA7CivoqoQgPCBydWlcIDsKK+eJoSA8IG9zdVwgOwor54mMIDwgcGFpXCA7CivniJsgPCByYW5cIDsKK+eHuyA8IGt1blwgOwor5aeJIDwgYW5lXCA7CivopqogPCBveWFcIDsKK+WlriA8IGZ1blwgOwor5aWlIDwgb2t1XCA7CivopZ8gPCBlcmlcIDsKK+eEtiA8IHplblwgOwor5aOwIDwga29lXCA7Civoo48gPCB1cmFcIDsKK+iigiA8IGJlaVwgOwor6J+7IDwgYXJpXCA7Civmv5ggPCBuZWlcIDsKK+WfiyA8IG1haVwgOwor5Z6iIDwgYWthXCA7Civonb8gPCBoYWVcIDsKK+m9oSA8IHJlaVwgOwor5ru/IDwgbWFuXCA7Civom5sgPCBzaHVcIDsKK+WbmyA8IHlvblwgOwor6bq7IDwgYXNhXCA7Civmub4gPCB3YW5cIDsKK+iZnCA8IHJ5b1wgOwor5rimIDwgdXp1XCA7CivlmJggPCB1c29cIDsKK+iYgiA8IHp1aVwgOwor5reLIDwgcmluXCA7CivmtrIgPCBla2lcIDsKK+WWsCA8IGt1dVwgOwor5rW3IDwgdW1pXCA7CivllY8gPCBtb25cIDsKK+azoSA8IGF3YVwgOwor6JKZIDwgbW91XCA7CivmspYgPCBva2lcIDsKK+ayjCA8IHRvblwgOwor5ZGzIDwgYWppXCA7CivmsaAgPCBpa2VcIDsKK+axlyA8IGFzZVwgOwor5ZGRIDwgZG9uXCA7CivmsI8gPCB1amlcIDsKK+WPsCA8IGRhaVwgOwor5q6YIDwgemFuXCA7CivmrYwgPCB1dGFcIDsKK+WNiCA8IHVtYVwgOwor5Y2BIDwgdG9vXCA7CivprLwgPCBvbmlcIDsKK+iMtiA8IGNoYVwgOwor5YukIDwgZ29uXCA7Civoi5cgPCBuYWVcIDsKK+iJsiA8IGlyb1wgOwor5YmNIDwgbWFlXCA7CivliIYgPCBidW5cIDsKK+iHvCA8IHVzdVwgOwor6aatIDwgZ3lvXCA7CivohZUgPCB1ZGVcIDsKK+WFjSA8IG1lblwgOwor5YWEIDwgYW5pXCA7Civpo7QgPCBhbWVcIDsKK+mjnCA8IGhvblwgOwor5YKzIDwgZGVuXCA7CivmooUgPCB1bWVcIDsKK+ahtiA8IG9rZVwgOwor5YG2IDwgZ3V1XCA7CivpoZQgPCBrYW9cIDsKK+mhjiA8IGFnb1wgOwor6aC8IDwgcmFpXCA7Civkv7ogPCBvcmVcIDsKK+aenSA8IGVkYVwgOwor5p2/IDwgaXRhXCA7CivkvZUgPCBuYW5cIDsKK+maiCA8IHdhaVwgOwor57mUIDwgb3JpXCA7CivkuJggPCBva2FcIDsKK+e2siA8IGFtaVwgOwor6ZW3IDwgb3NhXCA7CivmlbggPCBzdXVcIDsKK+aVhSA8IHl1ZVwgOwor57O4IDwgaXRvXCA7CivnspcgPCBhcmFcIDsKK+aPoSA8IGFrdVwgOwor56ybIDwgZnVlXCA7Civnq78gPCBzYW9cIDsKK+eosiA8IGluZVwgOwor5oiWIDwgYXJ1XCA7Civph40gPCBvbW9cIDsKK+eniyA8IGFraVwgOwor56awIDwgZGVpXCA7Civmga8gPCBpa2lcIDsKK+aBiyA8IGtvaVwgOwor6L+C6YGgIDwgdWVuXCA7Civlvq7mhI8gPCBiaWlcIDsKK+WPmeS9jSA8IGpvaVwgOwor6L+C6LevIDwgdXJvXCA7CivlvpfmiYsgPCBldGVcIDsKK+awl+WuhyA8IGtpdVwgOwor5Yy75a62IDwgaWthXCA7Civlhavph40gPCB5YWVcIDsKK+WMu+WToSA8IGlpblwgOwor5Yy75YuZIDwgaW11XCA7CivljLvkuosgPCBpamlcIDsKK+mBuuaEmyA8IGlhaVwgOwor6YG65b2xIDwgaWVpXCA7Civpg6jkvY0gPCBidWlcIDsKK+mBuuWtpCA8IGlrb1wgOwor55Ww6Z+zIDwgaW9uXCA7CivluIzmnIkgPCBrZXVcIDsKK+i/guaEmiA8IHVndVwgOwor5qyn5LqcIDwgb3VhXCA7CivmrKHkvY0gPCBqaWlcIDsKK+asoeS6nCA8IGppYVwgOwor55yJ5a6HIDwgYml1XCA7CivnlbDorbAgPCBpZ2lcIDsKK+WxhemWkyA8IGltYVwgOwor5biw5L6dIDwga2llXCA7CivpppnprZogPCBheXVcIDsKK+apn+S9jSA8IGtpaVwgOwor5Ly86Z2eIDwgZXNlXCA7CivlsL7nvr0gPCBvaGFcIDsKK+eVsOeItiA8IGlmdVwgOwor5Lya6ZmwIDwgZWluXCA7CivnlbDmr40gPCBpYm9cIDsKK+S6nOm6uyA8IGFtYVwgOwor5Lul6YGgIDwgaWVuXCA7CivkvIroqp4gPCBpZ29cIDsKK+S6nOmJmyA8IGFlblwgOwor5bC+5qC5IDwgb25lXCA7CivmpIXlrZAgPCBpc3VcIDsKK+S+neaAmSA8IGVrb1wgOwor5LqR54K6IDwgdW5pXCA7CivkupzmrKcgPCBhb3VcIDsKK+S7peW+gCA8IGlvdVwgOwor5pyJ54ShIDwgdW11XCA7CivkvJrljq0gPCBlZW5cIDsKK+aghOS9jSA8IGVpaVwgOwor5LqV5oi4IDwgaWRvXCA7CivpnZ7pgZUgPCBoaWlcIDsKK+WknOmbqCA8IHlhdVwgOwor5aSa6ZuoIDwgdGF1XCA7CivkuozlsIkgPCBuaWlcIDsKK+S4jeaEjyA8IGZ1aVwgOwor5aiB5q2mIDwgaWJ1XCA7CivmnInljaYgPCB1a2VcIDsKK+eOi+S9jSA8IG91aVwgOwor576F5a6HIDwgcmFvXCA7Civnvr3ljJYgPCB1a2FcIDsKK+e1temmrCA8IGVtYVwgOwor5aOK55a9IDwgZXNvXCA7Civpm6jmsJcgPCB1a2lcIDsKK+iqnuaEjyA8IGdvaVwgOwor6Zuo5b6MIDwgdWdvXCA7CivnhKHngrogPCBtdWlcIDsKK+ijnOmBuiA8IGhvaVwgOwor6b6SIDwgcnl1XCA7Civpu7YgPCBhemFcIDsKK+mYv+avlCA8IGFiaVwgOwor6bOwIDwgbmlvXCA7CivpsJUgPCBlYmlcIDsKK+mwkyA8IGVyYVwgOwor6aSMIDwgZXNhXCA7CivpjoogPCBoYXVcIDsKK+mNkSA8IGh1dVwgOwor6Yy1IDwgbmllXCA7CivpiJYgPCBodW5cIDsKK+mEvCA8IHNhYlwgOwor6YSeIDwgZ2luXCA7Civpgr4gPCBjaHVcIDsKK+i9kSA8IHJhdVwgOwor6KScIDwgZW5hXCA7CivntbXlm7MgPCBlenVcIDsKK+imi+W+lyA8IG1pZVwgOwor6Jm7IDwgYWJ1XCA7CivpmL/lkL0gPCBhdW5cIDsKK+iRtSA8IGFvaVwgOwor6I27IDwgb2dpXCA7CivoiosgPCBpbW9cIDsKK+iHkSA8IGRhdVwgOwor5ruL6ZuoIDwgaml1XCA7CivnqJcgPCBoaWVcIDsKK+eTtCA8IHJpaVwgOwor57SG5L2ZIDwgdXlvXCA7CivmqIsgPCB0b2lcIDsKK+ajsCA8IHNvaVwgOwor5p2tIDwga3VpXCA7CivmlqcgPCBvbm9cIDsKK+aEsCA8IGthdVwgOwor5b2vIDwgaGV1XCA7CivlvKggPCBzZXVcIDsKK+W7hyA8IHJpdVwgOwor5buFIDwgYWh1XCA7CivluqMgPCB0ZXVcIDsKK+W2hiA8IHNhdVwgOwor5bW6IDwgcmV1XCA7CivltbYgPCB0YW9cIDsKK+a1t+mrqiA8IG9nb1wgOwor5ayIIDwgZGV1XCA7Civlq7kgPCBiYXVcIDsKK+WrmSA8IHNlYlwgOwor5oSP6aasIDwgaWJhXCA7CivlpaEgPCBnYXVcIDsKK+WemiA8IGdldVwgOwor5ZymIDwgaXJpXCA7CivlmrcgPCBqYXVcIDsKK+Wbs+S8miA8IHp1ZVwgOwor5ZirIDwgZGFtXCA7Civlg6AgPCBmYW5cIDsKK+S9giA8IHlhaVwgOwor5oKq6ZyyIDwgb3JvXCA7CivonablpLcgPCBlem9cIDsKK+epouWkmiA8IGV0YVwgOwor56mi5ZyfIDwgZWRvXCA7CivmhbDlrokgPCBpYW5cIDsKK+WNgemHjSA8IHRvZVwgOwor5oSa5oSPIDwgZ3VpXCA7Civlj7PmtL4gPCB1aGFcIDsKK+aEj+WRsyA8IGltaVwgOwor6JCO6Z2hIDwgaWJpXCA7Civov6YgPCBrYVwgOwor55+iIDwgeWFcIDsKK+W/nCA8IG91XCA7Civlv4wgPCBraVwgOwor6L6tIDwgamlcIDsKK+W+riA8IGJpXCA7CivlvqEgPCBnb1wgOwor5b6SIDwgdG9cIDsKK+W+kCA8IGpvXCA7CivnnLwgPCBtZVwgOwor6LyqIDwgd2FcIDsKK+W8pSA8IG1pXCA7CivnnJ8gPCBtYVwgOwor5byVIDwgaW5cIDsKK+W8kCA8IG5pXCA7Civlu7YgPCBlblwgOwor5bqrIDwga29cIDsKK+W6pyA8IHphXCA7CivluqYgPCBkb1wgOwor5bqcIDwgZnVcIDsKK+W6hyA8IGhpXCA7CivouLAgPCB5dVwgOwor6LevIDwgcm9cIDsKK+W3riA8IHNhXCA7Civlt6MgPCBzdVwgOwor55ebIDwgdHNcIDsKK+eWkSA8IGdpXCA7Civnlo4gPCBzb1wgOwor55SwIDwgdGFcIDsKK+eUpSA8IG9pXCA7CivosasgPCB5b1wgOwor5bGlIDwgcmlcIDsKK+WvnSA8IG5lXCA7CivlrrYgPCBrZVwgOwor6KidIDwgZ2FcIDsKK+eHnyA8IGVpXCA7CivopaYgPCBqdVwgOwor5aWIIDwgbmFcIDsKK+eEoSA8IG11XCA7CivopJ4gPCBvblwgOwor6KSTIDwgaG9cIDsKK+ijsyA8IG1vXCA7Civloq4gPCBkYVwgOwor5aC0IDwgYmFcIDsKK+eArCA8IHNlXCA7CivonrogPCByYVwgOwor5ZuzIDwgenVcIDsKK+WXnyA8IGFhXCA7Civol40gPCBhaVwgOwor6bWhIDwgYnVcIDsKK+a0viA8IGhhXCA7CivojqsgPCBib1wgOwor6IumIDwga3VcIDsKK+WHuiA8IGRlXCA7CivlhbcgPCBndVwgOwor5qGIIDwgYW5cIDsKK+mdkiA8IGFvXCA7CivkupEgPCB1blwgOwor5LmDIDwgbm9cIDsKK+aYryA8IHplXCA7CivmiYsgPCB0ZVwgOwor5oO5IDwgamFcIDsKK+S8iuS6lSA8IGlpXCA7Civpl54gPCBrblwgOwor6YiHIDwgaHVcIDsKK+iuhCA8IHJ1XCA7Civmm70gPCB6b1wgOwor5pCZIDwgbnVcIDsKK+W6riA8IGl1XCA7CivltrQgPCBhdVwgOwor5bKGIDwgZXVcIDsKK+WxgSA8IGhlXCA7CivluLcgPCBpXCA7CivlsL4gPCBvXCA7CivlrocgPCB1XCA7CivmsZ8gPCBlXCA7Civkup4gPCBhXCA7Civms5Xlrabns7vlpKflrabpmaLlhbHpgJrlhaXlraboqabpqJMgPiBob3VnYWt1a2VpZGFpZ2FrdWlua3lvdXRzdXVueXV1Z2FrdXNoaWtlblwgOwor5pyd6a6u5rCR5Li75Li7576p5Lq65rCR5YWx5ZKM5Zu9ID4gY2hvdXNlbm1pbnNodXNodWdpamlubWlua3lvdXdha29rdVwgOwor6Ieq5YuV6LuK5pCN5a6z6LOg5YSf6LKs5Lu75L+d6Zm6ID4gamlkb3VzaGFzb25nYWliYWlzaG91c2VraW5pbmhva2VuXCA7CivnsbPlm73lpKflrablhaXlrablhbHpgJroqabpqJMgPiBiZWlrb2t1ZGFpZ2FrdW55dXVnYWt1a3lvdXRzdXVzaGlrZW5cIDsKK+aXpeacrOWKtOWDjee1hOWQiOe3j+ipleitsOS8miA+IG5paG9ucm91ZG91a3VtaWFpc291aHlvdWdpa2FpXCA7Civmi5jmnZ/lkI3nsL/lvI/mr5Tkvovku6PooajliLYgPiBrb3Vzb2t1bWVpYm9oaXJlaWRhaWh5b3VzZWlcIDsKK+iHqOWFtemXmOiAheeahumZo+ijguWcqOWJjSA+IHJpbnB5b3V0b3VzaGFrYWlqaW5yZXRzdXphaXplblwgOwor5aSq5bmz5rSL5qmf5qKw57+76Kiz5Y2U5LyaID4gdGFpaGVpeW91a2lrYWlob24nJ3lha3VreW91a2FpXCA7Civli6TlirTogIXosqHnlKPlvaLmiJDkv4PpgLIgPiBraW5yb3VzaGF6YWlzYW5rZWlzZWlzb2t1c2hpblwgOwor6LaF6LaF5aSn6KaP5qih6ZuG56mN5Zue6LevID4gY2hvdWNob3VkYWlraWJvc2h1dXNla2lrYWlyb1wgOwor6LaF44CF5aSn6KaP5qih6ZuG56mN5Zue6LevID4gY2hvdWNob3VkYWlraWJvc2h1dXNla2lrYWlyb1wgOwor5aSq5bmz5rSL5a6J5YWo5L+d6Zqc5p2h57SEID4gdGFpaGVpeW91YW56ZW5ob3Nob3Vqb3V5YWt1XCA7Civmk43nuKbluK3pn7Plo7DoqJjpjLLoo4Xnva4gPiBzb3VqdXVzZWtpb25zZWlraXJva3Vzb3VjaGlcIDsKK+iIquepuuWuh+WumeaKgOihk+eglOeptuaJgCA+IGtvdWt1dXVjaHV1Z2lqdXRzdWtlbmt5dXVqb1wgOwor5rWu5YuV5bCP5pWw54K55ryU566X5qmf5qeLID4gZnVkb3VzaG91c3V1dGVuJydlbnphbmtpa291XCA7Civnj77ph5Hoh6rli5XpoJDph5HmlK/miZXmqZ8gPiBnZW5raW5qaWRvdXlva2luc2hpaGFyYWlraVwgOwor5Li76L6e6aeG5YuV5Y+l5qeL6YCg5paH5rOVID4gc2h1amlrdWRvdWt1a291em91YnVucG91XCA7CivntYzmuIjljZTlipvplovnmbrmqZ/mp4sgPiBrZWl6YWlreW91cnlva3VrYWloYXRzdWtpa291XCA7CivljJfmtbfpgZPplovnmbrluoHplbflrpggPiBob2trYWlkb3VrYWloYXRzdWNob3VjaG91a2FuXCA7CivlpJblm73kurrnmbvpjLLoqLzmmI7mm7ggPiBnYWlrb2t1amludG91cm9rdXNob3VtZWlzaG9cIDsKK+aIpueVpeWFteWZqOWJiua4m+adoee0hCA+IHNlbnJ5YWt1aGVpa2lzYWt1Z2Vuam91eWFrdVwgOwor5Zu96Zqb5qmf5qKw57+76Kiz5Y2U5LyaID4ga29rdXNhaWtpa2FpaG9uJyd5YWt1a3lvdWthaVwgOwor5Zu96Zqb6Zu75rCX6YCa5L+h6YCj5ZCIID4ga29rdXNhaWRlbmtpdHN1dXNoaW5yZW5nb3VcIDsKK+a1t+Wklue1jOa4iOWNlOWKm+WfuumHkSA+IGthaWdhaWtlaXphaWt5b3VyeW9rdWtpa2luXCA7Civml6XnsbPlronlhajkv53pmpzmnaHntIQgPiBuaWNoaWJlaWFuemVuaG9zaG91am91eWFrdVwgOwor5oim5rKh6ICF6L+95oK86KiY5b+15pelID4gc2VuYm90c3VzaGF0c3VpdG91a2luZW5iaVwgOwor5oim6KGT6Iiq56m657Wx5Yi25pys6YOoID4gc2VuanV0c3Vrb3VrdXV0b3VzZWlob25idVwgOwor5bel5qWt6auY562J5bCC6ZaA5a2m5qChID4ga291Z3lvdWtvdXRvdXNlbm1vbmdha2tvdVwgOwor5YyX5aSn6KW/5rSL5p2h57SE5qmf5qeLID4ga2l0YXRhaXNlaXlvdWpvdXlha3VraWtvdVwgOwor6LaF5aSn6KaP5qih6ZuG56mN5Zue6LevID4gY2hvdWRhaWtpYm9zaHV1c2VraWthaXJvXCA7CivljJblrablhbXlmajnpoHmraLmnaHntIQgPiBrYWdha3VoZWlraWtpbnNoaWpvdXlha3VcIDsKK+mWoueojuiyv+aYk+S4gOiIrOWNlOWumiA+IGthbnplaWJvdWVraWlwcGFua3lvdXRlaVwgOwor5Zyo55WZ5pyf6ZaT5pu05paw6Kix5Y+vID4gemFpcnl1dWtpa2Fua291c2hpbmt5b2thXCA7CivkuIflm73lm73pmpvpn7PmqJnmloflrZcgPiBiYW5rb2t1a29rdXNhaW9ucHlvdW1vamlcIDsKK+a1t+a0i+aKleajhOimj+WItuadoee0hCA+IGthaXlvdXRvdWtpa2lzZWlqb3V5YWt1XCA7Civph47nlJ/li5Xniankv53orbflm6PkvZMgPiB5YXNlaWRvdWJ1dHN1aG9nb2RhbnRhaVwgOwor6Ieq5YuV5YiX6LuK5Yi25b6h6KOF572uID4gamlkb3VyZXNzaGFzZWlneW9zb3VjaGlcIDsKK+WkqeeEtuizh+a6kOS/neitt+irluiAhSA+IHRlbicnbmVuc2hpZ2VuaG9nb3JvbnNoYVwgOwor6Z2e5bi45LqL5oWL5a++5Yem6KiI55S7ID4gaGlqb3VqaXRhaXRhaXNob2tlaWtha3VcIDsKK+iHquWLleWIl+i7iuWBnOatouijhee9riA+IGppZG91cmVzc2hhdGVpc2hpc291Y2hpXCA7CivotaTljYHlrZflm73pmpvlp5Tlk6HkvJogPiBzZWtpanV1amlrb2t1c2FpaWlua2FpXCA7Civoq4foqbHooajnpLrmp4vpgKDnkIboq5YgPiBkYW53YWh5b3VqaWtvdXpvdXJpcm9uXCA7CivlhbHnlKPlhZrkuK3lpK7lp5Tlk6HkvJogPiBreW91c2FudG91Y2h1dW91aWlua2FpXCA7CivmsJHkuLvlhZrlhajlm73lp5Tlk6HkvJogPiBtaW5zaHV0b3V6ZW5rb2t1aWlua2FpXCA7Civoi7Hoqp7ln7rnpI7og73lipvoqabpqJMgPiBlaWdva2lzb25vdXJ5b2t1c2hpa2VuXCA7CivkuIDoiKzlkb3ku6TmvJTnrpfmqZ/mp4sgPiBpcHBhbm1laXJlaWVuemFua2lrb3VcIDsKK+efpeitmOmbhue0hOWei+eUo+alrSA+IGNoaXNoaWtpc2h1dXlha3VnYXRhc2FuZ3lvdVwgOwor6Ieq5b6L56We57WM5aSx6Kq/55eHID4gamlyaXRzdXNoaW5rZWlzaGl0Y2hvdXNob3VcIDsKK+aylue4hOmWi+eZuuW6gemVt+WumCA+IG9raW5hd2FrYWloYXRzdWNob3VjaG91a2FuXCA7CivlvIHoqLzms5XnmoTllK/nianoq5YgPiBiZW5zaG91aG91dGVraXl1aWJ1dHN1cm9uXCA7Civlm73pmpvljZTlipvkuovmpa3lm6MgPiBrb2t1c2Fpa3lvdXJ5b2t1amlneW91ZGFuXCA7Civnt4/lkIjnmoTlk4Hos6rnrqHnkIYgPiBzb3Vnb3V0ZWtpaGluc2hpdHN1a2FucmlcIDsKK+eWkeS8vOebtOaOpeebrueahOiqniA+IGdpamljaG9rdXNldHN1bW9rdXRla2lnb1wgOwor5LiH5Zu96JGX5L2c5qip5p2h57SEID4gYmFua29rdWNob3Nha3VrZW5qb3V5YWt1XCA7CivoqIDoqp7lrabnmoTlrp/lnKjoq5YgPiBnZW5nb2dha3V0ZWtpaml0c3V6YWlyb25cIDsKK+WGoOeKtuWLleiEiOihgOagk+eXhyA+IGthbmpvdWRvdW15YWt1a2Vzc2Vuc2hvdVwgOwor56eR5a2m5oqA6KGT5bqB6ZW35a6YID4ga2FnYWt1Z2lqdXRzdWNob3VjaG91a2FuXCA7CivotaTooYDnkIPmsojpmY3pgJ/luqYgPiBzZWtrZWtreXV1Y2hpbmtvdXNva3Vkb1wgOwor55+z5rK56Ly45Ye65Zu95qmf5qeLID4gc2VraXl1eXVzaHV0c3Vrb2t1a2lrb3VcIDsKK+WFrOWFseiBt+alreWuieWumuaJgCA+IGtvdWt5b3VzaG9rdWd5b3VhbnRlaWpvXCA7CivmiKbooZPoiKrnqbrntbHliLbnj60gPiBzZW5qdXRzdWtvdWt1dXRvdXNlaWhhblwgOwor6Ieq5YuV6YeR6Yqt5Ye65YWl5qmfID4gamlkb3VraW5zZW5zaHV0c3VueXV1a2lcIDsKK+WcsOmch+mbt+eBq+S6i+imqueItiA+IGppc2hpbmthbWluYXJpa2FqaW95YWppXCA7CivlpJrogqLpgbjmip7lvI/oqabllY8gPiB0YXNoaXNlbnRha3VzaGlraXNoaW1vblwgOwor5paw6Zai6KW/5Zu96Zqb56m65rivID4gc2hpbmthbnNhaWtva3VzYWlrdXVrb3VcIDsKK+iogOiqnuWtpueahOims+W/teirliA+IGdlbmdvZ2FrdXRla2lrYW4nJ25lbnJvblwgOwor5b6M55m655m65bGV6YCU5LiK5Zu9ID4ga291aGF0c3VoYXR0ZW50b2pvdWtva3VcIDsKK+aKuea2iOeZu+mMsuiovOaYjuabuCA+IG1hc2hvdXRvdXJva3VzaG91bWVpc2hvXCA7CivntYzmuIjkvIHnlLvluoHplbflrpggPiBrZWl6YWlraWtha3VjaG91Y2hvdWthblwgOwor5YaN55Sf5LiN6Imv5oCn6LKn6KGAID4gc2Fpc2VpZnVyeW91c2VpaGlua2V0c3VcIDsKK+eBq+WKm+aUr+aPtOiqv+aVtOe3miA+IGthcnlva3VzaGllbmNob3VzZWlzZW5cIDsKK+egtOWjiua0u+WLlemYsuatouazlSA+IGhha2Fpa2F0c3Vkb3Vib3VzaGlob3VcIDsKK+Wbvemam+i/lOS/oeWIh+aJi+WIuCA+IGtva3VzYWloZW5zaGlua2l0dGVrZW5cIDsKK+S4reiPr+S6uuawkeWFseWSjOWbvSA+IGNodXVrYWppbm1pbmt5b3V3YWtva3VcIDsKK+adsea1t+mBk+S6lOWNgeS4ieasoSA+IHRvdWthaWRvdWdvanV1c2FudHN1Z2lcIDsKK+Wuh+WumemWi+eZuuS6i+alreWboyA+IHVjaHV1a2FpaGF0c3VqaWd5b3VkYW5cIDsKK+S4iei7uOWcp+e4ruippumok+apnyA+IHNhbmppa3Vhc3NodWt1c2hpa2Vua2lcIDsKK+imluiBtOiAheWPguWKoOeVque1hCA+IHNoaWNob3VzaGFzYW5rYWJhbmd1bWlcIDsKK+W3numam+mAmuWVhuWnlOWToeS8miA+IHNodXVzYWl0c3V1c2hvdWlpbmthaVwgOwor5ZGo5rOi5pWw5aSJ5o+b6KOF572uID4gc2h1dWhhc3V1aGVua2Fuc291Y2hpXCA7CivmhaLmgKfnlrLlirTnl4flgJnnvqQgPiBtYW5zZWloaXJvdXNob3Vrb3VndW5cIDsKK+WFrOWus+WvvuetluWfuuacrOazlSA+IGtvdWdhaXRhaXNha3VraWhvbmhvdVwgOwor57WM5riI5Zuj5L2T6YCj5ZCI5LyaID4ga2VpemFpZGFudGFpcmVuZ291a2FpXCA7CivmiKbpl5jpm7vlrZDmiKbmg4XloLEgPiBzZW50b3VkZW5zaGlzZW5qb3Vob3VcIDsKK+ePvumHkeiHquWLleaUr+aJleapnyA+IGdlbmtpbmppZG91c2hpaGFyYWlraVwgOwor5pyA6auY57WM5Za26LKs5Lu76ICFID4gc2Fpa291a2VpZWlzZWtpbmluc2hhXCA7Civoo4XnlLLkurrlk6HpgYvmkKzou4ogPiBzb3Vrb3VqaW4nJ2luJyd1bnBhbnNoYVwgOwor5pel5pys6Kqe6IO95Yqb6Kmm6aiTID4gbmlob25nb25vdXJ5b2t1c2hpa2VuXCA7Civpn7Pnr4DkuLvpn7PnmoTlrZDpn7MgPiBvbnNldHN1c2h1b250ZWtpc2hpaW5cIDsKK+iovOWIuOWPluW8leWnlOWToeS8miA+IHNob3VrZW50b3JpaGlraWlpbmthaVwgOwor5pyA6auY6LKh5YuZ6LKs5Lu76ICFID4gc2Fpa291emFpbXVzZWtpbmluc2hhXCA7Civnn63ot53pm6Lpm6LnnYDpmbjmqZ8gPiB0YW5reW9yaXJpY2hha3VyaWt1a2lcIDsKK+apn+iDveWNmOS4gOWMluaWh+azlSA+IGtpbm91dGFuJydpdHN1a2FidW5wb3VcIDsKK+efpeiDveaDheWgseeglOeptumDqCA+IGNoaW5vdWpvdWhvdWtlbmt5dXVidVwgOwor5Yqg5Zyn5rC05Z6L5Y6f5a2Q54KJID4ga2FhdHN1c3VpZ2F0YWdlbnNoaXJvXCA7CivnkrDlpKrlubPmtIvlnLDpnIfluK8gPiBrYW50YWloZWl5b3VqaXNoaW50YWlcIDsKK+S6uueoruW3ruWIpeS4u+e+qeiAhSA+IGppbnNodXNhYmV0c3VzaHVnaXNoYVwgOwor6Ieq54S255Kw5aKD5L+d5YWo5rOVID4gc2hpemVua2Fua3lvdWhvemVuaG91XCA7CivnkrDlpKrlubPmtIvpgKDlsbHluK8gPiBrYW50YWloZWl5b3V6b3V6YW50YWlcIDsKK+ihjOWLleS4u+e+qeW/g+eQhuWtpiA+IGtvdWRvdXNodWdpc2hpbnJpZ2FrdVwgOwor56ys5LiA5qyh5LiW55WM5aSn5oimID4gZGFpaWNoaWppc2VrYWl0YWlzZW5cIDsKK+WkieWLleeCuuabv+ebuOWgtOWItiA+IGhlbmRvdWthd2FzZXNvdWJhc2VpXCA7Civmra/lhoXnmYLms5XlsILploDljLsgPiBzaGlrYXJ5b3Vob3VzZW5tb24nJ2lcIDsKK+eSsOWkquW5s+a0i+eBq+WxseW4ryA+IGthbnRhaWhlaXlvdWthemFudGFpXCA7Civlrp/mg4Xoqr/mn7vlp5Tlk6HkvJogPiBqaXRzdWpvdWNob3VzYWlpbmthaVwgOwor56eR5a2m5Z+656SO56CU56m25omAID4ga2FnYWt1a2lzb2tlbmt5dXVzaG9cIDsKK+WkieW9oueUn+aIkOe1seiqnuirliA+IGhlbmtlaXNlaXNlaXRvdWdvcm9uXCA7CivlpKfopo/mqKHpm4bnqY3lm57ot68gPiBkYWlraWJvc2h1dXNla2lrYWlyb1wgOwor5Y2X54Sh5aaZ5rOV6JOu6I+v57WMID4gbmFtdW15b3Vob3VyZW5nZWt5b3VcIDsKK+acqueiuuiqjemjm+ihjOeJqeS9kyA+IG1pa2FrdW5pbmhpa291YnV0dGFpXCA7CivkuIDphbjljJbngq3ntKDkuK3mr5IgPiBpc3NhbmthdGFuc29jaHV1ZG9rdVwgOwor5YWs5q2j5Y+W5byV5aeU5ZOh5LyaID4ga291c2VpdG9yaWhpa2lpaW5rYWlcIDsKK+eojuW8leWJjeW9k+acn+WIqeebiiA+IHplaWJpa2ltYWV0b3VraXJpZWtpXCA7CivpgKPpgqblj5blvJXlp5Tlk6HkvJogPiByZW5wb3V0b3JpaGlraWlpbmthaVwgOwor5rWB6KGM5oCn6ICz5LiL6IW654KOID4gcnl1dWtvdXNlaWppa2FzZW4nJ2VuXCA7Civnt4/nkIblupznt4/li5nplbflrpggPiBzb3VyaWZ1c291bXVjaG91a2FuXCA7CivnkrDlooPkv53orbfkuLvnvqnogIUgPiBrYW5reW91aG9nb3NodWdpc2hhXCA7Civml6XmnKzpmbjkuIroh6rooZvpmoogPiBuaWhvbnJpa3Vqb3VqaWVpdGFpXCA7Civph5HlnLDph5HmnKzkvY3liLbluqYgPiBraW5qaWdhbmVob24nJ2lzZWlkb1wgOwor6YeN6KaB54Sh5b2i5paH5YyW6LKhID4ganV1eW91bXVrZWlidW5rYXphaVwgOwor57WM5riI56S+5Lya55CG5LqL5LyaID4ga2VpemFpc2hha2FpcmlqaWthaVwgOwor5Li76Kqe5Yqp5YuV6Kme5YCS572uID4gc2h1Z29qb2RvdXNoaXRvdWNoaVwgOwor5ZCI5ZCM5oqA6KGT5aeU5ZOh5LyaID4gZ291ZG91Z2lqdXRzdWlpbmthaVwgOwor6Ieq5YuV5pa55ZCR5o6i55+l5qmfID4gamlkb3Vob3Vrb3V0YW5jaGlraVwgOwor5biw6YKE5LiN6IO96ZmQ55WM54K5ID4ga2lrYW5mdW5vdWdlbmthaXRlblwgOwor5Zu95a625YWs5a6J5aeU5ZOh6ZW3ID4ga29ra2Frb3VhbicnaWluY2hvdVwgOwor5Zu95Lya5a++562W5aeU5ZOh5LyaID4ga29ra2FpdGFpc2FrdWlua2FpXCA7CivnrKzkuozmrKHkuJbnlYzlpKfmiKYgPiBkYWluaWppc2VrYWl0YWlzZW5cIDsKK+S6nOexs+WIqeWKoOWQiOihhuWbvSA+IGFtZXJpa2FnYXNzaHV1a29rdVwgOwor5pel5pys6Iiq56m66Ieq6KGb6ZqKID4gbmlob25rb3VrdXVqaWVpdGFpXCA7CivnrKblj7fljJbmloflrZfpm4blkIggPiBmdWdvdWthbW9qaXNodXVnb3VcIDsKK+aXpeacrOa1t+S4iuiHquihm+maiiA+IG5paG9ua2Fpam91amllaXRhaVwgOwor5LiL5L2N56+E55aH5YyW57Sg5oCnID4ga2FpaGFuY2h1dWthc29zZWlcIDsKK+mBuOaMmeeuoeeQhuWnlOWToeS8miA+IHNlbmt5b2thbnJpaWlua2FpXCA7CivkuIvkvY3nr4TnlofljJbljp/nkIYgPiBrYWloYW5jaHV1a2FnZW5yaVwgOwor6ICz6by75ZK95ZaJ5bCC6ZaA5Yy7ID4gamliaWlua291c2VubW9uJydpXCA7CivorbDpmaLpgYvllrblp5Tlk6HkvJogPiBnaWluJyd1bicnZWlpaW5rYWlcIDsKK++8ku+8kO+8kO+8kOW5tOWVj+mhjCA+IG5pc2VuJyduZW5tb25kYWlcIDsKK+Wul+aVmeeahOeLrOeri+aApyA+IHNodXVreW91dGVraWRva3VyaXRzdXNlaVwgOwor55u05o6l54Wn5rqW5bCE5pKDID4gY2hva3VzZXRzdXNob3VqdW5zaGFnZWtpXCA7Civnibnmrorlj5bmibHpg7Xkvr8gPiB0b2t1c2h1dG9yaWF0c3VrYWl5dXViaW5cIDsKK+S5vua5v+eQg+a5v+W6puioiCA+IGthbnNoaXRzdWt5dXVzaGl0c3Vkb2tlaVwgOwor5Zyn5a+G6ZmN5LyP5b+c5YqbID4gYXRzdW1pdHN1a291ZnVrdW91cnlva3VcIDsKK+WFrOiqjeWNuOWjsualreiAhSA+IGtvdW5pbicnb3Jvc2hpdXJpZ3lvdXNoYVwgOwor5qC45YiG6KOC55Sf5oiQ54mpID4ga2FrdWJ1bnJldHN1c2Vpc2VpYnV0c3VcIDsKK+iBt+alreWIpembu+ipseW4syA+IHNob2t1Z3lvdWJldHN1ZGVud2FjaG91XCA7CivlhaXlrablhbHpgJroqabpqJMgPiBueXV1Z2FrdWt5b3V0c3V1c2hpa2VuXCA7CivlrqTlhoXnrqHlvKbmpb3lm6MgPiBzaGl0c3VuYWlrYW5nZW5nYWt1ZGFuXCA7CivmnbHkuqzmoKrlvI/luILloLQgPiB0b3VreW91a2FidXNoaWtpc2hpam91XCA7Civnorrnjoflr4bluqbplqLmlbAgPiBrYWt1cml0c3VtaXRzdWRva2Fuc3V1XCA7Civljp/lrZDlipvnmbrpm7vmiYAgPiBnZW5zaGlyeW9rdWhhdHN1ZGVuc2hvXCA7Civli6flloTmh7LmgqrlsI/oqqwgPiBrYW56ZW5jaG91YWt1c2hvdXNldHN1XCA7Civmna3lkajpnaLmkanmk6blipsgPiBrdWlzaHV1bWVubWFzYXRzdXJ5b2t1XCA7CivplpPmjqXnhafmupblsITmkoMgPiBrYW5zZXRzdXNob3VqdW5zaGFnZWtpXCA7CivmlrDopo/moKrlvI/lhazplosgPiBzaGlua2lrYWJ1c2hpa2lrb3VrYWlcIDsKK+Wtpue/kuaMh+WwjuimgemgmCA+IGdha3VzaHV1c2hpZG91eW91cnlvdVwgOwor5pep55m65oCn55e05ZGG55eHID4gc291aGF0c3VzZWljaGlob3VzaG91XCA7Civkv6HnlKjljZTlkIzntYTlkIggPiBzaGluJyd5b3VreW91ZG91a3VtaWFpXCA7CivlvKbmpb3lm5vph43lpY/mm7IgPiBnZW5nYWt1c2hpanV1c291a3lva3VcIDsKK+a8lOe5ueeahOiqrOaYjuazlSA+IGVuJydla2l0ZWtpc2V0c3VtZWlob3VcIDsKK+a3seWcqOaAp+ecn+iPjOeXhyA+IHNoaW56YWlzZWlzaGlua2luc2hvdVwgOwor57Wx546H5p2f57ib55CG6KuWID4gdG91c290c3Vzb2t1YmFrdXJpcm9uXCA7CivmnKzmhYvmgKfpq5jooYDlnKcgPiBob250YWlzZWlrb3VrZXRzdWF0c3VcIDsKK+mZuOS4iuerr+WxgOijhee9riA+IHJpa3Vqb3V0YW5reW9rdXNvdWNoaVwgOwor5pel57Gz6LK/5piT5pGp5pOmID4gbmljaGliZWlib3Vla2ltYXNhdHN1XCA7CivpgJrllYbnlKPmpa3lpKfoh6MgPiB0c3V1c2hvdXNhbmd5b3VkYWlqaW5cIDsKK+mAmuWVhuiIqua1t+adoee0hCA+IHRzdXVzaG91a291a2Fpam91eWFrdVwgOwor6Luf5Yik5a6a6K2Y5Yil5ZmoID4gbmFuaGFudGVpc2hpa2liZXRzdWtpXCA7Civnqbrmg7Pnp5HlrablsI/oqqwgPiBrdXVzb3VrYWdha3VzaG91c2V0c3VcIDsKK+aWsOWFpeekvuWToeaVmeiCsiA+IHNoaW4nJ255dXVzaGFpbmt5b3Vpa3VcIDsKK+aOqOWlqOaWh+eMruebrumMsiA+IHN1aXNob3VidW5rZW5tb2t1cm9rdVwgOwor5b6z5bed5LiJ5Luj5a625YWJID4gdG9rdWdhd2FzYW5kYWlpZW1pdHN1XCA7CivnlJ/mtLvljZTlkIzntYTlkIggPiBzZWlrYXRzdWt5b3Vkb3VrdW1pYWlcIDsKK+aWmemHkeWIpee0jemDteS+vyA+IHJ5b3VraW5iZXRzdW5vdXl1dWJpblwgOwor5Lit6Led6Zui5qC45oim5YqbID4gY2h1dWt5b3Jpa2FrdXNlbnJ5b2t1XCA7CivovrLmpa3ljZTlkIzntYTlkIggPiBub3VneW91a3lvdWRvdWt1bWlhaVwgOwor5aSn6Zm45qiq5pat6YmE6YGTID4gdGFpcmlrdW91ZGFudGV0c3Vkb3VcIDsKK+mrmOWIhuWtkOWQuOWPjuS9kyA+IGtvdWJ1bnNoaWt5dXVzaHV1dGFpXCA7Civml6XnsbPmp4vpgKDljZTorbAgPiBuaWNoaWJlaWtvdXpvdWt5b3VnaVwgOwor5qmf5qKw57+76Kiz5Y2U5LyaID4ga2lrYWlob24nJ3lha3VreW91a2FpXCA7CivkuK3lpK7ooYzmlL/lrpjluoEgPiBjaHV1b3VneW91c2Vpa2FuY2hvdVwgOwor5YyX5aSn6KW/5rSL5p2h57SEID4ga2l0YXRhaXNlaXlvdWpvdXlha3VcIDsKK+mbu+awl+mAmuS/oeWkp+WtpiA+IGRlbmtpdHN1dXNoaW5kYWlnYWt1XCA7CivoirPpppnml4/ljJblkIjniakgPiBob3Vrb3V6b2t1a2Fnb3VidXRzdVwgOwor5YaF6Zaj5a6Y5oi/6ZW35a6YID4gbmFpa2FrdWthbmJvdWNob3VrYW5cIDsKK+W8pualveS6lOmHjeWlj+absiA+IGdlbmdha3Vnb2p1dXNvdWt5b2t1XCA7CivlroflrpnplovnmbroqIjnlLsgPiB1Y2h1dWthaWhhdHN1a2Vpa2FrdVwgOwor57Gz6YCj6YKm6Iiq56m65bGAID4gYmVpcmVucG91a3V1a291a3lva3VcIDsKK+WkluWbveS6uueZu+mMsuazlSA+IGdhaWtva3VqaW50b3Vyb2t1aG91XCA7CivlhbHnlKPlhZrmlL/msrvlsYAgPiBreW91c2FudG91c2VpamlreW9rdVwgOwor5p2f57ib57aZ5om/5Y6f55CGID4gc29rdWJha3VrZWlzaG91Z2VucmlcIDsKK+S4iei7uOWcp+e4ruippumokyA+IHNhbmppa3Vhc3NodWt1c2hpa2VuXCA7Civnqbrou43pgKPntaHlsIbmoKEgPiBrdXVndW5yZW5yYWt1c2hvdWtvdVwgOwor5Y245aOy54mp5L6h5oyH5pWwID4gb3Jvc2hpdXJpYnVra2FzaGlzdXVcIDsKK+WGmeecn+WIpOWumuaxuuWLnSA+IHNoYXNoaW5oYW50ZWlrZXNzaG91XCA7CivliY3nq4vohbrogqXlpKfnl4cgPiB6ZW5yaXRzdXNlbmhpZGFpc2hvdVwgOwor6Kqs5piO55qE5aal5b2T5oCnID4gc2V0c3VtZWl0ZWtpZGF0b3VzZWlcIDsKK+WFsemAmuS4gOasoeippumokyA+IGt5b3V0c3V1aWNoaWppc2hpa2VuXCA7CivnrKzkuInnqK7pg7Xkvr/niakgPiBkYWlzYW5zaHV5dXViaW5idXRzdVwgOwor5Y+L5aW96YCa5ZWG6Iiq5rW3ID4geXV1a291dHN1dXNob3Vrb3VrYWlcIDsKK+eEoeaLheS/neiyuOS7mOmHkSA+IG11dGFucG9rYXNoaXRzdWtla2luXCA7Civlv4XopoHljYHliIbmnaHku7YgPiBoaXRzdXlvdWp1dWJ1bmpvdWtlblwgOwor57K+56We55qE5oyH5bCO6ICFID4gc2Vpc2hpbnRla2lzaGlkb3VzaGFcIDsKK+WOn+WtkOeJqeeQhuWtpuiAhSA+IGdlbnNoaWJ1dHN1cmlnYWt1c2hhXCA7Civnsr7lr4bmqZ/morDlt6Xmpa0gPiBzZWltaXRzdWtpa2Fpa291Z3lvdVwgOwor5YaN5YWl5Zu96Kix5Y+v5pu4ID4gc2Fpbnl1dWtva3VreW91a2FzaG9cIDsKK+WumuW9ouWklumDteS+v+eJqSA+IHRlaWtlaWdhaXl1dWJpbmJ1dHN1XCA7CivotoXkuKbliJfoqIjnrpfmqZ8gPiBjaG91aGVpcmV0c3VrZWlzYW5raVwgOwor5Lit5p6i56We57WM57O757WxID4gY2h1dXN1dXNoaW5rZWlrZWl0b3VcIDsKK+S8nemAgeWItuW+oeaLoeW8tSA+IGRlbnNvdXNlaWd5b2tha3VjaG91XCA7Civml6XkuK3lj4vlpb3ljZTkvJogPiBuaXRjaHV1eXV1a291a3lvdWthaVwgOwor5Zu95rCR6YeR6J6N5YWs5bqrID4ga29rdW1pbmtpbicneXV1a291a29cIDsKK+WPo+i+uuWNmOe0lOeWseeWuSA+IGtvdWhlbnRhbmp1bmhvdXNoaW5cIDsKK+mbhuWbo+WuieWFqOS/nemanCA+IHNodXVkYW4nJ2FuemVuaG9zaG91XCA7CivlkI3npZ7pq5jpgJ/pgZPot68gPiBtZWlzaGlua291c29rdWRvdXJvXCA7CivmlL7lsITmgKfpmY3kuIvniakgPiBob3VzaGFzZWlrb3VrYWJ1dHN1XCA7CivliqPmgKfpgbrkvJ3lvaLos6ogPiByZXNzZWlpZGVua2Vpc2hpdHN1XCA7CivliJ3mnJ/pgbjmip7poIXnm64gPiBzaG9raXNlbnRha3Vrb3Vtb2t1XCA7Civlhajlm73mtKXmtKXmtabmtaYgPiB6ZW5rb2t1dHN1dHN1dXJhdXJhXCA7Civkv6Hku7vntbHmsrvliLbluqYgPiBzaGluJyduaW50b3VjaGlzZWlkb1wgOwor5Li76KaB6YOo57WC56uv5Z6LID4gc2h1eW91YnVzaHV1dGFuZ2F0YVwgOwor5ZCI5oiQ5YyW5a2m5bel5qWtID4gZ291c2Vpa2FnYWt1a291Z3lvdVwgOwor5Zu95rCR5L2T6IKy5aSn5LyaID4ga29rdW1pbnRhaWlrdXRhaWthaVwgOwor5Zu96Zqb6Zu75L+h6Zu76KmxID4ga29rdXNhaWRlbnNoaW5kZW53YVwgOwor6Zu75a2Q6LOH6YeR5oyv5pu/ID4gZGVuc2hpc2hpa2luZnVyaWthZVwgOwor5bym5qW95Zub6YeN5aWP5ZujID4gZ2VuZ2FrdXNoaWp1dXNvdWRhblwgOwor6Iiq56m65Lqk6YCa566h5Yi2ID4ga291a3V1a291dHN1dWthbnNlaVwgOwor6LKh5pS/5Z2H6KGh6KiI55S7ID4gemFpc2Vpa2lua291a2Vpa2FrdVwgOwor5pel5pys6KaP5qC85Y2U5LyaID4gbmlwcG9ua2lrYWt1a3lvdWthaVwgOwor5YuV54mp5oSb6K235Y2U5LyaID4gZG91YnV0c3VhaWdva3lvdWthaVwgOwor57Gz6Iiq56m65a6H5a6Z5bGAID4gYmVpa291a3V1dWNodXVreW9rdVwgOwor5YWo5Zu95rSl44CF5rWm44CFID4gemVua29rdXRzdXRzdXVyYXVyYVwgOwor5pel5pys5a2m6KGT5Lya6K2wID4gbmlob25nYWt1anV0c3VrYWlnaVwgOwor5Lq66ZaT55Kw5aKD5a6j6KiAID4gbmluZ2Vua2Fua3lvdXNlbmdlblwgOwor5a625a6F5o2c57Si5Luk54q2ID4ga2F0YWt1c291c2FrdXJlaWpvdVwgOwor5a6J5Zyf5qGD5bGx5pmC5LujID4gYXp1Y2hpbW9tb3lhbWFqaWRhaVwgOwor55Sf55CG55qE6aOf5aGp5rC0ID4gc2Vpcml0ZWtpc2hva3VlbnN1aVwgOwor55Kw5aSq5bmz5rSL6Ku45Zu9ID4ga2FudGFpaGVpeW91c2hva29rdVwgOwor54Gr5Yqb5pSv5o+06KiI55S7ID4ga2FyeW9rdXNoaWVua2Vpa2FrdVwgOwor6JGX5L2c5qip5omA5pyJ6ICFID4gY2hvc2FrdWtlbnNob3l1dXNoYVwgOwor5pWw5a2m55qE5biw57SN5rOVID4gc3V1Z2FrdXRla2lraW5vdWhvdVwgOwor5pel5pys5Zu954m56Kix5bqBID4gbmlob25rb2t1dG9ra3lvY2hvdVwgOwor6aOf57On566h55CG5Yi25bqmID4gc2hva3VyeW91a2FucmlzZWlkb1wgOwor55Sf54mp5YyW5a2m5YW15ZmoID4gc2VpYnV0c3VrYWdha3VoZWlraVwgOwor5aWz5qip5ouh5by16KuW6ICFID4gam9rZW5rYWt1Y2hvdXJvbnNoYVwgOwor57Wx5ZCI5bmV5YOa5Lya6K2wID4gdG91Z291YmFrdXJ5b3VrYWlnaVwgOwor5bCE5pKD56aB5q2i5Zyw5Z+fID4gc2hhZ2VraWtpbnNoaWNoaWlraVwgOwor54m55ZG95YWo5qip5YWs5L2/ID4gdG9rdW1laXplbmtlbmtvdXNoaVwgOwor5paw6IGe5YCr55CG57ax6aCYID4gc2hpbmJ1bnJpbnJpa291cnlvdVwgOwor6KiY6L+w55qE5aal5b2T5oCnID4ga2lqdXRzdXRla2lkYXRvdXNlaVwgOwor5LiH5Zu96YO15L6/6YCj5ZCIID4gYmFua29rdXl1dWJpbnJlbmdvdVwgOwor5L2P5a6F6YeR6J6N5YWs5bqrID4ganV1dGFrdWtpbicneXV1a291a29cIDsKK+WNmOS9jeS9k+epjemHjemHjyA+IHRhbicnaXRhaXNla2lqdXVyeW91XCA7CivntbHkuIDlnLDmlrnpgbjmjJkgPiB0b3VpdHN1Y2hpaG91c2Vua3lvXCA7CivlhazplovluILloLTmlL/nrZYgPiBrb3VrYWlzaGlqb3VzZWlzYWt1XCA7CivlnLDnkIPoprPmuKzooZvmmJ8gPiBjaGlreXV1a2Fuc29rdWVpc2VpXCA7Civph43ph4/mi7Ppl5jpgbjmiYsgPiBqdXVyeW91a2VudG91c2Vuc2h1XCA7Civkurrlt6XmsJfog7jnmYLms5UgPiBqaW5rb3VraWt5b3VyeW91aG91XCA7CivlnLDmlrnlhazlhbHlm6PkvZMgPiBjaGlob3Vrb3VreW91ZGFudGFpXCA7CivmiYvmoLnnrqHnl4flgJnnvqQgPiBzaHVrb25rYW5zaG91a291Z3VuXCA7Civpq5jliIblrZDljJblkIjniakgPiBrb3VidW5zaGlrYWdvdWJ1dHN1XCA7CivpmbjkuIrkvZzmiKbmnKzpg6ggPiByaWt1am91c2FrdXNlbmhvbmJ1XCA7CivmlL7lsITmgKflu4Pmo4TniakgPiBob3VzaGFzZWloYWlraWJ1dHN1XCA7CivpgIbou6LliIbluIPkv4LmlbAgPiBneWFrdXRlbmJ1bnB1a2Vpc3V1XCA7CivonJjom5vohpzkuIvlh7rooYAgPiBrdW1vbWFrdWthc2h1a2tldHN1XCA7CivlhbHlkIzmlZHmuIjln7rph5EgPiBreW91ZG91a3l1dXNhaWtpa2luXCA7Civkv53pmbrph5Hlj5flj5bkurogPiBob2tlbmtpbicndWtldG9yaW5pblwgOwor6Zm46LuN5aOr5a6Y5a2m5qChID4gcmlrdWd1bnNoaWthbmdha2tvdVwgOwor5ryB5qWt5bCC566h5rC05Z+fID4gZ3lvZ3lvdXNlbmthbnN1aWlraVwgOwor6Iq46KGT6Iez5LiK5Li7576pID4gZ2VpanV0c3VzaGlqb3VzaHVnaVwgOwor54m55ZG95YWo5qip5aSn5L2/ID4gdG9rdW1laXplbmtlbnRhaXNoaVwgOwor6L+R5o6l6Iiq56m65pSv5o+0ID4ga2luc2V0c3Vrb3VrdXVzaGllblwgOwor5pyJ5qmf5rC06YqA5Lit5q+SID4geXV1a2lzdWlnaW5jaHV1ZG9rdVwgOwor55Kw5aSq5bmz5rSL5qeL5oOzID4ga2FudGFpaGVpeW91a291c291XCA7CivlhaznmoTkuI3ms5XlpqjlrrMgPiBrb3V0ZWtpZnVob3Vib3VnYWlcIDsKK+aIpumXmOaUr+aPtOioiOeUuyA+IHNlbnRvdXNoaWVua2Vpa2FrdVwgOwor5Zue57ea5Yi25b6h6KaP5YmHID4ga2Fpc2Vuc2VpZ3lva2lzb2t1XCA7CivmuK/mub7pgYvpgIHkuovmpa0gPiBrb3V3YW4nJ3Vuc291amlneW91XCA7CivploDmiLjplovmlL7mlL/nrZYgPiBtb25rb2thaWhvdXNlaXNha3VcIDsKK+adseWQjemrmOmAn+mBk+i3ryA+IHRvdW1laWtvdXNva3Vkb3Vyb1wgOwor5YaF6Zaj57eP55CG5aSn6IejID4gbmFpa2FrdXNvdXJpZGFpamluXCA7Civml6XmnKzmlL7pgIHljZTkvJogPiBuaWhvbmhvdXNvdWt5b3VrYWlcIDsKK+iIquepuuWuh+WumeW3pealrSA+IGtvdWt1dXVjaHV1a291Z3lvdVwgOwor5a6J5YWo5L+d6Zqc5p2h57SEID4gYW56ZW5ob3Nob3Vqb3V5YWt1XCA7CivkuLvlg43lnJ/lnKfkv4LmlbAgPiBzaHVkb3Vkb2F0c3VrZWlzdXVcIDsKK+WPjeWwhOeahOWNiumghuW6jyA+IGhhbnNoYXRla2loYW5qdW5qb1wgOwor5Zu96Zqb6YCa6LKo5Z+66YeRID4ga29rdXNhaXRzdXVrYWtpa2luXCA7Civnn63mnJ/pm4bkuK3orJvluqcgPiB0YW5raXNodXVjaHV1a291emFcIDsKK+aXpeacrOi+suael+imj+agvCA+IG5paG9uJydub3VyaW5raWtha3VcIDsKK+iIquepuuWuh+WumeeUo+alrSA+IGtvdWt1dXVjaHV1c2FuZ3lvdVwgOwor5ZOB6LOq5L+d5oyB5pyf6ZmQID4gaGluc2hpdHN1aG9qaWtpZ2VuXCA7Civml6XmnKzlt6Xmpa3opo/moLwgPiBuaWhvbmtvdWd5b3VraWtha3VcIDsKK+S4rei3nembouaguOWFteWZqCA+IGNodXVreW9yaWtha3VoZWlraVwgOwor6YW45YyW6YKE5YWD5Y+N5b+cID4gc2Fua2FrYW5nZW5oYW4nJ25vdVwgOwor5YWs5YuZ5Z+36KGM5aao5a6zID4ga291bXVzaGlra291Ym91Z2FpXCA7Civpq5jnrYnlsILploDlrabmoKEgPiBrb3V0b3VzZW5tb25nYWtrb3VcIDsKK+atqeWFteaIpumXmOi7iuS4oSA+IGhvaGVpc2VudG91c2hhcnlvdVwgOwor5YWx5ZCM6KiY6ICF5Lya6KaLID4ga3lvdWRvdWtpc2hha2Fpa2VuXCA7CivlpKrpmb3nhrHmuKnmsLTlmaggPiB0YWl5b3VuZXRzdW9uc3Vpa2lcIDsKK+mdmeatouWcn+Wcp+S/guaVsCA+IHNlaXNoaWRvYXRzdWtlaXN1dVwgOwor5Lq65Y+j5YuV5oWL57Wx6KiIID4gamlua291ZG91dGFpdG91a2VpXCA7Civlm73pgKPkuovli5nnt4/plbcgPiBrb2t1cmVuamltdXNvdWNob3VcIDsKK+S4jeWLleeUo+WPluW+l+eojiA+IGZ1ZG91c2Fuc2h1dG9rdXplaVwgOwor5bm05qyh5pyJ57Wm5LyR5pqHID4gbmVuaml5dXVreXV1a3l1dWthXCA7CivljYHkuozmjIfohbjmvbDnmI0gPiBqdXVuaXNoaWNob3VrYWl5b3VcIDsKK+aIpuS6ieeKr+e9quazleW7tyA+IHNlbnNvdWhhbnphaWhvdXRlaVwgOwor5bm05Yqf5bqP5YiX5Yi25bqmID4gbmVua291am9yZXRzdXNlaWRvXCA7CivovrLmnpfmsLTnlKPlpKfoh6MgPiBub3VyaW5zdWlzYW5kYWlqaW5cIDsKK+S4u+imgemDqOWFiOWwjuWeiyA+IHNodXlvdWJ1c2VuZG91Z2F0YVwgOwor5Zu95rCR5YGl5bq35L+d6Zm6ID4ga29rdW1pbmtlbmtvdWhva2VuXCA7CivkuI3lrproqIjph4/nqbrplpMgPiBmdXRlaWtlaXJ5b3VrdXVrYW5cIDsKK+WPjeW4neWbveS4u+e+qeiAhSA+IGhhbnRlaWtva3VzaHVnaXNoYVwgOwor6Zu76I2357WQ5ZCI57Sg5a2QID4gZGVua2FrZXRzdWdvdXNvc2hpXCA7CivmnInpmZDnirbmhYvmlofms5UgPiB5dXVnZW5qb3V0YWlidW5wb3VcIDsKK+S/ruato+izh+acrOS4u+e+qSA+IHNodXVzZWlzaGlob25zaHVnaVwgOwor5LiA5Y215oCn5Y+M55Sf5YWQID4gaWNoaXJhbnNlaXNvdXNlaWppXCA7CivlnLDkuK3mtbfmgKfmsJflgJkgPiBjaGljaHV1a2Fpc2Vpa2lrb3VcIDsKK+aKleizh+acieS+oeiovOWIuCA+IHRvdXNoaXl1dWthc2hvdWtlblwgOwor5YmN5pa55YaN6KOc57Wm54K5ID4gemVucG91c2FpaG9reXV1dGVuXCA7Civnq4vmhrLlkJvkuLvmlL/kvZMgPiByaWtrZW5rdW5zaHVzZWl0YWlcIDsKK+aUvumAgeemgeatoueUqOiqniA+IGhvdXNvdWtpbnNoaXlvdWdvXCA7CivljYHkuIDpnaLoprPkuJbpn7MgPiBqdXVpY2hpbWVua2FuemVvblwgOwor5b2i54q26KiY5oa25ZCI6YeRID4ga2Vpam91a2lva3Vnb3VraW5cIDsKK+ihjOWLleeZuui1t+aZguWIuyA+IGtvdWRvdWhha2tpamlrb2t1XCA7CivljYHpg6jploDliIbpoZ7ms5UgPiBqdXVidW1vbmJ1bnJ1aWhvdVwgOwor5LiW55WM5LiA5ZGo5peF6KGMID4gc2VrYWlpc3NodXVyeW9rb3VcIDsKK+S4lueVjOS6uuaoqeWuo+iogCA+IHNla2Fpamlua2Vuc2VuZ2VuXCA7CivlhaznmoTljLvnmYLmqZ/plqIgPiBrb3V0ZWtpaXJ5b3VraWthblwgOwor5Y+X5YON5Zyf5Zyn5L+C5pWwID4ganVkb3Vkb2F0c3VrZWlzdXVcIDsKK+S4jeeiuuWumuaAp+WOn+eQhiA+IGZ1a2FrdXRlaXNlaWdlbnJpXCA7CivkuoznrYnovrrkuInop5LlvaIgPiBuaXRvdWhlbnNhbmtha2tlaVwgOwor5pS/5Luk5oyH5a6a6YO95biCID4gc2VpcmVpc2hpdGVpdG9zaGlcIDsKK+eEoeaLheS/neWAn+WFpemHkSA+IG11dGFucG9rYXJpaXJla2luXCA7CivljZjkvY3lirTlg43ntYTlkIggPiB0YW4nJ2lyb3Vkb3VrdW1pYWlcIDsKK+S4reWkruWHpueQhuijhee9riA+IGNodXVvdXNob3Jpc291Y2hpXCA7CivmrKflt57pgJrosqjljZjkvY0gPiBvdXNodXV0c3V1a2F0YW4nJ2lcIDsKK+iHqueUseiyv+aYk+W4r+WfnyA+IGppeXV1Ym91ZWtpdGFpaWtpXCA7CivmgYvmhJvoh7PkuIrkuLvnvqkgPiByZW4nJ2Fpc2hpam91c2h1Z2lcIDsKK+iHquWLlei7iuS/nemZuuaWmSA+IGppZG91c2hhaG9rZW5yeW91XCA7CivmiKbloLToiKrnqbrpmLvmraIgPiBzZW5qb3Vrb3VrdXVzb3NoaVwgOwor57Wx5ZCI5Y+C6KyA5pys6YOoID4gdG91Z291c2FuYm91aG9uYnVcIDsKK+acgOmVt+S4jeWAkui3nemboiA+IHNhaWNob3VmdXRvdWt5b3JpXCA7CivljbDosaHkuLvnvqnpn7Pmpb0gPiBpbnNob3VzaHVnaW9uZ2FrdVwgOwor6L+R5Luj5LqU56iu56u25oqAID4ga2luZGFpZ29zaHVreW91Z2lcIDsKK+W+jOaWueWcsOWfn+itpuWCmSA+IGtvdWhvdWNoaWlraWtlaWJpXCA7Civoh6rli5Xmk43nuKboo4Xnva4gPiBqaWRvdXNvdWp1dXNvdWNoaVwgOwor6YO95biC5a++5oqX6YeO55CDID4gdG9zaGl0YWlrb3V5YWt5dXVcIDsKK+mHkeWJm+WknOWPieWmmeeOiyA+IGtvbmdvdXlhc2hhbXlvdW91XCA7Civpq5jpgJ/mvJTnrpfmqZ/mp4sgPiBrb3Vzb2t1ZW56YW5raWtvdVwgOwor6aOb6KGM56aB5q2i56m65Z+fID4gaGlrb3VraW5zaGlrdXVpa2lcIDsKK+eSsOWig+S/neitt+irluiAhSA+IGthbmt5b3Vob2dvcm9uc2hhXCA7CivpgLHplpPlpKnmsJfkuojloLEgPiBzaHV1a2FudGVua2l5b2hvdVwgOwor5pS+5bCE57ea5oSf5Y+X5oCnID4gaG91c2hhc2Vua2FuanVzZWlcIDsKK+ekvuS8muawkeS4u+S4u+e+qSA+IHNoYWthaW1pbnNodXNodWdpXCA7Civpg6jliIbmg4XloLHmp4vpgKAgPiBidWJ1bmpvdWhvdWtvdXpvdVwgOwor5LiA5oyZ5omL5LiA5oqV6LazID4gaWtreW9zaHVpdHRvdXNva3VcIDsKK+acieW9ouWbuuWumuizh+eUoyA+IHl1dWtlaWtvdGVpc2hpc2FuXCA7Civpo5vooYzoqJjpjLLoo4Xnva4gPiBoaWtvdWtpcm9rdXNvdWNoaVwgOwor6KKr5ouF5L+d5YK15qip6aGNID4gaGl0YW5wb3NhaWtlbmdha3VcIDsKK+S6jOS6pOabv+WItuWKtOWDjSA+IG5pa291dGFpc2Vpcm91ZG91XCA7Civkv53lrojns7vnhKHmiYDlsZ4gPiBob3NodWtlaW11c2hvem9rdVwgOwor5Y+N6Lui5YiG5biD5L+C5pWwID4gaGFudGVuYnVucHVrZWlzdXVcIDsKK+epuuaMuumZjeS4i+WcsOWfnyA+IGt1dXRlaWtvdWthY2hpaWtpXCA7CivngavlipvmlK/mj7Tpg6jpmoogPiBrYXJ5b2t1c2hpZW5idXRhaVwgOwor5q2M6Iie5LyO5Y2B5YWr55WqID4ga2FidWtpanV1aGFjaGliYW5cIDsKK+Wkp+mHj+egtOWjiuWFteWZqCA+IHRhaXJ5b3VoYWthaWhlaWtpXCA7Civlj43lsITkv4LmlbDnt5rlm7MgPiBoYW5zaGFrZWlzdXVzZW56dVwgOwor57Sg57KS5a2Q5Yqg6YCf5ZmoID4gc29yeXV1c2hpa2Fzb2t1a2lcIDsKK+iHqueUseiyv+aYk+WcsOWfnyA+IGppeXV1Ym91ZWtpY2hpaWtpXCA7CivlhazplovluILloLTmk43kvZwgPiBrb3VrYWlzaGlqb3Vzb3VzYVwgOwor5Lq66Lqr5L+d6K235Luk54q2ID4gamluc2hpbmhvZ29yZWlqb3VcIDsKK+avjeWtkOWBpeW6t+aJi+W4syA+IGJvc2hpa2Vua291dGVjaG91XCA7CivljprnlJ/lubTph5Hkv53pmbogPiBrb3VzZWluZW5raW5ob2tlblwgOwor5oCn6KGM54K65oSf5p+T55eHID4gc2Vpa291aWthbnNlbnNob3VcIDsKK+eUn+WRveS/nemZuuS8muekviA+IHNlaW1laWhva2VuZ2Fpc2hhXCA7Civnp4HmnInosqHnlKPliLbluqYgPiBzaGl5dXV6YWlzYW5zZWlkb1wgOwor5LiA5Zu95LiA5YWa5Li7576pID4gaWtrb2t1aXR0b3VzaHVnaVwgOwor5pel5pys6YGT6Lev5YWs5ZujID4gbmlob25kb3Vyb2tvdWRhblwgOwor5a6f6Le155CG5oCn5om55YikID4gamlzc2VucmlzZWloaWhhblwgOwor5aSa6YeN5ZCN5YmN56m66ZaTID4gdGFqdXVuYW1hZWt1dWthblwgOwor5bmz5ZKM57at5oyB5rS75YuVID4gaGVpd2FpamlrYXRzdWRvdVwgOwor5LqM5Y215oCn5Y+M55Sf5YWQID4gbmlyYW5zZWlzb3VzZWlqaVwgOwor5Li76L6e57Sg5oCn6KaP57SEID4gc2h1amlzb3NlaWtpeWFrdVwgOwor5aWz5oCn6Kej5pS+6YGL5YuVID4gam9zZWlrYWlob3V1bmRvdVwgOwor54Kt6YW45ZCM5YyW5L2c55SoID4gdGFuc2FuZG91a2FzYXlvdVwgOwor5LqM5aSn5pS/5YWa5Li7576pID4gbmlkYWlzZWl0b3VzaHVnaVwgOwor5LiN57SU55Ww5oCn5Lqk6YGKID4gZnVqdW4nJ2lzZWlrb3V5dXVcIDsKK+mqqOearueti+WPs+ihm+mWgCA+IGhvbmVrYXdhc3VqaWVtb25cIDsKK+a1hemWk+WxseiNmOS6i+S7tiA+IGFzYW1hc2Fuc291amlrZW5cIDsKK+eSsOWig+S/neitt+S4u+e+qSA+IGthbmt5b3Vob2dvc2h1Z2lcIDsKK+S4lueVjOiyv+aYk+apn+mWoiA+IHNla2FpYm91ZWtpa2lrYW5cIDsKK+eEoeW9ouWbuuWumuizh+eUoyA+IG11a2Vpa290ZWlzaGlzYW5cIDsKK+mfs+WjsOWkmumHjeaUvumAgSA+IG9uc2VpdGFqdXVob3Vzb3VcIDsKK+iEs+aAp+Wwj+WFkOm6u+eXuiA+IG5vdXNlaXNob3VuaW1haGlcIDsKK+Wkp+adseS6nOWFseaghOWcjyA+IGRhaXRvdWFreW91ZWlrZW5cIDsKK+Wwj+WjsueJqeS+oeaMh+aVsCA+IGtvdXJpYnVra2FzaGlzdXVcIDsKK+iHqueUseS4u+e+qee1jOa4iCA+IGppeXV1c2h1Z2lrZWl6YWlcIDsKK+WknOmWk+mgkOmHkeOAheW6qyA+IHlha2FuJyd5b2tpbmtpbmtvXCA7CivpgKPpgqbmupblgpnliLbluqYgPiByZW5wb3VqdW5iaXNlaWRvXCA7CivotoXpgY7li6Tli5nmiYvlvZMgPiBjaG91a2FraW5tdXRlYXRlXCA7Civkuojlgpnlo6vlrpjlrabmoKEgPiB5b2Jpc2hpa2FuZ2Fra291XCA7CivnlLvlg4/lh6bnkIboo4Xnva4gPiBnYXpvdXNob3Jpc291Y2hpXCA7Civlha3ljYHlm5vliIbpn7PnrKYgPiByb2t1anV1c2hpYnVvbnB1XCA7CivmlL7lsITmgKflkIzkvY3kvZMgPiBob3VzaGFzZWlkb3VpdGFpXCA7CivlpJzplpPpoJDph5Hph5HluqsgPiB5YWthbicneW9raW5raW5rb1wgOwor5Lqc54ax5biv6auY5rCX5ZynID4gYW5ldHRhaWtvdWtpYXRzdVwgOwor56OB5rCX5YWx6bO055S75YOPID4gamlraWt5b3VtZWlnYXpvdVwgOwor6bOl542j5L+d6K235Yy65Z+fID4gY2hvdWp1dWhvZ29rdWlraVwgOwor5Zu96Zqb5o+05Yqp5qmf6ZaiID4ga29rdXNhaWVuam9raWthblwgOwor54Sh5pS/5bqc5Li7576p6ICFID4gbXVzZWlmdXNodWdpc2hhXCA7CivkuJbnlYzkv53lgaXmqZ/plqIgPiBzZWthaWhva2Vua2lrYW5cIDsKK+S6jOWNgeWbm+aZgumWk+WItiA+IG5panV1eW9qaWthbnNlaVwgOwor55yL6K235amm6aSK5oiQ5omAID4ga2FuZ29mdXlvdXNlaWpvXCA7CivkuI3lvZPlirTlg43ooYzngrogPiBmdXRvdXJvdWRvdWtvdWlcIDsKK+iLpuaDheWHpueQhuapn+mWoiA+IGt1am91c2hvcmlraWthblwgOwor6KOc5Yqp6KiY5oa26KOF572uID4gaG9qb2tpb2t1c291Y2hpXCA7CivmloflrZflpJrph43mlL7pgIEgPiBtb2ppdGFqdXVob3Vzb3VcIDsKK+WMu+W4q+WbveWutuippumokyA+IGlzaGlrb2trYXNoaWtlblwgOwor6IKi5L2T5LiN6Ieq55Sx5YWQID4gc2hpdGFpZnVqaXl1dWppXCA7Civku67lkI3mvKLlrZflpInmj5sgPiBrYW5ha2FuamloZW5rYW5cIDsKK+WbveWutuWFrOWLmeWToeazlSA+IGtva2tha291bXVpbmhvdVwgOwor5oSP5b+X5rG65a6a5qmf6ZaiID4gaXNoaWtldHRlaWtpa2FuXCA7CivkuLvovp7ntKDmgKfljp/nkIYgPiBzaHVqaXNvc2VpZ2VucmlcIDsKK+W8geitt+Wjq+S6i+WLmeaJgCA+IGJlbmdvc2hpamltdXNob1wgOwor6Ieq55Sx5Li7576p5Zu95a62ID4gaml5dXVzaHVnaWtva2thXCA7CivnlJ/lkb3ntq3mjIHoo4Xnva4gPiBzZWltZWlpamlzb3VjaGlcIDsKK+aWh+Wtl+espuWPt+WMluazlSA+IG1vamlmdWdvdWthaG91XCA7CivljZfnhKHpmL/lvKXpmYDku48gPiBuYW11YW1pZGFidXRzdVwgOwor6Kqe5b2Z5qmf6IO95paH5rOVID4gZ29pa2lub3VidW5wb3VcIDsKK+WAtuaiqOS8vee+hee0i+e0iyA+IGt1cmlrYXJhbW9ubW9uXCA7CivkuInljYHkuozliIbpn7PnrKYgPiBzYW5qdXVuaWJ1b25wdVwgOwor5oiR5Yip5oiR5Yip5Lqh6ICFID4gZ2FyaWdhcmltb3VqYVwgOwor5a6I56eY576p5YuZ6YGV5Y+NID4gc2h1aGlnaW11aWhhblwgOwor5piv5piv6Z2e6Z2e5Li7576pID4gemV6ZWhpaGlzaHVnaVwgOwor54OP6Iq75rKZ5pGp5aaZ546LID4gdXN1c2FtYW15b3VvdVwgOwor5Luj6KGo5Y+W57eg5b25ID4gZGFpaHlvdXRvcmlzaGltYXJpeWFrdVwgOwor5Y+W5omx6Kqs5piO5pu4ID4gdG9yaWF0c3VrYWlzZXRzdW1laXNob1wgOwor5Zu956uL5Y2a54mp6aSoID4ga29rdXJpdHN1aGFrdWJ1dHN1a2FuXCA7Civpm4bkuK3msrvnmYLlrqQgPiBzaHV1Y2h1dWNoaXJ5b3VzaGl0c3VcIDsKK+ebtOi9hOakjeawkeWcsCA+IGNob2trYXRzdXNob2t1bWluY2hpXCA7CivmnKjpgKDlu7rnr4nniakgPiBtb2t1em91a2VuY2hpa3VidXRzdVwgOwor5qSN54mp5oCn6JuL55m9ID4gc2hva3VidXRzdXNlaXRhbnBha3VcIDsKK+S/oeeUqOWPluW8leWFiCA+IHNoaW4nJ3lvdXRvcmloaWtpc2FraVwgOwor5bi45YuZ5Y+W57eg5b25ID4gam91bXV0b3Jpc2hpbWFyaXlha3VcIDsKK+S4g+aYn+WkqemBk+iZqyA+IG5hbmFob3NoaXRlbnRvdW11c2hpXCA7CivmsJHml4/lpKfomZDmrrogPiBtaW56b2t1ZGFpZ3lha3VzYXRzdVwgOwor6LaK5bm055Sf5qSN54mpID4gZXRzdW5lbnNlaXNob2t1YnV0c3VcIDsKK+ani+aIkOe0oOe1seW+oSA+IGtvdXNlaXNva291em91dG91Z3lvXCA7Civnm7TmjqXnm67nmoToqp4gPiBjaG9rdXNldHN1bW9rdXRla2lnb1wgOwor5bCC5YuZ5Y+W57eg5b25ID4gc2VubXV0b3Jpc2hpbWFyaXlha3VcIDsKK+S4gOW5tOeUn+akjeeJqSA+IGljaGluZW5zZWlzaG9rdWJ1dHN1XCA7Civpurvolqzlj5bnt6Dnj60gPiBtYXlha3V0b3Jpc2hpbWFyaWhhblwgOwor6bq76Jas5Y+W57eg5rOVID4gbWF5YWt1dG9yaXNoaW1hcmlob3VcIDsKK+S4reW/g+eahOW9ueWJsiA+IGNodXVzaGludGVraXlha3V3YXJpXCA7Civlj47nuK7mnJ/ooYDlnKcgPiBzaHV1c2h1a3VraWtldHN1YXRzdVwgOwor5Y2Y5a2Q6JGJ5qSN54mpID4gdGFuc2hpeW91c2hva3VidXRzdVwgOwor6YCj56uL5pa556iL5byPID4gcmVucml0c3Vob3V0ZWlzaGlraVwgOwor6YCa5ZWG55Sj5qWt55yBID4gdHN1dXNob3VzYW5neW91c2hvdVwgOwor5Y6f5a2Q5Yqb55m66Zu7ID4gZ2Vuc2hpcnlva3VoYXRzdWRlblwgOwor55u05o6l5rCR5Li75Yi2ID4gY2hva3VzZXRzdW1pbnNodXNlaVwgOwor6YCy5Ye65Yi26ZmQ57eaID4gc2hpbnNodXRzdXNlaWdlbnNlblwgOwor5qCq5byP5Y+W5byV5omAID4ga2FidXNoaWtpdG9yaWhpa2lqb1wgOwor55u05o6l5pWZ5o6I5rOVID4gY2hva3VzZXRzdWt5b3VqdWhvdVwgOwor5Y+M5a2Q6JGJ5qSN54mpID4gc291c2hpeW91c2hva3VidXRzdVwgOwor6Iql5bed6b6N5LmL5LuLID4gYWt1dGFnYXdhcnl1dW5vc3VrZVwgOwor6LK45YCf5a++54Wn6KGoID4gdGFpc2hha3V0YWlzaG91aHlvdVwgOwor5YWs5a6a5Ymy5byV546HID4ga291dGVpd2FyaWJpa2lyaXRzdVwgOwor5by36L+r56We57WM55eHID4ga3lvdWhha3VzaGlua2Vpc2hvdVwgOwor5ZWG5qWt5L+h55So54q2ID4gc2hvdWd5b3VzaGluJyd5b3Vqb3VcIDsKK+i8uOWHuuS/oeeUqOeKtiA+IHl1c2h1dHN1c2hpbicneW91am91XCA7Civml6fmlrDntITlhajmm7ggPiBreXV1c2hpbicneWFrdXplbnNob1wgOwor5Ye65YWl5Zu9566h55CGID4gc2h1dHN1bnl1dWtva3VrYW5yaVwgOwor6Zqc5a6z54mp56u26LWwID4gc2hvdWdhaWJ1dHN1a3lvdXNvdVwgOwor5pi85YWJ6Imy6Zu755CDID4gY2h1dWtvdXNob2t1ZGVua3l1dVwgOwor5aSp54S26Imy5YaZ55yfID4gdGVuJyduZW5zaG9rdXNoYXNoaW5cIDsKK+awtOWKm+eZuumbu+aJgCA+IHN1aXJ5b2t1aGF0c3VkZW5zaG9cIDsKK+e0oOWHuuWKm+adoeS7tiA+IHNvc2h1dHN1cnlva3Vqb3VrZW5cIDsKK+Wbveawkee3j+aUr+WHuiA+IGtva3VtaW5zb3VzaGlzaHV0c3VcIDsKK+akjeeJqeaAp+iEguiCqiA+IHNob2t1YnV0c3VzZWlzaGlib3VcIDsKK+aXp+aWsOe0hOiBluabuCA+IGt5dXVzaGluJyd5YWt1c2Vpc2hvXCA7CivplbfmnJ/osrjku5jph5EgPiBjaG91a2lrYXNoaXRzdWtla2luXCA7CivnlJ/nianniannkIblraYgPiBzZWlidXRzdWJ1dHN1cmlnYWt1XCA7CivlubPlrrbnianoqp7mioQgPiBoZWlrZW1vbm9nYXRhcmlzaG91XCA7CivoprPlr5/nmoTnoJTnqbYgPiBrYW5zYXRzdXRla2lrZW5reXV1XCA7Civos4PosrjlgJ/lpZHntIQgPiBjaGludGFpc2hha3VrZWl5YWt1XCA7CivlvrPlt53lhazniLXpgrggPiB0b2t1Z2F3YWtvdXNoYWt1dGVpXCA7Civnsr7npZ7liIboo4Lnl4cgPiBzZWlzaGluYnVucmV0c3VzaG91XCA7CivlpKrpmb3nhrHnmbrpm7sgPiB0YWl5b3VuZXRzdWhhdHN1ZGVuXCA7CivmtbflpJbnlZnlrabnhrEgPiBrYWlnYWlyeXV1Z2FrdW5ldHN1XCA7CivlporlqKDkuK3mr5Lnl4cgPiBuaW5zaGluY2h1dWRva3VzaG91XCA7Civni6znq4vmjqHnrpfliLYgPiBkb2t1cml0c3VzYWlzYW5zZWlcIDsKK+W4guWgtOWNoOacieeOhyA+IHNoaWpvdXNlbicneXV1cml0c3VcIDsKK+imluiBtOimmuaVmeadkCA+IHNoaWNob3VrYWt1a3lvdXphaVwgOwor5YaF6Zaj5rOV5Yi25bGAID4gbmFpa2FrdWhvdXNlaWt5b2t1XCA7CivkuK3lsI/kvIHmpa3luoEgPiBjaHV1c2hvdWtpZ3lvdWNob3VcIDsKK+abuOewoeS9k+Wwj+iqrCA+IHNob2thbnRhaXNob3VzZXRzdVwgOwor56S+5Lya55Sf54mp5a2mID4gc2hha2Fpc2VpYnV0c3VnYWt1XCA7Civou43pmorooYzpgLLmm7IgPiBndW50YWlrb3VzaGlua3lva3VcIDsKK+iRrOmAgeihjOmAsuabsiA+IHNvdXNvdWtvdXNoaW5reW9rdVwgOwor54mp55CG55qE54++6LGhID4gYnV0c3VyaXRla2lnZW5zaG91XCA7Civlv4Poh5PlvIHohpznl4cgPiBzaGluem91YmVubWFrdXNob3VcIDsKK+iGneiTi+iFseWPjeWwhCA+IHNoaXRzdWdhaWtlbmhhbnNoYVwgOwor5L+457Wm55Sf5rS76ICFID4gaG91a3l1dXNlaWthdHN1c2hhXCA7CivnlJ/nianmg4XloLHlraYgPiBzZWlidXRzdWpvdWhvdWdha3VcIDsKK+WkmuW5tOeUn+akjeeJqSA+IHRhbmVuc2Vpc2hva3VidXRzdVwgOwor6YeP5a2Q54mp55CG5a2mID4gcnlvdXNoaWJ1dHN1cmlnYWt1XCA7CivljJfnsbPlkIjooYblm70gPiBob2t1YmVpZ2Fzc2h1dWtva3VcIDsKK+adpeWuouiKs+WQjemMsiA+IHJhaWt5YWt1aG91bWVpcm9rdVwgOwor5Zyw5pa55qSc5a+f5bqBID4gY2hpaG91a2Vuc2F0c3VjaG91XCA7CivlsILploDnmoTnn6XorZggPiBzZW5tb250ZWtpY2hpc2hpa2lcIDsKK+e1kOWpmuihjOmAsuabsiA+IGtla2tvbmtvdXNoaW5reW9rdVwgOwor5qCq5byP6YWN5b2T6YeRID4ga2FidXNoaWtpaGFpdG91a2luXCA7CivnibnliKXphY3lvZPph5EgPiB0b2t1YmV0c3VoYWl0b3VraW5cIDsKK+e1jOa4iOaIkOmVt+eOhyA+IGtlaXphaXNlaWNob3VyaXRzdVwgOwor55Sj5qWt5Yil57WE5ZCIID4gc2FuZ3lvdWJldHN1a3VtaWFpXCA7CivlhKrnrYnljZLmpa3nlJ8gPiB5dXV0b3Vzb3RzdWd5b3VzZWlcIDsKK+WFpeWbveeuoeeQhuWxgCA+IG55dXVrb2t1a2FucmlreW9rdVwgOwor6ZaT5o6l5pKu5b2x5rOVID4ga2Fuc2V0c3VzYXRzdWVpaG91XCA7Civlrp/nianlpKfmqKHlnosgPiBqaXRzdWJ1dHN1ZGFpbW9rZWlcIDsKK+i7jeS6i+eahOS+teeVpSA+IGd1bmppdGVraXNoaW5yeWFrdVwgOwor56mN5YiG5pa556iL5byPID4gc2VraWJ1bmhvdXRlaXNoaWtpXCA7CivnqY3nrpfpm7vlipvoqIggPiBzZWtpc2FuZGVucnlva3VrZWlcIDsKK+S6jOW5tOeUn+akjeeJqSA+IG5pbmVuc2Vpc2hva3VidXRzdVwgOwor5Y2D5Lmd55m+5bm05LujID4gc2Vua3l1dWh5YWt1bmVuZGFpXCA7Civnp5HlrabljZrnianppKggPiBrYWdha3VoYWt1YnV0c3VrYW5cIDsKK+S4reWbveWFseeUo+WFmiA+IGNodXVnb2t1a3lvdXNhbnRvdVwgOwor6auY5YiG5a2Q54mp6LOqID4ga291YnVuc2hpYnVzc2hpdHN1XCA7CivnmbrpgZTlv4PnkIblraYgPiBoYXR0YXRzdXNoaW5yaWdha3VcIDsKK+eyvuelnuiWhOW8seiAhSA+IHNlaXNoaW5oYWt1amFrdXNoYVwgOwor54m55Yil6KGM5pS/5Yy6ID4gdG9rdWJldHN1Z3lvdXNlaWt1XCA7CivkuInoibLljbDliLfms5UgPiBzYW5zaG9rdWluc2F0c3Vob3VcIDsKK+aOkuWNteiqmOeZuuWJpCA+IGhhaXJhbicneXV1aGF0c3V6YWlcIDsKK+eUn+a0u+W/hemcgOWTgSA+IHNlaWthdHN1aGl0c3VqdWhpblwgOwor5bCR5bm06ZGR5Yil5omAID4gc2hvdW5lbmthbmJldHN1c2hvXCA7CivluqfpqqjnpZ7ntYznl5sgPiB6YWtvdHN1c2hpbmtlaXRzdXVcIDsKK+akjeawkeWcsOaUv+etliA+IHNob2t1bWluY2hpc2Vpc2FrdVwgOwor6Ki85Yi45Y+W5byV5rOVID4gc2hvdWtlbnRvcmloaWtpaG91XCA7CivllYblk4Hlm57ou6LnjocgPiBzaG91aGlua2FpdGVucml0c3VcIDsKK+evgOi2s+WLleeJqemWgCA+IHNlc3Nva3Vkb3VidXRzdW1vblwgOwor6KiI566X55Sf54mp5a2mID4ga2Vpc2Fuc2VpYnV0c3VnYWt1XCA7CivlsLHogbfmg4XloLHoqowgPiBzaHV1c2hva3Vqb3Vob3VzaGlcIDsKK+W7uuioreeahOmWouS/giA+IGtlbnNldHN1dGVraWthbmtlaVwgOwor5a6i5a6k5LmX5YuZ5ZOhID4ga3lha3VzaGl0c3Vqb3VtdWluXCA7CivmlK/mjIHlipvlrprlvI8gPiBzaGlqaXJ5b2t1dGVpc2hpa2lcIDsKK+WLleeJqeihjOWLleWtpiA+IGRvdWJ1dHN1a291ZG91Z2FrdVwgOwor6IG36IO95Luj6KGo5Yi2ID4gc2hva3Vub3VkYWloeW91c2VpXCA7CivmnIDpq5jmpJzlr5/luoEgPiBzYWlrb3VrZW5zYXRzdWNob3VcIDsKK+W/g+elnuiAl+W8seiAhSA+IHNoaW5zaGlubW91amFrdXNoYVwgOwor54Sh6ISK5qSO5YuV54mpID4gbXVzZWtpdHN1aWRvdWJ1dHN1XCA7CivlrrblroXkvrXlhaXnvaogPiBrYXRha3VzaGluJydueXV1emFpXCA7CivliIblrZDnlJ/nianlraYgPiBidW5zaGlzZWlidXRzdWdha3VcIDsKK+WkqeS9k+WGmeecn+ihkyA+IHRlbnRhaXNoYXNoaW5qdXRzdVwgOwor56eY5a+G5ryP5rSp572qID4gaGltaXRzdXJvdXNldHN1emFpXCA7CivplpPmjqXnm67nmoToqp4gPiBrYW5zZXRzdW1va3V0ZWtpZ29cIDsKK+eymOa2suWIhuazjOiFuiA+IG5lbicnZWtpYnVucGl0c3VzZW5cIDsKK+eerOmWk+aOpeedgOWJpCA+IHNodW5rYW5zZXRjaGFrdXphaVwgOwor5Lq65Y+j5a+G6ZuG546HID4gamlua291bWlzc2h1dXJpdHN1XCA7Civljp/oibLlhpnnnJ/niYggPiBnZW5zaG9rdXNoYXNoaW5iYW5cIDsKK+mHj+WtkOiJsuWKm+WtpiA+IHJ5b3VzaGlpcm9yaWtpZ2FrdVwgOwor5Zyo5pel57Gz6Zm46LuNID4gemFpbmljaGliZWlyaWt1Z3VuXCA7Civpo5/lk4Hmt7vliqDniakgPiBzaG9rdWhpbnRlbmthYnV0c3VcIDsKK+WLleeJqeaAp+ibi+eZvSA+IGRvdWJ1dHN1c2VpdGFucGFrdVwgOwor54m55a6a6YO15L6/5bGAID4gdG9rdXRlaXl1dWJpbmt5b2t1XCA7Civngavlipvnmbrpm7vmiYAgPiBrYXJ5b2t1aGF0c3VkZW5zaG9cIDsKK+WkmuinkuW8j+i+sualrSA+IHRha2FrdXNoaWtpbm91Z3lvdVwgOwor5rC45LiW5Lit56uL5Zu9ID4gZWlzZWljaHV1cml0c3Vrb2t1XCA7CivllK/nianlvIHoqLzms5UgPiB5dWlidXRzdWJlbnNob3Vob3VcIDsKK+WPsueahOWUr+eJqeirliA+IHNoaXRla2l5dWlidXRzdXJvblwgOwor5a6j6KqT5L6b6L+w5pu4ID4gc2Vuc2Vpa3lvdWp1dHN1c2hvXCA7CivnhrHohqjlvLXkv4LmlbAgPiBuZXRzdWJvdWNob3VrZWlzdXVcIDsKK+akjeeJqeaAp+e5iue2rSA+IHNob2t1YnV0c3VzZWlzZW4nJ2lcIDsKK+mBjuWkseWCt+Wus+e9qiA+IGthc2hpdHN1c2hvdWdhaXphaVwgOwor5YWx5ZCM5Ym16Kit6ICFID4ga3lvdWRvdXNvdXNldHN1c2hhXCA7CivkuIrntJrlia/npL7plbcgPiBqb3VreXV1ZnVrdXNoYWNob3VcIDsKK+aIpueVpeeahOaPkOaQuiA+IHNlbnJ5YWt1dGVraXRlaWtlaVwgOwor55Kw5aKD5bqB6ZW35a6YID4ga2Fua3lvdWNob3VjaG91a2FuXCA7CivlnKflipvoqr/mlbTlmaggPiBhdHN1cnlva3VjaG91c2Vpa2lcIDsKK+eUn+murumjn+aWmeWTgSA+IHNlaXNlbnNob2t1cnlvdWhpblwgOwor5pS+5bCE5oCn54mp6LOqID4gaG91c2hhc2VpYnVzc2hpdHN1XCA7CivlnLDnkIPniannkIblraYgPiBjaGlreXV1YnV0c3VyaWdha3VcIDsKK+WPjeWul+aVmeaUuemdqSA+IGhhbnNodXVreW91a2Fpa2FrdVwgOwor5a2m6K2Y57WM6aiT6ICFID4gZ2FrdXNoaWtpa2Vpa2Vuc2hhXCA7CivotaTpnaLmgZDmgJbnl4cgPiBzZWtpbWVua3lvdWZ1c2hvdVwgOwor6aOf5ZOB6KGb55Sf5rOVID4gc2hva3VoaW4nJ2Vpc2VpaG91XCA7CivmlZnogbflk6HntYTlkIggPiBreW91c2hva3Vpbmt1bWlhaVwgOwor5q+b5rKi5p2x5Li75bitID4gbW91dGFrdXRvdXNodXNla2lcIDsKK+WIpemAlOepjeeri+mHkSA+IGJldHRvdHN1bWl0YXRla2luXCA7Civov5Tkv6HmlpnokYnmm7ggPiBoZW5zaGlucnlvdWhhZ2FraVwgOwor6Ku46LuK6YCa6KGM5q2iID4gc2hvc2hhdHN1dWtvdWRvbWVcIDsKK+WbveWcn+W6gemVt+WumCA+IGtva3Vkb2Nob3VjaG91a2FuXCA7Civli6flloTmh7LmgqrliocgPiBrYW56ZW5jaG91YWt1Z2VraVwgOwor5Yy75a2m55Sf54mp5a2mID4gaWdha3VzZWlidXRzdWdha3VcIDsKK+mdnuaomea6luaLoeW8tSA+IGhpaHlvdWp1bmtha3VjaG91XCA7CivlpKrpmb3lhYnnmbrpm7sgPiB0YWl5b3Vrb3VoYXRzdWRlblwgOwor6L+U5L+h55So6JGJ5pu4ID4gaGVuc2hpbicneW91aGFnYWtpXCA7CivnnJ/nj6DppIrmrpbloLQgPiBzaGluanV5b3VzaG9rdWpvdVwgOwor6IKL6ZaT56We57WM55ebID4gcm9ra2Fuc2hpbmtlaXRzdXVcIDsKK+a1t+a0i+eJqeeQhuWtpiA+IGthaXlvdWJ1dHN1cmlnYWt1XCA7Civnsr7npZ7nmoToi6bnl5sgPiBzZWlzaGludGVraWt1dHN1dVwgOwor5Lqk5rWB55m66Zu75qmfID4ga291cnl1dWhhdHN1ZGVua2lcIDsKK+eLqeeMn+aOoembhuawkSA+IHNodXJ5b3VzYWlzaHV1bWluXCA7CivmiKbpl5jmraPpnaLluYUgPiBzZW50b3VzaG91bWVuaGFiYVwgOwor5LiN5L+h5Lu75oqV56WoID4gZnVzaGluJyduaW50b3VoeW91XCA7CivpgIHph5Hlj5flj5bkurogPiBzb3VraW4nJ3VrZXRvcmluaW5cIDsKK++8pO+8su+8s+eQhuirliA+IGRpXCDMhGFcIMyEcnVlc3VyaXJvblwgOwor6aOf57On566h55CG5rOVID4gc2hva3VyeW91a2Fucmlob3VcIDsKK+ebsuiFuOeCjuaJi+ihkyA+IG1vdWNob3VlbnNodWp1dHN1XCA7CivnrKzkuIDntJrmrrrkurogPiBkYWlpa2t5dXVzYXRzdWppblwgOwor5oim55Wl5qC45YW15ZmoID4gc2Vucnlha3VrYWt1aGVpa2lcIDsKK+WHjee1kOmYsuatouWJpCA+IHRvdWtldHN1Ym91c2hpemFpXCA7CivkuK3plpPphY3lvZPpoY0gPiBjaHV1a2FuaGFpdG91Z2FrdVwgOwor6auY6YCf5aKX5q6W54KJID4ga291c29rdXpvdXNob2t1cm9cIDsKK+i/lOS/oeaWmeWwgeetkiA+IGhlbnNoaW5yeW91ZnV1dG91XCA7CivooZvmmJ/lnLDnkIPlsYAgPiBlaXNlaWNoaWt5dXVreW9rdVwgOwor5Zyo55WZ5aSW5Zu95Lq6ID4gemFpcnl1dWdhaWtva3VqaW5cIDsKK+eUo+alreW7g+ajhOeJqSA+IHNhbmd5b3VoYWlraWJ1dHN1XCA7CivlpKnnhLboqJjlv7XniakgPiB0ZW4nJ25lbmtpbmVuYnV0c3VcIDsKK+WHuueUn+iovOaYjuabuCA+IHNodXNzZWlzaG91bWVpc2hvXCA7CivkuIrntJrnrqHnkIbogbcgPiBqb3VreXV1a2FucmlzaG9rdVwgOwor56iO6Zai55Sz5ZGK5pu4ID4gemVpa2Fuc2hpbmtva3VzaG9cIDsKK+i/lOS/oeeUqOWwgeetkiA+IGhlbnNoaW4nJ3lvdWZ1dXRvdVwgOwor54ax54uC55qE5L+h6ICFID4gbmVra3lvdXRla2lzaGluamFcIDsKK+S8gealremWk+S/oeeUqCA+IGtpZ3lvdWthbnNoaW4nJ3lvdVwgOwor6ZaL5ouT6ICF57K+56WeID4ga2FpdGFrdXNoYXNlaXNoaW5cIDsKK+a3seWcqOaAp+ecn+iPjCA+IHNoaW56YWlzZWlzaGlua2luXCA7CivmnZHokL3lhbHlkIzkvZMgPiBzb25yYWt1a3lvdWRvdXRhaVwgOwor5LiK6Zm455So6Iif6ImHID4gam91cmlrdXlvdXNodXV0ZWlcIDsKK+WPpOeUn+eJqeWtpuiAhSA+IGtvc2VpYnV0c3VnYWt1c2hhXCA7CivplovnmbrpgJTkuIrlm70gPiBrYWloYXRzdXRvam91a29rdVwgOwor6KGA5Zyn6ZmN5LiL5YmkID4ga2V0c3VhdHN1a291a2F6YWlcIDsKK+eEoeW3ruWIpeeIhuaSgyA+IG11c2FiZXRzdWJha3VnZWtpXCA7CivlubPlkoznmoTop6PmsbogPiBoZWl3YXRla2lrYWlzZXRzdVwgOwor6aOf5ZOB5Yqg5bel5qWtID4gc2hva3VoaW5rYWtvdWd5b3VcIDsKK+mrmOe0muS9j+WuheWcsCA+IGtvdWt5dXVqdXV0YWt1Y2hpXCA7CivpgY7lpLHoh7TmrbvnvaogPiBrYXNoaXRzdWNoaXNoaXphaVwgOwor6auY6aGN5omA5b6X6ICFID4ga291Z2FrdXNob3Rva3VzaGFcIDsKK+WNgeS4gOmdouims+mfsyA+IGp1dWljaGltZW5rYW4nJ25vblwgOwor5pyI57WM5Zuw6Zuj55eHID4gZ2Vra2Vpa29uJyduYW5zaG91XCA7Civlm73pmpvopovmnKzluIIgPiBrb2t1c2FpbWlob24nJ2ljaGlcIDsKK+e3keWcsOWMluioiOeUuyA+IHJ5b2t1Y2hpa2FrZWlrYWt1XCA7CivkuK3mnqLnpZ7ntYzns7sgPiBjaHV1c3V1c2hpbmtlaWtlaVwgOwor5a6f6aiT55qE56CU56m2ID4gamlra2VudGVraWtlbmt5dXVcIDsKK+WwgueUqOmnkOi7iuWgtCA+IHNlbicneW91Y2h1dXNoYWpvdVwgOwor54Sh6YGO5aSx6LKs5Lu7ID4gbXVrYXNoaXRzdXNla2luaW5cIDsKK+S4gOasoeaWueeoi+W8jyA+IGljaGlqaWhvdXRlaXNoaWtpXCA7CivlsLHmpa3mmYLplpPkuK0gPiBzaHV1Z3lvdWppa2FuY2h1dVwgOwor5Zu95rCR5LyR5pqH5p2RID4ga29rdW1pbmt5dXVrYW11cmFcIDsKK+WtkOWuruWkluWmiuWooCA+IHNoaWt5dXVnYWluaW5zaGluXCA7CivnhKHmi4Xkv53osrjku5ggPiBtdXRhbnBva2FzaGl0c3VrZVwgOwor5LiA57KS5a2Q5pei57SEID4gaWNoaXJ5dXVzaGlraXlha3VcIDsKK+S8gealreWIpee1hOWQiCA+IGtpZ3lvdWJldHN1a3VtaWFpXCA7CivkuI3ms5XkvrXlhaXogIUgPiBmdWhvdXNoaW4nJ255dXVzaGFcIDsKK+WPjuepq+aEn+isneelrSA+IHNodXVrYWt1a2Fuc2hhc2FpXCA7CivmjIflkJHmgKfniIbolqwgPiBzaGlrb3VzZWliYWt1eWFrdVwgOwor5b+D5Zug5oCn5Y+N5b+cID4gc2hpbicnaW5zZWloYW4nJ25vdVwgOwor5Lqc54ax5biv5qSN54mpID4gYW5ldHRhaXNob2t1YnV0c3VcIDsKK+WGhemWo+e3j+i+nuiBtyA+IG5haWtha3Vzb3VqaXNob2t1XCA7CivoqLzliLjlj5blvJXmiYAgPiBzaG91a2VudG9yaWhpa2lqb1wgOwor5bGI5oqY5pyb6YGg6Y+hID4ga3Vzc2V0c3Vib3Vlbmt5b3VcIDsKK+atr+eJmeefr+ato+ihkyA+IHNoaWdha3lvdXNlaWp1dHN1XCA7CivljZjntLDog57nlJ/niakgPiB0YW5zYWlib3VzZWlidXRzdVwgOwor5pel5pys6Jas5bGA5pa5ID4gbmlob24nJ3lha2t5b2t1aG91XCA7Civmt7HlsaTlv4PnkIblraYgPiBzaGluc291c2hpbnJpZ2FrdVwgOwor57K+56We6JaE5byx5YWQID4gc2Vpc2hpbmhha3VqYWt1amlcIDsKK+WMluWtpuaWueeoi+W8jyA+IGthZ2FrdWhvdXRlaXNoaWtpXCA7CivmgKXpmY3kuIvniIbmkoMgPiBreXV1a291a2FiYWt1Z2VraVwgOwor5rC05LiK55Sf5rS76ICFID4gc3Vpam91c2Vpa2F0c3VzaGFcIDsKK+WcqOWtpuiovOaYjuabuCA+IHphaWdha3VzaG91bWVpc2hvXCA7CivmpI3msJHlnLDntbHmsrsgPiBzaG9rdW1pbmNoaXRvdWNoaVwgOwor6Zai5pWw5pa556iL5byPID4ga2Fuc3V1aG91dGVpc2hpa2lcIDsKK+aOqOmAsueglOeptuaJgCA+IHN1aXNoaW5rZW5reXV1c2hvXCA7CivmiKbooZPmoLjlhbXlmaggPiBzZW5qdXRzdWtha3VoZWlraVwgOwor55m65bGV55qE6Kej5raIID4gaGF0dGVudGVraWthaXNob3VcIDsKK+Wbveeri+Wbs+abuOmkqCA+IGtva3VyaXRzdXRvc2hva2FuXCA7CivkuInooYzluoPlkYrmrIQgPiBzYW5neW91a291a29rdXJhblwgOwor5Yun5qWt5Y2a6Kan5LyaID4ga2FuZ3lvdWhha3VyYW5rYWlcIDsKK+WIhuaekOW/g+eQhuWtpiA+IGJ1bnNla2lzaGlucmlnYWt1XCA7CivmlZnogrLlv4PnkIblraYgPiBreW91aWt1c2hpbnJpZ2FrdVwgOwor5qWt5YuZ5LiK6YGO5aSxID4gZ3lvdW11am91a2FzaGl0c3VcIDsKK+aIkOe4vuiovOaYjuabuCA+IHNlaXNla2lzaG91bWVpc2hvXCA7CivlhaXlrablv5fpoZjogIUgPiBueXV1Z2FrdXNoaWdhbnNoYVwgOwor5Lit5aSu5pS+6YCB5bGAID4gY2h1dW91aG91c291a3lva3VcIDsKK+WFseWQjOebuOe2muS6uiA+IGt5b3Vkb3Vzb3V6b2t1bmluXCA7CivnoJTnqbbnmbrooajkvJogPiBrZW5reXV1aGFwcHlvdWthaVwgOwor5aSp5L2T5YiG5YWJ6KGTID4gdGVudGFpYnVua291anV0c3VcIDsKK+eQg+mdouS4ieinkuazlSA+IGt5dXVtZW5zYW5rYWt1aG91XCA7CivoqIjph4/ntYzmuIjlraYgPiBrZWlyeW91a2VpemFpZ2FrdVwgOwor6JGX5L2c5qip5L615a6zID4gY2hvc2FrdWtlbnNoaW5nYWlcIDsKK+eJueWIpeW8geitt+S6uiA+IHRva3ViZXRzdWJlbmdvbmluXCA7Civlr4zlm73lvLflhbXnrZYgPiBmdWtva3VreW91aGVpc2FrdVwgOwor5LqI5oOz5Y+O56mr6auYID4geW9zb3VzaHV1a2FrdWRha2FcIDsKK+ihgOWPi+eXheaCo+iAhSA+IGtldHN1eXV1YnlvdWthbmphXCA7Civnm7Top5LkuInop5LlvaIgPiBjaG9ra2FrdXNhbmtha2tlaVwgOwor6ZeH5L6h5qC85Y2U5a6aID4geWFtaWtha2FrdWt5b3V0ZWlcIDsKK+i1pOWklue3muWGmeecnyA+IHNla2lnYWlzZW5zaGFzaGluXCA7CivlpKnnmofmqZ/plqLoqqwgPiB0ZW4nJ25vdWtpa2Fuc2V0c3VcIDsKK+WFrOiovOS6uuW9ueWgtCA+IGtvdXNob3VuaW4nJ3lha3ViYVwgOwor6LaF54++5a6f5Li7576pID4gY2hvdWdlbmppdHN1c2h1Z2lcIDsKK+S6jOalteecn+epuueuoSA+IG5pa3lva3VzaGlua3V1a2FuXCA7CivpmKrnpZ7lpKfpnIfngb0gPiBoYW5zaGluZGFpc2hpbnNhaVwgOwor5rOV5a6a5b6X56Wo5pWwID4gaG91dGVpdG9rdWh5b3VzdXVcIDsKK+ioreeri+i2o+aEj+abuCA+IHNldHN1cml0c3VzaHVpc2hvXCA7CivlpJblm73kurrnmbvpjLIgPiBnYWlrb2t1amludG91cm9rdVwgOwor6Lqr5L2T6Zqc5a6z6ICFID4gc2hpbnRhaXNob3VnYWlzaGFcIDsKK+a2iOiyu+iAheS/oeeUqCA+IHNob3VoaXNoYXNoaW4nJ3lvdVwgOwor6YiN6KeS5LiJ6KeS5b2iID4gZG9ua2FrdXNhbmtha3VrZWlcIDsKK+a1t+mbo+WvqeWIpOW6gSA+IGthaW5hbnNoaW5wYW5jaG91XCA7Civniq/nvarnmbrnlJ/njocgPiBoYW56YWloYXNzZWlyaXRzdVwgOwor5b6u55Sf54mp5a2m6ICFID4gYmlzZWlidXRzdWdha3VzaGFcIDsKK+S4g+iJsuWUkOi+m+WtkCA+IG5hbmFpcm90b3VnYXJhc2hpXCA7CivlhazogbfpgbjmjJnms5UgPiBrb3VzaG9rdXNlbmt5b2hvdVwgOwor5a6a5b2i6YO15L6/54mpID4gdGVpa2VpeXV1YmluYnV0c3VcIDsKK+WvvuS4reWbvemWouS/giA+IHRhaWNodXVnb2t1a2Fua2VpXCA7Civnp5HlrabmioDooZPluoEgPiBrYWdha3VnaWp1dHN1Y2hvdVwgOwor5aSn6Iux5Y2a54mp6aSoID4gZGFpZWloYWt1YnV0c3VrYW5cIDsKK+WLleiEiOehrOWMlueXhyA+IGRvdW15YWt1a291a2FzaG91XCA7CivluJ3njovnpZ7mqKnoqqwgPiB0ZWlvdXNoaW5rZW5zZXRzdVwgOwor5a6H5a6Z5aSn54iG55m6ID4gdWNodXVkYWliYWt1aGF0c3VcIDsKK+mmluebuOWFvOWkluebuCA+IHNodXNob3VrZW5nYWlzaG91XCA7CivnlJ/nianlnLDnkIblraYgPiBzZWlidXRzdWNoaXJpZ2FrdVwgOwor5Y6f5a2Q54mp55CG5a2mID4gZ2Vuc2hpYnV0c3VyaWdha3VcIDsKK+eVpeWPluiqmOaLkOe9qiA+IHJ5YWt1c2h1eXV1a2FpemFpXCA7CivlpKnkvZPniannkIblraYgPiB0ZW50YWlidXRzdXJpZ2FrdVwgOwor6ZmN5Zyn5aSJ5Zyn5ZmoID4ga291YXRzdWhlbicnYXRzdWtpXCA7CivmnbHljbDluqbkvJrnpL4gPiBoaWdhc2hpaW5kb2dhaXNoYVwgOwor54mp6LOq5Li7576p6ICFID4gYnVzc2hpdHN1c2h1Z2lzaGFcIDsKK+Wbvemam+eahOiyv+aYkyA+IGtva3VzYWl0ZWtpYm91ZWtpXCA7CivkuK3mgKflrZDniIblvL4gPiBjaHV1c2Vpc2hpYmFrdWRhblwgOwor5Luj5pWw5pa556iL5byPID4gZGFpc3V1aG91dGVpc2hpa2lcIDsKK+W5s+Wdh+WkqumZveaXpSA+IGhlaWtpbnRhaXlvdWppdHN1XCA7CivkubPlhZDmrbvkuqHnjocgPiBueXV1amlzaGlib3VyaXRzdVwgOwor5LiH5Zu95Y2a6Kan5LyaID4gYmFua29rdWhha3VyYW5rYWlcIDsKK+mYsuihm+aWveioreW6gSA+IGJvdWVpc2hpc2V0c3VjaG91XCA7CivmnInmlpnpp5Dou4rloLQgPiB5dXVyeW91Y2h1dXNoYWpvdVwgOwor6Ieo5bqK5b+D55CG5a2mID4gcmluc2hvdXNoaW5yaWdha3VcIDsKK+WGmeecn+mAseWIiuiqjCA+IHNoYXNoaW5zaHV1a2Fuc2hpXCA7Civlt6jnn7PoqJjlv7XniakgPiBreW9zZWtpa2luZW5idXRzdVwgOwor5LqM5YWD5pa556iL5byPID4gbmlnZW5ob3V0ZWlzaGlraVwgOwor6YGT576p55qE6LKs5Lu7ID4gZG91Z2l0ZWtpc2VraW5pblwgOwor542F5a2Q5ZSQ6L6b5a2QID4gc2hpc2hpdG91Z2FyYXNoaVwgOwor5rCX6LGh6Kaz5ris6Ii5ID4ga2lzaG91a2Fuc29rdXNlblwgOwor5Lq654y/5ZCM56WW6KqsID4gamluJydlbmRvdXNvc2V0c3VcIDsKK+Wbo+S9k+S6pOa4ieaoqSA+IGRhbnRhaWtvdXNob3VrZW5cIDsKK+WvvuS6uuaBkOaAlueXhyA+IHRhaWppbmt5b3VmdXNob3VcIDsKK+iEs+iEiumrhOiGnOeCjiA+IG5vdXNla2l6dWltYWt1ZW5cIDsKK+imgeazqOaEj+S6uueJqSA+IHlvdWNodXVpamluYnV0c3VcIDsKK+WtpuagoeaVmeiCsuazlSA+IGdha2tvdWt5b3Vpa3Vob3VcIDsKK+eOi+aoqeelnuaOiOiqrCA+IG91a2Vuc2hpbmp1c2V0c3VcIDsKK+ecn+mDqOWIhumbhuWQiCA+IHNoaW5idWJ1bnNodXVnb3VcIDsKK+eLrOWNoOemgeatouazlSA+IGRva3VzZW5raW5zaGlob3VcIDsKK+WxhemWk+WFvOWvneWupCA+IGltYWtlbnNoaW5zaGl0c3VcIDsKK+WFrOensOizh+acrOmHkSA+IGtvdXNob3VzaGlob25raW5cIDsKK+mbu+WLleeZuuWLleapnyA+IGRlbmRvdWhhdHN1ZG91a2lcIDsKK+W/nOeUqOeJqeeQhuWtpiA+IG91eW91YnV0c3VyaWdha3VcIDsKK+S4ieWNgeWFq+W6pue3miA+IHNhbmp1dWhhY2hpZG9zZW5cIDsKK+iqjeefpeW/g+eQhuWtpiA+IG5pbmNoaXNoaW5yaWdha3VcIDsKK+W3pealreaJgOacieaoqSA+IGtvdWd5b3VzaG95dXVrZW5cIDsKK+WkmuWkiemHj+ino+aekCA+IHRhaGVucnlvdWthaXNla2lcIDsKK+a4hea2vOmjsuaWmeawtCA+IHNlaXJ5b3VpbnJ5b3VzdWlcIDsKK+mHkeWIqeeUn+a0u+iAhSA+IGtpbnJpc2Vpa2F0c3VzaGFcIDsKK+mBuuiogOWft+ihjOiAhSA+IHl1aWdvbnNoaWtrb3VzaGFcIDsKK+iyv+aYk+WkluWPjuaUryA+IGJvdWVraWdhaXNodXVzaGlcIDsKK+afk+iJsuS9k+WcsOWbsyA+IHNlbnNob2t1dGFpY2hpenVcIDsKK+S4u+W4reeglOeptuWToSA+IHNodXNla2lrZW5reXV1aW5cIDsKK+mrmOmAn+W6puWGmeecnyA+IGtvdXNva3Vkb3NoYXNoaW5cIDsKK+mrmOasoeaWueeoi+W8jyA+IGtvdWppaG91dGVpc2hpa2lcIDsKK+W+ruWIhuaWueeoi+W8jyA+IGJpYnVuaG91dGVpc2hpa2lcIDsKK+mDteS+v+engeabuOeusSA+IHl1dWJpbnNoaXNob2Jha29cIDsKK+aWnOagvOaAp+e1seW+oSA+IHNoYWtha3VzZWl0b3VneW9cIDsKK+e1jOWPo+mBv+WmiuiWrCA+IGtlaWtvdWhpbmluJyd5YWt1XCA7CivkurrmnZDplovnmbrpg6ggPiBqaW56YWlrYWloYXRzdWJ1XCA7CivkuIflm73mqJnmupbmmYIgPiBiYW5rb2t1aHlvdWp1bmppXCA7CivpmLLooZvluoHplbflrpggPiBib3VlaWNob3VjaG91a2FuXCA7CivlkKvmsLTljJblkIjniakgPiBnYW5zdWlrYWdvdWJ1dHN1XCA7CivplqLmnbHlpKfpnIfngb0gPiBrYW50b3VkYWlzaGluc2FpXCA7Civoo4XnlLLlm57lj47ou4ogPiBzb3Vrb3VrYWlzaHV1c2hhXCA7CivlnLDmlrnooYzosqHmlL8gPiBjaGlob3VneW91emFpc2VpXCA7CivmgKfooajnj77mg4XloLEgPiBzZWloeW91Z2Vuam91aG91XCA7CivluIzmnJvnmoToprPmuKwgPiBraWJvdXRla2lrYW5zb2t1XCA7Civlj43lsITmuJvoobDph48gPiBoYW5zaGFnZW5zdWlyeW91XCA7CivlpInmhYvlv4PnkIblraYgPiBoZW50YWlzaGlucmlnYWt1XCA7CivmrKflt57lhbHlkIzkvZMgPiBvdXNodXVreW91ZG91dGFpXCA7CivntKvlpJbnt5rnmYLms5UgPiBzaGlnYWlzZW5yeW91aG91XCA7CivpnZ7mraboo4XkuK3nq4sgPiBoaWJ1c291Y2h1dXJpdHN1XCA7CivkuLvluK3lpJbkuqTlrpggPiBzaHVzZWtpZ2Fpa291a2FuXCA7CivntLDog57os6rpgbrkvJ0gPiBzYWlib3VzaGl0c3VpZGVuXCA7CivlhbHnlKPlhZrlrqPoqIAgPiBreW91c2FudG91c2VuZ2VuXCA7Civlt6Hlm57oqLrnmYLmiYAgPiBqdW5rYWlzaGlucnlvdWpvXCA7CivmupDms4nmiYDlvpfnqI4gPiBnZW5zZW5zaG90b2t1emVpXCA7CivntYTogbflirTlg43ogIUgPiBzb3Nob2t1cm91ZG91c2hhXCA7CivlirTlg43ogIXpmo7ntJogPiByb3Vkb3VzaGFrYWlreXV1XCA7Civmi6HlpKflho3nlJ/nlKMgPiBrYWt1ZGFpc2Fpc2Vpc2FuXCA7CivkuIrntJroo4HliKTmiYAgPiBqb3VreXV1c2FpYmFuc2hvXCA7CivnpoHmrLLkuLvnvqnogIUgPiBraW4nJ3lva3VzaHVnaXNoYVwgOwor54m55q6K5r2c6Iiq6ImHID4gdG9rdXNodXNlbmtvdXRlaVwgOwor5pyA5oG15Zu95b6F6YGHID4gc2Fpa2Vpa29rdXRhaWd1dVwgOwor5YWx55Sj5Li7576p5Zu9ID4ga3lvdXNhbnNodWdpa29rdVwgOwor5Y6f5ZGK5a++6KKr5ZGKID4gZ2Vua29rdXRhaWhpa29rdVwgOwor5Y+X6KiX5Y+O6LOE572qID4ganV0YWt1c2h1dXdhaXphaVwgOwor5rWB6KGM5oCn5oSf5YaSID4gcnl1dWtvdXNlaWthbmJvdVwgOwor5Zu95rCR57eP55Sf55SjID4ga29rdW1pbnNvdXNlaXNhblwgOwor5Lit6Led6Zui56u26LWwID4gY2h1dWt5b3Jpa3lvdXNvdVwgOwor5YWo5Zu955qE56+E5ZuyID4gemVua29rdXRla2loYW4nJ2lcIDsKK+mAo+mCpuWFseWSjOWbvSA+IHJlbnBvdWt5b3V3YWtva3VcIDsKK+aZrumBjeeahOazleWJhyA+IGZ1aGVudGVraWhvdXNva3VcIDsKK+Wkp+e1semgmOmBuOaMmSA+IGRhaXRvdXJ5b3VzZW5reW9cIDsKK+aXpeeMtuWQjOelluirliA+IG5pY2hpeXV1ZG91c29yb25cIDsKK+S4oeabv+aJi+aVsOaWmSA+IHJ5b3VnYWV0ZXN1dXJ5b3VcIDsKK+izh+acrOWIqeebiueOhyA+IHNoaWhvbnJpZWtpcml0c3VcIDsKK+aIpui7iuaPmumZuOiJpiA+IHNlbnNoYXlvdXJpa3VrYW5cIDsKK+WjsuaYpemYsuatouazlSA+IGJhaXNodW5ib3VzaGlob3VcIDsKK+WFieWMluWtpuWPjeW/nCA+IGtvdWthZ2FrdWhhbicnbm91XCA7Civou43kuovlvZPlsYDogIUgPiBndW5qaXRvdWt5b2t1c2hhXCA7CivogonkvZPlirTlg43ogIUgPiBuaWt1dGFpcm91ZG91c2hhXCA7Civoh6rkuLvmtYHpgJrnsbMgPiBqaXNodXJ5dXV0c3V1bWFpXCA7CivnrKzkuIDmrKHnlKPmpa0gPiBkYWlpY2hpamlzYW5neW91XCA7Civlrp/lrZjkuLvnvqnogIUgPiBqaXRzdXpvbnNodWdpc2hhXCA7Civnj77lrp/kuLvnvqnogIUgPiBnZW5qaXRzdXNodWdpc2hhXCA7Civlj43mlL/lupzli6LlipsgPiBoYW5zZWlmdXNlaXJ5b2t1XCA7CivlhY3nlqvkuI3lhajnl4cgPiBtZW4nJ2VraWZ1emVuc2hvdVwgOwor5Y2B6YCy5YiG6aGe5rOVID4gamlzc2hpbmJ1bnJ1aWhvdVwgOwor5YG25YOP5pWZ5b6S55qEID4gZ3V1em91a3lvdXRvdGVraVwgOwor57SF55m95q2M5ZCI5oimID4ga291aGFrdXV0YWdhc3NlblwgOwor57WM5riI56CU56m25omAID4ga2VpemFpa2Vua3l1dXNob1wgOwor6LuN5LqL6YCa5L+h5ZOhID4gZ3Vuaml0c3V1c2hpbicnaW5cIDsKK+Wfuua6luWGheizg+mHkSA+IGtpanVuJyduYWljaGluZ2luXCA7CivnnIzluoHmiYDlnKjlnLAgPiBrZW5jaG91c2hvemFpY2hpXCA7CivnnJ/lrpflpKfosLfmtL4gPiBzaGluc2h1dW9vdGFuaWhhXCA7Civlho3lhaXlm73oqLHlj68gPiBzYWlueXV1a29rdWt5b2thXCA7Civoi7Hlm73lm73mlZnkvJogPiBlaWtva3Vrb2treW91a2FpXCA7CivmuIXmlZnlvpLpnanlkb0gPiBzZWlreW91dG9rYWt1bWVpXCA7CivlpKrpmb3npZ7ntYzlj6IgPiB0YWl5b3VzaGlua2Vpc291XCA7CivntYzllrblrabkv67lo6sgPiBrZWllaWdha3VzaHV1c2hpXCA7CivlgaXlurfoqLzmmI7mm7ggPiBrZW5rb3VzaG91bWVpc2hvXCA7CivnpL7kvJrlv4PnkIblraYgPiBzaGFrYWlzaGlucmlnYWt1XCA7CivlhazlhbHkvIHmpa3kvZMgPiBrb3VreW91a2lneW91dGFpXCA7Civpg73luILlho3plovnmbogPiB0b3NoaXNhaWthaWhhdHN1XCA7CivmlL7lsITnt5rnmYLms5UgPiBob3VzaGFzZW5yeW91aG91XCA7Civlm73pgKPliIbmi4Xph5EgPiBrb2t1cmVuYnVudGFua2luXCA7CivlrprmnJ/liIrooYzniakgPiB0ZWlraWthbmtvdWJ1dHN1XCA7CivmlLvmkoPplovlp4vnt5ogPiBrb3VnZWtpa2Fpc2hpc2VuXCA7CivlubPpnaLkuInop5Lms5UgPiBoZWltZW5zYW5rYWt1aG91XCA7Civms5XlrprkvJ3mn5Pnl4UgPiBob3V0ZWlkZW5zZW5ieW91XCA7CivkuK3ot53pm6Lnq7bkuokgPiBjaHV1a3lvcmlreW91c291XCA7CivkuInlj4nnpZ7ntYznl5sgPiBzYW5zYXNoaW5rZWl0c3V1XCA7CivlhKrli53msbrlrprmiKYgPiB5dXVzaG91a2V0dGVpc2VuXCA7CivmnIDkvY7nlJ/mtLvosrsgPiBzYWl0ZWlzZWlrYXRzdWhpXCA7CivlupznnIzliKXkurrlj6MgPiBmdWtlbmJldHN1amlua291XCA7Civmjqjlrprnm7jntprkurogPiBzdWl0ZWlzb3V6b2t1bmluXCA7CivlpJrlm73nsY3kvIHmpa0gPiB0YWtva3VzZWtpa2lneW91XCA7CivmmbTkuIDmmYLlsI/pm6ggPiBoYXJlaWNoaWppa29zYW1lXCA7CivlraPnr4DlirTlg43ogIUgPiBraXNldHN1cm91ZG91c2hhXCA7CivkuK3lsI/oq7jlm73lrrYgPiBjaG91c2hvdXNob2tva2thXCA7CivkuI3lubPnrYnmnaHntIQgPiBmdWJ5b3Vkb3Vqb3V5YWt1XCA7CivmnIDkvY7os4Pph5HliLYgPiBzYWl0ZWljaGluZ2luc2VpXCA7CivluJ3lm73kuLvnvqnnmoQgPiB0ZWlrb2t1c2h1Z2l0ZWtpXCA7CivntI3nqI7pgJrnn6Xmm7ggPiBub3V6ZWl0c3V1Y2hpc2hvXCA7CivplqLnqI7libLlvZPliLYgPiBrYW56ZWl3YXJpYXRlc2VpXCA7CivlsYXkvY/oqLzmmI7mm7ggPiBreW9qdXVzaG91bWVpc2hvXCA7CivlpKfkvb/ntJrkvJroq4cgPiB0YWlzaGlreXV1a2FpZGFuXCA7CivmsJHkuLvmtLvli5XlrrYgPiBtaW5zaHVrYXRzdWRvdWthXCA7CivlrqLlk6HnoJTnqbblk6EgPiBreWFrdWlua2Vua3l1dWluXCA7CivmlK/mjIHlipvkv4LmlbAgPiBzaGlqaXJ5b2t1a2Vpc3V1XCA7Civnm7TkuIvlnovlnLDpnIcgPiBjaG9ra2FnYXRhamlzaGluXCA7CivmnKrop6PmsbrllY/poYwgPiBtaWthaWtldHN1bW9uZGFpXCA7Civlu7rnr4nln7rmupbms5UgPiBrZW5jaGlrdWtpanVuaG91XCA7Civnn6XnmoTmiYDmnInmqKkgPiBjaGl0ZWtpc2hveXV1a2VuXCA7Civogbfmpa3lronlrprmiYAgPiBzaG9rdWd5b3VhbnRlaWpvXCA7CivlhbHnlKPlhZrntLDog54gPiBreW91c2FudG91c2FpYm91XCA7CivkuIDlubTnlJ/ojYnmnKwgPiBpY2hpbmVuc2Vpc291aG9uXCA7CivmnaHntITliqDnm5/lm70gPiBqb3V5YWt1a2FtZWlrb2t1XCA7Civnq4vmraPkvbzmiJDkvJogPiByaXNzaG91a291c2Vpa2FpXCA7CivlhbHoprPnpo/pn7Pmm7ggPiBreW91a2FuZnVrdWluc2hvXCA7Civpq5jmiYDmgZDmgJbnl4cgPiBrb3VzaG9reW91ZnVzaG91XCA7CivmlrDogZ7osqnlo7LlupcgPiBzaGluYnVuaGFuYmFpdGVuXCA7CivovrLmnpfmsLTnlKPnnIEgPiBub3VyaW5zdWlzYW5zaG91XCA7CivkuozogIXpgbjkuIDms5UgPiBuaXNoYXNlbicnaXRzdWhvdVwgOwor5aKD55WM5YCk5ZWP6aGMID4ga3lvdWthaWNoaW1vbmRhaVwgOwor56S+5Lya5Lq66YeO55CDID4gc2hha2FpamluJyd5YWt5dXVcIDsKK+iPnOmjn+S4u+e+qeiAhSA+IHNhaXNob2t1c2h1Z2lzaGFcIDsKK+i7jeeUo+ikh+WQiOS9kyA+IGd1bnNhbmZ1a3Vnb3V0YWlcIDsKK+eyvuelnuWMu+WtpuiAhSA+IHNlaXNoaW4nJ2lnYWt1c2hhXCA7CivntYzmuIjkvIHnlLvluoEgPiBrZWl6YWlraWtha3VjaG91XCA7CivlhYjnq6/mlK/mjIHlipsgPiBzZW50YW5zaGlqaXJ5b2t1XCA7Civkv53lgaXniannkIblraYgPiBob2tlbmJ1dHN1cmlnYWt1XCA7CivliIbop6Pokrjmupzms5UgPiBidW5rYWlqb3VyeXV1aG91XCA7CivoqIjph4/oqIDoqp7lraYgPiBrZWlyeW91Z2VuZ29nYWt1XCA7CivlnLDln5/mjK/oiIjliLggPiBjaGlpa2lzaGlua291a2VuXCA7CivmgKXpgLLkuLvnvqnogIUgPiBreXV1c2hpbnNodWdpc2hhXCA7CivkuqTpgJrpgYvovLjmpa0gPiBrb3V0c3V1dW4nJ3l1Z3lvdVwgOwor54Sh5Yi26ZmQ5L6b57WmID4gbXVzZWlnZW5reW91a3l1dVwgOwor57Wm5LiO5omA5b6X6ICFID4ga3l1dXlvc2hvdG9rdXNoYVwgOwor5oim6ZeY54iG5pKD5qmfID4gc2VudG91YmFrdWdla2lraVwgOwor5p6X5qWt6Kmm6aiT5aC0ID4gcmluZ3lvdXNoaWtlbmpvdVwgOwor5pOy5by+55m65bCE562SID4gdGVraWRhbmhhc3NoYXRvdVwgOwor55Sj6LuN6KSH5ZCI5L2TID4gc2FuZ3VuZnVrdWdvdXRhaVwgOwor5pyA5aSn5YWs57SE5pWwID4gc2FpZGFpa291eWFrdXN1dVwgOwor5Zu95YaF5raI6LK756iOID4ga29rdW5haXNob3VoaXplaVwgOwor5bCR5bm05a+p5Yik5omAID4gc2hvdW5lbnNoaW5wYW5qb1wgOwor5rWB6KGM5oCn6IKd54KOID4gcnl1dWtvdXNlaWthbicnZW5cIDsKK+a6lua6luaxuuWLneaIpiA+IGp1bmp1bmtlc3Nob3VzZW5cIDsKK+S4jeWujOWFqOeHg+eEvCA+IGZ1a2FuemVuJyduZW5zaG91XCA7Civljp/lrZDlipvmmYLku6MgPiBnZW5zaGlyeW9rdWppZGFpXCA7CivovrLmpa3oqabpqJPloLQgPiBub3VneW91c2hpa2Vuam91XCA7Civpq5jpgJ/luqbmkq7lvbEgPiBrb3Vzb2t1ZG9zYXRzdWVpXCA7Civlpb3msJfmgKfnlJ/niakgPiBrb3VraXNlaXNlaWJ1dHN1XCA7Civlrrbluq3lhoXmmrTlipsgPiBrYXRlaW5haWJvdXJ5b2t1XCA7CivlnKjnsY3lsILlvpPogIUgPiB6YWlzZWtpc2VuanV1c2hhXCA7CivlrpjosrvnlZnlrabnlJ8gPiBrYW5waXJ5dXVnYWt1c2VpXCA7CivljZfljJfmnJ3mmYLku6MgPiBuYW5ib2t1Y2hvdWppZGFpXCA7CivmrbvkuqHoqLrmlq3mm7ggPiBzaGlib3VzaGluZGFuc2hvXCA7CivlvKbmpb3lm5vph43lpY8gPiBnZW5nYWt1c2hpanV1c291XCA7Civku7Loo4Hoo4HliKTmiYAgPiBjaHV1c2Fpc2FpYmFuc2hvXCA7CivnkIboq5bniannkIblraYgPiByaXJvbmJ1dHN1cmlnYWt1XCA7CivlhajoiKzliY3lk6jnt5ogPiB6ZW5wYW56ZW5zaG91c2VuXCA7CivljYHkuozmjIfohbjomasgPiBqdXVuaXNoaWNob3VjaHV1XCA7CivlnJ/mnKjlt6XlrabogIUgPiBkb2Jva3Vrb3VnYWt1c2hhXCA7Civml6XkuK3pn5PntbHlkIggPiBuaXRjaHV1a2FudG91Z291XCA7Civmi6HlvLXlgI3nsr7luqYgPiBrYWt1Y2hvdWJhaXNlaWRvXCA7CivlirTlg43lj47lrrnmiYAgPiByb3Vkb3VzaHV1eW91c2hvXCA7CivnhKHnnYDpmbjpo5vooYwgPiBtdWNoYWt1cmlrdWhpa291XCA7Civml6Xku5jlpInmm7Tnt5ogPiBoaWR6dWtlaGVua291c2VuXCA7CivlvZPkuovogIXog73lipsgPiB0b3VqaXNoYW5vdXJ5b2t1XCA7CivmkI3nm4roqIjnrpfmm7ggPiBzb24nJ2VraWtlaXNhbnNob1wgOwor5oCl6KGM5YGc6LuK6aeFID4ga3l1dWtvdXRlaXNoYWVraVwgOwor5Y+N5qSN5rCR5Li7576pID4gaGFuc2hva3VtaW5zaHVnaVwgOwor5qW15L2O5rip56eR5a2mID4ga3lva3V0ZWlvbmthZ2FrdVwgOwor5YaZ55yf5pyb6YGg6Y+hID4gc2hhc2hpbmJvdWVua3lvdVwgOwor5aaZ5rOV6JOu6I+v57WMID4gbXlvdWhvdXJlbmdla3lvdVwgOwor5a6f55So5Li7576p6ICFID4gaml0c3V5b3VzaHVnaXNoYVwgOwor5b6M5pa56YCj57Wh57eaID4ga291aG91cmVucmFrdXNlblwgOwor5a6f6aiT5b+D55CG5a2mID4gamlra2Vuc2hpbnJpZ2FrdVwgOwor5LiN5rOV5YWl5Zu96ICFID4gZnVob3VueXV1a29rdXNoYVwgOwor5aSa5YWD5pa556iL5byPID4gdGFnZW5ob3V0ZWlzaGlraVwgOwor5Zu95YaF57eP55Sf55SjID4ga29rdW5haXNvdXNlaXNhblwgOwor6YmE6YGT5YWs5a6J5a6YID4gdGV0c3Vkb3Vrb3VhbmthblwgOwor5bmz5Y+w5Z6L6LKo6LuKID4gaGlyYWRhaWdhdGFrYXNoYVwgOwor5Lq656ew5Luj5ZCN6KmeID4gbmluc2hvdWRhaW1laXNoaVwgOwor5a6f5qWt5LmL5pel5pysID4gaml0c3VneW91bm9uaWhvblwgOwor56mN5bGk5Lm+6Zu75rGgID4gc2VraXNvdWthbmRlbmNoaVwgOwor6KGM5pS/566h55CG5bqBID4gZ3lvdXNlaWthbnJpY2hvdVwgOwor6LWk5Y2B5a2X5p2h57SEID4gc2VraWp1dWppam91eWFrdVwgOwor5YWJ5a2m6aGV5b6u6Y+hID4ga291Z2FrdWtlbmJpa3lvdVwgOwor5by35Yi25Y+O5a655omAID4ga3lvdXNlaXNodXV5b3Vqb1wgOwor54qv572q5b+D55CG5a2mID4gaGFuemFpc2hpbnJpZ2FrdVwgOwor6YCj6YKm5o2c5p+75bGAID4gcmVucG91c291c2FreW9rdVwgOwor5aSn6Zm456e75YuV6KqsID4gdGFpcmlrdWlkb3VzZXRzdVwgOwor5LyB5qWt5YaF5pWZ6IKyID4ga2lneW91bmFpa3lvdWlrdVwgOwor56qS57Sg6YW45YyW54mpID4gY2hpc3Nvc2Fua2FidXRzdVwgOwor5bid546L5YiH6ZaL6KGTID4gdGVpb3VzZWtrYWlqdXRzdVwgOwor5pil5qmf55m65YuV5pyfID4gc2h1bmtpaGF0c3Vkb3VraVwgOwor5aSp5bmV6KO96YCg5Lq6ID4gdGVubWFrdXNlaXpvdW5pblwgOwor5pyA5YSq56eA6YG45omLID4gc2FpeXV1c2h1dXNlbnNodVwgOwor5Yud5Yip5Y+I5Yud5YipID4gc2hvdXJpbWF0YXNob3VyaVwgOwor5aWz5rWB5paH5a2m6ICFID4gam9yeXV1YnVuZ2FrdXNoYVwgOwor6ICQ5LmF5raI6LK76LKhID4gdGFpa3l1dXNob3VoaXphaVwgOwor6Z2e5YWs5byP5Y2U6K2wID4gaGlrb3VzaGlraWt5b3VnaVwgOwor56m65riv5L2/55So5paZID4ga3V1a291c2hpeW91cnlvdVwgOwor54Sh6YeN5Yqb54q25oWLID4gbXVqdXVyeW9rdWpvdXRhaVwgOwor5aSp54Wn55qH5aSn56WeID4gdGVuc2hvdWtvdWRhaWppblwgOwor57K+56We5a6J5a6a5YmkID4gc2Vpc2hpbicnYW50ZWl6YWlcIDsKK+mFuOaAp+mFuOWMlueJqSA+IHNhbnNlaXNhbmthYnV0c3VcIDsKK+WGmeWun+S4u+e+qeiAhSA+IHNoYWppdHN1c2h1Z2lzaGFcIDsKK+WGt+aIpuWei+aAneiAgyA+IHJlaXNlbmdhdGFzaGlrb3VcIDsKK+mbu+WtkOW3pealreS8miA+IGRlbnNoaWtvdWd5b3VrYWlcIDsKK+mbu+WtkOW3peWtpuiAhSA+IGRlbnNoaWtvdWdha3VzaGFcIDsKK+awkeS4u+WFseWSjOWbvSA+IG1pbnNodWt5b3V3YWtva3VcIDsKK+eLrOeri+iomOW/teaXpSA+IGRva3VyaXRzdWtpbmVuYmlcIDsKK+WMluWtpuiqv+WRs+aWmSA+IGthZ2FrdWNob3VtaXJ5b3VcIDsKK+e1gui6q+mbh+eUqOWItiA+IHNodXVzaGlua295b3VzZWlcIDsKK+S4jeWumuaWueeoi+W8jyA+IGZ1dGVpaG91dGVpc2hpa2lcIDsKK+Wkp+S/rumBk+mZoumVtyA+IGRhaXNodXVkb3VpbmNob3VcIDsKK+a4r+a5vumBi+mAgealrSA+IGtvdXdhbicndW5zb3VneW91XCA7Civlkajms6LmlbDlpInoqr8gPiBzaHV1aGFzdXVoZW5jaG91XCA7Civkub7nh6XlnLDovrLmpa0gPiBrYW5zb3VjaGlub3VneW91XCA7CivnkrDlooPphY3mha7mm7ggPiBrYW5reW91aGFpcnlvc2hvXCA7Civlm7rkvZPniannkIblraYgPiBrb3RhaWJ1dHN1cmlnYWt1XCA7CivntYTnuZTlirTlg43ogIUgPiBzb3NoaWtpcm91ZG91c2hhXCA7Civllrbmpa3loLHlkYrmm7ggPiBlaWd5b3Vob3Vrb2t1c2hvXCA7CivluoPlkYrku6PnkIblupcgPiBrb3Vrb2t1ZGFpcml0ZW5cIDsKK+aIpuaZguWbvemam+azlSA+IHNlbmppa29rdXNhaWhvdVwgOwor5aSa6aGN57SN56iO6ICFID4gdGFnYWt1bm91emVpc2hhXCA7CivlpKrlhYPluKXlppnnjosgPiBkYWlnZW5zdWlteW91b3VcIDsKK+S4remDqOWkquW5s+a0iyA+IGNodXVidXRhaWhlaXlvdVwgOwor5LyB5qWt5YaF57WE5ZCIID4ga2lneW91bmFpa3VtaWFpXCA7CivlpKrlubPmtIvmiKbkuokgPiB0YWloZWl5b3VzZW5zb3VcIDsKK+mAo+W4r+S/neiovOS6uiA+IHJlbnRhaWhvc2hvdW5pblwgOwor6LuN5Zu95Li7576p6ICFID4gZ3Vua29rdXNodWdpc2hhXCA7Civlj43luJ3lm73kuLvnvqkgPiBoYW50ZWlrb2t1c2h1Z2lcIDsKK+S8muekvuabtOeUn+azlSA+IGthaXNoYWtvdXNlaWhvdVwgOwor5Zu96YG45byB6K235Lq6ID4ga29rdXNlbmJlbmdvbmluXCA7Civoh6rnhLblnLDnkIblraYgPiBzaGl6ZW5jaGlyaWdha3VcIDsKK+WcsOWfn+eahOWIhuW4gyA+IGNoaWlraXRla2lidW5wdVwgOwor5Ymq5pat5a6J5a6a5oCnID4gc2VuZGFuJydhbnRlaXNlaVwgOwor6auY5YiG5a2Q5YyW5a2mID4ga291YnVuc2hpa2FnYWt1XCA7Civmg4XloLHlhazplovms5UgPiBqb3Vob3Vrb3VrYWlob3VcIDsKK+WPjeWwhOacm+mBoOmPoSA+IGhhbnNoYWJvdWVua3lvdVwgOwor54m55Yil5aeU5ZOh5LyaID4gdG9rdWJldHN1aWlua2FpXCA7CivlhoXpnIDkuLvlsI7lnosgPiBuYWlqdXNodWRvdWdhdGFcIDsKK+aZtOWkqeS5seawl+a1gSA+IHNlaXRlbnJhbmtpcnl1dVwgOwor5Z+65pys55qE5Lq65qipID4ga2lob250ZWtpamlua2VuXCA7CivmiKbkuonniq/nvarkurogPiBzZW5zb3VoYW56YWluaW5cIDsKK+WPjeWvvuiyv+aYk+miqCA+IGhhbnRhaWJvdWVraWZ1dVwgOwor6YGT6Lev5Lqk6YCa5rOVID4gZG91cm9rb3V0c3V1aG91XCA7CivlhbHnlKPlm73lrrbpg6EgPiBreW91c2Fua29ra2FndW5cIDsKK+S7ruijheW3oea0i+iJpiA+IGthc291anVuJyd5b3VrYW5cIDsKK+aVmeiCsuWfuuacrOazlSA+IGt5b3Vpa3VraWhvbmhvdVwgOwor55Sf55Sj6ICF5L6h5qC8ID4gc2Vpc2Fuc2hha2FrYWt1XCA7CivmnIDlsI/kuozkuZfms5UgPiBzYWlzaG91bmlqb3Vob3VcIDsKK+S4u+W5ueeglOeptuWToSA+IHNodWthbmtlbmt5dXVpblwgOwor5a6Y5YOa5Li7576p6ICFID4ga2FucnlvdXNodWdpc2hhXCA7CivlsI/pgbjmjJnljLrliLYgPiBzaG91c2Vua3lva3VzZWlcIDsKK+iHqui7oui7iuaTjealrSA+IGppdGVuc2hhc291Z3lvdVwgOwor5LiW55WM5paw6KiY6YyyID4gc2VrYWlzaGlua2lyb2t1XCA7CivllYblt6XkvJrorbDmiYAgPiBzaG91a291a2FpZ2lzaG9cIDsKK+W8vuWKvuijgeWIpOaJgCA+IGRhbmdhaXNhaWJhbnNob1wgOwor5L+d6K236Zai56iO546HID4gaG9nb2thbnplaXJpdHN1XCA7CivmupbnpoHmsrvnlKPogIUgPiBqdW5raW5jaGlzYW5zaGFcIDsKK+itsOmZouWGhemWo+WItiA+IGdpaW4nJ25haWtha3VzZWlcIDsKK+eUn+a0u+S/neitt+azlSA+IHNlaWthdHN1aG9nb2hvdVwgOwor5YWx55Sj5Li7576p6ICFID4ga3lvdXNhbnNodWdpc2hhXCA7CivmraPlronmga/pppnphbggPiBzZWlhbnNva3Vrb3VzYW5cIDsKK+WFrOWus+eXheaCo+iAhSA+IGtvdWdhaWJ5b3VrYW5qYVwgOwor6LKh5pS/5oqV6J6N6LOHID4gemFpc2VpdG91eXV1c2hpXCA7CivmuK/mub7lirTlg43ogIUgPiBrb3V3YW5yb3Vkb3VzaGFcIDsKK+WGhemZuOaAp+awl+WAmSA+IG5haXJpa3VzZWlraWtvdVwgOwor5Lit5aSu5qiZ5rqW5pmCID4gY2h1dW91aHlvdWp1bmppXCA7CivmipXlhYnnhafmmI7lmaggPiB0b3Vrb3VzaG91bWVpa2lcIDsKK+e3j+WQjOebn+e9t+alrSA+IHNvdWRvdW1laWhpZ3lvdVwgOwor5pyA6auY6KOB5Yik5omAID4gc2Fpa291c2FpYmFuc2hvXCA7Civllrblm6PlnLDkuIvpiYQgPiBlaWRhbmNoaWthdGV0c3VcIDsKK+mjveWSjOWMluWQiOeJqSA+IGhvdXdha2Fnb3VidXRzdVwgOwor6YeR5bGe5o6i55+l5qmfID4ga2luem9rdXRhbmNoaWtpXCA7Civmta7li5XlsI/mlbDngrkgPiBmdWRvdXNob3VzdXV0ZW5cIDsKK+iogOiqnuW/g+eQhuWtpiA+IGdlbmdvc2hpbnJpZ2FrdVwgOwor5LiA5aer5LqM5aSq6YOOID4gaWNoaWhpbWVuaXRhcm91XCA7CivnlYzpnaLmtLvmgKfliaQgPiBrYWltZW5rYXNzZWl6YWlcIDsKK+S6uueUn+ahiOWGheashCA+IGppbnNlaWFuJyduYWlyYW5cIDsKK+S4gOWIhuS6jOWNgeenkiA+IGlwcHVuJyduaWp1dWJ5b3VcIDsKK+WNl+mYv+WFseWSjOWbvSA+IG5hbicnYWt5b3V3YWtva3VcIDsKK+S4u+aIpumXmOaIpui7iiA+IHNodXNlbnRvdXNlbnNoYVwgOwor5q+U6LyD6KiA6Kqe5a2mID4gaGlrYWt1Z2VuZ29nYWt1XCA7CivlhoXmlL/kuI3lubLmuIkgPiBuYWlzZWlmdWthbnNob3VcIDsKK+mrmOetieijgeWIpOaJgCA+IGtvdXRvdXNhaWJhbnNob1wgOwor55CD6Z2i5bm+5L2V5a2mID4ga3l1dW1lbmtpa2FnYWt1XCA7Civpm7vlrZDpoZXlvq7pj6EgPiBkZW5zaGlrZW5iaWt5b3VcIDsKK+WKtOWDjeeUn+eUo+aApyA+IHJvdWRvdXNlaXNhbnNlaVwgOwor5bmz6KGM5Zub6L665b2iID4gaGVpa291c2hpaGVua2VpXCA7CivmhJ/lgrfkuLvnvqnogIUgPiBrYW5zaG91c2h1Z2lzaGFcIDsKK+WtpueUn+iHquayu+S8miA+IGdha3VzZWlqaWNoaWthaVwgOwor5bm06YeR5Y+X57Wm6ICFID4gbmVua2luanVreXV1c2hhXCA7CivpnZ7lkIzmnJ/pgJrkv6EgPiBoaWRvdWtpdHN1dXNoaW5cIDsKK+S4ieWNgeW5tOaIpuS6iSA+IHNhbmp1dW5lbnNlbnNvdVwgOwor6ZaJ5omA5oGQ5oCW55eHID4gaGVpam9reW91ZnVzaG91XCA7Civlj7jms5XnoJTkv67miYAgPiBzaGlob3VrZW5zaHV1am9cIDsKK+S9jumHkeWIqeaUv+etliA+IHRlaWtpbnJpc2Vpc2FrdVwgOwor6bq76Jas5bi455So6ICFID4gbWF5YWt1am91eW91c2hhXCA7Civplbfot53pm6LliJfou4ogPiBjaG91a3lvcmlyZXNzaGFcIDsKK+aHsue9sOWnlOWToeS8miA+IGNob3ViYXRzdWlpbmthaVwgOwor5pyJ5qmf5YyW5ZCI54mpID4geXV1a2lrYWdvdWJ1dHN1XCA7Civmpb3lpKnkuLvnvqnogIUgPiByYWt1dGVuc2h1Z2lzaGFcIDsKK+eEoeadoeS7tumZjeS8jyA+IG11am91a2Vua291ZnVrdVwgOwor6YGL6Lui5YWN6Kix6Ki8ID4gdW50ZW5tZW5reW9zaG91XCA7CivmoLzpl5jmiKbpg6jpmoogPiBrYWt1dG91c2VuYnV0YWlcIDsKK+WxleekuuWNs+WjsuS8miA+IHRlbmppc29rdWJhaWthaVwgOwor6LuN5LqL5aKD55WM57eaID4gZ3VuamlreW91a2Fpc2VuXCA7CivmtojosrvogIXlm6PkvZMgPiBzaG91aGlzaGFkYW50YWlcIDsKK+WFqOS9k+S4u+e+qeWbvSA+IHplbnRhaXNodWdpa29rdVwgOwor5LiN5Y+v5L615p2h57SEID4gZnVrYXNoaW5qb3V5YWt1XCA7CivluqfluK3mjIflrprliLggPiB6YXNla2lzaGl0ZWlrZW5cIDsKK+W4sOWbveWtkOWls+aeoCA+IGtpa29rdXNoaWpvd2FrdVwgOwor6YG66KiA6KOc6Laz5pu4ID4geXVpZ29uaG9zb2t1c2hvXCA7Civngq3pibHlirTlg43ogIUgPiB0YW5rb3Vyb3Vkb3VzaGFcIDsKK+ino+aekOW5vuS9leWtpiA+IGthaXNla2lraWthZ2FrdVwgOwor57WM5riI5oCn5ZCR5LiKID4ga2VpemFpc2Vpa291am91XCA7CivlnLDkuIvmoLjlrp/pqJMgPiBjaGlrYWtha3VqaWtrZW5cIDsKK+avlOS+i+S7o+ihqOWItiA+IGhpcmVpZGFpaHlvdXNlaVwgOwor56uL5oay5ZCb5Li75pS/ID4gcmlra2Vua3Vuc2h1c2VpXCA7CivprZrpm7fnmbrlsITnrqEgPiBneW9yYWloYXNzaGFrYW5cIDsKK+aQjeebiuWIhuWykOeCuSA+IHNvbicnZWtpYnVua2l0ZW5cIDsKK+ekvuS8muS/nemZuuW6gSA+IHNoYWthaWhva2VuY2hvdVwgOwor5q2p6KGM6ICF5aSp5Zu9ID4gaG9rb3VzaGF0ZW5nb2t1XCA7Civlm73msJHnmobkv53pmbogPiBrb2t1bWlua2FpaG9rZW5cIDsKK+WNmOe0lOWGjeeUn+eUoyA+IHRhbmp1bnNhaXNlaXNhblwgOwor6KKr6YG45oyZ6LOH5qC8ID4gaGlzZW5reW9zaGlrYWt1XCA7Civln7rmupblpJbos4Pph5EgPiBraWp1bmdhaWNoaW5naW5cIDsKK+eGseW4r+S9juawl+WcpyA+IG5ldHRhaXRlaWtpYXRzdVwgOwor54++5Zyo5a6M5LqG5pmCID4gZ2VuemFpa2FucnlvdWppXCA7CivnrYnovrrkuInop5LlvaIgPiB0b3VoZW5zYW5rYWtrZWlcIDsKK+aXpeW4uOiMtumjr+S6iyA+IG5pY2hpam91c2FoYW5qaVwgOwor6YCj6Y6W54q255CD6I+MID4gcmVuc2Fqb3VreXV1a2luXCA7Civljp/niIbniqDnibLogIUgPiBnZW5iYWt1Z2lzZWlzaGFcIDsKK+WkluWbveaKleizh+WutiA+IGdhaWtva3V0b3VzaGlrYVwgOwor6Zu75rOi5aSp5paH5a2mID4gZGVucGF0ZW5tb25nYWt1XCA7Civmp4vpgKDoqIDoqp7lraYgPiBrb3V6b3VnZW5nb2dha3VcIDsKK+WcsOWfn+WGt+aaluaIvyA+IGNoaWlraXJlaWRhbmJvdVwgOwor5Lq65bel5ZG85ZC45rOVID4gamlua291a29reXV1aG91XCA7Civlrp/oqLzkuLvnvqnogIUgPiBqaXNzaG91c2h1Z2lzaGFcIDsKK+aUr+aMgeWKm+eQhuirliA+IHNoaWppcnlva3VyaXJvblwgOwor5YWs6ZaL6KiO6KuW5LyaID4ga291a2FpdG91cm9ua2FpXCA7Civmlofpg6jnp5HlrabnnIEgPiBtb25idWthZ2FrdXNob3VcIDsKK+eJueioseaYjue0sOabuCA+IHRva2t5b21laXNhaXNob1wgOwor56iO5Yi26Kq/5p+75LyaID4gemVpc2VpY2hvdXNha2FpXCA7CivnmbrlsZXpgJTkuIrlm70gPiBoYXR0ZW50b2pvdWtva3VcIDsKK+WFrOWFseWbs+abuOmkqCA+IGtvdWt5b3V0b3Nob2thblwgOwor5Zu95YaF6KaP5qC85YyWID4ga29rdW5haWtpa2FrdWthXCA7CivlibXnq4voqJjlv7Xml6UgPiBzb3VyaXRzdWtpbmVuYmlcIDsKK+mHkemKreeZu+mMsuWZqCA+IGtpbnNlbnRvdXJva3VraVwgOwor5Yq05YON57WE5ZCI5rOVID4gcm91ZG91a3VtaWFpaG91XCA7CivntKDlvaLmnZDnlKPmpa0gPiBzb2tlaXphaXNhbmd5b3VcIDsKK+S6pOaPm+iyv+aYk+WItiA+IGtvdWthbmJvdWVraXNlaVwgOwor54++5Zyw6aeQ5Zyo5ZOhID4gZ2VuY2hpY2h1dXphaWluXCA7CivmnIDlsI/oh6rkuZfms5UgPiBzYWlzaG91amlqb3Vob3VcIDsKK+Wwj+Wei+S5l+eUqOi7iiA+IGtvZ2F0YWpvdXlvdXNoYVwgOwor5bGe5oCn5YCk6KGM5YiXID4gem9rdXNlZ3lvdXJldHN1XCA7Civmtbfou43lhbXlrabmoKEgPiBrYWlndW5oZWlnYWtrb3VcIDsKK+m7hOmBk+WNgeS6jOWuriA+IGtvdWRvdWp1dW5pa3l1dVwgOwor5Ye65p2l6auY5LuV5LqLID4gZGVraWRha2FzaGlnb3RvXCA7Civos4fnlKPosqDlgrXooaggPiBzaGlzYW5mdXNhaWh5b3VcIDsKK+eJiOaoqeaJgOacieiAhSA+IGhhbmtlbnNob3l1dXNoYVwgOwor5L+h5b6S5Lyd5YuV6ICFID4gc2hpbnRvZGVuZG91c2hhXCA7Civlrpjog73kuLvnvqnogIUgPiBrYW4nJ25vdXNodWdpc2hhXCA7CivogZbpnIrpmY3oh6jnpa0gPiBzZWlyZWlrb3VyaW5zYWlcIDsKK+a1geihjOaAp+iEs+eCjiA+IHJ5dXVrb3VzZWlub3VlblwgOwor6KiY5b+16KuW5paH6ZuGID4ga2luZW5yb25idW5zaHV1XCA7Civoh6rli5XpgKPntZDmqZ8gPiBqaWRvdXJlbmtldHN1a2lcIDsKK+Wkp+mZuOaAp+awl+WAmSA+IHRhaXJpa3VzZWlraWtvdVwgOwor5qC45YW15Zmo5a6f6aiTID4ga2FrdWhlaWtpamlra2VuXCA7CivoqoflpKflpoTmg7Pni4IgPiBrb2RhaW1vdXNvdWt5b3VcIDsKK+i6q+WIhuiovOaYjuabuCA+IG1pYnVuc2hvdW1laXNob1wgOwor5paH5YyW5Lq66aGe5a2mID4gYnVua2FqaW5ydWlnYWt1XCA7CivnrKzkuInmrKHnlKPmpa0gPiBkYWlzYW5qaXNhbmd5b3VcIDsKK+aWh+WMluWkp+mdqeWRvSA+IGJ1bmthZGFpa2FrdW1laVwgOwor6Z2e5bGA5omA5YiG5bKQID4gaGlreW9rdXNob2J1bmtpXCA7CivplqLkv4Lku6PlkI3oqZ4gPiBrYW5rZWlkYWltZWlzaGlcIDsKK+WkmuWbveexjeiogOiqniA+IHRha29rdXNla2lnZW5nb1wgOwor5rC06YqA5rCX5Zyn6KiIID4gc3VpZ2lua2lhdHN1a2VpXCA7CivlhZDnq6Xlv4PnkIblraYgPiBqaWRvdXNoaW5yaWdha3VcIDsKK+epuua0nuWMluePvuixoSA+IGt1dWRvdWthZ2Vuc2hvdVwgOwor54Sh55CG5pa556iL5byPID4gbXVyaWhvdXRlaXNoaWtpXCA7CivkuqTlt67lr77np7DmgKcgPiBrb3VzYXRhaXNob3VzZWlcIDsKK+WWp+WYqeS4oeaIkOaVlyA+IGtlbmthcnlvdXNlaWJhaVwgOwor6KaW6IG06Kaa5qmf5ZmoID4gc2hpY2hvdWtha3VraWtpXCA7Civmn5PoibLkvZPnlbDluLggPiBzZW5zaG9rdXRhaWlqb3VcIDsKK+e1kOWpmumBqem9ouacnyA+IGtla2tvbnRla2lyZWlraVwgOwor5ry46L+R55qE6Ieq55SxID4gemVua2ludGVraWppeXV1XCA7CivnpL7kvJrmsJHkuLvlhZogPiBzaGFrYWltaW5zaHV0b3VcIDsKK+engeioreW/nOaPtOWboyA+IHNoaXNldHN1b3VlbmRhblwgOwor57WM5riI5ZCM5Y+L5LyaID4ga2VpemFpZG91eXV1a2FpXCA7Civlj43oqLzlj6/og73mgKcgPiBoYW5zaG91a2Fub3VzZWlcIDsKK+aQrOmAgeWRqOazouaVsCA+IGhhbnNvdXNodXVoYXN1dVwgOwor5pyA6auY5oyH5bCO6ICFID4gc2Fpa291c2hpZG91c2hhXCA7CivokaHokITnirbnkIPoj4wgPiBidWRvdWpvdWt5dXVraW5cIDsKK+WFqOe/vOmjm+ihjOapnyA+IHplbicneW9rdWhpa291a2lcIDsKK+mAn+WKueaAp+iCpeaWmSA+IHNva2tvdXNlaWhpcnlvdVwgOwor6YGF5Yq55oCn6IKl5paZID4gY2hpa291c2VpaGlyeW91XCA7Civlm73nsovkuLvnvqnogIUgPiBrb2t1c3Vpc2h1Z2lzaGFcIDsKK+aWreW8vuaAp+S/guaVsCA+IGRhbmRhbnNlaWtlaXN1dVwgOwor5LqM5qyh5pa556iL5byPID4gbmlqaWhvdXRlaXNoaWtpXCA7Civlv5znlKjlv4PnkIblraYgPiBvdXlvdXNoaW5yaWdha3VcIDsKK+eyvuelnueVsOW4uOiAhSA+IHNlaXNoaW4nJ2lqb3VzaGFcIDsKK+WHuueUn+W5tOaciOaXpSA+IHNodXNzZWluZW5nYXBwaVwgOwor5YuV6Kme54q25ZCN6KmeID4gZG91c2hpam91bWVpc2hpXCA7Civoh6rnlLHoo4Hph4/mqKkgPiBqaXl1dXNhaXJ5b3VrZW5cIDsKK+S4reWkrumbhuaoqeWMliA+IGNodXVvdXNodXVrZW5rYVwgOwor54Sh5Yip5oGv6Ki85Yi4ID4gbXVyaXNva3VzaG91a2VuXCA7Civku4HnvqnnpLzmmbrkv6EgPiBqaW5naXJlaWNoaXNoaW5cIDsKK+abtOW5tOacn+manOWusyA+IGtvdW5lbmtpc2hvdWdhaVwgOwor5Zu96Kqe5a+p6K2w5LyaID4ga29rdWdvc2hpbmdpa2FpXCA7CivlnLDmlrnoo4HliKTmiYAgPiBjaGlob3VzYWliYW5zaG9cIDsKK+iHquWLleaUueacreapnyA+IGppZG91a2Fpc2F0c3VraVwgOwor5pyq5bCx5a2m5YWQ56ulID4gbWlzaHV1Z2FrdWppZG91XCA7Civlrp/mmYLplpPlh6bnkIYgPiBqaXRzdWppa2Fuc2hvcmlcIDsKK+mgkOmHkea6luWCmeeOhyA+IHlva2luanVuYmlyaXRzdVwgOwor5aSp5L2T5pyb6YGg6Y+hID4gdGVudGFpYm91ZW5reW91XCA7CivnpL7kvJroq7jnp5HlraYgPiBzaGFrYWlzaG9rYWdha3VcIDsKK+azleW+i+S6i+WLmeaJgCA+IGhvdXJpdHN1amltdXNob1wgOwor5a6f5Yip5Li7576p6ICFID4gaml0c3VyaXNodWdpc2hhXCA7CivmnKrnorroqo3mg4XloLEgPiBtaWtha3VuaW5qb3Vob3VcIDsKK+iAgeS6uuaAp+eXtOWRhiA+IHJvdWppbnNlaWNoaWhvdVwgOwor5Zyo5aSW56CU56m25ZOhID4gemFpZ2Fpa2Vua3l1dWluXCA7CivlrqLoprPkuLvnvqnogIUgPiBreWFra2Fuc2h1Z2lzaGFcIDsKK+mBuOaJi+aoqeWkp+S8miA+IHNlbnNodWtlbnRhaWthaVwgOwor5LiL57Sa6KOB5Yik5omAID4ga2FreXV1c2FpYmFuc2hvXCA7CivpgJPpmY3lpInlnKflmaggPiB0ZWlrb3VoZW5hdHN1a2lcIDsKK+mZkOeVjOmhleW+rumPoSA+IGdlbmthaWtlbmJpa3lvdVwgOwor6KaB5pKD5oim6ZeY5qmfID4geW91Z2VraXNlbnRvdWtpXCA7CivkuI3lhazlubPnq7bkuokgPiBmdWtvdWhlaWt5b3Vzb3VcIDsKK+WFrOiqjeS8muioiOWjqyA+IGtvdW5pbmthaWtlaXNoaVwgOwor54qv6KGM5aOw5piO5paHID4gaGFua291c2VpbWVpYnVuXCA7CivmtojosrvogIXkvqHmoLwgPiBzaG91aGlzaGFrYWtha3VcIDsKK+mfs+alveipleirluWutiA+IG9uZ2FrdWh5b3Vyb25rYVwgOwor5YWs5a6J6Kq/5p+75bqBID4ga291YW5jaG91c2FjaG91XCA7CivkuZfpmY3ou4rlhKrlhYggPiBqb3Vrb3VzaGF5dXVzZW5cIDsKK+S6uuW3peeUmOWRs+aWmSA+IGppbmtvdWthbm1pcnlvdVwgOwor5Zyo6YO36LuN5Lq65LyaID4gemFpZ291Z3Vuamlua2FpXCA7Civoh6roqJjmub/luqboqIggPiBqaWtpc2hpdHN1ZG9rZWlcIDsKK+Wkp+e1seS4gOeQhuirliA+IGRhaXRvdWl0c3VyaXJvblwgOwor5qSc5a6a5pWZ56eR5pu4ID4ga2VudGVpa3lvdWthc2hvXCA7CivljLvlrabmioDooZPlo6sgPiBpZ2FrdWdpanV0c3VzaGlcIDsKK+Wkqeeah+iqleeUn+aXpSA+IHRlbicnbm91dGFuam91YmlcIDsKK+WkquW5s+a0i+WcsOWfnyA+IHRhaWhlaXlvdWNoaWlraVwgOwor6LOH55Sj5YaN6KmV5L6hID4gc2hpc2Fuc2FpaHlvdWthXCA7Civmg4Xnt5LpmpzlrrPlhZAgPiBqb3VjaG9zaG91Z2FpamlcIDsKK+aXpeacrOWbveaGsuazlSA+IG5paG9ua29rdWtlbnBvdVwgOwor5Lq65rCR6Kej5pS+6LuNID4gamlubWlua2FpaG91Z3VuXCA7Civntbblr77lkJvkuLvliLYgPiB6ZXR0YWlrdW5zaHVzZWlcIDsKK+iKuOihk+aEm+WlveWutiA+IGdlaWp1dHN1YWlrb3VrYVwgOwor56eB55Sf5YWQ5Ye655SjID4gc2hpc2VpamlzaHVzc2FuXCA7CivkuKHpmaLljZTorbDkvJogPiByeW91aW5reW91Z2lrYWlcIDsKK+Wwj+eUsOWOn+aPkOeBryA+IG9kYXdhcmFkam91Y2hpblwgOwor6LKo54mp6Ieq5YuV6LuKID4ga2Ftb3RzdWppZG91c2hhXCA7CivniYfmiYvplpPku5XkuosgPiBrYXRhdGVtYXNoaWdvdG9cIDsKK+elnue1jOWbnui3r+e2siA+IHNoaW5rZWlrYWlyb21vdVwgOwor54Kt57Sg5YyW5ZCI54mpID4gdGFuc29rYWdvdWJ1dHN1XCA7CivmsJfnrqHmlK/llpjmga8gPiBraWthbnNoaXplbnNva3VcIDsKK+S4jeWLleeUo+alreiAhSA+IGZ1ZG91c2FuZ3lvdXNoYVwgOwor5rW35rSL5rCX6LGh5Y+wID4ga2FpeW91a2lzaG91ZGFpXCA7Civoh6rli5Xnv7voqLPmqZ8gPiBqaWRvdWhvbicneWFrdWtpXCA7CivnuITmloflvI/lnJ/lmaggPiBqb3Vtb25zaGlraWRva2lcIDsKK+i8uOWFpeiqsuW+tOmHkSA+IHl1bnl1dWthY2hvdWtpblwgOwor6YeN5ZWG5Li7576p6ICFID4ganV1c2hvdXNodWdpc2hhXCA7CivpgbrnlKPnm7jntprnqI4gPiBpc2Fuc291em9rdXplaVwgOwor5q+Y5bus6YGu6YKj5LuPID4gYmlydXNoYW5hYnV0c3VcIDsKK+mWoueojuiHquS4u+aoqSA+IGthbnplaWppc2h1a2VuXCA7Civln7rmnKzlkajms6LmlbAgPiBraWhvbnNodXVoYXN1dVwgOwor5Zub6Lyq6aeG5YuV6LuKID4geW9ucmlua3Vkb3VzaGFcIDsKK+mdmembu+awl+mYsuatoiA+IHNlaWRlbmtpYm91c2hpXCA7CivnhZnnqoHmjoPpmaTlpKsgPiBlbnRvdHN1c291amlmdVwgOwor5LyR5oim6KiY5b+15pelID4ga3l1dXNlbmtpbmVuYmlcIDsKK+Wtpuagoee+pOWItuW6piA+IGdha2tvdWd1bnNlaWRvXCA7CivmlL7lsITnt5rmioDluKsgPiBob3VzaGFzZW5naXNoaVwgOwor5a625bqt6KOB5Yik5omAID4ga2F0ZWlzYWliYW5zaG9cIDsKK+mVt+i3nembouaJk+iAhSA+IGNob3VreW9yaWRhc2hhXCA7Civml6XmnKzmqJnmupbmmYIgPiBuaWhvbmh5b3VqdW5qaVwgOwor6KqY5bCO6Zu75YuV5qmfID4geXV1ZG91ZGVuZG91a2lcIDsKK+W7uuWbveiomOW/teaXpSA+IGtlbmtva3VraW5lbmJpXCA7CivkvJ3ntbHkuLvnvqnogIUgPiBkZW50b3VzaHVnaXNoYVwgOwor55m76KiY55Wq5Y+35qyEID4gdG91a2liYW5nb3VyYW5cIDsKK+atqeihjOiAheWEquWFiCA+IGhva291c2hheXV1c2VuXCA7CivnhKHkurrlroflrpnoiLkgPiBtdWppbicndWNodXVzZW5cIDsKK+e+heiQhOaXpei+nuWFuCA+IHJhcG9uaWNoaWppdGVuXCA7CivmuKnmmpbljJbnj77osaEgPiBvbmRhbmthZ2Vuc2hvdVwgOwor5amm5Lq65Y+C5pS/5qipID4gZnVqaW5zYW5zZWlrZW5cIDsKK+iHqueUseawkeS4u+WFmiA+IGppeXV1bWluc2h1dG91XCA7CivlgIvkvZPnmbrnlJ/oq5YgPiBrb3RhaWhhc3NlaXJvblwgOwor5aSn5aiB5b6z5aaZ546LID4gZGFpaXRva3VteW91b3VcIDsKK+Wkp+mfk+iIquepuuapnyA+IHRhaWthbmtvdWt1dWtpXCA7CivkuI3nibnlrprlpJrmlbAgPiBmdXRva3V0ZWl0YXN1dVwgOwor5Li75oOF5Li7576p6ICFID4gc2h1am91c2h1Z2lzaGFcIDsKK+azleWumuS7o+eQhuS6uiA+IGhvdXRlaWRhaXJpbmluXCA7Civlhazplovlm7Pmm7jppKggPiBrb3VrYWl0b3Nob2thblwgOwor5LiA5pmC6ZaT5Lul5YaFID4gaWNoaWppa2FuJydpbmFpXCA7CivmlbDnkIboqIDoqp7lraYgPiBzdXVyaWdlbmdvZ2FrdVwgOwor6YG655Sj55u457aa5Lq6ID4gaXNhbnNvdXpva3VuaW5cIDsKK+aWueWQkeaOouefpeWZqCA+IGhvdWtvdXRhbmNoaWtpXCA7CivnhrHlj6/loZHmqLnohIIgPiBuZXRzdWthc29qdXNoaVwgOwor54Sh5qmf5YyW5ZCI54mpID4gbXVraWthZ291YnV0c3VcIDsKK+mHjeimgeaWh+WMluiyoSA+IGp1dXlvdWJ1bmthemFpXCA7CivlsYXplpPlhbzpo5/loIIgPiBpbWFrZW5zaG9rdWRvdVwgOwor55Ww5pa55bCO6Zu76IacID4gaWhvdWRvdWRlbm1ha3VcIDsKK+aMh+ekuuS7o+WQjeipniA+IHNoaWppZGFpbWVpc2hpXCA7Civlm57lvqnkuI3lj6/og70gPiBrYWlmdWt1ZnVrYW5vdVwgOwor5oud6YeR5Li7576p6ICFID4gaGFpa2luc2h1Z2lzaGFcIDsKK+S6uumBk+S4u+e+qeiAhSA+IGppbmRvdXNodWdpc2hhXCA7CivkuK3lpK7liIbpm6LluK8gPiBjaHV1b3VidW5yaXRhaVwgOwor5rip5biv5L2O5rCX5ZynID4gb250YWl0ZWlraWF0c3VcIDsKK+i2heWbveWutuS4u+e+qSA+IGNob3Vrb2trYXNodWdpXCA7CivliKnlrrPplqLkv4LogIUgPiByaWdhaWthbmtlaXNoYVwgOwor6KGG6K2w5ZOh6K2w6ZW3ID4gc2h1dWdpaW5naWNob3VcIDsKK+WwjuazoueuoeWumuaVsCA+IGRvdWhha2FudGVpc3V1XCA7CivkuIHlrZflvaLlrpropo8gPiB0ZWlqaWdhdGFqb3VnaVwgOwor57Ch5piT6KOB5Yik5omAID4ga2FuJydpc2FpYmFuc2hvXCA7Civlj43li5XkuLvnvqnogIUgPiBoYW5kb3VzaHVnaXNoYVwgOwor6Z+z5qW95Zuz5pu46aSoID4gb25nYWt1dG9zaG9rYW5cIDsKK+S5l+eUqOiHquWLlei7iiA+IGpvdXlvdWppZG91c2hhXCA7CivlnKflgJLnmoTlpJrmlbAgPiBhdHRvdXRla2l0YXN1dVwgOwor6Z2e5pS/5bqc57WE57mUID4gaGlzZWlmdXNvc2hpa2lcIDsKK+iHqueUseWKtOWDjeiAhSA+IGppeXV1cm91ZG91c2hhXCA7CivljZrmhJvkuLvnvqnogIUgPiBoYWt1YWlzaHVnaXNoYVwgOwor5a6a5pyf5LmX6LuK5Yi4ID4gdGVpa2lqb3VzaGFrZW5cIDsKK+mbu+awl+a0l+a/r+apnyA+IGRlbmtpc2VudGFrdWtpXCA7CivntYLmiKboqJjlv7Xml6UgPiBzaHV1c2Vua2luZW5iaVwgOwor56S+5Lya5Li7576p6ICFID4gc2hha2Fpc2h1Z2lzaGFcIDsKK+Wwj+Wei+iHquWLlei7iiA+IGtvZ2F0YWppZG91c2hhXCA7CivmsJHkuovoqLToqJ/ms5UgPiBtaW5qaXNvc2hvdWhvdVwgOwor56ys5LqM6YeP5a2Q5YyWID4gZGFpbmlyeW91c2hpa2FcIDsKK+S6jOWOn+WtkOWIhuWtkCA+IG5pZ2Vuc2hpYnVuc2hpXCA7CivluLjku7vmjIfmj67ogIUgPiBqb3VuaW5zaGlraXNoYVwgOwor6L6y5LqL6Kmm6aiT5aC0ID4gbm91amlzaGlrZW5qb3VcIDsKK+aDheWgseWMluekvuS8miA+IGpvdWhvdWthc2hha2FpXCA7CivkuLvoprPkuLvnvqnogIUgPiBzaHVrYW5zaHVnaXNoYVwgOwor54Sh5pWZ5Lya5Li7576pID4gbXVreW91a2Fpc2h1Z2lcIDsKK+exs+S+oeWvqeitsOS8miA+IGJlaWthc2hpbmdpa2FpXCA7CivmmYLplpPlpJblirTlg40gPiBqaWthbmdhaXJvdWRvdVwgOwor55m+56eR5YWo5pu45rS+ID4gaHlha2themVuc2hvaGFcIDsKK+S6jOeZvuS6jOWNgeaXpSA+IG5paHlha3VoYXRzdWthXCA7Civkuozph43kvqHmoLzliLYgPiBuaWp1dWtha2FrdXNlaVwgOwor5YiR5LqL6Ki06Kif5rOVID4ga2Vpamlzb3Nob3Vob3VcIDsKK+iyqeWjsuS7o+eQhuW6lyA+IGhhbmJhaWRhaXJpdGVuXCA7CivmnbHkupzoq7jmsJHml48gPiB0b3Vhc2hvbWluem9rdVwgOwor5Y2Y6JGJ6aOb6KGM5qmfID4gdGFuJyd5b3VoaWtvdWtpXCA7Civlm73kvJrorbDkuovpjLIgPiBrb2trYWlnaWppcm9rdVwgOwor5pS/5bqc5L+d6Ki85YK1ID4gc2VpZnVob3Nob3VzYWlcIDsKK+S+v+S5l+S4u+e+qeiAhSA+IGJpbmpvdXNodWdpc2hhXCA7CivkuozlpKfmlL/lhZrliLYgPiBuaWRhaXNlaXRvdXNlaVwgOwor54Sh5Yip5oGv5YWs5YK1ID4gbXVyaXNva3Vrb3VzYWlcIDsKK+i2s+e0oOaAp+WOn+eQhiA+IGFzaGlzdWpvdWdlbnJpXCA7Civos4fmnKzkuLvnvqnogIUgPiBzaGlob25zaHVnaXNoYVwgOwor5paH5YyW5Zyw55CG5a2mID4gYnVua2FjaGlyaWdha3VcIDsKK+WFrOiqjeWAmeijnOiAhSA+IGtvdW5pbmtvdWhvc2hhXCA7CivkuJbnlYzpgbjmiYvmqKkgPiBzZWthaXNlbnNodWtlblwgOwor5paw55+z5Zmo5pmC5LujID4gc2hpbnNla2tpamlkYWlcIDsKK+WPl+mok+WPguiAg+abuCA+IGp1a2Vuc2Fua291c2hvXCA7CivpnZnmraLnlLvmlL7pgIEgPiBzZWlzaGlnYWhvdXNvdVwgOwor5bCR5bm05oSf5YyW6ZmiID4gc2hvdW5lbmthbmthaW5cIDsKK+mVt+i3nemboui8uOmAgSA+IGNob3VreW9yaXl1c291XCA7Civlho3luLDku6PlkI3oqZ4gPiBzYWlraWRhaW1laXNoaVwgOwor5o6n6Ki06KOB5Yik5omAID4ga291c29oYWliYW5zaG9cIDsKK+aWh+WMluWKn+WKtOiAhSA+IGJ1bmtha291cm91c2hhXCA7CivnnJ/nqbrmjoPpmaTmqZ8gPiBzaGlua3V1c291amlraVwgOwor5Lq65b2i5rWE55Gg55KDID4gbmluZ3lvdWpvdXJ1cmlcIDsKK+aUv+ayu+ipleirluWutiA+IHNlaWppaHlvdXJvbmthXCA7CivkvJ3mib/lj5nkuovoqakgPiBkZW5zaG91am9qaXNoaVwgOwor5pyJ6KaW55WM6aOb6KGMID4geXV1c2hpa2FpaGlrb3VcIDsKK+mZjeS4ieS4luWmmeeOiyA+IGdvdXphbnplbXlvdW91XCA7CivnrYnpq5jnt5rlnLDlm7MgPiB0b3Vrb3VzZW5jaGl6dVwgOwor6KO96YCg5bm05pyI5pelID4gc2Vpem91bmVuZ2FwcGlcIDsKK+WcsOaWueS6pOS7mOeojiA+IGNoaWhvdWtvdWZ1emVpXCA7Civml6XmnKzoqp7mlZnmnKwgPiBuaWhvbmdva3lvdWhvblwgOwor5L+Y6Jmc5Y+O5a655omAID4gZnVyeW9zaHV1eW91am9cIDsKK+epuuawl+Wcp+e4ruapnyA+IGt1dWtpYXNzaHVrdWtpXCA7Civlm73pgKPoqJjlv7Xml6UgPiBrb2t1cmVua2luZW5iaVwgOwor54Sh6KiY5ZCN5oqV56WoID4gbXVraW1laXRvdWh5b3VcIDsKK+iHqueEtuS4u+e+qeiAhSA+IHNoaXplbnNodWdpc2hhXCA7CivnrqHljLrmsJfosaHlj7AgPiBrYW5rdWtpc2hvdWRhaVwgOwor5rOV5a6a5rqW5YKZ6YeRID4gaG91dGVpanVuYmlraW5cIDsKK+a1t+a0i+aAp+awl+WAmSA+IGthaXlvdXNlaWtpa291XCA7CivlpJbosqjmupblgpnpq5ggPiBnYWlrYWp1bmJpZGFrYVwgOwor5peF6KGM5Luj55CG5bqXID4gcnlva291ZGFpcml0ZW5cIDsKK+S6iOmBuOmAmumBjuiAhSA+IHlvc2VudHN1dWthc2hhXCA7CivlpbPmgKfop6PmlL7oq5YgPiBqb3NlaWthaWhvdXJvblwgOwor6YG65Lyd5a2Q5rK755mCID4gaWRlbnNoaWNoaXJ5b3VcIDsKK+e1tuWvvuS4u+e+qeiAhSA+IHpldHRhaXNodWdpc2hhXCA7CivlhbHlkIzngorkuovloLQgPiBreW91ZG91c3VpamliYVwgOwor56aP56WJ5LqL5YuZ5omAID4gZnVrdXNoaWppbXVzaG9cIDsKK+S4ieinkuezu+eVsOW4uCA+IHNhbmtha3VrZWlpam91XCA7CivmsLTnlKPoqabpqJPmiYAgPiBzdWlzYW5zaGlrZW5qb1wgOwor6LuN5LqL6KOB5Yik5omAID4gZ3VuamlzYWliYW5zaG9cIDsKK+maoOmAgOiUteeJqeizhyA+IGludGFpem91YnVzc2hpXCA7Civlj4LogIPlm7Pmm7jppKggPiBzYW5rb3V0b3Nob2thblwgOwor54Sh57ea5ZGo5rOi5pWwID4gbXVzZW5zaHV1aGFzdXVcIDsKK+mHjei+suS4u+e+qeiAhSA+IGp1dW5vdXNodWdpc2hhXCA7CivkuZflkIjoh6rli5Xou4ogPiBub3JpYWlqaWRvdXNoYVwgOwor57Sw6IOe6YG65Lyd5a2mID4gc2FpYm91aWRlbmdha3VcIDsKK+i2hemfs+azoua0l+a1hCA+IGNob3VvbnBhc2Vuam91XCA7CivliJHkuovooqvlkYrkurogPiBrZWlqaWhpa29rdW5pblwgOwor576k5Lyd5pCs5pmC6ZaTID4gZ3VuZGVucGFuamlrYW5cIDsKK+WBpeW6t+S/nemZuuazlSA+IGtlbmtvdWhva2VuaG91XCA7CivluLjku7vnkIbkuovlm70gPiBqb3VuaW5yaWppa29rdVwgOwor6Z2e6YeR5bGe5YWD57SgID4gaGlraW56b2t1Z2Vuc29cIDsKK+mZuOS4iuiHquihm+maiiA+IHJpa3Vqb3VqaWVpdGFpXCA7Civkv53pmbrli6foqpjlk6EgPiBob2tlbmthbicneXV1aW5cIDsKK+eqkue0oOWbuuWumuazlSA+IGNoaXNzb2tvdGVpaG91XCA7Civnm7jlr77mgKfljp/nkIYgPiBzb3V0YWlzZWlnZW5yaVwgOwor576O6KGT5oSb5aW95a62ID4gYmlqdXRzdWFpa291a2FcIDsKK+S4reefs+WZqOaZguS7oyA+IGNodXVzZWtraWppZGFpXCA7CivkuLvnn6XkuLvnvqnogIUgPiBzaHVjaGlzaHVnaXNoYVwgOwor6JqV57O46Kmm6aiT5omAID4gc2Fuc2hpc2hpa2Vuam9cIDsKK+eri+S9k+W5vuS9leWtpiA+IHJpdHRhaWtpa2FnYWt1XCA7CivkuI3li5XnlKPpkZHlrpogPiBmdWRvdXNhbmthbnRlaVwgOwor6ZW36Led6Zui6aOb6KGMID4gY2hvdWt5b3JpaGlrb3VcIDsKK+esrOS6jOasoeaAp+W+tCA+IGRhaW5pamlzZWljaG91XCA7Civlj6Xmp4vpgKDmlofms5UgPiBrdWtvdXpvdWJ1bnBvdVwgOwor5aOr5a6Y5YCZ6KOc55SfID4gc2hpa2Fua291aG9zZWlcIDsKK+W3oeWbnuWbs+abuOmkqCA+IGp1bmthaXRvc2hva2FuXCA7CivlvrTlhbXlv4zpgb/ogIUgPiBjaG91aGVpa2loaXNoYVwgOwor5Ye66Ki05pyf6ZmQ5rOVID4gc2h1c3Nva2lnZW5ob3VcIDsKK+i7jeeUqOi8uOmAgeapnyA+IGd1bicneW91eXVzb3VraVwgOwor6KiA6Kqe5Zyw55CG5a2mID4gZ2VuZ29jaGlyaWdha3VcIDsKK+WJjeaWueW+jOWGhuWisyA+IHplbnBvdWtvdWVuZnVuXCA7Civomavmp5jnqoHotbfngo4gPiBjaHV1eW91dG9ra2llblwgOwor5pyJ5b2i5paH5YyW6LKhID4geXV1a2VpYnVua2F6YWlcIDsKK+aXp+efs+WZqOaZguS7oyA+IGt5dXVzZWtraWppZGFpXCA7Civoh6rnlLHmsJHmqKnoq5YgPiBqaXl1dW1pbmtlbnJvblwgOwor56C055Sj6KOB5Yik5omAID4gaGFzYW5zYWliYW5zaG9cIDsKK+S6uui6q+S/neitt+azlSA+IGppbnNoaW5ob2dvaG91XCA7CivmlL7lsITmgKflhYPntKAgPiBob3VzaGFzZWlnZW5zb1wgOwor5o2V6Jmc5Y+O5a655omAID4gaG9yeW9zaHV1eW91am9cIDsKK+eUn+ioiOiyu+aMh+aVsCA+IHNlaWtlaWhpc2hpc3V1XCA7Civlm73kvJrlm7Pmm7jppKggPiBrb2trYWl0b3Nob2thblwgOwor6auY562J5byB5YuZ5a6YID4ga291dG91YmVubXVrYW5cIDsKK+aZgumWk+mghuW6j+epjSA+IGppa2FuanVuam9zZWtpXCA7CivlnLDnkIPmuKnmmpbljJYgPiBjaGlreXV1b25kYW5rYVwgOwor6Z2e5bi45Yuk6Kyb5birID4gaGlqb3VraW5rb3VzaGlcIDsKK+iHquWLlei7iuWtpuagoSA+IGppZG91c2hhZ2Fra291XCA7CivnqI7ph5Hpgb/pm6PlnLAgPiB6ZWlraW5oaW5hbmNoaVwgOwor5Lq66YGT55qE5o+05YqpID4gamluZG91dGVraWVuam9cIDsKK+a2iOiyu+iAhemBi+WLlSA+IHNob3VoaXNoYXVuZG91XCA7CivlirTlg43ln7rmupbms5UgPiByb3Vkb3VraWp1bmhvdVwgOwor5ryi5a2X5Yi26ZmQ6KuWID4ga2FuamlzZWlnZW5yb25cIDsKK+WRqOazouaVsOWBj+enuyA+IHNodXVoYXN1dWhlbicnaVwgOwor54Sh5Yi26ZmQ6LK/5piTID4gbXVzZWlnZW5ib3Vla2lcIDsKK+asoeWFg+ato+WJh+WMliA+IGppZ2Vuc2Vpc29rdWthXCA7CivkurrlkI3nlKjmvKLlrZcgPiBqaW5tZWl5b3VrYW5qaVwgOwor5b6B5aS35aSn5bCG6LuNID4gc2VpaXRhaXNob3VndW5cIDsKK+eUo+alreS6iOWCmei7jSA+IHNhbmd5b3V5b2JpZ3VuXCA7CivliKnlrZDlubPooaHnqI4gPiByaXNoaWhlaWtvdXplaVwgOwor54Sh5Lu75omA5aSn6IejID4gbXVuaW5zaG9kYWlqaW5cIDsKK+S6jOmHjeebsuaknOazlSA+IG5panV1bW91a2VuaG91XCA7Civoh6ros6Dosqzkv53pmbogPiBqaWJhaXNla2lob2tlblwgOwor6YeN54Kt6YW45pu56YGUID4ganV1dGFuc2Fuc291ZGFcIDsKK+mVt+i3nemboumbu+ipsSA+IGNob3VreW9yaWRlbndhXCA7CivpgbrkvJ3lrZDlt6XlraYgPiBpZGVuc2hpa291Z2FrdVwgOwor5LiN5Y+v6IO96YG45oqeID4gZnVrYW5vdXNlbnRha3VcIDsKK+WPpeani+mAoOimj+WJhyA+IGt1a291em91a2lzb2t1XCA7CivmiYvlvaLkuqTmj5vmiYAgPiB0ZWdhdGFrb3VrYW5qb1wgOwor5Zyw5pa56Ieq5rK75L2TID4gY2hpaG91amljaGl0YWlcIDsKK+S4jeimj+WJh+WLleipniA+IGZ1a2lzb2t1ZG91c2hpXCA7CivlrozlhajkuLvnvqnogIUgPiBrYW56ZW5zaHVnaXNoYVwgOwor5qeL5oiQ57Sg5qeL6YCgID4ga291c2Vpc29rb3V6b3VcIDsKK+i8ieiyqOWQg+awtOe3miA+IHNhaWtha2lzc3Vpc2VuXCA7CivmsLTpioDmuKnluqboqIggPiBzdWlnaW4nJ29uZG9rZWlcIDsKK+aVsOeQhuirlueQhuWtpiA+IHN1dXJpcm9ucmlnYWt1XCA7CivnmoflpKrlrZDmrr/kuIsgPiBrb3V0YWlzaGlkZW5rYVwgOwor5oim5LqJ5pyq5Lqh5Lq6ID4gc2Vuc291bWlib3VqaW5cIDsKK+egtOeUo+euoeiyoeS6uiA+IGhhc2Fua2FuemFpbmluXCA7CivljZTlrprkuJbnlYzmmYIgPiBreW91dGVpc2VrYWlqaVwgOwor5rW35LiK5L+d5a6J5bqBID4ga2Fpam91aG9hbmNob3VcIDsKK+eJueeVsOWApOWIhuinoyA+IHRva3VpY2hpYnVua2FpXCA7CivmsJHllrbljJbkvIHmpa0gPiBtaW4nJ2Vpa2FraWd5b3VcIDsKK+Wkp+ilv+a0i+aoquaWrSA+IHRhaXNlaXlvdW91ZGFuXCA7Civkurrlt6Xpgb/lporms5UgPiBqaW5rb3VoaW5pbmhvdVwgOwor6a2a576k5o6i55+l5qmfID4gZ3lvZ3VudGFuY2hpa2lcIDsKK+mBiumbouWfuuWPjeW/nCA+IHl1dXJpa2loYW4nJ25vdVwgOwor5bCP55Sw5Y6f6KmV5a6aID4gb2Rhd2FyYWh5b3Vqb3VcIDsKK+mokumfs+mYsuatouazlSA+IHNvdW9uYm91c2hpaG91XCA7CivnlpHllY/ku6PlkI3oqZ4gPiBnaW1vbmRhaW1laXNoaVwgOwor55u45a++5oCn55CG6KuWID4gc291dGFpc2Vpcmlyb25cIDsKK+mFuOWMlumYsuatouWJpCA+IHNhbmthYm91c2hpemFpXCA7CivnrKzkuozmrKHnlKPmpa0gPiBkYWluaWppc2FuZ3lvdVwgOwor5pyJ5qmf5aGp5rq25aqSID4geXV1a2llbicneW91YmFpXCA7Civpm7vlrZDoqIjnrpfmqZ8gPiBkZW5zaGlrZWlzYW5raVwgOwor5oim6ZeY54qg54my6ICFID4gc2VudG91Z2lzZWlzaGFcIDsKK+awkemWk+iIquepuuapnyA+IG1pbmthbmtvdWt1dWtpXCA7Civlj43miKbkuLvnvqnogIUgPiBoYW5zZW5zaHVnaXNoYVwgOwor6Kaz5YWJ5qGI5YaF5omAID4ga2Fua291YW4nJ25haWpvXCA7Civpq5jpvaLljJbnpL7kvJogPiBrb3VyZWlrYXNoYWthaVwgOwor6KiY5Y+36KuW55CG5a2mID4ga2lnb3Vyb25yaWdha3VcIDsKK+aMh+WQjeaJi+mFjeS6uiA+IHNoaW1laXRlaGFpamluXCA7Civoh6rou6Lou4rml4XooYwgPiBqaXRlbnNoYXJ5b2tvdVwgOwor5bmz5Z2H5aSq6Zm95pmCID4gaGVpa2ludGFpeW91amlcIDsKK+Wlveawl+aAp+e0sOiPjCA+IGtvdWtpc2Vpc2Fpa2luXCA7Civpm7vms6LmnJvpgaDpj6EgPiBkZW5wYWJvdWVua3lvdVwgOwor5Yq05YON6YGL5YuV6ICFID4gcm91ZG91dW5kb3VzaGFcIDsKK+mch+eBveiomOW/teaXpSA+IHNoaW5zYWlraW5lbmJpXCA7CivmgqrlvrPmlL/msrvlrrYgPiBha3V0b2t1c2VpamlrYVwgOwor5oOF5aCx5Li76KaB57SgID4gam91aG91c2h1eW91c29cIDsKK+WFrOatpuWQiOS9k+irliA+IGtvdWJ1Z2F0dGFpcm9uXCA7Civpm7vlhYnmjrLnpLrmnb8gPiBkZW5rb3VrZWlqaWJhblwgOwor5L6h6Zu75a2Q54q25oWLID4ga2FkZW5zaGlqb3V0YWlcIDsKK+awtOeUo+WKoOW3peWTgSA+IHN1aXNhbmtha291aGluXCA7CivlubPpnaLlub7kvZXlraYgPiBoZWltZW5raWthZ2FrdVwgOwor6Ieq6Lui6LuK572u5aC0ID4gaml0ZW5zaGFva2liYVwgOwor5pWZ6IKy5aeU5ZOh5LyaID4ga3lvdWlrdWlpbmthaVwgOwor5rC05LiK6aOb6KGM5qmfID4gc3Vpam91aGlrb3VraVwgOwor5Y6t5LiW5oKy6Kaz6ICFID4gZW5zZWloaWthbnNoYVwgOwor5b6M5pyf5Y2w6LGh5rS+ID4ga291a2lpbnNob3VoYVwgOwor5aSn6KaP5qih5oim5LqJID4gZGFpa2lib3NlbnNvdVwgOwor54Sh5ouF5L+d56S+5YK1ID4gbXV0YW5wb3NoYXNhaVwgOwor6YGg5b+D5YiG6Zui5qmfID4gZW5zaGluYnVucmlraVwgOwor6Zu75rCX5Ya36JS15bqrID4gZGVua2lyZWl6b3Vrb1wgOwor5pyA5L2O5rip5bqm6KiIID4gc2FpdGVpb25kb2tlaVwgOwor6aGn5ZWP5byB6K235aOrID4ga29tb25iZW5nb3NoaVwgOwor5LqM56Gr5YyW54Kt57SgID4gbmlyeXV1a2F0YW5zb1wgOwor5pep5pyf6K2m5oiS5qmfID4gc291a2lrZWlrYWlraVwgOwor5qeL6YCg6YG65Lyd5a2QID4ga291em91aWRlbnNoaVwgOwor6Z2S6YqF5Zmo5pmC5LujID4gc2VpZG91a2lqaWRhaVwgOwor5Lya6KiI5qSc5p+76ZmiID4ga2Fpa2Vpa2Vuc2FpblwgOwor6aaW5L2N5pS76Ziy5oimID4gc2h1aWtvdWJvdXNlblwgOwor5YWo5pa55L2N5aSW5LqkID4gemVuaG91aWdhaWtvdVwgOwor54Sh5Lq65YyW5bel5aC0ID4gbXVqaW5rYWtvdWpvdVwgOwor54Gr5LqL5aC05rOl5qOSID4ga2FqaWJhZG9yb2JvdVwgOwor5Lq65bel5qCE6aSK5YWQID4gamlua291ZWl5b3VqaVwgOwor5qyn57Gz6Ku46KiA6KqeID4gb3ViZWlzaG9nZW5nb1wgOwor5Lq65bel5a215YyW5rOVID4gamlua291ZnVrYWhvdVwgOwor6LuN5LqL6aGn5ZWP5ZujID4gZ3Vuamlrb21vbmRhblwgOwor6auY5bGk5aSp5rCX5ZuzID4ga291c291dGVua2l6dVwgOwor5Luu6Z2i6Iie6LiP5LyaID4ga2FtZW5idXRvdWthaVwgOwor5L2c5qWt6YOo5Lya5qGIID4gc2FneW91YnVrYWlhblwgOwor5pig55S76KmV6KuW5a62ID4gZWlnYWh5b3Vyb25rYVwgOwor56ys5LqM5qyh5aSn5oimID4gZGFpbmlqaXRhaXNlblwgOwor6YeO5qyh6aas5qC55oCnID4geWFqaXVtYWtvbmpvdVwgOwor6Iux5Lya6Kmx5a2m5qChID4gZWlrYWl3YWdha2tvdVwgOwor5YmN5pa55LiN5rOo5oSPID4gemVucG91ZnVjaHV1aVwgOwor5Zyw5pa55YWs5YuZ5ZOhID4gY2hpaG91a291bXVpblwgOwor6Ieq5YuV6LKp5aOy5qmfID4gamlkb3VoYW5iYWlraVwgOwor6Zu756OB6Kq/55CG5ZmoID4gZGVuamljaG91cmlraVwgOwor6Iiq56m66Ieq6KGb6ZqKID4ga291a3V1amllaXRhaVwgOwor5qmf6Zai5oqV6LOH5a62ID4ga2lrYW50b3VzaGlrYVwgOwor5Zue6Lev6YGu5pat5qmfID4ga2Fpcm9zaGFkYW5raVwgOwor6IGW6Lev5Yqg55eF6ZmiID4gc2Vpcm9rYWJ5b3VpblwgOwor5YiG6Zui5Li7576p6ICFID4gYnVucmlzaHVnaXNoYVwgOwor5oay5rOV6KiY5b+15pelID4ga2VucG91a2luZW5iaVwgOwor5Yqg5rib5oq15oqX5ZmoID4ga2FnZW50ZWlrb3VraVwgOwor6Ieq5YuV6LKp5aOy5ZmoID4gamlkb3VoYW5iYWlraVwgOwor54Sh5YWN6Kix6YGL6LuiID4gbXVtZW5reW91bnRlblwgOwor5LiN5Y+v6KaW5YWJ57eaID4gZnVrYXNoaWtvdXNlblwgOwor6LK/5piT6Ieq55Sx5YyWID4gYm91ZWtpaml5dXVrYVwgOwor56m65rCX5Yi25YuV5qmfID4ga3V1a2lzZWlkb3VraVwgOwor5LqU5Y2B5q2p55m+5q2pID4gZ29qdXBwb2h5YXBwb1wgOwor5Y6f55CG5Li7576p6ICFID4gZ2VucmlzaHVnaXNoYVwgOwor5aSa5YWD5paH5YyW6KuWID4gdGFnZW5idW5rYXJvblwgOwor6K2y5rih5oCn6aCQ6YeRID4gam91dG9zZWl5b2tpblwgOwor5Zu95a625Li7576p6ICFID4ga29ra2FzaHVnaXNoYVwgOwor5rK/5bK46K2m5YKZ6ZqKID4gZW5nYW5rZWliaXRhaVwgOwor5YCL5Lq65Li7576p6ICFID4ga29qaW5zaHVnaXNoYVwgOwor5aSW5Lqk5aeU5ZOh6ZW3ID4gZ2Fpa291aWluY2hvdVwgOwor54Sh5oq15oqX5Li7576pID4gbXV0ZWlrb3VzaHVnaVwgOwor5pS+5bCE6IO95rGa5p+TID4gaG91c2hhbm91b3NlblwgOwor6Zu75rCX6Ieq5YuV6LuKID4gZGVua2lqaWRvdXNoYVwgOwor5YSq55Sf5L+d6K235rOVID4geXV1c2VpaG9nb2hvdVwgOwor5Zyw5pa55LqL5YuZ5omAID4gY2hpaG91amltdXNob1wgOwor6Ly45YWl6Ieq55Sx5YyWID4geXVueXV1aml5dXVrYVwgOwor54Sh5Yip5oGv5YK15YuZID4gbXVyaXNva3VzYWltdVwgOwor56Gr6buE6YW45YyW54mpID4gaW91c2Fua2FidXRzdVwgOwor6YGT6Lev5o6D6Zmk5Lq6ID4gZG91cm9zb3VqaWppblwgOwor5LuB6Lyq5Yqg54uC6KiAID4gbml3YWtha3lvdWdlblwgOwor6Ieq6Ieq5YWs77yT5YWaID4gamlqaWtvdXNhbnRvdVwgOwor5rCX566h5pSv6IK654KOID4ga2lrYW5zaGloYWllblwgOwor5aSa6YeN5YK15YuZ6ICFID4gdGFqdXVzYWltdXNoYVwgOwor6Kuu5ZWP5aeU5ZOh5LyaID4gc2hpbW9uJydpaW5rYWlcIDsKK+mrmOmrmOW6pumjm+ihjCA+IGtvdWtvdWRvaGlrb3VcIDsKK+WbveS8muitsOS6i+WggiA+IGtva2thaWdpamlkb3VcIDsKK+S6jOWNgeWbm+evgOawlyA+IG5panV1c2hpc2Vra2lcIDsKK+eEoeW9ouaWh+WMluiyoSA+IG11a2VpYnVua2F6YWlcIDsKK+W4guWgtOiHqueUseWMliA+IHNoaWpvdWppeXV1a2FcIDsKK+e1jOWWtuWkmuinkuWMliA+IGtlaWVpdGFrYWt1a2FcIDsKK+S4u+aIkeS4u+e+qeiAhSA+IHNodWdhc2h1Z2lzaGFcIDsKK+aal+WPt+WMluaJi+azlSA+IGFuZ291a2FzaHVob3VcIDsKK+S4jeimi+i7ouiKuOiAhSA+IG1penV0ZW5nZWlzaGFcIDsKK+WKn+WIqeS4u+e+qeiAhSA+IGtvdXJpc2h1Z2lzaGFcIDsKK+iHquWLlei7iuS/nemZuiA+IGppZG91c2hhaG9rZW5cIDsKK+iHquW3semhleekuuassiA+IGppa29rZW5qaXlva3VcIDsKK+eEoemFjeW9k+S/nemZuiA+IG11aGFpdG91aG9rZW5cIDsKK+aenOaoueagveWfueiAhSA+IGthanVzYWliYWlzaGFcIDsKK+ijgeWIpOWumOW/jOmBvyA+IHNhaWJhbmthbmtpaGlcIDsKK+mdnuatpuijheWcsOW4ryA+IGhpYnVzb3VjaGl0YWlcIDsKK+epuuawl+a4hea1hOapnyA+IGt1dWtpc2Vpam91a2lcIDsKK+S4gOS6i+S4jeWGjeitsCA+IGljaGlqaWZ1c2FpZ2lcIDsKK+WJteW7uuiomOW/teaXpSA+IHNvdWtlbmtpbmVuYmlcIDsKK+aZrumBjeWmpeW9k+aApyA+IGZ1aGVuZGF0b3VzZWlcIDsKK+WOn+WtkOegtOWjiuapnyA+IGdlbnNoaWhha2Fpa2lcIDsKK+e1kOWpmuiomOW/teaXpSA+IGtla2tvbmtpbmVuYmlcIDsKK+Wkp+mbqOazqOaEj+WgsSA+IG9vYW1lY2h1dWlob3VcIDsKK+exs+adsemDqOaZgumWkyA+IGJlaXRvdWJ1amlrYW5cIDsKK+WKo+aAp+mBuuS8neWtkCA+IHJlc3NlaWlkZW5zaGlcIDsKK+eEoeS+oeWApOizh+eUoyA+IG11a2FjaGlzaGlzYW5cIDsKK+WBpeW6t+S/nemZuuWMuyA+IGtlbmtvdWhva2VuJydpXCA7CivluLjku7vlp5Tlk6HkvJogPiBqb3VuaW4nJ2lpbmthaVwgOwor6Ieq55Sx5Li7576p6ICFID4gaml5dXVzaHVnaXNoYVwgOwor55+t5rOi5Y+X5L+h5qmfID4gdGFucGFqdXNoaW5raVwgOwor56C05aOK5Li7576p6ICFID4gaGFrYWlzaHVnaXNoYVwgOwor5b6h6YO95ZCI5Li7576pID4gZ290c3Vnb3VzaHVnaVwgOwor5LqM5Y2B5pel5aSn5qC5ID4gaGF0c3VrYWRhaWtvblwgOwor6JC95LiL5YKY6YOo6ZqKID4gcmFra2FzYW5idXRhaVwgOwor6ZW36Led6Zui5L6d5a2YID4gY2hvdWt5b3JpaXpvblwgOwor56ym5Y+35aSJ5o+b5ZmoID4gZnVnb3VoZW5rYW5raVwgOwor6YCB6YeR5bCP5YiH5omLID4gc291a2lua29naXR0ZVwgOwor5a++5oim6LuK54Gr5ZmoID4gdGFpc2Vuc2hha2FraVwgOwor5byX5YyW5rC057Sg6YW4ID4gZnVra2FzdWlzb3NhblwgOwor55u46KOc5oCn5Y6f55CGID4gc291aG9zZWlnZW5yaVwgOwor6JK45rCX5qmf6Zai6LuKID4gam91a2lraWthbnNoYVwgOwor5paH5YyW5LqL5qWt6YOoID4gYnVua2FqaWd5b3VidVwgOwor54Sh6KiY5ZCN56S+5YK1ID4gbXVraW1laXNoYXNhaVwgOwor5ZCI5ZCM5oWw6ZyK56WtID4gZ291ZG91aXJlaXNhaVwgOwor54Gr54G95aCx55+l5qmfID4ga2FzYWlob3VjaGlraVwgOwor6Zu75rOi5o6i55+l5qmfID4gZGVucGF0YW5jaGlraVwgOwor5Y+v5aSJ5oq15oqX5ZmoID4ga2FoZW50ZWlrb3VraVwgOwor5YWs5YuZ5ZOh6Kmm6aiTID4ga291bXVpbnNoaWtlblwgOwor5a6H5a6Z6aOb6KGM5aOrID4gdWNodXVoaWtvdXNoaVwgOwor55yL6K235amm5a2m6ZmiID4ga2FuZ29mdWdha3VpblwgOwor5Y2B5a2X6LuN6aiO5aOrID4ganV1amlndW5raXNoaVwgOwor54Sh5qmf6auY5YiG5a2QID4gbXVraWtvdWJ1bnNoaVwgOwor54Gr54G95aCx55+l5ZmoID4ga2FzYWlob3VjaGlraVwgOwor6Zu75rOi5o6i55+l5ZmoID4gZGVucGF0YW5jaGlraVwgOwor5oyH5o+u5omA5ryU57+SID4gc2hpa2lqb2Vuc2h1dVwgOwor5LqM6YW45YyW56qS57SgID4gbmlzYW5rYWNoaXNzb1wgOwor6Ieq5YuV6LuK6Zu76KmxID4gamlkb3VzaGFkZW53YVwgOwor5oOF5aCx5Y+v6KaW5YyWID4gam91aG91a2FzaGlrYVwgOwor5pGC5rCP77yS77yQ5bqmID4gc2Vzc2hpbmlqdXVkb1wgOwor5bCP5Z6L6LWk5a626JqKID4ga29nYXRhYWthaWVrYVwgOwor57WQ5ama5oqr6Zyy5a60ID4ga2Vra29uaGlyb3VlblwgOwor5rW35LiK6Ieq6KGb6ZqKID4ga2Fpam91amllaXRhaVwgOwor5Y6f5qGI5aeU5ZOh5LyaID4gZ2VuJydhbicnaWlua2FpXCA7CivpgbjmiYvmqKnoqablkIggPiBzZW5zaHVrZW5qaWFpXCA7Civml6XlkozopovkuLvnvqkgPiBoaXlvcmltaXNodWdpXCA7Civku67oo4XoiJ7ouI/kvJogPiBrYXNvdWJ1dG91a2FpXCA7Civpga7lhYnlmajlnJ/lgbYgPiBzaGFrb3VraWRvZ3V1XCA7CivkuIvmsLTlh6bnkIbloLQgPiBnZXN1aXNob3Jpam91XCA7CivlkIjnkIbkuLvnvqnogIUgPiBnb3VyaXNodWdpc2hhXCA7Civmpb3lmajmvJTlpY/ogIUgPiBnYWtraWVuc291c2hhXCA7Civlj6TlhbjkuLvnvqnogIUgPiBrb3RlbnNodWdpc2hhXCA7Civlm73lnJ/lnLDnkIbpmaIgPiBrb2t1ZG9jaGlyaWluXCA7CivluILooZfljJbljLrln58gPiBzaGlnYWlrYWt1aWtpXCA7Civpm7vmsJfmqZ/plqLou4ogPiBkZW5raWtpa2Fuc2hhXCA7CivlvKXmrKHppqzmoLnmgKcgPiB5YWppdW1ha29uam91XCA7CivplovmoKHoqJjlv7Xml6UgPiBrYWlrb3VraW5lbmJpXCA7CivkuI3lj6/nn6Xoq5bogIUgPiBmdWthY2hpcm9uc2hhXCA7CivnhKHoqJjlkI3lgrXmqKkgPiBtdWtpbWVpc2Fpa2VuXCA7Civlhajms6Llj5fkv6HmqZ8gPiB6ZW5wYWp1c2hpbmtpXCA7CivlubPlkozkuLvnvqnogIUgPiBoZWl3YXNodWdpc2hhXCA7CivpnZLlpKnkupXkuojnrpcgPiBhb3RlbmpvdXlvc2FuXCA7Civnirbms4HmhI/lkbPoq5YgPiBqb3VreW91aW1pcm9uXCA7CivmvKLlrZfmlofljJblnI8gPiBrYW5qaWJ1bmtha2VuXCA7Civmra/np5HmioDlt6Xlo6sgPiBzaGlrYWdpa291c2hpXCA7CivmtbfkuIrovLjpgIHot68gPiBrYWlqb3V5dXNvdXJvXCA7Civoqr/lgZzlp5Tlk6HkvJogPiBjaG91dGVpaWlua2FpXCA7CivooYzmlrnkuI3mmI7ogIUgPiB5dWt1ZWZ1bWVpc2hhXCA7CivlgIvkurrnmoTmhI/oposgPiBrb2ppbnRla2lpa2VuXCA7CivljJflm73otaTmtbfogIEgPiBob2trb2t1YWthZWJpXCA7Civkvb/pgJTkuI3mmI7ph5EgPiBzaGl0b2Z1bWVpa2luXCA7CivmsJHkuLvljJbpgYvli5UgPiBtaW5zaHVrYXVuZG91XCA7CivlpKnmsJfnm7joq4fmiYAgPiB0ZW5raXNvdWRhbmpvXCA7Civlj4LliqDluIzmnJvogIUgPiBzYW5rYWtpYm91c2hhXCA7Civmh5DnlpHkuLvnvqnogIUgPiBrYWlnaXNodWdpc2hhXCA7CivluILorbDkvJrorbDlk6EgPiBzaGlnaWthaWdpaW5cIDsKK+S4reWkruWnlOWToeS8miA+IGNodXVvdWlpbmthaVwgOwor6IOD6YW46YGO5aSa55eHID4gaXNhbmthdGFzaG91XCA7Civpm7vmsJfpmbDmgKfluqYgPiBkZW5raWluc2VpZG9cIDsKK+eEoeiomOWQjemgkOmHkSA+IG11a2ltZWl5b2tpblwgOwor5Yip5bex5Li7576p6ICFID4gcmlrb3NodWdpc2hhXCA7Civlm73lrrblhazli5nlk6EgPiBrb2trYWtvdW11aW5cIDsKK+W4jOWcn+mhnuWFg+e0oCA+IGtpZG9ydWlnZW5zb1wgOwor6Zu75rCX5o6D6Zmk5qmfID4gZGVua2lzb3VqaWtpXCA7CivolpTolofljYHlrZflm6MgPiBiYXJhanV1amlkYW5cIDsKK+WvjOWjq+eBq+WxseW4ryA+IGZ1amlrYXphbnRhaVwgOwor5pif5bqn5oqV5b2x5qmfID4gc2VpemF0b3VlaWtpXCA7CivmrKflt57lp5Tlk6HkvJogPiBvdXNodXVpaW5rYWlcIDsKK+S4iuS9jeS6kuaPm+aApyA+IGpvdWlnb2thbnNlaVwgOwor5pS+5bCE57ea56eR5Yy7ID4gaG91c2hhc2Vua2FpXCA7Civngavngo7mlL7lsITlmaggPiBrYWVuaG91c2hha2lcIDsKK+WQiOWQjOWnlOWToeS8miA+IGdvdWRvdWlpbmthaVwgOwor6YG655Sj566h55CG5Lq6ID4gaXNhbmthbnJpbmluXCA7Civosr/mmJPkvp3lrZjluqYgPiBib3Vla2lpem9uZG9cIDsKK+WKtOWDjeWnlOWToeS8miA+IHJvdWRvdWlpbmthaVwgOwor5qih5Z6L6aOb6KGM5qmfID4gbW9rZWloaWtvdWtpXCA7CivkuIvkvY3nr4TnlofljJYgPiBrYWloYW5jaHV1a2FcIDsKK+mdnuWWtuWIqeWbo+S9kyA+IGhpZWlyaWRhbnRhaVwgOwor5Lqc54ax5biv5rCX5YCZID4gYW5ldHRhaWtpa291XCA7CivnhKHmlL/lupzkuLvnvqkgPiBtdXNlaWZ1c2h1Z2lcIDsKK+enu+WLleWbs+abuOmkqCA+IGlkb3V0b3Nob2thblwgOwor5a6f6KGM5aeU5ZOh5LyaID4gamlra291aWlua2FpXCA7CivnlZnlrojnlarpm7voqbEgPiBydXN1YmFuZGVud2FcIDsKK+aknOiojuWnlOWToeS8miA+IGtlbnRvdWlpbmthaVwgOwor6KGG6K2w6Zmi6K2w5ZOhID4gc2h1dWdpaW5naWluXCA7CivpgbjogIPlp5Tlk6HkvJogPiBzZW5rb3VpaW5rYWlcIDsKK+mhnue+qeiqnui+nuWFuCA+IHJ1aWdpZ29qaXRlblwgOwor5Y+z5pa56auY6bqX5qW9ID4gdWhvdWtvbWFnYWt1XCA7CivogqXljprmgKfpvLvngo4gPiBoaWtvdXNlaWJpZW5cIDsKK+S6nOmFuOWMlueqkue0oCA+IGFzYW5rYWNoaXNzb1wgOwor5a6J5a6a5ZCM5L2N5L2TID4gYW50ZWlkb3VpdGFpXCA7CivmloflrZfnrKblj7fns7sgPiBtb2ppZnVnb3VrZWlcIDsKK+WMu+eZgui8uOmAgeapnyA+IGlyeW91eXVzb3VraVwgOwor6YGO6YW45YyW5rC057SgID4ga2FzYW5rYXN1aXNvXCA7Civku6PnkIblp5Tku7vnirYgPiBkYWlyaWluaW5qb3VcIDsKK+S6nOWvkuW4r+awl+WAmSA+IGFrYW50YWlraWtvdVwgOwor6auY6Z+z6YOo6KiY5Y+3ID4ga291b25idWtpZ291XCA7CivkvY3nm7jlub7kvZXlraYgPiBpc291a2lrYWdha3VcIDsKK+S8iuWLouWkp+elnuWuriA+IGlzZWRhaWppbmd1dVwgOwor5LqM6YW45YyW54Kt57SgID4gbmlzYW5rYXRhbnNvXCA7CivkvY7pn7Ppg6joqJjlj7cgPiB0ZWlvbmJ1a2lnb3VcIDsKK+aEm+S7luS4u+e+qeiAhSA+IGFpdGFzaHVnaXNoYVwgOwor5Li75oSP5Li7576p6ICFID4gc2h1aXNodWdpc2hhXCA7CivmrKHphbjljJbngq3ntKAgPiBqaXNhbmthdGFuc29cIDsKK+ayu+Wuiee2reaMgeazlSA+IGNoaWFuJydpamlob3VcIDsKK+S6leaIuOerr+S8muitsCA+IGlkb2JhdGFrYWlnaVwgOwor5bqm5pWw5YiG5biD5ZuzID4gZG9zdXVidW5wdXp1XCA7Civoh6rli5Xou4rkuovmlYUgPiBqaWRvdXNoYWppa29cIDsKK+i+suWcsOWnlOWToeS8miA+IG5vdWNoaWlpbmthaVwgOwor5YK15YuZ5LiN5bGl6KGMID4gc2FpbXVmdXJpa291XCA7CivkuIDphbjljJbngq3ntKAgPiBpc3NhbmthdGFuc29cIDsKK+S7mOWKoOS+oeWApOeojiA+IGZ1a2FrYWNoaXplaVwgOwor5bi4572u5aeU5ZOh5LyaID4gam91Y2hpaWlua2FpXCA7Civlhazlronlp5Tlk6HkvJogPiBrb3VhbicnaWlua2FpXCA7CivpnZ7llrbliKnkuovmpa0gPiBoaWVpcmlqaWd5b3VcIDsKK+e1jOWWtuWQiOeQhuWMliA+IGtlaWVpZ291cmlrYVwgOwor5byB6K235L6d6aC85Lq6ID4gYmVuZ29pcmFpbmluXCA7CivliKnku5bkuLvnvqnogIUgPiByaXRhc2h1Z2lzaGFcIDsKK+Wwiueah+eOi+aUmOWktyA+IHNvbicnbm91am91aVwgOwor6Z2e6ZaL56S65ZCI5oSPID4gaGlrYWlqaWdvdWlcIDsKK+imi+anmOimi+ecn+S8vCA+IG1peW91bWltYW5lXCA7CivpmL/lkYbpmYDnvoXntYwgPiBhaG9kYXJha3lvdVwgOwor5rOV5YuZ5aeU5ZOh5LyaID4gaG91bXVpaW5rYWlcIDsKK+iEium7hOmdkum4muWTpSA+IHNla2lzZWlpbmtvXCA7CivlsYvmoLnoo4/pg6jlsYsgPiB5YW5ldXJhYmV5YVwgOwor6Zi/5aSa56aP6aKo6YKqID4gb3RhZnVrdWthemVcIDsKK+S4jemaj+aEj+mBi+WLlSA+IGZ1enVpaXVuZG91XCA7Civml6XmnKzoqp7mloflrZcgPiBuaWhvbmdvbW9qaVwgOwor5bmz5ZKM57at5oyB6LuNID4gaGVpd2FpamlndW5cIDsKK+iAs+m8u+WSveWWieenkSA+IGppYmlpbmtvdWthXCA7Civlj4LorbDpmaLorbDlk6EgPiBzYW5naWluZ2lpblwgOwor5rGf5oi45YmN5a+/5Y+4ID4gZWRvbWFlenVzaGlcIDsKK+iHquiomOa4qeW6puioiCA+IGppa2lvbmRva2VpXCA7Civmupblgpnlp5Tlk6HkvJogPiBqdW5iaWlpbmthaVwgOwor5LiL5L2N5LqS5o+b5oCnID4ga2FpZ29rYW5zZWlcIDsKK+S6nOmJm+iPr+i7n+iGjyA+IGFlbmthbmFua291XCA7CivkupznsbPliKnliqDmnYkgPiBhbWVyaWthc3VnaVwgOwor5pGp6Ki25LiN5oCd6K2wID4gbWFrYWZ1c2hpZ2lcIDsKK+eUo+WppuS6uuenkeWMuyA+IHNhbmZ1amlua2FpXCA7CivpgYvllrblp5Tlk6HkvJogPiB1bicnZWlpaW5rYWlcIDsKK+WQjOmfs+eVsOe+qeiqniA+IGRvdW9uJydpZ2lnb1wgOwor5Ye65p2l5LiN5Ye65p2lID4gZGVraWZ1ZGVraVwgOwor5b6h6auY56WW6aCt5be+ID4gb2tvc296dWtpblwgOwor5LqM6YW45YyW56Gr6buEID4gbmlzYW5rYWlvdVwgOwor5Y2B6YeN5LqM5Y2B6YeNID4gdG9laGF0YWVcIDsKK+mVt+aXpeakjeeJqSA+IGNob3VqaXRzdXNob2t1YnV0c3VcIDsKK+W+i+S7pOagvOW8jyA+IHJpdHN1cnlvdWt5YWt1c2hpa2lcIDsKK+mjn+iCieakjeeJqSA+IHNob2t1bmlrdXNob2t1YnV0c3VcIDsKK+ebtOaOpeaOpee2miA+IGNob2t1c2V0c3VzZXRzdXpva3VcIDsKK+mjn+iZq+akjeeJqSA+IHNob2t1Y2h1dXNob2t1YnV0c3VcIDsKK+S4gOaXpeS4gOaXpSA+IGljaGluaWNoaWljaGluaWNoaVwgOwor55+t5pel5qSN54mpID4gdGFuaml0c3VzaG9rdWJ1dHN1XCA7CivmqJnmupblh7rlipsgPiBoeW91anVuc2h1dHN1cnlva3VcIDsKK+S/oeiznuW/hee9sCA+IHNoaW5zaG91aGl0c3ViYXRzdVwgOwor54m55b605oq95Ye6ID4gdG9rdWNob3VjaHV1c2h1dHN1XCA7CivnnYDnlJ/mpI3niakgPiBjaGFrdXNlaXNob2t1YnV0c3VcIDsKK+Wun+eJqeWPluW8lSA+IGppdHN1YnV0c3V0b3JpaGlraVwgOwor55u05o6l5o6l6KemID4gY2hva3VzZXRzdXNlc3Nob2t1XCA7Civosrjku5jkv6HoqJcgPiBrYXNoaXRzdWtlc2hpbnRha3VcIDsKK+WNs+aXpemAn+mBlCA+IHNva3VqaXRzdXNva3V0YXRzdVwgOwor55m+55m655m+5LitID4gaHlhcHBhdHN1aHlha3VjaHV1XCA7Civlj5bnt6DlvbnkvJogPiB0b3Jpc2hpbWFyaXlha3VrYWlcIDsKK+WHuuWKm+ijhee9riA+IHNodXRzdXJ5b2t1c291Y2hpXCA7CivopIfpm5HpqqjmipggPiBmdWt1emF0c3Vrb3NzZXRzdVwgOwor54mp55qE5rWB6YCaID4gYnV0c3V0ZWtpcnl1dXRzdXVcIDsKK+WNgeW5tOS4gOaYlCA+IGp1dW5lbmhpdG9tdWthc2hpXCA7CivnpaXmnIjlkb3ml6UgPiBzaG91dHN1a2ltZWluaWNoaVwgOwor5oim55Wl54mp6LOqID4gc2Vucnlha3VidXNzaGl0c3VcIDsKK+WwseiBt+a0u+WLlSA+IHNodXVzaG9rdWthdHN1ZG91XCA7CivlvLHogonlvLfpo58gPiBqYWt1bmlrdWt5b3VzaG9rdVwgOwor5Ly457iu56iO546HID4gc2hpbnNodWt1emVpcml0c3VcIDsKK+elnuWHuumsvOayoSA+IHNoaW5zaHV0c3VraWJvdHN1XCA7CivlkLjooYDli5XniakgPiBreXV1a2V0c3Vkb3VidXRzdVwgOwor54ax5Yqb5a2m55qEID4gbmV0c3VyaWtpZ2FrdXRla2lcIDsKK+akjeeJqeaOoembhiA+IHNob2t1YnV0c3VzYWlzaHV1XCA7Civlh7rlipvnq6/lrZAgPiBzaHV0c3VyeW9rdXRhbnNoaVwgOwor5qiZ5rqW5YWl5YqbID4gaHlvdWp1bicnbnl1dXJ5b2t1XCA7CivoprPokYnmpI3niakgPiBrYW4nJ3lvdXNob2t1YnV0c3VcIDsKK+S4g+eUn+WgseWbvSA+IHNoaWNoaXNob3Vob3Vrb2t1XCA7Civlrp/nianmj4/lhpkgPiBqaXRzdWJ1dHN1YnlvdXNoYVwgOwor5q6655yf6I+M6JasID4gc2F0c3VzaGlua2luJyd5YWt1XCA7CivmqJnmnKzmir3lh7ogPiBoeW91aG9uY2h1dXNodXRzdVwgOwor57eP5ous6LOq5ZWPID4gc291a2F0c3VzaGl0c3Vtb25cIDsKK+a9ruWKm+eZuumbuyA+IGNob3VyeW9rdWhhdHN1ZGVuXCA7Civnm7TmjqXos7zlhaUgPiBjaG9rdXNldHN1a291bnl1dVwgOwor56qu5qW155uu55qEID4ga3l1dWt5b2t1bW9rdXRla2lcIDsKK+WkqeeFp+Wkp+elniA+IGFtYXRlcmFzdW9vbWlrYW1pXCA7Civos6rlrp/liZvlgaUgPiBzaGl0c3VqaXRzdWdvdWtlblwgOwor5bGA5aSW5Lit56uLID4ga3lva3VnYWljaHV1cml0c3VcIDsKK+iJsuW9qeiqv+evgCA+IHNoaWtpc2FpY2hvdXNldHN1XCA7CivolqznlKjmpI3niakgPiB5YWt1eW91c2hva3VidXRzdVwgOwor56eL6Zyc54OI5pelID4gc2h1dXNvdXJldHN1aml0c3VcIDsKK+ebtOaOpeiri+axgiA+IGNob2t1c2V0c3VzZWlreXV1XCA7CivlrpfmlZnlk7LlraYgPiBzaHV1a3lvdXRldHN1Z2FrdVwgOwor6Jas54mp5Lit5q+SID4geWFrdWJ1dHN1Y2h1dWRva3VcIDsKK+Wwj+W/g+e/vOe/vCA+IHNob3VzaGluJyd5b2t1eW9rdVwgOwor54m55Yil5bmV5YOaID4gdG9rdWJldHN1YmFrdXJ5b3VcIDsKK+WIhuijgueJqeizqiA+IGJ1bnJldHN1YnVzc2hpdHN1XCA7Civnm7TmjqXnhafmmI4gPiBjaG9rdXNldHN1c2hvdW1laVwgOwor5Zix6KiX5q665Lq6ID4gc2hva3V0YWt1c2F0c3VqaW5cIDsKK+a5v+eUn+akjeeJqSA+IHNoaXNzZWlzaG9rdWJ1dHN1XCA7CivkuIPljYHkurroqLMgPiBzaGljaGlqdXVuaW4nJ3lha3VcIDsKK+eZuueZjOeJqeizqiA+IGhhdHN1Z2FuYnVzc2hpdHN1XCA7Civnmb3plbfpoIjpr6ggPiBzaGlyb25hZ2FzdWt1amlyYVwgOwor6Kaz6LOe5qSN54mpID4ga2Fuc2hvdXNob2t1YnV0c3VcIDsKK+W/g+elnuWWquWksSA+IHNoaW5zaGluc291c2hpdHN1XCA7CivpgJrkv5flsI/oqqwgPiB0c3V1em9rdXNob3VzZXRzdVwgOwor55m+5oim55m+5YudID4gaHlha3VzZW5oeWFrdXNob3VcIDsKK+aPkOeBr+ihjOWIlyA+IGNob3VjaGluZ3lvdXJldHN1XCA7CivlpLHmpa3lr77nrZYgPiBzaGl0c3VneW91dGFpc2FrdVwgOwor5bCP5b+D57+844CFID4gc2hvdXNoaW4nJ3lva3V5b2t1XCA7Civlt6blgbTpgJrooYwgPiBoaWRhcmlnYXdhdHN1dWtvdVwgOwor5pWR5Ye65L2c5oimID4ga3l1dXNodXRzdXNha3VzZW5cIDsKK+WupOWGheijhemjviA+IHNoaXRzdW5haXNvdXNob2t1XCA7Civnm7TmjqXnq7bkuokgPiBjaG9rdXNldHN1a3lvdXNvdVwgOwor5pet5pel5piH5aSpID4ga3lva3VqaXRzdXNob3V0ZW5cIDsKK+iYmuiLlOakjeeJqSA+IHNlbnRhaXNob2t1YnV0c3VcIDsKK+eglOeptuWupOajnyA+IGtlbmt5dXVzaGl0c3V0b3VcIDsKK+ilv+WBtOiruOWbvSA+IG5pc2hpZ2F3YXNob2tva3VcIDsKK+iEiuakjuWLleeJqSA+IHNla2l0c3VpZG91YnV0c3VcIDsKK+ahkeWOn+ahkeWOnyA+IGt1d2FiYXJha3V3YWJhcmFcIDsKK+S6q+alveeUn+a0uyA+IGt5b3VyYWt1c2Vpa2F0c3VcIDsKK+WFpeWKm+mbu+a1gSA+IG55dXVyeW9rdWRlbnJ5dXVcIDsKK+WNgeW5tOS4gOaXpSA+IGp1dW5lbicnaWNoaWppdHN1XCA7Civpoqjkv5flsI/oqqwgPiBmdXV6b2t1c2hvdXNldHN1XCA7CivkvY7ooYDlnKfnl4cgPiB0ZWlrZXRzdWF0c3VzaG91XCA7CivomZrjgIXlrp/jgIUgPiBreW9reW9qaXRzdWppdHN1XCA7CivmioDooZPljZTlipsgPiBnaWp1dHN1a3lvdXJ5b2t1XCA7CivnqbrkuK3ooZ3nqoEgPiBrdXVjaHV1c2hvdXRvdHN1XCA7CivljYPnr4fkuIDlvosgPiBzZW5wZW4nJ2ljaGlyaXRzdVwgOwor5paZ55CG5pWZ5a6kID4gcnlvdXJpa3lvdXNoaXRzdVwgOwor5pys5qC85bCP6KqsID4gaG9ua2FrdXNob3VzZXRzdVwgOwor5Zu956uL5YqH5aC0ID4ga29rdXJpdHN1Z2VraWpvdVwgOwor6I2J6aOf5YuV54mpID4gc291c2hva3Vkb3VidXRzdVwgOwor55u05o6l6YG45oyZID4gY2hva3VzZXRzdXNlbmt5b1wgOwor55Sf6ICF5b+F5ruFID4gc2hvdWphaGl0c3VtZXRzdVwgOwor54ax5biv5qSN54mpID4gbmV0dGFpc2hva3VidXRzdVwgOwor5p2+5LiL6Zu75belID4gbWF0c3VzaGl0YWRlbmtvdVwgOwor5ZWG5qWt566X6KGTID4gc2hvdWd5b3VzYW5qdXRzdVwgOwor5oim5oim5qCX5qCXID4gc2Vuc2Vucml0c3VyaXRzdVwgOwor5o+u55m654mp6LOqID4ga2loYXRzdWJ1c3NoaXRzdVwgOwor55m65YWJ5qSN54mpID4gaGFra291c2hva3VidXRzdVwgOwor6Zu75Yqb5L6b57WmID4gZGVucnlva3VreW91a3l1dVwgOwor5oim55Wl54iG5pKDID4gc2Vucnlha3ViYWt1Z2VraVwgOwor5aaK5aig5Lit57W2ID4gbmluc2hpbmNodXV6ZXRzdVwgOwor55u05o6l5Lya6KuHID4gY2hva3VzZXRzdWthaWRhblwgOwor5Ymy5aKX6LOD6YeRID4gd2FyaW1hc2hpY2hpbmdpblwgOwor5L2c5LuY6Z2i56mNID4gc2FrdWR6dWtlbWVuc2VraVwgOwor5pel54us5Y2U5LyaID4gbmljaGlkb2t1a3lvdWthaVwgOwor5pel5bi455Sf5rS7ID4gbmljaGlqb3VzZWlrYXRzdVwgOwor5q2z5YWl5q2z5Ye6ID4gc2Fpbnl1dXNhaXNodXRzdVwgOwor54m55Yil5oCl6KGMID4gdG9rdWJldHN1a3l1dWtvdVwgOwor6Lui5Ye66Ki85piOID4gdGVuc2h1dHN1c2hvdW1laVwgOwor5pWR6I2S5L2c54mpID4ga3l1dWtvdXNha3Vtb3RzdVwgOwor5Zyw54ax55m66Zu7ID4gY2hpbmV0c3VoYXRzdWRlblwgOwor6Jas54mp55mC5rOVID4geWFrdWJ1dHN1cnlvdWhvdVwgOwor6aOf57On6YWN57WmID4gc2hva3VyeW91aGFpa3l1dVwgOwor55u057O76KGA5pePID4gY2hva2tlaWtldHN1em9rdVwgOwor6LOq5ZWP55So57SZID4gc2hpdHN1bW9uJyd5b3VzaGlcIDsKK+eLrOi6q+eUn+a0uyA+IGRva3VzaGluc2Vpa2F0c3VcIDsKK+itpuWvn+W9k+WxgCA+IGtlaXNhdHN1dG91a3lva3VcIDsKK+ebtOaOpeS8neafkyA+IGNob2t1c2V0c3VkZW5zZW5cIDsKK+mdkuepuuaVmeWupCA+IGFvem9yYWt5b3VzaGl0c3VcIDsKK+mdnuWroeWHuuWtkCA+IGhpY2hha3VzaHV0c3VzaGlcIDsKK+eUn+a0u+anmOW8jyA+IHNlaWthdHN1eW91c2hpa2lcIDsKK+eJh+mBk+aWmemHkSA+IGthdGFtaWNoaXJ5b3VraW5cIDsKK+WOn+ayuea1geWHuiA+IGdlbicneXVyeXV1c2h1dHN1XCA7CivnlaXlvI/lkb3ku6QgPiByeWFrdXNoaWtpbWVpcmVpXCA7CivoirjooZPmtLvli5UgPiBnZWlqdXRzdWthdHN1ZG91XCA7CivmrbTlj7Llk7LlraYgPiByZWtpc2hpdGV0c3VnYWt1XCA7CivkuIvnlLroqIDokYkgPiBzaGl0YW1hY2hpa290b2JhXCA7Civnt4rmgKXnnYDpmbggPiBraW5reXV1Y2hha3VyaWt1XCA7CivlhrfooYDli5XniakgPiByZWlrZXRzdWRvdWJ1dHN1XCA7Civlj5bmibHms6jmhI8gPiB0b3JpYXRzdWthaWNodXVpXCA7CivlibLlopfmlpnph5EgPiB3YXJpbWFzaGlyeW91a2luXCA7Civnm7TmiKrnsKHmmI4gPiBjaG9rdXNldHN1a2FubWVpXCA7Civpu4TpgZPlkInml6UgPiBrb3Vkb3VraWNoaW5pY2hpXCA7CivkuIDop6bljbPnmbogPiBpc3Nob2t1c29rdWhhdHN1XCA7CivljbPml6XplovnpaggPiBzb2t1aml0c3VrYWloeW91XCA7Civlrp/os6ros4Pph5EgPiBqaXNzaGl0c3VjaGluZ2luXCA7CivmlZnppIrlsI/oqqwgPiBreW91eW91c2hvdXNldHN1XCA7Civmir3osaHoirjooZMgPiBjaHV1c2hvdWdlaWp1dHN1XCA7Civnm7TmjqXmlK/phY0gPiBjaG9rdXNldHN1c2hpaGFpXCA7Civpm4blm6PlsLHogbcgPiBzaHV1ZGFuc2h1dXNob2t1XCA7CivmsLTnlJ/mpI3niakgPiBzdWlzZWlzaG9rdWJ1dHN1XCA7Civogbfli5nos6rllY8gPiBzaG9rdW11c2hpdHN1bW9uXCA7Civkub7nlJ/mpI3niakgPiBrYW5zZWlzaG9rdWJ1dHN1XCA7Civlrr/ms4roqK3lgpkgPiBzaHVrdWhha3VzZXRzdWJpXCA7Civlm73nq4vlpKflraYgPiBrb2t1cml0c3VkYWlnYWt1XCA7CivkuIDoqIDkuozoqIAgPiBoaXRva290b2Z1dGFrb3RvXCA7CivmraPpnaLooZ3nqoEgPiBzaG91bWVuc2hvdXRvdHN1XCA7CivkuIDml6XljYPnp4sgPiBpY2hpbmljaGlzZW5zaHV1XCA7CivllYbmpa3nm67nmoQgPiBzaG91Z3lvdW1va3V0ZWtpXCA7CivopIflvI/lrabntJogPiBmdWt1c2hpa2lnYWtreXV1XCA7CivljZLmpa3oqLzmm7ggPiBzb3RzdWd5b3VzaG91c2hvXCA7CivnhLzogonlrprpo58gPiB5YWtpbmlrdXRlaXNob2t1XCA7CivooajpnaLlvLXlipsgPiBoeW91bWVuY2hvdXJ5b2t1XCA7CivnibnliKXnlarntYQgPiB0b2t1YmV0c3ViYW5ndW1pXCA7Civlrabnv5Log73lipsgPiBnYWt1c2h1dW5vdXJ5b2t1XCA7Civkv6HnlKjlj5blvJUgPiBzaGluJyd5b3V0b3JpaGlraVwgOwor6auY6KGA5Zyn55eHID4ga291a2V0c3VhdHN1c2hvdVwgOwor5Lit5b+D5Lq654mpID4gY2h1dXNoaW5qaW5idXRzdVwgOwor6aOf5paZ5ZOB5ZWGID4gc2hva3VyeW91aGluc2hvdVwgOwor6LaF54++5a6f55qEID4gY2hvdWdlbmppdHN1dGVraVwgOwor5Y2z6Lqr5oiQ5LuPID4gc29rdXNoaW5qb3VidXRzdVwgOwor5Zu95aSW6ISx5Ye6ID4ga29rdWdhaWRhc3NodXRzdVwgOwor55u05o6l5Zue562UID4gY2hva3VzZXRzdWthaXRvdVwgOwor5YWI54mp5Y+W5byVID4gc2FraW1vbm90b3JpaGlraVwgOwor5q205Y+y5bCP6KqsID4gcmVraXNoaXNob3VzZXRzdVwgOwor54Wu5rK45raI5q+SID4gc2hhZnV0c3VzaG91ZG9rdVwgOwor5rW35aSW6YCy5Ye6ID4ga2FpZ2Fpc2hpbnNodXRzdVwgOwor5rC05Yqb55m66Zu7ID4gc3Vpcnlva3VoYXRzdWRlblwgOwor5b2i6LOq5bCO5YWlID4ga2Vpc2hpdHN1ZG91bnl1dVwgOwor55u05o6l6Zai5L+CID4gY2hva3VzZXRzdWthbmtlaVwgOwor55u05o6l57Ch5piOID4gY2hva3VzZXRzdWthbm1laVwgOwor5oyv5pu/5LyR5pelID4gZnVyaWthZWt5dXVqaXRzdVwgOwor5Y2D57eo5LiA5b6LID4gc2VucGVuJydpY2hpcml0c3VcIDsKK+mDteS+v+Wwj+WMhSA+IHl1dWJpbmtvZHp1dHN1bWlcIDsKK+WNmOS4gOelnuaVmSA+IHRhbicnaXRzdXNoaW5reW91XCA7CivomZrlvLHkvZPos6ogPiBreW9qYWt1dGFpc2hpdHN1XCA7CivohIrntKLli5XniakgPiBzZWtpc2FrdWRvdWJ1dHN1XCA7CivmrablipvooZ3nqoEgPiBidXJ5b2t1c2hvdXRvdHN1XCA7CivnhrHmoLjlj43lv5wgPiBuZXRzdWtha3VoYW4nJ25vdVwgOwor56iu5a2Q5qSN54mpID4gc2h1c2hpc2hva3VidXRzdVwgOwor55u05o6l6KGM5YuVID4gY2hva3VzZXRzdWtvdWRvdVwgOwor5rGC6IG35bqD5ZGKID4ga3l1dXNob2t1a291a29rdVwgOwor5a6f6Ki85ZOy5a2mID4gamlzc2hvdXRldHN1Z2FrdVwgOwor6Iqx5auB6Iqx5am/ID4gaGFuYXlvbWVoYW5hbXVrb1wgOwor5aSn5ZCN6KGM5YiXID4gZGFpbXlvdWd5b3VyZXRzdVwgOwor6auY5bGx5qSN54mpID4ga291emFuc2hva3VidXRzdVwgOwor54m55Yil5paZ6YeRID4gdG9rdWJldHN1cnlvdWtpblwgOwor5Lit6ZaT5bCP6KqsID4gY2h1dWthbnNob3VzZXRzdVwgOwor55Sf54mp5r+D57iuID4gc2VpYnV0c3Vub3VzaHVrdVwgOwor5YWl5Yqb5L+h5Y+3ID4gbnl1dXJ5b2t1c2hpbmdvdVwgOwor5b2r5Yi75a6k5bqnID4gY2hvdWtva3VzaGl0c3V6YVwgOwor56K6546H5qiZ5pysID4ga2FrdXJpdHN1aHlvdWhvblwgOwor5bee56uL5aSn5a2mID4gc2h1dXJpdHN1ZGFpZ2FrdVwgOwor5aSa6IKJ5qSN54mpID4gdGFuaWt1c2hva3VidXRzdVwgOwor54ax5Lyd5bCO546HID4gbmV0c3VkZW5kb3VyaXRzdVwgOwor5qSN54mp5Lq66ZaTID4gc2hva3VidXRzdW5pbmdlblwgOwor6Jma6Jma5a6f5a6fID4ga3lva3lvaml0c3VqaXRzdVwgOwor54mp54mp5Lqk5o+bID4gYnV0c3VidXRzdWtvdWthblwgOwor5a6f5Yqb6KGM5L2/ID4gaml0c3VyeW9rdWtvdXNoaVwgOwor5Z6L5byP6Ki85piOID4ga2F0YXNoaWtpc2hvdW1laVwgOwor6YCj5Yud6KSH5byPID4gcmVuc2hvdWZ1a3VzaGlraVwgOwor55u05o6l5Y2U6K2wID4gY2hva3VzZXRzdWt5b3VnaVwgOwor572q6Zqc5raI5ruFID4gemFpc2hvdXNob3VtZXRzdVwgOwor5pmp55Sf5qSN54mpID4gYmFuc2Vpc2hva3VidXRzdVwgOwor5r2c5Zyo5aSx5qWtID4gc2VuemFpc2hpdHN1Z3lvdVwgOwor55u05o6l5q+U6LyDID4gY2hva3VzZXRzdWhpa2FrdVwgOwor5qC45oqR5q2i5YqbID4ga2FrdXlva3VzaGlyeW9rdVwgOwor5LiH54mp5rWB6LuiID4gYmFuYnV0c3VyeXV1dGVuXCA7Civou5/lvI/luq3nkIMgPiBuYW5zaGlraXRlaWt5dXVcIDsKK+S/rumBk+eUn+a0uyA+IHNodXVkb3VzZWlrYXRzdVwgOwor56eY5a+G6K2m5a+fID4gaGltaXRzdWtlaXNhdHN1XCA7Civms5XkurrmoKrkuLsgPiBob3VqaW5rYWJ1bnVzaGlcIDsKK+mWk+aOpeeFp+aYjiA+IGthbnNldHN1c2hvdW1laVwgOwor57Sb6aqo56CV6LqrID4gZnVua290c3VzYWlzaGluXCA7CivkuKHmo7Lli5XniakgPiByeW91c2VpZG91YnV0c3VcIDsKK+mbhue0hOi+sualrSA+IHNodXV5YWt1bm91Z3lvdVwgOwor5buD55a+5p2h5Lu2ID4gaGFpc2hpdHN1am91a2VuXCA7Civog73njofos4Pph5EgPiBub3VyaXRzdWNoaW5naW5cIDsKK+WNmOWIgOebtOWFpSA+IHRhbnRvdWNob2t1bnl1dVwgOwor5LiJ5paH5bCP6KqsID4gc2FubW9uc2hvdXNldHN1XCA7CivnrYvogonms6jlsIQgPiBraW4nJ25pa3VjaHV1c2hhXCA7Civlm5vpgJrlhavpgZQgPiBzaGl0c3V1aGF0dGF0c3VcIDsKK+WJsuWil+mBi+izgyA+IHdhcmltYXNoaXVuY2hpblwgOwor5Y2X5qW16Kaz5risID4gbmFua3lva3VrYW5zb2t1XCA7CivkuIDnm67nnq3nhLYgPiBpY2hpbW9rdXJ5b3V6ZW5cIDsKK+e0oOS6uuS4i+WuvyA+IHNoaXJvdXRvZ2VzaHVrdVwgOwor5a2m5qCh57Wm6aOfID4gZ2Fra291a3l1dXNob2t1XCA7CivplpPmjqXmkq7lvbEgPiBrYW5zZXRzdXNhdHN1ZWlcIDsKK+eZveW3neWknOiIuSA+IHNoaXJha2F3YXlvZnVuZVwgOwor54m5562G5aSn5pu4ID4gdG9rdWhpdHN1dGFpc2hvXCA7Civpo5/lk4Hlt6Xmpa0gPiBzaG9rdWhpbmtvdWd5b3VcIDsKK+ajmOearuWLleeJqSA+IGt5b2t1aGlkb3VidXRzdVwgOwor5oCq5Yqb5Lmx56WeID4ga2Fpcnlva3VyYW5zaGluXCA7CivkurrnlJ/lk7LlraYgPiBqaW5zZWl0ZXRzdWdha3VcIDsKK+aWsOWpmueUn+a0uyA+IHNoaW5rb25zZWlrYXRzdVwgOwor5YWs6ZaL5YWl5pytID4ga291a2Fpbnl1dXNhdHN1XCA7CivmoKrlvI/luILloLQgPiBrYWJ1c2hpa2lzaGlqb3VcIDsKK+WtpualreaIkOe4viA+IGdha3VneW91c2Vpc2VraVwgOwor54mp6LOq5ZCN6KmeID4gYnVzc2hpdHN1bWVpc2hpXCA7Civnn63nt6jlsI/oqqwgPiB0YW5wZW5zaG91c2V0c3VcIDsKK+WVhualreaVsOWtpiA+IHNob3VneW91c3V1Z2FrdVwgOwor6ISx5Ye66YCf5bqmID4gZGFzc2h1dHN1c29rdWRvXCA7CivnibnliKXnt4/kvJogPiB0b2t1YmV0c3Vzb3VrYWlcIDsKK+esrOS4gOalveeroCA+IGRhaWljaGlnYWt1c2hvdVwgOwor57Si5p2h6YmE6YGTID4gc2FrdWpvdXRldHN1ZG91XCA7Civou43oqJjnianoqp4gPiBndW5raW1vbm9nYXRhcmlcIDsKK+WOs+ato+S4reeriyA+IGdlbnNlaWNodXVyaXRzdVwgOwor5LiA5pel5LiA5aScID4gaWNoaW5pY2hpaWNoaXlhXCA7CivpmbDpmbDmu4Xmu4UgPiBpbicnaW5tZXRzdW1ldHN1XCA7CivlsLHogbfmtarkurogPiBzaHV1c2hva3Vyb3VuaW5cIDsKK+e0lOa9lOaVmeiCsiA+IGp1bmtldHN1a3lvdWlrdVwgOwor5a6X5pWZ5pS56Z2pID4gc2h1dWt5b3VrYWlrYWt1XCA7CivmlK/pm6Lmu4Xoo4IgPiBzaGlyaW1ldHN1cmV0c3VcIDsKK+WbveawkeWuv+iIjiA+IGtva3VtaW5zaHVrdXNoYVwgOwor54us56uL5a6j6KiAID4gZG9rdXJpdHN1c2VuZ2VuXCA7Civlia/ohY7nmq7os6ogPiBmdWt1amluaGlzaGl0c3VcIDsKK+WbveawkeeUn+a0uyA+IGtva3VtaW5zZWlrYXRzdVwgOwor56mN6LyJ6IO95YqbID4gc2VraXNhaW5vdXJ5b2t1XCA7Civlj47lrrnog73lipsgPiBzaHV1eW91bm91cnlva3VcIDsKK+iFsOmrmOmanOWtkCA+IGtvc2hpZGFrYXNob3VqaVwgOwor5bm06aCD5pel6aCDID4gdG9zaGlnb3JvaGlnb3JvXCA7CivpgJrkv5fmloflraYgPiB0c3V1em9rdWJ1bmdha3VcIDsKK+WEquWFiOagquS4uyA+IHl1dXNlbmthYnVudXNoaVwgOwor5YaZ55yf5ris6YePID4gc2hhc2hpbnNva3VyeW91XCA7CivkvIHmpa3kvZPos6ogPiBraWd5b3V0YWlzaGl0c3VcIDsKK+eMqueqgeeMm+mAsiA+IGNob3RvdHN1bW91c2hpblwgOwor5a2m55Sf5Ymy5byVID4gZ2FrdXNlaXdhcmliaWtpXCA7CivkvqHmoLzlnKflipsgPiBrYWtha3VhdHN1cnlva3VcIDsKK+ihqOePvuW9ouW8jyA+IGh5b3VnZW5rZWlzaGlraVwgOwor5Ye66aGY5pu46aGeID4gc2h1dHN1Z2Fuc2hvcnVpXCA7CivlrpfmlZnmlZnogrIgPiBzaHV1a3lvdWt5b3Vpa3VcIDsKK+S9meijlee2vee2vSA+IHlveXV1c2hha3VzaGFrdVwgOwor55+l55qE6IO95YqbID4gY2hpdGVraW5vdXJ5b2t1XCA7Civlj43pqqjnsr7npZ4gPiBoYW5rb3RzdXNlaXNoaW5cIDsKK+ato+eiuueIhuaSgyA+IHNlaWtha3ViYWt1Z2VraVwgOwor5pel6Iux6YCa6KizID4gbmljaGllaXRzdXV5YWt1XCA7Civpo5/niannuYrntq0gPiBzaG9rdW1vdHN1c2VuJydpXCA7CivnrpfooZPntJrmlbAgPiBzYW5qdXRzdWt5dXVzdXVcIDsKK+WFpeWKm+ijhee9riA+IG55dXVyeW9rdXNvdWNoaVwgOwor6IG35qWt6KiT57e0ID4gc2hva3VneW91a3VucmVuXCA7CivmjqLlgbXlsI/oqqwgPiB0YW50ZWlzaG91c2V0c3VcIDsKK+eUn+a0u+WPjeW/nCA+IHNlaWthdHN1aGFuJydub3VcIDsKK+advuS4i+mbu+WZqCA+IG1hdHN1c2hpdGFkZW5raVwgOwor55+l6K2Y6ZqO57SaID4gY2hpc2hpa2lrYWlreXV1XCA7CivmoKrlvI/kvJrnpL4gPiBrYWJ1c2hpa2lnYWlzaGFcIDsKK+S4gOaZgumgkOaJgCA+IGljaGlqaWF6dWthcmlqb1wgOwor5ouh5aSn6Kej6YeIID4ga2FrdWRhaWthaXNoYWt1XCA7Civlk4Hos6rkv53oqLwgPiBoaW5zaGl0c3Vob3Nob3VcIDsKK+S/oeS7sOWRiueZvSA+IHNoaW5rb3Vrb2t1aGFrdVwgOwor5qC854mp6Ie055+lID4ga2FrdWJ1dHN1Y2hpY2hpXCA7CivnsbPnqYDpgJrluLMgPiBiZWlrb2t1dHN1dWNob3VcIDsKK+Wun+eUqOaWsOahiCA+IGppdHN1eW91c2hpbicnYW5cIDsKK+W/g+i6q+manOWusyA+IHNoaW5zaGluc2hvdWdhaVwgOwor6YCf5oim5Y2z5rG6ID4gc29rdXNlbnNva2tldHN1XCA7CivljJblrablkLjnnYAgPiBrYWdha3VreXV1Y2hha3VcIDsKK+Wbm+aWueWxseipsSA+IHlvbW95YW1hYmFuYXNoaVwgOwor55qH5a6k5YW456+EID4ga291c2hpdHN1dGVucGFuXCA7CivnibnliKXlm73kvJogPiB0b2t1YmV0c3Vrb2trYWlcIDsKK+S4gOWdquacrOekviA+IGhpdG90c3Vib2hvbnNoYVwgOwor5pep5Y+j6KiA6JGJID4gaGF5YWt1Y2hpa290b2JhXCA7Civmt7HlsbHlub3osLcgPiBzaGluemFuJyd5dXVrb2t1XCA7CivpgJrllYbnlKPmpa0gPiB0c3V1c2hvdXNhbmd5b3VcIDsKK+W7uueviemdouepjSA+IGtlbmNoaWt1bWVuc2VraVwgOwor55uk5qC56Yyv56+AID4gYmFua29uc2FrdXNldHN1XCA7CivlhoXnmoTnlJ/mtLsgPiBuYWl0ZWtpc2Vpa2F0c3VcIDsKK+enmOWvhua8j+a0qSA+IGhpbWl0c3Vyb3VzZXRzdVwgOwor546J55+z5re35reGID4gZ3lva3VzZWtpa29ua291XCA7Civpm5vpkZHliKXogIUgPiBoaW5ha2FuYmV0c3VzaGFcIDsKK+e1gui6q+W5tOmHkSA+IHNodXVzaGluJyduZW5raW5cIDsKK+eyiemqqOeglei6qyA+IGZ1bmtvdHN1c2Fpc2hpblwgOwor5Lq654mp5a+45o+PID4gamluYnV0c3VzdW5ieW91XCA7CivllYblk4Hnm67pjLIgPiBzaG91aGlubW9rdXJva3VcIDsKK+Wklumjn+eUo+alrSA+IGdhaXNob2t1c2FuZ3lvdVwgOwor6LOH5rqQ56+A57SEID4gc2hpZ2Vuc2V0c3V5YWt1XCA7CivpnZnohIjms6jlsIQgPiBqb3VteWFrdWNodXVzaGFcIDsKK+WGkumZuuWwj+iqrCA+IGJvdWtlbnNob3VzZXRzdVwgOwor54ax56Gs5YyW54mpID4gbmV0c3Vrb3VrYWJ1dHN1XCA7Civlm73mnInpiYTpgZMgPiBrb2t1eXV1dGV0c3Vkb3VcIDsKK+eiuueOh+WkieaVsCA+IGtha3VyaXRzdWhlbnN1dVwgOwor6ZaL55m66KiI55S7ID4ga2FpaGF0c3VrZWlrYWt1XCA7CivmnInlrrPnianos6ogPiB5dXVnYWlidXNzaGl0c3VcIDsKK+aDheeKtumFjOmHjyA+IGpvdWpvdXNoYWt1cnlvdVwgOwor5L6155Wl5oim5LqJID4gc2hpbnJ5YWt1c2Vuc291XCA7CivlhpLpoK3pmbPov7AgPiBib3V0b3VjaGluanV0c3VcIDsKK+eEvOi6q+iHquauuiA+IHNob3VzaGluamlzYXRzdVwgOwor5aSn5a6J5ZCJ5pelID4gdGFpYW5raWNoaW5pY2hpXCA7Civnn6/mraPoppblipsgPiBreW91c2Vpc2hpcnlva3VcIDsKK+eglOeptumWi+eZuiA+IGtlbmt5dXVrYWloYXRzdVwgOwor6KuH5ZCI5YWl5pytID4gZGFuZ291bnl1dXNhdHN1XCA7CivpmbjnlJ/li5XniakgPiByaWt1c2VpZG91YnV0c3VcIDsKK+WNl+WkquW5s+a0iyA+IG1pbmFtaXRhaWhlaXlvdVwgOwor5a2m55Sf55Sf5rS7ID4gZ2FrdXNlaXNlaWthdHN1XCA7CivvvJHvvJHvvJnnlaogPiBoeWFrdWp1dWt5dXViYW5cIDsKK+e1kOWQiOe1hOe5lCA+IGtldHN1Z291c29zaGlraVwgOwor5b2r5b+D6Y+k6aqoID4gY2hvdXNoaW5ydWtvdHN1XCA7CivnuIHml6XllYbkurogPiBlbicnbmljaGlzaG91bmluXCA7Civlv4PnpZ7ogJflvLEgPiBzaGluc2hpbm1vdWpha3VcIDsKK+efreacn+iyuOS7mCA+IHRhbmtpa2FzaGl0c3VrZVwgOwor546J55+z5re35LqkID4gZ3lva3VzZWtpa29ua291XCA7Civlt6bkuK3mi6zlvKcgPiBoaWRhcmljaHV1a2Fra29cIDsKK+m7kuiJsuS6uueoriA+IGtva3VzaG9rdWppbnNodVwgOwor5YWs5byP55m66KGoID4ga291c2hpa2loYXBweW91XCA7Civou5/pqqjntYTnuZQgPiBuYW5rb3RzdXNvc2hpa2lcIDsKK+aYn+mWk+eJqeizqiA+IHNlaWthbmJ1c3NoaXRzdVwgOwor55Sf5rav5a2m57+SID4gc2hvdWdhaWdha3VzaHV1XCA7Civnn6XorZjooajnj74gPiBjaGlzaGlraWh5b3VnZW5cIDsKK+a6kOawj+eJqeiqniA+IGdlbmppbW9ub2dhdGFyaVwgOwor5LiD6Lui5YWr5YCSID4gc2hpY2hpdGVuYmF0dG91XCA7Civnmb3oibLkurrnqK4gPiBoYWt1c2hva3VqaW5zaHVcIDsKK+W5s+WutueJqeiqniA+IGhlaWtlbW9ub2dhdGFyaVwgOwor5L2Z6KOV57a944CFID4geW95dXVzaGFrdXNoYWt1XCA7Civmi5Lntbblj43lv5wgPiBreW96ZXRzdWhhbicnbm91XCA7CivnibnliKXlvoXpgYcgPiB0b2t1YmV0c3V0YWlndXVcIDsKK+mdkuWkqeeZveaXpSA+IHNlaXRlbmhha3VqaXRzdVwgOwor5aSp572w6Ka/6Z2iID4gdGVuYmF0c3V0ZWtpbWVuXCA7CivooYDml4/ntZDlqZogPiBrZXRzdXpva3VrZWtrb25cIDsKK+eZuuiJsuePvuWDjyA+IGhhc3Nob2t1Z2Vuc2hvdVwgOwor5YWl5pyt5L6h5qC8ID4gbnl1dXNhdHN1a2FrYWt1XCA7CivpgKPnq4vlhoXplqMgPiByZW5yaXRzdW5haWtha3VcIDsKK+iFueW8j+WRvOWQuCA+IGZ1a3VzaGlraWtva3l1dVwgOwor5L2O6ZaL55m65Zu9ID4gdGVpa2FpaGF0c3Vrb2t1XCA7Civou73lppnmtJLohLEgPiBrZWlteW91c2hhZGF0c3VcIDsKK+mLvOe0oumJhOmBkyA+IGtvdXNha3V0ZXRzdWRvdVwgOwor54++5pyJ5Yui5YqbID4gZ2VuJyd5dXVzZWlyeW9rdVwgOwor6YGK5LyR5pa96KitID4geXV1a3l1dXNoaXNldHN1XCA7Civot7Pouo3mjK/li5UgPiBjaG91eWFrdXNoaW5kb3VcIDsKK+i2heeEtuWGhemWoyA+IGNob3V6ZW4nJ25haWtha3VcIDsKK+Wun+alreWtpuagoSA+IGppdHN1Z3lvdWdha2tvdVwgOwor56eB56uL5aSn5a2mID4gc2hpcml0c3VkYWlnYWt1XCA7CivmnIDkvY7ooYDlnKcgPiBzYWl0ZWlrZXRzdWF0c3VcIDsKK+WwiuWxnuauuuS6uiA+IHNvbnpva3VzYXRzdWppblwgOwor5Lit56uL5Zyw5bivID4gY2h1dXJpdHN1Y2hpdGFpXCA7CivkuKHmpbXlnLDmlrkgPiByeW91a3lva3VjaGlob3VcIDsKK+mAo+e2muauuuS6uiA+IHJlbnpva3VzYXRzdWppblwgOwor5Z6C55u05YiG5qWtID4gc3VpY2hva3VidW5neW91XCA7CivmtJfmv6/nn7PpubggPiBzZW50YWt1c2V0c3VrZW5cIDsKK+mXmOeXheeUn+a0uyA+IHRvdWJ5b3VzZWlrYXRzdVwgOwor5ZCM5paH6YCa6YGUID4gZG91YnVudHN1dXRhdHN1XCA7Civlhobou6Lmu5HohLEgPiBlbnRlbmthdHN1ZGF0c3VcIDsKK+eUn+eJqeW3peWtpiA+IHNlaWJ1dHN1a291Z2FrdVwgOwor5LiA5b6L5rib5Y+NID4gaWNoaXJpdHN1Z2VudGFuXCA7Civkurrlk6HnuK7lsJEgPiBqaW4nJ2luc2h1a3VzaG91XCA7Civni6znq4vlpInmlbAgPiBkb2t1cml0c3VoZW5zdXVcIDsKK+S6uuWumuizquWVjyA+IGppbnRlaXNoaXRzdW1vblwgOwor5paw57SE6IGW5pu4ID4gc2hpbicneWFrdXNlaXNob1wgOwor55Sf5q665LiO5aWqID4gc2Vpc2F0c3V5b2RhdHN1XCA7Civmrr/mp5jku5XkuosgPiB0b25vc2FtYXNoaWdvdG9cIDsKK+WPsOaJgOeUqOWTgSA+IGRhaWRva29yb3lvdWhpblwgOwor6LK06YeR5bGe5Y24ID4ga2lraW56b2t1b3Jvc2hpXCA7CivkuIrmlrnotIXlha0gPiBrYW1pZ2F0YXplaXJva3VcIDsKK+ihgOaXj+mWouS/giA+IGtldHN1em9rdWthbmtlaVwgOwor5a2Q5a6u5b6M5bGIID4gc2hpa3l1dWtvdWt1dHN1XCA7CivljZflvoHljJfkvJAgPiBuYW5zZWlob2t1YmF0c3VcIDsKK+ecn+Wun+S4gOi3ryA+IHNoaW5qaXRzdWljaGlyb1wgOwor54m55Yil6YGL6LODID4gdG9rdWJldHN1dW5jaGluXCA7CivpgJrluLjmiKblipsgPiB0c3V1am91c2Vucnlva3VcIDsKK+WIqeWus+W+l+WksSA+IHJpZ2FpdG9rdXNoaXRzdVwgOwor5rWF6YWM5L2O5ZSxID4gc2Vuc2hha3V0ZWlzaG91XCA7Civoo7jlrZDmpI3niakgPiByYXNoaXNob2t1YnV0c3VcIDsKK+WAn+eUqOiovOabuCA+IHNoYWt1eW91c2hvdXNob1wgOwor5YWx5pyJ57WQ5ZCIID4ga3lvdXl1dWtldHN1Z291XCA7Civlm57mipjpoJjln58gPiBrYWlzZXRzdXJ5b3Vpa2lcIDsKK+iBt+alreaEj+itmCA+IHNob2t1Z3lvdWlzaGlraVwgOwor5Y2Y5byP5a2m57SaID4gdGFuc2hpa2lnYWtreXV1XCA7CivlrabooZPpm5HoqowgPiBnYWt1anV0c3V6YXNzaGlcIDsKK+WNkualreippumokyA+IHNvdHN1Z3lvdXNoaWtlblwgOwor5YSq5oCn5b2i6LOqID4geXV1c2Vpa2Vpc2hpdHN1XCA7CivmiJDplbfmm7Lnt5ogPiBzZWljaG91a3lva3VzZW5cIDsKK+eZvuWFq+WNgeW6piA+IGh5YWt1aGFjaGlqdXVkb1wgOwor5aSn5ZKM5pKr5a2QID4geWFtYXRvbmFkZXNoaWtvXCA7Civlpb3oibLmloflraYgPiBrb3VzaG9rdWJ1bmdha3VcIDsKK+mciumtgua2iOa7hSA+IHJlaWtvbnNob3VtZXRzdVwgOwor54m55Yil6YWN5b2TID4gdG9rdWJldHN1aGFpdG91XCA7Civpoqjlipvpmo7ntJogPiBmdXVyeW9rdWthaWt5dXVcIDsKK+a1geS9k+WKm+WtpiA+IHJ5dXV0YWlyaWtpZ2FrdVwgOwor5Yqj5byx5oSP6K2YID4gcmV0c3VqYWt1aXNoaWtpXCA7CivkuozogqHoho/olqwgPiBmdXRhbWF0YWtvdXlha3VcIDsKK+eJqeizquS7o+isnSA+IGJ1c3NoaXRzdXRhaXNoYVwgOwor566h6L2E5a6Y5bqBID4ga2Fua2F0c3VrYW5jaG91XCA7Civkv67mraPnlLPlkYogPiBzaHV1c2Vpc2hpbmtva3VcIDsKK+W/g+eQhuWwj+iqrCA+IHNoaW5yaXNob3VzZXRzdVwgOwor552A6Zm45Zyw54K5ID4gY2hha3VyaWt1Y2hpdGVuXCA7Civlrp/pqJPlsI/oqqwgPiBqaWtrZW5zaG91c2V0c3VcIDsKK+WOn+WtkOeIhueZuiA+IGdlbnNoaWJha3VoYXRzdVwgOwor5YWl5Yqb5oOF5aCxID4gbnl1dXJ5b2t1am91aG91XCA7Civph4/lrZDlipvlraYgPiByeW91c2hpcmlraWdha3VcIDsKK+WlquS4ieaMr+eOiyA+IGRhdHN1c2Fuc2hpbicnb3VcIDsKK+W5tOacq+iqv+aVtCA+IG5lbm1hdHN1Y2hvdXNlaVwgOwor5a2m6KGT6KuW5paHID4gZ2FrdWp1dHN1cm9uYnVuXCA7CivnlJ/nianlrabogIUgPiBzZWlidXRzdWdha3VzaGFcIDsKK+WFreeZvuWFreWPtyA+IHJvcHB5YWt1cm9rdWdvdVwgOwor5oCd5byB5ZOy5a2mID4gc2hpYmVudGV0c3VnYWt1XCA7CivmipfnlJ/nianos6ogPiBrb3VzZWlidXNzaGl0c3VcIDsKK+a0u+WLleWGmeecnyA+IGthdHN1ZG91c2hhc2hpblwgOwor5Lih55Sf5YuV54mpID4gcnlvdXNlaWRvdWJ1dHN1XCA7Civnsr7npZ7oloTlvLEgPiBzZWlzaGluaGFrdWpha3VcIDsKK+W8t+i/q+ims+W/tSA+IGt5b3VoYWt1a2FuJyduZW5cIDsKK+i7jee4ruWNlOWumiA+IGd1bnNodWt1a3lvdXRlaVwgOwor552A6Zm45Zyw5bivID4gY2hha3VyaWt1Y2hpdGFpXCA7Civngq3lobXniIbnmbogPiB0YW5qaW5iYWt1aGF0c3VcIDsKK+eUn+a0u+eSsOWigyA+IHNlaWthdHN1a2Fua3lvdVwgOwor5oqA6KGT6Z2p5pawID4gZ2lqdXRzdWtha3VzaGluXCA7Civnsp/nspLntZDmoLggPiB6b2t1cnl1dWtla2tha3VcIDsKK+S7ruWPl+WPluiovCA+IGthcml1a2V0b3Jpc2hvdVwgOwor5paw6IGe6YWN6YGUID4gc2hpbmJ1bmhhaXRhdHN1XCA7CivljZLmpa3oq5bmlocgPiBzb3RzdWd5b3Vyb25idW5cIDsKK+eZu+mMsuWVhuaomSA+IHRvdXJva3VzaG91aHlvdVwgOwor5L+h55So6YqY5p+EID4gc2hpbicneW91bWVpZ2FyYVwgOwor5pON5rWE55Gg55KDID4gYXlhdHN1cmlqb3VydXJpXCA7CivlhbHlkIznlJ/mtLsgPiBreW91ZG91c2Vpa2F0c3VcIDsKK+S8nemBlOeJueaApyA+IGRlbnRhdHN1dG9rdXNlaVwgOwor5L+h5Luw55Sf5rS7ID4gc2hpbmtvdXNlaWthdHN1XCA7Civpg7flnJ/lsI/oqqwgPiBreW91ZG9zaG91c2V0c3VcIDsKK+mbhuWbo+eUn+a0uyA+IHNodXVkYW5zZWlrYXRzdVwgOwor6aeQ5pel5aSn5L2/ID4gY2h1dW5pY2hpdGFpc2hpXCA7Civls7blm73moLnmgKcgPiBzaGltYWd1bmlrb25qb3VcIDsKK+W3puWwj+aLrOW8pyA+IGhpZGFyaXNob3VrYWtrb1wgOwor5rCR5peP5a6X5pWZID4gbWluem9rdXNodXVreW91XCA7Civml6XkuK3pn5PotoogPiBuaXRjaHV1a2FuJydldHN1XCA7Civpu5LoibLngavolqwgPiBrb2t1c2hva3VrYXlha3VcIDsKK+S4h+acieelnuaVmSA+IGJhbicneXV1c2hpbmt5b3VcIDsKK+mgreiEs+a1geWHuiA+IHp1bm91cnl1dXNodXRzdVwgOwor55u05o6l6Kmx5rOVID4gY2hva3VzZXRzdXdhaG91XCA7CivlvaLos6rou6Lmj5sgPiBrZWlzaGl0c3V0ZW5rYW5cIDsKK+ato+ecn+ato+mKmCA+IHNob3VzaGluc2hvdW1laVwgOwor54iG5by+55m66KiAID4gYmFrdWRhbmhhdHN1Z2VuXCA7Civnm7Tnq4vkuI3li5UgPiBjaG9rdXJpdHN1ZnVkb3VcIDsKK+WVhualremBk+W+syA+IHNob3VneW91ZG91dG9rdVwgOwor54m56Kit5Lya5aC0ID4gdG9rdXNldHN1a2Fpam91XCA7CivmoLjniannkIblraYgPiBrYWt1YnV0c3VyaWdha3VcIDsKK+ebtOeri+eMv+S6uiA+IGNob2t1cml0c3VlbmppblwgOwor6LaF6YCj57WQ5a2QID4gY2hvdXJlbmtldHN1c2hpXCA7CivnlLLoq5bkuZnpp4EgPiBrb3Vyb24nJ290c3ViYWt1XCA7CivniannmoTos4fmupAgPiBidXRzdXRla2lzaGlnZW5cIDsKK+ebtOaOpeaUr+aPtCA+IGNob2t1c2V0c3VzaGllblwgOwor5paw5Yi25Lit5a2mID4gc2hpbnNlaWNodXVnYWt1XCA7CivlnKflipvlm6PkvZMgPiBhdHN1cnlva3VkYW50YWlcIDsKK+a4qeihgOWLleeJqSA+IG9ua2V0c3Vkb3VidXRzdVwgOwor5Lit56uL5Yq06YCjID4gY2h1dXJpdHN1cm91cmVuXCA7CivnoJTnqbbmtLvli5UgPiBrZW5reXV1a2F0c3Vkb3VcIDsKK+iHqueEtuWTsuWtpiA+IHNoaXplbnRldHN1Z2FrdVwgOwor5qCq5Li757eP5LyaID4ga2FidW51c2hpc291a2FpXCA7CivmgKfmoLzliKTliKUgPiBzZWlrYWt1aGFuYmV0c3VcIDsKK+mBjuWkseWCt+WusyA+IGthc2hpdHN1c2hvdWdhaVwgOwor6YCa5L+h5bel5a2mID4gdHN1dXNoaW5rb3VnYWt1XCA7CivlkIzkuIDkurrniakgPiBkb3VpdHN1amluYnV0c3VcIDsKK+WVhuWtpuWNmuWjqyA+IHNob3VnYWt1aGFrdXNoaVwgOwor5b+D6aCt5ruF5Y20ID4gc2hpbnRvdW1la2t5YWt1XCA7CivkuIPpoZvlhavlgJIgPiBzaGljaGl0ZW5iYXR0b3VcIDsKK+W8t+ihjOaOoeaxuiA+IGt5b3Vrb3VzYWlrZXRzdVwgOwor5bCx5Lu75ryU6KqsID4gc2h1dW5pbicnZW56ZXRzdVwgOwor5ZCN6KuW5Y2T6KqsID4gbWVpcm9udGFrdXNldHN1XCA7Civms6jlhaXmlZnogrIgPiBjaHV1bnl1dWt5b3Vpa3VcIDsKK+WQkeeyvuelnuiWrCA+IGtvdXNlaXNoaW4nJ3lha3VcIDsKK+WIhuWIl+ihjOmAsiA+IGJ1bnJldHN1a291c2hpblwgOwor6aOf5paZ5ZOB5bqXID4gc2hva3VyeW91aGludGVuXCA7Civmva7msZDmkanmk6YgPiBjaG91c2VraW1hc2F0c3VcIDsKK+evgOi2s+WLleeJqSA+IHNlc3Nva3Vkb3VidXRzdVwgOwor6aOf54mp6YCj6Y6WID4gc2hva3Vtb3RzdXJlbnNhXCA7CivkuK3ogonkuK3og4wgPiBjaHV1bmlrdWNodXV6ZWlcIDsKK+mbhuS4reaUu+aSgyA+IHNodXVjaHV1a291Z2VraVwgOwor56K65a6a5Yik5rG6ID4ga2FrdXRlaWhhbmtldHN1XCA7CivlsJHlpbPlsI/oqqwgPiBzaG91am9zaG91c2V0c3VcIDsKK+WNmuWtpuWKm+ihjCA+IGhha3VnYWt1cnlva2tvdVwgOwor5YKN57O76KGA5pePID4gYm91a2Vpa2V0c3V6b2t1XCA7CivkuK3plpPlhoXplqMgPiBjaHV1a2FuJyduYWlrYWt1XCA7CivljZjni6zkvpvntaYgPiB0YW5kb2t1a3lvdWt5dXVcIDsKK+WksealreS/nemZuiA+IHNoaXRzdWd5b3Vob2tlblwgOwor54m55Yil5Lya6KiIID4gdG9rdWJldHN1a2Fpa2VpXCA7CivmjK/luYXlpInoqr8gPiBzaGlucHVrdWhlbmNob3VcIDsKK+W6g+WRiuWPjuWFpSA+IGtvdWtva3VzaHV1bnl1dVwgOwor5Lit5Zu95aSn6Zm4ID4gY2h1dWdva3V0YWlyaWt1XCA7CivmlL7lh7rnianos4cgPiBob3VzaHV0c3VidXNzaGlcIDsKK+mFjemBlOiovOaYjiA+IGhhaXRhdHN1c2hvdW1laVwgOwor5pyA57WC55uu55qEID4gc2Fpc2h1dW1va3V0ZWtpXCA7CivkuIDok67miZjnlJ8gPiBpY2hpcmVudGFrdXNob3VcIDsKK+S4ieinkua4rOmHjyA+IHNhbmtha3Vzb2t1cnlvdVwgOwor5YuV54mp5a2m6ICFID4gZG91YnV0c3VnYWt1c2hhXCA7CivljJblrabnianos6ogPiBrYWdha3VidXNzaGl0c3VcIDsKK+eGseWOn+WtkOaguCA+IG5ldHN1Z2Vuc2hpa2FrdVwgOwor5Zyw6LOq6Kq/5p+7ID4gY2hpc2hpdHN1Y2hvdXNhXCA7Civmra/liJfnn6/mraMgPiBzaGlyZXRzdWt5b3VzZWlcIDsKK+Wbm+WNgeS4g+WjqyA+IHNoaWp1dXNoaWNoaXNoaVwgOwor5Y2B5pyI6Z2p5ZG9ID4ganV1Z2F0c3VrYWt1bWVpXCA7Civmlofos6rlvazlvawgPiBidW5zaGl0c3VoaW5waW5cIDsKK+S/oeiol+Wlkee0hCA+IHNoaW50YWt1a2VpeWFrdVwgOwor54us56uL5oim5LqJID4gZG9rdXJpdHN1c2Vuc291XCA7Civngavlipvnmbrpm7sgPiBrYXJ5b2t1aGF0c3VkZW5cIDsKK+mAn+mBlOmDteS+vyA+IHNva3V0YXRzdXl1dWJpblwgOwor5Zub55m+5Zub55eFID4gc2hpaHlha3VzaGlieW91XCA7CivlhYPluLPmrovpq5ggPiBtb3RvY2hvdXphbmRha2FcIDsKK+aKveixoee+juihkyA+IGNodXVzaG91YmlqdXRzdVwgOwor54mp6LOq5paH5piOID4gYnVzc2hpdHN1YnVubWVpXCA7CivotoXniannkIblraYgPiBjaG91YnV0c3VyaWdha3VcIDsKK+mjn+ezp+S4jei2syA+IHNob2t1cnlvdWJ1c29rdVwgOwor5YWs5YWx5pa96KitID4ga291a3lvdXNoaXNldHN1XCA7CivljZfmpbXmnaHntIQgPiBuYW5reW9rdWpvdXlha3VcIDsKK+WFteWKm+WJiua4myA+IGhlaXJ5b2t1c2FrdWdlblwgOwor5YWs6IG36L+95pS+ID4ga291c2hva3V0c3VpaG91XCA7CivlrabooZPlm6PkvZMgPiBnYWt1anV0c3VkYW50YWlcIDsKK+WFseeUn+eUn+eJqSA+IGt5b3VzZWlzZWlidXRzdVwgOwor6KKr5a2Q5qSN54mpID4gaGlzaGlzaG9rdWJ1dHN1XCA7CivmnInnlZzovrLmpa0gPiB5dXVjaGlrdW5vdWd5b3VcIDsKK+WvhOeUn+akjeeJqSA+IGtpc2Vpc2hva3VidXRzdVwgOwor5q2m5L6g5bCP6KqsID4gYnVreW91c2hvdXNldHN1XCA7CivmnKjos6rnuYrntq0gPiBtb2t1c2hpdHN1c2VuJydpXCA7Civnm7TpgJrliJfou4ogPiBjaG9rdXRzdXVyZXNzaGFcIDsKK+S4gOS4gOS5neeVqiA+IGh5YWt1anV1a3l1dWJhblwgOwor6Lui572u6KGM5YiXID4gdGVuY2hpZ3lvdXJldHN1XCA7Civlh7rli5Xlkb3ku6QgPiBzaHV0c3Vkb3VtZWlyZWlcIDsKK+iIjOWFiOS4ieWvuCA+IHNoaXRhc2FraXNhbnp1blwgOwor5aSn6KGG6aOf5aCCID4gdGFpc2h1dXNob2t1ZG91XCA7CivlhoXplqPplqPlg5ogPiBuYWlrYWt1a2FrdXJ5b3VcIDsKK+S6uuWPo+eIhueZuiA+IGppbmtvdWJha3VoYXRzdVwgOwor5Zyn57iu5Yq5546HID4gYXNzaHVrdWtvdXJpdHN1XCA7Civlm73nq4vpioDooYwgPiBrb2t1cml0c3VnaW5rb3VcIDsKK+S4gOeXheaBr+eBvSA+IGljaGlieW91c29rdXNhaVwgOwor5q2j6YeR5Y+W5byVID4gc2hvdWtpbnRvcmloaWtpXCA7CivmtYHpgJrpnanlkb0gPiByeXV1dHN1dWtha3VtZWlcIDsKK+iKuOihk+S9nOWTgSA+IGdlaWp1dHN1c2FrdWhpblwgOwor5paw6IiI5a6X5pWZID4gc2hpbmtvdXNodXVreW91XCA7Civnn6XorZjlt6XlraYgPiBjaGlzaGlraWtvdWdha3VcIDsKK+S9k+izquaUueWWhCA+IHRhaXNoaXRzdWthaXplblwgOwor54mH5YG06YCa6KGMID4ga2F0YWdhd2F0c3V1a291XCA7CivljZfmpbXlpKfpmbggPiBuYW5reW9rdXRhaXJpa3VcIDsKK+iJtueskeWwj+ipsSA+IGVuc2hvdWtvYmFuYXNoaVwgOwor5ZWG5qWt576O6KGTID4gc2hvdWd5b3ViaWp1dHN1XCA7CivnpZ7oibLoh6roi6UgPiBzaGluc2hva3VqaWpha3VcIDsKK+awtOmam+S9nOaIpiA+IG1penVnaXdhc2FrdXNlblwgOwor54mp55qE6Ki85ougID4gYnV0c3V0ZWtpc2hvdWtvXCA7Civmk43mpa3nn63nuK4gPiBzb3VneW91dGFuc2h1a3VcIDsKK+WGheiCoeiGj+iWrCA+IHVjaGltYXRhZ291eWFrdVwgOwor6Imy5b2p5oSf6KaaID4gc2hpa2lzYWlrYW5rYWt1XCA7CivotoXog73lipvogIUgPiBjaG91bm91cnlva3VzaGFcIDsKK+acqOmjn+S4iuS6uiA+IG1va3VqaWtpc2hvdW5pblwgOwor6YCj6LyJ5bCP6KqsID4gcmVuc2Fpc2hvdXNldHN1XCA7CivnhKbnhrHlnLDnjYQgPiBzaG91bmV0c3VqaWdva3VcIDsKK+mqqOeyl+mshueXhyA+IGtvdHN1c29zaG91c2hvdVwgOwor5rWB6YCa6Ki85Yi4ID4gcnl1dXRzdXVzaG91a2VuXCA7Civlt67lvJXli5jlrpogPiBzYXNoaWhpa2lrYW5qb3VcIDsKK+mWi+iFueaJi+ihkyA+IGthaWZ1a3VzaHVqdXRzdVwgOwor5Y2z5pel5Ye66I23ID4gc29rdWppdHN1c2h1a2thXCA7CivmoKrlvI/phY3lvZMgPiBrYWJ1c2hpa2loYWl0b3VcIDsKK+ibjeWFieeJqeizqiA+IGtlaWtvdWJ1c3NoaXRzdVwgOwor6IG06Kaa56We57WMID4gY2hvdWtha3VzaGlua2VpXCA7Civmh7LmiJLlhY3ogbcgPiBjaG91a2FpbWVuc2hva3VcIDsKK+eiuuWumueUs+WRiiA+IGtha3V0ZWlzaGlua29rdVwgOwor6IG35qWt6LuN5Lq6ID4gc2hva3VneW91Z3VuamluXCA7Civnmb3msrPlpJzoiLkgPiBzaGlyYWthd2F5b2Z1bmVcIDsKK+agquW8j+WFrOmWiyA+IGthYnVzaGlraWtvdWthaVwgOwor5buD5LuP5q+A6YeIID4gaGFpYnV0c3VraXNoYWt1XCA7CivnnLzlupXlh7rooYAgPiBnYW50ZWlzaHVra2V0c3VcIDsKK+S/oeS7u+aKleelqCA+IHNoaW4nJ25pbnRvdWh5b3VcIDsKK+mWoumAo+izquWVjyA+IGthbnJlbnNoaXRzdW1vblwgOwor5bu656+J5qWt6ICFID4ga2VuY2hpa3VneW91c2hhXCA7Civlk7Llrablj7LopoEgPiB0ZXRzdWdha3VzaGl5b3VcIDsKK+efpeitmOeUo+alrSA+IGNoaXNoaWtpc2FuZ3lvdVwgOwor5rWa5rir5L2c5qWtID4gc2h1bnNldHN1c2FneW91XCA7Civljbjlo7LluILloLQgPiBvcm9zaGl1cmlzaGlqb3VcIDsKK+mAmuS/oeaVmeiCsiA+IHRzdXVzaGlua3lvdWlrdVwgOwor5YyX5paX5LiD5pifID4gaG9rdXRvc2hpY2hpc2VpXCA7CivmraPlvI/nmbrooaggPiBzZWlzaGlraWhhcHB5b3VcIDsKK+aatOWKm+mdqeWRvSA+IGJvdXJ5b2t1a2FrdW1laVwgOwor5YWx55Sj5Lit5Zu9ID4ga3lvdXNhbmNodXVnb2t1XCA7Civmo67mnpfpiYTpgZMgPiBzaGlucmludGV0c3Vkb3VcIDsKK+e1jOa4iOWNlOWKmyA+IGtlaXphaWt5b3VyeW9rdVwgOwor54mp55qE5pCN5a6zID4gYnV0c3V0ZWtpc29uZ2FpXCA7CivnqbrkuK3niIbmkoMgPiBrdXVjaHV1YmFrdWdla2lcIDsKK+W5tOS4reWkseiogCA+IG5lbmp1dXNoaXRzdWdlblwgOwor5q2j5pa56KGM5YiXID4gc2VpaG91Z3lvdXJldHN1XCA7CivogIHoi6XnlLflpbMgPiByb3VueWFrdW5hbicnbnlvXCA7Civkv67kuoboqLzmm7ggPiBzaHV1cnlvdXNob3VzaG9cIDsKK+S4i+etieakjeeJqSA+IGthdG91c2hva3VidXRzdVwgOwor6aGV6Iqx5qSN54mpID4ga2Vua2FzaG9rdWJ1dHN1XCA7CivlnLDlhYPorablr58gPiBqaW1vdG9rZWlzYXRzdVwgOwor5Lit5Zu95Zyw5pa5ID4gY2h1dWdva3VjaGlob3VcIDsKK+S4ieagoee1guS6hiA+IHNhbmtvdXNodXVyeW91XCA7Civkurrlt6XooYDmtrIgPiBqaW5rb3VrZXRzdWVraVwgOwor5pyJ5oCn55Sf5q6WID4geXV1c2Vpc2Vpc2hva3VcIDsKK+mMrOmHkeihk+W4qyA+IHJlbmtpbmp1dHN1c2hpXCA7Civlr77ml6XmhJ/mg4UgPiB0YWluaWNoaWthbmpvdVwgOwor54yl6KS75paH5pu4ID4gd2Fpc2V0c3VidW5zaG9cIDsKK+S7ruijheihjOWIlyA+IGthc291Z3lvdXJldHN1XCA7CivmraPlvKbmm7Lnt5ogPiBzZWlnZW5reW9rdXNlblwgOwor5rKh5YCL5oCn55qEID4gYm90c3Vrb3NlaXRla2lcIDsKK+eLrOeri+mBi+WLlSA+IGRva3VyaXRzdXVuZG91XCA7CivohLHohILnsonkubMgPiBkYXNzaGlmdW4nJ255dXVcIDsKK+WOn+WtkOWKm+iIuSA+IGdlbnNoaXJ5b2t1c2VuXCA7CivkuInnkIPkuInmjK8gPiBzYW5reXV1c2Fuc2hpblwgOwor6Z2i55m95Y2K5YiGID4gb21vc2hpcm9oYW5idW5cIDsKK+WVhuiIueWkp+WtpiA+IHNob3VzZW5kYWlnYWt1XCA7CivlpKnlnLDkuIfniakgPiB0ZW5jaGliYW5idXRzdVwgOwor6ICQ54ax5ZCI6YeRID4gdGFpbmV0c3Vnb3VraW5cIDsKK+aUv+eVpee1kOWpmiA+IHNlaXJ5YWt1a2Vra29uXCA7Civnibnpq5jorablr58gPiB0b2trb3VrZWlzYXRzdVwgOwor5ZWG5oWj57+S5rOVID4gc2hvdWthbnNodXVob3VcIDsKK+aYhuiZq+aOoembhiA+IGtvbmNodXVzYWlzaHV1XCA7CivkuK3lm73mi7Pms5UgPiBjaHV1Z29rdWtlbnBvdVwgOwor576O6KGT55uj552jID4gYmlqdXRzdWthbnRva3VcIDsKK+WJr+Wkp+e1semgmCA+IGZ1a3VkYWl0b3VyeW91XCA7CivnhKbmgKfnoavphbggPiBzaG91c2Vpcnl1dXNhblwgOwor5ZGo5peL5qWt6ICFID4gc2h1dXNlbmd5b3VzaGFcIDsKK+WNl+WbnuW4sOe3miA+IG1pbmFtaWthaWtpc2VuXCA7Civog47nlJ/li5XniakgPiB0YWlzZWlkb3VidXRzdVwgOwor5YWo5Zu95Lit57aZID4gemVua29rdWNodXVrZWlcIDsKK+eJm+atqeaIpuihkyA+IGd5dXVob3Nlbmp1dHN1XCA7CivnqoHmkoPpmorlk6EgPiB0b3RzdWdla2l0YWlpblwgOwor57SE55m+5LiH5YaGID4geWFrdWh5YWt1bWFuZW5cIDsKK+S6uua1t+aIpuihkyA+IGppbmthaXNlbmp1dHN1XCA7CivlpKnmloflrabnmoQgPiB0ZW5tb25nYWt1dGVraVwgOwor5oCd5qGI5oqV6aaWID4gc2hpYW4nJ25hZ2VrdWJpXCA7Civoo4/lj6Pllrbmpa0gPiB1cmFndWNoaWVpZ3lvdVwgOwor5Lyd5aWH5bCP6KqsID4gZGVua2lzaG91c2V0c3VcIDsKK+S4reeri+S4u+e+qSA+IGNodXVyaXRzdXNodWdpXCA7CivnoJTnqbbos4fmlpkgPiBrZW5reXV1c2hpcnlvdVwgOwor5Y+k55Sf54mp5a2mID4ga29zZWlidXRzdWdha3VcIDsKK+abtOeUn+aWveiorSA+IGtvdXNlaXNoaXNldHN1XCA7CivniYfpgZPliIfnrKYgPiBrYXRhbWljaGlraXBwdVwgOwor5o6l57aa5Yqp6KmeID4gc2V0c3V6b2t1am9zaGlcIDsKK+iLseS7j+a1t+WzoSA+IGVpZnV0c3VrYWlreW91XCA7CivnqJTlrp/kuI3oia8gPiBuZW5qaXRzdWZ1cnlvdVwgOwor5YWs6KGG5rW05aC0ID4ga291c2h1dXlva3Vqb3VcIDsKK+err+acq+ijhee9riA+IHRhbm1hdHN1c291Y2hpXCA7Civpp5Dou4rmlpnph5EgPiBjaHV1c2hhcnlvdWtpblwgOwor6LOH5pys5Y+W5byVID4gc2hpaG9udG9yaWhpa2lcIDsKK+agquW8j+ebuOWgtCA+IGthYnVzaGlraXNvdWJhXCA7CivlhY3nlqvlj43lv5wgPiBtZW4nJ2VraWhhbicnbm91XCA7Civlu7roqK3kvJrnpL4gPiBrZW5zZXRzdWdhaXNoYVwgOwor5pys5pyr6aGb5YCSID4gaG9ubWF0c3V0ZW50b3VcIDsKK+WIneW/l+iyq+W+uSA+IHNob3NoaWthbnRldHN1XCA7CivnlKPmpa3pnanlkb0gPiBzYW5neW91a2FrdW1laVwgOwor5a6a5bm06YCA6IG3ID4gdGVpbmVudGFpc2hva3VcIDsKK+Wbvemam+imquWWhCA+IGtva3VzYWlzaGluemVuXCA7CivmgKfmoLzoqLrmlq0gPiBzZWlrYWt1c2hpbmRhblwgOwor5YWo6Lqr6KGw5byxID4gemVuc2hpbnN1aWpha3VcIDsKK+WVj+mhjOino+axuiA+IG1vbmRhaWthaWtldHN1XCA7Civlk7rkubPli5XniakgPiBob255dXVkb3VidXRzdVwgOwor6LOH5pys5rOo5YWlID4gc2hpaG9uY2h1dW55dXVcIDsKK+S/rualreW5tOmZkCA+IHNodXVneW91bmVuZ2VuXCA7Civnt5HntqzopJLnq6AgPiByeW9rdWp1aG91c2hvdVwgOwor56CU56m26aGM55uuID4ga2Vua3l1dWRhaW1va3VcIDsKK+eXheW6iuaXpeiqjCA+IGJ5b3VzaG91bmlzc2hpXCA7CivnrpfooZPoqIjnrpcgPiBzYW5qdXRzdWtlaXNhblwgOwor5biw5YyW5qSN54mpID4ga2lrYXNob2t1YnV0c3VcIDsKK+mHkeiejeaBkOaFjCA+IGtpbicneXV1a3lvdWtvdVwgOwor54m55Yil5o6q572uID4gdG9rdWJldHN1c29jaGlcIDsKK+W8m+W8teaMr+WLlSA+IHNoaWNob3VzaGluZG91XCA7CivmiKbmiKblhaLlhaIgPiBzZW5zZW5reW91a3lvdVwgOwor6Kaz5YWJ5pa96KitID4ga2Fua291c2hpc2V0c3VcIDsKK+WWhOeUt+WWhOWlsyA+IHplbicnbmFuemVuJydueW9cIDsKK+S/oeeUqOiyqeWjsiA+IHNoaW4nJ3lvdWhhbmJhaVwgOwor5pyr5qKi56We57WMID4gbWFzc2hvdXNoaW5rZWlcIDsKK+mqqOmrhOenu+akjSA+IGtvdHN1enVpaXNob2t1XCA7CivpgZPlvrPmlZnogrIgPiBkb3V0b2t1a3lvdWlrdVwgOwor6YeR5q6/546J5qW8ID4ga2luZGVuZ3lva3Vyb3VcIDsKK+eCuea7tOazqOWwhCA+IHRlbnRla2ljaHV1c2hhXCA7Civlt6Xlrabkv67lo6sgPiBrb3VnYWt1c2h1dXNoaVwgOwor6ZaA5aSW5LiN5Ye6ID4gbW9uZ2FpZnVzaHV0c3VcIDsKK+mAmuS/oeijhee9riA+IHRzdXVzaGluc291Y2hpXCA7CivkvZzmiKboqIjnlLsgPiBzYWt1c2Vua2Vpa2FrdVwgOwor5aC05aSW5Y+W5byVID4gam91Z2FpdG9yaWhpa2lcIDsKK+S/oeiol+mKgOihjCA+IHNoaW50YWt1Z2lua291XCA7CivlooPnlYzoqr/mlbQgPiBreW91a2FpY2hvdXNlaVwgOwor5Li75Yqb6Imm6ZqKID4gc2h1cnlva3VrYW50YWlcIDsKK+iBt+WgtOeSsOWigyA+IHNob2t1YmFrYW5reW91XCA7CivlibLlvJXkvqHmoLwgPiB3YXJpYmlraWtha2FrdVwgOwor5pW05b2i5omL6KGTID4gc2Vpa2Vpc2h1anV0c3VcIDsKK+mFuOaAp+mjn+WTgSA+IHNhbnNlaXNob2t1aGluXCA7Civljp/lrZDlipvlraYgPiBnZW5zaGlyaWtpZ2FrdVwgOwor5rC05Lit57+86Ii5ID4gc3VpY2h1dXlva3VzZW5cIDsKK+eZuumBlOautemajiA+IGhhdHRhdHN1ZGFua2FpXCA7Civoq7joqqzntJvntJsgPiBzaG9zZXRzdWZ1bnB1blwgOwor5Lmz6YW46aOy5paZID4gbnl1dXNhbicnaW5yeW91XCA7CivlgIvjgIXliKXliKUgPiBrb2tvYmV0c3ViZXRzdVwgOwor5Y+j5LiN6Kq/5rOVID4ga3VjaGlidWNob3Vob3VcIDsKK+i2heiHqueEtueahCA+IGNob3VzaGl6ZW50ZWtpXCA7Civlm73pmLLplbflrpggPiBrb2t1Ym91Y2hvdWthblwgOwor5q2j57Wx5L+h5pWZID4gc2VpdG91c2hpbmt5b3VcIDsKK+W8t+WMluWQiOWuvyA+IGt5b3VrYWdhc3NodWt1XCA7CivmnJ3prq7kurrlj4IgPiBjaG91c2VuJyduaW5qaW5cIDsKK+adn+e4m+WkiemghSA+IHNva3ViYWt1aGVua291XCA7CivnpZ7ntYzntYTnuZQgPiBzaGlua2Vpc29zaGlraVwgOwor6LaF6LaK6Zai5pWwID4gY2hvdWV0c3VrYW5zdXVcIDsKK+WKueeOh+WQkeS4iiA+IGtvdXJpdHN1a291am91XCA7CivlpKfohLPnmq7os6ogPiBkYWlub3VoaXNoaXRzdVwgOwor55Sf5L2T5Yqb5a2mID4gc2VpdGFpcmlraWdha3VcIDsKK+WxseS4i+WFrOWckiA+IHlhbWFzaGl0YWtvdWVuXCA7Civlj6Pov7DoqabpqJMgPiBrb3VqdXRzdXNoaWtlblwgOwor5LiA5pel54mH5pmCID4gaWNoaW5pY2hpaGVuamlcIDsKK+ekvuS8mueUn+a0uyA+IHNoYWthaXNlaWthdHN1XCA7Civlh7rniYjnm67pjLIgPiBzaHVwYW5tb2t1cm9rdVwgOwor5Yil6YCU5pSv5Ye6ID4gYmV0dG9zaGlzaHV0c3VcIDsKK+eUs+WRiue0jeeojiA+IHNoaW5rb2t1bm91emVpXCA7CivljbPmsbroo4HliKQgPiBzb2trZXRzdXNhaWJhblwgOwor54us56uL6Ieq5bCKID4gZG9rdXJpdHN1amlzb25cIDsKK+Wpmue0hOaMh+i8qiA+IGtvbicneWFrdXl1Yml3YVwgOwor6KGA5ray5Yed5Zu6ID4ga2V0c3Vla2lneW91a29cIDsKK+WHuuWHpumAsumAgCA+IHNodXNzaG9zaGludGFpXCA7CivlvJPnn6LlhavluaEgPiB5dW1peWFoYWNoaW1hblwgOwor6K2m5a+f5omL5bizID4ga2Vpc2F0c3V0ZWNob3VcIDsKK+iBt+alreWppuS6uiA+IHNob2t1Z3lvdWZ1amluXCA7Civoh7Pnpo/ljYPlubQgPiBzaGlmdWt1c2VuJyduZW5cIDsKK+WkqeWcsOmWi+mXoiA+IHRlbmNoaWthaWJ5YWt1XCA7Civlhrflh43po5/lk4EgPiByZWl0b3VzaG9rdWhpblwgOwor6KOc6Laz6Kqs5piOID4gaG9zb2t1c2V0c3VtZWlcIDsKK+S/oeeUqOeKtuaFiyA+IHNoaW4nJ3lvdWpvdXRhaVwgOwor57W25a++5rm/5bqmID4gemV0dGFpc2hpdHN1ZG9cIDsKK+aYjuaYjueZveeZvSA+IG1laW1laWhha3VoYWt1XCA7Civou43lgpnnuK7lsI8gPiBndW5iaXNodWt1c2hvdVwgOwor5pq05Yqb5Zuj5ZOhID4gYm91cnlva3VkYW4nJ2luXCA7CivlpKflrabmlZnogrIgPiBkYWlnYWt1a3lvdWlrdVwgOwor56ys5LiJ5Lq656ewID4gZGFpc2FuJyduaW5zaG91XCA7CivmsLjkuJbkuK3nq4sgPiBlaXNlaWNodXVyaXRzdVwgOwor56CU56m26aCY5Z+fID4ga2Vua3l1dXJ5b3Vpa2lcIDsKK+aVmeiCsuWLheiqniA+IGt5b3Vpa3VjaG9rdWdvXCA7Civnsr7npZ7pmpzlrrMgPiBzZWlzaGluc2hvdWdhaVwgOwor5aSp56m65rW35r+2ID4gdGVua3V1a2Fpa2F0c3VcIDsKK+mjn+mkjOeZguazlSA+IHNob2t1amlyeW91aG91XCA7CivkvZzogIXkuI3nn6UgPiBzYWt1c2hhc2hpcmF6dVwgOwor55Sf5rS75rC05rqWID4gc2Vpa2F0c3VzdWlqdW5cIDsKK+WNteeUn+WLleeJqSA+IHJhbnNlaWRvdWJ1dHN1XCA7CivnrYvogonlirTlg40gPiBraW4nJ25pa3Vyb3Vkb3VcIDsKK+WNl+aUr+mCo+a1tyA+IG1pbmFtaXNoaW5ha2FpXCA7CivlrabooZPnlKjoqp4gPiBnYWt1anV0c3V5b3Vnb1wgOwor6Ieq54S26aOf5ZOBID4gc2hpemVuc2hva3VoaW5cIDsKK+WVhualree1hOWQiCA+IHNob3VneW91a3VtaWFpXCA7CivogbfmqKnkubHnlKggPiBzaG9ra2VucmFuJyd5b3VcIDsKK+S8tOmjn+Wkp+iHoyA+IGJhbnNob2t1ZGFpamluXCA7CivlsqHnm67lhavnm64gPiBva2FtZWhhY2hpbW9rdVwgOwor5pas5paw5aWH5oqcID4gemFuc2hpbmtpYmF0c3VcIDsKK+ebtOaDheW+hOihjCA+IGNob2t1am91a2Vpa291XCA7Civnp4Hnq4vlrabmoKEgPiBzaGlyaXRzdWdha2tvdVwgOwor5Lit5pel6L6e5YW4ID4gY2h1dW5pY2hpaml0ZW5cIDsKK+WIhumhnuebrumMsiA+IGJ1bnJ1aW1va3Vyb2t1XCA7CivlhoXliIbms4zohbogPiBuYWlidW5waXRzdXNlblwgOwor5rS76Lev6ZaL5ouTID4ga2F0c3Vyb2thaXRha3VcIDsKK+W5s+adv+a4rOmHjyA+IGhlaWJhbnNva3VyeW91XCA7CivmupDms4nlvrTlj44gPiBnZW5zZW5jaG91c2h1dVwgOwor6YCa5L+h6KGb5pifID4gdHN1dXNoaW4nJ2Vpc2VpXCA7CivmuIXnrpflj5blvJUgPiBzZWlzYW50b3JpaGlraVwgOwor54m55q6K5a2m57SaID4gdG9rdXNodWdha2t5dXVcIDsKK+S/oeeUqOiqv+afuyA+IHNoaW4nJ3lvdWNob3VzYVwgOwor5YWI54mp5aOy6LK3ID4gc2FraW1vbm9iYWliYWlcIDsKK+S4g+mbo+WFq+iLpiA+IHNoaWNoaW5hbmhha2t1XCA7Civop5Lohpznp7vmpI0gPiBrYWt1bWFrdWlzaG9rdVwgOwor5pWR5oCl55eF6ZmiID4ga3l1dWt5dXVieW91aW5cIDsKK+aOpeinpuaEn+afkyA+IHNlc3Nob2t1a2Fuc2VuXCA7CivnqI7ph5HnlLPlkYogPiB6ZWlraW5zaGlua29rdVwgOwor57Wo5q+v54iG5pKDID4ganV1dGFuYmFrdWdla2lcIDsKK+S4g+i7ouWFq+i1tyA+IHNoaWNoaXRlbmhha2tpXCA7CivmsLTpioDkuK3mr5IgPiBzdWlnaW5jaHV1ZG9rdVwgOwor6Zyy5Ye65LiN6LazID4gcm9zaHV0c3VidXNva3VcIDsKK+W5s+S4iuWOu+WFpSA+IGh5b3Vqb3VreW9ueXV1XCA7Civlm73nq4vlhazlnJIgPiBrb2t1cml0c3Vrb3VlblwgOwor5YWs56uL5a2m5qChID4ga291cml0c3VnYWtrb3VcIDsKK+mAmuS/oeWcj+WkliA+IHRzdXVzaGlua2VuZ2FpXCA7CivntITmnZ/miYvlvaIgPiB5YWt1c29rdXRlZ2F0YVwgOwor5Y+s6ZuG5Luk54q2ID4gc2hvdXNodXVyZWlqb3VcIDsKK+aWsOWFpeekvuWToSA+IHNoaW4nJ255dXVzaGFpblwgOwor5pel5Y2X5rW35bK4ID4gbmljaGluYW5rYWlnYW5cIDsKK+axjuaVtOaVsOW8jyA+IGhhbnNlaXN1dXNoaWtpXCA7Civlj6TnianllYbkurogPiBrb2J1dHN1c2hvdW5pblwgOwor5q2m5Yqb5bmy5riJID4gYnVyeW9rdWthbnNob3VcIDsKK+WFrOihhumBk+W+syA+IGtvdXNodXVkb3V0b2t1XCA7CivmgKrlpYflsI/oqqwgPiBrYWlraXNob3VzZXRzdVwgOwor56eY5a+G5oqV56WoID4gaGltaXRzdXRvdWh5b3VcIDsKK+Wcp+WKm+WuueWZqCA+IGF0c3VyeW9rdXlvdWtpXCA7Civlgo3nm67lhavnm64gPiBva2FtZWhhY2hpbW9rdVwgOwor5rGC5ama5bqD5ZGKID4ga3l1dWtvbmtvdWtva3VcIDsKK+W/g+WboOWPjeW/nCA+IHNoaW4nJ2luaGFuJydub3VcIDsKK+m6puiXgeW4veWtkCA+IG11Z2l3YXJhYm91c2hpXCA7CivntI3nqI7nlLPlkYogPiBub3V6ZWlzaGlua29rdVwgOwor5Y+N5a++56ew55qEID4gaGFudGFpc2hvdXRla2lcIDsKK+S9j+WPi+mKgOihjCA+IHN1bWl0b21vZ2lua291XCA7Civlh7rmiYDpgLLpgIAgPiBzaHVzc2hvc2hpbnRhaVwgOwor5bCx5qWt5Lq65Y+jID4gc2h1dWd5b3VqaW5rb3VcIDsKK+WFqOWLneWEquWLnSA+IHplbnNob3V5dXVzaG91XCA7Civlu7roqK3lpKfoh6MgPiBrZW5zZXRzdWRhaWppblwgOwor6Z2e6Imv5b+D55qEID4gaGlyeW91c2hpbnRla2lcIDsKK+e1tuWvvuW/heimgSA+IHpldHRhaWhpdHN1eW91XCA7Civom7jotrPphY3nt5ogPiB0YWtvYXNoaWhhaXNlblwgOwor5bel5qWt5aSn5a2mID4ga291Z3lvdWRhaWdha3VcIDsKK+mHkeWjseS4h+WGhiA+IGtpbicnaWNoaW1hbicnZW5cIDsKK+aXheWuouWIl+i7iiA+IHJ5b2t5YWt1cmVzc2hhXCA7Civnq4vkvJrmvJToqqwgPiB0YWNoaWFpZW56ZXRzdVwgOwor5aWo5a2m6LOH6YeRID4gc2hvdWdha3VzaGlraW5cIDsKK+ePvumHkeWPjuWFpSA+IGdlbmtpbnNodXVueXV1XCA7CivlrabooZPkvJrorbAgPiBnYWt1anV0c3VrYWlnaVwgOwor5rOV5b6L5ZWP6aGMID4gaG91cml0c3Vtb25kYWlcIDsKK+ebtOmAmumbu+ipsSA+IGNob2t1dHN1dWRlbndhXCA7Civlj7DmiYDpgZPlhbcgPiBkYWlkb2tvcm9kb3VndVwgOwor6Zu75rqQ5L6b57WmID4gZGVuZ2Vua3lvdWt5dXVcIDsKK+WBnOW5tOmAgOiBtyA+IHRlaW5lbnRhaXNob2t1XCA7CivmsLTpmbjkuKHnlKggPiBzdWlyaWt1cnlvdXlvdVwgOwor6YCa5L+h5omL5q61ID4gdHN1dXNoaW5zaHVkYW5cIDsKK+S4i+iri+S8muekviA+IHNoaXRhdWtlZ2Fpc2hhXCA7CivnrKzkuIDkurrnp7AgPiBkYWlpY2hpbmluc2hvdVwgOwor5a2m5q2056S+5LyaID4gZ2FrdXJla2lzaGFrYWlcIDsKK+a8lOWlj+absuebriA+IGVuc291a3lva3Vtb2t1XCA7CivmgJ3mg7Porablr58gPiBzaGlzb3VrZWlzYXRzdVwgOwor5YWs55uK6LOq5bGLID4ga291ZWtpc2hpY2hpeWFcIDsKK+WBleiAgeWQjOeptCA+IGthaXJvdWRvdWtldHN1XCA7CivlgaXlurfpo5/lk4EgPiBrZW5rb3VzaG9rdWhpblwgOwor5oq96LGh5ZCN6KmeID4gY2h1dXNob3VtZWlzaGlcIDsKK+Wwj+S5l+S7j+aVmSA+IHNob3Vqb3VidWtreW91XCA7CivlkIjnm67nmoTmgKcgPiBnb3Vtb2t1dGVraXNlaVwgOwor6Zu75Yqb5Lya56S+ID4gZGVucnlva3VnYWlzaGFcIDsKK+a1t+a0i+mWi+eZuiA+IGthaXlvdWthaWhhdHN1XCA7CivntLDog57liIboo4IgPiBzYWlib3VidW5yZXRzdVwgOwor5oCl6KGM5paZ6YeRID4ga3l1dWtvdXJ5b3VraW5cIDsKK+S4geS4geeZuuatoiA+IGNob3VjaG91aGFzc2hpXCA7CivmlZnogbfoqrLnqIsgPiBreW91c2hva3VrYXRlaVwgOwor5Ye654mI5qWt6ICFID4gc2h1cHBhbmd5b3VzaGFcIDsKK+WwseiBt+mBi+WLlSA+IHNodXVzaG9rdXVuZG91XCA7CivnlaXlparooYzngrogPiByeWFrdWRhdHN1a291aVwgOwor55CG6Z2e5puy55u0ID4gcmloaWt5b2t1Y2hva3VcIDsKK+WIpeWGiuS7mOmMsiA+IGJlc3NhdHN1ZnVyb2t1XCA7CivkuInmqKnliIbnq4sgPiBzYW5rZW5idW5yaXRzdVwgOwor5YWx5ZCM56CU56m2ID4ga3lvdWRvdWtlbmt5dXVcIDsKK+aWsOWIiue0ueS7iyA+IHNoaW5rYW5zaG91a2FpXCA7Civmo5/libLplbflsYsgPiBtdW5ld2FyaW5hZ2F5YVwgOwor5L+u5aW95p2h57SEID4gc2h1dWtvdWpvdXlha3VcIDsKK+WGoOeKtuWLleiEiCA+IGthbmpvdWRvdW15YWt1XCA7CivnqbrnqbrmvKDmvKAgPiBrdXVrdXViYWt1YmFrdVwgOwor5oKq5oCn6LKn6KGAID4gYWt1c2VpaGlua2V0c3VcIDsKK+S8keaIpuWNlOWumiA+IGt5dXVzZW5reW91dGVpXCA7CivnpZ7ntYzoobDlvLEgPiBzaGlua2Vpc3VpamFrdVwgOwor5Zue5oqY5qC85a2QID4ga2Fpc2V0c3Vrb3VzaGlcIDsKK+WFiOaxuuWVj+mhjCA+IHNlbmtldHN1bW9uZGFpXCA7CivlsLHmpa3ml6XmlbAgPiBzaHV1Z3lvdW5pc3N1dVwgOwor5a6f6aiT5YuV54mpID4gamlra2VuZG91YnV0c3VcIDsKK+W/oOWQm+aEm+WbvSA+IGNodXVrdW4nJ2Fpa29rdVwgOwor5rGC5Lq65bqD5ZGKID4ga3l1dWppbmtvdWtva3VcIDsKK+eLrOeri+eLrOatqSA+IGRva3VyaXRzdWRvcHBvXCA7Civoq7joqqzntJvjgIUgPiBzaG9zZXRzdWZ1bnB1blwgOwor5pyJ5a6z6aOf5ZOBID4geXV1Z2Fpc2hva3VoaW5cIDsKK+m6u+iWrOS4reavkiA+IG1heWFrdWNodXVkb2t1XCA7Civph5HlsZ7lt6Xmpa0gPiBraW56b2t1a291Z3lvdVwgOwor5Y245aOy54mp5L6hID4gb3Jvc2hpdXJpYnVra2FcIDsKK+WFseWQjOWHuuizhyA+IGt5b3Vkb3VzaHVzc2hpXCA7Civni63ou4zpiYTpgZMgPiBreW91a2l0ZXRzdWRvdVwgOwor5ZWG5qWt5omL5b2iID4gc2hvdWd5b3V0ZWdhdGFcIDsKK+mDteS+v+mFjemBlCA+IHl1dWJpbmhhaXRhdHN1XCA7CivmuK/mub7lvZPlsYAgPiBrb3V3YW50b3VreW9rdVwgOwor5ZWG5qWt6YqA6KGMID4gc2hvdWd5b3VnaW5rb3VcIDsKK+ecgeeVpeiomOWPtyA+IHNob3VyeWFrdWtpZ291XCA7CivkuK3plpPloLHlkYogPiBjaHV1a2FuaG91a29rdVwgOwor5Lit5b+D5oCd5oOzID4gY2h1dXNoaW5zaGlzb3VcIDsKK+S6lOaciOS6uuW9oiA+IGdvZ2F0c3VuaW5neW91XCA7CivkvJ3mib/mloflraYgPiBkZW5zaG91YnVuZ2FrdVwgOwor6Luf5L2T5YuV54mpID4gbmFudGFpZG91YnV0c3VcIDsKK+W8t+WItuWPjuWuuSA+IGt5b3VzZWlzaHV1eW91XCA7CivkuIDpmb3mnaXohbkgPiBpY2hpeW91cmFpZnVrdVwgOwor5ryB5qWt5Y2U5a6aID4gZ3lvZ3lvdWt5b3V0ZWlcIDsKK+awtOeUn+WLleeJqSA+IHN1aXNlaWRvdWJ1dHN1XCA7CivmpZTlvaLmloflrZcgPiBrdXNhYmlnYXRhbW9qaVwgOwor5L+h55So57WE5ZCIID4gc2hpbicneW91a3VtaWFpXCA7CivnoJTnqbbloLHlkYogPiBrZW5reXV1aG91a29rdVwgOwor5rC05aSp5b235b2/ID4gc3VpdGVuaG91ZnV0c3VcIDsKK+S9j+WuheeUo+alrSA+IGp1dXRha3VzYW5neW91XCA7Civms6HmsqvkvJrnpL4gPiBob3VtYXRzdWdhaXNoYVwgOwor6KuH6KuW6aKo55m6ID4gZGFucm9uZnV1aGF0c3VcIDsKK+WFiOeZuuaKleaJiyA+IHNlbnBhdHN1dG91c2h1XCA7CivmjqjnkIblsI/oqqwgPiBzdWlyaXNob3VzZXRzdVwgOwor57Sz5aOr5Y2U5a6aID4gc2hpbnNoaWt5b3V0ZWlcIDsKK+Wkp+WQjeWxi+aVtyA+IGRhaW15b3V5YXNoaWtpXCA7CivnibnnlbDkvZPos6ogPiB0b2t1aXRhaXNoaXRzdVwgOwor5Lit6ZaT5pC+5Y+WID4gY2h1dWthbnNha3VzaHVcIDsKK+WNlOiqv+S9nOalrSA+IGt5b3VjaG91c2FneW91XCA7CivmjIflnKfnmYLms5UgPiBzaGlhdHN1cnlvdWhvdVwgOwor5bel5qWt5oqA6KGTID4ga291Z3lvdWdpanV0c3VcIDsKK+e3j+WQiOiKuOihkyA+IHNvdWdvdWdlaWp1dHN1XCA7CivkuK3nlKPpmo7ntJogPiBjaHV1c2Fua2Fpa3l1dVwgOwor5Y2X5Y2B5a2X5pifID4gbWluYW1panV1amlzZWlcIDsKK+W/g+mciuaJi+ihkyA+IHNoaW5yZWl0ZWp1dHN1XCA7CivmiJDplbfnlKPmpa0gPiBzZWljaG91c2FuZ3lvdVwgOwor5Zu96Zqb5Y+O5pSvID4ga29rdXNhaXNodXVzaGlcIDsKK+WOmueUn+aWveiorSA+IGtvdXNlaXNoaXNldHN1XCA7CivkuIrpmbjkvZzmiKYgPiBqb3VyaWt1c2FrdXNlblwgOwor5YuV5Yqb6LOH5rqQID4gZG91cnlva3VzaGlnZW5cIDsKK+W/heimgeadoeS7tiA+IGhpdHN1eW91am91a2VuXCA7CivkuK3mtYHmhI/orZggPiBjaHV1cnl1dWlzaGlraVwgOwor5Ye65ryB5Yy65Z+fID4gc2h1dHN1Z3lva3Vpa2lcIDsKK+iyoeW9ouiyr+iThCA+IHphaWtlaWNob2NoaWt1XCA7CivogbfkurrmsJfos6ogPiBzaG9rdW5pbmthdGFnaVwgOwor5Y2Y5L2N6KGM5YiXID4gdGFuJydpZ3lvdXJldHN1XCA7Civlm73pgKPmhrLnq6AgPiBrb2t1cmVua2Vuc2hvdVwgOwor5rC05YWI5qGI5YaFID4gbWl6dXNha2lhbicnbmFpXCA7Civlj47lrrnoqK3lgpkgPiBzaHV1eW91c2V0c3ViaVwgOwor5rex5rW35ryB5qWtID4gc2hpbmthaWd5b2d5b3VcIDsKK+ebtOW+gOmCgemAsiA+IGNob2t1b3VtYWlzaGluXCA7CivlpKnkvZPlipvlraYgPiB0ZW50YWlyaWtpZ2FrdVwgOwor55yf56m66Zu755CDID4gc2hpbmt1dWRlbmt5dXVcIDsKK+S4iuWxpOW7uueviSA+IGpvdXNvdWtlbmNoaWt1XCA7CivlvbnogbfmiYvlvZMgPiB5YWt1c2hva3V0ZWF0ZVwgOwor6auY5Zyn6Zu75rWBID4ga291YXRzdWRlbnJ5dXVcIDsKK+S6pOmAmumBk+W+syA+IGtvdXRzdXVkb3V0b2t1XCA7CivmsLTmupbmuKzph48gPiBzdWlqdW5zb2t1cnlvdVwgOwor5byB6Ki85rOV55qEID4gYmVuc2hvdWhvdXRla2lcIDsKK+advuiMuOW+oemjryA+IG1hdHN1dGFrZWdvaGFuXCA7CivplqLnqI7pmpzlo4EgPiBrYW56ZWlzaG91aGVraVwgOwor57Wx5ous6YOo6ZW3ID4gdG91a2F0c3VidWNob3VcIDsKK+aQjeWkseijnOWhqyA+IHNvbnNoaXRzdWhvdGVuXCA7CivkuovkuovnianniakgPiBqaWppYnV0c3VidXRzdVwgOwor5oim44CF5oGQ44CFID4gc2Vuc2Vua3lvdWt5b3VcIDsKK+mAo+e2muWGmeecnyA+IHJlbnpva3VzaGFzaGluXCA7Civlm5vnmb7kvZnlt54gPiBzaGloeWFrdXlvc2h1dVwgOwor5LiA6Zm95p2l5b6pID4gaWNoaXlvdXJhaWZ1a3VcIDsKK+W/g+eti+ail+WhniA+IHNoaW5raW5rb3Vzb2t1XCA7CivlrpfmlZnoo4HliKQgPiBzaHV1a3lvdXNhaWJhblwgOwor5YaZ55yf55+z54mIID4gc2hhc2hpbnNla2liYW5cIDsKK+maoOiKseakjeeJqSA+IGlua2FzaG9rdWJ1dHN1XCA7Civlvq7nlJ/nianlraYgPiBiaXNlaWJ1dHN1Z2FrdVwgOwor5oim55Wl56m66LuNID4gc2Vucnlha3VrdXVndW5cIDsKK+aBreizgOaWsOW5tCA+IGt5b3VnYXNoaW4nJ25lblwgOwor5Zu96Zqb5Y2U5a6aID4ga29rdXNhaWt5b3V0ZWlcIDsKK+iJsuWNs+aYr+epuiA+IHNoaWtpc29rdXpla3V1XCA7CivpoK3lr5LotrPnhrEgPiB6dWthbnNva3VuZXRzdVwgOwor5Yy65qSc5a+f5bqBID4ga3VrZW5zYXRzdWNob3VcIDsKK+aguOmYsuihm+WKmyA+IGtha3Vib3VlaXJ5b2t1XCA7Civlrozlhajnh4PnhLwgPiBrYW56ZW4nJ25lbnNob3VcIDsKK+mHjemHj+aEn+immiA+IGp1dXJ5b3VrYW5rYWt1XCA7Civpm4zpm4TpkZHliKUgPiBzaGl5dXVrYW5iZXRzdVwgOwor5Y6f55Sf5YuV54mpID4gZ2Vuc2VpZG91YnV0c3VcIDsKK+ebrueahOaEj+itmCA+IG1va3V0ZWtpaXNoaWtpXCA7CivmtbfnlJ/li5XniakgPiBrYWlzZWlkb3VidXRzdVwgOwor5pS75pKD57K+56WeID4ga291Z2VraXNlaXNoaW5cIDsKK+S9nOaIkOaKgOihkyA+IHNha3VzZWlnaWp1dHN1XCA7Civph5Hpiq3kv6HoqJcgPiBraW5zZW5zaGludGFrdVwgOwor5ZC45Y+O5ZCI5L21ID4ga3l1dXNodXVnYXBwZWlcIDsKK+aPm+mqqOWlquiDjiA+IGthbmtvdHN1ZGF0dGFpXCA7Civnoazos6rpmbblmaggPiBrb3VzaGl0c3V0b3VraVwgOwor5a+d5Y+w5paZ6YeRID4gc2hpbmRhaXJ5b3VraW5cIDsKK+izvOWFpeazqOaWhyA+IGtvdW55dXVjaHV1bW9uXCA7CivnhKblnJ/miKbooZMgPiBzaG91ZG9zZW5qdXRzdVwgOwor5pyJ6IG35pWF5a6fID4geXV1c29rdWtvaml0c3VcIDsKK+eEoeWEn+S/oeiolyA+IG11c2hvdXNoaW50YWt1XCA7CivmtojosrvnlJ/mtLsgPiBzaG91aGlzZWlrYXRzdVwgOwor5a6k5YaF6YGK5oivID4gc2hpdHN1bmFpeXV1Z2lcIDsKK+Wul+aVmeWbo+S9kyA+IHNodXVreW91ZGFudGFpXCA7CivpgLLooYznirbms4EgPiBzaGlua291am91a3lvdVwgOwor6auY562J5YuV54mpID4ga291dG91ZG91YnV0c3VcIDsKK+S4gOiGs+mjr+WxiyA+IGljaGl6ZW5tZXNoaXlhXCA7CivmmYLku6PlsI/oqqwgPiBqaWRhaXNob3VzZXRzdVwgOwor5puy57ea5bqn5qiZID4ga3lva3VzZW56YWh5b3VcIDsKK+W9k+ipsuS6uueJqSA+IHRvdWdhaWppbmJ1dHN1XCA7CivopoHmsYLpgIHkv6EgPiB5b3VreXV1c291c2hpblwgOwor55m+5Lq65LiA6aaWID4gaHlha3VuaW4nJ2lzc2h1XCA7Civpm4blm6PmpJzoqLogPiBzaHV1ZGFua2Vuc2hpblwgOwor5a6J5a+n56ep5bqPID4gYW4nJ25laWNoaXRzdWpvXCA7CivmpbXmpb3ps6XoirEgPiBnb2t1cmFrdWNob3VrYVwgOwor5Lit6LaK57Sb5LqJID4gY2h1dWV0c3VmdW5zb3VcIDsKK+S4gOaLrOizvOWFpSA+IGlra2F0c3Vrb3VueXV1XCA7CivmsJHml4/oh6rmsbogPiBtaW56b2t1amlrZXRzdVwgOwor5q2j6Z2i5pS75pKDID4gc2hvdW1lbmtvdWdla2lcIDsKK+aVmeiCsueUo+alrSA+IGt5b3Vpa3VzYW5neW91XCA7Civnqbroqr/oqK3lgpkgPiBrdXVjaG91c2V0c3ViaVwgOwor5Y2Y54us5YaF6ZajID4gdGFuZG9rdW5haWtha3VcIDsKK+aVmeiCsuWun+e/kiA+IGt5b3Vpa3VqaXNzaHV1XCA7CivlsLHmpa3opo/liYcgPiBzaHV1Z3lvdWtpc29rdVwgOwor5pWZ6aSK55Wq57WEID4ga3lvdXlvdWJhbmd1bWlcIDsKK+WHjee1kOizh+eUoyA+IHRvdWtldHN1c2hpc2FuXCA7Civpm4blm6PovrLloLQgPiBzaHV1ZGFuJydub3Vqb3VcIDsKK+WRqOi+uuiruOWbvSA+IHNodXVoZW5zaG9rb2t1XCA7Civlm73nsY3mnaHpoIUgPiBrb2t1c2VraWpvdWtvdVwgOwor54++54mp57Wm5LiOID4gZ2VuYnV0c3VreXV1eW9cIDsKK+ixqumbquWcsOW4ryA+IGdvdXNldHN1Y2hpdGFpXCA7CivmtbfljYPlsbHljYMgPiB1bWlzZW4nJ3lhbWFzZW5cIDsKK+mdqeaWsOaUv+WFmiA+IGtha3VzaGluc2VpdG91XCA7CivlsJHmlbDmsJHml48gPiBzaG91c3V1bWluem9rdVwgOwor5Yq05YON5Y2U57SEID4gcm91ZG91a3lvdXlha3VcIDsKK+mbu+aSg+S9nOaIpiA+IGRlbmdla2lzYWt1c2VuXCA7CivkuIPpoZvlhavotbcgPiBzaGljaGl0ZW5oYWtraVwgOwor6ISK6auE56We57WMID4gc2VraXp1aXNoaW5rZWlcIDsKK+e+juihk+Wkp+WtpiA+IGJpanV0c3VkYWlnYWt1XCA7Civpgbjmip7poIXnm64gPiBzZW50YWt1a291bW9rdVwgOwor6ZaT5o6l6YG45oyZID4ga2Fuc2V0c3VzZW5reW9cIDsKK+iyneauu+i/veaUviA+IGthaWdhcmF0c3VpaG91XCA7CivnvqTnmbrlnLDpnIcgPiBndW5wYXRzdWppc2hpblwgOwor57eK6KSM5LiA55WqID4ga2lua29uJydpY2hpYmFuXCA7Civni6zouqvosrTml48gPiBkb2t1c2hpbmtpem9rdVwgOwor56eR5a2m55+l6K2YID4ga2FnYWt1Y2hpc2hpa2lcIDsKK+efs+mDqOmHkeWQiSA+IGlzaGliZWtpbmtpY2hpXCA7CivoirHps6XpoqjmnIggPiBrYWNob3VmdXVnZXRzdVwgOwor5o+Q5Ye65pyf6ZmQID4gdGVpc2h1dHN1a2lnZW5cIDsKK+WkqemVt+WcsOS5hSA+IHRlbmNob3VjaGlreXV1XCA7Civnmb7kuIfplbfogIUgPiBoeWFrdW1hbmNob3VqYVwgOwor5a++55eH55mC5rOVID4gdGFpc2hvdXJ5b3Vob3VcIDsKK+S4reaeouelnue1jCA+IGNodXVzdXVzaGlua2VpXCA7CivllYblt6Xmpa3ogIUgPiBzaG91a291Z3lvdXNoYVwgOwor6ZaL56Wo6YCf5aCxID4ga2FpaHlvdXNva3Vob3VcIDsKK+aAp+eahOihneWLlSA+IHNlaXRla2lzaG91ZG91XCA7Civnibnmrormkq7lvbEgPiB0b2t1c2h1c2F0c3VlaVwgOwor6Ly45Ye65omL5b2iID4geXVzaHV0c3V0ZWdhdGFcIDsKK+WPsuaWmemkqOWtpiA+IHNoaXJ5b3VrYW5nYWt1XCA7CivnqbrkuK3mpbzplqMgPiBrdXVjaHV1cm91a2FrdVwgOwor5bCR5bm05paH5a2mID4gc2hvdW5lbmJ1bmdha3VcIDsKK+iqv+aVtOaUu+aSgyA+IGNob3VzZWlrb3VnZWtpXCA7Civnsr7npZ7lubTpvaIgPiBzZWlzaGluJyduZW5yZWlcIDsKK+WxheS4reiqv+WBnCA+IGt5b2NodXVjaG91dGVpXCA7CivnqI7liKXkvqHmoLwgPiB6ZWliZXRzdWtha2FrdVwgOwor6LuN5Lq655Sf5rS7ID4gZ3Vuamluc2Vpa2F0c3VcIDsKK+eah+WuruitpuWvnyA+IGtvdWd1dWtlaXNhdHN1XCA7CivnspLjgIXovpvoi6YgPiByeXV1cnl1dXNoaW5rdVwgOwor5p2x5Lqs5aSn5a2mID4gdG91a3lvdWRhaWdha3VcIDsKK+iIiOWRs+a0pea0pSA+IGt5b3VtaXNoaW5zaGluXCA7CivljYPlrqLkuIfmnaUgPiBzZW5reWFrdWJhbnJhaVwgOwor6YG45oqc6Kmm6aiTID4gc2VuYmF0c3VzaGlrZW5cIDsKK+iIqui3r+aomeitmCA+IGtvdXJvaHlvdXNoaWtpXCA7Civnt4rmgKXnmbrpgLIgPiBraW5reXV1aGFzc2hpblwgOwor56m65Lit5YaZ55yfID4ga3V1Y2h1dXNoYXNoaW5cIDsKK+WWtualrea0u+WLlSA+IGVpZ3lvdWthdHN1ZG91XCA7CivmlZHmj7TmtLvli5UgPiBreXV1ZW5rYXRzdWRvdVwgOwor5aSp54S256Gd5a2QID4gdGVuJyduZW5zaG91c2hpXCA7Civkv6HoqJfos4fph5EgPiBzaGludGFrdXNoaWtpblwgOwor5biC5rCR55Sf5rS7ID4gc2hpbWluc2Vpa2F0c3VcIDsKK+e1tuWvvuaoqeWKmyA+IHpldHRhaWtlbnJ5b2t1XCA7Civlkajnq6Dni7zni70gPiBzaHV1c2hvdXJvdWJhaVwgOwor5rCR5peP5a2m6ICFID4gbWluem9rdWdha3VzaGFcIDsKK+iGoOedgOeKtuaFiyA+IGtvdWNoYWt1am91dGFpXCA7CivpnaLmjqXoqabpqJMgPiBtZW5zZXRzdXNoaWtlblwgOwor5pS/562W5Y2U5a6aID4gc2Vpc2FrdWt5b3V0ZWlcIDsKK+iyqeWjsuaIpueVpSA+IGhhbmJhaXNlbnJ5YWt1XCA7CivlhazoqK3luILloLQgPiBrb3VzZXRzdWljaGliYVwgOwor5Lq654mp57WM5riIID4gamluYnV0c3VrZWl6YWlcIDsKK+W/g+eahOeKtuaFiyA+IHNoaW50ZWtpam91dGFpXCA7CivkuJjpmbXlnLDluK8gPiBreXV1cnlvdWNoaXRhaVwgOwor55Sf5rav5pWZ6IKyID4gc2hvdWdhaWt5b3Vpa3VcIDsKK+aXp+e0hOWFqOabuCA+IGt5dXV5YWt1emVuc2hvXCA7CivlpKfmoLnlvbnogIUgPiBkYWlrb24nJ3lha3VzaGFcIDsKK+S4h+W5tOaWsOmAoCA+IG1hbicnbmVuc2hpbnpvdVwgOwor5bqn6aqo56We57WMID4gemFrb3RzdXNoaW5rZWlcIDsKK+mVt+iAgeaVmeS8miA+IGNob3Vyb3VreW91a2FpXCA7Civosq/ok4TlgrXliLggPiBjaG9jaGlrdXNhaWtlblwgOwor5q2m5Yqb5LuL5YWlID4gYnVyeW9rdWthaW55dXVcIDsKK+eyvuWvhuenkeWtpiA+IHNlaW1pdHN1a2FnYWt1XCA7Civnp4HpiYTnt4/pgKMgPiBzaGl0ZXRzdXNvdXJlblwgOwor5Lyd6YCB57WC5LqGID4gZGVuc291c2h1dXJ5b3VcIDsKK+iWq+iSuOa2iOavkiA+IGt1bmpvdXNob3Vkb2t1XCA7CivpuqbnqIjluL3lrZAgPiBtdWdpd2FyYWJvdXNoaVwgOwor5rOV5b6L55u46KuHID4gaG91cml0c3Vzb3VkYW5cIDsKK+WcsOWfn+mWi+eZuiA+IGNoaWlraWthaWhhdHN1XCA7Civlm73lhoXnlKPmpa0gPiBrb2t1bmFpc2FuZ3lvdVwgOwor5LiA5omT6YCG6LuiID4gaWNoaWRhZ3lha3V0ZW5cIDsKK+awtOeUn+eUn+eJqSA+IHN1aXNlaXNlaWJ1dHN1XCA7CivmnInnt5rpgJrkv6EgPiB5dXVzZW50c3V1c2hpblwgOwor6LW35om/6Lui57WQID4ga2lzaG91dGVua2V0c3VcIDsKK+eJqeizquS4u+e+qSA+IGJ1c3NoaXRzdXNodWdpXCA7Civkv6HoqJfkvJrnpL4gPiBzaGludGFrdWdhaXNoYVwgOwor5Lit6ZaT5ZWG5Lq6ID4gY2h1dWthbnNob3VuaW5cIDsKK+mdmembu+WuuemHjyA+IHNlaWRlbicneW91cnlvdVwgOwor5Lit5rWB56S+5LyaID4gY2h1dXJ5dXVzaGFrYWlcIDsKK+engeeri+aOouWBtSA+IHNoaXJpdHN1dGFudGVpXCA7Civlm73msJHmipXnpaggPiBrb2t1bWludG91aHlvdVwgOwor5pyJ572q5Yik5rG6ID4geXV1emFpaGFua2V0c3VcIDsKK+W8t+WMlumjn+WTgSA+IGt5b3VrYXNob2t1aGluXCA7CivkvLjnuK7oh6rlnKggPiBzaGluc2h1a3VqaXphaVwgOwor6Zm46LuN5aSn5a2mID4gcmlrdWd1bmRhaWdha3VcIDsKK+mAmuS/oemAn+W6piA+IHRzdXVzaGluc29rdWRvXCA7Civpu5Lph5HliZvnn7MgPiBrdXJva29uZ291c2VraVwgOwor5Lit5Zu95Lq66KGXID4gY2h1dWdva3VqaW5nYWlcIDsKK+WtpuiKuOWkp+WtpiA+IGdha3VnZWlkYWlnYWt1XCA7CivlpKfmsrPlsI/oqqwgPiB0YWlnYXNob3VzZXRzdVwgOwor6YmE6YGT5Lya56S+ID4gdGV0c3Vkb3VnYWlzaGFcIDsKK+mfs+alveW9ouW8jyA+IG9uZ2FrdWtlaXNoaWtpXCA7CivmgKfmoLzliIbmnpAgPiBzZWlrYWt1YnVuc2VraVwgOwor54++6YeR5pu455WZID4gZ2Vua2lua2FraXRvbWVcIDsKK+S8keaIpuadoee0hCA+IGt5dXVzZW5qb3V5YWt1XCA7CivkuozotrPli5XniakgPiBuaXNva3Vkb3VidXRzdVwgOwor5b+D55CG5a2m55qEID4gc2hpbnJpZ2FrdXRla2lcIDsKK+S+g+OAheirpOirpCA+IGthbmthbmdha3VnYWt1XCA7Civnm7Tnt5rpgYvli5UgPiBjaG9rdXNlbicndW5kb3VcIDsKK+aCquW+s+aWsOiBniA+IGFrdXRva3VzaGluYnVuXCA7CivmnKrmsbrmi5jnlZkgPiBtaWtldHN1a291cnl1dVwgOwor5a6a6YeP5YiG5p6QID4gdGVpcnlvdWJ1bnNla2lcIDsKK+e0meWxkeWQjOeEtiA+IGthbWlrdXp1ZG91emVuXCA7CivmuKnlrqTmoL3ln7kgPiBvbnNoaXRzdXNhaWJhaVwgOwor6Yed5bCP5qOS5aSnID4gc2hpbnNob3Vib3VkYWlcIDsKK+WkquWIgOS6jOiFsCA+IHRhY2hpZnV0YWtvc2hpXCA7Civoqo3orZjkuI3otrMgPiBuaW5zaGlraWJ1c29rdVwgOwor5Zuj5L2T5Y2U57SEID4gZGFudGFpa3lvdXlha3VcIDsKK+aIpuOAheWFouOAhSA+IHNlbnNlbmt5b3VreW91XCA7Civkv6HpoLzlm57lvqkgPiBzaGlucmFpa2FpZnVrdVwgOwor5L+u5a2m5peF6KGMID4gc2h1dWdha3VyeW9rb3VcIDsKK+mbu+a6kOmWi+eZuiA+IGRlbmdlbmthaWhhdHN1XCA7CivmqKHlvI/mqJnmnKwgPiBtb3NoaWtpaHlvdWhvblwgOwor6L+96Leh6Kq/5p+7ID4gdHN1aXNla2ljaG91c2FcIDsKK+WJsuW8leaJi+W9oiA+IHdhcmliaWtpdGVnYXRhXCA7Civnm7TmtYHlm57ot68gPiBjaG9rdXJ5dXVrYWlyb1wgOwor6IiI6KGM5oiQ57i+ID4ga291Z3lvdXNlaXNla2lcIDsKK+WMl+a0i+a8gealrSA+IGhva3V5b3VneW9neW91XCA7Civlm73mloflrablj7IgPiBrb2t1YnVuZ2FrdXNoaVwgOwor5rC45LmF6ISx5q+bID4gZWlreXV1ZGF0c3Vtb3VcIDsKK+aOkuWHuuWfuua6liA+IGhhaXNodXRzdWtpanVuXCA7CivntYTogbfmlLnpnakgPiBzb3Nob2t1a2Fpa2FrdVwgOwor6YGO5aSx6Ie05q27ID4ga2FzaGl0c3VjaGlzaGlcIDsKK+S6pOmAmuS/oeWPtyA+IGtvdXRzdXVzaGluZ291XCA7Civli5Xnianlrp/pqJMgPiBkb3VidXRzdWppa2tlblwgOwor5rC05LiK6K2m5a+fID4gc3Vpam91a2Vpc2F0c3VcIDsKK+WKtOS9nOaVmeiCsiA+IHJvdXNha3VreW91aWt1XCA7CivmoLjlu4Pmo4TniakgPiBrYWt1aGFpa2lidXRzdVwgOwor6Y6u6a2C5puy5q2MID4gY2hpbmtvbmt5b2t1a2FcIDsKK+mdnumJhOmHkeWxniA+IGhpdGV0c3VraW56b2t1XCA7CivkuInnmb7ku6PoqIAgPiBzYW5ieWFrdWRhaWdlblwgOwor5Lit5Zu95Lyd5p2lID4gY2h1dWdva3VkZW5yYWlcIDsKK+eti+eEoeWKm+eXhyA+IGtpbm11cnlva3VzaG91XCA7CivmtYHpgJros4fmnKwgPiByeXV1dHN1dXNoaWhvblwgOwor56m65Y2z5piv6ImyID4ga3V1c29rdXplc2hpa2lcIDsKK+aVmeiCsuaUuemdqSA+IGt5b3Vpa3VrYWlrYWt1XCA7CivliIfplovmiYvooZMgPiBzZWtrYWlzaHVqdXRzdVwgOwor5pWR6K235rS75YuVID4ga3l1dWdva2F0c3Vkb3VcIDsKK+Wuo+S8nea0u+WLlSA+IHNlbmRlbmthdHN1ZG91XCA7CivosqHnlKPnm67pjLIgPiB6YWlzYW5tb2t1cm9rdVwgOwor5q2j5bi457WC5LqGID4gc2Vpam91c2h1dXJ5b3VcIDsKK+S6oeWRveeUn+a0uyA+IGJvdW1laXNlaWthdHN1XCA7CivlhKrotoropIflkIggPiB5dXVldHN1ZnVrdWdvdVwgOwor57SU5pel5pys5byPID4ganVuJyduaWhvbnNoaWtpXCA7CivmiYvlvaLlibLlvJUgPiB0ZWdhdGF3YXJpYmlraVwgOwor5YuV54mp5bSH5oudID4gZG91YnV0c3VzdXVoYWlcIDsKK+WFseWQjOS9j+WuhSA+IGt5b3Vkb3VqdXV0YWt1XCA7CivmnInooovli5XniakgPiB5dXV0YWlkb3VidXRzdVwgOwor6KKL5bCP6Lev5paHID4gZnVrdXJva291amlidW5cIDsKK+eZveeggumdkuadviA+IGhha3VzaGFzZWlzaG91XCA7CivoirHlq4HlvqHlr64gPiBoYW5heW9tZWdvcnlvdVwgOwor5paw6Zmz5Luj6KydID4gc2hpbmNoaW50YWlzaGFcIDsKK+S4gOWFremKgOihjCA+IGljaGlyb2t1Z2lua291XCA7CivlsLHogbfmlqHml4sgPiBzaHV1c2hva3Vhc3NlblwgOwor6Z6t5q+b6Jmr55eHID4gYmVubW91Y2h1dXNob3VcIDsKK+e1tuS9k+e1tuWRvSA+IHpldHRhaXpldHN1bWVpXCA7Civnsr7npZ7liIbmnpAgPiBzZWlzaGluYnVuc2VraVwgOwor57O75YiX5Lya56S+ID4ga2VpcmV0c3VnYWlzaGFcIDsKK+WIhuWtkOmWk+WKmyA+IGJ1bnNoaWthbnJ5b2t1XCA7CivkvIHmpa3miKbnlaUgPiBraWd5b3VzZW5yeWFrdVwgOwor5Zu95rCR5omA5b6XID4ga29rdW1pbnNob3Rva3VcIDsKK+i8uOWHuuWItumZkCA+IHl1c2h1dHN1c2VpZ2VuXCA7Civnibnlrprpipjmn4QgPiB0b2t1dGVpbWVpZ2FyYVwgOwor6LKh5YuZ5L2T6LOqID4gemFpbXV0YWlzaGl0c3VcIDsKK+itpuWvn+WtpuagoSA+IGtlaXNhdHN1Z2Fra291XCA7CivkuI3ms5XkvrXlhaUgPiBmdWhvdXNoaW4nJ255dXVcIDsKK+eUn+a0u+ioreioiCA+IHNlaWthdHN1c2Vra2VpXCA7Civou73oloTnn63lsI8gPiBrZWloYWt1dGFuc2hvdVwgOwor566X6KGT5bmz5Z2HID4gc2FuanV0c3VoZWlraW5cIDsKK+WNs+W4reaWmeeQhiA+IHNva3VzZWtpcnlvdXJpXCA7CivniannkIbnmYLms5UgPiBidXRzdXJpcnlvdWhvdVwgOwor6Z2S6YW45Lit5q+SID4gc2Vpc2FuY2h1dWRva3VcIDsKK+Wul+aVmeazleS6uiA+IHNodXVreW91aG91amluXCA7CivlhpnnnJ/mpI3lrZcgPiBzaGFzaGluc2hva3VqaVwgOwor57eK57iu6LKh5pS/ID4ga2luc2h1a3V6YWlzZWlcIDsKK+WNmOaAp+eUn+auliA+IHRhbnNlaXNlaXNob2t1XCA7Civpq5jnrYnnlJ/niakgPiBrb3V0b3VzZWlidXRzdVwgOwor6IiI5ZGz5rSl44CFID4ga3lvdW1pc2hpbnNoaW5cIDsKK+S/neiovOeJm+S5syA+IGhvc2hvdWd5dXVueXV1XCA7Civlj5fog47oqr/nr4AgPiBqdXRhaWNob3VzZXRzdVwgOwor6YCP5p6Q55mC5rOVID4gdG91c2VraXJ5b3Vob3VcIDsKK+aEn+immuelnue1jCA+IGthbmtha3VzaGlua2VpXCA7CivlsILploDnn6XorZggPiBzZW5tb25jaGlzaGlraVwgOwor6LuN5ouh56u25LqJID4gZ3Vua2FrdWt5b3Vzb3VcIDsKK+eZu+WgtOS6uueJqSA+IHRvdWpvdWppbmJ1dHN1XCA7CivpnZ7nj77lrp/nmoQgPiBoaWdlbmppdHN1dGVraVwgOwor6YCG5oCn55+z6bm4ID4gZ3lha3VzZWlzZWtrZW5cIDsKK+W5vemWgOeLreeqhCA+IHl1dW1vbmt5b3VzYWt1XCA7CivpgKPpgqblvZPlsYAgPiByZW5wb3V0b3VreW9rdVwgOwor55u05bCE5pel5YWJID4gY2hva3VzaGFuaWtrb3VcIDsKK+WFiOS7u+WwhuagoSA+IHNlbicnbmluc2hvdWtvdVwgOwor6Ky55Y6z5a6f55u0ID4ga2luZ2Vuaml0Y2hva3VcIDsKK+W6l+mgreWPluW8lSA+IHRlbnRvdXRvcmloaWtpXCA7Civnmbrlo7LnpoHmraIgPiBoYXRzdWJhaWtpbnNoaVwgOwor5ZOB6LOq566h55CGID4gaGluc2hpdHN1a2FucmlcIDsKK+e3qOWFpeippumokyA+IGhlbicnbnl1dXNoaWtlblwgOwor5Lyd6YGU6Zai5pWwID4gZGVudGF0c3VrYW5zdXVcIDsKK+WwveW/oOWgseWbvSA+IGppbmNodXVob3Vrb2t1XCA7CivlirTkvb/ljZToqr8gPiByb3VzaGlreW91Y2hvdVwgOwor55m+6Imy55y86Y+hID4gaHlha3Vpcm9tZWdhbmVcIDsKK+S4reaAp+WtkOadnyA+IGNodXVzZWlzaGlzb2t1XCA7Civnt4rmgKXlr77nrZYgPiBraW5reXV1dGFpc2FrdVwgOwor5Y2w5Yi35oqA6KGTID4gaW5zYXRzdWdpanV0c3VcIDsKK+W/g+eahOihqOekuiA+IHNoaW50ZWtpaHlvdWppXCA7CivlkI3miYDml6fot6EgPiBtZWlzaG9reXV1c2VraVwgOwor5oqV6LOH5L+h6KiXID4gdG91c2hpc2hpbnRha3VcIDsKK+aWsOmfk+WbveWFmiA+IHNoaW5rYW5rb2t1dG91XCA7Civlm73pmpvmnaHntIQgPiBrb2t1c2Fpam91eWFrdVwgOwor5LiD5aCC5Ly96JeNID4gc2hpY2hpZG91Z2FyYW5cIDsKK+imquaXj+mWouS/giA+IHNoaW56b2t1a2Fua2VpXCA7CivlgpjlvaLnoo3lrZAgPiBrYXNhZ2F0YWdhaXNoaVwgOwor5oKq5ryi5bCP6KqsID4gYWtrYW5zaG91c2V0c3VcIDsKK+WFrOaVteS4gOWPtyA+IGtvdXRla2lpY2hpZ291XCA7CivmsLTos6rmsZrmv4EgPiBzdWlzaGl0c3VvZGFrdVwgOwor57K+56We55mC5rOVID4gc2Vpc2hpbnJ5b3Vob3VcIDsKK+iMq+eEtuiHquWksSA+IGJvdXplbmppc2hpdHN1XCA7CivlnLDos6rmmYLku6MgPiBjaGlzaGl0c3VqaWRhaVwgOwor56uL5YWl56aB5q2iID4gdGFjaGlpcmlraW5zaGlcIDsKK+Wkp+WQjOWbo+e1kCA+IGRhaWRvdWRhbmtldHN1XCA7Civosq/ph5HpgJrluLMgPiBjaG9raW50c3V1Y2hvdVwgOwor5paO5oiS5rKQ5rW0ID4gc2Fpa2FpbW9rdXlva3VcIDsKK+aWsOWItuWkp+WtpiA+IHNoaW5zZWlkYWlnYWt1XCA7CivlhbHlkIzosqzku7sgPiBreW91ZG91c2VraW5pblwgOwor5paw6IGe55m66KGoID4gc2hpbmJ1bmhhcHB5b3VcIDsKK+i7iuWGheaUueacrSA+IHNoYW5haWthaXNhdHN1XCA7CivmmIbomavlrabogIUgPiBrb25jaHV1Z2FrdXNoYVwgOwor6YCA6IG35bm06YeRID4gdGFpc2hva3VuZW5raW5cIDsKK+WIhuWJsue1seayuyA+IGJ1bmthdHN1dG91Y2hpXCA7CivnorrnjofpgY7nqIsgPiBrYWt1cml0c3VrYXRlaVwgOwor56CU56m255m66KGoID4ga2Vua3l1dWhhcHB5b3VcIDsKK+aXp+e0hOiBluabuCA+IGt5dXV5YWt1c2Vpc2hvXCA7CivokrLpib7lhbXoiI4gPiBrYW1hYm9rb2hlaXNoYVwgOwor57WM6LK756+A57SEID4ga2VpaGlzZXRzdXlha3VcIDsKK+eti+iQjue4rueXhyA+IGtpbicnaXNodWt1c2hvdVwgOwor5YSq55Sf5omL6KGTID4geXV1c2Vpc2h1anV0c3VcIDsKK+WFrOWFseaWmemHkSA+IGtvdWt5b3VyeW91a2luXCA7CivlvLfliLbkuK3mlq0gPiBreW91c2VpY2h1dWRhblwgOwor5LiH5pyJ5byV5YqbID4gYmFuJyd5dXVpbnJ5b2t1XCA7Civnq4vlpKrlrZDlvI8gPiByaXR0YWlzaGlzaGlraVwgOwor5pel5YaF5ZGo5pyfID4gbmljaGluYWlzaHV1a2lcIDsKK+aGsuazleino+mHiCA+IGtlbnBvdWthaXNoYWt1XCA7Civnvo7nmoTnlJ/mtLsgPiBiaXRla2lzZWlrYXRzdVwgOwor5Zuj5L2T5Ymy5byVID4gZGFudGFpd2FyaWJpa2lcIDsKK+Wbvemam+S6pOa1gSA+IGtva3VzYWlrb3VyeXV1XCA7CivlhqDnirbpnZnohIggPiBrYW5qb3Vqb3VteWFrdVwgOwor6YCG5LiJ6KeS5b2iID4gZ3lha3VzYW5rYWtrZWlcIDsKK+W4gueri+WtpuagoSA+IHNoaXJpdHN1Z2Fra291XCA7CivopIfpm5HmgKrlpYcgPiBmdWt1emF0c3VrYWlraVwgOwor6auY5bGk5bu656+JID4ga291c291Z2VuY2hpa3VcIDsKK+ecn+ePoOmkiuauliA+IHNoaW5qdXlvdXNob2t1XCA7CivnlLPlkYrnlKjntJkgPiBzaGlua29rdXlvdXNoaVwgOwor5bGA5Zyw5oim5LqJID4ga3lva3VjaGlzZW5zb3VcIDsKK+mHjeimgeS6uueJqSA+IGp1dXlvdWppbmJ1dHN1XCA7CivmtLvniYjljbDliLcgPiBrYXBwYW4nJ2luc2F0c3VcIDsKK+mAo+aXpemAo+WknCA+IHJlbmppdHN1cmVuJyd5YVwgOwor5LiJ6ICF5a++56uLID4gc2Fuc2hhdGFpcml0c3VcIDsKK+axguWmu+W6g+WRiiA+IGt5dXVzYWlrb3Vrb2t1XCA7Civni4LoqIDoh6rmrrogPiBreW91Z2VuamlzYXRzdVwgOwor5oCn5p+T6Imy5L2TID4gc2Vpc2Vuc2hva3V0YWlcIDsKK+WHuOeJiOWNsOWItyA+IHRvcHBhbicnaW5zYXRzdVwgOwor5Yi66Lqr5YyF5LiBID4gc2FzaGltaWJvdWNob3VcIDsKK+aXpeexs+iyv+aYkyA+IG5pY2hpYmVpYm91ZWtpXCA7Civou43kuovljZTlipsgPiBndW5qaWt5b3VyeW9rdVwgOwor5qW16ZmQ54q25oWLID4ga3lva3VnZW5qb3V0YWlcIDsKK+eJqeeQhuePvuixoSA+IGJ1dHN1cmlnZW5zaG91XCA7CivkurrouqvmlLvmkoMgPiBqaW5zaGlua291Z2VraVwgOwor6KiY5oa25Zaq5aSxID4ga2lva3Vzb3VzaGl0c3VcIDsKK+ekvuS8muenqeW6jyA+IHNoYWthaWNoaXRzdWpvXCA7CivkvoPkvoPoq6Toq6QgPiBrYW5rYW5nYWt1Z2FrdVwgOwor5rib5L6h5YSf5Y20ID4gZ2Vua2FzaG91a3lha3VcIDsKK+epuuS4reafu+WvnyA+IGt1dWNodXVzYXNhdHN1XCA7CivntKDkurroip3lsYUgPiBzaGlyb3V0b3NoaWJhaVwgOwor5LiA5YWt5Yud6LKgID4gaWNoaXJva3VzaG91YnVcIDsKK+S6pOmfv+alveWboyA+IGtvdWt5b3VnYWt1ZGFuXCA7CivooYDmtrLpioDooYwgPiBrZXRzdWVraWdpbmtvdVwgOwor5ZWG5ZOB5Zyo6auYID4gc2hvdWhpbnphaWRha2FcIDsKK+eJqeeQhuWtpuiAhSA+IGJ1dHN1cmlnYWt1c2hhXCA7CivlubTnmb7lubTkuK0gPiBuZW5ieWFrdW5lbmp1dVwgOwor5p6d6JGJ5pyr56+AID4gc2hpeW91bWFzc2V0c3VcIDsKK+i7jemaiueUn+a0uyA+IGd1bnRhaXNlaWthdHN1XCA7Civmr5TovIPnmoTlsI8gPiBoaWtha3V0ZWtpc2hvdVwgOwor5r2c5Zyo6IO95YqbID4gc2VuemFpbm91cnlva3VcIDsKK+W3peWtpuWNmuWjqyA+IGtvdWdha3VoYWt1c2hpXCA7CivmnInlhJ/lpZHntIQgPiB5dXVzaG91a2VpeWFrdVwgOwor5paw6IGe5bqD5ZGKID4gc2hpbmJ1bmtvdWtva3VcIDsKK+S4iue0muabuemVtyA+IGpvdWt5dXVzb3VjaG91XCA7CivkubHoqLrkubHnmYIgPiByYW5zaGlucmFucnlvdVwgOwor6ZuG5ZCI5L2P5a6FID4gc2h1dWdvdWp1dXRha3VcIDsKK+W+oemjn+S6i+WHpiA+IG9zaG9rdWppZG9rb3JvXCA7CivppIrmrpbnnJ/nj6AgPiB5b3VzaG9rdXNoaW5qdVwgOwor5YaF6YOo5ZGK55m6ID4gbmFpYnVrb2t1aGF0c3VcIDsKK+WQjeebruizg+mHkSA+IG1laW1va3VjaGluZ2luXCA7Civnm7jlr77mub/luqYgPiBzb3V0YWlzaGl0c3Vkb1wgOwor5pys5pyr6Lui5YCSID4gaG9ubWF0c3V0ZW50b3VcIDsKK+WtpuagoeeUn+a0uyA+IGdha2tvdXNlaWthdHN1XCA7CivlhaXlm73mn7voqLwgPiBueXV1a29rdXNhc2hvdVwgOwor6Ieq5b6L56We57WMID4gamlyaXRzdXNoaW5rZWlcIDsKK+WnieanmOS6uuW9oiA+IGFuZXNhbWFuaW5neW91XCA7CivmiKbmiKbmgZDmgZAgPiBzZW5zZW5reW91a3lvdVwgOwor6KGd5pKD6Zai5pWwID4gc2hvdWdla2lrYW5zdXVcIDsKK+W3p+iogOS7pOiJsiA+IGtvdWdlbnJlaXNob2t1XCA7CivlpInmuKnli5XniakgPiBoZW4nJ29uZG91YnV0c3VcIDsKK+WOn+Wni+WLleeJqSA+IGdlbnNoaWRvdWJ1dHN1XCA7CivnqbrplpPoirjooZMgPiBrdXVrYW5nZWlqdXRzdVwgOwor5L6D44CF6Kuk44CFID4ga2Fua2FuZ2FrdWdha3VcIDsKK+mWi+W6l+S8kealrSA+IGthaXRlbmt5dXVneW91XCA7CivlqK/mpb3mlr3oqK0gPiBnb3Jha3VzaGlzZXRzdVwgOwor5Y2K5rC45LmF55qEID4gaGFuJydlaWt5dXV0ZWtpXCA7Civpo5/ns6fkuovmg4UgPiBzaG9rdXJ5b3VqaWpvdVwgOwor5Y+v6YCG5Y+N5b+cID4ga2FneWFrdWhhbicnbm91XCA7CivnibnliKXkvJrlk6EgPiB0b2t1YmV0c3VrYWlpblwgOwor5q275rS75ZWP6aGMID4gc2hpa2F0c3Vtb25kYWlcIDsKK+ezu+e1seelnuWtpiA+IGtlaXRvdXNoaW5nYWt1XCA7Civou5/pqqjprZrpoZ4gPiBuYW5rb3RzdWd5b3J1aVwgOwor5ZCE5Lq65ZCE5qeYID4ga2FrdWppbmtha3V5b3VcIDsKK+mAmuS/oeS6i+alrSA+IHRzdXVzaGluamlneW91XCA7Civosr/mmJPpmpzlo4EgPiBib3Vla2lzaG91aGVraVwgOwor5Y2Y5LiA6YCa6LKoID4gdGFuJydpdHN1dHN1dWthXCA7CivljYPkuKHlvbnogIUgPiBzZW5yeW91eWFrdXNoYVwgOwor5Yiw552A5pmC5Yi7ID4gdG91Y2hha3VqaWtva3VcIDsKK+amgueul+imgeaxgiA+IGdhaXNhbicneW91a3l1dVwgOwor5Zu95rCR5bm06YeRID4ga29rdW1pbicnbmVua2luXCA7Civms6XmsLTnqLzmpa0gPiBkb3JvbWl6dWthZ3lvdVwgOwor5Zyo5pel57Gz6LuNID4gemFpbmljaGliZWlndW5cIDsKK+i2iuWig+WFpeWtpiA+IGVra3lvdW55dXVnYWt1XCA7CivmlbDnkIblk7LlraYgPiBzdXVyaXRldHN1Z2FrdVwgOwor5ZSv54mp5Y+y6KazID4geXVpYnV0c3VzaGlrYW5cIDsKK+WVhualreWtpuagoSA+IHNob3VneW91Z2Fra291XCA7Civlt6blpKfmi6zlvKcgPiBoaWRhcmlkYWlrYWtrb1wgOwor5rCR5peP57K+56WeID4gbWluem9rdXNlaXNoaW5cIDsKK+Wun+WKm+ihjOeCuiA+IGppdHN1cnlva3Vrb3VpXCA7Civmtbfntr/li5XniakgPiBrYWltZW5kb3VidXRzdVwgOwor57Gz6LuN5YW15YqbID4gYmVpZ3VuaGVpcnlva3VcIDsKK+WwseWtpuW5tOm9oiA+IHNodXVnYWt1bmVucmVpXCA7CivpibHnianos4fmupAgPiBrb3VidXRzdXNoaWdlblwgOwor6Luf5byP6YeO55CDID4gbmFuc2hpa2l5YWt5dXVcIDsKK+S/oeiol+e1seayuyA+IHNoaW50YWt1dG91Y2hpXCA7CivntYzmuIjmtLvli5UgPiBrZWl6YWlrYXRzdWRvdVwgOwor5YW15byP5L2T5pONID4gaGVpc2hpa2l0YWlzb3VcIDsKK+eUn+aulue0sOiDniA+IHNlaXNob2t1c2FpYm91XCA7CivlnLDlvaLmuKzph48gPiBjaGlrZWlzb2t1cnlvdVwgOwor5ZWG5qWt6LOH5pysID4gc2hvdWd5b3VzaGlob25cIDsKK+aVsOWApOebruaomSA+IHN1dWNoaW1va3VoeW91XCA7CivkuIDlvpfkuIDlpLEgPiBpdHRva3Vpc3NoaXRzdVwgOwor6YCa5L+h6LKp5aOyID4gdHN1dXNoaW5oYW5iYWlcIDsKK+W8t+WItuWft+ihjCA+IGt5b3VzZWlzaGlra291XCA7Civlubvopprnl4fnirYgPiBnZW5rYWt1c2hvdWpvdVwgOwor5YyX6Zm45Zyw5pa5ID4gaG9rdXJpa3VjaGlob3VcIDsKK+WJsuW8leeZuuihjCA+IHdhcmliaWtpaGFra291XCA7CivluoPloLHmtLvli5UgPiBrb3Vob3VrYXRzdWRvdVwgOwor5bGx6auY5bi95a2QID4geWFtYXRha2Fib3VzaGlcIDsKK+afk+iJsuW3peWgtCA+IHNlbnNob2t1a291am91XCA7CivlhazlvI/oqKrllY8gPiBrb3VzaGlraWhvdW1vblwgOwor57eP5ZCI6ZaL55m6ID4gc291Z291a2FpaGF0c3VcIDsKK+mAo+eri+aUv+aoqSA+IHJlbnJpdHN1c2Vpa2VuXCA7Civlt67liKXooajnj74gPiBzYWJldHN1aHlvdWdlblwgOwor5qip5Yqb6ZeY5LqJID4ga2Vucnlva3V0b3Vzb3VcIDsKK+ijveWTgeaIpueVpSA+IHNlaWhpbnNlbnJ5YWt1XCA7CivliIbmsLTlsbHohIggPiBidW5zdWlzYW5teWFrdVwgOwor6KqY6Zu75q2j5o6lID4geXV1ZGVuc2Vpc2V0c3VcIDsKK+efpeimmuelnue1jCA+IGNoaWtha3VzaGlua2VpXCA7CivpgJDmnaHlr6norbAgPiBjaGlrdWpvdXNoaW5naVwgOwor5Y2D5bO25YiX5bO2ID4gY2hpc2hpbWFyZXR0b3VcIDsKK+i8uOWHuui2hemBjiA+IHl1c2h1dHN1Y2hvdWthXCA7CivlsIrnjovoqI7luZUgPiBzb24nJ25vdXRvdWJha3VcIDsKK+aDheWgsemAmuS/oSA+IGpvdWhvdXRzdXVzaGluXCA7CivotoXotorkuqTku6MgPiBjaG91ZXRzdWtvdXRhaVwgOwor55Sf5rS756m66ZaTID4gc2Vpa2F0c3VrdXVrYW5cIDsKK+WJjeeri+iFuueCjiA+IHplbnJpdHN1c2VuJydlblwgOwor6KGM5pS/5pS56Z2pID4gZ3lvdXNlaWthaWtha3VcIDsKK+W+i+S7pOWbveWutiA+IHJpdHN1cnlvdWtva2thXCA7Civlv4PpnIrnj77osaEgPiBzaGlucmVpZ2Vuc2hvdVwgOwor55Sf6KqV55m+5bm0ID4gc2VpdGFuaHlha3VuZW5cIDsKK+iHquWLleedgOS/oSA+IGppZG91Y2hha3VzaGluXCA7CivnrKzkuInli6LlipsgPiBkYWlzYW5zZWlyeW9rdVwgOwor5pu455WZ6YO15L6/ID4ga2FraXRvbWV5dXViaW5cIDsKK+efpeitmOS9k+ezuyA+IGNoaXNoaWtpdGFpa2VpXCA7Civpm4blkIjoqJjov7AgPiBzaHV1Z291a2lqdXRzdVwgOwor5LiJ55m+6Ku45L6vID4gc2FuYnlha3VzaG9rb3VcIDsKK+Wkp+ihhuaWh+WtpiA+IHRhaXNodXVidW5nYWt1XCA7CivkuK3nrYnmlZnogrIgPiBjaHV1dG91a3lvdWlrdVwgOwor5pWZ6IKy6KGM5pS/ID4ga3lvdWlrdWd5b3VzZWlcIDsKK+atpuijheS4reeriyA+IGJ1c291Y2h1dXJpdHN1XCA7CivlubPlkozljZTlipsgPiBoZWl3YWt5b3VyeW9rdVwgOwor6Zu76YmE5Lya56S+ID4gZGVudGV0c3VnYWlzaGFcIDsKK+WHuuW4reaXpeaVsCA+IHNodXNzZWtpbmlzc3V1XCA7CivnnIznq4vnl4XpmaIgPiBrZW5yaXRzdWJ5b3VpblwgOwor57KS57KS6L6b6IumID4gcnl1dXJ5dXVzaGlua3VcIDsKK+WBj+aXgeWGoOiEmiA+IGhlbmJvdWthbmt5YWt1XCA7Civosqnlo7Lkv4PpgLIgPiBoYW5iYWlzb2t1c2hpblwgOwor5L+h6KiX5oqV6LOHID4gc2hpbnRha3V0b3VzaGlcIDsKK+S4reWwj+S8gealrSA+IGNodXVzaG91a2lneW91XCA7CivkuInooYzluoPlkYogPiBzYW5neW91a291a29rdVwgOwor6KGA5ray5b6q55KwID4ga2V0c3Vla2lqdW5rYW5cIDsKK+mAo+e1kOaxuueulyA+IHJlbmtldHN1a2Vzc2FuXCA7Civpqqjou5/ljJbnl4cgPiBrb3RzdW5hbmthc2hvdVwgOwor5pS/5rK75ZOy5a2mID4gc2Vpaml0ZXRzdWdha3VcIDsKK+WVhualreaUvumAgSA+IHNob3VneW91aG91c291XCA7Civlm73pmLLnt4/nnIEgPiBrb2t1Ym91c291c2hvdVwgOwor55Sf5rS75oyH5bCOID4gc2Vpa2F0c3VzaGlkb3VcIDsKK+eCjueGseWcsOeNhCA+IGVuJyduZXRzdWppZ29rdVwgOwor5YWr6Z2i546y55OPID4gaGFjaGltZW5yZWlyb3VcIDsKK+mdouS8muisnee1tiA+IG1lbmthaXNoYXpldHN1XCA7CivpgZPot6/mqJnorZggPiBkb3Vyb2h5b3VzaGlraVwgOwor5Zu95Za26YCa5L+hID4ga29rdWVpdHN1dXNoaW5cIDsKK+mBqeadkOmBqeaJgCA+IHRla2l6YWl0ZWtpc2hvXCA7Civliofnl4fogp3ngo4gPiBnZWtpc2hvdWthbicnZW5cIDsKK+eJqeaDhemokueEtiA+IGJ1dHN1am91c291emVuXCA7CivlhazmsJHnlJ/mtLsgPiBrb3VtaW5zZWlrYXRzdVwgOwor5YWl5a2m6Kmm6aiTID4gbnl1dWdha3VzaGlrZW5cIDsKK+e1tuWvvue1tuWRvSA+IHpldHRhaXpldHN1bWVpXCA7CivkuovjgIXnianjgIUgPiBqaWppYnV0c3VidXRzdVwgOwor5YCL5YCL5Yil5YilID4ga29rb2JldHN1YmV0c3VcIDsKK+WQiOWUsemaiumVtyA+IGdhc3Nob3V0YWljaG91XCA7Civkub7nh6XniZvkubMgPiBrYW5zb3VneXV1bnl1dVwgOwor55u057O75bCK5bGeID4gY2hva2tlaXNvbnpva3VcIDsKK+WFpeWtpumhmOabuCA+IG55dXVnYWt1Z2Fuc2hvXCA7Civlh7rnmbrmmYLplpMgPiBzaHVwcGF0c3VqaWthblwgOwor5Li76KaB5Lq654mpID4gc2h1eW91amluYnV0c3VcIDsKK+aWh+WtpuS9nOWTgSA+IGJ1bmdha3VzYWt1aGluXCA7Civou73kvr/piYTpgZMgPiBrZWliZW50ZXRzdWRvdVwgOwor5Ymy5byV5biC5aC0ID4gd2FyaWJpa2lzaGlqb3VcIDsKK+Wksei4quWuo+WRiiA+IHNoaXNzb3VzZW5rb2t1XCA7CivljJblrabntZDlkIggPiBrYWdha3VrZXRzdWdvdVwgOwor5L+d6Zm65paZ546HID4gaG9rZW5yeW91cml0c3VcIDsKK+S/oei2iuacrOe3miA+IHNoaW5ldHN1aG9uc2VuXCA7CivnpZ7ntYzkuK3mnqIgPiBzaGlua2VpY2h1dXN1dVwgOwor55m65YWJ5YuV54mpID4gaGFra291ZG91YnV0c3VcIDsKK+ikh+W8j+eBq+WxsSA+IGZ1a3VzaGlraWthemFuXCA7CivloIXlv43kuI3mipwgPiBrZW4nJ25pbmZ1YmF0c3VcIDsKK+iAkOS5j+eUn+a0uyA+IHRhaWJvdXNlaWthdHN1XCA7CivnpL7kvJrpgJrlv7UgPiBzaGFrYWl0c3V1bmVuXCA7CivmjqXlrqLmhYvluqYgPiBzZWtreWFrdXRhaWRvXCA7Civou73niIbmkoPmqZ8gPiBrZWliYWt1Z2VraWtpXCA7CivnvbLlkI3mjbrljbAgPiBzaG9tZWluYXRzdWluXCA7Civog7jpg6jnlr7mgqMgPiBreW91YnVzaGlra2FuXCA7CivosaHniZnlj5blvJUgPiB6b3VnZXRvcmloaWtpXCA7Civml6Xmm5zlpKflt6UgPiBuaWNoaXlvdWRhaWt1XCA7Civnm67njonllYblk4EgPiBtZWRhbWFzaG91aGluXCA7Civoo73olqzkvJrnpL4gPiBzZWl5YWt1Z2Fpc2hhXCA7CivmipXlhYnnhafmmI4gPiB0b3Vrb3VzaG91bWVpXCA7CivmuIXlu4nmvZTnmb0gPiBzZWlyZW5rZXBwYWt1XCA7CivmlbXliY3pgIPkuqEgPiB0ZWtpemVudG91Ym91XCA7Civml6XliIrmlrDogZ4gPiBuaWtrYW5zaGluYnVuXCA7CivmirHohbnntbblgJIgPiBob3VmdWt1emV0dG91XCA7CivmgqromZDnhKHpgZMgPiBha3VneWFrdW11ZG91XCA7Civlm73lrrbmqKnlipsgPiBrb2trYWtlbnJ5b2t1XCA7CivljZfmtIvoq7jls7YgPiBuYW4nJ3lvdXNob3RvdVwgOwor5Zua5Lq65Yq05YONID4gc2h1dWppbnJvdWRvdVwgOwor5Yqj562J6Kaz5b+1ID4gcmV0dG91a2FuJyduZW5cIDsKK+mWouS/guWumOW6gSA+IGthbmtlaWthbmNob3VcIDsKK+i+suawkeaWh+WtpiA+IG5vdW1pbmJ1bmdha3VcIDsKK+iHqueEtuePvuixoSA+IHNoaXplbmdlbnNob3VcIDsKK+iFjuiHk+e1kOefsyA+IGppbnpvdWtlc3Nla2lcIDsKK+aWveaUv+aWuemHnSA+IHNoaXNlaWhvdXNoaW5cIDsKK+Wkqeeruua1quS6uiA+IHRlbmppa3Vyb3VuaW5cIDsKK+mciumtguS4jea7hSA+IHJlaWtvbmZ1bWV0c3VcIDsKK+WFrOWFsee1hOWQiCA+IGtvdWt5b3VrdW1pYWlcIDsKK+aciee3mumbu+S/oSA+IHl1dXNlbmRlbnNoaW5cIDsKK+ihgOihjOmanOWusyA+IGtla2tvdXNob3VnYWlcIDsKK+S6uueahOizh+a6kCA+IGppbnRla2lzaGlnZW5cIDsKK+WcsOaWueihjOaUvyA+IGNoaWhvdWd5b3VzZWlcIDsKK+mch+WkqeWLleWcsCA+IHNoaW50ZW5kb3VjaGlcIDsKK+esrOS4ieW4neWbvSA+IGRhaXNhbnRlaWtva3VcIDsKK+WkqeaWh+WtpuiAhSA+IHRlbm1vbmdha3VzaGFcIDsKK+a3seWknOaUvumAgSA+IHNoaW4nJ3lhaG91c291XCA7Civpn7Plo7DlvaLlvI8gPiBvbnNlaWtlaXNoaWtpXCA7CivkuqTpgJrllY/poYwgPiBrb3V0c3V1bW9uZGFpXCA7CivlhazlhbHmipXos4cgPiBrb3VreW91dG91c2hpXCA7CivlioPmmYLku6PnmoQgPiBrYWt1amlkYWl0ZWtpXCA7CivlkIzml4/kvJrnpL4gPiBkb3V6b2t1Z2Fpc2hhXCA7Civlv4PnkIbmj4/lhpkgPiBzaGlucmlieW91c2hhXCA7CivmioDooZPmsLTmupYgPiBnaWp1dHN1c3VpanVuXCA7CivnkIblrabljZrlo6sgPiByaWdha3VoYWt1c2hpXCA7CivlsYDmiYDpurvphZQgPiBreW9rdXNob21hc3VpXCA7CivnlKPliKXkvJrorbAgPiBzYW5iZXRzdWthaWdpXCA7CivlsLHlrablhZDnq6UgPiBzaHV1Z2FrdWppZG91XCA7CivnqbrkuK3ntabmsrkgPiBrdXVjaHV1a3l1dXl1XCA7Civlm73pmpvopo/moLwgPiBrb2t1c2Fpa2lrYWt1XCA7CivlrabmoKHmlrDogZ4gPiBnYWtrb3VzaGluYnVuXCA7Civmg4XloLHnlKPmpa0gPiBqb3Vob3VzYW5neW91XCA7CivnmbvpjLLnlarlj7cgPiB0b3Vyb2t1YmFuZ291XCA7CivlnJ/mnKjlt6XlraYgPiBkb2Jva3Vrb3VnYWt1XCA7CivnlJ/kvZPlj43lv5wgPiBzZWl0YWloYW4nJ25vdVwgOwor6LGh5b605Li7576pID4gc2hvdWNob3VzaHVnaVwgOwor6Z+z5qW95pWZ6IKyID4gb25nYWt1a3lvdWlrdVwgOwor6Kaz5ris5Zyw54K5ID4ga2Fuc29rdWNoaXRlblwgOwor5oqA6KGT5ZCM5aOrID4gZ2lqdXRzdWRvdXNoaVwgOwor5b+c5oCl5pS75pKDID4gb3VreXV1a291Z2VraVwgOwor5ZCM5LuB5pWZ5LyaID4gZG91amlua3lvdWthaVwgOwor5a6f5YON5pmC6ZaTID4gaml0c3Vkb3VqaWthblwgOwor6Z2S56m66aeQ6LuKID4gYW96b3JhY2h1dXNoYVwgOwor6Zu75Yqb6Ly46YCBID4gZGVucnlva3V5dXNvdVwgOwor6LuN6ZqK5pWZ6IKyID4gZ3VudGFpa3lvdWlrdVwgOwor6YGg5rSL5ryB5qWtID4gZW4nJ3lvdWd5b2d5b3VcIDsKK+S/nemanOWNoOmgmCA+IGhvc2hvdXNlbnJ5b3VcIDsKK+S6pOaPm+azleWJhyA+IGtvdWthbmhvdXNva3VcIDsKK+eJveW8leeZguazlSA+IGtlbicnaW5yeW91aG91XCA7Civpp4XkvJ3nq7botbAgPiBla2lkZW5reW91c291XCA7CivliIfmra/mibzohZUgPiBzZXNzaGl5YWt1d2FuXCA7Civlm6PkvZPkuqTmuIkgPiBkYW50YWlrb3VzaG91XCA7Civkuq3kuLvplqLnmb0gPiB0ZWlzaHVrYW5wYWt1XCA7CivkuIDmrrXli5XoqZ4gPiBpY2hpZGFuZG91c2hpXCA7CivkuIDoiKzluZXlg5ogPiBpcHBhbmJha3VyeW91XCA7Civlr53lj7DliJfou4ogPiBzaGluZGFpcmVzc2hhXCA7CivmipXmk7Lnq7bmioAgPiB0b3V0ZWtpa3lvdWdpXCA7CivmsJfosaHpgJrloLEgPiBraXNob3V0c3V1aG91XCA7CivplovmnpDlj7DlnLAgPiBrYWlzZWtpZGFpY2hpXCA7Civlrp/nlKjkuLvnvqkgPiBqaXRzdXlvdXNodWdpXCA7Civlt6XloLTlrp/nv5IgPiBrb3Vqb3VqaXNzaHV1XCA7CivkuK3ntpnosr/mmJMgPiBjaHV1a2VpYm91ZWtpXCA7CivmgKfog73nibnmgKcgPiBzZWlub3V0b2t1c2VpXCA7CivmnIDlvozpgJrniZIgPiBzYWlnb3RzdXVjaG91XCA7Civlm73pmpvntZDlqZogPiBrb2t1c2Fpa2Vra29uXCA7CivpgKDmnKzmioDooZMgPiB6b3Vob25naWp1dHN1XCA7CivlpqjlrrPlt6XkvZwgPiBib3VnYWlrb3VzYWt1XCA7CivmsJHml4/mhI/orZggPiBtaW56b2t1aXNoaWtpXCA7CivotIXmsqLkuInmmKcgPiB6ZWl0YWt1emFubWFpXCA7CivlhpnnnJ/oo73niYggPiBzaGFzaGluc2VpaGFuXCA7CivlrabmoKHmlZnogrIgPiBnYWtrb3VreW91aWt1XCA7CivpnKfkuK3kv6Hlj7cgPiBtdWNodXVzaGluZ291XCA7Civnsr7npZ7nirbmhYsgPiBzZWlzaGluam91dGFpXCA7CivllYbnp5HlpKflraYgPiBzaG91a2FkYWlnYWt1XCA7CivlhpnnnJ/ntZDlqZogPiBzaGFzaGlua2Vra29uXCA7CivlhbHlkIzmiKbnt5ogPiBreW91ZG91c2Vuc2VuXCA7CivngavlsbHmtLvli5UgPiBrYXphbmthdHN1ZG91XCA7CivpuqbnqIjntLDlt6UgPiBtdWdpd2FyYXphaWt1XCA7Civli6TlirTmiYDlvpcgPiBraW5yb3VzaG90b2t1XCA7Civpppbnm7jlrpjpgrggPiBzaHVzaG91a2FudGVpXCA7Civoqq3mm7jkuInmmKcgPiBkb2t1c2hvemFubWFpXCA7CivkuK3nrYnmlZnlk6EgPiBjaHV1dG91a3lvdWluXCA7CivkuIDmrKHpm7vmtYEgPiBpY2hpamlkZW5yeXV1XCA7Civlj7DkuK3plqLkv4IgPiB0YWljaHV1a2Fua2VpXCA7Civnp5jlr4bntZDnpL4gPiBoaW1pdHN1a2Vzc2hhXCA7CivmnbHmlrnmi6HlpKcgPiB0b3Vob3VrYWt1ZGFpXCA7Civov5HpmqPoq7jlm70gPiBraW5yaW5zaG9rb2t1XCA7CivlirTlg43pmo7ntJogPiByb3Vkb3VrYWlreXV1XCA7Civosp7mk43oprPlv7UgPiB0ZWlzb3VrYW4nJ25lblwgOwor5rCR6ZaT5Lyd5om/ID4gbWlua2FuZGVuc2hvdVwgOwor6IaA6IOx57WQ55+zID4gYm91a291a2Vzc2VraVwgOwor6Lui5bGF6YCa55+lID4gdGVua3lvdHN1dWNoaVwgOwor57SU5q2j5pWw5a2mID4ganVuc2Vpc3V1Z2FrdVwgOwor55S354i15aSr5Lq6ID4gZGFuc2hha3VmdWppblwgOwor5aGp6JS16aOf5ZOBID4gZW56b3VzaG9rdWhpblwgOwor5LiA6Ie05Zuj57WQID4gaXRjaGlkYW5rZXRzdVwgOwor6K2m5a+f5Zu95a62ID4ga2Vpc2F0c3Vrb2trYVwgOwor57WM5riI55m95pu4ID4ga2VpemFpaGFrdXNob1wgOwor56mA5YCJ5Zyw5bivID4ga29rdXNvdWNoaXRhaVwgOwor55Kw5aKD5LqL5qWtID4ga2Fua3lvdWppZ3lvdVwgOwor57eP5ZCI5ZWG56S+ID4gc291Z291c2hvdXNoYVwgOwor5bCR5bm05Yq05YONID4gc2hvdW5lbnJvdWRvdVwgOwor5LiA5oyZ5Lih5b6XID4gaWtreW9yeW91dG9rdVwgOwor5ris5a6a6KOF572uID4gc29rdXRlaXNvdWNoaVwgOwor5YmN6KGb576O6KGTID4gemVuJydlaWJpanV0c3VcIDsKK+eahuaXouaciOmjnyA+IGthaWtpZ2Vzc2hva3VcIDsKK+WFrOWbo+S9j+WuhSA+IGtvdWRhbmp1dXRha3VcIDsKK+ioreWCmeaKleizhyA+IHNldHN1Yml0b3VzaGlcIDsKK+aXpeW4uOiMtumjryA+IG5pY2hpam91c2FoYW5cIDsKK+e+pOmbhuW/g+eQhiA+IGd1bnNodXVzaGlucmlcIDsKK+eZvuaIpue3tOejqCA+IGh5YWt1c2VucmVubWFcIDsKK+WNs+iIiOipqeS6uiA+IHNva2t5b3VzaGlqaW5cIDsKK+WWhOmao+aUv+etliA+IHplbnJpbnNlaXNha3VcIDsKK+WJjeWPl+WPjuebiiA+IG1hZXVrZXNodXVla2lcIDsKK+WbveawkeeahuWFtSA+IGtva3VtaW5rYWloZWlcIDsKK+mqqOebuOWtpuiAhSA+IGtvc3NvdWdha3VzaGFcIDsKK+aIuOWIpeioquWVjyA+IGtvYmV0c3Vob3Vtb25cIDsKK+eIhuW8vuWjsOaYjiA+IGJha3VkYW5zZWltZWlcIDsKK+mBk+alveaBr+WtkCA+IGRvdXJha3VtdXN1a29cIDsKK+eZkuWCt+e1hOe5lCA+IHl1c2hvdXNvc2hpa2lcIDsKK+eUt+WtkOWtpueUnyA+IGRhbnNoaWdha3VzZWlcIDsKK+iyq+mAmumKg+WJtSA+IGthbnRzdXVqdXVzb3VcIDsKK+aWsOmDjuaWsOWppiA+IHNoaW5yb3VzaGlucHVcIDsKK+epuuaMuuS9nOaIpiA+IGt1dXRlaXNha3VzZW5cIDsKK+mFjeeuoeW3pealrSA+IGhhaWthbmtvdWd5b3VcIDsKK+Wuh+WumemAmuS/oSA+IHVjaHV1dHN1dXNoaW5cIDsKK+etieavlOaVsOWIlyA+IHRvdWhpc3V1cmV0c3VcIDsKK+W6iuS4iua1uOawtCA+IHl1a2F1ZXNoaW5zdWlcIDsKK+iHqueEtueSsOWigyA+IHNoaXplbmthbmt5b3VcIDsKK+aXpeS4reaIpuS6iSA+IG5pdGNodXVzZW5zb3VcIDsKK+aomemhjOmfs+alvSA+IGh5b3VkYWlvbmdha3VcIDsKK+WKo+etieikh+WQiCA+IHJldHRvdWZ1a3Vnb3VcIDsKK+ecvOeQg+mKgOihjCA+IGdhbmt5dXVnaW5rb3VcIDsKK+W4guWgtOWIhuaekCA+IHNoaWpvdWJ1bnNla2lcIDsKK+S4remWk+ippumokyA+IGNodXVrYW5zaGlrZW5cIDsKK+iovOWIuOS8muekviA+IHNob3VrZW5nYWlzaGFcIDsKK+a8j+ipsee1kOWQiCA+IHJvdXdhZ2V0c3Vnb3VcIDsKK+Wbvemam+e0m+S6iSA+IGtva3VzYWlmdW5zb3VcIDsKK+mbhuWbo+ihjOWLlSA+IHNodXVkYW5rb3Vkb3VcIDsKK+i7iuS4oee4pumaiiA+IHNoYXJ5b3VqdXV0YWlcIDsKK+S6pOS7o+aTjealrSA+IGtvdXRhaXNvdWd5b3VcIDsKK+S9nOiAheacquipsyA+IHNha3VzaGFtaXNob3VcIDsKK+ilv+acrOmhmOWvuiA+IG5pc2hpaG9uZ2FuamlcIDsKK+awuOS7o+WAn+WcsCA+IGVpdGFpc2hha3VjaGlcIDsKK+WtkOWurueti+iFqyA+IHNoaWt5dXVraW5zaHVcIDsKK+WIh+aJi+iSkOmbhiA+IGtpdHRlc2h1dXNodXVcIDsKK+WumOiyu+eVmeWtpiA+IGthbnBpcnl1dWdha3VcIDsKK+e3qOmbhuS4u+W5uSA+IGhlbnNodXVzaHVrYW5cIDsKK+eUn+eUo+aKgOihkyA+IHNlaXNhbmdpanV0c3VcIDsKK+awtOW5s+W/nOWKmyA+IHN1aWhlaW91cnlva3VcIDsKK+WFiOerr+aKgOihkyA+IHNlbnRhbmdpanV0c3VcIDsKK+elnuWurueQg+WgtCA+IGppbmd1dWt5dXVqb3VcIDsKK+mfs+alveWkp+WtpiA+IG9uZ2FrdWRhaWdha3VcIDsKK+S+teeVpeihjOeCuiA+IHNoaW5yeWFrdWtvdWlcIDsKK+WFpeWwhOWFiee3miA+IG55dXVzaGFrb3VzZW5cIDsKK+S4ieinkuWHveaVsCA+IHNhbmtha3VrYW5zdXVcIDsKK+eri+S9k+WGmeecnyA+IHJpdHRhaXNoYXNoaW5cIDsKK+Wbvemam+mWouS/giA+IGtva3VzYWlrYW5rZWlcIDsKK+a1hOWcn+ecn+WulyA+IGpvdWRvc2hpbnNodXVcIDsKK+S4ieWbveWQjOebnyA+IHNhbmdva3Vkb3VtZWlcIDsKK+mpmuWkqeWLleWcsCA+IGt5b3V0ZW5kb3VjaGlcIDsKK+epuuS4rea7kei1sCA+IGt1dWNodXVrYXNzb3VcIDsKK+Wbvemam+WVj+mhjCA+IGtva3VzYWltb25kYWlcIDsKK+ekvuWklueZuuS/oSA+IHNoYWdhaWhhc3NoaW5cIDsKK+i3s+aigei3i+aJiCA+IGNob3VyeW91YmFra29cIDsKK+mbhuS4reegsueBqyA+IHNodXVjaHV1aG91a2FcIDsKK+S6uumWk+W3peWtpiA+IG5pbmdlbmtvdWdha3VcIDsKK+i6q+WFg+eiuuiqjSA+IG1pbW90b2tha3VuaW5cIDsKK+W3ruWIpeW+hemBhyA+IHNhYmV0c3V0YWlndXVcIDsKK+WNg+mzpeagvOWtkCA+IGNoaWRvcmlnb3VzaGlcIDsKK+S7j+WDj+S6jOS9kyA+IGJ1dHN1em91bml0YWlcIDsKK+WFqOaZr+WGmeecnyA+IHplbmtlaXNoYXNoaW5cIDsKK+WFrOWFseWbo+S9kyA+IGtvdWt5b3VkYW50YWlcIDsKK+Wghuepjei8quW7uyA+IHRhaXNla2lyaW4nJ25lXCA7CivkuIDoiKznlJ/mtLsgPiBpcHBhbnNlaWthdHN1XCA7CivmqKrmsrPpm7vmqZ8gPiB5b2tvZ2F3YWRlbmtpXCA7CivkuK3ntpnmlL7pgIEgPiBjaHV1a2VpaG91c291XCA7CivnpoHmraLmnaHntIQgPiBraW5zaGlqb3V5YWt1XCA7Civlhajlm73mlL7pgIEgPiB6ZW5rb2t1aG91c291XCA7CivlhZrliKnlhZrnlaUgPiB0b3VyaXRvdXJ5YWt1XCA7CivlpJbkuqTkuqTmuIkgPiBnYWlrb3Vrb3VzaG91XCA7Civlrablo6vpmaLos54gPiBnYWt1c2hpaW5zaG91XCA7CivooYzli5XoqIjnlLsgPiBrb3Vkb3VrZWlrYWt1XCA7CivlhbHmnInosqHnlKMgPiBreW91eXV1emFpc2FuXCA7CivpgLjlpLHliKnnm4ogPiBpc3NoaXRzdXJpZWtpXCA7CivovrLlnLDmlLnpnakgPiBub3VjaGlrYWlrYWt1XCA7CivkuqTpgJrmuIvmu54gPiBrb3V0c3V1anV1dGFpXCA7CivnpZ7ntYzntLDog54gPiBzaGlua2Vpc2FpYm91XCA7Civmpa3nlYzlm6PkvZMgPiBneW91a2FpZGFudGFpXCA7Civli6flloTmh7LmgqogPiBrYW56ZW5jaG91YWt1XCA7CivlhbHnlKPpmaPllrYgPiBreW91c2FuamluJydlaVwgOwor5qyg5bit6KOB5YikID4ga2Vzc2VraXNhaWJhblwgOwor5Y2K6Z2p6KOF5LiBID4gaGFua2F3YXNvdXRlaVwgOwor56u25LqJ5biC5aC0ID4ga3lvdXNvdXNoaWpvdVwgOwor55+l55qE6LKh55SjID4gY2hpdGVraXphaXNhblwgOwor5Y2X5YyX5ZWP6aGMID4gbmFuYm9rdW1vbmRhaVwgOwor56qB54S25aSJ55WwID4gdG90c3V6ZW5oZW4nJ2lcIDsKK+mBqeW/nOmanOWusyA+IHRla2lvdXNob3VnYWlcIDsKK+a3t+i8ieiyqOeJqSA+IGtvbnNhaWthbW90c3VcIDsKK+iAkOmanOWus+aApyA+IHRhaXNob3VnYWlzZWlcIDsKK+i/keimquebuOWnpiA+IGtpbnNoaW5zb3VrYW5cIDsKK+Wkp+mBk+WVhuS6uiA+IGRhaWRvdXNob3VuaW5cIDsKK+S4jeS/oeS7u+ahiCA+IGZ1c2hpbicnbmluJydhblwgOwor5a6u5bu36Z+z5qW9ID4ga3l1dXRlaW9uZ2FrdVwgOwor57ep6KGd5Zyw5bivID4ga2Fuc2hvdWNoaXRhaVwgOwor6KGA5riF5rOo5bCEID4ga2Vzc2VpY2h1dXNoYVwgOwor5Yqg57OW57KJ5LmzID4ga2F0b3VmdW4nJ255dXVcIDsKK+S/oeiyqeS8muekviA+IHNoaW5wYW5nYWlzaGFcIDsKK+WNgeS4gOeMrumHkSA+IGp1dWljaGlrZW5raW5cIDsKK+emj+elieS6i+alrSA+IGZ1a3VzaGlqaWd5b3VcIDsKK+aaluiho+mjvemjnyA+IGRhbicnaWhvdXNob2t1XCA7Civmupbmsbrli53miKYgPiBqdW5rZXNzaG91c2VuXCA7Civph47nlJ/li5XniakgPiB5YXNlaWRvdWJ1dHN1XCA7CivnpL7kvJrnj77osaEgPiBzaGFrYWlnZW5zaG91XCA7CivljJfmrKfoq7jlm70gPiBob2t1b3VzaG9rb2t1XCA7Civoh6rnhLbkvJHkvJogPiBzaGl6ZW5reXV1a2FpXCA7Civoia/kuozljYPnn7MgPiByeW91bmlzZW5zZWtpXCA7CivmloflrabpnZLlubQgPiBidW5nYWt1c2VpbmVuXCA7Civkv67pgZPoqpPpoZggPiBzaHV1ZG91c2VpZ2FuXCA7Civpo5/ns6fmj7TliqkgPiBzaG9rdXJ5b3VlbmpvXCA7CivooYborbDkuIDmsbogPiBzaHV1Z2lpa2tldHN1XCA7CivphbjntKDlkLjlhaUgPiBzYW5zb2t5dXVueXV1XCA7CivnlJ/oh63lnYrkuLsgPiBuYW1hZ3VzYWJvdXp1XCA7Civou43kuovmlr3oqK0gPiBndW5qaXNoaXNldHN1XCA7Civpg7Xkvr/mjK/mm78gPiB5dXViaW5mdXJpa2FlXCA7Civmlrnph53msbrlrpogPiBob3VzaGlua2V0dGVpXCA7CivlsLHmpa3mmYLplpMgPiBzaHV1Z3lvdWppa2FuXCA7Civkurrlj6PmipHliLYgPiBqaW5rb3V5b2t1c2VpXCA7Civou43kurrmganntaYgPiBndW5qaW4nJ29ua3l1dVwgOwor5Lq65bel5rWB55SjID4gamlua291cnl1dXphblwgOwor55yf5Ymj5Yud6LKgID4gc2hpbmtlbnNob3VidVwgOwor6Zqg6YCA55Sf5rS7ID4gaW50YWlzZWlrYXRzdVwgOwor5b255ZOh5aCx6YWsID4geWFrdWluaG91c2h1dVwgOwor5Ymy5byV5pmC6ZaTID4gd2FyaWJpa2lqaWthblwgOwor55m96JGh6JCE6YWSID4gc2hpcm9idWRvdXNodVwgOwor5Yi25pyN5Yi25bi9ID4gc2VpZnVrdXNlaWJvdVwgOwor5Y+k6Imy6JK854S2ID4ga29zaG9rdXNvdXplblwgOwor55WZ572u6YO15L6/ID4gdG9tZW9raXl1dWJpblwgOwor6KiI55S75YCS55SjID4ga2Vpa2FrdXRvdXNhblwgOwor55qG5pei5pel6aOfID4ga2Fpa2luaXNzaG9rdVwgOwor6YCj5oim6YCj5YudID4gcmVuc2VucmVuc2hvdVwgOwor5Lqr5qW95Li7576pID4ga3lvdXJha3VzaHVnaVwgOwor5bqD5ZGK5aqS5L2TID4ga291a29rdWJhaXRhaVwgOwor5Zu95rCR5a+p5p+7ID4ga29rdW1pbnNoaW5zYVwgOwor5re35aOw5ZCI5ZSxID4ga29uc2VpZ2Fzc2hvdVwgOwor56We6YGT5L+h6ICFID4gc2hpbnRvdXNoaW5qYVwgOwor5a6f5rOB5pS+6YCBID4gamlra3lvdWhvdXNvdVwgOwor5YiG5YWJ5YiG5p6QID4gYnVua291YnVuc2VraVwgOwor55Sj5qWt57WE5ZCIID4gc2FuZ3lvdWt1bWlhaVwgOwor5Y+W5o2o6YG45oqeID4gc2h1c2hhc2VudGFrdVwgOwor5Zyw6ZyH5a2m6ICFID4gamlzaGluZ2FrdXNoYVwgOwor5aSn6Ziq5aSn5a2mID4gb29zYWthZGFpZ2FrdVwgOwor56CU56m25pa55rOVID4ga2Vua3l1dWhvdWhvdVwgOwor5pat6YOK56u26LWwID4gZGFua291a3lvdXNvdVwgOwor5q+U6LyD5paH5a2mID4gaGlrYWt1YnVuZ2FrdVwgOwor5aOr6L6y5bel5ZWGID4gc2hpbm91a291c2hvdVwgOwor5Lm+5Z2k5LiA5pOyID4ga2Vua29uJydpdHRla2lcIDsKK+WBnOatouS/oeWPtyA+IHRlaXNoaXNoaW5nb3VcIDsKK+W7uuevieePvuWgtCA+IGtlbmNoaWt1Z2VuYmFcIDsKK+WbvemAo+Wkp+S9vyA+IGtva3VyZW50YWlzaGlcIDsKK+ecieebruengOm6lyA+IGJpbW9rdXNodXVyZWlcIDsKK+aDhee3kumanOWusyA+IGpvdXNob3Nob3VnYWlcIDsKK+isueizgOaWsOW5tCA+IGtpbmdhc2hpbicnbmVuXCA7Civnt7Tnv5LllY/poYwgPiByZW5zaHV1bW9uZGFpXCA7CivkurrnlZznhKHlrrMgPiBqaW5jaGlrdW11Z2FpXCA7CivkuIrmtYHnpL7kvJogPiBqb3VyeXV1c2hha2FpXCA7Civpmbjmtbfnqbrou40gPiByaWt1a2Fpa3V1Z3VuXCA7CivnnJ/nm7joqr/mn7sgPiBzaGluc291Y2hvdXNhXCA7CivooajmlazoqKrllY8gPiBoeW91a2VpaG91bW9uXCA7Civmma7pgJrmlZnogrIgPiBmdXRzdXVreW91aWt1XCA7CivlhazmsJHmlZnogrIgPiBrb3VtaW5reW91aWt1XCA7CivmsLTlrrPlr77nrZYgPiBzdWlnYWl0YWlzYWt1XCA7CivlsIbmnaXlsZXmnJsgPiBzaG91cmFpdGVuYm91XCA7CivlsIvllY/oqr/mm7ggPiBqaW5tb25jaG91c2hvXCA7CivnnYDlvL7ot53pm6IgPiBjaGFrdWRhbmt5b3JpXCA7CivlpKnnnJ/niJvmvKsgPiB0ZW5zaGlucmFubWFuXCA7Civlj43lsITnpZ7ntYwgPiBoYW5zaGFzaGlua2VpXCA7CivpnZLoibLnlLPlkYogPiBhb2lyb3NoaW5rb2t1XCA7CivpgKDlvaLnvo7ooZMgPiB6b3VrZWliaWp1dHN1XCA7Civlj7LnmoTnj77lnKggPiBzaGl0ZWtpZ2VuemFpXCA7CivlhoXpg6jnlJ/mtLsgPiBuYWlidXNlaWthdHN1XCA7Civmp4vpgKDoqJjov7AgPiBrb3V6b3VraWp1dHN1XCA7CivlhbHlrZjlhbHmoIQgPiBreW91em9ua3lvdWVpXCA7CivluK/nirbnlrHnlrkgPiB0YWlqb3Vob3VzaGluXCA7Civnj77lrp/kuLvnvqkgPiBnZW5qaXRzdXNodWdpXCA7CivlubTjgIXmrbPjgIUgPiBuZW4nJ25lbnNhaXNhaVwgOwor56CU56m26KuW5paHID4ga2Vua3l1dXJvbmJ1blwgOwor5pyA57WC57eo5oiQID4gc2Fpc2h1dWhlbnNlaVwgOwor5bCC5L+u5a2m5qChID4gc2Vuc2h1dWdha2tvdVwgOwor5Y+z5Lit5ous5bynID4gbWlnaWNodXVrYWtrb1wgOwor5L+u6YGT6Zmi6ZW3ID4gc2h1dWRvdWluY2hvdVwgOwor5a62552j55u457aaID4ga2F0b2t1c291em9rdVwgOwor5a6/5ZG96KuW6ICFID4gc2h1a3VtZWlyb25qYVwgOwor5rip5bqm6Kq/56+AID4gb25kb2Nob3VzZXRzdVwgOwor6KiA6Kqe6IO95YqbID4gZ2VuZ29ub3VyeW9rdVwgOwor5Yip5r2k6L+95rGCID4gcmlqdW50c3Vpa3l1dVwgOwor57Wx546H55CG6KuWID4gdG91c290c3VyaXJvblwgOwor6Imv6aKo576O5L+XID4gcnlvdWZ1dWJpem9rdVwgOwor5Zu95rCR5a2m5qChID4ga29rdW1pbmdha2tvdVwgOwor5Y2Y54K655Sf5q6WID4gdGFuJydpc2Vpc2hva3VcIDsKK+S6jOWNgeaXpem8oCA+IGhhdHN1a2FuZXp1bWlcIDsKK+iyv+aYk+WPjuaUryA+IGJvdWVraXNodXVzaGlcIDsKK+S6uuW3peW/g+iHkyA+IGppbmtvdXNoaW56b3VcIDsKK+Wkqea0peaXpeWXoyA+IGFtYXRzdWhpdHN1Z2lcIDsKK+e+pOmbhOWJsuaLoCA+IGd1bicneXV1a2Fra3lvXCA7CivlhYjlpKnmooXmr5IgPiBzZW50ZW5iYWlkb2t1XCA7Civkurrlt6Xlv4PogrogPiBqaW5rb3VzaGluYmFpXCA7CivlkbzlkLjkuK3mnqIgPiBrb2t5dXVjaHV1c3V1XCA7Civpp5DnlZnpg6jpmoogPiBjaHV1cnl1dWJ1dGFpXCA7CivmrrrnlJ/npoHmlq0gPiBzZXNzaG91a2luZGFuXCA7CivnhKHpiq3pgYroiIggPiBtdXNlbicneXV1a3lvdVwgOwor5Li75bit5YWo5qipID4gc2h1c2VraXplbmtlblwgOwor55Sy5LmZ5LiZ5LiBID4ga291b3RzdWhlaXRlaVwgOwor6KOc5qyg6YG45oyZID4gaG9rZXRzdXNlbmt5b1wgOwor5b6u6YeP5YiG5p6QID4gYmlyeW91YnVuc2VraVwgOwor5Zyw5Z+f5Luj6KGoID4gY2hpaWtpZGFpaHlvdVwgOwor55S75LiA5Li7576pID4ga2FrdWl0c3VzaHVnaVwgOwor5Lqs6YO95aSn5a2mID4ga3lvdXRvZGFpZ2FrdVwgOwor55Sf5L2T5bel5a2mID4gc2VpdGFpa291Z2FrdVwgOwor5rOh5rKr5YCZ6KOcID4gaG91bWF0c3Vrb3Vob1wgOwor55u457aa6LKh55SjID4gc291em9rdXphaXNhblwgOwor5a++5oim5oiQ57i+ID4gdGFpc2Vuc2Vpc2VraVwgOwor5Zu96Zqb56m65rivID4ga29rdXNhaWt1dWtvdVwgOwor5Zu96YCj57eP5LyaID4ga29rdXJlbnNvdWthaVwgOwor5bCC6ZaA5pWZ6IKyID4gc2VubW9ua3lvdWlrdVwgOwor5Za25qWt5aCx5ZGKID4gZWlneW91aG91a29rdVwgOwor6KGA5ray5qSc5p+7ID4ga2V0c3Vla2lrZW5zYVwgOwor6Z2p5paw5Li7576pID4ga2FrdXNoaW5zaHVnaVwgOwor6Zyy5Ye65pmC6ZaTID4gcm9zaHV0c3VqaWthblwgOwor5oqV56Wo55So57SZID4gdG91aHlvdXlvdXNoaVwgOwor6Jas55So55+z6bm4ID4geWFrdXlvdXNla2tlblwgOwor5Y2Y54us6KGM5YuVID4gdGFuZG9rdWtvdWRvdVwgOwor5aSr5amm55Sf5rS7ID4gZnV1ZnVzZWlrYXRzdVwgOwor6IKJ5L2T6Zai5L+CID4gbmlrdXRhaWthbmtlaVwgOwor6LuN5LqL6K2m5a+fID4gZ3VuamlrZWlzYXRzdVwgOwor5paw5ama5peF6KGMID4gc2hpbmtvbnJ5b2tvdVwgOwor6Zm95oCn5Y+N5b+cID4geW91c2VpaGFuJydub3VcIDsKK+i7uOW3ruW/nOWKmyA+IGppa3VzYW91cnlva3VcIDsKK+S6uumhnuWtpuiAhSA+IGppbnJ1aWdha3VzaGFcIDsKK+atpuWjq+awl+izqiA+IGJ1c2hpa2lzaGl0c3VcIDsKK+esrOS4gOS6uuiAhSA+IGRhaWljaGluaW5zaGFcIDsKK+WutuW6reeUn+a0uyA+IGthdGVpc2Vpa2F0c3VcIDsKK+WNsemZuuS6uueJqSA+IGtpa2VuamluYnV0c3VcIDsKK+Wkp+WtpuaVmeaOiCA+IGRhaWdha3VreW91anVcIDsKK+WJjemAsumBi+WLlSA+IHplbnNoaW4nJ3VuZG91XCA7CivmtLvli5XmiJDmnpwgPiBrYXRzdWRvdXNlaWthXCA7Civnt4/lkIjlj47mlK8gPiBzb3Vnb3VzaHV1c2hpXCA7CivlkITpp4XlgZzou4ogPiBrYWt1ZWtpdGVpc2hhXCA7Civop6blqpLkvZznlKggPiBzaG9rdWJhaXNheW91XCA7Civnp5HlrabmioDooZMgPiBrYWdha3VnaWp1dHN1XCA7CivljbDliLfnlKjntJkgPiBpbnNhdHN1eW91c2hpXCA7CivkurrnmoToqLzmi6AgPiBqaW50ZWtpc2hvdWtvXCA7CivmipforbDmtLvli5UgPiBrb3VnaWthdHN1ZG91XCA7CivlhYjlj5blvpfngrkgPiBzZW5zaHV0b2t1dGVuXCA7CivopIflkIjkvIHmpa0gPiBmdWt1Z291a2lneW91XCA7CivnhKHlt67liKXntJogPiBtdXNhYmV0c3VreXV1XCA7CivlpJrlm73nsY3ou40gPiB0YWtva3VzZWtpZ3VuXCA7Civnq7bkuonkvqHmoLwgPiBreW91c291a2FrYWt1XCA7CivnpL7kvJrkurrmnqAgPiBzaGFrYWlqaW53YWt1XCA7CivllYbmpa3lnLDljLogPiBzaG91Z3lvdWNoaWt1XCA7CivooajlsaTmp4vpgKAgPiBoeW91c291a291em91XCA7Civnsr7npZ7ooZvnlJ8gPiBzZWlzaGluJydlaXNlaVwgOwor6Iiq56m65YaZ55yfID4ga291a3V1c2hhc2hpblwgOwor5LiK5piH5rCX5rWBID4gam91c2hvdWtpcnl1dVwgOwor5YyX5aSn6KW/5rSLID4ga2l0YXRhaXNlaXlvdVwgOwor6KGM5pS/5oyH5bCOID4gZ3lvdXNlaXNoaWRvdVwgOwor5a6a572u5ryB5qWtID4gdGVpY2hpZ3lvZ3lvdVwgOwor5pyA6auY57Sa5ZOBID4gc2Fpa291a3l1dWhpblwgOwor5Ye66aCt5ZG95LukID4gc2h1dHRvdW1laXJlaVwgOwor5Ye66KGA6YGO5aSaID4gc2h1a2tldHN1a2F0YVwgOwor6Zu75a2Q5Ye654mIID4gZGVuc2hpc2h1cHBhblwgOwor6Imy57Sg57Sw6IOeID4gc2hpa2lzb3NhaWJvdVwgOwor6Iqx5auB6KGj6KOzID4gaGFuYXlvbWVpc2hvdVwgOwor5bCP5Y+j54++6YeRID4ga29ndWNoaWdlbmtpblwgOwor5Y2a5a2m5aSa5omNID4gaGFrdWdha3V0YXNhaVwgOwor5aSW5qeY5aSn5ZCNID4gdG96YW1hZGFpbXlvdVwgOwor5Zu95rCR5Li75qipID4ga29rdW1pbnNodWtlblwgOwor5YWs6YeR5qiq6aCYID4ga291a2luJydvdXJ5b3VcIDsKK+i/kemDiui+sualrSA+IGtpbmtvdW5vdWd5b3VcIDsKK+WFqOWbveWkp+S8miA+IHplbmtva3V0YWlrYWlcIDsKK+WQn+mBiuipqeS6uiA+IGdpbicneXV1c2hpamluXCA7CivlhrfmsLTmkanmk6YgPiByZWlzdWltYXNhdHN1XCA7Civmm7LlrabpmL/kuJYgPiBreW9rdWdha3Vhc2VpXCA7CivkvqHmoLznq7bkuokgPiBrYWtha3VreW91c291XCA7CivnpoHmlq3nl4fnirYgPiBraW5kYW5zaG91am91XCA7Civnq5zmlJjomY7mkI8gPiByeXV1am91a29oYWt1XCA7CivmraPlkbPph43ph48gPiBzaG91bWlqdXVyeW91XCA7CivlhazoqLzlvbnloLQgPiBrb3VzaG91eWFrdWJhXCA7CivmuIXmtrzpo7LmlpkgPiBzZWlyeW91aW5yeW91XCA7Civmr5vnrqHnj77osaEgPiBtb3VrYW5nZW5zaG91XCA7CivkvZzmiKblnLDln58gPiBzYWt1c2VuY2hpaWtpXCA7Civlh7rlvLXml4XosrsgPiBzaHV0Y2hvdXJ5b2hpXCA7CivmlL7pgIHnlarntYQgPiBob3Vzb3ViYW5ndW1pXCA7CivmsLjkuYXno4Hnn7MgPiBlaWt5dXVqaXNoYWt1XCA7Civlo7Lmjpvli5jlrpogPiB1cmlrYWtla2Fuam91XCA7CivplpPlrq7mtbfls6EgPiBtYW1peWFrYWlreW91XCA7CivnjYTkuK3ml6XoqJggPiBnb2t1Y2h1dW5pa2tpXCA7CivmsojmgJ3pu5nogIMgPiBjaGluc2hpbW9ra291XCA7CivotoXlm73lrrbnmoQgPiBjaG91a29ra2F0ZWtpXCA7CivpmLLngavlu7rnr4kgPiBib3VrYWtlbmNoaWt1XCA7Civph5Hono3luILloLQgPiBraW4nJ3l1dXNoaWpvdVwgOwor6ZuG5Zuj5b+D55CGID4gc2h1dWRhbnNoaW5yaVwgOwor5YWl56S+6Kmm6aiTID4gbnl1dXNoYXNoaWtlblwgOwor6YG45oqe5YCk576kID4gc2VudGFrdWNoaWd1blwgOwor56K6546H6Kqk5beuID4ga2FrdXJpdHN1Z29zYVwgOwor56ys5Zub6ZqO57SaID4gZGFpeW9ua2Fpa3l1dVwgOwor6YCN6YGl5a2m5rS+ID4gc2hvdXlvdWdha3VoYVwgOwor6buS54K55ZGo5pyfID4ga29rdXRlbnNodXVraVwgOwor576O6KGT5a2m5qChID4gYmlqdXRzdWdha2tvdVwgOwor5Y2K5q275Y2K55SfID4gaGFuc2hpaGFuc2hvdVwgOwor5b+r6YCf6Zu76LuKID4ga2Fpc29rdWRlbnNoYVwgOwor5Y2X5YyX5oim5LqJID4gbmFuYm9rdXNlbnNvdVwgOwor5bCP5YWQ5ZaY5oGvID4gc2hvdW5pemVuc29rdVwgOwor5YaF5pS/5bmy5riJID4gbmFpc2Vpa2Fuc2hvdVwgOwor5YWs5bmz5pS/562WID4ga291aGVpc2Vpc2FrdVwgOwor5bel5qWt6KaP5qC8ID4ga291Z3lvdWtpa2FrdVwgOwor5Zub6KeS5Zub6Z2iID4gc2hpa2FrdXNoaW1lblwgOwor5bCR5bm05bCR5aWzID4gc2hvdW5lbnNob3Vqb1wgOwor5YaN6LKp5qWt6ICFID4gc2FpaGFuZ3lvdXNoYVwgOwor6LaF6auY6YCf5bqmID4gY2hvdWtvdXNva3Vkb1wgOwor6Kq/5p+75aCx5ZGKID4gY2hvdXNhaG91a29rdVwgOwor5rW36Zuj5a+p5YikID4ga2FpbmFuc2hpbnBhblwgOwor55CG5a2m5L+u5aOrID4gcmlnYWt1c2h1dXNoaVwgOwor5aSW55qE5qC55ougID4gZ2FpdGVraWtvbmt5b1wgOwor55Sf5ZG95bel5a2mID4gc2VpbWVpa291Z2FrdVwgOwor5aSp5L2R56We5YqpID4gdGVuJyd5dXVzaGluam9cIDsKK+WkluWbveaXheihjCA+IGdhaWtva3VyeW9rb3VcIDsKK+WFseWQjOawtOagkyA+IGt5b3Vkb3VzdWlzZW5cIDsKK+aLoeWkp+Wdh+ihoSA+IGtha3VkYWlraW5rb3VcIDsKK+WHseaXi+Wwhui7jSA+IGdhaXNlbnNob3VndW5cIDsKK+mbhuepjeWbnui3ryA+IHNodXVzZWtpa2Fpcm9cIDsKK+ijvumHjueUo+alrSA+IHN1c29ub3Nhbmd5b3VcIDsKK+mOrumtguW4sOelniA+IGNoaW5rb25raXNoaW5cIDsKK+WQiOagvOiAheWQjSA+IGdvdWtha3VzaGFtZWlcIDsKK+acieizh+agvOiAhSA+IHl1dXNoaWtha3VzaGFcIDsKK+WMluWtpuWPjeW/nCA+IGthZ2FrdWhhbicnbm91XCA7CivpnIDopoHkvpvntaYgPiBqdXlvdWt5b3VreXV1XCA7Civlj6zllprku6TnirYgPiBzaG91a2FucmVpam91XCA7CivoqabpqJPli4nlvLcgPiBzaGlrZW5iZW5reW91XCA7CivmuKnlrqTlirnmnpwgPiBvbnNoaXRzdWtvdWthXCA7CivmnInpiaTmnaHomasgPiB5dXVrb3Vqb3VjaHV1XCA7CivlhoXnmoTmoLnmi6AgPiBuYWl0ZWtpa29ua3lvXCA7Civov5HmtbfmvIHmpa0gPiBraW5rYWlneW9neW91XCA7CivmsbrmiKbmipXnpaggPiBrZXNzZW50b3VoeW91XCA7CivlhbHlkIznpL7kvJogPiBreW91ZG91c2hha2FpXCA7CivllJDojYnmqKHmp5ggPiBrYXJha3VzYW1veW91XCA7CivljIXnmq7liIfmlq0gPiBob3VoaXNldHN1ZGFuXCA7CivlrprmnJ/lj5blvJUgPiB0ZWlraXRvcmloaWtpXCA7Civkub7nh6XmtJfmv68gPiBrYW5zb3VzZW50YWt1XCA7Civpm4blkIjlkI3oqZ4gPiBzaHV1Z291bWVpc2hpXCA7CivlsI/lnovmlrDogZ4gPiBrb2dhdGFzaGluYnVuXCA7CivljLvnmYLmlr3oqK0gPiBpcnlvdXNoaXNldHN1XCA7Civli5XnianmsrnohIIgPiBkb3VidXRzdXl1c2hpXCA7Civlj43pnaLmlZnluKsgPiBoYW5tZW5reW91c2hpXCA7Civml6XluLjkvJroqbEgPiBuaWNoaWpvdWthaXdhXCA7CivovLjlhaXmpa3ogIUgPiB5dW55dXVneW91c2hhXCA7CivmqJnmupbkvqHmoLwgPiBoeW91anVua2FrYWt1XCA7CivkuI3lpormiYvooZMgPiBmdW5pbnNodWp1dHN1XCA7CivlsbHnjKvkuonorbAgPiB5YW1hbmVrb3NvdWdpXCA7Civlh7rkuJbplpPnmoQgPiBzaHVzc2VrZW50ZWtpXCA7CivlubTkuK3ooYzkuosgPiBuZW5jaHV1Z3lvdWppXCA7CivpjozlgInmmYLku6MgPiBrYW1ha3VyYWppZGFpXCA7Civngo7nl4fnl4Xlt6MgPiBlbnNob3VieW91c291XCA7Civms6jmhI/kurrniakgPiBjaHV1aWppbmJ1dHN1XCA7Civml6XmtKropqrlloQgPiBuaWtrb3VzaGluemVuXCA7Civov73liqDms6jmlocgPiB0c3Vpa2FjaHV1bW9uXCA7CivnrYblhpnnlaXlrZcgPiBoaXNzaGFyeWFrdWppXCA7CivnjK7ooYDpgYvli5UgPiBrZW5rZXRzdXVuZG91XCA7CivoiJ7lj7DoirjooZMgPiBidXRhaWdlaWp1dHN1XCA7CivoqabpqJPnm6PnnaMgPiBzaGlrZW5rYW50b2t1XCA7CivmkqTpoK3lvrnlsL4gPiB0ZXR0b3V0ZXRzdWJpXCA7Civnlr7poqjov4Xpm7cgPiBzaGlwcHV1amlucmFpXCA7CivluILloLTnkrDlooMgPiBzaGlqb3VrYW5reW91XCA7Civljp/miJDlsqnnn7MgPiBnZW5zZWlnYW5zZWtpXCA7CivliY3lpKfntbHpoJggPiB6ZW5kYWl0b3VyeW91XCA7CivlvLfliLbpgIHpgoQgPiBreW91c2Vpc291a2FuXCA7CivlkIzmpa3ntYTlkIggPiBkb3VneW91a3VtaWFpXCA7Civpm7vmsJfliYPliIAgPiBkZW5raWthbWlzb3JpXCA7Civkuovli5nlsYDplbcgPiBqaW11a3lva3VjaG91XCA7CivntYzmuIjmlLnpnakgPiBrZWl6YWlrYWlrYWt1XCA7CivmsJHkv5foirjog70gPiBtaW56b2t1Z2Vpbm91XCA7Civlj47nqavkuojmg7MgPiBzaHV1a2FrdXlvc291XCA7CivloanovpvonLvom4kgPiBzaGlva2FyYXRvbmJvXCA7CivntIbkvZnmm7LmipggPiB1eW9reW9rdXNldHN1XCA7CivmpbXotoXnn63ms6IgPiBnb2t1Y2hvdXRhbnBhXCA7CivkuLvmqKnkvrXniq8gPiBzaHVrZW5zaGlucGFuXCA7CivkuK3mgKfmtJfliaQgPiBjaHV1c2Vpc2VuemFpXCA7CivosqjnianliJfou4ogPiBrYW1vdHN1cmVzc2hhXCA7CivooYDmuIXnmYLms5UgPiBrZXNzZWlyeW91aG91XCA7CivmlrDmoYjnibnoqLEgPiBzaGluJydhbnRva2t5b1wgOwor5q275b6M56Gs55u0ID4gc2hpZ29rb3VjaG9rdVwgOwor5ZSv54mp5Li7576pID4geXVpYnV0c3VzaHVnaVwgOwor5pel6Zyy5oim5LqJID4gbmljaGlyb3NlbnNvdVwgOwor5pat6YOK56u25LqJID4gZGFua291a3lvdXNvdVwgOwor5ZCM55uf5p2h57SEID4gZG91bWVpam91eWFrdVwgOwor5LiA5pSr5Y2D6YeRID4gaWtrYWtrdXNlbmtpblwgOwor6ZqO57Sa6ZeY5LqJID4ga2Fpa3l1dXRvdXNvdVwgOwor54ax56Gs5YyW5YmkID4gbmV0c3Vrb3VrYXphaVwgOwor5bCC55So5Zue57eaID4gc2VuJyd5b3VrYWlzZW5cIDsKK+S6pOaPm+WtpueUnyA+IGtvdWthbmdha3VzZWlcIDsKK+WLlee3muioiOeUuyA+IGRvdXNlbmtlaWtha3VcIDsKK+awkeaUv+mVt+WumCA+IG1pbnNlaWNob3VrYW5cIDsKK+WIpOaWreS4reatoiA+IGhhbmRhbmNodXVzaGlcIDsKK+WxgOaJgOWIhuWykCA+IGt5b2t1c2hvYnVua2lcIDsKK+mAmuW4uOWbveS8miA+IHRzdXVqb3Vrb2trYWlcIDsKK+aVsOWApOino+aekCA+IHN1dWNoaWthaXNla2lcIDsKK+i7jeWCmeaLoeW8tSA+IGd1bmJpa2FrdWNob3VcIDsKK+mBqeiAheeUn+WtmCA+IHRla2lzaGFzZWl6b25cIDsKK+eyvuelnumRkeWumiA+IHNlaXNoaW5rYW50ZWlcIDsKK+mJhOmBk+i8uOmAgSA+IHRldHN1ZG91eXVzb3VcIDsKK+esrOS4iemajue0miA+IGRhaXNhbmthaWt5dXVcIDsKK+WNg+aFi+S4h+anmCA+IHNlbnRhaWJhbicneW91XCA7Civpm7vlrZDlt6XlraYgPiBkZW5zaGlrb3VnYWt1XCA7CivntYzmuIjnirbms4EgPiBrZWl6YWlqb3VreW91XCA7CivnpL7kvJrmlZnogrIgPiBzaGFrYWlreW91aWt1XCA7CivovrLogJXmsJHml48gPiBub3Vrb3VtaW56b2t1XCA7CivlhajouqvlhajpnIogPiB6ZW5zaGluemVucmVpXCA7Civlhaznp7Dos4fmnKwgPiBrb3VzaG91c2hpaG9uXCA7CivlpKflrZfniYflsbEgPiBvb2F6YWthdGF5YW1hXCA7CivolqzluKvlpoLmnaUgPiB5YWt1c2hpbnlvcmFpXCA7Civnmb7miKbpjKzno6ggPiBoeWFrdXNlbnJlbm1hXCA7CivlkIznm5/kvJHmoKEgPiBkb3VtZWlreXV1a291XCA7CivkuK3lpK7oqIjnlLsgPiBjaHV1b3VrZWlrYWt1XCA7CivkuK3lpK7pm4bmqKkgPiBjaHV1b3VzaHV1a2VuXCA7CivkuInop5Losr/mmJMgPiBzYW5rYWt1Ym91ZWtpXCA7CivliIbmnpDljJblraYgPiBidW5zZWtpa2FnYWt1XCA7CivlsJHlo67lo6vlrpggPiBzaG91c291c2hpa2FuXCA7Civms5XnmoTmoLnmi6AgPiBob3V0ZWtpa29ua3lvXCA7CivmrrrlrrPkuovku7YgPiBzYXRzdWdhaWppa2VuXCA7Civoh6rnhLblopflj44gPiBzaGl6ZW56b3VzaHV1XCA7Civoia/mgKfohavnmI0gPiByeW91c2Vpc2h1eW91XCA7CivpgJrli6Tpm7vou4ogPiB0c3V1a2luZGVuc2hhXCA7CivlsJHlubTniq/nvaogPiBzaG91bmVuaGFuemFpXCA7CivmsLTphbjljJbniakgPiBzdWlzYW5rYWJ1dHN1XCA7CivopqrmiJrnn6Xlt7EgPiBzaGluc2VraWNoaWtpXCA7CivljZjni6zmsbrnrpcgPiB0YW5kb2t1a2Vzc2FuXCA7Civlm73pmpvmg4Xli6IgPiBrb2t1c2Fpam91c2VpXCA7CivooZfpoK3mvJToqqwgPiBnYWl0b3VlbnpldHN1XCA7CivmrKPllpzpm4Douo0gPiBraW5raWpha3V5YWt1XCA7Civlk4HnqK7mlLnoia8gPiBoaW5zaHVrYWlyeW91XCA7Civlhaznp7DppqzlipsgPiBrb3VzaG91YmFyaWtpXCA7Civlm5vlha3mmYLkuK0gPiBzaGlyb2t1amljaHV1XCA7CivkuqTpgJrpga7mlq0gPiBrb3V0c3V1c2hhZGFuXCA7CivlpKflrabntJvkuokgPiBkYWlnYWt1ZnVuc291XCA7CivosqHmlL/lj47mlK8gPiB6YWlzZWlzaHV1c2hpXCA7CivooYblj4LkuKHpmaIgPiBzaHV1c2FucnlvdWluXCA7CivogJDngavlu7rnr4kgPiB0YWlrYWtlbmNoaWt1XCA7CivoppblipvmpJzmn7sgPiBzaGlyeW9rdWtlbnNhXCA7CivlsI/liIDntLDlt6UgPiBrb2dhdGFuYXphaWt1XCA7Civos6rnlpHlv5znrZQgPiBzaGl0c3VnaW91dG91XCA7CivmjZzmn7vlvZPlsYAgPiBzb3VzYXRvdWt5b2t1XCA7CivnhafokYnni4LoqIAgPiB0ZXJpaGFreW91Z2VuXCA7Civlh7rlvoHou43kurogPiBzaHVzc2VpZ3VuamluXCA7CivmlL7lsITog73pm7IgPiBob3VzaGFub3VndW1vXCA7CivnpL7kvJrmlL/nrZYgPiBzaGFrYWlzZWlzYWt1XCA7Civpm7vmpbXpm7vkvY0gPiBkZW5reW9rdWRlbicnaVwgOwor5Lq65bel6YCP5p6QID4gamlua291dG91c2VraVwgOwor6KSH5ZCI5aqS5L2TID4gZnVrdWdvdWJhaXRhaVwgOwor5L2P5rCR5oqV56WoID4ganV1bWludG91aHlvdVwgOwor5bel5qWt5Zyw5bivID4ga291Z3lvdWNoaXRhaVwgOwor5ZG85ZC45Zuw6ZujID4ga29reXV1a29uJyduYW5cIDsKK+mkiuitt+aWveiorSA+IHlvdWdvc2hpc2V0c3VcIDsKK+i8uOWHuuimj+WItiA+IHl1c2h1dHN1a2lzZWlcIDsKK+aIpuWKm+e1hOaIkCA+IHNlbnJ5b2t1c29zZWlcIDsKK+axuumBuOaKleelqCA+IGtlc3NlbnRvdWh5b3VcIDsKK+e1seS4gOimi+inoyA+IHRvdWl0c3VrZW5rYWlcIDsKK+WCrOecoOeZguazlSA+IHNhaW1pbnJ5b3Vob3VcIDsKK+W3pealreijveWTgSA+IGtvdWd5b3VzZWloaW5cIDsKK+W9ueS6uuagueaApyA+IHlha3VuaW5rb25qb3VcIDsKK+eLrOaIv+ebo+emgSA+IGRva3Vib3VrYW5raW5cIDsKK+WwjumAmuaKteaKlyA+IGRvdXRzdXV0ZWlrb3VcIDsKK+WNlOiqv+S4u+e+qSA+IGt5b3VjaG91c2h1Z2lcIDsKK+S8muioiOWgseWRiiA+IGthaWtlaWhvdWtva3VcIDsKK+WPsOa5vua1t+WzoSA+IHRhaXdhbmthaWt5b3VcIDsKK+aXpea4heaIpuS6iSA+IG5pc3NoaW5zZW5zb3VcIDsKK+Wuo+iogOeZuuihqCA+IHNlbmdlbmhhcHB5b3VcIDsKK+WkqeS9k+WGmeecnyA+IHRlbnRhaXNoYXNoaW5cIDsKK+mHjemHj+WZuOaVsCA+IGp1dXJ5b3V0b25zdXVcIDsKK+aYjumPoeatouawtCA+IG1laWt5b3VzaGlzdWlcIDsKK+W5tOmWk+ioiOeUuyA+IG5lbmthbmtlaWtha3VcIDsKK+WPo+i/sOethuiomCA+IGtvdWp1dHN1aGlra2lcIDsKK+Wbvemam+mAmuiyqCA+IGtva3VzYWl0c3V1a2FcIDsKK+WBpeW6t+iouuaWrSA+IGtlbmtvdXNoaW5kYW5cIDsKK+ahg+WxseaZguS7oyA+IG1vbW95YW1hamlkYWlcIDsKK+iBt+WgtOe1kOWpmiA+IHNob2t1YmFrZWtrb25cIDsKK+eSsOWig+WVj+mhjCA+IGthbmt5b3Vtb25kYWlcIDsKK+iovOS6uuWWmuWVjyA+IHNob3VuaW5rYW5tb25cIDsKK+aUu+aSg+aWueWQkSA+IGtvdWdla2lob3Vrb3VcIDsKK+ertuS6ieWjsuiytyA+IGt5b3Vzb3ViYWliYWlcIDsKK+iRl+S9nOaoqeazlSA+IGNob3Nha3VrZW5ob3VcIDsKK+Wbvemam+ekvuS8miA+IGtva3VzYWlzaGFrYWlcIDsKK+aWsOWItumrmOagoSA+IHNoaW5zZWlrb3Vrb3VcIDsKK+WvhOeUn+iZq+eXhyA+IGtpc2VpY2h1dXNob3VcIDsKK+S4reaKmOW4veWtkCA+IG5ha2FvcmVib3VzaGlcIDsKK+WFrOmWi+e3tOe/kiA+IGtvdWthaXJlbnNodXVcIDsKK+e1jOa4iOaUv+etliA+IGtlaXphaXNlaXNha3VcIDsKK+WQiOaIkOWGmeecnyA+IGdvdXNlaXNoYXNoaW5cIDsKK+aWsOmAsuS9nOWutiA+IHNoaW5zaGluc2Fra2FcIDsKK+mFuOe0oOS+m+e1piA+IHNhbnNva3lvdWt5dXVcIDsKK+S6pOmAmuWFrOekviA+IGtvdXRzdXVrb3VzaGFcIDsKK+a0u+auuuiHquWcqCA+IGthc3NhdHN1aml6YWlcIDsKK+mbu+mAgeWGmeecnyA+IGRlbnNvdXNoYXNoaW5cIDsKK+WFqOefpeWFqOiDvSA+IHplbmNoaXplbicnbm91XCA7Civlm73li6Loqr/mn7sgPiBrb2t1c2VpY2hvdXNhXCA7CivmtYHpgJrmqZ/mp4sgPiByeXV1dHN1dWtpa291XCA7CivlhbXlmajovLjlh7ogPiBoZWlraXl1c2h1dHN1XCA7CivlpKnnmofltIfmi50gPiB0ZW4nJ25vdXN1dWhhaVwgOwor5L+d6Ki85Lq66KaBID4gaG9zaG91bmluJyd5b3VcIDsKK+a1rumBiueUn+eJqSA+IGZ1eXV1c2VpYnV0c3VcIDsKK+e1gui6q+S/nemZuiA+IHNodXVzaGluaG9rZW5cIDsKK+aHuOiznuirluaWhyA+IGtlbnNob3Vyb25idW5cIDsKK+W4guWgtOaUuemdqSA+IHNoaWpvdWthaWtha3VcIDsKK+mbu+WKm+mcgOimgSA+IGRlbnJ5b2t1anV5b3VcIDsKK+iHqOW6iuWwi+WVjyA+IHJpbnNob3VqaW5tb25cIDsKK+mZsOaltee3mueuoSA+IGlua3lva3VzZW5rYW5cIDsKK+aXi+WFieWIhuaekCA+IHNlbmtvdWJ1bnNla2lcIDsKK+WMluefs+eHg+aWmSA+IGthc2VraW5lbnJ5b3VcIDsKK+mbu+S/oeeCuuabvyA+IGRlbnNoaW5rYXdhc2VcIDsKK+aHkOS4rembu+eBryA+IGthaWNodXVkZW50b3VcIDsKK+aJjeiJsuWFvOWCmSA+IHNhaXNob2t1a2VuYmlcIDsKK+aMh+WwjuimgemgmCA+IHNoaWRvdXlvdXJ5b3VcIDsKK+mDteS+v+W5tOmHkSA+IHl1dWJpbicnbmVua2luXCA7CivplqLpgKPllYblk4EgPiBrYW5yZW5zaG91aGluXCA7CivpmZDnlYznirbms4EgPiBnZW5rYWlqb3VreW91XCA7Civnj77lnKjlrozkuoYgPiBnZW56YWlrYW5yeW91XCA7CivliLbntITkvJ3mkKwgPiBzZWl5YWt1ZGVucGFuXCA7CivkuLjkuIDpgLHplpMgPiBtYXJ1aXNzaHV1a2FuXCA7Civlt6Xmpa3lm6PlnLAgPiBrb3VneW91ZGFuY2hpXCA7CivmpbXmpb3mtYTlnJ8gPiBnb2t1cmFrdWpvdWRvXCA7CivljJblrabliIbmnpAgPiBrYWdha3VidW5zZWtpXCA7CivlkIzngrnmsbrli50gPiBkb3V0ZW5rZXNzaG91XCA7CivkvZPlpJbpm6LohLEgPiB0YWlnYWlyaWRhdHN1XCA7CivnlJ/nianlhbXlmaggPiBzZWlidXRzdWhlaWtpXCA7CivljZjpn7Pnr4Doqp4gPiB0YW4nJ29uc2V0c3Vnb1wgOwor5pS75pKD6ZqK5b2iID4ga291Z2VraXRhaWtlaVwgOwor5rOV5Lq65omA5b6XID4gaG91amluc2hvdG9rdVwgOwor5aSn6YCG5LqL5Lu2ID4gdGFpZ3lha3VqaWtlblwgOwor5Y6f5aeL5pWZ5LyaID4gZ2Vuc2hpa3lvdWthaVwgOwor5L6h5qC85Y2U5a6aID4ga2FrYWt1a3lvdXRlaVwgOwor5a+T5oSP5bCP6KqsID4gZ3V1aXNob3VzZXRzdVwgOwor5bCC6ZaA5oqA6KGTID4gc2VubW9uZ2lqdXRzdVwgOwor5ouh5by15Y+v6IO9ID4ga2FrdWNob3VrYW5vdVwgOwor5oCl6YCy5Li7576pID4ga3l1dXNoaW5zaHVnaVwgOwor6KiY5b+15byP5YW4ID4ga2luZW5zaGlraXRlblwgOwor56u25ZCI6ISx57eaID4ga3lvdWdvdWRhc3NlblwgOwor5pqR5Lit5LyR5pqHID4gc2hvY2h1dWt5dXVrYVwgOwor57mB5paH57if56S8ID4gaGFuYnVuam9rdXJlaVwgOwor55uu5qiZ566h55CGID4gbW9rdWh5b3VrYW5yaVwgOwor5pa55ZCR6Kaz5b+1ID4gaG91a291a2FuJyduZW5cIDsKK+a1t+W6lembu+S/oSA+IGthaXRlaWRlbnNoaW5cIDsKK+alreeVjOWLleWQkSA+IGd5b3VrYWlkb3Vrb3VcIDsKK+W/heimgee1jOiyuyA+IGhpdHN1eW91a2VpaGlcIDsKK+awtOeOieaooeanmCA+IG1penV0YW1hbW95b3VcIDsKK+WHuuW+geWutuaXjyA+IHNodXNzZWlrYXpva3VcIDsKK+e1jOW4uOWPjuaUryA+IGtlaWpvdXNodXVzaGlcIDsKK+WcsOeQg+enkeWtpiA+IGNoaWt5dXVrYWdha3VcIDsKK+aDheWgseaKgOihkyA+IGpvdWhvdWdpanV0c3VcIDsKK+epuuS4reWIhuinoyA+IGt1dWNodXVidW5rYWlcIDsKK+W8t+WItuWKtOWDjSA+IGt5b3VzZWlyb3Vkb3VcIDsKK+majue0muaEj+itmCA+IGthaWt5dXVpc2hpa2lcIDsKK+WNmuWjq+irluaWhyA+IGhha3VzaGlyb25idW5cIDsKK+S6uuagvOW9ouaIkCA+IGppbmtha3VrZWlzZWlcIDsKK+e1ueezuOe0oee4viA+IGtlbnNoaWJvdXNla2lcIDsKK+iBt+WgtOmXmOS6iSA+IHNob2t1YmF0b3Vzb3VcIDsKK+aVmeiCsuWtpumDqCA+IGt5b3Vpa3VnYWt1YnVcIDsKK+WkiemAn+ijhee9riA+IGhlbnNva3Vzb3VjaGlcIDsKK+ecn+WGhuecn+ePoCA+IHNoaW4nJ2Vuc2hpbmp1XCA7Civlm73msJHntYzmuIggPiBrb2t1bWlua2VpemFpXCA7CivlhoXpnaLmj4/lhpkgPiBuYWltZW5ieW91c2hhXCA7CivlqpLkvZPntYLnq68gPiBiYWl0YWlzaHV1dGFuXCA7Civlv4PnkIbnmYLms5UgPiBzaGlucmlyeW91aG91XCA7CivmgKfnmoTplqLkv4IgPiBzZWl0ZWtpa2Fua2VpXCA7CivnhKHpiq3po7Lpo58gPiBtdXNlbicnaW5zaG9rdVwgOwor56+E55aH5paH5rOVID4gaGFuY2h1dWJ1bnBvdVwgOwor6ZW35pyf5YCf5qy+ID4gY2hvdWtpc2hha2thblwgOwor5YWo5L2T6ZuG5ZCIID4gemVudGFpc2h1dWdvdVwgOwor5Y+z5bCP5ous5bynID4gbWlnaXNob3VrYWtrb1wgOwor5Luu5oOz5pW15Zu9ID4ga2Fzb3V0ZWtpa29rdVwgOwor5qW15qW95b6A55SfID4gZ29rdXJha3VvdWpvdVwgOwor5Yid562J5pWZ6IKyID4gc2hvdG91a3lvdWlrdVwgOwor6KGM5pS/5ZG95LukID4gZ3lvdXNlaW1laXJlaVwgOwor5a++5Zyw5pS75pKDID4gdGFpY2hpa291Z2VraVwgOwor6Ieq54S25o+P5YaZID4gc2hpemVuYnlvdXNoYVwgOwor6YeR6J6N6LOH5pysID4ga2luJyd5dXVzaGlob25cIDsKK+eEoeiDveWKm+iAhSA+IG11bm91cnlva3VzaGFcIDsKK+WMluWtpuW3pealrSA+IGthZ2FrdWtvdWd5b3VcIDsKK+ihjOaUv+WMuueUuyA+IGd5b3VzZWlrdWtha3VcIDsKK+Wtpue/kui+nuWFuCA+IGdha3VzaHV1aml0ZW5cIDsKK+mWqOmWpeaUv+ayuyA+IGtlaWJhdHN1c2VpamlcIDsKK+S6i+alreaLoeWFhSA+IGppZ3lvdWtha3VqdXVcIDsKK+i+suadkeW3pealrSA+IG5vdXNvbmtvdWd5b3VcIDsKK+eni+mbqOWJjee3miA+IGFraXNhbWV6ZW5zZW5cIDsKK+WFseWQjOi+suWgtCA+IGt5b3Vkb3Vub3Vqb3VcIDsKK+Wls+aoqeaLoeW8tSA+IGpva2Vua2FrdWNob3VcIDsKK+ism+e/kuS8muWgtCA+IGtvdXNodXVrYWlqb3VcIDsKK+axmuafk+eJqeizqiA+IG9zZW5idXNzaGl0c3VcIDsKK+eKtuazgeWIpOaWrSA+IGpvdWt5b3VoYW5kYW5cIDsKK+W9k+ipsuWumOW6gSA+IHRvdWdhaWthbmNob3VcIDsKK+S7suS7i+iyv+aYkyA+IGNodXVrYWlib3Vla2lcIDsKK+WbveWGheW4guWgtCA+IGtva3VuYWlzaGlqb3VcIDsKK+S4gOaemueci+advyA+IGljaGltYWlrYW5iYW5cIDsKK+eEoee3mumAmuS/oSA+IG11c2VudHN1dXNoaW5cIDsKK+e1jOa4iOWkp+WbvSA+IGtlaXphaXRhaWtva3VcIDsKK+WPjeekvuS8mueahCA+IGhhbnNoYWthaXRla2lcIDsKK+S4gOWIqeS4gOWusyA+IGljaGlyaWljaGlnYWlcIDsKK+S6jOW+i+iDjOWPjSA+IG5pcml0c3VoYWloYW5cIDsKK+W+qeWFg+S9nOalrSA+IGZ1a3VnZW5zYWd5b3VcIDsKK+S6uumWk+eIhuW8viA+IG5pbmdlbmJha3VkYW5cIDsKK+Wto+evgOWKtOWDjSA+IGtpc2V0c3Vyb3Vkb3VcIDsKK+mZuOi7jeWkp+iHoyA+IHJpa3VndW5kYWlqaW5cIDsKK+aWreaKteaKl+inkiA+IGRhbnRlaWtvdWtha3VcIDsKK+mAmuS/oeapn+mWoiA+IHRzdXVzaGlua2lrYW5cIDsKK+WGmeecn+WHuOeJiCA+IHNoYXNoaW50b3BwYW5cIDsKK+WMluWtpueZguazlSA+IGthZ2FrdXJ5b3Vob3VcIDsKK+e2see0gOeym+atoyA+IGtvdWtpc2h1a3VzZWlcIDsKK+eojuWItuaUuemdqSA+IHplaXNlaWthaWtha3VcIDsKK+iqv+WBnOijgeWIpCA+IGNob3V0ZWlzYWliYW5cIDsKK+eEoee9quWIpOaxuiA+IG11emFpaGFua2V0c3VcIDsKK+i7jeS6i+aIpueVpSA+IGd1bmppc2Vucnlha3VcIDsKK+iHqOW6iuippumokyA+IHJpbnNob3VzaGlrZW5cIDsKK+mYsuatouaMh+mHnSA+IGJvdXNoaXNoaXNoaW5cIDsKK+awl+ixoeims+a4rCA+IGtpc2hvdWthbnNva3VcIDsKK+iInuWPsOeUn+a0uyA+IGJ1dGFpc2Vpa2F0c3VcIDsKK+Wkp+WQjeaXheihjCA+IGRhaW15b3VyeW9rb3VcIDsKK+S9nOalreeZguazlSA+IHNhZ3lvdXJ5b3Vob3VcIDsKK+WkluWbveeCuuabvyA+IGdhaWtva3VrYXdhc2VcIDsKK+mDveeri+mrmOagoSA+IHRvcml0c3Vrb3Vrb3VcIDsKK+W9ouW8j+S4u+e+qSA+IGtlaXNoaWtpc2h1Z2lcIDsKK+WMluWtpuW3peWtpiA+IGthZ2FrdWtvdWdha3VcIDsKK+inkumBi+WLlemHjyA+IGtha3V1bmRvdXJ5b3VcIDsKK+WujOWFqOeEoeasoCA+IGthbnplbm11a2V0c3VcIDsKK+aUv+etluaxuuWumiA+IHNlaXNha3VrZXR0ZWlcIDsKK+W+queSsOWwj+aVsCA+IGp1bmthbnNob3VzdXVcIDsKK+Wkp+mfk+awkeWbvSA+IGRhaWthbm1pbmtva3VcIDsKK+mBqeeUqOalreWLmSA+IHRla2l5b3VneW91bXVcIDsKK+aIpuS6ieaWh+WtpiA+IHNlbnNvdWJ1bmdha3VcIDsKK+S5neWkqeebtOS4iyA+IGt5dXV0ZW5jaG9ra2FcIDsKK+mdouW+k+iFueiDjCA+IG1lbmp1dWZ1a3VoYWlcIDsKK+eiuuS/neWkseaVlyA+IGtha3Vob3NoaXBwYWlcIDsKK+WFsemAmuiogOiqniA+IGt5b3V0c3V1Z2VuZ29cIDsKK+W8t+WItuWHpuWIhiA+IGt5b3VzZWlzaG9idW5cIDsKK+aWreW0lue1tuWjgSA+IGRhbmdhaXplcHBla2lcIDsKK+eUo+alreekvuS8miA+IHNhbmd5b3VzaGFrYWlcIDsKK+WQhOeoruWtpuagoSA+IGtha3VzaHVnYWtrb3VcIDsKK+WIhuino+WGmeecnyA+IGJ1bmthaXNoYXNoaW5cIDsKK+WNsOWIt+WqkuS9kyA+IGluc2F0c3ViYWl0YWlcIDsKK+eglOeptuaJgOWgsSA+IGtlbmt5dXVzaG9ob3VcIDsKK+S5seWwhOS5seaSgyA+IHJhbnNoYXJhbmdla2lcIDsKK+ajkuiFuee1tuWAkiA+IGhvdWZ1a3V6ZXR0b3VcIDsKK+eJueioseS+teWusyA+IHRva2t5b3NoaW5nYWlcIDsKK+Wumumhjeiyr+mHkSA+IHRlaWdha3VjaG9raW5cIDsKK+WFrOihhuS8neWLlSA+IGtvdXNodXVkZW5kb3VcIDsKK+mJhOmBk+mmrOi7iiA+IHRldHN1ZG91YmFzaGFcIDsKK+WGheWbveeCuuabvyA+IG5haWtva3VrYXdhc2VcIDsKK+eorueoruanmOanmCA+IHNodWp1c2FtYXphbWFcIDsKK+WWnOiJsua6gOmdoiA+IGtpc2hva3VtYW5tZW5cIDsKK+W8geWIpee0oOaApyA+IGJlbmJldHN1c29zZWlcIDsKK+S9nOaIpuWRveS7pCA+IHNha3VzZW5tZWlyZWlcIDsKK+itsOmVt+iBt+aoqSA+IGdpY2hvdXNob2trZW5cIDsKK+WVk+iSmeaAnea9riA+IGtlaW1vdXNoaWNob3VcIDsKK+WFrOWovOWFqOW7gyA+IGtvdXNob3V6ZW5wYWlcIDsKK+WvvumdouS6pOmAmiA+IHRhaW1lbmtvdXRzdXVcIDsKK+S4gOWVj+S4gOetlCA+IGljaGltb24nJ2l0dG91XCA7Civpm7vlrZDlr4bluqYgPiBkZW5zaGltaXRzdWRvXCA7CivotoXkvY7kvqHmoLwgPiBjaG91dGVpa2FrYWt1XCA7CivkuIDmi6zlo7LosrcgPiBpa2thdHN1YmFpYmFpXCA7CivliLbntITmnaHku7YgPiBzZWl5YWt1am91a2VuXCA7CivkvJHmiKbkvJroq4cgPiBreXV1c2Vua2FpZGFuXCA7CivniYjmqKnkvrXlrrMgPiBoYW5rZW5zaGluZ2FpXCA7CivpmpTpm6Lnl4Xmo58gPiBrYWt1cmlieW91dG91XCA7CivnlJ/prq7mlpnlk4EgPiBzZWlzZW5yeW91aGluXCA7CivkuIrmmIflgr7lkJEgPiBqb3VzaG91a2Vpa291XCA7CivkuI3ms5XlhaXlm70gPiBmdWhvdW55dXVnb2t1XCA7CivmlZnppIrlrabpg6ggPiBreW91eW91Z2FrdWJ1XCA7Civpq5jkv6HpoLzmgKcgPiBrb3VzaGlucmFpc2VpXCA7CivlrrblroXmjZzntKIgPiBrYXRha3Vzb3VzYWt1XCA7CivoqIjnlLvntYzmuIggPiBrZWlrYWt1a2VpemFpXCA7CivkuInou7joqabpqJMgPiBzYW5qaWt1c2hpa2VuXCA7CivmnIDntYLmrrXpmo4gPiBzYWlzaHV1ZGFua2FpXCA7Civlj47lhaXljbDntJkgPiBzaHV1bnl1dWluc2hpXCA7CivljYrnhp/nt7Tlt6UgPiBoYW5qdWt1cmVua291XCA7CivlhpnnnJ/liKTlrpogPiBzaGFzaGluaGFudGVpXCA7CivntYzmuIjoprPlv7UgPiBrZWl6YWlrYW4nJ25lblwgOwor6LOD6YeR5rC05rqWID4gY2hpbmdpbnN1aWp1blwgOwor5Za25qWt5Y+O5pSvID4gZWlneW91c2h1dXNoaVwgOwor5LiJ55u45Lqk5rWBID4gc2Fuc291a291cnl1dVwgOwor57WM5Za25oim55WlID4ga2VpZWlzZW5yeWFrdVwgOwor5pil5aSP56eL5YasID4gc2h1bmthc2h1dXRvdVwgOwor54Sm54K55rex5bqmID4gc2hvdXRlbnNoaW5kb1wgOwor5LiA5pmC5omA5b6XID4gaWNoaWppc2hvdG9rdVwgOwor5p2J6Iqx57KJ55eHID4gc3VnaWthZnVuc2hvdVwgOwor5Lq65rCR5oqV56WoID4gamlubWludG91aHlvdVwgOwor5ZCI5b6T6YCj6KGhID4gZ2Fzc2hvdXJlbmtvdVwgOwor54OP6YeO6LGM6LGGID4ga2FyYXN1bm9lbmRvdVwgOwor54Sh6Iq45aSn6aOfID4gbXVnZWl0YWlzaG9rdVwgOwor5Zu96Zqb6YCj5ZCIID4ga29rdXNhaXJlbmdvdVwgOwor54ax5Lqk5o+b5ZmoID4gbmV0c3Vrb3VrYW5raVwgOwor5a6H5a6Z6ZaL55m6ID4gdWNodXVrYWloYXRzdVwgOwor5ryi5paH6KiT6KqtID4ga2FuYnVua3VuZG9rdVwgOwor56m66ZaT5oSf6KaaID4ga3V1a2Fua2Fua2FrdVwgOwor5LqM5Lq65LiJ6ISaID4gbmluaW5zYW5reWFrdVwgOwor5qip5Yqb5Li7576pID4ga2Vucnlva3VzaHVnaVwgOwor5Yuf6ZuG5bqD5ZGKID4gYm9zaHV1a291a29rdVwgOwor5a2m57+S55CG6KuWID4gZ2FrdXNodXVyaXJvblwgOwor6aeQ6LuK56aB5q2iID4gY2h1dXNoYWtpbnNoaVwgOwor5YWx5ZCM5a6j6KiAID4ga3lvdWRvdXNlbmdlblwgOwor5aSp5Zyw56We5piOID4gdGVuY2hpc2hpbm1laVwgOwor6Kmz57Sw5oOF5aCxID4gc2hvdXNhaWpvdWhvdVwgOwor54mb6aOy6aas6aOfID4gZ3l1dWluYmFzaG9rdVwgOwor6YeR5Z+O6YmE5aOBID4ga2luam91dGVwcGVraVwgOwor6ZuG5Lit6Kyb576pID4gc2h1dWNodXVrb3VnaVwgOwor5aSJ5b2i6Jmr6aGeID4gaGVua2VpY2h1dXJ1aVwgOwor5YWs55qE5bm06YeRID4ga291dGVraW5lbmtpblwgOwor6YCx5YiK6ZuR6KqMID4gc2h1dWthbnphc3NoaVwgOwor57Sh57i+5bel5aC0ID4gYm91c2VraWtvdWpvdVwgOwor5Yid562J5pWw5a2mID4gc2hvdG91c3V1Z2FrdVwgOwor5q6L5a2Y5pel5pWwID4gemFuc29uJyduaXNzdXVcIDsKK+Wbvemam+WxlemWiyA+IGtva3VzYWl0ZW5rYWlcIDsKK+W5tOWKn+W6j+WIlyA+IG5lbmtvdWpvcmV0c3VcIDsKK+WVhualremDveW4giA+IHNob3VneW91dG9zaGlcIDsKK+S4remAlOmAgOWtpiA+IGNodXV0b3RhaWdha3VcIDsKK+WFseWQjOS8muimiyA+IGt5b3Vkb3VrYWlrZW5cIDsKK+aGsuazleWtpuiAhSA+IGtlbnBvdWdha3VzaGFcIDsKK+aApei7ouebtOS4iyA+IGt5dXV0ZW5jaG9ra2FcIDsKK+WOn+WtkOeIhuW8viA+IGdlbnNoaWJha3VkYW5cIDsKK+eZu+WxsemJhOmBkyA+IHRvemFudGV0c3Vkb3VcIDsKK+eJqeeQhuWMluWtpiA+IGJ1dHN1cmlrYWdha3VcIDsKK+e1puawtOWItumZkCA+IGt5dXVzdWlzZWlnZW5cIDsKK+acnemuruaIpuS6iSA+IGNob3VzZW5zZW5zb3VcIDsKK+WrjOawl+eUn+eJqSA+IGtlbmtpc2VpYnV0c3VcIDsKK+mBuOaKnueKtuaFiyA+IHNlbnRha3Vqb3V0YWlcIDsKK+mrmOWzsOWFq+W6pyA+IGtvdWhvdWhhY2hpemFcIDsKK+S4jea2iOWMlueJqSA+IGZ1c2hvdWthYnV0c3VcIDsKK+azleeahOaWh+abuCA+IGhvdXRla2lidW5zaG9cIDsKK+enmOWvhumBuOaMmSA+IGhpbWl0c3VzZW5reW9cIDsKK+WcsOeQg+WMluWtpiA+IGNoaWt5dXVrYWdha3VcIDsKK+aWsOeGseW4r+WMuiA+IHNoaW4nJ25ldHRhaWt1XCA7CivntZDlqZrmjIfovKogPiBrZWtrb24nJ3l1Yml3YVwgOwor5ZaE6Zqj5Y+L5aW9ID4gemVucmluJyd5dXVrb3VcIDsKK+WPl+WPluaJi+W9oiA+IHVrZXRvcml0ZWdhdGFcIDsKK+axuueul+WgseWRiiA+IGtlc3NhbmhvdWtva3VcIDsKK+W/g+eQhuWtpuiAhSA+IHNoaW5yaWdha3VzaGFcIDsKK+irlueQhuW9ouW8jyA+IHJvbnJpa2Vpc2hpa2lcIDsKK+S9jumgreW5s+i6qyA+IHRlaXRvdWhlaXNoaW5cIDsKK+a3t+WQiOi+sualrSA+IGtvbmdvdW5vdWd5b3VcIDsKK+aWh+iKuOS9nOWTgSA+IGJ1bmdlaXNha3VoaW5cIDsKK+aciemWkemajue0miA+IHl1dWthbmthaWt5dXVcIDsKK+WPi+Wlveadoee0hCA+IHl1dWtvdWpvdXlha3VcIDsKK+WJh+WkqeWOu+engSA+IHNva3V0ZW5reW9zaGlcIDsKK+WGmeWun+S4u+e+qSA+IHNoYWppdHN1c2h1Z2lcIDsKK+Wbvemam+W4guWgtCA+IGtva3VzYWlzaGlqb3VcIDsKK+S6jOmHjeeUn+a0uyA+IG5panV1c2Vpa2F0c3VcIDsKK+iHqOapn+ebruaomSA+IHJpbmtpbW9rdWh5b3VcIDsKK+WVhualreeZu+iomCA+IHNob3VneW91dG91a2lcIDsKK+m7hOiJsuS6uueoriA+IG91c2hva3VqaW5zaHVcIDsKK+WRqOazouWkieiqvyA+IHNodXVoYWhlbmNob3VcIDsKK+asoOmZpeWVhuWTgSA+IGtla2thbnNob3VoaW5cIDsKK+W+k+WxnuWkieaVsCA+IGp1dXpva3VoZW5zdXVcIDsKK+aXoue0hOihqOePviA+IGtpeWFrdWh5b3VnZW5cIDsKK+S4jeiJr+WwkeW5tCA+IGZ1cnlvdXNob3VuZW5cIDsKK+a4rOmHj+aKgOW4qyA+IHNva3VyeW91Z2lzaGlcIDsKK+ajrue+heS4h+ixoSA+IHNoaW5yYWJhbnNob3VcIDsKK+eUo+alreani+mAoCA+IHNhbmd5b3Vrb3V6b3VcIDsKK+asp+W3nuiruOWbvSA+IG91c2h1dXNob2tva3VcIDsKK+mAmuWLpOWcsOeNhCA+IHRzdXVraW5qaWdva3VcIDsKK+aYvOmWk+S6uuWPoyA+IGNodXVrYW5qaW5rb3VcIDsKK+aAp+agvOWIpOaWrSA+IHNlaWtha3VoYW5kYW5cIDsKK+S/oemgvOmWouS/giA+IHNoaW5yYWlrYW5rZWlcIDsKK+WQjOacn+mAmuS/oSA+IGRvdWtpdHN1dXNoaW5cIDsKK+S4iemHjeeEpueCuSA+IHNhbmp1dXNob3V0ZW5cIDsKK+aKleelqOe3j+aVsCA+IHRvdWh5b3Vzb3VzdXVcIDsKK+Wkp+W5heWIt+aWsCA+IG9vaGFiYXNhc3NoaW5cIDsKK+WIh+aWreaCo+iAhSA+IHNldHN1ZGFua2FuamFcIDsKK+iiluaJi+WCjeimsyA+IHNodXVzaHVib3VrYW5cIDsKK+aLjeaJi+WWnemHhyA+IGhha3VzaHVrYXNzYWlcIDsKK+S9nOalreS7ruiqrCA+IHNhZ3lvdWthc2V0c3VcIDsKK+e1jOa4iOaIkOmVtyA+IGtlaXphaXNlaWNob3VcIDsKK+WQiOaIkOWuneefsyA+IGdvdXNlaWhvdXNla2lcIDsKK+e1kOe3oOe1hOe5lCA+IGtldHRlaXNvc2hpa2lcIDsKK+WGhumMkOabsue3miA+IGVuc3Vpa3lva3VzZW5cIDsKK+iBluS9k+aLnemgmCA+IHNlaXRhaWhhaXJ5b3VcIDsKK+W6tuawkemHkeiejSA+IHNob21pbmtpbicneXV1XCA7CivkvZPnqY3mirXmipcgPiB0YWlzZWtpdGVpa291XCA7CivljZTlkIzntYTlkIggPiBreW91ZG91a3VtaWFpXCA7CivlhYjkvY/msJHml48gPiBzZW5qdXVtaW56b2t1XCA7CivntbHkuIDmiKbnt5ogPiB0b3VpdHN1c2Vuc2VuXCA7CivlkIzmmYLpgJroqLMgPiBkb3VqaXRzdXV5YWt1XCA7Civlkajnn6XlvrnlupUgPiBzaHV1Y2hpdGV0dGVpXCA7CivoibHpm6Povpvoi6YgPiBrYW4nJ25hbnNoaW5rdVwgOwor5pS/5YWa5YaF6ZajID4gc2VpdG91bmFpa2FrdVwgOwor54++5Zyw5aCx5ZGKID4gZ2VuY2hpaG91a29rdVwgOwor5oe46LOe5ZWP6aGMID4ga2Vuc2hvdW1vbmRhaVwgOwor5YKt6Ii55aWR57SEID4geW91c2Vua2VpeWFrdVwgOwor5LuK5LiK5aSp55qHID4ga2luam91dGVuJydub3VcIDsKK+S7luimmueXh+eKtiA+IHRha2FrdXNob3Vqb3VcIDsKK+asoOmjn+WFkOerpSA+IGtlc3Nob2t1amlkb3VcIDsKK+Wor+alveeVque1hCA+IGdvcmFrdWJhbmd1bWlcIDsKK+eyvuelnuWMu+WtpiA+IHNlaXNoaW4nJ2lnYWt1XCA7CivlhoXlrrnoqLzmmI4gPiBuYWl5b3VzaG91bWVpXCA7Civlh7rmuK/lgZzmraIgPiBzaHVra291dGVpc2hpXCA7CivlpKvlqabntITmnZ8gPiBmdXVmdXlha3Vzb2t1XCA7Civml4XooYzmpa3ogIUgPiByeW9rb3VneW91c2hhXCA7Civkvb/lvpLkv6HntYwgPiBzaGl0b3NoaW5reW91XCA7CivlpJbos4flsI7lhaUgPiBnYWlzaGlkb3VueXV1XCA7CivmiJDkurrmlZnogrIgPiBzZWlqaW5reW91aWt1XCA7CivlhazlvI/kuLvnvqkgPiBrb3VzaGlraXNodWdpXCA7CivkuIDnjbLljYPph5EgPiBpa2tha2t1c2Vua2luXCA7CivopIfmlbDmpa3li5kgPiBmdWt1c3V1Z3lvdW11XCA7CivnpoHmrLLkuLvnvqkgPiBraW4nJ3lva3VzaHVnaVwgOwor56m66KWy6K2m5aCxID4ga3V1c2h1dWtlaWhvdVwgOwor55Sj5qWt5YaN55SfID4gc2FuZ3lvdXNhaXNlaVwgOwor6LOD6LK45L6h5qC8ID4gY2hpbnRhaWtha2FrdVwgOwor5oim6ZeY5YmN5ZOoID4gc2VudG91emVuc2hvdVwgOwor5LiA6KiA5LiA6KGMID4gaWNoaWdlbicnaWtrb3VcIDsKK+WQueWlj+alveWboyA+IHN1aXNvdWdha3VkYW5cIDsKK+ebtOe3mui3nemboiA+IGNob2t1c2Vua3lvcmlcIDsKK+i/keimque1kOWpmiA+IGtpbnNoaW5rZWtrb25cIDsKK+exs+iLseS7j+iYrSA+IGJlaWVpYnV0c3VyYW5cIDsKK+WFseWQjOS9nOalrSA+IGt5b3Vkb3VzYWd5b3VcIDsKK+a4m+WPjeaUv+etliA+IGdlbnRhbnNlaXNha3VcIDsKK+W/g+eQhuS9nOaIpiA+IHNoaW5yaXNha3VzZW5cIDsKK+W/g+iHk+enu+akjSA+IHNoaW56b3Vpc2hva3VcIDsKK+aciemZkOiyrOS7uyA+IHl1dWdlbnNla2luaW5cIDsKK+e1hOe5lOWGjee3qCA+IHNvc2hpa2lzYWloZW5cIDsKK+emj+mfs+aVmeS8miA+IGZ1a3Vpbmt5b3VrYWlcIDsKK+mWouS/guWJr+ipniA+IGthbmtlaWZ1a3VzaGlcIDsKK+WPsuaWmee3qOe6giA+IHNoaXJ5b3VoZW5zYW5cIDsKK+eMn+WumOmBi+WLlSA+IHJ5b3VrYW4nJ3VuZG91XCA7CivogonkvZPlirTlg40gPiBuaWt1dGFpcm91ZG91XCA7Civlj4LnhafmlofnjK4gPiBzYW5zaG91YnVua2VuXCA7Civpn7Pmpb3nm6PnnaMgPiBvbmdha3VrYW50b2t1XCA7CivlubPouqvkvY7poK0gPiBoZWlzaGludGVpdG91XCA7CivlhbHnlKPliIblrZAgPiBreW91c2FuYnVuc2hpXCA7CivkuojntITlh7rniYggPiB5b3lha3VzaHVwcGFuXCA7Civngq3msLTljJbniakgPiB0YW5zdWlrYWJ1dHN1XCA7Civov5Hku6PmloflraYgPiBraW5kYWlidW5nYWt1XCA7CivlnLDmlrnlrpjluoEgPiBjaGlob3VrYW5jaG91XCA7Civlm5vliIbkupToo4IgPiBzaGlidW5nb3JldHN1XCA7CivntYzmuIjlm57lvqkgPiBrZWl6YWlrYWlmdWt1XCA7Civlrp/lrZjkuLvnvqkgPiBqaXRzdXpvbnNodWdpXCA7CivmgZLmuKnli5XniakgPiBrb3VvbmRvdWJ1dHN1XCA7Civph47oj5zkuIDnmr8gPiB5YXNhaWhpdG9zYXJhXCA7CivlvaLlvI/oq5bnkIYgPiBrZWlzaGlraXJvbnJpXCA7CivlpKflrabmtarkurogPiBkYWlnYWt1cm91bmluXCA7CivmmqvlrprljZTlrpogPiB6YW50ZWlreW91dGVpXCA7CivmlL7pgIHlpKflraYgPiBob3Vzb3VkYWlnYWt1XCA7Civms5XlvovliLbluqYgPiBob3VyaXRzdXNlaWRvXCA7Civkv6HnlKjph5HluqsgPiBzaGluJyd5b3VraW5rb1wgOwor5pyJ5ZCN54Sh5a6fID4geXV1bWVpbXVqaXRzdVwgOwor57WC6Lqr5Lya5ZOhID4gc2h1dXNoaW5rYWlpblwgOwor5LiJ6KeS6Zai5pWwID4gc2Fua2FrdWthbnN1dVwgOwor56yR5q2i5Y2D5LiHID4gc2hvdXNoaXNlbmJhblwgOwor5paH5a2m5Y2a5aOrID4gYnVuZ2FrdWhha2FzZVwgOwor5bqt5YWI55u45aC0ID4gbml3YXNha2lzb3ViYVwgOwor5raI6LK76ICF5YG0ID4gc2hvdWhpc2hhZ2F3YVwgOwor57K+56We5qeL6YCgID4gc2Vpc2hpbmtvdXpvdVwgOwor6YmE6aqo5bel5LqLID4gdGVra290c3Vrb3VqaVwgOwor5Zu95Yip5rCR56aPID4ga29rdXJpbWlucHVrdVwgOwor6Lu95L275rWu6JaEID4ga2VpY2hvdWZ1aGFrdVwgOwor5rKW56mN5bmz6YeOID4gY2h1dXNla2loZWl5YVwgOwor6YWq6L6y6KO95ZOBID4gcmFrdW5vdXNlaWhpblwgOwor6Kyd572q5bqD5ZGKID4gc2hhemFpa291a29rdVwgOwor5a+M5Zu95by35YW1ID4gZnVrb2t1a3lvdWhlaVwgOwor5aSW6YOt5Zuj5L2TID4gZ2Fpa2FrdWRhbnRhaVwgOwor5YWx5ZCM5LyB5qWtID4ga3lvdWRvdWtpZ3lvdVwgOwor6ZqO57Sa56S+5LyaID4ga2Fpa3l1dXNoYWthaVwgOwor5a++5aSW5pS/562WID4gdGFpZ2Fpc2Vpc2FrdVwgOwor57K+6ZyK5L+h5LuwID4gc2VpcmVpc2hpbmtvdVwgOwor77yn77yi55CG6KuWID4gamlcIMyEYmlcIMyEcmlyb25cIDsKK+aYpemiqOmnmOiVqSA+IHNodW5wdXV0YWl0b3VcIDsKK+atu+WIkeWft+ihjCA+IHNoaWtlaXNoaWtrb3VcIDsKK+S6jOiAheaKnuS4gCA+IG5pc2hhdGFrdWl0c3VcIDsKK+mFuOaAp+WPjeW/nCA+IHNhbnNlaWhhbicnbm91XCA7CivmsLTpgZPmlpnph5EgPiBzdWlkb3VyeW91a2luXCA7CivnqbrmsJflipvlraYgPiBrdXVraXJpa2lnYWt1XCA7CivllYblo7LmsJfos6ogPiBzaG91YmFpa2F0YWdpXCA7CivoqJjpjLLmloflraYgPiBraXJva3VidW5nYWt1XCA7CivlvbzmlrnmraTmlrkgPiBhY2hpcmFrb2NoaXJhXCA7Civnq4vouqvlh7rkuJYgPiByaXNzaGluc2h1c3NlXCA7CivmraPph5HpioDooYwgPiBzaG91a2luZ2lua291XCA7CivlhbHmuIjkuovmpa0gPiBreW91c2FpamlneW91XCA7CivlhYjooYzmioDooZMgPiBzZW5rb3VnaWp1dHN1XCA7Civlm7Pmm7jnm67pjLIgPiB0b3Nob21va3Vyb2t1XCA7CivoqLzmi6DpmqDmu4UgPiBzaG91a29pbm1ldHN1XCA7Civnq7bkuonplqLkv4IgPiBreW91c291a2Fua2VpXCA7CivkuovliY3mpJzplrIgPiBqaXplbmtlbicnZXRzdVwgOwor6KGM5pS/5Yem5YiGID4gZ3lvdXNlaXNob2J1blwgOwor5YWo6Z2i5bqD5ZGKID4gemVubWVua291a29rdVwgOwor5Zu95YuZ6ZW35a6YID4ga29rdW11Y2hvdWthblwgOwor57K+56We55eF6ZmiID4gc2Vpc2hpbmJ5b3VpblwgOwor5Zub5Y2B5Lmd5pelID4gc2hpanV1a3VuaWNoaVwgOwor5p2T5a2Q5a6a6KaPID4gc2hha3VzaGlqb3VnaVwgOwor5Y+v5aGR54mp6LOqID4ga2Fzb2J1c3NoaXRzdVwgOwor5Y2K6L6y5Y2K5ryBID4gaGFuJydub3VoYW5neW9cIDsKK+aatOmjsuaatOmjnyA+IGJvdWluYm91c2hva3VcIDsKK+eglOeptuWIhumHjiA+IGtlbmt5dXVidW4nJ3lhXCA7Civkurrlj6Plr4bluqYgPiBqaW5rb3VtaXRzdWRvXCA7Civkurrouqvlo7LosrcgPiBqaW5zaGluYmFpYmFpXCA7CivmrrrkurrmnKrpgYIgPiBzYXRzdWppbm1pc3VpXCA7CivotrPliKnmmYLku6MgPiBhc2hpa2FnYWppZGFpXCA7CivlvL7nnYDot53pm6IgPiBkYW5jaGFrdWt5b3JpXCA7Civli5XnianmpJzmn7sgPiBkb3VidXRzdWtlbnNhXCA7CivolqzppIznmYLms5UgPiB5YWt1amlyeW91aG91XCA7CivkurrplpPlm73lrp0gPiBuaW5nZW5rb2t1aG91XCA7Civnt4ropoHlnLDlvaIgPiBraW4nJ3lvdWNoaWtlaVwgOwor5biC5aC05oiQ6ZW3ID4gc2hpam91c2VpY2hvdVwgOwor5oyH5ZCN5oqV56WoID4gc2hpbWVpdG91aHlvdVwgOwor5ZGJ6LaK5ZCM6IifID4gZ29ldHN1ZG91c2h1dVwgOwor5a6F5Zyw6YCg5oiQID4gdGFrdWNoaXpvdXNlaVwgOwor57K+56We5Yq05YONID4gc2Vpc2hpbnJvdWRvdVwgOwor5a625peP6KiI55S7ID4ga2F6b2t1a2Vpa2FrdVwgOwor6ZaL5Y+j5LiA55WqID4ga2Fpa291aWNoaWJhblwgOwor55u057O75Y2R5bGeID4gY2hva2tlaWhpem9rdVwgOwor5Ymy6LOm5pa55byPID4ga2FwcHVob3VzaGlraVwgOwor5Yuk5Yq05aSn6KGGID4ga2lucm91dGFpc2h1dVwgOwor5pyq5Y+O5YWl6YeRID4gbWlzaHV1bnl1dWtpblwgOwor6aKo5L+X5Za25qWtID4gZnV1em9rdWVpZ3lvdVwgOwor5rCR5L+X6Z+z5qW9ID4gbWluem9rdW9uZ2FrdVwgOwor5rW35rC05rW05aC0ID4ga2Fpc3VpeW9rdWpvdVwgOwor6YCj5ZCI5L2c5oimID4gcmVuZ291c2FrdXNlblwgOwor5Lih6JOL5pmC6KiIID4gcnlvdWJ1dGFkb2tlaVwgOwor5Li75a6i6Lui5YCSID4gc2h1a2FrdXRlbnRvdVwgOwor5pCN55uK5YuY5a6aID4gc29uJydla2lrYW5qb3VcIDsKK+WLleWKm+mZjeS4iyA+IGRvdXJ5b2t1a291a2FcIDsKK+S4ieinkumXmOS6iSA+IHNhbmtha3V0b3Vzb3VcIDsKK+mAgOWtpuWHpuWIhiA+IHRhaWdha3VzaG9idW5cIDsKK+Wun+mok+adkOaWmSA+IGppa2tlbnphaXJ5b3VcIDsKK+mHjeimgeeUo+alrSA+IGp1dXlvdXNhbmd5b3VcIDsKK+a2suS9k+eHg+aWmSA+IGVraXRhaW5lbnJ5b3VcIDsKK+S8nemBk+mbhuS8miA+IGRlbmRvdXNodXVrYWlcIDsKK+WFq+mdouWFreiHgiA+IGhhY2hpbWVucm9wcGlcIDsKK+aJjeawl+eFpeeZuiA+IHNhaWtpa2FucGF0c3VcIDsKK+aEn+aDheihqOePviA+IGthbmpvdWh5b3VnZW5cIDsKK+S6uueoruW3ruWIpSA+IGppbnNodXNhYmV0c3VcIDsKK+iLseWbveeZuumfsyA+IGVpa29rdWhhdHN1b25cIDsKK+eEoemZkOaVsOWIlyA+IG11Z2Vuc3V1cmV0c3VcIDsKK+aCqumAhueEoemBkyA+IGFrdWd5YWt1bXVkb3VcIDsKK+eGn+aFruaWreihjCA+IGp1a3VyeW9kYW5rb3VcIDsKK+ebtOS6pOW6p+aomSA+IGNob2trb3V6YWh5b3VcIDsKK+WMl+WkquW5s+a0iyA+IGtpdGF0YWloZWl5b3VcIDsKK+eUt+WjsOWQiOWUsSA+IGRhbnNlaWdhc3Nob3VcIDsKK+iDg+iFuOeXheWtpiA+IGljaG91YnlvdWdha3VcIDsKK+S4ieinkumWouS/giA+IHNhbmtha3VrYW5rZWlcIDsKK+awkeaXj+mfs+alvSA+IG1pbnpva3Vvbmdha3VcIDsKK+WNmOeLrOS8muimiyA+IHRhbmRva3VrYWlrZW5cIDsKK+iyoeeUo+ebuOe2miA+IHphaXNhbnNvdXpva3VcIDsKK+S4iuaZuuWkp+WtpiA+IGpvdWNoaWRhaWdha3VcIDsKK+WDp+W6teeUn+a0uyA+IHNvdWFuc2Vpa2F0c3VcIDsKK+azleW+i+eUqOiqniA+IGhvdXJpdHN1eW91Z29cIDsKK+mbjOmbhOmBuOaKniA+IHNoaXl1dXNlbnRha3VcIDsKK+eZvuiKsee5muS5sSA+IGh5YWtrYXJ5b3VyYW5cIDsKK+mfs+alveeZguazlSA+IG9uZ2FrdXJ5b3Vob3VcIDsKK+S9j+awkeeZu+mMsiA+IGp1dW1pbnRvdXJva3VcIDsKK+aWreWxpOWGmeecnyA+IGRhbnNvdXNoYXNoaW5cIDsKK+WNoOmgmOWcsOW4ryA+IHNlbnJ5b3VjaGl0YWlcIDsKK+iWrOWTgeS8muekviA+IHlha3VoaW5nYWlzaGFcIDsKK+WHuuWPo+iqv+afuyA+IGRlZ3VjaGljaG91c2FcIDsKK+iDveWLleWFjeeWqyA+IG5vdWRvdW1lbicnZWtpXCA7CivlnKjnlZnpgqbkurogPiB6YWlyeXV1aG91amluXCA7Civpuqbol4HntLDlt6UgPiBtdWdpd2FyYXNhaWt1XCA7Civlt6Xoirjnvo7ooZMgPiBrb3VnZWliaWp1dHN1XCA7CivoiKrnqbrmlLvmkoMgPiBrb3VrdXVrb3VnZWtpXCA7Civph43ph4/pgbjmiYsgPiBqdXVyeW91c2Vuc2h1XCA7CivotaTnq4vnvr3onbYgPiBha2F0YXRlaGFjaG91XCA7CivmhJvps6XpgLHplpMgPiBhaWNob3VzaHV1a2FuXCA7Civlt6Xmpa3ljJblraYgPiBrb3VneW91a2FnYWt1XCA7CivmioDooZPmj5DmkLogPiBnaWp1dHN1dGVpa2VpXCA7CivkuK3mgKflrZDmmJ8gPiBjaHV1c2Vpc2hpc2VpXCA7CivlhazlhbHkuovmpa0gPiBrb3VreW91amlneW91XCA7CivkuIrotormnKznt5ogPiBqb3VldHN1aG9uc2VuXCA7CivnhKHlhJ/lpZHntIQgPiBtdXNob3VrZWl5YWt1XCA7CivploPlhYnpm7vnkIMgPiBzZW5rb3VkZW5reXV1XCA7Civlm73nsY3oqIDoqp4gPiBrb2t1c2VraWdlbmdvXCA7CivlrprmuKnli5XniakgPiB0ZWlvbmRvdWJ1dHN1XCA7CivnqbrliY3ntbblvowgPiBrdXV6ZW56ZXRzdWdvXCA7CivmrablipvlpJbkuqQgPiBidXJ5b2t1Z2Fpa291XCA7CivmiLjnsY3mioTmnKwgPiBrb3Nla2lzaG91aG9uXCA7CivmnJ3prq7ljYrls7YgPiBjaG91c2VuaGFudG91XCA7CivpnZ7luLjlj6zpm4YgPiBoaWpvdXNob3VzaHV1XCA7CivlhajoiKzliY3lk6ggPiB6ZW5wYW56ZW5zaG91XCA7CivlpKfkuZfku4/mlZkgPiBkYWlqb3VidWtreW91XCA7CivliIbmnpDoqabpqJMgPiBidW5zZWtpc2hpa2VuXCA7Civlub3pnIrlsYvmlbcgPiB5dXVyZWl5YXNoaWtpXCA7CivmnInnlKPpmo7ntJogPiB5dXVzYW5rYWlreXV1XCA7CivmqKnlipvmlL/msrsgPiBrZW5yeW9rdXNlaWppXCA7CivohIXov6vpm7voqbEgPiBreW91aGFrdWRlbndhXCA7CivoiLnojbfoqLzliLggPiBmdW5hbmlzaG91a2VuXCA7CivmiYvml5fkv6Hlj7cgPiB0ZWJhdGFzaGluZ291XCA7CivmoITppIrlpLHoqr8gPiBlaXlvdXNoaXRjaG91XCA7CivkvZzms4HmjIfmlbAgPiBzYWtreW91c2hpc3V1XCA7Civnm7jkupLpgJrkv6EgPiBzb3Vnb3RzdXVzaGluXCA7CivooajlsaTpm6rltKkgPiBoeW91c291bmFkYXJlXCA7Civngb3lrrPlr77nrZYgPiBzYWlnYWl0YWlzYWt1XCA7Civkuovlrp/oqr/mn7sgPiBqaWppdHN1Y2hvdXNhXCA7Civml6XntYzmlrDogZ4gPiBuaWtrZWlzaGluYnVuXCA7CivkuK3plpPpgbjmjJkgPiBjaHV1a2Fuc2Vua3lvXCA7CivluILplbfpgbjmjJkgPiBzaGljaG91c2Vua3lvXCA7CivmsojpmY3mtbflsrggPiBjaGlua291a2FpZ2FuXCA7CivnpL7kvJrnpo/npYkgPiBzaGFrYWlmdWt1c2hpXCA7Civoq5blip/ooYzos54gPiByb25rb3Vrb3VzaG91XCA7Civlrp/ot7XouqzooYwgPiBqaXNzZW5reXV1a291XCA7CivmraPlia/kuozpgJogPiBzZWlmdWt1bml0c3V1XCA7CivkuqTmhJ/npZ7ntYwgPiBrb3VrYW5zaGlua2VpXCA7Civmtojosrvpnanlkb0gPiBzaG91aGlrYWt1bWVpXCA7CivlsILku7vorJvluKsgPiBzZW4nJ25pbmtvdXNoaVwgOwor5aSn6YeP55Sf55SjID4gdGFpcnlvdXNlaXNhblwgOwor5pyA6auY5qmf5a+GID4gc2Fpa291a2ltaXRzdVwgOwor566h5bym5qW95rOVID4ga2FuZ2VuZ2FrdWhvdVwgOwor5paw5ZOB5ZCM5qeYID4gc2hpbnBpbmRvdXlvdVwgOwor5YKZ6I2S6LKv6JOEID4gYmlrb3VjaG9jaGlrdVwgOwor6JaE5b+X5byx6KGMID4gaGFrdXNoaWpha2tvdVwgOwor5Yuk5Yq06ZqO57SaID4ga2lucm91a2Fpa3l1dVwgOwor5pel5Y2w6Zai5L+CID4gbmljaGlpbmthbmtlaVwgOwor6ZW35pyf6KiI55S7ID4gY2hvdWtpa2Vpa2FrdVwgOwor5LiN5pmC552A6Zm4ID4gZnVqaWNoYWt1cmlrdVwgOwor5o6S5rOE5Zmo5a6YID4gaGFpc2V0c3VraWthblwgOwor6Iux5paH6Kej6YeIID4gZWlidW5rYWlzaGFrdVwgOwor5YWN6LKs5p2h6aCFID4gbWVuc2VraWpvdWtvdVwgOwor6YmE6YGT57ea6LevID4gdGV0c3Vkb3VzZW5yb1wgOwor5pS75pKD5oWL5YuiID4ga291Z2VraXRhaXNlaVwgOwor5a6a5pyf5piH57WmID4gdGVpa2lzaG91a3l1dVwgOwor6KiY6L+w5paH5rOVID4ga2lqdXRzdWJ1bnBvdVwgOwor6Iej57GN6ZmN5LiLID4gc2hpbnNla2lrb3VrYVwgOwor54Kt6YW46aOy5paZID4gdGFuc2FuJydpbnJ5b3VcIDsKK+W4guWgtOaLoeWkpyA+IHNoaWpvdWtha3VkYWlcIDsKK+eyvuWvhuapn+aisCA+IHNlaW1pdHN1a2lrYWlcIDsKK+apn+WLleitpuWvnyA+IGtpZG91a2Vpc2F0c3VcIDsKK+W5tOmWk+WPjuebiiA+IG5lbmthbnNodXVla2lcIDsKK+S7suijgeijgeWumiA+IGNodXVzYWlzYWl0ZWlcIDsKK+WBteWvn+imgeWToSA+IHRlaXNhdHN1eW91aW5cIDsKK+aWh+iXneaYpeeniyA+IGJ1bmdlaXNodW5qdXVcIDsKK+S6uuW9ouiKneWxhSA+IG5pbmd5b3VzaGliYWlcIDsKK+awtOS4reecvOmPoSA+IHN1aWNodXVtZWdhbmVcIDsKK+WFrOW6j+iJr+S/lyA+IGtvdWpvcnlvdXpva3VcIDsKK+WpmuWJjeS6pOa4iSA+IGtvbnplbmtvdXNob3VcIDsKK+WkqumZvem7kueCuSA+IHRhaXlvdWtva3V0ZW5cIDsKK+S4iuW+oeS4gOS6uiA+IGthbWlnb2ljaGluaW5cIDsKK+S4u+imgeW3pealrSA+IHNodXlvdWtvdWd5b3VcIDsKK+S4i+etieWLleeJqSA+IGthdG91ZG91YnV0c3VcIDsKK+iHpeiWquWYl+iDhiA+IGdhc2hpbnNob3V0YW5cIDsKK+iouueZguaUr+aPtCA+IHNoaW5yeW91c2hpZW5cIDsKK+i7ouWcsOeZgumkiiA+IHRlbmNoaXJ5b3V5b3VcIDsKK+S4h+iDvemBuOaJiyA+IGJhbicnbm91c2Vuc2h1XCA7CivmlZnkvJrpn7Pmpb0gPiBreW91a2Fpb25nYWt1XCA7CivljYPovInkuIDpgYcgPiBzZW56YWlpY2hpZ3V1XCA7Civlo7LosrflpZHntIQgPiBiYWliYWlrZWl5YWt1XCA7CivkvY/lroXlnLDluK8gPiBqdXV0YWt1Y2hpdGFpXCA7CivmuJvpgJ/oo4Xnva4gPiBnZW5zb2t1c291Y2hpXCA7CivkvY/lroXllY/poYwgPiBqdXV0YWt1bW9uZGFpXCA7CivlhY3nlqvooYDmuIUgPiBtZW4nJ2VraWtlc3NlaVwgOwor5qC45Y+N5b+c54KJID4ga2FrdWhhbicnbm91cm9cIDsKK+aUvuWwhOe3muWtpiA+IGhvdXNoYXNlbmdha3VcIDsKK+a1gemAmue1jOi3ryA+IHJ5dXV0c3V1a2Vpcm9cIDsKK+Wwi+W4uOS4gOanmCA+IGppbmpvdWljaGl5b3VcIDsKK+WbveacieiyoeeUoyA+IGtva3V5dXV6YWlzYW5cIDsKK+W4guawkemajue0miA+IHNoaW1pbmthaWt5dXVcIDsKK+iogOiqnuefpeitmCA+IGdlbmdvY2hpc2hpa2lcIDsKK+WFrOWFseaUvumAgSA+IGtvdWt5b3Vob3Vzb3VcIDsKK+aWkeeKtue1hOe5lCA+IGhhbmpvdXNvc2hpa2lcIDsKK+mHjeeIhuaSg+apnyA+IGp1dWJha3VnZWtpa2lcIDsKK+WpmuWkluS6pOa4iSA+IGtvbmdhaWtvdXNob3VcIDsKK+S7suijgeijgeWIpCA+IGNodXVzYWlzYWliYW5cIDsKK+S+r+eIteWkq+S6uiA+IGtvdXNoYWt1ZnVqaW5cIDsKK+acieiJsumHjuiPnCA+IHl1dXNob2t1eWFzYWlcIDsKK+mbhuWbo+iotOionyA+IHNodXVkYW5zb3Nob3VcIDsKK+S4gOasoeeUo+alrSA+IGljaGlqaXNhbmd5b3VcIDsKK+e3tOe/kuS4jei2syA+IHJlbnNodXVidXNva3VcIDsKK+WVhuiIueWtpuagoSA+IHNob3VzZW5nYWtrb3VcIDsKK+m6puiXgeicu+ibiSA+IG11Z2l3YXJhdG9uYm9cIDsKK+aciemZkOmbhuWQiCA+IHl1dWdlbnNodXVnb3VcIDsKK+i/veWKoOaWmemHkSA+IHRzdWlrYXJ5b3VraW5cIDsKK86g5Lit6ZaT5a2QID4gcGFpY2h1dWthbnNoaVwgOwor6YGg6ZqU5pWZ6IKyID4gZW5rYWt1a3lvdWlrdVwgOwor6ISz6ISK6auE5rayID4gbm91c2VraXp1aWVraVwgOwor5p2x6KW/5Y2X5YyXID4gdG91emFpbmFuYm9rdVwgOwor6Kix5a6557ea6YePID4ga3lveW91c2VucnlvdVwgOwor5q2j5pyt5YCk5q61ID4gc2hvdWZ1ZGFuZWRhblwgOwor5beu5Yil6Zai56iOID4gc2FiZXRzdWthbnplaVwgOwor5Lit562J5a2m5qChID4gY2h1dXRvdWdha2tvdVwgOwor566h5bym5qW95ZujID4ga2FuZ2VuZ2FrdWRhblwgOwor5a+E55Sf55Sf54mpID4ga2lzZWlzZWlidXRzdVwgOwor5Li75qip5Zue5b6pID4gc2h1a2Vua2FpZnVrdVwgOwor5Lih6YOo56We6YGTID4gcnlvdWJ1c2hpbnRvdVwgOwor57WC5qWt5pmC6ZaTID4gc2h1dWd5b3VqaWthblwgOwor57W55biD5LiA5be7ID4ga2VucHVoaXRvbWFraVwgOwor6YGO5Zyn5a+G5q+UID4ga2FhdHN1bWl0c3VoaVwgOwor6Ieq54S26YG45oqeID4gc2hpemVuc2VudGFrdVwgOwor5Y+N5b+c6YCf5bqmID4gaGFuJydub3Vzb2t1ZG9cIDsKK+WBteWvn+ihm+aYnyA+IHRlaXNhdHN1ZWlzZWlcIDsKK+ato+WJr+itsOmVtyA+IHNlaWZ1a3VnaWNob3VcIDsKK+elnuWJjee1kOWpmiA+IHNoaW56ZW5rZWtrb25cIDsKK+azleeahOaJi+autSA+IGhvdXRla2lzaHVkYW5cIDsKK+S9nOalremgmOWfnyA+IHNhZ3lvdXJ5b3Vpa2lcIDsKK+W5tOmHkeiovOabuCA+IG5lbmtpbnNob3VzaG9cIDsKK+S6pOmAmuWmqOWusyA+IGtvdXRzdXVib3VnYWlcIDsKK+eUuuadkeWQiOS9tSA+IGNob3Vzb25nYXBwZWlcIDsKK+aVmeS8muaXi+azlSA+IGt5b3VrYWlzZW5wb3VcIDsKK+W5leiXqeS9k+WItiA+IGJha3VoYW50YWlzZWlcIDsKK+esrOS4gOWNsOixoSA+IGRhaWljaGlpbnNob3VcIDsKK+ecn+epuuWMheijhSA+IHNoaW5rdXVob3Vzb3VcIDsKK+ebo+afu+iovOi3oSA+IGthbnNhc2hvdXNla2lcIDsKK+iqmOWwjumbu+a1gSA+IHl1dWRvdWRlbnJ5dXVcIDsKK+W+qeaXp+S9nOalrSA+IGZ1a2t5dXVzYWd5b3VcIDsKK+aQjeWus+izoOWEnyA+IHNvbmdhaWJhaXNob3VcIDsKK+aDs+WDj+WmiuWooCA+IHNvdXpvdW5pbnNoaW5cIDsKK+iZmuW/g+WdpuaHkCA+IGt5b3NoaW50YW5rYWlcIDsKK+iAkOmch+ani+mAoCA+IHRhaXNoaW5rb3V6b3VcIDsKK+aciemZkOe0muaVsCA+IHl1dWdlbmt5dXVzdXVcIDsKK+WbveWcn+ioiOeUuyA+IGtva3Vkb2tlaWtha3VcIDsKK+eUn+WtmOertuS6iSA+IHNlaXpvbmt5b3Vzb3VcIDsKK+W4guawkemdqeWRvSA+IHNoaW1pbmtha3VtZWlcIDsKK+Wkp+e1semgmOmBuCA+IGRhaXRvdXJ5b3VzZW5cIDsKK+ijnOe/kuaVmeiCsiA+IGhvc2h1dWt5b3Vpa3VcIDsKK+WPuOS7pOmVt+WumCA+IHNoaXJlaWNob3VrYW5cIDsKK+izg+mHkeS9k+ezuyA+IGNoaW5naW50YWlrZWlcIDsKK+WFqOS6uuaVmeiCsiA+IHplbmppbmt5b3Vpa3VcIDsKK+WumOaIv+mVt+WumCA+IGthbmJvdWNob3VrYW5cIDsKK+S8gealreenmOWvhiA+IGtpZ3lvdWhpbWl0c3VcIDsKK+auuuS6uuS6i+S7tiA+IHNhdHN1amluamlrZW5cIDsKK+WHtuaCqueKr+e9qiA+IGt5b3Vha3VoYW56YWlcIDsKK+WkqeeEtuizh+a6kCA+IHRlbicnbmVuc2hpZ2VuXCA7Civnmb7lp5PkuIDmj4YgPiBoeWFrdXNob3Vpa2tpXCA7Civnt4/lkIjlpKflraYgPiBzb3Vnb3VkYWlnYWt1XCA7Civku4/poILlsIrli50gPiBidWNob3Vzb25zaG91XCA7CivljYPlt67kuIfliKUgPiBzZW5zYWJhbmJldHN1XCA7CivntrLnirbntYTnuZQgPiBtb3Vqb3Vzb3NoaWtpXCA7CivnrKzkuIDpg6jplbcgPiBkYWlpY2hpYnVjaG91XCA7Civmupbmupbmsbrli50gPiBqdW5qdW5rZXNzaG91XCA7CivlpKflkozmsJHml48gPiB5YW1hdG9taW56b2t1XCA7CivlubTlubTmrbPmrbMgPiBuZW4nJ25lbnNhaXNhaVwgOwor5Zyw5q675aSJ5YuVID4gY2hpa2FrdWhlbmRvdVwgOwor6LKh5pS/5pS56Z2pID4gemFpc2Vpa2Fpa2FrdVwgOwor5YWx5ZCM6KiI566XID4ga3lvdWRvdWtlaXNhblwgOwor5YaZ55yf6Zu76YCBID4gc2hhc2hpbmRlbnNvdVwgOwor5LiN6Imv6Ki65patID4gZnVyeW91c2hpbmRhblwgOwor5rC055Sj5aSn5a2mID4gc3Vpc2FuZGFpZ2FrdVwgOwor5Y2Y5byP54Gr5bGxID4gdGFuc2hpa2lrYXphblwgOwor5LiA5YiG5LiA5Y6YID4gaWNoaWJ1aWNoaXJpblwgOwor5a6f5Zyw5qSc6Ki8ID4gaml0Y2hpa2Vuc2hvdVwgOwor5YyX5riF5LqL5aSJID4gaG9rdXNoaW5qaWhlblwgOwor5Lq66Z2i542j5b+DID4gbmlubWVuanV1c2hpblwgOwor6KiI55S75q616ZqOID4ga2Vpa2FrdWRhbmthaVwgOwor56S+5ZOh6aOf5aCCID4gc2hhaW5zaG9rdWRvdVwgOwor5o2n6IW557W25YCSID4gaG91ZnVrdXpldHRvdVwgOwor6YO15L6/5paZ6YeRID4geXV1YmlucnlvdWtpblwgOwor5LqU5Y2B5LiJ5qyhID4gZ29qdXVzYW50c3VnaVwgOwor5YSq5Yud5Yqj5pWXID4geXV1c2hvdXJlcHBhaVwgOwor5b+r6YCf5YiX6LuKID4ga2Fpc29rdXJlc3NoYVwgOwor6Zuj5rCR5p2h57SEID4gbmFubWluam91eWFrdVwgOwor5Zu96Zqb5pS+6YCBID4ga29rdXNhaWhvdXNvdVwgOwor5YWt5Y2B5L2Z5beeID4gcm9rdWp1dXlvc2h1dVwgOwor5oCl6KGM5YiX6LuKID4ga3l1dWtvdXJlc3NoYVwgOwor5qOu5p6X5Zyw5bivID4gc2hpbnJpbmNoaXRhaVwgOwor6Y6W5Zu95pS/562WID4gc2Frb2t1c2Vpc2FrdVwgOwor5YW36LGh576O6KGTID4gZ3VzaG91YmlqdXRzdVwgOwor5oeQ55+z5paZ55CGID4ga2Fpc2VraXJ5b3VyaVwgOwor57Ch5piT6aOf5aCCID4ga2FuJydpc2hva3Vkb3VcIDsKK+aal+m7kuWkp+mZuCA+IGFua29rdXRhaXJpa3VcIDsKK+WPjeWLlemdqeWRvSA+IGhhbmRvdWtha3VtZWlcIDsKK+WFreaguea4hea1hCA+IHJva2tvbnNob3Vqb3VcIDsKK+WVhualreS4u+e+qSA+IHNob3VneW91c2h1Z2lcIDsKK+S/oemgvOmGuOaIkCA+IHNoaW5yYWlqb3VzZWlcIDsKK+WFseWQjOWjsOaYjiA+IGt5b3Vkb3VzZWltZWlcIDsKK+WJsuW8leWIh+espiA+IHdhcmliaWtpa2lwcHVcIDsKK+WGt+WNtOacn+mWkyA+IHJlaWt5YWt1a2lrYW5cIDsKK+S5neatu+S4gOeUnyA+IGt5dXVzaGlpc3Nob3VcIDsKK+S4reiPr+awkeWbvSA+IGNodXVrYW1pbmtva3VcIDsKK+aLoeWjsOijhee9riA+IGtha3VzZWlzb3VjaGlcIDsKK+mBk+i3r+W7uuiorSA+IGRvdXJva2Vuc2V0c3VcIDsKK+S6uumAoOWuneefsyA+IGppbnpvdWhvdXNla2lcIDsKK+i8uOWHuuS/nemZuiA+IHl1c2h1dHN1aG9rZW5cIDsKK+W/heS/ruenkeebriA+IGhpc3NodXVrYW1va3VcIDsKK+e1puS4juaJgOW+lyA+IGt5dXV5b3Nob3Rva3VcIDsKK+attOWPsuWtpua0viA+IHJla2lzaGlnYWt1aGFcIDsKK+etieW3ruaVsOWIlyA+IHRvdXNhc3V1cmV0c3VcIDsKK+WQm+WtkOixueWkiSA+IGt1bnNoaWh5b3VoZW5cIDsKK+S4i+ihqOWPgueFpyA+IGthaHlvdXNhbnNob3VcIDsKK+WLouWKm+evhOWbsiA+IHNlaXJ5b2t1aGFuJydpXCA7CivpgJrosqjmlL/nrZYgPiB0c3V1a2FzZWlzYWt1XCA7Civni6zljaDkvIHmpa0gPiBkb2t1c2Vua2lneW91XCA7CivnibnmqKnpmo7ntJogPiB0b2trZW5rYWlreXV1XCA7CivmraPopo/mm7Lnt5ogPiBzZWlraWt5b2t1c2VuXCA7Civlgo3ogbTnhKHmlpkgPiBib3VjaG91bXVyeW91XCA7CivnlKPmpa3os4fmnKwgPiBzYW5neW91c2hpaG9uXCA7Civnq4vnn7Ppm7vmqZ8gPiB0YXRlaXNoaWRlbmtpXCA7CivlpJzplpPkuK3lraYgPiB5YWthbmNodXVnYWt1XCA7Civosr/mmJPmkanmk6YgPiBib3Vla2ltYXNhdHN1XCA7CivlubTovKrlj7LlraYgPiBuZW5yaW5zaGlnYWt1XCA7CivmqZ/morDnv7voqLMgPiBraWthaWhvbicneWFrdVwgOwor5b656aCt5b655bC+ID4gdGV0dG91dGV0c3ViaVwgOwor6YeR56eR546J5p2hID4ga2lua2FneW9rdWpvdVwgOwor5rCR6ZaT55mC5rOVID4gbWlua2FucnlvdWhvdVwgOwor5oOF5rOB6Ki85ougID4gam91a3lvdXNob3Vrb1wgOwor5b+D5oK45Lqi6YCyID4gc2hpbmtpa291c2hpblwgOwor5a6a5oCn5YiG5p6QID4gdGVpc2VpYnVuc2VraVwgOwor5ZuD5a2Q6KiA6JGJID4gaGF5YXNoaWtvdG9iYVwgOwor54m56Kix5oqA6KGTID4gdG9ra3lvZ2lqdXRzdVwgOwor5aCx6YGT5YaZ55yfID4gaG91ZG91c2hhc2hpblwgOwor5pyA5L2O6LOD6YeRID4gc2FpdGVpY2hpbmdpblwgOwor556s6ZaT6Zu75patID4gc2h1bmthbmRlbmRhblwgOwor5bm06aCt5pWZ5pu4ID4gbmVudG91a3lvdXNob1wgOwor5p2x5rSL5q616YCaID4gdG91eW91ZGFudHN1dVwgOwor54us5Y2g6LOH5pysID4gZG9rdXNlbnNoaWhvblwgOwor5p2x5pa55pWZ5LyaID4gdG91aG91a3lvdWthaVwgOwor6Ieq6Kaa55eH54q2ID4gamlrYWt1c2hvdWpvdVwgOwor5aSp5L2T6Kaz5risID4gdGVudGFpa2Fuc29rdVwgOwor576k6ZuG6KGM5YuVID4gZ3Vuc2h1dWtvdWRvdVwgOwor6KGG5Lq655Kw6KaWID4gc2h1dWppbmthbnNoaVwgOwor6L+36LWw56We57WMID4gbWVpc291c2hpbmtlaVwgOwor5oim55Wl5YW15ZmoID4gc2Vucnlha3VoZWlraVwgOwor5YWI5Yi25pS75pKDID4gc2Vuc2Vpa291Z2VraVwgOwor5pyJ57Wm5LyR5pqHID4geXV1a3l1dWt5dXVrYVwgOwor6KaL5a2m5peF6KGMID4ga2VuZ2FrdXJ5b2tvdVwgOwor5Zu95YaF57WM5riIID4ga29rdW5haWtlaXphaVwgOwor5a++56m65bCE5pKDID4gdGFpa3V1c2hhZ2VraVwgOwor5q+U6LyD5a++54WnID4gaGlrYWt1dGFpc2hvdVwgOwor5biC5Lit6YqA6KGMID4gc2hpY2h1dWdpbmtvdVwgOwor5a6a54K56Kaz5risID4gdGVpdGVua2Fuc29rdVwgOwor5L+D5oiQ5qC95Z+5ID4gc29rdXNlaXNhaWJhaVwgOwor6LOD6YeR5qC85beuID4gY2hpbmdpbmtha3VzYVwgOwor5pSv6YWN6ZqO57SaID4gc2hpaGFpa2Fpa3l1dVwgOwor5LqM6YeN6Zyy5Ye6ID4gbmlqdXVyb3NodXRzdVwgOwor5YuV6ISI56Gs5YyWID4gZG91bXlha3Vrb3VrYVwgOwor6Zqj5o6l6YOo6ZqKID4gcmluc2V0c3VidXRhaVwgOwor5bu66Kit5qmf5qKwID4ga2Vuc2V0c3VraWthaVwgOwor5LiK5bGk6ZqO57SaID4gam91c291a2Fpa3l1dVwgOwor5LiJ5oud5Lmd5oudID4gc2FucGFpa3l1dWhhaVwgOwor54m55q6K5rOV5Lq6ID4gdG9rdXNodWhvdWppblwgOwor5aOr6a2C5ZWG5omNID4gc2hpa29uc2hvdXNhaVwgOwor6Jma5b+D5ouF5oeQID4ga3lvc2hpbnRhbmthaVwgOwor5YK355eF5o2V6JmcID4gc2hvdWJ5b3Vob3J5b1wgOwor54Sh5oCn55Sf5q6WID4gbXVzZWlzZWlzaG9rdVwgOwor6LKh5pS/5pS/562WID4gemFpc2Vpc2Vpc2FrdVwgOwor6Zm45LiK56u25oqAID4gcmlrdWpvdWt5b3VnaVwgOwor5Y2a6Kan5by36KiYID4gaGFrdXJhbmt5b3VraVwgOwor5Lq65qip5L615a6zID4gamlua2Vuc2hpbmdhaVwgOwor57eP6aCY5oGv5a2QID4gc291cnlvdW11c3Vrb1wgOwor6I+c6aOf5Li7576pID4gc2Fpc2hva3VzaHVnaVwgOwor6LWk5aSW55m65pWjID4gc2VraWdhaWhhc3NhblwgOwor6KGb5pif6YCa5L+hID4gZWlzZWl0c3V1c2hpblwgOwor5Lq65ZOh5YmK5ribID4gamluJydpbnNha3VnZW5cIDsKK+eOh+WFiOi6rOihjCA+IHNvc3Nlbmt5dXVrb3VcIDsKK+WFjeeojuaJgOW+lyA+IG1lbnplaXNob3Rva3VcIDsKK+mYsue4ruWKoOW3pSA+IGJvdXNodWt1a2Frb3VcIDsKK+ikh+W8j+ewv+iomCA+IGZ1a3VzaGlraWJva2lcIDsKK+iyrOS7u+WIhuaLhSA+IHNla2luaW5idW50YW5cIDsKK+atpuWKm+ihjOS9vyA+IGJ1cnlva3Vrb3VzaGlcIDsKK+eVque1hOe3qOaIkCA+IGJhbmd1bWloZW5zZWlcIDsKK+S8keaBr+aZgumWkyA+IGt5dXVzb2t1amlrYW5cIDsKK+S6jOmHjemWouevgCA+IG5panV1a2Fuc2V0c3VcIDsKK+ims+WFieeUo+alrSA+IGthbmtvdXNhbmd5b3VcIDsKK+WNmuW8leaXgeiovCA+IGhha3VpbmJvdXNob3VcIDsKK+WFseiyqeS8muekviA+IGt5b3VoYW5nYWlzaGFcIDsKK+aPmumZuOiJpuiJhyA+IHlvdXJpa3VrYW50ZWlcIDsKK+S4u+Wuoumhm+WAkiA+IHNodWtha3V0ZW50b3VcIDsKK+WFrOWus+WvvuetliA+IGtvdWdhaXRhaXNha3VcIDsKK+mZveWLleS9nOaIpiA+IHlvdWRvdXNha3VzZW5cIDsKK+iqmOaLkOeKr+S6uiA+IHl1dWthaWhhbicnbmluXCA7CivlhoXoh5Pnlr7mgqMgPiBuYWl6b3VzaGlra2FuXCA7Civkv67lo6voq5bmlocgPiBzaHV1c2hpcm9uYnVuXCA7Civpq5jnrYnmlZnogrIgPiBrb3V0b3VreW91aWt1XCA7CivmuKzph4/mqZ/morAgPiBzb2t1cnlvdWtpa2FpXCA7CivpnIrmhJ/llYbms5UgPiByZWlrYW5zaG91aG91XCA7CivlkarnianltIfmi50gPiBqdWJ1dHN1c3V1aGFpXCA7CivmlofkurrloqjlrqIgPiBidW5qaW5ib2trYWt1XCA7Civmib/nn6XkuYvliqkgPiBzaG91Y2hpbm9zdWtlXCA7CivotorlubTojYnmnKwgPiBldHN1bmVuc291aG9uXCA7CivpgJrli6TliJfou4ogPiB0c3V1a2lucmVzc2hhXCA7Civnsr7pgLLmlpnnkIYgPiBzaG91amlucnlvdXJpXCA7CivkuLvlipvpg6jpmoogPiBzaHVyeW9rdWJ1dGFpXCA7Civpg7flnJ/mloflraYgPiBreW91ZG9idW5nYWt1XCA7CivmnJ/mnKvoqabpqJMgPiBraW1hdHN1c2hpa2VuXCA7CivpgKPpgqbpppbnm7ggPiByZW5wb3VzaHVzaG91XCA7Civmg4XloLHlt6XlraYgPiBqb3Vob3Vrb3VnYWt1XCA7CivkuIPliIbkuInliIYgPiBzaGljaGlidXNhbmJ1XCA7CivlhazniLXlpKvkurogPiBrb3VzaGFrdWZ1amluXCA7Civlj4LogIPos4fmlpkgPiBzYW5rb3VzaGlyeW91XCA7Civni6zmlq3lsILooYwgPiBkb2t1ZGFuc2Vua291XCA7CivlhaXlrabogIPmn7sgPiBueXV1Z2FrdWtvdXNhXCA7Civpga3pm6Pkv6Hlj7cgPiBzb3VuYW5zaGluZ291XCA7CivmtYHli5Xos4fnlKMgPiByeXV1ZG91c2hpc2FuXCA7CivkuIvlm5vljYrmnJ8gPiBzaGltb3NoaWhhbmtpXCA7Civpgbjmip7np5Hnm64gPiBzZW50YWt1a2Ftb2t1XCA7Civmg4XloLHmpJzntKIgPiBqb3Vob3VrZW5zYWt1XCA7CivpoILkuIrkvJroq4cgPiBjaG91am91a2FpZGFuXCA7CivlhbHmuIjntYTlkIggPiBreW91c2Fpa3VtaWFpXCA7Civlj4LogIPmm7jnm64gPiBzYW5rb3VzaG9tb2t1XCA7Civmsrvlronorablr58gPiBjaGlhbmtlaXNhdHN1XCA7CivoiIjmpa3pioDooYwgPiBrb3VneW91Z2lua291XCA7CivooYzmlL/mm7jlo6sgPiBneW91c2Vpc2hvc2hpXCA7CivplqLpgKPpoIXnm64gPiBrYW5yZW5rb3Vtb2t1XCA7Civpm6PooYzoi6booYwgPiBuYW5neW91a3VneW91XCA7CivpoJDph5HpgJrluLMgPiB5b2tpbnRzdXVjaG91XCA7CivntrLohpzliaXpm6IgPiBtb3VtYWt1aGFrdXJpXCA7CivovLjlh7rmpJzmn7sgPiB5dXNodXRzdWtlbnNhXCA7CivmjIflrprpipjmn4QgPiBzaGl0ZWltZWlnYXJhXCA7CivphZLmsaDogonmnpcgPiBzaHVjaGluaWt1cmluXCA7CivlhKrnrYnos57nirYgPiB5dXV0b3VzaG91am91XCA7Civpu4Tph5HliIblibIgPiBvdWdvbmJ1bmthdHN1XCA7Civkv67nuZXlt6XloLQgPiBzaHV1emVua291am91XCA7CivkuozogIXpgbjkuIAgPiBuaXNoYXNlbicnaXRzdVwgOwor54q25rOB6Ki85ougID4gam91a3lvdXNob3Vrb1wgOwor6I+M6aGe5a2m6ICFID4ga2lucnVpZ2FrdXNoYVwgOwor5Luy6KOB44CF5YikID4gY2h1dXNhaXNhaWJhblwgOwor5aSW5Zu96YO15L6/ID4gZ2Fpa29rdXl1dWJpblwgOwor5Lqk6YCa5Zyw542EID4ga291dHN1dWppZ29rdVwgOwor6ZuG5Zuj57WQ5amaID4gc2h1dWRhbmtla2tvblwgOwor5oSb546p5YuV54mpID4gYWlnYW5kb3VidXRzdVwgOwor6ZaT5o6l6Kmx5rOVID4ga2Fuc2V0c3V3YWhvdVwgOwor5a2m55Sf6YOo6ZW3ID4gZ2FrdXNlaWJ1Y2hvdVwgOwor6Zuy5b2i5a6a6KaPID4ga3Vtb2dhdGFqb3VnaVwgOwor5bGL5aSW5bqD5ZGKID4gb2t1Z2Fpa291a29rdVwgOwor5Lqh5ZG95paH5a2mID4gYm91bWVpYnVuZ2FrdVwgOwor6YCj57aa6Zai5pWwID4gcmVuem9rdWthbnN1dVwgOwor562G6Leh6ZGR5a6aID4gaGlzc2VraWthbnRlaVwgOwor5buD54mp5Yip55SoID4gaGFpYnV0c3VyaXlvdVwgOwor6LuK5Lih5Lya56S+ID4gc2hhcnlvdWdhaXNoYVwgOwor6bq76Jas5bi457+SID4gbWF5YWt1am91c2h1dVwgOwor5LiN5b6X6KaB6aCYID4gZnV0b2t1eW91cnlvdVwgOwor5bGx5bKz5Zyw5bivID4gc2FuZ2FrdWNoaXRhaVwgOwor5ZWP6aGM6aCY5Z+fID4gbW9uZGFpcnlvdWlraVwgOwor5YCL5Yil6LKp5aOyID4ga29iZXRzdWhhbmJhaVwgOwor5bmz6KGh5oSf6KaaID4gaGVpa291a2Fua2FrdVwgOwor5YaF5Zu96YO15L6/ID4gbmFpa29rdXl1dWJpblwgOwor5aCx6YGT55Wq57WEID4gaG91ZG91YmFuZ3VtaVwgOwor5YWx5ZCM57WE5ZCIID4ga3lvdWRvdWt1bWlhaVwgOwor57SZ5LiK6KiI55S7ID4gc2hpam91a2Vpa2FrdVwgOwor5LqM6YeN5Zu957GNID4gbmlqdXVrb2t1c2VraVwgOwor6KGM5pS/6Ki06KifID4gZ3lvdXNlaXNvc2hvdVwgOwor57W257iB5oq15oqXID4gemV0c3VlbnRlaWtvdVwgOwor5Yy/5ZCN5om56KmVID4gdG9rdW1laWhpaHlvdVwgOwor6ZW35pyf5Zu95YK1ID4gY2hvdWtpa29rdXNhaVwgOwor5YWJ57ea55mC5rOVID4ga291c2VucnlvdWhvdVwgOwor5rWB5YuV6LOH5pysID4gcnl1dWRvdXNoaWhvblwgOwor6Ki85Yi45biC5aC0ID4gc2hvdWtlbnNoaWpvdVwgOwor5bu66Kit5bel5LqLID4ga2Vuc2V0c3Vrb3VqaVwgOwor5aSJ5oWL5oCn5qyyID4gaGVudGFpc2VpeW9rdVwgOwor56m65Lit57Sw6I+MID4ga3V1Y2h1dXNhaWtpblwgOwor5Luj6YeR5byV5o+bID4gZGFpa2luaGlraWthZVwgOwor6Iy255Wq54uC6KiAID4gY2hhYmFua3lvdWdlblwgOwor5Lqk6YCa6KaP5YmHID4ga291dHN1dWtpc29rdVwgOwor5Lya5bit5paZ55CGID4ga2Fpc2VraXJ5b3VyaVwgOwor54++54mp55u45aC0ID4gZ2VuYnV0c3Vzb3ViYVwgOwor5p2f57ib55CG6KuWID4gc29rdWJha3VyaXJvblwgOwor5YWs5q2j6Ki85pu4ID4ga291c2Vpc2hvdXNob1wgOwor5ZCM55uf5oCg5qWtID4gZG91bWVpdGFpZ3lvdVwgOwor6KGM5YuV5pa56YedID4ga291ZG91aG91c2hpblwgOwor6YGp5q2j5L6h5qC8ID4gdGVraXNlaWtha2FrdVwgOwor5Lq656iu5pS56ImvID4gamluc2h1a2FpcnlvdVwgOwor5Y2K5rWB5YuV5L2TID4gaGFucnl1dWRvdXRhaVwgOwor5pmu5LuP5oim5LqJID4gZnVmdXRzdXNlbnNvdVwgOwor5LqM6YeN57WQ5ZCIID4gbmlqdXVrZXRzdWdvdVwgOwor5YWN6LKs54m55qipID4gbWVuc2VraXRva2tlblwgOwor5oey5oiS5Yem5YiGID4gY2hvdWthaXNob2J1blwgOwor5LiN5b+D5b6X6ICFID4gZnVrb2tvcm9lbW9ub1wgOwor6LGq5pS+56OK6JC9ID4gZ291aG91cmFpcmFrdVwgOwor6Imm56Cy5bCE5pKDID4ga2FucG91c2hhZ2VraVwgOwor6Zai5pWw6Kej5p6QID4ga2Fuc3V1a2Fpc2VraVwgOwor6YCa5L+h6Kyb5bqnID4gdHN1dXNoaW5rb3V6YVwgOwor5aSW6LKo542y5b6XID4gZ2Fpa2FrYWt1dG9rdVwgOwor5b+D5oK45piC6YCyID4gc2hpbmtpa291c2hpblwgOwor6Zu75rCX5rq25o6lID4gZGVua2l5b3VzZXRzdVwgOwor5ZCu55mw6IiQ55eUID4gc2VuJyd5b3VzaGlqaVwgOwor5Yq05YON5p2h5Lu2ID4gcm91ZG91am91a2VuXCA7CivlpJblm73oiKrot68gPiBnYWlrb2t1a291cm9cIDsKK+S8nemAgemAn+W6piA+IGRlbnNvdXNva3Vkb1wgOwor5LiA5pys6Kq/5a2QID4gaXBwb25kam91c2hpXCA7CivlopzokL3kuovmlYUgPiB0c3VpcmFrdWppa29cIDsKK+e3mummmeiKseeBqyA+IHNlbmtvdWhhbmFiaVwgOwor5p2x5Lqs6YO95pS/ID4gdG91a3lvdXRvc2VpXCA7Civou43kuovnlKPmpa0gPiBndW5qaXNhbmd5b3VcIDsKK+S7o+eQhueJp+W4qyA+IGRhaXJpYm9rdXNoaVwgOwor5LiJ5Y2B5LiJ5omAID4gc2FuanV1c2Fuc2hvXCA7CivkuIDmrKHnt5rovKogPiBpY2hpamlzZW5yaW5cIDsKK+S+oeagvOWkieWLlSA+IGtha2FrdWhlbmRvdVwgOwor5oKg5oKg6Ieq6YGpID4geXV1eXV1aml0ZWtpXCA7CivlsbHntKvmsLTmmI4gPiBzYW5zaGlzdWltZWlcIDsKK+epuui8uOiyqOeJqSA+IGt1dXl1a2Ftb3RzdVwgOwor6Kaz5YWJ6LOH5rqQID4ga2Fua291c2hpZ2VuXCA7CivoppbopproqIDoqp4gPiBzaGlrYWt1Z2VuZ29cIDsKK+m6u+iWrOW4uOeUqCA+IG1heWFrdWpvdXlvdVwgOwor5pel5pyd6L6e5YW4ID4gbml0Y2hvdWppdGVuXCA7CivlupfpoK3lgrXliLggPiB0ZW50b3VzYWlrZW5cIDsKK+eJiOaoqeaJgOaciSA+IGhhbmtlbnNob3l1dVwgOwor5LiA5rOK6KGM6LuNID4gaXBwYWt1a291Z3VuXCA7CivpnZLnqbrluILloLQgPiBhb3pvcmFzaGlqb3VcIDsKK+mWi+elqOe1kOaenCA+IGthaWh5b3VrZWtrYVwgOwor5Y2Y54us6Kyb5ZKMID4gdGFuZG9rdWtvdXdhXCA7Civov5Hku6Pnp5HlraYgPiBraW5kYWlrYWdha3VcIDsKK+eEoeelnuirluiAhSA+IG11c2hpbnJvbnNoYVwgOwor5pyJ5b2i6LKh55SjID4geXV1a2VpemFpc2FuXCA7CivmsrPlsrjmrrXkuJggPiBrYWdhbmRhbmt5dXVcIDsKK+WkqumZveWFiee3miA+IHRhaXlvdWtvdXNlblwgOwor5YSE5LiH6ZW36ICFID4gb2t1bWFuY2hvdWphXCA7CivljJbnsqfnn7PpubggPiBrZXNob3VzZWtrZW5cIDsKK+iogOiqnueZguazlSA+IGdlbmdvcnlvdWhvdVwgOwor5a6J5a6a5oiQ6ZW3ID4gYW50ZWlzZWljaG91XCA7CivnpZ7mqKnmlL/msrsgPiBzaGlua2Vuc2VpamlcIDsKK+iHs+S4iuWRveS7pCA+IHNoaWpvdW1laXJlaVwgOwor6Z+z5qW9576O5a2mID4gb25nYWt1YmlnYWt1XCA7CivlirTlg43lpKfoh6MgPiByb3Vkb3VkYWlqaW5cIDsKK+mZjeagvOS6uuS6iyA+IGtvdWtha3VqaW5qaVwgOwor56qS57Sg6IKl5paZID4gY2hpc3NvaGlyeW91XCA7Civou43pg6jni6zoo4EgPiBndW5idWRva3VzYWlcIDsKK+WFrOWLmeeWvueXhSA+IGtvdW11c2hpcHBlaVwgOwor6Iqx54Gr5aSn5LyaID4gaGFuYWJpdGFpa2FpXCA7CivooYzpm7LmtYHmsLQgPiBrb3V1bnJ5dXVzdWlcIDsKK+WPjeWvvuioiuWVjyA+IGhhbnRhaWppbm1vblwgOwor5pa55ZCR6Lui5o+bID4gaG91a291dGVua2FuXCA7CivnhKHnt5rmioDooZMgPiBtdXNlbmdpanV0c3VcIDsKK+iJruS4i+iJruS4iiA+IGdvbmthZ29uc2hvdVwgOwor5pyq5p2l5a6M5LqGID4gbWlyYWlrYW5yeW91XCA7CivliY3pgLLpg6jpmoogPiB6ZW5zaGluYnV0YWlcIDsKK+aXoue0hOWIhuaVsCA+IGtpeWFrdWJ1bnN1dVwgOwor5YWs5Za25L2P5a6FID4ga291ZWlqdXV0YWt1XCA7Civnm6Pmn7vloLHlkYogPiBrYW5zYWhvdWtva3VcIDsKK+aciOe1jOWRqOacnyA+IGdla2tlaXNodXVraVwgOwor56eR5a2m6ZuR6KqMID4ga2FnYWt1emFzc2hpXCA7CivpgJrosqjntbHlkIggPiB0c3V1a2F0b3Vnb3VcIDsKK+WvvuWcsOmAn+W6piA+IHRhaWNoaXNva3Vkb1wgOwor5a6Y5YOa5Li7576pID4ga2FucnlvdXNodWdpXCA7CivlvqHoqr/lrZDogIUgPiBvY2hvdXNoaW1vbm9cIDsKK+S6jOi2s+S4ieaWhyA+IG5pc29rdXNhbm1vblwgOwor6YW45oCn6IKl5paZID4gc2Fuc2VpaGlyeW91XCA7CivoqIDmlofkuIDoh7QgPiBnZW5idW4nJ2l0Y2hpXCA7CivlhbHlkIznrqHnkIYgPiBreW91ZG91a2FucmlcIDsKK+a1t+WkluaXheihjCA+IGthaWdhaXJ5b2tvdVwgOwor5LiN5a+p5bCL5ZWPID4gZnVzaGluamlubW9uXCA7Civosqzku7vou6Llq4EgPiBzZWtpbmludGVua2FcIDsKK+mVt+acn+aJi+W9oiA+IGNob3VraXRlZ2F0YVwgOwor57Wm5LiO5rC05rqWID4ga3l1dXlvc3VpanVuXCA7CivlsJHmlbDnsr7pi60gPiBzaG91c3V1c2VpZWlcIDsKK+i7ouaPm+ekvuWCtSA+IHRlbmthbnNoYXNhaVwgOwor5rK/5bK45ryB5qWtID4gZW5nYW5neW9neW91XCA7CivkuqTpmpvnpL7kvJogPiBrb3VzYWlzaGFrYWlcIDsKK+WItumZkOS6i+mghSA+IHNlaWdlbmppa29rdVwgOwor5YiR5LqL6LKs5Lu7ID4ga2VpamlzZWtpbmluXCA7Civmt7flkIjngavolqwgPiBrb25nb3VrYXlha3VcIDsKK+WPjOWLmeWlkee0hCA+IHNvdW11a2VpeWFrdVwgOwor5Y+k5YW45a2m6ICFID4ga290ZW5nYWt1c2hhXCA7CivnlJ/mtLvmibbliqkgPiBzZWlrYXRzdWZ1am9cIDsKK+eUqOebiueJqeaoqSA+IHlvdWVraWJ1a2tlblwgOwor5Ye65Yuk5pmC6ZaTID4gc2h1a2tpbmppa2FuXCA7Civnm7jplqLkv4LmlbAgPiBzb3VrYW5rZWlzdXVcIDsKK+ekvuS8muS/nemanCA+IHNoYWthaWhvc2hvdVwgOwor5Y2U5ZCM5YuV5L2cID4ga3lvdWRvdWRvdXNhXCA7Civmg4Xnt5LnupLntr8gPiBqb3VjaG90ZW5tZW5cIDsKK+eri+aGsuWQm+S4uyA+IHJpa2tlbmt1bnNodVwgOwor5peF5Yi45p+76Ki8ID4gcnlva2Vuc2FzaG91XCA7CivokL3oirHni7zol4kgPiByYWtrYXJvdXpla2lcIDsKK+WMluWtpuijveWTgSA+IGthZ2FrdXNlaWhpblwgOwor6YGp5oCn5qSc5p+7ID4gdGVraXNlaWtlbnNhXCA7CivnlJ/lkb3np5HlraYgPiBzZWltZWlrYWdha3VcIDsKK+W3peS9nOapn+aisCA+IGtvdXNha3VraWthaVwgOwor5Zuz5pu46aSo5a2mID4gdG9zaG9rYW5nYWt1XCA7Civkurrlj6PllY/poYwgPiBqaW5rb3Vtb25kYWlcIDsKK+W+oeeUqOWtpuiAhSA+IGdveW91Z2FrdXNoYVwgOwor5rCX5Zyn6YWN572uID4ga2lhdHN1aGFpY2hpXCA7CivmmYLpmZDniIblvL4gPiBqaWdlbmJha3VkYW5cIDsKK+iHqueEtuWvvuaVsCA+IHNoaXplbnRhaXN1dVwgOwor5aSc6ZaT5pKu5b2xID4geWFrYW5zYXRzdWVpXCA7CivnpZ7ntYznuYrntq0gPiBzaGlua2Vpc2VuJydpXCA7CivmtYHli5XosqDlgrUgPiByeXV1ZG91ZnVzYWlcIDsKK+acgOmrmOiomOmMsiA+IHNhaWtvdWtpcm9rdVwgOwor5paw6KaP5LqL5qWtID4gc2hpbmtpamlneW91XCA7Civlp5PlkI3liKTmlq0gPiBzZWltZWloYW5kYW5cIDsKK+WPjeWvvue1puS7mCA+IGhhbnRhaWt5dXVmdVwgOwor5pWX5oim5oqV5omLID4gaGFpc2VudG91c2h1XCA7CivmrabmvKLkuInpjq4gPiBidWthbnNhbmNoaW5cIDsKK+S4gOacneS4gOWklSA+IGl0Y2hvdWlzc2VraVwgOwor5a625YaF5bel5qWtID4ga2FuYWlrb3VneW91XCA7CivmtYXlraboj7LmiY0gPiBzZW5nYWt1aGlzYWlcIDsKK+a3t+WQiOe1jOa4iCA+IGtvbmdvdWtlaXphaVwgOwor5biC5rCR5Zuj5L2TID4gc2hpbWluZGFudGFpXCA7CivkvIHmpa3pgKPlkIggPiBraWd5b3VyZW5nb3VcIDsKK+aZguS7o+aEn+immiA+IGppZGFpa2Fua2FrdVwgOwor5YWx5ZCM5Zug5a2QID4ga3lvdWRvdWluc2hpXCA7CivkuIDmhI/lsILlv4MgPiBpY2hpaXNlbnNoaW5cIDsKK+asp+exs+iruOWbvSA+IG91YmVpc2hva29rdVwgOwor6Z2p5ZG96YGL5YuVID4ga2FrdW1laXVuZG91XCA7CivntJTnsovln7nppIogPiBqdW5zdWliYWl5b3VcIDsKK+WGjeS4ieWGjeWbmyA+IHNhaXNhbnNhaXNoaVwgOwor5b2i6ICM5LiK5a2mID4ga2Vpamlqb3VnYWt1XCA7CivlnLDmlrnlm6PkvZMgPiBjaGlob3VkYW50YWlcIDsKK+WFrOawkeWtpuagoSA+IGtvdW1pbmdha2tvdVwgOwor5L6h5qC857Wx5Yi2ID4ga2FrYWt1dG91c2VpXCA7CivmhI/ljKDnmbvpjLIgPiBpc2hvdXRvdXJva3VcIDsKK+WPl+WLleWWq+eFmSA+IGp1ZG91a2l0c3VlblwgOwor6KO957y25bel5aC0ID4gc2Vpa2Fua291am91XCA7Civlm7rlvaLnh4PmlpkgPiBrb2tlaW5lbnJ5b3VcIDsKK+mDteS+v+eCuuabvyA+IHl1dWJpbmthd2FzZVwgOwor5Y+j6aCt5byB6KuWID4ga291dG91YmVucm9uXCA7Civnq4vkvZPljJblraYgPiByaXR0YWlrYWdha3VcIDsKK+WTgeihjOaWueatoyA+IGhpbmtvdWhvdXNlaVwgOwor6LKp5aOy5L6h5qC8ID4gaGFuYmFpa2FrYWt1XCA7CivmgYvmhJvntZDlqZogPiByZW4nJ2Fpa2Vra29uXCA7CivljJfnsbPlnJ/kurogPiBob2t1YmVpZG9qaW5cIDsKK+iHqOa1t+WtpuagoSA+IHJpbmthaWdha2tvdVwgOwor5LiA6Kqe5LiA6KqeID4gaWNoaWdvaWNoaWdvXCA7CivljYrlrpjljYrmsJEgPiBoYW5rYW5oYW5taW5cIDsKK+Wkp+WbveS4u+e+qSA+IHRhaWtva3VzaHVnaVwgOwor5rSL5pyN566q56ylID4geW91ZnVrdWRhbnN1XCA7CivkuIDmlrnpgJrooYwgPiBpcHBvdXRzdXVrb3VcIDsKK+WPguiAg+aWh+eMriA+IHNhbmtvdWJ1bmtlblwgOwor5L+h5Luw566H5p2hID4gc2hpbmtvdWtham91XCA7CivmsJHplpPos4fmnKwgPiBtaW5rYW5zaGlob25cIDsKK+S4gOaxgeS4gOiPnCA+IGljaGlqdXVpc3NhaVwgOwor5Y2B56iu56u25oqAID4gamlzc2h1a3lvdWdpXCA7CivlubPlkozlhbHlrZggPiBoZWl3YWt5b3V6b25cIDsKK+WNmOe3mumBi+i7oiA+IHRhbnNlbicndW50ZW5cIDsKK+S6i+W+jOaJv+irviA+IGppZ29zaG91ZGFrdVwgOwor5pig5YOP5L+h5Y+3ID4gZWl6b3VzaGluZ291XCA7Civlronlhajlr77nrZYgPiBhbnplbnRhaXNha3VcIDsKK+eUn+eUo+e1hOWQiCA+IHNlaXNhbmt1bWlhaVwgOwor5bGF5L2P5rC05rqWID4ga3lvanV1c3VpanVuXCA7CivnrpfnlKjmlbDlrZcgPiBzYW4nJ3lvdXN1dWppXCA7Civlp4nlprnkvJrnpL4gPiBzaGltYWlnYWlzaGFcIDsKK+mBuOaMmeWFrOWgsSA+IHNlbmt5b2tvdWhvdVwgOwor5LuP5YOP5LqM5bqnID4gYnV0c3V6b3VuaXphXCA7CivoprPlhYnml4XooYwgPiBrYW5rb3VyeW9rb3VcIDsKK+eglOeptuiqsumhjCA+IGtlbmt5dXVrYWRhaVwgOwor6YeR5ou+5LiH5YaGID4ga2luanV1bWFuJydlblwgOwor5bGO5bC/5Yem55CGID4gc2hpbnlvdXNob3JpXCA7CivllYbkuovkvJrnpL4gPiBzaG91amlnYWlzaGFcIDsKK+mbhuWQiOWgtOaJgCA+IHNodXVnb3ViYXNob1wgOwor5b2i5a656Kme5bm5ID4ga2VpeW91c2hpa2FuXCA7CivmnaHku7blj43lsIQgPiBqb3VrZW5oYW5zaGFcIDsKK+S/oeW+kuS8neWLlSA+IHNoaW50b2RlbmRvdVwgOwor5pyJ5paZ6YGT6LevID4geXV1cnlvdWRvdXJvXCA7Civmpa3li5nlpqjlrrMgPiBneW91bXVib3VnYWlcIDsKK+mYv+eJh+S4reavkiA+IGFoZW5jaHV1ZG9rdVwgOwor57Sw6IOe6J6N5ZCIID4gc2FpYm91eXV1Z291XCA7CivlkI3kurrmsJfos6ogPiBtZWlqaW5rYXRhZ2lcIDsKK+mDteaUv+Wkp+iHoyA+IHl1dXNlaWRhaWppblwgOwor5Lq65qip5pOB6K23ID4gamlua2VuJyd5b3Vnb1wgOwor5YWE5byf5Zan5ZipID4ga3lvdWRhaWdlbmthXCA7Civlt6HoiKrpgJ/luqYgPiBqdW5rb3Vzb2t1ZG9cIDsKK+S4gOWknOWkp+iHoyA+IGljaGl5YWRhaWppblwgOwor542F5a2Q5aWu6L+FID4gc2hpc2hpZnVuamluXCA7Civplqjnp4DkvZzlrrYgPiBrZWlzaHV1c2Fra2FcIDsKK+WwgumWgOWtpuagoSA+IHNlbm1vbmdha2tvdVwgOwor5pS56Z2p6YGO56iLID4ga2Fpa2FrdWthdGVpXCA7Civnt4rmgKXmjqrnva4gPiBraW5reXV1c29jaGlcIDsKK+eUu+ernOWkqeedmyA+IGdhcnlvdXRlbnNlaVwgOwor5LiA6YCy5LiA6YCAID4gaXNzaGluJydpdHRhaVwgOwor5a6a5bi454q25oWLID4gdGVpam91am91dGFpXCA7CivmjIfmlbDplqLmlbAgPiBzaGlzdXVrYW5zdXVcIDsKK+ippumok+enkeebriA+IHNoaWtlbmthbW9rdVwgOwor54G95a6z5pWR5YqpID4gc2FpZ2Fpa3l1dWpvXCA7Civlhrbph5HlrabogIUgPiB5YWtpbmdha3VzaGFcIDsKK+WcsOaWuemKgOihjCA+IGNoaWhvdWdpbmtvdVwgOwor57WM5riI55m65bGVID4ga2VpemFpaGF0dGVuXCA7CivnibnmrorlhbXlmaggPiB0b2t1c2h1aGVpa2lcIDsKK+a1t+S4reWFrOWckiA+IGthaWNodXVrb3VlblwgOwor5Zuj5L2T5peF6KGMID4gZGFudGFpcnlva291XCA7CivkuInlj4nnpZ7ntYwgPiBzYW5zYXNoaW5rZWlcIDsKK+assuaxguS4jea6gCA+IHlva2t5dXVmdW1hblwgOwor57WC5aSc5Za25qWtID4gc2h1dXlhZWlneW91XCA7CivlnLDkuIvntYTnuZQgPiBjaGlrYXNvc2hpa2lcIDsKK+iAkOmch+WutuWxiyA+IHRhaXNoaW5rYW9rdVwgOwor5q2j5LiJ6KeS5b2iID4gc2Vpc2Fua2Fra2VpXCA7CivotbDooYzou4rnt5ogPiBzb3Vrb3VzaGFzZW5cIDsKK+epuuawl+iqv+aVtCA+IGt1dWtpY2hvdXNlaVwgOwor6YGL5YuV56We57WMID4gdW5kb3VzaGlua2VpXCA7Civlj5fog47lkYrnn6UgPiBqdXRhaWtva3VjaGlcIDsKK+ino+etlOeUqOe0mSA+IGthaXRvdXlvdXNoaVwgOwor5LiN5omA5a2Y6ICFID4gZnVzaG96b25tb25vXCA7CivliqDlt6XnlKPmpa0gPiBrYWtvdXNhbmd5b3VcIDsKK+imj+agvOWOn+ahiCA+IGtpa2FrdWdlbicnYW5cIDsKK+WSjOmtgua0i+aJjSA+IHdha29uJyd5b3VzYWlcIDsKK+WPjeaIpumBi+WLlSA+IGhhbnNlbicndW5kb3VcIDsKK+iruOihjOeEoeW4uCA+IHNob2d5b3VtdWpvdVwgOwor5aWR57SE5pyf6ZaTID4ga2VpeWFrdWtpa2FuXCA7Civkurrmlofnp5HlraYgPiBqaW5idW5rYWdha3VcIDsKK+S4gOS6uuS4gOS6uiA+IGhpdG9yaWJpdG9yaVwgOwor5Yqx5oyv57Sg5a2QID4gcmVpc2hpbnNvc2hpXCA7Civlroflrpnlt6XlraYgPiB1Y2h1dWtvdWdha3VcIDsKK+S6i+WJjeaXpeS7mCA+IGppemVuaGlkenVrZVwgOwor6Ieq5a625pKe552AID4gamlrYWRvdWNoYWt1XCA7Civnn7PngbDogqXmlpkgPiBzZWtrYWloaXJ5b3VcIDsKK+WFrOebiuWEquWFiCA+IGtvdWVraXl1dXNlblwgOwor5pel6LGK5pys57eaID4gbmlwcG91aG9uc2VuXCA7Civnn7PmsrnljJblraYgPiBzZWtpeXVrYWdha3VcIDsKK+ebuOWvvumAn+W6piA+IHNvdXRhaXNva3Vkb1wgOwor6buS5a2X5YCS55SjID4ga3Vyb2ppdG91c2FuXCA7CivlhoXmhoLlpJbmgqMgPiBuYWl5dXVnYWlrYW5cIDsKK+mWouaVsOepuumWkyA+IGthbnN1dWt1dWthblwgOwor5LuY5bGe55eF6ZmiID4gZnV6b2t1YnlvdWluXCA7Civoh6jluorljLvlraYgPiByaW5zaG91aWdha3VcIDsKK+exs+a1t+WFtemaiiA+IGJlaWthaWhlaXRhaVwgOwor5oux5omL5YKN6KazID4ga291c2h1Ym91a2FuXCA7CivpoIbms5Xpl5jkuokgPiBqdW5wb3V0b3Vzb3VcIDsKK+aIpumXmOmZo+WcsCA+IHNlbnRvdWppbmNoaVwgOwor5LiA5oyZ5LiA5YuVID4gaWtreW9pY2hpZG91XCA7CivlqIHlmoflsITmkoMgPiBpa2FrdXNoYWdla2lcIDsKK+Wun+WcsOippumokyA+IGppdGNoaXNoaWtlblwgOwor5Lit6ZaT5pmv5rCXID4gY2h1dWthbmtlaWtpXCA7Civlj7jmlZnmqKnluqcgPiBzaGlreW91a2VuemFcIDsKK+WkieabtOWxpeattCA+IGhlbmtvdXJpcmVraVwgOwor6YCj5oim6YCj5pWXID4gcmVuc2VucmVucGFpXCA7Civmra/mp73ohr/mvI8gPiBzaGlzb3Vub3Vyb3VcIDsKK+e0oOeykuWtkOirliA+IHNvcnl1dXNoaXJvblwgOwor6KGb5pif5Lit57aZID4gZWlzZWljaHV1a2VpXCA7CivlnKflu7blt6XloLQgPiBhdHN1ZW5rb3Vqb3VcIDsKK+WIhuWoqeiHpeW6iiA+IGJ1bmJlbmdhc2hvdVwgOwor5Lq66YCg57W557O4ID4gamluem91a2Vuc2hpXCA7Civnl5Xot6HlmajlrpggPiBrb25zZWtpa2lrYW5cIDsKK+ibjeWFieWhl+aWmSA+IGtlaWtvdXRvcnlvdVwgOwor5YWs5Yik6Kq/5p+7ID4ga291aGFuY2hvdXNhXCA7CivpgKPntaHkvJrorbAgPiByZW5yYWt1a2FpZ2lcIDsKK+WFrOaVmeimgeeQhiA+IGtvdWt5b3V5b3VyaVwgOwor6aqo6JGj5ZOB5bqXID4ga290dG91aGludGVuXCA7CivljYHkuozmjIfohbggPiBqdXVuaXNoaWNob3VcIDsKK+iyoeaUv+WVj+mhjCA+IHphaXNlaW1vbmRhaVwgOwor6KiA6Kqe5a2m6ICFID4gZ2VuZ29nYWt1c2hhXCA7Civph5Hono3mqZ/plqIgPiBraW4nJ3l1dWtpa2FuXCA7CivnlLDlnJLoqankurogPiBkZW4nJ2Vuc2hpamluXCA7CivnrYnmr5TntJrmlbAgPiB0b3VoaWt5dXVzdXVcIDsKK+mBk+WMluW9ueiAhSA+IGRvdWtleWFrdXNoYVwgOwor5rSl5rSl5rWm5rWmID4gdHN1ZHp1dXJhdXJhXCA7Civkub7nh6XlnLDluK8gPiBrYW5zb3VjaGl0YWlcIDsKK+mfs+evgOS4u+mfsyA+IG9uc2V0c3VzaHVvblwgOwor6Iiq5rW35pel6KqMID4ga291a2Fpbmlzc2hpXCA7CivljYrlsIHlu7rmgKcgPiBoYW5ob3VrZW5zZWlcIDsKK+aBi+aEm+mWouS/giA+IHJlbicnYWlrYW5rZWlcIDsKK+aIkOmVt+mBjueoiyA+IHNlaWNob3VrYXRlaVwgOwor6YCj5biv5L+d6Ki8ID4gcmVudGFpaG9zaG91XCA7Civlv4Poh5PogqXlpKcgPiBzaGluem91aGlkYWlcIDsKK+WkqeWjjOeEoeeqriA+IHRlbmpvdW11a3l1dVwgOwor5YWo6Lqr6bq76YWUID4gemVuc2hpbm1hc3VpXCA7Civlm57nt5rkuqTmj5sgPiBrYWlzZW5rb3VrYW5cIDsKK+i8uOWFpeWItumZkCA+IHl1bnl1dXNlaWdlblwgOwor5qeL6YCg5LiN5rOBID4ga291em91ZnVreW91XCA7Civoh6rlt7HlhbHlvbkgPiBqaWtva3lvdXlha3VcIDsKK+ani+aIkOWIhuWtkCA+IGtvdXNlaWJ1bnNoaVwgOwor5biC5aC05bGV6ZaLID4gc2hpam91dGVua2FpXCA7CivlupfpoK3osqnlo7IgPiB0ZW50b3VoYW5iYWlcIDsKK+WQiOWUsemaiuWToSA+IGdhc3Nob3V0YWlpblwgOwor57WM6LK75YmK5ribID4ga2VpaGlzYWt1Z2VuXCA7CivmlofoirjlvqnoiIggPiBidW5nZWlmdWtrb3VcIDsKK+eSsOWkquW5s+a0iyA+IGthbnRhaWhlaXlvdVwgOwor5ZCN576p5pu45o+bID4gbWVpZ2lrYWtpa2FlXCA7Civph43lpKfllY/poYwgPiBqdXVkYWltb25kYWlcIDsKK+mdnuenkeWtpueahCA+IGhpa2FnYWt1dGVraVwgOwor6ZmQ5a6a5oim5LqJID4gZ2VudGVpc2Vuc291XCA7CivkuI3lnKjoqLzmmI4gPiBmdXphaXNob3VtZWlcIDsKK+WMu+WtpuWNmuWjqyA+IGlnYWt1aGFrdXNoaVwgOwor5qGI5YaF5pu45ZGIID4gYW4nJ25haXNob3RlaVwgOwor5bCC5Yi25ZCb5Li7ID4gc2Vuc2Vpa3Vuc2h1XCA7Civli6Tli5nlrp/nuL4gPiBraW5tdWppc3Nla2lcIDsKK+apn+WvhuS6i+mghSA+IGtpbWl0c3VqaWtvdVwgOwor5pep5pyf6Ki65patID4gc291a2lzaGluZGFuXCA7CivlgZzmraLkvqHmoLwgPiB0ZWlzaGlrYWtha3VcIDsKK+iomOaGtuWuuemHjyA+IGtpb2t1eW91cnlvdVwgOwor5Ye655Sf6YGO5YmwID4gc2h1c3NlaWtham91XCA7CivlvJXpgIDoiIjooYwgPiBpbnRhaWtvdWd5b3VcIDsKK+S4ieWRs+e3muW8viA+IHNoYW1pc2VuaGlraVwgOwor6Kmm6aiT5q616ZqOID4gc2hpa2VuZGFua2FpXCA7Civou43kuovku4vlhaUgPiBndW5qaWthaW55dXVcIDsKK+aUv+ayu+mBk+W+syA+IHNlaWppZG91dG9rdVwgOwor5Zu95Za25LyB5qWtID4ga29rdWVpa2lneW91XCA7CivluLDlt6PmnKzog70gPiBraXNvdWhvbicnbm91XCA7CivkuKHmgKflhbfmnIkgPiByeW91c2VpZ3V5dXVcIDsKK+m7hOmHkeS4h+iDvSA+IG91Z29uYmFuJydub3VcIDsKK+aLheW9k+iqsumVtyA+IHRhbnRvdWthY2hvdVwgOwor5re35oiQ56u25oqAID4ga29uc2Vpa3lvdWdpXCA7CivlirTlg43mlLvli6IgPiByb3Vkb3Vrb3VzZWlcIDsKK+mWkeipseS8kemhjCA+IGthbndha3l1dWRhaVwgOwor5b255YuZ6LOg5YSfID4gZWtpbXViYWlzaG91XCA7CivlubPlkoznlKPmpa0gPiBoZWl3YXNhbmd5b3VcIDsKK+WNsOixoeaJueiplSA+IGluc2hvdWhpaHlvdVwgOwor5YGc5rue5YmN57eaID4gdGVpdGFpemVuc2VuXCA7CivmsJHplpPmlL7pgIEgPiBtaW5rYW5ob3Vzb3VcIDsKK+WxnuWcsOS4u+e+qSA+IHpva3VjaGlzaHVnaVwgOwor5Ye654mI6YOo5pWwID4gc2h1cHBhbmJ1c3V1XCA7Civoh6rli5XkurrlvaIgPiBqaWRvdW5pbmd5b3VcIDsKK+aEj+W/l+iWhOW8sSA+IGlzaGloYWt1amFrdVwgOwor5b+D55CG5oim5LqJID4gc2hpbnJpc2Vuc291XCA7CivoqrLnqI7miYDlvpcgPiBrYXplaXNob3Rva3VcIDsKK+a1geihjOS9nOWutiA+IHJ5dXVrb3VzYWtrYVwgOwor5qC55rCX5LuV5LqLID4ga29ua2lzaGlnb3RvXCA7Civou73niq/nvarms5UgPiBrZWloYW56YWlob3VcIDsKK+aPo+aRqeaGtua4rCA+IHNoaW1hb2t1c29rdVwgOwor5pS55L+u5bel5LqLID4ga2Fpc2h1dWtvdWppXCA7Civlr77mipfmhI/orZggPiB0YWlrb3Vpc2hpa2lcIDsKK+mBk+i3r+S6pOmAmiA+IGRvdXJva291dHN1dVwgOwor5rOV5bu35L6u6L6xID4gaG91dGVpYnVqb2t1XCA7CivlhYnlrabmqZ/morAgPiBrb3VnYWt1a2lrYWlcIDsKK+iEseWtl+iomOWPtyA+IGRhdHN1amlraWdvdVwgOwor5YWs5pyJ5rC06Z2iID4ga291eXV1c3VpbWVuXCA7CivpmbDmgKflj43lv5wgPiBpbnNlaWhhbicnbm91XCA7CivlnYfooaHntYzmuIggPiBraW5rb3VrZWl6YWlcIDsKK+iYreagveWfueazlSA+IHJhbnNhaWJhaWhvdVwgOwor5q2m6KOF6ZuG5ZujID4gYnVzb3VzaHV1ZGFuXCA7CivljbDpkZHoqLzmmI4gPiBpbmthbnNob3VtZWlcIDsKK+Wfn+WGheiyv+aYkyA+IGlraW5haWJvdWVraVwgOwor5L2/5b6S6KGM5LydID4gc2hpdG9neW91ZGVuXCA7CivkvbPkurroloTlkb0gPiBrYWppbmhha3VtZWlcIDsKK+acieS9k+izh+eUoyA+IHl1dXRhaXNoaXNhblwgOwor5a++5rOw6Zai5L+CID4gdGFpdGFpa2Fua2VpXCA7CivmrKflt57pgKPlkIggPiBvdXNodXVyZW5nb3VcIDsKK+Wls+WtkOWtpueUnyA+IGpvc2hpZ2FrdXNlaVwgOwor5Y2Y57SU5bmz5Z2HID4gdGFuanVuaGVpa2luXCA7Civlho3luqbnorroqo0gPiBzYWlkb2tha3VuaW5cIDsKK+msvOmdouS8neW/gyA+IGtpbWVuZGVuc2hpblwgOwor6LK/5piT6buS5a2XID4gYm91ZWtpa3Vyb2ppXCA7CivntYTlkIjlk6HoqLwgPiBrdW1pYWlpbnNob3VcIDsKK+eGn+afv+S4u+e+qSA+IGp1a3VzaGlzaHVnaVwgOwor5Ya35oi/6KOF572uID4gcmVpYm91c291Y2hpXCA7Civnj77lnLDnlJ/nlKMgPiBnZW5jaGlzZWlzYW5cIDsKK+aWsOiBnuiomOiAhSA+IHNoaW5idW5raXNoYVwgOwor5aSn5bGx6bO05YuVID4gdGFpemFubWVpZG91XCA7Civms6LnirbmlLvmkoMgPiBoYWpvdWtvdWdla2lcIDsKK+WNmOiomOaKleelqCA+IHRhbmtpdG91aHlvdVwgOwor5LiA5qyh6Zai5pWwID4gaWNoaWppa2Fuc3V1XCA7CivlubzlvaLpgLLljJYgPiB5b3VrZWlzaGlua2FcIDsKK+mdkueJqeW4guWgtCA+IGFvbW9ub2ljaGliYVwgOwor5a2m55Sf6YGL5YuVID4gZ2FrdXNlaXVuZG91XCA7CivloLHlvqnmjqrnva4gPiBob3VmdWt1c29jaGlcIDsKK+WbnuW+qeWPr+iDvSA+IGthaWZ1a3VrYW5vdVwgOwor5q2j6KeS5a6a5pyoID4gc2Vpa2FrdWpvdWdpXCA7CivmrbTlj7LlnLDnkIYgPiByZWtpc2hpY2hpcmlcIDsKK+W5tOS4reeEoeS8kSA+IG5lbmp1dW11a3l1dVwgOwor55S756uc54K5552bID4gZ2FyeW91dGVuc2VpXCA7Civku6PmlbDnmoTlkowgPiBkYWlzdXV0ZWtpd2FcIDsKK+W3puWPs+ebuOensCA+IHNheXV1c291c2hvdVwgOwor5bid5Zu95Li7576pID4gdGVpa29rdXNodWdpXCA7Civopb/mtIvmnb7pnLIgPiBzZWl5b3VzaG91cm9cIDsKK+Wbnui7ouWLmOWumiA+IGthaXRlbmthbmpvdVwgOwor5L6d6KiX5bCE5pKDID4gaXRha3VzaGFnZWtpXCA7CivmraPopo/ooajnj74gPiBzZWlraWh5b3VnZW5cIDsKK+e3j+mgmOS6i+mkqCA+IHNvdXJ5b3VqaWthblwgOwor55uX6Zuj6Ziy5q2iID4gdG91bmFuYm91c2hpXCA7Civmu4Xnp4HlpYnlhawgPiBtZXNzaGlob3Vrb3VcIDsKK+e3j+WQiOenkeWtpiA+IHNvdWdvdWthZ2FrdVwgOwor5ouY5p2f5pmC6ZaTID4ga291c29rdWppa2FuXCA7Civlm5vmlrnlhavmlrkgPiBzaGlob3VoYXBwb3VcIDsKK+S4u+imgeiruOWFgyA+IHNodXlvdXNob2dlblwgOwor5Y2B5YiG5p2h5Lu2ID4ganV1YnVuam91a2VuXCA7CivmmYLku6PmgJ3mva4gPiBqaWRhaXNoaWNob3VcIDsKK+S7o+eQhuaKleelqCA+IGRhaXJpdG91aHlvdVwgOwor5Y+k5YW46Z+z5qW9ID4ga290ZW4nJ29uZ2FrdVwgOwor6YqA6KGM5by355uXID4gZ2lua291Z291dG91XCA7CivotbfniIboo4Xnva4gPiBraWJha3Vzb3VjaGlcIDsKK+mAruaNleioseirviA+IHRhaWhva3lvZGFrdVwgOwor5q2v54mZ55a+5oKjID4gc2hpZ2FzaGlra2FuXCA7CivlhbHlkIznpZbnlYwgPiBreW91ZG91c29rYWlcIDsKK+ayueaWreWkp+aVtSA+IHl1ZGFudGFpdGVraVwgOwor5bCC5qWt6L6y5a62ID4gc2VuZ3lvdW5vdWthXCA7CivnhrHlj6/loZHmgKcgPiBuZXRzdWthc29zZWlcIDsKK+W4guacieiyoeeUoyA+IHNoaXl1dXphaXNhblwgOwor5Zu95a626LOg5YSfID4ga29ra2FiYWlzaG91XCA7CivpnZnmhYvnt4/oqIggPiBzZWl0YWlzb3VrZWlcIDsKK+WwgumWgOmbkeiqjCA+IHNlbm1vbnphc3NoaVwgOwor5by+5Li45YiX6LuKID4gZGFuZ2FucmVzc2hhXCA7CivlpKfmraPmmYLku6MgPiB0YWlzaG91amlkYWlcIDsKK+ioreioiOWkieabtCA+IHNla2tlaWhlbmtvdVwgOwor5LqG6Kej5LqL6aCFID4gcnlvdWthaWppa291XCA7Civlrp/pqJPmrrXpmo4gPiBqaWtrZW5kYW5rYWlcIDsKK+WumOWDmuaUv+ayuyA+IGthbnJ5b3VzZWlqaVwgOwor5Lq656iu5ZWP6aGMID4gamluc2h1bW9uZGFpXCA7CivmvJTnv5LllY/poYwgPiBlbnNodXVtb25kYWlcIDsKK+WKtOWDjee1hOWQiCA+IHJvdWRvdWt1bWlhaVwgOwor6YaH6aKo576O5L+XID4ganVucHV1Yml6b2t1XCA7CivpgKDlj43mnInnkIYgPiB6b3VoYW4nJ3l1dXJpXCA7CivmtojosrvmgKflkJEgPiBzaG91aGlzZWlrb3VcIDsKK+W+oeeUqOaWsOiBniA+IGdveW91c2hpbmJ1blwgOwor5YWs5a6a5L6h5qC8ID4ga291dGVpa2FrYWt1XCA7CivloIbnqY3kvZznlKggPiB0YWlzZWtpc2F5b3VcIDsKK+aUu+WuiOWQjOebnyA+IGtvdXNodWRvdW1laVwgOwor5bel56eR5aSn5a2mID4ga291a2FkYWlnYWt1XCA7CivnpL7lhazpgKPlkIggPiBzaGFrb3VyZW5nb3VcIDsKK+i7jeS6i+aVmee3tCA+IGd1bmppa3lvdXJlblwgOwor5bmz5ZKM5p2h57SEID4gaGVpd2Fqb3V5YWt1XCA7CivnhKHos4fmoLzogIUgPiBtdXNoaWtha3VzaGFcIDsKK+ebuOauuumWoueojiA+IHNvdXNhaWthbnplaVwgOwor5Y2z5pmC5YGc5oimID4gc29rdWppdGVpc2VuXCA7CivmuKzlnLDooZvmmJ8gPiBzb2t1Y2hpZWlzZWlcIDsKK+epuuS4rea1rumBiiA+IGt1dWNodXVmdXl1dVwgOwor5L+h55So6KmQ5qy6ID4gc2hpbicneW91c2FnaVwgOwor5piO55y455qT5q2vID4gbWVpYm91a291c2hpXCA7CivkuIrnrYnlhbXmm7kgPiBqb3V0b3VoZWlzb3VcIDsKK+mHkeWIqeaUv+etliA+IGtpbnJpc2Vpc2FrdVwgOwor6I2J5qC55pyo55quID4gc291a29ubW9rdWhpXCA7CivlirTlg43ngb3lrrMgPiByb3Vkb3VzYWlnYWlcIDsKK+aOqOWumuW5tOm9oiA+IHN1aXRlaW5lbnJlaVwgOwor5pel5pys5paH5a2mID4gbmlob25idW5nYWt1XCA7Civlrp/pqJPnp5HlraYgPiBqaWtrZW5rYWdha3VcIDsKK+WNsemZuuS/oeWPtyA+IGtpa2Vuc2hpbmdvdVwgOwor6KW/5qyn6Ku45Zu9ID4gc2Vpb3VzaG9rb2t1XCA7CivlpJzplpPllrbmpa0gPiB5YWthbicnZWlneW91XCA7Civkvb/lvpLmib/kvJ0gPiBzaGl0b3Nob3VkZW5cIDsKK+WbveWutuS4u+W4rSA+IGtva2thc2h1c2VraVwgOwor6Zuq6KaL54Gv57GgID4geXVraW1pZG91cm91XCA7CivkuLvluK3liKTkuosgPiBzaHVzZWtpaGFuamlcIDsKK+WumOijveiRieabuCA+IGthbnNlaWhhZ2FraVwgOwor5Lyd6KiY5paH5a2mID4gZGVua2lidW5nYWt1XCA7CivliLbli5XmlL7lsIQgPiBzZWlkb3Vob3VzaGFcIDsKK+azleW+i+ihjOeCuiA+IGhvdXJpdHN1a291aVwgOwor5YWx55Sj5Zu95a62ID4ga3lvdXNhbmtva2thXCA7CivmlZnogrLmqZ/plqIgPiBreW91aWt1a2lrYW5cIDsKK+mdnuW4uOS/oeWPtyA+IGhpam91c2hpbmdvdVwgOwor6Zuq6KaL6Zqc5a2QID4geXVraW1pc2hvdWppXCA7CivmqZ/mp4vmlLnpnakgPiBraWtvdWthaWtha3VcIDsKK+W+oeeOieadk+WtkCA+IG90YW1hamFrdXNoaVwgOwor5pyA57WC57WQ5p6cID4gc2Fpc2h1dWtla2thXCA7CivnibnmgbXplqLnqI4gPiB0b2trZWlrYW56ZWlcIDsKK+WcsOmch+S6iOefpSA+IGppc2hpbicneW9jaGlcIDsKK+WFseWQjOWLn+mHkSA+IGt5b3Vkb3Vib2tpblwgOwor5LqL5YuZ5b2T5bGAID4gamltdXRvdWt5b2t1XCA7CivkuInlj7fpm5HoqowgPiBzYW5nb3V6YXNzaGlcIDsKK+a8j+a0qembu+a1gSA+IHJvdWVpZGVucnl1dVwgOwor5a6j5oim5biD5ZGKID4gc2Vuc2VuZnVrb2t1XCA7CivlhbHnlKPlnLDljLogPiBreW91c2FuY2hpa3VcIDsKK+S7o+eUqOaVmeWToSA+IGRhaXlvdWt5b3VpblwgOwor5LiJ6KeS5a6a6KaPID4gc2Fua2FrdWpvdWdpXCA7Civopb/mtIvlsIbmo4sgPiBzZWl5b3VzaG91Z2lcIDsKK+S/oeWPt+eEoeimliA+IHNoaW5nb3VtdXNoaVwgOwor5Zyf5Zyw5pS56Z2pID4gdG9jaGlrYWlrYWt1XCA7CivngKzmiLjnianluIIgPiBzZXRvbW9ub2ljaGlcIDsKK+WuieWAjeW3nemkhSA+IGFiZWthd2Ftb2NoaVwgOwor5p2x5qyn6Ku45Zu9ID4gdG91b3VzaG9rb2t1XCA7Civot6Hnm67nm7jntpogPiBhdG9tZXNvdXpva3VcIDsKK+S6uuW3peWRvOWQuCA+IGppbmtvdWtva3l1dVwgOwor6Iiq56m66YO15L6/ID4ga291a3V1eXV1YmluXCA7CivkuKbooYzovLjlhaUgPiBoZWlrb3V5dW55dXVcIDsKK+e1jOa4iOagvOW3riA+IGtlaXphaWtha3VzYVwgOwor56S+5Lya6LOH5pysID4gc2hha2Fpc2hpaG9uXCA7CivlpJbkuqTnibnmqKkgPiBnYWlrb3V0b2trZW5cIDsKK+alreWLmeaPkOaQuiA+IGd5b3VtdXRlaWtlaVwgOwor5r2c5Zyo5oSP6K2YID4gc2VuemFpaXNoaWtpXCA7CivliLblvqHoo4Xnva4gPiBzZWlneW9zb3VjaGlcIDsKK+aJgOaJgOaWueaWuSA+IHNob3Nob2hvdWJvdVwgOwor5Zu65L2T54eD5paZID4ga290YWluZW5yeW91XCA7CivpvLvlhYPmgJ3moYggPiBoYW5hbW90b2ppYW5cIDsKK+WPs+aKmOemgeatoiA+IHVzZXRzdWtpbnNoaVwgOwor5Y2D5oCd5LiH6ICDID4gc2Vuc2hpYmFua291XCA7Civkvp3poZjpgIDogbcgPiBpZ2FudGFpc2hva3VcIDsKK+S4iemDqOWQiOWUsSA+IHNhbmJ1Z2Fzc2hvdVwgOwor6KiA6Kqe5Lit5p6iID4gZ2VuZ29jaHV1c3V1XCA7Civnj77ku6PmlofmmI4gPiBnZW5kYWlidW5tZWlcIDsKK+mkiuitt+Wtpue0miA+IHlvdWdvZ2Fra3l1dVwgOwor5Zue6Lui6YGL5YuVID4ga2FpdGVuJyd1bmRvdVwgOwor6YGL6Ly45qWt6ICFID4gdW4nJ3l1Z3lvdXNoYVwgOwor55+z5rK55YWs5ZujID4gc2VraXl1a291ZGFuXCA7CivlsYDpg6jpurvphZQgPiBreW9rdWJ1bWFzdWlcIDsKK+e+qeWkquWkq+evgCA+IGdpZGF5dXVidXNoaVwgOwor6YeR5bGe5Yqg5belID4ga2luem9rdWtha291XCA7CivmgqrmgKfohavnmI0gPiBha3VzZWlzaHV5b3VcIDsKK+mmrOm5v+ato+ebtCA+IGJha2FzaG91amlraVwgOwor5ZCI5byB5Lya56S+ID4gZ291YmVuZ2Fpc2hhXCA7Civlhaznm4rkuovmpa0gPiBrb3Vla2lqaWd5b3VcIDsKK+S/oeWPt+mbu+azoiA+IHNoaW5nb3VkZW5wYVwgOwor5rSl44CF5rWm44CFID4gdHN1ZHp1dXJhdXJhXCA7CivlhoXovKrlkIzlv5cgPiB1Y2hpd2Fkb3VzaGlcIDsKK+ekvuS8muS6i+alrSA+IHNoYWthaWppZ3lvdVwgOwor6Zu257Sw5LyB5qWtID4gcmVpc2Fpa2lneW91XCA7Civlm73lrprlhazlnJIgPiBrb2t1dGVpa291ZW5cIDsKK+W/nOWKm+W+hOi3ryA+IG91cnlva3VrZWlyb1wgOwor5o6n6Ki05qOE5Y20ID4ga291c29raWt5YWt1XCA7CivpgJrli6TlrprmnJ8gPiB0c3V1a2ludGVpa2lcIDsKK+attOWPsuWcsOWbsyA+IHJla2lzaGljaGl6dVwgOwor6Zu75a2Q6YO15L6/ID4gZGVuc2hpeXV1YmluXCA7Civkurrlt6Xnn6Xog70gPiBqaW5rb3VjaGlub3VcIDsKK+epuuS4reaKleS4iyA+IGt1dWNodXV0b3VrYVwgOwor5qW95aSp5Li7576pID4gcmFrdXRlbnNodWdpXCA7CivmtbflpJbmipXos4cgPiBrYWlnYWl0b3VzaGlcIDsKK+aal+iovOeVquWPtyA+IGFuc2hvdWJhbmdvdVwgOwor5bm06b2i5Yi26ZmQID4gbmVucmVpc2VpZ2VuXCA7CivkvqHmoLzmiKbkuokgPiBrYWtha3VzZW5zb3VcIDsKK+mrmOmAn+W6pumLvCA+IGtvdXNva3Vkb2tvdVwgOwor54Gr5Yqb5pSv5o+0ID4ga2FyeW9rdXNoaWVuXCA7Civpq5jpgJ/pgZPot68gPiBrb3Vzb2t1ZG91cm9cIDsKK+S9v+eUqOemgeatoiA+IHNoaXlvdWtpbnNoaVwgOwor5Yag5ama6JGs56WtID4ga2Fua29uc291c2FpXCA7CivmsLTlubPlsL7nv7wgPiBzdWloZWliaXlva3VcIDsKK+axuuitsOapn+mWoiA+IGtldHN1Z2lraWthblwgOwor6YCj6Y6W5Y+N5b+cID4gcmVuc2FoYW4nJ25vdVwgOwor5biC5rCR56S+5LyaID4gc2hpbWluc2hha2FpXCA7Civpg6jliIbpm4blkIggPiBidWJ1bnNodXVnb3VcIDsKK+Wbm+aNqOS6lOWFpSA+IHNoaXNoYWdvbnl1dVwgOwor5Y+X6KiX5Lya56S+ID4ganV0YWt1Z2Fpc2hhXCA7CivllY/poYzmhI/orZggPiBtb25kYWlpc2hpa2lcIDsKK+mHkeiejeWFrOW6qyA+IGtpbicneXV1a291a29cIDsKK+WPi+mBlOeUsuaWkCA+IHRvbW9kYWNoaWdhaVwgOwor5LiA6Iis5pWZ6aSKID4gaXBwYW5reW91eW91XCA7CivlronlrprmgZDmhYwgPiBhbnRlaWt5b3Vrb3VcIDsKK+awtOe0oOWMlueJqSA+IHN1aXNva2FidXRzdVwgOwor55Kw5aKD5aSJ5YyWID4ga2Fua3lvdWhlbmthXCA7CivkvZPmoLzmpJzmn7sgPiB0YWlrYWt1a2Vuc2FcIDsKK+WMluWtpuWQiOaIkCA+IGthZ2FrdWdvdXNlaVwgOwor5bmz5bmz5Yeh5YehID4gaGVpaGVpYm9uYm9uXCA7CivluILloLTkvqHmoLwgPiBzaGlqb3VrYWtha3VcIDsKK+WWhOmao+mWouS/giA+IHplbnJpbmthbmtlaVwgOwor5ZCI5oiQ5rSX5YmkID4gZ291c2Vpc2VuemFpXCA7CivoprPlv7XkuLvnvqkgPiBrYW4nJ25lbnNodWdpXCA7CivpgJrli6TmmYLplpMgPiB0c3V1a2luamlrYW5cIDsKK+e1jOa4iOS9k+WItiA+IGtlaXphaXRhaXNlaVwgOwor5L2P5omA5rCP5ZCNID4ganV1c2hvc2hpbWVpXCA7Civnlr7poqjmgJLmv6QgPiBzaGlwcHV1ZG90b3VcIDsKK+WMu+eZguadkOaWmSA+IGlyeW91emFpcnlvdVwgOwor5pyJ5qmf6L6y5qWtID4geXV1a2lub3VneW91XCA7CivlpqjlrrPmlL7pgIEgPiBib3VnYWlob3Vzb3VcIDsKK+mHkeWxnuWFg+e0oCA+IGtpbnpva3VnZW5zb1wgOwor5q2v5YaF55mC5rOVID4gc2hpa2FyeW91aG91XCA7CivmgqrmiK/lsI/lg6cgPiBpdGF6dXJha296b3VcIDsKK+WFqOaoqeWkp+S9vyA+IHplbmtlbnRhaXNoaVwgOwor5Y2x5oCl5a2Y5LqhID4ga2lreXV1c29uYm91XCA7CivlroflrpnkuK3ntpkgPiB1Y2h1dWNodXVrZWlcIDsKK+mdnuS6uumWk+eahCA+IGhpbmluZ2VudGVraVwgOwor5Y+X5L+h6KOF572uID4ganVzaGluc291Y2hpXCA7CivmlbDlgKToqIjnrpcgPiBzdXVjaGlrZWlzYW5cIDsKK+eJh+iogOmau+iqniA+IGhlbmdlbnNla2lnb1wgOwor5oeQ5Lit5pmC6KiIID4ga2FpY2h1dWRva2VpXCA7Civnq7bovKrpgbjmiYsgPiBrZWlyaW5zZW5zaHVcIDsKK+aal+WPt+ino+iqrSA+IGFuZ291a2FpZG9rdVwgOwor5Y+N5YuV5oCd5oOzID4gaGFuZG91c2hpc291XCA7Civlrp/oqLzkuLvnvqkgPiBqaXNzaG91c2h1Z2lcIDsKK+aomea6luWBj+W3riA+IGh5b3VqdW5oZW5zYVwgOwor6LOH5rqQ5ZWP6aGMID4gc2hpZ2VubW9uZGFpXCA7CivpgYvpgIHmpa3ogIUgPiB1bnNvdWd5b3VzaGFcIDsKK+ihjOWLleWcsOW4ryA+IGtvdWRvdWNoaXRhaVwgOwor5bmz562J5Li7576pID4gYnlvdWRvdXNodWdpXCA7CivkuqTku6PmipXmiYsgPiBrb3V0YWl0b3VzaHVcIDsKK+WbveWutueLrOWNoCA+IGtva2thZG9rdXNlblwgOwor5Zyf5Zyw5pS56ImvID4gdG9jaGlrYWlyeW91XCA7CivnkrDlooPln7rmupYgPiBrYW5reW91a2lqdW5cIDsKK+WkluS6pOaWh+abuCA+IGdhaWtvdWJ1bnNob1wgOwor6Lu95oyZ5aaE5YuVID4ga2Vpa3lvbW91ZG91XCA7CivpmLLomavliqDlt6UgPiBib3VjaHV1a2Frb3VcIDsKK+S4jeWcqOaKleelqCA+IGZ1emFpdG91aHlvdVwgOwor5auM54WZ6YGL5YuVID4ga2VuJydlbicndW5kb3VcIDsKK+Wwgee3mOiRieabuCA+IGZ1dWthbmhhZ2FraVwgOwor5rOw54S26Ieq6IulID4gdGFpemVuamlqYWt1XCA7CivmlZfljJfkuLvnvqkgPiBoYWlib2t1c2h1Z2lcIDsKK+S+oeagvOaAp+iDvSA+IGtha2FrdXNlaW5vdVwgOwor5pu46aGe6YCB5qScID4gc2hvcnVpc291a2VuXCA7CivkurrmqKnllY/poYwgPiBqaW5rZW5tb25kYWlcIDsKK+S4gOatu+WgseWbvSA+IGlzc2hpaG91a29rdVwgOwor57e06aas5aSn5qC5ID4gbmVyaW1hZGFpa29uXCA7CivkuIDns7jkuIDmr6sgPiBpc3NoaWljaGlnb3VcIDsKK+eJueauiuS6i+aDhSA+IHRva3VzaHVqaWpvdVwgOwor6ICB5bCR5LiN5a6aID4gcm91c2hvdWZ1dGVpXCA7Civnm7jkuZflubPlnYcgPiBzb3Vqb3VoZWlraW5cIDsKK+S4h+W5tOWAmeijnCA+IG1hbicnbmVua291aG9cIDsKK+WuieWFqOaVmeiCsiA+IGFuemVua3lvdWlrdVwgOwor54Sh6LOD5LmX6LuKID4gbXVjaGluam91c2hhXCA7CivniYfli5nlpZHntIQgPiBoZW5tdWtlaXlha3VcIDsKK+S4gOiIrOWkp+ihhiA+IGlwcGFudGFpc2h1dVwgOwor5Y+k5YW45paH5a2mID4ga290ZW5idW5nYWt1XCA7Civpq5jmoKHph47nkIMgPiBrb3Vrb3V5YWt5dXVcIDsKK+S4jeWvqeioiuWVjyA+IGZ1c2hpbmppbm1vblwgOwor5Lit6I+v5paZ55CGID4gY2h1dWthcnlvdXJpXCA7CivlgaXlurfnirbmhYsgPiBrZW5rb3Vqb3V0YWlcIDsKK+m5v+WFkOWztuecjCA+IGthZ29zaGltYWtlblwgOwor5rqW5YKZ54q25rOBID4ganVuYmlqb3VreW91XCA7CivpgbjlpJbkvbPkvZwgPiBzZW5nYWlrYXNha3VcIDsKK+iogOiqnuaVmeiCsiA+IGdlbmdva3lvdWlrdVwgOwor5ZCM5paH5ZCM56iuID4gZG91YnVuZG91c2h1XCA7CivntabkuI7kvZPns7sgPiBreXV1eW90YWlrZWlcIDsKK+m6u+iWrOeKr+e9qiA+IG1heWFrdWhhbnphaVwgOwor5pyd5Luk5pqu5pS5ID4gY2hvdXJlaWJva2FpXCA7CivkupLmgbXmnaHntIQgPiBnb2tlaWpvdXlha3VcIDsKK+S4gOWbveS4gOelqCA+IGlra29rdWlwcHlvdVwgOwor56Cy6Imm5aSW5LqkID4gaG91a2FuZ2Fpa291XCA7CivmtYHooYzoqIDokYkgPiBoYXlhcmlrb3RvYmFcIDsKK+S6pOmAmuapn+mWoiA+IGtvdXRzdXVraWthblwgOwor5rC06YqA6Zu75rGgID4gc3VpZ2luZGVuY2hpXCA7Civov73lloTkvpvppIogPiB0c3VpemVua3V5b3VcIDsKK+S7luWKm+acrOmhmCA+IHRhcmlraWhvbmdhblwgOwor56ym5Y+36Kej6KqtID4gZnVnb3VrYWlkb2t1XCA7Civnn6Xog73mjIfmlbAgPiBjaGlub3VzaGlzdXVcIDsKK+W9k+WWtualreaJgCA+IHRvdWVpZ3lvdXNob1wgOwor6IG35ZOh5Lya6K2wID4gc2hva3VpbmthaWdpXCA7CivoqIDoqp7nibnmnIkgPiBnZW5nb3Rva3V5dXVcIDsKK+acgOWwj+mZkOW6piA+IHNhaXNob3VnZW5kb1wgOwor5p+T5LqV5ZCJ6YeOID4gc29tZWl5b3NoaW5vXCA7Civlrozlhajniq/nvaogPiBrYW56ZW5oYW56YWlcIDsKK+aVmeiCsuWItuW6piA+IGt5b3Vpa3VzZWlkb1wgOwor5oim5Zu95pmC5LujID4gc2VuZ29rdWppZGFpXCA7CivliY3pp4bnl4fnirYgPiB6ZW5rdXNob3Vqb3VcIDsKK+e0q+e2rOikkuizniA+IHNoaWp1aG91c2hvdVwgOwor5LiA6KiA5Y2K5Y+lID4gaWNoaWdvbmhhbmt1XCA7CivkuI3ms5XljaDmnIkgPiBmdWhvdXNlbicneXV1XCA7Civlrrbluq3nkrDlooMgPiBrYXRlaWthbmt5b3VcIDsKK+iInuWPsOebo+edoyA+IGJ1dGFpa2FudG9rdVwgOwor5ZCI5oiQ55qu6Z2pID4gZ291c2VpaGlrYWt1XCA7CivlnKjlroXli6Tli5kgPiB6YWl0YWt1a2lubXVcIDsKK+S4jeWcqOWcsOS4uyA+IGZ1emFpamludXNoaVwgOwor5LiA5a6/5LiA6aOvID4gaXNzaHVrdWlwcGFuXCA7CivogIHkurrnl4XpmaIgPiByb3VqaW5ieW91aW5cIDsKK+eJh+iCuumjm+ihjCA+IGthdGFoYWloaWtvdVwgOwor5a++5r2c5rC06ImmID4gdGFpc2Vuc3Vpa2FuXCA7CivorabmiJLorabloLEgPiBrZWlrYWlrZWlob3VcIDsKK+e0r+epjei1pOWtlyA+IHJ1aXNla2lha2FqaVwgOwor5a625peP5qeL5oiQID4ga2F6b2t1a291c2VpXCA7CivlhoXmn5TlpJbliZsgPiBuYWlqdXVnYWlnb3VcIDsKK+WxnuS6uuS4u+e+qSA+IHpva3VqaW5zaHVnaVwgOwor56Gs6Luf5Lih5rS+ID4ga291bmFucnlvdWhhXCA7CivluqfluK3nlarlj7cgPiB6YXNla2liYW5nb3VcIDsKK+epuuS4rea1ruaPmiA+IGt1dWNodXVmdXlvdVwgOwor5LiB56ia5aWJ5YWsID4gZGV0Y2hpYm91a291XCA7CivkuIDmlrnkuqTpgJogPiBpcHBvdWtvdXRzdXVcIDsKK+S4ieaXpeaciOW9oiA+IG1pa2FkenVraWtlaVwgOwor5qSc5LqL57eP6ZW3ID4ga2Vuamlzb3VjaG91XCA7CivmlrDopo/mipXos4cgPiBzaGlua2l0b3VzaGlcIDsKK+WNmOiqnuaknOe0oiA+IHRhbmdva2Vuc2FrdVwgOwor6Zqg5Yy/54mp6LOHID4gaW50b2t1YnVzc2hpXCA7CivlpbPkurrnpoHliLYgPiBueW9uaW5raW5zZWlcIDsKK+Wkp+S/rumBk+mZoiA+IGRhaXNodXVkb3VpblwgOwor5qOu5p6X5YWs5ZySID4gc2hpbnJpbmtvdWVuXCA7Civlj5fpqJPos4fmoLwgPiBqdWtlbnNoaWtha3VcIDsKK+Wkp+WSjOiogOiRiSA+IHlhbWF0b2tvdG9iYVwgOwor5YSA5byP5Li7576pID4gZ2lzaGlraXNodWdpXCA7CivpgKDlsbHpgYvli5UgPiB6b3V6YW4nJ3VuZG91XCA7CivkuIDoiKzmlZnogrIgPiBpcHBhbmt5b3Vpa3VcIDsKK+eri+S9k+mfs+mfvyA+IHJpdHRhaW9ua3lvdVwgOwor54m56ZuG6KiY5LqLID4gdG9rdXNodXVraWppXCA7Civku5jluK/msbrorbAgPiBmdXRhaWtldHN1Z2lcIDsKK+ijvee0meW3peWgtCA+IHNlaXNoaWtvdWpvdVwgOwor5pWR5o+05oqV5omLID4ga3l1dWVudG91c2h1XCA7CivosqHlm6Pms5XkurogPiB6YWlkYW5ob3VqaW5cIDsKK+awkeS/l+iInui4iiA+IG1pbnpva3VidXlvdVwgOwor5oim5LqJ54qv572qID4gc2Vuc291aGFuemFpXCA7Civpm6Pnh4PliqDlt6UgPiBuYW4nJ25lbmtha291XCA7CivljZfoiLnljJfppqwgPiBuYW5zZW5ob2t1YmFcIDsKK+apn+iDvemanOWusyA+IGtpbm91c2hvdWdhaVwgOwor5pel5pys5Zu95rCRID4gbmlob25rb2t1bWluXCA7CivoiJ7ouI/mlZnluKsgPiBidXRvdWt5b3VzaGlcIDsKK+ael+mWk+WtpuagoSA+IHJpbmthbmdha2tvdVwgOwor6Iqx6a2B6YGT5LitID4gb2lyYW5kb3VjaHV1XCA7Civmu5HpmY3nq7bmioAgPiBrYWtrb3VreW91Z2lcIDsKK+WcqOWkluWFrOmkqCA+IHphaWdhaWtvdWthblwgOwor5Zyw5pa56YG45oyZID4gY2hpaG91c2Vua3lvXCA7CivlkIjmiJDljJblraYgPiBnb3VzZWlrYWdha3VcIDsKK+engeijveiRieabuCA+IHNoaXNlaWhhZ2FraVwgOwor5LiN5a6a56mN5YiGID4gZnV0ZWlzZWtpYnVuXCA7CivmraPjgIXloILjgIUgPiBzZWlzZWlkb3Vkb3VcIDsKK+WNiuS/oeWNiueWkSA+IGhhbnNoaW5oYW5naVwgOwor6Ly45YWl6LaF6YGOID4geXVueXV1Y2hvdWthXCA7Civlm5vlhYPpgJ/luqYgPiBzaGlnZW5zb2t1ZG9cIDsKK+S7mOWxnuWtpuagoSA+IGZ1em9rdWdha2tvdVwgOwor5Lq65bel55yf54+gID4gamlua291c2hpbmp1XCA7CivkurrmqKnlm6PkvZMgPiBqaW5rZW5kYW50YWlcIDsKK+acrOaWh+aJueiplSA+IGhvbm1vbmhpaHlvdVwgOwor55S76b6N54K5552bID4gZ2FyeW91dGVuc2VpXCA7Civkub7lnLDovrLms5UgPiBrYW5jaGlub3Vob3VcIDsKK+WWp+WWp+WbguWbgiA+IGtlbmtlbmdvdWdvdVwgOwor5Lq65a6a5bCL5ZWPID4gamludGVpamlubW9uXCA7Civku7vmnJ/muoDkuoYgPiBuaW5raW1hbnJ5b3VcIDsKK+ertummrOaWsOiBniA+IGtlaWJhc2hpbmJ1blwgOwor6Zu75rCX5bel5a2mID4gZGVua2lrb3VnYWt1XCA7CivkvpvntabpgY7lpJogPiBreW91a3l1dWthdGFcIDsKK+WPo+mgreWvqeeQhiA+IGtvdXRvdXNoaW5yaVwgOwor5bmz5ZKM5pWZ6IKyID4gaGVpd2FreW91aWt1XCA7Civnt4/lkIjnl4XpmaIgPiBzb3Vnb3VieW91aW5cIDsKK+S4iuWxpOawl+a1gSA+IGpvdXNvdWtpcnl1dVwgOwor6ICB6b2i5bm06YeRID4gcm91cmVpbmVua2luXCA7CivmvJTlpY/nt7Tnv5IgPiBlbnNvdXJlbnNodXVcIDsKK+S7leaOm+WcsOmbtyA+IHNoaWtha2VqaXJhaVwgOwor5Zue6Lui6LOH6YeRID4ga2FpdGVuc2hpa2luXCA7CivmmpfkuK3mqKHntKIgPiBhbmNodXVtb3Nha3VcIDsKK+WUr+aIkeeLrOWwiiA+IHl1aWdhZG9rdXNvblwgOwor6ZuG5pWj5Li7576pID4gc2h1dXNhbnNodWdpXCA7CivlnJ/nlKPnianlsYsgPiBtaXlhZ2Vtb25veWFcIDsKK+iHque1puiHqui2syA+IGppa3l1dWppc29rdVwgOwor5ZKM5bmz5Y2U5a6aID4gd2FoZWlreW91dGVpXCA7CivlnLDmlrnliIbmqKkgPiBjaGlob3VidW5rZW5cIDsKK+W4guWGheims+WFiSA+IHNoaW5haWthbmtvdVwgOwor5pS+5bCE6IO96ZuoID4gaG91c2hhbm91YW1lXCA7Civoq5zloLHmqZ/plqIgPiBjaG91aG91a2lrYW5cIDsKK+WwseWtpue+qeWLmSA+IHNodXVnYWt1Z2ltdVwgOwor6Iiq56m65YSq5YuiID4ga291a3V1eXV1c2VpXCA7CivkurrmiY3nmbvnlKggPiBqaW56YWl0b3V5b3VcIDsKK+ikh+acrOS9jeWItiA+IGZ1a3Vob24nJ2lzZWlcIDsKK+eUn+a0u+S/neittyA+IHNlaWthdHN1aG9nb1wgOwor6ZuG5Lit6LGq6ZuoID4gc2h1dWNodXVnb3V1XCA7CivlvrTlhbXlhY3pmaQgPiBjaG91aGVpbWVuam9cIDsKK+WFrOWus+WVj+mhjCA+IGtvdWdhaW1vbmRhaVwgOwor5Y2Y6Lqr6LW05Lu7ID4gdGFuc2hpbmZ1bmluXCA7Civlt67liKXnlKjoqp4gPiBzYWJldHN1eW91Z29cIDsKK+S6uuWPo+WLleaFiyA+IGppbmtvdWRvdXRhaVwgOwor5a6H5a6Z54mp55CGID4gdWNodXVidXRzdXJpXCA7CivlhajpnaLmiKbkuokgPiB6ZW5tZW5zZW5zb3VcIDsKK+e1jOa4iOeKtuaFiyA+IGtlaXphaWpvdXRhaVwgOwor5aeU6KiX56CU56m2ID4gaXRha3VrZW5reXV1XCA7CivljYPovpvkuIfoi6YgPiBzZW5zaGluYmFua3VcIDsKK+WMu+eZguWgsemFrCA+IGlyeW91aG91c2h1dVwgOwor5rC05pm25pmC6KiIID4gc3Vpc2hvdWRva2VpXCA7CivkuInmlofmloflo6sgPiBzYW5tb25idW5zaGlcIDsKK+Wbnui7ouacqOmmrCA+IGthaXRlbm1va3ViYVwgOwor5LiN5oim5p2h57SEID4gZnVzZW5qb3V5YWt1XCA7CivkuIDnlJ/mh7jlkb0gPiBpc3Nob3VrZW5tZWlcIDsKK+aXpemAsuaciOatqSA+IG5pc3NoaW5nZXBwb1wgOwor5Y+X6KiX6LKp5aOyID4ganV0YWt1aGFuYmFpXCA7CivmlofljJbli7Lnq6AgPiBidW5rYWt1bnNob3VcIDsKK+aCoOaCoOmWkemWkSA+IHl1dXl1dWthbmthblwgOwor5LuP6Iux6L6e5YW4ID4gZnV0c3VlaWppdGVuXCA7CivooZvnlJ/lt6XlraYgPiBlaXNlaWtvdWdha3VcIDsKK+aUv+imi+aUvumAgSA+IHNlaWtlbmhvdXNvdVwgOwor5rC05oCn5aGX5paZID4gc3Vpc2VpdG9yeW91XCA7CivlhYjpgLLlhbXlmaggPiBzZW5zaGluaGVpa2lcIDsKK+iHquW3seS4reW/gyA+IGppa29jaHV1c2hpblwgOwor5ZCM5ZKM5pWZ6IKyID4gZG91d2FreW91aWt1XCA7CivlrabpvaLlhZDnq6UgPiBnYWt1cmVpamlkb3VcIDsKK+iBluWcsOW3oeekvCA+IHNlaWNoaWp1bnJlaVwgOwor56S+5Zuj5rOV5Lq6ID4gc2hhZGFuaG91amluXCA7CivosqjnianovLjpgIEgPiBrYW1vdHN1eXVzb3VcIDsKK+ato+WkmuinkuW9oiA+IHNlaXRha2FrdWtlaVwgOwor6Zu75rCX5a656YePID4gZGVua2l5b3VyeW91XCA7CivmupbnpoHmsrvnlKMgPiBqdW5raW5jaGlzYW5cIDsKK+WMluWtpuani+mAoCA+IGthZ2FrdWtvdXpvdVwgOwor5LiA5YWa54us6KOBID4gaXR0b3Vkb2t1c2FpXCA7CivnhKHpmZDlsI/mlbAgPiBtdWdlbnNob3VzdXVcIDsKK+a4vueEtuS4gOS9kyA+IGtvbnplbicnaXR0YWlcIDsKK+a1t+W6leWcsOmchyA+IGthaXRlaWppc2hpblwgOwor5Y2a5aOr6Kqy56iLID4gaGFrdXNoaWthdGVpXCA7CivlubPlnYflr7/lkb0gPiBoZWlraW5qdW15b3VcIDsKK+W4guawkemBi+WLlSA+IHNoaW1pbicndW5kb3VcIDsKK+iomOW/teWHuueJiCA+IGtpbmVuc2h1cHBhblwgOwor6KOF572u5Yi25b6hID4gc291Y2hpc2VpZ3lvXCA7Civljp/oo4HliKTmiYAgPiBnZW5zYWliYW5zaG9cIDsKK+WOmueUn+Wkp+iHoyA+IGtvdXNlaWRhaWppblwgOwor5rK56ISC5bel5qWtID4geXVzaGlrb3VneW91XCA7Civnt4/mlK/phY3kurogPiBzb3VzaGloYWluaW5cIDsKK+aXpeeFp+aZgumWkyA+IG5pc3Nob3VqaWthblwgOwor5LiA6Iis5pWZ5pu4ID4gaXBwYW5reW91c2hvXCA7CivkuIDpg6jlp4vntYIgPiBpY2hpYnVzaGlqdXVcIDsKK+mWouaVsOWOn+WeiyA+IGthbnN1dWdlbmtlaVwgOwor5LiJ6YeN5a6d5YagID4gc2FuanV1aG91a2FuXCA7CivmrZPpgIHov47kvJogPiBrYW5zb3VnZWlrYWlcIDsKK+e3iuaApemBv+mboyA+IGtpbmt5dXVoaW5hblwgOwor5Yi56YKj5Li7576pID4gc2V0c3VuYXNodWdpXCA7Civlt6Xmpa3lnLDljLogPiBrb3VneW91Y2hpa3VcIDsKK+aIkealveWkmuW4giA+IGdhcmFrdXRhaWNoaVwgOwor6Lui5YaZ5o265p+TID4gdGVuc2hhbmFzc2VuXCA7Civoh6rnhLbngb3lrrMgPiBzaGl6ZW5zYWlnYWlcIDsKK+WkqeS6leajp+aVtyA+IHRlbmpvdXNhamlraVwgOwor5YWI6KGM5p2h5Lu2ID4gc2Vua291am91a2VuXCA7CivmnIjkuIvmsLfkurogPiBnZWtrYWh5b3VqaW5cIDsKK+WMu+iWrOWIhualrSA+IGl5YWt1YnVuZ3lvdVwgOwor6Lqr5YWD5L+d6Ki8ID4gbWltb3RvaG9zaG91XCA7CivntJTmraPnp5HlraYgPiBqdW5zZWlrYWdha3VcIDsKK+S6jOmHjemBk+W+syA+IG5panV1ZG91dG9rdVwgOwor5oKy5Zac5Lqk5LqkID4gaGlraWtvbW9nb21vXCA7Civnt4rmgKXli5XorbAgPiBraW5reXV1ZG91Z2lcIDsKK+WkqumZvembu+axoCA+IHRhaXlvdWRlbmNoaVwgOwor6KGX6aCt6Yyy6Z+zID4gZ2FpdG91cm9rdW9uXCA7Civlm73pmpvmqZ/plqIgPiBrb2t1c2Fpa2lrYW5cIDsKK+WJjeWCvuWnv+WLoiA+IHplbmtlaXNoaXNlaVwgOwor5biw5bGe5oSP6K2YID4ga2l6b2t1aXNoaWtpXCA7CivlhazooYbkvr/miYAgPiBrb3VzaHV1YmVuam9cIDsKK+aXpeacrOWbveWGhSA+IG5paG9ua29rdW5haVwgOwor6YG45rCR5oCd5oOzID4gc2VubWluc2hpc291XCA7CivlkoDlmrzpgYvli5UgPiBzb3NoYWt1dW5kb3VcIDsKK+WFseWQjOeWjumWiyA+IGt5b3Vkb3Vzb2thaVwgOwor6KiY5b+15YaZ55yfID4ga2luZW5zaGFzaGluXCA7Civngavnh7XluIPlm6MgPiBrb3RhdHN1YnV0b25cIDsKK+WFqOmdouemgeatoiA+IHplbm1lbmtpbnNoaVwgOwor5YyX5Zue5biw57eaID4ga2l0YWthaWtpc2VuXCA7CivpgKPlkIjoiabpmoogPiByZW5nb3VrYW50YWlcIDsKK+S6uuWRveaVkeWKqSA+IGppbm1laWt5dXVqb1wgOwor5oim5LqJ54q25oWLID4gc2Vuc291am91dGFpXCA7CivlpbPlrZDlpKflraYgPiBqb3NoaWRhaWdha3VcIDsKK+WbveWjq+eEoeWPjCA+IGtva3VzaGltdXNvdVwgOwor5bmz5Z2H5L2Z5ZG9ID4gaGVpa2luJyd5b21laVwgOwor5LqL5L6L56CU56m2ID4gamlyZWlrZW5reXV1XCA7CivliIbmlaPmipXos4cgPiBidW5zYW50b3VzaGlcIDsKK+WBtuWDj+ekvOaLnSA+IGd1dXpvdXJlaWhhaVwgOwor5Yq55p6c6Ka/6Z2iID4ga291a2F0ZWtpbWVuXCA7Civnt4rlvLXnt6nlkowgPiBraW5jaG91a2Fud2FcIDsKK+S4jeioseikh+ijvSA+IGZ1a3lvZnVrdXNlaVwgOwor5YyX5qyn56We6KmxID4gaG9rdW91c2hpbndhXCA7CivkurrkuovooYzmlL8gPiBqaW5qaWd5b3VzZWlcIDsKK+aYreWSjOW5tOmWkyA+IHNob3V3YW5lbmthblwgOwor5Zu95a2X5ZWP6aGMID4ga29rdWppbW9uZGFpXCA7Civlm73li5nlpKfoh6MgPiBrb2t1bXVkYWlqaW5cIDsKK+iogOiqnumanOWusyA+IGdlbmdvc2hvdWdhaVwgOwor5YaN6LKp5L6h5qC8ID4gc2FpaGFua2FrYWt1XCA7CivlubPlnYfmoKrkvqEgPiBoZWlraW5rYWJ1a2FcIDsKK+WuieaBr+mmmemFuCA+IGFuc29rdWtvdXNhblwgOwor6K2c5Luj5aSn5ZCNID4gZnVkYWlkYWlteW91XCA7CivpgZPot6/oqIjnlLsgPiBkb3Vyb2tlaWtha3VcIDsKK+WPpOiHquWLlei7iiA+IGZ1cnVqaWRvdXNoYVwgOwor5a655ae/56uv6bqXID4geW91c2hpdGFucmVpXCA7Civoq4vosqDmpa3ogIUgPiB1a2VvaWd5b3VzaGFcIDsKK+mAmuW4uOWPo+iqniA+IHRzdXVqb3Vrb3Vnb1wgOwor5Zyo5aSW6YKm5Lq6ID4gemFpZ2FpaG91amluXCA7CivplovmlL7ntYzmuIggPiBrYWlob3VrZWl6YWlcIDsKK+S9k+aTjeertuaKgCA+IHRhaXNvdWt5b3VnaVwgOwor5Yq05YON5ZCM55ufID4gcm91ZG91ZG91bWVpXCA7Civlm73pmpvpg73luIIgPiBrb2t1c2FpdG9zaGlcIDsKK+acieWIuumJhOe3miA+IHl1dXNoaXRlc3NlblwgOwor5Zuj5L2T6KGM5YuVID4gZGFudGFpa291ZG91XCA7Civlv5znlKjmlbDlraYgPiBvdXlvdXN1dWdha3VcIDsKK+S6pOmAmuW3oeafuyA+IGtvdXRzdXVqdW5zYVwgOwor54Sh5pW16Imm6ZqKID4gbXV0ZWtpa2FudGFpXCA7CivoiKrnqbrkvJrnpL4gPiBrb3VrdXVnYWlzaGFcIDsKK+Wkp+aUv+WliemChCA+IHRhaXNlaWhvdWthblwgOwor5LiN5pKT5LiN5bGIID4gZnV0b3VmdWt1dHN1XCA7Civnm7jplqLplqLkv4IgPiBzb3VrYW5rYW5rZWlcIDsKK+WQjOebn+e9t+alrSA+IGRvdW1laWhpZ3lvdVwgOwor6LuN5YKZ56u25LqJID4gZ3VuYmlreW91c291XCA7CivlvaLlrrnli5XoqZ4gPiBrZWl5b3Vkb3VzaGlcIDsKK+ijnOe1puW5uee3miA+IGhva3l1dWthbnNlblwgOwor54K65pu/6KOB5a6aID4ga2F3YXNlc2FpdGVpXCA7Civooajnj77kuLvnvqkgPiBoeW91Z2Vuc2h1Z2lcIDsKK+aWh+aVmeWcsOWMuiA+IGJ1bmt5b3VjaGlrdVwgOwor6YeR5bGe55ay5Yq0ID4ga2luem9rdWhpcm91XCA7CivlvLfliLbnlo7plosgPiBreW91c2Vpc29rYWlcIDsKK+itpuimlue3j+eboyA+IGtlaXNoaXNvdWthblwgOwor5Luj6KGo56S+5ZOhID4gZGFpaHlvdXNoYWluXCA7CivlgJ/lsYvkvY/lsYUgPiBzaGFrdXlhenVtYWlcIDsKK+W+tOWFteWItuW6piA+IGNob3VoZWlzZWlkb1wgOwor55+t5pyf5aSn5a2mID4gdGFua2lkYWlnYWt1XCA7Civnq4vkvZPmlL7pgIEgPiByaXR0YWlob3Vzb3VcIDsKK+WkqeS6leahn+aVtyA+IHRlbmpvdXNhamlraVwgOwor5Zyn6L+r5YyF5bivID4gYXBwYWt1aG91dGFpXCA7CivpgJrnlKjmnJ/plpMgPiB0c3V1eW91a2lrYW5cIDsKK+WLieW8t+aZgumWkyA+IGJlbmt5b3VqaWthblwgOwor5oi457GN6KyE5pysID4ga29zZWtpdG91aG9uXCA7Civlrrbluq3mlZnogrIgPiBrYXRlaWt5b3Vpa3VcIDsKK+WcsOmch+aOoumJsSA+IGppc2hpbnRhbmtvdVwgOwor6YG/6Zuj5qKv5a2QID4gaGluYW5iYXNoaWdvXCA7CivnpL7kvJrlpYnku5UgPiBzaGFrYWlob3VzaGlcIDsKK+WpmuWkluaAp+S6pCA+IGtvbmdhaXNlaWtvdVwgOwor5LiN5Y+v5oqX5YqbID4gZnVrYWtvdXJ5b2t1XCA7Civln7fooYzmqZ/plqIgPiBzaGlra291a2lrYW5cIDsKK+WLpOWLmeipleWumiA+IGtpbm11aHlvdXRlaVwgOwor5bi455So5a++5pWwID4gam91eW91dGFpc3V1XCA7CivlpKfpgZPoirjkurogPiBkYWlkb3VnZWluaW5cIDsKK+m7kumiqOeZvembqCA+IGtva3VmdXVoYWt1dVwgOwor6YqA6KGM5qWt5YuZID4gZ2lua291Z3lvdW11XCA7Civnj77lnLDoqr/mn7sgPiBnZW5jaGljaG91c2FcIDsKK+mBoOa0i+iIqua1tyA+IGVuJyd5b3Vrb3VrYWlcIDsKK+WkluS6pOmWouS/giA+IGdhaWtvdWthbmtlaVwgOwor56eB5a2m5Yqp5oiQID4gc2hpZ2FrdWpvc2VpXCA7CivnhKHnl5vliIblqKkgPiBtdXRzdXVidW5iZW5cIDsKK+S4jeiJr+WCteaoqSA+IGZ1cnlvdXNhaWtlblwgOwor5Zyw5Z+f5pmC5Yi7ID4gY2hpaWtpamlrb2t1XCA7Civlh7nniYjljbDliLcgPiBvdWhhbmluc2F0c3VcIDsKK+WfuuW5ueeUo+alrSA+IGtpa2Fuc2FuZ3lvdVwgOwor6Lev5LiK6aeQ6LuKID4gcm9qb3VjaHV1c2hhXCA7CivpppbohLPkvJroq4cgPiBzaHVub3VrYWlkYW5cIDsKK+eLrOijgeaUv+ayuyA+IGRva3VzYWlzZWlqaVwgOwor5aSW5Lqk5ZWP6aGMID4gZ2Fpa291bW9uZGFpXCA7CivnoLTnlKPnlLPoq4sgPiBoYXNhbnNoaW5zZWlcIDsKK+mDt+Wcn+iKuOiDvSA+IGt5b3Vkb2dlaW5vdVwgOwor5b6M5pa55Zyw5Z+fID4ga291aG91Y2hpaWtpXCA7CivlpKrpmb3mlL7lsIQgPiB0YWl5b3Vob3VzaGFcIDsKK+ilv+a0i+aWh+aYjiA+IHNlaXlvdWJ1bm1laVwgOwor5oyv5pu/6Ly46YCBID4gZnVyaWthZXl1c291XCA7CivkuqTmj5vmnaHku7YgPiBrb3VrYW5qb3VrZW5cIDsKK+eZuuihjOW4guWgtCA+IGhha2tvdXNoaWpvdVwgOwor5LiA5pio5pio5bm0ID4gc2FraW90b3Rvc2hpXCA7Civoo73oj5Pmpa3ogIUgPiBzZWlrYWd5b3VzaGFcIDsKK+aEm+WbveWbo+S9kyA+IGFpa29rdWRhbnRhaVwgOwor5aSJ5b2i6KaP5YmHID4gaGVua2Vpa2lzb2t1XCA7CivkurrmsJfmipXnpaggPiBuaW5raXRvdWh5b3VcIDsKK+eUt+Wls+W5s+etiSA+IGRhbmpvYnlvdWRvdVwgOwor6YO15L6/6JGJ5pu4ID4geXV1YmluaGFnYWtpXCA7CivmtYXlrabpnZ7miY0gPiBzZW5nYWt1aGlzYWlcIDsKK+W4guWgtOaSpOmAgCA+IHNoaWpvdXRldHRhaVwgOwor5a6a5pyf5qSc6Ki6ID4gdGVpa2lrZW5zaGluXCA7Civlm6PkvZPnq7bmioAgPiBkYW50YWlreW91Z2lcIDsKK+awkemWk+Wbo+S9kyA+IG1pbmthbmRhbnRhaVwgOwor5bCB5bu65oCd5oOzID4gaG91a2Vuc2hpc291XCA7CivoiKrntprot53pm6IgPiBrb3V6b2t1a3lvcmlcIDsKK+WPjOWzsOmnsemnnSA+IHNvdWhvdXJha3VkYVwgOwor55m+56eR5YWo5pu4ID4gaHlha2themVuc2hvXCA7CivoqabooYzpjK/oqqQgPiBzaGlrb3VzYWt1Z29cIDsKK+W3peWgtOWcsOW4ryA+IGtvdWpvdWNoaXRhaVwgOwor5pS/5rK75pS56Z2pID4gc2VpamlrYWlrYWt1XCA7CivluILmsJHkvJrppKggPiBzaGltaW5rYWlrYW5cIDsKK+aciemZkOS8muekviA+IHl1dWdlbmdhaXNoYVwgOwor6YeN5ZWG5Li7576pID4ganV1c2hvdXNodWdpXCA7Civpp4XliY3luoPloLQgPiBla2ltYWVoaXJvYmFcIDsKK+aUv+ayu+iyrOS7uyA+IHNlaWppc2VraW5pblwgOwor5bCC5qWt5Li75ammID4gc2VuZ3lvdXNodWZ1XCA7Civnj77loLTnm6PnnaMgPiBnZW5iYWthbnRva3VcIDsKK+WFrOi7ouWRqOacnyA+IGtvdXRlbnNodXVraVwgOwor5Y+j5LiJ5ZGz57eaID4ga3VjaGlqYW1pc2VuXCA7CivkuIDmmKjmmKjlpJwgPiBpc3Nha3VzYWt1eWFcIDsKK+ihgOa4heiCneeCjiA+IGtlc3NlaWthbicnZW5cIDsKK+S6uui3oeacqui4jyA+IGppbnNla2ltaXRvdVwgOwor5by35Yi25L+d6Zm6ID4ga3lvdXNlaWhva2VuXCA7CivkuIDmnJvljYPph4wgPiBpY2hpYm91c2VucmlcIDsKK+WIkeWLmeaJgOmVtyA+IGtlaW11c2hvY2hvdVwgOwor5aC05YaF5pS+6YCBID4gam91bmFpaG91c291XCA7CivmnJ3kuInmmq7lm5sgPiBjaG91c2FuYm9zaGlcIDsKK+emj+elieWbveWutiA+IGZ1a3VzaGlrb2trYVwgOwor6ZW35YiA5LiA5p6dID4gY2hvdXRvdWlzc2hpXCA7CivmgrLllpzkuqTjgIUgPiBoaWtpa29tb2dvbW9cIDsKK+eEoee3muW3peWtpiA+IG11c2Vua291Z2FrdVwgOwor5Yud5Yip5oqV5omLID4gc2hvdXJpdG91c2h1XCA7CivlpKnmsJfmpoLms4EgPiB0ZW5raWdhaWt5b3VcIDsKK+eEoeW4uOi/hemAnyA+IG11am91amluc29rdVwgOwor6KGM5YuV56eR5a2mID4ga291ZG91a2FnYWt1XCA7CivkuojpmLLms6jlsIQgPiB5b2JvdWNodXVzaGFcIDsKK+alteenmOaDheWgsSA+IGdva3VoaWpvdWhvdVwgOwor5bCB5bu656S+5LyaID4gaG91a2Vuc2hha2FpXCA7CivlirTkvb/ntJvkuokgPiByb3VzaGlmdW5zb3VcIDsKK+iHquWtpuiHque/kiA+IGppZ2FrdWppc2h1dVwgOwor5LiN6YCj57aa57eaID4gZnVyZW56b2t1c2VuXCA7CivmsrvlpJbms5XmqKkgPiBjaGlnYWlob3VrZW5cIDsKK+e1jOa4iOWkluS6pCA+IGtlaXphaWdhaWtvdVwgOwor5YiD54mp5LiJ5pinID4gaGFtb25vemFubWFpXCA7CivlhYnlrabnuYrntq0gPiBrb3VnYWt1c2VuJydpXCA7CivlhajkvJHmraLnrKYgPiB6ZW5reXV1c2hpZnVcIDsKK+WSjOa0i+aKmOihtyA+IHdheW91c2V0Y2h1dVwgOwor5riF566X5Lya56S+ID4gc2Vpc2FuZ2Fpc2hhXCA7Civlu4Pol6nnva7nnIwgPiBoYWloYW5jaGlrZW5cIDsKK+iHqOW6iuism+e+qSA+IHJpbnNob3Vrb3VnaVwgOwor57SU5pel5pys6aKoID4ganVuJyduaWhvbmZ1dVwgOwor5oyZ5Zu95LiA6Ie0ID4ga3lva29rdWl0Y2hpXCA7CivlpKfooYbpgYvli5UgPiB0YWlzaHV1dW5kb3VcIDsKK+W4guWgtOiqv+afuyA+IHNoaWpvdWNob3VzYVwgOwor5YWs6ZaL5aSW5LqkID4ga291a2FpZ2Fpa291XCA7CivlpKfolLXlpKfoh6MgPiBvb2t1cmFkYWlqaW5cIDsKK+S/ruato+S6iOeulyA+IHNodXVzZWl5b3NhblwgOwor6KGM5pS/5qmf6ZaiID4gZ3lvdXNlaWtpa2FuXCA7CivmlL/mlZnliIbpm6IgPiBzZWlreW91YnVucmlcIDsKK+aQreS5l+ahiOWGhSA+IHRvdWpvdWFuJyduYWlcIDsKK+S6lOS6uuWbg+WtkCA+IGdvbmluYmF5YXNoaVwgOwor54us5ZaE5Li7576pID4gZG9rdXplbnNodWdpXCA7CivoiKrnqbrmm7jnsKEgPiBrb3VrdXVzaG9rYW5cIDsKK+izm+WQpuWQjOelqCA+IHNhbnBpZG91aHlvdVwgOwor5Lq65paH5a2m5rS+ID4gamluYnVuZ2FrdWhhXCA7Civmj7TnlKjnlJ/nlKMgPiBlbicneW91c2Vpc2FuXCA7CivkuI3ogJXkvZzlnLAgPiBmdWtvdXNha3VjaGlcIDsKK+Wkp+S9v+WFrOmCuCA+IHRhaXNoaWtvdXRlaVwgOwor5rG66K2w5LqL6aCFID4ga2V0c3VnaWppa291XCA7CivmuKnms4nnmYLms5UgPiBvbnNlbnJ5b3Vob3VcIDsKK+S4gOmhsOS4gOeskSA+IGlwcGluJydpc3Nob3VcIDsKK+mbu+awl+S/oeWPtyA+IGRlbmtpc2hpbmdvdVwgOwor5bCC566h5rC05Z+fID4gc2Vua2Fuc3VpaWtpXCA7CivlpKnkvZPltIfmi50gPiB0ZW50YWlzdXVoYWlcIDsKK+ebuOS6kuWPgueFpyA+IHNvdWdvc2Fuc2hvdVwgOwor5Ymy54O55paZ55CGID4ga2FwcG91cnlvdXJpXCA7Civpg4rlpJbpm7vou4ogPiBrb3VnYWlkZW5zaGFcIDsKK+S/ruato+S4u+e+qSA+IHNodXVzZWlzaHVnaVwgOwor6KOc5by36Ki85ougID4gaG9reW91c2hvdWtvXCA7CivkurrmnZDpioDooYwgPiBqaW56YWlnaW5rb3VcIDsKK+i/keS7o+mfs+alvSA+IGtpbmRhaW9uZ2FrdVwgOwor6KOP6Z2i5bel5L2cID4gcmltZW5rb3VzYWt1XCA7Civms5XmsrvnpL7kvJogPiBob3VjaGlzaGFrYWlcIDsKK+Wkp+ebpOaMr+iIniA+IG9vYmFuYnVydW1haVwgOwor5LiJ5bKQ5Luj6KGoID4gc2FuZ2lkYWloeW91XCA7CivmlZnlk6HntYTlkIggPiBreW91aW5rdW1pYWlcIDsKK+a1t+mbo+aVkeWKqSA+IGthaW5hbmt5dXVqb1wgOwor6Yyy6Z+z5pS+6YCBID4gcm9rdW9uaG91c291XCA7CivkuInogIXlh6HpgIAgPiBzYW5zaGFib250YWlcIDsKK+aXpeacrOa1t+a1gSA+IG5paG9ua2Fpcnl1dVwgOwor5Y+y5LiK5pyA5aSnID4gc2hpam91c2FpZGFpXCA7CivoqJjmhrbpmpzlrrMgPiBraW9rdXNob3VnYWlcIDsKK+S4jeWKtOaJgOW+lyA+IGZ1cm91c2hvdG9rdVwgOwor6ICB6I2Y5oCd5oOzID4gcm91c291c2hpc291XCA7Civou43pnIDlt6Xmpa0gPiBndW5qdWtvdWd5b3VcIDsKK+mbouWQiOmbhuaVoyA+IHJpZ291c2h1dXNhblwgOwor6Imv5aa76LOi5q+NID4gcnlvdXNhaWtlbmJvXCA7Civou43lj7jku6TlrpggPiBndW5zaGlyZWlrYW5cIDsKK+iyv+aYk+S8muekviA+IGJvdWVraWdhaXNoYVwgOwor54eQ6YW46IKl5paZID4gcmluc2FuaGlyeW91XCA7CivnhKHpmZDosqzku7sgPiBtdWdlbnNla2luaW5cIDsKK+enkeWtpuaAneaDsyA+IGthZ2FrdXNoaXNvdVwgOwor5Zub5rW35ZCM6IOeID4gc2hpa2FpZG91aG91XCA7CivlgaXlurfllY/poYwgPiBrZW5rb3Vtb25kYWlcIDsKK+aEn+WCt+S4u+e+qSA+IGthbnNob3VzaHVnaVwgOwor6aas6aCt6Kaz6Z+zID4gYmF0b3VrYW4nJ25vblwgOwor5aSp6aCC6Led6ZuiID4gdGVuY2hvdWt5b3JpXCA7Civoqr/mn7vpg6jplbcgPiBjaG91c2FidWNob3VcIDsKK+WNg+e0q+S4h+e0hSA+IHNlbnNoaWJhbmtvdVwgOwor6KGM5YuV5ZG95LukID4ga291ZG91bWVpcmVpXCA7Civngrrmm7/miYvlvaIgPiBrYXdhc2V0ZWdhdGFcIDsKK+i1pOmBk+awl+WboyA+IHNla2lkb3VraWRhblwgOwor56m65Lit6JC95LiLID4ga3V1Y2h1dXJha2thXCA7CivlrprmoLzojbfph40gPiB0ZWlrYWt1a2FqdXVcIDsKK+eCuuabv+mKgOihjCA+IGthd2FzZWdpbmtvdVwgOwor5a6Y6IO95Li7576pID4ga2FuJydub3VzaHVnaVwgOwor5a625bqt5pWZ5birID4ga2F0ZWlreW91c2hpXCA7CivmmLzlpJzlhbzooYwgPiBjaHV1eWFrZW5rb3VcIDsKK+S8muekvuWWtualrSA+IGthaXNoYWVpZ3lvdVwgOwor5ZWT6JKZ5oCd5oOzID4ga2VpbW91c2hpc291XCA7CivpnZ7lvqrnkrDnmoQgPiBoaWp1bmthbnRla2lcIDsKK+aWh+awkee1seWItiA+IGJ1bm1pbnRvdXNlaVwgOwor6YGO6YW45YyW54mpID4ga2FzYW5rYWJ1dHN1XCA7CivkuIDlv7XnmbrotbcgPiBpY2hpbmVuaG9ra2lcIDsKK+iCsuaIkOagveWfuSA+IGlrdXNlaXNhaWJhaVwgOwor54++5aC05qSc6Ki8ID4gZ2VuYmFrZW5zaG91XCA7CivmmYLku6PogIPoqLwgPiBqaWRhaWtvdXNob3VcIDsKK+aEn+W6puiJr+WlvSA+IGthbmRvcnlvdWtvdVwgOwor6YCP5piO5Lq66ZaTID4gdG91bWVpbmluZ2VuXCA7CivluLjlpZfmiYvmrrUgPiBqb3V0b3VzaHVkYW5cIDsKK+WSjOW5s+W3peS9nCA+IHdhaGVpa291c2FrdVwgOwor5pqX5Lit6aOb6LqNID4gYW5jaHV1aGl5YWt1XCA7CivkurrmsJHoo4HliKQgPiBqaW5taW5zYWliYW5cIDsKK+aWveihjOimj+WJhyA+IHNoaWtvdWtpc29rdVwgOwor5Y2K6Lqr5LiN6ZqPID4gaGFuc2hpbmZ1enVpXCA7Civmma7pgJrlkI3oqZ4gPiBmdXRzdXVtZWlzaGlcIDsKK+WvvuixoeevhOWbsiA+IHRhaXNob3VoYW4nJ2lcIDsKK+S6uuawkeaIpue3miA+IGppbm1pbnNlbnNlblwgOwor57Ch5piO5by35Zu6ID4ga2FubWVpa3lvdWtvXCA7Civlj6/og73pgbjmip4gPiBrYW5vdXNlbnRha3VcIDsKK+Wxi+WGheertuaKgCA+IG9rdW5haWt5b3VnaVwgOwor5aSa5oOF5LuP5b+DID4gdGFqb3VidXNzaGluXCA7CivljZjntJToqIjnrpcgPiB0YW5qdW5rZWlzYW5cIDsKK+WFrOihhumbu+ipsSA+IGtvdXNodXVkZW53YVwgOwor6Iqx6Ieq5YuV6LuKID4gaGFuYWppZG91c2hhXCA7CivmlL7olanmga/lrZAgPiBob3V0b3VtdXN1a29cIDsKK+WGmeecn+apn+W6lyA+IHNoYXNoaW5raXRlblwgOwor5LiJ562J6LuN5pu5ID4gc2FudG91Z3Vuc291XCA7Civnt4rmgKXpgK7mjZUgPiBraW5reXV1dGFpaG9cIDsKK+iynuaTjei5gui6qiA+IHRlaXNvdWp1dXJpblwgOwor5b+D6IK65qmf6IO9ID4gc2hpbnBhaWtpbm91XCA7Civpm4zpm4TlkIzmoKogPiBzaGl5dXVkb3VzaHVcIDsKK+mghumiqOa6gOW4hiA+IGp1bnB1dW1hbnBhblwgOwor5a2m5qCh5rOV5Lq6ID4gZ2Fra291aG91amluXCA7CivlpInkvY3pm7vmtYEgPiBoZW4nJ2lkZW5yeXV1XCA7CivliY3lk6jli6Tli5kgPiB6ZW5zaG91a2lubXVcIDsKK+a1t+a0i+enkeWtpiA+IGthaXlvdWthZ2FrdVwgOwor6L6y5rCR6YGL5YuVID4gbm91bWluJyd1bmRvdVwgOwor6LKs5Lu756+E5ZuyID4gc2VraW5pbmhhbicnaVwgOwor55m65YWJ5aGX5paZID4gaGFra291dG9yeW91XCA7CivmhJ/lv5zkvZznlKggPiBrYW4nJ25vdXNheW91XCA7CivlrZDmjIHmmIbluIMgPiBrb21vY2hpa29uYnVcIDsKK+W4guWWtuS9j+WuhSA+IHNoaWVpanV1dGFrdVwgOwor5LqL5qWt6YOo6ZW3ID4gamlneW91YnVjaG91XCA7CivlpKfog4bkuI3mlbUgPiBkYWl0YW5mdXRla2lcIDsKK+WkqeWcsOWJtemAoCA+IHRlbmNoaXNvdXpvdVwgOwor5biC5aC057WM5riIID4gc2hpam91a2VpemFpXCA7CivkuojlrprmnJ/ml6UgPiB5b3RlaWtpaml0c3VcIDsKK+WMu+eZguaKgOihkyA+IGlyeW91Z2lqdXRzdVwgOwor5L2/5b255YuV6KmeID4gc2hpZWtpZG91c2hpXCA7CivlvrTlhbXmpJzmn7sgPiBjaG91aGVpa2Vuc2FcIDsKK+iHquWutueZuumbuyA+IGppa2FoYXRzdWRlblwgOwor5ZCM6Kqe5Y+N5b6pID4gZG91Z29oYW5wdWt1XCA7CivlvIHoq5blpKfkvJogPiBiZW5yb250YWlrYWlcIDsKK+S4gOiIrOaKleelqCA+IGlwcGFudG91aHlvdVwgOwor5LiA5Lq65oGv5a2QID4gaGl0b3JpbXVzdWtvXCA7CivpgIDlvbnou43kurogPiB0YWlla2lndW5qaW5cIDsKK+S6uueUn+acgOaCqiA+IGppbnNlaXNhaWFrdVwgOwor5Y2w5Yqg6Zu75ZynID4gaW5rYWRlbicnYXRzdVwgOwor5ray5oCn6ZmQ55WMID4gZWtpc2VpZ2Vua2FpXCA7CivmoITppIrlrabogIUgPiBlaXlvdWdha3VzaGFcIDsKK+mDveW4guS6pOmAmiA+IHRvc2hpa291dHN1dVwgOwor5Lqk5o+b5pWZ5o6IID4ga291a2Fua3lvdWp1XCA7CivlrabnlJ/mmYLku6MgPiBnYWt1c2VpamlkYWlcIDsKK+aEm+ekvueyvuelniA+IGFpc2hhc2Vpc2hpblwgOwor6ICB5YyW54++6LGhID4gcm91a2FnZW5zaG91XCA7CivnpL7kvJrllY/poYwgPiBzaGFrYWltb25kYWlcIDsKK+ebsueuoemKg+WJtSA+IG1vdWthbmp1dXNvdVwgOwor5p2x5rW35Zyw5pa5ID4gdG91a2FpY2hpaG91XCA7CivnmbrooYzkvJrnpL4gPiBoYWtrb3VnYWlzaGFcIDsKK+i/keaJgOWQiOWjgSA+IGtpbmpvZ2FwcGVraVwgOwor6Z+z5aOw5Zyn57iuID4gb25zZWlhc3NodWt1XCA7CivmsJHml4/kuLvnvqkgPiBtaW56b2t1c2h1Z2lcIDsKK+WwgumWgOenkeebriA+IHNlbm1vbmthbW9rdVwgOwor5rib6YeP57WM5Za2ID4gZ2VucnlvdWtlaWVpXCA7CivnnaHnnKDkuI3otrMgPiBzdWltaW5idXNva3VcIDsKK+WFhOWmueWWp+WYqSA+IGt5b3VkYWlnZW5rYVwgOwor6YGL6YCB5aWR57SEID4gdW5zb3VrZWl5YWt1XCA7CivoiJ7lj7DkuK3ntpkgPiBidXRhaWNodXVrZWlcIDsKK+S4i+WxpOmajue0miA+IGthc291a2Fpa3l1dVwgOwor57WM5riI6ZeY5LqJID4ga2VpemFpdG91c291XCA7CivkuI3oia/lsJHlpbMgPiBmdXJ5b3VzaG91am9cIDsKK+W/nOaPtOa8lOiqrCA+IG91ZW4nJ2VuemV0c3VcIDsKK+ihjOWLleWNiuW+hCA+IGtvdWRvdWhhbmtlaVwgOwor5Zyw6ZyH5Zyw5bivID4gamlzaGluY2hpdGFpXCA7CivpgJrpgY7osr/mmJMgPiB0c3V1a2Fib3Vla2lcIDsKK+e1seioiOW5tOmRkSA+IHRvdWtlaW5lbmthblwgOwor5Lq65omL5LiN6LazID4gaGl0b2RlYnVzb2t1XCA7CivljYHkuK3lhavkuZ0gPiBqaXRjaHV1aGFra3VcIDsKK+a7i+W8t+mjsuaWmSA+IGppa3lvdWlucnlvdVwgOwor5Zub6KeS5Y+356K8ID4gc2hpa2FrdWdvdW1hXCA7Civlm7rlrproprPlv7UgPiBrb3RlaWthbicnbmVuXCA7CivntYzpqJPnp5HlraYgPiBrZWlrZW5rYWdhZ3VcIDsKK+iNt+mbu+eykuWtkCA+IGthZGVucnl1dXNoaVwgOwor5Lq65bel55Sf5ZG9ID4gamlua291c2VpbWVpXCA7Civpm7vmsJfmlpnph5EgPiBkZW5raXJ5b3VraW5cIDsKK+W+gOW+qeiRieabuCA+IG91ZnVrdWhhZ2FraVwgOwor5Lq66YCg55+z5rK5ID4gamluem91c2VraXl1XCA7CivlpKnnq7rniaHkuLkgPiB0ZW5qaWt1Ym90YW5cIDsKK+W+oemms+i1sOanmCA+IGdvY2hpc291c2FtYVwgOwor5aSp6Lev5q2056iLID4gdGVucm9yZWtpdGVpXCA7CivlhbHlkIzkvr/miYAgPiBreW91ZG91YmVuam9cIDsKK+aal+auuuacqumBgiA+IGFuc2F0c3VtaXN1aVwgOwor5pyq5omV6LK755SoID4gbWloYXJhaWhpeW91XCA7Civnm7jkupLphY3lsZ4gPiBzb3Vnb2hhaXpva3VcIDsKK+egtOmhlOS4gOeskSA+IGhhZ2FuJydpc3Nob3VcIDsKK+ayu+eZguWKueaenCA+IGNoaXJ5b3Vrb3VrYVwgOwor54yf5a6Y5Yi25bqmID4gcnlvdWthbnNlaWRvXCA7Civlj47lrrnmgqPogIUgPiBzaHV1eW91a2FuamFcIDsKK+atpumZteahg+a6kCA+IGJ1cnlvdXRvdWdlblwgOwor5Lq65rCR5omA5pyJID4gamlubWluc2hveXV1XCA7Civlj43lsITkv4LmlbAgPiBoYW5zaGFrZWlzdXVcIDsKK+W3pealreaEj+WMoCA+IGtvdWd5b3Vpc2hvdVwgOwor55u45a++6KmV5L6hID4gc291dGFpaHlvdWthXCA7CivntYzmuIjllY/poYwgPiBrZWl6YWltb25kYWlcIDsKK+S4ieWNgeWFreioiCA+IHNhbmp1dXJva2tlaVwgOwor5q6L5qWt5omL5b2TID4gemFuZ3lvdXRlYXRlXCA7CivmipXnkIPli5XkvZwgPiB0b3VreXV1ZG91c2FcIDsKK+mYsueBveiok+e3tCA+IGJvdXNhaWt1bnJlblwgOwor6ICQ55So5bm05pWwID4gdGFpeW91bmVuc3V1XCA7CivmsJHlrprmhrLms5UgPiBtaW50ZWlrZW5wb3VcIDsKK+emj+WIqeWOmueUnyA+IGZ1a3VyaWtvdXNlaVwgOwor5raI6ICX5ZOB6LK7ID4gc2hvdW1vdWhpbmhpXCA7Civnp4HmnInosqHnlKMgPiBzaGl5dXV6YWlzYW5cIDsKK+Wtpue0mumWiemOliA+IGdha2t5dXVoZWlzYVwgOwor5Lq655Sf6KiY6YyyID4gamluc2Vpa2lyb2t1XCA7Civlrp/liKnkuLvnvqkgPiBqaXRzdXJpc2h1Z2lcIDsKK+WFrOS9v+mkqOWToSA+IGtvdXNoaWthbicnaW5cIDsKK+mAsuWMluirluiAhSA+IHNoaW5rYXJvbnNoYVwgOwor56m65Lit5qmf5YuVID4ga3V1Y2h1dWtpZG91XCA7CivmipXnpajntZDmnpwgPiB0b3VoeW91a2Vra2FcIDsKK+WJjeaPkOadoeS7tiA+IHplbnRlaWpvdWtlblwgOwor5aSW5Lq66YG45omLID4gZ2Fpamluc2Vuc2h1XCA7Civlt6jlpKfliIblrZAgPiBreW9kYWlidW5zaGlcIDsKK+i0i+mAoOe0meW5oyA+IGdhbnpvdXNoaWhlaVwgOwor5qSc5a6a6Kmm6aiTID4ga2VudGVpc2hpa2VuXCA7Civol43ntqzopJLnq6AgPiByYW5qdWhvdXNob3VcIDsKK+WPuOazleippumokyA+IHNoaWhvdXNoaWtlblwgOwor5p+U6Luf5L2T5pONID4ganV1bmFudGFpc291XCA7CivkuI3oia/lsI7kvZMgPiBmdXJ5b3Vkb3V0YWlcIDsKK+WvvuaIpui7iuegsiA+IHRhaXNlbnNoYWhvdVwgOwor5q275L2T6Kej5YmWID4gc2hpdGFpa2FpYm91XCA7Civlhbzmpa3ovrLlrrYgPiBrZW5neW91bm91a2FcIDsKK+WFrOmWi+mMsumfsyA+IGtvdWthaXJva3VvblwgOwor5rW36LuN5aSn6IejID4ga2FpZ3VuZGFpamluXCA7CivljZfkuqzoirHngasgPiBuYW5raW5oYW5hYmlcIDsKK+aJgeahg+iFuueCjiA+IGhlbnRvdXNlbicnZW5cIDsKK+S4reWkrumKgOihjCA+IGNodXVvdWdpbmtvdVwgOwor5Zyn57iu56m65rCXID4gYXNzaHVrdWt1dWtpXCA7CivmsbrmuIjmiYvmrrUgPiBrZXNzYWlzaHVkYW5cIDsKK+S7o+eQhualreiAhSA+IGRhaXJpZ3lvdXNoYVwgOwor6YWN572u6Lui5o+bID4gaGFpY2hpdGVua2FuXCA7CivnpoHmsrvnlKPogIUgPiBraW5jaGlzYW5zaGFcIDsKK+WFqOi6q+S4jemajyA+IHplbnNoaW5mdXp1aVwgOwor6YGL6Lui5oqA6KGTID4gdW50ZW5naWp1dHN1XCA7Civpm7vlrZDpn7Pmpb0gPiBkZW5zaGlvbmdha3VcIDsKK+WNg+S4h+eEoemHjyA+IHNlbm1hbm11cnlvdVwgOwor6Ieq5q665bmH5YqpID4gamlzYXRzdWhvdWpvXCA7Civku6PmlbDplqLmlbAgPiBkYWlzdXVrYW5zdXVcIDsKK+mfs+mfv+ioreioiCA+IG9ua3lvdXNla2tlaVwgOwor5Lmz5qeY56qB6LW3ID4gbnl1dXlvdXRva2tpXCA7CivkuovliY3libLlvZMgPiBqaXplbndhcmlhdGVcIDsKK+WFteW9ueWFjeeKtiA+IGhlaWVraW1lbmpvdVwgOwor5aSp5rav5a2k54usID4gdGVuZ2Fpa29kb2t1XCA7CivkuI3mib/kuI3mib8gPiBmdXNob3VidXNob3VcIDsKK+eEoeaJgOWxnuePviA+IG11c2hvem9rdWdlblwgOwor5pyo6YCg5a625bGLID4gbW9rdXpvdWthb2t1XCA7CivppIrogIHlubTph5EgPiB5b3Vyb3VuZW5raW5cIDsKK+aCoOOAheiHqumBqSA+IHl1dXl1dWppdGVraVwgOwor5LqL5YmN56CU5L+uID4gaml6ZW5rZW5zaHV1XCA7CivkvZPns7vmlofms5UgPiB0YWlrZWlidW5wb3VcIDsKK+mbjOmbhOWQjOS9kyA+IHNoaXl1dWRvdXRhaVwgOwor5qeL6YCg5rGa6IG3ID4ga291em91b3Nob2t1XCA7Civln7rnpI7nn6XorZggPiBraXNvY2hpc2hpa2lcIDsKK+WcsOWfn+e0m+S6iSA+IGNoaWlraWZ1bnNvdVwgOwor5Y2Y5bOw6aex6aedID4gdGFucG91cmFrdWRhXCA7CivkurrmsJfllYblo7IgPiBuaW5raXNob3ViYWlcIDsKK+WnieWmueWWp+WYqSA+IGt5b3VkYWlnZW5rYVwgOwor5Y2D5ae/5LiH5oWLID4gc2Vuc2hpYmFudGFpXCA7CivlhazmnInosqHnlKMgPiBrb3V5dXV6YWlzYW5cIDsKK+WFiOihjOaKleizhyA+IHNlbmtvdXRvdXNoaVwgOwor6KO96YCg5bel56iLID4gc2Vpem91a291dGVpXCA7Civoh6rnlLHnq7bkuokgPiBqaXl1dWt5b3Vzb3VcIDsKK+W3nemtmuaWmeeQhiA+IGthd2F1b3J5b3VyaVwgOwor54++5Luj56eR5a2mID4gZ2VuZGFpa2FnYWt1XCA7CivnlKPmpa3mqZ/morAgPiBzYW5neW91a2lrYWlcIDsKK+S4jeWQiOagvOiAhSA+IGZ1Z291a2FrdXNoYVwgOwor5pqR5Lit6KaL6IieID4gc2hvY2h1dW1pbWFpXCA7CivoqpjlsI7lsIvllY8gPiB5dXVkb3VqaW5tb25cIDsKK+eRoOeSg+WUkOiNiSA+IHJ1cmlrYXJha3VzYVwgOwor5a6a5b2i5YuV6KmeID4gdGVpa2VpZG91c2hpXCA7CivllqfjgIXlm4LjgIUgPiBrZW5rZW5nb3Vnb3VcIDsKK+S6uumWk+mWouS/giA+IG5pbmdlbmthbmtlaVwgOwor6LWk5Y2B5a2X56S+ID4gc2VraWp1dWppc2hhXCA7CivnhKHnlKPpmo7ntJogPiBtdXNhbmthaWt5dXVcIDsKK+WFreazleWFqOabuCA+IHJvcHBvdXplbnNob1wgOwor6ZuG5qip5o6S6ZmkID4gc2h1dWtlbmhhaWpvXCA7Civlm73pmpvkvJrorbAgPiBrb2t1c2Fpa2FpZ2lcIDsKK+WFkOerpeaWh+WtpiA+IGppZG91YnVuZ2FrdVwgOwor6LuN5LqL56eY5a+GID4gZ3VuamloaW1pdHN1XCA7Civku7vmhI/lh7rpoK0gPiBuaW4nJ2lzaHV0dG91XCA7Civku5jpmo/nj77osaEgPiBmdXp1aWdlbnNob3VcIDsKK+WUh+atr+i8lOi7iiA+IHNoaW5zaGlob3NoYVwgOwor5Y6f5Zug6Kq/5p+7ID4gZ2VuJydpbmNob3VzYVwgOwor5Lq66Leh5pyq5YiwID4gamluc2VraW1pdG91XCA7Civmi4XlvZPpg6jplbcgPiB0YW50b3VidWNob3VcIDsKK+S4u+S7u+aVmeaOiCA+IHNodW5pbmt5b3VqdVwgOwor6LuN5YKZ5YmK5ribID4gZ3VuYmlzYWt1Z2VuXCA7Civlhazplovoo4HliKQgPiBrb3VrYWlzYWliYW5cIDsKK+WIhuino+S/rueQhiA+IGJ1bmthaXNodXVyaVwgOwor55m+6Iqx5paJ5pS+ID4gaHlha2thc2VpaG91XCA7CivkurrpgKDnnJ/nj6AgPiBqaW56b3VzaGluanVcIDsKK+elnue1jOmBjuaVjyA+IHNoaW5rZWlrYWJpblwgOwor6YCB6YeR54K65pu/ID4gc291a2lua2F3YXNlXCA7CivljrPmraPnp5HlraYgPiBnZW5zZWlrYWdha3VcIDsKK+WPuOazleabuOWjqyA+IHNoaWhvdXNob3NoaVwgOwor5Zyo5aSW6LOH55SjID4gemFpZ2Fpc2hpc2FuXCA7Civms5XlvovpgZXlj40gPiBob3VyaXRzdWloYW5cIDsKK+mAsui3r+aMh+WwjiA+IHNoaW5yb3NoaWRvdVwgOwor5LqI5YKZ5Y2U57SEID4geW9iaWt5b3V5YWt1XCA7CivmlZnogrLnjqnlhbcgPiBreW91aWt1Z2FuZ3VcIDsKK+aWh+azleimj+WJhyA+IGJ1bnBvdWtpc29rdVwgOwor5a6M5LqG5pmC5Yi2ID4ga2FucnlvdWppc2VpXCA7Civkuovlrp/oqqToqo0gPiBqaWppdHN1Z29uaW5cIDsKK+i7jemcgOeUo+alrSA+IGd1bmp1c2FuZ3lvdVwgOwor6Ieq54S256eR5a2mID4gc2hpemVua2FnYWt1XCA7CivmrabogIXkv67ooYwgPiBtdXNoYXNodWd5b3VcIDsKK+eUn+aIkOaWh+azlSA+IHNlaXNlaWJ1bnBvdVwgOwor5Y+45rOV5aSn6IejID4gc2hpaG91ZGFpamluXCA7CivkuLvohLPkvJroq4cgPiBzaHVub3VrYWlkYW5cIDsKK+W+oeeUqOWVhuS6uiA+IGdveW91c2hvdW5pblwgOwor5L2/5b6S5L+h5p2hID4gc2hpdG9zaGluam91XCA7CivoqLzmi6Dnianku7YgPiBzaG91a29idWtrZW5cIDsKK+S6iOWCmeefpeitmCA+IHlvYmljaGlzaGlraVwgOwor5ZCI5ZCN5Lya56S+ID4gZ291bWVpZ2Fpc2hhXCA7CivlhbHlkIzkuIDoh7QgPiBreW91ZG91aXRjaGlcIDsKK+atpuWKm+aUv+ayuyA+IGJ1cnlva3VzZWlqaVwgOwor6LuM6YGT5L+u5q2jID4ga2lkb3VzaHV1c2VpXCA7Civmub7lsrjmiKbkuokgPiB3YW5nYW5zZW5zb3VcIDsKK+WQiOagvOeliOmhmCA+IGdvdWtha3VraWdhblwgOwor5YyW5a2m6IKl5paZID4ga2FnYWt1aGlyeW91XCA7Civni6zoo4Hlm73lrrYgPiBkb2t1c2Fpa29ra2FcIDsKK+S9juWIqemHkeiejSA+IHRlaXJpa2luJyd5dXVcIDsKK+Wcn+mhnumHkeWxniA+IGRvcnVpa2luem9rdVwgOwor5YWx5ZKM5pS/5L2TID4ga3lvdXdhc2VpdGFpXCA7Civms5Xlu7fpl5jkuokgPiBob3V0ZWl0b3Vzb3VcIDsKK+WGjeeUn+ijhee9riA+IHNhaXNlaXNvdWNoaVwgOwor5YyX5pa56aCY5ZyfID4gaG9wcG91cnlvdWRvXCA7Civlhajlu4Poq5bogIUgPiB6ZW5wYWlyb25zaGFcIDsKK+e0r+mAsuiqsueojiA+IHJ1aXNoaW5rYXplaVwgOwor5Zu96Ziy5Lya6K2wID4ga29rdWJvdWthaWdpXCA7Civkuoznmb7ljYHml6UgPiBuaWh5YWt1dG9va2FcIDsKK+S6i+WJjemAmuWgsSA+IGppemVudHN1dWhvdVwgOwor56S+5Lya5oSP6K2YID4gc2hha2FpaXNoaWtpXCA7Civmj7Tliqnlh43ntZAgPiBlbmpvdG91a2V0c3VcIDsKK+WuieWFqOesrOS4gCA+IGFuemVuZGFpaWNoaVwgOwor5YCL5Lq65pS75pKDID4ga29qaW5rb3VnZWtpXCA7CivmgqrmiK/lnYrkuLsgPiBpdGF6dXJhYm91enVcIDsKK+mBiuWLleWGhuacqCA+IHl1dWRvdWVuYm9rdVwgOwor5YaG5b2i5YqH5aC0ID4gZW5rZWlnZWtpam91XCA7Civoiq3olYnmorbmnKggPiBiYXNob3VrYWppa2lcIDsKK+aDheWgseenkeWtpiA+IGpvdWhvdWthZ2FrdVwgOwor5YK35a6z5L+d6Zm6ID4gc2hvdWdhaWhva2VuXCA7CivnoLTnlKPlrqPlkYogPiBoYXNhbnNlbmtva3VcIDsKK+eZqeeXheaCo+iAhSA+IHJhaWJ5b3VrYW5qYVwgOwor5q2j5q2j5aCC5aCCID4gc2Vpc2VpZG91ZG91XCA7Civlm6DlrZDliIbmnpAgPiBpbnNoaWJ1bnNla2lcIDsKK+W+heWQiOaUv+ayuyA+IG1hY2hpYWlzZWlqaVwgOwor5pyr5rOV5oCd5oOzID4gbWFwcG91c2hpc291XCA7CivoiKrntprmmYLplpMgPiBrb3V6b2t1amlrYW5cIDsKK+WwguWjsueJueiosSA+IHNlbmJhaXRva2t5b1wgOwor5ZCM56iu5ZCM5paHID4gZG91c2h1ZG91YnVuXCA7CivpiYTpgZPkuovmlYUgPiB0ZXRzdWRvdWppa29cIDsKK+ecn+eQhumWouaVsCA+IHNoaW5yaWthbnN1dVwgOwor5a2Q5a2Q5a2r5a2rID4gc2hpc2hpc29uc29uXCA7Civoi7Hlm73nn7PmsrkgPiBlaWtva3VzZWtpeXVcIDsKK+S/neitt+ims+WvnyA+IGhvZ29rYW5zYXRzdVwgOwor56eY5a+G5YW15ZmoID4gaGltaXRzdWhlaWtpXCA7Civpg7Xkvr/osq/ph5EgPiB5dXViaW5jaG9raW5cIDsKK+S6jOmHjeS6uuagvCA+IG5panV1amlua2FrdVwgOwor55m96KGj5piO5aaDID4gYnlha3VlbXlvdWhpXCA7CivnlJ/kvZPop6PliZYgPiBzZWl0YWlrYWlib3VcIDsKK+eri+WkquWtkOekvCA+IHJpdHRhaXNoaXJlaVwgOwor5a6f6Zqb5ZWP6aGMID4gamlzc2FpbW9uZGFpXCA7Civlhazou6LpgJ/luqYgPiBrb3V0ZW5zb2t1ZG9cIDsKK+S4gOefs+S6jOmzpSA+IGlzc2VraW5pY2hvdVwgOwor5pWZ6IKy6Kqy56iLID4ga3lvdWlrdWthdGVpXCA7Civkurrku6PlkI3oqZ4gPiBqaW5kYWltZWlzaGlcIDsKK+WEqueUn+e1kOWpmiA+IHl1dXNlaWtla2tvblwgOwor5Y+j6aCt6Kmm5ZWPID4ga291dG91c2hpbW9uXCA7CivkuqTpgJrlronlhaggPiBrb3V0c3V1YW56ZW5cIDsKK+WSjOaWh+iLseiosyA+IHdhYnVuJydlaXlha3VcIDsKK+acrOWutuacrOWFgyA+IGhvbmtlaG9ubW90b1wgOwor55uy55uu6aOb6KGMID4gbW91bW9rdWhpa291XCA7Civmu57nqbroqJjpjLIgPiB0YWlrdXVraXJva3VcIDsKK+eri+S9k+ijgeaWrSA+IHJpdHRhaXNhaWRhblwgOwor5Zu95YaF5LqL5oOFID4ga29rdW5haWppam91XCA7CivmjqXop6bkuovmlYUgPiBzZXNzaG9rdWppa29cIDsKK+S5vueHpeiFkOacvSA+IGthbnNvdWZ1a3l1dVwgOwor5ZCI6LOH5Lya56S+ID4gZ291c2hpZ2Fpc2hhXCA7CivlvavliLvlhbfluqcgPiBjaG91a29rdWd1emFcIDsKK+aIuOWkluaSruW9sSA+IGtvZ2Fpc2F0c3VlaVwgOwor5b+c5oCl5L+u55CGID4gb3VreXV1c2h1dXJpXCA7CivpurvphZTms6jlsIQgPiBtYXN1aWNodXVzaGFcIDsKK+acq+err+S+oeagvCA+IG1hdHRhbmtha2FrdVwgOwor5YG25YOP5bSH5oudID4gZ3V1em91c3V1aGFpXCA7Civmma7pgJrliJfou4ogPiBmdXRzdXVyZXNzaGFcIDsKK+WSjOW5s+S6pOa4iSA+IHdhaGVpa291c2hvdVwgOwor5b6q55Kw6KuW5rOVID4ganVua2Fucm9ucG91XCA7Civpo73po5/mmpbooaMgPiBob3VzaG9rdWRhbmlcIDsKK+apn+aisOW3pealrSA+IGtpa2Fpa291Z3lvdVwgOwor54Sh6ZmQ6ZuG5ZCIID4gbXVnZW5zaHV1Z291XCA7CivmnInkvqHoqLzliLggPiB5dXVrYXNob3VrZW5cIDsKK+e3j+e1semBuOaMmSA+IHNvdXRvdXNlbmt5b1wgOwor5Lq65rCX5b256ICFID4gbmlua2l5YWt1c2hhXCA7CivluILlhoXpgJroqbEgPiBzaGluYWl0c3V1d2FcIDsKK+S4gOetiemZuOWjqyA+IGl0dG91cmlrdXNoaVwgOwor6Kyb5ZKM5p2h57SEID4ga291d2Fqb3V5YWt1XCA7Civlt6Xmpa3pg73luIIgPiBrb3VneW91dG9zaGlcIDsKK+WNk+S4iumbu+ipsSA+IHRha3Vqb3VkZW53YVwgOwor5a6i6Kaz5Li7576pID4ga3lha2thbnNodWdpXCA7CivlhbHlkIzorIDorbAgPiBreW91ZG91Ym91Z2lcIDsKK+izvOiyt+e1hOWQiCA+IGtvdWJhaWt1bWlhaVwgOwor6KuL6LKg5LuV5LqLID4gdWtlb2lzaGlnb3RvXCA7Civpm4fnlKjlpZHntIQgPiBrb3lvdWtlaXlha3VcIDsKK+W9k+aEj+WNs+WmmSA+IHRvdWlzb2t1bXlvdVwgOwor5Yq05YON5biC5aC0ID4gcm91ZG91c2hpam91XCA7Civlj43lr77lsIvllY8gPiBoYW50YWlqaW5tb25cIDsKK+Wjq+WumOWtpuagoSA+IHNoaWthbmdha2tvdVwgOwor5ZCN6KqJ5Lya6ZW3ID4gbWVpeW9rYWljaG91XCA7CivlubPlnYfntabkuI4gPiBoZWlraW5reXV1eW9cIDsKK+Wwj+S+v+Wwj+WDpyA+IHNob3ViZW5rb3pvdVwgOwor5Lq65qip6LmC6LqqID4gamlua2VuanV1cmluXCA7CivlnKfnuK7phbjntKAgPiBhc3NodWt1c2Fuc29cIDsKK+S6uuaoqei5gui6mSA+IGppbmtlbmp1dXJpblwgOwor5bm05qyh5aCx5ZGKID4gbmVuamlob3Vrb2t1XCA7Civpg7Xkvr/nlarlj7cgPiB5dXViaW5iYW5nb3VcIDsKK+ioiOeul+WVj+mhjCA+IGtlaXNhbm1vbmRhaVwgOwor57eP5ZCI6ZuR6KqMID4gc291Z291emFzc2hpXCA7CivlnJ/lnLDlj47nlKggPiB0b2NoaXNodXV5b3VcIDsKK+W6g+WRiuWKueaenCA+IGtvdWtva3Vrb3VrYVwgOwor5bm85YWQ5pWZ6IKyID4geW91amlreW91aWt1XCA7Civov5HmiYDov7fmg5EgPiBraW5qb21laXdha3VcIDsKK+eEoemZkOe0muaVsCA+IG11Z2Vua3l1dXN1dVwgOwor5LiA5Yi75Y2D6YeRID4gaWtrb2t1c2Vua2luXCA7Civpmarlr6nliLbluqYgPiBiYWlzaGluc2VpZG9cIDsKK+e3qOmbhuapn+iDvSA+IGhlbnNodXVraW5vdVwgOwor5YWI5Y+W54m55qipID4gc2Vuc2h1dG9ra2VuXCA7CivlsILploDliIbph44gPiBzZW5tb25idW4nJ3lhXCA7Civmi4XlrZDoj4zpoZ4gPiB0YW5zaGlraW5ydWlcIDsKK+mWouS/guW8t+WMliA+IGthbmtlaWt5b3VrYVwgOwor5pS75pKD6YOo6ZqKID4ga291Z2VraWJ1dGFpXCA7Civnp5jlr4bkvJrorbAgPiBoaW1pdHN1a2FpZ2lcIDsKK+atpuiAheS/rualrSA+IG11c2hhc2h1Z3lvdVwgOwor5raI6Z+z6KOF572uID4gc2hvdW9uc291Y2hpXCA7CivmuoDlt57kuovlpIkgPiBtYW5zaHV1amloZW5cIDsKK+izh+eUo+ipleS+oSA+IHNoaXNhbmh5b3VrYVwgOwor5Ye654mI6Kix5Y+vID4gc2h1cHBhbmt5b2thXCA7Civlm73lhoXpnIDopoEgPiBrb2t1bmFpanV5b3VcIDsKK+WNg+S4h+mVt+iAhSA+IHNlbmJhbmNob3VqYVwgOwor5YyW5a2m6Kmm6aiTID4ga2FnYWt1c2hpa2VuXCA7CivntLDog57ln7nppIogPiBzYWlib3ViYWl5b3VcIDsKK+mfs+mfu+e1hOe5lCA+IG9uJydpbnNvc2hpa2lcIDsKK+WHpuWHpuaWueaWuSA+IHNob3Nob2hvdWJvdVwgOwor5bqn5qiZ5aSJ5o+bID4gemFoeW91aGVua2FuXCA7CivmqZ/morDlt6XlraYgPiBraWthaWtvdWdha3VcIDsKK+esrOS4iemDqOmVtyA+IGRhaXNhbmJ1Y2hvdVwgOwor5aWH5bKp5oCq55+zID4ga2lnYW5rYWlzZWtpXCA7CivogJDpoqjmp4vpgKAgPiB0YWlmdXVrb3V6b3VcIDsKK+efs+m5uOW3peWgtCA+IHNla2tlbmtvdWpvdVwgOwor5Zyo6YO36LuN5Lq6ID4gemFpZ291Z3VuamluXCA7Civlub3pnIrkvJrnpL4gPiB5dXVyZWlnYWlzaGFcIDsKK+eSsOWig+egtOWjiiA+IGthbmt5b3VoYWthaVwgOwor5Zu96Zqb5Li7576pID4ga29rdXNhaXNodWdpXCA7CivlvqHnr4DmlpnnkIYgPiBvc2VjaGlyeW91cmlcIDsKK+S/rueQhuW3peWgtCA+IHNodXVyaWtvdWpvdVwgOwor5ouS5ZCm5Y+N5b+cID4ga3lvaGloYW4nJ25vdVwgOwor5LiA6KiA5LiA5Y+lID4gaWNoaWdvbicnaWtrdVwgOwor5Y2Y54us6aOb6KGMID4gdGFuZG9rdWhpa291XCA7CivkuLvmqKnlnKjmsJEgPiBzaHVrZW56YWltaW5cIDsKK+S6uuagvOS4u+e+qSA+IGppbmtha3VzaHVnaVwgOwor6Ieq5q665pyq6YGCID4gamlzYXRzdW1pc3VpXCA7Civlh7rlrrbpgYHkuJYgPiBzaHVra2V0b25zZWlcIDsKK+e0kOmdqemlgumjqSA+IGhpbW9rYXdhdWRvblwgOwor5oSa5rCR5pS/562WID4gZ3VtaW5zZWlzYWt1XCA7CivljZjnp5HlpKflraYgPiB0YW5rYWRhaWdha3VcIDsKK+mBqeato+WIqea9pCA+IHRla2lzZWlyaWp1blwgOwor55m66Z+z6KiY5Y+3ID4gaGF0c3VvbmtpZ291XCA7Civou43kuovljZTlrpogPiBndW5qaWt5b3V0ZWlcIDsKK+ilv+mrmOadseS9jiA+IHNlaWtvdXRvdXRlaVwgOwor5pCN6ICX5Lq65ZOhID4gc29ubW91amluJydpblwgOwor5a6f5Yui5L6h5qC8ID4gamlzc2Vpa2FrYWt1XCA7Civmj7TnlKjoqK3oqIggPiBlbicneW91c2Vra2VpXCA7Civnj77loLTkuK3ntpkgPiBnZW5iYWNodXVrZWlcIDsKK+aEn+efpeijhee9riA+IGthbmNoaXNvdWNoaVwgOwor6K2w5rG65qmf6ZaiID4gZ2lrZXRzdWtpa2FuXCA7Civlronlv4Pnq4vlkb0gPiBhbmppbnJ5b3VtZWlcIDsKK+WQiOWQjOS6i+alrSA+IGdvdWRvdWppZ3lvdVwgOwor5ZCM5pyf5L+h5Y+3ID4gZG91a2lzaGluZ291XCA7Civku7LplpPmhI/orZggPiBuYWthbWFpc2hpa2lcIDsKK+WqkuS7i+WkieaVsCA+IGJhaWthaWhlbnN1dVwgOwor5a+S5Lit5rC05rOzID4ga2FuY2h1dXN1aWVpXCA7Civooqvkv53pmbrniakgPiBoaWhva2VuYnV0c3VcIDsKK+aal+auuuS6i+S7tiA+IGFuc2F0c3VqaWtlblwgOwor5oqY6KG35Li7576pID4gc2V0Y2h1dXNodWdpXCA7CivljZjlvI/nsL/oqJggPiB0YW5zaGlraWJva2lcIDsKK+aVmemkiuiqsueoiyA+IGt5b3V5b3VrYXRlaVwgOwor5LiJ6ICF5Lya6KuHID4gc2Fuc2hha2FpZGFuXCA7CivpgKPoqJjmipXnpaggPiByZW5raXRvdWh5b3VcIDsKK+W/g+eQhueKtuaFiyA+IHNoaW5yaWpvdXRhaVwgOwor5rW35aSW5biC5aC0ID4ga2FpZ2Fpc2hpam91XCA7Civml6LmiJDkuovlrp8gPiBraXNlaWppaml0c3VcIDsKK+S6i+WLmee3j+WxgCA+IGppbXVzb3VreW9rdVwgOwor5YmN6YCy5Z+65ZywID4gemVuc2hpbmtpY2hpXCA7CivlkIzlt6XnlbDmm7IgPiBkb3Vrb3Vpa3lva3VcIDsKK+WRvemhjOmWouaVsCA+IG1laWRhaWthbnN1dVwgOwor5YyX6KW/6Iiq6LevID4gaG9rdXNlaWtvdXJvXCA7CivlkIjlkIzkvJrlkIggPiBnb3Vkb3VrYWlnb3VcIDsKK+eri+WcsOadoeS7tiA+IHJpdGNoaWpvdWtlblwgOwor5Zyw55CG5a2m6ICFID4gY2hpcmlnYWt1c2hhXCA7CivlpKfmiYDpq5jmiYAgPiB0YWlzaG9rb3VzaG9cIDsKK+mHjeikh+S/nemZuiA+IGp1dWZ1a3Vob2tlblwgOwor6YCa5bi45YW15ZmoID4gdHN1dWpvdWhlaWtpXCA7CivlpJblm73pg6jpmoogPiBnYWlrb2t1YnV0YWlcIDsKK+aWh+WMluS6pOa1gSA+IGJ1bmtha291cnl1dVwgOwor5biC5aSW6YCa6KmxID4gc2hpZ2FpdHN1dXdhXCA7Civmr5vntLDooYDnrqEgPiBtb3VzYWlrZWtrYW5cIDsKK+WLleaFi+e1seioiCA+IGRvdXRhaXRvdWtlaVwgOwor56S+5YaF5oOF5aCxID4gc2hhbmFpam91aG91XCA7CivkuK3lhazmlofluqsgPiBjaHV1a291YnVua29cIDsKK+Wcp+mbu+WKueaenCA+IGF0c3VkZW5rb3VrYVwgOwor6a2R6a2F6a2N6a2OID4gY2hpbWltb3VyeW91XCA7CivlvqrnkrDns7vntbEgPiBqdW5rYW5rZWl0b3VcIDsKK+WvvuS6uumWouS/giA+IHRhaWppbmthbmtlaVwgOwor5pmu6YCa6YG45oyZID4gZnV0c3V1c2Vua3lvXCA7CivmnaHku7bpl5jkuokgPiBqb3VrZW50b3Vzb3VcIDsKK+WNg+eKtuS4h+aFiyA+IHNlbmpvdWJhbnRhaVwgOwor5YyW5oiQ5bel5qWtID4ga2FzZWlrb3VneW91XCA7CivntYzmuIjljp/oq5YgPiBrZWl6YWlnZW5yb25cIDsKK+aoqeisgOihk+aVsCA+IGtlbmJvdWp1c3N1dVwgOwor5LiN5o+u55m65oCnID4gZnVraWhhdHN1c2VpXCA7Civpq5jnrYnlrabmoKEgPiBrb3V0b3VnYWtrb3VcIDsKK+mAo+WQiOeOi+WbvSA+IHJlbmdvdW91a29rdVwgOwor6YO15L6/5pu457ChID4geXV1Ymluc2hva2FuXCA7Civmt7HorIDpgaDmha4gPiBzaGluYm91ZW5yeW9cIDsKK+S9j+awkemBi+WLlSA+IGp1dW1pbicndW5kb3VcIDsKK+azleaWh+WtpumDqCA+IGhvdWJ1bmdha3VidVwgOwor5pmu6YCa6YO15L6/ID4gZnV0c3V1eXV1YmluXCA7CivlkJvkuLvmlL/kvZMgPiBrdW5zaHVzZWl0YWlcIDsKK+aNsuWcn+mHjeadpSA+IGtlbmRvY2hvdXJhaVwgOwor5aWz5aOw5ZCI5ZSxID4gam9zZWlnYXNzaG91XCA7CivnsbPopb/miKbkuokgPiBiZWlzZWlzZW5zb3VcIDsKK+mrmOW6puaIkOmVtyA+IGtvdWRvc2VpY2hvdVwgOwor5Lm+5biD5pGp5pOmID4ga2FucHVtYXNhdHN1XCA7CivkuK3oj6/mgJ3mg7MgPiBjaHV1a2FzaGlzb3VcIDsKK+i0iOS4juiovOabuCA+IHpvdXlvc2hvdXNob1wgOwor5YWs6KGG6KGb55SfID4ga291c2h1dWVpc2VpXCA7CivnpL7kvJrnp5HlraYgPiBzaGFrYWlrYWdha3VcIDsKK+i+suiKuOWMluWtpiA+IG5vdWdlaWthZ2FrdVwgOwor5Lqk6YCa5pW055CGID4ga291dHN1dXNlaXJpXCA7Civnibnmrorpg6jpmoogPiB0b2t1c2h1YnV0YWlcIDsKK+S6i+Wun+eEoeaguSA+IGppaml0c3VtdWtvblwgOwor5a2U6ZuA5aaZ546LID4ga3VqYWt1bXlvdW91XCA7CivosqHnlKPliIbkuI4gPiB6YWlzYW5idW4nJ3lvXCA7CivpgqblrZfmlrDogZ4gPiBob3VqaXNoaW5idW5cIDsKK+apn+WLleioiOeUuyA+IGtpZG91a2Vpa2FrdVwgOwor5a2k56uL5Li7576pID4ga29yaXRzdXNodWdpXCA7CivmmI7msrvlpKnnmocgPiBtZWlqaXRlbicnbm91XCA7CivnhKbngrnot53pm6IgPiBzaG91dGVua3lvcmlcIDsKK+mbhuWQiOaZgumWkyA+IHNodXVnb3VqaWthblwgOwor5L2P5a6F5Zyw5Yy6ID4ganV1dGFrdWNoaWt1XCA7CivlpJrop5Losr/mmJMgPiB0YWtha3Vib3Vla2lcIDsKK+mdnuWWq+eFmeiAhSA+IGhpa2l0c3VlbnNoYVwgOwor5raI5YyW5LiN6ImvID4gc2hvdWthZnVyeW91XCA7CivoiJ7lj7DnhafmmI4gPiBidXRhaXNob3VtZWlcIDsKK+S4jeeUn+eUo+eahCA+IGZ1c2Vpc2FudGVraVwgOwor6Z2e55Sf55Sj55qEID4gaGlzZWlzYW50ZWtpXCA7Civli5/pm4bkurrlk6EgPiBib3NodXVqaW4nJ2luXCA7Civljp/nqL/nlKjntJkgPiBnZW5rb3V5b3VzaGlcIDsKK+eEoeaEj+itmOeahCA+IG11aXNoaWtpdGVraVwgOwor57eP5Y+45Luk5a6YID4gc291c2hpcmVpa2FuXCA7CivorbLmuKHmiYDlvpcgPiBqb3V0b3Nob3Rva3VcIDsKK+WtpuerpeS/neiCsiA+IGdha3Vkb3Vob2lrdVwgOwor5pyA57WC5YW15ZmoID4gc2Fpc2h1dWhlaWtpXCA7Civmu5HotbDou4rovKogPiBrYXNzb3VzaGFyaW5cIDsKK+aciOWIiumbkeiqjCA+IGdla2thbnphc3NoaVwgOwor5YKN6Iul54Sh5Lq6ID4gYm91amFrdWJ1amluXCA7Civli6TlirTlpYnku5UgPiBraW5yb3Vob3VzaGlcIDsKK+aAp+iFuuaRmOmZpCA+IHNlaXNlbnRla2lqb1wgOwor5oay5rOV5pS55q2jID4ga2VucG91a2Fpc2VpXCA7CivooYzot6/nl4XogIUgPiBrb3Vyb2J5b3VzaGFcIDsKK+S4gOS6uuiKneWxhSA+IGhpdG9yaXNoaWJhaVwgOwor5YWx5ZCM6Ziy6KGbID4ga3lvdWRvdWJvdWVpXCA7Civpl5jlv5fmuoDmuoAgPiB0b3VzaGltYW5tYW5cIDsKK+W4guWLouiqv+afuyA+IHNoaXNlaWNob3VzYVwgOwor5Lya5Y6t6Luf6aqoID4gZWVuJyduYW5rb3RzdVwgOwor6LuN55So5Zyw5ZuzID4gZ3VuJyd5b3VjaGl6dVwgOwor5p2x5aWU6KW/6LWwID4gdG91aG9uc2Vpc291XCA7CivkuqTku6PkvZzmpa0gPiBrb3V0YWlzYWd5b3VcIDsKK+aXpeiomOaWh+WtpiA+IG5pa2tpYnVuZ2FrdVwgOwor5pel57O757Gz5Lq6ID4gbmlra2VpYmVpamluXCA7Civoh7Plhazoh7PlubMgPiBzaGlrb3VzaGloZWlcIDsKK+mWoumAo+S8muekviA+IGthbnJlbmdhaXNoYVwgOwor5Lq65qip5a6j6KiAID4gamlua2Vuc2VuZ2VuXCA7CivkurrpgKDkurrplpMgPiBqaW56b3VuaW5nZW5cIDsKK+WCvuaWnOWutuizgyA+IGtlaXNoYXlhY2hpblwgOwor6Ieq5rCR5YWa5YmHID4gamltaW50b3Vzb2t1XCA7Civlj43lvqnoqJjlj7cgPiBoYW5wdWt1a2lnb3VcIDsKK+aXpeacrOiIquepuiA+IG5pcHBvbmtvdWt1dVwgOwor6Iux5omN5pWZ6IKyID4gZWlzYWlreW91aWt1XCA7CivmjpLmsLTmnaHku7YgPiBoYWlzdWlqb3VrZW5cIDsKK+iLseWbveiIquepuiA+IGVpa29rdWtvdWt1dVwgOwor5pqX5Lit5pG457SiID4gYW5jaHV1bW9zYWt1XCA7CivliY3lk6jpqI7lhbUgPiB6ZW5zaG91a2loZWlcIDsKK+awtOe0oOeIhuW8viA+IHN1aXNvYmFrdWRhblwgOwor5r2F5ryR55So5rC0ID4ga2FuZ2FpeW91c3VpXCA7CivkuIDmlonlsITmkoMgPiBpc3NlaXNoYWdla2lcIDsKK+Wfuui7uOmAmuiyqCA+IGtpamlrdXRzdXVrYVwgOwor5YK+5pac55Sf55SjID4ga2Vpc2hhc2Vpc2FuXCA7CivlooPnlYznkIboq5YgPiBreW91a2Fpcmlyb25cIDsKK+Wkqeeah+mZm+S4iyA+IHRlbicnbm91aGVpa2FcIDsKK+WkqeeEtuaenOaxgSA+IHRlbicnbmVua2FqdXVcIDsKK+mciuiCieS4gOiHtCA+IHJlaW5pa3VpdGNoaVwgOwor57WM5riI5b6p6IiIID4ga2VpemFpZnVra291XCA7Civkurrlj6PntbHoqIggPiBqaW5rb3V0b3VrZWlcIDsKK+aIpuaZgueUo+alrSA+IHNlbmppc2FuZ3lvdVwgOwor5Y+k6Yqt5a2m6ICFID4ga29zZW5nYWt1c2hhXCA7Civlr77lvL7pgZPlvL4gPiB0YWlkYW5kb3VkYW5cIDsKK+ijvemAoOeVquWPtyA+IHNlaXpvdWJhbmdvdVwgOwor5aSa6YeN5Lq65qC8ID4gdGFqdXVqaW5rYWt1XCA7CivkuIDliIDkuKHmlq0gPiBpdHRvdXJ5b3VkYW5cIDsKK+WFseeUo+S4u+e+qSA+IGt5b3VzYW5zaHVnaVwgOwor6KiY5ZCN5oqV56WoID4ga2ltZWl0b3VoeW91XCA7CivkvJHmhqnmmYLplpMgPiBreXV1a2VpamlrYW5cIDsKK+S4uOWkqui2s+WgtCA+IG1hcnV0YWFzaGliYVwgOwor5qGD6Imy6YGK5oivID4gbW9tb2lyb3l1dWdpXCA7Civmrablo6vpmo7ntJogPiBidXNoaWthaWt5dXVcIDsKK+Wbvemam+mbu+ipsSA+IGtva3VzYWlkZW53YVwgOwor5Lq65bel5Zyw6ZyHID4gamlua291amlzaGluXCA7CivmvZzlnKjkuLvmqKkgPiBzZW56YWlzaHVrZW5cIDsKK+mBjuWwj+ipleS+oSA+IGthc2hvdWh5b3VrYVwgOwor56+E55aH6YOo6ZaAID4gaGFuY2h1dWJ1bW9uXCA7Civkv67pgZPliLbluqYgPiBzaHV1ZG91c2VpZG9cIDsKK+e1seiqnuevhOeWhyA+IHRvdWdvaGFuY2h1dVwgOwor6KGb55Sf6Kit5YKZID4gZWlzZWlzZXRzdWJpXCA7CivkuIDmrKHnlKPlk4EgPiBpY2hpamlzYW5waW5cIDsKK+WFrOaYjuato+WkpyA+IGtvdW1laXNlaWRhaVwgOwor6Iqx54Gr57ea6aaZID4gaGFuYWJpc2Vua291XCA7CivoiLbnlKjmqZ/plqIgPiBoYWt1eW91a2lrYW5cIDsKK+WFrOawkeaoqeazlSA+IGtvdW1pbmtlbmhvdVwgOwor5piP552h54q25oWLID4ga29uc3Vpam91dGFpXCA7Civlr77lkJHou4rnt5ogPiB0YWlrb3VzaGFzZW5cIDsKK+mJhOaLs+WItuijgSA+IHRla2tlbnNlaXNhaVwgOwor5qGC5Yag6Kmp5Lq6ID4ga2Vpa2Fuc2hpamluXCA7Civkurrlj6Poqr/mn7sgPiBqaW5rb3VjaG91c2FcIDsKK+WPuOazleino+WJliA+IHNoaWhvdWthaWJvdVwgOwor5Lq65Y+j6Z2Z5oWLID4gamlua291c2VpdGFpXCA7CivmnInkvZPli5XnlKMgPiB5dXV0YWlkb3VzYW5cIDsKK+aOoeeUqOippumokyA+IHNhaXlvdXNoaWtlblwgOwor5rCX6LGh5oOF5aCxID4ga2lzaG91am91aG91XCA7CivmnInnt5rmlL7pgIEgPiB5dXVzZW5ob3Vzb3VcIDsKK+WWgOeXsOaknOafuyA+IGtha3V0YW5rZW5zYVwgOwor6YO35Zyf5paZ55CGID4ga3lvdWRvcnlvdXJpXCA7CivkuInmrrXoq5bms5UgPiBzYW5kYW5yb25wb3VcIDsKK+aZguS7o+eyvuelniA+IGppZGFpc2Vpc2hpblwgOwor6KqH5aSn5bqD5ZGKID4ga29kYWlrb3Vrb2t1XCA7CivkuIDmmKjjgIXlpJwgPiBpc3Nha3VzYWt1eWFcIDsKK+mDveW4guioiOeUuyA+IHRvc2hpa2Vpa2FrdVwgOwor6Zai5p2x5LiA5YaGID4ga2FudG91aWNoaWVuXCA7Civoh6rnhLbnmbrnlJ8gPiBzaGl6ZW5oYXNzZWlcIDsKK+asveWumuaGsuazlSA+IGtpbnRlaWtlbnBvdVwgOwor5pWw5YCk5Yi25b6hID4gc3V1Y2hpc2VpZ3lvXCA7CivmrabogIXkurrlvaIgPiBtdXNoYW5pbmd5b3VcIDsKK+WIhuWRqOWbnui3ryA+IGJ1bnNodXVrYWlyb1wgOwor6Iel6b6N54K5552bID4gZ2FyeW91dGVuc2VpXCA7CivluILmsJHlpKfkvJogPiBzaGltaW50YWlrYWlcIDsKK+i1pOWtl+WbveWCtSA+IGFrYWppa29rdXNhaVwgOwor5L2/55So5pa55rOVID4gc2hpeW91aG91aG91XCA7CivlsI/mmKXml6XlkowgPiBrb2hhcnViaXlvcmlcIDsKK+WFrOW8j+ippuWQiCA+IGtvdXNoaWtpamlhaVwgOwor54Wn5bCE5Yem55CGID4gc2hvdXNoYXNob3JpXCA7Civlj4Lli6TkuqTmm78gPiBzYW5raW5rb3V0YWlcIDsKK+e+iumgreeLl+iCiSA+IHlvdXRvdWt1bmlrdVwgOwor5pah5peL5qWt6ICFID4gYXNzZW5neW91c2hhXCA7CivkvJrnpL7mpoLopoEgPiBrYWlzaGFnYWl5b3VcIDsKK+awkeS4u+aUv+S9kyA+IG1pbnNodXNlaXRhaVwgOwor57KX5pS+6L6y5qWtID4gc29ob3Vub3VneW91XCA7CivosqHli5noq7jooaggPiB6YWltdXNob2h5b3VcIDsKK+iaiuWPlue3mummmSA+IGthdG9yaXNlbmtvdVwgOwor5bqD5aCx5oOF5aCxID4ga291aG91am91aG91XCA7Civnt4rmgKXkuovmhYsgPiBraW5reXV1aml0YWlcIDsKK+Wdh+ihoeS+oeagvCA+IGtpbmtvdWtha2FrdVwgOwor5a2j56+A5aSJ55WwID4ga2lzZXRzdWhlbicnaVwgOwor5pyJ5oSf5Zyw6ZyHID4geXV1a2FuamlzaGluXCA7Civnt6nlkozmjK/li5UgPiBrYW53YXNoaW5kb3VcIDsKK+W5vemciuS6uuWPoyA+IHl1dXJlaWppbmtvdVwgOwor57Wx6Kqe5oyH5qiZID4gdG91Z29zaGloeW91XCA7CivmnIDpq5jkvqHmoLwgPiBzYWlrb3VrYWtha3VcIDsKK+mFuOaAp+eZveWcnyA+IHNhbnNlaWhha3Vkb1wgOwor5rCR5peP6KGj6KOFID4gbWluem9rdWlzaG91XCA7Civkv67lo6voqrLnqIsgPiBzaHV1c2hpa2F0ZWlcIDsKK+WFrOebiuazleS6uiA+IGtvdWVraWhvdWppblwgOwor5q205Y+y5Li7576pID4gcmVraXNoaXNodWdpXCA7CivlvIHmhbbmoLzlrZAgPiBiZW5rZWlnb3VzaGlcIDsKK+esrOS6jOS6uuensCA+IGRhaW5pbmluc2hvdVwgOwor5LiL5rWB56S+5LyaID4ga2FyeXV1c2hha2FpXCA7Civlv6vmpb3kuLvnvqkgPiBrYWlyYWt1c2h1Z2lcIDsKK+S4jeeyvuS4jeeyviA+IGZ1c2hvdWJ1c2hvdVwgOwor5Yi26ZmQ6YCf5bqmID4gc2VpZ2Vuc29rdWRvXCA7CivmlofmrabkuKHpgZMgPiBidW5idXJ5b3Vkb3VcIDsKK+S4iuaYh+mZkOW6piA+IGpvdXNob3VnZW5kb1wgOwor5L2c55So56mN5YiGID4gc2F5b3VzZWtpYnVuXCA7CivohbnnrYvpgYvli5UgPiBmdWtraW4nJ3VuZG91XCA7Civlhazoqo3oqJjpjLIgPiBrb3VuaW5raXJva3VcIDsKK+S4gOe2suaJk+WwvSA+IGljaGltb3VkYWppblwgOwor5a2m5qCh55So5ZOBID4gZ2Fra291eW91aGluXCA7CivkvY/lroXmiYvlvZMgPiBqdXV0YWt1dGVhdGVcIDsKK+iqjeefpeenkeWtpiA+IG5pbmNoaWthZ2FrdVwgOwor5ZWG5aOy6YGT5YW3ID4gc2hvdWJhaWRvdWd1XCA7Civljp/lrZDmiKbkuokgPiBnZW5zaGlzZW5zb3VcIDsKK+S6jOmHjeeEpueCuSA+IG5panV1c2hvdXRlblwgOwor5Y+j562U6Kmm5ZWPID4ga291dG91c2hpbW9uXCA7Civlm7Pmm7jppKjplbcgPiB0b3Nob2thbmNob3VcIDsKK+WcqOW6q+iqv+aVtCA+IHphaWtvY2hvdXNlaVwgOwor5a++5pWw6Zai5pWwID4gdGFpc3V1a2Fuc3V1XCA7CivmlL/mlZnkuIDoh7QgPiBzZWlreW91aXRjaGlcIDsKK+aWh+iKuOaJueiplSA+IGJ1bmdlaWhpaHlvdVwgOwor57ea5b2i5Luj5pWwID4gc2Vua2VpZGFpc3V1XCA7CivpgKPlkIjmlL/mqKkgPiByZW5nb3VzZWlrZW5cIDsKK+mgvOavjeWtkOismyA+IHRhbm9tb3NoaWtvdVwgOwor5Zyo6Z+T57Gz6LuNID4gemFpa2FuYmVpZ3VuXCA7CivkuIDlpJzkuZ7po58gPiBpY2hpeWFrb2ppa2lcIDsKK+eVsOW4uOe1guS6hiA+IGlqb3VzaHV1cnlvdVwgOwor6Kmm6aiT5Zyw542EID4gc2hpa2Vuamlnb2t1XCA7CivnpL7lk6HmlZnogrIgPiBzaGFpbmt5b3Vpa3VcIDsKK+S8gealreW5tOmHkSA+IGtpZ3lvdW5lbmtpblwgOwor5Lme6aOf5qC55oCnID4ga29qaWtpa29uam91XCA7CivkvIHmpa3lkIjlkIwgPiBraWd5b3Vnb3Vkb3VcIDsKK+iHquS4u+aMh+mHnSA+IGppc2h1c2hpc2hpblwgOwor5oSf5oWo54Sh6YePID4ga2FuZ2FpbXVyeW91XCA7CivmlbXmgKflm73lrrYgPiB0ZWtpc2Vpa29ra2FcIDsKK+etieW3rue0muaVsCA+IHRvdXNha3l1dXN1dVwgOwor5bir56+E5a2m5qChID4gc2hpaGFuZ2Fra291XCA7CivntYzmuIjnpL7kvJogPiBrZWl6YWlzaGFrYWlcIDsKK+aUueiJr+S4u+e+qSA+IGthaXJ5b3VzaHVnaVwgOwor57WM5riI5Yi26KOBID4ga2VpemFpc2Vpc2FpXCA7CivkuLvmiKbmipXmiYsgPiBzaHVzZW50b3VzaHVcIDsKK+mBiuaSg+maiuWToSA+IHl1dWdla2l0YWlpblwgOwor5LiA5pmC5biw5LyRID4gaWNoaWppa2lreXV1XCA7Civlj5fnm4roqLzliLggPiBqdWVraXNob3VrZW5cIDsKK+aLmemAn+S4u+e+qSA+IHNlc3Nva3VzaHVnaVwgOwor5pyq6ZaL5ouT5ZywID4gbWlrYWl0YWt1Y2hpXCA7CivlhajmqKnlhazkvb8gPiB6ZW5rZW5rb3VzaGlcIDsKK+e1seWItue1jOa4iCA+IHRvdXNlaWtlaXphaVwgOwor55Sw5ZyS6aKo5pmvID4gZGVuJydlbmZ1dWtlaVwgOwor5peF6KGM5pel56iLID4gcnlva291bml0dGVpXCA7CivnhKHph4/lpKfmlbAgPiBtdXJ5b3VkYWlzdXVcIDsKK+WJsuW8leatqeWQiCA+IHdhcmliaWtpYnVhaVwgOwor5Y+N5qC46YGL5YuVID4gaGFua2FrdXVuZG91XCA7CivpppnmuK/ov5TpgoQgPiBob25rb25oZW5rYW5cIDsKK+S8gealreWQiOS9tSA+IGtpZ3lvdWdhcHBlaVwgOwor6Z2e6KGM5bCR5bm0ID4gaGlrb3VzaG91bmVuXCA7Civph47lpJbmkq7lvbEgPiB5YWdhaXNhdHN1ZWlcIDsKK+WNg+aJi+ims+mfsyA+IHNlbmp1a2FuJydub25cIDsKK+eyvuelnuS4u+e+qSA+IHNlaXNoaW5zaHVnaVwgOwor57WC5aeL5LiA6LKrID4gc2h1dXNoaWlra2FuXCA7CivnnIzmsJHkvJrppKggPiBrZW5taW5rYWlrYW5cIDsKK+aVmeadoeS4u+e+qSA+IGt5b3Vqb3VzaHVnaVwgOwor5pu055Sf5Lya56S+ID4ga291c2VpZ2Fpc2hhXCA7CivnuYrntq3lt6Xmpa0gPiBzZW4nJ2lrb3VneW91XCA7CivkurrplpPlkIzlo6sgPiBuaW5nZW5kb3VzaGlcIDsKK+WLmOWQiOiyv+aYkyA+IGthbmdvdWJvdWVraVwgOwor55m+5a625LqJ6bO0ID4gaHlha2thc291bWVpXCA7CivkuJbnlYzmlL/nrZYgPiBzZWthaXNlaXNha3VcIDsKK+WutuWxi+WPsOW4syA+IGthb2t1ZGFpY2hvdVwgOwor5p2x5rW36YGT57eaID4gdG91a2FpZG91c2VuXCA7CivpgY7lvZPnq7bkuokgPiBrYXRvdWt5b3Vzb3VcIDsKK+a2suS9k+eqkue0oCA+IGVraXRhaWNoaXNzb1wgOwor5bmz5ZKM5Y2U5a6aID4gaGVpd2FreW91dGVpXCA7CivnhKHnt5rpm7vkv6EgPiBtdXNlbmRlbnNoaW5cIDsKK+WwgumWgOeUqOiqniA+IHNlbm1vbicneW91Z29cIDsKK+S6uumAoOiCpeaWmSA+IGppbnpvdWhpcnlvdVwgOwor5aSn56Cy5LiJ6ZaAID4gdGFpaG91c2FubW9uXCA7Civlrp/pqJPoo4Xnva4gPiBqaWtrZW5zb3VjaGlcIDsKK+S4reWkruWKtOWDjSA+IGNodXVvdXJvdWRvdVwgOwor5YaF57ea55Wq5Y+3ID4gbmFpc2VuYmFuZ291XCA7CivkvJ3oqJjkvZzogIUgPiBkZW5raXNha3VzaGFcIDsKK+S6uuawkeWFrOekviA+IGppbm1pbmtvdXNoYVwgOwor6YCj57Wh5YiH56ymID4gcmVucmFrdWtpcHB1XCA7CivlhbHlkIzlopPlnLAgPiBreW91ZG91Ym9jaGlcIDsKK+Wun+aFi+iqv+afuyA+IGppdHRhaWNob3VzYVwgOwor57eP5YuZ6ZW35a6YID4gc291bXVjaG91a2FuXCA7Civmt7fkubHnirbmhYsgPiBrb25yYW5qb3V0YWlcIDsKK+WutuaXj+aEj+itmCA+IGthem9rdWlzaGlraVwgOwor5aSW5p+U5YaF5YmbID4gZ2FpanV1bmFpZ291XCA7CivoqKrllY/osqnlo7IgPiBob3Vtb25oYW5iYWlcIDsKK+aOkuaWpemBi+WLlSA+IGhhaXNla2l1bmRvdVwgOwor5Y6f5a2Q5by+6aCtID4gZ2Vuc2hpZGFudG91XCA7Civllrbmpa3moYjlhoUgPiBlaWd5b3VhbicnbmFpXCA7CivlpKnmlofoiKrms5UgPiB0ZW5tb25rb3Vob3VcIDsKK+mdnuWun+mam+eahCA+IGhpamlzc2FpdGVraVwgOwor5Y+C5Yuk5Lqk5LujID4gc2Fua2lua291dGFpXCA7Civoo4/mm7jorbLmuKEgPiB1cmFnYWtpam91dG9cIDsKK+mWouS/guabuOmhniA+IGthbmtlaXNob3J1aVwgOwor5YWN6Kix55qG5LydID4gbWVua3lva2FpZGVuXCA7Civlm57ou6Lnq7bmioAgPiBrYWl0ZW5reW91Z2lcIDsKK+e1jOa4iOawtOWfnyA+IGtlaXphaXN1aWlraVwgOwor54Sh5qyy5oGs5rehID4gbXV5b2t1dGVudGFuXCA7Civoh6rmiJHlrp/nj74gPiBqaWdhaml0c3VnZW5cIDsKK+Wft+ihjOeMtuS6iCA+IHNoaWtrb3V5dXV5b1wgOwor6J6N6YCa5omL5b2iID4geXV1enV1dGVnYXRhXCA7CivljprnlJ/lubTph5EgPiBrb3VzZWluZW5raW5cIDsKK+mZouWGheaEn+afkyA+IGluJyduYWlrYW5zZW5cIDsKK+aCquaAp+awtOiFqyA+IGFrdXNlaXN1aXNodVwgOwor5Zuj5Y2B6YOO5LiIID4gZGFuanV1cm91am91XCA7Civku6Xlv4PkvJ3lv4MgPiBpc2hpbmRlbnNoaW5cIDsKK+S4gOWtl+WNg+mHkSA+IGljaGlqaXNlbmtpblwgOwor5qWt57i+5oKq5YyWID4gZ3lvdXNla2lha2thXCA7CivkuozmnZ/kuInmlocgPiBuaXNva3VzYW5tb25cIDsKK+WFteWZqOaLoeaVoyA+IGhlaWtpa2FrdXNhblwgOwor5Lqk5Y+L6Zai5L+CID4ga291eXV1a2Fua2VpXCA7Civlm73pmpvmlL/msrsgPiBrb2t1c2Fpc2VpamlcIDsKK+abuOmdouWvqeeQhiA+IHNob21lbnNoaW5yaVwgOwor5Lq66ZaT56S+5LyaID4gbmluZ2Vuc2hha2FpXCA7Civou43lm73kuLvnvqkgPiBndW5rb2t1c2h1Z2lcIDsKK+awtOS4iuertuaKgCA+IHN1aWpvdWt5b3VnaVwgOwor5rKz5Y6f5Lme6aOfID4ga2F3YXJha29qaWtpXCA7Civkuozph43mkq7lvbEgPiBuaWp1dXNhdHN1ZWlcIDsKK+e1tuWvvuipleS+oSA+IHpldHRhaWh5b3VrYVwgOwor5Zyo57Gz6YKm5Lq6ID4gemFpYmVpaG91amluXCA7Civlm5vmnIjppqzpub8gPiBzaGlnYXRzdWJha2FcIDsKK+aWsOmAsuawl+mLrSA+IHNoaW5zaGlua2llaVwgOwor5omA5b6X5o6n6ZmkID4gc2hvdG9rdWtvdWpvXCA7CivplqLkv4LkvJrnpL4gPiBrYW5rZWlnYWlzaGFcIDsKK+iHquS/oea6gOa6gCA+IGppc2hpbm1hbm1hblwgOwor5pel5pys5a2m6ICFID4gbmlob25nYWt1c2hhXCA7CivmmKXml6XlpKfnpL4gPiBrYXN1Z2F0YWlzaGFcIDsKK+aWh+aYjuekvuS8miA+IGJ1bm1laXNoYWthaVwgOwor5ZCM5Lq66ZuR6KqMID4gZG91amluemFzc2hpXCA7Civlj7jms5Xoo4HliKQgPiBzaGlob3VzYWliYW5cIDsKK+S6uuS9k+Wun+mokyA+IGppbnRhaWppa2tlblwgOwor5Lqh5ZG95pS/5qipID4gYm91bWVpc2Vpa2VuXCA7Civku7LplpPlkIzlo6sgPiBuYWthbWFkb3VzaGlcIDsKK+e1jOWWtuW3peWtpiA+IGtlaWVpa291Z2FrdVwgOwor6LOb5ZCm5Lih6KuWID4gc2FucGlyeW91cm9uXCA7CivkuI3ms5Xpm4bkvJogPiBmdWhvdXNodXVrYWlcIDsKK+ecvOmrmOaJi+S9jiA+IGdhbmtvdXNodXRlaVwgOwor6Ieq5YuV5bCP6YqDID4gamlkb3VzaG91anV1XCA7CivlnLDln5/npL7kvJogPiBjaGlpa2lzaGFrYWlcIDsKK+S6pOa1geS6uuS6iyA+IGtvdXJ5dXVqaW5qaVwgOwor54m55q6K5Yq55p6cID4gdG9rdXNodWtvdWthXCA7Civoh6rlrrbkuK3mr5IgPiBqaWthY2h1dWRva3VcIDsKK+ebsuiyq+mKg+WJtSA+IG1vdWthbmp1dXNvdVwgOwor5Lq65rCX55Wq57WEID4gbmlua2liYW5ndW1pXCA7CivmlbXmnKzkuLvnvqkgPiB0ZWtpaG9uc2h1Z2lcIDsKK+WPo+WGheaAp+S6pCA+IGtvdW5haXNlaWtvdVwgOwor6ISz6Luf5YyW55eHID4gbm91bmFua2FzaG91XCA7Civnj77lnLDms5XkurogPiBnZW5jaGlob3VqaW5cIDsKK+iHquWLlei7iuazpSA+IGppZG91c2hhZG9yb1wgOwor5LiA5pmC5YGc5q2iID4gaWNoaWppdGVpc2hpXCA7CivlrablnJLntJvkuokgPiBnYWt1ZW5mdW5zb3VcIDsKK+acgOmrmOWtpuW6nCA+IHNhaWtvdWdha3VmdVwgOwor5L+d6Zm65aWR57SEID4gaG9rZW5rZWl5YWt1XCA7CivlpbPmgKflt67liKUgPiBqb3NlaXNhYmV0c3VcIDsKK+WFkOerpeemj+eliSA+IGppZG91ZnVrdXNoaVwgOwor6Kmm6aiT5ZWP6aGMID4gc2hpa2VubW9uZGFpXCA7CivmvLjpgLLkuLvnvqkgPiB6ZW5zaGluc2h1Z2lcIDsKK+mfs+S/oeS4jemAmiA+IG9uc2hpbmZ1dHN1dVwgOwor5YuH5b6A6YKB6YCyID4geXV1b3VtYWlzaGluXCA7CivpnZnmraLnirbmhYsgPiBzZWlzaGlqb3V0YWlcIDsKK+WMl+aUr+S6i+WkiSA+IGhva3VzaGlqaWhlblwgOwor5a+45YCf6KmQ5qy6ID4gc3Vuc2hha3VzYWdpXCA7CivmjIflkI3pgJroqbEgPiBzaGltZWl0c3V1d2FcIDsKK+iLpuW/g+aDqOaGuiA+IGt1c2hpbnNhbnRhblwgOwor54m95by35LuY5LyaID4ga2Vua3lvdWZ1a2FpXCA7Civlr5LlhrfliY3nt5ogPiBrYW5yZWl6ZW5zZW5cIDsKK+mAn+W6puWItumZkCA+IHNva3Vkb3NlaWdlblwgOwor5Zub6YOo5ZCI5ZSxID4gc2hpYnVnYXNzaG91XCA7Civpm7vpm7vlhaznpL4gPiBkZW5kZW5rb3VzaGFcIDsKK+WEquWLneWAmeijnCA+IHl1dXNob3Vrb3Vob1wgOwor5Y+L5aW96Zai5L+CID4geXV1a291a2Fua2VpXCA7CivmlZHmj7Tnianos4cgPiBreXV1ZW5idXNzaGlcIDsKK+elnuekvuS7j+mWoyA+IGppbmphYnVra2FrdVwgOwor5rC05bmz5oCd6ICDID4gc3VpaGVpc2hpa291XCA7Civpn7PmhJ/mlZnogrIgPiBvbmthbmt5b3Vpa3VcIDsKK+a7nue0jeWHpuWIhiA+IHRhaW5vdXNob2J1blwgOwor5YWx5ZCM57WM5Za2ID4ga3lvdWRvdWtlaWVpXCA7Civkuozlha3mmYLkuK0gPiBuaXJva3VqaWNodXVcIDsKK+S4gOaZguiznOmHkSA+IGljaGlqaXNoaWtpblwgOwor6Ieq54S25bSH5oudID4gc2hpemVuc3V1aGFpXCA7Civlr6norbDmnKrkuoYgPiBzaGluZ2ltaXJ5b3VcIDsKK+mkiuWtkOe4gee1hCA+IHlvdXNoaWVuZ3VtaVwgOwor5rCP5peP5Yi25bqmID4gc2hpem9rdXNlaWRvXCA7Civou43pmaPljLvlraYgPiBndW5qaW4nJ2lnYWt1XCA7CivmraPlm5vpnaLkvZMgPiBzZWlzaGltZW50YWlcIDsKK+WumuagvOiri+iyoCA+IHRlaWtha3V1a2VvaVwgOwor5b6F6YGH5pS55ZaEID4gdGFpZ3V1a2FpemVuXCA7CivnuYrntq3lhYnlraYgPiBzZW4nJ2lrb3VnYWt1XCA7Civpu5LkurrpnIrmrYwgPiBrb2t1amlucmVpa2FcIDsKK+eJueauiuapn+iDvSA+IHRva3VzaHVraW5vdVwgOwor57WM6Lev56mN5YiGID4ga2Vpcm9zZWtpYnVuXCA7Civlm73llrbovrLloLQgPiBrb2t1ZWlub3Vqb3VcIDsKK+Wbveeyi+S4u+e+qSA+IGtva3VzdWlzaHVnaVwgOwor55Sy54q26IW654KOID4ga291am91c2VuJydlblwgOwor6LOH55Sj5ZCI6KiIID4gc2hpc2FuZ291a2VpXCA7Civpr6jpo7Lppqzpo58gPiBnZWlpbmJhc2hva3VcIDsKK+W/g+iHk+eZuuS9nCA+IHNoaW56b3Vob3NzYVwgOwor5paw5Lq65q2M5omLID4gc2hpbmppbmthc2h1XCA7CivovLjlhaXmiYvlvaIgPiB5dW55dXV0ZWdhdGFcIDsKK+Wcp+edgOerr+WtkCA+IGF0c3VnaXRhbnNoaVwgOwor5pyq5pS55b+D6ICFID4gbWlrYWlzaGluc2hhXCA7CivnhKHlirnmipXnpaggPiBtdWtvdXRvdWh5b3VcIDsKK+mbo+aUu+S4jeiQvSA+IG5hbmtvdWZ1cmFrdVwgOwor5LiA5b+D5ZCM5L2TID4gaXNzaGluZG91dGFpXCA7CivlrqXlkozmlL/nrZYgPiB5dXV3YXNlaXNha3VcIDsKK+mZkOeVjOWKueeUqCA+IGdlbmthaWtvdXlvdVwgOwor5Y2B5LiH5YSE5ZyfID4ganV1bWFuJydva3Vkb1wgOwor5aSJ5oWL5b+D55CGID4gaGVudGFpc2hpbnJpXCA7Civmi43lrZDoqJjlj7cgPiBoeW91c2hpa2lnb3VcIDsKK+WFrOS8muWVj+etlCA+IGtvdWthaW1vbmRvdVwgOwor6ICD5Y+k5a2m6ICFID4ga291a29nYWt1c2hhXCA7Civph47nkIPpgbjmiYsgPiB5YWt5dXVzZW5zaHVcIDsKK+WkoumBiueXheiAhSA+IG11eXV1YnlvdXNoYVwgOwor6KaB5omA6KaB5omAID4geW91c2hveW91c2hvXCA7Civkvb/lvpLntpnmib8gPiBzaGl0b2tlaXNob3VcIDsKK+WKseejgembu+a1gSA+IHJlaWppZGVucnl1dVwgOwor56S+5Lya5Yi25bqmID4gc2hha2Fpc2VpZG9cIDsKK+S7o+eQhumgmOS6iyA+IGRhaXJpcnlvdWppXCA7CivngrnmlbDliIfnrKYgPiB0ZW5zdXVraXBwdVwgOwor5YyW5oiQ6IKl5paZID4ga2FzZWloaXJ5b3VcIDsKK+acquaIkOW5tOiAhSA+IG1pc2VpbmVuc2hhXCA7CivkuIDlpKnkuIfkuZcgPiBpdHRlbmJhbmpvdVwgOwor6Kaq5a2Q6Zai5L+CID4gb3lha29rYW5rZWlcIDsKK+aBkOaAluaUv+ayuyA+IGt5b3VmdXNlaWppXCA7CivomZrmlbDljZjkvY0gPiBreW9zdXV0YW4nJ2lcIDsKK+mBuOaMmeWItuW6piA+IHNlbmt5b3NlaWRvXCA7CivlpKfpoZjmiJDlsLEgPiBkYWlnYW5qb3VqdVwgOwor5YaG5Y2T5Lya6K2wID4gZW50YWt1a2FpZ2lcIDsKK+Wkp+WuruW+oeaJgCA+IG9vbWl5YWdvc2hvXCA7CivkuIrkuIvplqLkv4IgPiBqb3VnZWthbmtlaVwgOwor5YWs5Za25LyB5qWtID4ga291ZWlraWd5b3VcIDsKK+mHjea2suWIhumboiA+IGp1dWVraWJ1bnJpXCA7Civlrp/ot7XnkIbmgKcgPiBqaXNzZW5yaXNlaVwgOwor6KGM5L2P5Z2Q6IelID4gZ3lvdWp1dXphZ2FcIDsKK+iogOihjOS4gOiHtCA+IGdlbmtvdWl0Y2hpXCA7CivluoPlpKfnhKHovrogPiBrb3VkYWltdWhlblwgOwor5YSq5YWI5LqL6aCFID4geXV1c2Vuamlrb3VcIDsKK+aQuuW4r+mbu+ipsSA+IGtlaXRhaWRlbndhXCA7CivmmYLku6PpjK/oqqQgPiBqaWRhaXNha3Vnb1wgOwor5Lq65bel6KGb5pifID4gamlua291ZWlzZWlcIDsKK+e3muW9oumghuW6jyA+IHNlbmtlaWp1bmpvXCA7CivlpJbkuqTlrpjoo5wgPiBnYWlrb3VrYW5ob1wgOwor5L2P5bGF5omL5b2TID4ganV1a3lvdGVhdGVcIDsKK+mBk+i3r+aomeekuiA+IGRvdXJvaHlvdWppXCA7CivkuojlgpnlsIbmoKEgPiB5b2Jpc2hvdWtvdVwgOwor5rCR6ZaT6aOb6KGMID4gbWlua2FuaGlrb3VcIDsKK+awuOWtkOS9nOaoqSA+IGVpa29zYWt1a2VuXCA7CivnpL7kvJrpgYvli5UgPiBzaGFrYWl1bmRvdVwgOwor56e76KGM6KiI55S7ID4gaWtvdWtlaWtha3VcIDsKK+aOpei/kee1jOi3ryA+IHNla2tpbmtlaXJvXCA7CivkuJbnlYzntYzmuIggPiBzZWthaWtlaXphaVwgOwor5rWu5LiW6I2J5a2QID4gdWtpeW96b3VzaGlcIDsKK+WumuaVsOaYr+atoyA+IHRlaXN1dXplc2VpXCA7Civlronkv53mnaHntIQgPiBhbnBvam91eWFrdVwgOwor6LKp5aOy5YCk5q61ID4gaGFuYmFpbmVkYW5cIDsKK+WfuuW6leani+mAoCA+IGtpdGVpa291em91XCA7Civlv4XpoIjmnaHku7YgPiBoaXNzdWpvdWtlblwgOwor5Yy66KOB5Yik5omAID4ga3VzYWliYW5zaG9cIDsKK+S6iOihjOa8lOe/kiA+IHlva291ZW5zaHV1XCA7CivpgbjmjJnpgYvli5UgPiBzZW5reW91bmRvdVwgOwor5Zu96Zqb6KaP5qihID4ga29rdXNhaWtpYm9cIDsKK+mBi+i7ouWFjeiosSA+IHVudGVubWVua3lvXCA7Civnt5rlvaLoq5bnkIYgPiBzZW5rZWlyb25yaVwgOwor5bm06LOA6YO15L6/ID4gbmVuZ2F5dXViaW5cIDsKK+a4qemiqOaaluaIvyA+IG9ucHV1ZGFuYm91XCA7CivlhoXpg6jmp4vpgKAgPiBuYWlidWtvdXpvdVwgOwor5LiN5a6a5Z6L6KmpID4gZnV0ZWlrZWlzaGlcIDsKK+m7hOmHkeW0h+aLnSA+IG91Z29uc3V1aGFpXCA7CivkuJboqbHlpbPmiL8gPiBzZXdhbnlvdWJvdVwgOwor54qs5YSS5a2m5rS+ID4ga2VuanVnYWt1aGFcIDsKK+S4gOWTgeaWmeeQhiA+IGlwcGlucnlvdXJpXCA7CivkupznoavphbjloakgPiBhcnl1dXNhbicnZW5cIDsKK+acieWjsOWtkOmfsyA+IHl1dXNlaXNoaWluXCA7CivnmoblhbXliLbluqYgPiBrYWloZWlzZWlkb1wgOwor5pyq57WM6aiT6ICFID4gbWlrZWlrZW5zaGFcIDsKK+S4iuaEj+S4i+mBlCA+IGpvdWlrYXRhdHN1XCA7Civou4rplpPot53pm6IgPiBzaGFrYW5reW9yaVwgOwor5rC35rKz5pmC5LujID4gaHlvdWdhamlkYWlcIDsKK+aDheWgseeQhuirliA+IGpvdWhvdXJpcm9uXCA7CivlvqHlpJrlv5nkuK0gPiBnb3RhYm91Y2h1dVwgOwor5oSb5p+T5piO546LID4gYWl6ZW5teW91b3VcIDsKK+W5s+mdouS6pOW3riA+IGhlaW1lbmtvdXNhXCA7CivntYzpqJPkuLvnvqkgPiBrZWlrZW5zaHVnaVwgOwor5byB6K235aOr5LyaID4gYmVuZ29zaGlrYWlcIDsKK+e0lOaDheWPr+aGkCA+IGp1bmpvdWthcmVuXCA7CivovInosqjlkIPmsLQgPiBzYWlrYWtpc3N1aVwgOwor5Y2K5r+B6Z+z56ymID4gaGFuZGFrdW9uZnVcIDsKK+aEm+afk+WmmeeOiyA+IGFpemVubXlvdW91XCA7Civplqjnp4DnlLvlrrYgPiBrZWlzaHV1Z2FrYVwgOwor5LiJ5Y2K6KaP566hID4gc2FuaGFua2lrYW5cIDsKK+WwgeW7uuaZguS7oyA+IGhvdWtlbmppZGFpXCA7Civotorlhqzos4fph5EgPiBldHRvdXNoaWtpblwgOwor5omA5biv6YGT5YW3ID4gc2hvdGFpZG91Z3VcIDsKK+WCsuWyuOeEoeekvCA+IGdvdWdhbmJ1cmVpXCA7CivnpL7kvJrkv53pmbogPiBzaGFrYWlob2tlblwgOwor6LyD5YSq5L2N6KuWID4ga2FrdXl1dWlyb25cIDsKK+S4luirluiqv+afuyA+IHlvcm9uY2hvdXNhXCA7CivlhqzmnJ/kvJHmmocgPiB0b3VraWt5dXVrYVwgOwor5LiK6YOo5qeL6YCgID4gam91YnVrb3V6b3VcIDsKK+ixoeW9ouaWh+WtlyA+IHNob3VrZWltb2ppXCA7CivovrLmnKzkuLvnvqkgPiBub3Vob25zaHVnaVwgOwor5LiA5YiH6KGG55SfID4gaXNzYWlzaHVqb3VcIDsKK+aXp+aFi+S+neeEtiA+IGt5dXV0YWlpemVuXCA7CivmlbTnkIbnlarlj7cgPiBzZWlyaWJhbmdvdVwgOwor5b2T5bqn6LOH55SjID4gdG91emFzaGlzYW5cIDsKK+aui+WTgeaVtOeQhiA+IHphbnBpbnNlaXJpXCA7CivlroflrpnpgJ/luqYgPiB1Y2h1dXNva3Vkb1wgOwor5Yqg5rC05YiG6KejID4ga2FzdWlidW5rYWlcIDsKK+Wuo+S8neS+oeWApCA+IHNlbmRlbmthY2hpXCA7CivlubTlraPlpYnlhawgPiBuZW5raWJvdWtvdVwgOwor6LKo5bmj57WM5riIID4ga2FoZWlrZWl6YWlcIDsKK+eEoeacn+aHsuW9uSA+IG11a2ljaG91ZWtpXCA7CivluILloLTljLrliIYgPiBzaGlqb3VrdWJ1blwgOwor5Yid5pyf6Kit5a6aID4gc2hva2lzZXR0ZWlcIDsKK+S6uumAoOe5iue2rSA+IGppbnpvdXNlbicnaVwgOwor5pmu6YCa6aCQ6YeRID4gZnV0c3V1eW9raW5cIDsKK+S9juWIqeizh+mHkSA+IHRlaXJpc2hpa2luXCA7CivnnJ/nj6DntLDlt6UgPiBzaGluanV6YWlrdVwgOwor5Li755+l5Li7576pID4gc2h1Y2hpc2h1Z2lcIDsKK+S6jOmgheS/guaVsCA+IG5pa291a2Vpc3V1XCA7CivntKDmgKfmp4vpgKAgPiBzb3NlaWtvdXpvdVwgOwor5oSb5Zu95Li7576pID4gYWlrb2t1c2h1Z2lcIDsKK+aIpumXmOaUr+aPtCA+IHNlbnRvdXNoaWVuXCA7CivkurrlkI3ovp7mm7ggPiBqaW5tZWlqaXNob1wgOwor5YmN6Lyq6aeG5YuVID4gemVucmlua3Vkb3VcIDsKK+S+oeagvOaTjeS9nCA+IGtha2FrdXNvdXNhXCA7CivlvaLogIzkuIvlraYgPiBrZWlqaWthZ2FrdVwgOwor5LiA5pyf5LiA5LyaID4gaWNoaWdvaWNoaWVcIDsKK+Wcn+acqOW3peS6iyA+IGRvYm9rdWtvdWppXCA7CivlpbPlrZDpq5jnlJ8gPiBqb3NoaWtvdXNlaVwgOwor546L6YGT5qW95ZyfID4gb3Vkb3VyYWt1ZG9cIDsKK+aCquaIpuiLpumXmCA+IGFrdXNlbmt1dG91XCA7CivnpZ7ntYzlpJbnp5EgPiBzaGlua2VpZ2VrYVwgOwor5LiN55yg5LiN5LyRID4gZnVtaW5mdWt5dXVcIDsKK+WQjeiqieaVmeaOiCA+IG1laXlva3lvdWp1XCA7Civlm7Pmm7jppKjlk6EgPiB0b3Nob2thbicnaW5cIDsKK+mrmOatjOaUvuWQnyA+IGtvdWthaG91Z2luXCA7Civmp4vmiJDljZjkvY0gPiBrb3VzZWl0YW4nJ2lcIDsKK+WkluS6uuiomOiAhSA+IGdhaWppbmtpc2hhXCA7CivkvovlpJblh6bnkIYgPiByZWlnYWlzaG9yaVwgOwor5aSr5amm6Iy256KXID4gbWVvdG9kamF3YW5cIDsKK+WFqOmdouism+WSjCA+IHplbm1lbmtvdXdhXCA7Civnvqnli5nmlZnogrIgPiBnaW11a3lvdWlrdVwgOwor5oKy6Kaz6KuW6ICFID4gaGlrYW5yb25zaGFcIDsKK+WAi+S6uuaDheWgsSA+IGtvamluam91aG91XCA7CivnlLrmrrXnlZ3mrakgPiBjaG91dGFuc2VidVwgOwor5Luj55CG5aSn5L2/ID4gZGFpcml0YWlzaGlcIDsKK+ani+mAoOS4u+e+qSA+IGtvdXpvdXNodWdpXCA7CivlhoXnt5rpm7voqbEgPiBuYWlzZW5kZW53YVwgOwor5YWs56S65L6h5qC8ID4ga291amlrYWtha3VcIDsKK+a2suS9k+mFuOe0oCA+IGVraXRhaXNhbnNvXCA7CivmsoPluqbkuIHlub4gPiB5b3Vkb2NoaW5raVwgOwor5YiR5LqL6Ki06KifID4ga2Vpamlzb3Nob3VcIDsKK+eovOWDjeS6uuWPoyA+IGthZG91amlua291XCA7Civou73mqZ/plqLpioMgPiBrZWlraWthbmp1dVwgOwor5qmf5a+G5L+d6K23ID4ga2ltaXRzdWhvZ29cIDsKK+S6iOWCmeS6pOa4iSA+IHlvYmlrb3VzaG91XCA7CivpgI/oppblm7Pms5UgPiB0b3VzaGl6dWhvdVwgOwor57e057+S6Kmm5ZCIID4gcmVuc2h1dWppYWlcIDsKK+WPr+imluWFiee3miA+IGthc2hpa291c2VuXCA7CivnrYboqJjoqabpqJMgPiBoaWtraXNoaWtlblwgOwor5YWs5a6a55u45aC0ID4ga291dGVpc291YmFcIDsKK+S+oeagvOimj+WItiA+IGtha2FrdWtpc2VpXCA7CivliqDph43lubPlnYcgPiBrYWp1dWhlaWtpblwgOwor5q2m6KOF6K2m5a6YID4gYnVzb3VrZWlrYW5cIDsKK+awtOWtkOS+m+mkiiA+IG1penVnb2t1eW91XCA7CivljYPlpInkuIfljJYgPiBzZW5wZW5iYW5rYVwgOwor5p+75a6a5L6h5qC8ID4gc2F0ZWlrYWtha3VcIDsKK+S4i+WxpOekvuS8miA+IGthc291c2hha2FpXCA7Civoh6rnhLbkuLvnvqkgPiBzaGl6ZW5zaHVnaVwgOwor6IiI5ZGz5pys5L2NID4ga3lvdW1paG9uJydpXCA7CivnhKHkvZPos4fnlKMgPiBtdXRhaXNoaXNhblwgOwor57WM5riI5bCB6Y6WID4ga2VpemFpZnV1c2FcIDsKK+ertuS6ieebuOaJiyA+IGt5b3Vzb3VhaXRlXCA7CivkupTovKrlpKfkvJogPiBnb3JpbnRhaWthaVwgOwor5pel5pys5LiJ5pmvID4gbmlob25zYW5rZWlcIDsKK+ayueaAp+Whl+aWmSA+IHl1c2VpdG9yeW91XCA7CivmlLnoqILlopfoo5wgPiBrYWl0ZWl6b3Vob1wgOwor5LiA6Iis5qaC5b+1ID4gaXBwYW5nYWluZW5cIDsKK+Wwj+S4gOaZgumWkyA+IGtvaWNoaWppa2FuXCA7CivkuInohJrmpIXlrZAgPiBzYW5reWFrdWlzdVwgOwor55qu6Iaa5oSf6KaaID4gaGlmdWthbmtha3VcIDsKK+aoqeWIqeihjOS9vyA+IGtlbnJpa291c2hpXCA7CivmvKLlrZflpInmj5sgPiBrYW5qaWhlbmthblwgOwor54Sh5L2T6LKh55SjID4gbXV0YWl6YWlzYW5cIDsKK+WFqOS9k+S8muitsCA+IHplbnRhaWthaWdpXCA7Civkuozph43mirXlvZMgPiBuaWp1dXRlaXRvdVwgOwor5qmf5qKw5paH5piOID4ga2lrYWlidW5tZWlcIDsKK+Wkqea0peS5meWlsyA+IGFtYXRzdW90b21lXCA7CivliKnlrrPplqLkv4IgPiByaWdhaWthbmtlaVwgOwor5aSa6KeS57WM5Za2ID4gdGFrYWt1a2VpZWlcIDsKK+Wkq+WppuWIpeWnkyA+IGZ1dWZ1YmVzc2VpXCA7Civml6XmnKzoqp7oqLMgPiBuaWhvbmdveWFrdVwgOwor5Lqk5o+b5qmf6IO9ID4ga291a2Fua2lub3VcIDsKK+eUo+WNteWgtOaJgCA+IHNhbnJhbmJhc2hvXCA7CivotbDooYzot53pm6IgPiBzb3Vrb3VreW9yaVwgOwor54Sh5bC957WE5ZCIID4gbXVqaW5rdW1pYWlcIDsKK+WGjeeUn+WIqeeUqCA+IHNhaXNlaXJpeW91XCA7CivoiKrnqbrmr43oiaYgPiBrb3VrdXVib2thblwgOwor5Lq65ZCN6L6e5YW4ID4gamlubWVpaml0ZW5cIDsKK+aYqOmdnuS7iuaYryA+IHNha3VoaWtvbnplXCA7CivmlrDlj6TlhbjmtL4gPiBzaGlua290ZW5oYVwgOwor57WM5Za26LOH5rqQID4ga2VpZWlzaGlnZW5cIDsKK+iiq+Wus+WmhOaDsyA+IGhpZ2FpbW91c291XCA7CivntLDoj4zlhbXlmaggPiBzYWlraW5oZWlraVwgOwor6aO95ZKM5rq25rayID4gaG91d2F5b3Vla2lcIDsKK+S4gOiIrOS8muioiCA+IGlwcGFua2Fpa2VpXCA7Civmupblgpnos4fph5EgPiBqdW5iaXNoaWtpblwgOwor5pS/5YWa5pS/5rK7ID4gc2VpdG91c2VpamlcIDsKK+avjeWtkOW5tOmHkSA+IGJvc2hpbmVua2luXCA7Civnvo7lrrnmlbTlvaIgPiBiaXlvdXNlaWtlaVwgOwor5Yid5pyf5oqV6LOHID4gc2hva2l0b3VzaGlcIDsKK+acgOefrei3nemboiA+IHNhaXRhbmt5b3JpXCA7CivlkajovrrmqZ/lmaggPiBzaHV1aGVua2lraVwgOwor5Yi26ZmQ5pmC6ZaTID4gc2VpZ2VuamlrYW5cIDsKK+WLpOWKtOaEj+assiA+IGtpbnJvdWl5b2t1XCA7CivlgInluqvkvJrnpL4gPiBzb3Vrb2dhaXNoYVwgOwor5pyq6ZaL56S+5LyaID4gbWlrYWlzaGFrYWlcIDsKK+mBjuWkp+ipleS+oSA+IGthZGFpaHlvdWthXCA7CivnoLTlu4nmgaXnvaogPiBoYXJlbmNoaXphaVwgOwor5pmC6ZmQ6KOF572uID4gamlnZW5zb3VjaGlcIDsKK+aZr+awl+WkieWLlSA+IGtlaWtpaGVuZG91XCA7CivkuIDmrKHoqJjmhrYgPiBpY2hpamlraW9rdVwgOwor6KGd5YuV6KGM54K6ID4gc2hvdWRvdWtvdWlcIDsKK+ioseWuueevhOWbsiA+IGt5b3lvdWhhbicnaVwgOwor55Sf55Sj566h55CGID4gc2Vpc2Fua2FucmlcIDsKK+WMu+eZguS8nemBkyA+IGlyeW91ZGVuZG91XCA7CivnqoHosqvlt6XkuosgPiB0b2trYW5rb3VqaVwgOwor6YG46ICD5Z+65rqWID4gc2Vua291a2lqdW5cIDsKK+mDveW4gumKgOihjCA+IHRvc2hpZ2lua291XCA7CivlrqPkvJ3mmKDnlLsgPiBzZW5kZW4nJ2VpZ2FcIDsKK+aFiOWWhOS6i+alrSA+IGppemVuamlneW91XCA7CivliqDpgJ/luqboqIggPiBrYXNva3Vkb2tlaVwgOwor5YKy5oWi5LiN6YGcID4gZ291bWFuZnVzb25cIDsKK+WIkeWLmeS9nOalrSA+IGtlaW11c2FneW91XCA7CivlnLDnkIPopo/mqKEgPiBjaGlreXV1a2lib1wgOwor6YCU5Lit6KiI5pmCID4gdG9jaHV1a2VpamlcIDsKK+mrmOWwhOeJueenkSA+IGtvdXNoYXRva2thXCA7CivkuInpnaLlha3oh4IgPiBzYW5tZW5yb3BwaVwgOwor5b6u5YiG5pat6Z2iID4gYmlidW5kYW5tZW5cIDsKK+WIhuWoqeS9nOeUqCA+IGJ1bmJlbnNheW91XCA7Civkv53lgaXkvZPogrIgPiBob2tlbnRhaWlrdVwgOwor5pq06LWw6YGL6LuiID4gYm91c291dW50ZW5cIDsKK+irruWVj+apn+mWoiA+IHNoaW1vbmtpa2FuXCA7CivnlLDoiI7oip3lsYUgPiBpbmFrYXNoaWJhaVwgOwor55mM6YG65Lyd5a2QID4gZ2FuJydpZGVuc2hpXCA7Civnmb7prLzlpJzooYwgPiBoeWFra2l5YWtvdVwgOwor5rC45bCP5L2c5qipID4gZWlrb3Nha3VrZW5cIDsKK+eEoeatu+a6gOWhgSA+IG11c2hpbWFucnVpXCA7CivkuoznlarmirXlvZMgPiBuaWJhbnRlaXRvdVwgOwor57eP5YuZ6YOo6ZW3ID4gc291bXVidWNob3VcIDsKK+iHqueUseiyv+aYkyA+IGppeXV1Ym91ZWtpXCA7CivlubPlkozmnaHpoIUgPiBoZWl3YWpvdWtvdVwgOwor5rCX5YiG6Lui5o+bID4ga2lidW50ZW5rYW5cIDsKK+WEkuaVmeS4u+e+qSA+IGp1a3lvdXNodWdpXCA7CivlpbPmrYzoiJ7kvI4gPiBvbicnbmFrYWJ1a2lcIDsKK+mjm+ihjOapn+mbsiA+IGhpa291a2lndW1vXCA7Civot6/pnaLpm7vou4ogPiByb21lbmRlbnNoYVwgOwor5Y2Y54us6KGM54K6ID4gdGFuZG9rdWtvdWlcIDsKK+iqoOW/g+iqoOaEjyA+IHNlaXNoaW5zZWlpXCA7Civml6XmnKzmlpnnkIYgPiBuaWhvbnJ5b3VyaVwgOwor5pWF5LqL5p2l5q20ID4ga29qaXJhaXJla2lcIDsKK+WGhei8quWWp+WYqSA+IHVjaGl3YWdlbmthXCA7CivkupznoZ3phbjloakgPiBhc2hvdXNhbicnZW5cIDsKK+S4gOinkueNo+W6pyA+IGlra2FrdWp1dXphXCA7Civlj43kvZPliLbmtL4gPiBoYW50YWlzZWloYVwgOwor5Yy65YqD5pW055CGID4ga3VrYWt1c2VpcmlcIDsKK+aUvuS7u+S4u+e+qSA+IGhvdW5pbnNodWdpXCA7Civpgbrml4/ntabku5ggPiBpem9rdWt5dXVmdVwgOwor5aSJ5L2N5Yi25b6hID4gaGVuJydpc2VpZ3lvXCA7Civmlofpg6jlpKfoh6MgPiBtb25idWRhaWppblwgOwor5aWz5qip6KuW6ICFID4gam9rZW5yb25zaGFcIDsKK+S4i+Wjq+WumOWFtSA+IGthc2hpa2FuaGVpXCA7CivkuK3npoXlr7rmuZYgPiBjaHV1emVuamlrb1wgOwor6KO95ZOB5Y6f5L6hID4gc2VpaGluZ2Vua2FcIDsKK+S6uuawkeS4u+e+qSA+IGppbm1pbnNodWdpXCA7Civli4nlvLfpg6jlsYsgPiBiZW5reW91YmV5YVwgOwor56We5a6u5aSW6IuRID4gamluZ3V1Z2FpZW5cIDsKK+WFqOiIrOaUr+aPtCA+IHplbnBhbnNoaWVuXCA7CivlsJHlo67mnInngrogPiBzaG91c291eXV1aVwgOwor57WM5Y+j5oqV5LiOID4ga2Vpa291dG91eW9cIDsKK+aPm+awl+ijhee9riA+IGthbmtpc291Y2hpXCA7CivlhbHlkozliLbluqYgPiBreW91d2FzZWlkb1wgOwor5LqM6Kqy5YuJ5by3ID4gbmlrYWJlbmt5b3VcIDsKK+S6iOmYsuaOpeeoriA+IHlvYm91c2Vzc2h1XCA7CivnlbDlm73mg4Xnt5IgPiBpa29rdWpvdWNob1wgOwor6YGL6Lui5YGc5q2iID4gdW50ZW50ZWlzaGlcIDsKK+aCquWPo+mbkeiogCA+IGFra291em91Z29uXCA7Civou43ms5XkvJrorbAgPiBndW5wb3VrYWlnaVwgOwor5aSp5Zyw54Sh55SoID4gdGVuY2hpbXV5b3VcIDsKK+eVsOW4uOaAp+assiA+IGlqb3VzZWl5b2t1XCA7Civkurrlt6Xlj5fog44gPiBqaW5rb3VqdXRhaVwgOwor5pel5pys5paH5rOVID4gbmlob25idW5wb3VcIDsKK+S4iuS4i+awtOmBkyA+IGpvdWdlc3VpZG91XCA7CivpioDooYzlj6PluqcgPiBnaW5rb3Vrb3V6YVwgOwor5aSP5pyf5aSn5a2mID4ga2FraWRhaWdha3VcIDsKK+mAo+mCpuitsOS8miA+IHJlbnBvdWdpa2FpXCA7CivmnKvmnJ/nl4fnirYgPiBtYWtraWpvdXRhaVwgOwor5LqU5q615YuV6KmeID4gZ29kYW5kb3VzaGlcIDsKK+eri+azleapn+mWoiA+IHJpcHBvdWtpa2FuXCA7Civlm6Dlvqrlp5Hmga8gPiBpbmp1bmtvc29rdVwgOwor5aSn5bGx5qSS6a2aID4gb29zYW5zaG91dW9cIDsKK+iZjuimlueciOeciCA+IGtvc2hpdGFudGFuXCA7Civog4zpnaLpo5vooYwgPiBoYWltZW5oaWtvdVwgOwor5by+5Li46YGT6LevID4gZGFuZ2FuZG91cm9cIDsKK+WEquWFiOWkluiyqCA+IHl1dXNlbmdhaWthXCA7CivlvZPnlKjmvKLlrZcgPiB0b3V5b3VrYW5qaVwgOwor5rCR5pys5Li7576pID4gbWlucG9uc2h1Z2lcIDsKK+S6uuW3peWPl+e0myA+IGppbmtvdWp1ZnVuXCA7CivkuLvopoHniankvqEgPiBzaHV5b3VidWtrYVwgOwor5Lq65bel5Y+X57K+ID4gamlua291anVzZWlcIDsKK+eZu+Wxsembu+i7iiA+IHRvemFuZGVuc2hhXCA7CivmmqvlrprmlL/lupwgPiB6YW50ZWlzZWlmdVwgOwor5LmX5ZCI6aas6LuKID4gbm9yaWFpYmFzaGFcIDsKK+acn+aIkOWQjOebnyA+IGtpc2VpZG91bWVpXCA7CivmlaPlhYnmmJ/pm7IgPiBzYW5rb3VzZWl1blwgOwor6aOi6aST55mC5rOVID4ga2lnYXJ5b3Vob3VcIDsKK+ezuOWBj+aZr+awlyA+IGl0b2hlbmtlaWtpXCA7CivniankvqHlpInli5UgPiBidWtrYWhlbmRvdVwgOwor6L+R6YOK6YO95biCID4ga2lua291dG9zaGlcIDsKK+WFrOmWi+acn+mWkyA+IGtvdWthaWtpa2FuXCA7CivliY3lvozkuI3oppogPiB6ZW5nb2Z1a2FrdVwgOwor5rqW5YKZ5L2T5pONID4ganVuYml0YWlzb3VcIDsKK+avjeezu+WutuaXjyA+IGJva2Vpa2F6b2t1XCA7Civmra/np5HljLvooZMgPiBzaGlrYWlqdXRzdVwgOwor6YeR566h5qW95ZmoID4ga2lua2FuZ2Fra2lcIDsKK+WIh+eji+eQouejqCA+IHNlc3NhdGFrdW1hXCA7CivkuIDmmYLop6Ppm4cgPiBpY2hpamlrYWlrb1wgOwor6YGL6Lui6LOH6YeRID4gdW50ZW5zaGlraW5cIDsKK+WhkeaAp+mZkOeVjCA+IHNvc2VpZ2Vua2FpXCA7Civph5HmqKnmlL/msrsgPiBraW5rZW5zZWlqaVwgOwor6Ziy5b6h6YOo6ZqKID4gYm91Z3lvYnV0YWlcIDsKK+mdmeatouihm+aYnyA+IHNlaXNoaWVpc2VpXCA7Civlho3luqbljZTorbAgPiBzYWlkb2t5b3VnaVwgOwor5LiA5YiH5ZCI6LKhID4gaXNzYWlnYXNzYWlcIDsKK+mBuueUo+ebuOe2miA+IGlzYW5zb3V6b2t1XCA7CivloZHmgKflpInlvaIgPiBzb3NlaWhlbmtlaVwgOwor5LiA5aSp5Zub5rW3ID4gaXR0ZW5zaGlrYWlcIDsKK+mfs+mfv+WKueaenCA+IG9ua3lvdWtvdWthXCA7CivljZjmnKzkvY3mgKcgPiB0YW5ob24nJ2lzZWlcIDsKK+mbsuaVo+mcp+a2iCA+IHVuc2FubXVzaG91XCA7CivlhajkvZPkuLvnvqkgPiB6ZW50YWlzaHVnaVwgOwor5YGc5q2i5pmC6ZaTID4gdGVpc2hpamlrYW5cIDsKK+S9juepuumjm+ihjCA+IHRlaWt1dWhpa291XCA7CivmlK/luqbpg6jlsYsgPiBzaGl0YWt1YmV5YVwgOwor5Yqg5bel6LK/5piTID4ga2Frb3Vib3Vla2lcIDsKK+ihm+aYn+aUvumAgSA+IGVpc2VpaG91c291XCA7Civpm7vmsJfliIbop6MgPiBkZW5raWJ1bmthaVwgOwor6aKo6Ie05Zyw5Yy6ID4gZnV1Y2hpY2hpa3VcIDsKK+WvhumWieWuueWZqCA+IG1pcHBlaXlvdWtpXCA7CivpgKPluK/lgrXli5kgPiByZW50YWlzYWltdVwgOwor6YeR5Ymb6Jap5aCVID4ga29uZ291c2F0dGFcIDsKK+S4gOS6uuWkqeS4iyA+IGhpdG9yaWRlbmthXCA7CivmmYLplpPlj43ou6IgPiBqaWthbmhhbnRlblwgOwor6KW/5qyn5paH5piOID4gc2Vpb3VidW5tZWlcIDsKK+S4i+mDqOe1hOe5lCA+IGthYnVzb3NoaWtpXCA7Civnm7jkuZflirnmnpwgPiBzb3Vqb3Vrb3VrYVwgOwor5rC05bmz6Led6ZuiID4gc3VpaGVpa3lvcmlcIDsKK+i7jeWCmeaSpOW7gyA+IGd1bmJpdGVwcGFpXCA7Civlm7rmnInlkI3oqZ4gPiBrb3l1dW1laXNoaVwgOwor5Lq66ZaT55aO5aSWID4gbmluZ2Vuc29nYWlcIDsKK+acieapn+WMluWtpiA+IHl1dWtpa2FnYWt1XCA7Civku7LplpPlgKTmrrUgPiBuYWthbWFuZWRhblwgOwor5rip5pWF55+l5pawID4gb25rb2NoaXNoaW5cIDsKK+aal+imluijhee9riA+IGFuc2hpc291Y2hpXCA7Civlm73lrrboqabpqJMgPiBrb2trYXNoaWtlblwgOwor6Z2S5p6c5biC5aC0ID4gc2Vpa2FpY2hpYmFcIDsKK+awkeS6i+ijgeWIpCA+IG1pbmppc2FpYmFuXCA7Civljp/lrZDlhbXlmaggPiBnZW5zaGloZWlraVwgOwor6IKv5a6a5b+c562UID4ga291dGVpb3V0b3VcIDsKK+WkieabtOS4jeiDvSA+IGhlbmtvdWZ1bm91XCA7CivntIDli6LmnKznt5ogPiBraXNlaWhvbnNlblwgOwor6bq76KOP6I2J5bGlID4gYXNhdXJhem91cmlcIDsKK+WPsOa5vuWdiuS4uyA+IHRhaXdhbmJvdXp1XCA7CivlraPliIrpm5HoqowgPiBraWthbnphc3NoaVwgOwor5Y2X6Zi/5oim5LqJID4gbmFuJydhc2Vuc291XCA7CivnhKHnt5rlkajms6IgPiBtdXNlbnNodXVoYVwgOwor6ZW35pyf6YeR5YipID4gY2hvdWtpa2lucmlcIDsKK+mjm+ihjOapn+etiSA+IGhpa291a2luYWRvXCA7CivlgoDlhKHmlL/lupwgPiBrYWlyYWlzZWlmdVwgOwor5biC5aSW6Zu76KmxID4gc2hpZ2FpZGVud2FcIDsKK+mAo+mCpuaUv+W6nCA+IHJlbnBvdXNlaWZ1XCA7CivmlL7mrYzpq5jlkJ8gPiBob3VrYWtvdWdpblwgOwor5b6u6YeP5YWD57SgID4gYmlyeW91Z2Vuc29cIDsKK+iLseWtl+aWsOiBniA+IGVpamlzaGluYnVuXCA7CivmuoDouqvlibXnl40gPiBtYW5zaGluc291aVwgOwor56ys5LqM57WE5ZCIID4gZGFpbmlrdW1pYWlcIDsKK+WppuS6uuitpuWumCA+IGZ1amlua2Vpa2FuXCA7CivnrKzkuInkuJbnlYwgPiBkYWlzYW5zZWthaVwgOwor5q+Y5rKZ6ZaA5aSpID4gYmlzaGFtb250ZW5cIDsKK+ekvuS8muS4u+e+qSA+IHNoYWthaXNodWdpXCA7CivlrabkvY3oq5bmlocgPiBnYWt1aXJvbmJ1blwgOwor56S+5Lqk6L6e5LukID4gc2hha291amlyZWlcIDsKK+W+tOWFteW/jOmBvyA+IGNob3VoZWlraWhpXCA7CivmqZ/kvJrlnYfnrYkgPiBraWthaWtpbnRvdVwgOwor5pqr5a6a5o6q572uID4gemFudGVpc29jaGlcIDsKK+aWueWQkemfs+eXtCA+IGhvdWtvdW9uY2hpXCA7CivkuJbnlYzpioDooYwgPiBzZWthaWdpbmtvdVwgOwor5YWo5qip5aeU5Lu7ID4gemVua2VuJydpbmluXCA7Civoh6rnhLboqIDoqp4gPiBzaGl6ZW5nZW5nb1wgOwor6KqH5aSn5aaE5oOzID4ga29kYWltb3Vzb3VcIDsKK+WMlueyp+mBk+WFtyA+IGtlc2hvdWRvdWd1XCA7CivkuI3lpInos4fmnKwgPiBmdWhlbnNoaWhvblwgOwor6LOe5ZGz5pyf6ZmQID4gc2hvdW1pa2lnZW5cIDsKK+W/g+iHk+WkluenkSA+IHNoaW56b3VnZWthXCA7Civlub7kvZXntJrmlbAgPiBraWtha3l1dXN1dVwgOwor5LiJ6YOo5ZCI5aWPID4gc2FuYnVnYXNzb3VcIDsKK+iSmeWPpOS6uueoriA+IG1vdWtvamluc2h1XCA7Civpm7vmsJfljJblraYgPiBkZW5raWthZ2FrdVwgOwor6LGG6IWQ5LiA5LiBID4gdG91ZnVpdGNob3VcIDsKK+a2iOiyu+mDveW4giA+IHNob3VoaXRvc2hpXCA7CivkuIDkuIDjgIfnlaogPiBoeWFrdXRvb2JhblwgOwor5a625peP5Yi25bqmID4ga2F6b2t1c2VpZG9cIDsKK+eUn+WtmOacn+mWkyA+IHNlaXpvbmtpa2FuXCA7Civph47oia/ku5XkuosgPiBub3Jhc2hpZ290b1wgOwor5pel5LyK6L6e5YW4ID4gbmljaGlpaml0ZW5cIDsKK+S4jeato+S5l+i7iiA+IGZ1c2Vpam91c2hhXCA7Civoqr/mn7vntZDmnpwgPiBjaG91c2FrZWtrYVwgOwor5LiN5b2T5buJ5aOyID4gZnV0b3VyZW5iYWlcIDsKK+a7heWkmuefoumxiCA+IG1ldHRheWF0YXJhXCA7CivliY3kurrmnKrouI8gPiB6ZW5qaW5taXRvdVwgOwor5LiN5b2T5Yip5b6XID4gZnV0b3VyaXRva3VcIDsKK+WbnuaVmeWvuumZoiA+IGthaWt5b3VqaWluXCA7Civou43kuovoqJPnt7QgPiBndW5qaWt1bnJlblwgOwor57eP5ZCI5Y+j5bqnID4gc291Z291a291emFcIDsKK+mDoeecjOWItuW6piA+IGd1bmtlbnNlaWRvXCA7Civkvb/nlKjlj6/og70gPiBzaGl5b3VrYW5vdVwgOwor5YaF6YOo55WZ5L+dID4gbmFpYnVyeXV1aG9cIDsKK+WGjeiyqeWItuW6piA+IHNhaWhhbnNlaWRvXCA7CivooqvpgbjmjJnmqKkgPiBoaXNlbmt5b2tlblwgOwor54mp5L6h57Wx5Yi2ID4gYnVra2F0b3VzZWlcIDsKK+WboOaVsOWIhuinoyA+IGluc3V1YnVua2FpXCA7CivnlJ/nlJ/mtYHou6IgPiBzZWlzZWlydXRlblwgOwor54Sh55+l6JKZ5pinID4gbXVjaGltb3VtYWlcIDsKK+WgleiQveWdiuS4uyA+IGRhcmFrdWJvdXp1XCA7CivoiJ7lj7Dluqbog7ggPiBidXRhaWRva3lvdVwgOwor5rOw6KW/5ZCN55S7ID4gdGFpc2VpbWVpZ2FcIDsKK+azleayu+WbveWutiA+IGhvdWNoaWtva2thXCA7CivlhKrlhYjpoIbkvY0gPiB5dXVzZW5qdW4nJ2lcIDsKK+WNmOS9jee1hOWQiCA+IHRhbicnaWt1bWlhaVwgOwor566h55CG5oOF5aCxID4ga2Fucmlqb3Vob3VcIDsKK+WujOWFqOS4u+e+qSA+IGthbnplbnNodWdpXCA7CivkuIPkuI3mgJ3orbAgPiBuYW5hZnVzaGlnaVwgOwor5aCx5b6p6KGM54K6ID4gaG91ZnVrdWtvdWlcIDsKK+Wuo+S8neaWh+WPpSA+IHNlbmRlbm1vbmt1XCA7CivkuozmiJDmlofns7sgPiBuaXNlaWJ1bmtlaVwgOwor5L2T5YaF5pmC6KiIID4gdGFpbmFpZG9rZWlcIDsKK+WMuueUu+aVtOeQhiA+IGt1a2FrdXNlaXJpXCA7CivntYLlpJzpgYvou6IgPiBzaHV1eWF1bnRlblwgOwor5Yqg6YCf6YGL5YuVID4ga2Fzb2t1dW5kb3VcIDsKK+WvvuaKl+mDqOmaiiA+IHRhaWtvdWJ1dGFpXCA7CivntZDlqZrosrvnlKggPiBrZWtrb25oaXlvdVwgOwor6LuN5LqL5pS/5qipID4gZ3VuamlzZWlrZW5cIDsKK+acieapn+i+suazlSA+IHl1dWtpbm91aG91XCA7CivpmLLooZvpg6jplbcgPiBib3VlaWJ1Y2hvdVwgOwor6YGL5Za26LOH6YeRID4gdW4nJ2Vpc2hpa2luXCA7CivmnIjopovolY7puqYgPiB0c3VraW1pc29iYVwgOwor5Lq655Sf6Iiq6LevID4gamluc2Vpa291cm9cIDsKK+eUn+WRveS/nemZuiA+IHNlaW1laWhva2VuXCA7Civlv5zmgKXmiYvlvZMgPiBvdWt5dXV0ZWF0ZVwgOwor5pyJ5b2i54Sh5b2iID4geXV1a2VpbXVrZWlcIDsKK+WPl+S/oeWbnui3ryA+IGp1c2hpbmthaXJvXCA7Civlj4LogIPlm7Pmm7ggPiBzYW5rb3V0b3Nob1wgOwor6Iux6ZuE5bSH5oudID4gZWl5dXVzdXVoYWlcIDsKK+WPl+mok+eVquWPtyA+IGp1a2VuYmFuZ291XCA7Civph43ovrLkuLvnvqkgPiBqdXVub3VzaHVnaVwgOwor6K235Zu956We56S+ID4gZ29rb2t1amluamFcIDsKK+aYjuayu+elnuWuriA+IG1laWppamluZ3V1XCA7CivlsJHmlbDmhI/oposgPiBzaG91c3V1aWtlblwgOwor5q+U57+86YCj55CGID4gaGl5b2t1cmVucmlcIDsKK+acieacn+W5tOmHkSA+IHl1dWtpbmVua2luXCA7CivkuozlhYPmlL7pgIEgPiBuaWdlbmhvdXNvdVwgOwor6Ieq5L+h6YGO5YmwID4gamlzaGlua2Fqb3VcIDsKK+Wliee0jeebuOaSsiA+IGhvdW5vdXp1bW91XCA7CivkurrouqvlvqHkvpsgPiBoaXRvbWlnb2t1dVwgOwor5L+d6K235qSc5p2fID4gaG9nb2tlbnNva3VcIDsKK+WIhuecjOWcsOWbsyA+IGJ1bmtlbmNoaXp1XCA7CivpmL/oq5vov73lvpMgPiBheXV0c3Vpc2hvdVwgOwor6Zu75YWJ55+z54GrID4gZGVua291c2Vra2FcIDsKK+azoueAvuS4h+S4iCA+IGhhcmFuYmFuam91XCA7Civnm7jkupLplqLkv4IgPiBzb3Vnb2thbmtlaVwgOwor5YaF6YOo5LuV5qeYID4gbmFpYnVzaGl5b3VcIDsKK+earuS4i+azqOWwhCA+IGhpa2FjaHV1c2hhXCA7Civkub7nh6Xph47oj5wgPiBrYW5zb3V5YXNhaVwgOwor55+t5qmf6Zai6YqDID4gdGFua2lrYW5qdXVcIDsKK+ePvuWcsOaZgumWkyA+IGdlbmNoaWppa2FuXCA7CivkuIDnrYnou43mm7kgPiBpdHRvdWd1bnNvdVwgOwor5a625bqt55So5ZOBID4ga2F0ZWl5b3VoaW5cIDsKK+mJseWxseaKgOW4qyA+IGtvdXphbmdpc2hpXCA7CivkuIDlrZDnm7jkvJ0gPiBpc3NoaXNvdWRlblwgOwor5pmC6ZmQ56uL5rOVID4gamlnZW5yaXBwb3VcIDsKK+aEm+WIpembouiLpiA+IGFpYmV0c3VyaWt1XCA7Civlm7rlrpros4fnlKMgPiBrb3RlaXNoaXNhblwgOwor5ZKM54us6L6e5YW4ID4gd2Fkb2t1aml0ZW5cIDsKK+eZu+agoeaLkuWQpiA+IHRvdWtvdWt5b2hpXCA7CivmvJTlpY/ml4XooYwgPiBlbnNvdXJ5b2tvdVwgOwor5pu455S76aqo6JGjID4gc2hvZ2Frb3R0b3VcIDsKK+mBi+WLlemBuOaJiyA+IHVuZG91c2Vuc2h1XCA7CivlrablnJLpg73luIIgPiBnYWt1ZW50b3NoaVwgOwor5p2x5rSL5Li7576pID4gdG91eW91c2h1Z2lcIDsKK+Wkp+miqOWRguaVtyA+IG9vYnVyb3NoaWtpXCA7CivmnInok4vosqjou4ogPiB5dXVnYWlrYXNoYVwgOwor5pS/5rK76LOH6YeRID4gc2VpamlzaGlraW5cIDsKK+iogOirluapn+mWoiA+IGdlbnJvbmtpa2FuXCA7CivppIrorbflrabmoKEgPiB5b3Vnb2dha2tvdVwgOwor6LWw6KGM5pmC6ZaTID4gc291a291amlrYW5cIDsKK+ipleS+oeWfuua6liA+IGh5b3VrYWtpanVuXCA7CivmlrDogZ7oqJjkuosgPiBzaGluYnVua2lqaVwgOwor5aSr5ZSx5amm6ZqPID4gZnVzaG91ZnV6dWlcIDsKK+mbu+WtkOi+nuabuCA+IGRlbnNoaWppc2hvXCA7CivlkIzmmYLpjLLpn7MgPiBkb3VqaXJva3VvblwgOwor566h55CG56S+5LyaID4ga2FucmlzaGFrYWlcIDsKK+S4gOimluWQjOS7gSA+IGlzc2hpZG91amluXCA7CivkuIDoppblkIzkurogPiBpc3NoaWRvdWppblwgOwor5qeL6YCg5aSJ5YyWID4ga291em91aGVua2FcIDsKK+Wls+a1geS9nOWutiA+IGpvcnl1dXNha2thXCA7CivvvJHvvJHvvJDnlaogPiBoeWFrdXRvb2JhblwgOwor5Y+45rOV5Yi25bqmID4gc2hpaG91c2VpZG9cIDsKK+WLpOWLmeS6pOS7oyA+IGtpbm11a291dGFpXCA7Civnn63nt6jmmKDnlLsgPiB0YW5wZW4nJ2VpZ2FcIDsKK+S8muWToeimj+e0hCA+IGthaWlua2l5YWt1XCA7CivkuozngrnlhYjlj5YgPiBuaXRlbnNlbnNodVwgOwor5Y+N5oim5Li7576pID4gaGFuc2Vuc2h1Z2lcIDsKK+aatOiZjummruaysyA+IGJvdWtvaHlvdWdhXCA7Civlt6bohZXmipXmiYsgPiBzYXdhbnRvdXNodVwgOwor5YmN5pyf6Kmm6aiTID4gemVua2lzaGlrZW5cIDsKK+iiq+mBuOaMmeS6uiA+IGhpc2Vua3lvbmluXCA7Civog4zlvozplqLkv4IgPiBoYWlnb2thbmtlaVwgOwor6aST6ay85aSn5bCGID4gZ2FraWRhaXNob3VcIDsKK+eVquWPt+iomOWPtyA+IGJhbmdvdWtpZ291XCA7CivliJHkuovoo5zlhJ8gPiBrZWlqaWhvc2hvdVwgOwor5LiA5L2T5YWo5L2TID4gaXR0YWl6ZW50YWlcIDsKK+a1t+mBi+WQjOebnyA+IGthaXVuZG91bWVpXCA7CivlsILlrojpmLLooZsgPiBzZW5zaHVib3VlaVwgOwor5Y2X6Zi/6YCj6YKmID4gbmFuJydhcmVucG91XCA7CivnmbrooYzpg6jmlbAgPiBoYWtrb3VidXN1dVwgOwor5YiR5LqL6KOB5YikID4ga2VpamlzYWliYW5cIDsKK+WFrOW5s+eEoeengSA+IGtvdWhlaW11c2hpXCA7CivniankvqHmjIfmlbAgPiBidWtrYXNoaXN1dVwgOwor5YiR5LqL6KKr5ZGKID4ga2VpamloaWtva3VcIDsKK+iomOiAheS8muimiyA+IGtpc2hha2Fpa2VuXCA7CivlvpPou43oqJjogIUgPiBqdXVndW5raXNoYVwgOwor56m65rCX5oq15oqXID4ga3V1a2l0ZWlrb3VcIDsKK+ePvumHkeato+S+oSA+IGdlbmtpbnNlaWthXCA7CivlpKflkIzlsI/nlbAgPiBkYWlkb3VzaG91aVwgOwor55Sf5ZG95YCr55CGID4gc2VpbWVpcmlucmlcIDsKK+mnhuWLleijhee9riA+IGt1ZG91c291Y2hpXCA7CivljYPou43kuIfppqwgPiBzZW5ndW5iYW5iYVwgOwor5aSJ5bm76Ieq5ZyoID4gaGVuZ2Vuaml6YWlcIDsKK+ebuOWvvuS4u+e+qSA+IHNvdXRhaXNodWdpXCA7Civou43ljLvlrabmoKEgPiBndW4nJ2lnYWtrb3VcIDsKK+mDveawkeS8mumkqCA+IHRvbWlua2Fpa2FuXCA7CivluILloLTkvqHlgKQgPiBzaGlqb3VrYWNoaVwgOwor5bmz5ZKM6KuW6ICFID4gaGVpd2Fyb25zaGFcIDsKK+Wwv+e0oOaoueiEgiA+IG55b3Vzb2p1c2hpXCA7CivmjoPpmaTlvZPnlaogPiBzb3VqaXRvdWJhblwgOwor5Luj55CG5oim5LqJID4gZGFpcmlzZW5zb3VcIDsKK+WcsOebpOayiOS4iyA+IGppYmFuY2hpbmthXCA7Civmp4vmiJDkuLvnvqkgPiBrb3VzZWlzaHVnaVwgOwor5q2j5aSa6Z2i5L2TID4gc2VpdGFtZW50YWlcIDsKK+S4gOWIh+WQiOWIhyA+IGlzc2FpZ2Fzc2FpXCA7Civkv53nqI7lnLDln58gPiBob3plaWNoaWlraVwgOwor5Lq65ZOh5pW055CGID4gamluJydpbnNlaXJpXCA7CivkurrplpPku6XliY0gPiBuaW5nZW4nJ2l6ZW5cIDsKK+W5s+mdouWbs+W9oiA+IGhlaW1lbnp1a2VpXCA7Civlroflrpnml4XooYwgPiB1Y2h1dXJ5b2tvdVwgOwor6I2Y5ZyS5Yi25bqmID4gc2hvdWVuc2VpZG9cIDsKK+iHquekvuijveWTgSA+IGppc2hhc2VpaGluXCA7CivliJ3mnJ/mrrXpmo4gPiBzaG9raWRhbmthaVwgOwor5YmN6YCU6YG86YGgID4gemVudG9yeW91ZW5cIDsKK+i1pOiRoeiQhOmFkiA+IGFrYWJ1ZG91c2h1XCA7Civljp/lp4vmmYLku6MgPiBnZW5zaGlqaWRhaVwgOwor5Y+C6KyA5pys6YOoID4gc2FuYm91aG9uYnVcIDsKK+Wls+WtkOWkp+eUnyA+IGpvc2hpZGFpc2VpXCA7CivmjpLlpJbpgYvli5UgPiBoYWlnYWl1bmRvdVwgOwor5rC05bmz6aOb6KGMID4gc3VpaGVpaGlrb3VcIDsKK+S9juWbnui2o+WRsyA+IHRlaWthaXNodW1pXCA7CivkupLmgbXosr/mmJMgPiBnb2tlaWJvdWVraVwgOwor5Lq66ZaT5Lul5LiKID4gbmluZ2VuJydpam91XCA7CivlgrLmhaLnhKHnpLwgPiBnb3VtYW5idXJlaVwgOwor5b6S5omL56m65ouzID4gdG9zaHVrdXVrZW5cIDsKK+S6nOeCreWMlueJqSA+IGF0YW5rYWJ1dHN1XCA7CivmsLTms7PlpKfkvJogPiBzdWllaXRhaWthaVwgOwor55S35aWz5ZCM5qipID4gZGFuam9kb3VrZW5cIDsKK+W5tOmHkeWItuW6piA+IG5lbmtpbnNlaWRvXCA7Civnqbrou43ln7rlnLAgPiBrdXVndW5raWNoaVwgOwor5aSn5ZKM5pmC5LujID4geWFtYXRvamlkYWlcIDsKK+W4neeOi+WIh+mWiyA+IHRlaW91c2Vra2FpXCA7Civlj43mlL/lupzlhZogPiBoYW5zZWlmdXRvdVwgOwor6JmO6KaW55yI44CFID4ga29zaGl0YW50YW5cIDsKK+atr+enkeeXhemZoiA+IHNoaWthYnlvdWluXCA7CivovInosqjlsa/mlbAgPiBzYWlrYXRvbnN1dVwgOwor6KuW6Kqs5aeU5ZOhID4gcm9uc2V0c3VpaW5cIDsKK+WLneaJi+asoeesrCA+IGthdHRlc2hpZGFpXCA7CivnqbrmjLrpmorlk6EgPiBrdXV0ZWl0YWlpblwgOwor6Ieq55Sx57WM5riIID4gaml5dXVrZWl6YWlcIDsKK+iyoeaUv+egtOe2uyA+IHphaXNlaWhhdGFuXCA7CivmlL/msrvnjK7ph5EgPiBzZWlqaWtlbmtpblwgOwor5omL6ZaT5LuV5LqLID4gdGVtYXNoaWdvdG9cIDsKK+S4gOacrOWLneiyoCA+IGlwcG9uc2hvdWJ1XCA7CivkuK3pgJTljYrnq68gPiBjaHV1dG9oYW5wYVwgOwor6YCa6YGO5YSA56S8ID4gdHN1dWthZ2lyZWlcIDsKK+iLseWtl+mbhuWQiCA+IGVpamlzaHV1Z291XCA7CivnvbLlkI3pgYvli5UgPiBzaG9tZWl1bmRvdVwgOwor5aGR5oCn5oyH5pWwID4gc29zZWlzaGlzdXVcIDsKK+WQiOWQjOWKtOe1hCA+IGdvdWRvdXJvdXNvXCA7CivkuLvnrqHmqZ/plqIgPiBzaHVrYW5raWthblwgOwor5aSp5rCX6YO95ZCIID4gdGVua2l0c3Vnb3VcIDsKK+WFteWZqOW3peWgtCA+IGhlaWtpa291am91XCA7CivlubPmsJHkuLvnvqkgPiBoZWltaW5zaHVnaVwgOwor5a625peP5Lya6K2wID4ga2F6b2t1a2FpZ2lcIDsKK+a4m+WCteWfuumHkSA+IGdlbnNhaWtpa2luXCA7CivnpZblhYjltIfmi50gPiBzb3NlbnN1dWhhaVwgOwor5LqL5aSn5oCd5oOzID4gamlkYWlzaGlzb3VcIDsKK+WcsOWgtOeUo+alrSA+IGppYmFzYW5neW91XCA7CivpgKPpgqblm73lrrYgPiByZW5wb3Vrb2trYVwgOwor56uL5oay5Li7576pID4gcmlra2Vuc2h1Z2lcIDsKK+WFq+aWuee+juS6uiA+IGhhcHBvdWJpamluXCA7CivkuJbnlYzmg4Xli6IgPiBzZWthaWpvdXNlaVwgOwor5LiN5b+r5oyH5pWwID4gZnVrYWlzaGlzdXVcIDsKK+mBoOa0i+iIqui3ryA+IGVuJyd5b3Vrb3Vyb1wgOwor5Zu95a6257WM5riIID4ga29ra2FrZWl6YWlcIDsKK+iHqOaZguWil+WIiiA+IHJpbmppem91a2FuXCA7CivlhazmrablkIjkvZMgPiBrb3VidWdhdHRhaVwgOwor5LqI6K6a5pys57eaID4geW9zYW5ob25zZW5cIDsKK+agueacrOS4u+e+qSA+IGtvbnBvbnNodWdpXCA7CivpnZ7luLjorabmiJIgPiBoaWpvdWtlaWthaVwgOwor5Lit5aSu5pS/5bqcID4gY2h1dW91c2VpZnVcIDsKK+WIuueKtueqgei1tyA+IHNoaWpvdXRva2tpXCA7CivlhaznmoTmibbliqkgPiBrb3V0ZWtpZnVqb1wgOwor5ZCI5oiQ5qi56ISCID4gZ291c2VpanVzaGlcIDsKK+WJsuizpuizvOiytyA+IGthcHB1a291YmFpXCA7CivmnKrmnaXmjIflkJEgPiBtaXJhaXNoaWtvdVwgOwor6Ieq55Sx5pS+5Lu7ID4gaml5dXVob3VuaW5cIDsKK+iHqui7ouWRqOacnyA+IGppdGVuc2h1dWtpXCA7Civoh6rlt7HkuLvlvLUgPiBqaWtvc2h1Y2hvdVwgOwor5Y2D6KiA5LiH6KqeID4gc2VuZ2VuYmFuZ29cIDsKK+W+kuatqeertui1sCA+IHRvaG9reW91c291XCA7CivopqrlloToqablkIggPiBzaGluemVuamlhaVwgOwor56qS57Sg5Zu65a6aID4gY2hpc3Nva290ZWlcIDsKK+a1t+S4iuS/nemZuiA+IGthaWpvdWhva2VuXCA7Civpo5vooYznlLLmnb8gPiBoaWtvdWtvdWJhblwgOwor5oyH5bCO5Li75LqLID4gc2hpZG91c2h1amlcIDsKK+ebuOS6kumKgOihjCA+IHNvdWdvZ2lua291XCA7Civou43lj7jku6Tpg6ggPiBndW5zaGlyZWlidVwgOwor6Ku45LqL5LiH56uvID4gc2hvamliYW50YW5cIDsKK+WKtOeBveS/nemZuiA+IHJvdXNhaWhva2VuXCA7CivmmYLovKrph5HliZsgPiBqaXJpbmtvbmdvdVwgOwor5oSP5rCX6Yq35rKIID4gaWtpc2hvdWNoaW5cIDsKK+mWoueojuWbnumBvyA+IGthbnplaWthaWhpXCA7CivmhI/msJfmtojmsoggPiBpa2lzaG91Y2hpblwgOwor5YmN5Lq65pyq5YiwID4gemVuamlubWl0b3VcIDsKK+WFseWSjOS4u+e+qSA+IGt5b3V3YXNodWdpXCA7CivkuojpmLLmiKbkuokgPiB5b2JvdXNlbnNvdVwgOwor6YW45oCn5Zyf5aOMID4gc2Fuc2VpZG9qb3VcIDsKK+S6uui6q+S/neittyA+IGppbnNoaW5ob2dvXCA7CivlubTph5Hkv53pmbogPiBuZW5raW5ob2tlblwgOwor5oyH5ZCR6KiA6KqeID4gc2hpa291Z2VuZ29cIDsKK+W3oeafu+mDqOmVtyA+IGp1bnNhYnVjaG91XCA7Civkv53oqLzmnJ/plpMgPiBob3Nob3VraWthblwgOwor5LiN5rOV55uj56aBID4gZnVob3VrYW5raW5cIDsKK+W+oeiLpuWKtOanmCA+IGdva3Vyb3VzYW1hXCA7CivooYzkvY/luqfoh6UgPiBneW91anV1emFnYVwgOwor6Ieq5rK75aSn6IejID4gamljaGlkYWlqaW5cIDsKK+eri+S9k+S6pOW3riA+IHJpdHRhaWtvdXNhXCA7Civnq5zpoK3om4flsL4gPiByeXV1dG91ZGFiaVwgOwor5YWF6Zu75pyf6ZaTID4ganV1ZGVua2lrYW5cIDsKK+iomOaGtuWqkuS9kyA+IGtpb2t1YmFpdGFpXCA7CivppIrorbfmlZnoq60gPiB5b3Vnb2t5b3V5dVwgOwor5Lq65pys5Li7576pID4gamlucG9uc2h1Z2lcIDsKK+a1t+a0i+aKleajhCA+IGthaXlvdXRvdWtpXCA7CivlkozmrYzlsbHnnIwgPiB3YWtheWFtYWtlblwgOwor5aSq6Zm96Zu75rOiID4gdGFpeW91ZGVucGFcIDsKK+eQhuenkeWkp+WtpiA+IHJpa2FkYWlnYWt1XCA7Civov5HooZvluKvlm6MgPiBrb25vZXNoaWRhblwgOwor5LiA6KGj5biv5rC0ID4gaWNoaWl0YWlzdWlcIDsKK+izh+acrOS4u+e+qSA+IHNoaWhvbnNodWdpXCA7Civoh6rnlLHntZDlqZogPiBqaXl1dWtla2tvblwgOwor5b+F6aCI56eR55uuID4gaGlzc3VrYW1va3VcIDsKK+i/keS7o+S4u+e+qSA+IGtpbmRhaXNodWdpXCA7CivlrojorbflpKnkvb8gPiBzaHVnb3RlbnNoaVwgOwor5L2c5qWt6YOo5LyaID4gc2FneW91YnVrYWlcIDsKK+mDveW4guWGjeeUnyA+IHRvc2hpc2Fpc2VpXCA7CivlubznlJ/lmajlrpggPiB5b3VzZWlraWthblwgOwor5b6h55So57WE5ZCIID4gZ295b3VrdW1pYWlcIDsKK+i7jeS6i+a8lOe/kiA+IGd1bmppZW5zaHV1XCA7CivkurrpgZPkuLvnvqkgPiBqaW5kb3VzaHVnaVwgOwor5YmN5Y+y5pmC5LujID4gemVuc2hpamlkYWlcIDsKK+a1t+S4iuWwgemOliA+IGthaWpvdWZ1dXNhXCA7CivmhI/lkbPmt7HplbcgPiBpbWlzaGluY2hvdVwgOwor5Lqk6YCa6YGV5Y+NID4ga291dHN1dWloYW5cIDsKK+Wbm+WNgeWFq+aJiyA+IHlvbmp1dWhhdHRlXCA7CivmiYvlt7vlr7/lj7ggPiB0ZW1ha2l6dXNoaVwgOwor5YWs6ZaL6Kyb5bqnID4ga291a2Fpa291emFcIDsKK+eJh+iogOmau+WPpSA+IGhlbmdlbnNla2t1XCA7Civpq5jplqLnqI7ljJYgPiBrb3VrYW56ZWlrYVwgOwor6YGL6YCB5Lya56S+ID4gdW5zb3VnYWlzaGFcIDsKK+adseWuruW+oeaJgCA+IHRvdWd1dWdvc2hvXCA7Civlu7bmu57liKnmga8gPiBlbnRhaXJpc29rdVwgOwor54Gr54G96K2m5aCxID4ga2FzYWlrZWlob3VcIDsKK+e3j+aMh+aPruWumCA+IHNvdXNoaWtpa2FuXCA7CivmlL7pgIHmmYLplpMgPiBob3Vzb3VqaWthblwgOwor5pyJ5a6z54Sh55uKID4geXV1Z2FpbXVla2lcIDsKK+WppuS6uuWVj+mhjCA+IGZ1amlubW9uZGFpXCA7CivmmbTogJXpm6joqq0gPiBzZWlrb3V1ZG9rdVwgOwor5bCK55qH5pSY5aS3ID4gc29uJydub3Vqb3VpXCA7CivkuI3mlofmhrLms5UgPiBmdWJ1bmtlbnBvdVwgOwor5LiA5a+45rOV5birID4gaXNzdW5ib3VzaGlcIDsKK+WPr+iDveWLleipniA+IGthbm91ZG91c2hpXCA7Civlj6TkuovmnaXmrbQgPiBrb2ppcmFpcmVraVwgOwor5a6M5YWo6ZuH55SoID4ga2FuemVua295b3VcIDsKK+WJr+m8u+iFlOeCjiA+IGZ1a3ViaWt1dWVuXCA7CivlpJrlhYPmlL7pgIEgPiB0YWdlbmhvdXNvdVwgOwor5rCX5oGv5aWE5aWEID4ga2lzb2t1ZW4nJ2VuXCA7Civph4jov6blpoLmnaUgPiBzaGFrYW55b3JhaVwgOwor5LqI57SE5ZCN57C/ID4geW95YWt1bWVpYm9cIDsKK+S4jeiyt+WQjOebnyA+IGZ1YmFpZG91bWVpXCA7CivpnZ7osrflkIznm58gPiBoaWJhaWRvdW1laVwgOwor55u45a++5pWs6KqeID4gc291dGFpa2VpZ29cIDsKK+e1jOa4iOeJueWMuiA+IGtlaXphaXRva2t1XCA7Civku7vmhI/lm6PkvZMgPiBuaW4nJ2lkYW50YWlcIDsKK+aOpeaVteenu+WLlSA+IHNldHRla2lpZG91XCA7CivpsKXlr6HlraTni6wgPiBrYW5rYWtvZG9rdVwgOwor55u45a++5aOy6LK3ID4gYWl0YWliYWliYWlcIDsKK+eEoeS6uuW3peWgtCA+IG11amlua291am91XCA7CivkuI3mj5vntJnluaMgPiBmdWthbnNoaWhlaVwgOwor55u45LmX5L2c55SoID4gc291am91c2F5b3VcIDsKK+S6iOeul+S4jei2syA+IHlvc2FuZnVzb2t1XCA7CivolqznkIbkvZznlKggPiB5YWt1cmlzYXlvdVwgOwor54K65pu/566h55CGID4ga2F3YXNla2FucmlcIDsKK+S6i+WJjeWNlOitsCA+IGppc2Vua3lvdWdpXCA7CivljprpoZTnhKHmgaUgPiBrb3VnYW5tdWNoaVwgOwor5a6J5YWo6KOF572uID4gYW56ZW5zb3VjaGlcIDsKK+epuuawl+aEn+afkyA+IGt1dWtpa2Fuc2VuXCA7CivmsLTpgZPlt6XkuosgPiBzdWlkb3Vrb3VqaVwgOwor5LiA57SZ5Y2K6YqtID4gaXNzaGloYW5zZW5cIDsKK+WPjeWwhOmBi+WLlSA+IGhhbnNoYXVuZG91XCA7CivloanpoZ7murbmtrIgPiBlbnJ1aXlvdWVraVwgOwor5aSW5Lq66YOo6ZqKID4gZ2FpamluYnV0YWlcIDsKK+aLnemHkeS4u+e+qSA+IGhhaWtpbnNodWdpXCA7CivnlbDkvZPlkIzlv4MgPiBpdGFpZG91c2hpblwgOwor5LmX5pWw5Yq55p6cID4gam91c3V1a291a2FcIDsKK+WFqOebm+aZguS7oyA+IHplbnNlaWppZGFpXCA7CivpnaLlkJHkuI3og4wgPiBtZW5rb3VmdWhhaVwgOwor56m655CG56m66KuWID4ga3V1cmlrdXVyb25cIDsKK+mdnuW4uOmajuautSA+IGhpam91a2FpZGFuXCA7Civlgrfnl43ou43kurogPiBzaG91aWd1bmppblwgOwor5pyI6LOm6LKp5aOyID4gZ2VwcHVoYW5iYWlcIDsKK+S4h+S4luS4gOezuyA+IGJhbnNlaWlra2VpXCA7CivnrKzkuozpg6jplbcgPiBkYWluaWJ1Y2hvdVwgOwor6KGM5YSA5L2c5rOVID4gZ3lvdWdpc2Fob3VcIDsKK+mHjeWKoOeul+eojiA+IGp1dWthc2FuemVpXCA7CivkuIDlv4PkuI3kubEgPiBpc3NoaW5mdXJhblwgOwor6LuN5LqL6KOB5YikID4gZ3VuamlzYWliYW5cIDsKK+eFp+aYjuWZqOWFtyA+IHNob3VtZWlraWd1XCA7CivlsY3pmYDmnpfnjosgPiBzaGlkYXJpbicnb3VcIDsKK+mBjuWOu+WujOS6hiA+IGtha29rYW5yeW91XCA7CivmiKblvozmrKflt54gPiBzZW5nb291c2h1dVwgOwor6aaW6ISz5Lya6K2wID4gc2h1bm91a2FpZ2lcIDsKK+WutuW6reaWmeeQhiA+IGthdGVpcnlvdXJpXCA7Civml6XmnKzpioDooYwgPiBuaWhvbmdpbmtvdVwgOwor6YGg5Lqk6L+R5pS7ID4gZW5rb3VraW5rb3VcIDsKK+aXi+WbnumBi+WLlSA+IHNlbmthaXVuZG91XCA7CivluLDlm73lrZDlpbMgPiBraWtva3VzaGlqb1wgOwor6ZuM6ZuE5reY5rGwID4gc2hpeXV1dG91dGFcIDsKK+mKgOacrOS9jeWItiA+IGdpbmhvbicnaXNlaVwgOwor6Ieq5qWt6Ieq5b6XID4gamlnb3VqaXRva3VcIDsKK+S4u+agvOijnOiqniA+IHNodWtha3Vob2dvXCA7CivlgpjlvaLlmajlrpggPiBzYW5rZWlraWthblwgOwor6Zu75YyW6KO95ZOBID4gZGVua2FzZWloaW5cIDsKK+izh+eUo+S+oeWApCA+IHNoaXNhbmthY2hpXCA7CivkuK3lpK7nq7bppqwgPiBjaHV1b3VrZWliYVwgOwor6LWk5a2X6LKh5pS/ID4gYWthaml6YWlzZWlcIDsKK+aUv+ayu+S6oeWRvSA+IHNlaWppYm91bWVpXCA7CivkupTljYHlubTnpa0gPiBnb2p1dW5lbnNhaVwgOwor6YG65peP5bm06YeRID4gaXpva3VuZW5raW5cIDsKK+S6uuW3peaghOmkiiA+IGppbmtvdWVpeW91XCA7Civmk6zlj6TlhbjnmoQgPiBnaWtvdGVudGVraVwgOwor6Zu75rCX5Lya56S+ID4gZGVua2lnYWlzaGFcIDsKK+awl+maj+awl+WEmCA+IGtpenVpa2ltYW1hXCA7CivnhKHlj43li5XpioMgPiBtdWhhbmRvdWp1dVwgOwor6YGg5b+D5YiG6ZuiID4gZW5zaGluYnVucmlcIDsKK+WgtOWklummrOWIuCA+IGpvdWdhaWJha2VuXCA7CivpnZLlubTmmYLku6MgPiBzZWluZW5qaWRhaVwgOwor6Ieq55Sx5ZWP6aGMID4gaml5dXVtb25kYWlcIDsKK+a8q+eUu+mbkeiqjCA+IG1hbmdhemFzc2hpXCA7CivkupzpiZvkuK3mr5IgPiBhZW5jaHV1ZG9rdVwgOwor56WW5YWI5Lyd5p2lID4gc29zZW5kZW5yYWlcIDsKK+S4gOWFmuaUr+mFjSA+IGl0dG91c2hpaGFpXCA7CivkuLvoprPkuLvnvqkgPiBzaHVrYW5zaHVnaVwgOwor5ZG85ZC45Zmo57O7ID4ga29reXV1a2lrZWlcIDsKK+eCuuabv+aKleapnyA+IGthd2FzZXRvdWtpXCA7CivkuIDnn6XljYrop6MgPiBpdGNoaWhhbmthaVwgOwor5LiN5a6a5Yag6KmeID4gZnV0ZWlrYW5zaGlcIDsKK+S7o+itsOaUv+S9kyA+IGRhaWdpc2VpdGFpXCA7CivlubPlkozmlLvli6IgPiBoZWl3YWtvdXNlaVwgOwor5L2O5L6h5qC85YyWID4gdGVpa2FrYWt1a2FcIDsKK+iCmOaOm+akheWtkCA+IGhpamlrYWtlaXN1XCA7Civlhazli5nngb3lrrMgPiBrb3VtdXNhaWdhaVwgOwor5pmv5rCX5b6q55KwID4ga2Vpa2lqdW5rYW5cIDsKK+mWouS/guazleimjyA+IGthbmtlaWhvdWtpXCA7Civos4DoqZ7kuqTmj5sgPiBnYXNoaWtvdWthblwgOwor6ICV5Zyw5pW055CGID4ga291Y2hpc2VpcmlcIDsKK+ihqOijj+S4gOS9kyA+IGh5b3VyaWl0dGFpXCA7CivlpbTpmrfop6PmlL4gPiBkb3JlaWthaWhvdVwgOwor6Zi/5aSa56aP6LGGID4gb3RhZnVrdW1hbWVcIDsKK+S8gealreaVtOWCmSA+IGtpZ3lvdXNlaWJpXCA7Civou43kuovooYzli5UgPiBndW5qaWtvdWRvdVwgOwor5Zyw5pa56Ieq5rK7ID4gY2hpaG91amljaGlcIDsKK+S4luS/l+S4u+e+qSA+IHNlem9rdXNodWdpXCA7Civpq5jngq3ntKDpi7wgPiBrb3V0YW5zb2tvdVwgOwor5pyJ5qmf6IKl5paZID4geXV1a2loaXJ5b3VcIDsKK+avlOS+i+mFjeWIhiA+IGhpcmVpaGFpYnVuXCA7Civlj43lr77pgYvli5UgPiBoYW50YWl1bmRvdVwgOwor5re75LuY5pu46aGeID4gdGVucHVzaG9ydWlcIDsKK+aBi+aEm+mBiuaIryA+IHJlbicnYWl5dXVnaVwgOwor5oqV5bCE5Y6f55CGID4gdG91c2hhZ2VucmlcIDsKK+Wkp+iogOWjruiqniA+IHRhaWdlbnNvdWdvXCA7Civph5HmnKzkvY3liLYgPiBraW5ob24nJ2lzZWlcIDsKK+mAoOiqnuaIkOWIhiA+IHpvdWdvc2VpYnVuXCA7Civnmb7np5Hovp7lhbggPiBoeWFra2FqaXRlblwgOwor5LiH5Luj5LiN5piTID4gYmFuZGFpZnVla2lcIDsKK+WNsemZuuinkuW6piA+IGtpa2Vua2FrdWRvXCA7CivljJblrablhbXlmaggPiBrYWdha3VoZWlraVwgOwor5ryi5a2X5Yi26ZmQID4ga2FuamlzZWlnZW5cIDsKK+W5tOWKn+WItuW6piA+IG5lbmtvdXNlaWRvXCA7CivmtbflupXngavlsbEgPiBrYWl0ZWlrYXphblwgOwor6ZqU6Z205o6755eSID4ga2Fra2Fzb3V5b3VcIDsKK+mdnuaIpuirluiAhSA+IGhpc2Vucm9uc2hhXCA7CivkuIfkuJbkuI3mmJMgPiBiYW5zZWlmdWVraVwgOwor5YaN55Sf57mK57atID4gc2Fpc2Vpc2VuJydpXCA7CivpgYvou6Lns7vntbEgPiB1bnRlbmtlaXRvdVwgOwor5Lu75oSP5ZCM6KGMID4gbmluJydpZG91a291XCA7Civoh6jmmYLlm73kvJogPiByaW5qaWtva2thaVwgOwor6Kmm6aiT5pyf6ZaTID4gc2hpa2Vua2lrYW5cIDsKK+W5tOWKn+WKoOS/uCA+IG5lbmtvdWthaG91XCA7Civlv5zmj7Tlm6PplbcgPiBvdWVuZGFuY2hvdVwgOwor6LuN5Yy757eP55ujID4gZ3VuJydpc291a2FuXCA7CivmhYjlloTlm6PkvZMgPiBqaXplbmRhbnRhaVwgOwor6Ieq57+S5pmC6ZaTID4gamlzaHV1amlrYW5cIDsKK+WbveWutuijnOWEnyA+IGtva2thaG9zaG91XCA7Civnm5vogIXlv4XoobAgPiBzZWlqYWhpc3N1aVwgOwor5Lq65paH5Li7576pID4gamluYnVuc2h1Z2lcIDsKK+mbu+ipseeVquWPtyA+IGRlbndhYmFuZ291XCA7CivnkIboq5bkvZPns7sgPiByaXJvbnRhaWtlaVwgOwor5pel5pys5rW35rqdID4gbmlob25rYWlrb3VcIDsKK+e1jOW4uOWIqeebiiA+IGtlaWpvdXJpZWtpXCA7CivlvJXosqzovp7ku7sgPiBpbnNla2lqaW5pblwgOwor5Yem5aWz6Iiq5rW3ID4gc2hvam9rb3VrYWlcIDsKK+S4gOi7kuS4gOi7kiA+IGlra2VuJydpa2tlblwgOwor5ZWP562U54Sh55SoID4gbW9uZG91bXV5b3VcIDsKK+mBi+WRveirluiAhSA+IHVubWVpcm9uc2hhXCA7Civoj5znqK7mooXpm6ggPiBuYXRhbmVkenV5dVwgOwor6Kqy5aSW5o6I5qWtID4ga2FnYWlqdWd5b3VcIDsKK+mbo+awkeW4sOmChCA+IG5hbm1pbmtpa2FuXCA7Civlgbblg4/noLTlo4ogPiBndXV6b3VoYWthaVwgOwor5oyH56S66KOF572uID4gc2hpamlzb3VjaGlcIDsKK+WuieWFqOWcsOW4ryA+IGFuemVuY2hpdGFpXCA7Civoh6rlt7HopIfoo70gPiBqaWtvZnVrdXNlaVwgOwor5LuW5Lq66KGM5YSAID4gdGFuaW5neW91Z2lcIDsKK+WIpOWumOi0lOWxkyA+IGhvdWdhbmJpaWtpXCA7CivlnKfmkL7nqbrmsJcgPiBhc3Nha3VrdXVraVwgOwor5YGl5bq3566h55CGID4ga2Vua291a2FucmlcIDsKK+ippumok+mjm+ihjCA+IHNoaWtlbmhpa291XCA7CivnlJ/nlKPpgY7libAgPiBzZWlzYW5rYWpvdVwgOwor55Sf55CG5LyR5pqHID4gc2VpcmlreXV1a2FcIDsKK+S6pOmam+WgtOijjyA+IGtvdXNhaWpvdXJpXCA7CivosYrogqXmnKznt5ogPiBob3VoaWhvbnNlblwgOwor5Yik5pat6KaP5rqWID4gaGFuZGFua2lqdW5cIDsKK+awl+aBr+WlhOOAhSA+IGtpc29rdWVuJydlblwgOwor5Yik5pat5Z+65rqWID4gaGFuZGFua2lqdW5cIDsKK+Wkqeizh+iLsemCgSA+IHRlbnNoaWVpbWFpXCA7CivmirXmipfpgYvli5UgPiB0ZWlrb3V1bmRvdVwgOwor6YO15L6/5YiH5omLID4geXV1Ymlua2l0dGVcIDsKK+eUsOWckumDveW4giA+IGRlbicnZW50b3NoaVwgOwor6KGj5paZ5ZOB5bqXID4gaXJ5b3VoaW50ZW5cIDsKK+S6jOmDqOWQiOWUsSA+IG5pYnVnYXNzaG91XCA7Civpm7vlrZDpoK3ohLMgPiBkZW5zaGl6dW5vdVwgOwor5Ymy6LOm6LKp5aOyID4ga2FwcHVoYW5iYWlcIDsKK+mqqOiRo+i2o+WRsyA+IGtvdHRvdXNodW1pXCA7Civou43lgpnliLbpmZAgPiBndW5iaXNlaWdlblwgOwor6YGL5YuV5LiN6LazID4gdW5kb3VidXNva3VcIDsKK+WItumZkOa8ouWtlyA+IHNlaWdlbmthbmppXCA7CivnhKHlj43li5XnoLIgPiBtdWhhbmRvdWhvdVwgOwor5Y6f5Zug5LiN5piOID4gZ2VuJydpbmZ1bWVpXCA7Civou73oh6rli5Xou4ogPiBrZWlqaWRvdXNoYVwgOwor5Y6f5a2Q5pmC5LujID4gZ2Vuc2hpamlkYWlcIDsKK+eLkOeWkemAoeW3oSA+IGtvZ2lzaHVuanVuXCA7CivnqIvluqbllY/poYwgPiB0ZWlkb21vbmRhaVwgOwor6KaP5a6a5omT5bitID4ga2l0ZWlkYXNla2lcIDsKK+miqOe0gOe0iuS5sSA+IGZ1dWtpYmlucmFuXCA7CivluILlj4LkuovkvJogPiBzaGlzYW5qaWthaVwgOwor6KiY5oa26KOF572uID4ga2lva3Vzb3VjaGlcIDsKK+mbu+awl+S8neWwjiA+IGRlbmtpZGVuZG91XCA7CivmtbflpJbmtL7lhbUgPiBrYWlnYWloYWhlaVwgOwor5aSp6LOm5Lq65qipID4gdGVucHVqaW5rZW5cIDsKK+aHuOWegumBi+WLlSA+IGtlbnN1aXVuZG91XCA7CivnpZ7np5jkuLvnvqkgPiBzaGlucGlzaHVnaVwgOwor6YGg5oWu5Lya6YeIID4gZW5yeW9lc2hha3VcIDsKK+aal+WPt+aJi+azlSA+IGFuZ291c2h1aG91XCA7CivpgYvovLjlpKfoh6MgPiB1bicneXVkYWlqaW5cIDsKK+mdnuirlueQhueahCA+IGhpcm9ucml0ZWtpXCA7Civlj7Pnv7zlm6PkvZMgPiB1eW9rdWRhbnRhaVwgOwor5L+d5YGl6KGb55SfID4gaG9rZW4nJ2Vpc2VpXCA7Civnm5flk4HmlYXosrcgPiB0b3VoaW5rb2JhaVwgOwor6Z2Z5q2i6LuM6YGTID4gc2Vpc2hpa2lkb3VcIDsKK+aFtuaHiee+qeWhviA+IGtlaW91Z2lqdWt1XCA7Civlv6vliIDkubHpursgPiBrYWl0b3VyYW5tYVwgOwor6Iez6L+R6Led6ZuiID4gc2hpa2lua3lvcmlcIDsKK+aQjeWus+S/nemZuiA+IHNvbmdhaWhva2VuXCA7Civmp4vmiJDopoHntKAgPiBrb3VzZWl5b3Vzb1wgOwor5Y2U6K2w5LqL6aCFID4ga3lvdWdpamlrb3VcIDsKK+iInuWPsOS/s+WEqiA+IGJ1dGFpaGFpeXV1XCA7CivljbHmqZ/kuIDpq6ogPiBraWtpaXBwYXRzdVwgOwor5Yy75a2m6ZuR6KqMID4gaWdha3V6YXNzaGlcIDsKK+eJqeS+oeawtOa6liA+IGJ1a2thc3VpanVuXCA7CivotaTljYHlrZfpmYQgPiBzZWtpanV1amlmdVwgOwor5om26aSK5a625pePID4gZnV5b3VrYXpva3VcIDsKK+eri+aGsuaUv+ayuyA+IHJpa2tlbnNlaWppXCA7Civkurrlt6Xoh5PlmaggPiBqaW5rb3V6b3VraVwgOwor56Wt5pS/5LiA6Ie0ID4gc2Fpc2VpaXRjaGlcIDsKK+S4jeiogOWun+ihjCA+IGZ1Z2Vuamlra291XCA7Civku5Xkuovpg6jlsYsgPiBzaGlnb3RvYmV5YVwgOwor5oiQ5Lq65pig55S7ID4gc2VpamluJydlaWdhXCA7Civoh6rnlLHllrbmpa0gPiBqaXl1dWVpZ3lvdVwgOwor5qiZ5rqW6Kqk5beuID4gaHlvdWp1bmdvc2FcIDsKK+S5s+WFkOiEmuawlyA+IG55dXVqaWtha2tlXCA7Civou43pnIDlt6XloLQgPiBndW5qdWtvdWpvdVwgOwor55u45Yqg5bmz5Z2HID4gc291a2FoZWlraW5cIDsKK+eyl+ijveS5semAoCA+IHNvc2VpcmFuem91XCA7CivlvqHlkI3lvqHnkr0gPiBneW9tZWlneW9qaVwgOwor5paH5rK75Li7576pID4gYnVuY2hpc2h1Z2lcIDsKK+iHqueEtua3mOaxsCA+IHNoaXplbnRvdXRhXCA7CivlrrblroXmjZzmn7sgPiBrYXRha3Vzb3VzYVwgOwor5pei5oiQ5qaC5b+1ID4ga2lzZWlnYWluZW5cIDsKK+aVtOWCmeW3peWgtCA+IHNlaWJpa291am91XCA7Civlr77nqbrnoLLngasgPiB0YWlrdXVob3VrYVwgOwor5rue56m65pmC6ZaTID4gdGFpa3V1amlrYW5cIDsKK+iyv+aYk+i1pOWtlyA+IGJvdWVraWFrYWppXCA7CivkuIDoqIDlsYXlo6sgPiBpY2hpZ2Vua29qaVwgOwor5bGL5LiK5bqt5ZySID4gb2t1am91dGVpZW5cIDsKK+mfs+WjsOihqOiomCA+IG9uc2VpaHlvdWtpXCA7Civlr6nnvo7kuLvnvqkgPiBzaGluYmlzaHVnaVwgOwor5b+c55So5ZWP6aGMID4gb3V5b3Vtb25kYWlcIDsKK+S6kuaBtemWoueojiA+IGdva2Vpa2FuemVpXCA7Civou5/mgKfkuIvnlrMgPiBuYW5zZWlnZWthblwgOwor5Zu96Kqe6L6e5YW4ID4ga29rdWdvaml0ZW5cIDsKK+WFrOiqjeWAmeijnCA+IGtvdW5pbmtvdWhvXCA7CivnlJ/lubTmnIjml6UgPiBzZWluZW5nYXBwaVwgOwor5aWH562W57im5qiqID4ga2lzYWt1anV1b3VcIDsKK+WFieWtpuaWh+WtlyA+IGtvdWdha3Vtb2ppXCA7CivlgZzou4rmmYLplpMgPiB0ZWlzaGFqaWthblwgOwor5YWx5ZKM5pS/5rK7ID4ga3lvdXdhc2VpamlcIDsKK+WbveW6q+WCteaoqSA+IGtva2tvc2Fpa2VuXCA7Civlo7DluK/mqKHlhpkgPiBzZWl0YWltb3NoYVwgOwor5pyA5aSn6ZmQ5bqmID4gc2FpZGFpZ2VuZG9cIDsKK+WFq+WIhumfs+espiA+IGhhY2hpYnVvbnB1XCA7Civku67mg7PnqbrplpMgPiBrYXNvdWt1dWthblwgOwor5bmz5oiQ5pmC5LujID4gaGVpc2VpamlkYWlcIDsKK+WIqeebiuekvuS8miA+IHJpZWtpc2hha2FpXCA7Civlrrbluq3oqKrllY8gPiBrYXRlaWhvdW1vblwgOwor6JaE5Yip5aSa5aOyID4gaGFrdXJpdGFiYWlcIDsKK+awkeS4u+S4u+e+qSA+IG1pbnNodXNodWdpXCA7CivlpbPmgKflkI3oqZ4gPiBqb3NlaW1laXNoaVwgOwor5oSb5oaO5L215a2YID4gYWl6b3VoZWlzb25cIDsKK+WPjeWwhOS9nOeUqCA+IGhhbnNoYXNheW91XCA7CivmnInkuovnq4vms5UgPiB5dXVqaXJpcHBvdVwgOwor55m65aOw5Zmo5a6YID4gaGFzc2Vpa2lrYW5cIDsKK+WpmuekvOiho+ijhSA+IGtvbnJlaWlzaG91XCA7CivkuK3lpK7nqoHnoLQgPiBjaHV1b3V0b3BwYVwgOwor5LiJ6aCt5pS/5rK7ID4gc2FudG91c2VpamlcIDsKK+WNsemZuuWcsOW4ryA+IGtpa2VuY2hpdGFpXCA7CivljJblrabkvZznlKggPiBrYWdha3VzYXlvdVwgOwor54Sh6ZaT5Zyw542EID4gbXVnZW5qaWdva3VcIDsKK+W+gOW+qeWIh+espiA+IG91ZnVrdWtpcHB1XCA7CivlrZjlnKjnkIbnlLEgPiBzb256YWlyaXl1dVwgOwor6Z2e56S+5Lqk55qEID4gaGlqYWtvdXRla2lcIDsKK+WwgeW7uuWItuW6piA+IGhvdWtlbnNlaWRvXCA7CivkurrouqvkuovmlYUgPiBqaW5zaGluamlrb1wgOwor5YWs6ZaL5o2c5p+7ID4ga291a2Fpc291c2FcIDsKK+aIkeeUsOW8leawtCA+IGdhZGVuJydpbnN1aVwgOwor5YuV5L2c6KiY6YyyID4gZG91c2FraXJva3VcIDsKK+aIkOWxpOeBq+WxsSA+IHNlaXNvdWthemFuXCA7CivliKnnm4rphY3lvZMgPiByaWVraWhhaXRvdVwgOwor5LiA5omA5oe45ZG9ID4gaXNzaG9rZW5tZWlcIDsKK+a6kOazieiqsueojiA+IGdlbnNlbmthemVpXCA7CivmlL/msrvntZDnpL4gPiBzZWlqaWtlc3NoYVwgOwor6aiO6aas5rCR5pePID4ga2liYW1pbnpva3VcIDsKK+malOS4lumBuuS8nSA+IGtha3VzZWlpZGVuXCA7Civlj6TpgZPlhbflsYsgPiBmdXJ1ZG91Z3V5YVwgOwor5ZC55aWP5qW95ZmoID4gc3Vpc291Z2Fra2lcIDsKK+apn+mKg+aOg+WwhCA+IGtpanV1c291c2hhXCA7CivmrablrrblsYvmlbcgPiBidWtleWFzaGlraVwgOwor552h55yg5pmC6ZaTID4gc3VpbWluamlrYW5cIDsKK+eEoeiomOWQjeagqiA+IG11a2ltZWlrYWJ1XCA7Civkuovli5nnt4/plbcgPiBqaW11c291Y2hvdVwgOwor5Li75rK75Yq56IO9ID4gc2h1amlrb3Vub3VcIDsKK+Wkqea0peW+oeelliA+IGFtYXRzdW1pb3lhXCA7CivmsJfosaHooZvmmJ8gPiBraXNob3VlaXNlaVwgOwor5pyJ5Yq55pyf6ZmQID4geXV1a291a2lnZW5cIDsKK+i+suWltOino+aUviA+IG5vdWRva2FpaG91XCA7Civlv4Poh5Ppurvnl7ogPiBzaGluem91bWFoaVwgOwor6YWU55Sf5aSi5q27ID4gc3Vpc2VpbXVzaGlcIDsKK+acieWKueacn+mWkyA+IHl1dWtvdWtpZ2VuXCA7CivnhKHms5XlnLDluK8gPiBtdWhvdWNoaXRhaVwgOwor6KGX6aCt5Yuf6YeRID4gZ2FpdG91Ym9raW5cIDsKK+iNkuWUkOeEoeeovSA+IGtvdXRvdW11a2VpXCA7CivmoITppIrkuI3otrMgPiBlaXlvdWZ1c29rdVwgOwor5ZCN6KqJ5biC5rCRID4gbWVpeW9zaGltaW5cIDsKK+i7jeS6i+WQjOebnyA+IGd1bmppZG91bWVpXCA7CivmnInlirnkvZznlKggPiB5dXVrb3VzYXlvdVwgOwor5YWI6YGj6YOo6ZqKID4gc2Vua2VuYnV0YWlcIDsKK+WYieiogOWWhOihjCA+IGthZ2VuemVua291XCA7CivlkIjlkIzkvJrorbAgPiBnb3Vkb3VrYWlnaVwgOwor6LW35q275Zue55SfID4ga2lzaGlrYWlzZWlcIDsKK+mAj+imlueUu+azlSA+IHRvdXNoaWdhaG91XCA7CivnhKHpiq3ml4XooYwgPiBtdXNlbnJ5b2tvdVwgOwor5L+d5a6J6Kit5YKZID4gaG9hbnNldHN1YmlcIDsKK+WGhemDqOmXmOS6iSA+IG5haWJ1dG91c291XCA7CivkuI3mraPono3os4cgPiBmdXNlaXl1dXNoaVwgOwor5ryi6Iux6L6e5YW4ID4ga2FuJydlaWppdGVuXCA7CivpoJjlnJ/kv53lhaggPiByeW91ZG9ob3plblwgOwor54Sh5LqL5oGv54G9ID4gYnVqaXNva3VzYWlcIDsKK+aMh+WQjeaJi+mFjSA+IHNoaW1laXRlaGFpXCA7CivpgYropqfpo5vooYwgPiB5dXVyYW5oaWtvdVwgOwor5Y+X6aiT5Zyw542EID4ganVrZW5qaWdva3VcIDsKK+itpuWCmeW8t+WMliA+IGtlaWJpa3lvdWthXCA7Civlv4PnkIbkuLvnvqkgPiBzaGlucmlzaHVnaVwgOwor6Zui5ama6Ki06KifID4gcmlrb25zb3Nob3VcIDsKK+mfs+iok+e0ouW8lSA+IG9ua3Vuc2FrdWluXCA7CivljbHpmbrlm6DlrZAgPiBraWtlbicnaW5zaGlcIDsKK+i2hemBjuWLpOWLmSA+IGNob3VrYWtpbm11XCA7CivpgLLmrankuLvnvqkgPiBzaGlucG9zaHVnaVwgOwor5L+d5YWo5Lya56S+ID4gaG96ZW5rYWlzaGFcIDsKK+iHquW3see0ueS7iyA+IGppa29zaG91a2FpXCA7CivkurrpgZPmlK/mj7QgPiBqaW5kb3VzaGllblwgOwor5biM5bCR5L6h5YCkID4ga2lzaG91a2FjaGlcIDsKK+WppuS6uuenkeWtpiA+IGZ1amlua2FnYWt1XCA7CivmlK/mj7Tlm6PkvZMgPiBzaGllbmRhbnRhaVwgOwor5a6H5a6Z56m66ZaTID4gdWNodXVrdXVrYW5cIDsKK+WMlueyp+eFieeTpiA+IGtlc2hvdXJlbmdhXCA7Civml6nmnJ/nmbroposgPiBzb3VraWhha2tlblwgOwor6Ieq54S25rK755mSID4gc2hpemVuY2hpeXVcIDsKK+S4jeWPr+efpeeahCA+IGZ1a2FjaGl0ZWtpXCA7CivoqLToqJ/osrvnlKggPiBzb3Nob3VoaXlvdVwgOwor54G95a6z5L+d6Zm6ID4gc2FpZ2FpaG9rZW5cIDsKK+Wkp+WZqOaZqeaIkCA+IHRhaWtpYmFuc2VpXCA7CivmlbDnj6DkuIDpgKMgPiBqdXp1aWNoaXJlblwgOwor5paH5piO6ZaL5YyWID4gYnVubWVpa2Fpa2FcIDsKK+WPjeWLleS4u+e+qSA+IGhhbmRvdXNodWdpXCA7CivmlL/lupzpq5jlrpggPiBzZWlmdWtvdWthblwgOwor5Lqs6YO95bqc6K2mID4ga3lvdXRvZnVrZWlcIDsKK+WLpOeOi+aUmOWktyA+IGtpbicnbm91am91aVwgOwor56m65oy66YOo6ZqKID4ga3V1dGVpYnV0YWlcIDsKK+WkmuWjq+a4iOa4iCA+IHRhc2hpc2Vpc2VpXCA7CivkuI3lmajnlKjogIUgPiBidWtpeW91bW9ub1wgOwor5YW156uZ5Z+65ZywID4gaGVpdGFua2ljaGlcIDsKK+acieeQhumWouaVsCA+IHl1dXJpa2Fuc3V1XCA7CivkvY7lvorotqPlkbMgPiB0ZWlrYWlzaHVtaVwgOwor5Lq65bel6aCt6ISzID4gamlua291enVub3VcIDsKK+WNgeWFremfs+espiA+IGp1dXJva3VvbnB1XCA7CivlpYfmg7PlpKnlpJYgPiBraXNvdXRlbmdhaVwgOwor5YaF5a656KaL5pysID4gbmFpeW91bWlob25cIDsKK+aWmeeQhumBk+WFtyA+IHJ5b3VyaWRvdWd1XCA7CivlpKflnI/oiKrot68gPiB0YWlrZW5rb3Vyb1wgOwor5rqW5YKZ566h5Yi2ID4ganVuYmlrYW5zZWlcIDsKK+S4u+iEs+S8muitsCA+IHNodW5vdWthaWdpXCA7CivpmaPpoK3mjIfmj64gPiBqaW50b3VzaGlraVwgOwor6IeT5Zmo56e75qSNID4gem91a2lpc2hva3VcIDsKK+WfuuacrOamguW/tSA+IGtpaG9uZ2FpbmVuXCA7CivkvJrorbDml6XnqIsgPiBrYWlnaW5pdHRlaVwgOwor5YWs5a6a5Zyw5L6hID4ga291dGVpY2hpa2FcIDsKK+WfuuekjueglOeptiA+IGtpc29rZW5reXV1XCA7CivnkrDlooPmsZrmn5MgPiBrYW5reW91b3NlblwgOwor55aR5b+D5pqX6ay8ID4gZ2lzaGluJydhbmtpXCA7Civnt4/nkIblpKfoh6MgPiBzb3VyaWRhaWppblwgOwor6Ieq5bex5rqA6LazID4gamlrb21hbnpva3VcIDsKK+e1tuWvvuS4u+e+qSA+IHpldHRhaXNodWdpXCA7CivmraPlkbPlgKTmrrUgPiBzaG91bWluZWRhblwgOwor5YCL5Lq65pWZ5o6IID4ga29qaW5reW91anVcIDsKK+WwkeWjruawl+mLrSA+IHNob3Vzb3VraWVpXCA7CivmnbHkupzoq7jlm70gPiB0b3Vhc2hva29rdVwgOwor5ZaH5Y+t5rC05LuZID4gcmFwcGF6dWlzZW5cIDsKK+Wun+ihjOWPr+iDvSA+IGppa2tvdWthbm91XCA7CivkuovliY3pgYvli5UgPiBqaXplbicndW5kb3VcIDsKK+WkluadpeaCo+iAhSA+IGdhaXJhaWthbmphXCA7Civpgb/pm6PoqJPnt7QgPiBoaW5hbmt1bnJlblwgOwor6LKp5aOy6YOo6ZaAID4gaGFuYmFpYnVtb25cIDsKK+WKtOWDjemBi+WLlSA+IHJvdWRvdXVuZG91XCA7CivmupblgpnpioDooYwgPiBqdW5iaWdpbmtvdVwgOwor5bm557ea6YGT6LevID4ga2Fuc2VuZG91cm9cIDsKK+S4jemAj+aYjuaApyA+IGZ1dG91bWVpc2VpXCA7CivliqDlnKfmsLTngokgPiBrYWF0c3VzdWlyb1wgOwor5bm05pyf5aWJ5YWsID4gbmVua2lib3Vrb3VcIDsKK+ihqOmfs+aWh+WtlyA+IGh5b3Vvbm1vbmppXCA7CivmjIflkI3miZPogIUgPiBzaGltZWlkYXNoYVwgOwor57eP5Y+45Luk6YOoID4gc291c2hpcmVpYnVcIDsKK+S8nee1seS4u+e+qSA+IGRlbnRvdXNodWdpXCA7CivkuLvopoHpg73luIIgPiBzaHV5b3V0b3NoaVwgOwor5L2O5rip5q666I+MID4gdGVpb25zYWtraW5cIDsKK+Wkq+WppumWouS/giA+IGZ1dWZ1a2Fua2VpXCA7CivkvZzmpa3mmYLplpMgPiBzYWd5b3VqaWthblwgOwor6Z2e5bi45omL5q61ID4gaGlqb3VzaHVkYW5cIDsKK+WwguWItuaUv+ayuyA+IHNlbnNlaXNlaWppXCA7CivmmKDnlLvnm6PnnaMgPiBlaWdha2FudG9rdVwgOwor5r+D5reh55S75YOPID4gbm91dGFuZ2F6b3VcIDsKK+eBr+eBq+euoeWItiA+IHRvdWtha2Fuc2VpXCA7Civph43opoHkuovpoIUgPiBqdXV5b3VqaWtvdVwgOwor6Z2e5bi45ZG86ZuGID4gaGlqb3Vrb3NodXVcIDsKK+eri+WAmeijnOiAhSA+IHJpa2tvdWhvc2hhXCA7CivmtYTljJboo4Xnva4gPiBqb3VrYXNvdWNoaVwgOwor5b6h55Sf5oaO5qeYID4gb2FpbmlrdXNhbWFcIDsKK+S6uuWToea3mOaxsCA+IGppbicnaW50b3V0YVwgOwor5Lqk6YCa5LqL5pWFID4ga291dHN1dWppa29cIDsKK+Wbm+i8qumnhuWLlSA+IHlvbnJpbmt1ZG91XCA7Civku6PnkIblhazkvb8gPiBkYWlyaWtvdXNoaVwgOwor5aSW5YuZ5aSn6IejID4gZ2FpbXVkYWlqaW5cIDsKK+mHjuaIpuegsuWFtSA+IHlhc2VuaG91aGVpXCA7CivlnLDlkI3ovp7lhbggPiBjaGltZWlqaXRlblwgOwor5LiN5YuV55Sj5bGLID4gZnVkb3VzYW4nJ3lhXCA7CivkvZPmhJ/muKnluqYgPiB0YWlrYW4nJ29uZG9cIDsKK+ims+WFiemDveW4giA+IGthbmtvdXRvc2hpXCA7CivlkIzmgKfmhJvogIUgPiBkb3VzZWlhaXNoYVwgOwor6YOo6ZqK5pKk6YCAID4gYnV0YWl0ZXR0YWlcIDsKK+WNlOitsOS8muWToSA+IGt5b3VnaWthaWluXCA7CivllZPokpnpgYvli5UgPiBrZWltb3V1bmRvdVwgOwor5LqA55Sy5qih5qeYID4ga2lra291bW95b3VcIDsKK+ihm+eUn+eKtuaFiyA+IGVpc2Vpam91dGFpXCA7Civpjpblm73kuLvnvqkgPiBzYWtva3VzaHVnaVwgOwor5Zmo55So6LKn5LmPID4ga2l5b3ViaW5ib3VcIDsKK+ecvOeyvueWsuWKtCA+IGdhbnNlaWhpcm91XCA7CivlrqPkvJ3mqZ/plqIgPiBzZW5kZW5raWthblwgOwor5L2V5pmC5L2V5pmCID4gaXRzdW5hbmRva2lcIDsKK+awkeaoqeS4u+e+qSA+IG1pbmtlbnNodWdpXCA7CivlubTmrKHnt4/kvJogPiBuZW5qaXNvdWthaVwgOwor5rip5Y+k55+l5pawID4gb25rb2NoaXNoaW5cIDsKK+eEoeWEn+S6pOS7mCA+IG11c2hvdWtvdWZ1XCA7Civnn63mnJ/miYvlvaIgPiB0YW5raXRlZ2F0YVwgOwor5YaF5YuZ5aSn6IejID4gbmFpbXVkYWlqaW5cIDsKK+S4gOS4luS4gOS7oyA+IGlzc2VpY2hpZGFpXCA7CivkuovpoIXntKLlvJUgPiBqaWtvdXNha3VpblwgOwor5pS+5bCE57ea56eRID4gaG91c2hhc2Vua2FcIDsKK+eah+WkquWtkOWmgyA+IGtvdXRhaXNoaWhpXCA7CivlppbmgKrlpInljJYgPiB5b3VrYWloZW5nZVwgOwor5aSJ5b2i6YOo6ZaAID4gaGVua2VpYnVtb25cIDsKK+mHjuaIpueXhemZoiA+IHlhc2VuYnlvdWluXCA7CivmiKbngb3lnLDljLogPiBzZW5zYWljaGlrdVwgOwor54m55YuZ5qmf6ZaiID4gdG9rdW11a2lrYW5cIDsKK+egguezluWkp+aguSA+IHNhdG91ZGFpa29uXCA7CivljYrliqDlt6Xlk4EgPiBoYW5rYWtvdWhpblwgOwor5LqM562J5YiG57eaID4gbml0b3VidW5zZW5cIDsKK+aOiOalreaZgumWkyA+IGp1Z3lvdWppa2FuXCA7CivlpKnnpZ7lnLDnpYcgPiB0ZW5qaW5jaGlnaVwgOwor6L+95Yqg5LqI566XID4gdHN1aWtheW9zYW5cIDsKK+mdnuWQiOeQhueahCA+IGhpZ291cml0ZWtpXCA7CivlirTovrLmlL/lupwgPiByb3Vub3VzZWlmdVwgOwor5LiL5oSP5LiK6YGUID4ga2Fpam91dGF0c3VcIDsKK+S5l+i7iuaLkuWQpiA+IGpvdXNoYWt5b2hpXCA7CivmsLTmtJfkvr/miYAgPiBzdWlzZW5iZW5qb1wgOwor5Y+O57SN5a625YW3ID4gc2h1dW5vdWthZ3VcIDsKK+acqumWi+WivuWcsCA+IG1pa2Fpa29uY2hpXCA7CivmraPlvZPpmLLooZsgPiBzZWl0b3Vib3VlaVwgOwor5a2m56eR6Kmm6aiTID4gZ2Fra2FzaGlrZW5cIDsKK+a9nOawtOavjeiJpiA+IHNlbnN1aWJva2FuXCA7Civkvb/nlKjkvqHlgKQgPiBzaGl5b3VrYWNoaVwgOwor5a6Y5bCK5rCR5Y2RID4ga2Fuc29ubWlucGlcIDsKK+aZrumBjeaWh+azlSA+IGZ1aGVuYnVucG91XCA7CivpgY7libDkurrlj6MgPiBrYWpvdWppbmtvdVwgOwor5Ye65YWI5qmf6ZaiID4gZGVzYWtpa2lrYW5cIDsKK+Wuo+S8neWKueaenCA+IHNlbmRlbmtvdWthXCA7CivmmYLjgIXliLvjgIUgPiBqaWppa29ra29rdVwgOwor6L+R5Ly86KiI566XID4ga2luamlrZWlzYW5cIDsKK+itt+aGsumBi+WLlSA+IGdva2VuJyd1bmRvdVwgOwor5Y6f5Zug57WQ5p6cID4gZ2VuJydpbmtla2thXCA7Civlj4vou43pg6jpmoogPiB5dXVndW5idXRhaVwgOwor54Sh5bC95Lya56S+ID4gbXVqaW5nYWlzaGFcIDsKK+WPpOS7iuadseilvyA+IGtva29udG91emFpXCA7CivnnIvorbflqabplbcgPiBrYW5nb2Z1Y2hvdVwgOwor5oKy5oak5oW35oWoID4gaGlmdW5rb3VnYWlcIDsKK+WPpOS7o+aWh+aYjiA+IGtvZGFpYnVubWVpXCA7CivnhKHnlKPmlL/lhZogPiBtdXNhbnNlaXRvdVwgOwor6YG45oyZ5rqW5YKZID4gc2Vua3lvanVuYmlcIDsKK+aEj+itmOS4jeaYjiA+IGlzaGlraWZ1bWVpXCA7CivntYTlkIjkuLvnvqkgPiBrdW1pYWlzaHVnaVwgOwor5YCL5L2T55m655SfID4ga290YWloYXNzZWlcIDsKK+Wbm+WIhumfs+espiA+IHNoaWJ1bicnb25wdVwgOwor5L2/5b6S5pu457ChID4gc2hpdG9zaG9rYW5cIDsKK+WEquaflOS4jeaWrSA+IHl1dWp1dWZ1ZGFuXCA7CivnhY7ppIXokrLlm6MgPiBzZW5iZWlidXRvblwgOwor5LqI5a6a6Kq/5ZKMID4geW90ZWljaG91d2FcIDsKK+WFiOelluS8neadpSA+IHNlbnpvZGVucmFpXCA7Civkuovmpa3pg6jliLYgPiBqaWd5b3VidXNlaVwgOwor6Ieo5pmC5YiX6LuKID4gcmluamlyZXNzaGFcIDsKK+Wumuacn+ippumokyA+IHRlaWtpc2hpa2VuXCA7Civnt4/lkIjoqrLnqI4gPiBzb3Vnb3VrYXplaVwgOwor6YGg6ZqU6Kyb576pID4gZW5rYWt1a291Z2lcIDsKK+a1t+W6leayueeUsCA+IGthaXRlaXl1ZGVuXCA7CivnnJ/kuIDmloflrZcgPiBtYWljaGltb25qaVwgOwor6Zu76Kmx6Kq/5p+7ID4gZGVud2FjaG91c2FcIDsKK+aKgOihk+aPtOWKqSA+IGdpanV0c3VlbmpvXCA7CivlgY/lkJHlm57ot68gPiBoZW5rb3VrYWlyb1wgOwor5LqI5a6a57SN56iOID4geW90ZWlub3V6ZWlcIDsKK+eah+WQjumZm+S4iyA+IGtvdWdvdWhlaWthXCA7CivpgKPpgqbliLbluqYgPiByZW5wb3VzZWlkb1wgOwor6Zu75rCX6Zu75a2QID4gZGVua2lkZW5zaGlcIDsKK+S7o+ihjOapn+mWoiA+IGRhaWtvdWtpa2FuXCA7CivnlrLlirTlm7DmhoogPiBoaXJvdWtvbnBhaVwgOwor55uX6Zuj5L+d6Zm6ID4gdG91bmFuaG9rZW5cIDsKK+e0lOecn+eEoeWeoiA+IGp1bnNoaW5tdWt1XCA7Civms5Xli5nlpKfoh6MgPiBob3VtdWRhaWppblwgOwor5YiR5LqL5Yem5YiGID4ga2VpamlzaG9idW5cIDsKK+mnkOi7iumBleWPjSA+IGNodXVzaGFpaGFuXCA7CivmmYLmqZ/lsJrml6kgPiBqaWtpc2hvdXNvdVwgOwor5bm06YeR5Z+66YeRID4gbmVua2lua2lraW5cIDsKK+mBqeazleihjOeCuiA+IHRla2lob3Vrb3VpXCA7CivnianopovpgYrlsbEgPiBtb25vbWl5dXNhblwgOwor5b6X5oSP5rqA6Z2iID4gdG9rdWltYW5tZW5cIDsKK+aZguW3ruWHuuWLpCA+IGppc2FzaHVra2luXCA7CivmlL/msrvllY/poYwgPiBzZWlqaW1vbmRhaVwgOwor57W25a++5pWs6KqeID4gemV0dGFpa2VpZ29cIDsKK+mNteebpOalveWZqCA+IGtlbmJhbmdha2tpXCA7CivoqLToqJ/kuovku7YgPiBzb3Nob3VqaWtlblwgOwor5oSP5ZGz5b255YmyID4gaW1peWFrdXdhcmlcIDsKK+S+oeagvOWuieWumiA+IGtha2FrdWFudGVpXCA7Civku4rkuIrpmZvkuIsgPiBraW5qb3VoZWlrYVwgOwor6Zu75rCX57O757WxID4gZGVua2lrZWl0b3VcIDsKK+WFjOaPm+mKgOihjCA+IGRha2FuZ2lua291XCA7Civnmb7np5HkuovlhbggPiBoeWFra2FqaXRlblwgOwor5YWo5Lya5LiA6Ie0ID4gemVua2FpaXRjaGlcIDsKK+m6u+iWrOaCo+iAhSA+IG1heWFrdWthbmphXCA7Civlv4PmqZ/kuIDou6IgPiBzaGlua2lpdHRlblwgOwor54Sh5ZCN5oim5aOrID4gbXVtZWlzZW5zaGlcIDsKK+WUr+S4gOeEoeS6jCA+IHl1aWl0c3VtdW5pXCA7CivosqHmlL/lronlrpogPiB6YWlzZWlhbnRlaVwgOwor55yL6K235a2m5qChID4ga2FuZ29nYWtrb3VcIDsKK+WIhumhnuWfuua6liA+IGJ1bnJ1aWtpanVuXCA7Civmlofmm7jlgb3pgKAgPiBidW5zaG9naXpvdVwgOwor5a2k6LuN5aWu6ZeYID4ga29ndW5mdW50b3VcIDsKK+aVsOasoeaXheWIuCA+IHN1dWppcnlva2VuXCA7CivlkIjmiJDnuYrntq0gPiBnb3VzZWlzZW4nJ2lcIDsKK+iytOaXj+aUv+ayuyA+IGtpem9rdXNlaWppXCA7CivljZrmhJvkuLvnvqkgPiBoYWt1YWlzaHVnaVwgOwor5LiA5paJ5qSc5oyZID4gaXNzZWlrZW5reW9cIDsKK+S9jua4qei8uOmAgSA+IHRlaW9uJyd5dXNvdVwgOwor6aKo5YWJ5piO5aqaID4gZnV1a291bWVpYmlcIDsKK+W+jOmDqOW6p+W4rSA+IGtvdWJ1emFzZWtpXCA7CivlgIvkurrmipXos4cgPiBrb2ppbnRvdXNoaVwgOwor5L+d6Zm65Lya56S+ID4gaG9rZW5nYWlzaGFcIDsKK+ehq+WMluawtOe0oCA+IHJ5dXVrYXN1aXNvXCA7Civml6XmnKzliJfls7YgPiBuaWhvbnJldHRvdVwgOwor5oim5pmC5YWs5YK1ID4gc2Vuamlrb3VzYWlcIDsKK+a1t+WToee1hOWQiCA+IGthaWlua3VtaWFpXCA7Civkv67ovp7nlpHllY8gPiBzaHV1amlnaW1vblwgOwor5rOV5a6a6LKo5bmjID4gaG91dGVpa2FoZWlcIDsKK+S9k+WGheWPl+eyviA+IHRhaW5haWp1c2VpXCA7Civmpb3oprPkuLvnvqkgPiByYWtrYW5zaHVnaVwgOwor5YWl6Zmi5oKj6ICFID4gbnl1dWlua2FuamFcIDsKK+mWoumAo+S6i+mghSA+IGthbnJlbmppa291XCA7Civljp/kvqHoqIjnrpcgPiBnZW5rYWtlaXNhblwgOwor6Zu75a2Q5Zue6LevID4gZGVuc2hpa2Fpcm9cIDsKK+mHjeeCueS4u+e+qSA+IGp1dXRlbnNodWdpXCA7CivkvqHpm7vlrZDluK8gPiBrYWRlbnNoaXRhaVwgOwor5pyJ5Yq56ZyA6KaBID4geXV1a291anV5b3VcIDsKK+S6i+alreW5tOW6piA+IGppZ3lvdW5lbmRvXCA7Civnm7jlj43lrprnkIYgPiBzb3VoYW50ZWlyaVwgOwor5YWt5YiG5YSA5bqnID4gcm9rdWJ1bmdpemFcIDsKK+WuieWumueKtuaFiyA+IGFudGVpam91dGFpXCA7CivmsJHkuLvmlL/msrsgPiBtaW5zaHVzZWlqaVwgOwor5YyW5a2m57mK57atID4ga2FnYWt1c2VuJydpXCA7Civntbblr77pn7PmhJ8gPiB6ZXR0YWlvbmthblwgOwor6Ieq54S256C05aOKID4gc2hpemVuaGFrYWlcIDsKK+WgsemBk+apn+mWoiA+IGhvdWRvdWtpa2FuXCA7CivmjZXomZzkuqTmj5sgPiBob3J5b2tvdWthblwgOwor5L6h5YCk5Yik5patID4ga2FjaGloYW5kYW5cIDsKK+aJi+e3tOaJi+euoSA+IHRlcmVudGVrdWRhXCA7CivlmajmorDkvZPmk40gPiBraWthaXRhaXNvdVwgOwor6aSK6ICB5L+d6Zm6ID4geW91cm91aG9rZW5cIDsKK+S4jeW9k+ihqOekuiA+IGZ1dG91aHlvdWppXCA7CivlronlhajpgYvou6IgPiBhbnplbicndW50ZW5cIDsKK+S6pOmam+evhOWbsiA+IGtvdXNhaWhhbicnaVwgOwor5b+c55So56eR5a2mID4gb3V5b3VrYWdha3VcIDsKK+S4jeaVtOWQiOS6uiA+IGZ1c2VpZ291amluXCA7CivljZjlhYPliLbluqYgPiB0YW5nZW5zZWlkb1wgOwor5LiA5q2p5YmN6YCyID4gaXBwb3plbnNoaW5cIDsKK+WbveeOi+mZm+S4iyA+IGtva3VvdWhlaWthXCA7CivmlL7pgIHooZvmmJ8gPiBob3Vzb3VlaXNlaVwgOwor5a+C5YWJ5rWE5ZyfID4gamFra291am91ZG9cIDsKK+W+jOeUn+Wkp+S6iyA+IGdvc2hvdWRhaWppXCA7CivkuInmsJHkuLvnvqkgPiBzYW5taW5zaHVnaVwgOwor5rCX566h5YiH6ZaLID4ga2lrYW5zZWtrYWlcIDsKK+WCsuWyuOS4jemBnCA+IGdvdWdhbmZ1c29uXCA7CivlrrbniLbplbfliLYgPiBrYWZ1Y2hvdXNlaVwgOwor5pqX6buS5pif6ZuyID4gYW5rb2t1c2VpdW5cIDsKK+i/keS7o+WbveWutiA+IGtpbmRhaWtva2thXCA7CivliY3pgJTmnInmnJsgPiB6ZW50b3l1dWJvdVwgOwor6Z+z5qW955CG6KuWID4gb25nYWt1cmlyb25cIDsKK+WnlOiol+iyqeWjsiA+IGl0YWt1aGFuYmFpXCA7CivkuInlr5Llm5vmuKkgPiBzYW5rYW5zaGlvblwgOwor6LKn5LmP5omA5bivID4gYmluYm91am90YWlcIDsKK+W+oeS8veiNieWtkCA+IG90b2dpem91c2hpXCA7CivnpZ7lpYjlt53nnIwgPiBrYW5hZ2F3YWtlblwgOwor6Ly/6KuW6Kq/5p+7ID4geW9yb25jaG91c2FcIDsKK+mbu+awl+ijhee9riA+IGRlbmtpc291Y2hpXCA7CivlnLDmlrnorbDkvJogPiBjaGlob3VnaWthaVwgOwor6KOF55Sy6YOo6ZqKID4gc291a291YnV0YWlcIDsKK+S4jeWPr+WFpeaApyA+IGZ1a2FueXV1c2VpXCA7CivljZfkuqzmnKjntr8gPiBuYW5raW5tb21lblwgOwor5Y2w6LGh5Li7576pID4gaW5zaG91c2h1Z2lcIDsKK+WkmuWjq+a4iOOAhSA+IHRhc2hpc2Vpc2VpXCA7CivkuIDlvLXkuIDlvJsgPiBpdGNob3Vpc3NoaVwgOwor5Yy66ZaT5YiX6LuKID4ga3VrYW5yZXNzaGFcIDsKK+ebuOaAneebuOaEmyA+IHNvdXNoaXNvdWFpXCA7CivoiKrnqbrln7rlnLAgPiBrb3VrdXVraWNoaVwgOwor55uj5p+76KiY6YyyID4ga2Fuc2FraXJva3VcIDsKK+aKgOihk+enu+i7oiA+IGdpanV0c3VpdGVuXCA7CivnlKPlhZDliLbpmZAgPiBzYW5qaXNlaWdlblwgOwor6aO95ZKM54q25oWLID4gaG91d2Fqb3V0YWlcIDsKK+efpeiDveaknOafuyA+IGNoaW5vdWtlbnNhXCA7CivlraTlvbHmgoTnhLYgPiBrb2Vpc2hvdXplblwgOwor5LqU56iu56u25oqAID4gZ29zaHVreW91Z2lcIDsKK+Wbo+S9k+S/nemZuiA+IGRhbnRhaWhva2VuXCA7Civlp4nlprnpg73luIIgPiBzaGltYWl0b3NoaVwgOwor5LiN6YCa566H5omAID4gZnV0c3V1a2FzaG9cIDsKK+egtOmCqumhleatoyA+IGhhamFrZW5zaG91XCA7CivmlL/msrvlm6PkvZMgPiBzZWlqaWRhbnRhaVwgOwor5LiA5Zac5LiA5oaCID4gaWtraWljaGl5dXVcIDsKK+a6luWCmeWRveS7pCA+IGp1bmJpbWVpcmVpXCA7Civlj5fpqJPnp5Hnm64gPiBqdWtlbmthbW9rdVwgOwor5pyo566h5qW95ZmoID4gbW9ra2FuZ2Fra2lcIDsKK+S4remrmOmfs+mDqCA+IGNodXVrb3VvbmJ1XCA7Civlj4vmhJvntZDlqZogPiB5dXVhaWtla2tvblwgOwor5rW36LuN5Z+65ZywID4ga2FpZ3Vua2ljaGlcIDsKK+mbu+WtkOe0oOWtkCA+IGRlbnNoaXNvc2hpXCA7CivmhJvlm73pgYvli5UgPiBhaWtva3V1bmRvdVwgOwor5Lq65paH5Zyw55CGID4gamlubW9uY2hpcmlcIDsKK+WKtOWDjeS6ieitsCA+IHJvdWRvdXNvdWdpXCA7Civmg4XloLHlh6bnkIYgPiBqb3Vob3VzaG9yaVwgOwor5Y+v5aSJ6LOH5pysID4ga2FoZW5zaGlob25cIDsKK+eCuuabv+W3ruebiiA+IGthd2FzZXNhZWtpXCA7Civoqpjmi5Dkuovku7YgPiB5dXVrYWlqaWtlblwgOwor5LiJ5aSn6YO95biCID4gc2FuZGFpdG9zaGlcIDsKK+aJgOimgeaZgumWkyA+IHNob3lvdWppa2FuXCA7CivlpbPmqKnpgYvli5UgPiBqb2tlbicndW5kb3VcIDsKK+WIhuaVo+WHpueQhiA+IGJ1bnNhbnNob3JpXCA7CivotbDooYzlj6/og70gPiBzb3Vrb3VrYW5vdVwgOwor5rWB6KiA6aOb6KqeID4gcnl1dWdlbmhpZ29cIDsKK+S4gOaWsOe0gOWFgyA+IGlzc2hpbmtpZ2VuXCA7CivlvpLmiYvkvZPmk40gPiB0b3NodXRhaXNvdVwgOwor5bCB5bu65Li7576pID4gaG91a2Vuc2h1Z2lcIDsKK+WPl+mok+aIpuS6iSA+IGp1a2Vuc2Vuc291XCA7Civlh7rpm7LlpKfnpL4gPiBpenVtb3RhaXNoYVwgOwor5qip6ZaA5Yui5a62ID4ga2VubW9uc2Vpa2FcIDsKK+eEoee3muaTjee4piA+IG11c2Vuc291anV1XCA7CivlgJ/lrrbkuonorbAgPiBzaGFra2Fzb3VnaVwgOwor5a6H5a6Z56eR5a2mID4gdWNodXVrYWdha3VcIDsKK+WPpOWFuOiKuOiDvSA+IGtvdGVuZ2Vpbm91XCA7Civosaroj6/ntaLniJsgPiBnb3VrYWtlbnJhblwgOwor5ryi6Iux5a2X5YW4ID4ga2FuJydlaWppdGVuXCA7CivlqabkurrpgYvli5UgPiBmdWppbicndW5kb3VcIDsKK+S4jeWLleaYjueOiyA+IGZ1ZG91bXlvdW91XCA7CivkvZPlpJblj5fnsr4gPiB0YWlnYWlqdXNlaVwgOwor5Yuk5YuZ5bm06ZmQID4ga2lubXVuZW5nZW5cIDsKK+a6gOWgtOS4gOiHtCA+IG1hbmpvdWl0Y2hpXCA7CivliY3kuJbnlJ/lrZggPiB6ZW5zZXNlaXpvblwgOwor5Lya6KiI5bm05bqmID4ga2Fpa2VpbmVuZG9cIDsKK+S4h+iRieS7ruWQjSA+IG1hbicneW91Z2FuYVwgOwor5YKN6IG06ZqP5oSPID4gYm91Y2hvdXp1aWlcIDsKK+e1tuWvvuWkmuaVsCA+IHpldHRhaXRhc3V1XCA7CivntIXnmb3oqablkIggPiBrb3VoYWt1amlhaVwgOwor5Lya6KiI55uj5p+7ID4ga2Fpa2Vpa2Fuc2FcIDsKK+WFq+e0mOS4gOWuhyA+IGhha2tvdWljaGl1XCA7CivoiJ7lj7Doo4Xnva4gPiBidXRhaXNvdWNoaVwgOwor5LqL5YuZ6ZW35a6YID4gamltdWNob3VrYW5cIDsKK+S4gOiIrOekvuS8miA+IGlwcGFuc2hha2FpXCA7Civml6XluJ3mmYLku6MgPiBuaXR0ZWlqaWRhaVwgOwor55m75Z2C6LuK57eaID4gdG9oYW5zaGFzZW5cIDsKK+S4lueVjOacgOWkpyA+IHNla2Fpc2FpZGFpXCA7CivmjIflsI7ljp/nkIYgPiBzaGlkb3VnZW5yaVwgOwor6YCg5qyh6aGb5rKbID4gem91aml0ZW5wYWlcIDsKK+iIquepuueuoeeQhiA+IGtvdWt1dWthbnJpXCA7CivmhJ/mn5PntYzot68gPiBrYW5zZW5rZWlyb1wgOwor5LqM562J6LuN5pu5ID4gbml0b3VndW5zb3VcIDsKK+mYsueBq+Whl+aWmSA+IGJvdWthdG9yeW91XCA7Civoh6rnuIToh6rnuJsgPiBqaWpvdWppYmFrdVwgOwor6YCU5Lit5LiL6LuKID4gdG9jaHV1Z2VzaGFcIDsKK+eFjumkheW4g+WboyA+IHNlbmJlaWJ1dG9uXCA7CivnkrDlooPkv53orbcgPiBrYW5reW91aG9nb1wgOwor5ZiY55m66KaL5ZmoID4gdXNvaGFra2Vua2lcIDsKK+mdouS8muaZgumWkyA+IG1lbmthaWppa2FuXCA7Civph43mqZ/plqLpioMgPiBqdXVraWthbmp1dVwgOwor5rOV5qGI5a+p6K2wID4gaG91YW5zaGluZ2lcIDsKK+iHquWLleWItuW+oSA+IGppZG91c2VpZ3lvXCA7CivlgIvkurrmjIflsI4gPiBrb2ppbnNoaWRvdVwgOwor6Ieq54S255m654GrID4gc2hpemVuaGFra2FcIDsKK+S4u+WLmeWkp+iHoyA+IHNodW11ZGFpamluXCA7Civnn63mnJ/msbrmiKYgPiB0YW5raWtlc3NlblwgOwor6KiA6Kqe6YGL55SoID4gZ2VuZ291bicneW91XCA7Civnspfoo73mv6vpgKAgPiBzb3NlaXJhbnpvdVwgOwor5Y2x6Zm65oCd5oOzID4ga2lrZW5zaGlzb3VcIDsKK+epuuWfn+euoeeQhiA+IGt1dWlraWthbnJpXCA7CivlvqHmrr/lpbPkuK0gPiBnb3RlbmpvY2h1dVwgOwor6Zqj5L+d5LqL5qWtID4gcmlucG9qaWd5b3VcIDsKK+WQiOaEj+W/g+S4rSA+IGdvdWlzaGluanV1XCA7CivkuJbnlYzoqJjpjLIgPiBzZWthaWtpcm9rdVwgOwor5Z+65pys5p2h5Lu2ID4ga2lob25qb3VrZW5cIDsKK+i+suawkeS4gOaPhiA+IG5vdW1pbicnaWtraVwgOwor5YmN5Luj5pyq6IGeID4gemVuZGFpbWltb25cIDsKK+ikh+WQiOaxmuafkyA+IGZ1a3Vnb3Vvc2VuXCA7Civntbblr77pm7bluqYgPiB6ZXR0YWlyZWlkb1wgOwor5qeL5oiQ5Y+v6IO9ID4ga291c2Vpa2Fub3VcIDsKK+S4gOS6uuiInuWPsCA+IGhpdG9yaWJ1dGFpXCA7Civnmq7kuIvntYTnuZQgPiBoaWthc29zaGlraVwgOwor5Zyw5LiL6LOH5rqQID4gY2hpa2FzaGlnZW5cIDsKK+eZveWMluWAi+S9kyA+IGhha3VrYWtvdGFpXCA7Civpm7voqbHlm57nt5ogPiBkZW53YWthaXNlblwgOwor5LiN5q2j5ZKs5ZCIID4gZnVzZWlrb3Vnb3VcIDsKK+e+juWuueS9k+aTjSA+IGJpeW91dGFpc291XCA7CivljZTorbDpm6LlqZogPiBreW91Z2lyaWtvblwgOwor5rip5pqW5YmN57eaID4gb25kYW56ZW5zZW5cIDsKK+aWsOimj+S/neeuoSA+IHNoaW5raWhva2FuXCA7CivkuIDosqvnlarlj7cgPiBpa2thbmJhbmdvdVwgOwor54++6KGM5rOV6KaPID4gZ2Vua291aG91a2lcIDsKK+elluWbveW+qeW4sCA+IHNva29rdWZ1a2tpXCA7CivlkKvmsLTngq3ntKAgPiBnYW5zdWl0YW5zb1wgOwor5Yq05YON5pmC6ZaTID4gcm91ZG91amlrYW5cIDsKK+eCuuabv+ebuOWgtCA+IGthd2FzZXNvdWJhXCA7CivkuJbnlYzkuIDlkaggPiBzZWthaWlzc2h1dVwgOwor5Yy755mC5rOV5Lq6ID4gaXJ5b3Vob3VqaW5cIDsKK+m8k+iInua/gOWKsSA+IGtvYnVnZWtpcmVpXCA7CivmmYLmnJ/lsJrml6kgPiBqaWtpc2hvdXNvdVwgOwor57KS5bqm5YiG5biDID4gcnl1dWRvYnVucHVcIDsKK+aKleS4i+izh+acrCA+IHRvdWthc2hpaG9uXCA7CivnlKjmhI/lkajliLAgPiB5b3Vpc2h1dXRvdVwgOwor5YaF54eD5qmf6ZaiID4gbmFpbmVua2lrYW5cIDsKK+mYsuawtOWKoOW3pSA+IGJvdXN1aWtha291XCA7CivlgIvkurrmtojosrsgPiBrb2ppbnNob3VoaVwgOwor5Luu5oCn6L+R6KaWID4ga2FzZWlraW5zaGlcIDsKK+WwiueOi+aUmOWktyA+IHNvbicnbm91am91aVwgOwor56m65rCX5Lyd5p+TID4ga3V1a2lkZW5zZW5cIDsKK+W5vOW5tOaZguS7oyA+IHlvdW5lbmppZGFpXCA7CivnpL7kvJrlvqnluLAgPiBzaGFrYWlmdWtraVwgOwor6Zu75rCX6KO95ZOBID4gZGVua2lzZWloaW5cIDsKK+aZguaZguWIu+WIuyA+IGppamlrb2trb2t1XCA7CivkuIDosqvkvZzmpa0gPiBpa2thbnNhZ3lvdVwgOwor5rue5Zyo5pyf6ZaTID4gdGFpemFpa2lrYW5cIDsKK+eEoeW9ouiyoeeUoyA+IG11a2VpemFpc2FuXCA7CivnhKHmlq3ou6LovIkgPiBtdWRhbnRlbnNhaVwgOwor5Z2H6KGh5LqI566XID4ga2lua291eW9zYW5cIDsKK+S7mOW4r+adoeS7tiA+IGZ1dGFpam91a2VuXCA7Civou43kuovlt6XloLQgPiBndW5qaWtvdWpvdVwgOwor5pyJ5Yq55pWw5a2XID4geXV1a291c3V1amlcIDsKK+iHjeS4i+S4ueeUsCA+IHNlaWthdGFuZGVuXCA7CivoqabnlKjmnJ/plpMgPiBzaGl5b3VraWthblwgOwor5YyW5a2m5aSJ5YyWID4ga2FnYWt1aGVua2FcIDsKK+iHquWLlei7iueojiA+IGppZG91c2hhemVpXCA7CivoqIDoqp7pgZPmlq0gPiBnb25nb2RvdWRhblwgOwor5ouF5L+d54mp5qipID4gdGFucG9idWtrZW5cIDsKK+WWtualreaZgumWkyA+IGVpZ3lvdWppa2FuXCA7CivmhJvlprvlvIHlvZMgPiBhaXNhaWJlbnRvdVwgOwor576O55qE5auM5oKqID4gYml0ZWtpa2VuJydvXCA7CivkuInljYPkuJbnlYwgPiBzYW56ZW5zZWthaVwgOwor5aSa6YeN5pS+6YCBID4gdGFqdXVob3Vzb3VcIDsKK+S6jOmHjeWkluS6pCA+IG5panV1Z2Fpa291XCA7Civkuojlgpnlt6XkvZwgPiB5b2Jpa291c2FrdVwgOwor6IKx5o6b5qSF5a2QID4gaGlqaWtha2Vpc3VcIDsKK+efreazouaUvumAgSA+IHRhbnBhaG91c291XCA7CivpoqjlhYnntbbkvbMgPiBmdXVrb3V6ZWtrYVwgOwor5Li75oOF5Li7576pID4gc2h1am91c2h1Z2lcIDsKK+ihjOWLleS4u+e+qSA+IGtvdWRvdXNodWdpXCA7Civoh6rliIboh6rouqsgPiBqaWJ1bmppc2hpblwgOwor5aSc5YWJ5aGX5paZID4geWFrb3V0b3J5b3VcIDsKK+W4sOeEoeS7ruiqrCA+IGtpbXVrYXNldHN1XCA7CivluILloLTljp/nkIYgPiBzaGlqb3VnZW5yaVwgOwor5Lqs5ruL5Zyw5pa5ID4ga2VpamljaGlob3VcIDsKK+Wkp+e+qeWQjeWIhiA+IHRhaWdpbWVpYnVuXCA7CivlkbzlkLjpgYvli5UgPiBrb2t5dXV1bmRvdVwgOwor6J665peL6ZqO5q61ID4gcmFzZW5rYWlkYW5cIDsKK+iLseiqnuaVmeiCsiA+IGVpZ29reW91aWt1XCA7CivosaHniZnmtbflsrggPiB6b3VnZWthaWdhblwgOwor5pel5pys6ISz54KOID4gbmlob24nJ25vdWVuXCA7CivlkozprYLmvKLmiY0gPiB3YWtvbmthbnNhaVwgOwor57WM5Za25YaN5bu6ID4ga2VpZWlzYWlrZW5cIDsKK+iEs+S4i+WeguS9kyA+IG5vdWthc3VpdGFpXCA7Civli5/ph5HpgYvli5UgPiBib2tpbicndW5kb3VcIDsKK+WIu+iLpuWLieWKsSA+IGtva2t1YmVucmVpXCA7Civml6LlqZrnlLfmgKcgPiBraWtvbmRhbnNlaVwgOwor5rK75rC05bel5LqLID4gY2hpc3Vpa291amlcIDsKK+aXpeacrOS6uuirliA+IG5paG9uamlucm9uXCA7Civou43kuovlhazlgrUgPiBndW5qaWtvdXNhaVwgOwor5Y2B5Lq65Y2B6ImyID4ganV1bmludG9pcm9cIDsKK+eEoemFjeS8muekviA+IG11aGFpZ2Fpc2hhXCA7Civlrrbml4/miYvlvZMgPiBrYXpva3V0ZWF0ZVwgOwor576F6Yed55uk5bqnID4gcmFzaGluYmFuemFcIDsKK+emj+elieapn+WZqCA+IGZ1a3VzaGlraWtpXCA7CivmmqvlrprkuojnrpcgPiB6YW50ZWl5b3NhblwgOwor6Ieq6LK75Ye654mIID4gamloaXNodXBwYW5cIDsKK+W4uOeUqOa8ouWtlyA+IGpvdXlvdWthbmppXCA7Civnjovkvq/osrTml48gPiBvdWtvdWtpem9rdVwgOwor5Lq65L2T5qih5Z6LID4gamludGFpbW9rZWlcIDsKK+aXpeilv+i+nuWFuCA+IG5pc3NlaWppdGVuXCA7CivmhJ/mg4Xnp7vlhaUgPiBrYW5qb3Vpbnl1dVwgOwor5Zyw5pa556u26aasID4gY2hpaG91a2VpYmFcIDsKK+e1jOa4iOWKueaenCA+IGtlaXphaWtvdWthXCA7CivmsJHkuovoqLToqJ8gPiBtaW5qaXNvc2hvdVwgOwor5YyW5a2m6KiY5Y+3ID4ga2FnYWt1a2lnb3VcIDsKK+WPguWKoOaEj+itmCA+IHNhbmthaXNoaWtpXCA7CivmiKbmmYLkvZPliLYgPiBzZW5qaXRhaXNlaVwgOwor6Ieq55Sx5biC5aC0ID4gaml5dXVzaGlqb3VcIDsKK+WGt+aIv+WujOWCmSA+IHJlaWJvdWthbmJpXCA7Civoh6rlt7Hlj4zlr74gPiBqaWtvc291dHN1aVwgOwor54Gr54e15o6b5biDID4ga290YXRzdWdha2VcIDsKK+W4jOacm+S+oeagvCA+IGtpYm91a2FrYWt1XCA7Civpgbjlr77mnKzpg6ggPiBzZW50YWlob25idVwgOwor5YWI6aCt5omT6ICFID4gc2VudG91ZGFzaGFcIDsKK+WQjeWJjeepuumWkyA+IG5hbWFla3V1a2FuXCA7CivmtYXojYnmtbfoi5QgPiBhc2FrdXNhbm9yaVwgOwor5LqL5qWt5pys6YOoID4gamlneW91aG9uYnVcIDsKK+eQhuirlumXmOS6iSA+IHJpcm9udG91c291XCA7Civkurrlj6PlopfliqAgPiBqaW5rb3V6b3VrYVwgOwor5aSW5Lqk6L6e5LukID4gZ2Fpa291amlyZWlcIDsKK+awj+Wnk+WItuW6piA+IHNoaXNlaXNlaWRvXCA7CivnuITmlofmmYLku6MgPiBqb3Vtb25qaWRhaVwgOwor5LiW55WM5aSn5oimID4gc2VrYWl0YWlzZW5cIDsKK+apn+WLlea8lOe/kiA+IGtpZG91ZW5zaHV1XCA7Civoh6rorablm6Plk6EgPiBqaWtlaWRhbicnaW5cIDsKK+mbu+awl+aKteaKlyA+IGRlbmtpdGVpa291XCA7CivpmLLpn7Poo4Xnva4gPiBib3VvbnNvdWNoaVwgOwor6LKg5YK15ZCI6KiIID4gZnVzYWlnb3VrZWlcIDsKK+mBiui7jeiomOiAhSA+IHl1dWd1bmtpc2hhXCA7CivkvqHlgKTkvZPns7sgPiBrYWNoaXRhaWtlaVwgOwor5LqM6YeN57WQ5amaID4gbmlqdXVrZWtrb25cIDsKK+S4gOmVt+S4gOefrSA+IGl0Y2hvdWl0dGFuXCA7CivorbfpgIHoiLnlm6MgPiBnb3NvdXNlbmRhblwgOwor54qv6KGM54++5aC0ID4gaGFua291Z2VuYmFcIDsKK+aEj+imi+W6g+WRiiA+IGlrZW5rb3Vrb2t1XCA7CivlloTlm6DlloTmnpwgPiB6ZW4nJ2luemVua2FcIDsKK+eEoeS6uuWcsOW4ryA+IG11amluY2hpdGFpXCA7CivntYzllrbou6Lmj5sgPiBrZWllaXRlbmthblwgOwor6LKp5aOy5qmf5LyaID4gaGFuYmFpa2lrYWlcIDsKK+mBoOmalOaTjeS9nCA+IGVua2FrdXNvdXNhXCA7CivmhaPnlKjoqp7lj6UgPiBrYW4nJ3lvdWdva3VcIDsKK+a2suS9k+epuuawlyA+IGVraXRhaWt1dWtpXCA7Civlh7rliIPljIXkuIEgPiBkZWJhYm91Y2hvdVwgOwor5Zyf6K6a5pys57eaID4gZG9zYW5ob25zZW5cIDsKK+iyoeaUv+aUr+aPtCA+IHphaXNlaXNoaWVuXCA7Civlrq7lu7fnlLvlrrYgPiBreXV1dGVpZ2FrYVwgOwor5pyA5b6M5YiX6LuKID4gc2FpZ29yZXNzaGFcIDsKK+eQhuW3peWtpumDqCA+IHJpa291Z2FrdWJ1XCA7Civkv53nrqHkvJrnpL4gPiBob2thbmdhaXNoYVwgOwor6YWN5ZCI56aB5b+MID4gaGFpZ291a2lua2lcIDsKK+mBjuWJsOaKleizhyA+IGtham91dG91c2hpXCA7CivlrrbplbfliLbluqYgPiBrYWNob3VzZWlkb1wgOwor5Y+v6IG06Led6ZuiID4ga2FjaG91a3lvcmlcIDsKK+imqumhnue4geiAhSA+IHNoaW5ydWllbmphXCA7CivlroflrpnljJblraYgPiB1Y2h1dWthZ2FrdVwgOwor54Sh55CG5b+D5LitID4gbXVyaXNoaW5qdXVcIDsKK+W5tOizgOiRieabuCA+IG5lbmdhaGFnYWtpXCA7CivpgKPpgqbkuojnrpcgPiByZW5wb3V5b3NhblwgOwor5Ym15L6h5a2m5LyaID4gc291a2FnYWtrYWlcIDsKK+WIqeWtkOijnOe1piA+IHJpc2hpaG9reXV1XCA7CivmoLnmnKzljp/nkIYgPiBrb25wb25nZW5yaVwgOwor5a6J5YWo5L+d6ZqcID4gYW56ZW5ob3Nob3VcIDsKK+WBpeW6t+S/nemZuiA+IGtlbmtvdWhva2VuXCA7Civmmpfpu5LmmYLku6MgPiBhbmtva3VqaWRhaVwgOwor5LiW5Luj5Lqk5LujID4gc2VkYWlrb3V0YWlcIDsKK+i7oumAgembu+ipsSA+IHRlbnNvdWRlbndhXCA7CivmmK3lkozmmYLku6MgPiBzaG91d2FqaWRhaVwgOwor5L2/55So6Kix5Y+vID4gc2hpeW91a3lva2FcIDsKK+mfs+alveaYoOeUuyA+IG9uZ2FrdWVpZ2FcIDsKK+Wuh+WumemBiuazsyA+IHVjaHV1eXV1ZWlcIDsKK+S/neWBpeWItuW6piA+IGhva2Vuc2VpZG9cIDsKK+a6luWCmemBi+WLlSA+IGp1bmJpdW5kb3VcIDsKK+S7o+itsOWItuW6piA+IGRhaWdpc2VpZG9cIDsKK+aooeWei+WcsOWbsyA+IG1va2VpY2hpenVcIDsKK+eEoeiMtuiLpuiMtiA+IG11Y2hha3VjaGFcIDsKK+WPpOW+gOS7iuadpSA+IGtvb3Vrb25yYWlcIDsKK+aRqeWIqeaUr+WkqSA+IG1hcmlzaGl0ZW5cIDsKK+S6uueCuua3mOaxsCA+IGppbicnaXRvdXRhXCA7CivnqLzlg43mmYLplpMgPiBrYWRvdWppa2FuXCA7CivljLvnmYLliLbluqYgPiBpcnlvdXNlaWRvXCA7CivpnaLnvbXnvbXlgJIgPiBtZW5iYWJhdG91XCA7CivpgbjmjJnpgZXlj40gPiBzZW5reW9paGFuXCA7Civml6XmnKzmmYLplpMgPiBuaWhvbmppa2FuXCA7CivlpbTpmrfliLbluqYgPiBkb3JlaXNlaWRvXCA7Civmp4vpgKDkv53mjIEgPiBrb3V6b3Vob2ppXCA7Civoh6rli5Xou4rljJYgPiBqaWRvdXNoYWthXCA7Civml6XmnKzmm7jntIAgPiBuaWhvbnNob2tpXCA7CivkuI3nqbrmiJDlsLEgPiBmdWt1dWpvdWp1XCA7CivlubPlkozpgYvli5UgPiBoZWl3YXVuZG91XCA7CivlhazlrprmranlkIggPiBrb3V0ZWlidWFpXCA7CivlpKnooaPnhKHnuKsgPiB0ZW4nJ2ltdWhvdVwgOwor55CG6Lev5pW054S2ID4gcmlyb3NlaXplblwgOwor5Y2X5Lqs57m75a2QID4gbmFua2luanVzdVwgOwor6Jma54Sh5Li7576pID4ga3lvbXVzaHVnaVwgOwor5qip5aiB5Li7576pID4ga2VuJydpc2h1Z2lcIDsKK+awl+eCjuS4h+S4iCA+IGtpZW5iYW5qb3VcIDsKK+S4ieS4ieS5neW6piA+IHNhbnNhbmt1ZG9cIDsKK+ioiOeul+apn+mWkyA+IGtlaXNhbmtpbWFcIDsKK+ekvOWEgOS9nOazlSA+IHJlaWdpc2Fob3VcIDsKK+a7heiMtuiLpuiMtiA+IG1lY2hha3VjaGFcIDsKK+iAs+S4i+iFuueCjiA+IGppa2FzZW4nJ2VuXCA7Civnn7PmsrnljbHmqZ8gPiBzZWtpeXVraWtpXCA7CivliJHkuovkuovku7YgPiBrZWlqaWppa2VuXCA7CivliKnnlKjkvqHlgKQgPiByaXlvdWthY2hpXCA7Civlm57nt5rosqDojbcgPiBrYWlzZW5mdWthXCA7CivpppblsL7kuIDosqsgPiBzaHViaWlra2FuXCA7CivljLvnmYLkv53pmbogPiBpcnlvdWhva2VuXCA7Civmraboo4Xop6PpmaQgPiBidXNvdWthaWpvXCA7CivooajmhI/mloflrZcgPiBoeW91aW1vbmppXCA7Civpg73luILlm73lrrYgPiB0b3NoaWtva2thXCA7CivnhKHngrrlvpLpo58gPiBtdWl0b3Nob2t1XCA7CivmmKDnlLvpn7Pmpb0gPiBlaWdhb25nYWt1XCA7CivliY3lvozlt6blj7MgPiB6ZW5nb3NheXV1XCA7Civph47miKbnibnnp5EgPiB5YXNlbnRva2thXCA7CivkuI3nvojlpZTmlL4gPiBmdWtpaG9ucG91XCA7CivkuIDmiYvosqnlo7IgPiBpdHRlaGFuYmFpXCA7CivlvZPluqfpoJDph5EgPiB0b3V6YXlva2luXCA7CivmoZzoirHniJvmvKsgPiBvdWthcmFubWFuXCA7Civoh6rnlLHoh6rlnKggPiBqaXl1dWppemFpXCA7Civkub7nh6XnhKHlkbMgPiBrYW5zb3VtdW1pXCA7CivkuozpoIXlrprnkIYgPiBuaWtvdXRlaXJpXCA7CivmtLvmgKfmsZrms6UgPiBrYXNzZWlvZGVpXCA7CivkuInkuInkupTkupQgPiBzYW5zYW5nb2dvXCA7CivlnKjluqvnrqHnkIYgPiB6YWlrb2thbnJpXCA7Civngavngb3kv53pmbogPiBrYXNhaWhva2VuXCA7CivnvbXoqYjpm5HoqIAgPiBiYXJpem91Z29uXCA7CivpgZPot6/lsIHpjpYgPiBkb3Vyb2Z1dXNhXCA7CivlsI/lp5Tlk6HkvJogPiBzaG91aWlua2FpXCA7CivkuqTmuInlp5Tlk6EgPiBrb3VzaG91aWluXCA7CivlkIjlkIzooYzngrogPiBnb3Vkb3Vrb3VpXCA7Civngonovrroq4foqbEgPiByb2hlbmRhbndhXCA7CivpgY7ljrvliIboqZ4gPiBrYWtvYnVuc2hpXCA7CivllrbliKnkvJrnpL4gPiBlaXJpZ2Fpc2hhXCA7CivkurrkuovkuI3nnIEgPiBqaW5qaWZ1c2VpXCA7CivnlbDmgKfplqLkv4IgPiBpc2Vpa2Fua2VpXCA7CivkuovmlYXljp/lm6AgPiBqaWtvZ2VuJydpblwgOwor5a625Ye65bCR5aWzID4gaWVkZXNob3Vqb1wgOwor5Y+k5YW45Li7576pID4ga290ZW5zaHVnaVwgOwor5LiN5rOV5oqV5qOEID4gZnVob3V0b3VraVwgOwor5LqM6YeN6J665peLID4gbmlqdXVyYXNlblwgOwor5L2N55u46YCf5bqmID4gaXNvdXNva3Vkb1wgOwor6Z+z6Z+76YOo6ZaAID4gb24nJ2luYnVtb25cIDsKK+apn+iDveS4u+e+qSA+IGtpbm91c2h1Z2lcIDsKK+apn+aisOitpuWCmSA+IGtpa2Fpa2VpYmlcIDsKK+WfuuekjuippumokyA+IGtpc29zaGlrZW5cIDsKK+WutuW6reiPnOWckiA+IGthdGVpc2FpZW5cIDsKK+mBk+i3r+W3peS6iyA+IGRvdXJva291amlcIDsKK+S6nOeIvueEtuS4gSA+IGFydXplbmNoaW5cIDsKK+Wbm+iLpuWFq+iLpiA+IHNoaWt1aGFra3VcIDsKK+WnlOe0sOmdouirhyA+IGlzYWltZW5kYW5cIDsKK+WvvuagoeippuWQiCA+IHRhaWtvdWppYWlcIDsKK+S6uuawl+S9nOWutiA+IG5pbmtpc2Fra2FcIDsKK+aaluWGrOeVsOWkiSA+IGRhbnRvdWloZW5cIDsKK+Wls+aAp+S4gOiIrCA+IGpvc2VpaXBwYW5cIDsKK+aAqueNo+aYoOeUuyA+IGthaWp1dWVpZ2FcIDsKK+WkmueoruWkmuanmCA+IHRhc2h1dGF5b3VcIDsKK+S6jOmDqOaVmeaOiCA+IG5pYnVreW91anVcIDsKK+mAn+W6pumBleWPjSA+IHNva3Vkb2loYW5cIDsKK+aoquaWreatqemBkyA+IG91ZGFuaG9kb3VcIDsKK+iIl+ijhemBk+i3ryA+IGhvc291ZG91cm9cIDsKK+eEoee3muaKgOW4qyA+IG11c2VuZ2lzaGlcIDsKK+mjm+mzpeaZguS7oyA+IGFzdWthamlkYWlcIDsKK+Wbnui3r+WfuuadvyA+IGthaXJva2liYW5cIDsKK+W9ouaIkOWkluenkSA+IGtlaXNlaWdla2FcIDsKK+Wuh+WumeWFteWZqCA+IHVjaHV1aGVpa2lcIDsKK+eVsOW4uOawl+ixoSA+IGlqb3VraXNob3VcIDsKK+eEoeapn+WMluWtpiA+IG11a2lrYWdha3VcIDsKK+iHqueUseS4u+e+qSA+IGppeXV1c2h1Z2lcIDsKK+S9jeiomOi/vei0iCA+IGlraXRzdWlzb3VcIDsKK+Wun+WGmeaYoOeUuyA+IGppc3NoYWVpZ2FcIDsKK+iHqueUseaZgumWkyA+IGppeXV1amlrYW5cIDsKK+W+oeekvOWlieWFrCA+IG9yZWlib3Vrb3VcIDsKK+WckuiKuOeUqOWFtyA+IGVuZ2VpeW91Z3VcIDsKK+egtOiMtuebruiMtiA+IGhhY2hhbWVjaGFcIDsKK+S4jeepj+aWh+abuCA+IGZ1b25idW5zaG9cIDsKK+a8ouWtl+aWh+WMliA+IGthbmppYnVua2FcIDsKK+S6iOWCmeippumokyA+IHlvYmlzaGlrZW5cIDsKK+WKtOWLmeeuoeeQhiA+IHJvdW11a2FucmlcIDsKK+W5s+WSjOS8muitsCA+IGhlaXdha2FpZ2lcIDsKK+S7u+WLmemDqOmaiiA+IG5pbm11YnV0YWlcIDsKK+Wwj+mWk+eJqeWxiyA+IGtvbWFtb25veWFcIDsKK+e4puaoqueEoeWwvSA+IGp1dW91bXVqaW5cIDsKK+WbveWutuS4u+e+qSA+IGtva2thc2h1Z2lcIDsKK+mBjuWJsOaKleS4jiA+IGtham91dG91eW9cIDsKK+irlueQhuWbnui3ryA+IHJvbnJpa2Fpcm9cIDsKK+iHquWjiuS9nOeUqCA+IGppa2Fpc2F5b3VcIDsKK+a6luWCmeacn+mWkyA+IGp1bmJpa2lrYW5cIDsKK+WkqeS4i+eEoeWPjCA+IHRlbmthbXVzb3VcIDsKK+S4gOeAieWNg+mHjCA+IGlzc2hhc2VucmlcIDsKK+aoquihjOmXiuatqSA+IG91a291a2FwcG9cIDsKK+WJsOS9meS+oeWApCA+IGpvdXlva2FjaGlcIDsKK+aWh+WMluWbveWutiA+IGJ1bmtha29ra2FcIDsKK+iInuWPsOeoveWPpCA+IGJ1dGFpZ2Vpa29cIDsKK+S8iuWLouWkp+W7nyA+IGlzZXRhaWJ5b3VcIDsKK+ebuOS6kuaUr+aPtCA+IHNvdWdvc2hpZW5cIDsKK+aZrumBjeWOn+eQhiA+IGZ1aGVuZ2VucmlcIDsKK+S4jeWNs+S4jemboiA+IGZ1c29rdWZ1cmlcIDsKK+aCquWboOaCquaenCA+IGFrdWluJydha2thXCA7CivkuInjgIXkuZ3luqYgPiBzYW5zYW5rdWRvXCA7CivpmYTlkozpm7flkIwgPiBmdXdhcmFpZG91XCA7CivljJbnsqfpg6jlsYsgPiBrZXNob3ViZXlhXCA7Civno6joo73nn7PlmaggPiBtYXNlaXNla2tpXCA7CivniLblrZDlrrbluq0gPiBmdXNoaWthdGVpXCA7CivkvZnpn7vlq4vlq4sgPiB5b2luam91am91XCA7CivnuITmloflnJ/lmaggPiBqb3Vtb25kb2tpXCA7CivosqHli5nnrqHnkIYgPiB6YWltdWthbnJpXCA7CivnqYLnirboirHluo8gPiBzdWlqb3VrYWpvXCA7Civovp7mm7jpg6jploAgPiBqaXNob2J1bW9uXCA7CivmqZ/li5Xpg6jpmoogPiBraWRvdWJ1dGFpXCA7Civkv53lronlh6bliIYgPiBob2Fuc2hvYnVuXCA7CivmhI/mgJ3ooajnpLogPiBpc2hpaHlvdWppXCA7CivllrbliKnkuovmpa0gPiBlaXJpamlneW91XCA7Civnmq7ohprnp7vmpI0gPiBoaWZ1aXNob2t1XCA7CivorbDkuovlpqjlrrMgPiBnaWppYm91Z2FpXCA7Civku5jlkozpm7flkIwgPiBmdXdhcmFpZG91XCA7CivkuIDpqI7lvZPljYMgPiBpa2tpdG91c2VuXCA7CivpmL/pvLvlj6vllpogPiBhYmlreW91a2FuXCA7Civntbblr77muKnluqYgPiB6ZXR0YWlvbmRvXCA7Civpu4Tph5HkuJbnlYwgPiBvdWdvbnNla2FpXCA7Civmo5LmuKnluqboqIggPiBib3VvbmRva2VpXCA7Civlj43lr77mhI/oposgPiBoYW50YWlpa2VuXCA7CivmrKPmsYLmtYTlnJ8gPiBnb25ndWpvdWRvXCA7Civph5HosqjmupblgpkgPiBraW5rYWp1bmJpXCA7Civoq5bnkIbntKDlrZAgPiByb25yaXNvc2hpXCA7CivpnLLlnLDmoL3ln7kgPiByb2ppc2FpYmFpXCA7Civlj6TlorPmmYLku6MgPiBrb2Z1bmppZGFpXCA7CivnhKHnhZnngavolqwgPiBtdWVua2F5YWt1XCA7CivmlL/msrvmqZ/mp4sgPiBzZWlqaWtpa291XCA7CivmhI/lv5fmsbrlrpogPiBpc2hpa2V0dGVpXCA7CivosqDojbfliIbmlaMgPiBmdWthYnVuc2FuXCA7CivkuI3lgY/kuI3lhZogPiBmdWhlbmZ1dG91XCA7CivlkIzluornlbDlpKIgPiBkb3VzaG91aW11XCA7CivnhKHpmZDou4zpgZMgPiBtdWdlbmtpZG91XCA7Civou43kuovpoafllY8gPiBndW5qaWtvbW9uXCA7CivogL3nvo7kuLvnvqkgPiB0YW5iaXNodWdpXCA7CivllpzliofmmKDnlLsgPiBraWdla2llaWdhXCA7Civmm7znj6Dmspnoj68gPiBtYW5qdXNoYWdlXCA7CivmqKHmk6zoqabpqJMgPiBtb2dpc2hpa2VuXCA7Civopo/liYfpgZXlj40gPiBraXNva3VpaGFuXCA7CivlpI/ngonlhqzmiYcgPiBrYXJvdG91c2VuXCA7Civpm6jlpKnmsbrooYwgPiB1dGVua2Vra291XCA7CivmhI/opovkuqTmj5sgPiBpa2Vua291a2FuXCA7CivkuI3kub7mgKfmsrkgPiBmdWthbnNlaXl1XCA7Civms4zlsL/lmajnp5EgPiBoaW55b3VraWthXCA7CivluLfluYTkuIrlpY8gPiBpYWt1am91c291XCA7CivlhajmqKnlp5Tlk6EgPiB6ZW5rZW4nJ2lpblwgOwor5ryU566X5qmf5qeLID4gZW56YW5raWtvdVwgOwor54Sh6JOL6LKo6LuKID4gbXVnYWlrYXNoYVwgOwor5LqM5Y2B5LiW57SAID4gbmlqaXNzZWlraVwgOwor5L+d6K235Yem5YiGID4gaG9nb3Nob2J1blwgOwor55qu6Iaa56eR5a2mID4gaGlmdWthZ2FrdVwgOwor6KGG5oSa5pS/5rK7ID4gc2h1Z3VzZWlqaVwgOwor5L6N5b6T5q2m5a6YID4gamlqdXVidWthblwgOwor5o6n6Ki05pyf6ZaTID4ga291c29raWthblwgOwor5LiK5L2N5qeL6YCgID4gam91aWtvdXpvdVwgOwor5bi45Lu75aeU5ZOhID4gam91bmluJydpaW5cIDsKK+iKneWxheWwj+WxiyA+IHNoaWJhaWdveWFcIDsKK+WFrOenn+WFrOiqsiA+IGtvdXNva291a2FcIDsKK+aYk+aEn+afk+aApyA+IGlrYW5zZW5zZWlcIDsKK+e0gOS8iuWci+WxiyA+IGtpbm9rdW5peWFcIDsKK+WknOm3ueiVjum6piA+IHlvdGFrYXNvYmFcIDsKK+WLpOWLmeaZgumWkyA+IGtpbm11amlrYW5cIDsKK+WOreS4luS4u+e+qSA+IGVuc2Vpc2h1Z2lcIDsKK+WNmOS9jeiomOWPtyA+IHRhbicnaWtpZ291XCA7CivmjpLku5bkuLvnvqkgPiBoYWl0YXNodWdpXCA7Civlroflrpnpo5vooYwgPiB1Y2h1dWhpa291XCA7Civku67lkI3ojYnntJkgPiBrYW5hem91c2hpXCA7CivlnZHlhoXkuovmlYUgPiBrb3VuYWlqaWtvXCA7Civoq5bnkIbmvJTnrpcgPiByb25yaWVuemFuXCA7Civpm7vmsJfmr5vluIMgPiBkZW5raW1vdWZ1XCA7Civpm7LprKLoirHpoZQgPiB1bmJpbmthZ2FuXCA7CivlvqHliY3kvJrorbAgPiBnb3plbmthaWdpXCA7Civkuojlgpnoqr/mn7sgPiB5b2JpY2hvdXNhXCA7CivlubPlkozkuLvnvqkgPiBoZWl3YXNodWdpXCA7CivnqLLojbflr7/lj7ggPiBpbmFyaXp1c2hpXCA7Civms6jmhI/kuovpoIUgPiBjaHV1aWppa291XCA7Civog7jpg6jlpJbnp5EgPiBreW91YnVnZWthXCA7CivpnZ7lj6/mj5vnvqQgPiBoaWtha2FuZ3VuXCA7CivpgbrkvJ3mg4XloLEgPiBpZGVuam91aG91XCA7Civlr4TnlJ/ngavlsbEgPiBraXNlaWthemFuXCA7Civkuozpg6jmjojmpa0gPiBuaWJ1anVneW91XCA7CivpnZ7llrbliKnnmoQgPiBoaWVpcml0ZWtpXCA7CivmsrPlt53lt6XkuosgPiBrYXNlbmtvdWppXCA7Civnm7jmiYvmrKHnrKwgPiBhaXRlc2hpZGFpXCA7Civkvr/lrpzkuLvnvqkgPiBiZW5naXNodWdpXCA7Civnmq7ohprlkbzlkLggPiBoaWZ1a29reXV1XCA7CivkupzmiJDlsaTlnI8gPiBhc2Vpc291a2VuXCA7Civnqbrou43lpKflsIkgPiBrdXVndW50YWlpXCA7CivkuInjgIXkupTjgIUgPiBzYW5zYW5nb2dvXCA7CivmorXlkozovp7lhbggPiBib253YWppdGVuXCA7CivmjqfoqLTnkIbnlLEgPiBrb3Vzb3JpeXV1XCA7Civpg6jpmorljLrliIYgPiBidXRhaWt1YnVuXCA7CivmgqrprZTkuLvnvqkgPiBha3VtYXNodWdpXCA7Civorbflsrjlt6XkuosgPiBnb2dhbmtvdWppXCA7CivkvZnpn7vlq4vjgIUgPiB5b2luam91am91XCA7CivnlLDlpKvph47kurogPiBkZW5wdXlhamluXCA7CivlpYflpYfmgKrmgKogPiBraWtpa2Fpa2FpXCA7CivnpZ7ku6PmloflrZcgPiBqaW5kYWltb2ppXCA7Civlj6TlhbjmmYLku6MgPiBrb3RlbmppZGFpXCA7CivluILkvJrorbDlk6EgPiBzaGlrYWlnaWluXCA7CivljbHpmbrosqDmi4UgPiBraWtlbmZ1dGFuXCA7CivlgaXlurfkuI3lrokgPiBrZW5rb3VmdWFuXCA7Civlv5zmgKXmuKHmsrMgPiBvdWt5dXV0b2thXCA7Civkuozph43lkKblrpogPiBuaWp1dWhpdGVpXCA7CivmhI/msJfooZ3lpKkgPiBpa2lzaG91dGVuXCA7CivljLvlrabnlKjoqp4gPiBpZ2FrdXlvdWdvXCA7CivoiJ7lj7DlirnmnpwgPiBidXRhaWtvdWthXCA7Civpm7vkvY3lt67oqIggPiBkZW4nJ2lzYWtlaVwgOwor5bqm5pWw5YiG5biDID4gZG9zdXVidW5wdVwgOwor6YGL6YCB5L+d6Zm6ID4gdW5zb3Vob2tlblwgOwor6auY5omL5bCP5omLID4gdGFrYXRla290ZVwgOwor54Sh5ZGz5Lm+54elID4gbXVtaWthbnNvdVwgOwor5LiL6Zmi6K2w6ZW3ID4ga2FpbmdpY2hvdVwgOwor6LuN5YKZ566h55CGID4gZ3VuYmlrYW5yaVwgOwor5qi56ISC5Yqg5belID4ganVzaGlrYWtvdVwgOwor5Yip5rC05bel5LqLID4gcmlzdWlrb3VqaVwgOwor6Z2e5bi45LqL5oWLID4gaGlqb3VqaXRhaVwgOwor5q2m6KOF6JyC6LW3ID4gYnVzb3Vob3VraVwgOwor5pyJ5aOw6Z+z5YyWID4geXV1c2Vpb25rYVwgOwor5L6h5YCk5Z+65rqWID4ga2FjaGlraWp1blwgOwor6Kq/55CG5Zmo5YW3ID4gY2hvdXJpa2lndVwgOwor56Cy54WZ5by+6ZuoID4gaG91ZW5kYW4nJ3VcIDsKK+mmrOiAs+adsemiqCA+IGJhaml0b3VmdXVcIDsKK+W5s+ihjOenu+WLlSA+IGhlaWtvdWlkb3VcIDsKK+ijnOWKqeWLleipniA+IGhvam9kb3VzaGlcIDsKK+WQpuWumuW/nOetlCA+IGhpdGVpb3V0b3VcIDsKK+iHquW3seizh+acrCA+IGppa29zaGlob25cIDsKK+m7hOmHkeaZguS7oyA+IG91Z29uamlkYWlcIDsKK+WRveS7pOS4gOS4iyA+IG1laXJlaWlra2FcIDsKK+e0jeS7mOacn+mZkCA+IG5vdWZ1a2lnZW5cIDsKK+aRuOaTrOippumokyA+IG1vZ2lzaGlrZW5cIDsKK+Wwj+WFkOm6u+eXuiA+IHNob3VuaW1haGlcIDsKK+Wuo+S8neiomOS6iyA+IHNlbmRlbmtpamlcIDsKK+Wkj+Wto+S8keaahyA+IGtha2lreXV1a2FcIDsKK+iHqOaZguaUv+W6nCA+IHJpbmppc2VpZnVcIDsKK+S4ieaXpeS4ieaZqSA+IG1pa2thbWliYW5cIDsKK+eEoeeQhumbo+mhjCA+IG11cmluYW5kYWlcIDsKK+S6iOWCmeijhee9riA+IHlvYmlzb3VjaGlcIDsKK+aenOaoueagveWfuSA+IGthanVzYWliYWlcIDsKK+eyl+iho+eyl+mjnyA+IHNvaXNvc2hva3VcIDsKK+S6uuawkeWnlOWToSA+IGppbm1pbicnaWluXCA7Civpo73lkozokrjmsJcgPiBob3V3YWpvdWtpXCA7CivljLnlpKvljLnlqaYgPiBoaXBwdWhpcHB1XCA7CivkuozliIbpn7PnrKYgPiBuaWJ1bicnb25wdVwgOwor5Y2D5rOi5LiH5rOiID4gc2VucGFiYW5wYVwgOwor55Ww5bi455m655SfID4gaWpvdWhhc3NlaVwgOwor5rK75a6J6YOo6ZqKID4gY2hpYW5idXRhaVwgOwor5YiD5YK35rKZ5rGwID4gbmluam91emF0YVwgOwor5LiN5rS75oCn5YyWID4gZnVrYXNzZWlrYVwgOwor5bel5LqL54++5aC0ID4ga291amlnZW5iYVwgOwor6Ieq5bex5a6j5LydID4gamlrb3NlbmRlblwgOwor5rCX566h5pSv54KOID4ga2lrYW5zaGllblwgOwor5omL5YmN5Yud5omLID4gdGVtYWVnYXR0ZVwgOwor5L+d5a6I5Li7576pID4gaG9zaHVzaHVnaVwgOwor5pyo56uv5b6u5aG1ID4ga29wcGFtaWppblwgOwor5q275Lqh6KiY5LqLID4gc2hpYm91a2lqaVwgOwor6YGO5Ymw5Yip55uKID4ga2Fqb3VyaWVraVwgOwor5aWz5bCK55S35Y2RID4gam9zb25kYW5waVwgOwor5Y2B5LqM5Y2Y6KGjID4ganV1bmloaXRvZVwgOwor5YiG6Zui6Kqy56iOID4gYnVucmlrYXplaVwgOwor5Lu75oSP5o2c5p+7ID4gbmluJydpc291c2FcIDsKK+S4iuS9jeamguW/tSA+IGpvdWlnYWluZW5cIDsKK+iInuWPsOmBk+WFtyA+IGJ1dGFpZG91Z3VcIDsKK+S4iuaYoOaZgumWkyA+IGpvdWVpamlrYW5cIDsKK+ioiOWZqOmjm+ihjCA+IGtlaWtpaGlrb3VcIDsKK+aIpueBveWtpOWFkCA+IHNlbnNhaWtvamlcIDsKK+WfuuacrOWOn+eQhiA+IGtpaG9uZ2VucmlcIDsKK+aDheaEj+aKleWQiCA+IGpvdWl0b3Vnb3VcIDsKK+euoeeQhuapn+iDvSA+IGthbnJpa2lub3VcIDsKK+iHqOaZguiomOWPtyA+IHJpbmppa2lnb3VcIDsKK+WFteW9ueW/jOmBvyA+IGhlaWVraWtpaGlcIDsKK+aIpuS6ieaYoOeUuyA+IHNlbnNvdWVpZ2FcIDsKK+iyoeaUv+WNseapnyA+IHphaXNlaWtpa2lcIDsKK+aciemZkOiKseW6jyA+IHl1dWdlbmtham9cIDsKK+i7jeS6i+WfuuWcsCA+IGd1bmppa2ljaGlcIDsKK+S4jeato+S6i+S7tiA+IGZ1c2VpamlrZW5cIDsKK+WHuuadpeasoeesrCA+IGRla2lzaGlkYWlcIDsKK+WkieS9k+S7ruWQjSA+IGhlbnRhaWdhbmFcIDsKK+iLsembhOS4u+e+qSA+IGVpeXV1c2h1Z2lcIDsKK+eXtOipseWWp+WYqSA+IGNoaXdhZ2Vua2FcIDsKK+eDj+acieWFiOeUnyA+IHV5dXVzZW5zZWlcIDsKK+aGsuazlemBleWPjSA+IGtlbnBvdWloYW5cIDsKK+Wbnui7ouakheWtkCA+IGthaXRlbicnaXN1XCA7Civog73nmbvljYrls7YgPiBub3RvaGFudG91XCA7CivliqPmgKfpgbrkvJ0gPiByZXNzZWlpZGVuXCA7Civoq4vosqDliLbluqYgPiB1a2VvaXNlaWRvXCA7CivmsLTou4rlsI/lsYsgPiBzdWlzaGFnb3lhXCA7CivopJDmr5vlkoznqK4gPiBha2FnZXdhc2h1XCA7Civlm7rlrprosqDlgrUgPiBrb3RlaWZ1c2FpXCA7Civkvp3poZjlhY3lrpggPiBpZ2FubWVua2FuXCA7CivmlL/lupzmqZ/plqIgPiBzZWlmdWtpa2FuXCA7Civkuovku7boqJjogIUgPiBqaWtlbmtpc2hhXCA7CivlubPlronlvozmnJ8gPiBoZWlhbmtvdWtpXCA7Civpm4fnlKjkv53pmbogPiBrb3lvdWhva2VuXCA7Civkv53orbfosr/mmJMgPiBob2dvYm91ZWtpXCA7CivkuJbnlYzliLbopocgPiBzZWthaXNlaWhhXCA7CivnhKHmqZ/ogqXmlpkgPiBtdWtpaGlyeW91XCA7Civpq5jph47osYbohZAgPiBrb3V5YWRvdWZ1XCA7Civku6PorbDmlL/msrsgPiBkYWlnaXNlaWppXCA7CivmhI/ppqzlv4PnjL8gPiBpYmFzaGluJydlblwgOwor5Lqk6YCa6YG65YWQID4ga291dHN1dWlqaVwgOwor6YG65qOE6LKo54mpID4gaWtpa2Ftb3RzdVwgOwor54Kt5YyW5rC057SgID4gdGFua2FzdWlzb1wgOwor5Zuy56KB5LiJ57SaID4gaWdvc2Fua3l1dVwgOwor55Sj5amm5Lq656eRID4gc2FuZnVqaW5rYVwgOwor55CG5oOz5Li7576pID4gcmlzb3VzaHVnaVwgOwor5Y2B5a2X56Cy54GrID4ganV1amlob3VrYVwgOwor6YO96YGT5bqc55yMID4gdG9kb3VmdWtlblwgOwor6bqd6aaZ6LGM6LGGID4gamFrb3VlbmRvdVwgOwor55uy5ZSW5a2m5qChID4gbW91YWdha2tvdVwgOwor5L+d5a6J5p2h5L6LID4gaG9hbmpvdXJlaVwgOwor55+z5Zmo5pmC5LujID4gc2Vra2lqaWRhaVwgOwor5Ly86Z2e55CG5bGIID4gZXNlcmlrdXRzdVwgOwor6KiY5b+15YiH5omLID4ga2luZW5raXR0ZVwgOwor5YCL5Lq65YCL5Lq6ID4ga29qaW5rb2ppblwgOwor5bu25rue5Yip5a2QID4gZW50YWlyaXNoaVwgOwor5YiG5rS+5Li7576pID4gYnVucGFzaHVnaVwgOwor5q+A6KqJ6KSS6LK2ID4ga2l5b2hvdWhlblwgOwor5ZSv576O5Li7576pID4geXVpYmlzaHVnaVwgOwor6LuN5LqL6KGb5pifID4gZ3VuamllaXNlaVwgOwor54Sh5oiR5aSi5LitID4gbXVnYW11Y2h1dVwgOwor5LqI5a6a5pyf6ZmQID4geW90ZWlraWdlblwgOwor56uL5L2T5pig55S7ID4gcml0dGFpZWlnYVwgOwor5aSp5rCX5qih5qeYID4gdGVua2ltb3lvdVwgOwor54Gr5Y+j5Y6f5rmWID4ga2Frb3VnZW5rb1wgOwor6KGo6Z+z5a2X5q+NID4gaHlvdW9uamlib1wgOwor6Z+z5aOw6KiA6KqeID4gb25zZWlnZW5nb1wgOwor5LiA5pio5pio5pelID4gc2FraW90b3RvaVwgOwor6ISx5rOV6KGM54K6ID4gZGFwcG91a291aVwgOwor5YCL5Lq65Li7576pID4ga29qaW5zaHVnaVwgOwor5LiN5q2j6KaP6LuNID4gZnVzZWlraWd1blwgOwor5YeG55yL6K235ammID4ganVua2FuZ29mdVwgOwor5q+N5a2Q5a625bqtID4gYm9zaGlrYXRlaVwgOwor5ZCM5ZCN55Ww5Lq6ID4gZG91bWVpaWppblwgOwor6IKy5YWQ5pmC6ZaTID4gaWt1amlqaWthblwgOwor5pmC5L6h55m66KGMID4gamlrYWhha2tvdVwgOwor5Lya6K2w5LqL6aCFID4ga2FpZ2lqaWtvdVwgOwor5Luu5oOz6KiY5oa2ID4ga2Fzb3VraW9rdVwgOwor6YOo5YiG6bq76YWUID4gYnVidW5tYXN1aVwgOwor5qSc5LqL5o6n6Ki0ID4ga2Vuamlrb3Vzb1wgOwor57WM5Za2566h55CGID4ga2VpZWlrYW5yaVwgOwor6aOb6KGM5pmC6ZaTID4gaGlrb3VqaWthblwgOwor5Zub5a2X54af6KqeID4geW9qaWp1a3Vnb1wgOwor6Ieo5qmf5b+c5aSJID4gcmlua2lvdWhlblwgOwor5a6a5pyf5L+d6Zm6ID4gdGVpa2lob2tlblwgOwor6YCg6KiA6aOb6KqeID4gem91Z2VuaGlnb1wgOwor5LqL5YuZ55So5ZOBID4gamltdXlvdWhpblwgOwor6KiA6Kqe5Zyw55CGID4gZ2VuZ29jaGlyaVwgOwor54qv572q6KGM54K6ID4gaGFuemFpa291aVwgOwor6Ly46YCB5qmf6ZaiID4geXVzb3VraWthblwgOwor6KOc5Yqp6Imm6ImHID4gaG9qb2thbnRlaVwgOwor5LqU6YeM6Zyn5LitID4gZ29yaW11Y2h1dVwgOwor5LiJ5pel5aSp5LiLID4gbWlra2F0ZW5rYVwgOwor5Z+65pys5Y2Y5L2NID4ga2lob250YW4nJ2lcIDsKK+eMtuS6iOacn+mWkyA+IHl1dXlva2lrYW5cIDsKK+iri+iyoOW3peS6iyA+IHVrZW9pa291amlcIDsKK+aEj+aAneaxuuWumiA+IGlzaGlrZXR0ZWlcIDsKK+W+jOmAgOaWh+WtlyA+IGtvdXRhaW1vamlcIDsKK+eUt+WwiuWls+WNkSA+IGRhbnNvbmpvaGlcIDsKK+Wkp+aFiOWkp+aCsiA+IGRhaWppZGFpaGlcIDsKK+WmguS9leanmOW4qyA+IGlrYXNhbWFzaGlcIDsKK+iHqOeVjOS6i+aVhSA+IHJpbmthaWppa29cIDsKK+WboOaenOmWouS/giA+IGluZ2FrYW5rZWlcIDsKK+eVsOeoruS6pOmFjSA+IGlzaHVrb3VoYWlcIDsKK+WknOmWk+WLpOWLmSA+IHlha2Fua2lubXVcIDsKK+W+oeWbveiHquaFoiA+IG9rdW5pamltYW5cIDsKK+elnue1jOenkeWMuyA+IHNoaW5rZWlrYWlcIDsKK+WujOWFqOippuWQiCA+IGthbnplbmppYWlcIDsKK+WFrOekuuWcsOS+oSA+IGtvdWppY2hpa2FcIDsKK+S4gOWtl+S4gOWPpSA+IGljaGlqaWlra3VcIDsKK+WOn+eQhuS4u+e+qSA+IGdlbnJpc2h1Z2lcIDsKK+erpeipseS9nOWutiA+IGRvdXdhc2Fra2FcIDsKK+WmqOWus+ihjOeCuiA+IGJvdWdhaWtvdWlcIDsKK+mBi+WWtue1jOiyuyA+IHVuJydlaWtlaWhpXCA7Civkuozpg6jlkIjlpY8gPiBuaWJ1Z2Fzc291XCA7CivlkI3oqonmr4DmkI0gPiBtZWl5b2tpc29uXCA7CivoqJjpjLLmmKDnlLsgPiBraXJva3VlaWdhXCA7CivpgYvmkKznrqHnkIYgPiB1bnBhbmthbnJpXCA7CivljLvnp5HlpKflraYgPiBpa2FkYWlnYWt1XCA7CivliqDmuJvkuZfpmaQgPiBrYWdlbmpvdWpvXCA7CivpmL/niYfmiKbkuokgPiBhaGVuc2Vuc291XCA7CivllK/llK/oq77oq74gPiBpaWRha3VkYWt1XCA7Civnm7jlr77oqqTlt64gPiBzb3V0YWlnb3NhXCA7Civpo7LphZLpgYvou6IgPiBpbnNodXVudGVuXCA7CivmjIflkI3oqablkIggPiBzaGltZWlqaWFpXCA7CivlvpLlvJ/liLbluqYgPiB0b3RlaXNlaWRvXCA7CivntIvnvr3kuozph40gPiBtb25oYWJ1dGFlXCA7CivosqjluaPliLbluqYgPiBrYWhlaXNlaWRvXCA7Civml6XlkozkuIvpp4QgPiBoaXlvcmlnZXRhXCA7CivkuJbnlYzlubPlkowgPiBzZWthaWhlaXdhXCA7CivnhKHnkIbplqLmlbAgPiBtdXJpa2Fuc3V1XCA7Civpn7PlkJDmnJfmnJcgPiBvbnRvcm91cm91XCA7CivmooXpm6jliY3nt5ogPiBiYWl1emVuc2VuXCA7Civpm7vmsJfmmYLoqIggPiBkZW5raWRva2VpXCA7CivkuozljYHlm5vml6UgPiBuaWp1dXlva2thXCA7CivmgrLmrYzmhbfmhaggPiBoaWtha291Z2FpXCA7CivkuojpmLLljLvlraYgPiB5b2JvdWlnYWt1XCA7CivlvZPmnJ/liKnnm4ogPiB0b3VraXJpZWtpXCA7Civnmq7kuIvohILogqogPiBoaWthc2hpYm91XCA7Civpmbbno4HlmajlupcgPiB0b3VqaWtpdGVuXCA7CivliIfnrKblo7LloLQgPiBraXBwdXVyaWJhXCA7Civoo7jkvZPkuLvnvqkgPiByYXRhaXNodWdpXCA7Civpn7PmqJnmloflrZcgPiBvbnB5b3Vtb2ppXCA7CivkuI3mraPopo/miKYgPiBmdXNlaWtpc2VuXCA7Civntbblr77kvY3nva4gPiB6ZXR0YWlpY2hpXCA7CivnsKHmmJPkv53pmbogPiBrYW4nJ2lob2tlblwgOwor5a+h6aCt5pS/5rK7ID4ga2F0b3VzZWlqaVwgOwor5LiL5rC05Yem55CGID4gZ2VzdWlzaG9yaVwgOwor6KiY5oa257Sg5a2QID4ga2lva3Vzb3NoaVwgOwor6Z+z5aOw6KiY5Y+3ID4gb25zZWlraWdvdVwgOwor5ZKM5bmz5Lya6K2wID4gd2FoZWlrYWlnaVwgOwor56C05aOK5Li7576pID4gaGFrYWlzaHVnaVwgOwor5a6H5a6Z5Z+65ZywID4gdWNodXVraWNoaVwgOwor5LiN5Y+v55+l6KuWID4gZnVrYWNoaXJvblwgOwor6Ieq6KGb5omL5q61ID4gamllaXNodWRhblwgOwor5bCP5aOy5YCk5q61ID4ga291cmluZWRhblwgOwor5biC5aC06KaP5qihID4gc2hpam91a2lib1wgOwor6K2w5ZOh56uL5rOVID4gZ2lpbnJpcHBvdVwgOwor5a2m57Sa5aeU5ZOhID4gZ2Fra3l1dWlpblwgOwor6K2w5Lya5Li7576pID4gZ2lrYWlzaHVnaVwgOwor5Z+656SO56eR5a2mID4ga2lzb2thZ2FrdVwgOwor5o2c5p+75pys6YOoID4gc291c2Fob25idVwgOwor5a6H5a6Z5o6i5p+7ID4gdWNodXV0YW5zYVwgOwor5Lqc6bq757mU54mpID4gYW1hb3JpbW9ub1wgOwor6aCG5bqP5LiN5ZCMID4ganVuam9mdWRvdVwgOwor57WM5riI5o+05YqpID4ga2VpemFpZW5qb1wgOwor57Sv566X5rip5bqmID4gcnVpc2Fub25kb1wgOwor5rWq5ryr5Li7576pID4gcm9tYW5zaHVnaVwgOwor5q2m6KOF6YO95biCID4gYnVzb3V0b3NoaVwgOwor5bmz5ZKM5Zu95a62ID4gaGVpd2Frb2trYVwgOwor6YGT6Lev5Zyw5ZuzID4gZG91cm9jaGl6dVwgOwor5b6h5pyx5Y2w6Ii5ID4gZ29zaHVpbnNlblwgOwor5aSc6YOO6Ieq5aSnID4geWFyb3VqaWRhaVwgOwor6YOo5YiG5ZCm5a6aID4gYnVidW5oaXRlaVwgOwor6Kyb5ZKM5Lya6K2wID4ga291d2FrYWlnaVwgOwor57eo57WE5qmf5qKwID4gaGVuc29raWthaVwgOwor5Yy755mC5Zmo5qKwID4gaXJ5b3VraWthaVwgOwor5q2j6KaP5YiG5biDID4gc2Vpa2lidW5wdVwgOwor5Lya5ZOh5ZCN57C/ID4ga2FpaW5tZWlib1wgOwor5aSp5aSJ5Zyw55WwID4gdGVucGVuY2hpaVwgOwor5pyJ5Y+y5Lul5p2lID4geXV1c2hpaXJhaVwgOwor5L+d6K236Zai56iOID4gaG9nb2thbnplaVwgOwor5pyq5biw6YKE6ICFID4gbWlraWthbnNoYVwgOwor5LiJ5pel5Z2K5Li7ID4gbWlra2Fib3V6dVwgOwor56K65Zu65LiN5YuVID4ga2Fra29mdWRvdVwgOwor5LiN5YG05LiN6ZuiID4gZnVzb2t1ZnVyaVwgOwor5paH5oi/5YW35bGLID4gYnVuYm91Z3V5YVwgOwor5bq354WV5a2X5YW4ID4ga291a2lqaXRlblwgOwor5pyq5p2l5rC45YqrID4gbWlyYWllaWdvdVwgOwor54Sh55CG566X5q61ID4gbXVyaXNhbmRhblwgOwor6Jme576O5Lq66I2JID4gZ3ViaWppbnNvdVwgOwor6LGh54mZ57Sw5belID4gem91Z2V6YWlrdVwgOwor5ruF6Iy25ruF6Iy2ID4gbWVjaGFtZWNoYVwgOwor6aKo6LuK5bCP5bGLID4gZnV1c2hhZ295YVwgOwor5a2Q5L6b6YOo5bGLID4ga29kb21vYmV5YVwgOwor5rGC5oSb6KqH56S6ID4ga3l1dWFpa29qaVwgOwor546L5pS/5b6p5Y+kID4gb3VzZWlmdWtrb1wgOwor5LiA5Lq66YOo5bGLID4gaGl0b3JpYmV5YVwgOwor5LiN6LK36YGL5YuVID4gZnViYWl1bmRvdVwgOwor5ZCd5ZeH5ZCd5ZeHID4ga2VjaGlrZWNoaVwgOwor5a6a5pyf6aCQ6YeRID4gdGVpa2l5b2tpblwgOwor5LiA5a6a5pyf6ZaTID4gaXR0ZWlraWthblwgOwor5Zyw5LiL6YGL5YuVID4gY2hpa2F1bmRvdVwgOwor5oeQ55aR5Li7576pID4ga2FpZ2lzaHVnaVwgOwor6J6N6YCa54Sh56KNID4geXV1enV1bXVnZVwgOwor5L+d5a6J6KaB5ZOhID4gaG9hbicneW91aW5cIDsKK+S4u+aIkeS4u+e+qSA+IHNodWdhc2h1Z2lcIDsKK+S4jeS9nOeCuueKryA+IGZ1c2FrdWloYW5cIDsKK+iIl+ijheeFieeTpiA+IGhvc291cmVuZ2FcIDsKK+aKleW9seWbs+azlSA+IHRvdWVpenVob3VcIDsKK+e3j+eKtuiKseW6jyA+IHNvdWpvdWtham9cIDsKK+a4hea1hOeEoeWeoiA+IHNlaWpvdW11a3VcIDsKK+S4iemdouiomOS6iyA+IHNhbm1lbmtpamlcIDsKK+aJjeawl+e4puaoqiA+IHNhaWtpanV1b3VcIDsKK+acrOS9jeiyqOW5oyA+IGhvbicnaWthaGVpXCA7Civppqzpub/kuIHlr6cgPiBiYWthdGVpbmVpXCA7Civml6XokaHovp7mm7ggPiBuaXBwb2ppc2hvXCA7CivkvY3nm7jnqbrplpMgPiBpc291a3V1a2FuXCA7CivmtbfkuovooZvmmJ8gPiBrYWlqaWVpc2VpXCA7CivnqbrmsJfmqZ/morAgPiBrdXVraWtpa2FpXCA7CivlhbHlkIzkupXmiLggPiBreW91ZG91aWRvXCA7CivlkIjnkIbkuLvnvqkgPiBnb3VyaXNodWdpXCA7CivlpKnmtKXlvqHlp4kgPiBhbWF0c3VtaWtvXCA7CivlpKnmiYvlj6ToiJ4gPiB0ZW50ZWtvbWFpXCA7CivlpJzlhYnmmYLoqIggPiB5YWtvdWRva2VpXCA7Civoh6rou6Lou4rlsYsgPiBqaXRlbnNoYXlhXCA7Civoh6rlrrbnlKjou4ogPiBqaWtheW91c2hhXCA7CivljZjkvY3liLbluqYgPiB0YW4nJ2lzZWlkb1wgOwor5paH5a2X5oOF5aCxID4gbW9qaWpvdWhvdVwgOwor6KaP5Yi26Kej6ZmkID4ga2lzZWlrYWlqb1wgOwor5rCX54SU5LiH5LiIID4ga2llbmJhbmpvdVwgOwor5LiL5rC05bel5LqLID4gZ2VzdWlrb3VqaVwgOwor5ZCI5oSP5oOF5q27ID4gZ291aWpvdXNoaVwgOwor5q2m6KOF5bmz5ZKMID4gYnVzb3VoZWl3YVwgOwor5LuY5biv5LqL6aCFID4gZnV0YWlqaWtvdVwgOwor6KGM5pa55LiN5piOID4geXVrdWVmdW1laVwgOwor5aSp5rCX5LqI5aCxID4gdGVua2l5b2hvdVwgOwor5LiN5bmz5LiN5rqAID4gZnVoZWlmdW1hblwgOwor6KKr5L+d6Zm66ICFID4gaGlob2tlbnNoYVwgOwor6Kaq5a2Q6Zu76KmxID4gb3lha29kZW53YVwgOwor5aSa5oOF5aSa5oGoID4gdGFqb3V0YWtvblwgOwor57WM5Za256C057a7ID4ga2VpZWloYXRhblwgOwor6LOb5Yqp5Lya5ZOhID4gc2Fuam9rYWlpblwgOwor5LiL6YOo5qeL6YCgID4ga2FidWtvdXpvdVwgOwor5q+O5Zyf5puc5pelID4gbWFpZG95b3ViaVwgOwor5LqI566X5o6q572uID4geW9zYW5zb2NoaVwgOwor5LiN56mP5YiG5a2QID4gZnVvbmJ1bnNoaVwgOwor5Zac5oCS5ZOA5qW9ID4ga2lkb2FpcmFrdVwgOwor5ryi5ZKM6L6e5YW4ID4ga2Fud2FqaXRlblwgOwor5Y+L6Kq85Zu95a62ID4geXV1Z2lrb2trYVwgOwor55u45LqS5L+d6Zm6ID4gc291Z29ob2tlblwgOwor5LqL5aSn5Li7576pID4gamlkYWlzaHVnaVwgOwor5LqU6Lyq5Lya6K2wID4gZ29yaW5rYWlnaVwgOwor6Kqe5b2i5aSJ5YyWID4gZ29rZWloZW5rYVwgOwor6Z2e5oim6ZeY5ZOhID4gaGlzZW50b3VpblwgOwor54Sh5b+154Sh5oOzID4gbXVuZW5tdXNvdVwgOwor5ryU566X5omL6aCGID4gZW56YW50ZWp1blwgOwor5q2m5pat5Li7576pID4gYnVkYW5zaHVnaVwgOwor5LiW6Kmx5Lq66ZaTID4gc2V3YW5pbmdlblwgOwor5bm+5L2V5bmz5Z2HID4ga2lrYWhlaWtpblwgOwor5Lq65bel6ZmN6ZuoID4gamlua291a291dVwgOwor6Ieq5ZWP6Ieq562UID4gamltb25qaXRvdVwgOwor55qH57SA5bm05bqmID4ga291a2luZW5kb1wgOwor5Y+j6IWU5aSW56eRID4ga291a291Z2VrYVwgOwor6ISz5oCn6bq755e6ID4gbm91c2VpbWFoaVwgOwor5LqU5Y2B6Z+z6aCGID4gZ29qdXVvbmp1blwgOwor5ryU566X57K+5bqmID4gZW56YW5zZWlkb1wgOwor5Y2B5a2X5p6254q2ID4ganV1amlrYWpvdVwgOwor5LiN6ICB5LiN5q27ID4gZnVyb3VmdXNoaVwgOwor5LiW55WM5Li7576pID4gc2VrYWlzaHVnaVwgOwor6J666Yi/57Sw5belID4gcmFkZW56YWlrdVwgOwor6KiY6LyJ5LqL6aCFID4ga2lzYWlqaWtvdVwgOwor54Kt57Sg57mK57atID4gdGFuc29zZW4nJ2lcIDsKK+eEoee3mumbu+ipsSA+IG11c2VuZGVud2FcIDsKK+a4qeaDheS4u+e+qSA+IG9uam91c2h1Z2lcIDsKK+WAi+S6uue1jOWWtiA+IGtvamlua2VpZWlcIDsKK+WllOaUvuS4jee+iCA+IGhvbnBvdWZ1a2lcIDsKK+mJhOWZqOaZguS7oyA+IHRla2tpamlkYWlcIDsKK+eJqeS+oemosOiytCA+IGJ1a2thdG91a2lcIDsKK+aXpeacrOiInui4iiA+IG5paG9uYnV5b3VcIDsKK+iBvuWUluWtpuagoSA+IHJvdWFnYWtrb3VcIDsKK+ePvuS7o+iLseiqniA+IGdlbmRhaWVpZ29cIDsKK+WNgeS6jOS9v+W+kiA+IGp1dW5pc2hpdG9cIDsKK+aXpeacrOW6reWckiA+IG5paG9udGVpZW5cIDsKK+mBuuS8neaal+WPtyA+IGlkZW4nJ2FuZ291XCA7Civou43kuovovLjpgIEgPiBndW5qaXl1c291XCA7CivkvLTmgKfpgbrkvJ0gPiBoYW5zZWlpZGVuXCA7CivntYzllrblj4LliqAgPiBrZWllaXNhbmthXCA7CivkuojlgpnpgbjmjJkgPiB5b2Jpc2Vua3lvXCA7CivkuojlgpnoiabpmoogPiB5b2Jpa2FudGFpXCA7CivkuojlgpnpgbjmiYsgPiB5b2Jpc2Vuc2h1XCA7CivkuI3lgLbmiLTlpKkgPiBmdWd1dGFpdGVuXCA7CivlubPlkozpg6jpmoogPiBoZWl3YWJ1dGFpXCA7CivllK/jgIXoq77jgIUgPiBpaWRha3VkYWt1XCA7Civoo4HliKTmspnmsbAgPiBzYWliYW56YXRhXCA7CivllrbliKnms5XkurogPiBlaXJpaG91amluXCA7CivorbDkvJrmlL/msrsgPiBnaWthaXNlaWppXCA7Civpm6jlpKnpoIblu7YgPiB1dGVuanVuJydlblwgOwor5LuY5biv6LK755SoID4gZnV0YWloaXlvdVwgOwor5Luj6K2w5ZOh5ZujID4gZGFpZ2lpbmRhblwgOwor5LqM6YeN6Kqy56iOID4gbmlqdXVrYXplaVwgOwor5om26aSK5o6n6ZmkID4gZnV5b3Vrb3Vqb1wgOwor6KGb5pif6YO95biCID4gZWlzZWl0b3NoaVwgOwor6Zu75rCX5Zue6LevID4gZGVua2lrYWlyb1wgOwor5Zyw5LiL5LqM6ZqOID4gY2hpa2FuaWthaVwgOwor6aCQ6YeR5Y+j5bqnID4geW9raW5rb3V6YVwgOwor6Imy5oGL5rKZ5rGwID4gaXJva29pemF0YVwgOwor6LKo5bmj5L6h5YCkID4ga2FoZWlrYWNoaVwgOwor5q6L5YuZ5pW055CGID4gemFubXVzZWlyaVwgOwor5YWs5Za25L+d6Zm6ID4ga291ZWlob2tlblwgOwor6K2y5rih5ouF5L+dID4gam91dG90YW5wb1wgOwor5LiA5a625Zuj5qySID4gaWtrYWRhbnJhblwgOwor5Luj6K2w5ZOh5LyaID4gZGFpZ2lpbmthaVwgOwor6KOc5q2j5LqI566XID4gaG9zZWl5b3NhblwgOwor6YGO5Ymw6Ziy6KGbID4ga2Fqb3Vib3VlaVwgOwor5LqI5YKZ5bqn5bitID4geW9iaXphc2VraVwgOwor6KGb55Sf5Z+65rqWID4gZWlzZWlraWp1blwgOwor5L+d6K235Zuj5L2TID4gaG9nb2RhbnRhaVwgOwor5YSA6KOF6aas6LuKID4gZ2lzb3ViYXNoYVwgOwor5pmC5LqL5ZWP6aGMID4gamlqaW1vbmRhaVwgOwor5aSr5amm5Zan5ZipID4gZnV1ZnVnZW5rYVwgOwor5pat5Zu65oqX6K2wID4gZGFua29rb3VnaVwgOwor5LqU6Lyq6IGW54GrID4gZ29yaW5zZWlrYVwgOwor6Ieq5YiG5Yud5omLID4gamlidW5rYXR0ZVwgOwor6LuN6ZyA5pmv5rCXID4gZ3VuanVrZWlraVwgOwor5Z+65bqV6YOo6ZaAID4ga2l0ZWlidW1vblwgOwor5Li45aSq5bCP5bGLID4gbWFydXRhZ295YVwgOwor5LqI5oOz5Yip55uKID4geW9zb3VyaWVraVwgOwor5LqU6Z+z6Z+z6ZqOID4gZ29vbicnb25rYWlcIDsKK+eBq+awl+WOs+emgSA+IGtha2lnZW5raW5cIDsKK+WNgeWtl+aetuWDjyA+IGp1dWppa2F6b3VcIDsKK+WHpueQhumBjueoiyA+IHNob3Jpa2F0ZWlcIDsKK+S4gOWumuS4jeWkiSA+IGl0dGVpZnVoZW5cIDsKK+aciOS4i+e+juS6uiA+IGdla2thYmlqaW5cIDsKK+eArOaIuOWGhea1tyA+IHNldG9uYWlrYWlcIDsKK+iAgeaUv+ayu+WutiA+IHJvdXNlaWppa2FcIDsKK+WKn+WIqeS4u+e+qSA+IGtvdXJpc2h1Z2lcIDsKK+imj+WItue3qeWSjCA+IGtpc2Vpa2Fud2FcIDsKK+WmguaYr+aIkeiBniA+IG55b3plZ2Ftb25cIDsKK+aYjuayu+aZguS7oyA+IG1laWppamlkYWlcIDsKK+WQjOWMluS9nOeUqCA+IGRvdWthc2F5b3VcIDsKK+WIpemAlOmgkOmHkSA+IGJldHRveW9raW5cIDsKK+S4i+eoruagueaApyA+IGdlc3Vrb25qb3VcIDsKK+aPtOWKqeS6pOmamyA+IGVuam9rb3VzYWlcIDsKK+WbveS8muitsOWToSA+IGtva2thaWdpaW5cIDsKK+Wcn+WcsOWIqeeUqCA+IHRvY2hpcml5b3VcIDsKK+aghOaer+ebm+ihsCA+IGVpa29zZWlzdWlcIDsKK+ebuOS6kuS9nOeUqCA+IHNvdWdvc2F5b3VcIDsKK+iInuWPsOiho+ijhSA+IGJ1dGFpaXNob3VcIDsKK+WQiOitsOWItuW6piA+IGdvdWdpc2VpZG9cIDsKK+mbjOmbhOeVsOagqiA+IHNoaXl1dWlzaHVcIDsKK+WPjeWwhOiqpOW3riA+IGhhbnNoYWdvc2FcIDsKK+Whqee0oOmFuOWhqSA+IGVuc29zYW4nJ2VuXCA7Civntbblr77oqqTlt64gPiB6ZXR0YWlnb3NhXCA7CivnianmkI3kuovmlYUgPiBidXNzb25qaWtvXCA7Civlhajpg6jkv53pmbogPiB6ZW5idWhva2VuXCA7Civmgqrlt6vlsbHmiK8gPiB3YXJ1ZnV6YWtlXCA7CivmlbTlvaLlpJbnp5EgPiBzZWlrZWlnZWthXCA7CivmrablrrbmlL/mqKkgPiBidWtlc2Vpa2VuXCA7CivkuozpoIXliIbluIMgPiBuaWtvdWJ1bnB1XCA7CivmmKDnlLvkvJrnpL4gPiBlaWdhZ2Fpc2hhXCA7CivpiYTnoLLnmb7lkIggPiB0ZXBwb3V5dXJpXCA7CivlkI3oqonkvJrlk6EgPiBtZWl5b2thaWluXCA7Civlv5zli5/nlKjntJkgPiBvdWJveW91c2hpXCA7Civoh6rmtYTkvZznlKggPiBqaWpvdXNheW91XCA7CivlpJbosqjpoJDph5EgPiBnYWlrYXlva2luXCA7CivmgZDmgJbmmKDnlLsgPiBreW91ZnVlaWdhXCA7CivoqrLnqI7mjqfpmaQgPiBrYXplaWtvdWpvXCA7CivoqLHlrrnoqqTlt64gPiBreW95b3Vnb3NhXCA7CivkuI3lrprmnJ/liJEgPiBmdXRlaWtpa2VpXCA7CivmmI7msrvntq3mlrAgPiBtZWlqaWlzaGluXCA7CivoqIDoqp7mqZ/og70gPiBnZW5nb2tpbm91XCA7Civkv53nqI7lgInluqsgPiBob3plaXNvdWtvXCA7CivljLvnmYLmqZ/plqIgPiBpcnlvdWtpa2FuXCA7Civnn7PkupXogbDkupIgPiBpc2hpaXNvdWdvXCA7Civou43kuovlsIHpjpYgPiBndW5qaWZ1dXNhXCA7CivkvY3pmo7li7LnrYkgPiBpa2Fpa3VudG91XCA7CivogJDngavnhYnnk6YgPiB0YWlrYXJlbmdhXCA7Civlj6Tku4rnhKHpoZ4gPiBrb2tvbm11cnVpXCA7Civpm7vms6LnrqHnkIYgPiBkZW5wYWthbnJpXCA7CivmsJHkuovkuovku7YgPiBtaW5qaWppa2VuXCA7Civoh6rnhLbkv53orbcgPiBzaGl6ZW5ob2dvXCA7CivnlLvlg4/lh6bnkIYgPiBnYXpvdXNob3JpXCA7CivnqK7nqK7pm5HlpJogPiBzaHVqdXphdHRhXCA7CivmmKDnlLvkv7PlhKogPiBlaWdhaGFpeXV1XCA7Civnm67ojLbnm67ojLYgPiBtZWNoYW1lY2hhXCA7Civno4HmsJfpjLLpn7MgPiBqaWtpcm9rdW9uXCA7CivkuI3ljZTlkozpn7MgPiBmdWt5b3V3YW9uXCA7CivmnKzkvY3oqJjlj7cgPiBob24nJ2lraWdvdVwgOwor6KGb55Sf566h55CGID4gZWlzZWlrYW5yaVwgOwor55u45LqS5Li7576pID4gc291Z29zaHVnaVwgOwor5b+c5Yuf6LOH6YeRID4gb3Vib3NoaWtpblwgOwor5b6p5Y+k5Li7576pID4gZnVra29zaHVnaVwgOwor5qyh5Lqc56Gr6YW4ID4gamlhcnl1dXNhblwgOwor5bmz5a6J5pmC5LujID4gaGVpYW5qaWRhaVwgOwor5oOF5aCx5qmf5ZmoID4gam91aG91a2lraVwgOwor5LiJ5L2N5LiA5L2TID4gc2FubWlpdHRhaVwgOwor5pS/5YuZ5qyh5a6YID4gc2VpbXVqaWthblwgOwor6ZuM6ZuE55Ww5L2TID4gc2hpeXV1aXRhaVwgOwor5q2m5pat5pS/5rK7ID4gYnVkYW5zZWlqaVwgOwor6YW45YyW54Kt57SgID4gc2Fua2F0YW5zb1wgOwor5rC05b2p55S75a62ID4gc3Vpc2FpZ2FrYVwgOwor5Z+656SO5Luj6KydID4ga2lzb3RhaXNoYVwgOwor5LiA5p2v5qmf5auMID4gaXBwYWlraWdlblwgOwor6YGT6Lev6Ly46YCBID4gZG91cm95dXNvdVwgOwor5Lqc54ax5biv5p6XID4gYW5ldHRhaXJpblwgOwor6Z2S5oGv5ZCQ5oGvID4gYW9pa2l0b2lraVwgOwor5oWH5oeD54Sh56S8ID4gaW5naW5idXJlaVwgOwor57Oe55yf6Z2i55uuID4ga3Vzb21hamltZVwgOwor6Ieq5Li76KaP5Yi2ID4gamlzaHVraXNlaVwgOwor5byl55Sf5pmC5LujID4geWF5b2lqaWRhaVwgOwor55uu6Iy26Ium6Iy2ID4gbWVjaGFrdWNoYVwgOwor5LqI5YKZ5Lya6KuHID4geW9iaWthaWRhblwgOwor562J5L2N5qeL6YCgID4gdG91aWtvdXpvdVwgOwor5LuW5rWB6Kmm5ZCIID4gdGFyeXV1amlhaVwgOwor5a6J5a6a5pON5L2cID4gYW50ZWlzb3VzYVwgOwor54Sh5YSf6KGM54K6ID4gbXVzaG91a291aVwgOwor5aSP5pyf5LyR5pqHID4ga2FraWt5dXVrYVwgOwor5aSP5pyf5a2m5qChID4ga2FraWdha2tvdVwgOwor5a6H5a6Z5Yy75a2mID4gdWNodXVpZ2FrdVwgOwor5ZCN6KqJ6Zmk6ZqKID4gbWVpeW9qb3RhaVwgOwor5LqU6IeT5YWt6IWRID4gZ296b3Vyb3BwdVwgOwor5Z+36KGM5aeU5ZOhID4gc2hpa2tvdWlpblwgOwor5Zub6Z2i5qWa5q2MID4gc2hpbWVuc29rYVwgOwor5aiB6aKo5aCC5aCCID4gaWZ1dWRvdWRvdVwgOwor6LuN5LqL5Lya6K2wID4gZ3VuamlrYWlnaVwgOwor6Leb6KGM5pmv5rCXID4gaGFrb3VrZWlraVwgOwor6aWC6aOp57KJ55eFID4gdWRvbmtvYnlvdVwgOwor5aSp5LiL5LiA5ZOBID4gdGVua2FpcHBpblwgOwor5Z+65Zyw6ZaJ6Y6WID4ga2ljaGloZWlzYVwgOwor562G6KiY55So5YW3ID4gaGlra2l5b3VndVwgOwor6JK45rCX5qmf6ZaiID4gam91a2lraWthblwgOwor56OB5rCX5oq15oqXID4gamlraXRlaWtvdVwgOwor5LiB5a2X5a6a6KaPID4gdGVpamlqb3VnaVwgOwor5Zu65a6a6YeR5YipID4ga290ZWlraW5yaVwgOwor6LW35YuV5pmC6ZaTID4ga2lkb3VqaWthblwgOwor6Ieq5bex5qy6556eID4gamlrb2dpbWFuXCA7CivmhbDlronml4XooYwgPiBpYW5yeW9rb3VcIDsKK+mbu+awl+WZqOWFtyA+IGRlbmtpa2lndVwgOwor5Y2x5qmf5omT6ICFID4ga2lraWRhc2hhXCA7CivloanljJbmsLTntKAgPiBlbmthc3Vpc29cIDsKK+S6uuS6i+eVsOWLlSA+IGppbmppaWRvdVwgOwor5Lqc6Ymb6YmE5p2/ID4gYWVudGVwcGFuXCA7Civpga7kuoznhKHkuowgPiBzaGFuaW11bmlcIDsKK+mBuuS8neWcsOWbsyA+IGlkZW5jaGl6dVwgOwor5LiN5rOV6KGM54K6ID4gZnVob3Vrb3VpXCA7CivmrbvkvZPpgbrmo4QgPiBzaGl0YWlpa2lcIDsKK+WGhemHjuWuieaJkyA+IG5haXlhYW5kYVwgOwor5bmz56mP54Sh5LqLID4gaGVpb25idWppXCA7CivmmI7mmI7lvozml6UgPiBzaGlhc2F0dGVcIDsKK+S4gOawl+WRteaIkCA+IGlra2lrYXNlaVwgOwor5q2m5Zmo6LK45LiOID4gYnVraXRhaXlvXCA7CivkuIDlpKvlpJrlprsgPiBpcHB1dGFzYWlcIDsKK+WNseapn+eqgeegtCA+IGtpa2l0b3BwYVwgOwor5Yy755mC5qmf5ZmoID4gaXJ5b3VraWtpXCA7CivlpKnkuIvnhKHmr5QgPiB0ZW5rYW11aGlcIDsKK+aOqeitt+mDqOmaiiA+IGVuZ29idXRhaVwgOwor6aas6bm/6YeO6YOOID4gYmFrYXlhcm91XCA7Civlj6Poqp7oi7Hoqp4gPiBrb3Vnb2VpZ29cIDsKK+mJhOeBq+WRs+WZjCA+IHRla2thbWlzb1wgOwor6Zi/5byl6ZmA57WMID4gYW1pZGFreW91XCA7CivpmL/lvKXpmYDnsaQgPiBhbWlkYWt1amlcIDsKK+WtmOWcqOaEj+e+qSA+IHNvbnphaWlnaVwgOwor5Y+I5b6T5YWE5byfID4gbWF0YWl0b2tvXCA7Civnvr3mr5vluIPlm6MgPiB1bW91ZnV0b25cIDsKK+WIqeW3seS4u+e+qSA+IHJpa29zaHVnaVwgOwor5Za25Yip5Li7576pID4gZWlyaXNodWdpXCA7CivnhKHlo7DmmKDnlLsgPiBtdXNlaWVpZ2FcIDsKK+ijnOWKqea8ouWtlyA+IGhvam9rYW5qaVwgOwor5ZKM6Iux6L6e5pu4ID4gd2FlaWppc2hvXCA7CivlkIzkvY3lhYPntKAgPiBkb3VpZ2Vuc29cIDsKK+WGjeW+k+WFhOW8nyA+IGZ1dGFpdG9rb1wgOwor5Lqc6Ymb5Ye454mIID4gYWVudG9wcGFuXCA7Civno4HmsJfmta7kuIogPiBqaWtpZnVqb3VcIDsKK+S4jeazleenu+awkSA+IGZ1aG91aW1pblwgOwor6LaK5qip6KGM54K6ID4gZWtrZW5rb3VpXCA7CivkuLvmhI/kuLvnvqkgPiBzaHVpc2h1Z2lcIDsKK+iHquW3seaknOafuyA+IGppa29rZW5zYVwgOwor5aSa5LqL5aSa6ZujID4gdGFqaXRhbmFuXCA7CivvvKHvvKLvvKPpoIYgPiDEk2LEq3NoxKtqdW5cIDsKK+aEj+awl+aPmuaPmiA+IGlraXlvdXlvdVwgOwor5ZKM6Iux6L6e5YW4ID4gd2FlaWppdGVuXCA7CivkuI3mhI/oqabpqJMgPiBmdWlzaGlrZW5cIDsKK+aooeevhOippuWQiCA+IG1vaGFuamlhaVwgOwor5LqM6YeN5q+N6Z+zID4gbmlqdXVib2luXCA7CivmoITogIDmoIToj68gPiBlaXlvdWVpZ2FcIDsKK+avjeiqnuipseiAhSA+IGJvZ293YXNoYVwgOwor5pyo5oi45b6h5YWNID4ga2lkb2dvbWVuXCA7Civoh6rlt7Hnlo7lpJYgPiBqaWtvc29nYWlcIDsKK+WfuuekjuaOp+mZpCA+IGtpc29rb3Vqb1wgOwor5LiA5a6a5rip5bqmID4gaXR0ZWlvbmRvXCA7CivmiYvliY3lkbPlmYwgPiB0ZW1hZW1pc29cIDsKK+WFgeaWh+WFgeatpiA+IGluYnVuaW5idVwgOwor6Ieq5pq06Ieq5qOEID4gamlib3VqaWtpXCA7Civnm7jmkrLpg6jlsYsgPiBzdW1vdWJleWFcIDsKK+iHquW3seS/neWtmCA+IGppa29ob3pvblwgOwor5aSa5LqL5aSa56uvID4gdGFqaXRhdGFuXCA7CivmmI7jgIXlvozml6UgPiBzaGlhc2F0dGVcIDsKK+abluaYp+aooeeziiA+IGFpbWFpbW9rb1wgOwor5LqL5YuZ5qyh5a6YID4gamltdWppa2FuXCA7CivmsJflrofluoPlpKcgPiBraXVrb3VkYWlcIDsKK+WkmuaVsOaEj+imiyA+IHRhc3V1aWtlblwgOwor5q2v56eR5Yy75birID4gc2hpa2Fpc2hpXCA7Civnvo7ljJbpgYvli5UgPiBiaWthdW5kb3VcIDsKK+iHquW3seS4u+e+qSA+IGppa29zaHVnaVwgOwor5a6f6KGM5aeU5ZOhID4gamlra291aWluXCA7CivlkIjmsJfpgZPlrrYgPiBhaWtpZG91a2FcIDsKK+mBuuaXj+aJtuWKqSA+IGl6b2t1ZnVqb1wgOwor5aiR576F5Y+M5qi5ID4gc2FyYXNvdWp1XCA7CivmhI/msJfmj5rjgIUgPiBpa2l5b3V5b3VcIDsKK+iHquW3semhleekuiA+IGppa29rZW5qaVwgOwor6Ieq5bex6LKg5ouFID4gamlrb2Z1dGFuXCA7CivpnLLlpKnpoqjlkYIgPiByb3RlbmJ1cm9cIDsKK+aEj+awl+aKleWQiCA+IGlraXRvdWdvdVwgOwor6YGL5ZCm5aSp6LOmID4gdW5wdXRlbnB1XCA7Civlr4zmoITppIrljJYgPiBmdWVpeW91a2FcIDsKK+WNsOW6puaUr+mCoyA+IGluZG9zaGluYVwgOwor5qyn5YyW5Li7576pID4gb3VrYXNodWdpXCA7CivnhKHkuoznhKHkuIkgPiBtdW5pbXV6YW5cIDsKK+S4ieaXpeS4ieWknCA+IG1pa2thbWl5b1wgOwor54mh5Li55rW36ICBID4gYm90YW4nJ2ViaVwgOwor6Zu75rCX5qmf5ZmoID4gZGVua2lraWtpXCA7Civoh6rlt7Hlq4zmgqogPiBqaWtva2VuJydvXCA7Civln7rmnKzlkIjmhI8gPiBraWhvbmdvdWlcIDsKK+Wwj+WFkOenkeWMuyA+IHNob3VuaWthaVwgOwor5oiR5q2m6ICF576FID4gZ2FtdXNoYXJhXCA7Civoh6rlt7HniqDnibIgPiBqaWtvZ2lzZWlcIDsKK+ebuOS6kuaJtuWKqSA+IHNvdWdvZnVqb1wgOwor5ZCM6Z+z55Ww576pID4gZG91b24nJ2lnaVwgOwor6Ieq5bex5pys5L2NID4gamlrb2hvbicnaVwgOwor55Ww5bi46auY5ripID4gaWpvdWtvdW9uXCA7Civou43kuovmj7TliqkgPiBndW5qaWVuam9cIDsKK+W8iuiho+egtOW4vSA+IGhlaWloYWJvdVwgOwor5LiD5LqU5LiJ57iEID4gc2hpbWVuYXdhXCA7CivmlofljJbpgbrnlKMgPiBidW5rYWlzYW5cIDsKK+WPiOW+k+WnieWmuSA+IG1hdGFpdG9rb1wgOwor6Ieq5a625Y+X57K+ID4gamlrYWp1c2VpXCA7Civoh6rlrrblj5fnsokgPiBqaWthanVmdW5cIDsKK+awkeeUn+WnlOWToSA+IG1pbnNlaWlpblwgOwor5oSb5LuW5Li7576pID4gYWl0YXNodWdpXCA7CivkuIDlhZrkuIDmtL4gPiBpdHRvdWlwcGFcIDsKK+aAquWlh+aYoOeUuyA+IGthaWtpZWlnYVwgOwor6YeI6L+m54mf5bC8ID4gc2hha2FtdW5pXCA7CivnpL7kvJrntYzmuIggPiBzaGFrYWlrZWlcIDsKK+e1kOi3j+i2uuW6pyA+IGtla2thZnV6YVwgOwor6JOW6bq75a2Q5rK5ID4gaGltYXNoaXl1XCA7CivlpKnmsJflhbflkIggPiB0ZW5raWd1YWlcIDsKK+S4gOWPo+WQjOmfsyA+IGlra3Vkb3VvblwgOwor5LiN5Y+v5oCd6K2wID4gZnVrYXNoaWdpXCA7CivljLvkuovkvJ3pgZMgPiBpamlkZW5kb3VcIDsKK+mfs+mDqOiomOWPtyA+IG9uYnVraWdvdVwgOwor5aWI6Imv5pmC5LujID4gbmFyYWppZGFpXCA7CivogLPpvLvlkr3llokgPiBqaWJpaW5rb3VcIDsKK+epuuawl+axmuafkyA+IGt1dWtpb3NlblwgOwor54OP5bi95a2Q6LKdID4gZWJvc2hpZ2FpXCA7CivmnInosaHnhKHosaEgPiB1em91bXV6b3VcIDsKK+i1t+iotOeMtuS6iCA+IGtpc295dXV5b1wgOwor5LyK5Yui56We5a6uID4gaXNlamluZ3V1XCA7CivlsLjkvY3ntKDppJAgPiBzaGlpc29zYW5cIDsKK+mHjuWkqemiqOWRgiA+IG5vdGVuYnVyb1wgOwor54Sh55CG54Sh5L2TID4gbXVyaW11dGFpXCA7CivmhI/msJfou5Lpq5ggPiBpa2lrZW5rb3VcIDsKK+iqnuWwvuWkieWMliA+IGdvYmloZW5rYVwgOwor5Lmd5YiG5Lmd5Y6YID4ga3VidWt1cmluXCA7Civoh6rlt7Hopo/liLYgPiBqaWtva2lzZWlcIDsKK+WQjOWnlOWToeS8miA+IGRvdWlpbmthaVwgOwor5rKZ576F5Y+M5qi5ID4gc2FyYXNvdWp1XCA7CivkuIDlprvlpJrlpKsgPiBpc3NhaXRhZnVcIDsKK+S4jeato+ihjOeCuiA+IGZ1c2Vpa291aVwgOwor54++54q257at5oyBID4gZ2Vuam91aWppXCA7Civnvo7ovp7pupflj6UgPiBiaWppcmVpa3VcIDsKK+S4jeiogOS4jeiqniA+IGZ1Z2VuZnVnb1wgOwor5LiL6YOo5qmf6ZaiID4ga2FidWtpa2FuXCA7CivlgIvkurroqqTlt64gPiBrb2ppbmdvc2FcIDsKK+iHqueUseaEj+W/lyA+IGppeXV1aXNoaVwgOwor5LqM5qyh6KiY5oa2ID4gbmlqaWtpb2t1XCA7CivljLrkvJrorbDlk6EgPiBrdWthaWdpaW5cIDsKK+WPpOS6i+iomOS8nSA+IGtvamlraWRlblwgOwor54Sh54K654Sh562WID4gbXVpbXVzYWt1XCA7CivlsI/nlJ/mhI/msJcgPiBrb25hbWFpa2lcIDsKK+axmuafk+mZpOWOuyA+IG9zZW5qb2t5b1wgOwor5om26aSK576p5YuZID4gZnV5b3VnaW11XCA7Civmk6zlj6TkuLvnvqkgPiBnaWtvc2h1Z2lcIDsKK+S5neWvuOS6lOWIhiA+IGt1c3VuZ29idVwgOwor5oSP5rCX6LuS5piCID4gaWtpa2Vua291XCA7CivlpbPpg47onJjom5sgPiBqb3JvdWd1bW9cIDsKK+S4jemaj+aEj+etiyA+IGZ1enVpaWtpblwgOwor56e76KGM5pyf6ZaTID4gaWtvdWtpa2FuXCA7Civku5jliqDkvqHlgKQgPiBmdWtha2FjaGlcIDsKK+Wcn+WjjOaxmuafkyA+IGRvam91b3NlblwgOwor5LiK6Zmi6K2w5ZOhID4gam91aW5naWluXCA7CivlvqHlrrbpqJLli5UgPiBvaWVzb3Vkb3VcIDsKK+S6jOW6puS4ieW6piA+IG5pZG9zYW5kb1wgOwor6auY56WW6aCt5be+ID4ga29zb3p1a2luXCA7Civkuojlgpnpg6jlk4EgPiB5b2JpYnVoaW5cIDsKK+iHquW3seaJueWIpCA+IGppa29oaWhhblwgOwor6Ieq55S76Ieq6LObID4gamlnYWppc2FuXCA7Civoh6rnlLvoh6rorpogPiBqaWdhamlzYW5cIDsKK+mmluS9jeaJk+iAhSA+IHNodWlkYXNoYVwgOwor5Zug5p6c5b+c5aCxID4gaW5nYW91aG91XCA7CivkuIvlpbPkuIvnlLcgPiBnZWpvZ2VuYW5cIDsKK+WuiealveakheWtkCA+IGFucmFrdWlzdVwgOwor5aeU5ZOh5LuY6KiXID4gaWluZnV0YWt1XCA7CivkuojlgpnpgYvli5UgPiB5b2JpdW5kb3VcIDsKK+mBuueUo+euoeeQhiA+IGlzYW5rYW5yaVwgOwor5LqJ6K2w6KGM54K6ID4gc291Z2lrb3VpXCA7CivpurvlqYbosYbohZAgPiBtxIFib2RvdWZ1XCA7CivmlofljJbmmKDnlLsgPiBidW5rYWVpZ2FcIDsKK+aEj+WRs+WGheWuuSA+IGltaW5haXlvdVwgOwor5LqI5YKZ5Yik5LqLID4geW9iaWhhbmppXCA7CivmrablrrbmmYLku6MgPiBidWtlamlkYWlcIDsKK+WMu+eZgumBjuiqpCA+IGlyeW91a2Fnb1wgOwor5q2m5a625pS/5rK7ID4gYnVrZXNlaWppXCA7CivlpbPnjovpmZvkuIsgPiBqb291aGVpa2FcIDsKK+Wkp+awl+axmuafkyA+IHRhaWtpb3NlblwgOwor5Z+656SO5bel5LqLID4ga2lzb2tvdWppXCA7CivnhKHnkIblvoDnlJ8gPiBtdXJpb3Vqb3VcIDsKK+S9leaZguaZguWIhiA+IGl0c3VqaWJ1blwgOwor55u45LqS5L6d5a2YID4gc291Z29pem9uXCA7Civoqp7lvZnopo/liYcgPiBnb2lraXNva3VcIDsKK+iHquW3seW8geittyA+IGppa29iZW5nb1wgOwor5LqU5Y2B6Z+z5ZuzID4gZ29qdXVvbnp1XCA7CivliKnku5bkuLvnvqkgPiByaXRhc2h1Z2lcIDsKK+WKoOaMgeeliOeltyA+IGthamlraXRvdVwgOwor6Iqx5Y2J5ZyS6Iq4ID4ga2FraWVuZ2VpXCA7Civlkozoo73oi7Hoqp4gPiB3YXNlaWVpZ29cIDsKK+S7ruWQjeaJi+acrCA+IGthbmFkZWhvblwgOwor6Iux5ZKM6L6e5YW4ID4gZWl3YWppdGVuXCA7CivkuojlgpnkvJrorbAgPiB5b2Jpa2FpZ2lcIDsKK+S6jOmZouWItuW6piA+IG5paW5zZWlkb1wgOwor5aSP5pyf5pmC6ZaTID4ga2FraWppa2FuXCA7CivkupXmiLjlsYvlvaIgPiBpZG95YWthdGFcIDsKK+iHquW3seefm+ebviA+IGppa29tdWp1blwgOwor5Y2x5qmf566h55CGID4ga2lraWthbnJpXCA7Civln7rnpI7kvZPmuKkgPiBraXNvdGFpb25cIDsKK+ebguiYreebhuS8miA+IHVyYWJvbicnZVwgOwor5Yy756eR5q2v56eRID4gaWthc2hpa2FcIDsKK+S6jOW6puaJi+mWkyA+IG5pZG9kZW1hXCA7Civkuo7omK3nm4bkvJogPiB1cmFib24nJ2VcIDsKK+aBteavlOWvv+mhlCA+IGViaXN1Z2FvXCA7CivmhJrlm7PmhJrlm7MgPiBndXp1Z3V6dVwgOwor5ZKM5rCX6Je56Je5ID4gd2FraWFpYWlcIDsKK+S4jeecn+mdouebriA+IGZ1bWFqaW1lXCA7CivlvpfmiYvli53miYsgPiBldGVrYXR0ZVwgOwor5a+E5LuY6KGM54K6ID4ga2lmdWtvdWlcIDsKK+S5juWPpOatoueCuSA+IG9rb3RvdGVuXCA7Civlr4zlo6vkupTmuZYgPiBmdWppZ29rb1wgOwor5piv5piv6Z2e6Z2eID4gemV6ZWhpaGlcIDsKK+aIkeWIqeaIkeWIqSA+IGdhcmlnYXJpXCA7CivmsZ/miLjmmYLku6MgPiBlZG9qaWRhaVwgOwor5q2v56eR5Yy76ZmiID4gc2hpa2FpaW5cIDsKK+aEj+awl+mYu+WWqiA+IGlraXNvc291XCA7CivpgZXniq/ooYzngrogPiBpaGFua291aVwgOwor5oG15q+U6aCI6KybID4gZWJpc3Vrb3VcIDsKK+S4gOatqeS4gOatqSA+IGlwcG9pcHBvXCA7CivlkozmsJfol7njgIUgPiB3YWtpYWlhaVwgOwor54Sh5pyf5bu25pyfID4gbXVraWVua2lcIDsKK+i1pOmzpei1pOiFuSA+IGFrYWtva2tvXCA7CivlpKnniL7kuY7ms6IgPiB0ZW5pd29oYVwgOwor5L6d5oCZ6LSU5bGTID4gZWtvaGlpa2lcIDsKK+S6i+WLmeapn+WZqCA+IGppbXVraWtpXCA7Civoh6rlt7HmmpfnpLogPiBqaWtvYW5qaVwgOwor5Lyv5YmM6KW/54i+ID4gYnVyYWppcnVcIDsKK+S4i+mZouitsOWToSA+IGthaW5naWluXCA7Civpm7vmsJfmpIXlrZAgPiBkZW5raWlzdVwgOwor5bmz5ZKM57at5oyBID4gaGVpd2FpamlcIDsKK+acieeCuui7ouWkiSA+IHVpdGVucGVuXCA7Civoi7HlsI/mloflrZcgPiBlaWtvbW9qaVwgOwor5L2V5Yem5YW25YemID4gZG9rb3Nva29cIDsKK+W8lueIvuS5juazoiA+IHRlbml3b2hhXCA7Civlh7rmnaXlhbflkIggPiBkZWtpZ3VhaVwgOwor5oSP5ZGz6YOo6ZaAID4gaW1pYnVtb25cIDsKK+Wcn+W3puihm+mWgCA+IGRvemFlbW9uXCA7CivmhI/lkbPljp/nkIYgPiBpbWlnZW5yaVwgOwor5L6d5Lyw6LSU5bGTID4gZWtvaGlpa2lcIDsKK+WppuS6uuenkeWMuyA+IGZ1amlua2FpXCA7Civng4/luL3lrZDlkI0gPiBlYm9zaGluYVwgOwor6aKo6YKq5rCX5ZGzID4ga2F6ZWdpbWlcIDsKK+W3pumhp+WPs+echCA+IHNha291YmVuXCA7Civku67lkI3mloflrZcgPiBrYW5hbW9qaVwgOwor5Zyw5LiL6Laz6KKLID4gamlrYXRhYmlcIDsKK+Wkp+ecn+mdouebriA+IG9vbWFqaW1lXCA7CivmpJzpnZ7pgZXkvb8gPiBrZWJpaXNoaVwgOwor5b6h54Sh5rKZ5rGwID4gZ29idXNhdGFcIDsKK+WPs+mhp+W3puechCA+IHVrb3NhYmVuXCA7CivpgZXms5XooYzngrogPiBpaG91a291aVwgOwor5Lya5oSP5paH5a2XID4ga2FpaW1vamlcIDsKK+WQiOe4geWlh+e4gSA+IGFpZW5raWVuXCA7Civnm6Pmn7vlp5Tlk6EgPiBrYW5zYWlpblwgOwor55Ww5Y+j5ZCM6Z+zID4gaWt1ZG91b25cIDsKK+W8leeBq+a4qeW6piA+IGlua2FvbmRvXCA7CivpmL/lj6TlsYvosp0gPiBha295YWdhaVwgOwor55Sf55yf6Z2i55uuID4ga2ltYWppbWVcIDsKK+aYr+OAhemdnuOAhSA+IHplemVoaWhpXCA7CivnhKHnkIbnn6LnkIYgPiBtdXJpeWFyaVwgOwor56S65aiB6YGL5YuVID4gamlpdW5kb3VcIDsKK+S4gOWkq+S4gOWppiA+IGlwcHVpcHB1XCA7CivkupTliIbkupTliIYgPiBnb2J1Z29idVwgOwor5aSp54i+6YGg5rOiID4gdGVuaXdvaGFcIDsKK+W+jOmzpee+vemZoiA+IGdvdG9iYWluXCA7CivmnInogLbnhKHogLYgPiB1eWFtdXlhXCA7CivkupznsbPliKnliqAgPiBhbWVyaWthXCA7CivojY/og6HpurvmsrkgPiBlZ29tYXl1XCA7Civnmq7ohprnp5HljLsgPiBoaWZ1a2FpXCA7Civlj7PlvoDlt6blvoAgPiB1b3VzYW91XCA7Civkupzpurvku4HmsrkgPiBhbWFuaXl1XCA7Civpmpzms6Xng4/os4ogPiBhb3JpaWthXCA7CivlvqHmiqvpnLLnm64gPiBvaGlyb21lXCA7CivotaTllYTmnKjps6UgPiBha2FnZXJhXCA7Civkv53orbflp5Tlk6EgPiBob2dvaWluXCA7CivpmL/lvJfliKnliqAgPiBhZnVyaWthXCA7Civku4rml6XmmI7ml6UgPiBreW91YXN1XCA7Civkupzmi4nmr5jkupwgPiBhcmFiaWFcIDsKK+S8iuWLoua1t+iAgSA+IGlzZWViaVwgOwor5Lqc5YmM5q+U5LqcID4gYXJhYmlhXCA7Civnt5HllYTmnKjps6UgPiBhb2dlcmFcIDsKK+W+oeebruimi+W+lyA+IG9tZW1pZVwgOwor5a+/5pWZ5a6kID4ga290b2J1a2lreW91c2hpdHN1XCA7Civnp4HlsI/oqqwgPiB3YXRha3VzaGlzaG91c2V0c3VcIDsKK+S4g+S4g+aXpSA+IHNoaWNoaXNoaWNoaW5pY2hpXCA7CivntKvpnLLojYkgPiBtdXJhc2FraXRzdXl1a3VzYVwgOwor5LiD44CF5pelID4gc2hpY2hpc2hpY2hpbmljaGlcIDsKK+i7veWPo+ipsSA+IGthcnVrdWNoaWJhbmFzaGlcIDsKK+akjeeJqeizqiA+IHNob2t1YnV0c3VzaGl0c3VcIDsKK+Wuv+ebtOWupCA+IHNodWt1Y2hva3VzaGl0c3VcIDsKK+S4gOWPo+ipsSA+IGhpdG9rdWNoaWJhbmFzaGlcIDsKK+etjeeUn+a0uyA+IHRha2Vub2tvc2Vpa2F0c3VcIDsKK+itsua4oeS6uiA+IHl1enVyaXdhdGFzaGluaW5cIDsKK+WGheW5leipsSA+IHVjaGltYWt1YmFuYXNoaVwgOwor6ZuG5pyt5L+CID4gc2h1dXNhdHN1Z2FrYXJpXCA7Civph5Hmp4zpoK0gPiBrYW5hZHp1Y2hpYXRhbWFcIDsKK+WHuuacreaOmyA+IHNodXNzYXRzdWdha2FyaVwgOwor5LiJ5oyH6bSOID4gbWl0c3V5dWJpa2Ftb21lXCA7Civlh7rmnK3kv4IgPiBzaHVzc2F0c3VnYWthcmlcIDsKK+iFsOi1pOeHlSA+IGtvc2hpYWthdHN1YmFtZVwgOwor6Ki65a+f5a6kID4gc2hpbnNhdHN1c2hpdHN1XCA7CivorZjliKXlipsgPiBzaGlraWJldHN1cnlva3VcIDsKK+engeiHqui6qyA+IHdhdGFrdXNoaWppc2hpblwgOwor5bmz5riF55ubID4gdGFpcmFub2tpeW9tb3JpXCA7CivlhaXlh7rlipsgPiBueXV1c2h1dHN1cnlva3VcIDsKK+e0m+WkseWxiiA+IGZ1bnNoaXRzdXRvZG9rZVwgOwor5rGC6IG35L+CID4ga3l1dXNob2t1Z2FrYXJpXCA7Civph5Hlo7rnnLwgPiBrYW5hdHN1Ym9tYW5ha29cIDsKK+mZs+WIl+WupCA+IGNoaW5yZXRzdXNoaXRzdVwgOwor54m55Yil5a6kID4gdG9rdWJldHN1c2hpdHN1XCA7CivntKvmsLTmmbYgPiBtdXJhc2FraXp1aXNob3VcIDsKK+WPlue3oOW9uSA+IHRvcmlzaGltYXJpeWFrdVwgOwor54mH5Y+j6bCvID4ga2F0YWt1Y2hpaXdhc2hpXCA7CivkuI3lgJLnv4EgPiBva2lhZ2FyaWtvYm9zaGlcIDsKK+S4jeiCluengSA+IGZ1c2hvdXdhdGFrdXNoaVwgOwor5aSx5qWt546HID4gc2hpdHN1Z3lvdXJpdHN1XCA7Civmir3lh7rniakgPiBjaHV1c2h1dHN1YnV0c3VcIDsKK+Wls+WPi+mBlCA+IG9uJyduYXRvbW9kYWNoaVwgOwor55m+5pel5ZKzID4gaHlha3VuaWNoaXpla2lcIDsKK+ihjOWIl+W8jyA+IGd5b3VyZXRzdXNoaWtpXCA7Civlj5bmibHkurogPiB0b3JpYXRzdWthaW5pblwgOwor5Ye65YWl5Zu9ID4gc2h1dHN1bnl1dWtva3VcIDsKK+aJjeanjOmgrSA+IHNhaWR6dWNoaWF0YW1hXCA7CivpgIboqqznmoQgPiBneWFrdXNldHN1dGVraVwgOwor5Ymv6aOf54mpID4gZnVrdXNob2t1YnV0c3VcIDsKK+eToueuqumvsCA+IGh5b3V0YW4nJ25hbWF6dVwgOwor5p2x5Y2K55CDID4gaGlnYXNoaWhhbmt5dXVcIDsKK+WLleeJqeizqiA+IGRvdWJ1dHN1c2hpdHN1XCA7CivotorkuK3opIwgPiBldGNodXVmdW5kb3NoaVwgOwor5Y2w5Y2K57qPID4gc2hpcnVzaGliYW50ZW5cIDsKK+S7leaWueipsSA+IHNoaWthdGFiYW5hc2hpXCA7CivmlLnmnK3kv4IgPiBrYWlzYXRzdWdha2FyaVwgOwor5YmD5YiA6KemID4ga2FtaXNvcmlrYWJ1cmVcIDsKK+Wjsua4oeiovCA+IHVyaXdhdGFzaGlzaG91XCA7CivlkYrliKXlvI8gPiBrb2t1YmV0c3VzaGlraVwgOwor5aS+6ZuR54mpID4ga3lvdXphdHN1YnV0c3VcIDsKK+e3keeZveiJsiA+IHJ5b2t1aGFrdXNob2t1XCA7Civohp3plqLnr4AgPiBzaGl0c3VrYW5zZXRzdVwgOwor5o6l57aa5Y+jID4gc2V0c3V6b2t1Z3VjaGlcIDsKK+WHneedgOWKmyA+IGd5b3VjaGFrdXJ5b2t1XCA7Civmh5Dli5jlrpogPiBmdXRva29yb2thbmpvdVwgOwor5o+Q5Ye654mpID4gdGVpc2h1dHN1YnV0c3VcIDsKK+WHuuacreWPoyA+IHNodXNzYXRzdWd1Y2hpXCA7CivlpKnml6Xnk6YgPiB0ZW5qaXRzdWdhd2FyYVwgOwor5aSi54mp6KqeID4geXVtZW1vbm9nYXRhcmlcIDsKK+S4gOaYlOWJjSA+IGhpdG9tdWthc2hpbWFlXCA7Civnmb7ljZLplbcgPiBoeWFrdXNvdHN1Y2hvdVwgOwor6YCG6KGM5YiXID4gZ3lha3VneW91cmV0c3VcIDsKK+aXreaXpeeroCA+IGt5b2t1aml0c3VzaG91XCA7Civlubzlj4vpgZQgPiBvc2FuYXRvbW9kYWNoaVwgOwor5bC76Lu95aWzID4gc2hpcmlnYXJ1b24nJ25hXCA7Civnmb3piaLlt7sgPiBzaGlyb2hhY2hpbWFraVwgOwor6JaE57Sr6ImyID4gdXN1bXVyYXNha2lpcm9cIDsKK+WHuuWhgeeOhyA+IHNodXRzdXJ1aXJpdHN1XCA7Civpm7vkv6Hmn7EgPiBkZW5zaGluYmFzaGlyYVwgOwor5YaF6Ki86KmxID4gbmFpc2hvdWJhbmFzaGlcIDsKK+e3keeOieefsyA+IHJ5b2t1Z3lva3VzZWtpXCA7Civohp3ok4vpqqggPiBzaGl0c3VnYWlrb3RzdVwgOwor5Luu5Ye6542EID4ga2FyaXNodXRzdWdva3VcIDsKK+eJueWIpeiBtyA+IHRva3ViZXRzdXNob2t1XCA7Civlkb3ovpvovpsgPiBpbm9jaGlnYXJhZ2FyYVwgOwor6Lui5YWl5bGKID4gdGVuJydueXV1dG9kb2tlXCA7Civlj5fku5jkv4IgPiB1a2V0c3VrZWdha2FyaVwgOwor5bCx6IG3546HID4gc2h1dXNob2t1cml0c3VcIDsKK+e1puaWmeiiiyA+IGt5dXVyeW91YnVrdXJvXCA7CivmpI3nianlraYgPiBzaG9rdWJ1dHN1Z2FrdVwgOwor5aSn5ZKM6a2CID4geWFtYXRvZGFtYXNoaWlcIDsKK+S4i+WPsOaJgCA+IHNoaW1vZGFpZG9rb3JvXCA7CivlsLHogbflj6MgPiBzaHV1c2hva3VndWNoaVwgOwor562L6IKJ6LOqID4ga2luJyduaWt1c2hpdHN1XCA7Civlipvku5XkuosgPiBjaGlrYXJhc2hpZ290b1wgOwor5auh5Ye65a2QID4gY2hha3VzaHV0c3VzaGlcIDsKK+eJh+iiluacuiA+IGthdGFzb2RlZHp1a3VlXCA7CivljZLmpa3lvI8gPiBzb3RzdWd5b3VzaGlraVwgOwor5YWJ6YCa5L+hID4gaGlrYXJpdHN1dXNoaW5cIDsKK+WPlue3oOazlSA+IHRvcmlzaGltYXJpaG91XCA7CivmiYvooZPlrqQgPiBzaHVqdXRzdXNoaXRzdVwgOwor6Kmm552A5a6kID4gc2hpY2hha3VzaGl0c3VcIDsKK+eIhueZuueJqSA+IGJha3VoYXRzdWJ1dHN1XCA7CivnjKrmrabogIUgPiBpbm9zaGlzaGltdXNoYVwgOwor5aSn6buS5p+xID4gZGFpa29rdWJhc2hpcmFcIDsKK+mOluW4t+WtkCA+IGt1c2FyaWthdGFiaXJhXCA7CivkuI3our7ogIUgPiBidXNoaXRzdWtlbW9ub1wgOwor5LiJ6Imy6I+rID4gc2Fuc2hva3VzdW1pcmVcIDsKK+WRvei+m+OAhSA+IGlub2NoaWdhcmFnYXJhXCA7Civlh7rlipvnt5ogPiBzaHV0c3VyeW9rdXNlblwgOwor54iG55m65YqbID4gYmFrdWhhdHN1cnlva3VcIDsKK+edgOS/oeWxgCA+IGNoYWt1c2hpbmt5b2t1XCA7CivmjpLlh7rniakgPiBoYWlzaHV0c3VidXRzdVwgOwor6Ymx54mp6LOqID4ga291YnV0c3VzaGl0c3VcIDsKK+aMr+WHuuWxgCA+IGZ1cmlkYXNoaWt5b2t1XCA7Civln7fli5nlrqQgPiBzaGl0c3VtdXNoaXRzdVwgOwor55m654ax6YePID4gaGF0c3VuZXRzdXJ5b3VcIDsKK+Wkp+WFq+i7iiA+IGRhaWhhY2hpZ3VydW1hXCA7Civnm7TmjqXnmoQgPiBjaG9rdXNldHN1dGVraVwgOworzrjnkIboq5YgPiBzaGlcIMyEdGFcIMyEcmlyb25cIDsKK+aUueacremLjyA+IGthaXNhdHN1aGFzYW1pXCA7CivkuI3mnZ/ogIUgPiBmdXRzdXRzdWthbW9ub1wgOwor54eV5Y2D6bOlID4gdHN1YmFtZWNoaWRvcmlcIDsKK+S8keaGqeWupCA+IGt5dXVrZWlzaGl0c3VcIDsKK+aXpeayoeWJjSA+IG5pY2hpYm90c3V6ZW5cIDsKK+eLkOagvOWtkCA+IGtpdHN1bmVnb3VzaGlcIDsKK+mWsuimp+WupCA+IGV0c3VyYW5zaGl0c3VcIDsKK+W7uuevieeJqSA+IGtlbmNoaWt1YnV0c3VcIDsKK+Wun+izqueahCA+IGppc3NoaXRzdXRla2lcIDsKK+e/jOOAheaXpSA+IHlva3V5b2t1aml0c3VcIDsKK+ippuiBtOWupCA+IHNoaWNob3VzaGl0c3VcIDsKK+WPpOW8t+iAhSA+IGZ1cnV0c3V3YW1vbm9cIDsKK+eLuOWbg+WtkCA+IHRhbnVraWJheWFzaGlcIDsKK+akjeavm+ihkyA+IHNob2t1bW91anV0c3VcIDsKK+aXp+ato+aciCA+IGt5dXVzaG91Z2F0c3VcIDsKK+S4uOm8u+icgiA+IG1hcnVoYW5hYmFjaGlcIDsKK+iEmuiJsuiAhSA+IGt5YWt1c2hva3VzaGFcIDsKK+adsea1t+WyuCA+IGhpZ2FzaGlrYWlnYW5cIDsKK+ebtOeri+iMjiA+IGNob2t1cml0c3VrZWlcIDsKK+eZvembquWnqyA+IHNoaXJheXVraWhpbWVcIDsKK+aWreeGseeahCA+IGRhbicnbmV0c3V0ZWtpXCA7Civms6XnuITlvI8gPiBkb3JvbmF3YXNoaWtpXCA7CivoprPplrLlvI8gPiBrYW4nJ2V0c3VzaGlraVwgOwor5ZC45rm/5oCnID4ga3l1dXNoaXRzdXNlaVwgOwor5raI5qW155qEID4gc2hvdWt5b2t1dGVraVwgOwor5ryC5rWB54mpID4gaHlvdXJ5dXVidXRzdVwgOwor5LiL5LqM5qGBID4gc2hpbW9mdXRha2V0YVwgOwor5oaC6ayx6LOqID4geXV1dXRzdXNoaXRzdVwgOwor5L+E5oiQ6YeRID4gbml3YWthbmFyaWtpblwgOwor5Y+O56mr54mpID4gc2h1dWtha3VidXRzdVwgOwor6LK45LuY6YeRID4ga2FzaGl0c3VrZWtpblwgOwor5YuV54mp6YGUID4gZG91YnV0c3V0YWNoaVwgOwor6aOf57On5bqBID4gc2hva3VyeW91Y2hvdVwgOwor6IW655eF6LOqID4gc2VuYnlvdXNoaXRzdVwgOwor5rCR57SE6KqsID4gbWluJyd5YWt1c2V0c3VcIDsKK+WQuOa5v+WJpCA+IGt5dXVzaGl0c3V6YWlcIDsKK+S6jOeti+mBkyA+IGZ1dGFzdWppbWljaGlcIDsKK+WNiumVt+mdtCA+IGhhbicnbmFnYWd1dHN1XCA7CivmoKHplbflrqQgPiBrb3VjaG91c2hpdHN1XCA7Civmsbrmlq3lipsgPiBrZXRzdWRhbnJ5b2t1XCA7Civlt67lh7rkurogPiBzYXNoaWRhc2hpbmluXCA7CivkuIPmm5zooaggPiBzaGljaGl5b3VoeW91XCA7CivngbDnt5HoibIgPiBrYWlyeW9rdXNob2t1XCA7CivmnKzos6rnmoQgPiBob25zaGl0c3V0ZWtpXCA7CivmsYLlv4PlipsgPiBreXV1c2hpbnJ5b2t1XCA7CivntZDlm6PlvI8gPiBrZXRzdWRhbnNoaWtpXCA7CivmlLnmnK3lj6MgPiBrYWlzYXRzdWd1Y2hpXCA7CivnuYHmrpblipsgPiBoYW5zaG9rdXJ5b2t1XCA7Civlm4PlrZDoqZ4gPiBoYXlhc2hpa290b2JhXCA7Civkurrlt67mjIcgPiBoaXRvc2FzaGl5dWJpXCA7CivkuIPpnaLps6UgPiBzaGljaGltZW5jaG91XCA7CivnmbroqIDlipsgPiBoYXRzdWdlbnJ5b2t1XCA7Civlh7rkuJbpoK0gPiBzaHVzc2VnYXNoaXJhXCA7Civpm4bkuK3lipsgPiBzaHV1Y2h1dXJ5b2t1XCA7CivlsYjovrHnmoQgPiBrdXRzdWpva3V0ZWtpXCA7CivllYblo7LmlbUgPiBzaG91YmFpZ2F0YWtpXCA7Civlh7rnlJ/lsYogPiBzaHVzc2VpdG9kb2tlXCA7CivohLHnjYTlm5ogPiBkYXRzdWdva3VzaHV1XCA7Civlj6Tmrablo6sgPiBmdXJ1dHN1d2Ftb25vXCA7CivlnJ/nlKPoqbEgPiBtaXlhZ2ViYW5hc2hpXCA7Civnmb3oo4XmnZ8gPiBzaGlyb3Nob3V6b2t1XCA7CivohbDlt77nnYAgPiBrb3NoaWdpbmNoYWt1XCA7CivljYrnhp/ljbUgPiBoYW5qdWt1dGFtYWdvXCA7CivmsqHluLjorZggPiBib3RzdWpvdXNoaWtpXCA7Civpm4blobXooosgPiBzaHV1amluYnVrdXJvXCA7CivkuInkuIvlpbQgPiBzYW5zaGl0YXlha2tvXCA7CivlnLDos6rlraYgPiBjaGlzaGl0c3VnYWt1XCA7Civmpb3lsYvoqbEgPiBnYWt1eWFiYW5hc2hpXCA7CivlvLflparniakgPiBnb3VkYXRzdWJ1dHN1XCA7CivplpHml6XmnIggPiBrYW5qaXRzdWdldHN1XCA7CivmjJHnmbrnmoQgPiBjaG91aGF0c3V0ZWtpXCA7CivnpZ3npa3ml6UgPiBzaHVrdXNhaWppdHN1XCA7CivlvavliLvooZMgPiBjaG91a29rdWp1dHN1XCA7CivkuK3nq4vlm70gPiBjaHV1cml0c3Vrb2t1XCA7CivllqvnhZnlrqQgPiBraXRzdWVuc2hpdHN1XCA7CivkuIDkuKHml6UgPiBpY2hpcnlvdWppdHN1XCA7CivmqYvohJroiJ8gPiBreW91a3lha3VzaHV1XCA7CivmvKzniannn7MgPiB0c3VrZW1vbm9pc2hpXCA7CivlpJblh7rkuK0gPiBnYWlzaHV0c3VjaHV1XCA7CivpiYTmn5PoibIgPiB0ZXRzdXNlbnNob2t1XCA7Civni6znq4vlv4MgPiBkb2t1cml0c3VzaGluXCA7Civku4rmnIjmnKsgPiBrb25nZXRzdW1hdHN1XCA7Civlrp/nianlpKcgPiBqaXRzdWJ1dHN1ZGFpXCA7Civmi77lvpfniakgPiBzaHV1dG9rdWJ1dHN1XCA7CivlgInmlbfmlpkgPiBrdXJhc2hpa2lyeW91XCA7Civos4fmlpnlrqQgPiBzaGlyeW91c2hpdHN1XCA7CivosrfnianooosgPiBrYWltb25vYnVrdXJvXCA7CivlkLjlj47lipsgPiBreXV1c2h1dXJ5b2t1XCA7Civni6znq4vlm70gPiBkb2t1cml0c3Vrb2t1XCA7CivooYDlsL/nl4cgPiBrZXRzdW55b3VzaG91XCA7CivlvavliLvniakgPiBjaG91a29rdWJ1dHN1XCA7CivloKrlv43ooosgPiBrYW4nJ25pbmJ1a3Vyb1wgOwor56S+6ZW35a6kID4gc2hhY2hvdXNoaXRzdVwgOwor5Li85YuY5a6aID4gZG9uYnVyaWthbmpvdVwgOwor546J5a2Q5Li8ID4gdGFtYWdvZG9uYnVyaVwgOwor57iu5Yi354mIID4gc2h1a3VzYXRzdWJhblwgOwor5LuK5pel55qEID4ga29uJyduaWNoaXRla2lcIDsKK+a0nuWvn+WKmyA+IGRvdXNhdHN1cnlva3VcIDsKK+advumjn+iZqyA+IG1hdHN1a3VpbXVzaGlcIDsKK+iKi+iUk+W8jyA+IGltb2R6dXJ1c2hpa2lcIDsKK+izqumHj+aVsCA+IHNoaXRzdXJ5b3VzdXVcIDsKK+WIpemFjemBlCA+IGJldHN1aGFpdGF0c3VcIDsKK+S7iuaXpeanmCA+IGtvbicnbmljaGlzYW1hXCA7CivlhqDlpKfkvJogPiBrYW5tdXJpdGFpa2FpXCA7Civov73opIfmm7IgPiB0c3VpZnVrdWt5b2t1XCA7CivntYTlkIjpoK0gPiBrdW1pYWlnYXNoaXJhXCA7CivmlaPmranml4EgPiBzYW5wb2thdGFnYXRhXCA7CivkvpvoqJfniakgPiBreW91dGFrdWJ1dHN1XCA7Civlh7rpoZjkurogPiBzaHV0c3VnYW4nJ25pblwgOwor57KY552A5YqbID4gbmVuY2hha3VyeW9rdVwgOwor5a6/5rOK5paZID4gc2h1a3VoYWt1cnlvdVwgOwor5p6d5Z6C5qGcID4gc2hpZGFyZXpha3VyYVwgOwor5Y+k5Luj57SrID4ga29kYWltdXJhc2FraVwgOwor5p6d5Z6C5p+zID4gc2hpZGFyZXlhbmFnaVwgOwor5rex57eR6ImyID4gZnVrYW1pZG9yaWlyb1wgOwor56mN6Zuq6YePID4gc2VraXNldHN1cnlvdVwgOwor56CU56m25a6kID4ga2Vua3l1dXNoaXRzdVwgOwor5bel5L2c5a6kID4ga291c2FrdXNoaXRzdVwgOwor5L2c5YqH6KGTID4gc2FrdWdla2lqdXRzdVwgOwor55+t5pel5pyIID4gdGFuaml0c3VnZXRzdVwgOwor6LuK5o6M5a6kID4gc2hhc2hvdXNoaXRzdVwgOwor6Ki65a+f5paZID4gc2hpbnNhdHN1cnlvdVwgOwor5L+457Wm6KKLID4gaG91a3l1dWJ1a3Vyb1wgOwor5raI5aSx54K5ID4gc2hvdXNoaXRzdXRlblwgOwor6Kqt5pu45a6kID4gZG9rdXNob3NoaXRzdVwgOwor5a6/5rOK5YWIID4gc2h1a3VoYWt1c2FraVwgOwor6K2Y5Yil5a2QID4gc2hpa2liZXRzdXNoaVwgOwor5Y2X5Y2K55CDID4gbWluYW1paGFua3l1dVwgOwor6IG35ZOh5a6kID4gc2hva3VpbnNoaXRzdVwgOwor5L+h546E6KKLID4gc2hpbmdlbmJ1a3Vyb1wgOwor5oGL54mp6KqeID4ga29pbW9ub2dhdGFyaVwgOwor5LiA57KS56iuID4gaGl0b3RzdWJ1ZGFuZVwgOwor57eR5p+x55+zID4gcnlva3VjaHV1c2VraVwgOwor5piU5rCX6LOqID4gbXVrYXNoaWthdGFnaVwgOwor5L+E5YuJ5by3ID4gbml3YWthYmVua3lvdVwgOwor6YCy5a2m546HID4gc2hpbmdha3VyaXRzdVwgOwor5q6/5qeY6JuZID4gdG9ub3NhbWFnYWVydVwgOwor6Z2Z6ISI6KGAID4gam91bXlha3VrZXRzdVwgOwor5LiA562L6YGTID4gaGl0b3N1amltaWNoaVwgOwor5bCx5qWt546HID4gc2h1dWd5b3VyaXRzdVwgOwor5YaF57eS6KmxID4gbmFpc2hvYmFuYXNoaVwgOwor6LqB6ayx6LOqID4gc291dXRzdXNoaXRzdVwgOwor54ax5Yq5546HID4gbmV0c3Vrb3VyaXRzdVwgOwor55uu55qE54mpID4gbW9rdXRla2lidXRzdVwgOwor5Y+N55m65YqbID4gaGFucGF0c3VyeW9rdVwgOwor5qSN54mp6KqMID4gc2hva3VidXRzdXNoaVwgOwor6K2m5a+f5YqbID4ga2Vpc2F0c3VyeW9rdVwgOwor6LKo54mp5a6kID4ga2Ftb3RzdXNoaXRzdVwgOwor5oeQ5Lit6Y+hID4ga2FpY2h1dWthZ2FtaVwgOwor5reh57eR6ImyID4gdGFucnlva3VzaG9rdVwgOwor5aSp56u66bygID4gdGVuamlrdW5lenVtaVwgOwor57Wx546H5YqbID4gdG91cml0c3VyeW9rdVwgOwor5a6f6Yyy54mpID4gaml0c3Vyb2t1bW9ub1wgOwor5a+G5YWl5Zu9ID4gbWl0c3VueXV1Z29rdVwgOwor55u06Ly45Ye6ID4gY2hva3V5dXNodXRzdVwgOwor5oOa5rCX6KmxID4gbm9yb2tlYmFuYXNoaVwgOwor5LyR6aSK5a6kID4ga3l1dXlvdXNoaXRzdVwgOwor6Zmz5YiX56qTID4gY2hpbnJldHN1bWFkb1wgOwor55m+5YiG546HID4gaHlha3VidW5yaXRzdVwgOwor5Ye66KGA55eHID4gc2h1a2tldHN1c2hvdVwgOwor5a+G6Ly45Ye6ID4gbWl0c3V5dXNodXRzdVwgOwor5Yik5Yil5byPID4gaGFuYmV0c3VzaGlraVwgOwor5qSN54mp55WMID4gc2hva3VidXRzdWthaVwgOwor54ax5Yqb5a2mID4gbmV0c3VyaWtpZ2FrdVwgOwor5paw5q2j5pyIID4gc2hpbnNob3VnYXRzdVwgOwor5Li76aOf54mpID4gc2h1c2hva3VidXRzdVwgOwor6Zmz5YiX5qOaID4gY2hpbnJldHN1ZGFuYVwgOwor6ZuR5Y+O5YWlID4gemF0c3VzaHV1bnl1dVwgOwor57+M57+M5pelID4geW9rdXlva3VqaXRzdVwgOwor6Kmx5Y2K5YiGID4gaGFuYXNoaWhhbmJ1blwgOwor5Yqb5LiN6LazID4gY2hpa2FyYWJ1c29rdVwgOwor5bCx5a2m546HID4gc2h1dWdha3VyaXRzdVwgOwor5rC05LiK55S6ID4gbWluYWthbWltYWNoaVwgOwor6Kaq5YiH5b+DID4gc2hpbnNldHN1c2hpblwgOwor5Yi25L2c5a6kID4gc2Vpc2FrdXNoaXRzdVwgOwor5Y2z54mp55qEID4gc29rdWJ1dHN1dGVraVwgOwor5rGy5Y+W5Y+jID4ga3VtaXRvcmlndWNoaVwgOwor5bu/5pel6bygID4gaGF0c3VrYW5lenVtaVwgOwor57eP6aCY5aiYID4gc291cnlvdW11c3VtZVwgOwor5LiD56aP56WeID4gc2hpY2hpZnVrdWppblwgOwor54m55Yil5bitID4gdG9rdWJldHN1c2VraVwgOwor5aSa6KGA6LOqID4gdGFrZXRzdXNoaXRzdVwgOwor5qC454iG55m6ID4ga2FrdWJha3VoYXRzdVwgOwor5b6X56Wo546HID4gdG9rdWh5b3VyaXRzdVwgOwor6KGo5b2w5byPID4gaHlvdXNob3VzaGlraVwgOwor5YWl5a2m5byPID4gbnl1dWdha3VzaGlraVwgOwor54Gw55m96LOqID4ga2FpaGFrdXNoaXRzdVwgOwor6aOf55So5rK5ID4gc2hva3V5b3VhYnVyYVwgOwor6IG35qWt55qEID4gc2hva3VneW91dGVraVwgOwor6aOf55Sf5rS7ID4gc2hva3VzZWlrYXRzdVwgOwor5Li45LiA5pyIID4gbWFydWhpdG90c3VraVwgOwor6IG35qWt55eFID4gc2hva3VneW91YnlvdVwgOwor5Li45LiA5pelID4gbWFydWljaGluaWNoaVwgOwor5q+S54mp5a2mID4gZG9rdWJ1dHN1Z2FrdVwgOwor5bCx6IG35YWIID4gc2h1dXNob2t1c2FraVwgOwor5Y+j57SE5p2fID4ga3VjaGl5YWt1c29rdVwgOwor5a6f5Yqb6ICFID4gaml0c3VyeW9rdXNoYVwgOwor5rmn5Ye66YePID4geXV1c2h1dHN1cnlvdVwgOwor562S5LqV562SID4gdHN1dHN1aWR6dXRzdVwgOwor5Lya5aCC5Y+4ID4ga2FpZG91ZHp1a2FzYVwgOwor6ZaT5q2H54axID4ga2Fua2V0c3VuZXRzdVwgOwor5ZOy5a2m55qEID4gdGV0c3VnYWt1dGVraVwgOwor6Kqt5ZSH6KGTID4gZG9rdXNoaW5qdXRzdVwgOwor6ZaT5qyg54axID4ga2Fua2V0c3VuZXRzdVwgOwor6KO46Zu755CDID4gaGFkYWthZGVua3l1dVwgOwor6JuL55m96LOqID4gdGFucGFrdXNoaXRzdVwgOwor5o6S5rOE54mpID4gaGFpc2V0c3VidXRzdVwgOwor6aOf6IKJ55uuID4gc2hva3VuaWt1bW9rdVwgOwor5rS75YuV5YqbID4ga2F0c3Vkb3VyeW9rdVwgOwor5L6155Wl55qEID4gc2hpbnJ5YWt1dGVraVwgOwor5Yed6ZuG5YqbID4gZ3lvdXNodXVyeW9rdVwgOwor5L+E54uC6KiAID4gbml3YWtha3lvdWdlblwgOwor542F5a2Q6aCtID4gc2hpc2hpZ2FzaGlyYVwgOwor6Kaz5a+f5YqbID4ga2Fuc2F0c3VyeW9rdVwgOwor6ISx5Yqb5oSfID4gZGF0c3VyeW9rdWthblwgOwor5pSv5Ye66aGNID4gc2hpc2h1dHN1Z2FrdVwgOwor5aSn6JmQ5q66ID4gZGFpZ3lha3VzYXRzdVwgOwor5YmN5rih6YeRID4gbWFld2F0YXNoaWtpblwgOwor5Lmz55m96ImyID4gbnl1dWhha3VzaG9rdVwgOwor57WC5qWt5byPID4gc2h1dWd5b3VzaGlraVwgOwor54iG55m655qEID4gYmFrdWhhdHN1dGVraVwgOwor5riF5YWD56+AID4ga2l5b21vdG9idXNoaVwgOwor6Zu36Kaq54i2ID4ga2FtaW5hcmlveWFqaVwgOwor56We57WM6LOqID4gc2hpbmtlaXNoaXRzdVwgOwor5o6l552A5YqbID4gc2V0Y2hha3VyeW9rdVwgOwor5LqU5pyI5bmfID4gc2F0c3VraW5vYm9yaVwgOwor6YCG6Ly45Ye6ID4gZ3lha3V5dXNodXRzdVwgOwor55qE5Lit546HID4gdGVraWNodXVyaXRzdVwgOwor5bu66Kit6LK7ID4ga2Vuc2V0c3VoaXlvdVwgOwor5bGI5oqY546HID4ga3Vzc2V0c3VyaXRzdVwgOwor6Ii56ZW35a6kID4gc2VuY2hvdXNoaXRzdVwgOwor5Li75pWZ5a6kID4gc2h1a3lvdXNoaXRzdVwgOwor5a6k5YaF5qW9ID4gc2hpdHN1bmFpZ2FrdVwgOwor5Lq65oOF6KmxID4gbmluam91YmFuYXNoaVwgOwor5r+D57eR6ImyID4gbm91cnlva3VzaG9rdVwgOwor5b+c5o6l5a6kID4gb3VzZXRzdXNoaXRzdVwgOwor5L6155Wl5Zu9ID4gc2hpbnJ5YWt1a29rdVwgOwor5L6N5rCX6LOqID4gc2FtdXJhaWthdGFnaVwgOwor55Sz6L685pu4ID4gbW91c2hpa29taXNob1wgOwor55u06Kqs5rOVID4gY2hva3VzZXRzdWhvdVwgOwor5LiL55S66aKoID4gc2hpdGFtYWNoaWZ1dVwgOwor6aOf5Lit5q+SID4gc2hva3VjaHV1ZG9rdVwgOwor55Sj5Ye66auYID4gc2Fuc2h1dHN1ZGFrYVwgOwor5L6b5Ye657GzID4ga3lvdXNodXRzdW1haVwgOwor5aKX6Kit546HID4gem91c2V0c3VyaXRzdVwgOwor5Zyn5Yqb6Y2LID4gYXRzdXJ5b2t1bmFiZVwgOwor5Zuj5qCX55y8ID4gZG9uZ3VyaW1hbmFrb1wgOwor5Zyn5Yqb6YecID4gYXRzdXJ5b2t1Z2FtYVwgOwor5rCX5a+G5a6kID4ga2ltaXRzdXNoaXRzdVwgOwor5b+c5o6l5L+CID4gb3VzZXRzdWdha2FyaVwgOwor5aWz5oi/6KmeID4gbnlvdWJvdWtvdG9iYVwgOwor5YiG5YiX5byPID4gYnVucmV0c3VzaGlraVwgOwor6Kaq5Lu75byPID4gc2hpbicnbmluc2hpa2lcIDsKK+eUn+a0u+WKmyA+IHNlaWthdHN1cnlva3VcIDsKK+iqreW/g+ihkyA+IGRva3VzaGluanV0c3VcIDsKK+mnhemVt+WupCA+IGVraWNob3VzaGl0c3VcIDsKK+WutuS7mOWomCA+IGlldHN1a2ltdXN1bWVcIDsKK+eZvuaXpeiNiSA+IGh5YWt1bmljaGlzb3VcIDsKK+S4oeS4ieaXpSA+IHJ5b3VzYW4nJ25pY2hpXCA7Civml5fooYzliJcgPiBoYXRhZ3lvdXJldHN1XCA7CivnnInllL7niakgPiBtYXl1dHN1YmFtb25vXCA7CivpgLLooYzkv4IgPiBzaGlua291Z2FrYXJpXCA7Civli5XmpI3niakgPiBkb3VzaG9rdWJ1dHN1XCA7Civlv4XopoHniakgPiBoaXRzdXlvdWJ1dHN1XCA7CivkuInou7jlrqQgPiBzYW5qaWt1c2hpdHN1XCA7CivlvoXlkIjlrqQgPiBtYWNoaWFpc2hpdHN1XCA7CivljZrnianlraYgPiBoYWt1YnV0c3VnYWt1XCA7CivntZDntK7ooZMgPiBrZXNzYXRzdWp1dHN1XCA7Civmt7flhaXniakgPiBrb24nJ255dXVidXRzdVwgOwor5Lq65oOF5Zm6ID4gbmluam91YmFuYXNoaVwgOwor5Ye65bit546HID4gc2h1c3Nla2lyaXRzdVwgOwor55u05o6l56iOID4gY2hva3VzZXRzdXplaVwgOwor5aSx5qWt6ICFID4gc2hpdHN1Z3lvdXNoYVwgOwor54mn55Wc5qWtID4gYm9rdWNoaWt1Z3lvdVwgOwor5qeL56+J54mpID4ga291Y2hpa3VidXRzdVwgOwor6Kit56uL6ICFID4gc2V0c3VyaXRzdXNoYVwgOwor6Laz6ZW36JyCID4gYXNoaW5hZ2FiYWNoaVwgOwor57KY5ray6LOqID4gbmVuJydla2lzaGl0c3VcIDsKK+ebtOaOpeazlSA+IGNob2t1c2V0c3Vob3VcIDsKK+W5vemciuipsSA+IHl1dXJlaWJhbmFzaGlcIDsKK+WQjOizqueahCA+IGRvdXNoaXRzdXRla2lcIDsKK+Wft+edgOW/gyA+IHNodXVjaGFrdXNoaW5cIDsKK+WKm+mWouS/giA+IGNoaWthcmFrYW5rZWlcIDsKK+eJqeizqueahCA+IGJ1c3NoaXRzdXRla2lcIDsKK+iSuOeZuueGsSA+IGpvdWhhdHN1bmV0c3VcIDsKK+iWqeaRqemWpSA+IHNhdHN1bWFiYXRzdVwgOwor6KaW6IG0546HID4gc2hpY2hvdXJpdHN1XCA7CivnlbPmsLTnt7QgPiB0YXRhbWlzdWlyZW5cIDsKK+W5leWDmumVtyA+IGJha3VyeW91Y2hvdVwgOwor54++5a6f55qEID4gZ2Vuaml0c3V0ZWtpXCA7CivnlLvkuIDnmoQgPiBrYWt1aXRzdXRla2lcIDsKK+WNuOmFkuiyqSA+IG9yb3NoaXNodWhhblwgOwor6Kaq5pel5a62ID4gc2hpbicnbmljaGlrYVwgOwor5YaF5Ye66KGAID4gbmFpc2h1a2tldHN1XCA7CivmvaTnrYbmlpkgPiBqdW5waXRzdXJ5b3VcIDsKK+eUsOiIjuS+jSA+IGluYWthemFtdXJhaVwgOwor6YeR6YeY5rWBID4ga2FuYWt1Z2lyeXV1XCA7CivlibXkvZzlipsgPiBzb3VzYWt1cnlva3VcIDsKK+WNs+aIpuWKmyA+IHNva3VzZW5yeW9rdVwgOwor5ous57SE562LID4ga2F0c3V5YWt1a2luXCA7CivoqqzlvpflipsgPiBzZXR0b2t1cnlva3VcIDsKK+mQmOaSnuWggiA+IGthbmV0c3VraWRvdVwgOwor5pen5b2i5byPID4ga3l1dWtlaXNoaWtpXCA7Civpu4Tnjonnn7MgPiBrb3VneW9rdXNla2lcIDsKK+Wun+mok+WupCA+IGppa2tlbnNoaXRzdVwgOwor5a+G5ryB6ICFID4gbWl0c3VyeW91c2hhXCA7Civmva7msZDooaggPiBjaG91c2VraWh5b3VcIDsKK+eZveeGseaIpiA+IGhha3VuZXRzdXNlblwgOwor5b6T5bGe56+AID4ganV1em9rdXNldHN1XCA7CivmirzliIfluLMgPiBvc2hpa2lyaWNob3VcIDsKK+mJseeJqeWtpiA+IGtvdWJ1dHN1Z2FrdVwgOwor5bem5b+D5a6kID4gc2FzaGluc2hpdHN1XCA7CivmpbXlvanoibIgPiBnb2t1c2Fpc2hpa2lcIDsKK+iCneW/g+imgSA+IGthbmppbmthbmFtZVwgOwor5bu656+J5qWtID4ga2VuY2hpa3VneW91XCA7Civmi5Lpo5/nl4cgPiBreW9zaG9rdXNob3VcIDsKK+eGsembu+WvviA+IG5ldHN1ZGVudHN1aVwgOwor6Y6W5Lyd5YuVID4ga3VzYXJpZGVuZG91XCA7Civmi6HlpKfnjocgPiBrYWt1ZGFpcml0c3VcIDsKK+eLguS/oeeahCA+IGt5b3VzaGludGVraVwgOwor6KGo54++5YqbID4gaHlvdWdlbnJ5b2t1XCA7CivkuK3nq4vpnaIgPiBjaHV1cml0c3VtZW5cIDsKK+iyneauu+iZqyA+IGthaWdhcmFtdXNoaVwgOwor5LiA55Wq5pifID4gaWNoaWJhbmJvc2hpXCA7Civos4PlgJ/kurogPiBjaGluc2hha3VuaW5cIDsKK+ijhemjvueahCA+IHNvdXNob2t1dGVraVwgOwor5r6x57KJ6LOqID4gZGVucHVuc2hpdHN1XCA7CivljYPml6XojYkgPiBzZW4nJ25pY2hpc291XCA7CivkuIPkupToqr8gPiBzaGljaGlnb2Nob3VcIDsKK+S4reWbveacjSA+IGNodXVnb2t1ZnVrdVwgOwor6auY5aSp5Y6fID4gdGFrYW1hZ2FoYXJhXCA7Civli5jlrprkv4IgPiBrYW5qb3VnYWthcmlcIDsKK+aLmOadn+WKmyA+IGtvdXNva3VyeW9rdVwgOwor5rKI5r6x54mpID4gY2hpbmRlbmJ1dHN1XCA7Civlmajos6rnmoQgPiBraXNoaXRzdXRla2lcIDsKK+WNg+aXpee0hSA+IHNlbicnbmljaGlrb3VcIDsKK+W7uuevieWtpiA+IGtlbmNoaWt1Z2FrdVwgOwor5pWX6KGA55eHID4gaGFpa2V0c3VzaG91XCA7CivljYHkuIDmnIggPiBqdXVpY2hpZ2F0c3VcIDsKK+iii+aIuOajmiA+IGZ1a3Vyb3RvZGFuYVwgOwor5oud54mp5pWZID4gaGFpYnV0c3VreW91XCA7CivlvqnorpDlv4MgPiBmdWt1c2h1dXNoaW5cIDsKK+aXp+W5tOacqyA+IGt5dXVuZW5tYXRzdVwgOwor5aSx6IG36ICFID4gc2hpc3Nob2t1c2hhXCA7CivlhoXlibLlvJUgPiB1Y2hpd2FyaWJpa2lcIDsKK+WHuueUo+eOhyA+IHNodXNzYW5yaXRzdVwgOwor5YaZ5a6f55qEID4gc2hhaml0c3V0ZWtpXCA7CivmjqXntprpp4UgPiBzZXRzdXpva3Vla2lcIDsKK+ijvemJhOalrSA+IHNlaXRldHN1Z3lvdVwgOwor5Ye655Sf546HID4gc2h1c3NlaXJpdHN1XCA7CivnnYDnianlp78gPiBraW1vbm9zdWdhdGFcIDsKK+epjealteetliA+IHNla2t5b2t1c2FrdVwgOwor5bCP5paH56+AID4gc2hvdWJ1bnNldHN1XCA7CivntYTnuZTlipsgPiBzb3NoaWtpcnlva3VcIDsKK+aWreeGseadkCA+IGRhbicnbmV0c3V6YWlcIDsKK+iRl+S9nOeJqSA+IGNob3Nha3VidXRzdVwgOwor55uy5ruF5rOVID4gbWVrdXJhbWVwcG91XCA7CivpmYTnnYDlipsgPiBmdWNoYWt1cnlva3VcIDsKK+a8gua1geacqCA+IGh5b3VyeXV1Ym9rdVwgOwor57Sz5aOr6Z20ID4gc2hpbnNoaWd1dHN1XCA7CivmtZrmuKvoiLkgPiBzaHVuc2V0c3VzZW5cIDsKK+a3seWxseeDjyA+IG1peWFtYWdhcmFzdVwgOwor55Sf6Iet54mpID4gbmFtYWd1c2Ftb25vXCA7Civlr6nliKTlvbkgPiBzaGlucGFuJyd5YWt1XCA7CivnqY3mpbXnmoQgPiBzZWtreW9rdXRla2lcIDsKK+eZuuWjsuWFgyA+IGhhdHN1YmFpbW90b1wgOwor5LuP6aCC6Z2iID4gYnV0Y2hvdWR6dXJhXCA7Civlj5blvJXpq5ggPiB0b3JpaGlraWRha2FcIDsKK+mXluWFpeiAhSA+IGNoaW4nJ255dXVzaGFcIDsKK+avrOagl+mgrSA+IGlnYWd1cmlhdGFtYVwgOwor5bu656+J5LitID4ga2VuY2hpa3VjaHV1XCA7CivlvLHlsI/lm70gPiBqYWt1c2hvdWtva3VcIDsKK+eZuuWjsuS4rSA+IGhhdHN1YmFpY2h1dVwgOwor5b6p6K6Q5YqHID4gZnVrdXNodXVnZWtpXCA7CivkuIvku5XkuosgPiBzaGl0YXNoaWdvdG9cIDsKK+a2iOalteaApyA+IHNob3VreW9rdXNlaVwgOwor6YeR5qyg55eFID4ga2lua2V0c3VieW91XCA7CivogbToppbnjocgPiBjaG91c2hpcml0c3VcIDsKK+a3seWxseahnCA+IG1peWFtYXpha3VyYVwgOwor6LOq5ZWP6ICFID4gc2hpdHN1bW9uc2hhXCA7CivnqbrntITmnZ8gPiBrYXJheWFrdXNva3VcIDsKK+aOpee2muipniA+IHNldHN1em9rdXNoaVwgOwor5oq56aaZ6a+oID4gbWFra291a3VqaXJhXCA7CivoirHnm5fkurogPiBoYW5hbnVzdWJpdG9cIDsKK+S5vueHpeWupCA+IGthbnNvdXNoaXRzdVwgOwor5bC/5q+S55eHID4gbnlvdWRva3VzaG91XCA7CivnmYfnmarnjokgPiBrYW5zaGFrdWRhbWFcIDsKK+S4gOS6uueJqSA+IGljaGlqaW5idXRzdVwgOwor5Y2U57SE5Zu9ID4ga3lvdXlha3Vrb2t1XCA7CivmnKvku6PniakgPiBtYXRzdWRhaW1vbm9cIDsKK+WJg+WIgOiyoCA+IGthbWlzb3JpbWFrZVwgOwor5LiA6Laz5YWIID4gaGl0b2FzaGlzYWtpXCA7CivmnpzniannsaAgPiBrdWRhbW9ub2thZ29cIDsKK+S4lumWk+ipsSA+IHNla2VuYmFuYXNoaVwgOwor6KGM5qW95a6iID4ga291cmFrdWt5YWt1XCA7CivntIvnmb3onbYgPiBtb25zaGlyb2Nob3VcIDsKK+WFpea5r+WuoiA+IG55dXV0b3VreWFrdVwgOwor6ZeH5Y+W5byVID4geWFtaXRvcmloaWtpXCA7CivpgLLmsLTlvI8gPiBzaGluc3Vpc2hpa2lcIDsKK+S7ruaJlemHkSA+IGthcmliYXJhaWtpblwgOwor57SZ5bGR57GgID4ga2FtaWt1enVrYWdvXCA7Civkub7nh6XljbUgPiBrYW5zb3V0YW1hZ29cIDsKK+e3keWGhemanCA+IHJ5b2t1bmFpc2hvdVwgOwor5qW15qW96bOlID4gZ29rdXJha3VjaG91XCA7Civos4PosrjlgJ8gPiBjaGludGFpc2hha3VcIDsKK+WRiueZuuiAhSA+IGtva3VoYXRzdXNoYVwgOwor55m96KGA55eFID4gaGFra2V0c3VieW91XCA7CivnnJ/nj6Dos6ogPiBzaGluanVzaGl0c3VcIDsKK+eJh+WxsemHjCA+IGthdGF5YW1hemF0b1wgOwor54us56uL56WtID4gZG9rdXJpdHN1c2FpXCA7CivkuojntITkv4IgPiB5b3lha3VnYWthcmlcIDsKK+m7hOe3keiJsiA+IG91cnlva3VzaG9rdVwgOwor5YmN6YCy5YqbID4gemVuc2hpbnJ5b2t1XCA7Civnorrnjofoq5YgPiBrYWt1cml0c3Vyb25cIDsKK+eLrOeri+ePrSA+IGRva3VyaXRzdWhhblwgOwor562J5Zyn5byPID4gdG91YXRzdXNoaWtpXCA7CivntKDkurrnrYsgPiBzaGlyb3V0b3N1amlcIDsKK+e+juS6uuWxgCA+IHRzdXRzdW1vdGFzZVwgOwor5YCf5Zyw5paZID4gc2hha3VjaGlyeW91XCA7Civpu4TnhrHnl4UgPiBrb3VuZXRzdWJ5b3VcIDsKK+aKleelqOeOhyA+IHRvdWh5b3VyaXRzdVwgOwor6ISF6L+r55qEID4ga3lvdWhha3V0ZWtpXCA7Civlm6PntZDlv4MgPiBkYW5rZXRzdXNoaW5cIDsKK+izquWVj+abuCA+IHNoaXRzdW1vbnNob1wgOwor5Lit56uL5oCnID4gY2h1dXJpdHN1c2VpXCA7CivlkYrnmbrnirYgPiBrb2t1aGF0c3Vqb3VcIDsKK+WPjeW+qeiqrCA+IGhhbnB1a3VzZXRzdVwgOwor5Y2w5Yi36KGTID4gaW5zYXRzdWp1dHN1XCA7Civog73lipvntaYgPiBub3VyeW9rdWt5dXVcIDsKK+e3tOe/kuabsiA+IHJlbnNodXVreW9rdVwgOwor6LaF6IO95YqbID4gY2hvdW5vdXJ5b2t1XCA7CivmoLjliIboo4IgPiBrYWt1YnVucmV0c3VcIDsKK+eLrOeri+aoqSA+IGRva3VyaXRzdWtlblwgOwor5b6F5a616I2JID4gbWF0c3V5b2lndXNhXCA7CivkuIDkurrlqJggPiBoaXRvcmltdXN1bWVcIDsKK+WbveeojuWxgCA+IGtva3V6ZWlreW9rdVwgOwor5LiA6Z2i6K2YID4gaWNoaW1lbnNoaWtpXCA7Civlh7rpoZjogIUgPiBzaHV0c3VnYW5zaGFcIDsKK+WLv+W/mOiNiSA+IHdhc3VyZW5hZ3VzYVwgOwor5by357a/6JasID4ga3lvdW1lbicneWFrdVwgOwor5qK25pyo6a6qID4ga2FqaWtpbWFndXJvXCA7CivlpLHmmI7ogIUgPiBzaGl0c3VtZWlzaGFcIDsKK+Wls+mBk+alvSA+IG9uJyduYWRvdXJha3VcIDsKK+aIkOmVt+eOhyA+IHNlaWNob3VyaXRzdVwgOwor56K65a6f5oCnID4ga2FrdWppdHN1c2VpXCA7Civpu5Loo4XmnZ8gPiBrdXJvc2hvdXpva3VcIDsKK+eGseaLoeaVoyA+IG5ldHN1a2FrdXNhblwgOwor5b+g6Iej6JS1ID4gY2h1dXNoaW5ndXJhXCA7Civli5XnianlraYgPiBkb3VidXRzdWdha3VcIDsKK+S4gOaemuS4iyA+IGljaGltYWlzaGl0YVwgOwor6Iez5p2x5LqsID4gaXRhcnV0b3VreW91XCA7Civni6znq4vmgKcgPiBkb2t1cml0c3VzZWlcIDsKK+mbqOW+jOmbqiA+IGFtZW5vY2hpeXVraVwgOwor5YWr55uu6bC7ID4geWF0c3VtZXVuYWdpXCA7CivlpKnni5foqbEgPiB0ZW5ndWJhbmFzaGlcIDsKK+ahiOWGheS/giA+IGFuJyduYWlnYWthcmlcIDsKK+a1geihjOiJsiA+IHJ5dXVrb3VzaG9rdVwgOwor6Y2+5Lmz55+zID4gc2hvdW55dXVzZWtpXCA7CivmjqXntprmgKcgPiBzZXRzdXpva3VzZWlcIDsKK+ecn+Wun+aApyA+IHNoaW5qaXRzdXNlaVwgOwor6aqo6IKJ6IWrID4ga290c3VuaWt1c2h1XCA7CivniqznlZznlJ8gPiBpbnVjaGlrdXNob3VcIDsKK+mgmOWPjuiovCA+IHJ5b3VzaHV1c2hvdVwgOwor5pi85YWJ6ImyID4gY2h1dWtvdXNob2t1XCA7CivljJfmpbXnhoogPiBob2treW9rdWd1bWFcIDsKK+WPuOS7pOWupCA+IHNoaXJlaXNoaXRzdVwgOwor5Y2w5Yi354mpID4gaW5zYXRzdWJ1dHN1XCA7Civmir3osaHnmoQgPiBjaHV1c2hvdXRla2lcIDsKK+eZveaLjeWtkCA+IHNoaXJhYnlvdXNoaVwgOwor5o+Q5Ye66ICFID4gdGVpc2h1dHN1c2hhXCA7CivogJDlnKflipsgPiB0YWlhdHN1cnlva3VcIDsKK+WHuOmdoumPoSA+IHRvdHN1bWVua3lvdVwgOwor6auY6KGA5ZynID4ga291a2V0c3VhdHN1XCA7Civmn7HmmYLoqIggPiBoYXNoaXJhZG9rZWlcIDsKK+WCmOatr+i7iiA+IGthc2FoYWd1cnVtYVwgOwor6LuN5Zu96ImyID4gZ3Vua29rdXNob2t1XCA7Civlhavpg47mvZ8gPiBoYWNoaXJvdWdhdGFcIDsKK+Wuv+WRveeahCA+IHNodWt1bWVpdGVraVwgOwor5Lit5b+D6KeSID4gY2h1dXNoaW5rYWt1XCA7CivplbfpoIjpr6ggPiBuYWdhc3VrdWppcmFcIDsKK+S/ruS6huiovCA+IHNodXVyeW91c2hvdVwgOwor5q6144CF55WgID4gZGFuZGFuYmF0YWtlXCA7CivmrrXjgIXnlZEgPiBkYW5kYW5iYXRha2VcIDsKK+WkmuiCieizqiA+IHRhbmlrdXNoaXRzdVwgOwor6YCy5YWl54GvID4gc2hpbicnbnl1dXRvdVwgOwor6ZuG57SE55qEID4gc2h1dXlha3V0ZWtpXCA7CivlhbXlha3njokgPiBoeW91cm9rdWRhbWFcIDsKK+aRqeaTpueGsSA+IG1hc2F0c3VuZXRzdVwgOwor5oqA6KGT5YqbID4gZ2lqdXRzdXJ5b2t1XCA7Civku67murbmjqUgPiBrYXJpeW91c2V0c3VcIDsKK+mrmOWTgeizqiA+IGtvdWhpbnNoaXRzdVwgOwor5pmS5pyo57a/ID4gc2FyYXNoaW1vbWVuXCA7CivkvLjnuK7ms5UgPiBzaGluc2h1a3Vob3VcIDsKK+WFremAo+eZuiA+IHJva3VyZW5wYXRzdVwgOwor5L2155m655eHID4gaGVpaGF0c3VzaG91XCA7CivmrKDkuY/nl4cgPiBrZXRzdWJvdXNob3VcIDsKK+mWouevgOaKgCA+IGthbnNldHN1d2F6YVwgOwor5rKI5rKh6Ii5ID4gY2hpbmJvdHN1c2VuXCA7CivlrrnnqY3njocgPiB5b3VzZWtpcml0c3VcIDsKK+S4u+WKm+agqiA+IHNodXJ5b2t1a2FidVwgOwor5Lm+5rm/6KiIID4ga2Fuc2hpdHN1a2VpXCA7CivkuZ3mmJ/ooZMgPiBreXV1c2VpanV0c3VcIDsKK+WPo+WFq+S4gSA+IGt1Y2hpaGF0Y2hvdVwgOwor5qSc5a+f5bqBID4ga2Vuc2F0c3VjaG91XCA7CivooajooajntJkgPiBvbW90ZWJ5b3VzaGlcIDsKK+ebtOWPluW8lSA+IGppa2l0b3JpaGlraVwgOwor5aSn5a2m5Y2SID4gZGFpZ2FrdXNvdHN1XCA7CivlpLHoqp7nl4cgPiBzaGl0c3Vnb3Nob3VcIDsKK+mZjembqumHjyA+IGtvdXNldHN1cnlvdVwgOwor5ryB5bir55S6ID4gcnlvdXNoaW1hY2hpXCA7Civnianopovmq5MgPiBtb25vbWl5YWd1cmFcIDsKK+WPluasoeW6lyA+IHRvcml0c3VnaXRlblwgOwor5pyn5pyI5aScID4gb2Jvcm9kenVraXlvXCA7Civkuqvmpb3nmoQgPiBreW91cmFrdXRla2lcIDsKK+awtOWKm+WtpiA+IHN1aXJ5b2t1Z2FrdVwgOwor5Y+W5byV5YWIID4gdG9yaWhpa2lzYWtpXCA7CivlhaXlipvnt5ogPiBueXV1cnlva3VzZW5cIDsKK+S9juihgOWcpyA+IHRlaWtldHN1YXRzdVwgOwor5Ly457iu5oCnID4gc2hpbnNodWt1c2VpXCA7Civlvovku6TliLYgPiByaXRzdXJ5b3VzZWlcIDsKK+W9ouW8j+eahCA+IGtlaXNoaWtpdGVraVwgOwor5Luy56uL5Lq6ID4gbmFrYWRhY2hpbmluXCA7CivmmIfpmY3lj6MgPiBzaG91a291Z3VjaGlcIDsKK+iomOmMsuS/giA+IGtpcm9rdWdha2FyaVwgOwor5bel5L2c54mpID4ga291c2FrdWJ1dHN1XCA7CivmraPnm7TogIUgPiBzaG91amlraW1vbm9cIDsKK+S4reW/g+eahCA+IGNodXVzaGludGVraVwgOwor6Ieq57+S5a6kID4gamlzaHV1c2hpdHN1XCA7Civku4rmmI7ml6UgPiBrb25teW91bmljaGlcIDsKK+mWk+aOpeeahCA+IGthbnNldHN1dGVraVwgOwor5Ye654mI54mpID4gc2h1cHBhbmJ1dHN1XCA7CivmoLjou43nuK4gPiBrYWt1Z3Vuc2h1a3VcIDsKK+S4gOimi+itmCA+IGljaGlrZW5zaGlraVwgOwor5pS75pKD5YqbID4ga291Z2VraXJ5b2t1XCA7CivmlbTpq6rmlpkgPiBzZWloYXRzdXJ5b3VcIDsKK+S4g+mdouWAkiA+IHNoaWNoaW1lbmRvdVwgOwor6ICQ5rm/5oCnID4gdGFpc2hpdHN1c2VpXCA7Civku4/mloflraYgPiBmdXRzdWJ1bmdha3VcIDsKK+eVkeawtOe3tCA+IGhhdGFrZXN1aXJlblwgOwor5YuF5pKw6ZuGID4gY2hva3VzZW5zaHV1XCA7CivkuIPpnaLkvZMgPiBzaGljaGltZW50YWlcIDsKK+WKueeOh+eahCA+IGtvdXJpdHN1dGVraVwgOwor54ax6YeP6KiIID4gbmV0c3VyeW91a2VpXCA7Civms6jph4jogIUgPiBjaHV1c2hha3VzaGFcIDsKK+eLreW/g+eXhyA+IGt5b3VzaGluc2hvdVwgOwor5byl54yb5b+DID4geWF0YWtlZ29rb3JvXCA7Civnt4/oirHlvI8gPiBzb3ViYW5hc2hpa2lcIDsKK+WNlOWVhuWbvSA+IGt5b3VzaG91a29rdVwgOwor5LiD57WD55C0ID4gc2hpY2hpZ2Vua2luXCA7CivniIboo4LlvL4gPiBiYWt1cmV0c3VkYW5cIDsKK+Wul+aVmeW/gyA+IHNodXVreW91c2hpblwgOwor5YWs5YWx54mpID4ga291a3lvdWJ1dHN1XCA7CivmlZHmgKXnrrEgPiBreXV1a3l1dWJha29cIDsKK+eLguipqeabsiA+IGt5b3VzaGlreW9rdVwgOwor5L+E5YiG6ZmQID4gbml3YWthYnVuZ2VuXCA7CivlrpfmlZnlraYgPiBzaHV1a3lvdWdha3VcIDsKK+S4gOaXpeS4rSA+IGljaGluaWNoaWp1dVwgOwor5rGC6IG36ICFID4ga3l1dXNob2t1c2hhXCA7CivnlZzmrrrloLQgPiBjaGlrdXNhdHN1YmFcIDsKK+WtpuW5tOacqyA+IGdha3VuZW5tYXRzdVwgOwor56mA6LGh6JmrID4ga29rdXpvdW11c2hpXCA7CivnhKHpn7/lrqQgPiBtdWt5b3VzaGl0c3VcIDsKK+etjeWMu+iAhSA+IHRha2Vub2tvaXNoYVwgOwor5r2b5b+D5YqbID4gc2Vuc2hpbnJ5b2t1XCA7CivoiIjooYzkuLsgPiBrb3VneW91bnVzaGlcIDsKK+S/rumjvuWtkCA+IHNodXVzaG9rdXNoaVwgOwor5Y+O55uK546HID4gc2h1dWVraXJpdHN1XCA7CivnpZ3lhIDooosgPiBzaHV1Z2lidWt1cm9cIDsKK+WpmuWnu+WxiiA+IGtvbicnaW50b2Rva2VcIDsKK+manOWus+eJqSA+IHNob3VnYWlidXRzdVwgOwor6buS6Yq555eFID4ga3Vyb3NhYmlieW91XCA7CivkurrnianoqZUgPiBqaW5idXRzdWh5b3VcIDsKK+mbkeaJgOW+lyA+IHphdHN1c2hvdG9rdVwgOwor5Yml6KO96KGTID4gaGFrdXNlaWp1dHN1XCA7Civni6zljaDmrLIgPiBkb2t1c2VuJyd5b2t1XCA7CivntbbmnJvnmoQgPiB6ZXRzdWJvdXRla2lcIDsKK+WkqeeEtuiJsiA+IHRlbicnbmVuc2hva3VcIDsKK+iEguiCquizqiA+IHNoaWJvdXNoaXRzdVwgOwor5a6X5pWZ5YqHID4gc2h1dWt5b3VnZWtpXCA7Civlh7rloLTogIUgPiBzaHV0c3Vqb3VzaGFcIDsKK+S5vua8huWDjyA+IGthbnNoaXRzdXpvdVwgOwor5YaF572w55qEID4gbmFpYmF0c3V0ZWtpXCA7CivkuIPop5LlvaIgPiBzaGljaGlrYWtrZWlcIDsKK+WNs+iIiOabsiA+IHNva2t5b3VreW9rdVwgOwor5pWj55m655qEID4gc2FucGF0c3V0ZWtpXCA7CivluoPlj6Pnk7YgPiBoaXJva3VjaGliaW5cIDsKK+Wcp+e4rueOhyA+IGFzc2h1a3VyaXRzdVwgOwor5a6/5rOK5Lq6ID4gc2h1a3VoYWt1bmluXCA7CivnjKnntIXnhrEgPiBzaG91a291bmV0c3VcIDsKK+WNlOWKm+mLvCA+IGt5b3VyeW9rdWtvdVwgOwor5omA55Wq5ZywID4gdG9rb3JvYmFuY2hpXCA7Civms6jph4jmm7ggPiBjaHV1c2hha3VzaG9cIDsKK+eJueW+tOmHjyA+IHRva3VjaG91cnlvdVwgOwor5oeQ5bel5ZCIID4gZnV0b2tvcm9ndWFpXCA7Civmj4/lhpnlipsgPiBieW91c2hhcnlva3VcIDsKK+eUn+eJqeWtpiA+IHNlaWJ1dHN1Z2FrdVwgOwor5oeQ5YW35ZCIID4gZnV0b2tvcm9ndWFpXCA7Civoqq3mm7jlipsgPiBkb2t1c2hvcnlva3VcIDsKK+efpeitmOassiA+IGNoaXNoaWtpeW9rdVwgOwor5YWo6YCf5YqbID4gemVuc29rdXJ5b2t1XCA7CivooajjgIXntJkgPiBvbW90ZWJ5b3VzaGlcIDsKK+a3see0heiJsiA+IHNoaW5rb3VzaG9rdVwgOwor6Luf552A6Zm4ID4gbmFuY2hha3VyaWt1XCA7CivoibLmg4Xni4IgPiBzaGlraWpvdWt5b3VcIDsKK+mDteS+v+iiiyA+IHl1dWJpbmJ1a3Vyb1wgOwor6Ki65a+f5Y+wID4gc2hpbnNhdHN1ZGFpXCA7Civms6HmsqvnmoQgPiBob3VtYXRzdXRla2lcIDsKK+S7rumHiOaUviA+IGthcmlzaGFrdWhvdVwgOwor5oCl6YCy55qEID4ga3l1dXNoaW50ZWtpXCA7CivoqLrlr5/liLggPiBzaGluc2F0c3VrZW5cIDsKK+alteWwj+WApCA+IGt5b2t1c2hvdWNoaVwgOwor5L6b6KGA6ICFID4ga3lvdWtldHN1c2hhXCA7Civlj47lhaXlvbkgPiBzaHV1bnl1dXlha3VcIDsKK+auteauteeVoCA+IGRhbmRhbmJhdGFrZVwgOwor5q615q6155WRID4gZGFuZGFuYmF0YWtlXCA7Civnr4DnlKjpm4YgPiBzZXRzdXlvdXNodXVcIDsKK+mFjemBlOaWmSA+IGhhaXRhdHN1cnlvdVwgOwor5paw5Y2S6ICFID4gc2hpbnNvdHN1c2hhXCA7Civlj47nm6PlipsgPiBzaHV1a2Fucnlva3VcIDsKK+eZvuiRieeusSA+IGh5YWt1eW91YmFrb1wgOwor5Y2U5Yqb6ICFID4ga3lvdXJ5b2t1c2hhXCA7CivpgJ/pgZTkvr8gPiBzb2t1dGF0c3ViaW5cIDsKK+mKgOeZveiJsiA+IGdpbmhha3VzaG9rdVwgOwor5aS+56u55qGDID4ga3lvdWNoaWt1dG91XCA7CivnlZznlJ/pgZMgPiBjaGlrdXNob3Vkb3VcIDsKK+mbqui+seaIpiA+IHNldHN1am9rdXNlblwgOwor5p2x5Lqs552AID4gdG91a3lvdWNoYWt1XCA7Civpm7vkv6HlsYAgPiBkZW5zaGlua3lva3VcIDsKK+mdkuiJsueXhyA+IHNlaXNob2t1c2hvdVwgOwor5bqD5ZGK5Li7ID4ga291a29rdW51c2hpXCA7CivmnbHkuqznmbogPiB0b3VreW91aGF0c3VcIDsKK+WFqOi6q+a1tCA+IHplbnNoaW4nJ3lva3VcIDsKK+WkieizquiAhSA+IGhlbnNoaXRzdXNoYVwgOwor5aSP5pyo56uLID4gbmF0c3Vrb2RhY2hpXCA7Civorablr5/luoEgPiBrZWlzYXRzdWNob3VcIDsKK+alreeVjOWInSA+IGd5b3VrYWloYXRzdVwgOwor5aSp6ZW356+AID4gdGVuY2hvdXNldHN1XCA7CivnlKPopKXnhrEgPiBzYW5qb2t1bmV0c3VcIDsKK+WNmOWLneW8jyA+IHRhbnNob3VzaGlraVwgOwor6aCt6aCC6aqoID4gdG91Y2hvdWtvdHN1XCA7Civlo4rooYDnl4UgPiBrYWlrZXRzdWJ5b3VcIDsKK+eci+adv+WomCA+IGthbmJhbm11c3VtZVwgOwor57eo6ZuG5bGAID4gaGVuc2h1dWt5b2t1XCA7CivmmbTlvozpm6ggPiBoYXJlbm9jaGlhbWVcIDsKK+a1geWLlemjnyA+IHJ5dXVkb3VzaG9rdVwgOwor6aOf6YGT5qW9ID4gc2hva3Vkb3VyYWt1XCA7Civmr5vnuZTpjKYgPiBrZW9yaW5pc2hpa2lcIDsKK+axguS6uuWPoyA+IGt5dXVqaW5ndWNoaVwgOwor57WC552A6aeFID4gc2h1dWNoYWt1ZWtpXCA7Civpu5LmsLTnhrEgPiBrb2t1c3VpbmV0c3VcIDsKK+S7rumAsue0miA+IGthcmlzaGlua3l1dVwgOwor6YWN6YGU5YWIID4gaGFpdGF0c3VzYWtpXCA7Civlr53nianoqp4gPiBuZW1vbm9nYXRhcmlcIDsKK+iLpeauv+WOnyA+IHdha2F0b25vYmFyYVwgOwor5Ya36JS15a6kID4gcmVpem91c2hpdHN1XCA7CivmsqHkuqTmuIkgPiBib3RzdWtvdXNob3VcIDsKK+mdmeiEiOeYpCA+IGpvdW15YWt1cnl1dVwgOwor6aqo57WE57mUID4ga290c3Vzb3NoaWtpXCA7CivljYPljZLplbcgPiBzZW5zb3RzdWNob3VcIDsKK+ebtOi9hOWcsCA+IGNob2trYXRzdWNoaVwgOwor5LiA562L57mpID4gaGl0b3N1amluYXdhXCA7CivkuIDnrYvnuIQgPiBoaXRvc3VqaW5hd2FcIDsKK+WwseiBt+mboyA+IHNodXVzaG9rdW5hblwgOwor6Kqs57WM56+AID4gc2Vra3lvdWJ1c2hpXCA7Civlv4Pouqvnl4cgPiBzaGluc2hpbnNob3VcIDsKK+mdouS8muWupCA+IG1lbmthaXNoaXRzdVwgOwor54us5Ym15YqbID4gZG9rdXNvdXJ5b2t1XCA7Civlp4vmpa3lvI8gPiBzaGlneW91c2hpa2lcIDsKK+adpeWuouetiyA+IHJhaWt5YWt1c3VqaVwgOwor6YCy5a2m5aG+ID4gc2hpbmdha3VqdWt1XCA7Civnm67nmoTmoLwgPiBtb2t1dGVraWtha3VcIDsKK+agoeato+S/giA+IGtvdXNlaWdha2FyaVwgOwor5Yqb6Ieq5oWiID4gY2hpa2FyYWppbWFuXCA7CivlsYvmlbfnlLogPiB5YXNoaWtpbWFjaGlcIDsKK+acjemjvuWTgSA+IGZ1a3VzaG9rdWhpblwgOwor6Iao5by1546HID4gYm91Y2hvdXJpdHN1XCA7Civoia/lv4PnmoQgPiByeW91c2hpbnRla2lcIDsKK+epuuW/teS7jyA+IHNvcmFuZW5idXRzdVwgOwor55qG55qG5qeYID4gbWluYW1pbmFzYW1hXCA7Civog73njofntaYgPiBub3VyaXRzdWt5dXVcIDsKK+WghuepjeeJqSA+IHRhaXNla2lidXRzdVwgOwor5Ye657SN5L+CID4gc3VpdG91Z2FrYXJpXCA7Civok4TnqY3nrqEgPiBjaGlrdXNla2lrYW5cIDsKK+eLrOi6q+iAhSA+IGRva3VzaGlubW9ub1wgOwor55+z56u56ImyID4gc2VraWNoaWt1aXJvXCA7Civnm7TohbjnmYwgPiBjaG9rdWNob3VnYW5cIDsKK+eqgeeZuueahCA+IHRvcHBhdHN1dGVraVwgOwor6Iq46KGT55qEID4gZ2VpanV0c3V0ZWtpXCA7CivpnZ7mmbbos6ogPiBoaXNob3VzaGl0c3VcIDsKK+eOieicgOm7jSA+IHRvdW1vcm9rb3NoaVwgOwor5bCP5b+D6ICFID4gc2hvdXNoaW5tb25vXCA7Civpu5LmsLTlvJUgPiBrdXJvbWl6dWhpa2lcIDsKK+aEn+eGseWJpCA+IGthbicnbmV0c3V6YWlcIDsKK+Wor+alveWupCA+IGdvcmFrdXNoaXRzdVwgOwor6Y6u55eb6JasID4gY2hpbnRzdXV5YWt1XCA7Civog73njofnmoQgPiBub3VyaXRzdXRla2lcIDsKK+WQiOWUseabsiA+IGdhc3Nob3VreW9rdVwgOwor5Li56aCC6ba0ID4gdGFuY2hvdWR6dXJ1XCA7CivpnanmlrDnmoQgPiBrYWt1c2hpbnRla2lcIDsKK+WuouWVhuWjsiA+IGt5YWt1c2hvdWJhaVwgOwor5LiA5ous5byPID4gaWtrYXRzdXNoaWtpXCA7CivnlZznlKPmpa0gPiBjaGlrdXNhbmd5b3VcIDsKK+WHuuihgOatuyA+IHNodWtrZXRzdXNoaVwgOwor55m96auq6aCtID4gc2hpcmFnYWF0YW1hXCA7CivmlrDlvaLlvI8gPiBzaGlua2Vpc2hpa2lcIDsKK+WFseacieeJqSA+IGt5b3V5dXVidXRzdVwgOwor55Sz5ZGK566xID4gc2hpbmtva3ViYWtvXCA7Civmm7jnlZnmlpkgPiBrYWtpdG9tZXJ5b3VcIDsKK+W4jOmHiOeGsSA+IGtpc2hha3VuZXRzdVwgOwor5bGx5Y+j55yMID4geWFtYWd1Y2hpa2VuXCA7Civln7fnrYbogIUgPiBzaGlwcGl0c3VzaGFcIDsKK+WVhuWPluW8lSA+IHNob3V0b3JpaGlraVwgOwor5qSN54mp5rK5ID4gc2hva3VidXRzdXl1XCA7Civlh7rooYDmlpEgPiBzaHVra2V0c3VoYW5cIDsKK+S8geeUu+WupCA+IGtpa2FrdXNoaXRzdVwgOwor5L615YWl6LuNID4gc2hpbicnbnl1dWd1blwgOwor5ryB542y54mpID4gZ3lva2FrdWJ1dHN1XCA7CivlipvlrabnmoQgPiByaWtpZ2FrdXRla2lcIDsKK+eWs+eZqueOiSA+IGthbnNoYWt1ZGFtYVwgOwor57SE5p2f5LqLID4geWFrdXNva3Vnb3RvXCA7CivntYzluLflrZAgPiBreW91a2F0YWJpcmFcIDsKK+eBq+a2iOWjtyA+IGhpa2VzaGl0c3Vib1wgOwor5Yip5LyR6bygID4gcmlreXV1bmV6dW1pXCA7CivpoIblv5zlipsgPiBqdW4nJ25vdXJ5b2t1XCA7CivkuIvljYrouqsgPiBzaGltb2hhbnNoaW5cIDsKK+ihqOaxuuaoqSA+IGh5b3VrZXRzdWtlblwgOwor5oqe5LiA55qEID4gdGFrdWl0c3V0ZWtpXCA7CivmtYHli5XniakgPiByeXV1ZG91YnV0c3VcIDsKK+mZs+i/sOabuCA+IGNoaW5qdXRzdXNob1wgOwor6L+95oK85byPID4gdHN1aXRvdXNoaWtpXCA7Civpo7Lpo5/niakgPiBpbnNob2t1YnV0c3VcIDsKK+aYvOmjn+S8miA+IGNodXVzaG9rdWthaVwgOwor55Wc55Sj5a2mID4gY2hpa3VzYW5nYWt1XCA7CivorZjlrZfnjocgPiBzaGlraWppcml0c3VcIDsKK+m8u+mrmOmrmCA+IGhhbmF0YWthZGFrYVwgOwor54m55Yil5rOVID4gdG9rdWJldHN1aG91XCA7Civlh7rmvIHmqKkgPiBzaHV0c3VneW9rZW5cIDsKK+mztuiBt+S6uiA+IHRvYmlzaG9rdW5pblwgOwor6Y6u6a2C5puyID4gY2hpbmtvbmt5b2t1XCA7Civlh7rmvJTmlpkgPiBzaHV0c3VlbnJ5b3VcIDsKK+mAmuS/l+eahCA+IHRzdXV6b2t1dGVraVwgOwor5L615YWl6ICFID4gc2hpbicnbnl1dXNoYVwgOwor56m65Ye65by1ID4ga2FyYXNodXRjaG91XCA7CivooYDlnKfoqIggPiBrZXRzdWF0c3VrZWlcIDsKK+iDhuaxgeizqiA+IHRhbmp1dXNoaXRzdVwgOwor6buE56Kn546JID4ga291aGVraWd5b2t1XCA7CivpmpTmnIjliIogPiBrYWt1Z2V0c3VrYW5cIDsKK+W+qeWOn+WKmyA+IGZ1a3VnZW5yeW9rdVwgOwor56uj5bel5byPID4gc2h1bmtvdXNoaWtpXCA7Civnq7bkuonnjocgPiBreW91c291cml0c3VcIDsKK+epjeeri+mHkSA+IHRzdW1pdGF0ZWtpblwgOwor5qSN54mp5ZySID4gc2hva3VidXRzdWVuXCA7Civni6zouqvlr64gPiBkb2t1c2hpbnJ5b3VcIDsKK+WFpeacreiAhSA+IG55dXVzYXRzdXNoYVwgOwor5paw5YWl55SfID4gc2hpbicnbnl1dXNlaVwgOwor56We6Kyh6ZuGID4gc2hpbicneW91c2h1dVwgOwor5Lih5qW156uvID4gcnlvdWt5b2t1dGFuXCA7CivluLPpnaLpnaIgPiBjaG91bWVuZHp1cmFcIDsKK+imi+epjeabuCA+IG1pdHN1bW9yaXNob1wgOwor56CU5YmK5LujID4ga2Vuc2FrdXNoaXJvXCA7CivmtLvli5XnmoQgPiBrYXRzdWRvdXRla2lcIDsKK+WFqOiDveWKmyA+IHplbicnbm91cnlva3VcIDsKK+mjn+iCiemhniA+IHNob2t1bmlrdXJ1aVwgOwor6IK65rS76YePID4gaGFpa2F0c3VyeW91XCA7CivplovnpajnjocgPiBrYWloeW91cml0c3VcIDsKK+W4uOitmOeahCA+IGpvdXNoaWtpdGVraVwgOwor5Y+O5a655YqbID4gc2h1dXlvdXJ5b2t1XCA7CivosaHlvrTnmoQgPiBzaG91Y2hvdXRla2lcIDsKK+iHquaFouipsSA+IGppbWFuYmFuYXNoaVwgOwor5oub5b6F5a6iID4gc2hvdXRhaWt5YWt1XCA7CivkuqTpn7/mm7IgPiBrb3VreW91a3lva3VcIDsKK+mbu+ino+izqiA+IGRlbmthaXNoaXRzdVwgOwor5bmz5bqV6Ii5ID4gaGlyYXNva29idW5lXCA7CivlsLHku7vlvI8gPiBzaHV1bmluc2hpa2lcIDsKK+WGt+WHjeWupCA+IHJlaXRvdXNoaXRzdVwgOwor6YWN6Iaz5a6kID4gaGFpemVuc2hpdHN1XCA7CivluoPls7bnnIwgPiBoaXJvc2hpbWFrZW5cIDsKK+aapuaUueatoyA+IGtveW9taWthaXNlaVwgOwor5b6z5bed5pa5ID4gdG9rdWdhd2FnYXRhXCA7Civku67lhaXlraYgPiBrYXJpbnl1dWdha3VcIDsKK+WOn+W9ouizqiA+IGdlbmtlaXNoaXRzdVwgOwor6buS6Imy6IWrID4ga29rdXNob2t1c2h1XCA7CivljZLmpa3nlJ8gPiBzb3RzdWd5b3VzZWlcIDsKK+WbnuW+qeWKmyA+IGthaWZ1a3VyeW9rdVwgOwor5YWl5Lya5byPID4gbnl1dWthaXNoaWtpXCA7CivlkJHlv4PlipsgPiBrb3VzaGlucnlva3VcIDsKK+eOieiZq+iJsiA+IHRhbWFtdXNoaWlyb1wgOwor54m55Yil5Y+3ID4gdG9rdWJldHN1Z291XCA7CivohLHmr5vnl4cgPiBkYXRzdW1vdXNob3VcIDsKK+Wni+eQg+W8jyA+IHNoaWt5dXVzaGlraVwgOwor5L2V6Imy5pCoID4gbmFuc2hva3V6dXJpXCA7Civkv6HoqJfmpa0gPiBzaGludGFrdWd5b3VcIDsKK+WDu+agueaApyA+IGhpZ2FtaWtvbmpvdVwgOwor5aWq5LiJ5oyvID4gZGF0c3VzYW5zaGluXCA7CivpiYTngavkuLwgPiB0ZWtrYWRvbmJ1cmlcIDsKK+Wkp+emj+mkhSA+IGRhaWZ1a3Vtb2NoaVwgOwor5L6155Wl6LuNID4gc2hpbnJ5YWt1Z3VuXCA7Civlj43nianos6ogPiBoYW5idXNzaGl0c3VcIDsKK+WItueQg+WKmyA+IHNlaWt5dXVyeW9rdVwgOwor6Zm455Sj54mpID4gcmlrdXNhbmJ1dHN1XCA7CivovrLkvZzniakgPiBub3VzYWt1YnV0c3VcIDsKK+ernOiIjOiYrSA+IHJ5dXV6ZXRzdXJhblwgOwor5Za25qWt55WRID4gZWlneW91YmF0YWtlXCA7Civogonpo5/njaMgPiBuaWt1c2hva3VqdXVcIDsKK+azleW+i+WtpiA+IGhvdXJpdHN1Z2FrdVwgOwor5paw55m65piOID4gc2hpbmhhdHN1bWVpXCA7CivpgJfnlZnlrqIgPiB0b3VyeXV1a3lha3VcIDsKK+W+s+WztuecjCA+IHRva3VzaGltYWtlblwgOwor5riF5rC05a+6ID4ga2l5b21penVkZXJhXCA7CivnhrHlrrnph48gPiBuZXRzdXlvdXJ5b3VcIDsKK+aWh+ethualrSA+IGJ1bnBpdHN1Z3lvdVwgOwor6ISz5Ye66KGAID4gbm91c2h1a2tldHN1XCA7CivpnLLlh7rnl4cgPiByb3NodXRzdXNob3VcIDsKK+mrmOi2s+ifuSA+IHRha2Fhc2hpZ2FuaVwgOwor56eB5ai856qfID4gc2hpc2hvdWt1dHN1XCA7Civpu5LoibLnmYwgPiBrb2t1c2hva3VnYW5cIDsKK+iyp+ihgOeXhyA+IGhpbmtldHN1c2hvdVwgOwor6KqN6K2Y56WoID4gbmluc2hpa2loeW91XCA7Civnlqvnl4XnpZ4gPiB5YWt1YnlvdWdhbWlcIDsKK+mcsuWHuueLgiA+IHJvc2h1dHN1a3lvdVwgOwor5a+G54yf6ICFID4gbWl0c3VyeW91c2hhXCA7CivlhavkuIjls7YgPiBoYWNoaWpvdWppbWFcIDsKK+mZjeelnuihkyA+IGtvdXNoaW5qdXRzdVwgOwor5ZOy5a2m6ICFID4gdGV0c3VnYWt1c2hhXCA7CivlipvkuIDmna8gPiBjaGlrYXJhaXBwYWlcIDsKK+WHuuWTgeeJqSA+IHNodXBwaW5idXRzdVwgOwor54Gw55m96ImyID4ga2FpaGFrdXNob2t1XCA7Civni6zlsYXlrqQgPiBkb2treW9zaGl0c3VcIDsKK+aOpeW+heS/giA+IHNldHRhaWdha2FyaVwgOwor5LiH5bm06ZuqID4gbWFuJyduZW4nJ3l1a2lcIDsKK+eLguaDs+absiA+IGt5b3Vzb3VreW9rdVwgOwor5L6155Wl6ICFID4gc2hpbnJ5YWt1c2hhXCA7CivnlLrlvbnkurogPiBtYWNoaXlha3VuaW5cIDsKK+iasOickueciSA+IGdlamlnZWppbWF5dVwgOwor5a2m57+S5aG+ID4gZ2FrdXNodXVqdWt1XCA7CivmlrDnmbrlo7IgPiBzaGluaGF0c3ViYWlcIDsKK+ertuS6ieWKmyA+IGt5b3Vzb3VyeW9rdVwgOwor5aSx5ZCN5rCPID4gc2hpdHN1bWVpc2hpXCA7CivooajluqfmlbcgPiBvbW90ZXphc2hpa2lcIDsKK+W+tOeZuuS7pCA+IGNob3VoYXRzdXJlaVwgOwor5Ymv5Y+O5YWlID4gZnVrdXNodXVueXV1XCA7CivmgZDllp3nvaogPiBreW91a2F0c3V6YWlcIDsKK+WxiOaKmOi7uCA+IGt1c3NldHN1amlrdVwgOwor5ZCI5YiH6KKLID4gZ2Fzc2FpYnVrdXJvXCA7Civmtojmga/pgJogPiBzaG91c29rdXRzdXVcIDsKK+agquS4u+aoqSA+IGthYnVudXNoaWtlblwgOwor5Y2g5pyJ546HID4gc2VuJyd5dXVyaXRzdVwgOwor5Y2X5Lqs6KKLID4gbmFua2luYnVrdXJvXCA7Civpq5jpq5jmjIcgPiB0YWthdGFrYXl1YmlcIDsKK+eZveiJsuWFiSA+IGhha3VzaG9rdWtvdVwgOwor6ZCY5Lmz55+zID4gc2hvdW55dXVzZWtpXCA7Civml6XnsbPljZQgPiBuaWNoaWJlaWt5b3VcIDsKK+WxiOaKmOinkiA+IGt1c3NldHN1a2FrdVwgOwor5q665Lq655qEID4gc2F0c3VqaW50ZWtpXCA7Civlt6blm6PmiYcgPiBoaWRhcml1Y2hpd2FcIDsKK+mYsuWhteWupCA+IGJvdWppbnNoaXRzdVwgOwor5ZCr5pyJ546HID4gZ2FuJyd5dXVyaXRzdVwgOwor6ISI5pCP5pWwID4gbXlha3VoYWt1c3V1XCA7CivmjqjpgLLlipsgPiBzdWlzaGlucnlva3VcIDsKK+iBvuahn+aVtyA+IHRzdW5ib3NhamlraVwgOwor57iu57es55q6ID4gY2hpcmltZW5qaXdhXCA7Civmrrrkurrni4IgPiBzYXRzdWppbmt5b3VcIDsKK+i8uOWHuuWFpSA+IHl1c2h1dHN1bnl1dVwgOwor6Kaz5a6i5bitID4ga2Fua3lha3VzZWtpXCA7Civlkb3lhqXliqAgPiBpbm9jaGlteW91Z2FcIDsKK+ihqOWFreeOiSA+IGh5b3Vyb2t1ZGFtYVwgOwor5qOu5p6X5rW0ID4gc2hpbnJpbicneW9rdVwgOwor6ICV5L2c54mpID4ga291c2FrdWJ1dHN1XCA7CivniIbnmbrnrqEgPiBiYWt1aGF0c3VrYW5cIDsKK+m7kuWFq+S4iCA+IGt1cm9oYWNoaWpvdVwgOwor5Y2K6Lqr5rW0ID4gaGFuc2hpbicneW9rdVwgOwor5pqX57eR6ImyID4gYW5yeW9rdXNob2t1XCA7CivnrYvogonnl5sgPiBraW4nJ25pa3V0c3V1XCA7Civogbfog73ntaYgPiBzaG9rdW5vdWt5dXVcIDsKK+aWsOeUn+eJqSA+IHNoaW5zZWlidXRzdVwgOwor5YeM6ZyE6IqxID4gbm91emVua2F6dXJhXCA7Civpu5LoibLlsIkgPiBrb2t1c2hpa2lqb3VcIDsKK+WBtueZuueahCA+IGd1dWhhdHN1dGVraVwgOwor54m555Sj54mpID4gdG9rdXNhbmJ1dHN1XCA7CivljJbnsqflrqQgPiBrZXNob3VzaGl0c3VcIDsKK+e3j+aUr+WHuiA+IHNvdXNoaXNodXRzdVwgOwor5ZOy5a2m5pu4ID4gdGV0c3VnYWt1c2hvXCA7CivljZrnianppKggPiBoYWt1YnV0c3VrYW5cIDsKK+S7suS7i+eJqSA+IGNodXVrYWlidXRzdVwgOwor55m96aCt6beyID4gaGFrdXRvdXdhc2hpXCA7CivmnIDmlrDlvI8gPiBzYWlzaGluc2hpa2lcIDsKK+Wxsei6kei6hSA+IHlhbWF0c3V0c3VqaVwgOwor55yB6Zu75YqbID4gc2hvdWRlbnJ5b2t1XCA7CivkuIDljLnni7wgPiBpcHBpa2lvb2thbWlcIDsKK+a2iOaBr+etiyA+IHNob3Vzb2t1c3VqaVwgOwor5LiH5bm0562GID4gbWFuJyduZW5oaXRzdVwgOwor5LuH5ZCM5rCPID4ga2F0YWtpZG91c2hpXCA7CivlsYDlnLDnmoQgPiBreW9rdWNoaXRla2lcIDsKK+mdqeaJi+iiiyA+IGthd2F0ZWJ1a3Vyb1wgOwor5LiD5YiG6KKWID4gc2hpY2hpYnVzb2RlXCA7Civlv4PpnIrooZMgPiBzaGlucmVpanV0c3VcIDsKK+advuerueaihSA+IHNob3VjaGlrdWJhaVwgOwor5qC46ZaL55m6ID4ga2FrdWthaWhhdHN1XCA7Civlm73pmpvoibIgPiBrb2t1c2Fpc2hva3VcIDsKK+WtkOS+m+W/gyA+IGtvZG9tb2dva29yb1wgOwor5YuF6YG46ZuGID4gY2hva3VzZW5zaHV1XCA7Civnsr7npZ7lipsgPiBzZWlzaGlucnlva3VcIDsKK+WGjeeqgeWFpSA+IHNhaXRvdHN1bnl1dVwgOwor55m65L+h5bGAID4gaGFzc2hpbmt5b2t1XCA7CivlpKflkozlv4MgPiB5YW1hdG9nb2tvcm9cIDsKK+iqv+W+i+W4qyA+IGNob3VyaXRzdXNoaVwgOwor6L6e6IG36aGYID4gamlzaG9rdW5lZ2FpXCA7Civopqrlr4bmhJ8gPiBzaGlubWl0c3VrYW5cIDsKK+eqk+mam+aXjyA+IG1hZG9naXdhem9rdVwgOwor5YaZ55yf6KGTID4gc2hhc2hpbmp1dHN1XCA7CivlvqnlhYPlipsgPiBmdWt1Z2Vucnlva3VcIDsKK+i8u+WwhOeGsSA+IGZ1a3VzaGFuZXRzdVwgOwor5L6b6L+w6ICFID4ga3lvdWp1dHN1c2hhXCA7CivnpZ7ntYznr4AgPiBzaGlua2Vpc2V0c3VcIDsKK+eIhueZuuaApyA+IGJha3VoYXRzdXNlaVwgOwor5YWo5pel5Yi2ID4gemVuJyduaWNoaXNlaVwgOwor5raI5q+S6JasID4gc2hvdWRva3V5YWt1XCA7CivpgZPlvrPlvosgPiBkb3V0b2t1cml0c3VcIDsKK+WbvemYsuiJsiA+IGtva3Vib3VzaG9rdVwgOwor57WC5pyr6KuWID4gc2h1dW1hdHN1cm9uXCA7CivlsIbou43ogbcgPiBzaG91Z3Vuc2hva3VcIDsKK+iNieaciOa1gSA+IHNvdWdldHN1cnl1dVwgOwor5piO6LWk6ImyID4gbWVpc2VraXNob2t1XCA7Civku5jnnYDlipsgPiBmdWNoYWt1cnlva3VcIDsKK+ino+axuuetliA+IGthaWtldHN1c2FrdVwgOwor5Y+j5ZSH6KOCID4ga291c2hpbnJldHN1XCA7CivkuIPojYnnsqUgPiBuYW5ha3VzYWdheXVcIDsKK+WVhualreWtpiA+IHNob3VneW91Z2FrdVwgOwor5bu66Kit55yBID4ga2Vuc2V0c3VzaG91XCA7CivliIbliKXlv4MgPiBmdW5iZXRzdXNoaW5cIDsKK+W7uuioreeahCA+IGtlbnNldHN1dGVraVwgOwor5LqM57+75b25ID4gcnlhbmZhbicneWFrdVwgOwor5Y+j5ouN5a2QID4ga3VjaGlieW91c2hpXCA7Civoqo3oqLzlvI8gPiBuaW5zaG91c2hpa2lcIDsKK+e3j+aLrOeahCA+IHNvdWthdHN1dGVraVwgOwor5omY6Ymi5YOnID4gdGFrdWhhdHN1em91XCA7CivllYbmpa3lm70gPiBzaG91Z3lvdWtva3VcIDsKK+S7suS6uuWPoyA+IG5ha291ZG9ndWNoaVwgOwor5qGc5YmN57eaID4gc2FrdXJhemVuc2VuXCA7Civpvo3oiIzomK0gPiByeXV1emV0c3VyYW5cIDsKK+W8t+WItuWKmyA+IGt5b3VzZWlyeW9rdVwgOwor5b+F6Kqt5pu4ID4gaGl0c3Vkb2t1c2hvXCA7CivlnKflipvoqIggPiBhdHN1cnlva3VrZWlcIDsKK+maj+ethumbhiA+IHp1aWhpdHN1c2h1dVwgOwor54yr55uu55+zID4gbmVrb21va3VzZWtpXCA7Civli4nlvLfmnLogPiBiZW5reW91enVrdWVcIDsKK+eZveeOiealvCA+IGhha3VneW9rdXJvdVwgOwor6ZaL6YCa5byPID4ga2FpdHN1dXNoaWtpXCA7Civopb/ljYrnkIMgPiBuaXNoaWhhbmt5dXVcIDsKK+WVhOacqOmzpSA+IHRha3Vib2t1Y2hvdVwgOwor5Y2Y5LiA5b2iID4gdGFuJydpY2hpZ2F0YVwgOwor5b+F54S255qEID4gaGl0c3V6ZW50ZWtpXCA7CivmsLTon7fonoIgPiBtaXp1a2FtYWtpcmlcIDsKK+aYn+aciOWknCA+IGhvc2hpZHp1a3V5b1wgOwor57ie57mU54mpID4gc2hpbWFvcmltb25vXCA7Civlu7roqK3mpa0gPiBrZW5zZXRzdWd5b3VcIDsKK+m8u+mrmOOAhSA+IGhhbmF0YWthZGFrYVwgOwor5ZWG5Lq66KGXID4gc2hvdW5pbm1hY2hpXCA7CivkuIDluZXniakgPiBoaXRvbWFrdW1vbm9cIDsKK+eZvuS6uuWKmyA+IGh5YWt1bmlucmlraVwgOwor5L6b6L+w5pu4ID4ga3lvdWp1dHN1c2hvXCA7Civlrp/mpa3nlYwgPiBqaXRzdWd5b3VrYWlcIDsKK+ihjOW5s+mNiyA+IHl1a2loaXJhbmFiZVwgOwor6JC95oiQ5byPID4gcmFrdXNlaXNoaWtpXCA7Civmn7Plt53pjYsgPiB5YW5hZ2F3YW5hYmVcIDsKK+iIque2muWKmyA+IGtvdXpva3VyeW9rdVwgOwor55u05o6l6LK7ID4gY2hva3VzZXRzdWhpXCA7CivlsbHmoqjnnIwgPiB5YW1hbmFzaGlrZW5cIDsKK+ajl+aksOWtkCA+IG5hdHN1bWV5YXNoaVwgOwor5Yi65r+A54mpID4gc2hpZ2VraWJ1dHN1XCA7CivmvKvpgYrlrqIgPiBtYW4nJ3l1dWt5YWt1XCA7Civpo5/nianmsrkgPiBzaG9rdWJ1dHN1eXVcIDsKK+eTpueFjumkhSA+IGthd2FyYXNlbmJlaVwgOwor6Kaq5a2Q5Li8ID4gb3lha29kb25idXJpXCA7CivokZfov7Dmpa0gPiBjaG9qdXRzdWd5b3VcIDsKK+iSvOeZveiJsiA+IHNvdWhha3VzaG9rdVwgOwor5LiD6L665b2iID4gc2hpY2hpaGVua2VpXCA7CivlubTmnKvov4QgPiBuZW5tYXRzdW1hZGVcIDsKK+WjsuaYpeWuvyA+IGJhaXNodW4nJ3lhZG9cIDsKK+izqueCueezuyA+IHNoaXRzdXRlbmtlaVwgOwor5b6h5Ly96KmxID4gb3RvZ2liYW5hc2hpXCA7Civmk43mpa3njocgPiBzb3VneW91cml0c3VcIDsKK+aeleWxj+miqCA+IG1ha3VyYWJ5b3VidVwgOwor6KGA5ray5a2mID4ga2V0c3Vla2lnYWt1XCA7Civln7rnnaPmlZkgPiBraXJpc3V0b2t5b3VcIDsKK+m8oOiKseeBqyA+IG5lenVtaWhhbmFiaVwgOwor5o2V54mp5bizID4gdG9yaW1vbm9jaG91XCA7CivmjZXnianluJYgPiB0b3JpbW9ub2Nob3VcIDsKK+iyr+iUteWupCA+IGNob3pvdXNoaXRzdVwgOwor5byU5ZWP5a6iID4gY2hvdW1vbmt5YWt1XCA7CivpgbrlpLHniakgPiBpc2hpdHN1YnV0c3VcIDsKK+WLleiEiOihgCA+IGRvdW15YWtrZXRzdVwgOwor5YWl5aC05byPID4gbnl1dWpvdXNoaWtpXCA7CivntLDog57os6ogPiBzYWlib3VzaGl0c3VcIDsKK+ihgOa2suWeiyA+IGtldHN1ZWtpZ2F0YVwgOwor5qiZ6K2Y54GvID4gaHlvdXNoaWtpdG91XCA7CivljIXmi6znmoQgPiBob3VrYXRzdXRla2lcIDsKK+WKh+S4reWKhyA+IGdla2ljaHV1Z2VraVwgOwor5a6f55So55qEID4gaml0c3V5b3V0ZWtpXCA7Civkvo3lhavpqI4gPiBzYW11cmFpaGFra2lcIDsKK+S4remWk+iJsiA+IGNodXVrYW5zaG9rdVwgOwor6ZaL6IW56KGTID4ga2FpZnVrdWp1dHN1XCA7Civnm7TmkoPlvL4gPiBjaG9rdWdla2lkYW5cIDsKK+WJr+eUo+eJqSA+IGZ1a3VzYW5idXRzdVwgOwor5ZG95Lit546HID4gbWVpY2h1dXJpdHN1XCA7CivooYDlj4vnl4UgPiBrZXRzdXl1dWJ5b3VcIDsKK+eyvueZveeOhyA+IHNlaWhha3VyaXRzdVwgOwor5Z2H6LOq5oCnID4ga2luc2hpdHN1c2VpXCA7CivmiLjnsY3kv4IgPiBrb3Nla2lnYWthcmlcIDsKK+aOpeWuoualrSA+IHNla2t5YWt1Z3lvdVwgOwor6JOE6Ia/55eHID4gY2hpa3Vub3VzaG91XCA7CivoirHlvaLmoKogPiBoYW5hZ2F0YWthYnVcIDsKK+aMr+WHuuS6uiA+IGZ1cmlkYXNoaW5pblwgOwor6Ki76YeI6ICFID4gY2h1dXNoYWt1c2hhXCA7CivnpoHmrLLnmoQgPiBraW4nJ3lva3V0ZWtpXCA7CivkuIDliIbliKUgPiBoaXRvZnVuYmV0c3VcIDsKK+WNiueLrOeriyA+IGhhbmRva3VyaXRzdVwgOwor5Z+35YuZ5LitID4gc2hpdHN1bXVjaHV1XCA7Civopqrml6XmtL4gPiBzaGluJyduaWNoaWhhXCA7Civnpo/ls7bnnIwgPiBmdWt1c2hpbWFrZW5cIDsKK+iqv+iJsuadvyA+IGNob3VzaG9rdWJhblwgOwor5Ymq5a6a6YuPID4gc2VudGVpYmFzYW1pXCA7Civnt5Hpu4ToibIgPiByeW9rdW91c2hva3VcIDsKK+S4i+Wxi+aVtyA+IHNoaW1veWFzaGlraVwgOwor6LuK55So5ZOBID4ga3VydW1heW91aGluXCA7CivogJDkuYXlipsgPiB0YWlreXV1cnlva3VcIDsKK+WvneWPsOiZqyA+IHNoaW5kYWltdXNoaVwgOwor5Zec6JmQ55qEID4gc2hpZ3lha3V0ZWtpXCA7CivkuK3ntpnlsYAgPiBjaHV1a2Vpa3lva3VcIDsKK+mVt+W6g+iIjCA+IGNob3Vrb3V6ZXRzdVwgOwor5pel5rKh5b6MID4gbmljaGlib3RzdWdvXCA7Civli5XohIjnmKQgPiBkb3VteWFrdXJ5dXVcIDsKK+S4gOi8quaMvyA+IGljaGlyaW56YXNoaVwgOwor6JK455m655q/ID4gam91aGF0c3V6YXJhXCA7Civos4PlgJ/mqKkgPiBjaGluc2hha3VrZW5cIDsKK+WNuOWVj+WxiyA+IG9yb3NoaWRvbicneWFcIDsKK+mYsua5v+WJpCA+IGJvdXNoaXRzdXphaVwgOwor5Y+O56mr6auYID4gc2h1dWtha3VkYWthXCA7Civlho3lh7rnmbogPiBzYWlzaHVwcGF0c3VcIDsKK+WNlOWlj+absiA+IGt5b3Vzb3VreW9rdVwgOwor5ZGo5qW15pifID4gc2h1dWt5b2t1c2VpXCA7Civpm7booYzliJcgPiByZWlneW91cmV0c3VcIDsKK+WHuueZuueCuSA+IHNodXBwYXRzdXRlblwgOwor5ZCI5qC8546HID4gZ291a2FrdXJpdHN1XCA7CivooYzpgLLmm7IgPiBrb3VzaGlua3lva3VcIDsKK+eZveeGseeBryA+IGhha3VuZXRzdXRvdVwgOwor6aOf5paZ5ZOBID4gc2hva3VyeW91aGluXCA7Civmk43ou4rkv4IgPiBzb3VzaGFnYWthcmlcIDsKK+WIuuaIn+eJqSA+IHNoaWdla2lidXRzdVwgOwor5rm/6Zu75rGgID4gc2hpdHN1ZGVuY2hpXCA7CivoprPmjozooZMgPiBrYW5zaG91anV0c3VcIDsKK+ecn+mqqOmggiA+IHNoaW5rb3RjaG91XCA7Civlv4XopoHlk4EgPiBoaXRzdXlvdWhpblwgOwor55S75LiW55qEID4ga2FrdXNlaXRla2lcIDsKK+eGqOaWl+iiiyA+IG5vc2hpYnVrdXJvXCA7CivmuKzlnLDlraYgPiBzb2t1Y2hpZ2FrdVwgOwor6ZuB5pyo6ZGiID4gZ2FuZ2l5YXN1cmlcIDsKK+WGjeWJsuW8lSA+IHNhaXdhcmliaWtpXCA7CivlpYnnjK7lvI8gPiBob3VrZW5zaGlraVwgOwor5Yid6KqV55SfID4gaGF0c3V0YW5qb3VcIDsKK+S4ieacrOi2syA+IHNhbmJvbicnYXNoaVwgOwor5Yik5pat5YqbID4gaGFuZGFucnlva3VcIDsKK+WNlOiqv+aApyA+IGt5b3VjaG91c2VpXCA7CivlpKnpgZPkub4gPiB0ZW50b3Vib3NoaVwgOwor55m95pel5aSiID4gaGFrdWppdHN1bXVcIDsKK+WIhuaekOihqCA+IGJ1bnNla2loeW91XCA7Civmib/oq77mm7ggPiBzaG91ZGFrdXNob1wgOwor5bCR6aOf5a62ID4gc2hvdXNob2t1a2FcIDsKK+S7ruWft+ihjCA+IGthcmlzaGlra291XCA7Civmj6HlipvoqIggPiBha3VyeW9rdWtlaVwgOwor5LiN6Laz5YudID4gZnVzb2t1Z2FjaGlcIDsKK+W+jOmAsuWbvSA+IGtvdXNoaW5rb2t1XCA7CivmtJfnnLzolqwgPiBzZW5nYW4nJ3lha3VcIDsKK+W+qee/kuaWhyA+IGZ1a3VzaHV1YnVuXCA7CivmraLooYDluK8gPiBzaGlrZXRzdXRhaVwgOwor5LiL5a6/5paZID4gZ2VzaHVrdXJ5b3VcIDsKK+mHjemHj+e0miA+IGp1dXJ5b3VreXV1XCA7CivliY3pgLLou7ggPiB6ZW5zaGluamlrdVwgOwor6YmE55+z5b+DID4gdGVzc2VraXNoaW5cIDsKK+eUmOiMtuiUkyA+IGFtYWNoYWR6dXJ1XCA7CivnvbLlkI3lvI8gPiBzaG9tZWlzaGlraVwgOwor5Lq65b+D5ZywID4gaGl0b2dva29jaGlcIDsKK+WbmuS6uuacjSA+IHNodXVqaW5mdWt1XCA7CivlvovlhIDogIUgPiByaWNoaWdpbW9ub1wgOwor6ZuB5pyo6LuKID4gZ2FuZ2lndXJ1bWFcIDsKK+aGguasneeXhyA+IHl1dXV0c3VzaG91XCA7Civlrp/pqJPlvI8gPiBqaWtrZW5zaGlraVwgOwor54uC5L+h6ICFID4ga3lvdXNoaW5zaGFcIDsKK+awkeaXj+eahCA+IG1pbnpva3V0ZWtpXCA7CivnmbroqIDogIUgPiBoYXRzdWdlbnNoYVwgOwor5Y2Y57im5YiXID4gdGFuanV1cmV0c3VcIDsKK+S4ieS6uue1hCA+IHNhbicnbmluZ3VtaVwgOwor6buS5paR55eFID4ga29rdWhhbmJ5b3VcIDsKK+aCquaCquaIryA+IHdhcnVpdGF6dXJhXCA7Civlrp/nlKjlk4EgPiBqaXRzdXlvdWhpblwgOwor5aSn6IW/6aqoID4gZGFpdGFpa290c3VcIDsKK+awtOicnOahgyA+IHN1aW1pdHN1dG91XCA7CivmvILmtYHoiLkgPiBoeW91cnl1dXNlblwgOwor6aC45YuV6ISIID4ga2VpZG91bXlha3VcIDsKK+eUn+WFteazlSA+IG5hbWFieW91aG91XCA7Civng4/nvr3oibIgPiBrYXJhc3ViYWlyb1wgOwor5byf5byf5a2QID4gb3RvdXRvZGVzaGlcIDsKK+WKh+aWh+WtpiA+IGdla2lidW5nYWt1XCA7CivliqDolqzpo68gPiBrYXlha3VtZXNoaVwgOwor5YyX5Y2K55CDID4ga2l0YWhhbmt5dXVcIDsKK+mbhuS4ree3miA+IHNodXVjaHV1c2VuXCA7Civlvpfmpa3lo6sgPiB0b2t1Z3lvdXNoaVwgOwor5YmN6YCy6KeSID4gemVuc2hpbmtha3VcIDsKK+mkiuauluaxoCA+IHlvdXNob2t1Y2hpXCA7Civll5zomZDmgKcgPiBzaGlneWFrdXNlaVwgOwor5LiJ5Lq656ewID4gc2FuJyduaW5zaG91XCA7CivkuK3ntJrlk4EgPiBjaHV1a3l1dWhpblwgOwor5ryC5rWB6ICFID4gaHlvdXJ5dXVzaGFcIDsKK+iqmOaDkeeJqSA+IHl1dXdha3Vtb25vXCA7CivpoK3ok4vpqqggPiB0b3VnYWlrb3RzdVwgOwor55m65piO5ZOBID4gaGF0c3VtZWloaW5cIDsKK+WkseagvOiAhSA+IHNoaWtrYWt1c2hhXCA7CivmiJDnuL7ooaggPiBzZWlzZWtpaHlvdVwgOwor5rOo5paH5YWIID4gY2h1dW1vbnNha2lcIDsKK+aXouaxuuWbmiA+IGtpa2V0c3VzaHV1XCA7CivmkYLli5Xoq5YgPiBzZXRzdWRvdXJvblwgOwor5LyP5rWB5rC0ID4gZnVrdXJ5dXVzdWlcIDsKK+eLrOijgeeahCA+IGRva3VzYWl0ZWtpXCA7Civpq5joqr/lrZAgPiB0YWthY2hvdXNoaVwgOwor56uL6ISa5ZywID4gcmlra3lha3VjaGlcIDsKK+WGjeani+eviSA+IHNhaWtvdWNoaWt1XCA7Civmq5PlpKrpvJMgPiB5YWd1cmFkYWlrb1wgOwor5q2i6KGA5YmkID4gc2hpa2V0c3V6YWlcIDsKK+S4oeaWueWFsSA+IHJ5b3Vob3V0b21vXCA7Civmnb7okYnmnZYgPiBtYXRzdWJhZHp1ZVwgOwor5rKW56mN57WxID4gY2h1dXNla2l0b3VcIDsKK+S7leS6i+eusSA+IHNoaWdvdG9iYWtvXCA7CivmsLfphovphbggPiBoeW91c2FrdXNhblwgOwor5pu457GN5ZWGID4gc2hvc2VraXNob3VcIDsKK+S7rue2tOacrCA+IGthcml0b2ppaG9uXCA7Civnmbrpm7vmiYAgPiBoYXRzdWRlbnNob1wgOwor5a6Y6IO955qEID4ga2FuJydub3V0ZWtpXCA7CivmnKvmoqLnmoQgPiBtYXNzaG91dGVraVwgOwor5Lit6ZaT5Zu9ID4gY2h1dWthbmtva3VcIDsKK+aAnee0oueahCA+IHNoaXNha3V0ZWtpXCA7Civlh7rouqvmoKEgPiBzaHVzc2hpbmtvdVwgOwor54Gw6Z2S6ImyID4gaGFpc2Vpc2hva3VcIDsKK+iIqua1t+ihkyA+IGtvdWthaWp1dHN1XCA7CivlsI/mnbHkuqwgPiBzaG91dG91a3lvdVwgOwor5Y2D5Lq65YqbID4gc2VuJyduaW5yaWtpXCA7Civkurrlt6Xoip0gPiBqaW5rb3VzaGliYVwgOwor6Lu96YeP57SaID4ga2VpcnlvdWt5dXVcIDsKK+aLmOadn+WcpyA+IGtvdXNva3VhdHN1XCA7CivmiKbpl5jlipsgPiBzZW50b3VyeW9rdVwgOwor55CD6Z2i6Y+hID4ga3l1dW1lbmt5b3VcIDsKK+S6uuW9ouWKhyA+IG5pbmd5b3VnZWtpXCA7CivnhKHpqqjogIUgPiBidWtvdHN1bW9ub1wgOwor55S65aWJ6KGMID4gbWFjaGlidWd5b3VcIDsKK+epuuiovOaWhyA+IGthcmFzaG91bW9uXCA7CivmsLfphaLphbggPiBoeW91c2FrdXNhblwgOwor5pS+54mp57eaID4gaG91YnV0c3VzZW5cIDsKK+iqv+WtkOiAhSA+IGNob3VzaGltb25vXCA7Civnj77lrp/mhJ8gPiBnZW5qaXRzdWthblwgOwor56mN5YiG5a2mID4gc2VraWJ1bmdha3VcIDsKK+ePvuWun+aApyA+IGdlbmppdHN1c2VpXCA7Civpq5jpm7vlnKcgPiBrb3VkZW4nJ2F0c3VcIDsKK+WtpuWVj+eahCA+IGdha3Vtb250ZWtpXCA7CivlrabnqbbnmoQgPiBnYWtreXV1dGVraVwgOwor5Y+O56mr56WtID4gc2h1dWtha3VzYWlcIDsKK+eJqeeQhuWtpiA+IGJ1dHN1cmlnYWt1XCA7CivlnoLnm7Tnt5ogPiBzdWljaG9rdXNlblwgOwor5q205Y+y5a2mID4gcmVraXNoaWdha3VcIDsKK+a9pOa7keWJpCA+IGp1bmthdHN1emFpXCA7CivntYTnuZTlraYgPiBzb3NoaWtpZ2FrdVwgOwor55m66Zu75a2QID4gaGF0c3VkZW5zaGlcIDsKK+S4ieWwiuS7jyA+IHNhbnpvbmJ1dHN1XCA7CivlvJXlj5bkurogPiBoaWtpdG9yaW5pblwgOwor5ryC5rOK6ICFID4gaHlvdWhha3VzaGFcIDsKK+ecn+eUsOiZqyA+IHNhbmFkYW11c2hpXCA7Civpl4fllYbkurogPiB5YW1pc2hvdW5pblwgOwor5YWl5ryB5paZID4gbnl1dWd5b3J5b3VcIDsKK+S4g+WuneeEvCA+IHNoaXBwb3V5YWtpXCA7Civpi7zpiYTmnb8gPiBrb3V0ZXRzdWJhblwgOwor5YSq6Imv5qCqID4geXV1cnlvdWthYnVcIDsKK+acrOagvOeahCA+IGhvbmtha3V0ZWtpXCA7CivlvqnorpDmiKYgPiBmdWt1c2h1dXNlblwgOwor5pq05Yqb5ZujID4gYm91cnlva3VkYW5cIDsKK+WIneiouuaWmSA+IHNob3NoaW5yeW91XCA7Civlj6PpgZTogIUgPiBrdWNoaWRhc3NoYVwgOwor6ICQ54ax5oCnID4gdGFpbmV0c3VzZWlcIDsKK+Wil+ihgOWJpCA+IHpvdWtldHN1emFpXCA7CivljJfljJfmnbEgPiBob2t1aG9rdXRvdVwgOwor55m66KiA5qipID4gaGF0c3VnZW5rZW5cIDsKK+aApeaIkOmVtyA+IGt5dXVzZWljaG91XCA7Civlh7ros4fpoY0gPiBzaHVzc2hpZ2FrdVwgOwor5YaF5YiG5rOMID4gbmFpYnVucGl0c3VcIDsKK+Wbm+aXrOevgCA+IHNoaWp1bnNldHN1XCA7CivkuZ3lrpjps6UgPiBreXV1a2FuY2hvdVwgOwor6ICB5Lq65YqbID4gcm91amlucnlva3VcIDsKK+W7uuevieWjqyA+IGtlbmNoaWt1c2hpXCA7CivlpKrmpbXmi7MgPiB0YWlreW9rdWtlblwgOwor55Sf55Wq57WEID4gbmFtYWJhbmd1bWlcIDsKK+mkiuauluWgtCA+IHlvdXNob2t1am91XCA7CivomZrohLHmhJ8gPiBreW9kYXRzdWthblwgOwor6LGh54mZ6LOqID4gem91Z2VzaGl0c3VcIDsKK+mahum8u+ihkyA+IHJ5dXViaWp1dHN1XCA7CivooajpnaLnqY0gPiBoeW91bWVuc2VraVwgOwor5Yqq5Yqb6LOeID4gZG9yeW9rdXNob3VcIDsKK+WNgeS6uuS4piA+IGp1dW5pbicnbmFtaVwgOwor6Jas6ZG16aCtID4geWFrYW4nJ2F0YW1hXCA7CivllYblo7LnrYsgPiBzaG91YmFpc3VqaVwgOwor5riv5rm+5bGAID4ga291d2Fua3lva3VcIDsKK+awtOWVhuWjsiA+IG1penVzaG91YmFpXCA7CivpiYTpgZPkvr8gPiB0ZXRzdWRvdWJpblwgOwor5rCR5peP5a2mID4gbWluem9rdWdha3VcIDsKK+attOWPsuWKhyA+IHJla2lzaGlnZWtpXCA7Civmup3lvaLpi7wgPiBtaXpvZ2F0YWtvdVwgOwor5piO5pmw5aSiID4gbWVpc2VraXl1bWVcIDsKK+mAoOihgOWJpCA+IHpvdWtldHN1emFpXCA7Civmlq3ntprnmoQgPiBkYW56b2t1dGVraVwgOwor5byP6YOo55yBID4gc2hpa2lidXNob3VcIDsKK+altemBk+iAhSA+IGdva3Vkb3Vtb25vXCA7CivplovmoKHlvI8gPiBrYWlrb3VzaGlraVwgOwor5rCR57SE6KuWID4gbWluJyd5YWt1cm9uXCA7CivpmLLlvqHnjocgPiBib3VneW9yaXRzdVwgOwor6KGo6Z2i55qEID4gaHlvdW1lbnRla2lcIDsKK+ioiOaZguS/giA+IGtlaWppZ2FrYXJpXCA7Civlvoznmbrlk4EgPiBrb3VoYXRzdWhpblwgOwor6Jap5pGp54S8ID4gc2F0c3VtYXlha2lcIDsKK+WHuui6q+WcsCA+IHNodXNzaGluY2hpXCA7CivorbfouqvooZMgPiBnb3NoaW5qdXRzdVwgOwor5LiO5aSq6KmxID4geW90YWJhbmFzaGlcIDsKK+WGjeWFpeWtpiA+IHNhaW55dXVnYWt1XCA7CivljZTntITmm7ggPiBreW91eWFrdXNob1wgOwor6Kq/5a2Q54mpID4gY2hvdXNoaW1vbm9cIDsKK+S4iee+veeDjyA+IHNhbmJhZ2FyYXN1XCA7CivoqKrllY/lrqIgPiBob3Vtb25reWFrdVwgOwor5rK76aiT6JasID4gY2hpa2VuJyd5YWt1XCA7CivmgKflloToqqwgPiBzZWl6ZW5zZXRzdVwgOwor5LuV5LqL5p+EID4gc2hpZ290b2dhcmFcIDsKK+Wkp+aguei2syA+IGRhaWtvbicnYXNoaVwgOwor5YWJ54Cs6b6NID4gbWl0c3VzZXJ5dXVcIDsKK+eLvOiXieiAhSA+IHJvdXpla2ltb25vXCA7Civlv4Pmi43mlbAgPiBzaGlucGFrdXN1dVwgOwor5YuV54mp6KqMID4gZG91YnV0c3VzaGlcIDsKK+i/lOWNtOWApCA+IGhlbmt5YWt1Y2hpXCA7CivnhKHpp4ToqbEgPiBtdWRhYmFuYXNoaVwgOwor5YiG5a2Q5byPID4gYnVuc2hpc2hpa2lcIDsKK+mZjei7iuWPoyA+IGtvdXNoYWd1Y2hpXCA7CivmpJzlh7rlmaggPiBrZW5zaHV0c3VraVwgOwor6JC96JGJ5p2+ID4gcmFrdXlvdXNob3VcIDsKK+alteWJjee3miA+IGt5b2t1emVuc2VuXCA7CivotoXotorngrkgPiBjaG91ZXRzdXRlblwgOwor6buS54yp44CFID4ga3Vyb3Nob3Vqb3VcIDsKK+WbveaFtuevgCA+IGtva2tlaXNldHN1XCA7CivlpKnnlKPniakgPiB0ZW5zYW5idXRzdVwgOwor57Sz5aOr6YyyID4gc2hpbnNoaXJva3VcIDsKK+WGjeWFpeWbvSA+IHNhaW55dXVrb2t1XCA7CivnsKHmvZTmgKcgPiBrYW5rZXRzdXNlaVwgOwor5YiH5pat6Z2iID4gc2V0c3VkYW5tZW5cIDsKK+W8lei+vOe3miA+IGhpa2lrb21pc2VuXCA7Civnspflv73ogIUgPiBzb2tvdHN1bW9ub1wgOwor6ZaL5Lya5byPID4ga2Fpa2Fpc2hpa2lcIDsKK+aEn+WCt+eahCA+IGthbnNob3V0ZWtpXCA7CivluILmnInniakgPiBzaGl5dXVidXRzdVwgOwor6IGW6IG36ICFID4gc2Vpc2hva3VzaGFcIDsKK+S4reiho+WaoiA+IG5ha2FnYWt1c2hpXCA7Civni6znq4voqp4gPiBkb2t1cml0c3Vnb1wgOwor6IKy5YWQ5a6kID4gaWt1amlzaGl0c3VcIDsKK+e5geauluWcsCA+IGhhbnNob2t1Y2hpXCA7CivkuIDkurrnp7AgPiBpY2hpbmluc2hvdVwgOwor6ZW35bSO55yMID4gbmFnYXNha2lrZW5cIDsKK+mbu+WKm+ioiCA+IGRlbnJ5b2t1a2VpXCA7Civoo73msLfnmr8gPiBzZWloeW91emFyYVwgOwor5Li756iO5bGAID4gc2h1emVpa3lva3VcIDsKK+aOpee2muiqniA+IHNldHN1em9rdWdvXCA7Civnibnpm4blj7cgPiB0b2t1c2h1dWdvdVwgOwor6buS6KSQ6ImyID4ga29ra2Fzc2hva3VcIDsKK+S4reWbveS6uiA+IGNodXVnb2t1amluXCA7CivlvpPlsZ7lm70gPiBqdXV6b2t1a29rdVwgOwor5Y+j6L+U562UID4ga3VjaGloZW50b3VcIDsKK+a4m+ihsOeOhyA+IGdlbnN1aXJpdHN1XCA7CivlsI7pm7vnjocgPiBkb3VkZW5yaXRzdVwgOwor5LiA5LqG57ChID4gaWNoaXJ5b3VrYW5cIDsKK+WGjei8uOWHuiA+IHNhaXl1c2h1dHN1XCA7CivpnZLpioXoibIgPiBzZWlkb3VzaG9rdVwgOwor6ZqK5ZWG5a6/ID4gdGFpc2hvdXlhZG9cIDsKK+W8j+asoeesrCA+IHNoaWtpc2hpZGFpXCA7CivnlJ/nlKPniakgPiBzZWlzYW5idXRzdVwgOwor5bm76Kaa55eHID4gZ2Vua2FrdXNob3VcIDsKK+aKleaJi+WKmyA+IHRvdXNodXJ5b2t1XCA7CivplonkvJrlvI8gPiBoZWlrYWlzaGlraVwgOwor5rKW56mN5bGkID4gY2h1dXNla2lzb3VcIDsKK+WCrOecoOihkyA+IHNhaW1pbmp1dHN1XCA7CivonZnonaDlgpggPiBrb3Vtb3JpZ2FzYVwgOwor5ZCR5pel5oCnID4ga291bmljaGlzZWlcIDsKK+WQuOWPlue0mSA+IHN1aXRvcmlnYW1pXCA7CivmhoLprLHnl4cgPiB5dXV1dHN1c2hvdVwgOwor6auY5Zyn55qEID4ga291YXRzdXRla2lcIDsKK+acieWKm+iAhSA+IHl1dXJ5b2t1c2hhXCA7CivliKXllY/poYwgPiBiZXRzdW1vbmRhaVwgOwor5Luj5pWw5byPID4gZGFpc3V1c2hpa2lcIDsKK+WFpea4r+aWmSA+IG55dXVrb3VyeW91XCA7CivnhKHlrr/ogIUgPiBtdXNodWt1bW9ub1wgOwor5Y6f5a2Q5YqbID4gZ2Vuc2hpcnlva3VcIDsKK+aIkOaWh+W+iyA+IHNlaWJ1bnJpdHN1XCA7CivnlLfkuIDljLkgPiBvdG9rb2lwcGlraVwgOwor5aGe5qCT55eHID4gc29rdXNlbnNob3VcIDsKK+WVhuWjsuafhCA+IHNob3ViYWlnYXJhXCA7CivohbnotrPpoZ4gPiBmdWt1c29rdXJ1aVwgOwor5p2x5Y2w5bqmID4gaGlnYXNoaWluZG9cIDsKK+izh+acrOWKmyA+IHNoaWhvbnJ5b2t1XCA7CivnpYflnJLnpa0gPiBnaW9ubWF0c3VyaVwgOwor5LiK5Lqs5LitID4gam91a3lvdWNodXVcIDsKK+WCrOecoOiWrCA+IHNhaW1pbicneWFrdVwgOwor54++6LGh5a2mID4gZ2Vuc2hvdWdha3VcIDsKK+eni+a0peWztiA+IGFraXRzdXNoaW1hXCA7CivnvorlsI/lsYsgPiBoaXRzdWppZ295YVwgOwor6KOF6aO+5ZOBID4gc291c2hva3VoaW5cIDsKK+WNg+aXpeaJiyA+IHNlbicnbmljaGl0ZVwgOwor5qSN5rCR5ZywID4gc2hva3VtaW5jaGlcIDsKK+WkluWIhuazjCA+IGdhaWJ1bnBpdHN1XCA7CivpmqPov5HmiYAgPiB0b25hcmlraW5qb1wgOwor5a++6aCC6KeSID4gdGFpY2hvdWtha3VcIDsKK+iCqeeUsumqqCA+IGtlbmtvdWtvdHN1XCA7CivohbDlvIHlvZMgPiBrb3NoaWJlbnRvdVwgOwor5Y+j5ben6ICFID4ga3VjaGlnb3VzaGFcIDsKK+S4jeS4luWHuiA+IGZ1c2Vpc2h1dHN1XCA7CivlhYjml6Xku5ggPiBzYWtpaGlkenVrZVwgOwor6YCP6KaW5YqbID4gdG91c2hpcnlva3VcIDsKK+WJteioreiAhSA+IHNvdXNldHN1c2hhXCA7Civph5HprZrpiaIgPiBraW5neW9iYWNoaVwgOwor6KGS5a2m55qEID4gZ2VuZ2FrdXRla2lcIDsKK+mHkeefs+WtpiA+IGtpbnNla2lnYWt1XCA7Civph47oj5znlZEgPiB5YXNhaWJhdGFrZVwgOwor55u05oSf55qEID4gY2hva2thbnRla2lcIDsKK+WLleeJqeebuCA+IGRvdWJ1dHN1c291XCA7Civos4Pku5XkuosgPiBjaGluc2hpZ290b1wgOwor54m56Kix5Li7ID4gdG9ra3lvbnVzaGlcIDsKK+Wliee0jeeJqSA+IGhvdW5vdWJ1dHN1XCA7Civkv53ph4jkuK0gPiBob3NoYWt1Y2h1dVwgOwor6Z2S6JeN6ImyID4gc2VpcmFuc2hva3VcIDsKK+iEhei/q+iAhSA+IGt5b3VoYWt1c2hhXCA7Civli5XniannlYwgPiBkb3VidXRzdWthaVwgOwor6YCa6KGM5LiKID4gdHN1dWtvdWRvbWVcIDsKK+W8t+WlquiAhSA+IGdvdWRhdHN1c2hhXCA7CivohIXov6vnvaogPiBreW91aGFrdXphaVwgOwor5Zuj57WQ5qipID4gZGFua2V0c3VrZW5cIDsKK+e0hOWNiuW5tCA+IHlha3VoYW4nJ25lblwgOwor5oqV56Wo566xID4gdG91aHlvdWJha29cIDsKK+e0oOS6uuiKuCA+IHNoaXJvdXRvZ2VpXCA7CivnqY3mpbXmgKcgPiBzZWtreW9rdXNlaVwgOwor5qW15bqn5qiZID4ga3lva3V6YWh5b3VcIDsKK+Wvneato+aciCA+IG5lc2hvdWdhdHN1XCA7CivmtZrmuKvmqZ8gPiBzaHVuc2V0c3VraVwgOwor57+86Z2i56mNID4geW9rdW1lbnNla2lcIDsKK+e3j+ebrumMsiA+IHNvdW1va3Vyb2t1XCA7CivmoLjlj43lv5wgPiBrYWt1aGFuJydub3VcIDsKK+WItumFuOiWrCA+IHNlaXNhbicneWFrdVwgOwor6LaF5Lq655qEID4gY2hvdWppbnRla2lcIDsKK+esrOS4gOa1gSA+IGRhaWljaGlyeXV1XCA7CivotrPmi43lrZAgPiBhc2hpYnlvdXNoaVwgOwor5byx5p2Q5paZID4geW93YXphaXJ5b3VcIDsKK+aOpeinpue3miA+IHNlc3Nob2t1c2VuXCA7Civlvbnlipvlo6sgPiB5YWt1cmlraXNoaVwgOwor57Wx6L2E6ICFID4gdG91a2F0c3VzaGFcIDsKK+S7leS6i+S4rSA+IHNoaWdvdG9jaHV1XCA7CivlnJ/nmb7lp5MgPiBkb2J5YWt1c2hvdVwgOwor5paH5a2m6LOeID4gYnVuZ2FrdXNob3VcIDsKK+aLm+iri+WbvSA+IHNob3VzZWlrb2t1XCA7Civnt4/lj47lhaUgPiBzb3VzaHV1bnl1dVwgOwor5ris6YeP6Ii5ID4gc29rdXJ5b3VzZW5cIDsKK+WAn+WcsOaoqSA+IHNoYWt1Y2hpa2VuXCA7CivmspbnqY3kuJYgPiBjaHV1c2VraXNlaVwgOwor5Y+j6L+w5pu4ID4ga291anV0c3VzaG9cIDsKK+auieiBt+iAhSA+IGp1bnNob2t1c2hhXCA7Civnl4XomavlrrMgPiBieW91Y2h1dWdhaVwgOwor5oqA6KGT55qEID4gZ2lqdXRzdXRla2lcIDsKK+Wwj+iqrOWutiA+IHNob3VzZXRzdWthXCA7CivnibnntITlupcgPiB0b2t1eWFrdXRlblwgOwor5Lqk6YCa6YePID4ga291dHN1dXJ5b3VcIDsKK+mBk+ahiOWGhSA+IG1pY2hpYW4nJ25haVwgOwor6YGT5pmu6KuLID4gbWljaGlidXNoaW5cIDsKK+WlveiJsuiAhSA+IGtvdXNob2t1c2hhXCA7Civmtojoh63liaQgPiBzaG91c2h1dXphaVwgOwor54us5ZaE55qEID4gZG9rdXplbnRla2lcIDsKK+ino+WDj+WKmyA+IGthaXpvdXJ5b2t1XCA7CivmtbjpgI/lnKcgPiBzaGludG91YXRzdVwgOwor54ax6KGA5ryiID4gbmVra2V0c3VrYW5cIDsKK+Wyqeefs+WtpiA+IGdhbnNla2lnYWt1XCA7CivonJzmn5HnlZEgPiBtaWthbmJhdGFrZVwgOwor54OP5aSp54uXID4ga2FyYXN1dGVuZ3VcIDsKK+e0s+Wjq+eahCA+IHNoaW5zaGl0ZWtpXCA7CivnqpLmga/mrbsgPiBjaGlzc29rdXNoaVwgOwor5LiJ5aSn56+AID4gc2FuZGFpc2V0c3VcIDsKK+a0u+aWreWxpCA+IGthdHN1ZGFuc291XCA7Civnm67pvLvnq4sgPiBtZWhhbmFkYWNoaVwgOwor5ZGo5pyf5b6LID4gc2h1dWtpcml0c3VcIDsKK+mAgOe0heiJsiA+IHRhaWtvdXNob2t1XCA7Civmkq7lg4/nrqEgPiBzYXRzdXpvdWthblwgOwor6IW55YWr5YiGID4gaGFyYWhhY2hpYnVcIDsKK+mAsuWFpei3ryA+IHNoaW4nJ255dXVyb1wgOwor6IOM5pel5oCnID4gaGFpaml0c3VzZWlcIDsKK+mWk+Wlj+absiA+IGthbnNvdWt5b2t1XCA7CivmjIfljZflvbkgPiBzaGluYW4nJ3lha3VcIDsKK+iEhei/q+eKtiA+IGt5b3VoYWt1am91XCA7Civlip/lkI3lv4MgPiBrb3VteW91c2hpblwgOwor5Zue5pWZ5Zu9ID4ga2Fpa3lvdWtva3VcIDsKK+mqqOiGnOeCjiA+IGtvdHN1bWFrdWVuXCA7CivmsqLlurXmvKwgPiB0YWt1YW5kenVrZVwgOwor5qC55YiH6JmrID4gbmVraXJpbXVzaGlcIDsKK+mAgeaWmeWFsSA+IHNvdXJ5b3V0b21vXCA7CivlvLXmnKzkurogPiBjaG91aG9uJyduaW5cIDsKK+S5l+i7iuWPoyA+IGpvdXNoYWd1Y2hpXCA7CivkuIDml6Xot68gPiBpY2hpbmljaGlqaVwgOwor5Zyw6LOq5ZuzID4gY2hpc2hpdHN1enVcIDsKK+eri+aYjuaIpiA+IHJpdHN1bWVpc2VuXCA7Civmir3osaHoq5YgPiBjaHV1c2hvdXJvblwgOwor5LuV6Kiz6KGoID4gc2hpd2FrZWh5b3VcIDsKK+WbveeojuW6gSA+IGtva3V6ZWljaG91XCA7CivmgKfmgqroqqwgPiBzZWlha3VzZXRzdVwgOwor5oeQ6YO355eFID4ga2Fpa3lvdWJ5b3VcIDsKK+afkeapmOmhniA+IGthbmtpdHN1cnVpXCA7CivkuIDpn7Pnr4AgPiBpY2hpb25zZXRzdVwgOwor6IKp6IOb6aqoID4ga2Vua291a290c3VcIDsKK+iEseeCremFuCA+IGRhdHN1dGFuc2FuXCA7CivmlrDmioDooZMgPiBzaGluZ2lqdXRzdVwgOwor6YCG5o6i55+lID4gZ3lha3V0YW5jaGlcIDsKK+aLvuW+l+iAhSA+IHNodXV0b2t1c2hhXCA7Civlrp3nianmrr8gPiBob3Vtb3RzdWRlblwgOwor5Zar54WZ5bitID4ga2l0c3VlbnNla2lcIDsKK+WGt+ihgOa8oiA+IHJlaWtldHN1a2FuXCA7CivkuLvlipvoiaYgPiBzaHVyeW9rdWthblwgOwor6LuK5aSn5belID4ga3VydW1hZGFpa3VcIDsKK+mBjumjn+eXhyA+IGthc2hva3VzaG91XCA7Civlrr/lkb3oq5YgPiBzaHVrdW1laXJvblwgOwor5YWl6YeR56WoID4gbnl1dWtpbmh5b3VcIDsKK+iKseWxi+aVtyA+IGhhbmF5YXNoaWtpXCA7CivlhbHnmb3pq6ogPiB0b21vc2hpcmFnYVwgOwor5Y+j5bqn5L+CID4ga291emFrYWthcmlcIDsKK+eUn+WtmOeOhyA+IHNlaXpvbnJpdHN1XCA7CivnhormnKznnIwgPiBrdW1hbW90b2tlblwgOwor55u06Yqt5b2iID4gY2hva3VzZW5rZWlcIDsKK+WLleeJqeaApyA+IGRvdWJ1dHN1c2VpXCA7Civljp/niIbnl4cgPiBnZW5iYWt1c2hvdVwgOwor6Zu75YuV5byPID4gZGVuZG91c2hpa2lcIDsKK+eUn+eUo+WKmyA+IHNlaXNhbnJ5b2t1XCA7Civlia/niafluKsgPiBmdWt1Ym9rdXNoaVwgOwor6IGW6aSQ5byPID4gc2Vpc2Fuc2hpa2lcIDsKK+mAhumWouaVsCA+IGd5YWt1a2Fuc3V1XCA7CivkuIPkupTkuIkgPiBzaGljaGlnb3NhblwgOwor6aeQ55WZ6LuNID4gY2h1dXJ5dXVndW5cIDsKK+WUr+eJqeirliA+IHl1aWJ1dHN1cm9uXCA7Civml4XllYbkurogPiB0YWJpc2hvdW5pblwgOwor5oqA6KGT5paZID4gZ2lqdXRzdXJ5b3VcIDsKK+e3tOe/kuW4syA+IHJlbnNodXVjaG91XCA7CivpgKDnn7Ppq5ggPiB6b3Vrb2t1ZGFrYVwgOwor6LuN6ZqK5byPID4gZ3VudGFpc2hpa2lcIDsKK+e/u+ios+iAhSA+IGhvbicneWFrdXNoYVwgOwor5r2k55uu6bCvID4gdXJ1bWVpd2FzaGlcIDsKK+iMtuikkOiJsiA+IGNoYWthc3Nob2t1XCA7Civnorrlrp/luqYgPiBrYWt1aml0c3Vkb1wgOwor57eP5Yqb5oimID4gc291cnlva3VzZW5cIDsKK+WlveiJsua8oiA+IGtvdXNob2t1a2FuXCA7CivliJ3mipXnqL8gPiBoYXRzdXRvdWtvdVwgOwor5LiH5LiH5LiAID4gbWFubWFuJydpY2hpXCA7CivntLPlo6vmnI0gPiBzaGluc2hpZnVrdVwgOwor5LiA5LuV5LqLID4gaGl0b3NoaWdvdG9cIDsKK+WXheelnue1jCA+IGt5dXVzaGlua2VpXCA7CivntpnntprnmoQgPiBrZWl6b2t1dGVraVwgOwor5paH5a2m55qEID4gYnVuZ2FrdXRla2lcIDsKK+WFremHjeWUsSA+IHJva3VqdXVzaG91XCA7CivnjoTkurrnrYsgPiBrdXJvdXRvc3VqaVwgOwor5ZuD5a2Q5pa5ID4gaGF5YXNoaWthdGFcIDsKK+Wkp+S6uueJqSA+IGRhaWppbmJ1dHN1XCA7CivlkIzns7voibIgPiBkb3VrZWlzaG9rdVwgOwor57SF55m957KJID4gYmVuaW9zaGlyb2lcIDsKK+Wuo+iqk+W8jyA+IHNlbnNlaXNoaWtpXCA7CivkuK3lkoznhrEgPiBjaHV1d2FuZXRzdVwgOwor5raI6ICX55qEID4gc2hvdWtvdXRla2lcIDsKK+aUu+aSg+eahCA+IGtvdWdla2l0ZWtpXCA7Civln4volLXniakgPiBtYWl6b3VidXRzdVwgOwor5Ymv6Kqt5pysID4gZnVrdWRva3Vob25cIDsKK+m6nemmmem8oCA+IGpha291bmV6dW1pXCA7CivmnKjos4Plrr8gPiBraWNoaW4nJ3lhZG9cIDsKK+Wbm+inkuafsSA+IHNoaWtha3VjaHV1XCA7CivkuK3nqbrlo4EgPiBjaHV1a3V1a2FiZVwgOwor6ICD6Ki85a2mID4ga291c2hvdWdha3VcIDsKK+Wun+iovOeahCA+IGppc3Nob3V0ZWtpXCA7CivmlZHmuIjnrZYgPiBreXV1c2Fpc2FrdVwgOwor6LuN5Zu96Kq/ID4gZ3Vua29rdWNob3VcIDsKK+eZveidi+eXhSA+IGhha3Vyb3VieW91XCA7Civni4Lniqznl4UgPiBreW91a2VuYnlvdVwgOwor5rCR6KGG55qEID4gbWluc2h1dXRla2lcIDsKK+S4gOS4oeW5tCA+IGljaGlyeW91bmVuXCA7CivlpKfku4/mrr8gPiBkYWlidXRzdWRlblwgOwor5Yi56YKj55qEID4gc2V0c3VuYXRla2lcIDsKK+WLheS7u+WumCA+IGNob2t1bmlua2FuXCA7Civlj4zljYHnr4AgPiBzb3VqdXVzZXRzdVwgOwor5aW96Imy5pysID4ga291c2hva3Vib25cIDsKK+eqkuWMlueJqSA+IGNoaWtrYWJ1dHN1XCA7CivkuInop5Lnv7wgPiBzYW5rYWt1eW9rdVwgOwor5oiQ6ZW35qCqID4gc2VpY2hvdWthYnVcIDsKK+efs+adkOWVhiA+IHNla2l6YWlzaG91XCA7CivkvpvoqJfph5EgPiBreW91dGFrdWtpblwgOwor54yr6aGN5aSnID4gYnlvdWdha3VkYWlcIDsKK+WcsOaWueiJsiA+IGNoaWhvdXNob2t1XCA7CivnlJ/kuK3ntpkgPiBuYW1hY2h1dWtlaVwgOwor5ZC45Y+O5YmkID4ga3l1dXNodXV6YWlcIDsKK+W7uuiUveeOhyA+IGtlbnBlaXJpdHN1XCA7CivlrqLoprPnmoQgPiBreWFra2FudGVraVwgOwor5b6L576p6ICFID4gcmljaGlnaW1vbm9cIDsKK+S4i+e0muiBtyA+IGtha3l1dXNob2t1XCA7Civkv67po77oqp4gPiBzaHV1c2hva3Vnb1wgOwor5aSn6aOf5ryiID4gdGFpc2hva3VrYW5cIDsKK+WGt+eskeeahCA+IHJlaXNob3V0ZWtpXCA7CivmlK/ntabpoY0gPiBzaGlreXV1Z2FrdVwgOwor5LiN5Z2H6LOqID4gZnVraW5zaGl0c3VcIDsKK+S7o+ihqOeahCA+IGRhaWh5b3V0ZWtpXCA7CivlhaXpgZPpm7IgPiBueXV1ZG91Z3Vtb1wgOwor5YWx6YCa54K5ID4ga3lvdXRzdXV0ZW5cIDsKK+WFrOW+s+W/gyA+IGtvdXRva3VzaGluXCA7CivlvaLlvI/oq5YgPiBrZWlzaGlraXJvblwgOwor6YeR55Kw6aOfID4ga2lua2Fuc2hva3VcIDsKK+WHuuacreaJgCA+IHNodXNzYXRzdWpvXCA7CivljJfmpbXmtbcgPiBob2treW9rdWthaVwgOwor6KGM5a6Y5bqBID4gZ3lvdWthbmNob3VcIDsKK+S/nei6q+ihkyA+IGhvc2hpbmp1dHN1XCA7CivpkZHorZjnnLwgPiBrYW5zaGlraWdhblwgOwor5YyX5qW15rSLID4gaG9ra3lva3V5b3VcIDsKK+W9q+WIu+eVjCA+IGNob3Vrb2t1a2FpXCA7Civppqzpub/oqbEgPiBiYWthYmFuYXNoaVwgOwor54mp57SN56iOID4gYnV0c3Vub3V6ZWlcIDsKK+S4i+Wls+S4rSA+IHNoaW1vam9jaHV1XCA7CivlnLDkuIvlrqQgPiBjaGlrYXNoaXRzdVwgOwor6LK45pys5bGLID4ga2FzaGlob24nJ3lhXCA7Civpjb7kubPmtJ4gPiBzaG91bnl1dWRvdVwgOwor6IG35ZOh6YyyID4gc2hva3VpbnJva3VcIDsKK+air+WtkOmFkiA+IGhhc2hpZ296YWtlXCA7Civmu57lnKjlrqIgPiB0YWl6YWlreWFrdVwgOwor6JOE6Zu75rGgID4gY2hpa3VkZW5jaGlcIDsKK+ippuaOmOiAhSA+IHNoaWt1dHN1c2hhXCA7CivlpKflrablr64gPiBkYWlnYWt1cnlvdVwgOwor5aer5bCP5p2+ID4gaGltZWtvbWF0c3VcIDsKK+ecn+Wun+WRsyA+IHNoaW5qaXRzdW1pXCA7Civml4XlvbnogIUgPiB0YWJpeWFrdXNoYVwgOwor5Zu95rCR55qEID4ga29rdW1pbnRla2lcIDsKK+aIpuayoeiAhSA+IHNlbmJvdHN1c2hhXCA7CivmtYHooYznl4UgPiByeXV1a291YnlvdVwgOwor5b2r5Yi754mIID4gY2hvdWtva3ViYW5cIDsKK+WRqOaXi+alrSA+IHNodXVzZW5neW91XCA7Civlm6PmiYfomasgPiB1Y2hpd2FtdXNoaVwgOwor5Y+j5bCP6KiAID4ga3VjaGlrb2dvdG9cIDsKK+S7u+WRveW8jyA+IG5pbm1laXNoaWtpXCA7Civpm7vlipvlgrUgPiBkZW5yeW9rdXNhaVwgOwor5Yqb5YuV55qEID4gcmlraWRvdXRla2lcIDsKK+Wkj+W4veWtkCA+IG5hdHN1Ym91c2hpXCA7CivnnaHnnKDolqwgPiBzdWltaW4nJ3lha3VcIDsKK+WNuOebuOWgtCA+IG9yb3NoaXNvdWJhXCA7CivljbDliLfmpa0gPiBpbnNhdHN1Z3lvdVwgOwor5Lyd5bCO546HID4gZGVuZG91cml0c3VcIDsKK+ibuOWFpemBkyA+IHRha29ueXV1ZG91XCA7Civoq4foqbHlrqQgPiBkYW53YXNoaXRzdVwgOwor5a6J5pyI57WmID4geWFzdWdla2t5dXVcIDsKK+WMl+alteaYnyA+IGhva2t5b2t1c2VpXCA7CivlvqHpnIrku6MgPiBtaXRhbWFzaGlyb1wgOwor5ris6YeP5aOrID4gc29rdXJ5b3VzaGlcIDsKK+WHuumhmOaZgiA+IHNodXRzdWdhbmppXCA7CivkuInop5LnkLQgPiBzYW5rYWt1Z290b1wgOwor6YmE5p2h57ayID4gdGV0c3Vqb3Vtb3VcIDsKK+e/u+ios+aoqSA+IGhvbicneWFrdWtlblwgOwor546J5p2T5a2QID4gdGFtYWpha3VzaGlcIDsKK+W3pealreWbvSA+IGtvdWd5b3Vrb2t1XCA7Civlkajml4vmlpkgPiBzaHV1c2VucnlvdVwgOwor6L+95pKD5oimID4gdHN1aWdla2lzZW5cIDsKK+WCt+eXheWFtSA+IHNob3VieW91aGVpXCA7CivlvbzlsrjmoZwgPiBoaWdhbnpha3VyYVwgOwor5LiA5pmC5omVID4gaWNoaWppYmFyYWlcIDsKK+WGheWuueeJqSA+IG5haXlvdWJ1dHN1XCA7CivnhKHkuIDniakgPiBtdWljaGltb3RzdVwgOwor5Yq05YON5YqbID4gcm91ZG91cnlva3VcIDsKK+iLpeerueS6rSA+IHdha2F0YWtldGVpXCA7Civnv7voqLPmm7ggPiBob24nJ3lha3VzaG9cIDsKK+WIsOedgOmnhSA+IHRvdWNoYWt1ZWtpXCA7CivlsJHlm73msJEgPiBzaG91a29rdW1pblwgOwor55Sf5a2m5ZWPID4gbmFtYWdha3Vtb25cIDsKK+S7iuaciOWIhiA+IGtvbmdldHN1YnVuXCA7CivliIbmlbDlvI8gPiBidW5zdXVzaGlraVwgOwor5o6I6LOe5byPID4ganVzaG91c2hpa2lcIDsKK+aOjOS4reacrCA+IHNob3VjaHV1Ym9uXCA7CivnnIHlipvljJYgPiBzaG91cnlva3VrYVwgOwor5Luj6KGo5qC8ID4gZGFpaHlvdWtha3VcIDsKK+aYvOiIiOihjCA+IGhpcnVrb3VneW91XCA7Civpu5nnpLrpjLIgPiBtb2t1c2hpcm9rdVwgOwor5qSc5a+f5a6YID4ga2Vuc2F0c3VrYW5cIDsKK+S+m+iol+iAhSA+IGt5b3V0YWt1c2hhXCA7CivmtbfnlKPniakgPiBrYWlzYW5idXRzdVwgOwor6KSq57SF6ImyID4gdGFpa291c2hva3VcIDsKK+i/lOS/oeeUqCA+IGhlbnNoaW4nJ3lvdVwgOwor6YGB6LWw5puyID4gdG9uc291a3lva3VcIDsKK+i+u+W8t+eblyA+IHRzdWppZ291dG91XCA7CivlhazlvI/miKYgPiBrb3VzaGlraXNlblwgOwor6YeR55Kw6J2VID4ga2lua2Fuc2hva3VcIDsKK+mdtOS4gOi2syA+IGt1dHN1aXNzb2t1XCA7CivmtaroirHnr4AgPiBuYW5pd2FidXNoaVwgOwor5ZCE5aSn5a2mID4ga2FrdWRhaWdha3VcIDsKK+e3j+mAgOWNtCA+IHNvdXRhaWt5YWt1XCA7Civlm73msJHmnI0gPiBrb2t1bWluZnVrdVwgOwor5a6f5Zyo6KuWID4gaml0c3V6YWlyb25cIDsKK+aVkeaApei7iiA+IGt5dXVreXV1c2hhXCA7CivplpPmjqXnqI4gPiBrYW5zZXRzdXplaVwgOwor5Lmx6ZaL55m6ID4gcmFua2FpaGF0c3VcIDsKK+aJgOW4r+S4uyA+IHNob3RhaW51c2hpXCA7CivpmLLlr5LpnbQgPiBib3VrYW5ndXRzdVwgOwor5LiJ6KeS5p+xID4gc2Fua2FrdWNodXVcIDsKK+S7leios+W4syA+IHNoaXdha2VjaG91XCA7CivnspjnnYDmgKcgPiBuZW5jaGFrdXNlaVwgOwor5a+G6YCg6YWSID4gbWl0c3V6b3VzaHVcIDsKK+S4gOWknOa8rCA+IGljaGl5YWR6dWtlXCA7Civmlpzop5Lmn7EgPiBzaGFrYWt1Y2h1dVwgOwor5a++54Wn55qEID4gdGFpc2hvdXRla2lcIDsKK+W9ueS6uumiqCA+IHlha3VuaW5rYXplXCA7CivoiLnoiLbmpa0gPiBzZW5wYWt1Z3lvdVwgOwor5rC06YGT5bGAID4gc3VpZG91a3lva3VcIDsKK+Wni+eZuumnhSA+IHNoaWhhdHN1ZWtpXCA7CivljJfmpbXlnI8gPiBob2treW9rdWtlblwgOwor5pel55So5ZOBID4gbmljaGl5b3VoaW5cIDsKK+WPjemAhuiAhSA+IGhhbmd5YWt1c2hhXCA7CivnmbvpjLLmuIggPiB0b3Vyb2t1enVtaVwgOwor5bCC5aOy5bGAID4gc2VuYmFpa3lva3VcIDsKK+aoqeWKm+iAhSA+IGtlbnJ5b2t1c2hhXCA7CivmgZLkuYXnmoQgPiBrb3VreXV1dGVraVwgOwor5Y+N6YCG572qID4gaGFuZ3lha3V6YWlcIDsKK+eJueetieW4rSA+IHRva3V0b3VzZWtpXCA7CivlhoXmnI3olqwgPiBuYWlmdWt1eWFrdVwgOwor6IeG55eF6aKoID4gb2t1YnlvdWthemVcIDsKK+S+m+e1puiAhSA+IGt5b3VreXV1c2hhXCA7CivlvavliLvluKsgPiBjaG91a29rdXNoaVwgOwor5rGC5Lq66ZujID4ga3l1dWppbicnbmFuXCA7CivpoJrli5XohIggPiBrZWlkb3VteWFrdVwgOwor6Kmm5o6Y5qipID4gc2hpa3V0c3VrZW5cIDsKK+WcqOS6rOS4rSA+IHphaWt5b3VjaHV1XCA7CivmlrnnqIvlvI8gPiBob3V0ZWlzaGlraVwgOwor6Z2Z5Yqb5a2mID4gc2VpcmlraWdha3VcIDsKK+S4gOimp+ihqCA+IGljaGlyYW5oeW91XCA7CivljJfmnJ3prq4gPiBraXRhY2hvdXNlblwgOwor55m+5Y2D6bOlID4gbW9tb2NoaWRvcmlcIDsKK+mKg+WJo+ihkyA+IGp1dWtlbmp1dHN1XCA7CivntI3pqqjloIIgPiBub3Vrb3RzdWRvdVwgOwor6ICz5bCP6aqoID4gamlzaG91a290c3VcIDsKK+Wkp+mdmeiEiCA+IGRhaWpvdW15YWt1XCA7CivntYzmuIjlipsgPiBrZWl6YWlyeW9rdVwgOwor5a2m5Y2U5LyaID4gZ2FrdWt5b3VrYWlcIDsKK+S4reW/g+eCuSA+IGNodXVzaGludGVuXCA7CivljJfmpbXlhYkgPiBob2treW9rdWtvdVwgOwor6aOf5ZOB5bqXID4gc2hva3VoaW50ZW5cIDsKK+mgmOWPjuabuCA+IHJ5b3VzaHV1c2hvXCA7CivpgJrnn6XooaggPiB0c3V1Y2hpaHlvdVwgOwor6YCj55m66YqDID4gcmVucGF0c3VqdXVcIDsKK+aUu+aSg+WBtCA+IGtvdWdla2lnYXdhXCA7CivlpKfkuK3lsI8gPiBkYWljaHV1c2hvdVwgOwor5bmz5Z2H5b6LID4gaGVpa2lucml0c3VcIDsKK+i1pOajn+ibhyA+IHlhbWFrYWdhc2hpXCA7CivoprPlv7XnmoQgPiBrYW4nJ25lbnRla2lcIDsKK+WwgumWgOiBtyA+IHNlbm1vbnNob2t1XCA7CivlhbHpgLLkvJogPiBreW91c2hpbmthaVwgOwor5L+h55So54q2ID4gc2hpbicneW91am91XCA7CivnuZTnianmpa0gPiBvcmltb25vZ3lvdVwgOwor6LaF54m55oClID4gY2hvdXRva2t5dXVcIDsKK+i/lOS/oeaWmSA+IGhlbnNoaW5yeW91XCA7Civlo4HmlrDogZ4gPiBrYWJlc2hpbmJ1blwgOwor6J6N6Kej54axID4geXV1a2FpbmV0c3VcIDsKK+evgOWNmuWjqyA+IGZ1c2hpaGFrYXNlXCA7CivopovniankurogPiBrZW5idXRzdW5pblwgOwor55m76Yyy5paZID4gdG91cm9rdXJ5b3VcIDsKK+WRqOaXi+S6uiA+IHNodXVzZW4nJ25pblwgOwor6auY6bqX6IqdID4ga291cmFpc2hpYmFcIDsKK+S4jeimquWIhyA+IGZ1c2hpbnNldHN1XCA7CivopqrlkYrnvaogPiBzaGlua29rdXphaVwgOwor6JSm57SF6JGJID4gdHN1dGFtb21pamlcIDsKK+S6lOebrumuqCA+IGdvbW9rdXp1c2hpXCA7Civnt6jpm4bplbcgPiBoZW5zaHV1Y2hvdVwgOwor5Ye654mI5qWtID4gc2h1cHBhbmd5b3VcIDsKK+iqv+aVmeW4qyA+IGNob3VreW91c2hpXCA7CivpgLLpp5Dou40gPiBzaGluY2h1dWd1blwgOwor5Yil5YuV6ZqKID4gYmV0c3Vkb3V0YWlcIDsKK+mAhuWZtOWwhCA+IGd5YWt1ZnVuc2hhXCA7Civkuozlj6Pnm64gPiBmdXRha3VjaGltZVwgOwor6YCG5ZG96aGMID4gZ3lha3VtZWlkYWlcIDsKK+eymOedgOWJpCA+IG5lbmNoYWt1emFpXCA7CivnlJ/niannlYwgPiBzZWlidXRzdWthaVwgOwor5LqU55uu6aOvID4gZ29tb2t1bWVzaGlcIDsKK+aOoeaOmOaoqSA+IHNhaWt1dHN1a2VuXCA7CivlhajluYXnmoQgPiB6ZW5wdWt1dGVraVwgOwor5b2r5Yi75YiAID4gY2hvdWtva3V0b3VcIDsKK+eglOeptuW/gyA+IGtlbmt5dXVzaGluXCA7Civni6zljaDnmoQgPiBkb2t1c2VudGVraVwgOwor6YW45Lit5q+SID4gc2FuY2h1dWRva3VcIDsKK+i2heaWsOaYnyA+IGNob3VzaGluc2VpXCA7CivpoILmiLTniakgPiBjaG91ZGFpbW9ub1wgOwor5a6/5rOK5omAID4gc2h1a3VoYWt1am9cIDsKK+WjsuWNtOebiiA+IGJhaWt5YWt1ZWtpXCA7Civmp4vpgKDlvI8gPiBrb3V6b3VzaGlraVwgOwor5Luj6KGo5L2cID4gZGFpaHlvdXNha3VcIDsKK+mBjuWkseeKryA+IGthc2hpdHN1aGFuXCA7CivntJnkuIDmnpogPiBrYW1paWNoaW1haVwgOwor5YaN6KqN6K2YID4gc2Fpbmluc2hpa2lcIDsKK+miqOeJqeipqSA+IGZ1dWJ1dHN1c2hpXCA7Civlrp/plqLmlbAgPiBqaXRzdWthbnN1dVwgOwor5aSn5aW954mpID4gZGFpa291YnV0c3VcIDsKK+S5s+a/gea2siA+IG55dXVkYWt1ZWtpXCA7CivmsLTlhrflvI8gPiBzdWlyZWlzaGlraVwgOwor5b+D6YWN5oCnID4gc2hpbnBhaXNob3VcIDsKK+W+jOWni+acqyA+IGF0b3NoaW1hdHN1XCA7Civlhajli6LlipsgPiB6ZW5zZWlyeW9rdVwgOwor6Zui5b+D546HID4gcmlzaGlucml0c3VcIDsKK+S+m+e1pua6kCA+IGt5b3VreXV1Z2VuXCA7CivlpKfmlofnr4AgPiBkYWlidW5zZXRzdVwgOwor5LiA5aSc5aa7ID4gaGl0b3lvZHp1bWFcIDsKK+e1kOWQiOWtkCA+IGtldHN1Z291c2hpXCA7CivmrbvkuqHnjocgPiBzaGlib3VyaXRzdVwgOwor5pmC5bGA5p+EID4gamlreW9rdWdhcmFcIDsKK+mFjeW9k+eOhyA+IGhhaXRvdXJpdHN1XCA7CivmlbTpqqjluKsgPiBzZWlrb3RzdXNoaVwgOwor6Zai56iO546HID4ga2FuemVpcml0c3VcIDsKK+S4reavkuatuyA+IGNodXVkb2t1c2hpXCA7CivmnIDliY3liJcgPiBzYWl6ZW5yZXRzdVwgOwor5b6h5omA6LuKID4gZ29zaG9ndXJ1bWFcIDsKK+WGheabsueQgyA+IG5haWt5b2treXV1XCA7Civop6PmlaPoqqwgPiBrYWlzYW5zZXRzdVwgOwor5bu66YCg54mpID4ga2Vuem91YnV0c3VcIDsKK+eMruihgOi7iiA+IGtlbmtldHN1c2hhXCA7CivlsI/lk4Hpm4YgPiBzaG91aGluc2h1dVwgOwor6ZyK5a6J5a6kID4gcmVpYW5zaGl0c3VcIDsKK+mbouedgOmZuCA+IHJpY2hha3VyaWt1XCA7Civpq5jph47ogZYgPiBrb3V5YWhpamlyaVwgOwor5pW06auq5YmkID4gc2VpaGF0c3V6YWlcIDsKK+WHpuS4luihkyA+IHNob3NlaWp1dHN1XCA7CivlhavluaHlrq4gPiBoYWNoaW1hbmd1dVwgOwor5q2M5ZSx5YqbID4ga2FzaG91cnlva3VcIDsKK+WbnuaKmOaQjSA+IGthaXNldHN1c29uXCA7Civpqqjku5XkuosgPiBob25lc2hpZ290b1wgOwor6IeG55eF6ICFID4gb2t1YnlvdW1vbm9cIDsKK+acnemjr+WJjSA+IGFzYW1lc2hpbWFlXCA7CivliIrooYzniakgPiBrYW5rb3VidXRzdVwgOwor55y86Y+h5qmLID4gbWVnYW5lYmFzaGlcIDsKK+izvOWFpeWFiCA+IGtvdW55dXVzYWtpXCA7CivlvJjku4HmoLwgPiBrb3VuaW5reWFrdVwgOwor5pen5aSn6Zm4ID4ga3l1dXRhaXJpa3VcIDsKK+iouuWvn+aXpSA+IHNoaW5zYXRzdWJpXCA7CivmnbHlrq7ogbcgPiB0b3VndXVzaG9rdVwgOwor6K2m5a+f572yID4ga2Vpc2F0c3VzaG9cIDsKK+WGl+irh+WPoyA+IGpvdWRhbmd1Y2hpXCA7CivnuZTnianllYYgPiBvcmltb25vc2hvdVwgOwor5YWr6L665b2iID4gaGFjaGloZW5rZWlcIDsKK+mHneS7leS6iyA+IGhhcmlzaGlnb3RvXCA7Civlpb3kurrniakgPiBrb3VqaW5idXRzdVwgOwor5b6B5pyN5qyyID4gc2VpZnVrdXlva3VcIDsKK+ino+iqrOiAhSA+IGthaXNldHN1c2hhXCA7CivluoPlkYrmpa0gPiBrb3Vrb2t1Z3lvdVwgOwor5Ym156uL6ICFID4gc291cml0c3VzaGFcIDsKK+ino+eGseiWrCA+IGdlbmV0c3V5YWt1XCA7Civml6Xmm5zniYggPiBuaWNoaXlvdWJhblwgOwor5paw5b+r6YCfID4gc2hpbmthaXNva3VcIDsKK+S4reW5tOiAhSA+IGNodXVuZW5tb25vXCA7CivmiLTlhqDlvI8gPiB0YWlrYW5zaGlraVwgOwor6Lu95qWt5birID4ga2FydXdhemFzaGlcIDsKK+S4reW/g+WcsCA+IGNodXVzaGluY2hpXCA7CivllYbmhaPnv5IgPiBzaG91a2Fuc2h1dVwgOwor55Sf54mp5oimID4gc2VpYnV0c3VzZW5cIDsKK+aVkeaApeazlSA+IGt5dXVreXV1aG91XCA7Civpo5/liY3phZIgPiBzaG9rdXplbnNodVwgOwor5rex5aSc5pePID4gc2hpbicneWF6b2t1XCA7Civov6vmkoPnoLIgPiBoYWt1Z2VraWhvdVwgOwor6YCy6LuN5LitID4gc2hpbmd1bmNodXVcIDsKK+WqkumFjOS6uiA+IGJhaXNoYWt1bmluXCA7CivkuKHmgKfnmoQgPiByeW91c2VpdGVraVwgOwor5r2c5Yui5YqbID4gc2Vuc2Vpcnlva3VcIDsKK+atpumqqOiAhSA+IGJ1a290c3Vtb25vXCA7Civkv53lgaXlrqQgPiBob2tlbnNoaXRzdVwgOwor5bqD5ZGK5paZID4ga291a29rdXJ5b3VcIDsKK+mAn+WKm+W6piA+IHNva3VyeW9rdWRvXCA7Civnm4bmj5Dnga8gPiBib25kam91Y2hpblwgOwor6IG056We57WMID4gY2hvdXNoaW5rZWlcIDsKK+i2heWkp+WbvSA+IGNob3V0YWlrb2t1XCA7Civlh7rniYjlhYMgPiBzaHVwcGFubW90b1wgOwor6aas6bm/5YqbID4gYmFrYWRqaWthcmFcIDsKK+mZuOWNiueQgyA+IHJpa3VoYW5reXV1XCA7CivntbHnjofogIUgPiB0b3Vzb3RzdXNoYVwgOwor5YWs5YWx5b+DID4ga291a3lvdXNoaW5cIDsKK+S4reWFsei7jSA+IGNodXVreW91Z3VuXCA7CivmvILnmb3liaQgPiBoeW91aGFrdXphaVwgOwor5Y+O5YWl5rqQID4gc2h1dW55dXVnZW5cIDsKK+auv+anmOmiqCA+IHRvbm9zYW1hZnV1XCA7Civlv4PphY3kuosgPiBzaGlucGFpZ290b1wgOwor5aSq6Zm954axID4gdGFpeW91bmV0c3VcIDsKK+WIpOaxuuaWhyA+IGhhbmtldHN1YnVuXCA7Civkv6Hku7DnmoQgPiBzaGlua291dGVraVwgOwor6Iad5ouN5a2QID4gaGl6YWJ5b3VzaGlcIDsKK+i3oeWni+acqyA+IGF0b3NoaW1hdHN1XCA7Civnm7Lnm67nmoQgPiBtb3Vtb2t1dGVraVwgOwor56We6YCa5YqbID4gamludHN1dXJpa2lcIDsKK+aBkOWmu+eXhSA+IGt5b3VzYWlieW91XCA7Civlv6Dlrp/luqYgPiBjaHV1aml0c3Vkb1wgOwor5L+h5Lu754q2ID4gc2hpbicnbmluam91XCA7CivmlrDlj4LogIUgPiBzaGluemFubW9ub1wgOwor55yf54qv5Lq6ID4gc2hpbmhhbicnbmluXCA7Civorablr5/niqwgPiBrZWlzYXRzdWtlblwgOwor5Y+i5pmC6ZuoID4gbXVyYXNoaWd1cmVcIDsKK+a1t+mjn+a0niA+IGthaXNob2t1ZG91XCA7Civlj4LliJfogIUgPiBzYW5yZXRzdXNoYVwgOwor55Sf54mp5ZyPID4gc2VpYnV0c3VrZW5cIDsKK+S+m+e1puWcsCA+IGt5b3VreXV1Y2hpXCA7CivlubLmuInnuJ4gPiBrYW5zaG91amltYVwgOwor54us5Ym155qEID4gZG9rdXNvdXRla2lcIDsKK+afk+iJsuS9kyA+IHNlbnNob2t1dGFpXCA7CivluqfpoK3pr6ggPiB6YXRvdWt1amlyYVwgOwor55uu55qE6KuWID4gbW9rdXRla2lyb25cIDsKK+ecgeeVpeaZgiA+IHNob3VyeWFrdWppXCA7Civnn7Pngq3mrrsgPiBzZWtpdGFuZ2FyYVwgOwor5YiG6KOC5oCnID4gYnVucmV0c3VzZWlcIDsKK+efree4ruW9oiA+IHRhbnNodWt1a2VpXCA7CivmnInogbfogIUgPiB5dXVzaG9rdXNoYVwgOwor6Kaq5ZKM5YqbID4gc2hpbndhcnlva3VcIDsKK+WFiOOAheaciCA+IHNlbnNlbmdldHN1XCA7CivmnInkvZPniakgPiB5dXV0YWlidXRzdVwgOwor55+t57Wh55qEID4gdGFucmFrdXRla2lcIDsKK+mtheWKm+eahCA+IG1pcnlva3V0ZWtpXCA7CivljJblrablvI8gPiBrYWdha3VzaGlraVwgOwor5aSq6Zm95pelID4gdGFpeW91aml0c3VcIDsKK+mHjueQg+eGsSA+IHlha3l1dW5ldHN1XCA7Civorablr5/mqKkgPiBrZWlzYXRzdWtlblwgOwor54ax5rCX55CDID4gbmV0c3VraWt5dXVcIDsKK+epuuaDs+WKmyA+IGt1dXNvdXJ5b2t1XCA7CivpnZnlsqHnnIwgPiBzaGl6dW9rYWtlblwgOwor5Y+N6YCG5Lq6ID4gaGFuZ3lha3VuaW5cIDsKK+afk+mrquWJpCA+IHNlbnBhdHN1emFpXCA7Civlhajouqvnl4UgPiB6ZW5zaGluYnlvdVwgOwor6IW56Kmx6KGTID4gZnVrdXdhanV0c3VcIDsKK+a1gemHj+ioiCA+IHJ5dXVyeW91a2VpXCA7Civnt5rnuZTpnaIgPiBzZW5zaGlraW1lblwgOwor5a6M57WQ57eoID4ga2Fua2V0c3VoZW5cIDsKK+WtpueUn+iovCA+IGdha3VzZWlzaG91XCA7CivpgKDluaPlsYAgPiB6b3VoZWlreW9rdVwgOwor6Kqs5piO5pu4ID4gc2V0c3VtZWlzaG9cIDsKK+iHque1pueOhyA+IGppa3l1dXJpdHN1XCA7CivmiZPnianluKsgPiB1Y2hpbW9ub3NoaVwgOwor5oOo5q666ICFID4gemFuc2F0c3VzaGFcIDsKK+ejr+W3vuedgCA+IGlzb2dpbmNoYWt1XCA7CivoqLzkurrluK0gPiBzaG91bmluc2VraVwgOwor6Iul55m96auqID4gd2FrYXNoaXJhZ2FcIDsKK+aVsOWtpueahCA+IHN1dWdha3V0ZWtpXCA7Civnm7Tlhobmn7EgPiBjaG9rdWVuY2h1dVwgOwor6Kqs5piO5paHID4gc2V0c3VtZWlidW5cIDsKK+awtOeUo+eJqSA+IHN1aXNhbmJ1dHN1XCA7CivmlZnliYfmnKwgPiBreW91c29rdWJvblwgOwor5LmZ5aWz5b+DID4gb3RvbWVnb2tvcm9cIDsKK+aIpuWLneWbvSA+IHNlbnNob3Vrb2t1XCA7CivljZfljJfmnJ0gPiBuYW5ib2t1Y2hvdVwgOwor5bm75oOz5puyID4gZ2Vuc291a3lva3VcIDsKK+aXheiIiOihjCA+IHRhYmlrb3VneW91XCA7CivosYbpm7vnkIMgPiBtYW1lZGVua3l1dVwgOwor6Kej6Kqs5pu4ID4ga2Fpc2V0c3VzaG9cIDsKK+e/vOaJi+ebriA+IHlva3VzaHVtb2t1XCA7CivlqZrntITogIUgPiBrb24nJ3lha3VzaGFcIDsKK+mDoeW9ueaJgCA+IGd1bicneWFrdXNob1wgOwor55+l6K2Y5bGkID4gY2hpc2hpa2lzb3VcIDsKK+aSnuacqOmuqyA+IHNodW1va3V6YW1lXCA7CivnobzphbjmnKsgPiBob3VzYW5tYXRzdVwgOwor5aaW6KGT6ICFID4geW91anV0c3VzaGFcIDsKK+S9meeZvemggSA+IHlvaGFrdXBlZWppXCA7CivntbHkuIDnmoQgPiB0b3VpdHN1dGVraVwgOwor6Lqr6Zqc6ICFID4gc2hpbnNob3VzaGFcIDsKK+mjn+WNk+WhqSA+IHNob2t1dGFrdWVuXCA7CivlhavlrZfpq60gPiBoYWNoaWppaGlnZVwgOwor5b6p5rS756WtID4gZnVra2F0c3VzYWlcIDsKK+S4u+eUo+eJqSA+IHNodXNhbmJ1dHN1XCA7Civnvo7ooZPnmoQgPiBiaWp1dHN1dGVraVwgOwor54+N54++6LGhID4gY2hpbmdlbnNob3VcIDsKK+S4ieeonOmPoSA+IHNhbnJ5b3VreW91XCA7CivlpKfpmbjmo5ogPiB0YWlyaWt1ZGFuYVwgOwor5q6/5qeY6Iq4ID4gdG9ub3NhbWFnZWlcIDsKK+a1t+mjn+W0liA+IGthaXNob2t1Z2FpXCA7CivlhYPnpoToopYgPiBnZW5yb2t1c29kZVwgOwor5paH5pWZ5pePID4gYnVua3lvdXpva3VcIDsKK+a5v+W6puioiCA+IHNoaXRzdWRva2VpXCA7Civlj6zpm4bogIUgPiBzaG91c2h1dXNoYVwgOwor5YWr5qW15ouzID4gaGFra3lva3VrZW5cIDsKK+S/oeS7sOW/gyA+IHNoaW5rb3VzaGluXCA7CivkurrkuIDlgI0gPiBoaXRvaWNoaWJhaVwgOwor5ZCI6KGG5Zu9ID4gZ2Fzc2h1dWtva3VcIDsKK+apn+mWouWupCA+IGtpa2Fuc2hpdHN1XCA7CivlhrfljbTmtrIgPiByZWlreWFrdWVraVwgOwor5ryB542y6auYID4gZ3lva2FrdWRha2FcIDsKK+WFrOeUqOeJqSA+IGtvdXlvdWJ1dHN1XCA7CivljZjnmbrpioMgPiB0YW5wYXRzdWp1dVwgOwor5Ya35Y205rC0ID4gcmVpa3lha3VzdWlcIDsKK+eMrueri+ihqCA+IGtvbmRhdGVoeW91XCA7Civoi6XojYnoibIgPiB3YWtha3VzYWlyb1wgOwor5LiJ5Zu95LiAID4gc2FuZ29rdWljaGlcIDsKK+edo+S/g+eKtiA+IHRva3Vzb2t1am91XCA7Civku67lj5flj5YgPiBrYXJpdWtldG9yaVwgOwor6KKL5bCP6LevID4gZnVrdXJva291amlcIDsKK+itpuWvn+WumCA+IGtlaXNhdHN1a2FuXCA7Civoh6rnhLblvosgPiBzaGl6ZW5yaXRzdVwgOwor6IG35YuZ57WmID4gc2hva3VtdWt5dXVcIDsKK+eZgumkiuS4rSA+IHJ5b3V5b3VjaHV1XCA7CivlkIjmiJDniakgPiBnb3VzZWlidXRzdVwgOwor5LiJ6KGM5Y2KID4gbWlrdWRhcmloYW5cIDsKK+ihjOaUv+WtpiA+IGd5b3VzZWlnYWt1XCA7Civlrp/ooYzlipsgPiBqaWtrb3VyeW9rdVwgOwor6ZW354Gr6YmiID4gbmFnYWhpYmFjaGlcIDsKK+a1t+mjn+WPsCA+IGthaXNob2t1ZGFpXCA7Civpg7Xkvr/niakgPiB5dXViaW5idXRzdVwgOwor56m65rCX5p6VID4ga3V1a2ltYWt1cmFcIDsKK+WlqOWtpumHkSA+IHNob3VnYWt1a2luXCA7CivlhaznlJ/mtLsgPiBrb3VzZWlrYXRzdVwgOwor6YGu6JS954mpID4gc2hhaGVpYnV0c3VcIDsKK+e1uee5lOeJqSA+IGtpbnVvcmltb25vXCA7CivoirjooZPoq5YgPiBnZWlqdXRzdXJvblwgOwor6Jas5Yq554mpID4geWFra291YnV0c3VcIDsKK+W6reS7leS6iyA+IG5pd2FzaGlnb3RvXCA7Civmgqros6rljJYgPiBha3VzaGl0c3VrYVwgOwor55+l6K2Y5Lq6ID4gY2hpc2hpa2lqaW5cIDsKK+eZveWGhemanCA+IGhha3VuYWlzaG91XCA7Civmpb3lpKnnmoQgPiByYWt1dGVudGVraVwgOwor5Yil5YuY5a6aID4gYmV0c3VrYW5qb3VcIDsKK+mHkeadk+WtkCA+IGthbmFqYWt1c2hpXCA7CivplbflpKfmga8gPiBjaG91dGFpc29rdVwgOwor6IG05Y+W5paZID4gY2hvdXNodXJ5b3VcIDsKK+mguOmdmeiEiCA+IGtlaWpvdW15YWt1XCA7CivmvIHnjbLph48gPiBneW9rYWt1cnlvdVwgOwor6Kqe5a2m5YqbID4gZ29nYWt1cnlva3VcIDsKK+a6luWCmeWupCA+IGp1bmJpc2hpdHN1XCA7CivkuK3lubTlopcgPiBjaHV1ZG9zaGltYVwgOwor6IOM562L5YqbID4gaGFpa2lucnlva3VcIDsKK+aJgOacieeJqSA+IHNob3l1dWJ1dHN1XCA7CivnlKPlnJ/npZ4gPiB1YnVzdW5hZ2FtaVwgOwor5pqX6LWk6ImyID4gYW5zZWtpc2hva3VcIDsKK+S7leeri+eJqSA+IHNoaXRhdGVtb25vXCA7CivkuIPlm57lv4wgPiBzaGljaGlrYWlraVwgOwor5rq26Kej54axID4geW91a2FpbmV0c3VcIDsKK+exs+WNgeeykiA+IGtvbWVqdXVyeXV1XCA7Civnibnms6jlk4EgPiB0b2t1Y2h1dWhpblwgOwor5Yil5YON6ZqKID4gYmV0c3Vkb3V0YWlcIDsKK+WPpOaWsOiBniA+IGZ1cnVzaGluYnVuXCA7CivphY3pgZTkurogPiBoYWl0YXRzdW5pblwgOwor5Lqs5Lq65b2iID4ga3lvdW5pbmd5b3VcIDsKK+WujOe1kOaWhyA+IGthbmtldHN1YnVuXCA7Civlj43lr77oibIgPiBoYW50YWlzaG9rdVwgOwor5ZWG5ZOB5a2mID4gc2hvdWhpbmdha3VcIDsKK+WFpeWwhOinkiA+IG55dXVzaGFrYWt1XCA7CivmtojpmLLluoEgPiBzaG91Ym91Y2hvdVwgOwor5aWH6bqX5omAID4ga2lyZWlkb2tvcm9cIDsKK+WxseWQueiJsiA+IHlhbWFidWtpaXJvXCA7CivmiZPmkoPnjocgPiBkYWdla2lyaXRzdVwgOwor6KuL5rGC6aGNID4gc2Vpa3l1dWdha3VcIDsKK+eZvuW5tOelrSA+IGh5YWt1bmVuc2FpXCA7CivmipHnlZnogIUgPiB5b2t1cnl1dXNoYVwgOwor6aOf6YCj5pifID4gc2hva3VyZW5zZWlcIDsKK+iQveacreWApCA+IHJha3VzYXRzdW5lXCA7Civoh6rnhLblipsgPiBzaGl6ZW5yeW9rdVwgOwor56eY5pu45a6kID4gaGlzaG9zaGl0c3VcIDsKK+WNg+eni+alvSA+IHNlbnNodXVyYWt1XCA7CivmjqLnqbblv4MgPiB0YW5reXV1c2hpblwgOwor5Ymv56S+6ZW3ID4gZnVrdXNoYWNob3VcIDsKK+aciOS+i+S8miA+IGdldHN1cmVpa2FpXCA7CivmlbDml6XplpMgPiBzdXVqaXRzdWthblwgOwor5ZG95ZCN5byPID4gbWVpbWVpc2hpa2lcIDsKK+aMh+WwjuWKmyA+IHNoaWRvdXJ5b2t1XCA7CivmhJ/opprnmoQgPiBrYW5rYWt1dGVraVwgOwor5YaN6ZaL55m6ID4gc2Fpa2FpaGF0c3VcIDsKK+WFpeWtpumboyA+IG55dXVnYWt1bmFuXCA7CivliIbmipjlraYgPiBidW5zZWtpZ2FrdVwgOwor6Iul6Lyp6ICFID4gamFrdWhhaW1vbm9cIDsKK+W5heWkieiqvyA+IGhhYmFoZW5jaG91XCA7CivlsI/mg5HmmJ8gPiBzaG91d2FrdXNlaVwgOwor5Lq654mp5YOPID4gamluYnV0c3V6b3VcIDsKK+i6gemsseeXhSA+IHNvdXV0c3VieW91XCA7Civnm7TovLjlhaUgPiBjaG9rdXl1bnl1dVwgOwor5L+D6YCy5YmkID4gc29rdXNoaW56YWlcIDsKK+m8u+WHuuihgCA+IGJpc2h1a2tldHN1XCA7CivmgKXpgLLlhZogPiBreXV1c2hpbnRvdVwgOwor6YeR5ama5byPID4ga2lua29uc2hpa2lcIDsKK+a6gOiJpumjviA+IG1hbmthbnNob2t1XCA7Civlgo3ov7fmg5EgPiBoYXRhbWVpd2FrdVwgOwor5pi86aOf5pmCID4gY2h1dXNob2t1amlcIDsKK+iKuOihk+elrSA+IGdlaWp1dHN1c2FpXCA7CivlrabnlJ/mnI0gPiBnYWt1c2VpZnVrdVwgOwor5bCx5qWt5ZywID4gc2h1dWd5b3VjaGlcIDsKK+ihqOekuueJqSA+IGh5b3VqaWJ1dHN1XCA7Civou6LlhaXnlJ8gPiB0ZW4nJ255dXVzZWlcIDsKK+WFpeWtpumHkSA+IG55dXVnYWt1a2luXCA7CivpnanmlrDns7sgPiBrYWt1c2hpbmtlaVwgOwor6Zm95qW157eaID4geW91a3lva3VzZW5cIDsKK+WHuua8lOiAhSA+IHNodXRzdWVuc2hhXCA7CivkvJrorbDlrqQgPiBrYWlnaXNoaXRzdVwgOwor6Zm46YGL5bGAID4gcmlrdXVua3lva3VcIDsKK+i/veW+tOmHkSA+IHRzdWljaG91a2luXCA7Civmrrroj4zlipsgPiBzYWtraW5yeW9rdVwgOwor5oqV5a6/6ICFID4gdG91c2h1a3VzaGFcIDsKK+aWsOW6geiIjiA+IHNoaW5jaG91c2hhXCA7CivlhrfljbTliaQgPiByZWlreWFrdXphaVwgOwor6YGK6Kan5a6iID4geXV1cmFua3lha3VcIDsKK+m7hOmHkeiZqyA+IGtvZ2FuZW11c2hpXCA7Civpu5Lmrbvnl4UgPiBrb2t1c2hpYnlvdVwgOwor6YO15L6/5bGAID4geXV1Ymlua3lva3VcIDsKK+WPjeWwhOeOhyA+IGhhbnNoYXJpdHN1XCA7CivmlZnnmofluoEgPiBreW91a291Y2hvdVwgOwor6Iul6bOl5Li8ID4gd2FrYWRvcmlkb25cIDsKK+e+juihk+WVhiA+IGJpanV0c3VzaG91XCA7Civmu7Tlrprph48gPiB0ZWtpdGVpcnlvdVwgOwor56We5a2m6ICFID4gc2hpbmdha3VzaGFcIDsKK+Wvhui8uOWFpSA+IG1pdHN1eXVueXV1XCA7CivouI/liIfnlaogPiBmdW1pa2lyaWJhblwgOwor5YmN5aWP5puyID4gemVuc291a3lva3VcIDsKK+ijuOS4gOiyqyA+IGhhZGFrYWlra2FuXCA7CivlpY/ps7Tmm7IgPiBzb3VtZWlreW9rdVwgOwor56eB55Sf5rS7ID4gc2hpc2Vpa2F0c3VcIDsKK+eUsumJhOiJpiA+IGtvdXRldHN1a2FuXCA7Civlv4Poh5Pnl4UgPiBzaGluem91YnlvdVwgOwor6Yys6YeR6KGTID4gcmVua2luanV0c3VcIDsKK+m7kuWGhemanCA+IGtva3VuYWlzaG91XCA7CivmnInorZjogIUgPiB5dXVzaGlraXNoYVwgOwor5bGx5rSl5rOiID4geWFtYXRzdW5hbWlcIDsKK+iiluePjeacrCA+IHNodXVjaGluYm9uXCA7CivlhYjnnYDpoIYgPiBzZW5jaGFrdWp1blwgOwor5a6f5ZCN6KmeID4gaml0c3VtZWlzaGlcIDsKK+mYsumjn+WJpCA+IGJvdXNob2t1emFpXCA7Civlr77np7Dou7ggPiB0YWlzaG91amlrdVwgOwor6L+R5pel54K5ID4ga2luaml0c3V0ZW5cIDsKK+iXjeaZtuefsyA+IHJhbnNob3VzZWtpXCA7CivlpbPlrZDkvpsgPiBvbicnbmFrb2RvbW9cIDsKK+ayoemjn+WtkCA+IG1vc3Nob2t1c2hpXCA7Civkv67nuZXkuK0gPiBzaHV1emVuY2h1dVwgOwor6ICz5a2m5ZWPID4gbWltaWdha3Vtb25cIDsKK+mVt+eykuexsyA+IGNob3VyeXV1bWFpXCA7CivnpZ7kv6Hlv4MgPiBrYW1pc2hpbmppblwgOwor5aWo5a2m55SfID4gc2hvdWdha3VzZWlcIDsKK+ims+WFteW8jyA+IGthbnBlaXNoaWtpXCA7Civoi6XlubTlnosgPiBqYWt1bmVuZ2F0YVwgOwor6byg5rW36LGaID4gbmV6dW1paXJ1a2FcIDsKK+mbhuepjeWgtCA+IHNodXVzZWtpam91XCA7CivmjIfkurrlvaIgPiB5dWJpbmluZ3lvdVwgOwor5puy6Iq45birID4ga3lva3VnZWlzaGlcIDsKK+m6pueykuiFqyA+IGJha3VyeXV1c2h1XCA7Civnm67nmoTlnLAgPiBtb2t1dGVraWNoaVwgOwor5a2m55Sf5a+uID4gZ2FrdXNlaXJ5b3VcIDsKK+WQiOaIkOWKmyA+IGdvdXNlaXJ5b2t1XCA7Civmj5DkvpvlgbQgPiB0ZWlreW91Z2F3YVwgOwor5LmX6ZmN5a6iID4gam91a291a3lha3VcIDsKK+WGheimqueOiyA+IG5haXNoaW4nJ25vdVwgOwor57Oe5YuJ5by3ID4ga3Vzb2Jlbmt5b3VcIDsKK+efoue2meaXqSA+IHlhdHN1Z2liYXlhXCA7CivlpInmm7LngrkgPiBoZW5reW9rdXRlblwgOwor6ZW35Zub6KeSID4gbmFnYXNoaWtha3VcIDsKK+imquWIh+awlyA+IHNoaW5zZXRzdWdpXCA7Civlia/npZ7ntYwgPiBmdWt1c2hpbmtlaVwgOwor6JGJ57eR5L2TID4geW91cnlva3V0YWlcIDsKK+iPiuS6uuW9oiA+IGtpa3VuaW5neW91XCA7CivnjqnlvITniakgPiBnYW5yb3VidXRzdVwgOwor5Y+j6KiA6JGJID4ga3VjaGlrb3RvYmFcIDsKK+mbhuWQiOeahCA+IHNodXVnb3V0ZWtpXCA7CivlibLlvZPpoY0gPiB3YXJpYXRlZ2FrdVwgOwor5bi457+S55qEID4gam91c2h1dXRla2lcIDsKK+aEn+Wcp+e0mSA+IGthbicnYXRzdXNoaVwgOwor57SF54y/5a2QID4gYmVuaW1hc2hpa29cIDsKK+W8vuaAp+eOhyA+IGRhbnNlaXJpdHN1XCA7Civmt6HntIXoibIgPiB0YW5rb3VzaG9rdVwgOwor5p+z6KGM5p2OID4geWFuYWdpZ291cmlcIDsKK+a1geWLleeahCA+IHJ5dXVkb3V0ZWtpXCA7CivnkrDlooPluoEgPiBrYW5reW91Y2hvdVwgOwor5piG6Jmr5a2mID4ga29uY2h1dWdha3VcIDsKK+W4uOaXpemggyA+IHRzdW5laGlnb3JvXCA7Civmr5Tnv7zloZogPiBoaXlva3VkenVrYVwgOwor5re35oiQ54mpID4ga29uc2VpYnV0c3VcIDsKK+a6tuino+WKmyA+IHlvdWthaXJ5b2t1XCA7CivmlZnogrLplbcgPiBreW91aWt1Y2hvdVwgOwor54S85Y2054KJID4gc2hvdWt5YWt1cm9cIDsKK+eZveaqgOayuSA+IGJ5YWt1ZGFuJyd5dVwgOwor54m95byV5YqbID4ga2VuJydpbnJ5b2t1XCA7CivoprPlhYnlsYAgPiBrYW5rb3VreW9rdVwgOwor5YWl5a2m6ICFID4gbnl1dWdha3VzaGFcIDsKK+WbveWtpuiAhSA+IGtva3VnYWt1c2hhXCA7CivmtLvli5XoqowgPiBrYXRzdWRvdXNoaVwgOwor5Ye65Zyf5ZOBID4gc2h1dHN1ZG9oaW5cIDsKK+e0meihqOe0mSA+IGthbWlieW91c2hpXCA7CivoprPlhYnlrqIgPiBrYW5rb3VreWFrdVwgOwor5YWx5a2m5Yi2ID4ga3lvdWdha3VzZWlcIDsKK+e+nuaBpeW/gyA+IHNodXVjaGlzaGluXCA7CivomavnnLzpj6EgPiBtdXNoaW1lZ2FuZVwgOwor6KiA6JGJ6LOqID4ga290b2JhamljaGlcIDsKK+WtpuiAheiGmiA+IGdha3VzaGFoYWRhXCA7CivpgJrkv6HntrIgPiB0c3V1c2hpbm1vdVwgOwor5pmu5Y+K546HID4gZnVreXV1cml0c3VcIDsKK+WNg+mzpei2syA+IGNoaWRvcmlhc2hpXCA7Civou6LovY3miYsgPiB0ZW50ZXRzdXNodVwgOwor6LO86LK35YqbID4ga291YmFpcnlva3VcIDsKK+WtpuiAheiCjCA+IGdha3VzaGFoYWRhXCA7CivlhaXos57ogIUgPiBueXV1c2hvdXNoYVwgOwor6Zm46LuN55yBID4gcmlrdWd1bnNob3VcIDsKK+S7ruWHuuaJgCA+IGthcmlzaHVzc2hvXCA7Civlj6TnianllYYgPiBrb2J1dHN1c2hvdVwgOwor6LGh5b606KmpID4gc2hvdWNob3VzaGlcIDsKK+S4i+WNlOitsCA+IHNoaXRha3lvdWdpXCA7Civlj6zpm4bku6QgPiBzaG91c2h1dXJlaVwgOwor54Wn5Lya5YWIID4gc2hvdWthaXNha2lcIDsKK+WghuepjeWtpiA+IHRhaXNla2lnYWt1XCA7Civoqq3op6PlipsgPiBkb2trYWlyeW9rdVwgOwor6IW457WQ5qC4ID4gY2hvdWtla2tha3VcIDsKK+W5tOaBsOWlvSA+IHRvc2hpa2Fra291XCA7CivpgJrnlKPnnIEgPiB0c3V1c2Fuc2hvdVwgOwor6YCa55Sj55u4ID4gdHN1dXNhbnNob3VcIDsKK+edo+WtpuWumCA+IHRva3VnYWt1a2FuXCA7Civmh5DkuK3niakgPiBrYWljaHV1bW9ub1wgOwor6YCa5L+h56S+ID4gdHN1dXNoaW5zaGFcIDsKK+WNg+efs+iIuSA+IHNlbmdva3VidW5lXCA7Civph5HniZvlrq4gPiBraW5neXV1a3l1dVwgOwor5o6l5ZCI5a2QID4gc2V0c3Vnb3VzaGlcIDsKK+eah+WupOiyuyA+IGtvdXNoaXRzdWhpXCA7Civov73lvrTnqI4gPiB0c3VpY2hvdXplaVwgOwor5bGA5aSW6ICFID4ga3lva3VnYWlzaGFcIDsKK+e/jOe/jOW5tCA+IHlva3V5b2t1bmVuXCA7CivnibnliKXmqZ8gPiB0b2t1YmV0c3VraVwgOwor5reh6KSQ6ImyID4gdGFua2Fzc2hva3VcIDsKK+WBj+Wft+eXhSA+IGhlbnNodXVieW91XCA7Civlrabnv5LogIUgPiBnYWt1c2h1dXNoYVwgOwor6Ziy6Z+z5a6kID4gYm91b25zaGl0c3VcIDsKK+iCieS9k+eahCA+IG5pa3V0YWl0ZWtpXCA7Civmlpnph5HooaggPiByeW91a2luaHlvdVwgOwor5YaF6Zm45Zu9ID4gbmFpcmlrdWtva3VcIDsKK+WMheWuueWKmyA+IGhvdXlvdXJ5b2t1XCA7Civlh7rmvIHmnJ8gPiBzaHV0c3VneW9raVwgOwor5Li75Lq65b25ID4gc2h1amluJyd5YWt1XCA7CivmiJDlip/njocgPiBzZWlrb3VyaXRzdVwgOwor5YWs5pyJ54mpID4ga291eXV1YnV0c3VcIDsKK+ims+iJpuW8jyA+IGthbmthbnNoaWtpXCA7CivmnIjlpJzojLggPiB0c3VraXlvdGFrZVwgOwor5YWl5a2m55SfID4gbnl1dWdha3VzZWlcIDsKK+aYjuW+jOaXpSA+IG15b3Vnb25pY2hpXCA7CivmtLvli5XogIUgPiBrYXRzdWRvdXNoYVwgOwor5LiJ5Y6f6ImyID4gc2FuZ2Vuc2hva3VcIDsKK+WBj+Wft+eLgiA+IGhlbnNodXVreW91XCA7Civokovku4vnn7MgPiBzaG91a2Fpc2VraVwgOwor55Sz5ZGK5pu4ID4gc2hpbmtva3VzaG9cIDsKK+e3qOesoOiMuCA+IGFtaWdhc2F0YWtlXCA7CivlsI/ljYrml6UgPiBrb2hhbicnbmljaGlcIDsKK+ihqOW9sOeKtiA+IGh5b3VzaG91am91XCA7CivlhoXoqLzkuosgPiBuYWlzaG91Z290b1wgOwor6Ki65pat5a2mID4gc2hpbmRhbmdha3VcIDsKK+WNl+alteeCuSA+IG5hbmt5b2t1dGVuXCA7Civmm7LlsITnoLIgPiBreW9rdXNoYWhvdVwgOwor5a++56ew55qEID4gdGFpc2hvdXRla2lcIDsKK+eUsumJhOadvyA+IGtvdXRldHN1YmFuXCA7CivlhYjnmbrpmoogPiBzZW5wYXRzdXRhaVwgOwor5oCn55Sf5rS7ID4gc2Vpc2Vpa2F0c3VcIDsKK+aknOmWsuWumCA+IGtlbicnZXRzdWthblwgOwor5rWB6YCa56iOID4gcnl1dXRzdXV6ZWlcIDsKK+a0l+a/r+eziiA+IHNlbnRha3Vub3JpXCA7CivljYrnm7Tnt5ogPiBoYW5jaG9rdXNlblwgOwor5rSX5r+v57GgID4gc2VudGFrdWthZ29cIDsKK+aOpeWQiOWJpCA+IHNldHN1Z291emFpXCA7CivovrLnlKPniakgPiBub3VzYW5idXRzdVwgOwor5o6l5Y+X5Zu9ID4gc2V0c3VqdWtva3VcIDsKK+WNl+altea1tyA+IG5hbmt5b2t1a2FpXCA7CivntZDohpzngo4gPiBrZXRzdW1ha3VlblwgOwor6Kaq552m5LyaID4gc2hpbmJva3VrYWlcIDsKK+ehq+WMlueJqSA+IHJ5dXVrYWJ1dHN1XCA7Civmg7Plg4/lipsgPiBzb3V6b3VyeW9rdVwgOwor6Iq46KGT5ZOBID4gZ2VpanV0c3VoaW5cIDsKK+WNl+altea0iyA+IG5hbmt5b2t1eW91XCA7Civlho3muKzph48gPiBzYWlzb2t1cnlvdVwgOwor6Zyy5Ye66KiIID4gcm9zaHV0c3VrZWlcIDsKK+eVmeWtpueUnyA+IHJ5dXVnYWt1c2VpXCA7CivmsLTku5XkuosgPiBtaXp1c2hpZ290b1wgOwor5a2m57+S55SoID4gZ2FrdXNodXV5b3VcIDsKK+azqOWwhOmHnSA+IGNodXVzaGFiYXJpXCA7CivoprPlr5/ogIUgPiBrYW5zYXRzdXNoYVwgOwor6YCa5L+h5qyEID4gdHN1dXNoaW5yYW5cIDsKK+S6lOaciOmXhyA+IHNhdHN1a2l5YW1pXCA7CivnmbrnnYDloLQgPiBoYXRjaGFrdWpvdVwgOwor6Ly45Ye656iOID4geXVzaHV0c3V6ZWlcIDsKK+WwseiBt+aZgiA+IHNodXVzaG9rdWppXCA7CivnnYDnnLzngrkgPiBjaGFrdWdhbnRlblwgOwor56m65Ya35byPID4ga3V1cmVpc2hpa2lcIDsKK+a6tuaOpeW3pSA+IHlvdXNldHN1a291XCA7CivkuLjmnKjmqYsgPiBtYXJ1a2liYXNoaVwgOwor5bGx5b2i55yMID4geWFtYWdhdGFrZW5cIDsKK+S6pOmciuihkyA+IGtvdXJlaWp1dHN1XCA7CivlibXpgKDoqqwgPiBzb3V6b3VzZXRzdVwgOwor5oub5b6F5bitID4gc2hvdXRhaXNla2lcIDsKK+mbquS4iui7iiA+IHNldHN1am91c2hhXCA7CivkuqTpn7/mpb0gPiBrb3VreW91Z2FrdVwgOwor6L6y5qWt5Zu9ID4gbm91Z3lvdWtva3VcIDsKK+WNk+i2iumiqCA+IHRha3VldHN1ZnV1XCA7Civpjq7nl5vmgKcgPiBjaGludHN1dXNlaVwgOwor6KqN6K2Y6KuWID4gbmluc2hpa2lyb25cIDsKK+WwseWvneWJjSA+IHNodXVzaGluemVuXCA7Civlj4zmm7Lnt5ogPiBzb3VreW9rdXNlblwgOwor5aSP5pmC5Yi7ID4gbmF0c3VqaWtva3VcIDsKK+Wkj+Wkp+aguSA+IG5hdHN1ZGFpa29uXCA7CivmnZHlhavliIYgPiBtdXJhaGFjaGlidVwgOwor5YKY5LyQ5p6XID4gc2FuYmF0c3VyaW5cIDsKK+W4uOioremkqCA+IGpvdXNldHN1a2FuXCA7CivljZfmpbXmmJ8gPiBuYW5reW9rdXNlaVwgOwor56We5a2m5aOrID4gc2hpbmdha3VzaGlcIDsKK+S4iuWRiuWvqSA+IGpvdWtva3VzaGluXCA7CivlhYjlhaXoprMgPiBzZW4nJ255dXVrYW5cIDsKK+WFiOWFpeimiyA+IHNlbicnbnl1dWtlblwgOwor5rSX5r+v54mpID4gc2VudGFrdW1vbm9cIDsKK+S4h+iRiembhiA+IG1hbicneW91c2h1dVwgOwor5rqA5bee5Zu9ID4gbWFuc2h1dWtva3VcIDsKK+ihqOW/oOWhlCA+IGh5b3VjaHV1dG91XCA7CivkuInph43mrrogPiBzYW5qdXVzYXRzdVwgOwor5YiG5rOM5rayID4gYnVucGl0c3Vla2lcIDsKK+mao+aOpeecjCA+IHJpbnNldHN1a2VuXCA7CivlmJjlhavnmb4gPiB1c29oYXBweWFrdVwgOwor6Iie6LiP5a6kID4gYnV0b3VzaGl0c3VcIDsKK+W9k+WxgOiAhSA+IHRvdWt5b2t1c2hhXCA7Civnt6nooZ3lm70gPiBrYW5zaG91a29rdVwgOwor6JeB5Lq65b2iID4gd2FyYW5pbmd5b3VcIDsKK+W9semfv+WKmyA+IGVpa3lvdXJ5b2t1XCA7Civmlofnr4DmlbAgPiBidW5zZXRzdXN1dVwgOwor5oKq5o6o6YePID4gd2FydXp1aXJ5b3VcIDsKK+WQq+aciemHjyA+IGdhbicneXV1cnlvdVwgOwor6KqY6Zu7546HID4geXV1ZGVucml0c3VcIDsKK+ims+Wvn+ecvCA+IGthbnNhdHN1Z2FuXCA7Civmipvniannt5ogPiBob3VidXRzdXNlblwgOwor6KOP5YiH6ICFID4gdXJhZ2lyaW1vbm9cIDsKK+mYsumbquaelyA+IGJvdXNldHN1cmluXCA7CivlpKnnpZ7pq60gPiB0ZW5zaGluaGlnZVwgOwor5q665a6z6ICFID4gc2F0c3VnYWlzaGFcIDsKK+aVmeiCsuecgSA+IGt5b3Vpa3VzaG91XCA7Civpm6LkubPpo58gPiByaW55dXVzaG9rdVwgOwor5pWZ6IKy55qEID4ga3lvdWlrdXRla2lcIDsKK+eJueWIpeWMuiA+IHRva3ViZXRzdWt1XCA7CivosqHmlL/lipsgPiB6YWlzZWlyeW9rdVwgOwor5by356Gs562WID4ga3lvdWtvdXNha3VcIDsKK+aWsOW5tOWPtyA+IHNoaW4nJ25lbmdvdVwgOwor56Ov6aa05p2+ID4gc29uYXJlbWF0c3VcIDsKK+WFpemkqOaWmSA+IG55dXVrYW5yeW91XCA7Civniannm7jpo68gPiBtb3Nzb3VtZXNoaVwgOwor6KO96Z2p5qWtID4gc2Vpa2FrdWd5b3VcIDsKK+S4reWtpueUnyA+IGNodXVnYWt1c2VpXCA7CivovLjlh7rmuK8gPiB5dXNodXRzdWtvdVwgOwor5Y2X5qW15bivID4gbmFua3lva3V0YWlcIDsKK+a6tuaOpeWJpCA+IHlvdXNldHN1emFpXCA7CivmgKXnl4XkurogPiBreXV1YnlvdW5pblwgOwor5a+E5a6/5paZID4ga2lzaHVrdXJ5b3VcIDsKK+mrmOWztueUsCA+IHRha2FzaGltYWRhXCA7CivlsI/mraPmnIggPiBrb3Nob3VnYXRzdVwgOwor5YuV5Yqb6KiIID4gZG91cnlva3VrZWlcIDsKK+alteWkp+WApCA+IGt5b2t1ZGFpY2hpXCA7Civlh7rph5HpoY0gPiBzaHVra2luZ2FrdVwgOwor55Sz5ZGK5Yi2ID4gc2hpbmtva3VzZWlcIDsKK+WtkOS+m+mBlCA+IGtvZG9tb3RhY2hpXCA7CivlqpLku4vniakgPiBiYWlrYWlidXRzdVwgOwor6buE6YGT6ImyID4ga291ZG91c2hva3VcIDsKK+S4ieiRieiZqyA+IHNhbicneW91Y2h1dVwgOwor5YWo6LOq5YyWID4gemVuc2hpdHN1a2FcIDsKK+eUn+a0u+mboyA+IHNlaWthdHN1bmFuXCA7CivntLDli5XohIggPiBzYWlkb3VteWFrdVwgOwor56eB5pyJ54mpID4gc2hpeXV1YnV0c3VcIDsKK+ikh+mbkeWMliA+IGZ1a3V6YXRzdWthXCA7Civli6LlipvlnI8gPiBzZWlyeW9rdWtlblwgOwor6KSH6KSH57eaID4gZnVrdWZ1a3VzZW5cIDsKK+aWsOW5tOS8miA+IHNoaW4nJ25lbmthaVwgOwor5LiN56K65a6fID4gZnVrYWt1aml0c3VcIDsKK+mOrueXm+WJpCA+IGNoaW50c3V1emFpXCA7CivmgKrkurrniakgPiBrYWlqaW5idXRzdVwgOwor6YCa5a2m55SfID4gdHN1dWdha3VzZWlcIDsKK+eIhuW/g+WcsCA+IGJha3VzaGluY2hpXCA7Civlp4vmnKvmm7ggPiBzaGltYXRzdXNob1wgOwor56u25LqJ5b+DID4ga3lvdXNvdXNoaW5cIDsKK+WJvei7veiAhSA+IGh5b3VraW5tb25vXCA7CivohbjplonloZ4gPiBjaG91aGVpc29rdVwgOwor6LuN5b2T5bGAID4gZ3VudG91a3lva3VcIDsKK+eZveWtkOmzqSA+IHNoaXJha29iYXRvXCA7CivnlLrlvbnloLQgPiBtYWNoaXlha3ViYVwgOwor5LiN5b+g5a6fID4gZnVjaHV1aml0c3VcIDsKK+WNmuWtpuiAhSA+IGhha3VnYWt1c2hhXCA7CivmiKbnlaXkuIogPiBzZW5yeWFrdWpvdVwgOwor5Y2X5qW15ZyPID4gbmFua3lva3VrZW5cIDsKK+S4oeiEmuimjyA+IHJ5b3VreWFrdWtpXCA7CivlhbHoqLPogIUgPiBreW91eWFrdXNoYVwgOwor5b+N6ICQ5YqbID4gbmludGFpcnlva3VcIDsKK+mbhumHkeS6uiA+IHNodXVraW4nJ25pblwgOwor5Y2B5YWr6YeRID4ganV1aGFjaGlraW5cIDsKK+WAn+eUqOiAhSA+IHNoYWt1eW91c2hhXCA7CivmjIHkuYXlipsgPiBqaWt5dXVyeW9rdVwgOwor5bGA5Zyw6aKoID4ga3lva3VjaGlmdXVcIDsKK+eZuueZjOaApyA+IGhhdHN1Z2Fuc2VpXCA7Civmj5rpmbjmlpkgPiB5b3VyaWt1cnlvdVwgOwor5a+G6LK/5piTID4gbWl0c3Vib3Vla2lcIDsKK+mAmuS/oeWToSA+IHRzdXVzaGluJydpblwgOwor5Yag5YuV6ISIID4ga2FuZG91bXlha3VcIDsKK+WkieWlj+absiA+IGhlbnNvdWt5b2t1XCA7CivooajlvbDlj7AgPiBoeW91c2hvdWRhaVwgOwor6JGs6YCB5puyID4gc291c291a3lva3VcIDsKK+WNg+WIhueOhyA+IHNlbmJ1bnJpdHN1XCA7CivkuLjkuIDlubQgPiBtYXJ1aWNoaW5lblwgOwor6ICB5buD54mpID4gcm91aGFpYnV0c3VcIDsKK+WNl+alteWFiSA+IG5hbmt5b2t1a291XCA7Civnmq7nrpfnlKggPiBrYXdhemFuJyd5b3VcIDsKK+i/veWIhuevgCA+IG9pd2FrZWJ1c2hpXCA7CivlvrPlt53li6IgPiB0b2t1Z2F3YXplaVwgOwor5Ym16YCg54mpID4gc291em91YnV0c3VcIDsKK+WIneiIqua1tyA+IGhhdHN1a291a2FpXCA7Civos7zoqq3mlpkgPiBrb3Vkb2t1cnlvdVwgOwor5b6X56Wo5pWwID4gdG9rdWh5b3VzdXVcIDsKK+mbquaZr+iJsiA+IHl1a2lnZXNoaWtpXCA7Civnsr7npZ7nmoQgPiBzZWlzaGludGVraVwgOwor5b6z5bed5YWsID4gdG9rdWdhd2Frb3VcIDsKK+a0u+WLleWutiA+IGthdHN1ZG91c2hhXCA7Civoh6rnq4vlv4MgPiBqaXJpdHN1c2hpblwgOwor5ry46YCy55qEID4gemVuc2hpbnRla2lcIDsKK+aVmeS8muaapiA+IGt5b3VrYWlyZWtpXCA7CivmrrrkurrogIUgPiBzYXRzdWppbnNoYVwgOwor57K+56We55eFID4gc2Vpc2hpbmJ5b3VcIDsKK+auuuS6uue9qiA+IHNhdHN1amluemFpXCA7CivmiJDlubTlvI8gPiBzZWluZW5zaGlraVwgOwor6ISx55+z5rK5ID4gZGF0c3VzZWtpeXVcIDsKK+WFiOmAsuWbvSA+IHNlbnNoaW5rb2t1XCA7CivlnJ/lm6PlrZAgPiB0c3VjaGlkYW5nb1wgOwor5re35ZCI54mpID4ga29uZ291YnV0c3VcIDsKK+i7jealvemVtyA+IGd1bmdha3VjaG91XCA7Civms5XlvovkuIogPiBob3VyaXRzdWpvdVwgOwor55Wc54qs56iOID4gY2hpa3VrZW56ZWlcIDsKK+aigeWxseaziiA+IHJ5b3V6YW5wYWt1XCA7CivlvavloZHooZMgPiBjaG91c29qdXRzdVwgOwor5Luj55So6aOfID4gZGFpeW91c2hva3VcIDsKK+S4puacqOmBkyA+IG5hbWlraW1pY2hpXCA7CivluLPmnKzkurogPiBjaG91aG9uJyduaW5cIDsKK+Wuneefs+eusSA+IGhvdXNla2liYWtvXCA7CivljZLmpa3lvowgPiBzb3RzdWd5b3Vnb1wgOwor5Y+j6KeS5YqbID4ga3VjaGlkenVtb3VcIDsKK+S6i+alreS4uyA+IGppZ3lvdW51c2hpXCA7Civoh6romZDnmoQgPiBqaWd5YWt1dGVraVwgOwor5LiL55u46KuHID4gc2hpdGFzb3VkYW5cIDsKK+emv+mgreeXhSA+IHRva3V0b3VieW91XCA7CivlvL7nnYDngrkgPiBkYW5jaGFrdXRlblwgOwor5LqU5pyI55eFID4gZ29nYXRzdWJ5b3VcIDsKK+W8vuWKm+aApyA+IGRhbnJ5b2t1c2VpXCA7CivmoLjniIblvL4gPiBrYWt1YmFrdWRhblwgOwor5Lim5pyo6LevID4gbmFtaWtpbWljaGlcIDsKK+WVhualreihlyA+IHNob3VneW91Z2FpXCA7CivpoK3mloflrZcgPiBrYXNoaXJhbW9qaVwgOwor57iu57es57SZID4gY2hpcmltZW5zaGlcIDsKK+aIquaWremdoiA+IHNldHN1ZGFubWVuXCA7CivljZfkuqzomasgPiBuYW5raW5tdXNoaVwgOwor6KOB5rG65pu4ID4gc2Fpa2V0c3VzaG9cIDsKK+aguOeHg+aWmSA+IGtha3VuZW5yeW91XCA7CivpgJDlrZfoqLMgPiBjaGlrdWppeWFrdVwgOwor5LiA5b656ICFID4gaXR0ZXRzdW1vbm9cIDsKK+W+oeWNlOWKmyA+IGdva3lvdXJ5b2t1XCA7Civkv4LlsZ7kuK0gPiBrZWl6b2t1Y2h1dVwgOwor55eF5Lit5ZCfID4gYnlvdWNodXVnaW5cIDsKK+altemZkOWApCA+IGt5b2t1Z2VuY2hpXCA7CivmlZnogrLlraYgPiBreW91aWt1Z2FrdVwgOwor6Zu76Kmx5a6kID4gZGVud2FzaGl0c3VcIDsKK+mBoOW/g+WKmyA+IGVuc2hpbnJ5b2t1XCA7Civlrq7ltI7nnIwgPiBtaXlhemFraWtlblwgOwor5ZWG5bel5qWtID4gc2hvdWtvdWd5b3VcIDsKK+ihneWLleeahCA+IHNob3Vkb3V0ZWtpXCA7Civog4bnn7Pnl4cgPiB0YW5zZWtpc2hvdVwgOwor6Ly45Ye65ZOBID4geXVzaHV0c3VoaW5cIDsKK+S4ieecoOialSA+IHNhbm1pbmthaWtvXCA7CivplpPmrKDms4kgPiBrYW5rZXRzdXNlblwgOwor5aSp6b6N5bedID4gdGVucnl1dWthd2FcIDsKK+aVmee/kueUnyA+IGt5b3VzaHV1c2VpXCA7CivpmqPmjqXlnLAgPiByaW5zZXRzdWNoaVwgOwor55m655Sf546HID4gaGFzc2Vpcml0c3VcIDsKK+iRoeiQhOeVkSA+IGJ1ZG91YmF0YWtlXCA7CivlooPnlYzmqJkgPiBreW91a2FpaHlvdVwgOwor56m66LuN5YqbID4ga3V1Z3Vucnlva3VcIDsKK+S6pOWjsOabsiA+IGtvdXNlaWt5b2t1XCA7Civnj77lhoXplqMgPiBnZW4nJ25haWtha3VcIDsKK+WNoOaYn+ihkyA+IHNlbnNlaWp1dHN1XCA7CivpppnovpvmlpkgPiBrb3VzaGlucnlvdVwgOwor55S66YGT5aC0ID4gbWFjaGlkb3Vqb3VcIDsKK+WLleWKm+a6kCA+IGRvdXJ5b2t1Z2VuXCA7CivmgZLnrYnlvI8gPiBrb3V0b3VzaGlraVwgOwor6KiO5LyQ6LuNID4gdG91YmF0c3VndW5cIDsKK+ihqOeci+advyA+IG9tb3Rla2FuYmFuXCA7Civmv4PpnZLoibIgPiBub3VzZWlzaG9rdVwgOwor5q665Lq654qvID4gc2F0c3VqaW5oYW5cIDsKK+aui+W/teizniA+IHphbicnbmVuc2hvdVwgOwor6ISz5YWF6KGAID4gbm91anV1a2V0c3VcIDsKK+mjn+S6uueoriA+IHNob2t1amluc2h1XCA7CivotaTopJDoibIgPiBzZWtrYXNzaG9rdVwgOwor6IiI5L+h6YyyID4ga291c2hpbnJva3VcIDsKK+mbu+eGseWZqCA+IGRlbicnbmV0c3VraVwgOwor5L2c5puy6ICFID4gc2Fra3lva3VzaGFcIDsKK+WVhuaomeaoqSA+IHNob3VoeW91a2VuXCA7CivluLjorZjkurogPiBqb3VzaGlraWppblwgOwor6Kaz5a6i5bGkID4ga2Fua3lha3Vzb3VcIDsKK+S4gOmHjeahnCA+IGhpdG9lemFrdXJhXCA7CivlhYjlhYjmnIggPiBzZW5zZW5nZXRzdVwgOwor5Zyw5YuV6KqsID4gY2hpZG91c2V0c3VcIDsKK+eZveS6nOizqiA+IGhha3Vhc2hpdHN1XCA7CivohqDnnYDliaQgPiBrb3VjaGFrdXphaVwgOwor5LiA5q616JC9ID4gaWNoaWRhbnJha3VcIDsKK+i7jeeUqOmzqSA+IGd1bicneW91YmF0b1wgOwor5L+X5paH5a2mID4gem9rdWJ1bmdha3VcIDsKK+mbu+Wcp+ioiCA+IGRlbicnYXRzdWtlaVwgOwor6Jas5bGA5pa5ID4geWFra3lva3Vob3VcIDsKK+azleWItuWxgCA+IGhvdXNlaWt5b2t1XCA7CivolqzlrabogIUgPiB5YWt1Z2FrdXNoYVwgOwor5L+C5LqJ54mpID4ga2Vpc291YnV0c3VcIDsKK+mQmOS5s+a0niA+IHNob3VueXV1ZG91XCA7CivohLHmr5vliaQgPiBkYXRzdW1vdXphaVwgOwor566h6L2E5qipID4ga2Fua2F0c3VrZW5cIDsKK+WAn+eUqOabuCA+IHNoYWt1eW91c2hvXCA7CivlpYnlhazlj6MgPiBob3Vrb3VndWNoaVwgOwor5pS+6YCB5bGAID4gaG91c291a3lva3VcIDsKK+m7hOeZveiJsiA+IGtvaGFrdXNob2t1XCA7Civnvr3nuZToorQgPiBoYW9yaWhha2FtYVwgOwor6Zmk5bmV5byPID4gam9tYWt1c2hpa2lcIDsKK+W8t+WItueahCA+IGt5b3VzZWl0ZWtpXCA7CivlvLflv4PliaQgPiBreW91c2hpbnphaVwgOwor55Sf5rS755KwID4gc2Vpa2F0c3VrYW5cIDsKK+aYpeS4gOeVqiA+IGhhcnVpY2hpYmFuXCA7CivljYHlhavnlaogPiBqdXVoYWNoaWJhblwgOwor57WC6Lqr5a6YID4gc2h1dXNoaW5rYW5cIDsKK+aciOmVt+efsyA+IGdldGNob3VzZWtpXCA7CivmlZnogbflk6EgPiBreW91c2hva3VpblwgOwor6YCB5Yil5LyaID4gc291YmV0c3VrYWlcIDsKK+WHuuWTgeWbvSA+IHNodXBwaW5rb2t1XCA7CivljZfkuqznlLogPiBuYW5raW5tYWNoaVwgOwor6YGT5b6z55qEID4gZG91dG9rdXRla2lcIDsKK+WVhualreeVjCA+IHNob3VneW91a2FpXCA7Civlj47ntI3poY0gPiBzaHV1bm91Z2FrdVwgOwor6byO56uL5oimID4gdGVpcml0c3VzZW5cIDsKK+WOn+WJh+eahCA+IGdlbnNva3V0ZWtpXCA7Civlgo3ogbTmlpkgPiBib3VjaG91cnlvdVwgOwor5Y2D5YaG5pytID4gc2VuJydlbnNhdHN1XCA7Civlrprlj47lhaUgPiB0ZWlzaHV1bnl1dVwgOwor5YWt5aSn5beeID4gcm9rdWRhaXNodXVcIDsKK+WJsuW8leWIuCA+IHdhcmliaWtpa2VuXCA7CivkvY/nlJ/mtLsgPiBqdXVzZWlrYXRzdVwgOwor5YmN56uL6IW6ID4gemVucml0c3VzZW5cIDsKK+WGmeecn+mbhiA+IHNoYXNoaW5zaHV1XCA7Civnmb7kuIfpgY0gPiBoeWFrdW1hbmJlblwgOwor6J2J5pmC6ZuoID4gc2VtaXNoaWd1cmVcIDsKK+WJsuW8leWCtSA+IHdhcmliaWtpc2FpXCA7CivmjqXnnYDliaQgPiBzZXRjaGFrdXphaVwgOwor5omL6KGT5Y+wID4gc2h1anV0c3VkYWlcIDsKK+mYsueBq+aJiSA+IGJvdWthdG9iaXJhXCA7CivkubHlhaXogIUgPiByYW4nJ255dXVzaGFcIDsKK+ioiOeUu+eahCA+IGtlaWtha3V0ZWtpXCA7Civoqr/ljbDlvI8gPiBjaG91aW5zaGlraVwgOwor6YCG6Lui5bGkID4gZ3lha3V0ZW5zb3VcIDsKK+m7hOiJsuiZqyA+IGtvZ2FuZW11c2hpXCA7CivnlJ/mtLvms5UgPiBzZWlrYXRzdWhvdVwgOwor57KY5Zyf6LOqID4gbmVuZG9zaGl0c3VcIDsKK+mAhui8uOWFpSA+IGd5YWt1eXVueXV1XCA7CivmlrDoiIjlm70gPiBzaGlua291a29rdVwgOwor5Ym16YCg5YqbID4gc291em91cnlva3VcIDsKK+WQiOebrueahCA+IGdvdW1va3V0ZWtpXCA7CivmlrDkurros54gPiBzaGluamluc2hvdVwgOwor6aCa6Z2Z6ISIID4ga2Vpam91bXlha3VcIDsKK+mbu+WgseWxgCA+IGRlbnBvdWt5b2t1XCA7CivkuInluZXniakgPiBzYW5tYWt1bW9ub1wgOwor55m95pyo6JOuID4gaGFrdW1va3VyZW5cIDsKK+WVhualrea4ryA+IHNob3VneW91a291XCA7CivolqznvZDpoK0gPiB5YWthbicnYXRhbWFcIDsKK+S4gOmHjOWhmiA+IGljaGlyaWR6dWthXCA7CivntYLouqvliJEgPiBzaHV1c2hpbmtlaVwgOwor5YuV5Yqb5a2mID4gZG91cmlraWdha3VcIDsKK+evgOaWmeeQhiA+IHNlY2hpcnlvdXJpXCA7Civlh7rlk4HkurogPiBzaHVwcGluJyduaW5cIDsKK+WCjeiBtOW4rSA+IGJvdWNob3VzZWtpXCA7CivkuI3pganliIcgPiBmdXRla2lzZXRzdVwgOwor5a2m6Zqb55qEID4gZ2FrdXNhaXRla2lcIDsKK+ernOmqqOW6pyA+IHJ5dXVrb3RzdXphXCA7Civku67mnaHntIQgPiBrYXJpam91eWFrdVwgOwor6ZqO57Sa56ugID4ga2Fpa3l1dXNob3VcIDsKK+aKteaKl+WKmyA+IHRlaWtvdXJ5b2t1XCA7Civmo67mnpflraYgPiBzaGlucmluZ2FrdVwgOwor55m+5LiH6KiAID4gaHlha3VtYW5nZW5cIDsKK+WMlueyp+S4iyA+IGtlc2hvdXNoaXRhXCA7CivotaTmj5Dnga8gPiBha2FjaG91Y2hpblwgOwor5Ym16YCg5Li7ID4gc291em91bnVzaGlcIDsKK+WAmeWtneizoiA+IGhvdXNoYXVzaGVuXCA7CivolqznvLbpoK0gPiB5YWthbicnYXRhbWFcIDsKK+WGrOWwhui7jSA+IGZ1eXVzaG91Z3VuXCA7Civni6znv5Lmm7ggPiBkb2t1c2h1dXNob1wgOwor5YWs6Ki85paZID4ga291c2hvdXJ5b3VcIDsKK+e2v+e5lOeJqSA+IG1lbicnb3JpbW9ub1wgOwor5YWI5YWl5Li7ID4gc2VuJydueXV1c2h1XCA7CivmnIDntYLnmoQgPiBzYWlzaHV1dGVraVwgOwor5pys5bu656+JID4gaG9ua2VuY2hpa3VcIDsKK+eLl+WwvuiNiSA+IGVub2tvcm9ndXNhXCA7CivooYzllYbkurogPiBneW91c2hvdW5pblwgOwor5YiH5YiG5rOVID4gc2V0c3VidW5ob3VcIDsKK+Wwj+eZvuWnkyA+IGtvYnlha3VzaG91XCA7Civlv4PkuIjlpKsgPiBrb2tvcm9qb3VidVwgOwor6bOl6aGe5a2mID4gY2hvdXJ1aWdha3VcIDsKK+W8seW5tOiAhSA+IGpha3VuZW5tb25vXCA7CivkuK3pmorplbcgPiBjaHV1dGFpY2hvdVwgOwor55u46KuH5b25ID4gc291ZGFuJyd5YWt1XCA7Civpo5/kuovmmYIgPiBzaG9rdWppZG9raVwgOwor5YWr6Z2i5L2TID4gaGFjaGltZW50YWlcIDsKK+WOn+WIpOaxuiA+IGdlbmhhbmtldHN1XCA7CivmpbXlnLDlnI8gPiBreW9rdWNoaWtlblwgOwor55uj5a+f5a6YID4ga2Fuc2F0c3VrYW5cIDsKK+eZveeOieeyiSA+IHNoaXJhdGFtYWtvXCA7CivllYbmpa3mlocgPiBzaG91Z3lvdWJ1blwgOwor5aSp5YuV6KqsID4gdGVuZG91c2V0c3VcIDsKK+i+u+iqrOazlSA+IHRzdWppc2VwcG91XCA7CivnhYnkuLnooZMgPiByZW50YW5qdXRzdVwgOwor6KW/5rW35bK4ID4gbmlzaGlrYWlnYW5cIDsKK+aApeS4iuaYhyA+IGt5dXVqb3VzaG91XCA7Civlrp3nn7PllYYgPiBob3VzZWtpc2hvdVwgOwor5o+b566X546HID4ga2Fuc2Fucml0c3VcIDsKK+W7uuioreiAhSA+IGtlbnNldHN1c2hhXCA7CivljJfjgIXopb8gPiBob2t1aG9rdXNlaVwgOwor6YqA5ama5byPID4gZ2lua29uc2hpa2lcIDsKK+S4oeiEmuWZqCA+IHJ5b3VreWFrdWtpXCA7Civljp/li5XlipsgPiBnZW5kb3VyeW9rdVwgOwor5L+E5pmv5rCXID4gbml3YWthZ2Vpa2lcIDsKK+aCquaIr+iAhSA+IGl0YXp1cmFtb25vXCA7CivlpKfnpo/luLMgPiBkYWlmdWt1Y2hvdVwgOwor5pmC56+A5p+EID4gamlzZXRzdWdhcmFcIDsKK+WQuOihgOmsvCA+IGt5dXVrZXRzdWtpXCA7Civns5blsL/nl4UgPiB0b3VueW91YnlvdVwgOwor6Lui5Lu75YWIID4gdGVuJyduaW5zYWtpXCA7CivmlK/phY3lipsgPiBzaGloYWlyeW9rdVwgOwor5Y2Y6Z+z56+AID4gdGFuJydvbnNldHN1XCA7CivmlrDogZ7nqK4gPiBzaGluYnVuZGFuZVwgOwor5byf44CF5a2QID4gb3RvdXRvZGVzaGlcIDsKK+S9juS4mOmZtSA+IHRlaWt5dXVyeW91XCA7Civlm73pmpvnmoQgPiBrb2t1c2FpdGVraVwgOwor6YO35Zyf6ImyID4ga3lvdWRvc2hva3VcIDsKK+ernOeUsOWnqyA+IHRhdHN1dGFoaW1lXCA7CivlsI/lrabppKggPiBzaG91Z2FrdWthblwgOwor5L2/56+A5ZujID4gc2hpc2V0c3VkYW5cIDsKK+a2iOaBr+aWhyA+IHNob3Vzb2t1YnVuXCA7Civnt4vooaPojYkgPiBoaWdvcm9tb3NvdVwgOwor5Li76KiI5bGAID4gc2h1a2Vpa3lva3VcIDsKK+mBk+W+s+W/gyA+IGRvdXRva3VzaGluXCA7CivmnKrmsbrlm5ogPiBtaWtldHN1c2h1dVwgOwor5oSb5ZSx5puyID4gYWlzaG91a3lva3VcIDsKK+Wxseajn+ibhyA+IHlhbWFrYWdhc2hpXCA7CivlgbXlr5/pmoogPiB0ZWlzYXRzdXRhaVwgOwor55m65L+h5YG0ID4gaGFzc2hpbmdhd2FcIDsKK+mBoOWxsemHjCA+IHRvb3lhbWF6YXRvXCA7CivnpZ7ntYznl5sgPiBzaGlua2VpdHN1dVwgOwor56We57WM55eHID4gc2hpbmtlaXNob3VcIDsKK+elnue1jOeXhSA+IHNoaW5rZWlieW91XCA7CivlrprnnYDmtrIgPiB0ZWljaGFrdWVraVwgOwor5byB6Ki85a2mID4gYmVuc2hvdWdha3VcIDsKK+eZuuS/oeS6uiA+IGhhc3NoaW4nJ25pblwgOwor57eR5Zyw5bivID4gcnlva3VjaGl0YWlcIDsKK+eUn+a0u+WcjyA+IHNlaWthdHN1a2VuXCA7CivnhrHkvJ3lsI4gPiBuZXRzdWRlbmRvdVwgOwor6YGT5b6z5a2mID4gZG91dG9rdWdha3VcIDsKK+mBqeagvOiAhSA+IHRla2lrYWt1c2hhXCA7Civlm7Pmm7jlrqQgPiB0b3Nob3NoaXRzdVwgOwor6Kaz6Z+z5qeYID4ga2FuJydub25zYW1hXCA7CivntZDlqZrlvI8gPiBrZWtrb25zaGlraVwgOwor6KW/5rSL5byPID4gc2VpeW91c2hpa2lcIDsKK+eUt+WGpeWIqSA+IG90b2tvbXlvdXJpXCA7CivkuIrohZXpqqggPiBqb3V3YW5rb3RzdVwgOwor55Sf5ZG95YqbID4gc2VpbWVpcnlva3VcIDsKK+ehrOmqqOa8oiA+IGtvdWtvdHN1a2FuXCA7CivllYbmpa3lnLAgPiBzaG91Z3lvdWNoaVwgOwor5LiH5bm05bqKID4gbWFuJyduZW5kb2tvXCA7CivorJvph4jluKsgPiBrb3VzaGFrdXNoaVwgOwor5reh6buE6ImyID4gdGFua291c2hva3VcIDsKK+S4ieW5heWvviA+IHNhbnB1a3V0c3VpXCA7Civom4vnmb3lsL8gPiB0YW5wYWt1bnlvdVwgOwor5Yi65r+A6IetID4gc2hpZ2VraXNodXVcIDsKK+iNiemei+iZqyA+IHdhcmFqaW11c2hpXCA7Civph5Hono3mpa0gPiBraW4nJ3l1dWd5b3VcIDsKK+iPnOeoruayuSA+IG5hdGFuZWFidXJhXCA7Civpm5vkurrlvaIgPiBoaW5hbmluZ3lvdVwgOwor54Sh552A6Zm4ID4gbXVjaGFrdXJpa3VcIDsKK+S4iuWIhuWIpSA+IGpvdWZ1bmJldHN1XCA7CivlpKfli5XohIggPiBkYWlkb3VteWFrdVwgOwor56We54Sh5pyIID4ga2FuJyduYWR6dWtpXCA7CivlubzpprTmn5MgPiBvc2FuYW5hamltaVwgOwor5YaG5ZGo546HID4gZW5zaHV1cml0c3VcIDsKK+WVhualreWPsiA+IHNob3VneW91c2hpXCA7CivlsbHlsrPnl4UgPiBzYW5nYWt1YnlvdVwgOwor6Kaq5Lu75a6YID4gc2hpbicnbmlua2FuXCA7Civov73ot6HogIUgPiB0c3Vpc2VraXNoYVwgOwor55m65Lya5byPID4gaGFra2Fpc2hpa2lcIDsKK+WkqemBk+iZqyA+IHRlbnRvdW11c2hpXCA7CivluorpnaLnqY0gPiB5dWthbWVuc2VraVwgOwor54u46Kaq54i2ID4gdGFudWtpb3lhamlcIDsKK+acqOefs+a8oiA+IGJva3VzZWtpa2FuXCA7Civlm73pmLLnnIEgPiBrb2t1Ym91c2hvdVwgOwor5Zu95paH5a2mID4ga29rdWJ1bmdha3VcIDsKK+awkeS/l+WtpiA+IG1pbnpva3VnYWt1XCA7CivnlJ/mrpbohbogPiBzZWlzaG9rdXNlblwgOwor6Ieq5q6655qEID4gamlzYXRzdXRla2lcIDsKK+mAoOeJqeS4uyA+IHpvdWJ1dHN1c2h1XCA7CivnlKjlhbXooZMgPiB5b3VoZWlqdXRzdVwgOwor6YCA6IG36YeRID4gdGFpc2hva3VraW5cIDsKK+W9juaciOeKtiA+IHdhbmdldHN1am91XCA7CivnlJ/msqHlubQgPiBzZWlib3RzdW5lblwgOwor5Y2Y5LiA5oCnID4gdGFuJydpdHN1c2VpXCA7CivmjIHntprlipsgPiBqaXpva3VyeW9rdVwgOwor5paw6IGe5qWtID4gc2hpbmJ1bmd5b3VcIDsKK+elnue1jOaguCA+IHNoaW5rZWlrYWt1XCA7CivmnqLou7jlm70gPiBzdXVqaWt1a29rdVwgOwor5LiJ6Imy54mIID4gc2Fuc2hva3ViYW5cIDsKK+ebtOims+eahCA+IGNob2trYW50ZWtpXCA7CivkuK3plpPpp4UgPiBjaHV1a2FuJydla2lcIDsKK+iDveijheadnyA+IG5vdXNob3V6b2t1XCA7CivntZDmmbblraYgPiBrZXNzaG91Z2FrdVwgOwor6Kej5rG65rOVID4ga2Fpa2V0c3Vob3VcIDsKK+itpuaIkuiJsiA+IGtlaWthaXNob2t1XCA7CivkuIDmr5vkvZwgPiBpY2hpbW91c2FrdVwgOwor5rip54ax5oCnID4gb24nJ25ldHN1c2VpXCA7CivlhoXlj43ohJogPiBuYWloYW5reWFrdVwgOwor5bu257iE5ryBID4gaGFlbmF3YXJ5b3VcIDsKK+ebtOaWueS9kyA+IGNob2t1aG91dGFpXCA7Civlrrbml4/pgZQgPiBrYXpva3V0YWNoaVwgOwor5Yi65r+A55qEID4gc2hpZ2VraXRla2lcIDsKK+S6pOaPm+WxgCA+IGtvdWthbmt5b2t1XCA7CivkuIPlubTlv4wgPiBzaGljaGluZW5raVwgOwor5oKq5oiv5pu4ID4gaXRhenVyYWdha2lcIDsKK+WNg+S6uumHnSA+IHNlbicnbmluYmFyaVwgOwor5raI5q+S5rayID4gc2hvdWRva3Vla2lcIDsKK+ayueegpeefsyA+IGFidXJhdG9pc2hpXCA7Civni5DppYLpo6kgPiBraXRzdW5ldWRvblwgOwor5ZCI5bee5Zu9ID4gZ2Fzc2h1dWtva3VcIDsKK+a/g+ikkOiJsiA+IG5vdWthc3Nob2t1XCA7CivmnZDmnKjllYYgPiB6YWltb2t1c2hvdVwgOwor5Y6f6Imy54mIID4gZ2Vuc2hva3ViYW5cIDsKK+WNmOmgheW8jyA+IHRhbmtvdXNoaWtpXCA7CivlnJ/msJfoibIgPiB0c3VjaGlrZWlyb1wgOwor5LuY5bGe56+AID4gZnV6b2t1c2V0c3VcIDsKK+S4gOeVqum2jyA+IGljaGliYW5kb3JpXCA7CivntIvnq6DlraYgPiBtb25zaG91Z2FrdVwgOwor55yf5Y+q5LitID4gbWF0dGFkYW5ha2FcIDsKK+WHuuW4reiAhSA+IHNodXNzZWtpc2hhXCA7CivploDliY3nlLogPiBtb256ZW5tYWNoaVwgOwor5pWZ6KiT55qEID4ga3lvdWt1bnRla2lcIDsKK+iyr+mHkeWxgCA+IGNob2tpbmt5b2t1XCA7Civlrpjlg5roh60gPiBrYW5yeW91c2h1dVwgOwor6LmE6YmE5belID4gdGVpdGV0c3Vrb3VcIDsKK+elnue1jOWtpiA+IHNoaW5rZWlnYWt1XCA7CivooajnjoTplqIgPiBvbW90ZWdlbmthblwgOwor5Ye65by15bqXID4gc2h1dGNob3V0ZW5cIDsKK+aXheihjOmehCA+IHJ5b2tvdWthYmFuXCA7CivljJfjgIXmnbEgPiBob2t1aG9rdXRvdVwgOwor5rib5aGp6aOfID4gZ2VuJydlbnNob2t1XCA7Civlm6PkvZPlrqIgPiBkYW50YWlreWFrdVwgOwor5b+D6ZyK5a2mID4gc2hpbnJlaWdha3VcIDsKK+Wkp+ato+eQtCA+IHRhaXNob3Vnb3RvXCA7CivmrKDli6TnjocgPiBrZWtraW5yaXRzdVwgOwor5a6a552A5YmkID4gdGVpY2hha3V6YWlcIDsKK+WFpeWgtOaWmSA+IG55dXVqb3VyeW91XCA7CivpgJDoqp7oqLMgPiBjaGlrdWdveWFrdVwgOwor5oCd6ICD5YqbID4gc2hpa291cnlva3VcIDsKK+S5s+eUqOeJmyA+IG55dXV5b3VneXV1XCA7CivmraPopprlnYogPiBzaG91Z2FrdWJvdVwgOwor57eR6Je76aGeID4gcnlva3Vzb3VydWlcIDsKK+ebruaSg+iAhSA+IG1va3VnZWtpc2hhXCA7Civpu5Lmm5znn7MgPiBrb2t1eW91c2VraVwgOwor5rqA5LiA5bm0ID4gbWFuJydpY2hpbmVuXCA7CivmsqHmiJHnmoQgPiBib3RzdWdhdGVraVwgOwor5ZCr5aG1546HID4gZ2Fuamlucml0c3VcIDsKK+mAgOiBt+iAhSA+IHRhaXNob2t1c2hhXCA7CivolLXlsYvmlbcgPiBrdXJheWFzaGlraVwgOwor5YaN5bu656+JID4gc2Fpa2VuY2hpa3VcIDsKK+eMrui6q+eahCA+IGtlbnNoaW50ZWtpXCA7CivlpqjlrrPniakgPiBib3VnYWlidXRzdVwgOwor54K555y86JasID4gdGVuZ2FuJyd5YWt1XCA7CivlhYPpppbnm7ggPiBtb3Rvc2h1c2hvdVwgOwor5oGQ5rC055eFID4ga3lvdXN1aWJ5b3VcIDsKK+WvhuWjsuWTgSA+IG1pdHN1YmFpaGluXCA7Civnn7Plt53nnIwgPiBpc2hpa2F3YWtlblwgOwor5Ymv5Lya6ZW3ID4gZnVrdWthaWNob3VcIDsKK+eZuuaYjuiAhSA+IGhhdHN1bWVpc2hhXCA7CivlibXkvZznmoQgPiBzb3VzYWt1dGVraVwgOwor5aSn6YCG572qID4gdGFpZ3lha3V6YWlcIDsKK+S4gOWFg+eahCA+IGljaGlnZW50ZWtpXCA7Civnmb7pnaLnm7ggPiBoeWFrdW1lbnNvdVwgOwor5LiN5L6155WlID4gZnVzaGlucnlha3VcIDsKK+Wwj+WtpueUnyA+IHNob3VnYWt1c2VpXCA7Civku5jlsZ7niakgPiBmdXpva3VidXRzdVwgOwor5YuJ5by35LitID4gYmVua3lvdWNodXVcIDsKK+WGmeecn+W4syA+IHNoYXNoaW5jaG91XCA7CivkuIDnm67mlaMgPiBpY2hpbW9rdXNhblwgOwor6aKo5Yqb6KiIID4gZnV1cnlva3VrZWlcIDsKK+a0u+eUqOW9oiA+IGthdHN1eW91a2VpXCA7Civoh6rli5XmiYkgPiBqaWRvdXRvYmlyYVwgOwor5Lya56S+56uLID4ga2Fpc2hhcml0c3VcIDsKK+imi+ebruW9oiA+IG1pbWVrYXRhY2hpXCA7CivpkZHliKXmiYAgPiBrYW5iZXRzdXNob1wgOwor5Luu5aWR57SEID4ga2FyaWtlaXlha3VcIDsKK+aguOaLoeaVoyA+IGtha3VrYWt1c2FuXCA7Civlkajovrrlm70gPiBzaHV1aGVua29rdVwgOwor5b+F54S25oCnID4gaGl0c3V6ZW5zZWlcIDsKK+m7kueMqeeMqSA+IGt1cm9zaG91am91XCA7CivkuKHmm7/llYYgPiByeW91Z2Flc2hvdVwgOwor6ISx6Imy5YmkID4gZGFzc2hva3V6YWlcIDsKK+WPs+W/g+WupCA+IHVzaGluc2hpdHN1XCA7CivkuK3lpK7lj6MgPiBjaHV1b3VndWNoaVwgOwor55yf6I+M55eHID4gc2hpbmtpbnNob3VcIDsKK+Wcp+WKm+azoiA+IGF0c3VyeW9rdWhhXCA7Civlhajlm73nmoQgPiB6ZW5rb2t1dGVraVwgOwor57iE5qKv5a2QID4gbmF3YWJhc2hpZ29cIDsKK+aIkeeJqemhlCA+IHdhZ2Ftb25vZ2FvXCA7Civpo5/loILou4ogPiBzaG9rdWRvdXNoYVwgOwor5ZaE55+l6K2YID4gemVuY2hpc2hpa2lcIDsKK+S4gOWGhuacrSA+IGljaGllbnNhdHN1XCA7CivoppbogbToppogPiBzaGljaG91a2FrdVwgOwor6ICQ54ax6Yu8ID4gdGFpbmV0c3Vrb3VcIDsKK+mdqeWRveeahCA+IGtha3VtZWl0ZWtpXCA7CivlsI/kvJHmraIgPiBzaG91a3l1dXNoaVwgOwor5aW95Y+W57WEID4ga291dG9yaWt1bWlcIDsKK+WNmuWlleWuvyA+IGJha3VjaGl5YWRvXCA7CivohLPosqfooYAgPiBub3VoaW5rZXRzdVwgOwor5oKq44CF5oivID4gd2FydWl0YXp1cmFcIDsKK+a0l+ekvOW8jyA+IHNlbnJlaXNoaWtpXCA7CivnlLLpqqjmlocgPiBrb3Vrb3RzdWJ1blwgOwor5pel6YqA5Yi4ID4gbmljaGlnaW5rZW5cIDsKK+iyp+awkeeqnyA+IGhpbm1pbmt1dHN1XCA7CivlpYnnjK7niakgPiBob3VrZW5idXRzdVwgOwor5a6f5qWt5a62ID4gaml0c3VneW91a2FcIDsKK+iDuOeul+eUqCA+IG11bmV6YW4nJ3lvdVwgOwor5Yas5pyo56uLID4gZnV5dWtvZGFjaGlcIDsKK+e1kOe0ruezuCA+IGtlc3NhdHN1c2hpXCA7CivpgIblrqPkvJ0gPiBneWFrdXNlbmRlblwgOwor6a6u57SF6ImyID4gc2Vua291c2hva3VcIDsKK+WFpeWbveeojiA+IG55dXVrb2t1emVpXCA7Civmi6HlpKfpj6EgPiBrYWt1ZGFpa3lvdVwgOwor6YGT5qW96ICFID4gZG91cmFrdW1vbm9cIDsKK+Wls+aIv+W9uSA+IG55b3Vib3V5YWt1XCA7CivmnaHntITlm70gPiBqb3V5YWt1a29rdVwgOwor5Luj5pu/54mpID4gZGFpdGFpYnV0c3VcIDsKK+a3t+WHneWcnyA+IGtvbmt1cml6ZXRvXCA7Civmtojmr5LliaQgPiBzaG91ZG9rdXphaVwgOwor5LiH6IO96JasID4gbWFuJydub3V5YWt1XCA7Civkv6HmhpHmgKcgPiBzaGlucHlvdXNlaVwgOwor5YiX5Lyd5L2TID4gcmV0c3VkZW50YWlcIDsKK+WPo+WPr+eskSA+IGt1Y2hpb2thc2hpXCA7Civlrp/nlJ/mtLsgPiBqaXNzZWlrYXRzdVwgOwor55m+5aeT5a62ID4gaHlha3VzaG91eWFcIDsKK+S4gOWxgOmDqCA+IGljaGlreW9rdWJ1XCA7CivplpPkuIDpq6ogPiBrYW4nJ2lwcGF0c3VcIDsKK+W5tOagvOWlvSA+IHRvc2hpa2Fra291XCA7CivpjqfkuIDlhbcgPiB5b3JvaWljaGlndVwgOwor55S65Lq654mpID4gY2hvdW5pbm1vbm9cIDsKK+mAmuios+WumCA+IHRzdXV5YWt1a2FuXCA7Civlv4XopoHmgqogPiBoaXRzdXlvdWFrdVwgOwor6YmE6YGT57ayID4gdGV0c3Vkb3Vtb3VcIDsKK+WOn+eUo+eJqSA+IGdlbnNhbmJ1dHN1XCA7Civlmajmpb3mm7IgPiBraWdha3VreW9rdVwgOwor5b+F6KaB5oCnID4gaGl0c3V5b3VzZWlcIDsKK+WNiumdouitmCA+IGhhbm1lbnNoaWtpXCA7CivlpKLlv4PlnLAgPiB5dW1lZ29rb2NoaVwgOwor5LuK6YCx5LitID4ga29uc2h1dWNodXVcIDsKK+ipseS4i+aJiyA+IGhhbmFzaGliZXRhXCA7CivpmLLonZXliaQgPiBib3VzaG9rdXphaVwgOwor5bCP5LmX55qEID4gc2hvdWpvdXRla2lcIDsKK+eri+iEmueCuSA+IHJpa2t5YWt1dGVuXCA7CivkuI3kv6Hlrp8gPiBmdXNoaW5qaXRzdVwgOwor5LqJ5aWq5oimID4gc291ZGF0c3VzZW5cIDsKK+WVhuWtpuWjqyA+IHNob3VnYWt1c2hpXCA7CivkuIrlsYvmlbcgPiBrYW1peWFzaGlraVwgOwor6Iul5aSn5bCGID4gd2FrYWRhaXNob3VcIDsKK+aTjeiIteWupCA+IHNvdWRhc2hpdHN1XCA7CivmiJDkurrlvI8gPiBzZWlqaW5zaGlraVwgOwor5paw6Z2i55uuID4gc2hpbm1lbm1va3VcIDsKK+azqOaWh+acjSA+IGNodXVtb25mdWt1XCA7CivkuIrmo5/lvI8gPiBqb3V0b3VzaGlraVwgOwor6LWk6YqF6ImyID4gc2hha3Vkb3Vpcm9cIDsKK+WQkeWtpuW/gyA+IGtvdWdha3VzaGluXCA7CivmuIfmnJvogIUgPiBrYXRzdWJvdXNoYVwgOwor5rG957y25a6kID4ga2lrYW5zaGl0c3VcIDsKK+Wft+mBlOWQjyA+IHNoaXR0YXRzdXJpXCA7CivkuZflv4PlnLAgPiBub3JpZ29rb2NoaVwgOwor5byU56Wt5paZID4gY2hvdXNhaXJ5b3VcIDsKK+WIuuaIn+eahCA+IHNoaWdla2l0ZWtpXCA7CivkuIvmpJzliIYgPiBzaGl0YWtlbmJ1blwgOwor6ZaL5YKs5byPID4ga2Fpc2Fpc2hpa2lcIDsKK+eUsOiIjuWomCA+IGluYWthbXVzdW1lXCA7CivnrrHngavpiaIgPiBoYWtvaGliYWNoaVwgOwor5Ymv6aaW55u4ID4gZnVrdXNodXNob3VcIDsKK+aVteaEvuW/gyA+IHRla2lnYWlzaGluXCA7Civph4jnqbrmtbcgPiBzaGFrdWt1dWthaVwgOwor5YyX5YyX6KW/ID4gaG9rdWhva3VzZWlcIDsKK+e1hOe5lOelqCA+IHNvc2hpa2loeW91XCA7Civlh7rouqvogIUgPiBzaHVzc2hpbnNoYVwgOwor5LuV5LqL6YePID4gc2hpZ290b3J5b3VcIDsKK+WNiuaciOW9oiA+IGhhbmdldHN1a2VpXCA7CivliIblrZDoqqwgPiBidW5zaGlzZXRzdVwgOwor5Y2K5pyI5byBID4gaGFuZ2V0c3ViZW5cIDsKK+ato+etlOeOhyA+IHNlaXRvdXJpdHN1XCA7CivlraPnr4DnmoQgPiBraXNldHN1dGVraVwgOwor5Y6f5a2Q6KqsID4gZ2Vuc2hpc2V0c3VcIDsKK+elnuWYl+elrSA+IGthbicnbmFtZXNhaVwgOwor5qGn6Iie5Y+wID4gaGlub2tpYnV0YWlcIDsKK+WvvuWxgOiAhSA+IHRhaWt5b2t1c2hhXCA7Civosp3mrrvpqqggPiBrYWlnYXJhYm9uZVwgOwor5Y2D5Lih566xID4gc2VucnlvdWJha29cIDsKK+e0lOWPjuWFpSA+IGp1bnNodXVueXV1XCA7CivniannkIbnmoQgPiBidXRzdXJpdGVraVwgOwor5p6X55Sj54mpID4gcmluc2FuYnV0c3VcIDsKK+eqgeeEtuatuyA+IHRvdHN1emVuc2hpXCA7CivoqLzlj5bms5UgPiBzaG91dG9yaWhvdVwgOwor5q205Y+y55qEID4gcmVraXNoaXRla2lcIDsKK+e1hOe5lOeahCA+IHNvc2hpa2l0ZWtpXCA7CivotIjlkYjlvI8gPiB6b3V0ZWlzaGlraVwgOwor56mN6LyJ6YePID4gc2VraXNhaXJ5b3VcIDsKK+iHqueZuueahCA+IGppaGF0c3V0ZWtpXCA7CivlnJ/nn7PmtYEgPiBkb3Nla2lyeXV1XCA7CivluILnlLrmnZEgPiBzaGljaG91c29uXCA7Civpo5/loanmsLQgPiBzaG9rdWVuc3VpXCA7CivmvaTmu5HmsrkgPiBqdW5rYXRzdXl1XCA7CivmtYHmmJ/nvqQgPiByeXV1c2VpZ3VuXCA7CivlpZHntITph5EgPiBrZWl5YWt1a2luXCA7CivmsbrorbDmlocgPiBrZXRzdWdpYnVuXCA7CivokrjnlZnphZIgPiBqb3VyeXV1c2h1XCA7Civph53okYnmqLkgPiBzaGluJyd5b3VqdVwgOwor54yb5YuJ5by3ID4gbW91YmVua3lvdVwgOwor5rex5Yi75YyWID4gc2hpbmtva3VrYVwgOwor5omA5b6X6aGUID4gdG9rb3JvZWdhb1wgOwor5b6h5a6i5qeYID4gb2t5YWt1c2FtYVwgOwor6JS15pu456WoID4gem91c2hvaHlvdVwgOwor5Lq65bel6ZuqID4gamlua291eXVraVwgOwor5ZCM6IW55LuUID4gZG91ZnVrdXNoaVwgOwor5bCE5YCW5b+DID4gc2hha291c2hpblwgOwor5Y2a5aOr5Y+3ID4gaGFrdXNoaWdvdVwgOwor5YWl5ryB6ICFID4gbnl1dWd5b3NoYVwgOwor5Yil6Zmk5qipID4gYmV0c3Vqb2tlblwgOwor5oim6ZeY5pyNID4gc2VudG91ZnVrdVwgOwor6aSK6baP5qWtID4geW91a2VpZ3lvdVwgOwor6K2w5rG65qipID4gZ2lrZXRzdWtlblwgOwor5YWl5ZyS5paZID4gbnl1dWVucnlvdVwgOwor5YSq5YWI55qEID4geXV1c2VudGVraVwgOwor5ZCM5LiA6KaWID4gZG91aXRzdXNoaVwgOwor6Zuj6KGM6YGTID4gbmFuZ3lvdWRvdVwgOwor6YG65aSx5ZOBID4gaXNoaXRzdWhpblwgOwor6aOf5paH5YyWID4gc2hva3VidW5rYVwgOwor5rCR5Li75Zu9ID4gbWluc2h1a29rdVwgOwor5YaN5biw54axID4gc2Fpa2luZXRzdVwgOwor54Kt5YyW54mpID4gdGFua2FidXRzdVwgOwor5pat54mH55qEID4gZGFucGVudGVraVwgOwor5rq65q275L2TID4gZGVraXNoaXRhaVwgOwor5rW35rSL5a2mID4ga2FpeW91Z2FrdVwgOwor5q2v56We57WMID4gc2hpc2hpbmtlaVwgOwor5Y+N5oqX55qEID4gaGFua291dGVraVwgOwor6ZaL5YKs5Zu9ID4ga2Fpc2Fpa29rdVwgOwor5b6h5Lih6KaqID4gZ29yeW91c2hpblwgOwor5L+u5q2j5rayID4gc2h1dXNlaWVraVwgOwor5Y6a55Sf55yBID4ga291c2Vpc2hvdVwgOwor6auY57Sa6LuKID4ga291a3l1dXNoYVwgOwor6Luf5paH5a2mID4gbmFuYnVuZ2FrdVwgOwor6Kmm5L2c5ZOBID4gc2hpc2FrdWhpblwgOwor6Kaz6Kan5paZID4ga2FucmFucnlvdVwgOwor5LiN5L+h5Lu7ID4gZnVzaGluJyduaW5cIDsKK+S4ieiEmuaetiA+IHNhbmt5YWt1a2FcIDsKK+WkieaFi+eahCA+IGhlbnRhaXRla2lcIDsKK+S5numrmOiplSA+IGtvdWtvdWh5b3VcIDsKK+avm+awiOiLlCA+IG1vdXNlbmdva2VcIDsKK+S4ieWwuuW4ryA+IHNhbmpha3VvYmlcIDsKK+W/nOaApeetliA+IG91a3l1dXNha3VcIDsKK+S6uumBk+eahCA+IGppbmRvdXRla2lcIDsKK+a1t+mFuOa8vyA+IHVtaWhvb3p1a2lcIDsKK+aJv+iqjeeKtiA+IHNob3VuaW5qb3VcIDsKK+maj+ethuWutiA+IHp1aWhpdHN1a2FcIDsKK+aguOiejeWQiCA+IGtha3V5dXVnb3VcIDsKK+aKvemBuOWIuCA+IGNodXVzZW5rZW5cIDsKK+WFjeioseiovCA+IG1lbmt5b3Nob3VcIDsKK+e+juWuueihkyA+IGJpeW91anV0c3VcIDsKK+ijj+iyuOWxiyA+IHVyYWdhc2hpeWFcIDsKK+mYsuavkumdoiA+IGJvdWRva3VtZW5cIDsKK+W8geaFtuifuSA+IGJlbmtlaWdhbmlcIDsKK+S6jOe3muW8jyA+IG5pc2Vuc2hpa2lcIDsKK+W/heimgeS6iyA+IGhpdHN1eW91amlcIDsKK+eZuuaYjuWutiA+IGhhdHN1bWVpa2FcIDsKK+eLrOijgeiAhSA+IGRva3VzYWlzaGFcIDsKK+ecuuacm+aoqSA+IGNob3Vib3VrZW5cIDsKK+WGhemAmuiAhSA+IG5haXRzdXVzaGFcIDsKK+S4remVt+acnyA+IGNodXVjaG91a2lcIDsKK+ePvuixoeirliA+IGdlbnNob3Vyb25cIDsKK+mtlOihk+W4qyA+IG1hanV0c3VzaGlcIDsKK+WbveWcn+W6gSA+IGtva3Vkb2Nob3VcIDsKK+epjeWIhuazlSA+IHNla2lidW5ob3VcIDsKK+S/oeWPt+eBryA+IHNoaW5nb3V0b3VcIDsKK+WNiumZsOmZvSA+IGhhbicnaW4nJ3lvdVwgOwor5bmz6Z2i6Y+hID4gaGVpbWVua3lvdVwgOwor5a6F6YWN5L6/ID4gdGFrdWhhaWJpblwgOwor6JCO57iu55eHID4gaXNodWt1c2hvdVwgOwor5aSp55uu5bGxID4gdGVubW9rdXphblwgOwor5YGP5bmz6LazID4gaGVucGVpc29rdVwgOwor5rOV5a2m5aOrID4gaG91Z2FrdXNoaVwgOwor55m654WZ562SID4gaGF0c3VlbnRvdVwgOwor5YG06aCt6JGJID4gc29rdXRvdXlvdVwgOwor5aSp55qH5p2vID4gdGVuJydub3VoYWlcIDsKK+e0sOiDnuaguCA+IHNhaWJvdWtha3VcIDsKK+eLrOaTheWgtCA+IGRva3VzZW5qb3VcIDsKK+ijvemLvOalrSA+IHNlaWtvdWd5b3VcIDsKK+WFieeGseiyuyA+IGtvdW5ldHN1aGlcIDsKK+aEm+mDt+W/gyA+IGFpa3lvdXNoaW5cIDsKK+eUn+eUo+mrmCA+IHNlaXNhbmRha2FcIDsKK+a1t+awtOa1tCA+IGthaXN1aXlva3VcIDsKK+S7rue5g+W4ryA+IGthcmlob3V0YWlcIDsKK+WPiuesrOiAhSA+IGt5dXVkYWlzaGFcIDsKK+exs+mZuOi7jSA+IGJlaXJpa3VndW5cIDsKK+azqOaWh+WTgSA+IGNodXVtb25oaW5cIDsKK+aBkuW4uOeahCA+IGtvdWpvdXRla2lcIDsKK+S6uuW9ouW4qyA+IG5pbmd5b3VzaGlcIDsKK+amtOaVo+W8viA+IHJ5dXVzYW5kYW5cIDsKK+eZuumbu+apnyA+IGhhdHN1ZGVua2lcIDsKK+aXp+W4guihlyA+IGt5dXVzaGlnYWlcIDsKK+ims+imp+W4rSA+IGthbnJhbnNla2lcIDsKK+Wun+eUqOWMliA+IGppdHN1eW91a2FcIDsKK+iAg+ePvuWtpiA+IGtvdWdlbmdha3VcIDsKK+mWi+WCrOS4rSA+IGthaXNhaWNodXVcIDsKK+eUo+alreeVjCA+IHNhbmd5b3VrYWlcIDsKK+W6tuawkeWKhyA+IHNob21pbmdla2lcIDsKK+S4jeS7leacqyA+IGZ1c2hpbWF0c3VcIDsKK+WRhuawl+iAhSA+IHV0c3VrZW1vbm9cIDsKK+ino+WJluWtpiA+IGthaWJvdWdha3VcIDsKK+S7ruWfi+iRrCA+IGthcmltYWlzb3VcIDsKK+mHo+mBk+WFtyA+IHRzdXJpZG91Z3VcIDsKK+eUn+eUo+mhjSA+IHNlaXNhbmdha3VcIDsKK+aCsuWKh+eahCA+IGhpZ2VraXRla2lcIDsKK+WMl+awt+a0iyA+IGhvcHB5b3V5b3VcIDsKK+WNgeS6jOaciCA+IGp1dW5pZ2F0c3VcIDsKK+WQjOWtpuW5tCA+IGRvdWdha3VuZW5cIDsKK+ePvuS7o+eahCA+IGdlbmRhaXRla2lcIDsKK+WkouWIpOaWrSA+IHl1bWVoYW5kYW5cIDsKK+Wys+WPi+S8miA+IGdha3V5dXVrYWlcIDsKK+WLmOWumuWwuyA+IGthbmpvdWppcmlcIDsKK+WQiOWuv+aJgCA+IGdhc3NodWt1am9cIDsKK+igseaDkeeahCA+IGtvd2FrdXRla2lcIDsKK+epuumWk+i7uCA+IGt1dWthbmppa3VcIDsKK+S4remWk+WxpCA+IGNodXVrYW5zb3VcIDsKK+eJuee0mumFkiA+IHRva2t5dXVzaHVcIDsKK+e9suWQjeWbvSA+IHNob21laWtva3VcIDsKK+a8lOWKh+eahCA+IGVuZ2VraXRla2lcIDsKK+S6pOaIpuWbvSA+IGtvdXNlbmtva3VcIDsKK+WkluW9oueahCA+IGdhaWtlaXRla2lcIDsKK+S4remWk+WtkCA+IGNodXVrYW5zaGlcIDsKK+aVtOa1geWtkCA+IHNlaXJ5dXVzaGlcIDsKK+WEquWFiOagqiA+IHl1dXNlbmthYnVcIDsKK+efreWFteaApSA+IHRhbnBlaWt5dXVcIDsKK+W8geaFtue4niA+IGJlbmtlaWppbWFcIDsKK+eJoeS4uembqiA+IGJvdGFuJyd5dWtpXCA7CivmlpzmoLzmgKcgPiBzaGFrYWt1c2VpXCA7Civpq5jop5LnoLIgPiBrb3VrYWt1aG91XCA7CivmrbTlubTpvaIgPiByZWtpbmVucmVpXCA7CivnhKHliIbliKUgPiBtdWZ1bmJldHN1XCA7CivliLrmiJ/mgKcgPiBzaGlnZWtpc2VpXCA7CivpgJrooYznqI4gPiB0c3V1a291emVpXCA7CivotoXoh6rnhLYgPiBjaG91c2hpemVuXCA7CivliYrmsLfmqZ8gPiBzYWt1aHlvdWtpXCA7CivlpZHntITogIUgPiBrZWl5YWt1c2hhXCA7CivlpJznm5fomasgPiB5b3RvdW11c2hpXCA7CivlronlhajnjocgPiBhbnplbnJpdHN1XCA7Civljp/lrZDnl4cgPiBnZW5zaGlzaG91XCA7Civljp/lrZDnl4UgPiBnZW5zaGlieW91XCA7CivlraPnr4DmhJ8gPiBraXNldHN1a2FuXCA7Civml6fli5jlrpogPiBreXV1a2Fuam91XCA7Civku67oqr/ljbAgPiBrYXJpY2hvdWluXCA7CivkuZfou4ros4MgPiBqb3VzaGFjaGluXCA7CivpmLLomavliaQgPiBib3VjaHV1emFpXCA7CivmoLjmiKbkuokgPiBrYWt1c2Vuc291XCA7Civnmbrlo7Lml6UgPiBoYXRzdWJhaWJpXCA7CivlrprotrPmlbAgPiB0ZWlzb2t1c3V1XCA7Civph4znpZ7mpb0gPiBzYXRva2FndXJhXCA7CivolqnmkanoiosgPiBzYXRzdW1haW1vXCA7Civlp6bpgJrnvaogPiBrYW50c3V1emFpXCA7CivlsbHmnpflraYgPiBzYW5yaW5nYWt1XCA7Civlia/orbDplbcgPiBmdWt1Z2ljaG91XCA7CivoiKrnqbrnl4UgPiBrb3VrdXVieW91XCA7CivmvKLotorpn7MgPiBrYW4nJ2V0c3VvblwgOwor5Ye65YWl5Y+jID4gZGVpcmlndWNoaVwgOwor5Luu57SN56iOID4ga2FyaW5vdXplaVwgOwor57eP5ZCI55qEID4gc291Z291dGVraVwgOwor5Luy6KOB6ICFID4gY2h1dXNhaXNoYVwgOwor5Ye65bGV6ICFID4gc2h1dHRlbnNoYVwgOwor5rS75a2X5L2TID4ga2F0c3VqaXRhaVwgOwor6IKY6YmE56CyID4gaGlqaWRlcHBvdVwgOwor5a++6Lmg5ZywID4gdGFpc2VraWNoaVwgOwor5bu75ryV5qWtID4ga2Fpc291Z3lvdVwgOwor5L2O6Zqc56KNID4gdGVpc2hvdWdhaVwgOwor5q6L5L2Z6aGNID4gemFuJyd5b2dha3VcIDsKK+ayu+eZguazlSA+IGNoaXJ5b3Vob3VcIDsKK+apn+aisOayuSA+IGtpa2FpYWJ1cmFcIDsKK+iHqueZuuaApyA+IGppaGF0c3VzZWlcIDsKK+S/oeWPt+aJiyA+IHNoaW5nb3VzaHVcIDsKK+agg+acqOecjCA+IHRvY2hpZ2lrZW5cIDsKK+iqv+afu+elqCA+IGNob3VzYWh5b3VcIDsKK+e3qOW5tOWPsiA+IGhlbicnbmVuc2hpXCA7CivlnJ/nnYDmsJEgPiBkb2NoYWt1bWluXCA7CivpgLLlkYjmnKwgPiBzaGludGVpYm9uXCA7CivnkZ7lrp3nq6AgPiB6dWlob3VzaG91XCA7CivokL3pgbjogIUgPiByYWt1c2Vuc2hhXCA7CivlhoXli5jlrpogPiB1Y2hpa2Fuam91XCA7CivlpYnntI3poY0gPiBob3Vub3VnYWt1XCA7CivntLDog57lraYgPiBzYWlib3VnYWt1XCA7Civmnpzlrp/lupcgPiBrYWppdHN1dGVuXCA7Civlrp/mmYLplpMgPiBqaXRzdWppa2FuXCA7CivlhaXmvIHmqKkgPiBueXV1Z3lva2VuXCA7CivokZfkvZzogIUgPiBjaG9zYWt1c2hhXCA7CivohLHohILkubMgPiBkYXNzaGlueXV1XCA7Civnpa3npYDmlpkgPiBzYWlzaGlyeW91XCA7CivlhoXlvIHmhbYgPiB1Y2hpYmVua2VpXCA7CivlkJHkuIrlv4MgPiBrb3Vqb3VzaGluXCA7CivniafnvorogIUgPiBib2t1eW91c2hhXCA7Civlj4LoprPkurogPiBzYW5rYW4nJ25pblwgOwor5Z2H5LiA5YyWID4ga2luJydpdHN1a2FcIDsKK+WFseWQjOiAhSA+IGt5b3Vkb3VzaGFcIDsKK+aYjuacneS9kyA+IG1pbmNob3V0YWlcIDsKK+WhqeiDoeakkiA+IHNoaW9rb3Nob3VcIDsKK+iAkOmch+aApyA+IHRhaXNoaW5zZWlcIDsKK+aWsOilv+iYrSA+IG55xatqxKtyYW5kb1wgOwor5LiA5p6a6LKdID4gaWNoaW1haWdhaVwgOwor5Lmx5pq06ICFID4gcmFuYm91bW9ub1wgOwor5ZCE5LiA6YOoID4ga2FrdWljaGlidVwgOwor6Zmw5pel5ZCRID4ga2FnZWhpbmF0YVwgOwor57Sr5a645q6/ID4gc2hpc2hpbmRlblwgOwor5bm96ZyK5qCqID4geXV1cmVpa2FidVwgOwor5omA5b6X6ICFID4gc2hvdG9rdXNoYVwgOwor6LuN5LqL5YqbID4gZ3VuamlyeW9rdVwgOwor5Yud6LKg5LqLID4gc2hvdWJ1Z290b1wgOwor57Wm5rC06LuKID4ga3l1dXN1aXNoYVwgOwor57Sw6IOe5aOBID4gc2FpYm91aGVraVwgOwor5Y+v6YCG5oCnID4ga2FneWFrdXNlaVwgOwor5oe46LOe6YeRID4ga2Vuc2hvdWtpblwgOwor5pqm5bm06b2iID4gcmVraW5lbnJlaVwgOwor5ZCr5Ze96JasID4gZ2Fuc291eWFrdVwgOwor6KaL5a2m6ICFID4ga2VuZ2FrdXNoYVwgOwor5YSq5YWI5bitID4geXV1c2Vuc2VraVwgOwor5bCR5pWw6ICFID4gc2hvdXN1dXNoYVwgOwor5YWx5ZCM57eaID4ga3lvdWRvdXNlblwgOwor5Y+K56ys54K5ID4ga3l1dWRhaXRlblwgOwor5YiG6aGe6KGoID4gYnVucnVpaHlvdVwgOwor6L+R55y86Y+hID4ga2luZ2Fua3lvdVwgOwor6Zai5pWw5pePID4ga2Fuc3V1em9rdVwgOwor55S65p2R5Yi2ID4gY2hvdXNvbnNlaVwgOwor5qW15oKq5Lq6ID4gZ29rdWFrdW5pblwgOwor5byV5Y+X5Lq6ID4gaGlraXVrZW5pblwgOwor57eo5bm05L2TID4gaGVuJyduZW50YWlcIDsKK+S7o+mhmOS6uiA+IGRhaWdhbicnbmluXCA7CivmnInlipvppqwgPiB5dXVyeW9rdWJhXCA7CivpmaTpm6rou4ogPiBqb3NldHN1c2hhXCA7CivlpKflr6npmaIgPiBkYWlzaGluJydpblwgOwor56iO6Zai6ZW3ID4gemVpa2FuY2hvdVwgOwor5Lit6ZaT5L2TID4gY2h1dWthbnRhaVwgOwor5ruL6aSK54mpID4gaml5b3VidXRzdVwgOwor5Lmd5bel5aSnID4ga3l1dWtvdWRhaVwgOwor5Yqg5rm/5ZmoID4ga2FzaGl0c3VraVwgOwor5paw6KiC54mIID4gc2hpbnRlaWJhblwgOwor5Y2B5Lq65YqbID4ganV1bmlucmlraVwgOwor5LiL5a6/5Lq6ID4gZ2VzaHVrdW5pblwgOwor5aSn5qWt54mpID4gb293YXphbW9ub1wgOwor5YG06Z2i6KazID4gc29rdW1lbmthblwgOwor54++6LGh55WMID4gZ2Vuc2hvdWthaVwgOwor6L+96Kmm6aiTID4gdHN1aXNoaWtlblwgOwor5YWI5aSp55qEID4gc2VudGVudGVraVwgOwor5bu656+J5a62ID4ga2VuY2hpa3VrYVwgOwor5rC06YeP6KiIID4gc3VpcnlvdWtlaVwgOwor6Kaq6KGb6ZqKID4gc2hpbicnZWl0YWlcIDsKK+WFiOWkqeeXhSA+IHNlbnRlbmJ5b3VcIDsKK+e5geauluacnyA+IGhhbnNob2t1a2lcIDsKK+iIueW5vemciiA+IGZ1bmF5dXVyZWlcIDsKK+awkeaXj+aApyA+IG1pbnpva3VzZWlcIDsKK+W+oeS6huaJvyA+IGdvcnlvdXNob3VcIDsKK+awtOibh+W6pyA+IG1penVoZWJpemFcIDsKK+aLneWklueahCA+IGhhaWdhaXRla2lcIDsKK+WIuuaIn+WJpCA+IHNoaWdla2l6YWlcIDsKK+aJgOW+l+eojiA+IHNob3Rva3V6ZWlcIDsKK+ajieWun+ayuSA+IG1lbmppdHN1eXVcIDsKK+WLpOe2muiAhSA+IGtpbnpva3VzaGFcIDsKK+Wkqeeah+WItiA+IHRlbicnbm91c2VpXCA7CivllqvnhZnou4ogPiBraXRzdWVuc2hhXCA7Civlrp/nv5LnlJ8gPiBqaXNzaHV1c2VpXCA7CivkvZPns7vnmoQgPiB0YWlrZWl0ZWtpXCA7CivpgYroiIjnqI4gPiB5dXVreW91emVpXCA7Civkv67pgZPlo6sgPiBzaHV1ZG91c2hpXCA7CivmlrDmlZnlvpIgPiBzaGlua3lvdXRvXCA7CivljZropqfkvJogPiBoYWt1cmFua2FpXCA7CivliY3nmbvpjLIgPiB6ZW50b3Vyb2t1XCA7CivmnbHmtIvlraYgPiB0b3V5b3VnYWt1XCA7CivlpKflsIbou40gPiBkYWlzaG91Z3VuXCA7Civkv6Hlj7floZQgPiBzaGluZ291dG91XCA7Civljp/lrZDmoLggPiBnZW5zaGlrYWt1XCA7CivlpKflhazlm70gPiB0YWlrb3Vrb2t1XCA7CivkvJHmga/miYAgPiBreXV1c29rdWpvXCA7Civpq5jpmpzlrrMgPiBrb3VzaG91Z2FpXCA7CivmsYLpgZPogIUgPiBreXV1ZG91c2hhXCA7CivlpKnlrojplqMgPiB0ZW5zaHVrYWt1XCA7Civkub7nianlsYsgPiBrYW5idXRzdXlhXCA7CivmsLTpiYTnoLIgPiBtaXp1ZGVwcG91XCA7CivljYPkuInlsYsgPiBzZW5taXRzdXlhXCA7CivlhaXmuK/nqI4gPiBueXV1a291emVpXCA7CivpioDooYzmpa0gPiBnaW5rb3VneW91XCA7CivkvJHms4rmiYAgPiBreXV1aGFrdWpvXCA7Civkurrlt6XnmoQgPiBqaW5rb3V0ZWtpXCA7CivogbToppbogIUgPiBjaG91c2hpc2hhXCA7CivkuKHlm73oqp4gPiByeW91a29rdWdvXCA7Civpq5jngKzoiJ8gPiB0YWthc2VidW5lXCA7CivntYTnuZTlkI0gPiBzb3NoaWtpbWVpXCA7CivlkIzmnJ/lvI8gPiBkb3VraXNoaWtpXCA7CivlpKfohbjoj4wgPiBkYWljaG91a2luXCA7CivljYrni4LkubEgPiBoYW5reW91cmFuXCA7CivotIXmsqLlk4EgPiB6ZWl0YWt1aGluXCA7CivkuIDmnKzpgZMgPiBpcHBvbm1pY2hpXCA7CivliKnmvaTnjocgPiByaWp1bnJpdHN1XCA7Civov6vlrrPogIUgPiBoYWt1Z2Fpc2hhXCA7CivlpKfmpbXmrr8gPiBkYWlnb2t1ZGVuXCA7Civph43ph4/mhJ8gPiBqdXVyeW91a2FuXCA7Civnvo7lrabnmoQgPiBiaWdha3V0ZWtpXCA7CivlhpnnlJ/luLMgPiBzaGFzZWljaG91XCA7Civlu4Pmo4TniakgPiBoYWlraWJ1dHN1XCA7Civpm7vno4Hnn7MgPiBkZW5qaXNoYWt1XCA7CivlhpnnlJ/luJYgPiBzaGFzZWljaG91XCA7CivpgKDllrbniakgPiB6b3VlaWJ1dHN1XCA7CivmioDooZPpnaIgPiBnaWp1dHN1bWVuXCA7Civku5Xnva7ogIUgPiBzaGlva2ltb25vXCA7CivmmYLliLvooaggPiBqaWtva3VoeW91XCA7Civmr5Lnp5HlraYgPiBkb2t1a2FnYWt1XCA7Civnm7TooYzkvr8gPiBjaG9ra291YmluXCA7CivmiYvlhoXogbcgPiB0ZW5haXNob2t1XCA7Civml4XooYzlhYggPiByeW9rb3VzYWtpXCA7CivmoLjlvL7poK0gPiBrYWt1ZGFudG91XCA7Civnqbrpm4blkIggPiBrdXVzaHV1Z291XCA7CivnibnoqLHmlpkgPiB0b2treW9yeW91XCA7CivkuLvmg4XnmoQgPiBzaHVqb3V0ZWtpXCA7Civmm7TooaPlrqQgPiBrb3Vpc2hpdHN1XCA7CivkvJrluK3ohrMgPiBrYWlzZWtpemVuXCA7CivljYPkuIDlpJwgPiBzZW4nJ2ljaGl5YVwgOwor55yf55Sw57SQID4gc2FuYWRhaGltb1wgOwor6YGT5a2m6ICFID4gZG91Z2FrdXNoYVwgOwor5o+u55m65oCnID4ga2loYXRzdXNlaVwgOwor5Ye66LOH6YeRID4gc2h1c3NoaWtpblwgOwor54mn576K54qsID4gYm9rdXlvdWtlblwgOwor6JK455WZ5rC0ID4gam91cnl1dXN1aVwgOwor562J5Zyn57eaID4gdG91YXRzdXNlblwgOwor5q+S5ZGz5b25ID4gZG9rdW1peWFrdVwgOwor5YSq6Imv5bqXID4geXV1cnlvdXRlblwgOwor5YaF6Iq46ICFID4gdWNoaWdlaXNoYVwgOwor5oKq6YGU6ICFID4gd2FydWRhc3NoYVwgOwor5LiJ6Z2i6Y+hID4gc2FubWVua3lvdVwgOwor54u46JWO6bqmID4gdGFudWtpc29iYVwgOwor6KOP5pu45Lq6ID4gdXJhZ2FraW5pblwgOwor54m55aSn5Y+3ID4gdG9rdWRhaWdvdVwgOwor57WE57mU5L2TID4gc29zaGlraXRhaVwgOwor54++5a6f5YyWID4gZ2Vuaml0c3VrYVwgOwor5aSa55uu55qEID4gdGFtb2t1dGVraVwgOwor5bCG5p2l5oCnID4gc2hvdXJhaXNlaVwgOwor5LiA5Lq66IW5ID4gaGl0b3JpYmFyYVwgOwor55S75LiA5YyWID4ga2FrdWl0c3VrYVwgOwor6YeN6YeR5bGeID4ganV1a2luem9rdVwgOwor56uL5Lya5Lq6ID4gdGFjaGlhaW5pblwgOwor5q205Y+y5LiKID4gcmVraXNoaWpvdVwgOwor6KO96YmE5omAID4gc2VpdGV0c3Vqb1wgOwor5LiA5Lq66ICFID4gaGl0b3JpbW9ub1wgOwor6YGu5pat5aOBID4gc2hhZGFucGVraVwgOwor54m55aOy5aC0ID4gdG9rdWJhaWpvdVwgOwor5ZGK55+l5p2/ID4ga29rdWNoaWJhblwgOwor5rKW56mN5pyfID4gY2h1dXNla2lraVwgOwor5Luu6KiY5YWlID4ga2FyaWtpbnl1dVwgOwor5L+u6YGT5LyaID4gc2h1dWRvdWthaVwgOwor5qGf5qKv5a2QID4gc2FuYmFzaGlnb1wgOwor55Wq5Y+35pytID4gYmFuZ291ZnVkYVwgOwor5bCR5pWw54K5ID4gc2hvdXN1dXRlblwgOwor5bGx54yr5bqnID4geWFtYW5la296YVwgOwor5a+d5Y+w5Yi4ID4gc2hpbmRhaWtlblwgOwor5rC06YqA5p+xID4gc3VpZ2luY2h1dVwgOwor6LWk5rW35LqAID4gYWthdW1pZ2FtZVwgOwor6aqo55u45a2mID4ga29zc291Z2FrdVwgOwor5aSn6Ie85q2vID4gZGFpa3l1dXNoaVwgOwor5rCR5peP5Y+yID4gbWluem9rdXNoaVwgOwor5LqU56ic6YOtID4gZ29yeW91a2FrdVwgOwor5omB5bmz6LazID4gaGVucGVpc29rdVwgOwor5aWR57SE5pu4ID4ga2VpeWFrdXNob1wgOwor5b2x5rOV5birID4ga2FnZWJvdXNoaVwgOwor6YeR5Ymb55+zID4ga29uZ291c2VraVwgOwor54m56Kix5bqBID4gdG9ra3lvY2hvdVwgOwor54m55aOy5ZOBID4gdG9rdWJhaWhpblwgOwor5LiL6KuL6LKgID4gc2hpdGF1a2VvaVwgOwor5Y+O56mr5pyfID4gc2h1dWtha3VraVwgOwor6Zm45oim6ZqKID4gcmlrdXNlbnRhaVwgOwor57Wm5rC0566hID4ga3l1dXN1aWthblwgOwor56We56eY55qEID4gc2hpbnBpdGVraVwgOwor6YeN6YeP5Zm4ID4ganV1cnlvdXRvblwgOwor5Y+O56mr5pmCID4gc2h1dWtha3VqaVwgOwor6auY5Zyn57iuID4ga291YXNzaHVrdVwgOwor6JGX5L2c5qipID4gY2hvc2FrdWtlblwgOwor5Luj5Z+36KGMID4gZGFpc2hpa2tvdVwgOwor6ZmQ5a6a55qEID4gZ2VudGVpdGVraVwgOwor6auY5Zyn57eaID4ga291YXRzdXNlblwgOwor5Luu5o6h55SoID4ga2FyaXNhaXlvdVwgOwor5pS56Z2p6ICFID4ga2Fpa2FrdXNoYVwgOwor5Zyw5LiL6YmEID4gY2hpa2F0ZXRzdVwgOwor5bCK546L5YWaID4gc29uJydub3V0b3VcIDsKK+WWq+eFmeiAhSA+IGtpdHN1ZW5zaGFcIDsKK+Wcn+S/temamyA+IGRvaHlvdWdpd2FcIDsKK+Wkp+WxseeMqyA+IG9veWFtYW5la29cIDsKK+iIquepuuWtpiA+IGtvdWt1dWdha3VcIDsKK+WOn+adkOaWmSA+IGdlbnphaXJ5b3VcIDsKK+WHuueUo+aVsCA+IHNodXNzYW5zdXVcIDsKK+ashOWPgueFpyA+IHJhbnNhbnNob3VcIDsKK+WHuueUn+aVsCA+IHNodXNzZWlzdXVcIDsKK+WuiOWCmeeOhyA+IHNodWJpcml0c3VcIDsKK+aWh+iKuOWtpiA+IGJ1bmdlaWdha3VcIDsKK+e0heWGoOmzpSA+IGtvdWthbmNob3VcIDsKK+WIneWgtOaJgCA+IGhhdHN1YmFzaG9cIDsKK+S5s+eKtua2siA+IG55dXVqb3Vla2lcIDsKK+WNmOWdkOW8jyA+IHRhbnphc2hpa2lcIDsKK+WcqOeVmeawkSA+IHphaXJ5dXVtaW5cIDsKK+e+jumhlOihkyA+IGJpZ2FuanV0c3VcIDsKK+eFruayuOWZqCA+IHNoYWZ1dHN1a2lcIDsKK+WEquiJr+WTgSA+IHl1dXJ5b3VoaW5cIDsKK+aIpuihk+WutiA+IHNlbmp1dHN1a2FcIDsKK+S7leS6i+W4qyA+IHNoaWdvdG9zaGlcIDsKK+eEoeeUn+eJqSA+IG11c2VpYnV0c3VcIDsKK+mbkeaWh+WutiA+IHphdHN1YnVua2FcIDsKK+WQjOiqv+iAhSA+IGRvdWNob3VzaGFcIDsKK+S6iOe0hOW4rSA+IHlveWFrdXNla2lcIDsKK+mHkeefs+aWhyA+IGtpbnNla2lidW5cIDsKK+e3tOe/kuiIuSA+IHJlbnNodXVzZW5cIDsKK+a4rOa3seapnyA+IHNva3VzaGlua2lcIDsKK+eZuuimi+aWmSA+IGhha2tlbnJ5b3VcIDsKK+ihkuWtpuiAhSA+IGdlbmdha3VzaGFcIDsKK+Wwj+aVsOeCuSA+IHNob3VzdXV0ZW5cIDsKK+W8leWHuueJqSA+IGhpa2lkZW1vbm9cIDsKK+mWi+aetuW8jyA+IGthaWthc2hpa2lcIDsKK+WMheWQq+eahCA+IGhvdWdhbnRla2lcIDsKK+WQiOWlj+iqvyA+IGdhc3NvdWNob3VcIDsKK+WFseWSjOWbvSA+IGt5b3V3YWtva3VcIDsKK+WvqeWIpOWToSA+IHNoaW5wYW4nJ2luXCA7CivmuIXmnJ3kvZMgPiBzZWljaG91dGFpXCA7Civooajml6XmnKwgPiBvbW90ZW5paG9uXCA7Civnj77ku6PliocgPiBnZW5kYWlnZWtpXCA7CivljbPlirnolqwgPiBzb2trb3V5YWt1XCA7Civml6XpgYvli5UgPiBuaWNoaXVuZG91XCA7Civogbfpmo7liLYgPiBzaG9ra2Fpc2VpXCA7CivliY3ou4rou7ggPiB6ZW5zaGFqaWt1XCA7CivkuIrmmIfnt5ogPiBqb3VzaG91c2VuXCA7CivmqZ/lr4bmgKcgPiBraW1pdHN1c2VpXCA7CivmmI7ntLDooaggPiBtZWlzYWloeW91XCA7Civkv67ovp7lraYgPiBzaHV1amlnYWt1XCA7CivlkI3oqonogbcgPiBtZWl5b3Nob2t1XCA7Civlm5vlpKnnjosgPiBzaGl0ZW4nJ25vdVwgOwor5Lq655u45a2mID4gbmluc291Z2FrdVwgOwor5o6I5qWt5paZID4ganVneW91cnlvdVwgOwor6Ymb5Lit5q+SID4gZW5jaHV1ZG9rdVwgOwor5rK755mC5LujID4gY2hpcnlvdWRhaVwgOwor5biv6buE6ImyID4gdGFpb3VzaG9rdVwgOwor6LW35bel5byPID4ga2lrb3VzaGlraVwgOwor5Y+W5b6X6ICFID4gc2h1dG9rdXNoYVwgOwor5oKq5bmz562JID4gYWt1YnlvdWRvdVwgOwor5pyx5a2Q5a2mID4gc2h1c2hpZ2FrdVwgOwor6Lu96YeR5bGeID4ga2Vpa2luem9rdVwgOwor5YGl6ISa5a62ID4ga2Vua3lha3VrYVwgOwor5YWI6Kaa6ICFID4gc2Vua2FrdXNoYVwgOwor5LiN5pW06ISIID4gZnVzZWlteWFrdVwgOwor5Luy6ZaT5YaFID4gbmFrYW1hdWNoaVwgOwor5bCG5p2l5YOPID4gc2hvdXJhaXpvdVwgOwor5L2O5pWZ5LyaID4gdGVpa3lvdWthaVwgOwor5oCn6KGd5YuVID4gc2Vpc2hvdWRvdVwgOwor57SZ6Iqd5bGFID4ga2FtaXNoaWJhaVwgOwor5L2c5oiQ6ICFID4gc2FrdXNlaXNoYVwgOwor5Zue5pil5YmkID4ga2Fpc2h1bnphaVwgOwor5raI6LK76YePID4gc2hvdWhpcnlvdVwgOwor5Lim6KO95ZOBID4gbmFtaXNlaWhpblwgOwor5bCC5pyJ5qipID4gc2VuJyd5dXVrZW5cIDsKK+S5l+mmrOmdtCA+IGpvdWJhZ3V0c3VcIDsKK+WHuuizh+iAhSA+IHNodXNzaGlzaGFcIDsKK+WMluefs+WtpiA+IGthc2VraWdha3VcIDsKK+iBtOiouuWZqCA+IGNob3VzaGlua2lcIDsKK+eMqeeMqeighSA+IHNob3Vqb3ViYWVcIDsKK+S5seaVsOihqCA+IHJhbnN1dWh5b3VcIDsKK+Wfi+eri+WcsCA+IHVtZXRhdGVjaGlcIDsKK+WFseWQjOaApyA+IGt5b3Vkb3VzZWlcIDsKK+eGn+e3tOiAhSA+IGp1a3VyZW5zaGFcIDsKK+adseWMl+adsSA+IHRvdWhva3V0b3VcIDsKK+eUn+S9k+iGnCA+IHNlaXRhaW1ha3VcIDsKK+awkeihhumnhSA+IG1pbnNodXVla2lcIDsKK+Wuh+WumemjnyA+IHVjaHV1c2hva3VcIDsKK+aXpeWFiea1tCA+IG5pa2tvdXlva3VcIDsKK+S7o+aVsOWtpiA+IGRhaXN1dWdha3VcIDsKK+iDveW9ueiAhSA+IG5vdXlha3VzaGFcIDsKK+ayluepjeWcnyA+IGNodXVzZWtpZG9cIDsKK+W8leWKm+WcjyA+IGlucnlva3VrZW5cIDsKK+S4reaKmOW4vSA+IG5ha2FvcmVib3VcIDsKK+mdnua0u+WLlSA+IGhpa2F0c3Vkb3VcIDsKK+S4jeWni+acqyA+IGZ1c2hpbWF0c3VcIDsKK+acieWKn+eroCA+IHl1dWtvdXNob3VcIDsKK+aKleelqOiAhSA+IHRvdWh5b3VzaGFcIDsKK+aUu+aSg+maiiA+IGtvdWdla2l0YWlcIDsKK+WgseWRiuiAhSA+IGhvdWtva3VzaGFcIDsKK+eZuuihqOiAhSA+IGhhcHB5b3VzaGFcIDsKK+aDo+euoemgmCA+IHNvdWthbnJ5b3VcIDsKK+mBuOaKnuiCoiA+IHNlbnRha3VzaGlcIDsKK+aKgOihk+iAhSA+IGdpanV0c3VzaGFcIDsKK+mAsuatqeeahCA+IHNoaW5wb3Rla2lcIDsKK+Wfi+iUtemHjyA+IG1haXpvdXJ5b3VcIDsKK+S7leS6i+WPsCA+IHNoaWdvdG9kYWlcIDsKK+aAp+aIkOeGnyA+IHNlaXNlaWp1a3VcIDsKK+awuOW5tOmWkyA+IG5hZ2FuZW5rYW5cIDsKK+iDjOaVmeiAhSA+IGhhaWt5b3VzaGFcIDsKK+aJi+W3pealrSA+IHNodWtvdWd5b3VcIDsKK+eUs+iri+iAhSA+IHNoaW5zZWlzaGFcIDsKK+a8lOWHuuWutiA+IGVuc2h1dHN1a2FcIDsKK+S4gOWuieW/gyA+IGhpdG9hbnNoaW5cIDsKK+ihjOalveWcsCA+IGtvdXJha3VjaGlcIDsKK+mjn+euoeazlSA+IHNob2trYW5ob3VcIDsKK+ims+a4rOiIuSA+IGthbnNva3VzZW5cIDsKK+ertuWQiOiAhSA+IGt5b3Vnb3VzaGFcIDsKK+WBpeiEs+WJpCA+IGtlbicnbm91emFpXCA7Civph5HliZvmnZYgPiBrb25nb3VkenVlXCA7CivorJ3ogonnpa0gPiBzaGFuaWt1c2FpXCA7CivopIflhpnntJkgPiBmdWt1c2hhc2hpXCA7CivpgLHliIroqowgPiBzaHV1a2Fuc2hpXCA7Civlj47nqI7miYAgPiBzaHV1emVpc2hvXCA7CivpgJrooYzkurogPiB0c3V1a291bmluXCA7CivpkZHlrprmlpkgPiBrYW50ZWlyeW91XCA7CivlkIzkuIDkurogPiBkb3VpdHN1bmluXCA7Civpq5jmva7nt5ogPiBrb3VjaG91c2VuXCA7CivmtbjpgI/mgKcgPiBzaGludG91c2VpXCA7CivooYDoibLntKAgPiBrZXNzaGlraXNvXCA7CivohLPpnIfnm6ogPiBub3VzaGludG91XCA7Civos4PosrjkurogPiBjaGludGFpbmluXCA7Civlh7rnlJ/lnLAgPiBzaHVzc2VpY2hpXCA7Civnt7Tnv5LnlJ8gPiByZW5zaHV1c2VpXCA7CivluqfluK3ooaggPiB6YXNla2loeW91XCA7CivoprPmuKzogIUgPiBrYW5zb2t1c2hhXCA7CivlnLDnjYTogLMgPiBqaWdva3VtaW1pXCA7Civpq5jntJrlk4EgPiBrb3VreXV1aGluXCA7CivpgaDml6XngrkgPiBlbmppdHN1dGVuXCA7CivmvKLlrabogIUgPiBrYW5nYWt1c2hhXCA7CivniafloLTps6UgPiBtYWtpYmF0b3JpXCA7CivmrbvliJHlm5ogPiBzaGlrZWlzaHV1XCA7CivmsLfnoILns5YgPiBrb29yaXphdG91XCA7CivlhbHokZfogIUgPiBreW91Y2hvc2hhXCA7Civpqqjpq4Tngo4gPiBrb3RzdXp1aWVuXCA7CivmlL7niaflnLAgPiBob3Vib2t1Y2hpXCA7Civnmb3ooYDnkIMgPiBoYWtrZWtreXV1XCA7CivmurblsqnmtYEgPiB5b3VnYW5yeXV1XCA7CivmrbvlgrfogIUgPiBzaGlzaG91c2hhXCA7CivlvI/pg6jlrpggPiBzaGlraWJ1a2FuXCA7CivohIblvLHmgKcgPiB6ZWlqYWt1c2VpXCA7CivntabmsLTmoJMgPiBreXV1c3Vpc2VuXCA7CivoprPmuKzntrIgPiBrYW5zb2t1bW91XCA7CivmgKXooYzliLggPiBreXV1a291a2VuXCA7CivlvqHpnq3mkrsgPiBnb2JlbnRhdHN1XCA7Civnt5HljYHlrZcgPiByeW9rdWp1dWppXCA7CivmtYHnt5rlvaIgPiByeXV1c2Vua2VpXCA7Civljp/lp4vnmoQgPiBnZW5zaGl0ZWtpXCA7CivniafnvorlnLAgPiBib2t1eW91Y2hpXCA7Civln7znjonnnIwgPiBzYWl0YW1ha2VuXCA7CivmlLvmkoPou40gPiBrb3VnZWtpZ3VuXCA7CivmlbXoiabpmoogPiB0ZWtpa2FudGFpXCA7Civpo5/lmajmo5ogPiBzaG9ra2lkYW5hXCA7CivkvJ3pgIHlhYggPiBkZW5zb3VzYWtpXCA7CivnqLLojbfprqggPiBpbmFyaXp1c2hpXCA7Civlvqnoqr/lmaggPiBmdWt1Y2hvdWtpXCA7CivlpKfnl4XkurogPiBkYWlieW91bmluXCA7CivlhbHlirTogIUgPiBreW91cm91c2hhXCA7Civnl4Xljp/oj4wgPiBieW91Z2Vua2luXCA7CivmnJ3prq7kurogPiBjaG91c2VuamluXCA7CivlhKrotormqKkgPiB5dXVldHN1a2VuXCA7CivkuIDkurrml4UgPiBoaXRvcml0YWJpXCA7Civmloflraboq5YgPiBidW5nYWt1cm9uXCA7CivogonmhJ/nmoQgPiBuaWtrYW50ZWtpXCA7CivmgKXooYzkvr8gPiBreXV1a291YmluXCA7CivnlLLkuZnkuJkgPiBrb3VvdHN1aGVpXCA7CivkuK3ms6LplbcgPiBjaHV1aGFjaG91XCA7CivnhKHogbfogIUgPiBtdXNob2t1c2hhXCA7Civlj47nqI7lrpggPiBzaHV1emVpa2FuXCA7Civlrabpg6jplbcgPiBnYWt1YnVjaG91XCA7CivotoXmoLzlrZAgPiBjaG91a291c2hpXCA7Civpl4rokYnmqLkgPiBrYXRzdXlvdWp1XCA7CivlhbHps7TogIUgPiBreW91bWVpc2hhXCA7CivnhKHkvZPniakgPiBtdXRhaWJ1dHN1XCA7Civmta7msJflpbMgPiB1d2FraW9uJyduYVwgOwor55m756uc6ZaAID4gdG91cnl1dW1vblwgOwor5LiA576p55qEID4gaWNoaWdpdGVraVwgOwor56ys5LiA5p2hID4gZGFpaWNoaWpvdVwgOwor5YaF55So6JasID4gbmFpeW91eWFrdVwgOwor5bqn5qiZ6Lu4ID4gemFoeW91amlrdVwgOwor562W5rqQ5ZywID4gc2FrdWdlbmNoaVwgOwor5YSq55Sf5a2mID4geXV1c2VpZ2FrdVwgOwor5YiG6ZqK6ZW3ID4gYnVudGFpY2hvdVwgOwor5YmN5YCf6YeRID4gemVuc2hha2tpblwgOwor5Luy6KOB5Lq6ID4gY2h1dXNhaW5pblwgOwor6LWk6YGT56WtID4gc2VraWRvdXNhaVwgOwor5p2x5YyX5aSnID4gdG91aG9rdWRhaVwgOwor5a6f6Ki86KuWID4gamlzc2hvdXJvblwgOwor5LiN54eD54mpID4gZnVuZW5idXRzdVwgOwor5YWo5by36aKoID4gemVua3lvdWZ1dVwgOwor5bCP5aSp5ZywID4gc2hvdXRlbmNoaVwgOwor6YWi6YW45aGpID4gc2FrdXNhbicnZW5cIDsKK+i2hemfs+mAnyA+IGNob3VvbnNva3VcIDsKK+WvhuWRiuiAhSA+IG1pa2tva3VzaGFcIDsKK+WIhumhnuWtpiA+IGJ1bnJ1aWdha3VcIDsKK+W9q+mHkeW4qyA+IGNob3VraW5zaGlcIDsKK+WFsemAmuiqniA+IGt5b3V0c3V1Z29cIDsKK+elnuenmOWtpiA+IHNoaW5oaWdha3VcIDsKK+S4gOacrOapiyA+IGlwcG9uYmFzaGlcIDsKK+esrOS6lOWIlyA+IGRhaWdvcmV0c3VcIDsKK+e0s+Wjq+eUqCA+IHNoaW5zaGl5b3VcIDsKK+S4gOaemuWyqSA+IGljaGltYWlpd2FcIDsKK+a1gee3muWeiyA+IHJ5dXVzZW5rZWlcIDsKK+S4gOacrOanjSA+IGlwcG9uJyd5YXJpXCA7Civlm7Dnqq7ogIUgPiBrb25reXV1c2hhXCA7CivlhqzmlK/luqYgPiBmdXl1aml0YWt1XCA7CivlhbHlkIzkvZMgPiBreW91ZG91dGFpXCA7CivlsJHmlbDlhZogPiBzaG91c3V1dG91XCA7CivlhajmsJHooYYgPiB6ZW5taW5zaHV1XCA7Civnm7jlj43nmoQgPiBzb3VoYW50ZWtpXCA7Civmta7pgYrniakgPiBmdXl1dWJ1dHN1XCA7CivlirTlg43nnIEgPiByb3Vkb3VzaG91XCA7Civlravmga/lrZAgPiBtYWdvbXVzdWtvXCA7CivlirTlg43nm7ggPiByb3Vkb3VzaG91XCA7CivkvpvppIrloZogPiBrdXlvdWR6dWthXCA7Civpp4bpgJDoiaYgPiBrdWNoaWt1a2FuXCA7CivntKDkurrnm64gPiBzaGlyb3V0b21lXCA7CivpgLHliIrntJkgPiBzaHV1a2Fuc2hpXCA7Civnsr7ogonlupcgPiBzZWluaWt1dGVuXCA7Civlj4zmrrvpoZ4gPiBzb3VrYWt1cnVpXCA7CivlpajlirHph5EgPiBzaG91cmVpa2luXCA7CivkuI3nsr7pq60gPiBidXNob3VoaWdlXCA7Civog73li5XnmoQgPiBub3Vkb3V0ZWtpXCA7CivntITljYrliIYgPiB5YWt1aGFuYnVuXCA7CivntrLmvIHmpa0gPiBhbWlneW9neW91XCA7Civmjojmpa3kuK0gPiBqdWd5b3VjaHV1XCA7Civlsqnnn7PlnI8gPiBnYW5zZWtpa2VuXCA7Civlvbnnm67mn4QgPiB5YWt1bWVnYXJhXCA7CivkuIDmnKzmnb4gPiBpcHBvbm1hdHN1XCA7CivloannhY7ppIUgPiBzaGlvc2VuYmVpXCA7CivkuI3lpoLluLAgPiBob3RvdG9naXN1XCA7CivljZfjgIXopb8gPiBuYW4nJ25hbnNlaVwgOwor5Zyo5a2m55SfID4gemFpZ2FrdXNlaVwgOwor5YmD5YiA56ClID4ga2FtaXNvcmlkb1wgOwor5aSa55m65oCnID4gdGFoYXRzdXNlaVwgOwor5YSq6LaK5oSfID4geXV1ZXRzdWthblwgOwor54m557Sa5ZOBID4gdG9ra3l1dWhpblwgOwor5LiJ6KeS6YyQID4gc2Fua2FrdXN1aVwgOwor5b+F5rK76JasID4gaGl0Y2hpeWFrdVwgOwor5Y2Y5oyv5YuVID4gdGFuc2hpbmRvdVwgOwor5Li75by16ICFID4gc2h1Y2hvdXNoYVwgOwor5o6S5LuW5b6LID4gaGFpdGFyaXRzdVwgOwor5YSq6LaK5oCnID4geXV1ZXRzdXNlaVwgOwor5b2i5oWL5a2mID4ga2VpdGFpZ2FrdVwgOwor5bel5qWt55WMID4ga291Z3lvdWthaVwgOwor5bel5qWt55SoID4ga291Z3lvdXlvdVwgOwor56mN5Lmx6ZuyID4gc2VraXJhbicndW5cIDsKK+aLneims+aWmSA+IGhhaWthbnJ5b3VcIDsKK+mgmOa1t+e3miA+IHJ5b3VrYWlzZW5cIDsKK+inkuWIhuaVoyA+IGtha3VidW5zYW5cIDsKK+S4jeimi+itmCA+IGZ1a2Vuc2hpa2lcIDsKK+Wkp+WtpueUnyA+IGRhaWdha3VzZWlcIDsKK+acgOWMl+erryA+IHNhaWhva3V0YW5cIDsKK+ihqOmdouS4iiA+IGh5b3VtZW5qb3VcIDsKK+a/g+ehq+mFuCA+IG5vdXJ5dXVzYW5cIDsKK+awtOWMlueJqSA+IHN1aWthYnV0c3VcIDsKK+i2heS8neWwjiA+IGNob3VkZW5kb3VcIDsKK+aWh+WtpuiAhSA+IGJ1bmdha3VzaGFcIDsKK+eyl+ebrumbqiA+IHphcmFtZXl1a2lcIDsKK+WPsuWtpuiAhSA+IHNoaWdha3VzaGFcIDsKK+Wbveawkei7jSA+IGtva3VtaW5ndW5cIDsKK+WSgOWavOetiyA+IHNvc2hha3VraW5cIDsKK+S9j+aJgOmMsiA+IGp1dXNob3Jva3VcIDsKK+mnkOWBnOi7iiA+IGNodXV0ZWlzaGFcIDsKK+akjeaoueelrSA+IHNob2t1anVzYWlcIDsKK+inkumAn+W6piA+IGtha3Vzb2t1ZG9cIDsKK+Wkp+i1pOaWkSA+IGRhaXNla2loYW5cIDsKK+WcsOS4rea1tyA+IGNoaWNodXVrYWlcIDsKK+WVhuWjsuS6uiA+IHNob3ViYWluaW5cIDsKK+WPl+WPluS6uiA+IHVrZXRvcmluaW5cIDsKK+imi+acrOW4giA+IG1paG9uJydpY2hpXCA7CivmipXnpajmqKkgPiB0b3VoeW91a2VuXCA7CivmjqLnhafnga8gPiB0YW5zaG91dG91XCA7Civlhajli53ou40gPiB6ZW5zaG91Z3VuXCA7CivntabmsLTloZQgPiBreXV1c3VpdG91XCA7Civmva7lubLni6kgPiBzaGlvaGlnYXJpXCA7CivniaHnvorluqcgPiBvaGl0c3VqaXphXCA7Civlj47nqI7kurogPiBzaHV1emVpbmluXCA7Civpgbjmip7mqKkgPiBzZW50YWt1a2VuXCA7CivmjqHngrnooaggPiBzYWl0ZW5oeW91XCA7Civlt6Xlt6Xlm5sgPiBrdW5rdW5zaGlpXCA7CivoqJjpjLLnmoQgPiBraXJva3V0ZWtpXCA7CivosYbmnb/pioAgPiBtYW1laXRhZ2luXCA7Civntbblr77ph48gPiB6ZXR0YWlyeW91XCA7CivmnbHljJfkurogPiB0b3Vob2t1amluXCA7Civmtbfou43nnIEgPiBrYWlndW5zaG91XCA7Civph5HliZvlipsgPiBrb25nb3VyaWtpXCA7CivnnJ/mmpfpl4cgPiBtYWt1cmF5YW1pXCA7CivmpJznlqvlrpggPiBrZW4nJ2VraWthblwgOwor5a++6LGh5aSWID4gdGFpc2hvdWdhaVwgOwor5paw5r2f55yMID4gbmlpZ2F0YWtlblwgOwor6ZeH5YaN6LKpID4geWFtaXNhaWhhblwgOwor5YuV54mp5oSbID4gZG91YnV0c3VhaVwgOwor5L2/55So6YePID4gc2hpeW91cnlvdVwgOwor6JeB5Y2K57SZID4gd2FyYWJhbnNoaVwgOwor5paw6ZaL5ZywID4gc2hpbmthaWNoaVwgOwor6Z2e5bi46K2YID4gaGlqb3VzaGlraVwgOwor5LiA6Z2i6KazID4gaWNoaW1lbmthblwgOwor566h57WD5qW9ID4ga2FuZ2VuZ2FrdVwgOwor5pyA5oG15Zu9ID4gc2Fpa2Vpa29rdVwgOwor5oWi5oCn55qEID4gbWFuc2VpdGVraVwgOwor5o6o6KiI5a2mID4gc3Vpa2VpZ2FrdVwgOwor5Ymv6aCY5LqLID4gZnVrdXJ5b3VqaVwgOwor5Y2w5Yi36ICFID4gaW5zYXRzdXNoYVwgOwor6ICQ54Gr5YqbID4gdGFpa2FyeW9rdVwgOwor5Y+L56aF5p+TID4geXV1emVuem9tZVwgOwor5aCx5ZGK5pu4ID4gaG91a29rdXNob1wgOwor6aqo5qC8562LID4ga29ra2FrdWtpblwgOwor6Je75aGp6I2JID4gbW9zaGlvZ3VzYVwgOwor6ZuG5aSn5oiQID4gc2h1dXRhaXNlaVwgOwor5oWi5oCn55eFID4gbWFuc2VpYnlvdVwgOwor5a6j6KiA55qEID4gc2VuZ2VudGVraVwgOwor5YWt6YeN5aWPID4gcm9rdWp1dXNvdVwgOwor6Z+z6Z+/5a2mID4gb25reW91Z2FrdVwgOwor5bel5qWt5rivID4ga291Z3lvdWtvdVwgOwor57eP6L6e6IG3ID4gc291amlzaG9rdVwgOwor6LuN5Zuj6ZW3ID4gZ3VuZGFuY2hvdVwgOwor5bm06ZW36ICFID4gbmVuY2hvdXNoYVwgOwor57eP5YuZ5bGAID4gc291bXVreW9rdVwgOwor6Z2i55u4562GID4gbWVuc291ZnVkZVwgOwor5pWj5q2p6YGTID4gc2FucG9taWNoaVwgOwor56S65Zyn6KiIID4gc2hpYXRzdWtlaVwgOwor5LiW57SA5pyrID4gc2Vpa2ltYXRzdVwgOwor56ys5LiJ5Zu9ID4gZGFpc2FuZ29rdVwgOwor5oqV56Wo5pWwID4gdG91aHlvdXN1dVwgOwor5L2V566H5pyIID4gbmFua2FnZXRzdVwgOwor55Sz6KuL5pu4ID4gc2hpbnNlaXNob1wgOwor6IW56Iac54KOID4gZnVrdW1ha3VlblwgOwor5rip5rOJ55S6ID4gb25zZW5tYWNoaVwgOwor5Li75YuV55qEID4gc2h1ZG91dGVraVwgOwor5LiN5paH5b6LID4gZnVidW5yaXRzdVwgOwor5byB5b2T566xID4gYmVudG91YmFrb1wgOwor5aSp5L2T5a2mID4gdGVudGFpZ2FrdVwgOwor5Y2w5Yi357SZID4gaW5zYXRzdXNoaVwgOwor5L2O5oiQ6ZW3ID4gdGVpc2VpY2hvdVwgOwor5L+v5Luw6KeSID4gZnVneW91a2FrdVwgOwor5pS+54ax5ZmoID4gaG91bmV0c3VraVwgOwor57SU6Imv5ZOBID4ganVucnlvdWhpblwgOwor5YKZ5b6M6KGoID4gYmluZ29vbW90ZVwgOwor5pqX5q666ICFID4gYW5zYXRzdXNoYVwgOwor5bmz5pWZ5ZOhID4gaGlyYWt5b3VpblwgOwor5LiN6Kaa6ICFID4gZnVrYWt1bW9ub1wgOwor5oiQ6ZW354K5ID4gc2VpY2hvdXRlblwgOwor5p2x5qiq57eaID4gdG91eW9rb3NlblwgOwor5pWR5riI6ICFID4ga3l1dXNhaXNoYVwgOwor55+l6IO955qEID4gY2hpbm91dGVraVwgOwor5bm76Kaa5YmkID4gZ2Vua2FrdXphaVwgOwor5p6c54mp5bGLID4ga3VkYW1vbm95YVwgOwor5Lq65qC86ICFID4gamlua2FrdXNoYVwgOwor6YeR5bGe6ZaTID4ga2luem9rdWthblwgOwor6Iqx5p+z55eFID4ga2FyeXV1YnlvdVwgOwor6ICB5aSn5Zu9ID4gcm91dGFpa29rdVwgOwor5Luj6KiA5Lq6ID4gZGFpZ2VuJyduaW5cIDsKK+W/g+W+l+mhlCA+IGtva29yb2VnYW9cIDsKK+S7o+ihqOiAhSA+IGRhaWh5b3VzaGFcIDsKK+S4u+efpeeahCA+IHNodWNoaXRla2lcIDsKK+aWh+WtpueVjCA+IGJ1bmdha3VrYWlcIDsKK+WIh+aWreapnyA+IHNldHN1ZGFua2lcIDsKK+S4gOaZgueahCA+IGljaGlqaXRla2lcIDsKK+S6pOmAmue2siA+IGtvdXRzdXVtb3VcIDsKK+WcsOeQg+S6uiA+IGNoaWt5dXVqaW5cIDsKK+WcsOeQg+S4iiA+IGNoaWt5dXVqb3VcIDsKK+mAhuaPkOahiCA+IGd5YWt1dGVpYW5cIDsKK+WvvuaVsOihqCA+IHRhaXN1dWh5b3VcIDsKK+aVl+aIpuWbvSA+IGhhaXNlbmtva3VcIDsKK+WNsOWIt+ekviA+IGluc2F0c3VzaGFcIDsKK+aWsOijveWTgSA+IHNoaW5zZWloaW5cIDsKK+altei3nemboiA+IGt5b2t1a3lvcmlcIDsKK+eGn+e3tOW3pSA+IGp1a3VyZW5rb3VcIDsKK+iJsue0oOS9kyA+IHNoaWtpc290YWlcIDsKK+S4uOegpeefsyA+IG1hcnV0b2lzaGlcIDsKK+WQjOaXj+S8miA+IGRvdXpva3VrYWlcIDsKK+e1jOa4iOeahCA+IGtlaXphaXRla2lcIDsKK+eJm+S5s+WxiyA+IGd5dXVueXV1eWFcIDsKK+e3tOe/kuWgtCA+IHJlbnNodXVqb3VcIDsKK+eJueijveWTgSA+IHRva3VzZWloaW5cIDsKK+S4jeiqoOWunyA+IGZ1c2Vpaml0c3VcIDsKK+W+k+adpeWeiyA+IGp1dXJhaWdhdGFcIDsKK+WvvuixoeS9kyA+IHRhaXNob3V0YWlcIDsKK+eyieefs+m5uCA+IGtvbmFzZWtrZW5cIDsKK+WknOWwv+eXhyA+IHlhbnlvdXNob3VcIDsKK+i2heaWh+mdoiA+IGNob3VidW5tZW5cIDsKK+WLleeJqeWckiA+IGRvdWJ1dHN1ZW5cIDsKK+e3j+ebo+edoyA+IHNvdWthbnRva3VcIDsKK+Wun+mam+eahCA+IGppc3NhaXRla2lcIDsKK+mgvOS/oee0mSA+IHJhaXNoaW5zaGlcIDsKK+Wuo+aVmeW4qyA+IHNlbmt5b3VzaGlcIDsKK+iyrOS7u+iAhSA+IHNla2luaW5zaGFcIDsKK+mWouevgOeCjiA+IGthbnNldHN1ZW5cIDsKK+WFsemztOadvyA+IGt5b3VtZWliYW5cIDsKK+Wul+S4u+WbvSA+IHNvdXNodWtva3VcIDsKK+aXp+i7jeS6uiA+IGt5dXVndW5qaW5cIDsKK+WNiua/geeCuSA+IGhhbmRha3V0ZW5cIDsKK+WNiumVt+W9oiA+IGhhbmNob3VrZWlcIDsKK+S4reawtOmBkyA+IGNodXVzdWlkb3VcIDsKK+mBuOaJi+adkSA+IHNlbnNodW11cmFcIDsKK+WNsOWIt+eUqCA+IGluc2F0c3V5b3VcIDsKK+mciuafqei7iiA+IHJlaWt5dXVzaGFcIDsKK+a1t+WyuOerryA+IGthaWdhbmJhdGFcIDsKK+WklueUqOiWrCA+IGdhaXlvdXlha3VcIDsKK+e0q+aWkeeXhSA+IHNoaWhhbmJ5b3VcIDsKK+ibuOmFjeW9kyA+IHRha29oYWl0b3VcIDsKK+mrmOaJgOeXhSA+IGtvdXNob2J5b3VcIDsKK+Wkp+Wwj+S+vyA+IGRhaXNob3ViZW5cIDsKK+exs+WbveawkSA+IGJlaWtva3VtaW5cIDsKK+WQuOawtOaApyA+IGt5dXVzdWlzZWlcIDsKK+W/teS6lOaXpSA+IG5lbmdvbmljaGlcIDsKK+WHuuadpeW/gyA+IGRla2lnb2tvcm9cIDsKK+S4reW/g+mDqCA+IGNodXVzaGluYnVcIDsKK+eUn+S9k+WtpiA+IHNlaXRhaWdha3VcIDsKK+iCr+WumueahCA+IGtvdXRlaXRla2lcIDsKK+mBuOaKnuWtkCA+IHNlbnRha3VzaGlcIDsKK+WLleeJqeWMliA+IGRvdWJ1dHN1a2FcIDsKK+awtOW5s+e/vCA+IHN1aWhlaXlva3VcIDsKK+iyv+aYk+alrSA+IGJvdWVraWd5b3VcIDsKK+iFsOW4g+WboyA+IGtvc2hpYnV0b25cIDsKK+eIhuaSg+apnyA+IGJha3VnZWtpa2lcIDsKK+iogOihjOmMsiA+IGdlbmtvdXJva3VcIDsKK+Wbo+WcsOaXjyA+IGRhbmNoaXpva3VcIDsKK+S5seiqv+WtkCA+IHJhbmNob3VzaGlcIDsKK+WCmeiThOexsyA+IGJpY2hpa3VtYWlcIDsKK+Wkp+S5l+eahCA+IGRhaWpvdXRla2lcIDsKK+eEoeiDveWKmyA+IG11bm91cnlva3VcIDsKK+mFqui+suWgtCA+IHJha3Vub3Vqb3VcIDsKK+iyqOWuouiIuSA+IGtha3lha3VzZW5cIDsKK+aEn+afk+eXhyA+IGthbnNlbnNob3VcIDsKK+ecn+eQhuaVmSA+IHNoaW5yaWt5b3VcIDsKK+aFiOWWhOmNiyA+IGppemVuJyduYWJlXCA7CivmioDooZPlo6sgPiBnaWp1dHN1c2hpXCA7Civlk6jmiJLoiYcgPiBzaG91a2FpdGVpXCA7CivphZLnn7PphbggPiBzaHVzZWtpc2FuXCA7CivmlbfluIPlm6MgPiBzaGlraWJ1dG9uXCA7Civlj43liYfph5EgPiBoYW5zb2t1a2luXCA7CivmnInmqZ/niakgPiB5dXVraWJ1dHN1XCA7Civmir3osaHnlLsgPiBjaHV1c2hvdWdhXCA7Civnp5/lgJ/mqKkgPiBzb3NoYWt1a2VuXCA7CivlhoXnlLPmm7ggPiBuYWlzaGluc2hvXCA7CivlkIzntJrnlJ8gPiBkb3VreXV1c2VpXCA7CivlkJHnsbPnmoQgPiBrb3ViZWl0ZWtpXCA7CivopqrooZvlhbUgPiBzaGluJydlaWhlaVwgOwor5LuP5paH56eRID4gZnV0c3VidW5rYVwgOwor5Y+W5byV5omAID4gdG9yaWhpa2lqb1wgOwor6Zu76LuK6LODID4gZGVuc2hhY2hpblwgOwor6ZuG5pWj5ZywID4gc2h1dXNhbmNoaVwgOwor57a65oOz5puyID4ga2lzb3VreW9rdVwgOwor5LiK6Kq/5a2QID4gdXdhY2hvdXNoaVwgOwor5YaF6IeT5byTID4gbmFpem91a3l1dVwgOwor5Y2K6ZaL5Zu9ID4gaGFua2Fpa29rdVwgOwor6KO96YCg5qWtID4gc2Vpem91Z3lvdVwgOwor6L+95pKD5qmfID4gdHN1aWdla2lraVwgOwor5LiJ6KeS562LID4gc2Fua2FrdWtpblwgOwor562J5rex57eaID4gdG91c2hpbnNlblwgOwor6aeG5YuV5YqbID4ga3Vkb3VyeW9rdVwgOwor6YeN5bel5qWtID4ganV1a291Z3lvdVwgOwor6bq757mU54mpID4gYXNhb3JpbW9ub1wgOwor5pel5bCE55eFID4gbmlzc2hhYnlvdVwgOwor54ax6KGA5YWQID4gbmVra2V0c3VqaVwgOwor6YeR5bGe6KO9ID4ga2luem9rdXNlaVwgOwor5pys5aWR57SEID4gaG9ua2VpeWFrdVwgOwor6buE6KSQ6ImyID4gb3VrYXNzaG9rdVwgOwor6LO85YWl6ICFID4ga291bnl1dXNoYVwgOwor5LiN57K+6ICFID4gYnVzaG91bW9ub1wgOwor5Li75b+c5YqbID4gc2h1b3VyeW9rdVwgOwor5Z+8546J5YuiID4gc2FpdGFtYXplaVwgOwor6YeN5YK36ICFID4ganV1c2hvdXNoYVwgOwor5YK35a6z572qID4gc2hvdWdhaXphaVwgOwor5L2c5oim5LiKID4gc2FrdXNlbmpvdVwgOwor5r2c5rC055eFID4gc2Vuc3VpYnlvdVwgOwor5Lit5oCn57SZID4gY2h1dXNlaXNoaVwgOwor6Ki655mC5omAID4gc2hpbnJ5b3Vqb1wgOwor5pel5pys6aOfID4gbmlob25zaG9rdVwgOwor56i85YON546HID4ga2Fkb3VyaXRzdVwgOwor6YCj5ZCI5Zu9ID4gcmVuZ291a29rdVwgOwor5YWs5rCR5a2mID4ga291bWluZ2FrdVwgOwor56CU56m26ICFID4ga2Vua3l1dXNoYVwgOwor6Z2Z5rC05ZynID4gc2Vpc3VpYXRzdVwgOwor55m76Yyy6ICFID4gdG91cm9rdXNoYVwgOwor6IiI6KGM55WMID4ga291Z3lvdWthaVwgOwor5rqW5rG65YudID4ganVua2Vzc2hvdVwgOwor5aSp546L5pifID4gdGVuJydub3VzZWlcIDsKK+air+WtkOi7iiA+IGhhc2hpZ29zaGFcIDsKK+S4ieimquetiSA+IHNhbnNoaW50b3VcIDsKK+S4jee0lOeJqSA+IGZ1anVuYnV0c3VcIDsKK+S4iuWls+S4rSA+IGthbWlqb2NodXVcIDsKK+mzpeWPluecjCA+IHRvdHRvcmlrZW5cIDsKK+mHjeeXh+iAhSA+IGp1dXNob3VzaGFcIDsKK+iyp+S5j+msriA+IGJpbmJvdWt1amlcIDsKK+WUr+S4gOW6piA+IHRhZGFpY2hpZG9cIDsKK+WlveiJsuWutiA+IGtvdXNob2t1a2FcIDsKK+avm+earuWVhiA+IGtlZ2F3YXNob3VcIDsKK+avlOi8g+e0miA+IGhpa2FrdWt5dXVcIDsKK+ePvuWcqOmrmCA+IGdlbnphaWRha2FcIDsKK+mZuOa1t+epuiA+IHJpa3VrYWlrdXVcIDsKK+WPjOecvOmPoSA+IHNvdWdhbmt5b3VcIDsKK+mnkOi8quWgtCA+IGNodXVyaW5qb3VcIDsKK+eZvemJhOmJsSA+IGhha3V0ZWtrb3VcIDsKK+Wkp+WuruS6uiA+IG9vbWl5YWJpdG9cIDsKK+mbquWQiOaIpiA+IHl1a2lnYXNzZW5cIDsKK+eJh+agl+eyiSA+IGthdGFrdXJpa29cIDsKK+eZuuihqOS8miA+IGhhcHB5b3VrYWlcIDsKK+WQkOeAieeJqSA+IHRvc2hhYnV0c3VcIDsKK+ijj+ihqOe0mSA+IHVyYWJ5b3VzaGlcIDsKK+WIh+aWreWbsyA+IHNldHN1ZGFuenVcIDsKK+aAneaDkeiytyA+IG9tb3dha3VnYWlcIDsKK+ims+W/teirliA+IGthbicnbmVucm9uXCA7Civnjonpn7Pnm6QgPiBneW9rdW9uYmFuXCA7Civlj43li5XnmoQgPiBoYW5kb3V0ZWtpXCA7CivmlZHlkb3oiYcgPiBreXV1bWVpdGVpXCA7Civntbblr77nmoQgPiB6ZXR0YWl0ZWtpXCA7CivmuKzph4/lm7MgPiBzb2t1cnlvdXp1XCA7CivkuInlpKflm70gPiBzYW5kYWlrb2t1XCA7CivlnLDmlrnnl4UgPiBjaGlob3VieW91XCA7Civlh7rniYjogIUgPiBzaHVwcGFuc2hhXCA7Civkvpvntabot68gPiBreW91a3l1dXJvXCA7Civnq5zmto7pppkgPiByeXV1emVua291XCA7CivlsITniIbloLQgPiBzaGFiYWt1am91XCA7CivmuKzph4/lmaggPiBzb2t1cnlvdWtpXCA7CivlnJ/kv5flraYgPiBkb3pva3VnYWt1XCA7Civnvo7lpbPmoZwgPiBiaWpvemFrdXJhXCA7CivljZfjgIXmnbEgPiBuYW4nJ25hbnRvdVwgOwor5Lq65qC85qipID4gamlua2FrdWtlblwgOwor5YiG6Kej55qEID4gYnVua2FpdGVraVwgOwor5LuW6Kaa55qEID4gdGFrYWt1dGVraVwgOwor5aSp5Li75pWZID4gdGVuc2h1a3lvdVwgOwor6Zuq5YyW57KnID4geXVraWdlc2hvdVwgOwor5b2i5byP576OID4ga2Vpc2hpa2liaVwgOwor6Zu76YCa5aSnID4gZGVudHN1dWRhaVwgOwor56CU56m256S+ID4ga2Vua3l1dXNoYVwgOwor5LiJ6KeS54K5ID4gc2Fua2FrdXRlblwgOwor5Lyd5pu46bOpID4gZGVuc2hvYmF0b1wgOwor5LuW6Kaa55eHID4gdGFrYWt1c2hvdVwgOwor5raI6ICX5oimID4gc2hvdW1vdXNlblwgOwor5LuV6Kiz5pu4ID4gc2hpd2FrZXNob1wgOwor6YGK5LyR5ZywID4geXV1a3l1dWNoaVwgOwor5Y+N5b+c5oCnID4gaGFuJydub3VzZWlcIDsKK+aatOi1sOaXjyA+IGJvdXNvdXpva3VcIDsKK+e0gOWFg+evgCA+IGtpZ2Vuc2V0c3VcIDsKK+a4qeazieWuvyA+IG9uc2VuJyd5YWRvXCA7CivllJDovpvlrZAgPiB0b3VnYXJhc2hpXCA7Civml6XkuK3pn5MgPiBuaXRjaHV1a2FuXCA7CivnkIbop6PlipsgPiByaWthaXJ5b2t1XCA7CivlhazlhbHosqEgPiBrb3VreW91emFpXCA7CivmpJzlrprmlpkgPiBrZW50ZWlyeW91XCA7CivluILplbfpgbggPiBzaGljaG91c2VuXCA7Civlronmma7oq4sgPiB5YXN1YnVzaGluXCA7CivmsLTpgZPmlpkgPiBzdWlkb3VyeW91XCA7CivkuKHmiJDmlZcgPiByeW91c2VpYmFpXCA7CivliJ3nr4Dlj6UgPiBoYXRzdXpla2t1XCA7Civmr5TovIPnmoQgPiBoaWtha3V0ZWtpXCA7Civlm73pgKPou40gPiBrb2t1cmVuZ3VuXCA7CivkuIrntJrnlJ8gPiBqb3VreXV1c2VpXCA7CivnhKHpoJPnnYAgPiBtdXRvbmNoYWt1XCA7Civlrablj4vkvJogPiBnYWt1eXV1a2FpXCA7Civlho3mnaXmnIggPiBzYXJhaWdldHN1XCA7Civlvozml6Xoq4cgPiBnb2ppdHN1ZGFuXCA7CivlgpnojZLpo58gPiBiaWtvdXNob2t1XCA7CivkuI3ooYzot6EgPiBmdWd5b3VzZWtpXCA7Civmlpzpmb3ml48gPiBzaGF5b3V6b2t1XCA7CivpnZLljJbniakgPiBzZWlrYWJ1dHN1XCA7CivlpKnnjovlsbEgPiB0ZW4nJ25vdXphblwgOwor5Y6E5LuL6ICFID4geWFra2FpbW9ub1wgOwor5YuH54yb5b+DID4geXV1bW91c2hpblwgOwor5q2m5Yqb5oimID4gYnVyeW9rdXNlblwgOwor5LiJ6KeS5rOVID4gc2Fua2FrdWhvdVwgOwor5a6X5pWZ55S7ID4gc2h1dWt5b3VnYVwgOwor56CU56m255SfID4ga2Vua3l1dXNlaVwgOwor5Ye65aWU6ICFID4gc2h1cHBvbnNoYVwgOwor5Y+O55uK6YeRID4gc2h1dWVraWtpblwgOwor5rC36I+T5a2QID4ga29vcmlnYXNoaVwgOwor6Lu95bel5qWtID4ga2Vpa291Z3lvdVwgOwor6KiY5oa25YqbID4ga2lva3VyeW9rdVwgOwor5Y2z6IiI6KmpID4gc29ra3lvdXNoaVwgOwor5Y+k55Sf54mpID4ga29zZWlidXRzdVwgOwor54ax5oSb6ICFID4gbmV0c3VhaXNoYVwgOwor5aSp6aCC54K5ID4gdGVuY2hvdXRlblwgOwor54Sh6LOH5YqbID4gbXVzaGlyeW9rdVwgOwor6IiI6KGM5qipID4ga291Z3lvdWtlblwgOwor5p2+5qC55rK5ID4gc2hvdWtvbicneXVcIDsKK+eZvua4iOalvSA+IGt1ZGFyYWdha3VcIDsKK+WcqOS7u+S4rSA+IHphaW5pbmNodXVcIDsKK+a7nuWcqOS4rSA+IHRhaXphaWNodXVcIDsKK+WHuueJiOekviA+IHNodXBwYW5zaGFcIDsKK+ijveiMtualrSA+IHNlaWNoYWd5b3VcIDsKK+iyv+aYk+WVhiA+IGJvdWVraXNob3VcIDsKK+WbveWLmeecgSA+IGtva3VtdXNob3VcIDsKK+S4reWNl+exsyA+IGNodXVuYW5iZWlcIDsKK+ahkOS4gOiRiSA+IGtpcmloaXRvaGFcIDsKK+WIneevgOS+myA+IGhhdHN1emVra3VcIDsKK+WFpemBuOiAhSA+IG55dXVzZW5zaGFcIDsKK+e4puekvuS8miA+IHRhdGVzaGFrYWlcIDsKK+aTjee4puW4rSA+IHNvdWp1dXNla2lcIDsKK+WRqOaXi+WxiyA+IHNodXVzZW4nJ3lhXCA7Civmloflrablo6sgPiBidW5nYWt1c2hpXCA7Civlt6XlrabogIUgPiBrb3VnYWt1c2hhXCA7Civlj6TkvJ3oqqwgPiBrb2RlbnNldHN1XCA7CivljbDliLflt6UgPiBpbnNhdHN1a291XCA7CivmvZzmsLTmnI0gPiBzZW5zdWlmdWt1XCA7CivlpKfkuLvmlZkgPiBkYWlzaHVreW91XCA7CivkuIrloLTmoKogPiBqb3Vqb3VrYWJ1XCA7CivpoZ7lnovnmoQgPiBydWlrZWl0ZWtpXCA7CivlkLnlh7rniakgPiBmdWtpZGVtb25vXCA7CivmipfnnJ/oj4wgPiBrb3VzaGlua2luXCA7Civpm6Pms6LmvZ8gPiBuYW5pd2FnYXRhXCA7Civnp5/lgJ/lnLAgPiBzb3NoYWt1Y2hpXCA7CivliqDovrLnoLIgPiBrYW4nJ25vbmhvdVwgOwor6YCg55+z56iOID4gem91a29rdXplaVwgOwor6aeQ6LuK5aC0ID4gY2h1dXNoYWpvdVwgOwor6Kmm566X6KGoID4gc2hpc2FuaHlvdVwgOwor57WM5riI5a2mID4ga2VpemFpZ2FrdVwgOwor5oCl5Yu+6YWNID4ga3l1dWtvdWJhaVwgOwor5YSA5byP55SoID4gZ2lzaGlraXlvdVwgOwor6KGA5qCT55eHID4ga2Vzc2Vuc2hvdVwgOwor5LyK6YGU5ae/ID4gZGF0ZXN1Z2F0YVwgOwor55eF5Y6f5L2TID4gYnlvdWdlbnRhaVwgOwor5YWr5YiG55uuID4gaGFjaGlidW5tZVwgOwor6Kej5p6Q5oCnID4ga2Fpc2VraXNlaVwgOwor5a6i6Kaz5oCnID4ga3lha2thbnNlaVwgOwor6LaF5aqS5L2TID4gY2hvdWJhaXRhaVwgOwor5rC06Iqt6JWJID4gbWl6dWJhc2hvdVwgOwor6ZW35pyf55qEID4gY2hvdWtpdGVraVwgOwor55y86Y+h6JuHID4gbWVnYW5laGViaVwgOwor5Ye654mI55WMID4gc2h1cHBhbmthaVwgOwor5byB5YSf6YeRID4gYmVuc2hvdWtpblwgOwor5o6S5aSW55qEID4gaGFpZ2FpdGVraVwgOwor5pyq54af6ICFID4gbWlqdWt1bW9ub1wgOwor5YiG5pWj5Z6LID4gYnVuc2FuZ2F0YVwgOwor55+t57eo6ZuGID4gdGFucGVuc2h1dVwgOwor5reh6Lev5bO2ID4gYXdhamlzaGltYVwgOwor5aKX5q6W54KJID4gem91c2hva3Vyb1wgOwor5LiL6KaL5p2/ID4gc2hpdGFtaWl0YVwgOwor5YiG5pWZ5aC0ID4gYnVua3lvdWpvdVwgOwor5Y+y5paZ6aSoID4gc2hpcnlvdWthblwgOwor6KGA5bCP5p2/ID4ga2Vzc2hvdWJhblwgOwor6YeR6Imy5aCCID4ga29uamlraWRvdVwgOwor5ryi5pa56JasID4ga2FucG91eWFrdVwgOwor57+76Kiz5a62ID4gaG9uJyd5YWt1a2FcIDsKK+W5s+etieimsyA+IGJ5b3Vkb3VrYW5cIDsKK+aknOafu+WumCA+IGtlbnNob3VrYW5cIDsKK+aWh+WtpuWPsiA+IGJ1bmdha3VzaGlcIDsKK+WkieWIhuWtpiA+IGhlbmJ1bmdha3VcIDsKK+WJjeagveeJqSA+IHNlbnphaW1vbm9cIDsKK+W8t+WjruWJpCA+IGt5b3Vzb3V6YWlcIDsKK+a1t+eUo+alrSA+IGthaXNhbmd5b3VcIDsKK+eMrue0jeiAhSA+IGtlbicnbm91c2hhXCA7Civlha3pgKPmmJ8gPiByb2t1cmVuc2VpXCA7Civli4XpoZjlr7ogPiBjaG9rdWdhbmppXCA7CivkvJ3mn5Pnl4UgPiBkZW5zZW5ieW91XCA7CivkuK3oj6/pjYsgPiBjaHV1a2FuYWJlXCA7CivlpKnkuIrlt50gPiB0ZW5qb3VnYXdhXCA7CivmtIvoiqXlrZAgPiB5b3VnYXJhc2hpXCA7Civnmobli6Tos54gPiBrYWlraW5zaG91XCA7Civph5HlsZ7niYcgPiBraW56b2t1aGVuXCA7CivlpYfooZPluKsgPiBraWp1dHN1c2hpXCA7CivlopfliqDnjocgPiB6b3VrYXJpdHN1XCA7CivmqJnmupblnosgPiBoeW91anVua2VpXCA7Civph5HotaToibIgPiBraW4nJ2FrYWlyb1wgOwor6LKs5Lu75oSfID4gc2VraW5pbmthblwgOwor5reL5be056+AID4gcmlucGFzZXRzdVwgOwor5L6b54mp5Y+wID4ga3Vtb3RzdWRhaVwgOwor57Gz5Zu95Lq6ID4gYmVpa29rdWppblwgOwor562J5rip5byPID4gdG91b25zaGlraVwgOwor5YmN5Lu76ICFID4gemVuJyduaW5zaGFcIDsKK+ijvemAoOWFgyA+IHNlaXpvdW1vdG9cIDsKK+aDheWgsemHjyA+IGpvdWhvdXJ5b3VcIDsKK+a2iOiAl+WTgSA+IHNob3Vtb3VoaW5cIDsKK+S4oeaJi+WIqSA+IHJ5b3V0ZWtpa2lcIDsKK+iThOmbu+WZqCA+IGNoaWt1ZGVua2lcIDsKK+Wvvuinkue3miA+IHRhaWtha3VzZW5cIDsKK+S4gOaZqeS4rSA+IGhpdG9iYW5qdXVcIDsKK+aal+WJo+auuiA+IGFua2Vuc2F0c3VcIDsKK+mgrei2s+mhniA+IHRvdXNva3VydWlcIDsKK+WcqOadseS6rCA+IHphaXRvdWt5b3VcIDsKK+ajhOiogOiRiSA+IHN1dGVrb3RvYmFcIDsKK+WFjeeojuihqCA+IG1lbnplaWh5b3VcIDsKK+WbveawkeaApyA+IGtva3VtaW5zZWlcIDsKK+W9q+WIu+WutiA+IGNob3Vrb2t1a2FcIDsKK+iqreabuOeVjCA+IGRva3VzaG9rYWlcIDsKK+S9v+eUqOaWmSA+IHNoaXlvdXJ5b3VcIDsKK+WxheeVmeawkSA+IGt5b3J5dXVtaW5cIDsKK+aXi+WFieinkiA+IHNlbmtvdWtha3VcIDsKK+Wwj+mWk+S9vyA+IGtvbWFkenVrYWlcIDsKK+inkuiGnOeCjiA+IGtha3VtYWt1ZW5cIDsKK+mwreiEmumhniA+IGtpa3lha3VydWlcIDsKK+mRkeitmOWutiA+IGthbnNoaWtpa2FcIDsKK+iIiOihjOW4qyA+IGtvdWd5b3VzaGlcIDsKK+WstuWkqeS4iyA+IGtha2FhZGVua2FcIDsKK+WbuuW9oueJqSA+IGtva2VpYnV0c3VcIDsKK+e0oee4vuezuCA+IGJvdXNla2lpdG9cIDsKK+WQneWXh+WutiA+IHJpbnNob2t1a2FcIDsKK+eCuuabv+WwuyA+IGthd2FzZWppcmlcIDsKK+iqreiAheashCA+IGRva3VzaGFyYW5cIDsKK+WOhOS7i+eJqSA+IHlha2thaW1vbm9cIDsKK+WHuuS4luS9nCA+IHNodXNzZXNha3VcIDsKK+WLleaRqeaTpiA+IGRvdW1hc2F0c3VcIDsKK+mDqOWIhumjnyA+IGJ1YnVuc2hva3VcIDsKK+WHuueJiOazlSA+IHNodXBwYW5ob3VcIDsKK+iqsumhjOabsiA+IGthZGFpa3lva3VcIDsKK+auuuiZq+WJpCA+IHNhdGNodXV6YWlcIDsKK+iWhOmbquiNiSA+IHVzdXl1a2lzb3VcIDsKK+S6uuS9k+WtpiA+IGppbnRhaWdha3VcIDsKK+W5s+WfjuS6rCA+IGhlaWpvdWt5b3VcIDsKK+S4ieinkuW4vSA+IHNhbmtha3Vib3VcIDsKK+ihneaSg+azoiA+IHNob3VnZWtpaGFcIDsKK+S4ieinkuW3viA+IHNhbmtha3VraW5cIDsKK+mDtemAgeaWmSA+IHl1dXNvdXJ5b3VcIDsKK+efs+eCremFuCA+IHNla2l0YW5zYW5cIDsKK+W+geacjeiAhSA+IHNlaWZ1a3VzaGFcIDsKK+W8t+ihjOi7jSA+IGt5b3Vrb3VndW5cIDsKK+S7o+ihqOWboyA+IGRhaWh5b3VkYW5cIDsKK+iEmuacrOWutiA+IGt5YWt1aG9ua2FcIDsKK+iPk+WtkOmJoiA+IGthc2hpYmFjaGlcIDsKK+ebtOWGhumMkCA+IGNob2t1ZW5zdWlcIDsKK+WHuueJiOaoqSA+IHNodXBwYW5rZW5cIDsKK+WGjeacjeW9uSA+IHNhaWZ1a3Vla2lcIDsKK+eUn+aUvumAgSA+IG5hbWFob3Vzb3VcIDsKK+ioiOeul+WwuiA+IGtlaXNhbmpha3VcIDsKK+mAmuWLpOiAhSA+IHRzdXVraW5zaGFcIDsKK+S4gOWhgee3miA+IGljaGlydWlzZW5cIDsKK+a2sumHj+ioiCA+IGVraXJ5b3VrZWlcIDsKK+WIh+aUr+S4uSA+IGtpcmlzaGl0YW5cIDsKK+mXh+W4guWgtCA+IHlhbWlzaGlqb3VcIDsKK+manOWus+iAhSA+IHNob3VnYWlzaGFcIDsKK+iytOaXj+eahCA+IGtpem9rdXRla2lcIDsKK+WNsOWIt+S6uiA+IGluc2F0c3VuaW5cIDsKK+a1t+iziuiIuSA+IGthaXpva3VzZW5cIDsKK+WNl+WNl+ilvyA+IG5hbicnbmFuc2VpXCA7CivohLPmjK/nm6ogPiBub3VzaGludG91XCA7Civmir3osaHljJYgPiBjaHV1c2hvdWthXCA7CivorJvnv5LkvJogPiBrb3VzaHV1a2FpXCA7CivmhJvnjqnniakgPiBhaWdhbmJ1dHN1XCA7Civpurvpm4DlsYsgPiBtYXplamFuJyd5YVwgOwor5Lyd5p+T5q+SID4gZGVuc2VuZG9rdVwgOwor5LuW5Zu96ICFID4gdGFrb2t1bW9ub1wgOwor6YeN5bGk55qEID4ganV1c291dGVraVwgOwor5LqU6YeN5aGUID4gZ29qdXVub3RvdVwgOwor5LiL57Sa5a+pID4ga2FreXV1c2hpblwgOwor5L2O5omA5b6XID4gdGVpc2hvdG9rdVwgOwor5bCC6ZaA56ugID4gc2VubW9uc2hvdVwgOwor6Yuz6YCg5omAID4gY2h1dXpvdXNob1wgOwor55+t5pmC5pelID4gdGFuamlqaXRzdVwgOwor5LyR5qWt5pelID4ga3l1dWd5b3ViaVwgOwor5YWI56uv55qEID4gc2VudGFudGVraVwgOwor5Zan5Zip6IWwID4ga2Vua2Fnb3NoaVwgOwor6I2J5Y+M57SZID4ga3VzYXpvdXNoaVwgOwor56m65oOz55qEID4ga3V1c291dGVraVwgOwor6Zuq6YGU56OoID4geXVraWRhcnVtYVwgOwor5YaF5Lqk5riJID4gbmFpa291c2hvdVwgOwor5bqD5ZGK56S+ID4ga291a29rdXNoYVwgOwor6LKo54mp6aeFID4ga2Ftb3RzdWVraVwgOwor6LKn5LmP57GkID4gYmluYm91Z3VqaVwgOwor5a++6Kmx5byPID4gdGFpd2FzaGlraVwgOwor5YWx55Sj6LuNID4ga3lvdXNhbmd1blwgOwor5LiN5om/6Ku+ID4gZnVzaG91ZGFrdVwgOwor5rGC5Lq66KqMID4ga3l1dWppbnNoaVwgOwor6Z6t5q+b6JmrID4gYmVubW91Y2h1dVwgOwor57Ch5Y2Y5pyNID4ga2FudGFuZnVrdVwgOwor5Lit5oCn5a2QID4gY2h1dXNlaXNoaVwgOwor6buS56mC55eFID4ga3Vyb2hvYnlvdVwgOwor5YiG5ouF6aGNID4gYnVudGFuZ2FrdVwgOwor5aSq6Zm96JmrID4gdGFpeW91Y2h1dVwgOwor5pqr5a6a55qEID4gemFudGVpdGVraVwgOwor5Luj6KGo5L6LID4gZGFpaHlvdXJlaVwgOwor5ZCM5Zu95rCRID4gZG91a29rdW1pblwgOwor6KiY5b+154mpID4ga2luZW5idXRzdVwgOwor5pen5L2T5Yi2ID4ga3l1dXRhaXNlaVwgOwor5Y2X5rSL5p2QID4gbmFuJyd5b3V6YWlcIDsKK+mdnuW4uOWPoyA+IGhpam91Z3VjaGlcIDsKK+S4iuihqOe0mSA+IHV3YWJ5b3VzaGlcIDsKK+mdoueZveWRsyA+IG9tb3NoaXJvbWlcIDsKK+S/neWtmOmjnyA+IGhvem9uc2hva3VcIDsKK+WNiuaEj+itmCA+IGhhbicnaXNoaWtpXCA7CivmnKzoqr/lrZAgPiBob25jaG91c2hpXCA7CivnuZTlpbPmmJ8gPiBzaG9rdWpvc2VpXCA7CivlsILploDnmoQgPiBzZW5tb250ZWtpXCA7CivloLHlhJ/ph5EgPiBob3VzaG91a2luXCA7Civmk7LlvL7nrZIgPiB0ZWtpZGFudG91XCA7CivosqfkuY/npZ4gPiBiaW5ib3VnYW1pXCA7Civlm57mvJXmpa0gPiBrYWlzb3VneW91XCA7CivlpKfntbHpoJggPiBkYWl0b3VyeW91XCA7Civph4/lrZDoq5YgPiByeW91c2hpcm9uXCA7CivkuK3lipvnsokgPiBjaHV1cmlraWtvXCA7CivnnLzpj6HnjL8gPiBtZWdhbmV6YXJ1XCA7Civmpa3nlYzntJkgPiBneW91a2Fpc2hpXCA7CivpnZ7lhazlvI8gPiBoaWtvdXNoaWtpXCA7CivmsLTlhbXmnI0gPiBzdWloZWlmdWt1XCA7Civosq/mnKjloLQgPiBjaG9ib2t1am91XCA7Civmoq/lrZDmrrUgPiBoYXNoaWdvZGFuXCA7CivlvZPmrbPpp5IgPiB0b3VzYWlnb21hXCA7CivlrpfmlZnlrrYgPiBzaHV1a3lvdWthXCA7CivnoJTnqbblrpggPiBrZW5reXV1a2FuXCA7CivmronmlZnogIUgPiBqdW5reW91c2hhXCA7Civmronpm6PogIUgPiBqdW4nJ25hbnNoYVwgOwor5aOB6Ki06KifID4ga2FiZXpvc2hvdVwgOwor546J5pW055CGID4gZ3lva3VzZWlyaVwgOwor6Iyo5Z+O55yMID4gaWJhcmFraWtlblwgOwor5bGI5puy6YOoID4ga3Vra3lva3VidVwgOwor6KSS5aWo6YeRID4gaG91c2hvdWtpblwgOwor5raI6Ziy6ZqKID4gc2hvdWJvdXRhaVwgOwor5pyn5piG5biDID4gb2Jvcm9rb25idVwgOwor55yL55eF5Lq6ID4ga2FuYnlvdW5pblwgOwor6Iqx6Zu76LuKID4gaGFuYWRlbnNoYVwgOwor5Zyw5paH5a2mID4gY2hpbW9uZ2FrdVwgOwor5Y+j5L6b5pu4ID4ga291a3lvdXNob1wgOwor6YeR5bGe5oCnID4ga2luem9rdXNlaVwgOwor6I2J6YeO55CDID4ga3VzYXlha3l1dVwgOwor5qSc5LqL5bGAID4ga2VuamlreW9rdVwgOwor5YWt6L665b2iID4gcm9rdWhlbmtlaVwgOwor6Kqt6ICF5bGkID4gZG9rdXNoYXNvdVwgOwor5YKs5L+D54q2ID4gc2Fpc29rdWpvdVwgOwor5YK+5pac6KeSID4ga2Vpc2hha2FrdVwgOwor5Y+O55uj54q2ID4gc2h1dWthbmpvdVwgOwor5Zyw6ZyH5a2mID4gamlzaGluZ2FrdVwgOwor5Zyo5LiW5LitID4gemFpc2VpY2h1dVwgOwor5aWl5bqn5pW3ID4gb2t1emFzaGlraVwgOwor576O6KGT6aSoID4gYmlqdXRzdWthblwgOwor6Kix5a656YePID4ga3lveW91cnlvdVwgOwor5bCE5pKD5aC0ID4gc2hhZ2VraWpvdVwgOwor5b6M5aSp55qEID4ga291dGVudGVraVwgOwor6aeQ5bGv5ZywID4gY2h1dXRvbmNoaVwgOwor6ISz5rqi6KGAID4gbm91aWtrZXRzdVwgOwor5a2Y5ZG95LitID4gem9ubWVpY2h1dVwgOwor57O75YiX5YyWID4ga2VpcmV0c3VrYVwgOwor5Ye654mI5bGLID4gc2h1cHBhbicneWFcIDsKK+Wvqee+jueahCA+IHNoaW5iaXRla2lcIDsKK+aBkuS5heaApyA+IGtvdWt5dXVzZWlcIDsKK+eJh+iyv+aYkyA+IGthdGFib3Vla2lcIDsKK+aWh+eMruWtpiA+IGJ1bmtlbmdha3VcIDsKK+aZguS7o+iJsiA+IGppZGFpc2hva3VcIDsKK+Wkp+Wkp+eahCA+IGRhaWRhaXRla2lcIDsKK+S6jOmHjeapiyA+IG5panV1YmFzaGlcIDsKK+WcsOiqjOWtpiA+IGNoaXNoaWdha3VcIDsKK+WMluWtpueahCA+IGthZ2FrdXRla2lcIDsKK+iCieW8vuaIpiA+IG5pa3VkYW5zZW5cIDsKK+S4gOe1g+eQtCA+IGljaGlnZW5raW5cIDsKK+mBiueJp+awkSA+IHl1dWJva3VtaW5cIDsKK+aguOWun+mokyA+IGtha3VqaWtrZW5cIDsKK+iyqOeJqei7iiA+IGthbW90c3VzaGFcIDsKK+axguS6uuiAhSA+IGt5dXVqaW5zaGFcIDsKK+WcsOmch+WbvSA+IGppc2hpbmtva3VcIDsKK+WxheeVmeWcsCA+IGt5b3J5dXVjaGlcIDsKK+manOWtkOe0mSA+IHNob3VqaWdhbWlcIDsKK+a9nOWHveeXhSA+IHNlbmthbmJ5b3VcIDsKK+W8leeOh+iAhSA+IGluc290c3VzaGFcIDsKK+a1t+iziueJiCA+IGthaXpva3ViYW5cIDsKK+S/oeS7sOiAhSA+IHNoaW5rb3VzaGFcIDsKK+a2iOmYsui7iiA+IHNob3Vib3VzaGFcIDsKK+S4ieetieizniA+IHNhbnRvdXNob3VcIDsKK+eEoeitpuWvnyA+IG11a2Vpc2F0c3VcIDsKK+W9qeiJsueUuyA+IHNhaXNob2t1Z2FcIDsKK+WLp+WRiuiAhSA+IGthbmtva3VzaGFcIDsKK+W6g+WRiuashCA+IGtvdWtva3VyYW5cIDsKK+iznumHkeeOiyA+IHNob3VraW4nJ291XCA7CivpgJrnn6XnirYgPiB0c3V1Y2hpam91XCA7Civlt6XkvZzlk4EgPiBrb3VzYWt1aGluXCA7CivlnLDmlL/lraYgPiBjaGlzZWlnYWt1XCA7CivlpKrpmb3npZ4gPiB0YWl5b3VzaGluXCA7Civntpnmib/ogIUgPiBrZWlzaG91c2hhXCA7CivkubPoo73lk4EgPiBueXV1c2VpaGluXCA7CivpgYrmkoPpmoogPiB5dXVnZWtpdGFpXCA7CivljZHmgK/ogIUgPiBoaWt5b3Vtb25vXCA7Civlho3mlZnogrIgPiBzYWlreW91aWt1XCA7Civlm73lhoXnt5ogPiBrb2t1bmFpc2VuXCA7CivlmZvnhZnojYkgPiBrYW1pdGFiYWtvXCA7CivmhYjlloTluIIgPiBqaXplbicnaWNoaVwgOwor5Zue5oOz6YyyID4ga2Fpc291cm9rdVwgOwor5aSW5Lqk55qEID4gZ2Fpa291dGVraVwgOwor5L+u55CG5LitID4gc2h1dXJpY2h1dVwgOwor5LiJ562J6KaqID4gc2FudG91c2hpblwgOwor5Zyw6KGo6Z2iID4gY2hpaHlvdW1lblwgOwor5bmy5riJ6KiIID4ga2Fuc2hvdWtlaVwgOwor56CU56m25LyaID4ga2Vua3l1dWthaVwgOwor6IKW5YOP5qipID4gc2hvdXpvdWtlblwgOwor5b255LiN6LazID4geWFrdWJ1c29rdVwgOwor5rOo5oSP5YqbID4gY2h1dWlyeW9rdVwgOwor6IW55LiK5q27ID4gZnVrdWpvdXNoaVwgOwor57eo6ZuG6ICFID4gaGVuc2h1dXNoYVwgOwor5bqD5ZGK5p2/ID4ga291a29rdWJhblwgOwor5riJ56a96aGeID4gc2hvdWtpbnJ1aVwgOwor5YCS6Yyv6ICFID4gdG91c2FrdXNoYVwgOwor5rC055ax55ihID4gbWl6dWJvdXNvdVwgOwor5bmz562J5qipID4gYnlvdWRvdWtlblwgOwor5aSn6ZyH54G9ID4gZGFpc2hpbnNhaVwgOwor6YeN55eH5L6LID4ganV1c2hvdXJlaVwgOwor5Zyw5Z+f55qEID4gY2hpaWtpdGVraVwgOwor5YWx55Sj57O7ID4ga3lvdXNhbmtlaVwgOwor6ZaL6ZaJ5qmLID4ga2FpaGVpa3lvdVwgOwor6LaF6Zu75bCOID4gY2hvdWRlbmRvdVwgOwor6Zmz5oOF5pu4ID4gY2hpbmpvdXNob1wgOwor5oqV5qmf54axID4gdG91a2luZXRzdVwgOwor5YaX6KuH5LqLID4gam91ZGFua290b1wgOwor5pyA6auY57SaID4gc2Fpa291a3l1dVwgOwor5oCd5oOR5birID4gb21vd2FrdXNoaVwgOwor6KW/5pel5pysID4gbmlzaGluaWhvblwgOwor6L+R5Luj55qEID4ga2luZGFpdGVraVwgOwor6LaF5aSn5Z6LID4gY2hvdW9vZ2F0YVwgOwor56CV5rC36Ii5ID4gc2FpaHlvdXNlblwgOwor5ryB5qWt5rOVID4gZ3lvZ3lvdWhvdVwgOwor5pyq6Kej5rG6ID4gbWlrYWlrZXRzdVwgOwor5beo5Lq65Zu9ID4ga3lvamlua29rdVwgOwor5pyA5bCP6ZmQID4gc2Fpc2hvdWdlblwgOwor5YWs5YWx5oCnID4ga291a3lvdXNlaVwgOwor54Sh57K+6autID4gYnVzaG91aGlnZVwgOwor5bel5a2m5aOrID4ga291Z2FrdXNoaVwgOwor6YWS6YCg5qWtID4gc2h1em91Z3lvdVwgOwor6Imy6Ymb562GID4gaXJvZW5waXRzdVwgOwor54Gr5omT55+zID4gaGl1Y2hpaXNoaVwgOwor6Ya46YCg5qWtID4gam91em91Z3lvdVwgOwor5Y2Y55y86Y+hID4gdGFuZ2Fua3lvdVwgOwor5ryB5qWt5qipID4gZ3lvZ3lvdWtlblwgOwor55+z54Gv57GgID4gaXNoaWRvdXJvdVwgOwor5Y2X5rC35rSLID4gbmFucHlvdXlvdVwgOwor6bGI5aC06J+5ID4gdGFyYWJhZ2FuaVwgOwor5bKh5bGx55yMID4gb2theWFtYWtlblwgOwor57Sh57i+5belID4gYm91c2VraWtvdVwgOwor6LW354iG6JasID4ga2liYWt1eWFrdVwgOwor56K66KqN5pu4ID4ga2FrdW5pbnNob1wgOwor6KqV55Sf55+zID4gdGFuam91c2VraVwgOwor6Ziy6Iet5YmkID4gYm91c2h1dXphaVwgOwor6Yyr6KO95ZOBID4gc3V6dXNlaWhpblwgOwor6LKo54mp6Ii5ID4ga2Ftb3RzdXNlblwgOwor5LiA5aGB5omLID4gaWNoaXJ1aXNodVwgOwor6ISa57ea576OID4ga3lha3VzZW5iaVwgOwor5pyJ5L6h54mpID4geXV1a2FidXRzdVwgOwor5qSN55Sf5ZuzID4gc2hva3VzZWl6dVwgOwor55m65oOF5pyfID4gaGF0c3Vqb3VraVwgOwor55m95rC056S+ID4gaGFrdXN1aXNoYVwgOwor5o6h566X5qCqID4gc2Fpc2Fua2FidVwgOwor6ZW35LiB5aC0ID4gbmFnYWNob3ViYVwgOwor5pyJ5a2U6JmrID4geXV1a291Y2h1dVwgOwor5aSp54S255eYID4gdGVuJyduZW50b3VcIDsKK+Wbm+aLjeWtkCA+IHlvbmJ5b3VzaGlcIDsKK+WGl+mVt+ezuyA+IGpvdWNob3VrZWlcIDsKK+aXpeacrOW8jyA+IG5paG9uc2hpa2lcIDsKK+a6gOW5tOm9oiA+IG1hbicnbmVucmVpXCA7CivmtojpmLLoiYcgPiBzaG91Ym91dGVpXCA7CivlsI/mtrLog54gPiBzaG91ZWtpaG91XCA7CivpppbllLHogIUgPiBzaHVzaG91c2hhXCA7Civml6XmnKzlubMgPiBuaWhvbmRhaXJhXCA7CivpiYTpnaLnmq4gPiB0ZXRzdW1lbnBpXCA7CivkuLvmqKnlm70gPiBzaHVrZW5rb2t1XCA7Civosrfmjpvph5EgPiBrYWlrYWtla2luXCA7Civnn7PngbDnn7MgPiBzZWtrYWlzZWtpXCA7CivnsbPllY/lsYsgPiBrb21lZG9uJyd5YVwgOwor5oCd5oOz5YqHID4gc2hpc291Z2VraVwgOwor5LiH5Zu95rCRID4gYmFua29rdW1pblwgOwor5Yun5ZGK54q2ID4ga2Fua29rdWpvdVwgOwor5pWX5YyX5oSfID4gaGFpYm9rdWthblwgOwor5a+G6Ly46Ii5ID4gbWl0c3V5dXNlblwgOwor5Y+v5aSJ57+8ID4ga2FoZW4nJ3lva3VcIDsKK+WBj+mgreeXmyA+IGhlbnRvdXRzdXVcIDsKK+W5tOm9oue1piA+IG5lbnJlaWt5dXVcIDsKK+mAj+ejgeeOhyA+IHRvdWppcml0c3VcIDsKK+WOhOS7i+S6iyA+IHlha2thaWdvdG9cIDsKK+S8j+WwhOa/oCA+IGZ1a3VzaGFnb3VcIDsKK+aHuOWjheWegiA+IGtlbicneW91c3VpXCA7CivnlYzno4HmpbUgPiBrYWlqaWt5b2t1XCA7Civlv5znlKjlipsgPiBvdXlvdXJ5b2t1XCA7Civml6Xmm5zml6UgPiBuaWNoaXlvdWJpXCA7CivmtojpmLLnvbIgPiBzaG91Ym91c2hvXCA7CivosqfkuY/mgKcgPiBiaW5ib3VzaG91XCA7CivmoLjltKnlo4ogPiBrYWt1aG91a2FpXCA7Civoqq3mm7jkvJogPiBkb2t1c2hva2FpXCA7CivkuI3mvZTmhJ8gPiBmdWtldHN1a2FuXCA7CivmlbDlrabogIUgPiBzdXVnYWt1c2hhXCA7CivogbTlj5bogIUgPiBjaG91c2h1c2hhXCA7Civoqq3mm7jkurogPiBkb2t1c2hvamluXCA7CivliY3ku7vlnLAgPiB6ZW4nJ25pbmNoaVwgOwor5ryB6Imy5a62ID4gZ3lvc2hva3VrYVwgOwor6KO95L2c6ICFID4gc2Vpc2FrdXNoYVwgOwor5rKh5YCL5oCnID4gYm90c3Vrb3NlaVwgOwor5YWo5bqX5LitID4gemVudGVuY2h1dVwgOwor5a6Y57Wm5ZOBID4ga2Fua3l1dWhpblwgOwor55m96YeR5pePID4gaGFra2luem9rdVwgOwor5aSp5paH5a2mID4gdGVubW9uZ2FrdVwgOwor5YW15a2m6ICFID4gaGVpZ2FrdXNoYVwgOwor5ZCI5ZSx6ZqKID4gZ2Fzc2hvdXRhaVwgOwor5LiN5oiQ56uLID4gZnVzZWlyaXRzdVwgOwor54yu57SN5ZOBID4ga2VuJydub3VoaW5cIDsKK+e0sOeykuWIhiA+IHNhaXJ5dXVidW5cIDsKK+eMm+e3tOe/kiA+IG1vdXJlbnNodXVcIDsKK+S+i+WklueahCA+IHJlaWdhaXRla2lcIDsKK+WKueeOh+WMliA+IGtvdXJpdHN1a2FcIDsKK+mZpOiZq+iPiiA+IGpvY2h1dWdpa3VcIDsKK+e0heeUn+WnnCA+IGJlbmlzaG91Z2FcIDsKK+W5suaLk+WcsCA+IGthbnRha3VjaGlcIDsKK+WHjeWCt+iAhSA+IHRvdXNob3VzaGFcIDsKK+WNl+WNl+adsSA+IG5hbicnbmFudG91XCA7CivlkIzlm73kurogPiBkb3Vrb2t1amluXCA7Civnm67nmoToqp4gPiBtb2t1dGVraWdvXCA7CivkuInlm73lv5cgPiBzYW5nb2t1c2hpXCA7CivkurrniannlLsgPiBqaW5idXRzdWdhXCA7CivlkLjlhaXlmaggPiBreXV1bnl1dWtpXCA7CivpmLLlr5LmnI0gPiBib3VrYW5mdWt1XCA7Civkv67pmaLplbcgPiBzaHV1aW5jaG91XCA7Civlm73lhoXms5UgPiBrb2t1bmFpaG91XCA7CivmjqLnqbbogIUgPiB0YW5reXV1c2hhXCA7CivliJ3lv4PogIUgPiBzaG9zaGluc2hhXCA7CivmnKrplovnmbogPiBtaWthaWhhdHN1XCA7CivluoPlkYrloZQgPiBrb3Vrb2t1dG91XCA7Civplovmi5PogIUgPiBrYWl0YWt1c2hhXCA7CivkurrpoZ7lraYgPiBqaW5ydWlnYWt1XCA7Civnn6Xml6XmtL4gPiBjaGluaWNoaWhhXCA7CivmnIDpq5jmva4gPiBzYWlrb3VjaG91XCA7CivlpKnnhLbmuK8gPiB0ZW4nJ25lbmtvdVwgOwor5Y+N6YCG5YWQID4gaGFuZ3lha3VqaVwgOwor5LiA5Zu96ICFID4gaWtrb2t1bW9ub1wgOwor5aW95p2Q5paZID4ga291emFpcnlvdVwgOwor5aSq6Zm95pqmID4gdGFpeW91cmVraVwgOwor5bi455So55mWID4gam91eW91aGVraVwgOwor5pep5pWZ6IKyID4gc291a3lvdWlrdVwgOwor5qC85a2Q57ieID4ga291c2hpamltYVwgOwor5Y+N6LuN55qEID4gaGFuZ3VudGVraVwgOwor6Jas5YyF57SZID4geWFrdWhvdXNoaVwgOwor5YW15pu56ZW3ID4gaGVpc291Y2hvdVwgOwor5ryi5paH5a2mID4ga2FuYnVuZ2FrdVwgOwor5oCl5YWI6YuSID4ga3l1dXNlbnBvdVwgOwor5Y+j5aWH6bqXID4ga3VjaGlnaXJlaVwgOwor6KGM5pS/5rOVID4gZ3lvdXNlaWhvdVwgOwor6Iqx6KiA6JGJID4gaGFuYWtvdG9iYVwgOwor6YCB6YeR6aGNID4gc291a2luZ2FrdVwgOwor5rGC5ama6ICFID4ga3l1dWtvbnNoYVwgOwor5YaN6Kq/5pW0ID4gc2FpY2hvdXNlaVwgOwor6aKo6KaL6baPID4ga2F6YW1pZG9yaVwgOwor5Z+35pS/5a6YID4gc2hpc3NlaWthblwgOwor6IO95qW95aCCID4gbm91Z2FrdWRvdVwgOwor5aW95LiL54mpID4ga291a2FidXRzdVwgOwor5Y+M55m65qmfID4gc291aGF0c3VraVwgOwor5YWs5YWx5YK1ID4ga291a3lvdXNhaVwgOwor5pio5bm05p2lID4gc2FrdW5lbnJhaVwgOwor5o+Q5L6b6ICFID4gdGVpa3lvdXNoYVwgOwor6Ya46YCg5a2mID4gam91em91Z2FrdVwgOwor5b6X54K55ZyPID4gdG9rdXRlbmtlblwgOwor5a+p576O5a2mID4gc2hpbmJpZ2FrdVwgOwor5aWz5L6/5omAID4gb24nJ25hYmVuam9cIDsKK+WRieacjeeJqSA+IGdvZnVrdW1vbm9cIDsKK+eXh+WAmee+pCA+IHNob3Vrb3VndW5cIDsKK+agvOWtkOeqkyA+IGtvdXNoaW1hZG9cIDsKK+aWh+aYjuWbvSA+IGJ1bm1laWtva3VcIDsKK+ihjOaUv+aoqSA+IGd5b3VzZWlrZW5cIDsKK+mHkeacqOeKgCA+IGtpbm1va3VzZWlcIDsKK+enkeWtpueahCA+IGthZ2FrdXRla2lcIDsKK+aJi+acreWeiyA+IHRlZnVkYWdhdGFcIDsKK+WFqOiIrOeahCA+IHplbnBhbnRla2lcIDsKK+eJueauiumLvCA+IHRva3VzaHVrb3VcIDsKK+Wcp+e4ruaApyA+IGFzc2h1a3VzZWlcIDsKK+WumOaIv+mVtyA+IGthbmJvdWNob3VcIDsKK+eZveegguezliA+IHNoaXJvemF0b3VcIDsKK+aYpeWIhueCuSA+IHNodW5idW50ZW5cIDsKK+aXp+S4u+S6uiA+IGt5dXVzaHVqaW5cIDsKK+iRiee3kee0oCA+IHlvdXJ5b2t1c29cIDsKK+WGhemdoueahCA+IG5haW1lbnRla2lcIDsKK+iCuue1kOaguCA+IGhhaWtla2tha3VcIDsKK+WbnuWPjumHkSA+IGthaXNodXVraW5cIDsKK+e2v+W4veWtkCA+IHdhdGFib3VzaGlcIDsKK+aApemAsua0viA+IGt5dXVzaGluaGFcIDsKK+iKuOihk+mZoiA+IGdlaWp1dHN1aW5cIDsKK+amtOW8vuegsiA+IHJ5dXVkYW5wb3VcIDsKK+WGkumZuuW/gyA+IGJvdWtlbnNoaW5cIDsKK+WPr+eHg+eJqSA+IGthbmVuYnV0c3VcIDsKK+aXpeacrOS4gCA+IG5paG9uJydpY2hpXCA7Civkv67nt7TogIUgPiBzaHV1cmVuc2hhXCA7Civlj43lsITpj6EgPiBoYW5zaGFreW91XCA7Civkuoznm7Top5IgPiBuaWNob2trYWt1XCA7CivlnovlpInmj5sgPiBrYXRhaGVua2FuXCA7Civljrvli6LniZsgPiBreW9zZWl1c2hpXCA7Civniq/nvarlraYgPiBoYW56YWlnYWt1XCA7Civljp/nsY3lnLAgPiBnZW5zZWtpY2hpXCA7CivmgKfpgZPlvrMgPiBzZWlkb3V0b2t1XCA7CivlubPmu5HljJYgPiBoZWlrYXRzdWthXCA7Civpg7Xkvr/nrrEgPiB5dXViaW5iYWtvXCA7Civlj5fkv6HmlpkgPiBqdXNoaW5yeW91XCA7Civlho3ntYTnuZQgPiBzYWlzb3NoaWtpXCA7Civnvo7ooZPnlYwgPiBiaWp1dHN1a2FpXCA7CivkuI3nrYnlvI8gPiBmdWRvdXNoaWtpXCA7CivntITlrprmm7ggPiB5YWt1am91c2hvXCA7CivkuInnrofml6UgPiBzYW5nYW5pY2hpXCA7CivnmbrnpaXlnLAgPiBoYXNzaG91Y2hpXCA7Civli53miYvlj6MgPiBrYXR0ZWd1Y2hpXCA7CivlpJXpo5/lvowgPiB5dXVzaG9rdWdvXCA7CivmkKzlhaXml6UgPiBoYW4nJ255dXViaVwgOwor6LGq5ZWG5bGkID4gZ291c2hvdXNvdVwgOwor5aW06LGG6IWQID4geWFra29kb3VmdVwgOwor5oSf6Kaa6KuWID4ga2Fua2FrdXJvblwgOwor5Zu955Sj6LuKID4ga29rdXNhbnNoYVwgOwor5LiN5rWB6YCaID4gZnVyeXV1dHN1dVwgOwor5qmL6aCt5aChID4ga3lvdXRvdWhvdVwgOwor5aSP5pmC6ZaTID4gbmF0c3VqaWthblwgOwor55+z54Kt5bGkID4gc2VraXRhbnNvdVwgOwor57W55LiA5Yy5ID4ga2ludWlwcGlraVwgOwor5bu655m95pu4ID4ga2VucGFrdXNob1wgOwor5raI6Ziy5rOVID4gc2hvdWJvdWhvdVwgOwor5Lit6L+R5p2xID4gY2h1dWtpbnRvdVwgOwor6Ki85Lq65Y+wID4gc2hvdW5pbmRhaVwgOwor5rC055Sj5qWtID4gc3Vpc2FuZ3lvdVwgOwor5aWH5oOz5puyID4ga2lzb3VreW9rdVwgOwor5q+U5L6L5byPID4gaGlyZWlzaGlraVwgOwor55S35omA5bivID4gb3Rva29qb3RhaVwgOwor5L+u5pW054mIID4gc2h1dXNlaWhhblwgOwor5Ya35rC05rW0ID4gcmVpc3VpeW9rdVwgOwor5aSP576957mUID4gbmF0c3ViYW9yaVwgOwor6KSS6KiA6JGJID4gaG9tZWtvdG9iYVwgOwor5LqL5YuZ5py6ID4gamltdWR6dWt1ZVwgOwor5Li75YKs5Zu9ID4gc2h1c2Fpa29rdVwgOwor5aSn5aSW5YiIID4gb29zb3RvZ2FyaVwgOwor5riF566X5Lq6ID4gc2Vpc2FuJyduaW5cIDsKK+S9j+awkeelqCA+IGp1dW1pbmh5b3VcIDsKK+eEoee3muWxgCA+IG11c2Vua3lva3VcIDsKK+aCquadkOaWmSA+IGFrdXphaXJ5b3VcIDsKK+aXpeeFp+ioiCA+IG5pc3Nob3VrZWlcIDsKK+aUr+aMgeeOhyA+IHNoaWppcml0c3VcIDsKK+S6jOmAo+eZuiA+IG5pcmVucGF0c3VcIDsKK+WFt+ixoeeahCA+IGd1c2hvdXRla2lcIDsKK+WJr+aKteW9kyA+IGZ1a3V0ZWl0b3VcIDsKK+iDuOiGnOeCjiA+IGt5b3VtYWt1ZW5cIDsKK+mZpOa5v+WZqCA+IGpvc2hpdHN1a2lcIDsKK+S5l+aPm+mnhSA+IG5vcmlrYWVla2lcIDsKK+WPpOacrOWxiyA+IGZ1cnVob24nJ3lhXCA7Civlt6jlpKfnl4cgPiBreW9kYWlzaG91XCA7Civnn6Xml6XlrrYgPiBjaGluaWNoaWthXCA7Civnmb3nnLzoppYgPiBoYWt1Z2Fuc2hpXCA7CivnhaflsITms5UgPiBzaG91c2hhaG91XCA7CivotaTkv6Hlj7cgPiBha2FzaGluZ291XCA7CivplbfmlrnlvaIgPiBjaG91aG91a2VpXCA7CivkuIflm73lj7IgPiBiYW5rb2t1c2hpXCA7CivpgKDlhbXlu6AgPiB6b3VoZWlzaG91XCA7CivmnbHkuqzmub4gPiB0b3VreW91d2FuXCA7Civni6zlibXmgKcgPiBkb2t1c291c2VpXCA7CivmlL7mtarnmZYgPiBob3Vyb3VoZWtpXCA7CivooYzmlL/lrpggPiBneW91c2Vpa2FuXCA7CivmsqHotqPlkbMgPiBib3RzdXNodW1pXCA7CivpmbbphZTlooMgPiB0b3VzdWlreW91XCA7Civlj43lsITop5IgPiBoYW5zaGFrYWt1XCA7CivlhaznlJ/mtq8gPiBrb3VzaG91Z2FpXCA7CivnibnlirnolqwgPiB0b2trb3V5YWt1XCA7CivlpJrpoIXlvI8gPiB0YWtvdXNoaWtpXCA7Civooajmg4XnrYsgPiBoeW91am91a2luXCA7CivliKnnm4rnjocgPiByaWVraXJpdHN1XCA7CivkuInmi43lrZAgPiBzYW5ieW91c2hpXCA7Civph4/osqnlupcgPiByeW91aGFudGVuXCA7Civnt6jpm4blrZAgPiBoZW5zaHV1c2hpXCA7CivlhpfplbfmgKcgPiBqb3VjaG91c2VpXCA7CivpvLvnnLzpj6EgPiBoYW5hbWVnYW5lXCA7CivlhoXoppbpj6EgPiBuYWlzaGlreW91XCA7CivotaTnv6Hnv6AgPiBha2FzaG91YmluXCA7CivnhrHmqZ/plqIgPiBuZXRzdWtpa2FuXCA7CivmkYLorbfohbogPiBzZXRzdWdvc2VuXCA7Civlr77mipfnrZYgPiB0YWlrb3VzYWt1XCA7Civov5Hku6PliocgPiBraW5kYWlnZWtpXCA7CivlvrnlupXnmoQgPiB0ZXR0ZWl0ZWtpXCA7CivmrbTku6Plj7IgPiByZWtpZGFpc2hpXCA7Civml6nopovooaggPiBoYXlhbWloeW91XCA7CivmipXlsITop5IgPiB0b3VzaGFrYWt1XCA7Civnm6PnnaPogIUgPiBrYW50b2t1c2hhXCA7CivlhbHnlKPlnI8gPiBreW91c2Fua2VuXCA7Civlrp/ooYzkuK0gPiBqaWtrb3VjaHV1XCA7CivnjJvmlLvmkoMgPiBtb3Vrb3VnZWtpXCA7Civpm7vlrZDmrrsgPiBkZW5zaGlrYWt1XCA7CivmnZHlvbnloLQgPiBtdXJheWFrdWJhXCA7Civpmbjou5/poqggPiByaWt1bmFucHV1XCA7CivmlL/msrvoibIgPiBzZWlqaXNob2t1XCA7Civmr43lrZDojYkgPiBoYWhha29ndXNhXCA7CivnibnlvoXnlJ8gPiB0b2t1dGFpc2VpXCA7CivkuK3nm6TmiKYgPiBjaHV1YmFuc2VuXCA7CivoiJ7ouI/pnbQgPiBidXRvdWd1dHN1XCA7CivlpKfpmarlr6kgPiBkYWliYWlzaGluXCA7CivnhKHnuIHku48gPiBtdWVuYm90b2tlXCA7Civoqo3lrproqLwgPiBuaW50ZWlzaG91XCA7Civnvo7ooZPmm7ggPiBiaWp1dHN1c2hvXCA7CivoqIjph4/ms5UgPiBrZWlyeW91aG91XCA7Civljp/mjK/li5UgPiBnZW5zaGluZG91XCA7CivlraboirjkvJogPiBnYWt1Z2Vpa2FpXCA7CivohILogqrlv4MgPiBzaGlib3VzaGluXCA7Civni7jppYLpo6kgPiB0YW51a2l1ZG9uXCA7CivmsLTnlKPluoEgPiBzdWlzYW5jaG91XCA7CivlkIjmhrLnmoQgPiBnb3VrZW50ZWtpXCA7CivkuLvkvZPnmoQgPiBzaHV0YWl0ZWtpXCA7CivnqoPnm5fni4IgPiBzZXR0b3VreW91XCA7CivlpbPkuIDoiKwgPiBvbicnbmFpcHBhblwgOwor5rG65Yud57eaID4ga2Vzc2hvdXNlblwgOwor5Y+j5LiK5omLID4ga3VjaGlqb3V6dVwgOwor5bel5aC06ZW3ID4ga291am91Y2hvdVwgOwor5peX5LqM5rWBID4gaGF0YW5pcnl1dVwgOwor5Y2z5L2N5byPID4gc29rdWlzaGlraVwgOwor5oeQ5p+U562WID4ga2FpanV1c2FrdVwgOwor5bm75oOz5YqHID4gZ2Vuc291Z2VraVwgOwor5LqL5YuZ5a6kID4gamltdXNoaXRzdVwgOwor6LaF6KaP5YmHID4gY2hvdWtpc29rdVwgOwor5qC45a625pePID4ga2FrdWthem9rdVwgOwor5aSV5pyI5aScID4geXV1ZHp1a2V5b1wgOwor5aSn6KGG6LuKID4gZGFpc2h1dXNoYVwgOwor54Sh57GN6ICFID4gbXVzZWtpbW9ub1wgOwor5pel54us5LyKID4gbmljaGlkb2t1aVwgOwor5oKq57+S5oWjID4gYWt1c2h1dWthblwgOwor56Gr6YW46YqFID4gcnl1dXNhbmRvdVwgOwor5rC055Sj5a2mID4gc3Vpc2FuZ2FrdVwgOwor5bm456aP5oSfID4ga291ZnVrdWthblwgOwor6LOg5YSf6YeRID4gYmFpc2hvdWtpblwgOwor5YWx55Sj5YWaID4ga3lvdXNhbnRvdVwgOwor6Ii55p2/5aGAID4gZnVuYWl0YWJlaVwgOwor5YWo5a2m6YCjID4gemVuZ2FrdXJlblwgOwor55u06LWw6LevID4gY2hva3Vzb3Vyb1wgOwor5rC36LGG6IWQID4ga29vcmlkb3VmdVwgOwor5YWl5bGF6ICFID4gbnl1dWt5b3NoYVwgOwor5pel6Zmw6ICFID4gaGlrYWdlbW9ub1wgOwor57W257iB57eaID4gemV0c3VlbnNlblwgOwor5ZOB6KmV5LyaID4gaGlucHlvdWthaVwgOwor5rC055O25bqnID4gbWl6dWdhbWV6YVwgOwor5ZCE5Zuj5L2TID4ga2FrdWRhbnRhaVwgOwor5p2l5p2l6YCxID4gcmFpcmFpc2h1dVwgOwor5Zub5Y2B6ZuAID4gc2hpanV1a2FyYVwgOwor6YCa55So6ZaAID4gdHN1dXlvdW1vblwgOwor54iq5qWK5p6dID4gdHN1bWF5b3VqaVwgOwor5pWj6auq5bGLID4gc2FucGF0c3V5YVwgOwor5qCh5q2j5Yi3ID4ga291c2VpenVyaVwgOwor6buS55y86Y+hID4ga3Vyb21lZ2FuZVwgOwor6YCg6Ii55qWtID4gem91c2VuZ3lvdVwgOwor6Kaz5YqH5LyaID4ga2FuZ2VraWthaVwgOwor5YWs5a6z55eFID4ga291Z2FpYnlvdVwgOwor5Y+X5L+h5YG0ID4ganVzaGluZ2F3YVwgOwor5LyB5qWt5b+DID4ga2lneW91c2hpblwgOwor5L+u57mV5belID4gc2h1dXplbmtvdVwgOwor5Y2Y6Lqr6YqDID4gdGFuc2hpbmp1dVwgOwor55m+5bm055uuID4gaHlha3VuZW5tZVwgOwor5rKh55CG5oOzID4gYm90c3VyaXNvdVwgOwor6Z2Z6ISI54KOID4gam91bXlha3VlblwgOwor5YWo6IO96ICFID4gemVuJydub3VzaGFcIDsKK+WRieacjeWVhiA+IGdvZnVrdXNob3VcIDsKK+ecgeizh+a6kCA+IHNob3VzaGlnZW5cIDsKK+mbhuWQiOirliA+IHNodXVnb3Vyb25cIDsKK+emgeeFmeW4rSA+IGtpbicnZW5zZWtpXCA7CivplbfmlrnkvZMgPiBjaG91aG91dGFpXCA7Civlj5fkv6HkurogPiBqdXNoaW4nJ25pblwgOwor5peX5LqM5peSID4gaGF0YW5pcnl1dVwgOwor5oCl5YGc6LuKID4ga3l1dXRlaXNoYVwgOwor57Oe5bqm6IO4ID4ga3Vzb2Rva3lvdVwgOwor5raI6Ziy5aOrID4gc2hvdWJvdXNoaVwgOwor5pyJ55CG5byPID4geXV1cmlzaGlraVwgOwor57WC5YiX6LuKID4gc2h1dXJlc3NoYVwgOwor5omA5pyJ5qC8ID4gc2hveXV1a2FrdVwgOwor55+l6Kaa55+lID4gY2hpa2FrdWNoaVwgOwor6YGK5pKD5omLID4geXV1Z2VraXNodVwgOwor6Kej54ax5YmkID4gZ2VuZXRzdXphaVwgOwor5bqX5bGL54mpID4gdGVuJyd5YW1vbm9cIDsKK+mBiuaSg+aIpiA+IHl1dWdla2lzZW5cIDsKK+WxseawtOmWoyA+IHNhbnN1aWtha3VcIDsKK+iqrOaVmeW4qyA+IHNla2t5b3VzaGlcIDsKK+WztuW4neWbvSA+IHRvdXRlaWtva3VcIDsKK+WNkeWKo+a8oiA+IGhpcmV0c3VrYW5cIDsKK+WFqOeUn+a2ryA+IHplbnNob3VnYWlcIDsKK+WFqOS8muihhiA+IHplbmthaXNodXVcIDsKK+WPjuWuueiAhSA+IHNodXV5b3VzaGFcIDsKK+ino+mbhuWQiCA+IGthaXNodXVnb3VcIDsKK+ebuOWvvueahCA+IHNvdXRhaXRla2lcIDsKK+efs+eBsOS5syA+IHNla2thaW55dXVcIDsKK+WFseacieiAhSA+IGt5b3V5dXVzaGFcIDsKK+aMh+WumuW4rSA+IHNoaXRlaXNla2lcIDsKK+WVhuWTgeWQjSA+IHNob3VoaW5tZWlcIDsKK+agueacrOeahCA+IGtvbnBvbnRla2lcIDsKK+e+juihk+WxlSA+IGJpanV0c3V0ZW5cIDsKK+e4nuaooeanmCA+IHNoaW1hbW95b3VcIDsKK+a2iOmYsuWboyA+IHNob3Vib3VkYW5cIDsKK+S5vuiRoeiQhCA+IGhvc2hpYnVkb3VcIDsKK+e+veaguei7iiA+IGhhbmVndXJ1bWFcIDsKK+eZuuWLleapnyA+IGhhdHN1ZG91a2lcIDsKK+mXmOeJm+WjqyA+IHRvdWd5dXVzaGlcIDsKK+WQjOaDheelqCA+IGRvdWpvdWh5b3VcIDsKK+WFpeS8mumHkSA+IG55dXVrYWlraW5cIDsKK+eGseehrOWMliA+IG5ldHN1a291a2FcIDsKK+mXmOeJm+WgtCA+IHRvdWd5dXVqb3VcIDsKK+WPjeWvvuelqCA+IGhhbnRhaWh5b3VcIDsKK+WGt+WNtOWZqCA+IHJlaWt5YWt1a2lcIDsKK+WAn+WFpemHkSA+IGthcmlpcmVraW5cIDsKK+WVhuWTgeWIuCA+IHNob3VoaW5rZW5cIDsKK+atk+alveihlyA+IGthbnJha3VnYWlcIDsKK+eglOWJiuebpCA+IGtlbnNha3ViYW5cIDsKK+acrOexjeWcsCA+IGhvbnNla2ljaGlcIDsKK+awl+asneeXhyA+IGtpdXRzdXNob3VcIDsKK+aBi+Wls+aIvyA+IGtvaW55b3Vib3VcIDsKK+iEs+elnue1jCA+IG5vdXNoaW5rZWlcIDsKK+iGoOWOn+eXhSA+IGtvdWdlbmJ5b3VcIDsKK+eJveWItueQgyA+IGtlbnNlaWt5dXVcIDsKK+aWsOmAoOiIuSA+IHNoaW56b3VzZW5cIDsKK+aEn+immueCuSA+IGthbmtha3V0ZW5cIDsKK+WBveWQm+WtkCA+IG5pc2VrdW5zaGlcIDsKK+axuuWLneeCuSA+IGtlc3Nob3V0ZW5cIDsKK+WkmuaVsOaxuiA+IHRhc3V1a2V0c3VcIDsKK+aEj+itmOeahCA+IGlzaGlraXRla2lcIDsKK+WPjeWwhOeahCA+IGhhbnNoYXRla2lcIDsKK+S4jea0u+eZuiA+IGZ1a2FwcGF0c3VcIDsKK+WPl+mgmOiovCA+IGp1cnlvdXNob3VcIDsKK+e0lOaWh+WtpiA+IGp1bmJ1bmdha3VcIDsKK+eJueaApeWIuCA+IHRva2t5dXVrZW5cIDsKK+m7hOmHkeihkyA+IG91Z29uanV0c3VcIDsKK+S7ruWLmOWumiA+IGthcmlrYW5qb3VcIDsKK+mciumVt+mhniA+IHJlaWNob3VydWlcIDsKK+WFqOi6q+WDjyA+IHplbnNoaW56b3VcIDsKK+Wvhui8uOWTgSA+IG1pdHN1eXVoaW5cIDsKK+aXouioree3miA+IGtpc2V0c3VzZW5cIDsKK+S6jOmAo+W8jyA+IG5pcmVuc2hpa2lcIDsKK+a4m+mAn+adkCA+IGdlbnNva3V6YWlcIDsKK+WFieejgeawlyA+IGhpa2FyaWppa2lcIDsKK+iovOaYjuabuCA+IHNob3VtZWlzaG9cIDsKK+mWi+aLk+WcsCA+IGthaXRha3VjaGlcIDsKK+iomOi/sOWtkCA+IGtpanV0c3VzaGlcIDsKK+S7ruWFjeiosSA+IGthcmltZW5reW9cIDsKK+WNsOixoeeahCA+IGluc2hvdXRla2lcIDsKK+aXp+aVmeW+kiA+IGt5dXVreW91dG9cIDsKK+iyqOeJqeS+vyA+IGthbW90c3ViaW5cIDsKK+acieacm+agqiA+IHl1dWJvdWthYnVcIDsKK+aFo+S+i+eahCA+IGthbnJlaXRla2lcIDsKK+ims+ebuOWtpiA+IGthbnNvdWdha3VcIDsKK+iCieeUqOeoriA+IG5pa3V5b3VzaHVcIDsKK+WfuuWcsOWxgCA+IGtpY2hpa3lva3VcIDsKK+imluelnue1jCA+IHNoaXNoaW5rZWlcIDsKK+mBqeW/nOeXhyA+IHRla2lvdXNob3VcIDsKK+S4remrmOeUnyA+IGNodXVrb3VzZWlcIDsKK+S4i+a6luWCmSA+IHNoaXRhanVuYmlcIDsKK+S/oemgvOaEnyA+IHNoaW5yYWlrYW5cIDsKK+eZuumFteS5syA+IGhha2tvdW55dXVcIDsKK+aXheiKuOS6uiA+IHRhYmlnZWluaW5cIDsKK+S6uumbquW0qSA+IGhpdG9uYWRhcmVcIDsKK+S4u+S/oeWPtyA+IHNodXNoaW5nb3VcIDsKK+S/oeWlieiAhSA+IHNoaW5wb3VzaGFcIDsKK+Wwuuiyq+azlSA+IHNoYWtrYW5ob3VcIDsKK+e+juihk+WTgSA+IGJpanV0c3VoaW5cIDsKK+mAmuS/oeiyuyA+IHRzdXVzaGluaGlcIDsKK+S/oemgvOaApyA+IHNoaW5yYWlzZWlcIDsKK+aEn+immuavmyA+IGthbmtha3Vtb3VcIDsKK+mghuW/nOaApyA+IGp1bicnbm91c2VpXCA7CivluLjnv5LogIUgPiBqb3VzaHV1c2hhXCA7Civnvo7ooZPlj7IgPiBiaWp1dHN1c2hpXCA7CivmqoDpgqPlr7ogPiBkYW4nJ25hZGVyYVwgOwor5Y2D5q2z6aO0ID4gY2hpdG9zZWFtZVwgOwor6KO95p2Q5qWtID4gc2VpemFpZ3lvdVwgOwor5paw5qmf6Lu4ID4gc2hpbmtpamlrdVwgOwor6IKJ6aWF6aCtID4gbmlrdW1hbmp1dVwgOwor5rC06LOH5rqQID4gbWl6dXNoaWdlblwgOwor55m96bOl5bqnID4gaGFrdWNob3V6YVwgOwor55m+5YiG5q+UID4gaHlha3VidW5oaVwgOwor6Kmm6YeR55+zID4gc2hpa2luc2VraVwgOwor5YSq562J6LOeID4geXV1dG91c2hvdVwgOwor5aSn6KGG57SZID4gdGFpc2h1dXNoaVwgOwor6Iqx6KaL5pmCID4gaGFuYW1pZG9raVwgOwor5aGX5pOm5YmkID4gdG9zYXRzdXphaVwgOwor5pyo6KO95ZOBID4gbW9rdXNlaWhpblwgOwor5YaF6KeS55CDID4gbmFpa2Fra3l1dVwgOwor6aWS6IiM5a62ID4gam91emV0c3VrYVwgOwor54ax5Yem55CGID4gbmV0c3VzaG9yaVwgOwor5paw5bm557eaID4gc2hpbmthbnNlblwgOwor5YuV5ZCR6KGoID4gZG91a291aHlvdVwgOwor5Lqk6Z+/6KmpID4ga291a3lvdXNoaVwgOwor5oyo5ou254q2ID4gYWlzYXRzdWpvdVwgOwor6Zml5rKh5rmWID4ga2FuYm90c3Vrb1wgOwor5LiN5rS75rqMID4gZnVrYXBwYXRzdVwgOwor5L+h5aSp57+BID4gc2hpbnRlbicnb3VcIDsKK+i1t+mbu+WKmyA+IGtpZGVucnlva3VcIDsKK+mOrumtguelrSA+IGNoaW5rb25zYWlcIDsKK+iItuadpeWTgSA+IGhha3VyYWloaW5cIDsKK+aJi+WhqeeavyA+IHRlc2hpb3phcmFcIDsKK+m7kuW6lee/syA+IGt1cm9zb2tvaGlcIDsKK+WtpueUn+W4vSA+IGdha3VzZWlib3VcIDsKK+awtOagveWfuSA+IG1penVzYWliYWlcIDsKK+WWtumAoOeJqSA+IGVpem91YnV0c3VcIDsKK+aXpeeFp+aoqSA+IG5pc3Nob3VrZW5cIDsKK+WFiemHj+WtkCA+IGtvdXJ5b3VzaGlcIDsKK+S4h+aEmuevgCA+IGJhbmd1c2V0c3VcIDsKK+iDveeLguiogCA+IG5vdWt5b3VnZW5cIDsKK+aUr+aMgeWKmyA+IHNoaWppcnlva3VcIDsKK+e1seioiOihqCA+IHRvdWtlaWh5b3VcIDsKK+WFiOWPsuWtpiA+IHNlbnNoaWdha3VcIDsKK+ehq+mFuOe0mSA+IHJ5dXVzYW5zaGlcIDsKK+aAp+W3ruWIpSA+IHNlaXNhYmV0c3VcIDsKK+acrOWbveS6uiA+IGhvbmdva3VqaW5cIDsKK+W3qOimlueahCA+IGt5b3NoaXRla2lcIDsKK+i7oui9jeapnyA+IHRlbnRldHN1a2lcIDsKK+ihqOW/oOeikSA+IGh5b3VjaHV1aGlcIDsKK+WPjuizhOe9qiA+IHNodXV3YWl6YWlcIDsKK+iWrOWJpOW4qyA+IHlha3V6YWlzaGlcIDsKK+W+jOimi+S6uiA+IGtvdWtlbicnbmluXCA7CivpgKPnlKjlvaIgPiByZW4nJ3lvdWtlaVwgOwor5L2Z55m95rOoID4geW9oYWt1Y2h1dVwgOwor5Lyd57Wx55qEID4gZGVudG91dGVraVwgOwor6Kaq5qip6ICFID4gc2hpbmtlbnNoYVwgOwor5YaG5aSp5LqVID4gbWFydXRlbmpvdVwgOwor5bCR5bm06ZmiID4gc2hvdW5lbicnaW5cIDsKK+attOmdkueCrSA+IHJla2lzZWl0YW5cIDsKK+igj+W3peiIuSA+IGthbmlrb3VzZW5cIDsKK+ebruWFq+WIhiA+IG1laGFjaGlidW5cIDsKK+Wbm+WNgeiCqSA+IHNoaWp1dWthdGFcIDsKK+alveims+eahCA+IHJha2thbnRla2lcIDsKK+W/g+WBnOatoiA+IHNoaW50ZWlzaGlcIDsKK+mAn+WwhOegsiA+IHNva3VzaGFob3VcIDsKK+WkmuinkueahCA+IHRha2FrdXRla2lcIDsKK+aWsOW7uuadkCA+IHNoaW5rZW56YWlcIDsKK+axuuWLneaIpiA+IGtlc3Nob3VzZW5cIDsKK+S4jeW/heimgSA+IGZ1aGl0c3V5b3VcIDsKK+aJgemdkuefsyA+IGhlbnNlaXNla2lcIDsKK+WPjOeQg+iPjCA+IHNvdWt5dXVraW5cIDsKK+awtOe+iue+riA+IG1penV5b3VrYW5cIDsKK+aKnOacrOeahCA+IGJhcHBvbnRla2lcIDsKK+WNmOeZuuapnyA+IHRhbnBhdHN1a2lcIDsKK+i7oumAgeWFiCA+IHRlbnNvdXNha2lcIDsKK+WFpeS8muiAhSA+IG55dXVrYWlzaGFcIDsKK+S4uOacqOiIuSA+IG1hcnVraWJ1bmVcIDsKK+S4uOacqOiInyA+IG1hcnVraWJ1bmVcIDsKK+W4jOmHiOa2siA+IGtpc2hha3Vla2lcIDsKK+aciOabnOaXpSA+IGdldHN1eW91YmlcIDsKK+acgOizg+azlSA+IHNhaWNoaW5ob3VcIDsKK+mdqeaWsOa0viA+IGtha3VzaGluaGFcIDsKK+aOouaxguiAhSA+IHRhbmt5dXVzaGFcIDsKK+aIpueXheatuyA+IHNlbmJ5b3VzaGlcIDsKK+eUt+aAp+eahCA+IGRhbnNlaXRla2lcIDsKK+S5s+mFuOiPjCA+IG55dXVzYW5raW5cIDsKK+WJjeeFp+eBryA+IHplbnNob3V0b3VcIDsKK+iFuOaNu+i7oiA+IGNob3VuZW50ZW5cIDsKK+imquWIhuagqiA+IG95YWJ1bmthYnVcIDsKK+WtpueUqOWTgSA+IGdha3V5b3VoaW5cIDsKK+eJueauiuaApyA+IHRva3VzaHVzZWlcIDsKK+WNmOiJsueUuyA+IHRhbnNob2t1Z2FcIDsKK+S7leeri+WIuCA+IHNoaXRhdGVrZW5cIDsKK+mZsOW8geaFtiA+IGthZ2ViZW5rZWlcIDsKK+a3t+ihgOWFkCA+IGtvbmtldHN1amlcIDsKK+iyqeWjsuWFgyA+IGhhbmJhaW1vdG9cIDsKK+W4uOe/kueKryA+IGpvdXNodXVoYW5cIDsKK+a4hea2vOWJpCA+IHNlaXJ5b3V6YWlcIDsKK+acgOWwj+WApCA+IHNhaXNob3VjaGlcIDsKK+awtOaXj+mkqCA+IHN1aXpva3VrYW5cIDsKK+WFseeKr+iAhSA+IGt5b3VoYW5zaGFcIDsKK+Wvv+WPuOmjryA+IHN1c2hpbWVzaGlcIDsKK+aApei7ouaPmyA+IGt5dXV0ZW5rYW5cIDsKK+aLm+W+heeKtiA+IHNob3V0YWlqb3VcIDsKK+aJk+aSsuWCtyA+IGRhYm9rdXNob3VcIDsKK+eJueW+heWIuCA+IHRva3V0YWlrZW5cIDsKK+avkuS6uuWPgiA+IGRva3VuaW5qaW5cIDsKK+WkqeeruuiRtSA+IHRlbmppa3Vhb2lcIDsKK+Wls+S4luW4ryA+IG9uJyduYWpvdGFpXCA7CivkurrplpPnmoQgPiBuaW5nZW50ZWtpXCA7CivoqLrmlq3mm7ggPiBzaGluZGFuc2hvXCA7CivomJroi5TlraYgPiBzZW50YWlnYWt1XCA7Civljp/nqL/mlpkgPiBnZW5rb3VyeW91XCA7Civnm6PnnaPlrpggPiBrYW50b2t1a2FuXCA7CivllYbli5nnnIEgPiBzaG91bXVzaG91XCA7CivlrqPlkYrmm7ggPiBzZW5rb2t1c2hvXCA7CivlpJzlpJzkuK0gPiB5b3J1eW9uYWthXCA7CivpgJrkv6HnsL8gPiB0c3V1c2hpbmJvXCA7CivloIbnqY3lsqkgPiB0YWlzZWtpZ2FuXCA7CivmipHnlZnmiYAgPiB5b2t1cnl1dWpvXCA7Civmkp7mnKjmnZYgPiBzaHVtb2t1enVlXCA7Civpu4Tph5HnjocgPiBvdWdvbnJpdHN1XCA7CivloIbnqY3lsaQgPiB0YWlzZWtpc291XCA7CivlkIjllLHlm6MgPiBnYXNzaG91ZGFuXCA7Civlpb3mlbXmiYsgPiBrb3V0ZWtpc2h1XCA7Civmlofnq6DpoYwgPiBidW5zaG91ZGFpXCA7Civph5HnianlsYsgPiBrYW5hbW9ub3lhXCA7Civlm6Poj4rnpa0gPiBkYW5naWt1c2FpXCA7Civnt6nooZ3mtrIgPiBrYW5zaG91ZWtpXCA7Civlr4Tlrr/oiI4gPiBraXNodWt1c2hhXCA7CivmvZzmnJvpj6EgPiBzZW5ib3VreW91XCA7CivmlrDlt6bnv7wgPiBzaGluc2F5b2t1XCA7CivpgaHlj4rnmoQgPiBzb2t5dXV0ZWtpXCA7CivlkIzmg4Xlv4MgPiBkb3Vqb3VzaGluXCA7CivkuIvnqL3lj6QgPiBzaGl0YWdlaWtvXCA7Civnq7bkuonogIUgPiBreW91c291c2hhXCA7CivllYblupfooZcgPiBzaG91dGVuZ2FpXCA7CivnjonmiYvnrrEgPiB0YW1hdGViYWtvXCA7CivkuIrljYrouqsgPiBqb3VoYW5zaGluXCA7CivmuKzlrprms5UgPiBzb2t1dGVpaG91XCA7CivpmY3lnKfliaQgPiBrb3VhdHN1emFpXCA7CivmgKXlgr7mlpwgPiBreXV1a2Vpc2hhXCA7CivkuKHmo7LpoZ4gPiByeW91c2VpcnVpXCA7CivmnIDkuIrntJogPiBzYWlqb3VreXV1XCA7CivlgYPmnIjliIAgPiBlbmdldHN1dG91XCA7CivnnIvorbfljZIgPiBrYW5nb3NvdHN1XCA7Civnvavnt5rooaggPiBrZWlzZW5oeW91XCA7Civph53lnJ/nq5wgPiBoYXJpbW9ndXJhXCA7Civnga/lj7DlroggPiB0b3VkYWltb3JpXCA7Civku67lhY3nirYgPiBrYXJpbWVuam91XCA7CivlvL7olqzluqsgPiBkYW4nJ3lha3Vrb1wgOwor5ZCI5rOV55qEID4gZ291aG91dGVraVwgOwor5oyr5oqY5oSfID4gemFzZXRzdWthblwgOwor5bmy6JGh6JCEID4gaG9zaGlidWRvdVwgOwor6LWk5paw6IGeID4gYWthc2hpbmJ1blwgOwor6Iag552A6KqeID4ga291Y2hha3Vnb1wgOwor57WC5q2i5b2iID4gc2h1dXNoaWtlaVwgOwor5Ye65riv6Ii5ID4gc2h1a2tvdXNlblwgOwor6Ly45YWl6aGNID4geXVueXV1Z2FrdVwgOwor55Sy5q676aGeID4ga291a2FrdXJ1aVwgOwor6Zqc5aOB55S7ID4gc2hvdWhla2lnYVwgOwor5rq25o6l5qmfID4geW91c2V0c3VraVwgOwor5LmX57WE5ZOhID4gbm9yaWt1bWlpblwgOwor6IWO6IeT55eFID4gamluem91YnlvdVwgOwor5Y+v5pCs5byPID4ga2FoYW5zaGlraVwgOwor5YGl562G5a62ID4ga2VucGl0c3VrYVwgOwor5q2j5Lit57eaID4gc2VpY2h1dXNlblwgOwor5Y2D5bm06ZaTID4gc2VuJyduZW5rYW5cIDsKK+ajkuejgeefsyA+IGJvdWppc2hha3VcIDsKK+ims+iznumtmiA+IGthbnNob3VneW9cIDsKK+elnuWtpuagoSA+IHNoaW5nYWtrb3VcIDsKK+S9nOalreacjSA+IHNhZ3lvdWZ1a3VcIDsKK+eZuuedgOaJgCA+IGhhdGNoYWt1am9cIDsKK+imqui/keaEnyA+IHNoaW5raW5rYW5cIDsKK+S5seazpea1gSA+IHJhbmRlaXJ5dXVcIDsKK+W9k+ebtOWToSA+IHRvdWNob2t1aW5cIDsKK+e1seioiOeahCA+IHRvdWtlaXRla2lcIDsKK+iKuOihk+WutiA+IGdlaWp1dHN1a2FcIDsKK+eOhOmWouWFiCA+IGdlbmthbnNha2lcIDsKK+a3sea1t+mtmiA+IHNoaW5rYWlneW9cIDsKK+WQjOW/l+eahCA+IGRvdXNoaXRla2lcIDsKK+S+oeWNg+mHkSA+IGF0YWlzZW5raW5cIDsKK+S5neWbnuaIpiA+IGt5dXVrYWlzZW5cIDsKK+WNiuawuOS5hSA+IGhhbicnZWlreXV1XCA7Civpm5HlvbnlqaYgPiB6YXRzdWVraWZ1XCA7Civlhrflh43mpa0gPiByZWl0b3VneW91XCA7CivkuKHnlJ/poZ4gPiByeW91c2VpcnVpXCA7CivlhJLmlZnnmoQgPiBqdWt5b3V0ZWtpXCA7Civmj5rpmbjoiaYgPiB5b3VyaWt1a2FuXCA7Civph43orLnmhY4gPiBqdXVraW5zaGluXCA7Civlh43osYbohZAgPiBzaGltaWRvdWZ1XCA7CivmsLjosLflnJIgPiBuYWdhdGFuaWVuXCA7Civkuozmp73lvI8gPiBuaXNvdXNoaWtpXCA7Civnm7jkuZfnqY0gPiBzb3Vqb3VzZWtpXCA7Civoj4zpoZ7lraYgPiBraW5ydWlnYWt1XCA7Civpm5HlvbnlpKsgPiB6YXRzdWVraWZ1XCA7CivmlrDliIrmm7ggPiBzaGlua2Fuc2hvXCA7CivpnZLlsJHlubQgPiBzZWlzaG91bmVuXCA7CivmjqjpgLLogIUgPiBzdWlzaGluc2hhXCA7CivliJfluK3ogIUgPiByZXNzZWtpc2hhXCA7Civlm73nlKPlk4EgPiBrb2t1c2FuaGluXCA7Civmh5Dml6foq4cgPiBrYWlreXV1ZGFuXCA7Civmnq/ojYnnhrEgPiBrb3NvdW5ldHN1XCA7CivkuK3nlLLmnb8gPiBjaHV1a2FucGFuXCA7Civntr/lrp/msrkgPiBtZW5qaXRzdXl1XCA7Civln4vkvI/mra8gPiBtYWlmdWt1c2hpXCA7CivlhoXnt5LkuosgPiBuYWlzaG9nb3RvXCA7CivkuIDnrYnljZIgPiBpdHRvdXNvdHN1XCA7CivnpZ7ku6PmnYkgPiBqaW5kYWlzdWdpXCA7CivlgKTltanmoKogPiBuZWdhc2FrYWJ1XCA7CivmlL/msrvlipsgPiBzZWlqaXJ5b2t1XCA7CivnrZTnlLPmm7ggPiB0b3VzaGluc2hvXCA7CivkubHlv4PogIUgPiByYW5zaGluc2hhXCA7CivkurrplpPmpa0gPiBuaW5nZW53YXphXCA7CivlhbHorIDogIUgPiBreW91Ym91c2hhXCA7CivmnaXos5PluK0gPiByYWloaW5zZWtpXCA7CivoiJ7ouI/mm7IgPiBidXRvdWt5b2t1XCA7Civkv67ooYzogIUgPiBzaHVneW91c2hhXCA7Civls7bmoLnnnIwgPiBzaGltYW5la2VuXCA7CivlvLfnoazoq5YgPiBreW91a291cm9uXCA7Civms5Xmsrvlm70gPiBob3VjaGlrb2t1XCA7CivkuI3lvpfnrZYgPiBmdXRva3VzYWt1XCA7CivlnKjnsbPkuK0gPiB6YWliZWljaHV1XCA7CivljL/lkI3mgKcgPiB0b2t1bWVpc2VpXCA7CivnmbvlsbHpnbQgPiB0b3phbmd1dHN1XCA7CivluqfmlbfniaIgPiB6YXNoaWtpcm91XCA7CivnpZ7moLzljJYgPiBzaGlua2FrdWthXCA7CivotaTlpJbnt5ogPiBzZWtpZ2Fpc2VuXCA7CivolqznlKjphZIgPiB5YWt1eW91c2h1XCA7CivntZDmoLjoj4wgPiBrZWtrYWt1a2luXCA7CivojYnlsaXomasgPiB6b3VyaW11c2hpXCA7CivlpKfooYbmgKcgPiB0YWlzaHV1c2VpXCA7Civlr4Tlrr/nlJ8gPiBraXNodWt1c2VpXCA7CivmmIfmsZ7msLQgPiBzaG91a291c3VpXCA7CivmrabogIXmhYQgPiBtdXNoYWJ1cnVpXCA7Civmlofnq6Doq5YgPiBidW5zaG91cm9uXCA7Civnibnpgbjlk4EgPiB0b2t1c2VuaGluXCA7Civov5HopqrogIUgPiBraW5zaGluc2hhXCA7CivopIfmlbDlvaIgPiBmdWt1c3V1a2VpXCA7Civlub3pgoPlooMgPiB5dXVzdWlreW91XCA7Civlho3mipXnpaggPiBzYWl0b3VoeW91XCA7CivkuI3mtLvli5UgPiBmdWthdHN1ZG91XCA7Civlhajlr67liLYgPiB6ZW5yeW91c2VpXCA7Civov73mgrzkvJogPiB0c3VpdG91a2FpXCA7Civnmb3lhbXmiKYgPiBoYWt1aGVpc2VuXCA7Civoq4vmsYLmqKkgPiBzZWlreXV1a2VuXCA7Civlv6DpnIrloZQgPiBjaHV1cmVpdG91XCA7CivpmpnplpPpoqggPiBzdWtpbWFrYXplXCA7CivlhbHmnInlnLAgPiBreW91eXV1Y2hpXCA7CivniYfngrrmm78gPiBrYXRhZ2F3YXNlXCA7Civnt6nooZ3lvIEgPiBrYW5zaG91YmVuXCA7Civlrr/moLnojYkgPiBzaHVra29uc291XCA7CivlpKfnq4vogIUgPiBvb2RhdGVtb25vXCA7Civms7DlsbHmnKggPiB0YWlzYW5ib2t1XCA7Civmir3nsaTliLggPiBjaHV1c2Vua2VuXCA7Civns7jnirbomasgPiBzaGlqb3VjaHV1XCA7CivntbbnuIHkvZMgPiB6ZXRzdWVudGFpXCA7CivpnZLmnpzniakgPiBzZWlrYWJ1dHN1XCA7Civph4zoqIDokYkgPiBzYXRva290b2JhXCA7Civos7zoqq3ogIUgPiBrb3Vkb2t1c2hhXCA7Civlo7Losrfpq5ggPiBiYWliYWlkYWthXCA7CivmjLrpgLLpmoogPiB0ZWlzaGludGFpXCA7CivohLHmsLTnl4cgPiBkYXNzdWlzaG91XCA7Civli6fpgLLluLMgPiBrYW5qaW5jaG91XCA7Civmi6HlvLXljJYgPiBrYWt1Y2hvdWthXCA7CivmrrrkurrprLwgPiBzYXRzdWppbmtpXCA7CivmtYHli5XmgKcgPiByeXV1ZG91c2VpXCA7Civlm5vph43llLEgPiBzaGlqdXVzaG91XCA7CivmlZnogrLogIUgPiBreW91aWt1c2hhXCA7Civlj43lr77lgbQgPiBoYW50YWlnYXdhXCA7CivnkLTkuIDlvLUgPiBrb3RvaXRjaG91XCA7CivlhoXlnKjnmoQgPiBuYWl6YWl0ZWtpXCA7CivkuInmrrXot7MgPiBzYW5kYW50b2JpXCA7Civpo5vouo3nmoQgPiBoaXlha3V0ZWtpXCA7CivmiYvplbfnjL8gPiB0ZW5hZ2F6YXJ1XCA7CivogIHnnLzpj6EgPiByb3VnYW5reW91XCA7Civku67lh6bliIYgPiBrYXJpc2hvYnVuXCA7CivlhajkurrmoLwgPiB6ZW5qaW5rYWt1XCA7CivliIbms4zniakgPiBidW5waWJ1dHN1XCA7Civoq4vmsYLmm7ggPiBzZWlreXV1c2hvXCA7CivkuI3msbrmlq0gPiBmdWtldHN1ZGFuXCA7CivlhYjlhYjpgLEgPiBzZW5zZW5zaHV1XCA7Civoh7Tlkb3nmoQgPiBjaGltZWl0ZWtpXCA7CivkubPnn7Poi7EgPiBueXV1c2VraWVpXCA7CivosqHmlL/lraYgPiB6YWlzZWlnYWt1XCA7CivnrqHlvKbmpb0gPiBrYW5nZW5nYWt1XCA7Civpo7Lpo5/lupcgPiBpbnNob2t1dGVuXCA7CivntJnoo73lk4EgPiBrYW1pc2VpaGluXCA7Civpu4Tph5HlvosgPiBvdWdvbnJpdHN1XCA7Civms5XlvovmoYggPiBob3VyaXRzdWFuXCA7CivljYrnm7Lnl4cgPiBoYW5tb3VzaG91XCA7CivnoZ3phbjpioAgPiBzaG91c2FuZ2luXCA7CivpmLLnt4/nnIEgPiBib3Vzb3VzaG91XCA7CivpgIbmr5TkvosgPiBneWFrdWhpcmVpXCA7CivmipXmm7jnrrEgPiB0b3VzaG9iYWtvXCA7Civln47kuIvnlLogPiBqb3VrYW1hY2hpXCA7CivnibnliKXlp5QgPiB0b2t1YmV0c3VpXCA7CivmnZHoip3lsYUgPiBtdXJhc2hpYmFpXCA7Civntpnmga/lrZAgPiBtYW1hbXVzdWtvXCA7Civnmbrkv6Hpn7MgPiBoYXNzaGluJydvblwgOwor5Zub5q2755CDID4gc2hpc2hpa3l1dVwgOwor54yu6YeR566xID4ga2Vua2luYmFrb1wgOwor5oim55Wl5a62ID4gc2Vucnlha3VrYVwgOwor5YWs6IG05LyaID4ga291Y2hvdWthaVwgOwor5rCX6ayx55eHID4ga2l1dHN1c2hvdVwgOwor6KSH5pWw5ZueID4gZnVrdXN1dWthaVwgOwor5Lya6KiI5a2mID4ga2Fpa2VpZ2FrdVwgOwor57Ch55Wl5YyWID4ga2Fucnlha3VrYVwgOwor57Wm6Zu757eaID4ga3l1dWRlbnNlblwgOwor5ZCJ56Wl5aSpID4ga2lzc2hvdXRlblwgOwor5b6h5b2x55+zID4gbWlrYWdlaXNoaVwgOwor5YaF5Zu955SjID4gbmFpa29rdXNhblwgOwor6Zuq5pyI6IqxID4gc2V0c3VnZWtrYVwgOwor56eB5pu4566xID4gc2hpc2hvYmFrb1wgOwor55u05pig6aSoID4gY2hva3VlaWthblwgOwor55eF55CG5a2mID4gYnlvdXJpZ2FrdVwgOwor5b6p5Yi754mIID4gZnVra29rdWJhblwgOwor6YCA5buD55qEID4gdGFpaGFpdGVraVwgOwor5Lq66ZaT5a2mID4gbmluZ2VuZ2FrdVwgOwor5LiL552A6aGeID4gc2hpdGFnaXJ1aVwgOwor5ZSQ5aSJ5pyoID4gdG91aGVuYm9rdVwgOwor57ea5pKu5b2xID4gc2Vuc2F0c3VlaVwgOwor5paw55Sf6Z2iID4gc2hpbnNlaW1lblwgOwor5pWw5pel5b6MID4gc3V1aml0c3Vnb1wgOwor6LaF5ZCI6YeRID4gY2hvdWdvdWtpblwgOwor5aSa5Zu957GNID4gdGFrb2t1c2VraVwgOwor56mN566X5rOVID4gc2VraXNhbmhvdVwgOwor5aSW54K65rOVID4gZ2FpdGFtZWhvdVwgOwor5Ye65ZOB6ICFID4gc2h1cHBpbnNoYVwgOwor6Kaa6YaS5YmkID4ga2FrdXNlaXphaVwgOwor6auY5bGx6J22ID4ga291emFuY2hvdVwgOwor6L+R57iB5bGeID4ga2luJydlbnpva3VcIDsKK+S4iumBlOmDqCA+IGthbmRhY2hpbWVcIDsKK+WPr+mNm+mJhCA+IGthdGFudGV0c3VcIDsKK+W/g+eQhueahCA+IHNoaW5yaXRla2lcIDsKK+S5l+aPm+WIuCA+IG5vcmlrYWVrZW5cIDsKK+aVmeiCsueVjCA+IGt5b3Vpa3VrYWlcIDsKK+mZsOaltee3miA+IGlua3lva3VzZW5cIDsKK+WNiuiJh+i6qyA+IGhhbnRlaXNoaW5cIDsKK+imquWFhOW8nyA+IG95YWt5b3VkYWlcIDsKK+aXhemkqOalrSA+IHJ5b2thbmd5b3VcIDsKK+Wtpuacn+acqyA+IGdha2tpbWF0c3VcIDsKK+WIsOadpeeJqSA+IHRvdXJhaW1vbm9cIDsKK+ayluS7suS7lSA+IG9raW5ha2FzaGlcIDsKK+WkluWbveijvSA+IGdhaWtva3VzZWlcIDsKK+e1guebpOaIpiA+IHNodXViYW5zZW5cIDsKK+mAhuWFiee3miA+IGd5YWtrb3VzZW5cIDsKK+ixoeW+tOa0viA+IHNob3VjaG91aGFcIDsKK+WLp+mAsuWFgyA+IGthbmppbm1vdG9cIDsKK+mtmumhnuWtpiA+IGd5b3J1aWdha3VcIDsKK+e4nueRqueRmSA+IHNoaW1hbWVub3VcIDsKK+ecn+epuueuoSA+IHNoaW5rdXVrYW5cIDsKK+iIjuWIqeWIpSA+IHNoYXJpYmV0c3VcIDsKK+S6rOmYquelniA+IGtlaWhhbnNoaW5cIDsKK+aFo+e/kuazlSA+IGthbnNodXVob3VcIDsKK+mgremZgOiiiyA+IHp1ZGFidWt1cm9cIDsKK+mZsOalteeuoSA+IGlua3lva3VrYW5cIDsKK+a3t+WSjOeJqSA+IGtvbndhYnV0c3VcIDsKK+WIgOmNm+WGtiA+IGthdGFuYWthamlcIDsKK+a9nOS8j+aApyA+IHNlbnB1a3VzZWlcIDsKK+aLm+W+heWIuCA+IHNob3V0YWlrZW5cIDsKK+WPl+mbo+evgCA+IGp1bmFuc2V0c3VcIDsKK+a4rOWumuWApCA+IHNva3V0ZWljaGlcIDsKK+WMlueyp+e0mSA+IGtlc2hvdWdhbWlcIDsKK+Wkp+aGsueroCA+IGRhaWtlbnNob3VcIDsKK+WNmOiJsuWFiSA+IHRhbnNob2trb3VcIDsKK+eUsuauu+e2sSA+IGtvdWtha3Vrb3VcIDsKK+mbhuWQiOS9kyA+IHNodXVnb3V0YWlcIDsKK+eri+W+gOeUnyA+IHRhY2hpb3Vqb3VcIDsKK+WtkOWurumguCA+IHNoaWt5dXVrZWlcIDsKK+e1jOmok+eahCA+IGtlaWtlbnRla2lcIDsKK+WMlueyp+eusSA+IGtlc2hvdWJha29cIDsKK+S6jOeVquaYnyA+IG5pYmFuYm9zaGlcIDsKK+azleW+i+WutiA+IGhvdXJpdHN1a2FcIDsKK+a0l+a/r+advyA+IHNlbnRha3VpdGFcIDsKK+a7keayouWJpCA+IGthdHRha3V6YWlcIDsKK+WvvuensOaApyA+IHRhaXNob3VzZWlcIDsKK+WwkeW5tOazlSA+IHNob3VuZW5ob3VcIDsKK+W+s+W3neWutiA+IHRva3VnYXdha2VcIDsKK+a1geWLleS9kyA+IHJ5dXVkb3V0YWlcIDsKK+e1guWIiuWPtyA+IHNodXVrYW5nb3VcIDsKK+ebo+S/ruiAhSA+IGthbnNodXVzaGFcIDsKK+WFsee3qOiAhSA+IGt5b3VoZW5zaGFcIDsKK+e1seioiOWtpiA+IHRvdWtlaWdha3VcIDsKK+i8qumDree3miA+IHJpbmtha3VzZW5cIDsKK+i7jeiJpumzpSA+IGd1bmthbmRvcmlcIDsKK+WVhuiIuemaiiA+IHNob3VzZW50YWlcIDsKK+i2hea6gOWToSA+IGNob3VtYW4nJ2luXCA7CivniYfmiYvpjYsgPiBrYXRhdGVuYWJlXCA7CivogqHplqLnr4AgPiBrb2thbnNldHN1XCA7Civoqr/lkbPmlpkgPiBjaG91bWlyeW91XCA7Civlj4jlsI/kvZwgPiBtYXRha29zYWt1XCA7CivkuI3mraPnm7QgPiBmdXNob3VqaWtpXCA7CivmtKrnqY3lsaQgPiBrb3VzZWtpc291XCA7CivmpJzlnKflmaggPiBrZW4nJ2F0c3VraVwgOwor5p+T54mp5bGLID4gc29tZW1vbm95YVwgOwor6YWN6Iaz5Lq6ID4gaGFpemVuJyduaW5cIDsKK+Wig+eVjOe3miA+IGt5b3VrYWlzZW5cIDsKK+mdmeeJqeeUuyA+IHNlaWJ1dHN1Z2FcIDsKK+aVmeiCsuazlSA+IGt5b3Vpa3Vob3VcIDsKK+WPjumbhumtlCA+IHNodXVzaHV1bWFcIDsKK+mbouiBt+iAhSA+IHJpc2hva3VzaGFcIDsKK+WgseWlqOmHkSA+IGhvdXNob3VraW5cIDsKK+iCoemWk+evgCA+IGtva2Fuc2V0c3VcIDsKK+eJp+W4q+mkqCA+IGJva3VzaGlrYW5cIDsKK+WNoOmgmOi7jSA+IHNlbnJ5b3VndW5cIDsKK+S4reeUn+S7oyA+IGNodXVzZWlkYWlcIDsKK+S4i+WNiuacnyA+IHNoaW1vaGFua2lcIDsKK+aVmeS8muazlSA+IGt5b3VrYWlob3VcIDsKK+WOn+awtOeIhiA+IGdlbnN1aWJha3VcIDsKK+WIuue5jeezuCA+IHNoaXNodXVpdG9cIDsKK+aQreS5l+apiyA+IHRvdWpvdWt5b3VcIDsKK+efs+m5uOeusSA+IHNla2tlbmJha29cIDsKK+Wbnui7oui7uCA+IGthaXRlbmppa3VcIDsKK+WIu+S4gOWIuyA+IGtva3Vpa2tva3VcIDsKK+WJtemAoOeahCA+IHNvdXpvdXRla2lcIDsKK+eXtOWRhueXhyA+IGNoaWhvdXNob3VcIDsKK+aOkuawtOmHjyA+IGhhaXN1aXJ5b3VcIDsKK+WQhOaDheWgsSA+IGtha3Vqb3Vob3VcIDsKK+aguOaWh+azlSA+IGtha3VidW5wb3VcIDsKK+Wkp+OAheeahCA+IGRhaWRhaXRla2lcIDsKK+WjsuS4iumrmCA+IHVyaWFnZWRha2FcIDsKK+a3seaIkOWyqSA+IHNoaW5zZWlnYW5cIDsKK+iDuOS4ieWvuCA+IG11bmVzYW56dW5cIDsKK+W+l+aEj+WuoiA+IHRva3Vpa3lha3VcIDsKK+W+tOWFteWItiA+IGNob3VoZWlzZWlcIDsKK+aAp+acrOiDvSA+IHNlaWhvbicnbm91XCA7CivkvJHoqLrml6UgPiBreXV1c2hpbmJpXCA7Civln7fph5Hpi7wgPiBzaGlra29uZ291XCA7Civnq5znmq7lt7sgPiByeXV1aGltYWtpXCA7Civlm57luLDnhrEgPiBrYWlraW5ldHN1XCA7CivnpZ3os4DkvJogPiBzaHVrdWdha2FpXCA7CivnlJ/mtLvosrsgPiBzZWlrYXRzdWhpXCA7Civms5Xli5nlsYAgPiBob3VtdWt5b2t1XCA7CivkuK3lrabmoKEgPiBjaHV1Z2Fra291XCA7CivmnIjopovojYkgPiB0c3VraW1pc291XCA7CivpgJrkv5fljJYgPiB0c3V1em9rdWthXCA7Civnm7TkuqTmgKcgPiBjaG9ra291c2VpXCA7CivnqLLnhrHnl4UgPiBpbW9jaGlieW91XCA7Civpq5jouI/nmoQgPiBrb3V0b3V0ZWtpXCA7Civntabmlpnml6UgPiBreXV1cnlvdWJpXCA7CivkuIflubTpnZIgPiBtYW4nJ25lbnNlaVwgOwor5bCP5YmN5o+QID4gc2hvdXplbnRlaVwgOwor5YWt5LiJ5Yi2ID4gcm9rdXNhbnNlaVwgOwor6YCg5p6X5a2mID4gem91cmluZ2FrdVwgOwor5YWo6LKs5Lu7ID4gemVuc2VraW5pblwgOwor54Wn5piO5by+ID4gc2hvdW1laWRhblwgOwor5oSb5Zu95b+DID4gYWlrb2t1c2hpblwgOwor55+z6bm455q/ID4gc2Vra2VuemFyYVwgOwor5LqI5a6a6KqsID4geW90ZWlzZXRzdVwgOwor6ISz56Gs5aGeID4gbm91a291c29rdVwgOwor57eP5aSn5bCGID4gc291ZGFpc2hvdVwgOwor5aeL5pyr5bGLID4gc2hpbWF0c3V5YVwgOwor5Zu95pyJ5p6XID4ga29rdXl1dXJpblwgOwor6Jas5a2m6YOoID4geWFrdWdha3VidVwgOwor5om55Yik5YqbID4gaGloYW5yeW9rdVwgOwor562J6Lqr5aSnID4gdG91c2hpbmRhaVwgOwor57eP5pS75pKDID4gc291a291Z2VraVwgOwor6auY5bGx55eFID4ga291emFuYnlvdVwgOwor5LqU5pyI56WtID4gZ29nYXRzdXNhaVwgOwor6LuN5qW96ZqKID4gZ3VuZ2FrdXRhaVwgOwor5LiJ6YeN5ZSxID4gc2FuanV1c2hvdVwgOwor5Y2X5Lqs6LGGID4gbmFua2lubWFtZVwgOwor5puy6aas5birID4ga3lva3ViYXNoaVwgOwor5Ymv5Y+45LukID4gZnVrdXNoaXJlaVwgOwor5pi85pel5LitID4gaGlydWhpbmFrYVwgOwor5bi46K2Y5a62ID4gam91c2hpa2lrYVwgOwor6KiA6JGJ5bC7ID4ga290b2JhamlyaVwgOwor6IK65rW45r2kID4gaGFpc2hpbmp1blwgOwor6ICV5L2c6ICFID4ga291c2FrdXNoYVwgOwor5ZCM5b+D5YaGID4gZG91c2hpbicnZW5cIDsKK+iHtOatu+mHjyA+IGNoaXNoaXJ5b3VcIDsKK+W8geiovOirliA+IGJlbnNob3Vyb25cIDsKK+aWsOeZu+WgtCA+IHNoaW50b3Vqb3VcIDsKK+W8t+WKm+eyiSA+IGt5b3VyaWtpa29cIDsKK+S6iOWCmeWupCA+IHlvYmlzaGl0c3VcIDsKK+W6l+mgreagqiA+IHRlbnRvdWthYnVcIDsKK+eZuuWwhOiWrCA+IGhhc3NoYXlha3VcIDsKK+WMlueyp+awtCA+IGtlc2hvdW1penVcIDsKK+WNgemAsuazlSA+IGppc3NoaW5ob3VcIDsKK+aWh+ethuWutiA+IGJ1bnBpdHN1a2FcIDsKK+W+k+mHj+eojiA+IGp1dXJ5b3V6ZWlcIDsKK+eTpuWxi+aguSA+IGthd2FyYXlhbmVcIDsKK+mWouS/guiqvyA+IGthbmtlaWNob3VcIDsKK+WUr+W/g+irliA+IHl1aXNoaW5yb25cIDsKK+WKseaMr+euoSA+IHJlaXNoaW5rYW5cIDsKK+WFqOaXpeepuiA+IHplbicnbmlra3V1XCA7CivkuozmnprohbAgPiBuaW1haWdvc2hpXCA7CivmtYHliJHlnLAgPiByeXV1a2VpY2hpXCA7CivmtKrnqY3kuJYgPiBrb3VzZWtpc2VpXCA7CivpnIfngb3lnLAgPiBzaGluc2FpY2hpXCA7CivnnLzou5/oho8gPiBnYW4nJ25hbmtvdVwgOwor5rC05pm25L2TID4gc3Vpc2hvdXRhaVwgOwor54K55ruF5ZmoID4gdGVubWV0c3VraVwgOwor5YWE5byf5YiGID4ga3lvdWRhaWJ1blwgOwor6YeR6ZaA5qmLID4ga2lubW9ua3lvdVwgOwor5pmv5Yud5ZywID4ga2Vpc2hvdWNoaVwgOwor5YaF5o6l5YaGID4gbmFpc2V0c3VlblwgOwor55Sf5rS76IumID4gc2Vpa2F0c3VrdVwgOwor5p2x54Wn5a6uID4gdG91c2hvdWd1dVwgOwor5Y+X6Zuj5puyID4ganVuYW5reW9rdVwgOwor5a++5rWB5ZyPID4gdGFpcnl1dWtlblwgOwor5Y2x6Zm654mpID4ga2lrZW5idXRzdVwgOwor56CU5L+u55SfID4ga2Vuc2h1dXNlaVwgOwor6L+R6Kaq5amaID4ga2luc2hpbmtvblwgOwor5Lqk6Kqt5paHID4ga291ZG9rdWJ1blwgOwor6ISz5Y2S5LitID4gbm91c290Y2h1dVwgOwor54S85q275L2TID4gc2hvdXNoaXRhaVwgOwor5LiA56We5pWZID4gaXNzaGlua3lvdVwgOwor5rS+5Ye65omAID4gaGFzaHV0c3Vqb1wgOwor5oyv5YuV6KiIID4gc2hpbmRvdWtlaVwgOwor5bGI5oqY6KqeID4ga3Vzc2V0c3Vnb1wgOwor5puy6aas5ZujID4ga3lva3ViYWRhblwgOwor5rOo5bCE5rayID4gY2h1dXNoYWVraVwgOwor56aP56aE5a+/ID4gZnVrdXJva3VqdVwgOwor57SZ5ZC56ZuqID4ga2FtaWZ1YnVraVwgOwor5Luy5LuL6ICFID4gY2h1dWthaXNoYVwgOwor6ZuG6YWN5Lq6ID4gc2h1dWhhaW5pblwgOwor5a6a56SO5byPID4gdGVpc29zaGlraVwgOwor6KOB5Yik6ZW3ID4gc2FpYmFuY2hvdVwgOwor6Zu76Kmx5bGAID4gZGVud2FreW9rdVwgOwor5L+456W/57GzID4gaG91cm9rdW1haVwgOwor6Iqx5ZC56ZuqID4gaGFuYWZ1YnVraVwgOwor5YW157On57GzID4gaHlvdXJvdW1haVwgOwor6KeS57Sw5belID4gdHN1bm96YWlrdVwgOwor6Ly46YCB5YqbID4geXVzb3VyeW9rdVwgOwor5p6X6YeO5bqBID4gcmluJyd5YWNob3VcIDsKK+aUr+mFjeeahCA+IHNoaWhhaXRla2lcIDsKK+Wkqum8k+apiyA+IHRhaWtvYmFzaGlcIDsKK+eulOWKm+eyiSA+IGhha3VyaWtpa29cIDsKK+eNheWtkOm8uyA+IHNoaXNoaWJhbmFcIDsKK+mAo+maiumVtyA+IHJlbnRhaWNob3VcIDsKK+err+acq+apnyA+IHRhbm1hdHN1a2lcIDsKK+WQueWlj+alvSA+IHN1aXNvdWdha3VcIDsKK+eGseWwhOeXhSA+IG5lc3NoYWJ5b3VcIDsKK+W+s+eUqOeTtiA+IHRva3V5b3ViaW5cIDsKK+Wkqea0peelniA+IGFtYXRzdWthbWlcIDsKK+mZjeawtOmHjyA+IGtvdXN1aXJ5b3VcIDsKK+WHuumHkeiAhSA+IHNodWtraW5zaGFcIDsKK+WFuOWei+eahCA+IHRlbmtlaXRla2lcIDsKK+S4reaeouaApyA+IGNodXVzdXVzZWlcIDsKK+i/t+W9qeacjSA+IG1laXNhaWZ1a3VcIDsKK+S9j+WuhemboyA+IGp1dXRha3VuYW5cIDsKK+WMlueyp+aWmSA+IGtlc2hvdXJ5b3VcIDsKK+W/g+eQhuWtpiA+IHNoaW5yaWdha3VcIDsKK+iKs+WQjemMsiA+IGhvdW1laXJva3VcIDsKK+WLleWKm+eCiSA+IGRvdXJ5b2t1cm9cIDsKK+Wwj+WFkOeXhSA+IHNob3VuaWJ5b3VcIDsKK+WwkeW5tOWboyA+IHNob3VuZW5kYW5cIDsKK+WFqOmdoueahCA+IHplbm1lbnRla2lcIDsKK+Wwj+W4guawkSA+IHNob3VzaGltaW5cIDsKK+WJr+asoeeahCA+IGZ1a3VqaXRla2lcIDsKK+akjumWk+advyA+IHRzdWlrYW5iYW5cIDsKK+iqsueojueOhyA+IGthemVpcml0c3VcIDsKK+mDteaUv+ecgSA+IHl1dXNlaXNob3VcIDsKK+Wkj+WgtOaJgCA+IG5hdHN1YmFzaG9cIDsKK+WOmuWMlueypyA+IGF0c3VnZXNob3VcIDsKK+S6jOS6uue1hCA+IGZ1dGFyaWd1bWlcIDsKK+iHtOWRveWCtyA+IGNoaW1laXNob3VcIDsKK+WJr+mDveW/gyA+IGZ1a3V0b3NoaW5cIDsKK+eZuuahiOiAhSA+IGhhdHN1YW5zaGFcIDsKK+W8t+WKm+eKryA+IGdvdXJpa2loYW5cIDsKK+a0l+a/r+S7oyA+IHNlbnRha3VkYWlcIDsKK+mBiuazs+ihkyA+IHl1dWVpanV0c3VcIDsKK+ijvemZtualrSA+IHNlaXRvdWd5b3VcIDsKK+eQg+W6p+aomSA+IGt5dXV6YWh5b3VcIDsKK+WNoOacieaoqSA+IHNlbicneXV1a2VuXCA7CivmsojkuIHoirEgPiBjaGluY2hvdWdlXCA7CivokaHokITniZkgPiBwb3J1dG9nYXJ1XCA7CivmlZnkvJrloIIgPiBreW91a2FpZG91XCA7CivmlK/lupfplbcgPiBzaGl0ZW5jaG91XCA7CivlvqHlubTnjokgPiBvdG9zaGlkYW1hXCA7Civopb/mtIvokbEgPiBzZWl5b3VuZWdpXCA7Civnk5zlrp/poZQgPiB1cml6YW5lZ2FvXCA7CivnnJ/nqbrluK8gPiBzaGlua3V1dGFpXCA7Civov73pgIHmpJwgPiB0c3Vpc291a2VuXCA7CivmnKrmsbrnm6MgPiBtaWtldHN1a2FuXCA7Civmma7pgJrmoKogPiBmdXRzdXVrYWJ1XCA7CivllYblupfkuLsgPiBzaG91dGVuc2h1XCA7CivmjqHnn7PloLQgPiBzYWlzZWtpam91XCA7CivniaLlkI3kuLsgPiByb3VuYW51c2hpXCA7CivntK/pgLLnqI4gPiBydWlzaGluemVpXCA7CivlpKfnq7bkuokgPiBkYWlreW91c291XCA7Civmo67mnpfms5UgPiBzaGlucmluaG91XCA7CivlkIzpg7fkurogPiBkb3VreW91amluXCA7CivmtL7lh7rlqaYgPiBoYXNodXRzdWZ1XCA7CivlhoXlm73lgrUgPiBuYWlrb2t1c2FpXCA7CivmlK/luqbph5EgPiBzaGl0YWt1a2luXCA7Civlho3mtbjnpLwgPiBzYWlzaGlucmVpXCA7Civlm73mnInlnLAgPiBrb2t1eXV1Y2hpXCA7CivopqrlsZXmm7ggPiBzaGludGVuc2hvXCA7Civlu4nmgaXlv4MgPiByZW5jaGlzaGluXCA7Civnmobml6Lpo58gPiBrYWlraXNob2t1XCA7Civou6LlsYXlhYggPiB0ZW5reW9zYWtpXCA7CivpgKPntaHpp4UgPiByZW5yYWt1ZWtpXCA7Civpm7voqbHlj6MgPiBkZW53YWd1Y2hpXCA7Civnsr7li6Tos54gPiBzZWlraW5zaG91XCA7CivlgaXlv5jnl4cgPiBrZW5ib3VzaG91XCA7CivmlZnkvJrlj7IgPiBreW91a2Fpc2hpXCA7CivlsJHlubTkvJogPiBzaG91bmVua2FpXCA7CivotIvmiYvntJkgPiBuaXNldGVnYW1pXCA7Civlh7rlvoHou40gPiBzaHVzc2VpZ3VuXCA7CivoqIjnlLvogIUgPiBrZWlrYWt1c2hhXCA7CivmlaPmlofnmoQgPiBzYW5idW50ZWtpXCA7CivmjLrouqvpmoogPiB0ZWlzaGludGFpXCA7Civlj4vlpb3nmoQgPiB5dXVrb3V0ZWtpXCA7Civlj6zllprnirYgPiBzaG91a2Fuam91XCA7Civoqo3oqLzogIUgPiBuaW5zaG91c2hhXCA7CivlubTnlKPpoY0gPiBuZW5zYW5nYWt1XCA7Civmj5vnrpfooaggPiBrYW56YW5oeW91XCA7CivmspbnuITnnIwgPiBva2luYXdha2VuXCA7CivmlZHkuJbou40gPiBreXV1c2VpZ3VuXCA7CivmuoDotrPmhJ8gPiBtYW56b2t1a2FuXCA7CivlpYnlhazlhYggPiBob3Vrb3VzYWtpXCA7Civpm7vloLHmlpkgPiBkZW5wb3VyeW91XCA7CivojZLkuovluKsgPiBhcmFnb3Rvc2hpXCA7CivmoYPmupDpg7cgPiB0b3VnZW5reW91XCA7Civok67mnIjlsLwgPiByZW5nZXRzdW5pXCA7Civnvr3mlpHomoogPiBoYW1hZGFyYWthXCA7Civnp4Hmm7jlh70gPiBzaGlzaG9iYWtvXCA7CivmnLTlv7Xku4EgPiBib2t1bmVuamluXCA7CivlrZDlrq7nmYwgPiBzaGlreXV1Z2FuXCA7Civno4HlipvoqIggPiBqaXJ5b2t1a2VpXCA7CivmoLnnspLoj4wgPiBrb25yeXV1a2luXCA7CivnuKbml4vnm6QgPiB0YXRlc2VuYmFuXCA7CivluILlvbnmiYAgPiBzaGl5YWt1c2hvXCA7CivmpJzmtYHoqIggPiBrZW5yeXV1a2VpXCA7CivljbPlo7LkvJogPiBzb2t1YmFpa2FpXCA7Civlu7bkurrlk6EgPiBub2JlamluJydpblwgOwor6Kq/5ZCI5YmkID4gY2hvdWdvdXphaVwgOwor6KaB56K66KqNID4geW91a2FrdW5pblwgOwor5bi457eR5qi5ID4gam91cnlva3VqdVwgOwor6YG455CD55y8ID4gc2Vua3l1dWdhblwgOwor55+z5ZCI5oimID4gaXNoaWdhc3NlblwgOwor5bCB5bu655qEID4gaG91a2VudGVraVwgOwor6aeQ5Zyo5omAID4gY2h1dXphaXNob1wgOwor5LiW5biv5Li7ID4gc2V0YWludXNoaVwgOwor5bmz5bi45b+DID4gaGVpam91c2hpblwgOwor6LGG5Y+w6aKoID4gbWFtZXRhaWZ1dVwgOwor6Ymx5bGx5qWtID4ga291emFuZ3lvdVwgOwor5qeL5paH5pyoID4ga291YnVubW9rdVwgOwor5Y+C6KyA6ZW3ID4gc2FuYm91Y2hvdVwgOwor5YaZ55yf6aSoID4gc2hhc2hpbmthblwgOwor5oim5pmC6ImyID4gc2VuamlzaG9rdVwgOwor5L2P5a6F6KGXID4ganV1dGFrdWdhaVwgOwor6aCT54+N5ryiID4gdG9uY2hpbmthblwgOwor5byx6YW45oCnID4gamFrdXNhbnNlaVwgOwor5Lit5LuV5YiHID4gbmFrYWppa2lyaVwgOwor5Yid6Iie5Y+wID4gaGF0c3VidXRhaVwgOwor5YaZ55yf6aGUID4gc2hhc2hpbmdhb1wgOwor5Y2X5Lqs546JID4gbmFua2luZGFtYVwgOwor6Ii557GN5rivID4gc2Vuc2VraWtvdVwgOwor54eQ54Gw55+zID4gcmlua2Fpc2VraVwgOwor5LiA5bm06ZaTID4gaWNoaW5lbmthblwgOwor6Z2e5o6l6KemID4gaGlzZXNzaG9rdVwgOwor5oyB57aa55qEID4gaml6b2t1dGVraVwgOwor5Za25qWt5LitID4gZWlneW91Y2h1dVwgOwor6LaF6YGO6aGNID4gY2hvdWthZ2FrdVwgOwor6aCQ6LK4546HID4geW90YWlyaXRzdVwgOwor5Luj55So6IKJID4gZGFpeW91bmlrdVwgOwor5pmC57O75YiXID4gamlrZWlyZXRzdVwgOwor5a2Q5L6b5pyNID4ga29kb21vZnVrdVwgOwor6K2m6KaW5bqBID4ga2Vpc2hpY2hvdVwgOwor5YWN55ar5oCnID4gbWVuJydla2lzZWlcIDsKK+ezu+e1seeahCA+IGtlaXRvdXRla2lcIDsKK+i7jeeUqOmHkSA+IGd1bicneW91a2luXCA7CivojZLku5XkuosgPiBhcmFzaGlnb3RvXCA7CivnmbvlsbHlrqIgPiB0b3phbmt5YWt1XCA7CivkvY7os4Pph5EgPiB0ZWljaGluZ2luXCA7CivkvrXlrrPogIUgPiBzaGluZ2Fpc2hhXCA7Civlo7LkuIrnpaggPiB1cmlhZ2VweW91XCA7CivmlL7pgIHliocgPiBob3Vzb3VnZWtpXCA7Civml6XnqIvooaggPiBuaXR0ZWloeW91XCA7Civlia/okazlk4EgPiBmdWt1c291aGluXCA7CivmjL/lhaXmlocgPiBzb3VueXV1YnVuXCA7CivliJ3lrabogIUgPiBzaG9nYWt1c2hhXCA7CivmlZnnv5LmiYAgPiBreW91c2h1dWpvXCA7CivlhaXloLTploAgPiBueXV1am91bW9uXCA7CivlrpjluoHooZcgPiBrYW5jaG91Z2FpXCA7Civopo/liYfnmoQgPiBraXNva3V0ZWtpXCA7CivlsI/lhorlrZAgPiBzaG91c2Fzc2hpXCA7CivovLvlsITnt5ogPiBmdWt1c2hhc2VuXCA7CivljYHpgLLliLYgPiBqaXNzaGluc2VpXCA7CivopIfoo73lk4EgPiBmdWt1c2VpaGluXCA7Civon7nlt6XoiLkgPiBrYW5pa291c2VuXCA7Civmo67mnpfluK8gPiBzaGlucmludGFpXCA7CivntZDmmbbns7sgPiBrZXNzaG91a2VpXCA7CivnhKHnp6nluo8gPiBtdWNoaXRzdWpvXCA7CivkuLvoprPnmoQgPiBzaHVrYW50ZWtpXCA7CivnoLTlo4rlipsgPiBoYWthaXJ5b2t1XCA7CivkuInmr5vkvZwgPiBzYW5tb3VzYWt1XCA7Civmoafnmq7okbogPiBoaXdhZGFidWtpXCA7CivlipvnuZTmqZ8gPiByaWtpc2hva2tpXCA7Civlha3pnaLkvZMgPiByb2t1bWVudGFpXCA7Civnmb3kurrnqK4gPiBoYWt1amluc2h1XCA7CivmsY7npZ7oq5YgPiBoYW5zaGlucm9uXCA7Civku67lrprmrL4gPiBrYXJpdGVpa2FuXCA7CivntI3nqI7poY0gPiBub3V6ZWlnYWt1XCA7Civoq7jlpJblm70gPiBzaG9nYWlrb2t1XCA7CivlpJbmjqXlhoYgPiBnYWlzZXRzdWVuXCA7Civoo73ntJnmpa0gPiBzZWlzaGlneW91XCA7CivpiZvnm7Tnt5ogPiBlbmNob2t1c2VuXCA7Civlv4Ppm7voqIggPiBzaGluZGVua2VpXCA7Civnpo/liKnooaggPiBmdWt1cmloeW91XCA7Civlvq7nlJ/niakgPiBiaXNlaWJ1dHN1XCA7Civlrp3nn7PlupcgPiBob3VzZWtpdGVuXCA7CivlibXmpa3ogIUgPiBzb3VneW91c2hhXCA7Civpnanoo73lk4EgPiBrYXdhc2VpaGluXCA7CivlubPlubTkvZwgPiBoZWluZW5zYWt1XCA7CivnlJ/mhYvlraYgPiBzZWl0YWlnYWt1XCA7CivnjL/oip3lsYUgPiBzYXJ1c2hpYmFpXCA7CivloLTlpJbmoKogPiBqb3VnYWlrYWJ1XCA7CivlvIHoqLzms5UgPiBiZW5zaG91aG91XCA7CivljZTlrprmm7ggPiBreW91dGVpc2hvXCA7CivkupTml6znr4AgPiBnb2p1bnNldHN1XCA7CivliJ3ku7vntaYgPiBzaG9uaW5reXV1XCA7Civpmbjmm7nnrYkgPiByaWt1c291dG91XCA7Civlpb3miJDnuL4gPiBrb3VzZWlzZWtpXCA7CivpgJrmnInmgKcgPiB0c3V1eXV1c2VpXCA7CivogbTlsI7niqwgPiBjaG91ZG91a2VuXCA7Civno4Hlipvnt5ogPiBqaXJ5b2t1c2VuXCA7Civpm6LlqZrnjocgPiByaWtvbnJpdHN1XCA7CivnoZ3phbjloakgPiBzaG91c2FuJydlblwgOwor5YaN56K66KqNID4gc2Fpa2FrdW5pblwgOwor55m65qGI5qipID4gaGF0c3VhbmtlblwgOwor55qG5pei6J2VID4ga2Fpa2lzaG9rdVwgOwor6YWq6KO95ZOBID4gcmFrdXNlaWhpblwgOwor5Zyf5oCn6aqoID4gZG9zaG91Ym9uZVwgOwor6YG/5aaK6JasID4gaGluaW4nJ3lha3VcIDsKK+eZuueUn+WtpiA+IGhhc3NlaWdha3VcIDsKK+S6uueorueahCA+IGppbnNodXRla2lcIDsKK+ejgeefs+ebpCA+IGppc2hha3ViYW5cIDsKK+Wkp+iUtee1jCA+IGRhaXpvdWt5b3VcIDsKK+ays+WOn+m2uCA+IGthd2FyYWhpd2FcIDsKK+eVmee9ruWgtCA+IHJ5dXVjaGlqb3VcIDsKK+mAmumiqOWtlCA+IHRzdXVmdXVrb3VcIDsKK+imgeaxguiAhSA+IHlvdWt5dXVzaGFcIDsKK+ijveezuOalrSA+IHNlaXNoaWd5b3VcIDsKK+efpeaBteiiiyA+IGNoaWVidWt1cm9cIDsKK+e0memJhOegsiA+IGthbWlkZXBwb3VcIDsKK+WInemjm+ihjCA+IGhhdHN1aGlrb3VcIDsKK+eZu+WxseWPoyA+IHRvemFuZ3VjaGlcIDsKK+iyr+awtOmHjyA+IGNob3N1aXJ5b3VcIDsKK+ekvuS8mumNiyA+IHNoYWthaW5hYmVcIDsKK+auiuWLsuizniA+IHNodWt1bnNob3VcIDsKK+mBi+WLlemdtCA+IHVuZG91Z3V0c3VcIDsKK+S6pOmam+WbvSA+IGtvdXNhaWtva3VcIDsKK+WFq+aWh+WtlyA+IGhhY2hpbW9uamlcIDsKK+mWi+eZuumDqCA+IGthaWhhdHN1YnVcIDsKK+iqv+WNsOWbvSA+IGNob3Vpbmtva3VcIDsKK+ebuOe2mueojiA+IHNvdXpva3V6ZWlcIDsKK+idi+S6uuW9oiA+IHJvdW5pbmd5b3VcIDsKK+S6uuWQjemMsiA+IGppbm1laXJva3VcIDsKK+iQveesrOeUnyA+IHJha3VkYWlzZWlcIDsKK+WHneeBsOWyqSA+IGd5b3VrYWlnYW5cIDsKK+WIqeS7mOWCtSA+IHJpdHN1a2lzYWlcIDsKK+S9k+iFlOWjgSA+IHRhaWtvdWhla2lcIDsKK+aMh+aOjOe0iyA+IHNoaXNob3Vtb25cIDsKK+Wlh+i3oeeahCA+IGtpc2VraXRla2lcIDsKK+ibi+eZvea6kCA+IHRhbnBha3VnZW5cIDsKK+aWreacq+mtlCA+IGRhbm1hdHN1bWFcIDsKK+ips+S8neekviA+IHNob3VkZW5zaGFcIDsKK+iRrOWEgOW8jyA+IHNvdWdpc2hpa2lcIDsKK+aQjeWus+mhjSA+IHNvbmdhaWdha3VcIDsKK+mJhOmLvOalrSA+IHRla2tvdWd5b3VcIDsKK+S4gOW8pueQtCA+IGljaGlnZW5raW5cIDsKK+aal+e0q+iJsiA+IGFuc2hpc2hva3VcIDsKK+WFiOS7u+mghiA+IHNlbicnbmluanVuXCA7Civlpb3miKbnmoQgPiBrb3VzZW50ZWtpXCA7CivpmLLplbflrpggPiBib3VjaG91a2FuXCA7CivmsLTlnKfoqIggPiBzdWlhdHN1a2VpXCA7CivlpJblm73li6IgPiBnYWlrb2t1emVpXCA7Civpn5Plm73kurogPiBrYW5rb2t1amluXCA7CivmlaLpl5jos54gPiBrYW50b3VzaG91XCA7Civmr5LopovlvbkgPiBkb2t1bWl5YWt1XCA7CivmqZ/lhoXpo58gPiBraW5haXNob2t1XCA7Civoo4/nlarntYQgPiB1cmFiYW5ndW1pXCA7Civlm73pmLLoq5YgPiBrb2t1Ym91cm9uXCA7CivlrpjmsYLlk4EgPiBrYW5reXV1aGluXCA7Civlm73pmpvnt5ogPiBrb2t1c2Fpc2VuXCA7Civosrjph5HluqsgPiBrYXNoaWtpbmtvXCA7CivpgJ/oqJjooZMgPiBzb2traWp1dHN1XCA7Civlm73oqIDokYkgPiBrdW5pa290b2JhXCA7CivljJDooYznlrkgPiBmdWtrb3VzaGluXCA7CivnlLrlt6XloLQgPiBtYWNoaWtvdWJhXCA7Civoh7PmgKXkvr8gPiBzaGlreXV1YmluXCA7Civlrp3lhqDnq6AgPiBob3VrYW5zaG91XCA7Civoo73ns5bmpa0gPiBzZWl0b3VneW91XCA7Civoi6Xml6bpgqMgPiB3YWthZGFuJyduYVwgOwor5oyR5oim6ICFID4gY2hvdXNlbnNoYVwgOwor6YmE6Ymx55+zID4gdGVra291c2VraVwgOwor5qiq6ZqU6IacID4gb3VrYWt1bWFrdVwgOwor5ZCM5qWt6ICFID4gZG91Z3lvdXNoYVwgOwor5rS755So6KqeID4ga2F0c3V5b3Vnb1wgOwor5rex5ZG85ZC4ID4gc2hpbmtva3l1dVwgOwor5LiJ55Wq6baPID4gc2FuYmFuZG9yaVwgOwor5Yik5Lu75a6YID4gaGFuJyduaW5rYW5cIDsKK+WHuuWLpOiAhSA+IHNodWtraW5zaGFcIDsKK+WkluWbveWCtSA+IGdhaWtva3VzYWlcIDsKK+mAo+e1oeiIuSA+IHJlbnJha3VzZW5cIDsKK+iQveesrOeCuSA+IHJha3VkYWl0ZW5cIDsKK+mAsuihjOebuCA+IHNoaW5rb3Vzb3VcIDsKK+S4ieeVqumzpSA+IHNhbmJhbmRvcmlcIDsKK+axuuWumueahCA+IGtldHRlaXRla2lcIDsKK+iCieaWmeeQhiA+IG5pa3VyeW91cmlcIDsKK+aWh+azleeahCA+IGJ1bnBvdXRla2lcIDsKK+WbveaWh+azlSA+IGtva3VidW5wb3VcIDsKK+i2heW8qee0miA+IGNob3Vkb2t5dXVcIDsKK+Wkp+iUteecgSA+IG9va3VyYXNob3VcIDsKK+aEn+aDheeahCA+IGthbmpvdXRla2lcIDsKK+S5l+WQiOiIuSA+IG5vcmlhaWJ1bmVcIDsKK+W+s+eUqOWTgSA+IHRva3V5b3VoaW5cIDsKK+eHg+aWmeajkiA+IG5lbnJ5b3Vib3VcIDsKK+S6jOaXpemFlCA+IGZ1dHN1a2F5b2lcIDsKK+elnue1jOezuyA+IHNoaW5rZWlrZWlcIDsKK+S7ruitsOmVtyA+IGthcmlnaWNob3VcIDsKK+eLrOaWreirliA+IGRva3VkYW5yb25cIDsKK+WkluWbveS6uiA+IGdhaWtva3VqaW5cIDsKK+ePjeeznua8oiA+IGNoaW5wdW5rYW5cIDsKK+aMr+WLleadvyA+IHNoaW5kb3ViYW5cIDsKK+S4u+aVmeWGoCA+IHNodWt5b3VrYW5cIDsKK+ato+aVmeW4qyA+IHNlaWt5b3VzaGlcIDsKK+e0sOiPjOWtpiA+IHNhaWtpbmdha3VcIDsKK+iAleS9nOWcsCA+IGtvdXNha3VjaGlcIDsKK+aUuemAsuWFmiA+IGthaXNoaW50b3VcIDsKK+S4ieWIhuaQlyA+IHNhbmJ1dHN1a2lcIDsKK+S8kemWkeWcsCA+IGt5dXVrYW5jaGlcIDsKK+i7jeeUqOiJpiA+IGd1bicneW91a2FuXCA7CivmlrDogZ7ntJkgPiBzaGluYnVuc2hpXCA7CivovLvlsITngrkgPiBmdWt1c2hhdGVuXCA7CivkuJbkv5fnmoQgPiBzZXpva3V0ZWtpXCA7Civph43lnKfmhJ8gPiBqdXVhdHN1a2FuXCA7CivosYbpiYTnoLIgPiBtYW1lZGVwcG91XCA7CivlhKrnp4Dlk4EgPiB5dXVzaHV1aGluXCA7Civph5Hono3nlYwgPiBraW4nJ3l1dWthaVwgOwor5YKN6IG05Yi4ID4gYm91Y2hvdWtlblwgOwor6LKv6YeR566xID4gY2hva2luYmFrb1wgOwor5Zu95aKD57eaID4ga29ra3lvdXNlblwgOwor6JqV57O45qWtID4gc2Fuc2hpZ3lvdVwgOwor5LiA5bm06I2JID4gaWNoaW5lbnNvdVwgOwor6auY5a+G5bqmID4ga291bWl0c3Vkb1wgOwor5YWN55ar5L2TID4gbWVuJydla2l0YWlcIDsKK+ejgeawl+W1kCA+IGppa2lhcmFzaGlcIDsKK+aMr+WLleaVsCA+IHNoaW5kb3VzdXVcIDsKK+Wkp+ekvOacjSA+IHRhaXJlaWZ1a3VcIDsKK+aUueiJr+eoriA+IGthaXJ5b3VzaHVcIDsKK+WMl+WbveS6uiA+IGhva2tva3VqaW5cIDsKK+mAo+e1oee3miA+IHJlbnJha3VzZW5cIDsKK+eJouW9ueS6uiA+IHJvdXlha3VuaW5cIDsKK+WGheelneiogCA+IG5haXNodXVnZW5cIDsKK+WNiui6q+WDjyA+IGhhbnNoaW56b3VcIDsKK+Wkp+m7kuWkqSA+IGRhaWtva3V0ZW5cIDsKK+S4jeWIhuWJsiA+IGZ1YnVua2F0c3VcIDsKK+ilv+WMl+ilvyA+IHNlaWhva3VzZWlcIDsKK+S4reS4luWPsiA+IGNodXVzZWlzaGlcIDsKK+aAkumrquWkqSA+IGRvaGF0c3V0ZW5cIDsKK+WPjemdqeWRvSA+IGhhbmtha3VtZWlcIDsKK+aWsOiBnuekviA+IHNoaW5idW5zaGFcIDsKK+S4gOapn+i7uCA+IGljaGlraWppa3VcIDsKK+mbhumtmueBryA+IHNodXVneW90b3VcIDsKK+mbquimi+mFkiA+IHl1a2ltaXpha2VcIDsKK+WdiuS4u+mgrSA+IGJvdXp1YXRhbWFcIDsKK+WFiOmok+eahCA+IHNlbmtlbnRla2lcIDsKK+mXh+e1puS4jiA+IHlhbWlreXV1eW9cIDsKK+WCjeiBtOS6uiA+IGJvdWNob3VuaW5cIDsKK+S6i+Wun+S4iiA+IGppaml0c3Vqb3VcIDsKK+e+qeS+oOW/gyA+IGdpa3lvdXNoaW5cIDsKK+eUqOawtOWggCA+IHlvdXN1aWJvcmlcIDsKK+S7ruaZruiriyA+IGthcmlidXNoaW5cIDsKK+WNoOmgmOWcsCA+IHNlbnJ5b3VjaGlcIDsKK+WvneijheWTgSA+IHNoaW5zb3VoaW5cIDsKK+eUuuWGheS8miA+IGNob3VuYWlrYWlcIDsKK+WQjOebn+WbvSA+IGRvdW1laWtva3VcIDsKK+eZuuiCsuacnyA+IGhhdHN1aWt1a2lcIDsKK+iqk+e0hOabuCA+IHNlaXlha3VzaG9cIDsKK+eZuuWxleS4rSA+IGhhdHRlbmNodXVcIDsKK+iMtueVqueahCA+IGNoYWJhbnRla2lcIDsKK+eJueeUo+WTgSA+IHRva3VzYW5oaW5cIDsKK+ijveeyiealrSA+IHNlaWZ1bmd5b3VcIDsKK+a2iOWOu+azlSA+IHNob3VreW9ob3VcIDsKK+iCm+mWgOWtpiA+IGtvdW1vbmdha3VcIDsKK+Wkp+WPuOaVmSA+IGRhaXNoaWt5b3VcIDsKK+WmhOaDs+eXhyA+IG1vdXNvdXNob3VcIDsKK+W+oeeUqOmBlCA+IGdveW91ZGF0c3VcIDsKK+WxleekuueJqSA+IHRlbmppYnV0c3VcIDsKK+iHquauuuiAhSA+IGppc2F0c3VzaGFcIDsKK+WwhOW5uOW/gyA+IHNoYWtvdXNoaW5cIDsKK+S9nOabsuWutiA+IHNha2t5b2t1a2FcIDsKK+WFrOaVmeS8miA+IGtvdWt5b3VrYWlcIDsKK+ioiOeUu+aApyA+IGtlaWtha3VzZWlcIDsKK+WIh+i/q+aEnyA+IHNlcHBha3VrYW5cIDsKK+S4uOWkqeS6lSA+IG1hcnV0ZW5qb3VcIDsKK+aeouWvhumZoiA+IHN1dW1pdHN1aW5cIDsKK+Wbm+WFreWIpCA+IHNoaXJva3ViYW5cIDsKK+i/veS9k+mokyA+IHRzdWl0YWlrZW5cIDsKK+WFpeWgtOiAhSA+IG55dXVqb3VzaGFcIDsKK+WNiueXheS6uiA+IGhhbmJ5b3VuaW5cIDsKK+aNnOe0oumaiiA+IHNvdXNha3V0YWlcIDsKK+WPi+WlveWbvSA+IHl1dWtvdWtva3VcIDsKK+auv+S4iuS6uiA+IHRlbmpvdWJpdG9cIDsKK+aIquaWreapnyA+IHNldHN1ZGFua2lcIDsKK+eEoeawtOeJqSA+IG11c3VpYnV0c3VcIDsKK+WBpeW6t+eahCA+IGtlbmtvdXRla2lcIDsKK+aWsOS9k+aTjSA+IHNoaW50YWlzb3VcIDsKK+epuuS4ree3miA+IGt1dWNodXVzZW5cIDsKK+eUsOiIjumBkyA+IGluYWthbWljaGlcIDsKK+azouS5g+iKsSA+IG5hbWlub2hhbmFcIDsKK+WBtuWDj+aVmSA+IGd1dXpvdWt5b3VcIDsKK+elnuipseWtpiA+IHNoaW53YWdha3VcIDsKK+ebuOe2muaoqSA+IHNvdXpva3VrZW5cIDsKK+aAp+aVmeiCsiA+IHNlaWt5b3Vpa3VcIDsKK+WJjeWTqOe3miA+IHplbnNob3VzZW5cIDsKK+eLrOWlj+iAhSA+IGRva3Vzb3VzaGFcIDsKK+i1pOihgOeQgyA+IHNla2tla2t5dXVcIDsKK+WkqeWPsOWulyA+IHRlbmRhaXNodXVcIDsKK+i7jealveaJiyA+IGd1bmdha3VzaHVcIDsKK+i7jeiJpuW3uyA+IGd1bmthbm1ha2lcIDsKK+aal+ikkOiJsiA+IGFua2Fzc2hva3VcIDsKK+mAhuS9nOeUqCA+IGd5YWt1c2F5b3VcIDsKK+aMkeaIpueKtiA+IGNob3VzZW5qb3VcIDsKK+aknOmHj+e3miA+IGtlbnJ5b3VzZW5cIDsKK+e2suadk+WtkCA+IGFtaWpha3VzaGlcIDsKK+WGjeazqOaWhyA+IHNhaWNodXVtb25cIDsKK+WGheWPjei2syA+IG5haWhhbnNva3VcIDsKK+ekvueUqOaXjyA+IHNoYXlvdXpva3VcIDsKK+W5tOWwkeiAhSA+IG5lbnNob3VzaGFcIDsKK+aWsOeUn+S7oyA+IHNoaW5zZWlkYWlcIDsKK+S/neeuoeeJqSA+IGhva2FuYnV0c3VcIDsKK+WEquWLneiAhSA+IHl1dXNob3VzaGFcIDsKK+aUueiJr+eCuSA+IGthaXJ5b3V0ZW5cIDsKK+e1puaOkuawtCA+IGt5dXVoYWlzdWlcIDsKK+WkqeecvOmPoSA+IHRlbmdhbmt5b3VcIDsKK+S4iemAo+WLnSA+IHNhbnJlbnNob3VcIDsKK+S4jeeZuuW8viA+IGZ1aGF0c3VkYW5cIDsKK+WNiuWumOeahCA+IGhhbmthbnRla2lcIDsKK+aMr+WLleWtkCA+IHNoaW5kb3VzaGlcIDsKK+a0u+eZuuWMliA+IGthcHBhdHN1a2FcIDsKK+WPjumbhuWutiA+IHNodXVzaHV1a2FcIDsKK+mFuOWMlumJhCA+IHNhbmthdGV0c3VcIDsKK+aWsOS6uueOiyA+IHNoaW5qaW4nJ291XCA7Civlu7bml6XmlbAgPiBub2Jlbmlzc3V1XCA7CivlpYnnjK7poIwgPiBob3VrZW5zaG91XCA7CivosrjlupfoiJcgPiBrYXNoaXRlbnBvXCA7CivkuozkurrlhbEgPiBmdXRhcml0b21vXCA7Civlj47mloLliaQgPiBzaHV1cmVuemFpXCA7Civlm73pmpvms5UgPiBrb2t1c2FpaG91XCA7Civpq5jlrablubQgPiBrb3VnYWt1bmVuXCA7CivmoLjngb3lrrMgPiBrYWt1c2FpZ2FpXCA7CivkvL3ojYnlrZAgPiB0b2dpem91c2hpXCA7Civnhb3mg4XnmoQgPiBzZW5qb3V0ZWtpXCA7Civoqo3oqLzlrpggPiBuaW5zaG91a2FuXCA7CivppIrompXmpa0gPiB5b3VzYW5neW91XCA7CivngavlsbHohIggPiBrYXphbm15YWt1XCA7Civoj5znqK7mrrsgPiBuYXRhbmVnYXJhXCA7Civpgb/mmpHlrqIgPiBoaXNob2t5YWt1XCA7CivmsY7lv4Poq5YgPiBoYW5zaGlucm9uXCA7Civmm7joqZXmrIQgPiBzaG9oeW91cmFuXCA7CivlhaXloLTnqI4gPiBueXV1am91emVpXCA7CivoqabkvZzou4ogPiBzaGlzYWt1c2hhXCA7CivnjYTkuK3oqJggPiBnb2t1Y2h1dWtpXCA7CivkubPlhYTlvJ8gPiBjaGlreW91ZGFpXCA7CivkuozkuIPml6UgPiBmdXRhbmFub2thXCA7CivmraPmlZnkvJogPiBzZWlreW91a2FpXCA7CivlhYjnlJ/mlrkgPiBzZW5zZWlnYXRhXCA7CivojYnpm7Lpm4AgPiBrdXNhaGliYXJpXCA7Civkvo3lvpPogbcgPiBqaWp1dXNob2t1XCA7CivlnLDlvaLlraYgPiBjaGlrZWlnYWt1XCA7CivkuIDnm7Tnt5ogPiBpdGNob2t1c2VuXCA7CivlpKnnnLzpgJogPiB0ZW5nYW50c3V1XCA7Civku7LosrfkurogPiBuYWthZ2FpbmluXCA7CivolqznkIblraYgPiB5YWt1cmlnYWt1XCA7Civlm73mloflsIIgPiBrb2t1YnVuc2VuXCA7CivkuIDlubTnlJ8gPiBpY2hpbmVuc2VpXCA7CivlrprlvI/ljJYgPiB0ZWlzaGlraWthXCA7CivllYbmpa3ljJYgPiBzaG91Z3lvdWthXCA7CivkuIDovKrou4ogPiBpY2hpcmluc2hhXCA7Civmu7Lngq3pi7wgPiBzaGludGFua291XCA7Civou43nlKjniqwgPiBndW4nJ3lvdWtlblwgOwor5YWt6KeS5aCCID4gcm9ra2FrdWRvdVwgOwor5bqK5pqW5oi/ID4geXVrYWRhbmJvdVwgOwor562G5LiN57K+ID4gZnVkZWJ1c2hvdVwgOwor5YWs6Ki85Lq6ID4ga291c2hvdW5pblwgOwor6JaE5Yqb57KJID4gaGFrdXJpa2lrb1wgOwor54mn6I2J5ZywID4gYm9rdXNvdWNoaVwgOwor5bGe5oCn5YCkID4gem9rdXNlaWNoaVwgOwor6Kej5q+S6JasID4gZ2Vkb2t1eWFrdVwgOwor5rqA5pyf5pelID4gbWFua2lqaXRzdVwgOwor5ZCN5L2c6YG4ID4gbWVpc2FrdXNlblwgOwor5ZWG55So5paHID4gc2hvdXlvdWJ1blwgOwor5Zu96Kqe5a2mID4ga29rdWdvZ2FrdVwgOwor5Y+v5Y+K55qEID4ga2FreXV1dGVraVwgOwor5YaZ55yf54+tID4gc2hhc2hpbmhhblwgOwor5LiA5YWD6KuWID4gaWNoaWdlbnJvblwgOwor6Kq/5Ymk5birID4gY2hvdXphaXNoaVwgOwor5Y2Y5LiJ5b2iID4gdGFuc2FuZ2F0YVwgOwor55Sy5YaR5birID4ga2F0Y2h1dXNoaVwgOwor5YWI5Lu76ICFID4gc2VuJyduaW5zaGFcIDsKK+absue3mue+jiA+IGt5b2t1c2VuYmlcIDsKK+WFrOe0hOaVsCA+IGtvdXlha3VzdXVcIDsKK+eGseeLguiAhSA+IG5la2t5b3VzaGFcIDsKK+awtOe0i+WtpiA+IHN1aW1vbmdha3VcIDsKK+S6uueoruWtpiA+IGppbnNodWdha3VcIDsKK+aui+W/jeaApyA+IHphbicnbmluc2VpXCA7Civnm7jplqLnmoQgPiBzb3VrYW50ZWtpXCA7CivlhpnnnJ/niYggPiBzaGFzaGluYmFuXCA7CivnlJ/mga/lnLAgPiBzZWlzb2t1Y2hpXCA7Civnn6XmgKfnmoQgPiBjaGlzZWl0ZWtpXCA7CivmnKrnmbrpgZQgPiBtaWhhdHRhdHN1XCA7CivplovluZXmiKYgPiBrYWltYWt1c2VuXCA7CivlvozphY3moKogPiBrb3VoYWlrYWJ1XCA7CivlgZzms4rlnLAgPiB0ZWloYWt1Y2hpXCA7CivnvbnmgqPnjocgPiByaWthbnJpdHN1XCA7CivpgLLooYzlvaIgPiBzaGlua291a2VpXCA7CivpgZPlvrPkuIogPiBkb3V0b2t1am91XCA7CivnpL7kvJrnmoQgPiBzaGFrYWl0ZWtpXCA7CivpnIfmupDlnLAgPiBzaGluZ2VuY2hpXCA7CivmmJ/pm7LoqqwgPiBzZWl1bnNldHN1XCA7CivmsrPljp/ogIUgPiBrYXdhcmFtb25vXCA7CivmurrmrbvogIUgPiBkZWtpc2hpc2hhXCA7CivmtbfllYbms5UgPiBrYWlzaG91aG91XCA7CivnkIbpq6rlupcgPiByaWhhdHN1dGVuXCA7Civpnanlkb3ou40gPiBrYWt1bWVpZ3VuXCA7Civmm7joqozlraYgPiBzaG9zaGlnYWt1XCA7CivnkIbpq6rluKsgPiByaWhhdHN1c2hpXCA7CivkuJbkv5flv4MgPiBzZXpva3VzaGluXCA7Civpganku7vogIUgPiB0ZWtpbmluc2hhXCA7CivlpInlnKfmiYAgPiBoZW4nJ2F0c3Vqb1wgOwor5ryi5rCR5pePID4ga2FubWluem9rdVwgOwor6YGp55So5oCnID4gdGVraXlvdXNlaVwgOwor55u06KuH5YikID4gamlrYWRhbnBhblwgOwor6IOM5L+h6ICFID4gaGFpc2hpbnNoYVwgOwor562G6ICV5paZID4gaGlra291cnlvdVwgOwor5Lyd5rOV6IKMID4gZGVuYm91aGFkYVwgOwor57mK5q+b6JmrID4gc2VubW91Y2h1dVwgOwor56u25aOy5Lq6ID4ga3lvdWJhaW5pblwgOwor5L2c6Kme6ICFID4gc2FrdXNoaXNoYVwgOwor5a6J5q276KGTID4gYW5zaGlqdXRzdVwgOwor5qmf5YuV5YqbID4ga2lkb3VyeW9rdVwgOwor5pyA57WC5ZueID4gc2Fpc2h1dWthaVwgOwor5Li76KaB5Zu9ID4gc2h1eW91a29rdVwgOwor5Y+N6Zm95a2QID4gaGFuJyd5b3VzaGlcIDsKK+WGheWQkeeahCA+IG5haWtvdXRla2lcIDsKK+mYsua9ruWgpCA+IGJvdWNob3V0ZWlcIDsKK+a2suaZtuebpCA+IGVraXNob3ViYW5cIDsKK+elnue1jOaIpiA+IHNoaW5rZWlzZW5cIDsKK+m7hOWFq+S4iCA+IGtpaGFjaGlqb3VcIDsKK+ihqOS6jOmajiA+IG9tb3RlbmlrYWlcIDsKK+ippumok+eahCA+IHNoaWtlbnRla2lcIDsKK+WxoOauuuWgtCA+IHRvc2F0c3Vqb3VcIDsKK+aXheaUr+W6piA+IHRhYmlqaXRha3VcIDsKK+abuOewoembhiA+IHNob2thbnNodXVcIDsKK+WlveaIpuWbvSA+IGtvdXNlbmtva3VcIDsKK+WWtuael+WxgCA+IGVpcmlua3lva3VcIDsKK+eEoemHjeWKmyA+IG11anV1cnlva3VcIDsKK+mBuuWkseiAhSA+IGlzaGl0c3VzaGFcIDsKK+eUn+W+l+aoqSA+IHNlaXRva3VrZW5cIDsKK+exs+mokuWLlSA+IGtvbWVzb3Vkb3VcIDsKK+aWsOS9k+WItiA+IHNoaW50YWlzZWlcIDsKK+ihgOa4heWtpiA+IGtlc3NlaWdha3VcIDsKK+mDqOmVt+mWsiA+IGJ1Y2hvdWV0c3VcIDsKK+WknOaDs+absiA+IHlhc291a3lva3VcIDsKK+amguW/teeahCA+IGdhaW5lbnRla2lcIDsKK+epuuS4reaoqSA+IGt1dWNodXVrZW5cIDsKK+WRqOmBiuWIuCA+IHNodXV5dXVrZW5cIDsKK+WJteS9nOiAhSA+IHNvdXNha3VzaGFcIDsKK+WQq+ezlumHjyA+IGdhbnRvdXJ5b3VcIDsKK+WAuee0hOWutiA+IGtlbicneWFrdWthXCA7Civlh7rlvLXmiYAgPiBzaHV0Y2hvdWpvXCA7CivnrqHnkIbogbcgPiBrYW5yaXNob2t1XCA7CivmgZDmgJbnl4cgPiBreW91ZnVzaG91XCA7CivmlL/nlaXlrrYgPiBzZWlyeWFrdWthXCA7CivlhazooYbntrIgPiBrb3VzaHV1bW91XCA7CivlhaXloLTmqKkgPiBueXV1am91a2VuXCA7CivnnaPmiKbpmoogPiB0b2t1c2VudGFpXCA7CivljYPnvr3ptrQgPiBzZW5iYWR6dXJ1XCA7CivkvY/lroXlnLAgPiBqdXV0YWt1Y2hpXCA7CivlhoXmg5HmmJ8gPiBuYWl3YWt1c2VpXCA7CivnnJ/mraPnm7QgPiBtYXNob3VqaWtpXCA7CivlraPnr4DpoqggPiBraXNldHN1ZnV1XCA7CivkvY7lrablubQgPiB0ZWlnYWt1bmVuXCA7CivlrabnsY3nsL8gPiBnYWt1c2VraWJvXCA7Civnq4vkvZPpj6EgPiByaXR0YWlreW91XCA7CivkuozpoIXlvI8gPiBuaWtvdXNoaWtpXCA7Civnmb7ml6XntIUgPiBzYXJ1c3ViZXJpXCA7Civou43nlaXlrrYgPiBndW5yeWFrdWthXCA7CivmsJHorZrpm4YgPiBtaW5kYW5zaHV1XCA7CivmhbDllY/ooosgPiBpbW9uYnVrdXJvXCA7Civmtojnn7PngbAgPiBzaG91c2Vra2FpXCA7CivljZjkuIDljJYgPiB0YW4nJ2l0c3VrYVwgOwor5bCC55So6LuKID4gc2VuJyd5b3VzaGFcIDsKK+S7leiInueJqSA+IHNoaW1haW1vbm9cIDsKK+Wkp+eZvemzpSA+IG9vaGFrdWNob3VcIDsKK+e3qeW+kOabsiA+IGthbmpva3lva3VcIDsKK+WIgOWJo+WVhiA+IHRvdWtlbnNob3VcIDsKK+S8veiKneWxhSA+IHRvZ2lzaGliYWlcIDsKK+WknOOAheS4rSA+IHlvcnV5b25ha2FcIDsKK+awl+ixoeW6gSA+IGtpc2hvdWNob3VcIDsKK+eAnemdkueCrSA+IHJla2lzZWl0YW5cIDsKK+S4gOWGhueOiSA+IGljaGllbmRhbWFcIDsKK+eNheWtkOWuriA+IHNoaXNoaWt5dXVcIDsKK+W3oea0i+iJpiA+IGp1bicneW91a2FuXCA7Civlv4XpnIDlk4EgPiBoaXRzdWp1aGluXCA7CivkuI3kv6HnlKggPiBmdXNoaW4nJ3lvdVwgOwor5ris5Zyw57eaID4gc29rdWNoaXNlblwgOwor6auY5pyo5bGkID4ga291Ym9rdXNvdVwgOwor5qGD5rqQ5aKDID4gdG91Z2Vua3lvdVwgOwor6KGo5bGk5oCnID4gaHlvdXNvdXNlaVwgOwor5Ye65bit57C/ID4gc2h1c3Nla2lib1wgOwor6Kaq546L5aaDID4gc2hpbicnbm91aGlcIDsKK+mFjee1puezuyA+IGhhaWt5dXVrZWlcIDsKK+WkieWcp+WZqCA+IGhlbicnYXRzdWtpXCA7Civlrp/kvZPpj6EgPiBqaXR0YWlreW91XCA7CivlhKrli53mna8gPiB5dXVzaG91aGFpXCA7CivpgankuI3pgakgPiB0ZWtpZnV0ZWtpXCA7CivnpL7kuqTnmoQgPiBzaGFrb3V0ZWtpXCA7CivphY3ntabnsbMgPiBoYWlreXV1bWFpXCA7Civmm7joqJjlsYAgPiBzaG9raWt5b2t1XCA7CivotIjlj47os4QgPiB6b3VzaHV1d2FpXCA7Civlh7jlh7nntJkgPiB0b3RzdW91c2hpXCA7Civoo4HliKTkurogPiBzYWliYW4nJ25pblwgOwor5LuK6YGT5b+DID4gaW1hZG91c2hpblwgOwor57S55LuL6ICFID4gc2hvdWthaXNoYVwgOwor56m65Lit5oimID4ga3V1Y2h1dXNlblwgOwor5rCX6LGh5a2mID4ga2lzaG91Z2FrdVwgOwor55u457aa5Lq6ID4gc291em9rdW5pblwgOwor6KKr5ZGK5bitID4gaGlrb2t1c2VraVwgOwor5Lmz6ISC6IKqID4gbnl1dXNoaWJvdVwgOwor6L6y54mn5ZywID4gbm91Ym9rdWNoaVwgOwor5oKq5oiv5a2QID4gaXRhenVyYWtrb1wgOwor5bCE55qE5aC0ID4gc2hhdGVraWpvdVwgOwor5YmN5ZOo5oimID4gemVuc2hvdXNlblwgOwor5rOV5a2m6ICFID4gaG91Z2FrdXNoYVwgOwor5YWo5Zu957SZID4gemVua29rdXNoaVwgOwor5pWR6Zuj6Ii5ID4ga3l1dW5hbnNlblwgOwor6YeR6J6N5YK1ID4ga2luJyd5dXVzYWlcIDsKK+S4iui8ieWcpyA+IGpvdXNhaWF0c3VcIDsKK+WPo+WWp+WYqSA+IGt1Y2hpZ2Vua2FcIDsKK+aIkOS6uueXhSA+IHNlaWppbmJ5b3VcIDsKK+iKseawtOacqCA+IGhhbmFtaXp1a2lcIDsKK+mAoOWckuihkyA+IHpvdWVuanV0c3VcIDsKK+S5s+iFuueCjiA+IG55dXVzZW4nJ2VuXCA7CivmtbfmtYHnk7YgPiBrYWlyeXV1YmluXCA7CivliIblhYnlraYgPiBidW5rb3VnYWt1XCA7CivmsJHkuLvnmoQgPiBtaW5zaHV0ZWtpXCA7Civnsr7nmb3ns5YgPiBzZWloYWt1dG91XCA7CivnhKHmqZ/os6ogPiBtdWtpc2hpdHN1XCA7CivpgJroqbHmlpkgPiB0c3V1d2FyeW91XCA7CivmlLnoia/lk4EgPiBrYWlyeW91aGluXCA7Civnsr7nmb3nsbMgPiBzZWloYWt1bWFpXCA7Civlv6vliYrpi7wgPiBrYWlzYWt1a291XCA7Civml6XlkJHmsLQgPiBoaW5hdGFtaXp1XCA7CivmiYfmg4XnmoQgPiBzZW5qb3V0ZWtpXCA7Civpmarlr6nlk6EgPiBiYWlzaGluJydpblwgOwor5bir5Zuj6ZW3ID4gc2hpZGFuY2hvdVwgOwor57WE6IG35L2TID4gc29zaG9rdXRhaVwgOwor5p6c5a6f6YWSID4ga2FqaXRzdXNodVwgOwor5am/6aSK5a2QID4gbXVrb3lvdXNoaVwgOwor5YaZ55yf5birID4gc2hhc2hpbnNoaVwgOwor5LiL5qSc5p+7ID4gc2hpdGFrZW5zYVwgOwor6aKo6YKq6JasID4ga2F6ZWd1c3VyaVwgOwor5YSq5Yud5oimID4geXV1c2hvdXNlblwgOwor6YCj57aa5L2TID4gcmVuem9rdXRhaVwgOwor5aSp5YiR55eFID4gdGVua2VpYnlvdVwgOwor5Y2K57+F55uuID4gaGFuc2hpbW9rdVwgOwor6Iy255Wq5YqHID4gY2hhYmFuZ2VraVwgOwor5YaZ55yf5bGLID4gc2hhc2hpbicneWFcIDsKK+iJr+WwjuS9kyA+IHJ5b3Vkb3V0YWlcIDsKK+aVkeS4luS4uyA+IGt5dXVzZWlzaHVcIDsKK+ayk+aJi+mzpSA+IGhvdG90b2dpc3VcIDsKK+acquedgOaJiyA+IG1pY2hha3VzaHVcIDsKK+S9nOipqeazlSA+IHNha3VzaGlob3VcIDsKK+ecn+mtmumwuSA+IG1hbmFnYXRzdW9cIDsKK+WHuuW8teWToSA+IHNodXRjaG91aW5cIDsKK+S6uuWKm+i7iiA+IGppbnJpa2lzaGFcIDsKK+Wbvemam+S6uiA+IGtva3VzYWlqaW5cIDsKK+a4rOmVt+apnyA+IHNva3VjaG91a2lcIDsKK+Wwj+S4u+imsyA+IHNob3VzaHVrYW5cIDsKK+Wun+i3teeahCA+IGppc3NlbnRla2lcIDsKK+mAo+e1kOWZqCA+IHJlbmtldHN1a2lcIDsKK+iAkOS5heaApyA+IHRhaWt5dXVzZWlcIDsKK+adieS4puacqCA+IHN1Z2luYW1pa2lcIDsKK+e1guS6huW+jCA+IHNodXVyeW91Z29cIDsKK+WkqemBk+anmCA+IHRlbnRvdXNhbWFcIDsKK+aSruW9semaiiA+IHNhdHN1ZWl0YWlcIDsKK+iKseiPluiSsiA+IGhhbmFzaG91YnVcIDsKK+aknOecvOmPoSA+IGtlbmdhbmt5b3VcIDsKK+mFuOWMlueJqSA+IHNhbmthYnV0c3VcIDsKK+Wwj+S9nOaWmSA+IGtvc2FrdXJ5b3VcIDsKK+W6tuawkeeahCA+IHNob21pbnRla2lcIDsKK+i8quiInuabsiA+IHJpbmJ1a3lva3VcIDsKK+WHjee1kOWZqCA+IHRvdWtldHN1a2lcIDsKK+Wkj+icnOafkSA+IG5hdHN1bWlrYW5cIDsKK+etieaWueeahCA+IHRvdWhvdXRla2lcIDsKK+Wyqea4heawtCA+IGl3YXNoaW1penVcIDsKK+eri+ahiOiAhSA+IHJpdHN1YW5zaGFcIDsKK+iRl+i/sOWutiA+IGNob2p1dHN1a2FcIDsKK+iEs+aiheavkiA+IG5vdWJhaWRva3VcIDsKK+i7jeeUqOWTgSA+IGd1bicneW91aGluXCA7Civlg5Xku7LplpMgPiBib2t1bmFrYW1hXCA7Civpm6PoppbogbQgPiBuYW5zaGljaG91XCA7CivlvrPnvqnlv4MgPiB0b2t1Z2lzaGluXCA7CivliLrmv4DmgKcgPiBzaGlnZWtpc2VpXCA7CivpgKPntaHlhYggPiByZW5yYWt1c2VuXCA7Civov5HmtbfniakgPiBraW5rYWltb25vXCA7CivmnbHmtIvpgJogPiB0b3V5b3V0c3V1XCA7CivpiYTnoLLnjokgPiB0ZXBwb3VkYW1hXCA7CivkvqHmoLzooaggPiBrYWtha3VoeW91XCA7Civoqr/lgZzogIUgPiBjaG91dGVpc2hhXCA7CivmrbTlj7LoprMgPiByZWtpc2hpa2FuXCA7Civlu7rnr4nosrsgPiBrZW5jaGlrdWhpXCA7Civkurrmg4XliocgPiBuaW5qb3VnZWtpXCA7CivlpJrnpZ7mlZkgPiB0YXNoaW5reW91XCA7CivliY3lk6jlnLAgPiB6ZW5zaG91Y2hpXCA7CivkuIDluqbkuIggPiBpY2hpZG9kYWtlXCA7CivpgKPntaHkvJogPiByZW5yYWt1a2FpXCA7CivkuIDoiKzogbcgPiBpcHBhbnNob2t1XCA7CivnpL7kvJrlraYgPiBzaGFrYWlnYWt1XCA7CivlgbXlr5/mqZ8gPiB0ZWlzYXRzdWtpXCA7Civlr53lj7Dou4ogPiBzaGluZGFpc2hhXCA7CivlubTku6PniakgPiBuZW5kYWltb25vXCA7CivkuKHmm7/kurogPiByeW91Z2FlbmluXCA7CivlkIjmoLzogIUgPiBnb3VrYWt1c2hhXCA7CivlsILnlKjnt5ogPiBzZW4nJ3lvdXNlblwgOwor5biv5Z+f5bmFID4gdGFpaWtpaGFiYVwgOwor5Yid5LiA5b+1ID4gc2hvaWNoaW5lblwgOwor57S55LuL54q2ID4gc2hvdWthaWpvdVwgOwor5raI5q+S5ZmoID4gc2hvdWRva3VraVwgOwor5pem6YKj6KGGID4gZGFuJyduYXNodXVcIDsKK+WgheS/oeekvCA+IGtlbnNoaW5yZWlcIDsKK+WumOWFrOW6gSA+IGthbmtvdWNob3VcIDsKK+iBtOiBnuWDpyA+IGNob3Vtb25zb3VcIDsKK+WkquW5s+alvSA+IHRhaWhlaXJha3VcIDsKK+S4oeWkqeenpCA+IHJ5b3V0ZW5iaW5cIDsKK+WtlOmbgOefsyA+IGt1amFrdXNla2lcIDsKK+WJteS9nOaoqSA+IHNvdXNha3VrZW5cIDsKK+iJsuS6i+W4qyA+IGlyb2dvdG9zaGlcIDsKK+mZjemtlOihkyA+IGtvdW1hanV0c3VcIDsKK+Wwkeizh+acrCA+IHNob3VzaGlob25cIDsKK+izh+eUo+agqiA+IHNoaXNhbmthYnVcIDsKK+aBkOaAluW/gyA+IGt5b3VmdXNoaW5cIDsKK+Wun+mok+eahCA+IGppa2tlbnRla2lcIDsKK+S9v+W+kumBlCA+IHNoaXRvdGFjaGlcIDsKK+WuiemFkuWgtCA+IHlhc3VzYWthYmFcIDsKK+iBtOiBnuS8miA+IGNob3Vtb25rYWlcIDsKK+iCsuWFkOmjnyA+IGlrdWppc2hva3VcIDsKK+eUt+S+v+aJgCA+IG90b2tvYmVuam9cIDsKK+mmluWun+aknCA+IGt1YmlqaWtrZW5cIDsKK+e0sOiDnuiGnCA+IHNhaWJvdW1ha3VcIDsKK+WQjeS6uuiCjCA+IG1laWppbmhhZGFcIDsKK+Wwj+WtpuagoSA+IHNob3VnYWtrb3VcIDsKK+aXp+iXqeS4uyA+IGt5dXVoYW5zaHVcIDsKK+awkeacieaelyA+IG1pbicneXV1cmluXCA7CivotaTpiYTpibEgPiBzZWtpdGVra291XCA7CivmnKzojYnlraYgPiBob256b3VnYWt1XCA7Civkv67mraPogIUgPiBzaHV1c2Vpc2hhXCA7CivpoqjpgJ/oqIggPiBmdXVzb2t1a2VpXCA7CivmvZzlnKjnmoQgPiBzZW56YWl0ZWtpXCA7CivlpInmi43lrZAgPiBoZW5ieW91c2hpXCA7Civml6fmgJ3mg7MgPiBreXV1c2hpc291XCA7Civpm5HmnKjmnpcgPiB6b3Vib2t1cmluXCA7CivlhaXloLTliLggPiBueXV1am91a2VuXCA7CivmiKbpl5jnmoQgPiBzZW50b3V0ZWtpXCA7CivntYLpm7vou4ogPiBzaHV1ZGVuc2hhXCA7Civog4znvo7pr6ggPiBzZW1pa3VqaXJhXCA7CivnqbTmnZPlrZAgPiBhbmFqYWt1c2hpXCA7CivkuIDlubTkuK0gPiBpY2hpbmVuanV1XCA7CivpiYTnoLLmsLQgPiB0ZXBwb3VtaXp1XCA7Civlhajlm73msJEgPiB6ZW5rb2t1bWluXCA7Civkurrlj6PlraYgPiBqaW5rb3VnYWt1XCA7Civnm7Tmu5HpmY0gPiBjaG9ra2Fra291XCA7CivkuIrnlLPmm7ggPiBqb3VzaGluc2hvXCA7Civph53ljYPmnKwgPiBoYXJpc2VuYm9uXCA7CivkuInmpa3lnLAgPiBzYW5neW91Y2hpXCA7CivkuKblpKfmirUgPiBuYW1pdGFpdGVpXCA7Civnmb3pm7Lnn7MgPiBoYWt1dW5zZWtpXCA7CivmrKDluK3ogIUgPiBrZXNzZWtpc2hhXCA7CivlvJXlvZPph5EgPiBoaWtpYXRla2luXCA7Civoo4Xpo77pn7MgPiBzb3VzaG9rdW9uXCA7CivoppbogbTogIUgPiBzaGljaG91c2hhXCA7CivkubPoh63lhZAgPiBueXV1c2h1dWppXCA7CivmiYvmsqLmnKwgPiBzaHV0YWt1Ym9uXCA7CivorabmiJLlv4MgPiBrZWlrYWlzaGluXCA7CivkuK3lm73oqp4gPiBjaHV1Z29rdWdvXCA7CivlhaXmiYvpm6MgPiBueXV1c2h1bmFuXCA7Civpm7vmtYHoqIggPiBkZW5yeXV1a2VpXCA7CivlsbHmopTlrZAgPiBrdWNoaW5hc2hpXCA7CivlkJvkuLvlm70gPiBrdW5zaHVrb2t1XCA7Civpn7Pmpb3lraYgPiBvbmdha3VnYWt1XCA7CivpjK/lrZfnl4cgPiBzYWt1amlzaG91XCA7CivlpKfnm6Tnn7MgPiBkYWliYW5qYWt1XCA7CivliIblrZDph48gPiBidW5zaGlyeW91XCA7CivkuIDnlarojLYgPiBpY2hpYmFuY2hhXCA7CivpgYXliLvogIUgPiBjaGlrb2t1c2hhXCA7Civlho3nmbrotrMgPiBzYWlob3Nzb2t1XCA7Civlr77ouaDnmoQgPiB0YWlzaG90ZWtpXCA7Civmp43ooZPlrrYgPiBzb3VqdXRzdWthXCA7CivmrYzorKHmm7IgPiBrYXlvdWt5b2t1XCA7CivmtLvkurrnlLsgPiBrYXRzdWppbmdhXCA7CivkuozoqIDnm64gPiBmdXRha290b21lXCA7Civljp/lrZDph48gPiBnZW5zaGlyeW91XCA7CivlpKfluYXniakgPiBvb2hhYmFtb25vXCA7Civni6zlpY/kvJogPiBkb2t1c291a2FpXCA7CivohLHoh63liaQgPiBkYXNzaHV1emFpXCA7Civlv6vpgJ/oiLkgPiBrYWlzb2t1c2VuXCA7CivnlJ/mrpblmaggPiBzZWlzaG9rdWtpXCA7Civou4rkuK3oq4cgPiBzaGFjaHV1ZGFuXCA7Civpjq7pnZnliaQgPiBjaGluc2VpemFpXCA7CivlkIjkvbXnl4cgPiBnYXBwZWlzaG91XCA7Civmh4fopqrkvJogPiBrb25zaGlua2FpXCA7Civnib3niZvmmJ8gPiBrZW5neXV1c2VpXCA7CivliLrmv4DliaQgPiBzaGlnZWtpemFpXCA7CivojLbmn4TmnZMgPiBjaGFiaXNoYWt1XCA7CivmnInnpZ7oq5YgPiB5dXVzaGlucm9uXCA7Civlkb3kuK3mlbAgPiBtZWljaHV1c3V1XCA7Civmlrnop6Pnn7MgPiBob3VrYWlzZWtpXCA7Civlo7Lmjpvph5EgPiB1cmlrYWtla2luXCA7CivotoXlt6jmmJ8gPiBjaG91a3lvc2VpXCA7Civnq4vkvZPnmoQgPiByaXR0YWl0ZWtpXCA7Civnmb3mmLzlpKIgPiBoYWt1Y2h1dW11XCA7CivmlrDoqJjpjLIgPiBzaGlua2lyb2t1XCA7Civms6jop6PogIUgPiBjaHV1a2Fpc2hhXCA7Civkv53ph4jph5EgPiBob3NoYWt1a2luXCA7Civlj43nspLlrZAgPiBoYW5yeXV1c2hpXCA7CivkuIvotrPmlpkgPiBnZXNva3VyeW91XCA7Civms6jmlofmm7ggPiBjaHV1bW9uc2hvXCA7CivljJblkIjniakgPiBrYWdvdWJ1dHN1XCA7CivlsYvlvaLoiLkgPiB5YWthdGFidW5lXCA7CivpgYvli5XlipsgPiB1bmRvdXJ5b2t1XCA7Civpipjpipjnmr8gPiBtZWltZWl6YXJhXCA7Civpu5Lmm5zlsqkgPiBrb2t1eW91Z2FuXCA7Civljp/kvZzogIUgPiBnZW5zYWt1c2hhXCA7CivlhbXnq5nlraYgPiBoZWl0YW5nYWt1XCA7CivntLDlr4bnlLsgPiBzYWltaXRzdWdhXCA7CivkuIDnlarnt5ogPiBpY2hpYmFuc2VuXCA7CivljYrkurrliY0gPiBoYW4nJ25pbm1hZVwgOwor6ISz5qKX5aGeID4gbm91a291c29rdVwgOwor5YqH5aC06KGXID4gZ2VraWpvdWdhaVwgOwor5p2l44CF6YCxID4gcmFpcmFpc2h1dVwgOwor5rG66K2w5qipID4ga2V0c3VnaWtlblwgOwor5YqD5LiA5YyWID4ga2FrdWl0c3VrYVwgOwor5LiA5qe95byPID4gaXNzb3VzaGlraVwgOwor5a6F5oCl5L6/ID4gdGFra3l1dWJpblwgOwor6ICB5Lq655eFID4gcm91amluYnlvdVwgOwor5ZCI5qC854K5ID4gZ291a2FrdXRlblwgOwor6Kmm5L6b5ZOBID4gc2hpa3lvdWhpblwgOwor5Lit5aCF5omLID4gY2h1dWtlbnNodVwgOwor6JGb6aWF6aCtID4ga3V6dW1hbmp1dVwgOwor5o6l5a6i5ammID4gc2Vra3lha3VmdVwgOwor5rS75a2X5pysID4ga2F0c3VqaWhvblwgOwor6ZyN5YWs6bOlID4gaG90b3RvZ2lzdVwgOwor5ZWP6aGM5YqHID4gbW9uZGFpZ2VraVwgOwor6IG06Kyb55SfID4gY2hvdWtvdXNlaVwgOwor6LO96Yqt566xID4gc2Fpc2VuYmFrb1wgOwor5o+Q5ZSx6ICFID4gdGVpc2hvdXNoYVwgOwor5Zm06aOv54mpID4gZnVucGFubW9ub1wgOwor5YiG5qW15YyWID4gYnVua3lva3VrYVwgOwor566h55CG5bGAID4ga2FucmlreW9rdVwgOwor6KeS6YyQ5Y+wID4ga2FrdXN1aWRhaVwgOwor56aP5bKh55yMID4gZnVrdW9rYWtlblwgOwor54us5aOH5aC0ID4gZG9rdWRhbmpvdVwgOwor5Luy6ZaT6KSSID4gbmFrYW1hYm9tZVwgOwor6ZqP5oOz6YyyID4genVpc291cm9rdVwgOwor5pKu5b2x6ICFID4gc2F0c3VlaXNoYVwgOwor5aaC6I+p6JapID4gbnlvYm9zYXRzdVwgOwor5ZG95Lit5by+ID4gbWVpY2h1dWRhblwgOwor55yf5YiG5pWwID4gc2hpbmJ1bnN1dVwgOwor6ZuH55So5Li7ID4ga295b3VudXNoaVwgOwor6YmE56Cy5by+ID4gdGVwcG91ZGFtYVwgOwor5bGv55Sw5YW1ID4gdG9uZGVuaGVpXCA7CivmlbXpg6jpmoogPiB0ZWtpYnV0YWlcIDsKK+aKteW9k+aoqSA+IHRlaXRvdWtlblwgOwor5p2R5aSr5a2QID4gc29ucHV1c2hpXCA7Civmj5rmsLTou4ogPiB5b3VzdWlzaGFcIDsKK+aVkeaPtOi7jSA+IGt5dXVlbmd1blwgOwor6IKy5q+b5YmkID4gaWt1bW91emFpXCA7Civpu5LpoK3lt74gPiBrdXJvenVraW5cIDsKK+ino+avkuWJpCA+IGdlZG9rdXphaVwgOwor6auY5ae/5YuiID4ga291c2hpc2VpXCA7CivlsYvlj7DlupcgPiB5YXRhaW1pc2VcIDsKK+i1t+ejgeWKmyA+IGtpamlyeW9rdVwgOwor5Y6f55Sf5p6XID4gZ2Vuc2VpcmluXCA7CivmrbTlj7LnlLsgPiByZWtpc2hpZ2FcIDsKK+WJjeWNiueUnyA+IHplbmhhbnNlaVwgOwor5a2Y5Zyo6KuWID4gc29uemFpcm9uXCA7CivluIzmnJvnmoQgPiBraWJvdXRla2lcIDsKK+S6uuW3pembtyA+IGppbmtvdXJhaVwgOwor5bCC55So5qmfID4gc2VuJyd5b3VraVwgOwor5bqm6YeP6KGhID4gZG9yeW91a291XCA7CivlhZrlpKfkvJogPiB0b3V0YWlrYWlcIDsKK+WQjOS5l+iAhSA+IGRvdWpvdXNoYVwgOwor5Yq05YuV6ICFID4gcm91ZG91c2hhXCA7CivljZjmlbDlnosgPiB0YW5zdXVrZWlcIDsKK+W+k+WFhOW8nyA+IGp1dWtlaXRlaVwgOwor6b2n5q2v6aGeID4gZ2Vzc2hpcnVpXCA7CivlhqDmnKjploAgPiBrYWJ1a2ltb25cIDsKK+S7mOWxnuWTgSA+IGZ1em9rdWhpblwgOwor6Kiq5ZWP6ICFID4gaG91bW9uc2hhXCA7CivnmbrpoK3kurogPiBob3R0b3VuaW5cIDsKK+aWh+mBuOW3pSA+IGJ1bnNlbmtvdVwgOwor5ZCM5bGF5Lq6ID4gZG91a3lvbmluXCA7Civlj4LoqaPkurogPiBzYW5rZWluaW5cIDsKK+W9ueWToeS8miA+IHlha3VpbmthaVwgOwor5a2k56uL6KqeID4ga29yaXRzdWdvXCA7CivnlJ/oj5PlrZAgPiBuYW1hZ2FzaGlcIDsKK+WLmOWumuabuCA+IGthbmpvdXNob1wgOwor6ZaL5YKs5ZywID4ga2Fpc2FpY2hpXCA7CivokL3lvozogIUgPiByYWt1Z29zaGFcIDsKK+eUt+WtkOagoSA+IGRhbnNoaWtvdVwgOwor5LiA6Ium5Yq0ID4gaGl0b2t1cm91XCA7CivlgqzmtpnlvL4gPiBzYWlydWlkYW5cIDsKK+e1seayu+aoqSA+IHRvdWNoaWtlblwgOwor56aB6Lui6LyJID4ga2ludGVuc2FpXCA7CivmuK/mub7nqI4gPiBrb3V3YW56ZWlcIDsKK+S4jeWvm+WuuSA+IGZ1a2FuJyd5b3VcIDsKK+S4jeS/oeS7sCA+IGZ1c2hpbmtvdVwgOwor5aSq5YWs5pybID4gdGFpa291Ym91XCA7CivkuLjmi6zlvKcgPiBtYXJ1Z2Fra29cIDsKK+WkluWQkeaApyA+IGdhaWtvdXNlaVwgOwor5LiN6Laz5YmNID4gdGFyYXp1bWFlXCA7Civkuozlm73plpMgPiBuaWtva3VrYW5cIDsKK+S8muiRrOiAhSA+IGthaXNvdXNoYVwgOwor56aP5a+/6I2JID4gZnVrdWp1c291XCA7Civms5Xmm7nnlYwgPiBob3Vzb3VrYWlcIDsKK+mBi+i8uOecgSA+IHVuJyd5dXNob3VcIDsKK+mBi+i8uOebuCA+IHVuJyd5dXNob3VcIDsKK+S5l+i7iumnhSA+IGpvdXNoYWVraVwgOwor5pyd6a6u6KqeID4gY2hvdXNlbmdvXCA7Civpnanlkb3lrrYgPiBrYWt1bWVpa2FcIDsKK+apn+WvhuiyuyA+IGtpbWl0c3VoaVwgOwor5Lq66YCg57GzID4gamluem91bWFpXCA7CivmtIvlk4HlupcgPiB5b3VoaW50ZW5cIDsKK+WAi+S6uueahCA+IGtvamludGVraVwgOwor5LiA5YWD5YyWID4gaWNoaWdlbmthXCA7CivkvJ3pgZPoiLkgPiBkZW5kb3VzZW5cIDsKK+Wcp+i/q+aEnyA+IGFwcGFrdWthblwgOwor5LqI6Ziy562WID4geW9ib3VzYWt1XCA7Civoi6XpmqDlsYUgPiB3YWthaW5reW9cIDsKK+WumuS9j+iAhSA+IHRlaWp1dXNoYVwgOwor5rC05rq25oCnID4gc3VpeW91c2VpXCA7CivpgbroqIDmm7ggPiB5dWlnb25zaG9cIDsKK+S7o+eHg+i7iiA+IGRhaW5lbnNoYVwgOwor5aSJ5oiQ5bKpID4gaGVuc2VpZ2FuXCA7CivkuIDlrprph48gPiBpdHRlaXJ5b3VcIDsKK+iLpueBsOefsyA+IGt1a2Fpc2VraVwgOwor5bem5b+D5oi/ID4gc2FzaGluYm91XCA7CivovKrnlarliLYgPiByaW5iYW5zZWlcIDsKK+iri+mhmOiAhSA+IHNlaWdhbnNoYVwgOwor5Zyn6L+r5oCnID4gYXBwYWt1c2VpXCA7CivnvoXnlJ/ploAgPiByYXNob3Vtb25cIDsKK+WAi+S6uueUqCA+IGtvamluJyd5b3VcIDsKK+S6q+WPl+iAhSA+IGt5b3VqdXNoYVwgOwor5b6h6Laz5Yq0ID4gZ29zb2t1cm91XCA7CivniKzomavpoZ4gPiBoYWNodXVydWlcIDsKK+i/t+S/oeWutiA+IG1laXNoaW5rYVwgOwor5pu457Ch5paHID4gc2hva2FuYnVuXCA7CivoqLHlj6/oqLwgPiBreW9rYXNob3VcIDsKK+awkeS4u+WFmiA+IG1pbnNodXRvdVwgOwor5aSq5YiA5YWIID4gdGFjaGlzYWtpXCA7CivkvJ3pgZPogIUgPiBkZW5kb3VzaGFcIDsKK+ebo+imluiIuSA+IGthbnNoaXNlblwgOwor57iE5pqW57C+ID4gbmF3YW5vcmVuXCA7Civntr/oo73lk4EgPiBtZW5zZWloaW5cIDsKK+WHuui1sOmmrCA+IHNodXNzb3ViYVwgOwor5LqM6ZqO5bu6ID4gbmlrYWlkYXRlXCA7Civkv67mraPmoYggPiBzaHV1c2VpYW5cIDsKK+Wuo+S8neaIpiA+IHNlbmRlbnNlblwgOwor6KuL6LKg5qWtID4gdWtlb2lneW91XCA7CivpoZ7kurrnjL8gPiBydWlqaW4nJ2VuXCA7CivlkIjnkIbnmoQgPiBnb3VyaXRla2lcIDsKK+WLneiyoOW4qyA+IHNob3VidXNoaVwgOwor57O46Jqv6JqTID4gaXRvbWltaXp1XCA7Civlu7bplbfmiKYgPiBlbmNob3VzZW5cIDsKK+Wcn+W7uualrSA+IGRva2VuZ3lvdVwgOwor6LSI5ZGI5ZOBID4gem91dGVpaGluXCA7Civph5HpibHlnLAgPiBraW5rb3VjaGlcIDsKK+aYvOW+oemjryA+IGhpcnVnb2hhblwgOwor6JKZ5Y+k6KWeID4gbW91a29oaWRhXCA7CivljYrmnIjliIogPiBoYW5nZWtrYW5cIDsKK+ecjOawkeeojiA+IGtlbm1pbnplaVwgOwor5omH5YuV6ICFID4gc2VuZG91c2hhXCA7Civpm4bkvJrmiYAgPiBzaHV1a2Fpam9cIDsKK+acqOW3peWgtCA+IG1va2tvdWpvdVwgOwor5rSS6JC96ICFID4gc2hhcmVtb25vXCA7CivmiKbpl5jluL0gPiBzZW50b3Vib3VcIDsKK+WkleWMlueypyA+IHl1dWdlc2hvdVwgOwor5Y+v5YuV5aCwID4ga2Fkb3V6ZWtpXCA7CivlpKflubTlopcgPiBvb3Rvc2hpbWFcIDsKK+azleeQhuWtpiA+IGhvdXJpZ2FrdVwgOwor6buE6aC36JuHID4gYW9kYWlzaG91XCA7CivpgI/mmI7kvZMgPiB0b3VtZWl0YWlcIDsKK+aVhemanOi7iiA+IGtvc2hvdXNoYVwgOwor55uj6KaW6ICFID4ga2Fuc2hpc2hhXCA7CivlvIHmhbbojYkgPiBiZW5rZWlzb3VcIDsKK+WtmOWcqOiAhSA+IHNvbnphaXNoYVwgOwor5YWo5Zu95Yy6ID4gemVua29rdWt1XCA7CivlpKnnmofml5cgPiB0ZW4nJ25vdWtpXCA7Civlrpjlg5rljJYgPiBrYW5yeW91a2FcIDsKK+aXouW+l+aoqSA+IGtpdG9rdWtlblwgOwor5YWJ57ea6YqDID4ga291c2VuanV1XCA7Civku67pnaLliocgPiBrYW1lbmdla2lcIDsKK+apn+aisOeahCA+IGtpa2FpdGVraVwgOwor54ao5paX57SZID4gbm9zaGlnYW1pXCA7CivlhpnmpI3mqZ8gPiBzaGFzaG9ra2lcIDsKK+acrOS9k+irliA+IGhvbnRhaXJvblwgOwor55m65aOw5rOVID4gaGFzc2VpaG91XCA7Civntabmua/lmaggPiBreXV1dG91a2lcIDsKK+mBiuiIiOiyuyA+IHl1dWt5b3VoaVwgOwor5bmz5a6J5LqsID4gaGVpYW5reW91XCA7CivnlJ/mrKDkvLggPiBuYW1hYWt1YmlcIDsKK+mAgeS7mOWFiCA+IHNvdWZ1c2FraVwgOwor5aSW6YeO5bitID4gZ2FpeWFzZWtpXCA7Civnq4vkvZPmiKYgPiByaXR0YWlzZW5cIDsKK+ebo+imlue2siA+IGthbnNoaW1vdVwgOwor5pyI5rC06YeRID4gZ2Vzc3Vpa2luXCA7CivmraPmipXmiYsgPiBzZWl0b3VzaHVcIDsKK+mBoOi1pOWkliA+IGVuc2VraWdhaVwgOwor5oyH56S66JasID4gc2hpaml5YWt1XCA7Civkv6Hlj7fmqZ8gPiBzaGluZ291a2lcIDsKK+S6leaIuOi7iiA+IGlkb2d1cnVtYVwgOwor5pyJ5ZCN56iOID4geXV1bWVpemVpXCA7Civnq4vkvZPmhJ8gPiByaXR0YWlrYW5cIDsKK+WEquWFiOaoqSA+IHl1dXNlbmtlblwgOwor5a6f6aiT5aC0ID4gamlra2Vuam91XCA7CivniaHkuLnppIUgPiBib3RhbW9jaGlcIDsKK+e1jOWbo+mAoyA+IGtlaWRhbnJlblwgOwor5pat6aCt5Y+wID4gZGFudG91ZGFpXCA7CivkuojntITogIUgPiB5b3lha3VzaGFcIDsKK+e1guWknOeBryA+IHNodXV5YXRvdVwgOwor5pqX6buS6Z2iID4gYW5rb2t1bWVuXCA7CivlrqPkvJ3lsYsgPiBzZW5kZW4nJ3lhXCA7Civku6Pmm7/lk4EgPiBkYWl0YWloaW5cIDsKK+eCremFuOWhqSA+IHRhbnNhbicnZW5cIDsKK+S4i+Wuv+WxiyA+IGdlc2h1a3V5YVwgOwor6KOc57Wm57eaID4gaG9reXV1c2VuXCA7CivlkI3kurrmiKYgPiBtZWlqaW5zZW5cIDsKK+S4gOiIrOW4rSA+IGlwcGFuc2VraVwgOwor6YGt6Zuj6ICFID4gc291bmFuc2hhXCA7Civljp/lrZDnoLIgPiBnZW5zaGlob3VcIDsKK+WAkue9ruazlSA+IHRvdWNoaWhvdVwgOwor54Wn5rqW5ZmoID4gc2hvdWp1bmtpXCA7Civljp/kvY/msJEgPiBnZW5qdXVtaW5cIDsKK+iBluWFrOS8miA+IHNlaWtvdWthaVwgOwor5Y6f55Sj5ZywID4gZ2Vuc2FuY2hpXCA7Civpnanlkb3lhZAgPiBrYWt1bWVpamlcIDsKK+WEqumnv+mmrCA+IHl1dXNodW5iYVwgOwor5Li75oOF6KuWID4gc2h1am91cm9uXCA7CivpqqjokaPlk4EgPiBrb3R0b3VoaW5cIDsKK+euoeiyoeS6uiA+IGthbnphaW5pblwgOwor5ryU5YqH55WMID4gZW5nZWtpa2FpXCA7CivpioDplqPlr7ogPiBnaW5rYWt1amlcIDsKK+miqOmzpeW6pyA+IGZ1dWNob3V6YVwgOwor5oyf55685ZmoID4ga3lvdWtlbmtpXCA7CivmlZnmjojms5UgPiBreW91anVob3VcIDsKK+mbu+awl+mHnCA+IGRlbmtpZ2FtYVwgOwor6Zu75rCX6YePID4gZGVua2lyeW91XCA7CivngrnlhYnmupAgPiB0ZW5rb3VnZW5cIDsKK+aXpeWIiue0mSA+IG5pa2thbnNoaVwgOwor6ZaT54uC6KiAID4gYWlreW91Z2VuXCA7CivogIHkurrmgKcgPiByb3VqaW5zZWlcIDsKK+ioiOaVsOeuoSA+IGtlaXN1dWthblwgOwor6YeR5Yip6Z6YID4ga2lucmlzaG91XCA7Civku67mlL/lupwgPiBrYXJpc2VpZnVcIDsKK+ePvuS7o+eJiCA+IGdlbmRhaWJhblwgOwor5L2O5ae/5YuiID4gdGVpc2hpc2VpXCA7CivmgKXpmY3kuIsgPiBreXV1a291a2FcIDsKK+S/oeWPt+aXlyA+IHNoaW5nb3VraVwgOwor56ul6Kmx5YqHID4gZG91d2FnZWtpXCA7Civlrp/pqJPlj7AgPiBqaWtrZW5kYWlcIDsKK+awtOaIkOWyqSA+IHN1aXNlaWdhblwgOwor5b6h5a+u5Lq6ID4gZ29yeW91bmluXCA7Civoh6rouqvnlaogPiBqaXNoaW5iYW5cIDsKK+egguaZguioiCA+IHN1bmFkb2tlaVwgOwor6KGA6YGU56OoID4gY2hpZGFydW1hXCA7CivppIrpto/loLQgPiB5b3VrZWlqb3VcIDsKK+iEsei1sOWFtSA+IGRhc3NvdWhlaVwgOwor6I2Y5ZyS5Yi2ID4gc2hvdWVuc2VpXCA7CivliY3ljYrmiKYgPiB6ZW5wYW5zZW5cIDsKK+iok+ipgeWtpiA+IGt1bmtvZ2FrdVwgOwor6LuK5LqV5oi4ID4ga3VydW1haWRvXCA7CivlpJbli5nnnIEgPiBnYWltdXNob3VcIDsKK+aWsOaZguS7oyA+IHNoaW5qaWRhaVwgOwor5riJ5aSW6YOoID4gc2hvdWdhaWJ1XCA7CivmhJ/lhYnntJkgPiBrYW5rb3VzaGlcIDsKK+aSruW9seapnyA+IHNhdHN1ZWlraVwgOwor5LiA55Sf5ravID4gaXNzaG91Z2FpXCA7CivmsLTmupDlnLAgPiBzdWlnZW5jaGlcIDsKK+aVtOa1geWZqCA+IHNlaXJ5dXVraVwgOwor6YqA6KGM55WMID4gZ2lua291a2FpXCA7Civnj77kvY/miYAgPiBnZW5qdXVzaG9cIDsKK+WJjeWPo+S4iiA+IG1hZWtvdWpvdVwgOwor5Zyw5a++56m6ID4gY2hpdGFpa3V1XCA7CivnrKzkuIDpm4YgPiBkYWlpc3NodXVcIDsKK+Wkqeeah+WutiA+IHRlbicnbm91a2VcIDsKK+e1puayueiIuSA+IGt5dXV5dXNlblwgOwor5Luj5pu45Lq6ID4gZGFpc2hvbmluXCA7CivlibXlp4vogIUgPiBzb3VzaGlzaGFcIDsKK+S+oeagvOW4ryA+IGtha2FrdXRhaVwgOwor5aC05omA5p+EID4gYmFzaG9nYXJhXCA7Civkv6Hlj7fmiYAgPiBzaGluZ291am9cIDsKK+aCquW+queSsCA+IGFrdWp1bmthblwgOwor5a6f6aiT5YCkID4gamlra2VuY2hpXCA7CivkuI3poqjmtYEgPiBidWZ1dXJ5dXVcIDsKK+Wuo+S8neWToSA+IHNlbmRlbicnaW5cIDsKK+mZpOmbu+mHnSA+IGpvZGVuYmFyaVwgOwor6KGb55Sf5a2mID4gZWlzZWlnYWt1XCA7CivnmbropovogIUgPiBoYWtrZW5zaGFcIDsKK+azleeOi+W6gSA+IGhvdW91Y2hvdVwgOwor5LiA55Wq5omLID4gaWNoaWJhbnRlXCA7CivpmZDnlYzngrkgPiBnZW5rYWl0ZW5cIDsKK+adv+ebrue0mSA+IGl0YW1lZ2FtaVwgOwor5oSB5ZiG5aC0ID4gc2h1dXRhbmJhXCA7CivoirHnm7jmkrIgPiBoYW5henVtb3VcIDsKK+atr+enkeWtpiA+IHNoaWthZ2FrdVwgOwor5LuV5LqL552AID4gc2hpZ290b2dpXCA7CivlhYnmlofnpL4gPiBrb3VidW5zaGFcIDsKK+mrmOeHpeWcsCA+IGtvdXNvdWNoaVwgOwor6L6y5Zyw5rOVID4gbm91Y2hpaG91XCA7CivokZvmoLnmua8gPiBrYWtrb250b3VcIDsKK+WFiembu+euoSA+IGtvdWRlbmthblwgOwor6Lqr5YiG5p+EID4gbWlidW5nYXJhXCA7CivoprPopqfliLggPiBrYW5yYW5rZW5cIDsKK+emgeWItuWTgSA+IGtpbnNlaWhpblwgOwor5b2T57Gk6ICFID4gdG91c2Vuc2hhXCA7CivpgLLljJboq5YgPiBzaGlua2Fyb25cIDsKK+WGjeaknOiojiA+IHNhaWtlbnRvdVwgOwor5Y2K5aSP55SfID4gaGFuZ2VzaG91XCA7CivlvqHpo6/mmYIgPiBnb2hhbmRva2lcIDsKK+aEm+W8n+WtkCA+IG1hbmFkZXNoaVwgOwor5omL5byV5pu4ID4gdGViaWtpc2hvXCA7Civmj67nmbrmsrkgPiBraWhhdHN1eXVcIDsKK+e/sOael+mZoiA+IGthbnJpbicnaW5cIDsKK+aVtOWQiOaApyA+IHNlaWdvdXNlaVwgOwor5paZ55CG55WqID4gcnlvdXJpYmFuXCA7CivljYHkuozlrq4gPiBqdXVuaWt5dXVcIDsKK+eUn+eUo+iyoSA+IHNlaXNhbnphaVwgOwor5LiA5Luj6KiYID4gaWNoaWRhaWtpXCA7CivlhYPlp4vnpa0gPiBnZW5zaGlzYWlcIDsKK+S6oeWRveiAhSA+IGJvdW1laXNoYVwgOwor5pyJ56iO5ZOBID4geXV1emVpaGluXCA7CivlpKfkvb/ppKggPiB0YWlzaGlrYW5cIDsKK+mZkOWumuipniA+IGdlbnRlaXNoaVwgOwor54Sh6aeE6aOvID4gbXVkYW1lc2hpXCA7Civnt4/msbrnrpcgPiBzb3VrZXNzYW5cIDsKK+attOWPsuWutiA+IHJla2lzaGlrYVwgOwor5rW35rC05bi9ID4ga2Fpc3VpYm91XCA7CivmjqfpmaTpoY0gPiBrb3Vqb2dha3VcIDsKK+WutuaUv+WtpiA+IGthc2VpZ2FrdVwgOwor5YaF5byf5a2QID4gdWNoaWRlc2hpXCA7CivlpJrlv5nkuK0gPiB0YWJvdWNodXVcIDsKK+WOn+WvuOWkpyA+IGdlbnN1bmRhaVwgOwor5qmf6IO955qEID4ga2lub3V0ZWtpXCA7CivlpbPmgKfnmoQgPiBqb3NlaXRla2lcIDsKK+a7kee/lOapnyA+IGthc3Nob3VraVwgOwor5bm05aeL54q2ID4gbmVuc2hpam91XCA7CivlrZDnhanmgqkgPiBrb2Jvbicnbm91XCA7CivmjIfljZfou4ogPiBzaGluYW5zaGFcIDsKK+WGmeeUn+aWhyA+IHNoYXNlaWJ1blwgOwor5YaF6YGK5pifID4gbmFpeXV1c2VpXCA7Civoi6booYzogIUgPiBrdWd5b3VzaGFcIDsKK+e9quaCquaEnyA+IHphaWFrdWthblwgOwor54Sh55eH54q2ID4gbXVzaG91am91XCA7Civop5LnoILns5YgPiBrYWt1emF0b3VcIDsKK+eUn+i/lOS6iyA+IG5hbWFoZW5qaVwgOwor5Y2Y57SU5oCnID4gdGFuanVuc2VpXCA7CivlpKflg6fmraMgPiBkYWlzb3Vqb3VcIDsKK+S4gOi6q+S4iiA+IGlzc2hpbmpvdVwgOwor5L+u6YGT5bC8ID4gc2h1dWRvdW5pXCA7Civou43mlL7pgIEgPiBndW5ob3Vzb3VcIDsKK+eZu+iomOaWmSA+IHRvdWtpcnlvdVwgOwor6Iux5Zu95Lq6ID4gZWlrb2t1amluXCA7Civlgb3oqLzogIUgPiBnaXNob3VzaGFcIDsKK+mBk+i3r+apiyA+IGRvdXJva3lvdVwgOwor5pKu5b2x5omAID4gc2F0c3VlaWpvXCA7CivlvaLmhYvoq5YgPiBrZWl0YWlyb25cIDsKK+WBveiovOe9qiA+IGdpc2hvdXphaVwgOwor6aaW6KyA6ICFID4gc2h1Ym91c2hhXCA7CivopIflj7fljJYgPiBmdWt1Z291a2FcIDsKK+esrOS4gOi8ryA+IGRhaWlzc2h1dVwgOwor5aeL56WW6bOlID4gc2hpc29jaG91XCA7CivnibnoqLHms5UgPiB0b2treW9ob3VcIDsKK+mkiuavm+WJpCA+IHlvdW1vdXphaVwgOwor5rWu5rCX6ICFID4gdXdha2ltb25vXCA7Civmmpfpu5LooZcgPiBhbmtva3VnYWlcIDsKK+Wkp+WFg+W4pSA+IGRhaWdlbnN1aVwgOwor5YWN6Kix54q2ID4gbWVua3lvam91XCA7CivlpJzlhYnomasgPiB5YWtvdWNodXVcIDsKK+Wlh+WkqeeDiCA+IGtpdGVyZXRzdVwgOwor5YyZ5Yqg5ribID4gc2FqaWthZ2VuXCA7CivmipXmiYvmnb8gPiB0b3VzaHViYW5cIDsKK+W+k+alreWToSA+IGp1dWd5b3VpblwgOwor5om56KmV55y8ID4gaGloeW91Z2FuXCA7Civkv67pgZPlpbMgPiBzaHV1ZG91am9cIDsKK+Wcp+eXm+eCuSA+IGF0dHN1dXRlblwgOwor5rW35YW16ZqKID4ga2FpaGVpdGFpXCA7CivogIPoqrLooaggPiBrb3VrYWh5b3VcIDsKK+m6puiKveezliA+IGJha3VnYXRvdVwgOwor5paH6Iq45qyEID4gYnVuZ2VpcmFuXCA7CivlpJznm7Lnl4cgPiB5YW1vdXNob3VcIDsKK+aKleeov+iAhSA+IHRvdWtvdXNoYVwgOwor54Sh5beu5YilID4gbXVzYWJldHN1XCA7CivnqbrmjLrpmoogPiBrdXV0ZWl0YWlcIDsKK+W+ruiqv+aVtCA+IGJpY2hvdXNlaVwgOwor5Y+j5b+g5a6fID4ga3VjaGltYW1lXCA7CivoirHmqKHmp5ggPiBoYW5hbW95b3VcIDsKK+acieWQjeagoSA+IHl1dW1laWtvdVwgOwor54m56Kix5qipID4gdG9ra3lva2VuXCA7Civmp4vmiJDlrZAgPiBrb3VzZWlzaGlcIDsKK+iri+mhmOabuCA+IHNlaWdhbnNob1wgOwor5ouh5aOw5qmfID4ga2FrdXNlaWtpXCA7CivoqI7oq5bkvJogPiB0b3Vyb25rYWlcIDsKK+aLmOe9ruaJgCA+IGtvdWNoaXNob1wgOwor5Lqk5riJ5ZOhID4ga291c2hvdWluXCA7CivlirTlvbnloLQgPiByb3Vla2lqb3VcIDsKK+mVt+Wwvum2jyA+IG5hZ2FvZG9yaVwgOwor5rC06YqA54GvID4gc3VpZ2ludG91XCA7CivkuLvmiJDliIYgPiBzaHVzZWlidW5cIDsKK+S/rui+nuazlSA+IHNodXVqaWhvdVwgOwor5Y2T6Kmx5LyaID4gdGFrdXdha2FpXCA7CivmiYvlt6XoirggPiBzaHVrb3VnZWlcIDsKK+aWmeeQhuazlSA+IHJ5b3VyaWhvdVwgOwor5om/6KqN5ZuzID4gc2hvdW5pbnp1XCA7CivmnKzls7bkurogPiBob250b3VqaW5cIDsKK+aBkuW4uOaApyA+IGtvdWpvdXNlaVwgOwor6ZW35bC+6bOlID4gbmFnYW9kb3JpXCA7CivntYTnuZTljJYgPiBzb3NoaWtpa2FcIDsKK+W+oeaWsOmAoCA+IGdvc2hpbnpvdVwgOwor5Lm+6Zu75rGgID4ga2FuZGVuY2hpXCA7Civoh6rkvZzovrIgPiBqaXNha3Vub3VcIDsKK+WItuepuuaoqSA+IHNlaWt1dWtlblwgOwor6Iqx5qSw6I+cID4gaGFuYXlhc2FpXCA7Civnq7bmioDloLQgPiBreW91Z2lqb3VcIDsKK+aXp+WItuW6piA+IGt5dXVzZWlkb1wgOwor5YWx5ZKM5pS/ID4ga3lvdXdhc2VpXCA7CivlsIrnjovlrrYgPiBzb24nJ25vdWthXCA7CivpgYXpgLLlhZAgPiBjaGlzaGluamlcIDsKK+aghOmkiuWtpiA+IGVpeW91Z2FrdVwgOwor5LiN5LuL5YWlID4gZnVrYWlueXV1XCA7CivmipXmiYvmiKYgPiB0b3VzaHVzZW5cIDsKK+eKrOW8teWtkCA+IGludWhhcmlrb1wgOwor6YCB6Zu757eaID4gc291ZGVuc2VuXCA7CivljbXpu4TlmqIgPiByYW4nJ291bm91XCA7CivmsJflnKfoqIggPiBraWF0c3VrZWlcIDsKK+mnhuiZq+WJpCA+IGt1Y2h1dXphaVwgOwor54qs6L+954mpID4gaW51b3Vtb25vXCA7CivkuInmlpHptokgPiBtaWZ1dXp1cmFcIDsKK+aLjeWtkOacqCA+IGh5b3VzaGlnaVwgOwor5aSa5q+b5L2cID4gdGFtb3VzYWt1XCA7CivmiYvojbfniakgPiB0ZW5pbW90c3VcIDsKK+WHoOW4s+mdoiA+IGtpY2hvdW1lblwgOwor5qih56+E55qEID4gbW9oYW50ZWtpXCA7CivnrYboqJjluLMgPiBoaWtraWNob3VcIDsKK+mVt+i3nemboiA+IGNob3VreW9yaVwgOwor576O5bCR5bm0ID4gYmlzaG91bmVuXCA7Civkub7nh6XmnZAgPiBrYW5zb3V6YWlcIDsKK+eUn+eUo+iAhSA+IHNlaXNhbnNoYVwgOwor5LiN5pyN5b6TID4gZnVmdWt1anV1XCA7CivmnKzmoLzmtL4gPiBob25rYWt1aGFcIDsKK+WOn+WtkOaIpiA+IGdlbnNoaXNlblwgOwor5LiN5aSJ6YePID4gZnVoZW5yeW91XCA7CivpoZTpprTmn5MgPiBrYW9uYWppbWlcIDsKK+iQveiRieaouSA+IHJha3V5b3VqdVwgOwor5LiJ6aCt562LID4gc2FudG91a2luXCA7Civku6PoqIDogIUgPiBkYWlnZW5zaGFcIDsKK+aPrueZuuW6piA+IGtpaGF0c3Vkb1wgOwor5aSn6Ieq54S2ID4gZGFpc2hpemVuXCA7CivkuI3mmYLnnYAgPiBmdWppY2hha3VcIDsKK+e1seWItue3miA+IHRvdXNlaXNlblwgOwor5YWJ6Zu75rGgID4ga291ZGVuY2hpXCA7CivoirHkvpvppIogPiBoYW5ha3V5b3VcIDsKK+mbo+WVj+mhjCA+IG5hbm1vbmRhaVwgOwor57aZ6Zu76Y21ID4ga2VpZGVua2VuXCA7CivmqZ/morDlraYgPiBraWthaWdha3VcIDsKK+WppuS6uueXhSA+IGZ1amluYnlvdVwgOwor5ZCM5aW96ICFID4gZG91a291c2hhXCA7Civlgb3lporlqKAgPiBnaW5pbnNoaW5cIDsKK+eBq+e4hOmKgyA+IGhpbmF3YWp1dVwgOwor5YmN5YuY5a6aID4gbWFla2Fuam91XCA7Civml6LnmbrooaggPiBraWhhcHB5b3VcIDsKK+eUsueKtuiFuiA+IGtvdWpvdXNlblwgOwor56i95Y+k5LqLID4ga2Vpa29nb3RvXCA7CivmiJDmlofms5UgPiBzZWlidW5ob3VcIDsKK+imj+agvOWTgSA+IGtpa2FrdWhpblwgOwor5LuV5LqL5pelID4gc2hpZ290b2JpXCA7CivliIbkuI7nqI4gPiBidW4nJ3lvemVpXCA7Civnmb3nhKHlnqIgPiBzaGlyb211a3VcIDsKK+S6jOetieizniA+IG5pdG91c2hvdVwgOwor5a6a5LyR5pelID4gdGVpa3l1dWJpXCA7Civnmb3nga/msrkgPiBoYWt1dG91eXVcIDsKK+mBi+i7ouW4rSA+IHVudGVuc2VraVwgOwor5YWs5rCR6aSoID4ga291bWlua2FuXCA7Civnr6TovrLlrrYgPiB0b2t1bm91a2FcIDsKK+iMieiOieiKsSA+IG1hdHN1cmlrYVwgOwor5Lq65bel5rivID4gamlua291a291XCA7Civpq5jpmbXlnJ8gPiBrb3VyeW91ZG9cIDsKK+aEn+WFieadvyA+IGthbmtvdWJhblwgOwor5LiJ5LmX5qC5ID4gc2Fuam91a29uXCA7CivnlLfpoqjlkYIgPiBvdG9rb2J1cm9cIDsKK+Wls+mDjuiKsSA+IG9taW5hZXNoaVwgOwor5rue57SN6ICFID4gdGFpbm91c2hhXCA7CivkvJ3pgZPluKsgPiBkZW5kb3VzaGlcIDsKK+W/nOWPrOWFtSA+IG91c2hvdWhlaVwgOwor6KSH5Y2B5a2XID4gZnVrdWp1dWppXCA7Civlho3mp4vmiJAgPiBzYWlrb3VzZWlcIDsKK+acieauteiAhSA+IHl1dWRhbnNoYVwgOwor5Y2Y6KGj54mpID4gaGl0b2Vtb25vXCA7Civopo/moLzliKQgPiBraWtha3ViYW5cIDsKK+esrOS4ieiAhSA+IGRhaXNhbnNoYVwgOwor5L2T5pON5aC0ID4gdGFpc291am91XCA7CivkuLvmtYHmtL4gPiBzaHVyeXV1aGFcIDsKK+W6g+WgseWumCA+IGtvdWhvdWthblwgOwor5Lq65bel5rGgID4gamlua291aWtlXCA7Civlj6Pok4vlnoIgPiBrb3VnYWlzdWlcIDsKK+mHkeWJm+eggiA+IGtvbmdvdXNoYVwgOwor5Y2B5LiJ5aScID4ganV1c2FuJyd5YVwgOwor5aSn5a2m6ZmiID4gZGFpZ2FrdWluXCA7CivkuZfnlKjou4ogPiBqb3V5b3VzaGFcIDsKK+S4jeaYjueiuiA+IGZ1bWVpa2FrdVwgOwor6JyD5rCX5qW8ID4gc2hpbmtpcm91XCA7CivopIfokYnmqZ8gPiBmdWt1eW91a2lcIDsKK+S6jOetieimqiA+IG5pdG91c2hpblwgOwor6I2J56u26aasID4ga3VzYWtlaWJhXCA7CivpmqDlhYPosYYgPiBpbmdlbm1hbWVcIDsKK+e0r+S5l+aguSA+IHJ1aWpvdWtvblwgOwor5p2x5rSL5Lq6ID4gdG91eW91amluXCA7Civnq7bmioDkvJogPiBreW91Z2lrYWlcIDsKK+WLp+iqmOWToSA+IGthbicneXV1aW5cIDsKK+iAgeWphuW/gyA+IHJvdWJhc2hpblwgOwor5YK15qip6ICFID4gc2Fpa2Vuc2hhXCA7CivnrKzkuIDnvqkgPiBkYWlpY2hpZ2lcIDsKK+Wcp+WAkueahCA+IGF0dG91dGVraVwgOwor5LiN5piO556tID4gZnVtZWlyeW91XCA7CivmlL7pm7vnrqEgPiBob3VkZW5rYW5cIDsKK+WJjei6q+mggyA+IG1hZW1pZ29yb1wgOwor5bCR5pWw5rS+ID4gc2hvdXN1dWhhXCA7CivnibnmjZzpg6ggPiB0b2t1c291YnVcIDsKK+iqv+mmrOW4qyA+IGNob3ViYXNoaVwgOwor55CG6KuW55qEID4gcmlyb250ZWtpXCA7Civpo7LmsLTph48gPiBpbnN1aXJ5b3VcIDsKK+iqv+eQhuazlSA+IGNob3VyaWhvdVwgOwor57Sv54qv6ICFID4gcnVpaGFuc2hhXCA7Civlpb3pg73lkIggPiBrb3V0c3Vnb3VcIDsKK+WuieWFqOWfnyA+IGFuemVuJydpa2lcIDsKK+iZmuaghOW/gyA+IGt5b2Vpc2hpblwgOwor5a6a5pyf55qEID4gdGVpa2l0ZWtpXCA7Civoqo3lj6/oqLwgPiBuaW5rYXNob3VcIDsKK+S/oeW/g+WutiA+IHNoaW5qaW5rYVwgOwor5by35aem572qID4gZ291a2FuemFpXCA7CivmlZnmjojkvJogPiBreW91anVrYWlcIDsKK+mAo+WQiOi7jSA+IHJlbmdvdWd1blwgOwor6YeN5ZCI5L2TID4ganV1Z291dGFpXCA7CivliqDomZDmhJsgPiBrYWd5YWt1YWlcIDsKK+ays+W3neaVtyA+IGthc2VuamlraVwgOwor6LuN6ZqK6JGsID4gZ3VudGFpc291XCA7CivmlbDlubTplpMgPiBzdXVuZW5rYW5cIDsKK+i7veawl+eQgyA+IGtlaWtpa3l1dVwgOwor6Z2S5rWu6I2JID4gYW91a2lrdXNhXCA7Civlronmpb3mrbsgPiBhbnJha3VzaGlcIDsKK+mHkeW5s+ezliA+IGtvbnBlaXRvdVwgOwor5a6a5L2P5ZywID4gdGVpanV1Y2hpXCA7Civph5HovKrpmpsgPiBrb25yaW56YWlcIDsKK+aWmeeQhuW6lyA+IHJ5b3VyaXRlblwgOwor6LK/5piT6aKoID4gYm91ZWtpZnV1XCA7Civkurrlt6XmnpcgPiBqaW5rb3VyaW5cIDsKK+a1t+mBi+alrSA+IGthaXVuZ3lvdVwgOwor6KGj6aOf5L2PID4gaXNob2t1anV1XCA7Civlr53lhbfpoZ4gPiBzaGluZ3VydWlcIDsKK+adseWNl+adsSA+IHRvdW5hbnRvdVwgOwor55Sy5p2/5ZOhID4ga291aGFuJydpblwgOwor54++5Luj5Y+yID4gZ2VuZGFpc2hpXCA7CivmoLnoj5zpoZ4gPiBrb25zYWlydWlcIDsKK+WumuS+i+S8miA+IHRlaXJlaWthaVwgOwor5rG66ZeY54q2ID4ga2V0dG91am91XCA7CivompXljbXntJkgPiBzYW5yYW5zaGlcIDsKK+WkluiSmeWPpCA+IHNvdG9tb3Vrb1wgOwor6LuK5Lih5YyWID4gc2hhcnlvdWthXCA7CivmhJ/lhYnmgKcgPiBrYW5rb3VzZWlcIDsKK+esrOS4gOeroCA+IGRhaWlzc2hvdVwgOwor6Ieo55WM54K5ID4gcmlua2FpdGVuXCA7CivllYblo7LmsJcgPiBzaG91YmFpZ2lcIDsKK+WbveaGsuazlSA+IGtva2tlbnBvdVwgOwor5Lih6Zmb5LiLID4gcnlvdWhlaWthXCA7CivpmZDlrprniYggPiBnZW50ZWliYW5cIDsKK+WJjei7iui8qiA+IHplbnNoYXJpblwgOwor6ZuE54mb57OeID4gb3VzaGlrdXNvXCA7CivkuI3lpornl4cgPiBmdW5pbnNob3VcIDsKK+Wkiea1geWZqCA+IGhlbnJ5dXVraVwgOwor6Yed5L6b6aSKID4gaGFyaWt1eW91XCA7Civlvq7oppbnmoQgPiBiaXNoaXRla2lcIDsKK+ebo+imluWhlCA+IGthbnNoaXRvdVwgOwor5Y2g5oug5ZywID4gc2Vua3lvY2hpXCA7CivmjIflkJHmgKcgPiBzaGlrb3VzZWlcIDsKK+S4gOS6uueUqCA+IGhpdG9yaXlvdVwgOwor6Kq/6aas5aC0ID4gY2hvdWJham91XCA7Civlho3ovLjlhaUgPiBzYWl5dW55dXVcIDsKK+e2v+a0peimiyA+IHdhdGF0c3VtaVwgOwor5YSq6Imv5YWQID4geXV1cnlvdWppXCA7Civmta7li5XnpaggPiBmdWRvdWh5b3VcIDsKK+WFiOWkqeaApyA+IHNlbnRlbnNlaVwgOwor5b2i5oiQ5bGkID4ga2Vpc2Vpc291XCA7CivluKvnr4Tku6MgPiBzaGloYW5kYWlcIDsKK+S8keatouespiA+IGt5dXVzaGlmdVwgOwor5LiN6Z2i55uuID4gZnVtZW5tb2t1XCA7CivlsI/ns6Dpm6ggPiBrb251a2FhbWVcIDsKK+acrOS6iOeulyA+IGhvbicneW9zYW5cIDsKK+aMh+WNl+eVqiA+IHNoaW5hbmJhblwgOwor5ouh5aOw5ZmoID4ga2FrdXNlaWtpXCA7Civoh6rnlLHmpa0gPiBqaXl1dWd5b3VcIDsKK+emgei8uOWTgSA+IGtpbicneXVoaW5cIDsKK+WPuOS8muiAhSA+IHNoaWthaXNoYVwgOwor5oqV56i/5qyEID4gdG91a291cmFuXCA7CivmjL/oqbHnmoQgPiBzb3V3YXRla2lcIDsKK+mBk+S4reiomCA+IGRvdWNodXVraVwgOwor5Y2K5aGp5rC0ID4gaGFuJydlbnN1aVwgOwor5o6S5LuW55qEID4gaGFpdGF0ZWtpXCA7CivlpKfohbjngo4gPiBkYWljaG91ZW5cIDsKK+WwvOazleW4qyA+IGFtYWhvdXNoaVwgOwor5a6a572u57ayID4gdGVpY2hpYW1pXCA7Civoirjog73nlYwgPiBnZWlub3VrYWlcIDsKK+WNiua/gemfsyA+IGhhbmRha3VvblwgOwor6YWN566h5belID4gaGFpa2Fua291XCA7Civnj77ku6PkurogPiBnZW5kYWlqaW5cIDsKK+i+sua8geawkSA+IG5vdWd5b21pblwgOwor5aWz5oCn5a2mID4gam9zZWlnYWt1XCA7Civkub7nh6XlnLAgPiBrYW5zb3VjaGlcIDsKK+WIhumhnuazlSA+IGJ1bnJ1aWhvdVwgOwor55+z6IaP5YOPID4gc2Vra291em91XCA7CivlvbHmrabogIUgPiBrYWdlbXVzaGFcIDsKK+a0u+eJiOacrCA+IGthcHBhbmJvblwgOwor5LuV5LqL5aC0ID4gc2hpZ290b2JhXCA7CivlqabkurrmnI0gPiBmdWppbmZ1a3VcIDsKK+WvneW/g+WcsCA+IG5lZ29rb2NoaVwgOwor57W15be754mpID4gZW1ha2ltb25vXCA7CivkuI3mlpnnsKEgPiBmdXJ5b3VrZW5cIDsKK+WMluefs+WxpCA+IGthc2VraXNvdVwgOwor5pmp6aSQ5LyaID4gYmFuc2Fua2FpXCA7Civku5XmlL7poYwgPiBzaGlob3VkYWlcIDsKK+WFseWSjOWItiA+IGt5b3V3YXNlaVwgOwor5qGI5YaF54q2ID4gYW4nJ25haWpvdVwgOwor5aSa5YWD55qEID4gdGFnZW50ZWtpXCA7CivliLbmtbfmqKkgPiBzZWlrYWlrZW5cIDsKK+S6pOmFjeeoriA+IGtvdWhhaXNodVwgOwor5Zyo5L2P6ICFID4gemFpanV1c2hhXCA7CivmiJDnhp/mnJ8gPiBzZWlqdWt1a2lcIDsKK+WFseWSjOWFmiA+IGt5b3V3YXRvdVwgOwor5bmz5pa55qC5ID4gaGVpaG91a29uXCA7Civoq5zloLHlk6EgPiBjaG91aG91aW5cIDsKK+iIiOWlruWJpCA+IGtvdWZ1bnphaVwgOwor5YWI6KaL6ICFID4gc2Vua2Vuc2hhXCA7CivoiKrnqbrliLggPiBrb3VrdXVrZW5cIDsKK+WFiembu+WtkCA+IGtvdWRlbnNoaVwgOwor5aOy5Zu95aW0ID4gYmFpa29rdWRvXCA7CivnuYHliIbmlbAgPiBoYW5idW5zdXVcIDsKK+aAp+ihjOWLlSA+IHNlaWtvdWRvdVwgOwor6YqA6KGM5Yi4ID4gZ2lua291a2VuXCA7CivkuIfkuIfmrbMgPiBiYW5iYW56YWlcIDsKK+WBnOiIueWgtCA+IHRlaXNlbmpvdVwgOwor5ZiG6aGY5pu4ID4gdGFuZ2Fuc2hvXCA7Civlho3nlJ/nlKMgPiBzYWlzZWlzYW5cIDsKK+WcsOWvvuWcsCA+IGNoaXRhaWNoaVwgOwor5paH5L2T6KuWID4gYnVudGFpcm9uXCA7Civoqr/mn7vlm6MgPiBjaG91c2FkYW5cIDsKK+WNmOihjOacrCA+IHRhbmtvdWJvblwgOwor5bCP5aSc5puyID4gc2F5b2t5b2t1XCA7Civlh7rkuJbplpMgPiBzaHVzc2VrZW5cIDsKK+WNmOihjOabuCA+IHRhbmtvdXNob1wgOwor5LiA5pmC6ZaTID4gaWNoaWppa2FuXCA7CivmuKnms4npg7cgPiBvbnNlbmt5b3VcIDsKK+acieWQjeS6uiA+IHl1dW1laWppblwgOwor5b6M55Sy5p2/ID4ga291a2FucGFuXCA7CivlvLHkvZPljJYgPiBqYWt1dGFpa2FcIDsKK+e1jOa4iOmdoiA+IGtlaXphaW1lblwgOwor5L+u6aiT6YGTID4gc2h1Z2VuZG91XCA7CivlvoDnlJ/pmpsgPiBvdWpvdWdpd2FcIDsKK+aui+WtmOiAhSA+IHphbnpvbnNoYVwgOwor6Iiq56m65L6/ID4ga291a3V1YmluXCA7CivmoLjmraboo4UgPiBrYWt1YnVzb3VcIDsKK+Wfi+iUtemHkSA+IG1haXpvdWtpblwgOwor5a2k56uL5YyWID4ga29yaXRzdWthXCA7CivogZblrrbml48gPiBzZWlrYXpva3VcIDsKK+S5vueHpeWJpCA+IGthbnNvdXphaVwgOwor5rOl54Kt5ZywID4gZGVpdGFuY2hpXCA7CivlpJbovKroiLkgPiBnYWlyaW5zZW5cIDsKK+ikh+WIqeazlSA+IGZ1a3VyaWhvdVwgOwor6JK455WZ5ZmoID4gam91cnl1dWtpXCA7CivpkZHlrprmm7ggPiBrYW50ZWlzaG9cIDsKK+ijveawt+apnyA+IHNlaWh5b3VraVwgOwor5be75a+/5Y+4ID4gbWFraXp1c2hpXCA7CivmtojosrvosqEgPiBzaG91aGl6YWlcIDsKK+iRl+S9nOWutiA+IGNob3Nha3VrYVwgOwor5biC6LKp5ZOBID4gc2hpaGFuaGluXCA7Civlt7vpoK3oqIAgPiBrYW50b3VnZW5cIDsKK+iqv+eQhuW4qyA+IGNob3VyaXNoaVwgOwor55yf5qGR55OcID4gbWFrdXdhdXJpXCA7Civpmo/lvpPogIUgPiB6dWlqdXVzaGFcIDsKK+S4gOWvuOWFiCA+IGlzc3Vuc2FraVwgOwor5paH5a2m6YOoID4gYnVuZ2FrdWJ1XCA7CivkuojntITliLYgPiB5b3lha3VzZWlcIDsKK+e3mumAn+W6piA+IHNlbnNva3Vkb1wgOwor5bmz6Z2i5b2iID4gaGVpbWVua2VpXCA7CivopIfmr5TkvosgPiBmdWt1aGlyZWlcIDsKK+aVo+awtOi7iiA+IHNhbnN1aXNoYVwgOwor5LiA5pmC6YeRID4gaWNoaWppa2luXCA7CivliY3lubTluqYgPiB6ZW4nJ25lbmRvXCA7CivnmbrooYzogIUgPiBoYWtrb3VzaGFcIDsKK+WBnOeVmeaJgCA+IHRlaXJ5dXVqb1wgOwor5a6u5Z+O55yMID4gbWl5YWdpa2VuXCA7CivliY3liY3lm54gPiB6ZW56ZW5rYWlcIDsKK+eHl+W+s+WIqSA+IGthbmRva3VyaVwgOwor5q275YiR5aC0ID4gc2hpa2Vpam91XCA7Civlt7vlrZDmnKwgPiBrYW5zaGlob25cIDsKK+eUuuitsOS8miA+IGNob3VnaWthaVwgOwor5Lq655Sf6KazID4gamluc2Vpa2FuXCA7CivnnJ/nj6Dosp0gPiBzaGluanVnYWlcIDsKK+S6rOmDveW4giA+IGt5b3V0b3NoaVwgOwor6Zuo5Y+w6aKoID4gYW1ldGFpZnV1XCA7Civoh6rnlLHlvaIgPiBqaXl1dWdhdGFcIDsKK+WFjeioseWItiA+IG1lbmt5b3NlaVwgOwor6ZuR5aCx5qyEID4gemFwcG91cmFuXCA7CivmhJvlhZrlv4MgPiBhaXRvdXNoaW5cIDsKK+mYsuatouazlSA+IGJvdXNoaWhvdVwgOwor6YG45oyZ5rOVID4gc2Vua3lvaG91XCA7CivlpKnkupXoo48gPiB0ZW5qb3V1cmFcIDsKK+WNiumZsOW9sSA+IGhhbicnaW4nJ2VpXCA7CivmnIDph43ngrkgPiBzYWlqdXV0ZW5cIDsKK+S4gOWvvuS4gCA+IGl0dGFpaWNoaVwgOwor6YG45oyZ5rCRID4gc2Vua3lvbWluXCA7CivmlZnllIbogIUgPiBreW91c2FzaGFcIDsKK+aWmeeQhuS6uiA+IHJ5b3VyaW5pblwgOwor6Ieq55Sx5bitID4gaml5dXVzZWtpXCA7CivmnIjliIroqowgPiBnZWtrYW5zaGlcIDsKK+S4jeeGn+e3tCA+IGZ1anVrdXJlblwgOwor5Y+k5YW455qEID4ga290ZW50ZWtpXCA7CivlpInmrbvogIUgPiBoZW5zaGlzaGFcIDsKK+acrOagvOWMliA+IGhvbmtha3VrYVwgOwor5LuV5LiK5belID4gc2hpYWdla291XCA7CivniaHkuLnmnY8gPiBib3Rhbmt5b3VcIDsKK+W5s+aWueW9oiA+IGhlaWhvdWtlaVwgOwor5Yq05YON6ICFID4gcm91ZG91c2hhXCA7CivlpInljJbnkIMgPiBoZW5rYWt5dXVcIDsKK+mBoOmalOimliA+IGVua2FrdXNoaVwgOwor6ZuR6KiY5bizID4gemFra2ljaG91XCA7CivlnKjmoKHnlJ8gPiB6YWlrb3VzZWlcIDsKK+aRqeaTpumfsyA+IG1hc2F0c3VvblwgOwor6JuN54OP6LOKID4gaG90YXJ1aWthXCA7Civlho3nlJ/ms5UgPiBzYWlzZWlob3VcIDsKK+WkmueZuuapnyA+IHRhaGF0c3VraVwgOwor5rS754mI5bGLID4ga2FwcGFuJyd5YVwgOwor6YeR5Ymb5omLID4ga29uZ291c2h1XCA7CivooqvlrrPpoY0gPiBoaWdhaWdha3VcIDsKK+mBuOaMmeaoqSA+IHNlbmt5b2tlblwgOwor5Z+65pys57WmID4ga2lob25reXV1XCA7CivpnZ7ph5HlsZ4gPiBoaWtpbnpva3VcIDsKK+eMqeeMqee3iyA+IHNob3Vqb3VoaVwgOwor5Zue5pWZ5b6SID4ga2Fpa3lvdXRvXCA7CivmjIfnpLrlhYggPiBzaGlqaXNha2lcIDsKK+WCmeW/mOmMsiA+IGJpYm91cm9rdVwgOwor56CC57OW6buNID4gc2F0b3VraWJpXCA7CivmoYjlhoXmm7ggPiBhbicnbmFpc2hvXCA7Civlip/lirTph5EgPiBrb3Vyb3VraW5cIDsKK+iiq+W3ruWIpSA+IGhpc2FiZXRzdVwgOwor55eY55eV6Z2iID4gYWJhdGF6dXJhXCA7CivmnLHmlofph5EgPiBzaHVidW5raW5cIDsKK+S4jeisueaFjiA+IGZ1a2luc2hpblwgOwor6IKd56Gs5aSJID4ga2Fua291aGVuXCA7CivmnKvmnJ/nmoQgPiBtYWtraXRla2lcIDsKK+ekvOWlieWFrCA+IHJlaWJvdWtvdVwgOwor5Y2U5oqA6ICFID4ga3lvdWdpc2hhXCA7CivlpJrotrPpoZ4gPiB0YXNva3VydWlcIDsKK+elnuenmOaApyA+IHNoaW5waXNlaVwgOwor5rK46aiw54K5ID4gZnV0dG91dGVuXCA7CivppIrprZrmsaAgPiB5b3VneW9jaGlcIDsKK+mtlOazleeahCA+IG1haG91dGVraVwgOwor6KO95rC35omAID4gc2VpaHlvdWpvXCA7CivplqLopb/lvIEgPiBrYW5zYWliZW5cIDsKK+WFq+WNg+iNiSA+IHlhY2hpZ3VzYVwgOwor6YGT5Lqk5rOVID4gZG91a291aG91XCA7Civph47oj5zmsYEgPiB5YXNhaWppcnVcIDsKK+aWoeaXi+aWmSA+IGFzc2VucnlvdVwgOwor6Iiq5rW35aOrID4ga291a2Fpc2hpXCA7Civmta7li5XmoKogPiBmdWRvdWthYnVcIDsKK+a3t+S6pOaelyA+IGtvbmtvdXJpblwgOwor5qih56+E5ZuaID4gbW9oYW5zaHV1XCA7CivorJvnvqnpjLIgPiBrb3VnaXJva3VcIDsKK+eUn+WtmOiAhSA+IHNlaXpvbnNoYVwgOwor5LiN6Kys5oCnID4gZnVieXV1c2VpXCA7CivlsI7pm7vmgKcgPiBkb3VkZW5zZWlcIDsKK+aUuemdqeahiCA+IGthaWtha3VhblwgOwor5rOV5pS55q2jID4gaG91a2Fpc2VpXCA7CivnlJ/nlKPmgKcgPiBzZWlzYW5zZWlcIDsKK+S4iuS4reS4iyA+IGpvdWNodXVnZVwgOwor57Wm5rC05omAID4ga3l1dXN1aWpvXCA7CivnjJznlpHlv4MgPiBzYWlnaXNoaW5cIDsKK+S4jeiqv+azlSA+IGJ1Y2hvdWhvdVwgOwor5Y+X5YuV55qEID4ganVkb3V0ZWtpXCA7Civoh6rnlLHlnosgPiBqaXl1dWdhdGFcIDsKK+iqv+eQhuWPsCA+IGNob3VyaWRhaVwgOwor56m66ZaR5ZywID4ga3V1a2FuY2hpXCA7CivlirTlg43npa0gPiByb3Vkb3VzYWlcIDsKK+WGjeadpemAsSA+IHNhcmFpc2h1dVwgOwor5Luj6KGo6YOoID4gZGFpaHlvdWJ1XCA7Civlg4XlsJHlt64gPiBraW5zaG91c2FcIDsKK+WRqOacn+aApyA+IHNodXVraXNlaVwgOwor6aOb6KGM5pyNID4gaGlrb3VmdWt1XCA7CivkuI3nibnlrpogPiBmdXRva3V0ZWlcIDsKK+ihqOmdouWMliA+IGh5b3VtZW5rYVwgOwor5biC5pyJ5ZywID4gc2hpeXV1Y2hpXCA7CivmqJnmupboqp4gPiBoeW91anVuZ29cIDsKK+awtOW5s+mdoiA+IHN1aWhlaW1lblwgOwor5Lqk6YCa6LevID4ga291dHN1dXJvXCA7CivmtojosrvogIUgPiBzaG91aGlzaGFcIDsKK+WPpOmBk+WFtyA+IGZ1cnVkb3VndVwgOwor5Z+65pys55qEID4ga2lob250ZWtpXCA7CivojYnlm6PlrZAgPiBrdXNhZGFuZ29cIDsKK+ecn+ePoOiJsiA+IHNoaW5qdWlyb1wgOwor57Wx5bil5qipID4gdG91c3Vpa2VuXCA7Civnt7Tnv5LmqZ8gPiByZW5zaHV1a2lcIDsKK+aYh+mZjeiItSA+IHNob3Vrb3VkYVwgOwor5YW15bqr55yMID4gaHlvdWdva2VuXCA7CivlhazmtbfkuIogPiBrb3VrYWlqb3VcIDsKK+a/gOaIpuWMuiA+IGdla2lzZW5rdVwgOwor5YSA56S855qEID4gZ2lyZWl0ZWtpXCA7CivmnInlubPns5YgPiBhcnVoZWl0b3VcIDsKK+S6pOmAmuiyuyA+IGtvdXRzdXVoaVwgOwor6YeR6a2a6I2JID4ga2luZ3lvc291XCA7CivnnYDngavngrkgPiBjaGFra2F0ZW5cIDsKK+mBuOaMmeaIpiA+IHNlbmt5b3NlblwgOwor5a6X5Li75qipID4gc291c2h1a2VuXCA7CivmsLTphbjmoLkgPiBzdWlzYW5rb25cIDsKK+i1pOWNgeWtlyA+IHNla2lqdXVqaVwgOwor6JOE6Z+z5qmfID4gY2hpa3VvbmtpXCA7Civoh6rlsIrlv4MgPiBqaXNvbnNoaW5cIDsKK+ihqOiomOazlSA+IGh5b3VraWhvdVwgOwor6Zyy5aSp5ZWGID4gcm90ZW5zaG91XCA7CivkvJHlu7fml6UgPiBreXV1dGVpYmlcIDsKK+mjsumFkueZliA+IGluc2h1aGVraVwgOwor5LiA5paJ6auYID4gaXNzZWlkYWthXCA7Civlh6bliJHlj7AgPiBzaG9rZWlkYWlcIDsKK+WGt+aIv+i7iiA+IHJlaWJvdXNoYVwgOwor5qSc55ar5omAID4ga2VuJydla2lqb1wgOwor54Wn5bqm6KiIID4gc2hvdWRva2VpXCA7Civlj47nqI7lkI8gPiBzaHV1emVpcmlcIDsKK+WWieiHquaFoiA+IG5vZG9qaW1hblwgOwor6YeR55yL5p2/ID4ga2lua2FuYmFuXCA7CivmlaPlvL7pioMgPiBzYW5kYW5qdXVcIDsKK+Wfuemkiua2siA+IGJhaXlvdWVraVwgOwor5aSp54uX6aKoID4gdGVuZ3VrYXplXCA7CivkuIDmnKzmnYkgPiBpcHBvbnN1Z2lcIDsKK+a4rOW+ruioiCA+IHNva3ViaWtlaVwgOwor6aKo6Ie05p6XID4gZnV1Y2hpcmluXCA7CivlnLDnkIblraYgPiBjaGlyaWdha3VcIDsKK+e+jumjn+WutiA+IGJpc2hva3VrYVwgOwor5bC/6YGT54KOID4gbnlvdWRvdWVuXCA7CivonrPonoLmi7MgPiB0b3Vyb3VrZW5cIDsKK+iqv+eQhuS6uiA+IGNob3VyaW5pblwgOwor5Zar54WZ5omAID4ga2l0c3VlbmpvXCA7CivmmYLliIbmmYIgPiBqaWJ1bmRva2lcIDsKK+WFq+mHjeahnCA+IHlhZXpha3VyYVwgOwor5Y2X6Juu6Ii5ID4gbmFuYmFuc2VuXCA7CivosYzosYbosYYgPiBlbmRvdW1hbWVcIDsKK+WbnuaVsOWIuCA+IGthaXN1dWtlblwgOwor6KO96YCg6ICFID4gc2Vpem91c2hhXCA7Civph43lvbnkvJogPiBqdXV5YWtrYWlcIDsKK+WMl+asp+S6uiA+IGhva3VvdWppblwgOwor5LiA5Lq65a2QID4gaGl0b3Jpa2tvXCA7CivmrbvnlJ/oprMgPiBzaGlzZWlrYW5cIDsKK+eCreeWveeXhSA+IHRhbnNvYnlvdVwgOwor55m95Zyw5ZuzID4gaGFrdWNoaXp1XCA7CivpvIjnlLLoibIgPiBiZWtrb3Vpcm9cIDsKK+S5l+i7iuWIuCA+IGpvdXNoYWtlblwgOwor5ris56iL5ZmoID4gc29rdXRlaWtpXCA7CivmoYjlhoXlrKIgPiBhbicnbmFpam91XCA7CivlhoboiJ7mm7IgPiBlbmJ1a3lva3VcIDsKK+a2iOiyu+eojiA+IHNob3VoaXplaVwgOwor5aOB5LiA6YeNID4ga2FiZWhpdG9lXCA7Civlm5vpnaLkvZMgPiBzaGltZW50YWlcIDsKK+WcqOadpee3miA+IHphaXJhaXNlblwgOwor5aSn55CG55+zID4gZGFpcmlzZWtpXCA7CivnlJ/nlKPlnLAgPiBzZWlzYW5jaGlcIDsKK+eJh+eUsOiIjiA+IGthdGFpbmFrYVwgOwor6KSH5YaZ5qmfID4gZnVrdXNoYWtpXCA7Civpoqjkv5fnlLsgPiBmdXV6b2t1Z2FcIDsKK+WBtOmdouWbsyA+IHNva3VtZW56dVwgOwor6KiA6Kqe5a2mID4gZ2VuZ29nYWt1XCA7Civlt6HoiKroiLkgPiBqdW5rb3VzZW5cIDsKK+WOn+Wni+aelyA+IGdlbnNoaXJpblwgOwor6Iez5LiK5qipID4gc2hpam91a2VuXCA7CivlsI/lo7LllYYgPiBrb3VyaXNob3VcIDsKK+e1seWItuWTgSA+IHRvdXNlaWhpblwgOwor56ys5LiA5a+pID4gZGFpaXNzaGluXCA7CivntIXmr5vkurogPiBrb3Vtb3VqaW5cIDsKK+ishOWGmeeJiCA+IHRvdXNoYWJhblwgOwor5o6n6Ki05a+pID4ga291c29zaGluXCA7CivkuK3lj6Tou4ogPiBjaHV1a29zaGFcIDsKK+aWsOe0gOWFgyA+IHNoaW5raWdlblwgOwor57e057+S5omAID4gcmVuc2h1dWpvXCA7Civnq4vmlrnmoLkgPiByaXBwb3Vrb25cIDsKK+efremfs+majiA+IHRhbicnb25rYWlcIDsKK+Wuo+iqk+abuCA+IHNlbnNlaXNob1wgOwor5LqM5ouN5a2QID4gbmlieW91c2hpXCA7CivlirTovrLlhZogPiByb3Vub3V0b3VcIDsKK+W9vOWyuOiKsSA+IGhpZ2FuYmFuYVwgOwor5b+g6a2C56KRID4gY2h1dWtvbmhpXCA7CivmnInlirnmgKcgPiB5dXVrb3VzZWlcIDsKK+S4ieaXpeaciCA+IG1pa2FkenVraVwgOwor55m65oyv5qmfID4gaGFzc2hpbmtpXCA7Civnt4/li5nluoEgPiBzb3VtdWNob3VcIDsKK+a1geihjOiqniA+IHJ5dXVrb3Vnb1wgOwor5YaF6a6u5Lq6ID4gbmFpc2VuamluXCA7CivnlJ/nkIbnmoQgPiBzZWlyaXRla2lcIDsKK+WQjeiqieaFviA+IG1laXlveW9rdVwgOwor5Yqq5Yqb5a62ID4gZG9yeW9rdWthXCA7CivlnKjmnaXnqK4gPiB6YWlyYWlzaHVcIDsKK+WKoOehq+azlSA+IGthcnl1dWhvdVwgOwor5aSn5a625pePID4gZGFpa2F6b2t1XCA7Civmma/mlZnlvpIgPiBrZWlreW91dG9cIDsKK+mrmOepjembsiA+IGtvdXNla2l1blwgOwor5LmX6Ii55Yi4ID4gam91c2Vua2VuXCA7Civlho3lr6nmn7sgPiBzYWlzaGluc2FcIDsKK+eUqOiqnumbhiA+IHlvdWdvc2h1dVwgOwor6LKg5YK36ICFID4gZnVzaG91c2hhXCA7CivlirTlg43ms5UgPiByb3Vkb3Vob3VcIDsKK+axjueUqOapnyA+IGhhbicneW91a2lcIDsKK+WQjeiqieW/gyA+IG1laXlvc2hpblwgOwor6ZGR5a6a5Lq6ID4ga2FudGVpbmluXCA7CivmipXnpajml6UgPiB0b3VoeW91YmlcIDsKK+WFiOihjOipniA+IHNlbmtvdXNoaVwgOwor54us5ryU5LyaID4gZG9rdWVua2FpXCA7Civpn7Ppn7vlraYgPiBvbicnaW5nYWt1XCA7Civlip/lirTogIUgPiBrb3Vyb3VzaGFcIDsKK+iEs+e0sOiDniA+IG5vdXNhaWJvdVwgOwor576O5paH6Kq/ID4gYmlidW5jaG91XCA7CivmmI7ntLDmm7ggPiBtZWlzYWlzaG9cIDsKK+eUt+aWh+WtlyA+IG90b2tvbW9qaVwgOwor57eP5YuY5a6aID4gc291a2Fuam91XCA7Civlm57opqfmnb8gPiBrYWlyYW5iYW5cIDsKK+S7u+WRveeKtiA+IG5pbm1laWpvdVwgOwor5LiK57SN6YeRID4gam91bm91a2luXCA7Civmi7fllY/lj7AgPiBnb3Vtb25kYWlcIDsKK+S4iuWlj+aWhyA+IGpvdXNvdWJ1blwgOwor6Ieq6LKs54K5ID4gamlzZWtpdGVuXCA7Civliqnnm6PnnaMgPiBqb2thbnRva3VcIDsKK+WHpueUn+iokyA+IHNob3NlaWt1blwgOwor5pys6Kmm6aiTID4gaG9uc2hpa2VuXCA7CivlpJbkv6Hpg6ggPiBnYWlzaGluYnVcIDsKK+S4gOS6uuWJjSA+IGhpdG9yaW1hZVwgOwor5Yq05YON5qipID4gcm91ZG91a2VuXCA7CivlnLDnkIPlhIAgPiBjaGlreXV1Z2lcIDsKK+WcsOS4iuaoqSA+IGNoaWpvdWtlblwgOwor6YeR5bGP6aKoID4ga2luYnlvdWJ1XCA7CivlsI7pm7vkvZMgPiBkb3VkZW50YWlcIDsKK+WFseebiuiyuyA+IGt5b3Vla2loaVwgOwor5LiN6KqN5om/ID4gZnVuaW5zaG91XCA7Civppqzpub/pnaIgPiBiYWthZHp1cmFcIDsKK+Wcn+eUqOazoiA+IGRveW91bmFtaVwgOwor57eP6YG45oyZID4gc291c2Vua3lvXCA7CivliLblvqHnm6QgPiBzZWlneW9iYW5cIDsKK+W/g+aEj+awlyA+IGtva29yb2lraVwgOwor6YeN5Yq05YONID4ganV1cm91ZG91XCA7CivmiYvmprTlvL4gPiB0ZXJ5dXVkYW5cIDsKK+S4gOaemuS4iiA+IGljaGltYWl1ZVwgOwor5aSp5LqV54GvID4gdGVuam91dG91XCA7CivppIrprZrloLQgPiB5b3VneW9qb3VcIDsKK+aKleelqOaJgCA+IHRvdWh5b3Vqb1wgOwor5bqn5qiZ57O7ID4gemFoeW91a2VpXCA7CivlhoblgJ/mrL4gPiBlbnNoYWtrYW5cIDsKK+e1tuWvvuirliA+IHpldHRhaXJvblwgOwor5o2V6Jmr57ayID4gaG9jaHV1YW1pXCA7Civlh7rmnaXmmJ8gPiBkZWtpYm9zaGlcIDsKK+iKseafs+eVjCA+IGthcnl1dWthaVwgOwor5YWs5rCR5qipID4ga291bWlua2VuXCA7CivlpoLkvZXoqLEgPiBpa2FiYWthcmlcIDsKK+a4heaVmeW+kiA+IHNlaWt5b3V0b1wgOwor57Sr5aSW57eaID4gc2hpZ2Fpc2VuXCA7CivlkIzlpb3kvJogPiBkb3Vrb3VrYWlcIDsKK+a0l+i7iuWgtCA+IHNlbnNoYWpvdVwgOwor5bGV5pyb6LuKID4gdGVuYm91c2hhXCA7Civmmpflj7fluLMgPiBhbmdvdWNob3VcIDsKK+W5jOmmrOi7iiA+IGhvcm9iYXNoYVwgOwor5aSn5LyB5qWtID4gZGFpa2lneW91XCA7Civlo7LnrJHlqaYgPiBiYWlzaG91ZnVcIDsKK+aOoeeCueiAhSA+IHNhaXRlbnNoYVwgOwor6ZaT6ZqZ5q+UID4ga2FuZ2VraWhpXCA7Civlo67ooYzkvJogPiBzb3Vrb3VrYWlcIDsKK+WGjeeUn+WTgSA+IHNhaXNlaWhpblwgOwor5YWs56S+5YK1ID4ga291c2hhc2FpXCA7CivmnKrmnaXlraYgPiBtaXJhaWdha3VcIDsKK+acq+Wni+e1giA+IHN1ZXNoaWp1dVwgOwor5r2c5rC06ImmID4gc2Vuc3Vpa2FuXCA7CivmsLTpgZPnrqEgPiBzdWlkb3VrYW5cIDsKK+WkqeeQhuaVmSA+IHRlbnJpa3lvdVwgOwor5LqI5oOz6auYID4geW9zb3VkYWthXCA7CivmiYvmn4TpoZQgPiB0ZWdhcmFnYW9cIDsKK+aJi+iKuOWTgSA+IHNodWdlaWhpblwgOwor5bmz6KGh6YyYID4gaGVpa291c3VpXCA7Civmipfmr5LntKAgPiBrb3Vkb2t1c29cIDsKK+Wkp+ixhueylSA+IGRhaXp1a2FzdVwgOwor56CU56m26LK7ID4ga2Vua3l1dWhpXCA7Civnn6Xog73niq8gPiBjaGlub3VoYW5cIDsKK+mBuOaJi+aoqSA+IHNlbnNodWtlblwgOwor6bqd6aaZ6bm/ID4gamFrb3VqaWthXCA7Civmtbflsrjnt5ogPiBrYWlnYW5zZW5cIDsKK+iyv+aYk+a4ryA+IGJvdWVraWtvdVwgOwor5pqm5bm05bqmID4gcmVraW5lbmRvXCA7CivlpKnlrq7lm7MgPiB0ZW5reXV1enVcIDsKK+acieaoqeiAhSA+IHl1dWtlbnNoYVwgOwor5L2T6KOB5LiKID4gdGVpc2Fpam91XCA7CivkvIrpgZTnlLcgPiBkYXRlb3Rva29cIDsKK+S8keWIiuaXpSA+IGt5dXVrYW5iaVwgOwor5Y+k5YW45a2mID4ga290ZW5nYWt1XCA7CivmlLnoqILniYggPiBrYWl0ZWliYW5cIDsKK+eUn+WtmOaoqSA+IHNlaXpvbmtlblwgOwor6Kmy5ZWP6aGMID4gZ2FpbW9uZGFpXCA7Civmmpflj7flraYgPiBhbmdvdWdha3VcIDsKK+S7o+ihjOiAhSA+IGRhaWtvdXNoYVwgOwor5YWr5Y2D5q2zID4geWFjaGl0b3NlXCA7Civlj6PnnJ/kvLwgPiBrdWNoaW1hbmVcIDsKK+WHuueJiOmDqCA+IHNodXBwYW5idVwgOwor6Kaz5ris5omAID4ga2Fuc29rdWpvXCA7CivntYzmuIjnlYwgPiBrZWl6YWlrYWlcIDsKK+S4jeeGseW/gyA+IGZ1bmVzc2hpblwgOwor5YWs5rOV5Lq6ID4ga291aG91amluXCA7CivkvJHnnKDmnJ8gPiBreXV1bWlua2lcIDsKK+WJr+e3j+eQhiA+IGZ1a3Vzb3VyaVwgOwor5Ly05aWP6ICFID4gYmFuc291c2hhXCA7Civlr77oq4fogIUgPiB0YWlkYW5zaGFcIDsKK+iyv+aYk+azlSA+IGJvdWVraWhvdVwgOwor5ZyS6YGK5LyaID4gZW4nJ3l1dWthaVwgOwor6LOb5oiQ6ICFID4gc2Fuc2Vpc2hhXCA7Civoirjog73kurogPiBnZWlub3VqaW5cIDsKK+WIhuitsuWcsCA+IGJ1bmpvdWNoaVwgOwor5bGI5YWJ5oCnID4ga3Vra291c2VpXCA7CivnnJ/nj6Dmub4gPiBzaGluanV3YW5cIDsKK+S6pOmAmuemjSA+IGtvdXRzdXVrYVwgOwor5oud54Gr5pWZID4gaGFpa2FreW91XCA7CivnrofmnaHmm7ggPiBrYWpvdWdha2lcIDsKK+mBuOaMmeS6uiA+IHNlbmt5b25pblwgOwor6YWq6L6y5a62ID4gcmFrdW5vdWthXCA7Civlt6Xoirjlk4EgPiBrb3VnZWloaW5cIDsKK+acquadpeWeiyA+IG1pcmFpZ2F0YVwgOwor5byB6bCT6aGeID4gYmVuc2FpcnVpXCA7CivnhKHos4fmoLwgPiBtdXNoaWtha3VcIDsKK+S7u+WRveaoqSA+IG5pbm1laWtlblwgOwor6Jmr5Z6C54KOID4gY2h1dXN1aWVuXCA7CivnoLTokL3miLggPiBnb3JvdHN1a2lcIDsKK+iThOmfs+WZqCA+IGNoaWt1b25raVwgOwor57ep5LiL6JasID4ga2FuZ2V5YWt1XCA7CivmnInmqZ/nmoQgPiB5dXVraXRla2lcIDsKK+ato+WPjeWvviA+IHNlaWhhbnRhaVwgOwor6Z2S5rW35Y6fID4gYW91bmFiYXJhXCA7Civlh7npnaLpj6EgPiBvdW1lbmt5b3VcIDsKK+WgsemBk+mZoyA+IGhvdWRvdWppblwgOwor5Yqj5Yui5oSfID4gcmVzc2Vpa2FuXCA7CivlvqHmlpnlnLAgPiBnb3J5b3VjaGlcIDsKK+ioiOeul+iAhSA+IGtlaXNhbnNoYVwgOwor54Sh6aeE5Y+jID4gbXVkYWd1Y2hpXCA7CivmnY7mib/mmakgPiByaXNob3ViYW5cIDsKK+emj+mfs+abuCA+IGZ1a3VpbnNob1wgOwor5YWr5Y2m5o6MID4gaGFra2VzaG91XCA7Civoh6rkuLvnmoQgPiBqaXNodXRla2lcIDsKK+mAsuatqeWFmiA+IHNoaW5wb3RvdVwgOwor55u45Y+N5oCnID4gc291aGFuc2VpXCA7Civog73li5XmhYsgPiBub3Vkb3V0YWlcIDsKK+WPuOS7pOWumCA+IHNoaXJlaWthblwgOwor5Zyw6ZyH6KiIID4gamlzaGlua2VpXCA7CivntJnkuIDph40gPiBrYW1paGl0b2VcIDsKK+awtOWKoOa4myA+IG1penVrYWdlblwgOwor5Ye654mI6LK7ID4gc2h1cHBhbmhpXCA7CivmnpzloLHogIUgPiBrYWhvdW1vbm9cIDsKK+aIkOmVt+acnyA+IHNlaWNob3VraVwgOwor5rWE5Zyf5pWZID4gam91ZG9reW91XCA7CivlpKnkupXmnb8gPiB0ZW5qb3VpdGFcIDsKK+mbhuWhteapnyA+IHNodXVqaW5raVwgOwor5YeM5rOi5oCnID4gcnlvdWhhc2VpXCA7Civlv6vnlLflrZAgPiBrYWlkYW5zaGlcIDsKK+WkqeeLl+iMuCA+IHRlbmd1dGFrZVwgOwor54uZ5pKD5YW1ID4gc29nZWtpaGVpXCA7CivlpJbovKrlsbEgPiBnYWlyaW56YW5cIDsKK+aYh+mZjeapnyA+IHNob3Vrb3VraVwgOwor5pS+54Gr54uCID4gaG91a2FreW91XCA7CivpoqjppqzniZsgPiBmdXViYWd5dXVcIDsKK+mZtuWZqOWVhiA+IHRvdWtpc2hvdVwgOwor5LiJ5aGB57eaID4gc2FucnVpc2VuXCA7CivpgZPnvqnlv4MgPiBkb3VnaXNoaW5cIDsKK+i2heaZguepuiA+IGNob3VqaWt1dVwgOwor5b6u57KS5a2QID4gYmlyeXV1c2hpXCA7CivmsLTlubPnt5ogPiBzdWloZWlzZW5cIDsKK+WGjeWwi+WVjyA+IHNhaWppbm1vblwgOwor5riF5o6D6LuKID4gc2Vpc291c2hhXCA7CivmnIDliY3nt5ogPiBzYWl6ZW5zZW5cIDsKK+e1tuWvvuiAhSA+IHpldHRhaXNoYVwgOwor5q2j56K65bqmID4gc2Vpa2FrdWRvXCA7CivmsLfliYrmqZ8gPiBoeW91c2Fra2lcIDsKK+WIhuino+iDvSA+IGJ1bmthaW5vdVwgOwor5Zub6KeS5b2iID4gc2hpa2Fra2VpXCA7CivlrqPoqIDmm7ggPiBzZW5nZW5zaG9cIDsKK+WPuOS7pOWhlCA+IHNoaXJlaXRvdVwgOwor56uL5aSq5a2QID4gcml0dGFpc2hpXCA7CivmnInouYTpoZ4gPiB5dXV0ZWlydWlcIDsKK+S9v+eUqOiAhSA+IHNoaXlvdXNoYVwgOwor5aSp5LiK55WMID4gdGVuam91a2FpXCA7CivpnZLmtbfkuoAgPiBhb3VtaWdhbWVcIDsKK+adpemBiuiAhSA+IHJhaXl1dXNoYVwgOwor5beo5Lq66LuNID4ga3lvamluZ3VuXCA7Civlrabpg6jnlJ8gPiBnYWt1YnVzZWlcIDsKK+W3peWtpumDqCA+IGtvdWdha3VidVwgOwor5pWZ56eR5pu4ID4ga3lvdWthc2hvXCA7CivntYzmuIjms5UgPiBrZWl6YWlob3VcIDsKK+egtOWCt+miqCA+IGhhc2hvdWZ1dVwgOwor5oyB5Y+C5Lq6ID4gamlzYW4nJ25pblwgOwor57eP552j5bqcID4gc291dG9rdWZ1XCA7Civml6XmnKzpq6ogPiBuaWhvbmdhbWlcIDsKK+WItuW+oeajkiA+IHNlaWd5b2JvdVwgOwor5qSc5qGI5pu4ID4ga2VuJydhbnNob1wgOwor5q2p6YGT5qmLID4gaG9kb3VreW91XCA7CivlnLDmlrnntJkgPiBjaGlob3VzaGlcIDsKK+aXpeWCreWPliA+IGhpeW91dG9yaVwgOwor5Zyw542E5aSJID4gamlnb2t1aGVuXCA7CivlkIjlpY/lm6MgPiBnYXNzb3VkYW5cIDsKK+eZuuaMr+WZqCA+IGhhc3NoaW5raVwgOwor5aSp5LqV5omHID4gdGVuam91c2VuXCA7Civlhajlj43lsIQgPiB6ZW5oYW5zaGFcIDsKK+WkiemAn+apnyA+IGhlbnNva3VraVwgOwor54Sh55CG5byPID4gbXVyaXNoaWtpXCA7Civou73lirTlg40gPiBrZWlyb3Vkb3VcIDsKK+ato+WPjeWQiCA+IHNlaWhhbmdvdVwgOwor57WM5riI5qyEID4ga2VpemFpcmFuXCA7CivnlJ/lrZflvJUgPiBpa2lqaWJpa2lcIDsKK+aKleelqOWMuiA+IHRvdWh5b3VrdVwgOwor5pyo5puc5pelID4gbW9rdXlvdWJpXCA7Civlh7rmnKjlubQgPiBkZWtpZG9zaGlcIDsKK+eik+awt+WzoCA+IHVzdWl0b3VnZVwgOwor5Yqg5YWl6YeRID4ga2FueXV1a2luXCA7CivmsJHplpPkurogPiBtaW5rYW5qaW5cIDsKK+WFrOWLn+agqiA+IGtvdWJva2FidVwgOwor5LmX6aas5pyNID4gam91YmFmdWt1XCA7Civml6XmnKzpoJggPiBuaWhvbnJ5b3VcIDsKK+iRl+abuOWQjSA+IGNob3Nob21laVwgOwor57WM5Za25a2mID4ga2VpZWlnYWt1XCA7Civnmb3piZvpibEgPiBoYWt1ZW5rb3VcIDsKK+eyl+ebruezliA+IHphcmFtZXRvdVwgOwor5YaF546E6ZaiID4gbmFpZ2Vua2FuXCA7CivlnLDmlrnnqI4gPiBjaGlob3V6ZWlcIDsKK+W3oeafu+mVtyA+IGp1bnNhY2hvdVwgOwor5Y2w5Yi35qmfID4gaW5zYXRzdWtpXCA7Civlh43mrbvogIUgPiB0b3VzaGlzaGFcIDsKK+eZvemKheiyqCA+IGhha3Vkb3VrYVwgOwor5aSp55CD5ZuzID4gdGVua3l1dXp1XCA7CivlhavljYPlubQgPiB5YWNoaXRvc2VcIDsKK+WOn+Wni+S6uiA+IGdlbnNoaWppblwgOwor5Yqg5bel6LODID4ga2Frb3VjaGluXCA7Civnq7novKrpuqkgPiBjaGlrdXdhZnVcIDsKK+S4gOaWueeahCA+IGlwcG91dGVraVwgOwor5Ye65LuV5LqLID4gZGVzaGlnb3RvXCA7CivmraPlv7XloLQgPiBzaG91bmVuYmFcIDsKK+aflOmBk+WgtCA+IGp1dWRvdWpvdVwgOwor6ISK6auE54KOID4gc2VraXp1aWVuXCA7Civkuozph43ph5wgPiBuaWp1dWdhbWFcIDsKK+eri+aWueS9kyA+IHJpcHBvdXRhaVwgOwor6YGg6ZqU5oCnID4gZW5rYWt1c2VpXCA7Civou73mrYzliocgPiBrZWlrYWdla2lcIDsKK+WItuWLleeBryA+IHNlaWRvdXRvdVwgOwor5YKs55yg5YmkID4gc2FpbWluemFpXCA7Civku4rkuIDluqYgPiBpbWFpY2hpZG9cIDsKK+aUu+mYsuaIpiA+IGtvdWJvdXNlblwgOwor5rWE5Zyf5a6XID4gam91ZG9zaHV1XCA7Civmk43nuKbmob8gPiBzb3VqdXVrYW5cIDsKK+aWh+aYjumkqCA+IGJ1bm1laWthblwgOwor5bCO6Zai5pWwID4gZG91a2Fuc3V1XCA7Civmu57lnKjlnLAgPiB0YWl6YWljaGlcIDsKK+S4iue0jeexsyA+IGpvdW5vdW1haVwgOwor5a6H5a6Z5pyNID4gdWNodXVmdWt1XCA7CivliKnlj6PogIUgPiByaWtvdW1vbm9cIDsKK+aWueazleirliA+IGhvdWhvdXJvblwgOwor6JOL54S25oCnID4gZ2FpemVuc2VpXCA7CivljYroo73lk4EgPiBoYW5zZWloaW5cIDsKK+S4gOWgtOmdoiA+IGljaGliYW1lblwgOwor55+z54mI55S7ID4gc2VraWJhbmdhXCA7CivnmbvpjLLnsL8gPiB0b3Vyb2t1Ym9cIDsKK+S4gOaYqOaZqSA+IGlzc2FrdWJhblwgOwor5aSa5qW15YyWID4gdGFreW9rdWthXCA7CivlpKfkuIDnlaogPiBvb2ljaGliYW5cIDsKK+ihm+aYn+WbvSA+IGVpc2Vpa29rdVwgOwor5LiL57Sa55SfID4ga2FreXV1c2VpXCA7CivmqJnmupbmmYIgPiBoeW91anVuamlcIDsKK+mrmOm9ouiAhSA+IGtvdXJlaXNoYVwgOwor5LiA5LiB5YmNID4gaXRjaG91bWFlXCA7CivmqKrmgYvmhZUgPiB5b2tvcmVuYm9cIDsKK+iyoeeUo+eojiA+IHphaXNhbnplaVwgOwor5LqM6YeN6LqrID4gbmlqdXVzaGluXCA7CivnlJ/nkIblraYgPiBzZWlyaWdha3VcIDsKK+eGseWZqOWFtyA+IG5ldHN1a2lndVwgOwor5a+S5Ya357SXID4ga2FucmVpc2hhXCA7CivmsLTpgZPmoJMgPiBzdWlkb3VzZW5cIDsKK+aOoue0ouacqCA+IHRhbnNha3VnaVwgOwor56CU56m256eRID4ga2Vua3l1dWthXCA7Civlrp/mlr3kvosgPiBqaXNzaGlyZWlcIDsKK+mVt+mfs+majiA+IGNob3VvbmthaVwgOwor5LiN6KmV5YikID4gZnVoeW91YmFuXCA7CivpgbjmiYvlm6MgPiBzZW5zaHVkYW5cIDsKK+WKn+WIqeeahCA+IGtvdXJpdGVraVwgOwor5aSp55CD5YSAID4gdGVua3l1dWdpXCA7CivnnJ/nj6DlsaQgPiBzaGluanVzb3VcIDsKK+W5s+Wdh+eCuSA+IGhlaWtpbnRlblwgOwor6YCj5ZCI5LyaID4gcmVuZ291a2FpXCA7Civlt6Xmpa3ljJYgPiBrb3VneW91a2FcIDsKK+i1pOmBk+WEgCA+IHNla2lkb3VnaVwgOwor5paH5a2m5bqnID4gYnVuZ2FrdXphXCA7CivlirTlg43lhZogPiByb3Vkb3V0b3VcIDsKK+e1jOa4iOaIpiA+IGtlaXphaXNlblwgOwor57Gz56m66LuNID4gYmVpa3V1Z3VuXCA7CivmlbflsYXnva4gPiBzaGlraWljaGlcIDsKK+mFjeW9k+mHkSA+IGhhaXRvdWtpblwgOwor6aOb6JqK55eHID4gaGlidW5zaG91XCA7CivotaTnl6Loj4wgPiBzZWtpcmlraW5cIDsKK+S6lOWNgeiCqSA+IGdvanV1a2F0YVwgOwor6auY562J5a6YID4ga291dG91a2FuXCA7CivlnLDmlrnniYggPiBjaGlob3ViYW5cIDsKK+eJh+iEs+ayuSA+IGhlbicnbm91eXVcIDsKK+WlieihjOaJgCA+IGJ1Z3lvdXNob1wgOwor6IKv5a6a5paHID4ga291dGVpYnVuXCA7CivoirPpppnliaQgPiBob3Vrb3V6YWlcIDsKK+eBq+eBvea1gSA+IGthc2Fpcnl1dVwgOwor5Y2w5Yi35omAID4gaW5zYXRzdWpvXCA7CivlpKfogZbloIIgPiBkYWlzZWlkb3VcIDsKK+e1jOa4iOaApyA+IGtlaXphaXNlaVwgOwor6JuH57SL55+zID4gamFtb25zZWtpXCA7CivmtYHooYzmrYwgPiByeXV1a291a2FcIDsKK+S4ieinkua0siA+IHNhbmtha3VzdVwgOwor5LiJ5paH5YikID4gc2FubW9uYmFuXCA7CivkuInop5Lms6IgPiBzYW5rYWt1aGFcIDsKK+Wun+mam+aApyA+IGppc3NhaXNlaVwgOwor56u555+i5p2lID4gdGFrZXlhcmFpXCA7CivlubPooYznt5ogPiBoZWlrb3VzZW5cIDsKK+iRseWdiuS4uyA+IG5lZ2lib3V6dVwgOwor5a2r5byf5a2QID4gbWFnb2Rlc2hpXCA7CivlrrnnqY3mr5QgPiB5b3VzZWtpaGlcIDsKK+WItumFuOWJpCA+IHNlaXNhbnphaVwgOwor5Y2g5Y+W5qipID4gc2Vuc2h1a2VuXCA7CivkuLvnnLzngrkgPiBzaHVnYW50ZW5cIDsKK+mBoOmalOWcsCA+IGVua2FrdWNoaVwgOwor5LiJ6KeS5q+UID4gc2Fua2FrdWhpXCA7CivplbfmmYLplpMgPiBjaG91amlrYW5cIDsKK+WNiuerr+iAhSA+IGhhbnBhbW9ub1wgOwor54us56aB5rOVID4gZG9ra2luaG91XCA7CivluoPlkYrosrsgPiBrb3Vrb2t1aGlcIDsKK+acgOWEqumBhyA+IHNhaXl1dWd1dVwgOwor5Y+w6aKo55y8ID4gdGFpZnV1Z2FuXCA7CivmnKrmlZnogrIgPiBtaWt5b3Vpa3VcIDsKK+ijgeaWreW4qyA+IHNhaWRhbnNoaVwgOwor5YWo5Y2Y5bCEID4gemVudGFuc2hhXCA7CivlirnmnpznmoQgPiBrb3VrYXRla2lcIDsKK+epuuaJi+W9oiA+IGt1dXRlZ2F0YVwgOwor5Y2w5Yi75birID4gaW5rb2t1c2hpXCA7CivpnZLlubTovKkgPiBzZWluZW5oYWlcIDsKK+WJsueDueW6lyA+IGthcHBvdXRlblwgOwor6LK/5piT5ZOBID4gYm91ZWtpaGluXCA7CivliYrlsqnmqZ8gPiBzYWt1Z2Fua2lcIDsKK+WujOS6huW+jCA+IGthbnJ5b3Vnb1wgOwor5aSn5LiK5q61ID4gZGFpam91ZGFuXCA7CivlnJLoirjlraYgPiBlbmdlaWdha3VcIDsKK+aMh+ebuOaSsiA+IHl1Yml6dW1vdVwgOwor6IKp55Sy5bivID4ga2Vua291dGFpXCA7CivmraPlvZPmgKcgPiBzZWl0b3VzZWlcIDsKK+egguezluawtCA+IHNhdG91bWl6dVwgOwor5pa56YyQ5b2iID4gaG91c3Vpa2VpXCA7Civnm7jlvZPmlbAgPiBzb3V0b3VzdXVcIDsKK+mGuOmAoOmFkiA+IGpvdXpvdXNodVwgOwor5bem5Lit6ZaTID4gc2FjaHV1a2FuXCA7CivkvJ3ku6TogIUgPiBkZW5yZWlzaGFcIDsKK+acqOe2v+mHnSA+IG1vbWVuYmFyaVwgOwor5pyo54mI55S7ID4gbW9rdWhhbmdhXCA7CivmpJzmn7vlvbkgPiBrZW5zYXlha3VcIDsKK+W/mOW5tOS8miA+IGJvdW5lbmthaVwgOwor5a6H5a6Z5a2mID4gdWNodXVnYWt1XCA7CivnnJ/nkIblgKQgPiBzaGlucmljaGlcIDsKK+mFjeawtOeuoSA+IGhhaXN1aWthblwgOwor5aSq6Zm96aKoID4gdGFpeW91ZnV1XCA7Civkvb/nlKjms5UgPiBzaGl5b3Vob3VcIDsKK+WNsOWIt+WxiyA+IGluc2F0c3V5YVwgOwor6Z+z5aOw5a2mID4gb25zZWlnYWt1XCA7CivkvIrpgZTlpbMgPiBkYXRlb24nJ25hXCA7Civlia/oqZ7lj6UgPiBmdWt1c2hpa3VcIDsKK+Wun+aVsOS9kyA+IGppc3N1dXRhaVwgOwor6KOP6ZW35bGLID4gdXJhbmFnYXlhXCA7CivmnbHlt6XlpKcgPiB0b3Vrb3VkYWlcIDsKK+iKseaZguioiCA+IGhhbmFkb2tlaVwgOwor6KO96YCg5ZOBID4gc2Vpem91aGluXCA7CivoqIjnrpfmm7ggPiBrZWlzYW5zaG9cIDsKK+WItuWLleaJiyA+IHNlaWRvdXNodVwgOwor5LiN6KaP5b6LID4gZnVraXJpdHN1XCA7Civlj6PohZTnmYwgPiBrb3Vrb3VnYW5cIDsKK+WbnuetlOiAhSA+IGthaXRvdXNoYVwgOwor5Y2Y5b6T6ZmjID4gdGFuanV1amluXCA7Civlj43oi7Hpm4QgPiBoYW4nJ2VpeXV1XCA7CivkuLvmqKnogIUgPiBzaHVrZW5zaGFcIDsKK+Wkp+acrOWxsSA+IGRhaWhvbnphblwgOwor5Lit5ZKM5YmkID4gY2h1dXdhemFpXCA7CivmhYjlloTnrrEgPiBqaXplbmJha29cIDsKK+acgOW3pue/vCA+IHNhaXNheW9rdVwgOwor5LiJ6KeS5peXID4gc2Fua2FrdWtpXCA7CivliqDlhaXogIUgPiBrYW55dXVzaGFcIDsKK+ijvuaooeanmCA+IHN1c29tb3lvdVwgOwor5LiA6Zq755y8ID4gaXNzZWtpZ2FuXCA7Civkvb/nlKjmqKkgPiBzaGl5b3VrZW5cIDsKK+i/keS9k+ipqSA+IGtpbnRhaXNoaVwgOwor5aSp54u85pifID4gdGVucm91c2VpXCA7Civlho3niq/ogIUgPiBzYWloYW5zaGFcIDsKK+WTqOaIkuapnyA+IHNob3VrYWlraVwgOwor6YCa6YGO6aeFID4gdHN1dWthZWtpXCA7CivlpKfkurrlhbEgPiBvdG9uYWRvbW9cIDsKK+eCuuaUvumhjCA+IHNoaWhvdWRhaVwgOwor6Ium5b+D6KuHID4ga3VzaGluZGFuXCA7Civmk43nuKblo6sgPiBzb3VqdXVzaGlcIDsKK+ecn+ePoOWFiSA+IHNoaW5qdWtvdVwgOwor6YCf5bqm6KiIID4gc29rdWRva2VpXCA7CivnhKHosqzku7sgPiBtdXNla2luaW5cIDsKK+aSreS9hue3miA+IGJhbnRhbnNlblwgOwor6IGW6KqV56WtID4gc2VpdGFuc2FpXCA7CivnhKHkuIDmlocgPiBtdWljaGltb25cIDsKK+W4uOWIhuaVsCA+IGpvdWJ1bnN1dVwgOwor5YaN6ICD5oWuID4gc2Fpa291cnlvXCA7CivlhIDlhbjplbcgPiBnaXRlbmNob3VcIDsKK+W3peWtpuenkSA+IGtvdWdha3VrYVwgOwor5Lqk5q2T5LyaID4ga291a2Fua2FpXCA7CivlpKnosaHlhIAgPiB0ZW5zaG91Z2lcIDsKK+W8leeUqOaWhyA+IGluJyd5b3VidW5cIDsKK+iNkuazleW4qyA+IGFyYWhvdXNoaVwgOwor55mC6aSK6LK7ID4gcnlvdXlvdWhpXCA7CivmqZ/plqLplbcgPiBraWthbmNob3VcIDsKK+WQkeWcsOaApyA+IGtvdWNoaXNlaVwgOwor5Yex5peL6ZaAID4gZ2Fpc2VubW9uXCA7CivoqK3lgpnosrsgPiBzZXRzdWJpaGlcIDsKK+ijgee4q+W4qyA+IHNhaWhvdXNoaVwgOwor6LKh55Sj5qipID4gemFpc2Fua2VuXCA7CivlkIzooYzogIUgPiBkb3Vrb3VzaGFcIDsKK+aKleefs+apnyA+IHRvdXNla2lraVwgOwor5oSb5qCh5b+DID4gYWlrb3VzaGluXCA7CivkvI/prZTmrr8gPiBmdWt1bWFkZW5cIDsKK+iMtuWZqOe1hCA+IGNoYWtpZ3VtaVwgOwor5LiJ5aGB5omLID4gc2FucnVpc2h1XCA7CivomZrnhKHnmoQgPiBreW9tdXRla2lcIDsKK+S8neWwjuaApyA+IGRlbmRvdXNlaVwgOwor5paH5a2X5YiXID4gbW9qaXJldHN1XCA7Civlj43oirvpoZ4gPiBoYW5zdXVydWlcIDsKK+WumuWei+ipqSA+IHRlaWtlaXNoaVwgOwor5rC06I+T5a2QID4gbWl6dWdhc2hpXCA7Civkvb/nlKjmlrkgPiBzaGl5b3Vob3VcIDsKK+m7jeWbo+WtkCA+IGtpYmlkYW5nb1wgOwor6Luf5Y+j6JOLID4gbmFua291Z2FpXCA7Civpl4fnm7jloLQgPiB5YW1pc291YmFcIDsKK+Wuh+WumeWNmiA+IHVjaHV1aGFrdVwgOwor5pyA5YmN5oimID4gc2FpemVuc2VuXCA7CivoiqXlrZDoj5wgPiBrYXJhc2hpbmFcIDsKK+ePjemBk+WFtyA+IGNoaW5kb3VndVwgOwor6buE6KGo57SZID4ga2lieW91c2hpXCA7CivlvpPlp4nlprkgPiBqdXVzaGltYWlcIDsKK+WtkOemj+iAhSA+IGtvYnVrdXNoYVwgOwor5oCd5oOz55WMID4gc2hpc291a2FpXCA7CivmsJHooYbljJYgPiBtaW5zaHV1a2FcIDsKK+mIjem7hOiJsiA+IG5pYnVraWlyb1wgOwor5LiJ6KeS5b2iID4gc2Fua2Fra2VpXCA7CivlpKfmnKzllrYgPiBkYWlob24nJ2VpXCA7CivnjJvnibnoqJMgPiBtb3V0b2trdW5cIDsKK+S6iOWRiue3qCA+IHlva29rdWhlblwgOwor5Ya35rm/5biDID4gcmVpc2hpcHB1XCA7CivmqJnmupbljJYgPiBoeW91anVua2FcIDsKK+WNl+ibruS6uiA+IG5hbmJhbmppblwgOwor55Sw5ZyS6KmpID4gZGVuJydlbnNoaVwgOwor5LiJ6KeS5bqnID4gc2Fua2FrdXphXCA7Civlho3oqabpqJMgPiBzYWlzaGlrZW5cIDsKK+WvkuW4r+aelyA+IGthbnRhaXJpblwgOwor5YK+5pac6Z2iID4ga2Vpc2hhbWVuXCA7CivmrbvkuqHogIUgPiBzaGlib3VzaGFcIDsKK+S4ieinkuW4hiA+IHNhbmtha3Vob1wgOwor5Y2K56uv54mpID4gaGFucGFtb25vXCA7CivlqZrlp7vms5UgPiBrb24nJ2luaG91XCA7CivkuInop5Llt54gPiBzYW5rYWt1c3VcIDsKK+S6jOmHjeeqkyA+IG5panV1bWFkb1wgOwor6Ieq54S26aGeID4gc2hpemVucnVpXCA7CivlsILlo7Llk4EgPiBzZW5iYWloaW5cIDsKK+S4jee1seS4gCA+IGZ1dG91aXRzdVwgOwor5aSc5Lya5pyNID4geWFrYWlmdWt1XCA7CivkuojlkYrnr4cgPiB5b2tva3VoZW5cIDsKK+WFmua0vuW/gyA+IHRvdWhhc2hpblwgOwor5oCd5oOz54qvID4gc2hpc291aGFuXCA7CivlvIHlvZPku6MgPiBiZW50b3VkYWlcIDsKK+iCneiHk+eZjCA+IGthbnpvdWdhblwgOwor57WM5riI5Lq6ID4ga2VpemFpamluXCA7Civku4/mlZnlvpIgPiBidWtreW91dG9cIDsKK+exs+a1t+i7jSA+IGJlaWthaWd1blwgOwor5ZCr5rK55bGkID4gZ2FuJyd5dXNvdVwgOwor5oOF5aCx6KqMID4gam91aG91c2hpXCA7Civlh7Hml4vou40gPiBnYWlzZW5ndW5cIDsKK+iQveS8jeiAhSA+IHJha3Vnb3NoYVwgOwor6J6N6Kej54K5ID4geXV1a2FpdGVuXCA7Civmt4vlt7TnkIMgPiByaW5wYWt5dXVcIDsKK+WrjOeFmeaoqSA+IGtlbicnZW5rZW5cIDsKK+Wkq+WppuS7siA+IGZ1dWZ1bmFrYVwgOwor5oSf5p+T5Y6fID4ga2Fuc2VuZ2VuXCA7Civov47os5PppKggPiBnZWloaW5rYW5cIDsKK+ipleitsOS8miA+IGh5b3VnaWthaVwgOwor5aW955S35a2QID4ga291ZGFuc2hpXCA7Civml6nmmKXos6YgPiBzb3VzaHVuZnVcIDsKK+WWiemgreeZjCA+IGtvdXRvdWdhblwgOwor5a+d5qWt5birID4gbmV3YXphc2hpXCA7CivkurrmoLzljJYgPiBqaW5rYWt1a2FcIDsKK+e2uum6l+S6iyA+IGtpcmVpZ290b1wgOwor6KiY5ZCN5qCqID4ga2ltZWlrYWJ1XCA7CivmkLrluK/lk4EgPiBrZWl0YWloaW5cIDsKK+mnkOWxr+aJgCA+IGNodXV0b25qb1wgOwor56CU56m25omAID4ga2Vua3l1dWpvXCA7CivmnIDlhYjnq68gPiBzYWlzZW50YW5cIDsKK+WxheS9j+iAhSA+IGt5b2p1dXNoYVwgOwor6KqH5by15rOVID4ga29jaG91aG91XCA7CivoppbopprljJYgPiBzaGlrYWt1a2FcIDsKK+S4reiPr+ihlyA+IGNodXVrYWdhaVwgOwor6YCj5Yik54q2ID4gcmVuYmFuam91XCA7Civpup3pppnnjKsgPiBqYWtvdW5la29cIDsKK+WkieWFieaYnyA+IGhlbmtvdXNlaVwgOwor5a+p5p+75a6YID4gc2hpbnNha2FuXCA7CivlpJrnlKjkuK0gPiB0YXlvdWNodXVcIDsKK+aXqeadseaIpiA+IHNvdXRvdXNlblwgOwor6buZ56eY5qipID4gbW9rdWhpa2VuXCA7CivlhpLpmbroq4cgPiBib3VrZW5kYW5cIDsKK+W4uOWCmeiWrCA+IGpvdWJpeWFrdVwgOwor5aaK5amm5pyNID4gbmlucHVmdWt1XCA7CivkvZPph43oqIggPiB0YWlqdXVrZWlcIDsKK+itpuWumOmaiiA+IGtlaWthbnRhaVwgOwor6Kyb6KuH56S+ID4ga291ZGFuc2hhXCA7Civov5Hku6PoqakgPiBraW5kYWlzaGlcIDsKK+eFmeiNiemKrSA+IHRhYmFrb3NlblwgOwor6ZaT5oqV6KmeID4ga2FudG91c2hpXCA7CivnrZTlvIHogIUgPiB0b3ViZW5zaGFcIDsKK+W5s+ihjOajkiA+IGhlaWtvdWJvdVwgOwor6J+75Zyw542EID4gYXJpamlnb2t1XCA7CivmiYHmoYPohbogPiBoZW50b3VzZW5cIDsKK+WFrOWIpOW7tyA+IGtvdWhhbnRlaVwgOwor5pWw5YSE5bm0ID4gc3V1b2t1bmVuXCA7Civnm4bnga/nsaAgPiBib25kb3Vyb3VcIDsKK+e1guaIpuW+jCA+IHNodXVzZW5nb1wgOwor57eo6ZuG6YOoID4gaGVuc2h1dWJ1XCA7Civlkajlm7LplbcgPiBzaHV1aWNob3VcIDsKK+WFrOmBuOWItiA+IGtvdXNlbnNlaVwgOwor5L+u55CG5belID4gc2h1dXJpa291XCA7CivmnIDpganljJYgPiBzYWl0ZWtpa2FcIDsKK+WMluWtpuiAhSA+IGthZ2FrdXNoYVwgOwor6LSI6LOE572qID4gem91d2FpemFpXCA7CivkuI3mib/oqo0gPiBmdXNob3VuaW5cIDsKK+S6lOmHjeWUsSA+IGdvanV1c2hvdVwgOwor5bm06b2i6aCGID4gbmVucmVpanVuXCA7Civos63ljZrloLQgPiB0b2Jha3Vqb3VcIDsKK+eci+WuiOiAhSA+IGthbnNodXNoYVwgOwor5byx6Zu75ZmoID4gamFrdWRlbmtpXCA7Civml6XmnKznmoQgPiBuaWhvbnRla2lcIDsKK+mWi+WivuWcsCA+IGthaWtvbmNoaVwgOwor56aB54yf5pyfID4ga2lucnlvdWtpXCA7CivliY3poY3pg6ggPiB6ZW5nYWt1YnVcIDsKK+ipleirluWutiA+IGh5b3Vyb25rYVwgOwor5LiA5paJ5a6JID4gaXNzZWl5YXN1XCA7CivkuIDopqrnrYkgPiBpc3NoaW50b3VcIDsKK+WGjeaUvumAgSA+IHNhaWhvdXNvdVwgOwor6IiI6KGM5YyWID4ga291Z3lvdWthXCA7CivljJblrabnt5ogPiBrYWdha3VzZW5cIDsKK+aIpuatu+iAhSA+IHNlbnNoaXNoYVwgOwor5LiA5paH5a2XID4gaWNoaW1vbmppXCA7Civmloflo6vpgKMgPiBidW5zaGlyZW5cIDsKK+acqOe2v+ezuCA+IG1vbWVuJydpdG9cIDsKK+eEpumbu+awlyA+IHNob3VkZW5raVwgOwor5o6I5LiO5byPID4ganV5b3NoaWtpXCA7Civnm67liIbph48gPiBtZWJ1bnJ5b3VcIDsKK+WkqeS4i+S4gCA+IHRlbmthaWNoaVwgOwor5Lit5Y+k5ZOBID4gY2h1dWtvaGluXCA7CivluILloLTmgKcgPiBzaGlqb3VzZWlcIDsKK+S4reaAp+WhqSA+IGNodXVzZWllblwgOwor5paH6Kqe6Kq/ID4gYnVuZ29jaG91XCA7CivmlaPlhbXnt5ogPiBzYW5wZWlzZW5cIDsKK+a1geihjOWFkCA+IHJ5dXVrb3VqaVwgOwor5Y+I5b6T5byfID4gbWF0YWl0b2tvXCA7CivohbnmmYLoqIggPiBoYXJhZG9rZWlcIDsKK+W4g+iii+iFuSA+IGhvdGVpYmFyYVwgOwor54Sh5pWZ6IKyID4gbXVreW91aWt1XCA7CivnoJTnqbblrrYgPiBrZW5reXV1a2FcIDsKK+aVmeWMuuawkSA+IGt5b3VrdW1pblwgOwor5Zyw6ZyH5bivID4gamlzaGludGFpXCA7CivplbfmnJ/miKYgPiBjaG91a2lzZW5cIDsKK+mAmuefpeewvyA+IHRzdXVjaGlib1wgOwor5Yqg5bel5qWtID4ga2Frb3VneW91XCA7CivkuI3ooYznirYgPiBmdWd5b3Vqb3VcIDsKK+iDoem6u+ayuSA+IGdvbWFhYnVyYVwgOwor5pel5pys54y/ID4gbmlob256YXJ1XCA7Civml6fkuJbnlYwgPiBreXV1c2VrYWlcIDsKK+awtOW5s+WLlSA+IHN1aWhlaWRvdVwgOwor55+t5aSn55SfID4gdGFuZGFpc2VpXCA7Civogpblg4/nlLsgPiBzaG91em91Z2FcIDsKK+S4gOinkueNoyA+IGlra2FrdWp1dVwgOwor5Y+v5aSJ6ZW3ID4ga2FoZW5jaG91XCA7CivkuIDopoHntKAgPiBpY2hpeW91c29cIDsKK+WFkOerpeWKhyA+IGppZG91Z2VraVwgOwor5Z+L6JGs5ZywID4gbWFpc291Y2hpXCA7CivkuIroo73mnKwgPiBqb3VzZWlib25cIDsKK+S4oeaAp+iKsSA+IHJ5b3VzZWlrYVwgOwor5a6f6KGM6ICFID4gamlra291c2hhXCA7Civlgr7mlpzoqIggPiBrZWlzaGFrZWlcIDsKK+eKr+e9quiAhSA+IGhhbnphaXNoYVwgOwor57W25Lqk54q2ID4gemVra291am91XCA7CivlpJbmnaXogIUgPiBnYWlyYWlzaGFcIDsKK+S8neWwjuS9kyA+IGRlbmRvdXRhaVwgOwor5pac5ruR6ZmNID4gc2hha2Fra291XCA7CivluLjlubPlgIkgPiBqb3VoZWlzb3VcIDsKK+S4u+WCrOiAhSA+IHNodXNhaXNoYVwgOwor5p+U6Luf5oCnID4ganV1bmFuc2VpXCA7CivliIbmi4Xph5EgPiBidW50YW5raW5cIDsKK+WGt+iUtei7iiA+IHJlaXpvdXNoYVwgOwor5pyA6auY6KOBID4gc2Fpa291c2FpXCA7CivliqDlhaXmqKkgPiBrYW55dXVrZW5cIDsKK+WJjeS9j+aJgCA+IHplbmp1dXNob1wgOwor5bGV5pyb5aGUID4gdGVuYm91dG91XCA7CivpgY7mlY/nl4cgPiBrYWJpbnNob3VcIDsKK+S6uumgreeojiA+IG5pbnRvdXplaVwgOwor6Iie5Y+w5YqHID4gYnV0YWlnZWtpXCA7CivlubPlnYflgKQgPiBoZWlraW5jaGlcIDsKK+agvOWtkOmdoiA+IGtvdXNoaW1lblwgOwor5rC06Iy25bGLID4gbWl6dWNoYXlhXCA7Civmg4XloLHntrIgPiBqb3Vob3Vtb3VcIDsKK+W3tOaXpuadjyA+IGhhdGFua3lvdVwgOwor5a+p576O55y8ID4gc2hpbmJpZ2FuXCA7Civlh6bkuJboqJMgPiBzaG9zZWlrdW5cIDsKK+iHqueEtuimsyA+IHNoaXplbmthblwgOwor6ISC6IKq6YW4ID4gc2hpYm91c2FuXCA7CivploDlpJbmvKIgPiBtb25nYWlrYW5cIDsKK+aKl+iPjOaApyA+IGtvdWtpbnNlaVwgOwor5Lyd5p+T5oCnID4gZGVuc2Vuc2VpXCA7CivmnKrntYTnuZQgPiBtaXNvc2hpa2lcIDsKK+awtOanmOa2siA+IHN1aXlvdWVraVwgOwor5pWR5Yqp6ZqKID4ga3l1dWpvdGFpXCA7Civkv53lrZjph48gPiBob3pvbnJ5b3VcIDsKK+aguOWFteWZqCA+IGtha3VoZWlraVwgOwor5LiN5rqA6LazID4gZnVtYW56b2t1XCA7Civplbfoq4forbAgPiBuYWdhZGFuZ2lcIDsKK+WGkumZuuiAhSA+IGJvdWtlbnNoYVwgOwor57696JKy5ZujID4gaGFuZWJ1dG9uXCA7CivlnLDmlrnlgrUgPiBjaGlob3VzYWlcIDsKK+acrOWgtOeJqSA+IGhvbmJhbW9ub1wgOwor6Kqe5a2m6ICFID4gZ29nYWt1c2hhXCA7Civlho3oqabooYwgPiBzYWlzaGlrb3VcIDsKK+WxheS4iOmrmCA+IGl0YWtlZGFrYVwgOwor5aSq6Zm957O7ID4gdGFpeW91a2VpXCA7CivnoJTnqbblk6EgPiBrZW5reXV1aW5cIDsKK+W8pee4q+etliA+IGJpaG91c2FrdVwgOwor54Sh5aCx6YWsID4gbXVob3VzaHV1XCA7CivomIbmup3mqYsgPiByb2tvdWt5b3VcIDsKK+e1tuWvvuWApCA+IHpldHRhaWNoaVwgOwor5aSp6aCC5YSAID4gdGVuY2hvdWdpXCA7Civmtbfos4rnjosgPiBrYWl6b2t1b3VcIDsKK+iyoeeVjOS6uiA+IHphaWthaWppblwgOwor6aKo5p2l5Z2KID4gZnV1cmFpYm91XCA7Civlr5LlhrflnLAgPiBrYW5yZWljaGlcIDsKK+WJjee9ruipniA+IHplbmNoaXNoaVwgOwor5Yqg5Yik5Lq6ID4ga2FoYW4nJ25pblwgOwor5YuV5ruR6LuKID4gZG91a2Fzc2hhXCA7CivntZDmsLfmnJ8gPiBrZXBweW91a2lcIDsKK+Wxleacm+WPsCA+IHRlbmJvdWRhaVwgOwor56S85oud5aCCID4gcmVpaGFpZG91XCA7Civpq5jmgKfog70gPiBrb3VzZWlub3VcIDsKK+S5vua1t+iLlCA+IGhvc2hpbm9yaVwgOwor5L2/55So5L6LID4gc2hpeW91cmVpXCA7CivmnInnlLDnhLwgPiBhcml0YXlha2lcIDsKK+mrmOWRqOazoiA+IGtvdXNodXVoYVwgOwor5bC/5qSc5p+7ID4gbnlvdWtlbnNhXCA7CivnkrDnirbnt5ogPiBrYW5qb3VzZW5cIDsKK+eZuuaDs+azlSA+IGhhc3NvdWhvdVwgOwor5YWN56iO54K5ID4gbWVuemVpdGVuXCA7CivlgKTmrrXooaggPiBuZWRhbmh5b3VcIDsKK+ebtOW8n+WtkCA+IGppa2lkZXNoaVwgOwor6YCj6YKm5Yi2ID4gcmVucG91c2VpXCA7Civkvb/nlKjkurogPiBzaGl5b3VuaW5cIDsKK+akjeacqOmJoiA+IHVla2liYWNoaVwgOwor54Wn5bCE6YeOID4gc2hvdXNoYXlhXCA7CivmhYjlloTlv4MgPiBqaXplbnNoaW5cIDsKK+acqOeFieeTpiA+IG1va3VyZW5nYVwgOwor5pyo57a/54mpID4gbW9tZW5tb25vXCA7Civlha3liIblhIAgPiByb2t1YnVuZ2lcIDsKK+imluWcsOW5syA+IHNoaWNoaWhlaVwgOwor5bel5L2c5ZOhID4ga291c2FrdWluXCA7Civlm57mvJXlupcgPiBrYWlzb3V0ZW5cIDsKK+efs+eCree0gCA+IHNla2l0YW5raVwgOwor5oqV5qmf55qEID4gdG91a2l0ZWtpXCA7CivnjJ/niqzluqcgPiByeW91a2VuemFcIDsKK+earuiyoeW4gyA+IGthd2F6YWlmdVwgOwor6ISz6KGA5qCTID4gbm91a2Vzc2VuXCA7CivmraPliYfljJYgPiBzZWlzb2t1a2FcIDsKK+Wkp+WlpeanmCA+IG9vb2t1c2FtYVwgOwor5qyg6Zml6LuKID4ga2Vra2Fuc2hhXCA7CivkuIDlpKfkuosgPiBpY2hpZGFpamlcIDsKK+mAo+WIhuaVsCA+IHJlbmJ1bnN1dVwgOwor5L+u55CG5LujID4gc2h1dXJpZGFpXCA7CivolYHpurvnlrkgPiBqaW5tYXNoaW5cIDsKK+WFt+eUs+abuCA+IGd1c2hpbnNob1wgOwor6Kqt5pu45a62ID4gZG9rdXNob2thXCA7Civnvo7ooZPpg6ggPiBiaWp1dHN1YnVcIDsKK+aEn+isneelrSA+IGthbnNoYXNhaVwgOwor6LK05pa55pa5ID4gYW5hdGFnYXRhXCA7CivmnbHkuqzpg70gPiB0b3VreW91dG9cIDsKK+aXp+Wtl+S9kyA+IGt5dXVqaXRhaVwgOwor54Sh6Kq/5rOVID4gYnVjaG91aG91XCA7Civoo73kvZzosrsgPiBzZWlzYWt1aGlcIDsKK+S6jOmAsemWkyA+IG5pc2h1dWthblwgOwor6YOo6JC95rCRID4gYnVyYWt1bWluXCA7CivliqDnm5/lm70gPiBrYW1laWtva3VcIDsKK+S4gOWknOS4rSA+IGhpdG95YWp1dVwgOwor5qeL6YCg5L2TID4ga291em91dGFpXCA7CivkuK3ljLvlraYgPiBjaHV1aWdha3VcIDsKK+WPl+S/oeiAhSA+IGp1c2hpbnNoYVwgOwor5Lya6K2w6YyyID4ga2FpZ2lyb2t1XCA7CivnpoHnhZnou4ogPiBraW4nJ2Vuc2hhXCA7Civpm7vlrZDpioMgPiBkZW5zaGlqdXVcIDsKK+WFt+S9k+etliA+IGd1dGFpc2FrdVwgOwor6LuK5o6M5Yy6ID4gc2hhc2hvdWt1XCA7Civku5blm73msJEgPiB0YWtva3VtaW5cIDsKK+WEkuWtpuiAhSA+IGp1Z2FrdXNoYVwgOwor5ZCN5o6i5YG1ID4gbWVpdGFudGVpXCA7Civlm73pgKPml5cgPiBrb2t1cmVua2lcIDsKK+WPiOW+k+WFhCA+IG1hdGFpdG9rb1wgOwor6a+j54OP6LOKID4gc3VydW1laWthXCA7CivlhajluILmsJEgPiB6ZW5zaGltaW5cIDsKK+WgsemBk+WumCA+IGhvdWRvdWthblwgOwor5pel5pys5pm0ID4gbmlob25iYXJlXCA7CivluIPlm6Pnmq4gPiBmdXRvbmdhd2FcIDsKK+S/rue5leiyuyA+IHNodXV6ZW5oaVwgOwor5bCC6ZaA5pu4ID4gc2VubW9uc2hvXCA7CivlhaznlKjou4ogPiBrb3V5b3VzaGFcIDsKK+iAkOaAp+iPjCA+IHRhaXNlaWtpblwgOwor5ZCM56iu6aGeID4gZG91c2h1cnVpXCA7Civpn7Pln5/lpJYgPiBvbicnaWtpZ2FpXCA7CivopqrlkozmgKcgPiBzaGlud2FzZWlcIDsKK+WJjemgreiRiSA+IHplbnRvdXlvdVwgOwor54+g5pqW57C+ID4gdGFtYW5vcmVuXCA7CivkuZ3mmJ/lrrYgPiBreXV1c2Vpa2FcIDsKK+mAmuawl+WtlCA+IHRzdXVraWtvdVwgOwor6Zqj5Lq65oSbID4gcmluamluJydhaVwgOwor5LiN5om/55+lID4gZnVzaG91Y2hpXCA7CivmrbvkuqHmlbAgPiBzaGlib3VzdXVcIDsKK+WxheS9j+aoqSA+IGt5b2p1dWtlblwgOwor6Ymk5ous5bynID4ga2FnaWtha2tvXCA7CivlgKbmgKDmhJ8gPiBrZW50YWlrYW5cIDsKK+WGt+iUteiIuSA+IHJlaXpvdXNlblwgOwor5ZCI5oiQ6YWSID4gZ291c2Vpc2h1XCA7CivlkbPlmYzmsYEgPiBtaXNvc2hpcnVcIDsKK+aMh+WwjuiAhSA+IHNoaWRvdXNoYVwgOwor5Y2K5Y+v6YCaID4gaGFua2F0c3V1XCA7CivnhKHorablkYogPiBtdWtlaWtva3VcIDsKK+Wkp+ilv+mDtyA+IGRhaXNhaWdvdVwgOwor552h55yg5YmkID4gc3VpbWluemFpXCA7Civml4vnm6Tlt6UgPiBzZW5iYW5rb3VcIDsKK+W4r+WIhuaVsCA+IHRhaWJ1bnN1dVwgOwor5b6M57aZ6ICFID4ga291a2Vpc2hhXCA7Civplbfoq4fnvqkgPiBuYWdhZGFuZ2lcIDsKK+WkqeaXpeWhqSA+IHRlbnBpc2hpb1wgOwor5aiB5Zyn55qEID4gaWF0c3V0ZWtpXCA7Civkuozph43lupUgPiBuaWp1dXpva29cIDsKK+WPiOW8n+WtkCA+IG1hdGFkZXNoaVwgOwor5pWR5ZG95YW3ID4ga3l1dW1laWd1XCA7CivnpoHnjJ/ljLogPiBraW5yeW91a3VcIDsKK+W8qee0muiJpiA+IGRva3l1dWthblwgOwor5oGS5LmF5YyWID4ga291a3l1dWthXCA7CivlhbfkvZPnmoQgPiBndXRhaXRla2lcIDsKK+iFueS4gOadryA+IGhhcmFpcHBhaVwgOwor5qC855CG6KuWID4ga2FrdXJpcm9uXCA7CivmhJ/orJ3nirYgPiBrYW5zaGFqb3VcIDsKK+ePvuihjOeKryA+IGdlbmtvdWhhblwgOwor5pel5LuY5Y2wID4gaGlkenVrZWluXCA7CivlpKrpmb3nga8gPiB0YWl5b3V0b3VcIDsKK+W4uOeUqOiAhSA+IGpvdXlvdXNoYVwgOwor5oOF5aCx5rqQID4gam91aG91Z2VuXCA7Civlhazkvb/ppKggPiBrb3VzaGlrYW5cIDsKK+W4hueri+iynSA+IGhvdGF0ZWdhaVwgOwor6Iul5q2m6ICFID4gd2FrYW11c2hhXCA7CivmuIXnrpfmm7ggPiBzZWlzYW5zaG9cIDsKK+acrOihl+mBkyA+IGhvbmthaWRvdVwgOwor6YO15L6/6LuKID4geXV1Ymluc2hhXCA7CivkuIDngrnmqZ8gPiBpY2hpdGVua2lcIDsKK+Wkj+miqOmCqiA+IG5hdHN1a2F6ZVwgOwor5Lit6YGT5rS+ID4gY2h1dWRvdWhhXCA7CivmmrTpoqjln58gPiBib3VmdXVpa2lcIDsKK+eZuuemgeacrCA+IGhha2tpbmJvblwgOwor5Zyn6Zu75rCXID4gYXRzdWRlbmtpXCA7Civlt6jkurrlhZogPiBreW9qaW50b3VcIDsKK+aZguS7o+eJqSA+IGppZGFpbW9ub1wgOwor5bGP6aKo5bKpID4gYnlvdWJ1aXdhXCA7Civlv6voqJjpjLIgPiBrYWlraXJva3VcIDsKK+aatOmiqOWcjyA+IGJvdWZ1dWtlblwgOwor6Kyb6KuH5birID4ga291ZGFuc2hpXCA7CivkuI3miJDnuL4gPiBmdXNlaXNla2lcIDsKK+Wkmumfs+evgCA+IHRhb25zZXRzdVwgOwor6YCj5biv5oSfID4gcmVudGFpa2FuXCA7Civpg6jliIbnmoQgPiBidWJ1bnRla2lcIDsKK+WwgumWgOW6lyA+IHNlbm1vbnRlblwgOwor5oWj55So6Z+zID4ga2FuJyd5b3VvblwgOwor5aSc5LuV5LqLID4geW9zaGlnb3RvXCA7CivmvJTnv5LmnpcgPiBlbnNodXVyaW5cIDsKK+afkOmrmOagoSA+IGJvdWtvdWtvdVwgOwor57a/6I+T5a2QID4gd2F0YWdhc2hpXCA7Civot6jnt5rmqYsgPiBrb3Nlbmt5b3VcIDsKK+eFmeiNieebhiA+IHRhYmFrb2JvblwgOwor5Y+X6aiT56WoID4ganVrZW5oeW91XCA7CivlhoXmlpzoppYgPiBuYWlzaGFzaGlcIDsKK+mbu+S/oeapnyA+IGRlbnNoaW5raVwgOwor5Zyn57iu5qmfID4gYXNzaHVrdWtpXCA7Civlrp/ooYzmqKkgPiBqaWtrb3VrZW5cIDsKK+enkeWtpuiAhSA+IGthZ2FrdXNoYVwgOwor54++6KGM5rOVID4gZ2Vua291aG91XCA7Civoh6rnhLbnlYwgPiBzaGl6ZW5rYWlcIDsKK+aHuOWegue3miA+IGtlbnN1aXNlblwgOwor5LiK5omL6ICFID4gam91enVtb25vXCA7Civml6XmnKzlraYgPiBuaWhvbmdha3VcIDsKK+aOkumanOWZqCA+IGhhaXNob3VraVwgOwor55yf5aSP5pelID4gbWFuYXRzdWJpXCA7CivmhJ/nhKHph48gPiBrYW5tdXJ5b3VcIDsKK+e1puS7mOmHkSA+IGt5dXVmdWtpblwgOwor5Luj5ZCN6KmeID4gZGFpbWVpc2hpXCA7CivmlZHliqnoiLkgPiBreXV1am9zZW5cIDsKK+eJveW8lei7iiA+IGtlbicnaW5zaGFcIDsKK+WxheS9j+aApyA+IGt5b2p1dXNlaVwgOwor5oqX5Yed5Zu6ID4ga291Z3lvdWtvXCA7CivnnIvorbfplbcgPiBrYW5nb2Nob3VcIDsKK+S9juaAp+iDvSA+IHRlaXNlaW5vdVwgOwor54Sh6KiI55S7ID4gbXVrZWlrYWt1XCA7CivlpJrpnaLop5IgPiB0YW1lbmtha3VcIDsKK+S9juWRqOazoiA+IHRlaXNodXVoYVwgOwor55CG5oOz6YO3ID4gcmlzb3VreW91XCA7CivooqvniIbogIUgPiBoaWJha3VzaGFcIDsKK+eyvuijveezliA+IHNlaXNlaXRvdVwgOwor5YyW5a2m5oimID4ga2FnYWt1c2VuXCA7CivmnInnlKjmgKcgPiB5dXV5b3VzZWlcIDsKK+Wor+alveihlyA+IGdvcmFrdWdhaVwgOwor5b6M5aSp5oCnID4ga291dGVuc2VpXCA7CivmoKHlj4vkvJogPiBrb3V5dXVrYWlcIDsKK+WNmOWIqeihqCA+IHRhbnJpaHlvdVwgOwor55mC6aSK5omAID4gcnlvdXlvdWpvXCA7Civkv53lrojnmoQgPiBob3NodXRla2lcIDsKK+eah+awkeWFmiA+IGtvdW1pbnRvdVwgOwor5LqM6YeN5ZSxID4gbmlqdXVzaG91XCA7CivlhY3nqI7lupcgPiBtZW56ZWl0ZW5cIDsKK+WNteiDjueUnyA+IHJhbnRhaXNlaVwgOwor57ea6aaZ5LujID4gc2Vua291ZGFpXCA7Civlr77op5LljJYgPiB0YWlrYWt1a2FcIDsKK+acgOmrmOeCuSA+IHNhaWtvdXRlblwgOwor5pyA5L2O6ZmQID4gc2FpdGVpZ2VuXCA7CivmrYzlkIjmiKYgPiB1dGFnYXNzZW5cIDsKK+W5s+WSjOizniA+IGhlaXdhc2hvdVwgOwor5pWw5L+C5pWwID4gc3V1a2Vpc3V1XCA7CivmnKjngq3nlLsgPiBtb2t1dGFuZ2FcIDsKK+WGjemZjeiHqCA+IHNhaWtvdXJpblwgOwor5YaN6Kq/5p+7ID4gc2FpY2hvdXNhXCA7Civpq5jph47mp5kgPiBrb3V5YW1ha2lcIDsKK+Wumua7kei7iiA+IHRlaWthc3NoYVwgOwor5Ly85oiR6JyCID4gamlnYWJhY2hpXCA7Civml4vlhYnmgKcgPiBzZW5rb3VzZWlcIDsKK+WQjeaKleaJiyA+IG1laXRvdXNodVwgOwor5o6h566X5oCnID4gc2Fpc2Fuc2VpXCA7CivkvIHmpa3ogIUgPiBraWd5b3VzaGFcIDsKK+mKgOegguWtkCA+IGdpbnN1bmFnb1wgOwor5Zu95YiG5a+6ID4ga29rdWJ1bmppXCA7CivppIrosZrloLQgPiB5b3V0b25qb3VcIDsKK+mdnuWvvuensCA+IGhpdGFpc2hvdVwgOwor5LiN6Yq56Yu8ID4gZnVzaHV1a291XCA7CivkuIDpmaLliLYgPiBpY2hpaW5zZWlcIDsKK+aJi+S7leS6iyA+IHRlc2hpZ290b1wgOwor6IOG5Zqi54KOID4gdGFuJydub3VlblwgOwor5by35omT6ICFID4ga3lvdWRhc2hhXCA7Civopo/nr4TnmoQgPiBraWhhbnRla2lcIDsKK+e+hee0l+e0mSA+IHJhc2hhZ2FtaVwgOwor6ISx6KGj5aC0ID4gZGF0c3Vpam91XCA7CivmlZHliqnntrIgPiBreXV1am9tb3VcIDsKK+W9k+mBuOiAhSA+IHRvdXNlbnNoYVwgOwor5aSq6Zmw5pqmID4gdGFpaW5yZWtpXCA7Civmj5rnvr3onbYgPiBhZ2VoYWNob3VcIDsKK+Wjq+WQm+WtkCA+IHNoaWt1bnNoaVwgOwor6IWw576955uuID4ga29zaGliYW1lXCA7CivniYfkuIDmlrkgPiBrYXRhaXBwb3VcIDsKK+mYv+eJh+eqnyA+IGFoZW5rdXRzdVwgOwor5ZC+5pyo6aaZID4gd2FyZW1va291XCA7CivlpKflnovou4ogPiBvb2dhdGFzaGFcIDsKK+Wkj+Wto+eGsSA+IGtha2luZXRzdVwgOwor5YaF6Zm46ZynID4gbmFpcmlrdW11XCA7CivmpI3lrZfmqZ8gPiBzaG9rdWppa2lcIDsKK+mBiuimp+iIuSA+IHl1dXJhbnNlblwgOwor5Lmz5oi/54KOID4gbnl1dWJvdWVuXCA7CivohLPmjKvlgrcgPiBub3V6YXNob3VcIDsKK+WtpueUn+iqsiA+IGdha3VzZWlrYVwgOwor6JeB5biD5ZujID4gd2FyYWJ1dG9uXCA7CivmipXmqZ/lv4MgPiB0b3VraXNoaW5cIDsKK+mDteS+v+iIuSA+IHl1dWJpbnNlblwgOwor6Z2S5bm05ZujID4gc2VpbmVuZGFuXCA7Civli6flkYrmoYggPiBrYW5rb2t1YW5cIDsKK+WkqeaWh+WPsCA+IHRlbm1vbmRhaVwgOwor6Ieq54S25rOVID4gc2hpemVuaG91XCA7Civnn7PngbDmtJ4gPiBzZWtrYWlkb3VcIDsKK+Wil+WIiuWPtyA+IHpvdWthbmdvdVwgOwor5YaF5aSn6IejID4gbmFpZGFpamluXCA7Civnj77lnKjlnLAgPiBnZW56YWljaGlcIDsKK+aIpui7iumaiiA+IHNlbnNoYXRhaVwgOwor5LqM6YeN5Li4ID4gbmlqdXVtYXJ1XCA7CivphZLpgKDloLQgPiBzaHV6b3Vqb3VcIDsKK+aEm+iqreiAhSA+IGFpZG9rdXNoYVwgOwor55+z54Gw5rC0ID4gc2Vra2Fpc3VpXCA7CivlpKflnLDpnIcgPiBkYWlqaXNoaW5cIDsKK+S4jeaLoeWkpyA+IGZ1a2FrdWRhaVwgOwor5Li75bCO6ICFID4gc2h1ZG91c2hhXCA7Civpq5jokpTntbUgPiB0YWthbWFraWVcIDsKK+iHqueEtuatuyA+IHNoaXplbnNoaVwgOwor5bGF5L2P5ZywID4ga3lvanV1Y2hpXCA7CivmsbrmrbvpmoogPiBrZXNzaGl0YWlcIDsKK+S4u+iEs+iAhSA+IHNodW5vdXNoYVwgOwor6Iie5qW96Z2iID4gYnVnYWt1bWVuXCA7CivprZrku4vpoZ4gPiBneW9rYWlydWlcIDsKK+acgOmrmOaknCA+IHNhaWtvdWtlblwgOwor54ax5rGa5p+TID4gbmV0c3Vvc2VuXCA7CivmgZLmmJ/lubQgPiBrb3VzZWluZW5cIDsKK+iHquWcqOmJpCA+IGppemFpa2FnaVwgOwor56u26LWw6aasID4ga3lvdXNvdWJhXCA7CivlvqHmiYvmtJcgPiBtaXRhcmFzaGlcIDsKK+Wil+W5heWZqCA+IHpvdWZ1a3VraVwgOwor5pel5pys5YG0ID4gbmlob25nYXdhXCA7CivkurrpoZ7lj7IgPiBqaW5ydWlzaGlcIDsKK+iLpuWKtOanmCA+IGt1cm91c2FtYVwgOwor56aA6KuL5pu4ID4gcmluc2Vpc2hvXCA7Civkv7Poq6fluKsgPiBoYWlrYWlzaGlcIDsKK+aFo+eUqOiqniA+IGthbicneW91Z29cIDsKK+Wls+WtpueUnyA+IGpvZ2FrdXNlaVwgOwor6Zu75a2Q566hID4gZGVuc2hpa2FuXCA7CivmorXlpKnnjosgPiBib250ZW4nJ291XCA7CivlkIjmiJDntJkgPiBnb3VzZWlzaGlcIDsKK+m7hOmKhemJsSA+IGtvdWRvdWtvdVwgOwor5Y+45pWZ5Yy6ID4gc2hpa3lvdWt1XCA7Civop6PmlaPmqKkgPiBrYWlzYW5rZW5cIDsKK+mBqem9ouacnyA+IHRla2lyZWlraVwgOwor5aiB5ZqH55qEID4gaWtha3V0ZWtpXCA7CivpioPpgKPlsIQgPiBqdXVyZW5zaGFcIDsKK+WFjeeojuWTgSA+IG1lbnplaWhpblwgOwor6auY5rC05rqWID4ga291c3VpanVuXCA7CivlpKrpmb3lubQgPiB0YWl5b3VuZW5cIDsKK+efs+e0sOW3pSA+IGlzaGl6YWlrdVwgOwor5a+d5bCP5L6/ID4gbmVzaG91YmVuXCA7CivlhrfolLXms5UgPiByZWl6b3Vob3VcIDsKK+mFjeWIhuazlSA+IGhhaWJ1bmhvdVwgOwor6IC9576O55qEID4gdGFuYml0ZWtpXCA7CivmvZzoiKroiYcgPiBzZW5rb3V0ZWlcIDsKK+WQjOeqk+eUnyA+IGRvdXNvdXNlaVwgOwor5pS+5rWq6ICFID4gaG91cm91c2hhXCA7CivnqK7mpoLlv7UgPiBzaHVnYWluZW5cIDsKK+aXqeaYjuaIpiA+IHNvdW1laXNlblwgOwor5b6u56mN5YiGID4gYmlzZWtpYnVuXCA7Civps6XnnrDlm7MgPiBjaG91a2FuenVcIDsKK+Wls+eOi+icgiA+IGpvb3ViYWNoaVwgOwor5aSW5Lqk5a6YID4gZ2Fpa291a2FuXCA7Civmra/ogonngo4gPiBzaGluaWt1ZW5cIDsKK+iHqueEtuaelyA+IHNoaXplbnJpblwgOwor5ryU57+S5aC0ID4gZW5zaHV1am91XCA7CivlsI/puqboibIgPiBrb211Z2lpcm9cIDsKK+mtmuiynemhniA+IGd5b2thaXJ1aVwgOwor5b6p5Y+k6Kq/ID4gZnVra29jaG91XCA7Civlj43nnIHkvJogPiBoYW5zZWlrYWlcIDsKK+eGseW4r+mtmiA+IG5ldHRhaWd5b1wgOwor5Y2Y6JGJ5qmfID4gdGFuJyd5b3VraVwgOwor5omA5pyJ6ICFID4gc2hveXV1c2hhXCA7Civosqnlo7LogIUgPiBoYW5iYWlzaGFcIDsKK+S4u+S6uumhlCA+IHNodWppbmdhb1wgOwor5ruR56i96ICFID4gb2Rva2Vtb25vXCA7CivmsLTpo6LppYkgPiBtaXp1a2lraW5cIDsKK+a1t+S4iuazlSA+IGthaWpvdWhvdVwgOwor54ax5Y+v5aGRID4gbmV0c3VrYXNvXCA7CivljJblrablk4EgPiBrYWdha3VoaW5cIDsKK+WtkOayouWxsSA+IGtvZGFrdXNhblwgOwor5L2Z5rC05ZCQID4geW9zdWloYWtpXCA7CivmmKjlubTluqYgPiBzYWt1bmVuZG9cIDsKK+iHqueEtuaVsCA+IHNoaXplbnN1dVwgOwor5YaN6KiC54mIID4gc2FpdGVpYmFuXCA7CivpnZLlubTkvJogPiBzZWluZW5rYWlcIDsKK+ePvuWcsOS6uiA+IGdlbmNoaWppblwgOwor5biC6KGX5oimID4gc2hpZ2Fpc2VuXCA7Civmh5DnlpHlv4MgPiBrYWlnaXNoaW5cIDsKK+acneaXpeW9sSA+IGFzYWhpa2FnZVwgOwor6KqY5bCO5by+ID4geXV1ZG91ZGFuXCA7Civosqnlo7LntrIgPiBoYW5iYWltb3VcIDsKK+WFq+eZvuS4hyA+IHlhb3lvcm96dVwgOwor6LKn5LmP5Lq6ID4gYmluYm91bmluXCA7Civlt6XkuovkuK0gPiBrb3VqaWNodXVcIDsKK+eqg+ebl+e9qiA+IHNldHRvdXphaVwgOwor5Y6f6KOB5YikID4gZ2Vuc2FpYmFuXCA7CivngrnngavolqwgPiB0ZW5rYXlha3VcIDsKK+a1t+S4iuaoqSA+IGthaWpvdWtlblwgOwor5YyW5a2m5YmkID4ga2FnYWt1emFpXCA7Civnsr7oo73ms5UgPiBzZWlzZWlob3VcIDsKK+aWueecvOe0mSA+IGhvdWdhbnNoaVwgOwor5Y+X6LOe6ICFID4ganVzaG91c2hhXCA7CivmjqjolqbogIUgPiBzdWlzZW5zaGFcIDsKK+mbquaooeanmCA+IHl1a2ltb3lvdVwgOwor5LiA57Sa5ZOBID4gaWtreXV1aGluXCA7CivmoLzlrZDngrkgPiBrb3VzaGl0ZW5cIDsKK+izvOiyt+iAhSA+IGtvdWJhaXNoYVwgOwor5LiA562J6LOeID4gaXR0b3VzaG91XCA7Civku5blm73kurogPiB0YWtva3VqaW5cIDsKK+epuuawl+a1tCA+IGt1dWtpeW9rdVwgOwor5aSW5Lqk5ZujID4gZ2Fpa291ZGFuXCA7Civln7fooYzpg6ggPiBzaGlra291YnVcIDsKK+eQhuelnuirliA+IHJpc2hpbnJvblwgOwor5Y+X6aiT5paZID4ganVrZW5yeW91XCA7Civli53miYvlhYMgPiBrYXR0ZW1vdG9cIDsKK+ebuOWvvuirliA+IHNvdXRhaXJvblwgOwor5YiK6KGM5LyaID4ga2Fua291a2FpXCA7CivljZHph5HlsZ4gPiBoaWtpbnpva3VcIDsKK+S/neiCsuaWmSA+IGhvaWt1cnlvdVwgOwor57eP6LOH55SjID4gc291c2hpc2FuXCA7CivkvY/msJHnqI4gPiBqdXVtaW56ZWlcIDsKK+Wcp+e4ruWZqCA+IGFzc2h1a3VraVwgOwor5L+457Wm5pelID4gaG91a3l1dWJpXCA7CivooYzmlL/lupwgPiBneW91c2VpZnVcIDsKK+WHpuWls+iGnCA+IHNob2pvbWFrdVwgOwor6ZqP5Ly06ICFID4genVpaGFuc2hhXCA7Civou4rmtbfogIEgPiBrdXJ1bWFlYmlcIDsKK+aCquWuo+S8nSA+IGFrdXNlbmRlblwgOwor5aSa6Z2i55qEID4gdGFtZW50ZWtpXCA7Civlr77miKbou4ogPiB0YWlzZW5zaGFcIDsKK+iLpuWKtOaApyA+IGt1cm91c2hvdVwgOwor5oGQ5aa75a62ID4ga3lvdXNhaWthXCA7CivkuLvlrrDogIUgPiBzaHVzYWlzaGFcIDsKK+WNium5ueawtCA+IGhhbmthbnN1aVwgOwor5a+G6Iiq6ICFID4gbWlra291c2hhXCA7CivkuIDnrYnopqogPiBpdHRvdXNoaW5cIDsKK+azqOmAo+e4hCA+IHNoaW1lbmF3YVwgOwor6KOc5by3562LID4gaG9reW91a2luXCA7CivnnIvmnb/lsYsgPiBrYW5iYW4nJ3lhXCA7CivnpL7lk6Hlr64gPiBzaGFpbnJ5b3VcIDsKK+WRvOWQuOazlSA+IGtva3l1dWhvdVwgOwor5L2T6YeP5ZmoID4gdGFpcnlvdWtpXCA7CivljJblrabkuIogPiBrYWdha3Vqb3VcIDsKK+S8veiXjemzpSA+IGdhcmFuY2hvdVwgOwor5b+D6IeT6YOoID4gc2hpbnpvdWJ1XCA7CivmnIDpq5jls7AgPiBzYWlrb3Vob3VcIDsKK+ertui8quWgtCA+IGtlaXJpbmpvdVwgOwor6YeN5ama6ICFID4ganV1a29uc2hhXCA7CivopoHmkoPmqZ8gPiB5b3VnZWtpa2lcIDsKK+awl+WMlueGsSA+IGtpa2FuZXRzdVwgOwor5pel5pWZ57WEID4gbmlra3lvdXNvXCA7CivkuInnrYnmmJ8gPiBzYW50b3VzZWlcIDsKK+WRveWQjeazlSA+IG1laW1laWhvdVwgOwor5Y+C5Yqg5Zu9ID4gc2Fua2Frb2t1XCA7CivmnKrplovmi5MgPiBtaWthaXRha3VcIDsKK+WGjee3qOaIkCA+IHNhaWhlbnNlaVwgOwor6YCP5rC05oCnID4gdG91c3Vpc2VpXCA7Civlj43lr77oq5YgPiBoYW50YWlyb25cIDsKK+WtpuiKuOWToSA+IGdha3VnZWlpblwgOwor5Ya35YeN6a2aID4gcmVpdG91Z3lvXCA7CivmlZfmrovlhbUgPiBoYWl6YW5oZWlcIDsKK+abuOeUn+irliA+IHNob3NlaXJvblwgOwor5b+X5pyb6ICFID4gc2hpYm91c2hhXCA7CivosqHmlL/pm6MgPiB6YWlzZWluYW5cIDsKK+WItueZjOWJpCA+IHNlaWdhbnphaVwgOwor55m65rOh5YmkID4gaGFwcG91emFpXCA7CivkvJ3lpYfnmoQgPiBkZW5raXRla2lcIDsKK+e1huWJteiGjyA+IGJhbnNvdWtvdVwgOwor5L+d5a2Y5paZID4gaG96b25yeW91XCA7Civnn7PngbDlsqkgPiBzZWtrYWlnYW5cIDsKK+WFteWtpuagoSA+IGhlaWdha2tvdVwgOwor5a+M5bGx55yMID4gdG95YW1ha2VuXCA7Civov5Hku6Plj7IgPiBraW5kYWlzaGlcIDsKK+ipsuW9k+iAhSA+IGdhaXRvdXNoYVwgOwor54K55pWw5Yi2ID4gdGVuc3V1c2VpXCA7Civpq5jnn6XnnIwgPiBrb3VjaGlrZW5cIDsKK+WPo+S4iuabuCA+IGtvdWpvdXNob1wgOwor6Kej5pS+5oSfID4ga2FpaG91a2FuXCA7CivlubPlkoznmoQgPiBoZWl3YXRla2lcIDsKK+iHqumWieeXhyA+IGppaGVpc2hvdVwgOwor6aOy55So5rC0ID4gaW4nJ3lvdXN1aVwgOwor5aSq6Zm95YWJID4gdGFpeW91a291XCA7CivmqYvpoK3kv50gPiBreW91dG91aG9cIDsKK+WPpOabuOW4giA+IGtvc2hvaWNoaVwgOwor5aSp54S25aGpID4gdGVuJyduZW5lblwgOwor5YWs5a6z572qID4ga291Z2FpemFpXCA7Civmt6vlo7Llrr8gPiBpbmJhaXlhZG9cIDsKK+i1t+iri+aWhyA+IGtpc2hvdW1vblwgOwor56KB55uk57ieID4gZ29iYW5qaW1hXCA7Civkv5fkuJbplpMgPiB6b2t1c2VrZW5cIDsKK+eUmOe0jeixhiA+IGFtYW5hdHRvdVwgOwor5Lm+6YWq57SgID4ga2FucmFrdXNvXCA7Civlhrbph5HlraYgPiB5YWtpbmdha3VcIDsKK+WGl+mVt+W6piA+IGpvdWNob3Vkb1wgOwor56eB5a626ZuGID4gc2hpa2FzaHV1XCA7CivluILooZflnLAgPiBzaGlnYWljaGlcIDsKK+WPr+iqreaApyA+IGthZG9rdXNlaVwgOwor5piO56S655qEID4gbWVpaml0ZWtpXCA7CivlpKflm57ou6IgPiBkYWlrYWl0ZW5cIDsKK+WRieacjeW6lyA+IGdvZnVrdXRlblwgOwor5Lit6I+v5Li8ID4gY2h1dWthZG9uXCA7CivlpKfopb/mtIsgPiB0YWlzZWl5b3VcIDsKK+eQhuaDs+eahCA+IHJpc291dGVraVwgOwor5aa75biv6ICFID4gc2FpdGFpc2hhXCA7Civlhavlrp3oj5wgPiBoYXBwb3VzYWlcIDsKK+WPjOi5hOeNuCA+IHNvdXRlaWp1dVwgOwor5Zu95YWo5ZyfID4ga29rdXplbmRvXCA7CivkuozpgLLms5UgPiBuaXNoaW5ob3VcIDsKK+e+veW4g+WboyA+IGhhbmVidXRvblwgOwor6Ieq54S25aKXID4gc2hpemVuem91XCA7CivmmYLku6PliocgPiBqaWRhaWdla2lcIDsKK+a3t+aIkOmFkiA+IGtvbnNlaXNodVwgOwor5YWs5YCN5pWwID4ga291YmFpc3V1XCA7Civlh6bmlrnnrosgPiBzaG9ob3VzZW5cIDsKK+eZjOe0sOiDniA+IGdhbnNhaWJvdVwgOwor57Sv5rib56iOID4gcnVpZ2VuemVpXCA7CivmiYDkvZzkuosgPiBzaG9zYWdvdG9cIDsKK+eEoemZkOWwjyA+IG11Z2Vuc2hvdVwgOwor56qD55uX54qvID4gc2V0dG91aGFuXCA7Civku5XmiYvmoKogPiBzaGl0ZWthYnVcIDsKK+WPo+S4i+aJiyA+IGt1Y2hpYmV0YVwgOwor6YeR5puc5pelID4ga2luJyd5b3ViaVwgOwor5L2O5rC05rqWID4gdGVpc3VpanVuXCA7Civoo73kvZzmiYAgPiBzZWlzYWt1am9cIDsKK+S8neWjsOeuoSA+IGRlbnNlaWthblwgOwor6Zmw5q2m6ICFID4ga2FnZW11c2hhXCA7Civph4/lrZDljJYgPiByeW91c2hpa2FcIDsKK+WlveS4gOWvviA+IGtvdWl0dHN1aVwgOwor5LqL5YuZ5bGAID4gamltdWt5b2t1XCA7Civlia/pvLvohZQgPiBmdWt1YmlrdXVcIDsKK+a1quiyu+eZliA+IHJvdWhpaGVraVwgOwor57Wm6LK755SfID4ga3l1dWhpc2VpXCA7CivnnIzkurrkvJogPiBrZW5qaW5rYWlcIDsKK+S4u+S7u+iAhSA+IHNodW5pbnNoYVwgOwor5YWs55So5paHID4ga291eW91YnVuXCA7CivooYzmlL/ljLogPiBneW91c2Vpa3VcIDsKK+aOqOiWpueKtiA+IHN1aXNlbmpvdVwgOwor5Lit6Led6ZuiID4gY2h1dWt5b3JpXCA7CivlhbHnlKPljJYgPiBreW91c2Fua2FcIDsKK+S8muacn+S4rSA+IGthaWtpY2h1dVwgOwor6YeO55CD5aC0ID4geWFreXV1am91XCA7CivplpHlj6Tps6UgPiBrYW5rb2RvcmlcIDsKK+eUo+ikpeacnyA+IHNhbmpva3VraVwgOwor5Li75bCO5qipID4gc2h1ZG91a2VuXCA7Civli5/ph5HnrrEgPiBib2tpbmJha29cIDsKK+ehrOWPo+iTiyA+IGtvdWtvdWdhaVwgOwor5Y+y6KiY5oqEID4gc2hpa2lzaG91XCA7CivlubTpvaLlsaQgPiBuZW5yZWlzb3VcIDsKK+mgremggumDqCA+IHRvdWNob3VidVwgOwor5pep5aC057GzID4gaGF5YWJhbWFpXCA7Civlj6Poqp7oqLMgPiBrb3Vnb3lha3VcIDsKK+ayueWcp+ioiCA+IHl1YXRzdWtlaVwgOwor5LqM5q+b5L2cID4gbmltb3VzYWt1XCA7CivmpJzns5boqIggPiBrZW50b3VrZWlcIDsKK+iqmOWwjuS9kyA+IHl1dWRvdXRhaVwgOwor55yf5Zub6KeSID4gbWFzaGlrYWt1XCA7CivnlLPlkb3oqJggPiBzaGlubWVpa2lcIDsKK+iEguiCquWxpCA+IHNoaWJvdXNvdVwgOwor54mp5ZOB56iOID4gYnVwcGluemVpXCA7Civps7Pnv4XpkJggPiBob3VzaGl0b3VcIDsKK+WxpOepjembsiA+IHNvdXNla2l1blwgOwor56eS5pmC6KiIID4gYnlvdWRva2VpXCA7Civnj4rnkZrnpIEgPiBzYW5nb3Nob3VcIDsKK+mAo+S9k+ipniA+IHJlbnRhaXNoaVwgOwor5bGB55CG5bGIID4gaGVyaWt1dHN1XCA7CivlkIzmg4XogIUgPiBkb3Vqb3VzaGFcIDsKK+W/l+mhmOiAhSA+IHNoaWdhbnNoYVwgOwor5rWq5Lq655SfID4gcm91bmluc2VpXCA7CivkuI3lj6/pgIYgPiBmdWthZ3lha3VcIDsKK+Wkp+mYquW4giA+IG9vc2FrYXNoaVwgOwor5oSb6Kqt5pu4ID4gYWlkb2t1c2hvXCA7Civlj6/loZHniakgPiBrYXNvYnV0c3VcIDsKK+aWsOmAoOiqniA+IHNoaW56b3Vnb1wgOwor5Y+N5a++6ICFID4gaGFudGFpc2hhXCA7Civpu5LnoILns5YgPiBrdXJvemF0b3VcIDsKK+eOhOexs+iMtiA+IGdlbm1haWNoYVwgOwor5ryU57m55rOVID4gZW4nJ2VraWhvdVwgOwor6Ieo5aC05oSfID4gcmluam91a2FuXCA7CivlgY/opb/poqggPiBoZW5zZWlmdXVcIDsKK+mmmeWRs+aWmSA+IGtvdW1pcnlvdVwgOwor5q2j55Sy5p2/ID4gc2Vpa2FucGFuXCA7Civlr6norbDkvJogPiBzaGluZ2lrYWlcIDsKK+mdkuajruecjCA+IGFvbW9yaWtlblwgOwor5LiN5oSf55eHID4gZnVrYW5zaG91XCA7CivnpoHooZvpmoogPiBraW4nJ2VpdGFpXCA7CivmlL7msLTou4ogPiBob3VzdWlzaGFcIDsKK+iAkOawtOaApyA+IHRhaXN1aXNlaVwgOwor546E6Zai55WqID4gZ2Vua2FuYmFuXCA7CivliY3lpJznpa0gPiB6ZW4nJ3lhc2FpXCA7CivmnIjmoYLlhqAgPiBnZWtrZWlrYW5cIDsKK+S6jOWIgOa1gSA+IG5pdG91cnl1dVwgOwor5omA5pyJ5qipID4gc2hveXV1a2VuXCA7Civlhrflh43ou4ogPiByZWl0b3VzaGFcIDsKK+adpeS8muiAhSA+IHJhaWthaXNoYVwgOwor5LiK562J5ZOBID4gam91dG91aGluXCA7CivojZLnmYLmsrsgPiBhcmFyeW91amlcIDsKK+alveims+irliA+IHJha2thbnJvblwgOwor5YC26IiO5a6XID4ga3VzaGFzaHV1XCA7CivnhKHoqIDliocgPiBtdWdvbmdla2lcIDsKK+WFpeiLkeWIuCA+IG55dXVlbmtlblwgOwor6IWx6Z6Y54KOID4ga2Vuc2hvdWVuXCA7Civpq5jlubTogIUgPiBrb3VuZW5zaGFcIDsKK+aOoua1t+eBryA+IHRhbmthaXRvdVwgOwor54Sh6KaP5b6LID4gbXVraXJpdHN1XCA7CivlvaLlrrnoqZ4gPiBrZWl5b3VzaGlcIDsKK+WyqembsumbgCA+IGl3YWhpYmFyaVwgOwor5b6S56u26LWwID4gdG9reW91c291XCA7CivkuI3miKbli50gPiBmdXNlbnNob3VcIDsKK+iHqueEtuS6uiA+IHNoaXplbmppblwgOwor5a625bqt55qEID4ga2F0ZWl0ZWtpXCA7Civpq5jmsJflnKcgPiBrb3VraWF0c3VcIDsKK+a7keeoveacrCA+IGtva2tlaWJvblwgOwor5aWz5a2Q5a+uID4gam9zaGlyeW91XCA7CivmlL/msrvnmoQgPiBzZWlqaXRla2lcIDsKK+S4iuetieWFtSA+IGpvdXRvdWhlaVwgOwor5Y6f56i/57SZID4gZ2Vua291c2hpXCA7CivoibLnnLzpj6EgPiBpcm9tZWdhbmVcIDsKK+alveitnOWPsCA+IGdha3VmdWRhaVwgOwor5Ya35rC05aGKID4gcmVpc3Vpa2FpXCA7Civkv53orbfoibIgPiBob2dvc2hva3VcIDsKK+iJsuWPjuW3riA+IGlyb3NodXVzYVwgOwor576O6KGT5a62ID4gYmlqdXRzdWthXCA7Civlho3oqZXkvqEgPiBzYWloeW91a2FcIDsKK+ertuS6iemmrCA+IGt5b3Vzb3ViYVwgOwor5rqW5YKZ5LitID4ganVuYmljaHV1XCA7CivlhYnlkIjmiJAgPiBrb3Vnb3VzZWlcIDsKK+aCquadoeS7tiA+IGFrdWpvdWtlblwgOwor5LiJ5oKq6LajID4gc2FuYWt1c2h1XCA7CivkuLvnlKPlnLAgPiBzaHVzYW5jaGlcIDsKK+iytOaWueOAhSA+IGFuYXRhZ2F0YVwgOwor5be756mN6ZuyID4ga2Vuc2VraXVuXCA7CivluIznoavphbggPiBraXJ5dXVzYW5cIDsKK+iEseepgOapnyA+IGRha2tva3VraVwgOwor6byO6KuH5LyaID4gdGVpZGFua2FpXCA7CivopIfmnKzkvY0gPiBmdWt1aG9uJydpXCA7Civkv5fotqPlkbMgPiB6b2t1c2h1bWlcIDsKK+e1guatouespiA+IHNodXVzaGlmdVwgOwor57K+6KO95ZOBID4gc2Vpc2VpaGluXCA7CivmhrLlhbXpmoogPiBrZW5wZWl0YWlcIDsKK+mFjeWBtuiAhSA+IGhhaWd1dXNoYVwgOwor5YWF5b2T6YeRID4ganV1dG91a2luXCA7CivmtojngavmoJMgPiBzaG91a2FzZW5cIDsKK+WvhOeVmeiAhSA+IGtpcnl1dXNoYVwgOwor54Gw56We5qW9ID4gaGFpa2FndXJhXCA7CivkuI3ph4/oposgPiBmdXJ5b3VrZW5cIDsKK+mHkeS4gOWwgSA+IGtpbicnaXBwdXVcIDsKK+W6iumBi+WLlSA+IHl1a2F1bmRvdVwgOwor5a+E55Sf6JmrID4ga2lzZWljaHV1XCA7CivkuInnrYnliIYgPiBzYW50b3VidW5cIDsKK+WWq+awtOe3miA+IGtpc3N1aXNlblwgOwor5oKq546J5YyWID4gYWt1ZGFtYWthXCA7CivotoXnsKHmmJMgPiBjaG91a2FuJydpXCA7CivmiK/kvZzogIUgPiBnZXNha3VzaGFcIDsKK+mdkueToueuqiA+IGFvYnlvdXRhblwgOwor5oKj6ICF5qeYID4ga2FuamFzYW1hXCA7CivkupTlr7jph5ggPiBnb3N1bmt1Z2lcIDsKK+S7rueZu+iomCA+IGthcml0b3VraVwgOwor5ZCI5ZCM6LuNID4gZ291ZG91Z3VuXCA7CivpnZ7nj77mpa0gPiBoaWdlbmd5b3VcIDsKK+WLpOWKtOiAhSA+IGtpbnJvdXNoYVwgOwor5Zu65a6a6ZW3ID4ga290ZWljaG91XCA7Civmrrroj4zliaQgPiBzYWtraW56YWlcIDsKK+a0i+acjeWxiyA+IHlvdWZ1a3V5YVwgOwor6LW354iG5YmkID4ga2liYWt1emFpXCA7CivooajnpLrnga8gPiBoeW91aml0b3VcIDsKK+S+v+WIqeW4syA+IGJlbnJpY2hvdVwgOwor5Y+W5p2Q54+tID4gc2h1emFpaGFuXCA7CivohILogqrkvZMgPiBzaGlib3V0YWlcIDsKK+mDteS+v+WxiyA+IHl1dWJpbicneWFcIDsKK+S4rei+nuWFuCA+IGNodXVqaXRlblwgOwor5rSX6Z2i5Y+wID4gc2VubWVuZGFpXCA7CivlhoXoo4/pm5sgPiBkYWlyaWJpbmFcIDsKK+WFqOS6jOmHjSA+IHplbicnbmlqdXVcIDsKK+a6tuino+aApyA+IHlvdWthaXNlaVwgOwor5pW05pWw6KuWID4gc2Vpc3V1cm9uXCA7CivmsJHnpL7lhZogPiBtaW5zaGF0b3VcIDsKK+S8geeUu+abuCA+IGtpa2FrdXNob1wgOwor55Sf5Zyw542EID4gaWtpamlnb2t1XCA7CivntJTnsbPphZIgPiBqdW5tYWlzaHVcIDsKK+WbnumBiumtmiA+IGthaXl1dWd5b1wgOwor54Sh6Zai5b+DID4gbXVrYW5zaGluXCA7Civlj4vkurrplpMgPiB5dXVqaW5rYW5cIDsKK+acieaWkOmWoyA+IHl1dWhpa2FrdVwgOwor6LKp5aOy5bqXID4gaGFuYmFpdGVuXCA7Civlv5fmnJvmoKEgPiBzaGlib3Vrb3VcIDsKK+Wliei/jumWgCA+IGhvdWdlaW1vblwgOwor6Z2i5Lya5Lq6ID4gbWVua2FpbmluXCA7CivkuIDnrofmnIggPiBpa2thZ2V0c3VcIDsKK+mAgeawtOeuoSA+IHNvdXN1aWthblwgOwor5Ya35YeN6Ii5ID4gcmVpdG91c2VuXCA7CivlubTphY3ogIUgPiBuZW5wYWlzaGFcIDsKK+aJi+aVsOaWmSA+IHRlc3V1cnlvdVwgOwor6Zui6a2C55eFID4gcmlrb25ieW91XCA7CivmsLTkuK3oirEgPiBzdWljaHV1a2FcIDsKK+WLleWQjeipniA+IGRvdW1laXNoaVwgOwor6buE6YeR6ImyID4ga29nYW5laXJvXCA7CivkuozlhYPnmoQgPiBuaWdlbnRla2lcIDsKK+e4nuagl+m8oCA+IHNoaW1hcmlzdVwgOwor5aiv5qW95aC0ID4gZ29yYWt1am91XCA7CivpgYropqflnLAgPiB5dXVyYW5jaGlcIDsKK+acrOWboOWdiiA+IGhvbicnaW5ib3VcIDsKK+WFseaghOWcjyA+IGt5b3VlaWtlblwgOwor55u45a++5q27ID4gYWl0YWlqaW5pXCA7Civlm73oh6rmhaIgPiBrdW5pamltYW5cIDsKK+mHjeWkp+imliA+IGp1dWRhaXNoaVwgOwor5LyB5qWt5YaFID4ga2lneW91bmFpXCA7CivlkIznqpPkvJogPiBkb3Vzb3VrYWlcIDsKK+azleiTruiNiSA+IGhvdXJlbnNvdVwgOwor5rW35aSW54mIID4ga2FpZ2FpYmFuXCA7CivmiYfnirblnLAgPiBzZW5qb3VjaGlcIDsKK+aJk+aSg+aIpiA+IGRhZ2VraXNlblwgOwor6YCP5YaZ57SZID4gdG91c2hhc2hpXCA7Civkurrmloflj7IgPiBqaW5idW5zaGlcIDsKK+aMh+WumuWIuCA+IHNoaXRlaWtlblwgOwor6aaZ5rC055O2ID4ga291c3VpYmluXCA7CivnhrHluK/nl4UgPiBuZXRhaWJ5b3VcIDsKK+S8neiomOeJqSA+IGRlbmtpbW9ub1wgOwor6KiI6YeP5ZmoID4ga2VpcnlvdWtpXCA7Civoo5zlhJ/ph5EgPiBob3Nob3VraW5cIDsKK+i7veeKr+e9qiA+IGtlaWhhbnphaVwgOwor6Zyw5by+6YqDID4gc2FuZGFuanV1XCA7CivlkIjmhrLmgKcgPiBnb3VrZW5zZWlcIDsKK+WcsOmOruelrSA+IGppY2hpbnNhaVwgOwor5Li75L2T5oCnID4gc2h1dGFpc2VpXCA7CivntKDnspLlrZAgPiBzb3J5dXVzaGlcIDsKK+Wlh+m6l+S6iyA+IGtpcmVpZ290b1wgOwor6J2/5Zyw542EID4gaGFlamlnb2t1XCA7CivlpKfngb3lrrMgPiBkYWlzYWlnYWlcIDsKK+alveWkqeWutiA+IHJha3V0ZW5rYVwgOwor55CG5oCn55qEID4gcmlzZWl0ZWtpXCA7CivpvJPnrJvpmoogPiBrb3Rla2l0YWlcIDsKK+WvkuaaluioiCA+IGthbmRhbmtlaVwgOwor6Iqx57KJ55eHID4ga2FmdW5zaG91XCA7CivkurrngrrnmoQgPiBqaW4nJ2l0ZWtpXCA7Civlj5fpoJjogIUgPiBqdXJ5b3VzaGFcIDsKK+S8geeUu+aApyA+IGtpa2FrdXNlaVwgOwor5YaF6ZyA5Z6LID4gbmFpanVnYXRhXCA7Civljp/miJDlsqkgPiBnZW5zZWlnYW5cIDsKK+ihqOekuuadvyA+IGh5b3VqaWJhblwgOwor5rC45LmF5q2vID4gZWlreXV1c2hpXCA7CivljYPnpL7mnK0gPiBzZW5qYWZ1ZGFcIDsKK+iPqeaPkOW/gyA+IGJvZGFpc2hpblwgOwor6KGo56S65pu4ID4gaHlvdWppc2hvXCA7Civnsr7nrpfmm7ggPiBzZWlzYW5zaG9cIDsKK+aUvuawtOeuoSA+IGhvdXN1aWthblwgOwor5Y+M5a2Q6JGJID4gc291c2hpeW91XCA7CivmgKfou6Lmj5sgPiBzZWl0ZW5rYW5cIDsKK+i8uOmAgemHjyA+IHl1c291cnlvdVwgOwor5omA5pyJ5ZywID4gc2hveXV1Y2hpXCA7CivpvJPmiYvplbcgPiBrb3NodWNob3VcIDsKK+e3j+acrOW6lyA+IHNvdWhvbnRlblwgOwor5YWD5rCX6ICFID4gZ2Vua2ltb25vXCA7Civku6PlvIHogIUgPiBkYWliZW5zaGFcIDsKK+eUuuWMu+iAhSA+IG1hY2hpaXNoYVwgOwor6KO95p2Q5omAID4gc2VpemFpc2hvXCA7Civlj43kubHou40gPiBoYW5yYW5ndW5cIDsKK+e3j+S6uuWPoyA+IHNvdWppbmtvdVwgOwor5bqX5LuV6IieID4gbWlzZWppbWFpXCA7CivkuK3kv53ogIUgPiBjaHV1aG9zaGFcIDsKK+eri+azleiAhSA+IHJpcHBvdXNoYVwgOwor6I2J55u45pKyID4ga3VzYXp1bW91XCA7CivkuojlgpnpjKggPiB5b2JpaWthcmlcIDsKK+atk+mAgeS8miA+IGthbnNvdWthaVwgOwor5Y+M57+F6aGeID4gc291c2hpcnVpXCA7CivntJnntLDlt6UgPiBrYW1pemFpa3VcIDsKK+WxseawtOiNmCA+IHNhbnN1aXNvdVwgOwor6KGo5rKZ5rGwID4gb21vdGV6YXRhXCA7CivllJDnjYXlrZAgPiBrYXJhamlzaGlcIDsKK+W5s+WSjOWbvSA+IGhlaXdha29rdVwgOwor5L2O5rCX5ZynID4gdGVpa2lhdHN1XCA7CivkvZzmpa3nlKggPiBzYWd5b3V5b3VcIDsKK+awtOWus+WcsCA+IHN1aWdhaWNoaVwgOwor57eP5pys5bGxID4gc291aG9uemFuXCA7CivmvJToqqzlrrYgPiBlbnpldHN1a2FcIDsKK+ebsuiFuOeCjiA+IG1vdWNob3VlblwgOwor56iA56Gr6YW4ID4ga2lyeXV1c2FuXCA7CivpgaPllJDkvb8gPiBrZW50b3VzaGlcIDsKK+S9nOalreePrSA+IHNhZ3lvdWhhblwgOwor5rS75oCn54KtID4ga2Fzc2VpdGFuXCA7CivmnIDlsI/ljJYgPiBzYWlzaG91a2FcIDsKK+S5l+mZjeWgtCA+IGpvdWtvdWpvdVwgOwor5L+X5LiW55WMID4gem9rdXNla2FpXCA7Civmr5vnuZTniakgPiBrZW9yaW1vbm9cIDsKK+W/l+mhmOabuCA+IHNoaWdhbnNob1wgOwor5LiN5q276bOlID4gZnVzaGljaG91XCA7CivmgrLoprPnmoQgPiBoaWthbnRla2lcIDsKK+aIkOWKn+iAhSA+IHNlaWtvdXNoYVwgOwor55yL6K235a2mID4ga2FuZ29nYWt1XCA7CivkuIrlkJHnt5ogPiBqb3Vrb3VzZW5cIDsKK+a2iOeCjuWJpCA+IHNob3VlbnphaVwgOwor5YWs5LyR5pelID4ga291a3l1dWJpXCA7Civnt4/nvbfmpa0gPiBzb3VoaWd5b3VcIDsKK+WGjeaKleizhyA+IHNhaXRvdXNoaVwgOwor5q2M5YqH5aC0ID4ga2FnZWtpam91XCA7CivmtYTmsLTloLQgPiBqb3VzdWlqb3VcIDsKK+awtOiAleazlSA+IHN1aWtvdWhvdVwgOwor5aSn5ryU57+SID4gZGFpZW5zaHV1XCA7Civlrp/muKzlm7MgPiBqaXNzb2t1enVcIDsKK+iGqOW8teW6piA+IGJvdWNob3Vkb1wgOwor5pig5YaZ5bmVID4gZWlzaGFtYWt1XCA7CivkuIrmsLTpgZMgPiBqb3VzdWlkb3VcIDsKK+WFqOS9j+awkSA+IHplbmp1dW1pblwgOwor5rWE5rC05ZywID4gam91c3VpY2hpXCA7CivnlLfmgKfnlKggPiBkYW5zZWl5b3VcIDsKK+WlveWlh+W/gyA+IGtvdWtpc2hpblwgOwor6IKJ5L2T576OID4gbmlrdXRhaWJpXCA7Civlm73lrrbnmoQgPiBrb2trYXRla2lcIDsKK+eKoOeJsueahCA+IGdpc2VpdGVraVwgOwor6YCj5a2Q56qTID4gcmVuamltYWRvXCA7Civnm7jlr77mgKcgPiBzb3V0YWlzZWlcIDsKK+mWouW/g+S6iyA+IGthbnNoaW5qaVwgOwor6JKy5Zuj55quID4gZnV0b25nYXdhXCA7CivljJfmlpfmmJ8gPiBob2t1dG9zZWlcIDsKK+acrOaLoOWcsCA+IGhvbmt5b2NoaVwgOwor6Iie6LiP55eFID4gYnV0b3VieW91XCA7CivlhoXlpJbkurogPiBuYWlnYWlqaW5cIDsKK+S4i+eoruWlsyA+IGdlc3VvbicnbmFcIDsKK+i1pOmbu+i7iiA+IGFrYWRlbnNoYVwgOwor57KY5p2/5bKpID4gbmVuYmFuZ2FuXCA7Civkuovmpa3ogIUgPiBqaWd5b3VzaGFcIDsKK+atk+i/juS8miA+IGthbmdlaWthaVwgOwor6KiX5YWQ5omAID4gdGFrdWppc2hvXCA7Civkv53oqLzph5EgPiBob3Nob3VraW5cIDsKK+eMqeOAhee3iyA+IHNob3Vqb3VoaVwgOwor5rC05pmC6KiIID4gbWl6dWRva2VpXCA7Civnm7LlsI7niqwgPiBtb3Vkb3VrZW5cIDsKK+iyqeWjsuS6uiA+IGhhbmJhaW5pblwgOwor5Lq65Zu96KiYID4gamlua29rdWtpXCA7Civmma7lj4rniYggPiBmdWt5dXViYW5cIDsKK+WNiumDqOaXjyA+IGhhbmJ1em9rdVwgOwor6aOb6YGT5YW3ID4gdG9iaWRvdWd1XCA7CivkurrplpPnlYwgPiBuaW5nZW5rYWlcIDsKK+S5s+avjei7iiA+IHViYWd1cnVtYVwgOwor5oOo5q275L2TID4gemFuc2hpdGFpXCA7CivpgYvmkKzkurogPiB1bnBhbicnbmluXCA7CivmipfnlJ/liaQgPiBrb3VzZWl6YWlcIDsKK+S4lui/t+iogCA+IHlvbWFpZ290b1wgOwor5Lyd6KiA5p2/ID4gZGVuZ29uYmFuXCA7Civoh6rnq4voqp4gPiBqaXJpdHN1Z29cIDsKK+eGseW4r+aelyA+IG5ldHRhaXJpblwgOwor5rC45LmF5oCnID4gZWlreXV1c2VpXCA7Civoo73mnKzlsYsgPiBzZWlob24nJ3lhXCA7Civmsb3ou4ros4MgPiBraXNoYWNoaW5cIDsKK+emgeijj+anmCA+IGtpbnJpc2FtYVwgOwor5oWj55So5Y+lID4ga2FuJyd5b3VrdVwgOwor6Kaz5YWJ5ZywID4ga2Fua291Y2hpXCA7CivkvJropovogIUgPiBrYWlrZW5zaGFcIDsKK+adseWkqee0hSA+IHRvdXRlbmtvdVwgOwor6Kaz5YWJ5ZujID4ga2Fua291ZGFuXCA7CivmioDlt6fnmoQgPiBnaWtvdXRla2lcIDsKK+alvemaoOWxhSA+IHJha3Vpbmt5b1wgOwor6auY6YCf5bqmID4ga291c29rdWRvXCA7Civnp4HnlJ/lrZAgPiBzaGlzZWlzaGlcIDsKK+aXpeiomOW4syA+IG5pa2tpY2hvdVwgOwor5pS/5rK75a2mID4gc2VpamlnYWt1XCA7CivmsLTnkIblraYgPiBzdWlyaWdha3VcIDsKK+avjeWtkOWvriA+IGJvc2hpcnlvdVwgOwor552A5b+D5ZywID4ga2lnb2tvY2hpXCA7CivmiJLljrPku6QgPiBrYWlnZW5yZWlcIDsKK+aKleS4jumHjyA+IHRvdXlvcnlvdVwgOwor5ZO65Lmz6aGeID4gaG9ueXV1cnVpXCA7CivlpKfonZnonaAgPiBvb2tvdW1vcmlcIDsKK+eEoeaKleelqCA+IG11dG91aHlvdVwgOwor5oyH5LqG5ZuzID4gc2hpcnlvdXp1XCA7Civpganlv5zmgKcgPiB0ZWtpb3VzZWlcIDsKK+WbnumAgei7iiA+IGthaXNvdXNoYVwgOwor5ryr5omN5birID4gbWFuemFpc2hpXCA7CivoirHngavluKsgPiBoYW5hYmlzaGlcIDsKK+S6i+alreeojiA+IGppZ3lvdXplaVwgOwor5Y+O5a655omAID4gc2h1dXlvdWpvXCA7Civlm73nkr3mm7ggPiBrb2t1amlzaG9cIDsKK+aEn+immuWZqCA+IGthbmtha3VraVwgOwor5pWZ6IKy6LK7ID4ga3lvdWlrdWhpXCA7Civlm7rlrprntaYgPiBrb3RlaWt5dXVcIDsKK+Wxleimp+S8miA+IHRlbnJhbmthaVwgOwor5Lqk5Luj5Yi2ID4ga291dGFpc2VpXCA7Civlt6HoppboiYcgPiBqdW5zaGl0ZWlcIDsKK+W3oeimluiIuSA+IGp1bnNoaXNlblwgOwor5rGO6Zai5pWwID4gaGFua2Fuc3V1XCA7CivlhajkurrnlJ8gPiB6ZW5qaW5zZWlcIDsKK+aWreW8t+W6piA+IGRhbmt5b3Vkb1wgOwor5Yem5aWz5L2cID4gc2hvam9zYWt1XCA7CivlgIvmgKfnmoQgPiBrb3NlaXRla2lcIDsKK+WFqOmfs+majiA+IHplbicnb25rYWlcIDsKK+WPjeS5seiAhSA+IGhhbnJhbnNoYVwgOwor6Lu96Z+z5qW9ID4ga2Vpb25nYWt1XCA7Civpkb/lsqnmqZ8gPiBzYWt1Z2Fua2lcIDsKK+WbnuW+qeacnyA+IGthaWZ1a3VraVwgOwor5LiN5ZCI5qC8ID4gZnVnb3VrYWt1XCA7Civlkajms6LoqIggPiBzaHV1aGFrZWlcIDsKK+S4jeWPr+asoCA+IGZ1a2FrZXRzdVwgOwor56Gs5YyW55eHID4ga291a2FzaG91XCA7CivpgIblirnmnpwgPiBneWFra291a2FcIDsKK+S4gOetieWbvSA+IGl0dG91a29rdVwgOwor5YWo5bCB5ZywID4gemVuaG91Y2hpXCA7CivliIbphY3ph5EgPiBidW5wYWlraW5cIDsKK+WbnumBiuiIuSA+IGthaXl1dXNlblwgOwor5YWs5Lya5aCCID4ga291a2FpZG91XCA7CivnhKHooajmg4UgPiBtdWh5b3Vqb3VcIDsKK+awtOmkg+WtkCA+IHN1aWd5b3V6YVwgOwor6aKo5Zyf55eFID4gZnV1ZG9ieW91XCA7CivpgIPpgb/nmoQgPiB0b3VoaXRla2lcIDsKK+WPpOaWh+WtpiA+IGtvYnVuZ2FrdVwgOwor5YSq562J55SfID4geXV1dG91c2VpXCA7Civlm7rlrprnpaggPiBrb3RlaWh5b3VcIDsKK+WvvuWQkei7iiA+IHRhaWtvdXNoYVwgOwor5LqL5qWt55WMID4gamlneW91a2FpXCA7CivmibnliKTnmoQgPiBoaWhhbnRla2lcIDsKK+WkqeWcsOS6uiA+IHRlbmNoaWppblwgOwor6KGA57Wx5pu4ID4ga2V0dG91c2hvXCA7CivkuK3kuozpmo4gPiBjaHV1bmlrYWlcIDsKK+WxseiRoeiQhCA+IHlhbWFidWRvdVwgOwor6buE6YGT6Z2iID4ga291ZG91bWVuXCA7Civlj5fpm6PpgLEgPiBqdW5hbnNodXVcIDsKK+WwiuWOs+atuyA+IHNvbmdlbnNoaVwgOwor6ICD5Y+k5a2mID4ga291a29nYWt1XCA7Civkv53pmbroqLwgPiBob2tlbnNob3VcIDsKK+mrmOWIhuWtkCA+IGtvdWJ1bnNoaVwgOwor5Yal5Yqg6YeRID4gbXlvdWdha2luXCA7CivlhoXlnLDnsbMgPiBuYWljaGltYWlcIDsKK+aer+iRieWJpCA+IGthcmVoYXphaVwgOwor5oub5b6F5pelID4gc2hvdXRhaWJpXCA7CivoqpPpoZjmqKkgPiBzZWlnYW5rZW5cIDsKK+aEm+WbveiAhSA+IGFpa29rdXNoYVwgOwor6Ki06aGY5Lq6ID4gc29nYW4nJ25pblwgOwor6aCY5LqL6aSoID4gcnlvdWppa2FuXCA7CivkuLvniq/ogIUgPiBzaHVoYW5zaGFcIDsKK+mYsuitt+WjgSA+IGJvdWdvaGVraVwgOwor6LOH6YeR5rqQID4gc2hpa2luZ2VuXCA7CivpvKDlkqznl4cgPiBzb2tvdXNob3VcIDsKK+S4iemHjeeblyA+IHNhbmp1dXRvdVwgOwor6YCj5L2T5b2iID4gcmVudGFpa2VpXCA7Civnj77mrrXpmo4gPiBnZW5kYW5rYWlcIDsKK+aIkOW5tOiAhSA+IHNlaW5lbnNoYVwgOwor6YeR6Kej56aBID4ga2lua2Fpa2luXCA7Civnvr3lrZDnqoEgPiBoYW5ldHN1a2lcIDsKK+a0l+a/r+eyiSA+IHNlbnRha3Vrb1wgOwor5YWJ5YyW5a2mID4ga291a2FnYWt1XCA7CivovrLlrabpg6ggPiBub3VnYWt1YnVcIDsKK+S4u+S7u+WItiA+IHNodW5pbnNlaVwgOwor6Iie6LiP5pyNID4gYnV0b3VmdWt1XCA7CivntYzpqJPoq5YgPiBrZWlrZW5yb25cIDsKK+e1jOmok+irhyA+IGtlaWtlbmRhblwgOwor5pOm6YGO5YK3ID4gc2Fra2FzaG91XCA7Civlho3oo73lk4EgPiBzYWlzZWloaW5cIDsKK+Wbm+mHjeWljyA+IHNoaWp1dXNvdVwgOwor55u45a++5YCkID4gc291dGFpY2hpXCA7Civmr43lrZDlhbEgPiBib3NoaXRvbW9cIDsKK+mJhOeBq+W3uyA+IHRla2thbWFraVwgOwor6Iux5L2c5paHID4gZWlzYWt1YnVuXCA7CivmiKbou4rlhbUgPiBzZW5zaGFoZWlcIDsKK+WGjeaKleeovyA+IHNhaXRvdWtvdVwgOwor5pWZ6aSK6YOoID4ga3lvdXlvdWJ1XCA7Civnq4vms5XmqKkgPiByaXBwb3VrZW5cIDsKK+WmpeWNlOeCuSA+IGRha3lvdXRlblwgOwor6Zuy5LuZ5bKzID4gdW56ZW5kYWtlXCA7Civlj5fpoJjmm7ggPiBqdXJ5b3VzaG9cIDsKK+S4jea0u+WMliA+IGZ1a2F0c3VrYVwgOwor5paH56ug6KqeID4gYnVuc2hvdWdvXCA7CivpnZLkv6Hlj7cgPiBhb3NoaW5nb3VcIDsKK+aZguioiOeavyA+IHRva2VpemFyYVwgOwor5bm95Yal55WMID4geXV1bWVpa2FpXCA7Civln7fooYzlkI8gPiBzaGlra291cmlcIDsKK+etiemrmOe3miA+IHRvdWtvdXNlblwgOwor57We6aaW5Y+wID4ga291c2h1ZGFpXCA7CivnoLTmk6bpn7MgPiBoYXNhdHN1b25cIDsKK+mAgeWPl+S/oSA+IHNvdWp1c2hpblwgOwor5LiA56We6KuWID4gaXNzaGlucm9uXCA7CivnnYDpgZPmpb0gPiBraWRvdXJha3VcIDsKK+aYjuW+jOW5tCA+IG15b3Vnb25lblwgOwor5rOV5YuZ55yBID4gaG91bXVzaG91XCA7CivphbXntKDlraYgPiBrb3Vzb2dha3VcIDsKK+a3t+WQiOmFkiA+IGtvbmdvdXNodVwgOwor5Zuz5YOP5a2mID4genV6b3VnYWt1XCA7CivlpYnliqDluLMgPiBob3VnYWNob3VcIDsKK+aEn+WYhuipniA+IGthbnRhbnNoaVwgOwor5YmN5aOy5Yi4ID4gbWFldXJpa2VuXCA7Civlv5fpoZjlhbUgPiBzaGlnYW5oZWlcIDsKK+WPjeWwhOWFiSA+IGhhbnNoYWtvdVwgOwor55qu57Sw5belID4ga2F3YXphaWt1XCA7CivlvqnmsLTlmaggPiBmdWt1c3Vpa2lcIDsKK+mWoumAo+aApyA+IGthbnJlbnNlaVwgOwor57Wx6Kqe5a2mID4gdG91Z29nYWt1XCA7CivmmbTnnLzogIUgPiBzZWlnYW5zaGFcIDsKK+ism+a8lOaWmSA+IGtvdWVucnlvdVwgOwor5pWs6ICB5LyaID4ga2Vpcm91a2FpXCA7CivmmYLplpPou7ggPiBqaWthbmppa3VcIDsKK+WPjeWvvuWFmiA+IGhhbnRhaXRvdVwgOwor5pCt5LmX6ICFID4gdG91am91c2hhXCA7CivnpL7msJHlhZogPiBzaGFtaW50b3VcIDsKK+e1nummluWIkSA+IGtvdXNodWtlaVwgOwor5Ym15bu66ICFID4gc291a2Vuc2hhXCA7CivmnIDlpKfpmZAgPiBzYWlkYWlnZW5cIDsKK+alk+WtkOmmmSA+IGZ1dXNoaWtvdVwgOwor5re35oiQ5bKpID4ga29uc2VpZ2FuXCA7CivntJnnspjlnJ8gPiBrYW1pbmVuZG9cIDsKK+adoeS7tuaWhyA+IGpvdWtlbmJ1blwgOwor5oSP6K2Y5L2TID4gaXNoaWtpdGFpXCA7Civnp4HkvIHmpa0gPiBzaGlraWd5b3VcIDsKK+epuuaooeanmCA+IHNvcmFtb3lvdVwgOwor5YWs5pyJ5p6XID4ga291eXV1cmluXCA7CivlsbHmsLTmpbwgPiBzYW5zdWlyb3VcIDsKK+WvhOeVmeWcsCA+IGtpcnl1dWNoaVwgOwor5pat5Ymb5oCnID4gZGFuZ291c2VpXCA7CivnqbrlhYPmsJcgPiBrYXJhZ2Vua2lcIDsKK+aJk+eul+eahCA+IGRhc2FudGVraVwgOwor6YCA6JS15ZOBID4gdGFpem91aGluXCA7CivlvbHpn7/lnI8gPiBlaWt5b3VrZW5cIDsKK+ecn+WWhOe+jiA+IHNoaW56ZW5iaVwgOwor5Luy5L+d6ICFID4gY2h1dWhvc2hhXCA7CivmiYvooZPooaMgPiBzaHVqdXRzdWlcIDsKK+S6uumWk+aEmyA+IG5pbmdlbicnYWlcIDsKK+eQhuefpeeahCA+IHJpY2hpdGVraVwgOwor55Cl54+A6ImyID4ga29oYWt1aXJvXCA7CivlvqHolK3mp5ggPiBva2FnZXNhbWFcIDsKK+avm+e0sOeuoSA+IG1vdXNhaWthblwgOwor55m96IOh6bq7ID4gc2hpcm9nb21hXCA7CivkuLvkurrlhawgPiBzaHVqaW5rb3VcIDsKK+S6uumWk+aApyA+IG5pbmdlbnNlaVwgOwor5Y2Y5a2U6aGeID4gdGFua291cnVpXCA7CivlkIzlirTogIUgPiBkb3Vyb3VzaGFcIDsKK+WNs+aZguaApyA+IHNva3VqaXNlaVwgOwor5Lmz5ZGR5YWQID4gY2hpbm9taWdvXCA7CivkuI3lvrPmvKIgPiBmdXRva3VrYW5cIDsKK+mBremBh+aIpiA+IHNvdWd1dXNlblwgOwor5Y+I5a625p2lID4gbWF0YWdlcmFpXCA7CivmraPmm7jms5UgPiBzZWlzaG9ob3VcIDsKK+eLrOiHquaApyA+IGRva3VqaXNlaVwgOwor5byB6LKh5aSpID4gYmVuemFpdGVuXCA7Civli6Tli5nlhYggPiBraW5tdXNha2lcIDsKK+aMgeS5heaIpiA+IGppa3l1dXNlblwgOwor6YeN6KaB6KaWID4ganV1eW91c2hpXCA7CivnqbrmooXpm6ggPiBrYXJhdHN1eXVcIDsKK+a3t+aIkOWboyA+IGtvbnNlaWRhblwgOwor54Gr5Y+j5aOBID4ga2Frb3VoZWtpXCA7CivmmYLplpPooaggPiBqaWthbmh5b3VcIDsKK+egguWIqemBkyA+IGphcmltaWNoaVwgOwor5Lya6KiI5a6YID4ga2Fpa2Vpa2FuXCA7Civos6Tmpa3lqaYgPiBzZW5neW91ZnVcIDsKK+e1jOmok+iAhSA+IGtlaWtlbnNoYVwgOwor6Z+T5Zu96KqeID4gaGFua29rdWdvXCA7CivmlZnmnZDosrsgPiBreW91emFpaGlcIDsKK+WLneWIqeiAhSA+IHNob3VyaXNoYVwgOwor5r2c5LyP5pyfID4gc2VucHVrdWtpXCA7CivlpKflm6PlhoYgPiBkYWlkYW4nJ2VuXCA7CivljYjliY3mp5ggPiBnb3plbnNhbWFcIDsKK+a1t+a9rumfsyA+IGthaWNob3VvblwgOwor5q2j54qv6ICFID4gc2VpaGFuc2hhXCA7Civlj6/lnKfmgKcgPiBrYWF0c3VzZWlcIDsKK+iIueWkp+W3pSA+IGZ1bmFkYWlrdVwgOwor5Zyf5Zyw5p+EID4gdG9jaGlnYXJhXCA7CivnmbvoiLfnpLwgPiB0b3VnZW5yZWlcIDsKK+aUv+W6nOetiyA+IHNlaWZ1c3VqaVwgOwor5rS75oCn5YmkID4ga2Fzc2VpemFpXCA7Civlj43kvZPliLYgPiBoYW50YWlzZWlcIDsKK+iXu+iPjOmhniA+IHNvdWtpbnJ1aVwgOwor5ruR55+z57KJID4ga2Fzc2VraWtvXCA7Civnt6nooZ3lmaggPiBrYW5zaG91a2lcIDsKK+mzqee+veiJsiA+IGhhdG9iYWlyb1wgOwor6aGV5b6u6Y+hID4ga2VuYmlreW91XCA7CivmuKzlrprlmaggPiBzb2t1dGVpa2lcIDsKK+WQjeW6l+ihlyA+IG1laXRlbmdhaVwgOwor5Yip5LyR6ImyID4gcmlreXV1aXJvXCA7Civlm73kuovniq8gPiBrb2t1amloYW5cIDsKK+a3t+aIkOWTgSA+IGtvbnNlaWhpblwgOwor5YiG6YWN6ICFID4gYnVucGFpc2hhXCA7CivljYrpgI/mmI4gPiBoYW50b3VtZWlcIDsKK+WIhuawtOe3miA+IGJ1bnN1aXNlblwgOwor6YGK5oiv55qEID4geXV1Z2l0ZWtpXCA7Civov5HoppbnnLwgPiBraW5zaGlnYW5cIDsKK+S4u+isgOiAhSA+IHNodWJvdXNoYVwgOwor5Lya6KiI5aOrID4ga2Fpa2Vpc2hpXCA7CivliJ3lubTlhbUgPiBzaG9uZW5oZWlcIDsKK+WQjOW5tOi8qSA+IGRvdW5lbnBhaVwgOwor54+N54Sh6aGeID4gY2hpbm11cnVpXCA7Civnrp3lj6Pku6QgPiBrYW5rb3VyZWlcIDsKK+WQiOazleaApyA+IGdvdWhvdXNlaVwgOwor57eP6aCY5LqLID4gc291cnlvdWppXCA7Civlt57mlL/lupwgPiBzaHV1c2VpZnVcIDsKK+WVhuWLmeWumCA+IHNob3VtdWthblwgOwor5b+c5o6l6ZaTID4gb3VzZXRzdW1hXCA7Civlj4LkvJrogIUgPiBzYW5rYWlzaGFcIDsKK+S6lOS6uue1hCA+IGdvbmluZ3VtaVwgOwor6buE5rC05pm2ID4ga2l6dWlzaG91XCA7CivlhoXoo4/mp5ggPiBkYWlyaXNhbWFcIDsKK+Wkp+ihhuWMliA+IHRhaXNodXVrYVwgOwor6YeN5aSn5oCnID4ganV1ZGFpc2VpXCA7CivlpJblm73oqp4gPiBnYWlrb2t1Z29cIDsKK+WLouWKm+WutiA+IHNlaXJ5b2trYVwgOwor5aOw5qW95a62ID4gc2VpZ2FrdWthXCA7Civoo73pnbTmpa0gPiBzZWlrYWd5b3VcIDsKK+eusemmrOi7iiA+IGhha29iYXNoYVwgOwor5a6u5YaF55yBID4ga3VuYWlzaG91XCA7Civkuovmpa3miYAgPiBqaWd5b3VzaG9cIDsKK+epv+WxseeUsiA+IHNlbnphbmtvdVwgOwor6Ieo5riv57eaID4gcmlua291c2VuXCA7CivllK/lkI3oq5YgPiB5dWltZWlyb25cIDsKK+aUuemAoOi7iiA+IGthaXpvdXNoYVwgOwor6buE6YeR5Zu9ID4gb3Vnb25rb2t1XCA7CivoiovnvornvrkgPiBpbW95b3VrYW5cIDsKK+abtOeUn+WTgSA+IGtvdXNlaWhpblwgOwor6IqL576K576uID4gaW1veW91a2FuXCA7CivluoPlsI/ot68gPiBoaXJva291amlcIDsKK+epuui/lOS6iyA+IHNvcmFoZW5qaVwgOwor6IWQ5qSN5ZyfID4gZnVzaG9rdWRvXCA7CivmrKHlloTnrZYgPiBqaXplbnNha3VcIDsKK+mBoOecvOmPoSA+IHRvb21lZ2FuZVwgOwor5Ym16YCg6ICFID4gc291em91c2hhXCA7CivkvJHpm7vml6UgPiBreXV1ZGVuYmlcIDsKK+adv+mWgOW6lyA+IGhhbm1vbnRlblwgOwor5bCO5YWl6YOoID4gZG91bnl1dWJ1XCA7CivnpoXllY/nrZQgPiB6ZW5tb25kb3VcIDsKK+ikh+aVsOWAiyA+IGZ1a3VzdXVrb1wgOwor55uy5a2m5qChID4gbW91Z2Fra291XCA7CivoqZ7oj6/pm4YgPiBzaGlrYXNodXVcIDsKK+eglOS/ruiqsiA+IGtlbnNodXVrYVwgOwor5by+5oCn5L2TID4gZGFuc2VpdGFpXCA7CivnjK7lkYjmnKwgPiBrZW50ZWlib25cIDsKK+WwvumVt+m2jyA+IG9uYWdhZG9yaVwgOwor5pS+6YCB57ayID4gaG91c291bW91XCA7CivpurvphZTolqwgPiBtYXN1aXlha3VcIDsKK+WNg+W5tOe0gCA+IHNlbicnbmVua2lcIDsKK+WDp+W4veW8gSA+IHNvdWJvdWJlblwgOwor5aSq6byT6IW5ID4gdGFpa29iYXJhXCA7CivliY3oo4XnoLIgPiB6ZW5zb3Vob3VcIDsKK+WIhumBo+maiiA+IGJ1bmtlbnRhaVwgOwor5ZC55aWP6ICFID4gc3Vpc291c2hhXCA7Civlpb3op5LlrrYgPiBrb3VrYWt1a2FcIDsKK+aCquWkqeWAmSA+IGFrdXRlbmtvdVwgOwor5o6o6YCy5qmfID4gc3Vpc2hpbmtpXCA7CivpiaTljYHlrZcgPiBrYWdpanV1amlcIDsKK+S5seawl+a1gSA+IHJhbmtpcnl1dVwgOwor5Ya35YeN5YmkID4gcmVpdG91emFpXCA7CivliJ3lr77pnaIgPiBzaG90YWltZW5cIDsKK+acquWPjui8iSA+IG1pc2h1dXNhaVwgOwor5Zec5aW95ZOBID4gc2hpa291aGluXCA7CivngavnoJXmtYEgPiBrYXNhaXJ5dXVcIDsKK+aCquWkqeS9vyA+IGFrdXRlbnNoaVwgOwor5by35YyW57GzID4ga3lvdWthbWFpXCA7CivmsLTpm7foiYcgPiBzdWlyYWl0ZWlcIDsKK+ims+alk+S8miA+IGthbnB1dWthaVwgOwor5L2T6aiT6KuHID4gdGFpa2VuZGFuXCA7CivnhKHmhJ/oppogPiBtdWthbmtha3VcIDsKK+e+pOmAn+W6piA+IGd1bnNva3Vkb1wgOwor6Zu757eP56CUID4gZGVuc291a2VuXCA7CivkuI3norrlrpogPiBmdWtha3V0ZWlcIDsKK+eZveeZvuWQiCA+IHNoaXJheXVyaVwgOwor6Iie6LiK5YqHID4gYnV5b3VnZWtpXCA7Civngavlj6PkuJggPiBrYWtvdWt5dXVcIDsKK+S4jeato+eiuiA+IGZ1c2Vpa2FrdVwgOwor6Zm95a2Q57eaID4geW91c2hpc2VuXCA7CivmmYLplpPntaYgPiBqaWthbmt5dXVcIDsKK+WIhuawtOeVjCA+IGJ1bnN1aWthaVwgOwor5Lmx5Y+N5bCEID4gcmFuaGFuc2hhXCA7Civop6PnrZTmrIQgPiBrYWl0b3VyYW5cIDsKK+mtmumbt+iJhyA+IGd5b3JhaXRlaVwgOwor5YWs5pyJ5ZywID4ga291eXV1Y2hpXCA7CivmrLrnnp7nmoQgPiBnaW1hbnRla2lcIDsKK+aYjueereW6piA+IG1laXJ5b3Vkb1wgOwor5Lya6KiI5L+CID4ga2Fpa2Vpa2VpXCA7CivovLjlhaXnqI4gPiB5dW55dXV6ZWlcIDsKK+S4jeW/g+W+lyA+IGZ1a29rb3JvZVwgOwor5LqM5qWt5ZywID4gbmlneW91Y2hpXCA7CivljZjlrZDoq5YgPiB0YW5zaGlyb25cIDsKK+iovOaLoOmHkSA+IHNob3Vrb2tpblwgOwor55Sf5ryU5aWPID4gbmFtYWVuc291XCA7Civlvq7liIblraYgPiBiaWJ1bmdha3VcIDsKK+WwguW+k+iAhSA+IHNlbmp1dXNoYVwgOwor5LuZ5Y+w5L6vID4gc2VuZGFpa291XCA7CivlhYTlvJ/mhJsgPiBreW91ZGFpYWlcIDsKK+S4h+iPr+mPoSA+IG1hbmdla3lvdVwgOwor56aB5ryB5pyfID4ga2lucnlvdWtpXCA7CivkurrplpPlg48gPiBuaW5nZW56b3VcIDsKK+WbnuW4sOeahCA+IGthaWtpdGVraVwgOwor5biC5rCR56iOID4gc2hpbWluemVpXCA7Civlr4zlo6vpoY0gPiBmdWppYml0YWlcIDsKK+WFiemAn+W6piA+IGtvdXNva3Vkb1wgOwor6ZaL56Wo5omAID4ga2FpaHlvdWpvXCA7CivkvZPogrLppKggPiB0YWlpa3VrYW5cIDsKK+Wkieiqv+azoiA+IGhlbmNob3VoYVwgOwor5ZCM55uf6LuNID4gZG91bWVpZ3VuXCA7CivlkYroqLTkurogPiBrb2t1c29uaW5cIDsKK+WtpuWjq+mZoiA+IGdha3VzaGlpblwgOwor5YCr55CG55qEID4gcmlucml0ZWtpXCA7CivngrnpvLvolqwgPiB0ZW5iaXlha3VcIDsKK+aKleabuOashCA+IHRvdXNob3JhblwgOwor6Ki06Kif5rOVID4gc29zaG91aG91XCA7Civlm5vljYrliIYgPiBzaGloYW5idW5cIDsKK+WQuOmfs+adkCA+IGt5dXVvbnphaVwgOwor5Yid5L2T6aiTID4gc2hvdGFpa2VuXCA7CivovLjlhaXnm6QgPiB5dW55dXViYW5cIDsKK+S4jeefpeeBqyA+IHNoaXJhbnVoaVwgOwor5Y2157Sw6IOeID4gcmFuc2FpYm91XCA7CivkuozmpbXljJYgPiBuaWt5b2t1a2FcIDsKK+WNl+S6rOmMoCA+IG5hbmtpbmpvdVwgOwor6bOp5pmC6KiIID4gaGF0b2Rva2VpXCA7Civlk7rkubPnk7YgPiBob255dXViaW5cIDsKK+ilv+a0i+miqCA+IHNlaXlvdWZ1dVwgOwor5pei6KO95pyNID4ga2lzZWlmdWt1XCA7Civph47lpJbliocgPiB5YWdhaWdla2lcIDsKK+aZrumBjeeahCA+IGZ1aGVudGVraVwgOwor5LqL5qWt5ZujID4gamlneW91ZGFuXCA7CivlsI/lvbnkurogPiBrb3lha3VuaW5cIDsKK+mzpeWqkuiKsSA+IGNob3ViYWlrYVwgOwor6Ieq5rK76aCYID4gamljaGlyeW91XCA7CivnoLTlo4rnmoQgPiBoYWthaXRla2lcIDsKK+eqruaOquWkpyA+IGt5dXVzb2RhaVwgOwor6YGU56Oo6Ii5ID4gZGFydW1hc2VuXCA7CivlhoXlnKjmgKcgPiBuYWl6YWlzZWlcIDsKK+Wwj+iNt+eJqSA+IGtvbmltb3RzdVwgOwor5pel57O75Lq6ID4gbmlra2VpamluXCA7Civnsr7npZ7np5EgPiBzZWlzaGlua2FcIDsKK+S4gOWQiOebriA+IGljaGlnb3VtZVwgOwor5L2P5bGF6LehID4ganV1a3lvYXRvXCA7Civlho3mipflvIEgPiBzYWlrb3ViZW5cIDsKK+i+suS9nOalrSA+IG5vdXNhZ3lvdVwgOwor6J6i5YWJ54eIID4ga2Vpa291dG91XCA7Civku5jlubTooaggPiBmdW5lbnB5b3VcIDsKK+ato+iqpOihqCA+IHNlaWdvaHlvdVwgOwor5Zub6Lyq6LuKID4geW9ucmluc2hhXCA7Civph5HnsbPns5YgPiBrb25wZWl0b3VcIDsKK+S4iemHjeWljyA+IHNhbmp1dXNvdVwgOwor5L+d6Ki85pu4ID4gaG9zaG91c2hvXCA7CivlkKblrprnmoQgPiBoaXRlaXRla2lcIDsKK+S4jemAo+e2miA+IGZ1cmVuem9rdVwgOwor5q2m5pat55qEID4gYnVkYW50ZWtpXCA7Civlh7rnqYLmnJ8gPiBzaHVzc3Vpa2lcIDsKK+S4iuWNiuacnyA+IGthbWloYW5raVwgOwor5Y2Y5a2Q6JGJID4gdGFuc2hpeW91XCA7Civlvq7liIbllYYgPiBiaWJ1bnNob3VcIDsKK+e+qeWFhOW8nyA+IGdpa3lvdWRhaVwgOwor6KSH57Sg5pWwID4gZnVrdXNvc3V1XCA7Civou6LmoKHnlJ8gPiB0ZW5rb3VzZWlcIDsKK+aYvOWknOW4ryA+IGNodXV5YW9iaVwgOwor5LqL5Lu26KGoID4gamlrZW5oeW91XCA7CivonqLlhYnnga8gPiBrZWlrb3V0b3VcIDsKK+W8t+ehrOa0viA+IGt5b3Vrb3VoYVwgOwor5o6S5rCX6YePID4gaGFpa2lyeW91XCA7CivlpbPmloflrZcgPiBvbicnbmFtb2ppXCA7CivnhKHmiYDlsZ4gPiBtdXNob3pva3VcIDsKK+WRqOazouaVsCA+IHNodXVoYXN1dVwgOwor54yb56a96aGeID4gbW91a2lucnVpXCA7CivnlJ/mhYvns7sgPiBzZWl0YWlrZWlcIDsKK+aVo+aWh+ipqSA+IHNhbmJ1bnNoaVwgOwor5qC95Z+556iuID4gc2FpYmFpc2h1XCA7Civljp/okZfogIUgPiBnZW5jaG9zaGFcIDsKK+mbu+ipseaWmSA+IGRlbndhcnlvdVwgOwor5oqA6IO96LOeID4gZ2lub3VzaG91XCA7Civmlpnph5HmiYAgPiByeW91a2luam9cIDsKK+aUr+mFjeiAhSA+IHNoaWhhaXNoYVwgOwor5rSX5r+v5bGLID4gc2VudGFrdXlhXCA7CivlgbTov5HogIUgPiBzb2traW5zaGFcIDsKK+Wun+ekvuS8miA+IGppc3NoYWthaVwgOwor5b6h6YCj57WhID4gZ29yZW5yYWt1XCA7Civpppnlt53nnIwgPiBrYWdhd2FrZW5cIDsKK+eCuea7tOWZqCA+IHRlbnRla2lraVwgOwor5LqI5a6a6KGoID4geW90ZWloeW91XCA7CivlvIHorbfmlpkgPiBiZW5nb3J5b3VcIDsKK+S4u+imgemnhSA+IHNodXlvdWVraVwgOwor5a++5b+c562WID4gdGFpb3VzYWt1XCA7CivovLjlhaXmuK8gPiB5dW55dXVrb3VcIDsKK+WQjOW/l+S8miA+IGRvdXNoaWthaVwgOwor6L+O5pKD5qmfID4gZ2VpZ2VraWtpXCA7CivkurrlnLDlkI0gPiBqaW5jaGltZWlcIDsKK+S/nemZuuaWmSA+IGhva2VucnlvdVwgOwor5aSn5ZKM6IqLID4geWFtYXRvaW1vXCA7Civpq5jlhKrlhYggPiBrb3V5dXVzZW5cIDsKK+aUvumAgeazlSA+IGhvdXNvdWhvdVwgOwor56S65Yqb5ZuzID4gamlyeW9rdXp1XCA7Civpm6rlpbPpg44gPiB5dWtpam9yb3VcIDsKK+mbtue0sOi+siA+IHJlaXNhaW5vdVwgOwor55yf5riF5rC0ID4gbWFzaGltaXp1XCA7CivliqnlpKrliIAgPiBzdWtlZGFjaGlcIDsKK+WFi+W3seW/gyA+IGtva2tpc2hpblwgOwor6Kit6KiI6ICFID4gc2Vra2Vpc2hhXCA7CivnhKHnpZ7oq5YgPiBtdXNoaW5yb25cIDsKK+acieiii+mhniA+IHl1dXRhaXJ1aVwgOwor5LiA5q666YKjID4gaXNzZXRzdW5hXCA7Civlv4PnkIbmiKYgPiBzaGlucmlzZW5cIDsKK+W+oeattOattCA+IG9yZWtpcmVraVwgOwor5LiN5bmz562JID4gZnVieW91ZG91XCA7CivliKnlsL/liaQgPiByaW55b3V6YWlcIDsKK+e1ueepjembsiA+IGtlbnNla2l1blwgOwor54mn5q2M55qEID4gYm9ra2F0ZWtpXCA7CivmvLjov5Hnt5ogPiB6ZW5raW5zZW5cIDsKK+WtkOWuieiynSA+IGtveWFzdWthaVwgOwor5peF5pel6KiYID4gdGFiaW5pa2tpXCA7Civlo7LkuIrph5EgPiB1cmlhZ2VraW5cIDsKK+WPl+e1puiAhSA+IGp1a3l1dXNoYVwgOwor5piO5bm05bqmID4gbXlvdW5lbmRvXCA7CivkuozmnproiIwgPiBuaW1haWppdGFcIDsKK+S4iemHjeWGoCA+IHNhbmp1dWthblwgOwor6KqY6Zu75a2QID4geXV1ZGVuc2hpXCA7CivplqLkv4LoqZ4gPiBrYW5rZWlzaGlcIDsKK+e0oemMmOW9oiA+IGJvdXN1aWtlaVwgOwor5aWJ5bmj5L2/ID4gaG91aGVpc2hpXCA7CivpnanntLDlt6UgPiBrYXdhemFpa3VcIDsKK+W4guawkeazlSA+IHNoaW1pbmhvdVwgOwor5pyA5pWs56S8ID4gc2Fpa2VpcmVpXCA7Civoi6blrabnlJ8gPiBrdWdha3VzZWlcIDsKK+W+l+aEj+WFiCA+IHRva3Vpc2FraVwgOwor6Zuo5LuV5bqmID4gYW1haml0YWt1XCA7Civlkajms6LluK8gPiBzaHV1aGF0YWlcIDsKK+euoeWItuWumCA+IGthbnNlaWthblwgOwor54eD5paZ6LK7ID4gbmVucnlvdWhpXCA7CivlubTovKnogIUgPiBuZW5wYWlzaGFcIDsKK+mHj+iomOWPtyA+IHJ5b3VraWdvdVwgOwor55m65YWJ5L2TID4gaGFra291dGFpXCA7CivljYrlhoblvaIgPiBoYW4nJ2Vua2VpXCA7CivlhobomavpoZ4gPiBlbmNodXVydWlcIDsKK+aHuOaDs+aWhyA+IGtlc291YnVtaVwgOwor5qSc5r2u5ZmoID4ga2VuY2hvdWtpXCA7Civlp4nlprnnt6ggPiBzaGltYWloZW5cIDsKK+ihgOezluWApCA+IGtldHRvdWNoaVwgOwor54Sh6YeN6YePID4gbXVqdXVyeW91XCA7Civpm7voqbHluLMgPiBkZW53YWNob3VcIDsKK+WNiOWJjeS4rSA+IGdvemVuY2h1dVwgOwor5Za25qWt5omAID4gZWlneW91c2hvXCA7CivnsbPluILloLQgPiBiZWlpY2hpYmFcIDsKK+S4jeWLleW/gyA+IGZ1ZG91c2hpblwgOwor5o6o6YCy5ZmoID4gc3Vpc2hpbmtpXCA7CivlsI/liKTlvaIgPiBrb2JhbmdhdGFcIDsKK+WbnumAgeW6lyA+IGthaXNvdXRlblwgOwor54Wn5piO5ZmoID4gc2hvdW1laWtpXCA7CivlvrnnlLLlvL4gPiB0ZWtrb3VkYW5cIDsKK+WuruWGheW6gSA+IGt1bmFpY2hvdVwgOwor5biC5rCR5qipID4gc2hpbWlua2VuXCA7CivljYPlubTmnJ8gPiBzZW4nJ25lbmtpXCA7CivljYroiLfnoLIgPiBoYW5nZW5ob3VcIDsKK+aoqeWogeetiyA+IGtlbicnaXN1amlcIDsKK+Wkiembu+aJgCA+IGhlbmRlbnNob1wgOwor6Zu76Kej5rayID4gZGVua2FpZWtpXCA7Civpm7LkuIrkurogPiB1bmpvdWJpdG9cIDsKK+S4gOWRqOW5tCA+IGlzc2h1dW5lblwgOwor566h5Yi25aGUID4ga2Fuc2VpdG91XCA7Civoj6/ljrPntYwgPiBrZWdvbmt5b3VcIDsKK+WvvuaDheWgsSA+IHRhaWpvdWhvdVwgOwor5qC85aSJ5YyWID4ga2FrdWhlbmthXCA7CivmlZnogrLlrrYgPiBreW91aWt1a2FcIDsKK+WuieaBr+mmmSA+IGFuc29rdWtvdVwgOwor55+z6bm45rC0ID4gc2Vra2Vuc3VpXCA7CivkuI3li4nlvLcgPiBmdWJlbmt5b3VcIDsKK+WhqeWMlueJqSA+IGVua2FidXRzdVwgOwor5Lih55So5qmfID4gcnlvdXlvdWtpXCA7CivlvZPkuJbpoqggPiB0b3VzZWlmdXVcIDsKK+agvOWkqeS6lSA+IGdvdXRlbmpvdVwgOwor5Lit6ICV5qmfID4gY2h1dWtvdWtpXCA7CivkuI3pganmoLwgPiBmdXRla2tha3VcIDsKK+mBoOW/g+WIhiA+IGVuc2hpbmJ1blwgOwor5pmu6YCa5rOVID4gZnV0c3V1aG91XCA7CivlqpLmn5PliaQgPiBiYWlzZW56YWlcIDsKK+egtOijgumfsyA+IGhhcmV0c3VvblwgOwor5Li76Kaz6KuWID4gc2h1a2Fucm9uXCA7CivkuoznlarkvZwgPiBuaWJhbnNha3VcIDsKK+eUn+WRvee3miA+IHNlaW1laXNlblwgOwor56m65a++56m6ID4ga3V1dGFpa3V1XCA7CivnjJvlkLnpm6ogPiBtb3VmdWJ1a2lcIDsKK+mrmOWwhOegsiA+IGtvdXNoYWhvdVwgOwor5LiA5q2p6YqAID4gaWNoaWJ1Z2luXCA7CivnpoHmvIHljLogPiBraW5yeW91a3VcIDsKK+WliOiJr+a8rCA+IG5hcmFkenVrZVwgOwor5b2i6LGh5YyWID4ga2Vpc2hvdWthXCA7CivlhoXlnLDkurogPiBuYWljaGlqaW5cIDsKK+efs+WNl+iKsSA+IHNoYWt1bmFnZVwgOwor5YKA5YSh5birID4ga2FpcmFpc2hpXCA7CivkuIDmranph5EgPiBpY2hpYnVraW5cIDsKK+eXqeaIkeaFoiA+IHlhc2VnYW1hblwgOwor5oKq5Zug57iBID4gYWt1aW4nJ25lblwgOwor5LiN55yg55eHID4gZnVtaW5zaG91XCA7Civpm7vop6Pmp70gPiBkZW5rYWlzb3VcIDsKK+azleiPr+WulyA+IGhva2tlc2h1dVwgOwor5LiA556s6ZaTID4gaXNzaHVua2FuXCA7CivmraPkuInkvY0gPiBzaG91c2FubWlcIDsKK+W8vumBk+W8viA+IGRhbmRvdWRhblwgOwor5re35ZCI5p6XID4ga29uZ291cmluXCA7CivmsLTloqjnlLsgPiBzdWlib2t1Z2FcIDsKK+S6pOaYk+S8miA+IGtvdWVraWthaVwgOwor6auY5qWK5a2QID4gdGFrYXlvdWppXCA7CivmqKnlqIHnmoQgPiBrZW4nJ2l0ZWtpXCA7CivnpL7nlKjou4ogPiBzaGF5b3VzaGFcIDsKK+WIhuawtOW2uiA+IGJ1bnN1aXJlaVwgOwor5a2Q5L6b55SoID4ga29kb21veW91XCA7CivopqrlrZ3ooYwgPiBveWFrb3Vrb3VcIDsKK+eZuuWwhOetkiA+IGhhc3NoYXRvdVwgOwor5ou+5LiH5YaGID4ganV1bWFuJydlblwgOwor5Yuk55qH5a62ID4ga2luJydub3VrYVwgOwor5Lmz5YyW5YmkID4gbnl1dWthemFpXCA7Civov5HlnLDngrkgPiBraW5jaGl0ZW5cIDsKK+eEoeertuS6iSA+IG11a3lvdXNvdVwgOwor5Lqk6Zqb5rOVID4ga291c2FpaG91XCA7Civnp4HmnInlnLAgPiBzaGl5dXVjaGlcIDsKK+WPguS4juiAhSA+IHNhbicneW9zaGFcIDsKK+mjsuaWmeawtCA+IGlucnlvdXN1aVwgOwor56eL5pel5ZKMID4gYWtpYml5b3JpXCA7CivljLrlvbnmiYAgPiBrdXlha3VzaG9cIDsKK+eri+W/l+S8nSA+IHJpc3NoaWRlblwgOwor5aSp56ek5qOSID4gdGVuYmluYm91XCA7CivlpInoqr/lmaggPiBoZW5jaG91a2lcIDsKK+Wwj+WIpOWeiyA+IGtvYmFuZ2F0YVwgOwor6Zai5L+C6ICFID4ga2Fua2Vpc2hhXCA7CivlpKfmiJDlip8gPiBkYWlzZWlrb3VcIDsKK+S6jOS6uuensCA+IG5pbmluc2hvdVwgOwor5YG25YOP6KaWID4gZ3V1em91c2hpXCA7CivlgbbouYTpoZ4gPiBndXV0ZWlydWlcIDsKK+adpeioquiAhSA+IHJhaWhvdXNoYVwgOwor6aiS5Lmx572qID4gc291cmFuemFpXCA7CivlrozmiJDlk4EgPiBrYW5zZWloaW5cIDsKK+WJtemAoOaApyA+IHNvdXpvdXNlaVwgOwor5o6S5rC0566hID4gaGFpc3Vpa2FuXCA7Civlj4joq4vosqAgPiBtYXRhdWtlb2lcIDsKK+mHkemWo+WvuiA+IGtpbmtha3VqaVwgOwor6KqY6Zu75L2TID4geXV1ZGVudGFpXCA7CivljZfkuqznsbMgPiBuYW5raW5tYWlcIDsKK+eEoeelnue1jCA+IG11c2hpbmtlaVwgOwor6YqA5Lqk5o+bID4gZ2lua291a2FuXCA7CivkuI3lubLmuIkgPiBmdWthbnNob3VcIDsKK+ijveWhqealrSA+IHNlaWVuZ3lvdVwgOwor5pWZ5Lya5ZOhID4ga3lvdWthaWluXCA7CivmkK3kuZfliLggPiB0b3Vqb3VrZW5cIDsKK+mBjuehq+mFuCA+IGthcnl1dXNhblwgOwor6YGL5ZG955qEID4gdW5tZWl0ZWtpXCA7CivoprPmoZzkvJogPiBrYW4nJ291a2FpXCA7CivnhKHnpLzogIUgPiBidXJlaW1vbm9cIDsKK+ani+aWh+azlSA+IGtvdWJ1bnBvdVwgOwor5o6l6L+R5oimID4gc2Vra2luc2VuXCA7CivnhKHms5XogIUgPiBtdWhvdW1vbm9cIDsKK+S4jemBqeW9kyA+IGZ1dGVraXRvdVwgOwor54Sh5rC06Y2LID4gbXVzdWluYWJlXCA7CivmnIjntabml6UgPiBnZWtreXV1YmlcIDsKK+aWpeWAmemaiiA+IHNla2tvdXRhaVwgOwor5Ym15qWt6LK7ID4gc291Z3lvdWhpXCA7Civph43opoHmgKcgPiBqdXV5b3VzZWlcIDsKK+e3j+WjsuS4iiA+IHNvdXVyaWFnZVwgOwor5Y2B5YaG546JID4ganV1ZW5kYW1hXCA7CivlgKvnkIblraYgPiByaW5yaWdha3VcIDsKK+S4gOmAsemWkyA+IGlzc2h1dWthblwgOwor56S+5YaF5aCxID4gc2hhbmFpaG91XCA7CivkvY/lroXosrsgPiBqdXV0YWt1aGlcIDsKK+WxiOWcsOaApyA+IGt1dGNoaXNlaVwgOwor5Zu95pyJ5YyWID4ga29rdXl1dWthXCA7CivpgJrpoqjmqZ8gPiB0c3V1ZnV1a2lcIDsKK+WutuWxi+aVtyA+IGlleWFzaGlraVwgOwor5bGx5qSS6a2aID4gc2Fuc2hvdXVvXCA7Civlhazmlofmm7ggPiBrb3VidW5zaG9cIDsKK+axuuWumuirliA+IGtldHRlaXJvblwgOwor5L+d6Ki85Lq6ID4gaG9zaG91bmluXCA7Civmsr/mtbflt54gPiBlbmthaXNodXVcIDsKK+S4jemBk+W+syA+IGZ1ZG91dG9rdVwgOwor5L6/5LmX6ICFID4gYmluam91c2hhXCA7CivkuIDljYfnk7YgPiBpc3Nob3ViaW5cIDsKK+epuuiFueaZgiA+IGt1dWZ1a3VqaVwgOwor5YmN6KGb5oimID4gemVuJydlaXNlblwgOwor5oSf5oOF6KuWID4ga2Fuam91cm9uXCA7CivmlK/phY3mqKkgPiBzaGloYWlrZW5cIDsKK+Wbo+WtkOm8uyA+IGRhbmdvYmFuYVwgOwor5YWo6KuW54K5ID4gemVucm9udGVuXCA7CivpgZPljJbogIUgPiBkb3VrZW1vbm9cIDsKK+ilv+a0i+e0mSA+IHNlaXlvdXNoaVwgOwor5pu46KiY6ZW3ID4gc2hva2ljaG91XCA7Civlv4zoqIDokYkgPiBpbWlrb3RvYmFcIDsKK+mbo+S6i+alrSA+IG5hbmppZ3lvdVwgOwor5LuY5biv55qEID4gZnV0YWl0ZWtpXCA7Civpq5jpo5vou4ogPiB0YWthYmlzaGFcIDsKK+mbu+ipseS4rSA+IGRlbndhY2h1dVwgOwor6buE6YGT5bivID4ga291ZG91dGFpXCA7Civpq5jmoKHnlJ8gPiBrb3Vrb3VzZWlcIDsKK+iCuuawtOiFqyA+IGhhaXN1aXNodVwgOwor5ZWG55So6KqeID4gc2hvdXlvdWdvXCA7CivnlaXoqJjms5UgPiByeWFra2lob3VcIDsKK+iRoeiQhOajmiA+IGJ1ZG91ZGFuYVwgOwor5aWJ5YWs5Lq6ID4gaG91a291bmluXCA7Civku4/ms5Xlg6cgPiBidXBwb3Vzb3VcIDsKK+S9k+iCsuelrSA+IHRhaWlrdXNhaVwgOwor5pmu6YCa5by+ID4gZnV0c3V1ZGFuXCA7CivmiKbkuK3mtL4gPiBzZW5jaHV1aGFcIDsKK+mrmOWxseW4ryA+IGtvdXphbnRhaVwgOwor5oCn54qv572qID4gc2VpaGFuemFpXCA7CivmsJHoirjlk4EgPiBtaW5nZWloaW5cIDsKK+imquS8muekviA+IG95YWdhaXNoYVwgOwor5Y+C6LOA5bizID4gc2FuZ2FjaG91XCA7CivkuInovKrou4ogPiBzYW5yaW5zaGFcIDsKK+eUo+enkeWtpiA+IHNhbmthZ2FrdVwgOwor6LuK5YaF54GvID4gc2hhbmFpdG91XCA7CivljLvli5nlrqQgPiBpbXVzaGl0c3VcIDsKK+awuOe2muaApyA+IGVpem9rdXNlaVwgOwor5o6i5qSc6ZqKID4gdGFua2VudGFpXCA7Civlrp/li5nlrrYgPiBqaXRzdW11a2FcIDsKK+W/hemgiOagvCA+IGhpc3N1a2FrdVwgOwor5aSn5ZKM5q2MID4geWFtYXRvdXRhXCA7CivkuLjlpKrmnZAgPiBtYXJ1dGF6YWlcIDsKK+eglOS/ruaJgCA+IGtlbnNodXVqb1wgOwor5LiA5Yi56YKjID4gaXNzZXRzdW5hXCA7CivlhazmmI7lhZogPiBrb3VtZWl0b3VcIDsKK+e1teepuuiogCA+IGVzb3JhZ290b1wgOwor576F6Yed55ukID4gcmFzaGluYmFuXCA7Civlmajph4/kurogPiBraXJ5b3VqaW5cIDsKK+Wbvemam+iqniA+IGtva3VzYWlnb1wgOwor5Zub6L665b2iID4gc2hpaGVua2VpXCA7CivnmbrkvZznmoQgPiBob3NzYXRla2lcIDsKK+iBvuWtpuagoSA+IHJvdWdha2tvdVwgOwor5o6D5rW36ImHID4gc291a2FpdGVpXCA7Civlj4LogIPmm7ggPiBzYW5rb3VzaG9cIDsKK+WMlueyp+WTgSA+IGtlc2hvdWhpblwgOwor5Zyw5bmz6Z2iID4gY2hpaGVpbWVuXCA7CivkvY7og73ogIUgPiB0ZWlub3VzaGFcIDsKK+WFiOmok+irliA+IHNlbmtlbnJvblwgOwor6ZuG6Iux56S+ID4gc2h1dWVpc2hhXCA7CivnlKjmsLTmsaAgPiB5b3VzdWljaGlcIDsKK+WPl+mbo+WKhyA+IGp1bmFuZ2VraVwgOwor5YCJ5bqr5qWtID4gc291a29neW91XCA7CivljYPlha3mnKwgPiBzZW5yb3Bwb25cIDsKK+i8uOWFpeWTgSA+IHl1bnl1dWhpblwgOwor5YyW57Kn5Y+wID4ga2VzaG91ZGFpXCA7CivloanliqDmuJsgPiBzaGlva2FnZW5cIDsKK+ibjeWFieeHiCA+IGtlaWtvdXRvdVwgOwor5aiY5a2Q6LuNID4gam91c2hpZ3VuXCA7Civoh6rmsrvnnIEgPiBqaWNoaXNob3VcIDsKK+WwvumVt+eMvyA+IG9uYWdhemFydVwgOwor6K2m6Ziy5ZujID4ga2VpYm91ZGFuXCA7CivmraPop6PogIUgPiBzZWlrYWlzaGFcIDsKK+mZkOW6pumhjSA+IGdlbmRvZ2FrdVwgOwor5YaN5rSX56S8ID4gc2Fpc2VucmVpXCA7Civlp4nlprnmoKEgPiBzaGltYWlrb3VcIDsKK+agvOmXmOaKgCA+IGtha3V0b3VnaVwgOwor6Z2S5pil5pyfID4gc2Vpc2h1bmtpXCA7CivpgJ/oqJjpjLIgPiBzb2traXJva3VcIDsKK+WEquWLnemmrCA+IHl1dXNob3ViYVwgOwor5rCX5YCZ5a2mID4ga2lrb3VnYWt1XCA7Civnl4XpmaLoiLkgPiBieW91aW5zZW5cIDsKK+WbveaWh+enkSA+IGtva3VidW5rYVwgOwor5ouF5b2T6ICFID4gdGFudG91c2hhXCA7CivmnaXloLTogIUgPiByYWlqb3VzaGFcIDsKK+ibjeWFieeBryA+IGtlaWtvdXRvdVwgOwor5o6S5rC05rqdID4gaGFpc3Vpa291XCA7Civls7vkuIvliaQgPiBzaHVuZ2V6YWlcIDsKK+WkluWVhumDqCA+IGdhaXNob3VidVwgOwor5q2j5pa55b2iID4gc2VpaG91a2VpXCA7CivmnIjntYzluK8gPiBnZWtrZWl0YWlcIDsKK+inkuihjOeBryA+IGtha3VhbmRvblwgOwor6Kqy5b606YeRID4ga2FjaG91a2luXCA7CivkuqTmj5voiLkgPiBrb3VrYW5zZW5cIDsKK+S/neeuoeiovCA+IGhva2Fuc2hvdVwgOwor5re75Yqg54mpID4gdGVua2Ftb25vXCA7CivkuIDliIbpioAgPiBpY2hpYnVnaW5cIDsKK+adpeims+iAhSA+IHJhaWthbnNoYVwgOwor57a6576F5pifID4ga2lyYWJvc2hpXCA7CivlsbHlsrPpg6ggPiBzYW5nYWt1YnVcIDsKK+eZuuWxleaApyA+IGhhdHRlbnNlaVwgOwor5LiA5YiG6YeRID4gaWNoaWJ1a2luXCA7CivljZTlrprmoYggPiBreW91dGVpYW5cIDsKK+azqOWwhOWZqCA+IGNodXVzaGFraVwgOwor5Y+45rOV5qipID4gc2hpaG91a2VuXCA7CivmraPmlLvms5UgPiBzZWlrb3Vob3VcIDsKK+aJi+aLjeWtkCA+IHRlYnlvdXNoaVwgOwor56S+5Lya6Z2iID4gc2hha2FpbWVuXCA7CivosaHnmq7nl4UgPiB6b3VoaWJ5b3VcIDsKK+emgeWPjeiogCA+IGtpbmhhbmdlblwgOwor54Sh5Y+M56qTID4gbXVzb3VtYWRvXCA7CivmmYLplpPlibIgPiBqaWthbndhcmlcIDsKK+eUqOW/g+ajkiA+IHlvdWppbmJvdVwgOwor5YaN5oSf5p+TID4gc2Fpa2Fuc2VuXCA7Civmr5voo73lk4EgPiBtb3VzZWloaW5cIDsKK+WMlueyp+S7oyA+IGtlc2hvdWRhaVwgOwor5qC857SN5bqrID4ga2FrdW5vdWtvXCA7Civnt4/ntKLlvJUgPiBzb3VzYWt1aW5cIDsKK+S6iOWvqeW7tyA+IHlvc2hpbnRlaVwgOwor6Iy25bGL6YWSID4gY2hheWF6YWtlXCA7Civlm5vliIblhoYgPiBzaGlidW4nJ2VuXCA7CivkvZfkvY/lsYUgPiB3YWJpenVtYWlcIDsKK+eJh+aJi+ahtiA+IGthdGF0ZW9rZVwgOwor5Ym15YiK5Y+3ID4gc291a2FuZ291XCA7Civlm5vliIblha0gPiBzaGlidXJva3VcIDsKK+mYsua9nOe2siA+IGJvdXNlbm1vdVwgOwor5ZCN5Yi65YikID4gbWVpc2hpYmFuXCA7CivmsrPnq6Xlt7sgPiBrYXBwYW1ha2lcIDsKK+WQkeWFieaApyA+IGtvdWtvdXNlaVwgOwor5Yuy5LiA562JID4ga3VuJydpdHRvdVwgOwor5Y+N54mp5bGLID4gdGFubW9ub3lhXCA7CivkupLorbLnmoQgPiBnb2pvdXRla2lcIDsKK+S4lueVjOeahCA+IHNla2FpdGVraVwgOwor5b6h6L+35oORID4gZ29tZWl3YWt1XCA7CivkuInpg6jkvZwgPiBzYW5idXNha3VcIDsKK+ato+mdouWbsyA+IHNob3VtZW56dVwgOwor6KGo5YW35birID4gaHlvdWd1c2hpXCA7CivkuI3pganku7sgPiBmdXRla2luaW5cIDsKK+e1jOS8geW6gSA+IGtlaWtpY2hvdVwgOwor6YGL5YuV6aCYID4gdW5kb3VyeW91XCA7CivlhYjoiKzmnaUgPiBzZW5wYW5yYWlcIDsKK+WumuWGoOipniA+IHRlaWthbnNoaVwgOwor6buE6YGT5YWJID4ga291ZG91a291XCA7CivmjqXlsL7ovp4gPiBzZXRzdWJpamlcIDsKK+awtOeEoeaciCA+IG1pbmFkenVraVwgOwor6aeQ5Zyo5ZOhID4gY2h1dXphaWluXCA7CivovLjlsL/nrqEgPiB5dW55b3VrYW5cIDsKK+WbvemYsuiyuyA+IGtva3Vib3VoaVwgOwor5L6N5b6T6ZW3ID4gamlqdXVjaG91XCA7Civmrrrpoqjmma8gPiBzYXBwdXVrZWlcIDsKK+S4reaUr+mCoyA+IG5ha2FzaGluYVwgOwor6Kqk5oy/5YWlID4gZ29zb3VueXV1XCA7CivmraPmlZnmjoggPiBzZWlreW91anVcIDsKK+S8keeBq+WxsSA+IGt5dXVrYXphblwgOwor5a2Q5a6I5q2MID4ga29tb3JpdXRhXCA7CivmsbrlrprnqL8gPiBrZXR0ZWlrb3VcIDsKK+mYsueBq+WjgSA+IGJvdWthaGVraVwgOwor5Y+w5rm+5Lq6ID4gdGFpd2FuamluXCA7Civml6Xnq6Dml5cgPiBuaXNzaG91a2lcIDsKK+mDqOmaiumVtyA+IGJ1dGFpY2hvdVwgOwor5b6h55yf5b2xID4gZ29zaGluJydlaVwgOwor5Yed5Zu654K5ID4gZ3lvdWtvdGVuXCA7CivmlK/lupfntrIgPiBzaGl0ZW5tb3VcIDsKK+aVsOihqOekuiA+IHN1dWh5b3VqaVwgOwor6aKo5ZCR6KiIID4gZnV1a291a2VpXCA7Civom43lhYnmnb8gPiBrZWlrb3ViYW5cIDsKK+aWsOiBnuiIlyA+IHNoaW5idW5ob1wgOwor6KW/5Y2X6KW/ID4gc2VpbmFuc2VpXCA7Civpgb/pm7fph50gPiBoaXJhaXNoaW5cIDsKK+eNheWtkOiIniA+IHNoaXNoaW1haVwgOwor5Lu75pyf5LitID4gbmlua2ljaHV1XCA7CivmlrnpnaLpmoogPiBob3VtZW50YWlcIDsKK+miqOmItOiNiSA+IGZ1dXJpbnNvdVwgOwor6Iqx6YeO6I+cID4gaGFuYXlhc2FpXCA7Civmm7Lni6zmpb0gPiBreW9rdWdvbWFcIDsKK+ecn+WQkeazlSA+IG1ha2tvdWhvdVwgOwor5ZWG6Ii55peXID4gc2hvdXNlbmtpXCA7CivnoJTkv67lk6EgPiBrZW5zaHV1aW5cIDsKK+ipleWIpOiomCA+IGh5b3ViYW5raVwgOwor5pmu6YCa5L6/ID4gZnV0c3V1YmluXCA7Civlia/nn6XkuosgPiBmdWt1Y2hpamlcIDsKK+avjembhuWboyA+IGJvc2h1dWRhblwgOwor5LiJ5Yag546LID4gc2Fua2FuJydvdVwgOwor5oGL5oSb6KazID4gcmVuJydhaWthblwgOwor5L216KGM57eaID4gaGVpa291c2VuXCA7CivlnLDlvbnmqKkgPiBjaGlla2lrZW5cIDsKK+aZrumAmuS6uiA+IGZ1dHN1dWppblwgOwor5YWI5bCO6ICFID4gc2VuZG91c2hhXCA7Civlho3ljZTorbAgPiBzYWlreW91a2lcIDsKK+aKlemZjeiAhSA+IHRvdWtvdXNoYVwgOwor5Luj6LWt6ImyID4gdGFpc2hhaXJvXCA7CivmjqXlsL7oqp4gPiBzZXRzdWJpZ29cIDsKK+WKh+S9nOWutiA+IGdla2lzYWtrYVwgOwor6YeN5oim6LuKID4ganV1c2Vuc2hhXCA7Civpn7Pmpb3pmoogPiBvbmdha3V0YWlcIDsKK+WGjeemgeatoiA+IHNhaWtpbnNoaVwgOwor54e76JK45YmkID4ga3Vuam91emFpXCA7CivmtIvoo4HluKsgPiB5b3VzYWlzaGlcIDsKK+ecn+ato+mdoiA+IG1hc2hvdW1lblwgOwor5pyI57WM5YmNID4gZ2Vra2VpbWFlXCA7CivpgYvli5Xph48gPiB1bmRvdXJ5b3VcIDsKK+S9juWxseW4ryA+IHRlaXphbnRhaVwgOwor5Yqx5oyv5ZmoID4gcmVpc2hpbmtpXCA7Civoi7Hpm4TnmoQgPiBlaXl1dXRla2lcIDsKK+iomOiAheW4rSA+IGtpc2hhc2VraVwgOwor5YGl5bq36ICFID4ga2Vua291c2hhXCA7CivogqXmuoDnl4cgPiBoaW1hbnNob3VcIDsKK+acgOWkp+WApCA+IHNhaWRhaWNoaVwgOwor6KiI55S75qGIID4ga2Vpa2FrdWFuXCA7Civoj6/ljrPlrpcgPiBrZWdvbnNodXVcIDsKK+S4u+imgeeCuSA+IHNodXlvdXRlblwgOwor5Luu5L2P5bGFID4ga2FyaXp1bWFpXCA7CivkvJrlk6HoqLwgPiBrYWlpbnNob3VcIDsKK+eyvuiWhOWFkCA+IHNlaWhha3VqaVwgOwor5oy/5YWl5ZuzID4gc291bnl1dXp1XCA7CivkuIHlubTogIUgPiB0ZWluZW5zaGFcIDsKK+ebo+afu+W9uSA+IGthbnNheWFrdVwgOwor6JaE5YyW57KnID4gdXN1Z2VzaG91XCA7Civlh7rli6TnsL8gPiBzaHVra2luYm9cIDsKK+S4reWkrue3miA+IGNodXVvdXNlblwgOwor5bGl5q205pu4ID4gcmlyZWtpc2hvXCA7CivppIrll6PlrZAgPiB5b3VzaGlzaGlcIDsKK+Wkp+a1t+WOnyA+IG9vdW5hYmFyYVwgOwor5L2O5L6h5qC8ID4gdGVpa2FrYWt1XCA7CivkuqTpmpvkuIogPiBrb3VzYWlqb3VcIDsKK+WPguiAg+WTgSA+IHNhbmtvdWhpblwgOwor56We57WM56eRID4gc2hpbmtlaWthXCA7CivlsI/kvZzovrIgPiBrb3Nha3Vub3VcIDsKK+engeaWh+abuCA+IHNoaWJ1bnNob1wgOwor5rG65a6a54mIID4ga2V0dGVpYmFuXCA7Civlv4PkuI3lhaggPiBzaGluZnV6ZW5cIDsKK+S5s+W5vOWFkCA+IG55dXV5b3VqaVwgOwor6KaP5YmH5pu4ID4ga2lzb2t1c2hvXCA7CivliqDpmaTlvI8gPiBrYWpvc2hpa2lcIDsKK+WPuOazleWumCA+IHNoaWhvdWthblwgOwor56m65a++5ZywID4ga3V1dGFpY2hpXCA7CivmraPoppbnnLwgPiBzZWlzaGlnYW5cIDsKK+aXqeaFtuaIpiA+IHNvdWtlaXNlblwgOwor5o6Y5YmK5qmfID4ga3Vzc2FrdWtpXCA7CivmnKrnorrlrpogPiBtaWtha3V0ZWlcIDsKK+mrmOaetuapiyA+IGtvdWtha3lvdVwgOwor5YCL5Yil5YyWID4ga29iZXRzdWthXCA7CivmjL/lhaXlj6UgPiBzb3VueXV1a3VcIDsKK+aUv+aoqeWFmiA+IHNlaWtlbnRvdVwgOwor5bCE5Yip5b+DID4gc2hhcmlzaGluXCA7Civnm6Plr5/ljLsgPiBrYW5zYXRzdWlcIDsKK+mBk+WMluaWuSA+IGRvdWtlZ2F0YVwgOwor5Y2K5LqM6YeNID4gaGFuJyduaWp1dVwgOwor56aB5rK755SjID4ga2luY2hpc2FuXCA7CivljZjoqp7pm4YgPiB0YW5nb3NodXVcIDsKK+eUqOawtOWcsCA+IHlvdXN1aWlrZVwgOwor6LuK6auY55+tID4gc2hha291dGFuXCA7CivmtojljJbohbogPiBzaG91a2FzZW5cIDsKK+i/kea1t+mtmiA+IGtpbmthaWd5b1wgOwor5o6S5rC05a2UID4gaGFpc3Vpa291XCA7CivmnKjph5HlnJ8gPiBtb2t1a2luZG9cIDsKK+aMgee2muaApyA+IGppem9rdXNlaVwgOwor5ZCN5bel5aSnID4gbWVpa291ZGFpXCA7CivmlK/phY3kurogPiBzaGloYWluaW5cIDsKK+W5ueS6i+mVtyA+IGthbmppY2hvdVwgOwor6ZW35rC06LevID4gY2hvdXN1aXJvXCA7CivlubPlhZrlk6EgPiBoaXJhdG91aW5cIDsKK+W+queSsOe3miA+IGp1bmthbnNlblwgOwor5LiL5YmL5LiKID4gZ2Vrb2t1am91XCA7CivkuIrlsaTpoqggPiBqb3Vzb3VmdXVcIDsKK+Wcp+W7tumLvCA+IGF0c3VlbmtvdVwgOwor6I+g6JaQ6I2JID4gaG91cmVuc291XCA7CivmupbmlZnlk6EgPiBqdW5reW91aW5cIDsKK+WHueecvOmPoSA+IG91Z2Fua3lvdVwgOwor54mp5L6h6auYID4gYnVra2FkYWthXCA7Civoqpjmi5DnvaogPiB5dXVrYWl6YWlcIDsKK+W+queSsOezuyA+IGp1bmthbmtlaVwgOwor5rS+55Sf55qEID4gaGFzZWl0ZWtpXCA7CivntKDlj43lv5wgPiBzb2hhbicnbm91XCA7CivlnKjpg7fogIUgPiB6YWlnb3VzaGFcIDsKK+WMl+a1t+mBkyA+IGhva2thaWRvdVwgOwor5p6X5qqO55eFID4gcmluZ29ieW91XCA7Civolqzkuovms5UgPiB5YWt1amlob3VcIDsKK+efreavm+eoriA+IHRhbm1vdXNodVwgOwor5qaC5b+16KuWID4gZ2FpbmVucm9uXCA7CivpgZPlvrPlrrYgPiBkb3V0b2t1a2FcIDsKK+WPguS4juWumCA+IHNhbicneW9rYW5cIDsKK+acgOe1guahiCA+IHNhaXNodXVhblwgOwor5LiW55WM5pawID4gc2VrYWlzaGluXCA7Civlj4LogIPkurogPiBzYW5rb3VuaW5cIDsKK+Wxi+WPsOmqqCA+IHlhdGFpYm9uZVwgOwor5aSn5q2T6L+OID4gZGFpa2FuZ2VpXCA7CivkuIrlsaTpmo4gPiBqb3Vzb3VrYWlcIDsKK+S4gOWIh+e1jCA+IGlzc2Fpa3lvdVwgOwor5YaN6YWN572uID4gc2FpaGFpY2hpXCA7CivogozopabooqIgPiBoYWRhanViYW5cIDsKK+WFreinkuW9oiA+IHJva2tha2tlaVwgOwor5paw55Sf5YWQID4gc2hpbnNlaWppXCA7CivlhYjkvY/ogIUgPiBzZW5qdXVzaGFcIDsKK+mGnOalreWppiA+IHNodWd5b3VmdVwgOwor6KOB5Yik5qipID4gc2FpYmFua2VuXCA7CivlpKfnpZ7lrq4gPiBkYWlqaW5ndXVcIDsKK+ato+aVmeWToSA+IHNlaWt5b3VpblwgOwor5oKq5oiv552AID4gaXRhenVyYWdpXCA7CivmmLzooYznga8gPiBoaXJ1YW5kb25cIDsKK+WcsOW5s+e3miA+IGNoaWhlaXNlblwgOwor6YWN6Zu757eaID4gaGFpZGVuc2VuXCA7Civnmb3poK3nv4EgPiBoYWt1dG91b3VcIDsKK+eZuuWwhOWPsCA+IGhhc3NoYWRhaVwgOwor5Li76Zmj5ZywID4gc2h1amluY2hpXCA7CivmhJ/mg7PmlocgPiBrYW5zb3VidW5cIDsKK+a2iOWMluezuyA+IHNob3VrYWtlaVwgOwor5Li76Kaz5oCnID4gc2h1a2Fuc2VpXCA7CivlpKfms5Xlu7cgPiBkYWlob3V0ZWlcIDsKK+acgOe1guaXpSA+IHNhaXNodXViaVwgOwor5rG65a6a5qipID4ga2V0dGVpa2VuXCA7CivlhY7lsI/lsYsgPiB1c2FnaWdveWFcIDsKK+WkmuelnuirliA+IHRhc2hpbnJvblwgOwor5b6M5Y2K55SfID4ga291aGFuc2VpXCA7CivlopfoqILniYggPiB6b3V0ZWliYW5cIDsKK+aJgOWcqOWcsCA+IHNob3phaWNoaVwgOwor54G95a6z5ZywID4gc2FpZ2FpY2hpXCA7CivmtojljJbnrqEgPiBzaG91a2FrYW5cIDsKK+W5tOS7o+mghiA+IG5lbmRhaWp1blwgOwor56We57WM54KOID4gc2hpbmtlaWVuXCA7CivlpYnku5XogIUgPiBob3VzaGlzaGFcIDsKK+WGjeWPl+a1uCA+IHNhaWp1c2hpblwgOwor5pON5qWt6LK7ID4gc291Z3lvdWhpXCA7CivkuozkurrliY0gPiBmdXRhcmltYWVcIDsKK+WvjOWjq+WjuiA+IGZ1aml0c3Vib1wgOwor55m+6LKo5bqXID4gaHlha2thdGVuXCA7CivmqKrmlq3luZUgPiBvdWRhbm1ha3VcIDsKK+S6jOS6uuWIhiA+IGZ1dGFyaWJ1blwgOwor57SN56iO6ICFID4gbm91emVpc2hhXCA7CivphbjmgKfntJkgPiBzYW5zZWlzaGlcIDsKK+W3puWPs+i7uCA+IHNheXV1amlrdVwgOwor5aSp5rC05qG2ID4gdGVuc3Vpb2tlXCA7CivlhazplovnirYgPiBrb3VrYWlqb3VcIDsKK+iytOmHkeWxniA+IGtpa2luem9rdVwgOwor5rOi576F6JycID4gaGFyYW1pdHN1XCA7Civni6nnjJ/mnJ8gPiBzaHVyeW91a2lcIDsKK+aWh+azleabuCA+IGJ1bnBvdXNob1wgOwor5Y2g6aCY5LiLID4gc2VucnlvdWthXCA7Civnh4PnhLzngokgPiBuZW5zaG91cm9cIDsKK+WPpOethuWutiA+IGtvaGl0c3VrYVwgOwor6Ziy6KGb5bqBID4gYm91ZWljaG91XCA7CivlpKfnpa3lj7ggPiBkYWlzYWlzaGlcIDsKK+mbm+e9jOeynyA+IGhpbmFnZXNoaVwgOwor5YWo5aSp5YCZID4gemVudGVua291XCA7CivotoXnn63ms6IgPiBjaG91dGFucGFcIDsKK+aUvuWwhOiDvSA+IGhvdXNoYW5vdVwgOwor5YmN56eR6ICFID4gemVua2Ftb25vXCA7Civplbfph47nnIwgPiBuYWdhbm9rZW5cIDsKK+mdkuWkp+WwhiA+IGFvZGFpc2hvdVwgOwor55+l5oG154axID4gY2hpZW5ldHN1XCA7CivljIXoo4XntJkgPiBob3Vzb3VzaGlcIDsKK+S8muWToeeroCA+IGthaWluc2hvdVwgOwor57Gz55Sj5ZywID4gYmVpc2FuY2hpXCA7Civlhavop5LlvaIgPiBoYWtrYWtrZWlcIDsKK+S6lOWkp+a0siA+IGdvZGFpc2h1dVwgOwor5paw5a2m5pyfID4gc2hpbmdha2tpXCA7CivphY3pm7vnm6QgPiBoYWlkZW5iYW5cIDsKK+iLseaWh+WtpiA+IGVpYnVuZ2FrdVwgOwor5a2Q5a6I5ZSEID4ga29tb3JpdXRhXCA7CivlvqHlhYTlvJ8gPiBnb2t5b3VkYWlcIDsKK+ijgeWIpOaJgCA+IHNhaWJhbnNob1wgOwor5Y+C6Zmi6YG4ID4gc2FuJydpbnNlblwgOwor6LuN5Lq66aKoID4gZ3VuamluZnV1XCA7CivnhKHlvpfngrkgPiBtdXRva3V0ZW5cIDsKK+irlueQhueahCA+IHJvbnJpdGVraVwgOwor5YqD5pyf55qEID4ga2Fra2l0ZWtpXCA7CivkuInnnIHloIIgPiBzYW5zZWlkb3VcIDsKK+iZmuW8seWFkCA+IGt5b2pha3VqaVwgOwor5b2T5LqL5Zu9ID4gdG91amlrb2t1XCA7Civoq5bkuonogIUgPiByb25zb3VzaGFcIDsKK+aUvuWwhOe3miA+IGhvdXNoYXNlblwgOwor5bSH5oud6ICFID4gc3V1aGFpc2hhXCA7CivlgaXlurfms5UgPiBrZW5rb3Vob3VcIDsKK+aAquaWh+abuCA+IGthaWJ1bnNob1wgOwor6YCu5o2V5q20ID4gdGFpaG9yZWtpXCA7CivnrYbpoK3ogIUgPiBoaXR0b3VzaGFcIDsKK+S5vueUn+WnnCA+IGthbnNob3VnYVwgOwor55Sf5q6L6ICFID4gc2VpemFuc2hhXCA7Civmt6HmsLTprZogPiB0YW5zdWlneW9cIDsKK+i0iOetlOWTgSA+IHpvdXRvdWhpblwgOwor5Lqk5o+b5omLID4ga291a2Fuc2h1XCA7Civom43lhYnkvZMgPiBrZWlrb3V0YWlcIDsKK+awt+eCueS4iyA+IGh5b3V0ZW5rYVwgOwor6KqY5ouQ54qvID4geXV1a2FpaGFuXCA7CivnhY7njonlrZAgPiBpcml0YW1hZ29cIDsKK+iIiOS/oeaJgCA+IGtvdXNoaW5qb1wgOwor55SY5ZGz5paZID4ga2FubWlyeW91XCA7CivoqabpqJPntJkgPiBzaGlrZW5zaGlcIDsKK+eGj+iSuOWJpCA+IGt1bmpvdXphaVwgOwor6IKJ6KWm6KKiID4gbmlrdWp1YmFuXCA7Civnm6PlrojkurogPiBrYW5zaHVuaW5cIDsKK+Wil+Wkp+WPtyA+IHpvdWRhaWdvdVwgOwor5ruR6LWw6LyqID4ga2Fzc291cmluXCA7Civlho3libXpgKAgPiBzYWlzb3V6b3VcIDsKK+ilv+a0i+WPsiA+IHNlaXlvdXNoaVwgOwor5oi457GN5rOVID4ga29zZWtpaG91XCA7CivojZLnianlsYsgPiBhcmFtb25veWFcIDsKK+S4reilv+mDqCA+IGNodXVzZWlidVwgOwor6Ieq5YuV55qEID4gamlkb3V0ZWtpXCA7CivlgJ/lrrbkurogPiBzaGFra2FuaW5cIDsKK+azleWtpumDqCA+IGhvdWdha3VidVwgOwor6LuN6LOH6YeRID4gZ3Vuc2hpa2luXCA7Civmlofms5XmgKcgPiBidW5wb3VzZWlcIDsKK+i+suWkq+eXhyA+IG5vdWZ1c2hvdVwgOwor5p2Q5paZ6LK7ID4gemFpcnlvdWhpXCA7CivlgqzmtpnpioMgPiBzYWlydWlqdXVcIDsKK+WkieaPm+WtkCA+IGhlbmthbnNoaVwgOwor5p2Q5pyo5bGLID4gemFpbW9rdXlhXCA7Civosqfnqq7ljJYgPiBoaW5reXV1a2FcIDsKK+aXqeWQiOeCuSA+IGhheWFnYXRlblwgOwor6IKl5rqA5oCnID4gaGltYW5zaG91XCA7Civou4rppqzos4MgPiBzaGFiYWNoaW5cIDsKK+ernOmojuWFtSA+IHJ5dXVraWhlaVwgOwor5Zyf5Y+w55+zID4gZG9kYWlpc2hpXCA7CivluLDntI3nmoQgPiBraW5vdXRla2lcIDsKK+ippumok+euoSA+IHNoaWtlbmthblwgOwor55S35a2Q6auYID4gZGFuc2hpa291XCA7CivlpKflj43lr74gPiBkYWloYW50YWlcIDsKK+mdnuWbveawkSA+IGhpa29rdW1pblwgOwor5bCP6LGG6bGSID4gYXp1a2ltYXN1XCA7CivojqLosYzosYYgPiBzYXlhZW5kb3VcIDsKK+S4oeabv+apnyA+IHJ5b3VnYWVraVwgOwor57a/54Gr6JasID4gbWVua2F5YWt1XCA7CivkurrmsJHou40gPiBqaW5taW5ndW5cIDsKK+asoOWLpOiAhSA+IGtla2tpbnNoYVwgOwor5bCP5L2c57GzID4ga29zYWt1bWFpXCA7Civms6Xmnb/lsqkgPiBkZWliYW5nYW5cIDsKK+aTrOmdqee0mSA+IGdpa2FrdXNoaVwgOwor6LK06YeN5ZOBID4ga2ljaG91aGluXCA7CivngavlsbHnpKsgPiBrYXphbnJla2lcIDsKK+mhlOWGmeecnyA+IGthb2phc2hpblwgOwor5YWx5ryU6ICFID4ga3lvdWVuc2hhXCA7CivmlZHorbfnj60gPiBreXV1Z29oYW5cIDsKK+WGjeW+queSsCA+IHNhaWp1bmthblwgOwor6I275rGf56+AID4gb2dpZWJ1c2hpXCA7Civpm4blhYnlmaggPiBzaHV1a291a2lcIDsKK+S4gOmDqOWIhiA+IGljaGlidWJ1blwgOwor6KOF55Sy6LuKID4gc291a291c2hhXCA7CivmlrDkuJbntIAgPiBzaGluc2Vpa2lcIDsKK+ijgeWIpOWumCA+IHNhaWJhbmthblwgOwor5Ye65Yuk5pelID4gc2h1a2tpbmJpXCA7CivpgIHkv6HmqZ8gPiBzb3VzaGlua2lcIDsKK+mbkeWxheWcsCA+IHpha2t5b2NoaVwgOwor6Iux5pWw5Zu9ID4gZWlzdXVrb2t1XCA7Civkv53nrqHmlpkgPiBob2thbnJ5b3VcIDsKK+WNiuiytOefsyA+IGhhbmtpc2VraVwgOwor6LuN55So5qmfID4gZ3VuJyd5b3VraVwgOwor6JmO6JC956ybID4gbW9nYXJpYnVlXCA7CivnlJ/pgoTogIUgPiBzZWlrYW5zaGFcIDsKK+aHh+irh+S8miA+IGtvbmRhbmthaVwgOwor5pyq5YWs6KGoID4gbWlrb3VoeW91XCA7Civopb/mtIvkurogPiBzZWl5b3VqaW5cIDsKK+eUsOiIjuiAhSA+IGluYWthbW9ub1wgOwor5raI5YyW5rayID4gc2hvdWthZWtpXCA7CivlgaXlurfmlrkgPiBrZW5rb3Vob3VcIDsKK+eptOWxheS6uiA+IGtla2t5b2ppblwgOwor5aao5qWt5ZOhID4gYm91Z3lvdWluXCA7CivpoqjlkYLmlbcgPiBmdXJvc2hpa2lcIDsKK+S9leabnOaXpSA+IG5hbicneW91YmlcIDsKK+itpuaIkue3miA+IGtlaWthaXNlblwgOwor5Lqk5o+b5ayiID4ga291a2Fuam91XCA7CivlpKfpgZPoirggPiBkYWlkb3VnZWlcIDsKK+WBnOatoue3miA+IHRlaXNoaXNlblwgOwor5YuJ5by35a62ID4gYmVua3lvdWthXCA7CivmtarmvKvnmoQgPiByb21hbnRla2lcIDsKK+WLp+S4lue4kiA+IGthbnpleW9yaVwgOwor56u557Sw5belID4gdGFrZXphaWt1XCA7CivnlKPljbXlj6MgPiBzYW5yYW5rb3VcIDsKK+aEn+WLleipniA+IGthbmRvdXNoaVwgOwor5rC05Zyn5qmfID4gc3VpYXRzdWtpXCA7Civpn7Pmpb3npa0gPiBvbmdha3VzYWlcIDsKK+S6uuaDheacrCA+IG5pbmpvdWJvblwgOwor55qH6ZyK5q6/ID4ga291cmVpZGVuXCA7Civkvb/lkb3ogIUgPiBzaGltZWlzaGFcIDsKK+S7o+eUqOWTgSA+IGRhaXlvdWhpblwgOwor6JGJ6I+c6aGeID4geW91c2FpcnVpXCA7CivlhpnnnJ/mqZ8gPiBzaGFzaGlua2lcIDsKK+eUt+S8iumBlCA+IG90b2tvZGF0ZVwgOwor5YW156uZ57eaID4gaGVpdGFuc2VuXCA7CivluK/pm7vkvZMgPiB0YWlkZW50YWlcIDsKK+aWh+WMlueahCA+IGJ1bmthdGVraVwgOwor5pyq55m66KGoID4gbWloYXBweW91XCA7CivlhYjkvY/msJEgPiBzZW5qdXVtaW5cIDsKK+mAlOS4iuWbvSA+IHRvam91a29rdVwgOwor5Y2K6Z+z6ZqOID4gaGFuJydvbmthaVwgOwor55m95pyo5bGLID4gc2hpcm9raXlhXCA7Civku5Xmp5jmm7ggPiBzaGl5b3VzaG9cIDsKK+awkeS6i+eahCA+IG1pbmppdGVraVwgOwor5oiQ5bGk5ZyPID4gc2Vpc291a2VuXCA7CivokrjmsJflnKcgPiBqb3VraWF0c3VcIDsKK+S4oeabv+aJgCA+IHJ5b3VnYWVqb1wgOwor5b6M5Y2K5oimID4ga291aGFuc2VuXCA7Civlub3lr4LlkbMgPiB5dXVqYWt1bWlcIDsKK+W4neeOi+WtpiA+IHRlaW91Z2FrdVwgOwor6LKv5rC05rGgID4gY2hvc3VpY2hpXCA7CivmlrDkuJbnlYwgPiBzaGluc2VrYWlcIDsKK+WRveS7pOazlSA+IG1laXJlaWhvdVwgOwor54++5YOP5rayID4gZ2Vuem91ZWtpXCA7CivoprPopqfou4ogPiBrYW5yYW5zaGFcIDsKK+S8muekvuiRrCA+IGthaXNoYXNvdVwgOwor56aB6YWS5rOVID4ga2luc2h1aG91XCA7CivohLPohpzngo4gPiBub3VtYWt1ZW5cIDsKK+S6lOWkp+W3niA+IGdvZGFpc2h1dVwgOwor5paH6YOo55yBID4gbW9uYnVzaG91XCA7Civou43kuovpgJogPiBndW5qaXRzdXVcIDsKK+iEs+iFq+eYjSA+IG5vdXNodXlvdVwgOwor5LiW55WM5LiAID4gc2VrYWlpY2hpXCA7Civlho3liIbphY0gPiBzYWlidW5wYWlcIDsKK+aOm+W4g+WboyA+IGtha2VidXRvblwgOwor5aSW5rSL6Ii5ID4gZ2FpeW91c2VuXCA7CivntYTogbflm7MgPiBzb3Nob2t1enVcIDsKK+S6pOaPm+WTgSA+IGtvdWthbmhpblwgOwor54Gr6aOf6bOlID4gaGlrdWlkb3JpXCA7Civosq/msLTmp70gPiBjaG9zdWlzb3VcIDsKK+a1t+awtOmtmiA+IGthaXN1aWd5b1wgOwor57K+6YCy5pelID4gc2hvdWppbmJpXCA7CivkuInoibLml5cgPiBzYW5zaG9ra2lcIDsKK+mAg+S6oeiAhSA+IHRvdWJvdXNoYVwgOwor6YGT5YW3566xID4gZG91Z3ViYWtvXCA7Civlh7rlu7fml6UgPiBzaHV0dGVpYmlcIDsKK+eUu+Wtpue0mSA+IGdhZ2FrdXNoaVwgOwor6LKv6JS15omAID4gY2hvem91c2hvXCA7CivmnbHmtbfpgZMgPiB0b3VrYWlkb3VcIDsKK+S6pOaPm+WPsCA+IGtvdWthbmRhaVwgOwor5oim5pmC5LitID4gc2VuamljaHV1XCA7Civmt7fliIbmlbAgPiBrb25idW5zdXVcIDsKK+eUn+efs+eBsCA+IHNlaXNla2thaVwgOwor5LiN5qSc5p2fID4gZnVrZW5zb2t1XCA7CivlsI/mnb7oj5wgPiBrb21hdHN1bmFcIDsKK+iIn+Wkp+W3pSA+IGZ1bmFkYWlrdVwgOwor6LSI5ZGI6ICFID4gem91dGVpc2hhXCA7CivpoZ7mpoLlv7UgPiBydWlnYWluZW5cIDsKK+S7u+WkqeWggiA+IG5pbnRlbmRvdVwgOwor5Y2X5pa555SjID4gbmFucG91c2FuXCA7CivntZDntI3ph5EgPiB5dWlub3VraW5cIDsKK+WkquWIgOetiyA+IHRhY2hpc3VqaVwgOwor54af5a2X6KiTID4ganVrdWppa3VuXCA7Civlo7DmmI7mm7ggPiBzZWltZWlzaG9cIDsKK+WVj+mhjOeCuSA+IG1vbmRhaXRlblwgOwor5YiG5bel5aC0ID4gYnVua291am91XCA7CivlrprlubTliLYgPiB0ZWluZW5zZWlcIDsKK+WcsOWFg+e0mSA+IGppbW90b3NoaVwgOwor6aCQ6KiX6YeRID4geW90YWt1a2luXCA7CivpmLLnqbrnoLIgPiBib3VrdXVob3VcIDsKK+mdmeWcp+avlCA+IHNlaWF0c3VoaVwgOwor5Zue6aGn6YyyID4ga2Fpa29yb2t1XCA7CivkuKHmm7/lsYsgPiByeW91Z2FleWFcIDsKK+S6uuawl+iAhSA+IG5pbmtpbW9ub1wgOwor5LiN6Imv5ZOBID4gZnVyeW91aGluXCA7CivlsI/kvr/miYAgPiBzaG91YmVuam9cIDsKK+W+queSsOaApyA+IGp1bmthbnNlaVwgOwor5ZWG55So5YyWID4gc2hvdXlvdWthXCA7CivkuqTmj5vlhoYgPiBrb3VrYW4nJ2VuXCA7CivoqabpqJPms5UgPiBzaGlrZW5ob3VcIDsKK+WtpuWckuelrSA+IGdha3VlbnNhaVwgOwor5oSf5q2O6KmeID4ga2FudGFuc2hpXCA7CivnrKzlha3mhJ8gPiBkYWlyb2trYW5cIDsKK+iyp+awkeihlyA+IGhpbm1pbmdhaVwgOwor5ZG95Luk5pu4ID4gbWVpcmVpc2hvXCA7CivljYrlsI7kvZMgPiBoYW5kb3V0YWlcIDsKK+WFteWZqOW7oCA+IGhlaWtpc2hvdVwgOwor6KOB5Yik5LiKID4gc2FpYmFuam91XCA7Civlo7LmmKXlqaYgPiBiYWlzaHVucHVcIDsKK+S4i+WFi+S4iiA+IGdla29rdWpvdVwgOwor6YWN6Zu75omAID4gaGFpZGVuc2hvXCA7CivnpL7kuqTnlYwgPiBzaGFrb3VrYWlcIDsKK+WEquWLneaXlyA+IHl1dXNob3VraVwgOwor5omL5ZOB5birID4gdGVqaW5hc2hpXCA7Civpq4Tohpzngo4gPiB6dWltYWt1ZW5cIDsKK+mbqOaUr+W6piA+IGFtYWppdGFrdVwgOwor5L+u6YGT6ZmiID4gc2h1dWRvdWluXCA7Civmtbfom4fluqcgPiB1bWloZWJpemFcIDsKK+WRveS7pOaWhyA+IG1laXJlaWJ1blwgOwor5p2x5rSL6aKoID4gdG91eW91ZnV1XCA7CivlvJ/mga/lrZAgPiBvdG9tdXN1a29cIDsKK+S6lOWkp+WbvSA+IGdvZGFpa29rdVwgOwor5o6l6aqo5Yy7ID4gc2Vra290c3VpXCA7CivmnJvpgaDpj6EgPiBib3Vlbmt5b3VcIDsKK+aihembqOepuiA+IHRzdXl1em9yYVwgOwor5bel5ZOh5a+uID4ga291aW5yeW91XCA7CivnhKHpgYrnl4UgPiBtdXl1dWJ5b3VcIDsKK+Wbvemam+WMliA+IGtva3VzYWlrYVwgOwor6ama55Ww55qEID4ga3lvdWl0ZWtpXCA7CivplqLmnbHlvIEgPiBrYW50b3ViZW5cIDsKK+ikh+WQiOiqniA+IGZ1a3Vnb3Vnb1wgOwor5byY5riI5LyaID4ga291c2Fpa2FpXCA7Civoh7Pov5HlvL4gPiBzaGlraW5kYW5cIDsKK+acrOW5tOW6piA+IGhvbicnbmVuZG9cIDsKK+aVkeitt+aJgCA+IGt5dXVnb3Nob1wgOwor5ZGR5rCX6ICFID4gbm9ua2ltb25vXCA7CivlsI/kvZzmqKkgPiBrb3Nha3VrZW5cIDsKK+S7o+eQhuavjSA+IGRhaXJpaGFoYVwgOwor5YiG55WM57eaID4gYnVua2Fpc2VuXCA7Civnq6/looPmnJ8gPiBoYXpha2Fpa2lcIDsKK+WJjeOAheWbniA+IHplbnplbmthaVwgOwor6Kqe5rqQ5a2mID4gZ29nZW5nYWt1XCA7Civlv4Ppm7vlm7MgPiBzaGluZGVuenVcIDsKK+WBpeW6t+WcsCA+IGtlbmtvdWNoaVwgOwor5rCP5a2Q5pytID4gdWppa29mdWRhXCA7Civoq7jllY/poYwgPiBzaG9tb25kYWlcIDsKK+WPo+WUh+acnyA+IGtvdXNoaW5raVwgOwor5bCG5qOL55ukID4gc2hvdWdpYmFuXCA7CivnjYXlrZDllJAgPiBzaGlzaGl0b3VcIDsKK+W5s+S/oeW+kiA+IGhlaXNoaW50b1wgOwor5aSn5rCX5ZynID4gdGFpa2lhdHN1XCA7CivlsIbou43lrrYgPiBzaG91Z3Vua2VcIDsKK+WNg+S7o+e0mSA+IGNoaXlvZ2FtaVwgOwor5Li75oim6KuWID4gc2h1c2Vucm9uXCA7CivliqPnrYnnlJ8gPiByZXR0b3VzZWlcIDsKK+aWsOWtl+S9kyA+IHNoaW5qaXRhaVwgOwor57SN5ZOB5pu4ID4gbm91aGluc2hvXCA7CivnmoflpKrlrZAgPiBrb3V0YWlzaGlcIDsKK+mokuaTvue9qiA+IHNvdWpvdXphaVwgOwor5Y2K5a6Y5aCxID4gaGFua2FucG91XCA7CivlkIzkvLTogIUgPiBkb3VoYW5zaGFcIDsKK+a1t+m8oOadvyA+IG5hbWFrb2JhblwgOwor5YeG5aOr5a6YID4ganVuc2hpa2FuXCA7Civlrp/pqJPogIUgPiBqaWtrZW5zaGFcIDsKK+S7o+eQhualrSA+IGRhaXJpZ3lvdVwgOwor5LiA5qyh5YWDID4gaWNoaWppZ2VuXCA7CivnlKjnm4rmqKkgPiB5b3Vla2lrZW5cIDsKK+S4iuiFleetiyA+IGpvdXdhbmtpblwgOwor5Y+C5pS/5qipID4gc2Fuc2Vpa2VuXCA7Civlt6HnpLzogIUgPiBqdW5yZWlzaGFcIDsKK+Wun+mok+e+pCA+IGppa2tlbmd1blwgOwor56m65pmv5rCXID4ga2FyYWdlaWtpXCA7CivlhpnnnJ/lrrYgPiBzaGFzaGlua2FcIDsKK+i7iuakheWtkCA+IGt1cnVtYWlzdVwgOwor5o+u5q+r5paZID4ga2lnb3VyeW91XCA7CivorablkYrpn7MgPiBrZWlrb2t1b25cIDsKK+aVmeaOiOmZoyA+IGt5b3VqdWppblwgOwor5Yid5LiD5pelID4gc2hvbmFub2thXCA7Civlronlv4PmhJ8gPiBhbnNoaW5rYW5cIDsKK+Wkp+WFpemBkyA+IG9vbnl1dWRvdVwgOwor56S+5Lya5oKqID4gc2hha2FpYWt1XCA7CivkuLvoo73lk4EgPiBzaHVzZWloaW5cIDsKK+eEoeawl+WKmyA+IG11a2lyeW9rdVwgOwor56S+5Lya5oCnID4gc2hha2Fpc2VpXCA7CivohLHohILntr8gPiBkYXNzaGltZW5cIDsKK+awl+ixoeWPsCA+IGtpc2hvdWRhaVwgOwor5ZG95Luk5b2iID4gbWVpcmVpa2VpXCA7Civoq5bnkIblraYgPiByb25yaWdha3VcIDsKK+Wun+S9k+irliA+IGppdHRhaXJvblwgOwor5bCP5Lya5rS+ID4gc2hvdWthaWhhXCA7CivlkIzlgKTmgKcgPiBkb3VjaGlzZWlcIDsKK+mFuOaAp+WyqSA+IHNhbnNlaWdhblwgOwor5LiL6Laz55WqID4gZ2Vzb2t1YmFuXCA7CivmlqXlgJnlhbUgPiBzZWtrb3VoZWlcIDsKK+WlveW9semfvyA+IGtvdWVpa3lvdVwgOwor6YKv6YSy5birID4ga2FudGFuc2hpXCA7CivnlJ/ljJblraYgPiBzZWlrYWdha3VcIDsKK+ippuS5l+i7iiA+IHNoaWpvdXNoYVwgOwor6Kaz6Kan6ICFID4ga2FucmFuc2hhXCA7CivlpYnos4DluLMgPiBob3VnYWNob3VcIDsKK+Wcp+WItueahCA+IGFzc2VpdGVraVwgOwor54Kt6YW457SZID4gdGFuc2Fuc2hpXCA7Civlho3lvpPlvJ8gPiBzYWlqdXV0ZWlcIDsKK+S9meioiOiAhSA+IHlva2VpbW9ub1wgOwor5LiN5a+d55WqID4gZnVzaGluYmFuXCA7CivnkIblsYjlsYsgPiByaWt1dHN1eWFcIDsKK+S/neeuoeS6uiA+IGhva2FuJyduaW5cIDsKK+WEquiJr+mmrCA+IHl1dXJ5b3ViYVwgOwor6YGL6Ly46YePID4gdW4nJ3l1cnlvdVwgOwor5aSq5bmz5rSLID4gdGFpaGVpeW91XCA7Civosq/olLXlk4EgPiBjaG96b3VoaW5cIDsKK+WNmOezlumhniA+IHRhbnRvdXJ1aVwgOwor6IGa5qW956ysID4ganVyYWt1ZGFpXCA7CivnlJ/ljYrlj68gPiBuYW1haGFua2FcIDsKK+WNlOitsOaJgCA+IGt5b3VnaXNob1wgOwor5LuK5bm05bqmID4ga29uJyduZW5kb1wgOwor5YeG5pWZ5ZOhID4ganVua3lvdWluXCA7CivnpL7kvJrlsaQgPiBzaGFrYWlzb3VcIDsKK+WBpeW6t+S9kyA+IGtlbmtvdXRhaVwgOwor5oCd5pil5pyfID4gc2hpc2h1bmtpXCA7CivmlL7lsITmgKcgPiBob3VzaGFzZWlcIDsKK+iZq+WqkuiKsSA+IGNodXViYWlrYVwgOwor5YaZ55yf5ZmoID4gc2hhc2hpbmtpXCA7CivlhoXlkJHmgKcgPiBuYWlrb3VzZWlcIDsKK+aUueWul+iAhSA+IGthaXNvdXNoYVwgOwor5YSq5b6F5Yi4ID4geXV1dGFpa2VuXCA7Civlm5vkurrntYQgPiB5b25pbmd1bWlcIDsKK+mAgOWssOeahCA+IHRhaWVpdGVraVwgOwor5ZaE5b6M562WID4gemVuZ29zYWt1XCA7CivliqnmiYvluK0gPiBqb3NodXNla2lcIDsKK+eBq+acqOmHkSA+IGthbW9rdWtpblwgOwor5rCP5a2Q5bizID4gdWppa29jaG91XCA7CivnmoflpKrlkI4gPiBrb3V0YWlnb3VcIDsKK+eJueaUu+maiiA+IHRva2tvdXRhaVwgOwor6YG66KiA6ICFID4geXVpZ29uc2hhXCA7Civpg7flnJ/lj7IgPiBreW91ZG9zaGlcIDsKK+S7mOWxnuagoSA+IGZ1em9rdWtvdVwgOwor57Wx5rK76ICFID4gdG91Y2hpc2hhXCA7CivlkI3kurroirggPiBtZWlqaW5nZWlcIDsKK+WHhOaWh+WPpSA+IHN1Z29tb25rdVwgOwor5oim54G96ICFID4gc2Vuc2Fpc2hhXCA7CivoqabkvZzmqZ8gPiBzaGlzYWt1a2lcIDsKK+m7hOaer+iMtiA+IGtpZ2FyYWNoYVwgOwor6IOD6IW46JasID4gaWNob3V5YWt1XCA7Civpmb3pm7vlrZAgPiB5b3VkZW5zaGlcIDsKK+aWh+auiuanmCA+IG1vbmp1c2FtYVwgOwor5LuY5bGe5pu4ID4gZnV6b2t1c2hvXCA7CivoqI7oq5bogIUgPiB0b3Vyb25zaGFcIDsKK+Wkmuaxl+eXhyA+IHRha2Fuc2hvdVwgOwor5oqV5omL6ZmjID4gdG91c2h1amluXCA7CivkuK3ntpnmiYAgPiBjaHV1a2Vpam9cIDsKK+agueaLoOWcsCA+IGtvbmt5b2NoaVwgOwor5rOV5Lq656iOID4gaG91amluemVpXCA7CivlnLDlhYPmsJEgPiBqaW1vdG9taW5cIDsKK+W5tOacn+iAhSA+IG5lbmtpbW9ub1wgOwor6Z+z5qW95oCnID4gb25nYWt1c2VpXCA7CivooqvlkYrkurogPiBoaWtva3VuaW5cIDsKK+aWh+WMluW6gSA+IGJ1bmthY2hvdVwgOwor5YGP5ZCR5p2/ID4gaGVua291YmFuXCA7Civog4zku7vnvaogPiBoYWluaW56YWlcIDsKK+WCjeims+iAhSA+IGJvdWthbnNoYVwgOwor5pif54q25L2TID4gc2Vpam91dGFpXCA7CivmtojljJbliaQgPiBzaG91a2F6YWlcIDsKK+asp+W3nueJiCA+IG91c2h1dWJhblwgOwor5bCP6LGG57KlID4gYXp1a2lnYXl1XCA7Civns7vlm7PlraYgPiBrZWl6dWdha3VcIDsKK+ippumok+WumCA+IHNoaWtlbmthblwgOwor55+z5qWg6IqxID4gc2hha3VuYWdlXCA7Civmm7jnsKHnrosgPiBzaG9rYW5zZW5cIDsKK+WGjemFjeWIhiA+IHNhaWhhaWJ1blwgOwor5Y2U6K2w5a6YID4ga3lvdWdpa2FuXCA7CivlkIzpoZ7poIUgPiBkb3VydWlrb3VcIDsKK+iHqui7oui7uCA+IGppdGVuamlrdVwgOwor5LiK55Sy5p2/ID4gam91a2FucGFuXCA7CivlhajlnLDmlrkgPiB6ZW5jaGlob3VcIDsKK+S8muekvuazlSA+IGthaXNoYWhvdVwgOwor5aWJ5LuV5ZOBID4gaG91c2hpaGluXCA7CivmiKrmi7PpgZMgPiBzZWtrZW5kb3VcIDsKK+S7leiInuWxiyA+IHNoaW1vdGF5YVwgOwor5oqY6KG35qGIID4gc2V0Y2h1dWFuXCA7CivoiKrnqbrpmoogPiBrb3VrdXV0YWlcIDsKK+idpuifh+WPoyA+IGdhbWFndWNoaVwgOwor56aB5q2i5rOVID4ga2luc2hpaG91XCA7CivpgZPlhbfmlrkgPiBkb3VndWthdGFcIDsKK+aXpumCo+iKuCA+IGRhbicnbmFnZWlcIDsKK+aJtumkiuaWmSA+IGZ1eW91cnlvdVwgOwor5LiN5L+h5b+DID4gZnVzaGluamluXCA7CivlubPlronmnJ0gPiBoZWlhbmNob3VcIDsKK+WGhemHjuW4rSA+IG5haXlhc2VraVwgOwor5Zug5p6c5b6LID4gaW5nYXJpdHN1XCA7Civou73mvJTliocgPiBrZWllbmdla2lcIDsKK+adv+mHkeW3pSA+IGJhbmtpbmtvdVwgOwor5a6a5L6h6KGoID4gdGVpa2FoeW91XCA7Civnr6Tlv5flrrYgPiB0b2t1c2hpa2FcIDsKK+ippumok+WgtCA+IHNoaWtlbmpvdVwgOwor5peF6KGM6ICFID4gcnlva291c2hhXCA7Civmra/pvabngo4gPiBzaGlnaW4nJ2VuXCA7Civom7jlnYrkuLsgPiB0YWtvYm91enVcIDsKK+WPguaUv+WumCA+IHNhbnNlaWthblwgOwor6LuN5LqL55qEID4gZ3Vuaml0ZWtpXCA7Civlj6Tpiq3lraYgPiBrb3Nlbmdha3VcIDsKK+i7jeWumOaGsiA+IGd1bmthbmtlblwgOwor6Zai5pWw6KuWID4ga2Fuc3V1cm9uXCA7CivmsrvnmYLosrsgPiBjaGlyeW91aGlcIDsKK+adv+mHkeWxiyA+IGJhbmtpbicneWFcIDsKK+aTjei7iuWgtCA+IHNvdXNoYWpvdVwgOwor5oqV6J6N6LOHID4gdG91eXV1c2hpXCA7Civpnanlkb3mrYwgPiBrYWt1bWVpa2FcIDsKK+ekvuS6pOaApyA+IHNoYWtvdXNlaVwgOwor5pOs54iG5by+ID4gZ2liYWt1ZGFuXCA7Civnq7nonLvom4kgPiB0YWtldG9uYm9cIDsKK+i2heWFmua0viA+IGNob3V0b3VoYVwgOwor5ZWP6aGM5aSWID4gbW9uZGFpZ2FpXCA7CivkuIDoiKznmoQgPiBpcHBhbnRla2lcIDsKK+izh+acrOmHkSA+IHNoaWhvbmtpblwgOwor55S35a2Q55SoID4gZGFuc2hpeW91XCA7Civlr77nlJ/okYkgPiB0YWlzZWl5b3VcIDsKK+ekvuS8muWFmiA+IHNoYWthaXRvdVwgOwor5Y6t5LiW55qEID4gZW5zZWl0ZWtpXCA7CivoqJPnt7TnlJ8gPiBrdW5yZW5zZWlcIDsKK+i0iOWRiOacrCA+IHpvdXRlaWJvblwgOwor5aSi6YGK55eFID4gbXV5dXVieW91XCA7Civlrrbml4/ms5UgPiBrYXpva3Vob3VcIDsKK+S6uuawl+agqiA+IG5pbmtpa2FidVwgOwor6Kqt5b6M5oSfID4gZG9rdWdva2FuXCA7CivljZjntLDog54gPiB0YW5zYWlib3VcIDsKK+mztOemvemhniA+IG1laWtpbnJ1aVwgOwor5YaF6YOo55qEID4gbmFpYnV0ZWtpXCA7Civnt7TlhbXloLQgPiByZW5wZWlqb3VcIDsKK+Wkp+WJjeaPkCA+IGRhaXplbnRlaVwgOwor5YaN5b6T5YWEID4gc2FpanV1a2VpXCA7Civlj6/li5XmqYsgPiBrYWRvdWt5b3VcIDsKK+eUu+acn+eahCA+IGtha2tpdGVraVwgOwor6Z+z5qW95aCCID4gb25nYWt1ZG91XCA7CivojZLpmqDlhYMgPiBzYXlhaW5nZW5cIDsKK+a0l+ekvOWQjSA+IHNlbnJlaW1laVwgOwor54++5qWt5ZOhID4gZ2VuZ3lvdWluXCA7CivkuIDlt6XlpKsgPiBoaXRva3VmdXVcIDsKK+iGneWwj+WDpyA+IGhpemFrb3pvdVwgOwor5L2c6Kme5a62ID4gc2FrdXNoaWthXCA7CivkvZzngrrnmoQgPiBzYWt1aXRla2lcIDsKK+Wwj+Wuh+WumSA+IHNob3V1Y2h1dVwgOwor6aKo5rC05a6zID4gZnV1c3VpZ2FpXCA7CivljZjmlbDlvaIgPiB0YW5zdXVrZWlcIDsKK+awtOa6tua2siA+IHN1aXlvdWVraVwgOwor5aSn6LuK6LyqID4gZGFpc2hhcmluXCA7CivmlLnlrprniYggPiBrYWl0ZWloYW5cIDsKK+ekvuS8muS6uiA+IHNoYWthaWppblwgOwor5oKq5b2x6Z+/ID4gYWt1ZWlreW91XCA7Civopb/pg6jliocgPiBzZWlidWdla2lcIDsKK+mbkeiyqOWVhiA+IHpha2thc2hvdVwgOwor5Yqj562J5oSfID4gcmV0dG91a2FuXCA7CivpgI/mmI7mgKcgPiB0b3VtZWlzZWlcIDsKK+iLpeWkq+WppiA+IHdha2FmdXVmdVwgOwor54++5Luj6KmpID4gZ2VuZGFpc2hpXCA7CivpmbDpmb3pgZMgPiBvbm15b3Vkb3VcIDsKK+S8keaGqeaJgCA+IGt5dXVrZWlqb1wgOwor6YWN57Wm5omAID4gaGFpa3l1dWpvXCA7Civoo4XouqvlhbcgPiBzb3VzaGluZ3VcIDsKK+eEoeasoOW4rSA+IG11a2Vzc2VraVwgOwor6Ieq5Yi25b+DID4gamlzZWlzaGluXCA7Civlia/kvZznlKggPiBmdWt1c2F5b3VcIDsKK+WGjemBuOaMmSA+IHNhaXNlbmt5b1wgOwor6Zqg5Yy/6ICFID4gaW50b2t1c2hhXCA7CivlkIzkurrnqK4gPiBkb3VqaW5zaHVcIDsKK+mBi+mAgealrSA+IHVuc291Z3lvdVwgOwor5YaF5YuZ55yBID4gbmFpbXVzaG91XCA7Civngq3phbjmsLQgPiB0YW5zYW5zdWlcIDsKK+WLpOeOi+WutiA+IGtpbicnbm91a2FcIDsKK+ihm+eUn+eahCA+IGVpc2VpdGVraVwgOwor56u25oqA6ICFID4ga3lvdWdpc2hhXCA7Civlho3nmbrooYwgPiBzYWloYWtrb3VcIDsKK+mBuuiogOeKtiA+IHl1aWdvbmpvdVwgOwor54K555y85rC0ID4gdGVuZ2Fuc3VpXCA7Civou73lkIjph5EgPiBrZWlnb3VraW5cIDsKK+S4gOeZuuWxiyA+IGlwcGF0c3V5YVwgOwor5YWo6KO95ZOBID4gemVuc2VpaGluXCA7Civlv5zlj6zogIUgPiBvdXNob3VzaGFcIDsKK+WPpOWNsOe0mSA+IGZ1cnVpbnNoaVwgOwor6LOH5pys6LKhID4gc2hpaG9uemFpXCA7Civlm57poafnmoQgPiBrYWlrb3Rla2lcIDsKK+S6jOimquetiSA+IG5pc2hpbnRvdVwgOwor5Lqk5oim5qipID4ga291c2Vua2VuXCA7CivluoPloLHoqowgPiBrb3Vob3VzaGlcIDsKK+S+i+W5tOelrSA+IHJlaW5lbnNhaVwgOwor5LqI6Ziy6JasID4geW9ib3V5YWt1XCA7Civlkozlo7DlraYgPiB3YXNlaWdha3VcIDsKK+mfs+alveWPsiA+IG9uZ2FrdXNoaVwgOwor6JCO57iu6IWOID4gaXNodWt1amluXCA7Civnm5fogbTlmaggPiB0b3VjaG91a2lcIDsKK+S6iOe0hOmHkSA+IHlveWFrdWtpblwgOwor5pil5aC05omAID4gaGFydWJhc2hvXCA7Civnp5/lurjoqr8gPiBzb3lvdWNob3VcIDsKK+WOn+WtkOirliA+IGdlbnNoaXJvblwgOwor54Sh5qmf54mpID4gbXVraWJ1dHN1XCA7CivmsbrorbDmoYggPiBrZXRzdWdpYW5cIDsKK+WJteS9nOWutiA+IHNvdXNha3VrYVwgOwor54ib54af5pyfID4gcmFuanVrdWtpXCA7CivkuK3plpPmtL4gPiBjaHV1a2FuaGFcIDsKK+mHjOeoi+aomSA+IHJpdGVpaHlvdVwgOwor6LOH5pys6KuWID4gc2hpaG9ucm9uXCA7Civku4rmp5jmrYwgPiBpbWF5b3V1dGFcIDsKK+S8mua0peWhlyA+IGFpZHp1bnVyaVwgOwor5Li45Z2K5Li7ID4gbWFydWJvdXp1XCA7Civnp7vmpI3mgKcgPiBpc2hva3VzZWlcIDsKK+WJjeW+jOetliA+IHplbmdvc2FrdVwgOwor5Yil5aSp5ZywID4gYmV0dGVuY2hpXCA7CivljZTorbDkvJogPiBreW91Z2lrYWlcIDsKK+mYsuepuuWjlSA+IGJvdWt1dWdvdVwgOwor6YGL6YCB5paZID4gdW5zb3VyeW91XCA7Civlub3pnIroiLkgPiB5dXVyZWlzZW5cIDsKK+S8r+WCmee3miA+IGhha3ViaXNlblwgOwor6IOD6IW455eFID4gaWNob3VieW91XCA7CivlkYrnpLrmnb8gPiBrb2t1amliYW5cIDsKK+Wwj+S9nOS6uiA+IGtvc2FrdW5pblwgOwor6Zui6ZaT562WID4gcmlrYW5zYWt1XCA7CivmsJHmlbDoqJggPiBtaW5zdXVraVwgOwor6YmE56Cy5bqnID4gdGVwcG91emFcIDsKK+aWh+WMluS6uiA+IGJ1bmthamluXCA7CivmnKjlt6XmiYAgPiBtb2trb3Vqb1wgOwor5LiA6Iis5rOVID4gaXBwYW5ob3VcIDsKK+WKtOWLmeiAhSA+IHJvdW11c2hhXCA7CivmlofluqvmnKwgPiBidW5rb2JvblwgOwor5Luj55CG5Lq6ID4gZGFpcmluaW5cIDsKK+a1t+awtOedgCA+IGthaXN1aWdpXCA7Civoh6rlt7HmtYEgPiBqaWtvcnl1dVwgOwor5LiB5a+n6KqeID4gdGVpbmVpZ29cIDsKK+mfs+alveS8miA+IG9uZ2Fra2FpXCA7CivlkIzog57mhJsgPiBkb3Vob3VhaVwgOwor5q+b5ZSQ5Lq6ID4ga2V0b3VqaW5cIDsKK+awkeS6i+S4iiA+IG1pbmppam91XCA7Civmt6HlvannlLsgPiB0YW5zYWlnYVwgOwor5pyf5b6F5YCkID4ga2l0YWljaGlcIDsKK+WFqOijuOS9kyA+IHplbnJhdGFpXCA7Civnq4vkvZPmtL4gPiByaXR0YWloYVwgOwor6K236YCB6Ii5ID4gZ29zb3VzZW5cIDsKK+mHjuibruS6uiA+IHlhYmFuamluXCA7CivlpbPmgKfou40gPiBqb3NlaWd1blwgOwor5ZCM6Laj5ZGzID4gZG91c2h1bWlcIDsKK+WPr+WLleaApyA+IGthZG91c2VpXCA7CivkuI3ppIrnlJ8gPiBmdXlvdWpvdVwgOwor6aO95ZKM54K5ID4gaG91d2F0ZW5cIDsKK+aXouW+gOeXhyA+IGtpb3VzaG91XCA7CivkuIDoh7TngrkgPiBpdGNoaXRlblwgOwor562G6KiY6ICFID4gaGlra2lzaGFcIDsKK+mAgemiqOapnyA+IHNvdWZ1dWtpXCA7Civlp6vlvqHlrZAgPiBoaW1lbWlrb1wgOwor5omL6YWN5pu4ID4gdGVoYWlzaG9cIDsKK+iEs+ePiueRmiA+IG5vdXNhbmdvXCA7CivkuIrlsaTlnJ8gPiBqb3Vzb3Vkb1wgOwor5LqI57SE6KqeID4geW95YWt1Z29cIDsKK+ayueanveiIuSA+IHl1c291c2VuXCA7CivkuIDlr7joposgPiBjaG90dG9taVwgOwor5LqI6Ziy57eaID4geW9ib3VzZW5cIDsKK+WLmOWumuaXpSA+IGthbmpvdWJpXCA7CivlhoXluJHph5EgPiBuYWlkb2tpblwgOwor5Lyd6YCB6LevID4gZGVuc291cm9cIDsKK+mKgOe0sOW3pSA+IGdpbnphaWt1XCA7Civkurrnm7joposgPiBuaW5zb3VtaVwgOwor6aKo5Yi655S7ID4gZnV1c2hpZ2FcIDsKK+WNiOmkkOS8miA+IGdvc2Fua2FpXCA7CivnhKHmrKDli6QgPiBtdWtla2tpblwgOwor5q+U6YeN6KiIID4gaGlqdXVrZWlcIDsKK+mBi+mAgeW6lyA+IHVuc291dGVuXCA7Civmk43kvZznm6QgPiBzb3VzYWJhblwgOwor5Zyo5bqr5ZOBID4gemFpa29oaW5cIDsKK+awkeS4u+WMliA+IG1pbnNodWthXCA7Civlu7bmu57ph5EgPiBlbnRhaWtpblwgOwor5ZSQ56C06aKoID4ga2FyYWhhZnVcIDsKK+iHquWFrOawkSA+IGppa291bWluXCA7Civos6LlpKvkurogPiBrZW5wdWppblwgOwor6YGL6Lui6ICFID4gdW50ZW5zaGFcIDsKK+S4jeagvOWlvSA+IGJ1a2Fra291XCA7Civlgqzmt6vliaQgPiBzYWlpbnphaVwgOwor5qCE6aSK55+tID4gZWl5b3V0YW5cIDsKK+WMu+WtpueVjCA+IGlnYWt1a2FpXCA7CivnhKHluLjmhJ8gPiBtdWpvdWthblwgOwor6IOM5qC85aW9ID4gc2VrYWtrb3VcIDsKK+Wxseafu+WtkCA+IHNhbnphc2hpXCA7CivljLvlrabnlJ8gPiBpZ2FrdXNlaVwgOwor6ZaL5qWt5Yy7ID4ga2FpZ3lvdWlcIDsKK+S+v+iho+maiiA+IGJlbicnaXRhaVwgOwor5bm55LqL5LyaID4ga2FuamlrYWlcIDsKK+WkmuWOn+WtkCA+IHRhZ2Vuc2hpXCA7CivljYHlrZflvaIgPiBqdXVqaWtlaVwgOwor5aSW6YeO5omLID4gZ2FpeWFzaHVcIDsKK+WBpeiDg+mMoCA+IGtlbicnaWpvdVwgOwor6Zai6KW/6aasID4ga2Fuc2FpYmFcIDsKK+aMh+ekuuipniA+IHNoaWppc2hpXCA7CivmmI7ml6XokYkgPiBhc2hpdGFiYVwgOwor55+t6Led6ZuiID4gdGFua3lvcmlcIDsKK+S4gOi7kuWxiyA+IGlra2VuJyd5YVwgOwor6Iq45YKZ57eaID4gZ2VpYmlzZW5cIDsKK+mZo+Wkqum8kyA+IGppbmRhaWtvXCA7CivnnJ/lhqzml6UgPiBtYWZ1eXViaVwgOwor5Zub5a2j5aCxID4gc2hpa2lob3VcIDsKK+S4gOi7kuWutiA+IGlra2VuJyd5YVwgOwor57mB6I+v6KGXID4gaGFua2FnYWlcIDsKK+iok+e3tOaJgCA+IGt1bnJlbmpvXCA7CivmtbfmsLTmuKkgPiBrYWlzdWlvblwgOwor562L6Zu75ZuzID4ga2luZGVuenVcIDsKK+azjOWwv+W5viA+IGhpbnlvdWtpXCA7CivkuI3lronlv4MgPiBmdWFuc2hpblwgOwor6Kiq5ZWP552AID4gaG91bW9uZ2lcIDsKK+S8muekvuWToSA+IGthaXNoYWluXCA7Civms5XnjovmqKkgPiBob3VvdWtlblwgOwor5LiN5bCO5L2TID4gZnVkb3V0YWlcIDsKK+WNmOippuWQiCA+IHRhbnNoaWFpXCA7CivlhpnnlJ/nlLsgPiBzaGFzZWlnYVwgOwor566h55CG5Lq6ID4ga2FucmluaW5cIDsKK+S4gOWutuiogCA+IGlra2Fnb3RvXCA7CivlkIzmnJ/nlJ8gPiBkb3VraXNlaVwgOwor5LiB5a6a6KaPID4gdGVpam91Z2lcIDsKK+WuiOWCmemaiiA+IHNodWJpdGFpXCA7CivkvbXlkIjnvaogPiBoZWlnb3phaVwgOwor5rCX54Sh57K+ID4ga2lidXNob3VcIDsKK+S4ieaemuebriA+IHNhbm1haW1lXCA7CivmiYvphY3luKsgPiB0ZWhhaXNoaVwgOwor54Sh6Ieq6KaaID4gbXVqaWtha3VcIDsKK+eBq+S6i+azpSA+IGthamlkb3JvXCA7Civkurrlt6Xoqp4gPiBqaW5rb3Vnb1wgOwor5pei5b6A5q20ID4ga2lvdXJla2lcIDsKK+S4gOiIrOaApyA+IGlwcGFuc2VpXCA7CivlubTmnIjml6UgPiBuZW5nYXBwaVwgOwor5aSJ5oiQ5ZmoID4gaGVuc2Vpa2lcIDsKK+acquS/oeiAhSA+IG1pc2hpbmphXCA7CivkuI3moYjlhoUgPiBmdWFuJyduYWlcIDsKK+iHquajhOmFkiA+IHlha2V6YWtlXCA7CivloZHlvL7mgKcgPiBzb2RhbnNlaVwgOwor5q2m5Zmo5YCJID4gYnVraWd1cmFcIDsKK+iBtOmfs+WZqCA+IGNob3VvbmtpXCA7CivlubPku67lkI0gPiBoaXJhZ2FuYVwgOwor5oSf55+l5ZmoID4ga2FuY2hpa2lcIDsKK+WJjeWNiuacnyA+IHplbnBhbmtpXCA7Civnqbroq5blrrYgPiBrdXVyb25rYVwgOwor6L6y6ZaR5pyfID4gbm91a2Fua2lcIDsKK+S4jeizm+aIkCA+IGZ1c2Fuc2VpXCA7CivppIrpto/lrrYgPiB5b3VrZWlrYVwgOwor5Y2B5LqM5pSvID4ganV1bmlzaGlcIDsKK+ani+aIkOavlCA+IGtvdXNlaWhpXCA7CivlkJHml6XokbUgPiBoaW1hd2FyaVwgOwor5qmf5qWt5a62ID4ga2lneW91a2FcIDsKK+awtOa7uOS8nSA+IHN1aWtvZGVuXCA7CivlvqHlrKLmp5ggPiBvam91c2FtYVwgOwor6Ieo5bqK5Yy7ID4gcmluc2hvdWlcIDsKK+aghOmkiua6kCA+IGVpeW91Z2VuXCA7CivlpJrlubTojYkgPiB0YW5lbnNvdVwgOwor6I235Y6E5LuLID4gbml5YWtrYWlcIDsKK+WKseejgeaQjSA+IHJlaWppc29uXCA7Civlronlhajnk6MgPiBhbnplbmJlblwgOwor6YeN6YW457SgID4ganV1c2Fuc29cIDsKK+S6jOWhgeaJiyA+IG5pcnVpc2h1XCA7CivmnKjlt6XlhbcgPiBtb2trb3VndVwgOwor54K555y85ZmoID4gdGVuZ2Fua2lcIDsKK+iOq+Wkp+WwjyA+IG1lcml5YXN1XCA7Civoo73pi7zmiYAgPiBzZWlrb3Vqb1wgOwor6Zqg6JS95a2QID4gaW5wZWlzaGlcIDsKK+WLmOWumuWgtCA+IGthbmpvdWJhXCA7Civnvr3lm6PmiYcgPiBoYXVjaGl3YVwgOwor56C05oiS5YOnID4gaGFrYWlzb3VcIDsKK+eArOaIuOeJqSA+IHNldG9tb25vXCA7CivlpKfoi7Hmlq0gPiBkYWllaWRhblwgOwor5rOM5bC/5ZmoID4gaGlueW91a2lcIDsKK+WFiOitsOaoqSA+IHNlbmdpa2VuXCA7Civlj43mipfmnJ8gPiBoYW5rb3VraVwgOwor5pys5Lya6K2wID4gaG9ua2FpZ2lcIDsKK+iLseexs+S6uiA+IGVpYmVpamluXCA7CivkvY7poIbkvY0gPiB0ZWlqdW4nJ2lcIDsKK+S4jeiAgeaziSA+IGZ1cm91c2VuXCA7CivlkI3lrpvkurogPiBuYWF0ZW5pblwgOwor6Ieq55Sx6KmpID4gaml5dXVzaGlcIDsKK+aEj+W/l+eahCA+IGlzaGl0ZWtpXCA7CivmiKbpl5jlk6EgPiBzZW50b3VpblwgOwor5Y6f55S75YOPID4gZ2VuZ2F6b3VcIDsKK+Wkp+iFv+mDqCA+IGRhaXRhaWJ1XCA7Civmu4vos4DnnIwgPiBzaGlnYWtlblwgOwor6YeN5rC057SgID4ganV1c3Vpc29cIDsKK+S6uumAoOa5liA+IGppbnpvdWtvXCA7Civoq4vosqDluKsgPiB1a2VvaXNoaVwgOwor5rC05rqW5ZmoID4gc3VpanVua2lcIDsKK+a8q+eUu+acrCA+IG1hbmdhaG9uXCA7CivkupLmj5vmgKcgPiBnb2thbnNlaVwgOwor56iu56iu55u4ID4gc2h1anVzb3VcIDsKK+S6iOmYsuazlSA+IHlvYm91aG91XCA7Civlronlhajnga8gPiBhbnplbnRvdVwgOwor6YGL6YCB5Lq6ID4gdW5zb3VuaW5cIDsKK+S4iummluWwviA+IGpvdXNodWJpXCA7Civku4/oiI7liKkgPiBidXNzaGFyaVwgOwor6IiH5aSq6ICFID4geW90YW1vbm9cIDsKK+a6gOWkqeS4iyA+IG1hbnRlbmthXCA7CivkvqHmoLzlt64gPiBrYWtha3VzYVwgOwor54Sh6Iqx5p6cID4gaWNoaWppa3VcIDsKK+S4jeS6uuaDhSA+IGZ1bmluam91XCA7CivlnJ/lu7rlsYsgPiBkb2tlbicneWFcIDsKK+mBruaWreapnyA+IHNoYWRhbmtpXCA7CivkubHmna3mra8gPiByYW5ndWliYVwgOwor6J2L57Sw5belID4gcm91emFpa3VcIDsKK+eznOeIm+aApyA+IGJpcmFuc2VpXCA7CivosrTlhazlrZAgPiBraWtvdXNoaVwgOwor5buJ5L6h54mIID4gcmVua2FiYW5cIDsKK+WOn+WtkOeCiSA+IGdlbnNoaXJvXCA7Civou6Lmj5vngokgPiB0ZW5rYW5yb1wgOwor6buO5piO5pyfID4gcmVpbWVpa2lcIDsKK+iPluiSsua5ryA+IHNob3VidXl1XCA7CivnhKHpp4TpqqggPiBtdWRhYm9uZVwgOwor6aGe5Ly85ZOBID4gcnVpamloaW5cIDsKK+mjm+ihjOmaiiA+IGhpa291dGFpXCA7Civph5Hps7PoirEgPiBraW5wb3VnZVwgOwor6buS6Zuy5q+NID4ga3Vyb3VubW9cIDsKK+ebuOaJi+aWuSA+IGFpdGVnYXRhXCA7CivkuI3lrozlhaggPiBmdWthbnplblwgOwor56WW5Zu95oSbID4gc29rb2t1YWlcIDsKK+WLn+mbhuiyuyA+IGJvc2h1dWhpXCA7CivnlJ/nlKPosrsgPiBzZWlzYW5oaVwgOwor57Wx5ZCI5YyWID4gdG91Z291a2FcIDsKK+aXheihjOWutiA+IHJ5b2tvdWthXCA7CivnpL7lpJbnp5ggPiBzaGFnYWloaVwgOwor5b6T5L6h56iOID4ganV1a2F6ZWlcIDsKK+S9v+W+kuabuCA+IHNoaXRvc2hvXCA7Civlr53ljJbnsqcgPiBuZWdlc2hvdVwgOwor5Ym15LiW5pyfID4gc291c2Vpa2lcIDsKK+mHkeebrumvmyA+IGtpbm1lZGFpXCA7CivkuIrkuIvnt5ogPiBqb3VnZXNlblwgOwor55CG5LqL5Zu9ID4gcmlqaWtva3VcIDsKK+awtOa6luWEgCA+IHN1aWp1bmdpXCA7Civlho3kv53pmbogPiBzYWlob2tlblwgOwor5LiL6aas5YWIID4gZ2ViYXNha2lcIDsKK+azieiyqOe0mSA+IHNlbmthc2hpXCA7CivlvqHku6TlrKIgPiBnb3JlaWpvdVwgOwor6Zu75rCX6KGXID4gZGVua2lnYWlcIDsKK+i7jeaUv+mDqCA+IGd1bnNlaWJ1XCA7CivlvqHpoYznm64gPiBvZGFpbW9rdVwgOwor54Sh5L+d6Ki8ID4gbXVob3Nob3VcIDsKK+WPr+WIhuaApyA+IGthYnVuc2VpXCA7CivkupzpiZvpiYQgPiBhZW50ZXRzdVwgOwor5YuV5a6J5a6aID4gZG91YW50ZWlcIDsKK+WIkeS6i+S4iiA+IGtlaWppam91XCA7CivlpbPmgKfnlKggPiBqb3NlaXlvdVwgOwor5Lm+54el54KJID4ga2Fuc291cm9cIDsKK+iCsuWFkOazlSA+IGlrdWppaG91XCA7CivmhJvps6XlrrYgPiBhaWNob3VrYVwgOwor5pys6Iie5Y+wID4gaG9uYnV0YWlcIDsKK+WAi+S6uuaApyA+IGtvamluc2VpXCA7Civkvp3lrZjnl4cgPiBpem9uc2hvdVwgOwor5oKq5oCn5bqmID4gYWt1c2VpZG9cIDsKK+e+jueUt+WtkCA+IGJpbmFuc2hpXCA7Civpm7vms6Lms5UgPiBkZW5wYWhvdVwgOwor6LuN5LqL5LiKID4gZ3Vuamlqb3VcIDsKK+eDj+eKgOinkiA+IHVzYWlrYWt1XCA7CivlgY/lvq7liIYgPiBoZW5iaWJ1blwgOwor57Sg5a+S6LKnID4gc3VrYW5waW5cIDsKK+ixmuWwj+WxiyA+IGJ1dGFnb3lhXCA7Civlu7bmu57nqI4gPiBlbnRhaXplaVwgOwor5Yal546L5pifID4gbWVpb3VzZWlcIDsKK+WGhuebpOeKtiA+IGVuYmFuam91XCA7CivolLXmm7jlrrYgPiB6b3VzaG9rYVwgOwor6Yyy6Z+z5qmfID4gcm9rdW9ua2lcIDsKK+mBjuiIrOadpSA+IGthaGFucmFpXCA7CivpkZrlrZTmqZ8gPiBzYW5rb3VraVwgOwor5LiA6Iis5Lq6ID4gaXBwYW5qaW5cIDsKK+ebuOaJi+W9uSA+IGFpdGV5YWt1XCA7CivmranlkIjntaYgPiBidWFpa3l1dVwgOwor5LqV5oi457axID4gaWRvZHp1bmFcIDsKK+aXouefpeaVsCA+IGtpY2hpc3V1XCA7Civlt6Xli5nlupcgPiBrb3VtdXRlblwgOwor5LiA5pyx6YqAID4gaXNzaHVnaW5cIDsKK+iIquepuuapnyA+IGtvdWt1dWtpXCA7Civpu5LnubvlrZAgPiBrdXJvanVzdVwgOwor55m76KiY5omAID4gdG91a2lzaG9cIDsKK+mBqeaZguaJkyA+IHRla2lqaWRhXCA7CivlkIjnkIbmgKcgPiBnb3VyaXNlaVwgOwor6Zmw6Zu75a2QID4gaW5kZW5zaGlcIDsKK+WKqeWLleipniA+IGpvZG91c2hpXCA7CivmhbDol4nmlpkgPiBpc2hhcnlvdVwgOwor6KGb55Sf5YW1ID4gZWlzZWloZWlcIDsKK+S9jueJqeS+oSA+IHRlaWJ1a2thXCA7CivlgIvkurrlsZUgPiBrb2ppbnRlblwgOwor5a6f5L2T5YyWID4gaml0dGFpa2FcIDsKK+mCqumtlOiAhSA+IGphbWFtb25vXCA7CivnsbPorbDkvJogPiBiZWlnaWthaVwgOwor54Sh5bC96JS1ID4gbXVqaW56b3VcIDsKK+i7ouaPm+acnyA+IHRlbmthbmtpXCA7Civku6PorbDlo6sgPiBkYWlnaXNoaVwgOwor6by75r+B6Z+zID4gYmlkYWt1b25cIDsKK+mrmOmbu+S9jSA+IGtvdWRlbicnaVwgOwor5oyB5Y+C6YeRID4gamlzYW5raW5cIDsKK+WUr+eQhuirliA+IHl1aXJpcm9uXCA7CivlkI3mnJvlrrYgPiBtZWlib3VrYVwgOwor5aSa5YWD6KuWID4gdGFnZW5yb25cIDsKK+iHquajhOezniA+IHlha2VrdXNvXCA7CivmraPnrKblj7cgPiBzZWlmdWdvdVwgOwor54Sh55Sj6ICFID4gbXVzYW5zaGFcIDsKK+iCsuWFkOabuCA+IGlrdWppc2hvXCA7CivlrprmnJ/oiLkgPiB0ZWlraXNlblwgOwor5omL5byB5b2TID4gdGViZW50b3VcIDsKK+S5vueHpeapnyA+IGthbnNvdWtpXCA7CivkuInml6XplpMgPiBtaWtrYWthblwgOwor5Y2B5LqM5YiGID4ganV1bmlidW5cIDsKK+eoveWPpOWPsCA+IGtlaWtvZGFpXCA7CivlhYjpoK3kvI0gPiBzZW50b3Vnb1wgOwor5Ye65p2l6auYID4gZGVraWRha2FcIDsKK+S4ieS4luebuCA+IHNhbnplc291XCA7CivpgYvmoLnpiI0gPiB1bmtvbmRvblwgOwor6KGb55Sf5LiKID4gZWlzZWlqb3VcIDsKK+WMu+WtpuWjqyA+IGlnYWt1c2hpXCA7Civoq4vosqDkurogPiB1a2VvaW5pblwgOwor5pat6Z2i5ZuzID4gZGFubWVuenVcIDsKK+iZmuS7rueMvyA+IGtva2V6YXJ1XCA7CivmnKrkvb/nlKggPiBtaXNoaXlvdVwgOwor6Zu75rOi5pifID4gZGVucGFzZWlcIDsKK+mfs+mfu+irliA+IG9uJydpbnJvblwgOwor5qmf5qKw5belID4ga2lrYWlrb3VcIDsKK+WGjeWwgemOliA+IHNhaWZ1dXNhXCA7CivpmLLms6LloKQgPiBib3VoYXRlaVwgOwor6YGL6Lui5omLID4gdW50ZW5zaHVcIDsKK+S6ieimh+aIpiA+IHNvdWhhc2VuXCA7Civpu5LmloflrZcgPiBrdXJvbW9qaVwgOwor54Sh6aeE6LazID4gbXVkYWFzaGlcIDsKK+edgOeJqeWcsCA+IGtpbW9ub2ppXCA7CivlpJbmsJflnI8gPiBnYWlraWtlblwgOwor6ZaL5Lya5pelID4ga2Fpa2FpYmlcIDsKK+eUseadpeabuCA+IHl1cmFpc2hvXCA7CivptZ3lj6PnmKEgPiBnYWtvdXNvdVwgOwor5Lm+54el5p6cID4ga2Fuc291a2FcIDsKK+WuieWFqOaApyA+IGFuemVuc2VpXCA7Civkub7nh6XmnJ8gPiBrYW5zb3VraVwgOwor5qCE6aSK5aOrID4gZWl5b3VzaGlcIDsKK+WPsOW4g+W3viA+IGRhaWJ1a2luXCA7Civmp4vmiJDlk6EgPiBrb3VzZWlpblwgOwor5qih56+E55SfID4gbW9oYW5zZWlcIDsKK+WuieWFqOW8gSA+IGFuemVuYmVuXCA7Civpp4bli5XovKogPiBrdWRvdXJpblwgOwor5p2x5rSL5Y+yID4gdG95b2Z1bWlcIDsKK+WNmOeyvuW6piA+IHRhbnNlaWRvXCA7CivngavmnKjlnJ8gPiBrYW1va3Vkb1wgOwor5Luj6K2w5Yi2ID4gZGFpZ2lzZWlcIDsKK+acquWumueovyA+IG1pdGVpa291XCA7CivkuJboqbHniakgPiBzZXdhbW9ub1wgOwor6Kaz5oim6KiYID4ga2Fuc2Vua2lcIDsKK+WkqeeTnOeyiSA+IHRlbmthZnVuXCA7CivlvaLmiJDmnJ8gPiBrZWlzZWlraVwgOwor5pS+5pig5qipID4gaG91ZWlrZW5cIDsKK+ebo+imluaJgCA+IGthbnNoaWpvXCA7CivlvqHmnKzlsIogPiBnb2hvbnpvblwgOwor5Y2Y57SU5YyWID4gdGFuanVua2FcIDsKK+WAi+S6uuWQjSA+IGtvamlubWVpXCA7CivmpJznnLzljLsgPiBrZW5nYW4nJ2lcIDsKK+WMu+WtpuWPsiA+IGlnYWt1c2hpXCA7CivmnKrouI/ls7AgPiBtaXRvdWhvdVwgOwor5pat5pat5Zu6ID4gZGFuZGFua29cIDsKK+aaluaIv+WZqCA+IGRhbmJvdWtpXCA7CivmlqHml4vogIUgPiBhc3NlbnNoYVwgOwor5LuP55Sf5LyaID4gYnVzc2hvdWVcIDsKK+imj+agvOWMliA+IGtpa2FrdWthXCA7Civlj7jku6Tpg6ggPiBzaGlyZWlidVwgOwor5oSP5Yyg5qipID4gaXNob3VrZW5cIDsKK+WwiuaVrOiqniA+IHNvbmtlaWdvXCA7CivlvaLmhYvntKAgPiBrZWl0YWlzb1wgOwor576O5bCR5aWzID4gYmlzaG91am9cIDsKK+WGhumBi+WLlSA+IGVuJyd1bmRvdVwgOwor6LGh54mZ6ImyID4gem91Z2Vpcm9cIDsKK+mBruaWreWZqCA+IHNoYWRhbmtpXCA7CivoqLHlj6/mm7ggPiBreW9rYXNob1wgOwor5ZWG6K2w5ZOhID4gc2hvdWdpaW5cIDsKK+W+oeS4gOaWsCA+IGdvaXNzaGluXCA7CivmhInlv6vniq8gPiB5dWthaWhhblwgOwor5oyH56S65p2/ID4gc2hpamliYW5cIDsKK+mJhOW3peaJgCA+IHRla2tvdWpvXCA7CivntYzllrbpm6MgPiBrZWllaW5hblwgOwor6Zmw6Zm95birID4gb24nJ3lvdWppXCA7Civmj5vmsJfmiYcgPiBrYW5raXNlblwgOwor6Z2e5ZCI5rOVID4gaGlnb3Vob3VcIDsKK+mjm+ihjOiJhyA+IGhpa291dGVpXCA7Civpo5vooYzoiLkgPiBoaWtvdXNlblwgOwor57WM5Za26ZmjID4ga2VpZWlqaW5cIDsKK+W+oeadpeWFiSA+IGdvcmFpa291XCA7CivkuI3mlq3ojYkgPiBmdWRhbnNvdVwgOwor5qCE6aSK5YmkID4gZWl5b3V6YWlcIDsKK+mAo+mOluW6lyA+IHJlbnNhdGVuXCA7CivlhbXms5XlrrYgPiBoZWlob3VrYVwgOwor6aC75bqm5pWwID4gaGluZG9zdXVcIDsKK+izh+acrOWutiA+IHNoaWhvbmthXCA7CivmnIDlj7Pnv7wgPiBzYWl1eW9rdVwgOwor5qCE6aSK5YiGID4gZWl5b3VidW5cIDsKK+WPr+WHpuWIhiA+IGthc2hvYnVuXCA7Civokpnlj6TmlpEgPiBtb3Vrb2hhblwgOwor5a+S56i95Y+kID4ga2FuZ2Vpa29cIDsKK+esrOS4iee0gCA+IGRhaXNhbmtpXCA7CivnoILpoqjlkYIgPiBzdW5hYnVyb1wgOwor6YGL6Lui5aOrID4gdW50ZW5zaGlcIDsKK+esrOS4gOe3miA+IGRhaWlzc2VuXCA7CivpgqrprZTniakgPiBqYW1hbW9ub1wgOwor6YqA6KGM5a62ID4gZ2lua291a2FcIDsKK+S4ieS7meWPiSA+IHNhbnNlbnNhXCA7Civlho3lt6XkuosgPiBzYWlrb3VqaVwgOwor6KOP5pel5pysID4gdXJhbmlob25cIDsKK+iiq+WCreiAhSA+IGhpeW91c2hhXCA7Civou73msLTngokgPiBrZWlzdWlyb1wgOwor6Ieq55Sx5rivID4gaml5dXVrb3VcIDsKK+W+oeabueWtkCA+IG9uem91c2hpXCA7CivpmLLmsLTmiYkgPiBib3VzdWloaVwgOwor5bGF5b+D5ZywID4gaWdva29jaGlcIDsKK+WcsOS4i+mBkyA+IGNoaWthZG91XCA7CivnhKHpp4ToirEgPiBtdWRhYmFuYVwgOwor5LiO5aSq6ICFID4geW90YW1vbm9cIDsKK+eEoeWumuimiyA+IG11dGVpa2VuXCA7Civnvo7lrrnluKsgPiBiaXlvdXNoaVwgOwor55m654Gr54K5ID4gaGFra2F0ZW5cIDsKK+ePvuS7o+WMliA+IGdlbmRhaWthXCA7Civnpo/kupXnnIwgPiBmdWt1aWtlblwgOwor5LiN5pWs6JmUID4gZnVrZWlrZW5cIDsKK+S4geWtkOayuSA+IGNob3VqaXl1XCA7Civkub7nh6XlraMgPiBrYW5zb3VraVwgOwor5pat5pat5LmOID4gZGFuZGFua29cIDsKK+iyoeWLmeWumCA+IHphaW11a2FuXCA7CivmlpnnkIblsYsgPiByeW91cml5YVwgOwor5YGc6LuK5aC0ID4gdGVpc2hhYmFcIDsKK+aEn+WFieW6piA+IGthbmtvdWRvXCA7CivnhKHog73ogIUgPiBtdW5vdXNoYVwgOwor5Lqk5Y+J54K5ID4ga291c2F0ZW5cIDsKK+awt+ays+acnyA+IGh5b3VnYWtpXCA7CivkvY7pm7vkvY0gPiB0ZWlkZW4nJ2lcIDsKK+WHuuS4lumtmiA+IHNodXNzZXVvXCA7CivpgYvou6Llj7AgPiB1bnRlbmRhaVwgOwor6YeO5b+D5a62ID4geWFzaGlua2FcIDsKK+iHqueUseaoqSA+IGppeXV1a2VuXCA7CivpmLLmsLTluIMgPiBib3VzdWlmdVwgOwor5YaN6Ieo5rS+ID4gc2FpcmluaGFcIDsKK+WQjeWgtOmdoiA+IG1laWJhbWVuXCA7CivnrYboqJjkvZMgPiBoaWtraXRhaVwgOwor5bym5qW95ZmoID4gZ2VuZ2Fra2lcIDsKK+a7nuWcqOiyuyA+IHRhaXphaWhpXCA7Civopo/lrprlgKQgPiBraXRlaWNoaVwgOwor5LiA5L2T5oSfID4gaXR0YWlrYW5cIDsKK+i1pOegguezliA+IGFrYXphdG91XCA7CivniZvlsI/lsYsgPiB1c2hpZ295YVwgOwor5buJ5L6h5ZOBID4gcmVua2FoaW5cIDsKK+awkemcgOWTgSA+IG1pbmp1aGluXCA7CivnnJ/kurrplpMgPiBtYW5pbmdlblwgOwor6YeR55ue6IqxID4ga2luc2Vua2FcIDsKK+WPluaymeaxsCA+IHRvcml6YXRhXCA7CivpioDooYzlk6EgPiBnaW5rb3VpblwgOwor5bGk5L2N5a2mID4gc291aWdha3VcIDsKK+mAj+imluWbsyA+IHRvdXNoaXp1XCA7CivlkI3nvqnkurogPiBtZWlnaW5pblwgOwor57Wm5rK55omAID4ga3l1dXl1am9cIDsKK+iHqui1sOegsiA+IGppc291aG91XCA7Civlr4TnqL/ogIUgPiBraWtvdXNoYVwgOwor5oqS5oOF6KmpID4gam9qb3VzaGlcIDsKK+WGhuWIg+WIgCA+IGVuamludG91XCA7Civkub7nh6XlmaggPiBrYW5zb3VraVwgOwor5LiJ5LiD5pelID4gbWluYW5va2FcIDsKK+WvuuWwj+WxiyA+IHRlcmFrb3lhXCA7CivlvqHmm7nlj7ggPiBvbnpvdXNoaVwgOwor55Sw6Zuy6ZuAID4gdGFoaWJhcmlcIDsKK+a4qea5v+W4gyA+IG9uc2hpcHB1XCA7CivlvqHpnaLnm7ggPiBnb21lbnNvdVwgOwor5LiK5pmv5rCXID4gam91a2Vpa2lcIDsKK+iCsuiLseS8miA+IGlrdWVpa2FpXCA7CivkuZfppqzpmoogPiBqb3ViYXRhaVwgOwor5Zyw5LiL6KGXID4gY2hpa2FnYWlcIDsKK+mdkuaHuOW3oyA+IGFva2FrZXN1XCA7CivkuI3mlaznvaogPiBmdWtlaXphaVwgOwor5Y6f5a2Q5L6hID4gZ2Vuc2hpa2FcIDsKK+e3j+atpue3miA+IHNvdWJ1c2VuXCA7CivkuI3nuLnnt7sgPiBidWtpcnlvdVwgOwor6Kej5YOP5bqmID4ga2Fpem91ZG9cIDsKK+aOp+iotOeKtiA+IGtvdXNvam91XCA7Civlho3mpJzmn7sgPiBzYWlrZW5zYVwgOwor6KSH5bqn5qmfID4gZnVrdXpha2lcIDsKK+aJueipleWutiA+IGhpaHlvdWthXCA7CivlvqHkuK3lhYMgPiBvY2h1dWdlblwgOwor5Lq655yf5Ly8ID4gaGl0b21hbmVcIDsKK+eahOWcsOS9jSA+IHRla2ljaGlpXCA7Civmj5vmsJflj6MgPiBrYW5raWtvdVwgOwor6Kq/5p+75ZOhID4gY2hvdXNhaW5cIDsKK+S4luipseW9uSA+IHNld2F5YWt1XCA7Civmgqrnn6XmgbUgPiB3YXJ1ZGppZVwgOwor55+t5pyf6ZaTID4gdGFua2lrYW5cIDsKK+W+oeS4u+S6uiA+IGdvc2h1amluXCA7CivlkIzmmYLmgKcgPiBkb3VqaXNlaVwgOwor6buE5aSJ57GzID4gb3VoZW5tYWlcIDsKK+S9meaJgOiAhSA+IHlvc29tb25vXCA7Civmu4vppIrliIYgPiBqaXlvdWJ1blwgOwor5qOa54mh5Li5ID4gdGFuYWJvdGFcIDsKK+mKmOmFkuWxiyA+IG1laXNodXlhXCA7CivloanpoZ7ms4kgPiBlbnJ1aXNlblwgOwor5L+d6I+M6ICFID4gaG9raW5zaGFcIDsKK+mYsuegguaelyA+IGJvdXNhcmluXCA7CivplonkuJbnlYwgPiBoZWlzZWthaVwgOwor5Zyw5LiL6IyOID4gY2hpa2FrZWlcIDsKK+Wkmui+uuW9oiA+IHRhaGVua2VpXCA7CivkuI3mmI7mnJcgPiBmdW1laXJvdVwgOwor5rOl54Gr5bGxID4gZGVpa2F6YW5cIDsKK+S6rOmDveW6nCA+IGt5b3V0b2Z1XCA7Civku6TlpKvkurogPiByZWlmdWppblwgOwor57235YWN5qipID4gaGltZW5rZW5cIDsKK+S4geWtl+W9oiA+IHRlaWppa2VpXCA7CivlgJnoo5zogIUgPiBrb3Vob3NoYVwgOwor57W155S76aSoID4ga2FpZ2FrYW5cIDsKK+WbveWWtuWMliA+IGtva3VlaWthXCA7CivnianmlYXogIUgPiBidWtrb3NoYVwgOwor5YmN55u45pKyID4gbWFlenVtb3VcIDsKK+eglOexs+apnyA+IGtlbm1haWtpXCA7Civmmpfpu5LmnJ8gPiBhbmtva3VraVwgOwor54++5pmC54K5ID4gZ2Vuaml0ZW5cIDsKK+mao+S/nemkqCA+IHJpbnBva2FuXCA7CivnhLzlpLflvL4gPiBzaG91aWRhblwgOwor5LiB5a2X5bivID4gdGVpaml0YWlcIDsKK+WKoOmFjeexsyA+IGthaGFpbWFpXCA7Civpq5jnsr7luqYgPiBrb3VzZWlkb1wgOwor6Zmw6Zai5pWwID4gaW5rYW5zdXVcIDsKK+awtOazs+W4vSA+IHN1aWVpYm91XCA7CivosrjosrvnlJ8gPiB0YWloaXNlaVwgOwor5aKX56iO5qGIID4gem91emVpYW5cIDsKK+mkk+msvOWFsSA+IGdha2lkb21vXCA7CivoqLHlj6/liLYgPiBreW9rYXNlaVwgOwor5aWz5oCn5YOPID4gam9zZWl6b3VcIDsKK+eBq+aYn+W5tCA+IGthc2VpbmVuXCA7CivkupznoavphbggPiBhcnl1dXNhblwgOwor5YaN6LuN5YKZID4gc2FpZ3VuYmlcIDsKK+adv+Wxi+iynSA+IGl0YXlhZ2FpXCA7CivmlqHml4vmoYggPiBhc3NlbicnYW5cIDsKK+iKseW0l+WyqSA+IGtha291Z2FuXCA7CivmnKrlrozmiJAgPiBtaWthbnNlaVwgOwor54Sh55So5b+DID4gYnV5b3VqaW5cIDsKK+aIkOaWh+WMliA+IHNlaWJ1bmthXCA7Civnspfmgqrlk4EgPiBzb2FrdWhpblwgOwor5o6n6Ki05qipID4ga291c29rZW5cIDsKK+iqv+eQhuWgtCA+IGNob3VyaWJhXCA7CivlnLDkuIvnt5ogPiBjaGlrYXNlblwgOwor5Lqc56Gd6YW4ID4gYXNob3VzYW5cIDsKK+Wumuacn+aIpiA+IHRlaWtpc2VuXCA7CivkvZPns7vljJYgPiB0YWlrZWlrYVwgOwor57WM5Za26ICFID4ga2VpZWlzaGFcIDsKK+iiq+WGmeS9kyA+IGhpc2hhdGFpXCA7CivliIblqKnmnJ8gPiBidW5iZW5raVwgOwor5b6M5LuV6IieID4gYXRvamltYWlcIDsKK+ijj+mdouWPsiA+IHJpbWVuc2hpXCA7CivopovkuJbniakgPiBtaXNlbW9ub1wgOwor6KKr55So6ICFID4gaGl5b3VzaGFcIDsKK+iqnuW9meWKmyA+IGdvaXJ5b2t1XCA7CivprZTms5Xnk7YgPiBtYWhvdWJpblwgOwor5YiG5aip5pmCID4gYnVuYmVuamlcIDsKK+S4iuS4i+WLlSA+IGpvdWdlZG91XCA7CivlubPpnaLlm7MgPiBoZWltZW56dVwgOwor6ICQ54Gr5oCnID4gdGFpa2FzZWlcIDsKK+WGjeWumue+qSA+IHNhaXRlaWdpXCA7Civpm7vmsJflt6UgPiBkZW5raWtvdVwgOwor5Y+N5Y+k57GgID4gaG9ndWthZ29cIDsKK+W+oemZjeiqlSA+IGdva291dGFuXCA7CivmmI7mlofljJYgPiBtZWlidW5rYVwgOwor6IW55YW35ZCIID4gaGFyYWd1YWlcIDsKK+mBuOaMmeaXpSA+IHNlbmt5b2JpXCA7CivovLjnsr7nrqEgPiB5dXNlaWthblwgOwor5bCP5aOy5bqXID4ga291cml0ZW5cIDsKK+Wuh+WumeirliA+IHVjaHV1cm9uXCA7CivpkZHlrprlrrYgPiBrYW50ZWlrYVwgOwor5Zu65rq25L2TID4ga295b3V0YWlcIDsKK+ahiOWGheaJgCA+IGFuJyduYWlqb1wgOwor6Ieq5L+h5a62ID4gamlzaGlua2FcIDsKK+S6nOmJm+acqyA+IGFlbm1hdHN1XCA7CivlsI7pm7vluqYgPiBkb3VkZW5kb1wgOwor55yM55+l5LqLID4ga2VuY2hpamlcIDsKK+Wuh+WumeimsyA+IHVjaHV1a2FuXCA7Civpm7vli5XmqZ8gPiBkZW5kb3VraVwgOwor5LiA5LiB55uuID4gaXRjaG91bWVcIDsKK+S8iumBlOihhiA+IGRhdGVzaHV1XCA7CivohYvnqqnohbogPiBla2lrYXNlblwgOwor5LiN5paH5rOVID4gZnVidW5wb3VcIDsKK+S4gOiyq+aApyA+IGlra2Fuc2VpXCA7Civlj6PlhoXngo4gPiBrb3VuYWllblwgOwor6YGO5LiN6LazID4ga2FmdXNva3VcIDsKK+aEm+eUqOiAhSA+IGFpeW91c2hhXCA7CivlhazmsJHnp5EgPiBrb3VtaW5rYVwgOwor5Ye65qC85a2QID4gZGVnb3VzaGlcIDsKK+S7iuS4lue0gCA+IGtvbnNlaWtpXCA7CivmnKrlqZrogIUgPiBtaWtvbnNoYVwgOwor5YCZ6KOc55SfID4ga291aG9zZWlcIDsKK+adseWNl+S6nCA+IHRvdW5hbicnYVwgOwor5L6b6aSK5aGUID4ga3V5b3V0b3VcIDsKK+WBpeiDg+WJpCA+IGtlbicnaXphaVwgOwor5L+u6aiT6ICFID4gc2h1Z2VuamFcIDsKK+aflOmBk+edgCA+IGp1dWRvdWdpXCA7Civlvq7ns7vmlbAgPiBiaWtlaXN1dVwgOwor5LuV572u5aC0ID4gc2hpb2tpYmFcIDsKK+W5s+aWueWSjCA+IGhlaWhvdXdhXCA7CivkvLTlpY/pg6ggPiBiYW5zb3VidVwgOwor5Y+k5YaZ5pysID4ga29zaGFob25cIDsKK+WHuuadpeeJqSA+IGRla2ltb25vXCA7CivlnJ/ppYXpoK0gPiBkb21hbmp1dVwgOwor5LiW6Kmx5Lq6ID4gc2V3YWJpdG9cIDsKK+e+jumhlOawtCA+IGJpZ2Fuc3VpXCA7Civoh6rnlLHliJEgPiBqaXl1dWtlaVwgOwor5aGp6aKo5ZGCID4gc2hpb2J1cm9cIDsKK+WFhembu+WZqCA+IGp1dWRlbmtpXCA7CivooqvpqJPogIUgPiBoaWtlbnNoYVwgOwor5bCP54aK5bqnID4ga29ndW1hemFcIDsKK+aJi+S/oeiqniA+IHRlc2hpbmdvXCA7CivotaTmr5vluIMgPiBha2FnZXR0b1wgOwor5rC05b2p55S7ID4gc3Vpc2FpZ2FcIDsKK+S4gOS6uuWvnSA+IGhpdG9yaW5lXCA7CivpnZLlkbPms6UgPiBhb21pZG9yb1wgOwor6Ieq55Sx5YWaID4gaml5dXV0b3VcIDsKK+iKmeiTieWzsCA+IGZ1eW91aG91XCA7CivokL3oirHnlJ8gPiByYWtrYXNlaVwgOwor5bGx6ZaT6YOoID4gc2Fua2FuYnVcIDsKK+WQjOaZguS7oyA+IGRvdWppZGFpXCA7CivnhKHlrpfmtL4gPiBtdXNodXVoYVwgOwor6LuN5pS/5bqcID4gZ3Vuc2VpZnVcIDsKK+WppuS6uuS8miA+IGZ1amlua2FpXCA7Civlr7rlrZDlsYsgPiB0ZXJha295YVwgOwor5Y6f57mK57atID4gZ2Vuc2VuJydpXCA7Civntpnpm7vmsJcgPiBrZWlkZW5raVwgOwor5Y+z5Lit6ZaTID4gdWNodXVrYW5cIDsKK+S4jeaWh+aYjiA+IGZ1YnVubWVpXCA7CivlubPlnJ/plpMgPiBoaXJhZG9tYVwgOwor5qyh55S35Z2KID4gamluYW5ib3VcIDsKK+iGgOiDseeCjiA+IGJvdWtvdWVuXCA7CivmnInlirnmiZMgPiB5dXVrb3VkYVwgOwor6Zuo6YeP6KiIID4gdXJ5b3VrZWlcIDsKK+Wuh+WumeiIuSA+IHVjaHV1c2VuXCA7CivmuJvoobDlmaggPiBnZW5zdWlraVwgOwor57mw57O45qmfID4gc291c2hpa2lcIDsKK+WkmuiKuOaApyA+IHRhZ2Vpc2VpXCA7CivotaTliIfnrKYgPiBha2FnaXBwdVwgOwor54Gr5pif5Lq6ID4ga2FzZWlqaW5cIDsKK+aXpeiIquapnyA+IG5pa2tvdWtpXCA7Civku4rkuJbnlYwgPiBrb25zZWthaVwgOwor6LuN6ZyA5ZOBID4gZ3VuanVoaW5cIDsKK+awtOiSuOawlyA+IHN1aWpvdWtpXCA7CivljZjmvKLlrZcgPiB0YW5rYW5qaVwgOwor5Y2B5paH5a2XID4ganV1bW9uamlcIDsKK+WuiOWCmeWFtSA+IHNodWJpaGVpXCA7Civmmpflj7fmlocgPiBhbmdvdWJ1blwgOwor6auY562J56eRID4ga291dG91a2FcIDsKK+a3u+S5l+WToSA+IHRlbmpvdWluXCA7CivmoYjlhoXlm7MgPiBhbicnbmFpenVcIDsKK+WQiOiogOiRiSA+IGFpa290b2JhXCA7CivlrprmnJ/liLggPiB0ZWlraWtlblwgOwor5LqI566X5qGIID4geW9zYW4nJ2FuXCA7CivlpJrmp5jmgKcgPiB0YXlvdXNlaVwgOwor5ZCN5paH5a62ID4gbWVpYnVua2FcIDsKK+iHquizoOazlSA+IGppYmFpaG91XCA7Civlh7rkuI3nsr4gPiBkZWJ1c2hvdVwgOwor5a6J5bGx5bKpID4gYW56YW5nYW5cIDsKK+iAgeWkp+WutiA+IHJvdXRhaWthXCA7CivmsI/ntKDmgKcgPiB1amlzdWpvdVwgOwor5LiK5aSp5rCXID4gam91dGVua2lcIDsKK+esrOS4gOWjsCA+IGRhaWlzc2VpXCA7CivlsI7ngavnt5ogPiBkb3VrYXNlblwgOwor5L6d6aC85b+DID4gaXJhaXNoaW5cIDsKK+Wuh+Wumee3miA+IHVjaHV1c2VuXCA7CivosqDlgrXogIUgPiBmdXNhaXNoYVwgOwor5b6M6aCt6YOoID4ga291dG91YnVcIDsKK+earuiGmueXhSA+IGhpZnVieW91XCA7CivogIHlpKvlqaYgPiByb3VmdXVmdVwgOwor5Zyw5LiL5rC0ID4gY2hpa2FzdWlcIDsKK+mbu+awl+S7oyA+IGRlbmtpZGFpXCA7Civlrprnvqnln58gPiB0ZWlnaWlraVwgOwor5pS+54Gr572qID4gaG91a2F6YWlcIDsKK+mbqOWQiOe+vSA+IGFtYWdhcHBhXCA7Civlj5fliJHogIUgPiBqdWtlaXNoYVwgOwor6Z2e5YWs6ZaLID4gaGlrb3VrYWlcIDsKK+aZruiri+WgtCA+IGZ1c2hpbmJhXCA7CivlpJrls7bmtbcgPiB0YXRvdWthaVwgOwor5Yq05YON5q2MID4gcm91ZG91a2FcIDsKK+WvhOa4r+WcsCA+IGtpa291Y2hpXCA7CivlrprmnJ/kvr8gPiB0ZWlraWJpblwgOwor5pyq5p2l5b2iID4gbWlyYWlrZWlcIDsKK+mjm+ihjOWjqyA+IGhpa291c2hpXCA7CivlpornlKPlqaYgPiBuaW5zYW5wdVwgOwor55+t5pmC6ZaTID4gdGFuamlrYW5cIDsKK+WBj+W3ruWApCA+IGhlbnNhY2hpXCA7CivkuIvpmY3nt5ogPiBrYWtvdXNlblwgOwor5rSL6I+T5a2QID4geW91Z2FzaGlcIDsKK+aWreijgeapnyA+IGRhbnNhaWtpXCA7Civpo5vooYzloLQgPiBoaWtvdWpvdVwgOwor5bel5YW35YWlID4ga291Z3VpcmVcIDsKK+S9k+a4qeioiCA+IHRhaW9ua2VpXCA7CivnmbrooYzml6UgPiBoYWtrb3ViaVwgOwor5ou35ZWP5YW3ID4gZ291bW9uZ3VcIDsKK+mZpOWkluS+iyA+IGpvZ2FpcmVpXCA7Civlr7/ogIHkurogPiBqdXJvdWppblwgOwor5YWs5Y+W5aeUID4ga291dG9yaWlcIDsKK+mZouWkluWboyA+IGluZ2FpZGFuXCA7CivkuI3lpInmgKcgPiBmdWhlbnNlaVwgOwor5aSa55Sj57O7ID4gdGFzYW5rZWlcIDsKK+Wwj+imj+aooSA+IHNob3VraWJvXCA7CivlkIjorbDliLYgPiBnb3VnaXNlaVwgOwor57at566h5p2fID4gaWthbnNva3VcIDsKK+mrmOa4qeioiCA+IGtvdW9ua2VpXCA7CivliJ3nrYnnp5EgPiBzaG90b3VrYVwgOwor6KiY5oa25rOVID4ga2lva3Vob3VcIDsKK+S7iuacneaWuSA+IGtlc2FnYXRhXCA7CivpgbjmjJnljLogPiBzZW5reW9rdVwgOwor56C056CV5oCnID4gaGFzYWlzZWlcIDsKK+m5v+mHjuiLkSA+IHJva3V5YW9uXCA7CivoiJ7lj7Doo48gPiBidXRhaXVyYVwgOwor57WM5Za25qipID4ga2VpZWlrZW5cIDsKK+S4jeeHg+aApyA+IGZ1bmVuc2VpXCA7CivnpZ7npYflrpggPiBqaW5naWthblwgOwor5rCP57Sg5aeTID4gdWppc3Vqb3VcIDsKK+iiq+Wus+iAhSA+IGhpZ2Fpc2hhXCA7CivmsLTphbjln7ogPiBzdWlzYW5raVwgOwor5aSp5L2T5ZuzID4gdGVudGFpenVcIDsKK+i/kei3nemboiA+IGtpbmt5b3JpXCA7CivmupbnpL7lk6EgPiBqdW5zaGFpblwgOwor5Lq65Lu26LK7ID4gamlua2VuaGlcIDsKK+W4uOW+l+aEjyA+IGpvdXRva3VpXCA7Civnmq7ohILohbogPiBoaXNoaXNlblwgOwor54Sh5a6a5b2iID4gbXV0ZWlrZWlcIDsKK+WPr+eUqOaApyA+IGtheW91c2VpXCA7CivkurrnlJ/mtL4gPiBqaW5zZWloYVwgOwor55m66KGM5omAID4gaGFra291am9cIDsKK+aRqeWkqealvCA+IG1hdGVucm91XCA7CivlsI/plpPniakgPiBrb21hbW9ub1wgOwor5b6h5aSn5bGkID4gZ290YWlzb3VcIDsKK+itpuWCmemaiiA+IGtlaWJpdGFpXCA7CivlibLng7nnnYAgPiBrYXBwb3VnaVwgOwor5Y2U5ZKM6Z+zID4ga3lvdXdhb25cIDsKK+WPl+WLleaFiyA+IGp1ZG91dGFpXCA7Civnt4/li5Xlk6EgPiBzb3Vkb3VpblwgOwor6Iqx5p6X57OWID4ga2FyaW50b3VcIDsKK+ato+ekvuWToSA+IHNlaXNoYWluXCA7CivnrYnmuKnnt5ogPiB0b3VvbnNlblwgOwor5b6h6ZyK5bGLID4gbWl0YW1heWFcIDsKK+S4gOWkleipsSA+IGlzc2VraXdhXCA7CivlsI/ngrrmm78gPiBrb2dhd2FzZVwgOwor56ys5LiA5L2NID4gZGFpaWNoaWlcIDsKK+eojumWouWQjyA+IHplaWthbnJpXCA7CivppIrogrLosrsgPiB5b3Vpa3VoaVwgOwor5rWB6Y+R6aasID4geWFidXNhbWVcIDsKK+aOp+iotOS6uiA+IGtvdXNvbmluXCA7CivojLboqbHkvJogPiBjaGF3YWthaVwgOwor5Zar57eK5LqLID4ga2lra2luamlcIDsKK+WQuOmHkeWJmyA+IGtva29uZ291XCA7CivogIHnt7TlrrYgPiByb3VyZW5rYVwgOwor5LiN6Kq/5ZKMID4gZnVjaG91d2FcIDsKK+awl+euoeaUryA+IGtpa2Fuc2hpXCA7CivmsLTphbjljJYgPiBzdWlzYW5rYVwgOwor5aSn5Lq65rCXID4gZGFpbmlua2lcIDsKK+mdkumKheWZqCA+IHNlaWRvdWtpXCA7Civpo5vooYzkvr8gPiBoaWtvdWJpblwgOwor5Y+v6IO95rOVID4ga2Fub3Vob3VcIDsKK+ecn+ePoOavjSA+IHNoaW5qdWJvXCA7CivlsILmlLvnp5EgPiBzZW5rb3VrYVwgOwor5YyW6Ia/6I+MID4ga2Fub3VraW5cIDsKK+mdnuW4uOe3miA+IGhpam91c2VuXCA7Civnsr7kuIDmna8gPiBzZWlpcHBhaVwgOwor6YGH5LiN6YGHID4gZ3V1ZnVndXVcIDsKK+acquiAleWcsCA+IG1pa291Y2hpXCA7CivploDkuIvnlJ8gPiBtb25rYXNlaVwgOwor5LiA6aKo5ZGCID4gaGl0b2Z1cm9cIDsKK+WfuemkiuWfuiA+IGJhaXlvdWtpXCA7Civou43pmorljJYgPiBndW50YWlrYVwgOwor5ryU6Iq45LyaID4gZW5nZWlrYWlcIDsKK+aWh+S6uueUuyA+IGJ1bmppbmdhXCA7Civnj77mmYLku6MgPiBnZW5qaWRhaVwgOwor5bqD56+E5ZuyID4ga291aGFuJydpXCA7CivlhoblsYvmoLkgPiBtYXJ1eWFuZVwgOwor5Z+56aSK5ZyfID4gYmFpeW91ZG9cIDsKK+Wvkuawl+WboyA+IGthbmtpZGFuXCA7CivnspfliKnnm4ogPiBhcmFyaWVraVwgOwor5LqI566X5aSWID4geW9zYW5nYWlcIDsKK+mdnuawkeS4uyA+IGhpbWluc2h1XCA7Civlj5fnm4rogIUgPiBqdWVraXNoYVwgOwor5a6J5a6a5p2/ID4gYW50ZWliYW5cIDsKK+iomOW/temkqCA+IGtpbmVua2FuXCA7CivlpKflroflrpkgPiBkYWl1Y2h1dVwgOwor5Lqc5oCl5oCnID4gYWt5dXVzZWlcIDsKK+ioiOeul+ewvyA+IGtlaXNhbmJvXCA7CivpnZnmraLnlLsgPiBzZWlzaGlnYVwgOwor5LiN5pW05ZCIID4gZnVzZWlnb3VcIDsKK+S6jOmHjemhjiA+IG5panV1YWdvXCA7CivliLblvqHmqZ8gPiBzZWlneW9raVwgOwor5LqM562J5YiGID4gbml0b3VidW5cIDsKK+W5s+eCieazlSA+IGhlaXJvaG91XCA7CivkupTnqJzloKEgPiBnb3J5b3Vob1wgOwor5pyq5p2l5YOPID4gbWlyYWl6b3VcIDsKK+i2s+a4qeWZqCA+IHNva3VvbmtpXCA7CivkuoznrYnlhbUgPiBuaXRvdWhlaVwgOwor6LK05peP6ZmiID4ga2l6b2t1aW5cIDsKK+e2membu+WZqCA+IGtlaWRlbmtpXCA7CivoqJjlj7foq5YgPiBraWdvdXJvblwgOwor5ZCN6Kme5Y+lID4gbWVpc2hpa3VcIDsKK+S8nemmrOiIuSA+IHRlbm1hc2VuXCA7CivpioDmsrPns7sgPiBnaW5nYWtlaVwgOwor5aSn5a6u5Y+4ID4gZGFpZ3V1amlcIDsKK+a1geihjOebriA+IGhheWFyaW1lXCA7CivpgaDoppbnnLwgPiBlbnNoaWdhblwgOwor5Y215bej54KOID4gcmFuc291ZW5cIDsKK+acquS6oeS6uiA+IG1pYm91amluXCA7CivkuI3ntYzmuIggPiBmdWtlaXphaVwgOwor5byV55So56ymID4gaW4nJ3lvdWZ1XCA7Civmn5TpgZPlrrYgPiBqdXVkb3VrYVwgOwor5LiN5Z2H6KGhID4gZnVraW5rb3VcIDsKK+WvvuipseiAhSA+IHRhaXdhc2hhXCA7CivoqJ/li5npg6ggPiBzaG91bXVidVwgOwor5b6h6ZyK5YmNID4gZ29yZWl6ZW5cIDsKK+WFjOaPm+WIuCA+IGRha2Fua2VuXCA7CivkuI3mkYLnlJ8gPiBmdXNlc3NlaVwgOwor5pel5pys6aKoID4gbmlob25mdXVcIDsKK+WAmeijnOWcsCA+IGtvdWhvY2hpXCA7CivnoILpmLLmnpcgPiBzYWJvdXJpblwgOwor5LiL5aOr5a6YID4ga2FzaGlrYW5cIDsKK+W4guitsOS8miA+IHNoaWdpa2FpXCA7CivkuIDmmYLmnJ8gPiBpY2hpamlraVwgOwor6Ieq6LKg5b+DID4gamlmdXNoaW5cIDsKK+ebuOWQiOWCmCA+IGFpYWlnYXNhXCA7CivorJnorbLoqp4gPiBrZW5qb3Vnb1wgOwor5om25oyB57GzID4gZnVjaGltYWlcIDsKK+WGjei1t+WLlSA+IHNhaWtpZG91XCA7CivnjaPljLvlraYgPiBqdXVpZ2FrdVwgOwor6Z2e5bi455SoID4gaGlqb3V5b3VcIDsKK+egtOW7ieaBpSA+IGhhcmVuY2hpXCA7Civlh7rmlL7poYwgPiBkZWhvdWRhaVwgOwor5a6J5a6a5oSfID4gYW50ZWlrYW5cIDsKK+mkiuiAgemZoiA+IHlvdXJvdWluXCA7Civph47oia/njKsgPiBub3JhbmVrb1wgOwor5pyq5LiB5bm0ID4gbWl0ZWluZW5cIDsKK+WuieWumuaApyA+IGFudGVpc2VpXCA7CivmsbrnrpfmnJ8gPiBrZXNzYW5raVwgOwor6Ieq5LmX5qC5ID4gamlqb3Vrb25cIDsKK+WFqOiNt+mHjSA+IHplbmthanV1XCA7CivlpaXlvqHmrr8gPiBva3Vnb3RlblwgOwor6KO96YCg5omAID4gc2Vpem91am9cIDsKK+W/q+eUt+WFkCA+IGthaWRhbmppXCA7Civml7rmlofnpL4gPiBvdWJ1bnNoYVwgOwor6LaF6Z+z5rOiID4gY2hvdW9ucGFcIDsKK+WuiOitt+mciiA+IHNodWdvcmVpXCA7CivmnKjmm77lt50gPiBraXNvZ2F3YVwgOwor5byx6Z+z5ZmoID4gamFrdW9ua2lcIDsKK+axuueul+aXpSA+IGtlc3NhbmJpXCA7Civoh6rkuLvmqKkgPiBqaXNodWtlblwgOwor6IO95byB5a62ID4gbm91YmVua2FcIDsKK+WPr+iDveaApyA+IGthbm91c2VpXCA7CivlpKfml6bpgqMgPiBvb2RhbicnbmFcIDsKK+WNsOW6puaVmSA+IGluZG9reW91XCA7CivnhKHkurrls7YgPiBtdWppbnRvdVwgOwor55yf5Ly85LqLID4gbWFuZWdvdG9cIDsKK+ishOWGmeWZqCA+IHRvdXNoYWtpXCA7CivluLDpgoTogIUgPiBraWthbnNoYVwgOwor5Yqp55Sj6ZmiID4gam9zYW4nJ2luXCA7CivlpbPlupflk6EgPiBqb3RlbicnaW5cIDsKK+ibuOmDqOWxiyA+IHRha29iZXlhXCA7CivkuojnrpfkuIogPiB5b3NhbmpvdVwgOwor5a6a5pmC5Yi2ID4gdGVpamlzZWlcIDsKK+ato+W8puazoiA+IHNlaWdlbmhhXCA7CivkvZnmiYDkuosgPiB5b3NvZ290b1wgOwor6aas6bm/6ICFID4gYmFrYW1vbm9cIDsKK+WEgOekvOWFtSA+IGdpcmVpaGVpXCA7Civml6XmnKzphZIgPiBuaWhvbnNodVwgOwor5pep55Sj5YWQID4gc291emFuamlcIDsKK+aOoee2v+WZqCA+IHNhaW1lbmtpXCA7Civoi7HpgKPpgqYgPiBlaXJlbnBvdVwgOwor5pep55Sf5YWQID4gc291c2VpamlcIDsKK+WKoOebn+iAhSA+IGthbWVpc2hhXCA7CivpmY3pm6jph48gPiBrb3V1cnlvdVwgOwor6K2m5YKZ6ImHID4ga2VpYml0ZWlcIDsKK+WHuuadpeS6iyA+IGRla2lnb3RvXCA7CivkvqHpm7vlrZAgPiBrYWRlbnNoaVwgOwor5Y+k55Sf55WMID4ga29zZWlrYWlcIDsKK+WItuWLleapnyA+IHNlaWRvdWtpXCA7Civph5HprZrlsYsgPiBraW5neW95YVwgOwor5pyo5aSp6JO8ID4gbWF0YXRhYmlcIDsKK+WNiuijuOS9kyA+IGhhbnJhdGFpXCA7Civml6XmnKzou40gPiBuaWhvbmd1blwgOwor5pel5pys6LuKID4gbmlob25zaGFcIDsKK+S/rue+hemBkyA+IHNodXJhZG91XCA7CivllYbooYzngrogPiBzaG91a291aVwgOwor5p2h6YeM5Yi2ID4gam91cmlzZWlcIDsKK+aKleW9seazlSA+IHRvdWVpaG91XCA7CivmnInlsL7poZ4gPiB5dXViaXJ1aVwgOwor5qyn576F5be0ID4geW91cm9wcGFcIDsKK+S4lumWk+S9kyA+IHNla2VudGVpXCA7CivkvIrpgZTlt7sgPiBkYXRlbWFraVwgOwor5rC05Yip5qipID4gc3VpcmlrZW5cIDsKK+WPsuWtpuWutiA+IHNoaWdha2thXCA7CivntI3ku5jph5EgPiBub3VmdWtpblwgOwor6JWO6bqm5q67ID4gc29iYWdhcmFcIDsKK+aWueWQkeiItSA+IGhvdWtvdWRhXCA7CivlpI/oh7Pnt5ogPiBnZXNoaXNlblwgOwor5LiN5Z2H562JID4gZnVraW50b3VcIDsKK+Wuh+WumeW4vSA+IHVjaHV1Ym91XCA7CivnhKHpoLzmvKIgPiBidXJhaWthblwgOwor5r+D5bqm6KiIID4gbm91ZG9rZWlcIDsKK+S4gOaYqOW5tCA+IG90b3Rvc2hpXCA7CivmnKrntYzpqJMgPiBtaWtlaWtlblwgOwor5pyd5a+d5Z2KID4gYXNhbmVib3VcIDsKK+mBjuWkp+imliA+IGthZGFpc2hpXCA7Civnv6Hnv6DoibIgPiBoaXN1aWlyb1wgOwor5Zyf5qC55oCnID4gZG9rb25qb3VcIDsKK+e3j+aooeanmCA+IHNvdW1veW91XCA7CivoqIjnrpfmqZ8gPiBrZWlzYW5raVwgOwor5byB5b2T5bGLID4gYmVudG91eWFcIDsKK+S7o+aJk+iAhSA+IGRhaWRhc2hhXCA7CivpoqjlqpLoirEgPiBmdXViYWlrYVwgOwor54Sh6Kmm6aiTID4gbXVzaGlrZW5cIDsKK+mGuOmAoOmFoiA+IGpvdXpvdXN1XCA7Civlj43li5XmtL4gPiBoYW5kb3VoYVwgOwor57WM5riI5a62ID4ga2VpemFpa2FcIDsKK+a3i+W3tOiFuiA+IHJpbnBhc2VuXCA7Civoh6rkuLvmgKcgPiBqaXNodXNlaVwgOwor6LaK5aSp5qW9ID4gZXRlbnJha3VcIDsKK+aoqeWIqemHkSA+IGtlbnJpa2luXCA7CivmhaLmgKfljJYgPiBtYW5zZWlrYVwgOwor5o6I5Lmz5pyfID4ganVueXV1a2lcIDsKK+WwgumWgOiqniA+IHNlbm1vbmdvXCA7CivliY3oiJ7lj7AgPiBtYWVidXRhaVwgOwor6YG456eR55SfID4gc2Vua2FzZWlcIDsKK+Wto+WIiuiqjCA+IGtpa2Fuc2hpXCA7Civlrp/pmpvlrrYgPiBqaXNzYWlrYVwgOwor5LiA5pi85aScID4gaXRjaHV1eWFcIDsKK+ihhuitsOmZoiA+IHNodXVnaWluXCA7Civml6XmnKzoo70gPiBuaWhvbnNlaVwgOwor5Y2w5Yik5birID4gaW5iYW5zaGlcIDsKK+Wwj+eBq+WZqCA+IHNob3VrYWtpXCA7CivnhKHpoqjluK8gPiBtdWZ1dXRhaVwgOwor5Yi25b6h5ZmoID4gc2VpZ3lva2lcIDsKK+i1sOafu+e3miA+IHNvdXNhc2VuXCA7CivnqbrmiYvlrrYgPiBrYXJhdGVrYVwgOwor5LiN5Zmo6YePID4gYnVraXJ5b3VcIDsKK+WkqeS6leWApCA+IHRlbmpvdW5lXCA7CivoqIjnrpfmnKggPiBrZWlzYW5naVwgOwor5o6h54Kt5omAID4gc2FpdGFuam9cIDsKK+W8geWLmeWumCA+IGJlbm11a2FuXCA7Civlj5fnm4rmqKkgPiBqdWVraWtlblwgOwor5Yqg5bel57SZID4ga2Frb3VzaGlcIDsKK+aVmeWLmeiqsiA+IGt5b3VtdWthXCA7CivpgKPli5XmqZ8gPiByZW5kb3VraVwgOwor5Lqk5beu54K5ID4ga291c2F0ZW5cIDsKK+itsOS6i+mMsiA+IGdpamlyb2t1XCA7Civlho3mnaXlubQgPiBzYXJhaW5lblwgOwor5LiA5pio5aScID4gaXNzYWt1eWFcIDsKK+Wuh+WumeWhtSA+IHVjaHV1amluXCA7CivmsLTpgZPlsYsgPiBzdWlkb3V5YVwgOwor6YeN6LuM5p2hID4ganV1a2lqb3VcIDsKK+mBlee0hOmHkSA+IGl5YWt1a2luXCA7CivpuJrptaHnl4UgPiBvdW11YnlvdVwgOwor5Y2Y5oCn6IqxID4gdGFuc2Vpa2FcIDsKK+azqOaEj+eCuSA+IGNodXVpdGVuXCA7CivluLjlgpnph5EgPiBqb3ViaWtpblwgOwor6Lui56e75oCnID4gdGVuJydpc2VpXCA7CivmtLvngavlsbEgPiBrYWtrYXphblwgOwor5Yqg5bel56iOID4ga2Frb3V6ZWlcIDsKK+e+jueyp+mZoiA+IGJpc2hvdWluXCA7CivojLbnrqrnrKUgPiBjaGFkYW5zdVwgOwor5Zm054Gr5bGxID4gZnVua2F6YW5cIDsKK+WcsOaWueaZgiA+IGNoaWhvdWppXCA7CivmgqrppJPprLwgPiB3YXJ1Z2FraVwgOwor5Y2a5oSb5a62ID4gaGFrdWFpa2FcIDsKK+aDheWgsemDqCA+IGpvdWhvdWJ1XCA7Civml6XmnKzojLYgPiBuaWhvbmNoYVwgOwor5YWJ6KGM5beuID4ga291a291c2FcIDsKK+WkluiAs+mBkyA+IGdhaWppZG91XCA7CivlnLDpnIfms6IgPiBqaXNoaW5oYVwgOwor5LiJ5aGB5omTID4gc2FucnVpZGFcIDsKK+WLvuW8leeKtiA+IGtvdWluam91XCA7CivlnLDpm7fmupAgPiBqaXJhaWdlblwgOwor6Zu75qmf5a2QID4gZGVua2lzaGlcIDsKK+W4uOWCmei7jSA+IGpvdWJpZ3VuXCA7CivlsI/lnovljJYgPiBrb2dhdGFrYVwgOwor5Yi35q+b5YWIID4gaGFrZXNha2lcIDsKK+mdkuWGhemanCA+IGFvc29rb2hpXCA7CivoqZXorbDlk6EgPiBoeW91Z2lpblwgOwor5YWs5YiG5q+NID4ga291YnVuYm9cIDsKK+WPr+iBtOW6piA+IGthY2hvdWRvXCA7CivnhKHmnaHku7YgPiBtdWpvdWtlblwgOwor55+i6aOb55m9ID4geWFnYXN1cmlcIDsKK+aJi+iFleWutiA+IHNodXdhbmthXCA7CivmpJzkuovmraMgPiBrZW5qaXNlaVwgOwor5YG95ZaE6ICFID4gZ2l6ZW5zaGFcIDsKK+S8neWwjuW6piA+IGRlbmRvdWRvXCA7Civlhazli5/lgrUgPiBrb3Vib3NhaVwgOwor5qmf6Zai6YqDID4ga2lrYW5qdXVcIDsKK+atpuWLh+S8nSA+IGJ1eXV1ZGVuXCA7CivliLblvqHkuIsgPiBzZWlneW9rYVwgOwor6JOu6I+v6I2JID4gcmVuZ2Vzb3VcIDsKK+WgseefpeapnyA+IGhvdWNoaWtpXCA7CivlpI/oh7PngrkgPiBnZXNoaXRlblwgOwor5q2m6Iq46ICFID4gYnVnZWlzaGFcIDsKK+i1sOmmrOeBryA+IHNvdW1hdG91XCA7Civmra/ou4zmnaEgPiBzaGlraWpvdVwgOwor5LqM6YeN56iOID4gbmlqdXV6ZWlcIDsKK+ato+avlOS+iyA+IHNlaWhpcmVpXCA7CivpoJDph5HogIUgPiB5b2tpbnNoYVwgOwor5Yqg6YCf5bqmID4ga2Fzb2t1ZG9cIDsKK+ato+W9k+WMliA+IHNlaXRvdWthXCA7CivmiYvkuI3otrMgPiB0ZWJ1c29rdVwgOwor5YG054Gr5bGxID4gc29ra2F6YW5cIDsKK+mBjuS4jeWPiiA+IGthZnVreXV1XCA7CivmrrrpvKDliaQgPiBzYXNzb3phaVwgOwor6KiY5b+156WtID4ga2luZW5zYWlcIDsKK+S4jeaJi+mamyA+IGZ1dGVnaXdhXCA7CivkuI3nrYnovrogPiBmdXRvdWhlblwgOwor6KKr5a6z5ZywID4gaGlnYWljaGlcIDsKK+apn+mWoui7iiA+IGtpa2Fuc2hhXCA7Civml6XmnKzntJkgPiBuaWhvbnNoaVwgOwor5a6H5a6Z5Lq6ID4gdWNodXVqaW5cIDsKK+a9nOawtOWkqyA+IHNlbnN1aWZ1XCA7CivlvqHpmYDku48gPiBvZGFidXRzdVwgOwor5aSc5a2m5qChID4geWFnYWtrb3VcIDsKK+WGjeS4iuaYoCA+IHNhaWpvdWVpXCA7CivlpJbmnaXoqp4gPiBnYWlyYWlnb1wgOwor6Zuj56C06Ii5ID4gbmFucGFzZW5cIDsKK+mnkuS4i+mnhCA+IGtvbWFnZXRhXCA7Civms6jmhI/mm7ggPiBjaHV1aXNob1wgOwor5LqU6YeN5aWPID4gZ29qdXVzb3VcIDsKK+a8q+irh+WutiA+IG1hbmRhbmthXCA7CivlgI3nsr7luqYgPiBiYWlzZWlkb1wgOwor57SN5LuY6ICFID4gbm91ZnVzaGFcIDsKK+WZtOeBq+WPoyA+IGZ1bmtha291XCA7Civku4vorbfkurogPiBrYWlnb25pblwgOwor6YGT6K2w5LyaID4gZG91Z2lrYWlcIDsKK+acieapn+S9kyA+IHl1dWtpdGFpXCA7CivmrbvnlKPlhZAgPiBzaGl6YW5qaVwgOwor5LiN6KaP5YmHID4gZnVraXNva3VcIDsKK+a9nOawtOWZqCA+IHNlbnN1aWtpXCA7CivmlbTlgpnlt6UgPiBzZWliaWtvdVwgOwor6I2S5q2m6ICFID4gYXJhbXVzaGFcIDsKK+mBoOWcsOeCuSA+IGVuY2hpdGVuXCA7CivlpJblrZfntJkgPiBnYWlqaXNoaVwgOwor5LuK5pmC5YiGID4gaW1hamlidW5cIDsKK+WPjeWLleWutiA+IGhhbmRvdWthXCA7CivmqZ/plqLoqowgPiBraWthbnNoaVwgOwor5aSn5pmm5pelID4gb29taXNva2FcIDsKK+S4jeeyvuW3pyA+IGZ1c2Vpa291XCA7CivlpKfkuIjlpKsgPiBkYWlqb3VidVwgOwor5L+d5YWo5LyaID4gaG96ZW5rYWlcIDsKK+WQjOe0oOS9kyA+IGRvdXNvdGFpXCA7Civlho3kuqTku5ggPiBzYWlrb3VmdVwgOwor5aSp5pel5rOVID4gdGVucGlob3VcIDsKK+WuiOitt+elniA+IHNodWdvamluXCA7CivntYTlkIjosrsgPiBrdW1pYWloaVwgOwor6I2S6JWq5ZywID4ga291YnVjaGlcIDsKK+aEm+Wqm+ecjCA+IGVoaW1la2VuXCA7CivoqIjnrpflmaggPiBrZWlzYW5raVwgOwor5pyq6Z2S5bm0ID4gbWlzZWluZW5cIDsKK+S6uuS6i+ashCA+IGppbmppcmFuXCA7Civplbfpn7PnrKYgPiBjaG91b25wdVwgOwor5LiN5Z2H5paJID4gZnVraW5zZWlcIDsKK+a6luWCmemHkSA+IGp1bmJpa2luXCA7Civmt4vlt7TmtrIgPiByaW5wYWVraVwgOwor5LqL5YuZ6ZW3ID4gamltdWNob3VcIDsKK+S/rueQhuWxiyA+IHNodXVyaXlhXCA7Civmh5DnlpHoq5YgPiBrYWlnaXJvblwgOwor5ZaJ6aCt54KOID4ga291dG91ZW5cIDsKK+eWjuWkluaEnyA+IHNvZ2Fpa2FuXCA7CivliqDpgJ/lmaggPiBrYXNva3VraVwgOwor5Yqg5bel5q2vID4ga2Frb3VzaGlcIDsKK+W6reS4i+mnhCA+IG5pd2FnZXRhXCA7CivpnZ7luLjli6QgPiBoaWpvdWtpblwgOwor6YeO55CD6YOoID4geWFreXV1YnVcIDsKK+WJjemnhuaIpiA+IHplbmt1c2VuXCA7CivmjIflsI7pg6ggPiBzaGlkb3VidVwgOwor6LKh55Sj5a62ID4gemFpc2Fua2FcIDsKK+WxheWCrOS/gyA+IGl6YWlzb2t1XCA7CivlvZPmrbPppqwgPiB0b3VzYWliYVwgOwor5LuB546L5YqbID4gbmlvdXJpa2lcIDsKK+WkmuiCieaenCA+IHRhbmlrdWthXCA7CivmnIDnm5vmnJ8gPiBzYWlzZWlraVwgOwor5Y+N5q+U5L6LID4gaGFucGlyZWlcIDsKK+Wls+WtkOmrmCA+IGpvc2hpa291XCA7Civplovlm57ot68gPiBrYWlrYWlyb1wgOwor5a+p5p+75ZOhID4gc2hpbnNhaW5cIDsKK+m6nemmmeawtCA+IGpha291c3VpXCA7Civml6XmnKzniqwgPiBuaWhvbmtlblwgOwor5LqL5YuZ6YePID4gamltdXJ5b3VcIDsKK+W8leeUqOWPpSA+IGluJyd5b3VrdVwgOwor56eR5a2m6ZmiID4ga2FnYWt1aW5cIDsKK+WJjemgremDqCA+IHplbnRvdWJ1XCA7CivljYHlm5vml6UgPiBqdXV5b2trYVwgOwor6YCj5q2M5birID4gcmVuZ2FzaGlcIDsKK+aUr+aPtOiAhSA+IHNoaWVuc2hhXCA7CivmorbmnKjluqcgPiBrYWppa2l6YVwgOwor5Zyw5pa55Yy6ID4gY2hpaG91a3VcIDsKK+WxseeBq+S6iyA+IHlhbWFrYWppXCA7CivmiY3mnKrmuoAgPiBzYWltaW1hblwgOwor5Lq66aGe54y/ID4gamlucnVpZW5cIDsKK+itsOWumuabuCA+IGdpdGVpc2hvXCA7CivojLblnYrkuLsgPiBjaGFib3V6dVwgOwor5Yqg55uf5bqXID4ga2FtZWl0ZW5cIDsKK+e3qeS4i+WJpCA+IGthbmdlemFpXCA7CivokIzpu4ToibIgPiBtb2VnaWlyb1wgOwor56m65rCX6YqDID4ga3V1a2lqdXVcIDsKK+m5ueawtOa5liA+IGthbnN1aWtvXCA7CivmtbfogIHohbAgPiBlYmlnb3NoaVwgOwor55Sf6KiI6LK7ID4gc2Vpa2VpaGlcIDsKK+WPguWKoOiAhSA+IHNhbmthc2hhXCA7Civml6XmnKzmtbcgPiBuaWhvbmthaVwgOwor6KKr5LmX5pWwID4gaGlqb3VzdXVcIDsKK+aJi+miqOeQtCA+IHRlZnV1a2luXCA7Civms6jmhI/loLEgPiBjaHV1aWhvdVwgOwor6aKo5pmv55S7ID4gZnV1a2VpZ2FcIDsKK+mbu+WtkOmfsyA+IGRlbnNoaW9uXCA7Civou6LljJbns5YgPiB0ZW5rYXRvdVwgOwor6ZaJ57WM5pyfID4gaGVpa2Vpa2lcIDsKK+WHuueEoeeyviA+IGRlYnVzaG91XCA7CivkupLliqnnmoQgPiBnb2pvdGVraVwgOwor5Lm+5omA5bivID4ga2Fuam90YWlcIDsKK+Wkp+mfs+WjsCA+IGRhaW9uam91XCA7CivnoLTnlKPogIUgPiBoYXNhbnNoYVwgOwor6ZaJ5Zue6LevID4gaGVpa2Fpcm9cIDsKK+apn+mWoue0mSA+IGtpa2Fuc2hpXCA7Civog6Hpurvmk4IgPiBnb21hc3VyaVwgOwor5qmf6Zu35Y6fID4ga2lyYWlnZW5cIDsKK+WkmuWtlOaApyA+IHRha291c2VpXCA7CivlkIjmiJDpn7MgPiBnb3VzZWlvblwgOwor56C06a2U5byTID4gaGFtYXl1bWlcIDsKK+mAoOW9seWJpCA+IHpvdWVpemFpXCA7CivlgKbmgKDmnJ8gPiBrZW50YWlraVwgOwor5pyq57SN6ICFID4gbWlub3VzaGFcIDsKK+S6jOmHjeaYnyA+IG5panV1c2VpXCA7CivnuYHkvZPlrZcgPiBoYW50YWlqaVwgOwor5raI6Z+z5ZmoID4gc2hvdW9ua2lcIDsKK+WkmuS6uuaVsCA+IHRhbmluenV1XCA7CivotbTku7vlnLAgPiBmdW5pbmNoaVwgOwor5Y+k55Sf5LujID4ga29zZWlkYWlcIDsKK+iKneWxheawlyA+IHNoaWJhaWdlXCA7CivmqKrluqfmqJkgPiBvdXphaHlvdVwgOwor6Ieq6K2m5ZujID4gamlrZWlkYW5cIDsKK+aaq+WumuahiCA+IHphbnRlaWFuXCA7CivprZrluILloLQgPiB1b2ljaGliYVwgOwor6aeF6aas6LuKID4gZWtpYmFzaGFcIDsKK+WvvuipseS9kyA+IHRhaXdhdGFpXCA7CivmuIXmjoPlpKsgPiBzZWlzb3VmdVwgOwor6auY5oSf5bqmID4ga291a2FuZG9cIDsKK+e0gOWFg+WJjSA+IGtpZ2VuemVuXCA7Civno6jnoJTntJkgPiBtYWtlbnNoaVwgOwor54Gr6Jyl6Jy0ID4gaGl0b2thZ2VcIDsKK+aXouWpmuiAhSA+IGtpa29uc2hhXCA7CivmkKzpgIHms6IgPiBoYW5zb3VoYVwgOwor55aO6ZaL6ICFID4gc29rYWlzaGFcIDsKK+aAneaDs+WutiA+IHNoaXNvdWthXCA7CivlsqnnlLDluK8gPiBpd2F0YW9iaVwgOwor6ZaL6ZaJ5qmfID4ga2FpaGVpa2lcIDsKK+W6j+egtOaApSA+IGpvaGFreXV1XCA7CivotrPlv6Dlrp8gPiBhc2hpbWFtZVwgOwor5Y2K5rib5pyfID4gaGFuZ2Vua2lcIDsKK+iHqueEtue+jiA+IHNoaXplbmJpXCA7CivliY3kuJbntIAgPiB6ZW5zZWlraVwgOwor56CU56Oo57SZID4ga2VubWFzaGlcIDsKK+mdkuWGmeecnyA+IGFvamFzaGluXCA7CivnpYjnpbfmm7ggPiBraXRvdXNob1wgOwor5biw6YKE5YW1ID4ga2lrYW5oZWlcIDsKK+mWiee1jOW+jCA+IGhlaWtlaWdvXCA7CivlpJrmlrnpnaIgPiB0YWhvdW1lblwgOwor54eV5bC+5pyNID4gZW5iaWZ1a3VcIDsKK+emgOitsOabuCA+IHJpbmdpc2hvXCA7CivniLblhYTkvJogPiBmdWtlaWthaVwgOwor6auY6bqX5qW9ID4ga29tYWdha3VcIDsKK+WFqOebm+acnyA+IHplbnNlaWtpXCA7Civkuojmg7PlpJYgPiB5b3NvdWdhaVwgOwor5omB5qGD5rK5ID4gaGVudG91eXVcIDsKK+mdkuW5tOacnyA+IHNlaW5lbmtpXCA7CivlnYfnrYnljJYgPiBraW50b3VrYVwgOwor5Y+X6aiT6ICFID4ganVrZW5zaGFcIDsKK+aZguS7o+ebuCA+IGppZGFpc291XCA7CivlopfliqDliIYgPiB6b3VrYWJ1blwgOwor5LqM6YCj6YqDID4gbmlyZW5qdXVcIDsKK+S4gOWbnui7oiA+IGlra2FpdGVuXCA7CivkuLvohLPpg6ggPiBzaHVub3VidVwgOwor57SN5LuY5pu4ID4gbm91ZnVzaG9cIDsKK+WNmOW8geiKsSA+IHRhbmJlbmthXCA7CivmtYHmtarogIUgPiBydXJvdXNoYVwgOwor6I2S5Yip55uKID4gYXJhcmlla2lcIDsKK+iPk+WtkOebhiA+IGthc2hpYm9uXCA7CivlhaznlKjoqp4gPiBrb3V5b3Vnb1wgOwor5aSq6Zm954KJID4gdGFpeW91cm9cIDsKK+WPl+i6q+W9oiA+IHVrZW1pa2VpXCA7CivmsJHllrbljJYgPiBtaW4nJ2Vpa2FcIDsKK+S6uuacm+WutiA+IGppbmJvdWthXCA7Civnt4/kuozpmo4gPiBzb3VuaWthaVwgOwor6Kej6ZuH6ICFID4ga2Fpa29zaGFcIDsKK+a8ouaZguS7oyA+IGthbmppZGFpXCA7CivlhoXlpJbph44gPiBuYWlnYWl5YVwgOwor54mH5Luu5ZCNID4ga2F0YWthbmFcIDsKK+iEseiho+aJgCA+IGRhdHN1aWpvXCA7CivkuI3pjIbpi7wgPiBmdXNlaWtvdVwgOwor6LSI5LiO6ICFID4gem91eW9zaGFcIDsKK+S/neWuiOezuyA+IGhvc2h1a2VpXCA7Civmtbfppqzlm54gPiBrYWliYWthaVwgOwor6Ieq5aCV6JC9ID4gamlkYXJha3VcIDsKK+acrOWhgeaJkyA+IGhvbnJ1aWRhXCA7CivmhJvppJDkvJogPiBhaXNhbmthaVwgOwor5a++5oqX6aasID4gdGFpa291YmFcIDsKK+S7ruWQjeaWhyA+IGthbmFidW1pXCA7Civog6HpurvloakgPiBnb21hc2hpb1wgOwor5Yqg5bel5ZOBID4ga2Frb3VoaW5cIDsKK+aoqeWIqeabuCA+IGtlbnJpc2hvXCA7Civlu4PopoHntKAgPiBoYWl5b3Vzb1wgOwor56m65oOz5a62ID4ga3V1c291a2FcIDsKK+aXouWumuWApCA+IGtpdGVpY2hpXCA7Civosqnlo7Lpg6ggPiBoYW5iYWlidVwgOwor55y86Y+h5bGLID4gbWVnYW5leWFcIDsKK+WJjeS4lueVjCA+IHplbnNla2FpXCA7CivmnKzloLTmiYAgPiBob25iYXNob1wgOwor6Jma54Sh5YWaID4ga3lvbXV0b3VcIDsKK+S6uumhnuaEmyA+IGppbnJ1aWFpXCA7Civkuozph43lpY8gPiBuaWp1dXNvdVwgOwor5oSb5aW96ICFID4gYWlrb3VzaGFcIDsKK+WQiOaIkOiqniA+IGdvdXNlaWdvXCA7Civnn7Pngavnn6IgPiBpc2hpYml5YVwgOwor5Ye657SN57C/ID4gc3VpdG91Ym9cIDsKK+i7jeeuoeWMuiA+IGd1bmthbmt1XCA7Civnp4vnlLDnnIwgPiBha2l0YWtlblwgOwor5YSS5a2m55WMID4ganVnYWtrYWlcIDsKK+S4i+aJi+ezniA+IGhldGFrdXNvXCA7CivmnKrlor7lnLAgPiBtaWtvbmNoaVwgOwor5aSn5aSa5pWwID4gZGFpdGFzdXVcIDsKK+WtkOWNiOe3miA+IHNoaWdvc2VuXCA7CivmraPluLjljJYgPiBzZWlqb3VrYVwgOwor55m66YW157SgID4gaGFra291c29cIDsKK+i3nembouioiCA+IGt5b3Jpa2VpXCA7CivoiLnlsI/lsYsgPiBmdW5hZ295YVwgOwor6Ya46YCg5omAID4gam91em91am9cIDsKK+Wkp+e0jeiogCA+IGRhaW5hZ29uXCA7CivlpKnmloflrrYgPiB0ZW5tb25rYVwgOwor5qih6YCg6ICFID4gbW96b3VzaGFcIDsKK+WvneS4jei2syA+IG5lYnVzb2t1XCA7CivlsILploDlrrYgPiBzZW5tb25rYVwgOwor5pyq54S25b2iID4gbWl6ZW5rZWlcIDsKK+WJquijgeapnyA+IHNlbnNhaWtpXCA7Civos7zosrfpg6ggPiBrb3ViYWlidVwgOwor5oWI5ZaE5LyaID4gaml6ZW5rYWlcIDsKK+aCqui2o+WRsyA+IGFrdXNodW1pXCA7CivotIjkuI7nqI4gPiB6b3V5b3plaVwgOwor5L+d5a2Y57O7ID4gaG96b25rZWlcIDsKK+awl+WLlei7iiA+IGtpZG91c2hhXCA7CivmsLjkvY/ogIUgPiBlaWp1dXNoYVwgOwor5pyq54af5YWQID4gbWlqdWt1amlcIDsKK+iomOW/teWTgSA+IGtpbmVuaGluXCA7CivnoLTnk5znl4UgPiBoYWthYnlvdVwgOwor56C055Sj5rOVID4gaGFzYW5ob3VcIDsKK+WBnOmbu+aXpSA+IHRlaWRlbmJpXCA7Civlj5fpqJPnlJ8gPiBqdWtlbnNlaVwgOwor6Zm46JK45rCXID4gb2tham91a2lcIDsKK+Wun+ihjOaZgiA+IGppa2tvdWppXCA7CivmqKHpgKDntJkgPiBtb3pvdXNoaVwgOwor5LqM5Y6f5a2QID4gbmlnZW5zaGlcIDsKK+S7luaJgOiAhSA+IHlvc29tb25vXCA7Civnp4vnlLDniqwgPiBha2l0YWtlblwgOwor5LiH5Zu95peXID4gYmFua29ra2lcIDsKK+S6i+WLmeeahCA+IGppbXV0ZWtpXCA7Civmjqjnp7vnmoQgPiBzdWlpdGVraVwgOwor56m65rCX56m0ID4ga3V1a2lhbmFcIDsKK+WPl+WuueiAhSA+IGp1eW91c2hhXCA7Civns6DlkbPlmYwgPiBudWthbWlzb1wgOwor5pa55b2i5rOiID4gaG91a2VpaGFcIDsKK+aIpuWJjea0viA+IHNlbnplbmhhXCA7Civlh6bnkIbloLQgPiBzaG9yaWpvdVwgOwor5LqM5bym55C0ID4gbmlnZW5raW5cIDsKK+mFkumAoOWutiA+IHNodXpvdWthXCA7CivmjrLnpLrmnb8gPiBrZWlqaWJhblwgOwor5YaF6aKo5ZGCID4gdWNoaWJ1cm9cIDsKK+S4reWKtOWnlCA+IGNodXVyb3VpXCA7CivmhJvnjKvlrrYgPiBhaWJ5b3VrYVwgOwor5LiJ5Zue5b+MID4gc2Fua2Fpa2lcIDsKK+e3j+S7leiIniA+IHNvdWppbWFpXCA7CivphrjpgKDlrrYgPiBqb3V6b3VrYVwgOwor5Lqk5LuY6YeRID4ga291ZnVraW5cIDsKK+aJh+miqOapnyA+IHNlbnB1dWtpXCA7CivlhajlgJnoo5wgPiB6ZW5rb3Vob1wgOwor55CG5oOz6KuWID4gcmlzb3Vyb25cIDsKK+aXpeacrOWPsiA+IG5paG9uc2hpXCA7CivmvKLmlbDlrZcgPiBrYW5zdXVqaVwgOwor6Lyd54WM5bidID4ga2lrb3V0ZWlcIDsKK+aUr+aMgeiAhSA+IHNoaWppc2hhXCA7CivlpKfmloflrZcgPiBkYWltb25qaVwgOwor5a2Q5Y2I55KwID4gc2hpZ29rYW5cIDsKK+iJtuemj+WutiA+IGVucHVrdWthXCA7CivplovplonlmaggPiBrYWloZWlraVwgOwor5bCC6ZaA5Yy7ID4gc2VubW9uJydpXCA7Civmm7TlubTmnJ8gPiBrb3VuZW5raVwgOwor5bCC6ZaA5YyWID4gc2VubW9ua2FcIDsKK+aXpeacrOWIgCA+IG5paG9udG91XCA7CivkuI3ooYzlhIAgPiBmdWd5b3VnaVwgOwor5biw5bej5oCnID4ga2lzb3VzZWlcIDsKK+S4i+aJi+eJqSA+IGdldGVtb25vXCA7Civmj5DmoYjogIUgPiB0ZWlhbnNoYVwgOwor5Y+X5L+h5qmfID4ganVzaGlua2lcIDsKK+aPmuWtkOaxnyA+IHlvdXN1a291XCA7CivntYzluLjosrsgPiBrZWlqb3VoaVwgOwor5rW3546L5pifID4ga2Fpb3VzZWlcIDsKK+W5vOeomuWckiA+IHlvdWNoaWVuXCA7CivkvIHnlLvoqrIgPiBraWtha3VrYVwgOwor5pyI5qGC5qi5ID4gZ2Vra2VpanVcIDsKK+acquiomOWFpSA+IG1pa2lueXV1XCA7CivnoJTno6jmnZAgPiBrZW5tYXphaVwgOwor5LqM5bm06I2JID4gbmluZW5zb3VcIDsKK+e+qeWLh+i7jSA+IGdpeXV1Z3VuXCA7Civmlofoqp7mlocgPiBidW5nb2J1blwgOwor6KqV55Sf5pelID4gdGFuam91YmlcIDsKK+mHkeaZguioiCA+IGtpbmRva2VpXCA7CivnqbrmtJ7ljJYgPiBrdXVkb3VrYVwgOwor57Oe5ZGz5ZmMID4ga3Vzb21pc29cIDsKK+aXpeacrOS6uiA+IG5paG9uamluXCA7CivmgKfpgYrmiK8gPiBzZWl5dXVnaVwgOwor5qyh54K56ICFID4gaml0ZW5zaGFcIDsKK+mYsuiFkOWJpCA+IGJvdWZ1emFpXCA7Civml6XmnKzkuK0gPiBuaWhvbmp1dVwgOwor6IWV55u45pKyID4gdWRlenVtb3VcIDsKK+S4jeevgOWItiA+IGZ1c2Vzc2VpXCA7CivlnLDln5/lt64gPiBjaGlpa2lzYVwgOwor5L+d6K236bOlID4gaG9nb2Nob3VcIDsKK+Wwj+aJi+WFiCA+IGtvdGVzYWtpXCA7CivnhKHpmY3msLQgPiBtdWtvdXN1aVwgOwor6by75ZG85ZC4ID4gYmlrb2t5dXVcIDsKK+mHjemojuWFtSA+IGp1dWtpaGVpXCA7Civlj6Tku6Plj7IgPiBrb2RhaXNoaVwgOwor6IO96Iie5Y+wID4gbm91YnV0YWlcIDsKK+ertummrOmmrCA+IGtlaWJhdW1hXCA7CivlhY3np5/lnLAgPiBtZW5zb2NoaVwgOwor5LqM5qyh55qEID4gbmlqaXRla2lcIDsKK+a8lOWlj+iAhSA+IGVuc291c2hhXCA7CivlhbfkvZPmgKcgPiBndXRhaXNlaVwgOwor5LiA562J6LuKID4gaXR0b3VzaGFcIDsKK+S4jeWTgeihjCA+IGZ1aGlua291XCA7Civnibnnp5HlhbUgPiB0b2trYWhlaVwgOwor6ISC6IKq5rK5ID4gc2hpYm91eXVcIDsKK+W3puWkp+iHoyA+IHNhZGFpamluXCA7Civph5HlrZfloZQgPiBraW5qaXRvdVwgOwor6auY6YeO5bGxID4ga291eWFzYW5cIDsKK+Wkp+eGiuW6pyA+IG9vZ3VtYXphXCA7CivlhpLpmbrlrrYgPiBib3VrZW5rYVwgOwor5aGp5r+D5bqmID4gZW4nJ25vdWRvXCA7Civml6XkuYPkuLggPiBoaW5vbWFydVwgOwor5L2V5Yem6L+EID4gZG9rb21hZGVcIDsKK+i/keS8vOWApCA+IGtpbmppY2hpXCA7CivpgI/no4HmgKcgPiB0b3VqaXNlaVwgOwor5L+d6K236aCYID4gaG9nb3J5b3VcIDsKK+eJuea0vuWToSA+IHRva3VoYWluXCA7CivllL7mtrLohbogPiBkYWVraXNlblwgOwor5bqt5pyo5oi4ID4gbml3YWtpZG9cIDsKK+W+jOaPtOiAhSA+IGtvdWVuc2hhXCA7Civpu4TpiYTpibEgPiBvdXRla2tvdVwgOwor5Y+k5Luj5Lq6ID4ga29kYWlqaW5cIDsKK+S6i+WLmeacjSA+IGppbXVmdWt1XCA7CivlsI/puqbnsokgPiBrb211Z2lrb1wgOwor5LiN5rq25oCnID4gZnV5b3VzZWlcIDsKK+mhp+WVj+WboyA+IGtvbW9uZGFuXCA7Civkv53mnInogIUgPiBob3l1dXNoYVwgOwor6YG/55eF6ZmiID4gaGlieW91aW5cIDsKK+WJjeaZr+awlyA+IG1hZWdlaWtpXCA7CivmqZ/plqLlo6sgPiBraWthbnNoaVwgOwor5aSW5Lqk5ZOhID4gZ2Fpa291aW5cIDsKK+mKheebuOWgtCA+IGRvdXNvdWJhXCA7Civlgr7mlpzluqYgPiBrZWlzaGFkb1wgOwor6auY5bqm6KiIID4ga291ZG9rZWlcIDsKK+i/keacquadpSA+IGtpbm1pcmFpXCA7CivmjZXpr6joiLkgPiBob2dlaXNlblwgOwor5Yqg5a6z6ICFID4ga2FnYWlzaGFcIDsKK+aVsOePoOeOiSA+IGp1enVkYW1hXCA7CivmiYvnvr3lhYggPiB0ZWJhc2FraVwgOwor6KOc5Yqp57+8ID4gaG9qb3lva3VcIDsKK+aFiOaCsuW/gyA+IGppaGlzaGluXCA7CivlpJbosqjlgrUgPiBnYWlrYXNhaVwgOwor5oOF5aCx5YyWID4gam91aG91a2FcIDsKK+e3j+S6iOeulyA+IHNvdXlvc2FuXCA7CivnnJ/lpJzkuK0gPiBtYXlvbmFrYVwgOwor5LiL5oSP6K2YID4ga2Fpc2hpa2lcIDsKK+S7o+eoveWPpCA+IGRhaWdlaWtvXCA7CivmsLjkvY/mqKkgPiBlaWp1dWtlblwgOwor5L+d5pyJ57GzID4gaG95dXVtYWlcIDsKK+iHquWbveiqniA+IGppa29rdWdvXCA7Civlj43lr77oqp4gPiBoYW50YWlnb1wgOwor5aSJ55Ww5L2TID4gaGVuJydpdGFpXCA7CivliKnlt7HnmoQgPiByaWtvdGVraVwgOwor5bu65YW35bGLID4gdGF0ZWd1eWFcIDsKK+mYsuWvkuWFtyA+IGJvdWthbmd1XCA7CivlpbPlrabmoKEgPiBqb2dha2tvdVwgOwor5L+d5a6I5oCnID4gaG9zaHVzZWlcIDsKK+WlveaZr+awlyA+IGtvdWtlaWtpXCA7CivkuqTku5jogIUgPiBrb3VmdXNoYVwgOwor5Y+v5aSJ5pWwID4ga2FoZW5zdXVcIDsKK+iKseaWh+WtlyA+IGhhbmFtb2ppXCA7CivpnaLkvJrml6UgPiBtZW5rYWliaVwgOwor54WZ6I2J5bGLID4gdGFiYWtveWFcIDsKK+mbqOaooeanmCA+IGFtZW1veW91XCA7Civmj7rnsYPmnJ8gPiB5b3VyYW5raVwgOwor56qB56C05Y+jID4gdG9wcGFrb3VcIDsKK+i/keS7o+WMliA+IGtpbmRhaWthXCA7Civngrnngavns7sgPiB0ZW5rYWtlaVwgOwor5LqM5bm055SfID4gbmluZW5zZWlcIDsKK+aYn+awl+S9kyA+IHNlaWtpdGFpXCA7CivkuI3nrYnlj7cgPiBmdWRvdWdvdVwgOwor5LqU6L665b2iID4gZ29oZW5rZWlcIDsKK+S6jOi8qui7iiA+IG5pcmluc2hhXCA7CivnlKjnrqrnrKUgPiB5b3VkYW5zdVwgOwor5Ya36JS15bqrID4gcmVpem91a29cIDsKK+S4jeaJgOWtmCA+IGZ1c2hvem9uXCA7CivmipXlhYnlmaggPiB0b3Vrb3VraVwgOwor5aWz5a2Q5qChID4gam9zaGlrb3VcIDsKK+a1nOiMhOWtkCA+IGhhbWFuYXN1XCA7Civlj6Tmm7jlsZUgPiBrb3Nob3RlblwgOwor5LqM5Y2B5LujID4gbmlqdXVkYWlcIDsKK+W4guihl+WbsyA+IHNoaWdhaXp1XCA7CivmqLnmnp3nirYgPiBqdXNoaWpvdVwgOwor5bqP55uk5oimID4gam9iYW5zZW5cIDsKK+eBq+aIkOWyqSA+IGthc2VpZ2FuXCA7CivntYTlkIjlk6EgPiBrdW1pYWlpblwgOwor5Lqc6ISx6Ie8ID4gYWRha2t5dXVcIDsKK+mssemHkeiJsiA+IHVrb24nJ2lyb1wgOwor6ay85q2m6ICFID4gb25pbXVzaGFcIDsKK+aWnOaKleW9sSA+IHNoYXRvdWVpXCA7Civmu5HnqbrmqZ8gPiBrYWtrdXVraVwgOwor6Lu96aiO5YW1ID4ga2Vpa2loZWlcIDsKK+S6jOWFg+irliA+IG5pZ2Vucm9uXCA7CivmiYvmlpnnkIYgPiB0ZXJ5b3VyaVwgOwor5Y2Y5Yip5rOVID4gdGFucmlob3VcIDsKK+W+oeelnui8vyA+IG9taWtvc2hpXCA7CivlhYjpi63ljJYgPiBzZW4nJ2Vpa2FcIDsKK+aSkuW4g+WJpCA+IHNhcHB1emFpXCA7CivlkYnmnI3lsYsgPiBnb2Z1a3V5YVwgOwor5Y+X5L+h5ZmoID4ganVzaGlua2lcIDsKK+a6tuino+eCiSA+IHlvdWthaXJvXCA7Civlj6/lpInmgKcgPiBrYWhlbnNlaVwgOwor5bm06b2i5beuID4gbmVucmVpc2FcIDsKK+WIgOWcreWutiA+IHRvdWtlaWthXCA7Civps7Pku5noirEgPiBob3VzZW5rYVwgOwor5bCO5rOi566hID4gZG91aGFrYW5cIDsKK+WNmOavlOS+iyA+IHRhbnBpcmVpXCA7CivmjZXpr6jnoLIgPiBob2dlaWhvdVwgOwor55u06Laz6KKLID4gamlrYXRhYmlcIDsKK+aCquWkqumDjiA+IGFrdXRhcm91XCA7CivmnInnkIbmlbAgPiB5dXVyaXN1dVwgOwor6YOo5YiG5ZOBID4gYnVidW5oaW5cIDsKK+WPr+eHg+aApyA+IGthbmVuc2VpXCA7CivkuI3lloTmhJ8gPiBmdXplbmthblwgOwor5rSX6Z2i5omAID4gc2VubWVuam9cIDsKK+mAgeayueeuoSA+IHNvdXl1a2FuXCA7CivmoLzlrZDmiLggPiBrb3VzaGlkb1wgOwor5YW35L2T5L6LID4gZ3V0YWlyZWlcIDsKK+aUr+aMgeadrSA+IHNoaWppa291XCA7CivnhKHpmZDlpKcgPiBtdWdlbmRhaVwgOwor57K+57Gz5omAID4gc2VpbWFpam9cIDsKK+e1seiqnuirliA+IHRvdWdvcm9uXCA7CivmnKrplovlor4gPiBtaWthaWtvblwgOwor5L2c5qWt6LK7ID4gc2FneW91aGlcIDsKK+Wkp+mYquW6nCA+IG9vc2FrYWZ1XCA7CivnjIrnvo7muJMgPiBnZWliaWtlaVwgOwor5omT5pKD546LID4gZGFnZWtpb3VcIDsKK+W6g+iRieaouSA+IGtvdXlvdWp1XCA7CivojYnlibXmnJ8gPiBzb3Vzb3VraVwgOwor5L6N6KGb6ZW3ID4gamllaWNob3VcIDsKK+S6jOmAsuacqCA+IG5pc2hpbmdpXCA7CivpoZXlnKjljJYgPiBrZW56YWlrYVwgOwor5YaN6Kmm5ZCIID4gc2Fpc2hpYWlcIDsKK+S8nemfs+WZqCA+IGRlbicnb25raVwgOwor576p5YuZ55qEID4gZ2ltdXRla2lcIDsKK+i8uOWNteeuoSA+IHl1cmFua2FuXCA7CivkvY7liKnph5EgPiB0ZWlyaWtpblwgOwor5oim5Yip5ZOBID4gc2VucmloaW5cIDsKK+aWh+iqnuS9kyA+IGJ1bmdvdGFpXCA7Civkub7mgKfmsrkgPiBrYW5zZWl5dVwgOwor5pOC57KJ5pyoID4gc3VyaWtvZ2lcIDsKK+aMh+WwjuWToSA+IHNoaWRvdWluXCA7CivmnKrplovlnLAgPiBtaWthaWNoaVwgOwor56eY5pu45a6YID4gaGlzaG9rYW5cIDsKK+atpuWutueJqSA+IGJ1a2Vtb25vXCA7CivmlbTnkIbliLggPiBzZWlyaWtlblwgOwor6IKy6Zub5ZmoID4gaWt1c3V1a2lcIDsKK+Wcp+aQvuapnyA+IGFzc2FrdWtpXCA7CivkuozliIbms5UgPiBuaWJ1bmhvdVwgOwor5re35oiQ6KqeID4ga29uc2VpZ29cIDsKK+ePiOeQsuiLkSA+IGtvdWhpaWVuXCA7Civkuozpg6jkvZwgPiBuaWJ1c2FrdVwgOwor57eP5Lya5bGLID4gc291a2FpeWFcIDsKK+S7leaJi+aIpiA+IHNoaXRlc2VuXCA7Civlpb3lpb3niLogPiBrb3Vrb3V5YVwgOwor56iO5YuZ572yID4gemVpbXVzaG9cIDsKK+iyqeWjsuapnyA+IGhhbmJhaWtpXCA7CivnqbrmsJflrZQgPiBrdXVraWtvdVwgOwor55ay5Yq05oSfID4gaGlyb3VrYW5cIDsKK+aUvuawtOi3ryA+IGhvdXN1aXJvXCA7CivkvJrorbDmiYAgPiBrYWlnaXNob1wgOwor5b2i5a656KqeID4ga2VpeW91Z29cIDsKK+S4gOWbnuaIpiA+IGlra2Fpc2VuXCA7CivnlpHllY/oqZ4gPiBnaW1vbnNoaVwgOwor6Ium5Yq05Lq6ID4ga3Vyb3VuaW5cIDsKK+iBlueBq+WPsCA+IHNlaWthZGFpXCA7CivmsLTkvY3mqJkgPiBzdWlpaHlvdVwgOwor5oKy6Kaz6KuWID4gaGlrYW5yb25cIDsKK+WmhOiqnuaIkiA+IG1vdWdva2FpXCA7CivmsLjlsI/kvZwgPiBlaWtvc2FrdVwgOwor54Kt57Sg6Yu8ID4gdGFuc29rb3VcIDsKK+e5iue2readnyA+IHNlbmlzb2t1XCA7Civop6PmlL7ljLogPiBrYWlob3VrdVwgOwor5L+d5a6I5YWaID4gaG9zaHV0b3VcIDsKK+e0heS4gOeCuSA+IGtvdWl0dGVuXCA7CivkvIHmpa3lrrYgPiBraWd5b3VrYVwgOwor5a625bqt55SoID4ga2F0ZWl5b3VcIDsKK+iZmuepuuiUtSA+IGtva3V1em91XCA7CivkvJroqIjoqrIgPiBrYWlrZWlrYVwgOwor5Yuk5YuZ6ICFID4ga2lubXVzaGFcIDsKK+i3nembouaEnyA+IGt5b3Jpa2FuXCA7CivkuI3miJDlip8gPiBmdXNlaWtvdVwgOwor56WI5bm056WtID4ga2luZW5zYWlcIDsKK+eci+itt+azlSA+IGthbmdvaG91XCA7CivlgqzkuovloLQgPiBzYWlqaWpvdVwgOwor6ay85YW16ZqKID4ga2loZWl0YWlcIDsKK+Wls+WtkOWkpyA+IGpvc2hpZGFpXCA7CivllK/miJHoq5YgPiB5dWlnYXJvblwgOwor5pyq6KO95ZOBID4gbWlzZWloaW5cIDsKK+eEoee1seWItiA+IG11dG91c2VpXCA7CivpgKDoiLnmiYAgPiB6b3VzZW5qb1wgOwor6Lqr5pSv5bqmID4gbWlqaXRha3VcIDsKK+mHkeacrOS9jSA+IGtpbmhvbicnaVwgOwor5aSa6Z2i5oCnID4gdGFtZW5zZWlcIDsKK+Wkp+Wei+apnyA+IG9vZ2F0YWtpXCA7CivmnKrplovkurogPiBtaWthaWppblwgOwor6JeB5bGL5qC5ID4gd2FyYXlhbmVcIDsKK+aciOS4lueVjCA+IGdlc3Nla2FpXCA7CivlvpfmhI/poZQgPiB0b2t1aWdhb1wgOwor5omL6ZaT6ZqZID4gdGVtYWhpbWFcIDsKK+epuuawl+WPoyA+IGt1dWtpa291XCA7CivmlL/msrvniq8gPiBzZWlqaWhhblwgOwor5rSX6Z2i5ZmoID4gc2VubWVua2lcIDsKK+S6uuaWh+WtlyA+IGhpdG9tb2ppXCA7CivmqKHpgKDlk4EgPiBtb3pvdWhpblwgOwor5ZG85ZC45ZmoID4ga29reXV1a2lcIDsKK+Wcn+WcsOmRkSA+IHRvY2hpa2FuXCA7CivmsJfpgIHnrqEgPiBraXNvdWthblwgOwor5L2O6YeR5YipID4gdGVpa2lucmlcIDsKK+W4veWtkOWxiyA+IGJvdXNoaXlhXCA7CivlvqHmiJDlip8gPiBnb3NlaWtvdVwgOwor54+K55Ga5rW3ID4gc2FuZ29rYWlcIDsKK+abs+WFieW8viA+IGVpa291ZGFuXCA7CivljYPph4znnLwgPiBzZW5yaWdhblwgOwor6JC95LiL5YKYID4gcmFra2FzYW5cIDsKK+a4oeiIquiAhSA+IHRva291c2hhXCA7CivkuIvmiYvkurogPiBnZXNodW5pblwgOwor5Yem5aWz5p6XID4gc2hvam9yaW5cIDsKK+S6i+alremDqCA+IGppZ3lvdWJ1XCA7Civlr4zlsbHmiL8gPiBmdXphbmJvdVwgOwor5o6l5b6F6LK7ID4gc2V0dGFpaGlcIDsKK+e5iue2reaApyA+IHNlbicnaXNlaVwgOwor5omL6Kmx5rOVID4gc2h1d2Fob3VcIDsKK+S/nemkiuWcsCA+IGhveW91Y2hpXCA7CivliKnlt7Hlv4MgPiByaWtvc2hpblwgOwor54K554Gr5qCTID4gdGVua2FzZW5cIDsKK+mOlOmJseeCiSA+IHlvdWtvdXJvXCA7Civlj6/mj5vnvqQgPiBrYWthbmd1blwgOwor5Lya6K2w5aC0ID4ga2FpZ2lqb3VcIDsKK+S6uumdnuS6uiA+IG5pbnBpbmluXCA7CivoirHnsonnrqEgPiBrYWZ1bmthblwgOwor6YGO5r+A5rS+ID4ga2FnZWtpaGFcIDsKK+a6tuino+W6piA+IHlvdWthaWRvXCA7Civlj6Xoqq3ngrkgPiBrdXRvdXRlblwgOwor5o2c5p+76ZmjID4gc291c2FqaW5cIDsKK+S8gealreWMliA+IGtpZ3lvdWthXCA7CivllrbliKnnmoQgPiBlaXJpdGVraVwgOwor6KKr54G96ICFID4gaGlzYWlzaGFcIDsKK+S4jeW+k+mghiA+IGZ1anV1anVuXCA7Civlj43lsITngokgPiBoYW5zaGFyb1wgOwor5L2d5YOC55eFID4ga3VydWJ5b3VcIDsKK+mDveS8muS6uiA+IHRva2FpamluXCA7CivlkarnpoHpgZMgPiBqdWtvbmRvdVwgOwor5Y+k54mI5pysID4ga29oYW5ib25cIDsKK+a4rOWAmeaJgCA+IHNva2tvdWpvXCA7CivmtL7pgaPpmoogPiBoYWtlbnRhaVwgOwor5q2T6L+O5a60ID4ga2FuZ2VpZW5cIDsKK+aIkOWKn+ijoSA+IHNlaWtvdXJpXCA7Civlrrbluq3mrIQgPiBrYXRlaXJhblwgOwor5aSa5aSJ5pWwID4gdGFoZW5zdXVcIDsKK+eUt+aAp+e+jiA+IGRhbnNlaWJpXCA7Civpq5jmqZ/og70gPiBrb3VraW5vdVwgOwor5Lq66ZaT6IumID4gbmluZ2Vua3VcIDsKK+S4ieWRs+e3miA+IHNoYW1pc2VuXCA7Civlr7/llpznhLwgPiBzdWtpeWFraVwgOwor5ZCM56iL5bqmID4gZG91dGVpZG9cIDsKK+WlveWhqeiPjCA+IGtvdWVua2luXCA7CivpgIHmsJfnrqEgPiBzb3VraWthblwgOwor54qg54my6ICFID4gZ2lzZWlzaGFcIDsKK+iKsee0i+advyA+IGthbW9uYmFuXCA7Civpm7vlrZDljJYgPiBkZW5zaGlrYVwgOwor5bC95pyq5p2lID4gamlubWlyYWlcIDsKK+WPpeiqreazlSA+IGt1dG91aG91XCA7Civlpb3lpKnmsJcgPiBrb3V0ZW5raVwgOwor5rWE5YyW5qe9ID4gam91a2Fzb3VcIDsKK+acieWjsOmfsyA+IHl1dXNlaW9uXCA7Civlj43kvZznlKggPiBoYW5zYXlvdVwgOwor5YWo6Ieq5YuVID4gemVuamlkb3VcIDsKK+WPjeWvvua0viA+IGhhbnRhaWhhXCA7Civlh6blpbPmgKcgPiBzaG9qb3NlaVwgOwor5omL6ZaT6LODID4gdGVtYWNoaW5cIDsKK+S4gOWbnuWIhiA+IGlra2FpYnVuXCA7Civnvbnngb3ogIUgPiByaXNhaXNoYVwgOwor6LKv54Kt5omAID4gY2hvdGFuam9cIDsKK+acieS6uuWMliA+IHl1dWppbmthXCA7CivljbDosaHmtL4gPiBpbnNob3VoYVwgOwor6Kyb5ryU6ICFID4ga291ZW5zaGFcIDsKK+anjemojuWFtSA+IHNvdWtpaGVpXCA7CivpgIPpgb/ooYwgPiB0b3VoaWtvdVwgOwor5YaF54Gr6ImHID4gbmFpa2F0ZWlcIDsKK+Wcp+aQvuWZqCA+IGFzc2FrdWtpXCA7CivliKnmqKnlsYsgPiByaWtlbicneWFcIDsKK+WFieW6puioiCA+IGtvdWRva2VpXCA7CivplrLlhbXlj7AgPiBlcHBlaWRhaVwgOwor5re356iu6KqeID4ga29uc2h1Z29cIDsKK+mAj+mBjuaApyA+IHRvdWthc2VpXCA7CivkvJropovoqJggPiBrYWlrZW5raVwgOwor55u45Ly854K5ID4gc291aml0ZW5cIDsKK+ieuuWtkOmHmCA+IG5lamlrdWdpXCA7Civlh6blpbPls7AgPiBzaG9qb2hvdVwgOwor55yL6K235birID4ga2FuZ29zaGlcIDsKK+aciemggueCuSA+IHVjaG91dGVuXCA7CivkuIDnrYnmmJ8gPiBpdHRvdXNlaVwgOwor5LiL5rC06YGTID4gZ2VzdWlkb3VcIDsKK+mdnuS6uuaDhSA+IGhpbmluam91XCA7CivkuLvnvqnogIUgPiBzaHVnaXNoYVwgOwor5rS+6YGj6LuNID4gaGFrZW5ndW5cIDsKK+WGjeaPkOahiCA+IHNhaXRlaWFuXCA7Civnvo7mhI/orZggPiBiaWlzaGlraVwgOwor57eP5pys5a62ID4gc291aG9ua2VcIDsKK+W6puWkluimliA+IGRvZ2Fpc2hpXCA7CivpgaDlvoHpmoogPiBlbnNlaXRhaVwgOwor55CG5oOz5Z6LID4gcmlzb3VrZWlcIDsKK+S7ruWIhuaVsCA+IGthYnVuc3V1XCA7CivliqnmlbDoqZ4gPiBqb3N1dXNoaVwgOwor57K+566X5omAID4gc2Vpc2Fuam9cIDsKK+a2iOeBq+WZqCA+IHNob3VrYWtpXCA7CivlpJrpnaLkvZMgPiB0YW1lbnRhaVwgOwor5b2i6aq45YyWID4ga2VpZ2Fpa2FcIDsKK+asp+exs+S6uiA+IG91YmVpamluXCA7CivntYzluKvlsYsgPiBreW91aml5YVwgOwor6Kqk5aSJ5o+bID4gZ29oZW5rYW5cIDsKK+mChOS7mOmHkSA+IGthbnB1a2luXCA7CivmmanlvqHpo68gPiBiYW5nb2hhblwgOwor6IWV6Ieq5oWiID4gdWRlamltYW5cIDsKK+a1hOawtOWZqCA+IGpvdXN1aWtpXCA7CivliqnmlZnoq60gPiBqb2t5b3V5dVwgOwor55yL6K235aOrID4ga2FuZ29zaGlcIDsKK+awuOWtkOS9nCA+IGVpa29zYWt1XCA7Civlh6blpbPlnLAgPiBzaG9qb2NoaVwgOwor5Yip55So6ICFID4gcml5b3VzaGFcIDsKK+eEoeeyvuWNtSA+IG11c2VpcmFuXCA7CivnhKHplqLkv4IgPiBtdWthbmtlaVwgOwor5q2j5a2X5rOVID4gc2Vpamlob3VcIDsKK+i7jeWMu+eboyA+IGd1bicnaWthblwgOwor6K2m5LiW5a62ID4ga2Vpc2Vpa2FcIDsKK+adpeWtpuacnyA+IHJhaWdha2tpXCA7CivmmKDnlLvoqZUgPiBlaWdhaHlvdVwgOwor5om55Yik6ICFID4gaGloYW5zaGFcIDsKK+W5s+WPmeaWhyA+IGhlaWpvYnVuXCA7CivkuInph43oi6YgPiBzYW5qdXVrdVwgOwor5qih5YCj6ICFID4gbW9ob3VzaGFcIDsKK+S6iOmBuOS8miA+IHlvc2Vua2FpXCA7CivmvJTlpY/kvJogPiBlbnNvdWthaVwgOwor5LiN5rS75oCnID4gZnVrYXNzZWlcIDsKK+mWi+WPo+mDqCA+IGthaWtvdWJ1XCA7Civlj4zog7TmqZ8gPiBzb3Vkb3VraVwgOwor6aCI5byl5bGxID4gc2h1bWlzZW5cIDsKK+WBvemAoOe9qiA+IGdpem91emFpXCA7Civnp4DnlLvlrrYgPiBzaHV1Z2FrYVwgOwor5Lqk5Luj5ZOhID4ga291dGFpaW5cIDsKK+i1pOmbu+ipsSA+IGFrYWRlbndhXCA7CivmnInmnJ/liJEgPiB5dXVraWtlaVwgOwor5Y+j6Kmx5rOVID4ga291d2Fob3VcIDsKK+aIuOS4u+aoqSA+IGtvc2h1a2VuXCA7CivlhazlronlrpggPiBrb3VhbmthblwgOwor5q2v54mZ54q2ID4gc2hpZ2Fqb3VcIDsKK+S8neWjsOWZqCA+IGRlbnNlaWtpXCA7Civkv53pmbrph5EgPiBob2tlbmtpblwgOwor5oyH5pWw6YOoID4gc2hpc3V1YnVcIDsKK+ixquiPr+iIuSA+IGdvdWthc2VuXCA7CivkuLjmmpfoqJggPiBtYXJ1YW5raVwgOwor5Z+65rqW54K5ID4ga2lqdW50ZW5cIDsKK+W+jOaPtOS8miA+IGtvdWVua2FpXCA7CivnnIzorbDkvJogPiBrZW5naWthaVwgOwor6KGM5Zyo5omAID4gYW56YWlzaG9cIDsKK+WPo+iqnuaWhyA+IGtvdWdvYnVuXCA7Civlr53nhZnojYkgPiBuZXRhYmFrb1wgOwor5pat56C05aOKID4gZGFuaGFrYWlcIDsKK+ejgemJhOmJsSA+IGppdGVra291XCA7Civlhobngrrmm78gPiBlbmdhd2FzZVwgOwor55yL6K235YW1ID4ga2FuZ29oZWlcIDsKK+WWtualremDqCA+IGVpZ3lvdWJ1XCA7CivkuI3mtojljJYgPiBmdXNob3VrYVwgOwor5LiN5b6z576pID4gZnV0b2t1Z2lcIDsKK+WcsOWQuembqiA+IGppZnVidWtpXCA7CivpoIjlvKXlo4cgPiBzaHVtaWRhblwgOwor5L2Q5bmV5rS+ID4gc2FiYWt1aGFcIDsKK+mgk+eXtOawlyA+IHRvbmNoaWtpXCA7CivlpJrmlbDlhZogPiB0YXN1dXRvdVwgOwor6Ly46YCB6Ii5ID4geXVzb3VzZW5cIDsKK+aOoeayueaoqSA+IHNhaXl1a2VuXCA7CivmnaXkuJbntIAgPiByYWlzZWlraVwgOwor5bGx5rC055S7ID4gc2Fuc3VpZ2FcIDsKK+aOg+mZpOS6uiA+IHNvdWppbmluXCA7CivkuIDnrYnlnLAgPiBpdHRvdWNoaVwgOwor56iO5YuZ5a6YID4gemVpbXVrYW5cIDsKK+eci+itt+S6uiA+IGthbmdvbmluXCA7CivljYrliIfnrKYgPiBoYW5raXBwdVwgOwor5Zyn54CY5ZmoID4gYXRzdXJva2lcIDsKK+Wfuua6luazlSA+IGtpanVuaG91XCA7Civlj5forJvogIUgPiBqdWtvdXNoYVwgOwor5ris6Led5YSAID4gc29ra3lvZ2lcIDsKK+WGt+WHjeapnyA+IHJlaXRvdWtpXCA7CivnrYnot53pm6IgPiB0b3VreW9yaVwgOwor5LiN5ZCN5pWwID4gZnVtZWlzdXVcIDsKK+ippumBi+i7oiA+IHNoaXVudGVuXCA7Civnvqnli4flhbUgPiBnaXl1dWhlaVwgOwor6Kaq55S76Z2iID4gb3lhZ2FtZW5cIDsKK+aLkuWQpuaoqSA+IGt5b2hpa2VuXCA7Civkuoznlarnt5ogPiBuaWJhbnNlblwgOwor5Za25qWt6LK7ID4gZWlneW91aGlcIDsKK+ebuOS8vOW9oiA+IHNvdWppa2VpXCA7Civlj4znlJ/lhZAgPiBzb3VzZWlqaVwgOwor572554G95rCRID4gcmlzYWltaW5cIDsKK+WvhOeUn+acqCA+IHlhZG9yaWdpXCA7CivngavolqzluqsgPiBrYXlha3Vrb1wgOwor6LWk6aCt5be+ID4gYWthenVraW5cIDsKK+icpeictOW6pyA+IHRva2FnZXphXCA7CivorabloLHpn7MgPiBrZWlob3VvblwgOwor5aSn6Jyl6Jy0ID4gb290b2thZ2VcIDsKK+abtOeUn+acnyA+IGtvdXNlaWtpXCA7CivnlpHllY/mlocgPiBnaW1vbmJ1blwgOwor6I2354K65pu/ID4gbmlnYXdhc2VcIDsKK+Wcp+a/vuWZqCA+IGF0c3Vyb2tpXCA7CivohY7oh5Pngo4gPiBqaW56b3VlblwgOwor57ea57at5p2fID4gc2VuaXNva3VcIDsKK+WvhOi0iOiAhSA+IGtpem91c2hhXCA7Civlrrbluq3lhoUgPiBrYXRlaW5haVwgOwor6JC96Kqe5a62ID4gcmFrdWdva2FcIDsKK+eEoeevgOaTjSA+IG11c2Vzc291XCA7CivlrrnnlpHogIUgPiB5b3VnaXNoYVwgOwor5bGV6ZaL5ZuzID4gdGVua2FpenVcIDsKK+engeeUn+WFkCA+IHNoaXNlaWppXCA7CivlpKfmiYvnrYsgPiBvb3Rlc3VqaVwgOwor5YWs5a6a5L6hID4ga291dGVpa2FcIDsKK+awl+WIhuWxiyA+IGtpYnVuJyd5YVwgOwor5LiA562J5YW1ID4gaXR0b3VoZWlcIDsKK+S4i+awtOeuoSA+IGdlc3Vpa2FuXCA7CivmlbTmlbDmr5QgPiBzZWlzdXVoaVwgOwor56S+5YuZ5omAID4gc2hhbXVzaG9cIDsKK+mrmOWxpOmbsiA+IGtvdXNvdXVuXCA7CivluLjlpZfoqp4gPiBqb3V0b3Vnb1wgOwor6Ii55aSW5qmfID4gc2VuZ2Fpa2lcIDsKK+WPjOaal+i7iiA+IHNvdWFuc2hhXCA7Civml4XlrqLmqZ8gPiByeW9rYWtraVwgOwor6YGL5Za26ICFID4gdW4nJ2Vpc2hhXCA7CivmgaPmhI/nmoQgPiBzaGlpdGVraVwgOwor56C05aSp6I2SID4gaGF0ZW5rb3VcIDsKK+eGseW4r+WknCA+IG5ldHRhaXlhXCA7CivpgZTmiJDluqYgPiB0YXNzZWlkb1wgOwor5aSa6KeS5b2iID4gdGFrYWtrZWlcIDsKK+WFpeS8muaoqSA+IGlyaWFpa2VuXCA7CivljYPokYnnnIwgPiBjaGliYWtlblwgOwor5LqU5pyI6ZuoID4gc2FtaWRhcmVcIDsKK+aciemgguWkqSA+IHVjaG91dGVuXCA7CivmupbkvJrlk6EgPiBqdW5rYWlpblwgOwor5rC05puc5pelID4gc3VpeW91YmlcIDsKK+a4h+awtOacnyA+IGthc3N1aWtpXCA7Civnq7bppqzloLQgPiBrZWliYWpvdVwgOwor6bOp5bCP5bGLID4gaGF0b2dveWFcIDsKK+S4jeato+imliA+IGZ1c2Vpc2hpXCA7Civlm5vljYrmnJ8gPiBzaGloYW5raVwgOwor54aU6Ymx54KJID4geW91a291cm9cIDsKK+S9nOeUqOeCuSA+IHNheW91dGVuXCA7CivpgYrlnJLlnLAgPiB5dXVlbmNoaVwgOwor6LuM6YGT6Ii5ID4ga2lkb3VzZW5cIDsKK+W8geeQhuWjqyA+IGJlbnJpc2hpXCA7CivpurvphZTpioMgPiBtYXN1aWp1dVwgOwor5pyo6J665a2QID4gbW9rdW5lamlcIDsKK+atqeaVsOioiCA+IGhvc3V1a2VpXCA7CivkuLvpoYzmrYwgPiBzaHVkYWlrYVwgOwor5q2j5Lya5ZOhID4gc2Vpa2FpaW5cIDsKK+W+ruWIhuazlSA+IGJpYnVuaG91XCA7Civli5Xlk6Hku6QgPiBkb3VpbnJlaVwgOwor6Z2S55Om5Y+wID4gc2VpZ2FkYWlcIDsKK+a4oeiIueWgtCA+IHRvc2Vuam91XCA7CivmhI/orZjkuIsgPiBpc2hpa2lrYVwgOwor5L+d6K235Zu9ID4gaG9nb2tva3VcIDsKK+WQjOaAp+aEmyA+IGRvdXNlaWFpXCA7CivmsrnlnKflmaggPiB5dWF0c3VraVwgOwor54eV6Z2S5ouzID4gZW5zZWlrZW5cIDsKK+W5vOW5tOacnyA+IHlvdW5lbmtpXCA7Civosaroj6/niYggPiBnb3VrYWJhblwgOwor5Yy75Y6f55eFID4gaWdlbmJ5b3VcIDsKK+mbu+ipsee3miA+IGRlbndhc2VuXCA7Civlhrflh43luqsgPiByZWl0b3Vrb1wgOwor6YKE5LuY56iOID4ga2FucHV6ZWlcIDsKK+W8geitt+iAhSA+IGJlbmdvc2hhXCA7Civpm7voqbHntrIgPiBkZW53YW1vdVwgOwor55m75bGx6YGTID4gdG96YW5kb3VcIDsKK+mHjembu+apnyA+IGp1dWRlbmtpXCA7CivkuI3mgbDlpb0gPiBidWtha2tvdVwgOwor6Zi/5oi/6bOlID4gYWhvdWRvcmlcIDsKK+S6iOWCmeeahCA+IHlvYml0ZWtpXCA7CivmibbliqnmlpkgPiBmdWpvcnlvdVwgOwor54y/55+l5oG1ID4gc2FydWRqaWVcIDsKK+WcsOiUtemhlCA+IGppem91Z2FvXCA7CivkvZzmpa3loLQgPiBzYWd5b3ViYVwgOwor56m655u45aC0ID4ga3V1c291YmFcIDsKK+a3t+WQiOiqniA+IGtvbmdvdWdvXCA7CivlpqXljZTmoYggPiBkYWt5b3VhblwgOwor5oWw6Kyd5paZID4gaXNoYXJ5b3VcIDsKK+eEoeaKteaKlyA+IG11dGVpa291XCA7CivokYnnr4DngrkgPiBoYXNldHRlblwgOwor5LuW5YuV6KmeID4gdGFkb3VzaGlcIDsKK+acquaIkOW5tCA+IG1pc2VpbmVuXCA7Civmi5jlvJXnirYgPiBrb3VpbmpvdVwgOwor5pig55S754uCID4gZWlnYWt5b3VcIDsKK+azleiPr+e1jCA+IGhva2VreW91XCA7CivphaLmlpnnkIYgPiBzdXJ5b3VyaVwgOwor5pS/5bqc57GzID4gc2VpZnVtYWlcIDsKK+Wlvee1kOaenCA+IGtvdWtla2thXCA7CivmtLvmgKfljJYgPiBrYXNzZWlrYVwgOwor5Yqp6KiA6ICFID4gam9nb25zaGFcIDsKK+ijj+WNg+WutiA+IHVyYXNlbmtlXCA7CivoiI7liKnloZQgPiBzaGFyaXRvdVwgOwor5LiN56Wd5YSAID4gYnVzaHV1Z2lcIDsKK+mBjua4oeeahCA+IGthdG90ZWtpXCA7CivpmbboirjlrrYgPiB0b3VnZWlrYVwgOwor5L2c5qWt5ZOhID4gc2FneW91aW5cIDsKK+WFqOS4lueVjCA+IHplbnNla2FpXCA7CivlpJrmkanlt50gPiB0YW1hZ2F3YVwgOwor5b6u6Ium56yRID4gYmlrdXNob3VcIDsKK+asuueenuiAhSA+IGdpbWFuc2hhXCA7Civnq4vms5XlupwgPiByaXBwb3VmdVwgOwor6KKr54G95ZywID4gaGlzYWljaGlcIDsKK+eMm+aJk+iAhSA+IG1vdWRhc2hhXCA7CivkuI3npaXkuosgPiBmdXNob3VqaVwgOwor57WQ5p6c6KuWID4ga2Vra2Fyb25cIDsKK+S4i+awtOa6nSA+IGdlc3Vpa291XCA7CivmsLTpoqjlkYIgPiBtaXp1YnVyb1wgOwor5pa55L2N6KeSID4gaG91aWtha3VcIDsKK+mYsuWhteedgCA+IGJvdWppbmdpXCA7Civml6Loppbmg7MgPiBraXNoaWthblwgOwor5Y+j6Kqe5L2TID4ga291Z290YWlcIDsKK+W5uemDqOS8miA+IGthbmJ1a2FpXCA7CivkuqTpmpvosrsgPiBrb3VzYWloaVwgOwor5omL6ZaT5pqHID4gdGVtYWhpbWFcIDsKK+atpuWjq+mBkyA+IGJ1c2hpZG91XCA7CivprZTmlrnpmaMgPiBtYWhvdWppblwgOwor6JGh6JCE6YWSID4gYnVkb3VzaHVcIDsKK+WGt+WHjeWZqCA+IHJlaXRvdWtpXCA7Civlj4zlrZDluqcgPiBmdXRhZ296YVwgOwor6ISx5rC05qmfID4gZGFzc3Vpa2lcIDsKK+eBq+WPo+WOnyA+IGtha291Z2VuXCA7CivkvY7mrKHlhYMgPiB0ZWlqaWdlblwgOwor5Y6z5Yas5pyfID4gZ2VudG91a2lcIDsKK+S4uOirs+iomCA+IG1hcnVhbmtpXCA7CivkuI3pgIDou6IgPiBmdXRhaXRlblwgOwor5omL5Zyf55SjID4gdGVtaXlhZ2VcIDsKK+WNsemZuuimliA+IGtpa2Vuc2hpXCA7CivoiJ7ouIrlm6MgPiBidXRvdWRhblwgOwor5LiN5rG65a6aID4gZnVrZXR0ZWlcIDsKK+WbnuW4sOe3miA+IGthaWtpc2VuXCA7CivljLrmsJHnqI4gPiBrdW1pbnplaVwgOwor5L2V55Wq55uuID4gbmFuYmFubWVcIDsKK+iEseawl+awtCA+IGRha2tpc3VpXCA7CivliJHli5nmiYAgPiBrZWltdXNob1wgOwor5YGl5ZWW5a62ID4ga2VudGFua2FcIDsKK+egtOWjiuiAhSA+IGhha2Fpc2hhXCA7Civoh6rmhI/orZggPiBqaWlzaGlraVwgOwor5LiD5Y2B6LevID4gbmFuYXNvamlcIDsKK+ims+iHquWcqCA+IGthbmppemFpXCA7CivpgaDlv4PmqZ8gPiBlbnNoaW5raVwgOwor5pyx5Y2w6Ii5ID4gc2h1aW5zZW5cIDsKK+a0l+a/r+apnyA+IHNlbnRha2tpXCA7CivkuI3li5XnlKMgPiBmdWRvdXNhblwgOwor5Zm05rCX5a2UID4gZnVua2lrb3VcIDsKK+idpuWkt+adviA+IGV6b21hdHN1XCA7CivprLzliJHkuosgPiBvbmlrZWlqaVwgOwor5oSf5ZiG56ymID4ga2FudGFuZnVcIDsKK+azleWMu+WtpiA+IGhvdWlnYWt1XCA7Civps6XlsI/lsYsgPiB0b3JpZ295YVwgOwor6Ieq5Za25qWtID4gamllaWd5b3VcIDsKK+eyvumMrOaJgCA+IHNlaXJlbmpvXCA7Civpu4Toj5bokrIgPiBraXNob3VidVwgOwor5Lqc5aSn6Zm4ID4gYXRhaXJpa3VcIDsKK+WCmeiAg+ashCA+IGJpa291cmFuXCA7CivmnKrmiJDlk4EgPiBtaXNlaWhpblwgOwor54mH5omL6ZaTID4ga2F0YXRlbWFcIDsKK+S6uumWk+WRsyA+IG5pbmdlbm1pXCA7CivnhKHmhI/orZggPiBtdWlzaGlraVwgOwor5oqV6LOH5a62ID4gdG91c2hpa2FcIDsKK+S4i+awtOadvyA+IGdlc3VpaXRhXCA7CivppqzouYTlvaIgPiBiYXRlaWtlaVwgOwor5YWo6Z+z56ymID4gemVuJydvbnB1XCA7Civpq5jovJ3luqYgPiBrb3VraWRvdVwgOwor5LiN5Y+v5L61ID4gZnVrYXNoaW5cIDsKK+m7hOWPo+WFkCA+IGtvdWtvdWppXCA7CivliIbnp5HkvJogPiBidW5rYWthaVwgOwor6JyY6Jub6IacID4ga3Vtb21ha3VcIDsKK+S6i+alreWutiA+IGppZ3lvdWthXCA7CivlhaXkvJrlnLAgPiBpcmlhaWNoaVwgOwor5Zuz5pu46aSoID4gdG9zaG9rYW5cIDsKK+ijveeJiOaJgCA+IHNlaWhhbmpvXCA7CivmnbHlpKflr7ogPiB0b3VkYWlqaVwgOwor5Lit5L2N5pWwID4gY2h1dWlzdXVcIDsKK+WPguizgOiAhSA+IHNhbmdhc2hhXCA7Civmibnlh4bmm7ggPiBoaWp1bnNob1wgOwor6Iie6LiP5LyaID4gYnV0b3VrYWlcIDsKK+eQhuWMluWtpiA+IHJpa2FnYWt1XCA7CivnmbvlsbHogIUgPiB0b3phbnNoYVwgOwor5Yqp5pWZ5o6IID4gam9reW91anVcIDsKK+WIkeWLmeWumCA+IGtlaW11a2FuXCA7CivmlL/li5nlrpggPiBzZWltdWthblwgOwor5q2j576p5oSfID4gc2VpZ2lrYW5cIDsKK+WMu+iWrOWTgSA+IGl5YWt1aGluXCA7CivljJbnsqfnnYAgPiBrZXNob3VnaVwgOwor54Gr6YGU56OoID4gaGlkYXJ1bWFcIDsKK+S4jeW+ueW6lSA+IGZ1dGV0dGVpXCA7CivnlZnlrojlroUgPiBydXN1dGFrdVwgOwor5Yeh6Kmm5ZCIID4gYm9uc2hpYWlcIDsKK+S4h+atqeioiCA+IG1hbnBva2VpXCA7Civkuozmnprosp0gPiBuaW1haWdhaVwgOwor55So5rC06LevID4geW91c3Vpcm9cIDsKK+aZguioiOW6lyA+IHRva2VpdGVuXCA7Civlm7rlrprlrZAgPiBrb3RlaXNoaVwgOwor5pyJ54WZ54KtID4geXV1ZW50YW5cIDsKK+ism+a8lOS8miA+IGtvdWVua2FpXCA7Civoo4/prLzploAgPiB1cmFraW1vblwgOwor5b6h5q+N5qeYID4gb2thYXNhbWFcIDsKK+mBk+elluelniA+IGRvdXNvamluXCA7CivlkIjms5XljJYgPiBnb3Vob3VrYVwgOwor6aaW6YO95ZyPID4gc2h1dG9rZW5cIDsKK+S4ieavm+eMqyA+IG1pa2VuZWtvXCA7CivmjqLnn6XmqZ8gPiB0YW5jaGlraVwgOwor5q2754Gr5bGxID4gc2hpa2F6YW5cIDsKK+iJsuaooeanmCA+IGlyb21veW91XCA7Civns7jpm7voqbEgPiBpdG9kZW53YVwgOwor6YeN5aSn5YyWID4ganV1ZGFpa2FcIDsKK+S4ieauteebriA+IHNhbmRhbm1lXCA7Civnpa3lo4fluqcgPiBzYWlkYW56YVwgOwor5YWE5byf5a2QID4gYW5pZGVzaGlcIDsKK+mBi+WRveirliA+IHVubWVpcm9uXCA7Civmma7pgJrnp5EgPiBmdXRzdXVrYVwgOwor5LiK5Y+k5Y+yID4gam91a29zaGlcIDsKK+mgkOiyr+mHkSA+IHlvY2hva2luXCA7CivlpqXlvZPmgKcgPiBkYXRvdXNlaVwgOwor6JGh6JCE6ImyID4gYnVkb3Vpcm9cIDsKK+aOkuawtOi3ryA+IGhhaXN1aXJvXCA7CivmqKrmlq3pnaIgPiBvdWRhbm1lblwgOwor5pW057WM5qmfID4gc2Vpa2Vpa2lcIDsKK+S6i+alreWMliA+IGppZ3lvdWthXCA7CivnsKHkvZPlrZcgPiBrYW50YWlqaVwgOwor5Y+v5rq254mHID4ga2F5b3VoZW5cIDsKK+WEgOS7l+WFtSA+IGdpam91aGVpXCA7CivpmbjlsYvmoLkgPiByb2t1eWFuZVwgOwor5bqn6KuH5LyaID4gemFkYW5rYWlcIDsKK+W4huWJjeiIuSA+IGhvbWFlc2VuXCA7CivmjIfoqbHms5UgPiBzaGl3YWhvdVwgOwor5YG96YCg5ZOBID4gZ2l6b3VoaW5cIDsKK+S4luW4r+aVsCA+IHNldGFpc3V1XCA7CivkuIDlkajmnJ8gPiBpc3NodXVraVwgOwor5Lit6ICz54KOID4gY2h1dWppZW5cIDsKK+WvjOWjq+mAmiA+IGZ1aml0c3V1XCA7CivlrrblsYvnqI4gPiBrYW9rdXplaVwgOwor5qmf5YuV6ZqKID4ga2lkb3V0YWlcIDsKK+mYsueBq+e3miA+IGJvdWthc2VuXCA7CivmlZnorbfpmaIgPiBreW91Z29pblwgOwor6J665a2Q5bGxID4gbmVqaXlhbWFcIDsKK+S5s+WFkOmZoiA+IG55dXVqaWluXCA7CivohZXmmYLoqIggPiB1ZGVkb2tlaVwgOwor5pyx5Y2w54q2ID4gc2h1aW5qb3VcIDsKK+ecn+aEj+e+qSA+IHNoaW4nJ2lnaVwgOwor6YGK5oqA5aC0ID4geXV1Z2lqb3VcIDsKK+WLp+W3peWgtCA+IGthbmtvdWJhXCA7CivkuInlhqDppqwgPiBzYW5rYW5iYVwgOwor5aSp5omN5YWQID4gdGVuc2FpamlcIDsKK+mAhuiMguacqCA+IHNha2Ftb2dpXCA7Civoo5zlhYXlhbUgPiBob2p1dWhlaVwgOwor5bu66K2w6ICFID4ga2VuZ2lzaGFcIDsKK+W4uOWknOeBryA+IGpvdXlhdG91XCA7CivojYnlsYvmoLkgPiBrdXNheWFuZVwgOwor5qip5aiB6ICFID4ga2VuJydpc2hhXCA7CivnoJXlsqnmqZ8gPiBzYWlnYW5raVwgOwor6JGh6JCE57OWID4gYnVkb3V0b3VcIDsKK+eZveS6nOmkqCA+IGhha3Vha2FuXCA7Civmt7flkozmgKcgPiBrb253YXNlaVwgOwor5YyW57Kn5q6/ID4ga2V3YWlkZW5cIDsKK+WNg+WIhuavlCA+IHNlbmJ1bmhpXCA7CivmmYLoqIjlj7AgPiB0b2tlaWRhaVwgOwor5ZCM5q+N5aeJID4gZG91Ym9zaGlcIDsKK+S4iuW+l+aEjyA+IGpvdXRva3VpXCA7Civpu4TmsLTku5kgPiBraXN1aXNlblwgOwor5byx5ZGz5ZmMID4geW93YW1pc29cIDsKK+eVmeWuiOS4rSA+IHJ1c3VjaHV1XCA7CivlpInlo7DmnJ8gPiBoZW5zZWlraVwgOwor5bCP5YWQ56eRID4gc2hvdW5pa2FcIDsKK+S4ieWNgeaIuCA+IHNhbmppa2tvXCA7Civpm7vpm6LlsaQgPiBkZW5yaXNvdVwgOwor6auY6LiP5rS+ID4ga291dG91aGFcIDsKK+eQhuW3peezuyA+IHJpa291a2VpXCA7CivnhKHnpLzorJsgPiBidXJlaWtvdVwgOwor5LiA5ZGo5b+MID4gaXNzaHV1a2lcIDsKK+S4jeWNgeWIhiA+IGZ1anV1YnVuXCA7Civlk7rkubPmnJ8gPiBob255dXVraVwgOwor55+z5rK5546LID4gc2VraXl1b3VcIDsKK+WPr+mOlOeJhyA+IGtheW91aGVuXCA7CivlvqHliKnnm4ogPiBnb3JpeWFrdVwgOwor5oqV5pu45a62ID4gdG91c2hva2FcIDsKK+mBuueVmeWTgSA+IGlyeXV1aGluXCA7CivpgbrkvJ3nl4UgPiBpZGVuYnlvdVwgOwor5o+a54Kt5qmfID4geW91dGFua2lcIDsKK+mdnuWkieaPmyA+IGhpaGVua2FuXCA7CivmlLnmraPmoYggPiBrYWlzZWlhblwgOwor6auY6auY5bqmID4ga291a291ZG9cIDsKK+e1jOeUo+WppiA+IGtlaXNhbnB1XCA7CivotaToo7joo7ggPiBzZWtpcmFyYVwgOwor5re35ZCI5qmfID4ga29uZ291a2lcIDsKK+WvhOi0iOWTgSA+IGtpem91aGluXCA7CivlpJzooYzmgKcgPiB5YWtvdXNlaVwgOwor6ZG95a2U5qmfID4gc2Fua291a2lcIDsKK+WJjeihm+a0viA+IHplbicnZWloYVwgOwor5pyq5rG6566XID4gbWlrZXNzYW5cIDsKK+S4u+imgemDqCA+IHNodXlvdWJ1XCA7Civpgb/lr5LlnLAgPiBoaWthbmNoaVwgOwor5rC05Z6i6ZuiID4gbWl6dWdvcmlcIDsKK+WnlOiol+eUnyA+IGl0YWt1c2VpXCA7CivorabloLHmqZ8gPiBrZWlob3VraVwgOwor5rip572o5rOVID4gb24nJ2FucG91XCA7Civlr77lv5zniYggPiB0YWlvdWJhblwgOwor5ZaH5Zib5pWZID4gcmFtYWt5b3VcIDsKK+mBuueVmeWIhiA+IGlyeXV1YnVuXCA7CivmmIbluIPojLYgPiBrb25idWNoYVwgOwor5LmX566X5ZmoID4gam91emFua2lcIDsKK+iRrOWEgOekviA+IHNvdWdpc2hhXCA7CivliKTmpJzkuosgPiBoYW5rZW5qaVwgOwor54m555Ww54K5ID4gdG9rdWl0ZW5cIDsKK+S/nemZuuWxiyA+IGhva2VuJyd5YVwgOwor5LiN6YO95ZCIID4gZnV0c3Vnb3VcIDsKK+aJgOaMgemHkSA+IHNob2ppa2luXCA7CivomY7msrPosZogPiB0b3JhZnVndVwgOwor5oqA6IO96ICFID4gZ2lub3VzaGFcIDsKK+aKl+itsOaWhyA+IGtvdWdpYnVuXCA7Civml6Loo73lk4EgPiBraXNlaWhpblwgOwor5Z+656SO55qEID4ga2lzb3Rla2lcIDsKK+iynee0sOW3pSA+IGthaXphaWt1XCA7Civpu5Lnmb7lkIggPiBrdXJveXVyaVwgOwor6Iy26I+T5a2QID4gY2hhZ2FzaGlcIDsKK+WQpuWumuaWhyA+IGhpdGVpYnVuXCA7CivlvIHorbflo6sgPiBiZW5nb3NoaVwgOwor5omL6KOP5YmjID4gc2h1cmlrZW5cIDsKK+mKgOaZguioiCA+IGdpbmRva2VpXCA7CivkuInpgKPnrKYgPiBzYW5yZW5wdVwgOwor5bCP5YiH5a2QID4ga29raXJpa29cIDsKK+W9ouiAjOS4iiA+IGtlaWppam91XCA7CivmkK3kuZflk6EgPiB0b3Vqb3VpblwgOwor5LiW55WM6KazID4gc2VrYWlrYW5cIDsKK+aOouefpeWZqCA+IHRhbmNoaWtpXCA7CivlgInluqvnlaogPiBzb3Vrb2JhblwgOwor5paH56eR57O7ID4gYnVua2FrZWlcIDsKK+iDveaWh+WutiA+IG5vdWJ1bmthXCA7CivlvIHorbflm6MgPiBiZW5nb2RhblwgOwor6YqA5LiW55WMID4gZ2luc2VrYWlcIDsKK+aZrumBjeaApyA+IGZ1aGVuc2VpXCA7Civlj6/murbmgKcgPiBrYXlvdXNlaVwgOwor5YyI54mZ5YipID4gaGFuZ2FyaWlcIDsKK+eMv+ecn+S8vCA+IHNhcnVtYW5lXCA7CivnjKrlj6PmiY0gPiBjaG9rb3phaVwgOwor6Yuz54mp5birID4gaW1vbm9zaGlcIDsKK+eEoemJhOegsiA+IG11dGVwcG91XCA7CivlkIzliIbmr40gPiBkb3VidW5ib1wgOwor5pyq5raI5YyWID4gbWlzaG91a2FcIDsKK+W6g+adseiqniA+IGthbnRvbmdvXCA7CivkuIDnp4HkurogPiBpc3NoaWppblwgOwor5ryi6JS16KqeID4ga2Fuem91Z29cIDsKK+S6jOS6uuebriA+IGZ1dGFyaW1lXCA7Civlr4zlo6vntbkgPiBmdWppZ2ludVwgOwor6IKb6ZaA56eRID4ga291bW9ua2FcIDsKK+mdmembu+awlyA+IHNlaWRlbmtpXCA7Civljp/li5XmqZ8gPiBnZW5kb3VraVwgOwor5Lm+6Ii55rigID4ga2FuZG9ra3VcIDsKK+m8k+WQueiAhSA+IGtvc3Vpc2hhXCA7CivlpKflkoznha4gPiB5YW1hdG9uaVwgOwor6Iy26YGT5YW3ID4gY2hhZG91Z3VcIDsKK+aOkuawl+euoSA+IGhhaWtpa2FuXCA7CivlvZPkuovogIUgPiB0b3VqaXNoYVwgOwor5aKT6KqM6YqYID4gYm9zaGltZWlcIDsKK+efreawtOi3ryA+IHRhbnN1aXJvXCA7CivllqvojLblupcgPiBraXNzYXRlblwgOwor5pmC6ZaT5bivID4gamlrYW50YWlcIDsKK+eEoeawtOmFuCA+IG11c3Vpc2FuXCA7CivnoLTpmLLms5UgPiBoYWJvdWhvdVwgOwor5ZCI5q2T5pyoID4gbmVtdW5va2lcIDsKK+iBluatjOmaiiA+IHNlaWthdGFpXCA7CivljbDntJnnqI4gPiBpbnNoaXplaVwgOwor5oyH5o+u6ICFID4gc2hpa2lzaGFcIDsKK+aWh+aIv+WFtyA+IGJ1bmJvdWd1XCA7Civkv53nrqHph5EgPiBob2thbmtpblwgOwor5pyA5aSa5pWwID4gc2FpdGFzdXVcIDsKK+S4jemAj+aYjiA+IGZ1dG91bWVpXCA7CivmoL3ln7nmiYAgPiBzYWliYWlqb1wgOwor5p6X5qqO6YWSID4gcmluZ29zaHVcIDsKK+avjee0sOiDniA+IGJvc2FpYm91XCA7Civlpb3miZPogIUgPiBrb3VkYXNoYVwgOwor5YaG562S5b2iID4gZW50b3VrZWlcIDsKK+aRgumWouWutiA+IHNla2thbmtlXCA7CivmraPopo/ou40gPiBzZWlraWd1blwgOwor5bi45aWX5Y+lID4gam91dG91a3VcIDsKK+acquaxuua4iCA+IG1pa2Vzc2FpXCA7CivntYPmpb3lmaggPiBnZW5nYWtraVwgOwor57SN5oi46ImyID4gbmFuZG9pcm9cIDsKK+mdnue3muW9oiA+IGhpc2Vua2VpXCA7CivpoqjlkYLph5wgPiBmdXJvZ2FtYVwgOwor5byB6K235Lq6ID4gYmVuZ29uaW5cIDsKK+mOruWuiOW6nCA+IGNoaW5qdWZ1XCA7CivkuIDlvLXnvoUgPiBpdGNob3VyYVwgOwor5a2Q5Lya56S+ID4ga29nYWlzaGFcIDsKK+S4jeWHjea4ryA+IGZ1dG91a291XCA7CivljbXloZTloLQgPiByYW50b3ViYVwgOwor5Lit5aSu6YOoID4gY2h1dW91YnVcIDsKK+S4jeWHjea2siA+IGZ1dG91ZWtpXCA7CivlpKnnp6TluqcgPiB0ZW5iaW56YVwgOwor5Y2x6Zm65oCnID4ga2lrZW5zZWlcIDsKK+S4jeWHjea1tyA+IGZ1dG91a2FpXCA7CivnmbvlsbHluL0gPiB0b3phbmJvdVwgOwor54WO6LGG6IWQID4gaXJpZG91ZnVcIDsKK+WIuOWjsuapnyA+IGtlbmJhaWtpXCA7CivmmYLplpPlpJYgPiBqaWthbmdhaVwgOwor5rCX5YCZ5bivID4ga2lrb3V0YWlcIDsKK+alveWZqOW6lyA+IGdha2tpdGVuXCA7CivkuI3liIbmmI4gPiBmdWJ1bm1laVwgOwor5q2j6Zu75rCXID4gc2VpZGVua2lcIDsKK+acrOmHkeW6qyA+IGhvbmtpbmtvXCA7Civlj6/pjpTmgKcgPiBrYXlvdXNlaVwgOwor6ZuE5byB5a62ID4geXV1YmVua2FcIDsKK+S7mOW4r+eKryA+IGZ1dGFpaGFuXCA7Civopb/mtIvnooEgPiBzZWl5b3Vnb1wgOwor5oim5LqJ5b6MID4gc2Vuc291Z29cIDsKK+aVj+iFleWutiA+IGJpbndhbmthXCA7CivkuK3ku6XkuIogPiBjaHV1aWpvdVwgOwor6auY5LiL6aeEID4gdGFrYWdldGFcIDsKK+mdnuWjsuWTgSA+IGhpYmFpaGluXCA7CivkvZXku6Pnm64gPiBuYW5kYWltZVwgOwor6auY5p6257eaID4ga291a2FzZW5cIDsKK+awtOmdouS4iyA+IHN1aW1lbmthXCA7Civnsr7msrnmiYAgPiBzZWl5dXNob1wgOwor5p2x6KW/5bGLID4gdG91emFpeWFcIDsKK+mKheeJiOeUuyA+IGRvdWhhbmdhXCA7Civngorpo6/lmaggPiBzdWloYW5raVwgOwor5YWD5bil5bqcID4gZ2Vuc3VpZnVcIDsKK+mzpeS5i+W3oyA+IHRvcmlub3N1XCA7CivljLvnmYLou4ogPiBpcnlvdXNoYVwgOwor54m555Ww5oCnID4gdG9rdWlzZWlcIDsKK+WGrOiHs+e3miA+IHRvdWppc2VuXCA7Civnqb/lrZTmqZ8gPiBzZW5rb3VraVwgOwor54Sh6JOL6LuKID4gbXVnYWlzaGFcIDsKK+aKteaKl+WZqCA+IHRlaWtvdWtpXCA7CivokrjmsJfoiLkgPiBqb3VraXNlblwgOwor6Z2e6Kix5a65ID4gaGlreW95b3VcIDsKK+mBoOi/keazlSA+IGVua2luaG91XCA7Civku67lrprms5UgPiBrYXRlaWhvdVwgOwor5re35ZCI5ZmoID4ga29uZ291a2lcIDsKK+ilv+a0i+eUuyA+IHNlaXlvdWdhXCA7CivpgZTno6jlv4wgPiBkYXJ1bWFraVwgOwor55Wz5oiQ6KqeID4gam91c2VpZ29cIDsKK+aAquS6i+S7tiA+IGthaWppa2VuXCA7CivmiYDmjIHogIUgPiBzaG9qaXNoYVwgOwor5pOs5Lq65rOVID4gZ2lqaW5ob3VcIDsKK+a6luWkp+aJiyA+IGp1bicnb290ZVwgOwor5Zue6Lui5qmfID4ga2FpdGVua2lcIDsKK+WPr+WTgOebuCA+IGthd2Fpc291XCA7CivkuqTpmpvlrrYgPiBrb3VzYWlrYVwgOwor6Zui5Lmz5pyfID4gcmlueXV1a2lcIDsKK+ejgeaAp+WxpCA+IGppc2Vpc291XCA7CivotorlhqzpmoogPiBldHRvdXRhaVwgOwor6K2c6Z2i5Y+wID4gZnVtZW5kYWlcIDsKK+S7ruWwj+WxiyA+IGthcmlnb3lhXCA7Civnm67oq5boposgPiBtb2t1cm9taVwgOwor5LuZ6Iqx57SZID4gc2Vua2FzaGlcIDsKK+a8lOeul+WtkCA+IGVuemFuc2hpXCA7CivmnInpmZDlgIsgPiB5dXVnZW5rb1wgOwor5oi46Zqc5a2QID4gdG9zaG91amlcIDsKK+WPr+mNm+aApyA+IGthdGFuc2VpXCA7CivlpKrpvJPliKQgPiB0YWlrb2JhblwgOwor5rW35Z2K5Li7ID4gdW1pYm91enVcIDsKK+m7jemtmuWtkCA+IGtpYmluYWdvXCA7CivllrbmnpfnvbIgPiBlaXJpbnNob1wgOwor5pmu6L665oCnID4gZnVoZW5zZWlcIDsKK+WbuuacieWApCA+IGtveXV1Y2hpXCA7CivpgbrkvJ3lraYgPiBpZGVuZ2FrdVwgOwor6IKy56iu5omAID4gaWt1c2h1am9cIDsKK+mHkemNjemHkSA+IGtpbm1la2tpXCA7CivpvLvpoqjpgqogPiBoYW5ha2F6ZVwgOwor5Y+C5LqL5a6YID4gc2FuamlrYW5cIDsKK+ebuOirh+aJgCA+IHNvdWRhbmpvXCA7CivnhKHnqI7lk4EgPiBtdXplaWhpblwgOwor5b+c562U6IO9ID4gb3V0b3Vub3VcIDsKK+aknOWVj+aJgCA+IGtlbm1vbmpvXCA7CivlsqHloLTmiYAgPiBva2FiYXNob1wgOwor5Zyw6JS15bCKID4gaml6b3Vzb25cIDsKK+epuuS4lui+niA+IGthcmFzZWppXCA7CivooajlhbflsYsgPiBoeW91Z3V5YVwgOwor5byU5oWw6YeRID4gY2hvdWlraW5cIDsKK+WIneeUo+WppiA+IHNob3NhbnB1XCA7CivmmpfoqJjniakgPiBhbmtpbW9ub1wgOwor6bq76YWU5YmkID4gbWFzdWl6YWlcIDsKK+iXquWMu+iAhSA+IHlhYnVpc2hhXCA7CivkvZXmmYLpoIMgPiBpdHN1Z29yb1wgOwor5LqM576p55qEID4gbmlnaXRla2lcIDsKK+mbgeearue0mSA+IGdhbnBpc2hpXCA7Civml6XlkozoposgPiBoaXlvcmltaVwgOwor56S+5Lya6YOoID4gc2hha2FpYnVcIDsKK+WIpeS4lueVjCA+IGJlc3Nla2FpXCA7CivnhKHlkI3msI8gPiBtdW1laXNoaVwgOwor6ZuH5YKt6ICFID4ga295b3VzaGFcIDsKK+e1oue3nuWtkCA+IGF5YWRvbnN1XCA7CivmuKbnirbmlocgPiBrYWpvdW1vblwgOwor6Ieq5YuV6LuKID4gamlkb3VzaGFcIDsKK+mZpOiNieWJpCA+IGpvc291emFpXCA7CivkuI3lhazmraMgPiBmdWtvdXNlaVwgOwor6ZeY5oqA5aC0ID4gdG91Z2lqb3VcIDsKK+S4u+iomOaGtiA+IHNodWtpb2t1XCA7CivpvLvkuIvplbcgPiBiaWthY2hvdVwgOwor5pyA5aSn5YyWID4gc2FpZGFpa2FcIDsKK+mYsueCjuWJpCA+IGJvdWVuemFpXCA7CivmurbpibHngokgPiB5b3Vrb3Vyb1wgOwor5L2V5pmC6ZaTID4gbmFuamlrYW5cIDsKK+ezu+e1seaouSA+IGtlaXRvdWp1XCA7CivlvqHoh6rouqsgPiBnb2ppc2hpblwgOwor5LiK6I+T5a2QID4gam91Z2FzaGlcIDsKK+iiq+a4m+aVsCA+IGhpZ2Vuc3V1XCA7CivmmJ/mnaHml5cgPiBzZWlqb3VraVwgOwor55aO5rC05oCnID4gc29zdWlzZWlcIDsKK+iHquayu+aoqSA+IGppY2hpa2VuXCA7CivpgK7mjZXogIUgPiB0YWlob3NoYVwgOwor5LqM6aCt562LID4gbml0b3VraW5cIDsKK+e0oOa1quS6uiA+IHN1cm91bmluXCA7Civnp4vloLTmiYAgPiBha2liYXNob1wgOwor6Ii554Gr5LqLID4gZnVuYWthamlcIDsKK+iCsueoruWutiA+IGlrdXNodWthXCA7CivmraPoqrLlpJYgPiBzZWlrYWdhaVwgOwor54WJ55Om5aGAID4gcmVuZ2FiZWlcIDsKK+iLseaWh+azlSA+IGVpYnVucG91XCA7CivmnKrmsbrlrpogPiBtaWtldHRlaVwgOwor6aaW6ISz6YOoID4gc2h1bm91YnVcIDsKK+WBpeW6t+e+jiA+IGtlbmtvdWJpXCA7CivkuKHorbDpmaIgPiByeW91Z2lpblwgOwor5oSb5ZSx5q2MID4gYWlzaG91a2FcIDsKK+S6jOacrOajkiA+IG5paG9uYm91XCA7CivpnZLnianlsYsgPiBhb21vbm95YVwgOwor5Luu5a6a5b2iID4ga2F0ZWlrZWlcIDsKK+iHquWLleipniA+IGppZG91c2hpXCA7Civkvr/lrpzkuIogPiBiZW5naWpvdVwgOwor55Sw6IiO6aKoID4gaW5ha2FmdXVcIDsKK+acneW+oemjryA+IGFzYWdvaGFuXCA7CivmjIfmj67mqKkgPiBzaGlraWtlblwgOwor6Kit6KiI5ZuzID4gc2Vra2VpenVcIDsKK+mDqOWkluiAhSA+IGJ1Z2Fpc2hhXCA7CivokazlhIDloLQgPiBzb3VnaWpvdVwgOwor56OB5oCn5L2TID4gamlzZWl0YWlcIDsKK+mKgOacrOS9jSA+IGdpbmhvbicnaVwgOwor5pS/5YWa5ZOhID4gc2VpdG91aW5cIDsKK+WvvuW/nOWApCA+IHRhaW91Y2hpXCA7Civou43oiabml5cgPiBndW5rYW5raVwgOwor5LqM5LmX5qC5ID4gbmlqb3Vrb25cIDsKK+aMh+aPruajkiA+IHNoaWtpYm91XCA7Civmr43lm73oqp4gPiBib2tva3Vnb1wgOwor55S755So57SZID4gZ2F5b3VzaGlcIDsKK+aknOa4qeWZqCA+IGtlbicnb25raVwgOwor6aeG5r2c6ImHID4ga3VzZW50ZWlcIDsKK+WgleiDjue9qiA+IGRhdGFpemFpXCA7Civno4HmsJflraYgPiBqaWtpZ2FrdVwgOwor5oeQ54KJ54GwID4ga2Fpcm9iYWlcIDsKK+imgeazqOaEjyA+IHlvdWNodXVpXCA7CivliJ3nlJ/lhZAgPiBzaG9zZWlqaVwgOwor5LiN6a6u5piOID4gZnVzZW5tZWlcIDsKK+Wkqem1nue1qCA+IGJpcm91ZG91XCA7Civoo73ns5bmiYAgPiBzZWl0b3Vqb1wgOwor5YWI6aeG6ICFID4gc2Vua3VzaGFcIDsKK+WKqeaIkOmHkSA+IGpvc2Vpa2luXCA7CivmuKHmnaXkurogPiB0b3JhaWppblwgOwor6YCf6KiY6ICFID4gc29ra2lzaGFcIDsKK+iJpui8ieapnyA+IGthbnNhaWtpXCA7CivnhKHlkI3mjIcgPiBtdW1laXNoaVwgOwor6KO957KJ5qmfID4gc2VpZnVua2lcIDsKK+S5seWxpOmbsiA+IHJhbnNvdXVuXCA7Civlj4LkuovkvJogPiBzYW5qaWthaVwgOwor5o6S5rCX5byBID4gaGFpa2liZW5cIDsKK+ato+e1sea0viA+IHNlaXRvdWhhXCA7Civoo5zkvZDlvbkgPiBob3NheWFrdVwgOwor5pyq6YWN5b2TID4gbWloYWl0b3VcIDsKK+aYr+mdnuWFsSA+IHplaGl0b21vXCA7CivmnKrliIrooYwgPiBtaWthbmtvdVwgOwor5p6i5qmf5Y2/ID4gc3V1a2lrZWlcIDsKK+acqumBgue9qiA+IG1pc3VpemFpXCA7CivmlofljJbosqEgPiBidW5rYXphaVwgOwor5q2m6KOF6Ii5ID4gYnVzb3VzZW5cIDsKK+iomOiAheWboyA+IGtpc2hhZGFuXCA7CivlvqHnlKjpgrggPiBnb3lvdXRlaVwgOwor5b6h5YWI5qOSID4gb3Nha2lib3VcIDsKK+WumuavlOS+iyA+IHRlaWhpcmVpXCA7Civlr4zlo6vlt50gPiBmdWppa2F3YVwgOwor55Sj5Y215pyfID4gc2FucmFua2lcIDsKK+WIhuebuOapnyA+IGJ1bnNvdWtpXCA7CivkuIrlsaTpm7IgPiBqb3Vzb3V1blwgOwor5LiJ5qyh5YWDID4gc2FuamlnZW5cIDsKK+e+pOmmrOecjCA+IGd1bm1ha2VuXCA7CivlhbXnq5npg6ggPiBoZWl0YW5idVwgOwor5LiN5YWs5bmzID4gZnVrb3VoZWlcIDsKK+WJjem8u+e3kiA+IG1hZWhhbmFvXCA7CivkuI3lh43liaQgPiBmdXRvdXphaVwgOwor54mp55yf5Ly8ID4gbW9ub21hbmVcIDsKK+mBiuatqemBkyA+IHl1dWhvZG91XCA7Civlj6/lk4Dmg7MgPiBrYXdhaXNvdVwgOwor56if6K2w5pu4ID4gcmluZ2lzaG9cIDsKK+eEoeWItumZkCA+IG11c2VpZ2VuXCA7CivkvZPogrLlrrYgPiB0YWlpa3VrYVwgOwor5YiG5bKQ6aeFID4gYnVua2lla2lcIDsKK+WMu+eZgueUqCA+IGlyeW91eW91XCA7CivpgK7mjZXnirYgPiB0YWlob2pvdVwgOwor6YGO5Y675bizID4ga2Frb2Nob3VcIDsKK+apn+WLleaApyA+IGtpZG91c2VpXCA7CivnhrHpoqjngokgPiBuZXBwdXVyb1wgOwor5q2p6KGM6ICFID4gaG9rb3VzaGFcIDsKK+WGhumMkOW9oiA+IGVuc3Vpa2VpXCA7Civlrojpiq3lpbQgPiBzaHVzZW5kb1wgOwor6YGT5YyW5birID4gZG91a2VzaGlcIDsKK+S4i+iFuemDqCA+IGthZnVrdWJ1XCA7Civlj43mlL/lupwgPiBoYW5zZWlmdVwgOwor5Zue6Lui5YSAID4ga2FpdGVuZ2lcIDsKK+S4iuiNieWxpSA+IHV3YXpvdXJpXCA7CivnsbPkuIrpmaIgPiBiZWlqb3VpblwgOwor5LiA5biz576FID4gaXRjaG91cmFcIDsKK+acneeoveWPpCA+IGFzYWdlaWtvXCA7Civoo73nsonmiYAgPiBzZWlmdW5qb1wgOwor6KKr5rK76ICFID4gaGljaGlzaGFcIDsKK+WurueUsOWutiA+IG1peWF0YWtlXCA7Civov5HooZvlhbUgPiBrb25vZWhlaVwgOwor5bKp5omL55yMID4gaXdhdGVrZW5cIDsKK+mAo+maiuaXlyA+IHJlbnRhaWtpXCA7CivnrqHmpb3lmaggPiBrYW5nYWtraVwgOwor6Kyd5oGp5LyaID4gc2hhb25rYWlcIDsKK+mkiuicguWutiA+IHlvdWhvdWthXCA7CivkupTnt5rntJkgPiBnb3NlbnNoaVwgOwor5bmz55Sf552AID4gaGVpemVpZ2lcIDsKK+apn+W4huiIuSA+IGtpaGFuc2VuXCA7CivpnZ7mjpLmsLQgPiBoaWhhaXN1aVwgOwor552A55Wq5Y+3ID4ga2liYW5nb3VcIDsKK+S4jeWAq+e9qiA+IGZ1cmluemFpXCA7Civpo7TntLDlt6UgPiBhbWV6YWlrdVwgOwor5YG95Ly855eHID4gZ2lqaXNob3VcIDsKK+Wkp+W6g+mWkyA+IG9vaGlyb21hXCA7Civpgb/pm6PogIUgPiBoaW5hbnNoYVwgOwor5a6a5bi45rOiID4gdGVpam91aGFcIDsKK+aMh+aPruWumCA+IHNoaWtpa2FuXCA7Civku5jlsZ7oqp4gPiBmdXpva3Vnb1wgOwor5bm05Lya6LK7ID4gbmVua2FpaGlcIDsKK+aVheiyt+iAhSA+IGtvYmFpc2hhXCA7CivkupTlpKfmtIsgPiBnb2RhaXlvdVwgOwor54+q6Je75ZyfID4ga2Vpc291ZG9cIDsKK+S6uuWQjeewvyA+IGppbm1laWJvXCA7CivmjpLmsJflj6MgPiBoYWlraWtvdVwgOwor6YG/5aaK5rOVID4gaGluaW5ob3VcIDsKK+iQjOacqOiJsiA+IG1vZWdpaXJvXCA7CivnibnkvqHlk4EgPiB0b2trYWhpblwgOwor5o+a5oqX5q+UID4geW91a291aGlcIDsKK+mbh+eUqOiAhSA+IGtveW91c2hhXCA7Civovp7mm7jpoZ4gPiBqaXNob3J1aVwgOwor5aSn5b6A55SfID4gZGFpb3Vqb3VcIDsKK+i/vei1t+iotCA+IHRzdWlraXNvXCA7CivpgY7ljYrmlbAgPiBrYWhhbnN1dVwgOwor5a6J5oGv5pelID4gYW5zb2t1YmlcIDsKK+WGjea1ruS4iiA+IHNhaWZ1am91XCA7Civlm7Pmm7jliLggPiB0b3Nob2tlblwgOwor55m66LW35Lq6ID4gaG9ra2luaW5cIDsKK+mBk+WFt+irliA+IGRvdWd1cm9uXCA7CivliIbnm7jlv5wgPiBidW5zb3VvdVwgOwor56uL5YCZ6KOcID4gcmlra291aG9cIDsKK+mBv+aakeWcsCA+IGhpc2hvY2hpXCA7CivmjqXpqqjmnKggPiBuaXdhdG9rb1wgOwor56S+5Lya56eRID4gc2hha2Fpa2FcIDsKK+S4iuapn+WrjCA+IGpvdWtpZ2VuXCA7CivkuqTmj5vmiYAgPiBrb3VrYW5qb1wgOwor5Zac5q2M5YqHID4ga2lrYWdla2lcIDsKK+a3u+WKoOWJpCA+IHRlbmthemFpXCA7CivmnKrlvqnlk6EgPiBtaWZ1a3VpblwgOwor6KyZ6YGc6KqeID4ga2Vuc29uZ29cIDsKK+acquWHpue9riA+IG1pc2hvY2hpXCA7CivlnLDlvaLlm7MgPiBjaGlrZWl6dVwgOwor5pyq55+l5pWwID4gbWljaGlzdXVcIDsKK+WFq+a9rui3ryA+IHlhc2hpb2ppXCA7Civku6PnkIbogIUgPiBkYWlyaXNoYVwgOwor6LuN5Luk6YOoID4gZ3VucmVpYnVcIDsKK+aoquaWh+WtlyA+IHlva29tb2ppXCA7CivlpKrlj6Tku6MgPiB0YWlrb2RhaVwgOwor5bm+5L2V5a2mID4ga2lrYWdha3VcIDsKK+ilv+a0i+WMliA+IHNlaXlvdWthXCA7CivliJHkvZnogIUgPiBrZWl5b3NoYVwgOwor5rih5LiW5Lq6ID4gdG9zZWluaW5cIDsKK+e+hemHneWEgCA+IHJhc2hpbmdpXCA7CivlrZDpn7PnvqQgPiBzaGlpbmd1blwgOwor5pqX6Ki85YyWID4gYW5zaG91a2FcIDsKK+a7kei1sOi3ryA+IGthc3NvdXJvXCA7Civoo73lm7Pmnb8gPiBzZWl6dWJhblwgOwor55qH57Wx6K2cID4ga291dG91ZnVcIDsKK+eQhuWtpumDqCA+IHJpZ2FrdWJ1XCA7Civoi7Hoqp7lob4gPiBlaWdvanVrdVwgOwor5oKy5Zac5YqHID4gaGlraWdla2lcIDsKK+S/neeuoeaelyA+IGhva2FucmluXCA7Civlho3mraboo4UgPiBzYWlidXNvdVwgOwor6LWk6Jy76JuJID4gYWthdG9uYm9cIDsKK+S6iOmljOS8miA+IHlvc2Vua2FpXCA7CivnhKHovrrpmpsgPiBtdWhlbnphaVwgOwor5LiN6Ieq54S2ID4gZnVzaGl6ZW5cIDsKK+iFjuS4jeWFqCA+IGppbmZ1emVuXCA7CivlrrTkvJrloLQgPiBlbmthaWpvdVwgOwor57WM5LiW5a62ID4ga2Vpc2Vpa2FcIDsKK+S4jeS/oeiAhSA+IGZ1c2hpbmphXCA7CivljZjmnKzkvY0gPiB0YW5ob24nJ2lcIDsKK+WGhumMkOWPsCA+IGVuc3VpZGFpXCA7Civlm6DmnpzogIUgPiBpbmdhbW9ub1wgOwor5LiN5L+h576pID4gZnVzaGluZ2lcIDsKK+i7jeS6i+mdoiA+IGd1bmppbWVuXCA7CivmgZLmsrPmspkgPiBnb3VnYXNoYVwgOwor5Ym15qGI6ICFID4gc291YW5zaGFcIDsKK+iHquayu+S9kyA+IGppY2hpdGFpXCA7CivnnYDlsLrlnLAgPiBraWpha3VqaVwgOwor5b6M5Y2K5pyfID4ga291aGFua2lcIDsKK+iHquayu+S8miA+IGppY2hpa2FpXCA7CivkvqHlgKToprMgPiBrYWNoaWthblwgOwor6KW/6YGK6KiYID4gc2VpeXV1a2lcIDsKK+W5tOS7o+iomCA+IG5lbmRhaWtpXCA7CivmhJ/mg4XlrrYgPiBrYW5qb3VrYVwgOwor5paH5YyW56WtID4gYnVua2FzYWlcIDsKK+WkieaPm+WZqCA+IGhlbmthbmtpXCA7CivkuJbnlYzlj7IgPiBzZWthaXNoaVwgOwor5Y+X57K+5Y21ID4ganVzZWlyYW5cIDsKK+e3j+aMh+aPriA+IHNvdXNoaWtpXCA7CivlubTnlLLmlpAgPiB0b3NoaWdhaVwgOwor5LiN5YWF5YiGID4gZnVqdXVidW5cIDsKK+azpeS7leWQiCA+IGRvcm9qaWFpXCA7CivmuIXlrZDpn7MgPiBzZWlzaGlpblwgOwor5LqM5pyf5L2cID4gbmlraXNha3VcIDsKK+aoque0i+etiyA+IG91bW9ua2luXCA7CivpgYvli5XnlYwgPiB1bmRvdWthaVwgOwor5pyq55m66KaLID4gbWloYWtrZW5cIDsKK+WBtuWDj+WMliA+IGd1dXpvdWthXCA7Civoo5zogbTlmaggPiBob2Nob3VraVwgOwor6Iux6Kqe5YqHID4gZWlnb2dla2lcIDsKK+mbu+eul+apnyA+IGRlbnNhbmtpXCA7Civlho3lkJ/lkbMgPiBzYWlnaW5taVwgOwor5YaG6YyQ5L2TID4gZW5zdWl0YWlcIDsKK+S6iOmknuS8miA+IHlvc2Vua2FpXCA7CivpnZLlpKnkupUgPiBhb3RlbmpvdVwgOwor6Z2e5oim6KuWID4gaGlzZW5yb25cIDsKK+acqueZuuihjCA+IG1paGFra291XCA7Civnm7jloLTluKsgPiBzb3ViYXNoaVwgOwor5Y+k5oim5aC0ID4ga29zZW5qb3VcIDsKK+S4ieeVs+e0gCA+IHNhbmpvdWtpXCA7Civlpb3mhI/nmoQgPiBrb3VpdGVraVwgOwor5b6h6aaz6LWwID4gZ29jaGlzb3VcIDsKK+aJtumkiuiAhSA+IGZ1eW91c2hhXCA7CivljYHlrZfou40gPiBqdXVqaWd1blwgOwor5oyJ5omL56S8ID4gYW5zaHVyZWlcIDsKK+WQjOS9jeinkiA+IGRvdWlrYWt1XCA7CivovKrou6LmqZ8gPiByaW50ZW5raVwgOwor5Y6t5Lq66ICFID4gZW5qaW5zaGFcIDsKK+eEoemFjeW9kyA+IG11aGFpdG91XCA7Civlr4zoo5XnqI4gPiBmdXl1dXplaVwgOwor6YGO5Yq05q27ID4ga2Fyb3VzaGlcIDsKK+e0heihm+WFtSA+IGtvdWVpaGVpXCA7CivnrqHnkIbogIUgPiBrYW5yaXNoYVwgOwor5aSc5ZWG5Lq6ID4geW9ha2luZG9cIDsKK+iIjOS4i+iFuiA+IHpla2thc2VuXCA7CivmiYDmjIHlk4EgPiBzaG9qaWhpblwgOwor57SA6KGM5paHID4ga2lrb3VidW5cIDsKK+eBq+WxseeBsCA+IGthemFuYmFpXCA7CivpqI7lo6vpgZMgPiBraXNoaWRvdVwgOwor5Ymw5L2Z6YeRID4gam91eW9raW5cIDsKK+ixiuawtOacnyA+IGhvdXN1aWtpXCA7CivkvY7og73lhZAgPiB0ZWlub3VqaVwgOwor5biw57SN5rOVID4ga2lub3Vob3VcIDsKK+eNheWtkOW6pyA+IHNoaXNoaXphXCA7CivkuqTmj5vlmaggPiBrb3VrYW5raVwgOwor5LiW55WM5Lq6ID4gc2VrYWlqaW5cIDsKK+ihm+eUn+maiiA+IGVpc2VpdGFpXCA7CivnkIbkuovplbcgPiByaWppY2hvdVwgOwor5bmz5bGL5qC5ID4gaGlyYXlhbmVcIDsKK+WFg+iAgemZoiA+IGdlbnJvdWluXCA7Civmo4TmqKnogIUgPiBraWtlbnNoYVwgOwor5LiW55WM5LitID4gc2VrYWlqdXVcIDsKK+ays+WPo+a4ryA+IGtha291a291XCA7CivkuI3kvZPoo4EgPiBmdXRlaXNhaVwgOwor5q+S6JyY6JubID4gZG9rdWd1bW9cIDsKK+WNmOiqnuevhyA+IHRhbmdvaGVuXCA7CivnlJ/lvpLmlbAgPiBzZWl0b3N1dVwgOwor576K55qu57SZID4geW91aGlzaGlcIDsKK+avjeezu+WItiA+IGJva2Vpc2VpXCA7CivlsZXnpLrloLQgPiB0ZW5qaWpvdVwgOwor5b6M6YG655eHID4ga291aXNob3VcIDsKK+S4jeWumuipniA+IGZ1dGVpc2hpXCA7CivliqDmi4XogIUgPiBrYXRhbnNoYVwgOwor6Zm96Zu75rCXID4geW91ZGVua2lcIDsKK+Wuo+S8neiyuyA+IHNlbmRlbmhpXCA7CivliofmmKDnlLsgPiBnZWtpZWlnYVwgOwor54Sh5bi46KazID4gbXVqb3VrYW5cIDsKK+mBiuiVqeWFkCA+IHl1dXRvdWppXCA7Civph5HmuoDlrrYgPiBraW5tYW5rYVwgOwor6Yyg5YmN5bGLID4gam91bWFleWFcIDsKK+efpeWQjeW6piA+IGNoaW1laWRvXCA7Civlh7rpsYjnm64gPiBkZXRhcmFtZVwgOwor5oeH6Kmx5LyaID4ga29ud2FrYWlcIDsKK+mBv+mbo+awkSA+IGhpbmFubWluXCA7CivljYHlrZfooZcgPiBqdXVqaWdhaVwgOwor5Li75ryU6ICFID4gc2h1ZW5zaGFcIDsKK+S4luS/l+WMliA+IHNlem9rdWthXCA7Civnspfoo73lk4EgPiBzb3NlaWhpblwgOwor5Y+z5b+D5oi/ID4gdXNoaW5ib3VcIDsKK+Wcp+WItuiAhSA+IGFzc2Vpc2hhXCA7CivlsZXnpLrlk4EgPiB0ZW5qaWhpblwgOwor5pu46KiY5a6YID4gc2hva2lrYW5cIDsKK+mDt+Wcn+aEmyA+IGt5b3Vkb2FpXCA7Civosq/olLXluqsgPiBjaG96b3Vrb1wgOwor5LiL6aas6KmVID4gZ2ViYWh5b3VcIDsKK+S4jeiDveiAhSA+IGZ1bm91c2hhXCA7CivkuI3oia/ljJYgPiBmdXJ5b3VrYVwgOwor6JaE6I2357OWID4gaGFra2F0b3VcIDsKK+iWhOiNt+eyviA+IGhha2thc2VpXCA7Civmr5TllqnnmoQgPiBoaXl1dGVraVwgOwor5LqJ6K2w5qipID4gc291Z2lrZW5cIDsKK+mHjeemgemMriA+IGp1dWtpbmtvXCA7CivpgYvli5XmrIQgPiB1bmRvdXJhblwgOwor5pmu5YGP5oCnID4gZnVoZW5zZWlcIDsKK+i+sue5geacnyA+IG5vdWhhbmtpXCA7CivmhJ/lj5fmgKcgPiBrYW5qdXNlaVwgOwor5YW15Zmo5belID4gaGVpa2lrb3VcIDsKK+WAqumbsuaelyA+IGdlaXVucmluXCA7CivpgYvpgIHoiLkgPiB1bnNvdXNlblwgOwor6YGK5Ya26YOOID4geXV1eWFyb3VcIDsKK+eUu+S7mee0mSA+IGdhc2Vuc2hpXCA7CivlpJrmrrXpmo4gPiB0YWRhbmthaVwgOwor6Kmm6aiT5qmfID4gc2hpa2Vua2lcIDsKK+S4gOiIrOirliA+IGlwcGFucm9uXCA7CivliqDnrpfnqI4gPiBrYXNhbnplaVwgOwor5YiG5bKQ57eaID4gYnVua2lzZW5cIDsKK+WWh+WPreaJiyA+IHJhcHBhc2h1XCA7CivlhY3nvarnrKYgPiBtZW56YWlmdVwgOwor54qs6buE5qWKID4gaW51dHN1Z2VcIDsKK+WOreS4luimsyA+IGVuc2Vpa2FuXCA7CivljYrkuJbntIAgPiBoYW5zZWlraVwgOwor6YW15q+N6I+MID4ga291Ym9raW5cIDsKK+WGt+e9qOazlSA+IHJlaWFucG91XCA7CivmhJvolLXniYggPiBhaXpvdWJhblwgOwor5b6h5YGJ5pa5ID4gb2VyYWdhdGFcIDsKK+iomOaVsOazlSA+IGtpc3V1aG91XCA7CivnqbrkuIvmiYsgPiBrYXJhaGV0YVwgOwor5LiN5YGl5bq3ID4gZnVrZW5rb3VcIDsKK+aOouaknOWutiA+IHRhbmtlbmthXCA7CivlpKfmsJflnI8gPiB0YWlraWtlblwgOwor542F5a2Q5ZC8ID4gc2hpc2hpa3VcIDsKK+S7o+eQhuaoqSA+IGRhaXJpa2VuXCA7Civnianku7bosrsgPiBidWtrZW5oaVwgOwor5q2j6KaP5YW1ID4gc2Vpa2loZWlcIDsKK+WGjemFjeW4gyA+IHNhaWhhaWZ1XCA7Civlm5vnlbPljYogPiB5b2pvdWhhblwgOwor5bGV56S65LyaID4gdGVuamlrYWlcIDsKK+Wkp+mDveW4giA+IGRhaXRvc2hpXCA7CivlhYjlrabmnJ8gPiBzZW5nYWtraVwgOwor5oKq5rSS6JC9ID4gd2FydWphcmVcIDsKK+iHquawkeWFmiA+IGppbWludG91XCA7CivljLvnmYLlk4EgPiBpcnlvdWhpblwgOwor5YaF5rKZ5rGwID4gdWNoaXphdGFcIDsKK+WIhuWFieWZqCA+IGJ1bmtvdWtpXCA7CivopqrkuI3lrZ0gPiBveWFmdWtvdVwgOwor57iB6LW354mpID4gZW5naW1vbm9cIDsKK+a1geaYn+mbqCA+IHJ5dXVzZWl1XCA7CivlubTosqLnsbMgPiBuZW5ndW1haVwgOwor5rSX5rWE5ZmoID4gc2Vuam91a2lcIDsKK+ayuemAgeiIuSA+IHl1c291c2VuXCA7CivlvqrnkrDlmaggPiBqdW5rYW5raVwgOwor5YGl5bq35YWQID4ga2Vua291amlcIDsKK+eojueQhuWjqyA+IHplaXJpc2hpXCA7Civkurrmg4XlkbMgPiBuaW5qb3VtaVwgOwor5auM55aR6ICFID4ga2VuZ2lzaGFcIDsKK+etieiqnue3miA+IHRvdWdvc2VuXCA7CivljYHlrZfnt5ogPiBqdXVqaXNlblwgOwor5LiN5L2/55SoID4gZnVzaGl5b3VcIDsKK+S4gOeUn+mdoiA+IGlzc2VpbWVuXCA7Civml4XooYzoqJggPiByeW9rb3VraVwgOwor5YCL5L2T576kID4ga290YWlndW5cIDsKK+WPo+iTi+mfsyA+IGtvdWdhaW9uXCA7CivlnKflu7bmqZ8gPiBhdHN1ZW5raVwgOwor5ZKM5aOw5rOVID4gd2FzZWlob3VcIDsKK+mrmOmgu+W6piA+IGtvdWhpbmRvXCA7CivlsI/osYboibIgPiBhenVraWlyb1wgOwor5Y6z576O5riTID4gZ2VuYmlrZWlcIDsKK+eBq+WxseW8viA+IGthemFuZGFuXCA7CivljYroq6fpn7MgPiBoYW5rYWlvblwgOwor5raI5YyW5ZmoID4gc2hvdWtha2lcIDsKK+axguazleiAhSA+IGd1aG91c2hhXCA7CivngavlsbHluK8gPiBrYXphbnRhaVwgOwor5LiL6aeE566xID4gZ2V0YWJha29cIDsKK+iKnea1t+iAgSA+IHNoaWJhZWJpXCA7CivlpKfliIbnnIwgPiBvb2l0YWtlblwgOwor5bGx576K6autID4geWFnaWhpZ2VcIDsKK+eArOaIuOmamyA+IHNldG9naXdhXCA7CivngavlsbHls7YgPiBrYXphbnRvdVwgOwor5LiN5a+p54GrID4gZnVzaGluYmlcIDsKK+WlieS7leWlsyA+IGhvdXNoaW1lXCA7CivngavlsbHlsqkgPiBrYXphbmdhblwgOwor546J56CC5YipID4gdGFtYWphcmlcIDsKK+S4gOWIhuWNiiA+IGlwcHVuaGFuXCA7CivoirHps6XnlLsgPiBrYWNob3VnYVwgOwor54Sh6I+M5rOVID4gbXVraW5ob3VcIDsKK+eEoeWFjeiosSA+IG11bWVua3lvXCA7CivlvoXpgb/nt5ogPiB0YWloaXNlblwgOwor562J5pmC5oCnID4gdG91amlzZWlcIDsKK+W5tOizgOeKtiA+IG5lbmdham91XCA7Civlj6Tlj4LogIUgPiBrb3NhbnNoYVwgOwor5oSf5q2O56ymID4ga2FudGFuZnVcIDsKK+WIhuWykOeCuSA+IGJ1bmtpdGVuXCA7Civkvo3lvpPlrpggPiBqaWp1dWthblwgOwor5YaF6YeO5omLID4gbmFpeWFzaHVcIDsKK+ayuemAgeeuoSA+IHl1c291a2FuXCA7CivkuI3nlKjlv4MgPiBidXlvdWppblwgOwor6KqY6Ju+54GvID4geXV1Z2F0b3VcIDsKK+ioiOeQhuWjqyA+IGtlaXJpc2hpXCA7Civpm5HosqjlupcgPiB6YWtrYXRlblwgOwor5bqn5Y+z6YqYID4gemF5dXVtZWlcIDsKK+WtkOmfs+aApyA+IHNoaWluc2VpXCA7CivmnJ/lvoXmhJ8gPiBraXRhaWthblwgOwor6YGL5YuV5a62ID4gdW5kb3VzaGFcIDsKK+aEmumAo+maiiA+IGd1cmVudGFpXCA7Civljp/lrZDpm7IgPiBnZW5zaGl1blwgOwor5Luj55CG5bqXID4gZGFpcml0ZW5cIDsKK+iruOWZqOaisCA+IHNob2tpa2FpXCA7Civmk43oiLXmiYsgPiBzb3VkYXNodVwgOwor5Ye65q2v5LqAID4gZGViYWthbWVcIDsKK+S4jeWBpeWFqCA+IGZ1a2VuemVuXCA7Civnm7joo5zmgKcgPiBzb3Vob3NlaVwgOwor6Ieq6Lui6LuKID4gaml0ZW5zaGFcIDsKK+WIneacn+WApCA+IHNob2tpY2hpXCA7CivmjqXpoK3ovp4gPiBzZXR0b3VqaVwgOwor55Sf5b6S5LyaID4gc2VpdG9rYWlcIDsKK+i1pOijuOOAhSA+IHNla2lyYXJhXCA7CivpoJDoqIDogIUgPiB5b2dlbnNoYVwgOwor6ZaL5YKs5pelID4ga2Fpc2FpYmlcIDsKK+iDtOmWk+WjsCA+IGRvdW1hZ29lXCA7Civog4znlarlj7cgPiBzZWJhbmdvdVwgOwor5rWu5rWq6ICFID4gZnVyb3VzaGFcIDsKK+S8muWToeWIuCA+IGthaWlua2VuXCA7CivkvJrlk6HliLYgPiBrYWlpbnNlaVwgOwor6Iux57Gz5rOVID4gZWliZWlob3VcIDsKK+WQiOeQhuirliA+IGdvdXJpcm9uXCA7CivlpKfpg6jliIYgPiBkYWlidWJ1blwgOwor5LqU6KeS5b2iID4gZ29rYWtrZWlcIDsKK+ekvuS8muWMliA+IHNoYWthaWthXCA7CivkuK3opo/mqKEgPiBjaHV1a2lib1wgOwor5aSn6YO95LyaID4gZGFpdG9rYWlcIDsKK+itt+mAgei7iiA+IGdvc291c2hhXCA7Civph43miYvku6MgPiBvbW90ZWRhaVwgOwor5bqD5aCx6YOoID4ga291aG91YnVcIDsKK+WJteS4luiomCA+IHNvdXNlaWtpXCA7CivkuInmna/phaIgPiBzYW5iYWl6dVwgOwor56+A54Kt5ZmoID4gc2V0dGFua2lcIDsKK+W4jOacm+iAhSA+IGtpYm91c2hhXCA7CivlpJbnp5HlraYgPiBnZWthZ2FrdVwgOwor5YiR5LqL54qvID4ga2VpamloYW5cIDsKK+mFjee3muWbsyA+IGhhaXNlbnp1XCA7CivmqZ/morDoq5YgPiBraWthaXJvblwgOwor5bed56eL5rKZID4ga2F3YWFpc2FcIDsKK+aWh+WMluWcjyA+IGJ1bmtha2VuXCA7CivmjqXpoK3oqp4gPiBzZXR0b3Vnb1wgOwor5LqL5pWF5q20ID4gamlrb3Jla2lcIDsKK+WxseWwj+WxiyA+IHlhbWFnb3lhXCA7Civns7jonLvom4kgPiBpdG90b25ib1wgOwor56e76Lui5YWIID4gaXRlbnNha2lcIDsKK+Wkp+WLsuS9jSA+IGRhaWt1bicnaVwgOwor5aSn55uu546JID4gb29tZWRhbWFcIDsKK+WumOWFrOWQjyA+IGthbmtvdXJpXCA7CivljZTorbDlk6EgPiBreW91Z2lpblwgOwor6LuN5LqL54qvID4gZ3VuamloYW5cIDsKK+maj+ihjOWToSA+IHp1aWtvdWluXCA7CivkuIDovrrlgJIgPiBpcHBlbnRvdVwgOwor54++5Luj6KqeID4gZ2VuZGFpZ29cIDsKK+iBtOmfs+apnyA+IGNob3VvbmtpXCA7CivkuI3lsI7mgKcgPiBmdWRvdXNlaVwgOwor55CG5a655birID4gcml5b3VzaGlcIDsKK+S5semrmOS4iyA+IHJhbmtvdWdlXCA7Civlj5nmg4XoqakgPiBqb2pvdXNoaVwgOwor56S+5Lqk5a62ID4gc2hha291a2FcIDsKK+aWh+WMluWPsiA+IGJ1bmthc2hpXCA7CivkuI3nlKjlk4EgPiBmdXlvdWhpblwgOwor6YCP5piO5bqmID4gdG91bWVpZG9cIDsKK+S4jeWumuazlSA+IGZ1dGVpaG91XCA7CivmuKnmjpLmsLQgPiBvbmhhaXN1aVwgOwor5aSp6Iqx57KJID4gdGVua2FmdW5cIDsKK+iIquepuui3ryA+IGtvdWt1dXJvXCA7Civos4fnlKPlrrYgPiBzaGlzYW5rYVwgOwor6aGe5Ly854K5ID4gcnVpaml0ZW5cIDsKK+a3oeawtOa5liA+IHRhbnN1aWtvXCA7CivkuojoqIDogIUgPiB5b2dlbnNoYVwgOwor5bqD5aCx6KqyID4ga291aG91a2FcIDsKK+Wwj+S6uuaVsCA+IGtvbmluenV1XCA7CivmhJvnn6XnnIwgPiBhaWNoaWtlblwgOwor5Lq66YCg6JeNID4gamluem91YWlcIDsKK+WMu+WtpuiAhSA+IGlnYWt1c2hhXCA7CivmgqrmhJ/mg4UgPiBha2thbmpvdVwgOwor5Luu57SN6YeRID4ga2Fub3VraW5cIDsKK+acquWHpuWIhiA+IG1pc2hvYnVuXCA7Civlt67phY3kurogPiBzYWhhaW5pblwgOwor5L2O6aC75bqmID4gdGVpaGluZG9cIDsKK+S9nOeCuueKryA+IHNha3VpaGFuXCA7Civmra/np5HnlKggPiBzaGlrYXlvdVwgOwor5YaN5Yem55CGID4gc2Fpc2hvcmlcIDsKK+mBi+WLleS8miA+IHVuZG91a2FpXCA7CivoirHojKPok5kgPiBoYW5hZ296YVwgOwor546E5q2m5bKpID4gZ2VuYnVnYW5cIDsKK+a2sueKtuWMliA+IGVraWpvdWthXCA7CivnhKHliKnmga8gPiBtdXJpc29rdVwgOwor6Zmj576957mUID4gamluYmFvcmlcIDsKK+aIpumXmOapnyA+IHNlbnRvdWtpXCA7CivmnInmhI/nmoQgPiB5dXVpdGVraVwgOwor5ZWP6aGM5YWQID4gbW9uZGFpamlcIDsKK+WCteWLmeiAhSA+IHNhaW11c2hhXCA7CivkuIDpqI7oqI4gPiBpa2tpdWNoaVwgOwor6KOc57Wm6LevID4gaG9reXV1cm9cIDsKK+S4i+WxpOWcnyA+IGthc291ZG9cIDsKK+i1t+WLleapnyA+IGtpZG91a2lcIDsKK+WNgeWtl+aetiA+IGp1dWppa2FcIDsKK+S6uuW3pembqCA+IGppbmtvdXVcIDsKK+mkk+msvOmBkyA+IGdha2lkb3VcIDsKK+S4jeWumuacnyA+IGZ1dGVpa2lcIDsKK+aooeaTrOW6lyA+IG1vZ2l0ZW5cIDsKK+WPpOatpumBkyA+IGtvYnVkb3VcIDsKK+aghOmkiue0oCA+IGVpeW91c29cIDsKK+i6q+WLneaJiyA+IG1pZ2F0dGVcIDsKK+eEoeWIqeWtkCA+IG11cmlzaGlcIDsKK+eRoOeSg+iJsiA+IHJ1cmlpcm9cIDsKK+iDg+iFuOeCjiA+IGljaG91ZW5cIDsKK+i1t+WLleaZgiA+IGtpZG91amlcIDsKK+auuumZo+W4qyA+IHRhdGVzaGlcIDsKK+mhnue+qeiqniA+IHJ1aWdpZ29cIDsKK+WutuioiOewvyA+IGtha2VpYm9cIDsKK+eZu+iomOewvyA+IHRvdWtpYm9cIDsKK+mHjeavjemfsyA+IGp1dWJvaW5cIDsKK+mBheefpeaBtSA+IG9zb2RqaWVcIDsKK+Wkp+mBjuWOuyA+IGRhaWtha29cIDsKK+WKoOeul+WZqCA+IGthc2Fua2lcIDsKK+Wkp+ebuOaSsiA+IG9venVtb3VcIDsKK+apn+iDveiqniA+IGtpbm91Z29cIDsKK+acieawl+mfsyA+IHl1dWtpb25cIDsKK+S4jeadoeeQhiA+IGZ1am91cmlcIDsKK+Wkp+mBk+WFtyA+IG9vZG91Z3VcIDsKK+WumuS9jee9riA+IHRlaWljaGlcIDsKK+mBi+mAgeWxiyA+IHVuc291eWFcIDsKK+mAoOWWtuiyuyA+IHpvdWVpaGlcIDsKK+iSmeWPpOiqniA+IG1vdWtvZ29cIDsKK+apn+aisOenkSA+IGtpa2Fpa2FcIDsKK+asoeW5tOW6piA+IGppbmVuZG9cIDsKK+WkmumHjeWMliA+IHRhanV1a2FcIDsKK+WNg+S7o+WlsyA+IGNoaXlvam9cIDsKK+WPpOekvuWvuiA+IGtvc2hhamlcIDsKK+S4gOWxpOebriA+IGlzc291bWVcIDsKK+WokeWphuawlyA+IHNoYWJha2VcIDsKK+WKseejgeapnyA+IHJlaWppa2lcIDsKK+S4jemmluWwviA+IGZ1c2h1YmlcIDsKK+aCquaEn+WMliA+IGFra2Fua2FcIDsKK+W+hemBv+aJgCA+IHRhaWhpam9cIDsKK+Wbm+iCoeWQjSA+IHNoaWtvbmFcIDsKK+S4jeS6uuawlyA+IGZ1bmlua2lcIDsKK+ilv+asp+WMliA+IHNlaW91a2FcIDsKK+S6jOmajuWxiyA+IG5pa2FpeWFcIDsKK+ajkuaal+iomCA+IGJvdWFua2lcIDsKK+S4jeS4gOiHtCA+IGZ1aXRjaGlcIDsKK+ihgOWPjeWQkCA+IGNoaWhlZG9cIDsKK+abs+eBq+W8viA+IGVpa2FkYW5cIDsKK+S6jOmajuWutiA+IG5pa2FpeWFcIDsKK+ewoee0oOWMliA+IGthbnNva2FcIDsKK+WAi+S9k+W3riA+IGtvdGFpc2FcIDsKK+WQjOmfs+iqniA+IGRvdW9uZ29cIDsKK+S5l+WLmeWToSA+IGpvdW11aW5cIDsKK+ijj+acqOaIuCA+IHVyYWtpZG9cIDsKK+mHkeavmOe+hSA+IGtvbnBpcmFcIDsKK+eEoemAoOS9nCA+IG11em91c2FcIDsKK+WNgeS6jOaZgiA+IGp1dW5pamlcIDsKK+aEj+aDs+WkliA+IGlzb3VnYWlcIDsKK+S4jeWuieWumiA+IGZ1YW50ZWlcIDsKK+mZsOmbu+awlyA+IGluZGVua2lcIDsKK+iWhOmmrOm5vyA+IHVzdWJha2FcIDsKK+S4geWtl+i3ryA+IHRlaWppcm9cIDsKK+aPkOekuumDqCA+IHRlaWppYnVcIDsKK+aFsOWVj+WTgSA+IGltb25oaW5cIDsKK+imquaWh+WtlyA+IG95YW1vamlcIDsKK+eQhuiyoeWutiA+IHJpemFpa2FcIDsKK+eoveWPpOaXpSA+IGtlaWtvYmlcIDsKK+S6jOWhgeaJkyA+IG5pcnVpZGFcIDsKK+aJi+ebuOimiyA+IHRlc291bWlcIDsKK+WknOebl+ibviA+IHlvdG91Z2FcIDsKK+Wls+aAp+e+jiA+IGpvc2VpYmlcIDsKK+miqOmCquWjsCA+IGthemVnb2VcIDsKK+WOreS4luWutiA+IGVuc2Vpa2FcIDsKK+eGqOaWl+ebriA+IG5vc2hpbWVcIDsKK+mZsOisgOWutiA+IGluYm91a2FcIDsKK+maj+aEj+etiyA+IHp1aWlraW5cIDsKK+aJi+WKoOa4myA+IHRla2FnZW5cIDsKK+iumue+juatjCA+IHNhbmJpa2FcIDsKK+WQjOS9jeS9kyA+IGRvdWl0YWlcIDsKK+mhnumfs+iqniA+IHJ1aW9uZ29cIDsKK+WPieaJi+e2siA+IHNhZGVhbWlcIDsKK+Wwj+e2rOm2jyA+IGtvanVrZWlcIDsKK+aZtOmbqOioiCA+IHNlaXVrZWlcIDsKK+aWh+W6q+WMliA+IGJ1bmtva2FcIDsKK+mHjuasoemmrCA+IHlhaml1bWFcIDsKK+ihl+i3r+aouSA+IGdhaXJvanVcIDsKK+aOp+iotOmZoiA+IGtvdXNvaW5cIDsKK+S7meS6uuaOjCA+IHNhYm90ZW5cIDsKK+e+qeaPtOmHkSA+IGdpZW5raW5cIDsKK+S/r+eesOWbsyA+IGZ1a2FuenVcIDsKK+W+oeaWsOmmmSA+IG9zaGlua29cIDsKK+W+oeWutuS6uiA+IGdva2VuaW5cIDsKK+Wkp+WvuumZoiA+IGRhaWppaW5cIDsKK+eDj+e+veeOiSA+IHViYXRhbWFcIDsKK+aAp+ihjOeCuiA+IHNlaWtvdWlcIDsKK+S4gOiIrOWMliA+IGlwcGFua2FcIDsKK+WNgeS6lOWknCA+IGp1dWdveWFcIDsKK+S6jOmZouWItiA+IG5paW5zZWlcIDsKK+WutuaUv+WppiA+IGthc2VpZnVcIDsKK+esrOS6jOe+qSA+IGRhaW5pZ2lcIDsKK+ecn+mtmuadvyA+IG1hbmFpdGFcIDsKK+WGhui7jOmBkyA+IGVua2lkb3VcIDsKK+mHjuiRoeiQhCA+IG5vYnVkb3VcIDsKK+W/nOWLn+iAhSA+IG91Ym9zaGFcIDsKK+m6u+Wun+ayuSA+IGFzYW1peXVcIDsKK+iMtumjr+S6iyA+IHNhaGFuamlcIDsKK+WFq+mHjembsiA+IHlhZWd1bWFcIDsKK+acqui4j+afuyA+IG1pdG91c2FcIDsKK+e1teiRieabuCA+IGVoYWdha2lcIDsKK+eoveWPpOWgtCA+IGtlaWtvYmFcIDsKK+WuieWFqOacnyA+IGFuemVua2lcIDsKK+WPjeaEj+iqniA+IGhhbicnaWdvXCA7CivlgIvkurrlt64gPiBrb2ppbnNhXCA7Civnt4/li5npg6ggPiBzb3VtdWJ1XCA7Civorabpg6joo5wgPiBrZWlidWhvXCA7CivkuI7lpKrpg44gPiB5b3Rhcm91XCA7CivkvY3niYzloIIgPiBpaGFpZG91XCA7CivnvqnlpKrlpKsgPiBnaWRheXV1XCA7CivkuInpnq3phZIgPiBzaGFucGVuXCA7CivlpoPmrr/kuIsgPiBoaWRlbmthXCA7CivmvKvnlLvlrrYgPiBtYW5nYWthXCA7CivkuI3mnKzmhI8gPiBmdWhvbicnaVwgOwor5q2p5ZCI566XID4gYnVhaXphblwgOwor6Kqe5b2Z55qEID4gZ29pdGVraVwgOwor56ys5LiA6KqyID4gZGFpaWtrYVwgOwor5LqV5oi456uvID4gaWRvYmF0YVwgOwor55CG5LqL5LyaID4gcmlqaWthaVwgOwor54Gr5puc5pelID4ga2F5b3ViaVwgOwor5b6h5LiN5rWEID4gZ29mdWpvdVwgOwor5pyq5a6a576pID4gbWl0ZWlnaVwgOwor5a++5L2N5rOVID4gdGFpaWhvdVwgOwor5rWu5rWq5YWQID4gZnVyb3VqaVwgOwor5amm5Lq656eRID4gZnVqaW5rYVwgOwor5LuW5LiW55WMID4gdGFzZWthaVwgOwor5oWw5Yq06YeRID4gaXJvdWtpblwgOwor55CG5LiN5bC9ID4gcmlmdWppblwgOwor5Y2Y5Z2Q5qmfID4gdGFuemFraVwgOwor5LiN6aO95ZKMID4gZnVob3V3YVwgOwor5Luj6K2w5ZOhID4gZGFpZ2lpblwgOwor6Z2e5ZCI55CGID4gaGlnb3VyaVwgOwor57eP5YuZ6KqyID4gc291bXVrYVwgOwor5qSw5a2Q5rK5ID4geWFzaGl5dVwgOwor5rC05rOz552AID4gc3VpZWlnaVwgOwor57W16I2J57SZID4gZXpvdXNoaVwgOwor5bCP54qs5bqnID4ga29pbnV6YVwgOwor6LWk5ZGz5ZmMID4gYWthbWlzb1wgOwor5a++576p6KqeID4gdGFpZ2lnb1wgOwor5rGa5p+T6I+MID4gb3NlbmtpblwgOwor5LiJ5pel6LevID4gbWlra2FqaVwgOwor5bGF6YWS5bGLID4gaXpha2F5YVwgOwor6Ieq5a626KO9ID4gamlrYXNlaVwgOwor5aGX5biD5YmkID4gdG9mdXphaVwgOwor5Y+k5YW46KqeID4ga290ZW5nb1wgOwor576p5o2Q6YeRID4gZ2llbmtpblwgOwor5LiN5pmv5rCXID4gZnVrZWlraVwgOwor5ZCI55CG5YyWID4gZ291cmlrYVwgOwor5ouJ5LiB6KqeID4gcmF0ZW5nb1wgOwor6Zu756OB5rOiID4gZGVuamloYVwgOwor6Zu756OB5rCXID4gZGVuamlraVwgOwor5a6J5YWo5ZmoID4gYW56ZW5raVwgOwor5qmf5qKw5YyWID4ga2lrYWlrYVwgOwor5qCE6aSK5L6hID4gZWl5b3VrYVwgOwor56ys5LqM5qyhID4gZGFpbmlqaVwgOwor5LqV5oi45rC0ID4gaWRvbWl6dVwgOwor5LiA5YCL5Lq6ID4gaWtrb2ppblwgOwor5Lqh56WW54i2ID4gYm91c29mdVwgOwor5b6h5pyx5Y2wID4gZ29zaHVpblwgOwor55Ww5oCn5L2TID4gaXNlaXRhaVwgOwor6Z2e5ZCM5pyfID4gaGlkb3VraVwgOwor5Y2B6Zyy55ukID4gc29yb2JhblwgOwor562G6KiY5YW3ID4gaGlra2lndVwgOwor56mP5YGl5rS+ID4gb25rZW5oYVwgOwor6IKy5YWQ5ZySID4gaWt1amllblwgOwor6Zu75rCX54KJID4gZGVua2lyb1wgOwor5L6d5a2Y5oCnID4gaXpvbnNlaVwgOwor5q+U5Y+h5bGxID4gaGllaXphblwgOwor5L6d6aC86ICFID4gaXJhaXNoYVwgOwor6KO95rK55omAID4gc2VpeXVqb1wgOwor5Z+65pys6KqeID4ga2lob25nb1wgOwor5b6h5LiJ5a62ID4gZ29zYW5rZVwgOwor5LqU56+A5Y+lID4gZ29zZWtrdVwgOwor6Kqk5YuV5L2cID4gZ29kb3VzYVwgOwor5b2x5Y2w5pysID4gZWlpbmhvblwgOwor57WM5Za26LK7ID4ga2VpZWloaVwgOwor5YaG55u45aC0ID4gZW5zb3ViYVwgOwor6KKr55aR6ICFID4gaGlnaXNoYVwgOwor5pS+54Gr6a2UID4gaG91a2FtYVwgOwor5LiN5pat552AID4gZnVkYW5naVwgOwor6IGW6Lev5YqgID4gc2Vpcm9rYVwgOwor5LiL57ea6YOoID4ga2FzZW5idVwgOwor5aSa5qyh5YWDID4gdGFqaWdlblwgOwor5Ly86Z2e6ICFID4gZXNlbW9ub1wgOwor6ISz5aSW56eRID4gbm91Z2VrYVwgOwor5b6h5LiL5ZWPID4gZ29rYW1vblwgOwor6IaD6IKt6IeNID4gb3R0b3NlaVwgOwor5aWz5oCn5ZmoID4gam9zZWlraVwgOwor5a215Y215ZmoID4gZnVyYW5raVwgOwor54Sh55CG6KejID4gbXVyaWthaVwgOwor54i25oCn5oSbID4gZnVzZWlhaVwgOwor6Z2e5q2m6KOFID4gaGlidXNvdVwgOwor5ZCM54i25q+NID4gZG91ZnVib1wgOwor5aWz5oCn5YyWID4gam9zZWlrYVwgOwor54Sh5pyf6ZmQID4gbXVraWdlblwgOwor6Ieq5a6255SoID4gamlrYXlvdVwgOwor5a6257O75ZuzID4ga2FrZWl6dVwgOwor5LiA5LiW57SAID4gaXNzZWlraVwgOwor6Ieq55Sx5bqmID4gaml5dXVkb1wgOwor5rGa5p+T5rqQID4gb3NlbmdlblwgOwor5L6d6aC854q2ID4gaXJhaWpvdVwgOwor56ys5LiA5q2pID4gZGFpaXBwb1wgOwor5b6u5aG15a2QID4gbWlqaW5rb1wgOwor6LSU5bGT55uuID4gaGlpa2ltZVwgOwor6Zu756OB5aC0ID4gZGVuamliYVwgOwor5LiA5L2T5YyWID4gaXR0YWlrYVwgOwor5b6h5pel5qeYID4gb2hpc2FtYVwgOwor6Z+z57695bGLID4gb3Rvd2F5YVwgOwor5Yy76Zmi6ZW3ID4gaWluY2hvdVwgOwor5Y2w5qyn6KqeID4gaW4nJ291Z29cIDsKK+WHuuadpeeniyA+IGRla2lha2lcIDsKK+mjm+ihjOapnyA+IGhpa291a2lcIDsKK+eEoeS9nOeCuiA+IG11c2FrdWlcIDsKK+mDveW4gumDqCA+IHRvc2hpYnVcIDsKK+W6p+iSsuWboyA+IHphYnV0b25cIDsKK+aUvuiqsuW+jCA+IGhvdWthZ29cIDsKK+S4gOacrOawlyA+IGlwcG9uZ2lcIDsKK+mbu+awl+WxiyA+IGRlbmtpeWFcIDsKK+acquadpea0viA+IG1pcmFpaGFcIDsKK+aghOiqieekvCA+IGVpeW9yZWlcIDsKK+ezluiho+mMoCA+IHRvdWlqb3VcIDsKK+eQhuirluWutiA+IHJpcm9ua2FcIDsKK+aJk+alveWZqCA+IGRhZ2Fra2lcIDsKK+eEoeS9nOazlSA+IGJ1c2Fob3VcIDsKK+S7geeOi+mWgCA+IG5pb3Vtb25cIDsKK+WPpOWFuOa0viA+IGtvdGVuaGFcIDsKK+e0oOWwgeWutiA+IHNvaG91a2FcIDsKK+atqeWQiOWItiA+IGJ1YWlzZWlcIDsKK+mtmuays+WyuCA+IHVvZ2FzaGlcIDsKK+iHqueUseWMliA+IGppeXV1a2FcIDsKK+aOiOeUo+aJgCA+IGp1c2Fuam9cIDsKK+mnhuWLleapnyA+IGt1ZG91a2lcIDsKK+S6jOeuh+aJgCA+IG5pa2FzaG9cIDsKK+mBleeKr+iAhSA+IGloYW5zaGFcIDsKK+iHqueUu+WDjyA+IGppZ2F6b3VcIDsKK+W9ouaEj+aLsyA+IGtlaWlrZW5cIDsKK+avjeaAp+aEmyA+IGJvc2VpYWlcIDsKK+S6leaIuOWBtCA+IGlkb2dhd2FcIDsKK+egtOegleapnyA+IGhhc2Fpa2lcIDsKK+mBleitpue9qiA+IGlrZWl6YWlcIDsKK+W4jOWcn+mhniA+IGtpZG9ydWlcIDsKK+S6nOmJm+W8lSA+IGFlbmJpa2lcIDsKK+WkquWusOW6nCA+IGRhemFpZnVcIDsKK+S8iumBlOiAhSA+IGRhdGVzaGFcIDsKK+mAgeipseWZqCA+IHNvdXdha2lcIDsKK+S8tOWkqemAoyA+IGJhdGVyZW5cIDsKK+S6nOm6u+W4gyA+IGFtYW51bm9cIDsKK+Wls+mDjuWxiyA+IGpvcm91eWFcIDsKK+WZtOmcp+WZqCA+IGZ1bm11a2lcIDsKK+iLseWNmOiqniA+IGVpdGFuZ29cIDsKK+iNt+mmrOi7iiA+IG5pYmFzaGFcIDsKK+aTrOaFi+iqniA+IGdpdGFpZ29cIDsKK+eVsOmCpuS6uiA+IGlob3VqaW5cIDsKK+aAquaIkeS6uiA+IGtlZ2FuaW5cIDsKK+WKueaenOmfsyA+IGtvdWthb25cIDsKK+Wik+eikemKmCA+IGJvaGltZWlcIDsKK+mjm+ihjOWutiA+IGhpa291a2FcIDsKK+eBq+eGqOaWlyA+IGhpbm9zaGlcIDsKK+WEquS9jeaApyA+IHl1dWlzZWlcIDsKK+eEoei2o+WRsyA+IG11c2h1bWlcIDsKK+mBjuePvuacqiA+IGthZ2VubWlcIDsKK+mVt+akheWtkCA+IG5hZ2Fpc3VcIDsKK+iBvuWUluiAhSA+IHJvdWFzaGFcIDsKK+aWh+Wtl+ebpCA+IG1vamliYW5cIDsKK+S6lOWNgemfsyA+IGdvanV1b25cIDsKK+WkqeWppue+hSA+IHRlbnB1cmFcIDsKK+WvnemBk+WFtyA+IG5lZG91Z3VcIDsKK+eVsOWIhuWtkCA+IGlidW5zaGlcIDsKK+iHquiyqeapnyA+IGppaGFua2lcIDsKK+WFq+mHjeWeoyA+IHlhZWdha2lcIDsKK+eEoeS+oeWApCA+IG11a2FjaGlcIDsKK+S6uuS6i+mZoiA+IGppbmppaW5cIDsKK+S4jeWknOWfjiA+IGZ1eWFqb3VcIDsKK+e+juS4iOWkqyA+IGJpam91ZnVcIDsKK+aYk+aQjeWTgSA+IGlzb25oaW5cIDsKK+WwvOWDp+mZoiA+IG5pc291aW5cIDsKK+eEoeeQhuaVsCA+IG11cmlzdXVcIDsKK+eEoemfu+ipqSA+IG11aW5zaGlcIDsKK+WkmuanmOWMliA+IHRheW91a2FcIDsKK+eUsuaWkOaApyA+IGthaXNob3VcIDsKK+Wxi+agueijjyA+IHlhbmV1cmFcIDsKK+aatOmiqOmbqCA+IGJvdWZ1dXVcIDsKK+eUn+eQhuaXpSA+IHNlaXJpYmlcIDsKK+WIhumZkOiAhSA+IGJ1Z2VuamFcIDsKK+S6uuS6i+mDqCA+IGppbmppYnVcIDsKK+m4mum1oeiynSA+IG91bXVnYWlcIDsKK+S4gOS4geWtlyA+IGl0dGVpamlcIDsKK+WIhumboua0viA+IGJ1bnJpaGFcIDsKK+Wwj+e0sOW3pSA+IGtvemFpa3VcIDsKK+aal+WPt+WMliA+IGFuZ291a2FcIDsKK+WNsOW6pua0iyA+IGluZG95b3VcIDsKK+Whqee0oOmFuCA+IGVuc29zYW5cIDsKK+S+nemgvOS6uiA+IGlyYWluaW5cIDsKK+eItuavjeS8miA+IGZ1Ym9rYWlcIDsKK+mjsumFkuWutiA+IGluc2h1a2FcIDsKK+S4jeiqjeWPryA+IGZ1bmlua2FcIDsKK+aFsOWKtOS8miA+IGlyb3VrYWlcIDsKK+ixhuiFkOWxiyA+IHRvdWZ1eWFcIDsKK+WIhumbouapnyA+IGJ1bnJpa2lcIDsKK+eBq+eCjueTtiA+IGthZW5iaW5cIDsKK+W+oeWkmuWIhiA+IGdvdGFidW5cIDsKK+iHqOaZguiyuyA+IHJpbmppaGlcIDsKK+Wkp+Wkqum8kyA+IG9vZGFpa29cIDsKK+WmguS9leeoiyA+IGlrYWhvZG9cIDsKK+eJoeeJm+W6pyA+IG91c2hpemFcIDsKK+WKoOW3peiyuyA+IGtha291aGlcIDsKK+S6uuS6i+iqsiA+IGppbmppa2FcIDsKK+mHjuiJr+eKrCA+IG5vcmFpbnVcIDsKK+iug+e+juatjCA+IHNhbmJpa2FcIDsKK+aXpeacrOmWkyA+IG5paG9ubWFcIDsKK+Wkp+ixhuayuSA+IGRhaXp1eXVcIDsKK+WFkOerpeeUuyA+IGppZG91Z2FcIDsKK+a8lOiInuWgtCA+IGVuYnVqb3VcIDsKK+S8vOmdnuS6iyA+IGVzZWdvdG9cIDsKK+S4jee1kOaenCA+IGZ1a2Vra2FcIDsKK+WcsOS4i+WMliA+IGNoaWtha2FcIDsKK+WFq+eZvumVtyA+IHlhb2Nob3VcIDsKK+mBjumjveWSjCA+IGthaG91d2FcIDsKK+aXqeWwkeWlsyA+IHNhb3RvbWVcIDsKK+WmguS9leeJqSA+IGlrYW1vbm9cIDsKK+eJiOeUu+WutiA+IGhhbmdha2FcIDsKK+aEm+mjsuiAhSA+IGFpaW5zaGFcIDsKK+WuieWumuWZqCA+IGFudGVpa2lcIDsKK+mnhOiPk+WtkCA+IGRhZ2FzaGlcIDsKK+WUkOiDoem6uyA+IHRvdWdvbWFcIDsKK+WBnOmfs+espiA+IHRlaW9ucHVcIDsKK+WckuiKuOWutiA+IGVuZ2Vpa2FcIDsKK+aKleW9seapnyA+IHRvdWVpa2lcIDsKK+iLseWQieWIqSA+IGlnaXJpc3VcIDsKK+W6p+W4g+WboyA+IHphYnV0b25cIDsKK+eEoeWjsOmfsyA+IG11c2Vpb25cIDsKK+WUkOiMhOWtkCA+IHRvdW5hc3VcIDsKK+aXpeacrOiqniA+IG5paG9uZ29cIDsKK+W+k+S4ieS9jSA+IGp1c2FubWlcIDsKK+WppuWls+WtkCA+IGZ1am9zaGlcIDsKK+W3peS6i+iyuyA+IGtvdWppaGlcIDsKK+a4qeW6puioiCA+IG9uZG9rZWlcIDsKK+WuieWumuWMliA+IGFudGVpa2FcIDsKK+azleieuuiynSA+IGhvcmFnYWlcIDsKK+mdnuW4uOaZgiA+IGhpam91amlcIDsKK+WFq+WNg+S7oyA+IHlhY2hpeW9cIDsKK+S4jee0sOW3pSA+IGJ1c2Fpa3VcIDsKK+S9meawtOi3ryA+IHlvc3Vpcm9cIDsKK+ebuOmBleeCuSA+IHNvdWl0ZW5cIDsKK+abvOiNvOe+hSA+IG1hbmRhcmFcIDsKK+WcsOmbt+eBqyA+IGppcmFpa2FcIDsKK+WFrOWLmeWToSA+IGtvdW11aW5cIDsKK+ahiOWxseWtkCA+IGtha2FzaGlcIDsKK+WPpOS7o+iqniA+IGtvZGFpZ29cIDsKK+eUn+S4gOacrCA+IGtpaXBwb25cIDsKK+i6q+i0lOWxkyA+IG1pYmlpa2lcIDsKK+acquaVtOeQhiA+IG1pc2VpcmlcIDsKK+S6iOenkeeUnyA+IHlva2FzZWlcIDsKK+acque1jOmBjiA+IG1pa2Vpa2FcIDsKK+a1t+advuiynSA+IG1pcnVnYWlcIDsKK+WFteWFkOW4ryA+IGhla29vYmlcIDsKK+i6q+Wlh+m6lyA+IG1pZ2lyZWlcIDsKK+aknOafu+WToSA+IGtlbnNhaW5cIDsKK+WNseapn+aEnyA+IGtpa2lrYW5cIDsKK+i1pOiMhOWtkCA+IGFrYW5hc3VcIDsKK+err+atpuiAhSA+IGhhbXVzaGFcIDsKK+WNsOW6puS6uiA+IGluZG9qaW5cIDsKK+WGheWuieaJkyA+IG5haWFuZGFcIDsKK+Wxi+agueadvyA+IHlhbmVpdGFcIDsKK+eEoeacn+WIkSA+IG11a2lrZWlcIDsKK+iomOW/teeikSA+IGtpbmVuaGlcIDsKK+mDveW4guWMliA+IHRvc2hpa2FcIDsKK+W6nOefpeS6iyA+IGZ1Y2hpamlcIDsKK+WGheiAs+eCjiA+IG5haWppZW5cIDsKK+WMl+S6rOiqniA+IHBla2luZ29cIDsKK+eKrOWwj+WxiyA+IGludWdveWFcIDsKK+W9vOWyuOS8miA+IGhpZ2FuJydlXCA7Civnm7jlvJ/lrZAgPiBhaWRlc2hpXCA7Civps7Plh7DluqcgPiBob3VvdXphXCA7Civlkr3poK3ngo4gPiBpbnRvdWVuXCA7CivmipXlvbHlm7MgPiB0b3VlaXp1XCA7CivkuI3ooZvnlJ8gPiBmdWVpc2VpXCA7CivmlbTnkIbpg6ggPiBzZWlyaWJ1XCA7CivlhaXmr43lsYsgPiBpcmltb3lhXCA7CivlpJrotqPlkbMgPiB0YXNodW1pXCA7Civpn7PoqJjlj7cgPiBvbmtpZ291XCA7CivlsI/lnYrkuLsgPiBrb2JvdXp1XCA7Civml6XmnKznlLsgPiBuaWhvbmdhXCA7CivntIDlhYPlvowgPiBraWdlbmdvXCA7CivkvZPmuKnlmaggPiB0YWlvbmtpXCA7Civlvq7muKnmua8gPiBiaW9udG91XCA7CivosrTlqabkurogPiBraWZ1amluXCA7Civlj7PlpKfoh6MgPiB1ZGFpamluXCA7CivluLDljJbkurogPiBraWthamluXCA7CivmiKblvozmtL4gPiBzZW5nb2hhXCA7Civlj5flg4/mqZ8gPiBqdXpvdWtpXCA7CivoqJjlv7XmqLkgPiBraW5lbmp1XCA7Civnsonlvq7lobUgPiBrb21pamluXCA7CivngrrmlL/ogIUgPiBpc2Vpc2hhXCA7CivlpKfniqzluqcgPiBvb2ludXphXCA7Civml6XmmYLoqIggPiBoaWRva2VpXCA7CivmmYLkuovoq5YgPiBqaWppcm9uXCA7Civkv53ppIrpmaIgPiBob3lvdWluXCA7Civoh6rnhLbolq8gPiBqaW5lbmpvXCA7Civkv53lgaXmiYAgPiBob2tlbmpvXCA7Civpm6LlvIHoirEgPiByaWJlbmthXCA7CivmrKHkuJbku6MgPiBqaXNlZGFpXCA7CivkuI3lmajnlKggPiBidWtpeW91XCA7CivmiYvlpYfpupcgPiB0ZWdpcmVpXCA7Civloanln7rmgKcgPiBlbmtpc2VpXCA7CivoqJjlv7Xml6UgPiBraW5lbmJpXCA7Civpq5jnpZbniLYgPiBrb3Vzb2Z1XCA7Civku4rml6XkuK0gPiBreW91anV1XCA7CivouqvntrrpupcgPiBtaWdpcmVpXCA7CivokI7pu4Tnl4UgPiBpb3VieW91XCA7Civmk6zlj6TmlocgPiBnaWtvYnVuXCA7CivlnLDooaPpoZ4gPiBjaGlpcnVpXCA7CivlqYbnvoXploAgPiBiYXJhbW9uXCA7Civnp5jmm7joqrIgPiBoaXNob2thXCA7CivljbDnlLvntJkgPiBpbmdhc2hpXCA7Civkuojmg7PlsYsgPiB5b3NvdXlhXCA7CivmhYjlloTlrrYgPiBqaXplbmthXCA7Civml6nkuZnlpbMgPiBzYW90b21lXCA7CivlnJ/mm5zml6UgPiBkb3lvdWJpXCA7CivpmY3pm6jmnpcgPiBrb3V1cmluXCA7CivmnJ3poqjlkYIgPiBhc2FidXJvXCA7Civlho3kuIvku5ggPiBzYWlrYWZ1XCA7CivmtIvnlLvlrrYgPiB5b3VnYWthXCA7Civlrpropo/luqcgPiBqb3VnaXphXCA7CivpnIDnlKjlrrYgPiBqdXlvdWthXCA7Civkv53lgaXlqaYgPiBob2tlbmZ1XCA7Civpq5jnpZbmr40gPiBrb3Vzb2JvXCA7CivlpJbogLPngo4gPiBnYWlqaWVuXCA7CivkuI3oo4Hlj68gPiBmdXNhaWthXCA7Civorablgpnlk6EgPiBrZWliaWluXCA7CivoqqTkvZzli5UgPiBnb3NhZG91XCA7Civku67lkI3mnKwgPiBrYW5haG9uXCA7CivliqnnlKPmiYAgPiBqb3NhbmpvXCA7CivlpKfmmYLku6MgPiBvb2ppZGFpXCA7Civmnrjmq57phbggPiBrdWVuc2FuXCA7CivomZrnhKHlg6cgPiBrb211c291XCA7CivlrLDoqJjlj7cgPiBlaWtpZ291XCA7Civkv53lgaXljLsgPiBob2tlbicnaVwgOwor5LqM5Y2B5q2zID4gaGF0YWNoaVwgOwor6aCt5a2X6KqeID4gdG91amlnb1wgOwor5pyo5aSq5YiAID4ga2lkYWNoaVwgOwor6JOu6I+v5bqnID4gcmVuZ2V6YVwgOwor5oSb5pu45a62ID4gYWlzaG9rYVwgOwor6aas5YiA6LKdID4gbWF0ZWdhaVwgOwor6Laj5oSP5pu4ID4gc2h1aXNob1wgOwor6YGL5pCs6LK7ID4gdW5wYW5oaVwgOwor5pSY5aS36KuWID4gam91aXJvblwgOwor5oeQ55aR5rS+ID4ga2FpZ2loYVwgOwor54Sh54WZ54KtID4gbXVlbnRhblwgOwor5a6J6Z2Z5pmCID4gYW5zZWlqaVwgOwor5aWz55Sf5b6SID4gam9zZWl0b1wgOwor6JmO54eV5ouzID4ga29lbmtlblwgOwor5q2j5bi45L2NID4gc2Vpam91aVwgOwor6KOc5Yqp6YeRID4gaG9qb2tpblwgOwor6Zi/5amG5pOmID4gYWJhenVyZVwgOwor5LqM5Y2B5pelID4gaGF0c3VrYVwgOwor55C155C26KGMID4gYml3YWtvdVwgOwor56eY5pu456eRID4gaGlzaG9rYVwgOwor5Yqp55Sj5ammID4gam9zYW5wdVwgOwor5L+u576F5aC0ID4gc2h1cmFiYVwgOwor5omL5LiA5p2vID4gdGVpcHBhaVwgOwor54Sh57ea5qmfID4gbXVzZW5raVwgOwor5LiH54Gv5LyaID4gbWFuZG91ZVwgOwor5omL57a66bqXID4gdGVnaXJlaVwgOwor5rC05L2N6KiIID4gc3VpaWtlaVwgOwor5ryi5pa55Yy7ID4ga2FucG91aVwgOwor576955uu5p2/ID4gaGFtZWl0YVwgOwor5YW35L2T5qGIID4gZ3V0YWlhblwgOwor5pel5pys5YyWID4gbmlob25rYVwgOwor56CU56Oo5qmfID4ga2VubWFraVwgOwor5aSn6ZuR5oqKID4gb296YXBwYVwgOwor5Y+k5LqV5oi4ID4gZnVydWlkb1wgOwor6IOD5r2w55iNID4gaWthaXlvdVwgOwor5aSa576p5oCnID4gdGFnaXNlaVwgOwor55SY6Zyy54WuID4ga2Fucm9uaVwgOwor5LmZ5aWz5bqnID4gb3RvbWV6YVwgOwor5L+d5a6I5rS+ID4gaG9zaHVoYVwgOwor5Y+Z5LqL6KmpID4gam9qaXNoaVwgOwor5aSn5o6D6ZmkID4gb29zb3VqaVwgOwor54OP6b6N6Iy2ID4gxatyb25jaGFcIDsKK+Wls+eOi+ifuyA+IGpvb3VhcmlcIDsKK+WNiuavjemfsyA+IGhhbmJvaW5cIDsKK+eEoeaUv+W6nCA+IG11c2VpZnVcIDsKK+e+qeWSjOWboyA+IGdpd2FkYW5cIDsKK+WlveS6i+WutiA+IGtvdXp1a2FcIDsKK+ihjOeCuuiAhSA+IGtvdWlzaGFcIDsKK+apn+mWouW6qyA+IGtpa2Fua29cIDsKK+apn+mWouW6pyA+IGtpa2FuemFcIDsKK+WQjOaEj+imiyA+IGRvdWlrZW5cIDsKK+itsOS6i+WggiA+IGdpamlkb3VcIDsKK+WkqeezuOeTnCA+IGhlY2hpbWFcIDsKK+S/neWuieaelyA+IGhvYW5yaW5cIDsKK+iFkOiRieWcnyA+IGZ1eW91ZG9cIDsKK+a1t+ixmuW6pyA+IGlydWthemFcIDsKK+iHquihm+maiiA+IGppZWl0YWlcIDsKK+e5iue2ree0oCA+IHNlbicnaXNvXCA7Civnp7vooYzmgKcgPiBpa291c2VpXCA7Civmua/mua/lqYYgPiB5dXRhbnBvXCA7CivkuqTlsL7mnJ8gPiBrb3ViaWtpXCA7Civpmbbno4HlmaggPiB0b3VqaWtpXCA7Civph43ppqzloLQgPiBvbW9iYWJhXCA7CivmrbPmmYLoqJggPiBzYWlqaWtpXCA7CivpmL/lpJrnpo8gPiBvdGFmdWt1XCA7CivlvqHnr4Dku4sgPiBvc2Vra2FpXCA7Civoj5PlrZDlsYsgPiBrYXNoaXlhXCA7CivnlarlsI/lsYsgPiBiYW5nb3lhXCA7CivmhJvniqzlrrYgPiBhaWtlbmthXCA7CivogL3nvo7mtL4gPiB0YW5iaWhhXCA7Civkv53ogrLmiYAgPiBob2lrdWpvXCA7CivpgYrpm6Lln7ogPiB5dXVyaWtpXCA7CivkupLliqnkvJogPiBnb2pva2FpXCA7Civoo5zliqnnt5ogPiBob2pvc2VuXCA7Civkuovli5nmiYAgPiBqaW11c2hvXCA7Civkv53orbfph5EgPiBob2dva2luXCA7Civoj5PlrZDlmaggPiBrYXNoaWtpXCA7CivmhJvlprvlrrYgPiBhaXNhaWthXCA7CivppIrniLbmr40gPiB5b3VmdWJvXCA7Civotbfpm7vmqZ8gPiBraWRlbmtpXCA7CivkuozmrbvlvowgPiBuaXNoaWdvXCA7CivokYnniaHkuLkgPiBoYWJvdGFuXCA7Civlt7LnhLblvaIgPiBpemVua2VpXCA7CivljZjluqfmqZ8gPiB0YW56YWtpXCA7CivlpKfopo/mqKEgPiBkYWlraWJvXCA7CivlhbfkvZPljJYgPiBndXRhaWthXCA7Civkv53lronlrpggPiBob2Fua2FuXCA7Civph47njaPmtL4gPiB5YWp1dWhhXCA7Civpm7vkvY3lt64gPiBkZW4nJ2lzYVwgOwor6Z2e5a++5b+cID4gaGl0YWlvdVwgOwor6JOW6bq75a2QID4gaGltYXNoaVwgOwor6KO45L2T55S7ID4gcmF0YWlnYVwgOwor5LqL5YuZ5a6YID4gamltdWthblwgOwor6LW36Ki054q2ID4ga2lzb2pvdVwgOwor6YeO5pqu55SoID4geWFib3lvdVwgOwor54Sh54Gv54GrID4gbXV0b3VrYVwgOwor54Sh6KiY5ZCNID4gbXVraW1laVwgOwor6YO96K2w6YG4ID4gdG9naXNlblwgOwor5L+d6IKy5ZySID4gaG9pa3VlblwgOwor5L+d6IKy5ZmoID4gaG9pa3VraVwgOwor5oSb5aW95a62ID4gYWlrb3VrYVwgOwor5aeU5Lu754q2ID4gaW5pbmpvdVwgOwor55So5Zmo55S7ID4geW91a2lnYVwgOwor5L+d6aSK5omAID4gaG95b3Vqb1wgOwor5a625bqt56eRID4ga2F0ZWlrYVwgOwor5LiN5ZCN6KqJID4gZnVtZWl5b1wgOwor5LqU6Lyq5peXID4gZ29yaW5raVwgOwor5L2c5qWt6KGjID4gc2FneW91aVwgOwor5pyo5oi46YqtID4ga2lkb3NlblwgOwor6ICz5LiL6IW6ID4gamlrYXNlblwgOwor5a625bqt552AID4ga2F0ZWlnaVwgOwor5aSW6Zmw6YOoID4gZ2FpaW5idVwgOwor5ZKM6I+T5a2QID4gd2FnYXNoaVwgOwor6Ieq5Zyo55S7ID4gaml6YWlnYVwgOwor6ICV6YGL5qmfID4ga291dW5raVwgOwor5LiA5Zue5b+MID4gaWtrYWlraVwgOwor5LiN5Y+v6KejID4gZnVrYWthaVwgOwor5LiN5Y+v6KaWID4gZnVrYXNoaVwgOwor57eP55CG5bqcID4gc291cmlmdVwgOwor5LqM5YiG5pyoID4gbmlidW5naVwgOwor5bqD6L6e6IuRID4ga291amllblwgOwor5aSa5pWw5rS+ID4gdGFzdXVoYVwgOwor5L+d6K236ICFID4gaG9nb3NoYVwgOwor5aSc6ZaT6YOoID4geWFrYW5idVwgOwor55WZ5a6I6Zu7ID4gcnVzdWRlblwgOwor5o6D6Zmk5qmfID4gc291amlraVwgOwor5LqL5YuZ5LyaID4gamltdWthaVwgOwor5LqL5YmN5b6MID4gaml6ZW5nb1wgOwor6I+p5o+Q5qi5ID4gYm9kYWlqdVwgOwor6LKd54us5qW9ID4gYmFpZ29tYVwgOwor54Sh6Ziy5YKZID4gbXVib3ViaVwgOwor5LiN5oCd6K2wID4gZnVzaGlnaVwgOwor5LiN56mP5b2TID4gZnVvbnRvdVwgOwor5Y+v5aGR5p2QID4ga2Fzb3phaVwgOwor5qKz57a/5qmfID4gc29tZW5raVwgOwor54Sh5omL6aCGID4gbXV0ZWp1blwgOwor5bC+54q26IqxID4gYmlqb3VrYVwgOwor5L6/5Yip5bGLID4gYmVucml5YVwgOwor5LqI55+l5aSiID4geW9jaGltdVwgOwor5b6h56We57GkID4gb21pa3VqaVwgOwor5pig5YaZ5qmfID4gZWlzaGFraVwgOwor5L+d6K2356iOID4gaG9nb3plaVwgOwor5Y+Z5LqL5paHID4gam9qaWJ1blwgOwor6Iux5Lya6KmxID4gZWlrYWl3YVwgOwor5LiN5Y+v6IO9ID4gZnVrYW5vdVwgOwor5pig55S76aSoID4gZWlnYWthblwgOwor6aKo6Zuy5YWQID4gZnV1dW5qaVwgOwor5qWV5YaG5b2iID4gZGFlbmtlaVwgOwor5ryU5aWP5a62ID4gZW5zb3VrYVwgOwor5Y+v5aGR5oCnID4ga2Fzb3NlaVwgOwor6KKr6Zmk5pWwID4gaGlqb3N1dVwgOwor5LqM5qyh5YWDID4gbmlqaWdlblwgOwor5omL5paH5bqrID4gdGVidW5rb1wgOwor5LiA566H5omAID4gaWtrYXNob1wgOwor5LqI5YKZ6ZqKID4geW9iaXRhaVwgOwor55aR5ZWP56ymID4gZ2ltb25mdVwgOwor5Zu65a6a6LK7ID4ga290ZWloaVwgOwor5piO5rK75bqnID4gbWVpaml6YVwgOwor55CG5oOz5a62ID4gcmlzb3VrYVwgOwor5Zyf5aOH5aC0ID4gZG90YW5iYVwgOwor5LqM5qyh5LyaID4gbmlqaWthaVwgOwor576p5YuZ5oSfID4gZ2ltdWthblwgOwor5LiJ5Y+J6LevID4gc2Fuc2Fyb1wgOwor5rOi5biD6Iy2ID4gaGFidWNoYVwgOwor5LiN5oSb5oOzID4gYnVhaXNvdVwgOwor5LiA566H5bm0ID4gaWtrYW5lblwgOwor5LqI5YKZ6YeRID4geW9iaWtpblwgOwor5LiN5Y+v55+lID4gZnVrYWNoaVwgOwor6I+p5o+Q5a+6ID4gYm9kYWlqaVwgOwor56Gr6buE5bGxID4gaW91eWFtYVwgOwor57Sg5Zug5pWwID4gc29pbnN1dVwgOwor5LuP6Jit6KW/ID4gZnVyYW5zdVwgOwor5LiN5ZCI55CGID4gZnVnb3VyaVwgOwor5o6D6Zmk5ammID4gc291amlmdVwgOwor6YeO5pqu5aSpID4geWFib3RlblwgOwor5a625YW3562JID4ga2FndXRvdVwgOwor6JaU6JaH6ImyID4gYmFyYWlyb1wgOwor5LiN5oSJ5b+rID4gZnV5dWthaVwgOwor6L6y5qmf5YW3ID4gbm91a2lndVwgOwor6Ly46YCB6LK7ID4geXVzb3VoaVwgOwor55yL6K235ammID4ga2FuZ29mdVwgOwor5b6h56We54GrID4gZ29qaW5rYVwgOwor5LqI5YKZ6LuNID4geW9iaWd1blwgOwor5Y+k5paH5pu4ID4ga29tb25qb1wgOwor6Ieq6KGb5qipID4gamllaWtlblwgOwor5o6D6Zmk5ZmoID4gc291amlraVwgOwor55CG5oOz5YyWID4gcmlzb3VrYVwgOwor5ZCI5rCj6YGTID4gYWlraWRvdVwgOwor54K554Gr5ZmoID4gdGVua2FraVwgOwor57695LqM6YeNID4gaGFidXRhZVwgOwor6KaP5rqW5YyWID4ga2lqdW5rYVwgOwor6auY5bqm5beuID4ga291ZG9zYVwgOwor5ZCI5rCX6YGTID4gYWlraWRvdVwgOwor54Sh5Zmo55SoID4gYnVraXlvdVwgOwor5a+E5LuY6YeRID4ga2lmdWtpblwgOwor54Gr5Y+j5rmWID4ga2Frb3Vrb1wgOwor5pS/5rK75bGLID4gc2Vpaml5YVwgOwor5YCL44CF5Lq6ID4ga29rb2ppblwgOwor5Y+v5aGR5YmkID4ga2Fzb3phaVwgOwor5pS/5rK75a62ID4gc2VpamlrYVwgOwor6YGL5Za26LK7ID4gdW4nJ2VpaGlcIDsKK+idpuWkt+iPiiA+IGV6b2dpa3VcIDsKK+S/neitt+aelyA+IGhvZ29yaW5cIDsKK+acqOaIuOeVqiA+IGtpZG9iYW5cIDsKK+a1heefpeaBtSA+IGFzYWRqaWVcIDsKK+mdkuixjOixhiA+IGFvZW5kb3VcIDsKK+Wls+S4iOWkqyA+IGpvam91YnVcIDsKK+WGhuiomOWPtyA+IGVua2lnb3VcIDsKK+S6nOWvkuW4ryA+IGFrYW50YWlcIDsKK+axn+aIuOW3nSA+IGVkb2dhd2FcIDsKK+avlOmbu+iNtyA+IGhpZGVua2FcIDsKK+W5vOWFkOiqniA+IHlvdWppZ29cIDsKK+aal+aal+ijoSA+IGFuJydhbnJpXCA7CivkuI3mtYTloLQgPiBmdWpvdWJhXCA7Civmmpfmmpfoo48gPiBhbicnYW5yaVwgOwor5rmv5rK75aC0ID4gdG91amliYVwgOwor6ISz5ZGz5ZmMID4gbm91bWlzb1wgOwor5a2Q55S76Z2iID4ga29nYW1lblwgOwor5Y+v6KaW5YyWID4ga2FzaGlrYVwgOwor5LiN5rOo5oSPID4gZnVjaHV1aVwgOwor6K236KGb6ImmID4gZ29laWthblwgOwor5qyh5omT6ICFID4gamlkYXNoYVwgOwor5oqr6Zyy5a60ID4gaGlyb3VlblwgOwor6Ieq6KGb5a6YID4gamllaWthblwgOwor55WZ5a6I55WqID4gcnVzdWJhblwgOwor5Lqc6Z+z6YCfID4gYW9uc29rdVwgOwor5b6h5rOo5oSPID4gZ29jaHV1aVwgOwor5Yy756eR5a2mID4gaWthZ2FrdVwgOwor55Ww5pa55oCnID4gaWhvdXNlaVwgOwor54Sh6ZGR5p+7ID4gbXVrYW5zYVwgOwor5LqM55Wq55uuID4gbmliYW5tZVwgOwor56Gs5YyW5rK5ID4ga291a2F5dVwgOwor5pig55S756WtID4gZWlnYXNhaVwgOwor5pig55S756S+ID4gZWlnYXNoYVwgOwor5LiN5q2j6KaPID4gZnVzZWlraVwgOwor6I2K5qOY57eaID4gYmFyYXNlblwgOwor5oWw6ZyK56WtID4gaXJlaXNhaVwgOwor5a2m5qCh5Yy7ID4gZ2Fra291aVwgOwor6YeR5paH5a2XID4ga2lubW9qaVwgOwor5b6h5rOV5bqmID4gZ29oYXR0b1wgOwor5rCX5L+d6aSKID4ga2lob3lvdVwgOwor6YmE54Gr5aC0ID4gdGVra2FiYVwgOwor5Yuk5YuZ5ZOhID4ga2lubXVpblwgOwor55Ww5pif5Lq6ID4gaXNlaWppblwgOwor5pig55S755WMID4gZWlnYWthaVwgOwor5LqU55W/5YaFID4gZ29raW5haVwgOwor5b6h56C0566XID4gZ29oYXNhblwgOwor5pmu5q61552AID4gZnVkYW5naVwgOwor5ZCm5a6a6KqeID4gaGl0ZWlnb1wgOwor6YGV5oay5oCnID4gaWtlbnNlaVwgOwor5aGp5YyW6YqAID4gZW5rYWdpblwgOwor5L+d6K235Y+4ID4gaG9nb3NoaVwgOwor5b6X5oSP5rCXID4gdG9rdWlnZVwgOwor5omL57Sw5belID4gdGV6YWlrdVwgOwor6IiO5Yip5aGpID4gc2hhcmllblwgOwor6Kaq6aas6bm/ID4gb3lhYmFrYVwgOwor6Iie6LiK5a62ID4gYnV0b3VrYVwgOwor5aWH5b2i5YWQID4ga2lrZWlqaVwgOwor5Y2I5b6M5LitID4gZ29nb2p1dVwgOwor6Kmt5byB5a62ID4ga2liZW5rYVwgOwor6IOD5rSX5rWEID4gaXNlbmpvdVwgOwor5LiN5ZCM5YyWID4gZnVkb3VrYVwgOwor55Ww5pWZ5b6SID4gaWt5b3V0b1wgOwor5rmv5Yqg5ribID4geXVrYWdlblwgOwor6Z2e6Kqy56iOID4gaGlrYXplaVwgOwor5ZKM5qW95ZmoID4gd2FnYWtraVwgOwor6YGV5rOV6ICFID4gaWhvdXNoYVwgOwor6Ly46YCB5qmfID4geXVzb3VraVwgOwor5LiO6YeO5YWaID4geW95YXRvdVwgOwor5byV54Gr54K5ID4gaW5rYXRlblwgOwor57695a2Q5p2/ID4gaGFnb2l0YVwgOwor6Z+z5rKZ5rGwID4gb3Rvc2F0YVwgOwor56a+5pys56eRID4ga2Fob25rYVwgOwor5LiN5Y+v5YiGID4gZnVrYWJ1blwgOwor6byg5b6E6YOoID4gc29rZWlidVwgOwor5Lm+6I+T5a2QID4gaGlnYXNoaVwgOwor54Sh5oqA5benID4gbXVnaWtvdVwgOwor6YO96K2w5LyaID4gdG9naWthaVwgOwor5LqI5YKZ5qChID4geW9iaWtvdVwgOwor6Kaz5LiW6Z+zID4ga2FuemVvblwgOwor5Y2K6YGO5Y67ID4gaGFua2Frb1wgOwor5LiN5Y+C5YqgID4gZnVzYW5rYVwgOwor6YGV5Y+N6ICFID4gaWhhbnNoYVwgOwor5oGj5oSP5oCnID4gc2hpaXNlaVwgOwor5LuY5Yqg56iOID4gZnVrYXplaVwgOwor5pmC6KiI5bqnID4gdG9rZWl6YVwgOwor6YOo5bGL5LujID4gaGV5YWRhaVwgOwor5q+N6Z+z5oCnID4gYm9pbnNlaVwgOwor5LiN5b6X5oSPID4gZnV0b2t1aVwgOwor6Zu76Kmx5qmfID4gZGVud2FraVwgOwor54Sh5ouF5L+dID4gbXV0YW5wb1wgOwor5o6q6L6e5rOVID4gc29qaWhvdVwgOwor5YWr5Lmd5YiGID4gaGFra3VidVwgOwor5qC55aSq5p2/ID4gbmVkYWl0YVwgOwor54Gr5Yqg5ribID4gaGlrYWdlblwgOwor5Lqc54eQ6YW4ID4gYXJpbnNhblwgOwor5pmC6KiI5bGLID4gdG9rZWl5YVwgOwor6Z2S5LqM5omNID4gYW9uaXNhaVwgOwor6YeO5pS+5ZuzID4gbm9ob3V6dVwgOwor5bm85YWQ5pyfID4geW91amlraVwgOwor5oyJ5pGp6IaPID4gYW5tYWtvdVwgOwor5rCX6Ium5Yq0ID4ga2lndXJvdVwgOwor5pS/5bqc5qGIID4gc2VpZnVhblwgOwor5LqM546L6ZaAID4gbmlvdW1vblwgOwor5LqI5YKZ5b25ID4geW9iaWVraVwgOwor5LiN6YGT55CGID4gZnVkb3VyaVwgOwor6YeR54Sh5Z6iID4ga2lubXVrdVwgOwor5YG96YCg5Y2wID4gZ2l6b3VpblwgOwor54Sh5om55YikID4gbXVoaWhhblwgOwor5Zuz5pu46LK7ID4gdG9zaG9oaVwgOwor5bm46YGL5YWQID4ga291dW5qaVwgOwor5aGp5rC05rmWID4gZW5zdWlrb1wgOwor5rWB5biD5pysID4gcnVmdWJvblwgOwor5bGx6Iy26IqxID4gc2F6YW5rYVwgOwor56e75rCR5rOVID4gaW1pbmhvdVwgOwor6ay855m+5ZCIID4gb25peXVyaVwgOwor5aWI6Imv55yMID4gbmFyYWtlblwgOwor5LiN5Yud5omLID4gZnVrYXR0ZVwgOwor5aSp6bqp576FID4gdGVucHVyYVwgOwor5LiN5Yip55uKID4gZnVyaWVraVwgOwor5biC5ZCP5ZOhID4gc2hpcmlpblwgOwor5oSP6KaL5pu4ID4gaWtlbnNob1wgOwor5oWw6ZyK5aGUID4gaXJlaXRvdVwgOwor5oiR5Yip5YuJID4gZ2FyaWJlblwgOwor5pOs5a6d54+gID4gZ2lib3NoaVwgOwor5aSn5ZKM57W1ID4geWFtYXRvZVwgOwor5bCP5YiH5omLID4ga29naXR0ZVwgOwor6Lui6Lev5ZmoID4gdGVucm9raVwgOwor5Yik5LqL6KOcID4gaGFuamlob1wgOwor5bGg6JiH5pWjID4gdG9zb3NhblwgOwor5b6h5bqD55uuID4gb2hpcm9tZVwgOwor5Y+C6K2w6ZmiID4gc2FuZ2lpblwgOwor5LqI5YKZ5ZOBID4geW9iaWhpblwgOwor55CG5bel56eRID4gcmlrb3VrYVwgOwor54Gr6JGs5aC0ID4ga2Fzb3ViYVwgOwor5a+S5Z6i6ZuiID4ga2FuZ29yaVwgOwor6Ziy6KGb6LK7ID4gYm91ZWloaVwgOwor6aas5bCP5bGLID4gdW1hZ295YVwgOwor5LqI5YKZ5YW1ID4geW9iaWhlaVwgOwor5bCP6YGT5YW3ID4ga29kb3VndVwgOwor5biM5YWD57SgID4ga2lnZW5zb1wgOwor5LiW55WM6KqeID4gc2VrYWlnb1wgOwor6K236KGb5YW1ID4gZ29laWhlaVwgOwor5b2i6ICM5LiLID4ga2VpamlrYVwgOwor6Z2S6Zu76KmxID4gYW9kZW53YVwgOwor5LqM5p6a55uuID4gbmltYWltZVwgOwor5LiJ5beu6LevID4gc2Fuc2Fyb1wgOwor5LuW5bqc55yMID4gdGFmdWtlblwgOwor5L+d57ea5Yy6ID4gaG9zZW5rdVwgOwor5Ye656i95Y+kID4gZGVnZWlrb1wgOwor5LiN5YW36ICFID4gZnVndXNoYVwgOwor5ryU566X5qmfID4gZW56YW5raVwgOwor5bmy6I+T5a2QID4gaGlnYXNoaVwgOwor6YG65Lyd5rOVID4gaWRlbmhvdVwgOwor5Yy75YyW5a2mID4gaWthZ2FrdVwgOwor6YG65a625pePID4gaWthem9rdVwgOwor5bCP5Yip5Y+jID4ga29yaWtvdVwgOwor5aSp5rCX6YGLID4gdGVua2l1blwgOwor5bqc6K2w5LyaID4gZnVnaWthaVwgOwor5L+d6Zm65Yy7ID4gaG9rZW4nJ2lcIDsKK+atoumfs+WZqCA+IHNoaW9ua2lcIDsKK+WQiOawl+S8miA+IGFpa2lrYWlcIDsKK+mGjemGkOWRsyA+IGRhaWdvbWlcIDsKK+aEj+Wbs+eahCA+IGl0b3Rla2lcIDsKK+WcsOejgeawlyA+IGNoaWppa2lcIDsKK+eUn+aEj+awlyA+IG5hbWFpa2lcIDsKK+Wbm+asoeWFgyA+IHlvamlnZW5cIDsKK+W+oeebrueOiSA+IG9tZWRhbWFcIDsKK+WFrOaWh+aJgCA+IGt1bW9uam9cIDsKK+W+oeW6p+aJgCA+IGdvemFzaG9cIDsKK+Wkp+mLuOWxkSA+IG9nYWt1enVcIDsKK+eUmOa1t+iLlCA+IGFtYW5vcmlcIDsKK+W7uuitsOahiCA+IGtlbmdpYW5cIDsKK+eigeS8muaJgCA+IGdva2Fpam9cIDsKK+mYsueBq+aIuCA+IGJvdWthZG9cIDsKK+eZu+WxseWutiA+IHRvemFua2FcIDsKK+eCiuS6i+WgtCA+IHN1aWppYmFcIDsKK+eEoeaEm+aDsyA+IGJ1YWlzb3VcIDsKK+iLseaWh+enkSA+IGVpYnVua2FcIDsKK+mFuOaAp+mbqCA+IHNhbnNlaXVcIDsKK+Wwiueah+eOiyA+IHNvbicnbm91XCA7CivmtL7nlJ/oqp4gPiBoYXNlaWdvXCA7CivpgbrkvJ3mgKcgPiBpZGVuc2VpXCA7CivljLvnmYLosrsgPiBpcnlvdWhpXCA7CivlpKfnpZbniLYgPiBkYWlzb2Z1XCA7Civou43ojbzliKkgPiBndW5kYXJpXCA7Civnmb3kupzntIAgPiBoYWt1YWtpXCA7CivpqI7ppqzmiKYgPiBraWJhc2VuXCA7Civnm67kuIDmna8gPiBtZWlwcGFpXCA7CivoqJjkuovmlocgPiBraWppYnVuXCA7CivlkozlpKrpvJMgPiB3YWRhaWtvXCA7CivkuojlrprmoYggPiB5b3RlaWFuXCA7CivnrKblj7flmaggPiBmdWdvdWtpXCA7Civmm7joqJjoo5wgPiBzaG9raWhvXCA7Civlv5zmj7Tlm6MgPiBvdWVuZGFuXCA7CivpgbrkvJ3lrZAgPiBpZGVuc2hpXCA7CivpmaTojYnlmaggPiBqb3NvdWtpXCA7Civkuojlrprml6UgPiB5b3RlaWJpXCA7Civkv53mjIHogIUgPiBob2ppc2hhXCA7Civmm7zpmYDnvoUgPiBtYW5kYXJhXCA7CivljZjkvY3lhYMgPiB0YW5pZ2VuXCA7CivmhI/lnLDmgqogPiBpaml3YXJ1XCA7Civnm4rojZLnlLcgPiBtYXN1cmFvXCA7CivkuIrlh7rmnaUgPiBqb3VkZWtpXCA7CivnrKblj7fljJYgPiBmdWdvdWthXCA7CivkuI3nm7jlv5wgPiBmdXNvdW91XCA7Civoi7Hoqp7niYggPiBlaWdvYmFuXCA7Civph43ngavlmaggPiBqdXVrYWtpXCA7CivmkanliKnmlK8gPiBtYXJpc2hpXCA7CivnlbDnq6/oppYgPiBpdGFuc2hpXCA7CivokazlhIDlsYsgPiBzb3VnaXlhXCA7CivpoIXkvY3nva4gPiBrb3VpY2hpXCA7CivljLvluKvms5UgPiBpc2hpaG91XCA7CivokaHokITlnJIgPiBidWRvdWVuXCA7CivkupTmlpfnsbMgPiBnb3RvYmVpXCA7Civlj6/mhJvmsJcgPiBrYXdhaWdlXCA7CivkupTnt5rorZwgPiBnb3NlbmZ1XCA7CivlvqHlupzlhoUgPiBnb2Z1bmFpXCA7CivlrZDppqzluqcgPiBrb3VtYXphXCA7CivlsI/oiqXlrZAgPiBrb2tlc2hpXCA7CivmgZLmuKnlmaggPiBrb3VvbmtpXCA7Civnn6XmgbXogIUgPiBjaGllc2hhXCA7CivpgbrotIjliIYgPiBpem91YnVuXCA7CivlpKrliIDprZogPiB0YWNoaXVvXCA7CivliqnmvJTogIUgPiBqb2Vuc2hhXCA7Civku6PnkIbpg6ggPiBkYWlyaWJ1XCA7Civnp7vli5XkvZMgPiBpZG91dGFpXCA7CivpgYvli5XosrsgPiB1bmRvdWhpXCA7CivlpKnptZ3ntaggPiBiaXJvdWRvXCA7CivkuIDphbjljJYgPiBpc3NhbmthXCA7CivpgaDot53pm6IgPiBlbmt5b3JpXCA7CivkvZDos4DnnIwgPiBzYWdha2VuXCA7Civpq5jpn7Ppg6ggPiBrb3VvbmJ1XCA7CivnlbDnq6/ogIUgPiBpdGFuc2hhXCA7CivlvKXmrKHppqwgPiB5YWppdW1hXCA7CivogJXogJjmqZ8gPiBrb3V1bmtpXCA7CivmhJ/ljJbpmaIgPiBrYW5rYWluXCA7CivkuI3mqZ/lq4wgPiBmdWtpZ2VuXCA7Civpg6jlpJbnp5ggPiBidWdhaWhpXCA7CivkupznhrHluK8gPiBhbmV0dGFpXCA7Civlr4zlo6vlsbEgPiBmdWppc2FuXCA7CivmjIfmj67miYAgPiBzaGlraWpvXCA7CivnlJ/phqTmsrkgPiBraWpvdXl1XCA7CivmtYTnkaDnkoMgPiBqb3VydXJpXCA7Civoo5zkvZDlrpggPiBob3Nha2FuXCA7CivpgY7ljrvlvaIgPiBrYWtva2VpXCA7CivojYnku67lkI0gPiBzb3VnYW5hXCA7CivlvqHmqZ/lq4wgPiBnb2tpZ2VuXCA7CivkuI3lsaXooYwgPiBmdXJpa291XCA7Civmk6zkurrljJYgPiBnaWppbmthXCA7CivliIbluqblmaggPiBidW5kb2tpXCA7Civlh7rnm67ph5EgPiBkZW1la2luXCA7CivlpJzmsb3ou4ogPiB5b2dpc2hhXCA7Civlt6bmtL7ns7sgPiBzYWhha2VpXCA7CivoqZDmrLrnvaogPiBzYWdpemFpXCA7CivppYLpo6nlsYsgPiB1ZG9uJyd5YVwgOwor5aSi5oOz5a62ID4gbXVzb3VrYVwgOwor6KiY6K2c5rOVID4ga2lmdWhvdVwgOwor5LiA5q275b6MID4gaXNzaGlnb1wgOwor6Z2e6KGb55SfID4gaGllaXNlaVwgOwor6Kqk5oqV5LiLID4gZ290b3VrYVwgOwor5LiN6Ieq55SxID4gZnVqaXl1dVwgOwor6Iux5pWw5a2XID4gZWlzdXVqaVwgOwor55+l5oOF5oSPID4gY2hpam91aVwgOwor6aKo5ZGC5qG2ID4gZnVyb29rZVwgOwor6Iux6Kqe5ZyPID4gZWlnb2tlblwgOwor5L2O6Z+z6YOoID4gdGVpb25idVwgOwor5LqM5pyf5Yi2ID4gbmlraXNlaVwgOwor5pOs5aOw6KqeID4gZ2lzZWlnb1wgOwor55So5YuZ5ZOhID4geW91bXVpblwgOwor5b6h6Ium5Yq0ID4gZ29rdXJvdVwgOwor5pyq55m76KiYID4gbWl0b3VraVwgOwor57Ch5piT5YyWID4ga2FuJydpa2FcIDsKK+S4gOmBjuaApyA+IGlra2FzZWlcIDsKK+mBi+mAgeiyuyA+IHVuc291aGlcIDsKK+WMu+W4q+S8miA+IGlzaGlrYWlcIDsKK+iHquWPmeS8nSA+IGppam9kZW5cIDsKK+Wkqeawl+WxiyA+IHRlbmtpeWFcIDsKK+mbo+aYk+W6piA+IG5hbicnaWRvXCA7Civku67mlbDpg6ggPiBrYXN1dWJ1XCA7CivljYHlrZfot68gPiBqdXVqaXJvXCA7CivpvKDouYrpg6ggPiBzb2tlaWJ1XCA7CivosqDnrKblj7cgPiBmdWZ1Z291XCA7CivlpKflvqHmiYAgPiBvb2dvc2hvXCA7CivliIbluIPlm7MgPiBidW5wdXp1XCA7Civoo73lm7PlrrYgPiBzZWl6dWthXCA7CivmiKbmmYLkuIsgPiBzZW5qaWthXCA7CivlpKnmsJflm7MgPiB0ZW5raXp1XCA7Civos5vnvo7mrYwgPiBzYW5iaWthXCA7Civou43kuovosrsgPiBndW5qaWhpXCA7Civngo7lpKnkuIsgPiBlbnRlbmthXCA7CivogqXmuoDlhZAgPiBoaW1hbmppXCA7CivmtarmvKvmtL4gPiByb21hbmhhXCA7Civotbfph43mqZ8gPiBraWp1dWtpXCA7CivlnKfnoJXmqZ8gPiBhc3NhaWtpXCA7Civlm57ot6/lm7MgPiBrYWlyb3p1XCA7CivlhbXlmajluqsgPiBoZWlraWtvXCA7CivlspDpmJznnIwgPiBnaWZ1a2VuXCA7Civlurbli5noqrIgPiBzaG9tdWthXCA7Civpm6LnuIHnirYgPiByaWVuam91XCA7CivmraPopo/ljJYgPiBzZWlraWthXCA7Civku4rlh7rmnaUgPiBpbWFkZWtpXCA7CivmpJzms6LlmaggPiBrZW5wYWtpXCA7CivntbXlj4zntJkgPiBlem91c2hpXCA7CivkuIvku5jph5EgPiBrYWZ1a2luXCA7Civpgb/pm6PmiYAgPiBoaW5hbmpvXCA7CivniYfmhI/lnLAgPiBrYXRhaWppXCA7CivljLvlrabpg6ggPiBpZ2FrdWJ1XCA7CivkuojloLHpn7MgPiB5b2hvdW9uXCA7CivpoqjlkYLku6MgPiBmdXJvZGFpXCA7Civlvoznn6XmgbUgPiBhdG9kamllXCA7Civlt67mqZ/plqIgPiBzYWtpa2FuXCA7Civlp5Tlk6HplbcgPiBpaW5jaG91XCA7CivoqZDmrLrluKsgPiBzYWdpc2hpXCA7CivlpJbnpZbniLYgPiBnYWlzb2Z1XCA7Civoq5bnkIblkowgPiByb25yaXdhXCA7Civph47llrblnLAgPiB5YWVpY2hpXCA7Civpm7Dlm7LmsJcgPiBmdW4nJ2lraVwgOwor5Zug576O57eaID4gaW5iaXNlblwgOwor5rCX5LiI5aSrID4ga2lqb3VidVwgOwor5Yid5pyf5YyWID4gc2hva2lrYVwgOwor5q2p6KGM5ZmoID4gaG9rb3VraVwgOwor5rmv6LGG6IWQID4geXVkb3VmdVwgOwor6KOP6IOM5oi4ID4gdXJhc2Vkb1wgOwor5Yqg566X5qmfID4ga2FzYW5raVwgOwor5pS+55Sf5LyaID4gaG91am91ZVwgOwor6IKy5YWQ6ZmiID4gaWt1amlpblwgOwor5LiN5L2c54K6ID4gZnVzYWt1aVwgOwor5q2m6KOF5YW3ID4gYnVzb3VndVwgOwor5LiL6aeE55WqID4gZ2V0YWJhblwgOwor6Ieq5YuV5YyWID4gamlkb3VrYVwgOwor54Sh6YGg5oWuID4gYnVlbnJ5b1wgOwor6YGL5YuV5aC0ID4gdW5kb3ViYVwgOwor5a626KiI6LK7ID4ga2FrZWloaVwgOwor6Z+z5qW95a62ID4gb25nYWtrYVwgOwor5aSW56WW5q+NID4gZ2Fpc29ib1wgOwor5Yq05YuZ6KqyID4gcm91bXVrYVwgOwor54Sh6LuM6YGTID4gbXVraWRvdVwgOwor5LiN5L2c5rOVID4gYnVzYWhvdVwgOwor5Y2B5a2X54GrID4ganV1amlrYVwgOwor6IOD55eZ5pSjID4gaWtlaXJlblwgOwor6YGL5YuV5ZOhID4gdW5kb3VpblwgOwor5qmf5qKw6KqeID4ga2lrYWlnb1wgOwor576O5a656ZmiID4gYml5b3VpblwgOwor5LiA6Lui5qmfID4gaXR0ZW5raVwgOwor5p2T5paH5a2XID4gc2hhbW9qaVwgOwor5o6i5p+75qmfID4gdGFuc2FraVwgOwor55Sw6IiO5a62ID4gaW5ha2F5YVwgOwor6YGL6Lui6LK7ID4gdW50ZW5oaVwgOwor5qmZ55qu5rK5ID4gdG91aGl5dVwgOwor6YGO5bm05bqmID4ga2FuZW5kb1wgOwor6YGL5YuV5YW3ID4gdW5kb3VndVwgOwor5b6h5a2Y55+lID4gZ296b25qaVwgOwor5a625pS/56eRID4ga2FzZWlrYVwgOwor5bCP5aWH6bqXID4ga29naXJlaVwgOwor56e75L2P6ICFID4gaWp1dXNoYVwgOwor6YGT5YW35bGLID4gZG91Z3V5YVwgOwor5ZCM576p6KqeID4gZG91Z2lnb1wgOwor5qih5pOs5oimID4gbW9naXNlblwgOwor6JKy5YWs6IuxID4gdGFucG9wb1wgOwor56i95Y+k552AID4ga2Vpa29naVwgOwor5LiL5LiW6KmxID4gZ2VzZXdhXCA7Civov6bmpbznvoUgPiBrYXJ1cmFcIDsKK+aJi+W/oOWunyA+IHRlbWFtZVwgOwor6aeE5rSS6JC9ID4gZGFqYXJlXCA7CivkuIvpp4TlsYsgPiBnZXRheWFcIDsKK+mnhOazleieuiA+IGRhYm9yYVwgOwor6YGO5L+d6K23ID4ga2Fob2dvXCA7CivpnZ7llrbliKkgPiBoaWVpcmlcIDsKK+e1jOe3r+WEgCA+IGtlaWlnaVwgOwor5ZGR5YW16KGbID4gbm9uYmVlXCA7CivkuI3nvqnnkIYgPiBmdWdpcmlcIDsKK+acieaEj+W3riA+IHl1dWlzYVwgOwor6auY57ev5bqmID4ga291aWRvXCA7CivkuI3osp7lr50gPiBmdXRlbmVcIDsKK+atr+WMu+iAhSA+IGhhaXNoYVwgOwor5Ly86aGU57W1ID4gbmlnYW9lXCA7Civmra/np5HljLsgPiBzaGlrYWlcIDsKK+eBq+S6i+WgtCA+IGthamliYVwgOwor6LGq6Zuo56aNID4gZ291dWthXCA7Civkupzpurvoo70gPiBhbWFzZWlcIDsKK+S8vOmhlOeUuyA+IG5pZ2FvZVwgOwor6aeE6YWS6JC9ID4gZGFqYXJlXCA7CivlsbHnvorluqcgPiB5YWdpemFcIDsKK+WNkuWhlOWphiA+IHNvdG9iYVwgOwor5Lqc6bq76ImyID4gYW1haXJvXCA7CivpnZLmtbfoi5QgPiBhb25vcmlcIDsKK+S8vOmdnuimqiA+IGVzZW95YVwgOwor5Lqc6bq757O4ID4gYW1haXRvXCA7Civlha3ljYHot68gPiBtdXNvamlcIDsKK+S6nOa4qeW4ryA+IGFvbnRhaVwgOwor5L2Z5omA6KaLID4geW9zb21pXCA7Civlp5Tlk6HkvJogPiBpaW5rYWlcIDsKK+S+neWtmOW6piA+IGl6b25kb1wgOwor6Zi/5YOn56WHID4gYXNvdWdpXCA7CivlhavljYHot68gPiB5YXNvamlcIDsKK+S8iuWLouidpiA+IGlzZWViaVwgOwor5LyK5Yui6JuvID4gaXNlZWJpXCA7Civmm77npZbniLYgPiBoaWppamlcIDsKK+imi+aghOWdiiA+IG1pZWJvdVwgOwor5Lqc6Ymb54mIID4gYWVuYmFuXCA7CivlvqHnjKrlj6MgPiBvY2hva29cIDsKK+mujuS4puWlsyA+IGFpbmFtZVwgOwor5bmz5piT5YyWID4gaGVpaWthXCA7Civlronkv53nkIYgPiBhbnBvcmlcIDsKK+abvuelluavjSA+IGhpYmFiYVwgOwor57GQ5qSF5a2QID4gdG91aXN1XCA7CivlsI/mloflrZcgPiBrb21vamlcIDsKK+S9meaJgOebriA+IHlvc29tZVwgOwor5LiL6Zmi6K2wID4ga2FpbmdpXCA7CivlrbXljJblmaggPiBmdWtha2lcIDsKK+S6nOmJm+advyA+IGFlbmJhblwgOwor5omL55yf5Ly8ID4gdGVtYW5lXCA7CivkuI3lpoLmhI8gPiBmdW55b2lcIDsKK+a5r+aWh+WtlyA+IHl1bW9qaVwgOwor55Ww5qmf56iuID4gaWtpc2h1XCA7CivkupznoJLphbggPiBhaGlzYW5cIDsKK+mYv+S/rue+hSA+IGFzaHVyYVwgOwor5b6h6ZuR54WuID4gb3pvdW5pXCA7Civnmq7ohprnp5EgPiBoaWZ1a2FcIDsKK+W8n+Wwj+eItiA+IG90b29qaVwgOwor5Li75rK75Yy7ID4gc2h1amlpXCA7CivkuI3oqqDmhI8gPiBmdXNlaWlcIDsKK+W+oeipoOatjCA+IGdvZWlrYVwgOwor6IOD5LiL5Z6CID4gaWthc3VpXCA7CivliLfmr5vnm64gPiBoYWtlbWVcIDsKK+eUsueDj+iziiA+IGtvdWlrYVwgOwor5LyK6YGU552AID4gZGF0ZWdpXCA7CivlvqHopovoiJ4gPiBvbWltYWlcIDsKK+iDjOaWh+WtlyA+IHNlbW9qaVwgOwor5YSq5puH6I+vID4gdWRvbmdlXCA7CivlvqHopYHopJMgPiBvbXV0c3VcIDsKK+ilv+ePreeJmSA+IHN1cGVpblwgOwor5LiN6KaL55uuID4gbWlqaW1lXCA7CivolY7puqbnsokgPiBzb2Jha29cIDsKK+aireWtkOmtmiA+IGthbWFzdVwgOwor5LiN6ZqP5oSPID4gZnV6dWlpXCA7CivntKvpmb3oirEgPiBhamlzYWlcIDsKK+mHjuiJr+edgCA+IG5vcmFnaVwgOwor5LqO6Jit55uGID4gdXJhYm9uXCA7Civoi6blkbPntKAgPiBrdW1pc29cIDsKK+eEoeS6i+aVhSA+IG11amlrb1wgOwor5LiA5pio5pelID4gb3RvdG9pXCA7Civlh7rmnaXlgKQgPiBkZWtpbmVcIDsKK+S8iuWLouS4uSA+IGlzZXRhblwgOwor6aOy5YW16KGbID4gbm9uYmVlXCA7CivmraTlh6bnrYkgPiBrb2tvcmFcIDsKK+mcsuilv+S6nCA+IHJvc2hpYVwgOwor55uu5Yy76ICFID4gbWVpc2hhXCA7CivlpoLkvZXmp5ggPiBpa2F5b3VcIDsKK+egtOmtlOefoiA+IGhhbWF5YVwgOwor55u46YOo5bGLID4gYWliZXlhXCA7CivlraTlhZDpmaIgPiBrb2ppaW5cIDsKK+S7iuaXpeaXpSA+IGt5b3ViaVwgOwor6I285p6z5bC8ID4gZGFraW5pXCA7CivmtbfogIHpjKAgPiBlYmlqb3VcIDsKK+iVjum6puWxiyA+IHNvYmF5YVwgOwor6ZuM5o275a2QID4gbWVuZWppXCA7Civlj6TkuovoqJggPiBrb2ppa2lcIDsKK+ecn+mdouebriA+IG1hamltZVwgOwor6YKj55Sx5LuWID4gbmF5dXRhXCA7CivlgLbmpb3pg6ggPiBrdXJhYnVcIDsKK+Wxi+agueWxiyA+IHlhbmV5YVwgOwor5rW36ICB6Iy2ID4gZWJpY2hhXCA7CivpmL/lqr3muK8gPiBhbWFrb3VcIDsKK+ejgeaWueS9jSA+IGppaG91aVwgOwor6Y2b5Ya25bGLID4ga2FqaXlhXCA7Civloanln7rluqYgPiBlbmtpZG9cIDsKK+efoue+veaguSA+IHlhYmFuZVwgOwor55m+5ZCI5qC5ID4geXVyaW5lXCA7CivpmL/nvoXmvKIgPiBhcmFrYW5cIDsKK+mHjui3r+WtkCA+IG5vamlrb1wgOwor6ZuM6J665a2QID4gbWVuZWppXCA7CivlnJ/kuIvluqcgPiBkb2dlemFcIDsKK+aFsOWuieiAhSA+IGlhbnNoYVwgOwor57W15pel6KiYID4gZW5pa2tpXCA7CivpmYDnvoXlsLwgPiBkYXJhbmlcIDsKK+e+heaWueS9jSA+IHJhaG91aVwgOwor55Ww5L2T5a2XID4gaXRhaWppXCA7CivlkIzmhI/oqp4gPiBkb3VpZ29cIDsKK+mfi+mnhOWkqSA+IGlkYXRlblwgOwor54K65pS/5a62ID4gaXNlaWthXCA7Civkuozluqbnm64gPiBuaWRvbWVcIDsKK+aVsOWvhOWxiyA+IHN1a2l5YVwgOwor5ZCM5oSP576pID4gZG91aWdpXCA7CivlpKfooojoo58gPiBvb2dlc2FcIDsKK+S6i+WLmeWxiyA+IGppbXV5YVwgOwor5rWu5LiW57W1ID4gdWtpeW9lXCA7CivnkLXnkLbmuZYgPiBiaXdha29cIDsKK+S6i+WLmeWutiA+IGppbXVrYVwgOwor5Yqg55WZ5aSaID4ga2FydXRhXCA7CivkuI3lj6/pgb8gPiBmdWthaGlcIDsKK+S6i+WLmeWZqCA+IGppbXVraVwgOwor5b6h5rSS6JC9ID4gb3NoYXJlXCA7Civkuovli5nlk6EgPiBqaW11aW5cIDsKK+akjeacqOWxiyA+IHVla2l5YVwgOwor5LiN5Y+v6KqkID4gZnVrYWdvXCA7CivlvqHph4jov6YgPiBvc2hha2FcIDsKK+WNsOWtl+apnyA+IGluamlraVwgOwor56Gr6buE5rOJID4gaW91c2VuXCA7CivljZLpg73lqYYgPiBzb3RvYmFcIDsKK+WBieS4iOWkqyA+IGlqb3VmdVwgOwor5biD5rW36IuUID4gZnVub3JpXCA7CivnnLzljLvogIUgPiBtZWlzaGFcIDsKK+ecvOenkeWMuyA+IGdhbmthaVwgOwor5oWw5a6J5LyaID4gaWFua2FpXCA7CivmiqvpnLLnm64gPiBoaXJvbWVcIDsKK+S6iOWCmemmrCA+IHlvYmliYVwgOwor5rCX5YyW5ZmoID4ga2lrYWtpXCA7CivmrabogIXntbUgPiBtdXNoYWVcIDsKK+miqOWcn+iomCA+IGZ1ZG9raVwgOwor5b6h5rKz56ulID4gb2thcHBhXCA7CivmhJvnhZnlrrYgPiBhaWVua2FcIDsKK+mDqOWxi+edgCA+IGhleWFnaVwgOwor5LqI5YKZ6LK7ID4geW9iaWhpXCA7CivngJjpgY7lmaggPiByb2tha2lcIDsKK+ijnOWKqeWToSA+IGhvam9pblwgOwor5q+U5LiY5bC8ID4gYmlrdW5pXCA7Civms6LmraLloLQgPiBoYXRvYmFcIDsKK+aYk+WLleW6piA+IGlkb3Vkb1wgOwor57W15Zuz6Z2iID4gZXp1bWVuXCA7Civoo7jlqabnlLsgPiByYWZ1Z2FcIDsKK+atqeS4gOatqSA+IGhvaXBwb1wgOwor5LiJ5Y2B6LevID4gbWlzb2ppXCA7CivkuI3mspnmsbAgPiBidXNhdGFcIDsKK+S4jeatu+i6qyA+IGZ1amltaVwgOwor5ZGK5aSp5a2QID4gaGliYXJpXCA7CivliqDlpYjpmYAgPiBrYW5hZGFcIDsKK+S7pemBoOaoqSA+IGllbmtlblwgOwor5pa96aST6ay8ID4gc2VnYWtpXCA7CivkuInph43nnIwgPiBtaWVrZW5cIDsKK+W+oeaymeaxsCA+IGdvc2F0YVwgOwor5q+b57m75a2QID4ga2VqdXN1XCA7CivkuI3lkIzmhI8gPiBmdWRvdWlcIDsKK+S6iOWCmeenkSA+IHlvYmlrYVwgOwor5rGf5oi45YmNID4gZWRvbWFlXCA7Civnm4LomK3nm4YgPiB1cmFib25cIDsKK+S/neitt+WMuiA+IGhvZ29rdVwgOwor5rWF6IyF55SfID4gYXNhaml1XCA7CivlrrblhbflsYsgPiBrYWd1eWFcIDsKK+Wwj+awl+WRsyA+IGtva2ltaVwgOwor5aSp6JqV57O4ID4gdGVndXN1XCA7CivnlbDmlofljJYgPiBpYnVua2FcIDsKK+WknOimi+S4liA+IHlvbWlzZVwgOwor5L2N55u45beuID4gaXNvdXNhXCA7CivmlbDlpYflsYsgPiBzdWtpeWFcIDsKK+iWlOiWh+WckiA+IGJhcmFlblwgOwor6YGO5rih5pyfID4ga2F0b2tpXCA7CivlsYXloLTmiYAgPiBpYmFzaG9cIDsKK+mBleWSjOaEnyA+IGl3YWthblwgOwor55Sf6JWO6bqmID4ga2lzb2JhXCA7Civlr53plpPnnYAgPiBuZW1ha2lcIDsKK+S4ieWNgeaXpSA+IG1pc29rYVwgOwor5LiN5rCX5ZGzID4gYnVraW1pXCA7CivmnIDkuIvkvY0gPiBzYWlrYWlcIDsKK+W+oeats+aariA+IG9zZWlib1wgOwor5LqI5YKZ5ZOhID4geW9iaWluXCA7CivmmKDnlLvljJYgPiBlaWdha2FcIDsKK+asp+WNsOiqniA+IG91aW5nb1wgOwor5Zuz5qGI5a62ID4genVhbmthXCA7Civlv5zmj7TmrYwgPiBvdWVua2FcIDsKK+mfi+mZgOWkqSA+IGlkYXRlblwgOwor5q2M6Iie5LyOID4ga2FidWtpXCA7CivpmL/omK3pmYAgPiBvcmFuZGFcIDsKK+atjOeVmeWkmiA+IGthcnV0YVwgOwor54Sh5oWI5oKyID4gbXVqaWhpXCA7Civlj5foqbHlmaggPiBqdXdha2lcIDsKK+e/u+i7iumtmiA+IG1hbmJvdVwgOwor5LiN5Ye65p2lID4gZnVkZWtpXCA7Civpm5HprZrlr50gPiB6YWtvbmVcIDsKK+S8iuWkquWIqSA+IGl0YXJpaVwgOwor6aWC6aOp57KJID4gdWRvbmtvXCA7CivnlJjmtbfogIEgPiBhbWFlYmlcIDsKK+Wwj+mmrOm5vyA+IGtvYmFrYVwgOwor5b6h6I+T5a2QID4gb2thc2hpXCA7CivnlKPnp5HljLsgPiBzYW5rYWlcIDsKK+S4ieefpeWcnyA+IHRhdGFraVwgOwor6LOT5L2N6KqeID4gaGluaWdvXCA7CivmkanojqvmnrMgPiBtYW1ha2lcIDsKK+Wwj+eZvuWQiCA+IHNheXVyaVwgOwor54Sh5rKZ5rGwID4gYnVzYXRhXCA7Civng4/luL3lrZAgPiBlYm9zaGlcIDsKK+ellueItuavjSA+IHNvZnVib1wgOwor5Y2B5YWt5aScID4gaXpheW9pXCA7Civov4Llm57ot68gPiB1a2Fpcm9cIDsKK+ilpOikuOWutiA+IGJvcm95YVwgOwor6Z2S57Sr6JiHID4gYW9qaXNvXCA7Civmv77pgY7lmaggPiByb2tha2lcIDsKK+S4jeWFt+WQiCA+IGZ1Z3VhaVwgOwor55+l5oG15q2vID4gY2hpZWJhXCA7CivkuI3otbfoqLQgPiBmdWtpc29cIDsKK+eEoeWMu+adkSA+IG11aXNvblwgOwor5p6c5qi55ZySID4ga2FqdWVuXCA7CivlvqHou6LlqYYgPiBvdGVuYmFcIDsKK+miqOWRguWxiyA+IGZ1cm95YVwgOwor5oSP5ZGz6KuWID4gaW1pcm9uXCA7CivnhKHpgqrmsJcgPiBtdWpha2lcIDsKK+miqOWRguWgtCA+IGZ1cm9iYVwgOwor6Zi/6JiH5bGxID4gYXNvc2FuXCA7Civpro7prZrlpbMgPiBhaW5hbWVcIDsKK+W+oeWutuiKuCA+IG9pZWdlaVwgOwor54Sh5rCX5ZGzID4gYnVraW1pXCA7CivlhoXnp5HljLsgPiBuYWlrYWlcIDsKK+Wkp+mDqOWxiyA+IG9vYmV5YVwgOwor5aCV6IOO5Yy7ID4gZGF0YWlpXCA7CivkuI3nlKjmhI8gPiBmdXlvdWlcIDsKK+S5heaFiOebriA+IGt1amltZVwgOwor5aSn5b6h5LujID4gb29taXlvXCA7CivmnInmhI/nvqkgPiB5dXVpZ2lcIDsKK+mHjuiWlOiWhyA+IG5vYmFyYVwgOwor5qKF6Zuo5pyfID4gYmFpdWtpXCA7CivogLPpvLvnp5EgPiBqaWJpa2FcIDsKK+eUu+aetuW6pyA+IGdha2F6YVwgOwor5LiN5a6J5rCXID4gZnVhbmdlXCA7CivlpKflh7rmnaUgPiBvb2Rla2lcIDsKK+miqOmCquawlyA+IGthemVrZVwgOwor5q2m5Zmo5bqrID4gYnVraWtvXCA7CivkvIrlkYLms6IgPiBpcm9oYVwgOwor5Lqc6Ymb6I+vID4gYWVua2FcIDsKK+e2reaMgeiyuyA+IGlqaWhpXCA7Civkvp3kvLDlnLAgPiBla29qaVwgOwor5oSP5rCX5ZywID4gaWt1amlcIDsKK+eni+WIgOmtmiA+IHNhbm1hXCA7Civlhavph43mra8gPiB5YWViYVwgOwor5aSn5Lyv54i2ID4gb29vamlcIDsKK+Wkp+S8r+avjSA+IG9vb2JhXCA7CivntKvpm7Loi7EgPiBnZW5nZVwgOwor5pyq5pu+5pyJID4gbWl6b3VcIDsKK+S8r+eItuiytCA+IG9qaWtpXCA7Civkupzpurvku4EgPiBhbWFuaVwgOwor5LqU5Y2B6LevID4gaXNvamlcIDsKK+acqOS5g+S8iiA+IG1paXJhXCA7CivkuozljYHph40gPiBoYXRhZVwgOwor5L2c5YuZ6KGjID4gc2FtdWVcIDsKK+WxheeVmeWuiCA+IGlydXN1XCA7Civlr53mpIXlrZAgPiBuZWlzdVwgOwor5bqn5qSF5a2QID4gemFpc3VcIDsKK+mbquiKseiPnCA+IG9rYXJhXCA7Civlhavnmb7lsYsgPiB5YW95YVwgOwor56Gr6buE6I+vID4gaW91a2FcIDsKK+Wwj+aEj+awlyA+IGtvaWtpXCA7CivlvqHnpZ7phZIgPiBvbWlraVwgOwor5LyK5L2Q5pyoID4gaXNha2lcIDsKK+aFsOWuieWppiA+IGlhbmZ1XCA7CivlpKfopovlvpcgPiBvb21pZVwgOwor5bCE5omL5bqnID4gaXRlemFcIDsKK+S4jeaEj+awlyA+IGJ1aWtpXCA7CivojY/og6HpursgPiBlZ29tYVwgOwor57W15paH5a2XID4gZW1vamlcIDsKK+S6lOWAjeWtkCA+IGZ1c2hpXCA7CivmgbXmr5Tlr78gPiBlYmlzdVwgOwor55WZ5a6I5bGFID4gcnVzdWlcIDsKK+S4jeW+l+aJiyA+IGZ1ZXRlXCA7CivnhKHmhI/nvqkgPiBtdWlnaVwgOwor5L6d5oCZ5ZywID4gZWtvamlcIDsKK+mmmeWFt+W4qyA+IHlhc2hpXCA7CivlpKflj5TniLYgPiBvb29qaVwgOwor54Sh5oSP5ZGzID4gbXVpbWlcIDsKK+Wkp+WPlOavjSA+IG9vb2JhXCA7CivmhI/lm7rlnLAgPiBpa29qaVwgOwor5b6h6L6e5YSAID4gb2ppZ2lcIDsKK+mYv+W8pemZgCA+IGFtaWRhXCA7CivlsYXlkIjpgZMgPiBpYWRvdVwgOwor5pyq6YCa5aWzID4gb2Jva29cIDsKK+WbsueCieijjyA+IGlyb3JpXCA7CivlvqHkuJbovp4gPiBvc2VqaVwgOwor5aSW56eR5Yy7ID4gZ2VrYWlcIDsKK+efs+aWkemtmiA+IHVndWlcIDsKK+WmgumbqOmcsiA+IGpvcm9cIDsKK+eZvuiIjOmzpSA+IG1venVcIDsKK+a1ruWhteWtkCA+IHVua2FcIDsKK+S6nOe0sOS6nCA+IGFqaWFcIDsKK+S8vOiAjOmdniA+IGVzZVwgOwor5piU6KmxID4gbXVrYXNoaWJhbmFzaGlcIDsKK+S6peW5tCA+IGlub3NoaXNoaWRvc2hpXCA7CivoqbHoqbEgPiBoYW5hc2hpYmFuYXNoaVwgOwor5LiL5ZSHID4gc2hpdGFrdWNoaWJpcnVcIDsKK+aYlOaYlCA+IG11a2FzaGltdWthc2hpXCA7CivmmJTjgIUgPiBtdWthc2hpbXVrYXNoaVwgOwor6Kmx44CFID4gaGFuYXNoaWJhbmFzaGlcIDsKK+engeeriyA+IHdhdGFrdXNoaXJpdHN1XCA7Civmh5DliIAgPiBmdXRva29yb2dhdGFuYVwgOwor5b+d5raZID4ga2F0YWppa2VuYW1pZGFcIDsKK+WNl+adsSA+IG1pbmFtaWhpZ2FzaGlcIDsKK+WPpOWFtSA+IGZ1cnV0c3V3YW1vbm9cIDsKK+WGhei4nSA+IHVjaGlrdXJ1YnVzaGlcIDsKK+iIjOm8kyA+IHNoaXRhdHN1ZHp1bWlcIDsKK+WBpeiAhSA+IHNoaXRhdGFrYW1vbm9cIDsKK+ahnOelrSA+IHNha3VyYW1hdHN1cmlcIDsKK+S5s+eqhCA+IGNoaWNoaXNoaWJvcmlcIDsKK+izouaJgCA+IGthc2hpa29kb2tvcm9cIDsKK+mdoumtgiA+IHRzdXJhZGFtYXNoaWlcIDsKK+S7j+S9nCA+IGhvdG9rZWR6dWt1cnVcIDsKK+adseWNlyA+IGhpZ2FzaGltaW5hbWlcIDsKK+WkqeeJmyA+IGthbWlraXJpbXVzaGlcIDsKK+WkouW5uyA+IHl1bWVtYWJvcm9zaGlcIDsKK+aBmeiZqyA+IHRzdXRzdWdhbXVzaGlcIDsKK+engeWFsSA+IHdhdGFrdXNoaWRvbW9cIDsKK+engeS6iyA+IHdhdGFrdXNoaWdvdG9cIDsKK+mDveW/mCA+IG1peWFrb3dhc3VyZVwgOwor6YGT5qiZID4gbWljaGlzaGlydWJlXCA7CivovrvnpL4gPiB0c3VqaXlhc2hpcm9cIDsKK+iLpee0qyA+IHdha2FtdXJhc2FraVwgOwor55Wz6bCvID4gdGF0YW1paXdhc2hpXCA7Civnm7LmmqYgPiBtZWt1cmFnb3lvbWlcIDsKK+iFuem8kyA+IGhhcmF0c3VkenVtaVwgOwor5YaF5oeQID4gdWNoaWJ1dG9rb3JvXCA7CivpsLvkuLwgPiB1bmFnaWRvbmJ1cmlcIDsKK+i6vuaWuSA+IHNoaXRzdWtla2F0YVwgOwor5YO75b+DID4gaGlnYW1pZ29rb3JvXCA7CivmpL/msrkgPiB0c3ViYWtpYWJ1cmFcIDsKK+afj+mkhSA+IGthc2hpd2Ftb2NoaVwgOwor5p+E6aCtID4gdHN1a2FnYXNoaXJhXCA7Civkv4Tnm7IgPiBuaXdha2FtZWt1cmFcIDsKK+aeleipniA+IG1ha3VyYWtvdG9iYVwgOwor5YCZ5omAID4gc291cm91dG9rb3JvXCA7CivmoYLnlLcgPiBrYXRzdXJhb3Rva29cIDsKK+WxseaHkCA+IHlhbWFmdXRva29yb1wgOwor5Li86aOvID4gZG9uYnVyaW1lc2hpXCA7CivkuLzpiaIgPiBkb25idXJpYmFjaGlcIDsKK+WAkuS6iyA+IHNha2FzYW1hZ290b1wgOwor5pqB6ZeHID4gYWthdHN1a2l5YW1pXCA7Civmnb7mr6wgPiBtYXRzdXBva2t1cmlcIDsKK+mgreiZsSA+IGF0YW1hc2hpcmFtaVwgOwor5p2+5p6XID4gbWF0c3ViYXlhc2hpXCA7CivmnZ/mn7EgPiB0c3VrYWJhc2hpcmFcIDsKK+S7j+W/gyA+IGhvdG9rZWdva29yb1wgOwor5pyq5bm0ID4gaGl0c3VqaWRvc2hpXCA7CivosLfmh5AgPiB0YW5pYnV0b2tvcm9cIDsKK+mbgemqqCA+IGthcmlnYW5lYm9uZVwgOwor5p2x5Y+jID4gaGlnYXNoaWd1Y2hpXCA7Civmna/kuosgPiBzYWthenVraWdvdG9cIDsKK+eLrOaelSA+IGhpdG9yaW1ha3VyYVwgOwor5LiA5aGKID4gaGl0b2thdGFtYXJpXCA7CivlqJjlv4MgPiBtdXN1bWVnb2tvcm9cIDsKK+Wkj+elrSA+IG5hdHN1bWF0c3VyaVwgOwor5piU5byPID4gbXVrYXNoaXNoaWtpXCA7CivlprnlqJggPiBpbW91dG9tdXN1bWVcIDsKK+mcnOafsSA+IHNoaW1vYmFzaGlyYVwgOwor5pif5Y2wID4gaG9zaGlqaXJ1c2hpXCA7CivooovpvKAgPiBmdWt1cm9uZXp1bWlcIDsKK+e2muafhCA+IHRzdWR6dWtpZ2FyYVwgOwor5Zyf6JuNID4gdHN1Y2hpYm90YXJ1XCA7CivlnJ/nhZkgPiB0c3VjaGlrZW11cmlcIDsKK+aHkOmKrSA+IGZ1dG9rb3JvemVuaVwgOwor6Yu46a6rID4gbm9rb2dpcml6YW1lXCA7CivlnJ/ln4MgPiB0c3VjaGlib2tvcmlcIDsKK+ibjeiiiyA+IGhvdGFydWJ1a3Vyb1wgOwor5oeQ57SZID4gZnV0b2tvcm9nYW1pXCA7Civnp4HpgZQgPiB3YXRhc2hpdGFjaGlcIDsKK+aJgOaJgCA+IHRva29yb2Rva29yb1wgOwor6YeR6Yu4ID4ga2FuZW5va29naXJpXCA7CivmiK/kuosgPiB0YXdhbXVyZWdvdG9cIDsKK+WTgeW9oiA+IHNoaW5ha2F0YWNoaVwgOwor5Yui6LuKID4gaGF6dW1pZ3VydW1hXCA7Civlk4Dlk4kgPiBrYW5hc2hpaWthbmFcIDsKK+aJgOOAhSA+IHRva29yb2Rva29yb1wgOwor5rC055uDID4gbWl6dXNha2F6dWtpXCA7CivljIXntJkgPiB0c3V0c3VtaWdhbWlcIDsKK+awtOadryA+IG1penVzYWthenVraVwgOwor5biv6Yu4ID4gb2Jpbm9rb2dpcmlcIDsKK+WPrOS9vyA+IG1lc2hpdHN1a2FpXCA7Civlipvnn7MgPiBjaGlrYXJhaXNoaVwgOwor55m96bygID4gc2hpcm9uZXp1bWlcIDsKK+WKm+eYpCA+IGNoaWthcmFrb2J1XCA7CivlipvmsLQgPiBjaGlrYXJhbWl6dVwgOwor5Y2X5Y+jID4gbWluYW1pZ3VjaGlcIDsKK+WKm+alrSA+IGNoaWthcmF3YXphXCA7CivpgIbnnasgPiBzYWthbWF0c3VnZVwgOwor6bC556+AID4ga2F0c3VvYnVzaGlcIDsKK+WFnOiZqyA+IGthYnV0b211c2hpXCA7CivlvaLkvZMgPiBuYXJpa2F0YWNoaVwgOwor5bqK5p+xID4gdG9rb2Jhc2hpcmFcIDsKK+WHuuayoSA+IHNodXRzdWJvdHN1XCA7Civlt6bnq68gPiBoaWRhcmloYXNoaVwgOwor5be055OmID4gdG9tb2VnYXdhcmFcIDsKK+WIh+aXpSA+IHNoaW1la2lyaWJpXCA7Civlubzlv4MgPiBvc2FuYWdva29yb1wgOwor6Iqx5621ID4gaGFuYW11c2hpcm9cIDsKK+eUt+mwpSA+IG90b2tveWFtb21lXCA7CivoirHnpa0gPiBoYW5hbWF0c3VyaVwgOwor5Yid5ae/ID4gaGF0c3VzdWdhdGFcIDsKK+mrmOipsSA+IHRha2FiYW5hc2hpXCA7Civohp3poK0gPiBoaXphZ2FzaGlyYVwgOwor5be75p+xID4gbWFraWJhc2hpcmFcIDsKK+W6leWKmyA+IHNva29kamlrYXJhXCA7CivnlbPooaggPiB0YXRhbWlvbW90ZVwgOwor5Ye65YqbID4gc2h1dHN1cnlva3VcIDsKK+ahnOmkhSA+IHNha3VyYW1vY2hpXCA7CivmoZzpo68gPiBzYWt1cmFtZXNoaVwgOwor55u05Ye6ID4gY2hva3VzaHV0c3VcIDsKK+eVs+iBtyA+IHRhdGFtaXNob2t1XCA7CivojYnlhqAgPiBrdXNha2FubXVyaVwgOwor55Oi6JmrID4gdGVudG91bXVzaGlcIDsKK+W3puS4iyA+IGhpZGFyaXNoaXRhXCA7Civnmb7lh7ogPiBoeWFrdXNodXRzdVwgOwor6Iul5L6NID4gd2FrYXphbXVyYWlcIDsKK+WAmeeUsSA+IHNvdXJvdXlvc2hpXCA7CivkvL3oqbEgPiB0b2dpYmFuYXNoaVwgOwor5p2+6aO+ID4gbWF0c3VrYXphcmlcIDsKK+adsemiqCA+IGhpZ2FzaGlrYXplXCA7CivotaTntKsgPiBha2FtdXJhc2FraVwgOwor5p+z6IWwID4geWFuYWdpZ29zaGlcIDsKK+eUt+W/gyA+IG90b2tvZ29rb3JvXCA7CivkurrombEgPiBoaXRvc2hpcmFtaVwgOwor542j6YGTID4ga2Vtb25vbWljaGlcIDsKK+S4gOmbqyA+IGhpdG9zaGl6dWt1XCA7Civnvorpm7IgPiBoaXRzdWppZ3Vtb1wgOwor54y/6L2hID4gc2FydWd1dHN1d2FcIDsKK+iEiOaJgCA+IG15YWt1ZG9rb3JvXCA7CivkvYbmm7ggPiB0YWRhc2hpZ2FraVwgOwor6IWw5YiAID4ga29zaGlnYXRhbmFcIDsKK+iyoueJqSA+IG1pdHN1Z2ltb25vXCA7CivlrqLlrqQgPiBreWFrdXNoaXRzdVwgOwor5Lq65p+xID4gaGl0b2Jhc2hpcmFcIDsKK+aXl+mgrSA+IGhhdGFnYXNoaXJhXCA7CivlrZDlubQgPiBuZXp1bWlkb3NoaVwgOwor5peL6aKoID4gdHN1bXVqaWthemVcIDsKK+izquWunyA+IHNoaXRzdWppdHN1XCA7CivkuLzniakgPiBkb25idXJpbW9ub1wgOwor5p2W5p+xID4gdHN1ZWhhc2hpcmFcIDsKK+S4i+eevCA+IHNoaXRhbWFidXRhXCA7CivmnYnmnpcgPiBzdWdpYmF5YXNoaVwgOwor5pmS6ICFID4gc2FyYXNoaW1vbm9cIDsKK+S4gOa7tCA+IGhpdG9zaGl6dWt1XCA7CivkuK3mn7EgPiBuYWthYmFzaGlyYVwgOwor54u454i6ID4gdGFudWtpamlqaWlcIDsKK+WroeWupCA+IGNoYWt1c2hpdHN1XCA7Civni5DnjL8gPiBraXRzdW5lemFydVwgOwor5p2x5YyXID4gaGlnYXNoaWtpdGFcIDsKK+S4g+aciCA+IHNoaWNoaWdhdHN1XCA7CivkuIDmmJQgPiBoaXRvbXVrYXNoaVwgOwor5p2x5YG0ID4gaGlnYXNoaWdhd2FcIDsKK+S4gOaSriA+IGhpdG90c3VtYW1pXCA7Civpo77ku5ggPiBrYXphcml0c3VrZVwgOwor5auh5Ye6ID4gY2hha3VzaHV0c3VcIDsKK+S4i+W/gyA+IHNoaXRhZ29rb3JvXCA7CivlpI/ooaMgPiBuYXRzdWdvcm9tb1wgOwor5LiN5ZecID4gYnV0YXNoaW5hbWlcIDsKK+mbgOicgiA+IHN1enVtZWJhY2hpXCA7CivntYTpoK0gPiBrdW1pZ2FzaGlyYVwgOwor57eR6JmrID4gbWlkb3JpbXVzaGlcIDsKK+mbquekqyA+IHl1a2l0c3VidXRlXCA7Civml5fmqJkgPiBoYXRhamlydXNoaVwgOwor5aSi54++ID4geXVtZXV0c3V0c3VcIDsKK+mbm+elrSA+IGhpbmFtYXRzdXJpXCA7CivlpbPml7EgPiBvbicnbmFoaWRlcmlcIDsKK+Wls+W/gyA+IG9uJyduYWdva29yb1wgOwor5o+h6a6oID4gbmlnaXJpenVzaGlcIDsKK+mdmeW/gyA+IHNoaXp1Z29rb3JvXCA7CivpmqPnlLogPiB0b25hcmltYWNoaVwgOwor5aSn5pmmID4gb290c3Vnb21vcmlcIDsKK+aPoemjryA+IG5pZ2lyaW1lc2hpXCA7CivntKvoibIgPiBtdXJhc2FraWlyb1wgOwor5peX5Y2wID4gaGF0YWppcnVzaGlcIDsKK+mbquW6hyA+IHl1a2liaXNhc2hpXCA7CivplbfoqbEgPiBuYWdhYmFuYXNoaVwgOwor57SZ56SrID4ga2FtaXRzdWJ1dGVcIDsKK+ijuOiZqyA+IGhhZGFrYW11c2hpXCA7CivoqbHkuK0gPiBoYW5hc2hpY2h1dVwgOwor5aG15Z+DID4gY2hpcmlob2tvcmlcIDsKK+mPoemkhSA+IGthZ2FtaW1vY2hpXCA7Civng4/lj6MgPiBrYXJhc3VndWNoaVwgOwor56uv6YeRID4gaGFzaGl0YWdhbmVcIDsKK+aOp+WupCA+IGhpa2Flc2hpdHN1XCA7CivnsbPljbAgPiBrb21lamlydXNoaVwgOwor5ZSQ6YymID4ga2FyYW5pc2hpa2lcIDsKK+iduOeJmyA+IGRlbmRlbm11c2hpXCA7Civpu5LptqsgPiBrdXJvdHN1Z3VtaVwgOwor6Yym6JuHID4gbmlzaGlraWhlYmlcIDsKK+WbveS+jSA+IGt1bml6YW11cmFpXCA7CivmuK/nlLogPiBtaW5hdG9tYWNoaVwgOwor6Jmr6JasID4gbXVzaGlndXN1cmlcIDsKK+WUkOe0hSA+IGthcmFrdXJlbmFpXCA7Civno6/pta8gPiBpc29oaXlvZG9yaVwgOwor5ZG957axID4gaW5vY2hpZHp1bmFcIDsKK+mHkei9oSA+IGthbmFndXRzdXdhXCA7Civlj6Pou4ogPiBrdWNoaWd1cnVtYVwgOwor5Y+W6Kq/ID4gdG9yaXNoaXJhYmVcIDsKK+m8u+afsSA+IGhhbmFiYXNoaXJhXCA7Civnqq/ljbAgPiBrYW1hamlydXNoaVwgOwor6JSm6Ji/ID4gdHN1dGFrYXp1cmFcIDsKK+WPlue3oCA+IHRvcmlzaGltYXJpXCA7CivolKbolJMgPiB0c3V0YWthenVyYVwgOwor5rC36KKLID4ga29vcmlidWt1cm9cIDsKK+WNl+ilvyA+IG1pbmFtaW5pc2hpXCA7CivljIXph5EgPiB0c3V0c3VtaWtpblwgOwor5Y+k54uQID4gZnVydWdpdHN1bmVcIDsKK+WKm+mdqSA+IGNoaWthcmFnYXdhXCA7Civnp4HlhIAgPiB3YXRha3VzaGlnaVwgOwor5Yqb6LazID4gY2hpa2FyYWFzaGlcIDsKK+engeS+myA+IHdhdGFzaGlkb21vXCA7CivlipvosqAgPiBjaGlrYXJhbWFrZVwgOwor5rC05r6EID4gbWl6dXN1bWFzaGlcIDsKK+WPluaJsSA+IHRvcmlhdHN1a2FpXCA7CivpiYTlhZwgPiB0ZXRzdWthYnV0b1wgOwor5rC35p6VID4ga29vcmltYWt1cmFcIDsKK+awtOafsSA+IG1penViYXNoaXJhXCA7CivliIfpgJogPiBraXJpZG9vc2hpXCA7Civpr7Dpq60gPiBuYW1henVoaWdlXCA7Civlj6Plj6MgPiBrdWNoaWd1Y2hpXCA7CivliJ3oqaMgPiBoYXRzdW1vdWRlXCA7Civnn7PnlbMgPiBpc2hpZGF0YW1pXCA7CivpgIboqqwgPiBneWFrdXNldHN1XCA7CivojLjpm7IgPiBraW5va29ndW1vXCA7Civov5HpgZMgPiBjaGlrYW1pY2hpXCA7Civov5Hov5EgPiBjaGlrYWRqaWthXCA7CivmsLTlv4MgPiBtaXp1Z29rb3JvXCA7CivnoILnhZkgPiBzdW5ha2VtdXJpXCA7Civlt53prZogPiBrYXdhemFrYW5hXCA7Civlja/lubQgPiB1c2FnaWRvc2hpXCA7Civov5Hot68gPiBjaGlrYW1pY2hpXCA7CivovrvovrsgPiB0c3VqaXRzdWppXCA7CivljJfmnpUgPiBraXRhbWFrdXJhXCA7Civnorrln7cgPiBrYWt1c2hpdHN1XCA7CivmsLflrqQgPiBoeW91c2hpdHN1XCA7CivmsbrliKUgPiBrZXRzdWJldHN1XCA7CivlvozmioAgPiB1c2hpcm93YXphXCA7CivljY3lt7QgPiBtYW5qaWRvbW9lXCA7Civlv4PlrqQgPiBzaGluc2hpdHN1XCA7CivnnYDoibIgPiBjaGFrdXNob2t1XCA7Civlhobpj6EgPiBtYXJ1a2FnYW1pXCA7CivpgaPnm7QgPiB5YXJpbmFvc2hpXCA7CivnnYDohLEgPiBjaGFrdWRhdHN1XCA7CivlvZfmmJ8gPiBob3VraWJvc2hpXCA7CivlhobpiYsgPiBtYXJ1Z2FuJyduYVwgOwor5b6M5b6MID4gbm9jaGlub2NoaVwgOwor5Y245ZWGID4gb3Jvc2hpc2hvdVwgOwor6L676KSEID4gdHN1aml0c3VtYVwgOwor6Iqx6bC5ID4gaGFuYWdhdHN1b1wgOwor6ba05Zi0ID4gdHN1cnVoYXNoaVwgOwor5YWI6ZqjID4gc2FraWRvbmFyaVwgOwor5bem6LazID4gaGlkYXJpYXNoaVwgOwor5b6X5aSxID4gdG9rdXNoaXRzdVwgOwor5ZKE44CFID4gdG90c3V0b3RzdVwgOwor6YWS5YemID4gc2FrZWRva29yb1wgOwor5q2z5pyIID4gdG9zaGl0c3VraVwgOwor5qiq6LuKID4geW9rb2d1cnVtYVwgOwor5Y2T5Ye6ID4gdGFrdXNodXRzdVwgOwor5byP5pelID4gc2hpa2lqaXRzdVwgOwor5YWl6LOqID4gbnl1dXNoaWNoaVwgOwor552A552AID4gY2hha3VjaGFrdVwgOwor5Y2X5YG0ID4gbWluYW1pZ2F3YVwgOwor55qu6KGjID4ga2F3YWdvcm9tb1wgOwor5Yy65Yy6ID4gbWFjaGltYWNoaVwgOwor552A55m6ID4gY2hha3VoYXRzdVwgOwor6Iqx6YuPID4gaGFuYWJhc2FtaVwgOwor5bqt5ryGID4gbml3YXVydXNoaVwgOwor56CC5bWQID4gc3VuYWFyYXNoaVwgOwor5bm055S3ID4gdG9zaGlvdG9rb1wgOwor5qyh5qyhID4gdHN1Z2l0c3VnaVwgOwor5YiA55a1ID4ga2F0YW5ha2l6dVwgOwor6YGV5qOaID4gY2hpZ2FpZGFuYVwgOwor55u0562GID4gY2hva3VoaXRzdVwgOwor5byQ5b+DID4gZnV0YWdva29yb1wgOwor55u056uLID4gY2hva3VyaXRzdVwgOwor5YWc6J+5ID4ga2FidXRvZ2FuaVwgOwor55uy56qTID4gbWVrdXJhbWFkb1wgOwor5Ye6542EID4gc2h1dHN1Z29rdVwgOwor5Ye654yfID4gc2h1dHN1cnlvdVwgOwor56CC5Z+DID4gc3VuYWJva29yaVwgOwor5bem6ICzID4gaGlkYXJpbWltaVwgOwor5Yqb5bivID4gY2hpa2FyYW9iaVwgOwor56CC5ZqiID4gc3VuYWJ1a3Vyb1wgOwor5YWJ6JiaID4gaGlrYXJpZ29rZVwgOwor6Iqx6KmeID4gaGFuYWtvdG9iYVwgOwor5Yid5rC3ID4gaGF0c3Vnb29yaVwgOwor6Ium6Im+ID4gbmlnYXlvbW9naVwgOwor5Ye65ryBID4gc2h1dHN1cnlvdVwgOwor55q/56ekID4gc2FyYWJha2FyaVwgOwor5q665LyQID4gc2F0c3ViYXRzdVwgOwor5rK444CFID4gZnV0c3VmdXRzdVwgOwor5YWO6ISjID4gbWl0c3VrdWNoaVwgOwor5bqn5oqAID4gc3V3YXJpd2F6YVwgOwor5Y+j44CFID4ga3VjaGlndWNoaVwgOwor6Imv6LOqID4gcnlvdXNoaXRzdVwgOwor5qeN6KG+ID4geWFyaWJ1c3VtYVwgOwor6YCQ5pelID4gY2hpa3VqaXRzdVwgOwor6Iul57eRID4gd2FrYW1pZG9yaVwgOwor6LuK6LODID4ga3VydW1hY2hpblwgOwor6YCG5o6lID4gZ3lha3VzZXRzdVwgOwor55WR6bygID4gaGF0YW5lenVtaVwgOwor552A5omVID4gY2hha3ViYXJhaVwgOwor5Ye65pKDID4gc2h1dHN1Z2VraVwgOwor5bOg6YGTID4gdG91Z2VtaWNoaVwgOwor5bm05by3ID4gdG9zaGlkenV5b1wgOwor6Im26Im2ID4gdHN1eWF0c3V5YVwgOwor55Sw6bWRID4gaG90b3RvZ2lzdVwgOwor5bGx6a+oID4geWFtYWt1amlyYVwgOwor6I2J5p6VID4ga3VzYW1ha3VyYVwgOwor552A5a6fID4gY2hha3VqaXRzdVwgOwor5YK36JasID4ga2l6dWd1c3VyaVwgOwor6Iy25p+xID4gY2hhYmFzaGlyYVwgOwor5bia5pifID4gaG91a2lib3NoaVwgOwor55u05o6lID4gY2hva3VzZXRzdVwgOwor5bqV5ZyfID4gc29rb3RzdWNoaVwgOwor55Wz6YedID4gdGF0YW1paGFyaVwgOwor55m654axID4gaGF0c3VuZXRzdVwgOwor5YiH5a6fID4gc2V0c3VqaXRzdVwgOwor5bGx6aKqID4geWFtYW9yb3NoaVwgOwor5YWJ54mpID4gaGlrYXJpbW9ub1wgOwor5YmU5Ye6ID4gdGVraXNodXRzdVwgOwor55Sf6a2aID4gbmFtYXpha2FuYVwgOwor55u05oiqID4gY2hva3VzZXRzdVwgOwor5YGP6L66ID4ga2F0YWhvcm9yaVwgOwor6Iqx55WRID4gaGFuYWJhdGFrZVwgOwor5YCZ6ZaTID4gc291cm91YWlkYVwgOwor6YCy5Ye6ID4gc2hpbnNodXRzdVwgOwor5bqX5Y24ID4gdGFuYW9yb3NoaVwgOwor55Wl6L+wID4gcnlha3VqdXRzdVwgOwor5bi45bi4ID4gdHN1bmVkenVuZVwgOwor55a16JasID4ga2l6dWd1c3VyaVwgOwor5Yil5Y+jID4gYmV0c3VrdWNoaVwgOwor5YWr5qmLID4geWF0c3VoYXNoaVwgOwor6L6w5bm0ID4gdGF0c3Vkb3NoaVwgOwor5Yil5YilID4gYmV0c3ViZXRzdVwgOwor5bC76aSgID4gc2hpcmltb2NoaVwgOwor5Ye65Zu9ID4gc2h1dHN1Z29rdVwgOwor5bC76aSFID4gc2hpcmltb2NoaVwgOwor5Yy644CFID4gbWFjaGltYWNoaVwgOwor55m95qi6ID4gc2hpcmFrYW5iYVwgOwor5YWr5pyIID4gaGFjaGlnYXRzdVwgOwor6LiP6LuKID4gZnVtaWd1cnVtYVwgOwor5b6M44CFID4gbm9jaGlub2NoaVwgOwor55Wl6KqsID4gcnlha3VzZXRzdVwgOwor55Sz6L68ID4gbW91c2hpa29taVwgOwor5YiH5YiHID4gc2V0c3VzZXRzdVwgOwor55uy5aOBID4gbWVrdXJha2FiZVwgOwor6a+o5bmVID4ga3VqaXJhbWFrdVwgOwor55m95pifID4gc2hpcm9ib3NoaVwgOwor55m+5pelID4gaHlha3VuaWNoaVwgOwor6Iac6LOqID4gbWFrdXNoaXRzdVwgOwor5Ye65YWlID4gc2h1dHN1bnl1dVwgOwor5bm05LiLID4gdG9zaGlzaGl0YVwgOwor5L+C6ZW3ID4ga2FrYXJpY2hvdVwgOwor5YCZ6Kq/ID4gc291cm91Y2hvdVwgOwor6a+o5bC6ID4ga3VqaXJhamFrdVwgOwor55ub5ZyfID4gbW9yaXRzdWNoaVwgOwor6Iqx5pqmID4gaGFuYWdveW9taVwgOwor55u05YiXID4gY2hva3VyZXRzdVwgOwor55Sy6J+5ID4ga2FidXRvZ2FuaVwgOwor5Ya95Ya9ID4gcmV0c3VyZXRzdVwgOwor5YWl5a6kID4gbnl1dXNoaXRzdVwgOwor5bGx6I2SID4geWFtYWFyYXNoaVwgOwor5YKR54mpID4ga2V0c3VidXRzdVwgOwor55Wl562GID4gcnlha3VoaXRzdVwgOwor5bem5YipID4gaGlkYXJpa2lraVwgOwor5Ly46aSFID4gbm9zaGltb2NoaVwgOwor5YaF5YaRID4gdWNoaWthYnV0b1wgOwor5YaF5YWcID4gdWNoaWthYnV0b1wgOwor5bem5YG0ID4gaGlkYXJpZ2F3YVwgOwor5YWl5Y+jID4gaGFpcmlndWNoaVwgOwor5a6k6ZW3ID4gc2hpdHN1Y2hvdVwgOwor5YSq5ae/ID4geWFzYXN1Z2F0YVwgOwor5YWO5Y+jID4gbWl0c3VrdWNoaVwgOwor55Sz56uLID4gbW91c2hpdGF0ZVwgOwor5qC46LOqID4ga2FrdXNoaXRzdVwgOwor5qSN54mpID4gc2hva3VidXRzdVwgOwor5bKp54eVID4gaXdhdHN1YmFtZVwgOwor5qyh44CFID4gdHN1Z2l0c3VnaVwgOwor5YSy5Y+jID4gbW91a2VndWNoaVwgOwor5qOf55OmID4gbXVuYWdhd2FyYVwgOwor6auY5p6VID4gdGFrYW1ha3VyYVwgOwor6IS56ISbID4gZnVrdXJhaGFnaVwgOwor6auY5puHID4gdGFrYWd1bW9yaVwgOwor5qGc6IqxID4gc2FrdXJhYmFuYVwgOwor5qGR6Iu6ID4ga3V3YWljaGlnb1wgOwor6ISa6ImyID4ga3lha3VzaG9rdVwgOwor5qGc6IKJID4gc2FrdXJhbmlrdVwgOwor6IKp6LuKID4ga2F0YWd1cnVtYVwgOwor5Yil44CFID4gYmV0c3ViZXRzdVwgOwor6LOq6YePID4gc2hpdHN1cnlvdVwgOwor55Wc5q66ID4gY2hpa3VzYXRzdVwgOwor5p2c6bWRID4gaG90b3RvZ2lzdVwgOwor6ISI6ISIID4gbXlha3VteWFrdVwgOwor552A44CFID4gY2hha3VjaGFrdVwgOwor5qWU5b2iID4ga3VzYWJpZ2F0YVwgOwor5qGc57SZID4gc2FrdXJhZ2FtaVwgOwor5YiH44CFID4gc2V0c3VzZXRzdVwgOwor55eF5a6kID4gYnlvdXNoaXRzdVwgOwor6IqL5L6NID4gaW1vemFtdXJhaVwgOwor6IKJ6LOqID4gbmlrdXNoaXRzdVwgOwor6L+R44CFID4gY2hpa2FkamlrYVwgOwor5a6d6Ii5ID4gdGFrYXJhYnVuZVwgOwor5bGx5qGcID4geWFtYXpha3VyYVwgOwor5YG05a6kID4gc29rdXNoaXRzdVwgOwor6Iad5p6VID4gaGl6YW1ha3VyYVwgOwor5Lmz6aaWID4gY2hpY2hpa3ViaVwgOwor5bi444CFID4gdHN1bmVkenVuZVwgOwor5a2Q6KaPID4gaG90b3RvZ2lzdVwgOwor5qW15YqbID4ga3lva3VyeW9rdVwgOwor6L6744CFID4gdHN1aml0c3VqaVwgOwor5qGR55WRID4ga3V3YWJhdGFrZVwgOwor55Wl5byPID4gcnlha3VzaGlraVwgOwor5Ya944CFID4gcmV0c3VyZXRzdVwgOwor5p6V6KixID4gbWFrdXJhbW90b1wgOwor5a6d57GkID4gdGFrYXJha3VqaVwgOwor5a6d566xID4gdGFrYXJhYmFrb1wgOwor6LOq6I2JID4gc2hpY2hpZ3VzYVwgOwor6aqo5aO3ID4ga290c3V0c3Vib1wgOwor5a6/55u0ID4gc2h1a3VjaG9rdVwgOwor5YKZ5LuYID4gc29uYWV0c3VrZVwgOwor55Wl5aWqID4gcnlha3VkYXRzdVwgOwor5bGx5bWQID4geWFtYWFyYXNoaVwgOwor5p2+6JmrID4gbWF0c3VtdXNoaVwgOwor5Lmz6LOqID4gbnl1dXNoaXRzdVwgOwor5Lih6ZqjID4gcnlvdWRvbmFyaVwgOwor5bGh5bGhID4gc2hpYmFzaGliYVwgOwor576k6ZuAID4gbXVyYXN1enVtZVwgOwor5pyo6LOqID4gbW9rdXNoaXRzdVwgOwor5a6f54mpID4gaml0c3VidXRzdVwgOwor6LOq56iuID4gc2hpY2hpZ3VzYVwgOwor5LiL6ZyyID4gc2hpdGF0c3V5dVwgOwor55Wc5YqbID4gY2hpa3VyeW9rdVwgOwor5a+S5qS/ID4ga2FudHN1YmFraVwgOwor6LOq55qEID4gc2hpdHN1dGVraVwgOwor5qOa5Y24ID4gdGFuYW9yb3NoaVwgOwor5qKU5a2QID4ga3VjaGluYXNoaVwgOwor6amA5ZywID4gbWFzc2hpZ3VyYVwgOwor5bGx5YiAID4geWFtYWdhdGFuYVwgOwor5LiL6YGTID4gc2hpdGFtaWNoaVwgOwor5LiN6Lq+ID4gYnVzaGl0c3VrZVwgOwor55Sf5Y21ID4gbmFtYXRhbWFnb1wgOwor6aKo6JasID4ga2F6ZWd1c3VyaVwgOwor5puy6KqsID4ga3lva3VzZXRzdVwgOwor5Li46KO4ID4gbWFydWhhZGFrYVwgOwor6aOv57KSID4gbWVzaGl0c3VidVwgOwor54yr6LuKID4gbmVrb2d1cnVtYVwgOwor5LiJ6LaKID4gbWl0c3Vrb3NoaVwgOwor5a6i5pyIID4ga3lha3VnZXRzdVwgOwor5pmC6bOlID4gaG90b3RvZ2lzdVwgOwor6aGU6LKMID4ga2Fva2F0YWNoaVwgOwor5a6k5paZID4gc2hpdHN1cnlvdVwgOwor5bC65YWrID4gc2hha3VoYWNoaVwgOwor6Im244CFID4gdHN1eWF0c3V5YVwgOwor5p2x55S3ID4gYXp1bWFvdG9rb1wgOwor5a+d5a6kID4gc2hpbnNoaXRzdVwgOwor6LOq5qi4ID4gc2hpdHN1Ym9rdVwgOwor6IKY5p6VID4gaGlqaW1ha3VyYVwgOwor5LuP5ruFID4gYnV0c3VtZXRzdVwgOwor5bCP5YyFID4ga29kenV0c3VtaVwgOwor5a+G5a+GID4gbWl0c3VtaXRzdVwgOwor5bCx5LitID4gbmFrYW5kenVrdVwgOwor5LiK6JOGID4gdXdhbXVzaGlyb1wgOwor6LOq5py0ID4gc2hpdHN1Ym9rdVwgOwor6ISx5YqbID4gZGF0c3VyeW9rdVwgOwor6LOq5pytID4gc2hpY2hpZnVkYVwgOwor5LiJ6I+xID4gbWl0c3ViaXNoaVwgOwor5Luu5p6VID4ga2FyaW1ha3VyYVwgOwor5L6b5Ye6ID4ga3lvdXNodXRzdVwgOwor5a6u5a6kID4ga3l1dXNoaXRzdVwgOwor5pil6ZyeID4gaGFydWdhc3VtaVwgOwor6aOf54mpID4gc2hva3Vtb3RzdVwgOwor5piU6aKoID4gbXVrYXNoaWZ1dVwgOwor5a6d5bO2ID4gdGFrYXJhamltYVwgOwor5LuP5qeYID4gaG90b2tlc2FtYVwgOwor6ISa5YqbID4ga3lha3VyeW9rdVwgOwor5LiL6IG3ID4gc2hpdGFzaG9rdVwgOwor5puy56+AID4ga3lva3VzZXRzdVwgOwor5puy562GID4ga3lva3VoaXRzdVwgOwor5LiA57qPID4gaGl0b21hdG9tZVwgOwor6aOv5quDID4gbWVzaGliaXRzdVwgOwor6LKd5p+xID4ga2FpYmFzaGlyYVwgOwor5LiK5621ID4gdXdhbXVzaGlyb1wgOwor5puy55u0ID4ga3lva3VjaG9rdVwgOwor5Li455OmID4gbWFydWdhd2FyYVwgOwor5LiD56uIID4gbmFuYWthbWFkb1wgOwor5LiA56m0ID4gaGl0b3RzdWFuYVwgOwor5a2r5aiYID4gbWFnb211c3VtZVwgOwor5LuP5oCnID4gaG90b2tlc2hvdVwgOwor6Z2Z6Z2ZID4gc2hpenVzaGl6dVwgOwor5a6f5YqbID4gaml0c3VyeW9rdVwgOwor5puy546HID4ga3lva3VyaXRzdVwgOwor5aSn6byTID4gb290c3VkenVtaVwgOwor54uQ6ImyID4ga2l0c3VuZWlyb1wgOwor54m56LOqID4gdG9rdXNoaXRzdVwgOwor5LiA552hID4gaGl0b25lbXVyaVwgOwor5LiL55S6ID4gc2hpdGFtYWNoaVwgOwor5Lq65b+DID4gaGl0b2dva29yb1wgOwor5LiD55SfID4gc2hpY2hpc2hvdVwgOwor54eV6bqmID4ga2FyYXN1bXVnaVwgOwor5LiA55WqID4gaGl0b3RzdWdhaVwgOwor54mp6KqeID4gbW9ub2dhdGFyaVwgOwor5aWz6YGUID4gb24nJ25hdGFjaGlcIDsKK+acp+aciCA+IG9ib3JvZHp1a2lcIDsKK+eJh+i3myA+IGthdGFjaGluYmFcIDsKK+acq+aXpSA+IG1hdHN1aml0c3VcIDsKK+acm+aciCA+IG1vY2hpZHp1a2lcIDsKK+S6jOW/gyA+IGZ1dGFnb2tvcm9cIDsKK+mdqeizqiA+IGtha3VzaGl0c3VcIDsKK+Wkp+mavCA+IG9vaGF5YWJ1c2FcIDsKK+aciOaciCA+IHRzdWtpZHp1a2lcIDsKK+S4gOa4oSA+IGhpdG93YXRhcmlcIDsKK+WxoeOAhSA+IHNoaWJhc2hpYmFcIDsKK+adnOWuhyA+IGhvdG90b2dpc3VcIDsKK+WmvuiFuSA+IG1la2FrZWJhcmFcIDsKK+mbsumcniA+IGt1bW9rYXN1bWlcIDsKK+mdqeiiiyA+IGthd2FidWt1cm9cIDsKK+aekOWHuiA+IHNla2lzaHV0c3VcIDsKK+aeleWFgyA+IG1ha3VyYW1vdG9cIDsKK+S4jeadnyA+IGZ1dHN1dHN1a2FcIDsKK+eMq+afsyA+IG5la295YW5hZ2lcIDsKK+absuaKmCA+IGt5b2t1c2V0c3VcIDsKK+iyuOS7mCA+IGthc2hpdHN1a2VcIDsKK+eLuOaxgSA+IHRhbnVraWppcnVcIDsKK+S4jeaKsSA+IGtha2F3YXJhenVcIDsKK+S4gOaJgCA+IGhpdG90b2tvcm9cIDsKK+absuWwuiA+IGt5b2t1c2hha3VcIDsKK+mbquizqiA+IHl1a2lzaGl0c3VcIDsKK+mhlOW9oiA+IGthb2thdGFjaGlcIDsKK+eKh+eKhyA+IGhpc2hpaGlzaGlcIDsKK+mbm+ixhiA+IGhpeW9rb21hbWVcIDsKK+e2sumgrSA+IGFtaWdhc2hpcmFcIDsKK+WhqemtmiA+IHNoaW96YWthbmFcIDsKK+S4reWftyA+IGNodXVzaGl0c3VcIDsKK+Wkj+iZqyA+IG5hdHN1bXVzaGlcIDsKK+e2vumMpiA+IGF5YW5pc2hpa2lcIDsKK+aciOWIpSA+IHRzdWtpYmV0c3VcIDsKK+WlqueVpSA+IGRhdHN1cnlha3VcIDsKK+e5gee5gSA+IHNoaWdlc2hpZ2VcIDsKK+eDj+m6piA+IGthcmFzdW11Z2lcIDsKK+S4gOWRqCA+IGhpdG9tZWd1cmlcIDsKK+eDj+mzqSA+IGthcmFzdWJhdG9cIDsKK+iopeiopSA+IHRvdHN1dG90c3VcIDsKK+aXheeDjyA+IHRhYmlnYXJhc3VcIDsKK+S4g+WFiSA+IG5hbmFoaWthcmlcIDsKK+WomOWpvyA+IG11c3VtZW11a29cIDsKK+aXpeayoSA+IG5pY2hpYm90c3VcIDsKK+e0sOmbqiA+IHNhc2FtZXl1a2lcIDsKK+mgreWIhiA+IGthc2hpcmFidW5cIDsKK+aWkeeJmyA+IG1hZGFyYXVzaGlcIDsKK+e3keiJsiA+IHJ5b2t1c2hva3VcIDsKK+aXpeaciCA+IG5pY2hpZ2V0c3VcIDsKK+aXreaXpSA+IGt5b2t1aml0c3VcIDsKK+inkuizqiA+IGtha3VzaGl0c3VcIDsKK+mao+e1hCA+IHRvbmFyaWd1bWlcIDsKK+eDj+mHkSA+IGthcmFzdWdhbmVcIDsKK+mavOenkSA+IGhheWFidXNha2FcIDsKK+eJqeW/gyA+IG1vbm9nb2tvcm9cIDsKK+aXheaelSA+IHRhYmltYWt1cmFcIDsKK+e0hembgCA+IGJlbmlzdXp1bWVcIDsKK+eItuaWuSA+IGNoaWNoaWthdGFcIDsKK+WhteiKpSA+IGNoaXJpYWt1dGFcIDsKK+mbqOeHlSA+IGFtYXRzdWJhbWVcIDsKK+WmueWpvyA+IGltb3V0b211a29cIDsKK+mbqueFmSA+IHl1a2lrZW11cmlcIDsKK+WlquaOoCA+IGRhdHN1cnlha3VcIDsKK+inkuibmSA+IHRzdW5vZ2FlcnVcIDsKK+WksealrSA+IHNoaXRzdWd5b3VcIDsKK+ioreeriyA+IHNldHN1cml0c3VcIDsKK+mbkeeJqSA+IHphdHN1YnV0c3VcIDsKK+eGseeDiCA+IG5ldHN1cmV0c3VcIDsKK+maj+elniA+IGthbicnbmFnYXJhXCA7Civoo7jpuqYgPiBoYWRha2FtdWdpXCA7CivpnJzmnIggPiBzaGltb3RzdWtpXCA7CivlpKLmnpUgPiB5dW1lbWFrdXJhXCA7Civml4Xlv4MgPiB0YWJpZ29rb3JvXCA7Civniqzkvo0gPiBpbnV6YW11cmFpXCA7CivorZjliKUgPiBzaGlraWJldHN1XCA7Civlpr7lh7ogPiBzaG91c2h1dHN1XCA7Civnt5HnjokgPiByeW9rdWd5b2t1XCA7Civng4/om4cgPiBrYXJhc3VoZWJpXCA7Civnibnlh7ogPiB0b2t1c2h1dHN1XCA7CivntJnooosgPiBrYW1pYnVrdXJvXCA7Civpm6rmn7MgPiB5dWtpeWFuYWdpXCA7CivmmKXkvJEgPiBoYXJ1eWFzdW1pXCA7CivmnIjjgIUgPiB0c3VraWR6dWtpXCA7Civop6bnmbogPiBzaG9rdWhhdHN1XCA7CivntpnniLYgPiBtYW1hY2hpY2hpXCA7Civng4/ntJkgPiBrYXJhc3VnYW1pXCA7Civml6Xku48gPiBuaWNoaWZ1dHN1XCA7CivmjpvplbcgPiBrYWthcmljaG91XCA7CivpnbTkuIsgPiBrdXRzdXNoaXRhXCA7CivnuK7lsLogPiBzaHVrdXNoYWt1XCA7CivlpbPkuLsgPiBvbicnbmFhcnVqaVwgOwor5pW15aSxID4gdGVraXNoaXRzdVwgOwor5pWZ5a6kID4ga3lvdXNoaXRzdVwgOwor57W25ruFID4gemV0c3VtZXRzdVwgOwor6KaB55+zID4ga2FuYW1laXNoaVwgOwor6KOP6KmxID4gdXJhYmFuYXNoaVwgOwor57KJ6JasID4ga29uYWd1c3VyaVwgOwor57iu5Yi3ID4gc2h1a3VzYXRzdVwgOwor5Zyf6LGaID4gdHN1Y2hpYnV0YVwgOwor54OI54OIID4gcmV0c3VyZXRzdVwgOwor5pWR5Ye6ID4ga3l1dXNodXRzdVwgOwor5aOB5ZyfID4ga2FiZXRzdWNoaVwgOwor57WQ5pyrID4ga2V0c3VtYXRzdVwgOwor6Kaq5p+xID4gb3lhYmFzaGlyYVwgOwor57Kb57KbID4gc2h1a3VzaHVrdVwgOwor5Zu96KibID4ga3VuaW5hbWFyaVwgOwor57a/5Z+DID4gd2F0YWJva29yaVwgOwor6Kaq5pelID4gc2hpbicnbmljaGlcIDsKK+eBvOeGsSA+IHNoYWt1bmV0c3VcIDsKK+mbh+S4uyA+IHlhdG9pbnVzaGlcIDsKK+e2meWomCA+IG1hbWFtdXN1bWVcIDsKK+eEvOWksSA+IHNob3VzaGl0c3VcIDsKK+ios+WHuiA+IHlha3VzaHV0c3VcIDsKK+eDiOaXpSA+IHJldHN1aml0c3VcIDsKK+e3oOS7mCA+IHNoaW1ldHN1a2VcIDsKK+ioo+WIpSA+IGtldHN1YmV0c3VcIDsKK+etkumzpSA+IHRzdXRzdWRvcmlcIDsKK+iii+iAsyA+IGZ1a3Vyb21pbWlcIDsKK+e1kOWunyA+IGtldHN1aml0c3VcIDsKK+e2muWHuiA+IHpva3VzaHV0c3VcIDsKK+a/g+e0qyA+IGtvbXVyYXNha2lcIDsKK+a6nem8oCA+IGRvYnVuZXp1bWlcIDsKK+eym+auuiA+IHNodWt1c2F0c3VcIDsKK+ihgOiEiCA+IGtldHN1bXlha3VcIDsKK+mOjOm8rCA+IGthbWFpdGFjaGlcIDsKK+iii+eJqSA+IGZ1a3Vyb21vbm9cIDsKK+ilv+WPoyA+IG5pc2hpZ3VjaGlcIDsKK+aRmOWHuiA+IHRla2lzaHV0c3VcIDsKK+evgOevgCA+IGZ1c2hpYnVzaGlcIDsKK+etkuiiliA+IHRzdXRzdXNvZGVcIDsKK+ezuOWNsCA+IGl0b2ppcnVzaGlcIDsKK+eCuuS6uiA+IGhpdG90b25hcmlcIDsKK+eCreS/tSA+IHN1bWlkYXdhcmFcIDsKK+icgOmtgiA+IGhvdG90b2dpc3VcIDsKK+exs+aJgCA+IGtvbWVkb2tvcm9cIDsKK+err+i/kSA+IGhhc2hpZGppa2FcIDsKK+mOlumOjCA+IGt1c2FyaWdhbWFcIDsKK+a7heijgiA+IG1ldHN1cmV0c3VcIDsKK+a9rueFmSA+IHNoaW9rZW11cmlcIDsKK+ethuiIjCA+IGhpdHN1emV0c3VcIDsKK+mMpumviSA+IG5pc2hpa2lnb2lcIDsKK+a7keiEsSA+IGthdHN1ZGF0c3VcIDsKK+aOoOWlqiA+IHJ5YWt1ZGF0c3VcIDsKK+ethuetkiA+IGZ1ZGVkenV0c3VcIDsKK+aPj+WHuiA+IGJ5b3VzaHV0c3VcIDsKK+Wcn+WjgSA+IHRzdWNoaWthYmVcIDsKK+aJi+e2miA+IHRldHN1ZHp1a2lcIDsKK+ieouefsyA+IGhvdGFydWlzaGlcIDsKK+icnOicgiA+IG1pdHN1YmFjaGlcIDsKK+euseafsyA+IGhha295YW5hZ2lcIDsKK+euseaelSA+IGhha29tYWt1cmFcIDsKK+exs+S/tSA+IGtvbWVkYXdhcmFcIDsKK+icguicnCA+IGhhY2hpbWl0c3VcIDsKK+erueetkiA+IHRha2VkenV0c3VcIDsKK+err+erryA+IGhhc2hpYmFzaGlcIDsKK+eukuaYnyA+IGhvdWtpYm9zaGlcIDsKK+idtueVqiA+IGNob3V0c3VnYWlcIDsKK+aLoOaJgCA+IHlvcmlkb2tvcm9cIDsKK+m7kum8oCA+IGt1cm9uZXp1bWlcIDsKK+ihqOWPoyA+IG9tb3RlZ3VjaGlcIDsKK+eriOelniA+IGthbWFkb2dhbWlcIDsKK+m7kumuqiA+IGt1cm9tYWd1cm9cIDsKK+ewh+WHuiA+IHpva3VzaHV0c3VcIDsKK+ihqOWHuiA+IGh5b3VzaHV0c3VcIDsKK+WUkOihoyA+IGthcmFrb3JvbW9cIDsKK+ethuaXgSA+IGZ1ZGV6dWt1cmlcIDsKK+m9o+iQvSA+IGtvbWFvdG9zaGlcIDsKK+mMqOe2sSA+IGlrYXJpZHp1bmFcIDsKK+etkuW9oiA+IHRzdXRzdWdhdGFcIDsKK+a3see3kSA+IGZ1a2FtaWRvcmlcIDsKK+m8u+iWrCA+IGhhbmFndXN1cmlcIDsKK+aJgOafhCA+IHRva29yb2dhcmFcIDsKK+aMgeS4uyA+IG1vY2hpbnVzaGlcIDsKK+aLmeWKoyA+IHNldHN1cmV0c3VcIDsKK+ibjeefsyA+IGhvdGFydWlzaGlcIDsKK+a8guWksSA+IGh5b3VzaGl0c3VcIDsKK+mHnem8oCA+IGhhcmluZXp1bWlcIDsKK+a1geizqiA+IHJ5dXVzaGljaGlcIDsKK+aKveWHuiA+IGNodXVzaHV0c3VcIDsKK+icnOaciCA+IG1pdHN1Z2V0c3VcIDsKK+epuua2mSA+IHNvcmFuYW1pZGFcIDsKK+a4i+a4iyA+IHNoaWJ1c2hpYnVcIDsKK+a7suWHuiA+IHNoaW5zaHV0c3VcIDsKK+emj+iiiyA+IGZ1a3VidWt1cm9cIDsKK+etkuWFiCA+IHRzdXRzdXNha2lcIDsKK+ethuWKmyA+IGhpdHN1cnlva3VcIDsKK+aKhOWHuiA+IHNob3VzaHV0c3VcIDsKK+aIkeW/gyA+IHdhZ2Frb2tvcm9cIDsKK+m7kuiLuiA+IGt1cm9pY2hpZ29cIDsKK+enqeemhCA+IGNoaXRzdXJva3VcIDsKK+WPiOmaoyA+IG1hdGFkb25hcmlcIDsKK+mHkemLjyA+IGthbmFiYXNhbWlcIDsKK+aHkOaJiyA+IGZ1dG9rb3JvZGVcIDsKK+m7kue3kSA+IGt1cm9taWRvcmlcIDsKK+aFhOeDiCA+IHJpdHN1cmV0c3VcIDsKK+mLuOatryA+IG5va29naXJpYmFcIDsKK+a6jOWJjCA+IGhhdHN1cmF0c3VcIDsKK+aDn+elniA+IGthbicnbmFnYXJhXCA7Civmtbfnh5UgPiB1bWl0c3ViYW1lXCA7Civph5HooosgPiBrYW5hYnVrdXJvXCA7CivmsrnomasgPiBhYnVyYW11c2hpXCA7CivpioDni5AgPiBnaW5naXRzdW5lXCA7CivljZfpoqggPiBtaW5hbWlrYXplXCA7CivomZDmrrogPiBneWFrdXNhdHN1XCA7CivmsLTpj6EgPiBtaXp1a2FnYW1pXCA7CivmtLvniakgPiBrYXRzdWJ1dHN1XCA7CivljbXphZIgPiB0YW1hZ296YWtlXCA7Civnr4DjgIUgPiBmdXNoaWJ1c2hpXCA7Civpg73ps6UgPiBtaXlha29kb3JpXCA7Civmsbroo4IgPiBrZXRzdXJldHN1XCA7CivolqznrrEgPiBrdXN1cmliYWtvXCA7CivpuqbnlZEgPiBtdWdpYmF0YWtlXCA7Civpu5LmvIYgPiBrb2t1c2hpdHN1XCA7Civllonku48gPiBub2RvYm90b2tlXCA7Civph5Hogb4gPiBrYW5hdHN1bmJvXCA7CivlkLjmub8gPiBreXV1c2hpdHN1XCA7CivmsLTolqwgPiBtaXp1Z3VzdXJpXCA7Civms4nnhrEgPiBpenVtaW5ldHN1XCA7CivmtbTlrqQgPiB5b2t1c2hpdHN1XCA7CivmhJvlqJggPiBtYW5hbXVzdW1lXCA7Civlj6Tni7ggPiBmdXJ1ZGFudWtpXCA7CivmsrPng48gPiBrYXdhZ2FyYXN1XCA7Civnp4HlrpsgPiB3YXRhc2hpYXRlXCA7Civlv4XnvbAgPiBoaXRzdWJhdHN1XCA7CivnpZ3ml6UgPiBzaHVrdWppdHN1XCA7CivlkIrmqYsgPiB0c3VyaWJhc2hpXCA7CivlvaLoqLEgPiBrYXRhYmFrYXJpXCA7CivmsrjmsrggPiBmdXRzdWZ1dHN1XCA7Civms6LmnpUgPiBuYW1pbWFrdXJhXCA7CivnoofntrEgPiBpa2FyaWR6dW5hXCA7CivmsLTnp6QgPiBtaXp1YmFrYXJpXCA7CivmtYHlpLEgPiByeXV1c2hpdHN1XCA7Civmtbjlh7ogPiBzaGluc2h1dHN1XCA7CivpiYvlsZEgPiBrYW4nJ25ha3V6dVwgOwor6I+x6aSFID4gaGlzaGltb2NoaVwgOwor5ZCJ5pelID4ga2ljaGluaWNoaVwgOwor6Jas5oyHID4ga3VzdXJpeXViaVwgOwor5ZCE5pa5ID4gb25vb25vZ2F0YVwgOwor6YeR5qeMID4ga2FuYWR6dWNoaVwgOwor56CC6KKLID4gc3VuYWJ1a3Vyb1wgOwor5ZKE5ZKEID4gdG90c3V0b3RzdVwgOwor5YmN6aCtID4gbWFlZ2FzaGlyYVwgOwor5rWB5Ye6ID4gcnl1dXNodXRzdVwgOwor5rS75YqbID4ga2F0c3VyeW9rdVwgOwor5Y2154S8ID4gdGFtYWdveWFraVwgOwor5rC054WZID4gbWl6dWtlbXVyaVwgOwor6YGT6YGTID4gbWljaGltaWNoaVwgOwor5by36IWwID4gdHN1eW9nb3NoaVwgOwor5rS75LuPID4ga2F0c3VidXRzdVwgOwor5Yid6ZycID4gaGF0c3VzaGltb1wgOwor5Y+z5bemID4gbWlnaWhpZGFyaVwgOwor5ZCE5a6kID4ga2FrdXNoaXRzdVwgOwor552A6ZuqID4gY2hha3VzZXRzdVwgOwor5b+F5ruFID4gaGl0c3VtZXRzdVwgOwor6YeM5b+DID4gc2F0b2dva29yb1wgOwor6JG156WtID4gYW9pbWF0c3VyaVwgOwor5rK55aO3ID4gYWJ1cmF0c3Vib1wgOwor5riL44CFID4gc2hpYnVzaGlidVwgOwor5Yi76LazID4ga2l6YW1pYXNoaVwgOwor5rC05p6VID4gbWl6dW1ha3VyYVwgOwor5YuF562GID4gY2hva3VoaXRzdVwgOwor6bCv6ZuyID4gaXdhc2hpZ3Vtb1wgOwor5b+D5p+EID4ga29rb3JvZ2FyYVwgOwor552m6KiAID4gbXV0c3Vnb3RvXCA7Civlj47lpaogPiBzaHV1ZGF0c3VcIDsKK+aBkOWWnSA+IGt5b3VrYXRzdVwgOwor55uu6aCtID4gbWVnYXNoaXJhXCA7CivojYnppKAgPiBrdXNhbW9jaGlcIDsKK+WKh+iBtyA+IGdla2lzaG9rdVwgOwor6Jas5LujID4ga3VzdXJpZGFpXCA7CivlvLfnm7QgPiBreW91Y2hva3VcIDsKK+WQhOWGiiA+IGtha3VzYXRzdVwgOwor6YCa6KqsID4gdHN1dXNldHN1XCA7CivmsrPlj6MgPiBrYXdhZ3VjaGlcIDsKK+mAhuiziiA+IGd5YWt1em9rdVwgOwor6YGT6I2JID4gbWljaGlrdXNhXCA7CivmrbvnpZ4gPiBzaGluaWdhbWlcIDsKK+mBqeiBtyA+IHRla2lzaG9rdVwgOwor5qyg6JC9ID4ga2V0c3VyYWt1XCA7Civlt7vprqggPiBtYWtpenVzaGlcIDsKK+WLneeOhyA+IHNob3VyaXRzdVwgOwor5Ye66LuNID4gc2h1dHN1Z3VuXCA7CivljYrml6UgPiBoYW4nJ25pY2hpXCA7CivljoTlubQgPiB5YWt1ZG9zaGlcIDsKK+WJpeiEsSA+IGhha3VkYXRzdVwgOwor5b6S5qGcID4gYWRhemFrdXJhXCA7CivljYPml6UgPiBzZW4nJ25pY2hpXCA7CivliKXooYwgPiBiZXRzdWd5b3VcIDsKK+iQveedgCA+IHJha3VjaGFrdVwgOwor6YCG6KWyID4gZ3lha3VzaHV1XCA7Civmr5LmrrogPiBkb2t1c2F0c3VcIDsKK+eiuuWunyA+IGtha3VqaXRzdVwgOwor6YeN5Ye6ID4ganV1c2h1dHN1XCA7Civlj6PlhYggPiBrdWNoaXNha2lcIDsKK+WPo+WFgyA+IGt1Y2hpbW90b1wgOwor5byP55uuID4gc2hpa2ltb2t1XCA7CivljZPmipwgPiB0YWt1YmF0c3VcIDsKK+ayoeWFpSA+IGJvdHN1bnl1dVwgOwor5Y+z5LiLID4gbWlnaXNoaXRhXCA7CivlvLfng4ggPiBreW91cmV0c3VcIDsKK+mAuOiEsSA+IGl0c3VkYXRzdVwgOwor55m96buSID4gc2hpcm9rdXJvXCA7Civnm7TpgZQgPiBqaWtpdGF0c3VcIDsKK+aBi+S7hyA+IGtvaWdhdGFraVwgOwor55u06YCyID4gY2hva3VzaGluXCA7Civnm7TpgJogPiBjaG9rdXRzdXVcIDsKK+WJveeqgyA+IGh5b3VzZXRzdVwgOwor5Ymy5664ID4gd2FyaWJhc2hpXCA7CivlhY3pu5wgPiBtZW5jaHV0c3VcIDsKK+mHkeS7jyA+IGthbmFidXRzdVwgOwor55m96be6ID4gc2hpcmFzYWdpXCA7CivphrXlh7ogPiBreW9zaHV0c3VcIDsKK+ebtOi9hCA+IGNob2trYXRzdVwgOwor5Y2g5birID4gdXJhbmFpc2hpXCA7Civnmq7pnbQgPiBrYXdhZ3V0c3VcIDsKK+aApeWIhyA+IGt5dXVzZXRzdVwgOwor6YWJ5bm0ID4gdG9yaWRvc2hpXCA7CivnnJ/oo7ggPiBtYXBwYWRha2FcIDsKK+WHuuihgCA+IHNodWtrZXRzdVwgOwor55m96bGaID4gc2hpcm9naXN1XCA7CivpgZPnrYsgPiBtaWNoaXN1amlcIDsKK+mBk+erryA+IG1pY2hpYmF0YVwgOwor5Y245aOyID4gb3Jvc2hpdXJpXCA7Civlv5jlpLEgPiBib3VzaGl0c3VcIDsKK+iUreWPoyA+IGthZ2VndWNoaVwgOwor5Y215aSnID4gdGFtYWdvZGFpXCA7CivliJ3oirEgPiBoYXRzdWhhbmFcIDsKK+mBk+eoiyA+IG1pY2hpbm9yaVwgOwor55m96auqID4gaGFrdWhhdHN1XCA7Civno5TliJEgPiBoYXJpdHN1a2VcIDsKK+W9puaYnyA+IGhpa29ib3NoaVwgOwor6L6b6L6jID4gc2hpbnJhdHN1XCA7CivmraPniakgPiBzaG91YnV0c3VcIDsKK+WTgeOAhSA+IHNoaW5hamluYVwgOwor5Ye66JeNID4gc2h1dHN1cmFuXCA7CivlubToi6UgPiB0b3NoaXdha2FcIDsKK+mAhuiHoyA+IGd5YWt1c2hpblwgOwor5bmz6IqdID4gaGlyYXNoaWJhXCA7CivmqKrpnaIgPiB5b2tvdHN1cmFcIDsKK+ebtOiqrSA+IGNob2t1ZG9rdVwgOwor5Yed6KGAID4gZ3lvdWtldHN1XCA7CivpgIPohbAgPiBuaWdlZ29zaGlcIDsKK+W/g+WkqiA+IHRva29yb3RlblwgOwor5b+D5aSpID4gdG9rb3JvdGVuXCA7Civnm7ToqLMgPiBjaG9rdXlha3VcIDsKK+WIneiAsyA+IGhhdHN1bWltaVwgOwor55m96ZuqID4gaGFrdXNldHN1XCA7Civlh7roibIgPiBzaHVzc2hva3VcIDsKK+W7g+eWviA+IGhhaXNoaXRzdVwgOwor5YqH54OIID4gZ2VraXJldHN1XCA7CivpgJ/nrYYgPiBzb2t1aGl0c3VcIDsKK+awtOWPoyA+IG1penVndWNoaVwgOwor5q665oiuID4gc2F0c3VyaWt1XCA7CivlvozlrqQgPiBrb3VzaGl0c3VcIDsKK+iThOWmviA+IGNoaWt1c2hvdVwgOwor5Ye6576kID4gc2h1dHN1Z3VuXCA7CivpgLLnmbogPiBzaGlucGF0c3VcIDsKK+iMtuiiiyA+IGNoYWJ1a3Vyb1wgOwor5Yid56m6ID4gaGF0c3V6b3JhXCA7CivmqKrpgZMgPiB5b2tvbWljaGlcIDsKK+iQveacrSA+IHJha3VzYXRzdVwgOwor5Yiu55uuID4ga2F0c3Vtb2t1XCA7Civnmb3phZIgPiBzaGlyb3pha2VcIDsKK+WLmOaJgCA+IGthbmRva29yb1wgOwor6L+956qBID4gdHN1aXRvdHN1XCA7CivlvI/mnI0gPiBzaGlraWZ1a3VcIDsKK+WNlOWKmyA+IGt5b3VyeW9rdVwgOwor55+z5oyBID4gaXNoaW1vY2hpXCA7CivokL3ml6UgPiByYWt1aml0c3VcIDsKK+mAuOeJqSA+IGljaGltb3RzdVwgOwor55u06IW4ID4gY2hva3VjaG91XCA7CivmrbTml6UgPiByZWtpaml0c3VcIDsKK+mAsueJqSA+IHNoaW5tb3RzdVwgOwor5Ye656uLID4gc2h1dHRhdHN1XCA7CivnnJ/nrYYgPiBzaGlucGl0c3VcIDsKK+ato+aciCA+IHNob3VnYXRzdVwgOwor5Yed57iuID4gZ3lvdXNodWt1XCA7CivnnYDnm64gPiBjaGFrdW1va3VcIDsKK+WFreitmCA+IHJva3VzaGlraVwgOwor5Yed57WQID4gZ3lvdWtldHN1XCA7CivnnLznlr4gPiBnYW5zaGl0c3VcIDsKK+atjOaelSA+IHV0YW1ha3VyYVwgOwor77y457eaID4gZWtrdXN1c2VuXCA7Civnn6XmgokgPiBjaGlzaGl0c3VcIDsKK+WIpeeJqSA+IGJldHN1bW9ub1wgOwor55u057WQID4gY2hva2tldHN1XCA7Civlh53nq4sgPiBneW91cml0c3VcIDsKK+W4uOevgCA+IHRva29idXNoaVwgOwor5qiZ6K2YID4gaHlvdXNoaWtpXCA7Civlvozlh7ogPiBrb3VzaHV0c3VcIDsKK+WIneeJqSA+IGhhdHN1bW9ub1wgOwor6Iqx6YGTID4gaGFuYW1pY2hpXCA7Civlh7rnmbogPiBzaHVwcGF0c3VcIDsKK+WMl+WPoyA+IGtpdGFndWNoaVwgOwor5bm0546JID4gdG9zaGlkYW1hXCA7CivmqZnoibIgPiBkYWlkYWlpcm9cIDsKK+efqeW3riA+IGthbmV6YXNoaVwgOwor5Y2D5LiHID4gY2hpeW9yb3p1XCA7CivlvJPlvKYgPiB5dW1pZHp1cnVcIDsKK+ebsueptCA+IG1la3VyYWFuYVwgOwor6I2J566SID4ga3VzYWJvdWtpXCA7Civlh7rnj74gPiBzaHV0c3VnZW5cIDsKK+WHneedgCA+IGd5b3VjaGFrdVwgOwor5Yqj5byxID4gcmV0c3VqYWt1XCA7CivnnJ/njocgPiBzaGluc290c3VcIDsKK+iLpuiZqyA+IG5pZ2FtdXNoaVwgOwor5qmL6ISaID4ga3lvdWt5YWt1XCA7Civlt6bohZUgPiBoaWRhcml1ZGVcIDsKK+mrmOm8viA+IHRha2FpYmlraVwgOwor55yf54mpID4gc2hpbmJ1dHN1XCA7CivlvJTlrqIgPiBjaG91a3lha3VcIDsKK+eZvuiWrCA+IGh5YWt1eWFrdVwgOwor6Iy2562SID4gY2hhZHp1dHN1XCA7CivlvJ/lqJggPiBvdG9tdXN1bWVcIDsKK+ecgeeVpSA+IHNob3VyeWFrdVwgOwor6YCG5rWBID4gZ3lha3VyeXV1XCA7CivmrYzlv4MgPiB1dGFnb2tvcm9cIDsKK+mAseacqyA+IHNodXVtYXRzdVwgOwor552A5rC3ID4gY2hha3VoeW91XCA7Civnmb3oj4ogPiBzaGlyYWdpa3VcIDsKK+W5tOazoiA+IHRvc2hpbmFtaVwgOwor5q2j5a6kID4gc2Vpc2hpdHN1XCA7Civoj4rmnIggPiBraWt1ZHp1a2lcIDsKK+WIpealrSA+IGJldHN1Z3lvdVwgOwor5bm05q+OID4gdG9zaGlnb3RvXCA7CivpgLHml6UgPiBzaHV1aml0c3VcIDsKK+iKseihlyA+IGhhbmFtYWNoaVwgOwor5bed57iBID4ga2F3YWJ1Y2hpXCA7CivlvaLku6MgPiBrYXRhc2hpcm9cIDsKK+eZveiJsiA+IGhha3VzaG9rdVwgOwor5Yil5qOfID4gYmV0c3VtdW5lXCA7Civlhornq4sgPiBzYWt1cml0c3VcIDsKK+WztumiqCA+IHNoaW1ha2F6ZVwgOwor5byx5Y2SID4gamFrdXNvdHN1XCA7Civlg5XpgZQgPiBib2t1dGFjaGlcIDsKK+mrremdoiA+IGhpZ2VkenVyYVwgOwor5by15YqbID4gY2hvdXJ5b2t1XCA7Civou5/os6ogPiBuYW5zaGl0c3VcIDsKK+iPseW9oiA+IGhpc2hpZ2F0YVwgOwor6YCy5o2XID4gc2hpbmNob2t1XCA7Civlg7voqqwgPiBoZWtpc2V0c3VcIDsKK+iMtueVkSA+IGNoYWJhdGFrZVwgOwor5qiq57axID4geW9rb2R6dW5hXCA7CivlhY7ogLMgPiB1c2FnaW1pbWlcIDsKK+WHuuasoCA+IHNodWtrZXRzdVwgOwor5bO26ZmwID4gc2hpbWFrYWdlXCA7Civnn6LljbAgPiB5YWppcnVzaGlcIDsKK+edgOacjSA+IGNoYWt1ZnVrdVwgOwor5bu65Z2qID4gdGF0ZXRzdWJvXCA7Civlia/lsLogPiBmdWt1c2hha3VcIDsKK+WIneaYpSA+IGhhdHN1aGFydVwgOwor5YWx56uLID4ga3lvdXJpdHN1XCA7CivoirHoj7EgPiBoYW5hYmlzaGlcIDsKK+W7tuWdqiA+IG5vYmV0c3Vib1wgOwor5qW16YePID4ga3lva3VyeW91XCA7Civoia/orZggPiByeW91c2hpa2lcIDsKK+W8n+WIhiA+IG90b3V0b2J1blwgOwor6Imy6Kq/ID4gc2hpa2ljaG91XCA7Civps7blj6MgPiB0b2JpZ3VjaGlcIDsKK+WFq+emjyA+IGhhY2hpZnVrdVwgOwor6Imy6KaaID4gc2hpa2lrYWt1XCA7Civnn7Pku48gPiBzZWtpYnV0c3VcIDsKK+ats+WHuiA+IHNhaXNodXRzdVwgOwor55u05rWBID4gY2hva3VyeXV1XCA7Civoio3olqwgPiBzaGFrdXlha3VcIDsKK+WHuuacrSA+IHNodXNzYXRzdVwgOwor5Ymy5aKXID4gd2FyaW1hc2hpXCA7Civoip3ojYkgPiBzaGliYWt1c2FcIDsKK+ecn+adsSA+IG1haGlnYXNoaVwgOwor5qi455u0ID4gYm9rdWNob2t1XCA7CivliaXlpaogPiBoYWt1ZGF0c3VcIDsKK+W5leacqyA+IGJha3VtYXRzdVwgOwor5qSO6aqoID4gdHN1aWtvdHN1XCA7CivmraPlh7ogPiBzZWlzaHV0c3VcIDsKK+WHtuaXpSA+IGt5b3VqaXRzdVwgOwor6YGK5aSxID4geXV1c2hpdHN1XCA7Civou4ronaYgPiBrdXJ1bWFlYmlcIDsKK+WIneW9uSA+IGhhdHN1eWFrdVwgOwor6YG45Ye6ID4gc2Vuc2h1dHN1XCA7CivpgIblv4MgPiBneWFrdXNoaW5cIDsKK+i/q+aMgSA+IHNlcmltb2NoaVwgOwor552A5bqKID4gY2hha3VzaG91XCA7CivlubTlvLEgPiB0b3NoaXlvd2FcIDsKK+Wxsem2iSA+IHlhbWF1enVyYVwgOwor77y35p2vID4gZGFidXJ1aGFpXCA7CivnnYDluK0gPiBjaGFrdXNla2lcIDsKK+i+u+acrSA+IHRzdWppZnVkYVwgOwor6YGp5YiHID4gdGVraXNldHN1XCA7Civnmbrnl4UgPiBoYXRzdWJ5b3VcIDsKK+eXheitmCA+IGJ5b3VzaGlraVwgOwor5Ym15Ye6ID4gc291c2h1dHN1XCA7CivliKXlrqQgPiBiZXNzaGl0c3VcIDsKK+W5tOW1qSA+IHRvc2hpa2FzYVwgOwor5Yid5a2rID4gaGF0c3VtYWdvXCA7Civlh7rlvqEgPiBzaHV0c3VneW9cIDsKK+W5veWupCA+IHl1dXNoaXRzdVwgOwor55m9546JID4gc2hpcmF0YW1hXCA7Civnm7TmkoMgPiBjaG9rdWdla2lcIDsKK+W5tOWvhCA+IHRvc2hpeW9yaVwgOwor5qaO6Iy4ID4gZW5va2l0YWtlXCA7CivoiLnomasgPiBmdW5hbXVzaGlcIDsKK+eZveeGsSA+IGhha3VuZXRzdVwgOwor5qW16JaEID4ga3lva3VoYWt1XCA7Civnmb3nhoogPiBzaGlyb2t1bWFcIDsKK+W4huafsSA+IGhvYmFzaGlyYVwgOwor5Ymy5LuYID4gd2FyaXRzdWtlXCA7CivliJ3lpKIgPiBoYXRzdXl1bWVcIDsKK+WIhuWupCA+IGJ1bnNoaXRzdVwgOwor5bq25Ye6ID4gc2hvc2h1dHN1XCA7CivlhaXmu4UgPiBueXV1bWV0c3VcIDsKK+WJsuS4iyA+IHdhcmlzaGl0YVwgOwor5biC5p2+ID4gaWNoaW1hdHN1XCA7CivlhKrnlLcgPiB5YXNhb3Rva29cIDsKK+iKseeUuiA+IGhhbmFtYWNoaVwgOwor6L2i5q66ID4gcmVraXNhdHN1XCA7CivnmYjnlr4gPiBoYWlzaGl0c3VcIDsKK+ecn+WunyA+IHNoaW5qaXRzdVwgOwor55m95rudID4gc2hpcmF0YWtpXCA7CivpgJ/lj6MgPiBoYXlha3VjaGlcIDsKK+mAsuWFpSA+IHNoaW4nJ255dXVcIDsKK+WEsueJqSA+IG1vdWtlbW9ub1wgOwor6IWw6auYID4ga29zaGlkYWthXCA7CivmqYvmoYEgPiBoYXNoaWdldGFcIDsKK+mqqOizqiA+IGtvc3NoaXRzdVwgOwor6IWw6aqoID4ga29zaGlib25lXCA7Civkv67po74gPiBzaHV1c2hva3VcIDsKK+eZvea1qiA+IHNoaXJhbmFtaVwgOwor55m95rWcID4gc2hpcmFoYW1hXCA7CivoibbnqK4gPiB0c3V5YWRhbmVcIDsKK+mAn+WKmyA+IHNva3VyeW9rdVwgOwor6L675bqXID4gdHN1amltaXNlXCA7Civnmb3ms6IgPiBzaGlyYW5hbWlcIDsKK+iMtuaJgCA+IGNoYWRva29yb1wgOwor5bqD5Y+jID4gaGlyb2t1Y2hpXCA7CivlsLrpqqggPiBzaGFra290c3VcIDsKK+WHuuWhgSA+IHNodXRzdXJ1aVwgOwor55uu5bqHID4gbWFiaXNhc2hpXCA7Civnmb3msLQgPiBzaGlyb21penVcIDsKK+iJsuelniA+IHNoaWtpc2hpblwgOwor5YWl5qSNID4gbnl1dXNob2t1XCA7Civnm7TlsZ4gPiBjaG9rdXpva3VcIDsKK+WIneWHuiA+IHNob3NodXRzdVwgOwor5Yeh5aSxID4gYm9uc2hpdHN1XCA7Civlha3mnIggPiByb2t1Z2F0c3VcIDsKK+WFpeacrSA+IG55dXVzYXRzdVwgOwor6YCB5Ye6ID4gc291c2h1dHN1XCA7CivlsbHpgZMgPiB5YW1hbWljaGlcIDsKK+mAgOWHuiA+IHRhaXNodXRzdVwgOwor5qW956+AID4gZ2FrdXNldHN1XCA7CivluLjlpI8gPiB0b2tvbmF0c3VcIDsKK+eUs+mBlCA+IHNoaW50YXRzdVwgOwor6Iul5p2+ID4gd2FrYW1hdHN1XCA7CivlsYDplbcgPiBreW9rdWNob3VcIDsKK+msvOeTpiA+IG9uaWdhd2FyYVwgOwor5bid5a6kID4gdGVpc2hpdHN1XCA7CivluorkuIsgPiB5dWthc2hpdGFcIDsKK+edgOS/oSA+IGNoYWt1c2hpblwgOwor55m95pytID4gc2hpcm9mdWRhXCA7CivliIflhaUgPiBzZXRzdW55dXVcIDsKK+aomeacrSA+IGh5b3VzYXRzdVwgOwor5Ye65YuVID4gc2h1dHN1ZG91XCA7Civov6vlipsgPiBoYWt1cnlva3VcIDsKK+WxkemJhCA+IGt1enV0ZXRzdVwgOwor6auq57axID4ga2FtaWR6dW5hXCA7CivpgJDkuIAgPiBjaGlrdWljaGlcIDsKK+S+temjnyA+IHNoaW5zaG9rdVwgOwor6Iqx5rC3ID4gaGFuYWdvb3JpXCA7Civkv4Tpm6ggPiBuaXdha2FhbWVcIDsKK+iGoOizqiA+IGtvdXNoaXRzdVwgOwor6Iy25a6kID4gY2hhc2hpdHN1XCA7Civnmb3ml6UgPiBoYWt1aml0c3VcIDsKK+S+oOmqqCA+IGt5b3Vrb3RzdVwgOwor5bCR6aOfID4gc2hvdXNob2t1XCA7Civlt7PlubQgPiBoZWJpZG9zaGlcIDsKK+iJtueJqSA+IHRzdXlhbW9ub1wgOwor5bCP6aOfID4gc2hvdXNob2t1XCA7CivlhrflpbQgPiBoaXlheWFra29cIDsKK+Wwj+mgrSA+IGtvZ2FzaGlyYVwgOwor5bGI6L6xID4ga3V0c3Vqb2t1XCA7CivpqqjohpwgPiBrb3RzdW1ha3VcIDsKK+eUuuinkiA+IG1hY2hpa2Fkb1wgOwor6L675ZCbID4gdHN1amlnaW1pXCA7CivnnIHlipsgPiBzaG91cnlva3VcIDsKK+mvieW5nyA+IGtvaW5vYm9yaVwgOwor6LWk6bCvID4gYWthaXdhc2hpXCA7CivpqqjogokgPiBrb3RzdW5pa3VcIDsKK+WGheWupCA+IG5haXNoaXRzdVwgOwor5bed5bK4ID4ga2F3YWdpc2hpXCA7CivluZXkuIsgPiBtYWt1c2hpdGFcIDsKK+ebruWNsCA+IG1lamlydXNoaVwgOwor5bC76Lu9ID4gc2hpcmlnYXJ1XCA7CivnlLfooYYgPiBvdG9rb3NodXVcIDsKK+mwkOWPoyA+IHdhbmlndWNoaVwgOwor5L+h6LaKID4gc2hpbicnZXRzdVwgOwor5L+K6YC4ID4gc2h1bicnaXRzdVwgOwor5bGe6KiXID4gc2hva3V0YWt1XCA7Civnm7LliKQgPiBtZWt1cmFiYW5cIDsKK+iDuOmqqCA+IGt5b3Vrb3RzdVwgOwor5a+d6aOfID4gc2hpbnNob2t1XCA7CivoibLmsqIgPiBzaGlraXRha3VcIDsKK+WFreWwuiA+IHJva3VzaGFrdVwgOwor6L6b5Y+jID4ga2FyYWt1Y2hpXCA7CivoibLmrLIgPiBzaGlraXlva3VcIDsKK+alteeGsSA+IGdva3VuZXRzdVwgOwor6Lez6JmrID4gdG9iaW11c2hpXCA7Civnl5vng4ggPiB0c3V1cmV0c3VcIDsKK+iHo+evgCA+IHNoaW5zZXRzdVwgOwor6aqo566xID4ga290c3ViYWtvXCA7CivnmoflrqQgPiBrb3VzaGl0c3VcIDsKK+S/l+iqrCA+IHpva3VzZXRzdVwgOwor5YSy5b25ID4gbW91a2V5YWt1XCA7Civkvpvov7AgPiBreW91anV0c3VcIDsKK+Wzu+eDiCA+IHNodW5yZXRzdVwgOwor55S36IW5ID4gb3Rva29iYXJhXCA7CivmpbXmtYEgPiBreW9rdXJ5dXVcIDsKK+eVpeeroCA+IHJ5YWt1c2hvdVwgOwor5YaN5Ye6ID4gc2Fpc2h1dHN1XCA7Civlt53lj6MgPiBrYXdhZ3VjaGlcIDsKK+iJr+aXpSA+IHJ5b3VqaXRzdVwgOwor55Wl56ewID4gcnlha3VzaG91XCA7Civlt6bliY0gPiBoaWRhcmltYWVcIDsKK+WvvuizqiA+IHRhaXNoaXRzdVwgOwor5bCP6KqsID4gc2hvdXNldHN1XCA7Civlt6blhZogPiBoaWRhcml0b3VcIDsKK+iEh+mBkyA+IHdha2ltaWNoaVwgOwor5qO556ekID4gc2FvYmFrYXJpXCA7CivmoZzosp0gPiBzYWt1cmFnYWlcIDsKK+eXheayoSA+IGJ5b3Vib3RzdVwgOwor5YWx5YqbID4ga3lvdXJ5b2t1XCA7CivoiLnmqYsgPiBmdW5hYmFzaGlcIDsKK+mrquayuSA+IGthbWlhYnVyYVwgOwor55eF5q2/ID4gYnlvdWJvdHN1XCA7CivkvrXonZUgPiBzaGluc2hva3VcIDsKK+eXheasoCA+IGJ5b3VrZXRzdVwgOwor5YWr5YiHID4geWF0c3VnaXJpXCA7CivlhaXlipsgPiBueXV1cnlva3VcIDsKK+eUuuetiyA+IG1hY2hpc3VqaVwgOwor6Imy5oW+ID4gc2hpa2l5b2t1XCA7CivohILotrMgPiBhYnVyYWFzaGlcIDsKK+eUuueriyA+IGNob3VyaXRzdVwgOwor6ISa6Ki7ID4ga3lha3VjaHV1XCA7CivmpbXmnIggPiBnb2t1Z2V0c3VcIDsKK+iEguizqiA+IHNoaXNoaXRzdVwgOwor6Iif5qmLID4gZnVuYWhhc2hpXCA7CivkvpvooYAgPiBreW91a2V0c3VcIDsKK+W3neS4iyA+IGthd2FzaGltb1wgOwor5a6f6YyyID4gaml0c3Vyb2t1XCA7CivnlZznlJ8gPiBjaGlrdXNob3VcIDsKK+iJsuW8sSA+IHNoaWtpamFrdVwgOwor55m65Ye6ID4gaGFzc2h1dHN1XCA7CivohbDnuIQgPiBrb3NoaW5hd2FcIDsKK+eUn+evgCA+IG5hbWFidXNoaVwgOwor5bCx6IG3ID4gc2h1dXNob2t1XCA7CivotrPohbAgPiBhc2hpa29zaGlcIDsKK+WFpeS7jyA+IG55dXVidXRzdVwgOwor5YWl5LqkID4gaXJpbWFqaXJpXCA7CivohbDntJAgPiBrb3NoaWhpbW9cIDsKK+S/rueviSA+IHNodXVjaGlrdVwgOwor6IKJ6aOfID4gbmlrdXNob2t1XCA7Civkv6HntIQgPiBzaGluJyd5YWt1XCA7CivohLHokL0gPiBkYXRzdXJha3VcIDsKK+S9k+izqiA+IHRhaXNoaXRzdVwgOwor6Lyp5Ye6ID4gaGFpc2h1dHN1XCA7Civkv67npZMgPiBzaHV1ZnV0c3VcIDsKK+WtpumWpSA+IGdha3ViYXRzdVwgOwor5L2N6LKgID4ga3VyYWltYWtlXCA7Civoi5fku6MgPiBuYXdhc2hpcm9cIDsKK+WxseeUtyA+IHlhbWFvdG9rb1wgOwor5qGc6I2JID4gc2FrdXJhc291XCA7CivlrqLotrMgPiBreWFrdWFzaGlcIDsKK+WxnuebriA+IHNob2t1bW9rdVwgOwor5L+X562GID4gem9rdWhpdHN1XCA7CivlsI/ogbcgPiBzaG91c2hva3VcIDsKK+WEn+WNtCA+IHNob3VreWFrdVwgOwor5qW95b6LID4gZ2FrdXJpdHN1XCA7CivmoZzoibIgPiBzYWt1cmFpcm9cIDsKK+Wwj+e+iiA+IGtvaGl0c3VqaVwgOwor5a6f6LOqID4gamlzc2hpdHN1XCA7CivogpjpiYQgPiBoaWppdGV0c3VcIDsKK+izg+mkhSA+IGNoaW5tb2NoaVwgOwor5a6d6LKdID4gdGFrYXJhZ2FpXCA7Civou73lj6MgPiBrYXJ1a3VjaGlcIDsKK+i2heiEsSA+IGNob3VkYXRzdVwgOwor55S354mpID4gb3Rva29tb25vXCA7CivogbfplbcgPiBzaG9rdWNob3VcIDsKK+S7j+mhlCA+IGhvdG9rZWdhb1wgOwor5LuP6aCYID4gZnV0c3VyeW91XCA7CivnlaXmrbQgPiByeWFrdXJla2lcIDsKK+mqqOafhCA+IGtvdHN1Z2FyYVwgOwor6LWk6ImyID4gc2VraXNob2t1XCA7CivlsI/nr4AgPiBzaG91c2V0c3VcIDsKK+Wwu+eZliA+IHNoaXJpa3VzZVwgOwor6Iag5ryGID4ga291c2hpdHN1XCA7Civls7blvbEgPiBzaGltYWthZ2VcIDsKK+alteWwjyA+IGt5b2t1c2hvdVwgOwor5L+154mpID4gaHlvdW1vdHN1XCA7CivnlJ/niKogPiBuYW1hZHp1bWVcIDsKK+advumiqCA+IG1hdHN1a2F6ZVwgOwor6LaF57W2ID4gY2hvdXpldHN1XCA7CivoiLnlrqQgPiBzZW5zaGl0c3VcIDsKK+iFuueGsSA+IHNlbicnbmV0c3VcIDsKK+adn+mrqiA+IHNva3VoYXRzdVwgOwor6Lui5Ye6ID4gdGVuc2h1dHN1XCA7CivohKnnq7kgPiBzaHV1Y2hpa3VcIDsKK+WztuWztiA+IHNoaW1hamltYVwgOwor55Wl5pyNID4gcnlha3VmdWt1XCA7Civls7blsbEgPiBzaGltYXlhbWFcIDsKK+msseWLgyA+IHV0c3Vib3RzdVwgOwor5p2x6ZuyID4gc2hpbm9ub21lXCA7CivnlJ/mu4UgPiBzaG91bWV0c3VcIDsKK+S/l+eJqSA+IHpva3VidXRzdVwgOwor6ISx56GrID4gZGF0c3VyeXV1XCA7CivohIjntaEgPiBteWFrdXJha3VcIDsKK+WtpuitmCA+IGdha3VzaGlraVwgOwor5L6155WlID4gc2hpbnJ5YWt1XCA7CivlraboqqwgPiBnYWt1c2V0c3VcIDsKK+iBt+iyrCA+IHNob2t1c2VraVwgOwor6Im25LqLID4gdHN1eWFnb3RvXCA7CivnjonptKsgPiB0YW1hc2hpZ2lcIDsKK+eTpueJiCA+IGthd2FyYWJhblwgOwor5YK35Y+jID4ga2l6dWd1Y2hpXCA7Civlr4bntIQgPiBtaXRzdXlha3VcIDsKK+WtpuihkyA+IGdha3VqdXRzdVwgOwor6LuS5LiLID4gbm9raXNoaXRhXCA7Civou4rku6MgPiBrdXJ1bWFkYWlcIDsKK+WAn+aWmSA+IHNoYWt1cnlvdVwgOwor6LOH6LOqID4gc2hpc2hpdHN1XCA7CivkurrpgZQgPiBoaXRvdGFjaGlcIDsKK+WAmeaWhyA+IHNvdXJvdWJ1blwgOwor5a+655S3ID4gdGVyYW90b2tvXCA7CivmpbXljJcgPiBreW9rdWhva3VcIDsKK+iEseeNhCA+IGRhdHN1Z29rdVwgOwor55S65pa5ID4gbWFjaGlrYXRhXCA7Civnl5vliIcgPiB0c3V1c2V0c3VcIDsKK+mrmOWdjyA+IHRha2F0c3VraVwgOwor6LK46LODID4ga2FzaGljaGluXCA7CivlgInmlbcgPiBrdXJhc2hpa2lcIDsKK+S5numjnyA+IGtvdHN1amlraVwgOwor5Ly457iuID4gc2hpbnNodWt1XCA7Civkurros6ogPiBoaXRvamljaGlcIDsKK+acnemjnyA+IGNob3VzaG9rdVwgOwor55a15Y+jID4ga2l6dWd1Y2hpXCA7Civls7vliKUgPiBzaHVuYmV0c3VcIDsKK+WxiuabuCA+IHRvZG9rZXNob1wgOwor5a6i562LID4ga3lha3VzdWppXCA7CivmnI3po74gPiBmdWt1c2hva3VcIDsKK+WCkeWHuiA+IGtlc3NodXRzdVwgOwor5LyR6IG3ID4ga3l1dXNob2t1XCA7CivnlLLmiYAgPiBrYW5kb2tvcm9cIDsKK+S6jOmBkyA+IGZ1dGFtaWNoaVwgOwor6Ii55Li7ID4gZnVuYW51c2hpXCA7Civpo5/pgJogPiBzaG9rdXRzdXVcIDsKK+WuoueoriA+IGt5YWt1ZGFuZVwgOwor6LOK6JmQID4gem9rdWd5YWt1XCA7CivkubPpiaIgPiBueXV1YmFjaGlcIDsKK+aciOmhjSA+IGdldHN1Z2FrdVwgOwor5pyI6aCDID4gdHN1a2lnb3JvXCA7CivkvZznlLcgPiBzYWt1b3Rva29cIDsKK+eUt+W9uSA+IG90b2tveWFrdVwgOwor5LiK6bayID4gam91Yml0YWtpXCA7CivohZXmnpUgPiB1ZGVtYWt1cmFcIDsKK+i1pOeGsSA+IHNla2luZXRzdVwgOwor6IiM5YWIID4gc2hpdGFzYWtpXCA7CivohbnmjIEgPiBoYXJhbW9jaGlcIDsKK+ePjeiqrCA+IGNoaW5zZXRzdVwgOwor5LuY6JC9ID4gdHN1a2VvY2hpXCA7CivohbDmjpsgPiBrb3NoaWtha2VcIDsKK+S5hemXiiA+IGt5dXVrYXRzdVwgOwor5a+G54yfID4gbWl0c3VyeW91XCA7CivnlLPlubQgPiBzYXJ1ZG9zaGlcIDsKK+adkOizqiA+IHphaXNoaXRzdVwgOwor5p2+6J2JID4gbWF0c3V6ZW1pXCA7CivkuqzooaggPiBreW91b21vdGVcIDsKK+iEmuazqCA+IGt5YWt1Y2h1dVwgOwor5qKF5pqmID4gdW1lZ295b21pXCA7CivkvZzniakgPiBzYWt1bW90c3VcIDsKK+iznue9sCA+IHNob3ViYXRzdVwgOwor5a2Q576KID4ga29oaXRzdWppXCA7CivlrqTnlLogPiBtdXJvbWFjaGlcIDsKK+Wwj+absiA+IHNob3VreW9rdVwgOwor5qSc5Ye6ID4ga2Vuc2h1dHN1XCA7Civkv4rmipwgPiBzaHVuYmF0c3VcIDsKK+Wvhua8gSA+IG1pdHN1cnlvdVwgOwor6IKJ562GID4gbmlrdWhpdHN1XCA7CivohbDlvLEgPiBrb3NoaXlvd2FcIDsKK+iDhueOiSA+IGtpbW90dGFtYVwgOwor5p2+6Iy4ID4gbWF0c3V0YWtlXCA7CivmoZzmoYMgPiBzYWt1cmFuYm9cIDsKK+Wvgua7hSA+IGpha3VtZXRzdVwgOwor5pys6LOqID4gaG9uc2hpdHN1XCA7Civku5TnvoogPiBrb2hpdHN1amlcIDsKK+eUo+WupCA+IHNhbnNoaXRzdVwgOwor6IWw5biDID4ga29zaGludW5vXCA7CivohbDlt7sgPiBrb3NoaW1ha2lcIDsKK+S9g+eFriA+IHRzdWt1ZGFuaVwgOwor5L615o6gID4gc2hpbnJ5YWt1XCA7CivmoYHmqYsgPiBrZXRhYmFzaGlcIDsKK+actOiopSA+IGJva3V0b3RzdVwgOwor6aOf6JmrID4gc2hva3VjaHV1XCA7Civmnb7ohIIgPiBtYXRzdXlhbmlcIDsKK+S4g+mboyA+IHNoaWNoaW5hblwgOwor5L2O5rm/ID4gdGVpc2hpdHN1XCA7CivnlLflnYIgPiBvdG9rb3pha2FcIDsKK+Wuv+aziiA+IHNodWt1aGFrdVwgOwor5Lyv54i1ID4gaGFrdXNoYWt1XCA7CivmopPlvJMgPiBhenVzYXl1bWlcIDsKK+mkheiCjCA+IG1vY2hpaGFkYVwgOwor5bGF5a6kID4ga3lvc2hpdHN1XCA7CivmnKjoqKUgPiBib2t1dG90c3VcIDsKK+mhjemamyA+IGhpdGFpZ2l3YVwgOwor55WZ5YilID4gcnl1dWJldHN1XCA7Civkv6Hlrp8gPiBzaGluaml0c3VcIDsKK+i0iOeJqSA+IG9rdXJpbW9ub1wgOwor6aeQ5pelID4gY2h1dW5pY2hpXCA7Civmn7/muIsgPiBrYWtpc2hpYnVcIDsKK+S4i+mHkSA+IHNoaXRhZ2FuZVwgOwor5Lit6LaKID4gY2h1dWdvc2hpXCA7CivlqpLos6ogPiBiYWlzaGl0c3VcIDsKK+S5vuiNiSA+IGhvc2hpZ3VzYVwgOwor55C054iqID4ga290b2R6dW1lXCA7CivohbDlnqMgPiBrb3NoaWdha2lcIDsKK+S/guWumCA+IGtha2FyaWthblwgOwor6ISI5pCPID4gbXlha3VoYWt1XCA7CivnjonomasgPiB0YW1hbXVzaGlcIDsKK+eUn+WUviA+IG5hbWF0c3ViYVwgOwor6aOf6IKJID4gc2hva3VuaWt1XCA7Civmnb7nrKAgPiBtYXRzdWthc2FcIDsKK+iEiOaLjSA+IG15YWt1aGFrdVwgOwor5LiD6YGTID4gc2hpY2hpZG91XCA7CivnlLPlhaUgPiBtb3VzaGlpcmVcIDsKK+WuouanmCA+IGt5YWt1c2FtYVwgOwor5Lmz6ImyID4gbnl1dXNob2t1XCA7Civmm7Loqr8gPiBreW9rdWNob3VcIDsKK+WAn+S4uyA+IGthcmludXNoaVwgOwor5Lm+6IKJID4gaG9zaGluaWt1XCA7Civlrr/mlpkgPiBzaHVrdXJ5b3VcIDsKK+Wun+alrSA+IGppdHN1Z3lvdVwgOwor5a6/5pW1ID4gc2h1a3V0ZWtpXCA7CivkuIPovKogPiBzaGljaGlyaW5cIDsKK+eUo+WHuiA+IHNhbnNodXRzdVwgOwor5L2V5pelID4gbmFuJyduaWNoaVwgOwor6LOq54K5ID4gc2hpdHN1dGVuXCA7CivohLPlrqQgPiBub3VzaGl0c3VcIDsKK+WxseS8jyA+IHlhbWFidXNoaVwgOwor5a6f5qCqID4gaml0c3VrYWJ1XCA7CivkvrXlpaogPiBzaGluZGF0c3VcIDsKK+eUuuS4rSA+IG1hY2hpbmFrYVwgOwor55S65LimID4gbWFjaGluYW1pXCA7CivkuIros6ogPiBqb3VzaGl0c3VcIDsKK+S4i+iyvCA+IHNoaXRhYmFyaVwgOwor6aOf57SFID4gc2hva3ViZW5pXCA7CivkvqDlrqIgPiBreW91a3lha3VcIDsKK+abtOihoyA+IGtvcm9tb2dhZVwgOwor6aOf57OnID4gc2hva3VyeW91XCA7CivkuK3ooaggPiBuYWthb21vdGVcIDsKK+Wwj+WnkSA+IGtvanV1dG9tZVwgOwor5qCD5pyoID4gdG9jaGlub2tpXCA7CivohILmgKcgPiBhYnVyYXNob3VcIDsKK+WAieS4uyA+IGt1cmFudXNoaVwgOwor5LiD6LOiID4gc2hpY2hpa2VuXCA7CivlsLvlj5YgPiBzaGlyaXRvcmlcIDsKK+agvOW8jyA+IGtha3VzaGlraVwgOwor5pi86bO2ID4gaGlydXRvbmJpXCA7Civkuq7nm7QgPiByeW91Y2hva3VcIDsKK+aaoumBlCA+IGNob3V0YXRzdVwgOwor6IWw5YWDID4ga29zaGltb3RvXCA7CivohIflt64gPiB3YWtpemFzaGlcIDsKK+adieeuuCA+IHN1Z2liYXNoaVwgOwor5LuY54S8ID4gdHN1a2V5YWtpXCA7CivlrabmrpYgPiBnYWt1c2hva3VcIDsKK+agquW8jyA+IGthYnVzaGlraVwgOwor5p+P5qeZID4gYnlha3VzaGluXCA7Civni6zphYwgPiBkb2t1c2hha3VcIDsKK+WvheW5tCA+IHRvcmFkb3NoaVwgOwor6LOq5qipID4gc2hpY2hpa2VuXCA7CivlsI/lkoQgPiBrb2JhbmFzaGlcIDsKK+S4uOiFsCA+IG1hcnVnb3NoaVwgOwor5pi86aOvID4gaGlydW1lc2hpXCA7CivkvJDmnKggPiBiYXRzdWJva3VcIDsKK+S/iuWCkSA+IHNodW5rZXRzdVwgOwor6IG35q20ID4gc2hva3VyZWtpXCA7CivkuYvnuZ4gPiBzaGluJydueXV1XCA7CivmnrbmqYsgPiBrYWtlaGFzaGlcIDsKK+afj+acqCA+IGthc2hpd2FnaVwgOwor5Luu5qmLID4ga2FyaWJhc2hpXCA7CivosYbnspIgPiBtYW1ldHN1YnVcIDsKK+S8keaXpSA+IGt5dXVqaXRzdVwgOwor5Lit6IWwID4gY2h1dWdvc2hpXCA7CivkuIrolqwgPiB1d2FndXN1cmlcIDsKK+WvhuWupCA+IG1pc3NoaXRzdVwgOwor546J56ugID4gZ3lva3VzaG91XCA7CivkvrXlhaUgPiBzaGluJydueXV1XCA7Civlrr/lsIYgPiBzaHVrdXNob3VcIDsKK+WwhuWNkiA+IHNob3Vzb3RzdVwgOwor5Lih6IiMID4gcnlvdXpldHN1XCA7Civogbfmpa0gPiBzaG9rdWd5b3VcIDsKK+WwjuWHuiA+IGRvdXNodXRzdVwgOwor5a6/5a2mID4gc2h1a3VnYWt1XCA7CivlsI/lhoogPiBzaG91c2F0c3VcIDsKK+S4oeiEmiA+IHJ5b3VreWFrdVwgOwor6ISx5Ye6ID4gZGFzc2h1dHN1XCA7CivlrqLluK0gPiBreWFrdXNla2lcIDsKK+S4i+iNiSA+IHNoaXRha3VzYVwgOwor5bCE5Ye6ID4gc2hhc2h1dHN1XCA7CivmmqbooZMgPiByZWtpanV0c3VcIDsKK+actOebtCA+IGJva3VjaG9rdVwgOwor6LWk5ZyfID4gYWthdHN1Y2hpXCA7CivohIXllp0gPiBreW91a2F0c3VcIDsKK+S4ree1tiA+IGNodXV6ZXRzdVwgOwor5LiL6IW5ID4gc2hpdGFiYXJhXCA7CivohLHkv5cgPiBkYXRzdXpva3VcIDsKK+afj+aJiyA+IGthc2hpd2FkZVwgOwor5Lm+54mpID4gaG9zaGltb25vXCA7Civlrp/lraYgPiBqaXRzdWdha3VcIDsKK+ahn+S/tSA+IHNhbmRhd2FyYVwgOwor54yf6ImyID4gcnlvdXNob2t1XCA7CivkuIDohIggPiBpY2hpbXlha3VcIDsKK+i1pOWPoyA+IHNla2lndWNoaVwgOwor5Lit56uLID4gY2h1dXJpdHN1XCA7CivogbfmjowgPiBzaG9rdXNob3VcIDsKK+WupOWkliA+IHNoaXRzdWdhaVwgOwor5a+S5Y21ID4ga2FudGFtYWdvXCA7Civls7bjgIUgPiBzaGltYWppbWFcIDsKK+izquaEnyA+IHNoaXRzdWthblwgOwor5qC85YilID4ga2FrdWJldHN1XCA7CivmoLjlipsgPiBrYWt1cnlva3VcIDsKK+S4oeerryA+IHJ5b3VoYXNoaVwgOwor5Lih56uLID4gcnlvdXJpdHN1XCA7CivogJDmub8gPiB0YWlzaGl0c3VcIDsKK+S4i+e0kCA+IHNoaXRhaGltb1wgOwor5LuK5pelID4ga29uJyduaWNoaVwgOwor5pep6aOvID4gaGF5YW1lc2hpXCA7CivosrjmlrkgPiBrYXNoaWthdGFcIDsKK+S5vua5vyA+IGthbnNoaXRzdVwgOwor6aGN57iBID4gZ2FrdWJ1Y2hpXCA7CivkuIDnspIgPiBoaXRvdHN1YnVcIDsKK+Wroea1gSA+IGNoYWt1cnl1dVwgOwor5puy55uuID4ga3lva3Vtb2t1XCA7Civpo5/mrLIgPiBzaG9rdXlva3VcIDsKK+aftOWeoyA+IHNoaWJhZ2FraVwgOwor5Lqu5pyIID4gcnlvdWdldHN1XCA7CivkuIvnqb8gPiBzaGl0YWJha2lcIDsKK+S4gOevgCA+IGhpdG9mdXNoaVwgOwor6Z2p6Z20ID4ga2F3YWd1dHN1XCA7CivkuK3nlaUgPiBjaHV1cnlha3VcIDsKK+eKtuiiiyA+IGpvdWJ1a3Vyb1wgOwor54mp6YePID4gYnV0c3VyeW91XCA7CivmnKvmtYEgPiBtYXRzdXJ5dXVcIDsKK+agquS4uyA+IGthYnVudXNoaVwgOwor5LiL55+zID4gc2hpdGFpc2hpXCA7Civpo6/mmYIgPiBtZXNoaWRva2lcIDsKK+S9nOS7mCA+IHNha3VkenVrZVwgOwor5LiK5568ID4gdXdhbWFidXRhXCA7CivkvK/lj5QgPiBoYWt1c2h1a3VcIDsKK+eIqumdqSA+IHRzdW1ha2F3YVwgOwor5a6k5YaFID4gc2hpdHN1bmFpXCA7Civlrr/kuLsgPiB5YWRvbnVzaGlcIDsKK+S5hea/tiA+IGt5dXVrYXRzdVwgOwor5LqM5pyIID4gZnV0YXRzdWtpXCA7Civml6XpjLIgPiBuaWNoaXJva3VcIDsKK+S4gOeepSA+IGljaGliZXRzdVwgOwor5Luk5a6kID4gcmVpc2hpdHN1XCA7CivkvZPkuK0gPiBrYXJhZGFqdXVcIDsKK+S7suWlvSA+IG5ha2F5b3NoaVwgOwor6aOf5paZID4gc2hva3VyeW91XCA7Civoqr/pq6ogPiBjaG91aGF0c3VcIDsKK+eJqeizqiA+IGJ1c3NoaXRzdVwgOwor5pep6YGTID4gaGF5YW1pY2hpXCA7CivmlrDpm6ogPiBzaGluc2V0c3VcIDsKK+eJh+mBkyA+IGthdGFtaWNoaVwgOwor54m56KitID4gdG9rdXNldHN1XCA7Civku4/lraYgPiBidXRzdWdha3VcIDsKK+mcsumcnCA+IHRzdXl1amltb1wgOwor5pyt5p2fID4gc2F0c3V0YWJhXCA7CivlpI/ps6UgPiBuYXRzdWRvcmlcIDsKK+izquWVjyA+IHNoaXRzdW1vblwgOwor54us56uLID4gZG9rdXJpdHN1XCA7CivmnIjmrKEgPiB0c3VraW5hbWlcIDsKK+isrOiqrCA+IGJ5dXVzZXRzdVwgOwor5a2m5Y2SID4gZ2FrdXNvdHN1XCA7Civmm7LmtYEgPiBreW9rdXJ5dXVcIDsKK+mjn+aFviA+IHNob2t1eW9rdVwgOwor5LiA54mpID4gaWNoaW1vdHN1XCA7CivlpbTovKkgPiB5YXRzdWJhcmFcIDsKK+WtpuWKmyA+IGdha3VyeW9rdVwgOwor5Lqu5a+fID4gcnlvdXNhdHN1XCA7CivkuK3mrKEgPiBuYWthdHN1Z2lcIDsKK+izquWIuCA+IHNoaWNoaWtlblwgOwor5a2k5YWQID4gbWluYXNoaWdvXCA7Civml6forZggPiBreXV1c2hpa2lcIDsKK+S6uuWmuyA+IGhpdG9kenVtYVwgOwor5paw6YeIID4gc2hpbnNoYWt1XCA7Civml6Xoq74gPiBuaWNoaWRha3VcIDsKK+aXp+iqrCA+IGt5dXVzZXRzdVwgOwor6IKh5LiLID4gbWF0YXNoaXRhXCA7Civnj43lrqIgPiBjaGlua3lha3VcIDsKK+WklumdoiA+IHNvdG9kenVyYVwgOwor5pil6ImyID4gc2h1bnNob2t1XCA7Civnv4zmnIggPiB5b2t1Z2V0c3VcIDsKK+iBtOWKmyA+IGNob3VyeW9rdVwgOwor5Lqs5aWzID4ga3lvdW9uJyduYVwgOwor5Liy5p+/ID4ga3VzaGlnYWtpXCA7CivkuZ3mipggPiBreXV1c2V0c3VcIDsKK+e/jOaXpSA+IHlva3VqaXRzdVwgOwor5paf6YWMID4gc2hpbnNoYWt1XCA7CivkuKHmpbUgPiByeW91a3lva3VcIDsKK+S7j+WQjSA+IGJ1dHN1bXlvdVwgOwor54m56ImyID4gdG9rdXNob2t1XCA7CivkuqHlpLEgPiBib3VzaGl0c3VcIDsKK+mjn+WuoiA+IHNob2treWFrdVwgOwor54i26KaqID4gY2hpY2hpb3lhXCA7Civku67kvY8gPiBrYXJpenVtYWlcIDsKK+S6huWvnyA+IHJ5b3VzYXRzdVwgOwor6Zuq6Z20ID4geXVraWd1dHN1XCA7Civnj77lh7ogPiBnZW5zaHV0c3VcIDsKK+S7j+WKmyA+IGJ1dHN1cmlraVwgOwor6Kq/6YGUID4gY2hvdXRhdHN1XCA7CivkuIvmp5ggPiBzaGltb3phbWFcIDsKK+e5sOi2iiA+IGt1cmlrb3NoaVwgOwor54mp6IWwID4gbW9ub2dvc2hpXCA7CivkuInmpI8gPiBtaXRzdW1hdGFcIDsKK+S4oeaXpSA+IHJ5b3VqaXRzdVwgOwor5p2+5Y6fID4gbWF0c3ViYXJhXCA7Civos4PlgJ8gPiBjaGluc2hha3VcIDsKK+eGn+mjnyA+IGp1a3VzaG9rdVwgOwor5paw6KqsID4gc2hpbnNldHN1XCA7Civku5jkurogPiB0c3VrZWJpdG9cIDsKK+aWsOiosyA+IHNoaW4nJ3lha3VcIDsKK+aWsOiorSA+IHNoaW5zZXRzdVwgOwor546J5bCGID4gZ3lva3VzaG91XCA7CivmnIjlvbEgPiB0c3VraWthZ2VcIDsKK+aciOW9oiA+IHRzdWtpZ2F0YVwgOwor5LiD5pucID4gc2hpY2hpeW91XCA7CivkuIDmnIggPiBoaXRvdHN1a2lcIDsKK+WkqeizqiA+IHRlbnNoaXRzdVwgOwor5LiL5pW3ID4gc2hpdGFqaWtpXCA7CivkuIPmmJ8gPiBzaGljaGlzZWlcIDsKK+aYn+epuiA+IGhvc2hpem9yYVwgOwor54m5562GID4gdG9rdWhpdHN1XCA7CivkuIDml6UgPiB0c3VpdGFjaGlcIDsKK+S6uuS8nSA+IGhpdG9kenV0ZVwgOwor54uQ54GrID4ga2l0c3VuZWJpXCA7CivniIboo4IgPiBiYWt1cmV0c3VcIDsKK+eJueeriyA+IHRva3VyaXRzdVwgOwor5Lq65LuYID4gaGl0b2R6dWtpXCA7CivpnZLokI0gPiBhb3VraWt1c2FcIDsKK+WkseiogCA+IHNoaXRzdWdlblwgOwor6Zuq6YGTID4geXVraW1pY2hpXCA7Civpm5HpjLIgPiB6YXRzdXJva3VcIDsKK+Wls+iFuSA+IG9uJyduYWJhcmFcIDsKK+mjn+WNkyA+IHNob2t1dGFrdVwgOwor54ax6YePID4gbmV0c3VyeW91XCA7Civpm6rovrEgPiBzZXRzdWpva3VcIDsKK+aWsOiWrCA+IHNoaW4nJ3lha3VcIDsKK+mgreagqiA+IGF0YW1ha2FidVwgOwor5aSx6KGAID4gc2hpa2tldHN1XCA7CivmmqbmnIggPiByZWtpZ2V0c3VcIDsKK+WkieizqiA+IGhlbnNoaXRzdVwgOwor6aOf5Ye6ID4gaGFtaWRhc2hpXCA7CivlpJzoqbEgPiB5b2JhbmFzaGlcIDsKK+S4gOaKuSA+IGljaGltYXRzdVwgOwor5aSp6KKLID4gdGVuYnVrdXJvXCA7CivpnbTntJAgPiBrdXRzdWhpbW9cIDsKK+aapuaXpSA+IHJla2lqaXRzdVwgOwor6Kmz6L+wID4gc2hvdWp1dHN1XCA7Civpo5/lgrcgPiBzaG9rdXNob3VcIDsKK+eJueeZuiA+IHRva3VoYXRzdVwgOwor6Z2056+mID4ga3V0c3ViZXJhXCA7CivkuIvlvbkgPiBzaGl0YXlha3VcIDsKK+S4oeWyuCA+IHJ5b3VnaXNoaVwgOwor5puy5a2mID4ga3lva3VnYWt1XCA7Civnhp/pgZQgPiBqdWt1dGF0c3VcIDsKK+mdtOeuhiA+IGt1dHN1YmVyYVwgOwor5LiR5bm0ID4gdXNoaWRvc2hpXCA7CivpnLLojYkgPiB0c3V5dWt1c2FcIDsKK+iplemHiCA+IGh5b3VzaGFrdVwgOwor5LiA5b6LID4gaWNoaXJpdHN1XCA7CivniannmYIgPiBidXRzdXJ5b3VcIDsKK+miqOWPoyA+IGthemFndWNoaVwgOwor5aSP6J2JID4gbmF0c3V6ZW1pXCA7CivpnJ7ojYkgPiBrYXN1bWlzb3VcIDsKK+eJp+eVnCA+IGJva3VjaGlrdVwgOwor6Kq/6ImyID4gY2hvdXNob2t1XCA7CivnhLzppIUgPiB5YWtpbW9jaGlcIDsKK+acq+WDmiA+IGJhdHN1cnlvdVwgOwor6Ki76YeIID4gY2h1dXNoYWt1XCA7CivoqbPoqqwgPiBzaG91c2V0c3VcIDsKK+aWsOe3kSA+IHNoaW5yeW9rdVwgOwor5aSx6ISaID4gc2hpa2t5YWt1XCA7CivlpLHogbcgPiBzaGlzc2hva3VcIDsKK+aWsOe0hCA+IHNoaW4nJ3lha3VcIDsKK+Wkj+iPiiA+IG5hdHN1Z2lrdVwgOwor57ie6JuHID4gc2hpbWFoZWJpXCA7CivkuK3lk7IgPiBjaHV1dGV0c3VcIDsKK+ios+i/sCA+IHlha3VqdXRzdVwgOwor5paw56+JID4gc2hpbmNoaWt1XCA7CivlpI/ojYkgPiBuYXRzdWd1c2FcIDsKK+eOieS4siA+IHRhbWFndXNoaVwgOwor5Lit5Y+jID4gbmFrYWd1Y2hpXCA7CivlpbPnmZYgPiBvbicnbmFndXNlXCA7Civlp6XmoZwgPiB1YmF6YWt1cmFcIDsKK+S4reWNkiA+IGNodXVzb3RzdVwgOwor5LiL5Z2CID4gc2hpbW9zYWthXCA7CivpoqjkuIsgPiBrYXphc2hpbW9cIDsKK+mcnue2siA+IGthc3VtaWFtaVwgOwor5Lih5Y+jID4gcnlvdWd1Y2hpXCA7CivniKrnmq4gPiB0c3VtYWthd2FcIDsKK+eIhueruSA+IGJha3VjaGlrdVwgOwor5pel54usID4gbmljaGlkb2t1XCA7Civml6fniakgPiBreXV1YnV0c3VcIDsKK+eNo+WBjyA+IGtlbW9ub2hlblwgOwor6Zyy56iLID4gdHN1eXVob2RvXCA7Civoqr/nr4AgPiBjaG91c2V0c3VcIDsKK+mgreWtlyA+IGthc2hpcmFqaVwgOwor542E5Y2SID4gZ29rdXNvdHN1XCA7Civntabpo58gPiBreXV1c2hva3VcIDsKK+S4lOWPiCA+IGthdHN1bWF0YVwgOwor5pyI5LimID4gdHN1a2luYW1pXCA7CivnianmtYEgPiBidXRzdXJ5dXVcIDsKK+S4oeWHuCA+IHJ5b3V0b3RzdVwgOwor6Zmz6L+wID4gY2hpbmp1dHN1XCA7CivmlrDnnYAgPiBzaGluY2hha3VcIDsKK+Wls+eJqSA+IG9uJyduYW1vbm9cIDsKK+S4jeWNsCA+IGZ1amlydXNoaVwgOwor5pu45LuYID4ga2FraXRzdWtlXCA7CivoqbDojYkgPiB0c3VtZWt1c2FcIDsKK+S4reS9jSA+IGNodXVndXJhaVwgOwor54aK6JyCID4ga3VtYWJhY2hpXCA7CivmlZnogbcgPiBreW91c2hva3VcIDsKK+WkseekvCA+IHNoaXRzdXJlaVwgOwor5LiD5Y6YID4gc2hpY2hpcmluXCA7CivnianmrLIgPiBidXRzdXlva3VcIDsKK+S4gOWPoyA+IGhpdG9rdWNoaVwgOwor5pOC6YmiID4gc3VyaWJhY2hpXCA7CivniIbnmbogPiBiYWt1aGF0c3VcIDsKK+aYqOaXpSA+IHNha3VqaXRzdVwgOwor57iu57SEID4gc2h1a3V5YWt1XCA7CivlpLHnnYAgPiBzaGl0Y2hha3VcIDsKK+S4gOWIpSA+IGljaGliZXRzdVwgOwor5LiA5YiXID4gaWNoaXJldHN1XCA7CivkuIvlgbQgPiBzaGl0YWdhd2FcIDsKK+mbgOiJsiA+IHN1enVtZWlyb1wgOwor5LiA5YSyID4gaGl0b21vdWtlXCA7Civml4/mu4UgPiB6b2t1bWV0c3VcIDsKK+S4i+S9nCA+IHNoaXRhc2FrdVwgOwor6Kq/55WlID4gY2hvdXJ5YWt1XCA7CivmmJTml6UgPiBzZWtpaml0c3VcIDsKK+aWreeGsSA+IGRhbicnbmV0c3VcIDsKK+aYjuaXpSA+IG15b3VuaWNoaVwgOwor5LiL5LiLID4gc2hpbW9qaW1vXCA7Civmlbfnn7MgPiBzaGlraWlzaGlcIDsKK+eJueaSriA+IHRva3VzYXRzdVwgOwor6Kaq6ZayID4gc2hpbicnZXRzdVwgOwor6aGY5LqLID4gbmVnYWlnb3RvXCA7CivpoLvlh7ogPiBoaW5zaHV0c3VcIDsKK+e2suiiiyA+IGFtaWJ1a3Vyb1wgOwor5paZ546HID4gcnlvdXJpdHN1XCA7Civop5LpgJAgPiBrYWt1Y2hpa3VcIDsKK+S4g+S4iSA+IHNoaWNoaXNhblwgOwor57Sw6Z2iID4gaG9zb29tb3RlXCA7Civpm4bntZAgPiBzaHV1a2V0c3VcIDsKK+ilv+miqCA+IG5pc2hpa2F6ZVwgOwor5aSP55epID4gbmF0c3V5YXNlXCA7CivnianmjIcgPiBtb25vc2FzaGlcIDsKK+aYn+W9sSA+IGhvc2hpa2FnZVwgOwor54us5YqbID4gZG9rdXJ5b2t1XCA7Civop6boqLogPiBzaG9rdXNoaW5cIDsKK+WjuueavyA+IHRzdWJvemFyYVwgOwor572q5Lq6ID4gdHN1bWliaXRvXCA7Civnianmhb4gPiBidXRzdXlva3VcIDsKK+aVt+eJqSA+IHNoaWtpbW9ub1wgOwor6Zuq55S3ID4geXVraW90b2tvXCA7CivlpI/niakgPiBuYXRzdW1vbm9cIDsKK+e1seioiCA+IGJhcmF0c3VraVwgOwor5aWz5pa5ID4gb24nJ25hZ2F0YVwgOwor5paw5qmLID4gc2hpbmJhc2hpXCA7CivnhrHnl4UgPiBuZXRzdWJ5b3VcIDsKK+mbu+eGsSA+IGRlbicnbmV0c3VcIDsKK+aYn+WxkSA+IGhvc2hpa3V6dVwgOwor6ZqU57W2ID4ga2FrdXpldHN1XCA7Civni6zku48gPiBkb2t1ZnV0c3VcIDsKK+Wmu+WupCA+IHNhaXNoaXRzdVwgOwor54mp5bmyID4gbW9ub2hvc2hpXCA7CivntLDpgZMgPiBob3NvbWljaGlcIDsKK+ezp+mjnyA+IHJ5b3VzaG9rdVwgOwor54mp5beuID4gbW9ub3Nhc2hpXCA7CivnhrHnkIMgPiBuZXRzdWt5dXVcIDsKK+e4nueJqSA+IHNoaW1hbW9ub1wgOwor5paw5p6VID4gbmlpbWFrdXJhXCA7CivntabooYAgPiBreXV1a2V0c3VcIDsKK+aWsOacrSA+IHNoaW5zYXRzdVwgOwor5paw5pyIID4gc2hpbmdldHN1XCA7CivmlrDmm7IgPiBzaGlua3lva3VcIDsKK+aXp+W8jyA+IGt5dXVzaGlraVwgOwor6Kmw54mpID4gdHN1bWVtb25vXCA7Civng4/osp0gPiBrYXJhc3VnYWlcIDsKK+mdtOW6lSA+IGt1dHN1em9rb1wgOwor5pen5bm0ID4gZnVydXRvc2hpXCA7CivmmJ/lnosgPiBob3NoaWdhdGFcIDsKK+mVt+mrqiA+IGNob3VoYXRzdVwgOwor5aWz5b2iID4gb24nJ25hZ2F0YVwgOwor5aSx5pybID4gc2hpdHN1Ym91XCA7CivnhLzntZAgPiBzaG91a2V0c3VcIDsKK+Whtee0mSA+IGNoaXJpZ2FtaVwgOwor5aSx5piOID4gc2hpdHN1bWVpXCA7CivntJnos6ogPiBzaGlzaGl0c3VcIDsKK+mbquaykyA+IHl1a2lndXRzdVwgOwor5paH5pyIID4gZnVtaWR6dWtpXCA7Civngq3os6ogPiB0YW5zaGl0c3VcIDsKK+iqheauuiA+IGNodXVzYXRzdVwgOwor5aSn5piUID4gb29tdWthc2hpXCA7CivplbfpnbQgPiBuYWdhZ3V0c3VcIDsKK+ezuOi7iiA+IGl0b2d1cnVtYVwgOwor5aSc5pmSID4geW96YXJhc2hpXCA7CivlpI/mnI0gPiBuYXRzdWZ1a3VcIDsKK+mdtOWiqCA+IGt1dHN1enVtaVwgOwor6KO46aasID4gaGFkYWthdW1hXCA7CivlprnliIYgPiBpbW91dG9idW5cIDsKK+aXpeWiqCA+IG5pY2hpYm9rdVwgOwor5paw5byPID4gc2hpbnNoaWtpXCA7CivlpI/mmYIgPiBuYXRzdWRva2lcIDsKK+eCuOijgiA+IHNha3VyZXRzdVwgOwor54m55YilID4gdG9rdWJldHN1XCA7CivopIfpm5EgPiBmdWt1emF0c3VcIDsKK+mdtOWeiyA+IGt1dHN1Z2F0YVwgOwor57KS6aOfID4gcnl1dXNob2t1XCA7CivntZDohpwgPiBrZXRzdW1ha3VcIDsKK+e4nuafhCA+IHNoaW1hZ2FyYVwgOwor5aSx5oGLID4gc2hpdHN1cmVuXCA7CivlpLHlv7UgPiBzaGl0c3VuZW5cIDsKK+mbqOabhyA+IGFtYWd1bW9yaVwgOwor6KmV5rG6ID4gaHlvdWtldHN1XCA7Civoqr/lvosgPiBjaG91cml0c3VcIDsKK+Wls+WdgiA+IG9uJyduYXpha2FcIDsKK+e2mueZuiA+IHpva3VoYXRzdVwgOwor6ZuR5qCqID4gemF0c3VrYWJ1XCA7Civoq5Llr58gPiByeW91c2F0c3VcIDsKK+eJm+WIuiA+IGd5dXVzYXNoaVwgOwor5Z+36JGXID4gc2h1dWNoYWt1XCA7Civml6nlj6MgPiBoYXlha3VjaGlcIDsKK+ezluizqiA+IHRvdXNoaXRzdVwgOwor54mH5Y+jID4ga2F0YWt1Y2hpXCA7CivntLDohbAgPiBob3NvZ29zaGlcIDsKK+mbhuacrSA+IHNodXVzYXRzdVwgOwor5pel5Ye6ID4gbmlzc2h1dHN1XCA7CivntYLntZAgPiBzaHV1a2V0c3VcIDsKK+WdqumHjyA+IHRzdWJvcnlvdVwgOwor5aW05YenID4geWFra29kYWtvXCA7CivopqrnrYYgPiBzaGlucGl0c3VcIDsKK+e2v+ayuSA+IHdhdGFhYnVyYVwgOwor54S254S2ID4gc2hpa2FqaWthXCA7CivnhKbnhrEgPiBzaG91bmV0c3VcIDsKK+Wkj+WxsSA+IG5hdHN1eWFtYVwgOwor54iq5YiHID4gdHN1bWVraXJpXCA7CivmlL/miYAgPiBtYW5kb2tvcm9cIDsKK+aVmeW8jyA+IGt5b3VzaGlraVwgOwor54iq5YWIID4gdHN1bWFzYWtpXCA7CivloanmvKwgPiBzaGlvZHp1a2VcIDsKK+e4ruWwjyA+IHNodWt1c2hvdVwgOwor5LiL44CFID4gc2hpbW9qaW1vXCA7CivlpZTlh7ogPiBob25zaHV0c3VcIDsKK+malOaciCA+IGtha3VnZXRzdVwgOwor5pKD55m6ID4gZ2VraWhhdHN1XCA7Civln7fnrYYgPiBzaGlwcGl0c3VcIDsKK+malOaXpSA+IGtha3VqaXRzdVwgOwor5paw5YWlID4gc2hpbicnbnl1dVwgOwor5pal5YqbID4gc2VraXJ5b2t1XCA7CivntYLnmbogPiBzaHV1aGF0c3VcIDsKK+WkseWRvSA+IHNoaXRzdW1laVwgOwor5Z2C6YGTID4gc2FrYW1pY2hpXCA7CivlpLHlkI0gPiBzaGl0c3VtZWlcIDsKK+aSsua7hSA+IGJva3VtZXRzdVwgOwor6Kmz5a+fID4gc2hvdXNhdHN1XCA7Civpm6rlpbMgPiB5dWtpb24nJ25hXCA7CivoqbPlr4YgPiBzaG91bWl0c3VcIDsKK+mbkeWtpiA+IHphdHN1Z2FrdVwgOwor6Ziy5rm/ID4gYm91c2hpdHN1XCA7CivlnYfos6ogPiBraW5zaGl0c3VcIDsKK+Wft+edgCA+IHNodXVjaGFrdVwgOwor54OP55OcID4ga2FyYXN1dXJpXCA7CivmkrLmrrogPiBib2t1c2F0c3VcIDsKK+aRmOeZuiA+IHRla2loYXRzdVwgOwor5aSP5ZCRID4gbmF0c3VtdWtpXCA7CivmjajpiaIgPiBzdXRlYmFjaGlcIDsKK+WcsOizqiA+IGNoaXNoaXRzdVwgOwor5aCF54mpID4ga2F0YWJ1dHN1XCA7Civlm73piYQgPiBrb2t1dGV0c3VcIDsKK+inkuaovSA+IHRzdW5vZGFydVwgOwor5pKD5ruFID4gZ2VraW1ldHN1XCA7Civns6fnp6MgPiByeW91bWF0c3VcIDsKK+mao+WupCA+IHJpbnNoaXRzdVwgOwor6Ki65a+fID4gc2hpbnNhdHN1XCA7CivlpJbku5ggPiBzb3RvZHp1a2VcIDsKK+Wkj+S9nCA+IG5hdHN1c2FrdVwgOwor54Wn5bC6ID4gc2hvdXNoYWt1XCA7Civpm6rlhY4gPiB5dWtpdXNhZ2lcIDsKK+e1guaxuiA+IHNodXVrZXRzdVwgOwor6KWy54i1ID4gc2h1dXNoYWt1XCA7Civopobmu4UgPiBmdWt1bWV0c3VcIDsKK+WiqOWjtyA+IHN1bWl0c3Vib1wgOwor6KqF5LyQID4gY2h1dWJhdHN1XCA7CivmlL7lh7ogPiBob3VzaHV0c3VcIDsKK+e1gualtSA+IHNodXVreW9rdVwgOwor6KO457eaID4gaGFkYWthc2VuXCA7CivopobmsqEgPiBmdWt1Ym90c3VcIDsKK+eFqeWeiyA+IHVydXNhZ2F0YVwgOwor6KmU5YuFID4gc2hvdWNob2t1XCA7CivmlK/lh7ogPiBzaGlzaHV0c3VcIDsKK+e2ouWvhiA+IGNodXVtaXRzdVwgOwor57WE5puyID4ga3VtaWt5b2t1XCA7CivntYLmnKsgPiBzaHV1bWF0c3VcIDsKK+e1guabsiA+IHNodXVreW9rdVwgOwor57aZ5a6kID4ga2Vpc2hpdHN1XCA7Civlm73ooaggPiBrdW5pb21vdGVcIDsKK+e1guaXpSA+IHNodXVqaXRzdVwgOwor57eg5YiHID4gc2hpbWVraXJpXCA7CivlnJ/oibIgPiB0c3VjaGlpcm9cIDsKK+aOpee2miA+IHNldHN1em9rdVwgOwor57Gz57KSID4ga29tZXRzdWJ1XCA7Civns5/mvKwgPiBrYXN1ZHp1a2VcIDsKK+eym+eZvSA+IHNodWt1aGFrdVwgOwor6KGX6KeSID4gbWFjaGlrYWRvXCA7CivmkqvlrZAgPiBuYWRlc2hpa29cIDsKK+ezoOayuSA+IG51a2FhYnVyYVwgOwor6ZW354mpID4gY2hvdWJ1dHN1XCA7CivpmbDlj6MgPiBrYWdlZ3VjaGlcIDsKK+imquW/gyA+IG95YWdva29yb1wgOwor6KGG6KqsID4gc2h1dXNldHN1XCA7CivntbblppkgPiB6ZXRzdW15b3VcIDsKK+ezuOahnCA+IGl0b3pha3VyYVwgOwor6Zmz5YiXID4gY2hpbnJldHN1XCA7Civns7jmn7MgPiBpdG95YW5hZ2lcIDsKK+Wft+aLlyA+IHNoaXRzdXlvdVwgOwor54S85Y20ID4gc2hvdWt5YWt1XCA7Civmv4DogbcgPiBnZWtpc2hva3VcIDsKK+imquWvhiA+IHNoaW5taXRzdVwgOwor57WC5bGAID4gc2h1dWt5b2t1XCA7CivnrZLpn7MgPiB0c3V0c3VvdG9cIDsKK+e0i+aJgCA+IG1vbmRva29yb1wgOwor6KKL57ayID4gZnVrdXJvYW1pXCA7CivoqIDkvJ0gPiBrb3RvZHp1dGVcIDsKK+eBq+afsSA+IGhpYmFzaGlyYVwgOwor6Zal5pePID4gYmF0c3V6b2t1XCA7CivopLbmm7IgPiBzaHV1a3lva3VcIDsKK+inkuWPiSA+IHRzdW5vbWF0YVwgOwor5oqc6YyoID4gYmF0c3VieW91XCA7Civlm73nq4sgPiBrb2t1cml0c3VcIDsKK+a/gOeqgSA+IGdla2l0b3RzdVwgOwor6ZaA5p2+ID4ga2Fkb21hdHN1XCA7CivmipzpgZMgPiBudWtlbWljaGlcIDsKK+mVt+aciCA+IG5hZ2F0c3VraVwgOwor6KGA6IKJID4ga2V0c3VuaWt1XCA7CivntJvlpLEgPiBmdW5zaGl0c3VcIDsKK+aMr+eymyA+IHNoaW5zaHVrdVwgOwor5Zyf54miID4gdHN1Y2hpcm91XCA7Civmv4DnmbogPiBnZWtpaGF0c3VcIDsKK+exs+ayuSA+IGtvbWVhYnVyYVwgOwor562L6YGTID4gc3VqaW1pY2hpXCA7Civnr7Pnr6UgPiBoaWNoaXJpa2lcIDsKK+ihneeqgSA+IHNob3V0b3RzdVwgOwor6Kaq5YiHID4gc2hpbnNldHN1XCA7CivnsbPmq4MgPiBrb21lYml0c3VcIDsKK+ernOmqqCA+IHJ5dXVrb3RzdVwgOwor57WQ5LqGID4ga2V0c3VyeW91XCA7CivmiZjpiaIgPiB0YWt1aGF0c3VcIDsKK+mWj+W5tCA+IHVydXVkb3NoaVwgOwor562J6LOqID4gdG91c2hpdHN1XCA7CivlmLHoqJcgPiBzaG9rdXRha3VcIDsKK+evgOe0hCA+IHNldHN1eWFrdVwgOwor5r+A54OIID4gZ2VraXJldHN1XCA7Civon4fom5kgPiBoaWtpZ2FlcnVcIDsKK+icgOm7jSA+IG1vcm9rb3NoaVwgOwor6KGA55y8ID4gY2hpbWFuYWtvXCA7CivnrrjnrrEgPiBoYXNoaWJha29cIDsKK+ikh+W8jyA+IGZ1a3VzaGlraVwgOwor6KW/5YG0ID4gbmlzaGlnYXdhXCA7CivmkI3lpLEgPiBzb25zaGl0c3VcIDsKK+mXluWFpSA+IGNoaW4nJ255dXVcIDsKK+icgumzpSA+IGhhY2hpZG9yaVwgOwor54K65L2TID4gdGVpdGFyYWt1XCA7CivmjJHnmbogPiBjaG91aGF0c3VcIDsKK+a6tuizqiA+IHlvdXNoaXRzdVwgOwor54Gw5ZyfID4gaGFpdHN1Y2hpXCA7Civoo4/miYkgPiB1cmF0b2JpcmFcIDsKK+aQrOWHuiA+IGhhbnNodXRzdVwgOwor57Kb5a2mID4gc2h1a3VnYWt1XCA7Civplr7lgKQgPiBzaGlraWljaGlcIDsKK+ijj+aDhSA+IHVyYW5hc2FrZVwgOwor6J+H6IKhID4ga2FlcnVtYXRhXCA7CivooYDnhZkgPiBjaGlrZW11cmlcIDsKK+ihqOaxuiA+IGh5b3VrZXRzdVwgOwor5ruR6JC9ID4ga2F0c3VyYWt1XCA7CivmjIHniakgPiBtb2NoaW1vbm9cIDsKK+mWgOWPoyA+IGthZG9ndWNoaVwgOwor5r2c54axID4gc2VuJyduZXRzdVwgOwor5oyf5q66ID4ga3lvdXNhdHN1XCA7CivooajmnK0gPiBoeW91c2F0c3VcIDsKK+ihqOabuCA+IG9tb3RlZ2FraVwgOwor57OK5LujID4gbm9yaXNoaXJvXCA7CivnqbTpmpkgPiBrZXRzdWdla2lcIDsKK+mMr+mbkSA+IHNha3V6YXRzdVwgOwor5Zyn5a+GID4gYXRzdW1pdHN1XCA7CivlnKjlrqQgPiB6YWlzaGl0c3VcIDsKK+a8rOeJqSA+IHRzdWtlbW9ub1wgOwor6Jyc6LGGID4gbWl0c3VtYW1lXCA7CivmvILnnYAgPiBoeW91Y2hha3VcIDsKK+aPkOWHuiA+IHRlaXNodXRzdVwgOwor5rex6Z20ID4gZnVrYWd1dHN1XCA7Civnr4DmrLIgPiBzZXRzdXlva3VcIDsKK+iii+W4ryA+IGZ1a3Vyb29iaVwgOwor5Zix55uuID4gc2hva3Vtb2t1XCA7CivnqYDpo58gPiBrb2t1c2hva3VcIDsKK+epjembqiA+IHNla2lzZXRzdVwgOwor56+A5qaRID4gZnVzaGlrdXJlXCA7CivooYDml48gPiBrZXRzdXpva3VcIDsKK+etlueVpSA+IHNha3VyeWFrdVwgOwor6Y286KGTID4gc2hpbmp1dHN1XCA7CivmjJHmkqUgPiBjaG91aGF0c3VcIDsKK+aLk+auliA+IHRha3VzaG9rdVwgOwor6JuZ6LezID4ga2FlcnV0b2JpXCA7CivmjpLlh7ogPiBoYWlzaHV0c3VcIDsKK+Wcp+WKmyA+IGF0c3VyeW9rdVwgOwor56u5566SID4gdGFrZWJvdWtpXCA7CivpvLvpnaIgPiBoYW5hZHp1cmFcIDsKK+erv+enpCA+IHNhb2Jha2FyaVwgOwor6KKW5Y+jID4gc29kZWd1Y2hpXCA7Civmjbvlh7ogPiBuZW5zaHV0c3VcIDsKK+mLs+mJhCA+IGNodXV0ZXRzdVwgOwor56ug56+AID4gc2hvdXNldHN1XCA7CivllZPon4QgPiBrZWljaGl0c3VcIDsKK+a2membqCA+IG5hbWlkYWFtZVwgOwor56+k5a6fID4gdG9rdWppdHN1XCA7Civpjpbns7ggPiBrdXNhcmlpdG9cIDsKK+emv+m3siA+IGhhZ2V3YXNoaVwgOwor6KGA5bC/ID4ga2V0c3VueW91XCA7Civmh7LnvbAgPiBjaG91YmF0c3VcIDsKK+WbveWKmyA+IGtva3VyeW9rdVwgOwor5Zu95YilID4ga3VuaWJldHN1XCA7Civmir3mlpcgPiBoaWtpZGFzaGlcIDsKK+a1uOmjnyA+IHNoaW5zaG9rdVwgOwor56+J5bGxID4gdHN1a2l5YW1hXCA7Civoopbku5ggPiBzb2RldHN1a2VcIDsKK+aJvOauuiA+IHlha3VzYXRzdVwgOwor6KGA5aGXID4gY2hpbWlkb3JvXCA7Civpurnpu7QgPiBrb3VqaWthYmlcIDsKK+a2memHkSA+IG5hbWlkYWtpblwgOwor6KGA5ZynID4ga2V0c3VhdHN1XCA7Civmva7looMgPiBzaGlvemFrYWlcIDsKK+eon+izqiA+IGhpbnNoaXRzdVwgOwor5rm/55SwID4gc2hpdHN1ZGVuXCA7Civpu5Lpq6ogPiBrb2t1aGF0c3VcIDsKK+aJk+a2iCA+IHVjaGlrZXNoaVwgOwor6KGo5YG0ID4gb21vdGVnYXdhXCA7Civom5nogqEgPiBrYWVydW1hdGFcIDsKK+mQmOaSniA+IGthbmV0c3VraVwgOwor6KGM5YiXID4gZ3lvdXJldHN1XCA7CivnrJHmrrogPiBzaG91c2F0c3VcIDsKK+aJjeanjCA+IHNhaWR6dWNoaVwgOwor5rm/5r2kID4gc2hpdHN1anVuXCA7CivooZfkuKYgPiBtYWNoaW5hbWlcIDsKK+m8u+ihnSA+IGhhbmF0c3VraVwgOwor5riL57SZID4gc2hpYnVnYW1pXCA7Civlk4Hos6ogPiBoaW5zaGl0c3VcIDsKK+m8oOismyA+IG5lenVtaWtvdVwgOwor6Y+h5p2/ID4ga2FnYW1paXRhXCA7CivnqbrnqbQgPiBrYXJha2V0c3VcIDsKK+m6pumjryA+IG11Z2ltZXNoaVwgOwor6Yu86ImyID4gaGFnYW5laXJvXCA7CivmiZXmmoEgPiBmdXRzdWd5b3VcIDsKK+iZq+ieuyA+IG11c2hpa2VyYVwgOwor56ul5q2MID4gd2FyYWJldXRhXCA7CivmiZPmk7IgPiBjaG91Y2hha3VcIDsKK+a0u+mHjyA+IGthdHN1cnlvdVwgOwor5oug5Ye6ID4ga3lvc2h1dHN1XCA7CivlmbTlh7ogPiBmdW5zaHV0c3VcIDsKK+a4i+eariA+IHNoaWJ1a2F3YVwgOwor6JeB6Z20ID4gd2FyYWd1dHN1XCA7Civnrpflh7ogPiBzYW5zaHV0c3VcIDsKK+mOluaoiyA+IGt1c2FyaXRvaVwgOwor5rS76Lu4ID4ga2F0c3VqaWt1XCA7Civmub/mnb8gPiBzaGl0c3ViYW5cIDsKK+a1ruiiiyA+IHVraWJ1a3Vyb1wgOwor5rW46J2VID4gc2hpbnNob2t1XCA7CivllYbnlaUgPiBzaG91cnlha3VcIDsKK+a0u+i6jSA+IGthdHN1eWFrdVwgOwor6Ymx6LOqID4ga291c2hpdHN1XCA7CivomavohbkgPiBtdXNoaWJhcmFcIDsKK+m8oOiJsiA+IG5lenVtaWlyb1wgOwor5rOl6Z20ID4gZG9yb2d1dHN1XCA7CivmtpzogbcgPiB0b2t1c2hva3VcIDsKK+ethuWiqCA+IGhpdHN1Ym9rdVwgOwor6Yed6bC7ID4gaGFyaXVuYWdpXCA7CivpvLvntrEgPiBoYW5hZHp1bmFcIDsKK+ethuWhmiA+IGZ1ZGVkenVrYVwgOwor5rud5aO6ID4gdGFraXRzdWJvXCA7Civmu53lo7cgPiB0YWtpdHN1Ym9cIDsKK+WRiumBlCA+IGtva3V0YXRzdVwgOwor5ryP5Ye6ID4gcm91c2h1dHN1XCA7CivnrYblnKcgPiBoaXRzdWF0c3VcIDsKK+eqrualtSA+IGt5dXVreW9rdVwgOwor6YeR6a+xID4ga2luc2hhY2hpXCA7CivnpoDos6ogPiBoaW5zaGl0c3VcIDsKK+WPo+mrrSA+IGt1Y2hpaGlnZVwgOwor6Jmr57GgID4gbXVzaGlrYWdvXCA7CivmtYHooYAgPiByeXV1a2V0c3VcIDsKK+aGkeeJqSA+IHRzdWtpbW9ub1wgOwor56mN546HID4gc2VraXJpdHN1XCA7CivpvLvnqoEgPiBoYW5hdHN1a2lcIDsKK+mHnOmjryA+IGthbWFtZXNoaVwgOwor5rex54iqID4gZnVrYWR6dW1lXCA7Civnq7nluJsgPiBjaGlrdWhha3VcIDsKK+eni+iJsiA+IHNodXVzaG9rdVwgOwor5rOh6YqtID4gYWJ1a3V6ZW5pXCA7Civms6jph4ggPiBjaHV1c2hha3VcIDsKK+aEgeiJsiA+IHNodXVzaG9rdVwgOwor5oKq6LOqID4gYWt1c2hpdHN1XCA7Civmt4vnlr4gPiByaW5zaGl0c3VcIDsKK+m6l+izqiA+IHJlaXNoaXRzdVwgOwor6bq76KKLID4gYXNhYnVrdXJvXCA7Civmu53lj6MgPiB0YWtpZ3VjaGlcIDsKK+m8oOeulyA+IG5lenVtaXphblwgOwor5rm/5byPID4gc2hpc3NoaWtpXCA7CivnqYDniakgPiBrb2t1bW90c3VcIDsKK+azpemBkyA+IGRvcm9taWNoaVwgOwor5Y+k6Z20ID4gZnVydWd1dHN1XCA7CivmsojprLEgPiBjaGluJyd1dHN1XCA7CivlkJvpgZQgPiBraW1pdGFjaGlcIDsKK+m3sum8uyA+IHdhc2hpYmFuYVwgOwor5oqY5LyPID4gc2hha3VidWt1XCA7CivpvKDnqbQgPiBuZXp1bWlhbmFcIDsKK+a7keWPsCA+IHN1YmVyaWRhaVwgOwor56uc5be7ID4gdGF0c3VtYWtpXCA7Civph6PpkJggPiB0c3VyaWdhbmVcIDsKK+m7kuiJsiA+IGtva3VzaG9rdVwgOwor56m25qW1ID4ga3l1dWt5b2t1XCA7CivmuoDlrqQgPiBtYW5zaGl0c3VcIDsKK+m3pum3ryA+IG1pc29zYXphaVwgOwor56uv5aWzID4gaGFzaGl0YW1lXCA7Civph6Pph50gPiB0c3VyaWJhcmlcIDsKK+mHkemOliA+IGtpbmd1c2FyaVwgOwor6Jek6JSTID4gZnVqaWR6dXJ1XCA7CivpiZvoibIgPiBuYW1hcmlpcm9cIDsKK+a4i+afvyA+IHNoaWJ1Z2FraVwgOwor5ZC46KGAID4ga3l1dWtldHN1XCA7Civlj6TpiYQgPiBmdXJ1dGV0c3VcIDsKK+a1t+elniA+IHdhdGF0c3VtaVwgOwor6Yi06JmrID4gc3V6dW11c2hpXCA7CivlkIzos6ogPiBkb3VzaGl0c3VcIDsKK+WPo+mHkSA+IGt1Y2hpZ2FuZVwgOwor56qB5pKDID4gdG90c3VnZWtpXCA7Civpt5PptKMgPiB5YW1hdXp1cmFcIDsKK+m7kue4gSA+IGt1cm9idWNoaVwgOwor6Y6u5ZynID4gY2hpbicnYXRzdVwgOwor5Zaq5aSxID4gc291c2hpdHN1XCA7CivnqK7msrkgPiB0YW5lYWJ1cmFcIDsKK+WUkOargyA+IGthcmFiaXRzdVwgOwor5Y+j6Lu9ID4ga3VjaGlnYXJ1XCA7Civnqq7lsYggPiBreXV1a3V0c3VcIDsKK+m7kueruSA+IGt1cm9jaGlrdVwgOwor5Y+L6YGUID4gdG9tb2RhY2hpXCA7Civlk4HniakgPiBzaGluYW1vbm9cIDsKK+erueWFiSA+IHRha2VtaXRzdVwgOwor6JeB6IueID4gd2FyYWR6dXRvXCA7Civmub/ljp8gPiBzaGl0c3VnZW5cIDsKK+elnuiJsiA+IHNoaW5zaG9rdVwgOwor5ZSQ5p2+ID4ga2FyYW1hdHN1XCA7CivnpZ7ogbcgPiBzaGluc2hva3VcIDsKK+WPo+iosSA+IGt1Y2hpbW90b1wgOwor6JqK5p+xID4ga2FiYXNoaXJhXCA7Civnq7nkuLIgPiB0YWtlZ3VzaGlcIDsKK+a2iOa7hSA+IHNob3VtZXRzdVwgOwor6Yed6KGTID4gc2hpbmp1dHN1XCA7Civpu5Lnmb0gPiBrb2t1Ynlha3VcIDsKK+elnue9sCA+IHNoaW5iYXRzdVwgOwor5rK56J2JID4gYWJ1cmF6ZW1pXCA7CivmgKfos6ogPiBzZWlzaGl0c3VcIDsKK+WPluiqrCA+IHRvcmlzZXRzdVwgOwor5rC36ZuqID4gaHlvdXNldHN1XCA7Civom7jlo7wgPiB0YWtvdHN1Ym9cIDsKK+ibuOWjtyA+IHRha290c3Vib1wgOwor5rmn5Ye6ID4geW91c2h1dHN1XCA7CivnqbrlrqQgPiBrdXVzaGl0c3VcIDsKK+mMmOW9oiA+IHRzdW11Z2F0YVwgOwor5oap5a6kID4ga2Vpc2hpdHN1XCA7CivmgKXoqK0gPiBreXV1c2V0c3VcIDsKK+mHkeiUkyA+IGthbmVkenVydVwgOwor5raI5qW1ID4gc2hvdWt5b2t1XCA7Civph6PoiLkgPiB0c3VyaWJ1bmVcIDsKK+awt+mHiCA+IGh5b3VzaGFrdVwgOwor6Ymi54mpID4gaGFjaGltb25vXCA7CivmtZrmuKsgPiBzaHVuc2V0c3VcIDsKK+a3keW+syA+IHNodWt1dG9rdVwgOwor56Wd56aPID4gc2h1a3VmdWt1XCA7CivmsqHokL0gPiBib3RzdXJha3VcIDsKK+eqk+WPoyA+IG1hZG9ndWNoaVwgOwor5ZGK55m6ID4ga29rdWhhdHN1XCA7Civlk4Hmn4QgPiBzaGluYWdhcmFcIDsKK+aCqueWviA+IGFrdXNoaXRzdVwgOwor5ZC4552AID4ga3l1dWNoYWt1XCA7CivphYzph48gPiBzaGFrdXJ5b3VcIDsKK+WPo+iEhyA+IGt1Y2hpd2FraVwgOwor56K66KqsID4ga2FrdXNldHN1XCA7CivoloTnt5EgPiB1c3VtaWRvcmlcIDsKK+WTgeaVsCA+IHNoaW5ha2F6dVwgOwor6bm/55quID4gc2hpa2FnYXdhXCA7Civom5nlj4ggPiBrYWVydW1hdGFcIDsKK+m7meauuiA+IG1va3VzYXRzdVwgOwor5oGQ57iuID4ga3lvdXNodWt1XCA7CivompXlrqQgPiBzYW5zaGl0c3VcIDsKK+eqgeWHuiA+IHRvc3NodXRzdVwgOwor6YO96aKoID4gbWl5YWtvZnV1XCA7Civmsrnns58gPiBhYnVyYWthc3VcIDsKK+awtOizqiA+IHN1aXNoaXRzdVwgOwor56qB5YWlID4gdG90c3VueXV1XCA7CivmsrnnspUgPiBhYnVyYWthc3VcIDsKK+eooOWvhiA+IGNob3VtaXRzdVwgOwor6buS5qirID4ga3Vyb2dhc2hpXCA7CivmtLvmrbQgPiBrYXRzdXJla2lcIDsKK+WPo+e0hSA+IGt1Y2hpYmVuaVwgOwor56eL5pelID4gc2h1dWppdHN1XCA7Civlj7Pnq68gPiBtaWdpaGFzaGlcIDsKK+iWrOeTtiA+IGt1c3VyaWJpblwgOwor5ZOy5a2mID4gdGV0c3VnYWt1XCA7CivpiYTmuIsgPiBrYW5hc2hpYnVcIDsKK+WPjue4riA+IHNodXVzaHVrdVwgOwor5b+M6KmeID4gaW1pa290b2JhXCA7Civlj7Dnp6QgPiBkYWliYWthcmlcIDsKK+a1t+aJhyA+IGhvdGF0ZWdhaVwgOwor5b+F6KqtID4gaGl0c3Vkb2t1XCA7CivljZrorZggPiBoYWt1c2hpa2lcIDsKK+m7kuadviA+IGt1cm9tYXRzdVwgOwor44CG5YiHID4gc2hpbWVraXJpXCA7CivljZPorZggPiB0YWt1c2hpa2lcIDsKK+iWrOeJqSA+IHlha3VidXRzdVwgOwor5rex5YiHID4gc2hpbnNldHN1XCA7Civnoazos6ogPiBrb3VzaGl0c3VcIDsKK+awt+idlSA+IGh5b3VzaG9rdVwgOwor5Y2T6KqsID4gdGFrdXNldHN1XCA7Civpu5LmmJ8gPiBrdXJvYm9zaGlcIDsKK+engOaKnCA+IHNodXViYXRzdVwgOwor5b+D6KGAID4gc2hpbmtldHN1XCA7CivmsLTomasgPiBtaXp1bXVzaGlcIDsKK+iUk+iNiSA+IHRzdXJ1a3VzYVwgOwor5by36aOvID4ga293YW1lc2hpXCA7CivnpajmsbogPiBoeW91a2V0c3VcIDsKK+iRm+mkhSA+IGt1enVtb2NoaVwgOwor6baJ6LGGID4gdXp1cmFtYW1lXCA7Civph5Hnm6UgPiBrYW5hZGFyYWlcIDsKK+efr+mjviA+IGt5b3VzaG9rdVwgOwor5Y+j55mWID4ga3VjaGlndXNlXCA7Civnn7PpoK0gPiBpc2hpYXRhbWFcIDsKK+mzpem7kCA+IHRvcmltb2NoaVwgOwor5raZ5aOwID4gbmFtaWRhZ29lXCA7CivokL3pq6ogPiByYWt1aGF0c3VcIDsKK+WLhemhjSA+IGNob2t1Z2FrdVwgOwor5Y216ImyID4gdGFtYWdvaXJvXCA7CivnqLLlhYkgPiBpbmFiaWthcmlcIDsKK+WPjuedgCA+IHNodXVjaGFrdVwgOwor5raI5aSxID4gc291c2hpdHN1XCA7Civmrr/pgZQgPiB0b25vdGFjaGlcIDsKK+axguiBtyA+IGt5dXVzaG9rdVwgOwor6JC96aO+ID4gcmFrdXNob2t1XCA7CivmsojnnYAgPiBjaGluY2hha3VcIDsKK+iWrOauuiA+IHlha3VzYXRzdVwgOwor56Wl5pyIID4gc2hvdXRzdWtpXCA7Civnp4HlrqQgPiBzaGlzaGl0c3VcIDsKK+W9ouizqiA+IGtlaXNoaXRzdVwgOwor5Y+O546HID4gc2h1dXJpdHN1XCA7CivnpZ7mm7IgPiBzaGlua3lva3VcIDsKK+eiuueriyA+IGtha3VyaXRzdVwgOwor5Y2g6ICFID4gdXJhbmFpc2hhXCA7Civlk4Hlk4EgPiBzaGluYWppbmFcIDsKK+awt+e1kCA+IGh5b3VrZXRzdVwgOwor5b+g56+AID4gY2h1dXNldHN1XCA7CivpiaLlt7sgPiBoYWNoaW1ha2lcIDsKK+WShOWutiA+IGhhbmFzaGlrYVwgOwor6Yq35Y20ID4gc2hvdWt5YWt1XCA7CivmtojljbQgPiBzaG91a3lha3VcIDsKK+efjemRoCA+IGtha3VzaGFrdVwgOwor5b6p6IG3ID4gZnVrdXNob2t1XCA7Civmr5LomasgPiBkb2t1bXVzaGlcIDsKK+WNk+e1tiA+IHRha3V6ZXRzdVwgOwor5Y+W5raIID4gdG9yaWtlc2hpXCA7Civlkajlr4YgPiBzaHV1bWl0c3VcIDsKK+WJr+mjnyA+IGZ1a3VzaG9rdVwgOwor6JKf6JK7ID4ga29uJydueWFrdVwgOwor5ZCE5pyIID4ga2FrdXRzdWtpXCA7CivmrrXooosgPiBkYW5idWt1cm9cIDsKK+a1uOWFpSA+IHNoaW4nJ255dXVcIDsKK+WPjuayoSA+IHNodXVib3RzdVwgOwor6YmE5bGRID4gdGV0c3VrdXp1XCA7CivljZPnrYYgPiB0YWt1aGl0c3VcIDsKK+eiuueOhyA+IGtha3VyaXRzdVwgOwor5Y+W5qyhID4gdG9yaXRzdWdpXCA7CivljZPnq4sgPiB0YWt1cml0c3VcIDsKK+elnuW8jyA+IHNoaW5zaGlraVwgOwor5q2j6YGTID4gbWFzYW1pY2hpXCA7CivmsojmsqEgPiBjaGluYm90c3VcIDsKK+avkuiIjCA+IGRva3V6ZXRzdVwgOwor56Oo5rGBID4gdG9naXNoaXJ1XCA7CivlvbnogbcgPiB5YWt1c2hva3VcIDsKK+a0i+WupCA+IHlvdXNoaXRzdVwgOwor56Kn546JID4gaGVraWd5b2t1XCA7Civmra/os6ogPiBzaGlzaGl0c3VcIDsKK+mFt+eGsSA+IGtva3VuZXRzdVwgOwor6JS15rWaID4ga3VyYXphcmFlXCA7CivmgYvmlbUgPiBrb2lnYXRha2lcIDsKK+WPo+aXqSA+IGt1Y2hpYmF5YVwgOwor5rGB54mpID4gc2hpcnVtb25vXCA7Civphbfng4ggPiBrb2t1cmV0c3VcIDsKK+iThOepjSA+IGNoaWt1c2VraVwgOwor5byx6JmrID4geW93YW11c2hpXCA7CivlvrTnmbogPiBjaG91aGF0c3VcIDsKK+W/oOeDiCA+IGNodXVyZXRzdVwgOwor5oOc5YilID4gc2VraWJldHN1XCA7CivmtLvliocgPiBrYXRzdWdla2lcIDsKK+WPsOaJgCA+IGRhaWRva29yb1wgOwor5b6M56iLID4gbm9jaGlob2RvXCA7Civlj43ml6UgPiBoYW4nJ25pY2hpXCA7CivlvJPooZMgPiBreXV1anV0c3VcIDsKK+mBoOi/kSA+IG9jaGlrb2NoaVwgOwor5Yqb6KqsID4gcmlraXNldHN1XCA7CivptKzoibIgPiB1Z3Vpc3Vpcm9cIDsKK+WNmueJqSA+IGhha3VidXRzdVwgOwor5Y2Y54mpID4gaGl0b2Vtb25vXCA7Civmr5LnrYYgPiBkb2t1aGl0c3VcIDsKK+WRkeWPoyA+IG5vbWlndWNoaVwgOwor5ZG95LmeID4gaW5vY2hpZ29pXCA7CivlkIzlrqQgPiBkb3VzaGl0c3VcIDsKK+aBi+W/gyA+IGtvaWdva29yb1wgOwor5oKq5Y+jID4gd2FydWd1Y2hpXCA7CivliJ3pm6ogPiBoYXRzdXl1a2lcIDsKK+W8seiFsCA+IHlvd2Fnb3NoaVwgOwor6YCG6Z6YID4gZ3lha3V6YXlhXCA7CivlubTpoIMgPiB0b3NoaWdvcm9cIDsKK+edgOmZuCA+IGNoYWt1cmlrdVwgOwor5ZGK5YilID4ga29rdWJldHN1XCA7CivmsLTmsrkgPiBtaXp1YWJ1cmFcIDsKK+awt+awtCA+IGtvb3JpbWl6dVwgOwor5ZGI5Ye6ID4gdGVpc2h1dHN1XCA7CivliY3ovL8gPiBzYWtpZ29zaGlcIDsKK+WPt+WupCA+IGdvdXNoaXRzdVwgOwor5rKz5bK4ID4ga2F3YWdpc2hpXCA7CivlvLfnuK4gPiBreW91c2h1a3VcIDsKK+WHuumhmCA+IHNodXRzdWdhblwgOwor5Ye66aGMID4gc2h1dHN1ZGFpXCA7CivmgZDlr58gPiBreW91c2F0c3VcIDsKK+mxl+mbsiA+IHVyb2tvZ3Vtb1wgOwor6bSD6IiMID4gZ2VraXpldHN1XCA7CivnpZ7li4UgPiBzaGluY2hva3VcIDsKK+elneWLnSA+IHNodWt1c2hvdVwgOwor6YCa6YeIID4gdHN1dXNoYWt1XCA7CivnoILnspIgPiBzdW5hdHN1YnVcIDsKK+mAn+mBlCA+IHNva3V0YXRzdVwgOwor5Ye66ZmjID4gc2h1dHN1amluXCA7CivpgJrpgZQgPiB0c3V1dGF0c3VcIDsKK+WInemHnCA+IGhhdHN1Z2FtYVwgOwor5Ye66ZaAID4gc2h1dHN1bW9uXCA7Civph6PloIAgPiB0c3VyaWJvcmlcIDsKK+i/kemggyA+IGNoaWthZ29yb1wgOwor6bO26IG3ID4gdG9iaXNob2t1XCA7Civnn7PnrYYgPiBzZWtpaGl0c3VcIDsKK+efs+eruSA+IHNla2ljaGlrdVwgOwor5byV57axID4gaGlraWR6dW5hXCA7CivnpZ7ku48gPiBzaGluYnV0c3VcIDsKK+efreetkiA+IHRhbmR6dXRzdVwgOwor5q+S54mpID4gZG9rdWJ1dHN1XCA7CivljbPml6UgPiBzb2t1aml0c3VcIDsKK+mAg+mBkyA+IG5pZ2VtaWNoaVwgOwor56We5Li7ID4ga2FuJydudXNoaVwgOwor5ZCI5Y2wID4gYWlqaXJ1c2hpXCA7CivljZLmpa0gPiBzb3RzdWd5b3VcIDsKK+WLneedgCA+IHNob3VjaGFrdVwgOwor5ZCQ5Ye6ID4gdG9zaHV0c3VcIDsKK+mHkeWeiyA+IGthbmFnYXRhXCA7Civnn7PnpZ4gPiBzaGFrdWppblwgOwor5ZCN5Yi5ID4gbWVpc2F0c3VcIDsKK+W8vuedgCA+IGRhbmNoYWt1XCA7CivokL3nsY0gPiByYWt1c2VraVwgOwor55+i562SID4geWFkenV0c3VcIDsKK+W/g+acjSA+IHNoaW5wdWt1XCA7CivpgIbou6IgPiBneWFrdXRlblwgOwor5ZCI5YqbID4gZ291cnlva3VcIDsKK+iWmeWIgCA+IG5hZ2luYXRhXCA7CivlkIzliJcgPiBkb3VyZXRzdVwgOwor55u06Z2iID4gY2hva3VtZW5cIDsKK+W+qealrSA+IGZ1a3VneW91XCA7CivoloTlj6MgPiB1c3VrdWNoaVwgOwor6I2J6aOfID4gc291c2hva3VcIDsKK+W4uOmXhyA+IHRva295YW1pXCA7CivlkIjlhoogPiBnb3VzYXRzdVwgOwor5Yml6JC9ID4gaGFrdXJha3VcIDsKK+iMtumrqiA+IGNoYXBhdHN1XCA7CivpgJ/oqq0gPiBzb2t1ZG9rdVwgOwor5Y6z5a+GID4gZ2VubWl0c3VcIDsKK+WHuumDtyA+IHNodWtreW91XCA7CivljprlupUgPiBhdHN1em9rb1wgOwor5byV56qTID4gaGlraW1hZG9cIDsKK+WIhui9hCA+IGJ1bmthdHN1XCA7CivpgJroqq0gPiB0c3V1ZG9rdVwgOwor6YGc6ImyID4gc29uc2hva3VcIDsKK+i/vei3oSA+IHRzdWlzZWtpXCA7Civli7LniLUgPiBrdW5zaGFrdVwgOwor6YCa6KizID4gdHN1dXlha3VcIDsKK+WPquWPqiA+IHRhZGF0YWRhXCA7Civlj4vlnqMgPiB0b21vZ2FraVwgOwor5Y2K5pyIID4gaGFudHN1a2lcIDsKK+ecn+i/uSA+IHNoaW5zZWtpXCA7CivlkInkvosgPiBraXRzdXJlaVwgOwor6L+R6YmEID4ga2ludGV0c3VcIDsKK+iMtumjryA+IGNoYW1lc2hpXCA7CivliKXoqIAgPiBiZXRzdWdlblwgOwor5q6W55SjID4gc2hva3VzYW5cIDsKK+mHkeWPoyA+IGtpbmd1Y2hpXCA7CivpgKDooYAgPiB6b3VrZXRzdVwgOwor6bOl57GgID4gdG9yaWthZ29cIDsKK+WLg+eZuiA+IGJvcHBhdHN1XCA7Civlu7rnr4kgPiBrZW5jaGlrdVwgOwor5Ye66LqrID4gc2h1c3NoaW5cIDsKK+WNgeaciCA+IGp1dWdhdHN1XCA7Civlj6PljaAgPiBrdWNoaXVyYVwgOwor5q2j56uLID4gc2Vpcml0c3VcIDsKK+mvqOmqqCA+IGdlaWtvdHN1XCA7CivmsYLlv4MgPiBreXV1c2hpblwgOwor55u46Y6aID4gYWlkenVjaGlcIDsKK+ecvOitmCA+IGdhbnNoaWtpXCA7Civlv4Pmi40gPiBzaGlucGFrdVwgOwor5b285q2kID4ga2FyZWtvcmVcIDsKK+atr+ejqCA+IGhhbWlnYWtpXCA7CivokL3nn7MgPiByYWt1c2VraVwgOwor5bid6ZeVID4gdGVpa2V0c3VcIDsKK+WGhemwkCA+IHVjaGl3YW5pXCA7CivnnJ/ouZ8gPiBzaGluc2VraVwgOwor5Y+k5Ym1ID4gZnVydWtpenVcIDsKK+m0qOeMnyA+IGthbW9yeW91XCA7CivmsqHljbQgPiBib2treWFrdVwgOwor6YeR5YqbID4ga2lucnlva3VcIDsKK+WPs+WBtCA+IG1pZ2lnYXdhXCA7Civlh7rotoUgPiBzaHV0Y2hvdVwgOwor5Y+j5YmNID4ga3VjaGltYWVcIDsKK+WIu+iWhCA+IGtva3VoYWt1XCA7CivnnJ/ot6EgPiBzaGluc2VraVwgOwor5rC05oCnID4gbWl6dXNob3VcIDsKK+W6g+iiliA+IGhpcm9zb2RlXCA7Civph43lipsgPiBqdXVyeW9rdVwgOwor55u46YmEID4gc291dGV0c3VcIDsKK+iNt+i7iiA+IG5pZ3VydW1hXCA7Civli5XniakgPiBkb3VidXRzdVwgOwor55+l55WlID4gY2hpcnlha3VcIDsKK+ebrumMsiA+IG1va3Vyb2t1XCA7CivliIfoq5YgPiBzZXRzdXJvblwgOwor5Ye26LOKID4ga3lvdXpva3VcIDsKK+edgOijhSA+IGNoYWt1c291XCA7CivpgYXohIggPiBjaGlteWFrdVwgOwor5rC05byVID4gbWl6dWhpa2lcIDsKK+apiOmqqCA+IHRvdWtvdHN1XCA7CivmrrLmu4UgPiBzZW5tZXRzdVwgOwor5Y+k5YK3ID4gZnVydWtpenVcIDsKK+WGoOmbqiA+IGthbnNldHN1XCA7CivljJfmpbUgPiBob2treW9rdVwgOwor5bm76KGTID4gZ2VuanV0c3VcIDsKK+awt+W6iiA+IGh5b3VzaG91XCA7CivlioPnrZYgPiBrYWt1c2FrdVwgOwor5Y2z5bitID4gc29rdXNla2lcIDsKK+WPiOWPiCA+IG1hdGFtYXRhXCA7CivmsLTlupUgPiBtaW5hc29rb1wgOwor55u06YWNID4gY2hva3VoYWlcIDsKK+WIh+iogCA+IHNldHN1Z2VuXCA7CivmgKXlkYogPiBreXV1a29rdVwgOwor6YeI5YW4ID4gc2hha3V0ZW5cIDsKK+avq+acqyA+IGdvdW1hdHN1XCA7CivljYrmipggPiBoYW5zZXRzdVwgOwor5bmz6KKWID4gaGlyYXNvZGVcIDsKK+mvm+mjryA+IHRhaW1lc2hpXCA7CivliIfopoEgPiBzZXRzdXlvdVwgOwor5be76ZuyID4gbWFraWd1bW9cIDsKK+aui+eJqSA+IHphbmJ1dHN1XCA7CivmhYvjgIUgPiB3YXphd2F6YVwgOwor5Yqr55WlID4gZ291cnlha3VcIDsKK+WPjeWIpSA+IHRhbmJldHN1XCA7CivmraPnm7QgPiBzaG91amlraVwgOwor5Yq5546HID4ga291cml0c3VcIDsKK+WPquS6iyA+IHRhZGFnb3RvXCA7CivnoqnlraYgPiBzZWtpZ2FrdVwgOwor5rC05bWpID4gbWl6dWthc2FcIDsKK+ebtOmAgSA+IGNob2t1c291XCA7CivliIboo4IgPiBidW5yZXRzdVwgOwor5b255p+EID4geWFrdWdhcmFcIDsKK+WHjOi+sSA+IHJ5b3Vqb2t1XCA7CivlvovmlocgPiByaXRzdWJ1blwgOwor56iL44CFID4gaG9kb2hvZG9cIDsKK+WPjuWFpSA+IHNodXVueXV1XCA7Civoi6Xpto8gPiB3YWthZG9yaVwgOwor5rKI5YuHID4gY2hpbicneXV1XCA7Civlj4zlha0gPiBzdWdvcm9rdVwgOwor5buD57W2ID4gaGFpemV0c3VcIDsKK+mBk+ezuCA+IG1pY2hpaXRvXCA7CivlibXnq4sgPiBzb3VyaXRzdVwgOwor5Y2U5b+DID4ga3lvdXNoaW5cIDsKK+WMl+acnSA+IGhva3VjaG91XCA7Civli4fng4ggPiB5dXVyZXRzdVwgOwor5oCn5YilID4gc2VpYmV0c3VcIDsKK+WLg+eEtiA+IGJvdHN1emVuXCA7CivljZjlvI8gPiB0YW5zaGlraVwgOwor5Y+C5YiXID4gc2FucmV0c3VcIDsKK+awl+W/gyA+IGtpZ29rb3JvXCA7Civlt53poqggPiBrYXdha2F6ZVwgOwor5YiA6KGTID4gdG91anV0c3VcIDsKK+WMoeaVkSA+IGt5b3VreXV1XCA7CivmrbvniakgPiBzaGlidXRzdVwgOwor5Yiz6IifID4ga3VyaWJ1bmVcIDsKK+W9vOaYryA+IGthcmVrb3JlXCA7CivliIbonZUgPiBidW5zaG9rdVwgOwor55m96bOlID4gaGFrdWNob3VcIDsKK+WFtemjnyA+IGhlaXNob2t1XCA7Civmrr/mp5ggPiB0b25vc2FtYVwgOwor5Y+C5YWlID4gc2FuJydueXV1XCA7Civlj5fku5ggPiB1a2V0c3VrZVwgOwor5Y2Y5bivID4gaGl0b2VvYmlcIDsKK+efr+a/gCA+IGt5b3VnZWtpXCA7CivmgKrlgpEgPiBrYWlrZXRzdVwgOwor5Yi66IKhID4gc2FzdW1hdGFcIDsKK+axsuWPliA+IGt1bWl0b3JpXCA7CivnoILmtZwgPiBzdW5haGFtYVwgOwor6YGU562GID4gdGFwcGl0c3VcIDsKK+WJsuekvCA+IGthdHN1cmVpXCA7Civmr47mnIggPiBtYWl0c3VraVwgOwor5Y2H5b2iID4gbWFzdWdhdGFcIDsKK+W3nemcpyA+IGthd2FnaXJpXCA7CivliofnmoQgPiBnZWtpdGVraVwgOwor5YiG6JiWID4gYnVua2V0c3VcIDsKK+WPlOS4liA+IHNodWt1c2VpXCA7CivlhYDpt7kgPiBoYWdldGFrYVwgOwor5YuY5rG6ID4ga2Fua2V0c3VcIDsKK+WNs+WmmSA+IHNva3VteW91XCA7CivliaPnqoEgPiBrZW50c3VrdVwgOwor5b+F5a6aID4gaGl0c3Vqb3VcIDsKK+aApeS/oSA+IGt5dXVzaGluXCA7CivliY3ntIQgPiB6ZW4nJ3lha3VcIDsKK+WKh+eXmyA+IGdla2l0c3V1XCA7CivljYjlubQgPiB1bWFkb3NoaVwgOwor5bmz6JC9ID4gaGlyYW9jaGlcIDsKK+ehrOW8jyA+IGtvdXNoaWtpXCA7CivluLjorZggPiBqb3VzaGlraVwgOwor5b+D5a2mID4gc2hpbmdha3VcIDsKK+avjuaXpSA+IG1haW5pY2hpXCA7Civnmb3pqqggPiBoYWtrb3RzdVwgOwor5Y2H5bitID4gbWFzdXNla2lcIDsKK+aoqumiqCA+IHlva29rYXplXCA7CivmgKXkvLggPiBreXV1c2hpblwgOwor6bCQ6LazID4gd2FuaWFzaGlcIDsKK+mBheethiA+IGNoaWhpdHN1XCA7Civmr43mlrkgPiBoYWhha2F0YVwgOwor5rC35aOBID4gaHlvdWhla2lcIDsKK+eenuedgCA+IG1hbmNoYWt1XCA7CivovpvovpsgPiBrYXJhZ2FyYVwgOwor55u46K2YID4gc291c2hpa2lcIDsKK+iPnOeuuCA+IHNhaWJhc2hpXCA7CivpgLHntaYgPiBzaHV1a3l1dVwgOwor5YWr6Z2iID4gaGFjaGltZW5cIDsKK+WNmuWtpiA+IGhha3VnYWt1XCA7CivmrpbmsJEgPiBzaG9rdW1pblwgOwor6YCy57SaID4gc2hpbmt5dXVcIDsKK+WJjeevgCA+IHplbnNldHN1XCA7Civlvpflv4MgPiB0b2t1c2hpblwgOwor552A6Ii5ID4gY2hha3VzZW5cIDsKK+W8lea9riA+IGhpa2lzaGlvXCA7CivluLjoqK0gPiBqb3VzZXRzdVwgOwor5b6X5b6XID4gdG9rdXRva3VcIDsKK+iQvea9riA+IHJha3VjaG91XCA7CivlvLHmr5IgPiBqYWt1ZG9rdVwgOwor5Y6l5Ya3ID4ga2V0c3VyZWlcIDsKK+iUteWFgyA+IGt1cmFtb3RvXCA7Civlu7rniakgPiB0YXRlbW9ub1wgOwor5q275ruFID4gc2hpbWV0c3VcIDsKK+WLh+axuiA+IHl1dWtldHN1XCA7CivlhYjpq5ggPiBzYWtpZGFrYVwgOwor55m66aeFID4gaGF0c3Vla2lcIDsKK+mAgOiJsiA+IHRhaXNob2t1XCA7CivmsJflrqQgPiBraXNoaXRzdVwgOwor5YaG6YyQID4gbWFydWdpcmlcIDsKK+WLnealvSA+IHNob3VyYWt1XCA7CivlhY7ppqwgPiB1c2FnaXVtYVwgOwor5qyg56S8ID4ga2V0c3VyZWlcIDsKK+W9k+aciCA+IHRvdWdldHN1XCA7CivljYPls7YgPiBjaGlzaGltYVwgOwor5qiq6ZuyID4geW9rb2d1bW9cIDsKK+W+kOW+kCA+IHNvcm9zb3JvXCA7CivlhYPpq5ggPiBtb3RvZGFrYVwgOwor5bir6KqsID4gc2hpc2V0c3VcIDsKK+WMheaRgiA+IGhvdXNldHN1XCA7Civmrr/mlrkgPiB0b25vZ2F0YVwgOwor5rCR5a6/ID4gbWluc2h1a3VcIDsKK+mAo+e1kCA+IHJlbmtldHN1XCA7Civnm7ToqIAgPiBjaG9rdWdlblwgOwor5b2O5pyIID4gd2FuZ2V0c3VcIDsKK+W3oemMqyA+IGp1bnNoYWt1XCA7CivlvY7mm7IgPiB3YW5reW9rdVwgOwor55u06KeSID4gY2hva2tha3VcIDsKK+W7ieebtCA+IHJlbmNob2t1XCA7Civnm7ToppogPiBjaG9ra2FrdVwgOwor55u06KaWID4gY2hva3VzaGlcIDsKK+atu+a0uyA+IHNoaWthdHN1XCA7Civlv4PlooMgPiBzaGlua3lvdVwgOwor5bmz6ISIID4gaGVpbXlha3VcIDsKK+W9k+aXpSA+IHRvdWppdHN1XCA7CivlvqnlraYgPiBmdWt1Z2FrdVwgOwor5YWl6ZajID4gbnl1dWtha3VcIDsKK+aoqumVtyA+IHlva29uYWdhXCA7CivmrbvmsqEgPiBzaGlib3RzdVwgOwor5YyF5ousID4gaG91a2F0c3VcIDsKK+mAgOiBtyA+IHRhaXNob2t1XCA7Civlv6DlkYogPiBjaHV1a29rdVwgOwor5be76Lu4ID4gbWFraWppa3VcIDsKK+eZvumbtyA+IGh5YWt1cmFpXCA7Civnmb7pm6MgPiBoeWFrdW5hblwgOwor5Ye66Iq9ID4gc2h1dHN1Z2FcIDsKK+iPheesoCA+IHN1Z2VnYXNhXCA7CivliZvnm7QgPiBnb3VjaG9rdVwgOwor5Yqg5rm/ID4ga2FzaGl0c3VcIDsKK+eZuumbuyA+IGhhdHN1ZGVuXCA7CivliIbohIggPiBidW5teWFrdVwgOwor55uj6KizID4ga2FuJyd5YWt1XCA7CivlvI/ms5UgPiBzaGlraWhvdVwgOwor6YGF552AID4gY2hpY2hha3VcIDsKK+WFmumWpSA+IHRvdWJhdHN1XCA7CivliKXntI0gPiBiZXRzdW5vdVwgOwor5YiR572wID4ga2VpYmF0c3VcIDsKK+WGhemBlCA+IG5haXRhdHN1XCA7Civmrbvmrb8gPiBzaGlib3RzdVwgOwor5b+D5ZqiID4gc2hpbicnbm91XCA7CivlvbnlvpcgPiB5YWt1dG9rdVwgOwor6YCj56uLID4gcmVucml0c3VcIDsKK+mDt+aEgSA+IGt5b3VzaHV1XCA7Civlvbflvb8gPiBob3VmdXRzdVwgOwor5bqt55+zID4gbml3YWlzaGlcIDsKK+WIh+iAhSA+IGtpcmVtb25vXCA7CivpgYXnmbogPiBjaGloYXRzdVwgOwor5YWD6Z6YID4gbW90b3NheWFcIDsKK+W/mOWNtCA+IGJvdWt5YWt1XCA7CivmrbTmrbQgPiByZWtpcmVraVwgOwor56K65L+hID4ga2FrdXNoaW5cIDsKK+efs+afsSA+IHNla2ljaHV1XCA7CivmrKDnlaogPiBrZXRzdWJhblwgOwor5b2w5b6zID4gc2hvdXRva3VcIDsKK+mxiOiFuSA+IHRhcmFmdWt1XCA7CivlibLniakgPiB3YXJlbW9ub1wgOwor5bmV6IejID4gYmFrdXNoaW5cIDsKK+WFpemLjyA+IG55dXVreW91XCA7Civou73ptKggPiBrYXJ1Z2Ftb1wgOwor5byv5puyID4gd2Fua3lva3VcIDsKK+W/teS7jyA+IG5lbmJ1dHN1XCA7Civoj4rnn7MgPiBraWt1aXNoaVwgOwor5Ya36KGAID4gcmVpa2V0c3VcIDsKK+W5s+e1uSA+IGhpcmFnaW51XCA7CivphZLlkZEgPiBzYWtlbm9taVwgOwor6JGJ5qGcID4gaGF6YWt1cmFcIDsKK+edgOexsyA+IGNoYWt1YmVpXCA7CivlvLfmlbUgPiBreW91dGVraVwgOwor5rGC5YSfID4ga3l1dXNob3VcIDsKK+mAmuensCA+IHRzdXVzaG91XCA7Civlv6Dlg5UgPiBjaHV1Ym9rdVwgOwor5rC05YqbID4gc3Vpcnlva3VcIDsKK+aui+aciCA+IHphbmdldHN1XCA7Civli4Xmm7ggPiBjaG9rdXNob1wgOwor5YWx6YCaID4ga3lvdXRzdXVcIDsKK+WJjeeVpSA+IHplbnJ5YWt1XCA7Civmrormm7QgPiBrb3Rvc2FyYVwgOwor5bym5pyIID4gZ2VuZ2V0c3VcIDsKK+ebruiWrCA+IG1lZ3VzdXJpXCA7CivljZTllYYgPiBreW91c2hvdVwgOwor55m+6YysID4gaHlha3VyZW5cIDsKK+WFrOmBlCA+IGtvdXRhdHN1XCA7CivlvLHmlbUgPiBqYWt1dGVraVwgOwor6YCG566XID4gZ3lha3VzYW5cIDsKK+m7meOAhSA+IG1va3Vtb2t1XCA7CivlhavpgZQgPiBoYXR0YXRzdVwgOwor5YWr6YGTID4gaGFjaGlkb3VcIDsKK+WMl+WxsSA+IGtpdGF5YW1hXCA7Civlib/mu4UgPiBzb3VtZXRzdVwgOwor5buD54mpID4gaGFpYnV0c3VcIDsKK+WFrOi/sCA+IGtvdWp1dHN1XCA7Civlv6Dkv6EgPiBjaHV1c2hpblwgOwor55qu6LOqID4gaGlzaGl0c3VcIDsKK+efs+aWhyA+IGlzaGlidW1pXCA7CivlvaLlvI8gPiBrZWlzaGlraVwgOwor5YeL6JC9ID4gY2hvdXJha3VcIDsKK+WLheaXqCA+IGNob2t1c2hpXCA7CivljbjlgKQgPiBvcm9zaGluZVwgOwor55+t5pelID4gdGFuaml0c3VcIDsKK+awtOWFiCA+IG1penVzYWtpXCA7Civlt7foqqwgPiBrb3VzZXRzdVwgOwor5YWx6LubID4ga3lvdXlha3VcIDsKK+m7kuOAhSA+IGt1cm9ndXJvXCA7CivliaXnhLwgPiBzdWtpeWFraVwgOwor6YCi552AID4gaG91Y2hha3VcIDsKK+W7g+eGsSA+IGhhaW5ldHN1XCA7CivlvbnlroUgPiB5YWt1dGFrdVwgOwor5Yiw552AID4gdG91Y2hha3VcIDsKK+iMueibuCA+IHl1ZGVkYWtvXCA7CivlvLfmjK8gPiBreW91c2hpblwgOwor5YaN6KqsID4gc2Fpc2V0c3VcIDsKK+mAo+eZuiA+IHJlbnBhdHN1XCA7CivlvqnllLEgPiBmdWt1c2hvdVwgOwor55+l5pelID4gY2hpbmljaGlcIDsKK+W+tOWPjiA+IGNob3VzaHV1XCA7Civli4XmkrAgPiBjaG9rdXNlblwgOwor5YiG56+AID4gYnVuc2V0c3VcIDsKK+mFjeWIlyA+IGhhaXJldHN1XCA7Civlh6bnvbAgPiBzaG9iYXRzdVwgOwor5YaN6KitID4gc2Fpc2V0c3VcIDsKK+attOacnSA+IHJla2ljaG91XCA7Civliofmr5IgPiBnZWtpZG9rdVwgOwor6L+956m2ID4gdHN1aWt5dXVcIDsKK+ats+acqyA+IHNhaW1hdHN1XCA7CivmqKrou7ggPiB5b2tvamlrdVwgOwor5YiG562GID4gYnVucGl0c3VcIDsKK+i8r+mMsiA+IHNodXVyb2t1XCA7CivljYrlj6MgPiBoYW5rdWNoaVwgOwor5Y2B5ZOyID4ganV0dGV0c3VcIDsKK+eZvumBuCA+IGh5YWt1c2VuXCA7Civlu4nmvZQgPiByZW5rZXRzdVwgOwor5YWI6YeRID4gc2FraWdhbmVcIDsKK+i7vemjnyA+IGtlaXNob2t1XCA7CivliIbnq4sgPiBidW5yaXRzdVwgOwor5YaF6KizID4gdWNoaXdha2VcIDsKK+i/veemjyA+IHRzdWlmdWt1XCA7CivnmbrpgZQgPiBoYXR0YXRzdVwgOwor5qyy5rexID4geW9rdWJ1a2FcIDsKK+atquabsiA+IHdhaWt5b2t1XCA7CivlhaXotoUgPiBueXV1Y2hvdVwgOwor5Ymy5rOoID4gd2FyaWNodXVcIDsKK+awkeWKmyA+IG1pbnJ5b2t1XCA7CivljJflo4EgPiBob2t1aGVraVwgOwor5buD5ruFID4gaGFpbWV0c3VcIDsKK+awtOS4iiA+IG1pbmFrYW1pXCA7CivliJ3nm4YgPiBoYXRzdWJvblwgOwor5q2j5pytID4gc2hvdWZ1ZGFcIDsKK+iRrOW8jyA+IHNvdXNoaWtpXCA7CivlhaXos54gPiBueXV1c2hvdVwgOwor5YWI6YGUID4gc2VuZGF0c3VcIDsKK+atouacqCA+IHRvbWFyaWdpXCA7CivnnYDnnLwgPiBjaGFrdWdhblwgOwor5Y2K5YiHID4gaGFuc2V0c3VcIDsKK+WIneeZuiA+IHNob2hhdHN1XCA7Civou5/pqqggPiBuYW5rb3RzdVwgOwor5b2T5bGAID4gdG91a3lva3VcIDsKK+auuuWusyA+IHNhdHN1Z2FpXCA7CivokL3mjowgPiByYWt1c2hvdVwgOwor5YWx6KizID4ga3lvdXlha3VcIDsKK+W8t+W8sSA+IGt5b3VqYWt1XCA7Civlv4PkuK0gPiBzaGluY2h1dVwgOwor5bmz55q/ID4gaGlyYXphcmFcIDsKK+WIneeUoyA+IGhhdHN1emFuXCA7CivluLjnt5EgPiBqb3VyeW9rdVwgOwor5Y2X5LuPID4gbmFuZnV0c3VcIDsKK+WKq+aOoCA+IGdvdXJ5YWt1XCA7CivljYHlhasgPiBqdXVoYWNoaVwgOwor5YWs6KitID4ga291c2V0c3VcIDsKK+mBqealrSA+IHRla2lneW91XCA7CivprLHprLEgPiB1dHN1dXRzdVwgOwor6L+955m9ID4gdHN1aWhha3VcIDsKK+W+k+WNkiA+IGp1dXNvdHN1XCA7CivlvqHlhqAgPiBva2FubXVyaVwgOwor5b6L5ZGCID4gcml0c3VyeW9cIDsKK+i+o+iFlSA+IHJhdHN1d2FuXCA7CivnnYDnlKggPiBjaGFrdXlvdVwgOwor6YCG55SoID4gZ3lha3V5b3VcIDsKK+mAhueUoyA+IGd5YWt1emFuXCA7Civlha3opqogPiByb2t1c2hpblwgOwor5b6M5Y+jID4gYXRva3VjaGlcIDsKK+WFqOiosyA+IHplbicneWFrdVwgOwor5Y2Y5LiAID4gdGFuJydpdHN1XCA7CivluK/nt5EgPiB0YWlyeW9rdVwgOwor55+z5byTID4gaXNoaXl1bWlcIDsKK+mBuOabsiA+IHNlbmt5b2t1XCA7CivpgJrniZIgPiB0c3V1Y2hvdVwgOwor55u057eaID4gY2hva3VzZW5cIDsKK+ecjOeriyA+IGtlbnJpdHN1XCA7CivliKXnirYgPiBiZXRzdWpvdVwgOwor5YeN57WQID4gdG91a2V0c3VcIDsKK+W3neidiSA+IGthd2FzZW1pXCA7Civpg7flm70gPiBreW91a29rdVwgOwor5Ymv5qWtID4gZnVrdWd5b3VcIDsKK+i/veeUsyA+IHRzdWlzaGluXCA7CivnoILlsbEgPiBzdW5heWFtYVwgOwor5b6L5YuVID4gcml0c3Vkb3VcIDsKK+ato+aOpSA+IHNlaXNldHN1XCA7Civov6vnnJ8gPiBoYWt1c2hpblwgOwor55yB562GID4gc2VpaGl0c3VcIDsKK+W8n+W+oSA+IG90b3V0b2dvXCA7CivlhYfos4ogPiBreW91em9rdVwgOwor5YeE57W2ID4gc2VpemV0c3VcIDsKK+W+jOWIlyA+IGtvdXJldHN1XCA7CivlvLflsIYgPiBreW91c2hvdVwgOwor5bm0546HID4gbmVucml0c3VcIDsKK+WGl+iIjCA+IGpvdXpldHN1XCA7CivmqJnoqLsgPiBoeW91Y2h1dVwgOwor55yf55m9ID4gbWFzc2hpcm9cIDsKK+WFuOiWrCA+IHRlbicneWFrdVwgOwor5byx5bCRID4gamFrdXNob3VcIDsKK+W8seWwjyA+IGpha3VzaG91XCA7Civnm7TnrZQgPiBjaG9rdXRvdVwgOwor55+z5bGxID4gaXNoaXlhbWFcIDsKK+iMnOiJsiA+IGFrYW5laXJvXCA7CivnmbroqIAgPiBoYXRzdWdlblwgOwor5byT5b2iID4geXVtaW5hcmlcIDsKK+WJr+acqCA+IGZ1a3Vib2t1XCA7CivnnJ/nl4cgPiBzaGluc2hvdVwgOwor5Yqj5oOFID4gcmV0c3Vqb3VcIDsKK+WGpee9sCA+IG1laWJhdHN1XCA7CivnpZ7jgIUgPiBrYW1pZ2FtaVwgOwor5Yqj5oKqID4gcmV0c3Vha3VcIDsKK+muruihgCA+IHNlbmtldHN1XCA7CivlvbnlibIgPiB5YWt1d2FyaVwgOwor55+z5a6kID4gaXNoaW11cm9cIDsKK+iLpeihhiA+IHdha2FzaHV1XCA7Civmr43lkJsgPiBoYWhhZ2ltaVwgOwor5bmz54axID4gaGVpbmV0c3VcIDsKK+ebtOeojiA+IGNob2t1emVpXCA7Civov5HnnYAgPiBraW5jaGFrdVwgOwor6YGT5p2/ID4gbWljaGlpdGFcIDsKK+WLheWuoyA+IGNob2t1c2VuXCA7Civnn6nlsLogPiBrYW5lamFrdVwgOwor5YiH54mpID4ga2lyZW1vbm9cIDsKK+mBuOaKnCA+IHNlbmJhdHN1XCA7Civnmb3on7sgPiBzaGlyb2FyaVwgOwor5by35aWqID4gZ291ZGF0c3VcIDsKK+WIuuauuiA+IHNoaXNhdHN1XCA7Civlh6Hnmb4gPiBib25weWFrdVwgOwor5b6L5LukID4gcml0c3VyZWlcIDsKK+WGheiFvyA+IHVjaGltb21vXCA7Civou43plqUgPiBndW5iYXRzdVwgOwor5bmj54mpID4gaGVpbW90c3VcIDsKK+mAuOalvSA+IGl0c3VyYWt1XCA7CivpgJ/msbogPiBzb2trZXRzdVwgOwor5YyX5YG0ID4gaG9rdXNva3VcIDsKK+W9q+WIuyA+IGNob3Vrb2t1XCA7CivpgIbmva4gPiBzYWthc2hpb1wgOwor56Cy5YiXID4gaG91cmV0c3VcIDsKK+ato+W8jyA+IHNlaXNoaWtpXCA7CivlhqDntbYgPiBrYW56ZXRzdVwgOwor5q6/5Y6fID4gdG9ub2JhcmFcIDsKK+WHuOeKtiA+IHRvdHN1am91XCA7CivlhoXogqEgPiB1Y2hpbW9tb1wgOwor6YGU5paHID4gdGF0c3VidW5cIDsKK+W+geS8kCA+IHNlaWJhdHN1XCA7Civlubvmu4UgPiBnZW5tZXRzdVwgOwor5by+5ZynID4gZGFuJydhdHN1XCA7Civou73ou70gPiBrYXJ1Z2FydVwgOwor5YWF6KGAID4ganV1a2V0c3VcIDsKK+WGheiBtyA+IG5haXNob2t1XCA7Civou5/piYQgPiBuYW50ZXRzdVwgOwor5bmy5r2uID4gaGlraXNoaW9cIDsKK+efs+WiqCA+IHNla2lib2t1XCA7CivliKTmsbogPiBoYW5rZXRzdVwgOwor55+t5aScID4gbWlqaWtheW9cIDsKK+W8t+WcpyA+IGt5b3VhdHN1XCA7CivlubPmu5EgPiBoZWlrYXRzdVwgOwor5by35Zu9ID4ga3lvdWtva3VcIDsKK+msoumVtyA+IGJpbicnbmFnYVwgOwor5YaG572QID4gbWFydWdhbWFcIDsKK+ebtOebtCA+IGppa2lqaWtpXCA7Civlt7vntJkgPiBtYWtpZ2FtaVwgOwor5YW86IG3ID4ga2Vuc2hva3VcIDsKK+asoOaWhyA+IGtldHN1YnVuXCA7CivlhqznqbogPiBmdXl1em9yYVwgOwor6YGF5pelID4gY2hpaml0c3VcIDsKK+WIpeauvyA+IGJldHN1ZGVuXCA7CivliKXmrrUgPiBiZXRzdWRhblwgOwor6YCG5rWqID4gc2FrYW5hbWlcIDsKK+eZveiTriA+IGJ5YWt1cmVuXCA7Civnn7PlnqMgPiBpc2hpZ2FraVwgOwor6YO35L+XID4ga3lvdXpva3VcIDsKK+i7uOi2syA+IGppa3Vhc2hpXCA7CivpgIbms6IgPiBzYWthbmFtaVwgOwor55uu55qEID4gbW9rdXRla2lcIDsKK+iQqeWxniA+IGhhZ2l6b2t1XCA7CivpgJ/mpa0gPiBoYXlhd2F6YVwgOwor5q615YilID4gdGFuYmV0c3VcIDsKK+W4gueriyA+IHNoaXJpdHN1XCA7Civoi6XojYkgPiB3YWtha3VzYVwgOwor552A5rC0ID4gY2hha3VzdWlcIDsKK+i7oui9jSA+IHRlbnRldHN1XCA7CivpsJDnmq4gPiB3YW5pZ2F3YVwgOwor5q2i5a6/ID4gc2hpc2h1a3VcIDsKK+iKuOihkyA+IGdlaWp1dHN1XCA7CivmraPlrpcgPiBtYXNhbXVuZVwgOwor5qiq6IW5ID4geW9rb2JhcmFcIDsKK+WGl+ethiA+IGpvdWhpdHN1XCA7CivlhazogbcgPiBrb3VzaG9rdVwgOwor5ZCE44CFID4gc29yZXpvcmVcIDsKK+WIg+a4oSA+IGhhd2F0YXJpXCA7Civps6nlsL4gPiBtaXpvb2NoaVwgOwor6auj6au0ID4gaG91ZnV0c3VcIDsKK+WHuua8lCA+IHNodXRzdWVuXCA7CivpganlvbkgPiB0ZWtpeWFrdVwgOwor6Lqr6ZW3ID4gc2hpbmNob3VcIDsKK+WKm+WtpiA+IHJpa2lnYWt1XCA7CivoibLpgZMgPiBzaGlraWRvdVwgOwor55m+6Iq4ID4gaHlha3VnZWlcIDsKK+WLouWKmyA+IHNlaXJ5b2t1XCA7CivoiLnpnIogPiBmdW5hZGFtYVwgOwor6L+95rGCID4gdHN1aWt5dXVcIDsKK+egguWOnyA+IHN1bmFoYXJhXCA7CivlvY7lhaUgPiB3YW4nJ255dXVcIDsKK+WItuacrSA+IHNlaXNhdHN1XCA7Civmpb3plbcgPiBnYWt1Y2hvdVwgOwor55u055CDID4gY2hva2t5dXVcIDsKK+WIhuazjCA+IGJ1bnBpdHN1XCA7CivmpbXpmZAgPiBreW9rdWdlblwgOwor6a6r6IaaID4gc2FtZWhhZGFcIDsKK+eZuuiJsiA+IGhhc3Nob2t1XCA7CivokazliJcgPiBzb3VyZXRzdVwgOwor5YuF5ZWPID4gY2hva3Vtb25cIDsKK+W8vuWKmyA+IGRhbnJ5b2t1XCA7CivlvI/loLQgPiBzaGlraWpvdVwgOwor6auY6auYID4gdGFrYWRha2FcIDsKK+WJsuW8lSA+IHdhcmliaWtpXCA7CivmrLLlv4MgPiB5b2t1c2hpblwgOwor6YG45bGAID4gc2Vua3lva3VcIDsKK+WJlOaKiSA+IHRla2tldHN1XCA7CivmrLLlvpcgPiB5b2t1dG9rdVwgOwor6a6u6IKJID4gc2VuJyduaWt1XCA7CivpgIbmp5ggPiBzYWthc2FtYVwgOwor6YCy5pKDID4gc2hpbmdla2lcIDsKK+WLleWKmyA+IGRvdXJ5b2t1XCA7Civli4Xlkb0gPiBjaG9rdW1laVwgOwor5Yeb54OIID4gcmlucmV0c3VcIDsKK+atpuWjqyA+IG1vbm9ub2Z1XCA7CivprqvogowgPiBzYW1laGFkYVwgOwor5q665Lq6ID4gc2F0c3VqaW5cIDsKK+WDrei2iiA+IHNlbicnZXRzdVwgOwor6YCj5pelID4gcmVuaml0c3VcIDsKK+ato+WkoiA+IG1hc2F5dW1lXCA7CivliLfmlbAgPiBzYXRzdXN1dVwgOwor6LuL6L2iID4gYXRzdXJla2lcIDsKK+WIpeadoSA+IGJldHN1am91XCA7CivlhLLok4QgPiBjaG9jaGlrdVwgOwor5YaG56qTID4gbWFydW1hZG9cIDsKK+iLpeiAhSA+IHdha2Ftb25vXCA7Civou4rovYQgPiBzaGFrYXRzdVwgOwor5oGQ44CFID4ga293YWdvd2FcIDsKK+mAmuaagSA+IHRzdXVneW91XCA7CivliY3miZUgPiBtYWViYXJhaVwgOwor55m+6IGeID4gaHlha3VidW5cIDsKK+eZuuiCsiA+IGhhdHN1aWt1XCA7Civlj6rjgIUgPiB0YWRhdGFkYVwgOwor6YCQ5p2hID4gY2hpa3Vqb3VcIDsKK+ebiuebiiA+IG1hc3VtYXN1XCA7CivmqKrnuJ4gPiB5b2tvamltYVwgOwor6YGU5byBID4gdGF0c3ViZW5cIDsKK+W3o+eqnyA+IHNvdWt1dHN1XCA7Civlt53nrYsgPiBrYXdhc3VqaVwgOwor5YOj6LaKID4gc2VuJydldHN1XCA7Civlt77nnYAgPiBraW5jaGFrdVwgOwor5YWN6IG3ID4gbWVuc2hva3VcIDsKK+WLh+WKmyA+IHl1dXJ5b2t1XCA7Civlt53nq68gPiBrYXdhYmF0YVwgOwor5YuB5Y2SID4ga2Vpc290c3VcIDsKK+WGheelnSA+IHVjaGlpd2FpXCA7CivojYnniakgPiBrdXNhbW9ub1wgOwor5bKz6bqTID4gZ2FrdXJva3VcIDsKK+WIhualtSA+IGJ1bmt5b2t1XCA7Civmp43ooZMgPiBzb3VqdXRzdVwgOwor6YCj5o6lID4gcmVuc2V0c3VcIDsKK+WFpeexjSA+IG55dXVzZWtpXCA7Civlia/lsIYgPiBmdWt1c2hvdVwgOwor5Ymv5a+pID4gZnVrdXNoaW5cIDsKK+efpeWKmyA+IGNoaXJ5b2t1XCA7CivlibLlrokgPiB3YXJpeWFzdVwgOwor5Yem5rG6ID4gc2hva2V0c3VcIDsKK+W5tOacqyA+IG5lbm1hdHN1XCA7Civlub7ml6UgPiBpa3VuaWNoaVwgOwor5bm05pyIID4gbmVuZ2V0c3VcIDsKK+WIh+agqiA+IGtpcmlrYWJ1XCA7CivlirnlipsgPiBrb3VyeW9rdVwgOwor6aq46aqoID4gZ2Fpa290c3VcIDsKK+WFrOeriyA+IGtvdXJpdHN1XCA7CivlvI/lj7AgPiBzaGlraWRhaVwgOwor6aqo6bGXID4ga290c3VyaW5cIDsKK+WGjeeZuiA+IHNhaWhhdHN1XCA7CivmrbvlipsgPiBzaGlyeW9rdVwgOwor5Yq05YqbID4gcm91cnlva3VcIDsKK+aoquetiyA+IHlva29zdWppXCA7Civlt4znqp8gPiBnYW5rdXRzdVwgOwor5Yas54mpID4gZnV5dW1vbm9cIDsKK+mAhuaVsCA+IGd5YWt1c3V1XCA7CivlhY7ntrIgPiB1c2FnaWFtaVwgOwor55m957O4ID4gc2hpcmFpdG9cIDsKK+atu+WIpSA+IHNoaWJldHN1XCA7CivliIfmnK0gPiBraXJpZnVkYVwgOwor5YiH5pybID4gc2V0c3Vib3VcIDsKK+W5s+aXpSA+IGhlaWppdHN1XCA7Civlt6bnm64gPiBoaWRhcmltZVwgOwor6Lu96JSRID4ga2VpYmV0c3VcIDsKK+WJo+WuoiA+IGtlbmt5YWt1XCA7CivlhoXnmbogPiBuYWloYXRzdVwgOwor5YuF5L2/ID4gY2hva3VzaGlcIDsKK+iKi+iZqyA+IGltb211c2hpXCA7Civlj4jjgIUgPiBtYXRhbWF0YVwgOwor5qSL6bOlID4gbXVrdWRvcmlcIDsKK+W5s+aUvyA+IGhpcmFtYXNhXCA7Civpqqjpq4QgPiBrb3RzdXp1aVwgOwor55uu5risID4gbW9rdXNva3VcIDsKK+WFg+e3oCA+IG1vdG9qaW1lXCA7Civnn7PkuoAgPiBpc2hpZ2FtZVwgOwor5YWI57SwID4gc2FraWJvc29cIDsKK+WLheS7uyA+IGNob2t1bmluXCA7Civnn5vlhYggPiBob2tvc2FraVwgOwor5bqm5bqmID4gdGFiaXRhYmlcIDsKK+WLheS7pCA+IGNob2t1cmVpXCA7CivlhYjntIQgPiBzZW4nJ3lha3VcIDsKK+iQqeWOnyA+IGhhZ2l3YXJhXCA7CivlhaXnpZ4gPiBueXV1c2hpblwgOwor5q2v5YiXID4gc2hpcmV0c3VcIDsKK+WIh+aWrSA+IHNldHN1ZGFuXCA7Civlu4Plq6EgPiBoYWljaGFrdVwgOwor5q2q5YqbID4gd2Fpcnlva3VcIDsKK+W8j+WFuCA+IHNoaWtpdGVuXCA7Civov73mkoMgPiB0c3VpZ2VraVwgOwor6IqL6JSTID4gaW1vZHp1cnVcIDsKK+aomeeroCA+IGh5b3VzaG91XCA7Civlt7vniakgPiBtYWtpbW9ub1wgOwor55u45q66ID4gc291c2F0c3VcIDsKK+WGl+eJqSA+IGpvdWJ1dHN1XCA7CivliY3lsYggPiB6ZW5rdXRzdVwgOwor5Yiz5b2iID4ga3VyaWthdGFcIDsKK+ato+WJsiA+IHNlaWthdHN1XCA7Civouo3pgLIgPiB5YWt1c2hpblwgOwor5byB5YilID4gYmVuYmV0c3VcIDsKK+edgOaJiyA+IGNoYWt1c2h1XCA7CivmraPliIcgPiBzZWlzZXRzdVwgOwor6Iy25rysID4gY2hhZHp1a2VcIDsKK+aAluOAhSA+IGtvd2Fnb3dhXCA7CivnlZnps6UgPiByeXV1Y2hvdVwgOwor6YGO5aSxID4ga2FzaGl0c3VcIDsKK+iIuei2syA+IGZ1bmFhc2hpXCA7CivlhbXnlaUgPiBoZWlyeWFrdVwgOwor55m956WoID4gaGFrdWh5b3VcIDsKK+WBj+mjnyA+IGhlbnNob2t1XCA7Civlt6XnjocgPiBrb3VyaXRzdVwgOwor5q2M5ZCIID4gdXRhYXdhc2VcIDsKK+i6kei6hSA+IHRzdXRzdWppXCA7CivmrYzlj6MgPiB1dGFndWNoaVwgOwor6bC55pyoID4ga2F0c3VvZ2lcIDsKK+i/q+aSgyA+IGhha3VnZWtpXCA7Civnm7jmp4wgPiBhaWR6dWNoaVwgOwor5rGy44CFID4ga3l1dWt5dXVcIDsKK+WIneaBiyA+IGhhdHN1a29pXCA7CivlhYjnqIsgPiBzYWtpaG9kb1wgOwor552A5oOzID4gY2hha3Vzb3VcIDsKK+iIueizgyA+IGZ1bmFjaGluXCA7CivojLbmuIsgPiBjaGFzaGlidVwgOwor6YCP5b65ID4gdG91dGV0c3VcIDsKK+eXhei6qyA+IGJ5b3VzaGluXCA7CivpgLLlraYgPiBzaGluZ2FrdVwgOwor5qaC6KqsID4gZ2Fpc2V0c3VcIDsKK+iQveS4gSA+IHJha3VjaG91XCA7CivpgJrluLMgPiB0c3V1Y2hvdVwgOwor5bqK5bqXID4gdG9rb21pc2VcIDsKK+iJr+iWrCA+IHJ5b3V5YWt1XCA7CivmrKDloLQgPiBrZXRzdWpvdVwgOwor5YiH5oi7ID4gc2V0c3VyYWlcIDsKK+aomeefsyA+IGh5b3VzZWtpXCA7Civlgb3ph5EgPiBuaXNlZ2FuZVwgOwor55uu5qiZID4gbW9rdWh5b3VcIDsKK+alveiqvyA+IGdha3VjaG91XCA7CivlipvlgIYgPiByaWtpcnlvdVwgOwor6YG45YilID4gc2VuYmV0c3VcIDsKK+WIuuWuoiA+IHNoaWt5YWt1XCA7CivluJ3mrKAgPiB0ZWlrZXRzdVwgOwor5Ye65o2QID4gc2h1dHN1ZW5cIDsKK+edgOW/gyA+IGtpZ29rb3JvXCA7CivpgJDlubQgPiBjaGlrdW5lblwgOwor6a6r55quID4gc2FtZWdhd2FcIDsKK+W6g+W6gyA+IGhpcm9iaXJvXCA7CivmqKrnlLogPiB5b2tvY2hvdVwgOwor6L+R5pelID4ga2luaml0c3VcIDsKK+W6g+W5hSA+IGhpcm9oYWJhXCA7CivlipvkvZwgPiByaWtpc2FrdVwgOwor6bOp5L+hID4ga3l1dXNoaW5cIDsKK+aknOmWsiA+IGtlbicnZXRzdVwgOwor556s5Yi7ID4gc2h1bmtva3VcIDsKK+eZuuedgCA+IGhhdGNoYWt1XCA7CivmpbXoq5YgPiBreW9rdXJvblwgOwor552A5by+ID4gY2hha3VkYW5cIDsKK+WFuOeJqSA+IHRlbmJ1dHN1XCA7Civnmb3nmpkgPiBoYWt1c2VraVwgOwor55m955m9ID4gaGFrdWhha3VcIDsKK+WIh+aDhSA+IHNldHN1am91XCA7CivliJHlvosgPiBrZWlyaXRzdVwgOwor5qiZ55qEID4gaHlvdXRla2lcIDsKK+WHuuaJgCA+IGRlZG9rb3JvXCA7Civov73lvrQgPiB0c3VpY2hvdVwgOwor552A5bqVID4gY2hha3V0ZWlcIDsKK+WFmueVpSA+IHRvdXJ5YWt1XCA7CivmpbXoqIAgPiBreW9rdWdlblwgOwor5bqK5bGxID4gdG9rb3lhbWFcIDsKK+eXm+immiA+IHRzdXVrYWt1XCA7CivlubTlvI8gPiBuZW5zaGlraVwgOwor55m655mMID4gaGF0c3VnYW5cIDsKK+edgOW4vSA+IGNoYWt1Ym91XCA7CivlhoXmv6AgPiB1Y2hpYm9yaVwgOwor5YWI552AID4gc2VuY2hha3VcIDsKK+edgOW4ryA+IGNoYWt1dGFpXCA7CivluLjmmKUgPiB0b2tvaGFydVwgOwor6L+95byUID4gdHN1aWNob3VcIDsKK+iNt+aNjCA+IG5pc2FiYWtpXCA7CivlubPluq0gPiBoaXJhbml3YVwgOwor5bGx6bOpID4geWFtYWJhdG9cIDsKK+mAsuWigyA+IHNoaW5reW91XCA7CivlsbHps6UgPiB5YW1hZG9yaVwgOwor6YCa5a2mID4gdHN1dWdha3VcIDsKK+eVnOmhniA+IGNoaWt1cnVpXCA7CivlubPlupUgPiBoaXJhem9rb1wgOwor5YWl542EID4gbnl1dWdva3VcIDsKK+WFrOeItSA+IGtvdXNoYWt1XCA7CivoibLoibYgPiBpcm90c3V5YVwgOwor5bmz5bmVID4gaGlyYW1ha3VcIDsKK+WFiOeZuiA+IHNlbnBhdHN1XCA7CivlibTliIcgPiBnYWlzZXRzdVwgOwor55m955OcID4gc2hpcm91cmlcIDsKK+i/keaOpSA+IGtpbnNldHN1XCA7CivoubLouJ4gPiB0c3VrdWJhaVwgOwor6Lui6IG3ID4gdGVuc2hva3VcIDsKK+mAj+WvnyA+IHRvdXNhdHN1XCA7CivliofkvZwgPiBnZWtpc2FrdVwgOwor552A5bK4ID4gY2hha3VnYW5cIDsKK+i7uOe0oiA+IGppa3VzYWt1XCA7CivluK3mlpkgPiBzZWtpcnlvdVwgOwor5qyg5Y+3ID4ga2V0c3Vnb3VcIDsKK+eZuuePviA+IGhhdHN1Z2VuXCA7Civnmb7njaMgPiBoeWFrdWp1dVwgOwor5YOa6Ii5ID4gdG9tb2J1bmVcIDsKK+ecn+W/gyA+IG1hZ29rb3JvXCA7CivliofkuK0gPiBnZWtpY2h1dVwgOwor6LmE6YmEID4gdGVpdGV0c3VcIDsKK+WHuuW8tSA+IHNodXRjaG91XCA7Civlg6fogbcgPiBzb3VzaG9rdVwgOwor6YCA5bGIID4gdGFpa3V0c3VcIDsKK+WJjeWTsiA+IHplbnRldHN1XCA7Civlh7rlu6wgPiBzaHV0c3Vyb1wgOwor6YGp5L2cID4gdGVraXNha3VcIDsKK+WGheazlSA+IHVjaGlub3JpXCA7Civlh7rluqYgPiBzaHV0c3Vkb1wgOwor5YqD5LiAID4ga2FrdWl0c3VcIDsKK+i7uOeusSA+IGppa3ViYWtvXCA7Civls6HosLcgPiBreW91a29rdVwgOwor5Ye65bitID4gc2h1c3Nla2lcIDsKK+WIpeWjsiA+IGJldHN1YmFpXCA7CivluJ3ml6UgPiB0ZWlqaXRzdVwgOwor5qeL56+JID4ga291Y2hpa3VcIDsKK+ebruaSgyA+IG1va3VnZWtpXCA7Civou43ogbcgPiBndW5zaG9rdVwgOwor5YiG5bGAID4gYnVua3lva3VcIDsKK+WGrOacjSA+IGZ1eXVmdWt1XCA7CivojLbmnZMgPiBjaGFzaGFrdVwgOwor6a6u54OIID4gc2VucmV0c3VcIDsKK+mrmOiqrCA+IGtvdXNldHN1XCA7CivlhpnmpI0gPiBzaGFzaG9rdVwgOwor5Yil5aCCID4gYmV0c3Vkb3VcIDsKK+WIhuWuvyA+IGJ1bnNodWt1XCA7Civlhajmu4UgPiB6ZW5tZXRzdVwgOwor5bGx6aKoID4geWFtYWthemVcIDsKK+iNieaRuiA+IGt1c2F6dXJpXCA7CivlhYjniakgPiBzYWtpbW9ub1wgOwor55m+54K5ID4gaHlha3V0ZW5cIDsKK+mAhuWkoiA+IHNha2F5dW1lXCA7CivlhYnnhrEgPiBrb3VuZXRzdVwgOwor5YmN5YiXID4gemVucmV0c3VcIDsKK+mAhuWigyA+IGd5YWtreW91XCA7CivnmYfnmaogPiBrYW5zaGFrdVwgOwor6LuN57iuID4gZ3Vuc2h1a3VcIDsKK+murea8gSA+IHNha2VyeW91XCA7CivpgZTkurogPiB0YXRzdWppblwgOwor6Imy57SZID4gc2hpa2lzaGlcIDsKK+eZvea/gSA+IGhha3VkYWt1XCA7CivlhIHnp4AgPiBzaHVuc2h1dVwgOwor5bmF5bqDID4gaGFiYWhpcm9cIDsKK+W5s+WjsCA+IGh5b3VzaG91XCA7CivlsbHpnKcgPiB5YW1hZ2lyaVwgOwor6YC45Ye6ID4gaXNzaHV0c3VcIDsKK+ebl+aSriA+IHRvdXNhdHN1XCA7CivlhaXmtbQgPiBueXV1eW9rdVwgOwor5qyg5L6/ID4ga2V0c3ViaW5cIDsKK+i7veefsyA+IGthcnVpc2hpXCA7CivliIflprsgPiBraXJpenVtYVwgOwor5be75pyrID4ga2FubWF0c3VcIDsKK+mAmuWVhiA+IHRzdXVzaG91XCA7Civot53pqqggPiBreW9rb3RzdVwgOwor5YWl5rSlID4gbnl1dXNoaW5cIDsKK+eUn+mmliA+IG5hbWFrdWJpXCA7CivlhaXmtJsgPiBueXV1cmFrdVwgOwor55u05oOFID4gY2hva3Vqb3VcIDsKK+WHtuWuhSA+IGt5b3V0YWt1XCA7CivlsbHpmpsgPiB5YW1hZ2l3YVwgOwor5bqt5YWIID4gbml3YXNha2lcIDsKK+WxsemZsCA+IHlhbWFrYWdlXCA7CivliYPliIAgPiBrYW1pc29yaVwgOwor5qiq5rOiID4geW9rb25hbWlcIDsKK+edgOWcsCA+IGNoYWt1Y2hpXCA7Civnm5fmjpggPiB0b3VrdXRzdVwgOwor55yB5bqBID4gc2hvdWNob3VcIDsKK+eVmemHkSA+IHRvbWVnYW5lXCA7CivmqYvmooEgPiBreW91cnlvdVwgOwor55S66ZW3ID4gY2hvdWNob3VcIDsKK+WxnumgmCA+IHpva3VyeW91XCA7CivpgJrlkYogPiB0c3V1a29rdVwgOwor5YmN5YCfID4gemVuc2hha3VcIDsKK+asoOS5jyA+IGtldHN1Ym91XCA7CivmpbXoh7QgPiBreW9rdWNoaVwgOwor5Yil5ZG9ID4gYmV0c3VtZWlcIDsKK+iJr+etliA+IHJ5b3VzYWt1XCA7CivnlJjpo58gPiBhbWFzaG9rdVwgOwor5YaF5p6gID4gdWNoaXdha3VcIDsKK+WIpeWQjSA+IGJldHN1bWVpXCA7CivmqYvmna0gPiBoYXNoaWd1aVwgOwor5Yil5Y+3ID4gYmV0c3Vnb3VcIDsKK+api+admSA+IGhhc2hpZ3VpXCA7CivlgJ/piq0gPiBzaGFrdXNlblwgOwor55yJ5bC7ID4gbWF5dWppcmlcIDsKK+ecn+WmgiA+IHNoaW4nJ255b1wgOwor6Iul5rC0ID4gd2FrYW1penVcIDsKK+mAmuWKmyA+IHRzdXVyaWtpXCA7CivlupflhYggPiBtaXNlc2FraVwgOwor55WU6YGTID4gYXplbWljaGlcIDsKK+iLpeauvyA+IHdha2F0b25vXCA7CivpgJrliYcgPiB0c3V1c29rdVwgOwor5Yid5Y+jID4gc2hva3VjaGlcIDsKK+aoveafvyA+IHRhcnVnYWtpXCA7Civoh63oppogPiBzaHV1a2FrdVwgOwor6YCx5LyRID4gc2h1dWt5dXVcIDsKK+ecgeWvnyA+IHNlaXNhdHN1XCA7CivmqKrmp5ggPiB5b2tvemFtYVwgOwor5qiq5qeNID4geW9rb3lhcmlcIDsKK+WGt+W+uSA+IHJlaXRldHN1XCA7CivnnaPkv4MgPiB0b2t1c29rdVwgOwor5Yik5YilID4gaGFuYmV0c3VcIDsKK+iKs+eDiCA+IGhvdXJldHN1XCA7CivluLjlrqIgPiBqb3VreWFrdVwgOwor5biz5bC7ID4gY2hvdWppcmlcIDsKK+WHuuWcnyA+IHNodXRzdWRvXCA7Civoi5fmsLQgPiBuYXdhbWl6dVwgOwor5YWI5rG6ID4gc2Vua2V0c3VcIDsKK+i7veeOhyA+IGtlaXNvdHN1XCA7CivlsbHpib4gPiB5YW1hYm9rb1wgOwor6auE6JmrID4genVpbXVzaGlcIDsKK+eahuanmCA+IG1pbmFzYW1hXCA7CivliKXlhowgPiBiZXNzYXRzdVwgOwor5Yil5YaKID4gYmVzc2F0c3VcIDsKK+W4t+WtkCA+IGthdGFiaXJhXCA7CivojYnluIIgPiBrdXNhaWNoaVwgOwor55m95qqAID4gYnlha3VkYW5cIDsKK+iLpeanmCA+IHdha2FzYW1hXCA7Civnm7TlsIQgPiBjaG9rdXNoYVwgOwor5bGx6YeMID4geWFtYXphdG9cIDsKK+mAgOWNtCA+IHRhaWt5YWt1XCA7Civov73lj4ogPiB0c3Vpa3l1dVwgOwor5qeN546JID4geWFyaWRhbWFcIDsKK+eUsumJhCA+IGtvdXRldHN1XCA7CivlsYDpnaIgPiBreW9rdW1lblwgOwor6YCa5L+hID4gdHN1dXNoaW5cIDsKK+altee3miA+IGt5b2t1c2VuXCA7CivpgJrkv5cgPiB0c3V1em9rdVwgOwor6Ii557iBID4gZnVuYWJlcmlcIDsKK+eak+aciCA+IGtvdWdldHN1XCA7CivoibLnm7ggPiBzaGlraXNvdVwgOwor6Imy55uyID4gc2hpa2ltb3VcIDsKK+ecieWiqCA+IG1heXV6dW1pXCA7CivlhoXmjqUgPiBuYWlzZXRzdVwgOwor5be05oimID4gdG9tb2VzZW5cIDsKK+WFqOabsiA+IHplbmt5b2t1XCA7CivlvpDjgIUgPiBzb3Jvc29yb1wgOwor6Lu454mpID4gamlrdW1vbm9cIDsKK+alree4viA+IGd5b3VzZWtpXCA7CivlhaXmnKggPiBueXV1Ym9rdVwgOwor55m75qW1ID4gdG91a3lva3VcIDsKK+altee0sCA+IGdva3Vib3NvXCA7CivlhaXmnJ0gPiBueXV1Y2hvdVwgOwor6YCB5YilID4gc291YmV0c3VcIDsKK+i2s+mmliA+IGFzaGlrdWJpXCA7CivlhbzmkYIgPiBrZW5zZXRzdVwgOwor5Yil5L6/ID4gYmV0c3ViaW5cIDsKK+W5tOWIpSA+IG5lbmJldHN1XCA7CivlsYDpmZAgPiBreW9rdWdlblwgOwor55Sf6YyyID4gbmFtYXJva3VcIDsKK+W3p+aLmSA+IGtvdXNldHN1XCA7Civnmb3mooUgPiBzaGlyYXVtZVwgOwor6IeG6KqsID4gb2t1c2V0c3VcIDsKK+WFiOanmCA+IHNha2lzYW1hXCA7Civlhajml6UgPiB6ZW5qaXRzdVwgOwor5biD5byVID4gbnVub2Jpa2lcIDsKK+ebo+WvnyA+IGthbnNhdHN1XCA7CivliIblipsgPiBidW5yeW9rdVwgOwor5YKN6ICzID4ga2F0YW1pbWlcIDsKK+eVpeiogCA+IHJ5YWt1Z2VuXCA7CivliKXkurogPiBiZXRzdW5pblwgOwor5YiG5YmyID4gYnVua2F0c3VcIDsKK+Wwj+mtmiA+IGtvemFrYW5hXCA7Civlt6bmiYsgPiBoaWRhcml0ZVwgOwor6Imy55S6ID4gaXJvbWFjaGlcIDsKK+iJsueUtyA+IGlyb290b2tvXCA7Civmpb3nq6AgPiBnYWt1c2hvdVwgOwor5YiG5YilID4gYnVuYmV0c3VcIDsKK+WIhuWIlyA+IGJ1bnJldHN1XCA7CivprLHnl4UgPiB1dHN1YnlvdVwgOwor6YCG5L+uID4gZ3lha3VzaHVcIDsKK+ebtOWjsiA+IGNob2t1YmFpXCA7CivlgJ/osrggPiBzaGFrdXRhaVwgOwor5YCf6LKhID4gc2hha3V6YWlcIDsKK+WGrOWxsSA+IGZ1eXV5YW1hXCA7CivliIblhoogPiBidW5zYXRzdVwgOwor6LuN55WlID4gZ3Vucnlha3VcIDsKK+eUqOmBlCA+IHlvdXRhdHN1XCA7CivojZLlpLcgPiBhcmFlYmlzdVwgOwor5qW156uvID4ga3lva3V0YW5cIDsKK+ecn+WNlyA+IG1hbWluYW1pXCA7CivnlaXoo4UgPiByeWFrdXNvdVwgOwor5YiX5LydID4gcmV0c3VkZW5cIDsKK+WFseaMryA+IGt5b3VzaGluXCA7CivoiLnnq68gPiBmdW5hYmF0YVwgOwor6a+o5bqnID4ga3VqaXJhemFcIDsKK+edgOS7uyA+IGNoYWt1bmluXCA7CivovrvloIIgPiB0c3VqaWRvdVwgOwor5L+66YGUID4gb3JldGFjaGlcIDsKK+ecn+WLhyA+IHNoaW4nJ3l1dVwgOwor5YKY57SZID4ga2FzYWdhbWlcIDsKK+eZveaYvCA+IGhha3VjaHV1XCA7Civnl7znlr4gPiBrb3NoaXRzdVwgOwor5Ye65YemID4gZGVkb2tvcm9cIDsKK+WBveiAhSA+IG5pc2Vtb25vXCA7CivlhYvmnI0gPiBrb2t1ZnVrdVwgOwor55S76LOqID4gZ2FzaGl0c3VcIDsKK+i3s+i6jSA+IGNob3V5YWt1XCA7Civov73kvLggPiB0c3Vpc2hpblwgOwor55m65piOID4gaGF0c3VtZWlcIDsKK+mAhuS4iiA+IGd5YWt1am91XCA7CivlhYjmnIggPiBzZW5nZXRzdVwgOwor5bmz5LuEID4gaHlvdXNva3VcIDsKK+WGhuW9oiA+IG1hcnVnYXRhXCA7CivlsJHpoY0gPiBzaG91Z2FrdVwgOwor6L+U5Y20ID4gaGVua3lha3VcIDsKK+Wwj+mhjSA+IHNob3VnYWt1XCA7Civlh7blhYYgPiBreW91Y2hvdVwgOwor6amA6YCyID4gYmFrdXNoaW5cIDsKK+alk+ezliA+IGthZWRldG91XCA7CivluZXlhoUgPiBtYWt1dWNoaVwgOwor5be75bC6ID4gbWFraWpha3VcIDsKK+WFiOaXpSA+IHNlbmppdHN1XCA7CivlgJ/opqcgPiBzaGFrdXJhblwgOwor6aeS6bOlID4ga29tYWRvcmlcIDsKK+WBpeiEmiA+IGtlbmt5YWt1XCA7CivluZXlg5ogPiBiYWt1cnlvdVwgOwor5YaZ5a6fID4gc2hhaml0c3VcIDsKK+WFg+aXpSA+IGdhbmppdHN1XCA7Civnmb3mj48gPiBoYWt1YnlvdVwgOwor5bC76YeNID4gc2hpcmlvbW9cIDsKK+iEm+mqqCA+IGtlaWtvdHN1XCA7CivlhYPmlrkgPiBtb3Rva2F0YVwgOwor55m65o+aID4gaGF0c3V5b3VcIDsKK+iMtuWjuiA+IGNoYXRzdWJvXCA7Civkv67ouqsgPiBzaHV1c2hpblwgOwor55m65o6YID4gaGFra3V0c3VcIDsKK+W3neW6lSA+IGthd2F6b2tvXCA7Civlt53luoogPiBrYXdhZG9rb1wgOwor5Ye25L2cID4ga3lvdXNha3VcIDsKK+amgueVpSA+IGdhaXJ5YWt1XCA7Civlt53luYUgPiBrYXdhaGFiYVwgOwor5Ye65LqsID4gc2h1a2t5b3VcIDsKK+WCt+eXhSA+IHNob3VieW91XCA7CivmpI7ojLggPiBzaGlpdGFrZVwgOwor5bee5beeID4gc2h1dXNodXVcIDsKK+WBnOiBtyA+IHRlaXNob2t1XCA7CivkvpHpo58gPiB5dXVzaG9rdVwgOwor5YaF5bGAID4gbmFpa3lva3VcIDsKK+eUt+imqiA+IG90b2tvb3lhXCA7Civlh5vlhr0gPiByaW5yZXRzdVwgOwor6Iqx5p+EID4gaGFuYWdhcmFcIDsKK+WFrOW8jyA+IGtvdXNoaWtpXCA7CivlsbHopZ4gPiB5YW1haGlkYVwgOwor6L675Y2gID4gdHN1aml1cmFcIDsKK+anmOanmCA+IHNhbWF6YW1hXCA7CivnnJ/kuK0gPiBtYW4nJ25ha2FcIDsKK+WGheWvhiA+IG5haW1pdHN1XCA7CivoirHmnZ8gPiBoYW5hdGFiYVwgOwor5YaF5a6fID4gbmFpaml0c3VcIDsKK+WFseW4gyA+IHRvbW9udW5vXCA7CivlsbHoo74gPiB5YW1hc3Vzb1wgOwor6auY56m6ID4gdGFrYXpvcmFcIDsKK+iKseacrSA+IGhhbmFmdWRhXCA7Civnmb7mhYsgPiBoeWFrdXRhaVwgOwor55eU55a+ID4gamlzaGl0c3VcIDsKK+WFq+W5oSA+IGhhY2hpbWFuXCA7Civlt6Hlr58gPiBqdW5zYXRzdVwgOwor6Lu95qWtID4ga2FydXdhemFcIDsKK+W3neWwuyA+IGthd2FqaXJpXCA7Civnm7TliY0gPiBjaG9rdXplblwgOwor5qOS6KGTID4gYm91anV0c3VcIDsKK+iNieWPoiA+IGt1c2FtdXJhXCA7CivoirHmmYIgPiBoYW5hZG9raVwgOwor5YWl5bmVID4gbnl1dW1ha3VcIDsKK+ebtOWIgCA+IGNob2t1dG91XCA7Civnmbrmg4UgPiBoYXRzdWpvdVwgOwor5L+z6KyUID4gaGFpZ3lha3VcIDsKK+WyqeiEiCA+IGdhbm15YWt1XCA7CivluLPlhYMgPiBjaG91bW90b1wgOwor55eF55qEID4gYnlvdXRla2lcIDsKK+aoquW5hSA+IHlva29oYWJhXCA7Civnl4XnmZYgPiBieW91aGVraVwgOwor6IO46auYID4gbXVuYWRha2FcIDsKK+S/g+mAsiA+IHNva3VzaGluXCA7CivmqJnlvrQgPiBoeW91Y2hvdVwgOwor55eF55eHID4gYnlvdXNob3VcIDsKK+WGt+WNtCA+IHJlaWt5YWt1XCA7Civoho/ooYAgPiBrb3VrZXRzdVwgOwor5YK354mpID4ga2l6dW1vbm9cIDsKK+eZvuW8iiA+IGh5YWt1aGVpXCA7Civlh53kubMgPiBneW91bnl1dVwgOwor55Wc6IiOID4gY2hpa3VzaGFcIDsKK+WFseWtpiA+IGt5b3VnYWt1XCA7CivlhoXlo5UgPiB1Y2hpYm9yaVwgOwor5bCR6YePID4gc2hvdXJ5b3VcIDsKK+WFqOWxgCA+IHplbmt5b2t1XCA7CivlhYvlvqkgPiBrb2t1ZnVrdVwgOwor55m+5bm0ID4gaHlha3VuZW5cIDsKK+i2s+i7vSA+IGFzaGlnYXJ1XCA7CivlsI/ph48gPiBzaG91cnlvdVwgOwor5YGl562GID4ga2VucGl0c3VcIDsKK+WvkumkhSA+IGthbm1vY2hpXCA7Civlr67plbcgPiByeW91Y2hvdVwgOwor5YWI5b25ID4gc2VuJyd5YWt1XCA7Civkv4rotrMgPiBzaHVuc29rdVwgOwor5YaF5aCAID4gdWNoaWJvcmlcIDsKK+WFpeWvgiA+IG55dXVqYWt1XCA7Civoh6PnsY0gPiBzaGluc2VraVwgOwor5L+h6KqNID4gc2hpbicnbmluXCA7CivlhoblnosgPiBtYXJ1Z2F0YVwgOwor6L6b5YudID4gc2hpbnNob3VcIDsKK+WFpeWtpiA+IG55dXVnYWt1XCA7Civmpa3niakgPiB3YXphbW9ub1wgOwor6LWk6Z20ID4gYWthZ3V0c3VcIDsKK+i2s+i3oSA+IHNva3VzZWtpXCA7Civkv6HoqLwgPiBzaGluc2hvdVwgOwor5bee5aKDID4gc2h1dWt5b3VcIDsKK+S/oeiolyA+IHNoaW50YWt1XCA7Civlrr/pp4UgPiBzaHVrdWVraVwgOwor5qW154K5ID4ga3lva3V0ZW5cIDsKK+S/l+iqvyA+IHpva3VjaG91XCA7CivoiIznmYwgPiB6ZXRzdWdhblwgOwor55u05LitID4gdGFkYW5ha2FcIDsKK+iKseaIvyA+IGhhbmFmdXNhXCA7Civnm7TkuIogPiBjaG9rdWpvdVwgOwor55ar55eFID4geWFrdWJ5b3VcIDsKK+iLpeWuriA+IHdha2FtaXlhXCA7CivlhYPluLMgPiBtb3RvY2hvdVwgOwor5a+b6ZeKID4ga2Fua2F0c3VcIDsKK+WvuOmJhCA+IHN1bnRldHN1XCA7Civnmb7lrrMgPiBoeWFrdWdhaVwgOwor5YG255m6ID4gZ3V1aGF0c3VcIDsKK+Wwj+i6qyA+IHNob3VzaGluXCA7Civlrr/poZggPiBzaHVrdWdhblwgOwor55Sf6JasID4gc2hvdXlha3VcIDsKK+Wuv+mhjCA+IHNodWt1ZGFpXCA7Civnk7boqbAgPiBiaW5kenVtZVwgOwor5YGP56qfID4gaGVua3V0c3VcIDsKK+WFiOWxsSA+IHNha2l5YW1hXCA7CivnlLfoibIgPiBuYW5zaG9rdVwgOwor6ISx6LyqID4gZGF0c3VyaW5cIDsKK+i5tOeQgyA+IHNodXVreXV1XCA7CivlgLnntIQgPiBrZW4nJ3lha3VcIDsKK+iNieS4iCA+IGt1c2F0YWtlXCA7CivlhaXlob4gPiBueXV1anVrdVwgOwor6auY546HID4ga291cml0c3VcIDsKK+mnv+i2syA+IHNodW5zb2t1XCA7CivlhKrlvaIgPiB5YXNhZ2F0YVwgOwor5YWI5a6iID4gc2Vua3lha3VcIDsKK+eWteeJqSA+IGtpenVtb25vXCA7Civkv5fooYYgPiB6b2t1c2h1dVwgOwor5bGx6IaaID4geWFtYWhhZGFcIDsKK+amleaouSA+IGdhanVtYXJ1XCA7CivlhYjlrokgPiBzYWtpeWFzdVwgOwor6aas6Z2iID4gdW1hZHp1cmFcIDsKK+ebl+S8kCA+IHRvdWJhdHN1XCA7Civnmb7lp5MgPiBoeWFrdXNlaVwgOwor5bKp56qfID4gZ2Fua3V0c3VcIDsKK+attOOAhSA+IHJla2lyZWtpXCA7CivlhYXlrp8gPiBqdXVqaXRzdVwgOwor6Iqx5b2iID4gaGFuYWdhdGFcIDsKK+ebl+S6uiA+IG51c3ViaXRvXCA7Civnmb3lppkgPiBzaGlyb3RhZVwgOwor5bGx6ISIID4geWFtYW5hbWlcIDsKK+iKseW8gSA+IGhhbmFiaXJhXCA7CivlsbHogowgPiB5YW1haGFkYVwgOwor5YWl5Zu9ID4gbnl1dWtva3VcIDsKK+altea0iyA+IGt5b2t1eW91XCA7Civnmb3lo4EgPiBoYWt1aGVraVwgOwor6auY54axID4ga291bmV0c3VcIDsKK+eZveWiqCA+IGhha3Vib2t1XCA7Civnmbrlo7IgPiBoYXRzdWJhaVwgOwor5YaF5YqbID4gbmFpcnlva3VcIDsKK+i1pOmKhSA+IHNoYWt1ZG91XCA7Civlgb3niakgPiBuaXNlbW9ub1wgOwor55qu5YmlID4ga2F3YWhhZ2lcIDsKK+W3qOWIuSA+IGt5b3NhdHN1XCA7Civpqqjnm6QgPiBrb3RzdWJhblwgOwor6a+J5Y+jID4ga29pZ3VjaGlcIDsKK+eUn+iJsiA+IHNlaXNob2t1XCA7CivlhYjlpKogPiBzYWtpYnV0b1wgOwor6LaF6LaKID4gY2hvdWV0c3VcIDsKK+WumumjnyA+IHRlaXNob2t1XCA7CivlhbXljZIgPiBoZWlzb3RzdVwgOwor5qeY5byPID4geW91c2hpa2lcIDsKK+S8tOmjnyA+IGJhbnNob2t1XCA7CivlhbXlipsgPiBoZWlyeW9rdVwgOwor5qW95qW9ID4gcmFrdXJha3VcIDsKK+mrmOa9riA+IHRha2FzaGlvXCA7CivlhoXlgbQgPiB1Y2hpZ2F3YVwgOwor6ISF6L+rID4ga3lvdWhha3VcIDsKK+mrmOa9lCA+IGtvdWtldHN1XCA7CivohbnohpwgPiBmdWt1bWFrdVwgOwor5YaF5YCJID4gdWNoaWd1cmFcIDsKK+iKseWuiCA+IGhhbmFtb3JpXCA7Civog7jpg60gPiBreW91a2FrdVwgOwor5YW25YW2ID4gc29yZXpvcmVcIDsKK+eXheavkiA+IGJ5b3Vkb2t1XCA7CivmpbXmpb0gPiBnb2t1cmFrdVwgOwor5qW15qW1ID4gZ29rdWdva3VcIDsKK+eXheattCA+IGJ5b3VyZWtpXCA7CivoirHlq4EgPiBoYW5heW9tZVwgOwor5YWo5YqbID4gemVucnlva3VcIDsKK+WFseWFsSA+IHRvbW9kb21vXCA7CivoirHlqb8gPiBoYW5hbXVrb1wgOwor6LSL6aaWID4gbmlzZWt1YmlcIDsKK+S+m+iolyA+IGt5b3V0YWt1XCA7Civoi6XlkJsgPiB3YWthZ2ltaVwgOwor5bGA6IiOID4ga3lva3VzaGFcIDsKK+W3nuS/lyA+IHNodXV6b2t1XCA7Civkv6HohbkgPiBzaGlucHVrdVwgOwor5qSN55SfID4gc2hva3VzZWlcIDsKK+aoqeWKmyA+IGtlbnJ5b2t1XCA7CivlhKrlpbMgPiB5YXNhb24nJ2FcIDsKK+eUu+etliA+IGtha3VzYWt1XCA7Civmn5Ppq6ogPiBzZW5wYXRzdVwgOwor5a6/6YWUID4gc2h1a3VzdWlcIDsKK+i1q+i1qyA+IGtha3VrYWt1XCA7CivkvLjplbcgPiBzaGluY2hvdVwgOwor5a+G6YCgID4gbWl0c3V6b3VcIDsKK+alveabsiA+IGdha2t5b2t1XCA7Civpq5jms6IgPiB0YWthbmFtaVwgOwor5Lya6aOfID4ga2Fpc2hva3VcIDsKK+WAkueriyA+IHRvdXJpdHN1XCA7Civkv5foh60gPiB6b2t1c2h1dVwgOwor6Imy5oSfID4gc2hpa2lrYW5cIDsKK+W3puS4iiA+IGhpZGFyaXVlXCA7CivlhYjlk7IgPiBzZW50ZXRzdVwgOwor5qW15p2xID4ga3lva3V0b3VcIDsKK+iJsuaDhSA+IHNoaWtpam91XCA7CivprZrlsYsgPiBzYWthbmF5YVwgOwor6Lez566xID4gdG9iaWJha29cIDsKK+i7n+W8jyA+IG5hbnNoaWtpXCA7Civpq5jmrr8gPiB0YWthZG9ub1wgOwor5YGP54mHID4ga2F0YWhhcmFcIDsKK+W3neS4iiA+IGthd2FrYW1pXCA7CivlsbHnqIsgPiB5YW1haG9kb1wgOwor55m65YuVID4gaGF0c3Vkb3VcIDsKK+WFiOWPoyA+IHNlbmt1Y2hpXCA7CivogovpqqggPiByb2trb3RzdVwgOwor55Wc55SjID4gY2hpa3VzYW5cIDsKK+iJsuW9qSA+IHNoaWtpc2FpXCA7Civoia/lv4MgPiByeW91c2hpblwgOwor55Sf57GzID4gbmFtYWdvbWVcIDsKK+eUqOethiA+IHlvdWhpdHN1XCA7CivlhaXkv6EgPiBueXV1c2hpblwgOwor6IeT54mpID4gem91bW90c3VcIDsKK+S/l+e/kiA+IHpva3VzaHV1XCA7CivpgZnjgIUgPiBoYXJ1YmFydVwgOwor6aqo54GwID4ga290c3ViYWlcIDsKK+iIueaXhSA+IGZ1bmF0YWJpXCA7CivoiLnmlrkgPiBmdW5ha2F0YVwgOwor6Iqx5ZySID4gaGFuYXpvbm9cIDsKK+WFpeS8uCA+IG55dXVzaGluXCA7CivlhYnlipsgPiBrb3VyeW9rdVwgOwor6LuN5b6LID4gZ3Vucml0c3VcIDsKK+i7jeW9uSA+IGd1bicneWFrdVwgOwor55m+5YSEID4gaHlha3Vva3VcIDsKK+WxkeexoCA+IGt1enVrYWdvXCA7Civnl5vmkoMgPiB0c3V1Z2VraVwgOwor5YWo5LmzID4gemVuJydueXV1XCA7CivmoLzoqr8gPiBrYWt1Y2hvdVwgOwor5YWl5LqsID4gbnl1dWt5b3VcIDsKK+i8uOWHuiA+IHl1c2h1dHN1XCA7CivmpoLmi6wgPiBnYWlrYXRzdVwgOwor6Iag552AID4ga291Y2hha3VcIDsKK+S/oee1jCA+IHNoaW5reW91XCA7CivkvbXoqK0gPiBoZWlzZXRzdVwgOwor55m+5YCNID4gaHlha3ViYWlcIDsKK+i7iuW6pyA+IGt1cnVtYXphXCA7CivlhYjlhaUgPiBzZW4nJ255dXVcIDsKK+aoquS4gSA+IHlva29jaG91XCA7CivlgJ/nlKggPiBzaGFrdXlvdVwgOwor5a6/6LODID4geWFkb2NoaW5cIDsKK+eVnOeKrCA+IGNoaWt1a2VuXCA7Civlgo3mnZYgPiBzb2JhZHp1ZVwgOwor5YWD5YWDID4gbW90b21vdG9cIDsKK+WvneiiiyA+IG5lYnVrdXJvXCA7Civoip3lnLAgPiBzaGliYWNoaVwgOwor55qE5LitID4gdGVraWNodXVcIDsKK+Wwsee4myA+IHNodXViYWt1XCA7Civlr4borIAgPiBtaXRzdWJvdVwgOwor5a+G6KuHID4gbWl0c3VkYW5cIDsKK+eZuuS7pCA+IGhhdHN1cmVpXCA7Civoia/lsIYgPiByeW91c2hvdVwgOwor5a6i6LuKID4ga3lha3VzaGFcIDsKK+iEseiJsiA+IGRhc3Nob2t1XCA7Civnmb7kuJYgPiBoeWFrdXNlaVwgOwor6auY5pytID4ga291c2F0c3VcIDsKK+eZvuS4hyA+IGh5YWt1bWFuXCA7CivlsI/ohbggPiBzaG91Y2hvdVwgOwor5LuZ6aqoID4gc2Vua290c3VcIDsKK+WuiemFkiA+IHlhc3V6YWtlXCA7Civlg7vlooMgPiBoZWtpa3lvdVwgOwor5a2m6ZW3ID4gZ2FrdWNob3VcIDsKK+i7iuWxiyA+IGt1cnVtYXlhXCA7CivlhKrliqMgPiB5dXVyZXRzdVwgOwor6Lqr5b+DID4gc2hpbnNoaW5cIDsKK+eXm+aDnCA+IHRzdXVzZWtpXCA7Civlgb3mnK0gPiBuaXNlZnVkYVwgOwor6LSL6YeRID4gbmlzZWdhbmVcIDsKK+WAn+eJqSA+IGthcmltb25vXCA7CivluqbjgIUgPiB0YWJpdGFiaVwgOwor6LWk6JuZID4gYWthZ2FlcnVcIDsKK+WCt+W/gyA+IHNob3VzaGluXCA7Civku5jppqwgPiB0c3VrZXVtYVwgOwor6LWk6JmrID4gYWthbXVzaGlcIDsKK+S9l+iogCA+IHdhYmlnb3RvXCA7CivnlJ/nmq4gPiBuYW1ha2F3YVwgOwor5YG05p2WID4gc29iYWR6dWVcIDsKK+alteaApyA+IGt5b2t1c2VpXCA7Civnl5vlv4MgPiB0c3V1c2hpblwgOwor6Imy5aWzID4gaXJvb24nJ25hXCA7CivovKrkvJAgPiByaW5iYXRzdVwgOwor5YCN546HID4gYmFpcml0c3VcIDsKK+S/l+ensCA+IHpva3VzaG91XCA7CivlsbHnjL8gPiB5YW1hemFydVwgOwor5bGx54yrID4geWFtYW5la29cIDsKK+S8nemBlCA+IGRlbnRhdHN1XCA7CivmpI3msJEgPiBzaG9rdW1pblwgOwor5a+16IejID4gY2hvdXNoaW5cIDsKK+akjeavmyA+IHNob2t1bW91XCA7CivogonpjYsgPiBuaWt1bmFiZVwgOwor55S354i1ID4gZGFuc2hha3VcIDsKK+S6uumtgiA+IGhpdG9kYW1hXCA7Civohbnnl5sgPiBmdWt1dHN1dVwgOwor6Ii55bqVID4gZnVuYXpva29cIDsKK+iIueW6iiA+IGZ1bmFkb2tvXCA7Civpp4bokL0gPiBrYWtlb2NoaVwgOwor5qW15biMID4gZ29rdW1hcmVcIDsKK+S/iuengCA+IHNodW5zaHV1XCA7CivkurrpqqggPiBqaW5rb3RzdVwgOwor5bCP57WQID4ga29tdXN1YmlcIDsKK+Wun+iqrCA+IGppc3NldHN1XCA7CivlsaXniakgPiBoYWtpbW9ub1wgOwor55eF5b60ID4gYnlvdWNob3VcIDsKK+WumuiqrCA+IHRlaXNldHN1XCA7Civoh6jmnIggPiByaW5nZXRzdVwgOwor55eF5byxID4gYnlvdWpha3VcIDsKK+W6g+OAhSA+IGhpcm9iaXJvXCA7CivpqqjmnZAgPiBrb3RzdXphaVwgOwor55Sj54mpID4gc2FuYnV0c3VcIDsKK+WumOiorSA+IGthbnNldHN1XCA7CivmpJzmnK0gPiBrZW5zYXRzdVwgOwor6Iej5pyNID4gc2hpbnB1a3VcIDsKK+iyqumjnyA+IGRvbnNob2t1XCA7Civnl4XluoogPiBieW91c2hvdVwgOwor5L+h55SoID4gc2hpbicneW91XCA7CivohIfohbkgPiB3YWtpYmFyYVwgOwor55Sf54mpID4gbmFtYW1vbm9cIDsKK+S+m+e1piA+IGt5b3VreXV1XCA7CivlsYDnlaogPiBreW9rdWJhblwgOwor5bCP562WID4gc2hvdXNha3VcIDsKK+anjeWFiCA+IHlhcmlzYWtpXCA7Civnl7Dlo7ogPiB0YW50c3Vib1wgOwor6auq5bqKID4ga2FtaWRva29cIDsKK+WvkuiJsiA+IGthbnNob2t1XCA7CivmpI3moL0gPiBzaG9rdXNhaVwgOwor5LyR6LazID4ga3l1dXNva3VcIDsKK+iIueWuvyA+IGZ1bmF5YWRvXCA7Civku4/ploAgPiBidXRzdW1vblwgOwor6Ii55a6iID4gc2Vua3lha3VcIDsKK+WCjeW9uSA+IHdha2l5YWt1XCA7Civogonov6sgPiBuaWt1aGFrdVwgOwor5qC46IacID4ga2FrdW1ha3VcIDsKK+S6oemquCA+IG5ha2lnYXJhXCA7Civoh5jmnIggPiByb3VnZXRzdVwgOwor5qSN5p6XID4gc2hva3VyaW5cIDsKK+WujOiosyA+IGthbicneWFrdVwgOwor6IO46IacID4ga3lvdW1ha3VcIDsKK+mjvemjnyA+IGhvdXNob2t1XCA7Civkv67nhp8gPiBzaHV1anVrdVwgOwor5a6F6Ki6ID4gdGFrdXNoaW5cIDsKK+Wwj+emhCA+IHNob3Vyb2t1XCA7CivkvJ3oqqwgPiBkZW5zZXRzdVwgOwor6Laz55mWID4gYXNoaWt1c2VcIDsKK+iEseeojiA+IGRhdHN1emVpXCA7Civkuqzpn78gPiBreW91a3lvdVwgOwor6Lui5YWlID4gdGVuJydueXV1XCA7Civlr77nq4sgPiB0YWlyaXRzdVwgOwor6IWr54mpID4gc2h1bW90c3VcIDsKK+alteWkpyA+IGt5b2t1ZGFpXCA7CivnlaXmm7ggPiByeWFrdXNob1wgOwor5a6/6IiOID4gc2h1a3VzaGFcIDsKK+i7jeWNkiA+IGd1bnNvdHN1XCA7Civls7Dls7AgPiBtaW5lbWluZVwgOwor5a656ImyID4geW91c2hva3VcIDsKK+S7i+mMryA+IGthaXNoYWt1XCA7Civmo67mo64gPiBzaGluc2hpblwgOwor5bWM5YWlID4ga2FuJydueXV1XCA7Civou5LliKUgPiBrZW5iZXRzdVwgOwor5YG05b25ID4gc29iYXlha3VcIDsKK+i7ouWAnyA+IHRlbnNoYWt1XCA7CivohIrntKIgPiBzZWtpc2FrdVwgOwor5LyR6Ki6ID4ga3l1dXNoaW5cIDsKK+iyoemWpSA+IHphaWJhdHN1XCA7CivnkrDnr4AgPiBrYW5zZXRzdVwgOwor5pyo6bygID4ga2luZXp1bWlcIDsKK+mqqOaKmCA+IGtvc3NldHN1XCA7CivohJrnq4sgPiBreWF0YXRzdVwgOwor5YO75LqLID4gaGlnYWdvdG9cIDsKK+eVpeaWhyA+IHJ5YWt1YnVuXCA7Civou5LlhYggPiBub2tpc2FraVwgOwor5qC557W2ID4ga29uemV0c3VcIDsKK+alteWcsCA+IGt5b2t1Y2hpXCA7Civmnp3pgZMgPiBlZGFtaWNoaVwgOwor5a6/6ICBID4gc2h1a3Vyb3VcIDsKK+S9v+evgCA+IHNoaXNldHN1XCA7Civosrjph5EgPiBrYXNoaWtpblwgOwor6auY5a+fID4ga291c2F0c3VcIDsKK+WAkuanmCA+IHNha2FzYW1hXCA7CivnlJ/mtLsgPiBzZWlrYXRzdVwgOwor6auY5a+GID4ga291bWl0c3VcIDsKK+S7j+mBkyA+IGJ1dHN1ZG91XCA7CivkvZXogIUgPiBuYW5pbW9ub1wgOwor6Imv5L+XID4gcnlvdXpva3VcIDsKK+S9j+iBtyA+IGp1dXNob2t1XCA7Civmn5TooZMgPiBqdXVqdXRzdVwgOwor55Sf5rC0ID4gbmFtYW1penVcIDsKK+iDuOezniA+IG11bmVrdXNvXCA7CivlrqLoiLkgPiBreWFrdXNlblwgOwor6ICQ6aOfID4gdGFpc2hva3VcIDsKK+iAgemqqCA+IHJvdWtvdHN1XCA7CivmnpXovrogPiBtYWt1cmFiZVwgOwor5bCk54mpID4geXV1YnV0c3VcIDsKK+WuouiIjiA+IGt5YWt1c2hhXCA7CivkubHpq6ogPiByYW5wYXRzdVwgOwor5L2T572wID4gdGFpYmF0c3VcIDsKK+eXm+WTrSA+IHRzdXVrb2t1XCA7CivnlJ/mrpYgPiBzZWlzaG9rdVwgOwor5Lq66YeMID4gaGl0b3phdG9cIDsKK+WuouiGsyA+IGt5YWt1emVuXCA7CivogonopqogPiBuaWt1c2hpblwgOwor5a+M57GkID4gdG9taWt1amlcIDsKK+WBteWvnyA+IHRlaXNhdHN1XCA7Civog73nrYYgPiBub3VoaXRzdVwgOwor5Lm+6aKoID4ga2FyYWthemVcIDsKK+mrquWeiyA+IGthbWlnYXRhXCA7Civoia/kuYUgPiByeW91a3l1dVwgOwor5p2R6ZuoID4gbXVyYXNhbWVcIDsKK+i7kuS4piA+IG5va2luYW1pXCA7Civou5LkuIggPiBub2tpdGFrZVwgOwor5a+S56u5ID4ga2FuY2hpa3VcIDsKK+aciOm9oiA+IGdldHN1cmVpXCA7Civmpb3ljKAgPiBnYWt1c2hvdVwgOwor5qW95YudID4gcmFrdXNob3VcIDsKK+i3s+aigSA+IGNob3VyeW91XCA7Civlr5LnqbogPiBzYW11em9yYVwgOwor5Luw6KeSID4gZ3lvdWtha3VcIDsKK+alveWKhyA+IGdha3VnZWtpXCA7Civpo4Tpo4QgPiBoeW91aHlvdVwgOwor5pyo6aqoID4gbW9ra290c3VcIDsKK+S+r+eItSA+IGtvdXNoYWt1XCA7Civnjonpq4QgPiBneW9rdXp1aVwgOwor6IG06Ki6ID4gY2hvdXNoaW5cIDsKK+S/l+a1gSA+IHpva3VyeXV1XCA7CivlrprogbcgPiB0ZWlzaG9rdVwgOwor5a6Y6IG3ID4ga2Fuc2hva3VcIDsKK+WBpeWunyA+IGtlbmppdHN1XCA7Civosarpm6ogPiBnb3VzZXRzdVwgOwor6IG06KaaID4gY2hvdWtha3VcIDsKK+ePjemHjSA+IGNoaW5jaG91XCA7Civnm7TjgIUgPiBqaWtpamlraVwgOwor6Ieq5a6kID4gamlzaGl0c3VcIDsKK+WBtOWjgSA+IHNva3VoZWtpXCA7CivmpJzlsL8gPiBrZW4nJ255b3VcIDsKK+S5sembkSA+IHJhbnphdHN1XCA7CivlsZ7mnJsgPiBzaG9rdWJvdVwgOwor6IG06KGGID4gY2hvdXNodXVcIDsKK+S4rem7kiA+IG5ha2FndXJvXCA7CivmpJzlr58gPiBrZW5zYXRzdVwgOwor5Lq66LazID4gaGl0b2FzaGlcIDsKK+WvvueJqSA+IHRhaWJ1dHN1XCA7CivogonoloQgPiBuaWt1aGFrdVwgOwor546J6aGUID4gZ3lva3VnYW5cIDsKK+mir+miryA+IHNhc3NhdHN1XCA7CivlgY/lsYggPiBoZW5rdXRzdVwgOwor5LuP6KqsID4gYnVzc2V0c3VcIDsKK+WztuWPsCA+IHNoaW1hZGFpXCA7Civku4foro4gPiBreXV1c2h1dVwgOwor5L2155m6ID4gaGVpaGF0c3VcIDsKK+mnkOeVmSA+IGNodXVyeXV1XCA7CivnlaXluL0gPiByeWFrdWJvdVwgOwor5pyd6aOvID4gYXNhbWVzaGlcIDsKK+S9leeoiyA+IG5hbmlob2RvXCA7Civpoqjpo58gPiBmdXVzaG9rdVwgOwor55Wz5bGLID4gdGF0YW1peWFcIDsKK+WBtOWcpyA+IHNva3VhdHN1XCA7CivotJbnvaogPiBzaG9rdXphaVwgOwor6IKp6IKYID4ga2F0YWhpamlcIDsKK+afk+iJsiA+IHNlbnNob2t1XCA7CivouqvkuK0gPiBzaGluY2h1dVwgOwor5p2R6YeMID4gbXVyYXphdG9cIDsKK+S7meihkyA+IHNlbmp1dHN1XCA7Civoh6rlpLEgPiBqaXNoaXRzdVwgOwor5L+X5qW9ID4gem9rdWdha3VcIDsKK+mmluetiyA+IGt1YmlzdWppXCA7CivkvYfnq4sgPiBjaG9yaXRzdVwgOwor6LSL6ICFID4gbmlzZW1vbm9cIDsKK+WvhuedgCA+IG1pdGNoYWt1XCA7CivohbDmnb8gPiBrb3NoaWl0YVwgOwor6IKh6IKJID4gbW9tb25pa3VcIDsKK+iEsea8jyA+IGRhdHN1cm91XCA7Civog7jnl5sgPiBreW91dHN1dVwgOwor5Li46au3ID4gbWFydW1hZ2VcIDsKK+WxiOabsiA+IGt1a2t5b2t1XCA7CivoiLnkurogPiBmdW5hYml0b1wgOwor6aqo5aSqID4gaG9uZWJ1dG9cIDsKK+mrmOWNkiA+IGtvdXNvdHN1XCA7CivlsLHmpa0gPiBzaHV1Z3lvdVwgOwor6aOf6YGTID4gc2hva3Vkb3VcIDsKK+iwt+miqCA+IHRhbmlrYXplXCA7Civkv6HmnI0gPiBzaGlucHVrdVwgOwor5Luu6JG6ID4ga2FyaWJ1a2lcIDsKK+miqOmbqiA+IGZ1dXNldHN1XCA7CivlrozntZAgPiBrYW5rZXRzdVwgOwor5p+U6IKMID4geWF3YWhhZGFcIDsKK+mnkOeLrCA+IGNodXVkb2t1XCA7CivnjonploAgPiBneW9rdW1vblwgOwor6aWS6IiMID4gam91emV0c3VcIDsKK+aciOmjnyA+IGdlc3Nob2t1XCA7CivmoJfnn7MgPiBrdXJpaXNoaVwgOwor5bCP5rOiID4gc2F6YW5hbWlcIDsKK+ebiuOAhSA+IG1hc3VtYXN1XCA7Civlrprnq4sgPiB0ZWlyaXRzdVwgOwor5Li46aaWID4gbWFydWt1YmlcIDsKK+S4remrmCA+IG5ha2FkYWthXCA7Civlrpjnq4sgPiBrYW5yaXRzdVwgOwor6IO9546HID4gbm91cml0c3VcIDsKK+i2s+alrSA+IGFzaGl3YXphXCA7CivmnKjpkLggPiBib2t1dGFrdVwgOwor5Li76aOfID4gc2h1c2hva3VcIDsKK+mpmuaElSA+IGt5b3VnYWt1XCA7Civkv5fmm7IgPiB6b2treW9rdVwgOwor5LuZ6JasID4gc2VuJyd5YWt1XCA7CivkvZznl4UgPiBzYWt1YnlvdVwgOwor5L2V55m+ID4gbmFuYnlha3VcIDsKK+S7geihkyA+IGppbmp1dHN1XCA7Civkv6HmlZkgPiBzaGlua3lvdVwgOwor5qGc5rmvID4gc2FrdXJheXVcIDsKK+aknOWcpyA+IGtlbicnYXRzdVwgOwor5LiA6b2jID4gaGl0b2tvbWFcIDsKK+i2s+aisCA+IGFzaGlrYXNlXCA7CivmnIjpnaIgPiBnZXRzdW1lblwgOwor5Lmz6YWqID4gbnl1dXJha3VcIDsKK+WwveaXpSA+IGppbmppdHN1XCA7CivlsJHmrLIgPiBzaG91eW9rdVwgOwor55S75byVID4ga2FrdWJpa2lcIDsKK+eVmeWtpiA+IHJ5dXVnYWt1XCA7Civlrabnv5IgPiBnYWt1c2h1dVwgOwor6LeL5paHID4gYmF0c3VidW5cIDsKK+WxseW9piA+IHlhbWFiaWtvXCA7CivlsbHlvaIgPiB5YW1hZ2F0YVwgOwor55eF5LitID4gYnlvdWNodXVcIDsKK+Wwj+assiA+IHNob3V5b2t1XCA7CivlgbblipsgPiBndXVyeW9rdVwgOwor5p+T57mUID4gc2Vuc2hva3VcIDsKK+S7u+iBtyA+IG5pbnNob2t1XCA7CivohLHmr5sgPiBkYXRzdW1vdVwgOwor5bCC5rG6ID4gc2Vua2V0c3VcIDsKK+ain+aVtSA+IGt5b3V0ZWtpXCA7CivmnKjpi48gPiBraWJhc2FtaVwgOwor6Iif5Lq6ID4gZnVuYWJpdG9cIDsKK+iyp+ihgCA+IGhpbmtldHN1XCA7CivotrPmnrcgPiBhc2hpa2FzZVwgOwor6ICz6KixID4gbWltaW1vdG9cIDsKK+WCkeS6uiA+IGtldHN1amluXCA7Civlr77msbogPiB0YWlrZXRzdVwgOwor5bCE5q66ID4gc2hhc2F0c3VcIDsKK+S7pOiJsiA+IHJlaXNob2t1XCA7CivlsIHmrrogPiBmdXVzYXRzdVwgOwor5bCP5qeMID4ga29kenVjaGlcIDsKK+Wtpue4viA+IGdha3VzZWtpXCA7CivlsbHlt50gPiB5YW1hZ2F3YVwgOwor6auY5L2OID4gdGFrYWhpa3VcIDsKK+S4remggyA+IG5ha2Fnb3JvXCA7Civogbfog70gPiBzaG9rdW5vdVwgOwor5bGI5oqYID4ga3Vzc2V0c3VcIDsKK+Wun+ebtCA+IGppdGNob2t1XCA7CivohbDmipggPiBrb3NoaW9yZVwgOwor5a6f55uKID4gaml0c3Vla2lcIDsKK+WumuedgCA+IHRlaWNoYWt1XCA7CivmooHmnKggPiByeW91Ym9rdVwgOwor5YG25YG2ID4gdGFtYXRhbWFcIDsKK+absumdoiA+IGt5b2t1bWVuXCA7CivotrPml6kgPiBhc2hpYmF5YVwgOwor5Lit6ZyHID4gY2h1dXNoaW5cIDsKK+iIjOS7oyA+IHpldHN1ZGFpXCA7Civmn7Hnn7MgPiBjaHV1c2VraVwgOwor5bGx5bGxID4geWFtYXlhbWFcIDsKK+S4remalCA+IGNodXVrYWt1XCA7CivlsYDmiYAgPiBreW9rdXNob1wgOwor6LKv6JOEID4gY2hvY2hpa3VcIDsKK+S9jueOhyA+IHRlaXJpdHN1XCA7Civlt57jgIUgPiBzaHV1c2h1dVwgOwor5p+T562GID4gc2VucGl0c3VcIDsKK+S/oeaGkSA+IHNoaW5weW91XCA7CivmoZ/mqYsgPiBzYW5iYXNoaVwgOwor55S75a6kID4gZ2FzaGl0c3VcIDsKK+iCiee0sCA+IG5pa3Vib3NvXCA7CivlrqLnlKggPiBreWFrdXlvdVwgOwor5Lit6ZmQID4gbmFrYWdpcmlcIDsKK+S9leeJqSA+IG5hbmltb25vXCA7CivlsbHlr7ogPiB5YW1hZGVyYVwgOwor54yf6bOlID4gcnlvdWNob3VcIDsKK+WtpuexjSA+IGdha3VzZWtpXCA7CivkuIfpqqggPiBiYW5rb3RzdVwgOwor5L+u5b6pID4gc2h1dWZ1a3VcIDsKK+S7j+iJpiA+IGZ1dHN1a2FuXCA7Civohbnlv4MgPiBmdWt1c2hpblwgOwor5a6f55SoID4gaml0c3V5b3VcIDsKK+S/ruW+lyA+IHNodXV0b2t1XCA7Civog4bnlaUgPiB0YW5yeWFrdVwgOwor5YW244CFID4gc29yZXpvcmVcIDsKK+S4uOmRvyA+IG1hcnVub21pXCA7CivlsbHlroggPiB5YW1hbW9yaVwgOwor6Laz5pG6ID4gYXNoaXp1cmlcIDsKK+mjn+iogCA+IHNob2t1Z2VuXCA7CivlgIvlrqQgPiBrb3NoaXRzdVwgOwor5LqM6KiAID4gZnV0YWtvdG9cIDsKK+S9k+eGsSA+IHRhaW5ldHN1XCA7CivlhbHjgIUgPiB0b21vZG9tb1wgOwor5Luu57a0ID4ga2FyaXRvamlcIDsKK+S8keelpSA+IGt5dXVzaG91XCA7CivlsYjlvpMgPiBrdXRzdWp1dVwgOwor5a6f54++ID4gaml0c3VnZW5cIDsKK+ePvuiBtyA+IGdlbnNob2t1XCA7CivosYHpgZQgPiBrYXR0YXRzdVwgOwor5L+h5b+1ID4gc2hpbicnbmVuXCA7CivpoY7pqqggPiBnYWtrb3RzdVwgOwor5LiJ6aOfID4gc2Fuc2hva3VcIDsKK+S6huimmiA+IHJ5b3VrYWt1XCA7CivkuIDpp5IgPiBoaXRva29tYVwgOwor576k6ZuyID4gbXVyYWt1bW9cIDsKK+aciOmHkSA+IGdldHN1a2luXCA7CivotaTmsoggPiBzZWtpY2hpblwgOwor5LiL6aGOID4gc2hpdGFhZ29cIDsKK+WxseWnqyA+IHlhbWFoaW1lXCA7CivohILmsZcgPiBhYnVyYWFzZVwgOwor6IWw5byBID4ga29zaGliZW5cIDsKK+WuneeOiSA+IGhvdWd5b2t1XCA7CivlsJHmlbUgPiBzaG91dGVraVwgOwor5L615pKDID4gc2hpbmdla2lcIDsKK+mpjeWwhiA+IGd5b3VzaG91XCA7CivkuJjpmbUgPiBreXV1cnlvdVwgOwor55Wl5ZCNID4gcnlha3VtZWlcIDsKK+Wwj+aVtSA+IHNob3V0ZWtpXCA7CivnlaXlj7cgPiByeWFrdWdvdVwgOwor6Laz5oqAID4gYXNoaXdhemFcIDsKK+eVpeWPsiA+IHJ5YWt1c2hpXCA7CivlrprnjocgPiB0ZWlyaXRzdVwgOwor55Wq5Y2SID4gYmFuc290c3VcIDsKK+eVpeWPliA+IHJ5YWt1c2h1XCA7Civlrp/nirYgPiBqaXRzdWpvdVwgOwor5YCf5ZywID4gc2hha3VjaGlcIDsKK+S9teauuiA+IGhlaXNhdHN1XCA7CivogZbogbcgPiBzZWlzaG9rdVwgOwor6IWw5bivID4ga29zaGlvYmlcIDsKK+S4iumdtCA+IHV3YWd1dHN1XCA7Civohpzlo4EgPiBtYWt1aGVraVwgOwor6ISx5paHID4gZGF0c3VidW5cIDsKK+WtmOeriyA+IHNvbnJpdHN1XCA7Civlrp3niakgPiBob3Vtb3RzdVwgOwor5L+X5b2iID4gem9rdWd5b3VcIDsKK+S6uuiGmiA+IGhpdG9oYWRhXCA7CivpoqjotrMgPiBrYXphYXNoaVwgOwor5Lm+6KOCID4ga2FucmV0c3VcIDsKK+ahjuaijyA+IHNoaWtrb2t1XCA7CivkuIDpoIMgPiBoaXRva29yb1wgOwor57+M6YCxID4geW9rdXNodXVcIDsKK+WvvuaXpSA+IHRhaW5pY2hpXCA7CivmnqDntYQgPiB3YWt1Z3VtaVwgOwor5Lq66ISaID4gaGl0b2FzaGlcIDsKK+e/u+iosyA+IGhvbicneWFrdVwgOwor5Lq66ISIID4gamlubXlha3VcIDsKK+WxseWfjiA+IHlhbWFqaXJvXCA7CivpoLjpqqggPiBrZWlrb3RzdVwgOwor5L6b5paZID4ga3lvdXJ5b3VcIDsKK+iEmuacrCA+IGt5YWt1aG9uXCA7CivmnbHoip0gPiB0b3VzaGliYVwgOwor6LWk5qirID4gYWthZ2FzaGlcIDsKK+iAkOidlSA+IHRhaXNob2t1XCA7CivohIrmpI4gPiBzZWtpdHN1aVwgOwor5p+054qsID4gc2hpYmFpbnVcIDsKK+S/ruWtpiA+IHNodXVnYWt1XCA7Civkv4rlvrMgPiBzaHVudG9rdVwgOwor5pyI6LyqID4gZ2V0c3VyaW5cIDsKK+S7sueniyA+IGNodXVzaHV1XCA7CivkuLvov7AgPiBzaHVqdXRzdVwgOwor5Lq66IKMID4gaGl0b2hhZGFcIDsKK+S6uuiCiSA+IGppbicnbmlrdVwgOwor5aqS6YWMID4gYmFpc2hha3VcIDsKK+S+i+aciCA+IHJlaWdldHN1XCA7CivnlJ/lqJggPiBraW11c3VtZVwgOwor5Luj562GID4gZGFpaGl0c3VcIDsKK+iEiuaigSA+IHNla2lyeW91XCA7Civlr4bmrrogPiBtaXNzYXRzdVwgOwor5pq06aOfID4gYm91c2hva3VcIDsKK+WxseWbvSA+IHlhbWFndW5pXCA7CivogbfnqK4gPiBzaG9rdXNodVwgOwor5LiA6ZqbID4gaGl0b2tpd2FcIDsKK+S5vuidlSA+IGthbnNob2t1XCA7CivkuIDpmoUgPiBoaXRvc3VtaVwgOwor5bCx5bqKID4gc2h1dXNob3VcIDsKK+S4iOmVtyA+IHRha2VuYWdhXCA7CivpoK3pq6ogPiB0b3VoYXRzdVwgOwor54yl6ZuRID4gd2FpemF0c3VcIDsKK+iBr+eriyA+IHJlbnJpdHN1XCA7CivohIrmn7EgPiBzZWtpY2h1dVwgOwor6aCt6aqoID4gdG91a290c3VcIDsKK+i2s+W9oiA+IGFzaGlnYXRhXCA7CivlronniakgPiB5YXN1bW9ub1wgOwor5a+S5qW1ID4ga2Fua3lva3VcIDsKK+i2s+W8sSA+IGFzaGl5b3dhXCA7CivlgJnlk4kgPiBzb3Vyb3V5YVwgOwor5L6L5pelID4gcmVpaml0c3VcIDsKK+S4remAnyA+IGNodXVzb2t1XCA7CivnlJ/lo4EgPiBuYW1ha2FiZVwgOwor5pu06L+tID4ga291dGV0c3VcIDsKK+ain+WwhiA+IGt5b3VzaG91XCA7CivlhYPjgIUgPiBtb3RvbW90b1wgOwor6IKJ55qEID4gbmlrdXRla2lcIDsKK+iDuOakjiA+IGt5b3V0c3VpXCA7CivpoqjoqqwgPiBmdXVzZXRzdVwgOwor5qGC5pyIID4ga2VpZ2V0c3VcIDsKK+WupOa4qSA+IHNoaXRzdW9uXCA7Civku5nnqp8gPiBzZW5rdXRzdVwgOwor5a+n5pelID4gbmVpaml0c3VcIDsKK+i0i+eJqSA+IG5pc2Vtb25vXCA7Civnlarku5ggPiBiYW5kenVrZVwgOwor6LWk5p2+ID4gYWthbWF0c3VcIDsKK+eVpeS9kyA+IHJ5YWt1dGFpXCA7CivmooXlubIgPiB1bWVib3NoaVwgOwor5L+X5a2mID4gem9rdWdha3VcIDsKK+iFueWjgSA+IGZ1a3VoZWtpXCA7CivkuK3ou7ggPiBjaHV1amlrdVwgOwor55Wl5LydID4gcnlha3VkZW5cIDsKK+iFuOWjgSA+IGNob3VoZWtpXCA7CivosaHomasgPiB6b3VtdXNoaVwgOwor5p6X56uLID4gcmlucml0c3VcIDsKK+WsjOe+niA+IGt5b3VzaHV1XCA7Civos6rnlpEgPiBzaGl0c3VnaVwgOwor5bGx5ZC5ID4geWFtYWJ1a2lcIDsKK+i4j+WIhyA+IGZ1bWlraXJpXCA7CivlsLHlr50gPiBzaHV1c2hpblwgOwor5p2P6Iy4ID4gYW56dXRha2VcIDsKK+eUn+WbvSA+IHNob3Vrb2t1XCA7Civkv6HlpbMgPiBzaGluJydueW9cIDsKK+adn+iEqSA+IHNva3VzaHV1XCA7CivlsI/lv4MgPiBzaG91c2hpblwgOwor5a6/5qWtID4gc2h1a3Vnb3VcIDsKK+eUs+WRiiA+IHNoaW5rb2t1XCA7Civlr5LmnIggPiBrYW5nZXRzdVwgOwor5pyJ6K2YID4geXV1c2hpa2lcIDsKK+S9mualvSA+IGl0c3VyYWt1XCA7CivlsLHlraYgPiBzaHV1Z2FrdVwgOwor6aSF57ayID4gbW9jaGlhbWlcIDsKK+S9leanmCA+IG5hbmlzYW1hXCA7Civnv4Hosp0gPiBva2luYWdhaVwgOwor5a+M5pytID4gdG9taWZ1ZGFcIDsKK+WxgOWkliA+IGt5b2t1Z2FpXCA7Civpo5/ohrMgPiBzaG9rdXplblwgOwor5p2J6IuUID4gc3VnaWdva2VcIDsKK+WvhuaelyA+IG1pdHN1cmluXCA7CivlgInljZIgPiBzb3Vzb3RzdVwgOwor55Sy5Y2SID4ga291c290c3VcIDsKK+WuouauvyA+IGt5YWt1ZGVuXCA7CivkuKbotrMgPiBuYW1pYXNoaVwgOwor5Lqk57mUID4ga291c2hva3VcIDsKK+eVkeS9nCA+IGhhdGFzYWt1XCA7Civnk6blsYsgPiBrYXdhcmF5YVwgOwor5a6i5q27ID4ga3lha3VzaGlcIDsKK+eUt+WJjSA+IG90b2tvbWFlXCA7CivlsYDloLEgPiBreW9rdWhvdVwgOwor6aGw6LmZID4gaGluc2h1a3VcIDsKK+WuruanmCA+IG1peWFzYW1hXCA7CivkvZzmn4QgPiBzYWt1Z2FyYVwgOwor54yu6YWMID4ga2Vuc2hha3VcIDsKK+mjn+iCsiA+IHNob2t1aWt1XCA7CivpoqjonZUgPiBmdXVzaG9rdVwgOwor5Lih6LazID4gcnlvdXNva3VcIDsKK+S6jOiCoSA+IGZ1dGFtYXRhXCA7Civnk6blrrYgPiBrYXdhcmF5YVwgOwor5LiK6YGUID4gam91dGF0c3VcIDsKK+iGneWFgyA+IGhpemFtb3RvXCA7CivmnJvonIAgPiBib3VzaG9rdVwgOwor5a6/5pybID4gc2h1a3Vib3VcIDsKK+iEseW4vSA+IGRhdHN1Ym91XCA7CivnlLPlh7ogPiBtb3VzaGlkZVwgOwor5p+E54mpID4gZ2FyYW1vbm9cIDsKK+S4iui/sCA+IGpvdWp1dHN1XCA7CivkvZzmm7IgPiBzYWtreW9rdVwgOwor6ICz57OeID4gbWltaWt1c29cIDsKK+iAgeiLpSA+IHJvdW55YWt1XCA7CivogonniZsgPiBuaWt1Z3l1dVwgOwor5bGx5YWDID4geWFtYW1vdG9cIDsKK+WxgOWcsCA+IGt5b2t1Y2hpXCA7Civosp7nr4AgPiB0ZWlzZXRzdVwgOwor5p2f57ibID4gc29rdWJha3VcIDsKK+acq+iRiSA+IG1hdHN1eW91XCA7CivkvZXmnIggPiBuYW5nYXRzdVwgOwor5bC65ZywID4gc2hha3VjaGlcIDsKK+ixmuiNiSA+IGJ1dGFrdXNhXCA7Civmm7Loq5YgPiBreW9rdXJvblwgOwor5bGx5YG0ID4geWFtYWdhd2FcIDsKK+WwkeWwkSA+IHNob3VzaG91XCA7CivlsJHlsIYgPiBzaG91c2hvdVwgOwor5pqX6ZeHID4ga3VyYXlhbWlcIDsKK+S8kea8gSA+IGt5dXVyeW91XCA7CivnjonokbEgPiB0YW1hbmVnaVwgOwor5Lmz6IetID4gbnl1dXNodXVcIDsKK+eUmOWPoyA+IGFtYWt1Y2hpXCA7CivmnKjoj58gPiBtaW1penVrdVwgOwor5ayM56yRID4ga3lvdXNob3VcIDsKK+eUo+WIpSA+IHNhbmJldHN1XCA7CivmnIjonZUgPiBnZXNzaG9rdVwgOwor5bCP5a2mID4gc2hvdWdha3VcIDsKK+anmOOAhSA+IHNhbWF6YW1hXCA7Civkvr/lo7ogPiBiZW50c3Vib1wgOwor5LiA6LybID4gaWNoaXJ5b3VcIDsKK+iznOeJqSA+IHRhbWFtb25vXCA7CivnlJ/liKUgPiBzZWliZXRzdVwgOwor6aaW5p63ID4ga3ViaWthc2VcIDsKK+WtkOeItSA+IHNoaXNoYWt1XCA7CivkvovlvI8gPiByZWlzaGlraVwgOwor54++55SfID4gZ2VuJyduYW1hXCA7CivmnKjoi7ogPiBraWljaGlnb1wgOwor54qs6beyID4gaW51d2FzaGlcIDsKK+acrOiJsiA+IGhvbnNob2t1XCA7CivkubHohIggPiByYW5teWFrdVwgOwor5a6a5qSNID4gdGVpc2hva3VcIDsKK+i7veOAhSA+IGthcnVnYXJ1XCA7Civlr4bmjqUgPiBtaXNzZXRzdVwgOwor5LiA6LqNID4gaWNoaXlha3VcIDsKK+WxseS6uiA+IHlhbWFiaXRvXCA7CivohIfmga8gPiBreW91c29rdVwgOwor57696KGjID4gaGFnb3JvbW9cIDsKK+acjeiWrCA+IGZ1a3V5YWt1XCA7CivlsZ7lg5ogPiB6b2t1cnlvdVwgOwor6Laz5Z6LID4gYXNoaWdhdGFcIDsKK+eUu+S4gCA+IGtha3VpdHN1XCA7CivmorXliLkgPiBib25zZXRzdVwgOwor5LyP5rWBID4gZnVrdXJ5dXVcIDsKK+WvvuWxgCA+IHRhaWt5b2t1XCA7CivnjKvotrMgPiBuZWtvYXNoaVwgOwor5bCP5aiYID4ga29tdXN1bWVcIDsKK+S7o+eJqSA+IGRhaWJ1dHN1XCA7Civlp6vpsZIgPiBoaW1lbWFzdVwgOwor5pys6IWwID4gaG9uZ29zaGlcIDsKK+S4gOi2syA+IGhpdG9hc2hpXCA7CivohbnliIcgPiBoYXJha2lyaVwgOwor5Lih6KaqID4gcnlvdXNoaW5cIDsKK+aZqemjryA+IGJhbm1lc2hpXCA7Civnv7znv7wgPiB5b2t1eW9rdVwgOwor55Sf5YK3ID4gbmFtYWtpenVcIDsKK+ixmuiCiSA+IGJ1dGFuaWt1XCA7CivohIflvbkgPiB3YWtpeWFrdVwgOwor6aCt6YeRID4gYXRhbWFraW5cIDsKK+e+juizqiA+IGJpc2hpdHN1XCA7CivlsYrlh7ogPiB0b2Rva2VkZVwgOwor6LWk5b+DID4gc2VraXNoaW5cIDsKK+acrOiBtyA+IGhvbnNob2t1XCA7CivnirbpqqggPiBqb3Vrb3RzdVwgOwor57+g6ImyID4gc3Vpc2hva3VcIDsKK+S4oeiiliA+IHJ5b3Vzb2RlXCA7CivmoLjlv4MgPiBrYWt1c2hpblwgOwor5Li46JasID4gZ2FuJyd5YWt1XCA7CivkvLjmmqIgPiBzaGluY2hvdVwgOwor5pyd6IejID4gY2hvdXNoaW5cIDsKK+Wuv+aJgCA+IHNodWt1c2hvXCA7CivmnpzniakgPiBrdWRhbW9ub1wgOwor54++54mpID4gZ2VuYnV0c3VcIDsKK+S4i+iriyA+IHNoaXRhdWtlXCA7CivmnKjogLMgPiBraWt1cmFnZVwgOwor5bC95YqbID4gamlucnlva3VcIDsKK+S6uueVnCA+IGppbmNoaWt1XCA7Civku67mvIYgPiBrYXNoaXRzdVwgOwor5p2R56uLID4gc29ucml0c3VcIDsKK+miqOiEmiA+IGthemFhc2hpXCA7Civkv4Llk6EgPiBrYWthcmlpblwgOwor5LiA6Ku+ID4gaWNoaWRha3VcIDsKK+Wwj+WbvSA+IHNob3Vrb2t1XCA7CivlrabmrbQgPiBnYWt1cmVraVwgOwor5a6/5oKqID4gc2h1a3Vha3VcIDsKK+iDuOW6pyA+IG11bmFndXJhXCA7CivkuIDoqq0gPiBpY2hpZG9rdVwgOwor5a6X5pWZID4gc2h1dWt5b3VcIDsKK+WvpeWvpSA+IHJ5b3VyeW91XCA7CivmnInoibIgPiB5dXVzaG9rdVwgOwor54ut6YePID4ga3lvdXJ5b3VcIDsKK+adpeedgCA+IHJhaWNoYWt1XCA7CivkvJHmpa0gPiBreXV1Z3lvdVwgOwor5pyI6ImyID4gZ2Vzc2hva3VcIDsKK+S/ruS6hiA+IHNodXVyeW91XCA7Civog7jluYUgPiBtdW5laGFiYVwgOwor5LiA6KiAID4gaGl0b2tvdG9cIDsKK+Wuv+W/lyA+IHNodWt1c2hpXCA7CivogLPnlr4gPiBqaXNoaXRzdVwgOwor6IWV5YqbID4gd2Fucnlva3VcIDsKK+iFueS4rSA+IGZ1a3VjaHV1XCA7CivkuIDop5IgPiBoaXRva2Fkb1wgOwor6IKJ5qyyID4gbmlrdXlva3VcIDsKK+ePoOeOiSA+IHNodWd5b2t1XCA7Civku4DniakgPiBqdXVtb3RzdVwgOwor5Li76ImyID4gc2h1c2hva3VcIDsKK+i0i+acrSA+IG5pc2VmdWRhXCA7Civogqnmm7ggPiBrYXRhZ2FraVwgOwor5L+h5LyPID4gc2hpbnB1a3VcIDsKK+S/oeS7uyA+IHNoaW4nJ25pblwgOwor5a6/5byKID4gc2h1a3VoZWlcIDsKK+msseOAhSA+IHV0c3V1dHN1XCA7CivkubHnrYYgPiByYW5waXRzdVwgOwor5Lq654mpID4gamluYnV0c3VcIDsKK+S/l+S/oSA+IHpva3VzaGluXCA7CivnjK7ooYAgPiBrZW5rZXRzdVwgOwor5qC85a6JID4ga2FrdXlhc3VcIDsKK+S4oeiTiyA+IHJ5b3VidXRhXCA7Civlrabmpa0gPiBnYWt1Z3lvdVwgOwor5Lq654i1ID4gamluc2hha3VcIDsKK+eMpeikuyA+IHdhaXNldHN1XCA7CivosZrnrrEgPiBidXRhYmFrb1wgOwor5Luu5q6/ID4ga2FyaWRvbm9cIDsKK+mjm+efsyA+IHRvYmlpc2hpXCA7CivkubHnq4sgPiByYW5yaXRzdVwgOwor5a6/5bizID4geWFkb2Nob3VcIDsKK+WvkuWvkiA+IHNhbXV6YW11XCA7CivmnLHnrYYgPiBzaHVoaXRzdVwgOwor5Li76ISIID4gc2h1bXlha3VcIDsKK+S7mOa3uyA+IHRzdWtpc29pXCA7CivmnKznr4AgPiBob25idXNoaVwgOwor5puy6Iq4ID4ga3lva3VnZWlcIDsKK+acq+evgCA+IG1hc3NldHN1XCA7CivotrPlhYMgPiBhc2hpbW90b1wgOwor6LKh54mpID4gemFpYnV0c3VcIDsKK+Wwj+WQjSA+IHNob3VteW91XCA7CivkuZfntYQgPiBub3Jpa3VtaVwgOwor5a+d5ae/ID4gbmVzdWdhdGFcIDsKK+abs+iIuSA+IGhpa2lidW5lXCA7Civnv4znv4wgPiB5b2t1eW9rdVwgOwor5pyr562GID4gbWFwcGl0c3VcIDsKK+aYvOmggyA+IGhpcnVnb3JvXCA7CivogqHml4UgPiBtYXRhdGFiaVwgOwor54us6LqrID4gZG9rdXNoaW5cIDsKK+eQtOabsiA+IGtpbmt5b2t1XCA7CivkuqzniakgPiBreW91bW9ub1wgOwor5p+Q5pyIID4gYm91Z2V0c3VcIDsKK+ixhueylSA+IG1hbWVrYXN1XCA7Civlrp/mg4UgPiBqaXRzdWpvdVwgOwor5Lit6IW5ID4gY2h1dWZ1a3VcIDsKK+mghumAhiA+IGp1bmd5YWt1XCA7CivmnYnnmq4gPiBzdWdpa2F3YVwgOwor5bCG5Y+IID4gaGF0YW1hdGFcIDsKK+iEseWNtCA+IGRha2t5YWt1XCA7Civlr4Llr6UgPiBzZWtpcnlvdVwgOwor5a+C5a+eID4gc2VraWJha3VcIDsKK+mjn+eUqCA+IHNob2t1eW91XCA7Civmn5Dml6UgPiBib3VqaXRzdVwgOwor5pmp6YWMID4gYmFuc2hha3VcIDsKK+S4reiCiSA+IGNodXVuaWt1XCA7Civosp7ng4ggPiB0ZWlyZXRzdVwgOwor6aOy54mpID4gbm9taW1vbm9cIDsKK+S4oeiGmiA+IHJ5b3VoYWRhXCA7Civku7LmoLggPiBjaHV1a2FrdVwgOwor5Lmd56mAID4ga3l1dWtva3VcIDsKK+Wun+W8viA+IGppdHN1ZGFuXCA7CivkuIvokKAgPiBzaGl0YW1vZVwgOwor5puy6ICFID4ga3VzZW1vbm9cIDsKK+WumuW+iyA+IHRlaXJpdHN1XCA7CivmoYPlnJIgPiBtb21vem9ub1wgOwor6aaW5be7ID4ga3ViaW1ha2lcIDsKK+S7j+awlyA+IGhvdG9rZWdpXCA7CivmmKXpoqggPiBoYXJ1a2F6ZVwgOwor5Lim6IKJID4gbmFtaW5pa3VcIDsKK+WuouW5tCA+IGt5YWt1bmVuXCA7CivotorljZcgPiBiZXRvbmFtdVwgOwor5Lih6ISHID4gcnlvdXdha2lcIDsKK+S8uOW8tSA+IHNoaW5jaG91XCA7CivpoqjnqpMgPiBrYXphbWFkb1wgOwor6aKo56m0ID4gZnV1a2V0c3VcIDsKK+S7j+auvyA+IGJ1dHN1ZGVuXCA7Civog7jlo4EgPiBreW91aGVraVwgOwor5a6a5byPID4gdGVpc2hpa2lcIDsKK+aYn+mjnyA+IHNlaXNob2t1XCA7CivkuKHogpggPiByeW91aGlqaVwgOwor5Lih6IKMID4gcnlvdWhhZGFcIDsKK+iynua9lCA+IHRlaWtldHN1XCA7Civlq6HnlLcgPiBjaGFrdW5hblwgOwor5Lmz55m9ID4gbnl1dWhha3VcIDsKK+S9juWvhiA+IHRlaW1pdHN1XCA7CivkuKHogLMgPiByeW91bWltaVwgOwor5Lmx55m6ID4gcmFucGF0c3VcIDsKK+iEheWahyA+IGt5b3VrYWt1XCA7CivmmrTomZAgPiBib3VneWFrdVwgOwor6IKY5o6bID4gaGlqaWtha2VcIDsKK+S4oee/vCA+IHJ5b3V5b2t1XCA7Civlr4blo7IgPiBtaXRzdWJhaVwgOwor5pyo55+zID4gYm9rdXNla2lcIDsKK+eOieeglSA+IGd5b2t1c2FpXCA7CivkuIPojYkgPiBuYW5ha3VzYVwgOwor5a6u5a6IID4gbWl5YW1vcmlcIDsKK+aboOiBtyA+IGtvdXNob2t1XCA7Civnjonnn7MgPiB0YW1haXNoaVwgOwor5LiJ6ImyID4gc2Fuc2hva3VcIDsKK+S7suaYpSA+IGNodXVzaHVuXCA7CivmoZHljp8gPiBrdXdhYmFyYVwgOwor6K2Y6Za+ID4gc2hpa2lpa2lcIDsKK+S6uuazoiA+IGhpdG9uYW1pXCA7CivmmKXpm6ggPiBoYXJ1c2FtZVwgOwor57+z55uuID4ga2FzdW1pbWVcIDsKK+eMv+iCoSA+IHNhcnVtYXRhXCA7Civmm7Lnt5ogPiBreW9rdXNlblwgOwor5LyR5oiaID4ga3l1dXNla2lcIDsKK+WuouWxpCA+IGt5YWt1c291XCA7CivmmKXpmb0gPiBzaHVuJyd5b3VcIDsKK+iynua3kSA+IHRlaXNodWt1XCA7CivlrojlvbkgPiBtb3JpeWFrdVwgOwor5Li756+AID4gc2h1c2V0c3VcIDsKK+S4gOiKsSA+IGhpdG9oYW5hXCA7CivpoZToibIgPiBnYW5zaG9rdVwgOwor5Lit57SwID4gY2h1dWJvc29cIDsKK+S4ree0miA+IGNodXVreXV1XCA7CivotoXlhYsgPiBjaG91a29rdVwgOwor5Li7562GID4gc2h1aGl0c3VcIDsKK+eOh+ebtCA+IHNvdGNob2t1XCA7CivnjKvoiIwgPiBuZWtvaml0YVwgOwor5LiJ6ISaID4gc2Fua3lha3VcIDsKK+aZuuitmCA+IGNoaXNoaWtpXCA7CivkuIvogqUgPiBzaGltb2dvZVwgOwor5a6f5a6zID4gaml0c3VnYWlcIDsKK+mkiuauliA+IHlvdXNob2t1XCA7CivlsI/kuIAgPiBzaG91aWNoaVwgOwor6LKq5qyyID4gZG9uJyd5b2t1XCA7CivkurrmrLIgPiBqaW4nJ3lva3VcIDsKK+iAkOeGsSA+IHRhaW5ldHN1XCA7Civlrp/lrZggPiBqaXRzdXpvblwgOwor6aCY6KKWID4gcnlvdXNodXVcIDsKK+S8keaBryA+IGt5dXVzb2t1XCA7Civml7HprYMgPiBrYW5iYXRzdVwgOwor54m56ZuGID4gdG9rdXNodXVcIDsKK+acq+eUtyA+IGJhdHN1bmFuXCA7Civlrr/lnYogPiBzaHVrdWJvdVwgOwor6Z+z6LOqID4gb25zaGl0c3VcIDsKK+S4uOeqkyA+IG1hcnVtYWRvXCA7CivnjKvohJogPiBuZWtvYXNoaVwgOwor5a+45YCfID4gc3Vuc2hha3VcIDsKK+i2heS/lyA+IGNob3V6b2t1XCA7Civmm7LnrqEgPiBreW9rdWthblwgOwor5LyR5b+DID4ga3l1dXNoaW5cIDsKK+iEiOWLlSA+IG15YWt1ZG91XCA7CivpoZXogbcgPiBrZW5zaG9rdVwgOwor6IKp5bmFID4ga2F0YWhhYmFcIDsKK+ahiOWHuiA+IGFuc2h1dHN1XCA7CivogqHlvJUgPiBtb21vaGlraVwgOwor5Li456a/ID4gbWFydWhhZ2VcIDsKK+S+m+S6uiA+IHRvbW9iaXRvXCA7Civkurrmp5ggPiBoaXRvc2FtYVwgOwor5Lmz54mbID4gbnl1dWd5dXVcIDsKK+WwguS4gCA+IHNlbicnaXRzdVwgOwor5p6V5pyoID4gbWFrdXJhZ2lcIDsKK+iCoeW6pyA+IG1hdGFndXJhXCA7CivnibnplbcgPiB0b2t1Y2hvdVwgOwor6aCC6KeSID4gY2hvdWtha3VcIDsKK+eLuOiXuyA+IHRhbnVraW1vXCA7CivnvLboqbAgPiBrYW5kenVtZVwgOwor5LiA57+8ID4gaWNoaXlva3VcIDsKK+Wun+WmuSA+IGppdHN1bWFpXCA7CivkuK3nqbogPiBuYWthem9yYVwgOwor5p+U5byxID4gbnl1dWpha3VcIDsKK+mjsuawtCA+IG5vbWltaXp1XCA7CivkuK3nqIsgPiBuYWthaG9kb1wgOwor5LuK5pyIID4ga29uZ2V0c3VcIDsKK+iyuOacrCA+IGthc2hpaG9uXCA7CivkuKbnq4sgPiBoZWlyaXRzdVwgOwor5a6J5a6/ID4geWFzdXlhZG9cIDsKK+iDveWKmyA+IG5vdXJ5b2t1XCA7CivkuK3np4sgPiBjaHV1c2h1dVwgOwor54mp6ZmwID4gbW9ub2thZ2VcIDsKK+WuieWuiSA+IHlhc3V5YXN1XCA7CivlrablvrMgPiBnYWt1dG9rdVwgOwor57+S55mWID4gc2h1dWhla2lcIDsKK+S4uOefsyA+IG1hcnVpc2hpXCA7CivkuIfnt5EgPiBiYW5yeW9rdVwgOwor5a6/5ZG9ID4gc2h1a3VtZWlcIDsKK+S7j+aWhyA+IGZ1dHN1YnVuXCA7CivniZvpnakgPiBneXV1a2F3YVwgOwor6IGW5pelID4gc2Vpaml0c3VcIDsKK+S6uuafhCA+IGhpdG9nYXJhXCA7Civpq5jjgIUgPiB0YWthZGFrYVwgOwor5Lqr5qW9ID4ga3lvdXJha3VcIDsKK+advuafjyA+IHNob3VoYWt1XCA7CivnvqTnq7kgPiBtdXJhdGFrZVwgOwor6K2m6LmVID4ga2VpaGl0c3VcIDsKK+S5s+a/gSA+IG55dXVkYWt1XCA7Civnv6DnjokgPiBzdWlneW9rdVwgOwor5pel6aOfID4gbmlzc2hva3VcIDsKK+S7h+aVtSA+IGt5dXV0ZWtpXCA7CivpnbrpnqggPiBtYWtrYXRzdVwgOwor5ae/6KaLID4gc3VnYXRhbWlcIDsKK+Wun+WcqCA+IGppdHN1emFpXCA7CivmnIjnlaogPiB0c3VraWJhblwgOwor55Kw5LiDID4ga2FuJyduYW5hXCA7Civog7jlhYggPiBtdW5hc2FraVwgOwor6IO45YWDID4gbXVuYW1vdG9cIDsKK+S4gOe1hCA+IGhpdG9rdW1pXCA7CivnjKvns54gPiBuZWtvYmFiYVwgOwor5pen6aCYID4ga3l1dXJ5b3VcIDsKK+mdtOmfsyA+IGt1dHN1b3RvXCA7CivkuZfniakgPiBub3JpbW9ub1wgOwor6aKo54mpID4gZnV1YnV0c3VcIDsKK+S9nOWKhyA+IHNha3VnZWtpXCA7CivmmpboibIgPiBkYW5zaG9rdVwgOwor5L2V5Y2SID4gbmFuaXRvem9cIDsKK+eOh+eEtiA+IHNvdHN1emVuXCA7CivkvJHlraYgPiBreXV1Z2FrdVwgOwor5LiJ562GID4gc2FucGl0c3VcIDsKK+S9j+WPiyA+IHN1bWl0b21vXCA7Civmnb7mmI4gPiB0YWltYXRzdVwgOwor5YG244CFID4gdGFtYXRhbWFcIDsKK+S7ruW9uSA+IGthcml5YWt1XCA7CivkuK3nmr8gPiBjaHV1emFyYVwgOwor6IO45YCJID4gbXVuYWd1cmFcIDsKK+S6uuaVsCA+IGhpdG9rYXp1XCA7CivlqZrntIQgPiBrb24nJ3lha3VcIDsKK+S4i+eptCA+IHNoaXRhYW5hXCA7CivkvZPlipsgPiB0YWlyeW9rdVwgOwor5a6/5YWtID4geWFkb3Jva3VcIDsKK+iAs+actiA+IG1pbWl0YWJ1XCA7Civmm7jnlZkgPiBrYWtpdG9tZVwgOwor5LiA562LID4gaGl0b3N1amlcIDsKK+WtpuWvriA+IGdha3VyeW91XCA7CivkuIDnrYYgPiBoaXRvZnVkZVwgOwor54mH6ZqFID4ga2F0YXN1bWlcIDsKK+ixgeeEtiA+IGthdHN1emVuXCA7CivkvY7liqMgPiB0ZWlyZXRzdVwgOwor54mH6ZmwID4ga2F0YWthZ2VcIDsKK+S6peaciCA+IGdhaWdldHN1XCA7CivnibnpgLIgPiB0b2t1c2hpblwgOwor6LOq5bGLID4gc2hpY2hpeWFcIDsKK+eMqueqgSA+IGNob3RvdHN1XCA7CivkuqzmlrkgPiBreW91Z2F0YVwgOwor54mb6Y2LID4gZ3l1dW5hYmVcIDsKK+Wun+WQjSA+IGppdHN1bWVpXCA7CivmnaXmnIggPiByYWlnZXRzdVwgOwor6IO45LitID4ga3lvdWNodXVcIDsKK+S4gOeoriA+IGhpdG9rdXNhXCA7Civnv5Lnhp8gPiBzaHV1anVrdVwgOwor5piO6YGUID4gbWVpdGF0c3VcIDsKK+aeoeW9oiA+IG1hc3VnYXRhXCA7Civlrr/kvr8gPiBzaHVrdWJlblwgOwor5a+G5LukID4gbWl0c3VyZWlcIDsKK+eJuei8ryA+IHRva3VzaHV1XCA7CivkuIDnp5IgPiBpY2hpYnlvdVwgOwor5Li754mpID4gc2h1YnV0c3VcIDsKK+e+pOeZuiA+IGd1bnBhdHN1XCA7Civmm7LnkIMgPiBreW9ra3l1dVwgOwor5pep6ZCYID4gaGF5YWdhbmVcIDsKK+izouWvnyA+IGtlbnNhdHN1XCA7CivkuozmoYEgPiBmdXRha2V0YVwgOwor5p2l5pelID4gcmFpbmljaGlcIDsKK+aYh+mAsiA+IHNob3VzaGluXCA7CivniKrpn7MgPiB0c3VtYW90b1wgOwor5pat6auqID4gZGFucGF0c3VcIDsKK+absueOiSA+IG1hZ2F0YW1hXCA7CivlrqLliIYgPiBreWFrdWJ1blwgOwor5LiY55a5ID4ga3l1dXNoaW5cIDsKK+S9leS9lSA+IG5hbmluYW5pXCA7Civog4blipsgPiB0YW5yeW9rdVwgOwor5LqL5p+EID4ga290b2dhcmFcIDsKK+S7ruWuriA+IGthcmltaXlhXCA7Civmm7jniakgPiBzaG9tb3RzdVwgOwor54mb6YWqID4gZ3l1dXJha3VcIDsKK+eLrOe/kiA+IGRva3VzaHV1XCA7Civku67lroUgPiBrYXJpdGFrdVwgOwor5a2Q5a6dID4ga29kYWthcmFcIDsKK+mfruiRsSA+IG5pcmFuZWdpXCA7CivkvZfkurogPiB3YWJpYml0b1wgOwor5LuP5byPID4gYnVzc2hpa2lcIDsKK+mguOetiyA+IGt1YmlzdWppXCA7Civosqrmhb4gPiBkb24nJ3lva3VcIDsKK+ism+mHiCA+IGtvdXNoYWt1XCA7CivkuInnm7QgPiBzYW5jaG9rdVwgOwor5L2V5LqLID4gbmFuaWdvdG9cIDsKK+iCieWkqiA+IG5pa3VidXRvXCA7CivkuInnmb4gPiBzYW5ieWFrdVwgOwor5peP6ZW3ID4gem9rdWNob3VcIDsKK+eJueizniA+IHRva3VzaG91XCA7CivlrqLlg6cgPiBreWFrdXNvdVwgOwor5Lqk5o6lID4ga291c2V0c3VcIDsKK+mhlOedgCA+IGdhbmNoYWt1XCA7CivkubPmpa0gPiBueXV1Z3lvdVwgOwor5pel6YqAID4gbmljaGlnaW5cIDsKK+aeleW4rSA+IGNoaW5zZWtpXCA7Civos5PlrqIgPiBoaW5reWFrdVwgOwor5a6f5YOPID4gaml0c3V6b3VcIDsKK+Wun+WDjSA+IGppdHN1ZG91XCA7Civlrq7kurogPiBtaXlhYml0b1wgOwor5pen6YeMID4gZnVydXNhdG9cIDsKK+S4gOeavyA+IGhpdG9zYXJhXCA7CivkuIDnmq4gPiBoaXRva2F3YVwgOwor5LqM5pa5ID4gZnV0YWthdGFcIDsKK+S4iueVpSA+IGpvdXJ5YWt1XCA7Civos4rlsIYgPiB6b2t1c2hvdVwgOwor6LKr5b65ID4ga2FudGV0c3VcIDsKK+aeouWvhiA+IHN1dW1pdHN1XCA7CivkuIDnmZYgPiBoaXRva3VzZVwgOwor55CD5a+pID4ga3l1dXNoaW5cIDsKK+WuruS4rSA+IGt5dXVjaHV1XCA7CivosYbmrrsgPiBtYW1lZ2FyYVwgOwor54++5bC6ID4gZ2Vuc2hha3VcIDsKK+S6uuW9sSA+IGhpdG9rYWdlXCA7CivlrqLkvZMgPiBreWFrdXRhaVwgOwor5a6f5L6LID4gaml0c3VyZWlcIDsKK+acqOanjCA+IGtpZHp1Y2hpXCA7Civku6Tlp6ogPiByZWl0ZXRzdVwgOwor54++5a6fID4gZ2Vuaml0c3VcIDsKK+iCh+WbvSA+IGNob3Vrb2t1XCA7CivlrqLkurogPiBreWFrdWppblwgOwor6Zy56Z2CID4gaGVraXJla2lcIDsKK+itsuiRiSA+IHl1enVyaWhhXCA7CivosLfmsLQgPiB0YW5pbWl6dVwgOwor6LGq5pelID4gZ291bmljaGlcIDsKK+acjeavkiA+IGZ1a3Vkb2t1XCA7Civogbfln58gPiBzaG9rdWlraVwgOwor5pq055m6ID4gYm91aGF0c3VcIDsKK+S6rOW9oiA+IGt5b3VnYXRhXCA7Civpo5/mjIcgPiBzaG9rdXNoaVwgOwor54m06KemID4gdGVpc2hva3VcIDsKK+aXpei8qiA+IG5pY2hpcmluXCA7CivogqnlhYggPiBrYXRhc2FraVwgOwor5aSW6bCQID4gc290b3dhbmlcIDsKK+mgu+eZuiA+IGhpbnBhdHN1XCA7CivkvK/ku7IgPiBoYWt1Y2h1dVwgOwor5pys5pysID4gbW90b21vdG9cIDsKK+acrOacqyA+IGhvbm1hdHN1XCA7CivkuIfniakgPiBiYW5tb3RzdVwgOwor54ut56qEID4ga3lvdXNha3VcIDsKK+eOieadryA+IGd5b2t1aGFpXCA7CivnjK7niakgPiBrZW5tb3RzdVwgOwor5Lq65bGxID4gaGl0b3lhbWFcIDsKK+aXqei2syA+IGhheWFhc2hpXCA7Civkuobmib8gPiByeW91c2hvdVwgOwor5Lit5rWBID4gY2h1dXJ5dXVcIDsKK+mcp+mbqCA+IGtpcmlzYW1lXCA7CivlpKfpo58gPiB0YWlzaG9rdVwgOwor5paH6aO+ID4gYnVuc2hva3VcIDsKK+izouWTsiA+IGtlbnRldHN1XCA7CivniYfotrMgPiBrYXRhYXNoaVwgOwor5LiA54mHID4gaGl0b2hpcmFcIDsKK+acrOaXpSA+IGhvbmppdHN1XCA7Civkub7mi60gPiBrYXJhYnVraVwgOwor6aOf5oSfID4gc2hva3VrYW5cIDsKK+aVtOmrqiA+IHNlaWhhdHN1XCA7Civku4/lo4cgPiBidXRzdWRhblwgOwor5a2m5YmyID4gZ2FrdXdhcmlcIDsKK+aVtOmqqCA+IHNlaWtvdHN1XCA7CivotIvkvZwgPiBuaXNlc2FrdVwgOwor5a2m5YmHID4gZ2FrdXNva3VcIDsKK+absuawtCA+IGt5b2t1c3VpXCA7CivpoqjmnIggPiBmdXVnZXRzdVwgOwor6Zyc6ZuqID4gc291c2V0c3VcIDsKK+S5seaOmCA+IHJhbmt1dHN1XCA7CivkuK3mr5IgPiBjaHV1ZG9rdVwgOwor5Lmd5pelID4ga29rb25va2FcIDsKK+aXpeixqiA+IG5pY2hpZ291XCA7Civku4/loIIgPiBidXRzdWRvdVwgOwor5Lmd5pePID4ga3l1dXpva3VcIDsKK+mfv+esmyA+IGt5b3V0ZWtpXCA7Civoqq3pn78gPiB5b21pa3lvdVwgOwor6Kyb6KqsID4ga291c2V0c3VcIDsKK+eJm+inkiA+IGd5dXVrYWt1XCA7CivlpKfpm6ogPiB0YWlzZXRzdVwgOwor5aSW6aOfID4gZ2Fpc2hva3VcIDsKK+iAs+WxjiA+IG1pbWlrdXNvXCA7CivlpJXpo68gPiB5dXVtZXNoaVwgOwor6IG35ZCNID4gc2hva3VtZWlcIDsKK+aZqeevgCA+IGJhbnNldHN1XCA7CivkuozlvbkgPiBmdXRheWFrdVwgOwor5aSV6aOfID4geXV1c2hva3VcIDsKK+S6jOW9oiA+IGZ1dGFuYXJpXCA7CivmmKXoj4ogPiBzaHVuZ2lrdVwgOwor5a2m5YOVID4gZ2FrdWJva3VcIDsKK+ixhuaWmSA+IG1hbWVyeW91XCA7CivnjonmkacgPiBneW9rdXNhaVwgOwor5pyd5pW1ID4gY2hvdXRla2lcIDsKK+aVo+mrqiA+IHNhbnBhdHN1XCA7CivorI7orI4gPiBuYXpvbmF6b1wgOwor5bGx44CFID4geWFtYXlhbWFcIDsKK+WmhOiqrCA+IG1vdXNldHN1XCA7CivpoJPnnYAgPiB0b25jaGFrdVwgOwor5LuP5Zm4ID4gZnV0c3V0b25cIDsKK+WmluihkyA+IHlvdWp1dHN1XCA7Civpm5vps6UgPiBoaW5hZG9yaVwgOwor6Zu76aO+ID4gZGVuc2hva3VcIDsKK+WtpuS/riA+IGdha3VzaHV1XCA7Civml6foqLMgPiBreXV1eWFrdVwgOwor5pyI5pyrID4gdHN1a2l6dWVcIDsKK+eLrOeZvSA+IGRva3VoYWt1XCA7CivnjJvng4ggPiBtb3VyZXRzdVwgOwor54iq6LehID4gdHN1bWVhdG9cIDsKK+S7ruWInSA+IGthcmlzb21lXCA7CivmnaXlrqIgPiByYWlreWFrdVwgOwor5pyI5pucID4gZ2V0c3V5b3VcIDsKK+e/jOacnSA+IHlva3VjaG91XCA7CivnuYHpm5EgPiBoYW56YXRzdVwgOwor6IG35Yi2ID4gc2hva3VzZWlcIDsKK+aWsOmAsiA+IHNoaW5zaGluXCA7CivogbfliIYgPiBzaG9rdWJ1blwgOwor5Lm+5byPID4ga2Fuc2hpa2lcIDsKK+mdouitmCA+IG1lbnNoaWtpXCA7CivkurrlnqMgPiBoaXRvZ2FraVwgOwor5aSx6YyvID4gc2hpc3Nha3VcIDsKK+S5heaWuSA+IGhpc2FrYXRhXCA7CivmnIjmmI4gPiBnZXRzdW1laVwgOwor5aOw6auYID4ga293YWRha2FcIDsKK+irlui/sCA+IHJvbmp1dHN1XCA7Civnv4zmmKUgPiB5b2t1c2h1blwgOwor6Ku+6Ku+ID4gZGFrdWRha3VcIDsKK+itmOiAhSA+IHNoaWtpc2hhXCA7Civku5Xlj6MgPiBzaGlrdWNoaVwgOwor5Lit5qC4ID4gY2h1dWtha3VcIDsKK+ixoeW+tCA+IHNob3VjaG91XCA7Civnj43lppkgPiBjaGlubXlvdVwgOwor6LKd5aGaID4ga2FpZHp1a2FcIDsKK+iBluWTsiA+IHNlaXRldHN1XCA7CivpnaLoqbAgPiBtZW5raXRzdVwgOwor57ie6aasID4gc2hpbWF1bWFcIDsKK+mjn+WwvSA+IHNob2t1amluXCA7Civos63kuosgPiBrYWtlZ290b1wgOwor5LiA5rWBID4gaWNoaXJ5dXVcIDsKK+S4reafhCA+IGNodXVnYXJhXCA7Civmm7jmnK0gPiBzaG9zYXRzdVwgOwor5aaZ6JasID4gbXlvdXlha3VcIDsKK+S4u+aXpSA+IHNodWppdHN1XCA7Civoq7joq7ggPiBtb3JvbW9yb1wgOwor6Z2Z6KyQID4gc2VpaGl0c3VcIDsKK+iruOiqrCA+IHNob3NldHN1XCA7Civos4flipsgPiBzaGlyeW9rdVwgOwor5aWz6KaqID4gb24nJ25hb3lhXCA7Civmm7Tmm7QgPiBzYXJhc2FyYVwgOwor5p2T5a2QID4gc2hha3VzaGlcIDsKK+absuabsiA+IGt1bWFndW1hXCA7CivmmbrnlaUgPiBjaGlyeWFrdVwgOwor5piO6ImyID4gbWVpc2hva3VcIDsKK+aXpeidlSA+IG5pc3Nob2t1XCA7Civku5blh7ogPiB0YXNodXRzdVwgOwor6Zuo6Z20ID4gYW1hZ3V0c3VcIDsKK+acrOW8jyA+IGhvbnNoaWtpXCA7Civku4/liY0gPiBidXRzdXplblwgOwor6Kq/6YCyID4gY2hvdXNoaW5cIDsKK+mbqumbsiA+IHl1a2lndW1vXCA7Civpm6jpnLAgPiBhbWVhcmFyZVwgOwor5LuP5Yi5ID4gYnVzc2V0c3VcIDsKK+acqOW9qyA+IG1va3VjaG91XCA7CivmmpHnhrEgPiBzaG9uZXRzdVwgOwor54mp6ImyID4gYnVzc2hva3VcIDsKK+iBt+S6uiA+IHNob2t1bmluXCA7Civoq6forJQgPiBrYWlneWFrdVwgOwor54us54m5ID4gZG9rdXRva3VcIDsKK+WksemAnyA+IHNoaXNzb2t1XCA7CivmmKXnua0gPiBoYXJ1bWF5dVwgOwor6aSe5YilID4gc2VuYmV0c3VcIDsKK+eGsemhmCA+IG5ldHN1Z2FuXCA7CivmnKvlubQgPiBtYXRzdW5lblwgOwor5auh5a2rID4gY2hha3Vzb25cIDsKK+eJqeiHrSA+IG1vbm9ndXNhXCA7CivogZbliKUgPiBzZWliZXRzdVwgOwor5auh5a2QID4gY2hha3VzaGlcIDsKK+irpOirpCA+IGdha3VnYWt1XCA7Civni6HnjL4gPiBrb3VrYXRzdVwgOwor6ICD5a+fID4ga291c2F0c3VcIDsKK+mbkemjnyA+IHphc3Nob2t1XCA7CivkuLvmjIEgPiBzaHVtb2NoaVwgOwor5ayw5YWQID4gbWlkb3JpZ29cIDsKK+e4pumVtyA+IHRhdGVuYWdhXCA7Civmlr3oqK0gPiBzaGlzZXRzdVwgOwor54uC55qEID4ga3lvdXRla2lcIDsKK+S6ieWlqiA+IHNvdWRhdHN1XCA7Civpno/ohpwgPiBreW91bWFrdVwgOwor5LuP5YOPID4gYnV0c3V6b3VcIDsKK+iAgeWunyA+IHJvdWppdHN1XCA7CivlpKfpgIYgPiBkYWlneWFrdVwgOwor5pel6JOuID4gbmljaGlyZW5cIDsKK+eGsembtyA+IG5ldHN1cmFpXCA7Civoqabpo58gPiBzaGlzaG9rdVwgOwor5pW36YeRID4gc2hpa2lraW5cIDsKK+S6uuWKmyA+IGppbnJ5b2t1XCA7CivkuZ3lt54gPiBreXV1c2h1dVwgOwor5paw6Kq/ID4gc2hpbmNob3VcIDsKK+mjn+WggiA+IHNob2t1ZG91XCA7Civlq6HlprsgPiBjaGFrdXNhaVwgOwor5LiA5qOfID4gaGl0b211bmVcIDsKK+Wksei3oSA+IHNoaXNzZWtpXCA7CivkurrliLogPiBqaW5zYXNoaVwgOwor6Zu76YmEID4gZGVudGV0c3VcIDsKK+S6uuWIpSA+IG5pbmJldHN1XCA7Civoq5boqqwgPiByb25zZXRzdVwgOwor5pys5bGAID4gaG9ua3lva3VcIDsKK+S4reaMhyA+IG5ha2F5dWJpXCA7CivosrjlgJ8gPiB0YWlzaGFrdVwgOwor542y5b6XID4ga2FrdXRva3VcIDsKK+irluipsCA+IHJvbmtpdHN1XCA7CivkuIDmoYEgPiBoaXRva2V0YVwgOwor5pa96KGTID4gc2hpanV0c3VcIDsKK+mhm+acqyA+IHRlbm1hdHN1XCA7CivosqvlhaUgPiBrYW4nJ255dXVcIDsKK+iyoeWKmyA+IHphaXJ5b2t1XCA7Civoqp7pg6ggPiBrYXRhcmliZVwgOwor57+S5b6XID4gc2h1dXRva3VcIDsKK+S4ieabsiA+IHNhbmt5b2t1XCA7Civmma/niakgPiBrZWlidXRzdVwgOwor5pa56KGTID4gaG91anV0c3VcIDsKK+eJuee0hCA+IHRva3V5YWt1XCA7CivkuIDmnpogPiBoaXRvaGlyYVwgOwor57mw6KiAID4ga3VyaWdvdG9cIDsKK+eJm+iCiSA+IGd5dXVuaWt1XCA7CivmnYnlnqMgPiBzdWdpZ2FraVwgOwor546L5a6kID4gb3VzaGl0c3VcIDsKK+S4gOadnyA+IGhpdG90YWJhXCA7CivkuqzliocgPiBreW91Z2VraVwgOwor54mh576KID4gb2hpdHN1amlcIDsKK+iwt+W6lSA+IHRhbml6b2tvXCA7CivkuIDmnKggPiBpY2hpYm9rdVwgOwor5Lq65YKRID4gamlua2V0c3VcIDsKK+mfnOeVpSA+IHRvdXJ5YWt1XCA7Civml6foh6MgPiBreXV1c2hpblwgOwor5pio56eLID4gc2FrdXNodXVcIDsKK+WlveiJsiA+IGtvdXNob2t1XCA7CivosLflt50gPiB0YW5pZ2F3YVwgOwor5LuE5LuEID4gaG9ub2Jvbm9cIDsKK+iyt+S4uyA+IGthaW51c2hpXCA7CivkuIDmmYIgPiBoaXRvdG9raVwgOwor5piH57WmID4gc2hvdWt5dXVcIDsKK+eJh+iGnSA+IGthdGFoaXphXCA7CivkuZflrqIgPiBqb3VreWFrdVwgOwor5Li45b2iID4gbWFydWdhdGFcIDsKK+mjsuWKqSA+IG5vbWlzdWtlXCA7Civmm7LmgqogPiBreW9rdWFrdVwgOwor5piH57SaID4gc2hvdWt5dXVcIDsKK+S4gOaXlyA+IGhpdG9oYXRhXCA7CivkuIDml48gPiBpY2hpem9rdVwgOwor6aOf5ZOBID4gc2hva3VoaW5cIDsKK+eJqee0jSA+IGJ1dHN1bm91XCA7CivlpLHoqr8gPiBzaGl0Y2hvdVwgOwor54Wu6a2aID4gbml6YWthbmFcIDsKK+WkseiqniA+IHNoaXRzdWdvXCA7CivogLPlhYMgPiBtaW1pbW90b1wgOwor5pep6ICzID4gaGF5YW1pbWlcIDsKK+S4uOW6lSA+IG1hcnV6b2tvXCA7CivpnaLoibIgPiBtZW5zaG9rdVwgOwor5Lq65Lq6ID4gaGl0b2JpdG9cIDsKK+aVo+mAuCA+IHNhbicnaXRzdVwgOwor5Lit5b+DID4gY2h1dXNoaW5cIDsKK+eJh+iCjCA+IGthdGFoYWRhXCA7CivoqbPpjLIgPiBzaG91cm9rdVwgOwor5auh5ZejID4gY2hha3VzaGlcIDsKK+abuOW8jyA+IHNob3NoaWtpXCA7CivkurrkuosgPiBoaXRvZ290b1wgOwor57eP6auqID4gc291aGF0c3VcIDsKK+acjeWxniA+IGZ1a3V6b2t1XCA7CivnibnnqK4gPiB0b2t1ZGFuZVwgOwor5Lit5b2iID4gY2h1dWdhdGFcIDsKK+eJh+iAsyA+IGthdGFtaW1pXCA7Civml6fnv5IgPiBreXV1c2h1dVwgOwor5Lq65LitID4gaGl0b25ha2FcIDsKK+S6uuS4piA+IGhpdG9uYW1pXCA7Civnibnnp7AgPiB0b2t1c2hvdVwgOwor5LiA5pKDID4gaWNoaWdla2lcIDsKK+S4reW6rSA+IG5ha2FuaXdhXCA7CivlsJHjgIUgPiBzaG91c2hvdVwgOwor5aeL55m6ID4gc2hpaGF0c3VcIDsKK+isnee1tiA+IHNoYXpldHN1XCA7Civkub7lkrMgPiBrYXJhemVraVwgOwor5Lit5bmVID4gbmFrYW1ha3VcIDsKK+S4reW5hSA+IGNodXVoYWJhXCA7Civoq7johp0gPiBtb3JvaGl6YVwgOwor6Ku46IaaID4gbW9yb2hhZGFcIDsKK+S4reW4rSA+IG5ha2FzZWtpXCA7CivmnJ3lpJUgPiBjaG91c2VraVwgOwor54mn56ybID4gYm9rdXRla2lcIDsKK+S4oeW+lyA+IHJ5b3V0b2t1XCA7CivnuKbou7ggPiB0YXRlamlrdVwgOwor6Z2S6ImyID4gc2Vpc2hva3VcIDsKK+mjn+WJjSA+IHNob2t1emVuXCA7Civlp6bniakgPiBrYW5idXRzdVwgOwor6aOf5Yi7ID4gc2hva2tva3VcIDsKK+eOieWeoyA+IHRhbWFnYWtpXCA7Civpm4bpjLIgPiBzaHV1cm9rdVwgOwor6Zuy6LazID4ga3Vtb2FzaGlcIDsKK+e3kemiqCA+IHJ5b2t1ZnV1XCA7CivniannqK4gPiBtb25vZGFuZVwgOwor5Lim5bmFID4gbmFtaWhhYmFcIDsKK+WmmeetliA+IG15b3VzYWt1XCA7CivpnZnohIggPiBqb3VteWFrdVwgOwor54mp56iOID4gYnV0c3V6ZWlcIDsKK+S4u+WuoiA+IHNodWt5YWt1XCA7Civpo7zkuLsgPiBrYWludXNoaVwgOwor6Ku46IKMID4gbW9yb2hhZGFcIDsKK+S4puW3viA+IG5hbWloYWJhXCA7CivkuqTkuqQgPiBrb21vZ29tb1wgOwor54iG6JasID4gYmFrdXlha3VcIDsKK+S4reWztiA+IG5ha2FqaW1hXCA7CivmlYXpg7cgPiBmdXJ1c2F0b1wgOwor5LqL5YWxID4ga290b2RvbW9cIDsKK+S4jeaCiSA+IGZ1c2hpdHN1XCA7Civml6fntIQgPiBreXV1eWFrdVwgOwor54mn56WeID4gYm9rdXNoaW5cIDsKK+e3kemdkiA+IHJva3VzaG91XCA7CivmlrnoiJ8gPiBoYWtvYnVuZVwgOwor6aOv5LqLID4gbWFtYWdvdG9cIDsKK+S4reWwjyA+IGNodXVzaG91XCA7Civmm7LlsIQgPiBreW9rdXNoYVwgOwor6ZuB6YeRID4ga2FyaWdhbmVcIDsKK+aXpeexsyA+IG5pY2hpYmVpXCA7CivnhLzps6UgPiB5YWtpdG9yaVwgOwor6Ky555u0ID4ga2luY2hva3VcIDsKK+S4reWtpiA+IGNodXVnYWt1XCA7Civnt7TpiYQgPiByZW50ZXRzdVwgOwor6Kq/6JasID4gY2hvdXlha3VcIDsKK+WkieiqrCA+IGhlbnNldHN1XCA7CivmlbXopbIgPiB0ZWtpc2h1dVwgOwor5pS+6YCQID4gaG91Y2hpa3VcIDsKK+S4ieW9uSA+IHNhbicneWFrdVwgOwor54Wp6ZuRID4gaGFuemF0c3VcIDsKK+iqjeitmCA+IG5pbnNoaWtpXCA7Civml6fnq6AgPiBreXV1c2hvdVwgOwor57eR6ZaAID4gcnlva3Vtb25cIDsKK+adkeS6uiA+IG11cmFiaXRvXCA7CivkuIvluK8gPiBzaGl0YW9iaVwgOwor5LiA5b25ID4gaGl0b3lha3VcIDsKK+ixquWCkSA+IGdvdWtldHN1XCA7CivkuovkuosgPiBrb3RvZ290b1wgOwor57a/6ZuyID4gd2F0YWd1bW9cIDsKK+S5seWFpSA+IHJhbicnbnl1dVwgOwor57a/6ZuqID4gd2F0YXl1a2lcIDsKK+S6iOS6iCA+IGthbmVnYW5lXCA7Civml6fnp7AgPiBreXV1c2hvdVwgOwor5LiW5bGAID4gc2Vpa3lva3VcIDsKK+e3tOmBlCA+IHJlbnRhdHN1XCA7CivmmofmmocgPiBoaW1haGltYVwgOwor5LiA5buJID4gaGl0b2thZG9cIDsKK+mahumahiA+IHJ5dXVyeXV1XCA7CivkuIDluqYgPiBoaXRvdGFiaVwgOwor6ZqF6ZqFID4gc3VtaXp1bWlcIDsKK+S4gOW5tCA+IGhpdG90b3NlXCA7CivpnZnnspsgPiBzZWlzaHVrdVwgOwor5aGp6a6tID4gc2hpb3pha2VcIDsKK+aXj+exjSA+IHpva3VzZWtpXCA7CivlpKfokpwgPiBuaW4nJ25pa3VcIDsKK+S4gOW5lSA+IGhpdG9tYWt1XCA7CivkuLjlnosgPiBtYXJ1Z2F0YVwgOwor5aWJ6IG3ID4gaG91c2hva3VcIDsKK+i1q+OAhSA+IGtha3VrYWt1XCA7CivkuIDlt7sgPiBoaXRvbWFraVwgOwor6Zuj6KmwID4gbmFua2l0c3VcIDsKK+mbgOi6jSA+IGpha3V5YWt1XCA7CivkuK3loZcgPiBuYWthbnVyaVwgOwor6Zmq6aOfID4gYmFpc2hva3VcIDsKK+mgjOaYpSA+IHNob3VzaHVuXCA7CivkuIflsYsgPiB5b3JvenV5YVwgOwor5Lit5Z6jID4gbmFrYWdha2lcIDsKK+S4reWeiyA+IGNodXVnYXRhXCA7CivpoqjlipsgPiBmdXVyeW9rdVwgOwor5LiK5a6iID4gam91a3lha3VcIDsKK+S5seS8kCA+IHJhbmJhdHN1XCA7Civmmbrml6UgPiBjaGluaWNoaVwgOwor54yr5bGeID4gbmVrb3pva3VcIDsKK+WvkuOAhSA+IHNhbXV6YW11XCA7CivkuIDlsbEgPiBoaXRveWFtYVwgOwor5Lit5Zu9ID4gY2h1dWdva3VcIDsKK+WkqeiJsiA+IHRlbnNob2t1XCA7CivpoIPml6UgPiBrZWlqaXRzdVwgOwor6Kmz6Ki7ID4gc2hvdWNodXVcIDsKK+mbkeirhyA+IHphdHN1ZGFuXCA7Civml4/np7AgPiB6b2t1c2hvdVwgOwor5pel55u0ID4gbml0Y2hva3VcIDsKK+e3kemFkiA+IHJ5b2t1c2h1XCA7CivkuIDlrqQgPiBpc3NoaXRzdVwgOwor5aSq6IW/ID4gZnV0b21vbW9cIDsKK+mgmOaJvyA+IHJ5b3VzaG91XCA7Civmlq3ntbYgPiBkYW56ZXRzdVwgOwor5LiA5a2QID4gaGl0b3JpZ29cIDsKK+Wnq+anmCA+IGhpbWVzYW1hXCA7Civpm7vok4QgPiBkZW5jaGlrdVwgOwor5pyr5LujID4gbWF0c3VkYWlcIDsKK+WjnOipsCA+IGJpbmR6dW1lXCA7CivoqIDpnIogPiBrb3RvZGFtYVwgOwor5Lih5Zu9ID4gcnlvdWdva3VcIDsKK+S4u+WPliA+IHNodXVkb3JpXCA7Civpm6jom5kgPiBhbWFnYWVydVwgOwor54af6KqtID4ganVrdWRva3VcIDsKK+eOieS9kyA+IGd5b2t1dGFpXCA7CivniafniZsgPiBib2t1Z3l1dVwgOwor5aG+6ZW3ID4ganVrdWNob3VcIDsKK+WkquiCoSA+IGZ1dG9tb21vXCA7CivmnInlipsgPiB5dXVyeW9rdVwgOwor54ax6KGAID4gbmVra2V0c3VcIDsKK+aVo+iWrCA+IHNhbicneWFrdVwgOwor546J5LujID4gZ3lva3VkYWlcIDsKK+WkqeiBtyA+IHRlbnNob2t1XCA7CivmlofohIggPiBidW5teWFrdVwgOwor6ZuG6Ki7ID4gc2h1dWNodXVcIDsKK+malOmAsSA+IGtha3VzaHV1XCA7Civml6XnlKggPiBuaWNoaXlvdVwgOwor5pu45Y+WID4ga2FraXRvcmlcIDsKK+S4u+WKmyA+IHNodXJ5b2t1XCA7CivmnIjlhoUgPiBnZXRzdW5haVwgOwor5LiD5aScID4gc2hpY2hpeWFcIDsKK+S5nuS4kCA+IGtvdHN1Z2FpXCA7CivkuIPlpJUgPiB0YW5hYmF0YVwgOwor6Kyh54mpID4gdXRhaW1vbm9cIDsKK+mgu+WwvyA+IGhpbicnbnlvdVwgOwor5aSp572wID4gdGVuYmF0c3VcIDsKK+mdoueZvSA+IG9tb3NoaXJvXCA7Civmm7LlkI0gPiBreW9rdW1laVwgOwor57eP6L2EID4gc291a2F0c3VcIDsKK+S4reWPpCA+IGNodXVidXJ1XCA7CivkvZXjgIUgPiBuYW5pbmFuaVwgOwor5LiA5aSxID4gaXNzaGl0c3VcIDsKK+eLvOW6pyA+IG9va2FtaXphXCA7CivoqLzot6EgPiBzaG91c2VraVwgOwor5aWu55m6ID4gZnVucGF0c3VcIDsKK+aWsOepgCA+IHNoaW5rb2t1XCA7CivoqZXoqLsgPiBoeW91Y2h1dVwgOwor5aSJ6ImyID4gaGVuc2hva3VcIDsKK+aYjua7hSA+IG1laW1ldHN1XCA7Civpmbjph6MgPiBva2FkenVyaVwgOwor6KyA55WlID4gYm91cnlha3VcIDsKK+S4gOWhqSA+IGhpdG9zaGlvXCA7CivpoqjkuIogPiBrYXpha2FtaVwgOwor5aSW6IKhID4gc290b21hdGFcIDsKK+e/kuS/lyA+IHNodXV6b2t1XCA7CivpmY3pm6ogPiBrb3VzZXRzdVwgOwor54us5b6XID4gZG9rdXRva3VcIDsKK+e1tumjnyA+IHplc3Nob2t1XCA7Civmm7jliJ0gPiBrYWtpem9tZVwgOwor6KiT6YeIID4ga3Vuc2hha3VcIDsKK+iqpue/kiA+IHNob3VzaHV1XCA7CivniIbnrJEgPiBiYWt1c2hvdVwgOwor57+S5L2cID4gc2h1dXNha3VcIDsKK+abuOWGiiA+IHNob3NhdHN1XCA7Civnibnms6ggPiB0b2t1Y2h1dVwgOwor5pyI5L6LID4gZ2V0c3VyZWlcIDsKK+aapuWtpiA+IHJla2lnYWt1XCA7CivkuLjlgrcgPiB0YW1ha2l6dVwgOwor5aWJ56WdID4gaG91c2h1a3VcIDsKK+mgjOW+syA+IHNob3V0b2t1XCA7CivpmLLpo58gPiBib3VzaG9rdVwgOwor54iq55eVID4gdHN1bWVhdG9cIDsKK+S4reWFsSA+IGNodXVreW91XCA7CivkuKbliJcgPiBoZWlyZXRzdVwgOwor5LmF5LmFID4gaGlzYWJpc2FcIDsKK+e3keixhiA+IHJ5b2t1dG91XCA7Civlpb3niakgPiBrb3VidXRzdVwgOwor6Zuy6ISaID4ga3Vtb2FzaGlcIDsKK+mdkueVsyA+IGFvZGF0YW1pXCA7Civpm5voj4ogPiBoaW5hZ2lrdVwgOwor5aSx562WID4gc2hpc3Nha3VcIDsKK+aZguaZgiA+IHRva2lkb2tpXCA7CivkuK3lgrcgPiBjaHV1c2hvdVwgOwor5aSx56yRID4gc2hpc3Nob3VcIDsKK+aVl+iJsiA+IGhhaXNob2t1XCA7Civpm6rohpogPiB5dWtpaGFkYVwgOwor6Zuj6ImyID4gbmFuc2hva3VcIDsKK+aal+WupCA+IGFuc2hpdHN1XCA7CivpmbXovrEgPiByeW91am9rdVwgOwor5LiL5ZGzID4gc2hpdGFhamlcIDsKK+e1kOmrqiA+IGtlcHBhdHN1XCA7CivnhLzphY4gPiBzaG91Y2h1dVwgOwor5pi85pmCID4gaGlydWRva2lcIDsKK+WjsOiJsiA+IHNlaXNob2t1XCA7CivkuLjkuosgPiBtYXJ1Z290b1wgOwor5paH56+AID4gYnVuc2V0c3VcIDsKK+aWh+eusSA+IGZ1bWliYWtvXCA7CivlpKfnrZIgPiBvb2R6dXRzdVwgOwor5Li45Li4ID4gbWFydW1hcnVcIDsKK+mYsumbqiA+IGJvdXNldHN1XCA7Civpm6rogowgPiB5dWtpaGFkYVwgOwor6Kiz6KqtID4geWFrdWRva3VcIDsKK+S4g+WRsyA+IHNoaWNoaW1pXCA7CivmlrnnlaUgPiBob3VyeWFrdVwgOwor5Li45LiAID4gbWFydWljaGlcIDsKK+eLreWwjyA+IGt5b3VzaG91XCA7CivkuK3kvY4gPiBuYWthYmlrdVwgOwor57eP6KqsID4gc291c2V0c3VcIDsKK+Wni+acqyA+IHNoaW1hdHN1XCA7CivmlofnrYYgPiBidW5waXRzdVwgOwor5aSn56ulID4gb293YXJhd2FcIDsKK+mdkueOiSA+IHNlaWd5b2t1XCA7CivkuKHlgbQgPiByeW91c29rdVwgOwor5aSx56WeID4gc2hpc3NoaW5cIDsKK+mbhuiQvSA+IHNodXVyYWt1XCA7CivpnZnniakgPiBzZWlidXRzdVwgOwor5LiH5Y2SID4gYmFuc290c3VcIDsKK+S4reS6rCA+IGNodXVreW91XCA7CivkuIDlkJEgPiBoaXRhc3VyYVwgOwor54us5a2mID4gZG9rdWdha3VcIDsKK+aYqOacnSA+IHNha3VjaG91XCA7CivkuIDlj6IgPiBoaXRvbXVyYVwgOwor5puy5LqLID4ga3VzZWdvdG9cIDsKK+mbkeiJsiA+IHphc3Nob2t1XCA7CivkuK3kuK0gPiBuYWthbmFrYVwgOwor5a6J44CFID4geWFzdXlhc3VcIDsKK+aVmee/kiA+IGt5b3VzaHV1XCA7CivpmZ7pgLIgPiBzaG91c2hpblwgOwor6aGe5YilID4gcnVpYmV0c3VcIDsKK+e4rue3rCA+IGNoaXJpbWVuXCA7CivmmKjmmoEgPiBzYWt1Z3lvdVwgOwor57WQ6aGYID4ga2VjaGlnYW5cIDsKK+aYqOaYpSA+IHNha3VzaHVuXCA7CivkuIfliKUgPiBiYW5iZXRzdVwgOwor54S86LqrID4gc2hvdXNoaW5cIDsKK+mggeWyqSA+IGtldHN1Z2FuXCA7CivkuKbkuKYgPiBuYW1pbmFtaVwgOwor57im57ieID4gdGF0ZWppbWFcIDsKK+iml+mtlCA+IG5vem9raW1hXCA7CivlopfoqK0gPiB6b3VzZXRzdVwgOwor5LiA5YmyID4gaWNoaXdhcmlcIDsKK+WkleeriyA+IHl1dWRhY2hpXCA7CivloanovpsgPiBzaGlva2FyYVwgOwor6Kej6YeIID4ga2Fpc2hha3VcIDsKK+aXp+a1gSA+IGt5dXVyeXV1XCA7CivkuKHkuKEgPiByeW91cnlvdVwgOwor6K2m5oqcID4ga2VpYmF0c3VcIDsKK+WkieevgCA+IGhlbnNldHN1XCA7Civntbnph50gPiBraW51YmFyaVwgOwor542E5LitID4gZ29rdWNodXVcIDsKK+S4gOWFpSA+IGhpdG9zaGlvXCA7CivkuIDlhYggPiBoaXRvbWF6dVwgOwor5piH5qC8ID4gc2hvdWtha3VcIDsKK+e5reeOiSA+IG1heXVkYW1hXCA7CivmmI7mnIggPiBtZWlnZXRzdVwgOwor6Z6t5pK7ID4gYmVudGF0c3VcIDsKK+mbqOeykiA+IGFtZXRzdWJ1XCA7CivlopfooYAgPiB6b3VrZXRzdVwgOwor5pq05YqbID4gYm91cnlva3VcIDsKK+ims+mWsiA+IGthbicnZXRzdVwgOwor5piT5piTID4geWFzdXlhc3VcIDsKK+e3keiXuyA+IHJ5b2t1c291XCA7Civlo67ntbYgPiBzb3V6ZXRzdVwgOwor5pWZ57GNID4ga3lvdXNla2lcIDsKK+mgmOWbvSA+IHJ5b3Vnb2t1XCA7CivmmI7mmKUgPiBteW91c2h1blwgOwor5LiH5LujID4geW9yb3p1eW9cIDsKK+aUr+iEiCA+IHNoaW15YWt1XCA7Civni6zlm70gPiBkb2t1a29rdVwgOwor5pKw6L+wID4gc2VuanV0c3VcIDsKK+S4ieS4iyA+IHNhbnNoaXRhXCA7CivlpKfnlaUgPiB0YWlyeWFrdVwgOwor5aWz5rCXID4gb24nJ25ha2tlXCA7CivloanosYYgPiBzaGlvbWFtZVwgOwor5LiH5LiWID4geW9yb3p1eW9cIDsKK+S4h+S4gCA+IG1hbicnaWNoaVwgOwor6Zuq56m6ID4geXVraXpvcmFcIDsKK+isgOauuiA+IGJvdXNhdHN1XCA7CivntYTplbcgPiBrdW1pY2hvdVwgOwor6KiA6KqsID4gZ2Vuc2V0c3VcIDsKK+aXqealrSA+IGhheWF3YXphXCA7Civop5LpgJogPiBrYWt1dHN1dVwgOwor5LiA5LihID4gaWNoaXJ5b3VcIDsKK+S4gOS4gCA+IGl0c3VpdHN1XCA7CivntbHovYQgPiB0b3VrYXRzdVwgOwor6Kyh5puyID4geW91a3lva3VcIDsKK+e0hemxkiA+IGJlbmltYXN1XCA7Civni6zllLEgPiBkb2t1c2hvdVwgOwor5paw5r2uID4gc2hpbmNob3VcIDsKK+e3keiMtiA+IHJ5b2t1Y2hhXCA7CivmmLzluK0gPiBoaXJ1c2VraVwgOwor57SF6a6tID4gYmVuaXpha2VcIDsKK+e0jemqqCA+IG5vdWtvdHN1XCA7Civml6fmoKogPiBreXV1a2FidVwgOwor5aer5a6uID4gaGltZW1peWFcIDsKK+WinOiQvSA+IHRzdWlyYWt1XCA7CivmlbDnmb4gPiBzdXVoeWFrdVwgOwor6ZuG57SEID4gc2h1dXlha3VcIDsKK+iqmOeZuiA+IHl1dWhhdHN1XCA7CivpoJjlj44gPiByeW91c2h1dVwgOwor54mH5qCXID4ga2F0YWt1cmlcIDsKK+aXrOaciCA+IGp1bmdldHN1XCA7CivlpKnniLUgPiB0ZW5zaGFrdVwgOwor54WO6JasID4gc2VuJyd5YWt1XCA7Civpm7vnlaUgPiBkZW5yeWFrdVwgOwor5paH54mpID4gYnVuYnV0c3VcIDsKK+aUueeviSA+IGthaWNoaWt1XCA7CivoqabnrYsgPiB0YW1lc3VqaVwgOwor6Kmm562GID4gc2hpaGl0c3VcIDsKK+aXp+aapiA+IGt5dXVyZWtpXCA7Civml6Xmm5wgPiBuaWNoaXlvdVwgOwor6ZqU6IacID4ga2FrdW1ha3VcIDsKK+aXrOaXpSA+IGp1bmppdHN1XCA7CivmlaPnmbogPiBzYW5wYXRzdVwgOwor6ZuR56iOID4gemF0c3V6ZWlcIDsKK+iqreeJqSA+IHlvbWltb25vXCA7Civpm6rnm7IgPiBzZXRzdW1vdVwgOwor6K2m5a+fID4ga2Vpc2F0c3VcIDsKK+ino+iqrCA+IGthaXNldHN1XCA7Civnt6nnt6kgPiB5dXJ1eXVydVwgOwor5pep5pepID4gaGF5YWJheWFcIDsKK+inkuiynSA+IHRzdW5vZ2FpXCA7CivmkYLpo58gPiBzZXNzaG9rdVwgOwor6KW/6ZmjID4gbmlzaGlqaW5cIDsKK+inpuinkiA+IHNob2trYWt1XCA7Civlo4HntJkgPiBrYWJlZ2FtaVwgOwor6Kem6KaaID4gc2hva2tha3VcIDsKK+aXp+aVtSA+IGt5dXV0ZWtpXCA7CivnibnlvrQgPiB0b2t1Y2hvdVwgOwor57SQ6Z2pID4gaGltb2thd2FcIDsKK+aXp+aVmSA+IGt5dXVreW91XCA7Civpm4bnqY0gPiBzaHV1c2VraVwgOwor5Z+L6aqoID4gbWFpa290c3VcIDsKK+aXl+acrCA+IGhhdGFtb3RvXCA7CivlpJbniakgPiBnYWlidXRzdVwgOwor6Ked6KemID4gdGVpc2hva3VcIDsKK+e0mumVtyA+IGt5dXVjaG91XCA7CivmlqzmrrogPiB6YW5zYXRzdVwgOwor54mp5oOFID4gYnV0c3Vqb3VcIDsKK+e3oOe1kCA+IHRlaWtldHN1XCA7CivpnanmlrAgPiBrYWt1c2hpblwgOwor6ZuG56WoID4gc2h1dWh5b3VcIDsKK+aZuuWKmyA+IGNoaXJ5b2t1XCA7Civpm6jnlLcgPiBhbWVvdG9rb1wgOwor54iG5rKIID4gYmFrdWNoaW5cIDsKK+WknOeDjyA+IHlvZ2FyYXN1XCA7Civlp6vlnqMgPiBoaW1lZ2FraVwgOwor54aK56y5ID4ga3VtYXphc2FcIDsKK+eGseeZuiA+IG5lcHBhdHN1XCA7CivpoIbliJcgPiBqdW5yZXRzdVwgOwor5aKo57mpID4gc3VtaW5hd2FcIDsKK+ismeaKkSA+IGtlbicneW9rdVwgOwor5pKu6KaBID4gc2F0c3V5b3VcIDsKK+eLrOS/riA+IGRva3VzaHV1XCA7CivlpInniakgPiBoZW5idXRzdVwgOwor5aKo57iEID4gc3VtaW5hd2FcIDsKK+aYpeWutSA+IHNodW5zaG91XCA7CivnianlvbEgPiBtb25va2FnZVwgOwor6ZeH6ZuyID4geWFtaWt1bW9cIDsKK+e2muiQvSA+IHpva3VyYWt1XCA7Civpm6rnjokgPiB5dWtpZGFtYVwgOwor5pGY6YyyID4gdGVraXJva3VcIDsKK+S7hOOAhSA+IGhvbm9ib25vXCA7Civml6nmioAgPiBoYXlhd2F6YVwgOwor57WC6LqrID4gc2h1dXNoaW5cIDsKK+e3iue4riA+IGtpbnNodWt1XCA7CivoqabnnYAgPiBzaGljaGFrdVwgOwor5aSW5r+gID4gc290b2JvcmlcIDsKK+WmvuWuhSA+IHNob3V0YWt1XCA7CivmmJ/lrr8gPiBzZWlzaHVrdVwgOwor6KeS6KKWID4ga2FrdXNvZGVcIDsKK+mXh+mXhyA+IHlhbWl5YW1pXCA7CivlpJrmub8gPiB0YXNoaXRzdVwgOwor5Lq644CFID4gaGl0b2JpdG9cIDsKK+mdouaOpSA+IG1lbnNldHN1XCA7Civpm5HnlKggPiB6YXRzdXlvdVwgOwor5paw5qCqID4gc2hpbmthYnVcIDsKK+aRuui2syA+IHN1cmlhc2hpXCA7Civml4Hml4EgPiBrYXRhZ2F0YVwgOwor5paw5p+EID4gc2hpbmdhcmFcIDsKK+aUv+eVpSA+IHNlaXJ5YWt1XCA7CivopovpgJogPiBtaXRvb3NoaVwgOwor6Zuj54mpID4gbmFuYnV0c3VcIDsKK+imi+i/lCA+IG1pa2Flc2hpXCA7CivlopfntZAgPiB6b3VrZXRzdVwgOwor5piO5a+fID4gbWVpc2F0c3VcIDsKK+Wnq+WQmyA+IGhpbWVnaW1pXCA7CivmlLvnlaUgPiBrb3VyeWFrdVwgOwor57WQ6KuWID4ga2V0c3Vyb25cIDsKK+Wlj+absiA+IHNvdWt5b2t1XCA7CivpnL3mnIggPiBzZWlnZXRzdVwgOwor6Ziy6J2VID4gYm91c2hva3VcIDsKK+aWsOaapiA+IHNoaW5yZWtpXCA7CivnhLzogokgPiB5YWtpbmlrdVwgOwor54a+54OIID4gc2hpcmV0c3VcIDsKK+e1kOiogCA+IGtldHN1Z2VuXCA7CivoqLznpaggPiBzaG91aHlvdVwgOwor6ZqP562GID4genVpaGl0c3VcIDsKK+WkluazlSA+IHNvdG9ub3JpXCA7CivmlrDmmKUgPiBzaGluc2h1blwgOwor5paw5penID4gc2hpbmt5dXVcIDsKK+mZuOe2miA+IHJpa3V6b2t1XCA7CivnhrHnhrEgPiBhdHN1YXRzdVwgOwor5aKX56+JID4gem91Y2hpa3VcIDsKK+S6pOOAhSA+IGtvbW9nb21vXCA7CivplpPpo58gPiBrYW5zaG9rdVwgOwor57iu5ribID4gc2h1a3VnZW5cIDsKK+aWsOaVmSA+IHNoaW5reW91XCA7Civlo67ng4ggPiBzb3VyZXRzdVwgOwor57mB5q6WID4gaGFuc2hva3VcIDsKK+WkqealtSA+IHRlbmt5b2t1XCA7Civni4Lkv6EgPiBreW91c2hpblwgOwor5pen5bmVID4ga3l1dWJha3VcIDsKK+e1ueiOoiA+IGtpbnVzYXlhXCA7CivlpLHmoLwgPiBzaGlra2FrdVwgOwor6Zao6ZalID4ga2VpYmF0c3VcIDsKK+aXpeW4uCA+IG5pY2hpam91XCA7Civpm5HnhLYgPiB6YXRzdXplblwgOwor5pWX5ruFID4gaGFpbWV0c3VcIDsKK+aUvueGsSA+IGhvdW5ldHN1XCA7CivoqpjmrrogPiB5dXVzYXRzdVwgOwor6ZeK6YGUID4ga2F0dGF0c3VcIDsKK+mZjeiBtyA+IGtvdXNob2t1XCA7CivntKDos6ogPiBzb3NoaXRzdVwgOwor5Z6C6auqID4gdGFyZWdhbWlcIDsKK+mbgeeIqiA+IGdhbmR6dW1lXCA7CivnuKbms6IgPiB0YXRlbmFtaVwgOwor57Sw6KqsID4gc2Fpc2V0c3VcIDsKK+iouueZgiA+IHNoaW5yeW91XCA7CivntprntpogPiB6b2t1em9rdVwgOwor54iG5pKDID4gYmFrdWdla2lcIDsKK+imi+itmCA+IGtlbnNoaWtpXCA7CivoqrDmn5AgPiBkYXJlc29yZVwgOwor54S857OeID4geWFrZWt1c29cIDsKK+aXi+W+iyA+IHNlbnJpdHN1XCA7Civoq7jlvI8gPiBzaG9zaGlraVwgOwor54ax5rqQID4gbmV0c3VnZW5cIDsKK+ino+iBtyA+IGthaXNob2t1XCA7CivkuovjgIUgPiBrb3RvZ290b1wgOwor5aSc5qGcID4geW96YWt1cmFcIDsKK+aWh+acqyA+IGJ1bm1hdHN1XCA7Civml6flroUgPiBreXV1dGFrdVwgOwor6Kq/5pWZID4gY2hvdWt5b3VcIDsKK+S6iOOAhSA+IGthbmVnYW5lXCA7CivmmYLlgbYgPiB0b2tpdGFtYVwgOwor5aaC5a6fID4gbnlvaml0c3VcIDsKK+aWjuaXpSA+IHNhaWppdHN1XCA7Civop5LohpwgPiBrYWt1bWFrdVwgOwor54ax5raZID4gbmV0c3VydWlcIDsKK+irkuaJvyA+IHJ5b3VzaG91XCA7Civpm7vmpbUgPiBkZW5reW9rdVwgOwor5aG1566xID4gZ29taWJha29cIDsKK+aVj+a0uyA+IGJpbmthdHN1XCA7Civplovpl6IgPiBrYWlieWFrdVwgOwor54Wl55m6ID4ga2FucGF0c3VcIDsKK+Wkp+aXpSA+IGRhaW5pY2hpXCA7Civpn5PkurogPiBrYXJhYml0b1wgOwor5aSW5p6gID4gc290b3dha3VcIDsKK+aVt+advyA+IHNoaWtpaXRhXCA7CivoqqzmmI4gPiBzZXRzdW1laVwgOwor57im5qiqID4gdGF0ZXlva29cIDsKK+imgeiooyA+IHlvdWtldHN1XCA7CivlopfnmbogPiB6b3VoYXRzdVwgOwor5piO5ZOyID4gbWVpdGV0c3VcIDsKK+WknOaYvCA+IHlvcnVoaXJ1XCA7CivngrnoqLMgPiB0ZW4nJ3lha3VcIDsKK+WkleaciCA+IHl1dWR6dWtpXCA7CivmlrnlvI8gPiBob3VzaGlraVwgOwor6ZaA6ZalID4gbW9uYmF0c3VcIDsKK+mjhOOAhSA+IGh5b3VoeW91XCA7CivmmKXlhYggPiBoYXJ1c2FraVwgOwor5aeL5YCkID4gaGFqaW1lbmVcIDsKK+aWsOW9oiA+IHNoaW5nYXRhXCA7Civnv7zjgIUgPiB5b2t1eW9rdVwgOwor6Zm455u4ID4gcmlrdXNob3VcIDsKK+e1uee2vyA+IGtpbnV3YXRhXCA7CivniYblo4EgPiBzaG91aGVraVwgOwor5aOK5ruFID4ga2FpbWV0c3VcIDsKK+mam+eJqSA+IGtpd2Ftb25vXCA7CivlpK3mipggPiB5b3VzZXRzdVwgOwor5aWo5a2mID4gc2hvdWdha3VcIDsKK+mbhuazqCA+IHNodXVjaHV1XCA7CivmlbXmlrkgPiB0ZWtpZ2F0YVwgOwor6ZW36ZW3ID4gbmFnYW5hZ2FcIDsKK+aWsOW5tCA+IHNoaW4nJ25lblwgOwor54iG5b+DID4gYmFrdXNoaW5cIDsKK+e0hOirviA+IHlha3VkYWt1XCA7CivmlbDml6UgPiBzdXVqaXRzdVwgOwor5pys44CFID4gbW90b21vdG9cIDsKK+mYsue4riA+IGJvdXNodWt1XCA7Civmk4Hnq4sgPiB5b3VyaXRzdVwgOwor5pWw5pWwID4ga2F6dWthenVcIDsKK+Wkp+aJgCA+IG9vZG9rb3JvXCA7Civml6flm70gPiBreXV1a29rdVwgOwor5Zyw6bygID4gamluZXp1bWlcIDsKK+e0lOihgCA+IGp1bmtldHN1XCA7Civnsonpo74gPiBmdW5zaG9rdVwgOwor57im5pu4ID4gdGF0ZWdha2lcIDsKK+aTpueWtSA+IHN1cmlraXp1XCA7Civnsonpo58gPiBmdW5zaG9rdVwgOwor5aGa56m0ID4gdHN1a2FhbmFcIDsKK+WkluaOpSA+IGdhaXNldHN1XCA7CivoqZXms6ggPiBoeW91Y2h1dVwgOwor54Wn54S8ID4gdGVyaXlha2lcIDsKK+WkseW/gyA+IHNoaXNzaGluXCA7CivntbbnrYYgPiB6ZXBwaXRzdVwgOwor6Zuj5puyID4gbmFua3lva3VcIDsKK+ioiOeVpSA+IGtlaXJ5YWt1XCA7CivlpJnmiJAgPiBzaHVrdXNlaVwgOwor6KaL6JC9ID4gbWlvdG9zaGlcIDsKK+eCueiWrCA+IHRlbicneWFrdVwgOwor54K46JasID4gc2FrdXlha3VcIDsKK+aWsOWuhSA+IHNoaW50YWt1XCA7Civln4voqK0gPiBtYWlzZXRzdVwgOwor5o6l6aqoID4gc2Vra290c3VcIDsKK+mZveeJqSA+IHlvdWJ1dHN1XCA7Civoq5blrqIgPiByb25reWFrdVwgOwor6KeS56ybID4gdHN1bm9idWVcIDsKK+eGseacmyA+IG5ldHN1Ym91XCA7Civplbfph50gPiBjaG91c2hpblwgOwor6Zay6KqtID4gZXRzdWRva3VcIDsKK+iqsOW9vCA+IHRhcmVrYXJlXCA7CivnsbPpo58gPiBiZWlzaG9rdVwgOwor57Si6I6rID4gc2FrdWJha3VcIDsKK+e1kOe4hCA+IGtldHN1am91XCA7CivkuYXjgIUgPiBoaXNhYmlzYVwgOwor6ZuR5puyID4gemFra3lva3VcIDsKK+WkquW3uyA+IGZ1dG9tYWtpXCA7CivmlrDlprsgPiBuaWlkenVtYVwgOwor57WQ57SuID4ga2Vzc2F0c3VcIDsKK+WkmeW/lyA+IHNodWt1c2hpXCA7Civnv4zjgIUgPiB5b2t1eW9rdVwgOwor5pen5YqHID4ga3l1dWdla2lcIDsKK+aRmOiKryA+IHRla2lzaGluXCA7CivplqLoqqwgPiBrYW5zZXRzdVwgOwor54mp5LqLID4gbW9ub2dvdG9cIDsKK+ios+azqCA+IHlha3VjaHV1XCA7CivmlLnmnK0gPiBrYWlzYXRzdVwgOwor54Wu5rK4ID4gc2hhZnV0c3VcIDsKK+Wkp+W1kCA+IG9vYXJhc2hpXCA7Civoo73piYQgPiBzZWl0ZXRzdVwgOwor6KOF6aO+ID4gc291c2hva3VcIDsKK+mbkeaWhyA+IHphdHN1YnVuXCA7CivkuLjjgIUgPiBtYXJ1bWFydVwgOwor57SZ6IqxID4ga2FtaWJhbmFcIDsKK+eEvOeJqSA+IHlha2ltb25vXCA7CivmlbXlvbkgPiB0ZWtpeWFrdVwgOwor57WQ56+AID4ga2Vzc2V0c3VcIDsKK+mVt+i7uCA+IGNob3VqaWt1XCA7CivlpJbluq0gPiBzb3Rvbml3YVwgOwor57WE57SQID4ga3VtaWhpbW9cIDsKK+eykumKgCA+IHRzdWJ1Z2luXCA7CivpnIfluYUgPiBzaGlucHVrdVwgOwor5pW05byPID4gc2Vpc2hpa2lcIDsKK+mWi+ixgSA+IGthaWthdHN1XCA7CivplbfouqsgPiBjaG91c2hpblwgOwor57iB5pelID4gZW4nJ25pY2hpXCA7CivlpKflsYAgPiB0YWlreW9rdVwgOwor5paw5Z6LID4gc2hpbmdhdGFcIDsKK+WknOW1kCA+IHlvYXJhc2hpXCA7CivmlbDlvI8gPiBzdXVzaGlraVwgOwor5pu044CFID4gc2FyYXNhcmFcIDsKK+eJm+S5syA+IGd5dXVueXV1XCA7CivkuK3jgIUgPiBuYWthbmFrYVwgOwor5puy44CFID4ga3VtYWd1bWFcIDsKK+mVt+i2syA+IGNob3Vzb2t1XCA7CivloanniakgPiBzaGlvbW9ub1wgOwor6KaB6IG3ID4geW91c2hva3VcIDsKK+eJh+WBtCA+IGthdGFnYXdhXCA7CivopLbopZ4gPiBzaHV1aGVraVwgOwor6ZuA5paRID4gc29iYWthc3VcIDsKK+aXp+S/lyA+IGt5dXV6b2t1XCA7Civpm7LlvaIgPiBrdW1vZ2F0YVwgOwor57WM56m0ID4ga2Vpa2V0c3VcIDsKK+S4puOAhSA+IG5hbWluYW1pXCA7Civmkp7nnYAgPiBkb3VjaGFrdVwgOwor5pen5L2cID4ga3l1dXNha3VcIDsKK+e0heiKsSA+IGJlbmliYW5hXCA7CivpmbDmub8gPiBpbnNoaXRzdVwgOwor57eo5puyID4gaGVua3lva3VcIDsKK+e1hOeriyA+IGt1bWl0YXRlXCA7CivplovoqK0gPiBrYWlzZXRzdVwgOwor5Lih44CFID4gcnlvdXJ5b3VcIDsKK+e0sOe0sCA+IGhvc29ib3NvXCA7CivoqabmjpggPiBzaGlrdXRzdVwgOwor5aGp54S8ID4gc2hpb3lha2lcIDsKK+WkluWxgCA+IGdhaWt5b2t1XCA7CivlopfmrpYgPiB6b3VzaG9rdVwgOwor5pen5Lq6ID4gZnVydWJpdG9cIDsKK+ios+alrSA+IHlha3VneW91XCA7CivmjpLpm6ogPiBoYWlzZXRzdVwgOwor57Kb6LuNID4gc2h1a3VndW5cIDsKK+eGseaEnyA+IG5ldHN1a2FuXCA7CivlpLHlopwgPiBzaGl0dHN1aVwgOwor5Zu96bOlID4ga29rdWNob3VcIDsKK+iruOWFsSA+IG1vcm90b21vXCA7CivlpKvlpKsgPiBzb3Jlem9yZVwgOwor57Sh57mUID4gYm91c2hva3VcIDsKK+WkluWuoiA+IGdhaWt5YWt1XCA7CivnhrHmg4UgPiBuZXRzdWpvdVwgOwor5aSW5a2rID4gc290b21hZ29cIDsKK+ezluicnCA+IHRvdW1pdHN1XCA7CivoqqDlrp8gPiBzZWlqaXRzdVwgOwor6Zuj5b25ID4gbmFuJyd5YWt1XCA7CivmlZHmgKUgPiBreXV1a3l1dVwgOwor5aGX54mpID4gbnVyaW1vbm9cIDsKK+eJiOS4iyA+IGhhbnNoaXRhXCA7CivpmaTmub8gPiBqb3NoaXRzdVwgOwor54aU5o6lID4geW91c2V0c3VcIDsKK+e1seeOhyA+IHRvdXNvdHN1XCA7Civplbfoqr8gPiBjaG91Y2hvdVwgOwor5peF5YWIID4gdGFiaXNha2lcIDsKK+eCuee2tCA+IHRlbnRldHN1XCA7CivntLDnrYYgPiBzYWloaXRzdVwgOwor6Zuq5ba6ID4gc2V0c3VyZWlcIDsKK+e1ueeJqSA+IGtpbnVtb25vXCA7CivoqLPmn4QgPiB3YWtlZ2FyYVwgOwor6KWf6IWwID4gZXJpa29zaGlcIDsKK+e1kOedgCA+IGtldGNoYWt1XCA7Civnt5HmnpcgPiByeW9rdXJpblwgOwor57WQ55ufID4ga2V0c3VtZWlcIDsKK+eGseW8gSA+IG5ldHN1YmVuXCA7Civpm5Hlv7UgPiB6YXRzdW5lblwgOwor6KiO5q27ID4gdWNoaWppbmlcIDsKK+aUr+aJlSA+IHNoaWhhcmFpXCA7CivopqrnnaYgPiBzaGluYm9rdVwgOwor5aCA56uvID4gaG9yaWJhdGFcIDsKK+mZpeayoSA+IGthbmJvdHN1XCA7CivmlrDliocgPiBzaGluZ2VraVwgOwor6KeS54mbID4ga2FrdWd5dXVcIDsKK+mbkeW9uSA+IHphdHN1ZWtpXCA7Civpm6rlsbEgPiB5dWtpeWFtYVwgOwor6Ku45Lq6ID4gbW9yb2JpdG9cIDsKK+mZo+ayoSA+IGppbmJvdHN1XCA7Civpmb3mpbUgPiB5b3VreW9rdVwgOwor54i25LiKID4gY2hpY2hpdWVcIDsKK+mbquWusyA+IHNldHN1Z2FpXCA7CivplbfoopYgPiBuYWdhc29kZVwgOwor5LiA44CFID4gaXRzdWl0c3VcIDsKK+mYsueGsSA+IGJvdW5ldHN1XCA7Civpm6PlsYAgPiBuYW5reW9rdVwgOwor57iE5by1ID4gbmF3YWJhcmlcIDsKK+WkluWggCA+IHNvdG9ib3JpXCA7CivntYznlaUgPiBrZWlyeWFrdVwgOwor6KOP6YGTID4gdXJhbWljaGlcIDsKK+mao+aOpSA+IHJpbnNldHN1XCA7Civntpnmr40gPiBtYW1haGFoYVwgOwor5aSn5ZadID4gZGFpa2F0c3VcIDsKK+e0meethiA+IHNoaWhpdHN1XCA7CivmlZnlraYgPiBreW91Z2FrdVwgOwor6Zyy5Ye6ID4gcm9zaHV0c3VcIDsKK+ioquaXpSA+IGhvdW5pY2hpXCA7CivloanmsLQgPiBzaGlvbWl6dVwgOwor5pW35ZywID4gc2hpa2ljaGlcIDsKK+mahuaYjCA+IHJ5dXVzaG91XCA7CivmlrDkv64gPiBzaGluc2h1dVwgOwor5aSn5ZCJID4gZGFpa2ljaGlcIDsKK+aWsOS9nCA+IHNoaW5zYWt1XCA7CivplqLohIcgPiBzZWtpd2FrZVwgOwor54et5Y+wID4gc2hva3VkYWlcIDsKK+eCreeqryA+IHN1bWlnYW1hXCA7Civpm7vlnKcgPiBkZW4nJ2F0c3VcIDsKK+mbqOWlsyA+IGFtZW9uJyduYVwgOwor54iG5YK3ID4gYmFrdXNob3VcIDsKK+aWsOS7uyA+IHNoaW4nJ25pblwgOwor5r+A6ZyHID4gZ2VraXNoaW5cIDsKK+mWk+iJsiA+IGthbnNob2t1XCA7CivlpInlnKcgPiBoZW4nJ2F0c3VcIDsKK+imqueOiyA+IHNoaW4nJ25vdVwgOwor5aSn5Y2SID4gZGFpc290c3VcIDsKK+e3j+aLrCA+IHNvdWthdHN1XCA7Civop6PmsbogPiBrYWlrZXRzdVwgOwor5pS/5bGAID4gc2Vpa3lva3VcIDsKK+WjgeW9uSA+IGthYmV5YWt1XCA7Civmjpvou7ggPiBrYWtlamlrdVwgOwor57iE5bC7ID4gbmF3YWppcmlcIDsKK+ijsuiloCA+IHVjaGlrYWtlXCA7Civln7rnnaMgPiBraXJpc3V0b1wgOwor6KSq6ImyID4gdGFpc2hva3VcIDsKK+Wkp+WIpSA+IHRhaWJldHN1XCA7CivlpKfliIcgPiB0YWlzZXRzdVwgOwor5paJ5YiXID4gc2VpcmV0c3VcIDsKK+mbquWbvSA+IHl1a2lndW5pXCA7CivlpKflhoogPiB0YWlzYXRzdVwgOwor57e75a+GID4gY2hpbWl0c3VcIDsKK+mWkeiBtyA+IGthbnNob2t1XCA7CivlpInlk7IgPiBoZW50ZXRzdVwgOwor57O456u5ID4gc2hpY2hpa3VcIDsKK+mWi+iEmiA+IGthaWt5YWt1XCA7CivmlK/lsYAgPiBzaGlreW9rdVwgOwor5aSx5L+dID4gc2hpdHN1aG9cIDsKK+e1gueGhCA+IHNodXVzb2t1XCA7CivlpJblipsgPiBnYWlyeW9rdVwgOwor6Kq/5LyPID4gY2hvdWJ1a3VcIDsKK+mbm+WeiyA+IGhpbmFnYXRhXCA7CivopoHnlaUgPiB5b3VyeWFrdVwgOwor5pWR5Zu9ID4ga3l1dWtva3VcIDsKK+mWgOiEiCA+IG1vbm15YWt1XCA7CivopJDoibIgPiBrYXNzaG9rdVwgOwor5pW05YiXID4gc2VpcmV0c3VcIDsKK+mbu+WKmyA+IGRlbnJ5b2t1XCA7CivmjqXop6YgPiBzZXNzaG9rdVwgOwor5pWw5YiXID4gc3V1cmV0c3VcIDsKK+Wkp+S7jyA+IGRhaWJ1dHN1XCA7CivplqLnr4AgPiBrYW5zZXRzdVwgOwor5pS+5Z+SID4gaG91cmF0c3VcIDsKK+e1nuauuiA+IGtvdXNhdHN1XCA7CivlpJblgbQgPiBzb3RvZ2F3YVwgOwor6KGo6ZaAID4gb21vdGVtb25cIDsKK+aVsOWGiiA+IHN1dXNhdHN1XCA7Civpm7LliqkgPiBrdW1vc3VrZVwgOwor6Zuq5Y6fID4gc2V0c3VnZW5cIDsKK+mbkeWaoiA+IHphdHN1bm91XCA7Civmv4HphZIgPiBkb2J1cm9rdVwgOwor5Zyf6LOqID4gZG9zaGl0c3VcIDsKK+aVteWBtCA+IHRla2lnYXdhXCA7CivoqKXlvIEgPiB0b3RzdWJlblwgOwor6KOP6KGoID4gdXJhb21vdGVcIDsKK+iqreS6hiA+IGRva3VyeW91XCA7CivngbDnr6kgPiBoYWlmdXJ1aVwgOwor57Kl6IW5ID4ga2F5dWJhcmFcIDsKK+eAieihgCA+IHNoYWtldHN1XCA7CivloIXngq0gPiBrYXRhenVtaVwgOwor57a/5byTID4gd2F0YXl1bWlcIDsKK+e4ruWGmSA+IHNodWt1c2hhXCA7CivmlZnljZMgPiBreW91dGFrdVwgOwor5Z6C6ICzID4gdGFyZW1pbWlcIDsKK+ipsOWVjyA+IGtpdHN1bW9uXCA7Civlo7LljbQgPiBiYWlreWFrdVwgOwor5o6h6KGAID4gc2Fpa2V0c3VcIDsKK+e4puWIlyA+IGp1dXJldHN1XCA7CivooYzpnakgPiBneW91a2FrdVwgOwor57W25pybID4gemV0c3Vib3VcIDsKK+aSg+ayiCA+IGdla2ljaGluXCA7Civop5Lmn7EgPiBrYWt1Y2h1dVwgOwor5Zu96L6xID4ga29rdWpva3VcIDsKK+aVmeWJhyA+IGt5b3Vzb2t1XCA7CivloqjlrqIgPiBib2treWFrdVwgOwor5aOr5Y2SID4gc2hpc290c3VcIDsKK+WcsOiiiyA+IGppYnVrdXJvXCA7CivmlbXkuK0gPiB0ZWtpY2h1dVwgOwor5aOy5Ye6ID4gdXJpZGFzaGlcIDsKK+e3iuWvhiA+IGtpbm1pdHN1XCA7Civmj7rnr60gPiB5dXJpa2Fnb1wgOwor6Zuq5YOPID4gc2V0c3V6b3VcIDsKK+e0heeOiSA+IGtvdWd5b2t1XCA7CivnsbPolLUgPiBrb21lZ3VyYVwgOwor5r2u6aKoID4gc2hpb2themVcIDsKK+Wei+e0mSA+IGthdGFnYW1pXCA7CivoqKrlrqIgPiBob3VreWFrdVwgOwor6Kix5auBID4gaWluYXp1a2VcIDsKK+aNj+mAoCA+IG5ldHN1em91XCA7CivmlaPkvZogPiBzYW4nJ2l0c3VcIDsKK+ioseWpmiA+IGlpbmF6dWtlXCA7CivntKLmvKAgPiBzYWt1YmFrdVwgOwor6ZaP56eSID4gdXJ1dWJ5b3VcIDsKK+a9pOmjviA+IGp1bnNob2t1XCA7Civmi7PpqqggPiBnZW5rb3RzdVwgOwor57a/5a+GID4gbWVubWl0c3VcIDsKK+a/gOi2iiA+IGdla2lldHN1XCA7Civntr/lrp8gPiBtZW5qaXRzdVwgOwor57Sw5rOiID4gc2F6YW5hbWlcIDsKK+manOWjgSA+IHNob3VoZWtpXCA7Civlm73os4ogPiBrb2t1em9rdVwgOwor54K55ruFID4gdGVubWV0c3VcIDsKK+inpuaJiyA+IHNob2t1c2h1XCA7Civnr4Dpo58gPiBzZXNzaG9rdVwgOwor5r+A6LOeID4gZ2VraXNob3VcIDsKK+ijvee5lCA+IHNlaXNob2t1XCA7CivntabmlpkgPiBreXV1cnlvdVwgOwor57SU5r2UID4ganVua2V0c3VcIDsKK+malOWjgSA+IGtha3VoZWtpXCA7CivmlL7liJcgPiBob3VyZXRzdVwgOwor6Zm45bCGID4gcmlrdXNob3VcIDsKK+e1gualrSA+IHNodXVneW91XCA7Civpm6rkuIogPiBzZXRzdWpvdVwgOwor57Kf57KSID4gem9rdXJ5dXVcIDsKK+ims+aciCA+IGthbmdldHN1XCA7CivntbHmi6wgPiB0b3VrYXRzdVwgOwor5ou+6ZuGID4gc2h1dXNodXVcIDsKK+e3keWcsCA+IHJ5b2t1Y2hpXCA7CivnhKblv4MgPiBzaG91c2hpblwgOwor56+A6Zu7ID4gc2V0c3VkZW5cIDsKK+eymOeymCA+IG5lYmFuZWJhXCA7Civngo7nhrEgPiBlbicnbmV0c3VcIDsKK+WbveiosSA+IGt1bmltb3RvXCA7CivplovnmbogPiBrYWloYXRzdVwgOwor57KS57KSID4gcnl1dXJ5dXVcIDsKK+aZguOAhSA+IHRva2lkb2tpXCA7Civop6PlvI8gPiBrYWlzaGlraVwgOwor6Kaq5pePID4gc2hpbnpva3VcIDsKK+mVt+efsyA+IGNob3VzZWtpXCA7CivnsonnsokgPiBrb25hZ29uYVwgOwor5pCN546HID4gc29ucml0c3VcIDsKK+ihqOixoSA+IGh5b3VzaG91XCA7Civpm4fkurogPiB5YXRvaW5pblwgOwor6Kit5ZWPID4gc2V0c3Vtb25cIDsKK+immuabuCA+IG9ib2VnYWtpXCA7CivmvIbpu5IgPiBzaGlra29rdVwgOwor57eo5YWlID4gaGVuJydueXV1XCA7Civmi5Lpo58gPiBreW9zaG9rdVwgOwor6ZuG5LitID4gc2h1dWNodXVcIDsKK+e0r+aciCA+IHJ1aWdldHN1XCA7CivlnoLnm7QgPiBzdWljaG9rdVwgOwor57SF5q67ID4gYmVuaWdhcmFcIDsKK+aLm+mbhiA+IHNob3VzaHV1XCA7CivmkqXlvKYgPiBoYXRzdWdlblwgOwor6KGM6LehID4gZ3lvdXNla2lcIDsKK+inkuW6lyA+IGthZG9taXNlXCA7Civnt7TkubMgPiByZW4nJ255dXVcIDsKK+exs+ezoCA+IGtvbWVudWthXCA7Civnt4/lipsgPiBzb3VyeW9rdVwgOwor57Sv5pelID4gcnVpaml0c3VcIDsKK+WcqOiBtyA+IHphaXNob2t1XCA7Civnt4/liKUgPiBzb3ViZXRzdVwgOwor5Z+L5rKhID4gbWFpYm90c3VcIDsKK+imquaImiA+IHNoaW5zZWtpXCA7CivnspjnnYAgPiBuZW5jaGFrdVwgOwor57Oe5rqcID4ga3Vzb2RhbWVcIDsKK+e3iuWIhyA+IGtpbnNldHN1XCA7Civnr4npgKAgPiBjaGlrdXpvdVwgOwor6Kem5aqSID4gc2hva3ViYWlcIDsKK+maiuWIlyA+IHRhaXJldHN1XCA7CivntKLmlbUgPiBzYWt1dGVraVwgOwor5aKX5Yi3ID4gem91c2F0c3VcIDsKK+aYk+OAhSA+IHlhc3V5YXN1XCA7Civnt5Hkvr8gPiByeW9rdWJlblwgOwor5r2u6LazID4gc2hpb2FzaGlcIDsKK+mWsuattCA+IGV0c3VyZWtpXCA7CivntI3mnK0gPiBub3VzYXRzdVwgOwor57WC5oGvID4gc2h1dXNva3VcIDsKK+aMr+iiliA+IGZ1cmlzb2RlXCA7Civns5/msYEgPiBrYXN1amlydVwgOwor57SE5p2fID4geWFrdXNva3VcIDsKK+ihhuiplSA+IHNodXVoeW91XCA7CivmipHprLEgPiB5b2t1dXRzdVwgOwor5oyH6LKrID4geXViaW51a2lcIDsKK+e1tuWkpyA+IHpldHN1ZGFpXCA7Civmv4Doh60gPiBnZWtpc2h1dVwgOwor6KaL5omAID4gbWlkb2tvcm9cIDsKK+aPm+eJqSA+IGthbmJ1dHN1XCA7CivnspfnjocgPiBhcmFyaXRzdVwgOwor57WC5bmVID4gc2h1dW1ha3VcIDsKK+ilsuaSgyA+IHNodXVnZWtpXCA7CivntZDlsYAgPiBrZWtreW9rdVwgOwor562L6aqoID4gc3VqaWJvbmVcIDsKK+aTpuWCtyA+IHN1cmlraXp1XCA7CivoprPlr58gPiBrYW5zYXRzdVwgOwor6Kaz5a6iID4ga2Fua3lha3VcIDsKK+a/q+eriyA+IHJhbnJpdHN1XCA7CivmjqXnnYAgPiBzZXRjaGFrdVwgOwor6Zmj5YiXID4gamlucmV0c3VcIDsKK+mWk+athyA+IGthbmtldHN1XCA7CivlnJ/nrYYgPiB0c3VrdXNoaVwgOwor6KGw6ImyID4gc3Vpc2hva3VcIDsKK+eym+eEtiA+IHNodWt1emVuXCA7CivplpPmrKAgPiBrYW5rZXRzdVwgOwor57Sw5byVID4gaG9zb2Jpa2lcIDsKK+imquWxgCA+IG95YWt5b2t1XCA7CivnrqHovYQgPiBrYW5rYXRzdVwgOwor6Zml5YWlID4ga2FuJydueXV1XCA7CivooajoirggPiBvbW90ZWdlaVwgOwor5pep44CFID4gaGF5YWJheWFcIDsKK+ijheedgCA+IHNvdWNoYWt1XCA7CivntYLlr6kgPiBzaHV1c2hpblwgOwor5r+D57iuID4gbm91c2h1a3VcIDsKK+iojuS8kCA+IHRvdWJhdHN1XCA7CivorI7jgIUgPiBuYXpvbmF6b1wgOwor57WC5a61ID4gc2h1dXNob3VcIDsKK+Wft+W/gyA+IHNodXVzaGluXCA7Civmj5Dnga8gPiBjaG91Y2hpblwgOwor5pGY5b+DID4gdGVraXNoaW5cIDsKK+ijj+eUuiA+IHVyYW1hY2hpXCA7CivnhYnkubMgPiByZW4nJ255dXVcIDsKK+Wcn+elniA+IHVjaGlnYW1pXCA7CivloIDlt50gPiBob3Jpa2F3YVwgOwor57W25ZG9ID4gemV0c3VtZWlcIDsKK+mZi+WKoyA+IHJvdXJldHN1XCA7CivopoHlvI8gPiB5b3VzaGlraVwgOwor562G6aCGID4gaGl0c3VqdW5cIDsKK+iitOedgCA+IGhha2FtYWdpXCA7Civoppblr58gPiBzaGlzYXRzdVwgOwor57Ch57SEID4ga2FuJyd5YWt1XCA7Civlm73nsY0gPiBrb2t1c2VraVwgOwor5oy96IKJID4gaGlraW5pa3VcIDsKK+e2muS8uCA+IHpva3VzaGluXCA7CivnspvmuIUgPiBzaHVrdXNlaVwgOwor57Sw5a+GID4gc2FpbWl0c3VcIDsKK+mWk+afhCA+IGFpZGFnYXJhXCA7CivmkoPlopwgPiBnZWtpdHN1aVwgOwor5aCF5a6fID4ga2Vuaml0c3VcIDsKK+iruOOAhSA+IG1vcm9tb3JvXCA7Civlm73nrZYgPiBrb2t1c2FrdVwgOwor5r+r55m6ID4gcmFucGF0c3VcIDsKK+ethumZoyA+IGhpdHN1amluXCA7CivntZDlm6MgPiBrZXRzdWRhblwgOwor6J6i6ZuqID4ga2Vpc2V0c3VcIDsKK+mWj+aciCA+IGp1bmdldHN1XCA7Civopoblr6kgPiBmdWt1c2hpblwgOwor6ZaL5pytID4ga2Fpc2F0c3VcIDsKK+e0ouWvniA+IHNha3ViYWt1XCA7CivonbbprqsgPiBjaG91emFtZVwgOwor5pCm5omLID4ga2FyYW1ldGVcIDsKK+Wbo+e1kCA+IGRhbmtldHN1XCA7Civml4HjgIUgPiBrYXRhZ2F0YVwgOwor57SZ5bGRID4ga2FtaWt1enVcIDsKK+eyleaxgSA+IGthc3VqaXJ1XCA7CivooYDoibIgPiBrZXNzaG9rdVwgOwor57Kb5q2jID4gc2h1a3VzZWlcIDsKK+mWgOacrSA+IG1vbnNhdHN1XCA7Civoq6TjgIUgPiBnYWt1Z2FrdVwgOwor57W25YCrID4gemV0c3VyaW5cIDsKK+Wei+aeoCA+IGthdGF3YWt1XCA7Civmir3osaEgPiBjaHV1c2hvdVwgOwor5oqE6YyyID4gc2hvdXJva3VcIDsKK+mRkeitmCA+IGthbnNoaWtpXCA7Civpl4fluIIgPiB5YW1paWNoaVwgOwor6J6N6ZuqID4geXV1c2V0c3VcIDsKK+ewkueriyA+IHNhbnJpdHN1XCA7CivntZDlkIggPiBrZXRzdWdvdVwgOwor5Zyw54axID4gY2hpbmV0c3VcIDsKK+mWk+aOpSA+IGthbnNldHN1XCA7CivnrYvph5EgPiBzdWppZ2FuZVwgOwor6Kaq5ZGKID4gc2hpbmtva3VcIDsKK+eul+ihkyA+IHNhbmp1dHN1XCA7CivmvaToibIgPiBqdW5zaG9rdVwgOwor6KGo56ugID4gaHlvdXNob3VcIDsKK+imquWPiyA+IHNoaW4nJ3l1dVwgOwor5ryi6KizID4ga2FuJyd5YWt1XCA7Civplbfml4UgPiBuYWdhdGFiaVwgOwor6Ziy5Lq6ID4gc2FraW1vcmlcIDsKK+e0s+WVhiA+IHNoaW5zaG91XCA7Civon7vonIIgPiBhcmliYWNoaVwgOwor5r+A55ebID4gZ2VraXRzdXVcIDsKK+ims+WFpSA+IGthbicnbnl1dVwgOwor6KGd56uLID4gdHN1aXRhdGVcIDsKK+aKteinpiA+IHRlaXNob2t1XCA7CivnsKHnlaUgPiBrYW5yeWFrdVwgOwor5o6h5rG6ID4gc2Fpa2V0c3VcIDsKK+aNqOeMqyA+IHN1dGVuZWtvXCA7CivnrrHoiLkgPiBoYWtvYnVuZVwgOwor566x6IifID4gaGFrb2J1bmVcIDsKK+ifgOiwtyA+IGtvbWVrYW1pXCA7Civon6/omasgPiBneW91Y2h1dVwgOwor5aSr44CFID4gc29yZXpvcmVcIDsKK+ijgeaxuiA+IHNhaWtldHN1XCA7CivoppblipsgPiBzaGlyeW9rdVwgOwor57KJ5pyrID4gZnVubWF0c3VcIDsKK+aOg+a7hSA+IHNvdW1ldHN1XCA7Civln5LlpJYgPiByYWNoaWdhaVwgOwor5o6S5rOEID4gaGFpc2V0c3VcIDsKK+ilv+WTsiA+IHNlaXRldHN1XCA7CivlnarmlbAgPiB0c3Vib3N1dVwgOwor57Oe5bC/ID4gZnVuJydueW91XCA7Civooajnmb0gPiBoeW91aGFrdVwgOwor5Zub55m+ID4geW9uaHlha3VcIDsKK+e0sOWIpSA+IHNhaWJldHN1XCA7CivmiYvpj6EgPiB0ZWthZ2FtaVwgOwor6Kaq5Lu7ID4gc2hpbicnbmluXCA7CivooI/ogqEgPiBnYW5pbWF0YVwgOwor5aCA5YmyID4gaG9yaXdhcmlcIDsKK+mWouWuiCA+IHNla2ltb3JpXCA7CivooYDnqI4gPiBrZXRzdXplaVwgOwor5Z+35YuZID4gc2hpdHN1bXVcIDsKK+aNleeJqSA+IHRvcmltb25vXCA7CivmiJDpppkgPiBuYXJpa3lvdVwgOwor57WC5LqGID4gc2h1dXJ5b3VcIDsKK+exs+adviA+IGJlaW1hdHN1XCA7Civnr4Dns7ggPiBmdXNoaWl0b1wgOwor5Z6L5byPID4ga2Vpc2hpa2lcIDsKK+evgOexsyA+IHNldHN1bWFpXCA7CivmlbDjgIUgPiBrYXp1a2F6dVwgOwor5om/6Ku+ID4gc2hvdWRha3VcIDsKK+ethuirhyA+IGhpdHN1ZGFuXCA7CivmioToqLMgPiBzaG91eWFrdVwgOwor6ZaL5bGAID4ga2Fpa3lva3VcIDsKK+eqrumzpSA+IGt5dXVjaG91XCA7Civon7nogqEgPiBnYW5pbWF0YVwgOwor6Y6M6aaWID4ga2FtYWt1YmlcIDsKK+eri+mjnyA+IHJpc3Nob2t1XCA7CivooYbnm64gPiBzaHV1bW9rdVwgOwor562G6KemID4gaGlzc2hva3VcIDsKK+ewoea9lCA+IGthbmtldHN1XCA7CivlnoLluZUgPiB0YXJlbWFrdVwgOwor56uL6aGYID4gcml0c3VnYW5cIDsKK+aRguWLlSA+IHNldHN1ZG91XCA7Civnsr7lr4YgPiBzZWltaXRzdVwgOwor56+A56m0ID4gZnVzaGlhbmFcIDsKK+aOpeaWrSA+IHNldHN1ZGFuXCA7CivooYDnm58gPiBrZXRzdW1laVwgOwor56+A56iOID4gc2V0c3V6ZWlcIDsKK+ezuOWPoyA+IGl0b2d1Y2hpXCA7CivmiYvou4ogPiB0ZWd1cnVtYVwgOwor6ZW35bC7ID4gbmFnYWppcmlcIDsKK+a/gea1gSA+IGRha3VyeXV1XCA7CivntKDkurogPiBzaGlyb3V0b1wgOwor5r+A5rWBID4gZ2VraXJ5dXVcIDsKK+Wft+S6iyA+IHNoaXRzdWppXCA7CivmiYDovYQgPiBzaG9rYXRzdVwgOwor5ouS57W2ID4ga3lvemV0c3VcIDsKK+aOkuaXpSA+IGhhaW5pY2hpXCA7Civns7vliJcgPiBrZWlyZXRzdVwgOwor54ax44CFID4gYXRzdWF0c3VcIDsKK+ihsOa7hSA+IHN1aW1ldHN1XCA7CivmjqHmjpggPiBzYWlrdXRzdVwgOwor5Z+S5YaFID4gcmFjaGluYWlcIDsKK+WcqOaXpSA+IHphaW5pY2hpXCA7CivmvIHoibIgPiBneW9zaG9rdVwgOwor5ouZ562GID4gc2VwcGl0c3VcIDsKK+e0lOS4gCA+IGp1bicnaXRzdVwgOwor5pCs5YWlID4gaGFuJydueXV1XCA7CivplqLlj5YgPiBzZWtpdG9yaVwgOwor5pC+5LmzID4gc2FrdW55dXVcIDsKK+ibrumqqCA+IGJhbmtvdHN1XCA7CivmvKvnrYYgPiBtYW5waXRzdVwgOwor56+A55SoID4gc2V0c3V5b3VcIDsKK+aKnOe+pCA+IGJhdHN1Z3VuXCA7CivmiYDoqqwgPiBzaG9zZXRzdVwgOwor5Zu95p+EID4ga3VuaWdhcmFcIDsKK+a6tuihgCA+IHlvdWtldHN1XCA7CivplpHljbQgPiBrYW5reWFrdVwgOwor5omL6KKLID4gdGVidWt1cm9cIDsKK+mWo+WDmiA+IGtha3VyeW91XCA7CivmiYvooZMgPiBzaHVqdXRzdVwgOwor57ep44CFID4geXVydXl1cnVcIDsKK+expOW8lSA+IGt1amliaWtpXCA7CivnsKHmnK0gPiBrYW5zYXRzdVwgOwor6J226J22ID4gY2hvdWNob3VcIDsKK+eti+iCiSA+IGtpbicnbmlrdVwgOwor56qT6ZqbID4gbWFkb2dpd2FcIDsKK+mWk+WFqyA+IGthbnBhY2hpXCA7CivmuJvpo58gPiBnZW5zaG9rdVwgOwor56y56IifID4gc2FzYWJ1bmVcIDsKK+aOpeWyuCA+IHNldHN1Z2FuXCA7CivmiK/oqIAgPiB0YXdhZ290b1wgOwor57K+5YqbID4gc2Vpcnlva3VcIDsKK+ihgOa2siA+IGtldHN1ZWtpXCA7CivnqbrpoqggPiBrYXJha2F6ZVwgOwor6KCP546JID4ga2FuaXRhbWFcIDsKK+ihgOa2mSA+IGtldHN1cnVpXCA7CivmvbDmu4UgPiBrYWltZXRzdVwgOwor5oi46KKLID4gdG9idWt1cm9cIDsKK+aOqOWvnyA+IHN1aXNhdHN1XCA7CivmjqXlrqIgPiBzZWtreWFrdVwgOwor5ZeF6KaaID4ga3l1dWtha3VcIDsKK+aKmOevgCA+IG9yaWZ1c2hpXCA7CivmvaTmu5EgPiBqdW5rYXRzdVwgOwor6ZaT5LyQID4ga2FuYmF0c3VcIDsKK+mOjOi2syA+IGthbWFhc2hpXCA7Civmva7mtYEgPiBjaG91cnl1dVwgOwor5Zub5pyIID4gc2hpZ2F0c3VcIDsKK+mVt+WIgCA+IG5hZ2luYXRhXCA7CivlmLLnrJEgPiBjaG91c2hvdVwgOwor56qu6L+9ID4ga3l1dXRzdWlcIDsKK+eqrui/qyA+IGt5dXVoYWt1XCA7CivmiKbooZMgPiBzZW5qdXRzdVwgOwor5o+h5YqbID4gYWt1cnlva3VcIDsKK+ikh+WLnSA+IGZ1a3VzaG91XCA7Civon7nnjokgPiBrYW5pdGFtYVwgOwor5r2u5rGQID4gY2hvdXNla2lcIDsKK+ewoeaKnCA+IGthbmJhdHN1XCA7Civmva7msLQgPiBzaGlvbWl6dVwgOwor56+A5ribID4gc2V0c3VnZW5cIDsKK+mNm+mJhCA+IHRhbnRldHN1XCA7CivpmobjgIUgPiByeXV1cnl1dVwgOwor6ZqF44CFID4gc3VtaXp1bWlcIDsKK+aPmuWKmyA+IHlvdXJ5b2t1XCA7Civnq7nolq4gPiB0YWtleWFidVwgOwor5omN6ImyID4gc2Fpc2hva3VcIDsKK+ibjembqiA+IGtlaXNldHN1XCA7Civnq4voq5YgPiByaXRzdXJvblwgOwor57Gz5Z2qID4gYmVpdHN1Ym9cIDsKK+ethueusSA+IGZ1ZGViYWtvXCA7CivmuKzph48gPiBzb2t1cnlvdVwgOwor562J562JID4gbmFkb25hZG9cIDsKK+eri+iogCA+IHJpdHN1Z2VuXCA7CivnspvlhZogPiBzaHVrdXRvdVwgOwor6KO45Ye6ID4gcmFzaHV0c3VcIDsKK+mNi+mHnCA+IG5hYmVrYW1hXCA7CivooZ3mkoMgPiBzaG91Z2VraVwgOwor5ryC55m9ID4gaHlvdWhha3VcIDsKK+a3t+mbkSA+IGtvbnphdHN1XCA7CivplbfkuYUgPiBjaG91a3l1dVwgOwor5Zue5oqYID4ga2Fpc2V0c3VcIDsKK+WcsOWigyA+IGRqaXpha2FpXCA7CivmjL/mipwgPiBzb3ViYXRzdVwgOwor6J2m6IWwID4gZWJpZ29zaGlcIDsKK+iho+aJiyA+IGtvcm9tb2RlXCA7Civoobflv4MgPiBjaHV1c2hpblwgOwor6Ju46LazID4gdGFrb2FzaGlcIDsKK+e2muOAhSA+IHpva3V6b2t1XCA7Civmt7HplbcgPiBzaGluY2hvdVwgOwor5ZWG6YePID4gc2hvdXJ5b3VcIDsKK+aMn+aSgyA+IGt5b3VnZWtpXCA7CivmjqXlkIggPiBzZXRzdWdvdVwgOwor6KOP5Y+jID4gdXJhZ3VjaGlcIDsKK+ialemjnyA+IHNhbnNob2t1XCA7CivmipHnlZkgPiB5b2t1cnl1dVwgOwor6Yys6YmEID4gcmVudGV0c3VcIDsKK+a9ruaZgiA+IHNoaW9kb2tpXCA7Civmv4Plr4YgPiBub3VtaXRzdVwgOwor6KGo5b60ID4gaHlvdWNob3VcIDsKK+ihqOW9sCA+IGh5b3VzaG91XCA7Civlm73lraYgPiBrb2t1Z2FrdVwgOwor5ryg5rygID4gYmFrdWJha3VcIDsKK+aOqOWKmyA+IHN1aXJ5b2t1XCA7Civmj4nkuosgPiBtb21lZ290b1wgOwor56u257+UID4ga3lvdXNob3VcIDsKK+m8u+mrrSA+IGhhbmFoaWdlXCA7Civnq4vokbUgPiB0YWNoaWFvaVwgOwor57KJ5LmzID4gZnVuJydueXV1XCA7CivooZ3lv4MgPiBzaG91c2hpblwgOwor6by76auYID4gaGFuYXRha2FcIDsKK+WWgOihgCA+IGtha2tldHN1XCA7CivmiY3nrYYgPiBzYWloaXRzdVwgOwor5oqV54mpID4gbmFnZW1vbm9cIDsKK+WcsOWNtSA+IGppdGFtYWdvXCA7CivnsbPlgIkgPiBrb21lZ3VyYVwgOwor6KKW5Z6jID4gc29kZWdha2lcIDsKK+a3semFkiA+IGZ1a2F6YWtlXCA7CivlnLDlipsgPiBjaGlyeW9rdVwgOwor56m66LGGID4gc29yYW1hbWVcIDsKK+aMr+W5hSA+IHNoaW5wdWt1XCA7CivpvLvpoqggPiBoYW5ha2F6ZVwgOwor5o6S5YiXID4gaGFpcmV0c3VcIDsKK+exs+S7jyA+IGJlaWZ1dHN1XCA7CivmjZXlpLEgPiBob3NoaXRzdVwgOwor56uq57ieID4gdGF0ZWppbWFcIDsKK+aKhOeJqSA+IHNob3Vtb25vXCA7Civnq7nnsKEgPiBjaGlrdWthblwgOwor5ryC5ryCID4gaHlvdWh5b3VcIDsKK+aKueauuiA+IG1hc3NhdHN1XCA7Civoo4/ku5ggPiB1cmFkenVrZVwgOwor5ZSQ6YukID4ga2FyYXN1a2lcIDsKK+aGtuiqrCA+IG9rdXNldHN1XCA7CivlnKflh7ogPiBhc3NodXRzdVwgOwor56uL6ISaID4gcmlra3lha3VcIDsKK+erueeuhiA+IHRha2ViZXJhXCA7Civlm73lm70gPiBrdW5pZ3VuaVwgOwor57CS5aWqID4gc2FuZGF0c3VcIDsKK+Wdh+S4gCA+IGtpbicnaXRzdVwgOwor5ryP5rOEID4gcm91c2V0c3VcIDsKK+m8u+mdqSA+IGhhbmFnYXdhXCA7CivnqbroqqwgPiBrdXVzZXRzdVwgOwor5Zyn5YWlID4gYXRzdW55dXVcIDsKK+aMmeW8jyA+IGt5b3NoaWtpXCA7Civmv6vlhaUgPiByYW4nJ255dXVcIDsKK+mLvOmJhCA+IGtvdXRldHN1XCA7CivnqbroqIAgPiBzb3JhZ290b1wgOwor5ZSQ6YeRID4ga2FyYWthbmVcIDsKK+iZjumsmiA+IHRvcmFoaWdlXCA7CivmurbnmbogPiB5b3VoYXRzdVwgOwor5ru05ru0ID4gdGVraXRla2lcIDsKK+a8gua1gSA+IGh5b3VyeXV1XCA7CivomY7pq60gPiB0b3JhaGlnZVwgOwor6Y+R55+iID4ga2FidXJheWFcIDsKK+a8guaziiA+IGh5b3VoYWt1XCA7CivomZrpo74gPiBreW9zaG9rdVwgOwor5ouZ5paHID4gc2V0c3VidW5cIDsKK+euj+absiA+IHNvdWt5b2t1XCA7CivonqLngasgPiBob3RhcnViaVwgOwor6ZGR5pytID4ga2Fuc2F0c3VcIDsKK+aJjeeVpSA+IHNhaXJ5YWt1XCA7CivpioDpvKAgPiBnaW4nJ25lenVcIDsKK+a/q+S8kCA+IHJhbmJhdHN1XCA7Civmi77lvpcgPiBzaHV1dG9rdVwgOwor5Zu95Y6fID4ga3VuaWJhcmFcIDsKK+ibnuidkyA+IG5hbWVrdWppXCA7CivmjozkuK0gPiBzaG91Y2h1dVwgOwor56a/6be5ID4gaGFnZXRha2FcIDsKK+epuuidiSA+IHV0c3VzZW1pXCA7Civnr4nluq0gPiBjaGlrdXRlaVwgOwor56+k5a2mID4gdG9rdWdha3VcIDsKK+iejeeGsSA+IHl1dW5ldHN1XCA7Civpu5npu5kgPiBtb2t1bW9rdVwgOwor6Y2L6JOLID4gbmFiZWJ1dGFcIDsKK+aIkOeriyA+IHNlaXJpdHN1XCA7CivnrYbmtJcgPiBmdWRlYXJhaVwgOwor5Zuw5Y20ID4ga29ua3lha3VcIDsKK+aHuOe1tiA+IGtlbnpldHN1XCA7Civpu5Lpu7QgPiBrdXJva2FiaVwgOwor5rW36aOfID4ga2Fpc2hva3VcIDsKK+m7kum7kiA+IGt1cm9ndXJvXCA7CivmhY7ph40gPiBzaGluY2hvdVwgOwor6buS6bqmID4ga3Vyb211Z2lcIDsKK+aIkOeoiyA+IG5hcnVob2RvXCA7Civlm73lhYMgPiBrdW5pbW90b1wgOwor5omN54mpID4gc2FpYnV0c3VcIDsKK+m7kum3uiA+IGt1cm9zYWdpXCA7CivpiaTpvLsgPiBrYWdpYmFuYVwgOwor5re36KGAID4ga29ua2V0c3VcIDsKK+euseW6rSA+IGhha29uaXdhXCA7Civmi5nmgqogPiBzZXRzdWFrdVwgOwor5raI6ZW3ID4gc2hvdWNob3VcIDsKK+e0sOOAhSA+IGhvc29ib3NvXCA7Civpu5LptKggPiBrdXJvZ2Ftb1wgOwor5ouh5by1ID4ga2FrdWNob3VcIDsKK+mKgOmrqiA+IGdpbnBhdHN1XCA7Civom4bomasgPiB1amltdXNoaVwgOwor6J2V55SaID4gc2hva3VqaW5cIDsKK+ialeixhiA+IHNvcmFtYW1lXCA7CivooI3luqcgPiBzYXNvcml6YVwgOwor6KKW5LiIID4gc29kZXRha2VcIDsKK+aIpueVpSA+IHNlbnJ5YWt1XCA7Civlm57li4UgPiBrYWljaG9rdVwgOwor5Zu95Lq6ID4ga3VuaWJpdG9cIDsKK+a5v+eWuSA+IHNoaXNzaGluXCA7CivlmLHmnJsgPiBzaG9rdWJvdVwgOwor5rWc6aKoID4gaGFtYWthemVcIDsKK+erqueQtCA+IHRhdGVnb3RvXCA7CivmuIvojLYgPiBzaGlidWNoYVwgOwor6KGM5ZWGID4gZ3lvdXNob3VcIDsKK+eqruetliA+IGt5dXVzYWt1XCA7CivomrDonJIgPiBnZWppZ2VqaVwgOwor5oqX5pelID4ga291bmljaGlcIDsKK+a4i+iJsiA+IHNoaWJ1aXJvXCA7CivmtLvprZogPiBrYXRzdWd5b1wgOwor56+J5aCkID4gY2hpa3V0ZWlcIDsKK+epuuiAsyA+IHNvcmFtaW1pXCA7Civpiq3ph5EgPiB6ZW5pa2FuZVwgOwor5oud5a+fID4gaGFpc2F0c3VcIDsKK+aJv+acjSA+IHNob3VmdWt1XCA7CivmiKrnhLYgPiBzZXRzdXplblwgOwor6b6N6IifID4gcnl1dXNodXVcIDsKK+a3t+iJsiA+IGtvbnNob2t1XCA7CivmuqLmtYEgPiBpdHN1cnl1dVwgOwor5rue5pelID4gdGFpbmljaGlcIDsKK+aKleaKgCA+IG5hZ2V3YXphXCA7CivmiJvnhLYgPiBrYXRzdXplblwgOwor5oiR54mpID4gd2FnYW1vbm9cIDsKK+m8u+iosSA+IGhhbmFtb3RvXCA7Civnp5Lph50gPiBieW91c2hpblwgOwor5oyv5L2cID4gc2hpbnNha3VcIDsKK+a6neazpSA+IGRvYnVkb3JvXCA7CivpipHpiYQgPiBzZW50ZXRzdVwgOwor56aE6auYID4gcm9rdWRha2FcIDsKK+a6neawtCA+IGRvYnVtaXp1XCA7CivmhoLoibIgPiB5dXVzaG9rdVwgOwor56m657GkID4ga2FyYWt1amlcIDsKK+mJhOmqqCA+IHRla2tvdHN1XCA7Civmua/nhZkgPiB5dWtlbXVyaVwgOwor5rSX6auqID4gc2VucGF0c3VcIDsKK+a3oeiJsiA+IHRhbnNob2t1XCA7Civnp4HpiYQgPiBzaGl0ZXRzdVwgOwor56eS6YCfID4gYnlvdXNva3VcIDsKK+evpOS/oSA+IHRva3VzaGluXCA7CivnqbrnrrEgPiBrYXJhYmFrb1wgOwor56qB56uLID4gdG90dGF0c3VcIDsKK+WUkOiNiSA+IGthcmFrdXNhXCA7Civon7vloZogPiBhcmlkenVrYVwgOwor5r2u5YWIID4gc2hpb3Nha2lcIDsKK+iZmuiqrCA+IGt5b3NldHN1XCA7CivooYDkvr8gPiBrZXRzdWJlblwgOwor6KGM5LitID4gZ3lvdWNodXVcIDsKK+a0i+mrqiA+IHlvdWhhdHN1XCA7CivmiKbmsqEgPiBzZW5ib3RzdVwgOwor5oyH5YWIID4geXViaXNha2lcIDsKK+mMpue1tSA+IG5pc2hpa2llXCA7CivllYbnrZYgPiBzaG91c2FrdVwgOwor5omL5p6VID4gdGVtYWt1cmFcIDsKK+engOmAuCA+IHNodXVpdHN1XCA7Civnr4DliIYgPiBzZXRzdWJ1blwgOwor5oim5q2/ID4gc2VuYm90c3VcIDsKK+erueanjSA+IHRha2V5YXJpXCA7Civono3mjqUgPiB5dXVzZXRzdVwgOwor6buS6YmEID4ga3Vyb2dhbmVcIDsKK+a9nOWFpSA+IHNlbicnbnl1dVwgOwor6buS6YeRID4ga3Vyb2dhbmVcIDsKK+a0i+mjnyA+IHlvdXNob2t1XCA7CivnrYnlvI8gPiB0b3VzaGlraVwgOwor6Jep6ZalID4gaGFuYmF0c3VcIDsKK+a1gemHjyA+IHJ5dXVyeW91XCA7CivmhJ/op6YgPiBrYW5zaG9rdVwgOwor6Y2854G4ID4gc2hpbmt5dXVcIDsKK+eqgeeZuiA+IHRvcHBhdHN1XCA7CivpiaTph50gPiBrYWdpYmFyaVwgOwor5oqV5a6/ID4gdG91c2h1a3VcIDsKK+erueaelyA+IGNoaWt1cmluXCA7CivmurbmjqUgPiB5b3VzZXRzdVwgOwor5ZWT55m6ID4ga2VpaGF0c3VcIDsKK+erueadkCA+IGNoaWt1emFpXCA7CivnqbrnmbogPiBrdXVoYXRzdVwgOwor5omV5outID4gZnVzc2hva3VcIDsKK+elnumiqCA+IGthbWlrYXplXCA7CivnqoPnlKggPiBzZXRzdXlvdVwgOwor5rWB6YCfID4gcnl1dXNva3VcIDsKK+a1gemAmiA+IHJ5dXV0c3V1XCA7Civmu53lt50gPiB0YWtpZ2F3YVwgOwor56mA57KSID4ga29rdXJ5dXVcIDsKK+etkeWtkCA+IGtva2lyaWtvXCA7Civnq6/mnKsgPiB0YW5tYXRzdVwgOwor5ZSQ57SZID4ga2FyYWthbWlcIDsKK+iWpumqqCA+IHNlbmtvdHN1XCA7CivplbfjgIUgPiBuYWdhbmFnYVwgOwor6Ju454S8ID4gdGFrb3lha2lcIDsKK+elnembuyA+IHNodWt1ZGVuXCA7CivmgZDpvo0gPiBreW91cnl1dVwgOwor56eB6KqsID4gc2hpc2V0c3VcIDsKK+WTgeiWhCA+IHNoaW5hdXN1XCA7Civmi53lgJ8gPiBoYWlzaGFrdVwgOwor5oiq5patID4gc2V0c3VkYW5cIDsKK+a1t+idlSA+IGthaXNob2t1XCA7CivnrpflhaUgPiBzYW4nJ255dXVcIDsKK+eorue0mSA+IHRhbmVnYW1pXCA7CivmuKnnhrEgPiBvbicnbmV0c3VcIDsKK+mJhOmJoiA+IHRlcHBhY2hpXCA7Civnp4HoqK0gPiBzaGlzZXRzdVwgOwor5rqA5pyIID4gbWFuZ2V0c3VcIDsKK+mNi+eJqSA+IG5hYmVtb25vXCA7Civmub7mm7IgPiB3YW5reW9rdVwgOwor5rOi6aKoID4gbmFtaWthemVcIDsKK+mRkeWIpSA+IGthbmJldHN1XCA7Civpu5LosbkgPiBrdXJvaHlvdVwgOwor5oi/5oi/ID4gZnVzYWZ1c2FcIDsKK+m7kuixhiA+IGt1cm9tYW1lXCA7CivllJDnqoEgPiB0b3V0b3RzdVwgOwor6buZ6Ku+ID4gbW9rdWRha3VcIDsKK+mHjum8oCA+IG5vbmV6dW1pXCA7CivllqzmnKggPiBreW91Ym9rdVwgOwor6buZ6KqtID4gbW9rdWRva3VcIDsKK+aBpemqqCA+IGNoaWtvdHN1XCA7CivmiYvlv4MgPiB0ZWdva29yb1wgOwor56qB54S2ID4gdG90c3V6ZW5cIDsKK+aKvOWIhyA+IG9zaGlraXJpXCA7CivmipHlnKcgPiB5b2t1YXRzdVwgOwor5oW256WdID4ga2Vpc2h1a3VcIDsKK+ethuWkqiA+IGZ1ZGVidXRvXCA7CivpiYTpgZMgPiB0ZXRzdWRvdVwgOwor57KY44CFID4gbmViYW5lYmFcIDsKK+elnumPoSA+IHNoaW5reW91XCA7CivmuInnjJ8gPiBzaG91cnlvdVwgOwor6Jma6ISxID4ga3lvZGF0c3VcIDsKK+ays+mxkiA+IGthd2FtYXN1XCA7Civpiq3oi5QgPiB6ZW5pZ29rZVwgOwor56uL5pytID4gdGF0ZWZ1ZGFcIDsKK+WZm+WCtyA+IGthbWlraXp1XCA7Civph47ptrIgPiBub2JpdGFraVwgOwor5ryU5Ye6ID4gZW5zaHV0c3VcIDsKK+a4rOa3sSA+IHNva3VzaGluXCA7CivpvLvntJkgPiBoYW5hZ2FtaVwgOwor5rip5ripID4gbnVrdW51a3VcIDsKK+m8u+ezniA+IGhhbmFrdXNvXCA7CivnsonjgIUgPiBrb25hZ29uYVwgOwor5oKq6YCGID4gYWt1Z3lha3VcIDsKK+aCqui+oyA+IGFrdXJhdHN1XCA7CivmiKbmhYQgPiBzZW5yaXRzdVwgOwor6buS6KGoID4ga29rdWh5b3VcIDsKK+a2vOeniyA+IHJ5b3VzaHV1XCA7CivpvLvnrYsgPiBoYW5hc3VqaVwgOwor6bqp6LOqID4gZnVzaGl0c3VcIDsKK+ayiOm7mSA+IGNoaW5tb2t1XCA7Civom43ngasgPiBob3RhcnViaVwgOwor6YeR6auqID4ga2lucGF0c3VcIDsKK+mJiOixhiA+IG5hdGFtYW1lXCA7Civno6/pt7ggPiBpc29zaGlnaVwgOwor5rqd5bedID4gZG9idWdhd2FcIDsKK+mOlOaOpSA+IHlvdXNldHN1XCA7CivpjbXmnZ8gPiBrYWdpdGFiYVwgOwor56We6YCfID4gc2hpbnNva3VcIDsKK+m7kuibhyA+IGt1cm9oZWJpXCA7CivmuoDmgqYgPiBtYW4nJ2V0c3VcIDsKK+aIkeaIkSA+IHdhcmV3YXJlXCA7CivmuIXmvZQgPiBzZWlrZXRzdVwgOwor562G5ZCNID4gaGl0c3VtZWlcIDsKK+eoi+eoiyA+IGhvZG9ob2RvXCA7CivonY7luqcgPiBzYXNvcml6YVwgOwor56iu55WcID4gc2h1Y2hpa3VcIDsKK+eti+WKmyA+IGtpbnJ5b2t1XCA7CivpioXoibIgPiBkb3VzaG9rdVwgOwor5Y+N6aqoID4gaGFua290c3VcIDsKK+a6luWwuiA+IGp1bnNoYWt1XCA7Civlj6zpm4YgPiBzaG91c2h1dVwgOwor5rOo6YCyID4gY2h1dXNoaW5cIDsKK+WVhuazgSA+IHNob3VreW91XCA7Civpi7znjokgPiBrb3VneW9rdVwgOwor5rm/5bqmID4gc2hpdHN1ZG9cIDsKK+ifhOS8jyA+IGNoaXBwdWt1XCA7CivmtYXokbEgPiBhc2F0c3VraVwgOwor5oiS5b6LID4ga2Fpcml0c3VcIDsKK+eruuWtpiA+IGppa3VnYWt1XCA7CivlkLnosqsgPiBmdWtpbnVraVwgOwor56y55Y6fID4gc2FzYWhhcmFcIDsKK+eqk+aeoCA+IG1hZG93YWt1XCA7CivllJDniakgPiB0b3Vtb3RzdVwgOwor5Y+i6ZuyID4gbXVyYWt1bW9cIDsKK+WPoumbqCA+IG11cmFzYW1lXCA7CivmtpznpZ4gPiB0b2t1c2hpblwgOwor56uv5bGAID4gdGFua3lva3VcIDsKK+aKnuS4gCA+IHRha3VpdHN1XCA7CivmiKblsYAgPiBzZW5reW9rdVwgOwor562G5YWIID4gZnVkZXNha2lcIDsKK+mKreeusSA+IHplbmliYWtvXCA7CivpjKjms4ogPiBieW91aGFrdVwgOwor6YmE6KGAID4gdGVra2V0c3VcIDsKK+a3t+a1tCA+IGtvbicneW9rdVwgOwor5rex5rexID4gZnVrYWJ1a2FcIDsKK+iXquibhyA+IHlhYnVoZWJpXCA7CivnqK7niakgPiB0YW5lbW9ub1wgOwor56iu54mbID4gdGFuZXVzaGlcIDsKK+ibh+avkiA+IGhlYmlkb2t1XCA7CivmiIzlubQgPiBpbnVkb3NoaVwgOwor6by755a+ID4gYmlzaGl0c3VcIDsKK+a7keWJpCA+IGthdHN1emFpXCA7Civpu5LoiLkgPiBrdXJvZnVuZVwgOwor5ZWG5qiZID4gc2hvdWh5b3VcIDsKK+m8jueriyA+IHRlaXJpdHN1XCA7CivpioDnv7wgPiBnaW4nJ3lva3VcIDsKK+azpei2syA+IGRvcm9hc2hpXCA7CivpjozlvaIgPiBrYW1hZ2F0YVwgOwor5ruF5Y20ID4gbWVra3lha3VcIDsKK+mHo+mKrSA+IHRzdXJpc2VuXCA7CivllYbmpa0gPiBzaG91Z3lvdVwgOwor6Ymx6ISIID4ga291bXlha3VcIDsKK+WPjumbhiA+IHNodXVzaHV1XCA7Civomornh7sgPiBrYWlidXNoaVwgOwor5ZCE6YCxID4ga2FrdXNodXVcIDsKK+elnuiolyA+IHNoaW50YWt1XCA7Civmib/kvI8gPiBzaG91ZnVrdVwgOwor5ZCD6YCGID4gc2hha2t1cmlcIDsKK+m6ueiPjCA+IGtvdWppa2luXCA7Civpu4ToibIgPiBrb3VzaG9rdVwgOwor5ZG96ISIID4gbWVpbXlha3VcIDsKK+m7kuiCiSA+IGt1cm9uaWt1XCA7Civpuqbol4EgPiBtdWdpd2FyYVwgOwor56u55Z6jID4gdGFrZWdha2lcIDsKK+mNm+aOpSA+IHRhbnNldHN1XCA7Civph53ph5EgPiBoYXJpZ2FuZVwgOwor6YqA57iBID4gZ2luYnVjaGlcIDsKK+mHkemMhiA+IGthbmFzYWJpXCA7CivnqI7njocgPiB6ZWlyaXRzdVwgOwor56uL5bGxID4gdGF0ZXlhbWFcIDsKK+m6puiSlCA+IG11Z2ltYWtpXCA7Civph5HpiYQgPiBraW50ZXRzdVwgOwor5Y+k6YeRID4gZnVydWdhbmVcIDsKK+WPpOmHjCA+IGZ1cnVzYXRvXCA7CivllYTmnKggPiB0YWt1Ym9rdVwgOwor5Y+j6YeNID4ga3VjaGlvbW9cIDsKK+a4h+acmyA+IGthdHN1Ym91XCA7CivmiY3lipsgPiBzYWlyeW9rdVwgOwor5Y+k6YWSID4gZnVydXpha2VcIDsKK+a4heacnSA+IHNoaW5jaG91XCA7CivpvLvnhoogPiBoYW5hZ3VtYVwgOwor56yR5YqHID4gc2hvdWdla2lcIDsKK+mMq+adliA+IHNoYWt1am91XCA7Civnqbrmkq4gPiBrdXVzYXRzdVwgOwor6buZ57SEID4gbW9rdXlha3VcIDsKK+ekvuiqrCA+IHNoYXNldHN1XCA7CivmtYXnt5EgPiBzZW5yeW9rdVwgOwor5Y+O6YyyID4gc2h1dXJva3VcIDsKK+aJi+WIgCA+IHRlZ2F0YW5hXCA7CivnqY3mpbUgPiBzZWtreW9rdVwgOwor5omT5YK3ID4gdWNoaWtpenVcIDsKK+mJhOiJsiA+IHRldHN1aXJvXCA7Civlm73jgIUgPiBrdW5pZ3VuaVwgOwor56aP6ICzID4gZnVrdW1pbWlcIDsKK+a7heS6oSA+IG1ldHN1Ym91XCA7CivmhYTnhLYgPiByaXRzdXplblwgOwor5Y+j6L+wID4ga291anV0c3VcIDsKK+WQjOiqrCA+IGRvdXNldHN1XCA7CivnqpLmga8gPiBjaGlzc29rdVwgOwor5Y+z6LazID4gbWlnaWFzaGlcIDsKK+aylumHoyA+IG9raWR6dXJpXCA7Civnq7nlj6IgPiB0YWthbXVyYVwgOwor6buS57GzID4ga3Vyb2dvbWVcIDsKK+WPjumHjyA+IHNodXVyeW91XCA7CivpiYTohZUgPiB0ZXRzdXdhblwgOwor5Y+b6YCGID4gaGFuZ3lha3VcIDsKK+m7nueptCA+IHRlbmtldHN1XCA7CivmsLTps6UgPiBtaXp1ZG9yaVwgOwor5rqA5ZarID4gbWFua2l0c3VcIDsKK+WRiOiJsiA+IHRlaXNob2t1XCA7CivmiJHlm70gPiB3YWdha3VuaVwgOwor6Jau6JuHID4geWFidWhlYmlcIDsKK+WPseiyrCA+IHNoaXNzZWtpXCA7CivmgqroiIwgPiBha3V6ZXRzdVwgOwor6JmO54yrID4gdG9yYW5la29cIDsKK+a0kuiEsSA+IHNoYWRhdHN1XCA7CivpurvntrEgPiBhc2FkenVuYVwgOwor6buQ56u/ID4gbW9jaGl6YW9cIDsKK+WQq+iThCA+IGdhbmNoaWt1XCA7Civlj43pgIYgPiBoYW5neWFrdVwgOwor5Y+C6YWMID4gc2Fuc2hha3VcIDsKK+aIpuWKmyA+IHNlbnJ5b2t1XCA7Civlj47ovK8gPiBzaHV1c2h1dVwgOwor5ZCE6KGMID4ga2FrdWd5b3VcIDsKK+aIpuWIlyA+IHNlbnJldHN1XCA7CivpjYvlupUgPiBuYWJlem9rb1wgOwor5oCl6YCyID4ga3l1dXNoaW5cIDsKK+aCquiAhSA+IHdhcnVtb25vXCA7CivmgKXpgJ8gPiBreXV1c29rdVwgOwor5oCl6L+9ID4ga3l1dXRzdWlcIDsKK+aApei/qyA+IGt5dXVoYWt1XCA7CivpvLvmsLQgPiBoYW5hbWl6dVwgOwor5oK957W2ID4gc2VpemV0c3VcIDsKK+eqruWigyA+IGt5dXVreW91XCA7CivmgrbntbYgPiBtb256ZXRzdVwgOwor5ZGo56ugID4gc2h1dXNob3VcIDsKK+W/q+mXiiA+IGthaWthdHN1XCA7CivmsLTpo58gPiBzdWlzaG9rdVwgOwor56u25L2cID4ga3lvdXNha3VcIDsKK+eri+WRvSA+IHJpdHN1bWVpXCA7CivljrPpgZQgPiBnZW50YXRzdVwgOwor5Y6z6YC5ID4gZ2VudGF0c3VcIDsKK+a5vuWFpSA+IHdhbicnbnl1dVwgOwor5rip5a6kID4gb25zaGl0c3VcIDsKK+mHjeiqrCA+IGp1dXNldHN1XCA7CivpjYvlsLsgPiBuYWJlamlyaVwgOwor5rex5oaCID4gc2hpbicneXV1XCA7CivmsLfpnIcgPiBoeW91c2hpblwgOwor6YmE562GID4gdGVwcGl0c3VcIDsKK+a0u+ecvCA+IGthdHN1Z2FuXCA7Civlj6Poo48gPiBrdWNoaXVyYVwgOwor5rSe56qfID4gZG91a3V0c3VcIDsKK+aIkeWEmCA+IHdhZ2FtYW1hXCA7CivmsLTpmpsgPiBtaXp1Z2l3YVwgOwor6YeN6KSHID4gY2hvdWZ1a3VcIDsKK+engeeJqSA+IHNoaWJ1dHN1XCA7CivmtLvnmbogPiBrYXBwYXRzdVwgOwor6bqm56iIID4gbXVnaXdhcmFcIDsKK+eqkuWhniA+IGNoaXNzb2t1XCA7CivmtojmsoggPiBzaG91Y2hpblwgOwor5ZCM6ImyID4gZG91c2hva3VcIDsKK+aCquethiA+IGFrdWhpdHN1XCA7CivnoazpqqggPiBrb3Vrb3RzdVwgOwor5oiR5L6tID4gd2FnYW1hbWFcIDsKK+ayouigjyA+IHNhd2FnYW5pXCA7CivmsqLon7kgPiBzYXdhZ2FuaVwgOwor5oar5a+fID4gYmluc2F0c3VcIDsKK+m6l+ethiA+IHJlaWhpdHN1XCA7Civol4HntJkgPiB3YXJhZ2FtaVwgOwor56uL5YOPID4gcml0c3V6b3VcIDsKK+a0u+eUqCA+IGthdHN1eW91XCA7Civmtojmr5IgPiBzaG91ZG9rdVwgOwor5ZWG5a2mID4gc2hvdWdha3VcIDsKK+aIkeS6uiA+IHdhcmVoaXRvXCA7CivpjYvloqggPiBuYWJlenVtaVwgOwor5oiQ5LuPID4gam91YnV0c3VcIDsKK+m7kueMqyA+IGt1cm9uZWtvXCA7CivmiJHkuosgPiB3YWdha290b1wgOwor5ZCM6IOeID4gaGFyYWthcmFcIDsKK+mJseeJqSA+IGtvdWJ1dHN1XCA7CivmgKXopbIgPiBreXV1c2h1dVwgOwor5ZCM6IG3ID4gZG91c2hva3VcIDsKK+epuuWkoiA+IHNvcmF5dW1lXCA7Civms6XnuIQgPiBkb3JvbmF3YVwgOwor5b606ZuGID4gY2hvdXNodXVcIDsKK+mFi+mVtyA+IHNodXVjaG91XCA7CivljYrpnbQgPiBoYW5ndXRzdVwgOwor5oK2552AID4gbW9uY2hha3VcIDsKK+m7hOeOiSA+IGtvdWd5b2t1XCA7Civpu5LnhoogPiBrdXJvZ3VtYVwgOwor6JKy6a2aID4ga2FtYXRvdG9cIDsKK+aDqOeDiCA+IHNhbnJldHN1XCA7CivllonlhYMgPiBub2RvbW90b1wgOwor56m65aCAID4ga2FyYWJvcmlcIDsKK+iWhOiGnCA+IGhha3VtYWt1XCA7Civnqq/lhYMgPiBrYW1hbW90b1wgOwor5rib5ZynID4gZ2VuJydhdHN1XCA7Civnp4Hmt5EgPiBzaGlzaHVrdVwgOwor56ia5ouZID4gY2hpc2V0c3VcIDsKK+elkOethiA+IHl1dWhpdHN1XCA7Civlj6TojYkgPiBmdXJ1a3VzYVwgOwor5Y+j6I2SID4ga3VjaGlhcmFcIDsKK+elnuelniA+IGthbWlnYW1pXCA7CivnpZ3npbcgPiBzaHVrdXRvdVwgOwor56We56WQID4gc2hpbicneXV1XCA7CivnpZ3npa0gPiBzaHVrdXNhaVwgOwor5ZGK55m9ID4ga29rdWhha3VcIDsKK+m7hOeGsSA+IGtvdW5ldHN1XCA7CivljYrplbcgPiBoYW4nJ25hZ2FcIDsKK+mJhOeTtiA+IHRldHN1YmluXCA7CivmsLTpg6ggPiBtaXp1bm9idVwgOwor5oKq55mWID4gd2FydWd1c2VcIDsKK+m7kua9riA+IGt1cm9zaGlvXCA7Civok4Tpm7sgPiBjaGlrdWRlblwgOwor5q+N6bOlID4gaGFoYWRvcmlcIDsKK+WPo+iIjCA+IGtvdXpldHN1XCA7CivnpZ3noLIgPiBzaHVrdWhvdVwgOwor5q+b6auqID4gbW91aGF0c3VcIDsKK+ekvOevgCA+IHJlaXNldHN1XCA7Civlj4rokL0gPiBreXV1cmFrdVwgOwor6YqD5q66ID4ganV1c2F0c3VcIDsKK+a4heWbvSA+IHNoaW5rb2t1XCA7Civmg4XnhrEgPiBqb3VuZXRzdVwgOwor56m65ZKzID4ga2FyYXpla2lcIDsKK+ibruWKmyA+IGJhbnJ5b2t1XCA7CivmhYvmhYsgPiB3YXphd2F6YVwgOwor6YeR6ISIID4ga2lubXlha3VcIDsKK+WPquiAhSA+IHRhZGFtb25vXCA7Civmh4fliIcgPiBrb25zZXRzdVwgOwor56aB54mpID4ga2lubW90c3VcIDsKK+iZkOaUvyA+IGd5YWt1c2VpXCA7CivlkI3nrYYgPiBtZWloaXRzdVwgOwor56K66Ki8ID4ga2FrdXNob3VcIDsKK+ekvueotyA+IHNoYXNob2t1XCA7CivlkIznrYYgPiBkb3VoaXRzdVwgOwor5oCl6JC9ID4ga3l1dXJha3VcIDsKK+a0u+a6jCA+IGthcHBhdHN1XCA7CivphY3pgZQgPiBoYWl0YXRzdVwgOwor6Yu45bGRID4gbm9rb2t1enVcIDsKK+mHjeiBtyA+IGp1dXNob2t1XCA7CivmtYHmtYEgPiByeXV1cnl1dVwgOwor5reA5bedID4geW9kb2dhd2FcIDsKK+aDkea6uiA+IHdha3VkZWtpXCA7CivmtYXmspMgPiBhc2FndXRzdVwgOwor5ZCM56m0ID4gZG91a2V0c3VcIDsKK+aDqOauuiA+IHphbnNhdHN1XCA7CivphbfoqZUgPiBrb2t1aHlvdVwgOwor6Yej57O4ID4gdHN1cmlpdG9cIDsKK+a0l+eGiiA+IGFyYWlndW1hXCA7Civlv4PouqsgPiBzaGluc2hpblwgOwor6YeN572wID4ganV1YmF0c3VcIDsKK+a1geawtyA+IHJ5dXVoeW91XCA7Civms6jnm64gPiBjaHV1bW9rdVwgOwor5Y+M6ISaID4gc291a3lha3VcIDsKK+axl+ihgCA+IGthbmtldHN1XCA7Civmtarmm7IgPiByb3VreW9rdVwgOwor6YeR57iBID4ga2luYnVjaGlcIDsKK+WNiumBkyA+IGhhbm1pY2hpXCA7CivljJfpmbggPiBob2t1cmlrdVwgOwor5Y6f6JasID4gZ2VuJyd5YWt1XCA7CivljbPoq74gPiBzb2t1ZGFrdVwgOwor5rS75q66ID4ga2Fzc2F0c3VcIDsKK+WUr+WUryA+IHRhZGF0YWRhXCA7CivlkajmtYEgPiBzaHV1cnl1dVwgOwor56iy5aa7ID4gaW5hZHp1bWFcIDsKK+WPs+ethiA+IHl1dWhpdHN1XCA7CivllJDloqggPiBrYXJhc3VtaVwgOwor5Y+y562GID4gc2hpaGl0c3VcIDsKK+mHo+ervyA+IHRzdXJpemFvXCA7Civph53nrrEgPiBoYXJpYmFrb1wgOwor56eB5puyID4gc2hpa3lva3VcIDsKK+W/g+ixoSA+IHNoaW5zaG91XCA7CivllLHlkI0gPiBzaG91bXlvdVwgOwor5Y+q566hID4gaGl0YXN1cmFcIDsKK+WQjOedgCA+IGRvdWNoYWt1XCA7CivmtKXmtKUgPiBzaGluc2hpblwgOwor5Y2T6LaKID4gdGFrdWV0c3VcIDsKK+aBkOernCA+IGt5b3VyeXV1XCA7CivpvLvlsY4gPiBoYW5ha3Vzb1wgOwor5riF5Ya9ID4gc2VpcmV0c3VcIDsKK+iSkOmbhiA+IHNodXVzaHV1XCA7Civlj5bntYQgPiB0b3Jpa3VtaVwgOwor6JKy6Ym+ID4ga2FtYWJva29cIDsKK+a1t+aKnCA+IGthaWJhdHN1XCA7Civph5HnrrEgPiBrYW5lYmFrb1wgOwor6Jma5byPID4ga3lvc2hpa2lcIDsKK+a2iOaBryA+IHNob3Vzb2t1XCA7CivmsJfos6ogPiBraXNoaXRzdVwgOwor5q676aCCID4ga2FrdWNob3VcIDsKK+WPo+esmyA+IGt1Y2hpYnVlXCA7CivlkITnnIEgPiBrYWt1c2hvdVwgOwor5Y6f6Iy4ID4gaGFyYXRha2VcIDsKK+m0m+m0piA+IG9zaGlkb3JpXCA7CivolqznjokgPiBrdXN1ZGFtYVwgOwor6JmQ5b6FID4gZ3lha3V0YWlcIDsKK+m7kuaeoCA+IGt1cm93YWt1XCA7CivphbfoloQgPiBrb2t1aGFrdVwgOwor5b+D6Ki8ID4gc2hpbnNob3VcIDsKK+mHkeeptCA+IGtpbmtldHN1XCA7Civljp/oibIgPiBnZW5zaG9rdVwgOwor6buS5pyNID4ga3Vyb2Z1a3VcIDsKK+WLnemmrCA+IGthY2hpdW1hXCA7Civmt7HliLsgPiBzaGlua29rdVwgOwor56C06ZCYID4gd2FyZWdhbmVcIDsKK+W/heimgSA+IGhpdHN1eW91XCA7Civmt7flhaUgPiBrb24nJ255dXVcIDsKK+W/jeihkyA+IG5pbmp1dHN1XCA7CivljrPnvbAgPiBnZW5iYXRzdVwgOwor5rWB5pyoID4gcnl1dWJva3VcIDsKK+mIjeeJqSA+IGRvbmJ1dHN1XCA7Civlj7jnm7QgPiBzaGljaG9rdVwgOwor5Y2U6Kq/ID4ga3lvdWNob3VcIDsKK+W+jOi/sCA+IGtvdWp1dHN1XCA7CivnpoHmrLIgPiBraW4nJ3lva3VcIDsKK+a4h+S7sCA+IGthdHN1Z291XCA7Civnp6nluo8gPiBjaGl0c3Vqb1wgOwor5Y2S6KuWID4gc290c3Vyb25cIDsKK+awtOidlSA+IHN1aXNob2t1XCA7CivmtYHmmqIgPiByeXV1Y2hvdVwgOwor5rC06JycID4gc3VpbWl0c3VcIDsKK+efs+mrmCA+IGtva3VkYWthXCA7CivmvILjgIUgPiBoeW91aHlvdVwgOwor5b606Ki8ID4gY2hvdXNob3VcIDsKK+WRveaXpSA+IG1laW5pY2hpXCA7CivlvqnorpAgPiBmdWt1c2h1dVwgOwor5b6p6K6OID4gZnVrdXNodXVcIDsKK+WQjOeOhyA+IGRvdXJpdHN1XCA7Civmg5zmmKUgPiBzZWtpc2h1blwgOwor56S854mpID4gcmVpbW90c3VcIDsKK+efremrqiA+IHRhbnBhdHN1XCA7CivomZrlrp8gPiBreW9qaXRzdVwgOwor5rKW56mNID4gY2h1dXNla2lcIDsKK+iThOiyoSA+IGNoaWt1emFpXCA7Civlj47nqasgPiBzaHV1a2FrdVwgOwor5oGL552AID4gcmVuY2hha3VcIDsKK+W+qeiqvyA+IGZ1a3VjaG91XCA7CivmgqnmrrogPiBub3VzYXRzdVwgOwor5b6p6KqmID4gZnVrdXNob3VcIDsKK+ayu+eVpSA+IGNoaXJ5YWt1XCA7CivlkI3niakgPiBtZWlidXRzdVwgOwor5YyX6YCyID4gaG9rdXNoaW5cIDsKK+m7hOaYjyA+IHRhc29nYXJlXCA7Civlj7LnlaUgPiBzaGlyeWFrdVwgOwor5rOl5r+YID4gbnVrYXJ1bWlcIDsKK+iXpOajmiA+IGZ1amlkYW5hXCA7CivljJfovrAgPiBob2t1c2hpblwgOwor5Y6z57KbID4gZ2Vuc2h1a3VcIDsKK+mJhOajkiA+IHRldHN1Ym91XCA7CivpvJPlrqQgPiBrb3NoaXRzdVwgOwor6bOp6bqmID4gaGF0b211Z2lcIDsKK+ayiOepjSA+IGNoaW5zZWtpXCA7CivpiYTmooMgPiBrYW5hdGVrb1wgOwor5by36ZyHID4ga3lvdXNoaW5cIDsKK+iQvemthCA+IHJha3VoYWt1XCA7Civph4/nmoQgPiByeW91dGVraVwgOwor5b+g6ImvID4gY2h1dXJ5b3VcIDsKK+iXqeacrSA+IGhhbnNhdHN1XCA7Civlj6TnlrUgPiBmdXJ1a2l6dVwgOwor5YuF6aGYID4gY2hva3VnYW5cIDsKK+mFkuiUtSA+IHNha2FndXJhXCA7Civli4XpoYwgPiBjaG9rdWRhaVwgOwor5b+g6IejID4gY2h1dXNoaW5cIDsKK+W8semchyA+IGpha3VzaGluXCA7CivnrYnjgIUgPiBuYWRvbmFkb1wgOwor56aB5pytID4ga2luc2F0c3VcIDsKK+eoruWIpSA+IHNodWJldHN1XCA7Civpu5LmiL8gPiBrdXJvYnVzYVwgOwor5oKm5qW9ID4gZXRzdXJha3VcIDsKK+awtOiNiSA+IG1penVrdXNhXCA7CivmhJvlrZAgPiBpdG9zaGlnb1wgOwor6YmE5p2QID4gdGV0c3V6YWlcIDsKK+W8pumfsyA+IHRzdXJ1b3RvXCA7CivllJDlgpggPiBrYXJha2FzYVwgOwor6bqm5p2fID4gbXVnaXRhYmFcIDsKK+awtOiMjiA+IG1penVndWtpXCA7CivmhoLkuosgPiB1cmVpZ290b1wgOwor55+t6Z20ID4gdGFuZ3V0c3VcIDsKK+awtOiLlCA+IG1penVnb2tlXCA7CivmtIvmoqggPiB5b3VuYXNoaVwgOwor5q6L6ZuqID4gemFuc2V0c3VcIDsKK+WOmue0mSA+IGF0c3VnYW1pXCA7CivmtbTlrqIgPiB5b2treWFrdVwgOwor56We5qmLID4gc2hpbmt5b3VcIDsKK+awtOiIuSA+IG1penVidW5lXCA7Civms6XmsrwgPiBkb3JvbnVtYVwgOwor5Y+N55m6ID4gaGFucGF0c3VcIDsKK+elnuanmCA+IGthbWlzYW1hXCA7Civlj4znmbogPiBzb3VoYXRzdVwgOwor56Oo55+zID4gdG9naWlzaGlcIDsKK+W8gemrqiA+IGJlbnBhdHN1XCA7Civms6XmsLQgPiBkb3JvbWl6dVwgOwor5rOh5rKrID4gaG91bWF0c3VcIDsKK+elnualrSA+IGthbWl3YXphXCA7CivmsLTohbkgPiBtaXp1YmFyYVwgOwor5Y+C552AID4gc2FuY2hha3VcIDsKK+iWrOavkiA+IHlha3Vkb2t1XCA7CivnorrntIQgPiBrYWt1eWFrdVwgOwor6YWS6ImyID4gc2h1c2hva3VcIDsKK+awtOiEiCA+IHN1aW15YWt1XCA7CivnpZ7mo5ogPiBrYW1pZGFuYVwgOwor5Y+k54mpID4gZnVydW1vbm9cIDsKK+W/q+e1tiA+IGthaXpldHN1XCA7CivphY3oibIgPiBoYWlzaG9rdVwgOwor6YeR54mpID4ga2FuYW1vbm9cIDsKK+elnuagvCA+IHNoaW5rYWt1XCA7Civnpr/lsbEgPiBoYWdleWFtYVwgOwor5Y2B6JasID4gZG9rdWRhbWlcIDsKK+ayiOeXmyA+IGNoaW50c3V1XCA7CivmgKXnl4UgPiBreXV1YnlvdVwgOwor6Yed54G4ID4gc2hpbmt5dXVcIDsKK+efs+mPgyA+IHNla2l6b2t1XCA7Civnpa3ml6UgPiBzYWlqaXRzdVwgOwor5Y2Y6ImyID4gdGFuc2hva3VcIDsKK+W/g+iFuSA+IHNoaW5wdWt1XCA7CivmsbrnnYAgPiBrZXRjaGFrdVwgOwor56iO5YilID4gemVpYmV0c3VcIDsKK+m7kuW5lSA+IGt1cm9tYWt1XCA7CivnpZ3mna8gPiBzaHVrdWhhaVwgOwor56We5pyoID4gc2hpbmJva3VcIDsKK+aCquaTpiA+IHdhcnV6dXJlXCA7CivpvLvlhYggPiBoYW5hc2FraVwgOwor6by75YWDID4gaGFuYW1vdG9cIDsKK+elnuaciCA+IGtvdWR6dWtpXCA7Civlj47njbIgPiBzaHV1a2FrdVwgOwor5rCR6I2JID4gdGFtaWd1c2FcIDsKK+a0u+W8gSA+IGthdHN1YmVuXCA7CivnoZ3olqwgPiBzaG91eWFrdVwgOwor5ZKM5a6kID4gd2FzaGl0c3VcIDsKK+mHiOeEtiA+IHNoYWt1emVuXCA7Civnp7DlkI0gPiBzaG91bXlvdVwgOwor56aB5oW+ID4ga2luJyd5b2t1XCA7Civlk7LkurogPiB0ZXRzdWppblwgOwor56aP5b6zID4gZnVrdXRva3VcIDsKK+m7kuWxsSA+IGt1cm95YW1hXCA7Civli7/oq5YgPiBtb2NoaXJvblwgOwor5by36L+rID4ga3lvdWhha3VcIDsKK+W8lOmQmCA+IGNob3VzaG91XCA7CivmgKrniakgPiBrYWlidXRzdVwgOwor56aP5byVID4gZnVrdWJpa2lcIDsKK+ayvOayoiA+IHNob3V0YWt1XCA7CivonbbjgIUgPiBjaG91Y2hvdVwgOwor6JaE5rC3ID4gaGFrdWh5b3VcIDsKK+WNkuiAhSA+IHNvdHN1c2hhXCA7CivmsrnmsZcgPiBhYnVyYWFzZVwgOwor5Y6f55m6ID4gZ2VucGF0c3VcIDsKK+WJsumrmCA+IHdhcmlkYWthXCA7CivokZfov7AgPiBjaG9qdXRzdVwgOwor56Cy6KGTID4gaG91anV0c3VcIDsKK+WOmueariA+IGF0c3VrYXdhXCA7Civli4XpgbggPiBjaG9rdXNlblwgOwor5rGC56mNID4ga3l1dXNla2lcIDsKK+avm+iZsSA+IGtlamlyYW1pXCA7CivphZLns58gPiBzYWtla2FzdVwgOwor6YWS57KVID4gc2FrZWthc3VcIDsKK+WKh+mchyA+IGdla2lzaGluXCA7CivlvJXph5EgPiBoaWtpZ2FuZVwgOwor5Y+k5rKzID4gZnVydWthd2FcIDsKK+W+qee/kiA+IGZ1a3VzaHV1XCA7Civmr5Lom4cgPiBkb2t1aGViaVwgOwor6YmE5bqKID4ga2FuYXRva29cIDsKK+WQjeaciCA+IG1laWdldHN1XCA7CivlkI3mm7IgPiBtZWlreW9rdVwgOwor6YmE5bi9ID4gdGV0c3Vib3VcIDsKK+WQjOaciCA+IGRvdWdldHN1XCA7CivmgKXmv4AgPiBreXV1Z2VraVwgOwor5Y2g566XID4gdXJheWFzYW5cIDsKK+WNlOe0hCA+IGt5b3V5YWt1XCA7Civmr5LolqwgPiBkb2t1eWFrdVwgOwor5rG654S2ID4ga2V0c3V6ZW5cIDsKK+auluiyoSA+IHNob2t1emFpXCA7Civph43mrrogPiBqdXVzYXRzdVwgOwor5oOF5a6fID4gam91aml0c3VcIDsKK+eni+WPoyA+IGFraWd1Y2hpXCA7Civph5HmrKAgPiBraW5rZXRzdVwgOwor5Y2Y56+AID4gdGFuc2V0c3VcIDsKK+a0i+W8jyA+IHlvdXNoaWtpXCA7Civlj5bmsbogPiB0b3Jpa2ltZVwgOwor5ZCM5pelID4gZG91aml0c3VcIDsKK+elreW8jyA+IHNhaXNoaWtpXCA7CivomZDkvb8gPiBneWFrdXNoaVwgOwor5rKQ5rW0ID4gbW9rdXlva3VcIDsKK+W+kuiAhSA+IHRhZGFtb25vXCA7CivpiYTlsbEgPiB0ZXRzdXphblwgOwor5Y6f54mpID4gZ2VuYnV0c3VcIDsKK+WKm+mHjyA+IHJpa2lyeW91XCA7CivmtJ7lr58gPiBkb3VzYXRzdVwgOwor5by36Kq/ID4ga3lvdWNob3VcIDsKK+mBk+mghiA+IG1pY2hpanVuXCA7CivnpZ7lvrMgPiBzaGludG9rdVwgOwor5b+D56WeID4gc2hpbnNoaW5cIDsKK+mBiumjnyA+IHl1dXNob2t1XCA7CivlvqnnsY0gPiBmdWt1c2VraVwgOwor5qyg6aOfID4ga2Vzc2hva3VcIDsKK+aApea1gSA+IGt5dXVyeXV1XCA7Civmr5LojLggPiBkb2t1dGFrZVwgOwor5bu26YeRID4gbm9iZWdhbmVcIDsKK+eijOeijCA+IHJva3Vyb2t1XCA7Civpiq3kuoAgPiB6ZW5pZ2FtZVwgOwor5q2v6LuKID4gaGFndXJ1bWFcIDsKK+W8t+ilsiA+IGt5b3VzaHV1XCA7CivlvJXotoogPiBoaWtrb3NoaVwgOwor5YmD6auqID4gdGVpaGF0c3VcIDsKK+W/veeEtiA+IGtvdHN1emVuXCA7Civph5HmooMgPiBrYW5hdGVrb1wgOwor5Y+k5qCqID4gZnVydWthYnVcIDsKK+WLheirmiA+IGNob2t1am91XCA7Civoj5zpo58gPiBzYWlzaG9rdVwgOwor5oKE5oKEID4gc3Vnb3N1Z29cIDsKK+ehrOethiA+IGtvdWhpdHN1XCA7CivnpZ7lt54gPiBzaGluc2h1dVwgOwor5b2p6ImyID4gc2Fpc2hva3VcIDsKK+W/heedgCA+IGhpdGNoYWt1XCA7Civnn6XorZggPiBjaGlzaGlraVwgOwor5oiR44CFID4gd2FyZXdhcmVcIDsKK+mAsumnkCA+IHNoaW5jaHV1XCA7CivmhIHlgrcgPiBzaHV1c2hvdVwgOwor5Y+k5pyNID4gZnVydWZ1a3VcIDsKK+awtOeTtiA+IG1penVnYW1lXCA7Civlv4PnmoQgPiBzaGludGVraVwgOwor6buZ5YqHID4gbW9rdWdla2lcIDsKK+WQvuWtkCA+IHdhZ2ltb2tvXCA7CivmsJfnn60gPiBraW1pamlrYVwgOwor6JWD5q6WID4gaGFuc2hva3VcIDsKK+W+l+etliA+IHRva3VzYWt1XCA7Civli4Xoo4EgPiBjaG9rdXNhaVwgOwor5b6T56+AID4ganV1c2V0c3VcIDsKK+mBqemHjyA+IHRla2lyeW91XCA7Civlv4Pnl5sgPiBzaGludHN1dVwgOwor5YqH6YCaID4gZ2VraXRzdXVcIDsKK+mHkeaYnyA+IGtpbmJvc2hpXCA7CivmsbLmsbIgPiBreXV1a3l1dVwgOwor5by+6JasID4gZGFuJyd5YWt1XCA7CivljZjnmbogPiB0YW5wYXRzdVwgOwor5b+F55SoID4gaGl0c3V5b3VcIDsKK+WNkuebtCA+IHNvdGNob2t1XCA7CivmsLTnjokgPiBtaXp1dGFtYVwgOwor56We5a2mID4gc2hpbmdha3VcIDsKK+emgeWcpyA+IGtpbicnYXRzdVwgOwor56eA5L2cID4gc2h1dXNha3VcIDsKK+W+s+ebriA+IHRva3Vtb2t1XCA7Civph4zmlrkgPiBzYXRva2F0YVwgOwor5rOV5b6LID4gaG91cml0c3VcIDsKK+ekvOW8jyA+IHJlaXNoaWtpXCA7Civlj47mnZ8gPiBzaHV1c29rdVwgOwor6YeI5piOID4gc2hha3VtZWlcIDsKK+a0u+WLlSA+IGthdHN1ZG91XCA7Civpu5LlhoYgPiBrdXJvbWFydVwgOwor5rOV5byPID4gaG91c2hpa2lcIDsKK+awtOeJqSA+IG1penVtb25vXCA7CivlvpfnpaggPiB0b2t1aHlvdVwgOwor6YGl6YGlID4gaGFydWJhcnVcIDsKK+a0vuWHuiA+IGhhc2h1dHN1XCA7Civph4jmlL4gPiBzaGFrdWhvdVwgOwor5rWB5YWlID4gcnl1dW55dXVcIDsKK+aui+iZkCA+IHphbmd5YWt1XCA7CivolqzlsYsgPiBrdXN1cml5YVwgOwor6Jas5bGAID4geWFra3lva3VcIDsKK+ehrOebtCA+IGtvdWNob2t1XCA7CivlkIjlvI8gPiBnb3VzaGlraVwgOwor56We5aaZID4gc2hpbm15b3VcIDsKK+mBoOmBkyA+IHRvb21pY2hpXCA7CivlvZPogbcgPiB0b3VzaG9rdVwgOwor5bqV6Z2pID4gc29rb2dhd2FcIDsKK+mGnOalrSA+IHNodXVneW91XCA7CivolqzlraYgPiB5YWt1Z2FrdVwgOwor56Gd55+zID4gc2hvdXNla2lcIDsKK+mBmemBmSA+IGhhcnViYXJ1XCA7Civnpo/liqkgPiBmdWt1c3VrZVwgOwor5q+b562GID4gbW91aGl0c3VcIDsKK+W/q+a0uyA+IGthaWthdHN1XCA7CivljrvmnIggPiBreW9nZXRzdVwgOwor5q2j6KaaID4gc2hvdWdha3VcIDsKK+edgOmnhSA+IGNoYWt1ZWtpXCA7Civlj43mkqUgPiBoYW5wYXRzdVwgOwor5bu66KitID4ga2Vuc2V0c3VcIDsKK+aBkOaCpiA+IGt5b3VldHN1XCA7CivolK3mp5ggPiBrYWdlc2FtYVwgOwor56We5Z+fID4gc2hpbicnaWtpXCA7CivljYPnlJ8gPiBzZW4nJ25hcmlcIDsKK+iWhOW8sSA+IGhha3VqYWt1XCA7CivmgY3mg5ogPiBrb3Vrb3RzdVwgOwor5b+F54S2ID4gaGl0c3V6ZW5cIDsKK+aBkOaBkCA+IGtvd2Fnb3dhXCA7CivlkIzlsYAgPiBkb3VreW9rdVwgOwor6buS5Li4ID4ga3Vyb21hcnVcIDsKK+iSuOedgCA+IGpvdWNoYWt1XCA7CivljYrnjokgPiBoYW5neW9rdVwgOwor6YCG6aKoID4gZ3lha3VmdXVcIDsKK+WIhumqqCA+IGJ1bmtvdHN1XCA7CivnpZ7lm70gPiBzaGlua29rdVwgOwor5bm86aGUID4gb3NhbmFnYW9cIDsKK+W8t+iGnCA+IGt5b3VtYWt1XCA7CivlkIzlrr8gPiBkb3VzaHVrdVwgOwor5ZCN5a6fID4gbWVpaml0c3VcIDsKK+atouihgCA+IHNoaWtldHN1XCA7CivpgJDpm7sgPiBjaGlrdWRlblwgOwor5Y+O5ou+ID4gc2h1dXNodXVcIDsKK+WLleiEiCA+IGRvdW15YWt1XCA7CivnnYDpoIYgPiBjaGFrdWp1blwgOwor6JK455m6ID4gam91aGF0c3VcIDsKK+mAhumghiA+IGd5YWt1anVuXCA7CivlkIjlrr8gPiBnYXNzaHVrdVwgOwor5YqH6KmVID4gZ2VraWh5b3VcIDsKK+mFuOasoCA+IHNhbmtldHN1XCA7CivpiYTliaQgPiB0ZXRzdXphaVwgOwor56Gs546JID4ga291Z3lva3VcIDsKK+axuuaWrSA+IGtldHN1ZGFuXCA7CivlvoznmbogPiBrb3VoYXRzdVwgOwor5Ymv6LOeID4gZnVrdXNob3VcIDsKK+mJhOWIhiA+IHRldHN1YnVuXCA7CivmsrPlupUgPiBrYXdhem9rb1wgOwor5Y2S54S2ID4gc290c3V6ZW5cIDsKK+edgOmbuyA+IGNoYWt1ZGVuXCA7CivluoPpl4ogPiBrb3VrYXRzdVwgOwor5Y+L5oiQID4gdG9tb25hcmlcIDsKK+awtOa0nyA+IG1penViYW5hXCA7CivljbPmsbogPiBzb2trZXRzdVwgOwor5b6M55WlID4ga291cnlha3VcIDsKK+WJjei/sCA+IHplbmp1dHN1XCA7CivlibLorbIgPiBrYXRzdWpvdVwgOwor5Y6f5puyID4gZ2Vua3lva3VcIDsKK+WIh+mhmCA+IHNldHN1Z2FuXCA7Civlh7rpp5UgPiBzaHV0c3VnYVwgOwor5b6M55SjID4gbm9jaGl6YW5cIDsKK+iQveiOqyA+IHJha3ViYWt1XCA7CivpganoqZUgPiB0ZWtpaHlvdVwgOwor5b+Z5q66ID4gYm91c2F0c3VcIDsKK+iTi+eJqSA+IGZ1dGFtb25vXCA7CivmuKnjgIUgPiBudWt1bnVrdVwgOwor5Ye66aasID4gc2h1dHN1YmFcIDsKK+mBqeiosyA+IHRla2l5YWt1XCA7CivmsLTmsqEgPiBzdWlib3RzdVwgOwor5b6h54mpID4gZ3lvYnV0c3VcIDsKK+W9k+evgCA+IHRvdXNldHN1XCA7CivlkLjlj6MgPiBzdWlrdWNoaVwgOwor5oKL5ZeHID4gcmluc2hva3VcIDsKK+WQuOWPjiA+IGt5dXVzaHV1XCA7Civlj6Tlt50gPiBmdXJ1a2F3YVwgOwor5Ym16KitID4gc291c2V0c3VcIDsKK+mHneWxsSA+IGhhcml5YW1hXCA7CivmronogbcgPiBqdW5zaG9rdVwgOwor5Y+W5byVID4gdG9yaWhpa2lcIDsKK+ayoeW5tCA+IGJvdHN1bmVuXCA7Civlj7Llrp8gPiBzaGlqaXRzdVwgOwor6JGJ6ISIID4geW91bXlha3VcIDsKK+WPsOWvhiA+IHRhaW1pdHN1XCA7CivpgZTorZggPiB0YXNzaGlraVwgOwor5Y+O5b6XID4gc2h1dXRva3VcIDsKK+m6puS9nCA+IG11Z2lzYWt1XCA7CivmgKfmgqogPiBzaG91d2FydVwgOwor5Y2R5rm/ID4gaGlzaGl0c3VcIDsKK+WQneWXhyA+IHJpbnNob2t1XCA7CivlvpPniakgPiBqdXVidXRzdVwgOwor5b2555WcID4gZWtpY2hpa3VcIDsKK+mJhOS6uiA+IHRldHN1amluXCA7CivmrbvohIggPiBzaGlteWFrdVwgOwor5Yeh6aqoID4gYm9ua290c3VcIDsKK+mHkeWxkSA+IGthbmFrdXp1XCA7Civlv4XmrrogPiBoaXNzYXRzdVwgOwor5Y+k5a+6ID4gZnVydWRlcmFcIDsKK+a0m+S4rSA+IHJha3VjaHV1XCA7Civlh7jpnaIgPiB0b3RzdW1lblwgOwor5ZC45YWlID4ga3l1dW55dXVcIDsKK+WIsOmBlCA+IHRvdXRhdHN1XCA7Civlj6Plrp8gPiBrb3VqaXRzdVwgOwor5YqH6JasID4gZ2VraXlha3VcIDsKK+efree4riA+IHRhbnNodWt1XCA7CivlhrfpuqYgPiBoaXlhbXVnaVwgOwor56Wd5YW4ID4gc2h1a3V0ZW5cIDsKK+WHuumZsyA+IHNodXRjaGluXCA7CivmraPoibIgPiBzZWlzaG9rdVwgOwor6JGb57GgID4gdHN1ZHp1cmFcIDsKK+W+s+ayoiA+IHRva3V0YWt1XCA7Civph4jlsIogPiBzaGFrdXNvblwgOwor5bmz6Y2LID4gaGlyYW5hYmVcIDsKK+mFkuaovSA+IHNha2FkYXJ1XCA7CivlvIHoiIwgPiBiZW56ZXRzdVwgOwor6L+96YyyID4gdHN1aXJva3VcIDsKK+aBi+WmuyA+IGtvaWR6dW1hXCA7CivmgJbmgJYgPiBrb3dhZ293YVwgOwor5b6p5rS7ID4gZnVra2F0c3VcIDsKK+awt+afsSA+IGh5b3VjaHV1XCA7Civmgavllp0gPiBkb3VrYXRzdVwgOwor6YGp6JasID4gdGVraXlha3VcIDsKK+WJo+ihkyA+IGtlbmp1dHN1XCA7CivljrPlvosgPiBnZW5yaXRzdVwgOwor5Yqr572wID4gZ291YmF0c3VcIDsKK+W9q+eQoiA+IGNob3V0YWt1XCA7CivljJbniakgPiBiYWtlbW9ub1wgOwor6Jaq5YmyID4gbWFraXdhcmlcIDsKK+W9k+ebtCA+IHRvdWNob2t1XCA7CivliY3oqqwgPiB6ZW5zZXRzdVwgOwor5Ymv6Jm5ID4gZnVrdW5pamlcIDsKK+WMl+eIhiA+IGhva3ViYWt1XCA7Civnn6LntaMgPiB5YWdhc3VyaVwgOwor6I6r6YCGID4gYmFrdWdla2lcIDsKK+W4uOmjnyA+IGpvdXNob2t1XCA7CivpsJDprqsgPiB3YW5pemFtZVwgOwor5rOo5YWlID4gY2h1dW55dXVcIDsKK+aApeWzuyA+IGt5dXVzaHVuXCA7Civps6nog7ggPiBoYXRvbXVuZVwgOwor5YuF562UID4gY2hva3V0b3VcIDsKK+awt+aZtiA+IGh5b3VzaG91XCA7Civlupfos4MgPiB0YW5hY2hpblwgOwor6L6u6auqID4gYmVucGF0c3VcIDsKK+WNl+altSA+IG5hbmt5b2t1XCA7Civlv4PmoLkgPiBrb2tvcm9uZVwgOwor5Yas6bOlID4gZnV5dWRvcmlcIDsKK+egtOeJqSA+IHdhcmVtb25vXCA7CivllK/jgIUgPiB0YWRhdGFkYVwgOwor5Y2U5qWtID4ga3lvdWd5b3VcIDsKK+WHnembhiA+IGd5b3VzaHV1XCA7CivlkITlkIQgPiBzb3Jlem9yZVwgOwor6YCB6YGUID4gc291dGF0c3VcIDsKK+W9q+eJqSA+IGhvcmltb25vXCA7CivlupXosYYgPiBzb2tvbWFtZVwgOwor6bOl6IKMID4gdG9yaWhhZGFcIDsKK+WLvueOiSA+IG1hZ2F0YW1hXCA7Civps6XogokgPiB0b3JpbmlrdVwgOwor5YqH6IetID4gZ2VraXNodXVcIDsKK+avjeeJqSA+IGhhaGFtb25vXCA7CivmgZDlmocgPiBreW91a2FrdVwgOwor5rex44CFID4gZnVrYWJ1a2FcIDsKK+ecn+mNriA+IHNoaW5jaHV1XCA7CivmgKDlsYggPiB0YWlrdXRzdVwgOwor56S+5YWxID4gc2hha3lvdVwgOwor5b+D5p2QID4gc2hpbnphaVwgOwor6L+R6ZaTID4gY2hpa2FtYVwgOwor5Y675bCxID4ga3lvc2h1dVwgOwor5YmN6KGoID4gemVucHlvdVwgOwor5ZCb5YG0ID4ga3Vuc29rdVwgOwor6L+96YCBID4gdHN1aXNvdVwgOwor5Y2g5pyJID4gc2VuJyd5dXVcIDsKK+W/jOaXpSA+IGtpbmljaGlcIDsKK+WNoOabuCA+IHVyYWJ1bWlcIDsKK+W4s+mdoiA+IGNob3VtZW5cIDsKK+ebtOmfsyA+IGNob2t1b25cIDsKK+WKn+e4viA+IGtvdXNla2lcIDsKK+awkealrSA+IG1pbmd5b3VcIDsKK+iWhOWRvSA+IGhha3VtZWlcIDsKK+W4remghiA+IHNla2lqdW5cIDsKK+ebiumzpSA+IGVraWNob3VcIDsKK+ayluWkqSA+IGNodXV0ZW5cIDsKK+W/nOaOpSA+IG91c2V0c3VcIDsKK+eeoOiLpSA+IGRvdWpha3VcIDsKK+W+jOa1gSA+IGtvdXJ5dXVcIDsKK+WPrOWWmiA+IHNob3VrYW5cIDsKK+W8leeulyA+IGhpa2l6YW5cIDsKK+WNnOabuCA+IHVyYWJ1bWlcIDsKK+W4r+mdqSA+IG9iaWthd2FcIDsKK+WHuumHkSA+IHNodWtraW5cIDsKK+WPq+WWmiA+IGt5b3VrYW5cIDsKK+WQieWHtiA+IGtpa2t5b3VcIDsKK+mHjeWcpyA+IGp1dWF0c3VcIDsKK+i/sOmDqCA+IGp1dHN1YnVcIDsKK+m3suW6pyA+IHdhc2hpemFcIDsKK+W8k+eurSA+IGt5dXVzZW5cIDsKK+WIhumAsiA+IGJ1bnNoaW5cIDsKK+iPqeiWqSA+IGJvc2F0c3VcIDsKK+WIhumAnyA+IGZ1bnNva3VcIDsKK+awtOaSgyA+IHN1aWdla2lcIDsKK+ayouWcsCA+IHNhd2FjaGlcIDsKK+WIh+i/qyA+IHNlcHBha3VcIDsKK+WNl+acnSA+IG5hbmNob3VcIDsKK+W/teW/tSA+IG5lbicnbmVuXCA7CivvvK7pn78gPiBlbnVreW91XCA7CivmraPntpogPiBzZWl6b2t1XCA7CivokL3nrKwgPiByYWt1ZGFpXCA7Civph6PlkIggPiB0c3VyaWFpXCA7CivmraPntbkgPiBzaG91a2VuXCA7CivljrPlrrkgPiBnZW4nJ3lvdVwgOwor6YCy6KGMID4gc2hpbmtvdVwgOwor5ZCJ5YWGID4ga2l0Y2hvdVwgOwor5YuV55qEID4gZG91dGVraVwgOwor5ZCM5YOaID4gZG91cnlvdVwgOwor5q2j57WMID4gc2Vpa3lvdVwgOwor5YyX5rqAID4gaG9rdW1hblwgOwor5Y2K5qC8ID4gaGFua2FrdVwgOwor6YCa6KyAID4gdHN1dWJvdVwgOwor5Y+s5ZG9ID4gc2hvdW1laVwgOwor6YCa6KuWID4gdHN1dXJvblwgOwor5bqP6KqsID4gam9zZXRzdVwgOwor5rOl5LitID4gZGVpY2h1dVwgOwor5bqV6KeSID4gdGVpa2FrdVwgOwor5Ymy6IiIID4gd2FyaWtvdVwgOwor5b6z5pybID4gdG9rdWJvdVwgOwor5oCl5aSJID4ga3l1dWhlblwgOwor5Y+j5ZSHID4ga291c2hpblwgOwor6bOl57ayID4gdG9yaWFtaVwgOwor5oGt5YC5ID4ga3lvdWtlblwgOwor5Y+r5Y+3ID4ga3lvdWdvdVwgOwor5YiG6LqrID4gYnVuc2hpblwgOwor5Yi66KGdID4gc2hpc2hvdVwgOwor5bm96LC3ID4geXV1a29rdVwgOwor6YSZ5q2MID4gaGluYXV0YVwgOwor5q6154mpID4gZGFubW9ub1wgOwor5ZCM5L+hID4gZG91c2hpblwgOwor55+z55ukID4gc2VraWJhblwgOwor5q2756WoID4gc2hpaHlvdVwgOwor5Ymy6IW5ID4ga2FwcHVrdVwgOwor5buQ6IiOID4ga3l1dXNoYVwgOwor6YCa6KiIID4gdHN1dWtlaVwgOwor5ZCM5L62ID4gZG91cnlvdVwgOwor5Y+w5YyXID4gdGFpaG9rdVwgOwor5Yuk546LID4ga2luJydub3VcIDsKK+W7j+iIjiA+IGt5dXVzaGFcIDsKK+W/q+W+qSA+IGthaWZ1a3VcIDsKK+awkeaciSA+IG1pbicneXV1XCA7CivmrbTnqIsgPiByZWtpdGVpXCA7CivnoLTmu4UgPiBoYW1ldHN1XCA7CivmgKXlopcgPiBreXV1em91XCA7CivpgJrop6MgPiB0c3V1a2FpXCA7CivliKToqq0gPiBoYW5kb2t1XCA7Civph43llLEgPiBqdXVzaG91XCA7CivlkI3kvZwgPiBtZWlzYWt1XCA7CivpgJroprMgPiB0c3V1a2FuXCA7CivlvJTnpa0gPiBjaG91c2FpXCA7CivlkITlgZwgPiBrYWt1dGVpXCA7CivmganlgJ8gPiBvbnNoYWt1XCA7Civlj7LliocgPiBzaGlnZWtpXCA7CivljJfmtIsgPiBob2t1eW91XCA7CivpgJropqcgPiB0c3V1cmFuXCA7CivpganogIUgPiB0ZWtpc2hhXCA7Civlia/ohY4gPiBmdWt1amluXCA7CivnpL7kuK0gPiBzaGFjaHV1XCA7Civov73otIggPiB0c3Vpem91XCA7CivmgKXloLEgPiBreXV1aG91XCA7CivluKvplbcgPiBzaGljaG91XCA7CivliIDouqsgPiB0b3VzaGluXCA7CivliqDnrYYgPiBrYWhpdHN1XCA7Civljrvlo7AgPiBreW9zaG91XCA7CivlkI3ku6MgPiBteW91ZGFpXCA7CivljKHmraMgPiBreW91c2VpXCA7CivlkIjkvZwgPiBnYXNzYWt1XCA7CivlvpPmpa0gPiBqdXVneW91XCA7CivljYrmmYIgPiBoYW50b2tpXCA7CivokL3no5AgPiByYWt1YmFuXCA7Civljp/lr6kgPiBnZW5zaGluXCA7Civmr5LmtrIgPiBkb2t1ZWtpXCA7CivlvbzmsI8gPiBrYXJlc2hpXCA7CivluJ3pmbUgPiB0ZWlyeW91XCA7CivlvrPmlL8gPiB0b2t1c2VpXCA7CivmsJHml48gPiBtaW56b2t1XCA7CivpgaDogLMgPiB0b29taW1pXCA7CivlkI3kuLsgPiBuYW51c2hpXCA7CivmgKXlnYIgPiBreXV1aGFuXCA7CivliJ3oqLogPiBzaG9zaGluXCA7CivluoPop5IgPiBrb3VrYWt1XCA7CivlkInkuosgPiBraXRzdWppXCA7CivmsI/ml48gPiBzaGl6b2t1XCA7CivlvJTnoLIgPiBjaG91aG91XCA7Civlu7rnrZYgPiBrZW5zYWt1XCA7CivliY3okYkgPiB6ZW4nJ3lvdVwgOwor6YCa6KGMID4gdHN1dWtvdVwgOwor5ZCM5LiAID4gZG91aXRzdVwgOwor5bm+6KixID4gaWt1YmFrdVwgOwor6YeN5Y6aID4gY2hvdWtvdVwgOwor6I236YCBID4gbmlva3VyaVwgOwor5b6p5penID4gZnVra3l1dVwgOwor5rKh5Y+OID4gYm9zc2h1dVwgOwor5bu756ugID4ga2Fpc2hvdVwgOwor5Y2a5o2cID4gaGFrdXNvdVwgOwor55+l55qEID4gY2hpdGVraVwgOwor5ZCE5Lq6ID4ga2FrdWppblwgOwor5q6L55WZID4gemFucnl1dVwgOwor5bmV6LuNID4gYmFrdWd1blwgOwor5bu656uLID4ga29ucnl1dVwgOwor5rKD5ZywID4geW9rdWNoaVwgOwor6YGK6IiIID4geXV1a3lvdVwgOwor5b6p5paHID4gZnVrdWJ1blwgOwor5ZCI5LiAID4gZ291aXRzdVwgOwor5Yil6KGoID4gYmVwcHlvdVwgOwor5Ymv572yID4gZnVrdXNob1wgOwor5Y+X5Y+WID4gdWtldG9yaVwgOwor5b+D5oi/ID4gc2hpbmJvdVwgOwor5Y+k5Yi5ID4ga29zYXRzdVwgOwor5Yq055u4ID4gcm91c2hvdVwgOwor6YOt5riFID4ga2FrdXNlaVwgOwor5Ye66LWwID4gc2h1c3NvdVwgOwor5bm76KaaID4gZ2Vua2FrdVwgOwor5Ymb6IW5ID4gZ291ZnVrdVwgOwor5q2v55+zID4gc2hpc2VraVwgOwor5oGl5LiYID4gY2hpa3l1dVwgOwor6JC955ukID4gcmFrdWJhblwgOwor5YWo6bqmID4gemVuYmFrdVwgOwor5Y2a5omTID4gYmFrdWNoaVwgOwor6L+96KqNID4gdHN1aW5pblwgOwor6YeP5YiRID4gcnlvdWtlaVwgOwor56K65a6aID4ga2FrdXRlaVwgOwor6YeN5Yi7ID4ganV1a29rdVwgOwor56K65a6IID4ga2FrdXNodVwgOwor6L+96KmmID4gdHN1aXNoaVwgOwor5Ye66LOHID4gc2h1c3NoaVwgOwor55yf6LSLID4gc2hpbmdhblwgOwor5rCX5oyBID4ga2ltb2NoaVwgOwor5bmz6KeSID4gaGVpa2FrdVwgOwor5q2j56K6ID4gc2Vpa2FrdVwgOwor6L+96KiOID4gdHN1aXRvdVwgOwor5q+s5qCXID4gaWdhZ3VyaVwgOwor5q2755eFID4gc2hpYnlvdVwgOwor5YWx6bO0ID4ga3lvdW1laVwgOwor5Y+N5Y+OID4gdGFuc2h1dVwgOwor5b+W5bqmID4gc29udGFrdVwgOwor5biv6YeRID4gb2JpZ2FuZVwgOwor6I2Y6YeNID4gc291Y2hvdVwgOwor5b+D5oOFID4gc2hpbmpvdVwgOwor5Yy55pW1ID4gaGl0dGVraVwgOwor6YOo5rS7ID4gYnVrYXRzdVwgOwor6YeO5YWOID4gbm91c2FnaVwgOwor5rC45bm0ID4gbmFnYW5lblwgOwor6YCG6KGMID4gZ3lha2tvdVwgOwor6L+F6YCfID4gamluc29rdVwgOwor5b6M5pu4ID4gYXRvZ2FraVwgOwor5YmN6IaKID4gemVucGFrdVwgOwor6YeR5YG0ID4ga2luZ2F3YVwgOwor5b+D5oCnID4gc2hpbnNlaVwgOwor55+z54mIID4gc2VraWJhblwgOwor6L+w6KqeID4ganV0c3Vnb1wgOwor56Kn5bGxID4gaGVraXphblwgOwor5rKI5ZCfID4gY2hpbmdpblwgOwor6YeN5YK3ID4ganV1c2hvdVwgOwor5YmN6ISzID4gemVuJydub3VcIDsKK+W5tOihqCA+IG5lbnB5b3VcIDsKK+WJjeiEmiA+IG1hZWFzaGlcIDsKK+atjuensCA+IHRhbnNob3VcIDsKK+WHuuismyA+IHNodWtrb3VcIDsKK+WIuuiNiSA+IGlyYWt1c2FcIDsKK+WNg+aMryA+IHNlbmJ1cmlcIDsKK+mAsuiIqiA+IHNoaW5rb3VcIDsKK+W/g+W+lyA+IGtva29yb2VcIDsKK+aBkuS5hSA+IGtvdWt5dXVcIDsKK+WPquS7iiA+IHRhZGFpbWFcIDsKK+WPjeWJhyA+IGhhbnNva3VcIDsKK+WPo+S+myA+IGtvdWt5b3VcIDsKK+W8t+eBqyA+IHRzdXlvYmlcIDsKK+aBi+S7siA+IGtvaW5ha2FcIDsKK+WJjeiCoiA+IG1hZWFzaGlcIDsKK+atu+eQgyA+IHNoaWt5dXVcIDsKK+WKqeeVqiA+IHN1a2ViYW5cIDsKK+W+jOaXpSA+IGdvbmljaGlcIDsKK+mFjeW9uSA+IGhhaXlha3VcIDsKK+aBi+S6uiA+IGtvaWJpdG9cIDsKK+W4gumVtyA+IHNoaWNob3VcIDsKK+aAquWKmyA+IGthaXJpa2lcIDsKK+W+geacjSA+IHNlaWZ1a3VcIDsKK+avjeanmCA+IGthYXNhbWFcIDsKK+ecn+irpiA+IHNoaW50ZWlcIDsKK+W8seeCuSA+IGpha3V0ZW5cIDsKK+mAo+iNmCA+IHJlbmNoYW5cIDsKK+WGhumhlCA+IG1hcnVnYW9cIDsKK+ebsumAsiA+IG1vdXNoaW5cIDsKK+W/oOWtnSA+IGNodXVrb3VcIDsKK+mzpeeesCA+IGNob3VrYW5cIDsKK+W5vOiZqyA+IHlvdWNodXVcIDsKK+iQveeQgyA+IHJha2t5dXVcIDsKK+W3qOmhjSA+IGt5b2dha3VcIDsKK+WJsueulyA+IHdhcml6YW5cIDsKK+WPjeWFsSA+IGhhbmt5b3VcIDsKK+aui+eFpyA+IHphbnNob3VcIDsKK+WMl+adsSA+IGhva3V0b3VcIDsKK+W/g+W6lSA+IHNoaW50ZWlcIDsKK+mAuOiBniA+IGl0c3VidW5cIDsKK+mFkuW4rSA+IHNodXNla2lcIDsKK+efs+eCrSA+IHNla2l0YW5cIDsKK+awt+WxsSA+IGh5b3V6YW5cIDsKK+W8leeOhyA+IGluc290c3VcIDsKK+W7tuedgCA+IGVuY2hha3VcIDsKK+awt+WxiyA+IGtvb3JpeWFcIDsKK+WNseWxgCA+IGtpa3lva3VcIDsKK+WHuOinkiA+IHRva2tha3VcIDsKK+ebrumAgSA+IG1va3Vzb3VcIDsKK+W+s+aApyA+IHRva3VzZWlcIDsKK+ebtOi8uCA+IGNob2t1eXVcIDsKK+egleawtyA+IHNhaWh5b3VcIDsKK+ecn+iogCA+IHNoaW5nb25cIDsKK+W7uueZvSA+IGtlbnBha3VcIDsKK+atpueVpSA+IGJ1cnlha3VcIDsKK+aAp+WIhiA+IHNob3VidW5cIDsKK+WGl+mVtyA+IGpvdWNob3VcIDsKK+eiuuWgsSA+IGtha3Vob3VcIDsKK+W6p+iBtyA+IHphc2hva3VcIDsKK+WPo+S4rSA+IGtvdWNodXVcIDsKK+ecnuiogCA+IHNoaW5nb25cIDsKK+WGt+mFtyA+IHJlaWtva3VcIDsKK+autOauuiA+IG91c2F0c3VcIDsKK+WFpemtgiA+IG55dXVrb25cIDsKK+W/l+WtpiA+IHNoaWdha3VcIDsKK+W+gOaXpSA+IG91aml0c3VcIDsKK+axguWpmiA+IGt5dXVrb25cIDsKK+WPjeWBtCA+IGhhbnNva3VcIDsKK+W7tueZuiA+IGVucGF0c3VcIDsKK+ecn+ilvyA+IG1hbmlzaGlcIDsKK+W8k+eKtiA+IGt5dXVqb3VcIDsKK+mGnOWQjSA+IHNodXVtZWlcIDsKK+awkeW/gyA+IG1pbnNoaW5cIDsKK+aoqemrmCA+IGtlbmRha2FcIDsKK+awkeW+syA+IG1pbnRva3VcIDsKK+WPjeS/lyA+IGhhbnpva3VcIDsKK+axuuWLnSA+IGtlc3Nob3VcIDsKK+WGhemZuCA+IG5haXJpa3VcIDsKK+ebtOi3ryA+IGNob2t1cm9cIDsKK+mBqeeiuiA+IHRla2tha3VcIDsKK+iMtumHnCA+IGNoYWdhbWFcIDsKK+mAmuiIqiA+IHRzdXVrb3VcIDsKK+i+m+mFuCA+IHNoaW5zYW5cIDsKK+W4jOmHiCA+IGtpc2hha3VcIDsKK+WHtuihjCA+IGt5b3Vrb3VcIDsKK+avjuacnSA+IG1haWNob3VcIDsKK+eZvemvqCA+IGhha3VnZWlcIDsKK+WNiuW8kyA+IGhhbmt5dXVcIDsKK+WIneiNtyA+IGhhdHN1bmlcIDsKK+WMl+aUryA+IGhva3VzaGlcIDsKK+WGhemWsiA+IG5haWV0c3VcIDsKK+WGhemWoyA+IG5haWtha3VcIDsKK+mFjeWxniA+IGhhaXpva3VcIDsKK+iUteWMvyA+IHpvdXRva3VcIDsKK+W4q+i1sCA+IHNoaXdhc3VcIDsKK+ayiOWAqyA+IGNoaW5yaW5cIDsKK+W9sOaYjiA+IHNob3VtZWlcIDsKK+mFkuWuoiA+IHNodWtha3VcIDsKK+avlOaXpSA+IGhpbmljaGlcIDsKK+WOn+WRiiA+IGdlbmtva3VcIDsKK+eZvemtmiA+IHNoaXJhdW9cIDsKK+WNiuW5tCA+IGhhbicnbmVuXCA7CivliY3ntI0gPiB6ZW4nJ25vdVwgOwor6YGL562GID4gdW5waXRzdVwgOwor6be55YygID4gdGFrYWpvdVwgOwor5q2054S2ID4gcmVraXplblwgOwor5YWs6aCYID4ga291cnlvdVwgOwor6L+R6KaqID4ga2luc2hpblwgOwor5oCl5L2/ID4ga3l1dXNoaVwgOwor5Ym955uXID4gaHlvdXRvdVwgOwor5bm86IulID4geW91amFrdVwgOwor5YWo6aGNID4gemVuZ2FrdVwgOwor5qiZ6auYID4gaHlvdWtvdVwgOwor5Y2z5aOyID4gc29rdWJhaVwgOwor5Y2D5bqmID4gY2hpdGFiaVwgOwor5by35rCXID4gdHN1eW9raVwgOwor5bqB6IiOID4gY2hvdXNoYVwgOwor5YqH55WMID4gZ2VraWthaVwgOwor5Y2D5bm0ID4gY2hpdG9zZVwgOwor5YqH55SaID4gZ2VraWppblwgOwor5qiq6aGUID4geW9rb2dhb1wgOwor5Yun5qWtID4ga2FuZ3lvdVwgOwor5Yed6KaWID4gZ3lvdXNoaVwgOwor5Yi657mNID4gc2hpc2h1dVwgOwor556g55uuID4gZG91bW9rdVwgOwor5YaN6YyyID4gc2Fpcm9rdVwgOwor55yf6JmrID4gbWFtdXNoaVwgOwor6bOl542jID4gY2hvdWp1dVwgOwor5b655a61ID4gdGVzc2hvdVwgOwor5Y2R5bGIID4gaGlrdXRzdVwgOwor5Yqg54axID4ga2FuZXRzdVwgOwor5YaN6YuzID4gc2FpY2h1dVwgOwor5rC35aGKID4gaHlvdWthaVwgOwor5Y2S5a+/ID4gc290c3VqdVwgOwor5by35qyyID4gZ291eW9rdVwgOwor5Y2U5a6aID4ga3lvdXRlaVwgOwor5YW16ZW3ID4gaGVpY2hvdVwgOwor6YWM5ammID4gc2hha3VmdVwgOwor56Cy5pKDID4gaG91Z2VraVwgOwor5rCX5a+GID4ga2ltaXRzdVwgOwor6YG455CDID4gc2Vua3l1dVwgOwor5Y6f5YmHID4gZ2Vuc29rdVwgOwor5YWx6ZeYID4ga3lvdXRvdVwgOwor55u06KurID4gY2hva2thblwgOwor55m66aasID4gaGF0c3ViYVwgOwor5Yi657WhID4gc2hpcmFrdVwgOwor5YWo6ZuGID4gemVuc2h1dVwgOwor5Y2T5a2QID4gdGVpYnVydVwgOwor55u06KuMID4gY2hva2thblwgOwor55u06KuHID4gamlraWRhblwgOwor5YWl6Zu7ID4gbnl1dWRlblwgOwor5YmN56ugID4gemVuc2hvdVwgOwor55+z5q61ID4gaXNoaWRhblwgOwor5q2m54OIID4gYnVyZXRzdVwgOwor55u06KmxID4gY2hva3V3YVwgOwor56OB5YqbID4gamlyeW9rdVwgOwor5rC05Z6iID4gbWl6dWFrYVwgOwor5bmz6Ie8ID4gaGlyYXVzdVwgOwor5b255omAID4geWFrdXNob1wgOwor6YGp55SoID4gdGVraXlvdVwgOwor6YCj57aaID4gcmVuem9rdVwgOwor5by35qipID4ga3lvdWtlblwgOwor5Y215ZqiID4gcmFuJydub3VcIDsKK+awj+WvuiA+IHVqaWRlcmFcIDsKK+WFpemaiiA+IG55dXV0YWlcIDsKK+W/g+WkliA+IHNoaW5nYWlcIDsKK+WNiuWutSA+IGhhbnNob3VcIDsKK+mAo+e1oSA+IHJlbnJha3VcIDsKK+WItue0hCA+IHNlaXlha3VcIDsKK+eekeebriA+IG1laW1va3VcIDsKK+WKm+eCuSA+IHJpa2l0ZW5cIDsKK+awtOWcpyA+IHN1aWF0c3VcIDsKK+W5u+iBtCA+IGdlbmNob3VcIDsKK+efr+atoyA+IGt5b3VzZWlcIDsKK+aomemhjCA+IGh5b3VkYWlcIDsKK+awt+WaoiA+IGh5b3Vub3VcIDsKK+W/teWKmyA+IG5lbnJpa2lcIDsKK+ebtOimsyA+IGNob2trYW5cIDsKK+WNmuWllSA+IGJha3VjaGlcIDsKK+ebtOimpyA+IGppa2lyYW5cIDsKK+WNg+WwiyA+IGNoaWhpcm9cIDsKK+WFqOmVtyA+IHplbmNob3VcIDsKK+WNmuWkpyA+IGhha3VkYWlcIDsKK+iQvea2mSA+IHJha3VydWlcIDsKK+WGhemHkSA+IHVjaGlraW5cIDsKK+eZu+mggiA+IHRvdWNob3VcIDsKK+ebl+iziiA+IHRvdXpva3VcIDsKK+WNmuWjqyA+IGhha3VzaGlcIDsKK+eah+mZtSA+IGtvdXJ5b3VcIDsKK+eZuumfsyA+IGhhdHN1b25cIDsKK+WFpemWgCA+IG55dXVtb25cIDsKK+avkuaJiyA+IGRva3VzaHVcIDsKK+efs+apiyA+IHNla2t5b3VcIDsKK+ecn+iPjCA+IHNoaW5raW5cIDsKK+eZvemdoiA+IGhha3VtZW5cIDsKK+W+ueWknCA+IHRldHN1eWFcIDsKK+efs+anqCA+IHNla2tha3VcIDsKK+W/q+WLnSA+IGthaXNob3VcIDsKK+WIh+iFuSA+IHNlcHB1a3VcIDsKK+W/oOWQmyA+IGNodXVrdW5cIDsKK+iUteS6uiA+IGt1cm91ZG9cIDsKK+WHtuiNkiA+IGt5b3Vrb3VcIDsKK+W5tOiAgSA+IHRvc2hpb2lcIDsKK+iLlOmhniA+IGtva2VydWlcIDsKK+eZuumcsiA+IGhhdHN1cm9cIDsKK+WFh+mhniA+IGt5b3VydWlcIDsKK+mAlOe1tiA+IHRvemV0c3VcIDsKK+ebtOihjCA+IGNob2trb3VcIDsKK+WKm+a8lSA+IHJpa2lzb3VcIDsKK+WNoOWcsCA+IHNoaW1lamlcIDsKK+W/g+WcsCA+IGtva29jaGlcIDsKK+WFiOmggyA+IHNlbmtvcm9cIDsKK+atu+avkiA+IHNoaWRva3VcIDsKK+W6nOeriyA+IGZ1cml0c3VcIDsKK+W4q+ihqCA+IHNoaWh5b3VcIDsKK+WOn+S9nCA+IGdlbnNha3VcIDsKK+WNsOWTsiA+IGludGV0c3VcIDsKK+WGt+iplSA+IHJlaWh5b3VcIDsKK+W/g+WboCA+IHNoaW4nJ2luXCA7Civlh7roiKogPiBzaHVra291XCA7CivpgJ/nrpcgPiBzb2t1c2FuXCA7CivljoTliY0gPiB5YWt1bWFlXCA7Civmrovmpa0gPiB6YW5neW91XCA7CivojZLooYwgPiBhcmFneW91XCA7CivlhoXpgJogPiBuYWl0c3V1XCA7Civli53mma8gPiBzaG91a2VpXCA7Civnnq3nhLYgPiByeW91emVuXCA7CivlvpPlsZ4gPiBqdXV6b2t1XCA7CivlvKbmpb0gPiBnZW5nYWt1XCA7CivlioPnhLYgPiBrYWt1emVuXCA7CivljbPlkJ8gPiBzb2t1Z2luXCA7CivljYPlp6sgPiBzZW5oaW1lXCA7Civlv6Dli6QgPiBjaHV1a2luXCA7Civlv6Dli4cgPiBjaHV1eXV1XCA7CivlhrfoppogPiByZWlrYWt1XCA7CivpgJrnrpcgPiB0c3V1c2FuXCA7CivpgIbnuIEgPiBneWFrdWVuXCA7CivliJ3ntJogPiBzaG9reXV1XCA7Civmr5LmgKcgPiBkb2t1c2VpXCA7Civlt6HpgYogPiBqdW4nJ3l1dVwgOwor5b6T5a65ID4gc2hvdXlvdVwgOwor5Y2X5Zu9ID4gbmFuZ29rdVwgOwor5by35pq0ID4ga3lvdWJvdVwgOwor5bmV6IiOID4gYmFrdXNoYVwgOwor5rC35Y6fID4gaHlvdWdlblwgOwor5bmz57mUID4gaGlyYW9yaVwgOwor5b+c5YqbID4gb3VyeW9rdVwgOwor5Yud5pWXID4gc2hvdWhhaVwgOwor5rGC5YiRID4ga3l1dWtlaVwgOwor5be76LKdID4gbWFraWdhaVwgOwor5byP5qyhID4gc2hpa2lqaVwgOwor55+z5p2/ID4gc2VraWJhblwgOwor5YaZ6LGhID4gc2hhc2hvdVwgOwor5q6L5p+xID4gemFuY2h1dVwgOwor55+z5p2QID4gc2VraXphaVwgOwor5b6M5a6uID4ga291a3l1dVwgOwor6YKm5qW9ID4gaG91Z2FrdVwgOwor5Ymj546JID4ga2VuZGFtYVwgOwor5YyX5ba6ID4gaG9rdXJlaVwgOwor5bm057WmID4gbmVua3l1dVwgOwor5YWo6YePID4gemVucnlvdVwgOwor5b6M5a2mID4ga291Z2FrdVwgOwor6YKE5rWBID4ga2Fucnl1dVwgOwor5Y2z5Yi7ID4gc29ra29rdVwgOwor5Ye26IGeID4ga3lvdWJ1blwgOwor5rCR5Zu9ID4gbWlua29rdVwgOwor5YWl6YeRID4gbnl1dWtpblwgOwor5Ymb55CDID4gZ291a3l1dVwgOwor5Y2K5Zu9ID4gaGFuZ29rdVwgOwor5rC45YilID4gZWliZXRzdVwgOwor6YW35L2/ID4ga29rdXNoaVwgOwor5b+r5L2cID4ga2Fpc2FrdVwgOwor5Y2w5Yi3ID4gaW5zYXRzdVwgOwor6L+957SNID4gdHN1aW5vdVwgOwor5rC35YiDID4gaHlvdWppblwgOwor5YWt6YGTID4gcm9rdWRvdVwgOwor5YyX5bK4ID4gaG9rdWdhblwgOwor5YmN55SfID4gemVuc2hvdVwgOwor6YCB57GNID4gc291c2VraVwgOwor5Yil56ewID4gYmVzc2hvdVwgOwor5bqt55WqID4gbml3YWJhblwgOwor6L6y6JasID4gbm91eWFrdVwgOwor6L+R6IejID4ga2luc2hpblwgOwor6YGK54yfID4geXV1cnlvdVwgOwor55m76YyyID4gdG91cm9rdVwgOwor5Y2g5Y2cID4gc2VuYm9rdVwgOwor6JGJ5pyIID4gaGFkenVraVwgOwor5beo6LOKID4ga3lvem9rdVwgOwor6I+v54etID4ga2FzaG9rdVwgOwor5b2T5oORID4gdG91d2FrdVwgOwor5b2r5belID4gY2hvdWtvdVwgOwor5YiG57SNID4gYnVuJydub3VcIDsKK+WIneepgiA+IGhhdHN1aG9cIDsKK+W/heWLnSA+IGhpc3Nob3VcIDsKK+eZvemKkSA+IGhha3VzZW5cIDsKK+WFqOmAnyA+IHplbnNva3VcIDsKK+WFpemBuCA+IG55dXVzZW5cIDsKK+WFqOmAmiA+IHplbnRzdXVcIDsKK+eZvemKhSA+IGhha3Vkb3VcIDsKK+eZvemKgCA+IGhha3VnaW5cIDsKK+WFpemBkyA+IG55dXVkb3VcIDsKK+mCquabsiA+IGpha3lva3VcIDsKK+WNnOWNoCA+IGJva3VzZW5cIDsKK+W3peizgyA+IGtvdWNoaW5cIDsKK+awt+WDjyA+IGh5b3V6b3VcIDsKK+mBiueJpyA+IHl1dWJva3VcIDsKK+mAseeVqiA+IHNodXViYW5cIDsKK+W/g+WKtCA+IHNoaW5yb3VcIDsKK+WIneeniyA+IHNob3NodXVcIDsKK+W5vueoiyA+IGlrdWhvZG9cIDsKK+aui+aVtSA+IHphbnRla2lcIDsKK+mAmueglCA+IHRzdXVrZW5cIDsKK+WNlOWQjCA+IGt5b3Vkb3VcIDsKK+W5s+etiSA+IGJ5b3Vkb3VcIDsKK+mBjueGsSA+IGthbmV0c3VcIDsKK+WNs+WApCA+IHNva3VjaGlcIDsKK+mAmuefpSA+IHRzdXVjaGlcIDsKK+eZgumkiiA+IHJ5b3V5b3VcIDsKK+W5tOerryA+IHRvc2hpaGFcIDsKK+W6reeQgyA+IHRlaWt5dXVcIDsKK+auieaVmSA+IGp1bmt5b3VcIDsKK+atjOayoiA+IHV0YXphd2FcIDsKK+WLgeaVtSA+IGtlaXRla2lcIDsKK+WGjeiqvyA+IHNhaWNob3VcIDsKK+WHneiEgiA+IGd5b3VzaGlcIDsKK+WGjeiqrSA+IHNhaWRva3VcIDsKK+axguS6uiA+IGt5dXVqaW5cIDsKK+WKn+alrSA+IGtvdWd5b3VcIDsKK+iJsum7kiA+IGlyb2d1cm9cIDsKK+WNl+WMlyA+IG5hbmJva3VcIDsKK+WNmuWKtCA+IGJha3Vyb3VcIDsKK+egtOWxgCA+IGhha3lva3VcIDsKK+WNmOWLnSA+IHRhbnNob3VcIDsKK+ato+alrSA+IHNlaWd5b3VcIDsKK+W4r+iKryA+IG9iaXNoaW5cIDsKK+WNiuWRqCA+IGhhbnNodXVcIDsKK+mBoea6kCA+IHNha3VnZW5cIDsKK+WFqOi6qyA+IHplbnNoaW5cIDsKK+avkuWusyA+IGRva3VnYWlcIDsKK+WGheisgSA+IG5haWV0c3VcIDsKK+WGheirviA+IG5haWRha3VcIDsKK+W5uOemjyA+IGtvdWZ1a3VcIDsKK+WLpOaBqiA+IGtpbmtha3VcIDsKK+WHuueyviA+IHNodXNzZWlcIDsKK+W+qeWRvSA+IGZ1a3VtZWlcIDsKK+iLpemAoCA+IHdha2F6b3VcIDsKK+W6mueUsyA+IGtvdXNoaW5cIDsKK+ebtOiIqiA+IGNob2trb3VcIDsKK+W6l+eVqiA+IG1pc2ViYW5cIDsKK+mtjemtjiA+IG1vdXJ5b3VcIDsKK+WFiemHjyA+IGtvdXJ5b3VcIDsKK+W7k+a4hSA+IGtha3VzZWlcIDsKK+mBqeazlSA+IHRla2lob3VcIDsKK+WEqumVtyA+IHl1dWNob3VcIDsKK+W/meS4rSA+IGJvdWNodXVcIDsKK+WNkeWKoyA+IGhpcmV0c3VcIDsKK+WIqeeZuiA+IHJpaGF0c3VcIDsKK+W+qeWPtyA+IGZ1a3Vnb3VcIDsKK+W/g+WDjyA+IHNoaW56b3VcIDsKK+mAo+eUqCA+IHJlbicneW91XCA7CivmsJflipsgPiBraXJ5b2t1XCA7CivmsLfkurogPiBoeW91amluXCA7CivmrrXlubMgPiBkYW5iaXJhXCA7CivlhbHosqkgPiBreW91aGFuXCA7CivlhoXoqLwgPiBuYWlzaG91XCA7CivlhoXoqLogPiBuYWlzaGluXCA7CivliYrniYcgPiBzYWt1aGVuXCA7CivmraPmoLwgPiBzZWlrYWt1XCA7CivlvLfmhb4gPiBnb3V5b2t1XCA7Civlvqnljp8gPiBmdWt1Z2VuXCA7CivnmbrpgLIgPiBoYXNzaGluXCA7CivlvJTmlocgPiBjaG91YnVuXCA7CivljJflpKkgPiBob2t1dGVuXCA7CivljJflpKcgPiBob2t1ZGFpXCA7CivlhYPph5EgPiBtb3Rva2luXCA7CivlhoXop5IgPiBuYWlrYWt1XCA7Civoi6XovKkgPiBqYWt1aGFpXCA7Civnm4romasgPiBla2ljaHV1XCA7CivlvrPliKkgPiB0b2trdXJpXCA7Civli4HmjbcgPiBrZWlzaG91XCA7Civlv4Xkv64gPiBoaXNzaHV1XCA7Civnm7LohbggPiBtb3VjaG91XCA7CivlvrPliIYgPiB0b2t1YnVuXCA7CivokrjlmaggPiBtdXNoaWtpXCA7Civlvq7lipsgPiBiaXJ5b2t1XCA7CivljL/lkI0gPiB0b2t1bWVpXCA7CivlurXngrkgPiBpb3JpdGVuXCA7Civlu7bmo5IgPiBub2JlYm91XCA7CivluLjnv5IgPiBqb3VzaHV1XCA7CivliLbnkIMgPiBzZWlreXV1XCA7CivliIbnp5IgPiBmdW5ieW91XCA7CivmrZPmpb0gPiBrYW5yYWt1XCA7CivmsLTkuK0gPiBzdWljaHV1XCA7Civpg6jlsYAgPiBidWt5b2t1XCA7Civlh43ogokgPiB0b3VuaWt1XCA7CivpgJrnlKggPiB0c3V1eW91XCA7CivojYnoibIgPiBrdXNhaXJvXCA7CivljJflooMgPiBob2treW91XCA7CivprYLprYQgPiBrb25wYWt1XCA7CivlvrTlhbUgPiBjaG91aGVpXCA7CivphY3kv6EgPiBoYWlzaGluXCA7CivpgJfnlZkgPiB0b3VyeXV1XCA7CivpganmraMgPiB0ZWtpc2VpXCA7CivmraPmnJ0gPiBzZWljaG91XCA7CivmraPmnJQgPiBzZWlzYWt1XCA7CivlhajosbkgPiB6ZW5weW91XCA7Civlh4TohZUgPiBzdWdvdWRlXCA7CivmraPmnI0gPiBzZWlmdWt1XCA7CivljZTlg40gPiBreW91ZG91XCA7CivlhYnpgJ8gPiBrb3Vzb2t1XCA7Civli5jlv40gPiBrYW4nJ25pblwgOwor5YWI6YCyID4gc2Vuc2hpblwgOwor5YWI6YCxID4gc2Vuc2h1dVwgOwor5YWl6LKiID4gbnl1dWtvdVwgOwor6YWS5LujID4gc2FrYWRhaVwgOwor55m96LqrID4gc2hpcm9taVwgOwor5ber6KGTID4gZnVqdXRzdVwgOwor6YCf55CDID4gc29ra3l1dVwgOwor6L+U57SNID4gaGVuJydub3VcIDsKK+W+qeWIuyA+IGZ1a2tva3VcIDsKK+WFseisgCA+IGt5b3Vib3VcIDsKK+i7vemchyA+IGtlaXNoaW5cIDsKK+iNkuiCnSA+IGFyYWdpbW9cIDsKK+WHuuepgiA+IHNodXNzdWlcIDsKK+W8leaPmyA+IGhpa2lrYWVcIDsKK+i8u+i8syA+IGZ1a3Vzb3VcIDsKK+assuaxgiA+IHlva2t5dXVcIDsKK+W7tuadvyA+IG5vYmVpdGFcIDsKK+ecn+epuiA+IHNoaW5rdXVcIDsKK+ecvOebriA+IGdhbm1va3VcIDsKK+W8leaOpSA+IGluc2V0c3VcIDsKK+iJsumtlCA+IHNoaWtpbWFcIDsKK+W/heS4rSA+IGhpdGNodXVcIDsKK+i8qumDrSA+IHJpbmtha3VcIDsKK+WNmOS9nCA+IHRhbnNha3VcIDsKK+ecgee3miA+IHNob3VzZW5cIDsKK+W+tOWAmSA+IGNob3Vrb3VcIDsKK+W8vuW5lSA+IGRhbm1ha3VcIDsKK+W5tOebiiA+IG5lbicnZWtpXCA7CivlvqnlhZogPiBmdWt1dG91XCA7CivlhYnou7ggPiBrb3VqaWt1XCA7Civlu7/ml6UgPiBoYXRzdWthXCA7CivlvLHlv5cgPiBqYWt1c2hpXCA7CivljJflm70gPiBob2trb2t1XCA7CivlvLflvJMgPiBnb3VreXV1XCA7CivlvqnlhYMgPiBmdWt1Z2VuXCA7CivlvLflvIEgPiBreW91YmVuXCA7CivpgoTmmqYgPiBrYW5yZWtpXCA7CivlirHmjK8gPiByZWlzaGluXCA7Civovp7oibIgPiBqaXNob2t1XCA7Civlh7rnpL4gPiBzaHVzc2hhXCA7CivojYnogqUgPiBrdXNhZ29lXCA7CivliKnnjocgPiByaXJpdHN1XCA7CivnmbrotrMgPiBob3Nzb2t1XCA7CivlhazoqZUgPiBrb3VoeW91XCA7CivmraPmlZkgPiBzZWlreW91XCA7CivlhazoqLwgPiBrb3VzaG91XCA7CivljYHlha0gPiBqdXVyb2t1XCA7CivliKXnj40gPiBiZXRjaGluXCA7CivljZTkvJogPiBreW91a2FpXCA7CivlhYjoubQgPiBzZW5zaHV1XCA7CivljLrliKUgPiBrdWJldHN1XCA7CivljYPlhIQgPiBzZW4nJ29rdVwgOwor5rCX5L2NID4ga2lndXJhaVwgOwor5byx5byfID4gamFrdXRlaVwgOwor5YWx6KWfID4gdG9tb2VyaVwgOwor55y855eFID4gZ2FuYnlvdVwgOwor5YWt6KeSID4gcm9ra2FrdVwgOwor5Y2S5LyNID4gc290c3Vnb1wgOwor5rCR5L+XID4gbWluem9rdVwgOwor5q6v5a6uID4gaGlua3l1dVwgOwor56CU5a2mID4ga2VuZ2FrdVwgOwor5q6L5b+1ID4gemFuJyduZW5cIDsKK+iNt+epjSA+IG5pZHp1bWlcIDsKK+WNl+S4rSA+IG5hbmNodXVcIDsKK+WGt+iCiSA+IHJlaW5pa3VcIDsKK+iQveaJiyA+IHJha3VzaHVcIDsKK+ebuOe2miA+IHNvdXpva3VcIDsKK+aui+W/jSA+IHphbicnbmluXCA7CivmsJfku5ggPiBraWR6dWtlXCA7CivlhaXoqaYgPiBueXV1c2hpXCA7Civmrovlv4MgPiB6YW5zaGluXCA7CivlibXmpa0gPiBzb3VneW91XCA7Civlh6HnrZYgPiBib25zYWt1XCA7Civli4nlvLcgPiBiZW5reW91XCA7CivlhbHoo48gPiB0b21vdXJhXCA7CivlvozljoQgPiBhdG95YWt1XCA7CivokL3miJAgPiByYWt1c2VpXCA7Civlhajop5IgPiB6ZW5rYWt1XCA7CivlvLHlubQgPiBqYWt1bmVuXCA7Civli6flraYgPiBrYW5nYWt1XCA7CivljYrkvZwgPiBoYW5zYWt1XCA7CivlvpfliIYgPiB0b2t1YnVuXCA7CivovInpjLIgPiBzYWlyb2t1XCA7CivlurbmtYEgPiBzaG9yeXV1XCA7CivmrbTmiKYgPiByZWtpc2VuXCA7Civlt53onaYgPiBrYXdhZWJpXCA7CivmrYzmm7IgPiBrYWt5b2t1XCA7CivlvoXlkIggPiBtYWNoaWFpXCA7CivluLDntZAgPiBraWtldHN1XCA7Civnn7Pluq0gPiBzZWtpdGVpXCA7CivljZLkuK0gPiBzb3RjaHV1XCA7CivljZPkuIogPiB0YWt1am91XCA7CivliYrmuJsgPiBzYWt1Z2VuXCA7CivlhYXotrMgPiBqdXVzb2t1XCA7CivljYrkvJEgPiBoYW5reXV1XCA7CivojLbohbkgPiBjaGFiYXJhXCA7CivlhY3osqwgPiBtZW5zZWtpXCA7CivljLnlhJQgPiBoaXRjaHV1XCA7CivpganmoLwgPiB0ZWtrYWt1XCA7CivojZLnuIQgPiBhcmFuYXdhXCA7Civlg7vpmoUgPiBoZWtpZ3V1XCA7CivliofmmpEgPiBnZWtpc2hvXCA7Civnm7TntYwgPiBjaG9ra2VpXCA7Civnm67nuIEgPiBtYWJ1Y2hpXCA7Civlg7vpmawgPiBoZWtpc3V1XCA7CivpgY3mrbQgPiBoZW5yZWtpXCA7CivluK/ntJkgPiBvYmlnYW1pXCA7CivluoPni60gPiBrb3VreW91XCA7CivliLrmv4AgPiBzaGlnZWtpXCA7CivlubLnk6IgPiBrYW5weW91XCA7CivphJnliqMgPiBoaXJldHN1XCA7Civovp7ogbcgPiBqaXNob2t1XCA7CivlhJ/ph5EgPiBzaG91a2luXCA7CivmsI/kurogPiB1amloaXRvXCA7Civnm7Tns7sgPiBjaG9ra2VpXCA7Civnm5fogbQgPiB0b3VjaG91XCA7CivlhazooaggPiBrb3VoeW91XCA7Civnn6XlvrMgPiBjaGl0b2t1XCA7CivpgYrmrbQgPiB5dXVyZWtpXCA7CivlhazooYYgPiBrb3VzaHV1XCA7CivlhYjosqAgPiBzZW5tYWtlXCA7Civnn6XlvpcgPiBjaGl0b2t1XCA7CivnnLznkIMgPiBnYW5reXV1XCA7CivluL3nq6AgPiBib3VzaG91XCA7Civov5Hnp7AgPiBraW5zaG91XCA7Civlvqnku4cgPiBmdWtreXV1XCA7CivnmbrorbAgPiBoYXRzdWdpXCA7Civlh7rnm6MgPiBzaHVra2FuXCA7CivpgIHnkIMgPiBzb3VreXV1XCA7Civoia/poqggPiByeW91ZnV1XCA7CivliIbnlZkgPiBidW5yeXV1XCA7Civli5jlr6kgPiBrYW5zaGluXCA7CivpganmnZAgPiB0ZWtpemFpXCA7CivpgoDmkoMgPiB5b3VnZWtpXCA7CivpgKPmv4EgPiByZW5kYWt1XCA7Civmrb/lvowgPiBib3RzdWdvXCA7CivnnJ/nm7ggPiBzaGluc291XCA7CivnnJ/nm7QgPiBtYXNzdWd1XCA7CivlvbnlkI0gPiB5YWt1bWVpXCA7CivlvpPlg5UgPiBqdXVib2t1XCA7CivpgZPmpb0gPiBkb3VyYWt1XCA7Civnnqzmlq0gPiBzaHVuZGFuXCA7Civnmbroqp4gPiBoYXRzdWdvXCA7Civli6flpaggPiBrYW5zaG91XCA7CivlipvmipUgPiByaWtpdG91XCA7CivliJHnjYQgPiBrZWlnb2t1XCA7Civnmb7oqIggPiBoeWFra2VpXCA7CivlhJ/pgoQgPiBzaG91a2FuXCA7CivljYPkuKEgPiBzZW5yeW91XCA7CivlvozlhYggPiBhdG9zYWtpXCA7CivljYHkuZ0gPiBqdXVreXV1XCA7CivnmbroqbEgPiBoYXRzdXdhXCA7CivovIPph48gPiBrb3VyeW91XCA7CivljJfljYogPiBob2t1aGFuXCA7Civlu4Pmpa0gPiBoYWlneW91XCA7CivnmbroqLsgPiBoYXRjaHV1XCA7CivljYHkuKEgPiBqdXVyeW91XCA7CivlipvmiKYgPiByaWtpc2VuXCA7CivljYHkuIMgPiBqdXVuYW5hXCA7CivljYHkuIAgPiBqdXVpY2hpXCA7CivlvJXlvZMgPiBoaWtpYXRlXCA7CivpgLjmsJEgPiBpdHN1bWluXCA7CivlvovlhIAgPiByaWNoaWdpXCA7CivliY3mrbQgPiB6ZW5yZWtpXCA7Civlia/mnKwgPiBmdWt1aG9uXCA7CivoibHpm6MgPiBrYW4nJ25hblwgOwor5byP5b6uID4gc2hpa2liaVwgOwor6YGK5qW9ID4geXV1cmFrdVwgOwor6Lu96YePID4ga2VpcnlvdVwgOwor6Lu96YeNID4ga2VpY2hvdVwgOwor55uu566XID4gbW9rdXNhblwgOwor5Ymv5pu4ID4gZnVrdXNob1wgOwor5Ye655SjID4gc2h1c3NhblwgOwor5Ye655SfID4gc2h1c3NlaVwgOwor55m66KaaID4gaGFra2FrdVwgOwor6YCy5rC0ID4gc2hpbnN1aVwgOwor5qyy5pybID4geW9rdWJvdVwgOwor5YuH5bCGID4geXV1c2hvdVwgOwor55uf57SEID4gbWVpeWFrdVwgOwor55u456ewID4gc291c2hvdVwgOwor5b285YemID4ga2FzaGlrb1wgOwor55+u5bCPID4gd2Fpc2hvdVwgOwor552r5q+bID4gbWF0c3VnZVwgOwor6YK45a6FID4gdGVpdGFrdVwgOwor55+t5bCPID4gdGFuc2hvdVwgOwor55uu56uvID4gbWVoYXNoaVwgOwor5YuJ5a2mID4gYmVuZ2FrdVwgOwor6a+o6IKJID4gZ2VpbmlrdVwgOwor6IyJ6I6JID4gbWF0c3VyaVwgOwor5YSq6LaKID4geXV1ZXRzdVwgOwor55m+6KGMID4gaHlha2tvdVwgOwor6L+R55y8ID4gY2hpa2FtZVwgOwor6I+M5q+SID4ga2luZG9rdVwgOwor5q205bm0ID4gcmVraW5lblwgOwor5byT5birID4geXVtaXNoaVwgOwor5YWJ6KaaID4ga291a2FrdVwgOwor5YWI6KaaID4gc2Vua2FrdVwgOwor5b6M5L2cID4gYXRvc2FrdVwgOwor5beo6Ii2ID4ga3lvaGFrdVwgOwor5bqV5rWBID4gdGVpcnl1dVwgOwor6L+R55uuID4gY2hpa2FtZVwgOwor55m66KGoID4gaGFwcHlvdVwgOwor6YG45oqeID4gc2VudGFrdVwgOwor5qyg5qC8ID4ga2Vra2FrdVwgOwor5YWx6JGXID4ga3lvdWNob1wgOwor5bqD5rygID4ga291YmFrdVwgOwor6I2J56ybID4ga3VzYWJ1ZVwgOwor5Yud5aCxID4gc2hvdWhvdVwgOwor5Yid5r2uID4gc2hvY2hvdVwgOwor5Yqp5bmzID4gc3VrZWJlaVwgOwor5by35aSnID4ga3lvdWRhaVwgOwor6Lyq6KqtID4gcmluZG9rdVwgOwor55+l5bCGID4gY2hpc2hvdVwgOwor5YaF6IacID4gbmFpbWFrdVwgOwor5by35aOuID4ga3lvdXNvdVwgOwor5b255YOnID4geWFrdXNvdVwgOwor5YqH5oimID4gZ2VraXNlblwgOwor5q+S5YiDID4gZG9rdWppblwgOwor55m96J2LID4gaGFrdXJvdVwgOwor5biG57axID4gaG9kenVuYVwgOwor6LuN6ZW3ID4gZ3VuY2hvdVwgOwor5Yqb5b25ID4gcmlraWVraVwgOwor5Ya356yRID4gcmVpc2hvdVwgOwor6Iy257KlID4gY2hhZ2F5dVwgOwor5bu75b+DID4ga2Fpc2hpblwgOwor55yL55eFID4ga2FuYnlvdVwgOwor55uu56S8ID4gbW9rdXJlaVwgOwor6Ly46KGAID4geXVrZXRzdVwgOwor5Yud5ZywID4gc2hvdWNoaVwgOwor5Yid5rmvID4gaGF0c3V5dVwgOwor5YWH6KGMID4ga3lvdWtvdVwgOwor5Ye254ybID4ga3lvdW1vdVwgOwor6Imm6ZW3ID4ga2FuY2hvdVwgOwor5YeN55+zID4gdG91c2VraVwgOwor5Yi25qyyID4gc2VpeW9rdVwgOwor5b2i5YudID4ga2Vpc2hvdVwgOwor5Ye654mIID4gc2h1cHBhblwgOwor5byf5auBID4gb3RveW9tZVwgOwor5Ye254q2ID4ga3lvdWpvdVwgOwor5qi66ImyID4ga2FiYWlyb1wgOwor6YCA5r2uID4gdGFpY2hvdVwgOwor56CC5ZywID4gc3VuYWNoaVwgOwor6YGT5pWZID4gZG91a3lvdVwgOwor6YGO5pelID4ga2FqaXRzdVwgOwor6YO35YWaID4ga3lvdXRvdVwgOwor6Lui6YedID4gdGVuc2hpblwgOwor6Iy2566xID4gY2hhYmFrb1wgOwor5biw552AID4ga2ljaGFrdVwgOwor6YGp5omAID4gdGVraXNob1wgOwor5YO76YKRID4gaGVraXl1dVwgOwor5q2O5oGvID4gdGFuc29rdVwgOwor6Iub6JmQID4ga2FneWFrdVwgOwor5YaZ57WMID4gc2hha3lvdVwgOwor5q2T5b+DID4ga2Fuc2hpblwgOwor5b2r5YOPID4gY2hvdXpvdVwgOwor55+z5aGUID4gc2VraXRvdVwgOwor6L+U55CDID4gaGVua3l1dVwgOwor55+z5aGAID4gaXNoaWJlaVwgOwor5byf5aerID4gb3RvaGltZVwgOwor5Yip5q6WID4gcmlzaG9rdVwgOwor5b255Lq6ID4geWFrdW5pblwgOwor5biv55quID4gb2Jpa2F3YVwgOwor6L6x55+lID4gam9rdWNoaVwgOwor5Yun5ZGKID4ga2Fua29rdVwgOwor55uy55uuID4gbW91bW9rdVwgOwor55eb6aKoID4gdHN1dWZ1dVwgOwor6YC45p2QID4gaXRzdXphaVwgOwor5Ye654KtID4gc2h1dHRhblwgOwor5byx5Zu9ID4gamFra29rdVwgOwor5bm55rWBID4ga2Fucnl1dVwgOwor5q2v5a2mID4gc2hpZ2FrdVwgOwor5bmy5riJID4ga2Fuc2hvdVwgOwor6I2354mpID4gbmltb3RzdVwgOwor5YyX5LiKID4gaG9rdWpvdVwgOwor5Ymv5omLID4gZnVrdXNodVwgOwor5Ym95oKNID4gaHlvdWthblwgOwor6Imy6YeMID4gaXJvemF0b1wgOwor6Lui6YCyID4gdGVuc2hpblwgOwor55uk55+zID4gYmFuamFrdVwgOwor6L6y55u4ID4gbm91c2hvdVwgOwor6YGK5pKDID4geXV1Z2VraVwgOwor5YWl6Ii5ID4gbnl1dXNlblwgOwor5YiG5rqcID4gYnVucnl1dVwgOwor5YWl6IiOID4gbnl1dXNoYVwgOwor6YCQ5qyhID4gY2hpa3VqaVwgOwor6L6655aGID4gaGVua3lvdVwgOwor5YmN5pa5ID4gbWFla2F0YVwgOwor55m96I+cID4gaGFrdXNhaVwgOwor5Ymy5oSbID4ga2F0c3VhaVwgOwor6YGp5oCnID4gdGVraXNlaVwgOwor55uj552jID4ga2FudG9rdVwgOwor6LqB6ayxID4gc291dXRzdVwgOwor56CU5YmKID4ga2Vuc2FrdVwgOwor5qW96ZqKID4gZ2FrdXRhaVwgOwor5q2j5a6iID4gc2Vpa2FrdVwgOwor5q6J5Zu9ID4ganVua29rdVwgOwor5YWo6IO9ID4gemVuJydub3VcIDsKK+mAhuavlCA+IGd5YWt1aGlcIDsKK+WGpeemjyA+IG1laWZ1a3VcIDsKK+edpuaciCA+IG11dHN1a2lcIDsKK+mAuOaWhyA+IGl0c3VidW5cIDsKK+WIu+acrCA+IGtva3Vob25cIDsKK+ato+WtkCA+IHNob3VzaGlcIDsKK+W5veasnSA+IHl1dXV0c3VcIDsKK+auuuWCtyA+IHNhc3Nob3VcIDsKK+WGhee0hCA+IG5haXlha3VcIDsKK+W8t+WRsyA+IHRzdXlvbWlcIDsKK+WJo+aInyA+IGtlbmdla2lcIDsKK+i/lOeFpyA+IGhlbnNob3VcIDsKK+iJh+mVtyA+IHRlaWNob3VcIDsKK+mBqeW9kyA+IHRla2l0b3VcIDsKK+i7oui6qyA+IHRlbnNoaW5cIDsKK+WIhua1gSA+IGJ1bnJ5dXVcIDsKK+aoqeiDvSA+IGtlbicnbm91XCA7Civlh7bmvKIgPiBreW91a2FuXCA7CivmraPlq6EgPiBzZWl0ZWtpXCA7CivmrLLmg4UgPiB5b2t1am91XCA7CivluqfmlbcgPiB6YXNoaWtpXCA7CivmpbzplqMgPiByb3VrYWt1XCA7CivliIbms6ggPiBidW5jaHV1XCA7CivljIXkuIEgPiBob3VjaG91XCA7CivliLbmnI0gPiBzZWlmdWt1XCA7Civnmbroir0gPiBoYXRzdWdhXCA7CivpgLLmlbAgPiBzaGluc3V1XCA7Civlh7rmuK8gPiBzaHVra291XCA7Civnmb7oiKwgPiBoeWFwcGFuXCA7Civlh7rmuKAgPiBzaHVra3lvXCA7CivpgLLmlLsgPiBzaGlua291XCA7CivokL3ln44gPiByYWt1am91XCA7CivlibLlvZMgPiB3YXJpYXRlXCA7CivmrLLlv7UgPiB5b2t1bmVuXCA7CivmqJ/ohLMgPiBzaG91bm91XCA7Civov5HngasgPiBjaGlrYWJpXCA7CivliKXmoLwgPiBiZWtrYWt1XCA7Civnlr7poqggPiBzaGlwcHV1XCA7CivokL3lnLAgPiByYWt1Y2hpXCA7CivlhbHnt6ggPiBreW91aGVuXCA7CivmraTlpbQgPiBrb3lhdHN1XCA7CivlvLfli6IgPiBreW91c2VpXCA7Civnm5fnmZYgPiB0b3VoZWtpXCA7CivoiLnplbcgPiBzZW5jaG91XCA7CivnoJTkv64gPiBrZW5zaHV1XCA7CivliLfmlrAgPiBzYXNzaGluXCA7Civmrr/kuK0gPiBkZW5jaHV1XCA7CivlvLflipsgPiBnb3VyaWtpXCA7Civluo/mm7IgPiBqb2t5b2t1XCA7Civluormnb8gPiB5dWthaXRhXCA7CivpgJrmnIkgPiB0c3V1eXV1XCA7CivliZvmhI4gPiBnb3VmdWt1XCA7CivlhbXns6cgPiBoeW91cm91XCA7CivpgbflrqIgPiBzZW5rYWt1XCA7CivlvLfliZsgPiBreW91Z291XCA7Civnm4bnn7MgPiBib25zZWtpXCA7CivmrKPmgqYgPiBraW5ldHN1XCA7CivlvLfliLYgPiBreW91c2VpXCA7CivlhbXnsq4gPiBoeW91cm91XCA7CivpgZPlv4MgPiBkb3VzaGluXCA7CivlhbjnsY0gPiB0ZW5zZWtpXCA7CivpgZPlvrMgPiBkb3V0b2t1XCA7Civnl4Xpm6MgPiBieW91bmFuXCA7Civlipvlo6sgPiByaWtpc2hpXCA7Civou4rovJsgPiBzaGFyeW91XCA7Civou4rovIwgPiBzaGFyeW91XCA7CivlhbXnsY0gPiBoZWlzZWtpXCA7CivlioPlrpogPiBrYWt1dGVpXCA7CivpgJ/mlq0gPiBzb2t1ZGFuXCA7Civou4rou7ggPiBzaGFqaWt1XCA7CivlhoXnqY0gPiBuYWlzZWtpXCA7CivpgI/mnpAgPiB0b3VzZWtpXCA7CivlhqDnnIEgPiBrYW5zaG91XCA7CivliaPlvaIgPiBrZW5nYXRhXCA7CivojZLniakgPiBhcmFtb25vXCA7Civnm7LniIYgPiBtb3ViYWt1XCA7Civlg7voq5YgPiBoZWtpcm9uXCA7CivlvLflhbUgPiBreW91aGVpXCA7CivlhazntIQgPiBrb3V5YWt1XCA7CivmrrXkuJggPiBkYW5reXV1XCA7CivovrLniacgPiBub3Vib2t1XCA7CivlhaXntr8gPiBpcmV3YXRhXCA7CivmqKrnt5ogPiB5b2tvc2VuXCA7Civnmb3nvr0gPiBzaGlyYWhhXCA7Civls7vpmbogPiBzaHVua2VuXCA7Civlt6vnpZ0gPiBmdXNodWt1XCA7Civou7joo4UgPiBqaWt1c291XCA7Civnm6PnjYQgPiBrYW5nb2t1XCA7CivliKXmmYIgPiBiZXRzdWppXCA7CivlvJTllY8gPiBjaG91bW9uXCA7Civli4Xli5ggPiBjaG9ra2FuXCA7CivlhajntJogPiB6ZW5reXV1XCA7CivlhoXnpo8gPiBuYWlmdWt1XCA7CivlhpnnnJ8gPiBzaGFzaGluXCA7CivlhajntI0gPiB6ZW4nJ25vdVwgOwor5Yed5rueID4gZ3lvdXRhaVwgOwor6YGT5bqKID4gZG91c2hvdVwgOwor5q6K5YudID4gc2h1c2hvdVwgOwor6LuN6LazID4gZ3Vuc29rdVwgOwor6auY6aGNID4ga291Z2FrdVwgOwor5YO76KiAID4gaGVraWdlblwgOwor5Ymj5bmVID4ga2VubWFrdVwgOwor5Ye25q2zID4ga3lvdXNhaVwgOwor5Ymb5by3ID4gZ291a3lvdVwgOwor5YiG5qWtID4gYnVuZ3lvdVwgOwor55yf5q2jID4gc2hpbnNlaVwgOwor6Lui6Kq/ID4gdGVuY2hvdVwgOwor5q2M5aerID4gdXRhaGltZVwgOwor6YGg5bGxID4gdG9veWFtYVwgOwor5qiq57O4ID4geW9rb2l0b1wgOwor5qyh5byPID4gamlzaGlraVwgOwor5by35YGlID4ga3lvdWtlblwgOwor6YGK5byLID4geXV1eW9rdVwgOwor6YG65aSxID4gaXNoaXRzdVwgOwor6YG45aWoID4gc2Vuc2hvdVwgOwor5YO76KaLID4gaGVraWtlblwgOwor6Iqx6JG1ID4gaGFuYWFvaVwgOwor6JC95ZG9ID4gcmFrdW1laVwgOwor6YGK5buTID4geXV1a2FrdVwgOwor6Luf6Kq/ID4gbmFuY2hvdVwgOwor5qi556uLID4ganVyaXRzdVwgOwor6a2U6KGTID4gbWFqdXRzdVwgOwor5Yeh5rWBID4gYm9ucnl1dVwgOwor5biC55S6ID4gc2hpY2hvdVwgOwor6IiM6Z+zID4gemV0c3VvblwgOwor5Yid5pelID4gaGF0c3VoaVwgOwor5byV5Y+XID4gaGlraXVrZVwgOwor5YqH5aSJID4gZ2VraWhlblwgOwor5bu65Zu9ID4ga2Vua29rdVwgOwor55+t5YaKID4gdGFuemFrdVwgOwor55+z5YOPID4gc2VraXpvdVwgOwor552j5oimID4gdG9rdXNlblwgOwor5Yi65oifID4gc2hpZ2VraVwgOwor55y65pybID4gY2hvdWJvdVwgOwor5YqH5aOHID4gZ2VraWRhblwgOwor6L+R5rOBID4ga2lua3lvdVwgOwor5qyg5bitID4ga2Vzc2VraVwgOwor5beo55+zID4ga3lvc2VraVwgOwor5YmN5b60ID4gemVuY2hvdVwgOwor5q205Y+yID4gcmVraXNoaVwgOwor55m957eaID4gaGFrdXNlblwgOwor5bmz5pyNID4gaGVpZnVrdVwgOwor6Lui6KaGID4gdGVucHVrdVwgOwor5qmf55WlID4ga2lyeWFrdVwgOwor5YqH5aC0ID4gZ2VraWpvdVwgOwor6Lqr6L+RID4gbWlkamlrYVwgOwor5YSq6ImvID4geXV1cnlvdVwgOwor6YCG5peFID4gZ2VraXJ5b1wgOwor6Lqr6L66ID4gc2hpbnBlblwgOwor5YiG5p6QID4gYnVuc2VraVwgOwor5byx5L2TID4gamFrdXRhaVwgOwor5Ye65qO6ID4gc2h1a2thblwgOwor55m957SZID4gaGFrdXNoaVwgOwor5YWa57GNID4gdG91c2VraVwgOwor5qiq56ybID4geW9rb2J1ZVwgOwor55m657WmID4gaGFra3l1dVwgOwor6Lu96JaEID4ga2VpaGFrdVwgOwor5byV5YqbID4gaW5yeW9rdVwgOwor5YaF55u4ID4gbmFpc2hvdVwgOwor5YWs56ewID4ga291c2hvdVwgOwor5YaG55uGID4gbWFydWJvblwgOwor6JGX5L2cID4gY2hvc2FrdVwgOwor55ep6LqrID4gc291c2hpblwgOwor6Iqx6ImyID4gaGFuYWlyb1wgOwor6YCf5oiQID4gc29rdXNlaVwgOwor6auY6ZajID4ga291a2FrdVwgOwor5bem55u0ID4gc2FjaG9rdVwgOwor5YmN5bm0ID4gemVuJyduZW5cIDsKK+mAgeaWmSA+IHNvdXJ5b3VcIDsKK+mxl+acqCA+IHJpbmJva3VcIDsKK+eZveeyiSA+IG9zaGlyb2lcIDsKK+WGheeahCA+IG5haXRla2lcIDsKK+iLpuevgCA+IGt1c2V0c3VcIDsKK+eZveexsyA+IGhha3VtYWlcIDsKK+efreS/oSA+IHRhbnNoaW5cIDsKK+iPr+WunyA+IGthaml0c3VcIDsKK+aoqueptCA+IHlva29hbmFcIDsKK+iIiOmahiA+IGtvdXJ5dXVcIDsKK+altemBkyA+IGdva3Vkb3VcIDsKK+iJr+ioiCA+IHJ5b3VrZWlcIDsKK+ect+aXjyA+IGtlbnpva3VcIDsKK+mBk+WtpiA+IGRvdWdha3VcIDsKK+WBtOmdoiA+IHNva3VtZW5cIDsKK+WHuuagoSA+IHNodWtrb3VcIDsKK+W5o+adnyA+IGhlaXNva3VcIDsKK+WKqeWLoiA+IHN1a2V6ZWlcIDsKK+WKn+WQjSA+IGtvdW15b3VcIDsKK+iJh+i6qyA+IHRlaXNoaW5cIDsKK+mBjuWvhiA+IGthbWl0c3VcIDsKK+WKh+WboyA+IGdla2lkYW5cIDsKK+WKquWKmyA+IGRvcnlva3VcIDsKK+W6reW4qyA+IG5pd2FzaGlcIDsKK+efs+S6rSA+IHNla2l0ZWlcIDsKK+mqqOmqvCA+IGtva2tha3VcIDsKK+WKqeWKmyA+IGpvcnlva3VcIDsKK+W7n+WggiA+IGJ5b3Vkb3VcIDsKK+i/veaUviA+IHRzdWlob3VcIDsKK+WzoemWkyA+IGt5b3VrYW5cIDsKK+iNkua2vCA+IGtvdXJ5b3VcIDsKK+atu+WCtyA+IHNoaXNob3VcIDsKK+mBiuWuoiA+IHl1dWtha3VcIDsKK+WFpeekviA+IG55dXVzaGFcIDsKK+api+eVlCA+IGt5b3VoYW5cIDsKK+mBiuWtpiA+IHl1dWdha3VcIDsKK+ats+WFpSA+IHNhaW55dXVcIDsKK+WGheeUsyA+IG5haXNoaW5cIDsKK+mzqeWQiCA+IGt5dXVnb3VcIDsKK+asoOWtlyA+IGtldHN1amlcIDsKK+ato+WMlyA+IHNlaWhva3VcIDsKK+WCt+i3oSA+IGtpenVhdG9cIDsKK+atpuWKmyA+IGJ1cnlva3VcIDsKK+mBqeWcsCA+IHRla2ljaGlcIDsKK+WKn+WKmyA+IGtvdXJpa2lcIDsKK+iNkuazoiA+IGFyYW5hbWlcIDsKK+i/kealrSA+IGtpbmd5b3VcIDsKK+ecn+abuCA+IHNoaW5zaG9cIDsKK+iItui8iSA+IGhha3VzYWlcIDsKK+W6teWupCA+IGFuaml0c3VcIDsKK+WHtuaatCA+IGt5b3Vib3VcIDsKK+WFseebiiA+IGt5b3Vla2lcIDsKK+ato+WJryA+IHNlaWZ1a3VcIDsKK+mAmuaApyA+IHRzdXVzZWlcIDsKK+ato+WJhyA+IHNlaXNva3VcIDsKK+WJjeWvqSA+IHplbnNoaW5cIDsKK+msseihgCA+IHVra2V0c3VcIDsKK+WFvOeUqCA+IGtlbicneW91XCA7CivlirTkvZwgPiByb3VzYWt1XCA7CivpgJrlv7UgPiB0c3V1bmVuXCA7Civlh4vmrosgPiBjaG91emFuXCA7CivlhrfmtrwgPiByZWlyeW91XCA7Civou73oiJ8gPiBrZWlzaHV1XCA7CivokL3kvZMgPiByYWt1dGFpXCA7CivnmoTnorogPiB0ZWtrYWt1XCA7CivpgKPlubQgPiByZW4nJ25lblwgOwor5YiH5o+bID4ga2lyaWthZVwgOwor55eV6LehID4ga29uc2VraVwgOwor5bmy5ouTID4ga2FudGFrdVwgOwor5q275Lq6ID4gc2hpYml0b1wgOwor5YWs55qEID4ga291dGVraVwgOwor5bu65YmNID4gdGF0ZW1hZVwgOwor5YiH5o6bID4ga2lra2FrZVwgOwor6YCy5bGVID4gc2hpbnRlblwgOwor5qyg5aaCID4ga2V0c3Vqb1wgOwor6aqo6aCCID4ga290Y2hvdVwgOwor5qiq552AID4gb3VjaGFrdVwgOwor5YiG5o6MID4gYnVuc2hvdVwgOwor5byB5YSfID4gYmVuc2hvdVwgOwor5YiR5oiuID4ga2VpcmlrdVwgOwor6YCa5byKID4gdHN1dWhlaVwgOwor55m656WlID4gaGFzc2hvdVwgOwor6YCa5byBID4gdHN1dWJlblwgOwor5q205LydID4gcmVraWRlblwgOwor5bm95oSBID4geXV1c2h1dVwgOwor6JC95Lq6ID4gb2NodXVkb1wgOwor5YWl55ujID4gbnl1dWthblwgOwor5q275LitID4gc2hpY2h1dVwgOwor5q205Lu7ID4gcmVraW5pblwgOwor5Yil5b6MID4gYmV0c3Vnb1wgOwor5q205LujID4gcmVraWRhaVwgOwor5q205LuVID4gcmVraXNoaVwgOwor5YWx55SoID4ga3lvdXlvdVwgOwor5qW16LKnID4gZ29rdWhpblwgOwor5YWx55SjID4ga3lvdXNhblwgOwor5YWx55SfID4ga3lvdXNlaVwgOwor5qip55uKID4ga2VuJydla2lcIDsKK+W5u+aDkSA+IGdlbndha3VcIDsKK+i7ouiQvSA+IHRlbnJha3VcIDsKK+W5leaUvyA+IGJha3VzZWlcIDsKK+ecjOaciSA+IGtlbicneXV1XCA7Civov73mh5AgPiB0c3Vpa2FpXCA7CivprZrohbkgPiBneW9mdWt1XCA7CivpgJrluLggPiB0c3V1am91XCA7Civov73mhrYgPiB0c3Vpb2t1XCA7Civnm5vms4EgPiBzZWlreW91XCA7CivliJ3lv4MgPiBzaG9zaGluXCA7CivouorouocgPiBjaHV1Y2hvXCA7Civlt53njbogPiBrYXdhdXNvXCA7CivprLzok64gPiBvbmliYXN1XCA7CivnnJ/mka8gPiBzaGluc2hpXCA7Civnmobnm64gPiBrYWltb2t1XCA7Civnmb3noIIgPiBoYWt1c2hhXCA7CivpgJrlt7sgPiB0c3V1a2FuXCA7CivmrbTkuJYgPiByZWtpc2hpXCA7CivmpoLoqZUgPiBnYWloeW91XCA7CivlvIvkurogPiB5b2t1amluXCA7CivoiKrot6EgPiBrb3VzZWtpXCA7Civlh53mnJsgPiBneW91Ym91XCA7Civlgr7op5IgPiBrZWlrYWt1XCA7CivlhbjnjYQgPiB0ZW5nb2t1XCA7Civpr5vnhLwgPiB0YWl5YWtpXCA7CivpganlkIggPiB0ZWtpZ291XCA7CivliofliaQgPiBnZWtpemFpXCA7CivliKXluK0gPiBiZXNzZWtpXCA7CivlhYPnpoQgPiBnZW5yb2t1XCA7Civov73mg7MgPiB0c3Vpc291XCA7Civlgr7opoYgPiBrZWlmdWt1XCA7CivprZrogokgPiBneW9uaWt1XCA7Civov73mgrwgPiB0c3VpdG91XCA7CivlhaXnlKggPiBueXV1eW91XCA7Civnmb3nnLwgPiBoYWt1Z2FuXCA7Civpq5jpgLIgPiBrb3VzaGluXCA7CivojZLmpa0gPiBhcmF3YXphXCA7Civnl5voq5YgPiB0c3V1cm9uXCA7CivliLrlrZAgPiBzYXNoaWtvXCA7CivmraPkvZMgPiBzaG91dGFpXCA7CivpgIblvpIgPiBneWFrdXRvXCA7Civpq5jpgJ8gPiBrb3Vzb2t1XCA7CivlsbHpupMgPiBzYW5yb2t1XCA7CivlubzlvLEgPiB5b3VqYWt1XCA7Civov47mmKUgPiBnZWlzaHVuXCA7Civnmb3nm64gPiBzaGlyb21lXCA7CivliJflvLcgPiByZWtreW91XCA7CivovrLmpa0gPiBub3VneW91XCA7CivliIfmhJsgPiBzZXRzdWFpXCA7CivlgJnps6UgPiBrb3VjaG91XCA7CivpgoTkv5cgPiBnZW56b2t1XCA7CivpgJ/lsIQgPiBzb2t1c2hhXCA7Civov7fmg5EgPiBtZWl3YWt1XCA7CivluoPlt54gPiBrb3VzaHV1XCA7CivpgLzloZ4gPiBoaXNzb2t1XCA7CivlubPlvqkgPiBoZWlmdWt1XCA7Civnmb3nmawgPiBoYWt1c2VuXCA7Civnl5voqIAgPiB0c3V1Z2VuXCA7CivliJ3lt7MgPiBoYXRzdW1pXCA7Civnlr7otbAgPiBzaGlzc291XCA7CivliJfluqcgPiByZXRzdXphXCA7CivnnYDluqcgPiBjaGFrdXphXCA7CivlhbHniq8gPiBreW91aGFuXCA7CivojLbmrrsgPiBjaGFnYXJhXCA7Civov73lvpMgPiB0c3VpanV1XCA7CivmraPkuK0gPiBzZWljaHV1XCA7CivouqzooYwgPiBreXV1a291XCA7Civnmb3nl7QgPiBoYWt1Y2hpXCA7Civlh7bmiYsgPiBreW91c2h1XCA7CivluILms4EgPiBzaGlreW91XCA7CivliJfluK0gPiByZXNzZWtpXCA7CivluJ3mpa0gPiB0ZWlneW91XCA7CivliY3lnoIgPiBtYWVkYXJlXCA7CivnnKnmg5EgPiBnZW53YWt1XCA7Civlv7XjgIUgPiBuZW4nJ25lblwgOwor552A5belID4gY2hha2tvdVwgOwor5Ymy5YuYID4gd2FyaWthblwgOwor6YCA5bqBID4gdGFpY2hvdVwgOwor55m655a5ID4gaG9zc2hpblwgOwor5bm05bm0ID4gbmVuJyduZW5cIDsKK+mzpeS6uiA+IGNob3VqaW5cIDsKK+i/juaSgyA+IGdlaWdla2lcIDsKK+mAsuWhgSA+IHNoaW5ydWlcIDsKK+WJo+WRkSA+IGtlbicnbm9uXCA7CivlhpLmtpwgPiBib3V0b2t1XCA7CivmpJzpj6EgPiBrZW5reW91XCA7CivlhYjnmocgPiBzZW4nJ25vdVwgOwor6YCA5bitID4gdGFpc2VraVwgOwor5Yil5a60ID4gYmV0c3VlblwgOwor6YCx5aCxID4gc2h1dWhvdVwgOwor5Ymy5YmNID4gd2FyaW1hZVwgOwor5YaG5ruRID4gZW5rb3RzdVwgOwor5Yil5a6FID4gYmV0dGFrdVwgOwor5YWN55arID4gbWVuJydla2lcIDsKK+ebm+alrSA+IHNlaWd5b3VcIDsKK+WyoemZtSA+IGtvdXJ5b3VcIDsKK+WJsuWIpCA+IHdhcmloYW5cIDsKK+i7uOe3miA+IGppa3VzZW5cIDsKK+mrmOi2syA+IGtvdXNva3VcIDsKK+WEquengCA+IHl1dXNodXVcIDsKK+WBtOi+uiA+IHNva3VoZW5cIDsKK+asoOWToSA+IGtldHN1aW5cIDsKK+ajkumxiCA+IGJvdWRhcmFcIDsKK+WFpeeJqSA+IGlyZW1vbm9cIDsKK+WFpeeJoiA+IG55dXVyb3VcIDsKK+ecn+aDhSA+IHNoaW5qb3VcIDsKK+mBuOS7uyA+IHNlbicnbmluXCA7Civlh7bmgqogPiBreW91YWt1XCA7CivliJ3lr6kgPiBzaG9zaGluXCA7CivnlarplbcgPiBiYW5jaG91XCA7CivlubzlsJEgPiB5b3VzaG91XCA7CivojYnmnKggPiBzb3Vtb2t1XCA7Civlho3ms6ggPiBzYWljaHV1XCA7Civnm67mmJ8gPiBtZWJvc2hpXCA7CivnnJ/mgKcgPiBzaGluc2VpXCA7Civlub3lr4IgPiB5dXVqYWt1XCA7CivlibXlgrcgPiBzb3VzaG91XCA7CivlgbTou4ogPiBzb2t1c2hhXCA7CivlhajnhLwgPiB6ZW5zaG91XCA7CivliJ3lrZAgPiBoYXRzdWdvXCA7Civlg5roiaYgPiByeW91a2FuXCA7Civlh7rlvoEgPiBzaHVzc2VpXCA7Civlub3lrqIgPiB5dXVrYWt1XCA7CivliIblt7sgPiBidW5tYWtpXCA7CivpgJrlpb0gPiB0c3V1a291XCA7CivoiIjotqMgPiBreW91c2h1XCA7CivliaPliocgPiBrZW5nZWtpXCA7Civnmannl4UgPiByYWlieW91XCA7CivpgJrlpY8gPiB0c3V1c291XCA7CivnlqPotrMgPiBpYm9hc2hpXCA7Civoia/og70gPiByeW91bm91XCA7CivovInnqY0gPiBzYWlzZWtpXCA7CivojLbmo5ogPiBjaGFkYW5hXCA7CivlubzlrZAgPiBvc2FuYWdvXCA7CivpgankvosgPiB0ZWtpcmVpXCA7CivmpJzph50gPiBrZW5zaGluXCA7Civlh7rlu7cgPiBzaHV0dGVpXCA7CivliY3lk6ggPiB6ZW5zaG91XCA7CivltKnokL0gPiBob3VyYWt1XCA7CivnnJ/lvbEgPiBzaGluJydlaVwgOwor5bm05bCRID4gbmVuc2hvdVwgOwor5bmj5bibID4gaGVpaGFrdVwgOwor5Ye25by+ID4ga3lvdWRhblwgOwor6YCf5aCxID4gc29rdWhvdVwgOwor55Sy6auYID4ga291ZGFrYVwgOwor55m954q2ID4gaGFrdWpvdVwgOwor6YGp5Lu7ID4gdGVraW5pblwgOwor5Yi25ZynID4gc2VpYXRzdVwgOwor5Ymb5YqbID4gZ291cmlraVwgOwor55a+6KaWID4gc2hpc3NoaVwgOwor6Ium54axID4ga3VuZXRzdVwgOwor55m654uCID4gaGFra3lvdVwgOwor5Ym15L2cID4gc291c2FrdVwgOwor5qqE5paHID4gZ2VraWJ1blwgOwor5YaF5rGgID4gdWNoaWlrZVwgOwor55uu5pKlID4gbWViYWNoaVwgOwor5YGP6YedID4gaGVuc2hpblwgOwor6YCA5a2mID4gdGFpZ2FrdVwgOwor5YGP6YeNID4gaGVuY2hvdVwgOwor5bm05a2QID4gdG9zaGlnb1wgOwor6YCa5aCxID4gdHN1dWhvdVwgOwor5YKN6Ki8ID4gYm91c2hvdVwgOwor5YKN6Ki7ID4gYm91Y2h1dVwgOwor5Ye65biGID4gc2h1cHBhblwgOwor5Ymj5YWIID4ga2Vuc2FraVwgOwor5YWI546LID4gc2VuJydub3VcIDsKK+WHtuW5tCA+IGt5b3VuZW5cIDsKK+ecn+W5syA+IG1hcHBpcmFcIDsKK+eZkuedgCA+IHl1Y2hha3VcIDsKK+WJr+S9vyA+IGZ1a3VzaGlcIDsKK+mrmOiqvyA+IGtvdWNob3VcIDsKK+iOq+WkpyA+IGJha3VkYWlcIDsKK+WJjeWOhCA+IG1hZXlha3VcIDsKK+mtmuernCA+IGd5b3J5dXVcIDsKK+WFsea4iCA+IGt5b3VzYWlcIDsKK+WFh+eMmyA+IGt5b3Vtb3VcIDsKK+i/t+WuriA+IG1laWt5dXVcIDsKK+mBheWIuyA+IGNoaWtva3VcIDsKK+ebuOaJvyA+IHNvdXNob3VcIDsKK+mrmOiplSA+IGtvdWh5b3VcIDsKK+W5lOW5lSA+IG1hbm1ha3VcIDsKK+ajrumWkSA+IHNoaW5rYW5cIDsKK+mAsuWRiCA+IHNoaW50ZWlcIDsKK+i+n+aYkyA+IGhla2lla2lcIDsKK+WFh+eKtiA+IGt5b3Vqb3VcIDsKK+WFpea8gSA+IG55dXVneW9cIDsKK+ebtOaKqyA+IGNob2t1aGlcIDsKK+eZuueFmSA+IGhhdHN1ZW5cIDsKK+iIn+ihjCA+IHNodXVrb3VcIDsKK+WyuOi+uiA+IGtpc2hpYmVcIDsKK+mrmOinkiA+IGtvdWtha3VcIDsKK+mBk+S/lyA+IGRvdXpva3VcIDsKK+mAsuWPliA+IHNoaW5zaHVcIDsKK+iGqOmahiA+IGJvdXJ5dXVcIDsKK+WAjemhjSA+IGJhaWdha3VcIDsKK+ebruaMhyA+IG1va3VzaGlcIDsKK+mtlOeqnyA+IG1ha3V0c3VcIDsKK+WHneW/tSA+IGd5b3VuZW5cIDsKK+W3oeattCA+IGp1bnJla2lcIDsKK+WxsemggiA+IHNhbmNob3VcIDsKK+i7ouexjSA+IHRlbnNla2lcIDsKK+WFpea5ryA+IG55dXV0b3VcIDsKK+W5veWigyA+IHl1dWt5b3VcIDsKK+WHuuWxlSA+IHNodXR0ZW5cIDsKK+iNkuaKgCA+IGFyYXdhemFcIDsKK+WFpea4ryA+IG55dXVrb3VcIDsKK+WFpea4oCA+IG55dXVreW9cIDsKK+iLm+eDiCA+IGthcmV0c3VcIDsKK+WFieeFpyA+IGtvdXNob3VcIDsKK+i/q+WusyA+IGhha3VnYWlcIDsKK+WFq+a0siA+IHlhc2hpbWFcIDsKK+i9n+ayiCA+IGdvdWNoaW5cIDsKK+ecjOW6gSA+IGtlbmNob3VcIDsKK+WHoeW6uCA+IGJvbicneW91XCA7CivnmYfnmZYgPiBrYW5wZWtpXCA7CivoibLntKAgPiBzaGlraXNvXCA7Civov5HlubQgPiBraW4nJ25lblwgOwor55u05oSfID4gY2hva2thblwgOwor55uG5pquID4gYm9ua3VyZVwgOwor6LmJ6LeMID4gc2F0ZXRzdVwgOwor5bm05aKXID4gdG9zaGltYVwgOwor6YGK5L6gID4geXV1a3lvdVwgOwor5YmN5YWGID4gemVuY2hvdVwgOwor55mH55eHID4ga2Fuc2hvdVwgOwor6L2i5q27ID4gcmVraXNoaVwgOwor6YGT5Li7ID4gZG91c2h1dVwgOwor5YeL5oK0ID4gY2hvdXN1aVwgOwor5YOn57GNID4gc291c2VraVwgOwor6YGT5LitID4gZG91Y2h1dVwgOwor5bGx6Zm9ID4gc2FuJyd5b3VcIDsKK+W3pealrSA+IGtvdWd5b3VcIDsKK+WxsemZtSA+IHNhbnJ5b3VcIDsKK+asoOS8uCA+IGtlbnNoaW5cIDsKK+mBiuS8kSA+IHl1dWt5dXVcIDsKK+eXmOiLlyA+IHRvdWJ5b3VcIDsKK+W5veWbmiA+IHl1dXNodXVcIDsKK+mAseWIiiA+IHNodXVrYW5cIDsKK+W6luWOqCA+IGhvdWNodXVcIDsKK+WAkumWoyA+IHRvdWtha3VcIDsKK+WIl+WbvSA+IHJla2tva3VcIDsKK+edo+WKsSA+IHRva3VyZWlcIDsKK+W3oealrSA+IGp1bmd5b3VcIDsKK+aomea6liA+IGh5b3VqdW5cIDsKK+iPiuWIpCA+IGtpa3ViYW5cIDsKK+eUo+mhjSA+IHNhbmdha3VcIDsKK+mAseWGhSA+IHNodXVuYWlcIDsKK+WCvuiBtCA+IGtlaWNob3VcIDsKK+mwu+WxiyA+IHVuYWdpeWFcIDsKK+W4r+W/gyA+IG9iaXNoaW5cIDsKK+WFpeawtCA+IG55dXVzdWlcIDsKK+WItuWLnSA+IHNlaXNob3VcIDsKK+WIu+WIuyA+IGtva2tva3VcIDsKK+WCmeiThCA+IGJpY2hpa3VcIDsKK+iIiOihjCA+IGtvdWd5b3VcIDsKK+mAmuWQjSA+IHRvb3JpbmFcIDsKK+i7jeexjSA+IGd1bnNla2lcIDsKK+iIueiItiA+IHNlbnBha3VcIDsKK+mAo+WLnSA+IHJlbnNob3VcIDsKK+mAmuWPsiA+IHRzdXVzaGlcIDsKK+ebtOW+jCA+IGNob2t1Z29cIDsKK+ebtOW+hCA+IGNob2trZWlcIDsKK+ebtOW+gCA+IGNob2t1b3VcIDsKK+S/rumkiiA+IHNodXV5b3VcIDsKK+WFh+a8oiA+IGt5b3VrYW5cIDsKK+eXheiPjCA+IGJ5b3VraW5cIDsKK+WDreensCA+IHNlbnNob3VcIDsKK+WHuuWllCA+IHNodXBwb25cIDsKK+i+m+aKsSA+IHNoaW5ib3VcIDsKK+alveiBliA+IGdha3VzZWlcIDsKK+WBpeiouiA+IGtlbnNoaW5cIDsKK+i7veeXhyA+IGtlaXNob3VcIDsKK+iIueiFuSA+IHNlbnB1a3VcIDsKK+eZvea0siA+IHNoaXJhc3VcIDsKK+WHoeWwjyA+IGJvbnNob3VcIDsKK+WJjeS7uyA+IHplbicnbmluXCA7Civlt6jmnKggPiBreW9ib2t1XCA7CivoiKzoi6UgPiBoYW4nJ255YVwgOwor5YK36ICFID4gc2hvdXNoYVwgOwor5YaG5puyID4gZW5reW9rdVwgOwor5bC+6aqoID4gYmlrb3RzdVwgOwor5YaF5pyNID4gbmFpZnVrdVwgOwor5bqD5ZGKID4ga291a29rdVwgOwor6Iqd55SfID4gc2hpYmFmdVwgOwor6YCa5YukID4gdHN1dWtpblwgOwor6Ieq6KqsID4gamlzZXRzdVwgOwor5YWF5rqiID4ganV1aXRzdVwgOwor55yL5a6iID4ga2Fua2FrdVwgOwor6Iy25omYID4gY2hhdGFrdVwgOwor55yf5aSPID4gbWFuYXRzdVwgOwor5Ye25aSJID4ga3lvdWhlblwgOwor6L665bmFID4gaGVucHVrdVwgOwor5bqX5YaFID4gdGVuJyduYWlcIDsKK+WIuuWCtyA+IHNoaXNob3VcIDsKK+W3neafsyA+IHNlbnJ5dXVcIDsKK+eZuuazqCA+IGhhdGNodXVcIDsKK+alreiFuSA+IGdvdWhhcmFcIDsKK+iJr+eoriA+IHJ5b3VzaHVcIDsKK+WFseajsiA+IGt5b3VzZWlcIDsKK+WAn+mHkSA+IHNoYWtraW5cIDsKK+WJiuS6lSA+IHNha3VzZWlcIDsKK+eVsOizqiA+IGlzaGl0c3VcIDsKK+W6j+WIlyA+IGpvcmV0c3VcIDsKK+mAn+WGmSA+IHNva3VzaGFcIDsKK+WAkumMryA+IHRvdXNha3VcIDsKK+W4neW+syA+IHRlaXRva3VcIDsKK+mAmuWIhiA+IHRzdXVidW5cIDsKK+i/veWWhCA+IHRzdWl6ZW5cIDsKK+WFvOaciSA+IGtlbicneXV1XCA7Civlh7bloLEgPiBreW91aG91XCA7CivmpJzoqo0gPiBrZW4nJ25pblwgOwor6I2S5be7ID4gYXJhbWFraVwgOwor55eF6IiOID4gYnlvdXNoYVwgOwor6Iie6Iy4ID4gbWFpdGFrZVwgOwor5qKf6aaWID4ga3lvdXNodVwgOwor6YCx5LukID4gc2h1dXJlaVwgOwor5YeG5beeID4ganVuc2h1dVwgOwor5YWx5qCTID4gdG9tb3NlblwgOwor5qSc6Ki8ID4ga2Vuc2hvdVwgOwor5qSc6Ki6ID4ga2Vuc2hpblwgOwor5bi45a6/ID4gam91eWFkb1wgOwor5L+h6aC8ID4gc2hpbnJhaVwgOwor5YWJ5rKiID4ga291dGFrdVwgOwor5bid5bufID4gdGVpYnlvdVwgOwor5Ye55ZywID4ga3Vib2NoaVwgOwor5Ye45Z2KID4gZGVrb2JvdVwgOwor6IWx6Z6YID4ga2Vuc2hvdVwgOwor6LuN56WoID4gZ3VucHlvdVwgOwor55ub5b6zID4gc2VpdG9rdVwgOwor55Sf6ZW3ID4gc2VpY2hvdVwgOwor5qWt6ICFID4gZ3lvdXNoYVwgOwor6LuN56WeID4gZ3Vuc2hpblwgOwor5YWl5qO6ID4gbnl1dWthblwgOwor6LmI6KWyID4gdG91c2h1dVwgOwor6YCy5LiKID4gc2hpbmpvdVwgOwor6Iif6ImHID4gc2h1dXRlaVwgOwor5bm95YudID4geXV1c2hvdVwgOwor5beo5pOYID4ga3lvaGFrdVwgOwor6Iif6IiqID4gc2h1dWtvdVwgOwor5qiq5qOSID4geW9rb2JvdVwgOwor5Yi25L2cID4gc2Vpc2FrdVwgOwor5bm05Y+OID4gbmVuc2h1dVwgOwor5YeL5bC9ID4gY2hvdWppblwgOwor55uX5b+DID4gdG91c2hpblwgOwor5YWl5qKFID4gbnl1dWJhaVwgOwor6IWT6aqoID4gaGlrb3RzdVwgOwor5YWx5pyJID4ga3lvdXl1dVwgOwor6bCk5a2QID4gYnVyaWtrb1wgOwor55u45a6iID4gYWlreWFrdVwgOwor55yf5ZugID4gc2hpbicnaW5cIDsKK+i/veWPtyA+IHRzdWlnb3VcIDsKK+mAo+S9nCA+IHJlbnNha3VcIDsKK+WFjuasoCA+IHRva2V0c3VcIDsKK+WFhuawkSA+IGNob3VtaW5cIDsKK+WIpeWEgCA+IGJldHN1Z2lcIDsKK+WFpeagoSA+IG55dXVrb3VcIDsKK+iJr+efpSA+IHJ5b3VjaGlcIDsKK+mAo+S8kSA+IHJlbmt5dXVcIDsKK+WIh+WRsyA+IGtpcmVhamlcIDsKK+mAoOS9nCA+IHpvdXNha3VcIDsKK+WFreabuCA+IHJva3VzaG9cIDsKK+edgOWJoyA+IGNoYWtrZW5cIDsKK+WIhuWRqCA+IGJ1bnNodXVcIDsKK+WFreabnCA+IHJva3V5b3VcIDsKK+WFq+aclCA+IGhhc3Nha3VcIDsKK+WIquS/riA+IHNhbnNodXVcIDsKK+WHhuWwhiA+IGp1bnNob3VcIDsKK+ecjOWigyA+IGtlbmt5b3VcIDsKK+iFlemmliA+IHVkZWt1YmlcIDsKK+ecvOWKmyA+IGdhbnJpa2lcIDsKK+iNkuWvpSA+IGtvdXJ5b3VcIDsKK+mAmuS+iyA+IHRzdXVyZWlcIDsKK+WyrOinkiA+IGtvdWtha3VcIDsKK+aomeamnCA+IGh5b3Vib3VcIDsKK+WFpeadpSA+IG55dXVyYWlcIDsKK+eVpeitnCA+IHJ5YWt1ZnVcIDsKK+i9ouaWrSA+IHJla2lkYW5cIDsKK+i7oueUqCA+IHRlbicneW91XCA7CivnmpDmnIggPiBzYXRzdWtpXCA7CivpgKPkuK0gPiByZW5jaHV1XCA7CivlhYPmrYwgPiBtb3RvdXRhXCA7CivoibLnmb0gPiBpcm9qaXJvXCA7Civlsqnop5IgPiBpd2FrYWRvXCA7CivpgJPkv6EgPiB0ZWlzaGluXCA7CivlupbkuIEgPiBob3VjaG91XCA7CivojLblupcgPiBjaGFtaXNlXCA7Civlh53loYogPiBneW91a2FpXCA7CivpgIblhYkgPiBneWFra291XCA7Civmop/pm4QgPiBreW91eXV1XCA7Civlh7rlk4EgPiBzaHVwcGluXCA7CivmorXpkJggPiBib25zaG91XCA7CivoiLnntJogPiBzZW5reXV1XCA7CivovrLlraYgPiBub3VnYWt1XCA7CivpgJrkurogPiB0c3V1amluXCA7CivnlaXoqp4gPiByeWFrdWdvXCA7Civlg63nlKggPiBzZW4nJ3lvdVwgOwor6YCa5LqkID4gdHN1dWtvdVwgOwor6LiK6LqNID4geW91eWFrdVwgOwor6Iy25bitID4gY2hhc2VraVwgOwor6L+95YiKID4gdHN1aWthblwgOwor55So6YePID4geW91cnlvdVwgOwor6Ieq6JmQID4gamlneWFrdVwgOwor6ay855WcID4ga2ljaGlrdVwgOwor6IWQ6aOfID4gZnVzaG9rdVwgOwor5bm05YaFID4gbmVuJyduYWlcIDsKK+WFrOaVtSA+IGtvdXRla2lcIDsKK+WCjeiBtCA+IGJvdWNob3VcIDsKK+W3puaKmCA+IHNhc2V0c3VcIDsKK+WFrOaVmSA+IGtvdWt5b3VcIDsKK+eZveahgyA+IGhha3V0b3VcIDsKK+iLpeaenSA+IHdha2FlZGFcIDsKK+WHuuWQkSA+IHNodWtrb3VcIDsKK+i/keWbvSA+IGtpbmdva3VcIDsKK+iIueexjSA+IHNlbnNla2lcIDsKK+WFg+aomSA+IGdlbnB5b3VcIDsKK+WHuuWPoyA+IGRlZ3VjaGlcIDsKK+WIh+WJiiA+IHNlc3Nha3VcIDsKK+eVpeinoyA+IHJ5YWtrYWlcIDsKK+WIgOWMoCA+IHRvdXNob3VcIDsKK+eZuuahiCA+IGhhdHN1YW5cIDsKK+eUo+mHjyA+IHNhbnJ5b3VcIDsKK+i7n+eQgyA+IG5hbmt5dXVcIDsKK+WIpeS6iyA+IGJldHN1amlcIDsKK+S/rumMrCA+IHNodXVyZW5cIDsKK+ebtOWljyA+IGppa2lzb3VcIDsKK+W4guW6gSA+IHNoaWNob3VcIDsKK+iIque2miA+IGtvdXpva3VcIDsKK+iJr+eUsCA+IHJ5b3VkZW5cIDsKK+i2s+mfsyA+IGFzaGlvdG9cIDsKK+WFiOajkiA+IHNha2lib3VcIDsKK+WIiOWFpSA+IGthcmlpcmVcIDsKK+eZveacqCA+IHNoaXJha2lcIDsKK+aomeacrCA+IGh5b3Vob25cIDsKK+eah+aXjyA+IGtvdXpva3VcIDsKK+WHuuWLpCA+IHNodWtraW5cIDsKK+eZveabuCA+IGhha3VzaG9cIDsKK+i+uuWigyA+IGhlbmt5b3VcIDsKK+mAgeS/oSA+IHNvdXNoaW5cIDsKK+i7jeeUqCA+IGd1bicneW91XCA7CivliJ3kubMgPiBzaG9ueXV1XCA7CivlubPkv6EgPiBoZWlzaGluXCA7Civnmb7mma8gPiBoeWFra2VpXCA7CivojZLlo4EgPiBhcmFrYWJlXCA7CivlhavmjpsgPiBoYWtrYWtlXCA7CivovKrmpa0gPiByaW5neW91XCA7CivojLblr64gPiBjaGFyeW91XCA7CivlubPkvZwgPiBoZWlzYWt1XCA7Civnm7Lln7cgPiBtb3VzaHV1XCA7CivnlJjphZIgPiBhbWF6YWtlXCA7CivlhYnmnZ8gPiBrb3Vzb2t1XCA7CivlhYPmoJMgPiBtb3Rvc2VuXCA7CivlhavmjLogPiBoYXRjaG91XCA7CivnnJ/liaMgPiBzaGlua2VuXCA7Civlh7nlh7ggPiBvdXRvdHN1XCA7CivovpvlrZAgPiBrYXJhc2hpXCA7Civlh7jlh7kgPiB0b3RzdW91XCA7Civnmb7mlrkgPiBoeWFwcG91XCA7CivlubPkvI8gPiBoZWlmdWt1XCA7CivlhoXlv4MgPiBuYWlzaGluXCA7CivlgbTog4wgPiBzb2t1aGFpXCA7CivnmYLms5UgPiByeW91aG91XCA7CivlhaXmjpsgPiBpcmVrYWt1XCA7Civov7fkv6EgPiBtZWlzaGluXCA7Civlh7bliIMgPiBreW91amluXCA7Civlh7rlhbggPiBzaHV0dGVuXCA7Civlh7rlhbUgPiBzaHVwcGVpXCA7Civnmb3mlpEgPiBoYWt1aGFuXCA7CivliIDlgrcgPiB0b3VzaG91XCA7CivpgIDkuqwgPiB0YWlreW91XCA7Civnmb3mlocgPiBoYWt1YnVuXCA7Civlh7jlhoYgPiB0b3RzdWVuXCA7CivlsbHos4ogPiBzYW56b2t1XCA7CivnnLzkuK0gPiBnYW5jaHV1XCA7CivlgbTogZ4gPiBzb2t1YnVuXCA7Civmpa3nqK4gPiBneW91c2h1XCA7CivlhYfmmrQgPiBreW91Ym91XCA7CivlhavmiYsgPiB5YXRzdWRlXCA7CivoibLniakgPiBpcm9tb25vXCA7CivlhYPmnJ0gPiBnZW5jaG91XCA7Civnl7Pnl4UgPiByaW5ieW91XCA7CivlhYPmnI0gPiBnZW5wdWt1XCA7Civkv67pgZMgPiBzaHV1ZG91XCA7Civlh7blhZogPiBreW91dG91XCA7CivlhYvmmI4gPiBrb2t1bWVpXCA7CivlubTkuIogPiB0b3NoaXVlXCA7Civkv6Hph5EgPiBzaGlua2luXCA7CivlhYnmmI4gPiBrb3VteW91XCA7CivlhbHmhJ8gPiBreW91a2FuXCA7Civlt6Xlu6AgPiBrb3VzaG91XCA7Civpq5jntaYgPiBrb3VreXV1XCA7Civkv53ph4ggPiBob3NoYWt1XCA7CivlhaXmiYsgPiBueXV1c2h1XCA7CivlhaXmiYAgPiBueXV1c2hvXCA7Civov7DkvZwgPiBqdXNzYWt1XCA7CivlhoXluZUgPiBuYWltYWt1XCA7CivmqZ/lr4YgPiBraW1pdHN1XCA7CivouI/opbIgPiB0b3VzaHV1XCA7Civpq5jntJogPiBrb3VreXV1XCA7Civnm7TllrYgPiBjaG9rdWVpXCA7Civnm7TllqkgPiBjaG9rdXl1XCA7CivlsI/pnaIgPiBzaG91bWVuXCA7CivlsL/phbggPiBueW91c2FuXCA7CivovpvlpLcgPiBrb2J1c2hpXCA7Civlha3mg4UgPiByb2t1am91XCA7Civpq5jnsrEgPiBrb3VyeWFuXCA7CivlsI/pm6MgPiBzaG91bmFuXCA7CivlsYDpg6ggPiBreW9rdWJ1XCA7CivluJ3lm70gPiB0ZWlrb2t1XCA7Civlh7rkvJogPiBzaHVra2FpXCA7CivlsI/pmoogPiBzaG91dGFpXCA7CivprLHnhLYgPiB1dHN1emVuXCA7CivlhbHlvbkgPiBreW91ZWtpXCA7Civlh7rku5UgPiBzaHVzc2hpXCA7Civlgrfnl5UgPiBzaG91a29uXCA7Civlho3lr6kgPiBzYWlzaGluXCA7CivnnIzlhoUgPiBrZW4nJ25haVwgOwor55Sz6KuLID4gc2hpbnNlaVwgOwor55m65oyvID4gaGFzc2hpblwgOwor5bC/6YGTID4gbnlvdWRvdVwgOwor5YG057eaID4gc29rdXNlblwgOwor5YWs5b6zID4ga291dG9rdVwgOwor5bCR6ZaiID4gc2hvdWthblwgOwor5bi45YudID4gam91c2hvdVwgOwor5bCR6ZaRID4gc2hvdWthblwgOwor5Yal5aKDID4gbWVpa3lvdVwgOwor55yf5Lq6ID4gc2hpbmppblwgOwor55m95omHID4gaGFrdXNlblwgOwor5bCP6ZaRID4gc2hvdWthblwgOwor5Ya35ZiyID4gcmVpY2hvdVwgOwor5YWo5b+DID4gemVuc2hpblwgOwor55eb55eSID4gdHN1dXlvdVwgOwor6aa06bm/ID4gdG9uYWthaVwgOwor55u05Y+CID4gamlraXNhblwgOwor5YWl5b+1ID4gbnl1dW5lblwgOwor6ISK6auEID4gc2VraXp1aVwgOwor55yf5LiLID4gbWFzaGl0YVwgOwor5YaG5a6JID4gZW4nJ3lhc3VcIDsKK+WwiumVtyA+IHNvbmNob3VcIDsKK+WFrOW6gSA+IGtvdWNob3VcIDsKK+i/lOS/oSA+IGhlbnNoaW5cIDsKK+WBveethiA+IGdpaGl0c3VcIDsKK+ebuOWJiyA+IHNvdWtva3VcIDsKK+W4q+WMoCA+IHNoaXNob3VcIDsKK+iGneihjCA+IHNoaWtrb3VcIDsKK+i7ouazqCA+IHRlbmNodXVcIDsKK+WFpeW7tyA+IG55dXV0ZWlcIDsKK+S/l+i8qSA+IHpva3VoYWlcIDsKK+iEmumfuyA+IGt5YWt1aW5cIDsKK+W3peWtpiA+IGtvdWdha3VcIDsKK+WHoeS/lyA+IGJvbnpva3VcIDsKK+WvkumukiA+IGthbmJ1bmFcIDsKK+alreeXhSA+IGdvdWJ5b3VcIDsKK+i+suWNmiA+IG5vdWhha3VcIDsKK+i+suWNlCA+IG5vdWt5b3VcIDsKK+WFh+aJiyA+IGt5b3VzaHVcIDsKK+WFqOW5hSA+IHplbnB1a3VcIDsKK+WFq+W3niA+IHlhc2hpbWFcIDsKK+WFqOW4rSA+IHplbnNla2lcIDsKK+mrmOemhCA+IGtvdXJva3VcIDsKK+i/keS9nCA+IGtpbnNha3VcIDsKK+iNt+S4uyA+IG5pbnVzaGlcIDsKK+iJr+a4ryA+IHJ5b3Vrb3VcIDsKK+WvuOmamSA+IHN1bmdla2lcIDsKK+WHoeS9nCA+IGJvbnNha3VcIDsKK+alreeVjCA+IGd5b3VrYWlcIDsKK+ebuOWFiyA+IHNvdWtva3VcIDsKK+ebruWJjSA+IG1va3V6ZW5cIDsKK+WyqeiCjCA+IGl3YWhhZGFcIDsKK+WHoeS6uiA+IGJvbicnbmluXCA7Civkv6HosqkgPiBzaGlucGFuXCA7Civkv5fotqMgPiB6b2t1c2h1XCA7Civkv67oq5YgPiBzaHV1cm9uXCA7Civlt6flppkgPiBrb3VteW91XCA7CivlhbXlraYgPiBoZWlnYWt1XCA7CivnlLDonrogPiB0YW5pc2hpXCA7Civnmbrlv4MgPiBob3NzaGluXCA7Civlh43lgrcgPiB0b3VzaG91XCA7CivnlKPopKUgPiBzYW5qb2t1XCA7CivlsI/pioMgPiBzaG91anV1XCA7Civoia/ms5UgPiByeW91aG91XCA7CivlhYfmgqogPiBreW91YWt1XCA7Civkvr/pgJogPiBiZW50c3V1XCA7CivlsI/piaIgPiBrb2JhY2hpXCA7Civoi6XlubQgPiBqYWt1bmVuXCA7CivlhYfmgo0gPiBreW91a2FuXCA7CivotaTpo68gPiBzZWtpaGFuXCA7CivluJ3liocgPiB0ZWlnZWtpXCA7CivlhbHlrZggPiBreW91em9uXCA7CivnnIHku6QgPiBzaG91cmVpXCA7Civoh6rnspsgPiBqaXNodWt1XCA7Civnmb7luqYgPiBoeWFrdWRvXCA7CivlhoXlo4EgPiBuYWloZWtpXCA7Civkv67oqIIgPiBzaHV1dGVpXCA7CivlhY3lvbkgPiBtZW4nJ2VraVwgOwor55a+55eFID4gc2hpcHBlaVwgOwor5YWD5oKqID4gZ2VuJydha3VcIDsKK+eWvOeXmyA+IHRvdXRzdXVcIDsKK+Wus+mzpSA+IGdhaWNob3VcIDsKK+WCjeeZvSA+IGJvdWhha3VcIDsKK+aknOe0oiA+IGtlbnNha3VcIDsKK+iJr+awkSA+IHJ5b3VtaW5cIDsKK+WFqOWvriA+IHplbnJ5b3VcIDsKK+WFpeWxhSA+IG55dXVreW9cIDsKK+eUsuiZqyA+IGtvdWNodXVcIDsKK+i6geeXhSA+IHNvdWJ5b3VcIDsKK+eZu+W6gSA+IHRvdWNob3VcIDsKK+WFqOWuuSA+IHplbicneW91XCA7CivlhaXlsIQgPiBueXV1c2hhXCA7CivnlLDomasgPiB0YW11c2hpXCA7Civnm7Lkv6EgPiBtb3VzaGluXCA7Civnmb3luIYgPiBzaGlyYWhvXCA7Civpq5jnm7QgPiBrb3VqaWtpXCA7Civohr/og7ggPiBub3VreW91XCA7CivlsIrph40gPiBzb25jaG91XCA7CivnlJ/ooYAgPiBuYW1hY2hpXCA7CivlhaXlr4cgPiBueXV1a291XCA7CivlhajlraYgPiB6ZW5nYWt1XCA7CivlhYflvL4gPiBreW91ZGFuXCA7CivlhaXlrpogPiBueXV1am91XCA7Civou6Lmpa0gPiB0ZW5neW91XCA7CivlsYjoqJcgPiBrdXR0YWt1XCA7Civnm7TkvJ0gPiBqaWtpZGVuXCA7CivojLbljJkgPiBjaGFzYWppXCA7Civoh6rnrYYgPiBqaWhpdHN1XCA7Civoi5fluoogPiBuYWVkb2tvXCA7CivotaTpnaIgPiBzZWtpbWVuXCA7CivovpvlirQgPiBzaGlucm91XCA7CivlhYTlvJ8gPiBreW91ZGFpXCA7Civkv4ros6IgPiBzaHVua2VuXCA7CivlhazlqLwgPiBrb3VzaG91XCA7CivlhoXlnKcgPiBuYWlhdHN1XCA7Civnl5vngrkgPiB0c3V1dGVuXCA7Civnm7TkuqQgPiBjaG9ra291XCA7CivlhYjlubQgPiBzZW4nJ25lblwgOwor55ax55a5ID4gaG91c2hpblwgOwor5L+X6KyhID4gem9rdXlvdVwgOwor6a6u5bCRID4gc2Vuc2hvdVwgOwor5bCP6YGTID4ga29taWNoaVwgOwor6Ieq56uLID4gamlyaXRzdVwgOwor5L+u6KGMID4gc2h1Z3lvdVwgOwor5YaF5Zu9ID4gbmFpa29rdVwgOwor5L+X6Ku6ID4gem9rdWdlblwgOwor6IaP6JasID4ga291eWFrdVwgOwor6Iez56aPID4gc2hpZnVrdVwgOwor5a+66YqtID4gdGVyYXNlblwgOwor6L6y5L2cID4gbm91c2FrdVwgOwor5L+X6KumID4gem9rdXRhaVwgOwor5bCP6YCVID4gc2hvdWtlaVwgOwor5L+K6LGqID4gc2h1bmdvdVwgOwor5L+X6KuWID4gem9rdXJvblwgOwor55eH54q2ID4gc2hvdWpvdVwgOwor5L+X6KuHID4gem9rdWRhblwgOwor5bCO6YCaID4gZG91dHN1dVwgOwor6a2a5pePID4gZ3lvem9rdVwgOwor5YWl5am/ID4gaXJpbXVrb1wgOwor6Ie856CyID4ga3l1dWhvdVwgOwor5YO75p2RID4gaGVraXNvblwgOwor6a6o5bGLID4gc3VzaGl5YVwgOwor5YGl56WlID4ga2Vuc2hvdVwgOwor5a+E6aOfID4ga2lzaG9rdVwgOwor55m95bGxID4gaGFrdXNhblwgOwor55eF54q2ID4gYnlvdWpvdVwgOwor5YWD5bm0ID4gZ2FuJyduZW5cIDsKK+Wwj+i+siA+IHNob3Vub3VcIDsKK+W4reS4iiA+IHNla2lqb3VcIDsKK+iNkuS6iyA+IGFyYWdvdG9cIDsKK+ebo+S/riA+IGthbnNodXVcIDsKK+WBuOeblyA+IGNodXV0b3VcIDsKK+WDu+abuCA+IGhla2lzaG9cIDsKK+eVmee9riA+IHJ5dXVjaGlcIDsKK+i+m+WFmiA+IGthcmF0b3VcIDsKK+agvOmXmCA+IGtha3V0b3VcIDsKK+eVque1hCA+IGJhbmd1bWlcIDsKK+S/l+iogCA+IHpva3VnZW5cIDsKK+mtguafsSA+IGtvbmNodXVcIDsKK+i8quW7kyA+IHJpbmtha3VcIDsKK+eZvuWumCA+IGh5YWtrYW5cIDsKK+S9nOmiqCA+IHNha3VmdXVcIDsKK+mmrOmjnyA+IGJhc2hva3VcIDsKK+iJpuapiyA+IGthbmt5b3VcIDsKK+aomeWumiA+IGh5b3V0ZWlcIDsKK+iGqOiEuSA+IGJvdWNob3VcIDsKK+WAluiHoyA+IGtvdXNoaW5cIDsKK+aoquWlqiA+IG91ZGF0c3VcIDsKK+eZveWtkCA+IHNoaXJva29cIDsKK+W3qOWVhiA+IGt5b3Nob3VcIDsKK+WGjeWRiiA+IHNhaWtva3VcIDsKK+mnhemVtyA+IGVraWNob3VcIDsKK+i7jealvSA+IGd1bmdha3VcIDsKK+WxseiKiyA+IHlhbWFpbW9cIDsKK+W4neS6rCA+IHRlaWt5b3VcIDsKK+i8u+WwhCA+IGZ1a3VzaGFcIDsKK+WFpeWjsCA+IG5pc3Nob3VcIDsKK+i7veaNtyA+IGtlaXNob3VcIDsKK+WvhumbsiA+IG1pdHN1dW5cIDsKK+WCvuazqCA+IGtlaWNodXVcIDsKK+WFpeWiqCA+IGlyZXp1bWlcIDsKK+WvhumbhiA+IG1pc3NodXVcIDsKK+iDuOmWkyA+IGt5b3VrYW5cIDsKK+iJsuafhCA+IGlyb2dhcmFcIDsKK+iDjOmrmCA+IHNlaXRha2FcIDsKK+Wwhui7jSA+IHNob3VndW5cIDsKK+amguazgSA+IGdhaWt5b3VcIDsKK+WFqOWfnyA+IHplbicnaWtpXCA7CivoirPlv4MgPiBob3VzaGluXCA7CivlhaXloLQgPiBueXV1am91XCA7Civnm5fkvZwgPiB0b3VzYWt1XCA7CivlhYnlraYgPiBrb3VnYWt1XCA7CivlsbHohbkgPiBzYW5wdWt1XCA7CivlhYjlraYgPiBzZW5nYWt1XCA7CivohJrpg6ggPiBreWFrdWJ1XCA7Civlhazlm70gPiBrb3Vrb2t1XCA7CivlhaXln44gPiBueXV1am91XCA7Civog7TplbcgPiBkb3VuYWdhXCA7CivmqYvlj7AgPiBreW91ZGFpXCA7Civlg6fmnI0gPiBzb3VmdWt1XCA7CivpppjpppYgPiBrYWt1c2h1XCA7Civlho3li50gPiBzYWlzaG91XCA7CivohbnolLUgPiBmdWt1em91XCA7Civoia/mnZAgPiByeW91emFpXCA7CivnmYfmgKcgPiBrYW5zaG91XCA7CivkvY7poY0gPiB0ZWlnYWt1XCA7CivprZrmi5MgPiBneW90YWt1XCA7CivovJTlvLwgPiBob2hpdHN1XCA7Civlhajlm70gPiB6ZW5nb2t1XCA7CivlhaXlnZEgPiBueXV1a291XCA7CivovpvkuqUgPiBzaGluZ2FpXCA7Civoia/mm7ggPiByeW91c2hvXCA7CivlrrDpoJggPiBzYWlyeW91XCA7Civnmb3lpKogPiBzaGlyYXRhXCA7Civnmb3lpJwgPiBieWFrdXlhXCA7CivoubTniKogPiBrZWR6dW1lXCA7Civlt6jljKAgPiBreW9zaG91XCA7CivotaTpjIYgPiBha2FzYWJpXCA7CivlhaXlm6MgPiBueXV1ZGFuXCA7Civlt6XljZogPiBrb3VoYWt1XCA7CivlhYTlq4EgPiBhbml5b21lXCA7Civlt67liKUgPiBzYWJldHN1XCA7CivlhqrkuZcgPiBiZWtpam91XCA7Civou43mnI0gPiBndW5wdWt1XCA7Civlt6XljKAgPiBrb3VzaG91XCA7CivnlLLog4QgPiBrYXRjaHV1XCA7Civoh6rnmbogPiBqaWhhdHN1XCA7CivnlaLnq58gPiBoaWtreW91XCA7CivmoKHplrIgPiBrb3VldHN1XCA7Civnlo7nlaUgPiBzb3J5YWt1XCA7CivlsqnnpIEgPiBnYW5zaG91XCA7CivmoKHplbcgPiBrb3VjaG91XCA7CivlgrfmrY4gPiBzaG91dGFuXCA7CivoibLmlocgPiBpcm9idW1pXCA7Civnmoflm70gPiBrb3Vrb2t1XCA7CivpppbpoJggPiBzaHVyeW91XCA7CivotaTph5EgPiBha2FnYW5lXCA7CivpqZXogoYgPiBreW91c2hpXCA7CivlrabpvaIgPiBnYWt1cmVpXCA7CivlhbHlkIwgPiBreW91ZG91XCA7CivlrrXpl4cgPiB5b2l5YW1pXCA7CivlsI/oq5YgPiBzaG91cm9uXCA7CivlhYflpIkgPiBreW91aGVuXCA7CivkvZPplbcgPiB0YWljaG91XCA7CivlgZznlZkgPiB0ZWlyeXV1XCA7CivluILkuK0gPiBzaGljaHV1XCA7Civlsqnnn7MgPiBnYW5zZWtpXCA7CivohbnoirggPiBoYXJhZ2VpXCA7CivlhazlkYogPiBrb3Vrb2t1XCA7Civnmb3lnLAgPiBzaGlyb2ppXCA7CivmoLjphbggPiBrYWt1c2FuXCA7Civlha3lkIggPiByaWt1Z291XCA7CivoiLnmrYwgPiBmdW5hdXRhXCA7Civlr77osaEgPiB0YWlzaG91XCA7CivpqLDokL0gPiB0b3VyYWt1XCA7CivmpJznlqsgPiBrZW4nJ2VraVwgOwor6IWQ6J2VID4gZnVzaG9rdVwgOwor5a6a6aGNID4gdGVpZ2FrdVwgOwor5YGP55mWID4gaGVucGVraVwgOwor5bCP6KiIID4gc2hvdWtlaVwgOwor5YaF5YK3ID4gbmFpc2hvdVwgOwor5YW45YmHID4gdGVuc29rdVwgOwor5YWF5aGeID4ganV1c29rdVwgOwor5qOS57ieID4gYm91amltYVwgOwor5YWt5Y2BID4gcm9rdWp1dVwgOwor6LWk6YGTID4gc2VraWRvdVwgOwor5L216YCyID4gaGVpc2hpblwgOwor55Sf6IKJID4gc2VpbmlrdVwgOwor5qSN55quID4gc2hva3VoaVwgOwor5a6f6ZyAID4gaml0c3VqdVwgOwor5YWN5ZuaID4gbWVuc2h1dVwgOwor6aeG6YCQID4ga3VjaGlrdVwgOwor6aeQ6LuKID4gY2h1dXNoYVwgOwor5qCq6YeRID4ga2FidWtpblwgOwor6Ieq546JID4gamlneW9rdVwgOwor5a6/6YqtID4geWFkb3NlblwgOwor6aaW6ZW3ID4gc2h1Y2hvdVwgOwor6IW56IOMID4gZnVrdWhhaVwgOwor5YWo5YudID4gemVuc2hvdVwgOwor5p+x6aCtID4gY2h1dXRvdVwgOwor55eb5qOSID4gdHN1dWJvdVwgOwor55eF5q27ID4gYnlvdXNoaVwgOwor5YKN5rWBID4gYm91cnl1dVwgOwor5bCE6KeSID4gc2hha2FrdVwgOwor5a6i6ZaTID4ga3lha3VtYVwgOwor5bel5L2cID4ga291c2FrdVwgOwor5YSA5byPID4gZ2lzaGlraVwgOwor6LuK5o6MID4gc2hhc2hvdVwgOwor55Sw57SzID4gZGVuc2hpblwgOwor5YKN5rOoID4gYm91Y2h1dVwgOwor5a++6KizID4gdGFpeWFrdVwgOwor5YW85L+uID4ga2Vuc2h1dVwgOwor6LWk6LuNID4gc2VraWd1blwgOwor6ISC6LqrID4gYWJ1cmFtaVwgOwor5bOh5rm+ID4ga3lvdXdhblwgOwor6LuN5ouhID4gZ3Vua2FrdVwgOwor55m+5ZGzID4gaHlha3VtaVwgOwor5a++6KeSID4gdGFpa2FrdVwgOwor5p+x6Z2iID4gY2h1dW1lblwgOwor5beo5LmzID4ga3lvbnl1dVwgOwor5YWs5YWxID4ga291a3lvdVwgOwor5YWx5YONID4ga3lvdWRvdVwgOwor55S7562GID4gZ2FoaXRzdVwgOwor5L6b6KanID4ga3lvdXJhblwgOwor5a+46KmVID4gc3VucHlvdVwgOwor5YWx5YKsID4ga3lvdXNhaVwgOwor5YaF5LitID4gdWNoaWp1dVwgOwor5a656YePID4geW91cnlvdVwgOwor6IWr6IS5ID4gc2h1Y2hvdVwgOwor5a+G6YCaID4gbWl0dHN1dVwgOwor6Iif5q2MID4gZnVuYXV0YVwgOwor5YC255m6ID4gZ3VoYXRzdVwgOwor5YW85Lu7ID4ga2VuJyduaW5cIDsKK+WFrOWDlSA+IGtvdWJva3VcIDsKK+WFpeWGpiA+IG55dXVrb3VcIDsKK+S9k+mHjyA+IHRhaXJ5b3VcIDsKK+WFrOWCtyA+IGtvdXNob3VcIDsKK+Wul+mWgCA+IHNodXVtb25cIDsKK+iHhueXhSA+IG9rdWJ5b3VcIDsKK+WFqOWEqiA+IHplbicneXV1XCA7Civou73lsJEgPiBrZWlzaG91XCA7CivlhaXlhZogPiBueXV1dG91XCA7CivkvpHop7QgPiB5dXVzaG91XCA7CivlgY/ni60gPiBoZW5reW91XCA7CivnlaXnlLsgPiByeWFrdWdhXCA7Civkv7jntaYgPiBob3VreXV1XCA7Civlrr/pgYsgPiBzaHVrdXVuXCA7CivoiLnmnb8gPiBmdW5haXRhXCA7Civkv4roi7EgPiBzaHVuJydlaVwgOwor6Iqz5aKoID4gaG91Ym9rdVwgOwor5YGP54uCID4gaGVua3lvdVwgOwor55m+5YyBID4gaHlha3VtZVwgOwor55Sf57W5ID4gc3V6dXNoaVwgOwor6Luf5byxID4gbmFuamFrdVwgOwor5LyR6aSoID4ga3l1dWthblwgOwor5a+G6Ly4ID4gbWl0c3V5dVwgOwor5YWa5YmHID4gdG91c29rdVwgOwor5L+u57mVID4gc2h1dXplblwgOwor5bCx6IiqID4gc2h1dWtvdVwgOwor5LyR6aSKID4ga3l1dXlvdVwgOwor5L6L6Ki8ID4gcmVpc2hvdVwgOwor5qa05by+ID4gcnl1dWRhblwgOwor5bGx56mNID4gc2Fuc2VraVwgOwor6Ii25p2lID4gaGFrdXJhaVwgOwor5bGx56icID4gc2FucnlvdVwgOwor6LWk6LKnID4gc2VraWhpblwgOwor5L+u57e0ID4gc2h1dXJlblwgOwor6Iux5YKRID4gZWlrZXRzdVwgOwor5qW15pqRID4gZ29rdXNob1wgOwor55eF5qOfID4gYnlvdXRvdVwgOwor6IKM6aqoID4ga2lrb3RzdVwgOwor6Imv5oCnID4gcnlvdXNlaVwgOwor6Laz6Iq4ID4gYXNoaWdlaVwgOwor6IW457eaID4gY2hvdXNlblwgOwor5YOn5b2iID4gc291Z3lvdVwgOwor6Lyq5ZSxID4gcmluc2hvdVwgOwor5YGJ54mpID4gZXJhbW9ub1wgOwor55m95YiDID4gaGFrdWppblwgOwor5YWs5LyRID4ga291a3l1dVwgOwor5L6u6JSRID4gYnViZXRzdVwgOwor6Iul5YWaID4gd2FrYXRvdVwgOwor55eF5qC5ID4gYnlvdWtvblwgOwor5Lya6ZuGID4ga2Fpc2h1dVwgOwor5bGR57O4ID4ga3V6dWl0b1wgOwor5qKf572qID4ga3lvdXphaVwgOwor6Iul5YOnID4gd2FrYXpvdVwgOwor55m95YW1ID4gaGFrdWhlaVwgOwor5YWI5YudID4gc2Vuc2hvdVwgOwor5L2O6YCfID4gdGVpc29rdVwgOwor5YWl5LyaID4gbnl1dWthaVwgOwor5bGR57GzID4ga3V6dW1haVwgOwor6Lu95aaZID4ga2VpbXlvdVwgOwor6Ieq5ruFID4gamltZXRzdVwgOwor5LyR6Zu7ID4ga3l1dWRlblwgOwor5bO25qC5ID4gc2hpbWFuZVwgOwor5a2m6aKoID4gZ2FrdWZ1dVwgOwor5YO15bGNID4ga3lvbnNoaVwgOwor5YWr5LiBID4gaGF0Y2hvdVwgOwor5YWI5Yi7ID4gc2Vua29rdVwgOwor6IKJ6aWFID4gbmlrdW1hblwgOwor5L216KqtID4gaGVpZG9rdVwgOwor6aas6LezID4gdW1hdG9iaVwgOwor6Lui5bGeID4gdGVuem9rdVwgOwor6LWk6KqgID4gc2VraXNlaVwgOwor6Imv5birID4gcnlvdXNoaVwgOwor5Lya6ZW3ID4ga2FpY2hvdVwgOwor5YWH5YiDID4ga3lvdWppblwgOwor5a6a6YePID4gdGVpcnlvdVwgOwor6Imv5belID4gcnlvdWtvdVwgOwor5qC86KiAID4ga2FrdWdlblwgOwor6aeB6KuWID4gYmFrdXJvblwgOwor5YWD5Ye2ID4gZ2Vua3lvdVwgOwor6IKJ6aGeID4gbmlrdXJ1aVwgOwor6Ie85q2vID4ga3l1dXNoaVwgOwor55a85pyoID4gaGlpcmFnaVwgOwor6Lui5a6FID4gdGVudGFrdVwgOwor5qCE6YGUID4gZWl0YXRzdVwgOwor6Lui5a2mID4gdGVuZ2FrdVwgOwor55m65L+hID4gaGFzc2hpblwgOwor5LyR6ZaRID4ga3l1dWthblwgOwor6Iie5puyID4gYnVreW9rdVwgOwor6Ieq5rS7ID4gamlrYXRzdVwgOwor5L+456aEID4gaG91cm9rdVwgOwor5L+456W/ID4gaG91cm9rdVwgOwor6Iul5Lq6ID4gd2Frb3Vkb1wgOwor5qW95omNID4gZ2FrdXNhaVwgOwor5a+G6K2wID4gbWl0c3VnaVwgOwor6IiI5qWtID4ga291Z3lvdVwgOwor5YWD5YWHID4gZ2Vua3lvdVwgOwor6aaZ6LuKID4ga3lvdXNoYVwgOwor5L+X57SvID4gem9rdXJ1aVwgOwor5a2m6ZqbID4gZ2FrdXNhaVwgOwor5YGc5rOKID4gdGVpaGFrdVwgOwor5qWK5p+zID4geW91cnl1dVwgOwor55m95Lq6ID4gaGFrdWppblwgOwor5L+h566hID4gc2hpbmthblwgOwor5bCP6IiFID4ga29qdXV0b1wgOwor6Ieq5rG6ID4gamlrZXRzdVwgOwor55m+5LqLID4gaHlha3VqaVwgOwor5bKp5ry/ID4gZ2Fuc2hvdVwgOwor55CG6auqID4gcmloYXRzdVwgOwor5a+G6KqeID4gbWl0c3Vnb1wgOwor5YWG5YCZID4gY2hvdWtvdVwgOwor6IO46KWfID4ga3lvdWtpblwgOwor6auY5pyoID4ga291Ym9rdVwgOwor5bC/566hID4gbnlvdWthblwgOwor6ayx5bGIID4gdWtrdXRzdVwgOwor6LuN5bGeID4gZ3Vuem9rdVwgOwor55eb5oakID4gdHN1dWZ1blwgOwor5bGx55WqID4geWFtYWJhblwgOwor5qW95oOzID4gZ2FrdXNvdVwgOwor6Ieq5q66ID4gamlzYXRzdVwgOwor5bCP6ISzID4gc2hvdW5vdVwgOwor5YSq5YudID4geXV1c2hvdVwgOwor6ISx6Ie8ID4gZGFra3l1dVwgOwor6aaW6LazID4gc2h1c29rdVwgOwor6ISx6IetID4gZGFzc2h1dVwgOwor6LuN5bCGID4gZ3Vuc2hvdVwgOwor5YK35oK0ID4gc2hvdXN1aVwgOwor5YGP5rWBID4gaGVucnl1dVwgOwor6ISz6IacID4gbm91bWFrdVwgOwor5a+S6KGMID4ga2FuZ3lvdVwgOwor5YWI5Lu7ID4gc2VuJyduaW5cIDsKK+Wwj+iDniA+IHNob3Vob3VcIDsKK+eXm+aEnyA+IHRzdXVrYW5cIDsKK+ePvumrmCA+IGdlbmRha2FcIDsKK+Wwj+iDhiA+IHNob3V0YW5cIDsKK+iHo+awkSA+IHNoaW5taW5cIDsKK+i7jeWuuSA+IGd1bicneW91XCA7CivprLzlqYYgPiBvbmliYWJhXCA7CivkvZzoqakgPiBzYWt1c2hpXCA7CivkvZzoqZ4gPiBzYWt1c2hpXCA7CivohLHohbggPiBkYXRjaG91XCA7CivlroXphY0gPiB0YWt1aGFpXCA7Civou43lraYgPiBndW5nYWt1XCA7CivmoKHoqLsgPiBrb3VjaHV1XCA7CivkvJHpjJggPiBreXV1c3VpXCA7CivnlLDnlZEgPiBkZW5wYXRhXCA7Civlgrflv7AgPiBzaG91c3VpXCA7CivlsJHogIUgPiBzaG91c2hhXCA7Civnl5vmgaggPiB0c3V1a29uXCA7Civoh7PmpbUgPiBzaGlnb2t1XCA7CivmpbXmgqogPiBnb2t1YWt1XCA7CivlronpgLggPiBhbicnaXRzdVwgOwor5L2T6Kq/ID4gdGFpY2hvdVwgOwor5YO75ZywID4gaGVraWNoaVwgOwor5YO75ZyoID4gaGVraXphaVwgOwor5a6a6LehID4gam91c2VraVwgOwor6auY5pWZID4ga291a3lvdVwgOwor5qWt5oWLID4gZ3lvdXRhaVwgOwor6Lyq5L2cID4gcmluc2FrdVwgOwor55eb5b+rID4gdHN1dWthaVwgOwor5bKp5rOiID4gaXdhbmFtaVwgOwor5bO75ouSID4gc2h1bmt5b1wgOwor5L2O6Kq/ID4gdGVpY2hvdVwgOwor6Imv5aa7ID4gcnlvdXNhaVwgOwor5Yi744CFID4ga29ra29rdVwgOwor6IeG5risID4gb2t1c29rdVwgOwor5L2c6KO9ID4gc2FrdXNlaVwgOwor55Sj55ebID4gc2FudHN1dVwgOwor6IG36ZqOID4gc2hva2thaVwgOwor6Imv5aW9ID4gcnlvdWtvdVwgOwor55Wd5rqdID4gdW5lbWl6b1wgOwor5qW15b6uID4ga3lva3ViaVwgOwor5p6c6aOfID4ga2FzaG9rdVwgOwor5qGR6IuXID4gc291YnlvdVwgOwor6Iac54q2ID4gbWFrdWpvdVwgOwor55SY55quID4gYW1ha2F3YVwgOwor6LWk6JWqID4gYWtha2FidVwgOwor5bGx54qsID4geWFtYWludVwgOwor5L+K56ulID4gc2h1bmRvdVwgOwor5qW95birID4gZ2FrdXNoaVwgOwor5qGR6ImyID4ga3V3YWlyb1wgOwor6IWV56ugID4gd2Fuc2hvdVwgOwor6aas6KGTID4gYmFqdXRzdVwgOwor55eF5oWLID4gYnlvdXRhaVwgOwor6IWV56uLID4gdWRldGF0ZVwgOwor5p+p6LuKID4ga3l1dXNoYVwgOwor6IW555mSID4gaGFyYWlzZVwgOwor6Iie5omHID4gbWFpb3VnaVwgOwor5YOF5bCRID4ga2luc2hvdVwgOwor5a+u6IiOID4gcnlvdXNoYVwgOwor5qW15bqmID4ga3lva3Vkb1wgOwor5YGV5qW9ID4ga2FpcmFrdVwgOwor55CD6Z2iID4ga3l1dW1lblwgOwor5bCP57eoID4gc2hvdWhlblwgOwor6Iqz5L+hID4gaG91c2hpblwgOwor55eF5oKjID4gYnlvdWthblwgOwor55S754S2ID4ga2FrdXplblwgOwor55CD6Zu7ID4ga3l1dWRlblwgOwor5a6i6KqeID4ga3lha3Vnb1wgOwor5p6V6aCtID4gY2hpbnRvdVwgOwor6Ii55bmFID4gc2VucHVrdVwgOwor5qW15bemID4ga3lva3VzYVwgOwor55Oi566qID4gaHlvdXRhblwgOwor6Iq45LqLID4gZ2VpZ290b1wgOwor5qSN5qi5ID4gc2hva3VqdVwgOwor5a6f6KmxID4gaml0c3V3YVwgOwor55a+5oKjID4gc2hpa2thblwgOwor6aqo5qC8ID4ga29ra2FrdVwgOwor5qGD6ImyID4gbW9tb2lyb1wgOwor5qSc5qChID4ga2VuZ3lvdVwgOwor5a6f6Ki8ID4gamlzc2hvdVwgOwor5LuK6aCDID4gaW1hZ29yb1wgOwor6IWw55ebID4geW91dHN1dVwgOwor5bCP57KSID4ga290c3VidVwgOwor5qWt5birID4gd2F6YXNoaVwgOwor6Iqx5LujID4gaGFuYWRhaVwgOwor5a6i6KazID4ga3lha2thblwgOwor5L+X55y8ID4gem9rdWdhblwgOwor5L2/6IejID4gc2hpc2hpblwgOwor5a+S6I+KID4ga2FuZ2lrdVwgOwor5LyR6LyJID4ga3l1dXNhaVwgOwor5bC755uuID4gc2hpcmltZVwgOwor5a6a6KmVID4gdGVpaHlvdVwgOwor5LyR6LuiID4ga3l1dXRlblwgOwor55eF5byKID4gYnlvdWhlaVwgOwor5YK35a6zID4gc2hvdWdhaVwgOwor5a6a6KizID4gdGVpeWFrdVwgOwor6LuN5Zu9ID4gZ3Vua29rdVwgOwor6a2U5YqbID4gbWFyeW9rdVwgOwor5qSc5p2fID4ga2Vuc29rdVwgOwor5bGF55WZID4ga3lvcnl1dVwgOwor6Lu95YK3ID4ga2Vpc2hvdVwgOwor6aSo6ZW3ID4ga2FuY2hvdVwgOwor5bKp5qOaID4gaXdhZGFuYVwgOwor5LuP6ZmAID4gYnV0c3VkYVwgOwor5a6z6JmrID4gZ2FpY2h1dVwgOwor5bCx55ygID4gc2h1dW1pblwgOwor6ISH6IO9ID4gd2FraW5vdVwgOwor5YSE5YWGID4gb2t1Y2hvdVwgOwor55eF5bejID4gYnlvdXNvdVwgOwor6LWk6IaaID4gYWthaGFkYVwgOwor6LOe6YeRID4gc2hvdWtpblwgOwor5bCP56ulID4ga293YXBwYVwgOwor5LuP6ZajID4gYnVra2FrdVwgOwor5L+Q55m6ID4gcmloYXRzdVwgOwor5LuP6ZaTID4gYnV0c3VtYVwgOwor6LWk6IW5ID4gYWthaGFyYVwgOwor6Lu95L+hID4ga2Vpc2hpblwgOwor6IWO55+zID4gamluc2VraVwgOwor5bO25bqBID4gdG91Y2hvdVwgOwor6Imv5ZOBID4gcnlvdWhpblwgOwor5L+X55SoID4gem9rdXlvdVwgOwor6IOD6KKLID4gaWJ1a3Vyb1wgOwor6Lu95L27ID4ga2VpY2hvdVwgOwor5bO75ba6ID4gc2h1bnJlaVwgOwor5bO75bauID4gc2h1bmtlblwgOwor5bm044CFID4gbmVuJyduZW5cIDsKK+WEkuS7jyA+IGp1YnV0c3VcIDsKK+mtheWKmyA+IG1pcnlva3VcIDsKK+mrmOW+syA+IGtvdXRva3VcIDsKK+iyuOmWkyA+IGthc2hpbWFcIDsKK+iDuOiHhiA+IGt5b3Vva3VcIDsKK+mtmuS/oSA+IGd5b3NoaW5cIDsKK+iFleeZvSA+IHdhbnBha3VcIDsKK+i1pOiCjCA+IGFrYWhhZGFcIDsKK+iDuOiFuiA+IGt5b3VzZW5cIDsKK+S6rOmiqCA+IGt5b3VmdXVcIDsKK+iDuOiFlCA+IGt5b3Vrb3VcIDsKK+alveWkqSA+IHJha3V0ZW5cIDsKK+iJr+WPiyA+IHJ5b3V5dXVcIDsKK+iEseepgCA+IGRha2tva3VcIDsKK+ePremVtyA+IGhhbmNob3VcIDsKK+S8neiqpiA+IGRlbnNob3VcIDsKK+WwiuensCA+IHNvbnNob3VcIDsKK+WBg+aciCA+IGVuZ2V0c3VcIDsKK+S/rueFiSA+IHNodXVyZW5cIDsKK+WvvuetliA+IHRhaXNha3VcIDsKK+Wwj+ekviA+IHNob3VzaGFcIDsKK+alveWjqyA+IGdha3VzaGlcIDsKK+WAn+asviA+IHNoYWtrYW5cIDsKK+alveWjhyA+IGdha3VkYW5cIDsKK+S+v+ebiiA+IGJlbicnZWtpXCA7CivkvJroqq0gPiBrYWlkb2t1XCA7Civmo7rmobYgPiBrYW4nJ29rZVwgOwor6LW357WQID4ga2lrZXRzdVwgOwor6Iiq5a6ZID4ga291Y2h1dVwgOwor5L2O6JC9ID4gdGVpcmFrdVwgOwor55eF5a6zID4gYnlvdWdhaVwgOwor5YGJ5pa5ID4gZXJhZ2F0YVwgOwor5qKf54ybID4ga3lvdW1vdVwgOwor55WM5qiZID4ga2FpaHlvdVwgOwor6LOD6YqtID4gY2hpbnNlblwgOwor5L2e6IejID4gbmVpc2hpblwgOwor5L2Z6ImyID4geW9zaG9rdVwgOwor6aOy6aOfID4gaW5zaG9rdVwgOwor5YOa5Y+LID4gcnlvdXl1dVwgOwor5LyR6KybID4ga3l1dWtvdVwgOwor6LOD6YqAID4gY2hpbmdpblwgOwor5a2m6LOHID4gZ2FrdXNoaVwgOwor55S65rCRID4gY2hvdW1pblwgOwor5YK+5Zu9ID4ga2Vpa29rdVwgOwor5Lqk6Z+/ID4ga291a3lvdVwgOwor6Imv5YmkID4gcnlvdXphaVwgOwor5L+C55WZID4ga2Vpcnl1dVwgOwor55S35rCXID4gb3Rva29naVwgOwor5bCP55+lID4gc2hvdWNoaVwgOwor5a++56ewID4gdGFpc2hvdVwgOwor6LOD6YeRID4gY2hpbmdpblwgOwor5qWT5bGeID4gZnV1em9rdVwgOwor6IOD6JasID4gaWd1c3VyaVwgOwor5LuZ6YO3ID4gc2Vua3lvdVwgOwor5qCX6ImyID4ga3VyaWlyb1wgOwor6LO86KqtID4ga291ZG9rdVwgOwor6LuK5YqbID4gc2hhcmlraVwgOwor5qW95ZujID4gZ2FrdWRhblwgOwor6Iel5omAID4gZnVzaGlkb1wgOwor5L2T6IetID4gdGFpc2h1dVwgOwor6aas6ISaID4gYmFreWFrdVwgOwor5L6N56uLID4gamlyaXRzdVwgOwor5a+456eSID4gc3VuYnlvdVwgOwor55Sy5q67ID4ga291a2FrdVwgOwor6LW3562GID4ga2loaXRzdVwgOwor6aeQ57GzID4gY2h1dWJlaVwgOwor5Lm+6a2aID4gaG9zaGl1b1wgOwor6Iez5oClID4gc2hpa3l1dVwgOwor6IKd6KaBID4ga2FuJyd5b3VcIDsKK+eUn+a2ryA+IHNob3VnYWlcIDsKK+S8muihhiA+IGthaXNodXVcIDsKK+ajruaelyA+IHNoaW5yaW5cIDsKK+i1pOe1hCA+IGFrYWd1bWlcIDsKK+i7ouS7uyA+IHRlbicnbmluXCA7CivmoLzntI0gPiBrYWt1bm91XCA7Civpq5jlsJogPiBrb3VzaG91XCA7CivlsI/nmaogPiBrb3NoYWt1XCA7CivotaTntJkgPiBha2FnYW1pXCA7CivpqZrmrY4gPiBreW91dGFuXCA7Civotbfnq4sgPiBraXJpdHN1XCA7CivlgrflmIYgPiBzaG91dGFuXCA7CivkvZzogIUgPiBzYWt1c2hhXCA7Civpo5/ppIwgPiBzaG9rdWppXCA7CivohbjmuoAgPiBjaG91bWFuXCA7Civku7LosrcgPiBuYWthZ2FpXCA7Civnl4XlpIkgPiBieW91aGVuXCA7Civlg6XlgJYgPiBneW91a291XCA7Civos6DosqwgPiBiYWlzZWtpXCA7Civlg6fkv5cgPiBzb3V6b2t1XCA7Civos57os5sgPiBzaG91c2FuXCA7CivlsIrnmocgPiBzb24nJ25vdVwgOwor546E6bqmID4gZ2VuYmFrdVwgOwor6ISI566hID4gbXlha2thblwgOwor5p6i6Lu4ID4gc3V1amlrdVwgOwor6Iie5aerID4gbWFpaGltZVwgOwor55eb5ZiGID4gdHN1dXRhblwgOwor5bCo54qsID4gbXVrdWludVwgOwor5qOf5qKBID4gdG91cnlvdVwgOwor5a626IG3ID4ga2FzaG9rdVwgOwor5qC557KSID4ga29ucnl1dVwgOwor5bGg5q66ID4gdG9zYXRzdVwgOwor6LOK6LuNID4gem9rdWd1blwgOwor6IW45rayID4gY2hvdWVraVwgOwor6IiO5a6FID4gc2hhdGFrdVwgOwor5a6457+wID4gc2hpbmthblwgOwor6Lqr5ZG9ID4gc2hpbm1laVwgOwor55ar5a2mID4gZWtpZ2FrdVwgOwor5bCP55S6ID4ga29tYWNoaVwgOwor5bCP55S3ID4ga29vdG9rb1wgOwor6IWw5rmvID4ga29zaGl5dVwgOwor5bCE55qEID4gc2hhdGVraVwgOwor5bCP55SoID4gc2hvdXlvdVwgOwor6ISz55eHID4gbm91c2hvdVwgOwor6ISz55eFID4gbm91YnlvdVwgOwor5bCP55SfID4gc2hvdXNlaVwgOwor6Ieq5b6LID4gamlyaXRzdVwgOwor5bGx5qSSID4gc2Fuc2hvdVwgOwor5L2z56+AID4ga2FzZXRzdVwgOwor5L+u5rOVID4gc2h1dWhvdVwgOwor5LuK6YCxID4ga29uc2h1dVwgOwor6IGW6YCxID4gc2Vpc2h1dVwgOwor5L2O57+8ID4gdGVpeW9rdVwgOwor6Imy5LqLID4gaXJvZ290b1wgOwor5p+/6ImyID4ga2FraWlyb1wgOwor55Kw56SBID4ga2Fuc2hvdVwgOwor55Sw5qW9ID4gZGVuZ2FrdVwgOwor5LuK6L+EID4gaW1hbWFkZVwgOwor5Lm+6aOvID4gaG9zaGlpaVwgOwor6Imv5Lq6ID4gcnlvdWppblwgOwor5a6/57iBID4gc2h1a3VlblwgOwor6Iej5b6TID4gc2hpbmp1dVwgOwor5YG05bCEID4gc29rdXNoYVwgOwor6IW55rC0ID4gZnVrdXN1aVwgOwor6Ieo5bqKID4gcmluc2hvdVwgOwor6LeL5riJID4gYmFzc2hvdVwgOwor5L6154qvID4gc2hpbnBhblwgOwor5a++55eHID4gdGFpc2hvdVwgOwor5Lmz6aaZID4gbnl1dWtvdVwgOwor5Luu6KqsID4ga2FzZXRzdVwgOwor5bCC55SoID4gc2VuJyd5b3VcIDsKK+eUuuadkSA+IGNob3Vzb25cIDsKK+WAkuacqCA+IHRvdWJva3VcIDsKK+WBj+W/gyA+IGhlbnNoaW5cIDsKK+iHqOW4rSA+IHJpbnNla2lcIDsKK+iznuipniA+IHNob3VzaGlcIDsKK+aetuiorSA+IGthc2V0c3VcIDsKK+S/ruatoyA+IHNodXVzZWlcIDsKK+acqOmtmiA+IG1va3VneW9cIDsKK+iBtOismyA+IGNob3Vrb3VcIDsKK+WCrOWRiiA+IHNhaWtva3VcIDsKK+mrmOWjsCA+IHRha2Fnb2VcIDsKK+S9teensCA+IGhlaXNob3VcIDsKK+S6pOmMryA+IGtvdXNha3VcIDsKK+amguWJhyA+IGdhaXNva3VcIDsKK+S7ruiorSA+IGthc2V0c3VcIDsKK+iAkOmchyA+IHRhaXNoaW5cIDsKK+aghOiBtyA+IGVpc2hva3VcIDsKK+S7j+i3oSA+IGJ1c3Nla2lcIDsKK+S+m+eUqCA+IGt5b3V5b3VcIDsKK+iyq+mAmiA+IGthbnRzdXVcIDsKK+iBlui5nyA+IHNlaXNla2lcIDsKK+WztuWbvSA+IHRvdWdva3VcIDsKK+WwiueOiyA+IHNvbicnbm91XCA7CivnlKPmpa0gPiBzYW5neW91XCA7CivohbDmsJcgPiBrb3NoaWtlXCA7Civou4rkuK0gPiBzaGFjaHV1XCA7Civku7DoppYgPiBneW91c2hpXCA7CivlgrflibUgPiBzaG91c291XCA7Civou4rkuKEgPiBzaGFyeW91XCA7Civpo5/plpMgPiBzaG9ra2FuXCA7Civku67opqogPiBrYXJpb3lhXCA7CivogrLoi5cgPiBpa3VieW91XCA7Civlrpjog70gPiBrYW4nJ25vdVwgOwor6LOD6LK4ID4gY2hpbnRhaVwgOwor5bKh5oOaID4gb2thYm9yZVwgOwor6IGW6LehID4gc2Vpc2VraVwgOwor5p6d6LGGID4gZWRhbWFtZVwgOwor5p2R6ZW3ID4gc29uY2hvdVwgOwor6IG06KixID4gY2hvdWt5b1wgOwor5pyd6a6uID4gY2hvdXNlblwgOwor55Sf5qWtID4gbmFyaXdhaVwgOwor5Luj6KqtID4gZGFpZG9rdVwgOwor54++6LGhID4gZ2Vuc2hvdVwgOwor5Lmz6aCtID4gbnl1dXRvdVwgOwor5bCP54mHID4gc2hvdWhlblwgOwor5a6f57+SID4gamlzc2h1dVwgOwor5Luy6KOBID4gY2h1dXNhaVwgOwor5bCP54iqID4ga29kenVtZVwgOwor55aO5a+GID4gc29taXRzdVwgOwor6IG06KejID4gY2hvdWthaVwgOwor6LKn6L6yID4gaGluJydub3VcIDsKK+S7o+iouiA+IGRhaXNoaW5cIDsKK+iBtOimliA+IGNob3VzaGlcIDsKK+iFuuanmCA+IHNlbicneW91XCA7CivlsZ7moLwgPiB6b2trYWt1XCA7CivlgrflhbUgPiBzaG91aGVpXCA7Civmpb3lhbggPiBnYWt1dGVuXCA7CivnlLvmlbAgPiBrYWt1c3V1XCA7CivkvY7ntJogPiB0ZWlreXV1XCA7Civohrrmh7IgPiB5b3VjaG91XCA7CivlgI3ml6cgPiBiYWlreXV1XCA7Civpq5jlnKcgPiBrb3VhdHN1XCA7Civogp3okYkgPiBrYW4nJ3lvdVwgOwor55S65pS/ID4gY2hvdXNlaVwgOwor5L+u5qWtID4gc2h1Z3lvdVwgOwor5qW15YiRID4ga3lva2tlaVwgOwor5bKp5bqKID4gZ2Fuc2hvdVwgOwor5a+u55SfID4gcnlvdXNlaVwgOwor55eF5ZCNID4gYnlvdW1laVwgOwor5p2x6YCyID4gdG91c2hpblwgOwor5qCh56ugID4ga291c2hvdVwgOwor5qK25qOSID4ga2FqaWJvdVwgOwor5qW15YagID4ga3lva2thblwgOwor5qW15YaFID4gZ29rdW5haVwgOwor55eF5Y+LID4gYnlvdXl1dVwgOwor6aqw5a2QID4gc2Fpa29yb1wgOwor5bKh5byVID4gb2thaGlraVwgOwor5YK05YOCID4gc2VtdXNoaVwgOwor5YGc5a2mID4gdGVpZ2FrdVwgOwor5pyx6Z6YID4gc2h1emF5YVwgOwor5a6f57i+ID4gamlzc2VraVwgOwor55eF5Y6fID4gYnlvdWdlblwgOwor5qW15YWJID4ga3lva2tvdVwgOwor5Lqo6YCaID4ga291dHN1dVwgOwor5pys6aCYID4gaG9ucnlvdVwgOwor5Lq66LehID4gaGl0b2F0b1wgOwor5LuY6KitID4gZnVzZXRzdVwgOwor6aaW57SaID4gc2h1a3l1dVwgOwor5L6b54mpID4ga3Vtb3RzdVwgOwor5bO75Y6zID4gc2h1bmdlblwgOwor6LGh6ZmQID4gc2hvdWdlblwgOwor6Lqr5L2TID4gc2hpbnRhaVwgOwor6Iez5aaZID4gc2hpbXlvdVwgOwor55SY5qCXID4gYW1hZ3VyaVwgOwor5LuV6KizID4gc2hpd2FrZVwgOwor6IiI5Zu9ID4ga291a29rdVwgOwor5Lqk6YCaID4ga291dHN1dVwgOwor6LqN5YuVID4geWFrdWRvdVwgOwor5Luj6KGoID4gZGFpaHlvdVwgOwor5Lqi6YCyID4ga291c2hpblwgOwor55eF5YuiID4gYnlvdXNlaVwgOwor5qOy5oGvID4gc2Vpc29rdVwgOwor6IOM57SEID4gaGFpeWFrdVwgOwor5a6556mNID4geW91c2VraVwgOwor5LuP6KqeID4gYnV0c3Vnb1wgOwor6IWw5qSOID4geW91dHN1aVwgOwor6Lqr5LujID4gc2hpbmRhaVwgOwor546J6Z+zID4gZ3lva3VvblwgOwor5a+T55uuID4gZ3V1bW9rdVwgOwor5p2l6YCxID4gcmFpc2h1dVwgOwor6Ii55YG0ID4gc2Vuc29rdVwgOwor5pys6ZyHID4gaG9uc2hpblwgOwor5L2T56mNID4gdGFpc2VraVwgOwor5pyo6Z20ID4ga2lndXRzdVwgOwor6aaZ566xID4ga291YmFrb1wgOwor5LyR6IiqID4ga3l1dWtvdVwgOwor5pyd6aKoID4gYXNha2F6ZVwgOwor5a++54WnID4gdGFpc2hvdVwgOwor6Ii35YG0ID4gZ2Vuc29rdVwgOwor5qC555ikID4ga29ucnl1dVwgOwor5bKp5bGxID4gaXdheWFtYVwgOwor5qW95Lq6ID4gZ2FrdWppblwgOwor6LGG6aGeID4gbWFtZXJ1aVwgOwor5a6Y57WmID4ga2Fua3l1dVwgOwor546J6ZyyID4gZ3lva3Vyb1wgOwor6Lqr5LiKID4gc2hpbmpvdVwgOwor6Ii55L6/ID4gZnVuYWJpblwgOwor5YKs5L+DID4gc2Fpc29rdVwgOwor55Sf5pawID4gc2Vpc2hpblwgOwor6ISz5ry/ID4gbm91c2hvdVwgOwor6IS55rqAID4gY2hvdW1hblwgOwor6LaF54S2ID4gY2hvdXplblwgOwor5Lyd57+SID4gZGVuc2h1dVwgOwor55WZ5bm0ID4gcnl1dW5lblwgOwor6LSF6IKJID4gemVpbmlrdVwgOwor6auY5Y+wID4gdGFrYWRhaVwgOwor5bKp5a6kID4gaXdhbXVyb1wgOwor5L+15pWwID4gaHlvdXN1dVwgOwor5pyU6aKoID4gc2FrdWZ1dVwgOwor5a2m6Iq4ID4gZ2FrdWdlaVwgOwor6aaW56ugID4gc2h1c2hvdVwgOwor55S35omLID4gb3Rva29kZVwgOwor5qKF5q+SID4gYmFpZG9rdVwgOwor5qSN5a2XID4gc2hva3VqaVwgOwor5pyd6Z2EID4gYXNhbW95YVwgOwor5bGI5pyNID4ga3VwcHVrdVwgOwor5pyd6ZynID4gYXNhZ2lyaVwgOwor5L+h5p2hID4gc2hpbmpvdVwgOwor57+w6ZW3ID4ga2FuY2hvdVwgOwor6IKM6ImyID4gaGFkYWlyb1wgOwor5a2m6IiOID4gZ2FrdXNoYVwgOwor5L+h5pybID4gc2hpbmJvdVwgOwor5L+u5pW0ID4gc2h1dXNlaVwgOwor5L+h5pu4ID4gc2hpbnNob1wgOwor5qW15LiKID4gZ29rdWpvdVwgOwor55eH5YCZID4gc2hvdWtvdVwgOwor5LyR6ICVID4ga3l1dWtvdVwgOwor6Ii55LitID4gc2VuY2h1dVwgOwor5Ly4562LID4gc2hpbmtpblwgOwor6IKJ6ImyID4gbmlrdWlyb1wgOwor5L+u5pS5ID4gc2h1dWthaVwgOwor5bK45aOBID4gZ2FucGVraVwgOwor5a6M57SNID4ga2FuJydub3VcIDsKK+S6uuiovCA+IG5pbnNob3VcIDsKK+S5vumFqiA+IGthbnJha3VcIDsKK+eXh+S+iyA+IHNob3VyZWlcIDsKK+eVpeWtlyA+IHJ5YWt1amlcIDsKK+iGqOW8tSA+IGJvdWNob3VcIDsKK+Wxi+aVtyA+IHlhc2hpa2lcIDsKK+S/ruaSsCA+IHNodXVzZW5cIDsKK+S8j+e9qiA+IGZ1a3V6YWlcIDsKK+WvhueUuyA+IG1pdHN1Z2FcIDsKK+eXheS9kyA+IGJ5b3V0YWlcIDsKK+iAg+mHjyA+IGtvdXJ5b3VcIDsKK+mkoeicnCA+IGFubWl0c3VcIDsKK+WumOeqryA+IGthbicneW91XCA7Civku5TomasgPiBzaGljaHV1XCA7CivogL3oqq0gPiB0YW5kb2t1XCA7CivlsI/msLQgPiBzaG91c3VpXCA7CivogonohasgPiBuaWt1c2h1XCA7Civkv5fmm7ggPiB6b2t1c2hvXCA7CivogIHphpwgPiByb3VzaHV1XCA7CivpqZXmhaIgPiBreW91bWFuXCA7CivlgJTlvLcgPiBrdWtreW91XCA7Civnl4XkurogPiBieW91bmluXCA7CivlgY/ln7cgPiBoZW5zaHV1XCA7Civkv47mnb8gPiBtYW5haXRhXCA7CivkubPphbggPiBueXV1c2FuXCA7CivlrabogIUgPiBnYWt1c2hhXCA7CivlrrDnm7ggPiBzYWlzaG91XCA7CivkuLvpoJggPiBzaHVyeW91XCA7Civlsqnlo4EgPiBnYW5wZWtpXCA7Civkva/ni4IgPiB5b3VreW91XCA7CivkuLjpoZQgPiBtYXJ1Z2FvXCA7Civmm7PppqwgPiBoaWtpdW1hXCA7Civlr77mtYEgPiB0YWlyeXV1XCA7CivpoZTpu5IgPiBnYW5ndXJvXCA7CivkvI/nuKsgPiBmdXNlbnVpXCA7Civmm7LppqwgPiBreW9rdWJhXCA7CivotaTnh5AgPiBzZWtpcmluXCA7CivlgpHkvZwgPiBrZXNzYWt1XCA7CivnkZ7npaUgPiB6dWlzaG91XCA7CivpqZXmgaMgPiBreW91c2hpXCA7CivkvI/nt5ogPiBmdWt1c2VuXCA7CivlgoDlhKEgPiBrdWd1dHN1XCA7Civnj43oq4cgPiBjaGluZGFuXCA7Civkv5fmlocgPiB6b2t1YnVuXCA7CivkuqToqq0gPiBrb3Vkb2t1XCA7CivlgJLluZUgPiB0b3ViYWt1XCA7CivlrrbnlZwgPiBrYWNoaWt1XCA7CivkuK3po68gPiBjaHV1aGFuXCA7CivnkIPoj4wgPiBreXV1a2luXCA7Civpppbnm7ggPiBzaHVzaG91XCA7CivkuK3poqggPiBjaHV1YnV1XCA7Civpoqjpjq4gPiBmdXVjaGluXCA7CivlgJ/lsYsgPiBzaGFrdXlhXCA7Civls7bkuK0gPiB0b3VjaHV1XCA7Civlrp3nn7MgPiBob3VzZWtpXCA7Civog4bnn7MgPiB0YW5zZWtpXCA7CivlsbHluKsgPiB5YW1hc2hpXCA7Civpo5/osrsgPiBzaG9rdWhpXCA7CivkuqTop5IgPiBrb3VrYWt1XCA7CivmnKjph5EgPiBtb2t1a2luXCA7Civlrprnn7MgPiBqb3VzZWtpXCA7CivlsZ7mgKcgPiB6b2t1c2VpXCA7CivohLPmqYsgPiBub3VreW91XCA7CivkuK3poIUgPiBjaHV1a291XCA7CivmnaXoqLogPiByYWlzaGluXCA7CivnkIPojI4gPiBreXV1a2VpXCA7CivlsbHltr0gPiBzYW5nYWt1XCA7Civogqnnq6AgPiBrZW5zaG91XCA7CivnlJ/mga8gPiBzZWlzb2t1XCA7Civkvr/mnI0gPiBiZW5wdWt1XCA7CivkuqHopqogPiBib3VzaGluXCA7CivlgaXli50gPiBrZW5zaG91XCA7Civku5XojYkgPiBzaGlndXNhXCA7CivkuZ3ph40gPiBrb2tvbm9lXCA7Civkv4rmlY8gPiBzaHVuYmluXCA7CivmnaXopbIgPiByYWlzaHV1XCA7CivkuLvplbcgPiBzaHVjaG91XCA7CivouIrlrZcgPiBvZG9yaWppXCA7CivlsbHls6EgPiB5YW1ha2FpXCA7CivotaTmva4gPiBha2FzaGlvXCA7CivmnIDplbcgPiBzYWljaG91XCA7CivlrabntJogPiBnYWtreXV1XCA7CivogbTogZ4gPiBjaG91bW9uXCA7CivlsbHlsrMgPiBzYW5nYWt1XCA7CivnlJ/lvpcgPiBzZWl0b2t1XCA7CivnlaXlm7MgPiByeWFrdXp1XCA7CivkuKHpoK0gPiByeW91dG91XCA7CivlsJrmm7QgPiBuYW9zYXJhXCA7CivlsY/mga8gPiBoZWlzb2t1XCA7CivkuK3pmoogPiBjaHV1dGFpXCA7CivmnKjpgKAgPiBtb2t1em91XCA7CivkvJ3npaggPiBkZW5weW91XCA7CivmnJ3phZIgPiBhc2F6YWtlXCA7CivlrrnniakgPiBpcmVtb25vXCA7CivnlLvlrpogPiBrYWt1dGVpXCA7Civlr4LnhLYgPiBzZWtpemVuXCA7CivnlJjlv4MgPiBrYW5zaGluXCA7CivlsILmpa0gPiBzZW5neW91XCA7Civot6HlvaIgPiBhdG9rYXRhXCA7CivlgbbkvZwgPiBndXVzYWt1XCA7Civmm7nplbcgPiBzb3VjaG91XCA7CivlsI/mn4QgPiBrb2R6dWthXCA7CivlrZ3ntYwgPiBrb3VreW91XCA7CivogbTnvaogPiBjaG91emFpXCA7CivkvZnnhrEgPiB5b25ldHN1XCA7CivlsbHlrrkgPiBzYW4nJ3lvdVwgOwor5Lih6Z2iID4gcnlvdW1lblwgOwor5L+h5oSbID4gc2hpbicnYWlcIDsKK+S/l+aJjSA+IHpva3VzYWlcIDsKK+WtmOe2miA+IHNvbnpva3VcIDsKK+acm+mDtyA+IGJvdWt5b3VcIDsKK+eMm+mzpSA+IG1vdWNob3VcIDsKK+WuneeUnyA+IGhvdXNob3VcIDsKK+e+jumrqiA+IGJpaGF0c3VcIDsKK+WwmuaXqSA+IHNob3Vzb3VcIDsKK+S4remWkyA+IGNodXVrYW5cIDsKK+S4gOmrqiA+IGlwcGF0c3VcIDsKK+S7sue2mSA+IGNodXVrZWlcIDsKK+WwhuagoSA+IHNob3Vrb3VcIDsKK+WuieedgCA+IGFuY2hha3VcIDsKK+S4oembhCA+IHJ5b3V5dXVcIDsKK+Wto+evgCA+IGtpc2V0c3VcIDsKK+S6ieionyA+IHNvdXNob3VcIDsKK+S6jOimqiA+IGZ1dGFveWFcIDsKK+ixmui2syA+IHRvbnNva3VcIDsKK+WumOeUqCA+IGthbicneW91XCA7CivkvZnng4ggPiB5b3JldHN1XCA7Civmnb7okYkgPiBtYXRzdWJhXCA7Civlronnm7QgPiBhbmNob2t1XCA7CivpoqjpgJ8gPiBmdXVzb2t1XCA7CivpoY7pq60gPiBhZ29oaWdlXCA7Civnv7zos5sgPiB5b2t1c2FuXCA7CivlsZ7ls7YgPiB6b2t1dG91XCA7Civogrrnl4UgPiBoYWlieW91XCA7CivlsI/mmbogPiBzaG91Y2hpXCA7Civlrp/nkIYgPiBqaXRzdXJpXCA7CivlsI/mma8gPiBzaG91a2VpXCA7Civlrabnq6UgPiBnYWt1ZG91XCA7Civmo4vlrqIgPiBraWt5YWt1XCA7CivmnKvot68gPiBtYXRzdXJvXCA7CivkvrXmlLsgPiBzaGlua291XCA7CivlsIbmnaUgPiBzaG91cmFpXCA7Civkuobop6MgPiByeW91a2FpXCA7CivnlZHlnLAgPiBoYXRhY2hpXCA7Civkv6Hlv4MgPiBzaGluamluXCA7Civlr77moLwgPiB0YWlrYWt1XCA7CivlsYjlvLcgPiBrdWtreW91XCA7CivlrabnqpMgPiBnYWt1c291XCA7Civmop/mgqogPiBreW91YWt1XCA7CivnlLflqLwgPiBkYW5zaG91XCA7CivlraTnq4sgPiBrb3JpdHN1XCA7CivohbnluK8gPiBmdWt1dGFpXCA7CivlrabnqbYgPiBnYWtreXV1XCA7Civkv5fmg4UgPiB6b2t1am91XCA7CivkuoboposgPiByeW91a2VuXCA7CivkuLjpi7wgPiBtYXJ1a291XCA7Civkv4rmiY0gPiBzaHVuc2FpXCA7Civkv5fmgqogPiB6b2t1YWt1XCA7CivogbfntYQgPiBzaG9rdXNvXCA7Civlr5LmtYEgPiBrYW5yeXV1XCA7CivnvqTpm4YgPiBndW5zaHV1XCA7CivnvqTpm4QgPiBndW4nJ3l1dVwgOwor5bGx5aelID4geWFtYXViYVwgOwor5LiK6aGOID4gam91Z2FrdVwgOwor5a+d5q6/ID4gc2hpbmRlblwgOwor5bCR5pWwID4gc2hvdXN1dVwgOwor55S35aa+ID4gZGFuc2hvdVwgOwor5bCP5paOID4gc2hvdXNhaVwgOwor6ISC5rCXID4gYWJ1cmFrZVwgOwor5bCC5pyJID4gc2VuJyd5dXVcIDsKK+WwveW/oCA+IGppbmNodXVcIDsKK+Wwj+aVsCA+IHNob3VzdXVcIDsKK+adoeiZqyA+IGpvdWNodXVcIDsKK+eVpeWPmSA+IHJ5YWt1am9cIDsKK+e+jumjnyA+IGJpc2hva3VcIDsKK+WxseWlpSA+IHlhbWFva3VcIDsKK+ePjeiUtSA+IGNoaW56b3VcIDsKK+WwiuaXjyA+IHNvbnpva3VcIDsKK+S/l+W/tSA+IHpva3VuZW5cIDsKK+agvOautSA+IGtha3VkYW5cIDsKK+S4gOmjnyA+IGlzc2hva3VcIDsKK+WwhuaYnyA+IHNob3VzZWlcIDsKK+iBr+e1oSA+IHJlbnJha3VcIDsKK+WtpuelrSA+IGdha3VzYWlcIDsKK+eNhOmWgCA+IGdva3Vtb25cIDsKK+S/g+aIkCA+IHNva3VzZWlcIDsKK+iAg+iovCA+IGtvdXNob3VcIDsKK+WujOeSpyA+IGthbnBla2lcIDsKK+eUn+WusyA+IHNob3VnYWlcIDsKK+S5seiqvyA+IHJhbmNob3VcIDsKK+S6uuiHoyA+IGppbnNoaW5cIDsKK+S4gOmhniA+IGljaGlydWlcIDsKK+S5seiqrSA+IHJhbmRva3VcIDsKK+S6gOijgiA+IGtpcmV0c3VcIDsKK+iDuOawtCA+IGt5b3VzdWlcIDsKK+aeoOe3miA+IHdha3VzZW5cIDsKK+S8keecoCA+IGt5dXVtaW5cIDsKK+iHqOS8kSA+IHJpbmt5dXVcIDsKK+S7hOiBniA+IHNva3VidW5cIDsKK+S9jua9riA+IHRlaWNob3VcIDsKK+S8j+ebriA+IGZ1c2hpbWVcIDsKK+S4h+mboyA+IGJhbicnbmFuXCA7CivpqZXlpaIgPiBreW91c2hhXCA7CivlsY7lsL8gPiBzaGlueW91XCA7CivkuIrpmbggPiBqb3VyaWt1XCA7CivlsLrluqYgPiBzaGFrdWRvXCA7Civos6Tnp7AgPiBzZW5zaG91XCA7CivkuIfpmpwgPiBiYW5zaG91XCA7CivmnIDpgakgPiBzYWl0ZWtpXCA7CivlsLHlvbkgPiBzaHV1ZWtpXCA7CivkuIDpnaIgPiBpY2hpbWVuXCA7Civlr77mlbUgPiB0YWl0ZWtpXCA7CivmnJ3osqIgPiBjaG91a291XCA7Civku4/nuIEgPiBidXRzdWVuXCA7Civku5XntYQgPiBzaGlrdW1pXCA7CivmoZDmnZAgPiBraXJpemFpXCA7CivlsITmkoMgPiBzaGFnZWtpXCA7CivmoKHms6ggPiBrb3VjaHV1XCA7CivkuIDpm6ggPiBoaXRvYW1lXCA7Civmn7HnirYgPiBjaHV1am91XCA7CivkvZzms4EgPiBzYWtreW91XCA7CivkuIDpm6MgPiBpY2hpbmFuXCA7CivlsbHlnLAgPiB5YW1hY2hpXCA7Civkv4rlvaYgPiBzaHVuZ2VuXCA7Civog7TmrLIgPiBkb3V5b2t1XCA7CivpoY3pnaIgPiBnYWt1bWVuXCA7CivkuIrplbcgPiBqb3VjaG91XCA7Civnj43oirggPiBjaGluZ2VpXCA7Civmo67ljrMgPiBzaGluZ2VuXCA7CivnlLflm5ogPiBkYW5zaHV1XCA7Civmoq/lrZAgPiBoYXNoaWdvXCA7CivmnpXntbUgPiBtYWt1cmFlXCA7CivnlarlgpggPiBiYW5nYXNhXCA7CivkuIDpmaMgPiBpY2hpamluXCA7Civku4/ntYwgPiBidWtreW91XCA7CivpoKzpq60gPiBob29oaWdlXCA7CivmnKroqK0gPiBtaXNldHN1XCA7CivnlaXlhIAgPiByeWFrdWdpXCA7Civpp7/miY0gPiBzaHVuc2FpXCA7Civog73mpb0gPiBub3VnYWt1XCA7CivlsI/miY0gPiBzaG91c2FpXCA7CivkuLvou7ggPiBzaHVqaWt1XCA7CivpoKzpqqggPiBob29ib25lXCA7CivkubHooYwgPiByYW5neW91XCA7Civlq4noppYgPiBzaGlzc2hpXCA7CivlsI/miJAgPiBzaG91c2VpXCA7CivogonnnLwgPiBuaWt1Z2FuXCA7CivkuK3pgZMgPiBjaHV1ZG91XCA7CivlsJHmhqkgPiBzaG91a2VpXCA7CivlrqLmvJQgPiBreWFrdWVuXCA7Civlroznhp8gPiBrYW5qdWt1XCA7CivkuIDploAgPiBpY2hpbW9uXCA7CivmmpfprLEgPiBhbicndXRzdVwgOwor5bCP5oapID4gc2hvdWtlaVwgOwor5Lit6YCAID4gY2h1dXRhaVwgOwor5qSN5LuYID4gdWV0c3VrZVwgOwor55CG56qfID4gcmlrdXRzdVwgOwor5a6f5ryUID4gaml0c3VlblwgOwor5L+u5aW9ID4gc2h1dWtvdVwgOwor5bC85a+6ID4gYW1hZGVyYVwgOwor5Lit6L6yID4gY2h1dW5vdVwgOwor5p2R6JC9ID4gc29ucmFrdVwgOwor5pyr6KOUID4gbWF0c3VlaVwgOwor5bC65a+4ID4gc2VraXN1blwgOwor6ama5ZiGID4ga3lvdXRhblwgOwor5qKi5a2QID4gc2hvdXNoaVwgOwor5a+45o+PID4gc3VuYnlvdVwgOwor5pyo6KO9ID4gbW9rdXNlaVwgOwor5L2X5q2MID4gd2FiaXV0YVwgOwor5Lim6YCyID4gaGVpc2hpblwgOwor5L+u5aOrID4gc2h1dXNoaVwgOwor6aKo6KmVID4gZnV1aHlvdVwgOwor55Wq5Lq6ID4gYmFuJyduaW5cIDsKK+Wus+avkiA+IGdhaWRva3VcIDsKK+WtpueUnyA+IGdha3VzZWlcIDsKK+acl+iqrSA+IHJvdWRva3VcIDsKK+acl+iqpiA+IHJvdXNob3VcIDsKK+Wun+a4rCA+IGppc3Nva3VcIDsKK+eUn+WeoyA+IGlrZWdha2lcIDsKK+WxnuWbvSA+IHpva2tva3VcIDsKK+S6lOiJsiA+IGdvc2hva3VcIDsKK+i1pOacrSA+IGFrYWZ1ZGFcIDsKK+adv+e3oCA+IGl0YWppbWVcIDsKK+ePjeiBniA+IGNoaW5idW5cIDsKK+eUuuWQjSA+IGNob3VtZWlcIDsKK+acneimiyA+IGNob3VrZW5cIDsKK+aarumbqiA+IGJvc2V0c3VcIDsKK+S7leeoriA+IHNoaWd1c2FcIDsKK+S9s+aciCA+IGthZ2V0c3VcIDsKK+iCieeVjCA+IG5pa3VrYWlcIDsKK+WuruauvyA+IGt5dXVkZW5cIDsKK+adpeiBtCA+IHJhaWNob3VcIDsKK+mgremgmCA+IHRvdXJ5b3VcIDsKK+S7u+eUqCA+IG5pbicneW91XCA7Civog7jmnb8gPiBtdW5haXRhXCA7Civkv6HlpYkgPiBzaGlucG91XCA7CivmopPlrq4gPiBzaGlreXV1XCA7Civmnb/ntJkgPiBpdGFnYW1pXCA7CivpoK3poIIgPiB0b3VjaG91XCA7CivkuozoibIgPiBuaXNob2t1XCA7Civpp5DmlK8gPiBjaHV1c2hpXCA7CivlsI/lvoQgPiBzaG91a2VpXCA7Civmm7Lot68gPiBreW9rdXJvXCA7CivlsJHlvJ8gPiBzaG91dGVpXCA7CivkuKHovKogPiByeW91cmluXCA7CivmnKjonYsgPiBtb2t1cm91XCA7CivkuIDpjKAgPiBpY2hpam91XCA7Civlrp/ms4EgPiBqaWtreW91XCA7CivotaTml5cgPiBha2FoYXRhXCA7CivlsI/lvJ8gPiBzaG91dGVpXCA7Civkv5flp5MgPiB6b2t1c2VpXCA7Civkv4LlsZ4gPiBrZWl6b2t1XCA7CivkvbPml6UgPiBrYWppdHN1XCA7CivkuKHou40gPiByeW91Z3VuXCA7Civog47mr5IgPiB0YWlkb2t1XCA7CivnlZnku7sgPiByeXV1bmluXCA7CivmnL3okYkgPiBrdWNoaWJhXCA7Civmnb7nsZ8gPiBzaG91cmFpXCA7CivlsI/lurcgPiBzaG91a291XCA7CivlsbHli5ggPiB5YW1ha2FuXCA7CivlsJHlubQgPiBzaG91bmVuXCA7Civku4rnqIsgPiBpbWFob2RvXCA7Civpp5LmkI0gPiBrb21hc29uXCA7CivnvarpmpwgPiB6YWlzaG91XCA7CivlsI/lupcgPiBzaG91dGVuXCA7Civlrr/moLkgPiBzaHVra29uXCA7CivmnIjoqZUgPiBnZXBweW91XCA7CivnvbLplbcgPiBzaG9jaG91XCA7Civku4rnp4sgPiBrb25zaHV1XCA7CivnlLrliLYgPiBjaG91c2VpXCA7CivkuIvpg6ggPiBzaGltb2JlXCA7CivlsILlv7UgPiBzZW4nJ25lblwgOwor5p2f576kID4gc29rdWd1blwgOwor5a6f5q+NID4gaml0c3Vib1wgOwor5bCC5b+DID4gc2Vuc2hpblwgOwor54yu6YWsID4ga2Vuc2h1dVwgOwor5LiB6YeNID4gdGVpY2hvdVwgOwor5LiN6YGUID4gZnV0YXRzdVwgOwor5Li76Kq/ID4gc2h1Y2hvdVwgOwor5LiL6YGUID4ga2F0YXRzdVwgOwor6aOb6ISaID4gaGlreWFrdVwgOwor55S65YaFID4gY2hvdW5haVwgOwor5pyI6KaLID4gdHN1a2ltaVwgOwor5L+X5aG1ID4gem9rdWppblwgOwor5YCL5YilID4ga29iZXRzdVwgOwor5bGe5ZCNID4gem9rdW1laVwgOwor5YCh5L2vID4gc2hvdXlvdVwgOwor5LuY552AID4gZnVjaGFrdVwgOwor5LiK6YCyID4gam91c2hpblwgOwor5pyN6KOFID4gZnVrdXNvdVwgOwor5L2T5qC8ID4gdGFpa2FrdVwgOwor54yf6YqDID4gcnlvdWp1dVwgOwor5Lqk57WhID4ga291cmFrdVwgOwor5qOE5Y20ID4ga2lreWFrdVwgOwor5L2V5p+QID4gbmFuaWJvdVwgOwor5qCh5pyNID4ga291ZnVrdVwgOwor5LuV552AID4gc2hpa2lzZVwgOwor5pyo6JSmID4ga2lkenV0YVwgOwor6LKn56quID4gaGlua3l1dVwgOwor6IKJ54mHID4gbmlrdWhlblwgOwor5bCG5bilID4gc2hvdXN1aVwgOwor55S35YSqID4gZGFuJyd5dXVcIDsKK+acqOiTriA+IG1va3VyZW5cIDsKK+absuitnCA+IGt5b2t1ZnVcIDsKK+ail+WhniA+IGtvdXNva3VcIDsKK+eUsuWGkSA+IGthdGNodXVcIDsKK+S+teWusyA+IHNoaW5nYWlcIDsKK+iCpea6nCA+IGtvZWRhbWVcIDsKK+iznueOqSA+IHNob3VnYW5cIDsKK+WAn+S6uiA+IGthcmluaW5cIDsKK+S6uuensCA+IG5pbnNob3VcIDsKK+S/iuWjqyA+IHNodW5zaGlcIDsKK+acieihhiA+IHl1dXNodXVcIDsKK+abuOiplSA+IHNob2h5b3VcIDsKK+WvhuaVmSA+IG1pa2t5b3VcIDsKK+ixquiFuSA+IGdvdWZ1a3VcIDsKK+S4gOmBkyA+IGljaGlkb3VcIDsKK+S4gOmBhyA+IGljaGlndXVcIDsKK+abuOiovCA+IHNob3Nob3VcIDsKK+iyq+emhCA+IGthbnJva3VcIDsKK+i2iuW5tCA+IGV0c3VuZW5cIDsKK+S4gOmAoyA+IGljaGlyZW5cIDsKK+eUn+WNlCA+IHNlaWt5b3VcIDsKK+S4iei7uCA+IHNhbmppa3VcIDsKK+iAgeiHoyA+IHJvdXNoaW5cIDsKK+adoee0hCA+IGpvdXlha3VcIDsKK+S/ruWPsiA+IHNodXVzaGlcIDsKK+ixhuiUtSA+IG1hbWV6b3VcIDsKK+S9meaXpSA+IHlvaml0c3VcIDsKK+eQg+eVjCA+IGt5dXVrYWlcIDsKK+S9nOaWhyA+IHNha3VidW5cIDsKK+Wwj+WvkiA+IHNob3VrYW5cIDsKK+iznueKtiA+IHNob3Vqb3VcIDsKK+adnOe1tiA+IHRvemV0c3VcIDsKK+S9juacqCA+IHRlaWJva3VcIDsKK+WwiuWxniA+IHNvbnpva3VcIDsKK+mmrOaWuSA+IHVtYWthdGFcIDsKK+S5seiHoyA+IHJhbnNoaW5cIDsKK+S9leaZgiA+IG5hbmRva2lcIDsKK+i1pOaJiyA+IHNla2lzaHVcIDsKK+Wwj+WumCA+IHNob3VrYW5cIDsKK+S5s+iFuiA+IG55dXVzZW5cIDsKK+WwkeWtkCA+IHNob3VzaGlcIDsKK+eMrui6qyA+IGtlbnNoaW5cIDsKK+WAkuS8jyA+IHRvdWZ1a3VcIDsKK+iznueJjCA+IHNob3VoYWlcIDsKK+absuinoyA+IGt5b2trYWlcIDsKK+ePjeetlCA+IGNoaW50b3VcIDsKK+S4gOi8qiA+IGljaGlyaW5cIDsKK+WvteW5uCA+IGNob3Vrb3VcIDsKK+eUuuS8miA+IGNob3VrYWlcIDsKK+WumualrSA+IHRlaWd5b3VcIDsKK+mpleWCsiA+IGt5b3Vnb3VcIDsKK+mpmuWAkiA+IGt5b3V0b3VcIDsKK+WwiuWuuSA+IHNvbicneW91XCA7Civnj77nlKggPiBnZW4nJ3lvdVwgOwor5LiK6LazID4gam91c29rdVwgOwor5a6Y5qWtID4ga2FuZ3lvdVwgOwor5Lih6KuWID4gcnlvdXJvblwgOwor5LiA6LuNID4gaWNoaWd1blwgOwor55S65Lq6ID4gY2hvdW5pblwgOwor5LiK6LaKID4gam91ZXRzdVwgOwor5bCK5a6FID4gc29udGFrdVwgOwor6aCF6aCYID4ga291cnlvdVwgOwor6aaZ5pyoID4ga291Ym9rdVwgOwor5bGA5ZOhID4ga3lva3VpblwgOwor5bCC5bGeID4gc2Vuem9rdVwgOwor5L2V5pWFID4gbmFuaXl1ZVwgOwor5Lqi56ucID4ga291cnlvdVwgOwor54yb6YCyID4gbW91c2hpblwgOwor5LuL55eFID4ga2FpYnlvdVwgOwor5bCG5a6YID4gc2hvdWthblwgOwor5LuP55S7ID4gYnV0c3VnYVwgOwor6ISx5a2XID4gZGF0c3VqaVwgOwor54yb6L+9ID4gbW91dHN1aVwgOwor6LSF5rKiID4gemVpdGFrdVwgOwor5L+h5Y+3ID4gc2hpbmdvdVwgOwor55Sw5L2cID4gZGVuc2FrdVwgOwor5Lyv5qW9ID4gYmFrdXJvdVwgOwor5a6a5qC8ID4gdGVpa2FrdVwgOwor5bGx5LitID4gc2FuY2h1dVwgOwor6IO45oeQID4ga3lvdWthaVwgOwor5pys6IW5ID4gaG9ucHVrdVwgOwor5a++5a+pID4gdGFpc2hpblwgOwor5LqU56+AID4gZ29zZXRzdVwgOwor5Li76Jm5ID4gc2h1bmlqaVwgOwor5Lim6KO9ID4gbmFtaXNlaVwgOwor55Sa5YWtID4gamlucm9rdVwgOwor54uC6aiSID4ga3lvdXNvdVwgOwor6LWk5oGlID4gYWthaGFqaVwgOwor5pyx6IKJID4gc2h1bmlrdVwgOwor5L2Z5o6lID4geW9zZXRzdVwgOwor55Sy5LmZID4ga291b3RzdVwgOwor5LqV562SID4gaWR6dXRzdVwgOwor5pys6IO9ID4gaG9uJydub3VcIDsKK+S4h+ixoSA+IGJhbnNob3VcIDsKK+eRo+acqyA+IHNhbWF0c3VcIDsKK+mmmeaWmSA+IGtvdXJ5b3VcIDsKK+S/l+WQjSA+IHpva3VtZWlcIDsKK+eQg+eKtiA+IGt5dXVqb3VcIDsKK+iDtOaFviA+IGRvdXlva3VcIDsKK+S6uueahyA+IG5pbicnbm91XCA7CivkurrnmoQgPiBqaW50ZWtpXCA7CivkvI/msLQgPiBmdWt1c3VpXCA7CivlsJHlo64gPiBzaG91c291XCA7CivohIblvLEgPiB6ZWlqYWt1XCA7CivppZHmuIcgPiBraWthdHN1XCA7CivlsI/lpIkgPiBzaG91aGVuXCA7CivkuLvolqwgPiBzaHV5YWt1XCA7Civos7zmsYIgPiBrb3VreXV1XCA7CivlrpjmnIkgPiBrYW4nJ3l1dVwgOwor5LyR5q2iID4ga3l1dXNoaVwgOwor5LqG57ChID4gcnlvdWtlblwgOwor5LuW54mpID4gdGFidXRzdVwgOwor57696JmrID4gaGFtdXNoaVwgOwor55Sj5LyRID4gc2Fua3l1dVwgOwor6IOO5pWZID4gdGFpa3lvdVwgOwor5L2c5oimID4gc2FrdXNlblwgOwor5Lyv5p6XID4gYmVydXJpblwgOwor5L2c5oiQID4gc2FrdXNlaVwgOwor5a+S5b+DID4ga2Fuc2hpblwgOwor54uC6aKoID4ga3lvdWZ1dVwgOwor5a6j5pWZID4gc2Vua3lvdVwgOwor6IOM5pWZID4gaGFpa3lvdVwgOwor6LGK6IO4ID4gaG91a3lvdVwgOwor5p+z5p2hID4gcnl1dWpvdVwgOwor5bCG5aOrID4gc2hvdXNoaVwgOwor55Sf5LmzID4gc2Vpbnl1dVwgOwor5a6X5peoID4gc2h1dXNoaVwgOwor5L6v5Zu9ID4ga291a29rdVwgOwor576k6KGGID4gZ3Vuc2h1dVwgOwor5a6X5pePID4gc291em9rdVwgOwor6IKJ5rGgID4gbmlrdWNoaVwgOwor5qKT5YygID4gc2hpc2hvdVwgOwor5LiJ6KeSID4gc2Fua2FrdVwgOwor5LiL6KaLID4gc2hpdGFtaVwgOwor5LyP5qiLID4gZnVzZWRvaVwgOwor6IKJ5rGBID4gbmlrdWp1dVwgOwor5Lmz57OWID4gbnl1dXRvdVwgOwor546E57+BID4gZ2VuJydub3VcIDsKK+S4gOiqrCA+IGlzc2V0c3VcIDsKK+mnkOWxryA+IGNodXV0b25cIDsKK+WwseWKtCA+IHNodXVyb3VcIDsKK+iDuOW6lSA+IGt5b3V0ZWlcIDsKK+Wuo+aPmiA+IHNlbicneW91XCA7CivosrfniakgPiBrYWltb25vXCA7CivpoZvopoYgPiB0ZW5wdWt1XCA7Civkv67kuqQgPiBzaHV1a291XCA7CivlsYXlgJkgPiBpc291cm91XCA7CivmnI3ohrogPiBmdWt1eW91XCA7Civlrr/mgKggPiBzaHVrdWVuXCA7CivogIznq4sgPiBqaXJpdHN1XCA7Civmnq/muIcgPiBrb2thdHN1XCA7Civpoqjnv5IgPiBmdXVzaHV1XCA7CivkuZfnvoMgPiBqb3ViZWtpXCA7CivlsYjkvLggPiBrdXNzaGluXCA7Civkv5flg6cgPiB6b2t1c291XCA7CivpoZXopoEgPiBrZW4nJ3lvdVwgOwor6IKH5q2zID4gY2hvdXNhaVwgOwor5bGI5LyPID4ga3VwcHVrdVwgOwor5pys57WmID4gaG9ua3l1dVwgOwor5Lit6JGJID4gY2h1dXlvdVwgOwor572q6LehID4gemFpc2VraVwgOwor6aOb56SrID4gdHN1YnV0ZVwgOwor5p2h55uuID4gam91bW9rdVwgOwor5LiA6KanID4gaWNoaXJhblwgOwor5a+G5bqmID4gbWl0c3Vkb1wgOwor5LiK6KGoID4gam91aHlvdVwgOwor5LiL6KGAID4gZ2VrZXRzdVwgOwor5pyA6ImvID4gc2FpcnlvdVwgOwor6Laz5Yq0ID4gc29rdXJvdVwgOwor5a6I5penID4gc2h1a3l1dVwgOwor5bCP5ZaEID4gc2hvdXplblwgOwor5Luu5rG6ID4ga2FrZXRzdVwgOwor5a+b5a65ID4ga2FuJyd5b3VcIDsKK+S8keagoSA+IGt5dXVrb3VcIDsKK+S/oeS7sCA+IHNoaW5rb3VcIDsKK+agluaBryA+IHNlaXNva3VcIDsKK+S6leebriA+IHNlaW1va3VcIDsKK+WwmuWPiCA+IG5hb21hdGFcIDsKK+aal+i6jSA+IGFuJyd5YWt1XCA7CivogIPnqbYgPiBrb3VreXV1XCA7CivmmanpkJggPiBiYW5zaG91XCA7CivosqjniakgPiBrYW1vdHN1XCA7Civlrp/mioAgPiBqaXRzdWdpXCA7CivmnKznsaQgPiBob25rdWppXCA7CivohLHllrYgPiBkYXRzdWVpXCA7CivkvZPlvpcgPiB0YWl0b2t1XCA7CivmnKznsY0gPiBob25zZWtpXCA7CivmnKjnsr4gPiBtb2t1c2VpXCA7CivlsI/lk4EgPiBzaG91aGluXCA7CivmnInogbcgPiB5dXVzb2t1XCA7CivkvbPlrqIgPiBrYWt5YWt1XCA7Civnvo7ooZMgPiBiaWp1dHN1XCA7CivnvarosqwgPiB6YWlzZWtpXCA7CivotaTlrZAgPiBzZWtpc2hpXCA7CivlrrPlv4MgPiBnYWlzaGluXCA7Civkv5fkvZMgPiB6b2t1dGFpXCA7CivmmLzppJAgPiBjaHV1c2FuXCA7CivkuoznnYAgPiBuaWNoYWt1XCA7Civkv5fkvJ0gPiB6b2t1ZGVuXCA7Civkuobnn6UgPiByeW91Y2hpXCA7CivmoLjlrZAgPiBrYWt1c2hpXCA7CivmnKznrrEgPiBob25iYWtvXCA7CivmnI3nvaogPiBmdWt1emFpXCA7Civkuoznm7QgPiBuaWNob2t1XCA7CivppqzluIIgPiB1bWFpY2hpXCA7CivnkrDlooMgPiBrYW5reW91XCA7CivlsI/lj7IgPiBzaG91c2hpXCA7Civkv5fkurogPiB6b2t1amluXCA7CivkvZXlubQgPiBuYW4nJ25lblwgOwor54yb6KWyID4gbW91c2h1dVwgOwor5bCP5Y+jID4ga29ndWNoaVwgOwor5p2+54WkID4gc2hvdWJhaVwgOwor5pys562LID4gaG9uc3VqaVwgOwor5p2x54usID4gdG91ZG9rdVwgOwor542j6IKJID4ganV1bmlrdVwgOwor5Lit6IiIID4gY2h1dWtvdVwgOwor5LqM55m+ID4gbmloeWFrdVwgOwor5puy6IieID4ga3VzZW1haVwgOwor54+N542jID4gY2hpbmp1dVwgOwor5pys56ugID4gaG9uc2hvdVwgOwor5Li757+8ID4gc2h1eW9rdVwgOwor5L+X5LiWID4gem9rdXNlaVwgOwor576k6JC9ID4gZ3VucmFrdVwgOwor6aO0546JID4gYW1lZGFtYVwgOwor6ICE56KMID4gbW91cm9rdVwgOwor5a6u5bu3ID4ga3l1dXRlaVwgOwor5bCx5Lu7ID4gc2h1dW5pblwgOwor5aaZ6b2iID4gbXlvdXJlaVwgOwor5pmC6ZuoID4gc2hpZ3VyZVwgOwor5a6u5bqtID4ga3l1dXRlaVwgOwor5Lit6ISzID4gY2h1dW5vdVwgOwor5pyo56uLID4ga29kYWNoaVwgOwor546L56uLID4gb3VyaXRzdVwgOwor5bCP5YuHID4gc2hvdXl1dVwgOwor6IG35qipID4gc2hva2tlblwgOwor5L615YamID4gc2hpbmtvdVwgOwor54++5rOBID4gZ2Vua3lvdVwgOwor5a+E5a6/ID4ga2lzaHVrdVwgOwor6IOM5b6zID4gaGFpdG9rdVwgOwor57+S57e0ID4gc2h1dXJlblwgOwor5qC85aSWID4ga2FrdWdhaVwgOwor5LiK6JSfID4gam91em9rdVwgOwor5Lit6IOMID4gY2h1dXplaVwgOwor6LWk5aSWID4gc2VraWdhaVwgOwor5Lih6Ii3ID4gcnlvdWdlblwgOwor5a2j5pyrID4ga2ltYXRzdVwgOwor5p+T5paZID4gc2VucnlvdVwgOwor5p2+5r+kID4gc2hvdXRvdVwgOwor5p+E5p2TID4gaGlzaGFrdVwgOwor54us6LWwID4gZG9rdXNvdVwgOwor5Luu5qSNID4ga2FzaG9rdVwgOwor546J56i/ID4gZ3lva2tvdVwgOwor5bCP5YiAID4gc2hvdXRvdVwgOwor5L6/5L6rID4gYmVuJyduZWlcIDsKK+mgreiouyA+IHRvdWNodXVcIDsKK+S7luauuiA+IHRhc2F0c3VcIDsKK+S4i+iRiSA+IHNoaXRhYmFcIDsKK+i2s+S7oyA+IGFzaGlkYWlcIDsKK+aciee1piA+IHl1dWt5dXVcIDsKK+S+v+S9niA+IGJlbicnbmVpXCA7CivkuK3ogIEgPiBjaHV1cm91XCA7CivmnIjntaYgPiBnZWtreXV1XCA7Civpp5DlnKggPiBjaHV1emFpXCA7CivpppbluK0gPiBzaHVzZWtpXCA7CivmnInntYIgPiB5dXVzaHV1XCA7CivkuKHohZUgPiByeW91dWRlXCA7CivnjYToiI4gPiBnb2t1c2hhXCA7CivpoK3op5IgPiB0b3VrYWt1XCA7CivpoZvokL0gPiB0ZW5yYWt1XCA7CivlsI/lhZogPiBzaG91dG91XCA7CivkvqDli4cgPiBreW91eXV1XCA7CivlsI7lhaUgPiBkb3VueXV1XCA7CivkvJ3mib8gPiBkZW5zaG91XCA7Civog7jlo7AgPiBreW91c2VpXCA7CivkuZnnqK4gPiBvdHN1c2h1XCA7CivkuZfnqY0gPiBqb3VzZWtpXCA7CivniZ3pto8gPiBtZW5kb3JpXCA7CivnvqToh6MgPiBndW5zaGluXCA7CivlrZ/mmKUgPiBtb3VzaHVuXCA7Civkvpvli6IgPiB0b21vemVpXCA7Civkub7nlZkgPiBrYW5yeXV1XCA7Civlr6nllY8gPiBzaGlubW9uXCA7Civos47mpa0gPiBzZW5neW91XCA7Civos57mna8gPiBzaG91aGFpXCA7Civku4vmrrsgPiBrYWlrYWt1XCA7CivkuIDokYkgPiBpY2hpeW91XCA7CivmnIDntYIgPiBzYWlzaHV1XCA7CivkubPnmYwgPiBueXV1Z2FuXCA7CivlsIblhbUgPiBzaG91aGVpXCA7CivniZ3ps6UgPiBtZW5kb3JpXCA7Civku7DmnJsgPiBneW91Ym91XCA7Civlrpflu58gPiBzb3VieW91XCA7Civkub7nk6IgPiBrYW5weW91XCA7CivogL3murogPiB0YW5kZWtpXCA7CivkvY/lroUgPiBqdXV0YWt1XCA7CivkuKHogIUgPiByeW91c2hhXCA7CivotoXli6QgPiBjaG91a2luXCA7CivosqvmtYEgPiBrYW5yeXV1XCA7CivlrpjluoEgPiBrYW5jaG91XCA7CivogIHnl4UgPiByb3VieW91XCA7CivlrprluK0gPiBqb3VzZWtpXCA7Civos5PmoLwgPiBoaW5rYWt1XCA7CivmnJ3npLwgPiBjaG91cmVpXCA7CivlsI/kvr8gPiBzaG9uYmVuXCA7Civlr7jliocgPiBzdW5nZWtpXCA7CivlsIHlhaUgPiBmdXVueXV1XCA7CivorabpkJggPiBrZWlzaG91XCA7CivmmKXpm7cgPiBzaHVucmFpXCA7Civlr5Llm70gPiBrYW5rb2t1XCA7Civkvq/kvK8gPiBrb3VoYWt1XCA7CivkuK3nt6ggPiBjaHV1aGVuXCA7CivmnKrnnYAgPiBtaWNoYWt1XCA7CivmnKznnIEgPiBob25zaG91XCA7Civmm7jntYwgPiBzaG9reW91XCA7Civlr7jliLsgPiBzdW5rb2t1XCA7CivkuovniakgPiBqaWJ1dHN1XCA7Civku5Xmpa0gPiBzaGl3YXphXCA7CivpppblsIYgPiBzaHVzaG91XCA7CivkvJHmiKYgPiBreXV1c2VuXCA7Civnj77mpa0gPiBnZW5neW91XCA7Civmm7PntrIgPiBoaWtpYW1pXCA7CivlsIrkv6EgPiBzb25zaGluXCA7CivkuK3ntpkgPiBjaHV1a2VpXCA7CivotoXlh6EgPiBjaG91Ym9uXCA7Civku7Lmlq0gPiBjaHV1ZGFuXCA7CivlsI/kvJ0gPiBzaG91ZGVuXCA7Civpnqbpn4YgPiBidXJhbmtvXCA7CivosarnkIMgPiBnb3VreXV1XCA7CivkubHnlKggPiByYW4nJ3lvdVwgOwor6aCY6KejID4gcnlvdWthaVwgOwor5LiD6ImyID4gbmFuYWlyb1wgOwor5LiK6IaKID4gam91aGFrdVwgOwor5L2V5aW0ID4gZG95YXRzdVwgOwor5p6X5qWtID4gcmluZ3lvdVwgOwor5LiA6Iq4ID4gaWNoaWdlaVwgOwor5LyR5oapID4ga3l1dWtlaVwgOwor5p2x5riFID4gdG91c2hpblwgOwor54qs6YeYID4gaW51a3VnaVwgOwor55CD5qC5ID4ga3l1dWtvblwgOwor5pyq55m6ID4gbWloYXRzdVwgOwor5bCP5Lq6ID4gc2hvdW5pblwgOwor5L2X5aOwID4gd2FiaWdvZVwgOwor5LiA6ImyID4gaGl0b2lyb1wgOwor5Li7562LID4gc2h1c3VqaVwgOwor5LiL6ISaID4ga2FreWFrdVwgOwor5Lit57O4ID4gY2h1dWl0b1wgOwor576k576KID4gZ3VuJyd5b3VcIDsKK+izh+agvCA+IHNoaWtha3VcIDsKK+abuOexjSA+IHNob3Nla2lcIDsKK+Wuv+WgtCA+IHNodWt1YmFcIDsKK+aYpemXmCA+IHNodW50b3VcIDsKK+WwguS/riA+IHNlbnNodXVcIDsKK+Wwj+S5lyA+IHNob3Vqb3VcIDsKK+S8uOWxlSA+IHNoaW50ZW5cIDsKK+S+i+WIuyA+IHJlaWtva3VcIDsKK+aatOiQvSA+IGJvdXJha3VcIDsKK+eLgui6gSA+IGt5b3Vzb3VcIDsKK+iyqOauliA+IGthc2hva3VcIDsKK+S6rOa0myA+IGtlaXJha3VcIDsKK+S8muW/gyA+IGthaXNoaW5cIDsKK+S4reexsyA+IGNodXViZWlcIDsKK+S6pOa4iSA+IGtvdXNob3VcIDsKK+mgjOipniA+IHNob3VzaGlcIDsKK+S4h+iDvSA+IG1hbicnbm91XCA7CivkuInogrIgPiBzYW4nJ2lrdVwgOwor5LiJ6IKhID4gc2FubWF0YVwgOwor5LiA6IazID4gaWNoaXplblwgOwor5a2m5omNID4gZ2FrdXNhaVwgOwor54m56Zu7ID4gdG9rdWRlblwgOwor6aCG6Kq/ID4ganVuY2hvdVwgOwor5769566SID4gaGFib3VraVwgOwor6ISa5YWJID4ga3lha2tvdVwgOwor5a6a5a6/ID4gam91eWFkb1wgOwor5a+p5YikID4gc2hpbnBhblwgOwor54us6KOBID4gZG9rdXNhaVwgOwor576K6IacID4geW91bWFrdVwgOwor5pyr55SfID4gc3VlbmFyaVwgOwor5p+75a+fID4gc2FzYXRzdVwgOwor6LGq54mpID4gZXJhbW9ub1wgOwor5Lit56+HID4gY2h1dWhlblwgOwor5bCC5Lu7ID4gc2VuJyduaW5cIDsKK+e+iuiFuCA+IHlvdWNob3VcIDsKK+S4iue/vCA+IGpvdXlva3VcIDsKK+S8keaAoCA+IGt5dXV0YWlcIDsKK+S5seeNsiA+IHJhbmtha3VcIDsKK+S6pOa1gSA+IGtvdXJ5dXVcIDsKK+WnpumAmiA+IGthbnRzdXVcIDsKK+e+qee1tiA+IGdpemV0c3VcIDsKK+aYh+mghiA+IHNob3VqdW5cIDsKK+iyneavkiA+IGthaWRva3VcIDsKK+WumOWtpiA+IGthbmdha3VcIDsKK+ePvuaciSA+IGdlbicneXV1XCA7Civosp3mrrwgPiBrYWlnYXJhXCA7Civosp3mrrsgPiBrYWlnYXJhXCA7Civos57mj5ogPiBzaG91eW91XCA7CivkuK3nrYkgPiBjaHV1dG91XCA7Civnianpn7MgPiBtb25vb3RvXCA7CivkubPnirYgPiBueXV1am91XCA7CivkuLvnpZ4gPiBzaHVzaGluXCA7CivmnpfmnKggPiByaW5ib2t1XCA7Civnjonnkr0gPiBneW9rdWppXCA7CivkvJrluK0gPiBrYWlzZWtpXCA7Civni7zol4kgPiByb3V6ZWtpXCA7CivnvorogokgPiB5b3VuaWt1XCA7Civnv7znirYgPiB5b2t1am91XCA7CivpoJDooYAgPiB5b2tldHN1XCA7CivpoqjnlrkgPiBmdXVzaGluXCA7CivkvJHlu7cgPiBreXV1dGVpXCA7CivnjonnkZsgPiBneW9rdWVpXCA7Civlrq7ln44gPiBreXV1am91XCA7CivotoXkurogPiBjaG91amluXCA7Civlrr/llrYgPiBzaHVrdWVpXCA7Civmnp3ml48gPiBzaGl6b2t1XCA7Civku5bml6UgPiB0YWppdHN1XCA7CivogIHnhp8gPiByb3VqdWt1XCA7CivoroPos54gPiBzYW5zaG91XCA7Civos4fmlpkgPiBzaGlyeW91XCA7Civpp5DlhbUgPiBjaHV1aGVpXCA7CivkuIDnvqQgPiBpY2hpZ3VuXCA7CivkvY7lnKcgPiB0ZWlhdHN1XCA7Civmnb7mpZMgPiBzaG91ZnV1XCA7Civku4rmnJ0gPiBrb25jaG91XCA7CivkuLnnoqcgPiB0YW5wZWtpXCA7Civmmq7oibIgPiBib3Nob2t1XCA7Civku5XmlrkgPiBzaGlrYXRhXCA7Civpo6LmuIcgPiBraWthdHN1XCA7Civku4rmm7QgPiBpbWFzYXJhXCA7Civlr4blkYogPiBtaWtrb2t1XCA7CivmmIfpmY0gPiBzaG91a291XCA7Civniq/ot6EgPiBoYW5zZWtpXCA7CivosrTmnK0gPiBraXNhdHN1XCA7Civpo4TnhLYgPiBoeW91emVuXCA7Civku4rmmoEgPiBrb25neW91XCA7Civml6nppqwgPiBoYXlhdW1hXCA7CivkvZzlk4EgPiBzYWt1aGluXCA7CivosqDmpbUgPiBmdWt5b2t1XCA7CivkurrmoLwgPiBqaW5rYWt1XCA7CivmnKzniakgPiBob25tb25vXCA7Civku4rmmYIgPiBpbWFkb2tpXCA7CivmnaXmrbQgPiByYWlyZWtpXCA7Civpn7PoqLMgPiBvbicneWFrdVwgOwor5LuK5pilID4ga29uc2h1blwgOwor5LuK5piUID4ga29uc2VraVwgOwor6IGa5paCID4gc2h1dXJlblwgOwor5LuP5pWZID4gYnVra3lvdVwgOwor6LKv5pyoID4gY2hvYm9rdVwgOwor5pyo54qAID4gbW9rdXNlaVwgOwor6LK35pilID4gYmFpc2h1blwgOwor5a+M5YqbID4gZnVyeW9rdVwgOwor5LiK57SaID4gam91a3l1dVwgOwor5LiK57SZID4gdXdhZ2FtaVwgOwor6IGa5pWjID4gc2h1dXNhblwgOwor5LiK57SQID4gdXdhaGltb1wgOwor5LiJ57SaID4gc2Fua3l1dVwgOwor5LuK5pa5ID4gaW1hZ2F0YVwgOwor5Lih56iuID4gcnlvdXNodVwgOwor5pyo54mIID4gbW9rdWhhblwgOwor5pyo54mHID4gbW9rdWhlblwgOwor5a2d5b+DID4ga291c2hpblwgOwor54uC6KmpID4ga3lvdXNoaVwgOwor6IOM5ZynID4gaGFpYXRzdVwgOwor5Lm+5rqcID4ga2Fucnl1dVwgOwor6IKJ5by+ID4gbmlrdWRhblwgOwor542E56qTID4gZ29rdXNvdVwgOwor5a2m5bm0ID4gZ2FrdW5lblwgOwor6IGW5pWZID4gc2Vpa3lvdVwgOwor5a6i5ZyfID4ga3lha3Vkb1wgOwor6K206LKsID4ga2Vuc2VraVwgOwor5pyN55SoID4gZnVrdXlvdVwgOwor5L2O5ZSxID4gdGVpc2hvdVwgOwor5pen6aKoID4ga3l1dWZ1dVwgOwor54yu57SNID4ga2VuJydub3VcIDsKK+WtmOW/tSA+IHpvbicnbmVuXCA7CivnjofniL4gPiBzb3RzdWppXCA7CivlrabluL0gPiBnYWt1Ym91XCA7CivmmI7pj6EgPiBtZWlreW91XCA7CivmnKznhLYgPiBob24nJ25lblwgOwor54uC6KiAID4ga3lvdWdlblwgOwor5LuV5o6bID4gc2hpa2FrZVwgOwor5qCq5Yi4ID4ga2FidWtlblwgOwor6aOb5rKrID4gaGltYXRzdVwgOwor6aKo54uCID4gZnV1a3lvdVwgOwor5a2Q5oGvID4gc2hpc29rdVwgOwor6aas5Yy5ID4gYmFoaXRzdVwgOwor5pu455uuID4gc2hvbW9rdVwgOwor5LiK566xID4gdXdhYmFrb1wgOwor6IO45YOPID4ga3lvdXpvdVwgOwor5LyP5bCEID4gZnVrdXNoYVwgOwor6IO05YWDID4gZG91bW90b1wgOwor5a6a5ZynID4gdGVpYXRzdVwgOwor5pqX6ImyID4gYW5zaG9rdVwgOwor5a6M5aOBID4ga2FuYmVraVwgOwor6IOG5ZqiID4gdGFuJydub3VcIDsKK+ixiueGnyA+IGhvdWp1a3VcIDsKK+S4iuetliA+IGpvdXNha3VcIDsKK+mhjue0kCA+IGFnb2hpbW9cIDsKK+acqOeCrSA+IG1va3V0YW5cIDsKK+S9meWKmyA+IHlvcnlva3VcIDsKK+S9k+WNlCA+IHRhaWt5b3VcIDsKK+mmluWUsSA+IHNodXNob3VcIDsKK+S4reebpCA+IGNodXViYW5cIDsKK+agoeWJhyA+IGtvdXNva3VcIDsKK+iAs+agkyA+IG1pbWlzZW5cIDsKK+S9meWJsiA+IHlva2F0c3VcIDsKK+S4h+etliA+IGJhbnNha3VcIDsKK+S7pOaBryA+IHJlaXNva3VcIDsKK+eJh+mdoiA+IGthdGFtZW5cIDsKK+WvhuWEgCA+IG1pdHN1Z2lcIDsKK+eJuemFjSA+IHRva3VoYWlcIDsKK+S5s+a4hSA+IG55dXVzZWlcIDsKK+aXpemcsiA+IG5pY2hpcm9cIDsKK+eMruetliA+IGtlbnNha3VcIDsKK+S9meWIhyA+IHlvc2V0c3VcIDsKK+S6q+aciSA+IGt5b3V5dXVcIDsKK+iBtOW+kyA+IGNob3VqdXVcIDsKK+S5s+a2siA+IG55dXVla2lcIDsKK+aguOS7gSA+IGtha3VqaW5cIDsKK+WuouWToSA+IGt5YWt1aW5cIDsKK+aYn+i+sCA+IHNlaXNoaW5cIDsKK+eMrueriyA+IGtvbmRhdGVcIDsKK+S4oeecvCA+IHJ5b3VnYW5cIDsKK+S9leWHpiA+IGRva29pcmFcIDsKK+ixhueCrSA+IG1hbWV0YW5cIDsKK+Wun+WToSA+IGppdHN1aW5cIDsKK+eJuemBuCA+IHRva3VzZW5cIDsKK+Wuo+WRiiA+IHNlbmtva3VcIDsKK+S9neWDgiA+IHNlbXVzaGlcIDsKK+ePjeacrCA+IGNoaW5wb25cIDsKK+S7o+W9uSA+IGRhaXlha3VcIDsKK+S5sea1gSA+IHJhbnJ5dXVcIDsKK+S4gOerryA+IGlwcGFzaGlcIDsKK+S4ieeniyA+IHNhbnNodXVcIDsKK+WuueWFsSA+IHlvdWt5b3VcIDsKK+agoeWDlSA+IGtvdWJva3VcIDsKK+ePjeabuCA+IGNoaW5zaG9cIDsKK+S9leWFsSA+IG5hbnRvbW9cIDsKK+WvkuS4rSA+IGthbmNodXVcIDsKK+S4nuebuCA+IGpvdXNob3VcIDsKK+S4reeTtiA+IGNodXViaW5cIDsKK+S4h+emjyA+IG1hbnB1a3VcIDsKK+adpeacnSA+IHJhaWNob3VcIDsKK+iBt+W3pSA+IHNob2trb3VcIDsKK+WuheWcsCA+IHRha3VjaGlcIDsKK+S5s+axgSA+IG55dXVqdXVcIDsKK+WuruWIkSA+IGt5dXVrZWlcIDsKK+mjvOaWmSA+IHNoaXJ5b3VcIDsKK+S8j+WljyA+IGZ1a3Vzb3VcIDsKK+Wun+WPjiA+IGppc3NodXVcIDsKK+agoeWAiSA+IGF6ZWt1cmFcIDsKK+e/leeEtiA+IGt5dXV6ZW5cIDsKK+aWsOmuriA+IHNoaW5zZW5cIDsKK+ixiua8gSA+IGhvdXJ5b3VcIDsKK+itq+iogCA+IHV3YWdvdG9cIDsKK+acnea9riA+IGFzYXNoaW9cIDsKK+miqOa9riA+IGZ1dWNob3VcIDsKK+eQg+W9oiA+IGt5dXVrZWlcIDsKK+iDtOS4rSA+IGRvdW5ha2FcIDsKK+mgmuiCiSA+IGtlaW5pa3VcIDsKK+Wun+WNsCA+IGppdHN1aW5cIDsKK+S9nOS+iyA+IHNha3VyZWlcIDsKK+acrOa1gSA+IGhvbnJ5dXVcIDsKK+WvhuS6iyA+IG1pdHN1amlcIDsKK+S7sOWxsSA+IGd5b3VzYW5cIDsKK+S7j+aBqSA+IGJ1dHN1b25cIDsKK+S7luW+iyA+IHRhcml0c3VcIDsKK+adpeaYpSA+IHJhaWhhcnVcIDsKK+S5s+atryA+IG55dXVzaGlcIDsKK+S8keWgtCA+IGt5dXVqb3VcIDsKK+ePvuW9uSA+IGdlbicnZWtpXCA7CivkuIDnpLwgPiBpY2hpcmVpXCA7CivpoIboia8gPiBqdW5yeW91XCA7Civku5XlvaIgPiBzaGlrYXRhXCA7CivkuIrnn7MgPiB1d2Fpc2hpXCA7CivkuKHnlKggPiByeW91eW91XCA7CivkuKHnlJ8gPiByeW91c2VpXCA7Civlrp/li5kgPiBqaXRzdW11XCA7CivkupTmnIggPiBzYXRzdWtpXCA7CivlrZDlsYAgPiBrb2t5b2t1XCA7CivkuI3nnYAgPiBmdWNoYWt1XCA7CivkuIvnnYAgPiBzaGl0YWdpXCA7CivmnKrmsbogPiBtaWtldHN1XCA7CivlpKfpu5IgPiBkYWlrb2t1XCA7CivmoKHkuoYgPiBrb3VyeW91XCA7CivmmILpgLIgPiBrb3VzaGluXCA7Civku5XluqYgPiBzaGl0YWt1XCA7CivlrablpJYgPiBnYWt1Z2FpXCA7Civlrp/liKkgPiBqaXRzdXJpXCA7CivlrpfljKAgPiBzb3VzaG91XCA7CivpoKzntIUgPiBob29iZW5pXCA7CivlrZDlrq4gPiBzaGlreXV1XCA7CivpnaLplbcgPiBvbW9uYWdhXCA7CivorZjoqp4gPiBzaGlraWdvXCA7CivkvY7kv5cgPiB0ZWl6b2t1XCA7Civlrablo6sgPiBnYWt1c2hpXCA7CivkuIvnm64gPiBzaGl0YW1lXCA7CivlpYfpqqggPiBraWtvdHN1XCA7CivmnY/mnpcgPiBreW91cmluXCA7CivlrZHlrZEgPiBib3VmdXJpXCA7CivogZblvrMgPiBzZWl0b2t1XCA7Civmmpfnt5EgPiBhbnJ5b2t1XCA7CivppqzkuLsgPiBiYW51c2hpXCA7CivnibnotaYgPiB0b2t1c2hhXCA7CivkuI3nmbogPiBmdWhhdHN1XCA7CivkuZ3ms4kgPiBreXV1c2VuXCA7CivkvZXkurogPiBuYW5waXRvXCA7CivkvI/lnKggPiBmdWt1emFpXCA7CivogbflrokgPiBzaG9rdWFuXCA7CivlrprliYcgPiB0ZWlzb2t1XCA7CivmlrDpppkgPiBzaGlua291XCA7Civmma/oibIgPiBrZXNoaWtpXCA7CivlrprliLsgPiB0ZWlrb2t1XCA7CivmnZHmnIkgPiBzb24nJ3l1dVwgOwor5p2Q5pyoID4gemFpbW9rdVwgOwor5pyn5rCXID4gb2Jvcm9nZVwgOwor5LiH55uuID4gYmFubW9rdVwgOwor6LK35b6XID4ga2FpZG9rdVwgOwor6Zyy6aqoID4gcm9rb3RzdVwgOwor5LuP5bqnID4gYnV0c3V6YVwgOwor6aOb5pytID4gaGlzYXRzdVwgOwor5Lyd5ZSxID4gZGVuc2hvdVwgOwor5aSn6be6ID4gZGFpc2FnaVwgOwor5LiK55m9ID4gam91aGFrdVwgOwor6KuW6aeBID4gcm9uYmFrdVwgOwor6aKo5rWBID4gZnV1cnl1dVwgOwor5a2m5aCxID4gZ2FrdWhvdVwgOwor6IKJ5aOwID4gbmlrdXNlaVwgOwor5Luj5bCGID4gZGFpc2hvdVwgOwor6LGK5rKDID4gaG91eW9rdVwgOwor5paw6aSoID4gc2hpbmthblwgOwor5Lya5ZWGID4ga2Fpc2hvdVwgOwor6IGW5bufID4gc2VpYnlvdVwgOwor5a625Li7ID4geWFudXNoaVwgOwor5LiA552AID4gaXRjaGFrdVwgOwor5LiA55y8ID4gaWNoaWdhblwgOwor5LiA55y4ID4gaWNoaWJvdVwgOwor6K2Y6KaLID4gc2hpa2tlblwgOwor5p+Q5Zu9ID4gYm91a29rdVwgOwor5p2J5p2QID4gc3VnaXphaVwgOwor5LuB5b+DID4gamluc2hpblwgOwor5LiA55ygID4gaWNoaW1pblwgOwor5LuB5b6zID4gamludG9rdVwgOwor5a6b5YWIID4gYXRlc2FraVwgOwor55CG5bGIID4gcmlrdXRzdVwgOwor5paw6aKoID4gc2hpbnB1dVwgOwor5LiA55u0ID4gaXRjaG9rdVwgOwor5LuK5bm0ID4ga29uJyduZW5cIDsKK+iDmuS5syA+IGhhaW55dXVcIDsKK+S6jOaXpSA+IGZ1dHN1a2FcIDsKK+aWremjnyA+IGRhbmppa2lcIDsKK+WujOWLnSA+IGthbnNob3VcIDsKK+S5s+ajkiA+IG55dXVib3VcIDsKK+S5neatuyA+IGt5dXVzaGlcIDsKK+S4i+eVpSA+IGdlcnlha3VcIDsKK+eRnuWFhiA+IHp1aWNob3VcIDsKK+aWsOmhlCA+IHNoaW5nYW9cIDsKK+S4h+eXhSA+IG1hbmJ5b3VcIDsKK+iDjOS/oSA+IGhhaXNoaW5cIDsKK+iukuiHoyA+IHphbnNoaW5cIDsKK+S4u+a9riA+IHNodWNob3VcIDsKK+mfu+iEmiA+IGlua3lha3VcIDsKK+S4gOeZuiA+IGlwcGF0c3VcIDsKK+S4iueUsyA+IGpvdXNoaW5cIDsKK+e/vOajnyA+IHlva3V0b3VcIDsKK+S4ieeUtyA+IHNhbicnbmFuXCA7CivmnZDmlpkgPiB6YWlyeW91XCA7Civlrpjlg5ogPiBrYW5yeW91XCA7Civmlofps6UgPiBidW5jaG91XCA7CivkurrlvrMgPiBuaW50b2t1XCA7Civku7DlpKkgPiBneW91dGVuXCA7Civos4rlrrMgPiB6b2t1Z2FpXCA7CivkuK3ngrkgPiBjaHV1dGVuXCA7CivpoYznm64gPiBkYWltb2t1XCA7CivkurrlvaIgPiBuaW5neW91XCA7CivniZvou4ogPiBneXV1c2hhXCA7Civos4rlrZAgPiB6b2t1c2hpXCA7CivmnKzmpa0gPiBob25neW91XCA7CivogIHmnb4gPiByb3VzaG91XCA7Civml6fpgqYgPiBreXV1aG91XCA7Civmnpzlrp8gPiBrYWppdHN1XCA7CivkuIDnlbMgPiBpY2hpam91XCA7CivosqflvLEgPiBoaW5qYWt1XCA7CivniIbpoqggPiBiYWt1ZnV1XCA7CivogIHmnL0gPiByb3VreXV1XCA7Civml6npgJ8gPiBzYXNzb2t1XCA7Civml6fpgZMgPiBreXV1ZG91XCA7CivogIHmnKggPiByb3Vib2t1XCA7Civnibnoqo0gPiB0b2t1bmluXCA7CivkuIDnlLcgPiBpY2hpbmFuXCA7CivmnKzmo5ogPiBob25kYW5hXCA7CivlppnotqMgPiBteW91c2h1XCA7CivpnIrps6UgPiByZWljaG91XCA7CivnianosaEgPiBidXNzaG91XCA7Civku4/lr7ogPiBidXRzdWppXCA7CivmnKvmoqIgPiBtYXNzaG91XCA7Civoq5bpm6MgPiByb24nJ25hblwgOwor5LiK546JID4gam91ZGFtYVwgOwor5a6a5LyRID4gdGVpa3l1dVwgOwor6KuW6ZuGID4gcm9uc2h1dVwgOwor5p6X5a2mID4gcmluZ2FrdVwgOwor5a2m5ZWPID4gZ2FrdW1vblwgOwor6LGq5pePID4gZ291em9rdVwgOwor6IG35aC0ID4gc2hva3ViYVwgOwor5pys5qC8ID4gaG9ua2FrdVwgOwor5aW96YGpID4ga291dGVraVwgOwor5Lya5YmHID4ga2Fpc29rdVwgOwor5Li75rWBID4gc2h1cnl1dVwgOwor5pei6L+wID4ga2lqdXRzdVwgOwor576p54OIID4gZ2lyZXRzdVwgOwor54mp6K2wID4gYnV0c3VnaVwgOwor6LK45a62ID4ga2FzaGl5YVwgOwor5pyJ5q+SID4geXV1ZG9rdVwgOwor5paw6ZaLID4gc2hpbmthaVwgOwor5LiL54mpID4ga2FidXRzdVwgOwor5LuZ5aWzID4gc2VuJydueW9cIDsKK+eIhumbtyA+IGJha3VyYWlcIDsKK+S8j+WLoiA+IGZ1c2V6ZWlcIDsKK+eJueijvSA+IHRva3VzZWlcIDsKK+S4iueJqSA+IGpvdW1vbm9cIDsKK+eLguiAhSA+IGt5b3VzaGFcIDsKK+aeoOWkliA+IHdha3VnYWlcIDsKK+acrOacnSA+IGhvbmNob3VcIDsKK+eJueijhSA+IHRva3Vzb3VcIDsKK+mgmOepuiA+IHJ5b3VrdXVcIDsKK+WtpuWQjSA+IGdha3VtZWlcIDsKK+aXp+i5nyA+IGZ1cnVhdG9cIDsKK+acq+acnyA+IG1hdHN1Z29cIDsKK+acqOadryA+IG1va3VoYWlcIDsKK+isrOirliA+IGJ5dXVyb25cIDsKK+acqOadkCA+IG1va3V6YWlcIDsKK+S6q+W5tCA+IGt5b3VuZW5cIDsKK+WtpuWPiyA+IGdha3V5dXVcIDsKK+eMqeeMqSA+IHNob3Vqb3VcIDsKK+S8keWIiiA+IGt5dXVrYW5cIDsKK+acqOacrCA+IG1va3Vob25cIDsKK+S4i+eGsSA+IGdlbmV0c3VcIDsKK+eJqeiovCA+IGJ1c3Nob3VcIDsKK+WuieS9miA+IGFuJydpdHN1XCA7CivmnaXlvqkgPiByYWlmdWt1XCA7Civml6fot6EgPiBmdXJ1YXRvXCA7Civpm7fps6UgPiByYWljaG91XCA7Civku5nlooMgPiBzZW5reW91XCA7CivkuLnmr5IgPiB0YW5kb2t1XCA7Civml6fotr4gPiBreXV1c2hpXCA7CivmnKjmm5wgPiBtb2t1eW91XCA7Civmm7LmtaYgPiBreW9rdWhvXCA7CivpoZ7nhLwgPiBydWlzaG91XCA7CivpoqjmoLwgPiBmdXVrYWt1XCA7CivnkIPloLQgPiBreXV1am91XCA7Civmnb7lsYsgPiBtYXRzdXlhXCA7CivlrozkuoYgPiBrYW5yeW91XCA7CivpoK3nm64gPiB0b3Vtb2t1XCA7CivkuZ3mnIggPiBrdWdhdHN1XCA7CivkvI/lhbUgPiBmdWt1aGVpXCA7Civnibnono0gPiB0b2t1eXV1XCA7CivkubHmkoMgPiByYW5nZWtpXCA7CivnjaPmrLIgPiBqdXV5b2t1XCA7CivlpKnpoJggPiB0ZW5yeW91XCA7CivosqjlrqIgPiBrYWt5YWt1XCA7CivosYbmnb8gPiBtYW1laXRhXCA7CivlpKnpoIIgPiB0ZW5jaG91XCA7CivmnKjmmJ8gPiBtb2t1c2VpXCA7CivmnJ/mnKsgPiBraW1hdHN1XCA7Civos7zlhaUgPiBrb3VueXV1XCA7CivppIXlsYsgPiBtb2NoaXlhXCA7Civlq6HmiqsgPiBjaGFrdWhpXCA7CivmnJ3mnaUgPiBjaG91cmFpXCA7CivorKzoposgPiBieXV1a2VuXCA7CivpnIfpp60gPiBzaGluZ2FpXCA7CivkuIvngasgPiBzaGl0YWJpXCA7CivosYbmnKwgPiBtYW1laG9uXCA7Civos57lk4EgPiBzaG91aGluXCA7CivlrabliLYgPiBnYWt1c2VpXCA7CivlppnoqIggPiBteW91a2VpXCA7Civku4rlpJUgPiBrb24nJ3l1dVwgOwor54yf54qsID4gcnlvdWtlblwgOwor5Lmd5pifID4ga3l1dXNlaVwgOwor5ae/57W1ID4gc3VnYXRhZVwgOwor5aSx6ZmlID4gc2hpa2thblwgOwor6IG35ZOhID4gc2hva3VpblwgOwor5pa56YedID4gaG91c2hpblwgOwor5aSc6aOfID4geWFzaG9rdVwgOwor55CD5ZujID4ga3l1dWRhblwgOwor5paw6YutID4gc2hpbicnZWlcIDsKK+S4reautSA+IGNodXVkYW5cIDsKK+S4oea0iyA+IHJ5b3V5b3VcIDsKK+WkmumjnyA+IHRhc2hva3VcIDsKK+iCluWDjyA+IHNob3V6b3VcIDsKK+adseWxiyA+IGF6dW1heWFcIDsKK+ism+iqrSA+IGtvdWRva3VcIDsKK+WkqembsiA+IGFtYWd1bW9cIDsKK+S4jea9lCA+IGZ1a2V0c3VcIDsKK+WtpuWGhSA+IGdha3VuYWlcIDsKK+S4reatoyA+IGNodXVzZWlcIDsKK+S4reatoiA+IGNodXVzaGlcIDsKK+aWh+mdqSA+IGJ1bmtha3VcIDsKK+adn+W4ryA+IHNva3V0YWlcIDsKK+acn+aXpSA+IGtpaml0c3VcIDsKK+ism+iplSA+IGtvdWh5b3VcIDsKK+mjn+W+jCA+IHNob2t1Z29cIDsKK+S4jea7hSA+IGZ1bWV0c3VcIDsKK+eMm+eIhiA+IG1vdWJha3VcIDsKK+WtpuWDpyA+IGdha3Vzb3VcIDsKK+acneaWuSA+IGFzYWdhdGFcIDsKK+WklemiqCA+IHl1dWthemVcIDsKK+mfs+evgCA+IG9uc2V0c3VcIDsKK+Wkp+mZuCA+IHRhaXJpa3VcIDsKK+S5s+aIvyA+IG55dXVib3VcIDsKK+S8keS8miA+IGt5dXVrYWlcIDsKK+aWh+mbhiA+IGJ1bnNodXVcIDsKK+S4oeawjyA+IHJ5b3VzaGlcIDsKK+S7j+WbvSA+IGZ1a2tva3VcIDsKK+iBtOWPliA+IGNob3VzaHVcIDsKK+iBt+WNsCA+IHNob2t1aW5cIDsKK+eLrOecvCA+IGRva3VnYW5cIDsKK+acneaUvyA+IGNob3VzZWlcIDsKK+S4i+a5ryA+IHNoaW1veXVcIDsKK+miqOaVmSA+IGZ1dWt5b3VcIDsKK+aWsOmFkiA+IHNoaW5zaHVcIDsKK+WknOmcsiA+IHlvdHN1eXVcIDsKK+mdouiyrCA+IG1lbnNla2lcIDsKK+S6uuWjsCA+IGhpdG9nb2VcIDsKK+ePjeWunSA+IGNoaW5wb3VcIDsKK+e6kui2syA+IHRlbnNva3VcIDsKK+S4u+agvCA+IHNodWtha3VcIDsKK+adkeW6hCA+IHNvbnNob3VcIDsKK+WmhOiplSA+IG1vdWh5b3VcIDsKK+iBt+WLmSA+IHNob2t1bXVcIDsKK+mjr+WxiyA+IG1lc2hpeWFcIDsKK+aYhuiZqyA+IGtvbmNodXVcIDsKK+adv+WjgSA+IGl0YWthYmVcIDsKK+aWsOmDjiA+IHNoaW5yb3VcIDsKK+S6uuWigyA+IGppbmt5b3VcIDsKK+e6j+i2syA+IHRlbnNva3VcIDsKK+S7suWGrCA+IGNodXV0b3VcIDsKK+S5vuW+syA+IGtlbnRva3VcIDsKK+abuOajmiA+IHNob2RhbmFcIDsKK+WlveiqvyA+IGtvdWNob3VcIDsKK+WklemdhCA+IHl1dW1veWFcIDsKK+aWsOmBuCA+IHNoaW5zZW5cIDsKK+adpeWuhSA+IHJhaXRha3VcIDsKK+e9rueJqSA+IG9raW1vbm9cIDsKK+eNhOatuyA+IGdva3VzaGlcIDsKK+acq+aKgCA+IG1hdHN1Z2lcIDsKK+acreaJgCA+IGZ1ZGFzaG9cIDsKK+WklemcpyA+IHl1dWdpcmlcIDsKK+mgkueZvSA+IGhhbnBha3VcIDsKK+aXp+imsyA+IGt5dXVrYW5cIDsKK+S4iua1tyA+IHNoYW5oYWlcIDsKK+aWpOmHjyA+IGtpbnJ5b3VcIDsKK+aWsOmBkyA+IHNoaW5kb3VcIDsKK+S7suWFhCA+IGNodXVrZWlcIDsKK+aXouiorSA+IGtpc2V0c3VcIDsKK+iziuWQjSA+IHpva3VtZWlcIDsKK+aZqeeniyA+IGJhbnNodXVcIDsKK+WlveiplSA+IGtvdWh5b3VcIDsKK+S4iua1gSA+IGpvdXJ5dXVcIDsKK+WsjOWnvyA+IGt5b3VzaGlcIDsKK+aWsOmAoCA+IHNoaW56b3VcIDsKK+S5l+aPmyA+IG5vcmlrYWVcIDsKK+S4iea1gSA+IHNhbnJ5dXVcIDsKK+S4iua0myA+IGpvdXJha3VcIDsKK+mbjOm2jyA+IG1lbmRvcmlcIDsKK+acq+aIkCA+IHVyYW5hcmlcIDsKK+eJh+imqiA+IGthdGFveWFcIDsKK+izoOWEnyA+IGJhaXNob3VcIDsKK+S4iea0iyA+IHNhbicneW91XCA7Civnv4zmmakgPiB5b2t1YmFuXCA7CivkuZ3mi50gPiBreXV1aGFpXCA7Civku67lhY0gPiBrYXJpbWVuXCA7CivkuLjmnZAgPiBtYXJ1emFpXCA7Civku7vkvqAgPiBuaW5reW91XCA7CivkuqzlpKcgPiBreW91ZGFpXCA7Civml6foo70gPiBreXV1c2VpXCA7CivkuLjmnKwgPiBtYXJ1Ym9uXCA7CivogonkvZMgPiBuaWt1dGFpXCA7CivmnIjml6UgPiB0c3VraWhpXCA7CivkuKHmp5ggPiByeW91eW91XCA7CivpnIrplbcgPiByZWljaG91XCA7CivmnInmlpkgPiB5dXVyeW91XCA7Civpm4zps6UgPiBtZW5kb3JpXCA7CivmlbXpmaMgPiB0ZWtpamluXCA7CivpoIXnm64gPiBrb3Vtb2t1XCA7CivlpInpnakgPiBoZW5rYWt1XCA7CivkubHlv4MgPiByYW5zaGluXCA7CivkuIDmtaogPiBpY2hpcm91XCA7CivmlL7ps6UgPiBob3VjaG91XCA7CivlrIzlo7AgPiBreW91c2VpXCA7Civmlpnph5EgPiByeW91a2luXCA7CivogIHlvLEgPiByb3VqYWt1XCA7CivlpJXpl4cgPiB5dXV5YW1pXCA7CivmlbDpmrsgPiBzdXVzZWtpXCA7CivmnL3lu4MgPiBreXV1aGFpXCA7CivosaHlvaIgPiBzaG91a2VpXCA7CivmlrDou4ogPiBzaGluc2hhXCA7CivkuK3mnqIgPiBjaHV1c3V1XCA7CivkuovlsYAgPiBqaWt5b2t1XCA7Civmlofpjq4gPiBidW5jaGluXCA7CivkuKHmo7IgPiByeW91c2VpXCA7Civku67lgJ8gPiBrYXNoYWt1XCA7CivkuK3mnbEgPiBjaHV1dG91XCA7Civku6PlhaUgPiBkYWlueXV1XCA7CivkuIDms6EgPiBoaXRvYXdhXCA7CivmlZnppIogPiBreW91eW91XCA7Civpm6jpoqggPiBhbWVrYXplXCA7CivkuIvmra8gPiBzaGl0YWJhXCA7Civosarlt54gPiBnb3VzaHV1XCA7CivmnIDmlrAgPiBzYWlzaGluXCA7Civku6PlhJ8gPiBkYWlzaG91XCA7Civpnanoo4UgPiBrYXdhc291XCA7Civku4/ljbAgPiBmdXRzdWluXCA7CivkuLvmlZkgPiBzaHVreW91XCA7CivkuIDmsbogPiBpa2tldHN1XCA7Civkuovlrp8gPiBqaWppdHN1XCA7CivkuK3mm7QgPiBjaHV1a291XCA7Civkuojlr58gPiB5b3NhdHN1XCA7CivkuIDmsZcgPiBoaXRvYXNlXCA7Civoq7joqLMgPiBzaG93YWtlXCA7CivmnJ3mhrIgPiBjaG91a2VuXCA7Civlp6bnrZYgPiBrYW5zYWt1XCA7Civku7Lku5UgPiBuYWthc2hpXCA7CivmnKzlv4MgPiBob25zaGluXCA7Civku7Lku4sgPiBjaHV1a2FpXCA7Civku7LkurogPiBuYWtvdWRvXCA7CivkuqzlnLAgPiBreW91Y2hpXCA7CivmnKzlvqkgPiBob25wdWt1XCA7Civosrflj44gPiBiYWlzaHV1XCA7CivmlZnpoK0gPiBreW91dG91XCA7CivkuIDmr6sgPiBpY2hpZ291XCA7CivmnqDlhoUgPiB3YWt1bmFpXCA7CivkuK3mma8gPiBjaHV1a2VpXCA7CivkuIDmr5sgPiBpY2hpbW91XCA7CivogLPlnqIgPiBtaW1pYWthXCA7CivniafojYkgPiBib2t1c291XCA7CivmmYLnr4AgPiBqaXNldHN1XCA7CivpoZXmraMgPiBrZW5zaG91XCA7CivmnbHlm70gPiB0b3Vnb2t1XCA7CivlpKfph48gPiB0YWlyeW91XCA7CivmlZnpnq0gPiBreW91YmVuXCA7CivppKjlhoUgPiBrYW4nJ25haVwgOwor5Lit5pesID4gY2h1dWp1blwgOwor54up54yfID4gc2h1cnlvdVwgOwor5pu05pawID4ga291c2hpblwgOwor57im6ZqUID4ganV1a2FrdVwgOwor5Lit5patID4gY2h1dWRhblwgOwor6ZuR6aeBID4gemFwcGFrdVwgOwor6aCT54uCID4gdG9ua3lvdVwgOwor6Zuo6ZuyID4gYW1hZ3Vtb1wgOwor5aSx6YCPID4gc2hpdHRvdVwgOwor5Lih5pu/ID4gcnlvdWdhZVwgOwor6Zuq6ZqgID4gc2V0Y2hpblwgOwor5pen6JepID4ga3l1dWhhblwgOwor5Lit5pWwID4gY2h1dXN1dVwgOwor5pyr5bqnID4gbWF0c3V6YVwgOwor6aO05Z2KID4gYW1lbmJvdVwgOwor5Luj5L2cID4gZGFpc2FrdVwgOwor5pys5bqBID4gaG9uY2hvdVwgOwor5Li45pCNID4gbWFydXpvblwgOwor5p6X5YaFID4gcmluJyduYWlcIDsKK+acrOW5tCA+IGhvbicnbmVuXCA7Civoq6foqr8gPiBrYWljaG91XCA7CivmnKvluoMgPiBzdWVoaXJvXCA7CivkuK3mlK8gPiBjaHV1c2hpXCA7Civml4HoqLsgPiBib3VjaHV1XCA7Civku6PkvJEgPiBkYWlreXV1XCA7CivniafoiI4gPiBib2t1c2hhXCA7Civku4/lhbcgPiBidXRzdWd1XCA7CivkuqHlm70gPiBib3Vrb2t1XCA7CivorabnrJsgPiBrZWl0ZWtpXCA7CivmnKvluK0gPiBtYXNzZWtpXCA7CivorLnogbQgPiBraW5jaG91XCA7Civoq7jooYwgPiBzaG9neW91XCA7CivnjonluqcgPiBneW9rdXphXCA7CivogIHlsJEgPiByb3VzaG91XCA7CivmnKzlt54gPiBob25zaHV1XCA7Civml6folLUgPiBreXV1em91XCA7CivkuYXmh5AgPiBreXV1a2FpXCA7CivogIHlsIYgPiByb3VzaG91XCA7CivnjJvmr5IgPiBtb3Vkb2t1XCA7Civnt5jpu5kgPiBrYW5tb2t1XCA7Civku4vlhaUgPiBrYWlueXV1XCA7CivmmKjntJkgPiBzYWt1c2hpXCA7CivkuIDmp5ggPiBpY2hpeW91XCA7Civnv5LmhaMgPiBzaHV1a2FuXCA7Civmm53mm7ggPiBiYWt1c2hvXCA7CivkuKHmlrkgPiByeW91aG91XCA7CivosbnlpIkgPiBoeW91aGVuXCA7CivmlZHpm6MgPiBreXV1bmFuXCA7CivnkIPkvZMgPiBreXV1dGFpXCA7CivkuKHmlq0gPiByeW91ZGFuXCA7CivlpaXooYwgPiBva3V5dWtpXCA7CivmnJ3lu7cgPiBjaG91dGVpXCA7CivmlofpgJogPiBidW50c3V1XCA7Civpo5/loakgPiBzaG9rdWVuXCA7CivnhrHpm7IgPiBuZXRzdXVuXCA7Civpm7vpi7MgPiBkZW5jaHV1XCA7CivmlZnploAgPiBreW91bW9uXCA7Civpm5Hpn7MgPiB6YXRzdW9uXCA7Civmlrnop5IgPiBob3VnYWt1XCA7Civni5vniqwgPiBrb21haW51XCA7Civnj43llY8gPiBjaGlubW9uXCA7CivlpLHouKogPiBzaGlzc291XCA7CivniZvoiI4gPiBneXV1c2hhXCA7Civku5nkurogPiBzZW4nJ25pblwgOwor6ZuB6aaWID4gZ2Fua3ViaVwgOwor5pqm5rOVID4gcmVraWhvdVwgOwor5aSp6Lu4ID4gdGVuamlrdVwgOwor6Kqe6YeIID4gZ29zaGFrdVwgOwor5Lq65YmNID4gaGl0b21hZVwgOwor54++5Lu7ID4gZ2VuJyduaW5cIDsKK+WknOmBkyA+IHlvbWljaGlcIDsKK+irluiqvyA+IHJvbmNob3VcIDsKK+S5meW3oSA+IG90c3VqdW5cIDsKK+Wkj+mHjiA+IG5hdHN1bm9cIDsKK+e/kuaApyA+IHNodXVzZWlcIDsKK+WklumDrSA+IGdhaWtha3VcIDsKK+ePjeWTgSA+IGNoaW5waW5cIDsKK+acneW4giA+IGFzYWljaGlcIDsKK+WlieiqrSA+IGhvdWRva3VcIDsKK+WsjOWQjSA+IGt5b3VtZWlcIDsKK+aYvOekvCA+IGNodXVyZWlcIDsKK+eJp+iAhSA+IGJva3VzaGFcIDsKK+eNo+aFviA+IGp1dXlva3VcIDsKK+acq+WwviA+IG1hdHN1YmlcIDsKK+S4i+acnyA+IHNoaW1va2lcIDsKK+Wkp+i6qyA+IHRhaXNoaW5cIDsKK+mgreazqCA+IHRvdWNodXVcIDsKK+aVsOmHjyA+IHN1dXJ5b3VcIDsKK+eHl+mFkiA+IGthbnpha2VcIDsKK+S7leS6iyA+IHNoaWdvdG9cIDsKK+aWsOiogiA+IHNoaW50ZWlcIDsKK+irluiplSA+IHJvbnB5b3VcIDsKK+S4iuacjSA+IHV3YWZ1a3VcIDsKK+acqOWxpSA+IHBva2t1cmlcIDsKK+acq+WvuiA+IG1hdHN1amlcIDsKK+irluiovCA+IHJvbnNob3VcIDsKK+eJqee9riA+IG1vbm9va2lcIDsKK+acjeW+kyA+IGZ1a3VqdXVcIDsKK+S4ieaciCA+IG1pdHN1a2lcIDsKK+acjeW9uSA+IGZ1a3Vla2lcIDsKK+S4oeaQjSA+IHJ5b3V6b25cIDsKK+eJm+iEgiA+IGd5dXVzaGlcIDsKK+eJp+e+iiA+IGJva3V5b3VcIDsKK+aWh+i6qyA+IGJ1bnNoaW5cIDsKK+Wjq+mVtyA+IHNoaWNob3VcIDsKK+WkiemHjyA+IGhlbnJ5b3VcIDsKK+S4h+aciSA+IGJhbicneXV1XCA7CivmnKzlroUgPiBob250YWt1XCA7Civmm7LmioAgPiBreW9rdWdpXCA7CivpnZLom5kgPiBhb2dhZXJ1XCA7CivmnInlvrMgPiB5dXV0b2t1XCA7CivnibnntJogPiB0b2treXV1XCA7CivnjK7mnKggPiBrZW5ib2t1XCA7Civpo5vlnLAgPiB0b2JpY2hpXCA7CivnjKvmnb8gPiBuZWtvaXRhXCA7Civml6Xoi7EgPiBuaWNoaWVpXCA7Civku4/kuosgPiBidXRzdWppXCA7Civoq4vorIEgPiBzZWlldHN1XCA7CivmmJPntYwgPiBla2lreW91XCA7Civoqanpm4YgPiBzaGlzaHV1XCA7Civosp3libIgPiBrYWl3YXJpXCA7CivkuI3ml6UgPiBmdWppdHN1XCA7CivmmpbmtYEgPiBkYW5yeXV1XCA7CivkuIDmnaEgPiBpY2hpam91XCA7CivpnZLomasgPiBhb211c2hpXCA7Civoq5Lop6MgPiByeW91a2FpXCA7CivmlLnpnakgPiBrYWlrYWt1XCA7CivkuIrmmIcgPiBqb3VzaG91XCA7CivkuInmmKUgPiBzYW5zaHVuXCA7CivmnL3lo4ogPiBreXV1a2FpXCA7CivkuIDmnK0gPiBpc3NhdHN1XCA7CivogJDlnKcgPiB0YWlhdHN1XCA7CivkuIDmnJsgPiBpY2hpYm91XCA7CivmlrDoo4UgPiBzaGluc291XCA7CivnuKvph50gPiBudWliYXJpXCA7Civku4HkvqAgPiBqaW5reW91XCA7CivpoILngrkgPiBjaG91dGVuXCA7CivkuIDmm7IgPiBpa2t5b2t1XCA7CivkuLnlv7UgPiB0YW4nJ25lblwgOwor6Z+z54mpID4gaW5tb3RzdVwgOwor5pel6IieID4gbmljaGlidVwgOwor5pen6IeYID4ga3l1dXJvdVwgOwor542j5b+DID4ganV1c2hpblwgOwor6KuL6KiXID4gc2VpdGFrdVwgOwor5Li55b+DID4gdGFuc2hpblwgOwor6ICB5aKDID4gcm91a3lvdVwgOwor5Li75b25ID4gc2h1eWFrdVwgOwor5aSn6LOeID4gdGFpc2hvdVwgOwor5LuK5LiAID4gaW1haWNoaVwgOwor5LiH5pabID4gYmFua29rdVwgOwor5LiJ5pWZID4gc2Fua3lvdVwgOwor5LiA5pmpID4gaGl0b2JhblwgOwor6aCY5rW3ID4gcnlvdWthaVwgOwor5Li75by1ID4gc2h1Y2hvdVwgOwor5aSp6LGhID4gdGVuc2hvdVwgOwor5pmp54afID4gYmFuanVrdVwgOwor5aal57WQID4gZGFrZXRzdVwgOwor5pil56eLID4gaGFydWFraVwgOwor6LKp5L+DID4gaGFuc29rdVwgOwor54mb57y2ID4gZ3l1dWthblwgOwor5pyA5by3ID4gc2Fpa3lvdVwgOwor5aSJ6YCfID4gaGVuc29rdVwgOwor5aSJ6YCaID4gaGVudHN1dVwgOwor54uC54qsID4ga3lvdWtlblwgOwor57+M5bm0ID4geW9rdW5lblwgOwor5pmp54WnID4gYmFuc2hvdVwgOwor6Kyb57+SID4ga291c2h1dVwgOwor5paH6LKsID4gYnVuc2VraVwgOwor5pqX5q66ID4gYW5zYXRzdVwgOwor5pW16LuNID4gdGVraWd1blwgOwor54m5562JID4gdG9rdXRvdVwgOwor54mH6IWVID4ga2F0YXVkZVwgOwor5aWH6KGTID4ga2lqdXRzdVwgOwor5LiA5pesID4gaWNoaWp1blwgOwor5Lme5am/ID4ga29pbXVrb1wgOwor6aC45qSOID4ga2VpdHN1aVwgOwor6LKs5Lu7ID4gc2VraW5pblwgOwor6aGU5paZID4gZ2FucnlvdVwgOwor6KqV6L6wID4gdGFuc2hpblwgOwor5pac6KeSID4gc2hha2FrdVwgOwor5pyr5aWzID4gbWF0c3Vqb1wgOwor6aGV5pWZID4ga2Vua3lvdVwgOwor5Lit5oCnID4gY2h1dXNlaVwgOwor5pyx5aKoID4gc2h1Ym9rdVwgOwor5LiB5pWwID4gY2hvdXN1dVwgOwor5LiA5paHID4gaWNoaW1vblwgOwor5peX6ImyID4gaGF0YWlyb1wgOwor5pqX5qydID4gYW4nJ3V0c3VcIDsKK+Wls+iJsiA+IGpvc2hva3VcIDsKK+aXp+iBniA+IGt5dXVidW5cIDsKK+eJh+iCuiA+IGthdGFoYWlcIDsKK+S4u+W4rSA+IHNodXNla2lcIDsKK+aUr+manCA+IHNoaXNob3VcIDsKK+acseWhlyA+IHNodW51cmlcIDsKK+S7gOS4gCA+IGp1dWljaGlcIDsKK+mgmOawtCA+IHJ5b3VzdWlcIDsKK+mdouiItSA+IG9tb2thamlcIDsKK+mgmOawkSA+IHJ5b3VtaW5cIDsKK+S4uOW4ryA+IG1hcnVvYmlcIDsKK+e3j+mrmCA+IHNvdWRha2FcIDsKK+isgOiHoyA+IGJvdXNoaW5cIDsKK+WjsOmHjyA+IHNlaXJ5b3VcIDsKK+acp+WknCA+IG9ib3JveW9cIDsKK+Wkiei6qyA+IGhlbnNoaW5cIDsKK+WjgemdoiA+IGhla2ltZW5cIDsKK+e/sOWiqCA+IGthbmJva3VcIDsKK+S5meWnqyA+IG90b2hpbWVcIDsKK+eOhOWmmSA+IGdlbm15b3VcIDsKK+e+uOW8sSA+IHJ1aWpha3VcIDsKK+WkqeiqhSA+IHRlbmNodXVcIDsKK+S5neWkqSA+IGt5dXV0ZW5cIDsKK+S5neWkpyA+IGt5dXVkYWlcIDsKK+S4ieaMryA+IHNhbnNoaW5cIDsKK+S6jOWNgSA+IGhhdGFjaGlcIDsKK+S4jeaKnCA+IGZ1YmF0c3VcIDsKK+S4reW6uCA+IGNodXV5b3VcIDsKK+mhleaPmiA+IGtlbicneW91XCA7CivlpKfoqbAgPiBvb2R6dW1lXCA7CivkuKHmgKcgPiByeW91c2VpXCA7Civoqr/oo70gPiBjaG91c2VpXCA7CivosarllYYgPiBnb3VzaG91XCA7Civmlofoqr8gPiBidW5jaG91XCA7CivlpKfoqZQgPiB0YWlzaG91XCA7Civmm7LluqYgPiBreW9rdWRvXCA7CivkuK3lubQgPiBjaHV1bmVuXCA7Civnt6jpm4YgPiBoZW5zaHV1XCA7CivkuIDmj6EgPiBpY2hpYWt1XCA7Civmm7LluocgPiBreW9rdWhpXCA7CivlqYnmm7IgPiBlbmt5b2t1XCA7Civoqqzoq60gPiBzZXRzdXl1XCA7Civni4LngL4gPiBreW91cmFuXCA7CivkuqTkv6EgPiBrb3VzaGluXCA7CivkuK3luL0gPiBjaHV1Ym91XCA7CivmmKXnnKAgPiBzaHVubWluXCA7CivpoKzmoYEgPiBob29nZXRhXCA7CivkuK3lt7sgPiBjaHV1a2FuXCA7Civniafnq6UgPiBib2t1ZG91XCA7CivmnbHkuqwgPiB0b3VreW91XCA7CivmnKzlm70gPiBob25nb2t1XCA7CivoqqzoqbEgPiBzZXRzdXdhXCA7Civpo5/liLggPiBzaG9ra2VuXCA7CivkuLvlsIYgPiBzaHVzaG91XCA7CivmnaXkv6EgPiByYWlzaGluXCA7CivmnIDlsJEgPiBzYWlzaG91XCA7CivmnIDlsI8gPiBzYWlzaG91XCA7CivkuLvlr6kgPiBzaHVzaGluXCA7CivkuozliJcgPiBuaXJldHN1XCA7CivkuIDmi6wgPiBpa2thdHN1XCA7CivpnZ7ogbcgPiBoaXNob2t1XCA7CivmlLnpi7MgPiBrYWljaHV1XCA7CivnjJvmkoMgPiBtb3VnZWtpXCA7CivmlY/pgJ8gPiBiaW5zb2t1XCA7CivpoKzmnZYgPiBob29kenVlXCA7CivmlrDokZcgPiBzaGluY2hvXCA7Civnj43ku4AgPiBjaGluanV1XCA7Civnvp7mgaUgPiBzaHV1Y2hpXCA7CivkuZ3lnLAgPiBreXV1Y2hpXCA7CivmmI7norogPiBtZWlrYWt1XCA7Civnt4/poY0gPiBzb3VnYWt1XCA7CivkuozlhasgPiBuaWhhY2hpXCA7Civoq6voh6MgPiBrYW5zaGluXCA7CivpnZnogbQgPiBzZWljaG91XCA7Civmma/ms4EgPiBrZWlreW91XCA7Civnt4/poJggPiBzb3VyeW91XCA7Civml6XntaYgPiBuaWtreXV1XCA7CivlpKfooYYgPiB0YWlzaHV1XCA7CivmnLHllIcgPiBzaHVzaGluXCA7Civpm4bph5EgPiBzaHV1a2luXCA7Civpm6jotrMgPiBhbWVhc2hpXCA7CivmlbToqr8gPiBzZWljaG91XCA7CivmlbfoqK0gPiBmdXNldHN1XCA7CivmmqbmlbAgPiByZWtpc3V1XCA7CivmlrDojLYgPiBzaGluY2hhXCA7CivpoqjlnKcgPiBmdXVhdHN1XCA7Civnt4/pnakgPiBzb3VnYXdhXCA7CivkuK3lsIogPiBjaHV1em9uXCA7CivlpJbop5IgPiBnYWlrYWt1XCA7CivkuK3lsIYgPiBjaHV1am91XCA7CivmmI7nnq0gPiBtZWlyeW91XCA7CivnuLfoqqwgPiBydXNldHN1XCA7Civpm4bphY0gPiBzaHV1aGFpXCA7CivmnIjlpK4gPiBnZXRzdW91XCA7CivkuK3lrq4gPiBjaHV1Z3V1XCA7Civntr/po7QgPiB3YXRhYW1lXCA7CivmnIjlpJwgPiB0c3VraXlvXCA7CivniYjnsY0gPiBoYW5zZWtpXCA7CivlpInoqr8gPiBoZW5jaG91XCA7CivkuInlvrMgPiBzYW50b2t1XCA7CivpmbDprLEgPiBpbicndXRzdVwgOwor57eR6ZmwID4gcnlva3VpblwgOwor5pW16KaWID4gdGVraXNoaVwgOwor6Kyb56m2ID4ga291a3l1dVwgOwor5pS+6YC4ID4gaG91aXRzdVwgOwor5LiK5b25ID4gdXdheWFrdVwgOwor5aKX6aGNID4gem91Z2FrdVwgOwor5LiA5oGvID4gaGl0b2lraVwgOwor5paw6IiIID4gc2hpbmtvdVwgOwor5Lmz5YmkID4gbnl1dXphaVwgOwor5piO55m9ID4gbWVpaGFrdVwgOwor5pS56YCyID4ga2Fpc2hpblwgOwor5LiL5bqnID4gc2hpbW96YVwgOwor6KyZ56ewID4ga2Vuc2hvdVwgOwor6aCY5pyJID4gcnlvdXl1dVwgOwor5LiA5b+1ID4gaWNoaW5lblwgOwor5LiH5byVID4gbWFuYmlraVwgOwor6ICV5L2cID4ga291c2FrdVwgOwor54m555SjID4gdG9rdXNhblwgOwor6aGV5b2wID4ga2Vuc2hvdVwgOwor5pyo5Y+jID4ga2lndWNoaVwgOwor5LiA5b65ID4gaXR0ZXRzdVwgOwor6aGU5b25ID4ga2FveWFrdVwgOwor57+75Yi7ID4gaG9ua29rdVwgOwor6aOf5LqLID4gc2hva3VqaVwgOwor57eP6ZW3ID4gc291Y2hvdVwgOwor5LiJ5bm0ID4gc2FuJyduZW5cIDsKK+aXpeeriyA+IGhpdGFjaGlcIDsKK+aVkeiypyA+IGt5dXVoaW5cIDsKK+aWreiFuCA+IGRhbmNob3VcIDsKK+S4iuW4rSA+IGpvdXNla2lcIDsKK+iqjeiovCA+IG5pbnNob3VcIDsKK+adj+S7gSA+IGt5b3VuaW5cIDsKK+S4h+W5tCA+IG1hbicnbmVuXCA7CivniannmoQgPiBidXR0ZWtpXCA7Civml6fnqL8gPiBreXV1a291XCA7CivpmbjpoqggPiByaWt1ZnV1XCA7CivkuIDlvI8gPiBpc3NoaWtpXCA7CivmnJfllLEgPiByb3VzaG91XCA7Civni4LmrbsgPiBreW91c2hpXCA7CivogIHlg5UgPiByb3Vib2t1XCA7CivnvqTlsI8gPiBndW5zaG91XCA7Civnirbms4EgPiBqb3VreW91XCA7CivmlrDogZ4gPiBzaGluYnVuXCA7CivkuK3lpK0gPiBjaHV1eW91XCA7CivmnKzliYcgPiBob25zb2t1XCA7CivkuK3lpKkgPiBjaHV1dGVuXCA7CivntrHpoJggPiBrb3VyeW91XCA7CivkuK3lpJYgPiBjaHV1Z2FpXCA7CivmlZnoqqggPiBreW91a2FpXCA7CivlpbTnrYkgPiB5YXRzdXJhXCA7Civni6zmlq0gPiBkb2t1ZGFuXCA7CivoqbDosqwgPiBraXNzZWtpXCA7CivogJDkuYUgPiB0YWlreXV1XCA7CivpmorplbcgPiB0YWljaG91XCA7Civpm6Poqq0gPiBuYW5kb2t1XCA7CivpoaflrqIgPiBrb2t5YWt1XCA7Civni6zmlocgPiBkb2t1YnVuXCA7CivkuIDluJYgPiBpY2hpam91XCA7Civml5fnq78gPiBoYXRhemFvXCA7CivpnIrolqwgPiByZWl5YWt1XCA7CivkuIDlt6EgPiBpY2hpanVuXCA7CivnhLzpppkgPiBzaG91a291XCA7CivmlZnoqJMgPiBreW91a3VuXCA7CivkuI3lsYggPiBmdWt1dHN1XCA7CivmnKjliIAgPiBib2t1dG91XCA7CivntprpqLAgPiB6b2t1dG91XCA7CivmlrDnvoUgPiBzaGlyYWdpXCA7Civlo7Doqr8gPiBzZWljaG91XCA7CivlopfplbcgPiB6b3VjaG91XCA7CivmmoHmmJ8gPiBneW91c2VpXCA7Civpmbrpm6MgPiBrZW4nJ25hblwgOwor5LiK5bGlID4gdXdhYmFraVwgOwor5pys5YWDID4gaG9ubW90b1wgOwor5Lit5aCFID4gY2h1dWtlblwgOwor5Lit5aCCID4gY2h1dWRvdVwgOwor5aSP6JqVID4gbmF0c3Vnb1wgOwor5LiJ5bC6ID4gc2FuamFrdVwgOwor5aSp6I2JID4gdGVuZ3VzYVwgOwor5pyI5ZWGID4gZ2Vzc2hvdVwgOwor57ea6YePID4gc2VucnlvdVwgOwor5LiN5a6fID4gZnVqaXRzdVwgOwor6Z2i56mNID4gbWVuc2VraVwgOwor5LiL5a6/ID4gZ2VzaHVrdVwgOwor6K2w5rG6ID4gZ2lrZXRzdVwgOwor5Lmx5L2cID4gcmFuc2FrdVwgOwor5LiL5a62ID4gc2hpdGF5YVwgOwor5LiK5a6/ID4gam91eWFkb1wgOwor6LGK5Ye2ID4gaG91a3lvdVwgOwor54yf5birID4gcnlvdXNoaVwgOwor5pen55+lID4ga3l1dWNoaVwgOwor54mb55eYID4gZ3l1dXRvdVwgOwor6Kmz6KuWID4gc2hvdXJvblwgOwor54mp55CGID4gYnV0c3VyaVwgOwor5pu05ZywID4gc2FyYWNoaVwgOwor54mb55arID4gZ3l1dWVraVwgOwor5pyo5YOPID4gbW9rdXpvdVwgOwor5pyd5YiKID4gY2hvdWthblwgOwor5pyd5YeqID4gYXNhbmFnaVwgOwor5Li75ZSxID4gc2h1c2hvdVwgOwor57eo6LyvID4gaGVuc2h1dVwgOwor5LiA5bGAID4gaWtreW9rdVwgOwor5LiA5bC6ID4gaXNzaGFrdVwgOwor54us5o6iID4gZG9rdXRhblwgOwor57eR6YeOID4gcnlva3V5YVwgOwor5LiD5a6dID4gc2hpcHBvdVwgOwor6Kmz6KiAID4gc2hvdWdlblwgOwor57eP6YePID4gc291cnlvdVwgOwor5pen55ukID4ga3l1dWJhblwgOwor6Kmz6KejID4gc2hvdWthaVwgOwor5aWR57SEID4ga2VpeWFrdVwgOwor6Zuj6KGMID4gbmFuZ3lvdVwgOwor5pyI5Y+OID4gZ2Vzc2h1dVwgOwor6ZuR6KmxID4gemF0c3V3YVwgOwor5pen55uGID4ga3l1dWJvblwgOwor5LiA5a6/ID4gaXNzaHVrdVwgOwor5Lmx5LiBID4gcmFuY2hvdVwgOwor54Sh6aqoID4gYnVrb3RzdVwgOwor5aOy6KGMID4gdXJleXVraVwgOwor6aCB5pWwID4gcMSTamlzdXVcIDsKK+aWree2miA+IGRhbnpva3VcIDsKK+mfs+absiA+IG9uZ3lva3VcIDsKK+S4gOWtmCA+IGljaGl6b25cIDsKK+WkleiPhSA+IHl1dXN1Z2VcIDsKK+aWveetliA+IHNoaXNha3VcIDsKK+aXpeeZvSA+IG5pcHBha3VcIDsKK+Wkp+iFuCA+IGRhaWNob3VcIDsKK+eJoueNhCA+IHJvdWdva3VcIDsKK+eKrOaphyA+IGludXpvcmlcIDsKK+S4juWlqiA+IHlvZGF0c3VcIDsKK+acrOS6uiA+IGhvbicnbmluXCA7CivpmaTpm6ogPiBqb3NldHN1XCA7Civnhp/oq4cgPiBqdWt1ZGFuXCA7CivlpLHogIMgPiBzaGlra291XCA7CivniaHnjKsgPiBvc3VuZWtvXCA7CivmmanmmKUgPiBiYW5zaHVuXCA7CivlpJzoibIgPiB5YXNob2t1XCA7Civni6zmiL8gPiBkb2t1Ym91XCA7Civmma/mlZkgPiBrZWlreW91XCA7CivkuK3llZMgPiBjaHV1a2VpXCA7CivmlrDnsbMgPiBzaGlubWFpXCA7CivmlrnnrZYgPiBob3VzYWt1XCA7Civniqzmp5kgPiBpbnVtYWtpXCA7CivmnKjku48gPiBraWJ1dHN1XCA7Civml6nnlaogPiBoYXlhYmFuXCA7CivlpJroibIgPiB0YXNob2t1XCA7CivmmqblubQgPiByZWtpbmVuXCA7CivmnKzkuLggPiBob25tYXJ1XCA7CivmmanmlrkgPiBiYW5nYXRhXCA7CivlpKnogbQgPiB0ZW5jaG91XCA7Civnua3ntKwgPiBrZW5jaHV1XCA7CivnjJ/lrpggPiByeW91a2FuXCA7CivpnZLnpaggPiBzZWloeW91XCA7CivosYrkvZwgPiBob3VzYWt1XCA7CivnjJvlsIYgPiBtb3VzaG91XCA7Civpoqjkv5cgPiBmdXV6b2t1XCA7Civni4LmmrQgPiBreW91Ym91XCA7CivkuIrlo7AgPiBqb3VzaG91XCA7CivkuIjlpKsgPiBtYXN1cmFvXCA7CivmnIjliKkgPiBnZXRzdXJpXCA7CivmlLnoqLMgPiBrYWl5YWt1XCA7Civlopfph48gPiB6b3VyeW91XCA7Civpm7bokL0gPiByZWlyYWt1XCA7CivkuLjljYEgPiBtYXJ1anV1XCA7Civpm4boqIggPiBzaHV1a2VpXCA7CivoqbHooZMgPiB3YWp1dHN1XCA7CivniZ3niqwgPiBtZXN1aW51XCA7Civnhp/opqcgPiBqdWt1cmFuXCA7Civnhp/oppYgPiBqdWt1c2hpXCA7CivpnaLnm64gPiBtZW5tb2t1XCA7CivnhY7pjYsgPiBpcmluYWJlXCA7CivnjoTkurogPiBrdXJvdXRvXCA7Civmlq3nrrEgPiBkYW5iYWtvXCA7CivmnJ3kvJogPiBjaG91a2FpXCA7CivloavpmpkgPiB0ZW5nZWtpXCA7CivkuIrloZcgPiB1d2FudXJpXCA7CivkuIDlpoIgPiBpY2hpbnlvXCA7CivkuI3ln5IgPiBmdXJhY2hpXCA7Civnt4rov6sgPiBraW5wYWt1XCA7CivkuIflooMgPiBiYW5reW91XCA7Civoq5bnrZYgPiByb25zYWt1XCA7CivoqLPovIkgPiB5YWt1c2FpXCA7CivmnInlhJ8gPiB5dXVzaG91XCA7CivmmI7mvoQgPiBtZWljaG91XCA7CivkuIDlpKcgPiBpY2hpZGFpXCA7CivoqZXoq5YgPiBoeW91cm9uXCA7Civoqr/nt7QgPiBjaG91cmVuXCA7CivkuK3ljp8gPiBjaHV1Z2VuXCA7CivoqqTohLEgPiBnb2RhdHN1XCA7Civni4LmlocgPiBreW91YnVuXCA7Civoqq3ogIUgPiBkb2t1c2hhXCA7Civlo7LolqwgPiBiYWl5YWt1XCA7CivosYbkubMgPiB0b3VueXV1XCA7CivkuIDlo7AgPiBoaXRva29lXCA7CivpnIrogokgPiByZWluaWt1XCA7CivkuK3ljYogPiBjaHV1aGFuXCA7CivmlpnntJkgPiByeW91c2hpXCA7CivmlbTohbggPiBzZWljaG91XCA7CivkuIvlnLAgPiBzaGl0YWppXCA7CivmlrDnqK4gPiBzaGluc2h1XCA7CivlopfpgLIgPiB6b3VzaGluXCA7CivpnaLnlpQgPiBtZW5jaG91XCA7CivpoILmiLQgPiBjaG91ZGFpXCA7Civoq5bnqbYgPiByb25reXV1XCA7CivmlrDnqI4gPiBzaGluemVpXCA7CivpmY3pm7kgPiBrb3VoeW91XCA7CivpnZnnmoQgPiBzZWl0ZWtpXCA7CivoqZXoqIAgPiBoeW91Z2VuXCA7CivkuIvlm7MgPiBzaGl0YXp1XCA7CivkuIDloYEgPiBpY2hpcnVpXCA7CivmlLnooYwgPiBrYWlneW91XCA7CivkuIDloLQgPiBpY2hpam91XCA7CivkuLjlhawgPiBtYXJ1a291XCA7Civoqp7ohIggPiBnb215YWt1XCA7Civlpb3nkIMgPiBrb3VreXV1XCA7CivkuInlm70gPiBzYW5nb2t1XCA7CivkuKHlkI0gPiByeW91bWVpXCA7Civpmo/ouqsgPiB6dWlzaGluXCA7CivkuIDloIIgPiBpY2hpZG91XCA7CivkuIflm70gPiBiYW5rb2t1XCA7CivnhKHpm5EgPiBtdXphdHN1XCA7CivkuK3liY0gPiBjaHV1emVuXCA7CivopqrpuJ4gPiBzaGlucmFuXCA7CivmlpnnsKEgPiByeW91a2VuXCA7Civpm7vohLMgPiBkZW4nJ25vdVwgOwor5Lit5YikID4gY2h1dWJhblwgOwor5Lit5YiGID4gY2h1dWJ1blwgOwor57W26aCCID4gemV0Y2hvdVwgOwor6aCR5by3ID4gZ2Fua3lvdVwgOwor5pen54mIID4ga3l1dWJhblwgOwor57mL57ibID4ga2VpYmFrdVwgOwor5peP55SfID4gem9rdXNlaVwgOwor6KuH56yRID4gZGFuc2hvdVwgOwor5aSq57O4ID4gZnV0b2l0b1wgOwor5aeL5qWtID4gc2hpZ3lvdVwgOwor5LiA5ZujID4gaWNoaWRhblwgOwor6KiY6L+wID4ga2lqdXRzdVwgOwor5pep54afID4gc291anVrdVwgOwor6KqH6ImyID4ga29zaG9rdVwgOwor6KiX6YCBID4gdGFrdXNvdVwgOwor6KiI6YePID4ga2VpcnlvdVwgOwor57Wx6aCYID4gdG91cnlvdVwgOwor6ZuM6JiCID4gbWVzaGliZVwgOwor5Lit5YWDID4gY2h1dWdlblwgOwor6aCG5b+cID4ganVuJydub3VcIDsKK+mZuOmAgSA+IHJpa3Vzb3VcIDsKK+aciOS6iyA+IGdldHN1amlcIDsKK+imqumzpSA+IG95YWRvcmlcIDsKK+e1pumkiiA+IGt5dXV5b3VcIDsKK+eJueautSA+IHRva3VkYW5cIDsKK+S4oeWJjSA+IHJ5b3VtYWVcIDsKK+Wkp+eykiA+IG9vdHN1YnVcIDsKK+S4ieWUsSA+IHNhbnNob3VcIDsKK+S4iuWUhyA+IGpvdXNoaW5cIDsKK+iok+i/qiA+IGt1bnRla2lcIDsKK+eJueauiiA+IHRva3VzaHVcIDsKK+iqrOe1jCA+IHNla2t5b3VcIDsKK+Wig+mBhyA+IGt5b3VndXVcIDsKK+aXpeeFpyA+IG5pc3Nob3VcIDsKK+aVkeiNkiA+IGt5dXVrb3VcIDsKK+ippuiWrCA+IHNoaXlha3VcIDsKK+ipkOihkyA+IHNhanV0c3VcIDsKK+S4oeWIhiA+IHJ5b3VidW5cIDsKK+mbjOiViiA+IG1lc2hpYmVcIDsKK+S4oeWIgCA+IHJ5b3V0b3VcIDsKK+aSpemfsyA+IGhhdHN1b25cIDsKK+abuOS/oSA+IHNob3NoaW5cIDsKK+aZguaXpSA+IGppaml0c3VcIDsKK+S4gOWWnSA+IGlra2F0c3VcIDsKK+S4jeWQiSA+IGZ1a2l0c3VcIDsKK+e3qeihnSA+IGthbnNob3VcIDsKK+S4iuWRiiA+IGpvdWtva3VcIDsKK+S4oeWFqCA+IHJ5b3V6ZW5cIDsKK+mZuOi7jSA+IHJpa3VndW5cIDsKK+S4oeWFmiA+IHJ5b3V0b3VcIDsKK+S4gOWVjyA+IGljaGltb25cIDsKK+iovOiogCA+IHNob3VnZW5cIDsKK+aYh+axniA+IHNob3Vrb3VcIDsKK+mbqOiEmiA+IGFtZWFzaGlcIDsKK+aWsOebpCA+IHNoaW5iYW5cIDsKK+iou+inoyA+IGNodXVrYWlcIDsKK+mfu+W+iyA+IGlucml0c3VcIDsKK+aatOWcpyA+IGJvdWF0c3VcIDsKK+WkqeeruiA+IHRlbmppa3VcIDsKK+ioseirviA+IGt5b2Rha3VcIDsKK+eIhueglSA+IGJha3VzYWlcIDsKK+S4oeWDjyA+IHJ5b3V6b3VcIDsKK+eLguaFiyA+IGt5b3V0YWlcIDsKK+Wkp+eskSA+IHRhaXNob3VcIDsKK+Wpv+WFpSA+IG11a29pcmlcIDsKK+ios+ipqSA+IHlha3VzaGlcIDsKK+aYh+auvyA+IHNob3VkZW5cIDsKK+mbouiEsSA+IHJpZGF0c3VcIDsKK+ios+ipniA+IHlha3VzaGlcIDsKK+aYh+autSA+IHNob3VkYW5cIDsKK+eJp+awkSA+IGJva3VtaW5cIDsKK+WkqeeqkyA+IHRlbm1hZG9cIDsKK+S4gOWRvSA+IGljaGltZWlcIDsKK+aVmeiCsiA+IGt5b3Vpa3VcIDsKK+S4gOWRsyA+IGhpdG9hamlcIDsKK+WkseemgSA+IHNoaWtraW5cIDsKK+e3j+iplSA+IHNvdWh5b3VcIDsKK+WmmeazlSA+IG15b3Vob3VcIDsKK+e1pumbuyA+IGt5dXVkZW5cIDsKK+S4reS7lSA+IG5ha2FzaGlcIDsKK+imqumqqCA+IG95YWJvbmVcIDsKK+aWh+eroCA+IGJ1bnNob3VcIDsKK+abuOS4rSA+IHNob2NodXVcIDsKK+S4h+WNmiA+IGJhbnBha3VcIDsKK+S4gOWQjSA+IGljaGltZWlcIDsKK+S4gOWQjCA+IGljaGlkb3VcIDsKK+mfs+W+iyA+IG9ucml0c3VcIDsKK+S4i+WKoyA+IGdlcmV0c3VcIDsKK+mbo+iBtCA+IG5hbmNob3VcIDsKK+S4gOWPtyA+IGljaGlnb3VcIDsKK+S4gOWPsCA+IGljaGlkYWlcIDsKK+mbouiBtyA+IHJpc2hva3VcIDsKK+S4ieWKqSA+IHNhbnN1a2VcIDsKK+S4oeS+vyA+IHJ5b3ViZW5cIDsKK+aYpeacrCA+IHNodW5wb25cIDsKK+S4g+WNgSA+IG5hbmFqdXVcIDsKK+S4reS4liA+IGNodXVzZWlcIDsKK+imv+mdoiA+IHRla2ltZW5cIDsKK+WkqeemjyA+IHRlbnB1a3VcIDsKK+aWsOeUsCA+IHNoaW5kZW5cIDsKK+S4h+WKmyA+IG1hbnJpa2lcIDsKK+aWsOeUnyA+IHNoaW5zZWlcIDsKK+S4iuWIuyA+IGpvdWtva3VcIDsKK+S4geWNiiA+IGNob3VoYW5cIDsKK+Wkp+emjyA+IGRhaWZ1a3VcIDsKK+mhmOWKmyA+IGdhbnJpa2lcIDsKK+WkqeelkCA+IHRlbicneXV1XCA7CivmmKjmmakgPiBzYWt1YmFuXCA7CivmmanlubQgPiBiYW4nJ25lblwgOwor54Wn6KanID4gc2hvdXJhblwgOwor5pil5pqWID4gc2h1bmRhblwgOwor57eK6KaBID4ga2luJyd5b3VcIDsKK+S4gOWLuiA+IGlzc2hha3VcIDsKK+iqk+e0hCA+IHNlaXlha3VcIDsKK+aZuuWwhiA+IGNoaXNob3VcIDsKK+WmqOalrSA+IGJvdWd5b3VcIDsKK+ipqeiIiCA+IHNoaWt5b3VcIDsKK+S4oeS6uiA+IHJ5b3VuaW5cIDsKK+ims+mfsyA+IGthbicnbm9uXCA7CivmmYLmipggPiB0b2tpb3JpXCA7Civnib3mnZ8gPiBrZW5zb2t1XCA7CivmkrDpjLIgPiBzZW5yb2t1XCA7CivmlLnoia8gPiBrYWlyeW91XCA7Civmlr3niakgPiBzZW1vdHN1XCA7Civlpa7mv4AgPiBmdW5nZWtpXCA7CivkuKHkuIkgPiByeW91c2FuXCA7Civpm7vnrpcgPiBkZW5zb3JvXCA7CivopqrpoZ4gPiBzaGlucnVpXCA7Civni6zlpY8gPiBkb2t1c291XCA7CivntZDpnLIgPiBrZXRzdXJvXCA7Civml6fms5UgPiBreXV1aG91XCA7CivmlZnnt7QgPiBreW91cmVuXCA7CivnibnmnIkgPiB0b2t1eXV1XCA7CivkuIrlgbQgPiB1d2FnYXdhXCA7CivmmbblrZAgPiBzaG91c2hpXCA7CivnuKbns7ggPiB0YXRlaXRvXCA7CivkuIDlhoogPiBpc3NhdHN1XCA7Civlp6bmgqogPiBrYW4nJ2FrdVwgOwor6KeS6YyQID4ga2FrdXN1aVwgOwor57WQ6ZuGID4ga2Vzc2h1dVwgOwor5LiL5YCkID4gc2hpdGFuZVwgOwor5aWz5rmvID4gb24nJ25heXVcIDsKK+S4gOWFgyA+IGljaGlnZW5cIDsKK+e+heWIlyA+IHJhcmV0c3VcIDsKK+aaluWbvSA+IGRhbmtva3VcIDsKK+eIvea2vCA+IHNvdXJ5b3VcIDsKK+WkqeecnyA+IHRlbnNoaW5cIDsKK+mZs+isnSA+IGNoaW5zaGFcIDsKK+aWkeeZvSA+IGhhbnBha3VcIDsKK+S4gOWEhCA+IGljaGlva3VcIDsKK+iok+iqrSA+IGt1bmRva3VcIDsKK+S4mOS4iiA+IGt5dXVqb3VcIDsKK+eIm+eGnyA+IHJhbmp1a3VcIDsKK+WlveazgSA+IGtvdWt5b3VcIDsKK+aXouaxuiA+IGtpa2V0c3VcIDsKK+ippuiBtCA+IHNoaWNob3VcIDsKK+aYjuacnSA+IG1pbmNob3VcIDsKK+iol+iogCA+IHRha3VnZW5cIDsKK+mgmOWfnyA+IHJ5b3Vpa2lcIDsKK+aageWkqSA+IGd5b3V0ZW5cIDsKK+iogOiyrCA+IGdlbnNla2lcIDsKK+aWsOeJiCA+IHNoaW5wYW5cIDsKK+imqumbuyA+IHNoaW5kZW5cIDsKK+WkqueZvSA+IHRhaWhha3VcIDsKK+eJueaXqCA+IHRva3VzaGlcIDsKK+S4iuS9nCA+IGpvdXNha3VcIDsKK+WkqeeahyA+IHRlbicnbm91XCA7CivkuIrkvLggPiBqb3VzaGluXCA7CivmlbDnp5IgPiBzdXVieW91XCA7CivmlaPnrZYgPiBzYW5zYWt1XCA7Civmlofnm7ggPiBidW5zaG91XCA7Civlo7LntIQgPiBiYWl5YWt1XCA7CivkuInkvLggPiBzYW5zaGluXCA7Civml6fmrZMgPiBreXV1a2FuXCA7CivlpKfnmb0gPiB0YWloYWt1XCA7CivkuIfkvZwgPiBtYW5zYWt1XCA7CivmmI7mmbAgPiBtZWlzZWtpXCA7CivmmanlraYgPiBiYW5nYWt1XCA7CivpoJjlnLAgPiByeW91Y2hpXCA7CivnhKbouoEgPiBzaG91c291XCA7CivmmI7mmakgPiBteW91YmFuXCA7CivkuIDlgI0gPiBpY2hpYmFpXCA7Civmlaznp7AgPiBrZWlzaG91XCA7CivntYLpm7sgPiBzaHV1ZGVuXCA7CivkuIrkurogPiBzaG91bmluXCA7Civml6XmrKcgPiBuaWNoaW91XCA7CivkuIrkuqwgPiBqb3VreW91XCA7CivmmI7mmJ8gPiBteW91am91XCA7CivkuInkurogPiBzYW4nJ25pblwgOwor57im56ybID4gdGF0ZWJ1ZVwgOwor6ZuG576kID4gc2h1dWd1blwgOwor5LiH5Lq6ID4gbWFuJyduaW5cIDsKK+aVmeevhCA+IGt5b3VoYW5cIDsKK+S4gOS+iyA+IGljaGlyZWlcIDsKK+Wkp+eXhSA+IHRhaWJ5b3VcIDsKK+aVrOelniA+IGtlaXNoaW5cIDsKK+eJueaSsCA+IHRva3VzZW5cIDsKK+iqv+eQtCA+IGNob3VraW5cIDsKK+mgreWPliA+IHRvdWRvcmlcIDsKK+mghuWigyA+IGp1bmt5b3VcIDsKK+mbqOesoCA+IGFtYWdhc2FcIDsKK+e1pumHkSA+IGt5dXVraW5cIDsKK+ips+e0sCA+IHNob3VzYWlcIDsKK+e4pueptCA+IHRhdGVhbmFcIDsKK+S4gOS7uyA+IGljaGluaW5cIDsKK+Wkp+eUtyA+IG9vb3Rva29cIDsKK+S4gOS7oyA+IGljaGlkYWlcIDsKK+e9sOWJhyA+IGJhc3Nva3VcIDsKK+mch+ebqiA+IHNoaW50b3VcIDsKK+mciueahCA+IHJlaXRla2lcIDsKK+mdmeazqCA+IGpvdWNodXVcIDsKK+WkluebuCA+IGdhaXNob3VcIDsKK+WkmueZuiA+IHRhaGF0c3VcIDsKK+mbqOepuiA+IGFtYXpvcmFcIDsKK+eEtuirviA+IHplbmRha3VcIDsKK+iprue0oiA+IHNlbnNha3VcIDsKK+e5i+eVmSA+IGtlaXJ5dXVcIDsKK+aVo+elqCA+IHNhbnB5b3VcIDsKK+e3tOe/kiA+IHJlbnNodXVcIDsKK+ipleiAhSA+IGh5b3VzaGFcIDsKK+eGn+e3tCA+IGp1a3VyZW5cIDsKK+S4gOS4uCA+IGljaGlnYW5cIDsKK+WklueahCA+IGdhaXRla2lcIDsKK+eLrOWWhCA+IGRva3V6ZW5cIDsKK+Wkj+edgCA+IG5hdHN1Z2lcIDsKK+ipqee1jCA+IHNoaWt5b3VcIDsKK+eJueaNnCA+IHRva3Vzb3VcIDsKK+WkqeeQgyA+IHRlbmt5dXVcIDsKK+aXp+ajsiA+IGt5dXVzZWlcIDsKK+Wmu+aIuCA+IHRzdW1hZG9cIDsKK+aVmeeoiyA+IGt5b3V0ZWlcIDsKK+aWkeeMqyA+IGhhbm15b3VcIDsKK+aZi+WxsSA+IHNoaW56YW5cIDsKK+eMn+S6uiA+IHJ5b3VqaW5cIDsKK+aXi+avmyA+IHRzdW11amlcIDsKK+WgsemFrCA+IGhvdXNodXVcIDsKK+eDiOmchyA+IHJlc3NoaW5cIDsKK+aYpeaDhSA+IHNodW5qb3VcIDsKK+e3rOe+iiA+IG1lbicneW91XCA7Civml6fmoJYgPiBreXV1c2VpXCA7CivnuJ/npLwgPiBqb2t1cmVpXCA7CivlpKfnjYQgPiB0YWlnb2t1XCA7CivlpKfnjJ8gPiB0YWlyeW91XCA7Civni4LlpZQgPiBreW91aG9uXCA7CivloqjoibIgPiBzdW1paXJvXCA7Civnt4/oirEgPiBzb3ViYW5hXCA7CivmlabnnaYgPiB0b25ib2t1XCA7CivopoHpoJggPiB5b3VyeW91XCA7Civni6zlkJ8gPiBkb2t1Z2luXCA7CivopobpnaIgPiBmdWt1bWVuXCA7CivnuZTniakgPiBvcmltb25vXCA7Civmlaznmb0gPiBrZWloYWt1XCA7CivlpZTmtYEgPiBob25yeXV1XCA7Civml6fmnaUgPiBreXV1cmFpXCA7Civml6nmnJ0gPiBzb3VjaG91XCA7Civml6fmnZEgPiBreXV1c29uXCA7CivmmYLlsYAgPiBqaWt5b2t1XCA7CivmlK/ntaYgPiBzaGlreXV1XCA7CivmlL/nrZYgPiBzZWlzYWt1XCA7Civni6zljaAgPiBkb2t1c2VuXCA7CivlpInnl4cgPiBoZW5zaG91XCA7Civml6XmnJ0gPiBuaXRjaG91XCA7CivmlK/ntKIgPiBzaGlzYWt1XCA7CivlpoLmnIggPiBuaWdhdHN1XCA7Civml6nmmoEgPiBzb3VneW91XCA7CivlpLHngrkgPiBzaGl0dGVuXCA7Civpm5HnqYAgPiB6YWtrb2t1XCA7CivopZ/pq6ogPiBlcmlnYW1pXCA7Civopqrph4wgPiBveWF6YXRvXCA7Civnhafoh6ggPiBzaG91cmluXCA7Civml6nmmKUgPiBzb3VzaHVuXCA7CivmmKjlubQgPiBzYWt1bmVuXCA7CivorLnmhY4gPiBraW5zaGluXCA7Civop6Poqq0gPiBrYWlkb2t1XCA7CivlpKnnhLYgPiB0ZW4nJ25lblwgOwor5paw5rOVID4gc2hpbnBvdVwgOwor5aWl5qeYID4gb2t1c2FtYVwgOwor54us5Ym1ID4gZG9rdXNvdVwgOwor5pel5pmCID4gbmljaGlqaVwgOwor57eR6IKlID4gcnlva3VoaVwgOwor6aCY5YiGID4gcnlvdWJ1blwgOwor57ev57O4ID4geW9rb2l0b1wgOwor6Zuq55m9ID4gc2VwcGFrdVwgOwor54m55oCnID4gdG9rdXNlaVwgOwor54m55oClID4gdG9ra3l1dVwgOwor5pS756m2ID4ga291a3l1dVwgOwor6aCY5YaFID4gcnlvdW5haVwgOwor6ZmE6KitID4gZnVzZXRzdVwgOwor6Zu755CDID4gZGVua3l1dVwgOwor54m95by3ID4ga2Vua3lvdVwgOwor54mH5pa5ID4ga2F0YWhvdVwgOwor5pWZ55qHID4ga3lvdWtvdVwgOwor6Kme56ugID4gc2hpc2hvdVwgOwor6Kiz6ICFID4geWFrdXNoYVwgOwor54m55b6FID4gdG9rdXRhaVwgOwor6KWf6aaWID4gZXJpa3ViaVwgOwor5aWq5qC8ID4gZGFra2FrdVwgOwor5pW154q2ID4gdGVraWpvdVwgOwor5pKD6YCAID4gZ2VraXRhaVwgOwor6Zuj55mWID4gbmFua3VzZVwgOwor5pS556ewID4ga2Fpc2hvdVwgOwor5aaZ5omLID4gbXlvdXNodVwgOwor5pil5bWQID4gc2h1bnJhblwgOwor6KWy6Zu3ID4gc2h1dXJhaVwgOwor5aaZ5omAID4gbXlvdXNob1wgOwor6Kaq6L+RID4gc2hpbmtpblwgOwor5piO5b60ID4gbWVpY2hvdVwgOwor5piO5b6zID4gbWVpdG9rdVwgOwor6Zuj55eHID4gbmFuc2hvdVwgOwor6Zuj55eFID4gbmFuYnlvdVwgOwor54Sh6KGAID4gbXVrZXRzdVwgOwor6Kaa6YaSID4ga2FrdXNlaVwgOwor57eg57SEID4gdGVpeWFrdVwgOwor6K2Y5a2XID4gc2hpa2lqaVwgOwor6Ziy6KucID4gYm91Y2hvdVwgOwor5pqB5YWJID4gZ3lvdWtvdVwgOwor5pWZ55SfID4ga3lvdXNlaVwgOwor5piU5bm0ID4gc2VraW5lblwgOwor6KuL5rGCID4gc2Vpa3l1dVwgOwor5aSn5ryBID4gdGFpcnlvdVwgOwor54KS6aOvID4gY2hhYWhhblwgOwor6aCD5Yi7ID4ga2Vpa29rdVwgOwor6Zml6JC9ID4ga2FucmFrdVwgOwor6KqY54iGID4geXV1YmFrdVwgOwor6Z2S5p2+ID4gc2Vpc2hvdVwgOwor5aSW54K6ID4gZ2FpdGFtZVwgOwor6Ki857SZID4gc2hvdXNoaVwgOwor6ZyH54G9ID4gc2hpbnNhaVwgOwor5pmv5YudID4ga2Vpc2hvdVwgOwor5pil5a+SID4gc2h1bmthblwgOwor57Wx6KaaID4gdG91a2FrdVwgOwor54iG5q27ID4gYmFrdXNoaVwgOwor57ay6IacID4gbW91bWFrdVwgOwor54af55+lID4ganVrdWNoaVwgOwor5piO5bm0ID4gbXlvdW5lblwgOwor5aSp5risID4gdGVuc29rdVwgOwor5aSp5ribID4gdGVuYmlraVwgOwor5aWP5qW9ID4gc291Z2FrdVwgOwor6aCY5LyaID4gcnlvdWthaVwgOwor6Kq/5rOVID4gY2hvdWhvdVwgOwor5piM5bmzID4gc2hvdWhlaVwgOwor5aeJ5am/ID4gYW5lbXVrb1wgOwor57WC6LuKID4gc2h1dXNoYVwgOwor5pqR5LitID4gc2hvY2h1dVwgOwor57a/576KID4gbWVuJyd5b3VcIDsKK+eyvum6piA+IHNlaWJha3VcIDsKK+eGn+edoSA+IGp1a3VzdWlcIDsKK+e4q+eJqSA+IG51aW1vbm9cIDsKK+aWr+alrSA+IHNoaWd5b3VcIDsKK+aZtuWFiSA+IHNob3Vrb3VcIDsKK+e3iue4myA+IGtpbmJha3VcIDsKK+ims+izniA+IGthbnNob3VcIDsKK+mfk+WbvSA+IGthbmtva3VcIDsKK+mbo+eQgyA+IG5hbmt5dXVcIDsKK+eGn+ecoCA+IGp1a3VtaW5cIDsKK+WiqOezuCA+IHN1bWlpdG9cIDsKK+mZsOiGsyA+IGthZ2V6ZW5cIDsKK+ipqeeahCA+IHNoaXRla2lcIDsKK+mgmOS4uyA+IHJ5b3VzaHVcIDsKK+aYn+WtpiA+IHNlaWdha3VcIDsKK+Wkqea0pSA+IHRlbnNoaW5cIDsKK+mdkuaYpSA+IHNlaXNodW5cIDsKK+aah+S6uiA+IGhpbWFqaW5cIDsKK+ims+ixoSA+IGthbnNob3VcIDsKK+mfs+WKmyA+IG9ucnlva3VcIDsKK+eCuumKgCA+IHRhbWVnaW5cIDsKK+iok+iCsiA+IGt1bicnaWt1XCA7CivlpaXmlrkgPiBva3VnYXRhXCA7Civni6nkurogPiBrYXJ5dWRvXCA7CivntK/pgLIgPiBydWlzaGluXCA7CivlpKnms6MgPiB0ZW5reXV1XCA7Civlpa7mkoMgPiBmdW5nZWtpXCA7CivnhLzoiosgPiB5YWtpaW1vXCA7Civml6fmh5AgPiBreXV1a2FpXCA7Civpmaroh6MgPiBiYWlzaGluXCA7CivniafluKsgPiBib2t1c2hpXCA7CivmlrDmoYggPiBzaGluJydhblwgOwor6ZyH5rqQID4gc2hpbmdlblwgOwor5pen5oWjID4ga3l1dWthblwgOwor6ZqO57SaID4ga2Fpa3l1dVwgOwor5pen5oWLID4ga3l1dXRhaVwgOwor54m55a6aID4gdG9rdXRlaVwgOwor5pio5aSVID4gc2FrdXl1dVwgOwor6Zq755y8ID4gc2VraWdhblwgOwor54eD54S8ID4gbmVuc2hvdVwgOwor5paw5p2lID4gc2hpbnJhaVwgOwor5piT5a2mID4gZWtpZ2FrdVwgOwor5aKX57WmID4gem91a3l1dVwgOwor5pen5oKqID4ga3l1dWFrdVwgOwor5pWw5ru0ID4gc3V1dGVraVwgOwor57a+57W5ID4gYXlhZ2ludVwgOwor57Si6YGTID4gc2FrdWRvdVwgOwor5aa75aa+ID4gc2Fpc2hvdVwgOwor5pen5oGoID4ga3l1dWtvblwgOwor5pep5oClID4gc291a3l1dVwgOwor57WQ6KqeID4ga2V0c3Vnb1wgOwor5paw5pu4ID4gc2hpbnNob1wgOwor57SU6YePID4ganVucnlvdVwgOwor5aWz5omLID4gb24nJ25hZGVcIDsKK+eGseeLgiA+IG5la2t5b3VcIDsKK+Wls+aIvyA+IG55b3Vib3VcIDsKK+Wklua1tyA+IHNvdG91bWlcIDsKK+Wkp+atoyA+IHRhaXNob3VcIDsKK+WkseaoqSA+IHNoaWtrZW5cIDsKK+Wkp+assiA+IHRhaXlva3VcIDsKK+e1kOiolyA+IGtldHRha3VcIDsKK+WkluazqCA+IGdhaWNodXVcIDsKK+mYsuiZqyA+IGJvdWNodXVcIDsKK+WkluaziiA+IGdhaWhha3VcIDsKK+aWsOaYnyA+IHNoaW5zZWlcIDsKK+imhui8qiA+IGZ1a3VyaW5cIDsKK+aVtOa1gSA+IHNlaXJ5dXVcIDsKK+mgguS4iiA+IGNob3Vqb3VcIDsKK+eGseeHlyA+IGF0c3VrYW5cIDsKK+aXpeW9kyA+IGhpYXRhcmlcIDsKK+ezoOmbqCA+IG51a2FhbWVcIDsKK+e3j+ensCA+IHNvdXNob3VcIDsKK+aXp+W8iiA+IGt5dXVoZWlcIDsKK+eBq+mjnyA+IGthc2hva3VcIDsKK+eJueWkpyA+IHRva3VkYWlcIDsKK+imquiosSA+IG95YW1vdG9cIDsKK+aYpeWdiiA+IGhhcnVib3VcIDsKK+ipq+eKtiA+IHdhYmlqb3VcIDsKK+mbu+a1gSA+IGRlbnJ5dXVcIDsKK+itpuWRiiA+IGtlaWtva3VcIDsKK+eJueWjsiA+IHRva3ViYWlcIDsKK+aWsOaUvyA+IHNoaW5zZWlcIDsKK+aWrOaWsCA+IHphbnNoaW5cIDsKK+eKr+WJhyA+IGhhbnNva3VcIDsKK+manOeijSA+IHNob3VnYWlcIDsKK+eEoeiJsiA+IG11c2hva3VcIDsKK+WkluauuyA+IGdhaWtha3VcIDsKK+mbjOeKrCA+IG1lc3VpbnVcIDsKK+WkqealrSA+IHRlbmd5b3VcIDsKK+irluaVtSA+IHJvbnRla2lcIDsKK+mbgOeQgyA+IGphbmt5dXVcIDsKK+aWh+anmCA+IG1vbicneW91XCA7CivlpKfmpa0gPiB0YWlneW91XCA7Civml6fluKsgPiBreXV1c2hpXCA7Civml4XmiYAgPiB0YWJpc2hvXCA7Civns7jpi7ggPiBpdG9ub2tvXCA7CivmlrDmkrAgPiBzaGluc2VuXCA7CivoprPooYYgPiBrYW5zaHV1XCA7CivmlL7niacgPiBob3Vib2t1XCA7CivnibnloLEgPiB0b2t1aG91XCA7Civmlofmpb0gPiBidW5yYWt1XCA7CivnhKHohbAgPiBtdWdvc2hpXCA7Civopqroo4EgPiBzaGluc2FpXCA7CivpnaLlvbEgPiBvbW9rYWdlXCA7CivnhZnnqoEgPiBlbnRvdHN1XCA7CivlopPnqbQgPiBib2tldHN1XCA7Civni4LkurogPiBreW91amluXCA7Civoqr/mm7ggPiBjaG91c2hvXCA7CivmmIflpKkgPiBzaG91dGVuXCA7CivopqrooZsgPiBzaGluJydlaVwgOwor54uC5LmxID4ga3lvdXJhblwgOwor6Z2p5bivID4ga2F3YW9iaVwgOwor5aSp5p+xID4gdGVuY2h1dVwgOwor5peF5oSBID4gcnlvc2h1dVwgOwor6Kej6ISxID4gZ2VkYXRzdVwgOwor5pi85YmNID4gaGlydW1hZVwgOwor57aa57eoID4gem9rdWhlblwgOwor54ax5ryUID4gbmV0c3VlblwgOwor6Zuq5rSeID4gYm9uYm9yaVwgOwor54Sh6IG3ID4gbXVzaG9rdVwgOwor57eP552jID4gc291dG9rdVwgOwor6ZaT6ZqZID4ga2FuZ2VraVwgOwor6KaW6Ki6ID4gc2hpc2hpblwgOwor6ZaT6ZqUID4ga2Fua2FrdVwgOwor6Z205bGLID4ga3V0c3V5YVwgOwor5aCF6Kq/ID4ga2VuY2hvdVwgOwor5paO5pyNID4gc2FpZnVrdVwgOwor5pen5bGFID4ga3l1dWt5b1wgOwor57ep55CDID4ga2Fua3l1dVwgOwor57aZ57aaID4ga2Vpem9rdVwgOwor5aSp5pydID4gdGVuY2hvdVwgOwor6KaW6KeSID4gc2hpa2FrdVwgOwor5pen5bCBID4ga3l1dWhvdVwgOwor6Kqk5qSNID4gZ29zaG9rdVwgOwor6ZmL57+SID4gcm91c2h1dVwgOwor5aSn5pyoID4gdGFpYm9rdVwgOwor5Z+O6YOtID4gam91a2FrdVwgOwor5pWR5riIID4ga3l1dXNhaVwgOwor6KaW6KaaID4gc2hpa2FrdVwgOwor57eP55quID4gc291Z2F3YVwgOwor6Zm456iyID4gcmlrdXRvdVwgOwor5pWZ5rOVID4ga3lvdWhvdVwgOwor6Kq/5pW0ID4gY2hvdXNlaVwgOwor5pen5a6YID4ga3l1dWthblwgOwor5aSx5pWsID4gc2hpa2tlaVwgOwor6ZaL6ZmzID4ga2FpY2hpblwgOwor5aSx5pWXID4gc2hpcHBhaVwgOwor5aW95bCaID4ga291c2hvdVwgOwor5aWH5oqcID4ga2liYXRzdVwgOwor5aSx5pS/ID4gc2hpc3NlaVwgOwor6KiO56m2ID4gdG91a3l1dVwgOwor6ZyK5p+pID4gcmVpa3l1dVwgOwor6Kqt5pysID4gZG9rdWhvblwgOwor6Ziy6IetID4gYm91c2h1dVwgOwor6Kqt5pu4ID4gZG9rdXNob1wgOwor54qv5Lq6ID4gaGFuJyduaW5cIDsKK+WlpeW6rSA+IG9rdW5pd2FcIDsKK+iqrOacjSA+IHNlcHB1a3VcIDsKK+WmiuWooCA+IG5pbnNoaW5cIDsKK+WlpeW6lSA+IG9rdXpva29cIDsKK+eJp+WcsCA+IGJva3VjaGlcIDsKK+aVpuaouCA+IHRvbmJva3VcIDsKK+WlveWtpiA+IGtvdWdha3VcIDsKK+e3qOeJqSA+IGFtaW1vbm9cIDsKK+e2muevhyA+IHpva3VoZW5cIDsKK+WkqeaVtSA+IHRlbnRla2lcIDsKK+e1jOiUtSA+IGt5b3V6b3VcIDsKK+mciuacqCA+IHJlaWJva3VcIDsKK+WknOabsiA+IHlha3lva3VcIDsKK+e3j+eUuyA+IHNvdWtha3VcIDsKK+Wkp+aVtSA+IHRhaXRla2lcIDsKK+eJueWRvSA+IHRva3VtZWlcIDsKK+mZo+esoCA+IGppbmdhc2FcIDsKK+mahuebmyA+IHJ5dXVzZWlcIDsKK+ipleeCuSA+IGh5b3V0ZW5cIDsKK+aWsOaCoyA+IHNoaW5rYW5cIDsKK+aVkeawkSA+IGt5dXVtaW5cIDsKK+imgeiosyA+IHlvdXlha3VcIDsKK+aXp+WnkyA+IGt5dXVzZWlcIDsKK+mZjee1piA+IGtvdWt5dXVcIDsKK+aXp+WmuyA+IGt5dXVzYWlcIDsKK+aWh+aVmSA+IGJ1bmt5b3VcIDsKK+mdouWuuSA+IG1lbicneW91XCA7CivlpInmooMgPiBoZW50ZWtvXCA7CivnsbPpuqYgPiBiZWliYWt1XCA7CivntLDonrogPiBraXNoYWdvXCA7CivnhrHmsJcgPiBuZXRzdWtlXCA7CivmmKjlhqwgPiBzYWt1dG91XCA7CivmmKXliIYgPiBzaHVuYnVuXCA7CivoprPoj4ogPiBrYW5naWt1XCA7Civml6flpb0gPiBreXV1a291XCA7Civpm7vmn7EgPiBkZW5jaHV1XCA7Civplovpkb8gPiBrYWlzYWt1XCA7Civplbfpm6ggPiBuYWdhYW1lXCA7CivlpInmoLwgPiBoZW5rYWt1XCA7Civml6flpZcgPiBreXV1dG91XCA7Civoqp7mnKsgPiBnb21hdHN1XCA7Civns6fpgZMgPiByeW91ZG91XCA7CivopZ/otrMgPiBlcmlhc2hpXCA7CivorLnlkYogPiBraW5rb2t1XCA7CivoqqzmlZkgPiBzZWtreW91XCA7CivmkZjopoEgPiB0ZWtpeW91XCA7CivorYnliLggPiBzaG91a2VuXCA7CivmlZnmqKkgPiBreW91a2VuXCA7Civml6blpJUgPiB0YW5zZWtpXCA7Civmlq3lv7UgPiBkYW4nJ25lblwgOwor5pel5aScID4gbmljaGl5YVwgOwor5Z+O6LehID4gam91c2VraVwgOwor5pel5aSVID4gbmlzc2VraVwgOwor5pil5YWJID4gc2h1bmtvdVwgOwor5pS+5rWBID4gaG91cnl1dVwgOwor6ZyH5pemID4gc2hpbnRhblwgOwor5aWl5bGxID4gb2t1eWFtYVwgOwor5pen5aKfID4ga3l1dWt5b1wgOwor6Z2Z5a+CID4gc2VpamFrdVwgOwor6Kej57SEID4ga2FpeWFrdVwgOwor5aSx5oqVID4gc2hpdHRvdVwgOwor57ax55uuID4ga291bW9rdVwgOwor54Gr6YmiID4gaGliYWNoaVwgOwor57W257iBID4gemV0c3VlblwgOwor5aSV5pa5ID4geXV1Z2F0YVwgOwor5Z+36KGMID4gc2hpa2tvdVwgOwor57KX6aOfID4gc29zaG9rdVwgOwor5pWs5pyNID4ga2VpZnVrdVwgOwor5aSW5pW1ID4gZ2FpdGVraVwgOwor5pWF5q66ID4ga29zYXRzdVwgOwor6KaB6KGdID4geW91c2hvdVwgOwor5aaE5Z+3ID4gbW91c2h1dVwgOwor5aKD55uuID4gc2FrYWltZVwgOwor5aSP5pelID4ga2FqaXRzdVwgOwor6ZyH5pK8ID4gc2hpbmthblwgOwor5pWm5py0ID4gdG9uYm9rdVwgOwor5aOw5qW9ID4gc2VpZ2FrdVwgOwor5pen5Z6LID4ga3l1dWtlaVwgOwor5peF5a6iID4gcnlva2FrdVwgOwor6Z2i5aaWID4gbWVuJyd5b3VcIDsKK+aYreS7oyA+IHNob3VkYWlcIDsKK+eEoeethiA+IG11aGl0c3VcIDsKK+eJueWGmSA+IHRva3VzaGFcIDsKK+WkseaFiyA+IHNoaXR0YWlcIDsKK+aXp+WdgCA+IGt5dXVzaGlcIDsKK+e1kOiFuCA+IGtldGNob3VcIDsKK+aXp+WcsCA+IGt5dXVjaGlcIDsKK+eJueWFuCA+IHRva3V0ZW5cIDsKK+WgquiDvSA+IHRhbicnbm91XCA7Civoo73pnakgPiBzZWlrYWt1XCA7CivlpLHmhI8gPiBzaGl0c3VpXCA7CivniIblvL4gPiBiYWt1ZGFuXCA7CivnibnlhY0gPiB0b2t1bWVuXCA7CivmlK/mtYEgPiBzaGlyeXV1XCA7Civmj5rpmbggPiB5b3VyaWt1XCA7CivopqroiLkgPiBveWFidW5lXCA7CivpmbjnlKMgPiByaWt1c2FuXCA7CivpmbjnlJ8gPiByaWt1c2VpXCA7CivpnaLlo4EgPiBtZW5wZWtpXCA7CivmjqLps6UgPiB0YW5jaG91XCA7Civopqroh6ggPiBzaGlucmluXCA7CivntIToqIAgPiB5YWt1Z2VuXCA7CivlooPnlYwgPiBreW91a2FpXCA7CivmlZnmnaEgPiBreW91am91XCA7Civnspfpm5EgPiBzb3phdHN1XCA7CivmlZnmnZAgPiBreW91emFpXCA7CivmlZnmnKwgPiBreW91aG9uXCA7Civpm7vmkoMgPiBkZW5nZWtpXCA7CivmlZnmm7ggPiBreW91c2hvXCA7CivpmY3npZ4gPiBrb3VzaGluXCA7CivplpPov5EgPiBtYWRqaWthXCA7CivmlrDlsYUgPiBzaGlua3lvXCA7CivntLroibIgPiBrb24nJ2lyb1wgOwor57aZ55uuID4gdHN1Z2ltZVwgOwor6Zu35pKDID4gcmFpZ2VraVwgOwor5aG+55SfID4ganVrdXNlaVwgOwor6Kq/5bymID4gY2hvdWdlblwgOwor5aSx5b2TID4gc2hpdHRvdVwgOwor54eD5paZID4gbmVucnlvdVwgOwor6KiI55S7ID4ga2Vpa2FrdVwgOwor54m55L6LID4gdG9rdXJlaVwgOwor6Zqg5ruFID4gaW5tZXRzdVwgOwor54m55L2/ID4gdG9rdXNoaVwgOwor5aSn5oGvID4gdGFpc29rdVwgOwor6ZuG5qipID4gc2h1dWtlblwgOwor6ZaL6YCaID4ga2FpdHN1dVwgOwor6Zmj55ebID4gamludHN1dVwgOwor5aSW5oiaID4gZ2Fpc2VraVwgOwor5aSp5b+DID4gdGVuc2hpblwgOwor57WE6IG3ID4gc29zaG9rdVwgOwor57ay54yfID4gYW1pcnlvdVwgOwor5pav5a2mID4gc2hpZ2FrdVwgOwor5pW15omLID4gdGVraXNodVwgOwor5aOy5pilID4gYmFpc2h1blwgOwor5aSn5b6zID4gZGFpdG9rdVwgOwor6Zui5pelID4gcmluaWNoaVwgOwor57K+6YCyID4gc2hvdWppblwgOwor5aSn5b25ID4gdGFpeWFrdVwgOwor57K+6YCaID4gc2VpdHN1dVwgOwor54WJ542EID4gcmVuZ29rdVwgOwor6Kaq572yID4gc2hpbnNob1wgOwor6Ku45Zu9ID4gc2hva29rdVwgOwor5pen5ZCNID4ga3l1dW1laVwgOwor54mb5YiAID4gZ3l1dXRvdVwgOwor6Zuj5pW1ID4gbmFudGVraVwgOwor5pen5Y+3ID4ga3l1dWdvdVwgOwor54Cd6Z2SID4gcmVraXNlaVwgOwor5aSn5byTID4gZGFpa3l1dVwgOwor5pen5Y+LID4ga3l1dXl1dVwgOwor57WQ57iBID4ga2VjaGllblwgOwor6KKe6b6NID4ga29ucnlvdVwgOwor5paw5amaID4gc2hpbmtvblwgOwor5paH5byxID4gYnVuamFrdVwgOwor5pel5Y+OID4gbmlzc2h1dVwgOwor6ZuR5pyoID4gem91Ym9rdVwgOwor6Kqs5b6XID4gc2V0dG9rdVwgOwor6Z2W5Zu9ID4gc2Vpa29rdVwgOwor5piO5LquID4gbWVpcnlvdVwgOwor5aSp5bmVID4gdGVubWFrdVwgOwor5aOr5pePID4gc2hpem9rdVwgOwor54af5p+/ID4ganVrdXNoaVwgOwor6Zay6KanID4gZXRzdXJhblwgOwor6Z2p5ZG9ID4ga2FrdW1laVwgOwor57mU5biDID4gc2hva3VmdVwgOwor5pel5Y2wID4gbmljaGlpblwgOwor57mK5byxID4gc2VuamFrdVwgOwor57Sw6IWVID4gaG9zb3VkZVwgOwor57mU5belID4gc2hva2tvdVwgOwor54Wn5rqWID4gc2hvdWp1blwgOwor6Zu25oimID4gemVyb3NlblwgOwor5pW15oOFID4gdGVraWpvdVwgOwor5piH5Lu7ID4gc2hvdW5pblwgOwor6Kaa6ICFID4ga2FrdXNoYVwgOwor6KaW6IG0ID4gc2hpY2hvdVwgOwor57WE57mUID4gc29zaGlraVwgOwor6ZW36YCdID4gY2hvdXNlaVwgOwor6ZmE552AID4gZnVjaGFrdVwgOwor6Kys5LydID4gYnl1dWRlblwgOwor5aSW5b+DID4gZ2Fpc2hpblwgOwor5pW15oCnID4gdGVraXNlaVwgOwor6Kqg5b+gID4gc2VpY2h1dVwgOwor6KqY5oORID4geXV1d2FrdVwgOwor54mn5Lq6ID4gYm9rdWppblwgOwor5pen5Yi2ID4ga3l1dXNlaVwgOwor57WM57O4ID4gdGF0ZWl0b1wgOwor6ZW36L66ID4gY2hvdWhlblwgOwor6Kqg5b+DID4gc2Vpc2hpblwgOwor6ZyK5bufID4gcmVpYnlvdVwgOwor6Kmu5pa5ID4gc2Vua2F0YVwgOwor5pen5YiKID4ga3l1dWthblwgOwor5pet5YWJID4ga3lva2tvdVwgOwor5aSx5a++ID4gc2hpdHRhaVwgOwor54mH5YmNID4ga2F0YW1hZVwgOwor6Kuc5aCxID4gY2hvdWhvdVwgOwor5aKo5rGgID4gYm9rdWNoaVwgOwor5Z6C6L+5ID4gc3VpamFrdVwgOwor5pW05b6pID4gc2VpZnVrdVwgOwor5pen5YasID4ga3l1dXRvdVwgOwor5pSv5p+xID4gc2hpY2h1dVwgOwor5aKo5rGBID4gYm9rdWp1dVwgOwor5pS55pqmID4ga2FpcmVraVwgOwor5paw5aCxID4gc2hpbnBvdVwgOwor5aSW5buTID4gZ2Fpa2FrdVwgOwor6Ziq56WeID4gaGFuc2hpblwgOwor6Kq/5a2QID4gY2hvdXNoaVwgOwor5pen5YW4ID4ga3l1dXRlblwgOwor5pW15by+ID4gdGVraWRhblwgOwor6ZaA6LehID4gbW9uemVraVwgOwor57KX6YeRID4gYXJhZ2FuZVwgOwor5pS/5pW1ID4gc2VpdGVraVwgOwor6Kaq57GzID4gc2hpbmJlaVwgOwor5pWP5o23ID4gYmluc2hvdVwgOwor54mI5YWDID4gaGFubW90b1wgOwor5pS/5pWZID4gc2Vpa3lvdVwgOwor6Kmm5paZID4gc2hpcnlvdVwgOwor6KWB6KSTID4gbXV0c3VraVwgOwor57SU6ImvID4ganVucnlvdVwgOwor5aSJ5b+DID4gaGVuc2hpblwgOwor5pWZ5oiSID4ga3lvdWthaVwgOwor5aSn5bCPID4gZGFpc2hvdVwgOwor5aSn5bCGID4gZGFpc2hvdVwgOwor5pen5YK1ID4ga3l1dXNhaVwgOwor6ZaT6KucID4ga2FuY2hvdVwgOwor6KaL57+SID4gbWluYXJhaVwgOwor5pS55pawID4ga2Fpc2hpblwgOwor5paw5ZywID4gc2hpbmNoaVwgOwor57mL5bGeID4ga2Vpem9rdVwgOwor5pS+5pOyID4gaG91dGVraVwgOwor5pW35biDID4gc2hpa2lmdVwgOwor6ZuG5pWjID4gc2h1dXNhblwgOwor5o6h6ZuGID4gc2Fpc2h1dVwgOwor54mb5Li8ID4gZ3l1dWRvblwgOwor6KeS55uGID4ga2FrdWJvblwgOwor54i95YeJID4gc291cnlvdVwgOwor6KmU5pu4ID4gc2hvdXNob1wgOwor5aSn5a2mID4gZGFpZ2FrdVwgOwor6Kaq562JID4gc2hpbnRvdVwgOwor5aOB5p2/ID4ga2FiZWl0YVwgOwor5aaE5L+hID4gbW91c2hpblwgOwor5paH5a2mID4gYnVuZ2FrdVwgOwor5pS75pKDID4ga291Z2VraVwgOwor57eR5qi5ID4gcnlva3VqdVwgOwor54iq5Y2wID4gdHN1bWVpblwgOwor5pen5L6LID4ga3l1dXJlaVwgOwor5pSv5pePID4gc2hpem9rdVwgOwor57Oe6J2/ID4ga3Vzb2JhZVwgOwor5aKc5q27ID4gdHN1aXNoaVwgOwor5aWo5YqxID4gc2hvdXJlaVwgOwor57mU5aerID4gb3JpaGltZVwgOwor6Kq/5aOwID4gY2hvdXNlaVwgOwor6KSS6LOeID4gaG91c2hvdVwgOwor57SF6ImyID4gYmVuaWlyb1wgOwor6Zm45rW3ID4gcmlrdWthaVwgOwor57WC56uvID4gc2h1dXRhblwgOwor5pel5LyvID4gbmlwcGFrdVwgOwor5peL5YmKID4gc2Vuc2FrdVwgOwor6KeS55WqID4ga2Fkb2JhblwgOwor57K+6KqtID4gc2VpZG9rdVwgOwor57mU5aWzID4gc2hva3Vqb1wgOwor5pen5LqkID4ga3l1dWtvdVwgOwor5pel5LuYID4gaGlkenVrZVwgOwor54ax5oSbID4gbmV0c3VhaVwgOwor5aKD5ravID4ga3lvdWdhaVwgOwor6Zyc5aScID4gc2hpbW95b1wgOwor54Sm54elID4gc2hvdXNvdVwgOwor5aWz5YKRID4gam9rZXRzdVwgOwor5aSp5aWzID4gdGVuJydueW9cIDsKK+inkueTtiA+IGtha3ViaW5cIDsKK+e0oee4viA+IGJvdXNla2lcIDsKK+ipqeaKhCA+IHNoaXNob3VcIDsKK+aXp+S4uyA+IGt5dXVzaHVcIDsKK+Wkp+WlsyA+IG9vb24nJ25hXCA7CivmlbXlr74gPiB0ZWtpdGFpXCA7CivoqIjmuKwgPiBrZWlzb2t1XCA7CivmlrDlk4EgPiBzaGlucGluXCA7CivlpYnllLEgPiBob3VzaG91XCA7Civopqrnpa0gPiBzaGluc2FpXCA7CivmlpnlnLAgPiByeW91Y2hpXCA7CivnhKHnhrEgPiBtdW5ldHN1XCA7CivntZDnn7MgPiBrZXNzZWtpXCA7CivplbforJsgPiBjaG91a291XCA7Civnt4/moZAgPiBzb3VnaXJpXCA7CivnhKbngrkgPiBzaG91dGVuXCA7Civnhp/miJAgPiBqdWt1c2VpXCA7CivoqLzmm7ggPiBzaG91c2hvXCA7Civoq5blkYogPiByb25rb2t1XCA7CivnhrHlv4MgPiBuZXNzaGluXCA7Civop6PnhrEgPiBnZW5ldHN1XCA7CivlpYnlkYogPiBob3Vrb2t1XCA7CivlpLHlnLAgPiBzaGl0Y2hpXCA7CivmlrDlj4IgPiBzaGluemFuXCA7Civpm4bmiJAgPiBzaHV1c2VpXCA7CivmlbDlraYgPiBzdXVnYWt1XCA7CivmlZnluKsgPiBreW91c2hpXCA7CivmkoPnoJUgPiBnZWtpc2FpXCA7Civoqq3lo7IgPiB5b21pdXJpXCA7Civmjpjpkb8gPiBrdXNzYWt1XCA7Civpm7nlrrMgPiBoeW91Z2FpXCA7Civnt4/mn4QgPiBzb3VnYXJhXCA7CivpnIrlppkgPiByZWlteW91XCA7CivlpInlrrkgPiBoZW4nJ3lvdVwgOwor5peF5YOnID4gdGFiaXNvdVwgOwor6KO46LazID4gaGFkYXNoaVwgOwor6KuW5Y+KID4gcm9ua3l1dVwgOwor5o6h6YyyID4gc2Fpcm9rdVwgOwor54af5oWuID4ganVrdXJ5b1wgOwor6KaB57SEID4geW91eWFrdVwgOwor54KO6ImyID4gZW5zaG9rdVwgOwor54ax5bu2ID4gbmV0c3VlblwgOwor6Kiz5pysID4geWFrdWhvblwgOwor6Ki85piOID4gc2hvdW1laVwgOwor5aKo5pu4ID4gYm9rdXNob1wgOwor57Sb57O+ID4gZnVua3l1dVwgOwor6Kiz5pu4ID4geWFrdXNob1wgOwor5o6o6YePID4gc3VpcnlvdVwgOwor5pKe55CDID4gZG91a3l1dVwgOwor5aSZ5aScID4gc2h1a3V5YVwgOwor54ax5bqmID4gbmV0c3Vkb1wgOwor6ZyH5aSuID4gc2hpbicnb3VcIDsKK+WghuepjSA+IHRhaXNla2lcIDsKK+e0r+epjSA+IHJ1aXNla2lcIDsKK+mau+aJiyA+IHNla2lzaHVcIDsKK+WkqeWbvSA+IHRlbmdva3VcIDsKK+ijj+mHmCA+IHVyYWt1Z2lcIDsKK+ijj+mHkSA+IHVyYWdhbmVcIDsKK+aUquaLjCA+IGtha3VoYW5cIDsKK+eEmeeDmSA+IGhvdXJva3VcIDsKK+mZuOapiyA+IHJpa2t5b3VcIDsKK+iqjeWuuSA+IG5pbicneW91XCA7CivoqLzmlocgPiBzaG91bW9uXCA7CivoqLrmlq0gPiBzaGluZGFuXCA7CivlpKflm70gPiB0YWlrb2t1XCA7CivpmbDmrJ0gPiBpbicndXRzdVwgOwor6Ki75paHID4gY2h1dW1vblwgOwor57S656KnID4ga29ucGVraVwgOwor5paw5Yi2ID4gc2hpbnNlaVwgOwor5pS55oKbID4ga2Fpc2h1blwgOwor6Kmp5b+DID4gc2hpc2hpblwgOwor57W254ShID4gemV0c3VtdVwgOwor5aSW5aOBID4gZ2FpaGVraVwgOwor54af5oCdID4ganVrdXNoaVwgOwor5paw5YiKID4gc2hpbmthblwgOwor5paw5YiAID4gc2hpbnRvdVwgOwor6ZyE5aOMID4gc2hvdWpvdVwgOwor5pS+5b+DID4gaG91c2hpblwgOwor54yp44CFID4gc2hvdWpvdVwgOwor5aGe5rqQID4gc29rdWdlblwgOwor5aSn5Zi0ID4gb29oYXNoaVwgOwor57WC55ukID4gc2h1dWJhblwgOwor57SN57WMID4gbm91a3lvdVwgOwor5pWZ5bCOID4ga3lvdWRvdVwgOwor5paw5YW1ID4gc2hpbnBlaVwgOwor54S85q27ID4gc2hvdXNoaVwgOwor6Kiz5paHID4geWFrdWJ1blwgOwor5paw5YWaID4gc2hpbnRvdVwgOwor5pS55b+DID4ga2Fpc2hpblwgOwor54Wn5pifID4gc2hvdXNlaVwgOwor5o6b6YeRID4ga2FrZWtpblwgOwor5pWX5bCGID4gaGFpc2hvdVwgOwor5o6o6YCyID4gc3Vpc2hpblwgOwor54Wn5piOID4gc2hvdW1laVwgOwor6ZuE5b+DID4geXV1c2hpblwgOwor6Zm45qOyID4gcmlrdXNlaVwgOwor6KSH6KaWID4gZnVrdXNoaVwgOwor57K+6JmrID4gc2VpY2h1dVwgOwor5pW15aGBID4gdGVraXJ1aVwgOwor57ay5qOaID4gYW1pZGFuYVwgOwor6Zm45qOaID4gcmlrdWhvdVwgOwor5pWZ5a6YID4ga3lvdWthblwgOwor5Zu96aKoID4ga29rdWZ1dVwgOwor6ZqG5pu/ID4gcnl1dXRhaVwgOwor57ea5o+PID4gc2VuYnlvdVwgOwor6KaL56WeID4ga2Vuc2hpblwgOwor6KOB6YePID4gc2FpcnlvdVwgOwor6Kq/5ZCIID4gY2hvdWdvdVwgOwor5pS/5bqBID4gc2VpY2hvdVwgOwor6Kq/5Y+3ID4gY2hvdWdvdVwgOwor6Zmw5qW1ID4gaW5reW9rdVwgOwor5aSP5aC0ID4gbmF0c3ViYVwgOwor57SF57WEID4gYWthZ3VtaVwgOwor6KeS54GvID4ga2FrdXRvdVwgOwor6KSH6KO9ID4gZnVrdXNlaVwgOwor5aSW5ZynID4gZ2FpYXRzdVwgOwor5paJ5ZSxID4gc2Vpc2hvdVwgOwor54af5bm0ID4ganVrdW5lblwgOwor57WQ55CDID4ga2Vra3l1dVwgOwor5aCG55+zID4gdGFpc2VraVwgOwor5aSW5Zu9ID4gZ2Fpa29rdVwgOwor5o6l6L6eID4gc2V0c3VqaVwgOwor57K+6JaEID4gc2VpaGFrdVwgOwor5pW15ZywID4gdGVraWNoaVwgOwor5o2V6aOfID4gaG9zaG9rdVwgOwor5pW15Zu9ID4gdGVra29rdVwgOwor57WC55SfID4gc2h1dXNlaVwgOwor6Kej5raIID4ga2Fpc2hvdVwgOwor5aSJ5Z+fID4gaGVuJydpa2lcIDsKK+mZveaapiA+IHlvdXJla2lcIDsKK+Wkp+WQjSA+IGRhaW15b3VcIDsKK+WkseWKuSA+IHNoaWtrb3VcIDsKK+aWsOS9kyA+IHNoaW50YWlcIDsKK+WbvembuyA+IGtva3VkZW5cIDsKK+Wkp+WPoyA+IG9vZ3VjaGlcIDsKK+aOmOmAsiA+IGt1c3NoaW5cIDsKK+iqv+WJpCA+IGNob3V6YWlcIDsKK+mZuOabuSA+IHJpa3Vzb3VcIDsKK+WbvemboyA+IGtva3VuYW5cIDsKK+e3qeaApSA+IGthbmt5dXVcIDsKK+aUr+W6piA+IHNoaXRha3VcIDsKK+mZveaYpSA+IHlvdXNodW5cIDsKK+WbvemamyA+IGtva3VzYWlcIDsKK+Wkp+WOhCA+IHRhaXlha3VcIDsKK+e0i+eroCA+IG1vbnNob3VcIDsKK+aUr+W6gSA+IHNoaWNob3VcIDsKK+WcsOmBkyA+IGppbWljaGlcIDsKK+imqueOiSA+IG95YWRhbWFcIDsKK+aWsOS6uiA+IHNoaW5qaW5cIDsKK+aVheWunyA+IGtvaml0c3VcIDsKK+WkluWVhiA+IGdhaXNob3VcIDsKK+WbvemYsiA+IGtva3Vib3VcIDsKK+aUvuWwvyA+IGhvdW55b3VcIDsKK+ino+awtyA+IGthaWh5b3VcIDsKK+aWh+WNmiA+IGJ1bmhha3VcIDsKK+aTr+aWpSA+IGhpbnNla2lcIDsKK+Wkp+WLnSA+IHRhaXNob3VcIDsKK+aVmeWjhyA+IGt5b3VkYW5cIDsKK+e4ruWbsyA+IHNodWt1enVcIDsKK+mWk+iGnCA+IGthbm1ha3VcIDsKK+Wkp+WKmyA+IGRhaXJpa2lcIDsKK+aTjealrSA+IHNvdWd5b3VcIDsKK+WkqeWJhyA+IHRlbnNva3VcIDsKK+aOqOizniA+IHN1aXNob3VcIDsKK+eEoeasoCA+IG11a2V0c3VcIDsKK+ipqeWtpiA+IHNoaWdha3VcIDsKK+a/gOmXmCA+IGdla2l0b3VcIDsKK+ims+eFpyA+IGthbnNob3VcIDsKK+WkluWRqCA+IGdhaXNodXVcIDsKK+mWk+iEsyA+IGthbicnbm91XCA7CivmlZnloLQgPiBreW91am91XCA7Civlm7Dpm6MgPiBrb24nJ25hblwgOwor57im5Z2RID4gdGF0ZWtvdVwgOwor57Wm5rqQID4ga3l1dWdlblwgOwor6Zyy5LuPID4gcm9mdXRzdVwgOwor6Kqh5ZGKID4ga2Fpa29rdVwgOwor57Wm5rmvID4ga3l1dXRvdVwgOwor5Zyw6Lu4ID4gY2hpamlrdVwgOwor54K6552AID4gc2hpa2lzZVwgOwor5aSn5Ye2ID4gZGFpa3lvdVwgOwor6KaB55uuID4geW91bW9rdVwgOwor5pS75a2mID4ga291Z2FrdVwgOwor57WE54mIID4ga3VtaWhhblwgOwor6Kq/5YGcID4gY2hvdXRlaVwgOwor5pS55a6XID4ga2Fpc2h1dVwgOwor57mU5YWDID4gb3JpbW90b1wgOwor6KWf56ugID4gZXJpc2hvdVwgOwor6ZaL6IW5ID4ga2FpZnVrdVwgOwor6Zub5aOHID4gaGluYWRhblwgOwor5aSn5YW1ID4gZGFpaHlvdVwgOwor54et5YWJID4gc2hva2tvdVwgOwor6KGo6aGMID4gaHlvdWRhaVwgOwor6ZyH5YuVID4gc2hpbmRvdVwgOwor5pWZ5ZujID4ga3lvdWRhblwgOwor57SU55yfID4ganVuc2hpblwgOwor6Zq35bGeID4gcmVpem9rdVwgOwor5pac5LqkID4gaGFzdWthaVwgOwor57mB5YqHID4gaGFuZ2VraVwgOwor54Wp5oKpID4gYm9uJydub3VcIDsKK+ijveiWrCA+IHNlaXlha3VcIDsKK+WjsuWbvSA+IGJhaWtva3VcIDsKK+WkseS9kyA+IHNoaXR0YWlcIDsKK+e0lOebiiA+IGp1bicnZWtpXCA7Civmlpnkuq0gPiByeW91dGVpXCA7CivopqrngpkgPiBzaGluc2hhXCA7CivopIfokYkgPiBmdWt1eW91XCA7CivoqbPloLEgPiBzaG91aG91XCA7Civnt57luLMgPiBkb25jaG91XCA7CivmlbXli6IgPiB0ZWtpemVpXCA7CivooajpnaIgPiBoeW91bWVuXCA7CivplbfoiosgPiBuYWdhaW1vXCA7CivpmqPluK0gPiByaW5zZWtpXCA7CivntJTnmb0gPiBqdW5wYWt1XCA7CivoqZXlrpogPiBoeW91dGVpXCA7CivpmLLmr5IgPiBib3Vkb2t1XCA7CivmlbDljLkgPiBzdXVoaWtpXCA7CivlpJXliLsgPiB5dXVrb2t1XCA7Civpm7vljZMgPiBkZW50YWt1XCA7CivntYLngrkgPiBzaHV1dGVuXCA7Civnt4rmgKUgPiBraW5reXV1XCA7CivpmY3moLwgPiBrb3VrYWt1XCA7CivntabmsLQgPiBreXV1c3VpXCA7Civnsr7ogokgPiBzZWluaWt1XCA7CivmlbXliY0gPiB0ZWtpemVuXCA7CivlpJXlh6ogPiB5dXVuYWdpXCA7CivloZ7moJMgPiBzb2t1c2VuXCA7CivnuZrkubEgPiByeW91cmFuXCA7CivlpKnkvZEgPiB0ZW4nJ3l1dVwgOwor6Kmp5aKDID4gc2hpa3lvdVwgOwor57iE5aKoID4gam91Ym9rdVwgOwor5aSn5L2cID4gdGFpc2FrdVwgOwor6Kaq5r2uID4gb3lhc2hpb1wgOwor5Zuj6ZW3ID4gZGFuY2hvdVwgOwor6ZeY55eFID4gdG91YnlvdVwgOwor6KOc6KGAID4gaG9rZXRzdVwgOwor6Kaz5risID4ga2Fuc29rdVwgOwor54Wu5bmyID4gbmlib3NoaVwgOwor5Zub6Zi/ID4gYXp1bWF5YVwgOwor57ax5omLID4gdHN1bmFkZVwgOwor6Zm45oimID4gcmlrdXNlblwgOwor5aSp5Lq6ID4gdGVuJyduaW5cIDsKK+eBjOiFuCA+IGthbmNob3VcIDsKK+e3iuW8tSA+IGtpbmNob3VcIDsKK+mbhuWhtSA+IHNodXVqaW5cIDsKK+malOW5tCA+IGtha3VuZW5cIDsKK+mZjeacjSA+IGtvdWZ1a3VcIDsKK+WkluWCtyA+IGdhaXNob3VcIDsKK+WkieWJhyA+IGhlbnNva3VcIDsKK+mbhuWhiiA+IHNodXVrYWlcIDsKK+eEoeacrSA+IG11c2F0c3VcIDsKK+e0heeZvSA+IGtvdWhha3VcIDsKK+ino+aekCA+IGthaXNla2lcIDsKK+eEoeaciCA+IG11Z2V0c3VcIDsKK+Wil+W+tCA+IHpvdWNob3VcIDsKK+ilsueUqCA+IHNodXV5b3VcIDsKK+iqrOS8jyA+IHNlcHB1a3VcIDsKK+eGseWUsSA+IG5lc3Nob3VcIDsKK+aWieS4gCA+IHNlaWl0c3VcIDsKK+WkluS/oSA+IGdhaXNoaW5cIDsKK+aWh+S4rSA+IGJ1bmNodXVcIDsKK+Wil+W8tyA+IHpvdWt5b3VcIDsKK+mZuuaCqiA+IGtlbicnYWt1XCA7CivplbfogIMgPiBjaG91a291XCA7CivplbfogIEgPiBjaG91cm91XCA7CivooYzpoK0gPiBneW91dG91XCA7Civnt5rlr6kgPiBzZW5zaGluXCA7Civopb/ni6wgPiBzZWlkb2t1XCA7CivmlZHlkb0gPiBreXV1bWVpXCA7CivpmqDlr4YgPiBvbm1pdHN1XCA7Civplqjnp4AgPiBrZWlzaHV1XCA7CivpnI3kubEgPiBrYWt1cmFuXCA7Civlm73pgZMgPiBrb2t1ZG91XCA7CivntZDmsLcgPiBrZXBweW91XCA7Civpm4blm6MgPiBzaHV1ZGFuXCA7Civlm73pgKMgPiBrb2t1cmVuXCA7CivpmbPmg4UgPiBjaGluam91XCA7CivngavnrrggPiBoaWJhc2hpXCA7Civlo7LljZwgPiBiYWlib2t1XCA7CivmlZfljJcgPiBoYWlib2t1XCA7CivpmpzlrrMgPiBzaG91Z2FpXCA7CivlopfluYUgPiB6b3VmdWt1XCA7Civmk7LlvL4gPiB0ZWtpZGFuXCA7Civmva7pqJIgPiBzaGlvc2FpXCA7CivntKLnhLYgPiBzYWt1emVuXCA7CivnhLzmiJAgPiBzaG91c2VpXCA7Civpm7vkv6EgPiBkZW5zaGluXCA7CivntprmipUgPiB6b2t1dG91XCA7Civmv6voqq0gPiByYW5kb2t1XCA7Civntpnmib8gPiBrZWlzaG91XCA7Civntr7luIMgPiBheWFudW5vXCA7CivnspjohpwgPiBuZW5tYWt1XCA7CivmkYLnkIYgPiBzZXRzdXJpXCA7Civpm6rlhqQgPiBzZXRzdWVuXCA7CivmlL/llYYgPiBzZWlzaG91XCA7CivloqjlroggPiBib2t1c2h1XCA7CivnsonojLYgPiBrb25hY2hhXCA7Civop5LmnZAgPiBrYWt1emFpXCA7CivntYzmrbQgPiBrZWlyZWtpXCA7Civpm6LliKUgPiByaWJldHN1XCA7Civpl5jniZsgPiB0b3VneXV1XCA7CivnhaflsIQgPiBzaG91c2hhXCA7Civmkanmu4UgPiBtYW1ldHN1XCA7Civlm73ou40gPiBrb2t1Z3VuXCA7CivloZfmk6YgPiB0b3NhdHN1XCA7Civmv6vop7QgPiByYW5zaG91XCA7Civplbfnt6ggPiBjaG91aGVuXCA7CivmlZnlhbggPiBreW91dGVuXCA7CivlnLDooaggPiBjaGloeW91XCA7CivoqbLljZogPiBnYWloYWt1XCA7CivmjqjolqwgPiBzdWl5YWt1XCA7CivpmbPlvIEgPiBjaGluYmVuXCA7Civns7jnk5wgPiBoZWNoaW1hXCA7Civngqznh7UgPiBrb3RhdHN1XCA7CivooYzplpMgPiBneW91a2FuXCA7Civpm6jlgpggPiBhbWFnYXNhXCA7Civplovnq4sgPiBrYWlyeXV1XCA7CivntYLmraIgPiBzaHV1c2hpXCA7Civmkp7mnKggPiBzaHVtb2t1XCA7Civpm5Hli5kgPiB6YXRzdW11XCA7CivntLDmtYEgPiBzYWlyeXV1XCA7CivoqI7luZUgPiB0b3ViYWt1XCA7Civpm4blkIggPiBzaHV1Z291XCA7CivmjajosaEgPiBzaGFzaG91XCA7Civngq7ng5kgPiBob3Vyb2t1XCA7CivlnLDonIIgPiBqaWJhY2hpXCA7Civpmbrls7sgPiBrZW5zaHVuXCA7CivopqrmqKkgPiBzaGlua2VuXCA7CivooZfpjLIgPiBnYWlyb2t1XCA7CivopIfnt5ogPiBmdWt1c2VuXCA7Civpm5HliYcgPiB6YXNzb2t1XCA7Civoo4XolqwgPiBzb3V5YWt1XCA7Civlm73os5MgPiBrb2t1aGluXCA7Civngrnmu7QgPiB0ZW50ZWtpXCA7CivpmbjlsrggPiByaWt1Z2FuXCA7CivloZfmirkgPiB0b21hdHN1XCA7CivoqanliocgPiBzaGlnZWtpXCA7CivplovnpaggPiBrYWloeW91XCA7Civmkrnmi4wgPiBrYWt1aGFuXCA7Civpmb3lsIQgPiBoaXphc2hpXCA7CivnhrHlgrcgPiBuZXNzaG91XCA7CivplqLnmb0gPiBrYW5wYWt1XCA7Civoo5zoibIgPiBob3Nob2t1XCA7CivnhKbmha4gPiBzaG91cnlvXCA7CivpmarluK0gPiBiYWlzZWtpXCA7CivntZDmoLggPiBrZWtrYWt1XCA7CivmjK/piLQgPiBzaGlucmVpXCA7CivmlZnkvJogPiBreW91a2FpXCA7Civpm5HlhbUgPiB6b3VoeW91XCA7CivpmqPlm70gPiByaW5nb2t1XCA7CivntYPmpb0gPiBnZW5nYWt1XCA7Civpm4DljZMgPiBqYW50YWt1XCA7CivpmbjlsIEgPiByaWt1ZnV1XCA7Civpm6rkuK0gPiBzZXRjaHV1XCA7CivloqjloKQgPiBib2t1dGVpXCA7CivoqJflrqMgPiB0YWt1c2VuXCA7Civnsr7npZ4gPiBzZWlzaGluXCA7CivmkI3nm4ogPiBzb24nJ2VraVwgOwor6Zmj5bmVID4gamlubWFrdVwgOwor54Gw55q/ID4gaGFpemFyYVwgOwor57KX57iEID4gYXJhbmF3YVwgOwor5oyM6ZeYID4ga2FrdXRvdVwgOwor5oy66YCyID4gdGVpc2hpblwgOwor57O454iqID4gaGVjaGltYVwgOwor6KSS56ugID4gaG91c2hvdVwgOwor57WQ5p2fID4ga2Vzc29rdVwgOwor54Gw55m9ID4ga2FpaGFrdVwgOwor5pWZ5Li7ID4ga3lvdXNodVwgOwor6Kem5oSfID4gc2hva2thblwgOwor5oub6a2CID4gc2hvdWtvblwgOwor6Kaq5qCqID4gb3lha2FidVwgOwor57K+56K6ID4gc2Vpa2FrdVwgOwor5Zu96KuWID4ga29rdXJvblwgOwor57eR5ZyfID4gcnlva3Vkb1wgOwor6ZuG5YWJID4gc2h1dWtvdVwgOwor57WQ5pm2ID4ga2Vzc2hvdVwgOwor6KOc6IG3ID4gaG9zaG9rdVwgOwor5r+A6KuWID4gZ2VraXJvblwgOwor6Kmz5LydID4gc2hvdWRlblwgOwor57SF5r2uID4ga291Y2hvdVwgOwor5pWR5LiWID4ga3l1dXNlaVwgOwor6KaB5rGCID4geW91a3l1dVwgOwor6Zmq5a+pID4gYmFpc2hpblwgOwor5oy66LqrID4gdGVpc2hpblwgOwor54ax5LitID4gbmV0Y2h1dVwgOwor6Kaq5pu4ID4gc2hpbnNob1wgOwor6KOP6IW5ID4gdXJhaGFyYVwgOwor6KmV5YikID4gaHlvdWJhblwgOwor57SN5ra8ID4gbm91cnlvdVwgOwor5Zuz6KqsID4genVzZXRzdVwgOwor6Kmp5L2cID4gc2hpc2FrdVwgOwor6ZaT55S3ID4gbWFvdG9rb1wgOwor5pG65pysID4gc2hvdWhvblwgOwor6ZuR5LqLID4gemF0c3VqaVwgOwor5pS55L+uID4ga2Fpc2h1dVwgOwor6ZuM5LyPID4gc2hpZnVrdVwgOwor57WM5paHID4ga3lvdW1vblwgOwor57W25oGvID4gemVzc29rdVwgOwor6Zmj5a65ID4gamluJyd5b3VcIDsKK+ippuS9nCA+IHNoaXNha3VcIDsKK+mZuOWkpyA+IHJpa3VkYWlcIDsKK+ikpeeYoSA+IGpva3Vzb3VcIDsKK+eyl+etiyA+IGFyYXN1amlcIDsKK+eyvueZvSA+IHNlaWhha3VcIDsKK+ihjOmAsiA+IGtvdXNoaW5cIDsKK+mVt+efrSA+IGNob3V0YW5cIDsKK+aOo+iCmCA+IHNlaWNodXVcIDsKK+imquaWuSA+IG95YWthdGFcIDsKK+aUueS9nCA+IGthaXNha3VcIDsKK+ioreWWtiA+IHNldHN1ZWlcIDsKK+mbhuS8miA+IHNodXVrYWlcIDsKK+Wft+aoqSA+IHNoaWtrZW5cIDsKK+e1teW/gyA+IGVnb2tvcm9cIDsKK+aLnemgmCA+IGhhaXJ5b3VcIDsKK+e1tuW+jCA+IHpldHN1Z29cIDsKK+imquaUvyA+IHNoaW5zZWlcIDsKK+euoemgmCA+IGthbnJ5b3VcIDsKK+eymOeooCA+IG5lbmNodXVcIDsKK+aSruW9sSA+IHNhdHN1ZWlcIDsKK+WhqeWusyA+IHNoaW9nYWlcIDsKK+ijnOe2tCA+IGhvdGV0c3VcIDsKK+evpOi+siA+IHRva3Vub3VcIDsKK+aPrueZuiA+IGtpaGF0c3VcIDsKK+ios+WQjSA+IHlha3VtZWlcIDsKK+eDj+acqCA+IGtva3V0YW5cIDsKK+maiuWVhiA+IHRhaXNob3VcIDsKK+WghuacsSA+IHRzdWlzaHVcIDsKK+mZuOWcsCA+IHJpa3VjaGlcIDsKK+Wig+WfnyA+IGt5b3Vpa2lcIDsKK+aMh+mHnSA+IHNoaXNoaW5cIDsKK+WbnuiqrSA+IGthaWRva3VcIDsKK+eFp+WQiCA+IHNob3Vnb3VcIDsKK+iovOWIuCA+IHNob3VrZW5cIDsKK+ipleS8nSA+IGh5b3VkZW5cIDsKK+eBuOeCuSA+IGt5dXV0ZW5cIDsKK+Wei+eVqiA+IGthdGFiYW5cIDsKK+eEvOWjsiA+IHNodXVtYWlcIDsKK+WbnuiouiA+IGthaXNoaW5cIDsKK+ikh+ecvCA+IGZ1a3VnYW5cIDsKK+iplOS7pCA+IHNob3VyZWlcIDsKK+Wig+WcsCA+IGt5b3VjaGlcIDsKK+e3qOS/riA+IGhlbnNodXVcIDsKK+e1seW5lSA+IHRvdWJha3VcIDsKK+eBq+eHtSA+IGtvdGF0c3VcIDsKK+aSreW3niA+IGJhbnNodXVcIDsKK+eEoeWuvyA+IG11c2h1a3VcIDsKK+inkuW4vSA+IGtha3Vib3VcIDsKK+eBq+eGsSA+IGthbmV0c3VcIDsKK+mVt+eUtyA+IGNob3VuYW5cIDsKK+imquaMhyA+IG95YXl1YmlcIDsKK+inkuW4ryA+IGtha3VvYmlcIDsKK+eEoeWunyA+IG11aml0c3VcIDsKK+mVt+eUnyA+IGNob3VzZWlcIDsKK+e0ouadoSA+IHNha3Vqb3VcIDsKK+ihqOinoyA+IGh5b3VrYWlcIDsKK+e3j+WJhyA+IHNvdXNva3VcIDsKK+Wbm+inkiA+IHNoaWtha3VcIDsKK+e0i+anmCA+IG1vbicneW91XCA7Civlopflj44gPiB6b3VzaHV1XCA7CivooYzos54gPiBrb3VzaG91XCA7CivnrqHplbcgPiBrYW5jaG91XCA7Civntr7lj5YgPiBheWF0b3JpXCA7CivntprloLEgPiB6b2t1aG91XCA7CivmjqLntKIgPiB0YW5zYWt1XCA7CivooYDot68gPiBrZXRzdXJvXCA7CivloLHlvrMgPiBob3V0b2t1XCA7Civmkanmk6YgPiBtYXNhdHN1XCA7CivloLHlvqkgPiBob3VmdWt1XCA7Civmj5DnnaMgPiB0ZWl0b2t1XCA7CivopovmlpkgPiBrZW5yeW91XCA7Civooajoo4UgPiBoeW91c291XCA7CivntYLmiKYgPiBzaHV1c2VuXCA7Civlm73okawgPiBrb2t1c291XCA7Civopb/mmqYgPiBzZWlyZWtpXCA7CivnsaDntaEgPiByb3VyYWt1XCA7Civnspfnmq4gPiBhcmFrYXdhXCA7Civngq3mn7EgPiB0YW5jaHV1XCA7CivloKrlv40gPiBrYW4nJ25pblwgOwor6Kaq5oSbID4gc2hpbicnYWlcIDsKK+ihk+iqniA+IGp1dHN1Z29cIDsKK+ims+W/tSA+IGthbicnbmVuXCA7CivntJTmnLQgPiBqdW5ib2t1XCA7CivoqJPlkYogPiBrdW5rb2t1XCA7Civopb/ml6UgPiBuaXNoaWJpXCA7CivopbLmnaUgPiBzaHV1cmFpXCA7CivnsbPnqYAgPiBiZWlrb2t1XCA7Civnr4Dov6sgPiBzZXBwYWt1XCA7Civln7fmlL8gPiBzaGlzc2VpXCA7Civmk4Hlo4EgPiB5b3VoZWtpXCA7CivoqK3lgpkgPiBzZXRzdWJpXCA7CivooYDosYYgPiBjaGltYW1lXCA7CivoqLzkurogPiBzaG91bmluXCA7CivlnKfnuK4gPiBhc3NodWt1XCA7Civmjoznt6ggPiBzaG91aGVuXCA7Civnt5LkvZwgPiBzaG9zYWt1XCA7CivloYHlr6kgPiBydWlzaGluXCA7CivlorPkuJggPiBmdW5reXV1XCA7CivnspfnlaUgPiBzb3J5YWt1XCA7CivntJrmlbAgPiBreXV1c3V1XCA7CivntIvmnI0gPiBtb25wdWt1XCA7Civoo5Xnpo8gPiB5dXVmdWt1XCA7CivmjpvnrpcgPiBrYWtlemFuXCA7CivooYboq5YgPiBzaHV1cm9uXCA7Civlm57omasgPiBrYWljaHV1XCA7Civmjqjnp7AgPiBzdWlzaG91XCA7CivntbXlp78gPiBlc3VnYXRhXCA7CivopoHmkoMgPiB5b3VnZWtpXCA7CivlnLDnsY0gPiBjaGlzZWtpXCA7CivmjqLnqbYgPiB0YW5reXV1XCA7CivmjozntIsgPiBzaG91bW9uXCA7CivnspLnlYwgPiByeXV1a2FpXCA7CivmjafohbkgPiBob3VmdWt1XCA7CivmkI3mtYEgPiBzb25yeXV1XCA7CivmvIbpo58gPiBzaGlra3VpXCA7CivnhafkvJogPiBzaG91a2FpXCA7CivmjJnoqLwgPiBreW9zaG91XCA7Civngrnmj48gPiB0ZW5ieW91XCA7CivlnKjnsY0gPiB6YWlzZWtpXCA7Civmi5PpioAgPiB0YWt1Z2luXCA7Civntbblo4EgPiB6ZXBwZWtpXCA7CivpmpTkuJYgPiBrYWt1c2VpXCA7CivpmbjlhbUgPiByaWt1aGVpXCA7CivntrHlhbcgPiB0c3VuYWd1XCA7CivnspfnjokgPiBhcmF0YW1hXCA7CivntrLlhYMgPiBhbWltb3RvXCA7CivoqIDlj4ogPiBnZW5reXV1XCA7Civns7jmnqAgPiBpdG93YWt1XCA7CivpmaTljbQgPiBqb2t5YWt1XCA7CivmvKvpjLIgPiBtYW5yb2t1XCA7Civpmo/kuIAgPiB6dWlpY2hpXCA7Civns7jmnYkgPiBpdG9zdWdpXCA7CivngbDmrrsgPiBoYWlnYXJhXCA7CivoqKrkuK0gPiBob3VjaHV1XCA7CivmkYLmlL8gPiBzZXNzaG91XCA7CivloanlkbMgPiBzaGlvYWppXCA7CivlnLDnqY0gPiBjaGlzZWtpXCA7CivntZDlsL4gPiBrZXRzdWJpXCA7CivntITmlbAgPiB5YWt1c3V1XCA7CivpmLLlo4EgPiBib3VoZWtpXCA7Civns77mmI4gPiBreXV1bWVpXCA7CivloYHlo4EgPiBydWloZWtpXCA7CivntZDlr6kgPiBrZXNzaGluXCA7CivntLDlv4MgPiBzYWlzaGluXCA7CivmjqHnn7MgPiBzYWlzZWtpXCA7CivloIXlv40gPiBrZW4nJ25pblwgOwor57KS54q2ID4gcnl1dWpvdVwgOwor5ouZ6YCfID4gc2Vzc29rdVwgOwor5r2u6KejID4gY2hvdWthaVwgOwor5pKu5ZyfID4gc2F0c3Vkb1wgOwor5ry46YCyID4gemVuc2hpblwgOwor6Kaq5bGVID4gc2hpbnRlblwgOwor6KaP5b6LID4ga2lyaXRzdVwgOwor5oyB6KqsID4gamlzZXRzdVwgOwor6KaW5bqKID4gc2hpc2hvdVwgOwor6KeS5ZywID4ga2Fkb2NoaVwgOwor57WM5a2mID4ga2VpZ2FrdVwgOwor57KL54uCID4gc3Vpa3lvdVwgOwor6KOP55m9ID4gdXJhamlyb1wgOwor5aG15YWlID4gZ29taWlyZVwgOwor5aCx5aWoID4gaG91c2hvdVwgOwor57Sw5bivID4gaG9zb29iaVwgOwor6Kaq5a2QID4gc2hpbnNoaVwgOwor54Sh5Y+jID4gbXVrdWNoaVwgOwor5Z+35b+1ID4gc2h1dW5lblwgOwor6Zm45LiKID4gcmlrdWpvdVwgOwor5ryr6YGKID4gbWFuJyd5dXVcIDsKK+e1tuWUsSA+IHplc3Nob3VcIDsKK+WbnuiFuCA+IGthaWNob3VcIDsKK+mVt+axnyA+IGNob3Vrb3VcIDsKK+WcsOebriA+IGNoaW1va3VcIDsKK+aLjei7iiA+IGhha3VzaGFcIDsKK+eEoeWKmyA+IG11cnlva3VcIDsKK+aKvemBuCA+IGNodXVzZW5cIDsKK+aNnOe0oiA+IHNvdXNha3VcIDsKK+mWi+alrSA+IGthaWd5b3VcIDsKK+e1tuWPqyA+IHpla2t5b3VcIDsKK+WbveeyiyA+IGtva3VzdWlcIDsKK+aOm+eVmSA+IGtlaXJ5dXVcIDsKK+imquWlvSA+IHNoaW5rb3VcIDsKK+mWiealrSA+IGhlaWd5b3VcIDsKK+WgseWbvSA+IGhvdWtva3VcIDsKK+exs+eLrCA+IGJlaWRva3VcIDsKK+aMr+iIniA+IGZ1cnVtYWlcIDsKK+eutOiogCA+IHNoaW5nZW5cIDsKK+e1guWniyA+IHNodXVzaGlcIDsKK+mVt+atjiA+IGNob3V0YW5cIDsKK+mVt+atjCA+IG5hZ2F1dGFcIDsKK+aMr+iIiCA+IHNoaW5rb3VcIDsKK+imluWtpiA+IHNoaWdha3VcIDsKK+mZnuS7uyA+IHNob3VuaW5cIDsKK+e0meW5hSA+IHNoaWZ1a3VcIDsKK+e0meW4syA+IHNoaWNob3VcIDsKK+e1jOWggiA+IGt5b3Vkb3VcIDsKK+mZo+S4rSA+IGppbmNodXVcIDsKK+e0jeW+lyA+IG5hdHRva3VcIDsKK+e1tuWLnSA+IHplc3Nob3VcIDsKK+eymOa2siA+IG5lbicnZWtpXCA7CivlnJ/nnYAgPiBkb2NoYWt1XCA7Civlm73nrYkgPiBrb2t1dG91XCA7CivloILlroggPiBkb3Vtb3JpXCA7Civmi53orIEgPiBoYWlldHN1XCA7CivmkqTlj44gPiB0ZXNzaHV1XCA7CivnsaDnkIMgPiByb3VreXV1XCA7Civnga/mmI4gPiB0b3VteW91XCA7Civmi53oqq0gPiBoYWlkb2t1XCA7Civon7bosp0gPiBtYXRlZ2FpXCA7CivnrYnplpEgPiBuYW96YXJpXCA7Civmi5voq4sgPiBzaG91c2VpXCA7Civpj6TpqqggPiBydWtvdHN1XCA7CivopovlraYgPiBrZW5nYWt1XCA7CivmipXpjKggPiB0b3VieW91XCA7CivntYzlm70gPiBrZWlrb2t1XCA7CivlnKjnlZkgPiB6YWlyeXV1XCA7CivmkI3mlpkgPiBzb25yeW91XCA7CivntJDluK8gPiBjaHV1dGFpXCA7Civpj6Hpq5ggPiBreW91a291XCA7CivlnK3nkqcgPiBrZWloZWtpXCA7Civmj4/ms5UgPiBieW91aG91XCA7Civoo73msLcgPiBzZWloeW91XCA7CivlnLDnkIMgPiBjaGlreXV1XCA7CivpkZHos54gPiBrYW5zaG91XCA7Civlm73nqI4gPiBrb2t1emVpXCA7Civmv6vnlKggPiByYW4nJ3lvdVwgOwor57SA5b6LID4ga2lyaXRzdVwgOwor6ZaA5p+xID4gbW9uY2h1dVwgOwor6ZmN5LyPID4ga291ZnVrdVwgOwor5aCx5ZGKID4gaG91a29rdVwgOwor57Sz5aOrID4gc2hpbnNoaVwgOwor57O+5by+ID4ga3l1dWRhblwgOwor6KGS6ICAID4gZ2VuJyd5b3VcIDsKK+WbsOeqriA+IGtvbmt5dXVcIDsKK+ihqOe0mSA+IGh5b3VzaGlcIDsKK+eDiOWlsyA+IHJldHN1am9cIDsKK+mYsuWFsSA+IGJvdWt5b3VcIDsKK+aSsOS/riA+IHNlbnNodXVcIDsKK+mXmOWwhiA+IHRvdXNob3VcIDsKK+imquWWhCA+IHNoaW56ZW5cIDsKK+a/q+eNsiA+IHJhbmtha3VcIDsKK+a8q+iqrSA+IG1hbmRva3VcIDsKK+mWouaJgCA+IHNla2lzaG9cIDsKK+eAn+a0kiA+IHNob3VzaGFcIDsKK+WfjuW7kyA+IGpvdWtha3VcIDsKK+ezuOW6lSA+IGl0b3pva29cIDsKK+a8q+iplSA+IG1hbnB5b3VcIDsKK+eBjOacqCA+IGthbmJva3VcIDsKK+imi+WigyA+IG1pc2FrYWlcIDsKK+e1jOWPsiA+IGt5b3VzaGlcIDsKK+aKmOi+vCA+IG9yaWtvbWlcIDsKK+WbnueroCA+IGthaXNob3VcIDsKK+aOiOeItSA+IGp1c2hha3VcIDsKK+etiemHjyA+IHRvdXJ5b3VcIDsKK+mPoemdoiA+IGt5b3VtZW5cIDsKK+e1jOWNlCA+IGtlaWt5b3VcIDsKK+WbuuedgCA+IGtvY2hha3VcIDsKK+aOqOa4rCA+IHN1aXNva3VcIDsKK+WbveebiiA+IGtva3Vla2lcIDsKK+a7sumAjyA+IHNoaW50b3VcIDsKK+ims+WKhyA+IGthbmdla2lcIDsKK+e0hOWumiA+IHlha3Vqb3VcIDsKK+WgseWEnyA+IGhvdXNob3VcIDsKK+ikh+acrCA+IGZ1a3Vob25cIDsKK+mVt+aWhyA+IGNob3VidW5cIDsKK+aSqeS5sSA+IHJ5b3VyYW5cIDsKK+aOoua4rCA+IHRhbnNva3VcIDsKK+aKlei6qyA+IHRvdXNoaW5cIDsKK+e1seS4gCA+IHRvdWl0c3VcIDsKK+mWi+aLkyA+IGthaXRha3VcIDsKK+mWouW/gyA+IGthbnNoaW5cIDsKK+ijnOauuiA+IGhvc2F0c3VcIDsKK+ezuOWxkSA+IGl0b2t1enVcIDsKK+aSg+WJoyA+IGdla2lrZW5cIDsKK+aJgemhjSA+IGhlbmdha3VcIDsKK+a8lOiqrCA+IGVuemV0c3VcIDsKK+WeguaVmSA+IHN1aWt5b3VcIDsKK+ikh+aYnyA+IGZ1a3VzZWlcIDsKK+etiemAnyA+IHRvdXNva3VcIDsKK+aJgOmgmCA+IHNob3J5b3VcIDsKK+eruemmrCA+IGNoaWt1YmFcIDsKK+ijnOasoCA+IGhva2V0c3VcIDsKK+WbveeUoyA+IGtva3VzYW5cIDsKK+ihgOe4gSA+IGtldHN1ZW5cIDsKK+ikh+aWuSA+IGZ1a3Vob3VcIDsKK+eyl+acqyA+IHNvbWF0c3VcIDsKK+ihk+etliA+IGp1c3Nha3VcIDsKK+ikh+aWhyA+IGZ1a3VidW5cIDsKK+a/gOeUmiA+IGdla2lqaW5cIDsKK+mOrumtgiA+IGNoaW5nb25cIDsKK+ikh+aVsCA+IGZ1a3VzdXVcIDsKK+eBr+W/gyA+IHRvdXNoaW5cIDsKK+aQjeW+lyA+IHNvbnRva3VcIDsKK+WgleWKmyA+IGRhcnlva3VcIDsKK+e1guWIiiA+IHNodXVrYW5cIDsKK+aOouaxgiA+IHRhbmt5dXVcIDsKK+imquWFgyA+IG95YW1vdG9cIDsKK+aIkOmzpSA+IHNlaWNob3VcIDsKK+mPoemRkSA+IGt5b3VrYW5cIDsKK+ihgOeziiA+IGNoaW5vcmlcIDsKK+etiei6qyA+IHRvdXNoaW5cIDsKK+a8uOiQvSA+IHplbnJha3VcIDsKK+eyl+aWuSA+IGFyYWthdGFcIDsKK+ezuOWnqyA+IGl0b2hpbWVcIDsKK+evgOe+qSA+IHNldHN1Z2lcIDsKK+ethui5nyA+IGhpc3Nla2lcIDsKK+mVt+aJgCA+IGNob3VzaG9cIDsKK+ethui3oSA+IGhpc3Nla2lcIDsKK+a9rue0hSA+IGNob3Vrb3VcIDsKK+aJgOmVtyA+IHNob2Nob3VcIDsKK+e1guWApCA+IG93YXJpbmVcIDsKK+e0sOWJhyA+IHNhaXNva3VcIDsKK+ihgOetiyA+IGNoaXN1amlcIDsKK+a9heiFuCA+IGthbmNob3VcIDsKK+WfjuWjgSA+IGpvdWhla2lcIDsKK+WcsOauuyA+IGNoaWtha3VcIDsKK+aRmOWPliA+IHRla2lzaHVcIDsKK+aLm+iHtCA+IHNob3VjaGlcIDsKK+etluisgCA+IHNha3Vib3VcIDsKK+imquS6pCA+IHNoaW5rb3VcIDsKK+eyvuW8tyA+IHNlaWt5b3VcIDsKK+aKmOinkiA+IHNla2tha3VcIDsKK+iejemAmiA+IHl1dWR6dXVcIDsKK+mWi+W5lSA+IGthaW1ha3VcIDsKK+WWq+mpmiA+IGJpa2t1cmlcIDsKK+mWi+W4syA+IGthaWNob3VcIDsKK+ewh+eUnyA+IHpva3VzZWlcIDsKK+WdkeacqCA+IGtvdWJva3VcIDsKK+e0muWPiyA+IGt5dXV5dXVcIDsKK+mWieW5lSA+IGhlaW1ha3VcIDsKK+mOlumqqCA+IHNha290c3VcIDsKK+a6gOmhjSA+IG1hbmdha3VcIDsKK+ihl+edgCA+IG1hY2hpZ2lcIDsKK+aMr+ebqiA+IHNoaW50b3VcIDsKK+ilv+WMlyA+IHNlaWhva3VcIDsKK+imhuWIuyA+IGZ1a2tva3VcIDsKK+Wcp+auuiA+IGFzc2F0c3VcIDsKK+mOrumdmSA+IGNoaW5zZWlcIDsKK+ifi+ifgCA+IGtvb3JvZ2lcIDsKK+a/oOa0siA+IGdvdXNodXVcIDsKK+aLneiBtCA+IGhhaWNob3VcIDsKK+aJjemHjyA+IHNhaXJ5b3VcIDsKK+a/geeCuSA+IGRha3V0ZW5cIDsKK+e1guS4liA+IHNodXVzZWlcIDsKK+igj+e8tiA+IGthbmlrYW5cIDsKK+ernOmhlCA+IHJ5b3VnYW5cIDsKK+mVt+W+hCA+IGNob3VrZWlcIDsKK+mVt+W+gSA+IGNob3VzZWlcIDsKK+Wft+WIgCA+IHNoaXR0b3VcIDsKK+aKmOihtyA+IHNldGNodXVcIDsKK+ilsuWQjSA+IHNodXVtZWlcIDsKK+aLm+iBmCA+IHNob3VoZWlcIDsKK+aKmOihnSA+IHNlc3Nob3VcIDsKK+e0ueS7iyA+IHNob3VrYWlcIDsKK+e0heWUhyA+IGtvdXNoaW5cIDsKK+ihqOePviA+IGh5b3VnZW5cIDsKK+Wbm+eQgyA+IHNoaWt5dXVcIDsKK+WeguW/gyA+IHN1aXNoaW5cIDsKK+aOqOacjSA+IHN1aWZ1a3VcIDsKK+ihhuefpSA+IHNodXVjaGlcIDsKK+mWkeWvgiA+IGthbmpha3VcIDsKK+ezvuWVjyA+IGt5dXVtb25cIDsKK+ijj+abuCA+IHVyYWdha2lcIDsKK+ethuiqhSA+IGhpdGNodXVcIDsKK+aJv+iqjSA+IHNob3VuaW5cIDsKK+mVt+W5vCA+IGNob3V5b3VcIDsKK+mVt+W5tCA+IG5hZ2FuZW5cIDsKK+mWo+WkliA+IGtha3VnYWlcIDsKK+imgeWEnyA+IHlvdXNob3VcIDsKK+etieinkiA+IHRvdWtha3VcIDsKK+WYhuizniA+IHRhbnNob3VcIDsKK+etieimqiA+IHRvdXNoaW5cIDsKK+aQvuWPliA+IHNha3VzaHVcIDsKK+WgheS6uiA+IGthdGFqaW5cIDsKK+ijheadnyA+IHNvdXpva3VcIDsKK+Wcn+apiyA+IGRvYmFzaGlcIDsKK+WcsOaguCA+IGNoaWtha3VcIDsKK+aJi+i/kSA+IHRlZGppa2FcIDsKK+ijj+aWuSA+IHVyYWthdGFcIDsKK+ezvuWQiCA+IGt5dXVnb3VcIDsKK+ifuee8tiA+IGthbmlrYW5cIDsKK+a/gOa4myA+IGdla2lnZW5cIDsKK+eyl+W/vSA+IHNva290c3VcIDsKK+e0jeWFpSA+IG5vdW55dXVcIDsKK+aKgOihkyA+IGdpanV0c3VcIDsKK+aKleiWrCA+IHRvdXlha3VcIDsKK+a/gOa1qiA+IGdla2lyb3VcIDsKK+e0hOWIhiA+IHlha3VidW5cIDsKK+WbveazlSA+IGtva3Vob3VcIDsKK+aJi+i5nyA+IHNodXNla2lcIDsKK+aIkOmVtyA+IHNlaWNob3VcIDsKK+eykuW+hCA+IHJ5dXVrZWlcIDsKK+mVt+WumCA+IGNob3VrYW5cIDsKK+aJi+i3oSA+IHNodXNla2lcIDsKK+mVt+WtkCA+IGNob3VzaGlcIDsKK+WbveawkSA+IGtva3VtaW5cIDsKK+eyvuWmmSA+IHNlaW15b3VcIDsKK+a/geawtCA+IGRha3VzdWlcIDsKK+ibn+m+jSA+IGtvdXJ5b3VcIDsKK+aOkuaWpSA+IGhhaXNla2lcIDsKK+mWieWhniA+IGhlaXNva3VcIDsKK+ihjOeKtiA+IGd5b3Vqb3VcIDsKK+idtuiynSA+IGNob3VnYWlcIDsKK+iln+WFgyA+IGVyaW1vdG9cIDsKK+ihgOeQgyA+IGtla2t5dXVcIDsKK+aLmeetliA+IHNlc3Nha3VcIDsKK+aHuOmalCA+IGtlbmtha3VcIDsKK+ijj+aKgCA+IHVyYXdhemFcIDsKK+WcqOaWuSA+IHphaWthdGFcIDsKK+eruei8qiA+IGNoaWt1d2FcIDsKK+aOkuaSgyA+IGhhaWdla2lcIDsKK+evgOebriA+IGZ1c2hpbWVcIDsKK+aOoeaKniA+IHNhaXRha3VcIDsKK+aNleauuiA+IGhvc2F0c3VcIDsKK+mWi+WbvSA+IGthaWtva3VcIDsKK+ien+iZqyA+IG1laWNodXVcIDsKK+eBveWOhCA+IHNhaXlha3VcIDsKK+Wcn+aXpSA+IGRvbmljaGlcIDsKK+ikkuWlqCA+IGhvdXNob3VcIDsKK+mVt+WkpyA+IGNob3VkYWlcIDsKK+aIkOmKgCA+IG5hcmlnaW5cIDsKK+evhOeWhyA+IGhhbmNodXVcIDsKK+Wbnua1gSA+IGthaXJ5dXVcIDsKK+eyl+WvhiA+IHNvbWl0c3VcIDsKK+aOjOaPoSA+IHNob3Vha3VcIDsKK+aIkOmHkSA+IG5hcmlraW5cIDsKK+a9lOeZvSA+IGtlcHBha3VcIDsKK+a9lOeZliA+IGtlcHBla2lcIDsKK+a8ouexjSA+IGthbnNla2lcIDsKK+Wcp+aOpSA+IGFzc2V0c3VcIDsKK+aKveexpCA+IGNodXVzZW5cIDsKK+ertui1sCA+IGt5b3Vzb3VcIDsKK+eykuWtkCA+IHJ5dXVzaGlcIDsKK+aJjeimmiA+IHNhaWtha3VcIDsKK+eBq+WPoyA+IGhpZ3VjaGlcIDsKK+aJgOisgiA+IGl3YXl1cnVcIDsKK+eskeimpyA+IHNob3VyYW5cIDsKK+mWk+WPoyA+IG1hZ3VjaGlcIDsKK+aQj+WLlSA+IGhha3Vkb3VcIDsKK+aIpui3oSA+IHNlbnNla2lcIDsKK+mWo+WGhSA+IGtha3VuYWlcIDsKK+a6gOi6qyA+IG1hbnNoaW5cIDsKK+WbveacrCA+IGtva3Vob25cIDsKK+ijj+W6rSA+IHVyYW5pd2FcIDsKK+ijj+W6lyA+IHVyYWRhbmFcIDsKK+WbveaciSA+IGtva3V5dXVcIDsKK+WbveabuCA+IGtva3VzaG9cIDsKK+eBq+WKmyA+IGthcnlva3VcIDsKK+mVt+WYhiA+IGNob3V0YW5cIDsKK+ernOi7iiA+IHJ5dXVzaGFcIDsKK+aIkei8qSA+IHdhZ2FoYWlcIDsKK+a6gOi2syA+IG1hbnpva3VcIDsKK+ihgOa9riA+IGNoaXNoaW9cIDsKK+a8hue1tSA+IHVydXNoaWVcIDsKK+eyl+WjgSA+IGFyYWthYmVcIDsKK+ihgOa8vyA+IGtlc3Nob3VcIDsKK+m9t+m9qiA+IGFrdXNla3VcIDsKK+a/gOaakSA+IGdla2lzaG9cIDsKK+WVhumtgiA+IHNob3Vrb25cIDsKK+WcsOW/gyA+IGNoaXNoaW5cIDsKK+epuummrCA+IGthcmF1bWFcIDsKK+mVt+WUhCA+IG5hZ2F1dGFcIDsKK+aQjeWCtyA+IHNvbnNob3VcIDsKK+eul+ebpCA+IHNvcm9iYW5cIDsKK+WbveaWhyA+IGtva3VidW5cIDsKK+mWi+WJiiA+IGthaXNha3VcIDsKK+aJgOihjCA+IHNob2d5b3VcIDsKK+WbveaVmSA+IGtva2t5b3VcIDsKK+mVt+WRvSA+IGNob3VtZWlcIDsKK+WbveaUvyA+IGtva3VzZWlcIDsKK+a6ouihgCA+IGlra2V0c3VcIDsKK+exs+WvqSA+IGJlaXNoaW5cIDsKK+WdqeWgnSA+IHJ1dHN1Ym9cIDsKK+evgOeFmSA+IHNldHN1ZW5cIDsKK+Wbo+aglyA+IGRvbmd1cmlcIDsKK+a4m+mhjSA+IGdlbmdha3VcIDsKK+Wbs+aYnyA+IHp1Ym9zaGlcIDsKK+ijj+WxsSA+IHVyYXlhbWFcIDsKK+aKmOe0mSA+IG9yaWdhbWlcIDsKK+aLmOeVmSA+IGtvdXJ5dXVcIDsKK+ihjOawtCA+IGd5b3V6dWlcIDsKK+eyieWjgSA+IGZ1bnBla2lcIDsKK+eri+i6qyA+IHJpc3NoaW5cIDsKK+aOpeWwviA+IHNldHN1YmlcIDsKK+erueijvSA+IHRha2VzZWlcIDsKK+WVhumkqCA+IHNob3VrYW5cIDsKK+eul+eUqCA+IHNhbicneW91XCA7CivooYDmsoggPiBrZXRjaGluXCA7CivplpPkvZwgPiBrYW5zYWt1XCA7CivmiYvolJMgPiB0ZWR6dXJ1XCA7CivopIflkIggPiBmdWt1Z291XCA7CivplbfliaMgPiBjaG91a2VuXCA7Civngavku5ggPiBoaXRzdWtlXCA7CivllJDpu40gPiB0b3VraWJpXCA7CivlnLDls6EgPiBjaGlreW91XCA7Civnr4nmuK8gPiBjaGlra291XCA7Civmj5DllLEgPiB0ZWlzaG91XCA7CivnqbrpmpkgPiBrdXVnZWtpXCA7CivmipznqbQgPiBudWtlYW5hXCA7CivplpHkurogPiBoaW1hamluXCA7CivnqbrpmbggPiBrdXVyaWt1XCA7CivonZnonaAgPiBoZW5wdWt1XCA7CivmioTntJkgPiBzaG91c2hpXCA7Civlm57mmKUgPiBrYWlzaHVuXCA7CivplpPkuK0gPiBhaWRhanV1XCA7Civmib/ntpkgPiBzaG91a2VpXCA7CivnrYnntJogPiB0b3VreXV1XCA7CivmjpLlsL8gPiBoYWlueW91XCA7CivmjbflvoQgPiBzaG91a2VpXCA7Civlm73miYsgPiBrb2t1c2h1XCA7CivmjqjlpaggPiBzdWlzaG91XCA7CivooYzmpb0gPiBrb3VyYWt1XCA7CivplbflhYQgPiBjaG91a2VpXCA7CivooajmmI4gPiBoeW91bWVpXCA7Civmv4DmiKYgPiBnZWtpc2VuXCA7Civlm57mlZkgPiBrYWlreW91XCA7CivlnLDlraYgPiBjaGlnYWt1XCA7CivmvIHnpIEgPiBneW9zaG91XCA7CivooajmlawgPiBoeW91a2VpXCA7CivmhoLprLEgPiB5dXV1dHN1XCA7Civmh7jos54gPiBrZW5zaG91XCA7Civmv4DmhqQgPiBnZWtpZnVuXCA7Civnqb/pkb8gPiBzZW5zYWt1XCA7CivmvaTmsqIgPiBqdW50YWt1XCA7CivmjK/mm78gPiBmdXJpa2FlXCA7Civnr6bmo5IgPiBiZXJhYm91XCA7CivopIflhpkgPiBmdWt1c2hhXCA7CivmipXnpaggPiB0b3VoeW91XCA7Civlm73mg4UgPiBrb2t1am91XCA7CivlnKjlroUgPiB6YWl0YWt1XCA7CivlnKjlraYgPiB6YWlnYWt1XCA7Civmh5Dpg7cgPiBrYWlreW91XCA7Civmv4Dmg4UgPiBnZWtpam91XCA7Civnsr7kuIAgPiBzZWlpdHN1XCA7CivlmajniakgPiBraWJ1dHN1XCA7CivnsbPlm70gPiBiZWlrb2t1XCA7Civnq4voqLwgPiByaXNzaG91XCA7Civmjpvlo7AgPiBrYWtlZ29lXCA7CivooYzmnKsgPiB5dWt1c3VlXCA7CivooYzmm7ggPiBneW91c2hvXCA7CivmuL7ouqsgPiBrb25zaGluXCA7CivmiYHoiJ8gPiBoZW5zaHV1XCA7CivmipXnn7MgPiB0b3VzZWtpXCA7CivmjIfmqJkgPiBzaGloeW91XCA7Civlm7Dmg5EgPiBrb253YWt1XCA7CivmjJ/mm7ggPiBreW91c2hvXCA7Civmj4/lhpkgPiBieW91c2hhXCA7CivooYbmnJsgPiBzaHV1Ym91XCA7CivplbfkuIogPiBjaG91am91XCA7Civoobfmg4UgPiBjaHV1am91XCA7CivmuJvph48gPiBnZW5yeW91XCA7CivmvoTmmI4gPiBjaG91bWVpXCA7CivooYbmmbogPiBzaHV1Y2hpXCA7CivlmInnr4AgPiBrYXNldHN1XCA7CivooYzmlbAgPiBneW91c3V1XCA7Civlm7PlvI8gPiB6dXNoaWtpXCA7CivooYzmlL8gPiBneW91c2VpXCA7CivmiJDomasgPiBzZWljaHV1XCA7CivmvL/mtrIgPiBzaG91ZWtpXCA7CivlnLDlnaogPiBqaXRzdWJvXCA7CivnqYDpoZ4gPiBrb2t1cnVpXCA7CivmvKDnhLYgPiBiYWt1emVuXCA7Civnq7boiYcgPiBreW91dGVpXCA7Civoo73kvZwgPiBzZWlzYWt1XCA7CivnqoHpgLIgPiB0b3NzaGluXCA7Civmj5DkvpsgPiB0ZWlreW91XCA7Civmt7HplpEgPiBzaGlua2FuXCA7CivnsbPlj44gPiBiZWlzaHV1XCA7Civnqb/pgJogPiBzZW50c3V1XCA7CivmuJvpgJ8gPiBnZW5zb2t1XCA7Civooajmg4UgPiBoeW91am91XCA7CivnrKbnr4AgPiBmdXNldHN1XCA7CivlmbTmtYEgPiBmdW5yeXV1XCA7Civmib/nn6UgPiBzaG91Y2hpXCA7CivnqK7ppqwgPiB0YW5ldW1hXCA7Civmt6Hpm6ogPiBhd2F5dWtpXCA7CivllZPov6ogPiBrZWl0ZWtpXCA7CivmjqXlj5cgPiBzZXRzdWp1XCA7CivmjKjmi7YgPiBhaXNhdHN1XCA7CivmjKvmipggPiB6YXNldHN1XCA7CivmjqXlj44gPiBzZXNzaHV1XCA7CivmiYvntrEgPiB0YWR6dW5hXCA7CivoobDlvLEgPiBzdWlqYWt1XCA7Civlm57lv4MgPiBrYWlzaGluXCA7Civlm73lr74gPiBrb2t1dGFpXCA7CivmvIHnjbIgPiBneW9rYWt1XCA7Civlm57lvqkgPiBrYWlmdWt1XCA7CivnrZTnlLMgPiB0b3VzaGluXCA7CivmiYnntbUgPiB0b2JpcmFlXCA7Civlm73lrp0gPiBrb2t1aG91XCA7CivmvIHnjJ8gPiBneW9yeW91XCA7Civlm73lrpogPiBrb2t1dGVpXCA7Civlm73lroggPiBrb2t1c2h1XCA7CivnrJHntI0gPiBzaG91bm91XCA7CivmipXnkIMgPiB0b3VreXV1XCA7Civlm5rlvbkgPiBzaHV1ZWtpXCA7CivllIfpn7MgPiBzaGluJydvblwgOwor5o235aCxID4gc2hvdWhvdVwgOwor5o6i5YudID4gdGFuc2hvdVwgOwor5oqV542EID4gdG91Z29rdVwgOwor6KGM5oiQID4gaWtpbmFyaVwgOwor5ruR55+zID4ga2Fzc2VraVwgOwor5riF6YGpID4gc2VpdGVraVwgOwor5rqA6IW5ID4gbWFucHVrdVwgOwor6by76aqoID4gYmlrb3RzdVwgOwor5Zyw5Y+jID4gamlndWNoaVwgOwor5omL566SID4gdGVib3VraVwgOwor5ryC54S2ID4gaHlvdXplblwgOwor5ZSQ6ZaAID4ga2FyYW1vblwgOwor5ra86aKoID4gcnlvdWZ1dVwgOwor5rue55WZID4gdGFpcnl1dVwgOwor5oyH5pGYID4gc2hpdGVraVwgOwor5ra16aSKID4ga2FuJyd5b3VcIDsKK+aKuea2iCA+IG1hc3Nob3VcIDsKK+ernOiEsyA+IHJ5dXVub3VcIDsKK+WbveWkpyA+IGtva3VkYWlcIDsKK+exs+S/lyA+IGJlaXpva3VcIDsKK+WbveWkliA+IGtva3VnYWlcIDsKK+aOmOWJiiA+IGt1c3Nha3VcIDsKK+ihk+W+jCA+IGp1dHN1Z29cIDsKK+WbveWjqyA+IGtva3VzaGlcIDsKK+ijj+WBtCA+IHVyYWdhd2FcIDsKK+a/geWjsCA+IGRhbWlnb2VcIDsKK+exs+S9nCA+IGJlaXNha3VcIDsKK+a/gOWkiSA+IGdla2loZW5cIDsKK+WUsemBkyA+IHNob3Vkb3VcIDsKK+WVj+iyrCA+IG1vbnNla2lcIDsKK+aMkeaIpiA+IGNob3VzZW5cIDsKK+WbveWigyA+IGtva2t5b3VcIDsKK+ihqOWxpCA+IGh5b3Vzb3VcIDsKK+epuuiwtyA+IGt1dWtva3VcIDsKK+aIpue4viA+IHNlbnNla2lcIDsKK+a/gOWilyA+IGdla2l6b3VcIDsKK+aHh+imqiA+IGtvbnNoaW5cIDsKK+err+e2sSA+IGhhZHp1bmFcIDsKK+a3semBoCA+IHNoaW4nJ2VuXCA7CivmuJPosLcgPiBrZWlrb2t1XCA7Civnr6Tlv5cgPiB0b2t1c2hpXCA7Civoo4/kvZwgPiB1cmFzYWt1XCA7CivllpzoibIgPiBraXNob2t1XCA7Civoo4LlgrcgPiByZXNzaG91XCA7Civom67opZ8gPiBiYW5rYXJhXCA7CivnsbPkuK0gPiBiZWljaHV1XCA7Civnq4vohbkgPiByaXBwdWt1XCA7CivnqI7poY0gPiB6ZWlnYWt1XCA7Civmi5vmnaUgPiBzaG91cmFpXCA7Civnq7/nq7kgPiBzYW9kYWtlXCA7CivmvKvmpb0gPiBtYW5nYWt1XCA7Civmt6vpgLggPiBpbicnaXRzdVwgOwor5ouY5p2fID4ga291c29rdVwgOwor56m66Kq/ID4ga3V1Y2hvdVwgOwor56qB6KeSID4gdG9ra2FrdVwgOwor6Jmr6aGeID4gY2h1dXJ1aVwgOwor5o265Y2wID4gbmF0c3VpblwgOwor6KGG5bq2ID4gc2h1dXNob1wgOwor56u556u/ID4gdGFrZXphb1wgOwor5ZWP6Ki6ID4gbW9uc2hpblwgOwor5ouT5pysID4gdGFrdWhvblwgOwor5ryC5rWqID4gaHlvdXJvdVwgOwor5ouh5pWjID4ga2FrdXNhblwgOwor6Ju56JmrID4geW91Y2h1dVwgOwor6Yuz6Yu8ID4gY2h1dWtvdVwgOwor56mN6LyJID4gc2VraXNhaVwgOwor5rW36bOlID4ga2FpY2hvdVwgOwor5Zu95ZaqID4ga29rdXNvdVwgOwor5ZWG6KuHID4gc2hvdWRhblwgOwor56m66KWyID4ga3V1c2h1dVwgOwor5oiQ57i+ID4gc2Vpc2VraVwgOwor566G5qOSID4gYmVyYWJvdVwgOwor5Zyo5L+XID4gemFpem9rdVwgOwor5oux5omLID4ga3lvdXNodVwgOwor5ZaE6ImvID4gemVucnlvdVwgOwor6KGS5a2mID4gZ2VuZ2FrdVwgOwor6Yuz6YeRID4gY2h1dWtpblwgOwor56m66KGMID4ga3V1Z3lvdVwgOwor5Zyw5Li7ID4gamludXNoaVwgOwor5Zyw5LitID4gY2hpY2h1dVwgOwor5oiQ57SEID4gc2VpeWFrdVwgOwor5ZuD5a2QID4gaGF5YXNoaVwgOwor56eA6bqXID4gc2h1dXJlaVwgOwor5r+r5L2cID4gcmFuc2FrdVwgOwor6KGX5ai8ID4gZ2Fpc2hvdVwgOwor5Zu95ZCNID4ga29rdW1laVwgOwor5Zu95Y+4ID4ga29rdXNoaVwgOwor5Zu95Y+3ID4ga29rdWdvdVwgOwor5Zu95Y+yID4ga29rdXNoaVwgOwor6Yyv6KeSID4gc2Fra2FrdVwgOwor5Zyo5LqsID4gemFpa3lvdVwgOwor6KGd5aSpID4gc2hvdXRlblwgOwor566H5pyIID4ga2FnZXRzdVwgOwor5ZyP5YaFID4ga2VuJyduYWlcIDsKK+mMr+immiA+IHNha2tha3VcIDsKK+aLjeaVsCA+IGhha3VzdXVcIDsKK+a8ouacnSA+IGthbmNob3VcIDsKK+euoeaOjCA+IGthbnNob3VcIDsKK+WcqOS4rSA+IHphaWNodXVcIDsKK+a9nOW/gyA+IHNlbnNoaW5cIDsKK+WbnuWbvSA+IGthaWtva3VcIDsKK+a9m+W/gyA+IHNlbnNoaW5cIDsKK+ihqOWcqCA+IGh5b3V6YWlcIDsKK+a7tOawtCA+IHRla2lzdWlcIDsKK+aJk+eOhyA+IGRhcml0c3VcIDsKK+mLs+mAoCA+IGNodXV6b3VcIDsKK+WbveWLoiA+IGtva3VzZWlcIDsKK+Wbm+WbvSA+IHNoaWtva3VcIDsKK+WbveWKtCA+IGtva3Vyb3VcIDsKK+a3seisnSA+IHNoaW5zaGFcIDsKK+aLneaJvyA+IGhhaXNob3VcIDsKK+a3seisgCA+IHNoaW5ib3VcIDsKK+WaruWwjiA+IGt5b3Vkb3VcIDsKK+a/gOWLlSA+IGdla2lkb3VcIDsKK+eri+exsyA+IHJ5dXViZWlcIDsKK+eti+azqCA+IGtpbmNodXVcIDsKK+a/gOWKsSA+IGdla2lyZWlcIDsKK+aKkeatoiA+IHlva3VzaGlcIDsKK+a8ouaXjyA+IGthbnpva3VcIDsKK+a6gOelqCA+IG1hbnB5b3VcIDsKK+evgOW6piA+IHNldHN1ZG9cIDsKK+emvemzpSA+IGtpbmNob3VcIDsKK+aItOeZvSA+IHRhaWhha3VcIDsKK+aLmeaKgCA+IHNldHN1Z2lcIDsKK+a8gealrSA+IGd5b2d5b3VcIDsKK+a8lOabsiA+IGVua3lva3VcIDsKK+a2sumHjyA+IGVraXJ5b3VcIDsKK+ibh+igjSA+IGRha2F0c3VcIDsKK+WbveWGhSA+IGtva3VuYWlcIDsKK+m8jumdqSA+IHRlaWtha3VcIDsKK+iblOiZqyA+IGthaWNodXVcIDsKK+WbveWFuCA+IGtva3V0ZW5cIDsKK+idi+efsyA+IHJvdXNla2lcIDsKK+ernOelniA+IHJ5dXVqaW5cIDsKK+a2iOmYsiA+IHNob3Vib3VcIDsKK+a1gem6lyA+IHJ5dXVyZWlcIDsKK+err+eahCA+IHRhbnRla2lcIDsKK+a4qeiJsiA+IG9uc2hva3VcIDsKK+ibh+idjiA+IGRha2F0c3VcIDsKK+WbveWCtSA+IGtva3VzYWlcIDsKK+a6lueUqCA+IGp1bicneW91XCA7CivnqbTolLUgPiBhbmFndXJhXCA7Civmi43miYsgPiBoYWt1c2h1XCA7CivmtojplpEgPiBzaG91a2FuXCA7CivmiYvnh60gPiB0ZXNob2t1XCA7CivllqrnpZ4gPiBzb3VzaGluXCA7Civlm5vlkaggPiBzaGlzaHV1XCA7Civlm57lj44gPiBrYWlzaHV1XCA7CivnrrHluKsgPiBoYWtvc2hpXCA7Civooajlj7cgPiBoeW91Z291XCA7Civpu4TpursgPiB0c3VuYXNvXCA7CivomavphbggPiBtdXNoaXp1XCA7CivmuoDnm64gPiBtYW5tb2t1XCA7Civmi53lvqkgPiBoYWlmdWt1XCA7CivpkJjmpbwgPiBzaG91cm91XCA7Civnq4vnp4sgPiByaXNzaHV1XCA7Civnp4vpoqggPiBzaHV1ZnV1XCA7CivmirzmjbogPiBvdW5hdHN1XCA7Civlm73kvb8gPiBrb2t1c2hpXCA7Civmi5vlvoUgPiBzaG91dGFpXCA7CivmtabpoqggPiB1cmFrYXplXCA7CivnqbrojLYgPiBrYXJhY2hhXCA7Civlm73kvZMgPiBrb2t1dGFpXCA7Civnq5znnLwgPiByeXV1Z2FuXCA7CivmtbfpmbggPiBrYWlyaWt1XCA7CivnqIDph4ggPiBraXNoYWt1XCA7CivnqI7ovrwgPiB6ZWlrb21pXCA7Civpu5Lpr5sgPiBrdXJvZGFpXCA7CivnqbroibIgPiBzb3JhaXJvXCA7CivmjJnlm70gPiBreW9rb2t1XCA7Civlm73kuLsgPiBrb2t1c2h1XCA7CivoobDlhYYgPiBzdWljaG91XCA7Civlm73kuK0gPiBrdW5panV1XCA7Civnp4vpnJwgPiBzaHV1c291XCA7CivllonnrJsgPiBub2RvYnVlXCA7Civnp4vpnJYgPiBzaHV1cmluXCA7Civom67nv5IgPiBiYW5zaHV1XCA7Civpu4Tps6UgPiBrb3VjaG91XCA7CivooYzllZMgPiBneW91a2VpXCA7Civnp4vpm6ggPiBha2lzYW1lXCA7CivnqbrohbkgPiBrdXVmdWt1XCA7Civmu4vmrpYgPiBqaXNob2t1XCA7CivooZ3li5UgPiBzaG91ZG91XCA7CivmjL/lhaUgPiBzb3VueXV1XCA7Civlkozpo58gPiB3YXNob2t1XCA7Civmipzmk6IgPiBiYXR0ZWtpXCA7Civmuq/mupAgPiBzYWt1Z2VuXCA7Civmipvmk7IgPiBob3V0ZWtpXCA7CivllYboiLkgPiBzaG91c2VuXCA7CivpjbXnqbQgPiBrYWdpYW5hXCA7CivmjK/li5UgPiBzaGluZG91XCA7Civon7vlt7sgPiBhcmltYWtpXCA7CivmibbmpI0gPiBmdXNob2t1XCA7CivmioTmnKwgPiBzaG91aG9uXCA7CivmjIflnKcgPiBzaGlhdHN1XCA7CivmipXmk7IgPiB0b3V0ZWtpXCA7CivmjIflm7MgPiBzYXNoaXp1XCA7CivmurrmsLQgPiBkZWtpc3VpXCA7Civnr4nlnLAgPiB0c3VraWppXCA7Civpu5LpoqggPiBrb2t1ZnV1XCA7CivonYvnh60gPiByb3Vzb2t1XCA7CivmurrmrbsgPiBkZWtpc2hpXCA7Civmi5nlroUgPiBzZXR0YWt1XCA7CivmiYvmsqIgPiBzaHV0YWt1XCA7Civmg6PpoJggPiBzb3VyeW91XCA7CivnpoHps6UgPiBraW5jaG91XCA7CivmipHmj5ogPiB5b2t1eW91XCA7Civlm5rkurogPiBzaHV1amluXCA7CivmuIXogbQgPiBzZWljaG91XCA7CivnrIrms5UgPiB6YXJ1aG91XCA7Civmh4fnr6QgPiBrb250b2t1XCA7Civnq7bmvJUgPiBreW91c291XCA7Civmt7Poia8gPiBqdW5yeW91XCA7CivmuJvntaYgPiBnZW5reXV1XCA7Civpj5bmrrogPiBvdXNhdHN1XCA7CivllJDolq8gPiBrYXJhaW1vXCA7CivnqI7oqr8gPiB6ZWljaG91XCA7CivnrJHmraIgPiBzaG91c2hpXCA7CivomK3pi7MgPiByYW5jaHV1XCA7Civmi6HlpKcgPiBrYWt1ZGFpXCA7CivpioXpkLggPiBkb3V0YWt1XCA7Civmi43lrZAgPiBoeW91c2hpXCA7CivpioXpj6EgPiBkb3VreW91XCA7CivmtbjpgI8gPiBzaGludG91XCA7CivnrZbmiKYgPiBzYWt1c2VuXCA7CivmiJDnhp8gPiBzZWlqdWt1XCA7CivmupzmsaAgPiB0YW1laWtlXCA7Civmtabph4wgPiB1cmF6YXRvXCA7Civmua/nhqggPiB5dW5vc2hpXCA7CivllqvnhZkgPiBraXRzdWVuXCA7CivlmInml6UgPiBrYWppdHN1XCA7CivmuoDmva4gPiBtYW5jaG91XCA7Civnp7Dos5sgPiBzaG91c2FuXCA7CivlmoflmocgPiBrYWtrYWt1XCA7CivllYbntYwgPiBzaG91a2VpXCA7Civmi5PlpKcgPiB0YWt1ZGFpXCA7CivmupDmtYEgPiBnZW5yeXV1XCA7CivnqY7ohLEgPiBlaWRhdHN1XCA7CivnqoHnq68gPiB0b3BwYW5hXCA7CivooYzkvZMgPiBneW91dGFpXCA7CivmvKLlraYgPiBrYW5nYWt1XCA7Civpu4Tpm4AgPiBrb3VqYWt1XCA7CivlloDnl7AgPiBrYWt1dGFuXCA7CivpvLvooYAgPiBoYW5hZGppXCA7CivpjK/ntpwgPiBzYWt1c291XCA7Civmt7HogJUgPiBzaGlua291XCA7CivooZPkuK0gPiBqdXRjaHV1XCA7CivmtL7plqUgPiBoYWJhdHN1XCA7CivlloTnlKggPiB6ZW4nJ3lvdVwgOwor6Juf56ucID4ga291cnlvdVwgOwor5ryG5belID4gc2hpa2tvdVwgOwor5oay56ugID4ga2Vuc2hvdVwgOwor6bq76ZuAID4gbWF6ZWphblwgOwor5oim5rOBID4gc2Vua3lvdVwgOwor5ryB5birID4gcnlvdXNoaVwgOwor56+G5Yi7ID4gdGVua29rdVwgOwor6KGG5Lq6ID4gc2h1dWppblwgOwor5omA5qWtID4gc2hvZ3lvdVwgOwor56m256ufID4ga3Vra3lvdVwgOwor5Ziy5byEID4gY2hvdXJvdVwgOwor5oiv5q2MID4gemFyZXV0YVwgOwor6KCi5YuVID4gc2h1bmRvdVwgOwor5ZSQ6Ie8ID4ga2FyYXVzdVwgOwor5rqA5rSyID4gbWFuc2h1dVwgOwor5rm+5rWBID4gd2Fucnl1dVwgOwor5ZaE546JID4gemVuZGFtYVwgOwor56eB6YCaID4gc2hpdHN1dVwgOwor56iu6IuXID4gc2h1YnlvdVwgOwor5rW36LOKID4ga2Fpem9rdVwgOwor56iu6IqLID4gdGFuZWltb1wgOwor5rmu5ruFID4gaW5tZXRzdVwgOwor5oim5q20ID4gc2VucmVraVwgOwor5oyH5YCkID4gc2FzaGluZVwgOwor5rW36LG5ID4ga2FpaHlvdVwgOwor5rW36LGhID4gc2VpdWNoaVwgOwor56qu54q2ID4ga3l1dWpvdVwgOwor5oq85aOyID4gb3NoaXVyaVwgOwor5ZOB6KmVID4gaGlucHlvdVwgOwor5oOo6YW3ID4gemFua29rdVwgOwor5oKq6aOfID4gYWt1amlraVwgOwor6Juu55qEID4gYmFudGVraVwgOwor5rex57SFID4gc2hpbmtvdVwgOwor56We6auEID4gc2hpbnp1aVwgOwor6JiH6YmEID4gc290ZXRzdVwgOwor562J5by1ID4gdG91Y2hvdVwgOwor6J+E5bGFID4gY2hpa2t5b1wgOwor5oSa6KqsID4gZ3VzZXRzdVwgOwor5oe45r+BID4ga2VuZGFrdVwgOwor5ZWG56S+ID4gc2hvdXNoYVwgOwor6YqD6LqrID4ganV1c2hpblwgOwor5rqd5p2/ID4gZG9idWl0YVwgOwor5riF56eLID4gc2Vpc2h1dVwgOwor5oSf6KaaID4ga2Fua2FrdVwgOwor5riF56aPID4gc2VpZnVrdVwgOwor5rib55uKID4gZ2VuJydla2lcIDsKK+a4heelpSA+IHNlaXNob3VcIDsKK+WaouS4rSA+IG5vdWNodXVcIDsKK+elnumljCA+IHNoaW5zZW5cIDsKK+m+jeelniA+IHJ5dXVqaW5cIDsKK+enmOiooyA+IGhpa2V0c3VcIDsKK+epuueZvSA+IGt1dWhha3VcIDsKK+a9nOS8jyA+IHNlbnB1a3VcIDsKK+WYhuaBryA+IHRhbnNva3VcIDsKK+iZueiJsiA+IG5pamlpcm9cIDsKK+etluWumiA+IHNha3V0ZWlcIDsKK+a1gemAoyA+IHJ5dXVyZW5cIDsKK+a1ruiqrCA+IGZ1c2V0c3VcIDsKK+epjeeulyA+IHNla2lzYW5cIDsKK+aCqumYuyA+IHRzdXdhcmlcIDsKK+aGtueXhSA+IG9rdWJ5b3VcIDsKK+aFo+e/kiA+IGthbnNodXVcIDsKK+a3seeqkyA+IHNoaW5zb3VcIDsKK+aIr+absiA+IGdpa3lva3VcIDsKK+aJi+aOjCA+IHNodXNob3VcIDsKK+aCo+mboyA+IGthbicnbmFuXCA7Civmi6HlhYUgPiBrYWt1anV1XCA7CivnpZ7pn7sgPiBzaGluJydpblwgOwor56mA57KJID4ga29rdWZ1blwgOwor5ZOo6IiOID4gc2hvdXNoYVwgOwor566h5YaFID4ga2FuJyduYWlcIDsKK+mRv+S6lSA+IHNha3VzZWlcIDsKK+WUkOezuCA+IGthcmFpdG9cIDsKK+mJhOmOmiA+IHRldHRzdWlcIDsKK+epuueTtiA+IGthcmFiaW5cIDsKK+a6gOagqiA+IG1hbmthYnVcIDsKK+mLvOe0oiA+IGtvdXNha3VcIDsKK+aLjeWLlSA+IGhha3Vkb3VcIDsKK+aJi+aKhCA+IHNodXNob3VcIDsKK+enmOihkyA+IGhpanV0c3VcIDsKK+a7keW4rSA+IGthc3Nla2lcIDsKK+elnumciiA+IHNoaW5yZWlcIDsKK+aIkOalrSA+IHNlaWd5b3VcIDsKK+ibi+eZvSA+IHRhbnBha3VcIDsKK+WRqOmBiiA+IHNodXV5dXVcIDsKK+aCoOmVtyA+IHl1dWNob3VcIDsKK+WVhueUqCA+IHNob3V5b3VcIDsKK+a7heW6piA+IG1ldHN1ZG9cIDsKK+a6gOabtCA+IG1hbnphcmFcIDsKK+etluWjqyA+IHNha3VzaGlcIDsKK+WRqOi+uiA+IHNodXVoZW5cIDsKK+aIkOahgiA+IG5hcmlrZWlcIDsKK+a1t+ibhyA+IHVtaWhlYmlcIDsKK+a0u+i3ryA+IGthdHN1cm9cIDsKK+m7kuiygiA+IGt1cm90ZW5cIDsKK+mQmOWjsCA+IHNob3VzZWlcIDsKK+aLmeS9nCA+IHNlc3Nha3VcIDsKK+mKreiRtSA+IHplbmlhb2lcIDsKK+a8huWWsCA+IHNoaWtrdWlcIDsKK+azoumfsyA+IG5hbWlvdG9cIDsKK+eonOe3miA+IHJ5b3VzZW5cIDsKK+eqruawkSA+IGt5dXVtaW5cIDsKK+aJjeW+syA+IHNhaXRva3VcIDsKK+eri+ahiCA+IHJpdHN1YW5cIDsKK+m7meiqjSA+IG1va3VuaW5cIDsKK+aFtuemjyA+IGtlaWZ1a3VcIDsKK+WRteiyrCA+IGthc2hha3VcIDsKK+epuueIhiA+IGt1dWJha3VcIDsKK+WQg+mpmiA+IGJpa2t1cmlcIDsKK+idv+W4syA+IGhhaWNob3VcIDsKK+eqruatuyA+IGt5dXVzaGlcIDsKK+WQhOmnhSA+IGtha3Vla2lcIDsKK+WVhueKtiA+IHNob3Vqb3VcIDsKK+eni+ialSA+IHNodXVzYW5cIDsKK+aKvOWFpSA+IG9zaGlpcmVcIDsKK+a3t+eUqCA+IGtvbicneW91XCA7CivmuKbmva4gPiB1enVzaGlvXCA7Civpu5noppYgPiBtb2t1c2hpXCA7CivomK3omasgPiByYW5jaHV1XCA7Civph6PprZogPiBjaG91Z3lvXCA7CivmiJHmlrkgPiB3YWdhaG91XCA7CivlkIzpoY0gPiBkb3VnYWt1XCA7CivnqbTnhoogPiBhbmFndW1hXCA7CivmtYHoqqwgPiBydXNldHN1XCA7CivmiYDlvpcgPiBzaG90b2t1XCA7Civmupzmga8gPiB0YW1laWtpXCA7Civmt7HnlJogPiBzaGluamluXCA7Civmga3poIYgPiBreW91anVuXCA7CivmvI/liLsgPiByb3Vrb2t1XCA7CivolqnplbcgPiBzYXRjaG91XCA7CivmtYHoqIAgPiByeXV1Z2VuXCA7Civmi4Xku7sgPiB0YW4nJ25pblwgOwor5oSf6IiIID4ga2Fua3lvdVwgOwor5reh55m9ID4gdGFucGFrdVwgOwor56uL5pilID4gcmlzc2h1blwgOwor56qv5qWtID4geW91Z3lvdVwgOwor5oqc5Y67ID4gYmFra3lvdVwgOwor5oqX5ZGKID4ga291a29rdVwgOwor5rip5rW0ID4gb24nJ3lva3VcIDsKK+emgei2syA+IGtpbnNva3VcIDsKK+a6luaApSA+IGp1bmt5dXVcIDsKK+WQg+mfsyA+IGtpdHN1b25cIDsKK+mJhOi3ryA+IHRldHN1cm9cIDsKK+ekvumVtyA+IHNoYWNob3VcIDsKK+epuua8oCA+IGt1dWJha3VcIDsKK+WQhOmdoiA+IGtha3VtZW5cIDsKK+m7kuihgCA+IGt1cm9jaGlcIDsKK+a2iOiAlyA+IHNob3Vtb3VcIDsKK+ero+aIkCA+IHNodW5zZWlcIDsKK+a0l+i2syA+IHNlbnNva3VcIDsKK+m7kuifuyA+IGt1cm9hcmlcIDsKK+aGtua4rCA+IG9rdXNva3VcIDsKK+a1geihjCA+IHJ5dXVrb3VcIDsKK+eqkuatuyA+IGNoaXNzaGlcIDsKK+mHkemrmCA+IGtpbmRha2FcIDsKK+etuuS9kyA+IGt5b3V0YWlcIDsKK+WQhOmajiA+IGtha3VrYWlcIDsKK+WQq+mHjyA+IGdhbnJ5b3VcIDsKK+eni+iNiSA+IGFraWt1c2FcIDsKK+aJjeWtpiA+IHNhaWdha3VcIDsKK+elnumBkyA+IHNoaW50b3VcIDsKK+WQvui8qSA+IHdhZ2FoYWlcIDsKK+aGpOa/gCA+IGZ1bmdla2lcIDsKK+aDheiqvyA+IGpvdWNob3VcIDsKK+aEieiJsiA+IHl1c2hva3VcIDsKK+eoruebriA+IHNodW1va3VcIDsKK+a4hea/gSA+IHNlaWRha3VcIDsKK+etluWLlSA+IHNha3Vkb3VcIDsKK+WRqOimpyA+IHNodXVyYW5cIDsKK+a4hea+hCA+IHNlaWNob3VcIDsKK+aJgOWxniA+IHNob3pva3VcIDsKK+etluWKsSA+IHNha3VyZWlcIDsKK+aIpuW9uSA+IHNlbicnZWtpXCA7CivoloTpm7IgPiB1c3VndW1vXCA7CivoloTpm6ogPiB1c3V5dWtpXCA7CivnpZ3ovp4gPiBzaHVrdWppXCA7CivmipHliLYgPiB5b2t1c2VpXCA7CivmgYvpoqggPiBrb2lrYXplXCA7CivllYbmuK8gPiBzaG91a291XCA7CivnpZ7ovL8gPiBtaWtvc2hpXCA7CivolYHpursgPiBpcmFrdXNhXCA7CivmuJPmtYEgPiBrZWlyeXV1XCA7Civmub/mgKcgPiBzaGlzc2VpXCA7Civnq6Xlv4MgPiBkb3VzaGluXCA7CivmiJLmhY4gPiBrYWlzaGluXCA7CivmipXlhaUgPiB0b3VueXV1XCA7Civpub/ov70gPiBzaGlrYW9pXCA7CivnpZbov7AgPiBzb2p1dHN1XCA7Civmt4vnl4UgPiByaW5ieW91XCA7CivmiIrmiIwgPiBib2p1dHN1XCA7CivolqzphZIgPiB5YWt1c2h1XCA7CivlkarooZMgPiBqdWp1dHN1XCA7Civlj6TpoZQgPiBmdXJ1Z2FvXCA7CivmtYXoloQgPiBzZW5wYWt1XCA7CivmiYvlprsgPiB0ZWR6dW1hXCA7Civmt7fmv4EgPiBrb25kYWt1XCA7Civph5HpoY0gPiBraW5nYWt1XCA7CivpiaTomasgPiBrb3VjaHV1XCA7CivmtaPohbggPiBrYW5jaG91XCA7CivmuIXmtrwgPiBzZWlyeW91XCA7Civmg6jokL0gPiBzYW5yYWt1XCA7CivllYbms5UgPiBzaG91aG91XCA7CivmhaPnlKggPiBrYW4nJ3lvdVwgOwor6YqF6IetID4gZG91c2h1dVwgOwor56yR5aOwID4gc2hvdXNlaVwgOwor6JiK6JOEID4gdW5jaGlrdVwgOwor6YqA6ImyID4gZ2luJydpcm9cIDsKK+m6puinkiA+IGJha2tha3VcIDsKK+aIkuW/gyA+IGthaXNoaW5cIDsKK+aKleS/oSA+IHRvdXNoaW5cIDsKK+a4hea1gSA+IHNlaXJ5dXVcIDsKK+engeiFuSA+IHNoaWZ1a3VcIDsKK+a6gOW5hSA+IG1hbnB1a3VcIDsKK+WPsOmWoyA+IGRhaWtha3VcIDsKK+a6gOW4rSA+IG1hbnNla2lcIDsKK+aJv+WJjSA+IHNob3V6ZW5cIDsKK+WWrOW/lyA+IGt5b3VzaGlcIDsKK+a3sea9rSA+IHNoaW50YW5cIDsKK+WPjemngSA+IGhhbnBha3VcIDsKK+ero+W3pSA+IHNodW5rb3VcIDsKK+a6gOW3niA+IG1hbnNodXVcIDsKK+WWquW/gyA+IHNvdXNoaW5cIDsKK+WQjOmHjyA+IGRvdXJ5b3VcIDsKK+elneizgCA+IHNodWt1Z2FcIDsKK+aCquiplSA+IGFrdWh5b3VcIDsKK+WThOeskSA+IGtvdXNob3VcIDsKK+aCquiosyA+IGFrdXlha3VcIDsKK+aApemosCA+IGt5dXV0b3VcIDsKK+iVqumbkSA+IGJ1emF0c3VcIDsKK+m7kuiMtiA+IGt1cm9jaGFcIDsKK+eojuebriA+IHplaW1va3VcIDsKK+aKmOS4rSA+IHNldGNodXVcIDsKK+enmOe1kCA+IGhpa2V0c3VcIDsKK+WQjOmDtyA+IGRvdWt5b3VcIDsKK+aHsuaIkiA+IGNob3VrYWlcIDsKK+ekuumBlCA+IGppdGF0c3VcIDsKK+mHjemZvSA+IGNob3V5b3VcIDsKK+a3sea3tSA+IHNoaW4nJ2VuXCA7Civmh5Dml6cgPiBrYWlreXV1XCA7CivnrZDkvZMgPiBreW91dGFpXCA7CivomY7nqbQgPiBrb2tldHN1XCA7Civllpjmga8gPiB6ZW5zb2t1XCA7Civlj43pn78gPiBoYW5reW91XCA7Civpjq7lrpogPiBjaGludGVpXCA7Civmt7HmtbcgPiBzaGlua2FpXCA7CivllYbmqKkgPiBzaG91a2VuXCA7CivnrZLkupUgPiB0c3V0c3VpXCA7Civmt7HmtYUgPiBzaGluc2VuXCA7Civlk7LnkIYgPiB0ZXRzdXJpXCA7CivpiI3otrMgPiBkb25zb2t1XCA7CivnqbrmobYgPiBrYXJhb2tlXCA7CivoloTpiI0gPiB1c3Vub3JvXCA7Civmh7LmgqogPiBjaG91YWt1XCA7CivnqbrmoKogPiBrdXVrYWJ1XCA7Civom67ml48gPiBiYW56b2t1XCA7CivolYnpoqggPiBzaG91ZnV1XCA7CivnrJvlkLkgPiBmdWVmdWtpXCA7Civms5XouqsgPiBob3NzaGluXCA7Civnq5zlrq4gPiByeXV1Z3V1XCA7CivnpZ3oqIAgPiBzaHV1Z2VuXCA7Civpj6Hlj7AgPiBreW91ZGFpXCA7CivmgaXovrEgPiBjaGlqb2t1XCA7CivmsojpnZkgPiBjaGluc2VpXCA7Civmh7LlvbkgPiBjaG91ZWtpXCA7CivlloTmgqogPiB6ZW4nJ2FrdVwgOwor5rue5LqsID4gdGFpa3lvdVwgOwor6YeN6Y6uID4ganV1Y2hpblwgOwor5ZCN6LehID4gbWVpc2VraVwgOwor5oCl6ZujID4ga3l1dW5hblwgOwor6JaE6YGHID4gaGFrdWd1dVwgOwor5Y+C6ZuGID4gc2Fuc2h1dVwgOwor5reh5rOKID4gdGFucGFrdVwgOwor5omL5Y+jID4gdGVndWNoaVwgOwor5rKI6ZmNID4gY2hpbmtvdVwgOwor5rW456S8ID4gc2hpbnJlaVwgOwor5ZGo6IiqID4gc2h1dWtvdVwgOwor5ZaE5b+DID4gemVuc2hpblwgOwor5ZaE5b6zID4gemVudG9rdVwgOwor5omT5YqbID4gZGFyeW9rdVwgOwor5rer5qyyID4gaW4nJ3lva3VcIDsKK+mKgOe0mSA+IGdpbmdhbWlcIDsKK+mItOiYrSA+IHN1enVyYW5cIDsKK+aIpuWfnyA+IHNlbicnaWtpXCA7CivlkJ/oqqYgPiBnaW5zaG91XCA7CivnqbbmmI4gPiBreXV1bWVpXCA7Civlk4Hnm64gPiBoaW5tb2t1XCA7CivphpzpoZ4gPiBzaHV1cnVpXCA7CivpvbLmra8gPiBtdXNoaWJhXCA7Civlj6zpgoQgPiBzaG91a2FuXCA7Civms6jop6MgPiBjaHV1a2FpXCA7Civlj6/pgIYgPiBrYWd5YWt1XCA7CivmhoLmrJ0gPiB5dXV1dHN1XCA7CivpioXnrpQgPiBkb3VoYWt1XCA7Civms6joppYgPiBjaHV1c2hpXCA7Civph43ph48gPiBqdXVyeW91XCA7CivmiKblm70gPiBzZW5nb2t1XCA7CivmiYDlj44gPiBzaG9zaHV1XCA7CivmhJvnnYAgPiBhaWNoYWt1XCA7CivpiI3op5IgPiBkb25rYWt1XCA7CivpuqbojLYgPiBtdWdpY2hhXCA7Civpu5Lnt5ogPiBrb2t1c2VuXCA7CivmhJrnm7QgPiBndWNob2t1XCA7CivpioDnrpQgPiBnaW5wYWt1XCA7Civpj6Hlg48gPiBreW91em91XCA7Civol6ToibIgPiBmdWppaXJvXCA7Civlj7LouZ8gPiBzaGlzZWtpXCA7CivmiLjlj6MgPiB0b2d1Y2hpXCA7Civnqbrmj5ogPiBrYXJhYWdlXCA7CivpioDnrJsgPiBnaW50ZWtpXCA7Civmub/lnLAgPiBzaGl0Y2hpXCA7Civmtbfnm7ggPiBrYWlzaG91XCA7CivnrKzkuIAgPiBkYWlpY2hpXCA7CivmuIXmlrAgPiBzZWlzaGluXCA7Civmga3orJkgPiBreW91a2VuXCA7Civph47pgZMgPiBub21pY2hpXCA7CivllJDmrYwgPiBrYXJhdXRhXCA7CivlkIzoqr8gPiBkb3VjaG91XCA7Civlj7Lot6EgPiBzaGlzZWtpXCA7Civpt7npmrwgPiB5b3VzaHVuXCA7Civnq7blkIggPiBreW91Z291XCA7CivlkI3oqLMgPiBtZWl5YWt1XCA7Civlj47ph5EgPiBzaHV1a2luXCA7CivlkIjoqr8gPiBnb3VjaG91XCA7Civlj6PovKogPiBrdWNoaXdhXCA7Civmt7PmnLQgPiBqdW5ib2t1XCA7Civpu4Tnt5EgPiBvdXJ5b2t1XCA7Civlv6DprYIgPiBjaHV1a29uXCA7CivlkIToq5YgPiBrYWt1cm9uXCA7CivmtrjmuIcgPiBrb2thdHN1XCA7CivlkIjoqZUgPiBnYXBweW91XCA7Civlj5nov7AgPiBqb2p1dHN1XCA7Civmt7Hmm7QgPiBzaGlua291XCA7CivmtJfohLMgPiBzZW4nJ25vdVwgOwor5oi45YilID4ga29iZXRzdVwgOwor56We6JGsID4gc2hpbnNvdVwgOwor56uL5aC0ID4gdGFjaGliYVwgOwor5ZSQ5qeYID4ga2FyYXlvdVwgOwor6bq757iEID4gYXNhbmF3YVwgOwor6ba66bSSID4gc2VraXJlaVwgOwor5oKq6IetID4gYWt1c2h1dVwgOwor56mN5pyoID4gdHN1bWlraVwgOwor5Y+k6LehID4gZnVydWF0b1wgOwor5rqW5YmHID4ganVuc29rdVwgOwor5oim5Y+LID4gc2VuJyd5dXVcIDsKK+a1tOeUqCA+IHlva3V5b3VcIDsKK+WQkOihgCA+IHRva2V0c3VcIDsKK+mIjuiZqyA+IGtvdWNodXVcIDsKK+iWhOisnSA+IGhha3VzaGFcIDsKK+mOruWPsCA+IGNoaW5kYWlcIDsKK+ayiOmFlCA+IGNoaW5zdWlcIDsKK+WVhuaJjSA+IHNob3VzYWlcIDsKK+m7meeltyA+IG1va3V0b3VcIDsKK+mHkei1pCA+IGtpbicnYWthXCA7CivmiYDkv6EgPiBzaG9zaGluXCA7CivllYbmiKYgPiBzaG91c2VuXCA7Civnq4vlm70gPiByaWtrb2t1XCA7Civpu5nnpLwgPiBtb2t1cmVpXCA7Civpu5nnpLogPiBtb2t1c2hpXCA7CivompXmpa0gPiBzYW5neW91XCA7CivmiKbli50gPiBzZW5zaG91XCA7Civlj5vot6EgPiBoYW5zZWtpXCA7CivmgJ3ph48gPiBzaGlyeW91XCA7CivmiYvkuK0gPiBzaHVjaHV1XCA7Civmtojnh4ggPiBzaG91dG91XCA7CivnpZ7oi5EgPiBzaGluJydlblwgOwor5omL5LiLID4gdGVzaGl0YVwgOwor5Y+O6LyJID4gc2h1dXNhaVwgOwor5oCl6YG9ID4ga3l1dWt5b1wgOwor56eB55qEID4gc2hpdGVraVwgOwor5rqA5Y2TID4gbWFudGFrdVwgOwor5oCl6YCgID4ga3l1dXpvdVwgOwor5oCl6YCdID4ga3l1dXNlaVwgOwor5rim5be7ID4gdXp1bWFraVwgOwor5rW354yrID4gdW1pbmVrb1wgOwor5oSa54mpID4gZ3VidXRzdVwgOwor6YeN6LKsID4ganV1c2VraVwgOwor6by75rGXID4gaGFuYWFzZVwgOwor5Y+N6LqrID4gaGFuc2hpblwgOwor5oCl6YCBID4ga3l1dXNvdVwgOwor5oiS5ZGKID4ga2Fpa29rdVwgOwor5ZaE5aWzID4gemVuJydueW9cIDsKK+elnuiIiCA+IG1pa29zaGlcIDsKK+aCque/kiA+IGFrdXNodXVcIDsKK+WPrOiriyA+IHNob3VzZWlcIDsKK+mJm+ethiA+IGVucGl0c3VcIDsKK+WPm+iziiA+IGhhbnpva3VcIDsKK+aIkuWQjSA+IGthaW15b3VcIDsKK+WOs+mFtyA+IGdlbmtva3VcIDsKK+ero+WKnyA+IHNodW5rb3VcIDsKK+WUkOacnSA+IHRvdWNob3VcIDsKK+a2iOeBryA+IHNob3V0b3VcIDsKK+W/g+mtgiA+IHNoaW5rb25cIDsKK+WOhOmboyA+IHlha3VuYW5cIDsKK+aIv+S4rSA+IGJvdWNodXVcIDsKK+WPjei3syA+IGhhbmNob3VcIDsKK+a1t+eJmyA+IGthaWd5dXVcIDsKK+mJseefsyA+IGtvdXNla2lcIDsKK+iWrOiOoiA+IHlha2t5b3VcIDsKK+m8u+atjCA+IGhhbmF1dGFcIDsKK+aGkeaLoCA+IGh5b3VreW9cIDsKK+mJhOe0oiA+IHRlc3Nha3VcIDsKK+W/g+mrhCA+IHNoaW56dWlcIDsKK+aApei7oiA+IGt5dXV0ZW5cIDsKK+WPjei2iiA+IGhhbmV0c3VcIDsKK+WQueiBtCA+IGZ1aWNob3VcIDsKK+a5r+WPoyA+IHl1Z3VjaGlcIDsKK+aIpuWCtyA+IHNlbnNob3VcIDsKK+WPpOiqrCA+IGtvc2V0c3VcIDsKK+awtOmjtCA+IG1penVhbWVcIDsKK+WQjeiWrCA+IG1laXlha3VcIDsKK+eov+aWmSA+IGtvdXJ5b3VcIDsKK+WNs+mhjCA+IHNva3VkYWlcIDsKK+W/oOmciiA+IGNodXVyZWlcIDsKK+WPo+iqrCA+IGt1emV0c3VcIDsKK+WPo+iqpiA+IGtvdXNob3VcIDsKK+iWrOiNiSA+IHlha3Vzb3VcIDsKK+eoruadvyA+IHRhbmVpdGFcIDsKK+iZq+awlyA+IG11c2hpa2VcIDsKK+epuuW4rSA+IGt1dXNla2lcIDsKK+a4rOWumiA+IHNva3V0ZWlcIDsKK+a1geeggiA+IHJ5dXVzaGFcIDsKK+a5vuWGhSA+IHdhbicnbmFpXCA7CivmhJXnhLYgPiBnYWt1emVuXCA7CivnqK7mnKwgPiB0YW5laG9uXCA7CivnpZ7ogZYgPiBzaGluc2VpXCA7Civlj47os4QgPiBzaHV1d2FpXCA7Civlj43os4ogPiBoYW56b2t1XCA7CivmhJ/mv4AgPiBrYW5nZWtpXCA7CivptrTpppYgPiBrYWt1c2h1XCA7Civomavmra8gPiBtdXNoaWJhXCA7CivlkITol6kgPiBrYWt1aGFuXCA7CivmtKrnqY0gPiBrb3VzZWtpXCA7Civnq7bkuokgPiBreW91c291XCA7Civlj6Pop5IgPiBrb3VrYWt1XCA7Civnqq7lnLAgPiBreXV1Y2hpXCA7CivllYblupcgPiBzaG91dGVuXCA7CivmsLfpnaIgPiBoeW91bWVuXCA7Civph43oqLMgPiBqdXV5YWt1XCA7CivpiI3oibIgPiBuaWJpaXJvXCA7CivljYPps6UgPiBjaGlkb3JpXCA7Civlj5noqqwgPiBqb3NldHN1XCA7Civlv5fpm4YgPiBzaGlzaHV1XCA7CivnqqrlnLAgPiBrdWJvY2hpXCA7CivmhpTmgrQgPiBzaG91c3VpXCA7Civmt7Hmha4gPiBzaGlucnlvXCA7Civnpo/npYkgPiBmdWt1c2hpXCA7Civnpo7npaUgPiB0ZWlzaG91XCA7CivmsJfpqqggPiBraWtvdHN1XCA7CivnqK7ml48gPiBzaHV6b2t1XCA7Civph4zopqogPiBzYXRvb3lhXCA7CivllYblt6UgPiBzaG91a291XCA7CivmuJvlsJEgPiBnZW5zaG91XCA7Civpu5Lnl6MgPiBrdXJvYXphXCA7CivphovphbggPiBzYWt1c2FuXCA7CivpuqbnrJsgPiBtdWdpYnVlXCA7CivlkJvoh6MgPiBrdW5zaGluXCA7CivmtJ7nqbQgPiBob3JhYW5hXCA7Civmh7jlkIogPiBrZW5jaG91XCA7CivpioPnjJ8gPiBqdXVyeW91XCA7Civlv4PpoZggPiBzaGluZ2FuXCA7Civmt6vmhb4gPiBpbicneW9rdVwgOwor5rW45r2kID4gc2hpbmp1blwgOwor5rqA5L2cID4gbWFuc2FrdVwgOwor5Y+k6KGAID4gZnVydWNoaVwgOwor5oaC5oiaID4geXV1c2VraVwgOwor5ZCr576eID4gZ2Fuc2h1dVwgOwor56m65bCGID4ga3V1c2hvdVwgOwor5b+D6aCtID4gc2hpbnRvdVwgOwor5ZSQ5o+aID4ga2FyYWFnZVwgOwor5oim5LitID4gc2VuY2h1dVwgOwor5rC06Zm4ID4gc3VpcmlrdVwgOwor5Y2g6aCYID4gc2VucnlvdVwgOwor5rW45rysID4gc2hpbnNoaVwgOwor5b+D6Z+zID4gc2hpbicnb25cIDsKK+WRqOefpSA+IHNodXVjaGlcIDsKK+WVk+WtpiA+IGtlaWdha3VcIDsKK+iWq+iCsiA+IGt1bicnaWt1XCA7CivmhIHnhLYgPiBzaHV1emVuXCA7Civpu4Tnmb0gPiBrb3VoYWt1XCA7Civlj43oqLwgPiBoYW5zaG91XCA7CivmtYHnlKggPiByeXV1eW91XCA7CivmuoDkuoYgPiBtYW5yeW91XCA7CivmtYHnlKMgPiByeXV1emFuXCA7CivnqY3mgqogPiBzZWtpYWt1XCA7CivpiZvnm7QgPiBlbmNob2t1XCA7CivmgqrnrZYgPiBha3VzYWt1XCA7Civpuqbnp4sgPiBtdWdpYWtpXCA7Civph5Hono0gPiBraW4nJ3l1dVwgOwor5b+F6ZyAID4gaGl0c3VqdVwgOwor5oaC5oSBID4geXV1c2h1dVwgOwor56We57WMID4gc2hpbmtlaVwgOwor5b+D6ZyKID4gc2hpbnJlaVwgOwor5oSf5rOjID4ga2Fua3l1dVwgOwor5Y+O6KanID4gc2h1dXJhblwgOwor5ZCM6IifID4gZG91c2h1dVwgOwor5oOH552mID4gdG9uYm9rdVwgOwor5rW35rexID4ga2Fpc2hpblwgOwor6Juu5aKDID4gYmFua3lvdVwgOwor5Y+N6KaGID4gaGFucHVrdVwgOwor56aP55u4ID4gZnVrdXNvdVwgOwor56qB5aaCID4gdG90c3Vqb1wgOwor5ray5pm2ID4gZWtpc2hvdVwgOwor5ZCM6IW5ID4gZG91ZnVrdVwgOwor5rW35rWBID4ga2Fpcnl1dVwgOwor5ZCE6IisID4ga2FrdWhhblwgOwor5ris5ZywID4gc29rdWNoaVwgOwor5oaC5b+DID4geXV1c2hpblwgOwor56mN5byKID4gc2VraWhlaVwgOwor6Jma5qWtID4ga3lvZ3lvdVwgOwor5rK56I+cID4gYWJ1cmFuYVwgOwor5Y2K6aGNID4gaGFuZ2FrdVwgOwor5rG66K2wID4ga2V0c3VnaVwgOwor6YmE55+zID4gdGVzc2VraVwgOwor5b+r6YGpID4ga2FpdGVraVwgOwor56mN5bm0ID4gc2VraW5lblwgOwor5rW45rC0ID4gc2hpbnN1aVwgOwor6YW36YGHID4ga29rdWd1dVwgOwor56eY5rG6ID4gaGlrZXRzdVwgOwor5b+r6YCfID4ga2Fpc29rdVwgOwor6buZ54S2ID4gbW9rdW5lblwgOwor6YWq6YW4ID4gcmFrdXNhblwgOwor56We56ulID4gc2hpbmRvdVwgOwor6YeJ6JasID4geXV1eWFrdVwgOwor5ZSx5bCOID4gc2hvdWRvdVwgOwor5ZGK55+lID4ga29rdWNoaVwgOwor5oCl6KGMID4ga3l1dWtvdVwgOwor5ZWG5aSnID4gc2hvdWRhaVwgOwor5rex5bGkID4gc2hpbnNvdVwgOwor5ZWG5aOyID4gc2hvdWJhaVwgOwor5oGL6I2JID4ga29pZ3VzYVwgOwor5oW25byUID4ga2VpY2hvdVwgOwor6YWi6YW4ID4gc2FrdXNhblwgOwor5rGC6YGTID4ga3l1dWRvdVwgOwor5rWm5rOiID4gdXJhbmFtaVwgOwor6Jas57GgID4geWFrdXJvdVwgOwor5riJ5aSWID4gc2hvdWdhaVwgOwor6buS54K5ID4ga29rdXRlblwgOwor6buS54KtID4ga29rdXRhblwgOwor5rC06YePID4gc3VpcnlvdVwgOwor56m65ZynID4ga3V1YXRzdVwgOwor56eL5rC0ID4gc2h1dXN1aVwgOwor5Y+z6IWVID4gbWlnaXVkZVwgOwor5Y+j6Iy2ID4ga3VjaGlqYVwgOwor5ZOB5qC8ID4gaGlua2FrdVwgOwor5b6S6aOfID4gdG9zaG9rdVwgOwor6YWq6L6yID4gcmFrdW5vdVwgOwor6JaE6IKJID4gdXN1bmlrdVwgOwor5Y+s6Ie0ID4gc2hvdWNoaVwgOwor5YyX6a6uID4gaG9rdXNlblwgOwor6bu05q+SID4gYmFpZG9rdVwgOwor6buE54afID4ga291anVrdVwgOwor5ZGq54mpID4ganVidXRzdVwgOwor5b+r6LazID4ga2Fpc29rdVwgOwor5Y+O6JS1ID4gc2h1dXpvdVwgOwor5Y+k6ImyID4ga29zaG9rdVwgOwor5rW05qe9ID4geW9rdXNvdVwgOwor5ra85oSfID4gcnlvdWthblwgOwor6YeR6ImyID4ga29uamlraVwgOwor6YWS6YePID4gc2h1cnlvdVwgOwor5oWi5b+DID4gbWFuc2hpblwgOwor5ZCM57SaID4gZG91a3l1dVwgOwor5Y6f6Ki7ID4gZ2VuY2h1dVwgOwor5oSB5q2OID4gc2h1dXRhblwgOwor5Y+j6IetID4ga291c2h1dVwgOwor5ZqH44CFID4ga2Fra2FrdVwgOwor5oKq55eHID4gYWt1c2hvdVwgOwor5oKq55eFID4gYWt1YnlvdVwgOwor5YyW6aqoID4ga2Frb3RzdVwgOwor6YeM6IqLID4gc2F0b2ltb1wgOwor6Yac6KGMID4gc2h1dWtvdVwgOwor5ZOo5oiSID4gc2hvdWthaVwgOwor5Y+N6JC9ID4gaGFucmFrdVwgOwor5Y2K6ZCYID4gaGFuc2hvdVwgOwor6Jas56iuID4geWFrdXNodVwgOwor5Y+j6IW5ID4ga291ZnVrdVwgOwor5b+D6YWUID4gc2hpbnN1aVwgOwor5b+D6YWNID4gc2hpbnBhaVwgOwor56aB542EID4ga2luZ29rdVwgOwor5rC36LyqID4gaHlvdXJpblwgOwor5oSf5pyNID4ga2FucHVrdVwgOwor5q+S6a2aID4gZG9rdWd5b1wgOwor56aB54yfID4ga2lucnlvdVwgOwor6YeN6IejID4ganV1c2hpblwgOwor5ZaE5Lq6ID4gemVuJyduaW5cIDsKK+WQuOebpCA+IGt5dXViYW5cIDsKK+ibruWLhyA+IGJhbicneXV1XCA7Civmt7HlpaUgPiBzaGluJydvdVwgOwor5ZCE57SZID4ga2FrdXNoaVwgOwor56eB5qyyID4gc2hpeW9rdVwgOwor6bm/56CmID4gcm9rdXNhaVwgOwor56WJ56aPID4gc2hpZnVrdVwgOwor5Y+b6IejID4gaGFuc2hpblwgOwor56S+56ugID4gc2hhc2hvdVwgOwor56qu5LmPID4ga3l1dWJvdVwgOwor5rW45p+TID4gc2hpbnNlblwgOwor6Yuz5belID4gY2h1dWtvdVwgOwor5rex5aScID4gc2hpbicneWFcIDsKK+eiuuiqjSA+IGtha3VuaW5cIDsKK+a4m+WPjiA+IGdlbnNodXVcIDsKK+iWrOekvCA+IHlha3VyZWlcIDsKK+mMqOWcsCA+IGJ5b3VjaGlcIDsKK+iWhOe4gSA+IHVzdWJlcmlcIDsKK+ayu+e4viA+IGNoaXNla2lcIDsKK+a2iOaVoyA+IHNob3VzYW5cIDsKK+elqOeUsCA+IGh5b3VkZW5cIDsKK+eiuuiogCA+IGtha3VnZW5cIDsKK+iWhOe1uSA+IHVzdWdpbnVcIDsKK+W/q+irviA+IGthaWRha3VcIDsKK+WMl+miqCA+IGhva3VmdXVcIDsKK+iWhOe1piA+IGhha2t5dXVcIDsKK+mHjeiBtCA+IGp1dWNob3VcIDsKK+WVhuWTgSA+IHNob3VoaW5cIDsKK+W/q+iqvyA+IGthaWNob3VcIDsKK+mKmOafhCA+IG1laWdhcmFcIDsKK+aCqueOiSA+IGFrdWRhbWFcIDsKK+enmOabsiA+IGhpa3lva3VcIDsKK+iWhOe0mSA+IHVzdWdhbWlcIDsKK+iWhOe0hSA+IHVzdWJlbmlcIDsKK+ensOaPmiA+IHNob3V5b3VcIDsKK+iTmumFuCA+IHNodXVzYW5cIDsKK+a4i+WRsyA+IHNoaWJ1bWlcIDsKK+WNl+mAsiA+IG5hbnNoaW5cIDsKK+m7meatoiA+IG1va3VzaGlcIDsKK+mKmOacqCA+IG1laWJva3VcIDsKK+mJseavkiA+IGtvdWRva3VcIDsKK+WQjeensCA+IG1laXNob3VcIDsKK+WVhuWPtyA+IHNob3Vnb3VcIDsKK+aAqOiJsiA+IGVuc2hva3VcIDsKK+a1geaxlyA+IHJ5dXVrYW5cIDsKK+WMl+mdoiA+IGhva3VtZW5cIDsKK+aCieeahiA+IHNoaWtrYWlcIDsKK+a1geawtCA+IHJ5dXVzdWlcIDsKK+eqgeWFiCA+IHRvc3Nha2lcIDsKK+a0u+azgSA+IGtha2t5b3VcIDsKK+mHiOe+qSA+IHNoYWt1Z2lcIDsKK+W+qemFjSA+IGZ1a3VoYWlcIDsKK+W/oOiqoCA+IGNodXVzZWlcIDsKK+WOn+iZqyA+IGdlbmNodXVcIDsKK+WQhOeoriA+IGtha3VzaHVcIDsKK+WPsuexjSA+IHNoaXNla2lcIDsKK+WQieelpSA+IGtpc3Nob3VcIDsKK+ehq+mFuCA+IHJ5dXVzYW5cIDsKK+aHkOS4rSA+IGthaWNodXVcIDsKK+WNmOi6qyA+IHRhbnNoaW5cIDsKK+W8sem9oiA+IGpha3VyZWlcIDsKK+mEremHjSA+IHRlaWNob3VcIDsKK+W/oOiogCA+IGNodXVnZW5cIDsKK+azoeebmyA+IGF3YW1vcmlcIDsKK+WMl+mZkCA+IGhva3VnZW5cIDsKK+WNh+mBtyA+IHNob3VzZW5cIDsKK+eni+aZtCA+IGFraWJhcmVcIDsKK+eptOWHuSA+IGFuYWJva29cIDsKK+mHkee2siA+IGthbmFhbWlcIDsKK+WPt+esmyA+IGdvdXRla2lcIDsKK+ibh+WPoyA+IGphZ3VjaGlcIDsKK+m7kuaqgCA+IGtva3V0YW5cIDsKK+a3keWlsyA+IHNodWt1am9cIDsKK+aGguWbvSA+IHl1dWtva3VcIDsKK+a0l+a/ryA+IHNlbnRha3VcIDsKK+WQhOekviA+IGtha3VzaGFcIDsKK+WPjOe/vCA+IHNvdXlva3VcIDsKK+WNiui+siA+IGhhbicnbm91XCA7CivnpoHmvIEgPiBraW5yeW91XCA7Civlj6PntIQgPiBrb3V5YWt1XCA7CivmuIXli50gPiBzZWlzaG91XCA7CivpiI3nl5sgPiBkb250c3V1XCA7Civnp4HmnI0gPiBzaGlmdWt1XCA7Civlj6Pns6cgPiBrb3VyeW91XCA7Civph5HntI0gPiBraW4nJ25vdVwgOwor5YyX6ZaAID4ga2l0YW1vblwgOwor5ZC454mpID4gc3VpbW9ub1wgOwor5Y6a6JaEID4ga291aGFrdVwgOwor6Ymx5qWtID4ga291Z3lvdVwgOwor5Y2B6YCyID4gamlzc2hpblwgOwor6Jas55SoID4geWFrdXlvdVwgOwor5rC46KijID4gZWlrZXRzdVwgOwor56mN5ZaEID4gc2VraXplblwgOwor6YqA5p2PID4gZ2luJyduYW5cIDsKK+a4oeS7jyA+IHRvZnV0c3VcIDsKK+ehnemFuCA+IHNob3VzYW5cIDsKK+ejiuiQvSA+IHJhaXJha3VcIDsKK+iZmuW/gyA+IGt5b3NoaW5cIDsKK+a4m+S9nCA+IGdlbnNha3VcIDsKK+WNiui6qyA+IGhhbnNoaW5cIDsKK+aDheazgSA+IGpvdWt5b3VcIDsKK+a0l+a7jCA+IHNlbmRla2lcIDsKK+awt+inoyA+IGh5b3VrYWlcIDsKK+WQjeebriA+IG1laW1va3VcIDsKK+WPpeevgCA+IGt1c2V0c3VcIDsKK+WQjOecgSA+IGRvdXNob3VcIDsKK+a0peazoiA+IHRzdW5hbWlcIDsKK+WPjue5rSA+IHNodXVrZW5cIDsKK+azleeahCA+IGhvdXRla2lcIDsKK+azieefsyA+IHNlbnNla2lcIDsKK+aylue4hCA+IG9raW5hd2FcIDsKK+awkei4iiA+IG1pbicneW91XCA7CivomZrlvLEgPiBreW9qYWt1XCA7CivljZTos5sgPiBreW91c2FuXCA7CivljbPoo70gPiBzb2t1c2VpXCA7Civph5HnrpQgPiBraW5wYWt1XCA7Civlj6TnrYYgPiBrb2hpdHN1XCA7Civlvozph5wgPiBhdG9nYW1hXCA7Civmt7HljpogPiBzaGlua291XCA7CivlvqHovL8gPiBtaWtvc2hpXCA7Civph43nr6QgPiBqdXV0b2t1XCA7Civmt7vliYogPiB0ZW5zYWt1XCA7Civph5HnrZYgPiBraW5zYWt1XCA7CivpibHmn7EgPiBrb3VjaHV1XCA7Civph5HnrYsgPiBraW5zdWppXCA7CivlvpfpgZMgPiB0b2t1ZG91XCA7CivnpKbnn7MgPiBrb3VzZWtpXCA7Civpg7fplqIgPiBreW91a2FuXCA7Civph43nrrEgPiBqdXViYWtvXCA7CivlkITnnIwgPiBrYWt1a2VuXCA7CivljqnoiI4gPiBreXV1c2hhXCA7Civlj6/npZ0gPiBrYXNoaWt1XCA7CivlkIznl4UgPiBkb3VieW91XCA7Civmg4XmrLIgPiBqb3V5b2t1XCA7Civlj47ntI0gPiBzaHV1bm91XCA7CivnqbrkuK0gPiBrdXVjaHV1XCA7Civpu5Lmnb8gPiBrb2t1YmFuXCA7CivnpZ7nga8gPiBzaGludG91XCA7Civol4HngbAgPiB3YXJhYmFpXCA7CivlkIznlLogPiBkb3VjaG91XCA7CivomavlrrMgPiBjaHV1Z2FpXCA7CivmhJ/lv5wgPiBrYW4nJ25vdVwgOwor5ZWG5LyaID4gc2hvdWthaVwgOwor5oSf5b+DID4ga2Fuc2hpblwgOwor5Y2Y6Kq/ID4gdGFuY2hvdVwgOwor6YqD5pKDID4ganV1Z2VraVwgOwor6buE5qKiID4ga291c2hvdVwgOwor5oSf5b6XID4ga2FudG9rdVwgOwor5oOH5qi4ID4gdG9uYm9rdVwgOwor55+z6a+bID4gaXNoaWRhaVwgOwor6Yac6IGeID4gc2h1dWJ1blwgOwor5ZWG5Lq6ID4gc2hvdW5pblwgOwor5b6M6YC4ID4ga291aXRzdVwgOwor5b6M6YCyID4ga291c2hpblwgOwor6YeN56mNID4ganV1c2VraVwgOwor5Y+w55+zID4gZGFpaXNoaVwgOwor5Y2T6KuWID4gdGFrdXJvblwgOwor5q6/6ZajID4gZGVua2FrdVwgOwor6JaE55quID4gdXN1a2F3YVwgOwor5Y6a6Ie8ID4gYXRzdXVzdVwgOwor5Y2a6KanID4gaGFrdXJhblwgOwor5Y2Y6KeSID4gdGFua2FrdVwgOwor6JmO5be7ID4gdG9yYWthblwgOwor5b2T6ZmQID4gdG91Z2lyaVwgOwor56mN5YiGID4gc2VraWJ1blwgOwor5oKE54S2ID4gc2hvdXplblwgOwor5rCR6KyhID4gbWluJyd5b3VcIDsKK+mMr+S5sSA+IHNha3VyYW5cIDsKK+m7kuaWkSA+IGtva3VoYW5cIDsKK+a1geaYnyA+IHJ5dXVzZWlcIDsKK+ayu+eZgiA+IGNoaXJ5b3VcIDsKK+WPsueahCA+IHNoaXRla2lcIDsKK+a3t+S/oSA+IGtvbnNoaW5cIDsKK+mDoemVtyA+IGd1bmNob3VcIDsKK+WNmOikhyA+IHRhbnB1a3VcIDsKK+aui+mrmCA+IHphbmRha2FcIDsKK+aAnee0oiA+IHNoaXNha3VcIDsKK+WPiuesrCA+IGt5dXVkYWlcIDsKK+engOaJjSA+IHNodXVzYWlcIDsKK+mJhOapiyA+IHRla2t5b3VcIDsKK+W8t+miqCA+IGt5b3VmdXVcIDsKK+iWqueCrSA+IHNoaW50YW5cIDsKK+a3t+S9nCA+IGtvbnNha3VcIDsKK+mHkeefsyA+IGtpbnNla2lcIDsKK+mJhOanjCA+IHRldHRzdWlcIDsKK+WPjueojiA+IHNodXV6ZWlcIDsKK+aDnOaVlyA+IHNla2loYWlcIDsKK+eosuWPoiA+IGluYW11cmFcIDsKK+engeaFviA+IHNoaXlva3VcIDsKK+ehrOiqvyA+IGtvdWNob3VcIDsKK+WNiuinkiA+IGhhbmtha3VcIDsKK+W9q+mHkSA+IGNob3VraW5cIDsKK+avkumFkiA+IGRva3VzaHVcIDsKK+a1ruW9qyA+IHVraWJvcmlcIDsKK+eni+aAnSA+IHNodXVzaGlcIDsKK+W+jOi2syA+IGF0b2FzaGlcIDsKK+WMl+i+uiA+IGhva3VoZW5cIDsKK+WUr+S7iiA+IHRhZGFpbWFcIDsKK+mHo+eTtiA+IHRzdXJ1YmVcIDsKK+aFn+WTrSA+IGRvdWtva3VcIDsKK+aDkeaYnyA+IHdha3VzZWlcIDsKK+WNiuilnyA+IGhhbicnZXJpXCA7Civmg4fmnLQgPiB0b25ib2t1XCA7CivmrbvprYQgPiBzaGloYWt1XCA7CivlvLfpna0gPiBreW91amluXCA7CivlkLjmsLQgPiBreXV1c3VpXCA7CivnorrogZ4gPiBrYWt1YnVuXCA7CivmgYvnl4UgPiBrb2l5YW1pXCA7Civph5HnmoQgPiBraW50ZWtpXCA7Civmt7HkuqQgPiBzaGlua291XCA7CivlkajmmJMgPiBzaHV1ZWtpXCA7Civnn6/poqggPiBreW91ZnV1XCA7CivmhbblhYYgPiBrZWljaG91XCA7CivljYroopYgPiBoYW5zb2RlXCA7CivlkLjmrrsgPiBzdWlnYXJhXCA7Civpg7fpgpEgPiBreW91eXV1XCA7CivomavlnoIgPiBjaHV1c3VpXCA7Civlkajml4sgPiBzaHV1c2VuXCA7CivmraPptaAgPiBzZWlrb2t1XCA7CivmsJHooYYgPiBtaW5zaHV1XCA7Civmtbfls6EgPiBrYWlreW91XCA7CivpiYTmn7UgPiB0ZXNzYWt1XCA7CivpiYTmn7EgPiB0ZXRjaHV1XCA7Civmr47pgLEgPiBtYWlzaHV1XCA7Civnp4Hlv4MgPiBzaGlzaGluXCA7CivnpZ7mrr8gPiBzaGluZGVuXCA7CivmrovpoY0gPiB6YW5nYWt1XCA7Civmga/ngb0gPiBzb2t1c2FpXCA7CivlvLHpm7sgPiBqYWt1ZGVuXCA7CivolLXnsbMgPiBrdXJhbWFpXCA7CivmtbflsbEgPiB1bWl5YW1hXCA7Civmrovpn78gPiB6YW5reW91XCA7CivmtIvmpb0gPiB5b3VnYWt1XCA7CivnqYDlgIkgPiBrb2t1c291XCA7Civph43nl4cgPiBqdXVzaG91XCA7Civph43nl4UgPiBqdXVieW91XCA7CivolqzmtrIgPiB5YWt1ZWtpXCA7CivmtbflsIYgPiBrYWlzaG91XCA7CivoloTniakgPiB1c3Vtb25vXCA7Civljp/ntJogPiBnZW5reXV1XCA7Civph43nlbMgPiBjaG91am91XCA7CivoloTniYcgPiBoYWt1aGVuXCA7Civpu5nmg7MgPiBtb2t1c291XCA7Civph4/nlKMgPiByeW91c2FuXCA7Civms6XmtbcgPiBkb3JvdW1pXCA7CivpvLvllIQgPiBoYW5hdXRhXCA7CivlkKbmsbogPiBoaWtldHN1XCA7CivlvqHooosgPiBvZnVrdXJvXCA7CivmgKrnn7MgPiBrYWlzZWtpXCA7CivmsLToirggPiBtaXp1Z2VpXCA7Civph43nlKggPiBjaG91eW91XCA7CivokL3pppYgPiByYWt1c2h1XCA7CivljbPoiIggPiBzb2treW91XCA7Civnp5jlr4YgPiBoaW1pdHN1XCA7CivlkqvlsLogPiBzaGlzZWtpXCA7CivlvZPph48gPiB0b3VyeW91XCA7Civlj47nm6MgPiBzaHV1a2FuXCA7CivljbXohpwgPiByYW5tYWt1XCA7Civlj43nm64gPiBoYW5tb2t1XCA7CivmsLToibIgPiBtaXp1aXJvXCA7CivnoLLouqsgPiBob3VzaGluXCA7Civlj47nm4ogPiBzaHV1ZWtpXCA7CivnpZ7mqKkgPiBzaGlua2VuXCA7Civljp/nsY0gPiBnZW5zZWtpXCA7CivmgrLmm7IgPiBoaWt5b2t1XCA7CivolYPnpZ4gPiBiYW5zaGluXCA7Civph53nirYgPiBoYXJpam91XCA7Civmronpm6MgPiBqdW4nJ25hblwgOwor5b6L6KqeID4gcml0c3Vnb1wgOwor6YqD5bqKID4ganV1c2hvdVwgOwor6buZ5oCdID4gbW9rdXNoaVwgOwor5rOo5rC0ID4gY2h1dXN1aVwgOwor5Y+s54q2ID4gc2hvdWpvdVwgOwor6buZ5b+1ID4gbW9rdW5lblwgOwor5oGL54yrID4ga29pbmVrb1wgOwor6YGp6b2iID4gdGVraXJlaVwgOwor5q2m6aqoID4gYnVrb3RzdVwgOwor5ZKM5byPID4gd2FzaGlraVwgOwor6Jmc5ZuaID4gcnlvc2h1dVwgOwor5rWB5oSfID4gcnl1dWthblwgOwor6Yqa5a2QID4gY2hvdXNoaVwgOwor56aB5pWZID4ga2lua3lvdVwgOwor5Y2Y6JGJID4gdGFuJyd5b3VcIDsKK+m7meW+kyA+IG1va3VqdXVcIDsKK+mHkeeOiSA+IGtpbnRhbWFcIDsKK+mKgOW5lSA+IGdpbm1ha3VcIDsKK+iWquawtCA+IHNoaW5zdWlcIDsKK+efoumdoiA+IHlhb21vdGVcIDsKK+eojuWPjiA+IHplaXNodXVcIDsKK+eosuS9nCA+IGluYXNha3VcIDsKK+a0i+acjSA+IHlvdWZ1a3VcIDsKK+elreacjSA+IHNhaWZ1a3VcIDsKK+aAp+eahCA+IHNlaXRla2lcIDsKK+WPjueUqCA+IHNodXV5b3VcIDsKK+WNsOiCiSA+IGluJyduaWt1XCA7CivmgKfnmZYgPiBzZWloZWtpXCA7CivphZLoiIggPiBzaHVreW91XCA7CivlvIHpp4EgPiBiZW5wYWt1XCA7CivomK3lraYgPiByYW5nYWt1XCA7CivlkI3mtYEgPiBtZWlyeXV1XCA7CivmgbXmsqIgPiBrZWl0YWt1XCA7CivlvaLot6EgPiBrZWlzZWtpXCA7CivlkIzmtYEgPiBkb3VyeXV1XCA7Civph43niq8gPiBjaG91aGFuXCA7CivnoILpiYQgPiBzYXRldHN1XCA7CivmgKfnl4UgPiBzZWlieW91XCA7CivlkYrmlocgPiBrb2t1YnVuXCA7Civlv4Poh5MgPiBzaGluem91XCA7CivlvJTpm7sgPiBjaG91ZGVuXCA7CivokL3pm7cgPiByYWt1cmFpXCA7Civlj4znkqcgPiBzb3VoZWtpXCA7CivmgqrmlrkgPiBha3VnYXRhXCA7CivpibHluoogPiBrb3VzaG91XCA7CivlkIjmtYEgPiBnb3VyeXV1XCA7CivokL3pm4EgPiByYWt1Z2FuXCA7CivmtYHlvL4gPiByeXV1ZGFuXCA7CivnpL7mrbQgPiBzaGFyZWtpXCA7Civnp4HlroUgPiBzaGl0YWt1XCA7CivokL3pmb0gPiByYWt1eW91XCA7Civph43niIYgPiBqdXViYWt1XCA7CivnorrnrZQgPiBrYWt1dG91XCA7Civps6npppYgPiBreXV1c2h1XCA7Civnp4HlraYgPiBzaGlnYWt1XCA7Civlj4LnlLsgPiBzYW5rYWt1XCA7Civli6fovrIgPiBrYW4nJ25vdVwgOwor5Y6f56WoID4gZ2VucHlvdVwgOwor5q2j6aKoID4gc2hvdWZ1dVwgOwor5oCl55SoID4ga3l1dXlvdVwgOwor6buS5bivID4ga3Vyb29iaVwgOwor5YuV6YePID4gZG91cnlvdVwgOwor5ZOo5YW1ID4gc2hvdWhlaVwgOwor6YqA5bCGID4gZ2luc2hvdVwgOwor5Y+Z54i1ID4gam9zaGFrdVwgOwor5b+D6IOGID4gc2hpbnRhblwgOwor5oOF5oW+ID4gam91eW9rdVwgOwor5YyX6KW/ID4gaG9rdXNlaVwgOwor5rW05aC0ID4geW9rdWpvdVwgOwor5b2i6LGhID4ga2Vpc2hvdVwgOwor5rCX6ImyID4ga2lzaG9rdVwgOwor5b+D6IKdID4gc2hpbmthblwgOwor5b+g57SUID4gY2h1dWp1blwgOwor56OQ55+zID4gYmFuamFrdVwgOwor56Wo5pWwID4gaHlvdXN1dVwgOwor5Y+j54GrID4ga3VjaGliaVwgOwor5Y+U54i2ID4gc2h1a3VmdVwgOwor5Y+N54usID4gaGFuZG9rdVwgOwor56eB5ai8ID4gc2hpc2hvdVwgOwor5rOl5qOSID4gZG9yb2JvdVwgOwor56eL5aOwID4gc2h1dXNlaVwgOwor56We5piOID4gc2hpbm1laVwgOwor5rGB57KJID4gc2hpcnVrb1wgOwor5byx6YW4ID4gamFrdXNhblwgOwor5rW35Zu9ID4ga2Fpa29rdVwgOwor6JS155u4ID4gem91c2hvdVwgOwor5Y2D6I2JID4gY2hpZ3VzYVwgOwor5YuY6YCyID4ga2Fuc2hpblwgOwor5Y2a6IGeID4gaGFrdWJ1blwgOwor5ZCr5pyJID4gZ2FuJyd5dXVcIDsKK+WPjeeJqSA+IHRhbm1vbm9cIDsKK+WOn+efsyA+IGdlbnNla2lcIDsKK+WNnOiAhSA+IGJva3VzaGFcIDsKK+mzpemhniA+IGNob3VydWlcIDsKK+ensOWPtyA+IHNob3Vnb3VcIDsKK+W8gemboyA+IGJlbicnbmFuXCA7CivljbPntI0gPiBzb2t1bm91XCA7CivnpL7mpa0gPiBzaGFneW91XCA7CivmsJfohIggPiBraW15YWt1XCA7Civlj7fms6MgPiBnb3VreXV1XCA7CivnpLzmpb0gPiByZWlnYWt1XCA7CivnpZ7mlL8gPiBzaGluc2VpXCA7Civnn63ph50gPiB0YW5zaGluXCA7Civmr43opqogPiBoYWhhb3lhXCA7CivphbfnqI4gPiBrb2t1emVpXCA7Civnp7vlh7ogPiBpc2h1dHN1XCA7CivlvrPogrIgPiB0b2t1aWt1XCA7Civno4Hnn7MgPiBqaXNoYWt1XCA7CivmrovphbcgPiB6YW5rb2t1XCA7Civms5Xmpb0gPiBob3VyYWt1XCA7Civlj43nhacgPiBoYW5zaG91XCA7CivmtojljrsgPiBzaG91a3lvXCA7CivphpznlLcgPiBidW90b2tvXCA7CivnoLToo4IgPiBoYXJldHN1XCA7CivmsLTnsr4gPiBzdWlzaG91XCA7CivlkajlubQgPiBzaHV1bmVuXCA7CivolJHnp7AgPiBiZXNzaG91XCA7CivmtojljbAgPiBrZXNoaWluXCA7CivlkIzmpa0gPiBkb3VneW91XCA7Civnp4Hlob4gPiBzaGlqdWt1XCA7Civli6fos54gPiBrYW5zaG91XCA7CivmgqrmiK8gPiBpdGF6dXJhXCA7Civli5Xou7ggPiBkb3VqaWt1XCA7CivmtYXlraYgPiBzZW5nYWt1XCA7CivnoqfnqbogPiBoZWtpa3V1XCA7CivliojpoK0gPiBoZWtpdG91XCA7Civljprnm7ggPiBrb3VzaG91XCA7Civlipvpl5ggPiByaWtpdG91XCA7Civnn7PpgKAgPiBzZWtpem91XCA7CivmsrnmsJcgPiBhYnVyYWtlXCA7CivomK3lm70gPiByYW5rb2t1XCA7Civlv4Pnt5IgPiBzaGluY2hvXCA7Civlj6/msbogPiBrYWtldHN1XCA7Civli4fpgLIgPiB5dXVzaGluXCA7CivljbPnrZQgPiBzb2t1dG91XCA7CivlvLHovKkgPiBqYWt1aGFpXCA7CivpiYTlv4MgPiB0ZXNzaGluXCA7Civmr5vomasgPiBrZW11c2hpXCA7CivlvJTpioMgPiBjaG91anV1XCA7Civlj4LnhacgPiBzYW5zaG91XCA7CivmgYvmsrMgPiBrb2lrYXdhXCA7CivphY3ntaYgPiBoYWlreXV1XCA7CivlkIzmoLwgPiBkb3VrYWt1XCA7Civms6jmlocgPiBjaHV1bW9uXCA7Civlj7HmraMgPiBzaGlzc2VpXCA7CivolqzmlrkgPiB5YWt1aG91XCA7CivmtLvlrZcgPiBrYXRzdWppXCA7Civljp/nlLEgPiBnZW4nJ3l1dVwgOwor5ZOA5YilID4gYWliZXRzdVwgOwor5b6S6IqxID4gYWRhYmFuYVwgOwor6YCx6b2hID4gc2h1dXJlaVwgOwor56S85pyNID4gcmVpZnVrdVwgOwor6YG46ZuGID4gc2Vuc2h1dVwgOwor5oGL5rC0ID4ga29pbWl6dVwgOwor5ZOA5YiHID4gYWlzZXRzdVwgOwor5ZCI5qC8ID4gZ291a2FrdVwgOwor5oSB5ZiGID4gc2h1dXRhblwgOwor56Sm5qWtID4ga291Z3lvdVwgOwor5rW35Y6fID4gdW5hYmFyYVwgOwor6bq75bGRID4gYXNha3V6dVwgOwor5Y+k5rGgID4gZnVydWlrZVwgOwor6baP6IKJID4ga2VpbmlrdVwgOwor5rOV5pyNID4gaG91ZnVrdVwgOwor5YuY6LKsID4ga2Fuc2VraVwgOwor5oSa5YqjID4gZ3VyZXRzdVwgOwor5raI5YWJID4gc2hvdWtvdVwgOwor5Y2Y57SaID4gdGFua3l1dVwgOwor5ZCN5pyoID4gbWVpYm9rdVwgOwor55+t6Lu4ID4gdGFuamlrdVwgOwor5YuH6LqNID4geXV1eWFrdVwgOwor6Yac54q2ID4gc2h1dWpvdVwgOwor5ZCE5qChID4ga2FrdWtvdVwgOwor5Y+i5rC3ID4gc291aHlvdVwgOwor5oGL5q27ID4ga29pamluaVwgOwor5Yun6KqYID4ga2FuJyd5dXVcIDsKK+aCquW+syA+IGFrdXRva3VcIDsKK+awl+e1tiA+IGtpemV0c3VcIDsKK+m7kuWjhyA+IGtva3V0YW5cIDsKK+W/g+eulyA+IHNoaW56YW5cIDsKK+ayiOa+sSA+IGNoaW5kZW5cIDsKK+W8t+ixqiA+IGt5b3Vnb3VcIDsKK+aCquW9uSA+IGFrdXlha3VcIDsKK+WKiOmWiyA+IGhla2lrYWlcIDsKK+aCquW9oiA+IGFrdWdhdGFcIDsKK+W/g+etiyA+IHNoaW5raW5cIDsKK+WPpOatjCA+IGZ1cnV1dGFcIDsKK+iQvemBuCA+IHJha3VzZW5cIDsKK+ayiOa9nCA+IGNoaW5zZW5cIDsKK+elnuaFriA+IHNoaW5yeW9cIDsKK+WJr+mhjCA+IGZ1a3VkYWlcIDsKK+W8j+mDqCA+IHNoaWtpYnVcIDsKK+W8k+mBkyA+IGt5dXVkb3VcIDsKK+ato+mKmCA+IHNob3VtZWlcIDsKK+WNnOetriA+IGJva3V6ZWlcIDsKK+WRguW+iyA+IHJvcmV0c3VcIDsKK+iRiei6qyA+IHlvdXNoaW5cIDsKK+W+kOiEiCA+IGpvbXlha3VcIDsKK+aEn+WCtyA+IGthbnNob3VcIDsKK+eip+ecvCA+IGhla2lnYW5cIDsKK+W+jOiFuSA+IGF0b2JhcmFcIDsKK+a0i+W8kyA+IHlvdWt5dXVcIDsKK+eerOmWkyA+IHNodW5rYW5cIDsKK+efrei2syA+IHRhbnNva3VcIDsKK+ekuuaVmSA+IHNoaWt5b3VcIDsKK+WNv+ebuCA+IGtlaXNob3VcIDsKK+attOmBiiA+IHJla2l5dXVcIDsKK+ayiOa7niA+IGNoaW50YWlcIDsKK+WQjOaXjyA+IGRvdXpva3VcIDsKK+WJs+mdkiA+IGlyZXp1bWlcIDsKK+W9rOiUmiA+IGhpbnV0c3VcIDsKK+emheWvuiA+IHplbmRlcmFcIDsKK+W+jOiEmiA+IGF0b2FzaGlcIDsKK+aAnea9riA+IHNoaWNob3VcIDsKK+a1ruWKmyA+IGZ1cnlva3VcIDsKK+ejqOa7hSA+IG1hbWV0c3VcIDsKK+atu+i7uCA+IHNoaWppa3VcIDsKK+ato+mHkSA+IHNob3VraW5cIDsKK+a1geWfnyA+IHJ5dXVpa2lcIDsKK+emheWulyA+IHplbnNodXVcIDsKK+m2tOenkSA+IHRzdXJ1a2FcIDsKK+iXqeWtpiA+IGhhbmdha3VcIDsKK+aBreaVrCA+IGt5b3VrZWlcIDsKK+axjueUqCA+IGhhbicneW91XCA7CivmgKXmuJsgPiBreXV1Z2VuXCA7CivnpZ7mgKcgPiBzaGluc2VpXCA7CivmgpTmgpsgPiBrYWlzaHVuXCA7CivnpoXlraYgPiB6ZW5nYWt1XCA7Civlj5Tmr40gPiBzaHVrdWJvXCA7CivlvI/ovp4gPiBzaGlraWppXCA7Civnp4DlkJ8gPiBzaHV1Z2luXCA7CivpgY7po58gPiBrYXNob2t1XCA7Civljp/niIYgPiBnZW5iYWt1XCA7Civps6XpioMgPiBjaG91anV1XCA7CivliY3pq6ogPiBtYWVnYW1pXCA7CivlkoDlmrwgPiBzb3NoYWt1XCA7Civnp5/lgJ8gPiBzb3NoYWt1XCA7CivmrrromasgPiBzYXRjaHV1XCA7Civli6TooYwgPiBnb25neW91XCA7CivmgpblvrMgPiBoYWl0b2t1XCA7Civmr5LojYkgPiBkb2t1c291XCA7CivljbXnmb0gPiByYW5wYWt1XCA7Civnp4vliIYgPiBzaHV1YnVuXCA7Civlj4LmtJsgPiBzYW5yYWt1XCA7CivlkqzlgrcgPiBrb3VzaG91XCA7CivlvovnvqkgPiByaWNoaWdpXCA7Civnp4vlhrcgPiBzaHV1cmVpXCA7CivlvLfopoEgPiBreW91eW91XCA7Civph5Hmo5IgPiBrYW5hYm91XCA7CivoloTmmI4gPiBoYWt1bWVpXCA7CivluqfpqqggPiB6YWtvdHN1XCA7CivliaPpm6MgPiBrZW4nJ25hblwgOwor5b6056iOID4gY2hvdXplaVwgOwor5b6p562UID4gZnVrdXRvdVwgOwor5YuF6KutID4gY2hva3V5dVwgOwor5Yq06LODID4gcm91Y2hpblwgOwor5byx6KaWID4gamFrdXNoaVwgOwor5ZCI5o6MID4gZ2Fzc2hvdVwgOwor5YuF6KqeID4gY2hva3Vnb1wgOwor55+t6Kq/ID4gdGFuY2hvdVwgOwor5Y+45pWZID4gc2hpa3lvdVwgOwor5rKI5q6/ID4gY2hpbmRlblwgOwor6bWs57+8ID4gaG91eW9rdVwgOwor5YuF6KixID4gY2hva2t5b1wgOwor55+t6KmVID4gdGFucHlvdVwgOwor56eY5LuPID4gaGlidXRzdVwgOwor5oCl5q27ID4ga3l1dXNoaVwgOwor5by36KGMID4ga3lvdWtvdVwgOwor5oCn5qyyID4gc2VpeW9rdVwgOwor5rW35LqAID4gdW1pZ2FtZVwgOwor5q+S6IW6ID4gZG9rdXNlblwgOwor5Y+y5paZID4gc2hpcnlvdVwgOwor5rC355SwID4gaHlvdWRlblwgOwor5b+D55y8ID4gc2hpbmdhblwgOwor6YKB6YCyID4gbWFpc2hpblwgOwor5Y+k5pysID4gZnVydWJvblwgOwor56K654S2ID4ga2FrdXplblwgOwor5rSL5a2mID4geW91Z2FrdVwgOwor5b256ICFID4geWFrdXNoYVwgOwor5oOw5YqbID4gZGFyeW9rdVwgOwor5Y+N5qeYID4ga2Fpc2FtYVwgOwor5rCR56aPID4gbWlucHVrdVwgOwor5YmN6aGNID4gemVuZ2FrdVwgOwor5rW35LitID4ga2FpY2h1dVwgOwor5b6M57aaID4ga291em9rdVwgOwor5Y+k5puyID4ga29reW9rdVwgOwor6YGF6ZycID4gb3Nvamltb1wgOwor5ZGo5ZueID4gc2h1dWthaVwgOwor5rSb5aSWID4gcmFrdWdhaVwgOwor5Y2K56WeID4gaGFuc2hpblwgOwor5b2T6JC9ID4gdG91cmFrdVwgOwor6YWS55mWID4gc2h1aGVraVwgOwor6YKq6KqsID4gamFzZXRzdVwgOwor5qyg6ZmkID4ga2V0c3Vqb1wgOwor5rCP56WeID4gdWppZ2FtaVwgOwor6YeR5pucID4ga2luJyd5b3VcIDsKK+auteiQvSA+IGRhbnJha3VcIDsKK+W6p+mjnyA+IHphc2hva3VcIDsKK+WRu+WQnyA+IHNoaW5naW5cIDsKK+mJhOWjgSA+IHRlcHBla2lcIDsKK+eni+S9nCA+IGFraXNha3VcIDsKK+WNg+eniyA+IHNlbnNodXVcIDsKK+WMuueriyA+IGt1cml0c3VcIDsKK+W/oOeKrCA+IGNodXVrZW5cIDsKK+WQhOaJgCA+IGtha3VzaG9cIDsKK+WKh+mBkyA+IGdla2lkb3VcIDsKK+aDqOWKhyA+IHNhbmdla2lcIDsKK+aBi+aWhyA+IGtvaWJ1bWlcIDsKK+mKg+WCtyA+IGp1dXNob3VcIDsKK+azleaCpiA+IGhvdWV0c3VcIDsKK+efpeimmiA+IGNoaWtha3VcIDsKK+mCpuiosyA+IGhvdXlha3VcIDsKK+awtOeQgyA+IHN1aWt5dXVcIDsKK+engeS/oSA+IHNoaXNoaW5cIDsKK+WKm+i1sCA+IHJpa2lzb3VcIDsKK+a1puS6uiA+IHVyYWJpdG9cIDsKK+WPjeaguCA+IGhhbmtha3VcIDsKK+W5vemzpSA+IHl1dWNob3VcIDsKK+iWrOW4qyA+IHlha3VzaGlcIDsKK+elnuWunSA+IHNoaW5wb3VcIDsKK+elnuWumCA+IHNoaW5rYW5cIDsKK+elneWutCA+IHNodWt1ZW5cIDsKK+mKgOWBtCA+IGdpbmdhd2FcIDsKK+WPluabvyA+IHRvcmlrYWVcIDsKK+W8lOipniA+IGNob3VzaGlcIDsKK+WNoOeUqCA+IHNlbicneW91XCA7CivliY3pmbMgPiB6ZW5jaGluXCA7Civnn7PonYsgPiBzZWtpcm91XCA7Civmrbvop5IgPiBzaGlrYWt1XCA7Civok6znlJ8gPiB5b21vZ2l1XCA7CivmtYHli5UgPiByeXV1ZG91XCA7CivljoTngb0gPiB5YWt1c2FpXCA7Civlj6vmj5sgPiBreW91a2FuXCA7CivmgKDmpa0gPiB0YWlneW91XCA7CivmrbToqKogPiByZWtpaG91XCA7CivlkIzlv4MgPiBkb3VzaGluXCA7Civljp/ms6ggPiBnZW5jaHV1XCA7CivpgIbpsZcgPiBnZWtpcmluXCA7Civnn6XooYwgPiBjaGlneW91XCA7CivmgKfmoLwgPiBzZWlrYWt1XCA7CivlkIzlvbkgPiBkb3V5YWt1XCA7CivphbjmvL8gPiBob296dWtpXCA7CivlkInlvrQgPiBraXRjaG91XCA7CivmrbTopqcgPiByZWtpcmFuXCA7CivmsLTniaIgPiBtaXp1cm91XCA7CivmsLTniZsgPiBzdWlneXV1XCA7CivlkIjlvpMgPiBnYXNzaG91XCA7CivljYrnmb0gPiBoYW5wYWt1XCA7Civps6Xosp0gPiB0b3JpZ2FpXCA7CivmsaDmsrwgPiBjaGlzaG91XCA7CivphY3nkIMgPiBoYWlreXV1XCA7Civlub3prLEgPiB5dXV1dHN1XCA7CivmsLTniIYgPiBzdWliYWt1XCA7CivljJfnsbMgPiBob2t1YmVpXCA7CivljZPnlKggPiB0YWt1eW91XCA7CivolYPmpJIgPiBiYW5zaG91XCA7Civlib3ou70gPiBoeW91a2luXCA7Civms6jlsIQgPiBjaHV1c2hhXCA7CivlvrTnlKggPiBjaG91eW91XCA7CivphZTni4IgPiBzdWlreW91XCA7Civlko7kurogPiB0b2dhbmluXCA7CivokYnonIIgPiBoYWJhY2hpXCA7Civlv4PnjL8gPiBzaGluJydlblwgOwor5b6z55SoID4gdG9rdXlvdVwgOwor5oGw5bmFID4ga2FwcHVrdVwgOwor6L+36bOlID4gbWVpY2hvdVwgOwor6YCa6aKoID4gdHN1dWZ1dVwgOwor5Y2B55uuID4ganV1bW9rdVwgOwor6JaE5oOFID4gaGFrdWpvdVwgOwor5q2j6Kq/ID4gc2VpY2hvdVwgOwor5ZCM5bitID4gZG91c2VraVwgOwor5Y+C5pydID4gc2FuY2hvdVwgOwor55yf6buSID4gbWFra3Vyb1wgOwor5Yqj6KeSID4gcmVra2FrdVwgOwor6Jas5a6zID4geWFrdWdhaVwgOwor5oGi5b6pID4ga2FpZnVrdVwgOwor6YCx6ZaTID4gc2h1dWthblwgOwor56aE5ZG9ID4gcm9rdW1laVwgOwor5Y+k5ouZID4ga29zZXRzdVwgOwor5Yi76ZmQID4ga29rdWdlblwgOwor5Y+O5paCID4gc2h1dXJlblwgOwor56We5aSJID4gc2hpbnBlblwgOwor5rC354K5ID4gaHlvdXRlblwgOwor5byB6Ki8ID4gYmVuc2hvdVwgOwor5rC354KtID4gaHlvdXRhblwgOwor5q2O6LOeID4gdGFuc2hvdVwgOwor5ZC45aG1ID4ga3l1dWppblwgOwor5ZCb5a+1ID4ga3VuY2hvdVwgOwor5bmy6a2aID4gaG9zaGl1b1wgOwor5Y+O5pSvID4gc2h1dXNoaVwgOwor5Y+O5pSsID4gc2h1dXJhblwgOwor5ZCE5bqXID4ga2FrdXRlblwgOwor5Y2T55CDID4gdGFra3l1dVwgOwor5oGQ5oWMID4ga3lvdWtvdVwgOwor5Y+j5om/ID4ga291c2hvdVwgOwor5Y6z5qC8ID4gZ2Vua2FrdVwgOwor6JaE5b+XID4gaGFrdXNoaVwgOwor56aA5ZGKID4gcmlua29rdVwgOwor5ZGo5YiwID4gc2h1dXRvdVwgOwor5rGX5rC0ID4gYXNlbWl6dVwgOwor5YyX56uvID4gaG9rdXRhblwgOwor5Y2Y54usID4gdGFuZG9rdVwgOwor5ZCE5biCID4ga2FrdXNoaVwgOwor5Y+N5pKDID4gaGFuZ2VraVwgOwor5rWB5L2TID4gcnl1dXRhaVwgOwor6buS5Lq6ID4ga29rdWppblwgOwor5b2856iLID4gYXJlaG9kb1wgOwor56S+5a6FID4gc2hhdGFrdVwgOwor5rWB5LyaID4gcnl1dWthaVwgOwor5Y2K55CDID4gaGFua3l1dVwgOwor6YGK6YOtID4geXV1a2FrdVwgOwor6YGT6L66ID4gbWljaGliZVwgOwor5bqX6ZW3ID4gdGVuY2hvdVwgOwor5oGS5b+DID4ga291c2hpblwgOwor5q2m6KGTID4gYnVqdXRzdVwgOwor5q6L6I+KID4gemFuZ2lrdVwgOwor5ZCN5bCGID4gbWVpc2hvdVwgOwor5rKh5oiRID4gYm90c3VnYVwgOwor5ZCM5bCPID4gZG91c2hvdVwgOwor5rWB5LqhID4gcnl1dWJvdVwgOwor5Yid6Z+zID4gaGF0c3VuZVwgOwor6YO956uLID4gdG9yaXRzdVwgOwor5ZCO5a6uID4ga291a3l1dVwgOwor5Yil6ZuiID4gYmV0c3VyaVwgOwor5b6T55qEID4ganV1dGVraVwgOwor5ZG95LitID4gbWVpY2h1dVwgOwor56C056u5ID4gaGFjaGlrdVwgOwor6JK855m9ID4gc291aGFrdVwgOwor5rC05ru0ID4gc3VpdGVraVwgOwor6YeP5oSfID4gcnlvdWthblwgOwor5rOV5a2mID4gaG91Z2FrdVwgOwor5YqH6KuWID4gZ2VraXJvblwgOwor5Y2S54i+ID4gc290c3VqaVwgOwor5YqH6KuHID4gZ2VraWRhblwgOwor5oCd5paZID4gc2hpcnlvdVwgOwor56Gs55CDID4ga291a3l1dVwgOwor5Yqb6KGMID4gcnlva2tvdVwgOwor5ZCM5a6XID4gZG91c2h1dVwgOwor6JWD5pePID4gYmFuem9rdVwgOwor56aB5YmHID4ga2luc29rdVwgOwor6YG46KmVID4gc2VucHlvdVwgOwor56Sr5bKpID4gcmVraWdhblwgOwor5ZCE5bGkID4ga2FrdXNvdVwgOwor5Yil6ZmiID4gYmV0c3VpblwgOwor5ZCM5a2mID4gZG91Z2FrdVwgOwor56OB5qW1ID4gamlreW9rdVwgOwor6YCa6ZaiID4gdHN1dWthblwgOwor5Yud6ICFID4gc2hvdXNoYVwgOwor5YqH6KmpID4gZ2VraXNoaVwgOwor5bmy6aOvID4gaG9zaGlpaVwgOwor6YmE5YmHID4gdGVzc29rdVwgOwor6YGF6YCfID4gY2hpc29rdVwgOwor56Kn5rC0ID4gaGVraXN1aVwgOwor55+z6Ie8ID4gaXNoaXVzdVwgOwor5bm06aGNID4gbmVuZ2FrdVwgOwor5by36IKpID4ga3lvdWtlblwgOwor5Y+w5bizID4gZGFpY2hvdVwgOwor5rC05rexID4gc3Vpc2hpblwgOwor5rC35rW3ID4gaHlvdWthaVwgOwor5rOw5Zu9ID4gdGFpa29rdVwgOwor5Yil6ZaTID4gYmV0c3VtYVwgOwor5rGB5rCXID4gc2hpcnVrZVwgOwor5rSb5YaFID4gcmFrdW5haVwgOwor5q+O56eSID4gbWFpYnlvdVwgOwor5b6u54axID4gYmluZXRzdVwgOwor5rC05rW0ID4gc3VpeW9rdVwgOwor5oOR5LmxID4gd2FrdXJhblwgOwor6JC96JGJID4gcmFrdXlvdVwgOwor5Yqg6JmQID4ga2FneWFrdVwgOwor5by36ICFID4ga3lvdXNoYVwgOwor5Y+k5byPID4ga29zaGlraVwgOwor6JK455WZID4gam91cnl1dVwgOwor6YeN5b+DID4ganV1c2hpblwgOwor5Y2K54afID4gaGFuanVrdVwgOwor5rC05rWBID4gc3Vpcnl1dVwgOwor55yf6auEID4gc2hpbnp1aVwgOwor5YmN6YCyID4gemVuc2hpblwgOwor5YmN6YCxID4gemVuc2h1dVwgOwor5Y6f5pyoID4gZ2VuYm9rdVwgOwor6YeN5b25ID4ganV1eWFrdVwgOwor5Y+b5b+DID4gaGFuc2hpblwgOwor5Yuk57aaID4ga2luem9rdVwgOwor6YC86L+rID4gaGlwcGFrdVwgOwor5Y2K54S8ID4gaGFuc2hvdVwgOwor56We5ZOBID4gc2hpbnBpblwgOwor5Y6a5p2/ID4gYXRzdWl0YVwgOwor5rKh5b6MID4gYm90c3Vnb1wgOwor5rOl5Z2KID4gZG9yb2JvdVwgOwor5byx6ICFID4gamFrdXNoYVwgOwor5Y215q67ID4gcmFua2FrdVwgOwor6YeR5bmzID4ga2lucGlyYVwgOwor5Y2x5rCXID4gYWJ1bmFnZVwgOwor5oCl5omAID4ga3l1dXNob1wgOwor5q6756u/ID4ga2FyYXNhb1wgOwor6YaH5py0ID4ganVuYm9rdVwgOwor5Y+W5b6XID4gc2h1dG9rdVwgOwor5Y2z5q27ID4gc29rdXNoaVwgOwor6bSH6ImyID4gdG9raWlyb1wgOwor5Y+w5bC7ID4gZGFpamlyaVwgOwor5ZCb5Zu9ID4ga3Vua29rdVwgOwor5oCn5oW+ID4gc2VpeW9rdVwgOwor6L+96ZqPID4gdHN1aXp1aVwgOwor5Yuy56ugID4ga3Vuc2hvdVwgOwor6YCy6YCAID4gc2hpbnRhaVwgOwor6YCj6YePID4gcmVucnlvdVwgOwor5YmN6LqrID4gemVuc2hpblwgOwor5Y6f5paZID4gZ2VucnlvdVwgOwor5q276IetID4gc2hpc2h1dVwgOwor6YKR6JC9ID4geXV1cmFrdVwgOwor5Ymv6KmeID4gZnVrdXNoaVwgOwor5ZCI5aOBID4gZ2FwcGVraVwgOwor5YmN6LmkID4gemVuc2hvdVwgOwor5Y+y5a2mID4gc2hpZ2FrdVwgOwor5Y+N5b+cID4gaGFuJydub3VcIDsKK+WHuumhjSA+IGRlYml0YWlcIDsKK+WIuemCoyA+IHNldHN1bmFcIDsKK+W5tOmVtyA+IG5lbmNob3VcIDsKK+WPjeW+qSA+IGhhbnB1a3VcIDsKK+WHuumgrSA+IHNodXR0b3VcIDsKK+WIh+mZpCA+IHNldHN1am9cIDsKK+iRreewgCA+IHlvc2hpenVcIDsKK+WHtumhniA+IGt5b3VydWlcIDsKK+eih+aziiA+IHRlaWhha3VcIDsKK+aApeaCoyA+IGt5dXVrYW5cIDsKK+WJjei2syA+IG1hZWFzaGlcIDsKK+WQn+WUsSA+IGdpbnNob3VcIDsKK+a0i+WCmCA+IHlvdWdhc2FcIDsKK+eglOeptiA+IGtlbmt5dXVcIDsKK+mAsui7jSA+IHNoaW5ndW5cIDsKK+aAp+aApSA+IHNlaWt5dXVcIDsKK+emgeS4rSA+IGtpbmNodXVcIDsKK+elnuWJoyA+IHNoaW5rZW5cIDsKK+mFkuavkiA+IHNodWRva3VcIDsKK+elnuWJjSA+IHNoaW56ZW5cIDsKK+mHkeWxniA+IGtpbnpva3VcIDsKK+aApeaApyA+IGt5dXVzZWlcIDsKK+iRpuewviA+IHlvc2hpenVcIDsKK+iWrOWTgSA+IHlha3VoaW5cIDsKK+ayiOaAnSA+IGNoaW5zaGlcIDsKK+WNl+a0iyA+IG5hbicneW91XCA7CivlkIzlm70gPiBkb3Vrb2t1XCA7CivmrbvogokgPiBzaGluaWt1XCA7CivmgKflvrQgPiBzZWljaG91XCA7CivlubPpkb8gPiBoZWlzYWt1XCA7CivokabnsIAgPiB5b3NoaXp1XCA7Civli53nrpcgPiBzaG91c2FuXCA7Civph5HlsIYgPiBraW5zaG91XCA7CivmgJ3mg5EgPiBvbW93YWt1XCA7Civps7boibIgPiB0b2JpaXJvXCA7Civnn7Pntr8gPiBzZWtpbWVuXCA7CivokL3og4YgPiByYWt1dGFuXCA7Civps6XokawgPiBjaG91c291XCA7CivljbHmpbUgPiBraWt5b2t1XCA7CivmsqLlsbEgPiB0YWt1c2FuXCA7CivlvpfngrkgPiB0b2t1dGVuXCA7Civlj4nluqsgPiBhemVrdXJhXCA7CivphbfmmpEgPiBrb2t1c2hvXCA7Civlj4zluYUgPiBzb3VmdWt1XCA7CivlvZPnorogPiB0b3VrYWt1XCA7CivliLrouqsgPiBzYXNoaW1pXCA7CivluoPph48gPiBrb3VyeW91XCA7CivlkITlnLAgPiBrYWt1Y2hpXCA7CivoloTloqggPiB1c3V6dW1pXCA7Civms4rlnLAgPiBoYWt1Y2hpXCA7CivljqjmiL8gPiBjaHV1Ym91XCA7Civlj5vlsIYgPiBoYW5zaG91XCA7CivlkITlm70gPiBrYWtrb2t1XCA7CivokabnrJsgPiBhc2hpYnVlXCA7Civph43lrp0gPiBjaG91aG91XCA7Civph4/lrZAgPiByeW91c2hpXCA7CivluZXpm7sgPiBtYWt1ZGVuXCA7CivliaXoo70gPiBoYWt1c2VpXCA7CivphpzmhYsgPiBzaHV1dGFpXCA7Civlip/oh6MgPiBrb3VzaGluXCA7Civnn63ntaEgPiB0YW5yYWt1XCA7CivolqzljIUgPiB5YWt1aG91XCA7CivmsJHms4ogPiBtaW5wYWt1XCA7CivnpL7lkYogPiBzaGFrb2t1XCA7CivlvIHohpwgPiBiZW5tYWt1XCA7CivpgLLosqIgPiBzaGlua291XCA7CivluLjpp5AgPiBqb3VjaHV1XCA7CivphpzmgqogPiBzaHV1YWt1XCA7Civmsbrlv4MgPiBrZXNzaGluXCA7CivnoJXnn7MgPiBzYWlzZWtpXCA7CivmraPohbkgPiBzZWlmdWt1XCA7Civps6noiI4gPiBreXV1c2hhXCA7CivolqzliaQgPiB5YWt1emFpXCA7Civmr5TnjocgPiBoaXJpdHN1XCA7CivlkIjllLEgPiBnYXNzaG91XCA7Civli77nlZkgPiBrb3VyeXV1XCA7CivliKXovp4gPiBiZXRzdWppXCA7CivlvIrnv5IgPiBoZWlzaHV1XCA7CivlvbnniZsgPiBla2lneXV1XCA7CivpgI3pgaUgPiBzaG91eW91XCA7CivmsrzlnLAgPiBudW1hY2hpXCA7CivpgI3pgZkgPiBzaG91eW91XCA7CivojqvpgKMgPiBiYWt1cmVuXCA7Civms5XlkI0gPiBob3VteW91XCA7Civlu7foh6MgPiB0ZWlzaGluXCA7Civnn7PnrY0gPiBzZWtpanVuXCA7CivnpZ7kvZMgPiBzaGludGFpXCA7Civlj47lrrkgPiBzaHV1eW91XCA7CivmgqDkuYUgPiB5dXVreXV1XCA7Civmsrvlm70gPiBjaGlrb2t1XCA7CivliJ3pgJ8gPiBzaG9zb2t1XCA7CivlkI3lj7cgPiBteW91Z291XCA7Civlv4Pmo5IgPiBzaGluYm91XCA7CivnpZ7ku5kgPiBzaGluc2VuXCA7CivpgLLorJsgPiBzaGlua291XCA7Civms5XljZogPiBob3VoYWt1XCA7CivnpZ7kurogPiBzaGluamluXCA7CivpgIbpgYsgPiBneWFrdXVuXCA7CivnnInpm6ogPiBiaXNldHN1XCA7Civpgbjoia8gPiBzZW5yeW91XCA7Civlh7jpj6EgPiB0b2treW91XCA7CivokrjmupwgPiBqb3VyeXV1XCA7CivlkIjlj6MgPiBhaWt1Y2hpXCA7CivnpL7liYcgPiBzaGFzb2t1XCA7CivmrJ3ooYAgPiB1a2tldHN1XCA7CivmsLTmmbYgPiBzdWlzaG91XCA7CivojZLpp5IgPiBhcmFnb21hXCA7CivlkI3ljKAgPiBtZWlzaG91XCA7CivmsLjml6UgPiBlaWppdHN1XCA7CivmrrrnlJ8gPiBzZXNzaG91XCA7CivljbPmlq0gPiBzb2t1ZGFuXCA7CivliIbph50gPiBmdW5zaGluXCA7CivljYPmrbMgPiBjaGl0b3NlXCA7CivliIbph48gPiBidW5yeW91XCA7CivlkI3li50gPiBtZWlzaG91XCA7CivliKXot68gPiBiZXRzdXJvXCA7Civms5XlipsgPiBob3VyaWtpXCA7Civmr5TnhrEgPiBoaW5ldHN1XCA7Civli6TnmocgPiBraW4nJ25vdVwgOwor5by356GsID4ga3lvdWtvdVwgOwor5rOV5YmHID4gaG91c29rdVwgOwor6YCy6KiAID4gc2hpbmdlblwgOwor5buD6JmaID4gaGFpa3lvXCA7Civlv7/mgJIgPiBmdW4nJ251XCA7CivpgIHov44gPiBzb3VnZWlcIDsKK+i/hembtyA+IGppbnJhaVwgOwor5b+X5pONID4gc2hpc291XCA7CivpgJrosqggPiB0c3V1a2FcIDsKK+WQjeWIuiA+IG1laXNoaVwgOwor5ZCM5YmNID4gZG91emVuXCA7CivnpLzlhbggPiByZWl0ZW5cIDsKK+WJjeihmyA+IHplbicnZWlcIDsKK+efouetiCA+IHlhaGF6dVwgOwor6YeR5Z2RID4ga2lua291XCA7Civljp/lvaIgPiBnZW5rZWlcIDsKK+W+qeaoqSA+IGZ1a2tlblwgOwor5YmN6KGMID4gemVua291XCA7CivlkI3liIYgPiBtZWlidW5cIDsKK+W9oueKtiA+IGtlaWpvdVwgOwor5YiX6LuKID4gcmVzc2hhXCA7CivlkI3liIAgPiBtZWl0b3VcIDsKK+W7g+iXqSA+IGhhaWhhblwgOwor6YWN5pysID4gaGFpaG9uXCA7Civljprlv5cgPiBrb3VzaGlcIDsKK+iWhOWRsyA+IGhha3VtaVwgOwor56S+5YOnID4gc2hhc291XCA7CivlkIjliaQgPiBnb3V6YWlcIDsKK+WQjOWHpiA+IGRvdXNob1wgOwor5rOV5YW4ID4gaG91dGVuXCA7CivnpL7lgrUgPiBzaGFzYWlcIDsKK+W5tOi8qiA+IG5lbnJpblwgOwor5bm06LypID4gbmVucGFpXCA7Civno4Hlv4MgPiBqaXNoaW5cIDsKK+WIhumBoyA+IGJ1bmtlblwgOwor5Y+L5aW9ID4geXV1a291XCA7Civli6TnlaogPiBraW5iYW5cIDsKK+efs+eikSA+IHNla2loaVwgOwor5ZCI5YiHID4gZ2Fzc2FpXCA7CivpgIDou6IgPiB0YWl0ZW5cIDsKK+ato+e3qCA+IHNlaWhlblwgOwor5Y+N5aSJID4gaGFucGVuXCA7Civlj7HlkqQgPiBzaGl0dGFcIDsKK+WQjOWFmiA+IGRvdXRvdVwgOwor5bm96LajID4geXV1c2h1XCA7CivliqDntaYgPiBrYWt5dXVcIDsKK+WQjeWEqiA+IG1laXl1dVwgOwor5Y6z5bCBID4gZ2VucHV1XCA7CivluK/pm7sgPiB0YWlkZW5cIDsKK+W+i+azlSA+IHJpcHBvdVwgOwor5YeM6ZuyID4gcnlvdXVuXCA7Civlv6vmhJ8gPiBrYWlrYW5cIDsKK+mBuOiAgyA+IHNlbmtvdVwgOwor55+i56iuID4geWFkYW5lXCA7CivmsY7mhJsgPiBoYW4nJ2FpXCA7CivlvLfnm5cgPiBnb3V0b3VcIDsKK+WOs+WvkiA+IGdlbmthblwgOwor6YeP5ZmoID4gcnlvdWtpXCA7CivlkI3lg6cgPiBtZWlzb3VcIDsKK+ato+e1sSA+IHNlaXRvdVwgOwor6YGK6JWpID4geXV1dG91XCA7CivmsbrlrpogPiBrZXR0ZWlcIDsKK+iSuOawkSA+IGpvdW1pblwgOwor5by+55eVID4gZGFua29uXCA7Civph43lmbggPiBqdXV0b25cIDsKK+i/gumXiiA+IHVrYXRzdVwgOwor6YCg6KmjID4gem91a2VpXCA7Civmt6HjgIUgPiB0YW50YW5cIDsKK+WOs+WuiCA+IGdlbnNodVwgOwor5Y+w5ZCNID4gdGFpbWVpXCA7CivljrPlrZggPiBnZW5zb25cIDsKK+ato+ezuyA+IHNlaWtlaVwgOwor6YKq56WeID4gamFzaGluXCA7CivovrrpmawgPiBoZW5zdXVcIDsKK+mAoOiogCA+IHpvdWdlblwgOwor6YCD6LWwID4gdG91c291XCA7CivpgJroqp4gPiB0c3V1Z29cIDsKK+WIhui8iSA+IGJ1bnNhaVwgOwor6YW45oCnID4gc2Fuc2VpXCA7Civnm7jplqIgPiBzb3VrYW5cIDsKK+W+jOautSA+IGtvdWRhblwgOwor56S+5LyaID4gc2hha2FpXCA7CivpgJroqbEgPiB0c3V1d2FcIDsKK+W+qeagoSA+IGZ1a2tvdVwgOwor5ZCM5YCkID4gZG91Y2hpXCA7CivliIfouqsgPiBraXJpbWlcIDsKK+WQm+S4uyA+IGt1bnNodVwgOwor6I2J6Z6LID4gd2FyYWppXCA7Civms5XkvosgPiBob3VyZWlcIDsKK+ays+WOnyA+IGthd2FyYVwgOwor5Yi26KOBID4gc2Vpc2FpXCA7CivljZfmlrkgPiBuYW5wb3VcIDsKK+WMl+a1tyA+IGhva2thaVwgOwor5b+g5oSbID4gY2h1dWFpXCA7Civph5Hlk6EgPiBraW4nJ2luXCA7CivljZjmlocgPiB0YW5idW5cIDsKK+eiuuW6piA+IGtha3Vkb1wgOwor5rCR5pybID4gbWluYm91XCA7CivoloTliKkgPiBoYWt1cmlcIDsKK+ekvuS6pCA+IHNoYWtvdVwgOwor5b6u5pyNID4gYmlmdWt1XCA7CivmsYLmhJsgPiBreXV1YWlcIDsKK+WNmOaVsCA+IHRhbnN1dVwgOwor5b+F5pC6ID4gaGlra2VpXCA7Civph5Hlk4EgPiBraW5waW5cIDsKK+WKo+etiSA+IHJldHRvdVwgOwor55uk6Z2iID4gYmFubWVuXCA7CivljKDmsJcgPiBzaG91a2lcIDsKK+WLleeUoyA+IGRvdXNhblwgOwor5bu257SNID4gZW4nJ25vdVwgOwor56CV54mHID4gc2FpaGVuXCA7CivnnJ/pgIYgPiBtYXNha2FcIDsKK+WQjOS9kyA+IGRvdXRhaVwgOwor5rKz5YyXID4ga2Fob2t1XCA7CivnpL7kuLsgPiBzaGFzaHVcIDsKK+WNl+aUryA+IG5hbnNoaVwgOwor5Y+j5ZC7ID4ga291ZnVuXCA7CivlvL7nkLQgPiBkYW5raW5cIDsKK+W4q+mWgCA+IHNoaW1vblwgOwor5rCX5pepID4ga2liYXlhXCA7Civms5Xku6QgPiBob3VyZWlcIDsKK+aApeWgtCA+IGt5dXViYVwgOwor5ZCM5Ly0ID4gZG91aGFuXCA7CivpgKPooaEgPiByZW5rb3VcIDsKK+WPo+WQnyA+IGtvdWdpblwgOwor6YCj6KGMID4gcmVua291XCA7Civms5XkurogPiBob3VqaW5cIDsKK+WGt+mdmSA+IHJlaXNlaVwgOwor6L+U6YeRID4gaGVua2luXCA7Civlj4LloIIgPiBzYW5kb3VcIDsKK+W/q+W8gSA+IGthaWJlblwgOwor5b+g5oGVID4gY2h1dWpvXCA7Civlj6zli58gPiBzaG91Ym9cIDsKK+WQiOS9tSA+IGdvdWhlaVwgOwor5ZCQ5LmzID4gdG9ueXV1XCA7Civov7fotbAgPiBtZWlzb3VcIDsKK+ato+etlCA+IHNlaXRvdVwgOwor5ZCN5Lq6ID4gbWVpamluXCA7CivlkIjkvZMgPiBnYXR0YWlcIDsKK+iWhOWFiSA+IGhha2tvdVwgOwor6JST5bu2ID4gbWFuJydlblwgOwor5b2T54S2ID4gdG91emVuXCA7Civlj43lmawgPiBoYW56ZWlcIDsKK+WOn+WvuCA+IGdlbnN1blwgOwor5ZCM5LuBID4gZG91amluXCA7CivlkIzkurogPiBkb3VuaW5cIDsKK+WFuOm6lyA+IHRlbnJlaVwgOwor5ZCR5LiKID4ga291am91XCA7Civlt6Ppto8gPiBzdWRvcmlcIDsKK+WNgeacrCA+IGp1cHBvblwgOwor5buD6ImmID4gaGFpa2FuXCA7CivmsZ/lsbEgPiBrb3V6YW5cIDsKK+W6p+iWrCA+IHpheWFrdVwgOwor6JCO57iuID4gaXNodWt1XCA7Civph43lkIggPiBqdXVnb3VcIDsKK+W6g+iogCA+IGtvdWdlblwgOwor5buD6Ii5ID4gaGFpc2VuXCA7Civlu5DogqUgPiBreXV1aGlcIDsKK+WQjOS5lyA+IGRvdWpvdVwgOwor5b+c5oClID4gb3VreXV1XCA7Civph5HljbAgPiBraW4nJ2luXCA7CivpgYroirggPiB5dXVnZWlcIDsKK+aui+eXlSA+IHphbmtvblwgOwor5YmN6JGXID4gemVuY2hvXCA7Civoj5bokrIgPiBzaG91YnVcIDsKK+mHjuWOnyA+IG5vaGFyYVwgOwor5rG65aOKID4ga2Vra2FpXCA7Civljp/lrZAgPiBnZW5zaGlcIDsKK+avm+awiCA+IG1vdXNlblwgOwor5Y2g5ougID4gc2Vua3lvXCA7CivlkIzkuIogPiBkb3Vqb3VcIDsKK+WIpeijvSA+IGJlc3NlaVwgOwor5byK56S+ID4gaGVpc2hhXCA7Civmr5Tms4EgPiBoaWt5b3VcIDsKK+mAj+imliA+IHRvdXNoaVwgOwor5Y2K5pWwID4gaGFuc3V1XCA7CivphpzlpbMgPiBzaHV1am9cIDsKK+WKueebriA+IGtpa2ltZVwgOwor5rCR5pS/ID4gbWluc2VpXCA7Civps7Tnpr0gPiBtZWlraW5cIDsKK+awkeaUviA+IG1pbnBvdVwgOwor6L+R6YO3ID4ga2luZ291XCA7CivphZLmiYsgPiBzYWthdGVcIDsKK+i/lOmChCA+IGhlbmthblwgOwor5byT55+iID4geXVtaXlhXCA7CivliY3oj5wgPiB6ZW5zYWlcIDsKK+WPjeWVjyA+IGhhbm1vblwgOwor5Yem6YGHID4gc2hvZ3V1XCA7Civlv4PmioAgPiBzaGluZ2lcIDsKK+i/kemDiiA+IGtpbmtvdVwgOwor6JaE5YCWID4gaGFra291XCA7CivliJ3oposgPiBzaG9rZW5cIDsKK+asoOiIqiA+IGtla2tvdVwgOwor55uX6Zu7ID4gdG91ZGVuXCA7Civlt6jpr6ggPiBreW9nZWlcIDsKK+ayg+WcnyA+IHlva3Vkb1wgOwor5be76aaWID4ga2Fuc2h1XCA7Civlh7rotrMgPiBkZWFzaGlcIDsKK+aui+eUnyA+IHphbnNlaVwgOwor5YyX5qynID4gaG9rdW91XCA7Civnm5fpm6MgPiB0b3VuYW5cIDsKK+WKoOemhCA+IGthcm9rdVwgOwor5Y+35L+4ID4gZ291aG91XCA7Civmrbvnm7ggPiBzaGlzb3VcIDsKK+WNseaApSA+IGtpa3l1dVwgOwor5Ymb6IeGID4gZ291b2t1XCA7CivlvL7niYcgPiBkYW5wZW5cIDsKK+ecjOmBkyA+IGtlbmRvdVwgOwor5Y2z5b+cID4gc29rdW91XCA7CivmrabnpZ4gPiBidXNoaW5cIDsKK+i/lOmAgSA+IGhlbnNvdVwgOwor5b6p5pS5ID4gZnVra2FpXCA7Civph5HliZsgPiBrb25nb3VcIDsKK+W5o+iyoiA+IGhlaWtvdVwgOwor6YWN5omAID4gaGFpc2hvXCA7CivljbXlvaIgPiByYW5rZWlcIDsKK+mHkeWIuCA+IGtpbmtlblwgOwor6YWU5oWLID4gc3VpdGFpXCA7CivlubvoppYgPiBnZW5zaGlcIDsKK+W3qOmtgSA+IGt5b2thaVwgOwor6JWD5ZywID4gYmFuY2hpXCA7CivljYHmlbAgPiBqdXVzdXVcIDsKK+axveWcpyA+IGtpYXRzdVwgOwor5Yeh6YCAID4gYm9udGFpXCA7CivpgZTogIUgPiB0YXNzaGFcIDsKK+W+k+adpSA+IGp1dXJhaVwgOwor6YG4566hID4gc2Vua2FuXCA7CivliIborbIgPiBidW5qb3VcIDsKK+WPuOS8miA+IHNoaWthaVwgOwor5b6h5paZID4gZ29yeW91XCA7Civlhobpq5ggPiBlbmRha2FcIDsKK+i/kei+uiA+IGtpbnBlblwgOwor5Y6f5aeLID4gZ2Vuc2hpXCA7Civlj6PlhoUgPiBrb3VuYWlcIDsKK+WHuuiyuyA+IHNodXBwaVwgOwor6YeR5YagID4ga2lua2FuXCA7CivljbDlvaIgPiBpbmd5b3VcIDsKK+WPuOS7pCA+IHNoaXJlaVwgOwor6YeN5YiRID4ganV1a2VpXCA7Civov73oqLQgPiB0c3Vpc29cIDsKK+WPt+S7pCA+IGdvdXJlaVwgOwor5Yqg56GrID4ga2FyeXV1XCA7CivliZvog4YgPiBnb3V0YW5cIDsKK+mHkeWFtyA+IGthbmFndVwgOwor5Y+O5Y+XID4gc2h1dWp1XCA7CivphY3mha4gPiBoYWlyeW9cIDsKK+i/t+irliA+IG1laXJvblwgOwor5q+O5q+OID4gbWFpbWFpXCA7Civov73oqJggPiB0c3Vpa2lcIDsKK+edoeiTriA+IHN1aXJlblwgOwor5b+D5oSPID4gc2hpbicnaVwgOwor5Ymy57eaID4ga2Fzc2VuXCA7CivliIfoq4wgPiBzZWtrYW5cIDsKK+W/mOW5tCA+IGJvdW5lblwgOwor5Y2z5bqnID4gc29rdXphXCA7Civlt7vpoK0gPiBrYW50b3VcIDsKK+WKueeUqCA+IGtvdXlvdVwgOwor5Yqr55uXID4gZ291dG91XCA7CivokrLmn7MgPiBob3J5dXVcIDsKK+aBkuS+iyA+IGtvdXJlaVwgOwor5Y+y5LydID4gc2hpZGVuXCA7Civlv43lvpMgPiBuaW5qdXVcIDsKK+mFt+WvkiA+IGtva2thblwgOwor5biC6Zu7ID4gc2hpZGVuXCA7Civli4fnjJsgPiB5dXVtb3VcIDsKK+avrOaenCA+IGt5dXVrYVwgOwor6I236LazID4gbmlhc2hpXCA7CivluLjpgZMgPiBqb3Vkb3VcIDsKK+WIhuipniA+IGJ1bnNoaVwgOwor5rK75LmxID4gY2hpcmFuXCA7CivljbXlt6MgPiByYW5zb3VcIDsKK+atu+eUoyA+IHNoaXphblwgOwor5q2755SfID4gc2hpc2VpXCA7CivljZrmhJsgPiBoYWt1YWlcIDsKK+W4uOmAoyA+IGpvdXJlblwgOwor5YaS6aCtID4gYm91dG91XCA7CivmgKflkJEgPiBzZWlrb3VcIDsKK+W4sOmDtyA+IGtpa3lvdVwgOwor5rC05bmzID4gc3VpaGVpXCA7CivmsrvkuJYgPiBjaGlzZWlcIDsKK+W8leeUqCA+IGluJyd5b3VcIDsKK+murum6lyA+IHNlbnJlaVwgOwor55uu6YeYID4gbWVrdWdpXCA7Civlj43li5UgPiBoYW5kb3VcIDsKK+WJjeiFlSA+IG1hZXVkZVwgOwor5Y+y5LmXID4gc2hpam91XCA7CivliIbop6MgPiBidW5rYWlcIDsKK+WPguWQkSA+IHNhbmtvdVwgOwor5Y+z5LiKID4gbWlnaXVlXCA7CivpgaPnsbMgPiBrZW5iZWlcIDsKK+WPpOS/lyA+IGtvem9rdVwgOwor5b6M5pmvID4ga291a2VpXCA7Civlj7LkuIogPiBzaGlqb3VcIDsKK+WOluWkpyA+IGJvdWRhaVwgOwor6YCA6KGMID4gdGFpa291XCA7Civlj6/kuZ8gPiBrYW5hcmlcIDsKK+W5s+ihoSA+IGhlaWtvdVwgOwor5bqn6IiIID4gemFreW91XCA7CivmraPnnLwgPiBzZWlnYW5cIDsKK+W5s+ihjCA+IGhlaWtvdVwgOwor5b6F5pybID4gdGFpYm91XCA7Civno4Hlo4EgPiBqaWhla2lcIDsKK+W3rumhjSA+IHNhZ2FrdVwgOwor5q6L54mHID4gemFucGVuXCA7Civlj6XkvZwgPiBrdXNha3VcIDsKK+W+jOaYhiA+IGtvdWtvblwgOwor5q2j55uuID4gbWFzYW1lXCA7Civnn6LnjokgPiB5YWRhbWFcIDsKK+WNgeaMhyA+IGp1c3NoaVwgOwor5Y2Y5oCnID4gdGFuc2VpXCA7Civljp/lnosgPiBnZW5rZWlcIDsKK+avm+aguSA+IG1vdWtvblwgOwor5biC6ZaAID4gc2hpbW9uXCA7CivokrjmlaMgPiBqb3VzYW5cIDsKK+W+jOaWuSA+IGtvdWhvdVwgOwor6YWN5b2TID4gaGFpdG91XCA7CivliqDnmYIgPiBrYXJ5b3VcIDsKK+W+i+aXiyA+IHJpc3NlblwgOwor5Y+j5LydID4ga291ZGVuXCA7CivphZLlupcgPiBzaHV0ZW5cIDsKK+W4q+mBkyA+IHNoaWRvdVwgOwor5bqV6I23ID4gc29rb25pXCA7CivliIrooYwgPiBrYW5rb3VcIDsKK+WHuuiotCA+IHNodXNzb1wgOwor5Y2a5b6SID4gYmFrdXRvXCA7Civlu4Pnt5ogPiBoYWlzZW5cIDsKK+eggua8oCA+IHNhYmFrdVwgOwor5oCl5YufID4ga3l1dWJvXCA7CivlvLHngasgPiB5b3dhYmlcIDsKK+WJjeiAhSA+IHplbnNoYVwgOwor5oCl5YuZID4ga3l1dW11XCA7Civlt6jpoK0gPiBreW90b3VcIDsKK+iRieeJqSA+IGhhbW9ub1wgOwor5YiG6KKCID4gYnVuYmVpXCA7CivlhobpoIIgPiBlbmNob3VcIDsKK+awl+aBryA+IGtpc29rdVwgOwor5b6M5pS7ID4ga291a291XCA7Civps6nnm64gPiBoYXRvbWVcIDsKK+mHjeS9kyA+IGp1dXRhaVwgOwor5Y6z5ZG9ID4gZ2VubWVpXCA7CivlhpLpmbogPiBib3VrZW5cIDsKK+WOn+WboCA+IGdlbicnaW5cIDsKK+WGhemghSA+IG5haWtvdVwgOwor5YmN57+FID4gemVuc2hpXCA7Civluqbog7ggPiBkb2t5b3VcIDsKK+eci+iyqyA+IGthbmthblwgOwor5Y2R5oCvID4gaGlreW91XCA7CivljZrlvJUgPiBoYWt1aW5cIDsKK+apn+mVtyA+IGtpY2hvdVwgOwor5Ymy56ymID4gd2FyaWZ1XCA7CivmsJfmgKcgPiBraXNob3VcIDsKK+WNgeaIkiA+IGppa2thaVwgOwor5Y+L5YWaID4geXV1dG91XCA7Civlj5fkv6EgPiBqdXNoaW5cIDsKK+ebrumAlCA+IG1va3V0b1wgOwor6L6y6YGTID4gbm91ZG91XCA7Civnn7PngbAgPiBzZWtrYWlcIDsKK+awkeaDhSA+IG1pbmpvdVwgOwor5Y6a5ZywID4gYXRzdWppXCA7Civph43ku7sgPiBqdXVuaW5cIDsKK+i/juizkyA+IGdlaWhpblwgOwor5Y6z5ZCbID4gZ2Vua3VuXCA7CivliY3nva4gPiB6ZW5jaGlcIDsKK+mHjeS7oyA+IGp1dWRhaVwgOwor5YiX6JepID4gcmVwcGFuXCA7Civps6Xnm64gPiB0b3JpbWVcIDsKK+WNmOW8gSA+IHRhbmJlblwgOwor5q615q61ID4gZGFuZGFuXCA7CivmsLTlsYsgPiBtaXp1eWFcIDsKK+W+gOaYlCA+IG91c2VraVwgOwor6YeR5Li7ID4ga2luc2h1XCA7CivnoLTmoLwgPiBoYWtha3VcIDsKK+WNg+aFriA+IHNlbnJ5b1wgOwor5Y675YuiID4ga3lvc2VpXCA7Civlj6PkuIogPiBrb3Vqb3VcIDsKK+W9k+atsyA+IHRvdXNhaVwgOwor55qu6Z2pID4gaGlrYWt1XCA7CivlhoXpnaIgPiBuYWltZW5cIDsKK+W3t+mWkyA+IGtvdWthblwgOwor5Ya36YWSID4gcmVpc2h1XCA7CivljbXlrZAgPiByYW5zaGlcIDsKK+aAquWFiSA+IGthaWtvdVwgOwor5YW86aGMID4ga2VuZGFpXCA7CivmqoDpgqMgPiBkYW4nJ25hXCA7Civph47kuK0gPiBub25ha2FcIDsKK+mAoOiIuSA+IHpvdXNlblwgOwor5Y+C5YaFID4gc2FuZGFpXCA7CivmsLTlrrMgPiBzdWlnYWlcIDsKK+W+ueW6lSA+IHRldHRlaVwgOwor5rCX5byxID4ga2l5b3dhXCA7Civlj5vkubEgPiBoYW5yYW5cIDsKK+W+oeaFtiA+IGd5b2tlaVwgOwor55yM6K2mID4ga2Vua2VpXCA7CivluJ3pgZMgPiB0ZWlkb3VcIDsKK+WIpeiNmCA+IGJlc3NvdVwgOwor56KB5bitID4gZ29zZWtpXCA7CivliJ3okYkgPiBzaG95b3VcIDsKK+W9vOaWuSA+IGthbmF0YVwgOwor55uf6YKmID4gbWVpaG91XCA7Civlv6vloLEgPiBrYWlob3VcIDsKK+WOreWOrSA+IGl5YWl5YVwgOwor5rC05a2QID4gbWl6dWdvXCA7Civlho3plosgPiBzYWlrYWlcIDsKK+mBoOensCA+IGVuc2hvdVwgOwor5YyX5pa5ID4gaG9wcG91XCA7CivlhoXpmaMgPiBuYWlqaW5cIDsKK+WNiuW+hCA+IGhhbmtlaVwgOwor6JGb5rmvID4ga3V6dXl1XCA7Civprq7prZogPiBzZW5neW9cIDsKK+WGt+mBhyA+IHJlaWd1dVwgOwor5Y2K5b2xID4gaGFuJydlaVwgOwor5Y+N5L6LID4gaGFucmVpXCA7Civlt6Ppm5sgPiBzdWhpbmFcIDsKK+W+ruW8sSA+IGJpamFrdVwgOwor6YO35p2RID4gZ291c29uXCA7CivnoazmgKcgPiBrb3VzZWlcIDsKK+mFkuWxiyA+IHNha2F5YVwgOwor5YWs6aSoID4ga291a2FuXCA7CivliY3nt6ggPiB6ZW5wZW5cIDsKK+mAgOiUtSA+IHRhaXpvdVwgOwor5Yed6K2wID4gZ3lvdWdpXCA7CivliY3nt5ogPiB6ZW5zZW5cIDsKK+atr+eKtiA+IHNoaWpvdVwgOwor5bed6Z2iID4ga2F3YW1vXCA7Civljp/lk4EgPiBnZW5waW5cIDsKK+W8leeFpyA+IGluc2hvdVwgOwor5Y2g5bGFID4gc2Vua3lvXCA7CivlhajppKggPiB6ZW5rYW5cIDsKK+WOs+WIkSA+IGdlbmtlaVwgOwor6L+R6KmgID4ga2luJydlaVwgOwor6JKZ5pinID4gbW91bWFpXCA7Civmrovmu5MgPiB6YW5zaGlcIDsKK+aymeS4mCA+IHNha3l1dVwgOwor5q2754K5ID4gc2hpdGVuXCA7Civnm7josowgPiBzb3Vib3VcIDsKK+mAgeiRrCA+IHNvdXNvdVwgOwor55m96a2UID4gaGFrdW1hXCA7CivljZzlsYUgPiBib2treW9cIDsKK+eijeWtkCA+IGdhaXNoaVwgOwor5q+O5pmpID4gbWFpYmFuXCA7CivljrPlhqwgPiBnZW50b3VcIDsKK+atu+eBsCA+IHNoaWthaVwgOwor5Y+L5Lq6ID4geXV1amluXCA7Civnm4rph5EgPiBla2lraW5cIDsKK+WKtOeBvSA+IHJvdXNhaVwgOwor5Y+N5LmxID4gaGFucmFuXCA7CivljZflsrggPiBuYW5nYW5cIDsKK+edgOiNtyA+IGNoYWtrYVwgOwor5Y+L5LqkID4geXV1a291XCA7Civokabmr5sgPiBhc2hpZ2VcIDsKK+asoeesrCA+IHNoaWRhaVwgOwor5Y6a5ZGzID4gYXRzdW1pXCA7CivlhbXpm6MgPiBoZWluYW5cIDsKK+WNs+WknCA+IHNva3V5YVwgOwor5b2i5pyoID4ga2F0YWdpXCA7CivluKvos4cgPiBzaGlzaGlcIDsKK+WNl+WxsSA+IG5hbnphblwgOwor5b+X5aOrID4gc2hpc2hpXCA7CivnnIvoppYgPiBrYW5zaGlcIDsKK+i/keimliA+IGtpbnNoaVwgOwor5beM6aCtID4gZ2FudG91XCA7CivojLbpgZMgPiBjaGFkb3VcIDsKK+asoeeroCA+IGppc2hvdVwgOwor5YW36ZmzID4gZ3VjaGluXCA7CivmgKrkurogPiBrYWlqaW5cIDsKK+eZu+mrmCA+IHRvdWtvdVwgOwor55uk6LieID4gYmFua3lvXCA7CivlhbXpmoogPiBoZWl0YWlcIDsKK+mAo+e9siA+IHJlbnNob1wgOwor5q2j54qvID4gc2VpaGFuXCA7CivljZjlsIQgPiB0YW5zaGFcIDsKK+WPguS8miA+IHNhbmthaVwgOwor5YqH55S7ID4gZ2VraWdhXCA7Civlhajpn7MgPiB6ZW4nJ29uXCA7CivljbXloZQgPiByYW50b3VcIDsKK+WFmummliA+IHRvdXNodVwgOwor6YGO56ewID4ga2FzaG91XCA7CivmgKfkuqQgPiBzZWlrb3VcIDsKK+WNgeW5siA+IGppa2thblwgOwor6Iux6aCYID4gZWlyeW91XCA7CivljZHlsawgPiBoaXpva3VcIDsKK+W3qOmQmCA+IG9vZ2FuZVwgOwor5qiq6aCYID4gb3VyeW91XCA7CivljZHlsZ4gPiBoaXpva3VcIDsKK+efs+ayuSA+IHNla2l5dVwgOwor5bu754q2ID4ga2Fpam91XCA7CivliY3nr4cgPiB6ZW5wZW5cIDsKK+mBlOejqCA+IGRhcnVtYVwgOwor5Y6f5YuVID4gZ2VuZG91XCA7CivljZflrosgPiBuYW5zb3VcIDsKK+WFrOmbuyA+IGtvdWRlblwgOwor5byx5rCXID4geW93YWtpXCA7CivlhajpnaIgPiB6ZW5tZW5cIDsKK+W+oeW5uCA+IG1peXVraVwgOwor5b6Y5b6KID4gaGFpa2FpXCA7Civpg7XmlL8gPiB5dXVzZWlcIDsKK+WNiuWztiA+IGhhbnRvdVwgOwor5Y2R5bCPID4gaGlzaG91XCA7Civnmb3ppqwgPiBoYWt1YmFcIDsKK+ebuOirhyA+IHNvdWRhblwgOwor5qyd56mNID4gdXNzZWtpXCA7CivlvoHmiKYgPiBzZWlzZW5cIDsKK+WJsuebriA+IHdhcmVtZVwgOwor6I+M57O4ID4ga2luc2hpXCA7CivlhajpnIogPiB6ZW5yZWlcIDsKK+W+jOaCoyA+IGtvdWthblwgOwor5biC6YGTID4gc2hpZG91XCA7CivpgKPnuYsgPiByZW5rZWlcIDsKK+W9k+advyA+IGF0ZWl0YVwgOwor5Y+C5LiOID4gc2FuJyd5b1wgOwor5b6M5oKUID4ga291a2FpXCA7Civlj4LkuIogPiBzYW5qb3VcIDsKK+ayiOS4iyA+IGNoaW5rYVwgOwor55yf6JavID4gc2hpbmpvXCA7Civlh73ok4sgPiBrYW5nYWlcIDsKK+WOn+WInSA+IGdlbnNob1wgOwor5YmN56uvID4gemVudGFuXCA7Civlv6vlk4kgPiBrYWlzYWlcIDsKK+awl+WtpiA+IGtpZ2FrdVwgOwor5rC05Z+fID4gc3VpaWtpXCA7Civlvq7lsJEgPiBiaXNob3VcIDsKK+W+ruWwjyA+IGJpc2hvdVwgOwor5YWo6ZqKID4gemVudGFpXCA7CivpgIHoh7QgPiBzb3VjaGlcIDsKK+mAo+e2vyA+IHJlbm1lblwgOwor5Ym155eVID4gc291a29uXCA7CivmrLLnm64gPiB5b2t1bWVcIDsKK+W+l+W6piA+IHRva3Vkb1wgOwor5b6T5byfID4ganV1dGVpXCA7Civpg6jml48gPiBidXpva3VcIDsKK+iVg+S6uiA+IGJhbmppblwgOwor6I+c56iuID4gbmF0YW5lXCA7Civnm7ToqLQgPiBqaWtpc29cIDsKK+WOn+WFuCA+IGdlbnRlblwgOwor5YWs6ZaLID4ga291a2FpXCA7CivpsZfojI4gPiByaW5rZWlcIDsKK+WFpemZoiA+IG55dXVpblwgOwor55+t5q+bID4gdGFubW91XCA7CivlubvogqIgPiBnZW5zaGlcIDsKK+iNkuiqlSA+IGtvdXRhblwgOwor5Yid6ICBID4gc2hvcm91XCA7CivphbflkI8gPiBrb2t1cmlcIDsKK+mAo+e0ryA+IHJlbnJ1aVwgOwor5q275rW3ID4gc2hpa2FpXCA7CivolYPkuLsgPiBiYW5zaHVcIDsKK+W4q+iokyA+IHNoaWt1blwgOwor5qip6ZmQID4ga2VuZ2VuXCA7Civli5jmpJwgPiBrYW5rZW5cIDsKK+mBuueJqSA+IGlidXRzdVwgOwor5YeG6KixID4ganVua3lvXCA7CivphZLloLQgPiBzYWthYmFcIDsKK+WFqOmWiyA+IHplbmthaVwgOwor5q6J5q27ID4ganVuc2hpXCA7Civljp/lg48gPiBnZW56b3VcIDsKK+W7tueEvCA+IGVuc2hvdVwgOwor55uu6KixID4gbWVtb3RvXCA7CivmsLTlmqIgPiBzdWlub3VcIDsKK+W9k+aWuSA+IHRvdWhvdVwgOwor5Ye66I23ID4gc2h1a2thXCA7CivnnJ/oj7AgPiBtYWtvbW9cIDsKK+WFg+mmliA+IGdlbnNodVwgOwor5Y2X5aSpID4gbmFudGVuXCA7Civnm67op5IgPiBtZWthZG9cIDsKK+WGjemBuCA+IHNhaXNlblwgOwor5buD55ukID4gaGFpYmFuXCA7CivnoavlrokgPiByeXV1YW5cIDsKK+apn+i7uCA+IGtpamlrdVwgOwor5Yui5pybID4gc2VpYm91XCA7CivmqKnploAgPiBrZW5tb25cIDsKK+mKmOOAhSA+IG1laW1laVwgOwor5YuY5qGIID4ga2FuJydhblwgOwor5b6M5bm0ID4ga291bmVuXCA7CivljLvlsYAgPiBpa3lva3VcIDsKK+WGjemBiiA+IHNhaXl1dVwgOwor56Cy5omLID4gaG91c2h1XCA7Civnmb3pnLIgPiBoYWt1cm9cIDsKK+iKsemzpSA+IGthY2hvdVwgOwor6L+96IKlID4gdHN1aWhpXCA7Civli5jmoKEgPiBrYW5rb3VcIDsKK+W/teWGmSA+IG5lbnNoYVwgOwor55+l5q2vID4gY2hpc2hpXCA7CivluIbotbAgPiBoYW5zb3VcIDsKK+W+gOW+qSA+IG91ZnVrdVwgOwor55+z5qa0ID4gemFrdXJvXCA7Civnmb3pm7IgPiBoYWt1dW5cIDsKK+WGjemAgSA+IHNhaXNvdVwgOwor5YWJ6aCtID4ga291dG91XCA7CivlvovluKsgPiByaXNzaGlcIDsKK+aEiOOAhSA+IGl5b2l5b1wgOwor5YW16YuSID4gaGVpaG91XCA7Civlh7roirEgPiBkZWJhbmFcIDsKK+atqea4rCA+IGhvc29rdVwgOwor5YWI6aCtID4gc2VudG91XCA7CivluoPnuIEgPiBoaXJvZW5cIDsKK+a1quOAhSA+IHJvdXJvdVwgOwor5Yqb5ryUID4gcmlraWVuXCA7CivpgqrmrLIgPiBqYXlva3VcIDsKK+W/g+WcnyA+IHNoaW5kb1wgOwor5b6u5aaZID4gYmlteW91XCA7CivlvoTluq0gPiBrZWl0ZWlcIDsKK+WIpee0mSA+IGJlc3NoaVwgOwor5b+c5Y+sID4gb3VzaG91XCA7Civlh7roiLkgPiBkZWZ1bmVcIDsKK+mFt+WIkSA+IGtva2tlaVwgOwor5b+r5YiAID4ga2FpdG91XCA7Civnn7Pmo7ogPiBzZWtrYW5cIDsKK+WFiOmerSA+IHNlbmJlblwgOwor5ben6YGFID4ga291Y2hpXCA7CivluqfnpIEgPiB6YXNob3VcIDsKK+mBuOeCrSA+IHNlbnRhblwgOwor5byB5riIID4gYmVuc2FpXCA7CivljYrlpKkgPiBoYW50ZW5cIDsKK+W/l+WQkSA+IHNoaWtvdVwgOwor55uj6KaWID4ga2Fuc2hpXCA7Civlh7roh40gPiBkZWJlc29cIDsKK+W9t+W+qCA+IGhvdWtvdVwgOwor5Y2K5aScID4gaGFuJyd5YVwgOwor5Yi256m6ID4gc2Vpa3V1XCA7Civljp/kurogPiBnZW5qaW5cIDsKK+WGjei7oiA+IHNhaXRlblwgOwor5b2i5oiQID4ga2Vpc2VpXCA7CivluILosqkgPiBzaGloYW5cIDsKK+W3numDvSA+IHNodXV0b1wgOwor5YWJ6Zu7ID4ga291ZGVuXCA7CivnoZ3lrokgPiBzaG91YW5cIDsKK+WInee1jCA+IHNob2tlaVwgOwor5Y2K5aOKID4gaGFua2FpXCA7CivlvJTmrYwgPiBjaG91a2FcIDsKK+i/keiRlyA+IGtpbmNob1wgOwor6JC95qy+ID4gcmFra2FuXCA7CivliIfnvr0gPiBraXJpaGFcIDsKK+ehneWtkCA+IGdhcmFzdVwgOwor5bm557eaID4ga2Fuc2VuXCA7Civpg73lv4MgPiB0b3NoaW5cIDsKK+eiuuS/nSA+IGtha3Vob1wgOwor5q2z5q2zID4gc2Fpc2FpXCA7CivlhYXpm7sgPiBqdXVkZW5cIDsKK+axoOS6rSA+IGNoaXRlaVwgOwor5YaF6LyqID4gdWNoaXdhXCA7CivpgYvnlKggPiB1bicneW91XCA7Civnm5voprMgPiBzZWlrYW5cIDsKK+WNg+WknCA+IHNlbicneWFcIDsKK+W6j+eroCA+IGpvc2hvdVwgOwor5Yi256amID4gc2VpZ3lvXCA7CivliIbnvbIgPiBidW5zaG9cIDsKK+W9ouaFiyA+IGtlaXRhaVwgOwor56Gs5aSJID4ga291aGVuXCA7CivlhYjpmaMgPiBzZW5qaW5cIDsKK+awl+WcpyA+IGtpYXRzdVwgOwor5YWs6YeRID4ga291a2luXCA7Civps6XmuKEgPiBjaG90dG9cIDsKK+mBheeVqiA+IG9zb2JhblwgOwor5Yqb5rOzID4gcmlraWVpXCA7CivmraPmsrkgPiBzaG91eXVcIDsKK+WNsOWMoyA+IGluYmFrb1wgOwor5Y2z5Yq5ID4gc29ra291XCA7CivojbfoiLkgPiBuaWJ1bmVcIDsKK+W6g+evhCA+IGtvdWhhblwgOwor55+z5pyoID4gaXNoaWtpXCA7CivmsZ/kuIogPiBrb3Vqb3VcIDsKK+WNs+WKnyA+IHNva2tvdVwgOwor56Kp5YSSID4gc2VraWp1XCA7CivokZfmm7ggPiBjaG9zaG9cIDsKK+W3nei+uiA+IGthd2FiZVwgOwor6bOp5rS+ID4gaGF0b2hhXCA7Civmr43lvqEgPiBoYWhhZ29cIDsKK+mEreWjsCA+IHRlaXNlaVwgOwor56Cy5by+ID4gaG91ZGFuXCA7CivlvZPmiYAgPiB0b3VzaG9cIDsKK+ebm+ijhSA+IHNlaXNvdVwgOwor6Iqz6aaZID4gaG91a291XCA7Civlv6vkvr8gPiBrYWliZW5cIDsKK+awtOWLoiA+IHN1aXNlaVwgOwor6YO95bqBID4gdG9jaG91XCA7Civlha3pg6ggPiByb2t1YnVcIDsKK+atouawtCA+IHNoaXN1aVwgOwor6a6u6YutID4gc2VuJydlaVwgOwor6YWS5ZCNID4gc2h1bWVpXCA7Civnm5voobAgPiBzZWlzdWlcIDsKK+awkeWboyA+IG1pbmRhblwgOwor6Iq46aKoID4gZ2VpZnV1XCA7CivlvKbmnZAgPiBnZW56YWlcIDsKK+WIneetiSA+IHNob3RvdVwgOwor5YWs6YK4ID4ga291dGVpXCA7CivljbDliLsgPiBpbmtva3VcIDsKK+WJsueDuSA+IGthcHBvdVwgOwor6JOu5Y+wID4gcmVuZGFpXCA7CivmraPmrr8gPiBzZWlkZW5cIDsKK+WGoOipniA+IGthbnNoaVwgOwor5YaN6LKpID4gc2FpaGFuXCA7CivliIfnt5ogPiBzZXNzZW5cIDsKK+WJo+eKtiA+IGtlbmpvdVwgOwor5Y215YaGID4gcmFuJydlblwgOwor6YW35Ly8ID4ga29rdWppXCA7CivliKXnqK4gPiBiZXNzaHVcIDsKK+edpeedqCA+IGhlaWdlaVwgOwor6JGJ5p+EID4geW91aGVpXCA7CivokZfmmI4gPiBjaG9tZWlcIDsKK+W+k+WniSA+IGp1dXNoaVwgOwor5q665oSPID4gc2F0c3VpXCA7Civovp7ooaggPiBqaWh5b3VcIDsKK+WFrOmBuCA+IGtvdXNlblwgOwor5b6T5aa5ID4ganV1bWFpXCA7CivliKnnpo8gPiByaWZ1a3VcIDsKK+WNoOWPliA+IHNlbnNodVwgOwor5q2v5qe9ID4gc2hpc291XCA7CivnnJ/nvqkgPiBzaGluZ2lcIDsKK+avjuW5tCA+IG1haW5lblwgOwor5q6L5pqRID4gemFuc2hvXCA7CivlhazpgZMgPiBrb3Vkb3VcIDsKK+ato+atoyA+IHNlaXNlaVwgOwor5bmz57GzID4gaGVpYmVpXCA7CivphY3lkIggPiBoYWlnb3VcIDsKK+awtOWIhiA+IHN1aWJ1blwgOwor55yf576OID4gc2hpbmJpXCA7CivluYToiI4gPiBha3VzaGFcIDsKK+mtmumxlyA+IGd5b3JpblwgOwor55+i5p+EID4geWFnYXJhXCA7CivlhaXpg6ggPiBueXV1YnVcIDsKK+efs+aWpyA+IHNla2lmdVwgOwor5YaX6KuHID4gam91ZGFuXCA7CivmsLTlhrcgPiBzdWlyZWlcIDsKK+WFtei7iiA+IGhlaXNoYVwgOwor55+u5pifID4gd2Fpc2VpXCA7CivokrzlpKkgPiBzb3V0ZW5cIDsKK+WFqOmBkyA+IHplbmRvdVwgOwor5bm856ulID4geW91ZG91XCA7CivovZ/ovZ8gPiBnb3Vnb3VcIDsKK+edoeecoCA+IHN1aW1pblwgOwor5beo6LOHID4ga3lvc2hpXCA7CivokYnmm7ggPiBoYWdha2lcIDsKK+WFrOi+uiA+IGtvdWhlblwgOwor5YyF5bivID4gaG91dGFpXCA7CivljoTku4sgPiB5YWtrYWlcIDsKK+awkeWWtiA+IG1pbicnZWlcIDsKK+WLh+aWrSA+IHl1dWRhblwgOwor5YuV5o+6ID4gZG91eW91XCA7Civmrr/lvqEgPiB0b25vZ29cIDsKK+awtOWFtSA+IHN1aWhlaVwgOwor5Y2B5ZueID4ganVra2FpXCA7CivljYHlm5sgPiBqdXV5b25cIDsKK+W3qOiyoSA+IGt5b3phaVwgOwor5Y2U5ZKMID4ga3lvdXdhXCA7Civlub3nqpMgPiB5dXVzb3VcIDsKK+W3nei3ryA+IGthd2FqaVwgOwor5be36KuHID4ga291ZGFuXCA7Civnm67ok4sgPiBtYWJ1dGFcIDsKK+WLh+aVoiA+IHl1dWthblwgOwor5beo6LGhID4ga3lvem91XCA7CivmqKnpgZMgPiBrZW5kb3VcIDsKK+WGl+iogCA+IGpvdWdlblwgOwor55+t5paHID4gdGFuYnVuXCA7CivmrKDniYcgPiBrYWtlcmFcIDsKK+mAo+ebnyA+IHJlbm1laVwgOwor5bm856iaID4geW91Y2hpXCA7CivlvozlpKkgPiBrb3V0ZW5cIDsKK+WFt+i2syA+IGd1c29rdVwgOwor6bGX57KJID4gcmlucHVuXCA7CivljJblraYgPiBrYWdha3VcIDsKK+mBteazlSA+IGp1bnBvdVwgOwor55m96YeRID4gaGFra2luXCA7Civlhazou6IgPiBrb3V0ZW5cIDsKK+mBqea4qSA+IHRla2lvblwgOwor5Y2X5Y2KID4gbmFuaGFuXCA7CivpgLjnkIMgPiBpa2t5dXVcIDsKK+mFjeWJpCA+IGhhaXphaVwgOwor55qH6YGTID4ga291ZG91XCA7Civmra/moLkgPiBzaGlrb25cIDsKK+WNkuWOuyA+IHNva2t5b1wgOwor5YaN6KqVID4gc2FpdGFuXCA7CivlhYjpi60gPiBzZW4nJ2VpXCA7CivpgbjmsJEgPiBzZW5taW5cIDsKK+W4guihlyA+IHNoaWdhaVwgOwor5bWp6auYID4gc3V1a291XCA7CivlhYjpi5IgPiBzZW5wb3VcIDsKK+ecn+e2vyA+IG1hd2F0YVwgOwor5qyj54S2ID4ga2luemVuXCA7CivlvozlobUgPiBrb3VqaW5cIDsKK+WFqOi7jSA+IHplbmd1blwgOwor6YCB56i/ID4gc291a291XCA7CivlhrfolLUgPiByZWl6b3VcIDsKK+mFjeWIhiA+IGhhaWJ1blwgOwor5b6p5ZOhID4gZnVrdWluXCA7Civlh7rntI0gPiBzdWl0b3VcIDsKK+WHpue9riA+IHNob2NoaVwgOwor5b6Y5ZueID4gaGFpa2FpXCA7Civov7fnrZQgPiBtZWl0b3VcIDsKK+eZuumFtSA+IGhha2tvdVwgOwor5YaN6KiqID4gc2FpaG91XCA7CivlvozloLEgPiBrb3Vob3VcIDsKK+iNieiRiSA+IGt1c2FiYVwgOwor5b2p5bGkID4gc2Fpc291XCA7CivlubTnqI4gPiBuZW56ZWlcIDsKK+WGjeiogiA+IHNhaXRlaVwgOwor6Iub6YW3ID4ga2Frb2t1XCA7CivlvLfmiZMgPiBreW91ZGFcIDsKK+mCquaVmSA+IGpha3lvdVwgOwor55+i5paHID4geWFidW1pXCA7CivlhoXoq4cgPiBuYWlkYW5cIDsKK+awj+WQjSA+IHNoaW1laVwgOwor5YW36LGhID4gZ3VzaG91XCA7CivnnJ/ntIUgPiBzaGlua3VcIDsKK+WNk+WKuSA+IHRha2tvdVwgOwor6Imm6b2iID4ga2FucmVpXCA7Civli6TmgKAgPiBraW50YWlcIDsKK+WNs+S7iiA+IHNva2tvblwgOwor6YCj55WqID4gcmVuYmFuXCA7CivlvrTli58gPiBjaG91Ym9cIDsKK+mCpuaWhyA+IGhvdWJ1blwgOwor5b2T5bqXID4gdG91dGVuXCA7CivmrKDngrkgPiBrZXR0ZW5cIDsKK+W8iuadkSA+IGhlaXNvblwgOwor5b2T5bm0ID4gdG91bmVuXCA7CivlubTnpa0gPiBuZW5zYWlcIDsKK+W9vOWlsyA+IGthbm9qb1wgOwor5q275paRID4gc2hpaGFuXCA7CivojbfnuIQgPiBuaW5hd2FcIDsKK+atu+aWhyA+IHNoaWJ1blwgOwor6I2P6IuSID4gamluemVuXCA7CivmrbPmmakgPiBzYWliYW5cIDsKK+WMheWuuSA+IGhvdXlvdVwgOwor6L6y6Iq4ID4gbm91Z2VpXCA7CivlubTnpLwgPiBuZW5yZWlcIDsKK+W8lOaXlyA+IGNob3VraVwgOwor6YCA56S+ID4gdGFpc2hhXCA7CivljYrljYogPiBoYW5oYW5cIDsKK+WIpeebgyA+IGJlcHBhaVwgOwor6YGO5r+AID4ga2FnZWtpXCA7CivlhoXoqJMgPiBuYWlrdW5cIDsKK+eah+i7jSA+IGtvdWd1blwgOwor5YaF6KiMID4gbmFpa291XCA7CivmsLTku5kgPiBzdWlzZW5cIDsKK+iNieiNiSA+IHNvdXNvdVwgOwor5Y205LiLID4ga3lha2thXCA7Civli5XmhYsgPiBkb3V0YWlcIDsKK+WGjeijvSA+IHNhaXNlaVwgOwor5q2z5pifID4gc2Fpc2VpXCA7CivlvLfmhaIgPiBnb3VtYW5cIDsKK+W3p+iogCA+IGtvdWdlblwgOwor5biM6JaEID4ga2loYWt1XCA7CivljZjlhYMgPiB0YW5nZW5cIDsKK+mBoOa1hSA+IHRvb2FzYVwgOwor6L2G6L2kID4gcm9rdXJvXCA7Civmr5LlqaYgPiBkb2t1ZnVcIDsKK+ats+aXpiA+IHNhaXRhblwgOwor5Y2X5YWJID4gbmFua291XCA7CivljYHlj7AgPiBqdXVkYWlcIDsKK+mFjeWBtiA+IGhhaWd1dVwgOwor5YaF6KazID4gbmFpa2FuXCA7CivnmbrpgIEgPiBoYXNzb3VcIDsKK+W+oeWRiiA+IG90c3VnZVwgOwor5YaF6KanID4gbmFpcmFuXCA7CivpgaDmtIsgPiBlbicneW91XCA7CivlvL7mgKcgPiBkYW5zZWlcIDsKK+WGheimiyA+IG5haWtlblwgOwor5b2i5a65ID4ga2VpeW91XCA7Civpg6jlsZ4gPiBidXpva3VcIDsKK+ato+adsSA+IHNlaXRvdVwgOwor5by35oOFID4gZ291am91XCA7CivljYPljYMgPiBjaGlkamlcIDsKK+i/kee4gSA+IGtpbicnZW5cIDsKK+ecn+euhyA+IHNoaW5rb1wgOwor6a2a6aGeID4gZ3lvcnVpXCA7Civli4fmiKYgPiB5dXVzZW5cIDsKK+m2j+WPoyA+IGtlaWtvdVwgOwor5bi4572uID4gam91Y2hpXCA7CivljZLlhYggPiBzb3NzZW5cIDsKK+WHuuerryA+IGRlYmFuYVwgOwor6YGg5rKIID4gZW5jaGluXCA7CivmraPmnKwgPiBzZWlob25cIDsKK+ato+acqCA+IG1hc2FraVwgOwor5YWo6LKMID4gemVuYm91XCA7Civpg6jlsIYgPiBidXNob3VcIDsKK+WFiOmBoyA+IHNlbmtlblwgOwor56Gr5YyWID4gcnl1dWthXCA7CivpgaHmsYIgPiBzb2t5dXVcIDsKK+ecvOeevCA+IGdhbmtlblwgOwor5Y2K5YiGID4gaGFucHVuXCA7CivliIbnpL4gPiBidW5zaGFcIDsKK+ato+abuCA+IHNlaXNob1wgOwor5YWl6LK7ID4gbnl1dWhpXCA7Civnn63miYAgPiB0YW5zaG9cIDsKK+WNiOWIuyA+IGdva29rdVwgOwor55m76LyJID4gdG91c2FpXCA7CivlvIrmlrkgPiBoZWlob3VcIDsKK+WNoOS9jyA+IHNlbmp1dVwgOwor5beh6KanID4ganVucmFuXCA7CivmsJflhJggPiBraW1hbWFcIDsKK+W/jOS4rSA+IGtpY2h1dVwgOwor5YaF6KOFID4gbmFpc291XCA7Civli6flt6UgPiBrYW5rb3VcIDsKK+W9ueWgtCA+IHlha3ViYVwgOwor6a2U6aKoID4gbWFrYXplXCA7Civlh7rnqpMgPiBkZW1hZG9cIDsKK+W+jOWXoyA+IGtvdXNoaVwgOwor55uu6ISCID4gbWV5YW5pXCA7Civlt6HoppYgPiBqdW5zaGlcIDsKK+WKqeaVmSA+IGpva3lvdVwgOwor6YWS5LuZID4gc2h1c2VuXCA7Civpto/ljbUgPiBrZWlyYW5cIDsKK+ecn+eruSA+IG1hZGFrZVwgOwor55yL57WMID4ga2Fua2luXCA7Civlu7rmnZAgPiBrZW56YWlcIDsKK+eZuui7iiA+IGhhc3NoYVwgOwor5rCR5YW1ID4gbWlucGVpXCA7CivlvqnliIogPiBmdWtrYW5cIDsKK+WNiuWGhiA+IGhhbicnZW5cIDsKK+WLmOW9kyA+IGthbmRvdVwgOwor5byK5pS/ID4gaGVpc2VpXCA7CivljIjlpbQgPiBreW91ZG9cIDsKK+mFkuS5sSA+IHNodXJhblwgOwor55uy6ICFID4gbW91c2hhXCA7Civlu4PmtrIgPiBoYWlla2lcIDsKK+efh+aYpyA+IG1vdW1haVwgOwor5bem6KGoID4gc2FoeW91XCA7CivpgYXmu54gPiBjaGl0YWlcIDsKK+WIgOekvCA+IHRvdXJlaVwgOwor5byB5piOID4gYmVubWVpXCA7Civlv4PkuosgPiBzaGluamlcIDsKK+WLmOW8gSA+IGthbmJlblwgOwor5qyy5rCXID4geW9rdWtlXCA7Civnn63mha4gPiB0YW5yeW9cIDsKK+WNg+WIhiA+IHNlbmJ1blwgOwor5Yqj5pWXID4gcmVwcGFpXCA7Civmr47lpJUgPiBtYWl5dXVcIDsKK+egsuWjsCA+IGhvdXNlaVwgOwor5YWJ6LyqID4ga291cmluXCA7CivljZLlgJIgPiBzb3R0b3VcIDsKK+WNmOS9kyA+IHRhbnRhaVwgOwor55m+6LazID4gbXVrYWRlXCA7CivmrKfmtLIgPiBvdXNodXVcIDsKK+WLheaEjyA+IGNob2t1aVwgOwor5YWs6KuWID4ga291cm9uXCA7CivljYHliIYgPiBqdXBwdW5cIDsKK+mtmumbtyA+IGd5b3JhaVwgOwor5YWI6LypID4gc2VucGFpXCA7CivlubPnm64gPiBoaXJhbWVcIDsKK+mDt+WjqyA+IGdvdXNoaVwgOwor5q2k5pa5ID4ga29uYXRhXCA7CivliaPms5UgPiBrZW5wb3VcIDsKK+W+ruWCtyA+IGJpc2hvdVwgOwor6Iy26Iy2ID4gY2hhY2hhXCA7CivmraPmlrkgPiBzZWlob3VcIDsKK+atpuaVmSA+IGJ1a3lvdVwgOwor5Ymq5q+bID4gc2VubW91XCA7Civovpvoi6YgPiBzaGlua3VcIDsKK+mFjeS5lyA+IGhhaWpvdVwgOwor5biC6JGsID4gc2hpc291XCA7Civnn5zmjIEgPiBreW91amlcIDsKK+i+suiAlSA+IG5vdWtvdVwgOwor5Y2R5L+XID4gaGl6b2t1XCA7CivljYPlhoYgPiBzZW4nJ2VuXCA7CivliJ3nlJ8gPiBzaG9zZWlcIDsKK+WFrOiqjSA+IGtvdW5pblwgOwor5beh6KGMID4ganVua291XCA7CivljLrlioMgPiBrdWtha3VcIDsKK+ato+aWhyA+IHNlaWJ1blwgOwor5YWs6KmmID4ga291c2hpXCA7CivmsJfkvq0gPiBraW1hbWFcIDsKK+atjOagvCA+IGtha2FrdVwgOwor5bm955WMID4geXV1a2FpXCA7CivmraPmlbAgPiBzZWlzdXVcIDsKK+W+jOWRsyA+IGF0b2FqaVwgOwor56Cy5aGUID4gaG91dG91XCA7CivnoZ3ljJYgPiBzaG91a2FcIDsKK+WFvOihjCA+IGtlbmtvdVwgOwor5by35bqmID4ga3lvdWRvXCA7CivlvavloZEgPiBjaG91c29cIDsKK+WNgeWFqCA+IGp1dXplblwgOwor5YWs6KixID4ga291a3lvXCA7CivnmbrotbAgPiBoYXNzb3VcIDsKK+WNl+S6rCA+IG5hbmtpblwgOwor55+l5oWuID4gY2hpcnlvXCA7CivmrbvmiYAgPiBzaGlzaG9cIDsKK+W5vOeUnyA+IHlvdXNlaVwgOwor6YGT5rCRID4gZG91bWluXCA7CivljYrlgKQgPiBoYW4nJ25lXCA7CivlhazoqIAgPiBrb3VnZW5cIDsKK+aCtuOAhSA+IG1vbm1vblwgOwor6L+U562UID4gaGVudG91XCA7CivojLboibIgPiBjaGFpcm9cIDsKK+aoqeisgCA+IGtlbmJvdVwgOwor6baP5YagID4gdG9zYWthXCA7Civnmb7osqggPiBoeWFra2FcIDsKK+W7u+aWhyA+IGthaWJ1blwgOwor5YuB5oKNID4ga2Vpa2FuXCA7CivlhYPou40gPiBnZW5ndW5cIDsKK+WNgeWEhCA+IGp1dW9rdVwgOwor5byV5omLID4gaGlraXRlXCA7CivlvaLlo7AgPiBrZWlzZWlcIDsKK+mtlOmanCA+IG1hc2hvdVwgOwor5YiH55uuID4ga2lyZW1lXCA7CivlvJXmiLggPiBoaWtpZG9cIDsKK+i7n+miqCA+IG5hbnB1dVwgOwor5bm455SaID4ga291amluXCA7CivlvoXlkb0gPiB0YWltZWlcIDsKK+ecvOeVjCA+IGdhbmthaVwgOwor6Iy26Ie8ID4gY2hhdXN1XCA7Civpgbjmm7ggPiBzZW5zaG9cIDsKK+iLseiosyA+IGVpeWFrdVwgOwor6Lui6Z+zID4gdGVuJydvblwgOwor5q6L5b2xID4gemFuJydlaVwgOwor5b6M5Y2KID4ga291aGFuXCA7CivoirPphocgPiBob3VqdW5cIDsKK+W5tOeUoyA+IG5lbnNhblwgOwor5bm055SfID4gbmVuc2VpXCA7CivljYPlgI0gPiBzZW5iYWlcIDsKK+W7g+auiyA+IGhhaXphblwgOwor6Imv6aasID4gcnlvdWJhXCA7CivlvpPliY0gPiBqdXV6ZW5cIDsKK+W5s+eUnyA+IGhlaXplaVwgOwor6YO35ZyfID4ga3lvdWRvXCA7CivpgYrmsJEgPiB5dXVtaW5cIDsKK+iRm+W4gyA+IGt1enVmdVwgOwor5buD5q2iID4gaGFpc2hpXCA7CivovKrou6IgPiByaW50ZW5cIDsKK+W4huiIuSA+IGhvYnVuZVwgOwor5Y2B5YCNID4ganV1YmFpXCA7Civnn6XmgKcgPiBjaGlzZWlcIDsKK+WJm+avmyA+IGdvdW1vdVwgOwor5q+O5ZueID4gbWFpa2FpXCA7Civmr43lm70gPiBib2tva3VcIDsKK+awkeS6uiA+IG1pbmppblwgOwor55yf56CCID4gbWFzYWdvXCA7CivliqnmiYsgPiBzdWtldGVcIDsKK+atouaPmiA+IHNoaXlvdVwgOwor5bm9546EID4geXV1Z2VuXCA7CivoirjpgZMgPiBnZWlkb3VcIDsKK+WFiOizoiA+IHNlbmtlblwgOwor5Yqg5oyvID4ga2FzaGluXCA7Civnm5vogIUgPiBqb3VzaGFcIDsKK+W9ueWToSA+IHlha3VpblwgOwor5b6u5LmzID4gYmlueXV1XCA7CivnnIznqI4gPiBrZW56ZWlcIDsKK+W4s+ewvyA+IGNob3Vib1wgOwor6YKq5b+DID4gamFzaGluXCA7CivlhKrpgYcgPiB5dXVndXVcIDsKK+efs+W3pSA+IHNla2tvdVwgOwor5YaF6JS1ID4gbmFpem91XCA7CivoiLnpvaIgPiBzZW5yZWlcIDsKK+awkeS4uyA+IG1pbnNodVwgOwor5Yid54qvID4gc2hvaGFuXCA7CivlvozliLsgPiBnb2tva3VcIDsKK+auv+WggiA+IGRlbmRvdVwgOwor5b6p5LqkID4gZnVra291XCA7CivlurbmsJEgPiBzaG9taW5cIDsKK+eerOaZgiA+IHNodW5qaVwgOwor5YSq6YCAID4geXV1dGFpXCA7Civlh7nnm64gPiBrdWJvbWVcIDsKK+W+k+WFhCA+IGp1dWtlaVwgOwor5Yqj5omNID4gcmVzc2FpXCA7CivljYPku60gPiBzZW5qaW5cIDsKK+WIhueVjCA+IGJ1bmthaVwgOwor5Y2D5LueID4gc2VuamluXCA7CivovKrot50gPiByaW5reW9cIDsKK+iJpummliA+IGthbnNodVwgOwor6L+U56S8ID4gaGVucmVpXCA7CivliIDnl5UgPiB0b3Vrb25cIDsKK+WIneeJiCA+IHNob2hhblwgOwor6bO05oi4ID4gbmFydXRvXCA7CivljYHku6MgPiBqdXVkYWlcIDsKK+WLmOWumiA+IGthbmpvdVwgOwor5YaF6JKZID4gbmFpbW91XCA7Civnm67ns54gPiBtZWt1c29cIDsKK+W6p+a1tCA+IHpheW9rdVwgOwor5qiZ6KqeID4gaHlvdWdvXCA7Civnmb3oqbEgPiBoYWt1d2FcIDsKK+WIpOeEtiA+IGhhbnplblwgOwor56CC5a2QID4gc3VuYWdvXCA7CivlvIHmiY0gPiBiZW5zYWlcIDsKK+aCoOOAhSA+IHl1dXl1dVwgOwor5qip6KGhID4ga2Vua291XCA7CivlirTlvbkgPiByb3Vla2lcIDsKK+iMl+iNtyA+IG15b3VnYVwgOwor55uu57GgID4gbWVrYWdvXCA7CivnnYDniakgPiBraW1vbm9cIDsKK+i7iumiqCA+IHNoYWZ1dVwgOwor5qiZ6KiYID4gaHlvdWtpXCA7CivprJrpq68gPiBzaHV6ZW5cIDsKK+WJjeautSA+IHplbmRhblwgOwor6YGu5patID4gc2hhZGFuXCA7CivojI7okYkgPiBrZWl5b3VcIDsKK+mBqeaZgiA+IHRla2lqaVwgOwor5bir56+EID4gc2hpaGFuXCA7CivojYnntJkgPiBzb3VzaGlcIDsKK+iQveW+jCA+IHJha3Vnb1wgOwor55uy566hID4gbW91a2FuXCA7CivljYHkuIkgPiBqdXVzYW5cIDsKK+WNgeS4hyA+IGp1dW1hblwgOwor5q+S5ZGzID4gZG9rdW1pXCA7CivokYnlt7sgPiBoYW1ha2lcIDsKK+W4guiChiA+IHNoaXNoaVwgOwor5by15a2QID4gaGFyaWtvXCA7Civnn7PlsYsgPiBpc2hpeWFcIDsKK+W+oeS4uyA+IG9udXNoaVwgOwor6YO95ZCIID4gdHN1Z291XCA7Civlubvnh4ggPiBnZW50b3VcIDsKK+W+oeS4rSA+IG9uY2h1dVwgOwor6Iqx6LyqID4gaGFuYXdhXCA7CivlvIHmhbYgPiBiZW5rZWlcIDsKK+WFjeiosSA+IG1lbmt5b1wgOwor5bmy54qvID4ga2FucGFuXCA7Civliarmnp0gPiBzZW5zaGlcIDsKK+iKsei7uCA+IGthamlrdVwgOwor5bm954S2ID4geXV1emVuXCA7Civlh7nnlLAgPiBrdWJvdGFcIDsKK+iLpuihtyA+IGt1Y2h1dVwgOwor55m66KaLID4gaGFra2VuXCA7CivlhY7op5IgPiB0b2tha3VcIDsKK+W9k+WcsCA+IHRvdWNoaVwgOwor5bmy54mpID4gaGltb25vXCA7CivlubPniYggPiBoZWloYW5cIDsKK+iLpuihjCA+IGt1Z3lvdVwgOwor6a+o6ISCID4gZ2Vpc2hpXCA7Civlho3oiIggPiBzYWlrb3VcIDsKK+iQveW6piA+IG9jaGlkb1wgOwor56Cy5Y+wID4gaG91ZGFpXCA7Civlho3oh6ggPiBzYWlyaW5cIDsKK+egsuWPoyA+IGhvdWtvdVwgOwor55yf55SwID4gc2FuYWRhXCA7CivliqnlvbkgPiBqb3lha3VcIDsKK+avjuWPtyA+IG1haWdvdVwgOwor5Yqj5oCnID4gcmVzc2VpXCA7Civnm67nrIogPiBtZXphcnVcIDsKK+atr+W9oiA+IGhhZ2F0YVwgOwor5by+5aWPID4gZGFuc291XCA7CivljIXlkKsgPiBob3VnYW5cIDsKK+W7g+agoSA+IGhhaWtvdVwgOwor5b6M5L6/ID4ga291YmluXCA7CivpgbjmjJkgPiBzZW5reW9cIDsKK+WMjeWMkCA+IGhvZnVrdVwgOwor6YOK5aSWID4ga291Z2FpXCA7CivlvLflp6YgPiBnb3VrYW5cIDsKK+eZveihoyA+IGJ5YWt1ZVwgOwor5YmW5qScID4gYm91a2VuXCA7Civlt6joiaYgPiBreW9rYW5cIDsKK+mAsuatqSA+IHNoaW5wb1wgOwor5Yeh55y8ID4gYm9uZ2FuXCA7Civlg6fploAgPiBzb3Vtb25cIDsKK+i/lOebgyA+IGhlbnBhaVwgOwor5bel6Iq4ID4ga291Z2VpXCA7Civou43pmoogPiBndW50YWlcIDsKK+i/keecjCA+IGtpbmtlblwgOwor6JC95beuID4gcmFrdXNhXCA7Civlubvnga8gPiBnZW50b3VcIDsKK+W3qOiIuSA+IGt5b3NlblwgOwor6bGX54q2ID4gcmluam91XCA7CivlhoXoiKogPiBuYWlrb3VcIDsKK+WFiOimiyA+IHNlbmtlblwgOwor6LuN6ZmjID4gZ3VuamluXCA7CivovKrorJsgPiByaW5rb3VcIDsKK+aui+WtmCA+IHphbnpvblwgOwor552A54GrID4gY2hha2thXCA7CivlubPnhLYgPiBoZWl6ZW5cIDsKK+WIh+eJhyA+IHNlcHBlblwgOwor55m66KGMID4gaGFra291XCA7CivljJflhYkgPiBob2trb3VcIDsKK+atpuW+syA+IGJ1dG9rdVwgOwor55yJ55uuID4gYmltb2t1XCA7CivnnIjnnIggPiB0YW50YW5cIDsKK+ecvOeCuSA+IGdhbnRlblwgOwor5YuV5aSpID4gZG91dGVuXCA7Civlip/lvrMgPiBrdWRva3VcIDsKK+W+jOS7uyA+IGtvdW5pblwgOwor5buD5p2QID4gaGFpemFpXCA7CivlhoXoh5MgPiBuYWl6b3VcIDsKK+W+jOS7tiA+IGtvdWtlblwgOwor6Imm6ZqKID4ga2FudGFpXCA7Civoi5foo5QgPiBieW91ZWlcIDsKK+WKoOW9uSA+IGtheWFrdVwgOwor6YG45omLID4gc2Vuc2h1XCA7Civlvozku6MgPiBrb3VkYWlcIDsKK+mxl+eJhyA+IHJpbnBlblwgOwor5byK5bqXID4gaGVpdGVuXCA7CivnnJ/nkIYgPiBzaGlucmlcIDsKK+WIg+eJqSA+IGhhbW9ub1wgOwor5YSV6LypID4gc2FpaGFpXCA7Civnmq7ohpwgPiBoaW1ha3VcIDsKK+W+jOS6uiA+IGtvdWppblwgOwor5b255YSAID4geWFrdWdpXCA7CivnnJ/nj6AgPiBzaGluanVcIDsKK+WQpuOAhSA+IGl5YWl5YVwgOwor5Ymq5patID4gc2VuZGFuXCA7CivlhazokawgPiBrb3Vzb3VcIDsKK+egguWgtCA+IHN1bmFiYVwgOwor5byB5b2TID4gYmVudG91XCA7CivlhoXohZQgPiBuYWlrb3VcIDsKK+mAk+a4myA+IHRlaWdlblwgOwor5beh6IiqID4ganVua291XCA7CivlvoDkv6EgPiBvdXNoaW5cIDsKK+i7jemWgCA+IGd1bm1vblwgOwor5bqn5qiZID4gemFoeW91XCA7CivmraPlvZMgPiBzZWl0b3VcIDsKK+iNkuelniA+IGtvdWppblwgOwor6a2a6YGTID4gZ3lvZG91XCA7CivmrbvlsY0gPiBzaGlzaGlcIDsKK+iJh+mmliA+IHRlaXNodVwgOwor6YKq5a6XID4gamFzaHV1XCA7CivmraPlvKYgPiBzZWlnZW5cIDsKK+iNieeovyA+IHNvdWtvdVwgOwor5YuH5ae/ID4geXV1c2hpXCA7Civlho3ogIMgPiBzYWlrb3VcIDsKK+WIhueFmSA+IGJ1bicnZW5cIDsKK+asoOacrCA+IGtlcHBvblwgOwor5b6M5LiWID4ga291c2VpXCA7CivlhYjooYwgPiBzZW5rb3VcIDsKK+i7n+mLvCA+IG5hbmtvdVwgOwor5q+O5YiGID4gbWFpZnVuXCA7CivliLbmraIgPiBzZWlzaGlcIDsKK+mDteWIuCA+IHl1dWtlblwgOwor6I2S56OvID4gYXJhaXNvXCA7Civou73ovKkgPiBrZWloYWlcIDsKK+iPr+aXjyA+IGthem9rdVwgOwor5b2i5YuiID4ga2Vpc2VpXCA7Civmp4vpgKAgPiBrb3V6b3VcIDsKK+iRl+WkpyA+IGNob2RhaVwgOwor5Ye654mpID4gZGVtb25vXCA7CivojIXoiI4gPiBib3VzaGFcIDsKK+W6p+alrSA+IHphZ3lvdVwgOwor5Yud5ZugID4gc2hvdWluXCA7Civnmb3ombkgPiBoYWtrb3VcIDsKK+earuiCiSA+IGhpbmlrdVwgOwor5YmN5qC9ID4gc2VuemFpXCA7Civpq5jpvaIgPiBrb3VyZWlcIDsKK+egsuWFtSA+IGhvdWhlaVwgOwor5YaF6IGeID4gbmFpYnVuXCA7CivliIbngrkgPiBidW50ZW5cIDsKK+atu+WuiCA+IHNoaXNodVwgOwor5bqV5q2iID4gdGVpc2hpXCA7CivlhbXoiLkgPiBoZWlzZW5cIDsKK+WIpeazlSA+IGJlcHBvdVwgOwor5Ye454mIID4gdG9wcGFuXCA7CivlhavojZIgPiBoYWtrb3VcIDsKK+mAmuawlyA+IHRzdXVraVwgOwor5Yqg5beeID4ga2FzaHV1XCA7CivmraPluL0gPiBzZWlib3VcIDsKK+WFteiIjiA+IGhlaXNoYVwgOwor5q2j5bi4ID4gc2Vpam91XCA7Civlu7vlu4ogPiBrYWlyb3VcIDsKK+mAn+atqSA+IHNva3Vob1wgOwor5bmy5r2fID4gaGlnYXRhXCA7Civou73ouoEgPiBrZWlzb3VcIDsKK+mBpeaLnSA+IHlvdWhhaVwgOwor6YGK5pifID4geXV1c2VpXCA7Civoirjoq4cgPiBnZWlkYW5cIDsKK+mBjuaWmSA+IGthcnlvdVwgOwor5YuH5aOuID4geXV1c291XCA7Civli4flo6sgPiB5dXVzaGlcIDsKK+ebo+emgSA+IGthbmtpblwgOwor5ben6ICFID4ga291c2hhXCA7CivlhKroq5ogPiB5dXVqb3VcIDsKK+mzqeW6pyA+IGhhdG96YVwgOwor55+t5aSnID4gdGFuZGFpXCA7Civlt6bnv7wgPiBzYXlva3VcIDsKK+iMtuethSA+IGNoYXNlblwgOwor5YmN5p2/ID4gbWFlaXRhXCA7Civlg7vpgaAgPiBoZWtpZW5cIDsKK+mrmOm6lyA+IGtvdXJhaVwgOwor6Lqr6aCDID4gbWlnb3JvXCA7Civnn7PloYogPiBzZWtrYWlcIDsKK+WJjeadoSA+IHplbmpvdVwgOwor5YWl6I23ID4gbnl1dWthXCA7CivltIfpq5ggPiBzdXVrb3VcIDsKK+WJsuaLoCA+IGtha2t5b1wgOwor5by35Zu6ID4ga3lvdWtvXCA7CivmrZPlvoUgPiBrYW50YWlcIDsKK+W5s+a6liA+IGhlaWp1blwgOwor6Ii56aaWID4gc2Vuc2h1XCA7CivlvJ/lprkgPiB0ZWltYWlcIDsKK+eXm+mjsiA+IHRzdXVpblwgOwor5Yq+5aWPID4gZ2Fpc291XCA7CivlubLmuoAgPiBrYW5tYW5cIDsKK+WJjeabuCA+IHplbnNob1wgOwor5bu25bm0ID4gZW4nJ25lblwgOwor55eF6a2UID4gYnlvdW1hXCA7CivluoPmsY4gPiBrb3VoYW5cIDsKK+WIqeassiA+IHJpeW9rdVwgOwor6YOt5YWsID4ga2Fra291XCA7CivlhazoiI4gPiBrb3VzaGFcIDsKK+W6reacqCA+IG5pd2FraVwgOwor5qW96Z+zID4gZ2FrdW9uXCA7CivmrovloYEgPiB6YW5ydWlcIDsKK+WFpeiLkSA+IG55dXVlblwgOwor6Iul6JGJID4gd2FrYWJhXCA7Civlh4bnnIsgPiBqdW5rYW5cIDsKK+WGjee3qCA+IHNhaWhlblwgOwor5YeN55ihID4gdG91c291XCA7CivluLjnlKggPiBqb3V5b3VcIDsKK+WLsuWKnyA+IGt1bmtvdVwgOwor5byK5a6zID4gaGVpZ2FpXCA7CivmraTlsrggPiBzaGlnYW5cIDsKK+WFqOiIuSA+IHplbnNlblwgOwor5bmz5rehID4gaGVpdGFuXCA7CivlhajoiKwgPiB6ZW5wYW5cIDsKK+WJjeaZryA+IHplbmtlaVwgOwor6YGg5oiaID4gZW5zZWtpXCA7CivmrrrliLAgPiBzYXR0b3VcIDsKK+WHuueBqyA+IHNodWtrYVwgOwor55uu55ubID4gbWVtb3JpXCA7Civoi6Xoj5wgPiB3YWthbmFcIDsKK+W4hueriyA+IGhvdGF0ZVwgOwor6YOh5Yi2ID4gZ3Vuc2VpXCA7Civpg7Xkvr8gPiB5dXViaW5cIDsKK+i7oumAgSA+IHRlbnNvdVwgOwor6YG35bu2ID4gc2VuJydlblwgOwor5q2m5bCGID4gYnVzaG91XCA7Civnm67nmb0gPiBtZWppcm9cIDsKK+W6tuaUvyA+IHNob3NlaVwgOwor55uq55uqID4gdG91dG91XCA7CivliJ3mrrUgPiBzaG9kYW5cIDsKK+W9k+WInSA+IHRvdXNob1wgOwor6Ii56aCtID4gc2VuZG91XCA7CivlvZPliIYgPiB0b3VidW5cIDsKK+mAseacnyA+IHNodXVraVwgOwor6YOO5ZCbID4gcm91a3VuXCA7CivlvJjlpKcgPiBrb3VkYWlcIDsKK+i/keeKtiA+IGtpbmpvdVwgOwor5beo57eoID4ga3lvaGVuXCA7CivmrovlnKggPiB6YW56b25cIDsKK+iKseimiyA+IGhhbmFtaVwgOwor5q+A5YK3ID4ga2lzaG91XCA7CivlhoXnt5ogPiBuYWlzZW5cIDsKK+W3p+e3uyA+IGtvdWNoaVwgOwor5qyg5pCNID4ga2Vzc29uXCA7CivlhoXnt5IgPiBuYWlzaG9cIDsKK+mBt+W5uCA+IHNlbmtvdVwgOwor5YiR5rOVID4ga2VpaG91XCA7Civps7TlrZAgPiBuYXJ1a29cIDsKK+WJjeaWhyA+IHplbmJ1blwgOwor6Ii36aCtID4gZ2VudG91XCA7CivmrablraYgPiBidWdha3VcIDsKK+mBo+aCtiA+IGtlbm1vblwgOwor5Ye65r2uID4gZGVzaGlvXCA7CivluK3nlLsgPiBzZWtpZ2FcIDsKK+mAhuavmyA+IHNha2FnZVwgOwor6YGp5b+cID4gdGVraW91XCA7CivprZrosp0gPiBneW9iYWlcIDsKK+iLpeiKvSA+IHdha2FtZVwgOwor6Lui6LyJID4gdGVuc2FpXCA7CivlhrfnnLwgPiByZWlnYW5cIDsKK+WLpOWLiSA+IGtpbmJlblwgOwor5Yqx5aOwID4gcmVpc2VpXCA7Civmq5vmr5QgPiBzaGlwcGlcIDsKK+mAgeawtCA+IHNvdXN1aVwgOwor5Yuk5Yq0ID4ga2lucm91XCA7CivluILnqI4gPiBzaGl6ZWlcIDsKK+egsuS4uCA+IGhvdWdhblwgOwor5q+N5LmzID4gYm9ueXV1XCA7Civou6Lou6IgPiB0ZW50ZW5cIDsKK+mBlOaIkCA+IHRhc3NlaVwgOwor5YaF57SbID4gbmFpZnVuXCA7Civli7/kvZMgPiBtb3R0YWlcIDsKK+WLmOWQiCA+IGthbmdvdVwgOwor6Iy256KXID4gY2hhd2FuXCA7Civou43phY0gPiBndW5iYWlcIDsKK+W5s+awtCA+IGhlaXN1aVwgOwor5byY5aCxID4ga291aG91XCA7Civps6XlsYsgPiB0b3JpeWFcIDsKK+asvuW+hSA+IGthbnRhaVwgOwor5bmz5rCRID4gaGVpbWluXCA7CivlubPmsI8gPiBoZWlzaGlcIDsKK+eZvuiKsSA+IGh5YWtrYVwgOwor6YCj5p6dID4gcmVuc2hpXCA7Civmr43kuIogPiBoYWhhdWVcIDsKK+WLleWQkSA+IGRvdWtvdVwgOwor55a+6aeGID4gc2hpa2t1XCA7Civlh73muKAgPiBrYW5reW9cIDsKK+i+sueUoyA+IG5vdXNhblwgOwor5YiR5q27ID4ga2Vpc2hpXCA7CivmpbzploAgPiByb3Vtb25cIDsKK+WFrOe9siA+IGtvdXNob1wgOwor556R5oOzID4gbWVpc291XCA7CivlubTmra8gPiBuZW5zaGlcIDsKK+mAoOaelyA+IHpvdXJpblwgOwor6Ii56ZqKID4gc2VudGFpXCA7CivpgaDlv4MgPiBlbnNoaW5cIDsKK+iLm+iLmyA+IGlyYWlyYVwgOwor5byx5ZGzID4geW93YW1pXCA7CivpganluqYgPiB0ZWtpZG9cIDsKK+WJiuaRqSA+IHNha3VtYVwgOwor6Lyq6JS1ID4gcmluem91XCA7CivlvL7lir4gPiBkYW5nYWlcIDsKK+mBlOaEjyA+IHRhdHN1aVwgOwor5bqV5pysID4gdGVpaG9uXCA7CivliLDmnaUgPiB0b3VyYWlcIDsKK+eZuuiJpiA+IGhha2thblwgOwor5YiO5q27ID4gZnVuc2hpXCA7Civou43pgZMgPiBndW5kb3VcIDsKK+WJteW7uiA+IHNvdWtlblwgOwor5YmN5o+QID4gemVudGVpXCA7CivmrbvlnLAgPiBzaGljaGlcIDsKK+WGrOedgCA+IGZ1eXVnaVwgOwor6YCg5pysID4gem91aG9uXCA7CivnnIvngrkgPiBrYW50ZW5cIDsKK+aso+aHkCA+IGtpbmthaVwgOwor6JaE44CFID4gdXN1dXN1XCA7CivliY3mjrIgPiB6ZW5rZWlcIDsKK+WGrOecoCA+IHRvdW1pblwgOwor55m66IiqID4gaGFra291XCA7Civli53liKkgPiBzaG91cmlcIDsKK+W3qOevhyA+IGt5b2hlblwgOwor55m76IeoID4gdG91cmluXCA7Civou4rpgZMgPiBzaGFkb3VcIDsKK+W8t+WMliA+IGt5b3VrYVwgOwor5q2j5aa7ID4gc2Vpc2FpXCA7Civovpvnm64gPiBrYXJhbWVcIDsKK+WLleWLoiA+IGRvdXNlaVwgOwor55e06YiNID4gY2hpZG9uXCA7CivokZflkI0gPiBjaG9tZWlcIDsKK+aui+WTgSA+IHphbnBpblwgOwor5bq45omNID4geW91c2FpXCA7Civli5XlirQgPiBkb3Vyb3VcIDsKK+i7kui8iiA+IGtlbmNoaVwgOwor5YWJ6IqSID4ga291Ym91XCA7CivluK/nirYgPiBvYmlqb3VcIDsKK+iLpuiCiSA+IGt1bmlrdVwgOwor6bOz5aOwID4gaG91c2VpXCA7CivpgKPmmJ8gPiByZW5zZWlcIDsKK+eah+iAgyA+IGtvdWtvdVwgOwor55uu546JID4gbWVkYW1hXCA7Civpq5jpqLAgPiBrb3V0b3VcIDsKK+iMtuebhiA+IGNoYWJvblwgOwor6YOO5YWaID4gcm91ZG91XCA7CivluIPnn7MgPiBmdXNla2lcIDsKK+iHpem+jSA+IGdhcnlvdVwgOwor5byB5aSpID4gYmVudGVuXCA7CivliIfmra8gPiBzZXNzaGlcIDsKK+i7veimliA+IGtlaXNoaVwgOwor55+t5ZG9ID4gdGFubWVpXCA7Civlt6PnrrEgPiBzdWJha29cIDsKK+auv+S4iiA+IHRlbmpvdVwgOwor6Ii36ZaAID4gZ2VubW9uXCA7CivpgbjlrpogPiBzZW50ZWlcIDsKK+WLh+WQjSA+IHl1dW1laVwgOwor5q2j5aSnID4gc2VpZGFpXCA7Civpq5Hpq48gPiBkb2t1cm9cIDsKK+WIqeacrSA+IHJpZnVkYVwgOwor6YG35a6uID4gc2VuZ3V1XCA7Civou6LosrggPiB0ZW50YWlcIDsKK+W5veajsiA+IHl1dXNlaVwgOwor5q2v5Z6iID4gc2hpa291XCA7CivlvIHlo6sgPiBiZW5zaGlcIDsKK+mBk+W/tSA+IGRvdW5lblwgOwor556z5a2UID4gZG91a291XCA7CivnnrPlrZAgPiBkb3VzaGlcIDsKK+atr+WeiyA+IGhhZ2F0YVwgOwor5b2T5LujID4gdG91ZGFpXCA7CivluormnLogPiBzaG91Z2lcIDsKK+WIpeadryA+IGJlcHBhaVwgOwor5YWI6IisID4gc2VucGFuXCA7CivlvZPku4ogPiB0b3Vrb25cIDsKK+WLpOWAuSA+IGtpbmtlblwgOwor5Ymb5oOFID4gZ291am91XCA7CivlvZPkurogPiB0b3VuaW5cIDsKK+mBteWuiCA+IGp1bnNodVwgOwor6LuK6LyqID4gc2hhcmluXCA7CivliJ3moKEgPiBzaG9rb3VcIDsKK+i7jei7iiA+IGd1bnNoYVwgOwor5q2M5a2mID4ga2FnYWt1XCA7CivpgKPmlZcgPiByZW5wYWlcIDsKK+WFqOe3qCA+IHplbnBlblwgOwor5bqV5pWwID4gdGVpc3V1XCA7Civlh7rmsLQgPiBkZW1penVcIDsKK+WFqOe3miA+IHplbnNlblwgOwor6Lu96KOFID4ga2Vpc291XCA7Civouqvpiq0gPiBtaXplbmlcIDsKK+iJpui8iSA+IGthbnNhaVwgOwor5YKN6aGMID4gYm91ZGFpXCA7CivpgZXlvI8gPiBpc2hpa2lcIDsKK+W6g+adsSA+IGthbnRvblwgOwor5biD55uuID4gbnVub21lXCA7Civlhbjnr4QgPiB0ZW5wYW5cIDsKK+W9k+S4uyA+IHRvdXNodVwgOwor55eF6ZmiID4gYnlvdWluXCA7CivpgIHmpJwgPiBzb3VrZW5cIDsKK+WzsOmgrSA+IGhvdXRvdVwgOwor55+l5ZG9ID4gY2hpbWVpXCA7Civlub3moJYgPiB5dXVzZWlcIDsKK+ebl+eUqCA+IHRvdXlvdVwgOwor5Ymb5oCnID4gZ291c2VpXCA7CivmrKPlv6sgPiBraW5rYWlcIDsKK+W9k+S4liA+IHRvdXNlaVwgOwor5YWr57SYID4gaGFra291XCA7Civli4nlirEgPiBiZW5yZWlcIDsKK+mAn+aUuyA+IHNva2tvdVwgOwor5Ye65q67ID4gZGVnYXJhXCA7CivlhY7ogokgPiB0b25pa3VcIDsKK+ecoOawlyA+IG5lbXVrZVwgOwor6Iy255WqID4gY2hhYmFuXCA7CivnnJ/msLQgPiBtYW1penVcIDsKK+W3pueoiyA+IHNhaG9kb1wgOwor5YiG5qipID4gYnVua2VuXCA7Civpq5jpoqggPiBrb3VmdXVcIDsKK+efpeWQjSA+IGNoaW1laVwgOwor5bel56iLID4ga291dGVpXCA7Civlub3mnpcgPiB5dXVyaW5cIDsKK+i/lOa4iCA+IGhlbnNhaVwgOwor5YWo57SZID4gemVuc2hpXCA7Civlhqznk5wgPiB0b3VnYW5cIDsKK+auiuWLsiA+IHNodWt1blwgOwor5YWJ6IOMID4ga291aGFpXCA7Civou4zot6EgPiBraXNla2lcIDsKK+W8seWGoCA+IGpha2thblwgOwor5by+5YCJID4gZGFuc291XCA7Civnn6Xlj4sgPiBjaGl5dXVcIDsKK+WKoOWcpyA+IGthYXRzdVwgOwor6Iy255O2ID4gY2hhYmluXCA7CivpgKPmkLogPiByZW5rZWlcIDsKK+WIneabtCA+IHNob2tvdVwgOwor5Yip5pW1ID4gcml0ZWtpXCA7CivliKTmmI4gPiBoYW5tZWlcIDsKK+atu+WRvSA+IHNoaW1laVwgOwor6YGp5a6cID4gdGVraWdpXCA7Civmrorlip8gPiBzaHVrb3VcIDsKK+W8peWLkiA+IG1pcm9rdVwgOwor5Yal55WMID4gbWVpa2FpXCA7Civoiq3olYkgPiBiYXNob3VcIDsKK+mBi+W8kyA+IHVua3l1dVwgOwor5Ymj5bivID4ga2VudGFpXCA7CivpgIDmoKEgPiB0YWlrb3VcIDsKK+mrmOmfsyA+IHRha2FuZVwgOwor6Imv6LKoID4gcnlvdWthXCA7CivlhbXnq68gPiBoZWl0YW5cIDsKK+efreWJoyA+IHRhbmtlblwgOwor5YWI6IGWID4gc2Vuc2VpXCA7CivlhajnsbMgPiB6ZW5iZWlcIDsKK+ebsueCuSA+IG1vdXRlblwgOwor5Yik5patID4gaGFuZGFuXCA7CivlhbXnq5kgPiBoZWl0YW5cIDsKK+atk+WjsCA+IGthbnNlaVwgOwor5qy95a6aID4ga2ludGVpXCA7CivpgI/mmI4gPiB0b3VtZWlcIDsKK+mHjeOAhSA+IGp1dWp1dVwgOwor6Luf6KuWID4gbmFucm9uXCA7CivpgrjlhoUgPiB0ZWluYWlcIDsKK+eah+e1sSA+IGtvdXRvdVwgOwor6L+R5rW3ID4ga2lua2FpXCA7CivlhY3nvaogPiBtZW56YWlcIDsKK+W7g+W4nSA+IGhhaXRlaVwgOwor5YWI6ICDID4gc2Vua291XCA7Civnn63liIAgPiB0YW50b3VcIDsKK+WLmOS+iyA+IGthbnJlaVwgOwor5YWs566XID4ga291c2FuXCA7CivoiIzpoK0gPiB6ZXR0b3VcIDsKK+mBuOWkliA+IHNlbmdhaVwgOwor5q275Y67ID4gc2hpa3lvXCA7Civou43os4cgPiBndW5zaGlcIDsKK+asp+W3niA+IG91c2h1dVwgOwor5byV5ZCIID4gaGlraWFpXCA7Civlub3mma8gPiB5dXVrZWlcIDsKK+mBiuW6lSA+IHl1dXRlaVwgOwor55+l5YuHID4gY2hpeXV1XCA7Civnn6nliYcgPiBrdXNva3VcIDsKK+W3oeekvCA+IGp1bnJlaVwgOwor6YG15aWJID4ganVucG91XCA7CivlubTmnaUgPiBuZW5yYWlcIDsKK+WIneaXrCA+IHNob2p1blwgOwor5bmz5p2/ID4gaGVpYmFuXCA7CivlhIDooaggPiBnaWh5b3VcIDsKK+atjuWjsCA+IHRhbnNlaVwgOwor5YWo56+HID4gemVucGVuXCA7CivlhbXnqK4gPiBoZWlzaHVcIDsKK+W3qOegsiA+IGt5b2hvdVwgOwor55qG57SNID4ga2Fpbm91XCA7Civoh7Ppq5ggPiBzaGlrb3VcIDsKK+W5veaYjiA+IHl1dW1laVwgOwor5q6L5YWaID4gemFudG91XCA7CivmrKHluK0gPiBqaXNla2lcIDsKK+atjOWjsCA+IHV0YWdvZVwgOwor5qih57SiID4gbW9zYWt1XCA7CivmrovlhYkgPiB6YW5rb3VcIDsKK+WLleS9kyA+IGRvdXRhaVwgOwor5YWD6ICBID4gZ2Vucm91XCA7Civprq7ntIUgPiBzZW5rb3VcIDsKK+WJr+WumCA+IGZ1a2thblwgOwor6Iqz6I2JID4gaG91c291XCA7CivnnJ/mqKogPiBtYXlva29cIDsKK+WFq+erryA+IGhhdHRhblwgOwor5ben55+lID4ga291Y2hpXCA7CivliIbmoKEgPiBidW5rb3VcIDsKK+mAo+aKlSA+IHJlbnRvdVwgOwor5YW456S8ID4gdGVucmVpXCA7Civnm5fniq8gPiB0b3VoYW5cIDsKK+W8vuS4uCA+IGRhbmdhblwgOwor5q2M5aKDID4ga2FreW91XCA7CivlhpnnlJ8gPiBzaGFzZWlcIDsKK+aui+WDjyA+IHphbnpvdVwgOwor5Yq05YuVID4gcm91ZG91XCA7Civmranlk6ggPiBob3Nob3VcIDsKK+ecjOawkSA+IGtlbm1pblwgOwor5YuH5YGlID4geXV1a2VuXCA7CivlhpfnlKggPiBqb3V5b3VcIDsKK+WJquWumiA+IHNlbnRlaVwgOwor5Ymj5bGxID4ga2VuemFuXCA7CivlirTlip8gPiByb3Vrb3VcIDsKK+mAo+aIpiA+IHJlbnNlblwgOwor5Ya354S2ID4gcmVpemVuXCA7CivnoILkuJggPiBzYWt5dXVcIDsKK+WLleS5sSA+IGRvdXJhblwgOwor5Yi25oayID4gc2Vpa2VuXCA7CivlvJPli6IgPiB5dW56ZWlcIDsKK+WGheecgSA+IG5haXNlaVwgOwor5buD5bGxID4gaGFpemFuXCA7CivliY3luq0gPiB6ZW50ZWlcIDsKK+W5s+aYjiA+IGhlaW1laVwgOwor5q275YiRID4gc2hpa2VpXCA7CivlibXlp4sgPiBzb3VzaGlcIDsKK+ecieavmyA+IG1heXVnZVwgOwor6YCg5oiQID4gem91c2VpXCA7Civlt6jnm5cgPiBreW90b3VcIDsKK+W7g+WxiyA+IGhhaW9rdVwgOwor5YiH5pu/ID4gc2V0dGFpXCA7Civlhaznp4EgPiBrb3VzaGlcIDsKK+atu+WHpiA+IHNoaXNob1wgOwor6YCD5pWjID4gdG91c2FuXCA7Civouqvou70gPiBtaWdhcnVcIDsKK+WFiee3miA+IGtvdXNlblwgOwor5buj5aCxID4ga291aG91XCA7Civnn6LlhYggPiB5YXNha2lcIDsKK+W5s+aWuSA+IGhlaWhvdVwgOwor6LuN6KuHID4gZ3VuZGFuXCA7Civoj6/lrqIgPiBrYWtha3VcIDsKK+mBjuWwkSA+IGthc2hvdVwgOwor6YGO5bCPID4ga2FzaG91XCA7CivlubTmlbAgPiBuZW5zdXVcIDsKK+ato+WRsyA+IHNob3VtaVwgOwor6YCA5pWjID4gdGFpc2FuXCA7CivlhaznpL4gPiBrb3VzaGFcIDsKK+iKuOiDvSA+IGdlaW5vdVwgOwor6YCj5oOzID4gcmVuc291XCA7Civlho3nlJ8gPiBzYWlzZWlcIDsKK+aui+S9mSA+IHphbicneW9cIDsKK+mBjuWuoiA+IGtha2FrdVwgOwor6YGj5aSWID4ga2VuZ2FpXCA7CivlhqDnirYgPiBrYW5qb3VcIDsKK+asoeWwhiA+IGppc2hvdVwgOwor5byB5Y+jID4gYmVua291XCA7CivlubLmlK8gPiBrYW5zaGlcIDsKK+eak+ekrCA+IGtvdWJhblwgOwor5q2j5Y+3ID4gc2VpZ291XCA7CivmraPlj7IgPiBzZWlzaGlcIDsKK+iLpueskSA+IGt1c2hvdVwgOwor5YWo56S+ID4gemVuc2hhXCA7CivliIbmmI4gPiBidW5tZWlcIDsKK+W8k+WFtyA+IGt5dXVndVwgOwor6YCy5bqmID4gc2hpbmRvXCA7CivnmYzohasgPiBnYW5zaHVcIDsKK+WKo+WLoiA+IHJlc3NlaVwgOwor5Yq05YONID4gcm91ZG91XCA7Civnn67kurogPiB3YWlqaW5cIDsKK+W7u+WQkSA+IGthaWtvdVwgOwor6I2S5rW3ID4gYXJhdW1pXCA7Civps7Tli5UgPiBtZWlkb3VcIDsKK+WGheeVjCA+IG5haWthaVwgOwor5bqn5bitID4gemFzZWtpXCA7CivmraPljZcgPiBzZWluYW5cIDsKK+iKuOiAhSA+IGdlaXNoYVwgOwor6YGK5a2QID4geXV1c2hpXCA7CivmraPljYggPiBzaG91Z29cIDsKK+WGheeUqCA+IG5haXlvdVwgOwor5Yil5oeHID4gYmVra29uXCA7CivliLblvqEgPiBzZWlneW9cIDsKK+WIhuaVsCA+IGJ1bnN1dVwgOwor5YiG5pWjID4gYnVuc2FuXCA7CivlhKrogIUgPiB5dXVzaGFcIDsKK+eZu+esrCA+IHRvdWRhaVwgOwor5q2v5YagID4gc2hpa2FuXCA7Civlho3nj74gPiBzYWlnZW5cIDsKK+W6t+WvpyA+IGtvdW5laVwgOwor5YWs55+lID4ga291Y2hpXCA7Civlip/lirQgPiBrb3Vyb3VcIDsKK+ashOW5siA+IHJhbmthblwgOwor5YiX5oyZID4gcmVra3lvXCA7CivliY3lsbEgPiB6ZW56YW5cIDsKK+W8peS5hSA+IGJpa3l1dVwgOwor55m656uvID4gaG90dGFuXCA7CivliJ3miKYgPiBzaG9zZW5cIDsKK+i7jeijhSA+IGd1bnNvdVwgOwor5Yil5oSPID4gYmV0c3VpXCA7Civlh7rmmYIgPiBkZWRva2lcIDsKK+mAo+W8viA+IHJlbmRhblwgOwor5YWo55+lID4gemVuY2hpXCA7Civnn6XkurogPiBjaGlqaW5cIDsKK+iMq+eEtiA+IGJvdXplblwgOwor6LyU57+8ID4gaG95b2t1XCA7CivovrLms5UgPiBub3Vob3VcIDsKK+atjOWUsSA+IGthc2hvdVwgOwor5Yip5oGvID4gcmlzb2t1XCA7CivlupzluoEgPiBmdWNob3VcIDsKK+ecn+aalyA+IG1ha3VyYVwgOwor5bq25a2QID4gc2hvc2hpXCA7Civoj6/lpaIgPiBreWFzaGFcIDsKK+iHs+mboyA+IHNoaW5hblwgOwor5YeN5q27ID4gdG91c2hpXCA7CivlirTkvb8gPiByb3VzaGlcIDsKK+W7ieWjsiA+IHJlbmJhaVwgOwor6YCg5b2iID4gem91a2VpXCA7CivmrbvkvZMgPiBzaGl0YWlcIDsKK+mAouW8lSA+IGFpYmlraVwgOwor5YGc6aCTID4gdGVpdG9uXCA7Civnmb7np5EgPiBoeWFra2FcIDsKK+mBuuWRiiA+IHl1aWdvdVwgOwor5Ye95pWwID4ga2Fuc3V1XCA7Civlhrfmt6EgPiByZWl0YW5cIDsKK+mAhuaJiyA+IHNha2F0ZVwgOwor55yf5pi8ID4gbWFoaXJ1XCA7Civlh7rmlrkgPiBkZWthdGFcIDsKK+mBk+WjqyA+IGRvdXNoaVwgOwor5YmN5a6YID4gemVua2FuXCA7CivliaPlo6sgPiBrZW5zaGlcIDsKK+WFrOebiiA+IGtvdWVraVwgOwor6Ii56LevID4gZnVuYWppXCA7CivpgqbkurogPiBob3VqaW5cIDsKK+eWjumalCA+IHNva2FrdVwgOwor5Yi25bi9ID4gc2VpYm91XCA7CivliqDlhaUgPiBrYW55dXVcIDsKK+WGjeeKryA+IHNhaWhhblwgOwor5YWI56uvID4gc2VudGFuXCA7CivovrLmsJEgPiBub3VtaW5cIDsKK+mBoOWbvSA+IG9uZ29rdVwgOwor5YW355SzID4gZ3VzaGluXCA7CivojbfmnK0gPiBuaWZ1ZGFcIDsKK+W4reasoSA+IHNla2lqaVwgOwor5Yip5b6XID4gcml0b2t1XCA7Civlhajnm7IgPiB6ZW5tb3VcIDsKK+atu+S6oSA+IHNoaWJvdVwgOwor5beo542jID4ga3lvanV1XCA7CivlsrjpoK0gPiBnYW50b3VcIDsKK+iQveS8jSA+IHJha3Vnb1wgOwor5q2j5YW1ID4gc2VpaGVpXCA7Civlhajnm5sgPiB6ZW5zZWlcIDsKK+i5iOmetCA+IHRhdGFyYVwgOwor6YCj5bivID4gcmVudGFpXCA7CivpgJ/luqYgPiBzb2t1ZG9cIDsKK+WIsOW6lSA+IHRvdXRlaVwgOwor5YWN56iOID4gbWVuemVpXCA7Civlho3niYggPiBzYWloYW5cIDsKK+WJr+WboCA+IGZ1a3VpblwgOwor55m656aBID4gaGFra2luXCA7CivoiIzpi5IgPiB6ZXBwb3VcIDsKK+mAoOW5oyA+IHpvdWhlaVwgOwor6YGT5aC0ID4gZG91am91XCA7CivmqJnnpLogPiBoeW91amlcIDsKK+W7g+WinyA+IGhhaWt5b1wgOwor5bmz5omLID4gaGlyYXRlXCA7Civov5Tmna8gPiBoZW5wYWlcIDsKK+WBnOmbuyA+IHRlaWRlblwgOwor5YGl6ZeYID4ga2VudG91XCA7CivoiJ/pgYsgPiBzaHV1dW5cIDsKK+aoquebriA+IHlva29tZVwgOwor5bmz5oiQID4gaGVpc2VpXCA7Civlh7Hml4sgPiBnYWlzZW5cIDsKK+WOreOAhSA+IGl5YWl5YVwgOwor55uu5qyhID4gbW9rdWppXCA7Civlhrfms4kgPiByZWlzZW5cIDsKK+WFqOeZkiA+IHplbicneXVcIDsKK+eZveejgSA+IGhha3VqaVwgOwor6L+U5pysID4gaGVucG9uXCA7CivliKXlvaIgPiBiZWtrZWlcIDsKK+W5u+aDsyA+IGdlbnNvdVwgOwor55yL5p2/ID4ga2FuYmFuXCA7Civlho3nh4MgPiBzYWluZW5cIDsKK+edgOaEjyA+IGNoYWt1aVwgOwor5YaF54q2ID4gbmFpam91XCA7CivliKXlvZMgPiBiZXR0b3VcIDsKK+i/keadsSA+IGtpbnRvdVwgOwor5bu65YW3ID4gdGF0ZWd1XCA7Civov5HmnaUgPiBraW5yYWlcIDsKK+i/lOabuCA+IGhlbnNob1wgOwor5bqP5bmVID4gam9tYWt1XCA7CivlgbTpjpYgPiBzb2t1c2FcIDsKK+amguirliA+IGdhaXJvblwgOwor55eF6LqvID4gYnlvdWt1XCA7Civmpb3orZwgPiBnYWt1ZnVcIDsKK+WGt+axlyA+IHJlaWthblwgOwor5YiG5ouFID4gYnVudGFuXCA7CivovqPmsrkgPiByYXpleXVcIDsKK+mrmOmFjSA+IGtvdWhhaVwgOwor5bu35YaFID4gdGVpbmFpXCA7CivliofljJYgPiBnZWtpa2FcIDsKK+WGt+awtCA+IHJlaXN1aVwgOwor5Yid5b+XID4gc2hvc2hpXCA7CivlhaznlLAgPiBrb3VkZW5cIDsKK+mChOWFgyA+IGthbmdlblwgOwor6YCV5bqtID4ga2VpdGVpXCA7CivliKnluYUgPiByaWhhYmFcIDsKK+WFrOeUqCA+IGtvdXlvdVwgOwor5Yeh5pu4ID4gYm9uc2hvXCA7CivpgKPls7AgPiByZW5wb3VcIDsKK+WKh+WLmSA+IGdla2ltdVwgOwor5beh54upID4ganVuc2h1XCA7CivliIfmiYsgPiBraXJldGVcIDsKK+W5u+aAqiA+IGdlbmthaVwgOwor6L+95oWVID4gdHN1aWJvXCA7CivmrabkvqAgPiBidWt5b3VcIDsKK+eZuuegsiA+IGhhcHBvdVwgOwor5buD5Z2RID4gaGFpa291XCA7CivouqvoqLEgPiBtaW1vdG9cIDsKK+mBqeWQpiA+IHRla2loaVwgOwor5Ye65o6bID4gZGVnYWtlXCA7Civlhobnhp8gPiBlbmp1a3VcIDsKK+WFqOeUsiA+IHplbmtvdVwgOwor6L+R5pmvID4ga2lua2VpXCA7CivmrYzliocgPiBrYWdla2lcIDsKK+mAo+WxsSA+IHJlbnphblwgOwor6auY6YKBID4ga291bWFpXCA7CivliY3lpY8gPiB6ZW5zb3VcIDsKK+W6l+WxiyA+IG1pc2V5YVwgOwor5Yem5pa5ID4gc2hvaG91XCA7CivoiKrotbAgPiBrb3Vzb3VcIDsKK+WHpuaWrSA+IHNob2RhblwgOwor6YGN5ZyoID4gaGVuemFpXCA7CivmraPkvb8gPiBzZWlzaGlcIDsKK+WIu+WtlyA+IGtva3VqaVwgOwor5Yil5be7ID4gYmVra2FuXCA7CivlhpfmvKsgPiBqb3VtYW5cIDsKK+amguimsyA+IGdhaWthblwgOwor5YmN5aScID4gemVuJyd5YVwgOwor5bu65YCkID4gdGF0ZW5lXCA7CivlubvlvbEgPiBnZW4nJ2VpXCA7CivpgKPlsIQgPiByZW5zaGFcIDsKK+WJjeWjsiA+IG1hZXVyaVwgOwor5qaC6KaBID4gZ2FpeW91XCA7Civlgo3ovKkgPiBob3ViYWlcIDsKK+eZveeciSA+IGhha3ViaVwgOwor5bOh6YOoID4ga3lvdWJ1XCA7CivliLblrpogPiBzZWl0ZWlcIDsKK+ato+S8nSA+IHNlaWRlblwgOwor6Lu9572qID4ga2VpemFpXCA7CivnlarpoK0gPiBiYW50b3VcIDsKK+WIneW5tCA+IHNob25lblwgOwor6L+w5oeQID4ganVra2FpXCA7CivovpvmsJcgPiBzaGlua2lcIDsKK+alveimsyA+IHJha2thblwgOwor5Ymy5ZCIID4gd2FyaWFpXCA7CivmpbzoprMgPiByb3VrYW5cIDsKK+iLpueXmyA+IGt1dHN1dVwgOwor5biM5rGCID4ga2lreXV1XCA7Civlub7lubQgPiBpa3VuZW5cIDsKK+WGrOavmyA+IGZ1eXVnZVwgOwor5YWI55+lID4gc2VuY2hpXCA7CivlupflrZAgPiB0YW5ha29cIDsKK+mtmue+pCA+IGd5b2d1blwgOwor6YGh5Y+KID4gc29reXV1XCA7CivpgIDlvbkgPiB0YWlla2lcIDsKK+W5vOW5tCA+IHlvdW5lblwgOwor6L+C5puyID4gdWt5b2t1XCA7CivlhKrnrYkgPiB5dXV0b3VcIDsKK+i7jeiRrCA+IGd1bnNvdVwgOwor5Ymy5Y2wID4gd2FyaWluXCA7Civoj6/llYYgPiBrYXNob3VcIDsKK+WIqeWwvyA+IHJpbnlvdVwgOwor5YW154e5ID4gaGVpc2VuXCA7Civlu7bkvLggPiBlbnNoaW5cIDsKK+W6iuWxiyA+IHRva295YVwgOwor6YCA5bu3ID4gdGFpdGVpXCA7CivmqKnnj74gPiBnb25nZW5cIDsKK+WBtOmDqCA+IHNva3VidVwgOwor5biw5pydID4ga2ljaG91XCA7CivluLDmnI0gPiBraWZ1a3VcIDsKK+ecvOW6lSA+IGdhbnRlaVwgOwor6YCA5buDID4gdGFpaGFpXCA7CivliKXlsYUgPiBiZWtreW9cIDsKK+eVmemjsiA+IHJ5dXVpblwgOwor5Yiq5a6aID4gc2FudGVpXCA7Civpga7lhYkgPiBzaGFrb3VcIDsKK+WJjeWdiiA+IHplbmJvdVwgOwor6Luf6IaPID4gbmFua291XCA7CivmrITlpJYgPiByYW5nYWlcIDsKK+WGoOawtCA+IGthbnN1aVwgOwor5Yil5bCBID4gYmVwcHV1XCA7CivnnLzluK8gPiBnYW50YWlcIDsKK+W5s+W5tCA+IGhlaW5lblwgOwor5bmz5bmzID4gaGVpaGVpXCA7Civoh4bpnaIgPiBva3VtZW5cIDsKK+W7g+WTgSA+IGhhaWhpblwgOwor6L+35b2pID4gbWVpc2FpXCA7CivluILmsJEgPiBzaGltaW5cIDsKK+W6hOWxiyA+IHNob3V5YVwgOwor6Imy6ImyID4gaXJvaXJvXCA7Civpq5jouI8gPiBrb3V0b3VcIDsKK+WGoOavmyA+IGthbm1vdVwgOwor5beo5ryiID4ga3lva2FuXCA7CivluLjmlbAgPiBqb3VzdXVcIDsKK+WJteWIiiA+IHNvdWthblwgOwor5YWI55m7ID4gc2VudG91XCA7CivliY3lm54gPiB6ZW5rYWlcIDsKK+i+suaelyA+IG5vdXJpblwgOwor5bmz5bi4ID4gaGVpam91XCA7Civoi5TnmawgPiB0YWlzZW5cIDsKK+eZsueZhyA+IHRlbmthblwgOwor6I2J5qC5ID4gc291a29uXCA7CivnmbvnlKggPiB0b3V5b3VcIDsKK+mrmOi3nSA+IGtvdWt5b1wgOwor5Yik5a6aID4gaGFudGVpXCA7CivliKTlrpggPiBoYW5nYW5cIDsKK+W3neeArCA+IGthd2FzZVwgOwor5bu35LiBID4gdGVpdGVpXCA7CivnmbrnlJ8gPiBoYXNzZWlcIDsKK+i+suadkSA+IG5vdXNvblwgOwor5YG06L+RID4gc29ra2luXCA7Civnm6TmoLkgPiBiYW5rb25cIDsKK+iOmuW4rSA+IGVuc2VraVwgOwor55yf5oSPID4gc2hpbicnaVwgOwor6a2C6IOGID4ga29udGFuXCA7CivliJfls7YgPiByZXR0b3VcIDsKK+i9n+eEtiA+IGdvdXplblwgOwor5buD5ZCIID4gaGFpZ291XCA7CivliKXlrKogPiBiZXBwaW5cIDsKK+asoOWTgSA+IGtlcHBpblwgOwor6a2a57ayID4gZ3lvbW91XCA7CivpgKPlpY8gPiByZW5zb3VcIDsKK+WGhea5ryA+IHVjaGl5dVwgOwor55Sf6bqpID4gbmFtYWZ1XCA7Civlub3lsYUgPiB5dXVreW9cIDsKK+mAo+WknCA+IHJlbicneWFcIDsKK+W3oea8lCA+IGp1bicnZW5cIDsKK+WIhuW6lyA+IGJ1bnRlblwgOwor5q2M5LyaID4gdXRha2FpXCA7CivlhoXmuK8gPiBuYWlrb3VcIDsKK+WFrOeEtiA+IGtvdXplblwgOwor5be75q+bID4gbWFraWdlXCA7Civou43oiaYgPiBndW5rYW5cIDsKK+mAo+WjsCA+IHJlbmpvdVwgOwor6Ieq6YeNID4gamljaG91XCA7CivlhoXmuIggPiBuYWlzYWlcIDsKK+WFiOeVqiA+IHNlbmJhblwgOwor6YGK5ZCfID4geXV1Z2luXCA7CivpgYrlkJsgPiB5dXVrdW5cIDsKK+i7jeiIuSA+IGd1bnNlblwgOwor6I+v5YyXID4ga2Fob2t1XCA7CivojYnmnKwgPiBzb3Vob25cIDsKK+ebsuaWrSA+IG1vdWRhblwgOwor552A5bC6ID4ga2lqYWt1XCA7CivoiajoiZ8gPiBtb3Vkb3VcIDsKK+i/lOaIuyA+IGhlbnJlaVwgOwor5YWI55SfID4gc2Vuc2VpXCA7CivliarliIAgPiBzZW50b3VcIDsKK+WBvei2syA+IGdpc29rdVwgOwor6I2J5pu4ID4gc291c2hvXCA7CivlhajnhLYgPiB6ZW56ZW5cIDsKK+WIl+WvpyA+IHJlZW5pblwgOwor6a2a57K+ID4gZ3lvc2VpXCA7CivoiaboiYcgPiBrYW50ZWlcIDsKK+iJpuiIuSA+IGthbnNlblwgOwor5YaF5rW3ID4gbmFpa2FpXCA7Civnm67mlrkgPiBtZWthdGFcIDsKK+WHoeaJjSA+IGJvbnNhaVwgOwor5Yeh5omLID4gYm9uc2h1XCA7CivlhYnnkrAgPiBrb3VrYW5cIDsKK+WFheeUqCA+IGp1dXlvdVwgOwor6Lyd55+zID4ga2lzZWtpXCA7CivprZrnsokgPiBneW9mdW5cIDsKK+WHoeaIpiA+IGJvbnNlblwgOwor5bq45ZCbID4geW91a3VuXCA7CivlgKTpoIMgPiBuZWdvcm9cIDsKK+WHtuW+kiA+IGt5b3V0b1wgOwor55aO6YCaID4gc290c3V1XCA7Civoh7Pov5EgPiBzaGlraW5cIDsKK+W5ouW5oSA+IGRvdWJhblwgOwor5bmz5bGLID4gaGlyYXlhXCA7CivpgYXlj4IgPiBjaGlzYW5cIDsKK+mAhuWtkCA+IHNha2Fnb1wgOwor55m954uQID4gYnlha2tvXCA7CivlgKTpnpggPiBuZXpheWFcIDsKK+WHuuW6qyA+IHNodWtrb1wgOwor6L+95bC+ID4gdHN1aWJpXCA7CivliIDlt6UgPiB0b3Vrb3VcIDsKK+WHuuW6nCA+IHNodXBwdVwgOwor5Yid5amaID4gc2hva29uXCA7Civlh7rlupcgPiBkZW1pc2VcIDsKK+WGheayuyA+IG5haWNoaVwgOwor6L6y5pS/ID4gbm91c2VpXCA7CivliZvli4cgPiBnb3V5dXVcIDsKK+asoOWLpCA+IGtla2tpblwgOwor5YWx5ryUID4ga3lvdWVuXCA7Civoh6rpgakgPiBqaXRla2lcIDsKK+WHoeaFriA+IGJvbnJ5b1wgOwor5buD5YiKID4gaGFpa2FuXCA7CivpgIDlrpggPiB0YWlrYW5cIDsKK+ecvOWtlCA+IGdhbmtvdVwgOwor55WM6Z2iID4ga2FpbWVuXCA7Civlt6Xms5UgPiBrb3Vob3VcIDsKK+mBr+S4liA+IHRvbnNlaVwgOwor5bmz5a6aID4gaGVpdGVpXCA7Civoj6/lhpEgPiBrYWNodXVcIDsKK+i8queVqiA+IHJpbmJhblwgOwor5bmy5a6zID4ga2FuZ2FpXCA7Civlh7rluKsgPiBzdWlzaGlcIDsKK+mAoOWeiyA+IHpvdWtlaVwgOwor6Iiq6KGMID4ga291a291XCA7CivliY3lkI0gPiB6ZW5tZWlcIDsKK+WHveW2uiA+IGthbnJlaVwgOwor6YGT5YWDID4gZG91Z2VuXCA7CivnmYznoJQgPiBnYW5rZW5cIDsKK+WJjeWPtyA+IHplbmdvdVwgOwor5Yik5aOrID4gaGFuc2hpXCA7CivliY3lj7IgPiB6ZW5zaGlcIDsKK+i8queUnyA+IHJpbnNlaVwgOwor5YaF5rCXID4gdWNoaWtpXCA7Civlgo3oqJMgPiBib3VrdW5cIDsKK+ecuOWtkCA+IGJvdXNoaVwgOwor6YGF5Yq5ID4gY2hpa291XCA7Civnm5vmmpEgPiBzZWlzaG9cIDsKK+i/keaDhSA+IGtpbmpvdVwgOwor5buD5YW1ID4gaGFpaGVpXCA7CivlhY3nirYgPiBtZW5qb3VcIDsKK+WFqOa9sCA+IHplbmthaVwgOwor5bqD5aSnID4ga291ZGFpXCA7Civpq5joq5YgPiBrb3Vyb25cIDsKK+W4huahgSA+IGhvZ2V0YVwgOwor6auY6KuHID4ga291ZGFuXCA7CivmqZ/mpa0gPiBraWd5b3VcIDsKK+mAk+WilyA+IHRlaXpvdVwgOwor5bmV5bqcID4gYmFrdWZ1XCA7CivluK3mjbIgPiBzZWtrZW5cIDsKK+iNt+W9uSA+IG5peWFrdVwgOwor5bm75ae/ID4gZ2Vuc2hpXCA7CivlhoXmrr8gPiBuYWlkZW5cIDsKK+W6g+WjriA+IGtvdXNvdVwgOwor5YKN6KazID4gYm91a2FuXCA7Civoj6/lg5EgPiBrYWt5b3VcIDsKK+W4neaUvyA+IHRlaXNlaVwgOwor55WM6ZqIID4ga2Fpd2FpXCA7CivliIblsIEgPiBidW5wb3VcIDsKK+WIpeWgsSA+IGJlcHBvdVwgOwor5YWs5rqWID4ga291anVuXCA7Civlgo3oppYgPiB3YWtpbWlcIDsKK+WJjeWNiiA+IHplbnBhblwgOwor55m954WZID4gaGFrdWVuXCA7Civlub3lpZEgPiB5dXVrZWlcIDsKK+eUn+muriA+IHNlaXNlblwgOwor6IuU54q2ID4gdGFpam91XCA7CivprZTnrJsgPiBtYXRla2lcIDsKK+WJteS4liA+IHNvdXNlaVwgOwor55uG5qC9ID4gYm9uc2FpXCA7Civpq5joqIAgPiBrb3VnZW5cIDsKK+i3s+mmrCA+IGNob3ViYVwgOwor5bi45oWLID4gam91dGFpXCA7CivluoPloLQgPiBoaXJvYmFcIDsKK+W6g+WgsSA+IGtvdWhvdVwgOwor5bGx6aGbID4gc2FudGVuXCA7CivliIblrZAgPiBidW5zaGlcIDsKK+iHqui6qyA+IGppc2hpblwgOwor5YW15rOVID4gaGVpaG91XCA7CivlgZzou4ogPiB0ZWlzaGFcIDsKK+W5tOWniyA+IG5lbnNoaVwgOwor6auY6KanID4ga291cmFuXCA7CivnlJjpr5sgPiBhbWFkYWlcIDsKK+i/keW9sSA+IGtpbicnZWlcIDsKK+W6g+WfnyA+IGtvdWlraVwgOwor5qiq5rqiID4gb3VpdHN1XCA7Civlhqzml6UgPiBmdXl1YmlcIDsKK+mrmOimiyA+IHRha2FtaVwgOwor5YOn57axID4gc291Z291XCA7CivliY3liY0gPiBtYWVtYWVcIDsKK+W6p+WNkyA+IHphdGFrdVwgOwor5YWs5rW3ID4ga291a2FpXCA7CivlhqDmnKggPiBrYWJ1a2lcIDsKK+iJr+e4gSA+IHJ5b3VlblwgOwor5Ymb5YGlID4gZ291a2VuXCA7Civlgb3oqLwgPiBnaXNob3VcIDsKK+mBjuS/oSA+IGthc2hpblwgOwor5biC5pyJID4gc2hpeXV1XCA7Civluq3liY0gPiB0ZWl6ZW5cIDsKK+WEqueUnyA+IHl1dXNlaVwgOwor5qSc6LuKID4ga2Vuc2hhXCA7Civlupflk6EgPiB0ZW4nJ2luXCA7CivpgLLljJYgPiBzaGlua2FcIDsKK+aoueawtyA+IGp1aHlvdVwgOwor5bqE5ZySID4gc2hvdWVuXCA7Civoh6rotrMgPiBqaXNva3VcIDsKK+mqqOi6qyA+IGhvbmVtaVwgOwor5YWt5rOVID4gcm9wcG91XCA7Civlh7rlrrYgPiBzaHVra2VcIDsKK+W5suWkqSA+IGthbnRlblwgOwor5Yeh5bq2ID4gYm9uc2hvXCA7Civpq5joo4EgPiBrb3VzYWlcIDsKK+eUu+mbhiA+IGdhc2h1dVwgOwor5YWs5rOVID4ga291aG91XCA7CivliIblqKkgPiBidW5iZW5cIDsKK+i8queKtiA+IHJpbmpvdVwgOwor6Imy57O4ID4gaXJvaXRvXCA7CivnlLvpmpwgPiBnYXNob3VcIDsKK+W5s+WjjCA+IGhlaWpvdVwgOwor5bGx6ZyKID4gc2FucmVpXCA7CivlhpnmnKwgPiBzaGFob25cIDsKK+WFpea1tyA+IGlyaXVtaVwgOwor6LmC6LqqID4ganV1cmluXCA7CivouYLoupkgPiBqdXVyaW5cIDsKK+W5leWxiyA+IG1ha3V5YVwgOwor6ay857GNID4ga2lzZWtpXCA7CivliLvljbAgPiBrb2t1aW5cIDsKK+WFieeCuSA+IGtvdXRlblwgOwor5Yeh5bi4ID4gYm9uam91XCA7Civov7flpoQgPiBtZWltb3VcIDsKK+eXm+iLpiA+IHRzdXVrdVwgOwor55uG5pmvID4gYm9ua2VpXCA7CivoiLnojbcgPiBmdW5hbmlcIDsKK+mAo+WQnyA+IHJlbmdpblwgOwor5Yid5ZueID4gc2hva2FpXCA7Civlu4PkurogPiBoYWlqaW5cIDsKK+WJm+S9kyA+IGdvdXRhaVwgOwor6LuK57eaID4gc2hhc2VuXCA7Civlh6DluLMgPiBraWNob3VcIDsKK+WFqOayuyA+IHplbmNoaVwgOwor6YCj5ZCNID4gcmVubWVpXCA7CivpgKPlkIggPiByZW5nb3VcIDsKK+eahua4iCA+IGthaXNhaVwgOwor55uy5oOzID4gbW91c291XCA7CivliJHloLQgPiBrZWlqb3VcIDsKK+W5tOWgsSA+IG5lbnBvdVwgOwor6YCA5aC0ID4gdGFpam91XCA7CivlhoXmpJwgPiBuYWlrZW5cIDsKK+WGjeagoSA+IHNhaWtvdVwgOwor55u45oCnID4gYWlzaG91XCA7Civoi6Xmua8gPiB3YWtheXVcIDsKK+mBi+S8kSA+IHVua3l1dVwgOwor55u45oCdID4gc291c2hpXCA7CivlhazmsJEgPiBrb3VtaW5cIDsKK+W4guaXpSA+IGljaGliaVwgOwor6Iqx55KwID4gaGFuYXdhXCA7Civmp5jnm7ggPiB5b3Vzb3VcIDsKK+iPr+S4rSA+IGthY2h1dVwgOwor5YG46KaWID4gdG91c2hpXCA7CivliY3lgr4gPiB6ZW5rZWlcIDsKK+mxiOWtkCA+IHRhcmFrb1wgOwor5bGN6aq4ID4gc2hpZ2FpXCA7Civoh6rosqwgPiBqaXNla2lcIDsKK+WIhuWkliA+IGJ1bmdhaVwgOwor55uj5oi/ID4ga2FuYm91XCA7CivluIPmlZkgPiBmdWt5b3VcIDsKK+mAoOWPjSA+IHpvdWhhblwgOwor5YiG5aOyID4gYnVuYmFpXCA7Civlh4Tmg6ggPiBzZWlzYW5cIDsKK+ebm+aMmSA+IHNlaWt5b1wgOwor5bmy5Z+OID4ga2Fuam91XCA7Civou73nm64gPiBrYXJ1bWVcIDsKK+W4sOW/gyA+IGtpc2hpblwgOwor6IyY5p6dID4gcmVpc2hpXCA7Civnm7jlvbkgPiBhaXlha3VcIDsKK+W4guaUvyA+IHNoaXNlaVwgOwor5bqn5YWDID4gemFtb3RvXCA7Civlho3mnaUgPiBzYWlyYWlcIDsKK+WFrOatoyA+IGtvdXNlaVwgOwor5YW85qWtID4ga2VuZ291XCA7Civnm77luqcgPiB0YXRlemFcIDsKK+WGt+aIvyA+IHJlaWJvdVwgOwor5Yi25YuVID4gc2VpZG91XCA7CivoibbnrJEgPiBlbnNob3VcIDsKK+ebuOW9kyA+IHNvdXRvdVwgOwor5beh5qScID4ganVua2VuXCA7CivlubPlnaYgPiBoZWl0YW5cIDsKK+WFteaoqSA+IGhlaWtlblwgOwor5Ya35oimID4gcmVpc2VuXCA7Civnmb7muIggPiBrdWRhcmFcIDsKK+WFqOautSA+IHplbmRhblwgOwor6Iez6KuWID4gc2hpcm9uXCA7CivoiLnoiZkgPiBzZW5zb3VcIDsKK+mAneWOuyA+IHNlaWt5b1wgOwor5bGx6ZaTID4geWFtYWFpXCA7CivliLrliLogPiBpcmFpcmFcIDsKK+eak+atryA+IGtvdXNoaVwgOwor5Yil5ZOBID4gYmVwcGluXCA7CivlubPlnYcgPiBoZWlraW5cIDsKK+WxsemWgCA+IHNhbm1vblwgOwor5YKt6Ii5ID4geW91c2VuXCA7Civlhobmn7EgPiBlbmNodXVcIDsKK+eUn+mhniA+IHNlaXJ1aVwgOwor5bmz5ZywID4gaGVpY2hpXCA7CivpgKPli5UgPiByZW5kb3VcIDsKK+WJjeS+vyA+IHplbmJpblwgOwor6Iez6KqgID4gc2hpc2VpXCA7CivlurjkurogPiB5b3VqaW5cIDsKK+W5tOWbniA+IG5lbmthaVwgOwor6YCA5ZujID4gdGFpZGFuXCA7Civnm7LlvpMgPiBtb3VqdXVcIDsKK+WJjeS+iyA+IHplbnJlaVwgOwor5YaX5paHID4gam91YnVuXCA7CivmqYvmnrYgPiBreW91a2FcIDsKK+WFqOaspyA+IHplbicnb3VcIDsKK+i7n+emgSA+IG5hbmtpblwgOwor6YCf5Yq5ID4gc29ra291XCA7Civnnb7kuLggPiBrb3VnYW5cIDsKK+iHs+iogCA+IHNoaWdlblwgOwor5beo5p2QID4ga3lvemFpXCA7CivlhYnmupAgPiBrb3VnZW5cIDsKK+mAo+WIpCA+IHJlbnBhblwgOwor6LuS56uvID4gbm9raWJhXCA7CivluKvlvJ8gPiBzaGl0ZWlcIDsKK+WJjeS7tiA+IHplbmtlblwgOwor5YWs5qipID4ga291a2VuXCA7CivlsY/poqggPiBieW91YnVcIDsKK+ebuOW4rSA+IGFpc2VraVwgOwor5YmN5LujID4gemVuZGFpXCA7CivnlJ/pnaIgPiBzZWltZW5cIDsKK+iLpuaxgSA+IG5pZ2FyaVwgOwor5YmN5Lq6ID4gemVuamluXCA7CivliIflnLAgPiBraXJlamlcIDsKK+WNiuOAhSA+IGhhbmhhblwgOwor6YGB5LiWID4gdG9uc2VpXCA7Civoh7PopoEgPiBzaGl5b3VcIDsKK+WHtuWkoiA+IGt5b3VtdVwgOwor5YiG5ZywID4gYnVuY2hpXCA7CivnnIvlroggPiBrYW5zaHVcIDsKK+iJtuemjyA+IGVucHVrdVwgOwor5YWF5rqAID4ganV1bWFuXCA7Civoi6XmsJcgPiB3YWthZ2VcIDsKK+eXheiLpiA+IGJ5b3VrdVwgOwor5YWo5qipID4gemVua2VuXCA7CivojZLlu4MgPiBrb3VoYWlcIDsKK+eZuuazoSA+IGhhcHBvdVwgOwor55Sj6ZmiID4gc2FuJydpblwgOwor5YiG5ZujID4gYnVuZGFuXCA7Civoh6roqLsgPiBqaWNodXVcIDsKK+W6g+WOnyA+IGtvdWdlblwgOwor5Yid5Y+3ID4gc2hvZ291XCA7CivluK3lt7sgPiBzZWtrZW5cIDsKK+WGjeaVlyA+IHNhaWhhaVwgOwor5YmN5LiWID4gemVuc2VpXCA7CivpgKDlhbUgPiB6b3VoZWlcIDsKK+mAuOS6iyA+IGl0c3VqaVwgOwor5YO755uuID4gaGlnYW1lXCA7Civlgq3ogZggPiB5b3VoZWlcIDsKK+msseepjSA+IHVzc2VraVwgOwor5beo5pifID4ga3lvc2VpXCA7CivliIDlnK0gPiB0b3VrZWlcIDsKK+WGiuaVsCA+IHNhc3N1dVwgOwor5bm85ZCbID4geW91a3VuXCA7CivnmbrmsZcgPiBoYWtrYW5cIDsKK+eUu+mLsiA+IGdhYnlvdVwgOwor5Ye65Z+OID4gZGVqaXJvXCA7CivlubzlkI0gPiB5b3VtZWlcIDsKK+i7iueqkyA+IHNoYXNvdVwgOwor5bCP6by7ID4ga29iYW5hXCA7CivlhoXml6ggPiBuYWlzaGlcIDsKK+eXm+e9tSA+IHRzdXViYVwgOwor6Ieq6KaaID4gamlrYWt1XCA7Civnlr7oi6YgPiBzaGlra3VcIDsKK+WGheaWuSA+IG5haWhvdVwgOwor5YG96JasID4gZ2l5YWt1XCA7Civnl4Xoh6UgPiBieW91Z2FcIDsKK+W4veWtkCA+IGJvdXNoaVwgOwor5YWx5qCEID4ga3lvdWVpXCA7Civou4rnqK4gPiBzaGFzaHVcIDsKK+WApOmBhyA+IGNoaWd1dVwgOwor5bm25ZGRID4gaGVpZG9uXCA7Civluorlh6AgPiBzaG91Z2lcIDsKK+W5vuWNgyA+IGlrdXNlblwgOwor6auY6JGXID4ga291Y2hvXCA7CivovrLlt6UgPiBub3Vrb3VcIDsKK+Wwj+m6piA+IGtvbXVnaVwgOwor5qSc6KiOID4ga2VudG91XCA7CivliIbllrYgPiBidW4nJ2VpXCA7Civmo5Lpi7wgPiBib3Vrb3VcIDsKK+mAgeWRiCA+IHNvdXRlaVwgOwor5bqn5LitID4gemFjaHV1XCA7CivlhoXmlL8gPiBuYWlzZWlcIDsKK+WGheaUuyA+IG5haWtvdVwgOwor5bm25ZCIID4gaGVpZ291XCA7CivlhazmoL0gPiBrb3VzYWlcIDsKK+S/rumZoiA+IHNodXVpblwgOwor5bqV5YCkID4gc29rb25lXCA7CivluLDlsZ4gPiBraXpva3VcIDsKK+W3peaVsCA+IGtvdXN1dVwgOwor5YW15pu5ID4gaGVpc291XCA7CivlhbXmm7ggPiBoZWlzaG9cIDsKK+WIkeWQjSA+IGtlaW1laVwgOwor6LuN56S8ID4gZ3VucmVpXCA7CivmqLnmnKggPiBqdW1va3VcIDsKK+mrmOiPnCA+IHRha2FuYVwgOwor55u45a++ID4gc291dGFpXCA7CivpgKPkv4IgPiByZW5rZWlcIDsKK+W5tOWPtyA+IG5lbmdvdVwgOwor5qSc6KaWID4ga2Vuc2hpXCA7CivlhqXmg7MgPiBtZWlzb3VcIDsKK+iKseeBqyA+IGhhbmFiaVwgOwor5bGV6ZaLID4gdGVua2FpXCA7Civnm7jlrr8gPiBhaXlhZG9cIDsKK+iInuiIniA+IG1haW1haVwgOwor6YCA5Y67ID4gdGFpa3lvXCA7CivlhajmoKEgPiB6ZW5rb3VcIDsKK+W4r+WwgSA+IG9iaWZ1dVwgOwor5YeN5a+SID4gdG91a2FuXCA7CivlubPljp8gPiBoZWlnZW5cIDsKK+ecjOWkliA+IGtlbmdhaVwgOwor5YeN5a6zID4gdG91Z2FpXCA7CivlsbHph44gPiBzYW4nJ3lhXCA7CivpgI/lhpkgPiB0b3VzaGFcIDsKK+WItuS7pCA+IHNlaXJlaVwgOwor5YWt5pysID4gcm9wcG9uXCA7Civoi6bmpb0gPiBrdXJha3VcIDsKK+W4sOWuhSA+IGtpdGFrdVwgOwor55uy5bCEID4gbW91c2hhXCA7Civnlr3ohasgPiBzb3Nob3VcIDsKK+aoquaguSA+IHlva29uZVwgOwor5bm+5YiGID4gaWt1YnVuXCA7CivnlbDoqqwgPiBpc2V0c3VcIDsKK+mtlOeQgyA+IG1ha3l1dVwgOwor5Ye25ZmoID4ga3lvdWtpXCA7CivliJ3lhqwgPiBzaG90b3VcIDsKK+S/nemdqSA+IGhva2FrdVwgOwor5YaN5oyZID4gc2Fpa3lvXCA7Civnm67lsY4gPiBtZWt1c29cIDsKK+S/iummrCA+IHNodW5tZVwgOwor55Sy6YiRID4ga291YmFuXCA7CivlhavmnKwgPiBoYXBwb25cIDsKK+WFrOaciSA+IGtvdXl1dVwgOwor5YGP6KaLID4gaGVua2VuXCA7CivlupzkuK0gPiBmdWNodXVcIDsKK+ebruWwuyA+IG1lamlyaVwgOwor5YW25pa5ID4gc29uYXRhXCA7Civnm5vlubQgPiBzZWluZW5cIDsKK+Wwj+m0qCA+IGtvZ2Ftb1wgOwor5YaN5oudID4gc2FpaGFpXCA7CivpgIDli6IgPiB0YWlzZWlcIDsKK+i/lOWgsSA+IGhlbnBvdVwgOwor6YCj5LqYID4gcmVua291XCA7Civlub3lhqUgPiB5dXVtZWlcIDsKK+i8ieeCrSA+IHNhaXRhblwgOwor5YaF5o6iID4gbmFpdGFuXCA7CivmqKnmn4QgPiBrZW5wZWlcIDsKK+Wwj+mzpSA+IGtvdG9yaVwgOwor5bm05YqfID4gbmVua291XCA7CivnlLDph44gPiBkZW4nJ3lhXCA7CivlhbXmlbAgPiBoZWlzdXVcIDsKK+ebquWwvSA+IHRvdWppblwgOwor55y85YmNID4gZ2FuemVuXCA7Civlhajmm7ggPiB6ZW5zaG9cIDsKK+iJpuegsiA+IGthbnBvdVwgOwor5bqX5Li7ID4gdGVuc2h1XCA7Civou6LnlJ8gPiB0ZW5zZWlcIDsKK+i2s+mnhCA+IGFzaGlkYVwgOwor5YWr5pmvID4gaGFra2VpXCA7CivnmbvmpbwgPiB0b3Vyb3VcIDsKK+S/nemanCA+IGhvc2hvdVwgOwor55uu5a6JID4gbWV5YXN1XCA7CivlhoXmjL8gPiBuYWlzb3VcIDsKK+amgueulyA+IGdhaXNhblwgOwor5YiG5Y6YID4gYnVucmluXCA7Civov73liqAgPiB0c3Vpa2FcIDsKK+aoquacqCA+IHlva29naVwgOwor5YSq5rilID4geXV1YWt1XCA7Civlho3miKYgPiBzYWlzZW5cIDsKK+W4huW9sSA+IGhva2FnZVwgOwor5bm05YidID4gbmVuc2hvXCA7CivohbDplpMgPiB5b3VrYW5cIDsKK+iNieWxiyA+IHNvdW9rdVwgOwor5YWs5piOID4ga291bWVpXCA7CivlubTliIogPiBuZW5rYW5cIDsKK+W5tOWIhiA+IG5lbmJ1blwgOwor5YWo5pm6ID4gemVuY2hpXCA7CivpgIblhZAgPiBzYWthZ29cIDsKK+WFqOaZryA+IHplbmtlaVwgOwor5bmV5Za2ID4gYmFrdWVpXCA7CivlsI/psK0gPiBrb2hhZGFcIDsKK+WIpeS9vyA+IGJlc3NoaVwgOwor5bmz5YiGID4gaGVpYnVuXCA7Civnm7jlp6YgPiBzb3VrYW5cIDsKK+WFreaWuSA+IHJvcHBvdVwgOwor5Yik5L6LID4gaGFucmVpXCA7CivlubPlh6EgPiBoZWlib25cIDsKK+eYi+eZsiA+IGZ1dXRlblwgOwor5bm75YOPID4gZ2Vuem91XCA7CivlhavmlrkgPiBoYXBwb3VcIDsKK+i/veWIhiA+IG9pd2FrZVwgOwor6bCl5aSrID4geWFtb21lXCA7CivnlKjph5EgPiB5b3VraW5cIDsKK+mtlOeJqSA+IG1hbW9ub1wgOwor5YWs5paHID4ga291YnVuXCA7CivnnLzlhYkgPiBnYW5rb3VcIDsKK+iMtuW3viA+IGNoYWtpblwgOwor55u45aW9ID4gc291Z291XCA7CivliJHlhbggPiBrZWl0ZW5cIDsKK+i/keWcqCA+IGtpbnphaVwgOwor5Yil5Lu2ID4gYmVra2VuXCA7CivpgJPkvJ0gPiB0ZWlkZW5cIDsKK+Wxsei+uiA+IHlhbWFiZVwgOwor5YaF5omAID4gbmFpc2hvXCA7CivnlaXoqJggPiByeWFra2lcIDsKK+W3p+aJiyA+IGtvdXNodVwgOwor5YaF5oimID4gbmFpc2VuXCA7CivnnJ/lkbMgPiBzaGlubWlcIDsKK+i6q+epuiA+IG1pc29yYVwgOwor6L+R5ZugID4ga2luJydpblwgOwor6I2J5a2QID4gc291c2hpXCA7CivoiovniYggPiBpbW9iYW5cIDsKK+WFqOaWhyA+IHplbmJ1blwgOwor5beh5oudID4ganVucGFpXCA7CivnlKPph5EgPiBzYW5raW5cIDsKK+eZu+agoSA+IHRvdWtvdVwgOwor5YWo5pWwID4gemVuc3V1XCA7Civnm6PlroggPiBrYW5zaHVcIDsKK+W3peaJiyA+IGtvdXNodVwgOwor5bel5oi/ID4ga291Ym91XCA7CivlhajmlZcgPiB6ZW5wYWlcIDsKK+ecn+WQpiA+IHNoaW5waVwgOwor6Iul5pyoID4gd2FrYWdpXCA7CivliJflgJkgPiByZWtrb3VcIDsKK+i/veWEuiA+IHRzdWluYVwgOwor5Ya35a6zID4gcmVpZ2FpXCA7CivluorkuIogPiB5dWthdWVcIDsKK+WBveiGnCA+IGdpbWFrdVwgOwor5biG5biDID4gaG9udW5vXCA7Civlh53lm7ogPiBneW91a29cIDsKK+mAlOS4rSA+IHRvY2h1dVwgOwor5YaF5oaCID4gbmFpeXV1XCA7Civkv5fplpMgPiB6b2trYW5cIDsKK+S/g+mfsyA+IHNva3VvblwgOwor5bCP6aqoID4ga29ib25lXCA7Civlub3kvZMgPiB5dXV0YWlcIDsKK+WFuOaLoCA+IHRlbmt5b1wgOwor55m75p2/ID4gdG91YmFuXCA7CivliJ3ku6MgPiBzaG9kYWlcIDsKK+WIgOWJoyA+IHRvdWtlblwgOwor5biz5aC0ID4gY2hvdWJhXCA7CivluZXlkI8gPiBiYWt1cmlcIDsKK+mtmueBryA+IGd5b3RvdVwgOwor6Iaa6LqrID4gaGFkYW1pXCA7CivnmZbmr5sgPiBrdXNlZ2VcIDsKK+W5uOS+vyA+IGtvdWJpblwgOwor5YOt546LID4gc2VuJydvdVwgOwor5bmj5Yi2ID4gaGVpc2VpXCA7Civlho3mgJ0gPiBzYWlzaGlcIDsKK+ecjOWWtiA+IGtlbicnZWlcIDsKK+muruaYjiA+IHNlbm1laVwgOwor6I2S5aSpID4ga291dGVuXCA7CivnlJ/phZIgPiBraXpha2VcIDsKK+WIhuWFmiA+IGJ1bnRvdVwgOwor5bm05L+4ID4gbmVucG91XCA7CivliIblhYkgPiBidW5rb3VcIDsKK+WIgOWIgyA+IHRvdWppblwgOwor5bm+5Lq6ID4gaWt1bmluXCA7CivohLPpq4QgPiBub3V6dWlcIDsKK+mppei2syA+IGtpc29rdVwgOwor5YaF5oOFID4gbmFpam91XCA7CivnnJ/ljJcgPiBtYWtpdGFcIDsKK+W3qOaCqiA+IGt5b2FrdVwgOwor5YaF5oKjID4gbmFpa2FuXCA7CivojYrlprsgPiBrZWlzYWlcIDsKK+WFqOaQjSA+IHplbnNvblwgOwor5YiD5YWIID4gaGFzYWtpXCA7CivlsbHot68gPiB5YW1hamlcIDsKK+WGjeW+gSA+IHNhaXNlaVwgOwor6ae/6aasID4gc2h1bm1lXCA7CivnlKPpgZMgPiBzYW5kb3VcIDsKK+W4r+WfnyA+IHRhaWlraVwgOwor5biM5bCRID4ga2lzaG91XCA7CivoiLnnqpMgPiBzZW5zb3VcIDsKK+i/lOWTgSA+IGhlbnBpblwgOwor5bCP6aaWID4ga29rdWJpXCA7CivlubTkvZkgPiBuZW4nJ3lvXCA7CivnlJjphbggPiBrYW5zYW5cIDsKK+eUn+mChCA+IHNlaWthblwgOwor6Ii356qTID4gZ2Vuc291XCA7CivpqJLpnIogPiBzb3VyZWlcIDsKK+W5heWToSA+IGZ1a3VpblwgOwor5YWJ5p2lID4ga291cmFpXCA7Civoh7PoirggPiBzaGlnZWlcIDsKK+W5tOS8miA+IG5lbmthaVwgOwor6YCA5LyaID4gdGFpa2FpXCA7Civlr6Hpu5kgPiBrYW1va3VcIDsKK+WIg+WCtyA+IG5pbmpvdVwgOwor5YaN5bu6ID4gc2Fpa29uXCA7CivmpbXnp5ggPiBnb2t1aGlcIDsKK+mAg+S6oSA+IHRvdWJvdVwgOwor6YCA5Lu7ID4gdGFpbmluXCA7Civlhoblv4MgPiBlbnNoaW5cIDsKK+W5tOS7pCA+IG5lbnJlaVwgOwor5bm05LujID4gbmVuZGFpXCA7Civlgo3nt5ogPiBib3VzZW5cIDsKK+aomeaXlyA+IGh5b3VraVwgOwor55yB5Za2ID4gc2hvdWVpXCA7CivluLDlm70gPiBraWtva3VcIDsKK+edgOS4iCA+IGtpdGFrZVwgOwor6L6y5aC0ID4gbm91am91XCA7Civou73muJsgPiBrZWlnZW5cIDsKK+mqqOiRoyA+IGtvdHRvdVwgOwor6I2S5Z+OID4ga291am91XCA7Civot7XouI8gPiBzZW50b3VcIDsKK+iNmOWckiA+IHNob3VlblwgOwor55mC5rK7ID4gcnlvdWppXCA7CivovrrlnLAgPiBoZW5jaGlcIDsKK+mnnemzpSA+IGRhY2hvdVwgOwor5YaF5b6EID4gbmFpa2VpXCA7Civohbnpg6ggPiBmdWt1YnVcIDsKK+WHuuWFiCA+IGRlc2FraVwgOwor5YWD5p2lID4gZ2FucmFpXCA7CivnnJ/lhqwgPiBtYWZ1eXVcIDsKK+i8quagvSA+IHJpbnNhaVwgOwor5beo5by+ID4ga3lvZGFuXCA7CivlhYPmnKwgPiBnZW5wb25cIDsKK+WFieaZryA+IGtvdWtlaVwgOwor5Ye25YW3ID4ga3lvdWd1XCA7Civoh6roi6UgPiBqaWpha3VcIDsKK+W5tOS4rSA+IG5lbmp1dVwgOwor55yL5Y+WID4ga2Fuc2h1XCA7CivnmbrmlaMgPiBoYXNzYW5cIDsKK+W4q+WboyA+IHNoaWRhblwgOwor6aex6aedID4gcmFrdWRhXCA7CivlhoXlu7cgPiBuYWl0ZWlcIDsKK+WCjeezuyA+IGJvdWtlaVwgOwor5YiG5L2TID4gYnVudGFpXCA7Civov47lkIggPiBnZWlnb3VcIDsKK+avjuOAhSA+IG1haW1haVwgOwor5L+u6YCgID4gc2h1em91XCA7CivnmbvmlIAgPiB0b3VoYW5cIDsKK+iNieWggiA+IHNvdWRvdVwgOwor5bmy5LiOID4ga2FuJyd5b1wgOwor5YiG5LyaID4gYnVua2FpXCA7Civpq4DogokgPiBoaW5pa3VcIDsKK+apn+WxiyA+IGhhdGF5YVwgOwor5YaF5bqtID4gbmFpdGVpXCA7CivovrLlnLAgPiBub3VjaGlcIDsKK+WFrOaGpCA+IGtvdWZ1blwgOwor55ub5aSnID4gc2VpZGFpXCA7CivoiKrnqbogPiBrb3VrdXVcIDsKK+W4guWtkCA+IGljaGlrb1wgOwor5bCK6aGUID4gc29uZ2FuXCA7Civou43niqwgPiBnZW5rZW5cIDsKK+WFiOaWuSA+IHNlbnBvdVwgOwor5L+u6L6eID4gc2h1dWppXCA7CivnlJ/ouqsgPiBuYW1hbWlcIDsKK+aoquaJiyA+IHlva290ZVwgOwor5YGc6Ii5ID4gdGVpc2VuXCA7CivnnIzli6IgPiBrZW5zZWlcIDsKK+WFreaEnyA+IHJva2thblwgOwor55yf5YG9ID4gc2hpbmdpXCA7CivoiKrnqIsgPiBrb3V0ZWlcIDsKK+WIhuS5lyA+IGJ1bmpvdVwgOwor6I2J5ZywID4gc291Y2hpXCA7CivlhYPml6YgPiBnYW50YW5cIDsKK+WFiOaUuyA+IHNlbmtvdVwgOwor5Yem5YiRID4gc2hva2VpXCA7CivnlLvoqr8gPiBnYWNob3VcIDsKK+WGl+WumCA+IGpvdWthblwgOwor5Yem5YiGID4gc2hvYnVuXCA7Civou73msLQgPiBrZWlzdWlcIDsKK+iHquiFuSA+IGppYmFyYVwgOwor55yf5YCLID4gc2hpbmtvXCA7CivkvqHpoY0gPiBrYWdha3VcIDsKK+WIhuS4jiA+IGJ1bicneW9cIDsKK+i8g+atoyA+IGtvdXNlaVwgOwor5Yem5YemID4gc2hvc2hvXCA7CivoipLmtIsgPiBib3V5b3VcIDsKK+Wwj+mbqiA+IGtveXVraVwgOwor5bCP6ZuoID4ga29zYW1lXCA7Civlt6HlubggPiBqdW5rb3VcIDsKK+WwjumbuyA+IGRvdWRlblwgOwor5YW15b25ID4gaGVpZWtpXCA7CivlsI/pm4AgPiBrb2dhcmFcIDsKK+ecn+S+oSA+IHNoaW5rYVwgOwor6L+R5YiKID4ga2lua2FuXCA7Civlh73kurogPiBrYW5qaW5cIDsKK+ebl+WhgSA+IHRvdXJ1aVwgOwor5YW85bivID4ga2VudGFpXCA7Civoi6bmiYsgPiBuaWdhdGVcIDsKK+WvvumhlCA+IHRhaWdhblwgOwor6Iul5omLID4gd2FrYXRlXCA7Civlt6jls7AgPiBreW9ob3VcIDsKK+WGrOWgtCA+IGZ1eXViYVwgOwor5YKs55ygID4gc2FpbWluXCA7CivlhKrmn5QgPiB5dXVqdXVcIDsKK+iKuOaelyA+IGdlaXJpblwgOwor6LuS54GvID4ga2VudG91XCA7Civnm7jlj40gPiBzb3VoYW5cIDsKK+W3qOWyqSA+IGt5b2dhblwgOwor5biv5ZCMID4gdGFpZG91XCA7CivluLjli6QgPiBqb3VraW5cIDsKK+iNmOWPuCA+IHNob3VqaVwgOwor5YWs5b25ID4ga291ZWtpXCA7Civlhajlv6sgPiB6ZW5rYWlcIDsKK+WGheWxpCA+IG5haXNvdVwgOwor6auY562JID4ga291dG91XCA7Civlh43ljp8gPiB0b3VnZW5cIDsKK+alveeVjCA+IGdha2thaVwgOwor6Iqx5p+zID4ga2FyeXV1XCA7CivoirHmn7EgPiBrYWNodXVcIDsKK+iNmOWOsyA+IHNvdWdvblwgOwor5Ye65LiWID4gc2h1c3NlXCA7Civlh7bkuosgPiBreW91amlcIDsKK+W4guWkliA+IHNoaWdhaVwgOwor55eY55ihID4gdG91c291XCA7Civlh4TlkbMgPiBzdWdvbWlcIDsKK+iHque/kiA+IGppc2h1dVwgOwor5Yeh5YOnID4gYm9uc291XCA7Civlr77pnaIgPiB0YWltZW5cIDsKK+eVquiMtiA+IGJhbmNoYVwgOwor5YaK5a2QID4gc291c2hpXCA7CivnlbDoibIgPiBpc2hva3VcIDsKK+W4q+WPiyA+IHNoaXl1dVwgOwor55eY55eVID4gdG91a29uXCA7Civlhoblr4IgPiBlbmpha3VcIDsKK+WFqOW9oiA+IHplbmtlaVwgOwor5q6144CFID4gZGFuZGFuXCA7Civlt57ltI4gPiBzdXNha2lcIDsKK+i/keWCjSA+IGtpbmJvdVwgOwor5YWl5b6hID4gbnl1dWdvXCA7CivlhoXlrrkgPiBuYWl5b3VcIDsKK+WGheWuriA+IG5haWd1dVwgOwor5YWs5bqtID4ga291dGVpXCA7CivlhoXlrpogPiBuYWl0ZWlcIDsKK+W4guWhtSA+IHNoaWppblwgOwor6Le16KiAID4gc2VuZ2VuXCA7CivoirPmm7ggPiBob3VzaG9cIDsKK+eUqOirhyA+IHlvdWRhblwgOwor6Iqx5pyoID4ga2Fib2t1XCA7CivojZLljp8gPiBrb3VnZW5cIDsKK+WFrOW5syA+IGtvdWhlaVwgOwor5YaF5a2rID4gbmFpc29uXCA7CivluILloLQgPiBzaGlqb3VcIDsKK+eUt+ijhSA+IGRhbnNvdVwgOwor5L+d6LqrID4gaG9zaGluXCA7CivnmbrmhqQgPiBoYXBwdW5cIDsKK+WGjeWpmiA+IHNhaWtvblwgOwor6IiM56uvID4gemV0dGFuXCA7Civlhajlu4MgPiB6ZW5wYWlcIDsKK+WFiOaKlSA+IHNlbnRvdVwgOwor5YGV6ICBID4ga2Fpcm91XCA7CivlhajlupcgPiB6ZW50ZW5cIDsKK+ebsuWLlSA+IG1vdWRvdVwgOwor5a++6ZmjID4gdGFpamluXCA7CivkvovpoYwgPiByZWlkYWlcIDsKK+W4r+WJoyA+IHRhaWtlblwgOwor5bid5ZG9ID4gdGVpbWVpXCA7Civou5/ms6UgPiBuYW5kZWlcIDsKK+iMheWxiyA+IGJvdW9rdVwgOwor5YWl5bqrID4gbnl1dWtvXCA7CivnlKjoqIAgPiB5b3VnZW5cIDsKK+eZuuaEjyA+IGhhdHN1aVwgOwor5YWl5bqcID4gbnl1dWZ1XCA7CivoirjmlocgPiBnZWlidW5cIDsKK+WHoeS+iyA+IGhhbnJlaVwgOwor5bCC6ZaAID4gc2VubW9uXCA7Civnmbrmg7MgPiBoYXNzb3VcIDsKK+W4r+WIgCA+IHRhaXRvdVwgOwor6L+R5L2TID4ga2ludGFpXCA7Civoi6blv4MgPiBrdXNoaW5cIDsKK+aqgOWQmyA+IGRhbmt1blwgOwor5YW85a6YID4ga2Vua2FuXCA7CivlhajluIIgPiB6ZW5zaGlcIDsKK+WwlumLrSA+IHNlbicnZWlcIDsKK+WFqOW3uyA+IHplbmthblwgOwor5bC/6LevID4gbnlvdXJvXCA7CivnnIzkvJogPiBrZW5rYWlcIDsKK+ebpOWPsCA+IGJhbmRhaVwgOwor5biD5ZywID4gbnVub2ppXCA7Civoh7PntJQgPiBzaGlqdW5cIDsKK+iNieWOnyA+IHNvdWdlblwgOwor6Ieq57ibID4gamliYWt1XCA7CivmooXphZIgPiB1bWVzaHVcIDsKK+WFg+aJiyA+IG1vdG9kZVwgOwor55yM5LukID4ga2VucmVpXCA7Civlr53pppYgPiBuZWt1YmlcIDsKK+eUn+iqlSA+IHNlaXRhblwgOwor5L+z6KunID4gaGFpa2FpXCA7Civou5/msLQgPiBuYW5zdWlcIDsKK+i/keS7oyA+IGtpbmRhaVwgOwor55yM5Lq6ID4ga2VuamluXCA7Civnm4blnLAgPiBib25jaGlcIDsKK+WGjeWkiSA+IHNhaWhlblwgOwor5YG956ewID4gZ2lzaG91XCA7Civou43muK8gPiBndW5rb3VcIDsKK+WFmuW8iiA+IHRvdWhlaVwgOwor5Yem5LiWID4gc2hvc2VpXCA7CivlhrfljrMgPiByZWlnZW5cIDsKK+iHree0oCA+IHNodXVzb1wgOwor5YaF5aa7ID4gbmFpc2FpXCA7CivojITlrZAgPiBuYXN1YmlcIDsKK+ebn+WPiyA+IG1laXl1dVwgOwor55uX5ZOBID4gdG91aGluXCA7CivnlJ/oqIggPiBzZWlrZWlcIDsKK+iIl+efsyA+IGhvc2VraVwgOwor6Ieq57WmID4gamlreXV1XCA7Civov5TkuIogPiBoZW5qb3VcIDsKK+mtmuairyA+IGd5b3RlaVwgOwor55ub5ZCNID4gc2VpbWVpXCA7Civlhajls7YgPiB6ZW50b3VcIDsKK+i1remhlCA+IHNoYWdhblwgOwor5YWx5a+dID4gdG9tb25lXCA7CivlsI/piq0gPiBrb3plbmlcIDsKK+eah+W4nSA+IGtvdXRlaVwgOwor5YaF5aWPID4gbmFpc291XCA7Civov5HkuJYgPiBraW5zZWlcIDsKK+iHqOe1giA+IHJpbmp1dVwgOwor5bi45L6LID4gam91cmVpXCA7CivojYnlibUgPiBzb3Vzb3VcIDsKK+WFqOWyuCA+IHplbmdhblwgOwor5beo5aSnID4ga3lvZGFpXCA7CivovpvlkbMgPiBrYXJhbWlcIDsKK+WGheWkliA+IG5haWdhaVwgOwor6Iul5bmyID4gamFra2FuXCA7CivlsY3oq4wgPiBzaGlrYW5cIDsKK+ebruWFiCA+IG1lc2FraVwgOwor5bir5YOnID4gc2hpc291XCA7CivluLjkvZMgPiBqb3V0YWlcIDsKK+ebruWFgyA+IG1lbW90b1wgOwor5bi45L2PID4gam91anV1XCA7CivlhajlsbEgPiB6ZW56YW5cIDsKK+i+suWFtSA+IG5vdWhlaVwgOwor5YKN55uuID4gaGF0YW1lXCA7CivlsZXoprMgPiB0ZW5rYW5cIDsKK+WxleimpyA+IHRlbnJhblwgOwor55SY6KiAID4ga2FuZ2VuXCA7CivluLjkvJogPiBqb3VrYWlcIDsKK+W3peWkpyA+IGtvdWRhaVwgOwor5YWs5a6zID4ga291Z2FpXCA7CivluKXlhYggPiBzb3NzZW5cIDsKK+W4uOS7uyA+IGpvdW5pblwgOwor5L+v6KeSID4gZnVrYWt1XCA7Civoi6XluIMgPiB3YWthbWVcIDsKK+W4neWItiA+IHRlaXNlaVwgOwor55e05ryiID4gY2hpa2FuXCA7CivlhazlrpogPiBrb3V0ZWlcIDsKK+i7jeazlSA+IGd1bnBvdVwgOwor5bCP6YeRID4ga29nYW5lXCA7CivnmbvlurggPiB0b3V5b3VcIDsKK+WFqOWwhCA+IHplbnNoYVwgOwor6I2K5YagID4ga2Vpa2FuXCA7CivlhrfliZsgPiByZWlnb3VcIDsKK+W4uOS6uiA+IGpvdWppblwgOwor6a2a5p2/ID4gZ3lvYmFuXCA7CivltKnmvbAgPiBob3VrYWlcIDsKK+WFrOWtkCA+IGtvdXNoaVwgOwor5YOn5q2jID4gc291am91XCA7CivmoZHploAgPiBzb3Vtb25cIDsKK+WGheWgsSA+IG5haWhvdVwgOwor5YWB5oGtID4gaW5reW91XCA7CivlhYnlvakgPiBrb3VzYWlcIDsKK+i7uOacqCA+IGppa3VnaVwgOwor5YWH5b6SID4ga3lvdXRvXCA7Civnm7jkvJ0gPiBzb3VkZW5cIDsKK+i2s+i5tCA+IGFzaGlnZVwgOwor5bid5YagID4gdGVpa2FuXCA7CivkvbXpn7MgPiBwaW4nJ2luXCA7Civpq5jnm64gPiB0YWthbWVcIDsKK+WGhuWfnyA+IGVuJydpa2lcIDsKK+WvkumiqCA+IGthbnB1dVwgOwor6aeF6aCtID4gZWtpdG91XCA7Civlgr7ngIkgPiBrZWlzaGFcIDsKK+WGt+WHjSA+IHJlaXRvdVwgOwor6LuN5rCRID4gZ3VubWluXCA7CivpqqjnsokgPiBrb3BwdW5cIDsKK+eXheeQhiA+IGJ5b3VyaVwgOwor5biw5LyRID4ga2lreXV1XCA7CivluLDkvI8gPiBraWZ1a3VcIDsKK+W4uOS4liA+IHRva295b1wgOwor5YKy54S2ID4gZ291emVuXCA7CivohrXoh5MgPiBzdWl6b3VcIDsKK+WFtuWltCA+IHNvaXRzdVwgOwor5YWF5b2TID4ganV1dG91XCA7Civkv67oo5wgPiBzaHV1aG9cIDsKK+W4g+WRiiA+IGZ1a29rdVwgOwor55qH5bGFID4ga291a3lvXCA7CivoiI7nm6MgPiBzaGFrYW5cIDsKK+eWseeYoSA+IGhvdXNvdVwgOwor5qip5a6YID4ga2Vua2FuXCA7CivlhJLmlZkgPiBqdWt5b3VcIDsKK+W4sOS6rCA+IGtpa3lvdVwgOwor5L+X6K2wID4gem9rdWdpXCA7CivlhrflhYkgPiByZWlrb3VcIDsKK+ebuOS5lyA+IHNvdWpvdVwgOwor5a+d6ZqbID4gbmVnaXdhXCA7CivluKvkvJ0gPiBzaGlkZW5cIDsKK+WGheWcsCA+IG5haWNoaVwgOwor5YWJ5bm0ID4ga291bmVuXCA7CivnmoTlsYsgPiB0ZWtpeWFcIDsKK+ebiuWPiyA+IGVraXl1dVwgOwor5YaF5ZyoID4gbmFpemFpXCA7CivlhbXlpIkgPiBoZWloZW5cIDsKK+WxseiRtSA+IHdhc2FiaVwgOwor5bCP6YGOID4gc2hvdWthXCA7CivlhbXlo6sgPiBoZWlzaGlcIDsKK+WBteefpSA+IHRlaWNoaVwgOwor55ar55mYID4gZWtpcmVpXCA7Civnm7LkurogPiBtb3VqaW5cIDsKK+eah+WuriA+IGtvdWd1dVwgOwor6IO96Z2iID4gbm91bWVuXCA7Civnm5vlhbggPiBzZWl0ZW5cIDsKK+S/neiovCA+IGhvc2hvdVwgOwor5qSc566XID4ga2VuemFuXCA7CivnmoflrpcgPiBrb3Vzb3VcIDsKK+WFiOW4qyA+IHNlbnNoaVwgOwor5YWI5bidID4gc2VudGVpXCA7CivmoLnpm6ogPiBuZXl1a2lcIDsKK+iMheWgtCA+IGtheWFiYVwgOwor5biw5LiAID4ga2lpdHN1XCA7CivnmoflrasgPiBrb3Vzb25cIDsKK+S+rui+sSA+IGJ1am9rdVwgOwor55Wq57eaID4gYmFuc2VuXCA7CivovrLkvJogPiBub3VrYWlcIDsKK+S/l+iqniA+IHpva3Vnb1wgOwor55uu5LuKID4gbW9ra29uXCA7CivlhqXliqAgPiBteW91Z2FcIDsKK+iHpeernCA+IGdhcnlvdVwgOwor55u05LiLID4gY2hva2thXCA7CivlsLjoq4wgPiBzaGlrYW5cIDsKK+WxseiPnCA+IHNhbnNhaVwgOwor6Lui5qChID4gdGVua291XCA7CivovKrlvaIgPiByaW5rZWlcIDsKK+S/l+ipsSA+IHpva3V3YVwgOwor55al55msID4ga2Fpc2VuXCA7CivoiLnnga8gPiBzZW50b3VcIDsKK+iHquensCA+IGppc2hvdVwgOwor6Ium5a2mID4ga3VnYWt1XCA7CivlhYPluKUgPiBnZW5zdWlcIDsKK+iNieS9kyA+IHNvdXRhaVwgOwor55m95a+/ID4gaGFrdWp1XCA7CivlhqXliKkgPiBteW91cmlcIDsKK+W4guWLoiA+IHNoaXNlaVwgOwor5L2T6aiTID4gdGFpa2VuXCA7CivnmbrlsZUgPiBoYXR0ZW5cIDsKK+W3oeWbniA+IGp1bmthaVwgOwor5qeL5paHID4ga291YnVuXCA7CivoiLfnga8gPiBnZW50b3VcIDsKK+i8quW7uyA+IHJpbicnbmVcIDsKK+WFuOWeiyA+IHRlbmtlaVwgOwor5bGx6I2YID4gc2Fuc291XCA7Civlhazlo7IgPiBrb3ViYWlcIDsKK+mmqOmmmSA+IGtlaWtvdVwgOwor6ISx6YCAID4gZGF0dGFpXCA7Civkv5fop6MgPiB6b2trYWlcIDsKK+iDjOmwrSA+IHNlYmlyZVwgOwor55m65bCEID4gaGFzc2hhXCA7Civlg5rmqZ8gPiByeW91a2lcIDsKK+WFqOWkqSA+IHplbnRlblwgOwor5qCh6aKoID4ga291ZnV1XCA7CivotaTploAgPiBha2Ftb25cIDsKK+WGpeWGpSA+IG1laW1laVwgOwor5bGN6J2LID4gc2hpcm91XCA7CivnlZ3nuZQgPiB1bmVvcmlcIDsKK+S/l+imiyA+IHpva2tlblwgOwor5YCJ6I23ID4ga3VyYW5pXCA7CivoirPmg4UgPiBob3Vqb3VcIDsKK+W4guWItiA+IHNoaXNlaVwgOwor6aaW6a2BID4gc2h1a2FpXCA7CivlhaXlpKsgPiBueXV1ZnVcIDsKK+WFqOWjiiA+IHplbmthaVwgOwor55Sf6JaRID4gc2hvdWdhXCA7CivlhazloLEgPiBrb3Vob3VcIDsKK+WEquaApyA+IHl1dXNlaVwgOwor5YW15ZujID4gaGVpZGFuXCA7Civlr77pgYcgPiB0YWlndXVcIDsKK+eUn+iVgyA+IHNlaWJhblwgOwor5L6b6YCyID4gZ3VzaGluXCA7CivlhY3lrpggPiBtZW5rYW5cIDsKK+ahn+mBkyA+IHNhbmRvdVwgOwor5YWI5bCOID4gc2VuZG91XCA7CivluILlhoUgPiBzaGluYWlcIDsKK+Wwj+i3ryA+IHNob3VqaVwgOwor6Lu95oyZID4ga2Vpa3lvXCA7Civoia/moYggPiByeW91YW5cIDsKK+WuuemhlCA+IHlvdWdhblwgOwor5YW85Za2ID4ga2VuJydlaVwgOwor5YaG5ZGzID4gbWFydW1pXCA7Civnm5vkvJogPiBzZWlrYWlcIDsKK+WGhuWRqCA+IGVuc2h1dVwgOwor6Iq45b2TID4gZ2VpdG91XCA7CivlhKrlvoUgPiB5dXV0YWlcIDsKK+eUmOiWryA+IGthbnNob1wgOwor5YaF5ZG9ID4gbmFpbWVpXCA7Civou4rmpJwgPiBzaGFrZW5cIDsKK+iKs+W/lyA+IGhvdXNoaVwgOwor5bCP6LazID4ga29hc2hpXCA7CivnmoflpKkgPiBrb3V0ZW5cIDsKK+Wvvui+uiA+IHRhaWhlblwgOwor6LaF6YGOID4gY2hvdWthXCA7Civnm5vku6MgPiBzZWlkYWlcIDsKK+iLl+WtlyA+IG15b3VqaVwgOwor6IOM6aqoID4gc2Vib25lXCA7CivlhoXlkKsgPiBuYWlnYW5cIDsKK+mmrOmdqSA+IGJha2FrdVwgOwor55uf5Li7ID4gbWVpc2h1XCA7CivlhoXlkJEgPiBuYWlrb3VcIDsKK+WFieWtkCA+IGtvdXNoaVwgOwor6aaZ6aaZID4ga291a291XCA7CivlhoXlkIggPiBuYWlnb3VcIDsKK+iIuea4oCA+IHNlbmt5b1wgOwor55SY6JSXID4ga2Fuc2hvXCA7Civlt6jlj6MgPiBreW9rb3VcIDsKK+WFrOWboyA+IGtvdWRhblwgOwor5YaN5YukID4gc2Fpa2luXCA7CivluILlgrUgPiBzaGlzYWlcIDsKK+WyqeeptCA+IGl3YWFuYVwgOwor5YWD5a+HID4gZ2Vua291XCA7CivkvZnpnIcgPiB5b3NoaW5cIDsKK+WFqOWcsCA+IHplbmNoaVwgOwor55WP57iuID4gaXNodWt1XCA7CivlhpXlhqAgPiBiZW5rYW5cIDsKK+iMtuS8miA+IGNoYWthaVwgOwor55G26aGUID4geW91Z2FuXCA7CivkvY7poK0gPiB0ZWl0b3VcIDsKK+WGhuWNkyA+IGVudGFrdVwgOwor5a+G6ZaJID4gbWlwcGVpXCA7CivlsbHog4wgPiB5YW1hc2VcIDsKK+anmOaFiyA+IHlvdXRhaVwgOwor6Iy25LujID4gY2hhZGFpXCA7CivkvZPpnaIgPiB0YWltZW5cIDsKK+WCrOa2mSA+IHNhaXJ1aVwgOwor6IOM6aazID4gaGFpY2hpXCA7CivlhbHllrYgPiBreW91ZWlcIDsKK+iEsei1sCA+IGRhc3NvdVwgOwor55m+5aScID4gbW9tb3lvXCA7Civoi6blooMgPiBrdWt5b3VcIDsKK+WGmeWDjyA+IHNoYXpvdVwgOwor5a6f6aiTID4gamlra2VuXCA7CivlhaXlnJIgPiBueXV1ZW5cIDsKK+iMtuS6uiA+IGNoYWppblwgOwor6Ium5aGpID4gbmlnYXJpXCA7Civnmbrlpa4gPiBoYXBwdW5cIDsKK+iLseWbvSA+IGVpa29rdVwgOwor5YaF5YyFID4gbmFpaG91XCA7Civlho3liIogPiBzYWlrYW5cIDsKK+eUqOiIuSA+IHlvdXNlblwgOwor6auY54elID4ga291c291XCA7CivlhoXli6QgPiBuYWlraW5cIDsKK+iKseW6iiA+IGthc2hvdVwgOwor6IK66a2aID4gaGFpZ3lvXCA7Civoh6rnmb0gPiBqaWhha3VcIDsKK+WutumbhiA+IGthc2h1dVwgOwor6LuN5pu5ID4gZ3Vuc291XCA7Civou43mm7ggPiBndW5zaG9cIDsKK+WCjeeCuSA+IGJvdXRlblwgOwor5L6/6KanID4gYmVucmFuXCA7Civnmbrlo7AgPiBoYXNzZWlcIDsKK+eZu+WjhyA+IHRvdWRhblwgOwor5qeL5oiQID4ga291c2VpXCA7CivmpJznnLwgPiBrZW5nYW5cIDsKK+WGjeWGjSA+IHNhaXNhaVwgOwor5YCS572uID4gdG91Y2hpXCA7CivmoKHploAgPiBrb3Vtb25cIDsKK+mmlumhjCA+IHNodWRhaVwgOwor5YaF5YmbID4gbmFpZ291XCA7Civou5LmmIIgPiBrZW5rb3VcIDsKK+WFiOWmuyA+IHNlbnNhaVwgOwor5bed5Y6fID4ga2F3YXJhXCA7CivluILkvJogPiBzaGlrYWlcIDsKK+mqqOebuCA+IGtvc3NvdVwgOwor6Lui5o+bID4gdGVua2FuXCA7CivlhbHlkowgPiBreW91d2FcIDsKK+eUmOiNiSA+IGthbnpvdVwgOwor5YaF5YiGID4gbmFpYnVuXCA7CivnlJjojLYgPiBhbWFjaGFcIDsKK+eZu+WgtCA+IHRvdWpvdVwgOwor5a+d6YWSID4gbmV6YWtlXCA7CivlhYTlp4kgPiBrZWlzaGlcIDsKK+ato+OAhSA+IHNlaXNlaVwgOwor5biC5Lq6ID4gc2hpamluXCA7CivlhYTlprkgPiBrZWltYWlcIDsKK+WFpeWWtiA+IG55dXVlaVwgOwor5YW85YukID4ga2Vua2luXCA7CivlhYPlp4sgPiBnZW5zaGlcIDsKK+iGj+iCkyA+IGtvdWtvdVwgOwor6auY54K5ID4ga291dGVuXCA7Civou5LmlbAgPiBrZW5zdXVcIDsKK+WFiOWkqSA+IHNlbnRlblwgOwor5YWI5aScID4gc2VuJyd5YVwgOwor5biC5LqVID4gc2hpc2VpXCA7CivlhoblhoUgPiBlbicnbmFpXCA7CivlhoXlhoUgPiBuYWluYWlcIDsKK+i7jeaXhSA+IGd1bnJ5b1wgOwor5YaF5YW4ID4gbmFpdGVuXCA7Civou73lv6sgPiBrZWlrYWlcIDsKK+iIqua1tyA+IGtvdWthaVwgOwor5qeL5oOzID4ga291c291XCA7CivlrrbplbcgPiBrYWNob3VcIDsKK+WFqOWToSA+IHplbicnaW5cIDsKK+iHqOeVjCA+IHJpbmthaVwgOwor6auY54CsID4gdGFrYXNlXCA7Civlhajlk4EgPiB6ZW5waW5cIDsKK+aknOeXsCA+IGtlbnRhblwgOwor5YWl5ZSQID4gbml0dG91XCA7CivluILkuIogPiBzaGlqb3VcIDsKK+Wwj+ipsSA+IHNob3V3YVwgOwor55qH5ZejID4ga291c2hpXCA7Civlt6XlhbUgPiBrb3VoZWlcIDsKK+iDjOmdqSA+IHNlZ2F3YVwgOwor5beo5YSEID4ga3lvb2t1XCA7Civog4zpnaIgPiBoYWltZW5cIDsKK+i7jeaUvyA+IGd1bnNlaVwgOwor5YK15qipID4gc2Fpa2VuXCA7CivlhYjloZQgPiBzZW50b3VcIDsKK+WFrOWPuCA+IGtvdXNoaVwgOwor6Lyq5aemID4gcmlua2FuXCA7CivoiKrms5UgPiBrb3Vob3VcIDsKK+W3qOWDjyA+IGt5b3pvdVwgOwor55aR542EID4gZ2lnb2t1XCA7CivlsI/oqIAgPiBrb2dvdG9cIDsKK+WGheWCtSA+IG5haXNhaVwgOwor5qSc55WqID4ga2VuYmFuXCA7CivlhYXloasgPiBqdXV0ZW5cIDsKK+WxpOe+pCA+IHNvdWd1blwgOwor6Iqx5bGLID4gaGFuYXlhXCA7Civou5/mipUgPiBuYW50b3VcIDsKK+WGheWBtSA+IG5haXRlaVwgOwor5YWo5Y+yID4gemVuc2hpXCA7Civou6LmiKYgPiB0ZW5zZW5cIDsKK+WBtueEtiA+IGd1dXplblwgOwor55Sf6IKyID4gc2VpaWt1XCA7CivohoDog7EgPiBib3Vrb3VcIDsKK+i7ouaIkCA+IHRlbnNlaVwgOwor5YW15Yi2ID4gaGVpc2VpXCA7Civlsqnnm6QgPiBnYW5iYW5cIDsKK+mtlOaApyA+IG1hc2hvdVwgOwor5YWx5YqpID4ga3lvdWpvXCA7CivovIPlt64gPiBrYWt1c2FcIDsKK+ajkue3miA+IGJvdXNlblwgOwor5YWr5Y2BID4geWFzb2ppXCA7CivlhbXliIMgPiBoZWlqaW5cIDsKK+WGjeS8miA+IHNhaWthaVwgOwor6Iqx5a6iID4ga2FrYWt1XCA7CivoirHlrp8gPiBoYW5hbWlcIDsKK+iLl+WcgyA+IGJ5b3Vob1wgOwor5YaN5Lu7ID4gc2FpbmluXCA7CivkvZnpjLIgPiB5b3Jva3VcIDsKK+eXheawlyA+IGJ5b3VraVwgOwor6IO46YOoID4ga3lvdWJ1XCA7Civpp4XpgJMgPiBla2l0ZWlcIDsKK+WFiOWcqCA+IHNlbnphaVwgOwor5a6f6ZqbID4gamlzc2FpXCA7CivnlJ/ogIUgPiBzaG91amFcIDsKK+eUsee3kiA+IHl1aXNob1wgOwor5L+z6IGWID4gaGFpc2VpXCA7CivlsbHns7sgPiBzYW5rZWlcIDsKK+eUt+ezuyA+IGRhbmtlaVwgOwor5L2z6L6wID4ga2FzaGluXCA7Civlr77oq5YgPiB0YWlyb25cIDsKK+aoqeWOnyA+IGtlbmdlblwgOwor5a+u6LK7ID4gcnlvdWhpXCA7Civlr77oq4cgPiB0YWlkYW5cIDsKK+i6q+afhCA+IG1pZ2FyYVwgOwor5YCr56S+ID4gcmluc2hhXCA7Civlt6jkvZMgPiBreW90YWlcIDsKK+WGheS9jyA+IG5haWp1dVwgOwor55qH5ZCOID4ga291Z291XCA7CivlsI/oopYgPiBrb3NvZGVcIDsKK+WvvuiqniA+IHRzdWlnb1wgOwor6IO96L6vID4gbm91YmVuXCA7Civoi6blkbMgPiBuaWdhbWlcIDsKK+WDp+aIvyA+IHNvdWJvdVwgOwor5YWs5YikID4ga291aGFuXCA7CivprYXmg5EgPiBtaXdha3VcIDsKK+WFrOWIiiA+IGtvdWthblwgOwor5YaN5LiJID4gc2Fpc2FuXCA7CivlhYflmaggPiBreW91a2lcIDsKK+WztuawkSA+IHRvdW1pblwgOwor5qip5YuiID4ga2Vuc2VpXCA7Civlt6jkurogPiBreW9qaW5cIDsKK+WGheS6iSA+IG5haXNvdVwgOwor5bCG6KOcID4gc2hvdWhvXCA7CivlhoXkubEgPiBuYWlyYW5cIDsKK+WFjuWUhyA+IHRvc2hpblwgOwor5YW85L21ID4ga2VucGVpXCA7Civlt6XkurogPiBrb3VqaW5cIDsKK+iKuOWkpyA+IGdlaWRhaVwgOwor5YWs5YWaID4ga291dG91XCA7Civoh6rniIYgPiBqaWJha3VcIDsKK+iIt+airyA+IGdlbnRlaVwgOwor6ISx6KGjID4gZGF0c3VpXCA7CivlhobkuJggPiBlbmt5dXVcIDsKK+S8mumkqCA+IGthaWthblwgOwor6Iqd5bGFID4gc2hpYmFpXCA7Civou5/mgKcgPiBuYW5zZWlcIDsKK+eahuWLpCA+IGthaWtpblwgOwor5beo5LiHID4ga3lvbWFuXCA7Civou43miYcgPiBndW5zZW5cIDsKK+afu+mWsiA+IHNhZXRzdVwgOwor5a+46KiAID4gc3VuZ2VuXCA7Civlr4bpgIEgPiBtaXNzb3VcIDsKK+i8quWbniA+IHJpbicnbmVcIDsKK+eUqOe0mSA+IHlvdXNoaVwgOwor5a+E6YCyID4ga2lzaGluXCA7Civnl5TmoLggPiBqaWtha3VcIDsKK+WFqOWFjSA+IHplbm1lblwgOwor55m65ZCRID4gaGFra291XCA7CivkvZPph40gPiB0YWlqdXVcIDsKK+WFrOWCtSA+IGtvdXNhaVwgOwor5YWa5YuiID4gdG91c2VpXCA7Civmo4TntIQgPiBraXlha3VcIDsKK+S+jeiqrSA+IGppZG9rdVwgOwor6aqo54mMID4ga2FydXRhXCA7CivlgbTmup0gPiBzb2trb3VcIDsKK+WvqeitsCA+IHNoaW5naVwgOwor6aqo54mHID4ga29wcGVuXCA7Civlgr7mlpwgPiBrZWlzaGFcIDsKK+WEkuWtpiA+IGp1Z2FrdVwgOwor6Ieq54S2ID4gc2hpemVuXCA7CivlsILooYwgPiBzZW5rb3VcIDsKK+i1pOi1pCA+IGFrYWFrYVwgOwor6Imy5oKqID4gaXJvYWt1XCA7Civoi6blipsgPiBrdXVyaWlcIDsKK+i6q+aWuSA+IG1pa2F0YVwgOwor5qW35pu4ID4ga2Fpc2hvXCA7Civlrp3pkZEgPiBob3VrYW5cIDsKK+S8mumgrSA+IGthaXRvdVwgOwor5L+h6ICFID4gc2hpbmphXCA7Civotbfoq4sgPiBraXNob3VcIDsKK+iGv+eYjSA+IG5vdXlvdVwgOwor5qaC5pWwID4gZ2Fpc3V1XCA7Civoirjln58gPiBnZWlpa2lcIDsKK+Wwj+iZjiA+IGtvZG9yYVwgOwor6Imy5oGLID4gaXJva29pXCA7CivogrrploAgPiBoYWltb25cIDsKK+WFteS7lyA+IGhlaWpvdVwgOwor5a626YO3ID4ga2FreW91XCA7CivnlaLnlJ8gPiBoaXNzZWlcIDsKK+S/oee+qSA+IHNoaW5naVwgOwor5bKz54i2ID4gZ2FrdWZ1XCA7Civpq5jmrrUgPiBrb3VkYW5cIDsKK+eUn+e0mSA+IGtpZ2FtaVwgOwor6Ia/55axID4gbm91aG91XCA7CivkvovoqIAgPiByZWlnZW5cIDsKK+eah+WFuCA+IGtvdXRlblwgOwor5YWI5ZCbID4gc2Vua3VuXCA7CivkvbPos54gPiBrYXNob3VcIDsKK+WFrOS+ryA+IGtvdWtvdVwgOwor6LWk6LKdID4gYWthZ2FpXCA7Civkvovop6MgPiByZWlrYWlcIDsKK+eahuWFtSA+IGthaWhlaVwgOwor6LuN5oOFID4gZ3Vuam91XCA7Civpq5jmra8gPiB0YWthYmFcIDsKK+WFteS5sSA+IGhlaXJhblwgOwor5L2V6YGNID4gbmFuYmVuXCA7Civlhazkvb8gPiBrb3VzaGlcIDsKK+WFiOWPliA+IHNlbnNodVwgOwor55m65YuBID4gaGFra2VpXCA7Civpp4Tos4MgPiBkYWNoaW5cIDsKK+eZuuWKuSA+IGhha2tvdVwgOwor5bC+57+8ID4gYml5b2t1XCA7Civpq4TmtrIgPiB6dWlla2lcIDsKK+WwgeidiyA+IGZ1dXJvdVwgOwor5YWa5YaFID4gdG91bmFpXCA7CivnlKjnrosgPiB5b3VzZW5cIDsKK+WFrOS9jyA+IGtvdWp1dVwgOwor5YWo5L6/ID4gemVuYmluXCA7CivnlJ/nsosgPiBraXNzdWlcIDsKK+eUsueoriA+IGtvdXNodVwgOwor5L+X6ICzID4gem9rdWppXCA7Civpq5jmrIQgPiBrb3VyYW5cIDsKK+ahv+iPjCA+IGthbmtpblwgOwor5YWs5LyaID4ga291a2FpXCA7CivoiJ7mpb0gPiBidWdha3VcIDsKK+WutOmBiiA+IGVuJyd5dXVcIDsKK+WFg+WPtyA+IGdlbmdvdVwgOwor6aqo54KtID4ga290dGFuXCA7CivnmbrliLggPiBoYWtrZW5cIDsKK+WBtOazsyA+IHNvYmFlaVwgOwor6Iux5L+KID4gZWlzaHVuXCA7CivnlbDniakgPiBpYnV0c3VcIDsKK+WFqOS9kyA+IHplbnRhaVwgOwor55Kw6KaWID4ga2Fuc2hpXCA7CivohLHol6kgPiBkYXBwYW5cIDsKK+eZuuWIiiA+IGhha2thblwgOwor5YWs5Lq6ID4ga291amluXCA7CivlhIDlrrggPiBnaXNoaW5cIDsKK+S/guiIuSA+IGtlaXNlblwgOwor5p+U6aCGID4ganV1anVuXCA7CivlhajkvJogPiB6ZW5rYWlcIDsKK+eVqueKrCA+IGJhbmtlblwgOwor6aas6LqrID4gYmFzaGluXCA7Civnmb3lhYkgPiBoYWtrb3VcIDsKK+eXmeaUoyA+IGtlaXJlblwgOwor5L2O6L+3ID4gdGVpbWVpXCA7Civoiq/lnLAgPiBzaGluamlcIDsKK+S+v+iIuSA+IGJpbnNlblwgOwor5YWo5Lq6ID4gemVuamluXCA7CivohY7oh5MgPiBqaW56b3VcIDsKK+mms+i1sCA+IGNoaXNvdVwgOwor55m65YWJID4gaGFra291XCA7CivlhYPli7IgPiBnZW5rdW5cIDsKK+iFi+iHrSA+IHdha2lnYVwgOwor5YGc5rueID4gdGVpdGFpXCA7CivlhYjliLYgPiBzZW5zZWlcIDsKK+mmmemBkyA+IGtvdWRvdVwgOwor6Iux5LqsID4gZWlreW91XCA7Civnl7TmhYsgPiBjaGl0YWlcIDsKK+WxseegpiA+IHNhbnNhaVwgOwor5a+d6KiAID4gbmVnb3RvXCA7CivkvbPoqr8gPiBrYWNob3VcIDsKK+mrmOalvCA+IGtvdXJvdVwgOwor6Lui5bGFID4gdGVua3lvXCA7CivlgYnng4ggPiBpcmV0c3VcIDsKK+WFieWGoCA+IGtvdWthblwgOwor6a2v5Zu9ID4gcm9rb2t1XCA7CivohIfoposgPiB3YWtpbWlcIDsKK+WFheWIhiA+IGp1dWJ1blwgOwor5qih5L2cID4gbW9zYWt1XCA7CivnmobkvJ0gPiBrYWlkZW5cIDsKK+eXtOaDhSA+IGNoaWpvdVwgOwor5a2d6aSKID4ga291eW91XCA7Civoh6jmuK8gPiByaW5rb3VcIDsKK+W0h+aVrCA+IHN1dWtlaVwgOwor6Lui5a+dID4gZ29yb25lXCA7CivohZDogokgPiBmdW5pa3VcIDsKK+WumOmHkSA+IGthbmtpblwgOwor6Ly45YWlID4geXVueXV1XCA7CivlhYjlhbUgPiBzZW5wZWlcIDsKK+i7jeW4vSA+IGd1bmJvdVwgOwor5YWH5YW3ID4ga3lvdWd1XCA7Civkv5fnuIEgPiB6b2t1ZW5cIDsKK+i7jeW4qyA+IGd1bnNoaVwgOwor6IW5562LID4gZnVra2luXCA7Civoh6rmtpwgPiBqaXRva3VcIDsKK+iGmuedgCA+IGhhZGFnaVwgOwor6LWw6KGMID4gc291a291XCA7CivlrrnotaYgPiB5b3VzaGFcIDsKK+Wwv+e0oCA+IG55b3Vzb1wgOwor5qCE6YCyID4gZWlzaGluXCA7Civmp4vlpJYgPiBrb3VnYWlcIDsKK+alk+aelyA+IGZ1dXJpblwgOwor5YWa5Lq6ID4gdG91amluXCA7Civoh6jmtbcgPiByaW5rYWlcIDsKK+S9meiziiA+IHlvem9rdVwgOwor5qSc5ripID4ga2VuJydvblwgOwor5a+T6KiAID4gZ3V1Z2VuXCA7CivlhZrkuokgPiB0b3Vzb3VcIDsKK+mBheOAhSA+IGNoaWNoaVwgOwor6aaW6LyqID4ga3ViaXdhXCA7CivoirjlkI0gPiBnZWltZWlcIDsKK+WBpeawlyA+IGtlbmFnZVwgOwor6auY5qChID4ga291a291XCA7CivlrZ3poIYgPiBrb3VqdW5cIDsKK+iCm+mWgCA+IGtvdW1vblwgOwor6Ieq5rOoID4gamljaHV1XCA7CivmoITovrEgPiBlaWpva3VcIDsKK+WumOmCuCA+IGthbnRlaVwgOwor6LWk6KO4ID4gc2VraXJhXCA7Civoh7TmrbsgPiBjaGlzaGlcIDsKK+Wwj+iIuSA+IGtvYnVuZVwgOwor5LyN6ZW3ID4gZ29jaG91XCA7CivoibblrrkgPiBlbicneW91XCA7CivlsYjnrYsgPiBrdWtraW5cIDsKK+WuueiyjCA+IHlvdWJvdVwgOwor5bCP6IifID4ga29idW5lXCA7CivnmbrkvJogPiBoYWtrYWlcIDsKK+iHquayiCA+IGppY2hpblwgOwor5a6Y6YG4ID4ga2Fuc2VuXCA7Civnl5vmiZMgPiB0c3V1ZGFcIDsKK+iHreawlyA+IHNodXVraVwgOwor5a626LODID4geWFjaGluXCA7Civnmbvku5kgPiB0b3VzZW5cIDsKK+iKs+WQjSA+IGhvdW1laVwgOwor5a2m6ZmiID4gZ2FrdWluXCA7CivprZTlooMgPiBtYWt5b3VcIDsKK+iIjOaguSA+IHpla2tvblwgOwor5YCJ55qHID4gc291a291XCA7CivltKnlvqEgPiBob3VneW9cIDsKK+S9k+iyjCA+IHRhaWJvdVwgOwor6aWF6aCtID4gbWFuanV1XCA7CivkvZzorZwgPiBzYWt1ZnVcIDsKK+S9teihjCA+IGhlaWtvdVwgOwor5YWI5L6/ID4gc2VuYmluXCA7CivlsI/ohp0gPiBrb2hpemFcIDsKK+WJjeOAhSA+IG1hZW1hZVwgOwor5bKs5rm+ID4ga291d2FuXCA7CivlgJLnlKMgPiB0b3VzYW5cIDsKK+Wwj+iFuSA+IGtvYmFyYVwgOwor5YWI5L6LID4gc2VucmVpXCA7CivlhYPlgKQgPiBtb3RvbmVcIDsKK+S9juizhyA+IHRlaXNoaVwgOwor6aqo5rOVID4ga29wcG91XCA7CivnlJ/noawgPiBzZWlrb3VcIDsKK+iJr+WutiA+IHJ5b3VrZVwgOwor5YWJ5L2TID4ga291dGFpXCA7CivlrpjovrogPiBrYW5wZW5cIDsKK+iLn+S4lCA+IGtvdXNob1wgOwor5bGk55u4ID4gc291c291XCA7Civlrp/ou4ogPiBqaXNzaGFcIDsKK+WFiOS9jyA+IHNlbmp1dVwgOwor5a+G6KiIID4gbWlra2VpXCA7CivlhKrli6IgPiB5dXVzZWlcIDsKK+WCsuaFoiA+IGdvdW1hblwgOwor5LuL6bGXID4ga2FpcmluXCA7Civog7joo48gPiBreW91cmlcIDsKK+Wwj+iEhyA+IGtvd2FraVwgOwor5a+E6KiXID4ga2l0YWt1XCA7CivltIfmi50gPiBzdXVoYWlcIDsKK+amguW/tSA+IGdhaW5lblwgOwor55So55uKID4geW91ZWtpXCA7Civlsa/nlLAgPiB0b25kZW5cIDsKK+iGvueCmSA+IGthaXNoYVwgOwor55m45LiRID4ga2ljaHV1XCA7CivlhYjku6MgPiBzZW5kYWlcIDsKK+mnmOiVqSA+IHRhaXRvdVwgOwor5YGc5q2iID4gdGVpc2hpXCA7CivlsI/ogqEgPiBrb21hdGFcIDsKK+WFiOS6uiA+IHNlbmppblwgOwor6Lui5aSJID4gdGVucGVuXCA7Civou6Llo7IgPiB0ZW5iYWlcIDsKK+WBtOaguSA+IHNva2tvblwgOwor5a6M6YGCID4ga2Fuc3VpXCA7Civlrp/ot7UgPiBqaXNzZW5cIDsKK+WumOi7jSA+IGthbmd1blwgOwor6IOM6LWwID4gaGFpc291XCA7CivouqvlvaIgPiBtaW5hcmlcIDsKK+agoeiokyA+IGtvdWt1blwgOwor5bCP6ICzID4ga29taW1pXCA7CivogbTpn7MgPiBjaG91b25cIDsKK+agoeiogiA+IGtvdXRlaVwgOwor6IiI5pu/ID4ga291dGFpXCA7Civlrrnoqo0gPiB5b3VuaW5cIDsKK+iEseiEgiA+IGRhc3NoaVwgOwor5YWI5Li7ID4gc2Vuc2h1XCA7CivkvJrph4ggPiBlc2hha3VcIDsKK+WtlOmbgCA+IGt1amFrdVwgOwor5qSc5q27ID4ga2Vuc2hpXCA7CivlsI/ogIUgPiBrb21vbm9cIDsKK+S7o+mhmCA+IGRhaWdhblwgOwor6aSK6baPID4geW91a2VpXCA7Civkv4LntK8gPiBrZWlydWlcIDsKK+iCnemKmCA+IGthbm1laVwgOwor5L2T6KqNID4gdGFpbmluXCA7CivkvZnop5IgPiB5b2tha3VcIDsKK+iEseiCmyA+IGRha2tvdVwgOwor5a+d6JeBID4gbmV3YXJhXCA7CivlhKrlhYggPiB5dXVzZW5cIDsKK+izvemKrSA+IHNhaXNlblwgOwor5YG25pyJID4gZ3V1eXV1XCA7Civlr4booYwgPiBtaWtrb3VcIDsKK+WFg+S4iSA+IGdhbnphblwgOwor6Iag54q2ID4ga291am91XCA7CivkvZPoqIAgPiB0YWlnZW5cIDsKK+WBpeajkiA+IGtlbmJvdVwgOwor5Yi644CFID4gaXJhaXJhXCA7CivouqvluYUgPiBtaWhhYmFcIDsKK+S7sumWkyA+IG5ha2FtYVwgOwor5Lyd6YGTID4gZGVuZG91XCA7CivkvLTotbAgPiBiYW5zb3VcIDsKK+i6q+W3viA+IG1paGFiYVwgOwor5a2U6ZaAID4ga291bW9uXCA7Civou6LlnLAgPiB0ZW5jaGlcIDsKK+iJr+WknCA+IHJ5b3V5YVwgOwor5L2T6KaBID4gdGFpeW91XCA7CivkvJ3pgIEgPiBkZW5zb3VcIDsKK+i0i+mAoCA+IGdhbnpvdVwgOwor6a6O5LimID4gYWluYW1lXCA7CivoiLnlvbEgPiBzZW4nJ2VpXCA7CivoiIjmlZcgPiBrb3VoYWlcIDsKK+i7ouWbniA+IHRlbmthaVwgOwor6Ieo5qScID4gcmlua2VuXCA7Civlr77oga8gPiB0YWlyZW5cIDsKK+eZiOWFtSA+IGhhaWhlaVwgOwor6aaW6KyAID4gc2h1Ym91XCA7Civlg5XlqaIgPiBib2t1aGlcIDsKK+ajkueKtiA+IGJvdWpvdVwgOwor6auY5o+aID4ga291eW91XCA7Civku5bpoJggPiB0YXJ5b3VcIDsKK+iBr+maiiA+IHJlbnRhaVwgOwor5a+46IO0ID4genVuZG91XCA7Civlg6floIIgPiBzb3Vkb3VcIDsKK+S+jeiHoyA+IGppc2hpblwgOwor6aiT566XID4ga2VuemFuXCA7CivnlJ/nlKMgPiBzZWlzYW5cIDsKK+eUn+eUnyA+IHNlaXNlaVwgOwor5Lq66a2aID4gbmluZ3lvXCA7CivkvZPoo4EgPiB0ZWlzYWlcIDsKK+i7jeWjqyA+IGd1bnNoaVwgOwor5L6/566hID4gYmVua2FuXCA7CivlgbbmlbAgPiBndXVzdXVcIDsKK+S+v+euiyA+IGJpbnNlblwgOwor6aSK6a2aID4geW91Z3lvXCA7CivlsI7nt5ogPiBkb3VzZW5cIDsKK+iBlumkkCA+IHNlaXNhblwgOwor5a6M6LWwID4ga2Fuc291XCA7CivkvInphY0gPiBrb3VoYWlcIDsKK+mmrOidvyA+IHVtYWJhZVwgOwor6Iqx5L+hID4ga2FzaGluXCA7CivlrqPoqpMgPiBzZW5zZWlcIDsKK+S7pOmWqCA+IHJlaWtlaVwgOwor5YOn5Z2KID4gc291Ym91XCA7Civlr77nva4gPiB0YWljaGlcIDsKK+mnkOiLsSA+IGNodXVlaVwgOwor6IKp6LqrID4ga2F0YW1pXCA7Civku4rpoqggPiBpbWFmdXVcIDsKK+mAmeOAhSA+IGhvdWhvdVwgOwor6Iq45Lq6ID4gZ2VpbmluXCA7Civmn5TpgZMgPiBqdXVkb3VcIDsKK+WxpOeKtiA+IHNvdWpvdVwgOwor6ISx57eaID4gZGFzc2VuXCA7CivmoLnoj5wgPiBrb25zYWlcIDsKK+Wuo+iogCA+IHNlbmdlblwgOwor6IOh6J22ID4ga29jaG91XCA7CivlsI/ns6AgPiBrb251a2FcIDsKK+aknOahiCA+IGtlbicnYW5cIDsKK+aenemaiiA+IHNoaXRhaVwgOwor5a6a6KuWID4gdGVpcm9uXCA7Civmpb3lsYsgPiBnYWt1eWFcIDsKK+mrmOaJgCA+IGtvdXNob1wgOwor55eF5b6MID4gYnlvdWdvXCA7Civohr/msYEgPiBub3VqdXVcIDsKK+WCsuWyuCA+IGdvdWdhblwgOwor5bCP57GzID4ga29nb21lXCA7Civlrabpg6ggPiBnYWt1YnVcIDsKK+iHqOabuCA+IHJpbnNob1wgOwor5p+76KqtID4gc2Fkb2t1XCA7CivohavnmI0gPiBzaHV5b3VcIDsKK+alveWvnSA+IHJha3VuZVwgOwor5bCB57eYID4gZnV1a2FuXCA7CivmoLnojI4gPiBrb25rZWlcIDsKK+iGqOa6gCA+IGJvdW1hblwgOwor5L+u55CGID4gc2h1dXJpXCA7CivohLHns54gPiBkYXBwdW5cIDsKK+S/oeeWkSA+IHNoaW5naVwgOwor5a6f6KaLID4gamlra2VuXCA7Civou43lm6MgPiBndW5kYW5cIDsKK+iHmOaihSA+IHJvdWJhaVwgOwor5a6a6KiAID4gdGVpZ2VuXCA7Civmn7voqLwgPiBzYXNob3VcIDsKK+WAkua9sCA+IHRvdWthaVwgOwor6IiM5oimID4gemVzc2VuXCA7CivlsJbnq68gPiBzZW50YW5cIDsKK+WumOiosSA+IGthbmt5b1wgOwor6auY5oWiID4ga291bWFuXCA7Civmn5Tou58gPiBqdXVuYW5cIDsKK+Wwj+eusSA+IGtvYmFrb1wgOwor6IGW6ZyKID4gc2VpcmVpXCA7CivnmYjkurogPiBoYWlqaW5cIDsKK+i7ouWQkSA+IHRlbmtvdVwgOwor5a+G6JGsID4gbWlzc291XCA7CivlsL3nmIEgPiBqaW5zdWlcIDsKK+S9s+iJryA+IGthcnlvdVwgOwor5bCK57ChID4gc29ua2FuXCA7CivlsI7nrqEgPiBkb3VrZW5cIDsKK+WwhOeyviA+IHNoYXNlaVwgOwor5a6a6KaLID4gdGVpa2VuXCA7Civkv53nlZkgPiBob3J5dXVcIDsKK+ani+WGhSA+IGtvdW5haVwgOwor55Om56SrID4gZ2FyZWtpXCA7Civlrp/oo4UgPiBqaXNzb3VcIDsKK+alteWvkiA+IGdva2thblwgOwor6aeF6IiOID4gZWtpc2hhXCA7CivmnaXprq4gPiByYWlzZW5cIDsKK+S6uumhniA+IGppbnJ1aVwgOwor5p6X6ZaTID4gcmlua2FuXCA7Civlrpfopo8gPiBzaHV1a2lcIDsKK+Wvqee+jiA+IHNoaW5iaVwgOwor5bSp5aOKID4gaG91a2FpXCA7CivkuqHprYIgPiBib3Vrb25cIDsKK+i0iOizhCA+IHpvdXdhaVwgOwor5L2/6IGYID4gc2hpaGVpXCA7CivkurrpoK0gPiBqaW50b3VcIDsKK+i1sOiAhSA+IHNvdXNoYVwgOwor5a2d6YGTID4ga291ZG91XCA7Civlrp/ooYwgPiBqaWtrb3VcIDsKK+i7jeWWtiA+IGd1bicnZWlcIDsKK+WDreWPliA+IHNlbnNodVwgOwor5qeY5L2TID4geW91dGFpXCA7Civos5zph5EgPiBzaGlraW5cIDsKK+agoeiRrCA+IGtvdXNvdVwgOwor6Lu95L6/ID4ga2VpYmVuXCA7Civkvb/ogIUgPiBzaGlzaGFcIDsKK+WumOijvSA+IGthbnNlaVwgOwor5YG25oiQID4gZ3V1c2VpXCA7Civkv5fnlYwgPiB6b2trYWlcIDsKK+i7ouWLpCA+IHRlbmtpblwgOwor5Lqk6ampID4ga291a2FuXCA7Civkv5fnlLsgPiB6b2t1Z2FcIDsKK+advumfuyA+IHNob3VpblwgOwor5a++57GzID4gdGFpYmVpXCA7CivlrovoqZ4gPiBzb3VzaGlcIDsKK+W5s+OAhSA+IGhlaWhlaVwgOwor6Led54iqID4ga3lvc291XCA7Civlg6flj7cgPiBzb3Vnb3VcIDsKK+iEguiCqiA+IHNoaWJvdVwgOwor5Lq66Z2iID4gamlubWVuXCA7CivlsILnrqEgPiBzZW5rYW5cIDsKK+iCjOi6qyA+IGhhZGFtaVwgOwor6Imv5ZCmID4gcnlvdWhpXCA7Civpo7zppIogPiBzaGl5b3VcIDsKK+WztuW2vCA+IHRvdXNob1wgOwor6ICB6b2iID4gcm91cmVpXCA7Civoia/lkI8gPiByeW91cmlcIDsKK+advumcsiA+IHNob3Vyb1wgOwor5bCB562SID4gZnV1dG91XCA7Civpo5vps6UgPiBoaWNob3VcIDsKK+iEmue1hiA+IGt5YWhhblwgOwor5YG25oSfID4gZ3V1a2FuXCA7Civosp3poZ4gPiBrYWlydWlcIDsKK+S7mOmMsiA+IGZ1cm9rdVwgOwor5YGP5peBID4gaGVuYm91XCA7Civku6Pph5EgPiBkYWlraW5cIDsKK+mrmOW8nyA+IGtvdXRlaVwgOwor6LO86LK3ID4ga291YmFpXCA7CivohLHnqL8gPiBkYWtrb3VcIDsKK+WBj+aWnCA+IGhlbnNoYVwgOwor5bGx5rW3ID4gc2Fua2FpXCA7Civlr4boiKogPiBtaWtrb3VcIDsKK+WvkuiCpSA+IGthbmdvZVwgOwor5a++562JID4gdGFpdG91XCA7Civou6LlhpkgPiB0ZW5zaGFcIDsKK+S8muirhyA+IGthaWRhblwgOwor6IiO5byfID4gc2hhdGVpXCA7Civlgr7ln44gPiBrZWlzZWlcIDsKK+WBpeaKlSA+IGtlbnRvdVwgOwor6aa06Ie0ID4ganVuY2hpXCA7CivprZrku4sgPiBneW9rYWlcIDsKK+WCmOWxiyA+IGthc2F5YVwgOwor6auY5bm0ID4ga291bmVuXCA7CivkvbXnva4gPiBoZWljaGlcIDsKK+WwhOeoiyA+IHNoYXRlaVwgOwor5Lyd6KiAID4gZGVuZ29uXCA7Civou4rlj7AgPiBzaGFkYWlcIDsKK+eVs+aVsCA+IGpvdXN1dVwgOwor5a++56m6ID4gdGFpa3V1XCA7CivkvJroqIggPiBrYWlrZWlcIDsKK+S9nOiIiCA+IHNha2tvdVwgOwor6IGv6YKmID4gcmVucG91XCA7Civohbjngo4gPiBjaG91ZW5cIDsKK+S6uumWkyA+IG5pbmdlblwgOwor5a2m6LK7ID4gZ2FrdWhpXCA7CivmnbHpnaIgPiB0b3VtZW5cIDsKK+mrmOW3pSA+IGtvdWtvdVwgOwor5qCh6IiOID4ga291c2hhXCA7CivlsI/noLQgPiBzaG91aGFcIDsKK+izh+mHkSA+IHNoaWtpblwgOwor6auY5ba6ID4gdGFrYW5lXCA7Civpo5vprZogPiB0b2JpdW9cIDsKK+WxseawtCA+IHNhbnN1aVwgOwor5L2Z6IiIID4geW9reW91XCA7CivlsbHmsJcgPiB5YW1ha2VcIDsKK+Wwj+efsyA+IGtvaXNoaVwgOwor6IiI5buDID4ga291aGFpXCA7Civou43li6IgPiBndW56ZWlcIDsKK+S9meiHrSA+IHlvc2h1dVwgOwor5Lya6KaLID4ga2Fpa2VuXCA7CivlgJLmrbsgPiB0b3VzaGlcIDsKK+WwgeemhSA+IGhvdXplblwgOwor6LSF6KiAID4gemVpZ2VuXCA7Civnj77ph5EgPiBnZW5raW5cIDsKK+WxheeEtiA+IGt5b3plblwgOwor5YSE5LiHID4gb2t1bWFuXCA7CivmpJzmjJkgPiBrZW5reW9cIDsKK+i7jeWKnyA+IGd1bmtvdVwgOwor6Lui5YCSID4gdGVudG91XCA7CivnlLrmrakgPiBjaG91YnVcIDsKK+WDp+WFtSA+IHNvdWhlaVwgOwor55aR5oORID4gZ2l3YWt1XCA7Civls7blroggPiB0b3VzaHVcIDsKK+S7o+i/lCA+IGRhaWhlblwgOwor5YGc5oimID4gdGVpc2VuXCA7Civmpb3lnJ8gPiByYWt1ZG9cIDsKK+iHqOaIpiA+IHJpbnNlblwgOwor5a6d6JS1ID4gaG91em91XCA7Civmpb3lnJIgPiByYWt1ZW5cIDsKK+iHs+aDhSA+IHNoaWpvdVwgOwor6auY5bOwID4ga291aG91XCA7Civmnpfph44gPiByaW4nJ3lhXCA7Civou43liLYgPiBndW5zZWlcIDsKK+S6rOmYqiA+IGtlaWhhblwgOwor6LWk57eaID4gYWthc2VuXCA7Civlrrboh6MgPiBrYXNoaW5cIDsKK+S6pOmciiA+IGtvdXJlaVwgOwor5LuW6YO3ID4gdGFreW91XCA7Civou43liIAgPiBndW50b3VcIDsKK+mmmeiNiSA+IGtvdXNvdVwgOwor55e05ZGGID4gY2hpaG91XCA7CivmnaHpoIUgPiBqb3Vrb3VcIDsKK+i7n+S+vyA+IG5hbmJlblwgOwor5bCP55uuID4ga29tb2t1XCA7Civmn5DoqowgPiBib3VzaGlcIDsKK+aghOiQvSA+IGVpcmFrdVwgOwor6LuK5Yi4ID4gc2hha2VuXCA7Civou6LkvY8gPiB0ZW5qdXVcIDsKK+eUqOazlSA+IHlvdWhvdVwgOwor6ImZ5Y+jID4gc291a291XCA7Civoh4bmlq0gPiBva3VkYW5cIDsKK+mrmOWxsSA+IGtvdXphblwgOwor6LqN5aaCID4geWFrdWpvXCA7Civpq5jlsaQgPiBrb3Vzb3VcIDsKK+Wwj+eavyA+IGtvemFyYVwgOwor5bCP55q6ID4ga29qaXdhXCA7CivkuqHpnIogPiBib3VyZWlcIDsKK+S6pOmamyA+IGtvdXNhaVwgOwor6Ii55Z6LID4gc2Vua2VpXCA7CivotaTntYwgPiBzZWtrZWlcIDsKK+S9nuiAhSA+IG5laXNoYVwgOwor5qWt5aCxID4gZ291aG91XCA7CivppqzogokgPiBiYW5pa3VcIDsKK+S9k+iFlCA+IHRhaWtvdVwgOwor5YGV5oiQID4ga2Fpc2VpXCA7CivnlpHlv4MgPiBnaXNoaW5cIDsKK+i7jeWFtSA+IGd1bnBlaVwgOwor5p2l6Zu7ID4gcmFpZGVuXCA7CivmnbHploAgPiB0b3Vtb25cIDsKK+mrmOWwgiA+IGtvdXNlblwgOwor5YGl5b+YID4ga2VuYm91XCA7CivnlKjmsLQgPiB5b3VzdWlcIDsKK+i7iuWGhSA+IHNoYW5haVwgOwor6aat6ICFID4gZ3lvc2hhXCA7CivprYXkuoYgPiBtaXJ5b3VcIDsKK+S6jOmjnyA+IG5pamlraVwgOwor6Ii55ZujID4gc2VuZGFuXCA7CivohILnsokgPiBzaGlmdW5cIDsKK+ePvumAgSA+IGdlbnNvdVwgOwor6auY5a6YID4ga291a2FuXCA7Civoh7PlvZMgPiBzaGl0b3VcIDsKK+eOhOm7hCA+IGdlbmtvdVwgOwor5L2T6IKyID4gdGFpaWt1XCA7Civou43lg6cgPiBndW5zb3VcIDsKK+WxpeattCA+IHJpcmVraVwgOwor5YOn5L62ID4gc291cnlvXCA7CivmnpfpgZMgPiByaW5kb3VcIDsKK+iytOmHjSA+IGtpY2hvdVwgOwor5L2Z57+SID4geW9zaHV1XCA7CivosYrpupcgPiBob3VyZWlcIDsKK+WApOacrSA+IG5lZnVkYVwgOwor5L2O6IO9ID4gdGVpbm91XCA7CivmnaXpmKogPiByYWloYW5cIDsKK+WDp+S9kyA+IHNvdXRhaVwgOwor5L6L56WtID4gcmVpc2FpXCA7CivosrTphawgPiBraXNodXVcIDsKK+iDmuiDjiA+IGhhaXRhaVwgOwor5YOn5Ly9ID4gc291Z3lhXCA7Civmoafnmq4gPiBoaXdhZGFcIDsKK+WCvuWQkSA+IGtlaWtvdVwgOwor5a2Q6LGaID4ga29idXRhXCA7Civosq/ph5EgPiBjaG9raW5cIDsKK+alveWToSA+IGdha3VpblwgOwor5YGl5bq3ID4ga2Vua291XCA7Civoh6rlvpcgPiBqaXRva3VcIDsKK+WDreS4uyA+IHNlbnNodVwgOwor5Luj6LWwID4gZGFpc291XCA7Civku6Pota0gPiB0YWlzaGFcIDsKK+iCuuiRiSA+IGhhaXlvdVwgOwor5YOt5LiKID4gc2Vuam91XCA7Civoh6jlvqEgPiByaW5neW9cIDsKK+iyp+mJsSA+IGhpbmtvdVwgOwor5YGP5oSbID4gaGVuJydhaVwgOwor5YG95a2mID4gZ2lnYWt1XCA7CivlgpHlo6sgPiBrZXNzaGlcIDsKK+mmluiEsyA+IHNodW5vdVwgOwor6LuN5L2/ID4gZ3Vuc2hpXCA7CivnlJ/mrosgPiBzZWl6YW5cIDsKK+eUn+atuyA+IHNlaXNoaVwgOwor5p2/6YeRID4gYmFua2luXCA7Civmo5/mnKggPiBtdW5hZ2lcIDsKK+eVquaJgCA+IGJhbnNob1wgOwor6Lev5qiZID4gcm9oeW91XCA7CivnnIjjgIUgPiB0YW50YW5cIDsKK+eUt+aguSA+IGRhbmtvblwgOwor5L2O572uID4gdGVpY2hpXCA7Civpppbogq8gPiBzaHVrb3VcIDsKK+i7iuS9kyA+IHNoYXRhaVwgOwor6Ii55ZOhID4gc2VuJydpblwgOwor55eF5ZugID4gYnlvdWluXCA7CivlrZfoqLMgPiBqaXlha3VcIDsKK+i7jeS7pCA+IGd1bnJlaVwgOwor5YGP5oCnID4gaGVuc2VpXCA7Civmo43mo5IgPiBrb25ib3VcIDsKK+WxpOalvCA+IHNvdXJvdVwgOwor5YGc5bm0ID4gdGVpbmVuXCA7CivlgpjlnLAgPiBrYXNhamlcIDsKK+iHqOW5uCA+IHJpbmtvdVwgOwor6LuN5Lq6ID4gZ3VuamluXCA7Civoh6rluK0gPiBqaXNla2lcIDsKK+S6iOmchyA+IHlvc2hpblwgOwor5a6Y6IiOID4ga2Fuc2hhXCA7CivpqJLnhLYgPiBzb3V6ZW5cIDsKK+mrmOWkpyA+IGtvdWRhaVwgOwor6Iel5bqKID4gZ2FzaG91XCA7CivlsbHmnpcgPiBzYW5yaW5cIDsKK+alteWPsyA+IGt5b2t1dVwgOwor5pyo6a2CID4ga29kYW1hXCA7Civpq5jlo6sgPiBrb3VzaGlcIDsKK+iFjueCjiA+IGppbicnZW5cIDsKK+WxseadkSA+IHNhbnNvblwgOwor5Lq66YG4ID4gamluc2VuXCA7CivlsI/njKsgPiBrb25la29cIDsKK+S7ruiolyA+IGthdGFrdVwgOwor5a++55SfID4gdGFpc2VpXCA7Civmo5Lmna0gPiBib3VndWlcIDsKK+iIueWPsCA+IHNlbmRhaVwgOwor5Lq66YGTID4gamluZG91XCA7CivpqqjlubkgPiBrb2trYW5cIDsKK+ajkuadmSA+IGJvdWd1aVwgOwor6aas57OnID4gYmFyeW91XCA7Civos4fosqEgPiBzaGl6YWlcIDsKK+mmrOezniA+IG1hZ3Vzb1wgOwor5Lq66YCgID4gamluem91XCA7Civlg4Xlg4UgPiBraW5raW5cIDsKK+alteWNsCA+IGdva3VpblwgOwor5Luj6KydID4gdGFpc2hhXCA7Civku6PorJsgPiBkYWlrb3VcIDsKK+S8muiRrCA+IGthaXNvdVwgOwor5a2d6KGMID4ga291a291XCA7CivnlLLmnb8gPiBrb3VoYW5cIDsKK+i7iuS4iiA+IHNoYWpvdVwgOwor6Iez5bCKID4gc2hpc29uXCA7CivoiIXlp5EgPiBreXV1a29cIDsKK+S6iemXmCA+IHNvdXRvdVwgOwor6IiI5aWuID4ga291ZnVuXCA7CivoiabkuIogPiBrYW5qb3VcIDsKK+iCuuiHkyA+IGhhaXpvdVwgOwor6Lqr5YaFID4gbWl1Y2hpXCA7CivlsI/niakgPiBrb21vbm9cIDsKK+mrmOWggiA+IGtvdWRvdVwgOwor5bCP54mbID4ga291c2hpXCA7CivouqvlhbEgPiBtaWRvbW9cIDsKK+eRtue3mCA+IHlvdWthblwgOwor5YK15Yi4ID4gc2Fpa2VuXCA7Civoh7Plrp0gPiBzaGlob3VcIDsKK+S9k+ezuyA+IHRhaWtlaVwgOwor5YGP5bmzID4gaGVucGVpXCA7CivouqvlhYMgPiBtaW1vdG9cIDsKK+Wvn+efpSA+IHNhdGNoaVwgOwor55Sf5qScID4gc2Vpa2VuXCA7Civkuqzpg70gPiBreW91dG9cIDsKK+acq+mmmSA+IG1ha2tvdVwgOwor6Iez5a2dID4gc2hpa291XCA7CivmnKjppqwgPiBtb2t1YmFcIDsKK+WBtOWlsyA+IHNvYmFtZVwgOwor5pys6aSoID4gaG9ua2FuXCA7Civku6PoqIAgPiBkYWlnZW5cIDsKK+adsemDiiA+IHRvdWtvdVwgOwor6IK66IOeID4gaGFpaG91XCA7Civpq5jlnLAgPiBrb3VjaGlcIDsKK+adsemCpiA+IHRvdWhvdVwgOwor6IGW6LOiID4gc2Vpa2VuXCA7Civkurrou4ogPiBqaW5zaGFcIDsKK+eXtOS6uiA+IGNoaWppblwgOwor5pyx6aGUID4gc2h1Z2FuXCA7CivkurrouqsgPiBoaXRvbWlcIDsKK+eUqOadkCA+IHlvdXphaVwgOwor5Lqk6YWNID4ga291aGFpXCA7CivmnbHpgbcgPiB0b3VzZW5cIDsKK+iCuuiCnSA+IGhhaWthblwgOwor6Laz5rmvID4gYXNoaXl1XCA7Civlrprnva4gPiB0ZWljaGlcIDsKK+WCvuWAkiA+IGtlaXRvdVwgOwor5qWt5YuZID4gZ3lvdW11XCA7CivlgI3mlbAgPiBiYWlzdXVcIDsKK+ahkeeUsCA+IHNvdWRlblwgOwor6ICB6ZuEID4gcm91eXV1XCA7CivoiLnlh7ogPiBmdW5hZGVcIDsKK+iHquWuhSA+IGppdGFrdVwgOwor6ISH55uuID4gd2FraW1lXCA7CivmpJzlsY0gPiBrZW5zaGlcIDsKK+acrOmhmCA+IGhvbmdhblwgOwor5pys6aGMID4gaG9uZGFpXCA7CivkubHpm7IgPiByYW4nJ3VuXCA7Civnlr7lkbwgPiBzaGlra29cIDsKK+WCreWFtSA+IHlvdWhlaVwgOwor6Ii55YW3ID4gZnVuYWd1XCA7CivlrrbnrYsgPiBpZXN1amlcIDsKK+ixiumlkiA+IGhvdWpvdVwgOwor5pys6Z+zID4gaG9uJyduZVwgOwor5LuY6KiXID4gZnV0YWt1XCA7CivkvJroiJggPiBrYWlrYW5cIDsKK+acq+mghSA+IG1ha2tvdVwgOwor55Sf5p2lID4gc2VpcmFpXCA7CivkuqTpgYogPiBrb3V5dXVcIDsKK+WApuaGiiA+IGtlbnBhaVwgOwor5p6i6KaBID4gc3V1eW91XCA7CivporHpoqggPiB0YWlmdXVcIDsKK+Wun+e3miA+IGppc3NlblwgOwor5a+d55mWID4gbmVndXNlXCA7Civoh43luK8gPiBzZWl0YWlcIDsKK+aknOWumiA+IGtlbnRlaVwgOwor5p2l6YK4ID4gcmFpdGVpXCA7CivohbnmoYggPiBmdWt1YW5cIDsKK+eUn+acqCA+IG5hbWFraVwgOwor6I2J44CFID4gc291c291XCA7CivkvZnnqIsgPiB5b2hvZG9cIDsKK+S7o+ihjCA+IGRhaWtvdVwgOwor5bO25Y+4ID4gdG91c2hpXCA7CivlgrLlgKggPiBnb3VreW9cIDsKK+mqqOWtkCA+IGtvc3NoaVwgOwor6Iez5aSnID4gc2hpZGFpXCA7Civkvb/nlKggPiBzaGl5b3VcIDsKK+S5semXmCA+IHJhbnRvdVwgOwor5p2l6YGKID4gcmFpeXV1XCA7CivmnbHou40gPiB0b3VndW5cIDsKK+WxleacmyA+IHRlbmJvdVwgOwor6ICz6LyqID4gbWltaXdhXCA7CivkvZnnpoQgPiB5b3Jva3VcIDsKK+Wwj+a9riA+IGtvc2hpb1wgOwor5a+p55CGID4gc2hpbnJpXCA7CivmorbmnKggPiBrYWppa2lcIDsKK+iyp+izpCA+IGhpbnNlblwgOwor6LKn6LOOID4gaGluc2VuXCA7CivmnaXov44gPiByYWlnb3VcIDsKK+aciemrqiA+IHVoYXRzdVwgOwor6LWk55eiID4gc2VraXJpXCA7Civkvr/ms5UgPiBiZW5wb3VcIDsKK+iIueWAiSA+IHNlbnNvdVwgOwor5L2O56m6ID4gdGVpa3V1XCA7CivmnKjpnIogPiBrb2RhbWFcIDsKK+S8neiBniA+IGRlbmJ1blwgOwor5pys6ZqKID4gaG9udGFpXCA7CivlsqnlsaQgPiBnYW5zb3VcIDsKK+iCneiHkyA+IGthbnpvdVwgOwor5pyd6aGUID4gYXNhZ2FvXCA7CivouqvkuIggPiBtaXRha2VcIDsKK+WApuaAoCA+IGtlbnRhaVwgOwor5pys6ZmjID4gaG9uamluXCA7CivmnKzpmaIgPiBob24nJ2luXCA7CivlsKjmr5sgPiBtdWt1Z2VcIDsKK+Wumue0iyA+IGpvdW1vblwgOwor6aSK6LGaID4geW91dG9uXCA7Civku5jooaggPiBmdWh5b3VcIDsKK+WutuemhCA+IGthcm9rdVwgOwor5pyx6ZaAID4gc2h1bW9uXCA7Civogp3ohY4gPiBrYW5qaW5cIDsKK+S9teeUqCA+IGhlaXlvdVwgOwor6auY5ZCfID4ga291Z2luXCA7CivmnKjpmbAgPiBrb2thZ2VcIDsKK+iIueS9kyA+IHNlbnRhaVwgOwor6auY5ZCNID4ga291bWVpXCA7CivlgJLmh7ggPiB0b3VrZW5cIDsKK+WCteS4uyA+IHNhaXNodVwgOwor54++6KGMID4gZ2Vua291XCA7CivnkrDnirYgPiBrYW5qb3VcIDsKK+adpei7iiA+IHJhaXNoYVwgOwor6IOM562LID4gaGFpa2luXCA7CivlsbHmiYsgPiB5YW1hdGVcIDsKK+iFi+avmyA+IHdha2lnZVwgOwor5L+z5paHID4gaGFpYnVuXCA7Civkvr/mrr8gPiBiZW5kZW5cIDsKK+acgOmrmCA+IHNhaWtvdVwgOwor5qKX5qaCID4ga291Z2FpXCA7Civogp3og4YgPiBrYW50YW5cIDsKK+mrmOWOnyA+IGtvdWdlblwgOwor5pyd6ZyyID4gY2hvdXJvXCA7Civlsa/miYAgPiB0b25zaG9cIDsKK+WCreS6uiA+IHlvdW5pblwgOwor6LOA6KGoID4gZ2FoeW91XCA7CivmnJ3pnJ4gPiBjaG91a2FcIDsKK+WuneeulyA+IGhvdXNhblwgOwor6Iy244CFID4gY2hhY2hhXCA7CivpoqjpnJwgPiBmdXVzb3VcIDsKK+i1t+eIhiA+IGtpYmFrdVwgOwor6IiI5ZGzID4ga3lvdW1pXCA7CivogJDphbggPiB0YWlzYW5cIDsKK+WBpeWcqCA+IGtlbnphaVwgOwor6IKJ6Iq9ID4gbmlrdWdhXCA7Civoh6jloLQgPiByaW5qb3VcIDsKK+WztuWGhSA+IHRvdW5haVwgOwor55So5o2oID4geW91c2hhXCA7CivlraToiJ8gPiBrb3NodXVcIDsKK+S6jOmAsiA+IG5pc2hpblwgOwor5p2R6YGTID4gc29uZG91XCA7CivlgY/lpb0gPiBoZW5rb3VcIDsKK+S6jOmAmiA+IG5pdHN1dVwgOwor5Yal44CFID4gbWVpbWVpXCA7CivlrZDokYkgPiBzaGl5b3VcIDsKK+iCr+e2riA+IGtvdWtlaVwgOwor5L2p55SoID4gaGFpeW91XCA7CivkuZfpmY0gPiBqb3Vrb3VcIDsKK+S6i+i/uSA+IGppc2VraVwgOwor5a6Y562JID4ga2FudG91XCA7CivlgKTluYUgPiBuZWhhYmFcIDsKK+eOhOmWoiA+IGdlbmthblwgOwor6aKo6ZiyID4gZnV1Ym91XCA7CivlsJrmraYgPiBzaG91YnVcIDsKK+aer+iRiSA+IGthcmVoYVwgOwor5a62552jID4ga2F0b2t1XCA7CivlgbblkJ8gPiBndXVraW5cIDsKK+S8nee3miA+IGRlbnNlblwgOwor5YCk5be+ID4gbmVoYWJhXCA7Civoh6rlm70gPiBqaWtva3VcIDsKK+iHqOWcqCA+IHJpbnphaVwgOwor5L2Z55m9ID4geW9oYWt1XCA7Civlrr/nl74gPiBzaHVrdWFcIDsKK+WvhueUnyA+IG1pc3NlaVwgOwor5a+E55WZID4ga2lyeXV1XCA7CivmnaXos5MgPiByYWloaW5cIDsKK+iHs+WWhCA+IHNoaXplblwgOwor5Lyd57WxID4gZGVudG91XCA7CivnlLvlv4MgPiBnYXNoaW5cIDsKK+WwjuawtCA+IGRvdXN1aVwgOwor5p2l6LKiID4gcmFpa291XCA7CivnlLfmgKcgPiBkYW5zZWlcIDsKK+WxheaVtyA+IGlzaGlraVwgOwor6ISx5rOVID4gZGFwcG91XCA7CivlgKTltakgPiBuZWdhc2FcIDsKK+aknOWcsCA+IGtlbmNoaVwgOwor6LGq6YK4ID4gZ291dGVpXCA7CivlgaXllZYgPiBrZW50YW5cIDsKK+S9meeXhSA+IHlvYnlvdVwgOwor6Ieq5ZiyID4gamljaG91XCA7CivosqDoqJcgPiBmdXRha3VcIDsKK+iAgemFkiA+IHJvdXNodVwgOwor5Li76aGMID4gc2h1ZGFpXCA7CivkvY7nm64gPiBoaWt1bWVcIDsKK+S9nOeUuyA+IHNha3VnYVwgOwor542j6aGeID4ganV1cnVpXCA7CivosarpgoEgPiBnb3VtYWlcIDsKK+WwhOazlSA+IHNoYWhvdVwgOwor5Lqk6K2yID4ga291am91XCA7CivkuovouZ8gPiBqaXNla2lcIDsKK+WxseW+hCA+IHNhbmtlaVwgOwor55Kw5r+gID4ga2FuZ291XCA7Civpp4TniakgPiBkYW1vbm9cIDsKK+iEseawtCA+IGRhc3N1aVwgOwor6LGq6YGKID4gZ291eXV1XCA7Civpo5vouo0gPiBoaXlha3VcIDsKK+mrmOWDpyA+IGtvdXNvdVwgOwor6Ie05ZG9ID4gY2hpbWVpXCA7CivkubHphZQgPiByYW5zdWlcIDsKK+S5semFkiA+IHJhbnNodVwgOwor6IiO5YWEID4gc2hha2VpXCA7Civku7Doh6UgPiBneW91Z2FcIDsKK+eVquWkliA+IGJhbmdhaVwgOwor5bKp5aGpID4gZ2FuJydlblwgOwor55Sf5oiQID4gc2Vpc2VpXCA7CivlgY/lnKggPiBoZW56YWlcIDsKK+S6i+i3oSA+IGppc2VraVwgOwor5L2V55WqID4gbmFuYmFuXCA7Civmm7jpoqggPiBzaG9mdXVcIDsKK+iEs+atuyA+IG5vdXNoaVwgOwor5LqM6LazID4gbmlzb2t1XCA7CivlrpfnpZYgPiBzaHV1c29cIDsKK+e+vemiqCA+IGhha2F6ZVwgOwor6LGq6L6yID4gZ291bm91XCA7Civls7bkurogPiB0b3VqaW5cIDsKK+S+oOawlyA+IGt5b3VraVwgOwor55S75bmFID4gZ2FmdWt1XCA7CivmnInpmZAgPiB5dXVnZW5cIDsKK+abuOmhniA+IHNob3J1aVwgOwor6aaZ55uSID4ga291Z291XCA7CivnlLvluLMgPiBnYWNob3VcIDsKK+eUn+aGjiA+IGFpbmlrdVwgOwor6auY5YCkID4gdGFrYW5lXCA7CivkuK3po5sgPiBjaHV1aGlcIDsKK+aeneiRiSA+IHNoaXlvdVwgOwor6LC36ZaTID4gdGFuaW1hXCA7CivkuqToqaIgPiBrb3VqdW5cIDsKK+S4uemdkiA+IHRhbnNlaVwgOwor5p2x6KW/ID4gdG91emFpXCA7Civoh63lkbMgPiBzaHV1bWlcIDsKK+eQtOe3miA+IGtpbnNlblwgOwor6IOh55OcID4ga3l1dXJpXCA7Civlho3jgIUgPiBzYWlzYWlcIDsKK+mjm+i2iiA+IGhpZXRzdVwgOwor55Sf5oWLID4gc2VpdGFpXCA7Civls7bkuLsgPiB0b3VzaHVcIDsKK+adpeirhyA+IHJhaWRhblwgOwor5YCJ5bupID4gc291cmluXCA7CivohZDmnL0gPiBmdWt5dXVcIDsKK+WuieepjyA+IGFuJydub25cIDsKK+WApOWuiSA+IG5leWFzdVwgOwor5Luj6ImmID4gZGFpa2FuXCA7Civlr7jms5UgPiBzdW5wb3VcIDsKK+iDjuebpCA+IHRhaWJhblwgOwor6ICB6L6yID4gcm91bm91XCA7CivkubHpgKAgPiByYW56b3VcIDsKK+WCjeS6uiA+IGJvdWppblwgOwor5bGI5oyHID4ga3Vzc2hpXCA7CivogrLnqK4gPiBpa3VzaHVcIDsKK+aknOWVjyA+IGtlbm1vblwgOwor5qKF5p6XID4gYmFpcmluXCA7CivmnKjph5ggPiBraWt1Z2lcIDsKK+aciemWkSA+IHl1dWthblwgOwor55So5b+DID4geW91amluXCA7CivnlLflt6UgPiBkYW5rb3VcIDsKK+ixvOiyhSA+IGhpa3l1dVwgOwor5pyI6ZaTID4gZ2Vra2FuXCA7CivlsbHlt5MgPiBzYW50ZW5cIDsKK+S7j+iRrCA+IGJ1c3NvdVwgOwor5YCf5a62ID4gc2hha2thXCA7Civmm7jpnaIgPiBzaG9tZW5cIDsKK+WxseW2uiA+IHNhbnJlaVwgOwor5p2l6KiqID4gcmFpaG91XCA7CivkuK3pn7MgPiBjaHV1b25cIDsKK+eUqOW9uSA+IHlvdWVraVwgOwor54+q6Je7ID4ga2Vpc291XCA7CivotIjnrZQgPiB6b3V0b3VcIDsKK+iAgei8qSA+IHJvdWhhaVwgOwor6IG+6ICFID4gcm91c2hhXCA7CivmoZHmtbcgPiBzb3VrYWlcIDsKK+Wwj+alryA+IGtvZGF0ZVwgOwor5p+x56SOID4gY2h1dXNvXCA7CivppIronIIgPiB5b3Vob3VcIDsKK+Wun+ebuCA+IGppc3NvdVwgOwor5LqL6LGhID4gamlzaG91XCA7Civlr5LngrkgPiBrYW50ZW5cIDsKK+iBmuiQvSA+IGp1cmFrdVwgOwor5qSc5ZOBID4ga2VucGluXCA7CivlhoXjgIUgPiBuYWluYWlcIDsKK+WBtuWDjyA+IGd1dXpvdVwgOwor5a2Y572uID4gc29uY2hpXCA7CivmnKzpgrggPiBob250ZWlcIDsKK+S9k+ePviA+IHRhaWdlblwgOwor55Wq5ZywID4gYmFuY2hpXCA7CivmnbHooYwgPiB0b3Vrb3VcIDsKK+acrOmCpiA+IGhvbnBvdVwgOwor55Sy5behID4ga291anVuXCA7CivmnaXoprMgPiByYWlrYW5cIDsKK+mkiuialSA+IHlvdXNhblwgOwor5pys6YG4ID4gaG9uc2VuXCA7CivpoL3pvaIgPiB0YWlyZWlcIDsKK+eSsOa1tyA+IGthbmthaVwgOwor5pyo6YOoID4gbW9rdWJ1XCA7CivmoYPmupAgPiB0b3VnZW5cIDsKK+acrOmBkyA+IGhvbmRvdVwgOwor5bGF5omAID4ga3lvc2hvXCA7CivpoqjpiLQgPiBmdXVyaW5cIDsKK+i3r+W6iiA+IHJvc2hvdVwgOwor5YG95L2cID4gZ2lzYWt1XCA7CivkubHou40gPiByYW5ndW5cIDsKK+iznue+jiA+IHNob3ViaVwgOwor5bGV5oCnID4gdGVuc2VpXCA7Civosq/olLUgPiBjaG96b3VcIDsKK+WwguaoqiA+IHNlbicnb3VcIDsKK+WwguaoqSA+IHNlbmtlblwgOwor5YCh5ammID4gc2hvdWZ1XCA7CivmnJ3ph44gPiBjaG91eWFcIDsKK+iDmuePoCA+IGhhaXNodVwgOwor5pyq6YCyID4gbWlzaGluXCA7CivkvJHnrKYgPiBreXV1ZnVcIDsKK+eUn+W9qSA+IHNlaXNhaVwgOwor6aKo6YeHID4gZnV1c2FpXCA7Civog47nlJ8gPiB0YWlzZWlcIDsKK+eUo+W7gyA+IHNhbnBhaVwgOwor5Luk6IGeID4gcmVpYnVuXCA7Civkv7PlvoogPiBoYWlrYWlcIDsKK+iHquWKmyA+IGppcmlraVwgOwor5L+C5pWwID4ga2Vpc3V1XCA7CivkuK3pmbAgPiBjaHV1aW5cIDsKK+aknOWNsCA+IGtlbicnaW5cIDsKK+eUuuWutiA+IGNob3VrYVwgOwor5bCR5p6XID4gc2hvcmluXCA7CivlgaXlhaggPiBrZW56ZW5cIDsKK+WBj+WQkSA+IGhlbmtvdVwgOwor5a+u5q+NID4gcnlvdWJvXCA7CivoiIjkuqEgPiBrb3Vib3VcIDsKK+eUu+WtpiA+IGdhZ2FrdVwgOwor5bCG5qOLID4gc2hvdWdpXCA7CivkupLop5IgPiBnb2tha3VcIDsKK+izque0oCA+IHNoaXNzb1wgOwor5qC55rqQID4ga29uZ2VuXCA7Civmn7PnnIkgPiByeXV1YmlcIDsKK+S6ieirliA+IHNvdXJvblwgOwor6LWw5rOVID4gc291aG91XCA7CivkuIrpqLAgPiBqb3V0b3VcIDsKK+WxseWutiA+IHlhbWFnYVwgOwor5Lya56S+ID4ga2Fpc2hhXCA7Civlrp/nlJ8gPiBtaXNob3VcIDsKK+acq+i8qSA+IG1hcHBhaVwgOwor5bGe5beuID4gem9rdXNhXCA7CivkuI3pprQgPiBmdW5hcmVcIDsKK+eUn+W5tCA+IHNlaW5lblwgOwor6aiS5pO+ID4gc291am91XCA7CivmpL/kuosgPiBjaGluamlcIDsKK+WvruatjCA+IHJ5b3VrYVwgOwor6aaW54+tID4gc2h1aGFuXCA7CivlrprnlaogPiB0ZWliYW5cIDsKK+WBtuS6uiA+IGd1dWppblwgOwor55S35a2QID4gZGFuc2hpXCA7Civku6PnvbIgPiBkYWlzaG9cIDsKK+S7o+e9riA+IGRhaWNoaVwgOwor6IK655mMID4gaGFpZ2FuXCA7CivkvqHmoLwgPiBrYWtha3VcIDsKK+iHqOWGmSA+IHJpbnNoYVwgOwor5a6Y55WMID4ga2Fua2FpXCA7CivppYznsbMgPiBzZW5tYWlcIDsKK+i2o+aXqCA+IHNodXNoaVwgOwor5LuK6IisID4ga29ucGFuXCA7CivlsIrmnaUgPiBzb25yYWlcIDsKK+air+W9oiA+IHRlaWtlaVwgOwor6L2f44CFID4gZ291Z291XCA7CivohqjlpKcgPiBib3VkYWlcIDsKK+S6jOimiyA+IGZ1dGFtaVwgOwor6Ieq5YSYID4gamltYW1hXCA7CivmnpzogokgPiBrYW5pa3VcIDsKK+aknOWIhiA+IGtlbmJ1blwgOwor5Lih6ZmiID4gcnlvdWluXCA7CivnlLLlrZAgPiBrYXNzaGlcIDsKK+S4gOmpmiA+IGlra3lvdVwgOwor5bCR5pmCID4gc2hvdWppXCA7CivkupTooYwgPiBnb2d5b3VcIDsKK+e+pOmdkiA+IGd1bmpvdVwgOwor6Iez5L6/ID4gc2hpYmVuXCA7CivlsIrmm7ggPiBzb25zaG9cIDsKK+S6iOimmiA+IHlva2FrdVwgOwor5bCP5pi8ID4ga29oaXJ1XCA7CivkvZXngrkgPiBuYW50ZW5cIDsKK+abnemcsiA+IGJha3Vyb1wgOwor5bCP5pilID4ga29oYXJ1XCA7CivkvZnngJ0gPiB5b3Jla2lcIDsKK+WuneePoCA+IGhvdXNodVwgOwor5a++5qChID4gdGFpa291XCA7CivlrZDntLAgPiBzaGlzYWlcIDsKK+eMrumljCA+IGtlbnNlblwgOwor5L+h5b6SID4gc2hpbnRvXCA7Civnlarlj7cgPiBiYW5nb3VcIDsKK+eVquWPsCA+IGJhbmRhaVwgOwor5LiA6aeEID4gaWNoaWRhXCA7CivohIfmr5sgPiB3YWtpZ2VcIDsKK+mhnumhjCA+IHJ1aWRhaVwgOwor5puc6ZyKID4geW91cmVpXCA7CivmoLnmsrsgPiBrb25jaGlcIDsKK+WvuuagvCA+IGppa2FrdVwgOwor5YGJ5YqbID4gaXJ5b2t1XCA7Civlr6HmrLIgPiBrYXlva3VcIDsKK+aciemFjSA+IHl1dWhhaVwgOwor6Ie05LuVID4gY2hpc2hpXCA7CivkuZfou4ogPiBqb3VzaGFcIDsKK+iHquS/riA+IGppc2h1dVwgOwor6Ieq5L+hID4gamlzaGluXCA7Civku5Xnva4gPiBzaGlva2lcIDsKK+miqOi7iiA+IGZ1dXNoYVwgOwor5pqX6buZID4gYW5tb2t1XCA7CivlsbHlpbMgPiB5YW1hbWVcIDsKK+S6rOiRiSA+IGtlaXlvdVwgOwor5pqX6buSID4gYW5rb2t1XCA7CivlsIHmm7ggPiBmdXVzaG9cIDsKK+S7j+iAhSA+IGJ1c3NoYVwgOwor5qOE5a2QID4gc3V0ZWdvXCA7CivlgLnlkJ0gPiBrZW5yaW5cIDsKK+iDuOazsyA+IGt5b3VlaVwgOwor5bGe5a6YID4gem9ra2FuXCA7CivlgJLlo4ogPiB0b3VrYWlcIDsKK+iHquS+myA+IGppa3lvdVwgOwor5LiJ6Z+TID4gc2Fua2FuXCA7CivkuojooaggPiB5b2h5b3VcIDsKK+S4h+mggyA+IGJhbmtlaVwgOwor5LiA6aObID4gaWNoaWhpXCA7Civotbfmpa0gPiBraWd5b3VcIDsKK+WBj+WFiSA+IGhlbmtvdVwgOwor5qGU5qKXID4ga2lreW91XCA7CivmoLnmr5sgPiBrb25tb3VcIDsKK+S9mea7tCA+IHlvdGVraVwgOwor5YCN5aSnID4gYmFpZGFpXCA7Civoh6rkvZwgPiBqaXNha3VcIDsKK+iCsueUnyA+IGlrdXNlaVwgOwor55S75aKDID4gZ2FreW91XCA7CivmnKjos4ogPiB0b2t1c2FcIDsKK+WwiuaVrCA+IHNvbmtlaVwgOwor55S35aOwID4gZGFuc2VpXCA7CivkuIrpnaIgPiBqb3VtZW5cIDsKK+WxheW4uCA+IGt5b2pvdVwgOwor5Luj57SNID4gZGFpbm91XCA7Civlr5LmsJcgPiBzYW11a2VcIDsKK+iHs+S4iiA+IHNoaWpvdVwgOwor5LiJ6Z2iID4gc2FubWVuXCA7CivlsIrmlJggPiBzb25qb3VcIDsKK+WBnOS8miA+IHRlaWthaVwgOwor5YCN5aKXID4gYmFpem91XCA7CivmpJzkvr8gPiBrZW5iZW5cIDsKK+eUn+WtmCA+IHNlaXpvblwgOwor5bGR5bGLID4ga3V6dXlhXCA7CivpoZjpnaIgPiBnYW5tZW5cIDsKK+WxseWhniA+IHNhbnNhaVwgOwor6aKo6LajID4gZnV1c2h1XCA7CivnlLLlo7AgPiBrYW5nb2VcIDsKK+aatOmosCA+IGJvdXRvdVwgOwor5bGx5aGKID4gc2Fua2FpXCA7CivlsILmlq0gPiBzZW5kYW5cIDsKK+iDuOavmyA+IG11bmFnZVwgOwor5bGx5aC0ID4geWFtYWJhXCA7CivlsY/lsYUgPiBoZWlreW9cIDsKK+S4h+mbtyA+IGJhbnJhaVwgOwor5qSc5L2TID4ga2VudGFpXCA7CivlrpjniYggPiBrYW5wYW5cIDsKK+S4iemajiA+IHNhbmdhaVwgOwor5a+d5qeYID4gbmV6YW1hXCA7CivpoZTpnaIgPiBnYW5tZW5cIDsKK+S4iumZkCA+IGpvdWdlblwgOwor5pyL6LypID4gaG91YmFpXCA7CivlsILmlLsgPiBzZW5rb3VcIDsKK+S7geiAhSA+IGppbnNoYVwgOwor55Wq5YW1ID4gYmFucGVpXCA7CivkubHoppYgPiByYW5zaGlcIDsKK+acneizgCA+IGNob3VnYVwgOwor5a++5pWwID4gdGFpc3V1XCA7Civlr6nmn7sgPiBzaGluc2FcIDsKK+WvnealrSA+IG5ld2F6YVwgOwor5pys6KuWID4gaG9ucm9uXCA7CivlgJ/llY8gPiBzaGFtb25cIDsKK+abvumBiiA+IHNvdXl1dVwgOwor6Iej5LqLID4gc2hpbmppXCA7CivnkKLno6ggPiB0YWt1bWFcIDsKK+iFueWtkCA+IGhhcmFrb1wgOwor5qGf5pW3ID4gc2FqaWtpXCA7Civlr77mlK8gPiB0YWlzaGlcIDsKK+mkiuiCsiA+IHlvdWlrdVwgOwor6aKo6LKMID4gZnV1Ym91XCA7CivkvK/niLYgPiBoYWt1ZnVcIDsKK+acrOiqjCA+IGhvbnNoaVwgOwor5a2Q56iuID4ga29kYW5lXCA7Civku5TntLAgPiBzaGlzYWlcIDsKK+adseiIqiA+IHRvdWtvdVwgOwor5bCP5oyHID4ga295dWJpXCA7CivmnIDov5EgPiBzYWlraW5cIDsKK+acquiqrSA+IG1pZG9rdVwgOwor5Luu56ewID4ga2FzaG91XCA7CivkvZPmtrIgPiB0YWlla2lcIDsKK+S4gOmauyA+IGlzc2VraVwgOwor5a+45patID4gc3VuZGFuXCA7CivnlJ/lp5wgPiBzaG91Z2FcIDsKK+S4iemWgCA+IHNhbm1vblwgOwor6ICB6KGwID4gcm91c3VpXCA7Civoi5vjgIUgPiBpcmFpcmFcIDsKK+S9jua4myA+IHRlaWdlblwgOwor6Iej5LiLID4gc2hpbmthXCA7CivlgKHlkowgPiBzaG91d2FcIDsKK+acquipsyA+IG1pc2hvdVwgOwor6IWQ5b+DID4gZnVzaGluXCA7CivmmrTpoqggPiBib3VmdXVcIDsKK+S9meayoiA+IHlvdGFrdVwgOwor5a6a54K5ID4gdGVpdGVuXCA7Civmm7jpgZMgPiBzaG9kb3VcIDsKK+S4remDqCA+IGNodXVidVwgOwor5YGP5Lq6ID4gaGVuamluXCA7CivlgKbljq0gPiBrZW4nJ2VuXCA7Civlrabnm6MgPiBnYWtrYW5cIDsKK+mkiuiAgSA+IHlvdXJvdVwgOwor6IKM552AID4gaGFkYWdpXCA7CivnlKPlo7AgPiB1YnVnb2VcIDsKK+mjtOiJsiA+IGFtZWlyb1wgOwor55Sw5ZywID4gZGVuY2hpXCA7CivmnJ3orbAgPiBjaG91Z2lcIDsKK+eUsOWckiA+IGRlbicnZW5cIDsKK+Wwj+aIkSA+IHNob3VnYVwgOwor5amm6ZW3ID4gZnVjaG91XCA7CivpppnmuK8gPiBob25rb25cIDsKK+aiteWmuyA+IGJvbnNhaVwgOwor5qGC5p6XID4ga2VpcmluXCA7CivkuIDplpMgPiBoaXRvbWFcIDsKK+WtmOefpSA+IHpvbmNoaVwgOwor5Lit6YCUID4gY2h1dXRvXCA7CivnkLrnka8gPiBob3Vyb3VcIDsKK+eUu+WVhiA+IGdhc2hvdVwgOwor5p2l6IiqID4gcmFpa291XCA7CivpoLvpoLsgPiBoaW5waW5cIDsKK+Wwu+WwviA+IHNoaXBwb1wgOwor5qCh5q2jID4ga291c2VpXCA7CivkvovmlocgPiByZWlidW5cIDsKK+eUmuWkpyA+IGppbmRhaVwgOwor5L6L5pWwID4gcmVpc3V1XCA7CivkuozokYkgPiBmdXRhYmFcIDsKK+mjvOiCsiA+IHNoaWlrdVwgOwor5L+z5aOHID4gaGFpZGFuXCA7Civlsa/llrYgPiB0b24nJ2VpXCA7CivmnaXoh6ggPiByYWlyaW5cIDsKK+aiteWkqSA+IGJvbnRlblwgOwor55So5ZywID4geW91Y2hpXCA7CivosrTntLMgPiBraXNoaW5cIDsKK+aatOmcsiA+IGJha3Vyb1wgOwor5a+S5qKFID4ga2FuYmFpXCA7CivmoLnmn6IgPiBrb250ZWlcIDsKK+WwhOaJiyA+IHNoYXNodVwgOwor5L2V5q2zID4gbmFuc2FpXCA7CivnkbbmsaAgPiB5b3VjaGlcIDsKK+WtpueVjCA+IGdha2thaVwgOwor5qCX5q+bID4ga3VyaWdlXCA7CivlsIrmha4gPiBzb25yeW9cIDsKK+S9j+awkSA+IGp1dW1pblwgOwor6ama5ZacID4ga3lvdWtpXCA7CivlsJHmgakgPiBzaG91b25cIDsKK+eUo+WcsCA+IHNhbmNoaVwgOwor5L+X5a2XID4gem9rdWppXCA7Civlr77mipcgPiB0YWlrb3VcIDsKK+S8geeUuyA+IGtpa2FrdVwgOwor55SY5aGpID4gYW1hamlvXCA7CivotaTmnKwgPiBha2Fob25cIDsKK+miqOinoyA+IGZ1dWthaVwgOwor5L215pyJID4gaGVpeXV1XCA7CivlsYvlpJYgPiBva3VnYWlcIDsKK+mmrOaphyA+IGJhc29yaVwgOwor5Lit6LqrID4gbmFrYW1pXCA7CivnkIbnpZ4gPiByaXNoaW5cIDsKK+S9s+acqCA+IGthYm9rdVwgOwor5qC55pysID4gbmVtb3RvXCA7CivogZbnrpcgPiBzZWlzYW5cIDsKK+S6uue1uSA+IGppbmtlblwgOwor5Li76LOTID4gc2h1aGluXCA7CivnlJ/lnLAgPiBzZWljaGlcIDsKK+miqOimiyA+IGthemFtaVwgOwor5a++5oimID4gdGFpc2VuXCA7Civku5bnp7AgPiB0YXNob3VcIDsKK+acm+imiyA+IGJvdWtlblwgOwor6aaZ5rC0ID4ga291c3VpXCA7Civlr5LmnZEgPiBrYW5zb25cIDsKK+adieiPnCA+IHN1Z2luYVwgOwor55WZ5L+dID4gcnl1dWhvXCA7Civog73mm7ggPiBub3VzaG9cIDsKK+S9nOalrSA+IHNhZ3lvdVwgOwor5LuY56WoID4gZnVoeW91XCA7CivlgKjlgrIgPiBreW9nb3VcIDsKK+agueaalyA+IG5la3VyYVwgOwor6Leh5ZywID4gYXRvY2hpXCA7Civkurrns54gPiBqaW5wdW5cIDsKK+WtpueQhiA+IGdha3VyaVwgOwor6ISz5oCnID4gbm91c2VpXCA7CivnlLvljKAgPiBnYXNob3VcIDsKK+S9mealrSA+IHlvZ3lvdVwgOwor5bCP5b2iID4ga29nYXRhXCA7Civkv6Hlo6sgPiBzaGluamlcIDsKK+iFq+WkpyA+IHNodWRhaVwgOwor5Lm+6I+cID4ga2Fuc2FpXCA7CivmnIjorJ0gPiBnZXNzaGFcIDsKK+WvhuagkyA+IG1pc3NlblwgOwor5a+S5pqWID4ga2FuZGFuXCA7Civlr5LmmpEgPiBrYW5zaG9cIDsKK+WtkOeZhyA+IHNoaWthblwgOwor6aKo6KKLID4gZnV1dGFpXCA7CivlgKXlgawgPiBrb3Vzb3VcIDsKK+Wwj+W8lSA+IHNob3VpblwgOwor5L2T5qeYID4gdGFpeW91XCA7CivkurrnsZ8gPiBqaW5yYWlcIDsKK+S4iemHjSA+IHNhbmp1dVwgOwor6LKh57WMID4gemFpa2VpXCA7CivlrZjnlJ8gPiB6b25qb3VcIDsKK+Wtl+eUuyA+IGppa2FrdVwgOwor5LiH6YeRID4gbWFua2luXCA7CivlsIrlvbEgPiBzb24nJ2VpXCA7CivmoLnmlrkgPiBuZWthdGFcIDsKK+eUqOWTgSA+IHlvdWhpblwgOwor5Luu55eFID4ga2VieW91XCA7CivkuIrphZIgPiBqb3VzaHVcIDsKK+Wul+a0viA+IHNodXVoYVwgOwor5a6a5rOVID4gam91aG91XCA7Civlrrbmpa0gPiBrYWd5b3VcIDsKK+eMrumHkSA+IGtlbmtpblwgOwor55Kw5oyHID4ga2Fuc2hpXCA7CivnlKjlkb0gPiB5b3VtZWlcIDsKK+iDoeakkiA+IGtvc2hvdVwgOwor6IGv55ufID4gcmVubWVpXCA7Civog4bmsYEgPiB0YW5qdXVcIDsKK+eQpeePgCA+IGtvaGFrdVwgOwor6IO95paHID4gbm91YnVuXCA7CivlsYXln44gPiBreW9qb3VcIDsKK+S4u+isgCA+IHNodWJvdVwgOwor5a6X5rOVID4gc291aG91XCA7CivlsI/luYUgPiBrb2hhYmFcIDsKK+WtpOeLrCA+IGtvZG9rdVwgOwor55Sj5ZOBID4gc2FucGluXCA7CivpoZjphZIgPiBnYW5zaHVcIDsKK+adsee1jCA+IHRvdWtlaVwgOwor5Lm+6Iq7ID4ga2Fuc3V1XCA7CivlrozmuIggPiBrYW5zYWlcIDsKK+S4jemBqSA+IGZ1dGVraVwgOwor5a+G5pu4ID4gbWlzc2hvXCA7CivogqHngasgPiBtYXRhYmlcIDsKK+mgiOmrryA+IHNodXplblwgOwor5bCO5birID4gZG91c2hpXCA7Civnvo7phpwgPiBiaXNodXVcIDsKK+WwguW+kyA+IHNlbmp1dVwgOwor5LiA6YeMID4gaWNoaXJpXCA7Civlr7XmhJsgPiBjaG91YWlcIDsKK+WuneauvyA+IGhvdWRlblwgOwor5Lmz6I+TID4gbnl1dWthXCA7CivlsI/lt64gPiBzaG91c2FcIDsKK+ePoOeulyA+IHNodXphblwgOwor5LiN6YCaID4gZnV0c3V1XCA7CivohLPlubkgPiBub3VrYW5cIDsKK+S+m+W/nCA+IGt5b3VvdVwgOwor546J6Je7ID4gdGFtYW1vXCA7Civogp3ngo4gPiBrYW4nJ2VuXCA7CivkuInpgbggPiBzYW5zZW5cIDsKK+Wwi+W4uCA+IGppbmpvdVwgOwor5L+u5Za2ID4gc2h1dWVpXCA7CivkuLnoqqAgPiB0YW5zZWlcIDsKK+iDoeahgyA+IGt1cnVtaVwgOwor5LiH6YKmID4gYmFucG91XCA7CivogIHojZggPiByb3Vzb3VcIDsKK+WumOawkSA+IGthbm1pblwgOwor5Lm+6Ii3ID4ga2FuZ2VuXCA7CivlsZ7lkI8gPiB6b2t1cmlcIDsKK+aeoeebriA+IG1hc3VtZVwgOwor5LiB6YWJID4gdGVpeXV1XCA7CivogZ7nn6UgPiBidW5jaGlcIDsKK+WutuagvCA+IGtha2FrdVwgOwor6LaK5b6MID4gZWNoaWdvXCA7CivnlJ/lkb0gPiBzZWltZWlcIDsKK+WwmuWwmiA+IG5hb25hb1wgOwor5LiJ6YCjID4gc2FucmVuXCA7CivnvqnotrMgPiBnaXNva3VcIDsKK+S4u+ioiCA+IHNodWtlaVwgOwor5qCh5pysID4ga291aG9uXCA7Civmmq7pkJggPiBib3Nob3VcIDsKK+WwgeW7uiA+IGhvdWtlblwgOwor5a++5b2TID4gdGFpdG91XCA7CivmnKjolK0gPiBrb2thZ2VcIDsKK+WAkuWDjyA+IHRvdXpvdVwgOwor576F6YedID4gcmFzaGluXCA7CivlsITlubggPiBzaGFrb3VcIDsKK+aiteWUhCA+IGJvbmJhaVwgOwor5LiK6L66ID4gam91aGVuXCA7CivkuIDpg60gPiBpa2tha3VcIDsKK+S4gOmDqCA+IGljaGlidVwgOwor5a6a5qy+ID4gdGVpa2FuXCA7CivkvZXmnpogPiBuYW5tYWlcIDsKK+WvuOW/lyA+IHN1bnNoaVwgOwor5L2e5pm6ID4gbmVpY2hpXCA7CivkuLvoprMgPiBzaHVrYW5cIDsKK+WutuafhCA+IGllZ2FyYVwgOwor5bCP5bO2ID4ga29qaW1hXCA7CivmnKzokawgPiBob25zb3VcIDsKK+eUo+WNtSA+IHNhbnJhblwgOwor5Lq656iuID4gamluc2h1XCA7CivlrozmsrsgPiBrYW5jaGlcIDsKK+S9leadoSA+IG5hbmpvdVwgOwor5Li76KaBID4gc2h1eW91XCA7Civku6PnlKggPiBkYWl5b3VcIDsKK+abuOiqjCA+IHNob3NoaVwgOwor55Sy5YW1ID4ga291aGVpXCA7CivkvK/mr40gPiBoYWt1Ym9cIDsKK+S/s+WQjSA+IGhhaW1laVwgOwor5a6f5qipID4gamlra2VuXCA7Civkv7Plj7cgPiBoYWlnb3VcIDsKK+i2iuW6piA+IG9jaGlkb1wgOwor6aOb57+UID4gaGlzaG91XCA7Civkuojnv5IgPiB5b3NodXVcIDsKK+e+qeiziiA+IGdpem9rdVwgOwor5a+d5oqAID4gbmV3YXphXCA7CivlsI/lsbEgPiBrb3lhbWFcIDsKK+S4iei8qiA+IHNhbnJpblwgOwor5bCK5bSHID4gc29uc3V1XCA7Civkv7Plj4sgPiBoYWl5dXVcIDsKK+S4gOmAsSA+IGlzc2h1dVwgOwor5LyR5ryUID4ga3l1dWVuXCA7CivkuIDpgJogPiBpdHRzdXVcIDsKK+iEh+aIuCA+IHdha2lkb1wgOwor5LiJ6Lu9ID4gc2Fua2VpXCA7CivlsL/lmaggPiBueW91a2lcIDsKK+WvneaJgCA+IHNoaW5qb1wgOwor5bCo5aSnID4gYm91ZGFpXCA7CivkuInou40gPiBzYW5ndW5cIDsKK+eLremcpyA+IHNhZ2lyaVwgOwor5a2Q54yrID4ga29uZWtvXCA7CivmoLnmi6AgPiBrb25reW9cIDsKK+WvoeaFviA+IGtheW9rdVwgOwor5LqV57axID4gaWR6dW5hXCA7CivkuIfou40gPiBiYW5ndW5cIDsKK+mpleWFkCA+IGt5b3VqaVwgOwor6LGq6IOGID4gZ291dGFuXCA7CivmnbHnq68gPiB0b3V0YW5cIDsKK+acrOiNiSA+IGhvbnpvdVwgOwor55Sf5YuVID4gc2VpZG91XCA7Civosrvnm64gPiBoaW1va3VcIDsKK+abuOimiyA+IHNob2tlblwgOwor5LuZ55WMID4gc2Vua2FpXCA7CivlrpjmqKkgPiBrYW5rZW5cIDsKK+abtOiogiA+IGtvdXRlaVwgOwor55Sj5YmNID4gc2FuemVuXCA7CivlsI/lrrQgPiBzaG91ZW5cIDsKK+eOieiPnCA+IHRhbWFuYVwgOwor55Sj5Yi2ID4gc2Fuc2VpXCA7CivlrZTniYggPiBrb3VoYW5cIDsKK+acq+iMtiA+IG1hdGNoYVwgOwor6aOv57GzID4gaGFubWFpXCA7CivpoIbpoqggPiBqdW5wdXVcIDsKK+acseiJsiA+IHNodWlyb1wgOwor5a6f5qScID4gamlra2VuXCA7CivkvJ3ms5UgPiBkZW5wb3VcIDsKK+eUu+S8ryA+IGdhaGFrdVwgOwor55So5YW1ID4geW91aGVpXCA7Civni63pmpggPiBreW91YWlcIDsKK+eNo+ihjCA+IGp1dWtvdVwgOwor5LiN6LazID4gZnVzb2t1XCA7Civos4fnlKMgPiBzaGlzYW5cIDsKK+WrgeiPnCA+IHlvbWVuYVwgOwor5LqU57WMID4gZ29reW91XCA7Civpp4XmiYsgPiBla2lzaHVcIDsKK+WsieeskSA+IGtpc2hvdVwgOwor5LqL57i+ID4gamlzZWtpXCA7CivnlJ/liY0gPiBzZWl6ZW5cIDsKK+ajhOWFkCA+IHN1dGVnb1wgOwor5a2Q54mbID4ga291c2hpXCA7Civku5bnlJ8gPiB0YXNob3VcIDsKK+S4i+i2syA+IGdlc29rdVwgOwor5L2V5pa5ID4gZG9uYXRhXCA7CivosZroiI4gPiB0b25zaGFcIDsKK+i2s+WgtCA+IGFzaGliYVwgOwor5a625pePID4ga2F6b2t1XCA7CivpoIbpoIYgPiBqdW5qdW5cIDsKK+S4gOi6qyA+IGlzc2hpblwgOwor5pys6Ii5ID4gaG9uc2VuXCA7CivogqXmsoMgPiBoaXlva3VcIDsKK+WvvuWyuCA+IHRhaWdhblwgOwor5qKx5YyFID4ga29ucG91XCA7CivkuIDoubQgPiBpc3NodXVcIDsKK+ael+eUoyA+IHJpbnNhblwgOwor5Lq655+lID4gamluY2hpXCA7CivnvbDph5EgPiBiYWtraW5cIDsKK+WutuaVmSA+IGtha3lvdVwgOwor5Luk54q2ID4gcmVpam91XCA7CivkvovlubQgPiByZWluZW5cIDsKK+eLremWkyA+IGhhemFtYVwgOwor6ISb5be+ID4gaGFiYWtpXCA7CivotqPlpb0gPiBzaHVrb3VcIDsKK+WxpeS/riA+IHJpc2h1dVwgOwor5L+h5Y+XID4gc2hpbmp1XCA7Civohp3kuIsgPiBzaGlra2FcIDsKK+S6jOe0miA+IG5pa3l1dVwgOwor6LWr5oCSID4ga2FrdWRvXCA7CivmnKzohrMgPiBob256ZW5cIDsKK+i1t+W6iiA+IGtpc2hvdVwgOwor5LiA6LevID4gaWNoaXJvXCA7CivohIbmgKcgPiB6ZWlzZWlcIDsKK+S9k+aTjSA+IHRhaXNvdVwgOwor5L2/5b25ID4gc2hpZWtpXCA7CivkuK3ooZsgPiBjaHV1ZWlcIDsKK+aZqemkkCA+IGJhbnNhblwgOwor5LuL55SyID4ga2Fpa291XCA7Civogp3msrkgPiBrYW4nJ3l1XCA7CivlsbHkuIogPiBzYW5qb3VcIDsKK+e+pOirliA+IGd1bnJvblwgOwor5bCP5aeTID4ga29zaG91XCA7CivnlKjkvr8gPiB5b3ViZW5cIDsKK+S/s+WEqiA+IGhhaXl1dVwgOwor5LuK55SfID4ga29uam91XCA7CivlsJHlpbMgPiBzaG91am9cIDsKK+S6uuebuCA+IG5pbnNvdVwgOwor5LqI57SEID4geW95YWt1XCA7CivkvpvlrrQgPiBreW91ZW5cIDsKK+S6uuebriA+IGhpdG9tZVwgOwor55So5L6LID4geW91cmVpXCA7CivnlJjlhZogPiBhbWF0b3VcIDsKK+iyp+ebuCA+IGhpbnNvdVwgOwor6IOM5pmvID4gaGFpa2VpXCA7Civpp5LluqcgPiBrb21hemFcIDsKK+S/l+WQjyA+IHpva3VyaVwgOwor5a6J5qW9ID4gYW5yYWt1XCA7CivmoLnmgKcgPiBrb25qb3VcIDsKK+WwluWhlCA+IHNlbnRvdVwgOwor5LiW6KmVID4gc2VoeW91XCA7CivkuZfoiaYgPiBqb3VrYW5cIDsKK+S4puihjCA+IGhlaWtvdVwgOwor54+t55SwID4gaGFuZGVuXCA7CivmnInok4sgPiB5dXVnYWlcIDsKK+S7lOeMqyA+IGtvbmVrb1wgOwor5a6a5pysID4gdGVpaG9uXCA7CivnlKjku7YgPiB5b3VrZW5cIDsKK+S5l+iIuSA+IGpvdXNlblwgOwor6aiw5YuiID4gdG91c2VpXCA7Civlrp/mma8gPiBqaWtrZWlcIDsKK+Wxi+WGhSA+IG9rdW5haVwgOwor5a2m5rS+ID4gZ2FrdWhhXCA7CivpoqjoiLkgPiBmdXVzZW5cIDsKK+eUqOS6uiA+IHlvdW5pblwgOwor5p+U5q+bID4ganV1bW91XCA7CivmnaXnpL4gPiByYWlzaGFcIDsKK+ePvueKtiA+IGdlbmpvdVwgOwor6Z+z6Z+/ID4gb25reW91XCA7CivmnKjogowgPiBraWhhZGFcIDsKK+WwiuWkpyA+IHNvbmRhaVwgOwor6ISz5aSpID4gbm91dGVuXCA7CivlqprolqwgPiBiaXlha3VcIDsKK+miqOiHtCA+IGZ1dWNoaVwgOwor5LiN6Kq/ID4gZnVjaG91XCA7Civlr53luoogPiBuZWRva29cIDsKK+afkOawjyA+IGJvdXNoaVwgOwor5LqU56mAID4gZ29rb2t1XCA7CivkuJbopbIgPiBzZXNodXVcIDsKK+iAgee3tCA+IHJvdXJlblwgOwor55Sf5L2TID4gc2VpdGFpXCA7Civku5TniZsgPiBrb3VzaGlcIDsKK+S4jeipsyA+IGZ1c2hvdVwgOwor5a6f5pa9ID4gamlzc2hpXCA7CivpoLjovKogPiBrdWJpd2FcIDsKK+S4h+isnSA+IGJhbnNoYVwgOwor5LiJ6KuWID4gc2Fucm9uXCA7CivkuI3oqZUgPiBmdWh5b3VcIDsKK+S/l+WLmSA+IHpva3VtdVwgOwor6aeF5byBID4gZWtpYmVuXCA7CivmmanpnJwgPiBiYW5zb3VcIDsKK+S+oOWlsyA+IGt5b3Vqb1wgOwor5pys572yID4gaG9uc2hvXCA7Civlr53lt7sgPiBuZW1ha2lcIDsKK+adkeerpSA+IHNvbmRvdVwgOwor5a6f5pWwID4gamlzc3V1XCA7Civog73lvIEgPiBub3ViZW5cIDsKK+S6uueUnyA+IGppbnNlaVwgOwor5a6I5qCqID4gc2h1c2h1XCA7CivkvZXmiY0gPiBuYW5zYWlcIDsKK+S6ieerryA+IHNvdXRhblwgOwor5qC55bqVID4ga29udGVpXCA7CivkuK3omIcgPiBjaHV1c29cIDsKK+S4gOitsCA+IGljaGlnaVwgOwor5Ly05pifID4gYmFuc2VpXCA7Civpo5vnq5wgPiBoaXJ5dXVcIDsKK+agueW5uSA+IGtvbmthblwgOwor6LWk5bi9ID4gYWthYm91XCA7CivlsI/lnosgPiBrb2dhdGFcIDsKK+mkiueUnyA+IHlvdWpvdVwgOwor5p2v55ukID4gaGFpYmFuXCA7CivmmrTotbAgPiBib3Vzb3VcIDsKK+S4iuioiCA+IGpvdWtlaVwgOwor5bCK5aCCID4gc29uZG91XCA7CivmoLzlt64gPiBrYWt1c2FcIDsKK+WwguWjsiA+IHNlbmJhaVwgOwor5a6/5oSPID4gc2h1a3VpXCA7CivkuI3oppogPiBmdWtha3VcIDsKK+S/s+S6uiA+IGhhaWppblwgOwor5a6M5pysID4ga2FucG9uXCA7CivogLPnm64gPiBqaW1va3VcIDsKK+WumuaVsCA+IHRlaXN1dVwgOwor5L2e5oKqID4gbmVpYWt1XCA7Civkv6/kvI8gPiBmdWZ1a3VcIDsKK+eMruipoCA+IGtlbicnZWlcIDsKK+WvjOW8tyA+IGZ1a3lvdVwgOwor6aiZ5Y+WID4gaGVuc2h1XCA7Civkv6/ku7AgPiBmdWd5b3VcIDsKK+S4iuimpyA+IGpvdXJhblwgOwor5LiH6KiAID4gbWFuZ2VuXCA7Civlr77lpJYgPiB0YWlnYWlcIDsKK+S9j+aJgCA+IGp1dXNob1wgOwor6LKh55WMID4gemFpa2FpXCA7CivogJXnqK4gPiBrb3VzaHVcIDsKK+miqOiBniA+IGZ1dWJ1blwgOwor5LiK6KaGID4gdXdhb29pXCA7CivlrrnmhYsgPiB5b3VkYWlcIDsKK+WwhOWgtCA+IHNoYWpvdVwgOwor5bGN5L2TID4gc2hpdGFpXCA7CivosqHnlKMgPiB6YWlzYW5cIDsKK+S4gOiqniA+IGljaGlnb1wgOwor5a+S5bivID4ga2FudGFpXCA7Civlr7Xlp6sgPiBjaG91a2lcIDsKK+eMruiogCA+IGtlbmdlblwgOwor5Lyd5p+TID4gZGVuc2VuXCA7Civlr6HlsJEgPiBrYXNob3VcIDsKK+S4oeiZjiA+IHJ5b3Vrb1wgOwor54yl6KuHID4gd2FpZGFuXCA7CivotorlooMgPiBla2t5b3VcIDsKK+Wwj+WZqCA+IHNob3VraVwgOwor5LiK6KO9ID4gam91c2VpXCA7CivmnKznt5ogPiBob25zZW5cIDsKK+S8jualvSA+IGdpZ2FrdVwgOwor5L2T5oSfID4gdGFpa2FuXCA7Civkv5flhJIgPiB6b2t1anVcIDsKK+S5g+iHsyA+IG5haXNoaVwgOwor5LiK6KOBID4gam91c2FpXCA7CivkvJ3mnaUgPiBkZW5yYWlcIDsKK+iJsuOAhSA+IGlyb2lyb1wgOwor5a+d5bCPID4gbmVzaG91XCA7CivmnKzntbkgPiBob25rZW5cIDsKK+mjr+ebkiA+IGhhbmdvdVwgOwor5LiL6KGoID4ga2FoeW91XCA7Civos6TmsJEgPiBzZW5taW5cIDsKK+WxheS9jyA+IGt5b2p1dVwgOwor6IWV5YmNID4gdWRlbWFlXCA7Civku67ms4ogPiBrYWhha3VcIDsKK+S9meW+syA+IHlvdG9rdVwgOwor5pys57SZID4gaG9uc2hpXCA7CivotqjlkJEgPiBzdXVrb3VcIDsKK+S9nuW8gSA+IG5laWJlblwgOwor5Lit6I+vID4gY2h1dWthXCA7CivkvZnlvpcgPiB5b3Rva3VcIDsKK+Wus+aCqiA+IGdhaWFrdVwgOwor5bCB5ZywID4gaG91Y2hpXCA7CivlrozmlZcgPiBrYW5wYWlcIDsKK+S6pOeVqiA+IGtvdWJhblwgOwor5L+a5L+XID4gcml6b2t1XCA7CivpoYzoqIAgPiBkYWlnZW5cIDsKK+Wxi+S4iiA+IG9rdWpvdVwgOwor5pyo57WEID4ga2lndW1pXCA7CivmnInog70gPiB5dXVub3VcIDsKK+WwmuWPpCA+IHNob3Vrb1wgOwor6aiS5YuVID4gc291ZG91XCA7Civog4zmiLsgPiBoYWlyZWlcIDsKK+S+i+WkliA+IHJlaWdhaVwgOwor5a6j5oimID4gc2Vuc2VuXCA7CivogLPnkrAgPiBtaW1pd2FcIDsKK+S6lOebriA+IGdvbW9rdVwgOwor5a+T5bGFID4gZ3V1a3lvXCA7CivotqPlkJEgPiBzaHVrb3VcIDsKK+iyoueMriA+IGtvdWtlblwgOwor54us6YC4ID4gZG9pdHN1XCA7CivmoKHluq0gPiBrb3V0ZWlcIDsKK+izh+a6kCA+IHNoaWdlblwgOwor5a+h5ammID4geWFtb21lXCA7CivlsIvllY8gPiBqaW5tb25cIDsKK+aatOirliA+IGJvdXJvblwgOwor5p2h55eVID4gam91a29uXCA7CivmoLzlrZAgPiBrb3VzaGlcIDsKK+S8gealrSA+IGtpZ3lvdVwgOwor5L215a2YID4gaGVpem9uXCA7Civpo7LnlKggPiBpbicneW91XCA7CivkvZPlvaIgPiB0YWlrZWlcIDsKK+WvjOWysyA+IGZ1Z2FrdVwgOwor5a6f5oimID4gamlzc2VuXCA7CivkuLvohLMgPiBzaHVub3VcIDsKK+iDoeW8kyA+IGtva3l1dVwgOwor5pi86aSJID4gaGlydWdlXCA7CivnkLTmn7EgPiBrb3RvamlcIDsKK+i2qOWLoiA+IHN1dXNlaVwgOwor5L6d5ZixID4gaXNob2t1XCA7CivmmLzpo58gPiBoaXJ1Z2VcIDsKK+WvkuWusyA+IGthbmdhaVwgOwor6aCR6L+3ID4gZ2FubWVpXCA7CivlrpvmiYAgPiBhdGVzaG9cIDsKK+afkOafkCA+IGJvdWJvdVwgOwor542j6ISCID4ganV1c2hpXCA7CivkvY7lvoogPiB0ZWlrYWlcIDsKK+acrOeuoSA+IGhvbmthblwgOwor6LKv54KtID4gY2hvdGFuXCA7Civkuoznm64gPiBmdXRhbWVcIDsKK+Wwj+WQjyA+IHNob3VyaVwgOwor5Lq654WZID4gamluJydlblwgOwor5pq06KiAID4gYm91Z2VuXCA7Civkv4rlgYkgPiBzaHVuJydpXCA7CivlsIrlkb0gPiBzb25tZWlcIDsKK+WumOaIvyA+IGthbmJvdVwgOwor5p2+54WZID4gc2hvdWVuXCA7CivogqXmlpkgPiBoaXJ5b3VcIDsKK+S8keaahyA+IGt5dXVrYVwgOwor5L+X5LqLID4gem9rdWppXCA7Civlrp/mhYsgPiBqaXR0YWlcIDsKK+acqOeusSA+IGtpYmFrb1wgOwor5pyJ572qID4geXV1emFpXCA7Civni63ou4wgPiBreW91a2lcIDsKK+izvOabuCA+IGtvdXNob1wgOwor5a2m5qChID4gZ2Fra291XCA7CivmnKjnrqEgPiBtb2trYW5cIDsKK+eOhOexsyA+IGdlbm1haVwgOwor54+I55CyID4ga291aGlpXCA7CivpoqjntIsgPiBmdXVtb25cIDsKK+agquWxiyA+IGthYnV5YVwgOwor5a6f5oSfID4gamlra2FuXCA7CivlsIrlkJsgPiBzb25rdW5cIDsKK+Wun+aEjyA+IGppdHN1aVwgOwor5bCK5ZCNID4gc29ubWVpXCA7CivkvY7lu4kgPiB0ZWlyZW5cIDsKK+mjvOeKrCA+IGthaWludVwgOwor5bCK5Y+3ID4gc29uZ291XCA7Civku5bmtYEgPiB0YXJ5dXVcIDsKK+WwiuWPsCA+IHNvbmRhaVwgOwor5pyr56uvID4gbWF0dGFuXCA7CivlrpjmhrIgPiBrYW5rZW5cIDsKK+S7mOazqCA+IGZ1Y2h1dVwgOwor6aOb55m9ID4ga2FzdXJpXCA7Civos47msJEgPiBzZW5taW5cIDsKK+S9kOW5lSA+IHNhYmFrdVwgOwor5Lq654G9ID4gamluc2FpXCA7CivkuIvolqwgPiBnZXlha3VcIDsKK+WvhuWwgSA+IG1pcHB1dVwgOwor5a605bitID4gZW5zZWtpXCA7CivlsI/ljJkgPiBrb3NhamlcIDsKK+WwiuWOsyA+IHNvbmdlblwgOwor6IKJ5qGCID4gbmlra2VpXCA7CivotbDloYEgPiBzb3VydWlcIDsKK+agvOWlvSA+IGtha2tvdVwgOwor5Lyd5pCsID4gZGVucGFuXCA7Civlr5vlpKcgPiBrYW5kYWlcIDsKK+acrOeovyA+IGhvbmtvdVwgOwor5pu46IKGID4gc2hvc2hpXCA7CivlrozmipUgPiBrYW50b3VcIDsKK+WtkOanmCA+IGtvc2FtYVwgOwor5a6/5bGLID4geWFkb3lhXCA7Civmm7jogZYgPiBzaG9zZWlcIDsKK+Wvv+WRvSA+IGp1bXlvdVwgOwor5LiJ6JS1ID4gc2Fuem91XCA7Civpn7Pph48gPiBvbnJ5b3VcIDsKK+S6oeeKtiA+IGJvdWpvdVwgOwor6LK75raIID4gaGlzaG91XCA7CivlsJblhbUgPiBzZW5wZWlcIDsKK+S5l+eulyA+IGpvdXphblwgOwor5pq06KGMID4gYm91a291XCA7CivmoLnlpKogPiBuZWJ1dG9cIDsKK+itsOmVtyA+IGdpY2hvdVwgOwor5Lm+55uDID4ga2FucGFpXCA7CivlrozmiJAgPiBrYW5zZWlcIDsKK+Wwj+WIqSA+IHNob3VyaVwgOwor5pu457+wID4gc2hva2FuXCA7CivmnaXnirYgPiByYWlqb3VcIDsKK+aciee3miA+IHl1dXNlblwgOwor5LuP5rOVID4gYnVwcG91XCA7CivlronmiYsgPiB5YXN1ZGVcIDsKK+WDheOAhSA+IGtpbmtpblwgOwor5a++5ZCRID4gdGFpa291XCA7CivlrprmgKcgPiB0ZWlzZWlcIDsKK+ixquebmyA+IGdvdXNlaVwgOwor5Lm+55msID4ga2Fuc2VuXCA7Civlr77lj6UgPiB0c3Vpa3VcIDsKK+S4reiAsyA+IGNodXVqaVwgOwor6IKy5oiQID4gaWt1c2VpXCA7CivlrojmiKYgPiBzaHVzZW5cIDsKK+agoeWumiA+IGtvdXRlaVwgOwor5a+S5aSpID4ga2FudGVuXCA7CivmnKznpL4gPiBob25zaGFcIDsKK+S4i+iQvSA+IGdlcmFrdVwgOwor6K2m6ZiyID4ga2VpYm91XCA7Civlr5LlpJwgPiBrYW4nJ3lhXCA7CivlrojmiJAgPiBzaHVzZWlcIDsKK+eJuemrmCA+IHRva2tvdVwgOwor5pyr56S+ID4gbWFzc2hhXCA7Civog7jlpaUgPiBreW91b3VcIDsKK+S9s+WigyA+IGtha3lvdVwgOwor5pmu6YCaID4gZnV0c3V1XCA7CivkvZflr50gPiB3YWJpbmVcIDsKK+Wun+W8nyA+IGppdHRlaVwgOwor546y55OPID4gcmVpcm91XCA7CivogIHnnLwgPiByb3VnYW5cIDsKK+ixiuepoyA+IGhvdWpvdVwgOwor5qC95Z+5ID4gc2FpYmFpXCA7Civnvqnoh6MgPiBnaXNoaW5cIDsKK+eJoem2jyA+IG9uZG9yaVwgOwor5bCP5YW1ID4ga29oeW91XCA7CivmnIjntYwgPiBnZWtrZWlcIDsKK+iDjOW6gyA+IHNlYmlyb1wgOwor5a2j5pilID4ga2lzaHVuXCA7CivlsI/lhZAgPiBzaG91bmlcIDsKK+ixiueolCA+IGhvdW5lblwgOwor54md6beEID4gaGlua2VpXCA7CivlrprlvaIgPiB0ZWlrZWlcIDsKK+adoeeJhyA+IGpvdWhlblwgOwor5L+C5LqJID4ga2Vpc291XCA7CivosaHnnLwgPiB6b3VnYW5cIDsKK+eOs+eRgSA+IHRhaW1haVwgOwor5pqX6KqmID4gYW5zaG91XCA7CivpqJLkurogPiBzb3VqaW5cIDsKK+Wul+W+kiA+IHNodXV0b1wgOwor5a2Q5qCqID4ga29rYWJ1XCA7CivmmLzplpMgPiBoaXJ1bWFcIDsKK+S9juWxpCA+IHRlaXNvdVwgOwor5qC55Z+OID4gbmVqaXJvXCA7CivkuoDnlLIgPiBraWtrb3VcIDsKK+izgOatoyA+IGdhc2hvdVwgOwor6aGV6JGXID4ga2VuY2hvXCA7CivniaHps6UgPiBvbmRvcmlcIDsKK+mokuS5sSA+IHNvdXJhblwgOwor5bCK5YWsID4gc29ua291XCA7CivlrrXlrq4gPiB5b21peWFcIDsKK+S6pOeCuSA+IGtvdXRlblwgOwor5L2P5bCCID4ganV1c2VuXCA7Civpn7PpgJ8gPiBvbnNva3VcIDsKK+S8kOaOoSA+IGJhc3NhaVwgOwor5a625a6FID4ga2F0YWt1XCA7Civpo5vnkIMgPiBoaWt5dXVcIDsKK+aal+iovCA+IGFuc2hvdVwgOwor5bCK5YWEID4gc29ua2VpXCA7Civkvr/kuZcgPiBiaW5qb3VcIDsKK+WwguWItiA+IHNlbnNlaVwgOwor5Lm+55SwID4ga2FuZGVuXCA7CivlrrblraYgPiBrYWdha3VcIDsKK+S8uOW6piA+IHNoaW5kb1wgOwor5Lya5omAID4ga2Fpc2hvXCA7Civkvb/ll74gPiBzaGlzb3VcIDsKK+ixhuenkSA+IG1hbWVrYVwgOwor6ISx5YWaID4gZGF0dG91XCA7CivkvJrmiKYgPiBrYWlzZW5cIDsKK+S9nuWnpiA+IG5laWthblwgOwor5L2P5a62ID4gc3VtaWthXCA7CivnjrLnjrIgPiByZWlyZWlcIDsKK+S+tuS8tCA+IHJ5b2hhblwgOwor6IOe5a2QID4gaG91c2hpXCA7CivlrprlubQgPiB0ZWluZW5cIDsKK+aZgumQmCA+IGppc2hvdVwgOwor6LOc5p2vID4gc2hpaGFpXCA7CivosqHmupAgPiB6YWlnZW5cIDsKK+S4pue9riA+IGhlaWNoaVwgOwor5a6J5oGvID4gYW5zb2t1XCA7CivlsIrlg48gPiBzb256b3VcIDsKK+S4jeiJryA+IGZ1cnlvdVwgOwor5LuV5qijID4gc2hpeW91XCA7CivmnbHmvLggPiB0b3V6ZW5cIDsKK+WumuW4uCA+IHRlaWpvdVwgOwor5L2e5aW4ID4gbmVpa2FuXCA7CivnjK7ojLYgPiBrZW5jaGFcIDsKK+S4gOiPiiA+IGlra2lrdVwgOwor5a6u5a62ID4gbWl5YWtlXCA7CivpoqjnpZ4gPiBmdXVqaW5cIDsKK+iDmuWtkCA+IGhhaXNoaVwgOwor5a2d5pWsID4ga291a2VpXCA7Civlr77lh6YgPiB0YWlzaG9cIDsKK+S4oee+qSA+IHJ5b3VnaVwgOwor5Li557K+ID4gdGFuc2VpXCA7Civku5Xmp5ggPiBzaGl5b3VcIDsKK+WvkuWcsCA+IGthbmNoaVwgOwor5LiN6IiIID4gZnVreW91XCA7CivkuIfoirggPiBiYW5nZWlcIDsKK+S4jeiHoyA+IGZ1c2hpblwgOwor6ISa5Y2KID4ga3lhaGFuXCA7Civos6LmmI4gPiBrZW5tZWlcIDsKK+S4iuiIuSA+IGpvdXNlblwgOwor6LKv5rC0ID4gY2hvc3VpXCA7Civlrrnlp78gPiB5b3VzaGlcIDsKK+S4iuiIqiA+IGpvdWtvdVwgOwor5bCR5L2QID4gc2hvdXNhXCA7Civmnq/mnKggPiBrYXJla2lcIDsKK+S4gOiNmCA+IGlpY2hhblwgOwor5a+45YmNID4gc3VuemVuXCA7Civlro/lvIEgPiBrb3ViZW5cIDsKK+WvvuWGhSA+IHRhaW5haVwgOwor6ICB55SfID4gcm91c2VpXCA7Civku7bmlbAgPiBrZW5zdXVcIDsKK+S4i+iHoyA+IGthc2hpblwgOwor542656WtID4gZGFzc2FpXCA7Civni6zoqp4gPiBkb2t1Z29cIDsKK+S4iuiHvCA+IHV3YXVzdVwgOwor5bCP5L2cID4ga29zYWt1XCA7CivmnKznm5cgPiBob250b3VcIDsKK+mjvea6gCA+IGhvdW1hblwgOwor5qCh5aSWID4ga291Z2FpXCA7Civlr7jliIYgPiBzdW5idW5cIDsKK+eLrOipsSA+IGRva3V3YVwgOwor5bCO5L2TID4gZG91dGFpXCA7CivkuIfoiKwgPiBiYW5wYW5cIDsKK+S4iuiHiCA+IGpvdXJvdVwgOwor5pif6ZycID4gc2Vpc291XCA7Civkvb/lkb0gPiBzaGltZWlcIDsKK+eJqemokiA+IGJ1c3NvdVwgOwor5pyo55uuID4gbW9rdW1lXCA7CivkuLvnrqEgPiBzaHVrYW5cIDsKK+S7pOacmyA+IHJlaWJvdVwgOwor5LiK6IW/ID4gam91dGFpXCA7CivlrqblrpggPiBrYW5nYW5cIDsKK+WvjOWbvSA+IGZ1a29rdVwgOwor5pu057SXID4gc2FyYXNhXCA7CivkurrmsJcgPiBoaXRva2VcIDsKK+acqOeavyA+IGtpemFyYVwgOwor5Lq65rCRID4gamlubWluXCA7CivlsITlgJYgPiBzaGFrb3VcIDsKK+S4iuiFlSA+IGpvdXdhblwgOwor5bCK5L2TID4gc29udGFpXCA7CivmnKjnmq4gPiBtb2t1aGlcIDsKK+S7o+abvyA+IGRhaXRhaVwgOwor5Luj5pu4ID4gZGFpc2hvXCA7Civmn5DmiYAgPiBib3VzaG9cIDsKK+aYgumosCA+IGtvdXRvdVwgOwor5a2Q5pa5ID4ga29rYXRhXCA7CivlsI/kuosgPiBzaG91amlcIDsKK+S9nOWgtCA+IHNha3ViYVwgOwor6LKn5rCRID4gaGlubWluXCA7Civku4rmp5ggPiBpbWF5b3VcIDsKK+Wun+WwhCA+IGppc3NoYVwgOwor5a++5YG2ID4gdGFpZ3V1XCA7CivkuqzmtZwgPiBrZWloaW5cIDsKK+abuOewoSA+IHNob2thblwgOwor5LiN6IKWID4gZnVzaG91XCA7CivmnbHmtbcgPiB0b3VrYWlcIDsKK+acieeojiA+IHl1dXplaVwgOwor5L2T5aSWID4gdGFpZ2FpXCA7CivmnpzmoLggPiBrYWtha3VcIDsKK+mgkOiolyA+IHlvdGFrdVwgOwor6ISx5LyaID4gZGFra2FpXCA7CivkuIDoiIggPiBpa2t5b3VcIDsKK+S4iuiDjCA+IHV3YXplaVwgOwor5a+15YWQID4gY2hvdWppXCA7Civlrozlt6UgPiBrYW5rb3VcIDsKK+S4iuiCoiA+IGpvdXNoaVwgOwor5pm66KyAID4gY2hpYm91XCA7CivpoZ7ogZogPiBydWlqdXVcIDsKK+acrOeVqiA+IGhvbmJhblwgOwor5p2x5rSLID4gdG91eW91XCA7CivnibnpnIAgPiB0b2t1anVcIDsKK+iytOanmCA+IGtpc2FtYVwgOwor6IGw5piOID4gc291bWVpXCA7CivpoqjnnLwgPiBmdXVnYW5cIDsKK+S4iuiBniA+IGpvdWJ1blwgOwor5a6f5a2QID4gamlzc2hpXCA7CivogIHnjaogPiByb3VrYWlcIDsKK+adr+a0lyA+IGhhaXNlblwgOwor5a625aG+ID4ga2FqdWt1XCA7Civku6Tml6ggPiByZWlzaGlcIDsKK+S9teWRkSA+IGhlaWRvblwgOwor6LOH5p2QID4gc2hpemFpXCA7CivkvY7lo7AgPiB0ZWlzZWlcIDsKK+S6ieeCuSA+IHNvdXRlblwgOwor6LOH5pysID4gc2hpaG9uXCA7CivkvZzlnJ8gPiBzYWt1ZG9cIDsKK+WwiuS4iiA+IHNvbmpvdVwgOwor5a+b5Y6zID4ga2FuZ2VuXCA7CivkvJrlvI8gPiBlc2hpa2lcIDsKK+e+mue+iiA+IHJlaXlvdVwgOwor5L215ZCIID4gaGVpZ291XCA7Civkub7nh6UgPiBrYW5zb3VcIDsKK+S8tuWumCA+IHJlaWthblwgOwor5a+b5Y6aID4ga2Fua291XCA7CivkuInogIUgPiBzYW5zaGFcIDsKK+ixqueIvSA+IGdvdXNvdVwgOwor5L2c5ZuzID4gc2FrdXp1XCA7CivnjKvog4wgPiBuZWtvemVcIDsKK+mjm+eBqyA+IHRvYmloaVwgOwor54mH6bGXID4gaGVucmluXCA7CivorabphpIgPiBrZWlzZWlcIDsKK+mnheWQjSA+IGVraW1laVwgOwor5Luj5pWwID4gZGFpc3V1XCA7CivpppnlpaAgPiBrb3VkZW5cIDsKK+ixkOeUsCA+IHRveW90YVwgOwor57+U56C0ID4gc2hvdWhhXCA7Civni6zooYwgPiBkb2trb3VcIDsKK+agueWPtyA+IGtvbmdvdVwgOwor6IKd5b+DID4ga2FuamluXCA7CivniZvppqwgPiBneXV1YmFcIDsKK+S6uuaoqSA+IGppbmtlblwgOwor6IK65bCWID4gaGFpc2VuXCA7CivkuLjnp5ggPiBtYXJ1aGlcIDsKK+mjm+eAkSA+IGhpYmFrdVwgOwor5L2T5Z6LID4gdGFpa2VpXCA7CivpoJLooYwgPiBoYW5rb3VcIDsKK+adseavjiA+IHRvdW1haVwgOwor6aCI6KaBID4gc2h1eW91XCA7Civlr77kurogPiB0YWlqaW5cIDsKK+iDoeWbvSA+IGtva29rdVwgOwor5qGI5YaFID4gYW4nJ25haVwgOwor5L2V5ZueID4gbmFua2FpXCA7Civmma7oq4sgPiBmdXNoaW5cIDsKK+aZgumAnyA+IGppc29rdVwgOwor5a2k5oSBID4ga29zaHV1XCA7CivorbfouqsgPiBnb3NoaW5cIDsKK+acqOeQtCA+IG1va2tpblwgOwor5a6f5aeJID4gamlzc2hpXCA7Civku4/mm7ggPiBidXNzaG9cIDsKK+WujOWwgSA+IGthbnB1dVwgOwor6ICz5q67ID4gamlrYWt1XCA7CivpoZ7nuoIgPiBydWlzYW5cIDsKK+mdkum7tCA+IGFva2FiaVwgOwor5pyo55CGID4gbW9rdXJpXCA7CivkvpvkuI4gPiBreW91eW9cIDsKK+iBoeaYjiA+IHNvdW1laVwgOwor6K6S6KyXID4gemFuYm91XCA7Civlr53liIMgPiBuZXRhYmFcIDsKK+S4gOe+vSA+IGljaGl3YVwgOwor6IKJ5oSfID4gbmlra2FuXCA7Civos6LmiY0gPiBrZW5zYWlcIDsKK+S4gOe+qSA+IGljaGlnaVwgOwor5L2O5ZywID4gdGVpY2hpXCA7CivmoYLlhqAgPiBrZWlrYW5cIDsKK+WuieWvpyA+IGFuJyduZWlcIDsKK+iDveWLlSA+IG5vdWRvdVwgOwor576K5765ID4geW91a2FuXCA7CivppZflv5wgPiBreW91b3VcIDsKK+e+iue+riA+IHlvdWthblwgOwor6IGW5pu4ID4gc2Vpc2hvXCA7CivkuLvnoLIgPiBzaHVob3VcIDsKK+S9juWbniA+IHRlaWthaVwgOwor5a+d5YW3ID4gc2hpbmd1XCA7Civosr/mmJMgPiBib3Vla2lcIDsKK+ePvuaVsCA+IGdlbnN1dVwgOwor6Z+z6Kq/ID4gb25jaG91XCA7CivkuqTmrZMgPiBrb3VrYW5cIDsKK+mnheWJjSA+IGVraW1hZVwgOwor5a6I5a6uID4geWFtb3JpXCA7Civmma/oprMgPiBrZWlrYW5cIDsKK+mfs+iqrSA+IG9uZG9rdVwgOwor5Lqk5qy+ID4ga291a2FuXCA7CivmnprmlbAgPiBtYWlzdXVcIDsKK+iBoeaVjyA+IHNvdWJpblwgOwor6LKn5qOSID4gYmluYm91XCA7CivkuIrnt5ogPiBqb3VzZW5cIDsKK+mghuihjCA+IGp1bmtvdVwgOwor5pyI55u4ID4gZ2Vzc291XCA7CivlrZDmiL8gPiBzaGlib3VcIDsKK+S+i+S8miA+IHJlaWthaVwgOwor5pyA55+tID4gc2FpdGFuXCA7CivpnZLpt7ogPiBhb3NhZ2lcIDsKK+WtpuW+kiA+IGdha3V0b1wgOwor5Li556CCID4gdGFuc2hhXCA7CivmnInnm4ogPiB5dXVla2lcIDsKK+S7iuaZqSA+IGtvbmJhblwgOwor5LqV5rOJID4gc2Vpc2VuXCA7Civlr5LliaQgPiBrYW56YWlcIDsKK+izouaFriA+IGtlbnJ5b1wgOwor5a2d5oKMID4ga291dGVpXCA7Civogq/lrpogPiBrb3V0ZWlcIDsKK+S4i+e1tSA+IHNoaXRhZVwgOwor6K6S6KiAID4gemFuZ2VuXCA7CivotablhY0gPiBzaGFtZW5cIDsKK+S6iOa4rCA+IHlvc29rdVwgOwor57+754S2ID4gaG9uemVuXCA7CivkvLTlpY8gPiBiYW5zb3VcIDsKK+izm+aIkCA+IHNhbnNlaVwgOwor6aKo55C0ID4gZnV1a2luXCA7CivkvJ3lsI4gPiBkZW5kb3VcIDsKK+ael+aUvyA+IHJpbnNlaVwgOwor5qC55YagID4ga29ua2FuXCA7CivotbfkvI8gPiBraWZ1a3VcIDsKK+S4i+e0miA+IGtha3l1dVwgOwor5Li755y8ID4gc2h1Z2FuXCA7CivkuInntYQgPiBtaWt1bWlcIDsKK+S4iee1gyA+IHNhbmdlblwgOwor5a6d5aGUID4gaG91dG91XCA7CivogZbml6ggPiBzZWlzaGlcIDsKK+S4jeeyviA+IGJ1c2hvdVwgOwor5LiK57SNID4gam91bm91XCA7CivnjovniakgPiBvdW1vbm9cIDsKK+S4gOe4tyA+IGljaGlydVwgOwor5LqM5rWBID4gbmlyeXV1XCA7CivohJrkuIsgPiBreWFra2FcIDsKK+agueWFgyA+IG5lbW90b1wgOwor5a+S5Ya3ID4ga2FucmVpXCA7CivogZbmlq0gPiBzZWlkYW5cIDsKK+S9qeWJoyA+IGhhaWtlblwgOwor5auM54WZID4ga2VuJydlblwgOwor5qCh5ZCIID4ga291Z291XCA7CivmnaHmrL4gPiBqb3VrYW5cIDsKK+WtpuW6nCA+IGdha3VmdVwgOwor5LuB5pm6ID4gamluY2hpXCA7CivkurrmnZAgPiBqaW56YWlcIDsKK+agoeWPiyA+IGtvdXl1dVwgOwor5L2p5YiAID4gaGFpdG91XCA7CivmnKrnhp8gPiBtaWp1a3VcIDsKK+acseeCuSA+IHNodXRlblwgOwor5LiK57GzID4gam91bWFpXCA7CivkuK3noLQgPiBjaHV1aGFcIDsKK+S6uuacmyA+IGppbmJvdVwgOwor6LK05pePID4ga2l6b2t1XCA7Civlr6HkvZwgPiBrYXNha3VcIDsKK+WumOWgsSA+IGthbnBvdVwgOwor5Lit56ClID4gbmFrYXRvXCA7Civlro/lpKcgPiBrb3VkYWlcIDsKK+mir+eIvSA+IHNhc3NvdVwgOwor5a6f5ZywID4gaml0Y2hpXCA7CivlrZ3lvJ8gPiBrb3V0ZWlcIDsKK+adv+abuCA+IGJhbnNob1wgOwor6IOM5ZqiID4gaGFpbm91XCA7Civos6blvbkgPiBidXlha3VcIDsKK+acieeUqCA+IHl1dXlvdVwgOwor5a6P5aOuID4ga291c291XCA7CivmnInnlKMgPiB5dXVzYW5cIDsKK+S4meeoriA+IGhlaXNodVwgOwor5a6a5Z6LID4gdGVpa2VpXCA7CivmnIjnlKMgPiBnZXNzYW5cIDsKK+S8j+WxiyA+IGZ1c2V5YVwgOwor5LiA57SaID4gaWtreXV1XCA7CivkurrmmbogPiBqaW5jaGlcIDsKK+WujOWjsiA+IGthbmJhaVwgOwor5p2R5rCRID4gc29ubWluXCA7CivnkIPmioAgPiBreXV1Z2lcIDsKK+aemuaMmSA+IG1haWt5b1wgOwor5pel6aCDID4gaGlnb3JvXCA7CivkuIvnrZYgPiBnZXNha3VcIDsKK+mdkumuqyA+IGFvemFtZVwgOwor5a2X5byVID4gamliaWtpXCA7Civku4HmlL8gPiBqaW5zZWlcIDsKK+S9juWQnyA+IHRlaWdpblwgOwor5pel6Z+TID4gbmlra2FuXCA7CivnkIPmiK8gPiBreXV1Z2lcIDsKK+S9leWNgyA+IG5hbnplblwgOwor5L2V5Y2BID4gbmFuanV1XCA7Civos6LlvJ8gPiBrZW50ZWlcIDsKK+S4iuetiSA+IGpvdXRvdVwgOwor6aas5YqbID4gYmFyaWtpXCA7CivlrZjlu4MgPiB6b25wYWlcIDsKK+iBr+aDsyA+IHJlbnNvdVwgOwor5L2/5LiBID4gc2hpdGVpXCA7CivkuInnrYkgPiBzYW50b3VcIDsKK+S4u+eUqCA+IHNodXlvdVwgOwor5LiA57GMID4gaXRjaHV1XCA7CivkvbPkvZwgPiBrYXNha3VcIDsKK+Wvm+S7gSA+IGthbmppblwgOwor55G25Y+wID4geW91ZGFpXCA7CivlrZDlvbkgPiBrb3lha3VcIDsKK+S8j+WtlyA+IGZ1c2VqaVwgOwor6ICQ5rC0ID4gdGFpc3VpXCA7CivkuIrnq68gPiBqb3V0YW5cIDsKK+mnhOS9nCA+IGRhc2FrdVwgOwor5Li555SwID4gdGFuZGVuXCA7CivkuInnq78gPiBzYW5rYW5cIDsKK+S6uuaWhyA+IGppbm1vblwgOwor6aeF5LydID4gZWtpZGVuXCA7CivkvZPli6IgPiB0YWlzZWlcIDsKK+Wtl+W5lSA+IGppbWFrdVwgOwor5Lyd5aWPID4gZGVuc291XCA7CivlrZDlvJ8gPiBzaGl0ZWlcIDsKK+S4h+erryA+IGJhbnRhblwgOwor5LiK56m6ID4gam91a3V1XCA7CivnjbDnjJsgPiBuZWltb3VcIDsKK+mmmeWQiCA+IGtvdWdvdVwgOwor54mH6ZuyID4gaGVuJyd1blwgOwor54us6IuxID4gZG9rdWVpXCA7CivmoKHlhoUgPiBrb3VuYWlcIDsKK+aXpembgCA+IGhpZ2FyYVwgOwor6aGM57C9ID4gZGFpc2VuXCA7Civlr4blgbUgPiBtaXR0ZWlcIDsKK+mgu+e5gSA+IGhpbnBhblwgOwor5LiA562WID4gaXNzYWt1XCA7CivkvZXliIYgPiBuYW5wdW5cIDsKK+eJvemAoyA+IGtlbnJlblwgOwor5a2r5a2QID4gbWFnb2tvXCA7Civku4vmirEgPiBrYWlob3VcIDsKK+S4ieeoriA+IHNhbnNodVwgOwor5L2T5Yi2ID4gdGFpc2VpXCA7CivppZflrrQgPiBreW91ZW5cIDsKK+S4iueoiyA+IGpvdXRlaVwgOwor5pel6ZmwID4gaGlrYWdlXCA7Civmm7jnlJ8gPiBzaG9zZWlcIDsKK+aXrOmWkyA+IGp1bmthblwgOwor6aas5YWLID4gbWFydWt1XCA7CivlrpjllrYgPiBrYW4nJ2VpXCA7CivkvZPliJEgPiB0YWlrZWlcIDsKK+e+veeUsCA+IGhhbmVkYVwgOwor6aGG57KSID4ga2FyeXV1XCA7CivkuLvnj60gPiBzaHVoYW5cIDsKK+S4gOeskSA+IGlzc2hvdVwgOwor6Z2i6aCsID4gbWVucG9vXCA7Civml6XpmZAgPiBoaWdpcmlcIDsKK+S4jeelpSA+IGZ1c2hvdVwgOwor5Lih55uuID4gcnlvdW1lXCA7CivmnKzmupAgPiBob25nZW5cIDsKK+iCieWxiyA+IG5pa3V5YVwgOwor6IO05L2TID4gZG91dGFpXCA7Civlp6boqIggPiBrYW5rZWlcIDsKK+S6pOabvyA+IGtvdXRhaVwgOwor6Z2Z6aSKID4gc2VpeW91XCA7CivosqHmlL8gPiB6YWlzZWlcIDsKK+WtpOWuoiA+IGtva2FrdVwgOwor5Luk5byfID4gcmVpdGVpXCA7CivmoKrkvqEgPiBrYWJ1a2FcIDsKK+e+juepuiA+IG1pc29yYVwgOwor5pu055SfID4ga291c2VpXCA7Civlr4Tkv6EgPiBraXNoaW5cIDsKK+iBluaIpiA+IHNlaXNlblwgOwor5Lit55SfID4gbmFrYXRlXCA7CivkvZPlhoUgPiB0YWluYWlcIDsKK+iDjOWPjSA+IGhhaWhhblwgOwor54us6IeqID4gZG9rdWppXCA7Civku6PlvIEgPiBkYWliZW5cIDsKK+WvhuS9vyA+IG1pc3NoaVwgOwor5p2x5pa5ID4gdG91aG91XCA7CivorLnpgbggPiBraW5zZW5cIDsKK+ixiua9pCA+IGhvdWp1blwgOwor5Lya5aC0ID4ga2Fpam91XCA7CivkvJrloLEgPiBrYWlob3VcIDsKK+aZguiplSA+IGppaHlvdVwgOwor5a625YWDID4gaWVtb3RvXCA7Civniafph44gPiBib2t1eWFcIDsKK+mdoumdoiA+IG1lbm1lblwgOwor6LOH5oCnID4gc2hpc2VpXCA7Civkuovmpa0gPiBqaWd5b3VcIDsKK+S4geeomiA+IGRldGNoaVwgOwor5p2l5pu4ID4gcmFpc2hvXCA7Civml6XplbcgPiBoaW5hZ2FcIDsKK+S6lOahgSA+IGdva2V0YVwgOwor5Lya5aCCID4ga2FpZG91XCA7Civnvo7np7AgPiBiaXNob3VcIDsKK+WvhuS8miA+IG1pa2thaVwgOwor6LOK5b6SID4gem9rdXRvXCA7CivnjKvnp5EgPiBuZWtva2FcIDsKK+aXhemkqCA+IHJ5b2thblwgOwor6IO05LmxID4gZG91cmFuXCA7Civku7vlrpggPiBuaW5rYW5cIDsKK+iynuaTjSA+IHRlaXNvdVwgOwor5Lqk5piTID4ga291ZWtpXCA7Civlrpjlkb0gPiBrYW5tZWlcIDsKK+WutuWDlSA+IGthYm9rdVwgOwor5Li754qvID4gc2h1aGFuXCA7Civnvavnt5ogPiBrZWlzZW5cIDsKK+Wtn+WtkCA+IG1vdXNoaVwgOwor576k55uyID4gZ3VubW91XCA7Civog47li5UgPiB0YWlkb3VcIDsKK+aYj+i/tyA+IGtvbm1laVwgOwor5Lim55SoID4gaGVpeW91XCA7CivkubPmr40gPiBueXV1Ym9cIDsKK+e+pOeblyA+IGd1bnRvdVwgOwor5LuW5b+DID4gdGFzaGluXCA7CivogIHmrbsgPiByb3VzaGlcIDsKK+WtneWtkCA+IGtvdXNoaVwgOwor57qP6aCtID4gdGVudG91XCA7Civniq/ooYwgPiBoYW5rb3VcIDsKK+ixiua6gCA+IGhvdW1hblwgOwor5L2P5YOnID4ganV1c291XCA7CivlrpjlkI0gPiBrYW5tZWlcIDsKK+S4gOelqCA+IGlwcHlvdVwgOwor5aWU6aiwID4gaG9udG91XCA7Civmn7vlj44gPiBzYXNodXVcIDsKK+S6jOaguCA+IG5pa2FrdVwgOwor5a6f5YuiID4gamlzc2VpXCA7Civku67lsYsgPiBrYXJpeWFcIDsKK+S9nuS6uiA+IG5laWppblwgOwor5pyr5rOVID4gbWFwcG91XCA7CivpppnlhbggPiBrb3VkZW5cIDsKK+Wun+WKuSA+IGppa2tvdVwgOwor5p2l5pa5ID4ga2lrYXRhXCA7CivoraboppYgPiBrZWlzaGlcIDsKK+mjsuaWmSA+IGlucnlvdVwgOwor5a625L+hID4ga2FzaGluXCA7CivlrpjljbAgPiBrYW4nJ2luXCA7CivkurrmiY0gPiBqaW5zYWlcIDsKK+S6uuaJiyA+IGhpdG9kZVwgOwor5pu454q2ID4gc2hvam91XCA7CivlrrnkvZMgPiB5b3VkYWlcIDsKK+S7ruWvnSA+IGthcmluZVwgOwor5a2U5a2fID4ga291bW91XCA7Civku67lrrYgPiBrYXJpaWVcIDsKK+WtlOWtkCA+IGtvdXNoaVwgOwor6IOO5YaFID4gdGFpbmFpXCA7Civku4HmhJsgPiBqaW4nJ2FpXCA7CivmnaXmlLsgPiByYWlrb3VcIDsKK+WuneWJoyA+IGhvdWtlblwgOwor5a625L2cID4ga2FzYWt1XCA7CivlpKfpuqYgPiBvb211Z2lcIDsKK+eLree+qSA+IGt5b3VnaVwgOwor6Kyd6YeRID4gc2hha2luXCA7Civlrp/liJEgPiBqaWtrZWlcIDsKK+mkiuaIkCA+IHlvdXNlaVwgOwor5p2h5paHID4gam91YnVuXCA7CivmoKHkuLsgPiBrb3VzaHVcIDsKK+WtkOWuiCA+IGtvbW9yaVwgOwor5a6/5LiWID4gc3VrdXNlXCA7Civlpa7pl5ggPiBmdW50b3VcIDsKK+Wul+WLmSA+IHNodXVtdVwgOwor5ama56S8ID4ga29ucmVpXCA7CivlrZDlrasgPiBzaGlzb25cIDsKK+S4ieecgSA+IHNhbnNlaVwgOwor5pys5q6/ID4gaG9uZGVuXCA7CivkuInnm7ggPiBzYW5zb3VcIDsKK+eMm+emvSA+IG1vdWtpblwgOwor5a6d5YiAID4gaG91dG91XCA7CivnvqTnlJ8gPiBndW5zZWlcIDsKK+S4gOefsyA+IGlzc2VraVwgOwor5a6f5YaZID4gamlzc2hhXCA7Civku4HmgbUgPiBqaW5rZWlcIDsKK+S6lOaXpSA+IGl0c3VrYVwgOwor6aKo5rWqID4gZnV1cm91XCA7Civmmbrog70gPiBjaGlub3VcIDsKK+S4iueahyA+IGpvdWtvdVwgOwor5Lqk5o+bID4ga291a2FuXCA7CivkuqvmjIEgPiBreW91amlcIDsKK+S4gOeerCA+IGlzc2h1blwgOwor5a6d5YagID4gaG91a2FuXCA7CivlrpjliLYgPiBrYW5zZWlcIDsKK+Wun+WFhCA+IGppa2tlaVwgOwor5a6d5YW4ID4gaG91dGVuXCA7CivpoqjmtJ4gPiBmdXVkb3VcIDsKK+aWrOmmliA+IHphbnNodVwgOwor5pel6YqtID4gaGl6ZW5pXCA7CivkuZfms5UgPiBqb3Vob3VcIDsKK+acrOashCA+IGhvbnJhblwgOwor54yu55uDID4ga2VucGFpXCA7Civkurrmg4UgPiBuaW5qb3VcIDsKK+S9j+S6uiA+IGp1dW5pblwgOwor5LuP5birID4gYnVzc2hpXCA7CivlrrbkuK0gPiBrYWNodXVcIDsKK+WutuS4piA+IHlhbmFtaVwgOwor6LGK5rC0ID4gaG91c3VpXCA7Civos6LlprsgPiBrZW5zYWlcIDsKK+S7o+WumCA+IGRhaWthblwgOwor5LiB55uuID4gY2hvdW1lXCA7Civku6TlrasgPiByZWlzb25cIDsKK+S7j+W3pSA+IGJ1a2tvdVwgOwor5LiA55uuID4gaGl0b21lXCA7CivogonloYogPiBuaWtrYWlcIDsKK+S6rOaIkCA+IGtlaXNlaVwgOwor5pqu56eLID4gYm9zaHV1XCA7CivmmbrogIUgPiBjaGlzaGFcIDsKK+aWuemdoiA+IGhvdW1lblwgOwor5Lm+5p2/ID4ga2FucGFuXCA7CivlrZjlpJYgPiB6b25nYWlcIDsKK+S7pOWsoiA+IHJlaWpvdVwgOwor576O55qEID4gYml0ZWtpXCA7CivkvLblhKogPiByZWl5dXVcIDsKK+S5vuadryA+IGthbnBhaVwgOwor5Lq65oCnID4gamluc2VpXCA7CivkuZfmsJcgPiBub3Jpa2lcIDsKK+S4iueVqiA+IGpvdWJhblwgOwor54uX6IKJID4ga3VuaWt1XCA7CivpoqjmsLQgPiBmdXVzdWlcIDsKK+S5vuadkCA+IGthbnphaVwgOwor6K2c6KGoID4gZnVoeW91XCA7Civku5jlsZ4gPiBmdXpva3VcIDsKK+S4iueVjCA+IGpvdWthaVwgOwor5LiJ55WqID4gc2FuYmFuXCA7CivlrablnJIgPiBnYWt1ZW5cIDsKK+aXqOmFkiA+IHNoaXNodVwgOwor6KyZ6YGcID4ga2Vuc29uXCA7CivkuIrnlLAgPiBqb3VkZW5cIDsKK+S4ieeVjCA+IHNhbmdhaVwgOwor5aSc6be5ID4geW90YWthXCA7Civku7LlpI8gPiBjaHV1a2FcIDsKK+WuiOWLoiA+IHNodXNlaVwgOwor6LSI5ZGIID4gem91dGVpXCA7Civoq5bpoYwgPiByb25kYWlcIDsKK+S8tOWDpyA+IGJhbnNvdVwgOwor5Lya5ZCMID4ga2FpZG91XCA7CivkvJrlkIggPiBrYWlnb3VcIDsKK+eQhuWtpiA+IHJpZ2FrdVwgOwor5Ly65YCZID4gc2hpa291XCA7Civku6Tlqb8gPiByZWlzZWlcIDsKK+eQg+WutCA+IGt5dXVlblwgOwor5Lqk5oimID4ga291c2VuXCA7Civml6fpg70gPiBreXV1dG9cIDsKK+S8r+WFhCA+IGhha2tlaVwgOwor6LSI5Y+3ID4gem91Z291XCA7CivkuK3ngasgPiBjaHV1YmlcIDsKK+S8neWNmCA+IGRlbnRhblwgOwor5a6j5LydID4gc2VuZGVuXCA7CivmnKjmp78gPiBtdWt1Z2VcIDsKK+aWuemZoyA+IGhvdWppblwgOwor6LSL5Y2wID4gbmlzZWluXCA7Civku6TlqJggPiByZWlqb3VcIDsKK+iDjOS7uyA+IGhhaW5pblwgOwor57+75qGIID4gaG9uJydhblwgOwor546L5qeYID4gb3VzYW1hXCA7Civku7vlnLAgPiBuaW5jaGlcIDsKK+Wun+S9kyA+IGppdHRhaVwgOwor5LiA55aLID4gaXBwaWtpXCA7CivogIHmnaUgPiByb3VyYWlcIDsKK+eJqeizhyA+IGJ1c3NoaVwgOwor5LuW5a6XID4gdGFzaHV1XCA7Civml6bpgqMgPiBkYW4nJ25hXCA7Civlpb3phY0gPiBrb3VoYWlcIDsKK+iAgeadiSA+IHJvdXNhblwgOwor5Luk5aeJID4gcmVpc2hpXCA7Civku5XlrpggPiBzaGlrYW5cIDsKK+WujOWFqCA+IGthbnplblwgOwor5Lyd5YuVID4gZGVuZG91XCA7Civmlq3pnaIgPiBkYW5tZW5cIDsKK+S7pOWmuSA+IHJlaW1haVwgOwor5aSc6bOlID4geWFjaG91XCA7CivnjJvnnIEgPiBtb3VzZWlcIDsKK+S4gOeUuyA+IGlra2FrdVwgOwor5p+U5ZKMID4gbnl1dXdhXCA7Civml6npgIAgPiBzb3V0YWlcIDsKK+WumuS+iyA+IHRlaXJlaVwgOwor54++5a2YID4gZ2Vuem9uXCA7CivkubHmna0gPiByYW5ndWlcIDsKK+S8tOS+tiA+IGhhbnJ5b1wgOwor5Lqk5oSfID4ga291a2FuXCA7CivlrprkvY8gPiB0ZWlqdXVcIDsKK+iri+mhmCA+IHNlaWdhblwgOwor5a6I5YW1ID4gc2h1aGVpXCA7CivosqHlvaIgPiB6YWlrZWlcIDsKK+iDjOS4rSA+IHNlbmFrYVwgOwor54m56KixID4gdG9ra3lvXCA7Civoqr/ppqwgPiBjaG91YmFcIDsKK+WtmOWcqCA+IHNvbnphaVwgOwor6IOM5LiIID4gc2V0YWtlXCA7CivnibnoqJMgPiB0b2trdW5cIDsKK+S4jeeMnyA+IGZ1cnlvdVwgOwor54iG6Z+zID4gYmFrdW9uXCA7CivkuqTmg4UgPiBrb3Vqb3VcIDsKK+acrOahiCA+IGhvbicnYW5cIDsKK+S4i+eNhCA+IGdlZ29rdVwgOwor5LuK5bCaID4gaW1hbmFvXCA7CivmnKzmoKEgPiBob25rb3VcIDsKK+S6uuW3pSA+IGppbmtvdVwgOwor5Lmx5pq0ID4gcmFuYm91XCA7CivmnJvmqJMgPiBib3Vyb3VcIDsKK+S4ieeMvyA+IG1pemFydVwgOwor6KuW6ZmjID4gcm9uamluXCA7CivpoZXnj74gPiBrZW5nZW5cIDsKK+S8tuS6uiA+IHJlaWppblwgOwor5p2x5b6BID4gdG91c2VpXCA7CivmlpzpoLggPiBzaGFrZWlcIDsKK+ixquaUviA+IGdvdWhvdVwgOwor5LiA55CGID4gaWNoaXJpXCA7CivkuLvms5UgPiBzaHVob3VcIDsKK+isueiogCA+IGtpbmdlblwgOwor5pyx5pu4ID4gc2h1c2hvXCA7CivppKjlqIMgPiBrYW4nJ2FpXCA7CivniYfovKogPiBrYXRhd2FcIDsKK+acm+alvCA+IGJvdXJvdVwgOwor5a6J5YCkID4geWFzdW5lXCA7CivmnKzmnaUgPiBob25yYWlcIDsKK+aYjuiogCA+IG1laWdlblwgOwor57+w5p6XID4ga2FucmluXCA7Civku6TloIIgPiByZWlkb3VcIDsKK+aYjuinoyA+IG1laWthaVwgOwor5LiH54q2ID4gYmFuam91XCA7CivlrpfkuLsgPiBzb3VzaHVcIDsKK+mciumtgiA+IHJlaWtvblwgOwor5pys5pyoID4gbW90b2tpXCA7CivpnZLpioUgPiBzZWlkb3VcIDsKK+S4gOeNsiA+IGlra2FrdVwgOwor5pys5pybID4gaG9ubW91XCA7Civnvbnnl4UgPiByaWJ5b3VcIDsKK+mhmOeKtiA+IGdhbmpvdVwgOwor5pyr5pyrID4gc3VlenVlXCA7CivlrZDlmqIgPiBzaGlub3VcIDsKK+acrOabuCA+IGhvbnNob1wgOwor5pqX56SBID4gYW5zaG91XCA7CivmmI7oppYgPiBtZWlzaGlcIDsKK+aWnOmdoiA+IHNoYW1lblwgOwor54mH6LqrID4ga2F0YW1pXCA7CivkuozmiYsgPiBmdXRhdGVcIDsKK+irkumXhyA+IHJ5b3VhblwgOwor5Lmx5pWwID4gcmFuc3V1XCA7Civoqr/pn7MgPiBjaG91b25cIDsKK+aYpeialSA+IGhhcnVnb1wgOwor5aW96LuiID4ga291dGVuXCA7CivmnKjmnKsgPiBrb251cmVcIDsKK+iCjOWQiCA+IGhhZGFhaVwgOwor5Lqs5birID4ga2Vpc2hpXCA7CivnjovmnJ0gPiBvdWNob3VcIDsKK+mkqOWkliA+IGthbmdhaVwgOwor5LyB5Y+KID4ga2lreXV1XCA7CivorLnoo70gPiBraW5zZWlcIDsKK+eKrOiIjiA+IGtlbnNoYVwgOwor6Zu36bO0ID4gcmFpbWVpXCA7Civku7vlkb0gPiBuaW5tZWlcIDsKK+abuOazlSA+IHNob2hvdVwgOwor5LuA5a6dID4ganV1aG91XCA7CivkurrlsYsgPiBoaXRveWFcIDsKK+acpuacpyA+IG1vdXJvdVwgOwor5pym5pymID4gbW91bW91XCA7Civku6PlnLAgPiBkYWljaGlcIDsKK+S4rea0siA+IG5ha2FzdVwgOwor6LOb5ZiGID4gc2FudGFuXCA7Civml6XotrMgPiBoaWFzaGlcIDsKK+mdkumFuCA+IHNlaXNhblwgOwor5pac6Zm9ID4gc2hheW91XCA7CivlpKfpoqggPiBvb2themVcIDsKK+iruOmBkyA+IHNob2RvdVwgOwor5aWq6YKEID4gZGFra2FuXCA7CivkuK3ms6IgPiBjaHV1aGFcIDsKK+mfs+e3oCA+IG5lamltZVwgOwor6ZyK6aiTID4gcmVpZ2VuXCA7CivkuI3ngrogPiBmdXRhbWVcIDsKK+WkqemhlCA+IHRlbmdhblwgOwor54mp6KaLID4gbW9ub21pXCA7CivmnKzml6ggPiBob25zaGlcIDsKK+Wjrum9oiA+IHNvdXJlaVwgOwor5a2m5YuZID4gZ2FrdW11XCA7Civmm7/mrYwgPiBrYWV1dGFcIDsKK+WtmOWRvSA+IHpvbm1laVwgOwor5aWu6L+FID4gZnVuamluXCA7Civos63ljZogPiB0b2Jha3VcIDsKK+Wkp+mhmCA+IHRhaWdhblwgOwor5p2J5oi4ID4gc3VnaWRvXCA7Civosqflr5IgPiBoaW5rYW5cIDsKK+WqvuabsyA+IGFpYmlraVwgOwor5pyJ5qeYID4gYXJpeW91XCA7CivmnKzmlocgPiBob25tb25cIDsKK+S7tuWQjSA+IGtlbm1laVwgOwor5p2l5bqXID4gcmFpdGVuXCA7CivmnKzmlbAgPiBob25zdXVcIDsKK+aWp+mRvyA+IGZ1c2FrdVwgOwor5p2l5bm0ID4gcmFpbmVuXCA7CivnjJvnjaMgPiBtb3VqdXVcIDsKK+aWh+mhjCA+IGJ1bmRhaVwgOwor546L5pePID4gb3V6b2t1XCA7CivkvIHlioMgPiBraWtha3VcIDsKK+S6lOW+syA+IGdvdG9rdVwgOwor5LiJ54G9ID4gc2Fuc2FpXCA7Civlpb3otbAgPiBrb3Vzb3VcIDsKK+S4h+eCuSA+IG1hbnRlblwgOwor5LuK5aScID4ga29uJyd5YVwgOwor6aOv5bqXID4gaGFudGVuXCA7CivppIrlrZAgPiB5b3VzaGlcIDsKK+S4reawlyA+IGNodXVraVwgOwor6aGV54S2ID4ga2VuemVuXCA7Civku6Tll6MgPiByZWlzaGlcIDsKK+ismeitsiA+IGtlbmpvdVwgOwor5aOu6bqXID4gc291cmVpXCA7CivmnbHlsrggPiB0b3VnYW5cIDsKK+S8neS7pCA+IGRlbnJlaVwgOwor5LuP5aGUID4gYnV0dG91XCA7CivpnJzpm7AgPiBzb3VmdW5cIDsKK+iznuWRsyA+IHNob3VtaVwgOwor6aCt55ebID4genV0c3V1XCA7CivkuLvmqKkgPiBzaHVrZW5cIDsKK+mbt+mtmiA+IHJhaWd5b1wgOwor5LiH54GvID4gbWFuZG91XCA7CivogZblo4cgPiBzZWlkYW5cIDsKK+iyoeWunSA+IHphaWhvdVwgOwor6Kyb6KuHID4ga291ZGFuXCA7CivlpJzpoqggPiB5b2themVcIDsKK+iyquWpqiA+IGRvbnJhblwgOwor54yu54GvID4ga2VudG91XCA7CivkvJDlgJIgPiBiYXR0b3VcIDsKK+ePvuWcsCA+IGdlbmNoaVwgOwor6IKi5L2TID4gc2hpdGFpXCA7CivnjJvniqwgPiBtb3VrZW5cIDsKK+abtOatoyA+IGtvdXNlaVwgOwor5aSp6Zu3ID4gdGVucmFpXCA7CivmnJ3mmakgPiBhc2FiYW5cIDsKK+ePvuWcqCA+IGdlbnphaVwgOwor5LuW5Zu9ID4gdGFrb2t1XCA7CivmnJfmnJcgPiByb3Vyb3VcIDsKK+S7ruWQjSA+IGtlbXlvdVwgOwor6aKo5pmvID4gZnV1a2VpXCA7Civoq5bpi5IgPiByb25wb3VcIDsKK+aWh+mdoiA+IGJ1bm1lblwgOwor5LyO5YCGID4gZ2lyeW91XCA7CivppIPlrZAgPiBneW91emFcIDsKK+S6leW6lSA+IHNlaXRlaVwgOwor5a2m5YWEID4gZ2Fra2VpXCA7Civniq/nvaogPiBoYW56YWlcIDsKK+Wkp+mboyA+IHRhaW5hblwgOwor5Lit5qynID4gY2h1dW91XCA7CivkvJ3kuJYgPiBkZW5zZWlcIDsKK+izm+WQjCA+IHNhbmRvdVwgOwor5LiN5ryBID4gZnVyeW91XCA7CivlpKrpmb0gPiB0YWl5b3VcIDsKK+WkqemamyA+IHRlbnNhaVwgOwor5pq054q2ID4gYm91am91XCA7Civml4vou6IgPiBzZW50ZW5cIDsKK+WkmumhjSA+IHRhZ2FrdVwgOwor5aSp6Zm6ID4gdGVua2VuXCA7CivogZbloIIgPiBzZWlkb3VcIDsKK+iAgeaJiyA+IHJvdXNodVwgOwor5Lya5Li7ID4ga2Fpc2h1XCA7CivmnbHlrq4gPiB0b3VndXVcIDsKK+adseWunSA+IHRvdWhvdVwgOwor6IGW5Z+fID4gc2VpaWtpXCA7CivlpKfpmoogPiBkYWl0YWlcIDsKK+S7o+WTgSA+IGRhaWhpblwgOwor5pyI5qGCID4gZ2Vra2VpXCA7CivpoJPnn6UgPiB0b25jaGlcIDsKK+iAgeaIkCA+IHJvdXNlaVwgOwor6ICQ5oCnID4gdGFpc2VpXCA7CivmlbXpo5sgPiB0ZWtpaGlcIDsKK+mghuekvCA+IGp1bnJlaVwgOwor5LmX5pWwID4gam91c3V1XCA7CivlpJXpoZQgPiB5dXVnYW9cIDsKK+S5seaIpiA+IHJhbnNlblwgOwor5pmC57+SID4gamlzaHV1XCA7CivogIPmha4gPiBrb3VyeW9cIDsKK+aWremHkSA+IGRhbmtpblwgOwor5LiN5risID4gZnVzb2t1XCA7Civku4vlnKggPiBrYWl6YWlcIDsKK+WkqumWpCA+IHRhaWtvdVwgOwor5pen6Kq8ID4ga3l1dWdpXCA7CivmlbTpoqggPiBzZWlmdXVcIDsKK+S7u+WFjSA+IG5pbm1lblwgOwor5a2Y5YiGID4gem9uYnVuXCA7Civku6TlkI0gPiByZWltZWlcIDsKK+mjsuWxiyA+IG5vbWl5YVwgOwor6IGW5ZywID4gc2VpY2hpXCA7CivkurrlpJYgPiBuaW5nYWlcIDsKK+aWp+mJniA+IGZ1ZXRzdVwgOwor5aSc6ZynID4geW9naXJpXCA7CivnjJvnhLYgPiBtb3V6ZW5cIDsKK+iBr+WQiCA+IHJlbmdvdVwgOwor5Lq65aOrID4gamluc2hpXCA7CivpnaLosowgPiBtZW5ib3VcIDsKK+iyqeWjsiA+IGhhbmJhaVwgOwor5Lm+5oCnID4ga2Fuc2VpXCA7CivkuLvmoLkgPiBzaHVrb25cIDsKK+Wkp+mWoiA+IG9vemVraVwgOwor5pen6KmgID4ga3l1dWVpXCA7Civku4rlm54gPiBrb25rYWlcIDsKK+aXpeiqjCA+IG5pc3NoaVwgOwor5pep6KiIID4gc291a2VpXCA7Civku6Plj4IgPiBkYWlzYW5cIDsKK+Wkp+mWgCA+IGRhaW1vblwgOwor5pys5ougID4gaG9ua3lvXCA7CivmnInmnJsgPiB5dXVib3VcIDsKK+eLoeefpSA+IGtvdWNoaVwgOwor6aOu5bGLID4gbm9taXlhXCA7CivmlbTpoJMgPiBzZWl0b25cIDsKK+aXp+iomCA+IGt5dXVraVwgOwor6Kqy6ZW3ID4ga2FjaG91XCA7CivlpoToqIAgPiBtb3VnZW5cIDsKK+iruOizoiA+IHNob2tlblwgOwor5pmp56iyID4gYmFudG91XCA7CivkupvlsJEgPiBzYXNob3VcIDsKK+S6oeWtkCA+IGJvdXNoaVwgOwor6LK05Zu9ID4ga2lrb2t1XCA7Civml4Xot68gPiB0YWJpamlcIDsKK+ixquW/qyA+IGdvdWthaVwgOwor5pel6KiIID4gbmlra2VpXCA7Civml6noposgPiBoYXlhbWlcIDsKK+mbu+mhlSA+IGRlbmtlblwgOwor6aSo5ZOhID4ga2FuJydpblwgOwor6LOi5YWEID4ga2Vua2VpXCA7CivlpJbpm7sgPiBnYWlkZW5cIDsKK+ePvuWToSA+IGdlbicnaW5cIDsKK+adv+WhgCA+IGl0YWJlaVwgOwor54mH6KiAID4gaGVuZ2VuXCA7CivkuqTlqr4gPiBrb3Vrb3VcIDsKK+S4i+a1gSA+IGthcnl1dVwgOwor572q54q2ID4gemFpam91XCA7Civml6fopo8gPiBreXV1a2lcIDsKK+aWr+mBkyA+IHNoaWRvdVwgOwor54++5ZOBID4gZ2VucGluXCA7CivnjqnlvIQgPiBnYW5yb3VcIDsKK+aUvum3uSA+IGhvdXlvdVwgOwor5a2m5LyaID4gZ2Fra2FpXCA7CivlpYnpgoQgPiBob3VrYW5cIDsKK+S4jeazgSA+IGZ1a3lvdVwgOwor5aWJ6YG3ID4gaG91c2VuXCA7CivoqpPpoZggPiBzZWlnYW5cIDsKK+acrOaHkCA+IGhvbmthaVwgOwor5Li55pyxID4gdGFuc2h1XCA7CivlpKfpkZEgPiB0YWlrYW5cIDsKK+S4uOacqCA+IG1hcnVraVwgOwor5a2m5LqLID4gZ2FrdWppXCA7CivmnIjml6YgPiBnZXR0YW5cIDsKK+WknOmVtyA+IHlvbmFnYVwgOwor5p2x5aSpID4gdG91dGVuXCA7CivlpYnpgIEgPiBob3Vzb3VcIDsKK+adseWkpyA+IHRvdWRhaVwgOwor6Z2i6KuHID4gbWVuZGFuXCA7CivlpYnov44gPiBob3VnZWlcIDsKK+abuOaelyA+IHNob3JpblwgOwor5aW46KiIID4ga2Fua2VpXCA7Civnh5Xpm4AgPiBlbmpha3VcIDsKK+acieaVsCA+IHl1dXN1dVwgOwor54u854u9ID4gcm91YmFpXCA7CivlqpLmn5MgPiBiYWlzZW5cIDsKK+e5gemWkSA+IGhhbmthblwgOwor5Luy5YCkID4gbmFrYW5lXCA7CivkuIrmsLQgPiBqb3VzdWlcIDsKK+iqmOmbuyA+IHl1dWRlblwgOwor5pmC57WmID4gamlreXV1XCA7Civpm4Tpto8gPiBvbmRvcmlcIDsKK+aZtOedgCA+IGhhcmVnaVwgOwor572w54K5ID4gYmF0dGVuXCA7CivkuqHlp4kgPiBib3VzaGlcIDsKK+Wkp+mOjCA+IG9vZ2FtYVwgOwor5Lqh5aa7ID4gYm91c2FpXCA7CivpnZLosYYgPiBhb21hbWVcIDsKK+iyp+WbsCA+IGhpbmtvblwgOwor5Luy5L+dID4gY2h1dWhvXCA7Civnj43lpYcgPiBjaGlua2lcIDsKK+isgOioiCA+IGJvdWtlaVwgOwor5Li75peoID4gc2h1c2hpXCA7CivkuqLlpa4gPiBrb3VmdW5cIDsKK+eJiOihjCA+IGhhbmtvdVwgOwor5aSn6Y2LID4gb29uYWJlXCA7CivmmrTmvKIgPiBib3VrYW5cIDsKK+S4iuautSA+IGpvdWRhblwgOwor5pyA5pepID4gbW9oYXlhXCA7Civpm7fpm7sgPiByYWlkZW5cIDsKK+S4h+awkSA+IGJhbm1pblwgOwor6ICB5buDID4gcm91aGFpXCA7Civku6TlhYQgPiByZWlrZWlcIDsKK+WnlOe4riA+IGlzaHVrdVwgOwor5LmX5omLID4gbm9yaXRlXCA7Civku4/lj4IgPiBidXNzYW5cIDsKK+aYh+iPryA+IHNob3VrYVwgOwor5LiA5rOKID4gaXBwYWt1XCA7Civoq7foq4wgPiBmdXVrYW5cIDsKK+S4u+aWhyA+IHNodWJ1blwgOwor6ZuE6bOlID4gb25kb3JpXCA7Civnj77li6IgPiBnZW5zZWlcIDsKK+iAgeW5vCA+IHJvdXlvdVwgOwor6Kqe6ZW3ID4gZ29jaG91XCA7CivlpZTotbAgPiBob25zb3VcIDsKK+iAgeW5tCA+IHJvdW5lblwgOwor5Lit5pyfID4gY2h1dWtpXCA7CivkuInmrbsgPiBzYW5zaGlcIDsKK+S7luWKmyA+IHRhcmlraVwgOwor5pys5oCnID4gaG9uc2VpXCA7Civku5jliYcgPiBmdXNva3VcIDsKK+e/u+W8hCA+IGhvbnJvdVwgOwor6LKh5ZujID4gemFpZGFuXCA7CivorJnomZogPiBrZW5reW9cIDsKK+S7o+WDpyA+IGRhaXNvdVwgOwor5LqI5a+pID4geW9zaGluXCA7CivkuLvmlLsgPiBzaHVrb3VcIDsKK+iqjOmdoiA+IHNoaW1lblwgOwor5LiH5q27ID4gYmFuc2hpXCA7CivogIHluKsgPiByb3VzaGlcIDsKK+S4h+atsyA+IG1hbnphaVwgOwor5a2Q5L6bID4ga29kb21vXCA7CivlrZjkuqEgPiBzb25ib3VcIDsKK+S6jOWtkCA+IGZ1dGFnb1wgOwor5LiK5qyEID4gam91cmFuXCA7Civku67kvZwgPiBrYXNha3VcIDsKK+mghueVqiA+IGp1bmJhblwgOwor6LOi5Lq6ID4ga2VuamluXCA7Civpm7Lpm4YgPiB1bnNodXVcIDsKK+irs+iqpiA+IGFuc2hvdVwgOwor6Zuy6ZuAID4gaGliYXJpXCA7Civnj77liY0gPiBnZW56ZW5cIDsKK+iAgeW3pyA+IHJvdWtvdVwgOwor5LuL5Y21ID4ga2FpcmFuXCA7CivlpKfpiYggPiBvb25hdGFcIDsKK+ipqemtgiA+IHNoaWtvblwgOwor5aWH6LmfID4ga2lzZWtpXCA7CivnvormsLQgPiB5b3VzdWlcIDsKK+e+pOajsiA+IGd1bnNlaVwgOwor6Zuj6aGMID4gbmFuZGFpXCA7CivlpKnph5EgPiB0ZW5raW5cIDsKK+acrOW9sSA+IGhvbicnZWlcIDsKK+iAkOWvkiA+IHRhaWthblwgOwor5aSp6YeNID4gdGVuanV1XCA7CivkuKbmnKggPiBuYW1pa2lcIDsKK+acrOW9kyA+IGhvbnRvdVwgOwor5pac6L66ID4gc2hhaGVuXCA7Civos6LkuLsgPiBrZW5zaHVcIDsKK+abuOaWjiA+IHNob3NhaVwgOwor576K5q+bID4geW91bW91XCA7CivlpKfph5EgPiB0YWlraW5cIDsKK+mdmeimsyA+IHNlaWthblwgOwor5aWH6LehID4ga2lzZWtpXCA7Civku4HlkJsgPiBqaW5rdW5cIDsKK+S4jeanmCA+IGJ1emFtYVwgOwor5Lq65ZOhID4gamluJydpblwgOwor5Lit5pelID4gbmFrYWJpXCA7CivmnKvlvJ8gPiBtYXR0ZWlcIDsKK+S6uuWTgSA+IGppbnBpblwgOwor5LiJ5qipID4gc2Fua2VuXCA7Civoq67oqaIgPiBzaGlqdW5cIDsKK+e4pumaiiA+IGp1dXRhaVwgOwor5LiA5qyhID4gaWNoaWppXCA7CivnhrHpoqggPiBuZXBwdXVcIDsKK+ixoeW1jCA+IHpvdWdhblwgOwor5aSn6YWUID4gdGFpc3VpXCA7CivkuIrmp5ggPiB1ZXphbWFcIDsKK+Wkp+mFkiA+IG9vemFrZVwgOwor5Lq65ZG9ID4gamlubWVpXCA7CivnuKbpmaMgPiBqdXVqaW5cIDsKK+WrgeW+oSA+IHlvbWVnb1wgOwor6LOe5LiOID4gc2hvdXlvXCA7CivmnJ3mgakgPiBjaG91b25cIDsKK+acrOW6lyA+IGhvbnRlblwgOwor6Zuy6ZaTID4ga3Vtb21hXCA7Civlp4vntYIgPiBzaGlqdXVcIDsKK+irluizmyA+IHJvbnNhblwgOwor5pu05pS5ID4ga291a2FpXCA7CivmlaLpl5ggPiBrYW50b3VcIDsKK+S6uuWQmyA+IGppbmt1blwgOwor54++5YOPID4gZ2Vuem91XCA7CivkurrlkI0gPiBqaW5tZWlcIDsKK+WkremAnSA+IHlvdXNlaVwgOwor5pWj6ZaLID4gc2Fua2FpXCA7Civku4/lhbggPiBidXR0ZW5cIDsKK+S4iealrSA+IHNhbmdvdVwgOwor6Kur6KiAID4ga2FuZ2VuXCA7Civku6Pku7sgPiBkYWluaW5cIDsKK+e+qOacmyA+IHNlbmJvdVwgOwor6Kmm6aiTID4gc2hpa2VuXCA7CivkuJbmn4QgPiB5b2dhcmFcIDsKK+S6uuWPoyA+IGppbmtvdVwgOwor6Kqe6YyyID4gZ29yb2t1XCA7CivmmJPogIUgPiBla2lzaGFcIDsKK+WkqemBkyA+IHRlbmRvdVwgOwor5Lq65Y+CID4gbmluamluXCA7CivlpKnpgY0gPiB0ZW5wZW5cIDsKK+WkqemBiyA+IHRlbicndW5cIDsKK+S4gOaouSA+IGljaGlqdVwgOwor5Luj5Lq6ID4gZGFpbmluXCA7Civku4rlhqwgPiBrb250b3VcIDsKK+S4iuajnyA+IGpvdXRvdVwgOwor5aSn6YGTID4gZGFpZG91XCA7Civpm6LpmpQgPiByaWtha3VcIDsKK+S7j+WDpyA+IGJ1c3NvdVwgOwor5aSa6YePID4gdGFyeW91XCA7Civml6XolK0gPiBoaWthZ2VcIDsKK+iBluWFuCA+IHNlaXRlblwgOwor5pq05rCRID4gYm91bWluXCA7Civpm6LpmbggPiByaXJpa3VcIDsKK+iAgeWusyA+IHJvdWdhaVwgOwor5paH6YG4ID4gYnVuc2VuXCA7CivkuIrmopMgPiBqb3VzaGlcIDsKK+acqOW3pSA+IG1va2tvdVwgOwor5Lmx5bCEID4gcmFuc2hhXCA7CivlpKnovrogPiB0ZXBwZW5cIDsKK+iyrOWLmSA+IHNla2ltdVwgOwor5paH6YGLID4gYnVuJyd1blwgOwor5peF6KOFID4gcnlvc291XCA7Civoq6boprMgPiB0ZWlrYW5cIDsKK+iAgeWtkCA+IHJvdXNoaVwgOwor6LGK5bm0ID4gaG91bmVuXCA7CivlpKfovrIgPiBkYWlub3VcIDsKK+aWueiogCA+IGhvdWdlblwgOwor5aWP6KuLID4gc291c2VpXCA7CivkuInmoYEgPiBtaWtldGFcIDsKK+acrOWztiA+IGhvbnRvdVwgOwor5Li75oimID4gc2h1c2VuXCA7CivogIHlrKIgPiByb3Vqb3VcIDsKK+iBluWDjyA+IHNlaXpvdVwgOwor5LiJ5qChID4gc2Fua291XCA7Civml4XooYwgPiByeW9rb3VcIDsKK+mbo+mWoiA+IG5hbmthblwgOwor5paw6KqeID4gc2hpbmdvXCA7CivlpKfovKogPiB0YWlyaW5cIDsKK+S4jeacvSA+IGZ1a3l1dVwgOwor5pS+6aGMID4gaG91ZGFpXCA7CivmnKzlsbEgPiBob256YW5cIDsKK+Wkqei7jSA+IHRlbmd1blwgOwor5LiJ5p6aID4gc2FubWFpXCA7Civmnb/liY0gPiBpdGFtYWVcIDsKK+ePvuS7oyA+IGdlbmRhaVwgOwor6aC75q27ID4gaGluc2hpXCA7Civnh5DpibEgPiByaW5rb3VcIDsKK+S7geWFhCA+IGppbmtlaVwgOwor5pys5bGLID4gaG9uJyd5YVwgOwor5LiN5pyNID4gZnVmdWt1XCA7Civpm7vpiLQgPiBkZW5yZWlcIDsKK+S4ieadvyA+IHNhbnBhblwgOwor6aGe5pysID4gcnVpaG9uXCA7Civlo7DploAgPiBzZWltb25cIDsKK+abmuaYpyA+IG1vdW1haVwgOwor54++5LuKID4gZ2Vua29uXCA7CivpoqjluK8gPiBmdXV0YWlcIDsKK+S6q+WPlyA+IGt5b3VqdVwgOwor6aKo5birID4gZnV1c2hpXCA7Civku5nkuLkgPiBzZW50YW5cIDsKK+S6uuWHuiA+IGhpdG9kZVwgOwor6aGe5pu4ID4gcnVpc2hvXCA7CivmnKzlsIogPiBob256b25cIDsKK+S4iuacnyA+IGthbWlraVwgOwor54ax6ZeYID4gbmV0dG91XCA7Civnj43lkbMgPiBjaGlubWlcIDsKK+abuOaIvyA+IHNob2JvdVwgOwor5LiA5qGIID4gaWNoaWFuXCA7CivkuInmnKwgPiBzYW5ib25cIDsKK+mkiuWIhiA+IHlvdWJ1blwgOwor5pyJ5oCnID4geXV1c2VpXCA7CivkuIfmnaUgPiBiYW5yYWlcIDsKK+ixquWloiA+IGdvdXNoYVwgOwor5pS56aGMID4ga2FpZGFpXCA7CivkuIrmm7ggPiBqb3VzaG9cIDsKK+acqOWxkSA+IGtpa3V6dVwgOwor5LuP5LyaID4gYnV0c3VlXCA7CivppKjkuLsgPiBrYW5zaHVcIDsKK+S4ieabuSA+IHNhbnNvdVwgOwor5LiJ5pu0ID4gc2Fua291XCA7CivnjK7mna8gPiBrZW5wYWlcIDsKK+S6oeWRvSA+IGJvdW1laVwgOwor5p2x5Y2KID4gdG91aGFuXCA7CivmlYXpmpwgPiBrb3Nob3VcIDsKK+aWreiogCA+IGRhbmdlblwgOwor5aSW6YGKID4gZ2FpeXV1XCA7CivmnInlv5cgPiB5dXVzaGlcIDsKK+acrOWumCA+IGhvbmthblwgOwor546J5bGLID4gdGFtYXlhXCA7CivkuqTlkIggPiBrb3Vnb3VcIDsKK+aWsOimjyA+IHNoaW5raVwgOwor6ICB5aa7ID4gcm91c2FpXCA7CivnjovlsIYgPiBvdXNob3VcIDsKK+S7leS4iiA+IHNoaWFnZVwgOwor6LGq5aOuID4gZ291c291XCA7CivpoZjmnJsgPiBnYW5tb3VcIDsKK+eIrOiZqyA+IGhhY2h1dVwgOwor6IGW5L2TID4gc2VpdGFpXCA7CivnjK7mnKwgPiBrZW5wb25cIDsKK+iAleWcsCA+IGtvdWNoaVwgOwor5Lit5omLID4gbmFrYXRlXCA7CivkuIrmmbogPiBqb3VjaGlcIDsKK+acgOaCqiA+IHNhaWFrdVwgOwor54eQ6YW4ID4gcmluc2FuXCA7Civni6zmvJQgPiBkb2t1ZW5cIDsKK+WkseiyuyA+IHNoaXBwaVwgOwor5Lqk5Y+LID4ga291eXV1XCA7CivpoZjmm7ggPiBnYW5zaG9cIDsKK+acq+WtqyA+IG1hc3NvblwgOwor5Lqh5ZCbID4gYm91a3VuXCA7CivorabnoLIgPiBrZWlob3VcIDsKK+aal+a1gSA+IGFucnl1dVwgOwor6IGW5LydID4gc2VpZGVuXCA7CivmnKvlrZAgPiBtYXNzaGlcIDsKK+S4ieaZryA+IHNhbmtlaVwgOwor546L5a6uID4gb3VreXV1XCA7Civlq4zlq4wgPiBpeWFpeWFcIDsKK+aUvumbuyA+IGhvdWRlblwgOwor6ZuM6ZuEID4gc2hpeXV1XCA7CivmnInlvaIgPiB5dXVrZWlcIDsKK+e/oOW1kCA+IHN1aXJhblwgOwor6aOf5ZmoID4gc2hva2tpXCA7CivlpKfotrMgPiBvb2FzaGlcIDsKK+iBluS7oyA+IHNlaWRhaVwgOwor5Lqh5Y+LID4gYm91eXV1XCA7Civnvo7mnI0gPiBiaWZ1a3VcIDsKK+S7iuS7iiA+IGltYWltYVwgOwor5LiJ5pinID4gc2FubWFpXCA7CivkuIDmnLYgPiBpY2hpZGFcIDsKK+S7iuS6uiA+IGtvbmppblwgOwor6IGW5Lq6ID4gc2VpamluXCA7CivnjaPmgKcgPiBqdXVzZWlcIDsKK+mbsumHjyA+IHVucnlvdVwgOwor5LiK5pesID4gam91anVuXCA7CivlpKfotaYgPiB0YWlzaGFcIDsKK+S4iuaXqCA+IGpvdXNoaVwgOwor5LiA5pydID4gaXRjaG91XCA7CivlpKLot68gPiB5dW1lamlcIDsKK+S4gOacjSA+IGlwcHVrdVwgOwor5aWH6KWyID4ga2lzaHV1XCA7CivkuI3mlbUgPiBmdXRla2lcIDsKK+irh+irliA+IGRhbnJvblwgOwor5Lih5ouzID4gamFua2VuXCA7CivkuIrmlrkgPiBqb3Vob3VcIDsKK+eOieWtkCA+IHRhbWFnb1wgOwor6aOv5Y+wID4gaGFuZGFpXCA7Civml6XoiKogPiBuaWtrb3VcIDsKK+aYjue0sCA+IG1laXNhaVwgOwor576I5p2fID4ga2lzb2t1XCA7Civnvbfmpa0gPiBoaWd5b3VcIDsKK+S6uuWBjyA+IG5pbmJlblwgOwor5aSW6LyqID4gZ2FpcmluXCA7CivlpKnos5wgPiB0ZW5zaGlcIDsKK+S4ieaWuSA+IHNhbnBvdVwgOwor6Z2S6JeNID4gc2VpcmFuXCA7CivlpKnos4cgPiB0ZW5zaGlcIDsKK+mfsueJqSA+IGFlbW9ub1wgOwor5LiK5paHID4gam91YnVuXCA7CivkuLvlvpMgPiBzaHVqdXVcIDsKK+aWreijgSA+IGRhbnNhaVwgOwor5Lq65YCrID4gamlucmluXCA7Civoq4voqJMgPiBzZWlrdW5cIDsKK+eMpeacrCA+IHdhaWhvblwgOwor5Lm+5Z2kID4ga2Vua29uXCA7CivkubHlo7IgPiByYW5iYWlcIDsKK+S4ieaWhyA+IHNhbm1vblwgOwor5aSn6LOiID4gdGFpa2VuXCA7CivkuIfmlrkgPiBiYW5wb3VcIDsKK+WkiemBtyA+IGhlbnNlblwgOwor6aGM5p2QID4gZGFpemFpXCA7Civku4rkuIogPiBraW5qb3VcIDsKK+iBluS4iiA+IHNlaWpvdVwgOwor5aSW6LuKID4gZ2Fpc2hhXCA7Civpm7vpgIEgPiBkZW5zb3VcIDsKK+eOhOWtqyA+IGdlbnNvblwgOwor5pS76ZiyID4ga291Ym91XCA7CivkuKHmiYsgPiByeW91dGVcIDsKK+S4g+aXpSA+IG5hbm9rYVwgOwor5pat6KGMID4gZGFua291XCA7CivmnJ3lrrYgPiBjaG91a2FcIDsKK+WkiemAoCA+IGhlbnpvdVwgOwor6aGY5paHID4gZ2FubW9uXCA7CivmnKzlp5MgPiBob25zZWlcIDsKK+S4gOaYqCA+IGlzc2FrdVwgOwor5aWJ6KGMID4gYnVneW91XCA7CivosqDlgrcgPiBmdXNob3VcIDsKK+S7geS6uiA+IGppbmppblwgOwor5pys5aa7ID4gaG9uc2FpXCA7CivpoqjlrrMgPiBmdXVnYWlcIDsKK+WrieWmrCA+IHNoaXR0b1wgOwor6Kyd572qID4gc2hhemFpXCA7CivnjJ/mnJ8gPiByeW91a2lcIDsKK+S6uuS9kyA+IG5pbnRlaVwgOwor5pel6ISaID4gaGlhc2hpXCA7CivmlofosaogPiBidW5nb3VcIDsKK+S4gOaWsCA+IGlzc2hpblwgOwor5Li75bm5ID4gc2h1a2FuXCA7Civmlr3olqwgPiBzZXlha3VcIDsKK+eLrOazsyA+IGRva3VlaVwgOwor5pac6KaWID4gc2hhc2hpXCA7CivlpKnorbQgPiB0ZW5rZW5cIDsKK+aVsOi7kiA+IHN1dWtlblwgOwor5aSp6K2mID4gdGVua2VpXCA7Civoqrnoq6cgPiBoYWlrYWlcIDsKK+e9qualrSA+IHphaWdvdVwgOwor5pSv6ZqKID4gc2hpdGFpXCA7Civml6nogIEgPiBzb3Vyb3VcIDsKK+mbu+i7iiA+IGRlbnNoYVwgOwor542j5bivID4ganV1dGFpXCA7CivkuIDmlKsgPiBpa2tha3VcIDsKK+S4u+W4hiA+IHNodWhhblwgOwor6aGe5o6oID4gcnVpc3VpXCA7CivmmI7nrZQgPiBtZWl0b3VcIDsKK+S4iuaPkCA+IGpvdXRlaVwgOwor57ea6aaZID4gc2Vua291XCA7CivlpInou6IgPiBoZW50ZW5cIDsKK+S4gOaTsiA+IGl0dGVraVwgOwor5LiK5o6yID4gam91a2VpXCA7CivmnaXlhqYgPiByYWlrb3VcIDsKK+eMm+aakSA+IG1vdXNob1wgOwor6Ku46Iq4ID4gc2hvZ2VpXCA7CivkuqHlhYQgPiBib3VrZWlcIDsKK+S6iOWRiiA+IHlva29rdVwgOwor5LiN5oyvID4gZnVzaGluXCA7Civmm7jlupcgPiBzaG90ZW5cIDsKK+S6uuS4liA+IGppbnNlaVwgOwor5pys5aGBID4gaG9ucnVpXCA7CivosqfkuY8gPiBiaW5ib3VcIDsKK+adpeWFiSA+IHJhaWtvdVwgOwor5aSW6LOHID4gZ2Fpc2hpXCA7Civnh7voo70gPiBrdW5zZWlcIDsKK+miqOWnvyA+IGZ1dXNoaVwgOwor6Zui6YO3ID4gcmlreW91XCA7CivmnKzloIIgPiBob25kb3VcIDsKK+S5neWkjyA+IGt5dXVrYVwgOwor6Z2S6I2JID4gYW9rdXNhXCA7Civoq7joiKwgPiBzaG9oYW5cIDsKK+WkluiyjCA+IGdhaWJvdVwgOwor5pei57+SID4ga2lzaHV1XCA7CivkuK3luqcgPiBjaHV1emFcIDsKK+eKrOeMvyA+IGtlbicnZW5cIDsKK+S4u+WzsCA+IHNodWhvdVwgOwor5LiN5om/ID4gZnVzaG91XCA7CivnvbDmna8gPiBiYXBwYWlcIDsKK+mguOacqCA+IGt1YmlraVwgOwor5LiJ5oudID4gc2FucGFpXCA7Civlppbnsr4gPiB5b3VzZWlcIDsKK+S5meWknCA+IG90c3V5YVwgOwor6aCT5q27ID4gdG9uc2hpXCA7CivmnInlrrMgPiB5dXVnYWlcIDsKK+e/kuWtlyA+IHNodXVqaVwgOwor5aSn6KiIID4gdGFpa2VpXCA7CivmmKXnnYAgPiBoYXJ1Z2lcIDsKK+S4gOaOrCA+IGlra2lrdVwgOwor57eo6ZqKID4gaGVudGFpXCA7Civkuq3kuq0gPiB0ZWl0ZWlcIDsKK+WkqeimpyA+IHRlbnJhblwgOwor6Kqt6KqmID4gZG9rdWp1XCA7CivpoIbms5UgPiBqdW5wb3VcIDsKK+S6rOS6uiA+IGtlaWppblwgOwor5pWX6YCAID4gaGFpdGFpXCA7CivnjJvmlLsgPiBtb3Vrb3VcIDsKK+Wkp+imsyA+IHRhaWthblwgOwor5LqM5YmyID4gbml3YXJpXCA7CivmnKjlnosgPiBraWdhdGFcIDsKK+S4ieaJjSA+IHNhbnNhaVwgOwor5pyb5aSWID4gYm91Z2FpXCA7CivkuK3lt54gPiBuYWthc3VcIDsKK+e+qeW/gyA+IGdpc2hpblwgOwor5aSn6KaBID4gdGFpeW91XCA7CivkuIDmjLogPiBpdGNob3VcIDsKK+aaruaYpSA+IGJvc2h1blwgOwor5Li75bCOID4gc2h1ZG91XCA7CivlqK/mpb0gPiBnb3Jha3VcIDsKK+S6reS4uyA+IHRlaXNodVwgOwor5LiH5omNID4gbWFuemFpXCA7CivmmrTmlL8gPiBib3VzZWlcIDsKK+iqpOisrCA+IGdvYnl1dVwgOwor5pen57iBID4ga3l1dWVuXCA7CivkuoDljZwgPiBraWJva3VcIDsKK+iqreinoyA+IGRva2thaVwgOwor5Li75a6wID4gc2h1c2FpXCA7Civnjovlm70gPiBvdWtva3VcIDsKK+WkmuiqrSA+IHRhZG9rdVwgOwor6aKo5aG1ID4gZnV1amluXCA7Civlo6vpgZMgPiBzaGlkb3VcIDsKK+mgjOatjCA+IHNob3VrYVwgOwor5Lqk5LujID4ga291dGFpXCA7CivkuZfloLQgPiBub3JpYmFcIDsKK+adseS4iiA+IHRvdWpvdVwgOwor5aSi6KaLID4geXVtZW1pXCA7CivkuKHluqYgPiByeW91ZG9cIDsKK+WkieiyjCA+IGhlbmJvdVwgOwor6aC75pWwID4gaGluc3V1XCA7CivoqqToqq0gPiBnb2Rva3VcIDsKK+S4gOaKiiA+IGljaGl3YVwgOwor6aCt5pu4ID4gdG91c2hvXCA7CivmmabmuIsgPiBrYWlqdXVcIDsKK+S4jeaDkSA+IGZ1d2FrdVwgOwor54+N5LqLID4gY2hpbmppXCA7CivmlZfou40gPiBoYWlndW5cIDsKK+adpeS8miA+IHJhaWthaVwgOwor5LiA5omTID4gaWNoaWRhXCA7CivmnaHkvosgPiBqb3VyZWlcIDsKK+S4gOaJiyA+IGhpdG90ZVwgOwor5p2l5Lu7ID4gcmFpbmluXCA7Civmmbrmra8gPiBjaGlzaGlcIDsKK+abvuWtqyA+IGhpbWFnb1wgOwor6Kqk6Ki6ID4gZ29zaGluXCA7CivoqqToqLMgPiBnb3lha3VcIDsKK+abveWtqyA+IGhpbWFnb1wgOwor57im6LWwID4ganV1c291XCA7CivmnKzllrYgPiBob24nJ2VpXCA7Civml6XntYwgPiBuaWtrZWlcIDsKK+acl+WgsSA+IHJvdWhvdVwgOwor5aSa6KeSID4gdGFrYWt1XCA7CivkuIfmhJ8gPiBiYW5rYW5cIDsKK+WliOiQvSA+IG5hcmFrdVwgOwor5aao56KNID4gYm91Z2FpXCA7Civoqp7oqr8gPiBnb2Nob3VcIDsKK+WknOilsiA+IHlhc2h1dVwgOwor54qg54mbID4gZ2lneXV1XCA7Civosarli6IgPiBnb3VzZWlcIDsKK+S4jeaApSA+IGZ1a3l1dVwgOwor5pel57O7ID4gbmlra2VpXCA7CivmmKXnlLsgPiBzaHVuZ2FcIDsKK+adoeS7tiA+IGpvdWtlblwgOwor6ZuF6YePID4gZ2FyeW91XCA7CivmnaHku6QgPiBqb3VyZWlcIDsKK+ixquWLhyA+IGdvdXl1dVwgOwor5pWj6LKhID4gc2FuemFpXCA7CivnhpTpipEgPiB5b3VzZW5cIDsKK+S4jeW/oCA+IGZ1Y2h1dVwgOwor5pei57SEID4ga2l5YWt1XCA7CivlpJboprMgPiBnYWlrYW5cIDsKK+maj+mghiA+IHp1aWp1blwgOwor5p2l5LiWID4gcmFpc2VpXCA7CivnuKbosqsgPiBqdXVrYW5cIDsKK+S4jeW+syA+IGZ1dG9rdVwgOwor57eR6ZuoID4gcnlva3V1XCA7CivmnKzlk6EgPiBob24nJ2luXCA7Civpm7voq4sgPiBkZW5zZWlcIDsKK+WkluimiyA+IHNvdG9taVwgOwor5LiJ5oCdID4gc2Fuc2hpXCA7CivmmI/nnaEgPiBrb25zdWlcIDsKK+ipqemBuCA+IHNoaXNlblwgOwor6Z2i57mLID4gb21vZ2FpXCA7CivpmpvpmZAgPiBzYWlnZW5cIDsKK+aWsOiKvSA+IHNoaW5tZVwgOwor5pyJ5aOwID4geXV1c2VpXCA7CivkubPljJYgPiBueXV1a2FcIDsKK+aVl+i1sCA+IGhhaXNvdVwgOwor5pS/6YGTID4gc2VpZG91XCA7CivmlbDoqZ4gPiBzdXVzaGlcIDsKK+ioqumfkyA+IGhvdWthblwgOwor5piO55y4ID4gbWVpYm91XCA7CivpoK3mlbAgPiB0b3VzdXVcIDsKK+aatOaMmSA+IGJvdWt5b1wgOwor542j5aemID4ganV1a2FuXCA7CivpmpTpm6IgPiBrYWt1cmlcIDsKK+acrOWRvSA+IGhvbm1laVwgOwor6aGe5b2iID4gcnVpa2VpXCA7CivkuK3lrZAgPiBuYWthZ29cIDsKK+iAgeWKnyA+IHJvdWtvdVwgOwor5puz5a2QID4gaGlraWtvXCA7CivlpKnompUgPiB0ZW5zYW5cIDsKK+aUvumAgSA+IGhvdXNvdVwgOwor5aSq6JmaID4gdGFpa3lvXCA7CivlpJboo4UgPiBnYWlzb3VcIDsKK+acrOWQjSA+IGhvbm1laVwgOwor5pS56YG4ID4ga2Fpc2VuXCA7CivkuIrlvKYgPiBqb3VnZW5cIDsKK+Wls+e1piA+IGpva3l1dVwgOwor6Zu76KejID4gZGVua2FpXCA7CivkuInlvKYgPiBzYW5nZW5cIDsKK+e9ruaPmyA+IGNoaWthblwgOwor6KqT6KmeID4gc2Vpc2hpXCA7CivkuozkvLggPiBuaXNoaW5cIDsKK+aciOWgsSA+IGdlcHBvdVwgOwor5pyA5aSnID4gc2FpZGFpXCA7Civnh7vokrggPiBrdW5qb3VcIDsKK+S6keS6kSA+IHVuJydudW5cIDsKK+mamemWkyA+IHN1a2ltYVwgOwor5pyA5aSWID4gc2FpZ2FpXCA7CivlqablvrMgPiBmdXRva3VcIDsKK+aatOaIuyA+IGJvdXJlaVwgOwor5pS56YCgID4ga2Fpem91XCA7CivlpKfomY4gPiBvb2RvcmFcIDsKK+mZtemnlSA+IHJ5b3VnYVwgOwor5aOy6LK3ID4gYmFpYmFpXCA7CivmlK/phY0gPiBzaGloYWlcIDsKK+S4puWtmCA+IGhlaXpvblwgOwor5Li45aSqID4gbWFydXRhXCA7CivmnZHkvJogPiBzb25rYWlcIDsKK+e+juW+syA+IGJpdG9rdVwgOwor5pyq5Y+OID4gbWlzaHV1XCA7CivkuIDlv5wgPiBpY2hpb3VcIDsKK+ipoOmAsiA+IGVpc2hpblwgOwor576k5bO2ID4gZ3VudG91XCA7CivoqpPoqIAgPiBzZWlnZW5cIDsKK+e+pOWzsCA+IGd1bnBvdVwgOwor5pyN5ZywID4gZnVrdWppXCA7CivorJ3npLwgPiBzaGFyZWlcIDsKK+S4gOW/gyA+IGlzc2hpblwgOwor5pyo5Y+iID4ga29tdXJhXCA7CivkuKHlrrYgPiByeW91a2VcIDsKK+S4gOW+syA+IGl0dG9rdVwgOwor5LqM5Lq6ID4gZnV0YXJpXCA7CivogIHlhbUgPiByb3VoZWlcIDsKK+eLguawlyA+IGt5b3VraVwgOwor5LiA5b6XID4gaXR0b2t1XCA7Civnt4/ploAgPiBzb3Vtb25cIDsKK+iAgeWFrCA+IHJvdWtvdVwgOwor54mH56uvID4ga2F0YXdhXCA7CivnjYTlsYsgPiBnb2t1eWFcIDsKK+ism+ekviA+IGtvdXNoYVwgOwor5LiA5b6AID4gaWNoaW91XCA7CivpoIzmoIQgPiBzaG91ZWlcIDsKK+eFjumkhSA+IHNlbmJlaVwgOwor5LiK5bivID4gdXdhb2JpXCA7Civpm5HouI8gPiB6YXR0b3VcIDsKK+abtOWniyA+IGtvdXNoaVwgOwor5paH6Je7ID4gYnVuc291XCA7CivkuIrluJ0gPiBqb3V0ZWlcIDsKK+iAgeWEqiA+IHJvdXl1dVwgOwor54ax6LObID4gbmVzc2FuXCA7CivmlZnorbcgPiBreW91Z29cIDsKK+S5s+WFkCA+IG55dXVqaVwgOwor5LiA5by1ID4gaXRjaG91XCA7CivkuIrlt7sgPiBqb3VrYW5cIDsKK+aatOaFoiA+IGJvdW1hblwgOwor5LiK5bezID4gam91c2hpXCA7CivnvqTlsYUgPiBndW5reW9cIDsKK+e6j+e2vyA+IHRlbm1lblwgOwor5aq+5ZCIID4ga291Z291XCA7CivogIHlg6cgPiByb3Vzb3VcIDsKK+S6ieS5sSA+IHNvdXJhblwgOwor54yb5oKqID4gbW91YWt1XCA7CivlpY/ogZ4gPiBzb3Vtb25cIDsKK+Wkp+iUtSA+IG9va3VyYVwgOwor5aSJ6KOFID4gaGVuc291XCA7CivkuIflt7sgPiBtYW5nYW5cIDsKK+mgk+aZuiA+IHRvbmNoaVwgOwor54uC5q2MID4ga3lvdWthXCA7Civml6XnqIsgPiBuaXR0ZWlcIDsKK+Wnpua3qyA+IGthbicnaW5cIDsKK+S4geW6piA+IGNob3Vkb1wgOwor5aSp6JOLID4gdGVuZ2FpXCA7CivmlZnoq60gPiBreW91eXVcIDsKK+eNheWtkCA+IHNoaXNoaVwgOwor5LiA5bqnID4gaWNoaXphXCA7CivkuK3lpK4gPiBjaHV1b3VcIDsKK+Wlj+iAhSA+IHNvdXNoYVwgOwor5LiB5bm0ID4gdGVpbmVuXCA7CivkuZflkIggPiBub3JpYWlcIDsKK+mfs+aomSA+IG9ucHlvdVwgOwor5pWj6KaLID4gc2Fua2VuXCA7CivkuZflj7cgPiBqb3Vnb3VcIDsKK+aatOaCqiA+IGJvdWFrdVwgOwor5pys5YidID4gaG9uc2hvXCA7CivpoqjlkJEgPiBmdXVrb3VcIDsKK+ipqei2oyA+IHNoaXNodVwgOwor5pys5YiGID4gaG9uYnVuXCA7CivmlZHorbcgPiBreXV1Z29cIDsKK+e4puimpyA+IGp1dXJhblwgOwor5LiA5bmFID4gaXBwdWt1XCA7CivogJDkuY8gPiB0YWlib3VcIDsKK+acjeWWqiA+IGZ1a3Vtb1wgOwor5pyo5YmjID4gYm9ra2VuXCA7CivnuKvoo70gPiBob3VzZWlcIDsKK+S4gOW4rSA+IGlzc2VraVwgOwor5aSn6JGsID4gdGFpc291XCA7CivlpKfokZcgPiB0YWljaG9cIDsKK+aTrOmdqSA+IGdpa2FrdVwgOwor5LiW5a2QID4gc2Vpc2hpXCA7Civoq5bogIUgPiByb25zaGFcIDsKK+irluiAgyA+IHJvbmtvdVwgOwor6Z+z5qW9ID4gb25nYWt1XCA7CivmnJflkJ8gPiByb3VnaW5cIDsKK+mbquimiyA+IHl1a2ltaVwgOwor54mp55SjID4gYnVzc2FuXCA7CivkubHlgKsgPiByYW5yaW5cIDsKK+mbsuihqCA+IHVucHlvdVwgOwor54mb55quID4gZ3l1dWhpXCA7CivkuIrlsaQgPiBqb3Vzb3VcIDsKK+mbo+iokyA+IG5hbmt1blwgOwor5Lmz5L6hID4gbnl1dWthXCA7CivkuI3lr6kgPiBmdXNoaW5cIDsKK+e/u+WAkiA+IGhvbnRvdVwgOwor6ICB5L2TID4gcm91dGFpXCA7Civpmbjpm6IgPiByaWt1cmlcIDsKK+aToemgrSA+IHRhaXRvdVwgOwor5aWH57+SID4ga2lzaHV1XCA7Civpm6Pop6MgPiBuYW5rYWlcIDsKK+aWree9qiA+IGRhbnphaVwgOwor6KiT6Zu7ID4ga3VuZGVuXCA7CivniaLnlaogPiByb3ViYW5cIDsKK+aZgua1gSA+IGppcnl1dVwgOwor5pas572qID4gemFuemFpXCA7Civml4XnsaAgPiBoYXRhZ29cIDsKK+aVouihjCA+IGthbmtvdVwgOwor6LWk44CFID4gYWthYWthXCA7CivmmbTmnJcgPiBzZWlyb3VcIDsKK+S4ieWwgSA+IHNhbnB1dVwgOwor54ax6KqgID4gbmVzc2VpXCA7CivkuInlr7ggPiBzYW56dW5cIDsKK+S4jeWtpiA+IGZ1Z2FrdVwgOwor5LiH5bCLID4gYmFuamluXCA7CivogIHkurogPiByb3VqaW5cIDsKK+eMtuWtkCA+IHl1dXNoaVwgOwor5pm05puHID4gc2VpZG9uXCA7CivkuIrlrpggPiBqb3VrYW5cIDsKK+S4ieWunSA+IHNhbnBvdVwgOwor6aKo5YmNID4gZnV1emVuXCA7CivpmaPpoqggPiBqaW5wdXVcIDsKK+eOhOWGrCA+IGdlbnRvdVwgOwor6ZuG6LKoID4gc2h1dWthXCA7CivnjoflhYggPiBzb3NzZW5cIDsKK+miqOWIuiA+IGZ1dXNoaVwgOwor6Zqn6YGTID4gc3VpZG91XCA7Civlo67oprMgPiBzb3VrYW5cIDsKK+acgOWWhCA+IHNhaXplblwgOwor572q5oKqID4gemFpYWt1XCA7CivkuIflrp0gPiBiYW5wb3VcIDsKK+aaluaIvyA+IGRhbmJvdVwgOwor5pWs6JmUID4ga2Vpa2VuXCA7CivpmqPpgqYgPiByaW5wb3VcIDsKK+S5seS6pCA+IHJhbmtvdVwgOwor6ICB5LitID4gcm91anV1XCA7CivmnKzkv7ggPiBob25wb3VcIDsKK+Wls+elniA+IG1lZ2FtaVwgOwor54qs5q2vID4ga2Vuc2hpXCA7CivpnZLnrYsgPiBhb3N1amlcIDsKK+iruOeoriA+IHNob3NodVwgOwor6Zmj6aCtID4gamludG91XCA7CivpoL3lu4MgPiB0YWloYWlcIDsKK+acieWQjSA+IHl1dW1laVwgOwor5pyL5Y+LID4gaG91eXV1XCA7CivmlofoirggPiBidW5nZWlcIDsKK+mZsOmZvSA+IG9uJyd5b3VcIDsKK+acieWPuCA+IHl1dXNoaVwgOwor5pyJ5Y+yID4geXV1c2hpXCA7CivoqbPoqJggPiBzaG91a2lcIDsKK+S4geWvpyA+IHRlaW5laVwgOwor5LiA5bCGID4gaXNzaG91XCA7CivkuIDlr74gPiBpdHRzdWlcIDsKK+e+qeWhviA+IGdpanVrdVwgOwor5LiA5a+4ID4gY2hvdHRvXCA7CivlpKfoiLkgPiBvb2J1bmVcIDsKK+mdkueruSA+IGFvZGFrZVwgOwor5LiA5a+pID4gaXNzaGluXCA7CivpnannoKUgPiBrYXdhdG9cIDsKK+mbkeiqjCA+IHphc3NoaVwgOwor54mH55y8ID4ga2F0YW1lXCA7Civmlq3nt5ogPiBkYW5zZW5cIDsKK+S5seS4liA+IHJhbnNlaVwgOwor54af6K2wID4ganVrdWdpXCA7CivkuJblpIkgPiBzZWloZW5cIDsKK+acrOS9kyA+IGhvbnRhaVwgOwor6aKo5YWJID4gZnV1a291XCA7CivkuLvlkb0gPiBzaHVtZWlcIDsKK+maoOmAuCA+IGluaXRzdVwgOwor5aSn6IejID4gZGFpamluXCA7Civnvo7lraYgPiBiaWdha3VcIDsKK+S4gOWulyA+IGlzc2h1dVwgOwor6Kmp6KuWID4gc2hpcm9uXCA7CivniYfnm64gPiBrYXRhbWVcIDsKK+aUv+irliA+IHNlaXJvblwgOwor5LiB5a2QID4gY2hvdWppXCA7CivnjoflgJIgPiBzb3R0b3VcIDsKK+acjeWLmSA+IGZ1a3VtdVwgOwor6Z2S56m6ID4gYW96b3JhXCA7CivmlL/oq4cgPiBzZWlkYW5cIDsKK+acieWNiiA+IHl1dWhhblwgOwor5LiA5a2XID4gaWNoaWppXCA7Civpm5HoqIAgPiB6b3Vnb25cIDsKK+e5i+iIuSA+IGtlaXNlblwgOwor5pys5Lu2ID4gaG9ua2VuXCA7CivmlL7oq4cgPiBob3VkYW5cIDsKK+S4u+WQmyA+IHNodWt1blwgOwor5Li45ZGzID4gbWFydW1pXCA7CivmnKzku6MgPiBob25kYWlcIDsKK+Wkp+iFvyA+IGRhaXRhaVwgOwor6Kmm6KuWID4gc2hpcm9uXCA7Civmmanmma8gPiBiYW5rZWlcIDsKK+S4i+WnkyA+IGdlc2hvdVwgOwor5aOu6KGMID4gc291a291XCA7CivlppnnjosgPiBteW91b3VcIDsKK+Wkp+iEsyA+IGRhaW5vdVwgOwor5peF56iLID4gcnlvdGVpXCA7CivlpYnntI0gPiBob3Vub3VcIDsKK+eGn+iqniA+IGp1a3Vnb1wgOwor6ZyK6IqdID4gcmVpc2hpXCA7CivmnInlirkgPiB5dXVrb3VcIDsKK+eLmeaSgyA+IHNvZ2VraVwgOwor5pyJ5YqfID4geXV1a291XCA7CivnjLblpKogPiB5dWRheWFcIDsKK+WknOiIuSA+IHlvZnVuZVwgOwor5pyq5LqGID4gbWlyeW91XCA7Civlp5PmsI8gPiBzZWlzaGlcIDsKK+S4iuWljyA+IGpvdXNvdVwgOwor5pS+6KiAID4gaG91Z2VuXCA7CivlpKfog4YgPiBkYWl0YW5cIDsKK+S4iuWkqSA+IGpvdXRlblwgOwor5pep55SjID4gc291emFuXCA7CivlpKfogqEgPiBvb21hdGFcIDsKK+acgOWNlyA+IHNhaW5hblwgOwor5aSp6IGeID4gdGVuYnVuXCA7CivoqLTov70gPiBzb3RzdWlcIDsKK+eMm+WwhCA+IG1vdXNoYVwgOwor6Kmg6KqmID4gZWlzaG91XCA7Civmmabml6UgPiBtaXNva2FcIDsKK+e5reezuCA+IGtlbnNoaVwgOwor5pS/6KaLID4gc2Vpa2VuXCA7CivnjJ/lraMgPiByeW91a2lcIDsKK+WmhOeUqCA+IGJvdXlvdVwgOwor5pu55Y+4ID4gc291c2hpXCA7CivoqJjpjLIgPiBraXJva3VcIDsKK+abuOWQjSA+IHNob21laVwgOwor5aSn6IGWID4gdGFpc2VpXCA7CivmnIjliIogPiBnZWtrYW5cIDsKK+S4h+WkqSA+IGJhbnRlblwgOwor5LiJ5aOrID4gc2Fuc2hpXCA7CivkuK3lkowgPiBjaHV1d2FcIDsKK+S4u+WLlSA+IHNodWRvdVwgOwor5pS56KiCID4ga2FpdGVpXCA7CivkuK3lkbMgPiBuYWthbWlcIDsKK+aXpeeUoyA+IG5pc3NhblwgOwor6Z2i55u4ID4gbWVuc291XCA7Civnvo7lppkgPiBiaW15b3VcIDsKK+ipleitsCA+IGh5b3VnaVwgOwor5pac57eaID4gc2hhc2VuXCA7CivlpKfogIEgPiB0YWlyb3VcIDsKK+aci+WFmiA+IGhvdXRvdVwgOwor6aKo5L2TID4gZnV1dGVpXCA7CivniZ3niZsgPiBtZXVzaGlcIDsKK+Wil+mFjSA+IHpvdWhhaVwgOwor6Z2i55qwID4gbWVuYm91XCA7CivkuYPlhawgPiBuYWlrb3VcIDsKK+mZo+mWgCA+IGppbm1vblwgOwor5piC54S2ID4ga291emVuXCA7CivkuIDlpbMgPiBpY2hpam9cIDsKK+S4iuWgtCA+IGpvdWpvdVwgOwor6ZmN6aCGID4ga291anVuXCA7CivlpKfnvqQgPiB0YWlndW5cIDsKK+mZoumVtyA+IGluY2hvdVwgOwor5Lit5Y+lID4gY2h1dWt1XCA7CivkuInloYEgPiBzYW5ydWlcIDsKK+acgOWJjSA+IHNhaXplblwgOwor6Zq76KqeID4gc2VraWdvXCA7Civmm4flpKkgPiBkb250ZW5cIDsKK+aciOWFiSA+IGdla2tvdVwgOwor6Kyd54q2ID4gc2hham91XCA7CivpnIrog70gPiByZWlub3VcIDsKK+S4u+WIkSA+IHNodWtlaVwgOwor57aa6ZaLID4gem9ra2FpXCA7Civlp7vml48gPiBpbnpva3VcIDsKK+S4ueWJjSA+IHRhbnplblwgOwor5aWJ562UID4gaG91dG91XCA7CivkuLjliaQgPiBnYW56YWlcIDsKK+Wkp+e9qiA+IGRhaXphaVwgOwor5LiA5aSiID4gaWNoaW11XCA7CivmnIDliJ0gPiBzYWlzaG9cIDsKK+S4gOWknCA+IGhpdG95b1wgOwor5LiA5aSVID4gaXNzZWtpXCA7CivkuIfloLQgPiBtYW5qb3VcIDsKK+iruOebuCA+IHNob3NvdVwgOwor6aGe5Z6LID4gcnVpa2VpXCA7CivlpYfnrZYgPiBraXNha3VcIDsKK+ipleiqniA+IGh5b3Vnb1wgOwor5ama5ae7ID4ga29uJydpblwgOwor5LiO5ZynID4geW9hdHN1XCA7CivnhpTop6MgPiB5b3VrYWlcIDsKK+ino+mhjCA+IGthaWRhaVwgOwor5aSa6IKJID4gdGFuaWt1XCA7CivkuI7lm70gPiB5b2tva3VcIDsKK+aUueijhSA+IGthaXNvdVwgOwor6Kmm6KGMID4gc2hpa291XCA7CivmmpfluZUgPiBhbm1ha3VcIDsKK+mahumBiyA+IHJ5dXV1blwgOwor5peL55ukID4gc2VuYmFuXCA7CivpmY3pnJwgPiBrb3Vzb3VcIDsKK+iqmOiHtCA+IHl1dWNoaVwgOwor5pqW5bivID4gZGFudGFpXCA7CivkuIvlm70gPiBnZWtva3VcIDsKK+aaq+WumiA+IHphbnRlaVwgOwor5pm65oWuID4gY2hpcnlvXCA7Civorabmo5IgPiBrZWlib3VcIDsKK+aWreeoriA+IGRhbnNodVwgOwor54us5b6AID4gZG9rdW91XCA7Civpn5zmmaYgPiB0b3VrYWlcIDsKK+aZi+abuCA+IHNoaW5qb1wgOwor54yf5aWHID4gcnlvdWtpXCA7CivkuInlm7IgPiBtaXRzdWlcIDsKK+WkluiBniA+IGdhaWJ1blwgOwor5LiJ5ZueID4gc2Fua2FpXCA7CivmnIjkv7ggPiBnZXBwb3VcIDsKK+eJuea0viA+IHRva3VoYVwgOwor5Li75YKsID4gc2h1c2FpXCA7CivkuLvlgpggPiBzaHVzYW5cIDsKK+mbgeihjCA+IGdhbmtvdVwgOwor5aSp57ayID4gdGVubW91XCA7CivpmbbphZQgPiB0b3VzdWlcIDsKK+abuOWGmSA+IHNob3NoYVwgOwor5paR57SLID4gaGFubW9uXCA7CivpoZXlnKggPiBrZW56YWlcIDsKK+acieS9kyA+IHl1dXRhaVwgOwor5aSn57axID4gdGFpa291XCA7Civlp6bmmbogPiBrYW5jaGlcIDsKK+eGj+ijvSA+IGt1bnNlaVwgOwor542E5ZCPID4gZ29rdXJpXCA7Civni6zluqcgPiBkb2t1emFcIDsKK+e3qeinoyA+IGthbmthaVwgOwor5LiJ5ZiGID4gc2FudGFuXCA7CivlpYnnpYAgPiBob3VzaGlcIDsKK+S4gOWbvSA+IGlra29rdVwgOwor5ai85a62ID4gc2hvdWthXCA7CivmmYPmm5wgPiBrb3V5b3VcIDsKK+eMn+WgtCA+IHJ5b3ViYVwgOwor6aCY5biDID4gcnlvdWZ1XCA7CivniYfniYcgPiBoZW5wZW5cIDsKK+S4gOWboCA+IGljaGlpblwgOwor6Zyn56ybID4gbXV0ZWtpXCA7CivpmbjpgYsgPiByaWt1dW5cIDsKK+acieS6uiA+IHl1dWppblwgOwor54Sh6ZeHID4gbXV5YW1pXCA7CivmmanmiJAgPiBiYW5zZWlcIDsKK+mbhOicgiA+IG9iYWNoaVwgOwor6Ziy6aKoID4gYm91ZnV1XCA7Civoqanol7sgPiBzaGlzb3VcIDsKK+Wkp+ezuyA+IHRhaWtlaVwgOwor57W56ZuyID4ga2VuJyd1blwgOwor54Wu6LGGID4gbmltYW1lXCA7CivnhpTono0gPiB5b3V5dXVcIDsKK+S4u+S9kyA+IHNodXRhaVwgOwor6KiT6YCjID4ga3VucmVuXCA7CivkuIflloQgPiBtYW56ZW5cIDsKK+WkqeexnyA+IHRlbnJhaVwgOwor5paH57O7ID4gYnVua2VpXCA7CivmnIDkvY4gPiBzYWl0ZWlcIDsKK+e5i+e0ryA+IGtlaXJ1aVwgOwor6Kqt57WMID4gZG9reW91XCA7CivnuYrntLAgPiBzZW5zYWlcIDsKK+aWveeZgiA+IHNlcnlvdVwgOwor5Li75Lu7ID4gc2h1bmluXCA7CivmlazogIEgPiBrZWlyb3VcIDsKK+mghuW9kyA+IGp1bnRvdVwgOwor6Zm96LuiID4geW91dGVuXCA7CivkuKHliIMgPiByeW91YmFcIDsKK+e1nummliA+IGtvdXNodVwgOwor5pel54S8ID4gaGl5YWtlXCA7CivkuIrlk4EgPiBqb3Vib25cIDsKK+aUvuiVqSA+IGhvdXRvdVwgOwor5Li75Lq6ID4gc2h1amluXCA7Civpoavli5UgPiBzZW5kb3VcIDsKK+mbhOiYgiA+IHl1dXp1aVwgOwor6Zi76ZqUID4gc29rYWt1XCA7Civpm6PoiLkgPiBuYW5zZW5cIDsKK+mahui1tyA+IHJ5dXVraVwgOwor6aCG5bu2ID4ganVuJydlblwgOwor6Zuj6IiqID4gbmFua291XCA7CivlqLzlqaYgPiBzaG91ZnVcIDsKK+WnlOabsiA+IGlreW9rdVwgOwor5Lit5YCkID4gbmFrYW5lXCA7CivlpYfnn68gPiBraWt5b3VcIDsKK+e3qeihjCA+IGthbmtvdVwgOwor5aSW57eaID4gZ2Fpc2VuXCA7Civlp7vmiJogPiBpbnNla2lcIDsKK+aYreaghCA+IHNob3VlaVwgOwor6aGe5ZCMID4gcnVpZG91XCA7CivoqqbntYwgPiB6dWt5b3VcIDsKK+aXqeeArCA+IGhheWFzZVwgOwor6Kme6Je7ID4gc2hpc291XCA7Civmm7jkvZMgPiBzaG90YWlcIDsKK+S4reS/nSA+IGNodXVob1wgOwor57eS6KuWID4gY2hvcm9uXCA7CivkuIrlkJEgPiBqb3Vrb3VcIDsKK+iou+iomCA+IGNodXVraVwgOwor5Li75LiKID4gc2h1am91XCA7CivmnIDkuK0gPiBtb25ha2FcIDsKK+S4iuWPuCA+IGpvdXNoaVwgOwor5ae/5oWLID4gc2hpdGFpXCA7Civpm5Hoj4wgPiB6YWtraW5cIDsKK+aWh+evhCA+IGJ1bnBhblwgOwor5paw55uGID4gbmlpYm9uXCA7Civlopfos4cgPiB6b3VzaGlcIDsKK+mbhOiViiA+IHl1dXp1aVwgOwor5pyA5LiKID4gbW9nYW1pXCA7CivlpKfnrYsgPiBvb3N1amlcIDsKK+WqkuS9kyA+IGJhaXRhaVwgOwor54iG56C0ID4gYmFrdWhhXCA7Civnt4/oq5YgPiBzb3Vyb25cIDsKK+S4gOWToSA+IGljaGlpblwgOwor5aSp56ulID4gdGVuZG91XCA7CivnjK7lkYggPiBrZW50ZWlcIDsKK+eLrOWxhSA+IGRva2t5b1wgOwor5ai85aaTID4gc2hvdWdpXCA7CivnibnmqKkgPiB0b2trZW5cIDsKK+ios+iqniA+IHlha3Vnb1wgOwor5aSW57SZID4gZ2Fpc2hpXCA7CivkuK3kvZAgPiBjaHV1c2FcIDsKK+S4h+WPoyA+IGJhbmtvdVwgOwor6ZuR6I2JID4gemFzc291XCA7CivkuIrljYogPiBqb3VoYW5cIDsKK+mZuOi3ryA+IHJpa3Vyb1wgOwor5aqS5LuLID4gYmFpa2FpXCA7CivlpKnnqbogPiB0ZW5rdXVcIDsKK+e3kuiogCA+IGNob2dlblwgOwor5pu05LujID4ga291dGFpXCA7CivoqLToqJ8gPiBzb3Nob3VcIDsKK+mcgOe1piA+IGp1a3l1dVwgOwor6aCt5aOwID4gdG91c2VpXCA7CivkuInljYMgPiBzYW56ZW5cIDsKK+S4ieWNgSA+IHNhbmp1dVwgOwor5pS56JGsID4ga2Fpc291XCA7CivkuI7lipsgPiB5b3Jpa2lcIDsKK+e1jOmokyA+IGtlaWtlblwgOwor5pep5ryPID4gc291cm91XCA7Civpm7vnt5ogPiBkZW5zZW5cIDsKK+Wkp+epuiA+IG9vem9yYVwgOwor5aSW57GzID4gZ2FpbWFpXCA7Civnt4/oqIggPiBzb3VrZWlcIDsKK+S4h+WNgyA+IGJhbnNlblwgOwor5aSp56ifID4gdGVucGluXCA7CivoqLPop6MgPiB5YWtrYWlcIDsKK+e5geewoSA+IGhhbmthblwgOwor5Lit5LqMID4gY2h1dW5pXCA7CivlpYfnmZYgPiBraWhla2lcIDsKK+aVj+iFlSA+IGJpbndhblwgOwor5aSp56ekID4gdGVuYmluXCA7CivntKLpurogPiBzb3VtZW5cIDsKK+e3j+impyA+IHNvdXJhblwgOwor576k5YOPID4gZ3Vuem91XCA7Civnt4/oposgPiBzb3VrZW5cIDsKK+e0oOm6uiA+IHNvdW1lblwgOwor5puZ5YWJID4gc2hva291XCA7CivmlZfogIUgPiBoYWlzaGFcIDsKK+WlrueEtiA+IGZ1bnplblwgOwor5LiH5YqrID4gbWFuZ291XCA7CivkuIrliY0gPiB1d2FtYWVcIDsKK+ioreioiCA+IHNla2tlaVwgOwor5pav55WMID4gc2hpa2FpXCA7CivmlrDnlKsgPiBzaGlucG9cIDsKK+mbhuiNtyA+IHNodXVrYVwgOwor6ZmE6YyyID4gZnVyb2t1XCA7CivmlZnnvqkgPiBreW91Z2lcIDsKK+mbjOiKsSA+IG1lYmFuYVwgOwor5aWH55eFID4ga2lieW91XCA7CivmmbTltZAgPiBzZWlyYW5cIDsKK+mdkueJqSA+IGFvbW9ub1wgOwor54mi5q27ID4gcm91c2hpXCA7CivnirbmhYsgPiBqb3V0YWlcIDsKK+WkqeelniA+IHRlbmppblwgOwor54S26L+EID4gc2FtYWRlXCA7CivpoYzlkI0gPiBkYWltZWlcIDsKK+S4gOWNhyA+IGlzc2hvdVwgOwor5aW95ryiID4ga291a2FuXCA7CivkuIDljLkgPiBpcHBpa2lcIDsKK+mhjOWPtyA+IGRhaWdvdVwgOwor5aSn56WtID4gdGFpc2FpXCA7CivkuInliIYgPiBzYW5wdW5cIDsKK+e+qeS+oCA+IGdpa3lvdVwgOwor54aP6JK4ID4ga3Vuam91XCA7Civpm7bntLAgPiByZWlzYWlcIDsKK+Wkp+ekviA+IHRhaXNoYVwgOwor5aSn56S8ID4gdGFpcmVpXCA7CivoqpPntJkgPiBzZWlzaGlcIDsKK+e3j+ijjyA+IHNvdXVyYVwgOwor54mp5qipID4gYnVra2VuXCA7CivlpJznqbogPiB5b3pvcmFcIDsKK+S4gOWLnSA+IGlzc2hvdVwgOwor5aOu6ICFID4gc291c2hhXCA7Civnt4/oo4EgPiBzb3VzYWlcIDsKK+eEoemHjyA+IG11cnlvdVwgOwor5LiJ5YasID4gc2FudG91XCA7CivkuIDliqkgPiBpY2hpam9cIDsKK+mbgOiNmCA+IGphbnNvdVwgOwor57eK6KSMID4ga2lua29uXCA7CivkuJbkv5cgPiBzZXpva3VcIDsKK+mgveWUkCA+IHRhaXRvdVwgOwor57im57eaID4ganV1c2VuXCA7CivniZvmrakgPiBneXV1aG9cIDsKK+S4h+WGhiA+IG1hbicnZW5cIDsKK+Wil+iogiA+IHpvdXRlaVwgOwor6aCG5a6IID4ganVuc2h1XCA7CivkuIflhaggPiBtYW56ZW5cIDsKK+S4gOWIuyA+IGlra29rdVwgOwor5pen5rS+ID4ga3l1dWhhXCA7CivnvoXljJcgPiByYWhva3VcIDsKK+mbque3miA+IHNlc3NlblwgOwor576k5L2TID4gZ3VudGFpXCA7CivkuIvlg5ogPiBrYXJ5b3VcIDsKK+e0sOmtmiA+IHNheW9yaVwgOwor5LiL5YOVID4gZ2Vib2t1XCA7CivkuIDliKkgPiBpY2hpcmlcIDsKK+Wkp+egsiA+IHRhaWhvdVwgOwor5pq05ZCbID4gYm91a3VuXCA7Civml6fms6IgPiBreXV1aGFcIDsKK+aVsOetiSA+IHN1dXRvdVwgOwor5aWz5rudID4gbWVkYWtpXCA7CivkuJbkvJ0gPiBzZWlkZW5cIDsKK+itpuaJiyA+IGtlaXNodVwgOwor6ZqP6KGMID4genVpa291XCA7Civmk43ou4ogPiBzb3VzaGFcIDsKK+WmguazlSA+IG55b2hvdVwgOwor5LiO5L+hID4geW9zaGluXCA7CivoqJjoqqYgPiBraXNob3VcIDsKK+mbt+euoSA+IHJhaWthblwgOwor5aSa56WlID4gdGFzaG91XCA7CivkuIDlhoYgPiBpY2hpZW5cIDsKK+S4gOWFtyA+IGljaGlndVwgOwor5LiN5L+hID4gZnVzaGluXCA7Civnt6jokZcgPiBoZW5jaG9cIDsKK+itpuaIkiA+IGtlaWthaVwgOwor5aGK6YmxID4ga2Fpa291XCA7CivniJvniJsgPiByYW5yYW5cIDsKK+aaluWcsCA+IGRhbmNoaVwgOwor57a46KiAID4gcmluZ2VuXCA7CivmlL7og4YgPiBob3V0YW5cIDsKK+iok+irrSA+IGt1bicneXVcIDsKK+aboOS4liA+IGtvdXNlaVwgOwor5aSp55y8ID4gdGVuZ2FuXCA7Civoqq3noLQgPiBkb2t1aGFcIDsKK+S4ieWAjSA+IHNhbmJhaVwgOwor6aGb5YCSID4gdGVudG91XCA7Civml4HngrkgPiBib3V0ZW5cIDsKK+ipqeiBliA+IHNoaXNlaVwgOwor54yb5YuHID4gbW91eXV1XCA7CivmlL7ogoYgPiBob3VzaGlcIDsKK+WlieeMriA+IGhvdWtlblwgOwor5LiA5YSAID4gaWNoaWdpXCA7CivntpnotbAgPiBrZWlzb3VcIDsKK+aXpeawuCA+IGhpbmFnYVwgOwor6aGe5L6LID4gcnVpcmVpXCA7CivoqJPoqqEgPiBrdW5rYWlcIDsKK+S4jeS9nCA+IGZ1c2FrdVwgOwor6KiA6LOqID4gZ2VuY2hpXCA7CivorLnmm7ggPiBraW5zaG9cIDsKK+e9suWQjSA+IHNob21laVwgOwor5piO5pyXID4gbWVpcm91XCA7CivkuIrkvosgPiBqb3VyZWlcIDsKK+mXmOm2jyA+IHRvdWtlaVwgOwor5aSp55uDID4gdGVucGFpXCA7CivkuIrkvb8gPiBqb3VzaGlcIDsKK+aYlOaZgiA+IHNla2lqaVwgOwor5pq05YuVID4gYm91ZG91XCA7CivloKTpmLIgPiB0ZWlib3VcIDsKK+iojuirliA+IHRvdXJvblwgOwor5pel5q+OID4gaGlnb3RvXCA7CivkuIrkvZMgPiBqb3V0YWlcIDsKK+S4jeS7siA+IGZ1bmFrYVwgOwor6Kqy55uuID4ga2Ftb2t1XCA7CivlpKfnm4MgPiB0YWloYWlcIDsKK+Wkp+eavyA+IG9vemFyYVwgOwor5LiJ5L2TID4gc2FudGFpXCA7Civmlofnm7IgPiBtb25tb3VcIDsKK+eGsee3miA+IG5lc3NlblwgOwor6aC95YuiID4gdGFpc2VpXCA7Civnhp/ogIMgPiBqdWtrb3VcIDsKK+WkieeoriA+IGhlbnNodVwgOwor5pat54mHID4gZGFucGVuXCA7CivnjJ/lhbcgPiByeW91Z3VcIDsKK+afkOOAhSA+IGJvdWJvdVwgOwor5aKT6KGoID4gYm9oeW91XCA7CivoqJPop6MgPiBrdW5rYWlcIDsKK+aYteaHhyA+IGppa2tvblwgOwor5aWz5rWBID4gam9yeXV1XCA7Civpn7PlrrkgPiBvbicneW91XCA7CivpmY3ou4ogPiBrb3VzaGFcIDsKK+mciuefpSA+IHJlaWNoaVwgOwor5aOw57SLID4gc2VpbW9uXCA7CivkuIrku6MgPiBqb3VkYWlcIDsKK+Wlh+eJuSA+IGtpZG9rdVwgOwor6aCY5ZyfID4gcnlvdWRvXCA7Civnvo7kv5cgPiBiaXpva3VcIDsKK+mghuWliSA+IGp1bnBvdVwgOwor5piT5patID4gZWtpZGFuXCA7CivkuInku6MgPiBzYW5kYWlcIDsKK+S4gOS/tSA+IGlwcHlvdVwgOwor57ax6KaBID4ga291eW91XCA7CivmlL7nva4gPiBob3VjaGlcIDsKK+mXh+m7kiA+IGFua29rdVwgOwor5LiN5LmZID4gZnVpdHN1XCA7CivnjK7kvZMgPiBrZW50YWlcIDsKK+e9quWQjSA+IHphaW1laVwgOwor5piP5piPID4ga29ua29uXCA7Civpm5HnuoIgPiB6YXNzYW5cIDsKK+WmmeahiCA+IG15b3VhblwgOwor5aWz5rOiID4gbWVuYW1pXCA7CivmmI7mmI4gPiBha2Fha2FcIDsKK+S4h+S7niA+IGJhbmppblwgOwor6Zui57GNID4gcmlzZWtpXCA7CivkuI3kuIAgPiBmdWl0c3VcIDsKK+aWmeeQhiA+IHJ5b3VyaVwgOwor5LiK5LmXID4gam91am91XCA7CivmmpfllLEgPiBhbnNob3VcIDsKK+S4ieS5lyA+IHNhbmpvdVwgOwor5piO5patID4gbWVpZGFuXCA7CivntLrpnZIgPiBrb25qb3VcIDsKK+aVrOekvCA+IGtlaXJlaVwgOwor6Zu356WeID4gcmFpamluXCA7Civpmbboo70gPiB0b3VzZWlcIDsKK+S4iuS4liA+IGpvdXNlaVwgOwor5LiK5LiKID4gam91am91XCA7CivmmI7mlocgPiBtZWlidW5cIDsKK+aZtOWkqSA+IHNlaXRlblwgOwor5LiH5LmXID4gYmFuam91XCA7Civoqr/nkIYgPiBjaG91cmlcIDsKK+aWreeEtiA+IGRhbnplblwgOwor5aSp55SjID4gdGVuc2FuXCA7CivlpKnnlJ8gPiB0ZW5zZWlcIDsKK+aZqeWpmiA+IGJhbmtvblwgOwor5piO5pWPID4gbWVpYmluXCA7CivpoZjkuLsgPiBnYW5zaHVcIDsKK+eJiOaoqSA+IGhhbmtlblwgOwor54OI6aKoID4gcmVwcHV1XCA7CivntYTplqMgPiBzb2tha3VcIDsKK+S4h+S4iCA+IGJhbmpvdVwgOwor5LiH5LiHID4gbWFubWFuXCA7CivoqIDoq5YgPiBnZW5yb25cIDsKK+mZuOihjCA+IHJpa2tvdVwgOwor5aSn55SfID4gZGFpc2VpXCA7Civpm4DnvoUgPiBqYWt1cmFcIDsKK+S4geS6pSA+IHRlaWdhaVwgOwor6K2w5bitID4gZ2lzZWtpXCA7Civnvo7kuosgPiBtaWdvdG9cIDsKK+WnkeaBryA+IGtvc29rdVwgOwor57mB55ubID4gaGFuam91XCA7CivkuIDkurogPiBoaXRvcmlcIDsKK+aUvue4piA+IGhvdWp1dVwgOwor6KuW54K5ID4gcm9udGVuXCA7Civoqannt6ggPiBzaGloZW5cIDsKK+eMruS4iiA+IGtlbmpvdVwgOwor5pel5qeYID4gaGlzYW1hXCA7CivpmaroprMgPiBiYWlrYW5cIDsKK+S4gOS6jCA+IGljaGluaVwgOwor5LiA5LqLID4gaWNoaWppXCA7CivntKDpppYgPiBzb2t1YmlcIDsKK+eIm+a8qyA+IHJhbm1hblwgOwor6ZeY6a2CID4gdG91a29uXCA7CivnibnmjqogPiB0b2t1c29cIDsKK+aUv+e2sSA+IHNlaWtvdVwgOwor6Kmm57e0ID4gc2hpcmVuXCA7Civoqofnp7AgPiBrb3Nob3VcIDsKK+WlieeBryA+IGhvdXRvdVwgOwor6KiA6KizID4gaWl3YWtlXCA7Civln7nppIogPiBiYWl5b3VcIDsKK+aUr+e9siA+IHNoaXNob1wgOwor5LiB5LiBID4gdG91dG91XCA7Civoq7jmsI8gPiBzaG9zaGlcIDsKK+iogOiogCA+IGdlbmdlblwgOwor5LiA5LiBID4gaXRjaG91XCA7Civnt4/oj5wgPiBzb3V6YWlcIDsKK+aUv+e1jCA+IHNlaWtlaVwgOwor5aSa55eFID4gdGFieW91XCA7Civpm7bnoJUgPiByZWlzYWlcIDsKK+aSpOmAgCA+IHRldHRhaVwgOwor6KaL6aCDID4gbWlnb3JvXCA7CivmlLnnt6ggPiBrYWloZW5cIDsKK+eEoeizgyA+IG11Y2hpblwgOwor6KiI6KOFID4ga2Vpc291XCA7Civpm4Tnt6ggPiB5dXVoZW5cIDsKK+aVmeenkSA+IGt5b3VrYVwgOwor57ac6KanID4gc291cmFuXCA7CivpnIrnlYwgPiByZWlrYWlcIDsKK+aZuuWaoiA+IGNoaW5vdVwgOwor57iB57WEID4gZW5ndW1pXCA7CivlpJrnlJ8gPiB0YXNob3VcIDsKK+ism+abuCA+IGtvdXNob1wgOwor57Sr6Zu7ID4gc2hpZGVuXCA7CivpnZnmraIgPiBzZWlzaGlcIDsKK+eJueaKgCA+IHRva3VnaVwgOwor54us5ZKMID4gZG9rdXdhXCA7CivmlZnnpZYgPiBreW91c29cIDsKK+aVmeekuiA+IGt5b3VqaVwgOwor5aCF6ZmjID4ga2VuamluXCA7Civoqo3nn6UgPiBuaW5jaGlcIDsKK+eLguWlsyA+IGt5b3Vqb1wgOwor5aSW55SoID4gZ2FpeW91XCA7CivnianmkI0gPiBidXNzb25cIDsKK+imgemghSA+IHlvdWtvdVwgOwor6KaB6aCCID4geW91a291XCA7CivngrnpoK0gPiB0ZW50b3VcIDsKK+aUr+e3miA+IHNoaXNlblwgOwor572w5L+4ID4gYmFwcG91XCA7CivmlofnjK4gPiBidW5rZW5cIDsKK+ipqeevhyA+IHNoaWhlblwgOwor5pel5p+EID4gaGlnYXJhXCA7Civlp4nlvJ8gPiBzaGltYWlcIDsKK+e4geexjSA+IGVuc2VraVwgOwor6Zui56SBID4gcmlzaG91XCA7Civpn7Pln58gPiBvbicnaWtpXCA7CivoqIDooYwgPiBnZW5rb3VcIDsKK+inkui3nSA+IGtha2t5b1wgOwor5aCx6YGTID4gaG91ZG91XCA7Civmlrnms5UgPiBob3Vob3VcIDsKK+aXreaaiSA+IGt5b2traVwgOwor57W26LObID4gemVzc2FuXCA7CivlpoLmnaUgPiBueW9yYWlcIDsKK+Wkp+eJqSA+IG9vbW9ub1wgOwor5piC5o+aID4ga291eW91XCA7CivpnLLmu7QgPiByb3Rla2lcIDsKK+e2muihjCA+IHpva2tvdVwgOwor6Kmm566XID4gc2hpc2FuXCA7Civoq6vmrbsgPiBrYW5zaGlcIDsKK+mZjeiqlSA+IGtvdXRhblwgOwor54mI5pysID4gaGFucG9uXCA7Civoq6vmraIgPiBrYW5zaGlcIDsKK+aaluWGrCA+IGRhbnRvdVwgOwor6Zu755WqID4gZGVuYmFuXCA7Civpm7vnlYwgPiBkZW5rYWlcIDsKK+iumuWYhiA+IHNhbnRhblwgOwor5pep5pmpID4gc291YmFuXCA7CivpnIrnjaMgPiByZWlqdXVcIDsKK+e3qOe6giA+IGhlbnNhblwgOwor5pmC5a6XID4gamlzaHV1XCA7CivmlrDmtL4gPiBzaGlucGFcIDsKK+aXreaXlyA+IGt5b2traVwgOwor6ZuE56+HID4geXV1aGVuXCA7Civpm5HnqK4gPiB6YXNzaHVcIDsKK+e0memdoiA+IHNoaW1lblwgOwor5aWP5rOVID4gc291aG91XCA7CivlpLHngasgPiBzaGlra2FcIDsKK+aWkeeCuSA+IGhhbnRlblwgOwor6Zuq55uuID4geXVraW1lXCA7Civlpb3mnJsgPiBrb3Vib3VcIDsKK+aXp+aZgiA+IGt5dXVqaVwgOwor6KqV55SfID4gdGFuam91XCA7CivmmLzlr50gPiBoaXJ1bmVcIDsKK+aTjeihjCA+IHNvdWtvdVwgOwor54m55oG1ID4gdG9ra2VpXCA7CivmmLzlr5AgPiBoaXJ1bmVcIDsKK+eFmeiNiSA+IHRhYmFrb1wgOwor6Kmp56i/ID4gc2hpa291XCA7CivorablrpggPiBrZWlrYW5cIDsKK+e1tuiugyA+IHplc3NhblwgOwor5pa55q2jID4gaG91c2VpXCA7Civoq5bms5UgPiByb25wb3VcIDsKK+eIm+atuyA+IHJhbnNoaVwgOwor5pW1546LID4gdGVraW91XCA7CivpnoXmjowgPiBvdXNob3VcIDsKK+ishOacrCA+IHRvdWhvblwgOwor5pS556uEID4ga2FpemFuXCA7CivlpoTmlq0gPiBtb3VkYW5cIDsKK+eJueW/qyA+IHRva2thaVwgOwor5aSp54G9ID4gdGVuc2FpXCA7CivpnZLmpbwgPiBzZWlyb3VcIDsKK+mZhOiolyA+IGZ1dGFrdVwgOwor5pen5pWFID4ga3l1dWtvXCA7Civnib3lvJUgPiBrZW4nJ2luXCA7Civmma/lk4EgPiBrZWloaW5cIDsKK+aXpeaVsCA+IGhpa2F6dVwgOwor54mI5pWwID4gaGFuc3V1XCA7Civmlq3msLQgPiBkYW5zdWlcIDsKK+e1puiyuyA+IGt5dXVoaVwgOwor54em54S2ID4gc2FuemVuXCA7CivlppnmioAgPiBteW91Z2lcIDsKK+e0hemhlCA+IGtvdWdhblwgOwor5aa75bivID4gc2FpdGFpXCA7Civpm4Xnp7AgPiBnYXNob3VcIDsKK+WogeWWnSA+IGlrYXRzdVwgOwor6aCR5YalID4gZ2FubWVpXCA7Civoqq3ngrkgPiB0b3V0ZW5cIDsKK+eFjuiMtiA+IHNlbmNoYVwgOwor5piO5b+rID4gbWVpa2FpXCA7Civlpqzlv4MgPiB0b3NoaW5cIDsKK+aZuuWLhyA+IGNoaXl1dVwgOwor6K2r5aaEID4gc2VubW91XCA7CivmmbbljJYgPiBzaG91a2FcIDsKK+aVtOeJiCA+IHNlaWhhblwgOwor6Zu3542jID4gcmFpanV1XCA7CivpnZLmoZAgPiBhb2dpcmlcIDsKK+Wkp+a9riA+IG9vc2hpb1wgOwor5pmu5Y+KID4gZnVreXV1XCA7Civni4LllpwgPiBreW91a2lcIDsKK+Wkqea8oiA+IHRlbmthblwgOwor6Zm26Iq4ID4gdG91Z2VpXCA7Civml5fml6UgPiBoYXRhYmlcIDsKK+mdkuafsyA+IGFveWFnaVwgOwor6Kit572uID4gc2V0Y2hpXCA7CivnianmgKcgPiBidXNzZWlcIDsKK+mZhOihqCA+IGZ1aHlvdVwgOwor6Zuj55SjID4gbmFuemFuXCA7CivorpLlj6MgPiB6YW5rb3VcIDsKK+S7iuOAhSA+IGltYWltYVwgOwor6aCR5YGlID4gZ2Fua2VuXCA7CivmmpfkuK0gPiBhbmNodXVcIDsKK+itt+WbvSA+IGdva29rdVwgOwor5pi85aScID4gY2h1dXlhXCA7CivoqIDokYkgPiBrb3RvYmFcIDsKK+imqui6qyA+IHNoaW5taVwgOwor5pW054S2ID4gc2VpemVuXCA7CivntKHpjJggPiBib3VzdWlcIDsKK+irjOatoiA+IGthbnNoaVwgOwor5aSW54GvID4gZ2FpdG91XCA7CivlpoTmjJkgPiBib3VreW9cIDsKK+e4geefsyA+IGVuc2VraVwgOwor5Z+86YqAID4gc2FpZ2luXCA7CivplpPptKggPiBhaWdhbW9cIDsKK+mcp+awtyA+IG11aHlvdVwgOwor5pSv56S+ID4gc2hpc2hhXCA7CivpnZLmm7ggPiBzZWlzaG9cIDsKK+aYpeWtoyA+IHNodW5raVwgOwor5pWZ55CGID4ga3lvdXJpXCA7Civoq7jmlrkgPiBzaG9ob3VcIDsKK+Wil+e9riA+IHpvdWNoaVwgOwor5aSp5ravID4gdGVuZ2FpXCA7CivoqZDnp7AgPiBzYXNob3VcIDsKK+aRgumWoiA+IHNla2thblwgOwor6K2m5aCxID4ga2VpaG91XCA7Civntr7nvoUgPiByeW91cmFcIDsKK+e3j+e1sSA+IHNvdXRvdVwgOwor6aCY5LqLID4gcnlvdWppXCA7Civni4Llj6UgPiBreW91a3VcIDsKK+WmluaAqiA+IHlvdWthaVwgOwor5pWZ546LID4ga3lvdW91XCA7Civoq7jmlL8gPiBzaG9zZWlcIDsKK+aWveadoSA+IHNoaWpvdVwgOwor6Zmz6IWQID4gY2hpbnB1XCA7CivlpKfmtbcgPiB0YWlrYWlcIDsKK+WnieWmuSA+IHNoaW1haVwgOwor5aCx6KydID4gaG91c2hhXCA7CivlprvlrZAgPiBzYWlzaGlcIDsKK+eLrOS5mSA+IGRvaXRzdVwgOwor54Wp57SvID4gaGFucnVpXCA7CivniYfmiYsgPiBrYXRhdGVcIDsKK+mbu+eBryA+IGRlbnRvdVwgOwor54mH5oi4ID4ga2F0YWRvXCA7CivlpKfmtIsgPiB0YWl5b3VcIDsKK+Wnv+WLoiA+IHNoaXNlaVwgOwor6KeS6KGMID4ga2Fra291XCA7CivlqIHlipsgPiBpcnlva3VcIDsKK+WlveaKlSA+IGtvdXRvdVwgOwor5paR5rCXID4gbXVyYWtpXCA7CivmlabnhYwgPiB0b25rb3VcIDsKK+mbqueJhyA+IHNlcHBlblwgOwor5aSn5rOiID4gb29uYW1pXCA7CivlpInngb0gPiBoZW5zYWlcIDsKK+Wkp+azlSA+IHRhaWhvdVwgOwor6Zu254K5ID4gcmVpdGVuXCA7Civlpb3miYsgPiBrb3VzaHVcIDsKK+aZqeWGrCA+IGJhbnRvdVwgOwor5aW95oimID4ga291c2VuXCA7Civmlq3moYggPiBkYW4nJ2FuXCA7Civmlofms5UgPiBidW5wb3VcIDsKK+WkqeawtCA+IHRlbnN1aVwgOwor6aCR5LiIID4gZ2Fuam91XCA7CivlpJbmua8gPiBzb3RveXVcIDsKK+aWh+ayuyA+IGJ1bmNoaVwgOwor5pWi54S2ID4ga2FuemVuXCA7CivmmablhqUgPiBrYWltZWlcIDsKK+aVmeeItiA+IGt5b3VmdVwgOwor5aaE5oOzID4gbW91c291XCA7CivntJTpioAgPiBqdW5naW5cIDsKK+WkreatuyA+IHlvdXNoaVwgOwor5pS/55WMID4gc2Vpa2FpXCA7CivlpKfmsLQgPiBvb21penVcIDsKK+e2v+e2vyA+IG1lbm1lblwgOwor5aSW5rivID4gZ2Fpa291XCA7Civoqqzms5UgPiBzZXBwb3VcIDsKK+imi+i+vCA+IG1pa29taVwgOwor6Kiq57GzID4gaG91YmVpXCA7CivoqabnlKggPiBzaGl5b3VcIDsKK+e0sOi6qyA+IGhvc29taVwgOwor5Z+O6ZaAID4gam91bW9uXCA7CivmlofmsJEgPiBidW5taW5cIDsKK+eCremJsSA+IHRhbmtvdVwgOwor5pen5oGpID4ga3l1dW9uXCA7Civntr/ntKEgPiBtZW5ib3VcIDsKK+WlveaEnyA+IGtvdWthblwgOwor57SU6YeRID4ganVua2luXCA7Civopb/pg4ogPiBzZWlrb3VcIDsKK+WknOaziiA+IHlhaGFrdVwgOwor5pa95pS/ID4gc2hpc2VpXCA7Civml6fmgKggPiBreXV1ZW5cIDsKK+aWueaWuSA+IGhvdWJvdVwgOwor57a/57O4ID4gbWVuc2hpXCA7Civml6jlv7UgPiBzaGluZW5cIDsKK+aTjeiIuSA+IHNvdXNlblwgOwor5aao5a6zID4gYm91Z2FpXCA7CivpnIrms4kgPiByZWlzZW5cIDsKK+e2vuezuCA+IGF5YWl0b1wgOwor6Zu75rqQID4gZGVuZ2VuXCA7CivlpoTlv7UgPiBtb3VuZW5cIDsKK+eKtuWLoiA+IGpvdXNlaVwgOwor5aeU5ZixID4gaXNob2t1XCA7CivnuYrmr5sgPiBzZW5tb3VcIDsKK+mWoumgrSA+IGthbnRvdVwgOwor5aWJ5pu4ID4gaG91c2hvXCA7CivlpJbmtIsgPiBnYWl5b3VcIDsKK+ilv+mBiiA+IHNlaXl1dVwgOwor57mU5qmfID4gc2hva2tpXCA7Civlpa7miKYgPiBmdW5zZW5cIDsKK+ism+W4qyA+IGtvdXNoaVwgOwor6ZyK5rC0ID4gcmVpc3VpXCA7Civngq3phbggPiB0YW5zYW5cIDsKK+WllOaUviA+IGhvbnBvdVwgOwor57SN6YeRID4gbm91a2luXCA7Civmma/ku7AgPiBrZWlrb3VcIDsKK+e0jemHhyA+IG5vdXNhaVwgOwor5paD5q27ID4gaGVpc2hpXCA7CivoprPopqcgPiBrYW5yYW5cIDsKK+iruOaJiyA+IG1vcm90ZVwgOwor6Z+z5L+hID4gb25zaGluXCA7Civns5bpoZ4gPiB0b3VydWlcIDsKK+eyvumtgiA+IHNlaWtvblwgOwor6KiT57e0ID4ga3VucmVuXCA7Civln7rou7ggPiBraWppa3VcIDsKK+mbo+eCuSA+IG5hbnRlblwgOwor5aSc5q+OID4geW9nb3RvXCA7Civml6XlvbEgPiBoaWthZ2VcIDsKK+aVo+a8qyA+IHNhbm1hblwgOwor57ep55uuID4geXVydW1lXCA7CivniYflvbEgPiBoZW4nJ2VpXCA7Civngb3pm6MgPiBzYWluYW5cIDsKK+WmhOW8gSA+IGJvdWJlblwgOwor6ZyK5q6/ID4gcmVpZGVuXCA7Civml6LlvpcgPiBraXRva3VcIDsKK+Wkp+aoqSA+IHRhaWtlblwgOwor6KuW5peoID4gcm9uc2hpXCA7Civnsr7pq4QgPiBzZWl6dWlcIDsKK+aWr+aWhyA+IHNoaWJ1blwgOwor5Z+06LyqID4gaGFuaXdhXCA7Civoq5bmlq0gPiByb25kYW5cIDsKK+irluaWhyA+IHJvbmJ1blwgOwor54WZ566hID4ga2lzZXJ1XCA7CivniL3lv6sgPiBzb3VrYWlcIDsKK+mZjeiHqCA+IGtvdXJpblwgOwor5aSn5qaCID4gdGFpZ2FpXCA7Civoqr/mn7sgPiBjaG91c2FcIDsKK+mdmeaFiyA+IHNlaXRhaVwgOwor6ZuM54mbID4gbWV1c2hpXCA7Civnt6Dnm58gPiB0ZWltZWlcIDsKK+mWi+mkqCA+IGthaWthblwgOwor6Kqy5qWtID4ga2FneW91XCA7CivnhKHoh60gPiBtdXNodXVcIDsKK+WkieazlSA+IGhlbnBvdVwgOwor6Z2x5bivID4gamludGFpXCA7CivmmI7lpKcgPiBtZWlkYWlcIDsKK+eJn+WtkCA+IGJvdXNoaVwgOwor6Zu75rGgID4gZGVuY2hpXCA7CivplonppKggPiBoZWlrYW5cIDsKK+iruOaCqiA+IHNob2FrdVwgOwor5pif5ZujID4gc2VpZGFuXCA7Civlo4HnlLsgPiBoZWtpZ2FcIDsKK+Wnk+WQjSA+IHNlaW1laVwgOwor57Sg6LazID4gc3Vhc2hpXCA7CivmlbXmrakgPiB0ZWtpZnVcIDsKK+mbqua4kyA+IHNla2tlaVwgOwor6ZuE54qsID4gb3N1aW51XCA7Civpna3luK8gPiBqaW50YWlcIDsKK+Wil+eojiA+IHpvdXplaVwgOwor5pmC5Yi7ID4gamlrb2t1XCA7Civlor7nlLAgPiBrb25kZW5cIDsKK+aUueeJiCA+IGthaWhhblwgOwor54i25b6hID4gdGV0ZWdvXCA7CivplqLploAgPiBrYW5tb25cIDsKK+e0sOisuSA+IHNhaWtpblwgOwor5aGK6IyOID4ga2Fpa2VpXCA7CivpmpXnn7MgPiBpbnNla2lcIDsKK+aYreWSjCA+IHNob3V3YVwgOwor5aSn5qC5ID4gZGFpa29uXCA7CivmlpHmnaEgPiBoYW5qb3VcIDsKK+mWkemdmSA+IGthbnNlaVwgOwor6ZaR6Z2WID4ga2Fuc2VpXCA7CivpnZnmgJ0gPiBzZWlzaGlcIDsKK+aXseWusyA+IGthbmdhaVwgOwor6ZuR54KKID4gem91c3VpXCA7CivlpJzmpa0gPiB5YWd5b3VcIDsKK+iomOeroCA+IGtpc2hvdVwgOwor5piC5aWuID4ga291ZnVuXCA7CivntLDoq5YgPiBzYWlyb25cIDsKK+ippueFiSA+IHNoaXJlblwgOwor54mn5aSrID4gYm9rdWZ1XCA7CivmlofmoYggPiBidW4nJ2FuXCA7Civml4Xmg4UgPiByeW9qb3VcIDsKK+S6keOAhSA+IHVuJydudW5cIDsKK+WkieatuyA+IGhlbnNoaVwgOwor6Zuj5riLID4gbmFuanV1XCA7CivlpJbmp5ggPiB0b3phbWFcIDsKK+Wkp+afhCA+IG9vZ2FyYVwgOwor6Ku45b2mID4gc2hvZ2VuXCA7CivplpPpmpsgPiBtYWdpd2FcIDsKK+WkqeadryA+IHRlbnBhaVwgOwor5aSp5p2lID4gdGVucmFpXCA7CivlpKfmnpogPiB0YWltYWlcIDsKK+eEoeiBiiA+IGJ1cnlvdVwgOwor6ZW36aeGID4gY2hvdWt1XCA7Civlp4vljp8gPiBzaGlnZW5cIDsKK+aVo+awtCA+IHNhbnN1aVwgOwor5aSn5p2vID4gdGFpaGFpXCA7Civpm7Lmr40gPiBraXJhcmFcIDsKK+aXqeWvnSA+IGhheWFuZVwgOwor6KW/6LKiID4gc2FpZ29uXCA7CivmlZnmtL4gPiBreW91aGFcIDsKK+aTjee4piA+IHNvdWp1dVwgOwor57eP55ujID4gc291a2FuXCA7CivlpKfmnKwgPiB0YWlob25cIDsKK+eGsea5ryA+IG5ldHRvdVwgOwor5aSn5pybID4gdGFpbW91XCA7Civoq5bmi6AgPiByb25reW9cIDsKK+aXpeWwhCA+IG5pc3NoYVwgOwor57Sv6KiIID4gcnVpa2VpXCA7CivoqLvnlo8gPiBjaHV1c29cIDsKK+WlieaLnSA+IGhvdWhhaVwgOwor5aSn5pu4ID4gdGFpc2hvXCA7Civml6flrrYgPiBreXV1a2FcIDsKK+eJp+WgtCA+IG1ha2liYVwgOwor6KiI566XID4ga2Vpc2FuXCA7Civml4vlu7sgPiBzZW5rYWlcIDsKK+mZpOexjSA+IGpvc2VraVwgOwor5aeL5YuVID4gc2hpZG91XCA7CivntLDoposgPiBzYWlrZW5cIDsKK+e5iuadoSA+IHNlbmpvdVwgOwor57O46YGKID4gaXRveXV1XCA7Civml6flrZcgPiBreXV1amlcIDsKK+Wkp+aakSA+IHRhaXNob1wgOwor6Zuj5rK7ID4gbmFuY2hpXCA7Civloqjnl5UgPiBib2trb25cIDsKK+eFmeehnSA+IGVuc2hvdVwgOwor6Zai6Y21ID4ga2Fua2VuXCA7Civoq5bmiKYgPiByb25zZW5cIDsKK+eyvumciiA+IHNlaXJlaVwgOwor5pel5a2QID4gbmlzc2hpXCA7CivlpYnmiLQgPiBob3V0YWlcIDsKK+WkqeaYjiA+IHRlbm1laVwgOwor5Z+66Kq/ID4ga2ljaG91XCA7CivnuYHmoIQgPiBoYW4nJ2VpXCA7CivlopPnn7MgPiBib3Nla2lcIDsKK+imi+inoyA+IGtlbmthaVwgOwor5pS+5ryrID4gaG91bWFuXCA7Civlpb3lroggPiBrb3VzaHVcIDsKK+mbjOa7nSA+IG1lZGFraVwgOwor5aem5Lq6ID4ga2FuamluXCA7CivloqjnlLsgPiBib2t1Z2FcIDsKK+mbo+awkSA+IG5hbm1pblwgOwor5pep5amaID4gc291a29uXCA7CivntKDoqq0gPiBzb2Rva3VcIDsKK+imgeirpiA+IHlvdXRlaVwgOwor5aSp5paHID4gdGVubW9uXCA7CivlpKfmlrkgPiBvb2thdGFcIDsKK+imgeiriyA+IHlvdXNlaVwgOwor5pSv54K5ID4gc2hpdGVuXCA7CivopoHoq4cgPiB5b3VkYW5cIDsKK+aWh+aYjiA+IGJ1bm1laVwgOwor6Z2S5bm0ID4gc2VpbmVuXCA7CivplovplokgPiBrYWloZWlcIDsKK+iqnuagvCA+IGdva2FrdVwgOwor6ZW36Z+zID4gY2hvdW9uXCA7Civml6flqaYgPiBreXV1ZnVcIDsKK+mWi+mWgCA+IGthaW1vblwgOwor5pex5aSpID4ga2FudGVuXCA7CivmkKzpgIEgPiBoYW5zb3VcIDsKK+mej+WbuiA+IGt5b3Vrb1wgOwor5paH5pemID4gYnVudGFuXCA7CivorLnllZMgPiBraW5rZWlcIDsKK+e3tOeCrSA+IHJlbnRhblwgOwor5aSn5pWwID4gdGFpc3V1XCA7Civop6PnupwgPiBrYWlyYW5cIDsKK+mWiemWgCA+IGhlaW1vblwgOwor6K2w5LqGID4gZ2lyeW91XCA7CivlpaXlt54gPiBvdXNodXVcIDsKK+aVl+auiyA+IGhhaXphblwgOwor5aKX55uKID4gem91ZWtpXCA7CivlpKfmlZcgPiB0YWloYWlcIDsKK+ism+WjhyA+IGtvdWRhblwgOwor5aSW5p2lID4gZ2FpcmFpXCA7Civpl4fot68gPiB5YW1pamlcIDsKK+iruOWztiA+IHNob3RvdVwgOwor5aSW5p2QID4gZ2FpemFpXCA7CivlpKfmlL8gPiB0YWlzZWlcIDsKK+Wls+WwhiA+IGpvc2hvdVwgOwor6ZaA6ZmiID4gbW9uJydpblwgOwor57SN6LGGID4gbmF0dG91XCA7CivploDpmZAgPiBtb25nZW5cIDsKK+aWueW9oiA+IGhvdWtlaVwgOwor6Zml56m9ID4ga2Fuc2VpXCA7CivpnIrmmbogPiByZWljaGlcIDsKK+aWh+aUvyA+IGJ1bnNlaVwgOwor5aWz5a6YID4gbnlva2FuXCA7CivmkK3ovIkgPiB0b3VzYWlcIDsKK+eEoee1piA+IG11a3l1dVwgOwor5pep5aSpID4gc291dGVuXCA7Civml6nlpKcgPiBzb3VkYWlcIDsKK+ism+WggiA+IGtvdWRvdVwgOwor6KaB6KanID4geW91cmFuXCA7CivpnZLltZAgPiBzZWlyYW5cIDsKK+mbm+autSA+IHN1dWRhblwgOwor6Z2i5a2QID4gbWVudHN1XCA7CivorLnlkYggPiBraW50ZWlcIDsKK+aVsOaemiA+IHN1dW1haVwgOwor6Zuo5qiLID4gYW1hZG9pXCA7Civml6flpKsgPiBreXV1ZnVcIDsKK+aXp+WkoiA+IGt5dXVtdVwgOwor6ZuE5ri+ID4geXV1a29uXCA7CivnuYHmmIwgPiBoYW5qb3VcIDsKK+aUvua1qiA+IGhvdXJvdVwgOwor57aa56i/ID4gem9ra291XCA7Civpm5HmspMgPiB6YXR0b3VcIDsKK+ikh+mfsyA+IGZ1a3VvblwgOwor5piO5ZCbID4gbWVpa3VuXCA7Civml6zloLEgPiBqdW5wb3VcIDsKK+mZuuebuCA+IGtlbnNvdVwgOwor54Sh57K+ID4gYnVzaG91XCA7CivorabkuZcgPiBrZWlqb3VcIDsKK+isueWOsyA+IGtpbmdlblwgOwor54S256iLID4gc2Fob2RvXCA7Civnibnli5kgPiB0b2t1bXVcIDsKK+eJqeWTgSA+IGJ1cHBpblwgOwor6K2m5LiWID4ga2Vpc2VpXCA7CivlopfnlKMgPiB6b3VzYW5cIDsKK+aQjemHkSA+IHNvbmtpblwgOwor6Z2S5bGxID4gc2VpemFuXCA7CivnibnlirkgPiB0b2trb3VcIDsKK+iruOWtkCA+IHNob3NoaVwgOwor54m95Yi2ID4ga2Vuc2VpXCA7Civlpb3lpKkgPiBrb3V0ZW5cIDsKK+eJueWKnyA+IHRva2tvdVwgOwor5aSJ5pu0ID4gaGVua291XCA7CivplbfplpEgPiBub2Rva2FcIDsKK+iqnuaXjyA+IGdvem9rdVwgOwor6KuW5byBID4gcm9uYmVuXCA7Civml6XloLEgPiBuaXBwb3VcIDsKK+mWgOmRkSA+IG1vbmthblwgOwor5aSn5oyZID4gdGFpa3lvXCA7CivloJXokL0gPiBkYXJha3VcIDsKK+mWoumAoyA+IGthbnJlblwgOwor54Wu54mpID4gbmltb25vXCA7Civml4Xlr50gPiB0YWJpbmVcIDsKK+WrjOOAhSA+IGl5YWl5YVwgOwor5pS+5rC0ID4gaG91c3VpXCA7CivmmIflj5kgPiBzaG91am9cIDsKK+e1ueezuCA+IGtlbnNoaVwgOwor6ZmN562JID4ga291dG91XCA7CivpmbPnmq4gPiBjaGlucGlcIDsKK+aVtOaWiSA+IHNlaXNlaVwgOwor5pW05pWwID4gc2Vpc3V1XCA7CivlpKfmirUgPiB0YWl0ZWlcIDsKK+e0q+iYrSA+IHNoaXJhblwgOwor6ZaL6YqAID4ga2FpZ2luXCA7CivnhKHnrZYgPiBtdXNha3VcIDsKK+ispuWSsyA+IGtlaWdhaVwgOwor5aal5Y2UID4gZGFreW91XCA7Civmlo7miJIgPiBzYWlrYWlcIDsKK+WkqeaJjSA+IHRlbnNhaVwgOwor5pyr44CFID4gc3VlenVlXCA7CivlpYnluaMgPiBob3VoZWlcIDsKK+Wkp+aKgCA+IG9vd2F6YVwgOwor57K+6YysID4gc2VpcmVuXCA7Civml6flnJ8gPiBreXV1ZG9cIDsKK+mbu+aWrSA+IGRlbmRhblwgOwor6Zyw5by+ID4gc2FuZGFuXCA7CivmlZnmoYggPiBreW91YW5cIDsKK+WkqeaIkCA+IHRlbnNlaVwgOwor57mK5oyHID4gc2Vuc2hpXCA7CivlppnlkbMgPiBteW91bWlcIDsKK+mbu+aWhyA+IGRlbmJ1blwgOwor5aSn5oimID4gdGFpc2VuXCA7Civoq7jlp4kgPiBzaG9zaGlcIDsKK+ino+etlCA+IGthaXRvdVwgOwor5piO5YidID4gbWVpc2hvXCA7CivntZ7nvaogPiBrb3V6YWlcIDsKK+Wkp+aIkCA+IHRhaXNlaVwgOwor54Sh56quID4gbXVreXV1XCA7CivmlofmiY0gPiBidW5zYWlcIDsKK+aYqOS7iiA+IHNha2tvblwgOwor57K+6YqFID4gc2VpZG91XCA7CivlpInmlbAgPiBoZW5zdXVcIDsKK+e1qOe3niA+IGp1dXRhblwgOwor5pa55a+4ID4gaG91c3VuXCA7CivoqpPmlocgPiBzZWltb25cIDsKK+WkieaUuSA+IGhlbmthaVwgOwor5pS55q2jID4ga2Fpc2VpXCA7CivnuYrmiYsgPiBzZW5zaHVcIDsKK+Wkp+aFtiA+IHRhaWtlaVwgOwor6Zu25pWXID4gcmVpaGFpXCA7CivplpPpgZMgPiBrYW5kb3VcIDsKK+ijvemZtiA+IHNlaXRvdVwgOwor5pat5bSWID4gZGFuZ2FpXCA7Civopa/ooaMgPiBzaGluJydpXCA7CivlpaXlppkgPiBvdW15b3VcIDsKK+e3j+eCuSA+IHNvdXRlblwgOwor5pS/5qipID4gc2Vpa2VuXCA7Civpm6rmma8gPiBzZWtrZWlcIDsKK+aTjeefrSA+IHNvdXRhblwgOwor57Sw6I+MID4gc2Fpa2luXCA7CivmlaPmlocgPiBzYW5idW5cIDsKK+WkqeaBtSA+IHRlbmtlaVwgOwor5pWj5pWjID4gc2FuemFuXCA7CivlpKnmgakgPiB0ZW4nJ29uXCA7CivlpKfmgqMgPiB0YWlrYW5cIDsKK+aWreWxpCA+IGRhbnNvdVwgOwor5Zyf6b6NID4gbW9ndXJhXCA7CivnuKbmlq0gPiBqdXVkYW5cIDsKK+WjsOacmyA+IHNlaWJvdVwgOwor6Kya5Y+3ID4gc2hpZ291XCA7CivlpKnmgKcgPiB0ZW5zZWlcIDsKK+mdkuWkqSA+IHNlaXRlblwgOwor6Zu75o6iID4gZGVudGFuXCA7Civop6PnpoEgPiBrYWlraW5cIDsKK+WkieaPmyA+IGhlbmthblwgOwor5piP5YCSID4ga29udG91XCA7CivmnJfjgIUgPiByb3Vyb3VcIDsKK+iqv+W6piA+IGNob3Vkb1wgOwor5aWz5ZuaID4gam9zaHV1XCA7CivlpKvlvbkgPiBidXlha3VcIDsKK+mZhOelqCA+IGZ1aHlvdVwgOwor5paw5a2XID4gc2hpbmppXCA7Civmkprns7ggPiBuZW5zaGlcIDsKK+Wkp+W/lyA+IHRhaXNoaVwgOwor5pat5a6aID4gZGFudGVpXCA7Civoq5blrpogPiByb250ZWlcIDsKK+eyiembqiA+IGtveXVraVwgOwor57K+6YG4ID4gc2Vpc2VuXCA7CivlobXnlYwgPiBqaW5rYWlcIDsKK+mbhealvSA+IGdhZ2FrdVwgOwor6ZyK5oSfID4gcmVpa2FuXCA7CivmkLrooYwgPiBrZWlrb3VcIDsKK+irluWtnyA+IHJvbm1vdVwgOwor5pel5ZKMID4gaGl5b3JpXCA7CivntrLnirYgPiBtb3Vqb3VcIDsKK+iqmOaLkCA+IHl1dWthaVwgOwor5aOw5piOID4gc2VpbWVpXCA7CivlpKflvaIgPiBvb2d5b3VcIDsKK+mbo+aWhyA+IG5hbmJ1blwgOwor6Kun5aOwID4ga2Fpc2VpXCA7CivnsbPpo68gPiBiZWloYW5cIDsKK+e2sueJiCA+IGFtaWhhblwgOwor5aOy5paHID4gYmFpYnVuXCA7Civml6XlkJEgPiBoaW5hdGFcIDsKK+eyvui+siA+IHNlaW5vdVwgOwor5paw5ammID4gc2hpbnB1XCA7Civlparlm54gPiBkYWtrYWlcIDsKK+eBq+i2syA+IGhpYXNoaVwgOwor54Sm55yJID4gc2hvdWJpXCA7CivmlL7moKEgPiBob3Vrb3VcIDsKK+mYsuepuiA+IGJvdWt1dVwgOwor5aSp5bqVID4gdGVudGVpXCA7CivlpKrlubMgPiB0YWloZWlcIDsKK+iqreW+jCA+IGRva3Vnb1wgOwor5pel5Y+CID4gbmlzc2FuXCA7Civpmpvmtq8gPiBzYWlnYWlcIDsKK+aXi+WbniA+IHNlbmthaVwgOwor5aWl5ZywID4gb2t1Y2hpXCA7CivlpKnlubMgPiB0ZW5iaW5cIDsKK+mciuaApyA+IHJlaXNlaVwgOwor5aSn5bqXID4gb29kYW5hXCA7CivlpJbmgqMgPiBnYWlrYW5cIDsKK+mbkeabuCA+IHphc3Nob1wgOwor6Zaj6K2wID4ga2FrdWdpXCA7CivngbDosp0gPiBoYWlnYWlcIDsKK+WkieaIkCA+IGhlbnNlaVwgOwor5aSp5bidID4gdGVudGVpXCA7CivntYznt5ogPiBrZWlzZW5cIDsKK+eJqeS9kyA+IG1vdHRhaVwgOwor5aSn5bmFID4gb29oYWJhXCA7CivntYzntrggPiBrZWlyaW5cIDsKK+aYjuS4uyA+IG1laXNodVwgOwor5aSn5birID4gZGFpc2hpXCA7CivlpKnlt6UgPiB0ZW5rb3VcIDsKK+Wkp+W4nSA+IHRhaXRlaVwgOwor6KO96YysID4gc2VpcmVuXCA7CivlpoTli5UgPiBtb3Vkb3VcIDsKK+eElOehnSA+IGVuc2hvdVwgOwor57WQ57SNID4geXVpbm91XCA7Civml4Xlm6MgPiByeW9kYW5cIDsKK+e5geW/mSA+IGhhbmJvdVwgOwor5Zyw6auqID4gamlnYW1pXCA7CivpmLLnpqYgPiBib3VneW9cIDsKK+e0sOiDniA+IHNhaWJvdVwgOwor54mp5Lu2ID4gYnVra2VuXCA7CivlpKnltq4gPiB0ZW5rZW5cIDsKK+ijvemLvCA+IHNlaWtvdVwgOwor5pel5YukID4gbmlra2luXCA7CivlpKflt6cgPiB0YWlrb3VcIDsKK+eCueiMtiA+IHRlbmNoYVwgOwor5pes5YiKID4ganVua2FuXCA7CivntIXol7sgPiBrb3Vzb3VcIDsKK+aWsOWlhyA+IHNoaW5raVwgOwor6Zm254S2ID4gdG91emVuXCA7CivplbfpgJQgPiBjaG91dG9cIDsKK+aRmOiKvSA+IHRla2lnYVwgOwor5aSJ5oWLID4gaGVudGFpXCA7Civmj5vph5EgPiBrYW5raW5cIDsKK+aVmeaOiCA+IGt5b3VqdVwgOwor5pWF5penID4ga29reXV1XCA7Civpm4Tmnb4gPiBvbWF0c3VcIDsKK+aXqeWHuiA+IGhheWFkZVwgOwor5aWH5aaZID4ga2lteW91XCA7CivlpJblvoQgPiBnYWlrZWlcIDsKK+WkluW+gSA+IGdhaXNlaVwgOwor5o6l6aCtID4gc2V0dG91XCA7CivlpJblvaIgPiBnYWlrZWlcIDsKK+iok+eCuSA+IGt1bnRlblwgOwor6KuW5aSWID4gcm9uZ2FpXCA7CivpmZDnlYwgPiBnZW5rYWlcIDsKK+WknOW6lyA+IHlvbWlzZVwgOwor57WD57eaID4gZ2Vuc2VuXCA7Civoq77lkKYgPiBkYWt1aGlcIDsKK+aOoumhjCA+IHRhbmRhaVwgOwor57mK5benID4gc2Vua291XCA7CivnhKHnl5sgPiBtdXRzdXVcIDsKK+eEoeeXhSA+IG11YnlvdVwgOwor5pel5YiKID4gbmlra2FuXCA7CivmlZHmj7QgPiBreXV1ZW5cIDsKK+irluWjhyA+IHJvbmRhblwgOwor5aOf5patID4gcm91ZGFuXCA7CivniYfliIMgPiBrYXRhaGFcIDsKK+aVteW9sSA+IHRla2llaVwgOwor57W555uuID4ga2ludW1lXCA7Civnha7msYEgPiBuaWppcnVcIDsKK+ijvumHjiA+IHN1c29ub1wgOwor6Ki05rGCID4gc29reXV1XCA7CivnhYnngq0gPiByZW50YW5cIDsKK+mch+W6piA+IHNoaW5kb1wgOwor5pW05b2iID4gc2Vpa2VpXCA7CivlpJzluIIgPiB5b2ljaGlcIDsKK+Wil+a4myA+IHpvdWdlblwgOwor6ZuB5pu4ID4gZ2Fuc2hvXCA7CivnuYPluK8gPiBob3V0YWlcIDsKK+ipqeaWhyA+IHNoaWJ1blwgOwor5aSJ5oCnID4gaGVuc2VpXCA7CivopovogZ4gPiBrZW5tb25cIDsKK+Wkp+WxsSA+IHRhaXphblwgOwor6Ku45ZCbID4gc2hva3VuXCA7Civoq67llY8gPiBzaGltb25cIDsKK+mWouilvyA+IGthbnNhaVwgOwor6ZW36LqvID4gY2hvdWt1XCA7CivlpKflsaQgPiB0YWlzb3VcIDsKK+mcnOWusyA+IHNvdWdhaVwgOwor57iE5paHID4gam91bW9uXCA7Civml6XlhYkgPiBuaWtrb3VcIDsKK+aUueaYkyA+IGthaWVraVwgOwor5pen5YSAID4ga3l1dWdpXCA7CivlpKflsL0gPiBkYWlqaW5cIDsKK+WjruaMmSA+IHNvdWt5b1wgOwor57SF6JGJID4gbW9taWppXCA7CivmlL7mlaMgPiBob3VzYW5cIDsKK+aWjuWuriA+IHNhaWd1dVwgOwor6KaL6ICFID4ga2Vuc2hhXCA7Civpm6PmiYAgPiBuYW5zaG9cIDsKK+aVl+aIpiA+IGhhaXNlblwgOwor5aWq5Y+WID4gZGFzc2h1XCA7CivmkbjntKIgPiBtb3Nha3VcIDsKK+eJgOWHoCA+IHNob3VnaVwgOwor5aSq5a6IID4gdGFpc2h1XCA7CivmlonlsIQgPiBzZWlzaGFcIDsKK+e1seeboyA+IHRvdWthblwgOwor5aSn5a+SID4gZGFpa2FuXCA7CivlnYrplpMgPiBib3VrYW5cIDsKK+Wkq+WtkCA+IGZ1dXNoaVwgOwor5aSp5a6IID4gdGVuc2h1XCA7CivlpInlvaIgPiBoZW5rZWlcIDsKK+e0oOiCjCA+IHN1aGFkYVwgOwor6ZuE5patID4geXV1ZGFuXCA7CivlpKrlrZcgPiBmdXRvamlcIDsKK+WkquWtkCA+IHRhaXNoaVwgOwor5aSp5a2rID4gdGVuc29uXCA7Civpm5HmkI0gPiB6YXNzb25cIDsKK+mWkeirhyA+IGthbmRhblwgOwor5pel5YKYID4gaGlnYXNhXCA7CivlpKflrpcgPiB0YWlzb3VcIDsKK+WkqeWtkCA+IHRlbnNoaVwgOwor6Z2p5YW3ID4ga2F3YWd1XCA7CivpnaLliY0gPiBtZW56ZW5cIDsKK+mciuWzsCA+IHJlaWhvdVwgOwor6Zq35pu4ID4gcmVpc2hvXCA7Civop5Lnmq4gPiBrYWt1aGlcIDsKK+ishOWGmSA+IHRvdXNoYVwgOwor5o6i6Zm6ID4gdGFua2VuXCA7Civoppbnt5ogPiBzaGlzZW5cIDsKK+aVsOW5tCA+IHN1dW5lblwgOwor5aWu5YqxID4gZnVucmVpXCA7CivpnZ7lipsgPiBoaXJpa2lcIDsKK+irreWRiiA+IHl1a29rdVwgOwor6ZaL6KybID4ga2Fpa291XCA7CivmloflrpggPiBidW5rYW5cIDsKK+aXrOS9mSA+IGp1bicneW9cIDsKK+majuautSA+IGthaWRhblwgOwor6Z2S5Y+yID4gc2Vpc2hpXCA7CivntJnog4wgPiBzaGloYWlcIDsKK+e0heiMtiA+IGtvdWNoYVwgOwor57Sw57e7ID4gc2FpY2hpXCA7Civln4volLUgPiBtYWl6b3VcIDsKK+ijvemAoCA+IHNlaXpvdVwgOwor6ZyK5bGxID4gcmVpemFuXCA7CivnhrHmiKYgPiBuZXNzZW5cIDsKK+ijj+mWgCA+IHVyYW1vblwgOwor5aSJ5bm7ID4gaGVuZ2VuXCA7CivpnIrlsYsgPiB0YW1heWFcIDsKK+Wil+awtCA+IHpvdXN1aVwgOwor6Kyb5LitID4ga291anV1XCA7Civpm6LmhIEgPiByaXNodXVcIDsKK+mbu+W3pSA+IGRlbmtvdVwgOwor5pWj5by+ID4gc2FuZGFuXCA7CivmlpzloZQgPiBzaGF0b3VcIDsKK+WkmuWwkSA+IHRhc2hvdVwgOwor5aSc5a+SID4geW96YW11XCA7Civoq7fliLogPiBmdXVzaGlcIDsKK+WhqeeFriA+IHNoaW9uaVwgOwor5aSc5a6uID4geW9taXlhXCA7CivpnLLlm70gPiByb2tva3VcIDsKK+iruOWIgyA+IG1vcm9oYVwgOwor5aSW5bGkID4gZ2Fpc291XCA7Civln4vokawgPiBtYWlzb3VcIDsKK+e2v+avmyA+IHdhdGFnZVwgOwor57WQ56S+ID4ga2Vzc2hhXCA7CivopJLosrYgPiBob3VoZW5cIDsKK+e0r+e0ryA+IHJ1aXJ1aVwgOwor5Zyw6ZyKID4gY2hpcmVpXCA7CivpnIrlrp0gPiByZWlob3VcIDsKK+WcsOmchyA+IGppc2hpblwgOwor5aCx55+lID4gaG91Y2hpXCA7CivntLDns7ggPiBzYWlzaGlcIDsKK+WknOWtpiA+IHlhZ2FrdVwgOwor6Kqk5a+pID4gZ29zaGluXCA7Civml6XkvIogPiBuaWNoaWlcIDsKK+mYsueWqyA+IGJvdWVraVwgOwor6KeS55WMID4ga2Fra2FpXCA7CivmlY/mhJ8gPiBiaW5rYW5cIDsKK+aVt+WxhSA+IHNoaWtpaVwgOwor54Kt6IK6ID4gdGFuaGFpXCA7Civlpb3kvosgPiBrb3VyZWlcIDsKK+WllOWRvSA+IGhvbm1laVwgOwor54WZ5q+SID4gZW5kb2t1XCA7CivoqoflvLUgPiBrb2Nob3VcIDsKK+eGseaEjyA+IG5ldHN1aVwgOwor5pa55ZCRID4gaG91a291XCA7CivntKvntLogPiBzaGlrb25cIDsKK+WcsOmajiA+IGNoaWthaVwgOwor5pWZ5b6SID4ga3lvdXRvXCA7Civopo/ntIQgPiBraXlha3VcIDsKK+iruOWFhCA+IHNob2tlaVwgOwor6Ku45YWDID4gc2hvZ2VuXCA7Civml6nkuJYgPiBzb3VzZWlcIDsKK+mWi+ilnyA+IGthaWtpblwgOwor5pac5Z2RID4gc2hha291XCA7CivnuKvlt6UgPiBob3Vrb3VcIDsKK+aXheWIuCA+IHJ5b2tlblwgOwor6Zqj5p2RID4gcmluc29uXCA7CivlpKnlpJYgPiB0ZW5nYWlcIDsKK+ipqeaJjSA+IHNoaXNhaVwgOwor5aCh56SBID4gaG9zaG91XCA7CivlpKnlpIkgPiB0ZW5wZW5cIDsKK+mdouWAkiA+IG1lbmRvdVwgOwor5pel5LitID4gaGluYWthXCA7CivlpKnlo7AgPiB0ZW5zZWlcIDsKK+aXi+WFiSA+IHNlbmtvdVwgOwor5aWR5ZCIID4ga2VpZ291XCA7CivpnIrlqpIgPiByZWliYWlcIDsKK+e3muadoSA+IHNlbmpvdVwgOwor6Kej54mIID4ga2FpaGFuXCA7CivmlbTlrrkgPiBzZWl5b3VcIDsKK+aWsOWRsyA+IHNoaW5taVwgOwor5aSp5aOMID4gdGVuam91XCA7CivlpKflpIkgPiB0YWloZW5cIDsKK+e2mua8lCA+IHpva3VlblwgOwor5aOu5b+rID4gc291a2FpXCA7Civoo7jouqsgPiByYXNoaW5cIDsKK+exs+mKrSA+IGJlaXNlblwgOwor54ax5oCnID4gbmVzc2VpXCA7Civoqp7lraYgPiBnb2dha3VcIDsKK+iqmOWwjiA+IHl1dWRvdVwgOwor6ZuR5oSfID4gemFra2FuXCA7Civmlo7loLQgPiBzYWlqb3VcIDsKK+imgee2sSA+IHlvdWtvdVwgOwor57Sv566XID4gcnVpc2FuXCA7Civmloflo6sgPiBidW5zaGlcIDsKK+eCuee3miA+IHRlbnNlblwgOwor5aWz5L2TID4gbnlvdGFpXCA7CivnuIHmiJogPiBlbnNla2lcIDsKK+mdouS9kyA+IG1lbnRlaVwgOwor5paH5aOHID4gYnVuZGFuXCA7CivlpYnlkYggPiBob3V0ZWlcIDsKK+aSg+egtCA+IGdla2loYVwgOwor57K+6KO9ID4gc2Vpc2VpXCA7CivpnaLkvJogPiBtZW5rYWlcIDsKK+e0oeezuCA+IGJvdXNoaVwgOwor5aSp5aCCID4gdGVuZG91XCA7Civpm6LluoogPiByaXNob3VcIDsKK+Wik+aomSA+IGJvaHlvdVwgOwor6ZqO5qKvID4ga2FpdGVpXCA7Civlo7LlupcgPiBiYWl0ZW5cIDsKK+irluWPoiA+IHJvbnNvdVwgOwor6Ku45L6vID4gc2hva291XCA7Civpm7vlrZAgPiBkZW5zaGlcIDsKK+eIteS9jSA+IHNoYWt1aVwgOwor6KW/57WMID4gc2Vpa2VpXCA7Civoqanmg7MgPiBzaGlzb3VcIDsKK+WhiueKtiA+IGthaWpvdVwgOwor6Kaz55u4ID4ga2Fuc291XCA7CivlpbPkurogPiBueW9uaW5cIDsKK+aUueaGsiA+IGthaWtlblwgOwor5aSn5Z+fID4gdGFpaWtpXCA7CivntbbniYggPiB6ZXBwYW5cIDsKK+mbquW0qSA+IG5hZGFyZVwgOwor6Kmp5oOFID4gc2hpam91XCA7CivlpJblp5MgPiBnYWlzZWlcIDsKK+iogOa1tyA+IGdlbmthaVwgOwor54Wn5p+7ID4gc2hvdXNhXCA7CivmlL/mg4UgPiBzZWlqb3VcIDsKK+e0m+e0myA+IGZ1bnB1blwgOwor5aWP5Yq5ID4gc291a291XCA7Civlo67lubQgPiBzb3VuZW5cIDsKK+Wkp+WeiyA+IG9vZ2F0YVwgOwor5aOw5bivID4gc2VpdGFpXCA7CivkuIrjgIUgPiBqb3Vqb3VcIDsKK+Wlj+WKnyA+IHNvdWtvdVwgOwor57SU57a/ID4ganVubWVuXCA7CivlpKnlnLAgPiB0ZW5jaGlcIDsKK+Whqea5ryA+IHNoaW95dVwgOwor6Kmy5b2TID4gZ2FpdG91XCA7CivlnZHpgZMgPiBrb3Vkb3VcIDsKK+Wls+S4rSA+IGpvY2h1dVwgOwor5r+A6auYID4gZ2Vra291XCA7CivmjqLpibEgPiB0YW5rb3VcIDsKK+e3j+abuCA+IHNvdXNob1wgOwor5aSW5aWXID4gZ2FpdG91XCA7Civntr/mo5IgPiBtZW5ib3VcIDsKK+aUr+aJgCA+IHNoaXNob1wgOwor5o6h6YmxID4gc2Fpa291XCA7CivlpKflnLAgPiBkYWljaGlcIDsKK+e0lOe1uSA+IGp1bmtlblwgOwor5pS+5oGjID4gaG91c2hpXCA7CivmloflnosgPiBidW5rZWlcIDsKK+mWgOihmyA+IG1vbicnZWlcIDsKK+mbjOaApyA+IHNoaXNlaVwgOwor5LiH44CFID4gbWFubWFuXCA7CivlnoLoqJMgPiBzdWlrdW5cIDsKK+Wkp+WcjyA+IHRhaWtlblwgOwor6Ziy54qvID4gYm91aGFuXCA7Civoqo3lrpogPiBuaW50ZWlcIDsKK+eBq+iWrCA+IGtheWFrdVwgOwor54ax5bivID4gbmV0dGFpXCA7Civnt7TmiJAgPiByZW5zZWlcIDsKK+eEmueBqyA+IHRha2liaVwgOwor5pS55oKqID4ga2FpYWt1XCA7CivmlL7lv7UgPiBob3VuZW5cIDsKK+Wlh+WLnSA+IGtpc2hvdVwgOwor6ZyK5aC0ID4gcmVpam91XCA7CivntJTns7sgPiBqdW5rZWlcIDsKK+WlouS+iCA+IHNoYXNoaVwgOwor5aWl5LydID4gb2t1ZGVuXCA7CivloanmtbQgPiBlbnlva3VcIDsKK+irh+WQiCA+IGRhbmdvdVwgOwor5LiB44CFID4gdG91dG91XCA7CivoqanlvaIgPiBzaGlrZWlcIDsKK+mciuWfnyA+IHJlaWlraVwgOwor6KuW5YikID4gcm9ucGFuXCA7Civnha7mlrkgPiBuaWthdGFcIDsKK+eGiuaJiyA+IGt1bWFkZVwgOwor57SU57KLID4ganVuc3VpXCA7Civoqq3lm7MgPiBkb2t1enVcIDsKK+mbhOaApyA+IHl1dXNlaVwgOwor54Gr6JOLID4gaGlidXRhXCA7Civoo4Xph5ggPiBzb3V0ZWlcIDsKK+iqv+WSjCA+IGNob3V3YVwgOwor6KiC5q2jID4gdGVpc2VpXCA7CivnhafmmKAgPiBzaG91ZWlcIDsKK+mbhOW/lyA+IHl1dXNoaVwgOwor6Kq/5ZGzID4gY2hvdW1pXCA7CivmjrLovIkgPiBrZWlzYWlcIDsKK+aXheS6uiA+IHJ5b2ppblwgOwor5peF5LqtID4gcnlvdGVpXCA7Civmj5voqIAgPiBrYW5nZW5cIDsKK+e3j+aVsCA+IHNvdXN1dVwgOwor6ZyK5ZywID4gcmVpY2hpXCA7Civmj5roqIAgPiB5b3VnZW5cIDsKK+Wkp+WWqiA+IHRhaXNvdVwgOwor6ZuR5be+ID4gem91a2luXCA7CivlpKnllZMgPiB0ZW5rZWlcIDsKK+maheacqCA+IHN1bWlraVwgOwor5aWJ5YWsID4gaG91a291XCA7Civnt4/mlKwgPiBzb3VyYW5cIDsKK+e3qOaIkCA+IGhlbnNlaVwgOwor6Kaq55aOID4gc2hpbnNvXCA7Civmlrnkvr8gPiBob3ViZW5cIDsKK+mbouWuriA+IHJpa3l1dVwgOwor57Wi54ibID4ga2VucmFuXCA7CivlpJblnLAgPiBnYWljaGlcIDsKK+WkluWcqCA+IGdhaXphaVwgOwor5aGp5rCXID4gc2hpb2tlXCA7CivmjqXov5EgPiBzZWtraW5cIDsKK+mbhOW8gSA+IHl1dWJlblwgOwor57Gz6LuNID4gYmVpZ3VuXCA7Civoqanlt7sgPiBzaGlrYW5cIDsKK+aUueW7gyA+IGthaWhhaVwgOwor6ZqO5pWwID4ga2Fpc3V1XCA7CivlnJLplbcgPiBlbmNob3VcIDsKK+WcsOmHkSA+IGppZ2FuZVwgOwor57ep5oWiID4ga2FubWFuXCA7Civpm7vloLEgPiBkZW5wb3VcIDsKK+iqv+WNsCA+IGNob3VpblwgOwor6Ziy54G9ID4gYm91c2FpXCA7CivlpKnlkb0gPiB0ZW5tZWlcIDsKK+expOmBiyA+IGt1aml1blwgOwor6KOc6LazID4gaG9zb2t1XCA7Civmv4Hpn7MgPiBkYWt1b25cIDsKK+Wkp+WSjCA+IHlhbWF0b1wgOwor6KuH5YikID4gZGFucGFuXCA7CivmlbTlnLAgPiBzZWljaGlcIDsKK+Wkp+WRvSA+IHRhaW1laVwgOwor6ZW36JuHID4gY2hvdWRhXCA7Civmlrnku4ogPiBob3Vrb25cIDsKK+aPkOiogCA+IHRlaWdlblwgOwor6Ki85ougID4gc2hvdWtvXCA7CivntIXnsokgPiBiZW5pa29cIDsKK+WkquWQjiA+IHRhaWtvdVwgOwor5Zyw6YWSID4gaml6YWtlXCA7CivpmrvlvbEgPiBzZWtpZWlcIDsKK+Wjq+WumCA+IHNoaWthblwgOwor5Zyf6Y2LID4gZG9uYWJlXCA7CivlpKnlkI4gPiB0ZW5rb3VcIDsKK+eBsOiJsiA+IGhhaWlyb1wgOwor5aSp5Y+wID4gdGVuZGFpXCA7Civns7vntbEgPiBrZWl0b3VcIDsKK+Wkp+WQmyA+IHRhaWt1blwgOwor6Zmw5qC4ID4gaW5rYWt1XCA7CivlpKflkIwgPiBkYWlkb3VcIDsKK+mat+W+kyA+IHJlaWp1dVwgOwor57Sw55uuID4gaG9zb21lXCA7CivmlK/lvIEgPiBzaGliZW5cIDsKK+aPkOimgSA+IHRlaXlvdVwgOwor54Gr6IqxID4gaGliYW5hXCA7CivlpInlnosgPiBoZW5rZWlcIDsKK+e0lOeoriA+IGp1bnNodVwgOwor6ZuR5bGFID4gemFra3lvXCA7CivpmY3msLQgPiBrb3VzdWlcIDsKK+aWueS4iCA+IGhvdWpvdVwgOwor5Z+L57eaID4gbWFpc2VuXCA7CivmlbDlm54gPiBzdXVrYWlcIDsKK+aWh+WQjSA+IGJ1bm1laVwgOwor5aWV5LiWID4gZWtpc2VpXCA7Civnt6nmgKAgPiBrYW50YWlcIDsKK+ino+azlSA+IGthaWhvdVwgOwor5pSv5bqXID4gc2hpdGVuXCA7Civln7rnn7MgPiBraXNla2lcIDsKK+ijveiiiyA+IHNlaXRhaVwgOwor6aC744CFID4gaGlucGluXCA7CivmlpzlhYkgPiBzaGFrb3VcIDsKK+WlieS9kyA+IGhvdXRhaVwgOwor6ZmE5rOoID4gZnVjaHV1XCA7CivmlqXlgJkgPiBzZWtrb3VcIDsKK+mWouiBryA+IGthbnJlblwgOwor5aWJ5Ly6ID4gaG91c2hpXCA7CivlpKfljYogPiB0YWloYW5cIDsKK+ikkOiXuyA+IGthc3NvdVwgOwor54W95oOFID4gc2Vuam91XCA7CivmlbXllrYgPiB0ZWtpZWlcIDsKK+eEoeavkiA+IG11ZG9rdVwgOwor5aSn5YyZID4gb29zYWppXCA7CivlnKjpg7cgPiB6YWlnb3VcIDsKK+e1tua1tyA+IHpla2thaVwgOwor6ZuE5bOwID4geXV1aG91XCA7CivlpYnku5UgPiBob3VzaGlcIDsKK+e0jeeojiA+IG5vdXplaVwgOwor5Zyf6YecID4gZG9nYW1hXCA7CivlpKfli6IgPiB0YWl6ZWlcIDsKK+Wlj+S4iiA+IHNvdWpvdVwgOwor5pat5LqkID4gZGFua291XCA7Civnt5LmiKYgPiBjaG9zZW5cIDsKK+aUvuWwhCA+IGhvdXNoYVwgOwor5aSn5YuHID4gdGFpeXV1XCA7CivoppbnlYwgPiBzaGlrYWlcIDsKK+irluS6iSA+IHJvbnNvdVwgOwor6KOz6KO+ID4gbW9zdXNvXCA7CivoqablsIQgPiBzaGlzaGFcIDsKK+mZpOaguCA+IGpva2FrdVwgOwor5aSn5YqfID4gdGFpa291XCA7Civop6Pmr5IgPiBnZWRva3VcIDsKK+ipqeWulyA+IHNoaXNvdVwgOwor5paH5YuiID4gYnVuc2VpXCA7CivpmbDmmqYgPiBpbnJla2lcIDsKK+eEoeassiA+IG11eW9rdVwgOwor5aSq5YidID4gdGFpc2hvXCA7CivmlaPlnKggPiBzYW56YWlcIDsKK+eCreekpiA+IHRhbmtvdVwgOwor54Gr6ISaID4gaGlhc2hpXCA7CivoqqPlkYogPiBidWtva3VcIDsKK+WkqeWIkSA+IHRlbmtlaVwgOwor5aSp5YiGID4gdGVuYnVuXCA7Civlo67lpKcgPiBzb3VkYWlcIDsKK+ihsOmgvSA+IHN1aXRhaVwgOwor54K5552bID4gdGVuc2VpXCA7CivlpKfliIYgPiBkYWlidW5cIDsKK+WjruWjqyA+IHNvdXNoaVwgOwor5pWX5aCxID4gaGFpaG91XCA7CivlpJblkJEgPiBnYWlrb3VcIDsKK+Wkp+WIgCA+IGRhaXRvdVwgOwor5pS75a6IID4ga291c2h1XCA7Civpm5HlqZogPiB6YWtrb25cIDsKK+aQjeiAlyA+IHNvbm1vdVwgOwor54K555y8ID4gdGVuZ2FuXCA7CivlnKfov6sgPiBhcHBha3VcIDsKK+WkluWPsiA+IGdhaXNoaVwgOwor5aSn5YehID4gb295b3NvXCA7Civmv6vpgKAgPiByYW56b3VcIDsKK+eGlOWyqSA+IHlvdWdhblwgOwor6ZqP5omAID4genVpc2hvXCA7CivmlLnlrpogPiBrYWl0ZWlcIDsKK+mbheWuoiA+IGdha2FrdVwgOwor57Wx5rK7ID4gdG91Y2hpXCA7CivlpKnlhbUgPiB0ZW5wZWlcIDsKK+ims+eCuSA+IGthbnRlblwgOwor6Zqg5b+NID4gaW4nJ25pblwgOwor5aSn5YW4ID4gdGFpdGVuXCA7CivpmaTmnI0gPiBqb2Z1a3VcIDsKK+Wkp+WFrCA+IHRhaWtvdVwgOwor5aSn5YWoID4gdGFpemVuXCA7CivmlbTlkIggPiBzZWlnb3VcIDsKK+eyvuiIjiA+IHNob3VqYVwgOwor5aSn5YWEID4gdGFpa2VpXCA7CivoqZ7lrpcgPiBzaGlzb3VcIDsKK+WjsOWfnyA+IHNlaWlraVwgOwor6Zu75ZG9ID4gZGVubWVpXCA7Civoo5zoqLsgPiBob2NodXVcIDsKK+iho+mjnyA+IGlzaG9rdVwgOwor54Sh5qeYID4gYnV6YW1hXCA7CivmkbjniYwgPiBtb3VwYWlcIDsKK+aWh+WFuCA+IGJ1bnRlblwgOwor57ea5b2iID4gc2Vua2VpXCA7CivpnIrliaMgPiByZWlrZW5cIDsKK+aVsOWQjSA+IHN1dW1laVwgOwor6KGo6Z+zID4gaHlvdW9uXCA7CivlpJbli6QgPiBnYWlraW5cIDsKK+mciuWJjSA+IHJlaXplblwgOwor6KOc6KeSID4gaG9rYWt1XCA7Civpmo/mhJ8gPiB6dWlrYW5cIDsKK+eCr+ecvCA+IGtlaWdhblwgOwor54Wp5oK2ID4gaGFubW9uXCA7CivoqIjmlbAgPiBrZWlzdXVcIDsKK+WknOWHqiA+IHlvbmFnaVwgOwor6ZqP5oOzID4genVpc291XCA7CivpmLLmsLQgPiBib3VzdWlcIDsKK+aOqOirliA+IHN1aXJvblwgOwor5aSJ5ZCNID4gaGVubWVpXCA7CivntabmsrkgPiBreXV1eXVcIDsKK+iogOaYjiA+IGdlbm1laVwgOwor5aSp5YCZID4gdGVua291XCA7CivntYLnhIkgPiBzaHV1ZW5cIDsKK+eGseWeiyA+IG5la2tlaVwgOwor6Zu35ZCNID4gcmFpbWVpXCA7Civpm7flkIwgPiByYWlkb3VcIDsKK+mcp+S4rSA+IG11Y2h1dVwgOwor5Zub6Z2iID4gc2hpbWVuXCA7Civns5/ns6AgPiBzb3Vrb3VcIDsKK+aVsOWNgyA+IHN1dXNlblwgOwor5pWw5Y2BID4gc3V1anV1XCA7CivopoHnlKggPiB5b3V5b3VcIDsKK+e2muaYoCA+IHpva3VlaVwgOwor6Zmk5palID4gam9zZWtpXCA7Civpm4Tlp78gPiB5dXVzaGlcIDsKK+aUueWnkyA+IGthaXNlaVwgOwor5aSW5YiGID4gZ2FpYnVuXCA7CivnhZbmiL8gPiBkYW5ib3VcIDsKK+aUv+WkiSA+IHNlaWhlblwgOwor5Z+055SfID4gaGFueXV1XCA7CivlpJblh7ogPiBzb3RvZGVcIDsKK+mbsuWRkSA+IHdhbnRhblwgOwor5aSV5YiKID4geXV1a2FuXCA7Civnhanlv5kgPiBoYW5ib3VcIDsKK+e1kOa7niA+IGtldHRhaVwgOwor57Wo5q+vID4ganV1dGFuXCA7Civngonnq68gPiByb2JhdGFcIDsKK+mbkeWgsSA+IHphcHBvdVwgOwor6Kmp5aOHID4gc2hpZGFuXCA7CivlpKfkvr8gPiBkYWliZW5cIDsKK+e1qOavmyA+IGp1dW1vdVwgOwor5aSp5L2/ID4gdGVuc2hpXCA7CivpmLLmraIgPiBib3VzaGlcIDsKK+e0r+eKryA+IHJ1aWhhblwgOwor5o6o6KiIID4gc3Vpa2VpXCA7Civnhaflv5wgPiBzaG91b3VcIDsKK+WkqeS9kyA+IHRlbnRhaVwgOwor57ir5ZCIID4gaG91Z291XCA7Civpm7vli5UgPiBkZW5kb3VcIDsKK+eEtuaWryA+IHNvdWtvdVwgOwor5aSn5L2/ID4gdGFpc2hpXCA7CivoqLzlt6YgPiBzaG91c2FcIDsKK+Wbm+maoyA+IHNoaXJpblwgOwor6Zu75Yq5ID4gZGVua291XCA7CivlpJblhbggPiBnYWl0ZW5cIDsKK+e0sOeJhyA+IHNhaWhlblwgOwor6KaL54y/ID4gbWl6YXJ1XCA7CivlpKfkvZMgPiBkYWl0YWlcIDsKK+Wbm+mahSA+IHlvc3VtaVwgOwor5aCF54miID4ga2Vucm91XCA7CivngavnuIQgPiBoaW5hd2FcIDsKK+aVpuWOmiA+IHRvbmtvdVwgOwor5pS55aSJID4ga2FpaGVuXCA7CivlpInli5UgPiBoZW5kb3VcIDsKK+eFp+W9sSA+IHNob3VlaVwgOwor6ZqP5b6TID4genVpanV1XCA7Civpm4TlpKcgPiB5dXVkYWlcIDsKK+aWh+S+iyA+IGJ1bnJlaVwgOwor6ZmN5p2/ID4ga291YmFuXCA7CivlpKfkvJogPiB0YWlrYWlcIDsKK+mbo+WVjyA+IG5hbm1vblwgOwor5pWZ5ZSGID4ga3lvdXNhXCA7CivmjqLoqKogPiB0YW5ib3VcIDsKK+aNu+i7oiA+IG5lbnRlblwgOwor6KGX6aCtID4gZ2FpdG91XCA7CivlpKfku7sgPiB0YWluaW5cIDsKK+mbhOWjriA+IHl1dXNvdVwgOwor5paH5L2TID4gYnVudGFpXCA7CivlpKfku7AgPiBvb2d5b3VcIDsKK+aVmeWToSA+IGt5b3VpblwgOwor5Zuz6YyyID4genVyb2t1XCA7CivlpKfku6MgPiBkYWlkYWlcIDsKK+WkqeS6lSA+IHRlbmpvdVwgOwor5o6l6KaLID4gc2Vra2VuXCA7Civoo4/opZ8gPiB1cmFlcmlcIDsKK+Wcn+i2syA+IGRvc29rdVwgOwor5aSn5Lq6ID4gZGFpbmluXCA7Civmlo7kuLsgPiBzYWlzaHVcIDsKK+iok+aIkiA+IGt1bmthaVwgOwor5aSW5YK1ID4gZ2Fpc2FpXCA7CivmlYXlm70gPiBrb2tva3VcIDsKK+aOiOizniA+IGp1c2hvdVwgOwor6Kmp5Z6LID4gc2hpa2VpXCA7CivopovniakgPiBtaW1vbm9cIDsKK+e1jOa4iCA+IGtlaXphaVwgOwor57eP5bilID4gc291c3VpXCA7CivlpKnkuLwgPiB0ZW5kb25cIDsKK+WkqeS4uyA+IHRlbnNodVwgOwor5aSn5LmxID4gdGFpcmFuXCA7Civngq3nlLAgPiB0YW5kZW5cIDsKK+eFp+W6piA+IHNob3Vkb1wgOwor6ZqK5b2iID4gdGFpa2VpXCA7Civln47noKYgPiBqb3VzYWlcIDsKK+e1gua8lCA+IHNodXVlblwgOwor5paH5Lq6ID4gYnVuamluXCA7Civoqq3kvJogPiBkb2trYWlcIDsKK+Wkp+S5lyA+IGRhaWpvdVwgOwor5aOy5ZOBID4gYmFpaGluXCA7CivlpKnkuI4gPiB0ZW4nJ3lvXCA7CivlpKnkuIogPiB0ZW5qb3VcIDsKK+Wdh+ihoSA+IGtpbmtvdVwgOwor5pS75Z+OID4ga291am91XCA7CivlnLDorKEgPiBqaXV0YWlcIDsKK+imlueCuSA+IHNoaXRlblwgOwor5pKS5rC0ID4gc2Fuc3VpXCA7Civoo73ojLYgPiBzZWljaGFcIDsKK+eBr+exoCA+IHRvdXJvdVwgOwor6Kqk5L+hID4gZ29zaGluXCA7Civpm7vlhYkgPiBkZW5rb3VcIDsKK+WknOS8vSA+IHlvdG9naVwgOwor57mL5LqJID4ga2Vpc291XCA7CivnhKHmmpcgPiBtdXlhbWlcIDsKK+ijgeiosSA+IHNhaWt5b1wgOwor5pOF5patID4gc2VuZGFuXCA7CivlpJrkvZwgPiB0YXNha3VcIDsKK+eHkOWFiSA+IHJpbmtvdVwgOwor6ZW36ICFID4gY2hvdWphXCA7CivmlaPliaQgPiBzYW56YWlcIDsKK+WcsOiqjCA+IGNoaXNoaVwgOwor5aOy5ZCNID4gYmFpbWVpXCA7Civpmb3mgKcgPiB5b3VzZWlcIDsKK+WkouS4rSA+IG11Y2h1dVwgOwor6Zu35YWJID4gcmFpa291XCA7CivloYrmoLkgPiBrYWlrb25cIDsKK+eEmuabuCA+IGZ1bnNob1wgOwor6KSq57SFID4gdGFpa291XCA7CivmkYLnlJ8gPiBzZXNzZWlcIDsKK+mWouepuiA+IGthbmt1dVwgOwor54Sh5piOID4gbXVteW91XCA7CivmlZnljLogPiBreW91a3VcIDsKK+eyvue3uyA+IHNlaWNoaVwgOwor57K+57e0ID4gc2VpcmVuXCA7Civlm73pgYsgPiBrb2t1dW5cIDsKK+mWiee1jCA+IGhlaWtlaVwgOwor5pWZ5YyWID4ga3lvdWthXCA7CivntbnmnKwgPiBrZW5wb25cIDsKK+ihgOmkhSA+IGtlcHBlaVwgOwor5aSW5LydID4gZ2FpZGVuXCA7Civpm7vlgZwgPiBkZW50ZWlcIDsKK+mghuOAhSA+IGp1bmp1blwgOwor5pWw5YCkID4gc3V1Y2hpXCA7CivplqLnqI4gPiBrYW56ZWlcIDsKK+aVmeWLmSA+IGt5b3VtdVwgOwor5pWw5YCNID4gc3V1YmFpXCA7CivnhKHmlpkgPiBtdXJ5b3VcIDsKK+WknOS4rSA+IHlvbmFrYVwgOwor6Kej5piOID4ga2FpbWVpXCA7CivnhKHmlbUgPiBtdXRla2lcIDsKK+aVo+WFtSA+IHNhbnBlaVwgOwor57WM5rC0ID4ga2Vpc3VpXCA7CivlpJbkurogPiBnYWlqaW5cIDsKK+e0meeJhyA+IHNoaWhlblwgOwor5aSW5LqkID4gZ2Fpa291XCA7Civlo4floLQgPiBkYW5qb3VcIDsKK+aVo+WFiSA+IHNhbmtvdVwgOwor5o2o6LqrID4gc3V0ZW1pXCA7CivpmpzlrZAgPiBzaG91amlcIDsKK+eyvue0sCA+IHNlaXNhaVwgOwor5aGX5paZID4gdG9yeW91XCA7CivntKDnhLwgPiBzdXlha2lcIDsKK+e2meaKlSA+IGtlaXRvdVwgOwor54WZ5bmVID4gZW5tYWt1XCA7CivlpJbkubEgPiBnYWlyYW5cIDsKK+mbkeWTgSA+IHphcHBpblwgOwor6Kej5pWjID4ga2Fpc2FuXCA7Civnsr7ns5YgPiBzZWl0b3VcIDsKK+mXmOeKrCA+IHRvdWtlblwgOwor5pOx5bqnID4ga2FrdXphXCA7Civnsr7nsr4gPiBzZWl6ZWlcIDsKK+ino+aUviA+IGthaWhvdVwgOwor57W25pmvID4gemVra2VpXCA7CivoqabllY8gPiBzaGltb25cIDsKK+ioseWuuSA+IGt5b3lvdVwgOwor6ZqO5bGkID4ga2Fpc291XCA7CivlnLDoo4EgPiBjaGlzYWlcIDsKK+eyvueyiyA+IHNlaXN1aVwgOwor57K+57KJID4gc2VpZnVuXCA7Civmj7rnsYMgPiB5b3VyYW5cIDsKK+aNlemAuCA+IGhvaXRzdVwgOwor57Sb54S2ID4gZnVuemVuXCA7CivmlZHliqkgPiBreXV1am9cIDsKK+eyvuexsyA+IHNlaW1haVwgOwor5pS55ZaEID4ga2FpemVuXCA7CivlpInkvZMgPiBoZW50YWlcIDsKK+aVrOS9kyA+IGtlaXRhaVwgOwor6KaB54K5ID4geW91dGVuXCA7CivlnKfoppogPiBha2tha3VcIDsKK+aVsOS6uiA+IHN1dW5pblwgOwor6Zmw5b6zID4gaW50b2t1XCA7CivmlZnlhbcgPiBreW91Z3VcIDsKK+eBq+eoriA+IGhpZGFuZVwgOwor54K554K5ID4gdGVudGVuXCA7CivoqJjluLMgPiBraWNob3VcIDsKK+ioreWumiA+IHNldHRlaVwgOwor5o6o6JamID4gc3Vpc2VuXCA7Civngo7nl4cgPiBlbnNob3VcIDsKK+aOg+iojiA+IHNvdXRvdVwgOwor6KGG6ZmiID4gc2h1dWluXCA7CivoqanlkJ8gPiBzaGlnaW5cIDsKK+eCueeBryA+IHRlbnRvdVwgOwor54Od5rCRID4gam91bWluXCA7CivoqaDllLEgPiBlaXNob3VcIDsKK+WkieS6uiA+IGhlbmppblwgOwor57Sv5ribID4gcnVpZ2VuXCA7CivnsZDoo70gPiB0b3VzZWlcIDsKK+e2seW4uCA+IGtvdWpvdVwgOwor57K+566hID4gc2Vpa2FuXCA7CivntJTnhLYgPiBqdW56ZW5cIDsKK+mYsuaakSA+IGJvdXNob1wgOwor57K+566XID4gc2Vpc2FuXCA7CivmlbDkuIcgPiBzdXVtYW5cIDsKK+Wegue3miA+IHN1aXNlblwgOwor6ZaJ56uvID4gaGVpdGFuXCA7CivlpInkubEgPiBoZW5yYW5cIDsKK+mWouefpSA+IGthbmNoaVwgOwor6Kmp5Y+LID4gc2hpeXV1XCA7CivntZDmp4sgPiBrZWtrb3VcIDsKK+Wjq+WIhiA+IHNoaWJ1blwgOwor6Zmq5b6TID4gYmFpanV1XCA7CivooaPpiaIgPiBpaGF0c3VcIDsKK+Wbm+mHjSA+IHNoaWp1dVwgOwor5r2u6Z+zID4gY2hvdW9uXCA7CivooqvopoYgPiBoaWZ1a3VcIDsKK+WjsOWEqiA+IHNlaXl1dVwgOwor6Zm25belID4gdG91a291XCA7CivmlaPkvJogPiBzYW5rYWlcIDsKK+aMh+mgrSA+IHNoaXRvdVwgOwor5pS55ZCNID4ga2FpbWVpXCA7Civngq/ngq8gPiBrZWlrZWlcIDsKK+aUueWPtyA+IGthaWdvdVwgOwor6KO957y2ID4gc2Vpa2FuXCA7Civoqozku6MgPiBzaGlkYWlcIDsKK+ilv+a8uCA+IHNlaXplblwgOwor6KGw6YCAID4gc3VpdGFpXCA7CivmlaPkubEgPiBzYW5yYW5cIDsKK+mZo+W9oiA+IGppbmtlaVwgOwor54Kt54GrID4gc3VtaWJpXCA7Civlm73osrsgPiBrb2t1aGlcIDsKK+aUv+WKtCA+IHNlaXJvdVwgOwor5Zyw6JmrID4gbWltaXp1XCA7Civlo67lgaUgPiBzb3VrZW5cIDsKK+ims+aihSA+IGthbmJhaVwgOwor5Zue6YGKID4ga2FpeXV1XCA7CivoprPmoZwgPiBrYW4nJ291XCA7CivmlLvli6IgPiBrb3VzZWlcIDsKK+iqjOS4iiA+IHNoaWpvdVwgOwor57Sw5rCRID4gc2FpbWluXCA7Civlm57pgIEgPiBrYWlzb3VcIDsKK+imgea4ryA+IHlvdWtvdVwgOwor5aCF5rCXID4ga2F0YWdpXCA7Civpm4Tli4EgPiB5dXVrZWlcIDsKK+WeguevhCA+IHN1aWhhblwgOwor54Sh5oW+ID4gbXV5b2t1XCA7Civpmb3lrZAgPiB5b3VzaGlcIDsKK+mbo+S7tiA+IG5hbmtlblwgOwor6Zmk5bmVID4gam9tYWt1XCA7CivntaLmlocgPiBrZW5idW5cIDsKK+iok+WwjiA+IGt1bmRvdVwgOwor5Zub6L66ID4gc2hpaGVuXCA7CivmlZfkuqEgPiBoYWlib3VcIDsKK+mbouS6rCA+IHJpa3lvdVwgOwor57SF54GvID4ga291dG91XCA7Civlo7LkurogPiBiYWluaW5cIDsKK+aUv+WFmiA+IHNlaXRvdVwgOwor6Kmm5YaZID4gc2hpc2hhXCA7Civmva7plpMgPiBzaGlvbWFcIDsKK+mbouS5syA+IHJpbnl1dVwgOwor5pS+5YWNID4gaG91bWVuXCA7Civoo4/oirggPiB1cmFnZWlcIDsKK+aUvuWFiSA+IGhvdWtvdVwgOwor6Kaz5pybID4ga2FuYm91XCA7Civlm57ou6IgPiBrYWl0ZW5cIDsKK+iojuWwiyA+IHRvdWppblwgOwor6KO957SZID4gc2Vpc2hpXCA7CivloLTmlbAgPiBiYWthenVcIDsKK+eBq+eavyA+IGhpemFyYVwgOwor56+G6Zq3ID4gdGVucmVpXCA7Civoo73ns7ggPiBzZWlzaGlcIDsKK+ijveezliA+IHNlaXRvdVwgOwor5aKX5aSnID4gem91ZGFpXCA7Civopb/mtIsgPiBzZWl5b3VcIDsKK+e4geWFiCA+IGVuc2FraVwgOwor57WM5pyoID4ga3lvdWdpXCA7Civlo7LkuIogPiB1cmlhZ2VcIDsKK+mbkeS/syA+IHphcHBhaVwgOwor5Zu96KqeID4ga29rdWdvXCA7Civoo73nsokgPiBzZWlmdW5cIDsKK+e1jOabuCA+IGtlaXNob1wgOwor57e05YqfID4gcmVua291XCA7CivmlLnlhYMgPiBrYWlnZW5cIDsKK+aPm+eulyA+IGthbnphblwgOwor6ZaL55y8ID4ga2FpZ2VuXCA7CivooYzph5EgPiBrb3VraW5cIDsKK+eyl+eylyA+IGFyYWFyYVwgOwor54KK54ioID4gc3Vpc2FuXCA7Civmv4Doqp4gPiBnZWtpZ29cIDsKK+ihl+mBkyA+IGthaWRvdVwgOwor57Sh5q+bID4gYm91bW91XCA7Civlo67kuIEgPiBzb3V0ZWlcIDsKK+eEoeW/gyA+IG11c2hpblwgOwor57Sr5qqAID4gc2hpdGFuXCA7CivngrnmsLQgPiB0ZW5zdWlcIDsKK+e4geWBtCA+IGVuZ2F3YVwgOwor6KOc57+SID4gaG9zaHV1XCA7CivpmaPlsYsgPiBqaW4nJ3lhXCA7Civpm5Hku7YgPiB6YWtrZW5cIDsKK+aOg+iVqSA+IHNvdXRvdVwgOwor6Ziy5oimID4gYm91c2VuXCA7CivntYLmnJ8gPiBzaHV1a2lcIDsKK+mbkeS6uiA+IHpvdW5pblwgOwor57e05YW1ID4gcmVucGVpXCA7CivlopPloLQgPiBoYWthYmFcIDsKK+WeguekuiA+IHN1aXNoaVwgOwor5pS/5L2TID4gc2VpdGFpXCA7Civpm4Xkv5cgPiBnYXpva3VcIDsKK+e0lOawtCA+IGp1bnN1aVwgOwor6Kmp5LuZID4gc2hpc2VuXCA7CivmlL/ku6QgPiBzZWlyZWlcIDsKK+aUvuS7uyA+IGhvdW5pblwgOwor57KJ57OgID4ga29udWthXCA7CivoqankurogPiBzaGlqaW5cIDsKK+aOqOiAgyA+IHN1aWtvdVwgOwor6Zm95aCxID4geW91aG91XCA7Civnt6jliLYgPiBoZW5zZWlcIDsKK+e0lOavmyA+IGp1bm1vdVwgOwor5ouz6ZeYID4ga2VudG91XCA7CivntIXmtpkgPiBrb3VydWlcIDsKK+aUv+S6iSA+IHNlaXNvdVwgOwor57WC5pigID4gc2h1dWVpXCA7CivntKDmqLggPiBzb2Jva3VcIDsKK+aLnemhlCA+IGhhaWdhblwgOwor57SF5rW3ID4ga291a2FpXCA7CivpmYvlt7cgPiByb3Vrb3VcIDsKK+e3mOWPoyA+IGthbmtvdVwgOwor57KJ57GzID4ga29nb21lXCA7CivmjqLogZ4gPiB0YW5idW5cIDsKK+WZtOmjryA+IGZ1bnBhblwgOwor54W95YuVID4gc2VuZG91XCA7CivntpnlrZAgPiBtYW1ha29cIDsKK+e0lOatoyA+IGp1bnNlaVwgOwor6KaH5qWtID4gaGFneW91XCA7CivpmbXlopMgPiByeW91Ym9cIDsKK+ewoeijgSA+IGthbnNhaVwgOwor6Ki85Y2wID4gc2hvdWluXCA7CivoqabkuZcgPiBzaGlqb3VcIDsKK+maoOWMvyA+IGludG9rdVwgOwor6KaP5qC8ID4ga2lrYWt1XCA7CivngavnjokgPiBoaWRhbWFcIDsKK+ioquWVjyA+IGhvdW1vblwgOwor6ZW355uuID4gbmFnYW1lXCA7Civmk43lroggPiBzb3VzaHVcIDsKK+e1seW+oSA+IHRvdWd5b1wgOwor6J+76aOfID4gYXJpa3VpXCA7CivmkL7msrkgPiBzYWt1eXVcIDsKK+ihv+ijjyA+IGVyaXVyYVwgOwor5oyv6LW3ID4gc2hpbmtpXCA7Civnt4/lkIggPiBzb3Vnb3VcIDsKK+ijnOe1piA+IGhva3l1dVwgOwor5pGC5rCPID4gc2Vzc2hpXCA7CivooYzou40gPiBrb3VndW5cIDsKK+ipleS+oSA+IGh5b3VrYVwgOwor6ZaA55WqID4gbW9uYmFuXCA7CivloIXmnZAgPiBrZW56YWlcIDsKK+Wbs+ihqCA+IHp1aHlvdVwgOwor5aCF5pyoID4ga2F0YWdpXCA7Civmj7TnlKggPiBlbicneW91XCA7CivpmLLlvqEgPiBib3VneW9cIDsKK+exs+e2vyA+IGJlaW1lblwgOwor54Gw54e8ID4ga2FpamluXCA7CivngrnmpJwgPiB0ZW5rZW5cIDsKK+WhueWjlSA+IHphbmdvdVwgOwor57SF5q+bID4ga291bW91XCA7Civnt5rliIYgPiBzZW5idW5cIDsKK+e3keWMliA+IHJ5b2trYVwgOwor6ZmL5bGLID4gcm91b2t1XCA7CivlnLDogowgPiBqaWhhZGFcIDsKK+mYsuW8viA+IGJvdWRhblwgOwor6ZmQ5a6aID4gZ2VudGVpXCA7Civoo4Xnva4gPiBzb3VjaGlcIDsKK+majuWQjSA+IGthaW1laVwgOwor6KiA5aSWID4gZ2VuZ2FpXCA7Civop5LluqYgPiBrYWt1ZG9cIDsKK+Weo+eJhiA+IGVuc2hvdVwgOwor57eP5YuiID4gc291emVpXCA7Civlm57oqJMgPiBrYWlrdW5cIDsKK+WjiuS5sSA+IGthaXJhblwgOwor57Wx5bilID4gdG91c3VpXCA7CivoprPmiKYgPiBrYW5zZW5cIDsKK+aOpee3miA+IHNlc3NlblwgOwor57WQ5oiQID4ga2Vzc2VpXCA7CivntITmrL4gPiB5YWtrYW5cIDsKK+ihqOiomCA+IGh5b3VraVwgOwor5pKk5buDID4gdGVwcGFpXCA7CivpmYTlsZ4gPiBmdXpva3VcIDsKK+WboOilsiA+IGluc2h1dVwgOwor5Zue6KanID4ga2FpcmFuXCA7CivnsbPnsokgPiBiZWlmdW5cIDsKK+eFqeWKtCA+IGhhbnJvdVwgOwor5aKo5YiRID4gYm9ra2VpXCA7CivnhKHlraYgPiBtdWdha3VcIDsKK+iiq+iGnCA+IGhpbWFrdVwgOwor5Z+O5rGgID4gam91Y2hpXCA7Civmj4/noLQgPiBieW91aGFcIDsKK+aRmOaenCA+IHRla2lrYVwgOwor57W25bO2ID4gemV0dG91XCA7CivpmbDlmqIgPiBmdWd1cmlcIDsKK+Wjh+S4iiA+IGRhbmpvdVwgOwor6KOP57SLID4gdXJhbW9uXCA7CivntKDmnLQgPiBzb2Jva3VcIDsKK+mWk+eEtiA+IGthbnplblwgOwor5oq56aaZID4gbWFra291XCA7Civmi7PpioMgPiBrZW5qdXVcIDsKK+e0q+aWkSA+IHNoaWhhblwgOwor6KaB5pybID4geW91Ym91XCA7CivoprPmg7MgPiBrYW5zb3VcIDsKK+evgOmFkiA+IHNlc3NodVwgOwor6KaL5pa5ID4gbWlrYXRhXCA7CivntI3mo7ogPiBub3VrYW5cIDsKK+ijgee4qyA+IHNhaWhvdVwgOwor5Zm06ZaAID4gZnVubW9uXCA7Civngrrmm78gPiBrYXdhc2VcIDsKK+ihqOijjyA+IGh5b3VyaVwgOwor6ZqP5YiGID4genVpYnVuXCA7Civntbblr74gPiB6ZXR0YWlcIDsKK+maj+WHpiA+IHp1aXNob1wgOwor57KX55uuID4gemFyYW1lXCA7CivpmaPlnLAgPiBqaW5jaGlcIDsKK+a8oumfsyA+IGthbicnb25cIDsKK+aMh+i8qiA+IHl1Yml3YVwgOwor5o6o566XID4gc3Vpc2FuXCA7CivlnYfnrYkgPiBraW50b3VcIDsKK+eCueaZryA+IHRlbmtlaVwgOwor6ZmQ5aSWID4gZ2VuZ2FpXCA7CivnsonnoJUgPiBmdW5zYWlcIDsKK+WfuuaVmSA+IGtpa3lvdVwgOwor6Zmw5ZSHID4gaW5zaGluXCA7CivopoHml6ggPiB5b3VzaGlcIDsKK+ioiuWVjyA+IGppbm1vblwgOwor6Zqj5Lq6ID4gcmluamluXCA7CivnsbPnqoEgPiBtxJN0b3J1XCA7CivntKDmlbUgPiBzdXRla2lcIDsKK+Wil+WIiiA+IHpvdWthblwgOwor5aKX5YiGID4gem91YnVuXCA7Civnsr7nhYkgPiBzZWlyZW5cIDsKK+a9rui3ryA+IHNoaW9qaVwgOwor57SF5qKFID4ga291YmFpXCA7CivpmY3lo4cgPiBrb3VkYW5cIDsKK+ilv+aWuSA+IHNlaWhvdVwgOwor6KGT6KiIID4ganVra2VpXCA7CivmjqHnrpcgPiBzYWlzYW5cIDsKK+e0jeadryA+IG5vdWhhaVwgOwor5r2w6LWwID4ga2Fpc291XCA7CivooYborbAgPiBzaHV1Z2lcIDsKK+ikkueKtiA+IGhvdWpvdVwgOwor6Ziy5a+SID4gYm91a2FuXCA7CivpmpvkvJogPiBzYWlrYWlcIDsKK+eCueaVsCA+IHRlbnN1dVwgOwor57SN5pysID4gbm91aG9uXCA7Civmi7PpgZMgPiBrb25kb3VcIDsKK+Wil+WFtSA+IHpvdWhlaVwgOwor5piO44CFID4gYWthYWthXCA7CivpmaPllrYgPiBqaW4nJ2VpXCA7CivlnZDnpIEgPiB6YXNob3VcIDsKK+e0meaVsCA+IHNoaXN1dVwgOwor57aZ5ZejID4ga2Vpc2hpXCA7Civnt4/kvZMgPiBzb3V0YWlcIDsKK+aPj+eUuyA+IGJ5b3VnYVwgOwor57Sb5pO+ID4gZnVuam91XCA7CivngbjmsrsgPiBreXV1amlcIDsKK+e3j+S8miA+IHNvdWthaVwgOwor5o6l56iuID4gc2Vzc2h1XCA7Civnt4/ku6MgPiBzb3VkYWlcIDsKK+mWgOeBryA+IG1vbnRvdVwgOwor5oug6YeRID4ga3lva2luXCA7CivploDngasgPiBrYWRvYmlcIDsKK+eFjuWJpCA+IHNlbnphaVwgOwor57W25aW9ID4gemVra291XCA7CivnhKblnJ8gPiBzaG91ZG9cIDsKK+e0oOaPjyA+IHNvYnlvdVwgOwor57SG5puyID4gdWt5b2t1XCA7Civmi53ph5EgPiBoYWlraW5cIDsKK+iisee0lyA+IGZ1a3VzYVwgOwor6ZqP5Ly0ID4genVpaGFuXCA7Civpmb3lhYkgPiB5b3Vrb3VcIDsKK+e1jOW4uCA+IGtlaWpvdVwgOwor5o+Q55C0ID4gdGVpa2luXCA7CivntYzluKsgPiBreW91amlcIDsKK+iomOWFpSA+IGtpbnl1dVwgOwor5Zyo57GzID4gemFpYmVpXCA7Civopprmgp8gPiBrYWt1Z29cIDsKK+Wil+S/uCA+IHpvdWhvdVwgOwor6KKi57qPID4gaGFudGVuXCA7CivplovmuK8gPiBrYWlrb3VcIDsKK+Wil+S+vyA+IHpvdWJpblwgOwor57ac5ZCIID4gc291Z291XCA7CivpmbDliLsgPiBpbmtva3VcIDsKK+a8j+mbuyA+IHJvdWRlblwgOwor6KSQ54KtID4ga2F0dGFuXCA7Civpmo7kuZcgPiBrYWlqb3VcIDsKK+aOu+eXkiA+IHNvdXlvdVwgOwor54KJ5qOaID4gcm9kYW5hXCA7Civop6Plm6MgPiBrYWlkYW5cIDsKK+Wig+WGhSA+IGtlaWRhaVwgOwor6ZqO5LiKID4ga2Fpam91XCA7CivpmZ7lj5kgPiBzaG91am9cIDsKK+aOqOefpSA+IHN1aWNoaVwgOwor5pO+5LmxID4gam91cmFuXCA7CivngavmsLQgPiBoaW1penVcIDsKK+ijveeJiCA+IHNlaWhhblwgOwor56+k6KGMID4gdG9ra291XCA7CivopoHmiYAgPiB5b3VzaG9cIDsKK+WcsOeojiA+IGNoaXplaVwgOwor57W55ZywID4ga2ludWppXCA7CivoqIDli5UgPiBnZW5kb3VcIDsKK+eyvua2siA+IHNlaWVraVwgOwor6Ziy5aG1ID4gYm91amluXCA7CivmjqLnn6UgPiB0YW5jaGlcIDsKK+WgheW/lyA+IGtlbnNoaVwgOwor6Ziy5aGeID4gYm91c2FpXCA7Civlmajph48gPiBraXJ5b3VcIDsKK+aMmeihjCA+IGt5b2tvdVwgOwor54GM5ryRID4ga2FuZ2FpXCA7CivpmKrlpKcgPiBoYW5kYWlcIDsKK+ihgOihjCA+IGtla2tvdVwgOwor6ZW35rmvID4gbmFnYXl1XCA7CivntprliIogPiB6b2trYW5cIDsKK+Wcn+ernCA+IG1vZ3VyYVwgOwor5ry46L+RID4gemVua2luXCA7CivlnJ/nqq8gPiBkb2dhbWFcIDsKK+mZouWGhSA+IGluJyduYWlcIDsKK+WgtOWkliA+IGpvdWdhaVwgOwor6KO954KtID4gc2VpdGFuXCA7CivlnoLmupYgPiBzdWlqdW5cIDsKK+eyieeKtiA+IGZ1bmpvdVwgOwor54Sh5ZGKID4gbXVrb2t1XCA7CivoqJPku6QgPiBrdW5yZWlcIDsKK+imi+W9kyA+IGtlbnRvdVwgOwor57Sv5bm0ID4gcnVpbmVuXCA7Civlm57oiLkgPiBrYWlzZW5cIDsKK+mZjeWPgiA+IGtvdXNhblwgOwor5Zyn56WeID4gYXNzaGluXCA7CivnsbPnlKMgPiBiZWlzYW5cIDsKK+e1kOWpmiA+IGtla2tvblwgOwor5Zue6IiqID4ga2Fpa291XCA7CivplonmraIgPiBoZWlzaGlcIDsKK+e0jeaJgCA+IG5hc3Nob1wgOwor5pKk5ZueID4gdGVra2FpXCA7CivnsaDnm64gPiBrYWdvbWVcIDsKK+e0lOaEmyA+IGp1bicnYWlcIDsKK+aKlemZjSA+IHRvdWtvdVwgOwor57S65bGLID4ga29uJyd5YVwgOwor5omL6by7ID4gdGViYW5hXCA7Civplbfms6IgPiBjaG91aGFcIDsKK+aTjeWFuCA+IHNvdXRlblwgOwor5Z6C5raOID4genVpemVuXCA7CivntKLlvJUgPiBzYWt1aW5cIDsKK+e0lOaDhSA+IGp1bmpvdVwgOwor54K55b+DID4gdGVuamluXCA7CivplqLmnbEgPiBrYW50b3VcIDsKK+eFieS4uSA+IHJlbnRhblwgOwor57W25ZOBID4gemVwcGluXCA7CivmjqLnlaogPiB0YW5iYW5cIDsKK+iojOS6iSA+IGtvdXNvdVwgOwor6ZaA5q2vID4gbW9uc2hpXCA7Civmv4PntLogPiBub3Vrb25cIDsKK+e0hOaJiyA+IHlha3V0ZVwgOwor5Zyw55u4ID4gY2hpc291XCA7CivoobDogJcgPiBzdWltb3VcIDsKK+ethumgrSA+IGhpdHRvdVwgOwor5o6h55SoID4gc2FpeW91XCA7CivngYzmsLQgPiBrYW5zdWlcIDsKK+aNlee4myA+IGhvYmFrdVwgOwor6KOC55eUID4ga2lyZWppXCA7Civnsonngq0gPiBmdW50YW5cIDsKK+mZquS5lyA+IGJhaWpvdVwgOwor5Zub6IKiID4gc2hpc2hpXCA7CivnrqHosqEgPiBrYW56YWlcIDsKK+ijheeUsiA+IHNvdWtvdVwgOwor6KOF55SoID4gc291eW91XCA7CivoqIjkuIogPiBrZWlqb3VcIDsKK+mXmOW/lyA+IHRvdXNoaVwgOwor5Zyn552AID4gYXRzdWdpXCA7CivlnqPmoLkgPiBrYWtpbmVcIDsKK+WboOe/kiA+IGluc2h1dVwgOwor6Z2i44CFID4gbWVubWVuXCA7Civlm5vogZYgPiBzaGlzZWlcIDsKK+ino+WJliA+IGthaWJvdVwgOwor57Wx5ZCIID4gdG91Z291XCA7CivlnJ/nn7MgPiBkb3Nla2lcIDsKK+mWi+aisSA+IGthaWtvblwgOwor6ZmE5YmHID4gZnVzb2t1XCA7CivmvZzooYwgPiBzZW5rb3VcIDsKK+e0meW5oyA+IHNoaWhlaVwgOwor6KWf5oeQID4ga2lua2FpXCA7Civop6Plh40gPiBrYWl0b3VcIDsKK+WcsOeVqiA+IGNoaWJhblwgOwor54Sa5YiRID4gZnVua2VpXCA7CivlnoLmrbsgPiBzdWlzaGlcIDsKK+e0sOWtlyA+IGhvc29qaVwgOwor57Sw5a2UID4gc2Fpa291XCA7CivloIXlroggPiBrZW5zaHVcIDsKK+eEoeWEnyA+IG11c2hvdVwgOwor54Gr5pyoID4ga2Ftb2t1XCA7CivntYLlpJwgPiBzaHV1eWFcIDsKK+WcsOeVjCA+IGNoaWthaVwgOwor6Zai5pWwID4ga2Fuc3V1XCA7CivntYPlo7AgPiBnZW5zZWlcIDsKK+iogOS4iiA+IGdvbmpvdVwgOwor6ZaL5qChID4ga2Fpa291XCA7Civmi53orJ0gPiBoYWlzaGFcIDsKK+mWk+acjSA+IGFpZnVrdVwgOwor6Kej5YWaID4ga2FpdG91XCA7CivplonmoKEgPiBoZWlrb3VcIDsKK+eEoeWCtyA+IG11a2l6dVwgOwor5o+a5rC0ID4geW91c3VpXCA7CivmkqTljrsgPiB0ZWtreW9cIDsKK+ijveazlSA+IHNlaWhvdVwgOwor5rue6ZmjID4gdGFpamluXCA7Civnsr7moLkgPiBzZWlrb25cIDsKK+WboOe4gSA+IGluJyduZW5cIDsKK+ilv+WyuCA+IHNlaWdhblwgOwor5ZiG6aGYID4gdGFuZ2FuXCA7CivmvrHnsokgPiBkZW5wdW5cIDsKK+e1seWItiA+IHRvdXNlaVwgOwor5oyB6JasID4gaml5YWt1XCA7Civlm57nt5ogPiBrYWlzZW5cIDsKK+mWk+aWrSA+IGthbmRhblwgOwor5oud6KazID4gaGFpa2FuXCA7CivopoHlrrMgPiB5b3VnYWlcIDsKK+e0meWxiyA+IGthbWl5YVwgOwor6ZmN5Lu7ID4ga291bmluXCA7Civmi53oposgPiBoYWlrZW5cIDsKK+ifoOi4niA+IGJhbmt5b1wgOwor6ZaT5pWwID4gbWFrYXp1XCA7Civlm73npoEgPiBrb2traW5cIDsKK+aMv+e1tSA+IHNhc2hpZVwgOwor5Zyw542EID4gamlnb2t1XCA7CivnhKHkvJEgPiBtdWt5dXVcIDsKK+WegualiiA+IHN1aXlvdVwgOwor5o6M55CGID4gc2hvdXJpXCA7CivntLDlpKcgPiBzYWlkYWlcIDsKK+mWkeaVoyA+IGthbnNhblwgOwor6ZaL5piOID4ga2FpbWVpXCA7CivlnJ/nlKMgPiBtaXlhZ2VcIDsKK+ino+S9kyA+IGthaXRhaVwgOwor5o6l54K5ID4gc2V0dGVuXCA7Civlm73npI4gPiBrb2t1c29cIDsKK+a7kemZjSA+IGtha2tvdVwgOwor6Zao5oi/ID4ga2VpYm91XCA7CivplovmlrkgPiBrYWlob3VcIDsKK+err+m6lyA+IHRhbnJlaVwgOwor6KGA6Ia/ID4gY2hpdW1pXCA7Civop6Pku7sgPiBrYWluaW5cIDsKK+aWueOAhSA+IGhvdWJvdVwgOwor57W25YCSID4gemV0dG91XCA7CivntJnlrZAgPiBrYW1pa29cIDsKK+eCreWxpCA+IHRhbnNvdVwgOwor5pKk5YW1ID4gdGVwcGVpXCA7CivntKvlpJYgPiBzaGlnYWlcIDsKK+e0r+WilyA+IHJ1aXpvdVwgOwor6KGM6ICFID4gZ3lvdWphXCA7CivmjqHngrkgPiBzYWl0ZW5cIDsKK+aQuuW4ryA+IGtlaXRhaVwgOwor5o6h54KtID4gc2FpdGFuXCA7Civng4jlo6sgPiByZXNzaGlcIDsKK+mWi+aUviA+IGthaWhvdVwgOwor5ryr6KuHID4gbWFuZGFuXCA7CivmiYvpp5IgPiB0ZWdvbWFcIDsKK+WgheWhgSA+IGtlbnJ1aVwgOwor5omL6aaWID4gdGVrdWJpXCA7CivloILloZQgPiBkb3V0b3VcIDsKK+mVt+acnyA+IGNob3VraVwgOwor5aCF5Z+OID4ga2Vuam91XCA7Civngonlv4MgPiByb3NoaW5cIDsKK+ethumLkiA+IGhpcHBvdVwgOwor5aCC5aCCID4gZG91ZG91XCA7CivmvKvoqIAgPiBtYW5nZW5cIDsKK+WbnuetlCA+IGthaXRvdVwgOwor6Kaq5ZKMID4gc2hpbndhXCA7CivntYzlj6MgPiBrZWlrb3VcIDsKK+WfjuW4giA+IGpvdXNoaVwgOwor57W25LqkID4gemVra291XCA7CivlnoLmnKggPiB0YXJ1a2lcIDsKK+WgtOWGhSA+IGpvdW5haVwgOwor5oyJ6IW5ID4gYW5wdWt1XCA7Civoo5zms6ggPiBob2NodXVcIDsKK+WcsOeCuSA+IGNoaXRlblwgOwor5ryi6KmpID4ga2Fuc2hpXCA7Civpl4flsYsgPiB5YW1peWFcIDsKK+e1tuS4liA+IHplc3NlaVwgOwor5oqA6YePID4gZ2lyeW91XCA7CivmiYvpoLggPiB0ZWt1YmlcIDsKK+e1hOWQiCA+IGt1bWlhaVwgOwor54KJ5bqKID4gcm9zaG91XCA7CivmiYvpoIMgPiB0ZWdvcm9cIDsKK+imi+WcsCA+IGtlbmNoaVwgOwor6KaB5aGeID4geW91c2FpXCA7CivooqvniIYgPiBoaWJha3VcIDsKK+ift+iegiA+IHRvdXJvdVwgOwor6KaG5ZyfID4gZnVrdWRvXCA7Civln7nlnLAgPiBiYWljaGlcIDsKK+a9nOiIqiA+IHNlbmtvdVwgOwor6KW/5Z+fID4gc2VpaWtpXCA7Civntabku5ggPiBreXV1ZnVcIDsKK+e1puS7lSA+IGt5dXVqaVwgOwor5Zue56S8ID4ga2FpcmVpXCA7CivmiYDpoZggPiBzaG9nYW5cIDsKK+mXmOWjqyA+IHRvdXNoaVwgOwor57WQ5YWaID4ga2V0dG91XCA7CivngJXmrbsgPiBoaW5zaGlcIDsKK+e0lOWilyA+IGp1bnpvdVwgOwor6ZaL5oimID4ga2Fpc2VuXCA7CivoprPlhYkgPiBrYW5rb3VcIDsKK+ijveadkCA+IHNlaXphaVwgOwor5rqc6aOyID4gcnl1dWluXCA7CivooajnpLogPiBoeW91amlcIDsKK+imgeWcsCA+IHlvdWNoaVwgOwor6KO95pysID4gc2VpaG9uXCA7Civng5nljbAgPiByYWt1aW5cIDsKK+aJi+mamyA+IHRlZ2l3YVwgOwor5omL6ZqZID4gdGVzdWtpXCA7CivntYzlhbggPiBrZWl0ZW5cIDsKK+imquWIhiA+IG95YWJ1blwgOwor57SZ5Z6LID4gc2hpa2VpXCA7CivnrYnovrogPiB0b3VoZW5cIDsKK+eCueWcqCA+IHRlbnphaVwgOwor5Zyw5rqdID4gY2hpa291XCA7CivntabkuI4gPiBreXV1eW9cIDsKK+eCreWhtSA+IHRhbmppblwgOwor5Zu955K9ID4ga29rdWppXCA7CivnspfmnI0gPiBzb2Z1a3VcIDsKK+ihgOe1sSA+IGtldHRvdVwgOwor54Gr5oClID4ga2FreXV1XCA7Civln5/lpJYgPiBpa2lnYWlcIDsKK+erv+mgrSA+IGthbnRvdVwgOwor57Sw5ZCbID4gc2Fpa3VuXCA7Civnga/lvbEgPiBob2thZ2VcIDsKK+aKleizhyA+IHRvdXNoaVwgOwor5ouZ6JGXID4gc2V0Y2hvXCA7CivooYDns5YgPiBrZXR0b3VcIDsKK+aJi+mVtyA+IHRlbmFnYVwgOwor54Gr5b2xID4gaG9rYWdlXCA7CivmjpLmtrIgPiBoYWlla2lcIDsKK+eCreWdkSA+IHRhbmtvdVwgOwor6ZeH5aScID4geWFtaXlvXCA7Civlm73njosgPiBrb2t1b3VcIDsKK+e0heWhtSA+IGtvdWppblwgOwor6KaL5Y+wID4ga2VuZGFpXCA7CivnsonmnKwgPiBmdW5wb25cIDsKK+mVt+aJkyA+IGNob3VkYVwgOwor6KaL5Y+CID4ga2VuemFuXCA7Civnsr7mgo0gPiBzZWlrYW5cIDsKK+Wcj+eCuSA+IGtlbnRlblwgOwor54Gr5bqKID4gaGlkb2tvXCA7CivooYDnrqEgPiBrZWtrYW5cIDsKK+e1jOS8nSA+IGtlaWRlblwgOwor5o2V55CDID4gaG9reXV1XCA7CivmiJDprZogPiBzZWlneW9cIDsKK+ihqOeariA+IGh5b3VoaVwgOwor6KGM56iLID4ga291dGVpXCA7Civmj5rmj5ogPiB5b3V5b3VcIDsKK+WfjuWkliA+IGpvdWdhaVwgOwor5oyH57SLID4gc2hpbW9uXCA7CivmjpLmsLQgPiBoYWlzdWlcIDsKK+WbveeItiA+IGtva3VmdVwgOwor57Sw5YiGID4gc2FpYnVuXCA7Civngb3lrrMgPiBzYWlnYWlcIDsKK+mWi+W7tyA+IGthaXRlaVwgOwor5ZiJ6L6wID4ga2FzaGluXCA7CivmjZXnjbIgPiBob2tha3VcIDsKK+aMgee2miA+IGppem9rdVwgOwor5rq26YqRID4geW91c2VuXCA7Civopo/liYcgPiBraXNva3VcIDsKK+mWieW7tyA+IGhlaXRlaVwgOwor5o+h5omLID4gYWt1c2h1XCA7CivplovlupcgPiBrYWl0ZW5cIDsKK+eyvuW9qSA+IHNlaXNhaVwgOwor5o+Q5pC6ID4gdGVpa2VpXCA7CivmiYvpjYsgPiB0ZW5hYmVcIDsKK+aOg+a1tyA+IHNvdWthaVwgOwor56uc6aasID4gcnl1dW1lXCA7Civln47loZ4gPiBqb3VzYWlcIDsKK+e1jOS4liA+IGtlaXNlaVwgOwor6ZaL5bmzID4ga2FpaGVpXCA7CivmipfoqIAgPiBrb3VnZW5cIDsKK+eqrum8oCA+IGt5dXVzb1wgOwor6ZaJ5bqXID4gaGVpdGVuXCA7Civln47loYEgPiBqb3VydWlcIDsKK+a7kei7iiA+IGthc3NoYVwgOwor56ul6aGUID4gZG91Z2FuXCA7Civlm57nlJ8gPiBrYWlzZWlcIDsKK+a6gOmhmCA+IG1hbmdhblwgOwor6ZaL5be7ID4ga2Fpa2FuXCA7Civopb/ljZcgPiBzZWluYW5cIDsKK+aOouaknCA+IHRhbmtlblwgOwor6ZaA5byfID4gbW9udGVpXCA7CivmiKbpm7IgPiBzZW4nJ3VuXCA7CivmiYvpiaQgPiB0ZWthZ2lcIDsKK+a5vumgrSA+IHdhbnRvdVwgOwor57SN5ZOBID4gbm91aGluXCA7CivllqfpqJIgPiBrZW5zb3VcIDsKK+aQjeWusyA+IHNvbmdhaVwgOwor57Gz5p2QID4gYmVpemFpXCA7Civln47lnYAgPiBqb3VzaGlcIDsKK+aIpumaiiA+IHNlbnRhaVwgOwor5oud6IGeID4gaGFpYnVuXCA7CivonJrps6UgPiBoaWNob3VcIDsKK+aIpumZoyA+IHNlbmppblwgOwor57K+5benID4gc2Vpa291XCA7Civnsr7lt6MgPiBzZWlzb3VcIDsKK+a6gOmdoiA+IG1hbm1lblwgOwor6ZaR5bGFID4ga2Fua3lvXCA7Civnq5zpoK0gPiByeXV1enVcIDsKK+a7kei1sCA+IGthc3NvdVwgOwor5Zar6aOvID4ga2lwcGFuXCA7CivntKLlhbcgPiBzYWt1Z3VcIDsKK+ijj+advyA+IHVyYWl0YVwgOwor6J2m6YygID4gZWJpam91XCA7CivngavlroUgPiBrYXRha3VcIDsKK+aIpumXmCA+IHNlbnRvdVwgOwor5omL6YWMID4gdGVqYWt1XCA7Civmi5nogIUgPiBzZXNzaGFcIDsKK+mWi+WxsSA+IGthaXNhblwgOwor6ZW35bqnID4gY2hvdXphXCA7CivmvKLoi7EgPiBrYW4nJ2VpXCA7CivplonlsbEgPiBoZWl6YW5cIDsKK+WYieizniA+IGthc2hvdVwgOwor5Zyw5qScID4gY2hpa2VuXCA7CivplonlsYUgPiBoZWlreW9cIDsKK+mWi+WwgSA+IGthaWZ1dVwgOwor5pGC5Y+WID4gc2Vzc2h1XCA7CivplqLlpKcgPiBrYW5kYWlcIDsKK+Wbvea8oiA+IGtva2thblwgOwor54K55YWJID4gdGVua291XCA7Civngq3lirQgPiB0YW5yb3VcIDsKK+aKueiMtiA+IG1hdGNoYVwgOwor5Zue54q2ID4ga2Fpam91XCA7CivntK/ku6MgPiBydWlkYWlcIDsKK+aLmOe9riA+IGtvdWNoaVwgOwor57SU5YiGID4ganVuYnVuXCA7Civlnabmh5AgPiB0YW5rYWlcIDsKK+Wdh+aWiSA+IGtpbnNlaVwgOwor5rqA6ZaLID4gbWFua2FpXCA7CivlnYfmlbQgPiBraW5zZWlcIDsKK+e0r+S5lyA+IHJ1aWpvdVwgOwor5o6o5patID4gc3VpZGFuXCA7CivmlaPjgIUgPiBzYW56YW5cIDsKK+aJueiplSA+IGhpaHlvdVwgOwor5o6I5qWtID4ganVneW91XCA7Civono3os4cgPiB5dXVzaGlcIDsKK+aOqOaVsiA+IHN1aWtvdVwgOwor57Sv5LiWID4gcnVpc2VpXCA7CivooYDnm7ggPiBrZXNzb3VcIDsKK+eymOaApyA+IG5lbnNlaVwgOwor6KSH5bqnID4gZnVrdXphXCA7Civmv4Pmt6EgPiBub3V0YW5cIDsKK+aOsuaPmiA+IGtlaXlvdVwgOwor6KaL5LqLID4gbWlnb3RvXCA7Civnsr7lrZAgPiBzZWlzaGlcIDsKK+WgguS4iiA+IGRvdWpvdVwgOwor6J6z6J6CID4gdG91cm91XCA7CivmiYvou70gPiB0ZWdhcnVcIDsKK+eBsOWhtSA+IGhhaWppblwgOwor5Zyo5qChID4gemFpa291XCA7CivopKXlqaYgPiBqb2t1ZnVcIDsKK+a8leiJhyA+IHNvdXRlaVwgOwor6ZW35bGLID4gbmFnYXlhXCA7CivooYDnl7AgPiBrZXR0YW5cIDsKK+mWi+WniyA+IGthaXNoaVwgOwor6KGG55SfID4gc2h1am91XCA7CivopoHku7YgPiB5b3VrZW5cIDsKK+ihgOeXlSA+IGtla2tvblwgOwor5Z+f5YaFID4gaWtpbmFpXCA7Civplbflr78gPiBjaG91anVcIDsKK+imgeS6uiA+IHlvdWppblwgOwor5Zyo5p2lID4gemFpcmFpXCA7CivmjJnnlKggPiBreW95b3VcIDsKK+mVt+WutiA+IG5hZ2F5YVwgOwor6KOB5patID4gc2FpZGFuXCA7CivmipzokIMgPiBiYXNzdWlcIDsKK+e0m+S6iSA+IGZ1bnNvdVwgOwor5omA6LyJID4gc2hvc2FpXCA7CivmiYvotrMgPiB0ZWFzaGlcIDsKK+Wcp+acjSA+IGFwcHVrdVwgOwor57Sb5LmxID4gZnVucmFuXCA7CivmvbDnmI0gPiBrYWl5b3VcIDsKK+mWi+WiviA+IGthaWtvblwgOwor5Zyw5pa5ID4gY2hpaG91XCA7CivmjqjmjJkgPiBzdWlreW9cIDsKK+WbveavjSA+IGtva3Vib1wgOwor57KS5bqmID4gcnl1dWRvXCA7CivlnLDmlocgPiBjaGltb25cIDsKK+ihl+eHiCA+IGdhaXRvdVwgOwor5ri46a2aID4geXV1Z3lvXCA7Civmipfoj4wgPiBrb3VraW5cIDsKK+e0meS4iiA+IHNoaWpvdVwgOwor6ZaL5aC0ID4ga2Fpam91XCA7Civono3op6MgPiB5dXVrYWlcIDsKK+Wbnua8lSA+IGthaXNvdVwgOwor5Zyf5pyoID4gZG9ib2t1XCA7CivplonloLQgPiBoZWlqb3VcIDsKK+iiq+acjSA+IGhpZnVrdVwgOwor5ZaJ6aCtID4ga291dG91XCA7CivplpHlnLAgPiBrYW5jaGlcIDsKK+exs+aHhyA+IGJlaWtvblwgOwor6ZeY5LqJID4gdG91c291XCA7CivntI3kvJogPiBub3VrYWlcIDsKK+mWi+WfjiA+IGthaWpvdVwgOwor6Zaj5ZOhID4ga2FrdWluXCA7CivploDlpJYgPiBtb25nYWlcIDsKK+aNuuafkyA+IG5hc3NlblwgOwor6KKr5pudID4gaGliYWt1XCA7CivmjqjmiLQgPiBzdWl0YWlcIDsKK+WfjuWGhSA+IGpvdW5haVwgOwor566h56uvID4ga2FudGFuXCA7Civln47lhbUgPiBqb3VoZWlcIDsKK+a8geiIuSA+IGd5b3NlblwgOwor6ZeH5YCkID4geWFtaW5lXCA7CivmvJTnv5IgPiBlbnNodXVcIDsKK+aOpeaIpiA+IHNlc3NlblwgOwor5Zue5ri4ID4ga2FpeXV1XCA7CivooZfnga8gPiBnYWl0b3VcIDsKK+ertui8qiA+IGtlaXJpblwgOwor5oyB55eFID4gamlieW91XCA7CivplbflpbMgPiBjaG91am9cIDsKK+WbveaoqSA+IGtva2tlblwgOwor57SK5LmxID4gYnVucmFuXCA7CivplbflpJwgPiBjaG91eWFcIDsKK+aMh+eSsCA+IHl1Yml3YVwgOwor5ouZ56i/ID4gc2Vra291XCA7CivlnJ/mlrkgPiBkb2thdGFcIDsKK+aJk+iouiA+IGRhc2hpblwgOwor5ZaE6ZyKID4gemVucmVpXCA7Civmi53npLwgPiBoYWlyZWlcIDsKK+Wbm+a1tyA+IHNoaWthaVwgOwor5Zyn5pC+ID4gYXNzYWt1XCA7Civmurbop6MgPiB5b3VrYWlcIDsKK+a8lOe5uSA+IGVuJydla2lcIDsKK+ijnOW8tyA+IGhva3lvdVwgOwor6ZaA5ZywID4gbW9uY2hpXCA7Civmi5jnpoEgPiBrb3VraW5cIDsKK+eri+mMkCA+IHJpc3N1aVwgOwor57K+5ZqiID4gc2Vpbm91XCA7CivlloTpmqMgPiB6ZW5yaW5cIDsKK+eskeipsSA+IHNob3V3YVwgOwor6Y6U6YqRID4geW91c2VuXCA7CivmiKbou4ogPiBzZW5zaGFcIDsKK+WdkeW6lSA+IGtvdXRlaVwgOwor54Gv5Y+wID4gdG91ZGFpXCA7CivnrpfnqIsgPiBzYW50ZWlcIDsKK+aJi+iosSA+IHRlbW90b1wgOwor5rig6a2BID4ga3lva2FpXCA7CivoobDmrosgPiBzdWl6YW5cIDsKK+ihsOatuyA+IHN1aXNoaVwgOwor57KJ5bGLID4ga29uYXlhXCA7Civln47ku6MgPiBqb3VkYWlcIDsKK+aJgOirliA+IHNob3JvblwgOwor5Zub5rCRID4gc2hpbWluXCA7Civlm6PmrJIgPiBkYW5yYW5cIDsKK+a6gOi8iSA+IG1hbnNhaVwgOwor5o6l5b6FID4gc2V0dGFpXCA7CivmuoDou4ogPiBtYW5zaGFcIDsKK+aJgOipriA+IHNob3NlblwgOwor5Z+O5Li7ID4gam91c2h1XCA7CivlnKjmiYAgPiB6YWlzaG9cIDsKK+eAkeW4gyA+IGJha3VmdVwgOwor57Gz5bidID4gYmVpdGVpXCA7Civns5bliIYgPiB0b3VidW5cIDsKK+aQreS5lyA+IHRvdWpvdVwgOwor5Zad6YeHID4ga2Fzc2FpXCA7Civplovlj6MgPiBrYWlrb3VcIDsKK+a6tuiejSA+IHlvdXl1dVwgOwor54Gw5YiGID4ga2FpYnVuXCA7CivlmLLnvbUgPiBjaG91YmFcIDsKK+eti+iFqyA+IGtpbnNodVwgOwor6ZaJ5Y+jID4gaGVpa291XCA7Civom67poqggPiBiYW5wdXVcIDsKK+aHh+mhmCA+IGtvbmdhblwgOwor562G6Ie0ID4gaGl0Y2hpXCA7CivmiYDoposgPiBzaG9rZW5cIDsKK+aJgOimgSA+IHNob3lvdVwgOwor5Zuz5p+EID4genVnYXJhXCA7Civoo4XlvL4gPiBzb3VkYW5cIDsKK+aIiui+sCA+IGJvc2hpblwgOwor5ryB57ayID4gZ3lvbW91XCA7Civlm73mmK8gPiBrb2t1emVcIDsKK+eBr+WFiSA+IHRvdWtvdVwgOwor57Oe5L6/ID4gZnVuYmVuXCA7CivonbTonbYgPiBrb2Nob3VcIDsKK+a9rueArCA+IHNoaW9zZVwgOwor6Zai5L+CID4ga2Fua2VpXCA7Civnq6Xosp4gPiBkb3V0ZWlcIDsKK+eqgemiqCA+IHRvcHB1dVwgOwor5r+A5piCID4gZ2Vra291XCA7Civmipjnt5ogPiBzZXNzZW5cIDsKK+eBq+WFiCA+IGhvc2FraVwgOwor57Gz5bGLID4ga29tZXlhXCA7CivngavlhYMgPiBoaW1vdG9cIDsKK+WcsOW9oiA+IGNoaWtlaVwgOwor5rqA6LKrID4gbWFuZ2FuXCA7Civoo4XluYAgPiBzb3V0ZWlcIDsKK+aPuuWLlSA+IHlvdWRvdVwgOwor57Ch5piOID4ga2FubWVpXCA7CivmiK/oqZUgPiBnaWh5b3VcIDsKK+eyvuWLpCA+IHNlaWtpblwgOwor5oqc57O4ID4gYmFzc2hpXCA7CivooYDmuIUgPiBrZXNzZWlcIDsKK+eptOmmrCA+IGFuYXVtYVwgOwor57K+5YqxID4gc2VpcmVpXCA7CivngavlgrcgPiB5YWtlZG9cIDsKK+a7heiPjCA+IG1la2tpblwgOwor562G6ICVID4gaGlra291XCA7Civpjq7orbcgPiBjaGluZ29cIDsKK+ibrumatyA+IGJhbnJlaVwgOwor562G6ICFID4gaGlzc2hhXCA7CivmipznsosgPiBiYXNzdWlcIDsKK+WcsOW6lSA+IGNoaXRlaVwgOwor5Zyo5b25ID4gemFpZWtpXCA7CivmiY3ol7sgPiBzYWlzb3VcIDsKK+WcsOW5syA+IGNoaWhlaVwgOwor57K+5YiwID4gc2VpdG91XCA7Civmj5vllqkgPiBrYW4nJ3l1XCA7CivnsonlobUgPiBmdW5qaW5cIDsKK+WcsOW4ryA+IGNoaXRhaVwgOwor56+A54K5ID4gc2V0dGVuXCA7CivmjqjlrpogPiBzdWl0ZWlcIDsKK+erpeisoSA+IGRvdXlvdVwgOwor5ZWP6aGMID4gbW9uZGFpXCA7CivploDliY0gPiBtb256ZW5cIDsKK+Wbm+ahgSA+IHlva2V0YVwgOwor6KGM5q6KID4gZ3lvdWpvXCA7CivlnablnaYgPiB0YW50YW5cIDsKK+epuumfsyA+IHNvcmFuZVwgOwor6Zai5LiOID4ga2FuJyd5b1wgOwor5Zyn5bu2ID4gYXRzdWVuXCA7CivoobDmm78gPiBzdWl0YWlcIDsKK+mWi+WCrCA+IGthaXNhaVwgOwor6ZaA5Ye6ID4ga2Fkb2RlXCA7Civnsr7lhbUgPiBzZWloZWlcIDsKK+aOoeWvuCA+IHNhaXN1blwgOwor6ZaL5YKYID4ga2Fpc2FuXCA7Civmibbnv7wgPiBmdXlva3VcIDsKK+aQjeS6oSA+IHNvbmJvdVwgOwor6ZaD5YWJID4gc2Vua291XCA7CivnsaDlsYUgPiByb3VreW9cIDsKK+WdkeWkliA+IGtvdWdhaVwgOwor5oe46LuNID4ga2VuZ3VuXCA7Civpvo3ppqwgPiByeXV1bWVcIDsKK+epuumbuyA+IGt1dWRlblwgOwor5Zub5pu4ID4gc2hpc2hvXCA7CivmjJnmraIgPiBreW9zaGlcIDsKK+ijveWTgSA+IHNlaWhpblwgOwor56m66ZqbID4ga3V1c2FpXCA7CivlloTpgZMgPiB6ZW5kb3VcIDsKK+a4hemiqCA+IHNlaWZ1dVwgOwor566h54q2ID4ga2Fuam91XCA7CivpjZvpjKwgPiB0YW5yZW5cIDsKK+WcsOWxpCA+IGNoaXNvdVwgOwor54Gr5LitID4ga2FjaHV1XCA7Civlm73mioAgPiBrb2t1Z2lcIDsKK+mMsumfsyA+IHJva3VvblwgOwor6Y2b6Yu8ID4gdGFua291XCA7Civoo4HlrpogPiBzZWl0ZWlcIDsKK+aJgOiUtSA+IHNob3pvdVwgOwor6ZW35YaGID4gY2hvdWVuXCA7CivplovkvJogPiBrYWlrYWlcIDsKK+a4rOmOliA+IHNva3VzYVwgOwor5r2f5rmWID4gc2VraWtvXCA7CivllonovKogPiBub2Rvd2FcIDsKK+a4i+mdoiA+IGp1dW1lblwgOwor6ZaJ5LyaID4gaGVpa2FpXCA7Civlm57ml4sgPiBrYWlzZW5cIDsKK+ethue0mSA+IGhpc3NoaVwgOwor5o2V5o2JID4gaG9zb2t1XCA7CivnqbrplqggPiBrdXVrZWlcIDsKK+a9ruawlyA+IHNoaW9rZVwgOwor5Zue5paHID4ga2FpYnVuXCA7CivmvJTnm64gPiBlbm1va3VcIDsKK+epuumWkyA+IGt1dWthblwgOwor5Zu95oayID4ga29ra2VuXCA7Civlm57mlbAgPiBrYWlzdXVcIDsKK+aKleeovyA+IHRvdWtvdVwgOwor5Zu95oW2ID4ga29ra2VpXCA7CivmiY3oirggPiBzYWlnZWlcIDsKK+ikh+WIqSA+IGZ1a3VyaVwgOwor6KOP5aOwID4gdXJhZ29lXCA7Civmu57ntI0gPiB0YWlub3VcIDsKK+Wbm+aVoyA+IHNoaXNhblwgOwor5riT6ZaTID4ga2Vpa2FuXCA7Civmi6DngrkgPiBreW90ZW5cIDsKK+aJi+iKuCA+IHNodWdlaVwgOwor5ris6YmbID4gc29rdWVuXCA7CivlnKjlrpggPiB6YWlrYW5cIDsKK+WZtOeFmSA+IGZ1bicnZW5cIDsKK+a7nuexsyA+IHRhaWJlaVwgOwor5ryC56CCID4gaHlvdXNhXCA7CivploDkurogPiBtb25qaW5cIDsKK+ethueulyA+IGhpc3NhblwgOwor5Zu95oGpID4ga29rdW9uXCA7CivmjoPlsIQgPiBzb3VzaGFcIDsKK+mOlOinoyA+IHlvdWthaVwgOwor562G562UID4gaGl0dG91XCA7CivmiY3ohZUgPiBzYWl3YW5cIDsKK+WbsOaGiiA+IGtvbnBhaVwgOwor56+A5rC0ID4gc2Vzc3VpXCA7CivmvYXmvJEgPiBrYW5nYWlcIDsKK+ethuerryA+IGhpdHRhblwgOwor562U56S8ID4gdG91cmVpXCA7CivmiYvohZUgPiBzaHV3YW5cIDsKK+a9nOawtCA+IHNlbnN1aVwgOwor5r+A5oCSID4gZ2VraWRvXCA7CivmiY3og70gPiBzYWlub3VcIDsKK+ijheWhqyA+IHNvdXRlblwgOwor5ouz5rOVID4ga2VucG91XCA7CivmuIXplpEgPiBzZWlrYW5cIDsKK+aOpeWcsCA+IHNldGNoaVwgOwor6Y2b6YCgID4gdGFuem91XCA7Civnq5zonaYgPiBpc2VlYmlcIDsKK+WcsOWkiSA+IGNoaWhlblwgOwor6KGA5qCTID4ga2Vzc2VuXCA7CivmjpLlpJYgPiBoYWlnYWlcIDsKK+Wbo+aJhyA+IHVjaGl3YVwgOwor5omL6IG3ID4gdGVqb2t1XCA7CivnqpPovrogPiBtYWRvYmVcIDsKK+ihk+aVsCA+IGp1c3N1dVwgOwor57Gg5Z+OID4gcm91am91XCA7CivmvKvnhLYgPiBtYW56ZW5cIDsKK+a7nuepuiA+IHRhaWt1dVwgOwor5rex6ZuqID4gbWl5dWtpXCA7CivlnLDloYogPiBjaGlrYWlcIDsKK+WbnuaIpiA+IGthaXNlblwgOwor5r+B5bqmID4gZGFrdWRvXCA7CivmiYvnv7AgPiBzaHVrYW5cIDsKK+WcqOWkqSA+IHphaXRlblwgOwor6KGM5peFID4ga291cnlvXCA7CivnqL3pppYgPiBrZWlzaHVcIDsKK+ernOiZjiA+IHJ5b3Vrb1wgOwor5Zyo5aSWID4gemFpZ2FpXCA7CivoobDmhYsgPiBzdWl0YWlcIDsKK+ihjOaWhyA+IGtvdWJ1blwgOwor6KGA5pu4ID4ga2Vzc2hvXCA7Civoo4LlnLAgPiBraXJlamlcIDsKK+WdkeWPoyA+IGtvdWtvdVwgOwor5Zyw5Z+fID4gY2hpaWtpXCA7CivmuJvphY0gPiBnZW5wYWlcIDsKK+epjembsiA+IHNla2l1blwgOwor5rqA6JKZID4gbWFubW91XCA7CivmvLjmuJsgPiB6ZW5nZW5cIDsKK+WbnuaDsyA+IGthaXNvdVwgOwor5ruR56m6ID4ga2Fra3V1XCA7Civmt7HplpMgPiBmdWthbWFcIDsKK+a7keeovSA+IGtva2tlaVwgOwor5ryr5ryrID4gbWFubWFuXCA7CivpjKzpi7wgPiByZW5rb3VcIDsKK+ihgOaWkSA+IGtlcHBhblwgOwor56ia6bCkID4gd2FyYXNhXCA7CivmuJvpgIAgPiBnZW50YWlcIDsKK+err+iJhyA+IHRhbnRlaVwgOwor5o6l5ZC7ID4gc2VwcHVuXCA7Civmjqjlj4IgPiBzdWlzYW5cIDsKK+aLmOazpSA+IGtvdWRlaVwgOwor562L55uuID4gc3VqaW1lXCA7CivmiKboiaYgPiBzZW5rYW5cIDsKK+ijnOWJhyA+IGhvc29rdVwgOwor5o2o5a2QID4gc3V0ZWdvXCA7CivlmbTms4kgPiBmdW5zZW5cIDsKK+eomumujiA+IGNoaWF5dVwgOwor6Jyl6Jy0ID4gdG9rYWdlXCA7Civmi53mrr8gPiBoYWlkZW5cIDsKK+eomumtmiA+IGNoaWd5b1wgOwor5Z2H5YuiID4ga2luc2VpXCA7Civlm73lr4wgPiBrb2t1ZnVcIDsKK+aOoeWPliA+IHNhaXNodVwgOwor5Z2R5YaFID4ga291bmFpXCA7CivlmbTmsLQgPiBmdW5zdWlcIDsKK+aJi+e0mSA+IHRlZ2FtaVwgOwor566X5rOVID4gc2FucG91XCA7Civlm73lrZcgPiBrb2t1amlcIDsKK+WbmuW+kiA+IHNodXV0b1wgOwor6KGw5bmjID4gc3VpaGVpXCA7Civnr4bmm7ggPiB0ZW5zaG9cIDsKK+eorumhniA+IHNodXJ1aVwgOwor5riF6YWSID4gc2Vpc2h1XCA7CivnsonkvZMgPiBmdW50YWlcIDsKK+Wcj+WkliA+IGtlbmdhaVwgOwor6KOc5YSfID4gaG9zaG91XCA7CivllYbpgYsgPiBzaG91dW5cIDsKK+WbnuW7iiA+IGthaXJvdVwgOwor56m66LuiID4ga3V1dGVuXCA7CivlnYfliIYgPiBraW5idW5cIDsKK+a7heengSA+IG1lc3NoaVwgOwor56m66LuNID4ga3V1Z3VuXCA7Civnqbrou4ogPiBrdXVzaGFcIDsKK+eyi+S6uiA+IHN1aWppblwgOwor5omL57GgID4gdGVrYWdvXCA7CivnqbrouqsgPiBrYXJhbWlcIDsKK+aMh+aVsCA+IHNoaXN1dVwgOwor5ZaE6KGMID4gemVua291XCA7CivpjJrpjJogPiBzb3Vzb3VcIDsKK+aJi+ewoSA+IHNodWthblwgOwor566X5q61ID4gc2FuZGFuXCA7CivmuIXpgYogPiBzZWl5dXVcIDsKK+WcsOWQjSA+IGNoaW1laVwgOwor5rqA6IWUID4gbWFua291XCA7CivmiqvngJ0gPiBoaXJla2lcIDsKK+aLkuatoiA+IGt5b3NoaVwgOwor5omL566xID4gdGViYWtvXCA7CivmiYvnrqEgPiB0ZWt1ZGFcIDsKK+ethueUnyA+IGhpc3NlaVwgOwor6KOc5L+uID4gaG9zaHV1XCA7CivmjqXlhpkgPiBzZXNzaGFcIDsKK+Wbm+W3nSA+IHNoaXNlblwgOwor5omL562LID4gdGVzdWppXCA7CivmiYvnrYggPiB0ZWhhenVcIDsKK+aMmeaJiyA+IGt5b3NodVwgOwor56qB6LKrID4gdG9ra2FuXCA7CivooaHlubMgPiBrb3VoZWlcIDsKK+a6lue4hCA+IGp1bmpvdVwgOwor56u557iBID4gdGFrZWVuXCA7CivmjpLljbUgPiBoYWlyYW5cIDsKK+a5r+iKsSA+IHl1YmFuYVwgOwor5rib6LOHID4gZ2Vuc2hpXCA7CivooYDmiKYgPiBrZXNzZW5cIDsKK+aHh+iriyA+IGtvbnNlaVwgOwor5oeH6KuHID4ga29uZGFuXCA7CivmjajloLQgPiBzdXRlYmFcIDsKK+aOoeWFiSA+IHNhaWtvdVwgOwor5Zyw5YuiID4gY2hpc2VpXCA7Civmua/oiLkgPiB5dWJ1bmVcIDsKK+etkueKtiA+IHRvdWpvdVwgOwor6KGG5oSaID4gc2h1dWd1XCA7CivnqLLploAgPiB0b3Vtb25cIDsKK+ijgeWIpCA+IHNhaWJhblwgOwor56uc6IOGID4gcmluZG91XCA7CivmiYDnrqEgPiBzaG9rYW5cIDsKK+a3semDqCA+IHNoaW5idVwgOwor5oi457GNID4ga29zZWtpXCA7CivmjqLlgbUgPiB0YW50ZWlcIDsKK+evgOaTjSA+IHNlc3NvdVwgOwor6KKr5ZGKID4gaGlrb2t1XCA7Civmt7fov7cgPiBrb25tZWlcIDsKK+a7heebuCA+IG1lc3NvdVwgOwor56uv57eaID4gdGFuc2VuXCA7Civnq6/nt5IgPiB0YW5jaG9cIDsKK+WcqOWLpCA+IHphaWtpblwgOwor5r2U5paOID4ga2Vzc2FpXCA7CivmiJDogrIgPiBzZWlpa3VcIDsKK+iciOiaoyA+IG11a2FkZVwgOwor5Zyn5YudID4gYXNzaG91XCA7CivmtbfpvKAgPiBuYW1ha29cIDsKK+aIpue3miA+IHNlbnNlblwgOwor5ry/5p6cID4gc2hvdWthXCA7Civlm7rln7cgPiBrb3NodXVcIDsKK+aOpeS8tCA+IHNlcHBhblwgOwor56u557CAID4gdGFrZXN1XCA7Civlmajmpb0gPiBraWdha3VcIDsKK+WcsOWFgyA+IGppbW90b1wgOwor5re36LyJID4ga29uc2FpXCA7CivmtrLpnaIgPiBla2ltZW5cIDsKK+ibh+i2syA+IGRhc29rdVwgOwor5ru+5ru+ID4ga29ua29uXCA7Civlm73lnJ8gPiBrb2t1ZG9cIDsKK+iZuemckyA+IGtvdWdlaVwgOwor6KGM5bm4ID4gbWl5dWtpXCA7CivooYzlubQgPiBrb3VuZW5cIDsKK+epuuirliA+IGt1dXJvblwgOwor56m66KuHID4ga3V1ZGFuXCA7CivmvIHmuK8gPiBneW9rb3VcIDsKK+a4heiypyA+IHNlaWhpblwgOwor5omN55+lID4gc2FpY2hpXCA7CivonYvntJkgPiByb3VzaGlcIDsKK+aEm+mzpSA+IGFpY2hvdVwgOwor6Juu6KGMID4gYmFua291XCA7CivmvI/msLQgPiByb3VzdWlcIDsKK+WVhuitsCA+IHNob3VnaVwgOwor6KCx5oORID4ga293YWt1XCA7CivmiK/nrJEgPiBnaXNob3VcIDsKK+eti+eCjiA+IGtpbicnZW5cIDsKK+aOkuS+vyA+IGhhaWJlblwgOwor5Zu95Za2ID4ga29rdWVpXCA7Civlm5vlp5MgPiBzaGlzZWlcIDsKK+aLruaNriA+IGtpa2t5b1wgOwor5oqr5q20ID4gaGlyZWtpXCA7CivmjZXlm5ogPiBob3NodXVcIDsKK+WbnuWkqSA+IGthaXRlblwgOwor5oyv5a2QID4gZnVyaWtvXCA7CivlmbjmlbAgPiB0b25zdXVcIDsKK+a8geazlSA+IGd5b2hvdVwgOwor6KOF5LiBID4gc291dGVpXCA7Civlm6PloYogPiBkYW5rYWlcIDsKK+aNp+WRiCA+IGhvdXRlaVwgOwor5rib6KGwID4gZ2Vuc3VpXCA7CivlnLDku6MgPiBjaGlkYWlcIDsKK+aIpuerryA+IHNlbnRhblwgOwor5Zar57eKID4ga2lra2luXCA7Civlm5vlo7AgPiBzaGlzZWlcIDsKK+aJi+eZliA+IHRla3VzZVwgOwor5ouu5oqXID4ga2lra291XCA7CivpjK/oqqQgPiBzYWt1Z29cIDsKK+eojumWoiA+IHplaWthblwgOwor5ryB5rCRID4gZ3lvbWluXCA7CivlnKjkvY8gPiB6YWlqdXVcIDsKK+iaiumJpCA+IGthYmFyaVwgOwor5oyH5by+ID4gc2hpZGFuXCA7Civlm57loLEgPiBrYWlob3VcIDsKK+WcsOS4iiA+IGNoaWpvdVwgOwor5Zyo5Lu7ID4gemFpbmluXCA7CivlnKfkvI8gPiBhcHB1a3VcIDsKK+a9ruW5siA+IHNoaW9oaVwgOwor5rW36a2aID4ga2FpZ3lvXCA7Civll5znnKAgPiBzaGltaW5cIDsKK+eul+aVsCA+IHNhbnN1dVwgOwor5Zyf5L+1ID4gZG9oeW91XCA7CivlnJLlhoUgPiBlbicnbmFpXCA7Civlm6PlnLAgPiBkYW5jaGlcIDsKK+Wcn+S/lyA+IGRvem9rdVwgOwor6JqK6YedID4ga2FiYXJpXCA7CivooYblr6EgPiBzaHV1a2FcIDsKK+aKnOatryA+IGJhc3NoaVwgOwor5r2u5beuID4gY2hvdXNhXCA7Civmv4PljpogPiBub3Vrb3VcIDsKK+a8ouabuCA+IGthbnNob1wgOwor5omT55CDID4gZGFreXV1XCA7CivpvLvpj6EgPiBiaWt5b3VcIDsKK+espueJkiA+IGZ1Y2hvdVwgOwor5Zyo5LiWID4gemFpc2VpXCA7CivmjojkubMgPiBqdW55dXVcIDsKK+a1t+mpoiA+IGFzaGlrYVwgOwor5ryr5paHID4gbWFuYnVuXCA7CivooajlnJ8gPiBoeW91ZG9cIDsKK+aIkOeulyA+IHNlaXNhblwgOwor5Zu95YuZID4ga29rdW11XCA7Civmtojpn7MgPiBzaG91b25cIDsKK+ewoeWNmCA+IGthbnRhblwgOwor5oiR562JID4gd2FyZXJhXCA7CivmjL3lm54gPiBiYW5rYWlcIDsKK+aKmOaquyA+IHNla2thblwgOwor56m66JmaID4ga3V1a3lvXCA7Civmv4Dli5kgPiBnZWtpbXVcIDsKK+Wcn+S4rSA+IGRvY2h1dVwgOwor5omA55SoID4gc2hveW91XCA7CivmiYDnlKMgPiBzaG9zYW5cIDsKK+a8ouaWuSA+IGthbnBvdVwgOwor5re66KaLID4gc2Vua2VuXCA7Civono3ngrkgPiB5dXV0ZW5cIDsKK+WbveWIqSA+IGtva3VyaVwgOwor5ryi5paHID4ga2FuYnVuXCA7CivmiYvnjokgPiB0ZWRhbWFcIDsKK+a7lOa7lCA+IHRvdXRvdVwgOwor5Zaq56ugID4gbW9zaG91XCA7CivmiJDnqbogPiBzZWlrdXVcIDsKK+Wah+aAkiA+IGtha3Vkb1wgOwor5Zuj5ZOhID4gZGFuJydpblwgOwor562G5rOVID4gaGlwcG91XCA7CivmtbfpoqggPiBrYWlmdXVcIDsKK+aJi+eLrSA+IHRlemVtYVwgOwor5Zu95YWJID4ga29ra291XCA7CivmjIflsI4gPiBzaGlkb3VcIDsKK+m8vumFlCA+IGthbnN1aVwgOwor6YqA6bGXID4gZ2lucmluXCA7CivmhJ/pm7sgPiBrYW5kZW5cIDsKK+WVk+iSmSA+IGtlaW1vdVwgOwor6KGG5aSaID4gc2h1dXRhXCA7CivnqI7ph5EgPiB6ZWlraW5cIDsKK+aMh+WumiA+IHNoaXRlaVwgOwor5rip6ImvID4gb25yeW91XCA7Civllqrnpa0gPiBzb3VzYWlcIDsKK+aHkOiDjiA+IGthaXRhaVwgOwor5rW36Z2iID4ga2FpbWVuXCA7Civpu5LptZAgPiBrdXJvamlcIDsKK+e0r+OAhSA+IHJ1aXJ1aVwgOwor5ryr5omNID4gbWFuemFpXCA7CivooI/luqcgPiBrYW5pemFcIDsKK+ihsOWLoiA+IHN1aXNlaVwgOwor5ryB5p2RID4gZ3lvc29uXCA7Civmtbfpm6MgPiBrYWluYW5cIDsKK+WgguOAhSA+IGRvdWRvdVwgOwor5ZuC5ZuCID4gZ291Z291XCA7CivmvIHmnJ8gPiByeW91a2lcIDsKK+epuuiNtyA+IGthcmFuaVwgOwor5oqx5pOBID4gaG91eW91XCA7Civpi7PosqggPiBjaHV1a2FcIDsKK+ihgOWhiiA+IGtla2thaVwgOwor5Zub5Y2DID4geW9uc2VuXCA7Civlm5vljYEgPiB5b25qdXVcIDsKK+ewoeS+vyA+IGthbmJlblwgOwor5Zu95LyaID4ga29ra2FpXCA7CivnrqHlvKYgPiBrYW5nZW5cIDsKK+a1t+mYsiA+IGthaWJvdVwgOwor5ZSQ6KmpID4gdG91c2hpXCA7CivpvLvovKogPiBoYW5hd2FcIDsKK+WbveS6pCA+IGtva2tvdVwgOwor5Zu95LqLID4ga29rdWppXCA7CivmtbfplqIgPiBrYWlrYW5cIDsKK+aKleabuCA+IHRvdXNob1wgOwor5rW36ZaAID4ga2FpbW9uXCA7Civlm7PkvZMgPiB6dXV0YWlcIDsKK+euseWxiyA+IGhha295YVwgOwor5ruF5rOVID4gbWVwcG91XCA7Civlm5vliIYgPiBzaGlidW5cIDsKK+aKteaKlyA+IHRlaWtvdVwgOwor6ZG95a2UID4gc2Fua291XCA7Civmv4HkuJYgPiBkYWt1c2VcIDsKK+eCueOAhSA+IHRlbnRlblwgOwor6b2y6J2VID4gdXNob2t1XCA7CivmiYvmvIkgPiB0ZXN1a2lcIDsKK+ihqOWFtyA+IGh5b3VndVwgOwor6Y2b57e0ID4gdGFucmVuXCA7Civon7nluqcgPiBrYW5pemFcIDsKK+iar+iakyA+IG1pbWl6dVwgOwor5rq25rayID4geW91ZWtpXCA7CivmvIHmkoggPiBneW9yb3VcIDsKK+evgOWljyA+IHNlc3NvdVwgOwor5ZWG6IiXID4gc2hvdWhvXCA7Civpi7zoo70gPiBrb3VzZWlcIDsKK+aLkOW4ryA+IGthaXRhaVwgOwor5rib6ICXID4gZ2VubW91XCA7Civnq6/niakgPiBoYW1vbm9cIDsKK+aEn+mKmCA+IGthbm1laVwgOwor5oim54qvID4gc2VucGFuXCA7CivmirHmh5AgPiBob3VrYWlcIDsKK+ihjOWPuCA+IGd5b3VqaVwgOwor5ouF5b2TID4gdGFudG91XCA7Civnr4nln44gPiB0c3Vpa2lcIDsKK+eqkue0oCA+IGNoaXNzb1wgOwor5Zuj5L2TID4gZGFudGFpXCA7Civmi6DlroggPiBreW9zaHVcIDsKK+mLreinkiA+IGVpa2FrdVwgOwor56eY6YyyID4gaGlyb2t1XCA7Civmi5vlrrQgPiBzaG91ZW5cIDsKK+engemXmCA+IHNoaXRvdVwgOwor6KGw5LqhID4gc3VpYm91XCA7Civnq5znjosgPiByeXV1b3VcIDsKK+err+eEtiA+IHRhbnplblwgOwor5Zuj5LqkID4gZGFua291XCA7CivlmbTlsIQgPiBmdW5zaGFcIDsKK+ihjOWLlSA+IGtvdWRvdVwgOwor5ZWP572qID4gbW9uemFpXCA7CivmiYvms5UgPiBzaHVob3VcIDsKK+m7m+mdkiA+IHRhaXNlaVwgOwor5ouZ5a6IID4gc2Vzc2h1XCA7CivoobDkuJYgPiBzdWlzZWlcIDsKK+ibh+iFuSA+IGphYmFyYVwgOwor562J5pa5ID4gdG91aG91XCA7Civlkb3poYwgPiBtZWlkYWlcIDsKK+a9nOWcqCA+IHNlbnphaVwgOwor5oWj6KGMID4ga2Fua291XCA7CivmiYvmsLQgPiB0ZW1penVcIDsKK+aKteW9kyA+IHRlaXRvdVwgOwor5oSb6YO3ID4gYWlreW91XCA7CivnrJHmsJcgPiBzaG91a2lcIDsKK+a6nea4oCA+IGtvdWt5b1wgOwor5oqX5ouSID4ga291a3lvXCA7CivmiKbngb0gPiBzZW5zYWlcIDsKK+mKmOmKmCA+IG1laW1laVwgOwor5omL5q+sID4gdGVtYXJpXCA7CivmipjmipggPiBvcmlvcmlcIDsKK+a5r+eOiSA+IHl1ZGFtYVwgOwor5oyr5YK3ID4gemFzaG91XCA7CivnrpflrpogPiBzYW50ZWlcIDsKK+ertua8lCA+IGt5b3VlblwgOwor5oyZ5YuVID4ga3lvZG91XCA7CivmtYHpn7MgPiByeXV1b25cIDsKK+aJi+autSA+IHNodWRhblwgOwor5oiQ54qsID4gc2Vpa2VuXCA7Civpjq7ngasgPiBjaGlua2FcIDsKK+aKl+aIpiA+IGtvdXNlblwgOwor6buS6ZuyID4ga29rdXVuXCA7CivmipXmiYsgPiB0b3VzaHVcIDsKK+a6gOeCuSA+IG1hbnRlblwgOwor6KGM5YSAID4gZ3lvdWdpXCA7CivpjbXnm6QgPiBrZW5iYW5cIDsKK+a1gemcsiA+IHJ5dXVyb1wgOwor5oqK5o2JID4gaGFzb2t1XCA7CivmjIflkJEgPiBzaGlrb3VcIDsKK+ihgOWIpCA+IGtlcHBhblwgOwor5oyH5ZCNID4gc2hpbWVpXCA7Civol7vpoZ4gPiBzb3VydWlcIDsKK+a1gemboiA+IHJ5dXVyaVwgOwor6YqY6YWSID4gbWVpc2h1XCA7CivmtbfpgZMgPiBrYWlkb3VcIDsKK+m8oOiziiA+IHNvem9rdVwgOwor5oyZ5YW1ID4ga3lvaGVpXCA7CivmuKnnqoEgPiBvbmRvcnVcIDsKK+aJi+apnyA+IHRlYmF0YVwgOwor6ZGR5a6aID4ga2FudGVpXCA7CivmjJnlhZogPiBreW90b3VcIDsKK+aLt+WVjyA+IGdvdW1vblwgOwor5oyH5Y2XID4gc2hpbmFuXCA7Civono3mnJcgPiB5dXVyb3VcIDsKK+m6uumhniA+IG1lbnJ1aVwgOwor5rib566XID4gZ2VuemFuXCA7CivpioXpiq0gPiBkb3VzZW5cIDsKK+ertuazsyA+IGt5b3VlaVwgOwor6KGM5L2/ID4ga291c2hpXCA7CivmiLjmr44gPiBrb2dvdG9cIDsKK+mKhemJsSA+IGRvdWtvdVwgOwor5rib562JID4gZ2VudG91XCA7CivmiYvmpa0gPiB0ZXdhemFcIDsKK+a8uOWilyA+IHplbnpvdVwgOwor56aP6Z+zID4gZnVrdWluXCA7CivmupDms4kgPiBnZW5zZW5cIDsKK+a1t+i7jSA+IGthaWd1blwgOwor5raI6LK7ID4gc2hvdWhpXCA7CivmuoDmuoAgPiBtYW5tYW5cIDsKK+a1qumAnyA+IG5hbml3YVwgOwor6YqA6YmxID4gZ2lua291XCA7CivooYzkurogPiBrb3VqaW5cIDsKK+WVj+etlCA+IG1vbmRvdVwgOwor5ZC56bO0ID4gc3VpbWVpXCA7CivnrYbmiY0gPiBoaXNzYWlcIDsKK+ihjOS6iyA+IGd5b3VqaVwgOwor6YqA6Yi0ID4gZ2lucmVpXCA7CivmuIXntJQgPiBzZWlqdW5cIDsKK+ethuaIpiA+IGhpc3NlblwgOwor56e76KitID4gaXNldHN1XCA7CivomZroqpUgPiBreW90YW5cIDsKK+aIpuazlSA+IHNlbnBvdVwgOwor5reL6I+MID4gcmlua2luXCA7CivmurbmnZAgPiB5b3V6YWlcIDsKK+a4m+eojiA+IGdlbnplaVwgOwor5oqX5byBID4ga291YmVuXCA7CivnrZblv5wgPiBzYWt1b3VcIDsKK+epuuepuiA+IGt1dWt1dVwgOwor56u25q2pID4ga3lvdWhvXCA7CivmuIXnsosgPiBzZWlzdWlcIDsKK+engemCuCA+IHNoaXRlaVwgOwor6bqq6aGeID4gbWVucnVpXCA7CivmuKnnn7MgPiBvbmpha3VcIDsKK+iZmuiogCA+IGt5b2dlblwgOwor6buS6Y21ID4ga29ra2VuXCA7CivmiYvmn4QgPiB0ZWdhcmFcIDsKK+engemBuCA+IHNoaXNlblwgOwor5omL5p63ID4gdGVrYXNlXCA7Civmt7fnt5ogPiBrb25zZW5cIDsKK+engemBkyA+IHNoaWRvdVwgOwor562G5oSPID4gaGl0c3VpXCA7Civnr4DliLYgPiBzZXNzZWlcIDsKK+err+atoyA+IHRhbnNlaVwgOwor5omL5pytID4gdGVmdWRhXCA7CivmuIXnrpcgPiBzZWlzYW5cIDsKK+etlOW8gSA+IHRvdWJlblwgOwor5omB5qGDID4gaGVudG91XCA7CivmvZzlh70gPiBzZW5rYW5cIDsKK+a0l+mhlCA+IHNlbmdhblwgOwor5oud5ZWTID4gaGFpa2VpXCA7CivmiKbmrbsgPiBzZW5zaGlcIDsKK+aJi+abuCA+IHNodXNob1wgOwor5re357ShID4ga29uYm91XCA7Civlk4Doqr8gPiBhaWNob3VcIDsKK+a1nOi+uiA+IGhhbWFiZVwgOwor5oSf6KydID4ga2Fuc2hhXCA7Civpu5LpiZsgPiBrb2t1ZW5cIDsKK+aJjeaZuiA+IHNhaWNoaVwgOwor5ZOB6KmeID4gaGluc2hpXCA7CivmuoDmsLQgPiBtYW5zdWlcIDsKK+aIuOajmiA+IHRvZGFuYVwgOwor5rSL6aSoID4geW91a2FuXCA7CivpvI7oq4cgPiB0ZWlkYW5cIDsKK+a5v+awlyA+IHNoaWtrZVwgOwor6KCV5YuVID4gemVuZG91XCA7CivmiJHmtYEgPiBnYXJ5dXVcIDsKK+WVhuenkSA+IHNob3VrYVwgOwor5oud5ZG9ID4gaGFpbWVpXCA7CivmgqrpoqggPiBha3VmdXVcIDsKK+a0l+mdoiA+IHNlbm1lblwgOwor5oud5ZGIID4gaGFpdGVpXCA7CivmvbDkubEgPiBrYWlyYW5cIDsKK+a0i+miqCA+IHlvdWZ1dVwgOwor56m656CyID4ga3V1aG91XCA7CivmvZzlg48gPiBzZW56b3VcIDsKK+aEm+iqrSA+IGFpZG9rdVwgOwor5omL5peXID4gdGViYXRhXCA7CivmhJvoqqYgPiBhaXNob3VcIDsKK+aJgOacmyA+IHNob21vdVwgOwor5omA5pyJID4gc2hveXV1XCA7Civpu5LphZIgPiBrdXJva2lcIDsKK+aJk+aSsiA+IGRhYm9rdVwgOwor5oyH5LukID4gc2hpcmVpXCA7CivnqoPnm5cgPiBzZXR0b3VcIDsKK+mKgOi8qiA+IGdpbnJpblwgOwor56aF6ZaAID4gemVubW9uXCA7CivmiZPmkoMgPiBkYWdla2lcIDsKK+evgOWAuSA+IHNla2tlblwgOwor5om/5byVID4gc2hvdWluXCA7Civnr4TkvosgPiBoYW5yZWlcIDsKK+m7hOmKhSA+IGtvdWRvdVwgOwor5oSP6K2YID4gaXNoaWtpXCA7CivmtJ7ploAgPiBkb3Vtb25cIDsKK+elnummrCA+IHNoaW5tZVwgOwor5oqV5bCEID4gdG91c2hhXCA7Civnrp3lj6MgPiBrYW5rb3VcIDsKK+WWq+awtCA+IGtpc3N1aVwgOwor5ZC46aOyID4ga3l1dWluXCA7Civnqbrnm64gPiBzb3JhbWVcIDsKK+WTgeihjCA+IGhpbmtvdVwgOwor5rmv5rC0ID4geXVtaXp1XCA7CivmiYHml4EgPiBoZW5ib3VcIDsKK+aCqumciiA+IGFrdXJlaVwgOwor6buE6YeRID4ga29nYW5lXCA7CivmiYvmkbogPiB0ZXN1cmlcIDsKK+eogOiWhCA+IGtpaGFrdVwgOwor56uL5rOVID4gcmlwcG91XCA7CivmjIHkuYUgPiBqaWt5dXVcIDsKK+evgOS8miA+IHNlY2hpZVwgOwor5oiR5qyyID4gZ2F5b2t1XCA7Civmua/mrr8gPiB5dWRvbm9cIDsKK+err+agqiA+IGhha2FidVwgOwor56+A5LuLID4gc2Vra2FpXCA7Civnsr7jgIUgPiBzZWl6ZWlcIDsKK+aLkOWPliA+IGthaXNodVwgOwor56eB6LKhID4gc2hpemFpXCA7CivlkLjpn7MgPiBreXV1b25cIDsKK+euoeWItiA+IGthbnNlaVwgOwor5rmn5rC0ID4geXV1c3VpXCA7CivonYvmooUgPiByb3ViYWlcIDsKK+a4mueVlCA+IHNob2hhblwgOwor5Za25qWtID4gZWlneW91XCA7CivmuJvnlKMgPiBnZW5zYW5cIDsKK+mLvOe3miA+IGtvdXNlblwgOwor5rqW5pifID4ganVuc2VpXCA7CivlkIjptKggPiBhaWdhbW9cIDsKK+aJi+aMhyA+IHNodXNoaVwgOwor6buE6YGTID4ga291ZG91XCA7CivmiYvmi60gPiB0ZWZ1a2lcIDsKK+ertuaYoCA+IGt5b3VlaVwgOwor5ZC56ZuqID4gZnVidWtpXCA7CivmurrmhJsgPiBkZWtpYWlcIDsKK+a5r+anvSA+IHl1YnVuZVwgOwor562L5a2QID4gc3VqaWtvXCA7CivmhIHoqLQgPiBzaHV1c29cIDsKK+iWq+mmmSA+IGt1bmtvdVwgOwor6YmE6Yu8ID4gdGVra291XCA7Civnp4Hoq5YgPiBzaGlyb25cIDsKK+a8ouWQjSA+IGthbm1laVwgOwor5rmW5rK8ID4ga29zaG91XCA7CivompXntJkgPiBzYW5zaGlcIDsKK+ialeezuCA+IHNhbnNoaVwgOwor5oKM6aCGID4gdGVpanVuXCA7CivmtJfpjKwgPiBzZW5yZW5cIDsKK+a6gOadryA+IG1hbnBhaVwgOwor6Jas6aSMID4geWFrdWppXCA7CivpjbzmsrsgPiBzaGluamlcIDsKK+mJhOmJsSA+IHRla2tvdVwgOwor56aP6YGLID4gZnVrdXVuXCA7Civmirzlj44gPiBvdXNodXVcIDsKK+err+aVtCA+IHRhbnNlaVwgOwor6Jar6aKoID4ga3VucHV1XCA7CivnqbbnkIYgPiBreXV1cmlcIDsKK+mMsueUuyA+IHJva3VnYVwgOwor6YqT6KGhID4gc2Vua291XCA7CivmsrPpub8gPiBrYWppa2FcIDsKK+mLvOeuoSA+IGtvdWthblwgOwor6by757+8ID4gYml5b2t1XCA7CivmvIblmaggPiBzaGlra2lcIDsKK+emgemFkiA+IGtpbnNodVwgOwor6Jep6YK4ID4gaGFudGVpXCA7CivmiKbmlZcgPiBzZW5wYWlcIDsKK+engeimiyA+IHNoaWtlblwgOwor5rWE6LKhID4gam91emFpXCA7CivomY7okL0gPiBtb2dhcmlcIDsKK+a1t+iYvyA+IGZ1bm9yaVwgOwor5omA5oeQID4gc2hva2FpXCA7CivmuKnngbggPiBvbmt5dXVcIDsKK+a1t+iXuyA+IGthaXNvdVwgOwor5omH5oOFID4gc2Vuam91XCA7Civnp4Hoo70gPiBzaGlzZWlcIDsKK+aCqumKrSA+IGFrdXNlblwgOwor56S+6aKoID4gc2hhZnV1XCA7CivlkI3pppkgPiBtZWlrb3VcIDsKK+WSjOiosyA+IHdheWFrdVwgOwor6YqF6KO9ID4gZG91c2VpXCA7Civmupbmi6AgPiBqdW5reW9cIDsKK+a2meiFuiA+IHJ1aXNlblwgOwor562J5aSWID4gdG91Z2FpXCA7CivmirHljbUgPiBob3VyYW5cIDsKK+aJleW6lSA+IGZ1dHRlaVwgOwor5omA5oSfID4gc2hva2FuXCA7CivmtIvpioAgPiB5b3VnaW5cIDsKK+enmOiWrCA+IGhpeWFrdVwgOwor6Y6u5pKrID4gY2hpbmJ1XCA7CivnpL7poK0gPiBzaGF0b3VcIDsKK+engeihjCA+IHNoaWtvdVwgOwor5Zaq5pyNID4gbW9mdWt1XCA7CivnrpfkvZMgPiBzYW50YWlcIDsKK+WSjOimqiA+IHdhc2hpblwgOwor5omL5b25ID4gdGV5YWt1XCA7CivpioDoo70gPiBnaW5zZWlcIDsKK+m7meiosSA+IG1va2t5b1wgOwor5omL5b2iID4gdGVnYXRhXCA7Civnq7bmioAgPiBreW91Z2lcIDsKK+ialeeoriA+IHNhbnNodVwgOwor5omT5bitID4gZGFzZWtpXCA7CivmuK/mub4gPiBrb3V3YW5cIDsKK+iWq+mZtiA+IGt1bnRvdVwgOwor5omL5byVID4gdGViaWtpXCA7CivmuL7msowgPiBrb250b25cIDsKK+a4m+eCuSA+IGdlbnRlblwgOwor5omH5b2iID4gc2Vua2VpXCA7CivmvJTliocgPiBlbmdla2lcIDsKK+aCqumFkiA+IGFrdXNodVwgOwor5omA5oCdID4gc2hvc2hpXCA7CivnpoHovLggPiBraW4nJ3l1XCA7Civmta7oloQgPiBmdWhha3VcIDsKK+WQjOmhniA+IGRvdXJ1aVwgOwor6YqA6KGMID4gZ2lua291XCA7CivmiY3lubkgPiBzYWlrYW5cIDsKK+a0i+mFkiA+IHlvdXNodVwgOwor6b6N546LID4gcnl1dW91XCA7Civmg4XotqMgPiBqb3VzaHVcIDsKK+aIkOaWhyA+IHNlaWJ1blwgOwor5oe45qGIID4ga2VuJydhblwgOwor5omL5bizID4gdGVjaG91XCA7CivmiJDmlZcgPiBzZWliYWlcIDsKK+iZmuiBniA+IGt5b2J1blwgOwor5ouF5L2TID4gdGFudGFpXCA7CivmiYvluJYgPiB0ZWNob3VcIDsKK+mIjemWkyA+IG5vcm9tYVwgOwor6Yed6a2aID4gaGFyaXlvXCA7CivmiYvlt6UgPiBzaHVrb3VcIDsKK+azoumWkyA+IG5hbWltYVwgOwor6byT6IacID4ga29tYWt1XCA7CivmhqvnhLYgPiBiaW56ZW5cIDsKK+aCqumBkyA+IGFrdWRvdVwgOwor5rWF6KaLID4gc2Vua2VuXCA7Civph47ps6UgPiB5YWNob3VcIDsKK+azoumVtyA+IGhhY2hvdVwgOwor6byT6IW5ID4ga29mdWt1XCA7CivpvJPohbggPiBrb2Nob3VcIDsKK+ayu+mokyA+IGNoaWtlblwgOwor5rq25bKpID4geW91Z2FuXCA7CivmtbfojYkgPiBrYWlzb3VcIDsKK+azlemboyA+IGhvdW5hblwgOwor5ZGz6KqtID4gbWlkb2t1XCA7CivmtJfou4ogPiBzZW5zaGFcIDsKK+WRiui+niA+IGtva3VqaVwgOwor5ZCE6aCFID4ga2Fra291XCA7CivmsrjpqLAgPiBmdXR0b3VcIDsKK+a4qea1tyA+IGF0c3VtaVwgOwor5ZaE5qWtID4gemVuZ291XCA7CivmiYHlubMgPiBoZW5wZWlcIDsKK+eri+aWuSA+IHJpcHBvdVwgOwor56yg5a2QID4ga2FzYWdvXCA7CivmtLvoqIggPiBrYWtrZWlcIDsKK+aKleWQiCA+IHRvdWdvdVwgOwor5oak54S2ID4gZnVuemVuXCA7Civlj7fppKggPiBnb3VrYW5cIDsKK+a7nuWcqCA+IHRhaXphaVwgOwor5rih5riJID4gdG9zaG91XCA7CivmiYDluK8gPiBzaG90YWlcIDsKK+aKl+WOnyA+IGtvdWdlblwgOwor5rim5rWBID4ga2FyeXV1XCA7CivmvKLkurogPiBrYW5qaW5cIDsKK+a8geWKtCA+IGd5b3JvdVwgOwor5rWq6I+vID4gbmFuaXdhXCA7CivmipjljYogPiBzZXBwYW5cIDsKK+mHkemtmiA+IGtpbmd5b1wgOwor5ZiG5aOwID4gdGFuc2VpXCA7CivpipjojLYgPiBtZWljaGFcIDsKK+ensOe+jiA+IHNob3ViaVwgOwor56eB6JS1ID4gc2hpem91XCA7CivlkbPoppogPiBtaWtha3VcIDsKK+m+leeBryA+IGdhbmRvdVwgOwor6bu06I+MID4gYmFpa2luXCA7CivmipzliaMgPiBiYWtrZW5cIDsKK+WWhOaguSA+IHplbmtvblwgOwor5ZCN6ZaAID4gbWVpbW9uXCA7CivnqbrmuK8gPiBrdXVrb3VcIDsKK+WQjOmWgCA+IGRvdW1vblwgOwor6Juu5rCRID4gYmFubWluXCA7CivmipzliIAgPiBiYXR0b3VcIDsKK+WPsOmiqCA+IHRhaWZ1dVwgOwor5oWn55y8ID4ga2VpZ2FuXCA7CivmiY3lrZAgPiBzYWlzaGlcIDsKK+mMmOeKtiA+IHN1aWpvdVwgOwor5rq25aqSID4geW91YmFpXCA7CivnpoXorbIgPiB6ZW5qb3VcIDsKK+ayv+mdqSA+IGVua2FrdVwgOwor5rWq6IqxID4gbmFuaXdhXCA7Civnq6/lvbkgPiBoYXlha3VcIDsKK+WPsOmhlCA+IGRhaWdhblwgOwor5ZGJ6LaKID4gZ29ldHN1XCA7Civlj7DpoK0gPiB0YWl0b3VcIDsKK+a4i+a7niA+IGp1dXRhaVwgOwor5re354S2ID4ga29uemVuXCA7CivnrYvlkIggPiBzdWppYWlcIDsKK+a4m+azlSA+IGdlbnBvdVwgOwor5oqV5Ye9ID4gdG91a2FuXCA7CivlloTmm7ggPiB6ZW5zaG9cIDsKK+epuua0niA+IGt1dWRvdVwgOwor6YiR6YeRID4gYmFua2luXCA7CivmupDlubMgPiBnZW5wZWlcIDsKK+WQjemRkSA+IG1laWthblwgOwor562J5Y+3ID4gdG91Z291XCA7Civll6PlrZAgPiBzaGlzaGlcIDsKK+mHjumnkiA+IG5vZ29tYVwgOwor5rWu6IWrID4gbXVrdW1pXCA7CivmuJvmsLQgPiBnZW5zdWlcIDsKK+m6u+ijjyA+IGFzYXVyYVwgOwor56iu55eYID4gc2h1dG91XCA7CivpiI3ph40gPiBkb25qdXVcIDsKK+WPqemgrSA+IGtvdXRvdVwgOwor5oay5rOVID4ga2VucG91XCA7CivmiYDlrpogPiBzaG90ZWlcIDsKK+mHmOmgrSA+IHRlaXRvdVwgOwor56aA6KuLID4gcmluc2VpXCA7CivmtpnnrqEgPiBydWlrYW5cIDsKK+aJgOWtmCA+IHNob3pvblwgOwor5rOl6YWUID4gZGVpc3VpXCA7CivmuJvmrrogPiBnZW5zYWlcIDsKK+a4m+autSA+IGdlbnRhblwgOwor6Y6u5bqnID4gY2hpbnphXCA7CivnqYLnirYgPiBzdWlqb3VcIDsKK+WPo+mgrSA+IGtvdXRvdVwgOwor5riF5riFID4gc2Vpc2VpXCA7CivlkIjpjbUgPiBhaWthZ2lcIDsKK+ethuWLoiA+IGhpc3NlaVwgOwor56uL5oayID4gcmlra2VuXCA7CivlloTmlL8gPiB6ZW5zZWlcIDsKK+a0nuimiyA+IGRvdWtlblwgOwor56S86YeRID4gcmVpa2luXCA7Civmh5Dmn5QgPiBrYWlqdXVcIDsKK+WPjemosCA+IGhhbnRvdVwgOwor6Jia6IuUID4gc2VudGFpXCA7CivmuoDlubIgPiBtYW5rYW5cIDsKK+emveiIjiA+IGtpbnNoYVwgOwor5ZGK6KutID4ga29rdXl1XCA7CivmuIXmtYQgPiBzZWlqb3VcIDsKK+etieWIhiA+IHRvdWJ1blwgOwor56m65qyEID4ga3V1cmFuXCA7CivmsqHpoK0gPiBib3R0b3VcIDsKK+aKl+S9kyA+IGtvdXRhaVwgOwor5Y+l6ZuGID4ga3VzaHV1XCA7CivmiYvloakgPiB0ZXNoaW9cIDsKK+a5v+W4gyA+IHNoaXBwdVwgOwor56uv5bGxID4gaGF5YW1hXCA7Civmg6Poj5wgPiBzb3V6YWlcIDsKK+aIkOW9oiA+IHNlaWtlaVwgOwor56uc5bqnID4gcnl1dXphXCA7CivpiYToo70gPiB0ZXNzZWlcIDsKK+WRiuiotCA+IGtva3Vzb1wgOwor5rW357a/ID4ga2FpbWVuXCA7Civll5zlpb0gPiBzaGlrb3VcIDsKK+WPl+mgmCA+IGp1cnlvdVwgOwor562G5YaZID4gaGlzc2hhXCA7CivmuIfmsLQgPiBrYXNzdWlcIDsKK+a4iOawkSA+IHNhaW1pblwgOwor56aB6KGbID4ga2luJydlaVwgOwor5oqX5LqJID4ga291c291XCA7CivmuIXmsLQgPiBzZWlzdWlcIDsKK+WQiOmHkSA+IGdvdWtpblwgOwor5re35reGID4ga29ua291XCA7Civlk4HnrYkgPiBoaW50b3VcIDsKK+aJv+WFgSA+IHNob3VpblwgOwor5oKq6KiAID4gYWt1Z2VuXCA7CivnpLzpgYcgPiByZWlndXVcIDsKK+WWnOaCpiA+IGtpZXRzdVwgOwor56uL5b+XID4gcmlzc2hpXCA7CivpvJPnrJsgPiBrb3Rla2lcIDsKK+aIkOW5tCA+IHNlaW5lblwgOwor56eB6ICDID4gc2hpa291XCA7CivmhqTmrbsgPiBmdW5zaGlcIDsKK+m6u+iWrCA+IG1heWFrdVwgOwor5riH5q27ID4ga2Fzc2hpXCA7Civnq6/lrZAgPiB0YW5zaGlcIDsKK+aHh+acmyA+IGtvbm1vdVwgOwor6Jma56S8ID4ga3lvcmVpXCA7Civono3lkIggPiB5dXVnb3VcIDsKK+WQjOmCpiA+IGRvdWhvdVwgOwor5rKI6aaZID4gamlua291XCA7Civmh4fmm7ggPiBrb25zaG9cIDsKK+m7hOiRiSA+IGtvdXlvdVwgOwor562J5YCkID4gdG91Y2hpXCA7Civmub7lsrggPiB3YW5nYW5cIDsKK+a6gOWxsSA+IG1hbnphblwgOwor6J6i5YWJID4ga2Vpa291XCA7Civlj4zpoK0gPiBzb3V0b3VcIDsKK+WVhuapnyA+IHNob3VraVwgOwor5omN5Zm4ID4gc2FpdG9uXCA7CivlkIzpgZMgPiBkb3Vkb3VcIDsKK+eosueGsSA+IGltb2NoaVwgOwor6Y6u5a6IID4gY2hpbmp1XCA7Civmu7TkuIsgPiB0ZWtpa2FcIDsKK+WTgeeoriA+IGhpbnNodVwgOwor6buE6I+KID4ga2lnaWt1XCA7CivmioDlgIYgPiBnaXJ5b3VcIDsKK+aEmuetliA+IGd1c2FrdVwgOwor5re35rKMID4ga29udG9uXCA7CivlkITpg6ggPiBrYWt1YnVcIDsKK+azoui3ryA+IG5hbWlqaVwgOwor5Y+N6Z2iID4gaGFubWVuXCA7CivlloTmiKYgPiB6ZW5zZW5cIDsKK+a0i+ijhSA+IHlvdXNvdVwgOwor5rSL6KOBID4geW91c2FpXCA7CivmiYDlnKggPiBzaG96YWlcIDsKK+aCquihgCA+IG9rZXRzdVwgOwor56We6KmxID4gc2hpbndhXCA7CivmhajnhLYgPiBnYWl6ZW5cIDsKK+ertuWjsiA+IGtlaWJhaVwgOwor6Je76I2JID4gbW9ndXNhXCA7Civnp7vnnYAgPiBpY2hha3VcIDsKK+elneipniA+IG5vcml0b1wgOwor5rSL6KGMID4geW91a291XCA7CivlkIzovKkgPiBkb3VoYWlcIDsKK+aApemgiCA+IGt5dXVzdVwgOwor56eY562WID4gaGlzYWt1XCA7Civmtojno6ggPiBzaG91bWFcIDsKK+m7meiAgyA+IG1va2tvdVwgOwor5oaO5rCXID4gbmlrdWdlXCA7CivlkIzou4ogPiBkb3VzaGFcIDsKK+a2iOejgSA+IHNob3VqaVwgOwor5ZSx5q2MID4gc2hvdWthXCA7CivmhJvnp7AgPiBhaXNob3VcIDsKK+a5luW/gyA+IGtvc2hpblwgOwor5reh5rehID4gdGFudGFuXCA7CivlloTmhJ8gPiB6ZW5rYW5cIDsKK+aymemWgCA+IHNoYW1vblwgOwor56iu54GrID4gdGFuZWJpXCA7CivpioXnt5ogPiBkb3VzZW5cIDsKK+aAqOmciiA+IG9ucnlvdVwgOwor5omL5ZOBID4gdGVqaW5hXCA7CivmiJHlrrYgPiB3YWdheWFcIDsKK+epuuabuSA+IGt1dXNvdVwgOwor5oim5aOrID4gc2Vuc2hpXCA7Civlj43plpMgPiBoYW5rYW5cIDsKK+aJjeWQjSA+IHNhaW1laVwgOwor56S+6LOTID4gc2hhaGluXCA7CivmtrLnirYgPiBla2lqb3VcIDsKK+aBtei0iCA+IGtlaXpvdVwgOwor5Y+j6YqtID4ga291c2VuXCA7CivlloTmgKcgPiB6ZW5zZWlcIDsKK+ekvOizmyA+IHJhaXNhblwgOwor5oim5aG1ID4gc2VuamluXCA7Civph5Hpiq0gPiBraW5zZW5cIDsKK+aHuOW3oyA+IGtha2VzdVwgOwor56mC5rOiID4gaG9uYW1pXCA7Civmh5DmirEgPiBrYWlob3VcIDsKK+WPgumZoiA+IHNhbicnaW5cIDsKK+mPpOWIuyA+IHJ1a29rdVwgOwor6YeR6YqAID4ga2luZ2luXCA7CivpioDntYwgPiBnaW5rZWlcIDsKK+aIpuWgtCA+IHNlbmpvdVwgOwor6YeR6YmxID4ga2lua291XCA7Civmhrbmlq0gPiBva3VkYW5cIDsKK+a4m+aVsCA+IGdlbnN1dVwgOwor5rqA5aSpID4gbWFudGVuXCA7CivlkozntrQgPiB3YXRvamlcIDsKK+a1hOe9qiA+IGpvdXphaVwgOwor5oSf55+lID4ga2FuY2hpXCA7Civms7Dopb8gPiB0YWlzZWlcIDsKK+a0i+iYrSA+IHlvdXJhblwgOwor6YqA57O4ID4gZ2luc2hpXCA7Civmt6HmsLQgPiB0YW5zdWlcIDsKK+a6tuWJpCA+IHlvdXphaVwgOwor56m65paHID4ga3V1YnVuXCA7Civpu4TogowgPiBraWhhZGFcIDsKK+aIkOWpmiA+IHNlaWtvblwgOwor5rOo6KiYID4gY2h1dWtpXCA7CivlkJ/oqaAgPiBnaW4nJ2VpXCA7Civmh7jltJYgPiBrZW5nYWlcIDsKK+mNm+aIkCA+IHRhbnNlaVwgOwor6YqA57KJID4gZ2lucHVuXCA7Civmh6blvLEgPiBkYWpha3VcIDsKK+aBreizgCA+IGt5b3VnYVwgOwor5Y216buEID4gcmFuJydvdVwgOwor5omL5YuVID4gc2h1ZG91XCA7Civol43ol7sgPiByYW5zb3VcIDsKK+aGsuaUvyA+IGtlbnNlaVwgOwor5oim5ZywID4gc2VuY2hpXCA7CivnpLzoroMgPiByYWlzYW5cIDsKK+a6gOWhgSA+IG1hbnJ1aVwgOwor5ZCI6LOHID4gZ291c2hpXCA7CivmuoDloLQgPiBtYW5qb3VcIDsKK+WPt+i7iiA+IGdvdXNoYVwgOwor5rOj6Ki0ID4ga3l1dXNvXCA7Civph43ph40gPiBqdXVqdXVcIDsKK+aBqeizniA+IG9uc2hvdVwgOwor5riF5pu4ID4gc2Vpc2hvXCA7CivmuoDloIIgPiBtYW5kb3VcIDsKK+aJh+WLlSA+IHNlbmRvdVwgOwor5omN5YiGID4gc2FpYnVuXCA7CivmuJvmkI0gPiBnZW5zb25cIDsKK+awtOm7vSA+IGFtZW5ib1wgOwor56We6JuHID4gc2hpbmphXCA7Civlk4Dnl5sgPiBhaXRzdXVcIDsKK+aIkuWjhyA+IGthaWRhblwgOwor6bqm6Iq9ID4gYmFrdWdhXCA7Civlj7Dou4ogPiBkYWlzaGFcIDsKK+WTgeeVqiA+IGhpbmJhblwgOwor6Jar6KO9ID4ga3Vuc2VpXCA7CivmiYvlhpkgPiBzaHVzaGFcIDsKK+a4heaYjiA+IHNlaW1laVwgOwor5rOV6KuWID4gaG91cm9uXCA7Civmsbrpl5ggPiBrZXR0b3VcIDsKK+azleirhyA+IGhvdWRhblwgOwor5Y6f6aGMID4gZ2VuZGFpXCA7CivmiYvlhbUgPiBzaHVoZWlcIDsKK+aJgOWKtCA+IHNob3JvdVwgOwor5Y6f6aCtID4gZ2VudG91XCA7Civph4fphY0gPiBzYWloYWlcIDsKK+WQjeirliA+IG1laXJvblwgOwor5rWF57SFID4gc2Vua291XCA7CivnrKzkuIkgPiBkYWlzYW5cIDsKK+a3u+abuCA+IHRlbnNob1wgOwor5omL5YWIID4gdGVzYWtpXCA7CivmiYvlhYMgPiB0ZW1vdG9cIDsKK+aBqeiukCA+IG9uc2h1dVwgOwor5oGp6K6OID4gb25zaHV1XCA7Civlj6PovrogPiBrb3VoZW5cIDsKK+WOn+mfsyA+IGdlbicnb25cIDsKK+aIkeWftyA+IGdhc2h1dVwgOwor56m65oy6ID4ga3V1dGVpXCA7CivmtLvnt5ogPiBrYXNzZW5cIDsKK+WQjOiqjCA+IGRvdXNoaVwgOwor5Y6a6aGUID4ga291Z2FuXCA7CivlkI3oqZ4gPiBtZWlzaGlcIDsKK+mIjeihjCA+IGRvbmtvdVwgOwor5oeH5oOFID4ga29uam91XCA7Civmt7vmma8gPiB0ZW5rZWlcIDsKK+aJi+WCtyA+IHRla2l6dVwgOwor56m65ouzID4ga3V1a2VuXCA7Civph53ot68gPiBzaGlucm9cIDsKK+espuS4gSA+IGZ1Y2hvdVwgOwor5ZCN6KiAID4gbWVpZ2VuXCA7CivlkIzoqJMgPiBkb3VrdW5cIDsKK+mHkei8qiA+IGthbmF3YVwgOwor5oiQ5Z6LID4gc2Vpa2VpXCA7CivmsqLovrogPiBzYXdhYmVcIDsKK+azleimgSA+IGhvdXlvdVwgOwor56eR55uuID4ga2Ftb2t1XCA7CivpvIjnlLIgPiBiZWtrb3VcIDsKK+icguW3oyA+IGhvdXNvdVwgOwor56m65omLID4ga2FyYXRlXCA7CivnpLzoo4UgPiByZWlzb3VcIDsKK+WQjOimliA+IGRvdXNoaVwgOwor5ZaE5bCOID4gemVuZG91XCA7CivnqbrmiYAgPiBrdXVzaG9cIDsKK+W/temhmCA+IG5lbmdhblwgOwor5ZCI6KiIID4gZ291a2VpXCA7CivpurvnuZQgPiBhc2FvcmlcIDsKK+WPpOi5nyA+IGtvc2VraVwgOwor5ZGq57ibID4ganViYWt1XCA7CivnqbrmiKYgPiBrdXVzZW5cIDsKK+aFqOatjiA+IGdhaXRhblwgOwor5rGX6aGUID4ga2FuZ2FuXCA7Civlv7XpoK0gPiBuZW50b3VcIDsKK+enkeeZvSA+IHNlcmlmdVwgOwor5Y6f6ZqKID4gZ2VudGFpXCA7CivphrXph5EgPiBreW9raW5cIDsKK+eovOalrSA+IGthZ3lvdVwgOwor56uv5Y6zID4gdGFuZ2VuXCA7Civolq7omoogPiB5YWJ1a2FcIDsKK+WRqOe4gSA+IHNodXVlblwgOwor5Zaa5aOwID4ga2Fuc2VpXCA7CivmtbfnlKMgPiBrYWlzYW5cIDsKK+aIpuWPsiA+IHNlbnNoaVwgOwor5rqA5ZOhID4gbWFuJydpblwgOwor5Y+b6LuNID4gaGFuZ3VuXCA7Civpu4TnsokgPiBraW5ha29cIDsKK+eojua6kCA+IHplaWdlblwgOwor5Y+L6YKmID4geXV1aG91XCA7Civpjpblm70gPiBzYWtva3VcIDsKK+erueWIgCA+IHNoaW5haVwgOwor5oSB55yJID4gc2h1dWJpXCA7Civpu5nnp5ggPiBtb2t1aGlcIDsKK+a4heaOgyA+IHNlaXNvdVwgOwor6bq757WyID4gYXNhaXRvXCA7CivpioPnoLIgPiBqdXVob3VcIDsKK+aJjeS6uiA+IHNhaWppblwgOwor5ris5bqmID4gc29rdWRvXCA7CivlkIzoob4gPiBkb3VraW5cIDsKK+mNm+W3pSA+IHRhbmtvdVwgOwor6YW46aGeID4gc2FucnVpXCA7CivmtrzmsJcgPiByeW91a2lcIDsKK+eri+WcsCA+IHJpdGNoaVwgOwor5ZCM6KGMID4gZG91a291XCA7Civnqbrmg7MgPiBrdXVzb3VcIDsKK+aJi+S6pCA+IHNodWtvdVwgOwor6buS56mCID4ga3Vyb2JvXCA7Civmg4Xnt5IgPiBqb3VjaG9cIDsKK+ayg+mHjiA+IHlva3V5YVwgOwor6bq757O4ID4gYXNhaXRvXCA7CivllqflmaogPiBrZW5zb3VcIDsKK+a4qeW6iiA+IG9uc2hvdVwgOwor5oSf54q2ID4ga2Fuam91XCA7CivlkIjoob4gPiBnb3VraW5cIDsKK+aEm+eMqyA+IGFpYnlvdVwgOwor6Ya46YCgID4gam91em91XCA7CivmiKblip8gPiBzZW5rb3VcIDsKK+engeebiiA+IHNoaWVraVwgOwor5rm+5Y+jID4gd2Fua291XCA7Civlj7Loq5YgPiBzaGlyb25cIDsKK+mKg+ecvCA+IGp1dWdhblwgOwor5Y+y6KuHID4gc2hpZGFuXCA7Civnq6Dlj6UgPiBzaG91a3VcIDsKK+mKheebpCA+IGRvdWJhblwgOwor5oa25b+1ID4gb2t1bmVuXCA7Civlkbznp7AgPiBrb3Nob3VcIDsKK+aIpuWJjSA+IHNlbnplblwgOwor6bie6Ly/ID4gcmFuJyd5b1wgOwor5oan5oasID4gZG91a2VpXCA7Civlj4zovKogPiBzb3VyaW5cIDsKK+WPgumBkyA+IHNhbmRvdVwgOwor5ray5rGBID4gZWtpanV1XCA7CivnqL/mnKwgPiBrb3Vob25cIDsKK+a1t+eNoyA+IGthaWp1dVwgOwor5oak5oejID4gZnVubWFuXCA7Civlj7LoqakgPiBzaGlzaGlcIDsKK+WPjei7oiA+IGhhbnRlblwgOwor5Y+N6LuNID4gaGFuZ3VuXCA7Civlj6/oqq0gPiBrYWRva3VcIDsKK+aHuOWegiA+IGtlbnN1aVwgOwor56iO5rOVID4gemVpaG91XCA7CivljrPph40gPiBnZW5qdXVcIDsKK+iWq+iSuCA+IGt1bmpvdVwgOwor5Y+w6KmeID4gc2VyaWZ1XCA7CivpjKzmiJAgPiByZW5zZWlcIDsKK+mKgOebpCA+IGdpbmJhblwgOwor5Y+L6LuNID4geXV1Z3VuXCA7CivlkoznnaYgPiB3YWJva3VcIDsKK+mKgOebgyA+IGdpbnBhaVwgOwor5oak5oWoID4gZnVuZ2FpXCA7CivllJDmnKwgPiB0b3Vob25cIDsKK+mJhOe3miA+IHRlc3NlblwgOwor6Yu85p2/ID4ga291YmFuXCA7CivpvLvmr5sgPiBoYW5hZ2VcIDsKK+WPsuimsyA+IHNoaWthblwgOwor5Y+M6LmEID4gc291dGVpXCA7Civlj5fos54gPiBqdXNob3VcIDsKK+a2iOeBqyA+IHNob3VrYVwgOwor5oiS5Y6zID4ga2FpZ2VuXCA7Civpi7zmnZAgPiBrb3V6YWlcIDsKK+a0l+e3tCA+IHNlbnJlblwgOwor5Y+w6KanID4gdGFpcmFuXCA7Civnp4HnlKggPiBzaGl5b3VcIDsKK+W/l+mhmCA+IHNoaWdhblwgOwor5ZCM6JepID4gZG91aGFuXCA7Civlj6Poq5YgPiBrb3Vyb25cIDsKK+WPo+iqvyA+IGt1Y2hvdVwgOwor5Y+i6KuHID4gc291ZGFuXCA7CivljrPpgbggPiBnZW5zZW5cIDsKK+err+WAqiA+IHRhbmdlaVwgOwor6YeR6KuHID4ga2luZGFuXCA7Civmt7fmiKYgPiBrb25zZW5cIDsKK+aIr+S9nCA+IGdlc2FrdVwgOwor5re35oiQID4ga29uc2VpXCA7CivllprllY8gPiBrYW5tb25cIDsKK+ekvuiRrCA+IHNoYXNvdVwgOwor5oak5oCSID4gZnVuJydudVwgOwor5Y+k6Ki7ID4ga29jaHV1XCA7CivmtYHnn7MgPiBzYXN1Z2FcIDsKK+mJhOeyiSA+IHRlcHB1blwgOwor6YaX6YW1ID4gaGFra291XCA7Civljp/pibEgPiBnZW5rb3VcIDsKK+a4qeWuuSA+IG9uJyd5b3VcIDsKK+m6pueyiSA+IG11Z2lrb1wgOwor5oiQ5YqfID4gc2Vpa291XCA7Civmt7HmiYsgPiBmdWthZGVcIDsKK+m7kuebriA+IGt1cm9tZVwgOwor6YeR6KiAID4ga2luZ2VuXCA7CivmtJfnsbMgPiBzZW5tYWlcIDsKK+aGkOaGqyA+IHJlbmJpblwgOwor5Y6f6YeOID4gZ2VuJyd5YVwgOwor5rCX6a2EID4ga2loYWt1XCA7Civlj5foq74gPiBqdWRha3VcIDsKK+awl+mssSA+IGtpdXRzdVwgOwor5oiQ5YiGID4gc2VpYnVuXCA7CivolqzoiJcgPiB5YWt1aG9cIDsKK+WQjeiRlyA+IG1laWNob1wgOwor6YmE566hID4gdGVra2FuXCA7Civph43oqIAgPiBqdXVnb25cIDsKK+awt+mcpyA+IGh5b3VtdVwgOwor5oSN54S2ID4gYmluemVuXCA7Civph5HopbQgPiBraW5yYW5cIDsKK+aHkOWmiiA+IGthaW5pblwgOwor5rC06Z2iID4gbWlub21vXCA7Civnpo3npo8gPiBrYWZ1a3VcIDsKK+awt+mbqCA+IGhpc2FtZVwgOwor6YmE562LID4gdGVra2luXCA7Civmh7jlkb0gPiBrZW5tZWlcIDsKK+mFlOmhlCA+IHN1aWdhblwgOwor5oaQ5oSNID4gcmVuYmluXCA7CivmtIvntJkgPiB5b3VzaGlcIDsKK+mHjeimliA+IGp1dXNoaVwgOwor5oiQ5YW4ID4gc2VpdGVuXCA7Civpiq3mua8gPiBzZW50b3VcIDsKK+a4heW7iSA+IHNlaXJlblwgOwor5rSL57SFID4geW91a291XCA7Civph43opoEgPiBqdXV5b3VcIDsKK+mHkeijvSA+IGtpbnNlaVwgOwor6YWS6aGeID4gc2h1cnVpXCA7CivlkIjokZcgPiBnb3VjaG9cIDsKK+m2j+mztCA+IGtlaW1laVwgOwor56a9542jID4ga2luanV1XCA7CivmsLTpm7cgPiBzdWlyYWlcIDsKK+WPl+iouyA+IGp1Y2h1dVwgOwor5Y+X6Ki6ID4ganVzaGluXCA7Civlj6Poo4UgPiBrb3Vzb3VcIDsKK+a3seaEjyA+IHNoaW4nJ2lcIDsKK+ejgemHnSA+IGppc2hpblwgOwor5oaQ5oOFID4gcmVuam91XCA7CivmsLTpm6MgPiBzdWluYW5cIDsKK+WQm+iHqCA+IGt1bnJpblwgOwor5oim5LqJID4gc2Vuc291XCA7Civlj5foqJcgPiBqdXRha3VcIDsKK+aIpuS5sSA+IHNlbnJhblwgOwor5rWp54S2ID4ga291emVuXCA7CivnqpPlpJYgPiBzb3VnYWlcIDsKK+WVj+WxiyA+IHRvbicneWFcIDsKK+mJhOeqkyA+IHRlc3NvdVwgOwor5ZCN6Iy2ID4gbWVpY2hhXCA7CivmhafmlY8gPiBrZWliaW5cIDsKK+a4r+WkliA+IGtvdWdhaVwgOwor6JuH5bqnID4gaGViaXphXCA7Civnqb/lrZQgPiBzZW5rb3VcIDsKK+a5r+WFgyA+IHl1bW90b1wgOwor6by75qKBID4gYmlyeW91XCA7Civnp4HniYggPiBzaGloYW5cIDsKK+WPjeirliA+IGhhbnJvblwgOwor56m65a+dID4gc29yYW5lXCA7CivmtYTnlYwgPiBqb3VrYWlcIDsKK+iWhOiWhCA+IHVzdXVzdVwgOwor5rC06ZiyID4gc3VpYm91XCA7CivpioXniYwgPiBkb3VoYWlcIDsKK+WWnOWKhyA+IGtpZ2VraVwgOwor5oaC5oakID4geXV1ZnVuXCA7CivmhJ/mtpkgPiBrYW5ydWlcIDsKK+eptOWxhSA+IGtla2t5b1wgOwor56uL5YasID4gcml0dG91XCA7CivmhoLmha4gPiB5dXVyeW9cIDsKK+a1t+a6nSA+IGthaWtvdVwgOwor56uL5YWaID4gcml0dG91XCA7CivljprpgYcgPiBrb3VndXVcIDsKK+WSjOeLrCA+IHdhZG9rdVwgOwor5oCq6KuHID4ga2FpZGFuXCA7CivmtanngJogPiBrb3VrYW5cIDsKK+mHkeidvyA+IGtpbmJhZVwgOwor6YqA54mMID4gZ2lucGFpXCA7CivmsLTploAgPiBzdWltb25cIDsKK+ibruWjsCA+IGJhbnNlaVwgOwor5ZaE5ZOJID4gemVuemFpXCA7CivlkI/oh60gPiByaXNodXVcIDsKK+WQjOiIuSA+IGRvdXNlblwgOwor5Y2Y6aCFID4gdGFua291XCA7CivljZjpn7MgPiB0YW4nJ29uXCA7CivmtbfmuK8gPiBrYWlrb3VcIDsKK+mJm+eZvSA+IGVucGFrdVwgOwor5Y+C6KyAID4gc2FuYm91XCA7Civmgqrnq6UgPiBha3Vkb3VcIDsKK+aGguaCtiA+IHl1dW1vblwgOwor5oaC5oKjID4geXV1a2FuXCA7Civmta7mvIIgPiBmdWh5b3VcIDsKK+m8u+acqCA+IGhhbmFnaVwgOwor6YWN6Zu7ID4gaGFpZGVuXCA7CivlkozniZsgPiB3YWd5dXVcIDsKK+iWhOiRiSA+IHVzdXlvdVwgOwor5oiQ5L2TID4gc2VpdGFpXCA7CivllJDmiYsgPiBrYXJhdGVcIDsKK+a3q+W/gyA+IGluc2hpblwgOwor5ZWG5a62ID4gc2hvdWthXCA7CivllJDmiLggPiBrYXJhZG9cIDsKK+a0l+ekvCA+IHNlbnJlaVwgOwor5ZCI6Ie0ID4gZ2F0Y2hpXCA7CivljZfpnaIgPiBuYW5tZW5cIDsKK+WPguipoyA+IHNhbmtlaVwgOwor5oaC5oCdID4geXV1c2hpXCA7CivlkJHog4wgPiBrb3VoYWlcIDsKK+a3seW6piA+IHNoaW5kb1wgOwor5oW35oWoID4ga291Z2FpXCA7Civmg6jnirYgPiBzYW5qb3VcIDsKK+WQvuetiSA+IHdhcmVyYVwgOwor5rW35rWcID4ga2FpaGluXCA7CivmsJHpoqggPiBtaW5wdXVcIDsKK+iZmuaniyA+IGt5b2tvdVwgOwor5Y2a6ZuFID4gYmFrdWdhXCA7CivmiJDkurogPiBzZWlqaW5cIDsKK+aCqueojiA+IGFrdXplaVwgOwor6buE55OcID4ga3l1dXJpXCA7CivlkLnnrqEgPiBzdWlrYW5cIDsKK+a0i+eoriA+IHlvdXNodVwgOwor5rW35rSLID4ga2FpeW91XCA7Civnp7vmpI0gPiBpc2hva3VcIDsKK+mJhOegsiA+IHRlcHBvdVwgOwor5ZCE6IeqID4ga2FrdWppXCA7CivpurvnlrkgPiBtYXNoaW5cIDsKK+WWp+S8nSA+IGtlbmRlblwgOwor6JaE6Iy2ID4gdXN1Y2hhXCA7Civlj4LoprMgPiBzYW5rYW5cIDsKK+WRiuekuiA+IGtva3VqaVwgOwor5oSf5q2OID4ga2FudGFuXCA7CivljZfpmoUgPiBuYW5ndXVcIDsKK+WQq+ezliA+IGdhbnRvdVwgOwor6Juu5ZywID4gYmFuY2hpXCA7CivmgqrnpZ4gPiBha3VqaW5cIDsKK+WQjeiBniA+IG1laWJ1blwgOwor56uL5L2TID4gcml0dGFpXCA7CivljYrpn7MgPiBoYW4nJ29uXCA7CivljZfpmZAgPiBuYW5nZW5cIDsKK+aDheeXtCA+IGpvdWNoaVwgOwor56qB5aCkID4gdG90dGVpXCA7CivllqrkuK0gPiBtb2NodXVcIDsKK+a4m+WhqSA+IGdlbicnZW5cIDsKK+a4peWcsCA+IGFrdWNoaVwgOwor5reh5b2pID4gdGFuc2FpXCA7CivmtbfmsLQgPiBrYWlzdWlcIDsKK+a1rua1gSA+IGZ1cnl1dVwgOwor56Wt56WeID4gc2FpamluXCA7CivnpZ7nrKYgPiBzaGlucHVcIDsKK+mHkeiUtSA+IGtpbnpvdVwgOwor5oSb5qyyID4gYWl5b2t1XCA7Civnpa3npYAgPiBzYWlzaGlcIDsKK+WOs+irhyA+IGdlbmRhblwgOwor6JaE6ImyID4gdXN1aXJvXCA7Civnpa3npLwgPiBzYWlyZWlcIDsKK+awkemdkiA+IG1pbnNlaVwgOwor5Y2K6Z2iID4gaGFubWVuXCA7Civlj6Pok4sgPiBrb3VnYWlcIDsKK+a1qua1qiA+IHJvdXJvdVwgOwor5riT5aOwID4ga2Vpc2VpXCA7CivomZrmoLkgPiBreW9rb25cIDsKK+W+rumchyA+IGJpc2hpblwgOwor5b+c6YWsID4gb3VzaHV1XCA7CivljZfploAgPiBuYW5tb25cIDsKK+WOn+izhyA+IGdlbnNoaVwgOwor5rSX55y8ID4gc2VuZ2FuXCA7CivphanphYogPiBtZWl0ZWlcIDsKK+aAp+ihjCA+IHNlaWtvdVwgOwor5ZaE5YemID4gemVuc2hvXCA7CivlkIznvaogPiBkb3V6YWlcIDsKK+a1ruayiCA+IGZ1Y2hpblwgOwor5rC06YqAID4gc3VpZ2luXCA7Civpu5LnhZkgPiBrb2t1ZW5cIDsKK+W+oemhjCA+IGd5b2RhaVwgOwor5Y6z6KiTID4gZ2Vua3VuXCA7CivljbPph5EgPiBzb2traW5cIDsKK+WTgOalvSA+IGFpcmFrdVwgOwor56m65Z+fID4ga3V1aWtpXCA7CivpioDmvKIgPiBnaW5rYW5cIDsKK+a3seWxsSA+IG1peWFtYVwgOwor6YeO6JKcID4gbm9iaXJ1XCA7Civmta7msLcgPiBmdWh5b3VcIDsKK+m2j+mgrSA+IGtlaXRvdVwgOwor56eL5rOiID4gc2h1dWhhXCA7CivmtLvniYggPiBrYXBwYW5cIDsKK+ekvue3miA+IHNoYXNlblwgOwor5rCX6ZW3ID4ga2luYWdhXCA7CivnpZ7np5ggPiBzaGlucGlcIDsKK+epuuWcsCA+IGFraWNoaVwgOwor5Y+w6IeoID4gdGFpcmluXCA7Civmg6jmvrkgPiBzYW50YW5cIDsKK+aEm+alvSA+IGFpZ3lvdVwgOwor6YeO6I+KID4gbm9naWt1XCA7Civnp4vmsJcgPiBzaHV1a2lcIDsKK+azlee3miA+IGhvdXNlblwgOwor5rCR6ZaTID4gbWlua2FuXCA7Civmh4flkb0gPiBrb25tZWlcIDsKK+a4r+WPoyA+IGtvdWtvdVwgOwor5oKq55u4ID4gYWt1c291XCA7CivlvqHpnIogPiBtaXRhbWFcIDsKK+axuuijgSA+IGtlc3NhaVwgOwor5Y2K6ZaLID4gaGFua2FpXCA7Civms5XntrIgPiBob3Vtb3VcIDsKK+aCsueXmyA+IGhpdHN1dVwgOwor6bqm55SwID4gbXVnaXRhXCA7CivptZ7ps6UgPiBnYWNob3VcIDsKK+awtOmDtyA+IHN1aWdvdVwgOwor5ZCI57mKID4gZ291c2VuXCA7Civnp4Hms5UgPiBzaGlob3VcIDsKK+m1nemzpSA+IGdhY2hvdVwgOwor5oWj5oCnID4ga2Fuc2VpXCA7Civljp/oq5YgPiBnZW5yb25cIDsKK+axuuihjCA+IGtla2tvdVwgOwor5oWi5oCnID4gbWFuc2VpXCA7CivlvqHpmbUgPiBnb3J5b3VcIDsKK+W/q+i1sCA+IGthaXNvdVwgOwor5b6T6aCGID4ganV1anVuXCA7CivpvKDml48gPiBzb3pva3VcIDsKK+ayu+iAhSA+IGNoaXNoYVwgOwor5Y6f6KmpID4gZ2Vuc2hpXCA7CivmsLTpgZMgPiBzdWlkb3VcIDsKK+aEn+afkyA+IGthbnNlblwgOwor5oeQ5YmjID4ga2Fpa2VuXCA7Civmg4XnirYgPiBqb3Vqb3VcIDsKK+WQjOe0mSA+IGRvdXNoaVwgOwor6Ymx5ruTID4ga291c2hpXCA7CivlkJHnsbMgPiBrb3ViZWlcIDsKK+mJhOeQtCA+IHRla2tpblwgOwor5ZCM57O7ID4gZG91a2VpXCA7Civnqq7kvZkgPiBreXV1eW9cIDsKK+a1ruaomSA+IGZ1aHlvdVwgOwor6YqA5rOlID4gZ2luZGVpXCA7Civlj6/ogbQgPiBrYWNob3VcIDsKK+iZmuaVsCA+IGt5b3N1dVwgOwor5rW35qOgID4ga2FpZG91XCA7CivmgqrnlqsgPiBha3Vla2lcIDsKK+a4m+WToSA+IGdlbicnaW5cIDsKK+WQg+e3iiA+IGtpa2tpblwgOwor5oGp57WmID4gb25reXV1XCA7CivmsLTovrogPiBtaXp1YmVcIDsKK+W+oemWgCA+IG1pa2Fkb1wgOwor5Y+M6JGJID4gZnV0YWJhXCA7CivlvozpoIUgPiBrb3Vrb3VcIDsKK+eon+aApyA+IGhpbnNlaVwgOwor5re35aOwID4ga29uc2VpXCA7Civlj6PohZQgPiBrb3Vrb3VcIDsKK+mNm+WGtiA+IHRhbicneWFcIDsKK+aCqueUqCA+IGFrdXlvdVwgOwor56qD5Y+WID4gc2Vzc2h1XCA7CivmhInmpb0gPiB5dXJha3VcIDsKK+engOatjCA+IHNodXVrYVwgOwor5Yy66ZW3ID4ga3VjaG91XCA7CivmuJvlj7cgPiBnZW5nb3VcIDsKK+a4r+WGhSA+IGtvdW5haVwgOwor5rC06LuKID4gc3Vpc2hhXCA7CivmuJvlj40gPiBnZW50YW5cIDsKK+mFkumAoCA+IHNodXpvdVwgOwor6JmO5paRID4gdG9yYWZ1XCA7Civpu5LmtbcgPiBrb2trYWlcIDsKK+WQjeetlCA+IG1laXRvdVwgOwor5b6M6ZujID4ga291bmFuXCA7CivnqbrlkI0gPiBrdXVtZWlcIDsKK+a1hea1tyA+IHNlbmthaVwgOwor6Yym5ZywID4ga2luY2hpXCA7Civlj43oi7EgPiBoYW4nJ2VpXCA7CivlkIznrYkgPiBkb3V0b3VcIDsKK+a2suaApyA+IGVraXNlaVwgOwor6by75oGvID4gYmlzb2t1XCA7CivmgqrnkIMgPiBha2t5dXVcIDsKK+WQiOeulyA+IGdhc3NhblwgOwor5Y+N6Iq7ID4gaGFuc3V1XCA7CivmtIvnkLQgPiB5b3VraW5cIDsKK+engeaoqSA+IHNoaWtlblwgOwor6YmE54mHID4gdGVwcGVuXCA7CivnobzphbggPiBob3VzYW5cIDsKK+mJseaziSA+IGtvdXNlblwgOwor5rW35pyIID4ga3VyYWdlXCA7Civmtbfmm7kgPiBrYWlzb3VcIDsKK+mFjemAgSA+IGhhaXNvdVwgOwor5b6M6ZmjID4ga291amluXCA7CivljZfpg4ogPiBuYW5rb3VcIDsKK+axjuirliA+IGhhbnJvblwgOwor5ZSQ5a2QID4ga2FyYWtvXCA7CivmtYHmtL4gPiByeXV1aGFcIDsKK+iWhOe0lyA+IGhha3VzYVwgOwor6Jm55b2pID4ga291c2FpXCA7Civmt7flnKggPiBrb256YWlcIDsKK+WQjOeqkyA+IGRvdXNvdVwgOwor56aB54WZID4ga2luJydlblwgOwor6YqY5p2/ID4gbWVpYmFuXCA7CivpibHmsLQgPiBrb3VzdWlcIDsKK+W+rumHjyA+IGJpcnlvdVwgOwor5rK557W1ID4gYWJ1cmFlXCA7Civmtbfmma8gPiBrYWlrZWlcIDsKK+epuuWMhSA+IGt1dWhvdVwgOwor5Y2K6YeRID4gaGFua2luXCA7Civmr5vpoK0gPiBtb3V0b3VcIDsKK+aEm+aVrCA+IGFpa3lvdVwgOwor5ZCM56iuID4gZG91c2h1XCA7Civnqb/liLogPiBzZW5zaGlcIDsKK+W9oumquCA+IGtlaWdhaVwgOwor5oOo5q27ID4gemFuc2hpXCA7CivmtbfmmJ8gPiBoaXRvZGVcIDsKK+aFiOW/gyA+IGppc2hpblwgOwor5b6M6ZaAID4ga291bW9uXCA7CivmtYTmsLQgPiBqb3VzdWlcIDsKK+a4m+WIkSA+IGdlbmtlaVwgOwor6YeN572qID4ganV1emFpXCA7CivphaLosZogPiBzdWJ1dGFcIDsKK+WNg+mIniA+IHNlbmtpblwgOwor6buE5rW3ID4ga291a2FpXCA7Civlj7DntJkgPiBkYWlzaGlcIDsKK+mFjei7iiA+IGhhaXNoYVwgOwor56We55K9ID4gc2hpbmppXCA7CivnqbrliY0gPiBrdXV6ZW5cIDsKK+a0l+eFiSA+IHNlbnJlblwgOwor5rSL54qsID4geW91a2VuXCA7CivmtLjmtLggPiBrb3Vrb3VcIDsKK+WNsOixoSA+IGluc2hvdVwgOwor5Y2D6YeRID4gc2Vua2luXCA7CivnqK7lrZAgPiBzaHVzaGlcIDsKK+a0uOa0iyA+IGtvdXlvdVwgOwor56eL5pyfID4gc2h1dWtpXCA7CivmsJfov6sgPiBraWhha3VcIDsKK+WQjOekviA+IGRvdXNoYVwgOwor5b2x6Z+/ID4gZWlreW91XCA7CivolJHoppYgPiBiZXNzaGlcIDsKK+W/nOirviA+IG91ZGFrdVwgOwor5rib5YWNID4gZ2VubWVuXCA7CivmsJHpgbggPiBtaW5zZW5cIDsKK+epuuWGtyA+IGt1dXJlaVwgOwor5oOa5rCXID4gbm9yb2tlXCA7CivnpLznoLIgPiByZWlob3VcIDsKK+WNmOi7iiA+IHRhbnNoYVwgOwor5oW25aSnID4ga2VpZGFpXCA7Civlkozmpb0gPiB3YXJha3VcIDsKK+aAquiFlSA+IGthaXdhblwgOwor5ZCI56WtID4gZ291c2FpXCA7Civlj4zogqkgPiBzb3VrZW5cIDsKK+WVhuWLmSA+IHNob3VtdVwgOwor5oKq54axID4gYW5ldHN1XCA7CivlkIjnpYAgPiBnb3VzaGlcIDsKK+aAp+iFuiA+IHNlaXNlblwgOwor5oay5YW1ID4ga2VucGVpXCA7CivmuJvlgrUgPiBnZW5zYWlcIDsKK+m7hOawtCA+IGtpbWl6dVwgOwor6YqY5paHID4gbWVpYnVuXCA7Civlj6PntbUgPiBrdWNoaWVcIDsKK+enkeaWmSA+IGthcnlvdVwgOwor5b6h6YWMID4gb3NoYWt1XCA7CivmsJfou70gPiBraWdhcnVcIDsKK+aAp+iDvSA+IHNlaW5vdVwgOwor5ZGG54S2ID4gYm91emVuXCA7Civms6jnlo8gPiBjaHV1c29cIDsKK+azqOeWjiA+IGNodXVzb1wgOwor5ZWG5YipID4gc2hvdXJpXCA7CivpioXmnb8gPiBkb3ViYW5cIDsKK+mFkuiyqSA+IHNodWhhblwgOwor6Juu5Lq6ID4gYmFuamluXCA7CivllLHlkowgPiBzaG91d2FcIDsKK+WRqOazoiA+IHNodXVoYVwgOwor5rW35pCNID4ga2Fpc29uXCA7CivmgKrogZ4gPiBrYWlidW5cIDsKK+engeaciSA+IHNoaXl1dVwgOwor5oWu5aSWID4gcnlvZ2FpXCA7CivphZLosaogPiBzaHVnb3VcIDsKK+engeabuCA+IHNoaXNob1wgOwor6YeR57O4ID4ga2luc2hpXCA7CivmuJvkv7ggPiBnZW5wb3VcIDsKK+WNiui8qiA+IGhhbnJpblwgOwor5rOV55y8ID4gaG91Z2VuXCA7Civmt7flkIwgPiBrb25kb3VcIDsKK+mKgOadryA+IGdpbnBhaVwgOwor5re35ZCIID4ga29uZ291XCA7Civnn7PpubggPiBzZWtrZW5cIDsKK+mHkeeyiSA+IGtpbnB1blwgOwor6Ymb5q+SID4gZW5kb2t1XCA7CivlvZPpp4UgPiB0b3Vla2lcIDsKK+W+oemBiiA+IGd5b3l1dVwgOwor5rim5LitID4ga2FjaHV1XCA7Civms5Xnm7ggPiBob3Nzb3VcIDsKK+a3seWRsyA+IGZ1a2FtaVwgOwor56We54i2ID4gc2hpbnB1XCA7Civljp/okZcgPiBnZW5jaG9cIDsKK+aCoOeEtiA+IHl1dXplblwgOwor5oSf5oeQID4ga2Fua2FpXCA7Civpuqbmua8gPiBtdWdpeXVcIDsKK+aDs+acmyA+IHNvdWJvdVwgOwor5Y+C6ICDID4gc2Fua291XCA7CivlkIznnIwgPiBkb3VrZW5cIDsKK+WQjeebpCA+IG1laWJhblwgOwor5Y+456WtID4gc2hpc2FpXCA7Civlj5fntaYgPiBqdWt5dXVcIDsKK+WQjOebuCA+IGRvdXNvdVwgOwor5ZCM55ufID4gZG91bWVpXCA7CivmtKrmsLQgPiBrb3V6dWlcIDsKK+WTgOaEgSA+IGFpc2h1dVwgOwor5oSf5oWoID4ga2FuZ2FpXCA7CivljYPovIkgPiBzZW56YWlcIDsKK+ibjeWFiSA+IGtlaWtvdVwgOwor5ZOA5oOcID4gYWlzZWtpXCA7CivlkInnm7ggPiBraXNzb3VcIDsKK+epuuS8vCA+IHNvcmFuaVwgOwor5ZKM5pyNID4gd2FmdWt1XCA7Civnoazou58gPiBrb3VuYW5cIDsKK+mHkeeuoSA+IGtpbmthblwgOwor6Jas55CGID4geWFrdXJpXCA7CivmhJvmho4gPiBhaW5pa3VcIDsKK+WPo+etlCA+IGtvdXRvdVwgOwor5b6M6YeRID4gYXRva2luXCA7CivmhJvmhb4gPiBhaXlva3VcIDsKK+aEn+aDsyA+IGthbnNvdVwgOwor56S+55SoID4gc2hheW91XCA7CivpioDmmKAgPiBnaW4nJ2VpXCA7CivpubXnjbIgPiByb2tha3VcIDsKK+egsumWgCA+IGhvdW1vblwgOwor5rW35oimID4ga2Fpc2VuXCA7CivmhJ/mg4UgPiBrYW5qb3VcIDsKK+aAneiAgyA+IHNoaWtvdVwgOwor5ZOB5oCnID4gaGluc2VpXCA7Civlvqnot68gPiBmdWt1cm9cIDsKK+WRveaguSA+IG1laWtvblwgOwor5oOF5q27ID4gam91c2hpXCA7CivpjKDliaQgPiBqb3V6YWlcIDsKK+a3seWMliA+IHNoaW5rYVwgOwor5Y2z6KGMID4gc29ra291XCA7CivpjKDliY0gPiBqb3VtYWVcIDsKK+awl+ixoSA+IGtpc2hvdVwgOwor5oSb5oOcID4gYWlzZWtpXCA7Civlj7fnoLIgPiBnb3Vob3VcIDsKK+azleeVjCA+IGhva2thaVwgOwor5ZWT5LiKID4ga2Vpam91XCA7CivmtJfmtYQgPiBzZW5qb3VcIDsKK+aEn+aApyA+IGthbnNlaVwgOwor56We54GrID4gc2hpbmthXCA7Civlj4zntJkgPiBzb3VzaGlcIDsKK+WQjeeUoyA+IG1laXNhblwgOwor5oSb5oGvID4gYWlzb2t1XCA7Civol6TmsI8gPiB0b3VzaGlcIDsKK+WNlOitsCA+IGt5b3VnaVwgOwor6buS5pyoID4ga3Vyb2tpXCA7CivmhJrmga8gPiBndXNva3VcIDsKK+WPpOensCA+IGtvc2hvdVwgOwor6bSV6bOlID4gZGFjaG91XCA7Civms6XnirYgPiBkZWlqb3VcIDsKK+W9k+mdoiA+IHRvdW1lblwgOwor5b+F6KaLID4gaGlra2VuXCA7CivpvJPlvJMgPiBrb2t5dXVcIDsKK+WTgOW8lCA+IGFpY2hvdVwgOwor5oKy5rOBID4gaGlreW91XCA7Civms7DnhLYgPiB0YWl6ZW5cIDsKK+WPjeexsyA+IGhhbmJlaVwgOwor5rS75qCTID4ga2Fzc2VuXCA7CivmtYTmm7ggPiBqb3VzaG9cIDsKK+egtOmPoSA+IGhha3lvdVwgOwor56iA5bCRID4ga2lzaG91XCA7CivllYbkuosgPiBzaG91amlcIDsKK+emgeatoiA+IGtpbnNoaVwgOwor5b6M6YCBID4ga291c291XCA7CivlvozpgIAgPiBrb3V0YWlcIDsKK+WPl+eroCA+IGp1c2hvdVwgOwor6YeN56iOID4ganV1emVpXCA7CivphaLom7ggPiBzdWRha29cIDsKK+atr+m9piA+IHNoaWdpblwgOwor5ZCE55WMID4ga2Fra2FpXCA7Civlj6LnpaAgPiBob2tvcmFcIDsKK+aFqOWYhiA+IGdhaXRhblwgOwor5b6T6LuNID4ganV1Z3VuXCA7Civmr5vpiI4gPiBrZWJhcmlcIDsKK+mDqOmVtyA+IGJ1Y2hvdVwgOwor5Y+y55y8ID4gc2hpZ2FuXCA7CivmgrbmrbsgPiBtb25zaGlcIDsKK+autemajiA+IGRhbmthaVwgOwor6by+5aOwID4ga2Fuc2VpXCA7Civmg6jmlZcgPiB6YW5wYWlcIDsKK+aCquazlSA+IGFrdWhvdVwgOwor5b6F6YGHID4gdGFpZ3V1XCA7CivmtIvmtIsgPiB5b3V5b3VcIDsKK+m6uuajkiA+IG1lbmJvdVwgOwor5Y+z55uuID4gbWlnaW1lXCA7Civlv4XoobAgPiBoaXNzdWlcIDsKK+atr+m7kiA+IGhhZ3Vyb1wgOwor6YeN56WaID4gY2hvdXNvXCA7CivlvozovKogPiBrb3VyaW5cIDsKK+W+jOi8qSA+IGtvdWhhaVwgOwor6buO5piOID4gcmVpbWVpXCA7CivmhIjmhIggPiBpeW9peW9cIDsKK+ekvOeKtiA+IHJlaWpvdVwgOwor5rCR6KuWID4gbWlucm9uXCA7Civlj4LnsaAgPiBzYW5yb3VcIDsKK+aCquawtCA+IGFrdXN1aVwgOwor5ru+44CFID4ga29ua29uXCA7CivljKrouqwgPiBoaWt5dXVcIDsKK+W+jOi7jSA+IGtvdWd1blwgOwor5b6M6LuKID4ga291c2hhXCA7CivmhInmgqYgPiB5dWV0c3VcIDsKK+mHneebriA+IGhhcmltZVwgOwor5YyX6YOoID4gaG9rdWJ1XCA7CivlvL7poK0gPiBkYW50b3VcIDsKK+aCquawlyA+IHdhcnVnaVwgOwor55+i6bGIID4geWF0YXJhXCA7CivnpI7nn7MgPiBzb3Nla2lcIDsKK+a1tOW+jCA+IHlva3Vnb1wgOwor5Y2T6KaLID4gdGFra2VuXCA7Civlkb3mlbAgPiBtZWlzdXVcIDsKK+WMl+mDiiA+IGhva2tvdVwgOwor5q6L6aq4ID4gemFuZ2FpXCA7CivmipjjgIUgPiBvcmlvcmlcIDsKK+azpeeCrSA+IGRlaXRhblwgOwor6YeR56CCID4ga2luc2hhXCA7CivlkI3nirYgPiBtZWlqb3VcIDsKK+WLp+mZjSA+IGthbmtvdVwgOwor6JGb6aShID4ga3V6dWFuXCA7Civmta7lv4MgPiBmdXNoaW5cIDsKK+mHjeegsiA+IGp1dWhvdVwgOwor56eB5oakID4gc2hpZnVuXCA7CivmsZfohbogPiBrYW5zZW5cIDsKK+a1t+W6lSA+IGthaXRlaVwgOwor5oCq56ulID4ga2FpZG91XCA7CivmsrznlLAgPiBudW1hZGFcIDsKK+elreauvyA+IHNhaWRlblwgOwor5Y2Y6KGMID4gdGFua291XCA7CivnoLLph5EgPiBob3VraW5cIDsKK+WPpOedgCA+IGZ1cnVnaVwgOwor5Y2K6KejID4gaGFua2FpXCA7CivljZfooYwgPiBuYW5rb3VcIDsKK+mKgOaJhyA+IGdpbnNlblwgOwor6YeN55+zID4gb21vc2hpXCA7CivmsrvnlKMgPiBjaGlzYW5cIDsKK+WLn+mbhiA+IGJvc2h1dVwgOwor5re75LmXID4gdGVuam91XCA7Civpg7fph4wgPiBreW91cmlcIDsKK+WRqOacnyA+IHNodXVraVwgOwor5Y6f572qID4gZ2VuemFpXCA7CivpjKbkuIogPiBraW5qb3VcIDsKK+WRs+aWuSA+IG1pa2F0YVwgOwor56iu5ZCNID4gc2h1bWVpXCA7CivlvLfpn7MgPiBreW91b25cIDsKK+a3t+S6pCA+IGtvbmtvdVwgOwor6JqV5Y21ID4gc2FucmFuXCA7Civnp4HmhJ8gPiBzaGlrYW5cIDsKK+WNgeiqoSA+IGppa2thaVwgOwor5q6L6aaZID4gemFua291XCA7Civpuqrmo5IgPiBtZW5ib3VcIDsKK+axmuiBtyA+IG9zaG9rdVwgOwor6Jep5qChID4gaGFua291XCA7Civmt7fkubEgPiBrb25yYW5cIDsKK+epguWFiCA+IGhvc2FraVwgOwor6YeR55uuID4ga2FuZW1lXCA7Civnp4Hmg4UgPiBzaGlqb3VcIDsKK+a1t+W2uiA+IGthaXJlaVwgOwor5YuV6Z2ZID4gZG91c2VpXCA7CivmgZLnlKMgPiBrb3VzYW5cIDsKK+mHj+ebriA+IHJ5b3VtZVwgOwor5b6z6KGMID4gdG9ra291XCA7CivnoJTpkb0gPiBrZW5zYW5cIDsKK+W8semfsyA+IHlvd2FuZVwgOwor5Yyq6LOKID4gaGl6b2t1XCA7CivlkLjmsJcgPiBreXV1a2lcIDsKK+WLoumWgCA+IHNlaW1vblwgOwor5b+r6IWVID4ga2Fpd2FuXCA7Civnp4HmgaggPiBzaGlrb25cIDsKK+aui+mjryA+IHphbnBhblwgOwor5rC06JGsID4gc3Vpc291XCA7CivljYroo4EgPiBoYW5zYWlcIDsKK+emheaelyA+IHplbnJpblwgOwor5ZSv5LiAID4geXVpdHN1XCA7Civph43nm5cgPiBqdXV0b3VcIDsKK+WQjOeEtiA+IGRvdXplblwgOwor5q276aq4ID4gc2hpZ2FpXCA7CivlvqHoqJcgPiBnb3Rha3VcIDsKK+W+ruihtyA+IGJpY2h1dVwgOwor5b6h6KiAID4gbWlrb3RvXCA7CivmsLfoj5MgPiBoeW91a2FcIDsKK+elnuawlyA+IHNoaW5raVwgOwor5Yq56aiTID4ga291a2VuXCA7CivljZfom64gPiBuYW5iYW5cIDsKK+WNiuihvyA+IGhhbmVyaVwgOwor6Jma5aaEID4ga3lvbW91XCA7CivmsbrnrpcgPiBrZXNzYW5cIDsKK+aEn+WumCA+IGthbmthblwgOwor5YyW6LqrID4ga2VzaGluXCA7CivmgaznhLYgPiB0ZW56ZW5cIDsKK+aDheaZryA+IGpvdWtlaVwgOwor6Jas5rmvID4geWFrdXl1XCA7Civmsb3nrJsgPiBraXRla2lcIDsKK+azleeBryA+IGhvdXRvdVwgOwor5ra85ZGzID4gcnlvdW1pXCA7CivlkIzngrkgPiBkb3V0ZW5cIDsKK+awtOiPnCA+IG1penVuYVwgOwor5rW35bK4ID4ga2FpZ2FuXCA7Civli77phY0gPiBrb3ViYWlcIDsKK+aCqualrSA+IGFrdWdvdVwgOwor5Y+C56aFID4gc2FuemVuXCA7Civljp/ntr8gPiBnZW5tZW5cIDsKK+aDqOaGuiA+IHNhbnRhblwgOwor6Jek5pysID4gdG91aG9uXCA7CivpiYTmnb8gPiB0ZXBwYW5cIDsKK+mDtemAgSA+IHl1dXNvdVwgOwor5q+U6LyDID4gaGlrYWt1XCA7CivmtYXmiY0gPiBzZW5zYWlcIDsKK+efremfsyA+IHRhbicnb25cIDsKK+emgeabuCA+IGtpbnNob1wgOwor6JGJ6aKoID4gaGFrYXplXCA7Civlj6LnlJ8gPiBzb3VzZWlcIDsKK+W+oeijvSA+IGd5b3NlaVwgOwor6JO06I+cID4ganVuc2FpXCA7CivlkKvmsLQgPiBnYW5zdWlcIDsKK+aDs+W/tSA+IHNvdW5lblwgOwor5b2x6LqrID4ga2FnZW1pXCA7Civljp/ntJkgPiBnZW5zaGlcIDsKK+aEm+WsjCA+IGFpa3lvdVwgOwor6Yq35aSPID4gc2hvdWthXCA7Civmr5votrMgPiBrZWFzaGlcIDsKK+WOn+ezuCA+IGdlbnNoaVwgOwor5q2v6auEID4gc2hpenVpXCA7CivmtbflrrkgPiBrYWl5b3VcIDsKK+mKg+W8viA+IGp1dWRhblwgOwor6Jma5aCxID4ga3lvaG91XCA7Civljp/ns5YgPiBnZW50b3VcIDsKK+iQvemmrCA+IHJha3ViYVwgOwor6YeR55KwID4ga2lua2FuXCA7CivnoJXpibEgPiBzYWlrb3VcIDsKK+W8k+mmrCA+IGt5dXViYVwgOwor5Y+M55y8ID4gc291Z2FuXCA7Civlj4znnLggPiBzb3Vib3VcIDsKK+m5ueawtCA+IGthbnN1aVwgOwor56Cy6LuKID4gaG91c2hhXCA7CivmhoLkuJYgPiB5dXVzZWlcIDsKK+WPjeecgSA+IGhhbnNlaVwgOwor5rOo5rK5ID4gY2h1dXl1XCA7CivmtYXmha4gPiBzZW5yeW9cIDsKK+mDt+i7jSA+IGdvdWd1blwgOwor5oOF5pONID4gam91c291XCA7CivnpZ7mqLkgPiBzaGluanVcIDsKK+a2iOWkjyA+IHNob3VrYVwgOwor5rKI56CCID4gY2hpbnNhXCA7Civli6fpioAgPiBrYW5naW5cIDsKK+WMu+ihkyA+IGlqdXRzdVwgOwor6YKm6aGMID4gaG91ZGFpXCA7CivolYPnpL4gPiBiYW5zaGFcIDsKK+eov+S6uiA+IGtvdWppblwgOwor56aB5patID4ga2luZGFuXCA7CivokIzpu44gPiBob3VyZWlcIDsKK+aDsOW8sSA+IGRhamFrdVwgOwor5b6L6KmpID4gcmlzc2hpXCA7CivmhJ/lpa4gPiBrYW5wdW5cIDsKK+WOs+emgSA+IGdlbmtpblwgOwor5raZ5ZqiID4gcnVpbm91XCA7CivnqYLkuKYgPiBob25hbWlcIDsKK+WNteiDniA+IHJhbmhvdVwgOwor5ZCM5rqQID4gZG91Z2VuXCA7CivmhJvlpr4gPiBhaXNob3VcIDsKK+WQjea5ryA+IG1laXRvdVwgOwor6YeO55CDID4geWFreXV1XCA7CivmgKrnm5cgPiBrYWl0b3VcIDsKK+WRieacjSA+IGdvZnVrdVwgOwor56We5qW9ID4ga2FndXJhXCA7Civlv6DnvqkgPiBjaHV1Z2lcIDsKK+iRt+mFkiA+IGt1bnNodVwgOwor5rC06IWrID4gc3Vpc2h1XCA7Civnp5HlraYgPiBrYWdha3VcIDsKK+iXjeafkyA+IGFpem9tZVwgOwor5ZSQ5Lq6ID4gdG91amluXCA7CivmsrnnhLYgPiB5dXV6ZW5cIDsKK+aCquabuCA+IGFrdXNob1wgOwor5b2T6YG4ID4gdG91c2VuXCA7CivmtIvmnKwgPiB5b3Vob25cIDsKK+W+jOimiyA+IGtvdWtlblwgOwor5ZCb5rCRID4ga3VubWluXCA7CivmtIvmm7ggPiB5b3VzaG9cIDsKK+iRiemZsCA+IGhha2FnZVwgOwor6YqA5ba6ID4gZ2lucmVpXCA7CivnpLzms5UgPiByZWlob3VcIDsKK+ayuOeCuSA+IGZ1dHRlblwgOwor56eL5a2jID4gc2h1dWtpXCA7CivmhYvli6IgPiB0YWlzZWlcIDsKK+WSjOW4gyA+IHdha2FtZVwgOwor5oGs5rehID4gdGVudGFuXCA7Civpu5nluqcgPiBtb2t1emFcIDsKK+a2suWJpCA+IGVraXphaVwgOwor5q276ZyKID4gc2hpcmVpXCA7Civmrr/ou40gPiBkZW5ndW5cIDsKK+m7kuW9sSA+IGtva3VlaVwgOwor5byK6aKoID4gaGVpZnV1XCA7Civlj4znlJ8gPiBzb3VzZWlcIDsKK+W/heiHsyA+IGhpc3NoaVwgOwor5b6A6Ki6ID4gb3VzaGluXCA7CivlvoHoqI4gPiBzZWl0b3VcIDsKK+iUl+ezliA+IHNob3RvdVwgOwor6YeR54mMID4ga2lucGFpXCA7CivphY3oiLkgPiBoYWlzZW5cIDsKK+mKheWxsSA+IGRvdXphblwgOwor5oWj5L6LID4ga2FucmVpXCA7Civms5XmsrsgPiBob3VjaGlcIDsKK+a1t+WkliA+IGthaWdhaVwgOwor5Y6f56i/ID4gZ2Vua291XCA7Civljp/nqK4gPiBnZW5zaHVcIDsKK+awtOiAlSA+IHN1aWtvdVwgOwor6YO16LKvID4geXV1Y2hvXCA7Civph47niZsgPiB5YWd5dXVcIDsKK+a0u+aApyA+IGthc3NlaVwgOwor56S+5q6/ID4gc2hhZGVuXCA7CivmhJvln7cgPiBhaXNodXVcIDsKK+WLp+mAsiA+IGthbmppblwgOwor6YeN54mIID4ganV1aGFuXCA7CivmgqrmlocgPiBha3VidW5cIDsKK+eggumHkSA+IHNoYWtpblwgOwor5q2j6aSQID4gc2Vpc2FuXCA7CivphY3ohrMgPiBoYWl6ZW5cIDsKK+axgue4gSA+IGt5dXVlblwgOwor6YqA5bGxID4gZ2luemFuXCA7CivnqI7liLYgPiB6ZWlzZWlcIDsKK+W/jeiAkCA+IG5pbnRhaVwgOwor5oKq5pS/ID4gYWt1c2VpXCA7Civmra/pnaIgPiBzaGltZW5cIDsKK+WQiOazlSA+IGdvdWhvdVwgOwor5q276ZeYID4gc2hpdG91XCA7Civnpa3mlocgPiBzYWltb25cIDsKK+WQhOa0viA+IGtha3VoYVwgOwor6YG66auqID4gaWhhdHN1XCA7CivljZfoiKogPiBuYW5rb3VcIDsKK+aFqOS4liA+IGdhaXNlaVwgOwor56eY5aKDID4gaGlreW91XCA7CivphZLogrQgPiBzaHVrb3VcIDsKK+axgOe3miA+IHRlaXNlblwgOwor5Y6755ewID4ga3lvdGFuXCA7CivmtbfloKEgPiBrYWlob3VcIDsKK+WQjOawjyA+IGRvdXNoaVwgOwor56Wt5pS/ID4gc2Fpc2VpXCA7CivpgbrpqqggPiBpa290c3VcIDsKK+m7kuW3viA+IGt1cm9nb1wgOwor5oGp5rKiID4gb250YWt1XCA7Civmtbfln58gPiBrYWlpa2lcIDsKK+W+hOihjCA+IGtlaWtvdVwgOwor5oSb5Zu9ID4gYWlrb2t1XCA7CivpiYTmi7MgPiB0ZWtrZW5cIDsKK+WQjeauiyA+IG5hZ29yaVwgOwor5rK85rmWID4gc2hvdWtvXCA7CivokazpgIEgPiBzb3Vzb3VcIDsKK+egtOiqvyA+IGhhY2hvdVwgOwor5oOz5a6aID4gc291dGVpXCA7Civmg4XmhJ8gPiBqb3VrYW5cIDsKK+iZmuWQjSA+IGt5b21laVwgOwor5Y6a56S8ID4ga291cmVpXCA7CivnpoHmiYAgPiBraW5zaG9cIDsKK+W8vumBkyA+IGRhbmRvdVwgOwor5rCR6Iq4ID4gbWluZ2VpXCA7CivmhJ/lmIYgPiBrYW50YW5cIDsKK+WTuuS5syA+IGhvbnl1dVwgOwor6YeN54K5ID4ganV1dGVuXCA7CivlkIPmsLQgPiBraXNzdWlcIDsKK+ensOWRvCA+IHNob3Vrb1wgOwor5Y+w5rm+ID4gdGFpd2FuXCA7Civms4nmsLQgPiBzZW5zdWlcIDsKK+mJhOaJhyA+IHRlc3NlblwgOwor5oCq542jID4ga2FpanV1XCA7Civlkajlv4wgPiBzaHV1a2lcIDsKK+awuOe2miA+IGVpem9rdVwgOwor5q2j6Z2iID4gbWF0b21vXCA7Civph43ngbAgPiBqdXVrYWlcIDsKK+awtOe3tCA+IHN1aXJlblwgOwor55+t6YqDID4gdGFuanV1XCA7Civlk4Dlk60gPiBhaWtva3VcIDsKK+awtOe3miA+IHN1aXNlblwgOwor6Ymx5bGxID4ga291emFuXCA7CivljbHntbUgPiBhYnVuYWVcIDsKK+mJseWxpCA+IGtvdXNvdVwgOwor5oGl5q+bID4gY2hpbW91XCA7CivljJfooYwgPiBob2trb3VcIDsKK+aym+eEtiA+IGhhaXplblwgOwor5q636LORID4gaW5zaGluXCA7Civmr5LoposgPiBkb2t1bWlcIDsKK+WKqemVtyA+IGpvY2hvdVwgOwor5ray5L2TID4gZWtpdGFpXCA7Civlj7jms5UgPiBzaGlob3VcIDsKK+mIjeaguSA+IGRvbmtvblwgOwor5oOF5b+1ID4gam91bmVuXCA7Civmgr3mg6ggPiBzZWlzYW5cIDsKK+aDqOWusyA+IHNhbmdhaVwgOwor6Jma5YuiID4ga3lvc2VpXCA7Civnoofnva4gPiB0ZWljaGlcIDsKK+mFjee9riA+IGhhaWNoaVwgOwor5rCX6IO4ID4ga2lreW91XCA7CivlkrPll70gPiBnYWlzb3VcIDsKK+aui+mHkSA+IHphbmtpblwgOwor5b6p6IiqID4gZnVra291XCA7CivlkIzmqKkgPiBkb3VrZW5cIDsKK+avrOiXuyA+IG1hcmltb1wgOwor6Jar5p+TID4ga3Vuc2VuXCA7Civnp4HlpKcgPiBzaGlkYWlcIDsKK+avm+ifuSA+IGtlZ2FuaVwgOwor5b6p6IiIID4gZnVra291XCA7CivmhJvllLEgPiBhaXNob3VcIDsKK+aAp+eKtiA+IHNlaWpvdVwgOwor5ZOB5ZCNID4gaGlubWVpXCA7CivpibHlrrMgPiBrb3VnYWlcIDsKK+WQjOanmCA+IGRvdXlvdVwgOwor5Y2D6IisID4gc2VucGFuXCA7CivmsLTns7sgPiBzdWlrZWlcIDsKK+aCoOaPmiA+IHl1dXlvdVwgOwor5oKq5oqVID4gYWt1dG91XCA7Civljp/nm6QgPiBnZW5iYW5cIDsKK+mztOmWgCA+IG5hcnV0b1wgOwor5YuV6LyqID4gZG91cmluXCA7CivmsrPmtYEgPiBrYXJ5dXVcIDsKK+WOmuedgCA+IGF0c3VnaVwgOwor5oKq5omNID4gYWt1c2FpXCA7CivmgqrmiYsgPiBha3VzaHVcIDsKK+aEn+WQnyA+IGthbmdpblwgOwor5rK85rCXID4gc2hvdWtpXCA7CivmsrvmsLQgPiBjaGlzdWlcIDsKK+aCquaJgCA+IGFrdXNob1wgOwor6YqD5aOwID4ganV1c2VpXCA7CivljbXnrqEgPiByYW5rYW5cIDsKK+atjumhmCA+IHRhbmdhblwgOwor6buS5a2XID4ga3Vyb2ppXCA7Civpu5LlrZAgPiBob2t1cm9cIDsKK+aCtuaCtiA+IG1vbm1vblwgOwor5oKq5oimID4gYWt1c2VuXCA7Civli5Xou6IgPiBkb3V0ZW5cIDsKK+emgOaApyA+IHJpbnNlaVwgOwor5YuH6YKBID4geXV1bWFpXCA7CivljbHnr6QgPiBraXRva3VcIDsKK+engeWgsSA+IHNoaWhvdVwgOwor5oKy5oSBID4gaGlzaHV1XCA7CivmtojljJYgPiBzaG91a2FcIDsKK+ato+mWjyA+IHNlaWp1blwgOwor5q2j6ZaAID4gc2VpbW9uXCA7CivlvaLoposgPiBrYXRhbWlcIDsKK+WQjOajsiA+IGRvdXNlaVwgOwor6baP6IiOID4ga2Vpc2hhXCA7CivljIXoo4UgPiBob3Vzb3VcIDsKK+W+s+e+qSA+IHRva3VnaVwgOwor6JGJ6YW4ID4geW91c2FuXCA7CivlirTpioAgPiByb3VnaW5cIDsKK+WNsOeusSA+IGluYmFrb1wgOwor5b6M6JGJID4ga291eW91XCA7Civpg7XooosgPiB5dXV0YWlcIDsKK+mFjee3miA+IGhhaXNlblwgOwor5YuH6YCAID4geXV1dGFpXCA7CivlkLnmjJkgPiBzdWlreW9cIDsKK+auiumBhyA+IHNodWd1dVwgOwor6JK86IyrID4gc291Ym91XCA7CivmsLTnrqEgPiBzdWlrYW5cIDsKK+elnuaOiCA+IHNoaW5qdVwgOwor5oKq5oWLID4gYWt1dGFpXCA7Civlj6TmtYEgPiBrb3J5dXVcIDsKK+WNgeiDvSA+IGp1dW5vdVwgOwor6YqA5aGKID4gZ2lua2FpXCA7Civol7vlsZEgPiBtb2t1enVcIDsKK+iZmuWDjyA+IGt5b3pvdVwgOwor6YWS57K+ID4gc2h1c2VpXCA7CivlkIzmoLkgPiBkb3Vrb25cIDsKK+aymea8oCA+IHNhYmFrdVwgOwor5rC0562SID4gc3VpdG91XCA7Civpu5nlpZEgPiBtb2trZWlcIDsKK+aEn+WLlSA+IGthbmRvdVwgOwor5ZCM5qChID4gZG91a291XCA7Civph43mtrIgPiBqdXVla2lcIDsKK+WPpOazqCA+IGtvY2h1dVwgOwor5Y2Y57eaID4gdGFuc2VuXCA7CivlvZPoqbIgPiB0b3VnYWlcIDsKK+WNsOeroCA+IGluc2hvdVwgOwor5q+S6Ju+ID4gZG9rdWdhXCA7Civljp/nlKMgPiBnZW5zYW5cIDsKK+WLneiyoCA+IHNob3VidVwgOwor5Y6f55SfID4gZ2Vuc2VpXCA7Civlu7bplbcgPiBlbmNob3VcIDsKK+mHkeazpSA+IGtvbmRlaVwgOwor55+l6YGHID4gY2hpZ3V1XCA7CivmrYzpm4YgPiBrYXNodXVcIDsKK+axoOeVlCA+IGNoaWhhblwgOwor5Y2m566XID4ga2Vpc2FuXCA7Civpu5LlpbQgPiBrb2t1ZG9cIDsKK+aApeeBqyA+IGt5dXVrYVwgOwor56We5oqAID4gc2hpbmdpXCA7CivpioDlnZEgPiBnaW5rb3VcIDsKK+azleabuSA+IGhvdXNvdVwgOwor5ZCM5p2RID4gZG91c29uXCA7CivljprnlJ8gPiBrb3VzZWlcIDsKK+WQjeacrSA+IG5hZnVkYVwgOwor5oKq5oCnID4gYWt1c2VpXCA7CivljZjntJQgPiB0YW5qdW5cIDsKK+WQjeacmyA+IG1laWJvdVwgOwor5Yun6KqsID4ga2FuemVpXCA7CivlkJHmmpEgPiBrb3VzaG9cIDsKK+iYiuWlpSA+IHVuJydub3VcIDsKK+W/q+ecoCA+IGthaW1pblwgOwor5oKq5b+1ID4gYWt1bmVuXCA7CivljYrnuo8gPiBoYW50ZW5cIDsKK+W+oeiAhSA+IGd5b3NoYVwgOwor5rC056iyID4gc3VpdG91XCA7CivlkIzmnIsgPiBkb3Vib3VcIDsKK+WQiOadvyA+IGdvdWJhblwgOwor5ZCM5pu4ID4gZG91c2hvXCA7Civph5HmsJcgPiBrYW5ha2VcIDsKK+enmOWMvyA+IGhpdG9rdVwgOwor5oSf5YaSID4ga2FuYm91XCA7Civnpo/lr78gPiBmdWt1anVcIDsKK+aAqua8oiA+IGthaWthblwgOwor6YmE5belID4gdGVra291XCA7CivlkIjmnKwgPiBnYXBwb25cIDsKK+mBremboyA+IHNvdW5hblwgOwor6YeN5rC0ID4ganV1c3VpXCA7CivmsLTnpr0gPiBzdWlraW5cIDsKK+aEn+WFiSA+IGthbmtvdVwgOwor6Jma5LydID4ga3lvZGVuXCA7CivlkIjmnI0gPiBhaWZ1a3VcIDsKK+aCoOaCoCA+IHl1dXl1dVwgOwor5Y2X57GzID4gbmFuYmVpXCA7Civpto/nvqQgPiBrZWlndW5cIDsKK+mFjeeuoSA+IGhhaWthblwgOwor5ZOA5YK3ID4gYWlzaG91XCA7Civlj5fms6ggPiBqdWNodXVcIDsKK+WKtOmAoyA+IHJvdXJlblwgOwor5Yum6KiOID4gc291dG91XCA7CivljrPnhLYgPiBnZW56ZW5cIDsKK+mJl+WtkCA+IGthbnNoaVwgOwor5Y2Y57ChID4gdGFua2FuXCA7CivolLXniYggPiB6b3VoYW5cIDsKK+awtOelniA+IHN1aWppblwgOwor5oKq5byKID4gYWt1aGVpXCA7CivlibXpnaIgPiBzb3VtZW5cIDsKK+WKtOi+siA+IHJvdW5vdVwgOwor5b6p57iBID4gZnVrdWVuXCA7CivnpZ7mhI8gPiBzaGluJydpXCA7Civpu73li4kgPiBiaW5iZW5cIDsKK+aEj+WKmyA+IGlyeW9rdVwgOwor5b2T6KGMID4gdG91a291XCA7CivnpoXlsLwgPiB6ZW4nJ25pXCA7CivnpZ3mhI8gPiBzaHVrdWlcIDsKK+azleaWhyA+IGhvdWJ1blwgOwor5Yqg6YeNID4ga2FjaG91XCA7CivlkIzmlq0gPiBkb3VkYW5cIDsKK+WPluawtCA+IHNodXN1aVwgOwor5rWE5Z+fID4gam91aWtpXCA7CivlkI3mlocgPiBtZWlidW5cIDsKK+WNiue0mSA+IGhhbnNoaVwgOwor5byU6L6eID4gY2hvdWppXCA7CivpibHlnZEgPiBrb3Vrb3VcIDsKK+WQjeaVsCA+IG1laXN1dVwgOwor6YWS56iOID4gc2h1emVpXCA7CivlkIzmlocgPiBkb3VidW5cIDsKK+WLneiotCA+IHNob3Vzb1wgOwor5Y6f54q2ID4gZ2Vuam91XCA7CivmtbflhoUgPiBrYWlkYWlcIDsKK+WQjOaVsCA+IGRvdXN1dVwgOwor5rW35YW1ID4ga2FpaGVpXCA7CivlvpPogIUgPiBqdXVzaGFcIDsKK+WMheiUtSA+IGhvdXpvdVwgOwor5b6956ugID4ga2lzaG91XCA7Civmr5vojLggPiBtb3Vqb3VcIDsKK+emheWumiA+IHplbmpvdVwgOwor5ZCI5pa5ID4gYWlrYXRhXCA7Civpu5LlnLAgPiBrdXJvamlcIDsKK+ayiOa4oyA+IGNoaW5zYVwgOwor5b6M6IKiID4ga291c2hpXCA7Civpu5LlnJ8gPiBrb2t1ZG9cIDsKK+WOn+eJiCA+IGdlbnBhblwgOwor6JaE5p2/ID4gdXN1aXRhXCA7Civnn63os4cgPiB0YW5zaGlcIDsKK+mHkeaoqSA+IGtpbmtlblwgOwor5Y2X56uvID4gbmFudGFuXCA7CivlvLfoq4sgPiBnb3VzZWlcIDsKK+W8t+irhyA+IGdvdWRhblwgOwor6YqY5YiAID4gbWVpdG91XCA7CivmgpTmgaggPiBrYWlrb25cIDsKK+mBoOmalCA+IGVua2FrdVwgOwor5rG65r2wID4ga2Vra2FpXCA7CivolqbmjJkgPiBzZW5reW9cIDsKK+m7hOWhtSA+IGtvdWppblwgOwor5YuV6KmeID4gZG91c2hpXCA7Civnp4Dlj6UgPiBzaHV1a3VcIDsKK+mHo+aenCA+IGNob3VrYVwgOwor5Y+k5qW9ID4ga29nYWt1XCA7Civlj7jmm7ggPiBzaGlzaG9cIDsKK+W+jOiAhSA+IGtvdXNoYVwgOwor5YyX6IiqID4gaG9ra291XCA7CivpiI3miY0gPiBkb25zYWlcIDsKK+WQuOW8lSA+IGt5dXVpblwgOwor5buD6aC9ID4gaGFpdGFpXCA7Civol7vloakgPiBtb3NoaW9cIDsKK+mKg+WPoyA+IGp1dWtvdVwgOwor5by36KiYID4ga3lvdWtpXCA7CivmgKXmtL4gPiBreXV1aGFcIDsKK+WJtemWiyA+IHNvdWthaVwgOwor5Y+N5q+bID4gaGFubW91XCA7CivoloTmmq4gPiBoYWt1Ym9cIDsKK+efqeixoSA+IGt1c2hvdVwgOwor5rC0552AID4gbWl6dWdpXCA7CivmuoDjgIUgPiBtYW5tYW5cIDsKK+eikeefsyA+IGhpc2VraVwgOwor5oSa5L2cID4gZ3VzYWt1XCA7CivliqDpgJ8gPiBrYXNva3VcIDsKK+W+jOe9riA+IGtvdWNoaVwgOwor5rGa54mpID4gb2J1dHN1XCA7Civlj7Lmm7ggPiBzaGlzaG9cIDsKK+a0quWkpyA+IGtvdWRhaVwgOwor5Y+w5pysID4gZGFpaG9uXCA7Civpto/ns54gPiBrZWlmdW5cIDsKK+awtOebpCA+IHN1aWJhblwgOwor5YyF6I6WID4gaG91a2VpXCA7Civlkoblk64gPiBob3Vrb3VcIDsKK+ekvOaLnSA+IHJlaWhhaVwgOwor5b6u56yRID4gYmlzaG91XCA7CivliaXpm6IgPiBoYWt1cmlcIDsKK+mBuOmJsSA+IHNlbmtvdVwgOwor5Y6f54K5ID4gZ2VudGVuXCA7CivokpDojbcgPiBzaHV1a2FcIDsKK+WNg+evhyA+IHNlbnBlblwgOwor5Y+k5qC8ID4ga29rYWt1XCA7CivmsbrmuIggPiBrZXNzYWlcIDsKK+WNkeensCA+IGhpc2hvdVwgOwor6YiN5oSfID4gZG9ua2FuXCA7CivljIXojI4gPiBob3VrZWlcIDsKK+avm+iEmyA+IGtlenVuZVwgOwor5q+b6ISaID4ga2Vhc2hpXCA7Civps7PovKYgPiBob3VyZW5cIDsKK+WKtOizhyA+IHJvdXNoaVwgOwor5oCq5q27ID4ga2Fpc2hpXCA7CivnoLLoiaYgPiBob3VrYW5cIDsKK+engeWIkSA+IHNoaWtlaVwgOwor6YWU55y8ID4gc3VpZ2FuXCA7CivlubzpvaIgPiB5b3VyZWlcIDsKK+W7u+mAgSA+IGthaXNvdVwgOwor5bu66YCgID4ga2Vuem91XCA7CivliLrprZogPiB0b2dldW9cIDsKK+mDqOiQvSA+IGJ1cmFrdVwgOwor5Y+35pWwID4gZ291c3V1XCA7CivpioPlibUgPiBqdXVzb3VcIDsKK+elluW7nyA+IHNvYnlvdVwgOwor5Y2155SfID4gcmFuc2VpXCA7CivpioPliaMgPiBqdXVrZW5cIDsKK+WPguauvyA+IHNhbmRlblwgOwor5byV6LKsID4gaW5zZWtpXCA7Civol6nlo6sgPiBoYW5zaGlcIDsKK+awtOeXmCA+IHN1aXRvdVwgOwor6YeR5p+RID4ga2lua2FuXCA7Civnn63oqakgPiB0YW5zaGlcIDsKK+aBkuaYnyA+IGtvdXNlaVwgOwor5oOF5aCxID4gam91aG91XCA7CivpupflrrkgPiByZWl5b3VcIDsKK+mEreeuiyA+IHRlaXNlblwgOwor5rC055axID4gc3VpaG91XCA7Civlj6LmnpcgPiBzb3VyaW5cIDsKK+WPs+aWhyA+IHl1dWJ1blwgOwor6YqD5YiRID4ganV1a2VpXCA7Civpg7XoiLkgPiB5dXVzZW5cIDsKK+WQjeaJiyA+IG1laXNodVwgOwor5b6M57eoID4ga291aGVuXCA7Civnp4HlhbUgPiBzaGloZWlcIDsKK+WQjeaJgCA+IG1laXNob1wgOwor6YKC6YCFID4ga2Fpa291XCA7Civlj6TmnKggPiBrb2Jva3VcIDsKK+mHkeadryA+IGtpbnBhaVwgOwor55+l6KyAID4gY2hpYm91XCA7Civnp4HlhZogPiBzaGl0b3VcIDsKK+WQjOaJgCA+IGRvdXNob1wgOwor5ZCM5oi/ID4gZG91Ym91XCA7CivlkJvmgakgPiBrdW4nJ29uXCA7CivlkIjmirEgPiBnb3Vob3VcIDsKK+aDs+WIsCA+IHNvdXRvdVwgOwor5Y6f5r2cID4gZ2Vuc2VuXCA7CivphqTmsrkgPiBzaG91eXVcIDsKK+W+ruemhCA+IGJpcm9rdVwgOwor56KB55+zID4gZ29pc2hpXCA7CivlvozntpkgPiBrb3VrZWlcIDsKK+azsOW5syA+IHRhaWhlaVwgOwor5Y+w5pWwID4gZGFpc3V1XCA7CivmsLTnlLAgPiBzdWlkZW5cIDsKK+a1t+S4iiA+IGthaWpvdVwgOwor5rC055SjID4gc3Vpc2FuXCA7CivlubTpvaIgPiBuZW5yZWlcIDsKK+awtOeUnyA+IHN1aXNlaVwgOwor6YG86YGgID4gcnlvdWVuXCA7CivlupXprZogPiBzb2tvdW9cIDsKK+aBkuaVsCA+IGtvdXN1dVwgOwor56eY5LitID4gaGljaHV1XCA7CivliY3poIUgPiB6ZW5rb3VcIDsKK+WPouabuCA+IHNvdXNob1wgOwor5q666I+MID4gc2Fra2luXCA7Civlu7vou6IgPiBrYWl0ZW5cIDsKK+asoOmZpSA+IGtla2thblwgOwor6YqY5LuZID4gbWVpc2VuXCA7Civnn63oposgPiB0YW5rZW5cIDsKK+WRvOWQuCA+IGtva3l1dVwgOwor5byx6KGMID4gamFra291XCA7Civlkb3lkI0gPiBtZWltZWlcIDsKK+emheWggiA+IHplbmRvdVwgOwor5ZCI5oimID4ga2Fzc2VuXCA7CivlkbzlkI0gPiB5b2JpbmFcIDsKK+atk+mAgSA+IGthbnNvdVwgOwor5ZCI5oiQID4gZ291c2VpXCA7CivmsbrmsLQgPiBrZXNzdWlcIDsKK+WQjOaGgiA+IGRvdXl1dVwgOwor6YqF5YOPID4gZG91em91XCA7CivlkIzmhbYgPiBkb3VrZWlcIDsKK+WNmOecvCA+IHRhbmdhblwgOwor5q2T6L+OID4ga2FuZ2VpXCA7Civph43mm7kgPiBqdXVzb3VcIDsKK+WJjemdoiA+IHplbm1lblwgOwor5Y+k5piUID4ga29zZWtpXCA7CivokrjnsaAgPiBzZWlyb3VcIDsKK+avlOe/vCA+IGhpeW9rdVwgOwor5ZCI5oayID4gZ291a2VuXCA7CivljZjnm7ggPiB0YW5zb3VcIDsKK+mJhOWhlCA+IHRldHRvdVwgOwor5ZCM5oSfID4gZG91a2FuXCA7CivmtarkurogPiByb3VuaW5cIDsKK+WJlOmZpCA+IHRla2lqb1wgOwor5ZCI5oaOID4gYWluaWt1XCA7CivmsqHmm7ggPiBib3NzaG9cIDsKK+asoemVtyA+IGppY2hvdVwgOwor6be55rS+ID4gdGFrYWhhXCA7CivmgqrlprsgPiBha3VzYWlcIDsKK+m6l+WnvyA+IHJlaXNoaVwgOwor5YmN6Zu7ID4gemVuZGVuXCA7Civnn6XoposgPiBjaGlrZW5cIDsKK+axuuatuyA+IGtlc3NoaVwgOwor5oOz5YOPID4gc291em91XCA7Civlj5bmnZAgPiBzaHV6YWlcIDsKK+WQjOaDhSA+IGRvdWpvdVwgOwor5Yi26aatID4gc2VpZ3lvXCA7CivlkJHmgKcgPiBrb3VzZWlcIDsKK+iYreS6uiA+IHJhbmppblwgOwor5q6/6IiOID4gZGVuc2hhXCA7Civoj4zpoZ4gPiBraW5ydWlcIDsKK+elnuWuriA+IGppbmd1dVwgOwor5oKy5aKDID4gaGlreW91XCA7CivljrPmraMgPiBnZW5zZWlcIDsKK+iQveiqniA+IHJha3Vnb1wgOwor6buE5ZC7ID4ga291ZnVuXCA7Civph43mmJ8gPiBqdXVzZWlcIDsKK+WPo+aVsCA+IGtvdXN1dVwgOwor5Y2154q2ID4gcmFuam91XCA7CivmraPos5MgPiBzZWloaW5cIDsKK+W8leiovCA+IGluc2hvdVwgOwor5oKq5aSpID4gYWt1dGVuXCA7Civlvoznr4cgPiBrb3VoZW5cIDsKK+m7hOWPoyA+IGtvdWtvdVwgOwor5ZCM5oCnID4gZG91c2VpXCA7Civmgqrlo7AgPiBha3VzZWlcIDsKK+azsOWxsSA+IHRhaXphblwgOwor6YGt6YGHID4gc291Z3V1XCA7Civph43mlocgPiBqdXVidW5cIDsKK+WJiumZpCA+IHNha3Vqb1wgOwor5Y2K552hID4gaGFuc3VpXCA7CivlkIzlv5cgPiBkb3VzaGlcIDsKK+WQvuWmuSA+IHdhZ2ltb1wgOwor5Y2K55y8ID4gaGFuZ2FuXCA7CivlkIjmgKcgPiBhaXNob3VcIDsKK+engeS6uiA+IHNoaWppblwgOwor5Y+z5oqYID4gdXNldHN1XCA7Civnpa3lo4cgPiBzYWlkYW5cIDsKK+WOn+ayuSA+IGdlbicneXVcIDsKK+ats+ioiCA+IHNhaWtlaVwgOwor5oCn5qC5ID4gc2hvdW5lXCA7CivokZvol6QgPiBrYXR0b3VcIDsKK+WNiuebsiA+IGhhbm1vdVwgOwor5b6M56uvID4ga291dGFuXCA7CivmtYTlhpkgPiBqb3VzaGFcIDsKK+WQjOW9oiA+IGRvdWtlaVwgOwor5YmN6ZaAID4gemVubW9uXCA7CivmgqrloLQgPiB3YXJ1YmFcIDsKK+aCquWgsSA+IGFrdWhvdVwgOwor5rOV5bu3ID4gaG91dGVpXCA7Civlj7PmiYsgPiBtaWdpdGVcIDsKK+WPjOabuCA+IHNvdXNob1wgOwor5b+D55CGID4gc2hpbnJpXCA7Civlj4vmnIsgPiB5dXVob3VcIDsKK+W/q+a8oiA+IGthaWthblwgOwor5Y2H55uuID4gbWFzdW1lXCA7CivnpLzluL0gPiByZWlib3VcIDsKK+WHuum8uyA+IGRlYmFuYVwgOwor5Y+J5pyoID4gbWF0YWdpXCA7Civmranoqr8gPiBob2Nob3VcIDsKK+W6l+mgrSA+IHRlbnRvdVwgOwor56Wt5aC0ID4gc2Fpam91XCA7Civlub3prYIgPiB5dXVrb25cIDsKK+elnuWogSA+IHNoaW4nJ2lcIDsKK+WPiOacqCA+IG1hdGFnaVwgOwor5bm86a2aID4geW91Z3lvXCA7CivliLrpnZIgPiBzaGlzZWlcIDsKK+WOn+awkSA+IGdlbm1pblwgOwor5Ym16YCgID4gc291em91XCA7CivmgbDluqYgPiBjaG91ZG9cIDsKK+WQueWljyA+IHN1aXNvdVwgOwor5ZCN5bqXID4gbWVpdGVuXCA7CivliLjpnaIgPiBrZW5tZW5cIDsKK+WOn+avmyA+IGdlbm1vdVwgOwor6YqD5Li4ID4ganV1Z2FuXCA7CivlubLpsYggPiBoaWRhcmFcIDsKK+WQjOW6lyA+IGRvdXRlblwgOwor5Y+v5oiQID4ga2FuYXJpXCA7CivliLDpoK0gPiB0b3V0b3VcIDsKK+WQiOW8gSA+IGdvdWJlblwgOwor5rOV5birID4gaG91c2hpXCA7CivlvIHoq5YgPiBiZW5yb25cIDsKK+WPjeaYoCA+IGhhbicnZWlcIDsKK+WQjOW5tCA+IGRvdW5lblwgOwor5rOV5biWID4gaG91am91XCA7CivmtYHlhIAgPiByeXV1Z2lcIDsKK+ato+irliA+IHNlaXJvblwgOwor5oOF5Y+yID4gam91c2hpXCA7CivmtLvlhpkgPiBrYXNzaGFcIDsKK+awtOeFriA+IG1penVuaVwgOwor5Yqx6KGMID4gcmVpa291XCA7Civmg4fljpogPiB0b25rb3VcIDsKK+W6p+mVtyA+IHphY2hvdVwgOwor5oGQ5oe8ID4ga3lvdWt1XCA7CivliKXppKggPiBiZWtrYW5cIDsKK+avkue0oCA+IGRva3Vzb1wgOwor5ZCN5belID4gbWVpa291XCA7CivlkIzluIIgPiBkb3VzaGlcIDsKK+awvua/qyA+IGhhbnJhblwgOwor5bqV6Z2iID4gdGVpbWVuXCA7Civlj4zmlrkgPiBzb3Vob3VcIDsKK+WNiueVsyA+IGhhbmpvdVwgOwor56C057SEID4gaGF5YWt1XCA7CivlvbznrYkgPiBrYXJlcmFcIDsKK+mBjumHjyA+IGthcnlvdVwgOwor5Y6Y5q+bID4gcmlubW91XCA7Civlj43mlbAgPiBoYW5zdXVcIDsKK+awkeeUnyA+IG1pbnNlaVwgOwor5q+b566hID4gbW91a2FuXCA7CivljYrnlJ8gPiBoYW5zZWlcIDsKK+ato+iokyA+IHNlaWt1blwgOwor5Y+N5pS7ID4gaGFua291XCA7CivljrvmnaUgPiBreW9yYWlcIDsKK+W8geinoyA+IGJlbmthaVwgOwor6YGL6YedID4gdW5zaGluXCA7CivpgY7phbcgPiBrYWtva3VcIDsKK+WPpOaJiyA+IGZ1cnV0ZVwgOwor5q2j6KejID4gc2Vpa2FpXCA7CivliLbpmZAgPiBzZWlnZW5cIDsKK+avm+etiyA+IGtlc3VqaVwgOwor56S+5bGLID4gc2hhb2t1XCA7CivmsJfnkIMgPiBraWt5dXVcIDsKK+WPr+aDnCA+IGF0dGFyYVwgOwor6YCj6ZqKID4gcmVudGFpXCA7CivpgYrph5EgPiB5dXVraW5cIDsKK+WPo+aJjSA+IGtvdXNhaVwgOwor6YaH5q2jID4ganVuc2VpXCA7Civmg4Xli6IgPiBqb3VzZWlcIDsKK+W5vemmmSA+IHl1dWtvdVwgOwor6YeR5omHID4ga2luc2VuXCA7CivmraPoppYgPiBzZWlzaGlcIDsKK+WQm+WtkCA+IGt1bnNoaVwgOwor5q2i6KazID4gc2hpa2FuXCA7CivliKnpnpggPiByaXpheWFcIDsKK+WIpemghSA+IGJla2tvdVwgOwor5q2j6KW/ID4gc2Vpc2VpXCA7Civnpo/liKkgPiBmdWt1cmlcIDsKK+mBhemIjSA+IGNoaWRvblwgOwor5Y+W5o2oID4gc2h1c2hhXCA7CivliaPpgZMgPiBrZW5kb3VcIDsKK+aAqOaVtSA+IG9udGVraVwgOwor5b6q55KwID4ganVua2FuXCA7Civlu7roqIAgPiBrZW5nZW5cIDsKK+aBi+aEmyA+IHJlbicnYWlcIDsKK+asoOmFjSA+IGtlcHBhaVwgOwor6bWs56iLID4gaG91dGVpXCA7CivolYPmm7ggPiBiYW5zaG9cIDsKK+aBkuaApyA+IGtvdXNlaVwgOwor5bu76KanID4ga2FpcmFuXCA7Civlkb3ku6QgPiBtZWlyZWlcIDsKK+WQjeWxsSA+IG1laXphblwgOwor55yf6bSoID4gbWFnYW1vXCA7CivpgKPplqIgPiByZW5rYW5cIDsKK+WQkeWvkiA+IGtvdWthblwgOwor5rGA5riaID4gdGVpc2hvXCA7CivmgYvmg4UgPiByZW5qb3VcIDsKK+atk+irhyA+IGthbmRhblwgOwor5oGQ5oCWID4ga3lvdWZ1XCA7CivmraPoo4UgPiBzZWlzb3VcIDsKK+WPguaUvyA+IHNhbnNlaVwgOwor5ZCM5bGFID4gZG91a3lvXCA7CivliJ3poK0gPiBzaG90b3VcIDsKK+mBhemFjSA+IGNoaWhhaVwgOwor5buD6YCAID4gaGFpdGFpXCA7CivmsYHmtrIgPiBqdXVla2lcIDsKK+mAmumZoiA+IHRzdXVpblwgOwor5oG15a2YID4ga2Vpem9uXCA7CivoloTlubggPiBoYWtrb3VcIDsKK+WQjOWwgSA+IGRvdWZ1dVwgOwor5Y+w5b2iID4gZGFpa2VpXCA7Civms5XlrpogPiBob3V0ZWlcIDsKK+azleWumCA+IGhvdWthblwgOwor5oGL5oGLID4gcmVucmVuXCA7Civnn7Poi7EgPiBzZWtpZWlcIDsKK+W9qeeuoSA+IHNhaWthblwgOwor6YGg6LazID4gZW5zb2t1XCA7CivljLrnlLsgPiBrdWtha3VcIDsKK+WOs+aakSA+IGdlbnNob1wgOwor5qyh6YCxID4gamlzaHV1XCA7CivliY3ph5EgPiBtYWVraW5cIDsKK+mHjeaFiyA+IGp1dXRhaVwgOwor5q276JS1ID4gc2hpem91XCA7CivmsrvlubMgPiBjaGloZWlcIDsKK+a0i+WTgSA+IHlvdWhpblwgOwor5ZCM5a6aID4gZG91dGVpXCA7CivlkI3lrZcgPiBteW91amlcIDsKK+WJpei6qyA+IG11a2ltaVwgOwor5rC05rqWID4gc3VpanVuXCA7CivmsLTmupAgPiBzdWlnZW5cIDsKK+emgeWItiA+IGtpbnNlaVwgOwor6YCB6aKoID4gc291ZnV1XCA7CivpgbroqIAgPiB5dWlnb25cIDsKK+aBr+WtkCA+IG11c3Vrb1wgOwor5oGp5a+1ID4gb25jaG91XCA7CivpgYXpgYUgPiBjaGljaGlcIDsKK+aCquWQjSA+IGFrdW1laVwgOwor6JS15pysID4gem91aG9uXCA7CivljrPml6ggPiBnZW5zaGlcIDsKK+WOn+ahiCA+IGdlbicnYW5cIDsKK+mHjeaCoyA+IGp1dWthblwgOwor5Y+N5oqXID4gaGFua291XCA7CivnpZblm70gPiBzb2tva3VcIDsKK+W7g+i7iiA+IGhhaXNoYVwgOwor6JS15pu4ID4gem91c2hvXCA7Civmgqrlj4sgPiBha3V5dXVcIDsKK+mFlOa8oiA+IHN1aWthblwgOwor6YeN5oGpID4gY2hvdW9uXCA7CivlubTpoK0gPiBuZW50b3VcIDsKK+ays+W6iiA+IGthc2hvdVwgOwor5rSX5YmkID4gc2VuemFpXCA7Civlub3pnIogPiB5dXVyZWlcIDsKK+elreWPuCA+IHNhaXNoaVwgOwor5YuY6ICDID4ga2Fua291XCA7CivmgZLluLggPiBrb3Vqb3VcIDsKK+aCsuWKhyA+IGhpZ2VraVwgOwor5bqn6YeRID4gemFnYW5lXCA7CivnpoXlg6cgPiB6ZW5zb3VcIDsKK+WPo+W+hCA+IGtvdWtlaVwgOwor5Y+M5omLID4gbW9yb3RlXCA7Civnn7Poho8gPiBzZWtrb3VcIDsKK+efreiJhyA+IHRhbnRlaVwgOwor5rC05ravID4gc3VpZ2FpXCA7Civlj43miKYgPiBoYW5zZW5cIDsKK+WIjumguCA+IGZ1bmtlaVwgOwor5bqm6YePID4gZG9yeW91XCA7CivokrznlJ8gPiBzb3VzZWlcIDsKK+WIhumkqCA+IGJ1bmthblwgOwor5YiG6aSQID4gYnVuc2FuXCA7CivpgYrou40gPiB5dXVndW5cIDsKK+WOn+advyA+IGdlbnBhblwgOwor6YO156iOID4geXV1emVpXCA7Civph47lv4MgPiB5YXNoaW5cIDsKK+WLg+iIiCA+IGJva2tvdVwgOwor5YyW55+zID4ga2FzZWtpXCA7CivnpL7lpJYgPiBzaGFnYWlcIDsKK+aAr+aHpiA+IGt5b3VkYVwgOwor5Y+j5byBID4ga291YmVuXCA7Civlj6Tlu58gPiBrb2J5b3VcIDsKK+W9k+expCA+IHRvdXNlblwgOwor5bqD6ZaTID4gaGlyb21hXCA7Civljp/mnKwgPiBnZW5wb25cIDsKK+awtOa0lyA+IHN1aXNlblwgOwor5rC35rKzID4gaHlvdWdhXCA7CivphrjmiJAgPiBqb3VzZWlcIDsKK+WPguaLnSA+IHNhbnBhaVwgOwor5bmz6Z2iID4gaGVpbWVuXCA7CivlubPpnZkgPiBoZWlzZWlcIDsKK+WQjOWnkyA+IGRvdXNlaVwgOwor6JeJ5Y+jID4gc2hha291XCA7Civljp/mm7ggPiBnZW5zaG9cIDsKK+WQq+WXvSA+IGdhbnNvdVwgOwor5rC05rOhID4gc3VpaG91XCA7CivlkLvlkIggPiBmdW5nb3VcIDsKK+mDt+ekviA+IGdvdXNoYVwgOwor6YCB6Zu7ID4gc291ZGVuXCA7CivliIbpoZ4gPiBidW5ydWlcIDsKK+ayu+WxsSA+IGNoaXNhblwgOwor5b6M55SfID4gZ29zaG91XCA7CivmgbDlpb0gPiBrYWtrb3VcIDsKK+WKoOiWrCA+IGtheWFrdVwgOwor5b+r5qW9ID4ga2VyYWt1XCA7Civlj43mhJ8gPiBoYW5rYW5cIDsKK+WQjOWlvSA+IGRvdWtvdVwgOwor6Jas5ZySID4geWFrdWVuXCA7Civol6nkvq8gPiBoYW5rb3VcIDsKK+aBr+WlsyA+IHNva3Vqb1wgOwor5rOV5aSWID4gaG91Z2FpXCA7CivpiYTlgpggPiB0ZXNzYW5cIDsKK+axn+adkSA+IGtvdXNvblwgOwor5b+15qChID4gbmVua291XCA7CivljZjmvKIgPiB0YW5rYW5cIDsKK+ejgeadnyA+IGppc29rdVwgOwor5ZCN5aSnID4gbWVpZGFpXCA7Civlub3plpEgPiB5dXVrYW5cIDsKK+W5vemWiSA+IHl1dWhlaVwgOwor5b+N5rOVID4gbmlucG91XCA7Civlub3ploAgPiB5dXVtb25cIDsKK+WPguaIpiA+IHNhbnNlblwgOwor5ZCM5aSnID4gZG91ZGFpXCA7Civli7LnrYkgPiBrdW50b3VcIDsKK+W9ueebriA+IHlha3VtZVwgOwor5oOF5Lq6ID4gam91bmluXCA7CivokZfogIUgPiBjaG9zaGFcIDsKK+eepeimiyA+IGJla2tlblwgOwor5ZCN5aOwID4gbWVpc2VpXCA7Civmg4XkuqQgPiBqb3Vrb3VcIDsKK+WPpOW3oyA+IGZ1cnVzdVwgOwor5ZCN5aOrID4gbWVpc2hpXCA7CivpgbXooYwgPiBqdW5rb3VcIDsKK+mAgOmZoyA+IHRhaWppblwgOwor5Ymj6LGqID4ga2VuZ291XCA7CivmsLTmsJcgPiBtaXp1a2VcIDsKK+WQjOWjqyA+IGRvdXNoaVwgOwor5bm06ZmQID4gbmVuZ2VuXCA7Civlj4vmg4UgPiB5dXVqb3VcIDsKK+ayouW6tSA+IHRha3VhblwgOwor6YGO6LOeID4ga2FzaG91XCA7Civmr5Lnn6IgPiBkb2t1eWFcIDsKK+WOs+aOoiA+IGdlbnRhblwgOwor5ZCI5aWPID4gZ2Fzc291XCA7CivmgrLlgrcgPiBoaXNob3VcIDsKK+mHkeW3pSA+IGtpbmtvdVwgOwor5q+b55quID4ga2VnYXdhXCA7CivljZfmup8gPiBuYW5tZWlcIDsKK+iRieiFiyA+IHlvdWVraVwgOwor5YmN6LuNID4gemVuZ3VuXCA7Civli4fogIUgPiB5dXVzaGFcIDsKK+WJjei7iiA+IHplbnNoYVwgOwor5rC05q+NID4ga3VyYWdlXCA7Civnm67pvLsgPiBtZWhhbmFcIDsKK+mDveedoyA+IHRvdG9rdVwgOwor5Y2X5rqAID4gbmFubWFuXCA7CivmgqrlhZogPiBha3V0b3VcIDsKK+WPsuWumCA+IHNoaWthblwgOwor6YGL6LODID4gdW5jaGluXCA7CivmgKfmhJ8gPiBzZWlrYW5cIDsKK+awtOatuyA+IHN1aXNoaVwgOwor5Y6f5paHID4gZ2VuYnVuXCA7CivpgYros4cgPiB5dXVzaGlcIDsKK+m6puS+oSA+IGJha3VrYVwgOwor6YeN5belID4ganV1a291XCA7Civnn6Xog70gPiBjaGlub3VcIDsKK+WJteimiyA+IHNvdWtlblwgOwor56Wt5YW4ID4gc2FpdGVuXCA7Civli5Xnt5ogPiBkb3VzZW5cIDsKK+W/teabuCA+IG5lbnNob1wgOwor5bm06ZaTID4gbmVua2FuXCA7Civlv4XmsrsgPiBoaXRjaGlcIDsKK+emgeS7pCA+IGtpbnJlaVwgOwor5q2v6IyOID4gaGFndWtpXCA7CivmgKfmg4UgPiBzZWlqb3VcIDsKK+aCquWDpyA+IGFrdXNvdVwgOwor5b6T54qvID4ganV1aGFuXCA7CivnpZ7ljJYgPiBzaGlua2FcIDsKK+iXqeS4uyA+IGhhbnNodVwgOwor5Y2g5rOVID4gc2VucG91XCA7Civnn6XogrIgPiBjaGlpa3VcIDsKK+ekvuWboyA+IHNoYWRhblwgOwor5Yq56IO9ID4ga291bm91XCA7CivliIbpmpsgPiBidW56YWlcIDsKK+mBgei1sCA+IHRvbnNvdVwgOwor6JC16IujID4gY2hpc2hhXCA7CivlkInloLEgPiBraXBwb3VcIDsKK+WIhumaiiA+IGJ1bnRhaVwgOwor5Y+N5b2xID4gaGFuJydlaVwgOwor5oCg5oWiID4gdGFpbWFuXCA7CivnoLTnm64gPiB3YXJlbWVcIDsKK+mAoOmFkiA+IHpvdXNodVwgOwor5Ym16KO9ID4gc291c2VpXCA7CivliIbpmaIgPiBidW4nJ2luXCA7CivnpZ7liqkgPiBzaGluam9cIDsKK+WIhumZkCA+IGJ1bmdlblwgOwor5Y2X5rW3ID4gbmFua2FpXCA7CivlkIzlnosgPiBkb3VrZWlcIDsKK+aAneaFriA+IHNoaXJ5b1wgOwor5rG65oimID4ga2Vzc2VuXCA7CivpgKPpgqYgPiByZW5wb3VcIDsKK+WHsemiqCA+IGdhaWZ1dVwgOwor5oCo5b+1ID4gb24nJ25lblwgOwor5YyW55SfID4ga2VzaG91XCA7Civph5HlsbEgPiBraW56YW5cIDsKK+efpeiAhSA+IGNoaXNoYVwgOwor5ZCm5ZCmID4gaXlhaXlhXCA7CivljrPmiJIgPiBnZW5rYWlcIDsKK+WHtumfsyA+IGt5b3VpblwgOwor5b+D5rCXID4gc2hpbmtpXCA7Civmgp/lhaUgPiBnb255dXVcIDsKK+WQjOWcsCA+IGRvdWNoaVwgOwor56Gd54WZID4gc2hvdWVuXCA7CivphY3msLQgPiBoYWlzdWlcIDsKK+mAuOi2syA+IGlzc29rdVwgOwor5oCd5oOzID4gc2hpc291XCA7CivnoKXnn7MgPiB0b2lzaGlcIDsKK+WIh+mWiyA+IHNla2thaVwgOwor5bm06ZGRID4gbmVua2FuXCA7Civlv4XmrbsgPiBoaXNzaGlcIDsKK+WPpOWutiA+IGZ1cnVpZVwgOwor5b2T56S+ID4gdG91c2hhXCA7CivokL3og6QgPiByYWt1aW5cIDsKK+iWrOWRsyA+IHlha3VtaVwgOwor5rC05qe9ID4gc3Vpc291XCA7Civpg47nrYkgPiByb3Vkb3VcIDsKK+mHjeWxpCA+IGp1dXNvdVwgOwor5YmN6LOiID4gemVua2VuXCA7CivnnLzpj6EgPiBtZWdhbmVcIDsKK+ecn+mdoiA+IG1hdG9tb1wgOwor5oKq5L6LID4gYWt1cmVpXCA7Civlj6PlrqMgPiBrb3VzZW5cIDsKK+efoue+vSA+IHlhYmFuZVwgOwor55yf6Z2SID4gbWFzc2FvXCA7CivljYrmuJsgPiBoYW5nZW5cIDsKK+awl+a1gSA+IGtpcnl1dVwgOwor6YCy6LevID4gc2hpbnJvXCA7Civlj6TlraYgPiBrb2dha3VcIDsKK+WPt+WkliA+IGdvdWdhaVwgOwor6JK854S2ID4gc291emVuXCA7CivmrKDorJsgPiBrZWtrb3VcIDsKK+iVqeWwvSA+IHRvdWppblwgOwor5Y+N5bidID4gaGFudGVpXCA7CivmrbvogIUgPiBzaGlzaGFcIDsKK+W/q+aZtCA+IGthaXNlaVwgOwor6YGU6KazID4gdGFra2FuXCA7Civlh7rpmpsgPiBkZWdpd2FcIDsKK+WPjuW3riA+IHNodXVzYVwgOwor5b2i55u4ID4ga2Vpc291XCA7CivmsbrmhI8gPiBrZXRzdWlcIDsKK+W6lei+uiA+IHRlaWhlblwgOwor6YGT6KazID4gZG91a2FuXCA7CivlkJvlkb0gPiBrdW5tZWlcIDsKK+mBlOimiyA+IHRha2tlblwgOwor6YeO5a6/ID4gbm9qdWt1XCA7CivpgYroqqwgPiB5dXV6ZWlcIDsKK+efree3qCA+IHRhbnBlblwgOwor5Ymq6KOBID4gc2Vuc2FpXCA7CivokZvnsokgPiBrdXp1a29cIDsKK+aCquS7pCA+IGFrdXJlaVwgOwor6YCa6YGOID4gdHN1dWthXCA7CivmgJ3lv7UgPiBzaGluZW5cIDsKK+mAmumBiyA+IHRzdXV1blwgOwor6JaE5aGpID4gdXN1amlvXCA7CivnnJ/pmpsgPiBtYWdpd2FcIDsKK+WQhOWbniA+IGtha2thaVwgOwor5oKq5Lq6ID4gYWt1bmluXCA7CivmrbvnvaogPiBzaGl6YWlcIDsKK+mAo+i8iSA+IHJlbnNhaVwgOwor56Wd5YSAID4gc2h1dWdpXCA7CivmsLTmo7IgPiBzdWlzZWlcIDsKK+atpuiHoyA+IGJ1c2hpblwgOwor5Yil6YK4ID4gYmV0dGVpXCA7Civlv6vmlrkgPiBrYWlob3VcIDsKK+azouWPiiA+IGhha3l1dVwgOwor6YCZ6YCZID4gaG91aG91XCA7Civljp/mi6AgPiBnZW5reW9cIDsKK+iWqOWOuyA+IGtvdWt5b1wgOwor5byp57SaID4gZG9reXV1XCA7Civmr5vnjokgPiBrZWRhbWFcIDsKK+m6l+S6uiA+IHJlaWppblwgOwor6YeM5a2QID4gc2F0b2dvXCA7CivnpL7lkb0gPiBzaGFtZWlcIDsKK+W/g+apnyA+IHNoaW5raVwgOwor5q2v6IKJID4gaGFuaWt1XCA7Civojbfpno0gPiBuaWd1cmFcIDsKK+efs+eyiSA+IGlzaGlrb1wgOwor5oKp5LmxID4gbm91cmFuXCA7CivmsJHms5UgPiBtaW5wb3VcIDsKK+mFuOaVlyA+IHNhbnBhaVwgOwor5Y6E5pelID4geWFrdWJpXCA7CivlkYjkuIogPiB0ZWlqb3VcIDsKK+WNl+aspyA+IG5hbicnb3VcIDsKK+mHkeWpmiA+IGtpbmtvblwgOwor6YGK6KanID4geXV1cmFuXCA7CivmuIXjgIUgPiBzZWlzZWlcIDsKK+W7u+iIuSA+IGthaXNlblwgOwor5YyN55CDID4gaG9reXV1XCA7Civpga7olL0gPiBzaGFoZWlcIDsKK+ekvuWQjSA+IHNoYW1laVwgOwor6Jas5Yq5ID4geWFra291XCA7Civokaznpa0gPiBzb3VzYWlcIDsKK+aAneW8gSA+IHNoaWJlblwgOwor5Yil6YCBID4gYmVzc291XCA7CivnpL7lj7IgPiBzaGFzaGlcIDsKK+elreS4uyA+IHNhaXNodVwgOwor5rSL5LiKID4geW91am91XCA7CivmsLTmoJMgPiBzdWlzZW5cIDsKK+iPr+ihqCA+IGthaHlvdVwgOwor5ZCN5ZOBID4gbWVpaGluXCA7CivokaznpLwgPiBzb3VyZWlcIDsKK+mAk+mAgSA+IHRlaXNvdVwgOwor56S+5Y+LID4gc2hheXV1XCA7Civpg6HnnIwgPiBndW5rZW5cIDsKK+mHjeWpmiA+IGp1dWtvblwgOwor5byb57epID4gY2hpa2FuXCA7Civlv5fmnJsgPiBzaGlib3VcIDsKK+mAgemHkSA+IHNvdWtpblwgOwor5Y6a5omLID4gYXRzdWRlXCA7CivluZXplpMgPiBtYWt1YWlcIDsKK+W5tOmHkSA+IG5lbmtpblwgOwor5Y+N5bCEID4gaGFuc2hhXCA7Civlj43lr74gPiBoYW50YWlcIDsKK+awt+acnyA+IGh5b3VraVwgOwor5oKf5LqGID4gZ29yeW91XCA7Civlv7/mh6MgPiBmdW5tYW5cIDsKK+azleWPtyA+IGhvdWdvdVwgOwor5Yqj6ICFID4gcmVzc2hhXCA7Civmrbvnt5ogPiBzaGlzZW5cIDsKK+WPjOWwhCA+IHNvdXNoYVwgOwor5ZCN5ZCfID4gbWVpZ2luXCA7Civlj4zlr74gPiBzb3V0YWlcIDsKK+WQjeWQmyA+IG1laWt1blwgOwor55uu6auYID4gbWVkYWthXCA7Civov5Tpm7sgPiBoZW5kZW5cIDsKK+W5vemCgyA+IHl1dXN1aVwgOwor6YiN5YiAID4gZG9udG91XCA7CivnoLTnjYQgPiBoYWdva3VcIDsKK+WPo+WkliA+IGtvdWdhaVwgOwor5rK55ZynID4geXVhdHN1XCA7Civlh4zpp5UgPiByeW91Z2FcIDsKK+WQjOWQjSA+IGRvdW1laVwgOwor55+t56+HID4gdGFucGVuXCA7Civlja/mnIggPiB1ZHp1a2lcIDsKK+awtOacqCA+IG1penVraVwgOwor5Y2K5q27ID4gaGFuc2hpXCA7CivnoILnpKsgPiBzYXJla2lcIDsKK+asoeihqCA+IGppaHlvdVwgOwor5oCS5by1ID4gZG9jaG91XCA7CivlkITlk6EgPiBrYWt1aW5cIDsKK+W5tOmFjSA+IG5lbnBhaVwgOwor5YmN6KiAID4gemVuZ2VuXCA7CivnoazmsLQgPiBrb3VzdWlcIDsKK+elnuS7oyA+IGppbmRhaVwgOwor6YGK6KGMID4geXV1a291XCA7Civlj6TloqggPiBrb2Jva3VcIDsKK+WPsOWcsCA+IGRhaWNoaVwgOwor5YiG6YqFID4gZnVuZG91XCA7CivpgLjoqbEgPiBpdHN1d2FcIDsKK+iNiemtmiA+IHNvdWd5b1wgOwor5Y2z5pmCID4gc29rdWppXCA7CivmsLTmm5wgPiBzdWl5b3VcIDsKK+mHjeWljyA+IGp1dXNvdVwgOwor5byB6ICFID4gYmVuc2hhXCA7CivpgJrot68gPiB0c3V1cm9cIDsKK+iTruaguSA+IHJlbmtvblwgOwor5bqt6KiTID4gdGVpa2luXCA7Civlj4zlrZAgPiBmdXRhZ29cIDsKK+WQiOWQjCA+IGdvdWRvdVwgOwor6YeN5aSnID4ganV1ZGFpXCA7Civov5HpmqMgPiBraW5yaW5cIDsKK+elnuS6iyA+IHNoaW5qaVwgOwor5YeN6aSSID4gdG91ZGFpXCA7Civph43lpIkgPiBqdXVoZW5cIDsKK+avkueJmSA+IGRva3VnYVwgOwor5b+M5pyNID4ga2lmdWt1XCA7CivlvpLmuIkgPiB0b3Nob3VcIDsKK+WKn+e9qiA+IGtvdXphaVwgOwor6YCB6YKEID4gc291a2FuXCA7CivojZLppqwgPiBhcmF1bWFcIDsKK+mHkeWhiiA+IGtpbmthaVwgOwor5b+r5oyZID4ga2Fpa3lvXCA7CivliIbph44gPiBidW4nJ3lhXCA7CivlvZPnlaogPiB0b3ViYW5cIDsKK+awtOaYnyA+IHN1aXNlaVwgOwor5Y6a5oOFID4ga291am91XCA7CivphZLmna8gPiBzaHVoYWlcIDsKK+awtOaYjiA+IHN1aW1laVwgOwor5ZCM5YuiID4gZG91emVpXCA7Civph5HloIIgPiBrb25kb3VcIDsKK+WPruWagCA+IHRlaW5laVwgOwor6YGC6KGMID4gc3Vpa291XCA7CivmsJfmpb0gPiBraXJha3VcIDsKK+iSvOa1tyA+IHNvdWthaVwgOwor5rCR5qipID4gbWlua2VuXCA7CivliIPph50gPiBoYWJhcmlcIDsKK+W9k+eUqCA+IHRvdXlvdVwgOwor5bmH6ZaTID4gaG91a2FuXCA7CivlirHnsr4gPiByZWlzZWlcIDsKK+WPguWuriA+IHNhbmd1dVwgOwor5ZCM5Yq0ID4gZG91cm91XCA7Civph5Hln44gPiBraW5qb3VcIDsKK+WIpei2oyA+IGJlc3NodVwgOwor5YmN6KOFID4gemVuc291XCA7CivnpL7lhoUgPiBzaGFuYWlcIDsKK+WIhumFjSA+IGJ1bnBhaVwgOwor5rOV5Yi2ID4gaG91c2VpXCA7CivpgbrohLEgPiBpZGF0c3VcIDsKK+eeveiAhSA+IGtvc2hhXCA7CivlkI3liY0gPiBuYW1hZVwgOwor5Y+k5Z2AID4ga29zaGlcIDsKK+W4sOmghiA+IGtpanVuXCA7CivluqfoppYgPiB6YXNoaVwgOwor5b+r5omTID4ga2FpZGFcIDsKK+mAgei+niA+IHNvdWppXCA7CivlkI3liKkgPiBtZWlyaVwgOwor55yJ6ZaTID4gbWlrZW5cIDsKK+ejgeaApyA+IGppc2VpXCA7CivolqzkvqEgPiB5YWtrYVwgOwor56Cy54WZID4gaG91ZW5cIDsKK+ekvOWEgCA+IHJlaWdpXCA7Civms5XlhbcgPiBob3VndVwgOwor5ZCP5YWaID4gcml0b3VcIDsKK+ebrumhlCA+IG1lZ2FvXCA7CivnopHmlocgPiBoaWJ1blwgOwor6YCj6KqeID4gcmVuZ29cIDsKK+mHjeWbsiA+IGNob3VpXCA7Civmsq7llqogPiBzb3NvdVwgOwor6YG657+SID4gaXNodXVcIDsKK+mBuOiAhSA+IHNlbmphXCA7CivmrYzogZYgPiBrYXNlaVwgOwor6YCg6KqeID4gem91Z29cIDsKK+egsueBqyA+IGhvdWthXCA7CivokrjmsJcgPiBqb3VraVwgOwor5oCq5aWHID4ga2Fpa2lcIDsKK+mAo+iomCA+IHJlbmtpXCA7Civph43lmaggPiBqdXVraVwgOwor5Yqg57OWID4ga2F0b3VcIDsKK+aBqeWFuCA+IG9udGVuXCA7CivlvpLmrbsgPiB0b3NoaVwgOwor5bqP6KuWID4gam9yb25cIDsKK+avheeEtiA+IGtpemVuXCA7CivliLbopocgPiBzZWloYVwgOwor5q2O576OID4gdGFuYmlcIDsKK+mAgOi3ryA+IHRhaXJvXCA7Civlv5zmiYsgPiBvdXNodVwgOwor6YCf6KiYID4gc29ra2lcIDsKK+azouS5sSA+IGhhcmFuXCA7Civlv5zmiKYgPiBvdXNlblwgOwor6YCj6KaHID4gcmVucGFcIDsKK+aAqOWjsCA+IGVuc2VpXCA7CivmsrnljZggPiB5dXRhblwgOwor5bqP6KmeID4gam9zaGlcIDsKK+WMu+alrSA+IGlneW91XCA7Civluo/oqIAgPiBqb2dlblwgOwor5b+Y5oiRID4gYm91Z2FcIDsKK+iNt+mHjSA+IGthanV1XCA7CivljLrmpJwgPiBrdWtlblwgOwor5Y2X5paXID4gbmFudG9cIDsKK+ayveWIuCA+IGtva2VuXCA7CivljYrmnJ8gPiBoYW5raVwgOwor5ZCM5L6hID4gZG91a2FcIDsKK+WLleeUuyA+IGRvdWdhXCA7CivmsrPljZcgPiBrYW5hblwgOwor6JaE5YiDID4gdXN1YmFcIDsKK+WKoOeulyA+IGthc2FuXCA7CivlubTos6YgPiBuZW5wdVwgOwor5Y+j5ZGzID4ga291bWlcIDsKK+i/t+i3ryA+IG1laXJvXCA7CivmsrnliaQgPiB5dXphaVwgOwor5bm06LOAID4gbmVuZ2FcIDsKK+WPr+WLlSA+IGthZG91XCA7CivlubTosqIgPiBuZW5ndVwgOwor5b6h5qCqID4gb2thYnVcIDsKK+WOqOWtkCA+IHp1c2hpXCA7CivliKXoqJggPiBiZWtraVwgOwor5Y+k5Y+yID4ga29zaGlcIDsKK+WQj+S6uiA+IHJpamluXCA7CivlkITlgIsgPiBrYWtrb1wgOwor6YKq55+lID4gamFjaGlcIDsKK+WPpOWPgiA+IGtvc2FuXCA7Civms5XkuosgPiBob3VqaVwgOwor6JWD5aS3ID4gYmFuJydpXCA7Civph43lkbMgPiBvbW9taVwgOwor5qi56b2iID4ganVyZWlcIDsKK+WNg+acqCA+IGNoaWdpXCA7Civmra/np5EgPiBzaGlrYVwgOwor5oG15LiOID4ga2VpeW9cIDsKK+mFuOW6piA+IHNhbmRvXCA7CivlirHno4EgPiByZWlqaVwgOwor5Ymj6IieID4ga2VuYnVcIDsKK+azleS4uyA+IGhvc3N1XCA7Civmr43muK8gPiBib2tvdVwgOwor6YeO5ZCIID4geWFnb3VcIDsKK+WQjOS6iyA+IGRvdWppXCA7Civlj6/liIYgPiBrYWJ1blwgOwor6YeO5Y+yID4geWFzaGlcIDsKK+WKqeelrSA+IGpvc2FpXCA7CivljYrml5cgPiBoYW5raVwgOwor5ZCE5L2NID4ga2FrdWlcIDsKK+W+oeacrSA+IG9mdWRhXCA7CivpgY7oiKwgPiBrYWhhblwgOwor5YiG6LOmID4gYnVucHVcIDsKK+eoruOAhSA+IHNodWp1XCA7Civlv5jmgakgPiBib3VvblwgOwor5b6F5qmfID4gdGFpa2lcIDsKK+aBqeS6uiA+IG9uamluXCA7CivlubTorZwgPiBuZW5wdVwgOwor5b+M5oaaID4ga2l0YW5cIDsKK+mBi+iIqiA+IHVua291XCA7CivmsrPlhoUgPiBoYW5vaVwgOwor5oGo5LqLID4ga29uamlcIDsKK+aAp+WZqCA+IHNlaWtpXCA7CivmgJLlo7AgPiBkb3NlaVwgOwor5qmf6aaWID4ga2lzaHVcIDsKK+WIl+iomCA+IHJla2tpXCA7Civlj6TliLYgPiBrb3NlaVwgOwor5Y+N5ZO6ID4gaGFucG9cIDsKK+WNgeaXpSA+IHRvb2thXCA7CivlvqHmmLwgPiBvaGlydVwgOwor6YO95rCRID4gdG9taW5cIDsKK+eci+mBjiA+IGthbmthXCA7Civlj6TliIAgPiBrb3RvdVwgOwor5byl55SfID4geWF5b2lcIDsKK+mAgeipsSA+IHNvdXdhXCA7CivlubPoqp4gPiBoZWlnb1wgOwor5q+S5rCXID4gZG9ra2VcIDsKK+efm+ebviA+IG11anVuXCA7CivnoLTmsLQgPiBoYXN1aVwgOwor6YeR5YipID4ga2lucmlcIDsKK+azieS4iyA+IHNlbmthXCA7Civov5Tovp4gPiBoZW5qaVwgOwor6bWe5q+bID4gZ2Ftb3VcIDsKK+WPmeWLsiA+IGpva3VuXCA7CivmspblkIggPiBva2lhaVwgOwor6bWd5q+bID4gZ2Ftb3VcIDsKK+WPpOWFuCA+IGtvdGVuXCA7Civpr6jpo7IgPiBnZWlpblwgOwor6YeN5YipID4ganV1cmlcIDsKK+WNsOW9sSA+IGluJydlaVwgOwor5Y2Y5omTID4gdGFuZGFcIDsKK+W+oeaVsCA+IG9rYXp1XCA7Civlj5fli5UgPiBqdWRvdVwgOwor6YGT576pID4gZG91Z2lcIDsKK+W+jOaetiA+IGtvdWthXCA7CivpgaDnuIEgPiB0b29lblwgOwor5YiG6KqyID4gYnVua2FcIDsKK+mCpueUuyA+IGhvdWdhXCA7Civph47lhZogPiB5YXRvdVwgOwor552A6KGjID4geWFrdWlcIDsKK+WPl+WIkSA+IGp1a2VpXCA7Civmr47mrKEgPiBtYWlqaVwgOwor5b6M5pyfID4ga291a2lcIDsKK+iVqeWFkCA+IHRvdWppXCA7CivmsrnkupUgPiB5dXNlaVwgOwor5bu656KRID4ga2VucGlcIDsKK+WGpemXhyA+IG1laWFuXCA7CivluIPpmaMgPiBmdWppblwgOwor6I2S6YeOID4ga291eWFcIDsKK+ayu+S4iyA+IGNoaWthXCA7CivovrrphJkgPiBoZW5waVwgOwor6YWS5b6SID4gc2h1dG9cIDsKK+apn+mbtyA+IGtpcmFpXCA7CivmrYznqL8gPiBrYWtvdVwgOwor5byn54q2ID4ga29qb3VcIDsKK+mBt+enuyA+IHNlbicnaVwgOwor6YG456eRID4gc2Vua2FcIDsKK+W4sOmChCA+IGtpa2FuXCA7Civmra/nl5sgPiBoYWl0YVwgOwor5rCR5oi4ID4gbWlua29cIDsKK+WKoOebnyA+IGthbWVpXCA7Civoj4roirEgPiBraWtrYVwgOwor5Y+k5L6LID4ga29yZWlcIDsKK+WPsOS4iyA+IGRhaWthXCA7CivliLvoi6YgPiBrb2trdVwgOwor5q+N5qipID4gYm9rZW5cIDsKK+WPpOS9kyA+IGtvdGFpXCA7CivlvoDmnaUgPiBvdXJhaVwgOwor5Y+X5YOPID4ganV6b3VcIDsKK+WPpeS8miA+IGt1a2FpXCA7Civlj6TkvJ0gPiBrb2RlblwgOwor5b+c5a++ID4gb3V0YWlcIDsKK+WNseWzsCA+IGtpaG91XCA7CivmrrrmsJcgPiBzYWtraVwgOwor5Yqp55SjID4gam9zYW5cIDsKK+W4uOi7jCA+IGpvdWtpXCA7CivluLDovrIgPiBraW5vdVwgOwor5Y+k5LujID4ga29kYWlcIDsKK+WPpOS7iiA+IGtva29uXCA7Civlj6TkurogPiBrb2ppblwgOwor6YGV57SEID4gaXlha3VcIDsKK+WOn+WbsyA+IGdlbnp1XCA7CivljYHmiYsgPiBqaXR0ZVwgOwor5qmf6ZaiID4ga2lrYW5cIDsKK+awkeaEjyA+IG1pbicnaVwgOwor5Y+C5YqgID4gc2Fua2FcIDsKK+WGtumHkSA+IHlha2luXCA7Civnn7PngasgPiBzZWtrYVwgOwor5YW16aasID4gaGVpYmFcIDsKK+W+oeaJgCA+IGdvc2hvXCA7Civph47kurogPiB5YWppblwgOwor5byB55aPID4gYmVuc29cIDsKK+WOn+WZqCA+IGdlbmtpXCA7CivpgKDoirEgPiB6b3VrYVwgOwor5bid6YO9ID4gdGVpdG9cIDsKK+iLsemtgiA+IGVpa29uXCA7Civph4zkurogPiByaWppblwgOwor5Y6t5ZGzID4gaXlhbWlcIDsKK+WNseWusyA+IGtpZ2FpXCA7CivlupfoiJcgPiB0ZW5wb1wgOwor6YWN5biDID4gaGFpZnVcIDsKK+auteatqSA+IHRhbmJ1XCA7CivljZjluqcgPiB0YW56YVwgOwor5Y+Z5Lu7ID4gam9uaW5cIDsKK+asp+exsyA+IG91YmVpXCA7CivlvKfnga8gPiBrb3RvdVwgOwor5oCS5Y+3ID4gZG9nb3VcIDsKK+awuOWtmCA+IGVpem9uXCA7Civlt6XpnaIgPiBrdW1lblwgOwor5YaF6ZyAID4gbmFpanVcIDsKK+WPl+S7uyA+IGp1bmluXCA7Civmr43moKEgPiBib2tvdVwgOwor5b6M5o+0ID4ga291ZW5cIDsKK+ecjOitsCA+IGtlbmdpXCA7Civli6TmsYIgPiBnb25ndVwgOwor55yL6K23ID4ga2FuZ29cIDsKK+WGhumZoyA+IGVuamluXCA7Civphbjln7ogPiBzYW5raVwgOwor56K65Zu6ID4ga2Fra29cIDsKK+W4sOi2qCA+IGtpc3V1XCA7CivluLDotqMgPiBraXNodVwgOwor5b2T5qmfID4gdG91a2lcIDsKK+W8geeQhiA+IGJlbnJpXCA7Civmr43mnZAgPiBib3phaVwgOwor5b6S5omLID4gdG9zaHVcIDsKK+ebm+mBiyA+IHNlaXVuXCA7Civmra/niZkgPiBzaGlnYVwgOwor5rCR5bqmID4gbWluZG9cIDsKK+mBi+eulyA+IHVuemFuXCA7Civlv5zlpIkgPiBvdWhlblwgOwor6YWS5a62ID4gc2h1a2FcIDsKK+W8pea8qyA+IGJpbWFuXCA7CivphZLlrrQgPiBzaHVlblwgOwor6a6f6bGHID4gYW5rb3VcIDsKK+i9n+mfsyA+IGdvdW9uXCA7CivlvqHlv7UgPiBnb25lblwgOwor5b6X5oSPID4gdG9rdWlcIDsKK+apn+mLkiA+IGtpaG91XCA7Civlhbjpm4UgPiB0ZW5nYVwgOwor5Y+M5LqSID4gc291Z29cIDsKK+WLmOawlyA+IGthbmtpXCA7Civmr47mmYIgPiBtYWlqaVwgOwor6L6e6YCAID4gaml0YWlcIDsKK+WOn+WPpSA+IGdlbmt1XCA7CivpgbrnlZkgPiBpcnl1dVwgOwor5qmf6YqDID4ga2lqdXVcIDsKK+mDveaUvyA+IHRvc2VpXCA7Civli5XmsJcgPiBkb3VraVwgOwor5b+c5aCxID4gb3Vob3VcIDsKK+W5vOiKvSA+IHlvdWdhXCA7CivnoazluqYgPiBrb3Vkb1wgOwor5b6p5biwID4gZnVra2lcIDsKK+asuueeniA+IGdpbWFuXCA7CivpgaDnn6IgPiB0b295YVwgOwor6YGO56iLID4ga2F0ZWlcIDsKK+awtOWkqyA+IHN1aWZ1XCA7Civmr43mlpEgPiBib2hhblwgOwor5oCc5L+QID4gcmVpcmlcIDsKK+W4gumDqCA+IHNoaWJ1XCA7CivliqvngasgPiBnb3VrYVwgOwor5Yal6YCUID4gbWVpZG9cIDsKK+WPguS6iyA+IHNhbmppXCA7CivlvqHluaMgPiBnb2hlaVwgOwor5by+5qmfID4gZGFua2lcIDsKK+mBoOecvCA+IGVuZ2FuXCA7CivnoLTmkacgPiBoYXNhaVwgOwor6L+R6KGbID4ga29ub2VcIDsKK+efreazoiA+IHRhbnBhXCA7CivpgaDnm64gPiB0b29tZVwgOwor6YaH5YyWID4ganVua2FcIDsKK+WIpOiAhSA+IGhhbmphXCA7CivnoLTmkI0gPiBoYXNvblwgOwor6YGT56C0ID4gZG91aGFcIDsKK+iLsemciiA+IGVpcmVpXCA7Civli4fmsJcgPiB5dXVraVwgOwor5b2T5pyfID4gdG91a2lcIDsKK+WLleapnyA+IGRvdWtpXCA7CivmsJflrZQgPiBraWtvdVwgOwor5Yqg54K5ID4ga2F0ZW5cIDsKK+mFuOWRsyA+IHNhbm1pXCA7CivlhqDovp4gPiBrYW5qaVwgOwor6Iux6ZuEID4gZWl5dXVcIDsKK+W/q+WRsyA+IGthaW1pXCA7CivljbHlnLAgPiBraWNoaVwgOwor5bmz6IelID4gaGVpZ2FcIDsKK+WOmuWIqSA+IGtvdXJpXCA7CivlvpLlvJ8gPiB0b3RlaVwgOwor55+t5rCXID4gdGFua2lcIDsKK+awkeWutiA+IG1pbmthXCA7CivljJbmiJAgPiBrYXNlaVwgOwor5beu6YeRID4gc2FraW5cIDsKK+aoqumaiiA+IG91dGFpXCA7Civpg6jmlbAgPiBidXN1dVwgOwor5bqD576pID4ga291Z2lcIDsKK+WLh+atpiA+IHl1dWJ1XCA7CivlhYjpp4YgPiBzZW5rdVwgOwor6YKq5rOVID4gamFob3VcIDsKK+WNiuWtoyA+IGhhbmtpXCA7Civlv4zlnqMgPiBpZ2FraVwgOwor5b2T5pmCID4gdG91amlcIDsKK+WJjeenkSA+IHplbmthXCA7CivmsI/lrZAgPiB1amlrb1wgOwor5beu6YWNID4gc2FoYWlcIDsKK+efreatjCA+IHRhbmthXCA7Civnm6PorbcgPiBrYW5nb1wgOwor5YaF6YeOID4gbmFpeWFcIDsKK+ebuOijnCA+IHNvdWhvXCA7CivlvKbmrYwgPiBnZW5rYVwgOwor5Y2D5a62ID4gc2Vua2VcIDsKK+iLpumboyA+IGt1bmFuXCA7CivlvJjms5UgPiBndWhvdVwgOwor5Y6t5Lq6ID4gZW5qaW5cIDsKK+mFuOWMliA+IHNhbmthXCA7CivmqZ/ou6IgPiBraXRlblwgOwor56C05oiSID4gaGFrYWlcIDsKK+avgOaQjSA+IGtpc29uXCA7CivljYHlrZcgPiBqdXVqaVwgOwor5beu6YGjID4gc2FrZW5cIDsKK+W+oeWutCA+IGd5b2VuXCA7Civli5jmn7sgPiBrYW5zYVwgOwor55+u5qi5ID4gd2FpanVcIDsKK+eZvembqCA+IGhha3V1XCA7Civljq3kuJYgPiBlbnNlaVwgOwor5b6h5a6FID4gb3Rha3VcIDsKK+WGhemDqCA+IG5haWJ1XCA7Civljp/kvqEgPiBnZW5rYVwgOwor5Ya36KqeID4gcmVpZ29cIDsKK+W6p+emhSA+IHphemVuXCA7CivojbfokYkgPiBrYXlvdVwgOwor6Ium6ZeYID4ga3V0b3VcIDsKK+i+nuitsiA+IGppam91XCA7CivljLvlraYgPiBpZ2FrdVwgOwor5Yqg5ribID4ga2FnZW5cIDsKK+W6p+ekvCA+IHphcmVpXCA7CivphZLlmaggPiBzaHVraVwgOwor5bem6YG3ID4gc2FzZW5cIDsKK+eZu+mZoiA+IHRvdWluXCA7Civoj6/nlLIgPiBrYWtvdVwgOwor5YWI6Z2eID4gc2VucGlcIDsKK+mBi+eXtCA+IHVuY2hpXCA7CivluILosrsgPiBzaGloaVwgOwor5b6A5bm0ID4gb3VuZW5cIDsKK+W6nOeojiA+IGZ1emVpXCA7CivnoJTmkakgPiBrZW5tYVwgOwor5beh6YKPID4ganVucmFcIDsKK+WJo+eSvSA+IGtlbmppXCA7CivlhY3pmaQgPiBtZW5qb1wgOwor6Iqx6a2BID4gb2lyYW5cIDsKK+W7tua7niA+IGVudGFpXCA7Civlt6bovrogPiBzYWhlblwgOwor5b6u5aG1ID4gbWlqaW5cIDsKK+mDqOaJgCA+IGJ1c2hvXCA7CivljLnlqaYgPiBoaXBwdVwgOwor5YWJ6ZmwID4ga291aW5cIDsKK+asoeeUtyA+IGppbmFuXCA7CivliqDms5UgPiBrYWhvdVwgOwor5b6M5bC+ID4ga291YmlcIDsKK+WGhui7oiA+IGVudGVuXCA7CivpgZPnkIYgPiBkb3VyaVwgOwor5q2z5qyhID4gc2FpamlcIDsKK+WGl+iyuyA+IGpvdWhpXCA7CivliKXnrocgPiBiZWtrb1wgOwor6Iy26KmxID4gY2hhd2FcIDsKK+avjeaApyA+IGJvc2VpXCA7CivpgYXnlpEgPiBjaGlnaVwgOwor5rCX5ZyPID4ga2lrZW5cIDsKK+W3qOi6ryA+IGt5b2t1XCA7CivluILorbAgPiBzaGlnaVwgOwor5rCX5ZujID4ga2lkYW5cIDsKK+W/nOWIhiA+IG91YnVuXCA7CivlvqHlpKcgPiBvbnRhaVwgOwor5Yqg5rC0ID4ga2FzdWlcIDsKK+WMluW3pSA+IGtha291XCA7Civmr5vluIMgPiBtb3VmdVwgOwor5YaN6LW3ID4gc2Fpa2lcIDsKK+awuOWKqyA+IGVpZ291XCA7CivmsJflmqIgPiBraW5vdVwgOwor5rC05YyWID4gc3Vpa2FcIDsKK+mAlOerryA+IHRvdGFuXCA7Civpg73luqYgPiB0c3Vkb1wgOwor5q+N5b2iID4gYm9rZWlcIDsKK+ato+awlyA+IHNlaWtpXCA7CivljLnlpKsgPiBoaXBwdVwgOwor5bmz57SgID4gaGVpc29cIDsKK+iKsemmmSA+IGtha291XCA7Civli7/mgKogPiBtb2trZVwgOwor5YaZ6K2cID4gc2hhZnVcIDsKK+eiuuS5jiA+IGtha2tvXCA7Civnn63mnJ8gPiB0YW5raVwgOwor5q2j5q+UID4gc2VpaGlcIDsKK+W9vOWyuCA+IGhpZ2FuXCA7CivljbDliKQgPiBpbnBhblwgOwor6YO95biCID4gdG9zaGlcIDsKK+avjuW6piA+IG1haWRvXCA7Civlhajpg70gPiB6ZW50b1wgOwor5Y2w5YiAID4gaW50b3VcIDsKK+WFqOmDqCA+IHplbmJ1XCA7CivmsLTliKkgPiBzdWlyaVwgOwor6YCj56C0ID4gcmVucGFcIDsKK+W9qeW6piA+IHNhaWRvXCA7CivlvaLlvbEgPiBrZWllaVwgOwor5Yil56eRID4gYmVra2FcIDsKK+mBoOeBqyA+IHRvb2JpXCA7CivokYnmnKsgPiBoYXp1ZVwgOwor5Yq55p6cID4ga291a2FcIDsKK+W/q+S6iyA+IGthaWppXCA7CivlupznnIwgPiBmdWtlblwgOwor5YaX6KqeID4gam91Z29cIDsKK+WMuuWfnyA+IGt1aWtpXCA7Civli77lvJUgPiBrb3VpblwgOwor5beo6LK7ID4ga3lvaGlcIDsKK+W+oeWdiiA+IGdvYm91XCA7Civnn6LmnaUgPiB5YXJhaVwgOwor5YyW5bCOID4ga2Vkb3VcIDsKK+iLsemCgSA+IGVpbWFpXCA7CivlvozlprsgPiBnb3NhaVwgOwor5q+U5bO2ID4gaGl0b3VcIDsKK+WNmOWPpSA+IHRhbmt1XCA7CivmsJflk4EgPiBraWhpblwgOwor5YaN6K2wID4gc2FpZ2lcIDsKK+W3peiyuyA+IGtvdWhpXCA7Civli53miYsgPiBrYXR0ZVwgOwor5q275pyfID4gc2hpa2lcIDsKK+ecvOeqqSA+IGdhbmthXCA7CivluIPooosgPiBob3RlaVwgOwor6Im26bqXID4gZW5yZWlcIDsKK+WEqumbhSA+IHl1dWdhXCA7Civmr5vlrZQgPiBrZWFuYVwgOwor56C05bGLID4gaGFva3VcIDsKK+WLpOaDsCA+IGtpbmRhXCA7CivlhoXorbAgPiBuYWlnaVwgOwor6L2X6Lu7ID4ga2Fua2FcIDsKK+atlOastyA+IGt5b2tpXCA7CivovLjpioAgPiB5dWdpblwgOwor5YWo6LqvID4gemVua3VcIDsKK+W5s+epjyA+IGhlaW9uXCA7CivljbPkvY0gPiBzb2t1aVwgOwor5biw6ImmID4ga2lrYW5cIDsKK+W6j+ebpCA+IGpvYmFuXCA7Civov5Hnv5IgPiBraW5qdVwgOwor5qih6YCgID4gbW96b3VcIDsKK+avjeWxiyA+IG9tb3lhXCA7CivprZHprYUgPiBjaGltaVwgOwor5rC45L2PID4gZWlqdXVcIDsKK+ecvOenkSA+IGdhbmthXCA7Civnm67ojLYgPiBtZWNoYVwgOwor5YWs6LevID4ga291cm9cIDsKK+WIh+espiA+IGtpcHB1XCA7CivluLDoiKogPiBraWtvdVwgOwor5qiq6LuiID4gb3V0ZW5cIDsKK+W5tOennyA+IG5lbnNvXCA7Civou43pvJMgPiBndW5rb1wgOwor5Y2K5Y+vID4gaGFua2FcIDsKK+WNiuWPpSA+IGhhbmt1XCA7CivpgbjmrYwgPiBzZW5rYVwgOwor5Y2Y5YipID4gdGFucmlcIDsKK+W+s+WMliA+IHRva2thXCA7CivliKnnm4ogPiByaWVraVwgOwor5qyh54K5ID4gaml0ZW5cIDsKK+W9k+W6pyA+IHRvdXphXCA7CivlvpPlm6AgPiBqdXVpblwgOwor5rC45LujID4gZWl0YWlcIDsKK+awl+WLoiA+IGtpc2VpXCA7Civmra/mnLYgPiBzaGlkYVwgOwor5q2z5pquID4gc2VpYm9cIDsKK+avjeWutiA+IG9tb3lhXCA7CivlvbzlpbQgPiBhaXRzdVwgOwor5rCX5YqfID4ga2lrb3VcIDsKK+W+qeWPpCA+IGZ1a2tvXCA7Civnm67oibIgPiBtZWlyb1wgOwor5YeE6Im2ID4gc2VpZW5cIDsKK+avjeWtkCA+IGJvc2hpXCA7CivpgaDmtbcgPiBlbmthaVwgOwor5rCX5YmNID4ga2ltYWVcIDsKK+WNg+WPpCA+IHNlbmtvXCA7Civlhrfoj5MgPiByZWlrYVwgOwor5byV5pWwID4gaW5zdXVcIDsKK+WMquWboyA+IGhpZGFuXCA7CivphY3lgpkgPiBoYWliaVwgOwor5b6u5YuVID4gYmlkb3VcIDsKK+awuOS4liA+IGVpc2VpXCA7CivmrrXlt64gPiBkYW5zYVwgOwor5b255aSrID4gZWtpZnVcIDsKK+awl+WIhiA+IGtpYnVuXCA7CivphZLkv50gPiBzaHVob1wgOwor5YWs6LK7ID4ga291aGlcIDsKK+W8t+aEjyA+IGt5b3VpXCA7CivlhoXopo8gPiBuYWlraVwgOwor6YGg5rOzID4gZW4nJ2VpXCA7CivojYnoirEgPiBzb3VrYVwgOwor5YiG56eRID4gYnVua2FcIDsKK+mFlOS9mSA+IHN1aXlvXCA7Civli5XmgrggPiBkb3VraVwgOwor6JKy5ZujID4gZnV0b25cIDsKK+W+oeWPsCA+IG1pZGFpXCA7Civou43pto8gPiBzaGFtb1wgOwor6YCj55CGID4gcmVucmlcIDsKK+mCquaOqCA+IGphc3VpXCA7CivmsJHliKkgPiBtaW5yaVwgOwor6YG65qWtID4gaWd5b3VcIDsKK+mBi+a8lSA+IHVuc291XCA7CivnoazljJYgPiBrb3VrYVwgOwor6YCj54+gID4gcmVuanVcIDsKK+WIqeeUqCA+IHJpeW91XCA7Civlvq7liIYgPiBiaWJ1blwgOwor55+t5omTID4gdGFuZGFcIDsKK+WNiOWJjSA+IGdvemVuXCA7Civoi7Hos4cgPiBlaXNoaVwgOwor5YaF6KOPID4gZGFpcmlcIDsKK+i8uOmAgSA+IHl1c291XCA7CivlhYjpgJQgPiBzZW5kb1wgOwor5YW16KqeID4gaGVpZ29cIDsKK+WKqeaUuyA+IGpva291XCA7Civmrr/lrocgPiBkZW4nJ3VcIDsKK+iKn+mZpCA+IHNhbmpvXCA7CivliIfno4sgPiBzZXNzYVwgOwor5rCR5YW3ID4gbWluZ3VcIDsKK+WFrOitsCA+IGtvdWdpXCA7CivptYTlsL4gPiBzaGliaVwgOwor5Yy75Y2aID4gaWhha3VcIDsKK+iMtuiPkyA+IGNoYWthXCA7Civlvq7lhYkgPiBiaWtvdVwgOwor5Y2Y5L6hID4gdGFua2FcIDsKK+mFjeS7mCA+IGhhaWZ1XCA7CivmranmlbAgPiBob3N1dVwgOwor56C05aOKID4gaGFrYWlcIDsKK+avjuWknCA+IG1haXlvXCA7Civmrabmlq0gPiBidWRhblwgOwor5Y2Y5L2NID4gdGFuJydpXCA7CivlhYnovJ0gPiBrb3VraVwgOwor5rCX5YCZID4ga2lrb3VcIDsKK+WFvOijnCA+IGtlbnBvXCA7CivliqDmlbAgPiBrYXN1dVwgOwor5b6h5YmNID4gZ296ZW5cIDsKK+WFrOiqsiA+IGtvdWthXCA7CivlvZPlrrYgPiB0b3VrZVwgOwor5by35byVID4gZ291aW5cIDsKK+W+kuWQjSA+IGFkYW5hXCA7CivlvqHlh7ggPiBvZGVrb1wgOwor5b2T5a2XID4gYXRlamlcIDsKK+mFjeS4iyA+IGhhaWthXCA7CivlhazoqLQgPiBrb3Vzb1wgOwor5bmz55mSID4gaGVpeXVcIDsKK+eZuui1tyA+IGhva2tpXCA7CivpgbjmnpwgPiBzZW5rYVwgOwor5rCX5L2TID4ga2l0YWlcIDsKK+mCquaFsyA+IGpha2VuXCA7CivljLrliIYgPiBrdWJ1blwgOwor6I+v5rCPID4ga2FzaGlcIDsKK+mBv+aakSA+IGhpc2hvXCA7CivpgYrms7MgPiB5dXVlaVwgOwor5Yy65YemID4ga3VzaG9cIDsKK+avjeWggiA+IGJvZG91XCA7CivlvqHlhY0gPiBnb21lblwgOwor5b6h5YWIID4gb3Nha2lcIDsKK+WGrOiHsyA+IHRvdWppXCA7CivojLboiJcgPiBjaGFob1wgOwor6Iux6KmpID4gZWlzaGlcIDsKK+WLh+W+gCA+IHl1dW91XCA7CivlvJPmiYsgPiB5dW5kZVwgOwor5Y2K5L6hID4gaGFua2FcIDsKK+WNl+S4iyA+IG5hbmthXCA7CivljLrlhoUgPiBrdW5haVwgOwor6Imy6aaZID4gaXJva2FcIDsKK+W+kuWKtCA+IHRvcm91XCA7Civmr43lnosgPiBib2tlaVwgOwor6YGT5q2MID4gZG91a2FcIDsKK+WFmuitsCA+IHRvdWdpXCA7CivpgqrmgqogPiBqYWFrdVwgOwor5bm055SrID4gbmVucG9cIDsKK+mDqOWkliA+IGJ1Z2FpXCA7CivmrYzmm7ggPiBrYXNob1wgOwor5Ymb5rCXID4gZ291a2lcIDsKK+W8p+W9oiA+IGtva2VpXCA7Civli6LlrrYgPiBzZWlrYVwgOwor5YqD5pyfID4ga2Fra2lcIDsKK+egguWyqSA+IHNhZ2FuXCA7CivpgqrmgYsgPiBqYXJlblwgOwor5biw57SNID4ga2lub3VcIDsKK+W8lOaFsCA+IGNob3VpXCA7CivmsJfkuIggPiBraWpvdVwgOwor5Ymb5q+FID4gZ291a2lcIDsKK+W+qeS9jSA+IGZ1a3VpXCA7CivlvpLliJEgPiB0b2tlaVwgOwor55uu57eaID4gbWVzZW5cIDsKK+iQjOacqCA+IG1vZWdpXCA7CivlhrfnvbUgPiByZWliYVwgOwor5rCR5LqLID4gbWluamlcIDsKK+efqeW9oiA+IGt1a2VpXCA7Civpgbrml48gPiBpem9rdVwgOwor5q+b5ZSQID4ga2V0b3VcIDsKK+WFqOijuCA+IHplbnJhXCA7Civpgqrlv7UgPiBqYW5lblwgOwor5Yqp5oiQID4gam9zZWlcIDsKK+i7jemmrCA+IGd1bmJhXCA7CivlvJTmhI8gPiBjaG91aVwgOwor5Ym15qGIID4gc291YW5cIDsKK+aooeippiA+IG1vc2hpXCA7CivpgYrmrakgPiB5dXVob1wgOwor5Ye555y8ID4gb3VnYW5cIDsKK+W9k+WknCA+IHRvdXlhXCA7Civou4rppqwgPiBzaGFiYVwgOwor5Yqg5ouFID4ga2F0YW5cIDsKK+m0qOWxhSA+IGthbW9pXCA7CivlvqHkvpsgPiBvdG9tb1wgOwor5b6S5YWaID4gdG90b3VcIDsKK+WGhuiTiyA+IGVuZ2FpXCA7CivljYPku6MgPiBjaGl5b1wgOwor5YWE6LK0ID4gYW5pa2lcIDsKK+iLpuiogCA+IGt1Z2VuXCA7CivlvqHkvL0gPiBvdG9naVwgOwor5YyW5ZCIID4ga2Fnb3VcIDsKK+WIqeeCuSA+IHJpdGVuXCA7CivprLzpnaIgPiBraW1lblwgOwor6Ly/6KuWID4geW9yb25cIDsKK+WFmuimjyA+IHRvdWtpXCA7CivljYHkupQgPiBqdXVnb1wgOwor5q275b6MID4gc2hpZ29cIDsKK+WNgeS6jCA+IGp1dW5pXCA7CivmqKrooYwgPiBvdWtvdVwgOwor5Yy75LyvID4gaWhha3VcIDsKK+W+oeS7gSA+IGdvamluXCA7CivlvozlhYkgPiBnb2tvdVwgOwor5Y2D5LiWID4gY2hpeW9cIDsKK+WFiOitsCA+IHNlbmdpXCA7CivljLrkvJogPiBrdWthaVwgOwor6YGg5p2lID4gZW5yYWlcIDsKK+m0n+WwviA+IHNoaWJpXCA7CivnmbvoqJggPiB0b3VraVwgOwor5YmN5q2vID4gbWFlYmFcIDsKK+mBoOacmyA+IGVuYm91XCA7Civlh7rnlaogPiBkZWJhblwgOwor55+l5bexID4gY2hpa2lcIDsKK+WKseW8pyA+IHJlaWtvXCA7CivlvozlgpkgPiBrb3ViaVwgOwor55yL56C0ID4ga2FucGFcIDsKK+W+oeS4iiA+IG9rYW1pXCA7CivlhY3oqLQgPiBtZW5zb1wgOwor5b255YuZID4gZWtpbXVcIDsKK+apn+iDvSA+IGtpbm91XCA7Civokpnlj6QgPiBtb3Vrb1wgOwor5Yag6ICFID4ga2FuamFcIDsKK+W7g+ajhCA+IGhhaWtpXCA7CivliKnmvaQgPiByaWp1blwgOwor5YOn6ZmiID4gc291aW5cIDsKK+i7jemdtCA+IGd1bmthXCA7CivlhqTnvaogPiBlbnphaVwgOwor6YGg5pmvID4gZW5rZWlcIDsKK+WGheiLkSA+IG5haWVuXCA7Civlu4PmoYggPiBoYWlhblwgOwor5q+N5ZCOID4gYm9rb3VcIDsKK+i7jemcgCA+IGd1bmp1XCA7CivluIPnva4gPiBmdWNoaVwgOwor6ay86ZaAID4ga2ltb25cIDsKK+WEkumBkyA+IGp1ZG91XCA7CivpgaDmlrkgPiBlbnBvdVwgOwor5b6T5LqLID4ganV1amlcIDsKK+WCtemsvCA+IHNhaWtpXCA7Civlt6boiLcgPiBzYWdlblwgOwor5YWB6KixID4gaW5reW9cIDsKK+W4sOekviA+IGtpc2hhXCA7CivliqPlvKcgPiByZWtrb1wgOwor6YOo5ZOBID4gYnVoaW5cIDsKK+egguWhtSA+IHNhamluXCA7CivliZvmnpwgPiBnb3VrYVwgOwor5Yid5ryUID4gc2hvZW5cIDsKK+atqeW7iiA+IGhvcm91XCA7CivmrYzmiYsgPiBrYXNodVwgOwor5b6M5LqLID4ga291amlcIDsKK+WLh+WppiA+IHl1dWZ1XCA7CivmrarluqYgPiB3YWlkb1wgOwor5bmz54KJID4gaGVpcm9cIDsKK+i+suenkSA+IG5vdWthXCA7CivmrKHmnaEgPiBqaWpvdVwgOwor5q2m5byBID4gYnViZW5cIDsKK+i7jOmWkyA+IGtpa2FuXCA7Civpg73lhoUgPiB0b25haVwgOwor5byf5a2QID4gZGVzaGlcIDsKK+W3puiEsyA+IHNhbm91XCA7Civlu7bmgKcgPiBlbnNlaVwgOwor6YKm5a62ID4gaG91a2FcIDsKK+WKoOW5tCA+IGthbmVuXCA7Civov5Hnlb8gPiBraW5raVwgOwor5byB5bqnID4gYmVuemFcIDsKK+WIpea0viA+IGJlcHBhXCA7CivmraPluqcgPiBzZWl6YVwgOwor5byV5bCOID4gaW5kb3VcIDsKK+mAo+atjCA+IHJlbmdhXCA7CivprZTpgZMgPiBtYWRvdVwgOwor5b2x5YOPID4gZWl6b3VcIDsKK+W3q+iAhSA+IGZ1c2hhXCA7CivpgqblrZcgPiBob3VqaVwgOwor5Ye554mIID4gb3ViYW5cIDsKK+WGheiAsyA+IG5haWppXCA7CivliqDlt6UgPiBrYWtvdVwgOwor5YuH5aSrID4geXV1ZnVcIDsKK+asp+aWhyA+IG91YnVuXCA7CivlvZPlkKYgPiB0b3VoaVwgOwor5Yip5rC0ID4gcmlzdWlcIDsKK+mAoOasoSA+IHpvdWppXCA7Civlha3oirEgPiByaWtrYVwgOwor5Yem55CGID4gc2hvcmlcIDsKK+W7tuW8lSA+IGVuJydpblwgOwor552/5pm6ID4gZWljaGlcIDsKK+WFq+iLpiA+IGhha2t1XCA7Civmr5TlgKsgPiBoaXJpblwgOwor5biw55yBID4ga2lzZWlcIDsKK+mBjuaVjyA+IGthYmluXCA7Civluo/mra8gPiBqb3NoaVwgOwor5bu25bu2ID4gZW4nJ2VuXCA7Civli5Xlm6AgPiBkb3VpblwgOwor5byK5bGlID4gaGVpcmlcIDsKK+mBuuW+syA+IGl0b2t1XCA7CivnoLTlgKsgPiBoYXJpblwgOwor5YyX5LqsID4gcGVraW5cIDsKK+egguWYtCA+IHNhc2hpXCA7CivliY3mnJ8gPiB6ZW5raVwgOwor5qyh5pWwID4gamlzdXVcIDsKK+mAoOapnyA+IHpvdWtpXCA7Civmr5TkvosgPiBoaXJlaVwgOwor6YOo5YiGID4gYnVidW5cIDsKK+W5s+a4qSA+IGhlaW9uXCA7Civlho3nuIEgPiBzYWllblwgOwor55uu55ypID4gbWVtYWlcIDsKK+aoueiEgiA+IGp1c2hpXCA7Civmrovln7ogPiB6YW5raVwgOwor6YC45pu4ID4gaXNzaG9cIDsKK+mDveS8miA+IHRva2FpXCA7CivmrL3mhZUgPiBraW5ib1wgOwor6YOo5YaFID4gYnVuYWlcIDsKK+WFreiFkSA+IHJvcHB1XCA7CivpgJPmrKEgPiB0ZWlqaVwgOwor6YO95Lq6ID4gdG9qaW5cIDsKK+mBi+aQrCA+IHVucGFuXCA7CivliY3ml6UgPiBtYWViaVwgOwor5q+N5L2TID4gYm90YWlcIDsKK+WIqeaoqSA+IHJpa2VuXCA7CivlhoXnuIEgPiBuYWllblwgOwor6YG35bqnID4gc2VuemFcIDsKK+WKoOWusyA+IGthZ2FpXCA7CivpgaDmha4gPiBlbnJ5b1wgOwor5Yun5YyWID4ga2FuZ2VcIDsKK+WLh+WbsyA+IHl1dXRvXCA7Civoj6nmj5AgPiBib2RhaVwgOwor5YOn6YO9ID4gc291enVcIDsKK+atpuWumCA+IGJ1a2FuXCA7CivliJ3mrakgPiBzaG9ob1wgOwor55+z5ZmoID4gc2Vra2lcIDsKK+mAgOayuyA+IHRhaWppXCA7Civli5Xlk6EgPiBkb3VpblwgOwor6I+y5omNID4gaGlzYWlcIDsKK+WLpOWLmSA+IGtpbm11XCA7CivlvKXlm5sgPiB5YXNoaVwgOwor5q2j5a2XID4gc2VpamlcIDsKK+W3qOe0sCA+IGtvc2FpXCA7CivpgYvmjIcgPiB1bnNoaVwgOwor6bOl5bGFID4gdG9yaWlcIDsKK+W5s+awlyA+IGhlaWtpXCA7CivpgKPmnrYgPiByZW5rYVwgOwor5YiG5rS+ID4gYnVucGFcIDsKK+i7jemDqCA+IGd1bmJ1XCA7CivlhaznvqkgPiBrb3VnaVwgOwor5Ye65rmvID4gaWRleXVcIDsKK+apn+eoriA+IGtpc2h1XCA7CivluqbmlbAgPiBkb3N1dVwgOwor6YGK5oqAID4geXV1Z2lcIDsKK+mAgOatqSA+IHRhaWhvXCA7Civnmofog6QgPiBrb3VpblwgOwor6YKm5ZyfID4gaG91ZG9cIDsKK+mBv+WvkiA+IGhpa2FuXCA7Civpg6jkvJogPiBidWthaVwgOwor5Yip5qC5ID4gcmlrb25cIDsKK+W0jumZvSA+IGtpeW91XCA7CivlubTmrKEgPiBuZW5qaVwgOwor6YGK5oivID4geXV1Z2lcIDsKK+mBoOW+gSA+IGVuc2VpXCA7Civlt67nrYkgPiBzYXRvdVwgOwor6LuM6YGTID4ga2lkb3VcIDsKK+mBuuWwvyA+IGlueW91XCA7Civmrbvlm6AgPiBzaGlpblwgOwor5Yuy5L2NID4ga3VuJydpXCA7CivokazlhbcgPiBzb3VndVwgOwor5YaG562SID4gZW50b3VcIDsKK+WIhuavjSA+IGJ1bmJvXCA7CivojLbnm64gPiBjaGFtZVwgOwor5bqX5pivID4gdGVuemVcIDsKK+WLn+WFtSA+IGJvaGVpXCA7Civmrr/kuIsgPiBkZW5rYVwgOwor5qyd5oakID4gdXBwdW5cIDsKK+iRrOWEgCA+IHNvdWdpXCA7CivpgZXlv4MgPiBpc2hpblwgOwor5byx5YyWID4gamFra2FcIDsKK+WKoOWilyA+IGthem91XCA7CivpgYrmg7AgPiB5dXVkYVwgOwor5Yuf5YK1ID4gYm9zYWlcIDsKK+efreWPpSA+IHRhbmt1XCA7CivlvZPkuosgPiB0b3VqaVwgOwor6YGO5oCgID4ga2F0YWlcIDsKK+WHuuaxgSA+IGRhc2hpXCA7Civnn7PljJYgPiBzZWtrYVwgOwor55uj55CGID4ga2FucmlcIDsKK+WJjeaIryA+IHplbmdpXCA7CivluKvniLYgPiBzaGlmdVwgOwor5q2j5aGpID4gc2VpZW5cIDsKK+apn+efpSA+IGtpY2hpXCA7CivlurjmhJogPiB5b3VndVwgOwor5byV5ZapID4gaW4nJ3l1XCA7CivluJ3njosgPiB0ZWlvdVwgOwor6YG/5aaKID4gaGluaW5cIDsKK+WGheenkSA+IG5haWthXCA7CivpgK7mjZUgPiB0YWlob1wgOwor5bqP5paHID4gam9idW5cIDsKK+mBjuW9kyA+IGthdG91XCA7Civou43ot68gPiBndW5yb1wgOwor5bqP5pWwID4gam9zdXVcIDsKK+aui+WLmSA+IHphbm11XCA7CivliJ3mnJ8gPiBzaG9raVwgOwor6YGg5bO2ID4gZW50b3VcIDsKK+W3peenkSA+IGtvdWthXCA7Civouqvph40gPiBtaW9tb1wgOwor5bqn5omAID4gemFzaG9cIDsKK+WGheekuiA+IG5haWppXCA7CivmraPlnZAgPiBzZWl6YVwgOwor6Lyq6IieID4gcmluYnVcIDsKK+mAlOaWuSA+IHRvaG91XCA7CivlhIDoo4UgPiBnaXNvdVwgOwor5bm95pqXID4geXV1YW5cIDsKK+iLseexsyA+IGVpYmVpXCA7Civou43osrsgPiBndW5waVwgOwor6a2U6KGXID4gbWFnYWlcIDsKK+i7ouiomyA+IHRlbmthXCA7Civou6LoqJggPiB0ZW5raVwgOwor5Yex5q2MID4gZ2Fpa2FcIDsKK+asoeW5tCA+IGppbmVuXCA7CivpgbrloqggPiBpYm9rdVwgOwor55qH57SAID4ga291a2lcIDsKK+mBheW7tiA+IGNoaWVuXCA7CivlubzmmYIgPiB5b3VqaVwgOwor55uG55S7ID4gYm9uZ2FcIDsKK+WIkeacnyA+IGtlaWtpXCA7CivlubTmnJ8gPiBuZW5raVwgOwor5YuV5L2cID4gZG91c2FcIDsKK+WHuuanmCA+IGRleW91XCA7Civoirjoi5EgPiBnZWllblwgOwor5byn5YWJID4ga29rb3VcIDsKK+atjOWjhyA+IGthZGFuXCA7CivlhbXnp5EgPiBoZWlrYVwgOwor5Yqp5ZG9ID4gam9tZWlcIDsKK+mrmOmbhSA+IGtvdWdhXCA7CivluLjmuKkgPiBqb3VvblwgOwor5YWa57SAID4gdG91a2lcIDsKK+WJjeW+jCA+IHplbmdvXCA7CivlhbXnpo0gPiBoZWlrYVwgOwor5qmf55SyID4ga2lrb3VcIDsKK+atpuWVjyA+IGJ1bW9uXCA7CivlirTli5kgPiByb3VtdVwgOwor5beu55uKID4gc2Fla2lcIDsKK+mAo+aJkyA+IHJlbmRhXCA7CivlhKroibYgPiB5dXVlblwgOwor5bq25bm+ID4gc2hva2lcIDsKK+iKseiMjiA+IGtha2VpXCA7CivnoILkuIogPiBzYWpvdVwgOwor6LuN6K2wID4gZ3VuZ2lcIDsKK+i7ouijnCA+IHRlbnBvXCA7CivlubPmmYIgPiBoZWlqaVwgOwor5YaG55ukID4gZW5iYW5cIDsKK+WBvembuyA+IGdpZGVuXCA7Civnmq7nm7ggPiBoaXNvdVwgOwor5biw5rivID4ga2lrb3VcIDsKK+i/lOatjCA+IGhlbmthXCA7CivliY3luqcgPiB6ZW56YVwgOwor5YWs56efID4ga291c29cIDsKK+eXqei6ryA+IHNvdWt1XCA7CivliIbmnKggPiBidW5naVwgOwor5q2j5ZOhID4gc2VpaW5cIDsKK+WGheeariA+IG5haWhpXCA7CivpgZPlrrYgPiBkb3VrYVwgOwor5qih56+EID4gbW9oYW5cIDsKK+iKveiDniA+IGdhaG91XCA7CivliIDmnrYgPiB0b3VrYVwgOwor6LyJ6I23ID4gc2Fpa2FcIDsKK+earueZrCA+IGhpemVuXCA7CivpgYrlsbEgPiB5dXNhblwgOwor5q2m5ZCNID4gYnVtZWlcIDsKK+WFqOenkSA+IHplbmthXCA7CivliqDlj7cgPiBrYWdvdVwgOwor6IqZ6JOJID4gZnV5b3VcIDsKK+W7g+WutiA+IGhhaWthXCA7CivlhaznpLogPiBrb3VqaVwgOwor5q275YWQID4gc2hpamlcIDsKK+ato+WQpiA+IHNlaWhpXCA7CivlupXmhI8gPiBzb2tvaVwgOwor6Ieq6aaWID4gamlzaHVcIDsKK+i7jeiomCA+IGd1bmtpXCA7CivojZLmt6sgPiBrb3VpblwgOwor5Yqj5YyWID4gcmVra2FcIDsKK+mBoOWkpyA+IGVuZGFpXCA7CivliKXmiLggPiBiZWtrb1wgOwor5q2T5ZacID4ga2Fua2lcIDsKK+WFt+ecvCA+IGd1Z2FuXCA7CivmrKHlrpggPiBqaWthblwgOwor55yp5pqIID4gbWVtYWlcIDsKK+i7jeimjyA+IGd1bmtpXCA7CivmrKHlrZAgPiBqaXNoaVwgOwor5q2m5YuyID4gYnVrdW5cIDsKK+W7tuWRvSA+IGVubWVpXCA7CivliqDli6IgPiBrYXNlaVwgOwor5YWD57SgID4gZ2Vuc29cIDsKK+atpuWLhyA+IGJ1eXV1XCA7Civmrablip8gPiBidWtvdVwgOwor5bu35ZCPID4gdGVpcmlcIDsKK+WGhueSsCA+IGVua2FuXCA7CivlsqnprZogPiBpd2FuYVwgOwor5Yid5omLID4gc2hvdGVcIDsKK+eah+elliA+IGtvdXNvXCA7CivlhKrnvo4gPiB5dXViaVwgOwor5YSS6ImvID4ganVnb25cIDsKK+WEkuiJriA+IGp1Z29uXCA7CivlhZDnq6UgPiBqaWRvdVwgOwor5q2T5ZG8ID4ga2Fua29cIDsKK+WKoOWIpCA+IGthaGFuXCA7Civlip/liKkgPiBrb3VyaVwgOwor6bOz5YewID4gaG91b3VcIDsKK+efpeS6iyA+IGNoaWppXCA7CivpgZPlpK4gPiBkb3VvdVwgOwor6LuN6KGjID4gZ3VuJydpXCA7CivliLbluqYgPiBzZWlkb1wgOwor5q2p5YW1ID4gaG9oZWlcIDsKK+iLseefpSA+IGVpY2hpXCA7CivlgZzpn7MgPiB0ZWlvblwgOwor5byV5L6LID4gaW5yZWlcIDsKK+eXtOipsSA+IGNoaXdhXCA7CivliqDlhqAgPiBrYWthblwgOwor6YCj5bqnID4gcmVuemFcIDsKK+iJpOijhSA+IGdpc291XCA7CivpgaDlnLAgPiBlbmNoaVwgOwor6I+v5aOHID4ga2FkYW5cIDsKK+eZu+enkSA+IHRvdWthXCA7Civnmb3npo0gPiBoYWtrYVwgOwor6YGO5aSnID4ga2FkYWlcIDsKK+iLm+eojiA+IGthemVpXCA7CivpgaDlm6AgPiBlbicnaW5cIDsKK+mBiuWlsyA+IHl1dWpvXCA7CivovJ3nt5ogPiBraXNlblwgOwor5YWl55u4ID4gaXJpYWlcIDsKK+WFjeennyA+IG1lbnNvXCA7CivoiovojI4gPiB6dWlraVwgOwor6I+T5a2QID4ga2FzaGlcIDsKK+W5suaIiCA+IGthbmthXCA7Civnlo7plosgPiBzb2thaVwgOwor5YmN5ammID4gemVucHVcIDsKK+WBj+mglyA+IGhlbnBhXCA7CivpgbfljJYgPiBzZW5nZVwgOwor6JC95LiLID4gcmFra2FcIDsKK+WFt+ePviA+IGd1Z2VuXCA7CivliqDkv7ggPiBrYWhvdVwgOwor5Ya35rCXID4gcmVpa2lcIDsKK+WEkuiAhSA+IGp1c2hhXCA7CivoiJfpgZMgPiBob2RvdVwgOwor5YWI56WWID4gc2Vuem9cIDsKK+iIqui3ryA+IGtvdXJvXCA7CivnmbrnoLQgPiBoYXBwYVwgOwor55Wz6Z+7ID4gam91aW5cIDsKK+ebuOajkiA+IGFpYm91XCA7Civlub3lvq4gPiB5dXViaVwgOwor6Iqz57SAID4gaG91a2lcIDsKK+W7g+WckiA+IGhhaWVuXCA7CivmraPkvqEgPiBzZWlrYVwgOwor6L+R5pmCID4ga2luamlcIDsKK+mtmuiCpSA+IGd5b2hpXCA7Civouo3otbcgPiB5YWtraVwgOwor6auY6YGgID4ga291ZW5cIDsKK+WJjeWkqyA+IHplbnB1XCA7CivoirHntIsgPiBrYW1vblwgOwor5YWD56WWID4gZ2Fuc29cIDsKK+WJsOWToSA+IGpvdWluXCA7CivoirHns7ggPiBrYXNoaVwgOwor55uX5rGXID4gbmVhc2VcIDsKK+WFrOeQhiA+IGtvdXJpXCA7CivmrabkurogPiBidWppblwgOwor6Iqx57KJID4ga2FmdW5cIDsKK+W4sOagoSA+IGtpa291XCA7CivoiJ7ouYggPiBidXRvdVwgOwor5bm+5bqmID4gaWt1ZG9cIDsKK+asoeWbniA+IGppa2FpXCA7CivlubTlv4wgPiBuZW5raVwgOwor6Iie6LiPID4gYnV0b3VcIDsKK+msseiSvCA+IHVzc291XCA7CivoiJ7ouIogPiBidXlvdVwgOwor5YaF54KOID4gbmFpZW5cIDsKK+i8quemjSA+IHJpbmthXCA7CivliJHlvpIgPiBrZWl0b1wgOwor5bm05b6MID4gbmVuZ29cIDsKK+mAo+WtkCA+IHJlbmppXCA7Civnm7jmnb8gPiBhaWJhblwgOwor5YmN5aC0ID4gemVuYmFcIDsKK+eUsOm6qSA+IGRlbmJ1XCA7Civlh7nmiYAgPiBvdXNob1wgOwor5YG96YCgID4gZ2l6b3VcIDsKK+W4sOadpSA+IGtpcmFpXCA7Civoi6bnlYwgPiBrdWdhaVwgOwor5YaN5ryUID4gc2FpZW5cIDsKK+W4sOadkSA+IGtpc29uXCA7CivluLjmmYIgPiBqb3VqaVwgOwor5bu25LyaID4gZW5rYWlcIDsKK+aso+WWnCA+IGtpbmtpXCA7CivpgoTku5ggPiBrYW5wdVwgOwor6YGL5Za2ID4gdW4nJ2VpXCA7Civoj5zlnJIgPiBzYWllblwgOwor5bm05bqmID4gbmVuZG9cIDsKK+mAruWknCA+IHRhaXlhXCA7CivpgIDluqcgPiB0YWl6YVwgOwor5Yip5a6zID4gcmlnYWlcIDsKK+iJseiLpiA+IGthbmt1XCA7CivmrKHlloQgPiBqaXplblwgOwor5Yip5a2QID4gcmlzaGlcIDsKK+iNt+aLhSA+IGthdGFuXCA7CivliKXlrrYgPiBiZWtrZVwgOwor6YG65L2cID4gaXNha3VcIDsKK+iNieahiCA+IHNvdWFuXCA7CivojZLmnKggPiBhcmFraVwgOwor5bKp6ZaTID4gaXdhbWFcIDsKK+W6reWckiA+IHRlaWVuXCA7Civpr6jms6IgPiBnZWloYVwgOwor5bm05beuID4gbmVuc2FcIDsKK+mvqOayuSA+IGdlaXl1XCA7CivoubbotbcgPiBrZWtraVwgOwor5YaG5rqAID4gZW5tYW5cIDsKK+iKseepgiA+IGthc3VpXCA7CivovrLmnJ8gPiBub3VraVwgOwor5Yik5a2QID4gaGFua29cIDsKK+iPr+WOsyA+IGtlZ29uXCA7CivpgaDlh7ogPiB0b29kZVwgOwor6YGL5ZG9ID4gdW5tZWlcIDsKK+WFteeBqyA+IGhlaWthXCA7Civnm6Pmn7sgPiBrYW5zYVwgOwor6I+v5Y2XID4ga2FuYW5cIDsKK+mBk+WMliA+IGRvdWtlXCA7CivmrYzku5kgPiBrYXNlblwgOwor6Lui576pID4gdGVuZ2lcIDsKK+asoeWPtyA+IGppZ291XCA7CivmrYzkurogPiBrYWppblwgOwor6auY6LK0ID4ga291a2lcIDsKK+mBjuWNiiA+IGthaGFuXCA7CivliIbluIMgPiBidW5wdVwgOwor55u45pKyID4gc3Vtb3VcIDsKK+iJtuiBniA+IGVuYnVuXCA7Civluo/lpY8gPiBqb3NvdVwgOwor6L+R5omAID4ga2luam9cIDsKK+WHoeaJkyA+IGJvbmRhXCA7Civlh7nlvaIgPiBvdWtlaVwgOwor6IiI6LW3ID4ga291a2lcIDsKK+iIjuiyuyA+IHNoYWhpXCA7CivpgY7li6QgPiBrYWtpblwgOwor6YCa5aScID4gdHN1eWFcIDsKK+mBjuWKtCA+IGthcm91XCA7Civoh6rpgrggPiBqaXRlaVwgOwor6YGL5YuiID4gdW5zZWlcIDsKK+W3qOazoiA+IGt5b2hhXCA7CivpgYvli5UgPiB1bmRvdVwgOwor6L6e5p+EID4gamloZWlcIDsKK+mBjuWJsCA+IGtham91XCA7CivnlZ3plpMgPiB1bmVtYVwgOwor6Ieq6YG4ID4gamlzZW5cIDsKK+i+nuaelyA+IGppcmluXCA7Civnm5vmnJ8gPiBzZWlraVwgOwor5bmz5a62ID4gaGVpa2VcIDsKK+mAo+WdkCA+IHJlbnphXCA7CivpgLjlk4EgPiBpcHBpblwgOwor6YGT5YW3ID4gZG91Z3VcIDsKK+mBjuWIhiA+IGthYnVuXCA7CivlubPlrokgPiBoZWlhblwgOwor5bm05a2jID4gbmVua2lcIDsKK+eahueEoSA+IGthaW11XCA7Civlh6HmhJogPiBib25ndVwgOwor5qmf5qeLID4ga2lrb3VcIDsKK+WIhuWykCA+IGJ1bmtpXCA7CivliY3lj6QgPiB6ZW5rb1wgOwor55S76aSFID4gZ2FiZWlcIDsKK+WFrOa8lCA+IGtvdWVuXCA7Civovp7mm7ggPiBqaXNob1wgOwor6YCg5ZySID4gem91ZW5cIDsKK+WGrOacnyA+IHRvdWtpXCA7Civpq5joqrwgPiBrb3VnaVwgOwor5Ymw5L2ZID4gam91eW9cIDsKK+W6tuWLmSA+IHNob211XCA7CivnlLvpoqggPiBnYWZ1dVwgOwor55ub5pmCID4gc2VpamlcIDsKK+WEgOevhCA+IGdpaGFuXCA7CivoirPnnIkgPiBob3ViaVwgOwor5Yid5aScID4gc2hveWFcIDsKK+WCjeimiyA+IG9rYW1pXCA7CivmqLnmtrIgPiBqdWVraVwgOwor5Yid5aSPID4gc2hva2FcIDsKK+W4jOacmyA+IGtpYm91XCA7Civlt6jmrakgPiBreW9ob1wgOwor5bm85aWzID4geW91am9cIDsKK+eUu+mhjCA+IGdhZGFpXCA7CivliIblrrYgPiBidW5rZVwgOwor5biM5pu4ID4ga2lzaG9cIDsKK+W4sOaKlSA+IGtpdG91XCA7CivlhqTmnokgPiBlbicnb3VcIDsKK+aouea1tyA+IGp1a2FpXCA7Civlub7lpJwgPiBpa3V5b1wgOwor5bm+5aSaID4gaWt1dGFcIDsKK+asoeWFhCA+IGppa2VpXCA7CivmrKHlhYMgPiBqaWdlblwgOwor6L+35a2QID4gbWFpZ29cIDsKK+iHqui7oiA+IGppdGVuXCA7CivmqZ/morAgPiBraWthaVwgOwor5bqn5Y+zID4gemF5dXVcIDsKK+W5u+WkoiA+IGdlbm11XCA7Civlu4nkvqEgPiByZW5rYVwgOwor5YWI54i2ID4gc2VucHVcIDsKK+mBoeS4iiA+IHNvam91XCA7CivmqZ/moLkgPiBraWtvblwgOwor5YG96KqTID4gZ2lzZWlcIDsKK+iIh+irliA+IHlvcm9uXCA7CivpgKDllrYgPiB6b3VlaVwgOwor5Yal5pqXID4gbWVpYW5cIDsKK+iIl+ijhSA+IGhvc291XCA7CivnlbDpg7cgPiBpa3lvdVwgOwor55S76Z2iID4gZ2FtZW5cIDsKK+WAjemfsyA+IGJhaW9uXCA7Civmo4vpoqggPiBraWZ1dVwgOwor55m654GrID4gaGFra2FcIDsKK+WBveioiCA+IGdpa2VpXCA7Civnm7jmhJsgPiBzb3VhaVwgOwor5YG96KiAID4gZ2lnZW5cIDsKK+WFieeElCA+IGtvdWVuXCA7Civlgbboqp4gPiBndXVnb1wgOwor5qmf5p2QID4ga2l6YWlcIDsKK+asoeS+vyA+IGppYmluXCA7CivpgKPlkbwgPiByZW5rb1wgOwor5bem5qeYID4gc2F5b3VcIDsKK+WBtuipoCA+IGd1dWVpXCA7CivprZTnpZ4gPiBtYWppblwgOwor5buK5LiLID4gcm91a2FcIDsKK+mpn+mbqCA+IHNodXV1XCA7Civnm7LmhJsgPiBtb3VhaVwgOwor6Iqx55O2ID4ga2FiaW5cIDsKK+WFieeCjiA+IGtvdWVuXCA7Civlho3moYggPiBzYWlhblwgOwor5YSA56S8ID4gZ2lyZWlcIDsKK+iHquizmyA+IGppc2FuXCA7CivpgKPlj6UgPiByZW5rdVwgOwor6Lev6aCtID4gcm90b3VcIDsKK+asoeS8miA+IGppa2FpXCA7Civov7flpKIgPiBtZWltdVwgOwor6Iux5rOVID4gZWlob3VcIDsKK+iHquiyqSA+IGppaGFuXCA7CivmqZ/mmbogPiBraWNoaVwgOwor6Ium5riLID4ga3VqdXVcIDsKK+WBveijhSA+IGdpc291XCA7Civnm7jlv5wgPiBzb3VvdVwgOwor5qyh5LujID4gamlkYWlcIDsKK+i7jee0gCA+IGd1bmtpXCA7CivlsL7psK0gPiBvYmlyZVwgOwor5bir5oGpID4gc2hpb25cIDsKK+WFrOatpiA+IGtvdWJ1XCA7Civou6Lnp7sgPiB0ZW4nJ2lcIDsKK+i3r+mdoiA+IHJvbWVuXCA7CivlsqHovrogPiBva2FiZVwgOwor5YGJ6LmfID4gaXNla2lcIDsKK+i7ouenkSA+IHRlbmthXCA7Civoh4Dpg6ggPiBkZW5idVwgOwor5YWa5rS+ID4gdG91aGFcIDsKK+mBi+S4iiA+IHVuam91XCA7Civmpa3oi6YgPiBnb3VrdVwgOwor5bGk6ZuyID4gc291dW5cIDsKK+W6p+WDjyA+IHphem91XCA7CivluLfluZUgPiBpYmFrdVwgOwor6YCg5YyWID4gem91a2FcIDsKK+W4t+W4syA+IGljaG91XCA7Civoh6roroMgPiBqaXNhblwgOwor5Yip5Y+jID4gcmlrb3VcIDsKK+apn+aVjyA+IGtpYmluXCA7Civoh6roraYgPiBqaWtlaVwgOwor5YGJ6LehID4gaXNla2lcIDsKK+WFpeatryA+IGlyZWJhXCA7CivlurbkuosgPiBzaG9qaVwgOwor6a2U552hID4gbWFzdWlcIDsKK+aoquatuyA+IG91c2hpXCA7Civou4znr4QgPiBraWhhblwgOwor5YaG5pysID4gZW5wb25cIDsKK+WEkueUnyA+IGp1c2VpXCA7Civlt6Hmn7sgPiBqdW5zYVwgOwor5YaN5pigID4gc2FpZWlcIDsKK+W6teS4uyA+IGFuc2h1XCA7Civoh6roqo0gPiBqaW5pblwgOwor5YKZ6I2SID4gYmlrb3VcIDsKK+W4sOW4hiA+IGtpaGFuXCA7CivoirHniYcgPiBrYWhlblwgOwor6ay856WeID4ga2lqaW5cIDsKK+iGs+mDqCA+IHplbmJ1XCA7CivovLjmtrIgPiB5dWVraVwgOwor55SY6ZyyID4ga2Fucm9cIDsKK+aqgOW+kiA+IGRhbnRvXCA7CivliKnliIMgPiByaWppblwgOwor5Yip5YiAID4gcml0b3VcIDsKK+eVsOixoSA+IGlzaG91XCA7CivojILmnpcgPiBtb3JpblwgOwor5L+d6aSKID4gaG95b3VcIDsKK+WFieazoiA+IGtvdWhhXCA7Civot53pm6IgPiBreW9yaVwgOwor5bem5pa5ID4gc2Fob3VcIDsKK+W6p+S5lyA+IHpham91XCA7CivojYnlurUgPiBzb3VhblwgOwor5qi55p6XID4ganVyaW5cIDsKK+mtlOeVjCA+IG1ha2FpXCA7CivlubPlkowgPiBoZWl3YVwgOwor55yB5a2XID4gc2VpamlcIDsKK+WFt+aciSA+IGd1eXV1XCA7CivpsKXlr6EgPiBrYW5rYVwgOwor5YWs5qGIID4ga291YW5cIDsKK+iHquijvSA+IGppc2VpXCA7Civlh6blpbMgPiBzaG9qb1wgOwor5bid5bqnID4gdGVpemFcIDsKK+WIkeWQjyA+IGtlaXJpXCA7CivpgIHlj5cgPiBzb3VqdVwgOwor5beu5pCNID4gc2Fzb25cIDsKK+aooeanmCA+IG1veW91XCA7CivmqZ/miY0gPiBraXNhaVwgOwor55Wz6KqeID4gam91Z29cIDsKK+WHoeWkqyA+IGJvbnB1XCA7Civlr7/pvaIgPiBqdXJlaVwgOwor5YWD5rCXID4gZ2Vua2lcIDsKK+WIu+S4iyA+IGtva2thXCA7CivpgIDljJYgPiB0YWlrYVwgOwor5YeG5bCJID4ganVuJydpXCA7Civlhrblt6UgPiB5YWtvdVwgOwor5bir5a62ID4gc2hpa2FcIDsKK+aoquafhCA+IG91aGVpXCA7CivlhbjmlYUgPiB0ZW5rb1wgOwor6Imy55uuID4gaXJvbWVcIDsKK+WIqeS+vyA+IHJpYmVuXCA7CivlhazmmocgPiBrb3VrYVwgOwor5YKZ6ICDID4gYmlrb3VcIDsKK+WIpeWAiyA+IGJla2tvXCA7CivnlLvpgZMgPiBnYWRvdVwgOwor6Lev6YqAID4gcm9naW5cIDsKK+W5vOWFkCA+IHlvdWppXCA7CivovrLlrrYgPiBub3VrYVwgOwor6I2J5bGlID4gem91cmlcIDsKK+S/nemZuiA+IGhva2VuXCA7CivlubTliKkgPiBuZW5yaVwgOwor6Iux5pu4ID4gZWlzaG9cIDsKK+WFreaXpSA+IG11aWthXCA7CivliIbljLogPiBidW5rdVwgOwor5YWr5pelID4geW91a2FcIDsKK+WIhuWMliA+IGJ1bmthXCA7CivlhazmlrkgPiBrdWJvdVwgOwor5qiq5pq0ID4gb3Vib3VcIDsKK+WGpeW6nCA+IG1laWZ1XCA7CivliJHlhbcgPiBrZWlndVwgOwor5ben5oqAID4ga291Z2lcIDsKK+iLpuadryA+IGt1aGFpXCA7Civoi7HmmI4gPiBlaW1laVwgOwor5qqA5a62ID4gZGFua2FcIDsKK+aooeacrCA+IG1vaG9uXCA7CivlhaXml6UgPiBpcmloaVwgOwor6Ieq6JamID4gamlzZW5cIDsKK+WwvumVtyA+IG9uYWdhXCA7CivovrLlqaYgPiBub3VmdVwgOwor5bCP6ayiID4ga29iaW5cIDsKK+aji+mBkyA+IGtpZG91XCA7CivliKTkuosgPiBoYW5qaVwgOwor5YiG5YipID4gYnVucmlcIDsKK+iLseaWrSA+IGVpZGFuXCA7CivlgoXogrIgPiBmdWlrdVwgOwor5qiq5patID4gb3VkYW5cIDsKK+iLseaWhyA+IGVpYnVuXCA7Civlh6HlmaggPiBib25raVwgOwor6Iux5pWwID4gZWlzdXVcIDsKK+aoquaWhyA+IG91YnVuXCA7CivlhrTlr5IgPiBnb2thblwgOwor6YCU5LiKID4gdG9qb3VcIDsKK+Wxsei7iiA+IGRhc2hpXCA7CivluIPlt74gPiBmdWtpblwgOwor55u45aC0ID4gc291YmFcIDsKK+ebm+WutCA+IHNlaWVuXCA7CivpqJLpn7MgPiBzb3VvblwgOwor55qG5peiID4ga2Fpa2lcIDsKK+WFmuaYryA+IHRvdXplXCA7CivovrLlpbQgPiBub3Vkb1wgOwor55So6YCUID4geW91dG9cIDsKK+WFieaghCA+IGtvdWVpXCA7CivojLblsYsgPiBjaGF5YVwgOwor6Iqz5rCXID4gaG91a2lcIDsKK+i8v+acmyA+IHlvYm91XCA7CivovrLlpKsgPiBub3VmdVwgOwor6Ieq6JGXID4gamljaG9cIDsKK+WFkOabuSA+IGppc291XCA7Civlh7rliY0gPiBkZW1hZVwgOwor5bmz5L6hID4gaGVpa2FcIDsKK+Wwj+mmrCA+IGtvdW1hXCA7CivmqZ/lt6cgPiBraWtvdVwgOwor5YiR5L2ZID4ga2VpeW9cIDsKK+iNt+WPsCA+IG5pZGFpXCA7CivnlJjphaIgPiBhbWF6dVwgOwor5Yas5a2jID4gdG91a2lcIDsKK+iLl+acqCA+IG5hZWdpXCA7CivlhbXmiIggPiBoZWlrYVwgOwor5bm55LqLID4ga2FuamlcIDsKK+mnu+mmrCA+IGthbmJhXCA7CivnlLvos5sgPiBnYXNhblwgOwor55m95peXID4gaGFra2lcIDsKK+mAgeS7mCA+IHNvdWZ1XCA7CivlhoXlv5wgPiBuYWlvdVwgOwor5YeN5ZyfID4gdG91ZG9cIDsKK+W4r+WcsCA+IG9iaWppXCA7Civlho3luqYgPiBzYWlkb1wgOwor6L665ZyfID4gaGVuZG9cIDsKK+WwvumMoCA+IGJpam91XCA7CivliJHkuosgPiBrZWlqaVwgOwor5YaG5by+ID4gZW5kYW5cIDsKK+ebruWeoiA+IG1lYWthXCA7CivnnLzkuIsgPiBnYW5rYVwgOwor5YaN5biwID4gc2Fpa2lcIDsKK+WGt+WkjyA+IHJlaWthXCA7Civov5Hlj6QgPiBraW5rb1wgOwor5bex5bezID4ga2lzaGlcIDsKK+i7vea1riA+IGtlaWZ1XCA7CivojZLlnJ8gPiBrb3Vkb1wgOwor6Iub5paCID4ga2FyZW5cIDsKK+i7oueCiSA+IHRlbnJvXCA7CivlhajmiLggPiB6ZW5rb1wgOwor6Iub5pS/ID4ga2FzZWlcIDsKK+eUu+iumiA+IGdhc2FuXCA7CivnlLvoroMgPiBnYXNhblwgOwor6L6y5ZySID4gbm91ZW5cIDsKK+W3u+WwviA+IGthbmJpXCA7Civnm5vlpI8gPiBzZWlrYVwgOwor5L2z6bqXID4ga2FyZWlcIDsKK+iJtueEtiA+IGVuemVuXCA7Civoi7HmiY0gPiBlaXNhaVwgOwor6IWw6YOoID4geW91YnVcIDsKK+i7veayuSA+IGtlaXl1XCA7CivluYfliqkgPiBob3Vqb1wgOwor5YaF5biRID4gbmFpZG9cIDsKK+eUu+irhyA+IGdhZGFuXCA7CivlhpnlrZcgPiBzaGFqaVwgOwor5L6b6aSKID4ga3V5b3VcIDsKK+WAkuiqniA+IHRvdWdvXCA7Civnmbrmj64gPiBoYWtraVwgOwor6ay854GrID4gb25pYmlcIDsKK+mtmuayuSA+IGd5b3l1XCA7CivluJ3lnJ8gPiB0ZWlkb1wgOwor5qmf5auMID4ga2lnZW5cIDsKK+eUn+i1tyA+IHNlaWtpXCA7CivoirHmoqggPiBrYXJpblwgOwor5YWM5o+bID4gZGFrYW5cIDsKK+WIgOS4iyA+IHRvdWthXCA7CivprZTms5UgPiBtYWhvdVwgOwor6Ium5oimID4ga3VzZW5cIDsKK+WCt+eXjSA+IHNob3VpXCA7CivlgJnoo5wgPiBrb3Vob1wgOwor5bi45YuZID4gam91bXVcIDsKK+W4sOWPgiA+IGtpc2FuXCA7Civlt6blsrggPiBzYWdhblwgOwor5YaG5bGFID4gbWFkb2lcIDsKK+earuWxpCA+IGhpc291XCA7CivmqLnlubkgPiBqdWthblwgOwor6Ium5oWuID4ga3VyeW9cIDsKK+mmrOm9oiA+IGJhcmVpXCA7CivkvZnpvaIgPiB5b3JlaVwgOwor6Lu95qmfID4ga2Vpa2lcIDsKK+eXlOeYuyA+IGppcm91XCA7Civlt6jlr4wgPiBreW9mdVwgOwor5YaN5auBID4gc2Fpa2FcIDsKK+WGheWutCA+IG5haWVuXCA7Civoh6rnvbIgPiBqaXNob1wgOwor5YWs5bqrID4ga291a29cIDsKK+WCmeegsiA+IGJpaG91XCA7Civlhazluo8gPiBrb3Vqb1wgOwor6Ium5oOFID4ga3Vqb3VcIDsKK+iMtuWckiA+IGNoYWVuXCA7Civoi6bmgrYgPiBrdW1vblwgOwor6Ium5oKpID4ga3Vub3VcIDsKK+eVsOiHrSA+IGlzaHV1XCA7CivnlKjoqp4gPiB5b3Vnb1wgOwor5bem5a6YID4gc2FrYW5cIDsKK+ankOaouSA+IGthaWp1XCA7CivlhpflpJogPiBqb3V0YVwgOwor6Luf5rS+ID4gbmFucGFcIDsKK+WGpeWcnyA+IG1laWRvXCA7CivlhazluIMgPiBrb3VmdVwgOwor55Ww6IW5ID4gaWZ1a3VcIDsKK+WFiOaJiyA+IHNlbnRlXCA7Civlhazlt64gPiBrb3VzYVwgOwor6Iy25ZmoID4gY2hha2lcIDsKK+iHk+iFkSA+IHpvdWZ1XCA7Civov5Hkvo0gPiBraW5qaVwgOwor6ayx5rueID4gdXR0YWlcIDsKK+ahgummrCA+IGtlaW1hXCA7Civov5HkvLwgPiBraW5qaVwgOwor6L+U5LuYID4gaGVucHVcIDsKK+mrmOelliA+IGtvdXNvXCA7CivmooXphaIgPiB1bWV6dVwgOwor6L6y5YuZID4gbm91bXVcIDsKK+W4uOWCmSA+IGpvdWJpXCA7Civoi6blvbkgPiBrdWVraVwgOwor5biD5ZujID4gZnV0b25cIDsKK+i/lOS6iyA+IGhlbmppXCA7CivoiIznpo0gPiB6ZWtrYVwgOwor5YW15a62ID4gaGVpa2FcIDsKK+i/keS6iyA+IGtpbmppXCA7CivltZDmsJcgPiByYW5raVwgOwor6a6u5bqmID4gc2VuZG9cIDsKK+iLm+aApyA+IGthc2VpXCA7CivmorXoqp4gPiBib25nb1wgOwor6aiw6LK0ID4gdG91a2lcIDsKK+WxpeihjCA+IHJpa291XCA7CivnnIzkuIsgPiBrZW5rYVwgOwor5YaF5aWlID4gbmFpb3VcIDsKK+iFlei8qiA+IHVkZXdhXCA7Civotbfpm7sgPiBraWRlblwgOwor5bir5YSSID4gc2hpanVcIDsKK+Wutum0qCA+IGFoaXJ1XCA7Civlr53poZQgPiBuZWdhb1wgOwor6L6y5YW3ID4gbm91Z3VcIDsKK+W4guWWtiA+IHNoaWVpXCA7CivlhoblorMgPiBlbnB1blwgOwor6Imy5rCXID4gaXJva2VcIDsKK+W3peWkqyA+IGtvdWZ1XCA7Civovp7ljrsgPiBqaWt5b1wgOwor6Lui5qmfID4gdGVua2lcIDsKK+msvOatryA+IG9uaWJhXCA7CivlsIHpjpYgPiBmdXVzYVwgOwor6Iux5bGvID4gZWl0b25cIDsKK+WFrOWuiSA+IGtvdWFuXCA7CivlsJbpg6ggPiBzZW5idVwgOwor6L6t5YW4ID4gaml0ZW5cIDsKK+W4uOS6iyA+IGpvdWppXCA7CivlhajlrrYgPiB6ZW5rYVwgOwor55u45Ly8ID4gc291amlcIDsKK+WBiee4viA+IGlzZWtpXCA7Civlt6XloLQgPiBrb3ViYVwgOwor55m65biDID4gaGFwcHVcIDsKK+W4sOS7uyA+IGtpbmluXCA7CivlhYTlvowgPiBhbmlnb1wgOwor55u45LqSID4gc291Z29cIDsKK+WAtuiAhSA+IGt1c2hhXCA7Civkv5rorKEgPiByaXlvdVwgOwor5YWJ5bqmID4ga291ZG9cIDsKK+mms+mnhiA+IGNoaWt1XCA7Civkv5roq7ogPiByaWdlblwgOwor5YWI5bqmID4gc2VuZG9cIDsKK+S/juixhiA+IHNvdG91XCA7Civlhpflk6EgPiBqb3VpblwgOwor6LuN5q2MID4gZ3Vua2FcIDsKK+eUn+idiyA+IGtpcm91XCA7CivlhYvlt7EgPiBrb2traVwgOwor5YaF5ZugID4gbmFpaW5cIDsKK+i3m+ihjCA+IGhha291XCA7Civnm7LkuoAgPiBtb3VraVwgOwor5bir5LqLID4gc2hpamlcIDsKK+iLpuWvkiA+IGt1a2FuXCA7Civovp7lhbggPiBqaXRlblwgOwor55ar55eiID4gZWtpcmlcIDsKK+ebm+WEgCA+IHNlaWdpXCA7CivluILljLogPiBzaGlrdVwgOwor6aas6aaWID4gYmFzaHVcIDsKK+S/muiogCA+IHJpZ2VuXCA7CivkvZnpppkgPiB5b2tvdVwgOwor55m75bGxID4gdG96YW5cIDsKK+eWteeRlSA+IHNoaWthXCA7Civou43mqZ8gPiBndW5raVwgOwor6Iux5ae/ID4gZWlzaGlcIDsKK+WGl+WPpSA+IGpvdWt1XCA7CivovrLkuosgPiBub3VqaVwgOwor5qip5aiBID4ga2VuJydpXCA7Civnm67kuIsgPiBtb2trYVwgOwor5bau5bKoID4ga2Vuc29cIDsKK+alreeBqyA+IGdvdWthXCA7Civoh6rnpL4gPiBqaXNoYVwgOwor55aj55eUID4gaWJvamlcIDsKK+S9memiqCA+IHlvZnV1XCA7CivmqZ/li5UgPiBraWRvdVwgOwor5L2Z6aGeID4geW9ydWlcIDsKK+WFkOWtqyA+IGppc29uXCA7Civnm6PkuosgPiBrYW5qaVwgOwor6aas6aCtID4gYmF0b3VcIDsKK+WAuee0oCA+IGtlbnNvXCA7CivnlJjol7sgPiBhbWFtb1wgOwor55qH5aaDID4ga291aGlcIDsKK+WwvuihjCA+IGJpa291XCA7CivnmoflpbMgPiBrb3Vqb1wgOwor5a626aKoID4ga2FmdXVcIDsKK+W3peWToSA+IGtvdWluXCA7CivlhbXlmaggPiBoZWlraVwgOwor6Im25pu4ID4gZW5zaG9cIDsKK+WEquW8pyA+IHl1dWtvXCA7CivlhazlnJIgPiBrb3VlblwgOwor6L6e5Lu7ID4gamluaW5cIDsKK+ebm+S6iyA+IHNlaWppXCA7Civovp7ku6QgPiBqaXJlaVwgOwor5qOJ6IqxID4gbWVua2FcIDsKK+apn+WGhSA+IGtpbmFpXCA7Civlhazlm7MgPiBrb3V6dVwgOwor5YW15Za2ID4gaGVpZWlcIDsKK+eUsOiIjiA+IGluYWthXCA7Civlt6blj7MgPiBzYXl1dVwgOwor5qmf5YWIID4ga2lzZW5cIDsKK+WFqOWcnyA+IHplbmRvXCA7Civlhajlm7MgPiB6ZW56dVwgOwor6IOv6ZaTID4ga29rYW5cIDsKK+eVsOensCA+IGlzaG91XCA7CivnlLvogZYgPiBnYXNlaVwgOwor5YWs5ZmoID4ga291a2lcIDsKK+S9jumfsyA+IHRlaW9uXCA7Civoh6rnnIEgPiBqaXNlaVwgOwor5biM5LujID4ga2lkYWlcIDsKK+i+nuS4liA+IGppc2VpXCA7CivlhYjlqaYgPiBzZW5wdVwgOwor6LuM5p2hID4ga2lqb3VcIDsKK+Wwj+ixhiA+IGF6dWtpXCA7CivlhbXlk6EgPiBoZWlpblwgOwor5qGI6YWNID4gYW5iYWlcIDsKK+WutumbuyA+IGthZGVuXCA7CivlhoXli5kgPiBuYWltdVwgOwor5bCK6LK0ID4gc29ua2lcIDsKK+W4guS+oSA+IHNoaWthXCA7Civlt67liIYgPiBzYWJ1blwgOwor5YWs5Za2ID4ga291ZWlcIDsKK+WGheWKqSA+IG5haWpvXCA7Civnk6bop6MgPiBnYWthaVwgOwor5Yag5L2NID4ga2FuJydpXCA7Civoi7HlmbggPiBlaXRvblwgOwor5qKF6KaLID4gdW1lbWlcIDsKK+W3peWLmSA+IGtvdW11XCA7CivmqKHlnosgPiBtb2tlaVwgOwor5biM5LiWID4ga2lzZWlcIDsKK+aghOmkiiA+IGVpeW91XCA7Civkv5jomZwgPiBmdXJ5b1wgOwor6a2U5omLID4gbWFzaHVcIDsKK+eUn+iKsSA+IHNlaWthXCA7Civlgb3niYggPiBnaWhhblwgOwor5L2O6ZuyID4gdGVpdW5cIDsKK+WFiOWmoyA+IHNlbnBpXCA7CivluIPku6QgPiBmdXJlaVwgOwor5beo5YipID4ga3lvcmlcIDsKK+eZveWgiiA+IGhha3VhXCA7Civmo4vogZYgPiBraXNlaVwgOwor5YWI5aSrID4gemVucHVcIDsKK+WFvOWLmSA+IGtlbm11XCA7CivmqZ/kvZMgPiBraXRhaVwgOwor55SY6IumID4ga2Fua3VcIDsKK+mmmemcsiA+IGtvdXJvXCA7Civpq5jngokgPiBrb3Vyb1wgOwor55m75Z+OID4gdG9qb3VcIDsKK+i7jeaXlyA+IGd1bmtpXCA7CivkvbPphrggPiBrYWpvdVwgOwor6Lev6IKpID4gcm9rZW5cIDsKK+apn+S8miA+IGtpa2FpXCA7CivkvLzpoZQgPiBuaWdhb1wgOwor55Sy576FID4ga291cmFcIDsKK+WutumWgCA+IGthbW9uXCA7Civoh6rnlLEgPiBqaXl1dVwgOwor5qOE6IOMID4ga2loYWlcIDsKK+S+v+ihoyA+IGJlbicnaVwgOwor5YaG5YWJID4gZW5rb3VcIDsKK+iHqueUqCA+IGppeW91XCA7Civoh6rnlJ8gPiBqaXNlaVwgOwor5L2/6YCUID4gc2hpdG9cIDsKK+i7veW+riA+IGtlaWJpXCA7CivlhbXljKogPiBoZWloaVwgOwor5L2z6YWSID4ga2FzaHVcIDsKK+W3peWFtyA+IGtvdWd1XCA7CivnmbvlnYIgPiB0b2hhblwgOwor5a+M6YmxID4gZnVrb3VcIDsKK+WFrOWQjyA+IGtvdXJpXCA7CivlhoXlhIAgPiBuYWlnaVwgOwor5L6u6KiAID4gYnVnZW5cIDsKK+mojuihjCA+IGtpa291XCA7CivovL/lnLAgPiB5b2NoaVwgOwor5bu244CFID4gZW4nJ2VuXCA7Civmo4TogIEgPiBraXJvdVwgOwor6Iq45a2QID4gZ2Vpa29cIDsKK+iDjOmboiA+IGhhaXJpXCA7Civlt6blgr4gPiBzYWtlaVwgOwor5L+d6I+MID4gaG9raW5cIDsKK+apn+S4iiA+IGtpam91XCA7CivlhazljbAgPiBrb3VpblwgOwor6LyU5bCOID4gaG9kb3VcIDsKK+WFq+WNpiA+IGhha2tlXCA7Civou73luqYgPiBrZWlkb1wgOwor5be05Lq6ID4gaGFqaW5cIDsKK+eUu+e0mSA+IGdhc2hpXCA7Civoi7HlkI0gPiBlaW1laVwgOwor6IW56IWUID4gZnVra29cIDsKK+WFrOWLnyA+IGtvdWJvXCA7Civlhazli5kgPiBrb3VtdVwgOwor55Wq55uuID4gYmFubWVcIDsKK+WFmuWToSA+IHRvdWluXCA7CivlhoXkvo0gPiBuYWlqaVwgOwor5YW85YKZID4ga2VuYmlcIDsKK+msvOaJjSA+IGtpc2FpXCA7Civlr4Tph5EgPiBraWtpblwgOwor6LWw6LevID4gc291cm9cIDsKK+mtlOW8viA+IG1hZGFuXCA7CivlsqHnm64gPiBva2FtZVwgOwor5a6Y6ZyAID4ga2FuanVcIDsKK+WEgOW9oiA+IGdpa2VpXCA7CivlhKrlqYkgPiB5dXVlblwgOwor55Ge6ZuyID4genVpdW5cIDsKK+mrmOa4qSA+IGtvdW9uXCA7CivlsL7oirEgPiBvYmFuYVwgOwor5a++6KmxID4gdGFpd2FcIDsKK+S8nemmrCA+IHRlbm1hXCA7CivovY3lj4kgPiB0ZXNzYVwgOwor5L6d6KiXID4gaXRha3VcIDsKK+iEs+ijoSA+IG5vdXJpXCA7CivmqKnljJYgPiBnb25nZVwgOwor6ISz6KOPID4gbm91cmlcIDsKK+iLpuWQnyA+IGt1Z2luXCA7CivoirjlppMgPiBnZWlnaVwgOwor6Lev57eaID4gcm9zZW5cIDsKK+i1pOi6qyA+IGFrYW1pXCA7CivlhbXlgpkgPiBoZWliaVwgOwor5YaF5LqLID4gbmFpamlcIDsKK+eUmOe+jiA+IGthbmJpXCA7Civlr4zovrIgPiBmdW5vdVwgOwor5L+u576FID4gc2h1cmFcIDsKK+iKpeWtkCA+IGtlc2hpXCA7CivnlpHngrkgPiBnaXRlblwgOwor5bel5LqLID4ga291amlcIDsKK+aoveS/jiA+IHNvbnNvXCA7Civkvo3orJsgPiBqaWtvdVwgOwor6LuN5omLID4gZ3VudGVcIDsKK+aoqeWIqSA+IGtlbnJpXCA7CivkvJrpo7IgPiBrYWlpblwgOwor5YW45L6NID4gdGVuamlcIDsKK+WFrOWEgCA+IGtvdWdpXCA7CivlronpnZkgPiBhbnNlaVwgOwor6aeF6LevID4gZWtpcm9cIDsKK+WEkuWumCA+IGp1a2FuXCA7CivlhaXlhoUgPiBqdWRhaVwgOwor5YWa5YuZID4gdG91bXVcIDsKK+WFt+S9kyA+IGd1dGFpXCA7Civnmbrlj6UgPiBob2trdVwgOwor5L216LW3ID4gaGVpa2lcIDsKK+msseaGpCA+IHVwcHVuXCA7Civoi6blirQgPiBrdXJvdVwgOwor5L2z6LajID4ga2FzaHVcIDsKK+anmOWtkCA+IHlvdXN1XCA7Civkv53ogrIgPiBob2lrdVwgOwor55S756i/ID4gZ2Frb3VcIDsKK+WxseeqqSA+IHNhbmthXCA7CivkvovoqbEgPiByZWl3YVwgOwor5YWF5ZOhID4ganV1aW5cIDsKK+iKseWjhyA+IGthZGFuXCA7CivlhajlgpkgPiB6ZW5iaVwgOwor5YWa5YipID4gdG91cmlcIDsKK+i4j+egtCA+IHRvdWhhXCA7CivlraTpq5ggPiBrb2tvdVwgOwor6Ieq54KKID4gamlzdWlcIDsKK+alreaenCA+IGdvdWthXCA7CivkvbPos5MgPiBrYWhpblwgOwor55Sf57O4ID4ga2lpdG9cIDsKK+WFteS6iyA+IGhlaWppXCA7CivlhYjlj6QgPiBzZW5rb1wgOwor5qih5YaZID4gbW9zaGFcIDsKK+WDp+W+kiA+IHNvdXRvXCA7Civog4Ppj6EgPiBpa3lvdVwgOwor6auY5q2MID4ga291a2FcIDsKK+S+i+imjyA+IHJlaWtpXCA7Civpq5jmrKEgPiBrb3VqaVwgOwor55aO5ryPID4gc29yb3VcIDsKK+WuiemWkSA+IGFua2FuXCA7CivmqLnkuIogPiBqdWpvdVwgOwor5L2Z6LypID4geW9oYWlcIDsKK+aiheiKsSA+IGJhaWthXCA7CivlhIDlrrkgPiBnaXlvdVwgOwor55Sw56efID4gZGVuc29cIDsKK+WDp+W6tSA+IHNvdWFuXCA7Civppqzou4ogPiBiYXNoYVwgOwor5YWs5LqLID4ga291amlcIDsKK+WFiOWLmSA+IHNlbm11XCA7Civkv7rnrYkgPiBvcmVyYVwgOwor5a+M6LK0ID4gZnVra2lcIDsKK+WvoeiogCA+IGthZ2VuXCA7Civpppbpg70gPiBzaHV0b1wgOwor5qih5YCjID4gbW9ob3VcIDsKK+WvjOixqiA+IGZ1Z291XCA7CivppZHppYkgPiBraWtpblwgOwor6aas6LmEID4gYmF0ZWlcIDsKK+i3teelmiA+IHNlbnNvXCA7Civot6/nqIsgPiByb3RlaVwgOwor5a+E6LSIID4ga2l6b3VcIDsKK+S9k+i6ryA+IHRhaWt1XCA7Civnl7TmhJogPiBjaGlndVwgOwor6IOM6YOoID4gaGFpYnVcIDsKK+S/nee3miA+IGhvc2VuXCA7Civoi7HkuLsgPiBlaXNodVwgOwor5a2j6aGMID4ga2lkYWlcIDsKK+WFg+WIqSA+IGdlbnJpXCA7CivkvbXoqJggPiBoZWlraVwgOwor5YCr55CGID4gcmlucmlcIDsKK+i7iuW6qyA+IHNoYWtvXCA7CivogqHplpMgPiBrb2thblwgOwor55Sj56eRID4gc2Fua2FcIDsKK+Wvk+ipsSA+IGd1dXdhXCA7CivkvbPoqIAgPiBrYWdlblwgOwor6Ieq5rWEID4gamlqb3VcIDsKK+eWj+awtCA+IHNvc3VpXCA7Civnlo7msLQgPiBzb3N1aVwgOwor5L2Z6LKhID4geW96YWlcIDsKK+iEvuiHnyA+IGhpem91XCA7CivlrZDppqwgPiBrb3VtYVwgOwor6IS+6IeTID4gaGl6b3VcIDsKK+WDp+WwvCA+IHNvdW5pXCA7CivnmbrkvZwgPiBob3NzYVwgOwor6Lui5auBID4gdGVua2FcIDsKK+iHquayuyA+IGppY2hpXCA7CivnmZLlkIggPiB5dWdvdVwgOwor5YWF5YKZID4ganV1YmlcIDsKK+WDp+WvuiA+IHNvdWppXCA7CivohL7ohasgPiBoaXNodVwgOwor6auY5p62ID4ga291a2FcIDsKK+WwvuexoCA+IGJpcm91XCA7Civnl5vmiYsgPiBpdGFkZVwgOwor55m95LqcID4gaGFrdWFcIDsKK+WDp+WutiA+IHNvdWthXCA7CivlrrbosqEgPiBrYXphaVwgOwor6Lui5amGID4gdGVuYmFcIDsKK+WBpeatqSA+IGtlbnBvXCA7CivprLzlrZAgPiBvbmlnb1wgOwor5qWK5p6dID4geW91amlcIDsKK+WxleekuiA+IHRlbmppXCA7CivlrpjpgJQgPiBrYW50b1wgOwor6Ieq5rCRID4gamltaW5cIDsKK+S/neeuoSA+IGhva2FuXCA7CivmoITou6IgPiBlaXRlblwgOwor5qSc5rOiID4ga2VucGFcIDsKK+S7rumhjCA+IGthZGFpXCA7CivlrZfpnaIgPiBqaW1lblwgOwor6Lev55ukID4gcm9iYW5cIDsKK+WFg+S+oSA+IGdlbmthXCA7CivoiLXmiYsgPiBkYXNodVwgOwor5a6P6YGgID4ga291ZW5cIDsKK+WtkOmfsyA+IHNoaWluXCA7CivoiablsL4gPiBrYW5iaVwgOwor5L2Z6KuHID4geW9kYW5cIDsKK+WEgOWeiyA+IGdpa2VpXCA7Civlr4zoo5UgPiBmdXl1dVwgOwor5qeL5ZuzID4ga291enVcIDsKK+eUo+edgCA+IHVidWdpXCA7CivlgY/ms6IgPiBoZW5oYVwgOwor6ama55WwID4ga3lvdWlcIDsKK+WBveacrCA+IGdpaG9uXCA7Civoibblp78gPiBlbnNoaVwgOwor5YSq5YipID4geXV1cmlcIDsKK+alteaEjyA+IGdva3VpXCA7Civku67pnaIgPiBrYW1lblwgOwor5YG95pu4ID4gZ2lzaG9cIDsKK+Wyoea5ryA+IG9rYXl1XCA7Civmo4vnlYwgPiBraWthaVwgOwor5L+d56iOID4gaG96ZWlcIDsKK+S9meioiCA+IHlva2VpXCA7Civlg4Xlt64gPiBraW5zYVwgOwor5YWE5LqLID4ga2VpamlcIDsKK+i6r+W5uSA+IGt1a2FuXCA7Civlgr7luqYgPiBrZWlkb1wgOwor5L+v556wID4gZnVrYW5cIDsKK+agoeimjyA+IGtvdWtpXCA7Civoh6jmqZ8gPiByaW5raVwgOwor6IKp6YOoID4ga2VuYnVcIDsKK+iJh+W6qyA+IHRlaWtvXCA7CivlsIrogIUgPiBzb25qYVwgOwor6Leh55uuID4gYXRvbWVcIDsKK+i3r+eUqCA+IHJveW91XCA7CivlrrboqJMgPiBrYWt1blwgOwor5a2X6ZaTID4gamlrYW5cIDsKK+WutuioiCA+IGtha2VpXCA7CivoirHlhqAgPiBrYWthblwgOwor5L2O6KqeID4gdGVpZ29cIDsKK+Wun+iyuyA+IGppcHBpXCA7Civlgr7lt64gPiBrZWlzYVwgOwor55S354yrID4gb25la29cIDsKK+eUpueUnyA+IHNvc2VpXCA7CivotbfojYkgPiBraXNvdVwgOwor5p626ZaTID4ga2FrYW5cIDsKK+S9meijlSA+IHlveXV1XCA7CivltanlkbwgPiBzdXVrb1wgOwor5a6Y6LK7ID4ga2FucGlcIDsKK+mkiumviSA+IHlvdXJpXCA7Civou43lpKsgPiBndW5wdVwgOwor55aO5p6XID4gc29yaW5cIDsKK+WutuijgSA+IGthc2FpXCA7Civkv7PnlLsgPiBoYWlnYVwgOwor6LuK5aSrID4gc2hhZnVcIDsKK+S7lumdoiA+IHRhbWVuXCA7CivlsI/ntIsgPiBrb21vblwgOwor5qGD6IqxID4gdG91a2FcIDsKK+eUn+eQhiA+IHNlaXJpXCA7CivohYvnqqkgPiBla2lrYVwgOwor5LuY6ZqPID4gZnV6dWlcIDsKK+mrmOaJuSA+IGtvdWhpXCA7Civlrrbonb8gPiBpZWJhZVwgOwor5qSc5p+7ID4ga2Vuc2FcIDsKK+WCmeW/mCA+IGJpYm91XCA7CivlsI/nsosgPiBrb2lraVwgOwor5a6f6KiYID4gamlra2lcIDsKK+iHquabuCA+IGppc2hvXCA7CivosqvpppYgPiBrYW5qdVwgOwor5YGJ5qWtID4gaWd5b3VcIDsKK+S6uummrCA+IGppbmJhXCA7CivlhITliqsgPiBva2t1dVwgOwor6LK06aGVID4ga2lrZW5cIDsKK+S+jeiAhSA+IGppc2hhXCA7Civoh6rmmrQgPiBqaWJvdVwgOwor5L6/56eYID4gYmVucGlcIDsKK+WumOipsSA+IGthbndhXCA7CivltI7ltJYgPiBraWdhaVwgOwor55aO5pS+ID4gc29ob3VcIDsKK+S9meiWqyA+IHlva3VuXCA7Civoh6rmmI4gPiBqaW1laVwgOwor6Ieo5pmCID4gcmluamlcIDsKK+mkjOmjnyA+IGVqaWtpXCA7Civou43lmaggPiBndW5raVwgOwor5a6a6KaPID4gam91Z2lcIDsKK+iIueWwviA+IHNlbmJpXCA7CivlhIDliJEgPiBnaWtlaVwgOwor5LuK6ZqbID4gaW1hd2FcIDsKK+WEhOWGhiA+IG9rdWVuXCA7CivlhIDliIAgPiBnaXRvdVwgOwor5a6I6K23ID4gc2h1Z29cIDsKK+S8muiyuyA+IGthaWhpXCA7CivlsqnmoLkgPiBpd2FuZVwgOwor6aWL6YKEID4ga2lrYW5cIDsKK+WvoeiBniA+IGthYnVuXCA7Civpq5jmgakgPiBrb3VvblwgOwor55S35rudID4gb2Rha2lcIDsKK+i7ouWMliA+IHRlbmthXCA7CivlhIDlhbggPiBnaXRlblwgOwor55Oc56eRID4gdXJpa2FcIDsKK+i7veS+riA+IGtlaWJ1XCA7CivlrrbolLUgPiBrYXpvdVwgOwor5L6b57GzID4ga3VtYWlcIDsKK+aghOieuiA+IHNhemFlXCA7Civou5/ljJYgPiBuYW5rYVwgOwor5YCk5q61ID4gbmVkYW5cIDsKK+WtpOi7jSA+IGtvZ3VuXCA7Civlgb3mgqogPiBnaWFrdVwgOwor55Ww5pydID4gaWNob3VcIDsKK+S9s+iCtCA+IGtha291XCA7CivnlrLlvIogPiBoaWhlaVwgOwor5Lya6K2wID4ga2FpZ2lcIDsKK+eUmOeFriA+IGFtYW5pXCA7Civlgb3mgKcgPiBnaXNlaVwgOwor5p2l6aeVID4gcmFpZ2FcIDsKK+eUu+azlSA+IGdhaG91XCA7Civlr4ToiKogPiBraWtvdVwgOwor6auY5bqnID4ga291emFcIDsKK+mrmOW6piA+IGtvdWRvXCA7Civoia/ljLsgPiByeW91aVwgOwor5Lyd6KiYID4gZGVua2lcIDsKK+S8muipsSA+IGthaXdhXCA7CivkvZnoirMgPiB5b2hvdVwgOwor5Lmx6bq7ID4gcmFubWFcIDsKK+WCmOWvvyA+IHNhbmp1XCA7CivlsbHmsrMgPiBzYW5nYVwgOwor5bC+54q2ID4gYmlqb3VcIDsKK+iAs+mghiA+IGppanVuXCA7CivkvL3ol40gPiBnYXJhblwgOwor6LOb6L6eID4gc2FuamlcIDsKK+i7jeWMuyA+IGd1bicnaVwgOwor5bCC56eRID4gc2Vua2FcIDsKK+eVsOaVmSA+IGlreW91XCA7CivlhIDku5cgPiBnaWpvdVwgOwor5a6I6KGbID4gc2h1ZWlcIDsKK+WvjOiAhSA+IGZ1c2hhXCA7CivkvJropo8gPiBrYWlraVwgOwor6LuN5YuZID4gZ3VubXVcIDsKK+eUo+a5ryA+IHVidXl1XCA7Civpppnoj68gPiBrb3VnZVwgOwor6Ieq5oiSID4gamlrYWlcIDsKK+WwvueHiCA+IGJpdG91XCA7Civkvpvnpa0gPiBndXNhaVwgOwor6LOT6L6eID4gaGluamlcIDsKK+iDmuiKvSA+IGhhaWdhXCA7CivotbfnrpcgPiBraXNhblwgOwor6Iie5a2QID4gbWFpa29cIDsKK+S9s+e3qCA+IGthaGVuXCA7Civoh6rmhaIgPiBqaW1hblwgOwor6Lui5L2NID4gdGVuJydpXCA7Civpo6LppYkgPiBraWtpblwgOwor5qW95ZmoID4gZ2Fra2lcIDsKK+eWkeW/tSA+IGdpbmVuXCA7Civlr7rnpL4gPiBqaXNoYVwgOwor5L2Z6IGeID4geW9idW5cIDsKK+S6pOmZhCA+IGtvdWZ1XCA7CivlraboqrIgPiBnYWtrYVwgOwor5YOt5L2NID4gc2VuJydpXCA7Civku5jov5EgPiBmdWtpblwgOwor5bC+54GvID4gYml0b3VcIDsKK+mmrOiAlSA+IGJha291XCA7Civnk5znlLAgPiBrYWRlblwgOwor6LiP5p+7ID4gdG91c2FcIDsKK+mrmOWunCA+IGtvdWdpXCA7CivotbfnqL8gPiBraWtvdVwgOwor55S75qW8ID4gZ2Fyb3VcIDsKK+iEseeariA+IGRhcHBpXCA7CivnlY/mnI0gPiBpZnVrdVwgOwor5p2l6ZmiID4gcmFpaW5cIDsKK+S+jeelrSA+IGppc2FpXCA7Civou43lgpkgPiBndW5iaVwgOwor55Sj5rCXID4gc2Fua2VcIDsKK+aliuWtkCA+IHlvdWppXCA7CivlsI/nlbAgPiBzaG91aVwgOwor6Iie5aaTID4gbWFpa29cIDsKK+ajhOatuyA+IGtpc2hpXCA7CivkvZnnvaogPiB5b3phaVwgOwor55Sj5q+bID4gdWJ1Z2VcIDsKK+alreWboCA+IGdvdWluXCA7CivkvovnpLogPiByZWlqaVwgOwor5a626ICBID4ga2Fyb3VcIDsKK+eUn+awlyA+IHNlaWtpXCA7CivkuovpoIUgPiBqaWtvdVwgOwor6IWQ54ibID4gZnVyYW5cIDsKK+Wwj+eTtiA+IGtvYmluXCA7CivkvbPnr4cgPiBrYWhlblwgOwor6ISx55a9ID4gZGFzc29cIDsKK+WyqeaIuCA+IGl3YXRvXCA7Civlr7/nm4MgPiBqdWhhaVwgOwor55Sf5q+NID4gc2VpYm9cIDsKK+iHquW8gSA+IGppYmVuXCA7CivnlarmiYsgPiBiYW50ZVwgOwor5YG45a6JID4gdG91YW5cIDsKK+Wwj+eQtCA+IG9nb3RvXCA7Civkv4TnhLYgPiBnYXplblwgOwor5qOE5qipID4ga2lrZW5cIDsKK+ixqumjsiA+IGdvdWluXCA7CivkuoDpoK0gPiBraXRvdVwgOwor55S75p2/ID4gZ2FiYW5cIDsKK+Wtl+iokyA+IGppa3VuXCA7CivmorPmr5sgPiBzb21vdVwgOwor6aOb6Zu7ID4gaGlkZW5cIDsKK+S6jOmajiA+IG5pa2FpXCA7CivnlLvmnZAgPiBnYXphaVwgOwor5a2X6KejID4gamlrYWlcIDsKK+i7jeS6iyA+IGd1bmppXCA7CivnkIbosqEgPiByaXphaVwgOwor55S75pysID4gZ2Fob25cIDsKK+eUu+acnyA+IGtha2tpXCA7Civoh6rlt6UgPiBqaWtvdVwgOwor6IOD6IW4ID4gaWNob3VcIDsKK+agoee0gCA+IGtvdWtpXCA7CivnlbjlvaIgPiBraWtlaVwgOwor5Luj6K2wID4gZGFpZ2lcIDsKK+S7ruiogCA+IGthZ2VuXCA7CivotbDnoLQgPiBzb3VoYVwgOwor5YK15YuZID4gc2FpbXVcIDsKK+i6q+WIhiA+IG1pYnVuXCA7CivlgIvmnaEgPiBrYWpvdVwgOwor6LWk56aNID4gc2Vra2FcIDsKK+S6iOmYsiA+IHlvYm91XCA7CivlgYnlvrMgPiBpdG9rdVwgOwor6LOE6LOCID4gd2Fpcm9cIDsKK+iCsuiLsSA+IGlrdWVpXCA7CivlsI/niqwgPiBrb2ludVwgOwor5qCE6ICAID4gZWl5b3VcIDsKK+eUseadpSA+IHl1cmFpXCA7CivnlbDlv4MgPiBpc2hpblwgOwor6Ii55Yy7ID4gc2VuJydpXCA7CivmpLDlrZAgPiB5YXNoaVwgOwor5a6257SLID4ga2Ftb25cIDsKK+WutuezuyA+IGtha2VpXCA7CivnlbDlvaIgPiBpZ3lvdVwgOwor5Ly9576FID4ga3lhcmFcIDsKK+iCuuiFkSA+IGhhaWZ1XCA7Civku4/osqggPiBmdWtrYVwgOwor5p2x6YO9ID4gdG91dG9cIDsKK+adsemDqCA+IHRvdWJ1XCA7Civku67oo4UgPiBrYXNvdVwgOwor6Ieq5bC9ID4gamlqaW5cIDsKK+eQhuirliA+IHJpcm9uXCA7CivlgY/lt64gPiBoZW5zYVwgOwor5bCK54i2ID4gc29ucHVcIDsKK+iHquWwiiA+IGppc29uXCA7Civlgb3loLEgPiBnaWhvdVwgOwor5a6a576pID4gdGVpZ2lcIDsKK+WCmeWTgSA+IGJpaGluXCA7Civosqjou4ogPiBrYXNoYVwgOwor5L+X5rCXID4gem9ra2VcIDsKK+iHquWusyA+IGppZ2FpXCA7CivosrjosrsgPiB0YWloaVwgOwor5a+E56i/ID4ga2lrb3VcIDsKK+eVmeaEjyA+IHJ5dXVpXCA7CivkvZXnrocgPiBuYW5rb1wgOwor5YCL5pWwID4ga29zdXVcIDsKK+WvneebuCA+IG5lem91XCA7CivporbpoqggPiBndWZ1dVwgOwor6LK06LOkID4ga2lzZW5cIDsKK+iHquWtmCA+IGppc29uXCA7CivmoYLnmq4gPiBrZWloaVwgOwor6aOy6YWSID4gaW5zaHVcIDsKK+iytOizkyA+IGtpaGluXCA7CivkuqjpgYsgPiBrb3V1blwgOwor55CG6KejID4gcmlrYWlcIDsKK+iytOizjiA+IGtpc2VuXCA7CivotbfnlKggPiBraXlvdVwgOwor5L2V562JID4gbmFucmFcIDsKK+iyqei3ryA+IGhhbnJvXCA7CivmnJ/pppYgPiBraXNodVwgOwor5L+X5q2MID4gem9ra2FcIDsKK+S5l+mmrCA+IGpvdWJhXCA7Civku5joqIAgPiBmdWdlblwgOwor6LWk55uuID4gYWthbWVcIDsKK+S7i+ittyA+IGthaWdvXCA7Civku5boqIAgPiB0YWdvblwgOwor5LqA6ZGRID4ga2lrYW5cIDsKK+iEs+eCjiA+IG5vdWVuXCA7CivmpJzlrZcgPiBrZW5qaVwgOwor5LqU6YeNID4gZ29qdXVcIDsKK+izgOipniA+IGdhc2hpXCA7CivoiJ7lj7AgPiBidXRhaVwgOwor5pyd6aSJID4gYXNhZ2VcIDsKK+WvoeeUtyA+IHlhbW9vXCA7Civku5boposgPiB0YWtlblwgOwor6IiO5Za2ID4gc2hhZWlcIDsKK+S8juiKuCA+IGdpZ2VpXCA7Civnlo7lpJYgPiBzb2dhaVwgOwor5YG25ZugID4gZ3V1aW5cIDsKK+Wuiee9riA+IGFuY2hpXCA7CivosqjosqEgPiBrYXphaVwgOwor5YKN5Y+XID4gYm91anVcIDsKK+iDtOedgCA+IGRvdWdpXCA7Civlrrbnpr0gPiBrYWtpblwgOwor5bKp5bGLID4gaXdheWFcIDsKK+S6jOmHjSA+IGZ1dGFlXCA7CivogqXogrIgPiBoaWlrdVwgOwor5bCP5rudID4gb3Rha2lcIDsKK+S6iOmItCA+IHlvcmVpXCA7Civlgb3lloQgPiBnaXplblwgOwor5qKn5qGQID4gZ290b3VcIDsKK+iyouizpiA+IGtvdWZ1XCA7CivnlLvmiY0gPiBnYXNhaVwgOwor55S75omLID4gZ2FzaHVcIDsKK+WumOe0gCA+IGthbmtpXCA7CivosrToqowgPiBraXNoaVwgOwor6aKo6Z+7ID4gZnV1aW5cIDsKK+eVs+WtlyA+IGpvdWppXCA7Civku5booYwgPiB0YWtvdVwgOwor6IKh6IKxID4ga29rb3VcIDsKK+iyoeiyqCA+IHphaWthXCA7CivnlbDlrpcgPiBpc2h1dVwgOwor5LqS6YG4ID4gZ29zZW5cIDsKK+iHquWjiiA+IGppa2FpXCA7Civmo4TmkI0gPiBraXNvblwgOwor6aKo6Z2hID4gZnV1YmlcIDsKK+mkiuittyA+IHlvdWdvXCA7Civosp3osqggPiBiYWlrYVwgOwor5LyO6IO9ID4gZ2lub3VcIDsKK+acqumWiyA+IG1pa2FpXCA7CivlgIvmiYAgPiBrYXNob1wgOwor6LK06KanID4ga2lyYW5cIDsKK+i1sOeLlyA+IHNvdWt1XCA7Civpoqjpm7IgPiBmdXV1blwgOwor5LmW6ZuiID4ga2FpcmlcIDsKK+eWsuWKtCA+IGhpcm91XCA7Civku67okawgPiBrYXNvdVwgOwor5YG95ZCNID4gZ2ltZWlcIDsKK+S6uuiqniA+IGppbmdvXCA7Civpoqjpm4UgPiBmdXVnYVwgOwor5LqU6LyqID4gZ29yaW5cIDsKK+WBveWPsiA+IGdpc2hpXCA7CivmnJ/pmZAgPiBraWdlblwgOwor5LqI6YG4ID4geW9zZW5cIDsKK+S5l+mZpCA+IGpvdWpvXCA7CivlgY/lpYcgPiBoZW5raVwgOwor5Li76aasID4gc2h1bWVcIDsKK+S/neaciSA+IGhveXV1XCA7Civoh6rlnKggPiBqaXphaVwgOwor6auY5YipID4ga291cmlcIDsKK+acn+mWkyA+IGtpa2FuXCA7CivotbfngrkgPiBraXRlblwgOwor5LqM6LyqID4gbmlyaW5cIDsKK+acnemWkyA+IGFzYW1hXCA7CivohLPms6IgPiBub3VoYVwgOwor5a6f56eRID4gamlra2FcIDsKK+WutuebuCA+IGthc291XCA7CivmnaXos4AgPiByYWlnYVwgOwor5bGg5omAID4gdG9zaG9cIDsKK+eWkeWVjyA+IGdpbW9uXCA7CivoiI7liKkgPiBzaGFyaVwgOwor5a+E55SfID4ga2lzZWlcIDsKK+S6jOi7jSA+IG5pZ3VuXCA7CivlgJLlvbEgPiB0b3VlaVwgOwor5LuW6JamID4gdGF6ZW5cIDsKK+WAi+aApyA+IGtvc2VpXCA7Civpp4TniqwgPiBkYWtlblwgOwor6aOb6LuKID4gaGlzaGFcIDsKK+WxueW6piA+IGtpdHRvXCA7CivkvZznlKggPiBzYXlvdVwgOwor5YCt5a+HID4gd2Frb3VcIDsKK+Wwj+atjCA+IGtvdXRhXCA7CivkuLvpn7MgPiBzaHVvblwgOwor55Ww5aKDID4gaWt5b3VcIDsKK+WuueeWkSA+IHlvdWdpXCA7CivnlLvlu4ogPiBnYXJvdVwgOwor5L2Z55SfID4geW9zZWlcIDsKK+e+jum6lyA+IGJpcmVpXCA7CivlrprnpI4gPiB0ZWlzb1wgOwor5YGP5ZyfID4gaGVuZG9cIDsKK+WyqeWgtCA+IGl3YWJhXCA7Civoh6rllY8gPiBqaW1vblwgOwor5YG95YW1ID4gZ2loZWlcIDsKK+S6pOiqvCA+IGtvdWdpXCA7CivohZXmnKggPiB1ZGVnaVwgOwor5YKY5LiLID4gc2Fua2FcIDsKK+WBpeWQpiA+IGtlbnBpXCA7CivnlLvluKsgPiBnYXNoaVwgOwor55S75biWID4gZ2Fqb3VcIDsKK+WutueUoyA+IGthc2FuXCA7CivnlLvlt6UgPiBnYWtvdVwgOwor6LW35rqQID4ga2lnZW5cIDsKK+e+vemfsyA+IGhhb3RvXCA7Civpq5jkvqEgPiBrb3VrYVwgOwor5YCJ5bqrID4gc291a29cIDsKK+aenOiPnCA+IGthc2FpXCA7CivmnLrovrogPiBraWhlblwgOwor5a++5q+UID4gdGFpaGlcIDsKK+eVsOWbvSA+IGlrb2t1XCA7CivmnZHosrsgPiBzb25waVwgOwor6LOi6ICFID4ga2VuamFcIDsKK+acrOmDqCA+IGhvbmJ1XCA7CivkupLorbIgPiBnb2pvdVwgOwor6IeT5ZmoID4gem91a2lcIDsKK+WvvuaspyA+IHRhaW91XCA7CivogIHouq8gPiByb3VrdVwgOwor55Sj5b6MID4gc2FuZ29cIDsKK+eUqOW6piA+IHlvdWRvXCA7Civmm7jpmaIgPiBzaG9pblwgOwor5qGQ5rK5ID4gdG91eXVcIDsKK+acqumBgiA+IG1pc3VpXCA7CivnlJ/lvpIgPiBzZWl0b1wgOwor55Sf5b6MID4gc2VpZ29cIDsKK+adoeimjyA+IGpvdWtpXCA7CivohJrmsJcgPiBrYWtrZVwgOwor6auY5LiLID4ga291Z2VcIDsKK+iHquWLlSA+IGppZG91XCA7CivnjovpgZMgPiBvdWRvdVwgOwor6LOb576OID4gc2FuYmlcIDsKK+iFkOaVlyA+IGZ1aGFpXCA7CivouYTlj4kgPiB0ZWlzYVwgOwor5LqJ6K2wID4gc291Z2lcIDsKK+acqOmAmiA+IGFrZWJpXCA7Civku5XoiJ4gPiBqaW1haVwgOwor6LaK5qipID4gZWtrZW5cIDsKK+i3i+aJiCA+IGJha2tvXCA7CivkvZnnh7wgPiB5b2ppblwgOwor5YCL5bGVID4ga290ZW5cIDsKK+iHquWJjSA+IGppbWFlXCA7Civoh6rliLYgPiBqaXNlaVwgOwor5YGl5YWQID4ga2VuamlcIDsKK+iDg+eXmyA+IGl0c3V1XCA7CivkuojorIAgPiB5b2JvdVwgOwor6aqo5YyWID4ga29ra2FcIDsKK+Wwj+aenSA+IGtvZWRhXCA7Civog4Pnl4UgPiBpYnlvdVwgOwor6Ieq5YiGID4gamlidW5cIDsKK+iHquWIgyA+IGppamluXCA7Civotbfmr5sgPiBraW1vdVwgOwor55Gq55GZID4gbWVub3VcIDsKK+miqOmCqiA+IGZ1dWphXCA7CivotbfmrbsgPiBraXNoaVwgOwor5p6257eaID4ga2FzZW5cIDsKK+S4iummrCA+IGpvdWJhXCA7CivkvZzngrogPiBzYWt1aVwgOwor6IOM55CGID4gaGFpcmlcIDsKK+WuieecoCA+IGFubWluXCA7Civoh6rlhZogPiBqaXRvdVwgOwor5bC/5oSPID4gbnlvdWlcIDsKK+acm+mBoCA+IGJvdWVuXCA7CivnlLDlrrYgPiBkZW5rYVwgOwor5LqI6KiAID4geW9nZW5cIDsKK+S5nei8qiA+IGt1cmluXCA7CivkubHosrsgPiByYW5waVwgOwor5LuW6IGeID4gdGFidW5cIDsKK+acqui4jyA+IG1pdG91XCA7CivkuonopocgPiBzb3VoYVwgOwor5a+d5rGXID4gbmVhc2VcIDsKK+WBpeS/nSA+IGtlbnBvXCA7Civlr77moYggPiB0YWlhblwgOwor55GV55a1ID4ga2FzaGlcIDsKK+S6iOimiyA+IHlva2VuXCA7CivkuIvpoqggPiBrYWZ1dVwgOwor5LuW6ICFID4gdGFzaGFcIDsKK+eVv+WGhSA+IGtpbmFpXCA7Civku67ntI0gPiBrYW5vdVwgOwor54yq6aaWID4gaWt1YmlcIDsKK+WumueQhiA+IHRlaXJpXCA7CivkuI3poIYgPiBmdWp1blwgOwor5LiA6aaWID4gaXNzaHVcIDsKK+eUo+WxiyA+IHVidXlhXCA7Civku67nsqcgPiBrZXdhaVwgOwor6LGq6KqeID4gZ291Z29cIDsKK+mhnumfuyA+IHJ1aWluXCA7CivpoZ7pn7MgPiBydWlvblwgOwor5a+S5rOiID4ga2FucGFcIDsKK+eUqOWtlyA+IHlvdWppXCA7Civlrabnp5EgPiBnYWtrYVwgOwor6LKn6IumID4gaGlua3VcIDsKK+eUt+WlsyA+IGRhbmpvXCA7CivogIPoqrIgPiBrb3VrYVwgOwor5qC55rCXID4ga29ua2lcIDsKK+i1pOavmyA+IGFrYWdlXCA7CivkuIDpo68gPiBpcHBhblwgOwor55S75aOHID4gZ2FkYW5cIDsKK+WvhOa4ryA+IGtpa291XCA7CivpppnnhZkgPiBrb3VlblwgOwor576O6aKoID4gYmlmdXVcIDsKK+mjm+ihjCA+IGhpa291XCA7CivkuojooYwgPiB5b2tvdVwgOwor5Lqs6I+vID4ga2Vpa2FcIDsKK+WuieeUoyA+IGFuemFuXCA7Civoh6rkvZMgPiBqaXRhaVwgOwor5LiA6aKoID4gaXBwdXVcIDsKK+e+jumhlCA+IGJpZ2FuXCA7CivnlJ/lrrYgPiBzZWlrYVwgOwor5a6f54i2ID4gamlwcHVcIDsKK+iHquS8nSA+IGppZGVuXCA7CivogZbogIUgPiBzZWlqYVwgOwor5L6/5omAID4gYmVuam9cIDsKK+eUu+WgsSA+IGdhaG91XCA7Civoh6rku7sgPiBqaW5pblwgOwor5LiW6ZaTID4gc2VrZW5cIDsKK+S4gOmgrSA+IGl0dG91XCA7CivnlLLlpJwgPiBrb3V5YVwgOwor6Ieq5LuKID4gamlrb25cIDsKK+S4jemajyA+IGZ1enVpXCA7CivpppnngokgPiBrb3Vyb1wgOwor5Li76YOoID4gc2h1YnVcIDsKK+S4gOmghSA+IGlra291XCA7CivpqI7miYsgPiBraXNodVwgOwor55Sw5aSrID4gZGVucHVcIDsKK+izpueojiA+IGZ1emVpXCA7Civpo5vonZcgPiBiYXR0YVwgOwor55K95pu4ID4gamlzaG9cIDsKK+Wwu+W6pyA+IGtvdXphXCA7CivosrTnv7AgPiBraWthblwgOwor55CG57O7ID4gcmlrZWlcIDsKK+iHquS5lyA+IGppam91XCA7CivnlKPlqaYgPiBzYW5wdVwgOwor5LiL6ZmQID4ga2FnZW5cIDsKK+S4i+mZjSA+IGtha291XCA7CivkuIrpmaIgPiBqb3VpblwgOwor6Ieq5Li7ID4gamlzaHVcIDsKK+WvuOaahyA+IHN1bmthXCA7CivmnrbnqbogPiBrYWt1dVwgOwor55Sj5amGID4gc2FuYmFcIDsKK+aji+WjqyA+IGtpc2hpXCA7CivosYzosYYgPiBlbmRvdVwgOwor5LiL6ZiqID4gZ2VoYW5cIDsKK+WvuOaZgiA+IHN1bmppXCA7CivmorXlrZcgPiBib25qaVwgOwor55SY5a2QID4gYW1hZ29cIDsKK+S9k+a4qSA+IHRhaW9uXCA7Civkvr/mhI8gPiBiZW4nJ2lcIDsKK+S7gee+qSA+IGppbmdpXCA7CivlrpvnhLYgPiBlbnplblwgOwor5L2c5rOVID4gc2Fob3VcIDsKK+aknOS6iyA+IGtlbmppXCA7CivkuLvovp4gPiBzaHVqaVwgOwor5pq06aOyID4gYm91aW5cIDsKK+WvneajuiA+IG5la2FuXCA7Civmnpzns5YgPiBrYXRvdVwgOwor5L2O5ripID4gdGVpb25cIDsKK+i1sOafuyA+IHNvdXNhXCA7CivkuIDpmo4gPiBpa2thaVwgOwor5pys6Ki0ID4gaG9uc29cIDsKK+S4gOmaiiA+IGl0dGFpXCA7Civmm7npgZQgPiBzb3VkYVwgOwor55W45Lq6ID4ga2lqaW5cIDsKK+iyp+iAhSA+IGhpbmphXCA7Civkv5Dlt6cgPiByaWtvdVwgOwor5L6L5pmCID4gcmVpamlcIDsKK+WutuazlSA+IGthaG91XCA7CivnlLDlnIMgPiBkZW5wb1wgOwor5bGg5aC0ID4gdG9qb3VcIDsKK+S7mOeuiyA+IGZ1c2VuXCA7CivmnKroposgPiBtaWtlblwgOwor6ICz6IWUID4gamlrb3VcIDsKK+S4gOmWgyA+IGlzc2VuXCA7CivlsJHmhbAgPiBzaG91aVwgOwor5L6u5oWiID4gYnVtYW5cIDsKK+S9nOatjCA+IHNha2thXCA7CivmoYPmnY4gPiB0b3VyaVwgOwor5qCh5q2MID4ga291a2FcIDsKK+e+qemHkSA+IGdpa2luXCA7Civkv53lroggPiBob3NodVwgOwor6aKo6KutID4gZnV1eXVcIDsKK+S4lumKgCA+IHNlZ2luXCA7Civkv53lrZggPiBob3pvblwgOwor6IK654KOID4gaGFpZW5cIDsKK+eUmOWkoiA+IGthbm11XCA7CivlsKTluqYgPiB5dXVkb1wgOwor6IC9576OID4gdGFuYmlcIDsKK+aboOmHjiA+IGtvdXlhXCA7CivosrTntJkgPiBraXNoaVwgOwor5pyI6LOmID4gZ2VwcHVcIDsKK+WxleWikyA+IHRlbmJvXCA7Civkvr/luqcgPiBiZW56YVwgOwor5LqU6IqSID4gZ29ib3VcIDsKK+ePque0oCA+IGtlaXNvXCA7CivmoLjmnpwgPiBrYWtrYVwgOwor5bCK5oSPID4gc29uJydpXCA7CivpppnmsrkgPiBrb3V5dVwgOwor55So5ZmoID4geW91a2lcIDsKK+ahiOaWhyA+IGFubW9uXCA7Civku67nnaEgPiBrYXN1aVwgOwor5pyX6KmgID4gcm91ZWlcIDsKK+WAkuWPpSA+IHRvdWt1XCA7CivlgJLlj5kgPiB0b3Vqb1wgOwor5Luu55ygID4ga2FtaW5cIDsKK+iytOewoSA+IGtpa2FuXCA7Civoh43kuIsgPiBzZWlrYVwgOwor5a6a5ripID4gdGVpb25cIDsKK+S7ruebuCA+IGthc291XCA7CivkupToh5MgPiBnb3pvdVwgOwor6IOM5rOzID4gaGFpZWlcIDsKK+mmmeawlyA+IGtvdWtpXCA7CivkuqHogIUgPiBtb3VqYVwgOwor6Iag5YyWID4ga291a2FcIDsKK+mgremfuyA+IHRvdWluXCA7CivkvbPmma8gPiBrYWtlaVwgOwor5bCW5bqmID4gc2VuZG9cIDsKK+S7luekviA+IHRhc2hhXCA7Civosaroj68gPiBnb3VrYVwgOwor5a+M5pyJID4gZnV5dXVcIDsKK+S4lumAlCA+IHNlaXRvXCA7Civku67nl5ggPiBrYXRvdVwgOwor5LiH6YeMID4gYmFucmlcIDsKK+eQhuefpSA+IHJpY2hpXCA7CivkuJjovrogPiBva2FiZVwgOwor6IW55ZuyID4gZnVrdWlcIDsKK+S9kOanmCA+IHNheW91XCA7Civku4/npZYgPiBidXNzb1wgOwor6aeE5paHID4gZGFidW5cIDsKK+e+qei7jSA+IGdpZ3VuXCA7CivlgI3liqAgPiBiYWlrYVwgOwor5YCt5Lq6ID4gd2FqaW5cIDsKK+S4g+mHjSA+IG5hbmFlXCA7CivkuIvpg44gPiBnZXJvdVwgOwor5LiK6YOoID4gam91YnVcIDsKK+mgk+mmrCA+IHRvbm1hXCA7CivkuInpg6ggPiBzYW5idVwgOwor6LK056iuID4ga2lzaHVcIDsKK+S4jemBnCA+IGZ1c29uXCA7CivlsITlvbEgPiBzaGFlaVwgOwor5LiN6YGHID4gZnVndXVcIDsKK+S4gOmHjSA+IGhpdG9lXCA7CivkuLvoqp4gPiBzaHVnb1wgOwor5L6/5a6cID4gYmVuZ2lcIDsKK+mojuWwhCA+IGtpc2hhXCA7Civlr4Tmm7ggPiBraXNob1wgOwor5LiN6YCeID4gZnV0ZWlcIDsKK+Wwj+W3nSA+IG9nYXdhXCA7Civlr77lv5wgPiB0YWlvdVwgOwor5LiN6YCAID4gZnV0YWlcIDsKK+e+jumFkiA+IGJpc2h1XCA7CivnkZ7msJcgPiB6dWlraVwgOwor5Li76Ki0ID4gc2h1c29cIDsKK+aal+mbsiA+IGFuJyd1blwgOwor6LK056S+ID4ga2lzaGFcIDsKK+eUt+WFkCA+IGRhbmppXCA7CivkuozogIUgPiBuaXNoYVwgOwor55S75YOPID4gZ2F6b3VcIDsKK+S7luecjCA+IHRha2VuXCA7Civkv7PlkbMgPiBoYWltaVwgOwor5L2a5pu4ID4gaXNzaG9cIDsKK+WppumBuCA+IGZ1c2VuXCA7CivnlKjli5kgPiB5b3VtdVwgOwor5amm6YGTID4gZnVkb3VcIDsKK+adkee/gSA+IHNvbm91XCA7Civlronms7AgPiBhbnRhaVwgOwor6IKl5rqAID4gaGltYW5cIDsKK+S4i+i8qSA+IGdlaGFpXCA7CivlrrbmnaUgPiBrZXJhaVwgOwor5a++5bqnID4gdGFpemFcIDsKK+WApOS4iiA+IG5lYWdlXCA7CivnlJjlkbMgPiBrYW5taVwgOwor5L+z5Y+lID4gaGFpa3VcIDsKK+S4gOmBjSA+IGlwcGVuXCA7CivogIHoiJcgPiByb3Vob1wgOwor5pqX6ZeYID4gYW50b3VcIDsKK+abuOiomCA+IHNob2tpXCA7CivkuIvou4ogPiBnZXNoYVwgOwor5bCR5bCJID4gc2hvdWlcIDsKK+eUmuWPpSA+IGppbmt1XCA7Civlrrbmm7ggPiBrYXNob1wgOwor5Lqb57SwID4gc2FzYWlcIDsKK+eQhueUsSA+IHJpeXV1XCA7CivkurrnpZYgPiBqaW5zb1wgOwor5bCP5bCJID4gc2hvdWlcIDsKK+agoeaXlyA+IGtvdWtpXCA7CivkubHoiJ4gPiByYW5idVwgOwor5LqU57eaID4gZ29zZW5cIDsKK+eUmOWPlyA+IGthbmp1XCA7CivkuIDovrogPiBpcHBlblwgOwor5L6N5b6TID4gamlqdXVcIDsKK+WtpOeBryA+IGtvdG91XCA7Civku6PnkIYgPiBkYWlyaVwgOwor6LKi56efID4ga291c29cIDsKK+Wog+msnyA+IGFpa2FuXCA7CivkvJrmtL4gPiBrYWloYVwgOwor5a2Q54qsID4ga29pbnVcIDsKK+iBr+ePoCA+IHJlbmp1XCA7CivnlKjlhbcgPiB5b3VndVwgOwor55S75LyaID4gZ2FrYWlcIDsKK+S7lueVjCA+IHRha2FpXCA7CivkupTntYMgPiBnb2dlblwgOwor5bCP5a2XID4ga29hemFcIDsKK+Wxi+WPtyA+IHlhZ291XCA7CivlsYvlj7AgPiB5YXRhaVwgOwor5bCK5a62ID4gc29ua2FcIDsKK+S4gOi7oiA+IGl0dGVuXCA7CivnlLvkurogPiBnYWppblwgOwor6aGM6L6eID4gZGFpamlcIDsKK+S4gOi7kiA+IGlra2VuXCA7Civlrp/mooUgPiBtaXVtZVwgOwor5YCL5L2TID4ga290YWlcIDsKK+mojuWjqyA+IGtpc2hpXCA7Civlr77ls5kgPiB0YWlqaVwgOwor55Sj5YWQID4gc2FuamlcIDsKK+i3r+WCjSA+IHJvYm91XCA7CivmnKzoiJcgPiBob25wb1wgOwor576k6K2wID4gZ3VuZ2lcIDsKK+S4jeiytyA+IGZ1YmFpXCA7CivlrrbmlL8gPiBrYXNlaVwgOwor5LiL6LOkID4gZ2VzZW5cIDsKK+WvneaBryA+IG5laWtpXCA7CivkuI3osp4gPiBmdXRlaVwgOwor5LiL6LOcID4ga2FzaGlcIDsKK+S4i+izjiA+IGdlc2VuXCA7Civmnq/nh6UgPiBrb3NvdVwgOwor5YCL5Lq6ID4ga29qaW5cIDsKK+acqOiIniA+IGtvbWFpXCA7Civkvb/lvpIgPiBzaGl0b1wgOwor6ICB57+BID4gcm91b3VcIDsKK+e+veifuyA+IGhhYXJpXCA7Civlr5vmgZUgPiBrYW5qb1wgOwor6LK755SoID4gaGl5b3VcIDsKK+mguOmDqCA+IGtlaWJ1XCA7Civku6PniLYgPiBkYWlmdVwgOwor6LKr55uuID4ga2FubWVcIDsKK+Wwj+WnlCA+IHNob3VpXCA7CivnvqnoqJMgPiBnaWt1blwgOwor5LqI57SNID4geW9ub3VcIDsKK+S4h+iyqCA+IGJhbmthXCA7CivkuJboq5YgPiB5b3JvblwgOwor6LGK6Im2ID4gaG91ZW5cIDsKK+i1t+W3pSA+IGtpa291XCA7Civmnb/nm64gPiBpdGFtZVwgOwor6aCt6YeNID4genVvbW9cIDsKK+aiheWckiA+IGJhaWVuXCA7CivosrTnlLcgPiB0YWthb1wgOwor5a6a5pyoID4gam91Z2lcIDsKK+WumuacnyA+IHRlaWtpXCA7CivlsI/lo7IgPiBrb3VyaVwgOwor576O6LKMID4gYmlib3VcIDsKK+Wwj+WjsCA+IGtvZ29lXCA7CivmoYLlurUgPiBrZWlhblwgOwor5LiA6LKrID4gaWtrYW5cIDsKK+S4iuitsCA+IGpvdWdpXCA7CivnlJ/kv50gPiBzZWlob1wgOwor5L6/5ZmoID4gYmVua2lcIDsKK+S4juirliA+IHlvcm9uXCA7CivmnKrogZ4gPiBtaW1vblwgOwor6Z+z6Z+7ID4gb24nJ2luXCA7CivnlKjkuosgPiB5b3VqaVwgOwor5pmv6ZuyID4ga2VpdW5cIDsKK+mgremDqCA+IHRvdWJ1XCA7Civku5TniqwgPiBrb2ludVwgOwor5LqM562JID4gbml0b3VcIDsKK+e9qumBjiA+IHphaWthXCA7CivkuIroq60gPiBqb3V5dVwgOwor5L+X5YyWID4gem9ra2FcIDsKK+Wtl+a6kCA+IGppZ2VuXCA7CivkuojnrpcgPiB5b3NhblwgOwor6aGe6KqeID4gcnVpZ29cIDsKK+i3r+S4iiA+IHJvam91XCA7CivmnKznvqkgPiBob25naVwgOwor6LOA54q2ID4gZ2Fqb3VcIDsKK+WumuaZgiA+IHRlaWppXCA7Civmo4TkuJYgPiBraXNlaVwgOwor6LGG6IWQID4gdG91ZnVcIDsKK+mnhOW8gSA+IGRhYmVuXCA7CivlqaboraYgPiBmdWtlaVwgOwor6LW35bGFID4ga2lreW9cIDsKK+eNhOihoyA+IGdva3VpXCA7Civmnb/nlLsgPiBoYW5nYVwgOwor5LiN6KiAID4gZnVnZW5cIDsKK+S9j+aMgSA+IGp1dWppXCA7CivkvZPmioAgPiB0YWlnaVwgOwor5L+d5Ya3ID4gaG9yZWlcIDsKK+S9meaGpCA+IHlvZnVuXCA7CivkuIroqLQgPiBqb3Vzb1wgOwor5LiK6KiYID4gam91a2lcIDsKK+S9meaFtiA+IHlva2VpXCA7CivkvZzmhI8gPiBzYWt1aVwgOwor5L+d5YWoID4gaG96ZW5cIDsKK+S6jOeoriA+IG5pc2h1XCA7CivmnpznhLYgPiBrYXplblwgOwor5LiN6KaBID4gZnV5b3VcIDsKK+mfs+majiA+IG9ua2FpXCA7Civnvo7oq4cgPiBiaWRhblwgOwor5a625oayID4ga2FrZW5cIDsKK+S6iOeovyA+IHlva291XCA7CivlsI7lm6AgPiBkb3VpblwgOwor5Luj5ryUID4gZGFpZW5cIDsKK+S9meaDhSA+IHlvam91XCA7Civlr6HlsYUgPiBrYWt5b1wgOwor54qs6aasID4ga2VuYmFcIDsKK+mkk+eLvCA+IGdhcm91XCA7CivlsLzlg6cgPiBuaXNvdVwgOwor5L+d5YGlID4gaG9rZW5cIDsKK+e/oee/oCA+IGhpc3VpXCA7Civmnq/mt6EgPiBrb3RhblwgOwor6aCa6YOoID4ga2VpYnVcIDsKK+acque3tCA+IG1pcmVuXCA7CivkuIDoqIggPiBpa2tlaVwgOwor576O6KazID4gYmlrYW5cIDsKK+mgkOmHkSA+IHlva2luXCA7CivkvZnlv7UgPiB5b25lblwgOwor5LiL6KGMID4ga2Frb3VcIDsKK+mhjOipoCA+IGRhaWVpXCA7CivmnKjntr8gPiBtb21lblwgOwor5Li56IqxID4gdGFua2FcIDsKK+S4gOimiyA+IGlra2VuXCA7CivkuLnoibIgPiBuaWlyb1wgOwor546L57WxID4gb3V0b3VcIDsKK+S8muacnyA+IGthaWtpXCA7CivlsIHlnJ8gPiBob3Vkb1wgOwor6Laj5ZGzID4gc2h1bWlcIDsKK+izouavjSA+IGtlbmJvXCA7Civmmpfou6IgPiBhbnRlblwgOwor5pyq57SNID4gbWlub3VcIDsKK+WvvuWdkCA+IHRhaXphXCA7CivkvZnlvKYgPiB5b2dlblwgOwor6K2w6aGMID4gZ2lkYWlcIDsKK+iBlueBqyA+IHNlaWthXCA7CivlsI/llIQgPiBrb3V0YVwgOwor5L2Z5byKID4geW9oZWlcIDsKK+iFkOWIkSA+IGZ1a2VpXCA7CivkvbPlrrkgPiBrYXlvdVwgOwor5a625b6TID4ga2FqdXVcIDsKK+i1pOWtlyA+IGFrYWppXCA7CivppIrniLYgPiB5b3VmdVwgOwor5p2l55SxID4gcmFpeXVcIDsKK+S6iOefpSA+IHlvY2hpXCA7Civku67mrbsgPiBrYXNoaVwgOwor5LiA6KGMID4gaWtrb3VcIDsKK+S+v+WIqSA+IGJlbnJpXCA7Civku67mra8gPiBrYXNoaVwgOwor5qC55a2QID4gbmVra29cIDsKK+WvuOWcnyA+IHN1bmRvXCA7CivkvZXluqYgPiBuYW5kb1wgOwor5LqM55u4ID4gbmlzb3VcIDsKK+iDoeW6pyA+IGFndXJhXCA7Civos5vmrYwgPiBzYW5rYVwgOwor54+K55GaID4gc2FuZ29cIDsKK+ahiOWkliA+IGFuZ2FpXCA7Civkuovnm7ggPiBqaXNvdVwgOwor5a625bqtID4ga2F0ZWlcIDsKK+aer+atuyA+IGtvc2hpXCA7CivohIXlqIEgPiBreW91aVwgOwor5puz6IiqID4gZWlrb3VcIDsKK+eQhuazlSA+IHJpaG91XCA7CivpoqjntIAgPiBmdXVraVwgOwor5Luj5q+NID4gZGFpYm9cIDsKK+eTpuWFqCA+IGdhemVuXCA7CivlrrbluLggPiBrYWpvdVwgOwor5Lq654K6ID4gamluJydpXCA7CivkvJ3mkq0gPiBkZW5wYVwgOwor57216KiAID4gYmFnZW5cIDsKK+mojuWFtSA+IGtpaGVpXCA7CivkvY7luqYgPiB0ZWlkb1wgOwor5qGR5ZySID4gc291ZW5cIDsKK+S6kueUqCA+IGdveW91XCA7CivkuLvnvqkgPiBzaHVnaVwgOwor5p2h55CGID4gam91cmlcIDsKK+Wwj+WLoiA+IGtvemVpXCA7Civlr4Tlr5MgPiBraWd1dVwgOwor5bCK5Y2RID4gc29ucGlcIDsKK+WtpuacnyA+IGdha2tpXCA7CivkuoznlaogPiBuaWJhblwgOwor5pmC6ZmQID4gamlnZW5cIDsKK+iDjOW+jCA+IGhhaWdvXCA7CivniaHpub8gPiBvamlrYVwgOwor5LyB5pybID4ga2lib3VcIDsKK+acrOenkSA+IGhvbmthXCA7CivmnpzmsYEgPiBrYWp1dVwgOwor6aas5bGLID4gdW1heWFcIDsKK+mnheWkqyA+IGVraWZ1XCA7CivkvJ3mjoggPiBkZW5qdVwgOwor5LqL55SxID4gaml5dXVcIDsKK+S/juS4iiA+IHNvam91XCA7CivlsI/liKQgPiBrb2JhblwgOwor5Lm+55quID4ga2FucGlcIDsKK+e+vee/vCA+IHV5b2t1XCA7Civmnp3mr5sgPiBlZGFnZVwgOwor5a+/5Y+4ID4gc3VzaGlcIDsKK+S9nOWutiA+IHNha2thXCA7CivpppbluqcgPiBzaHV6YVwgOwor5pmu6YG4ID4gZnVzZW5cIDsKK+mmluW6nCA+IHNodWZ1XCA7CivkuqHniLYgPiBib3VmdVwgOwor5pmu6YGNID4gZnVoZW5cIDsKK+S9meWvkiA+IHlva2FuXCA7CivmmYLplpMgPiBqaWthblwgOwor5bCB5Y2wID4gZnV1aW5cIDsKK+itnOmdoiA+IGZ1bWVuXCA7Civku7vmnJ8gPiBuaW5raVwgOwor6LWt5ZyfID4gc2hhZG9cIDsKK+WutuWxiyA+IGthb2t1XCA7CivlrrblsYUgPiBrYWt5b1wgOwor6K6a6L6eID4gc2FuamlcIDsKK+iBluayuSA+IHNlaXl1XCA7CivohZDkubEgPiBmdXJhblwgOwor5bCC5YuZID4gc2VubXVcIDsKK+eMn+iZjiA+IHJha2tvXCA7Civmma7ovrogPiBmdWhlblwgOwor5a+d5Z2KID4gbmVib3VcIDsKK+mjtOeFriA+IGFtZW5pXCA7CivmnqLmqZ8gPiBzdXVraVwgOwor576k6IieID4gZ3VuYnVcIDsKK+agueWfuiA+IGtvbmtpXCA7CivkvY/lsYUgPiBzdW1haVwgOwor6IOD5byxID4gaWpha3VcIDsKK+S8neaJiyA+IHRzdXRlXCA7CivlrrXlr50gPiB5b2luZVwgOwor5a6j5biDID4gc2VucHVcIDsKK+i2s+S4iyA+IHNva2thXCA7CivlsI/lg6cgPiBrb3pvdVwgOwor5a6d5bqrID4gaG91a29cIDsKK+mghui3ryA+IGp1bnJvXCA7CivkuIrojbcgPiB1d2FuaVwgOwor5a625a6dID4ga2Fob3VcIDsKK+WwhOWIqSA+IHNoYXJpXCA7CivnjJvomY4gPiBtb3Vrb1wgOwor5a2X5pu4ID4gamlzaG9cIDsKK+S4gOiRpiA+IGljaGlpXCA7Civlrq7lsYUgPiBtaXlhaVwgOwor6LWk5ZywID4gYWthamlcIDsKK+S9kOWumCA+IHNha2FuXCA7CivohLHlhY4gPiBkYXR0b1wgOwor6IGW5q+NID4gc2VpYm9cIDsKK+e+vee5lCA+IGhhb3JpXCA7CivohYvkuIsgPiBla2lrYVwgOwor576p6IKiID4gZ2lzaGlcIDsKK+mojuS5lyA+IGtpam91XCA7Civkvo3lj7IgPiBqaXNoaVwgOwor5a6Y5bqcID4ga2FucHVcIDsKK+acquefpSA+IG1pY2hpXCA7CivmmpfoppYgPiBhbnNoaVwgOwor5p6X5qqOID4gcmluZ29cIDsKK+S7o+ahiCA+IGRhaWFuXCA7CivogZbmrYwgPiBzZWlrYVwgOwor5LuK5qyhID4ga29uamlcIDsKK+iytOauvyA+IGtpZGVuXCA7CivkuIvoiLkgPiBnZXNlblwgOwor5LqL54qvID4gamloYW5cIDsKK+mmluWwviA+IHNodWJpXCA7CivotorlhqwgPiBldHRvdVwgOwor5a6J5b+DID4gYW5qaW5cIDsKK+eMruiKsSA+IGtlbmthXCA7CivogLPmvI8gPiBqaXJvdVwgOwor6LOc5pqHID4gc2hpa2FcIDsKK+S4gOiMjiA+IGlra2VpXCA7Civotbfljp8gPiBraWdlblwgOwor6IO45ZuyID4ga3lvdWlcIDsKK+Wtl+aVsCA+IGppc3V1XCA7CivosqrmsZogPiB0YW4nJ29cIDsKK+ePreasoSA+IGhhbmppXCA7CivkuIvohb8gPiBrYXRhaVwgOwor6aST5q27ID4gZ2FzaGlcIDsKK+aYn+mbsiA+IHNlaXVuXCA7Civlr7/lg48gPiBqdXpvdVwgOwor5L6h5YCkID4ga2FjaGlcIDsKK+S4jeiDvSA+IGZ1bm91XCA7CivlppbprZQgPiB5b3VtYVwgOwor55Kw5YyWID4ga2Fua2FcIDsKK+S4gOiJmCA+IGlzc291XCA7CivmnaXmvJQgPiByYWllblwgOwor5auM55aRID4ga2VuZ2lcIDsKK+i1t+WLlSA+IGtpZG91XCA7Civku67mlbAgPiBrYXN1dVwgOwor5L2Z5aG1ID4geW9qaW5cIDsKK+aZruizoiA+IGZ1Z2VuXCA7CivkuIDoiKwgPiBpcHBhblwgOwor5LyR5oSPID4ga3l1dWlcIDsKK+mkiuavjSA+IHlvdWJvXCA7Civlrrblo7AgPiBrYXNlaVwgOwor5a6f5a62ID4gamlra2FcIDsKK+S4i+iCoiA+IGthc2hpXCA7CivpoJDoqIAgPiB5b2dlblwgOwor5LiA6Ie0ID4gaXRjaGlcIDsKK+mnheWToSA+IGVraWluXCA7CivkvJrlvpcgPiBldG9rdVwgOwor5a+d5Y+wID4gbmVkYWlcIDsKK+S4i+iBniA+IGthYnVuXCA7CivkvbPlk4EgPiBrYWhpblwgOwor5a+h5Y2gID4ga2FzZW5cIDsKK+S4jeiAgSA+IGZ1cm91XCA7CivotaTlkbMgPiBha2FtaVwgOwor6K236YCBID4gZ29zb3VcIDsKK+WvvuS+oSA+IHRhaWthXCA7Civkvo/lhJIgPiBzaHVqdVwgOwor5bCK5LiLID4gc29ua2FcIDsKK+S7luadkSA+IHRhc29uXCA7CivmnZzmvI8gPiB6dXJvdVwgOwor5a+h5YuiID4ga2F6ZWlcIDsKK+Wum+WtlyA+IGF0ZWppXCA7Civmn7vlrpogPiBzYXRlaVwgOwor5a6X5a62ID4gc291a2VcIDsKK+S+jeWDpyA+IGppc291XCA7CivkvZnlnLAgPiB5b2NoaVwgOwor54md6aasID4gaGluYmFcIDsKK+e+juiCsiA+IGJpaWt1XCA7CivmoYjliIYgPiBhbmJ1blwgOwor6IO95ZCPID4gbm91cmlcIDsKK+S7j+aenCA+IGJ1a2thXCA7CivogJDngasgPiB0YWlrYVwgOwor6ICB54i6ID4gcm91eWFcIDsKK+iAgeeItiA+IHJvdWZ1XCA7Civorabpg6ggPiBrZWlidVwgOwor6aCt6JOLID4genVnYWlcIDsKK+i1pOWMliA+IHNla2thXCA7CivnkIbmlbAgPiByaXN1dVwgOwor5Lqc5rWBID4gYXJ5dXVcIDsKK+i1t+WCtSA+IGtpc2FpXCA7CivosaHniZkgPiB6b3VnZVwgOwor5LiA6ICDID4gaWtrb3VcIDsKK+adseatjCA+IHRvdWthXCA7Civorabpgo8gPiBrZWlyYVwgOwor5a6J5bGFID4gYW5reW9cIDsKK+adseaspyA+IHRvdW91XCA7Civpp4bli5UgPiBrdWRvdVwgOwor5a655ZmoID4geW91a2lcIDsKK+i0lOWxkyA+IGhpaWtpXCA7Civlr6HlhbUgPiBrYWhlaVwgOwor5LiW57SAID4gc2Vpa2lcIDsKK+S7luaWuSA+IHRhaG91XCA7Civku4rmnJ8gPiBrb25raVwgOwor5p6c5patID4ga2FkYW5cIDsKK+S7u+aEjyA+IG5pbicnaVwgOwor6aGe57iBID4gcnVpZW5cIDsKK+S9meWWmCA+IHlvemVuXCA7CivorpLoqqMgPiB6YW5idVwgOwor5Lqh5q+NID4gYm91Ym9cIDsKK+aenOaVoiA+IGtha2FuXCA7CivlronlrpogPiBhbnRlaVwgOwor5LiL57eaID4ga2FzZW5cIDsKK+S4i+e3kiA+IHNhZ2VvXCA7CivlroflrpkgPiB1Y2h1dVwgOwor6K6S6Ki0ID4gemFuc29cIDsKK+WumOWlsyA+IGthbmpvXCA7Civpn7PoqakgPiBvbnNoaVwgOwor5LiN57SUID4gZnVqdW5cIDsKK+S4jee0jSA+IGZ1bm91XCA7CivkvI7lt6UgPiBnaWtvdVwgOwor6Z+z6KiTID4gb25rdW5cIDsKK+izouaEmiA+IGtlbmd1XCA7Civog4Plo4EgPiBpaGVraVwgOwor5L2Z5ZG9ID4geW9tZWlcIDsKK+S8neWutiA+IGRlbmthXCA7CivmnZzmsI8gPiB0b3VqaVwgOwor5LiN57KLID4gYnVzdWlcIDsKK+WmlumbsiA+IHlvdXVuXCA7CivotbTku7sgPiBmdW5pblwgOwor6LOm5oCnID4gZnVzZWlcIDsKK+mmtOWMliA+IGp1bmthXCA7CivkuIDnt5ogPiBpc3NlblwgOwor5LiA57eSID4gaXNzaG9cIDsKK+S7o+aJkyA+IGRhaWRhXCA7Civku67mg7MgPiBrYXNvdVwgOwor5qGI5Lu2ID4gYW5rZW5cIDsKK+eNo+eariA+IGp1dWhpXCA7CivkupTmrrUgPiBnb2RhblwgOwor6LOb5oSPID4gc2FuJydpXCA7Civmnb/mnKggPiBoYW5naVwgOwor6LK05pa5ID4ga2lob3VcIDsKK+mjouawkSA+IGtpbWluXCA7CivkuIDntbEgPiBpdHRvdVwgOwor6aOb5rOJID4gaGlzZW5cIDsKK+acqueEtiA+IG1pemVuXCA7Civpp5DkvIogPiBjaHV1aVwgOwor5aW96aSMID4ga291amlcIDsKK+aYoOmFjSA+IGVpaGFpXCA7CivlrrblkJsgPiBrYWt1blwgOwor5a2k5biGID4ga29oYW5cIDsKK+WutuWQjSA+IGthbWVpXCA7CivkuIDns7sgPiBpa2tlaVwgOwor5a+h5Lq6ID4ga2FqaW5cIDsKK+S7ruaApyA+IGthc2VpXCA7CivkvZzli5UgPiBzYWRvdVwgOwor5LiA57O4ID4gaXNzaGlcIDsKK+Wtl+W9oiA+IGppa2VpXCA7CivkuI3nrYkgPiBmdXRvdVwgOwor5qCh5YuZID4ga291bXVcIDsKK+S6uuaZgiA+IG5pbmppXCA7CivnvojntYYgPiBraWhhblwgOwor6aCt6ISzID4genVub3VcIDsKK+S9meWLoiA+IHlvc2VpXCA7CivkuIvnrYkgPiBrYXRvdVwgOwor6aeG5L2/ID4ga3VzaGlcIDsKK+S9s+S+iyA+IGthcmVpXCA7CivkuozmrbsgPiBuaXNoaVwgOwor5a6d5ZmoID4gaG91a2lcIDsKK+acqOeBsCA+IGtpYmFpXCA7CivkuIvnq68gPiBrYXRhblwgOwor5L2Z5YmwID4geW9qb3VcIDsKK+e+hee0lyA+IHJhc2hhXCA7CivlpYfpupcgPiBraXJlaVwgOwor5LuV5omLID4gc2hpdGVcIDsKK+WtpOWztiA+IGtvdG91XCA7CivppqzliLggPiBiYWtlblwgOwor5a6u5Y+4ID4gZ3V1amlcIDsKK+mmmeWRsyA+IGtvdW1pXCA7CivkvZnliIYgPiB5b2J1blwgOwor5Lyd5aWHID4gZGVua2lcIDsKK+eQhuaDsyA+IHJpc291XCA7CivkvbPku4AgPiBrYWp1dVwgOwor5L2z5Lq6ID4ga2FqaW5cIDsKK+S4gOeuoSA+IGlra2FuXCA7CivlrqXlkowgPiB5dXV3YVwgOwor5L2R5YqpID4geXV1am9cIDsKK+agoeWFtyA+IGtvdWd1XCA7CivorbDoq5YgPiBnaXJvblwgOwor5LiA562JID4gaXR0b3VcIDsKK+abuOeUuyA+IHNob2dhXCA7CivnjbLniakgPiBlbW9ub1wgOwor6IO95LqLID4gbm91amlcIDsKK+WlrumjmyA+IGZ1bnBpXCA7CivogqXlpKcgPiBoaWRhaVwgOwor5L2Z5YWaID4geW90b3VcIDsKK+S9meWFiSA+IHlva291XCA7CivosarmsJcgPiBnb3VraVwgOwor55CG5oCnID4gcmlzZWlcIDsKK+aZguirliA+IGppcm9uXCA7CivoraborbcgPiBrZWlnb1wgOwor6LKg5pWwID4gZnVzdXVcIDsKK+S6jOanmCA+IG5peW91XCA7CivnvqnnnLwgPiBnaWdhblwgOwor5p+75ZWPID4gc2Ftb25cIDsKK+eQhuW/tSA+IHJpbmVuXCA7CivpnZLppqwgPiBhb3VtYVwgOwor5L2O5YipID4gdGVpcmlcIDsKK+itq+iqniA+IHNlbmdvXCA7CivmnKrmuoAgPiBtaW1hblwgOwor5a625YaFID4ga2FuYWlcIDsKK+S4luefpSA+IHNlY2hpXCA7Civlrprlk6EgPiB0ZWlpblwgOwor6LK35omLID4ga2FpdGVcIDsKK+WuueWEgCA+IHlvdWdpXCA7Civlrp/lkKYgPiBqaXBwaVwgOwor5p2l5pyfID4gcmFpa2lcIDsKK+S5g+eItiA+IGRhaWZ1XCA7CivlrrblhYQgPiBrYWtlaVwgOwor5a2j5a2QID4ga2lzaGlcIDsKK+S6leahgSA+IGlnZXRhXCA7Civmmpfnv7MgPiBhbicnZWlcIDsKK+acqua4iCA+IG1pc2FpXCA7CivosrTmiYAgPiBraXNob1wgOwor5aeJ6LK0ID4gYW5la2lcIDsKK+aZguioiCA+IHRva2VpXCA7CivogIHmr40gPiByb3Vib1wgOwor5LuW5b+1ID4gdGFuZW5cIDsKK+Wum+WQjSA+IGF0ZW5hXCA7CivlpbPpm6MgPiBqb25hblwgOwor5aW06Zq3ID4gZG9yZWlcIDsKK+S4luebuCA+IHNlc291XCA7Civku7LlsYUgPiBuYWthaVwgOwor6aGV56S6ID4ga2VuamlcIDsKK+S4jeefpSA+IGZ1Y2hpXCA7CivlrpjlkI8gPiBrYW5yaVwgOwor5pyr5rS+ID4gbWFwcGFcIDsKK+S9leWAiyA+IG5hbmtvXCA7CivpnZ7pm6MgPiBoaW5hblwgOwor5LiL55+lID4gZ2VkamlcIDsKK+Wkqum8kyA+IHRhaWtvXCA7CivkuIvnnrAgPiBrYWthblwgOwor6aaZ5YW3ID4ga291Z3VcIDsKK+mgiOiHviA+IHNodXl1XCA7CivmnJ3mua8gPiBhc2F5dVwgOwor5LqU5pu4ID4gZ29zaG9cIDsKK+S6lOabtCA+IGdva291XCA7CivlpZTppqwgPiBob25iYVwgOwor6IGW5oGpID4gc2Vpb25cIDsKK+WrjOawlyA+IGtlbmtpXCA7Civlp5ToqJcgPiBpdGFrdVwgOwor5LiN55ygID4gZnVtaW5cIDsKK+S6nOaXjyA+IGF6b2t1XCA7Civnjovms5UgPiBvdWhvdVwgOwor5LuB5oWIID4gamluamlcIDsKK+S7ruWvkyA+IGthZ3V1XCA7Civku4/lvpIgPiBidXR0b1wgOwor55CG5belID4gcmlrb3VcIDsKK+adv+aIuCA+IGl0YWRvXCA7CivkurrmiJEgPiBqaW5nYVwgOwor5a625L6LID4ga2FyZWlcIDsKK+iyp+aJkyA+IGhpbmRhXCA7CivkvZnkurogPiB5b25pblwgOwor5LuW5bqXID4gdGF0ZW5cIDsKK+Wkp+m7hCA+IGRhaW91XCA7CivkuIrnnYAgPiB1d2FnaVwgOwor5aSn6bq7ID4gdGFpbWFcIDsKK+acrOawlyA+IGhvbmtpXCA7Civku67lrpogPiBrYXRlaVwgOwor5LuW5bm0ID4gdGFuZW5cIDsKK+iAgeaouSA+IHJvdWp1XCA7Civku5jluK8gPiBmdXRhaVwgOwor6IOO5YWQID4gdGFpamlcIDsKK+aYr+iqjSA+IHplbmluXCA7CivosqDmi4UgPiBmdXRhblwgOwor5a625LydID4ga2FkZW5cIDsKK+aal+e3miA+IGFuc2VuXCA7CivkuIrnm64gPiB1d2FtZVwgOwor5qCE5YagID4gZWlrYW5cIDsKK+S9juS+oSA+IHRlaWthXCA7CivnjovmsLQgPiBvdXN1aVwgOwor5LuK5b6MID4ga29uZ29cIDsKK+iBluW+kiA+IHNlaXRvXCA7CivkuJbnlYwgPiBzZWthaVwgOwor5qCE5YW4ID4gZWl0ZW5cIDsKK+Wtn+WlsyA+IG1vdWpvXCA7Civpo5vmnaUgPiBoaXJhaVwgOwor5a625LukID4ga2FyZWlcIDsKK+S6jOabuSA+IG5pc291XCA7Civkuozmm7QgPiBuaWtvdVwgOwor5a605LyaID4gZW5rYWlcIDsKK+mdkumbsiA+IHNlaXVuXCA7CivppqzkuIogPiBiYWpvdVwgOwor5LiK55quID4gam91aGlcIDsKK+S4gOefoiA+IGlzc2hpXCA7CivkvZnkuJYgPiB5b3NlaVwgOwor6aas5LiBID4gYmF0ZWlcIDsKK+WutuS7gCA+IGthanV1XCA7CivmoITlhYkgPiBlaWtvdVwgOwor5a625Lq6ID4ga2VuaW5cIDsKK+itpuihmyA+IGtlaWVpXCA7CivlrZ3lpbMgPiBrb3Vqb1wgOwor5LuB5oGVID4gamluam9cIDsKK+Wtn+WkjyA+IG1vdWthXCA7CivmlpHps6kgPiBpa2FydVwgOwor6aKo5rOiID4gZnV1aGFcIDsKK+adpeaPtCA+IHJhaWVuXCA7Civku4rluqYgPiBrb25kb1wgOwor5LiL55azID4gZ2VrYW5cIDsKK+S8muWToSA+IGthaWluXCA7Civkub7mnq8gPiBrYW5rb1wgOwor5a2k5Z+OID4ga29qb3VcIDsKK+mfs+iJsiA+IG5laXJvXCA7Civkub7mnpwgPiBrYW5rYVwgOwor6ICM5p2lID4gamlyYWlcIDsKK+adnOaSsCA+IHp1c2FuXCA7CivorY7oqZAgPiBraXNzYVwgOwor5LiK55aPID4gam91c29cIDsKK+S4i+eVqiA+IGthYmFuXCA7CivkuI3nlKggPiBmdXlvdVwgOwor6ICD5qGIID4ga291YW5cIDsKK+S4i+eVjCA+IGdla2FpXCA7CivkuIvnlLcgPiBnZW5hblwgOwor5LiL55SwID4gZ2VkZW5cIDsKK+S9juS4iyA+IHRlaWthXCA7CivnkIblrrkgPiByaXlvdVwgOwor5pqW57C+ID4gbm9yZW5cIDsKK+iytOW6lyA+IGtpdGVuXCA7Civkub7mnJ8gPiBrYW5raVwgOwor6ICD5p+7ID4ga291c2FcIDsKK+S7luWxsSA+IHRhemFuXCA7CivkvJ3lj5cgPiBkZW5qdVwgOwor5Li75ryUID4gc2h1ZW5cIDsKK+isnei+niA+IHNoYWppXCA7Civkuojmlq0gPiB5b2RhblwgOwor5a2Q5aWzID4gc2hpam9cIDsKK+S6uuW+jCA+IGppbmdvXCA7CivnjovmqKkgPiBvdWtlblwgOwor6aOb5pWjID4gaGlzYW5cIDsKK+aal+eulyA+IGFuemFuXCA7Civog47ku5QgPiB0YWlqaVwgOwor5Luu5aOwID4ga2FzZWlcIDsKK+WsjOaFiyA+IHNoaW5hXCA7Civnvarnp5EgPiB6YWlrYVwgOwor6IKl5Y6aID4gaGlrb3VcIDsKK+iyoOaApyA+IGZ1c2VpXCA7CivkupLmj5sgPiBnb2thblwgOwor576O55S3ID4gYmluYW5cIDsKK+mcsumhlSA+IHJva2VuXCA7Civnvo7nlLAgPiBiaWRlblwgOwor5Ly25L+QID4gcmVpcmlcIDsKK+WkqemtlCA+IHRlbm1hXCA7CivlrprkvqEgPiB0ZWlrYVwgOwor6Zyy6aCtID4gcm90b3VcIDsKK+iumue+jiA+IHNhbmJpXCA7CivkuIDnlJ8gPiBpc3NlaVwgOwor5a6J5YWoID4gYW56ZW5cIDsKK+S6lOaMhyA+IGdvc2hpXCA7CivogrLlhZAgPiBpa3VqaVwgOwor572M57KfID4ga2VzaGlcIDsKK+Wuo+S4iyA+IHNlbmdlXCA7Civku4/lrrYgPiBidWtrZVwgOwor54m56KiYID4gdG9ra2lcIDsKK+iyqOW5oyA+IGthaGVpXCA7CivlrpjkvY0gPiBrYW4nJ2lcIDsKK+S4gOeSsCA+IGlra2FuXCA7Civml6LpgYIgPiBraXN1aVwgOwor5a215Y21ID4gZnVyYW5cIDsKK+WujOWCmSA+IGthbmJpXCA7CivpoYznlLsgPiBkYWlnYVwgOwor5aW96YGLID4ga291dW5cIDsKK+iBluWvvyA+IHNlaWp1XCA7Civpo5vmj5ogPiBoaXlvdVwgOwor55CD5aiBID4ga3l1dWlcIDsKK+isueipsSA+IGtpbndhXCA7CivkuI3niq8gPiBmdWJvblwgOwor5LuK5a61ID4ga295b2lcIDsKK+WuiOWCmSA+IHNodWJpXCA7CivkupTmiJIgPiBnb2thaVwgOwor54yc55aRID4gc2FpZ2lcIDsKK+WumOS6iyA+IGthbmppXCA7CivmnZ7mhoIgPiBraXl1dVwgOwor5LuK5a2jID4ga29ua2lcIDsKK+eQhuWkliA+IHJpZ2FpXCA7CivpnaLpg6ggPiBtZW5idVwgOwor5piO6KiYID4gbWVpa2lcIDsKK+S7luWnkyA+IHRhc2VpXCA7CivlpbPpg44gPiBqb3JvdVwgOwor5aSp6aasID4gdGVuYmFcIDsKK+iyoeW4gyA+IHNhaWZ1XCA7CivmnKrmnaUgPiBtaXJhaVwgOwor5LiN54eDID4gZnVuZW5cIDsKK+S4gOeMriA+IGlra29uXCA7CivkupTmhJ8gPiBnb2thblwgOwor5pa96YygID4gc2Vqb3VcIDsKK+WuieS9jyA+IGFuanV1XCA7CivogLPlupUgPiBqaXRlaVwgOwor6Z2e6YGTID4gaGlkb3VcIDsKK+S6lOaDhSA+IGdvam91XCA7CivpnKfpm7AgPiBtdWZ1blwgOwor5p2/5bGLID4gaXRheWFcIDsKK+S4gOeKrCA+IGlra2VuXCA7CivkupTmgqogPiBnb2FrdVwgOwor5a2m5Yy6ID4gZ2Fra3VcIDsKK+S6uuWvvyA+IGppbmp1XCA7CivmnInmqZ8gPiB5dXVraVwgOwor6K6D576OID4gc2FuYmlcIDsKK+S4jueCuSA+IHlvdGVuXCA7CivkuIDniYggPiBpcHBhblwgOwor5Lq65a62ID4gamlua2FcIDsKK+mgreeariA+IHRvdWhpXCA7CivmnKrmmI4gPiBtaW1laVwgOwor5LqS5oG1ID4gZ29rZWlcIDsKK+S6i+aFiyA+IGppdGFpXCA7CivmnpzloLEgPiBrYWhvdVwgOwor6Z2i6LyqID4gb21vd2FcIDsKK+iyp+WvjCA+IGhpbnB1XCA7Civnj77loLQgPiBnZW5iYVwgOwor6LKn5a62ID4gaGlua2FcIDsKK+mkiuWutiA+IHlvdWthXCA7CivoqrLpoYwgPiBrYWRhaVwgOwor6aGe54GrID4gcnVpa2FcIDsKK+WtmOWQpiA+IHpvbnBpXCA7CivkuqTlt64gPiBrb3VzYVwgOwor5p2/5a2QID4gaXRhZ29cIDsKK+WloOmDvSA+IHRlbnRvXCA7Civkuovmg4UgPiBqaWpvdVwgOwor6LK05aeJID4ga2lzaGlcIDsKK+S6iOaEnyA+IHlva2FuXCA7CivogZblpJwgPiBzZWl5YVwgOwor5LuK5aSPID4ga29ua2FcIDsKK+Wtl+WPtyA+IGppZ291XCA7Civkuojmg7MgPiB5b3NvdVwgOwor5LqU5b2pID4gZ29zYWlcIDsKK+S7u+WLmSA+IG5pbm11XCA7Civmlrnph4wgPiBob3VyaVwgOwor546L5pS/ID4gb3VzZWlcIDsKK+Wto+WIiiA+IGtpa2FuXCA7Civmnrblj7AgPiBrYWRhaVwgOwor576O54K5ID4gYml0ZW5cIDsKK+S6jOW/tSA+IG5pbmVuXCA7CivorJvoqbEgPiBrb3V3YVwgOwor5LiA54K5ID4gaXR0ZW5cIDsKK+izm+WQpiA+IHNhbnBpXCA7CivlpKfpm6ggPiBvb2FtZVwgOwor5aSV6aSJID4geXV1Z2VcIDsKK+WkqumZsCA+IHRhaWluXCA7CivmnJ3ml6UgPiBhc2FoaVwgOwor5Luj5ZOhID4gZGFpaW5cIDsKK+S4iua8lCA+IGpvdWVuXCA7Civpm7Lpq5ggPiB1bmtvdVwgOwor5LqU5bi4ID4gZ29qb3VcIDsKK+aWh+mbhSA+IGJ1bmdhXCA7CivkuqTlsL4gPiBrb3ViaVwgOwor5LiN5rqAID4gZnVtYW5cIDsKK+i0iOS4jiA+IHpvdXlvXCA7CivkubHmiZMgPiByYW5kYVwgOwor5aSW6aGMID4gZ2VkYWlcIDsKK+eJoeigoyA+IGJvcmVpXCA7Civlpa7otbcgPiBmdW5raVwgOwor5Lq65aSrID4gbmlucHVcIDsKK+iAtuWsoiA+IHlham91XCA7CivkupLluIIgPiBnb3NoaVwgOwor6aSK5aWzID4geW91am9cIDsKK+WmhOiqniA+IG1vdWdvXCA7Civosp7lqaYgPiB0ZWlmdVwgOwor576p5rCRID4gZ2ltaW5cIDsKK+WkmumdoiA+IHRhbWVuXCA7CivogLPlrZQgPiBqaWtvdVwgOwor6Kqe6aGeID4gZ29ydWlcIDsKK+aWuemAlCA+IGhvdXRvXCA7Civku4/lmaggPiBidWtraVwgOwor5Lqk5a6cID4ga291Z2lcIDsKK+aXpeiqsiA+IG5pa2thXCA7Civoga/lj6UgPiByZW5rdVwgOwor6Kqe6aCtID4gZ290b3VcIDsKK+S6nOWxniA+IGF6b2t1XCA7CivmnInmnJ8gPiB5dXVraVwgOwor6LOb5YqpID4gc2Fuam9cIDsKK+iqnumghiA+IGdvanVuXCA7CivkuLvmn7sgPiBzaHVzYVwgOwor5a2j5YCZID4ga2lrb3VcIDsKK+WkmumboyA+IHRhbmFuXCA7CivlrZflhbggPiBqaXRlblwgOwor6LK05ZywID4ga2ljaGlcIDsKK+S7o+WNsCA+IGRhaWluXCA7Civnvqnmra8gPiBnaXNoaVwgOwor5aW96Kq8ID4ga291Z2lcIDsKK+S4jea1hCA+IGZ1am91XCA7Civml6XoqJggPiBuaWtraVwgOwor5Lul5YyXID4gaWhva3VcIDsKK+WtkOWIhiA+IGtvYnVuXCA7CivnjJvngasgPiBtb3VrYVwgOwor5aSW6ZyAID4gZ2FpanVcIDsKK+WtpuS9jSA+IGdha3VpXCA7CivmnKzmiYsgPiBob250ZVwgOwor5p2l5a2jID4gcmFpa2lcIDsKK+iynuWlsyA+IHRlaWpvXCA7Civpn7PnqIsgPiBvbnRlaVwgOwor57+75oSPID4gaG9uJydpXCA7CivorIDorbAgPiBib3VnaVwgOwor5LiN5rOVID4gZnVob3VcIDsKK+e+jua4ryA+IGJpa291XCA7Civku6Pli5kgPiBkYWltdVwgOwor5LiN5rK7ID4gZnVjaGlcIDsKK+e+hea8oiA+IHJha2FuXCA7CivppKzlj6MgPiBrb2tvdVwgOwor572554G9ID4gcmlzYWlcIDsKK+acquaIkCA+IG1pc2VpXCA7CivmnIDmnJ8gPiBzYWlnb1wgOwor6Zuq6aeEID4gc2V0dGFcIDsKK+WklemZvSA+IHl1dWhpXCA7CivlpJzplpMgPiB5YWthblwgOwor5Lqh5ammID4gYm91ZnVcIDsKK+Wlh+mBhyA+IGtpZ3V1XCA7Civmm7jmnrYgPiBzaG9rYVwgOwor6ICB5b6MID4gcm91Z29cIDsKK+S7gOWZqCA+IGp1dWtpXCA7Civml4XosrsgPiByeW9oaVwgOwor5LqV5a6IID4gaW1vcmlcIDsKK+mdkuiynSA+IGFvZ2FpXCA7CivkuIvmsLQgPiBnZXN1aVwgOwor5LqU5a6YID4gZ29rYW5cIDsKK+WliOi+uiA+IG5haGVuXCA7CivmlbTpmaQgPiBzZWlqb1wgOwor5LiN5q+bID4gZnVtb3VcIDsKK+S4i+awkSA+IGdlbWluXCA7CivmnKzmhI8gPiBob24nJ2lcIDsKK+WrjOaCqiA+IGtlbicnb1wgOwor5pen6KGjID4ga3l1dWlcIDsKK+iyp+WcnyA+IGhpbmRvXCA7Civml6Loo70gPiBraXNlaVwgOwor6Zu76ZuiID4gZGVucmlcIDsKK+S4iuawlyA+IGpvdWtpXCA7CivpoZ7mr5QgPiBydWloaVwgOwor6aOi5a+SID4ga2lrYW5cIDsKK+S4gOa0lyA+IGlzc2VuXCA7CivkuIvmrr8gPiBnZWRlblwgOwor5LiN5q27ID4gZnVzaGlcIDsKK+S4i+autSA+IGdlZGFuXCA7Civpm7bpnLIgPiByZWlyb1wgOwor5LiN5q2jID4gZnVzZWlcIDsKK+S6jOWwgSA+IG5pZnV1XCA7Civpm7fpm7IgPiByYWl1blwgOwor5a2X5L2TID4gaml0YWlcIDsKK+acn+aIkCA+IGtpc2VpXCA7Civku5bli5UgPiB0YWRvdVwgOwor6aGe5q2MID4gcnVpa2FcIDsKK+isgeimiyA+IGVra2VuXCA7CivkuqHlpKsgPiBib3VmdVwgOwor5LiK5q2vID4gdXdhYmFcIDsKK+S6jOWuriA+IG5pZ3V1XCA7CivmlpfphZIgPiB0b3NodVwgOwor5LuW5YqxID4gdGFyZWlcIDsKK+S4jeashCA+IGZ1cmFuXCA7Civnj63lk6EgPiBoYW5pblwgOwor6Ku36KqmID4gZnV1anVcIDsKK+WrjOW/jCA+IGtlbmdpXCA7Civku4rlj6QgPiBraW5rb1wgOwor6Kuu6K2wID4gc2hpZ2lcIDsKK+S4ieasoSA+IHNhbmppXCA7CivkuIDmsLQgPiBpc3N1aVwgOwor5LuH5ZCNID4gYWRhbmFcIDsKK+S6iOWumiA+IHlvdGVpXCA7CivosrTlkJsgPiBraWt1blwgOwor5pat6LevID4gZGFucm9cIDsKK+eLvOeFmSA+IHJvdWVuXCA7CivosrTlkI0gPiBraW1laVwgOwor6LK05Y+wID4ga2lkYWlcIDsKK+S7ruS7pCA+IHRhdG9lXCA7CivkuIDmrrUgPiBpdHRhblwgOwor5aWz6KOFID4gam9zb3VcIDsKK+eJm+iSoSA+IGdvYm91XCA7CivmmpfnhLYgPiBhbnplblwgOwor5LiA5q27ID4gaXNzaGlcIDsKK+S4gOatsyA+IGlzc2FpXCA7CivmnaXloLQgPiByYWliYVwgOwor6Kqy6YeRID4ga2FraW5cIDsKK+mfs+ebpCA+IG9uYmFuXCA7Civku4vliqkgPiBrYWlqb1wgOwor5LiH5qmfID4gYmFua2lcIDsKK+mjr+WgtCA+IGhhbmJhXCA7Civnvormra8gPiBzaGlkYVwgOwor6aKo5oOFID4gZnV6ZWlcIDsKK+S7o+S+oSA+IGRhaWthXCA7CivmnrbkuIogPiBrYWpvdVwgOwor5aOw6Z+zID4gc2Vpb25cIDsKK+aal+eCuSA+IGFudGVuXCA7Civni7zngasgPiByb3VrYVwgOwor5LuV5YSAID4gc2hpZ2lcIDsKK+aalueCiSA+IGRhbnJvXCA7CivpnZ7ooYwgPiBoaWtvdVwgOwor5Lm+5a2jID4ga2Fua2lcIDsKK+Wkp+mDqCA+IGRhaWJ1XCA7CivlpYnos4AgPiBob3VnYVwgOwor6LGq5a62ID4gZ291a2FcIDsKK+aZguepuiA+IGppa3V1XCA7Civpn7Pnl7QgPiBvbmNoaVwgOwor5pyf5b6FID4ga2l0YWlcIDsKK+aWh+mDqCA+IG1vbmJ1XCA7CivkupXloLAgPiBpc2VraVwgOwor5aSn6YGOID4gdGFpa2FcIDsKK+aal+a+uSA+IGFudGFuXCA7CivnjovluKsgPiBvdXNoaVwgOwor6Kmx6aGMID4gd2FkYWlcIDsKK+S6i+WkpyA+IGppZGFpXCA7CivlpJrph40gPiB0YWp1dVwgOwor6Kmx6aCtID4gd2F0b3VcIDsKK+S6jOWjqyA+IG5pc2hpXCA7CivkuovlpIkgPiBqaWhlblwgOwor5pmp55SfID4gb2t1dGVcIDsKK+mbqOmWkyA+IGFtYWFpXCA7CivlppboibYgPiB5b3VlblwgOwor5aSW6YeOID4gZ2FpeWFcIDsKK+S4i+agoSA+IGdla291XCA7Civnj77kvqEgPiBnZW5rYVwgOwor6KuW6K2wID4gcm9uZ2lcIDsKK+iyoOWPtyA+IGZ1Z291XCA7Civoqabpo7IgPiBzaGlpblwgOwor6Kqt6YGOID4gZG9ra2FcIDsKK+aYjue+jiA+IG1laWJpXCA7Civku5jkvJogPiBmdWthaVwgOwor6LK05YWsID4ga2lrb3VcIDsKK+iri+iyoCA+IHVrZW9pXCA7CivkuLvmiJEgPiBzaHVnYVwgOwor6aO95ZKMID4gaG91d2FcIDsKK+S6jOWhgSA+IG5pcnVpXCA7CivoqqTphY0gPiBnb2hhaVwgOwor6LK05YWEID4ga2lrZWlcIDsKK+Wlh+itpiA+IGtpa2VpXCA7Civpm6LplpMgPiByaWthblwgOwor57+75a2XID4gaG9uamlcIDsKK+mjm+WgsSA+IGhpaG91XCA7CivosrTlg6cgPiBraXNvdVwgOwor57mL6L6eID4ga2VpamlcIDsKK+aXpeiPryA+IG5pa2thXCA7CivkuojloLEgPiB5b2hvdVwgOwor5LuW5Lq6ID4gdGFuaW5cIDsKK+mbhOmjmyA+IHl1dWhpXCA7CivlpJbpg6ggPiBnYWlidVwgOwor6KuW6KqeID4gcm9uZ29cIDsKK+abnOaXpSA+IHlvdWJpXCA7CivogIHlqaYgPiByb3VmdVwgOwor5aSW6YOOID4gdWlyb3VcIDsKK+mdkuidvyA+IGFvYmFlXCA7Civnvajms5UgPiBhbnBvdVwgOwor5pqX5rigID4gYW5reW9cIDsKK+iAgeWphiA+IHJvdWJhXCA7CivlpYfoq4cgPiBraWRhblwgOwor6LKh5YuZID4gemFpbXVcIDsKK+S4i+abuCA+IGdlc2hvXCA7Civkuq3ljYggPiB0ZWlnb1wgOwor5pa96KGMID4gc2Vrb3VcIDsKK+S4gOagoSA+IGlra291XCA7CivmnIDmhJsgPiBzYWlhaVwgOwor5puW5pinID4gYWltYWlcIDsKK+aXqeiLlyA+IHNhbmFlXCA7CivkuIfmnLYgPiBiYW5kYVwgOwor5pys5a62ID4gaG9ua2VcIDsKK+WklumBkyA+IGdlZG91XCA7CivlqprmhYsgPiBiaXRhaVwgOwor5pmC55+tID4gaml0YW5cIDsKK+aal+a2mSA+IGFucnVpXCA7CivmnInlv4MgPiB1c2hpblwgOwor54++5LiWID4gZ2VuemVcIDsKK+S6jOWbniA+IG5pa2FpXCA7Civnj77kuIsgPiBnZW5rYVwgOwor5pqi5rCXID4gbm9ua2lcIDsKK+iAgeWmkyA+IHJvdWdpXCA7CivmnKrlrpogPiBtaXRlaVwgOwor6ICV5ZyfID4ga291ZG9cIDsKK+acrOWtlyA+IGhvbmppXCA7CivkuI3mmJMgPiBmdWVraVwgOwor5Lqk5Y+JID4ga291c2FcIDsKK+acquWujCA+IG1pa2FuXCA7CivlpYfoqIggPiBraWtlaVwgOwor5LiN5piOID4gZnVtZWlcIDsKK+iyvOS7mCA+IHRlbnB1XCA7CivmnKvlraMgPiBtYWtraVwgOwor6ICB5aWzID4gcm91am9cIDsKK+S4u+aBqSA+IHNodW9uXCA7CivkuIDmna8gPiBpcHBhaVwgOwor576O5pysID4gYmlob25cIDsKK+S4ieaZgiA+IHNhbmppXCA7CivkuIrmmKAgPiBqb3VlaVwgOwor5aWH6KazID4ga2lrYW5cIDsKK+eOi+WtqyA+IG91c29uXCA7CivkuIvml6wgPiBnZWp1blwgOwor5LiN5patID4gZnVkYW5cIDsKK+S4gOacrCA+IGlwcG9uXCA7CivkuI3mlokgPiBmdXNlaVwgOwor5LiN5paHID4gZnVidW5cIDsKK+adkOWZqCA+IHphaWtpXCA7CivkuIvmlrkgPiBrYWhvdVwgOwor5LiN5pW0ID4gZnVzZWlcIDsKK+S4jeaVrCA+IGZ1a2VpXCA7CivkuInml6UgPiBtaWtrYVwgOwor5LiA5pu5ID4gaXNzb3VcIDsKK+S4gOabuCA+IGlzc2hvXCA7CivmmYLnm7ggPiBqaXNvdVwgOwor5LiA5pu0ID4gaWtrb3VcIDsKK+Wni+elliA+IHNoaXNvXCA7CivkuI3mlZcgPiBmdWhhaVwgOwor5LiN5pWPID4gZnViaW5cIDsKK+WkqeizpiA+IHRlbnB1XCA7CivosY7lrZAgPiBqdXNoaVwgOwor6LGK5a+MID4gaG91ZnVcIDsKK+e+juaZryA+IGJpa2VpXCA7CivpnLLoposgPiByb2tlblwgOwor576p5oyZID4gZ2lreW9cIDsKK+S4i+aUviA+IGthaG91XCA7Civoq4foqbEgPiBkYW53YVwgOwor5pyA5b6MID4gc2FpZ29cIDsKK+iytOS6uiA+IGtpamluXCA7CivmlazpgaAgPiBrZWllblwgOwor5pyq5amaID4gbWlrb25cIDsKK+acneWvnSA+IGFzYW5lXCA7CivosrjkuI4gPiB0YWl5b1wgOwor5LqY5Y+kID4ga291a29cIDsKK+aaluawlyA+IG5vbmtpXCA7Civkub7lm7ogPiBrYW5rb1wgOwor5LiN5pKTID4gZnV0b3VcIDsKK+e2uum6lyA+IGtpcmVpXCA7CivosqDlgrUgPiBmdXNhaVwgOwor5LmZ5a2QID4gb3RvZ29cIDsKK+WpmuacnyA+IGtvbmtpXCA7CivlpKfosYYgPiBkYWl6dVwgOwor6Kyb576pID4ga291Z2lcIDsKK+mbqOmHjyA+IHVyeW91XCA7CivkuIDml6YgPiBpdHRhblwgOwor5aWH6KGMID4ga2lrb3VcIDsKK+S6uuS9jSA+IGppbicnaVwgOwor576p5omLID4gZ2lzaHVcIDsKK+e+juaWhyA+IGJpYnVuXCA7CivkuIDmlrkgPiBpcHBvdVwgOwor5pqR5rCXID4gc2hva2lcIDsKK+S4gOaWpCA+IGlra2luXCA7CivnvqnmiKYgPiBnaXNlblwgOwor5LiA5paRID4gaXBwYW5cIDsKK+S4gOaWiSA+IGlzc2VpXCA7CivoqrnorJcgPiBoaWJvdVwgOwor5peX6ImmID4ga2lrYW5cIDsKK+e3i+mviSA+IGhpZ29pXCA7CivkuIDmlZcgPiBpcHBhaVwgOwor576I5peFID4ga2lyeW9cIDsKK+S6lOWNgSA+IGdvanV1XCA7CivnvqnmhqQgPiBnaWZ1blwgOwor5LqM5ZCbID4gbmlrdW5cIDsKK+S4luaJjSA+IHNlc2FpXCA7CivosqvkuLsgPiBrYW5qdVwgOwor5LqM5Y+3ID4gbmlnb3VcIDsKK+acgOW3piA+IHNhaXNhXCA7CivmnKrlor4gPiBtaWtvblwgOwor5Lqh5YWQID4gYm91amlcIDsKK+abuOW6qyA+IHNob2tvXCA7CivmnKzloLQgPiBob25iYVwgOwor6Zu76LevID4gZGVucm9cIDsKK+WkluiyqCA+IGdhaWthXCA7CivkuZnlpbMgPiBvdG9tZVwgOwor5paH6KqeID4gYnVuZ29cIDsKK+S4luaFiyA+IHNldGFpXCA7CivnjqnlkbMgPiBnYW5taVwgOwor6aGn5oWuID4ga29yeW9cIDsKK+iqmOi1tyA+IHl1dWtpXCA7CivkuI3miY0gPiBmdXNhaVwgOwor5aSc6K2mID4geWFrZWlcIDsKK+maoOmhlSA+IGlua2VuXCA7CivkuI3miKYgPiBmdXNlblwgOwor546L5Z+OID4gb3Vqb3VcIDsKK+S4gOaOgyA+IGlzc291XCA7CivkuIrmiYsgPiBqb3V6dVwgOwor5pys5ZyfID4gaG9uZG9cIDsKK+S4luaDhSA+IHNlam91XCA7CivkuIrmiLggPiBqb3Vnb1wgOwor576O5oyZID4gYmlreW9cIDsKK+WkmuisnSA+IHRhc2hhXCA7CivkuI3mhqsgPiBmdWJpblwgOwor5LqL5YmNID4gaml6ZW5cIDsKK+S4gOaMmSA+IGlra3lvXCA7Civpm6LovrIgPiByaW5vdVwgOwor5LiH5oi4ID4gYmFua29cIDsKK+S4gOaMhyA+IGlzc2hpXCA7Civpn7PmupAgPiBvbmdlblwgOwor5LiN5oWuID4gZnVyeW9cIDsKK+iAs+S7iyA+IGppa2FpXCA7CivkuozliIYgPiBuaWJ1blwgOwor5pqr5pmCID4gemFuamlcIDsKK+aYjuekuiA+IG1laWppXCA7Civlo67pgJQgPiBzb3V0b1wgOwor5Li75a62ID4gc2h1a2FcIDsKK+maoOmdoiA+IGlubWVuXCA7CivkuqTku5ggPiBrb3VmdVwgOwor6Ki06aGYID4gc29nYW5cIDsKK+S4jeaEjSA+IGZ1YmluXCA7CivnvqnlvJ8gPiBnaXRlaVwgOwor54i26ICBID4gZnVyb3VcIDsKK+eOh+WcnyA+IHNvdHRvXCA7CivkuqTkupIgPiBrb3Vnb1wgOwor6Kqk6KqNID4gZ29uaW5cIDsKK+mbqui4jyA+IHNldHRhXCA7CivlpKnooaMgPiB0ZW4nJ2lcIDsKK+mdoue9tSA+IG1lbmJhXCA7CivkuIDmiY0gPiBpc3NhaVwgOwor5LqL5YW4ID4gaml0ZW5cIDsKK+WkluiqniA+IGdhaWdvXCA7CivlpJroqIAgPiB0YWdlblwgOwor5LiA5oimID4gaXNzZW5cIDsKK+S4i+aDhSA+IGtham91XCA7CivkupTlgKsgPiBnb3JpblwgOwor6ICV5YW3ID4ga291Z3VcIDsKK+S6lOWAjSA+IGdvYmFpXCA7CivpoIbmrKEgPiBqdW5qaVwgOwor54qg54myID4gZ2lzZWlcIDsKK+iqpOinoyA+IGdva2FpXCA7CivoqqPoqIAgPiBmdWdlblwgOwor5pu45a62ID4gc2hva2FcIDsKK+mhmOaEjyA+IGdhbicnaVwgOwor6Kqe6KqMID4gZ29zaGlcIDsKK+ipremBkyA+IGtpZG91XCA7CivkuLvlqaYgPiBzaHVmdVwgOwor5pmv5rCXID4ga2Vpa2lcIDsKK+S4jeW/qyA+IGZ1a2FpXCA7CivpoqjlnJ8gPiBmdXVkb1wgOwor5Lit5bCJID4gY2h1dWlcIDsKK+mbo+i3ryA+IG5hbnJvXCA7Civnh4PosrsgPiBuZW5waVwgOwor576O5oSfID4gYmlrYW5cIDsKK+acieWkqyA+IHl1dWZ1XCA7CivkupTkvZMgPiBnb3RhaVwgOwor6ICB5YyWID4gcm91a2FcIDsKK+acieWkjyA+IHl1dWthXCA7Civlq4zlkbMgPiBpeWFtaVwgOwor5LiA5oSPID4gaWNoaWlcIDsKK+aZruautSA+IGZ1ZGFuXCA7CivkuozlgI0gPiBuaWJhaVwgOwor6K6a5q2MID4gc2Fua2FcIDsKK+S4i+W+oSA+IGdlZ3lvXCA7CivnjqnlhbcgPiBnYW5ndVwgOwor6Kmt6L6vID4ga2liZW5cIDsKK+S4jeW9kyA+IGZ1dG91XCA7CivlpaXnvqkgPiBva3VnaVwgOwor6Zu76KmxID4gZGVud2FcIDsKK+S4luW4ryA+IHNldGFpXCA7CivmmYLngrkgPiBqaXRlblwgOwor5pWs6KqeID4ga2VpZ29cIDsKK+WknOihjCA+IHlha291XCA7CivnjJvmiZMgPiBtb3VkYVwgOwor6ZyA6KaBID4ganV5b3VcIDsKK+Wkp+ibhyA+IGRhaWphXCA7CivkuIvlvKYgPiBrYWdlblwgOwor5pyx5Y2wID4gc2h1aW5cIDsKK+S6i+S+iyA+IGppcmVpXCA7CivlpJbooqsgPiBnYWloaVwgOwor5LqL5L2TID4gaml0YWlcIDsKK+acgOWkmiA+IHNhaXRhXCA7CivnibnnlbAgPiB0b2t1aVwgOwor5LiN5bm4ID4gZnVrb3VcIDsKK+miqOWWqSA+IGZ1dXl1XCA7CivkuI3lubMgPiBmdWhlaVwgOwor6aGV5b6uID4ga2VuYmlcIDsKK+Wls+ezuyA+IGpva2VpXCA7CivosLflnLAgPiB5YWNoaVwgOwor5LiK5bqnID4gam91emFcIDsKK+e4gei+uiA+IGVucGVuXCA7Civpm4TpgJQgPiB5dXV0b1wgOwor5LqL5Lu2ID4gamlrZW5cIDsKK+S4ieW6piA+IHNhbmRvXCA7CivkuInlupwgPiBzYW5wdVwgOwor5pSv6YOoID4gc2hpYnVcIDsKK+e+juW9oiA+IGJpa2VpXCA7Civlqr7lkowgPiBrb3V3YVwgOwor54i257O7ID4gZnVrZWlcIDsKK+S5l+WToSA+IGpvdWluXCA7Civkuojku6QgPiB5b3JlaVwgOwor5pSv6YKjID4gc2hpbmFcIDsKK+S4i+W3uyA+IGdla2FuXCA7CivkuozkuZcgPiBuaWpvdVwgOwor5LiK5biDID4gam91ZnVcIDsKK+iAgeWEkiA+IHJvdWp1XCA7CivmnKzli5kgPiBob25tdVwgOwor5LqM5LiWID4gbmlzZWlcIDsKK+S6jOS4iSA+IG5pc2FuXCA7CivorbLmuKEgPiBqb3V0b1wgOwor6aKo5ZGzID4gZnV1bWlcIDsKK+e+qeWtkCA+IGdpc2hpXCA7CivkuZ3ljYEgPiBrdWp1dVwgOwor57255oKjID4gcmlrYW5cIDsKK+acquWIsCA+IG1pdG91XCA7Civorbfms5UgPiBnb2hvdVwgOwor6ICM5LuKID4gamlrb25cIDsKK+ixmuWFkCA+IHRvbmppXCA7CivkuIDluK8gPiBpdHRhaVwgOwor6K6D5q2MID4gc2Fua2FcIDsKK+aXuuebmyA+IG91c2VpXCA7CivmnKrliIogPiBtaWthblwgOwor6Zuj6KqeID4gbmFuZ29cIDsKK+aVheiytyA+IGtvYmFpXCA7Civpm5HosrsgPiB6YXBwaVwgOwor546L5Yi2ID4gb3VzZWlcIDsKK+S4u+WboCA+IHNodWluXCA7CivmnLHlhJIgPiBzaHVqdVwgOwor6ZuR6LKoID4gemFra2FcIDsKK+Wlh+iBniA+IGtpYnVuXCA7CivkuI3lsL0gPiBmdWppblwgOwor5LiL5bGxID4gZ2V6YW5cIDsKK+aVl+iotCA+IGhhaXNvXCA7CivkuIvlsaQgPiBrYXNvdVwgOwor5aOw6KqJID4gc2VpeW9cIDsKK+mbhei2oyA+IGdhc2h1XCA7CivkuIrlsYsgPiB1d2F5YVwgOwor546L5YagID4gb3VrYW5cIDsKK+miqOWMliA+IGZ1dWthXCA7Civlo67oqp4gPiBzb3Vnb1wgOwor5LmX5YuZID4gam91bXVcIDsKK+aatOW+kiA+IGJvdXRvXCA7CivnjovlhawgPiBvdWtvdVwgOwor576p5aeJID4gZ2lzaGlcIDsKK+S4jeWuoyA+IGZ1c2VuXCA7CivnvqnlprkgPiBnaW1haVwgOwor546L5YWaID4gb3V0b3VcIDsKK+S4jeWumiA+IGZ1dGVpXCA7CivkuInlsIkgPiBzYW4nJ2lcIDsKK+mZuumYuyA+IGtlbnNvXCA7CivkuI3lrZ0gPiBmdWtvdVwgOwor5LiH5a+/ID4gYmFuanVcIDsKK+ipruitsCA+IHNlbmdpXCA7CivpoZ7lrZcgPiBydWlqaVwgOwor6ZmN6a2UID4gZ291bWFcIDsKK+WkqeiKsSA+IHRlbmthXCA7Civpn7PmoJMgPiBvbnNlblwgOwor576p5aOrID4gZ2lzaGlcIDsKK+S4gOWxpCA+IGlzc291XCA7Civpn7vmm7ggPiBpbnNob1wgOwor5pa957GzID4gc2VtYWlcIDsKK+ipnuizpiA+IHNoaWZ1XCA7CivmnJ/lhoUgPiBraW5haVwgOwor5pei55+lID4ga2ljaGlcIDsKK+itsuatqSA+IGpvdWhvXCA7Civoqa3orIAgPiBraWJvdVwgOwor5paH6IuRID4gYnVuZW5cIDsKK+mdmeepjyA+IHNlaW9uXCA7CivmnLrkuIogPiBraWpvdVwgOwor6Zmw6Zm6ID4gaW5rZW5cIDsKK+S4gOWwiSA+IGljaGlpXCA7CivkuIDlsIEgPiBpcHB1dVwgOwor576O5a65ID4gYml5b3VcIDsKK+aZqeacnyA+IGJhbmtpXCA7CivnuYHoj68gPiBoYW5rYVwgOwor6aC75bqmID4gaGluZG9cIDsKK+irh+e+qSA+IGRhbmdpXCA7CivpmqDpgYEgPiBpbnRvblwgOwor6Z2e56S8ID4gaGlyZWlcIDsKK+acrOS9jSA+IGhvbicnaVwgOwor5LiA5a6aID4gaXR0ZWlcIDsKK+eOi+S+ryA+IG91a291XCA7CivpoJPmjKsgPiB0b256YVwgOwor5LiB5a2XID4gdGVpamlcIDsKK+mbkeiomCA+IHpha2tpXCA7CivkuI3lp5kgPiBmdW5pblwgOwor6Zqg6YCAID4gaW50YWlcIDsKK+mdseeariA+IGppbnBpXCA7CivpoqjlhIAgPiBmdXVnaVwgOwor6Kmp6KqeID4gc2hpZ29cIDsKK+ipreioiCA+IGtpa2VpXCA7CivpmaTpnJwgPiBqb3NvdVwgOwor5aiB5pyNID4gaWZ1a3VcIDsKK+mZpOmciiA+IGpvcmVpXCA7CivkuI3lpoogPiBmdW5pblwgOwor5aGp6aGeID4gZW5ydWlcIDsKK+mZsOmWgCA+IGlubW9uXCA7Civml6fnl74gPiBreXV1YVwgOwor6Z+75paHID4gaW5idW5cIDsKK+e4geirhyA+IGVuZGFuXCA7Civpna3nmq4gPiBqaW5waVwgOwor5pyA5Y+kID4gc2Fpa29cIDsKK+e5geiMgiA+IGhhbm1vXCA7CivlpJroirggPiB0YWdlaVwgOwor6Zmk6ZqKID4gam90YWlcIDsKK+WpmuWutiA+IGtvbmthXCA7CivkuI3lpIkgPiBmdWhlblwgOwor6aGM5a2XID4gZGFpamlcIDsKK+S4ieWlsyA+IHNhbmpvXCA7CivlpJboi5EgPiBnYWllblwgOwor5pyr5LiWID4gbWFzc2VcIDsKK+acieWIqSA+IHl1dXJpXCA7CivkuIvlo6sgPiBrYXNoaVwgOwor5LiJ5aSPID4gc2Fua2FcIDsKK+eJoeeJmyA+IG91c2hpXCA7CivkuIflpKsgPiBiYW5wdVwgOwor5Li75YuZID4gc2h1bXVcIDsKK+eJiOeUuyA+IGhhbmdhXCA7Civoq63npLogPiB5dXNoaVwgOwor6Zu76I23ID4gZGVua2FcIDsKK+mbheiogCA+IGdhZ2VuXCA7CivkuI3loKogPiBmdWthblwgOwor5pqX5b2xID4gYW4nJ2VpXCA7CivpnZLno4EgPiBzZWlqaVwgOwor54Sh6aKoID4gbXVmdXVcIDsKK+mdoueariA+IG1lbnBpXCA7CivpoK3lt74gPiB6dWtpblwgOwor5aSn576pID4gdGFpZ2lcIDsKK+eEoemhniA+IG11cnVpXCA7Civnvo7lpKcgPiBiaWRhaVwgOwor57ea6LevID4gc2Vucm9cIDsKK+eEoemhjCA+IG11ZGFpXCA7CivnhKHpoLwgPiBidXJhaVwgOwor6Kmm6KOcID4gc2hpaG9cIDsKK+mgkeaEmiA+IGdhbmd1XCA7CivkuIDlpKkgPiBpdHRlblwgOwor576O5aOwID4gYmlzZWlcIDsKK+WkmuiDvSA+IHRhbm91XCA7CivkuIvln44gPiBnZWpvdVwgOwor5piv5q2jID4gemVzZWlcIDsKK+S4gOWkiSA+IGlwcGVuXCA7CivnvbflrpggPiBoaWthblwgOwor5pWj6I+vID4gc2FuZ2VcIDsKK+S4gOWjqyA+IGlzc2hpXCA7CivkuIvlnoIgPiBrYXN1aVwgOwor5aSP6IezID4gZ2VzaGlcIDsKK+e3j+i6qyA+IHNvdW1pXCA7CivkuI3lnKggPiBmdXphaVwgOwor5Lit5Yy7ID4gY2h1dWlcIDsKK+iqpOiBniA+IGdvYnVuXCA7CivkuIDloLEgPiBpcHBvdVwgOwor5LiK5ZuzID4gam91enVcIDsKK+mdoueUuyA+IG1lbmdhXCA7CivnhZnpgZMgPiBlbmRvdVwgOwor5aWz55SfID4gam9zZWlcIDsKK+eEoembuyA+IG11ZGVuXCA7CivnhKHpm6MgPiBidW5hblwgOwor5aSW6ICzID4gZ2FpamlcIDsKK+mdnueVqiA+IGhpYmFuXCA7CivpoafllY8gPiBrb21vblwgOwor5pyJ5L6hID4geXV1a2FcIDsKK+acieS9mSA+IHl1dXlvXCA7Civop6Ppm6IgPiBrYWlyaVwgOwor54Sh6ZmQID4gbXVnZW5cIDsKK+ino+mbhyA+IGthaWtvXCA7CivkuI3lloQgPiBmdXplblwgOwor6Zuq6IqxID4gc2Vra2FcIDsKK+aboOWPpCA+IGtvdWtvXCA7Civop6PpmaQgPiBrYWlqb1wgOwor5LiN5ZWPID4gZnVtb25cIDsKK+S4gOWbniA+IGlra2FpXCA7CivpmYTpmo8gPiBmdXp1aVwgOwor57mK57atID4gc2VuJydpXCA7CivmnInkuosgPiB5dXVqaVwgOwor5LiL5ZWPID4ga2Ftb25cIDsKK+aYjuayuyA+IG1laWppXCA7CivkuJnljYggPiBoZWlnb1wgOwor576p5YuHID4gZ2l5dXVcIDsKK+mgkuW4gyA+IGhhbnB1XCA7Civoq5bnoLQgPiByb25wYVwgOwor57215aOwID4gYmFzZWlcIDsKK+S4i+WTgSA+IGdlaGluXCA7CivpmLLpn7MgPiBib3VvblwgOwor5pyI5LiLID4gZ2Vra2FcIDsKK+iomOi8iSA+IGtpc2FpXCA7CivoqJPovp4gPiBrdW5qaVwgOwor5aSi57K+ID4gbXVzZWlcIDsKK+S4i+WRvSA+IGthbWVpXCA7CivkuLvkuosgPiBzaHVqaVwgOwor5aSW57iBID4gZ2FpZW5cIDsKK+S4jeWQjCA+IGZ1ZG91XCA7Civpn7PmhJ8gPiBvbmthblwgOwor5pmC5paHID4gamlidW5cIDsKK+Wlh+efpSA+IGtpY2hpXCA7Civnt4/orZwgPiBzb3VmdVwgOwor5LiL5ZCRID4gZ2Vrb3VcIDsKK+S4i+WQjSA+IGthbWVpXCA7CivorJvmvJQgPiBrb3VlblwgOwor5LiN5Y+CID4gZnVzYW5cIDsKK+mghuW6jyA+IGp1bmpvXCA7CivpoZ7lj6UgPiBydWlrdVwgOwor5LiK5Y+lID4gam91a3VcIDsKK+S4iuWPpCA+IGpvdWtvXCA7CivmnIDkuIsgPiBzYWlrYVwgOwor6Zqg6KaLID4gaW5rZW5cIDsKK+e+qeWFtSA+IGdpaGVpXCA7CivkuInlj4kgPiBzYW5zYVwgOwor5LiA5ZOBID4gaXBwaW5cIDsKK+e+qeWFhCA+IGdpa2VpXCA7CivkuIflj6QgPiBiYW5rb1wgOwor6Zm66LevID4ga2Vucm9cIDsKK+Wni+acnyA+IHNoaWtpXCA7CivkuIvljYogPiBrYWhhblwgOwor6Ziy6ZmkID4gYm91am9cIDsKK+S4jeWLoiA+IGJ1emVpXCA7CivoqbHoirggPiB3YWdlaVwgOwor5LiN5YuVID4gZnVkb3VcIDsKK+S4jeWKtCA+IGZ1cm91XCA7Civnvo7lkI0gPiBiaW1laVwgOwor5aGp6YW4ID4gZW5zYW5cIDsKK+Wkp+eptCA+IG9vYW5hXCA7CivnjKrlj6MgPiBjaG9rb1wgOwor6Zyy55ukID4gcm9iYW5cIDsKK+S4h+WMliA+IGJhbmthXCA7CivlqIHlvrMgPiBpdG9rdVwgOwor5LiA5Y+NID4gaXR0YW5cIDsKK+S4gOWPjCA+IGlzc291XCA7CivmlqTnm64gPiBraW5tZVwgOwor54mn5q2MID4gYm9ra2FcIDsKK+S4i+WJpCA+IGdlemFpXCA7CivnhKHpiq0gPiBtdXNlblwgOwor5aC06Z2iID4gYmFtZW5cIDsKK+iogOi+niA+IGdlbmppXCA7CivoqrLnqI4gPiBrYXplaVwgOwor6Kqy56iLID4ga2F0ZWlcIDsKK+eEoemKmCA+IG11bWVpXCA7CivoqqTnrpcgPiBnb3NhblwgOwor5LiN5YehID4gZnVib25cIDsKK+eIqueJmSA+IHNvdWdhXCA7CivlpKrnpZYgPiB0YWlzb1wgOwor5pqX5aScID4gYW4nJ3lhXCA7CivkuI3lh40gPiBmdXRvdVwgOwor5aSp56WWID4gdGVuc29cIDsKK+S4gOWNiiA+IGlwcGFuXCA7CivkuIDljYMgPiBpc3NlblwgOwor5aaW5rCXID4geW91a2lcIDsKK+Wlvea8lCA+IGtvdWVuXCA7CivoqqTnrZQgPiBnb3RvdVwgOwor5paH56eRID4gYnVua2FcIDsKK+itt+aGsiA+IGdva2VuXCA7CivlpJrnq68gPiB0YXRhblwgOwor5LiO5YWaID4geW90b3VcIDsKK+S4jeWFqCA+IGZ1emVuXCA7CivoqaDojYkgPiBlaXNvdVwgOwor5LiN5YWaID4gZnV0b3VcIDsKK+mbhOiKsSA+IG9iYW5hXCA7Civml6LmuIggPiBraXNhaVwgOwor5aOu576OID4gc291YmlcIDsKK+Wik+iqjCA+IGJvc2hpXCA7CivlpJrnqK4gPiB0YXNodVwgOwor57a66KuHID4ga2lkYW5cIDsKK+eEoemFjSA+IG11aGFpXCA7Civniq/mhI8gPiBoYW4nJ2lcIDsKK+S4i+WDpyA+IGdlc291XCA7CivnvqnkurogPiBnaWppblwgOwor5LiA5YiHID4gaXNzYWlcIDsKK+S4gOWIhiA+IGlwcHVuXCA7CivkuIDliIAgPiBpdHRvdVwgOwor5aWH55GeID4ga2l6dWlcIDsKK+irlueQhiA+IHJvbnJpXCA7CivlpKfnoLQgPiB0YWloYVwgOwor5LiN5YGPID4gZnVoZW5cIDsKK+mbheiHtCA+IGdhY2hpXCA7CivkuI3lgKsgPiBmdXJpblwgOwor6Kmx6ICFID4gd2FzaGFcIDsKK+e9suWToSA+IHNob2luXCA7CivorJvmraYgPiBrb3VidVwgOwor5pel5rOiID4gbmlwcG9cIDsKK+S4luS7oyA+IHNlZGFpXCA7CivkuIDlho0gPiBpc3NhaVwgOwor5LiW5Lq6ID4gc2VqaW5cIDsKK+aVheiAgSA+IGtvcm91XCA7CivnjL/kurogPiBlbmppblwgOwor5pif5paXID4gc2VpdG9cIDsKK+S4iuWApCA+IHV3YW5lXCA7CivkuIDlhZogPiBpdHRvdVwgOwor54Sh6YGTID4gbXVkb3VcIDsKK+S4jeS+vyA+IGZ1YmVuXCA7CivoqI7orbAgPiB0b3VnaVwgOwor5aKX6KOcID4gem91aG9cIDsKK+S4jeS+iyA+IGZ1cmVpXCA7CivnuZTnm64gPiBvcmltZVwgOwor57aZ6LW3ID4ga2Vpa2lcIDsKK+iok+ipsSA+IGt1bndhXCA7CivnhKHovrogPiBtdWhlblwgOwor5LiW5LiKID4gc2Vqb3VcIDsKK+S4juS7tiA+IHlva2VuXCA7CivkuIvkvZMgPiBrYXRhaVwgOwor6aGe5Ly8ID4gcnVpamlcIDsKK+maoOiUvSA+IGlucGVpXCA7CivnvoXlhbggPiByYXRlblwgOwor6Zmw6KyAID4gaW5ib3VcIDsKK+iok+ipgSA+IGt1bmtvXCA7CivkuInkvZAgPiBzYW5zYVwgOwor5LiJ5L2NID4gc2FubWlcIDsKK+WokeWphiA+IHNoYWJhXCA7CivkuI3ku4EgPiBmdWppblwgOwor5LiI5L2ZID4gam91eW9cIDsKK+aYjuaalyA+IG1laWFuXCA7CivlppPmpbwgPiBnaXJvdVwgOwor5paH55uuID4gYXlhbWVcIDsKK+WlveawlyA+IGtvdWtpXCA7CivnjLbkuoggPiB5dXV5b1wgOwor5aSJ56e7ID4gaGVuJydpXCA7CivpmYTov5EgPiBmdWtpblwgOwor5LiL5Lq6ID4gZ2VuaW5cIDsKK+aatOWIqSA+IGJvdXJpXCA7CivmmpfllqkgPiBhbicneXVcIDsKK+WhkemAoCA+IHNvem91XCA7CivlqZrlhIAgPiBrb25naVwgOwor5LiL5LmXID4gZ2Vqb3VcIDsKK+aTrOijvSA+IGdpc2VpXCA7CivntJnprZogPiBzaGltaVwgOwor5LiH5LqLID4gYmFuamlcIDsKK+aTrOijhSA+IGdpc291XCA7CivkuIDkvZMgPiBpdHRhaVwgOwor5LiA5L2NID4gaWNoaWlcIDsKK+iruOa0viA+IHNob2hhXCA7CivkuIrkuIsgPiBqb3VnZVwgOwor5aSc55uXID4geWF0b3VcIDsKK+S4ieS4liA+IHNhbnplXCA7Civpm7vno4EgPiBkZW5qaVwgOwor5pm05aScID4gc2VpeWFcIDsKK+WppuS6uiA+IGZ1amluXCA7CivpoJHlm7ogPiBnYW5rb1wgOwor5pmC5byKID4gamloZWlcIDsKK+S4gOS7tiA+IGlra2VuXCA7Civnvo7kurogPiBiaWppblwgOwor5LiA5LuLID4gaWtrYWlcIDsKK+e9t+WFjSA+IGhpbWVuXCA7CivlpKfnk7YgPiBvb2JpblwgOwor6KiA6KqeID4gZ2VuZ29cIDsKK+WlveapnyA+IGtvdWtpXCA7CivmlYXntJkgPiBrb3NoaVwgOwor5aS354uEID4gaXRla2lcIDsKK+aal+WQmyA+IGFua3VuXCA7CivlpJbnmq4gPiBnYWloaVwgOwor5pqX5ZCIID4gYW5nb3VcIDsKK+aal+WPtyA+IGFuZ291XCA7CivorbflsrggPiBnb2dhblwgOwor5LiA5LiWID4gaXNzZWlcIDsKK+eJqeaVhSA+IGJ1a2tvXCA7CivlpKnnkIYgPiB0ZW5yaVwgOwor5aSP55ygID4ga2FtaW5cIDsKK+e0oOmkiiA+IHNveW91XCA7Civlp5DlvqEgPiBhbmVnb1wgOwor5aSc55WqID4geW9iYW5cIDsKK+mcsueCuSA+IHJvdGVuXCA7CivmmanlpI8gPiBiYW5rYVwgOwor6Z+z5aSnID4gb25kYWlcIDsKK+mfs+WjsCA+IG9uc2VpXCA7CivmlofnkIYgPiBidW5yaVwgOwor5aSa55SoID4gdGF5b3VcIDsKK+WkmueUoyA+IHRhc2FuXCA7CivlpKfnjosgPiBkYWlvdVwgOwor57215YCSID4gYmF0b3VcIDsKK+e0oOmhlCA+IHN1Z2FvXCA7CivmlLnntYQgPiBrYWlzb1wgOwor57Sr6ZuyID4gc2hpdW5cIDsKK+e3qOiAhSA+IGhlbmphXCA7CivlpbPmqKkgPiBqb2tlblwgOwor6Kqk55SoID4gZ295b3VcIDsKK+WnieW+oSA+IGFuZWdvXCA7CivlpJbnlYwgPiBnZWthaVwgOwor5pOB6K23ID4geW91Z29cIDsKK+WkqeeLlyA+IHRlbmd1XCA7CivniLbmqKkgPiBmdWtlblwgOwor5aWl5q2vID4gb2t1YmFcIDsKK+aXqeacnyA+IHNvdWtpXCA7CivntKDpnaIgPiBzdW1lblwgOwor6K2w5a6aID4gZ2l0ZWlcIDsKK+WkqeeItiA+IHRlbnB1XCA7CivpnIDnlKggPiBqdXlvdVwgOwor57ir55uuID4gbnVpbWVcIDsKK+eEoeisgCA+IG11Ym91XCA7Civml4XmrKEgPiByeW9qaVwgOwor5pel5pysID4gbmlob25cIDsKK+eJiOacqCA+IGhhbmdpXCA7CivpnYjmsKMgPiByZWlraVwgOwor54Sh6KuWID4gbXVyb25cIDsKK+mdnualrSA+IGhpZ291XCA7Civloavoo5wgPiB0ZW5wb1wgOwor6Zuj56C0ID4gbmFucGFcIDsKK+aXpuaariA+IHRhbmJvXCA7CivlpInnlbAgPiBoZW4nJ2lcIDsKK+aXouacmyA+IGtpYm91XCA7CivpmZvooZsgPiBoZWllaVwgOwor57O46a2aID4gaXRveW9cIDsKK+mbqOedgCA+IGFtYWdpXCA7CivlqIHlnKcgPiBpYXRzdVwgOwor5aW95pyfID4ga291a2lcIDsKK+WnpuWppiA+IGthbnB1XCA7Civop6Poqp4gPiBrYWlnb1wgOwor5pW055CGID4gc2VpcmlcIDsKK+eEoeiogCA+IG11Z29uXCA7CivlpoLmmK8gPiBueW96ZVwgOwor54i+5p2lID4gamlyYWlcIDsKK+eJh+aZgiA+IGhlbmppXCA7Civntr/oirEgPiBtZW5rYVwgOwor6Zmw6JS9ID4gaW5wZWlcIDsKK+WkqeeCuiA+IHRlbicnaVwgOwor5aiB5ZqHID4gaWtha3VcIDsKK+eEoeimliA+IG11c2hpXCA7CivmlbDnkIYgPiBzdXVyaVwgOwor57WM6YGOID4ga2Vpa2FcIDsKK+eGseeggiA+IG5lc3NhXCA7CivmmJ/luqcgPiBzZWl6YVwgOwor5aSp54GrID4gdGVucGlcIDsKK+WfoOmgrSA+IGZ1dG91XCA7CivnjIrkuIsgPiBnZWlrYVwgOwor6ZmE6KiAID4gZnVnZW5cIDsKK+Wkp+eBqyA+IHRhaWthXCA7Civlp6blpKsgPiBrYW5wdVwgOwor6aCG5YyWID4ganVua2FcIDsKK+mYsuittyA+IGJvdWdvXCA7CivpnZ7mnJsgPiBoaWJvdVwgOwor6aCt5LiKID4genVqb3VcIDsKK+itsOWjqyA+IGdpc2hpXCA7CivmmYLlpb0gPiBqaWtvdVwgOwor6Z2S5qKFID4gYW91bWVcIDsKK+Whl+ijhSA+IHRvc291XCA7CivoqannopEgPiBzaGloaVwgOwor5pWF55+lID4ga29jaGlcIDsKK+maoOe3miA+IGluc2VuXCA7CivlpZHmqZ8gPiBrZWlraVwgOwor6KaW6YeOID4gc2hpeWFcIDsKK+itsOWgtCA+IGdpam91XCA7CivmkbjpgKAgPiBtb3pvdVwgOwor6Zmw6IyOID4gaW5rZWlcIDsKK+aWp+atoyA+IGZ1c2VpXCA7CivpnZLmnpwgPiBzZWlrYVwgOwor54eg54GrID4gb2tpYmlcIDsKK+mfs+WQjSA+IG9ubWVpXCA7CivmmI7luqYgPiBtZWlkb1wgOwor5aal5b2TID4gZGF0b3VcIDsKK+aZguWgsSA+IGppaG91XCA7CivntYzot68gPiBrZWlyb1wgOwor5pav5qeYID4ga2F5b3VcIDsKK+WhqeiUtSA+IGVuem91XCA7CivmmKDlsIQgPiBlaXNoYVwgOwor6aCS5L6hID4gaGFua2FcIDsKK+iruuaWhyA+IG9ubW9uXCA7CivloqjntbUgPiBzdW1pZVwgOwor57Sw6YOoID4gc2FpYnVcIDsKK+e3tOejqCA+IHJlbm1hXCA7CivpmaTojYkgPiBqb3NvdVwgOwor6K2P5auMID4ga2lnZW5cIDsKK+WlpeaXqCA+IG91c2hpXCA7Civln7rph5EgPiBraWtpblwgOwor57WM6LK7ID4ga2VpaGlcIDsKK+iomOiAhSA+IGtpc2hhXCA7CivorJ3mgakgPiBzaGFvblwgOwor5piG5biDID4ga29uYnVcIDsKK+mbsueFmSA+IHVuJydlblwgOwor5aSp5rKzID4gdGVuZ2FcIDsKK+irreaXqCA+IHl1c2hpXCA7Civnh5DngasgPiByaW5rYVwgOwor5aW95omTID4ga291ZGFcIDsKK+aXouaIkCA+IGtpc2VpXCA7CivpmLLooZsgPiBib3VlaVwgOwor5aSn5rKzID4gdGFpZ2FcIDsKK+mbt+eBqyA+IHJhaWthXCA7Civnt4fntKAgPiBzaGlzb1wgOwor57ay576FID4gbW91cmFcIDsKK+WkqeawlyA+IHRlbmtpXCA7CivpoIbkvY0gPiBqdW4nJ2lcIDsKK+iok+e+qSA+IGt1bmdpXCA7CivmmKjlpJwgPiB5dXViZVwgOwor5aSn5rCXID4gdGFpa2lcIDsKK+eEoeiTiyA+IG11Z2FpXCA7Civoqp7mupAgPiBnb2dlblwgOwor6KaH6YGTID4gaGFkb3VcIDsKK+aZruWBjyA+IGZ1aGVuXCA7CivmlaLngrogPiBrYW4nJ2lcIDsKK+mZsOe/syA+IGluJydlaVwgOwor5peX5omLID4ga2lzaHVcIDsKK+ilv+mDqCA+IHNlaWJ1XCA7Civpm4fnlKggPiBrb3lvdVwgOwor6Z+z5YOPID4gb256b3VcIDsKK+Wmu+WlsyA+IHNhaWpvXCA7Civmk43oiLUgPiBzb3VkYVwgOwor5aSn5q2MID4gb291dGFcIDsKK+ism+W6pyA+IGtvdXphXCA7CivmlofmroogPiBtb25qdVwgOwor5pif5aScID4gc2VpeWFcIDsKK+eEoeiPjCA+IG11a2luXCA7CivmlofmraYgPiBidW5idVwgOwor6Z2e5omNID4gaGlzYWlcIDsKK+Wlh+abuCA+IGtpc2hvXCA7CivlpKvmqKkgPiBmdWtlblwgOwor5aSp5qmfID4gdGVua2lcIDsKK+mciuawlyA+IHJlaWtpXCA7CivmmI7lqpogPiBtZWliaVwgOwor54Sh6Iy2ID4gbXVjaGFcIDsKK+mfs+S+vyA+IG9uYmluXCA7CivniaLlsYsgPiByb3V5YVwgOwor5aWH5pm6ID4ga2ljaGlcIDsKK+WkmuavmyA+IHRhbW91XCA7CivlqIHkv6EgPiBpc2hpblwgOwor6Kqe5rOVID4gZ29ob3VcIDsKK+Wkp+aouSA+IHRhaWp1XCA7CivlpJbmsJcgPiBnYWlraVwgOwor54Sh6Iq4ID4gbXVnZWlcIDsKK+Wkp+anmCA+IG9veW91XCA7CivlpaXmiYsgPiBva3V0ZVwgOwor57ax57SAID4ga291a2lcIDsKK+ijvem6uyA+IHNlaW1hXCA7Civnt4/npL4gPiBzb3VqYVwgOwor6Zu75rOiID4gZGVucGFcIDsKK+aZguWNiiA+IGppaGFuXCA7Civorablj6UgPiBrZWlrdVwgOwor6Z2e5oOFID4gaGlqb3VcIDsKK+iri+aahyA+IHNlaWthXCA7CivmmYLljJYgPiBzaGlrZVwgOwor5aWz5oCnID4gam9zZWlcIDsKK+mbqOa7tCA+IHV0ZWtpXCA7CivlpYfmlbAgPiBraXN1dVwgOwor6ZuE54yrID4gb25la29cIDsKK+aZguWLoiA+IGppc2VpXCA7CivmlqfmlqQgPiBmdWtpblwgOwor6Zuy5rW3ID4gdW5rYWlcIDsKK+mbkeeFriA+IHpvdW5pXCA7CivmmYLlirkgPiBqaWtvdVwgOwor5pif5ZuzID4gc2VpenVcIDsKK+eItuaApyA+IGZ1c2VpXCA7CivopoHot68gPiB5b3Vyb1wgOwor5aWz5b6hID4gbnlvZ29cIDsKK+mbu+awlyA+IGRlbmtpXCA7CivmlqHml4sgPiBhc3NlblwgOwor6Zuy5rOlID4gdW5kZWlcIDsKK+itpuWLmSA+IGtlaW11XCA7CivmmYLliLYgPiBqaXNlaVwgOwor6ZuE54mbID4gb3VzaGlcIDsKK+aZguWIhiA+IGppYnVuXCA7CivnhKHog70gPiBtdW5vdVwgOwor5aSa5qeYID4gdGF5b3VcIDsKK+eKrOWEkiA+IGtlbmp1XCA7Civngavpm6MgPiBrYW5hblwgOwor5pWw5qyhID4gc3V1amlcIDsKK+WmluWppiA+IHlvdWZ1XCA7CivmlbXmqZ8gPiB0ZWtraVwgOwor6Zuy5rC0ID4gdW5zdWlcIDsKK+WmluWphiA+IHlvdWJhXCA7Civml5fluZ8gPiBraXNoaVwgOwor6Z2S5oGvID4gYW9pa2lcIDsKK+mWkembhSA+IGthbmdhXCA7CivlpKfmnp0gPiBvb2VkYVwgOwor5aOy5rerID4gYmFpaW5cIDsKK+mcp+aVoyA+IG11c2FuXCA7CivlpbPluJ0gPiBqb3RlaVwgOwor6Zuo5rOoID4gdWNodXVcIDsKK+aUvueBqyA+IGhvdWthXCA7CivlpYnmjIEgPiBob3VqaVwgOwor5aWz5belID4gam9rb3VcIDsKK+mbu+apnyA+IGRlbmtpXCA7Civnt5rnlLsgPiBzZW5nYVwgOwor6Z2e5bi4ID4gaGlqb3VcIDsKK+WmluWlsyA+IHlvdWpvXCA7CivmlrDmiYsgPiBhcmF0ZVwgOwor6Z2Z5bqnID4gc2VpemFcIDsKK+eEoee9qiA+IG11emFpXCA7CivmlaPmrakgPiBzYW5wb1wgOwor6Zuo5rC3ID4gdWh5b3VcIDsKK+aWh+abuCA+IG1vbmpvXCA7CivplovpmaIgPiBrYWlpblwgOwor5aaK5ammID4gbmlucHVcIDsKK+aZguWAmSA+IGppa291XCA7CivplonpmaIgPiBoZWlpblwgOwor5pei5a6aID4ga2l0ZWlcIDsKK+itpuWCmSA+IGtlaWJpXCA7CivlpYfmiY0gPiBraXNhaVwgOwor5aWH5omLID4ga2lzaHVcIDsKK+WkqeaXpSA+IHRlbnBpXCA7CivlpKfmmKAgPiBkYWllaVwgOwor5aSc5p2lID4geWFyYWlcIDsKK+WlveWunCA+IGtvdWdpXCA7CivntJvorbAgPiBmdW5naVwgOwor6Zmk566XID4gam96YW5cIDsKK+aXouWtmCA+IGtpc29uXCA7CivorbDkvJogPiBnaWthaVwgOwor6Zui5rC0ID4gcmlzdWlcIDsKK+iok+ekuiA+IGt1bmppXCA7CivoqabmvJQgPiBzaGllblwgOwor5pKr6IKyID4gYnVpa3VcIDsKK+mYsuiFkCA+IGJvdWZ1XCA7Civoqp7moLkgPiBnb2tvblwgOwor5pKw6ICFID4gc2VuamFcIDsKK+eGseazoiA+IG5lcHBhXCA7CivlpJrmnJsgPiB0YWJvdVwgOwor6Zm256OBID4gdG91amlcIDsKK+Wls+WwiiA+IGpvc29uXCA7CivlpYfmhYsgPiBraXRhaVwgOwor5pmC5LujID4gamlkYWlcIDsKK+itsuS4jiA+IGpvdXlvXCA7CivnhKHnt5ogPiBtdXNlblwgOwor54mi5Zu6ID4gcm91a29cIDsKK+WknOaZryA+IHlha2VpXCA7CivmkZjoqJggPiB0ZWtraVwgOwor5pei5amaID4ga2lrb25cIDsKK+aZguS6uiA+IGppamluXCA7Civpm4Tmu50gPiBvZGFraVwgOwor54mZ5Z+OID4gZ2Fqb3VcIDsKK+Wlh+aDsyA+IGtpc291XCA7Civlo6vmsJcgPiBzaGlraVwgOwor6Kmx5rOVID4gd2Fob3VcIDsKK+eCiei+uiA+IHJvaGVuXCA7CivlpbPlrZAgPiBqb3NoaVwgOwor54Wp55GjID4gaGFuc2FcIDsKK+e3j+eQhiA+IHNvdXJpXCA7CivmmYLkuJYgPiBqaXNlaVwgOwor54i25a2QID4gZnVzaGlcIDsKK+eEoeezliA+IG11dG91XCA7Civpmb3nmq4gPiB5b3VoaVwgOwor5pa95belID4gc2Vrb3VcIDsKK+Wkp+aQjSA+IG9vem9uXCA7Civop6PntYQgPiBrYWlzb1wgOwor5aWH5oCqID4ga2lrYWlcIDsKK+iruOWutiA+IHNob2thXCA7CivnibnljJYgPiB0b2trYVwgOwor6Zyy5oKqID4gcm9ha3VcIDsKK+eKgOWIqSA+IHNhaXJpXCA7CivlpJrmlbAgPiB0YXN1dVwgOwor5aSn5o+aID4gb295b3VcIDsKK+eEoeeyiyA+IGJ1c3VpXCA7CivntrLnm64gPiBhbWltZVwgOwor5aSp5o6IID4gdGVuanVcIDsKK+aYoOWGmSA+IGVpc2hhXCA7CivlpJXml6UgPiB5dXVoaVwgOwor5aWz5am/ID4gam9zZWlcIDsKK+WlveWlhyA+IGtvdWtpXCA7CivlpJbmlrkgPiBzb3Bwb1wgOwor5pS/5rK7ID4gc2VpamlcIDsKK+eyl+mkkCA+IHNvc2FuXCA7Civnspfpo68gPiBzb2hhblwgOwor6ZaJ6Y6WID4gaGVpc2FcIDsKK+e0oOihjCA+IHNva291XCA7CivntbnntbUgPiBraW51ZVwgOwor6K2c5LujID4gZnVkYWlcIDsKK+iotOeKtiA+IHNvam91XCA7CivlpYflvaIgPiBraWtlaVwgOwor5aGp56iOID4gZW56ZWlcIDsKK+aYoOWDjyA+IGVpem91XCA7CivntbXntbkgPiBlZ2ludVwgOwor6ZuR5q2MID4gem91a2FcIDsKK+maoOeEtiA+IGluemVuXCA7CivlpYflvIEgPiBraWJlblwgOwor6Kqe5pWwID4gZ29zdXVcIDsKK+aXouWgsSA+IGtpaG91XCA7Civpmb3nlLsgPiB5b3VnYVwgOwor54Gr6YWSID4ga2FzaHVcIDsKK+e0q+iYhyA+IHNoaXNvXCA7Civoo73pnbQgPiBzZWlrYVwgOwor6Zu25pmCID4gcmVpamlcIDsKK+aYoOWAqyA+IGVpcmluXCA7CivoqanmrYwgPiBzaGlrYVwgOwor57K+6YutID4gc2VpZWlcIDsKK+Wls+WjsCA+IGpvc2VpXCA7CivmlL7mrYwgPiBob3VrYVwgOwor6ZmE566LID4gZnVzZW5cIDsKK+ezu+itnCA+IGtlaWZ1XCA7Civpm7Lmma8gPiB1bmtlaVwgOwor6KqJ5pybID4geW9ib3VcIDsKK+eJiOWbsyA+IGhhbnRvXCA7CivpnLLlupcgPiByb3RlblwgOwor5aWH5beMID4ga2lnYW5cIDsKK+WnieS4iiA+IGFuZXVlXCA7CivmlpzlvbEgPiBzaGFlaVwgOwor54Sh56i9ID4gbXVrZWlcIDsKK+ilsuihoyA+IHNodXVpXCA7CivplpPpgaAgPiBtYWRvb1wgOwor6Zyy5bidID4gcm90ZWlcIDsKK+mbhOatpiA+IHl1dWJ1XCA7CivnhKHnqI4gPiBtdXplaVwgOwor5aSp5oSPID4gdGVuJydpXCA7CivoqaDmrY4gPiBlaXRhblwgOwor6Z2Z5aScID4gc2VpeWFcIDsKK+ism+WSjCA+IGtvdXdhXCA7CivlpKfmhJogPiB0YWlndVwgOwor54Sh56eBID4gbXVzaGlcIDsKK+eFieeTpiA+IHJlbmdhXCA7Civpm7LmlaMgPiB1bnNhblwgOwor6Zui5p2RID4gcmlzb25cIDsKK+WknOaIpiA+IHlhc2VuXCA7CivntIDopoEgPiBraXlvdVwgOwor54Wk54WZID4gYmFpZW5cIDsKK+e1teethiA+IGVmdWRlXCA7CivlpJrmiY0gPiB0YXNhaVwgOwor5paH5oSPID4gYnVuJydpXCA7CivopaTopLggPiByYW5ydVwgOwor5aSn5oKfID4gZGFpZ29cIDsKK+eJueS+oSA+IHRva2thXCA7CivlpYflsqkgPiBraWdhblwgOwor54Sh56S8ID4gYnVyZWlcIDsKK+e5u+WtkCA+IHNodXN1XCA7CivplovpgYsgPiBrYWl1blwgOwor5aSn5oGpID4gZGFpb25cIDsKK+ipsuahiCA+IGdhaWFuXCA7CivlpKLmg7MgPiBtdXNvdVwgOwor6KWm6KKiID4ganViYW5cIDsKK+mbo+aYkyA+IG5hbicnaVwgOwor5peo5ZGzID4gdW1hbWlcIDsKK+ipseafhCA+IHdhaGVpXCA7CivlpYnlrokgPiBob3VhblwgOwor5aCV6IOOID4gZGF0YWlcIDsKK+e0gOihjCA+IGtpa291XCA7CivmlL7mo4QgPiBob3VraVwgOwor5aSa5oSfID4gdGFrYW5cIDsKK+aSreeoriA+IGhhc2h1XCA7CivoqrLlvbkgPiBrYWVraVwgOwor6Zmi55SfID4gaW5zZWlcIDsKK+ijnOmhjCA+IGhvZGFpXCA7CivlpJrmg4UgPiB0YWpvdVwgOwor54Sh55+lID4gbXVjaGlcIDsKK+mbouaVoyA+IHJpc2FuXCA7CivoqabmoYggPiBzaGlhblwgOwor5aSp5bqcID4gdGVucHVcIDsKK+WkmuaBqCA+IHRha29uXCA7CivlpKfluqYgPiB0YWlkb1wgOwor54mp5L6hID4gYnVra2FcIDsKK+iqnuaEnyA+IGdva2FuXCA7CivmlbXmhI8gPiB0ZWtpaVwgOwor5aW95Y+kID4ga291a29cIDsKK+aWh+W6qyA+IGJ1bmtvXCA7CivlpJrlv5kgPiB0YWJvdVwgOwor6KaL6IieID4gbWltYWlcIDsKK+eFlueCiSA+IGRhbnJvXCA7CivloJXnvaogPiBkYXphaVwgOwor5aGp55SwID4gZW5kZW5cIDsKK+aVheaZuiA+IGtvY2hpXCA7CivnhKHnm4ogPiBtdWVraVwgOwor6Zm954KOID4geW91ZW5cIDsKK+Wkp+W3riA+IHRhaXNhXCA7CivnuYrluqYgPiBzZW5kb1wgOwor5aSn5belID4gZGFpa3VcIDsKK+irt+WWqSA+IGZ1dXl1XCA7CivlpJrlvakgPiB0YXNhaVwgOwor6ZaJ6LevID4gaGVpcm9cIDsKK+WkmuW9oiA+IHRha2VpXCA7CivmlazmhZUgPiBrZWlib1wgOwor5aCG6IKlID4gdGFpaGlcIDsKK+aXpeWKoCA+IG5pa2thXCA7Civmj7Tou40gPiBlbmd1blwgOwor57KX6Yu8ID4gc29rb3VcIDsKK+aVrOaEmyA+IGtlaWFpXCA7CivlpJrlvIEgPiB0YWJlblwgOwor5aOw5o+0ID4gc2VpZW5cIDsKK+eGqOaWlyA+IG5vc2hpXCA7CivpnZ7lkb0gPiBoaW1laVwgOwor6KyA5Y+bID4gbXVob25cIDsKK+Wls+WPsiA+IGpvc2hpXCA7CivorIDlj40gPiBtdWhvblwgOwor57KX6YqFID4gc29kb3VcIDsKK+ikkui+niA+IGhvdWppXCA7CivmkanogJcgPiBtYW1vdVwgOwor57KX6YmxID4gc29rb3VcIDsKK+eItuWQmyA+IGZ1a3VuXCA7CivmlL7mmKAgPiBob3VlaVwgOwor5aSW5bu2ID4gZ2FpZW5cIDsKK+WkmuW5uCA+IHRha291XCA7CivlpJrlubQgPiB0YW5lblwgOwor57SF6JOuID4gZ3VyZW5cIDsKK+mbgeacqCA+IGdhbmdpXCA7CivlpYflo7AgPiBraXNlaVwgOwor6Kqe5b2iID4gZ29rZWlcIDsKK+WlhOWlhCA+IGVuJydlblwgOwor6KOP6Z2iID4gcmltZW5cIDsKK+aXouWIiiA+IGtpa2FuXCA7Civmlrnlm7MgPiBob3V6dVwgOwor6Zuo5oi4ID4gYW1hZG9cIDsKK+mcsuWkqSA+IHJvdGVuXCA7Civoo5zplpMgPiBob2thblwgOwor6Kqe5byKID4gZ29oZWlcIDsKK+eJouS5jiA+IHJvdWtvXCA7CivnhKHnlKggPiBtdXlvdVwgOwor54Sh55SjID4gbXVzYW5cIDsKK+eJoeS4uSA+IGJvdGFuXCA7CivlpKflsL4gPiB0YWliaVwgOwor5aSp5a+/ID4gdGVuanVcIDsKK+iqnuW5uSA+IGdva2FuXCA7CivnspfphZIgPiBzb3NodVwgOwor5o6n6ZmkID4ga291am9cIDsKK+WjsuaJiyA+IHVyaXRlXCA7CivlopfmtL4gPiB6b3VoYVwgOwor6KqY5byVID4geXV1aW5cIDsKK+Wkp+WutiA+IHRhaWtlXCA7Civpm4XmlocgPiBnYWJ1blwgOwor6KaH6ICFID4gaGFzaGFcIDsKK+aWieWutiA+IHNlaWthXCA7CivpnLLloLQgPiByb2pvdVwgOwor5aSn5a6JID4gZGFpYW5cIDsKK+aVsOW6piA+IHN1dWRvXCA7CivlpKflrZcgPiBvb2F6YVwgOwor6ZaR6KmxID4ga2Fud2FcIDsKK+WcsOmgrSA+IGppdG91XCA7Civpmbjmua8gPiBva2F5dVwgOwor5pat5Zu6ID4gZGFua29cIDsKK+mbsuW9sSA+IHVuJydlaVwgOwor5paH5a2XID4gbW9uamlcIDsKK+eHleW3oyA+IGVuc291XCA7CivlpaXljbAgPiBva3VpblwgOwor5aSr5ammID4gbWVvdG9cIDsKK+WkmuWxpCA+IHRhc291XCA7CivoqLTmqKkgPiBzb2tlblwgOwor6Zu25bqmID4gcmVpZG9cIDsKK+eCueiAhSA+IHRlbmphXCA7CivntbXnlLsgPiBrYWlnYVwgOwor6Zqg5qOyID4gaW5zZWlcIDsKK+imgee+qSA+IHlvdWdpXCA7CivpnZ7lh6EgPiBoaWJvblwgOwor6Kiq5qynID4gaG91b3VcIDsKK+WcsOmdoiA+IGppbWVuXCA7Civlpb3lgIsgPiBrb3Vrb1wgOwor5aWz5YSqID4gam95dXVcIDsKK+WkqeWogSA+IHRlbicnaVwgOwor5aSr5aa7ID4gZnVzYWlcIDsKK+iqpOWwhCA+IGdvc2hhXCA7CivniLblhYQgPiBmdWtlaVwgOwor5Zyw6Zu3ID4gamlyYWlcIDsKK+iomOazlSA+IGtpaG91XCA7CivnhZbmsJcgPiBkYW5raVwgOwor6Zqg5qCWID4gaW5zZWlcIDsKK+WkmuWtlCA+IHRha291XCA7CivlpJblrq4gPiBnZWt1dVwgOwor54WZ5q27ID4gZW5zaGlcIDsKK+WkquWkqyA+IHRheXV1XCA7Civpmb3msJcgPiB5b3VraVwgOwor5Z+657eaID4ga2lzZW5cIDsKK+Wkp+WlpSA+IG9vb2t1XCA7CivmjpLpmaQgPiBoYWlqb1wgOwor5aSW5a2XID4gZ2FpamlcIDsKK+aVo+W4gyA+IHNhbnB1XCA7CivlpYfllY8gPiBraW1vblwgOwor5aaC5LiKID4gam9qb3VcIDsKK+WlveS6iyA+IGtvdXp1XCA7CivlpKflo7AgPiBvb2dvZVwgOwor6Kqy5aSWID4ga2FnYWlcIDsKK+Wkt+WbvSA+IGlrb2t1XCA7CivmlK/mj7QgPiBzaGllblwgOwor5pOs5q+bID4gZ2ltb3VcIDsKK+e0oOe1uSA+IHNva2VuXCA7CivlpZHljbAgPiBrZWlpblwgOwor6Zuj5bqmID4gbmFuZG9cIDsKK+imj+evhCA+IGtpaGFuXCA7Civmk6zmrbsgPiBnaXNoaVwgOwor5pWw5a2XID4gc3V1amlcIDsKK+WkmuWmuyA+IHRhc2FpXCA7Civmlo7lnqMgPiBpZ2FraVwgOwor6KaB57SgID4geW91c29cIDsKK+aXl+S6rSA+IGtpdGVpXCA7CivmlK/mjIEgPiBzaGlqaVwgOwor6ZuF5oeQID4gZ2FrYWlcIDsKK+aPkOi1tyA+IHRlaWtpXCA7Civpm7LlsYUgPiBrdW1vaVwgOwor6Zyy5ZG9ID4gcm9tZWlcIDsKK+eEoeeBryA+IG11dG91XCA7CivpmbDmr5sgPiBpbm1vdVwgOwor5aSJ5a2XID4gaGVuamlcIDsKK+ilv+e0gCA+IHNlaWtpXCA7CivnuZTlnLAgPiBvcmlqaVwgOwor6ZyK5aSiID4gcmVpbXVcIDsKK+mcsuWRiCA+IHJvdGVpXCA7CivlpJrlpKcgPiB0YWRhaVwgOwor5o6D6ZmkID4gc291amlcIDsKK+Whl+eCrSA+IHRvdGFuXCA7CivmjZXpr6ggPiBob2dlaVwgOwor6Z2e5Lq6ID4gaGluaW5cIDsKK+WkmuWjsiA+IHRhYmFpXCA7CivpnLLlj7AgPiByb2RhaVwgOwor57mB5aSaID4gaGFudGFcIDsKK+mZpOazlSA+IGpvaG91XCA7CivnhJzngokgPiBrb25yb1wgOwor5pa55YaGID4gaG91ZW5cIDsKK+iruOS6iyA+IHNob2ppXCA7CivmlLnmgp8gPiBrYWlnb1wgOwor57aZ5rOzID4ga2VpZWlcIDsKK+WlieWKoCA+IGhvdWdhXCA7Civopo/nqIsgPiBraXRlaVwgOwor6Zui5bO2ID4gcml0b3VcIDsKK+Wlh+WKuSA+IGtpa291XCA7Civoqa3lvIEgPiBraWJlblwgOwor6ZqV5pifID4gaW5zZWlcIDsKK+Wkp+WZqCA+IHRhaWtpXCA7Civpm6LlsrggPiByaWdhblwgOwor54Kt57SgID4gdGFuc29cIDsKK+iqpOWgsSA+IGdvaG91XCA7CivlpJbloLQgPiBnYWliYVwgOwor5pWw5aWHID4gc3V1a2lcIDsKK+mbouWxsSA+IHJpemFuXCA7CivlpKflmJggPiBvb3Vzb1wgOwor57OW6I+TID4gdG91a2FcIDsKK+aVsOWkmiA+IHN1dXRhXCA7Civmj5DorbAgPiB0ZWlnaVwgOwor6ZqP5pmCID4genVpamlcIDsKK+e1jOeUsSA+IGtlaXl1XCA7CivngavokawgPiBrYXNvdVwgOwor6ZyK5ZySID4gcmVpZW5cIDsKK+aUv+W6nCA+IHNlaWZ1XCA7CivlpYflhbUgPiBraWhlaVwgOwor6Zi/5ryVID4gYWtvZ2lcIDsKK+mYsueCjiA+IGJvdWVuXCA7CivmlpfljZcgPiB0b25hblwgOwor5aOy5a2QID4gdXJpa29cIDsKK+mbu+WgtCA+IGRlbmJhXCA7CivlpJblm6AgPiBnYWlpblwgOwor6Ziy54GrID4gYm91a2FcIDsKK+aPkOiotCA+IHRlaXNvXCA7CivpnLLlhYkgPiByb2tvdVwgOwor5aSr5ZCbID4gZnVrdW5cIDsKK+ikh+ihoyA+IGZ1a3VpXCA7CivntYznkIYgPiBrZWlyaVwgOwor5aSn5ZG8ID4gdGFpa29cIDsKK+Wkp+WRsyA+IG9vYWppXCA7Civmlr3kuLsgPiBzZXNodVwgOwor6Zuy5aOMID4gdW5qb3VcIDsKK+Wlh+WBtiA+IGtpZ3V1XCA7CivlpKrlj6QgPiB0YWlrb1wgOwor54Sh5rOVID4gbXVob3VcIDsKK+aVheWxsSA+IGtvemFuXCA7Civmv4PpnKcgPiBub3VtdVwgOwor6Zui5amaID4gcmlrb25cIDsKK+Wkp+WPsCA+IG9vZGFpXCA7CivlnKjph44gPiB6YWl5YVwgOwor54K556S6ID4gdGVuamlcIDsKK+aVmeWnlCA+IGt5b3VpXCA7CivoqoflpKcgPiBrb2RhaVwgOwor54Gr6ImyID4gaGlpcm9cIDsKK+eEtuanmCA+IHNheW91XCA7CivooaPprZogPiBzaGltaVwgOwor6KqY5ZugID4geXV1aW5cIDsKK+eyl+ijvSA+IHNvc2VpXCA7Civmloflj6UgPiBtb25rdVwgOwor54Sh5rC0ID4gbXVzdWlcIDsKK+eDveeBqyA+IGhvdWthXCA7Civnsr7oj68gPiBzZWlrYVwgOwor5aWH5L2TID4ga2l0YWlcIDsKK+eEoeavmyA+IG11bW91XCA7Civnua3kvqEgPiBrZW5rYVwgOwor6Zu75ZmoID4gZGVua2lcIDsKK+Wbs+mdoiA+IHp1bWVuXCA7Civnt6nlvpAgPiBrYW5qb1wgOwor5pS+5bGBID4gaG91aGlcIDsKK+WjsuWlsyA+IGJhaXRhXCA7CivlpKnliqkgPiB0ZW5qb1wgOwor57Gz6LKoID4gYmVpa2FcIDsKK+WbuumZiyA+IGtvcm91XCA7CivnhKHmrosgPiBtdXphblwgOwor6ZaL6IqxID4ga2Fpa2FcIDsKK+eEoeatuyA+IG11c2hpXCA7CivmlofljJYgPiBidW5rYVwgOwor5aWH5Lq6ID4ga2lqaW5cIDsKK+aWreS5jiA+IGRhbmtvXCA7Civlopfmj7QgPiB6b3VlblwgOwor5aSc5Y+JID4geWFzaGFcIDsKK+WfuuebpCA+IGtpYmFuXCA7CivlpKrliIAgPiB0YWNoaVwgOwor6Zmw5pm0ID4gaW5zZWlcIDsKK+Wjq+WlsyA+IHNoaWpvXCA7CivlpKfliKQgPiBvb2JhblwgOwor57Sg55u0ID4gc3VuYW9cIDsKK+imqueIuiA+IG95YWppXCA7CivopqrniLYgPiBveWFqaVwgOwor6Kqy5Yi2ID4ga2FzZWlcIDsKK+mcgOWTgSA+IGp1aGluXCA7Civoo5zorJsgPiBob2tvdVwgOwor6Zuj5aC0ID4gbmFuYmFcIDsKK+e2reaWsCA+IGlzaGluXCA7Civlo7LloLQgPiB1cmliYVwgOwor5aS35L+XID4gaXpva3VcIDsKK+WbnumhpyA+IGthaWtvXCA7CivlpJzli6QgPiB5YWtpblwgOwor5aSn5YaGID4gZGFpZW5cIDsKK+ioiOaZgiA+IGtlaWppXCA7CivloanmooUgPiBhbmJhaVwgOwor6Zmw5paHID4gaW5idW5cIDsKK+mZouacrCA+IGlucG9uXCA7CivlpJrli6IgPiB0YXplaVwgOwor6ZqU5oSPID4ga2FrdWlcIDsKK+Wbm+mhpyA+IHNoaWtvXCA7CivplpPogIUgPiBrYW5qYVwgOwor5aSn5YSSID4gZGFpanVcIDsKK+iqnuWOnyA+IGdvZ2VuXCA7CivlpKflhIAgPiB0YWlnaVwgOwor5aSc5YmNID4geWF6ZW5cIDsKK+ijnOiogiA+IGhvdGVpXCA7CivnsbPoqp4gPiBiZWlnb1wgOwor6Zi75q2iID4gc29zaGlcIDsKK+WkluWLmSA+IGdhaW11XCA7Civpm5HlpJogPiB6YXR0YVwgOwor5aSc5YiGID4geWFidW5cIDsKK+aVl+WboCA+IGhhaWluXCA7CivnsbPoqbEgPiBiZWl3YVwgOwor5Z2Q6KaWID4gemFzaGlcIDsKK+aWieWCmSA+IHNlaWJpXCA7CivlpJrliIYgPiB0YWJ1blwgOwor5aKT5omAID4gYm9zaG9cIDsKK+iqnuWLoiA+IGdvc2VpXCA7CivoqqTliKQgPiBnb2hhblwgOwor5o6h6K2cID4gc2FpZnVcIDsKK+Wjh+WutiA+IGRhbmthXCA7Civlo67lm7MgPiBzb3V0b1wgOwor5Zuz6ZGRID4genVrYW5cIDsKK+WknOWFiSA+IHlha291XCA7CivngrnnlLsgPiB0ZW5nYVwgOwor6Zmk5pWwID4gam9zdXVcIDsKK+mbu+WMliA+IGRlbmthXCA7CivoqqTlhpkgPiBnb3NoYVwgOwor5o6n6Ki0ID4ga291c29cIDsKK+WkmuWFgyA+IHRhZ2VuXCA7CivlpKnkvY0gPiB0ZW4nJ2lcIDsKK+mbsuWPsCA+IHVuZGFpXCA7Civopb/nk5wgPiBzdWlrYVwgOwor6KqN5ZCmID4gbmlucGlcIDsKK+eEoeaguSA+IG11a29uXCA7CivlpInljJYgPiBoZW5nZVwgOwor6Zmi5pS/ID4gaW5zZWlcIDsKK+Wkp+S9kCA+IHRhaXNhXCA7Civoqo3lj68gPiBuaW5rYVwgOwor5aSr5Lq6ID4gZnVqaW5cIDsKK+eBq+e3miA+IGthc2VuXCA7CivntrLmiLggPiBhbWlkb1wgOwor57K+576pID4gc2VpZ2lcIDsKK+iqsOS9lSA+IHN1aWthXCA7CivoqJjmhrYgPiBraW9rdVwgOwor6KO96I+TID4gc2Vpa2FcIDsKK+Wkp+S6iyA+IGRhaWppXCA7Civmv6vosrsgPiByYW5waVwgOwor5aSp5LiLID4gdGVua2FcIDsKK+aWh+S6iyA+IGJ1bmppXCA7Civmk6zmhYsgPiBnaXRhaVwgOwor6Zqg5bGFID4gaW5reW9cIDsKK+aVtOWCmSA+IHNlaWJpXCA7CivntKvnhZkgPiBzaGllblwgOwor5pWs5YW3ID4ga2VpZ3VcIDsKK+eyl+iMtiA+IHNvY2hhXCA7CivlpJzkvJogPiB5YWthaVwgOwor54Sh5pm6ID4gbXVjaGlcIDsKK+mao+WutiA+IHJpbmthXCA7CivntJTnkIYgPiBqdW5yaVwgOwor6Zui5ZCIID4gcmlnb3VcIDsKK+mbo+WPpSA+IG5hbmt1XCA7Civns4rnsr4gPiBrb3NlaVwgOwor57ee5a2QID4gZG9uc3VcIDsKK+mbouWPjSA+IHJpaGFuXCA7CivntKDniYcgPiBzb2hlblwgOwor54WZ5by+ID4gZW5kYW5cIDsKK+iqpOS8nSA+IGdvZGVuXCA7Civpm6rliqAgPiBzZWtrYVwgOwor57O455uuID4gaXRvbWVcIDsKK+e1teafhCA+IGVnYXJhXCA7CivoqJjlv7UgPiBraW5lblwgOwor6KSS576OID4gaG91YmlcIDsKK+mbhOWbsyA+IHl1dXRvXCA7Civngb3npo0gPiBzYWlrYVwgOwor54Sh5patID4gbXVkYW5cIDsKK+eDiOeBqyA+IHJla2thXCA7CivmlbDlgIsgPiBzdXVrb1wgOwor6Zmw5oOoID4gaW5zYW5cIDsKK+eEoeaVsCA+IG11c3V1XCA7CivntbXmnK0gPiBlZnVkYVwgOwor5aSW5LqLID4gZ2FpamlcIDsKK+aVsOS+oSA+IHN1dWthXCA7Civntr/luIMgPiBtZW5wdVwgOwor6KCn6a2aID4gc2hpbWlcIDsKK+WfuueCuSA+IGtpdGVuXCA7CivpmbDmgKcgPiBpbnNlaVwgOwor6Zu75L2NID4gZGVuJydpXCA7CivoqaDlmIYgPiBlaXRhblwgOwor57K+57KXID4gc2Vpc29cIDsKK+mbqOWFtyA+IGFtYWd1XCA7CivlpInkvY0gPiBoZW4nJ2lcIDsKK+mZsOW9sSA+IGluJydlaVwgOwor6KaP5rqWID4ga2lqdW5cIDsKK+e3j+WrgSA+IHNvdWthXCA7CivngrnngasgPiB0ZW5rYVwgOwor6Zui5YWaID4gcml0b3VcIDsKK+aOqeiUvSA+IGVucGVpXCA7CivlpInkuosgPiBoZW5qaVwgOwor6Kmp5Y+lID4gc2hpa3VcIDsKK+mbo+WEgCA+IG5hbmdpXCA7CivntYPmrYwgPiBnZW5rYVwgOwor6Kmm5ZCIID4gc2hpYWlcIDsKK+maoOWjqyA+IGluc2hpXCA7Civmjqnok4sgPiBlbmdhaVwgOwor5aKz5aKTID4gZnVuYm9cIDsKK+e4geWPsCA+IGVuZGFpXCA7Civpm7LkupUgPiBrdW1vaVwgOwor6KGw6YGLID4gc3VpdW5cIDsKK+Wfuua6liA+IGtpanVuXCA7Civpm7bkuIsgPiByZWlrYVwgOwor6ZuF5Y+3ID4gZ2Fnb3VcIDsKK+Wfuua6kCA+IGtpZ2VuXCA7CivoqaDlkJ8gPiBlaWdpblwgOwor5Zyf6KO9ID4gZG9zZWlcIDsKK+ipoOWPsiA+IGVpc2hpXCA7CivnhZnlrrMgPiBlbmdhaVwgOwor5pS/5YuZID4gc2VpbXVcIDsKK+WgtOacqyA+IGJhc3VlXCA7Civlm57pgb8gPiBrYWloaVwgOwor6Zuy5LiKID4gdW5qb3VcIDsKK+aUueWNsCA+IGthaWluXCA7Civntr7lrZAgPiByaW56dVwgOwor54Sh5omNID4gbXVzYWlcIDsKK+eCrOeBqyA+IGt5b2thXCA7CivplovnpZYgPiBrYWlzb1wgOwor54Gr56CyID4ga2Fob3VcIDsKK+mWi+ekuiA+IGthaWppXCA7Civlo7LkvqEgPiBiYWlrYVwgOwor57Gz6IuxID4gYmVpZWlcIDsKK+eFqeWkmiA+IGhhbnRhXCA7Civlo7DkvqEgPiBzZWlrYVwgOwor6Zqg5Z2KID4gb25ib3VcIDsKK+e2uOWtkCA+IHJpbnp1XCA7Civpmrvlj6UgPiBzZWtrdVwgOwor54Sh5oWuID4gbXVyeW9cIDsKK+mbquS4iyA+IHNla2thXCA7CivloIDmsZ8gPiBob3JpZVwgOwor6Zui5Lu7ID4gcmluaW5cIDsKK+e1kOaenCA+IGtla2thXCA7Civpm6jkuK0gPiB1Y2h1dVwgOwor6KGw6LqvID4gc3Vpa3VcIDsKK+e0heeCjiA+IGtvdWVuXCA7CivntrTlrZcgPiB0ZWlqaVwgOwor6Zuj5LqLID4gbmFuamlcIDsKK+WcsOiUtSA+IGppem91XCA7CivnhKHmg7MgPiBtdXNvdVwgOwor54Sh5oOoID4gbXV6YW5cIDsKK+e0r+asoSA+IHJ1aWppXCA7CivnhKHmg4UgPiBtdWpvdVwgOwor57ep5ZKMID4ga2Fud2FcIDsKK+imj+atoyA+IGtpc2VpXCA7CivoqZDlj5YgPiBzYXNodVwgOwor54Sh5oGlID4gbXVjaGlcIDsKK+ijheiNtyA+IHNvdWthXCA7CivnhKHmgKcgPiBtdXNlaVwgOwor6ZuF5YWEID4gZ2FrZWlcIDsKK+eyl+ezliA+IHNvdG91XCA7CivpmqDllqkgPiBpbicneXVcIDsKK+eEoeW/tSA+IG11bmVuXCA7Civlm57ot68gPiBrYWlyb1wgOwor6ZuH5YKtID4ga295b3VcIDsKK+imquacqCA+IG95YWdpXCA7Civpm5HkvZwgPiB6b3VzYVwgOwor54Sh5b2iID4gbXVrZWlcIDsKK+mZkOW6piA+IGdlbmRvXCA7CivnhZnlobUgPiBlbmppblwgOwor5aGB5omTID4gcnVpZGFcIDsKK+aVheS6uiA+IGtvamluXCA7CivlnJ/olLUgPiBkb3pvdVwgOwor6KW/5q2mID4gc2VpYnVcIDsKK+eCjueCjiA+IGVuJydlblwgOwor6KaL5qeYID4gbWl5b3VcIDsKK+aVheS4uyA+IGtvc2h1XCA7Civopb/mrKcgPiBzZWlvdVwgOwor6KaH5qipID4gaGFrZW5cIDsKK+mZouWuoyA+IGluemVuXCA7CivnspfnrKggPiBzb2hvblwgOwor57Sh5qmfID4gYm91a2lcIDsKK+Wbs+inoyA+IHp1a2FpXCA7CivlnKjojbcgPiB6YWlrYVwgOwor6ZeY5rCXID4gdG91a2lcIDsKK+WcsOiJsiA+IGppaXJvXCA7CivnhKHluL0gPiBtdWJvdVwgOwor54Sh5bi4ID4gbXVqb3VcIDsKK+Wcn+iRrCA+IGRvc291XCA7CivmlL/kuosgPiBzZWlqaVwgOwor5o6q572uID4gc29jaGlcIDsKK+Wik+WcsCA+IGJvY2hpXCA7Civnt4/lk6EgPiBzb3VpblwgOwor6ZqP5ZacID4genVpa2lcIDsKK+WcqOiLsSA+IHphaWVpXCA7Civns5zniJsgPiBiaXJhblwgOwor57eP5ZKMID4gc291d2FcIDsKK+mbheS6uiA+IGdhamluXCA7CivloLTmiYAgPiBiYXNob1wgOwor6KGX6LevID4gZ2Fpcm9cIDsKK+mZhOW4ryA+IGZ1dGFpXCA7CivloZflt6UgPiB0b2tvdVwgOwor5Zue6K2wID4ga2FpZ2lcIDsKK+maj+WToSA+IHp1aWluXCA7CivloIXmnpwgPiBrZW5rYVwgOwor6Kix5ZCmID4ga3lvaGlcIDsKK+aLl+mfsyA+IHlvdW9uXCA7CivoqLHlj68gPiBreW9rYVwgOwor6KaL5qCEID4gbWliYWVcIDsKK+e1ueW4gyA+IGtlbnB1XCA7Civpmorlk6EgPiB0YWlpblwgOwor6Zm25ZyfID4gdG91ZG9cIDsKK+aPkOekuiA+IHRlaWppXCA7CivmjInphY0gPiBhbmJhaVwgOwor54Sh5bC9ID4gbXVqaW5cIDsKK+mZpOWkliA+IGpvZ2FpXCA7Civlopflk6EgPiB6b3VpblwgOwor57W15be7ID4gZW1ha2lcIDsKK+ihjOi3ryA+IGtvdXJvXCA7CivmjL/oqbEgPiBzb3V3YVwgOwor6KaL5pysID4gbWlob25cIDsKK+mZouWkliA+IGluZ2FpXCA7Civnt4/li5kgPiBzb3VtdVwgOwor6ZeK5q2pID4ga2FwcG9cIDsKK+WZqumfsyA+IHNvdW9uXCA7Civln7rmnb8gPiBraWJhblwgOwor6Zm25ZmoID4gdG91a2lcIDsKK+e2meWkqyA+IGtlaWZ1XCA7CivnhKHlrrMgPiBtdWdhaVwgOwor6Zqg5YWDID4gaW5nZW5cIDsKK+eEoeWumCA+IG11a2FuXCA7CivoqIPloLEgPiBmdWhvdVwgOwor5Z+65pysID4ga2lob25cIDsKK+eyl+egpSA+IGFyYXRvXCA7CivloLHmgakgPiBob3VvblwgOwor6Zq35LiLID4gcmVpa2FcIDsKK+e0oOadkCA+IHNvemFpXCA7CivpmY3lq4EgPiBrb3VrYVwgOwor57eP5Ye6ID4gc291ZGVcIDsKK+imi+aYoCA+IG1pYmFlXCA7Civntr3lkI0gPiBhZGFuYVwgOwor5ZyS6Iq4ID4gZW5nZWlcIDsKK+eBr+eBqyA+IHRvdWthXCA7Civop6PlrZcgPiBrYWlqaVwgOwor5o2V6JmcID4gaG9yeW9cIDsKK+mao+S/nSA+IHJpbnBvXCA7CivlopPlj4IgPiBib3NhblwgOwor54Gr54G9ID4ga2FzYWlcIDsKK+ioiOWZqCA+IGtlaWtpXCA7CivntYTmiJAgPiBzb3NlaVwgOwor6KO455y8ID4gcmFnYW5cIDsKK+eyl+ebuCA+IHNvc291XCA7Civmi77pgbogPiBzaHV1aVwgOwor57W25a62ID4gemVra2VcIDsKK+iomOWQjSA+IGtpbWVpXCA7CivooaPoo7MgPiBpc2hvdVwgOwor5aKX5YqgID4gem91a2FcIDsKK+iomOWPtyA+IGtpZ291XCA7Civmv77ntJkgPiByb3NoaVwgOwor6Zi75a6zID4gc29nYWlcIDsKK+WcsOe4gSA+IGNoaWVuXCA7CivnhKHlp4sgPiBtdXNoaVwgOwor5Zua6KGjID4gc2h1dWlcIDsKK+iho+ijhSA+IGlzaG91XCA7CivmkanmkI0gPiBtYXNvblwgOwor5Z+65pWwID4ga2lzdXVcIDsKK+ihm+imliA+IGVpc2hpXCA7Civlm73oj68gPiBrb2trYVwgOwor5aGU5amGID4gdG91YmFcIDsKK+e0oOaVsCA+IHNvc3V1XCA7CivlnZDnpoUgPiB6YXplblwgOwor5aKT5YmNID4gYm96ZW5cIDsKK+maoOS6oSA+IG9uYm91XCA7CivnhKHlo7AgPiBtdXNlaVwgOwor5Zyw57SLID4gamltb25cIDsKK+aOsuekuiA+IGtlaWppXCA7CivmvJTpoYwgPiBlbmRhaVwgOwor57SN5pyfID4gbm91a2lcIDsKK+aSkuW4gyA+IHNhbnB1XCA7CivloIXmjIEgPiBrZW5qaVwgOwor5pOs5YuiID4gZ2lzZWlcIDsKK+WbveiKsSA+IGtva2thXCA7CivlnLDnsbMgPiBqaW1haVwgOwor6Kaq5b6hID4gb3lhZ29cIDsKK+eCueaSrSA+IHRlbnBhXCA7Civmv4PoibYgPiBub3VlblwgOwor6Ki05Lq6ID4gc29uaW5cIDsKK+ihl+ihoiA+IGdhaWt1XCA7CivplovmvJQgPiBrYWllblwgOwor6KiO5YyqID4gdG91aGlcIDsKK+e1jOW6piA+IGtlaWRvXCA7Civmk6zliLYgPiBnaXNlaVwgOwor57SL5pelID4gbW9uYmlcIDsKK+aOiOeyviA+IGp1c2VpXCA7CivpmaTlkI0gPiBqb21laVwgOwor54Gv5rK5ID4gdG91eXVcIDsKK+mZpOWPtyA+IGpvZ291XCA7CivpmbblhrYgPiB0b3V5YVwgOwor5Zuw6IumID4ga29ua3VcIDsKK+aKq+mcsiA+IGhpcm91XCA7CivpmaTljrsgPiBqb2t5b1wgOwor6Zmi5Y+3ID4gaW5nb3VcIDsKK+maiuS8jSA+IHRhaWdvXCA7CivntIXml5cgPiBrb3VraVwgOwor6ZqO5LiLID4ga2Fpa2FcIDsKK+aKlemjmyA+IHRvdWhpXCA7Civon7vphbggPiBnaXNhblwgOwor57Sg5oeQID4gc29rYWlcIDsKK+WcsOennyA+IGNoaXNvXCA7CivntLDlvq4gPiBzYWliaVwgOwor6Kib5LydID4ga2FkZW5cIDsKK+aLnei+niA+IGhhaWppXCA7CivlnJ/nrqEgPiBkb2thblwgOwor5Zyw56WHID4gY2hpZ2lcIDsKK+WhiuWcnyA+IGthaWRvXCA7Civoo4/nm64gPiB1cmFtZVwgOwor5oyB6KuWID4gamlyb25cIDsKK+imluW6piA+IHNoaWRvXCA7Civngo7mmpEgPiBlbnNob1wgOwor57K+5rK5ID4gc2VpeXVcIDsKK+eyl+eFriA+IGFyYW5pXCA7Civpl5jmioAgPiB0b3VnaVwgOwor5oy/6IqxID4gc291a2FcIDsKK+aTrOS6uiA+IGdpamluXCA7Civnsr7msJcgPiBzZWlraVwgOwor6KaW5beuID4gc2hpc2FcIDsKK+eEoeWQjSA+IG11bWVpXCA7CivntKDmgKcgPiBzdWpvdVwgOwor6Kaq5a2XID4gb3lhamlcIDsKK+mYu+WWqiA+IHNvc291XCA7CivntI3miLggPiBuYW5kb1wgOwor54Sh5Y+MID4gbXVzb3VcIDsKK+WhqeWIhiA+IGVuYnVuXCA7CivntKDlv5cgPiBzb3NoaVwgOwor57Sw5belID4gc2Fpa3VcIDsKK+mZquS+jSA+IGJhaWppXCA7CivloLDloKQgPiBlbnRlaVwgOwor54Sh5YuiID4gYnV6ZWlcIDsKK+WfuuW6lSA+IGtpdGVpXCA7CivmjrvniKwgPiBzb3VoYVwgOwor5Zyn56CVID4gYXNzYWlcIDsKK+WfuuW5uSA+IGtpa2FuXCA7Civmj67mr6sgPiBraWdvdVwgOwor54Sh5Yq5ID4gbXVrb3VcIDsKK+WcsOebpCA+IGppYmFuXCA7Civlm7LnuZ4gPiBpbnlvdVwgOwor5oud6LOAID4gaGFpZ2FcIDsKK+eBq+ahtiA+IGhpb2tlXCA7CivmjqjnkIYgPiBzdWlyaVwgOwor57KX5ryPID4gc29yb3VcIDsKK+aJtumkiiA+IGZ1eW91XCA7CivmjZXnuIQgPiBob2pvdVwgOwor57W25Y+lID4gemVra3VcIDsKK+Wbm+iCoSA+IHNoaWtvXCA7CivnsKHntKAgPiBrYW5zb1wgOwor5oq86YCBID4gb3Vzb3VcIDsKK+Wcn+eggiA+IGRvc2hhXCA7CivnhKHlhqAgPiBtdWthblwgOwor54K55beuID4gdGVuc2FcIDsKK+WgoeWhgSA+IGhvcnVpXCA7Civmk43kvZwgPiBzb3VzYVwgOwor57SU5bqmID4ganVuZG9cIDsKK+iogOS4iyA+IGdlbmthXCA7Civopo/lrpogPiBraXRlaVwgOwor54Gr5pucID4ga2F5b3VcIDsKK+a7i+mkiiA+IGppeW91XCA7Civmj5vmsJcgPiBrYW5raVwgOwor6ZaL5p62ID4ga2Fpa2FcIDsKK+Wcp+eXlSA+IGFra29uXCA7Civmibnpm6MgPiBoaW5hblwgOwor6KO95rK5ID4gc2VpeXVcIDsKK+WZqOiyoSA+IGtpemFpXCA7CivplpHmmocgPiBrYW5rYVwgOwor54Gr5pifID4ga2FzZWlcIDsKK+mZm+S4iyA+IGhlaWthXCA7Civop5LlipsgPiBzdW1vdVwgOwor57K+5p+7ID4gc2Vpc2FcIDsKK+WcsOeQhiA+IGNoaXJpXCA7CivloLTlkbMgPiBiYWFqaVwgOwor566X6K2cID4gc2FucHVcIDsKK+eDiOWppiA+IHJlcHB1XCA7CivloZHlg48gPiBzb3pvdVwgOwor5o6I55SjID4ganVzYW5cIDsKK+eEoeS9kyA+IG11dGFpXCA7CivooYzohJogPiBhbmd5YVwgOwor54Sh5L2PID4gbXVqdXVcIDsKK+aPuuabsyA+IHlvdWVpXCA7CivntKDlrZAgPiBzb3NoaVwgOwor57WM5Za2ID4ga2VpZWlcIDsKK+Wcn+eUqCA+IGRveW91XCA7CivnhKHku6MgPiBtdWRhaVwgOwor6KCR6J66ID4gc2F6YWVcIDsKK+ieuumIvyA+IHJhZGVuXCA7CivngrnlrZcgPiB0ZW5qaVwgOwor54Sh5Lq6ID4gbXVuaW5cIDsKK+Wcn+eTtiA+IGRvYmluXCA7CivloILlpaUgPiBkb3VvdVwgOwor6Ziy5YW3ID4gYm91Z3VcIDsKK+mZjeS4iyA+IGtvdWthXCA7CivntLrlnLAgPiBrb25qaVwgOwor6ZW35p+EID4gbmFnYWVcIDsKK+iln+W6piA+IGtpbmRvXCA7CivnhKHkuIogPiBtdWpvdVwgOwor6KGj57OnID4gaXJ5b3VcIDsKK+e1tuS9syA+IHpla2thXCA7CivntKDlp5MgPiBzdWpvdVwgOwor6Ziy5YKZID4gYm91YmlcIDsKK+Wbs+ekuiA+IHp1c2hpXCA7CivntZDlj6UgPiBrZWtrdVwgOwor5Z+O5bqcID4gam91ZnVcIDsKK+iejemZpCA+IHl1dWpvXCA7CivmiaPpmaQgPiBrb3Vqb1wgOwor6Zi/5LqAID4gb2thbWVcIDsKK+aJk+mghiA+IGRhanVuXCA7CivmirHosqAgPiBob3VmdVwgOwor5o6S54WZID4gaGFpZW5cIDsKK+a8ouiqniA+IGthbmdvXCA7CivmkYLlrrYgPiBzZWtrZVwgOwor5aCF5Zu6ID4ga2VuZ29cIDsKK+eBq+aJiyA+IGthc2h1XCA7CivmiYvpoIYgPiB0ZWp1blwgOwor5omT6Zu7ID4gZGFkZW5cIDsKK+etlOi+niA+IHRvdWppXCA7Civmj5DmoYggPiB0ZWlhblwgOwor5Z+65ZywID4ga2ljaGlcIDsKK+Wcp+eCuSA+IGF0dGVuXCA7CivplovmiYkgPiBrYWloaVwgOwor6KOc5q2jID4gaG9zZWlcIDsKK+aPoeaWpyA+IGFrdWZ1XCA7CivmiqvorJsgPiBoaWtvdVwgOwor5omT6ZaLID4gZGFrYWlcIDsKK+imgeWbsyA+IHlvdXp1XCA7Civopb/lnJ8gPiBzZWlkb1wgOwor6KaB5ZugID4geW91aW5cIDsKK+ertummrCA+IGtlaWJhXCA7CivnspfmnKggPiBhcmFraVwgOwor5ryP6KmxID4gcm91d2FcIDsKK+aOoeayuSA+IHNhaXl1XCA7Civooqvngb0gPiBoaXNhaVwgOwor5aC05LujID4gYmFkYWlcIDsKK+eyl+aatCA+IHNvYm91XCA7CivlnLDmuKkgPiBjaGlvblwgOwor5o6q5q2iID4gc29zaGlcIDsKK+ijj+avmyA+IHVyYWtlXCA7CivploDmiYkgPiBtb25waVwgOwor6ZaA5oi4ID4gbW9ua29cIDsKK+ezluW6piA+IHRvdWRvXCA7Civplovmgp8gPiBrYWlnb1wgOwor57SZ5ZmoID4gc2hpa2lcIDsKK+aKq+imiyA+IGhpa2VuXCA7CivmkbjlhpkgPiBtb3NoYVwgOwor6KGo552AID4gdXdhZ2lcIDsKK+eCreWboyA+IHRhZG9uXCA7Civlm57nm64gPiBrYWltZVwgOwor5oqX6K2wID4ga291Z2lcIDsKK+a7hemHkSA+IG1la2tpXCA7CivnspfmlL4gPiBzb2hvdVwgOwor6KaB5ZOhID4geW91aW5cIDsKK+aJk+mNtSA+IGRha2VuXCA7CivntK/liqAgPiBydWlrYVwgOwor6J2f6ZuGID4gaXNodXVcIDsKK+eCiuWppiA+IHN1aWZ1XCA7CivngrnlkbwgPiB0ZW5rb1wgOwor5o6S5rCXID4gaGFpa2lcIDsKK+aRuOWAoyA+IG1vaG91XCA7Civopo/liLYgPiBraXNlaVwgOwor54KO5aSpID4gZW50ZW5cIDsKK+WboOeUsSA+IGluJyd5dVwgOwor5Zyw5q2pID4gY2hpaG9cIDsKK+aJi+mMoCA+IHRlam91XCA7Civmv7bmrakgPiBrYXBwb1wgOwor5Zyw5q2MID4gaml1dGFcIDsKK+mWgOW+kiA+IG1vbnRvXCA7CivllrbppIogPiBlaXlvdVwgOwor54KK5aSrID4gc3VpZnVcIDsKK+aMv+eUuyA+IHNvdWdhXCA7Civlm7PniYggPiB6dWhhblwgOwor57K+5bqmID4gc2VpZG9cIDsKK+aPtOW8lSA+IGVuJydpblwgOwor5rue6LKoID4gdGFpa2FcIDsKK+imgeWLmSA+IHlvdW11XCA7CivngavlsbEgPiBrYXphblwgOwor57O75ZuzID4ga2VpenVcIDsKK+Wcp+atuyA+IGFzc2hpXCA7CivmiYvph5EgPiB0ZWtpblwgOwor5Zyf5rCRID4gZG9taW5cIDsKK+eCueWJjSA+IHRlbWFlXCA7CivmjqLmn7sgPiB0YW5zYVwgOwor57SU5YyWID4ganVua2FcIDsKK+e0jeWPlyA+IG5vdWp1XCA7CivmiYvphY0gPiB0ZWhhaVwgOwor5ouJ6Ie0ID4gcmFjaGlcIDsKK+ihm+eUnyA+IGVpc2VpXCA7Civoo5zmlbQgPiBob3NlaVwgOwor6KaB5YW3ID4geW91Z3VcIDsKK+ijnOaVsCA+IGhvc3V1XCA7Civngq3ljJYgPiB0YW5rYVwgOwor5o6I5qipID4ganVrZW5cIDsKK+e0lOWIqSA+IGp1bnJpXCA7CivnrYboqJggPiBoaWtraVwgOwor57Sw5LqLID4gc2FpamlcIDsKK+aMh+ekuiA+IHNoaWppXCA7CivnspfmgqogPiBzb2FrdVwgOwor57Sg5L2TID4gc290YWlcIDsKK+a8lOiKuCA+IGVuZ2VpXCA7Civns57lnJ8gPiBmdW5kb1wgOwor6ZW35bGFID4gbmFnYWlcIDsKK+a8q+e9tSA+IG1hbmJhXCA7CivntJnkvqEgPiBzaGlrYVwgOwor56uv6YqtID4gaGFzZW5cIDsKK+WYieiogCA+IGthZ2VuXCA7CivnspjluqYgPiBuZW5kb1wgOwor566q56ylID4gdGFuc3VcIDsKK+e0gOWFgyA+IGtpZ2VuXCA7Civlm7Pms5UgPiB6dWhvdVwgOwor5r2k55uuID4gdXJ1bWVcIDsKK+WbveatjCA+IGtva2thXCA7Civplovln7ogPiBrYWlraVwgOwor5rmW6Z2iID4ga29tZW5cIDsKK+aPmuWxiyA+IGFnZXlhXCA7CivlnJ/mm5wgPiBkb3lvdVwgOwor57SN5LuYID4gbm91ZnVcIDsKK+ijj+aJiyA+IHVyYXRlXCA7Civonp/om74gPiBtZWlnYVwgOwor5Zyn5pS/ID4gYXNzZWlcIDsKK+mWi+WckiA+IGthaWVuXCA7CivlnJ/mmJ8gPiBkb3NlaVwgOwor54KO5YWJID4gZW5rb3VcIDsKK+aKvOe1tSA+IG9zaGllXCA7Civmua/piq0gPiB5dXNlblwgOwor6Zay5YW1ID4gZXBwZWlcIDsKK+ijnOW8piA+IGhvZ2VuXCA7Civns7jkvqEgPiBzaGlrYVwgOwor6KGM54GvID4gYW5kb25cIDsKK+aJi+ipsSA+IHNodXdhXCA7CivlnKfmjpIgPiBhcHBhaVwgOwor5omL6KiYID4gc2h1a2lcIDsKK+WWtumAoCA+IGVpem91XCA7CivlnLDmiYAgPiBqaXNob1wgOwor57OW5YyWID4gdG91a2FcIDsKK+WWtui+siA+IGVpbm91XCA7Civoo5zlt7sgPiBob2thblwgOwor6KOV5bqmID4geXV1ZG9cIDsKK+eziuWPoyA+IGtva291XCA7CivmioDoirggPiBnaWdlaVwgOwor6Za55Lq6ID4gZW5qaW5cIDsKK+aNnOafuyA+IHNvdXNhXCA7CivmiYvoo70gPiB0ZXNlaVwgOwor5Z+O5LiLID4gam91a2FcIDsKK+eBq+WLoiA+IGthc2VpXCA7Civmi53nnIkgPiBoYWliaVwgOwor5oy95q2MID4gYmFua2FcIDsKK+aOiOaIkiA+IGp1a2FpXCA7CivnspflpKcgPiBzb2RhaVwgOwor5oim6LK7ID4gc2VucGlcIDsKK+WbuuaciSA+IGtveXV1XCA7CivmuKnpoZQgPiBvbmdhblwgOwor54KK5LqLID4gc3VpamlcIDsKK+eCjuS4iiA+IGVuam91XCA7CivmjbvmjKsgPiBuZW56YVwgOwor6KO95aGpID4gc2VpZW5cIDsKK+eBq+WIkSA+IGtha2VpXCA7CivmvJTnrpcgPiBlbnphblwgOwor5rip6aCGID4gb25qdW5cIDsKK+mWi+WMliA+IGthaWthXCA7Civoo5zlsI4gPiBob2RvdVwgOwor5Zug5qWtID4gaW5nb3VcIDsKK+aKgOiDvSA+IGdpbm91XCA7CivnqoHpo5sgPiB0b3BwaVwgOwor5Zu95peXID4ga29ra2lcIDsKK+Wbs+abuCA+IHRvc2hvXCA7CivngavlhYkgPiBrYWtvdVwgOwor6KOc5a6MID4gaG9rYW5cIDsKK+ewoeaYkyA+IGthbicnaVwgOwor6KGS5rCXID4gZ2Vua2lcIDsKK+exs+WvvyA+IGJlaWp1XCA7CivmipXntrIgPiB0b2FtaVwgOwor6KO95ZuzID4gc2VpenVcIDsKK+eymOWcnyA+IG5lbmRvXCA7CivmkI3kv50gPiBzb25wb1wgOwor6KOP5bGLID4gdXJheWFcIDsKK+aOquWumiA+IHNvdGVpXCA7CivmibbogrIgPiBmdWlrdVwgOwor6Zaj5LiLID4ga2Fra2FcIDsKK+aIpuiomCA+IHNlbmtpXCA7CivmiYvoloQgPiB0ZXVzdVwgOwor566h55CGID4ga2FucmlcIDsKK+WcqOW6qyA+IHphaWtvXCA7CivmjafmjIEgPiBob3VqaVwgOwor56ul6KmxID4gZG91d2FcIDsKK+idpuibhCA+IHNoYWtvXCA7Civmj7TlhbUgPiBlbnBlaVwgOwor5Z2R5aSrID4ga291ZnVcIDsKK+iiq+W8viA+IGhpZGFuXCA7CivooYDmsJcgPiBrZWtraVwgOwor5ZiJ6IK0ID4ga2Frb3VcIDsKK+WZqOeUqCA+IGtpeW91XCA7CivplpPku6MgPiBtYWRhaVwgOwor5Zyn5be7ID4gYWtrYW5cIDsKK+aIkuittyA+IGthaWdvXCA7Civnga/kuIsgPiB0b3VrYVwgOwor5ryr55S7ID4gbWFuZ2FcIDsKK+aPmuWPpSA+IGFnZWt1XCA7CivllprotbcgPiBrYW5raVwgOwor6KOc5aGrID4gaG90ZW5cIDsKK+iho+acjSA+IGlmdWt1XCA7Civnspflk4EgPiBzb2hpblwgOwor5Zyf5belID4gZG9rb3VcIDsKK+a4hemfsyA+IHNlaW9uXCA7Civlm6DmlbAgPiBpbnN1dVwgOwor5oiQ6KqeID4gc2VpZ29cIDsKK+Wbm+aXpSA+IHlva2thXCA7CivmiYvojZIgPiB0ZWFyYVwgOwor57Gz5aGpID4gYmVpZW5cIDsKK+aOqeWjlSA+IGVuZ291XCA7CivlmIbnvo4gPiB0YW5iaVwgOwor6J2X6JmrID4gYmF0dGFcIDsKK+iho+aWmSA+IGlyeW91XCA7CivmjZXmiYsgPiBob3NodVwgOwor5Zyo5a62ID4gemFpa2VcIDsKK+ijnOWbniA+IGhva2FpXCA7CivooZvmmJ8gPiBlaXNlaVwgOwor6ZaA5LiLID4gbW9ua2FcIDsKK+ihjOadjiA+IGtvdXJpXCA7CivlmbTngasgPiBmdW5rYVwgOwor57KX5YipID4gYXJhcmlcIDsKK+iiq+WusyA+IGhpZ2FpXCA7Civnr4DmsJcgPiBzZWtraVwgOwor6KOP5ZywID4gdXJhamlcIDsKK+mNjemHkSA+IG1la2tpXCA7CivlmInntI0gPiBrYW5vdVwgOwor5rer6aKoID4gaW5wdXVcIDsKK+aJk+iAhSA+IGRhc2hhXCA7CivlnLDlo7AgPiBqaWdvZVwgOwor6Jy/6JySID4gZW4nJ2VuXCA7Civmt7vpmYQgPiB0ZW5wdVwgOwor5Zu65b2iID4ga29rZWlcIDsKK+aKmOebriA+IG9yaW1lXCA7Civlm73luqsgPiBrb2trb1wgOwor5r+D5bqmID4gbm91ZG9cIDsKK+ethuemjSA+IGhpa2thXCA7CivonLvom4kgPiB0b25ib1wgOwor6KGM5pa5ID4geXVrdWVcIDsKK+ihjeaWhyA+IGVuYnVuXCA7Civoo7jlg48gPiByYXpvdVwgOwor5Zub5omLID4gc2hpZGVcIDsKK+Wbs+W9oiA+IHp1a2VpXCA7CivlnoLkuIsgPiBzdWlrYVwgOwor6JyC6LW3ID4gaG91a2lcIDsKK++8sO+8oyA+IHDEq3NoxKtcIDsKK+aJk+e3miA+IGRhc2VuXCA7CivlnLDlm7MgPiBjaGl6dVwgOwor6KGo5oSPID4gaHlvdWlcIDsKK+aKgOeglCA+IGdpa2VuXCA7CivlnJ/lo4wgPiBkb2pvdVwgOwor5omL57mUID4gdGVvcmlcIDsKK+ijuOS9kyA+IHJhdGFpXCA7Civlm7Plt6UgPiB6dWtvdVwgOwor6KGb5omAID4gZWlzaG9cIDsKK+ihsOW+riA+IHN1aWJpXCA7Civoo4/lkI0gPiB1cmFuYVwgOwor5Zyf5aGKID4gZG9rYWlcIDsKK+aJi+e3tCA+IHRlcmVuXCA7CivlnJ/loYEgPiBkb3J1aVwgOwor5Zyf5aGAID4gZG9iZWlcIDsKK+WUkOmfsyA+IHRvdW9uXCA7Civlm6DlvqogPiBpbmp1blwgOwor57C/5aSWID4gYm9nYWlcIDsKK+WbnuW/jCA+IGthaWtpXCA7CivmjqHlkKYgPiBzYWloaVwgOwor5oqA55ujID4gZ2lrYW5cIDsKK+WbveWutiA+IGtva2thXCA7CivmiI7okbUgPiBqdXVraVwgOwor5Zm05rCXID4gZnVua2lcIDsKK+epuui8uCA+IGt1dXl1XCA7CivlnJ/lnLAgPiB0b2NoaVwgOwor6KOc5YWFID4gaG9qdXVcIDsKK+WdkeWEkiA+IGtvdWp1XCA7Civlm7rlrpogPiBrb3RlaVwgOwor5Zyw5ZSEID4gaml1dGFcIDsKK+WbuuWuiCA+IGtvc2h1XCA7CivmjJnmjqogPiBreW9zb1wgOwor5omT566XID4gZGFzYW5cIDsKK+WdkOWDjyA+IHphem91XCA7CivlnJ/lmqIgPiBkb25vdVwgOwor6KOB5Y+vID4gc2Fpa2FcIDsKK+WcsOWRsyA+IGNoaW1pXCA7CivnqoHotbcgPiB0b2traVwgOwor5Za26IiOID4gZWlzaGFcIDsKK+WbnuW4sCA+IGthaWtpXCA7CivmvLjmrKEgPiB6ZW5qaVwgOwor5Zar6Iy2ID4ga2lzc2FcIDsKK+epuui3ryA+IGt1dXJvXCA7Civlm73lqIEgPiBrb2t1aVwgOwor5r2c5pmCID4gc2VuamlcIDsKK+WcsOWMuiA+IGNoaWt1XCA7CivmjIfmj64gPiBzaGlraVwgOwor5oyJ5o6SID4gYW5iYWlcIDsKK+ijnOS7uyA+IGhvbmluXCA7CivmvKvmrakgPiBtYW5wb1wgOwor57Gz5L6hID4gYmVpa2FcIDsKK+ihhuaEjyA+IHNodXVpXCA7CivmvIHngasgPiBneW9rYVwgOwor5oeH6KmxID4ga29ud2FcIDsKK+epuuiyuyA+IGt1dWhpXCA7CivonInonaMgPiBmdXl1dVwgOwor6Juu6KqeID4gYmFuZ29cIDsKK+ijheWFtyA+IHNvdWd1XCA7CivmiK/ntbUgPiB6YXJlZVwgOwor5Z2Q5LmXID4gemFqb3VcIDsKK+Wbo+WtkCA+IGRhbmdvXCA7CivlnJ/lj7AgPiBkb2RhaVwgOwor5ra86ZuoID4gcnlvdXVcIDsKK+ijheWCmSA+IHNvdWJpXCA7Civlm6DlrZAgPiBpbnNoaVwgOwor5oyJ5omLID4gYW5zaHVcIDsKK+WdiuS4uyA+IGJvdXp1XCA7CivooYblvpIgPiBzaHV0b1wgOwor5ryP5rSpID4gcm91ZWlcIDsKK+Wcp+WItiA+IGFzc2VpXCA7Civlm5vlraMgPiBzaGlraVwgOwor5Za257mVID4gZWl6ZW5cIDsKK+WZqOaisCA+IGtpa2FpXCA7Civnp7vpp5AgPiBpY2h1dVwgOwor5oyB5oiSID4gamlrYWlcIDsKK+iZjumtmiA+IG9rb3plXCA7CivnrpfmnKggPiBzYW5naVwgOwor5Zyw5L6hID4gY2hpa2FcIDsKK+aJi+ebuCA+IHRlc291XCA7CivlmajmnZAgPiBraXphaVwgOwor6ZGR5p+7ID4ga2Fuc2FcIDsKK+Wcp+WAkiA+IGF0dG91XCA7CivmtbfpsLsgPiBhbmFnb1wgOwor5ouF5p62ID4gdGFua2FcIDsKK+mLremLkiA+IGVpaG91XCA7CivmjpLku5YgPiBoYWl0YVwgOwor5oaC6LqrID4gdWtpbWlcIDsKK+aJueeCuSA+IGhpdGVuXCA7CivlnJ/lgbYgPiBkb2d1dVwgOwor6KGM5a6uID4gYW5ndXVcIDsKK+WcsOS4iyA+IGNoaWthXCA7CivnrofmnaEgPiBrYWpvdVwgOwor5Zyf5L6vID4gZG9rb3VcIDsKK+aIpuemjSA+IHNlbmthXCA7CivnrYnmuKkgPiB0b3VvblwgOwor5r+D5YyWID4gbm91a2FcIDsKK+WTgOmhmCA+IGFpZ2FuXCA7CivmjL/lm7MgPiBzb3V6dVwgOwor5Zyf5Lq6ID4gZG9qaW5cIDsKK+a/gOWMliA+IGdla2thXCA7CivmhJvppJAgPiBhaXNhblwgOwor5ZK96aCtID4gaW50b3VcIDsKK+euh+aVsCA+IGtvc3V1XCA7CivlloTnvo4gPiB6ZW5iaVwgOwor5oqV5qmfID4gdG91a2lcIDsKK+ibh+ihjCA+IGRha291XCA7CivmioDms5UgPiBnaWhvdVwgOwor6KGh5ZmoID4ga291a2lcIDsKK+a1hem7hCA+IGFzYWdpXCA7Civmhbbos4AgPiBrZWlnYVwgOwor5ous5bynID4ga2Fra29cIDsKK+etieavlCA+IHRvdWhpXCA7Civmipvmo4QgPiBob3VraVwgOwor6KGX5ZuzID4gZ2FpenVcIDsKK+WckuS4gSA+IGVudGVpXCA7Civmi4fmjIcgPiBib3NoaVwgOwor5oqV5qOEID4gdG91a2lcIDsKK+aJk+eCuSA+IGRhdGVuXCA7CivmtbfpnKcgPiBrYWltdVwgOwor5ryP5paXID4gcm91dG9cIDsKK+evhuWtlyA+IHRlbmppXCA7CivmuKHoiLkgPiB0b3NlblwgOwor5rih6IiqID4gdG9rb3VcIDsKK+a7nuaspyA+IHRhaW91XCA7Civmt6vooYwgPiBpbmtvdVwgOwor56+A5a2jID4gc2Vra2lcIDsKK+euh+aJgCA+IGthc2hvXCA7Civlm7rkvZMgPiBrb3RhaVwgOwor562U5qGIID4gdG91YW5cIDsKK+aLmOW8lSA+IGtvdWluXCA7Civnq6XnlLsgPiBkb3VnYVwgOwor5rip57+SID4gc2FyYWlcIDsKK+evgOWppiA+IHNlcHB1XCA7Civmi5DlvJUgPiBrYWlpblwgOwor5Zad56C0ID4ga2FwcGFcIDsKK+ihjOWToSA+IGtvdWluXCA7CivooZfljLogPiBnYWlrdVwgOwor6buE6a+bID4ga2lkYWlcIDsKK+WSjOmiqCA+IHdhZnV1XCA7Civonrrml4sgPiByYXNlblwgOwor56if6K2wID4gcmluZ2lcIDsKK+aGguiZniA+IHl1dWd1XCA7CivmiYvmt6sgPiBzaHVpblwgOwor6YuS6LW3ID4gaG91a2lcIDsKK+aJk+azlSA+IGRhaG91XCA7Civmt6volakgPiBpbnRvdVwgOwor56eY6Y21ID4gaGlrZW5cIDsKK+aJtuahkSA+IGZ1c291XCA7CivomZrovp4gPiBreW9qaVwgOwor6KGb5YW1ID4gZWloZWlcIDsKK+a4pue3miA+IGthc2VuXCA7Civnqrrnn6UgPiBraWNoaVwgOwor5oSa6YiNID4gZ3Vkb25cIDsKK+ihjOWLmSA+IGtvdW11XCA7CivpvKDovKkgPiBzb2hhaVwgOwor5oyZ5Y+lID4gYWdla3VcIDsKK+WbnuS7mCA+IGthaWZ1XCA7Civnr4Tlm7IgPiBoYW4nJ2lcIDsKK+a4pue0iyA+IGthbW9uXCA7CivmiY3msJcgPiBzYWlraVwgOwor5rW36YeMID4ga2FpcmlcIDsKK+m8oOi5iiA+IHNva2VpXCA7CivmiKbngasgPiBzZW5rYVwgOwor5oqK5o+hID4gaGFha3VcIDsKK+aCsumztCA+IGhpbWVpXCA7CivmuKHnsbMgPiB0b2JlaVwgOwor5ouz5Zu6ID4gZ2Vua29cIDsKK+aKleaJkyA+IHRvdWRhXCA7CivmjIflkbwgPiBzaGlrb1wgOwor6bqS6bqfID4ga2lyaW5cIDsKK+aLt+WZqCA+IGdvdWtpXCA7CivlmajlrpggPiBraWthblwgOwor6Y6W54q2ID4gc2Fqb3VcIDsKK+a6ouawtCA+IGlzc3VpXCA7CivmhYjoqJMgPiBqaWt1blwgOwor5rmW55WUID4ga29oYW5cIDsKK+a1t+mBiyA+IGthaXVuXCA7CivmhoLoi6YgPiB5dXVrdVwgOwor5Zef5q2OID4gc2F0YW5cIDsKK+a1t+i+uiA+IHVtaWJlXCA7CivmhJvou4ogPiBhaXNoYVwgOwor5oqK5omLID4gaGFzaHVcIDsKK+aMgeWPgiA+IGppc2FuXCA7CivmiZPmo5IgPiBkYWJvdVwgOwor5rmv54WOID4geXVzZW5cIDsKK+a1rumBiiA+IGZ1eXV1XCA7CivmvKLlrZcgPiBrYW5qaVwgOwor5oqS5oOFID4gam9qb3VcIDsKK+evgOWPpSA+IHNla2t1XCA7Civnp7voqr8gPiBpY2hvdVwgOwor5oyJ5YiGID4gYW5idW5cIDsKK+aCqumtlCA+IGFrdW1hXCA7CivmioDmiYsgPiBnaXNodVwgOwor5rmv54GMID4geXVrYW5cIDsKK+aJi+ahtiA+IHRlb2tlXCA7CivnqLLojbcgPiBpbmFyaVwgOwor5rqQ5rCPID4gZ2VuamlcIDsKK+aKleW9sSA+IHRvdWVpXCA7Civmtbfot68gPiBrYWlyb1wgOwor5om25oyBID4gZnVjaGlcIDsKK+a1pui+uiA+IHVyYWJlXCA7Civlkozph5EgPiB3YWtpblwgOwor6bqd6aaZID4gamFrb3VcIDsKK+mIjem6uyA+IGRvbm1hXCA7CivllZPnpLogPiBrZWlqaVwgOwor5oKq6aasID4gYWt1bWVcIDsKK+aJi+acrCA+IHRlaG9uXCA7CivmuJvno6ggPiBnZW5tYVwgOwor5oKy6aGYID4gaGlnYW5cIDsKK+eqgeegtCA+IHRvcHBhXCA7CivmtbfosZogPiBpcnVrYVwgOwor5oeQ55aRID4ga2FpZ2lcIDsKK+ibh+euoSA+IGpha2FuXCA7Civlk4DoqakgPiBhaXNoaVwgOwor5r2u5L2NID4gY2hvdWlcIDsKK+WTgOipniA+IGFpc2hpXCA7CivmiZPmlbAgPiBkYXN1dVwgOwor5oSa6KuWID4gZ3Vyb25cIDsKK+aIpuapnyA+IHNlbmtpXCA7CivmiYDmnJ8gPiBzaG9raVwgOwor5ryB5a62ID4gZ3lva2FcIDsKK+aJi+aWpyA+IHRlb25vXCA7CivmvJTlpY8gPiBlbnNvdVwgOwor6buZ6YGOID4gbW9ra2FcIDsKK+aLneWPlyA+IGhhaWp1XCA7CivmtarosrsgPiByb3VoaVwgOwor5omL5pWwID4gdGVzdXVcIDsKK+aIuOadvyA+IHRvaXRhXCA7CivmvKLlnJ8gPiBrYW5kb1wgOwor5ryU5aOHID4gZW5kYW5cIDsKK+aEmuioiCA+IGd1a2VpXCA7Civmua/msrsgPiB0b3VqaVwgOwor6Ymb6YyYID4gZW5zdWlcIDsKK+evgOS+myA+IHNla2t1XCA7Civnq4vmtL4gPiByaXBwYVwgOwor5rOl6bCMID4gZG9qb3VcIDsKK+etieW3riA+IHRvdXNhXCA7CivnrqHljLogPiBrYW5rdVwgOwor5oSa6KaLID4gZ3VrZW5cIDsKK+aKgOW4qyA+IGdpc2hpXCA7Civmg7notbcgPiBqYWtraVwgOwor5ouS5ZCmID4ga3lvaGlcIDsKK+mJm+mJsSA+IGVua291XCA7CivlkbPphoIgPiBtaXJpblwgOwor5ZG96YGLID4gbWVpdW5cIDsKK+aKgOW3pyA+IGdpa291XCA7CivmioDlt6UgPiBnaWtvdVwgOwor6by76Iy4ID4gYmlqb3VcIDsKK+mMrOejqCA+IHJlbm1hXCA7Civnp5joqIggPiBoaWtlaVwgOwor56eB6LK7ID4gc2hpaGlcIDsKK+aEj+iosyA+IGl5YWt1XCA7CivomIfpgKMgPiBzb3JlblwgOwor5ZO66IKyID4gaG9pa3VcIDsKK+a0vumBoyA+IGhha2VuXCA7Civmg7PotbcgPiBzb3VraVwgOwor6YqF6LKoID4gZG91a2FcIDsKK+aCjemmrCA+IGthbmJhXCA7CivmiK/mm7ggPiBnaXNob1wgOwor6YqY6KiYID4gbWVpa2lcIDsKK+aEmuihjCA+IGd1a291XCA7Civnqbrnlo4gPiBrdXVzb1wgOwor5rWu6KiAID4gZnVnZW5cIDsKK+a8geWkqyA+IGd5b2Z1XCA7Civmi53lhbcgPiBoYWlndVwgOwor5oi45pWwID4ga29zdXVcIDsKK+azoumrmCA+IGhha291XCA7CivmiKbmnpwgPiBzZW5rYVwgOwor6YqA6LKoID4gZ2lua2FcIDsKK+err+acrCA+IGhhaG9uXCA7CivpurvphZQgPiBtYXN1aVwgOwor5rSL6ZaTID4geW91bWFcIDsKK+mJhOmOliA+IHRlc3NhXCA7Civnp4HorbAgPiBzaGlnaVwgOwor56aB6YyuID4ga2lua29cIDsKK+a1gei7oiA+IHJ1dGVuXCA7CivmvKLlkowgPiBrYW53YVwgOwor5omL5oqAID4gc2h1Z2lcIDsKK+m8u+iFlCA+IGJpa291XCA7CivmtbTooaMgPiB5b2t1aVwgOwor5ryB5aC0ID4gZ3lvYmFcIDsKK+a4pueKtiA+IGtham91XCA7CivmhI/ooaggPiBpaHlvdVwgOwor5oiv5paHID4gZ2lidW5cIDsKK+a2suiCpSA+IGVraWhpXCA7CivmioDlrpggPiBnaWthblwgOwor56eB6KqeID4gc2hpZ29cIDsKK+aIpuaZgiA+IHNlbmppXCA7Civmt6vnpaAgPiBpbnNoaVwgOwor56m655CGID4ga3V1cmlcIDsKK+aJgOaMgSA+IHNob2ppXCA7Civmh5DngokgPiBrYWlyb1wgOwor5rqA5pyfID4gbWFua2lcIDsKK+WWtuaelyA+IGVpcmluXCA7CivmuZbmsLQgPiBrb3N1aVwgOwor5ZKM6K6aID4gd2FzYW5cIDsKK+engeiomCA+IHNoaWtpXCA7CivmiKbml5cgPiBzZW5raVwgOwor56uv5pWwID4gaGFzdXVcIDsKK+WYmOWtlyA+IHVzb2ppXCA7CivmiJDmoYggPiBzZWlhblwgOwor56WI6aGYID4ga2lnYW5cIDsKK+a4qeeCuSA+IG9udGVuXCA7Civms6LpoK0gPiBoYXRvdVwgOwor5oiQ5p6cID4gc2Vpa2FcIDsKK+aEm+iUtSA+IGFpem91XCA7CivpuqbphZIgPiBiaWlydVwgOwor5ZCN6aasID4gbWVpYmFcIDsKK+WSjOiokyA+IHdha3VuXCA7CivmiLjmiLggPiBrb2tvdVwgOwor5ZKM6KejID4gd2FrYWlcIDsKK+azoumdoiA+IGhhbWVuXCA7CivnrqHkuIsgPiBrYW5rYVwgOwor5omL5b2TID4gdGVhdGVcIDsKK+aCvOi+niA+IHRvdWppXCA7Civnp5jolLUgPiBoaXpvdVwgOwor56iy56mCID4gaW5haG9cIDsKK+m8u+e3kiA+IGhhbmFvXCA7Civlkozoo70gPiB3YXNlaVwgOwor6Yuk57C+ID4gam9yZW5cIDsKK+eorueoriA+IHNodWp1XCA7CivmuLjms7MgPiB5dXVlaVwgOwor5ZKM6KOFID4gd2Fzb3VcIDsKK+aLheS/nSA+IHRhbnBvXCA7Civlkozoo4EgPiB3YXNhaVwgOwor5oaC55uuID4gdWtpbWVcIDsKK+mHjum2jyA+IHlha2VpXCA7CivmuKnmua8gPiBvbnRvdVwgOwor5ZCM6Z+zID4gZG91b25cIDsKK+aGrueEtiA+IGJ1emVuXCA7CivmgqrpgYsgPiBha3V1blwgOwor5oe45p62ID4ga2VuZ2FcIDsKK+aCo+mDqCA+IGthbmJ1XCA7CivmvIHljLogPiBneW9rdVwgOwor5ouJ5LiBID4gcmF0ZW5cIDsKK+iWrOmRtSA+IHlha2FuXCA7Civpipjoj5MgPiBtZWlrYVwgOwor6Jyc5p+RID4gbWlrYW5cIDsKK+m7kuihoyA+IGtva3VlXCA7CivmuKnms4kgPiBvbnNlblwgOwor5oKg6YGgID4geXV1ZW5cIDsKK+aIpuaEjyA+IHNlbicnaVwgOwor5oKf6YGTID4gZ29kb3VcIDsKK+WRs+imiyA+IGFqaW1pXCA7CivmuKHmtbcgPiB0b2thaVwgOwor5Za25omAID4gZWlzaG9cIDsKK+a4qeawtCA+IG9uc3VpXCA7CivpvLvnq68gPiBiaXRhblwgOwor5rih5rSLID4gdG95b3VcIDsKK+aEm+iCsiA+IGFpaWt1XCA7Civmu4XlpJogPiBtZXR0YVwgOwor5Y+36Z+zID4gZ291b25cIDsKK+a3q+eMpSA+IGlud2FpXCA7CivlloTmnpwgPiB6ZW5rYVwgOwor5oOF6Kq8ID4gam91Z2lcIDsKK+a8geWFtyA+IGd5b2d1XCA7Civmgqrot68gPiBha3Vyb1wgOwor5rWF6JyKID4gYXNhcmlcIDsKK+aDheipsSA+IGpvdXdhXCA7CivnqK7nmq4gPiBzaHVoaVwgOwor5oSa6ICFID4gZ3VzaGFcIDsKK+aEmuiAgyA+IGd1a291XCA7CivmiKblvowgPiBzZW5nb1wgOwor6Ymb6KO9ID4gZW5zZWlcIDsKK+emgOitsCA+IHJpbmdpXCA7CivmiY3lqpsgPiBzYWllblwgOwor5omH5a2QID4gc2Vuc3VcIDsKK+aFsOeVmSA+IGlyeXV1XCA7Civnp7vnsY0gPiBpc2VraVwgOwor6YeO6aasID4gbm91bWFcIDsKK+err+W6pyA+IHRhbnphXCA7CivnpoXoqbEgPiB6ZW53YVwgOwor5oiR5oWiID4gZ2FtYW5cIDsKK+WWnOaNqCA+IGtpc2hhXCA7Civlj6TpoqggPiBrb2Z1dVwgOwor56iy55SwID4gaW5hZGFcIDsKK+WPl+mokyA+IGp1a2VuXCA7CivnqbrmsJcgPiBrdXVraVwgOwor5oiR5oOFID4gZ2Fqb3VcIDsKK+aJjeWlsyA+IHNhaWpvXCA7Civnqbrmr40gPiBrdXVib1wgOwor5ZS+5rayID4gZGFla2lcIDsKK+a6gOW6pyA+IG1hbnphXCA7Civllrbluq0gPiBlaXRlaVwgOwor56aB6KOhID4ga2lucmlcIDsKK+emgeijjyA+IGtpbnJpXCA7CivlkbPolb4gPiBtaXJhaVwgOwor6Jma56m6ID4ga29rdXVcIDsKK+aCsuimsyA+IGhpa2FuXCA7Civmt7XmupAgPiBlbmdlblwgOwor5ZKM6Ii5ID4gd2FzZW5cIDsKK+a0i+iqniA+IHlvdWdvXCA7CivmhYjnnLwgPiBqaWdlblwgOwor5Za25bejID4gZWlzb3VcIDsKK+ekvumBiyA+IHNoYXVuXCA7CivmibnliKQgPiBoaWhhblwgOwor5omL5Z6iID4gdGVha2FcIDsKK+iejeWSjCA+IHl1dXdhXCA7CivmgqroqIggPiBha2tlaVwgOwor5om55YeGID4gaGlqdW5cIDsKK+m8k+erpSA+IGtvZG91XCA7CivlkI/pgZMgPiByb2RvdVwgOwor5oqV5LiOID4gdG91eW9cIDsKK+aKleS4iyA+IHRvdWthXCA7Civmh7jmg7MgPiBrZXNvdVwgOwor5Y+X6ZujID4ganVuYW5cIDsKK+aIuOWkliA+IGtvZ2FpXCA7Civmh7rmgpQgPiB6YW5nZVwgOwor6Yuz54mpID4gaW1vbm9cIDsKK+aJjeWZqCA+IHNhaWtpXCA7Civnq6rlrZAgPiBqdXNoaVwgOwor56ym5ZCIID4gZnVnb3VcIDsKK+a3u+awtCA+IHNvdXp1XCA7CivnrKblj7cgPiBmdWdvdVwgOwor5oqA5YCSID4gZ2l0b3VcIDsKK+a4qeaaliA+IG9uZGFuXCA7CivnrYnkvqEgPiB0b3VrYVwgOwor5rih5p2lID4gdG9yYWlcIDsKK+WQjei+niA+IG1laWppXCA7CivmgaXpg6ggPiBjaGlidVwgOwor56ul5a2QID4gZG91amlcIDsKK+aHuOW/tSA+IGtlbmVuXCA7CivmgqrooYwgPiBha2tvdVwgOwor6YW46by7ID4gc2FuYmlcIDsKK+a3oea5liA+IHRhbmtvXCA7Civpu4ToirEgPiBrb3VrYVwgOwor5oiQ5bCxID4gam91anVcIDsKK+enn+eojiA+IHNvemVpXCA7CivlloTmhI8gPiB6ZW4nJ2lcIDsKK+WXn+WYhiA+IHNhdGFuXCA7CivmuIXmpZogPiBzZWlzb1wgOwor6byg55uXID4gc290b3VcIDsKK+azsOiqniA+IHRhaWdvXCA7CivmhJvnpL4gPiBhaXNoYVwgOwor5rK/6YGTID4gZW5kb3VcIDsKK+WWquWutiA+IHNvdWthXCA7Civlj6Tpiq0gPiBrb3NlblwgOwor56S+6LK7ID4gc2hhaGlcIDsKK+erpeWlsyA+IGRvdWpvXCA7CivlkKboqo0gPiBoaW5pblwgOwor5rq25YyWID4geW91a2FcIDsKK+a5luW6lSA+IGtvdGVpXCA7Civmt4vmvJMgPiByaW5yaVwgOwor5omA5ZOhID4gc2hvaW5cIDsKK+WYieS+iyA+IGthcmVpXCA7CivmuIXmoIQgPiBzZWllaVwgOwor6byg55arID4gc29la2lcIDsKK+WWhOW+jCA+IHplbmdvXCA7CivnpYjoq4sgPiBraXNlaVwgOwor5rOV6LKoID4gaG91a2FcIDsKK+eliOiqkyA+IGtpc2VpXCA7CivmtYHnvaogPiBydXphaVwgOwor56uv5Z2QID4gdGFuemFcIDsKK+WXmuWSvSA+IG9ldHN1XCA7CivmganotaYgPiBvbnNoYVwgOwor5ZKM57SZID4gd2FzaGlcIDsKK+aJi+WLoiA+IHRlemVpXCA7CivmuJvmkakgPiBnZW5tYVwgOwor5Y+w6L6eID4gZGFpamlcIDsKK+a3mOaxsCA+IHRvdXRhXCA7Civmganos5wgPiBvbnNoaVwgOwor5rSS6JC9ID4gc2hhcmVcIDsKK+a1t+eggiA+IGthaXNhXCA7CivmiYvliY0gPiB0ZW1hZVwgOwor5Y+w6LyqID4gZGFpd2FcIDsKK+a5luWyuCA+IGtvZ2FuXCA7CivmtLXnvo4gPiBqdW5iaVwgOwor5Y+k6YGTID4ga29kb3VcIDsKK+esrOS6lCA+IGRhaWdvXCA7CivnrKzkuowgPiBkYWluaVwgOwor56S66KuHID4gamlkYW5cIDsKK+mHjumDjiA+IHlhcm91XCA7Civph47pgbggPiB5YXNlblwgOwor5rOV6KqeID4gaG91Z29cIDsKK+WQiOitsCA+IGdvdWdpXCA7Civms5XoqbEgPiBob3V3YVwgOwor5rGX6aasID4ga2FuYmFcIDsKK+aHh+aEjyA+IGtvbicnaVwgOwor5oeK5oKpID4gb3Vub3VcIDsKK+aJk+WAkiA+IGRhdG91XCA7CivlkI3oqokgPiBtZWl5b1wgOwor5oSa55e0ID4gZ3VjaGlcIDsKK+WWtuWboyA+IGVpZGFuXCA7CivmsLTpto8gPiBrdWluYVwgOwor5Y+J6YqDID4gc2FqdXVcIDsKK+a4qeaDhSA+IG9uam91XCA7Civnp7vniZIgPiBpY2hvdVwgOwor56uL5aSPID4gcmlra2FcIDsKK+WUkOaqnCA+IHRvdWhpXCA7Civmg4XnvqkgPiBqb3VnaVwgOwor6Yym5peXID4ga2lua2lcIDsKK+aEm+eUqCA+IGFpeW91XCA7Civms5Xopo8gPiBob3VraVwgOwor5oeI5oCgID4gZ2V0YWlcIDsKK+enn+eVjCA+IHNva2FpXCA7CivmhJrnlJ8gPiBndXNlaVwgOwor6YeI6L+mID4gc2hha2FcIDsKK+a5r+WeoiA+IHl1YWthXCA7CivmgYvot68gPiBrb2lqaVwgOwor5rS+57GzID4gaGFiZWlcIDsKK+aIkOWboCA+IHNlaWluXCA7CivljqbploAgPiBrYW1vblwgOwor5rOV6KKrID4gaGFwcGlcIDsKK+a0i+iIniA+IHlvdWJ1XCA7CivomY7ni7wgPiBrb3JvdVwgOwor5Y+k6La+ID4ga29zaGlcIDsKK+iXjeiJsiA+IGFpaXJvXCA7Civnq6/ljYggPiB0YW5nb1wgOwor6Jma54ShID4ga3lvbXVcIDsKK+aJi+S7oyA+IHRlZGFpXCA7CivmhJvnjqkgPiBhaWdhblwgOwor5Y+X6LqrID4gdWtlbWlcIDsKK+aDqOemjSA+IHNhbmthXCA7CivmuKHlvqEgPiB0b2d5b1wgOwor5rC06a2UID4gc3VpbWFcIDsKK+mHjui2oyA+IHlhc2h1XCA7Civlj6Tos6IgPiBrb2tlblwgOwor5oim5YuZID4gc2VubXVcIDsKK+a1rueUnyA+IGZ1c2VpXCA7Civlv6vpn7MgPiBrYWlvblwgOwor5Zan5ZipID4ga2Vua2FcIDsKK+eomuawlyA+IGNoaWtpXCA7CivmuKnluK8gPiBvbnRhaVwgOwor5omA5L2cID4gc2hvc2FcIDsKK+WPpOixqiA+IGtvZ291XCA7Civph5HosqggPiBraW5rYVwgOwor5oSb54qsID4gYWlrZW5cIDsKK+a1t+eNuiA+IHJha2tvXCA7CivmiJDlk6EgPiBzZWlpblwgOwor5rqW5YKZID4ganVuYmlcIDsKK+aDo+ekviA+IHNvdWphXCA7Civno6/ovrogPiBpc29iZVwgOwor6Ymb566hID4gZW5rYW5cIDsKK+m8u+axgSA+IGJpanV1XCA7Civmtbfni7ggPiBrYWlyaVwgOwor5oOw55ygID4gZGFtaW5cIDsKK+aIv+S6iyA+IGJvdWppXCA7Civlj5nos5wgPiBqb3NoaVwgOwor5oiQ5ZCmID4gc2VpaGlcIDsKK+WPl+i0iCA+IGp1em91XCA7CivmgqrnvbUgPiBha3ViYVwgOwor5oiQ5Y+lID4gc2Vpa3VcIDsKK+aJgOS4jiA+IHNob3lvXCA7CivmgqPogIUgPiBrYW5qYVwgOwor5Y+k6Ku6ID4ga29nZW5cIDsKK+WPr+imliA+IGthc2hpXCA7Civlj6Xoqq0gPiBrdXRvdVwgOwor6buE56aNID4ga291a2FcIDsKK+eosuacqCA+IGluYWdpXCA7CivmiKblgpkgPiBzZW5iaVwgOwor5Y+j6KqeID4ga291Z29cIDsKK+WPpOipqSA+IGtvc2hpXCA7CivmiLjkuLsgPiBrb3NodVwgOwor6YeM6KyhID4gcml5b3VcIDsKK+WPpOiokyA+IGtva3VuXCA7Civnqbrlt6MgPiBha2lzdVwgOwor5Y+k6KiAID4ga29nZW5cIDsKK+aCque4gSA+IGFrdWVuXCA7CivmuKnlrZggPiBvbnpvblwgOwor5Y+X6KybID4ganVrb3VcIDsKK+WNsOmdoiA+IGlubWVuXCA7Civmsb3ou4ogPiBraXNoYVwgOwor5Y+h6KanID4gZWlyYW5cIDsKK+m7hOeggiA+IGtvdXNhXCA7CivnqY7miY0gPiBlaXNhaVwgOwor6YeM6KiAID4gcmlnZW5cIDsKK+WNmOmojiA+IHRhbmtpXCA7Civpho3phpAgPiBkYWlnb1wgOwor5riI5bqmID4gc2FpZG9cIDsKK+WNsemboyA+IGtpbmFuXCA7Civms7PogIUgPiBlaXNoYVwgOwor5ZCN6I+TID4gbWVpa2FcIDsKK+WPguizgCA+IHNhbmdhXCA7CivljbHpmbogPiBraWtlblwgOwor5Za25YCJID4gZWlzb3VcIDsKK+WWquWFtyA+IHNvdWd1XCA7Civlv4XpoIggPiBoaXNzdVwgOwor5oaC5oe8ID4geXV1a3VcIDsKK+WPjeiqniA+IGhhbmdvXCA7CivpvLvmoLkgPiBiaWtvblwgOwor5Y+L6Kq8ID4geXV1Z2lcIDsKK+WQjeiKsSA+IG1laWthXCA7CivmsbrotbcgPiBrZWtraVwgOwor6bq7552hID4gbWFzdWlcIDsKK+WPjeiotCA+IGhhbnNvXCA7Civpi63mlY8gPiBlaWJpblwgOwor6JiH55SfID4gc29zZWlcIDsKK+aEm+a2siA+IGFpZWtpXCA7Civlj4LorbAgPiBzYW5naVwgOwor5ZCN6IiXID4gbWVpaG9cIDsKK+a0vueUnyA+IGhhc2VpXCA7Civnp5jmua8gPiBoaXRvdVwgOwor6buE55a4ID4gb3VkYW5cIDsKK+awl+miqCA+IGtpZnV1XCA7Civmtbfmt7UgPiBrYWllblwgOwor56m05a2QID4gYW5hZ29cIDsKK+WWh+WPrSA+IHJhcHBhXCA7CivpjbzljLsgPiBoYXJpaVwgOwor5oCq6KidID4ga2VnZW5cIDsKK+iWrOe9kCA+IHlha2FuXCA7CivolqznvLYgPiB5YWthblwgOwor5oCd6K2wID4gc2hpZ2lcIDsKK+epj+W9kyA+IG9udG91XCA7Civph47om64gPiB5YWJhblwgOwor5Y2w6ZGRID4gaW5rYW5cIDsKK+aAqOiogCA+IGVuZ2VuXCA7CivljYjppJAgPiBnb3NhblwgOwor5b6u6aKoID4gYmlmdXVcIDsKK+a4r+WbsyA+IGtvdXp1XCA7CivmsZrovrEgPiBvam9rdVwgOwor5ZOA5q2TID4gYWlrYW5cIDsKK+a1rua4uCA+IGZ1eXV1XCA7CivoloTojbcgPiBoYWtrYVwgOwor6YqD54GrID4ganV1a2FcIDsKK+aEmuawkSA+IGd1bWluXCA7Civnp5jms5UgPiBoaWhvdVwgOwor5ZGI56S6ID4gdGVpamlcIDsKK+WWquS4uyA+IG1vc2h1XCA7CivljZfpmL8gPiBuYW4nJ2FcIDsKK+a1rua1qiA+IGZ1cm91XCA7Civpu4Tnj60gPiBvdWhhblwgOwor5ri+5ZCNID4gYWRhbmFcIDsKK+a1t+awlyA+IGthaWtpXCA7CivlvqHpo68gPiBnb2hhblwgOwor5rCX6ZqPID4ga2l6dWlcIDsKK+WQjee+qSA+IG1laWdpXCA7Civms6Lnt5ogPiBoYXNlblwgOwor5rKZ6JqVID4gZ29rYWlcIDsKK+WQjOe+qSA+IGRvdWdpXCA7CivljZHpmYsgPiBoaXJvdVwgOwor5rCR6ZyAID4gbWluanVcIDsKK+eogOabuCA+IGtpc2hvXCA7CivomZrmoIQgPiBreW9laVwgOwor5raF5qeDID4gbmVoYW5cIDsKK+a3u+WtlyA+IHNvZWppXCA7CivlkIjnvr0gPiBrYXBwYVwgOwor5ZOh5pWwID4gaW56dXVcIDsKK+a1ruawlyA+IHV3YWtpXCA7Civms6LntIsgPiBoYW1vblwgOwor56aF55S7ID4gemVuZ2FcIDsKK+eptOWgtCA+IGFuYWJhXCA7CivnopHpipggPiBoaW1laVwgOwor5ZKM5ryiID4gd2FrYW5cIDsKK+aHkOWPpCA+IGthaWtvXCA7CivmhI/mrLIgPiBpeW9rdVwgOwor5oOF55CGID4gam91cmlcIDsKK+mLreaEnyA+IGVpa2FuXCA7Civph47oj5wgPiB5YXNhaVwgOwor5Y+k6Iy2ID4ga29jaGFcIDsKK+elnuelhyA+IGppbmdpXCA7CivmtYTngasgPiBqb3VrYVwgOwor56We56S+ID4gamluamFcIDsKK+m7hOeHkCA+IG91cmluXCA7CivmtYXngKwgPiBhc2FzZVwgOwor5rK56ISCID4geXVzaGlcIDsKK+W+oemboyA+IGdvbmFuXCA7CivpiZvniYggPiBlbmJhblwgOwor6YeN6I23ID4ganV1a2FcIDsKK+ibueWMliA+IHlvdWthXCA7Civph47ojYkgPiB5YXNvdVwgOwor5b6h6ZmwID4gb2thZ2VcIDsKK+WPr+iDvSA+IGthbm91XCA7Civljp/oqp4gPiBnZW5nb1wgOwor6JqV5bqnID4gc2FuemFcIDsKK+awtOmBiyA+IHN1aXVuXCA7CivmuKnljpogPiBvbmtvdVwgOwor5rmW5LiKID4ga29qb3VcIDsKK+WPs+e/vCA+IHV5b2t1XCA7CivpioDms6IgPiBnaW5wYVwgOwor5Y6a6Kq8ID4ga291Z2lcIDsKK+W+jOmhpyA+IGtvdWtvXCA7CivpioDmsrMgPiBnaW5nYVwgOwor5oWV5oOFID4gYm9qb3VcIDsKK+WSjOa0iyA+IHdheW91XCA7CivllZblkbUgPiB0YW5rYVwgOwor5ZCN57C/ID4gbWVpYm9cIDsKK+WMu+mVtyA+IGljaG91XCA7CivljLrplpMgPiBrdWthblwgOwor5rSL55S7ID4geW91Z2FcIDsKK+a3i+W3tCA+IHJpbnBhXCA7CivlloTkuosgPiB6ZW5qaVwgOwor5rim5YuVID4ga2Fkb3VcIDsKK+iWrOemjSA+IHlha2thXCA7CivmhYfmh4MgPiBpbmdpblwgOwor5b+16KqmID4gbmVuanVcIDsKK+aEm+abuCA+IGFpc2hvXCA7CivnpYjnpbcgPiBraXRvdVwgOwor5YyV6aaWID4gaGlzaHVcIDsKK+ayv+e3miA+IGVuc2VuXCA7Civph5HogqUgPiBraW5waVwgOwor5Y+k6IGWID4ga29zZWlcIDsKK+aDheeElCA+IGpvdWVuXCA7Civljp/ooqsgPiBnZW5waVwgOwor6JWX6I2JID4gcm9zb3VcIDsKK+a3q+WllCA+IGlucG9uXCA7Civlj6PogLMgPiBrb3VqaVwgOwor5Y+k6ICBID4ga29yb3VcIDsKK+awl+mHjSA+IGtpb21vXCA7CivljZfpg70gPiBuYW50b1wgOwor5Y2X6YOoID4gbmFuYnVcIDsKK+mJseayuSA+IGtvdXl1XCA7Civmg4Xngo4gPiBqb3VlblwgOwor5rer5aOyID4gaW5iYWlcIDsKK+enmOacrCA+IGhpaG9uXCA7CivmhJrmmKcgPiBndW1haVwgOwor5rWB5rWqID4gcnVyb3VcIDsKK+aDheeBqyA+IGpvdWthXCA7CivmsLTot68gPiBzdWlyb1wgOwor5oWI5oG1ID4gamlrZWlcIDsKK+enmOabuCA+IGhpc2hvXCA7CivmsJfphY0gPiBrZWhhaVwgOwor6Jas56CUID4geWFnZW5cIDsKK+WPl+iDjiA+IGp1dGFpXCA7Civlvq7phrogPiBiaWt1blwgOwor5Y2K6YeMID4gaGFucmlcIDsKK+azleenkSA+IGhvdWthXCA7CivmsrnntJkgPiB5dXNoaVwgOwor56iy5a2QID4gaW5hZ29cIDsKK+awl+mBkyA+IGtpZG91XCA7Civmr5TpoZ4gPiBoaXJ1aVwgOwor5rWB5rCRID4gcnVtaW5cIDsKK+WNg+mHjCA+IHNlbnJpXCA7Civnp5jmlrkgPiBoaWhvdVwgOwor5ZCM56WWID4gZG91c29cIDsKK+aFi+W6piA+IHRhaWRvXCA7CivpiYTngasgPiB0ZWtrYVwgOwor5rKz57O7ID4ga2FrZWlcIDsKK+engeahiCA+IHNoaWFuXCA7Civnpo3mupAgPiBrYWdlblwgOwor56C06aGUID4gaGFnYW5cIDsKK+WNkei/kSA+IGhpa2luXCA7Civpu4TmsrMgPiBrb3VnYVwgOwor5b6h6YecID4gb2thbWFcIDsKK+W+oemHkSA+IG9rYW5lXCA7Civmtabmm7IgPiB1cmF3YVwgOwor5rS75rCXID4ga2Fra2lcIDsKK+WNiumAlCA+IGhhbnRvXCA7CivnqIvluqYgPiB0ZWlkb1wgOwor6YeN57iBID4ganV1ZW5cIDsKK+WPpOe0mSA+IGtvc2hpXCA7Civpg6jpppYgPiBidXNodVwgOwor6YO96Zu7ID4gdG9kZW5cIDsKK+m8k+aJiyA+IGtvc2h1XCA7CivpioPmnrYgPiBqdXVrYVwgOwor5re35ZKMID4ga29ud2FcIDsKK+axveiJhyA+IGtpdGVpXCA7Civmsb3oiLkgPiBraXNlblwgOwor5q+U6ZqjID4gaGlyaW5cIDsKK+aEmuaMmSA+IGd1a3lvXCA7Civlj4vnvqkgPiB5dXVnaVwgOwor5Y+k57GzID4ga29tYWlcIDsKK+WTgOaGqyA+IGFpYmluXCA7CivmuJvkvqEgPiBnZW5rYVwgOwor5ZOA5oaQID4gYWlyZW5cIDsKK+W9qembsiA+IHNhaXVuXCA7CivmsrPnq6UgPiBrYXBwYVwgOwor5re15Y+iID4gZW5zb3VcIDsKK+mDqOmhniA+IGJ1cnVpXCA7Civlk4DmhJ8gPiBhaWthblwgOwor5rOV55qHID4gaG91b3VcIDsKK+WTgOaEjSA+IGFpYmluXCA7CivolKzoj5wgPiBzb3NhaVwgOwor56Oo6ICXID4gbWFtb3VcIDsKK+a1ruaPmiA+IGZ1eW91XCA7CivlkozmnKwgPiB3YWhvblwgOwor5ray5a6JID4gZWtpYW5cIDsKK+epuuS9kCA+IGt1dXNhXCA7CivmuKHkuJYgPiB0b3NlaVwgOwor5Y+X57SNID4ganVub3VcIDsKK+WUkOWcnyA+IHRvdWRvXCA7Civmt7vliqAgPiB0ZW5rYVwgOwor5ZOA5oOFID4gYWlqb3VcIDsKK+WTgOaCvCA+IGFpdG91XCA7Civlkozmm7ggPiB3YXNob1wgOwor5oSb5oaQID4gYWlyZW5cIDsKK+egtOmWgCA+IGhhbW9uXCA7Civlj5fnsr4gPiBqdXNlaVwgOwor5oKq5ryiID4gYWtrYW5cIDsKK+WNkeizpCA+IGhpc2VuXCA7CivmhoLlk60gPiB1a2luZVwgOwor5Y2R6LOOID4gaGlzZW5cIDsKK+WPl+eyiSA+IGp1ZnVuXCA7Civpg6jpnaIgPiBidW1lblwgOwor6by75a2UID4gYmlrb3VcIDsKK+enkeaMmSA+IGtha3lvXCA7Civnn67pto8gPiBjaGFib1wgOwor5q+r6YeQID4gZ291cmlcIDsKK+aEm+aDsyA+IGFpc291XCA7Civmg4XmrYwgPiBqb3VrYVwgOwor6buE5qWKID4gdHN1Z2VcIDsKK+aEm+aDhSA+IGFpam91XCA7Civpi7PlnosgPiBpZ2F0YVwgOwor5b6u6LOkID4gYmlzZW5cIDsKK+W+ruizjiA+IGJpc2VuXCA7Civlvozpg6ggPiBrb3VidVwgOwor5Y2w6KGMID4gaW5rb3VcIDsKK+WQjeeUuyA+IG1laWdhXCA7CivpvKDlt6MgPiBzb3NvdVwgOwor6YOo6ZqKID4gYnV0YWlcIDsKK+WSjOaWhyA+IHdhYnVuXCA7Civmsb3nvZAgPiBraWthblwgOwor5rG957y2ID4ga2lrYW5cIDsKK+aEj+aFviA+IGl5b2t1XCA7CivljZjoqp4gPiB0YW5nb1wgOwor6JaE552AID4gdXN1Z2lcIDsKK+aDheapnyA+IGpvdWtpXCA7Civms6LnirYgPiBoYWpvdVwgOwor56S654++ID4gamlnZW5cIDsKK+m7hOahgyA+IG91dG91XCA7Civlj6TnpaAgPiBrb3NoaVwgOwor6JaE55uuID4gdXN1bWVcIDsKK+WRkeawlyA+IG5vbmtpXCA7CivlvpLovKkgPiB0b2hhaVwgOwor5rOV55CGID4gaG91cmlcIDsKK+mHjOeoiyA+IHJpdGVpXCA7CivljZjoqJggPiB0YW5raVwgOwor56Gs6LKoID4ga291a2FcIDsKK+mHjuemvSA+IHlha2luXCA7Civph43np5EgPiBqdXVrYVwgOwor6YOo6ZaAID4gYnVtb25cIDsKK+W+hemBvyA+IHRhaWhpXCA7CivmhYjlp5EgPiBrdXdhaVwgOwor6JuH5L2TID4gamF0YWlcIDsKK+aEn+W6piA+IGthbmRvXCA7CivpvI7luqcgPiB0ZWl6YVwgOwor5rOV546LID4gaG91b3VcIDsKK+eoveWPpCA+IGtlaWtvXCA7CivmhJrlvJ8gPiBndXRlaVwgOwor5oSa5byEID4gZ3Vyb3VcIDsKK+m8u+WjsCA+IGJpc2VpXCA7CivolqvnhZkgPiBrdW5lblwgOwor5Y+j56KRID4ga291aGlcIDsKK+W+gOmChCA+IG91a2FuXCA7CivmsoPntKAgPiB5b3Vzb1wgOwor5ZCI55CGID4gZ291cmlcIDsKK+ayu+eZkiA+IGNoaXl1XCA7CivmgrLmrY4gPiBoaXRhblwgOwor5rGa6IetID4gb3NodXVcIDsKK+WNkeiogCA+IGhpZ2VuXCA7CivliqDpvaIgPiBrYXJlaVwgOwor5b6B6YCUID4gc2VpdG9cIDsKK+m8oOWusyA+IHNvZ2FpXCA7CivlvKfpq5ggPiBrb2tvdVwgOwor6Ymb5p2/ID4gZW5iYW5cIDsKK+awkeipsSA+IG1pbndhXCA7Civmr5Tph40gPiBoaWp1dVwgOwor5Y2R6KaLID4gaGlrZW5cIDsKK+WToeWkliA+IGluZ2FpXCA7CivlvoDov5QgPiBvdWhlblwgOwor56aN5qC5ID4ga2Frb25cIDsKK+iZmuWtlyA+IGt5b2ppXCA7Civmt7vku5ggPiB0ZW5wdVwgOwor5oaR5L6dID4gaHlvdWlcIDsKK+mHjuegsiA+IHlhaG91XCA7Civlj6Hnn6UgPiBlaWNoaVwgOwor56i85YuVID4ga2Fkb3VcIDsKK+WNmOihoyA+IGhpdG9lXCA7CivmhInlv6sgPiB5dWthaVwgOwor56mP5YGlID4gb25rZW5cIDsKK+WOn+e+qSA+IGdlbmdpXCA7Civms6LngL4gPiBoYXJhblwgOwor5rK555SwID4geXVkZW5cIDsKK+W8vumbqCA+IGRhbicndVwgOwor56mP5L6/ID4gb25iaW5cIDsKK+azoua/pCA+IGhhdG91XCA7Civlj7DnlKsgPiB0YWlob1wgOwor6YO96YKRID4gdG95dXVcIDsKK+WSjOaIpiA+IHdhc2VuXCA7Civlj6/nlKggPiBrYXlvdVwgOwor6bm55rmWID4ga2Fua29cIDsKK+ays+eVlCA+IGthaGFuXCA7Civli4fpo5sgPiB5dXVoaVwgOwor5Y2K6KO4ID4gaGFucmFcIDsKK+W+hOi3ryA+IGtlaXJvXCA7CivlvqHoqaAgPiBneW9laVwgOwor6YeN55uuID4gb21vbWVcIDsKK+WNiuiiqyA+IGhhcHBpXCA7Civnp4HmgKggPiBzaGllblwgOwor56CC6ZiyID4gc2Fib3VcIDsKK+W+ruihjCA+IGJpa291XCA7CivlkarmlocgPiBqdW1vblwgOwor5rOz5rOVID4gZWlob3VcIDsKK+W+oeimpyA+IGdvcmFuXCA7CivnqLzlg40gPiBrYWRvdVwgOwor5ZCQ54CJID4gdG9zaGFcIDsKK+a3q+S5sSA+IGlucmFuXCA7Civlj5fnm4ogPiBqdWVraVwgOwor56We5q2mID4gamlubXVcIDsKK+WQiOeCuSA+IGdhdGVuXCA7CivmhJvlrasgPiBhaXNvblwgOwor5rWF5omLID4gYXNhZGVcIDsKK+aEm+WtgyA+IGFpam91XCA7CivompXlhbcgPiBzYW5ndVwgOwor6YqD5b6MID4ganV1Z29cIDsKK+aEm+WsoiA+IGFpam91XCA7Civljp/ntKAgPiBnZW5zb1wgOwor6JqV5YWQID4gc2FuamlcIDsKK+aFiOWWhCA+IGppemVuXCA7Civmg7DmgKcgPiBkYXNlaVwgOwor5rK554q2ID4geXVqb3VcIDsKK+mHjueUnyA+IHlhc2VpXCA7Civms6LmtaogPiBoYXJvdVwgOwor56eY5a6dID4gaGlob3VcIDsKK+iTruiPryA+IHJlbmdlXCA7CivmhJvlqb8gPiBhaXNlaVwgOwor5b+N6IumID4gbmlua3VcIDsKK+mKg+W6pyA+IGp1dXphXCA7CivljrPnp5ggPiBnZW5waVwgOwor5Y6f57C/ID4gZ2VuYm9cIDsKK+WOs+enkSA+IGdlbmthXCA7Civpi63lhbUgPiBlaWhlaVwgOwor6YqA5bqnID4gZ2luemFcIDsKK+mDoemDqCA+IGd1bmJ1XCA7CivpvLvlj6MgPiBiaWtvdVwgOwor5b6M6KiYID4ga291a2lcIDsKK+aEm+WmuyA+IGFpc2FpXCA7CivmhJrlprsgPiBndXNhaVwgOwor5oW25LqLID4ga2VpamlcIDsKK+eojuWQjyA+IHplaXJpXCA7CivmhJvlpb0gPiBhaWtvdVwgOwor5Yq06Z+zID4gcm91b25cIDsKK+WPr+eHgyA+IGthbmVuXCA7CivmtrLljJYgPiBla2lrYVwgOwor5ZCd5rCXID4gcmlua2lcIDsKK+mEmeimiyA+IGhpa2VuXCA7CivlkozlubMgPiB3YWhlaVwgOwor6YeO542jID4geWFqdXVcIDsKK+mzs+mnlSA+IGhvdWdhXCA7Civph47njKogPiB5YWNob1wgOwor6YKq6Zm6ID4gamFrZW5cIDsKK+W+kuihjCA+IHRva291XCA7CivmsLTogqUgPiBzdWloaVwgOwor5Y+k54mIID4ga29oYW5cIDsKK+WLn+mHkSA+IGJva2luXCA7Civlvozoo5QgPiBrb3VlaVwgOwor5b6Q6KGMID4gam9rb3VcIDsKK+WQjOa0viA+IGRvdWhhXCA7CivphbjntKAgPiBzYW5zb1wgOwor5b6A6KiqID4gb3Vob3VcIDsKK+mHjueKrCA+IHlha2VuXCA7Civlu7bpq4QgPiBlbnp1aVwgOwor56iO5YuZID4gemVpbXVcIDsKK+aCquaXpSA+IGFrdWJpXCA7CivnqJrlhZAgPiBjaGlnb1wgOwor5Yqg6aSQID4ga2FzYW5cIDsKK+WKoOmkiiA+IGtheW91XCA7Civmra/pn7MgPiBzaGlvblwgOwor5b6M6KGbID4ga291ZWlcIDsKK+mFtee0oCA+IGtvdXNvXCA7Civpg4rph44gPiBrb3V5YVwgOwor56eB5a62ID4gc2hpa2FcIDsKK+m8juWdkCA+IHRlaXphXCA7Civlv43ogIUgPiBuaW5qYVwgOwor5Yy76JasID4gaXlha3VcIDsKK+ekvuatjCA+IHNoYWthXCA7CivpvLvlhoUgPiBiaW5haVwgOwor5b6h6JStID4gb2thZ2VcIDsKK+WLoumBiyA+IHNlaXVuXCA7CivlkIzmsJcgPiBkb3VraVwgOwor5Y+l54K5ID4ga3V0ZW5cIDsKK+egtOirhyA+IGhhZGFuXCA7CivlkozlsJogPiBvc2hvdVwgOwor5Y+j54KOID4ga291ZW5cIDsKK+W9k+i3ryA+IHRvdXJvXCA7CivmhYjlhYQgPiBqaWtlaVwgOwor5oOF5oSbID4gam91YWlcIDsKK+ato+mfsyA+IHNlaW9uXCA7CivlkI3mrYwgPiBtZWlrYVwgOwor6YOo6LKhID4gYnV6YWlcIDsKK+WPr+a6tiA+IGtheW91XCA7Civmsr/mtbcgPiBlbmthaVwgOwor6I+v6bqXID4ga2FyZWlcIDsKK+mJhOaJiSA+IHRlcHBpXCA7Civlkr3llokgPiBpbmtvdVwgOwor5rW35ZuzID4ga2FpenVcIDsKK+W+oeiPnCA+IG9rYXp1XCA7CivljbDntr8gPiBpbm1lblwgOwor5rWu5Z+OID4gZnVqb3VcIDsKK+aBkua4qSA+IGtvdW9uXCA7Civlj6Tmva0gPiBrb3RhblwgOwor5rKz5rivID4ga2Frb3VcIDsKK+ays+a4hSA+IGthc2VpXCA7CivljbDntJkgPiBpbnNoaVwgOwor5rCX6IOeID4ga2lob3VcIDsKK+WPo+a8lCA+IGtvdWVuXCA7CivpvJPlkLkgPiBrb3N1aVwgOwor5oSa5ZWPID4gZ3Vtb25cIDsKK+awtOe0oCA+IHN1aXNvXCA7CivomY7lj6MgPiBrb2tvdVwgOwor5b6h6IuRID4gZ3lvZW5cIDsKK+iSsuiWpiA+IGhvc2VuXCA7Civlk4Dlj7cgPiBhaWdvdVwgOwor5oKy5oakID4gaGlmdW5cIDsKK+WTgOWPsiA+IGFpc2hpXCA7CivpurvlubkgPiBvZ2FyYVwgOwor5b+c562UID4gb3V0b3VcIDsKK+WNsOexoCA+IGlucm91XCA7CivmrYzpoqggPiBrYWZ1dVwgOwor5q2m6ZaAID4gYnVtb25cIDsKK+WSjOWnpiA+IHdha2FuXCA7Civnp7vlhaUgPiBpbnl1dVwgOwor5oKy5oS0ID4gaGlzb3VcIDsKK+aui+mDqCA+IHphbmJ1XCA7Civms7DmlpcgPiB0YWl0b1wgOwor5oSf5Y+XID4ga2FuanVcIDsKK+atjOmhjCA+IGthZGFpXCA7CivmgrLmg6ggPiBoaXNhblwgOwor56aB5b+MID4ga2lua2lcIDsKK+aEm+WQnyA+IGFpZ2luXCA7Civmtbflk6EgPiBrYWlpblwgOwor6YG/6ZujID4gaGluYW5cIDsKK+mHjea5ryA+IG9tb3l1XCA7Civmg6Plq4EgPiBzb3VrYVwgOwor6byT5YuVID4ga29kb3VcIDsKK+asuumomSA+IGdpaGVuXCA7Civms5XmoYggPiBob3VhblwgOwor5b6h6IW5ID4gb25ha2FcIDsKK+WSjOWjsCA+IHdhc2VpXCA7CivmsrPmsLQgPiBrYXN1aVwgOwor5ZCN5qGIID4gbWVpYW5cIDsKK+aCsuaBiyA+IGhpcmVuXCA7CivmhJ/ljJYgPiBrYW5rYVwgOwor5q2m6ZGRID4gYnVrYW5cIDsKK+mBuumbhiA+IGlzaHV1XCA7Civlj6Xms5UgPiBrdWhvdVwgOwor5oCq54GrID4ga2Fpa2FcIDsKK+W+rue9qiA+IGJpemFpXCA7Civljp/nlLsgPiBnZW5nYVwgOwor5Y2X57evID4gbmFuJydpXCA7Civlj6Tms5UgPiBrb2hvdVwgOwor6Jma5YG9ID4ga3lvZ2lcIDsKK+WLsuiomCA+IGt1bmtpXCA7CivliaPprLwgPiBrZW5raVwgOwor6YeR5rOiID4ga2lucGFcIDsKK+a1t+WPgiA+IGlyaWtvXCA7Civnp5jlj7IgPiBoaXNoaVwgOwor6YKq6YGTID4gamFkb3VcIDsKK+eogOS7oyA+IGtpZGFpXCA7CivljrPniLYgPiBnZW5wdVwgOwor6Ymx5aSrID4ga291ZnVcIDsKK+aIuOOAhSA+IGtva291XCA7CivpioDlnLAgPiBnaW5qaVwgOwor56S+5pivID4gc2hhemVcIDsKK+ejgeeVjCA+IGppa2FpXCA7CivmtbfljLogPiBrYWlrdVwgOwor5Y2w56iOID4gaW56ZWlcIDsKK+WPo+awlyA+IGtvdWtpXCA7CivlkIzmnJ8gPiBkb3VraVwgOwor6YeN5rK5ID4ganV1eXVcIDsKK+mKheWZqCA+IGRvdWtpXCA7Civnn67ouq8gPiB3YWlrdVwgOwor5rKu5q2iID4gc29zaGlcIDsKK+ayueanvSA+IHl1c291XCA7Civnn63ouq8gPiB0YW5rdVwgOwor5oGL5q2MID4gcmVua2FcIDsKK+enkeWQjSA+IGthbWVpXCA7Civmgqrlv4MgPiBvc2hpblwgOwor6YqD5ZmoID4ganV1a2lcIDsKK+W8mOmBoCA+IGtvdWVuXCA7Civljp/nkIYgPiBnZW5yaVwgOwor5rGX55a5ID4gYXNlbW9cIDsKK+axl+eWoyA+IGFzZW1vXCA7CivmgqrlvpIgPiBha3V0b1wgOwor56G857SgID4gaG91c29cIDsKK+WPl+a0lyA+IGp1c2VuXCA7CivnqIDkuJYgPiBraXNlaVwgOwor56eB5Za2ID4gc2hpZWlcIDsKK+aEj+WMoCA+IGlzaG91XCA7CivpioDlmaggPiBnaW5raVwgOwor5rC056aNID4gc3Vpa2FcIDsKK+emjeWusyA+IGthZ2FpXCA7Civlv6vnmZIgPiBrYWl5dVwgOwor6YeR5q2vID4ga2luYmFcIDsKK+WQjOaZgiA+IGRvdWppXCA7Civnn63ot68gPiB0YW5yb1wgOwor6YGg6Z+zID4gdG9vbmVcIDsKK+W8lemAgCA+IGludGFpXCA7CivpgqPovrogPiBuYWhlblwgOwor5oOF5a6cID4gam91Z2lcIDsKK+aEmuWFhCA+IGd1a2VpXCA7Civmgp/mgKcgPiBnb3NlaVwgOwor5b6u57SwID4gYmlzYWlcIDsKK+WLleitsCA+IGRvdWdpXCA7Civmta7li5UgPiBmdWRvdVwgOwor5YuD6LW3ID4gYm9ra2lcIDsKK+aEmuWDpyA+IGd1c291XCA7Civlvozog6QgPiBrb3VpblwgOwor56aF5a62ID4gemVua2VcIDsKK+m7hOWkiSA+IG91aGVuXCA7CivliqDphY0gPiBrYWhhaVwgOwor5ZOB5L2NID4gaGluJydpXCA7CivlvoDoiKogPiBvdWtvdVwgOwor6YGg6Zu3ID4gZW5yYWlcIDsKK+W/teePoCA+IG5lbmp1XCA7CivmgpTmgp8gPiBrYWlnb1wgOwor5rCX566hID4ga2lrYW5cIDsKK+asp+miqCA+IG91ZnV1XCA7CivmtYTlnJ8gPiBqb3Vkb1wgOwor5ZCr5oSPID4gZ2FuJydpXCA7Civmg4XlqaYgPiBqb3VmdVwgOwor6YeN5qmfID4ganV1a2lcIDsKK+aCp+W3pyA+IHJpa291XCA7CivmsJfnrZIgPiBraXRvdVwgOwor5oCS5r+kID4gZG90b3VcIDsKK+aDueWPpSA+IGpha2t1XCA7CivmranpgZMgPiBob2RvdVwgOwor56Oo5resID4gbWFzYWlcIDsKK+avm+iJsiA+IGtlaXJvXCA7CivmsLjnnKAgPiBlaW1pblwgOwor5by36Ki0ID4gZ291c29cIDsKK+WShOWXnyA+IHRvc3NhXCA7Civnp4HljbAgPiBzaGlpblwgOwor5q2m6YGTID4gYnVkb3VcIDsKK+ato+mCqiA+IHNlaWphXCA7Civlj43mr5QgPiBoYW5waVwgOwor5Yqf6YGOID4ga291a2FcIDsKK+WNsOebuCA+IGluem91XCA7CivljJbohr8gPiBrYW5vdVwgOwor5qyh6aGeID4gamlydWlcIDsKK+WPjeatryA+IHNvcHBhXCA7Civlj43mrakgPiB0YW5idVwgOwor5Ymq6ZmkID4gc2Vuam9cIDsKK+WPsOacqCA+IGRhaWdpXCA7Civms6jmhI8gPiBjaHV1aVwgOwor5Y+N5q2MID4gaGFua2FcIDsKK+mGuOavjSA+IGpvdWJvXCA7CivliY3pp4YgPiB6ZW5rdVwgOwor5q2m6L66ID4gYnVoZW5cIDsKK+W6p+mrmCA+IHpha291XCA7Civmg4XlpKsgPiBqb3VmdVwgOwor5ZKM5ZCNID4gd2FtZWlcIDsKK+aEm+S6uiA+IGFpamluXCA7CivlkozlkIggPiB3YWdvdVwgOwor5Yqx6LW3ID4gcmVpa2lcIDsKK+WNiuerryA+IGhhbnBhXCA7CivoloTml6UgPiB1c3ViaVwgOwor5oSa5Lq6ID4gZ3VqaW5cIDsKK+m7hOWcnyA+IGtvdWRvXCA7Civlv5znlKggPiBvdXlvdVwgOwor6YKm6LKoID4gaG91a2FcIDsKK+engeWIqSA+IHNoaXJpXCA7CivnoLToiLkgPiBoYXNlblwgOwor5ZCm5b+cID4gaXlhb3VcIDsKK+WMu+exjSA+IGlzZWtpXCA7CivljJbogrIgPiBrYWlrdVwgOwor56eY5LydID4gaGlkZW5cIDsKK+avjeiJpiA+IGJva2FuXCA7Civlj5fmpJwgPiBqdWtlblwgOwor5rK55patID4geXVkYW5cIDsKK+edoemtlCA+IHN1aW1hXCA7Civmr43oiLkgPiBib3NlblwgOwor56SO5p2QID4gc296YWlcIDsKK+W7g+mZpCA+IGhhaWpvXCA7Civlj6TmnaUgPiBrb3JhaVwgOwor5rW35LqLID4ga2FpamlcIDsKK+awuOeUnyA+IGVpc2VpXCA7CivliqnotbAgPiBqb3NvdVwgOwor6YGK6ZuiID4geXV1cmlcIDsKK+aAkua2myA+IGRvdG91XCA7CivnpYjlv7UgPiBraW5lblwgOwor5q2z6LK7ID4gc2FpaGlcIDsKK+elluW4qyA+IHNvc2hpXCA7Civlj6Tmm7ggPiBrb3Nob1wgOwor5ZGo5ZuyID4gc2h1dWlcIDsKK+axuuaysyA+IGtla2thXCA7Civpgbfpg70gPiBzZW50b1wgOwor5rG95rC0ID4ga2lzdWlcIDsKK+avlOiCqSA+IGhpa2VuXCA7CivljbDnkrAgPiBpbmthblwgOwor6YeO5pyrID4gbm96dWVcIDsKK+mHjuacmyA+IHlhYm91XCA7CivmhI/kuK0gPiBpY2h1dVwgOwor5oKq5ammID4gYWt1ZnVcIDsKK+WRvOWPtyA+IGtvZ291XCA7CivmraPot68gPiBzZWlyb1wgOwor6Ymx5Yy6ID4ga291a3VcIDsKK+aCquWphiA+IGFrdWJhXCA7CivpibHljJYgPiBrb3VrYVwgOwor5rOi5b2iID4gaGFrZWlcIDsKK+mCpuiqniA+IGhvdWdvXCA7Civlj6HmmbogPiBlaWNoaVwgOwor5ZCE5oi4ID4ga2Fra29cIDsKK+WJjemdniA+IHplbnBpXCA7CivmsZrmv4EgPiBvZGFrdVwgOwor5q+N6IOOID4gYm90YWlcIDsKK+atjOmBkyA+IGthZG91XCA7CivnooHnm6QgPiBnb2JhblwgOwor5q276KqeID4gc2hpZ29cIDsKK+WPr+aSkyA+IGthdG91XCA7CivmgrLlo64gPiBoaXNvdVwgOwor5byY6KqTID4gZ3V6ZWlcIDsKK+a1ruS4liA+IHVraXlvXCA7CivluqfpoK0gPiB6YXRvdVwgOwor5ZCQ5oGvID4gdG9pa2lcIDsKK+a1ruS4iiA+IGZ1am91XCA7Civlj6TmlrkgPiBrb2hvdVwgOwor5rWE5YyWID4gam91a2FcIDsKK+WPoeaXqCA+IGVpc2hpXCA7CivpgqroposgPiBqYWtlblwgOwor5Y+k5paHID4ga29tb25cIDsKK+aCquWlsyA+IGFrdWpvXCA7CivljJbnuYogPiBrYXNlblwgOwor5Y2I56CyID4gZ29ob3VcIDsKK+avm+e5lCA+IGtlb3JpXCA7CivmsZ/muZYgPiBnb3Vrb1wgOwor5oGp5oSbID4gb24nJ2FpXCA7CivmsJfnm7ggPiBraXNvdVwgOwor5oKy5aCxID4gaGlob3VcIDsKK+W+oeekviA+IG9uc2hhXCA7CivmgqrlpKIgPiBha3VtdVwgOwor5YyX57evID4gaG9rdWlcIDsKK+WPmeaZryA+IGpva2VpXCA7CivmraPosqggPiBzZWlrYVwgOwor5q2j6LKgID4gc2VpZnVcIDsKK+emgeWbuiA+IGtpbmtvXCA7CivlkJHlvowgPiBrb3Vnb1wgOwor56GF57SgID4ga2Vpc29cIDsKK+aBqeaDhSA+IG9uam91XCA7Civlj5vml5cgPiBoYW5raVwgOwor6JaE5omLID4gdXN1ZGVcIDsKK+aBqeaBtSA+IG9ua2VpXCA7CivmsLjniaIgPiBlaXJvdVwgOwor6YG66LmfID4gaXNla2lcIDsKK+mHjOaVsCA+IHJpc3V1XCA7CivljYjnnaEgPiBnb3N1aVwgOwor5byV6KaLID4gaW5rZW5cIDsKK+elluWulyA+IHNvc291XCA7CivmtYHliJEgPiBydWtlaVwgOwor5Yqp6KmeID4gam9zaGlcIDsKK+mKgOS9jSA+IGdpbicnaVwgOwor5Y+Z5paHID4gam9idW5cIDsKK+WNl+eUuyA+IG5hbmdhXCA7CivnpLrluqYgPiBzaGlkb1wgOwor6YG66LehID4gaXNla2lcIDsKK+mJhOWZqCA+IHRla2tpXCA7CivpgaXpgaAgPiB5b3VlblwgOwor5byB6K23ID4gYmVuZ29cIDsKK+WLpOiLpiA+IGtpbmt1XCA7Civmr5vns7ggPiBrZWl0b1wgOwor5Yqp6KiAID4gam9nb25cIDsKK+azleW6piA+IGhhdHRvXCA7CivljZfnk5wgPiBuYW5rYVwgOwor5bm96ay8ID4geXV1a2lcIDsKK+WMlueypyA+IGtld2FpXCA7Civmg4XlkbMgPiBqb3VtaVwgOwor5rGf5rKzID4ga291Z2FcIDsKK+WQpuWumiA+IGhpdGVpXCA7CivnoLTnt5ogPiBoYXNlblwgOwor5b2x57W1ID4ga2FnZWVcIDsKK+WQjOW6pyA+IGRvdXphXCA7CivnoLTntrsgPiBoYXRhblwgOwor5Y+j5o6IID4ga291anVcIDsKK+a0vuWFtSA+IGhhaGVpXCA7CivmgJ3moYggPiBzaGlhblwgOwor6JGh6JCEID4gYnVkb3VcIDsKK+W7uuitsCA+IGtlbmdpXCA7CivmraPoqrIgPiBzZWlrYVwgOwor5q+N57eaID4gYm9zZW5cIDsKK+WPjeaXlyA+IGhhbmtpXCA7CivmraPoqqQgPiBzZWlnb1wgOwor5oKy5ZiGID4gaGl0YW5cIDsKK+emheWRsyA+IHplbm1pXCA7Civpg6jnvbIgPiBidXNob1wgOwor5Y+v5oaQID4ga2FyZW5cIDsKK+aCquWboCA+IGFrdWluXCA7CivokpTntbUgPiBtYWtpZVwgOwor6YGO6YeNID4ga2FqdXVcIDsKK+WMleeuuCA+IGhpY2hvXCA7CivljYrnlLAgPiBoYW5kYVwgOwor5qyE6ZaTID4gcmFubWFcIDsKK+iRieiYrSA+IGhhcmFuXCA7CivmganluKsgPiBvbnNoaVwgOwor5q+N57O7ID4gYm9rZWlcIDsKK+mBiumHjCA+IHl1dXJpXCA7CivmsLTngasgPiBzdWlrYVwgOwor5oOo5LqLID4gc2FuamlcIDsKK+elreWZqCA+IHNhaWtpXCA7CivmgajluIMgPiBrb25idVwgOwor5rK55oCnID4geXVzZWlcIDsKK+ato+imjyA+IHNlaWtpXCA7CivnpoHlj6UgPiBraW5rdVwgOwor56S+5a+6ID4gc2hhamlcIDsKK+aBi+aFlSA+IHJlbmJvXCA7CivljLvnmYIgPiBpcnlvdVwgOwor6I+v6YGTID4ga2Fkb3VcIDsKK+mHjuaJiyA+IHlhc2h1XCA7CivnpL7lrrYgPiBzaGFrZVwgOwor6YeN5omLID4gb21vZGVcIDsKK+atpuijhSA+IGJ1c291XCA7Civph47miKYgPiB5YXNlblwgOwor5q2p6KGMID4gaG9rb3VcIDsKK+avm+eptCA+IGtlYW5hXCA7CivljZHnjKUgPiBoaXdhaVwgOwor56C0566XID4gaGFzYW5cIDsKK+WRkeWQkCA+IGRvbnRvXCA7CivmsrnlvakgPiB5dXNhaVwgOwor5Y+h5oWuID4gZWlyeW9cIDsKK+W+oeeUqCA+IGdveW91XCA7CivmtYHkurogPiBydW5pblwgOwor5Y+h5oSfID4gZWlrYW5cIDsKK+atjOisoSA+IGtheW91XCA7CivlkI3lrrYgPiBtZWlrYVwgOwor5b6h55K9ID4gZ3lvamlcIDsKK+WPluaJiyA+IHRvdHRlXCA7CivlkI3lrpsgPiBuYWF0ZVwgOwor5ZCM5a62ID4gZG91a2VcIDsKK+edgOmhniA+IGtpcnVpXCA7Civlj5fmiJIgPiBqdWthaVwgOwor6YGL6YCBID4gdW5zb3VcIDsKK+m7hOS9kyA+IG91dGFpXCA7CivmrYzoq5YgPiBrYXJvblwgOwor6YW15q+NID4ga291Ym9cIDsKK+elluWeiyA+IHNva2VpXCA7Civph43mhJsgPiBqdXVhaVwgOwor56We5ZmoID4gamluZ2lcIDsKK+WQjOWtlyA+IGRvdWppXCA7Civlj7DluqcgPiBkYWl6YVwgOwor5Ymy6LOmID4gd2FwcHVcIDsKK+ecn+mvmyA+IG1hZGFpXCA7Civlj5vmhI8gPiBoYW4nJ2lcIDsKK+atjOipniA+IGthc2hpXCA7CivnnJ/pr4kgPiBtYWdvaVwgOwor5q6L6IqxID4gemFua2FcIDsKK+m7hOS6uiA+IG91amluXCA7CivmsLTmuKkgPiBzdWlvblwgOwor6YGL6Ly4ID4gdW4nJ3l1XCA7Civol6nlhJIgPiBoYW5qdVwgOwor5Ymw6LK7ID4gam91aGlcIDsKK+WJjemDqCA+IHplbmJ1XCA7Civpupflj6UgPiByZWlrdVwgOwor56Oo5pCNID4gbWFzb25cIDsKK+mHjuaApyA+IHlhc2VpXCA7CivokYnojLYgPiBoYWRqYVwgOwor5Y+Z5oOFID4gam9qb3VcIDsKK+W+oeeOiSA+IG90YW1hXCA7CivpgZPot68gPiBkb3Vyb1wgOwor6YGL6LuiID4gdW50ZW5cIDsKK+W5vembhSA+IHl1dWdhXCA7CivliJ3pmaMgPiB1aWppblwgOwor5rK/5bK4ID4gZW5nYW5cIDsKK+mAo+mOliA+IHJlbnNhXCA7CivokYnoir0gPiB5b3VnYVwgOwor5rKz5bedID4ga2FzZW5cIDsKK+mBgei+niA+IHRvbmppXCA7CivliY3pgJQgPiB6ZW50b1wgOwor6YGN6LevID4gaGVucm9cIDsKK+mJm+S4uSA+IGVudGFuXCA7CivmsLTms7MgPiBzdWllaVwgOwor5ZCO5aaDID4ga291aGlcIDsKK+WQjeWmkyA+IG1laWdpXCA7Civlj6PluqcgPiBrb3V6YVwgOwor5b+X5rCXID4gc2hpa2lcIDsKK+WPm+W+kiA+IGhhbnRvXCA7Civph5HluqsgPiBraW5rb1wgOwor5Y2w5rGgID4gaW5jaGlcIDsKK+azpeWcnyA+IGRlaWRvXCA7CivmsrnlsaQgPiB5dXNvdVwgOwor5Yq06IumID4gcm91a3VcIDsKK+WPi+aEmyA+IHl1dWFpXCA7CivpgaDorIAgPiBlbmJvdVwgOwor5ZCM5aScID4gZG91eWFcIDsKK+mHjeW6piA+IGp1dWRvXCA7CivliY3ovKogPiBtYWV3YVwgOwor6YCA6ZmiID4gdGFpaW5cIDsKK+aDheS6iyA+IGpvdWppXCA7CivnoLTnoJUgPiBoYXNhaVwgOwor5Y2x5q6GID4ga2l0YWlcIDsKK+ayu+WuiSA+IGNoaWFuXCA7CivlibDoqp4gPiBqb3Vnb1wgOwor6YeO5birID4geWFzaGlcIDsKK+iQveiKsSA+IHJha2thXCA7Civlj7LlrrYgPiBzaGlrYVwgOwor6YiN5ZmoID4gZG9ua2lcIDsKK+aAp+aEmyA+IHNlaWFpXCA7CivlvJXoiKogPiBpbmtvdVwgOwor56CC57W1ID4gc3VuYWVcIDsKK+W+l+eJqSA+IGVtb25vXCA7CivmspnlvKUgPiBzaGFtaVwgOwor56Wt5YW3ID4gc2FpZ3VcIDsKK+WQq+WRsyA+IGdhbm1pXCA7CivlvoDnlJ8gPiBvdWpvdVwgOwor5YiG6ZuiID4gYnVucmlcIDsKK+mFjea1gSA+IGhhaXJ1XCA7CivlvJXoh7QgPiBpbmNoaVwgOwor5Y+N5b6SID4gaGFudG9cIDsKK+WIiOmZpCA+IGdhaWpvXCA7CivmgKjmgaggPiBlbmtvblwgOwor6YGg6KaWID4gZW5zaGlcIDsKK+elreWEgCA+IHNhaWdpXCA7CivphJnnjKUgPiBoaXdhaVwgOwor5q2v6Iq9ID4gc2hpZ2FcIDsKK+mBoOimiyA+IHRvb21pXCA7CivpubnlkbMgPiBrYW5taVwgOwor6I236aasID4gbml1bWFcIDsKK+ecn+mhlCA+IG1hZ2FvXCA7CivnoILns5YgPiBzYXRvdVwgOwor6YWS5rCXID4gc2h1a2lcIDsKK+m3ueaPmiA+IG91eW91XCA7CivliKnpiI0gPiByaWRvblwgOwor5oCd5oWVID4gc2hpYm9cIDsKK+aAoOaDsCA+IHRhaWRhXCA7CivliKnph5EgPiByaWtpblwgOwor5rKu5a6zID4gc29nYWlcIDsKK+WQjOWdkCA+IGRvdXphXCA7CivljLrngrkgPiBrdXRlblwgOwor5Y+L5byVID4geXV1aW5cIDsKK+mFlOatqSA+IHN1aWhvXCA7Civlh7npnaIgPiBvdW1lblwgOwor6YGT6KmxID4gZG91d2FcIDsKK+WMheeariA+IGhvdWhpXCA7CivpgLjotbAgPiBpc3NvdVwgOwor5buD6KqeID4gaGFpZ29cIDsKK+WQn+WRsyA+IGdpbm1pXCA7Civljq3miKYgPiBlbnNlblwgOwor5q2m6Iq4ID4gYnVnZWlcIDsKK+mBoeihjCA+IHNva291XCA7CivlkI3lmaggPiBtZWlraVwgOwor6I+v6KiAID4ga2FnZW5cIDsKK+W9seeUuyA+IGthZ2VlXCA7CivlvpLnhLYgPiB0b3plblwgOwor6YCj6L6eID4gcmVuamlcIDsKK+W6g+mHjiA+IGtvdXlhXCA7CivmsJfms6EgPiBraWhvdVwgOwor6YeR5a2XID4ga2luamlcIDsKK+W8pee4qyA+IGJpaG91XCA7Civph5HlrZAgPiBraW5zdVwgOwor5byn57eaID4ga29zZW5cIDsKK+asoOiqsiA+IGtla2thXCA7CivljZjmr5QgPiB0YW5waVwgOwor6YGO6KiAID4ga2Fnb25cIDsKK+egtOeUoyA+IGhhc2FuXCA7CivnpL7lk6EgPiBzaGFpblwgOwor5Y2w5qOJID4gaW5tZW5cIDsKK+eglOejqCA+IGtlbm1hXCA7CivmgqrkuosgPiBha3VqaVwgOwor56S65ZSGID4gc2hpc2FcIDsKK+WPr+WkiSA+IGthaGVuXCA7CivlvannlLsgPiBzYWlnYVwgOwor6Jar5YyWID4ga3Vua2FcIDsKK+WPl+WuuSA+IGp1eW91XCA7Civnpa3kuosgPiBzYWlqaVwgOwor56WW5YWIID4gc29zZW5cIDsKK+mIjeWMliA+IGRvbmthXCA7CivmgKflt64gPiBzZWlzYVwgOwor6JCg6Iq9ID4gaG91Z2FcIDsKK+WIpemAlCA+IGJldHRvXCA7CivpgY7opJIgPiBrYWhvdVwgOwor6I236Zu7ID4ga2FkZW5cIDsKK+ehrOa0viA+IGtvdWhhXCA7Civlj7DloLQgPiBkYWliYVwgOwor5ZC+5Lq6ID4gZ29qaW5cIDsKK+azouWLlSA+IGhhZG91XCA7CivoloTlnLAgPiB1c3VqaVwgOwor6YCP6YGOID4gdG91a2FcIDsKK+WNmOapnyA+IHRhbmtpXCA7Civmrrfnm5sgPiBpbnNlaVwgOwor56S+5Y2wID4gc2hhaW5cIDsKK+WNsOadkCA+IGluemFpXCA7CivlubPph44gPiBoZWl5YVwgOwor5Y2w5pysID4gaW5wb25cIDsKK+aBr+WQuSA+IGlidWtpXCA7Civlubnpg6ggPiBrYW5idVwgOwor5Y2w5pu4ID4gaW5zaG9cIDsKK+W5vemBoCA+IHl1dWVuXCA7CivlkI3lj6UgPiBtZWlrdVwgOwor5YmN6KiYID4gemVua2lcIDsKK+mBi+ihjCA+IHVua291XCA7CivmrabogIUgPiBtdXNoYVwgOwor56S+5YuZID4gc2hhbXVcIDsKK+WOn+aEjyA+IGdlbicnaVwgOwor5Y+k5aKzID4ga29mdW5cIDsKK+aBqeWRvSA+IG9ubWVpXCA7Civlj4vlrpwgPiB5dXVnaVwgOwor6YeO5aSpID4gbm90ZW5cIDsKK+WQiOWQpiA+IGdvdWhpXCA7CivlirTntYQgPiByb3Vzb1wgOwor6YeO5aSWID4geWFnYWlcIDsKK+W6p+irhyA+IHphZGFuXCA7CivlvJfntKAgPiBmdXNzb1wgOwor6YCD6YG/ID4gdG91aGlcIDsKK+W5uOmBiyA+IGtvdXVuXCA7CivnoLTniaIgPiBoYXJvdVwgOwor6YG66IejID4gaXNoaW5cIDsKK+W6g+i7jCA+IGtvdWtpXCA7CivmraPnvqkgPiBzZWlnaVwgOwor5rOV5YuZID4gaG91bXVcIDsKK+egtOeJhyA+IGhhaGVuXCA7CivlkIzljJYgPiBkb3VrYVwgOwor6YCA6YG/ID4gdGFpaGlcIDsKK+WPpOWfjiA+IGtvam91XCA7CivlkJDliaQgPiB0b3phaVwgOwor5rCX5qaCID4ga2lnYWlcIDsKK+W6nOitpiA+IGZ1a2VpXCA7CivlvqHmrr8gPiBnb3RlblwgOwor6JCM6Iq9ID4gaG91Z2FcIDsKK+WMuuawkSA+IGt1bWluXCA7CivljprmgakgPiBrb3VvblwgOwor5b+c5o+0ID4gb3VlblwgOwor5bqr6KOPID4ga3VyaVwgOwor5Y+k5ZmoID4ga29raVwgOwor5YeN6ZuoID4gdG91dVwgOwor5b6S5q2pID4gdG9ob1wgOwor5Y+v5ZCmID4ga2FoaVwgOwor5b6Q5q2pID4gam9ob1wgOwor5bqH6K23ID4gaGlnb1wgOwor6YeO5Za2ID4geWFlaVwgOwor5rOV5LyaID4gaG91ZVwgOwor5ZCM5L2NID4gZG91aVwgOwor5Y2x5oe8ID4ga2lndVwgOwor5Y+l5Y+lID4ga3VrdVwgOwor5Y+k5Y+lID4ga29rdVwgOwor5Y+j5Y+XID4ga3VqdVwgOwor5rK75YW3ID4gamlndVwgOwor5Ya36ZuoID4gcmVpdVwgOwor5b2T54K6ID4gdG91aVwgOwor5Y+z5YWaID4gdXRvdVwgOwor5Y2x5oOnID4ga2lndVwgOwor6YG657K+ID4gaXNlaVwgOwor6YeO5Y2RID4geWFoaVwgOwor5Y+z5YK+ID4gdWtlaVwgOwor5Yy75pu4ID4gaXNob1wgOwor6YGV6IOMID4gaWhhaVwgOwor5oCo5ZefID4gZW5zYVwgOwor6bia5ZOlID4gaW5rb1wgOwor56C05q+AID4gaGFraVwgOwor5Y+N5ZCQID4gaGVkb1wgOwor5Y+N5Y+kID4gaG9nb1wgOwor5Y+k5YSAID4ga29naVwgOwor6I+v576OID4ga2FiaVwgOwor5Y2w5bqmID4gaW5kb1wgOwor6YG656i/ID4gaWtvdVwgOwor55u46YGVID4gc291aVwgOwor5bqn6IelID4gemFnYVwgOwor5biw6YCUID4ga2l0b1wgOwor5b+g5a6fID4gbWFtZVwgOwor5YaG6aGxID4gZW5yb1wgOwor56OB5aC0ID4gamliYVwgOwor5Y+k5LqLID4ga29qaVwgOwor56C05qOEID4gaGFraVwgOwor5rC45a+/ID4gZWlqdVwgOwor5q2M56KRID4ga2FoaVwgOwor5b6A5pmCID4gb3VqaVwgOwor56OB5ZyfID4gamlkb1wgOwor6bSJ54mHID4gYWhlblwgOwor5Y2w5a2XID4gaW5qaVwgOwor6YGV566XID4gaXNhblwgOwor5Y+Z5LqLID4gam9qaVwgOwor56OB5ZmoID4gamlraVwgOwor5b6u5b6uID4gYmliaVwgOwor5biw6LevID4ga2lyb1wgOwor5b6h5oSPID4gZ3lvaVwgOwor56CC5rSyID4gc2FzdVwgOwor5Y2I5b6MID4gZ29nb1wgOwor5q+A5qOEID4ga2lraVwgOwor6YGg56WWID4gZW5zb1wgOwor5b6M5omLID4gZ290ZVwgOwor5bmy6JGJID4gaGliYVwgOwor5byV54GrID4gaW5rYVwgOwor5b6h5b2xID4gZ29laVwgOwor6YG655SjID4gaXNhblwgOwor5qi56ZmwID4ganVpblwgOwor6Iux6Z+zID4gZWlvblwgOwor5rGa5ZCNID4gb21laVwgOwor56OB5Yy6ID4gamlrdVwgOwor6YKq5rerID4gamFpblwgOwor6L+C6KiAID4gdWdlblwgOwor56OB5YyWID4gamlrYVwgOwor5Yy75birID4gaXNoaVwgOwor5b285oiRID4gaGlnYVwgOwor5Y2x5Z2QID4ga2l6YVwgOwor5Ym155eNID4gc291aVwgOwor5qmf6YGLID4ga2l1blwgOwor5Yyq5b6SID4gaGl0b1wgOwor5Yqp5ryUID4gam9lblwgOwor6YKq5rCXID4gamFraVwgOwor5byl5qyhID4geWFqaVwgOwor5b6h5a6HID4gZ3lvdVwgOwor5b6A5b6AID4gb3VvdVwgOwor5YiA6IeqID4gdG9qaVwgOwor5b6h5a2QID4gbWlrb1wgOwor5Yy75a6YID4gaWthblwgOwor5Yqg5ripID4ga2FvblwgOwor6YGO55aOID4ga2Fzb1wgOwor5YiA6IOMID4gbWluZVwgOwor5b+c5YufID4gb3Vib1wgOwor6YG65ryPID4gaXJvdVwgOwor5b6M5a62ID4gZ29rZVwgOwor5Yy75aSnID4gaWRhaVwgOwor5q605omTID4gb3VkYVwgOwor5q2p5q2mID4gaG9idVwgOwor6YGV54qvID4gaWhhblwgOwor5YaG6LKoID4gZW5rYVwgOwor5rCX5ZGzID4gZ2ltaVwgOwor5rCX5ZCIID4ga2lhaVwgOwor5biD6KGNID4gZnVlblwgOwor6a2U6a2FID4gbWFtaVwgOwor5b6M5aC0ID4gZ29iYVwgOwor56C05a62ID4gYmFrYVwgOwor5rCX5YyWID4ga2lrYVwgOwor5b6B5aS3ID4gc2VpaVwgOwor5Y2I5ZCOID4gZ29nb1wgOwor5rC05L2NID4gc3VpaVwgOwor5rC45LmFID4gdG93YVwgOwor5bem6KiYID4gc2FraVwgOwor5YaG6KaPID4gZW5raVwgOwor55uI6JmnID4gZWlraVwgOwor6YG65qeLID4gaWtvdVwgOwor5b6h5ZCNID4gbWluYVwgOwor6YOo5bGLID4gaGV5YVwgOwor6Iux6LKoID4gZWlrYVwgOwor6YGO5rihID4ga2F0b1wgOwor6YGV5rOVID4gaWhvdVwgOwor5q635a+MID4gaW5wdVwgOwor5bu25pyfID4gZW5raVwgOwor5qiq6K2wID4gb3VnaVwgOwor56CC5beeID4gc2FzdVwgOwor6Iyj6JOZID4gZ296YVwgOwor6Iux6KqeID4gZWlnb1wgOwor6YGL5rKzID4gdW5nYVwgOwor6YG65pu4ID4gaXNob1wgOwor55+l5oG1ID4gY2hpZVwgOwor6YGL5rCXID4gdW5raVwgOwor6Ly46LSPID4geXVlaVwgOwor5Y2R5LiLID4gaGlnZVwgOwor5Yui5a2QID4gc2Vrb1wgOwor5YyF5ZuyID4gaG91aVwgOwor5b6A5Y+kID4gb3Vrb1wgOwor5Yqg5oyBID4ga2FqaVwgOwor5byn5bqmID4ga29kb1wgOwor6YO95Za2ID4gdG9laVwgOwor5q+U5ZapID4gaGl5dVwgOwor6YG65paHID4gaWJ1blwgOwor6YCi54CsID4gb3VzZVwgOwor5Ye655uuID4gZGVtZVwgOwor5b2Z5aCxID4gaWhvdVwgOwor5q2m5oqAID4gYnVnaVwgOwor6Lyd6LydID4ga2lraVwgOwor5bqn5rSyID4gemFzdVwgOwor5b6h5LujID4gbWl5b1wgOwor5Yui5aiBID4gc2VpaVwgOwor5Yy75LyaID4gaWthaVwgOwor5b6X5L2TID4gZXRhaVwgOwor5b6h5LiWID4gbWl5b1wgOwor5b2x5Y2wID4gZWlpblwgOwor5q2j5oSPID4gc2VpaVwgOwor5YaG6IieID4gZW5idVwgOwor6bWc5YygID4gdWpvdVwgOwor5q+N5Y2wID4gYm9pblwgOwor6YC45qmfID4gaWtraVwgOwor6YOo5ZOhID4gYnVpblwgOwor6YG65oiSID4gaWthaVwgOwor55qu6IaaID4gaGlmdVwgOwor6YG65oa+ID4gaWthblwgOwor5Yi35q+bID4gaGFrZVwgOwor5q2p5bqmID4gaG9kb1wgOwor5qyh5pyfID4gamlraVwgOwor5q2m5bqrID4gYnVrb1wgOwor5qmf57iBID4ga2llblwgOwor56CC5ZyfID4gc2Fkb1wgOwor6YG65oGoID4gaWtvblwgOwor5b6A5LqLID4gb3VqaVwgOwor6Iqx6K2cID4ga2FmdVwgOwor6YG65b+XID4gaXNoaVwgOwor5bqP5qyhID4gam9qaVwgOwor5q+U5L6hID4gaGlrYVwgOwor6YCU5qyhID4gdG9qaVwgOwor5Ym15oSPID4gc291aVwgOwor5q2m5a62ID4gYnVrZVwgOwor5qiq6IelID4gb3VnYVwgOwor6ayx6YeRID4gdWtvblwgOwor5q+U5LiYID4gYmlrdVwgOwor6YO95LiLID4gdG9rYVwgOwor55+i5aC0ID4geWFiYVwgOwor6Iqx6KKrID4ga2FoaVwgOwor6YGV5oayID4gaWtlblwgOwor5bu25a+/ID4gZW5qdVwgOwor55m+6IiMID4gbW96dVwgOwor5q2m5aSrID4gYnVmdVwgOwor56CC5YipID4gamFyaVwgOwor6YOo5LiLID4gYnVrYVwgOwor6YG65a2QID4gaXNoaVwgOwor55695aWzID4gZ296ZVwgOwor5Y+l44CFID4ga3VrdVwgOwor5Ye65q2vID4gZGViYVwgOwor6YGO5bqmID4ga2Fkb1wgOwor5q2m5ZmoID4gYnVraVwgOwor6YGL5bqnID4gdW56YVwgOwor5qyh5bqPID4gamlqb1wgOwor5qih57OKID4gbW9rb1wgOwor6Iqx6Iq9ID4ga2FnYVwgOwor6YG65Z2AID4gaXNoaVwgOwor5bmz5piTID4gaGVpaVwgOwor5Yqg5ZGzID4ga2FtaVwgOwor5q2p5ZCIID4gYnVhaVwgOwor5qyn5a2XID4gb3VqaVwgOwor5Ye65p2lID4gZGVraVwgOwor5YOn6KGjID4gc291aVwgOwor55aO6Z+zID4gc29pblwgOwor5bqn5beeID4gemFzdVwgOwor5qi555quID4ganVoaVwgOwor5bqc5bqrID4gZnVrb1wgOwor6YG65ZOBID4gaWhpblwgOwor55aR6ZuyID4gZ2l1blwgOwor6YG65ZG9ID4gaW1laVwgOwor5q2k5YemID4ga29rb1wgOwor5q2m5YW3ID4gYnVndVwgOwor6YGO5aSaID4ga2F0YVwgOwor5qyh5aWzID4gamlqb1wgOwor5Yeg5qGIID4ga2lhblwgOwor5q2m5YKZID4gYnViaVwgOwor6L+95omLID4gb3R0ZVwgOwor6YG65YqfID4gaWtvdVwgOwor55Ww6aKoID4gaWZ1dVwgOwor6YG65Yi2ID4gaXNlaVwgOwor55Ww6aGeID4gaXJ1aVwgOwor5Yip5bexID4gcmlrb1wgOwor5q2j5L2NID4gc2VpaVwgOwor5Yi35a2QID4gaGFrZVwgOwor5q2m5LqLID4gYnVqaVwgOwor6I2K5qOYID4gYmFyYVwgOwor6a2U576FID4gbWFyYVwgOwor6YG65L2TID4gaXRhaVwgOwor6YGV5Y+NID4gaWhhblwgOwor6YG65LydID4gaWRlblwgOwor6YGO5Y67ID4ga2Frb1wgOwor5qyn5YyWID4gb3VrYVwgOwor55aO6YGgID4gc29lblwgOwor55aR6L6eID4gZ2lqaVwgOwor5bem5rS+ID4gc2FoYVwgOwor6Im2576OID4gZW5iaVwgOwor6ami6aasID4gcm9iYVwgOwor5bKQ6ZicID4gZ2lmdVwgOwor5bqn5ZOhID4gemFpblwgOwor5rC444CFID4gZWllaVwgOwor55yf5biGID4gbWFob1wgOwor55u45omLID4gYWl0ZVwgOwor5bqm5ZCIID4gZG9haVwgOwor6YGV5L6LID4gaXJlaVwgOwor5Yip5ZmoID4gcmlraVwgOwor6Imy57W1ID4gaXJvZVwgOwor55Ww6YKmID4gaWhvdVwgOwor6YGV5LukID4gaXJlaVwgOwor5buD5L2NID4gaGFpaVwgOwor5biD5pa9ID4gZnVzZVwgOwor6Ieq6LK7ID4gamloaVwgOwor6Ieq6LKgID4gamlmdVwgOwor5YWl5rGfID4gaXJpZVwgOwor6Iux5rCXID4gZWlraVwgOwor6ai+6aasID4gcmFiYVwgOwor6Iqx546LID4ga2FvdVwgOwor5qOL6ZmiID4ga2lpblwgOwor5bi35bmEID4gaWFrdVwgOwor6Iux5q2mID4gZWlidVwgOwor55Ww6LajID4gaXNodVwgOwor5YW35qGIID4gZ3VhblwgOwor5Ye65aC0ID4gZGViYVwgOwor6Ieq6KiYID4gamlraVwgOwor5bqn5Li7ID4gemFzdVwgOwor6Ieq6KGbID4gamllaVwgOwor55Ww6KuWID4gaXJvblwgOwor5bKQ6LevID4ga2lyb1wgOwor55u45a2QID4gYWlrb1wgOwor5bqc5LiLID4gZnVrYVwgOwor6a2U546LID4gbWFvdVwgOwor5YGJ6KazID4gaWthblwgOwor55Ww6KaLID4gaWtlblwgOwor5Yip5LuWID4gcml0YVwgOwor6aiO6aasID4ga2liYVwgOwor5qmf5b6uID4ga2liaVwgOwor5qmf5b2xID4ga2llaVwgOwor5bm+5L2VID4ga2lrYVwgOwor5b6A44CFID4gb3VvdVwgOwor55m65p2hID4gYmFuZVwgOwor5YaF5oSPID4gbmFpaVwgOwor5qmf5bqPID4ga2lqb1wgOwor55m45pyqID4ga2liaVwgOwor5bid5aiBID4gdGVpaVwgOwor6L+C5ZueID4gdWthaVwgOwor6YCA5L2NID4gdGFpaVwgOwor5Ye65YiDID4gZGViYVwgOwor5qKF6ZuoID4gYmFpdVwgOwor5qih5pOsID4gbW9naVwgOwor5YaG5bynID4gZW5rb1wgOwor55ey55e6ID4gbWFoaVwgOwor55uu5ZywID4gbWVqaVwgOwor5YaG5bqnID4gZW56YVwgOwor5qmf5bC+ID4ga2liaVwgOwor6Iqx5qi5ID4ga2FqdVwgOwor5biw5Za2ID4ga2llaVwgOwor55S76K2cID4gZ2FmdVwgOwor5qmf5a6cID4ga2lnaVwgOwor5bC+6YOoID4gYmlidVwgOwor55uy5ZSWID4gbW91YVwgOwor5L6d6aGYID4gaWdhblwgOwor5L6d6aC8ID4gaXJhaVwgOwor55aR576pID4gZ2lnaVwgOwor55yf5Ly8ID4gbWFuZVwgOwor5qOL6K2cID4ga2lmdVwgOwor5biw5YyWID4ga2lrYVwgOwor5YWQ5oivID4gamlnaVwgOwor55yf5LiKID4gbWF1ZVwgOwor5ber5a2QID4gbWlrb1wgOwor5biM5ZyfID4ga2lkb1wgOwor6Iqx5pyfID4ga2FraVwgOwor5biM5ZuzID4ga2l0b1wgOwor6aas6bm/ID4gYmFrYVwgOwor6IeZ6ISCID4gZW5qaVwgOwor5YGD6IelID4gZW5nYVwgOwor6IOh6bq7ID4gZ29tYVwgOwor5qCX6bygID4gcmlzdVwgOwor5a+66ZmiID4gamlpblwgOwor55Ww6IGeID4gaWJ1blwgOwor5ber5aWzID4gbWlrb1wgOwor55uu5YemID4gbWVkb1wgOwor6aeE6aasID4gZGFiYVwgOwor6ay85rCXID4ga2lraVwgOwor5Yeg5LiLID4ga2lrYVwgOwor5qmf5ZmoID4ga2lraVwgOwor5YWs5a62ID4ga3VnZVwgOwor6Im25q2MID4gZW5rYVwgOwor5L+d6K23ID4gaG9nb1wgOwor5YW15aiBID4gaGVpaVwgOwor6ayx5rCXID4gdWtraVwgOwor6Lu95piTID4ga2VpaVwgOwor6Iux5a2XID4gZWlqaVwgOwor6Iqx5oq8ID4ga2FvdVwgOwor5L+a6KqeID4gcmlnb1wgOwor55qH5a2QID4gb3VqaVwgOwor5bGg6JiHID4gdG9zb1wgOwor5YaA5ZuzID4ga2l0b1wgOwor6aeG6ZmkID4ga3Vqb1wgOwor5a+d6ZaTID4gbmVtYVwgOwor6L6e5YSAID4gamlnaVwgOwor55uu5LiKID4gbWV1ZVwgOwor5bid5L2NID4gdGVpaVwgOwor5qmf5YyWID4ga2lrYVwgOwor6Lyq5beuID4gd2FzYVwgOwor5L2Z6Z+7ID4geW9pblwgOwor55Ww56uvID4gaXRhblwgOwor6Lyd5bqmID4ga2lkb1wgOwor5a+E6ZmEID4ga2lmdVwgOwor5qmf5YW3ID4ga2lndVwgOwor5bel5ZCIID4gZ3VhaVwgOwor55Ww56iuID4gaXNodVwgOwor5YWQ5aWzID4gamlqb1wgOwor6Iqx5bqPID4ga2Fqb1wgOwor5YW35ZCIID4gZ3VhaVwgOwor6Laz6KKLID4gdGFiaVwgOwor5bGx576KID4geWFnaVwgOwor6Ium5ZyfID4ga3Vkb1wgOwor5L2N6ZqOID4gaWthaVwgOwor5a+/6LOAID4ganVnYVwgOwor6Ieq55S7ID4gamlnYVwgOwor6Iux5ZKMID4gZWl3YVwgOwor5YWs5Y2/ID4ga3VnZVwgOwor55S757SgID4gZ2Fzb1wgOwor5YW25YemID4gc29rb1wgOwor5qKo6IqxID4gcmlrYVwgOwor55Sx57iBID4geXVlblwgOwor5YaG5L6hID4gZW5rYVwgOwor6Iqx5a2jID4ga2FraVwgOwor6a2a5bqnID4gdW96YVwgOwor5YW35YKZID4gZ3ViaVwgOwor6LaK6Ki0ID4gZXNzb1wgOwor6IKl6aasID4gaGliYVwgOwor55m+5ZCIID4geXVyaVwgOwor55qu5LiLID4gaGlrYVwgOwor5YSS5a62ID4ganVrYVwgOwor6Ieq54GrID4gamlrYVwgOwor6LW36Ki0ID4ga2lzb1wgOwor5L+a6ICzID4gcmlqaVwgOwor5a626YGLID4ga2F1blwgOwor55Ww54q2ID4gaWpvdVwgOwor5qWa5qWaID4gc29zb1wgOwor5YWB5Y+vID4gaW5rYVwgOwor5L6N6KGbID4gamllaVwgOwor6aWR6aSTID4ga2lnYVwgOwor6Iqx5ZmoID4ga2FraVwgOwor55qH5L2NID4ga291aVwgOwor5L2z6KmxID4ga2F3YVwgOwor6IOD6YW4ID4gaXNhblwgOwor5YWI5YWIID4gbWFtYVwgOwor5a626LevID4gaWVqaVwgOwor5qGn6JGJID4gaGliYVwgOwor6a2U5aWzID4gbWFqb1wgOwor6aWC6aOpID4gdWRvblwgOwor5a2X6Z+zID4gamlvblwgOwor5a+E6KqeID4ga2lnb1wgOwor6Iqx5Y2JID4ga2FraVwgOwor5a626K2cID4ga2FmdVwgOwor6IO06KGjID4gZG91aVwgOwor6ay85aWzID4ga2lqb1wgOwor6ICz6by7ID4gamliaVwgOwor6aST6ay8ID4gZ2FraVwgOwor6IOk6KOUID4gaW5laVwgOwor5YSy5L2NID4gY2hvaVwgOwor6Ieq5qOEID4geWFrZVwgOwor55CG6Z2eID4gcmloaVwgOwor5Lul6ZmNID4gaWtvdVwgOwor5YSq5L2NID4geXV1aVwgOwor6LW36IelID4ga2lnYVwgOwor6IOe6KGjID4gaG91aVwgOwor5qCE6KqJID4gZWl5b1wgOwor5ayw6Z+zID4gZWlvblwgOwor6LyU5L2QID4gaG9zYVwgOwor5LyK6YGUID4gZGF0ZVwgOwor55Ww5qeYID4gaXlvdVwgOwor5L2Z6JiKID4geW91blwgOwor5a626JqKID4gaWVrYVwgOwor5bC855SrID4gamlob1wgOwor5YGJ5p2QID4gaXphaVwgOwor55Ww5pysID4gaWhvblwgOwor5qSN5pyoID4gdWVraVwgOwor6IO86IOdID4gdGFrb1wgOwor6Iiq5a6HID4ga291dVwgOwor55aR5oe8ID4gZ2lrdVwgOwor55Ww5paHID4gaWJ1blwgOwor55Ww5pWwID4gaXN1dVwgOwor55aR5oOnID4gZ2lndVwgOwor6Ieq5oiRID4gamlnYVwgOwor6aeV57GgID4ga2Fnb1wgOwor6a2B5YGJID4ga2FpaVwgOwor5L+d54ShID4gaG9tdVwgOwor6aeV56+tID4ga2Fnb1wgOwor6aOi6aSTID4ga2lnYVwgOwor6Ieq5oSbID4gamlhaVwgOwor5qCE6I+vID4gZWlnYVwgOwor5YGJ5oyZID4gaWt5b1wgOwor5a2j6KqeID4ga2lnb1wgOwor6IKa6KOPID4gdG9yaVwgOwor5YOn5L2NID4gc291aVwgOwor5YGJ5omNID4gaXNhaVwgOwor55Ww5omNID4gaXNhaVwgOwor6LK76YCUID4gaGl0b1wgOwor55CG6LevID4gcmlyb1wgOwor6LOm6KqyID4gZnVrYVwgOwor6LOm6KmgID4gZnVlaVwgOwor55WP5pWsID4gaWtlaVwgOwor5L+d5ripID4gaG9vblwgOwor6Ieq5bqPID4gamlqb1wgOwor55S75p62ID4gZ2FrYVwgOwor5L2N572uID4gaWNoaVwgOwor5LqM6ZmiID4gbmlpblwgOwor6Ieq5bexID4gamlrb1wgOwor55Ww5oCnID4gaXNlaVwgOwor55Ww5b2pID4gaXNhaVwgOwor55aR5a2XID4gZ2lqaVwgOwor6LGq6ZuoID4gZ291dVwgOwor5LuY6K2wID4gZnVnaVwgOwor5L+d5q+NID4gaG9ib1wgOwor5a6J6IelID4gYW5nYVwgOwor5Lul6KW/ID4gaXNlaVwgOwor5Lqc6Yi0ID4gYXJlaVwgOwor6Ieq5a62ID4gamlrYVwgOwor55Ww5bi4ID4gaWpvdVwgOwor5L6b54qgID4ga3VnaVwgOwor5LuY6KiYID4gZnVraVwgOwor5bCP54GrID4gYm95YVwgOwor6aeE55uuID4gZGFtZVwgOwor5bGL5qC5ID4geWFuZVwgOwor5L6d54S2ID4gaXplblwgOwor5LyK6ImmID4gaWthblwgOwor5YGJ5a65ID4gaXlvdVwgOwor5qKo5p6cID4gcmlrYVwgOwor55Ww5a2YID4gaXpvblwgOwor5LqM6YOoID4gbmlidVwgOwor6aKo6ZuoID4gZnV1dVwgOwor5qOE5o2QID4ga2llblwgOwor5qWV5YaGID4gZGFlblwgOwor5YG95Y2wID4gZ2lpblwgOwor6IKM6IaaID4ga2lmdVwgOwor55Ww5aeTID4gaXNlaVwgOwor5YGJ5aSnID4gaWRhaVwgOwor55Ww5aSJID4gaWhlblwgOwor55WZ5a6IID4gcnVzdVwgOwor5L2N55u4ID4gaXNvdVwgOwor5LiA6byTID4gaWtrb1wgOwor6Ieq5Za2ID4gamllaVwgOwor55So5oSPID4geW91aVwgOwor6ICz6KqeID4gamlnb1wgOwor55Ww5Z+fID4gaWlraVwgOwor55S75biDID4gZ2FmdVwgOwor6auY5L2NID4ga291aVwgOwor5a2X576pID4gamlnaVwgOwor6Ieq5Y+ZID4gamlqb1wgOwor5L+d5oyBID4gaG9qaVwgOwor6aml5bC+ID4ga2liaVwgOwor5YCa5a2QID4gaXNoaVwgOwor6Ieq5YqpID4gamlqb1wgOwor6IOD55mMID4gaWdhblwgOwor55S75a62ID4gZ2FrYVwgOwor6IiI5LqcID4ga291YVwgOwor55Om5pavID4gZ2FzdVwgOwor6Ieq5YipID4gamlyaVwgOwor5a6254i2ID4ga2FmdVwgOwor6aOb6KqeID4gaGlnb1wgOwor5L2Z54WZID4geW9lblwgOwor5LiL6aeEID4gZ2V0YVwgOwor5LiL6aasID4gZ2ViYVwgOwor5YGH5ZCNID4ga2FuYVwgOwor55Ww5ZCNID4gaW1laVwgOwor5L2N54mMID4gaWhhaVwgOwor55Ww5ZCMID4gaWRvdVwgOwor6IC26JiHID4geWFzb1wgOwor5L2Z54KOID4geW9lblwgOwor55Gg55KDID4gcnVyaVwgOwor5LiA6aiOID4gaWtraVwgOwor55aR5Ly8ID4gZ2lqaVwgOwor5YGJ5YuyID4gaWt1blwgOwor5YGJ5Yq5ID4gaWtvdVwgOwor5YGJ5YqfID4gaWtvdVwgOwor55Ww5YuVID4gaWRvdVwgOwor6LKg6I23ID4gZnVrYVwgOwor5LmF6YGgID4ga3VvblwgOwor6Ieq5L2ZID4gaml5b1wgOwor5LiN6ZuiID4gZnVyaVwgOwor5LiA6aGnID4gaWtrb1wgOwor6Ieq5LuWID4gaml0YVwgOwor576O6Z+zID4gYmlvblwgOwor5a2Q562JID4ga29yYVwgOwor5LiL6ZmiID4ga2FpblwgOwor6LW35qGIID4ga2lhblwgOwor5LiN6ZaTID4gYnVtYVwgOwor55S75ZugID4gZ2FpblwgOwor5L2Z5rOiID4geW9oYVwgOwor55WP5Y+LID4gaXl1dVwgOwor55Ww5L6LID4gaXJlaVwgOwor5bCP5omLID4ga290ZVwgOwor55Ww5L2TID4gaXRhaVwgOwor6Laj5oSPID4gc2h1aVwgOwor5YWI44CFID4gbWFtYVwgOwor5YGJ5Lq6ID4gaWppblwgOwor55Ww5Lq6ID4gaWppblwgOwor5L+d5a6JID4gaG9hblwgOwor5L2Z5q6DID4geW9vdVwgOwor6Lev5ZywID4gcm9qaVwgOwor5L6d5ougID4gaWt5b1wgOwor55C155C2ID4gYml3YVwgOwor55CG56eRID4gcmlrYVwgOwor5pqu6ZuyID4gYm91blwgOwor5L+d5aeGID4gaG9ib1wgOwor6IOD5rayID4gaWVraVwgOwor5bGF5aOrID4ga29qaVwgOwor5Lqc6IGWID4gYXNlaVwgOwor5p2O6IqxID4gcmlrYVwgOwor5LiL6YeOID4gZ2V5YVwgOwor5LiK6YeOID4gdWVub1wgOwor6IKM55CGID4ga2ltZVwgOwor6aa05p+TID4gbmFqaVwgOwor5Lqc576kID4gYWd1blwgOwor5LiW6L6eID4gc2VqaVwgOwor5LiN6YGLID4gZnV1blwgOwor5L2Z5qCEID4geW9laVwgOwor6IWw5ZuyID4geW91aVwgOwor5qKo5ZySID4gcmllblwgOwor5L6b5b6hID4gZ3Vnb1wgOwor5qKD5a2QID4gdGVrb1wgOwor6Lev5YqgID4gcnVrYVwgOwor5Lqc57axID4gYWtvdVwgOwor5p6c55quID4ga2FoaVwgOwor5LiN6LuMID4gZnVraVwgOwor5L2Z5pqHID4geW9rYVwgOwor5LiA6YGOID4gaWtrYVwgOwor5bCP5bGLID4ga295YVwgOwor5LiA6YCUID4gaXR0b1wgOwor576O6L6eID4gYmlqaVwgOwor5a6J5rCXID4gYW5raVwgOwor55CJ55KDID4gcnVyaVwgOwor5a655piTID4geW91aVwgOwor5YCL5YCLID4ga29rb1wgOwor5LiN6LW3ID4gZnVraVwgOwor5bCJ5a6YID4gaWthblwgOwor5qCE5p6vID4gZWlrb1wgOwor6LW35bqnID4ga2l6YVwgOwor5a+T5oSPID4gZ3V1aVwgOwor5L6d5a2YID4gaXpvblwgOwor5LiW6KmxID4gc2V3YVwgOwor5Lqc56iuID4gYXNodVwgOwor5pm06ZuoID4gc2VpdVwgOwor5bCP5aScID4gc2F5b1wgOwor5aiB6aKoID4gaWZ1dVwgOwor6aOb57C3ID4gaGllblwgOwor6Z+z6aCtID4gb25kb1wgOwor5L2Z5oqAID4geW9naVwgOwor5LiN6KqeID4gZnVnb1wgOwor5L2Z5omAID4geW9zb1wgOwor546L6ICFID4gb3VqYVwgOwor5a625om2ID4ga2FmdVwgOwor5LiL6KiYID4ga2FraVwgOwor5pqX6YOoID4gYW5idVwgOwor5L6b5aWJID4gZ3VidVwgOwor6IOD5pWjID4gaXNhblwgOwor5LuB546LID4gbmlvdVwgOwor5L6N5amiID4gamloaVwgOwor5LqI56eRID4geW9rYVwgOwor5a6z5oSPID4gZ2FpaVwgOwor5LqI56S6ID4geW9qaVwgOwor5a6J5piTID4gYW4nJ2lcIDsKK+S4i+ihhiA+IGdlc3VcIDsKK+S4iuihoyA+IGpvdWlcIDsKK+S+jeWlsyA+IGppam9cIDsKK+Wtl+avjSA+IGppYm9cIDsKK+iDjOaIuCA+IHNlZG9cIDsKK+WvhOW4rSA+IHlvc2VcIDsKK+S9s+WutCA+IGthZW5cIDsKK+eKoOmjmyA+IGdpaGlcIDsKK+S4jeiZniA+IGZ1Z3VcIDsKK+iFkOWEkiA+IGZ1anVcIDsKK+e9teipiCA+IGJhcmlcIDsKK+WvjOWutiA+IGZ1a2FcIDsKK+S7lua0viA+IHRhaGFcIDsKK+itsOmZoiA+IGdpaW5cIDsKK+i1t+WboCA+IGtpaW5cIDsKK+eOu+eSgyA+IGhhcmlcIDsKK+WuieaJkyA+IGFuZGFcIDsKK+aal+itnCA+IGFucHVcIDsKK+mmrOWtkCA+IG1hZ29cIDsKK+aYr+mdniA+IHplaGlcIDsKK+S6i+eQhiA+IGppcmlcIDsKK+WutuWutiA+IGllaWVcIDsKK+aeuOadniA+IGt1a29cIDsKK+S6jOeOiyA+IG5pb3VcIDsKK+eMv+iHgiA+IGVucGlcIDsKK+aal+iomCA+IGFua2lcIDsKK+aenOaouSA+IGthanVcIDsKK+S9jeWumCA+IGlrYW5cIDsKK+S6keeIviA+IHVuamlcIDsKK+S6nOeCrSA+IGF0YW5cIDsKK+S4gOiNtyA+IGlra2FcIDsKK+i1t+WPpSA+IGtpa3VcIDsKK+S8muaEjyA+IGthaWlcIDsKK+S7peadsSA+IGl0b3VcIDsKK+S7peadpSA+IGlyYWlcIDsKK+mjm+eHlSA+IGhpZW5cIDsKK+WuieW6pyA+IGFuemFcIDsKK+aXl+m8kyA+IGtpa29cIDsKK+mmrOWgtCA+IGJhYmFcIDsKK+mejemmrCA+IGFuYmFcIDsKK+S4gOiHgiA+IGlwcGlcIDsKK+S9s+WRsyA+IGthbWlcIDsKK+S4jee+qSA+IGZ1Z2lcIDsKK+S4jee+iCA+IGZ1a2lcIDsKK+S4jee+hyA+IGZ1a2lcIDsKK+S9s+WPpSA+IGtha3VcIDsKK+acqOeTnCA+IGJva2VcIDsKK+mnhOWPpSA+IGRha3VcIDsKK+iCqeW3viA+IGhpcmVcIDsKK+aZgumBiyA+IGppdW5cIDsKK+mfu+iqniA+IGluZ29cIDsKK+almuOAhSA+IHNvc29cIDsKK+mfs+itnCA+IG9ucHVcIDsKK+S4jee4gSA+IGZ1ZW5cIDsKK+S9jeWcsCA+IGljaGlcIDsKK+aeh+adtyA+IGJpd2FcIDsKK+S4iue1tSA+IHV3YWVcIDsKK+WtpOW9sSA+IGtvZWlcIDsKK+ahiOS+oSA+IGFua2FcIDsKK+eMm+iAhSA+IG1vc2FcIDsKK+agoeWMuyA+IGtvdWlcIDsKK+e+veebriA+IGhhbWVcIDsKK+ahiOS4iyA+IGFua2FcIDsKK+afmuWtkCA+IHl1enVcIDsKK+itt+isqCA+IGdvbXVcIDsKK+S7luaJgCA+IHlvc29cIDsKK+S6jOasoSA+IG5pamlcIDsKK+WmgumcsiA+IGpvcm9cIDsKK+S4jeepjyA+IGZ1b25cIDsKK+WuieWgtSA+IGFuZG9cIDsKK+S4gOeuhyA+IGlra29cIDsKK+S4i+eoriA+IGdlc3VcIDsKK+mmrOWFtyA+IGJhZ3VcIDsKK+S9jeWLsiA+IGlrdW5cIDsKK+S7luaEmyA+IHRhYWlcIDsKK+WutuWHuiA+IGllZGVcIDsKK+S9meWEgCA+IHlvZ2lcIDsKK+WuieWbuiA+IGFua29cIDsKK+WutuWFtyA+IGthZ3VcIDsKK+S4jeejqCA+IGZ1bWFcIDsKK+WutuWFjiA+IGthdG9cIDsKK+aXpemWkyA+IGhpYWlcIDsKK+S8juWlsyA+IGdpam9cIDsKK+WnlOitsiA+IGlqb3VcIDsKK+S9jeWGoCA+IGlrYW5cIDsKK+itt+ihmyA+IGdvZWlcIDsKK+S7i+aEjyA+IGthaWlcIDsKK+WvhOS7mCA+IGtpZnVcIDsKK+mejemDqCA+IGFuYnVcIDsKK+acieeCuiA+IHl1dWlcIDsKK+WvhOS4jiA+IGtpeW9cIDsKK+S9k+S9jSA+IHRhaWlcIDsKK+S9meS6iyA+IHlvamlcIDsKK+mdkumdkiA+IGFvYW9cIDsKK+S7ruWtlyA+IGthbmFcIDsKK+S6jOacnyA+IG5pa2lcIDsKK+S9juS9jSA+IHRlaWlcIDsKK+WuieWQpiA+IGFucGlcIDsKK+iDoeS5sSA+IHVyb25cIDsKK+S6iOacnyA+IHlva2lcIDsKK+WutuS6iyA+IGthamlcIDsKK+e+qeeQhiA+IGdpcmlcIDsKK+itj+iquSA+IGtpaGlcIDsKK+S4i+eXoiA+IGdlcmlcIDsKK+WuieWNsSA+IGFua2lcIDsKK+izreWgtCA+IHRvYmFcIDsKK+mmluS9jSA+IHNodWlcIDsKK+WsieaIryA+IGtpZ2lcIDsKK+S6i+aVhSA+IGppa29cIDsKK+S8geWbsyA+IGtpdG9cIDsKK+e+qeeItiA+IGdpZnVcIDsKK+S7luWutiA+IHRha2VcIDsKK+S4jeeQhiA+IGZ1cmlcIDsKK+izgOWutCA+IGdhZW5cIDsKK+WumuS9jSA+IHRlaWlcIDsKK+Wuh+WGhSA+IHVkYWlcIDsKK+S7peWkliA+IGlnYWlcIDsKK+eRo+S6iyA+IHNhamlcIDsKK+WkoumtlCA+IG11bWFcIDsKK+adpeaEjyA+IHJhaWlcIDsKK+WtteWMliA+IGZ1a2FcIDsKK+iytOWutiA+IGtpa2FcIDsKK+aal+ekuiA+IGFuamlcIDsKK+WuieS/nSA+IGFucG9cIDsKK+WuieS+oSA+IGFua2FcIDsKK+acqOacqCA+IGtpZ2lcIDsKK+mdnumBiyA+IGhpdW5cIDsKK+iBvuWUliA+IHJvdWFcIDsKK+i0j+S9mSA+IGVpeW9cIDsKK+e+veavmyA+IHVtb3VcIDsKK+mfs+e0oCA+IG9uc29cIDsKK+Wtl+WPpSA+IGppa3VcIDsKK+i0iOS9jSA+IHpvdWlcIDsKK+iytOWlsyA+IGtpam9cIDsKK+S7mOWbsyA+IGZ1enVcIDsKK+iCieWIuiA+IG1hbWVcIDsKK+S6i+W+jCA+IGppZ29cIDsKK+S6iOW+jCA+IHlvZ29cIDsKK+S6jOW6piA+IG5pZG9cIDsKK+mfs+espiA+IG9ucHVcIDsKK+e+qeawlyA+IGdpa2lcIDsKK+WAi+OAhSA+IGtva29cIDsKK+e+qeavjSA+IGdpYm9cIDsKK+iqnumfsyA+IGdvb25cIDsKK+S7peWNlyA+IGluYW5cIDsKK+iAjOW+jCA+IGppZ29cIDsKK+WknOmZsCA+IHlhaW5cIDsKK+S7mOWSjCA+IGZ1d2FcIDsKK+eJoeibjiA+IGtha2lcIDsKK+eOi+aJiyA+IG91dGVcIDsKK+e+veaguSA+IGhhbmVcIDsKK+acqOaIuCA+IGtpZG9cIDsKK+S7peWJjSA+IGl6ZW5cIDsKK+adseWktyA+IHRvdWlcIDsKK+mdnuitsCA+IGhpZ2lcIDsKK+mfi+e3qCA+IGloZW5cIDsKK+S7peWGhSA+IGluYWlcIDsKK+S4gOa0viA+IGlwcGFcIDsKK+S4ieavmyA+IG1pa2VcIDsKK+mbt+mbqCA+IHJhaXVcIDsKK+irs+itnCA+IGFucHVcIDsKK+S7mOWKoCA+IGZ1a2FcIDsKK+S4jeasoSA+IGZ1amlcIDsKK+mbkemtmiA+IGpha29cIDsKK+itt+espiA+IGdvZnVcIDsKK+mbsumcpyA+IHVubXVcIDsKK+S6i+WunCA+IGppZ2lcIDsKK+abs+absyA+IGVpZWlcIDsKK+S6jOWtlyA+IG5pamlcIDsKK+S4gOawlyA+IGlra2lcIDsKK+izpuS4jiA+IGZ1eW9cIDsKK+adj+WtkCA+IGFuenVcIDsKK+WnlOe0sCA+IGlzYWlcIDsKK+irs+iomCA+IGFua2lcIDsKK+Wkp+mHjiA+IG9vbm9cIDsKK+S4gOatqSA+IGlwcG9cIDsKK+aWjumDqCA+IGluYmVcIDsKK+S7o+S9jSA+IGRhaWlcIDsKK+eLkOeWkSA+IGtvZ2lcIDsKK+eOi+W6pyA+IG91emFcIDsKK+S7o+S7oyA+IHlveW9cIDsKK+Wlh+iyqCA+IGtpa2FcIDsKK+S7peS4iiA+IGlqb3VcIDsKK+e+qeaXlyA+IGdpa2lcIDsKK+eQhuS6iyA+IHJpamlcIDsKK+acieaEjyA+IHl1dWlcIDsKK+acieaDhSA+IHVqb3VcIDsKK+S4jeacnyA+IGZ1a2lcIDsKK+S7luS6iyA+IHRhamlcIDsKK+eLkueLkiA+IGhpaGlcIDsKK+S7mOS4jiA+IGZ1eW9cIDsKK+S4u+aEjyA+IHNodWlcIDsKK+eLkOeLuCA+IGtvcmlcIDsKK+S4luaVhSA+IHNla29cIDsKK+S4jeaZgiA+IGZ1amlcIDsKK+mcsuiqniA+IHJvZ29cIDsKK+Wkp+i3ryA+IG9vamlcIDsKK+eOi+WutiA+IG91a2VcIDsKK+e+qeaPtCA+IGdpZW5cIDsKK+eOi+WtkCA+IG91amlcIDsKK+S4gOacnyA+IGlra2lcIDsKK+e+qeaNkCA+IGdpZW5cIDsKK+iqueitsCA+IGhpZ2lcIDsKK+iytOS4iyA+IGtpa2FcIDsKK+S4gOaWlyA+IGl0dG9cIDsKK+eOi+WmgyA+IG91aGlcIDsKK+eOi+WlsyA+IG91am9cIDsKK+mdkuiRiSA+IGFvYmFcIDsKK+iqnui3ryA+IGdvcm9cIDsKK+mdkuiPnCA+IGFvbmFcIDsKK+S6kuWKqSA+IGdvam9cIDsKK+acqOWgtCA+IGtpYmFcIDsKK+S6lOWIhiA+IGdvYnVcIDsKK+S4gOaPhiA+IGlra2lcIDsKK+S6i+WLmSA+IGppbXVcIDsKK+S4i+aJiyA+IGhldGFcIDsKK+S4i+aIuCA+IGdla29cIDsKK+adseS6niA+IHRvdWFcIDsKK+adseS6nCA+IHRvdWFcIDsKK+acqOWcsCA+IGtpamlcIDsKK+eOi+WcnyA+IG91ZG9cIDsKK+e+juaKgCA+IGJpZ2lcIDsKK+S4iuaEjyA+IGpvdWlcIDsKK+S4gOaIuCA+IGlra29cIDsKK+eLrOalvSA+IGtvbWFcIDsKK+iqpOiomCA+IGdva2lcIDsKK+mfs+azoiA+IG9ucGFcIDsKK+S6m+S6iyA+IHNhamlcIDsKK+mfu+avjSA+IGluYm9cIDsKK+aYoOeUuyA+IGVpZ2FcIDsKK+S6iOWCmSA+IHlvYmlcIDsKK+S6jOS+oSA+IG5pa2FcIDsKK+aWveiCpSA+IHNlaGlcIDsKK+mhjOaEjyA+IGRhaWlcIDsKK+S6jOS9kCA+IG5pc2FcIDsKK+S6iOS+oSA+IHlva2FcIDsKK+WkluihoyA+IGdhaWlcIDsKK+S4jeW4sCA+IGZ1a2lcIDsKK+aVt+ihjSA+IGZ1ZW5cIDsKK+aXqeeosiA+IHdhc2VcIDsKK+iom+mfsyA+IGthb25cIDsKK+e+veWkqiA+IGhhdGFcIDsKK+eFmemcpyA+IGVubXVcIDsKK+eOi+WMliA+IG91a2FcIDsKK+eFmemcniA+IGVua2FcIDsKK+eFmembqCA+IGVuJyd1XCA7CivpoqjlkYIgPiBmdXJvXCA7Civkub7kvY0gPiBrZW5pXCA7Civmk6zpn7MgPiBnaW9uXCA7CivlqIHmqKkgPiBpa2VuXCA7CivkuIDlt7EgPiBpa2tvXCA7CivnuIHotbcgPiBlbmdpXCA7CivkuZ3liIYgPiBrdWJ1XCA7CivkuI3lrokgPiBmdWFuXCA7CivlppbnlbAgPiB5b3VpXCA7CivoqIPpn7MgPiBmdW9uXCA7CivmnLrkuIsgPiBraWthXCA7CivniLbnpZYgPiBmdXNvXCA7CivkuIvlqaIgPiBrYWhpXCA7CivkuIDlrrYgPiBpa2tlXCA7CivpmbDpmJwgPiBpbmZ1XCA7CivlpYfnuIEgPiBraWVuXCA7CivmmpfmhJogPiBhbmd1XCA7CivkuI7lpKogPiB5b3RhXCA7CivkuIvlpbMgPiBnZWpvXCA7CivnhKHpp4QgPiBtdWRhXCA7CivnuIHoqp4gPiBlbmdvXCA7Civpm4Xoqp4gPiBnYWdvXCA7CivnjovkuosgPiBvdWppXCA7CivmmYLmqZ8gPiBqaWtpXCA7Civml6nnlJ8gPiB3YXNlXCA7CivnjaPljLsgPiBqdXVpXCA7Civnvo7lp6sgPiBiaWtpXCA7CivlqablpbMgPiBmdWpvXCA7Civnvo7lppMgPiBiaWdpXCA7CivpoqjkvY0gPiBmdXVpXCA7Civnvo7lpbMgPiBiaWpvXCA7CivkuZ3kuZ0gPiBrdWt1XCA7CivpnZLnoKUgPiBhb3RvXCA7CivlrrbjgIUgPiBpZWllXCA7CivnhKHpn7MgPiBtdW9uXCA7CivorbDmoYggPiBnaWFuXCA7CivkuI3lm7MgPiBmdXRvXCA7Civpmpjot68gPiBhaXJvXCA7CivnjJvlqIEgPiBtb3VpXCA7CivpmY3pm6ggPiBrb3V1XCA7CivmmbrmhacgPiBjaGllXCA7CivkuI3lmaggPiBmdWtpXCA7CivlpJrnvqkgPiB0YWdpXCA7CivmmrTlqIEgPiBib3VpXCA7CivlpJrnvoUgPiB0YXJhXCA7CivmmYLmnJ8gPiBqaWtpXCA7Civoqp7nvqkgPiBnb2dpXCA7CivpmbDpg6ggPiBpbmJ1XCA7CivlpbPnjosgPiBqb291XCA7CivkuLvkvY0gPiBzaHVpXCA7CivpnZ7nkIYgPiBoaXJpXCA7Civpm7LohIIgPiBmdWtlXCA7Civnvqnli5kgPiBnaW11XCA7Civpm6Loi6YgPiByaWt1XCA7Civmmq7lpJwgPiBib3lhXCA7CivpnZLnlLAgPiBhb3RhXCA7CivkuI3lkowgPiBmdXdhXCA7CivkuI3lkbMgPiBmdW1pXCA7CivpmqDoqp4gPiBpbmdvXCA7CivorbfmkakgPiBnb21hXCA7CivkuInlkbMgPiBzYW1pXCA7CivkuI3lj68gPiBmdWthXCA7CivkuIvlkI8gPiBrYXJpXCA7CivkuIvlj7ggPiBnZXN1XCA7CivkuIvlj6UgPiBnZWt1XCA7CivnuLfnuLcgPiBydXJ1XCA7Civmm7TkvY0gPiBrb3VpXCA7Civlo4HonaggPiBkYW5pXCA7Civnvo7lkbMgPiBiaW1pXCA7CivkuIvljZEgPiBnZWJpXCA7CivorLPmrYwgPiBvdWthXCA7CivorbfmjIEgPiBnb2ppXCA7CivkuIDlj6UgPiBpa2t1XCA7CivkuI3liKkgPiBmdXJpXCA7CivnhKHpiZsgPiBtdWVuXCA7Civnvo7ljJYgPiBiaWthXCA7CivkuIDljLogPiBpa2t1XCA7CivpoK3lnqIgPiBmdWtlXCA7CivkuI3lhbcgPiBmdWd1XCA7CivpoK3lm7IgPiB0b3VpXCA7CivoqJjorZwgPiBraWZ1XCA7CivkuI3lgpkgPiBmdWJpXCA7CivoqJvoqp4gPiBrYWdvXCA7CivniqDmiZMgPiBnaWRhXCA7CivlpJbnp5EgPiBnZWthXCA7Civpm6LnuIEgPiByaWVuXCA7CivkuJbkuosgPiBzZWppXCA7Civpn7vlrZcgPiBpbmppXCA7CivkuJbkuJYgPiB5b3lvXCA7CivlpKfnm64gPiBvb21lXCA7CivnhKHovpwgPiBtdWtvXCA7CivkuIrkvY0gPiBqb3VpXCA7CivkuIvku5ggPiBrYWZ1XCA7CivnuIHogIUgPiBlbmphXCA7Civml6XmrakgPiBoaWJ1XCA7CivkuI3kuowgPiBmdWppXCA7CivkuI3kuoggPiBmdXlvXCA7CivkuIDlgIsgPiBpa2tvXCA7CivniL7msZ0gPiBqaWpvXCA7CivlqIHlrrkgPiBpeW91XCA7Civpn7PlrZcgPiBvbmppXCA7CivlpJznnYAgPiB5b2dpXCA7CivpmaLorbAgPiBpbmdpXCA7CivlpJznm64gPiB5b21lXCA7CivkuIDkvZAgPiBpc3NhXCA7CivniLbmr40gPiBmdWJvXCA7CivpnZ7mr4AgPiBoaWtpXCA7CivmmYLlt64gPiBqaXNhXCA7CivntLDpm6ggPiBzYWl1XCA7CivpnIrnlbAgPiByZWlpXCA7CivoqofnpLogPiBrb2ppXCA7Civln7rpn7MgPiBraW9uXCA7Civnt6/nt5ogPiBpc2VuXCA7CivpmYTorbAgPiBmdWdpXCA7CivmmYLlrpwgPiBqaWdpXCA7Civku6PjgIUgPiB5b3lvXCA7CivpmqDogIUgPiBpbmphXCA7CivmmYLlraMgPiBqaWtpXCA7CivplrvprZQgPiBlbm1hXCA7Civml6Xml6UgPiBoaWJpXCA7CivmlbDnj6AgPiBqdXp1XCA7CivpmYToqJggPiBmdWtpXCA7CivpoKTkvb8gPiBpc2hpXCA7CivpmbDokI4gPiBpbicnaVwgOwor6Z+z5ZCQID4gb250b1wgOwor6Z+z5Y+JID4gb25zYVwgOwor5aiB5ZCNID4gaW1laVwgOwor6Z2S5pyoID4gYW9raVwgOwor5aiB5Y6zID4gaWdlblwgOwor6Kyd5oSPID4gc2hhaVwgOwor57a6576FID4ga2lyYVwgOwor5aiB5YuiID4gaXNlaVwgOwor5Z+66YOoID4ga2lidVwgOwor5aaC5oSPID4gbnlvaVwgOwor6K2s5ZapID4gaGl5dVwgOwor6K2w5ZOhID4gZ2lpblwgOwor5aiB5YWJID4gaWtvdVwgOwor5aW95oSPID4ga291aVwgOwor5aW95oKqID4ga291b1wgOwor5aSc5rCXID4geWFraVwgOwor6Z+z5L6hID4gb25rYVwgOwor6Z+75LqLID4gaW5qaVwgOwor6KiY57SAID4ga2lraVwgOwor5pei5b6AID4ga2lvdVwgOwor6Kqe5rCXID4gZ29raVwgOwor54i+5b6MID4gamlnb1wgOwor5aiB5LukID4gaXJlaVwgOwor5pmC5YuZID4gamltdVwgOwor5aWl5oSPID4gb2t1aVwgOwor5Z6i6ZuiID4ga29yaVwgOwor6Zuy5rCXID4gdW5raVwgOwor6ZaT6ZaTID4gbWFtYVwgOwor5aKT56KRID4gYm9oaVwgOwor6Zuo5rC0ID4gdXN1aVwgOwor6K2y5L2NID4gam91aVwgOwor5aGp57SgID4gZW5zb1wgOwor5pmC5L6hID4gamlrYVwgOwor6K2w5LqLID4gZ2lqaVwgOwor54Sh57iBID4gbXVlblwgOwor5aSc5pqXID4geWFhblwgOwor5pmC5LqLID4gamlqaVwgOwor5pmC5LiLID4gamlrYVwgOwor5aSP5pyfID4ga2FraVwgOwor5aeU5Lu7ID4gaW5pblwgOwor5aW05amiID4gbnVoaVwgOwor57iK5q27ID4gaXNoaVwgOwor5aSn5omLID4gb29kZVwgOwor5pyo44CFID4ga2lnaVwgOwor6Zyy5bqnID4gcm96YVwgOwor6ZuF5q2MID4gZ2FrYVwgOwor6Kmg5q2MID4gZWlrYVwgOwor6Zmw55S7ID4gaW5nYVwgOwor5aSn5oSPID4gdGFpaVwgOwor5aOK5q27ID4gZXNoaVwgOwor54Sh56KNID4gbXVnZVwgOwor6KmQ5qy6ID4gc2FnaVwgOwor6Kqg5oSPID4gc2VpaVwgOwor54WZ54GrID4gZW5rYVwgOwor57WM57evID4ga2VpaVwgOwor6Z2S5ZywID4gYW9qaVwgOwor6Z2S5ZuzID4gYW96dVwgOwor5pWs5oSPID4ga2VpaVwgOwor5pGp576FID4gbWFyYVwgOwor57KX6YeOID4gc295YVwgOwor5aSn5bGLID4gb295YVwgOwor6Kqk5beuID4gZ29zYVwgOwor5aSn5bCJID4gdGFpaVwgOwor5puz44CFID4gZWllaVwgOwor57iB5pWFID4gZW5rb1wgOwor54Sh55CGID4gbXVyaVwgOwor5aSi5a+QID4gbXViaVwgOwor57ev5pu4ID4gaXNob1wgOwor5aSa5bKQID4gdGFraVwgOwor54WZ5rOiID4gZW5wYVwgOwor57OW6KGjID4gdG91aVwgOwor6Zyy5ZywID4gcm9qaVwgOwor5aWz5YWQID4gam9qaVwgOwor5aSa5a+hID4gdGFrYVwgOwor5o+06K23ID4gZW5nb1wgOwor5pen5LqLID4ga3VqaVwgOwor6Kqe5bC+ID4gZ29iaVwgOwor6Kqk5a2XID4gZ29qaVwgOwor54i+5L2ZID4gaml5b1wgOwor6Zyy5Za2ID4gcm9laVwgOwor5LiW44CFID4geW95b1wgOwor5aSl5aSaID4ga2F0YVwgOwor54Sh54WZID4gbXVlblwgOwor5pWw5a+EID4gc3VraVwgOwor5aSP5a2jID4ga2FraVwgOwor6Zi/54mHID4gYWhlblwgOwor6Zmw5rCXID4gaW5raVwgOwor5aSc5aScID4geW95b1wgOwor5aSa5aSaID4gdGF0YVwgOwor5peX5LiLID4ga2lrYVwgOwor5Zyf6ZaTID4gZG9tYVwgOwor5o6q6L6eID4gc29qaVwgOwor57iB5bqnID4gZW56YVwgOwor5pa55L2NID4gaG91aVwgOwor5aSW5ZuyID4gZ2FpaVwgOwor6Kqy5ZOhID4ga2FpblwgOwor5Z+656SOID4ga2lzb1wgOwor54Sh5rS+ID4gbXVoYVwgOwor6KaP55+pID4ga2lrdVwgOwor5aSc5Za2ID4geWFlaVwgOwor5r++6YGOID4gcm9rYVwgOwor6Zuo5aSpID4gdXRlblwgOwor5aWI5L2VID4gaWthblwgOwor6Zuo5aOwID4gdXNlaVwgOwor54Sh5q+UID4gbXVoaVwgOwor6KaL55uuID4gbWltZVwgOwor6Zuo5Z+fID4gdWlraVwgOwor57iB5a62ID4gZW5rYVwgOwor5aSc5Y2KID4geW93YVwgOwor6ZuJ5a2QID4ga2lqaVwgOwor6KGj6aaZID4gaWtvdVwgOwor6Kqe5ZGCID4gZ29yb1wgOwor54Sh5qmfID4gbXVraVwgOwor6KOc6KqeID4gaG9nb1wgOwor57eP5oSPID4gc291aVwgOwor6Zqg5b6uID4gaW5iaVwgOwor6Kqe5Y+lID4gZ29rdVwgOwor5o6p6K23ID4gZW5nb1wgOwor6KOc6KiYID4gaG9raVwgOwor6ZqP5oSPID4genVpaVwgOwor5aS35Lq6ID4gaWppblwgOwor6KGj6aGeID4gaXJ1aVwgOwor5aSc5YW3ID4geWFndVwgOwor54Sh5pyfID4gbXVraVwgOwor57KX6I+TID4gc29rYVwgOwor5aSa5L6hID4gdGFrYVwgOwor6ZyK5L2NID4gcmVpaVwgOwor5pS75ZuyID4ga291aVwgOwor5aSa5LqLID4gdGFqaVwgOwor54Gr566tID4gaGl5YVwgOwor57W15pysID4gZWhvblwgOwor5Zu66L6eID4ga29qaVwgOwor54uS44CFID4gaGloaVwgOwor5Zyf6KqeID4gZG9nb1wgOwor5Zyw6KGjID4gY2hpaVwgOwor5pSY5aS3ID4gam91aVwgOwor6ZuH5ZOhID4ga29pblwgOwor54Sh5o+0ID4gbXVlblwgOwor6ZuF5ZGzID4gZ2FtaVwgOwor57C/6KiYID4gYm9raVwgOwor54Sh5omLID4gbXV0ZVwgOwor54Sh5oiRID4gbXVnYVwgOwor54Gr55+iID4gaGl5YVwgOwor6Zi/5oi/ID4gYWhvdVwgOwor6KaH5rCXID4gaGFraVwgOwor6KOc6IKlID4gaG9oaVwgOwor6Ki05ZugID4gc29pblwgOwor6KaP5qihID4ga2lib1wgOwor6ZuE5YGJID4geXV1aVwgOwor5pWF5LqLID4ga29qaVwgOwor6KKI6KOfID4ga2VzYVwgOwor5aGX5biDID4gdG9mdVwgOwor57W15birID4gZXNoaVwgOwor6Zmk5aScID4gam95YVwgOwor54Sh5a2jID4gbXVraVwgOwor54Gr54SUID4ga2FlblwgOwor54Gr54KOID4ga2FlblwgOwor54Gr54KJID4ga2Fyb1wgOwor5oq86Z+7ID4gb3VpblwgOwor5aGp5Z+6ID4gZW5raVwgOwor5pOs5Y+kID4gZ2lrb1wgOwor54K65pS/ID4gaXNlaVwgOwor54Sh5aGpID4gbXVlblwgOwor5o6o56e7ID4gc3VpaVwgOwor54Sh5Z6iID4gbXVrdVwgOwor54Sh5ZywID4gbXVqaVwgOwor6ZmE5ZuzID4gZnV6dVwgOwor57Sg5omLID4gc3VkZVwgOwor54Gr5rCXID4ga2FraVwgOwor5pOs5Ly8ID4gZ2lqaVwgOwor5aGp5YyWID4gZW5rYVwgOwor6KiY5LqLID4ga2lqaVwgOwor54Sh5ZGzID4gbXVtaVwgOwor5pel44CFID4gaGliaVwgOwor6Zi/5ZGGID4gYWhvdVwgOwor5Zyw55WwID4gY2hpaVwgOwor6ZeH5oSaID4gYW5ndVwgOwor6Zmi5Li7ID4gaW5qdVwgOwor5aCC5a6HID4gZG91dVwgOwor6Z2S44CFID4gYW9hb1wgOwor6Zi/5YWEID4gYWtlaVwgOwor54Sh5L6hID4gbXVrYVwgOwor5aC05ZCIID4gYmFhaVwgOwor57W15YOPID4gZXpvdVwgOwor54Sh5LqMID4gbXVuaVwgOwor54Sh5LqLID4gYnVqaVwgOwor6KGj57SLID4gZW1vblwgOwor57SN5bGLID4gbmF5YVwgOwor6KaL5aC0ID4gbWliYVwgOwor6Zi/5LiWID4gYXNlaVwgOwor56yR6aGUID4gZWdhb1wgOwor5o+25o+EID4geWF5dVwgOwor5Z+65ZugID4ga2lpblwgOwor57Sg5ZywID4gc29qaVwgOwor57Sg5ZugID4gc29pblwgOwor57KX5py2ID4gc29kYVwgOwor5omL6ZaTID4gdGVtYVwgOwor5Zuz55S7ID4genVnYVwgOwor56ug6a2aID4gdGFrb1wgOwor5aSc44CFID4geW95b1wgOwor5aSa44CFID4gdGF0YVwgOwor54Gr5bGLID4gaG95YVwgOwor5om56K2wID4gaGlnaVwgOwor54Cs5oi4ID4gc2V0b1wgOwor6J676JuEID4ga2VyYVwgOwor54Gr5aSrID4ga2FmdVwgOwor6ZaT5aSrID4gbWFidVwgOwor5oyB56KBID4gamlnb1wgOwor5ryU6IieID4gZW5idVwgOwor57OK5aGXID4ga290b1wgOwor57KX5biDID4gc29mdVwgOwor5ryU6ICFID4gZW5qYVwgOwor54Gr5ZmoID4ga2FraVwgOwor6JuZ6bu9ID4gYWJvdVwgOwor5ryU576pID4gZW5naVwgOwor5o6P5pG4ID4gc3VyaVwgOwor6KGM54K6ID4ga291aVwgOwor57Gg5omLID4ga290ZVwgOwor6KGM54GrID4gYW5rYVwgOwor566H566HID4ga29rb1wgOwor6KO45ammID4gcmFmdVwgOwor5Zuz5qGIID4genVhblwgOwor5Zyf5omLID4gZG90ZVwgOwor5rip6ZuFID4gb25nYVwgOwor5o+05YqpID4gZW5qb1wgOwor6J2m6J+HID4gZ2FtYVwgOwor5Zug5p6cID4gaW5nYVwgOwor6KGj5qGBID4gaWtvdVwgOwor6b2f6b2sID4gc29nb1wgOwor54Gr5LqLID4ga2FqaVwgOwor5Zu65oyBID4ga29qaVwgOwor5Zub5pmCID4geW9qaVwgOwor5Zub5pa5ID4geW9tb1wgOwor6J2M6JqqID4ga2F0b1wgOwor5Zu95bqcID4ga29mdVwgOwor5o275a2QID4gbmVqaVwgOwor5Zyw5aC0ID4gamliYVwgOwor5rer6Z2hID4gaW5iaVwgOwor5omL5769ID4gdGViYVwgOwor6Jya6KqeID4gaGlnb1wgOwor5rer6ZuoID4gaW4nJ3VcIDsKK+ijnOWKqSA+IGhvam9cIDsKK+aNqeWtkCA+IG5lamlcIDsKK+a5r+iRiSA+IHl1YmFcIDsKK+aFsOmciiA+IGlyZWlcIDsKK+Wcn+WZqCA+IGRva2lcIDsKK+icmOibmyA+IGt1bW9cIDsKK+aMieaRqSA+IGFubWFcIDsKK+iho+W4ryA+IGl0YWlcIDsKK+ijnOS9kCA+IGhvc2FcIDsKK+aOiOWPlyA+IGp1anVcIDsKK+aJk+egtCA+IGRhaGFcIDsKK+aLv+aNlSA+IGRhaG9cIDsKK+m8u+mfsyA+IGJpb25cIDsKK+Wcn+WMqiA+IGRvaGlcIDsKK+WUlumItCA+IGFyZWlcIDsKK+a8lOatpiA+IGVuYnVcIDsKK+a8lOatjCA+IGVua2FcIDsKK+WcsOS9jSA+IGNoaWlcIDsKK+enu+mghSA+IGlrb3VcIDsKK+WcqOS9jSA+IHphaWlcIDsKK+ihjeWtlyA+IGVuamlcIDsKK+WckuWFkCA+IGVuamlcIDsKK+aEm+mmrCA+IGFpYmFcIDsKK+aOiOS4jiA+IGp1eW9cIDsKK+Wbm+WbsiA+IHNoaWlcIDsKK+WbuuWMliA+IGtva2FcIDsKK+aNleWQjyA+IGhvcmlcIDsKK+aEm+mjsiA+IGFpaW5cIDsKK+WTgOmfsyA+IGFpb25cIDsKK+a1t+mmrCA+IHRvZG9cIDsKK+aEm+mhpyA+IGFpa29cIDsKK+a1t+memCA+IGhveWFcIDsKK+WbnuWQkSA+IGVrb3VcIDsKK+a4oeiLsSA+IHRvZWlcIDsKK+aIr+eUuyA+IGdpZ2FcIDsKK+aFsOisnSA+IGlzaGFcIDsKK+m7tOmbqCA+IGJhaXVcIDsKK+a8lOaKgCA+IGVuZ2lcIDsKK+iho+WGoCA+IGlrYW5cIDsKK+a8lOaIryA+IGVuZ2lcIDsKK+enu+mAgSA+IGlzb3VcIDsKK+WSjOmfsyA+IHdhb25cIDsKK+aKvOW/jSA+IG9zc3VcIDsKK+enu+i7oiA+IGl0ZW5cIDsKK+mKhemRvCA+IGRvcmFcIDsKK+aFsOiXiSA+IGlzaGFcIDsKK+aKiuaMgSA+IGhhamlcIDsKK+aEm+i8nSA+IGFpa2lcIDsKK+a5r+eFriA+IHl1bmlcIDsKK+enu+itsiA+IGlqb3VcIDsKK+aCqumsvCA+IGFra2lcIDsKK+aEj+i2oyA+IGlzaHVcIDsKK+aEm+ittyA+IGFpZ29cIDsKK+enu+ihjCA+IGlrb3VcIDsKK+WTgOipsSA+IGFpd2FcIDsKK+WTgOiotCA+IGFpc29cIDsKK+WRiemgiCA+IGdvc3VcIDsKK+mWk+OAhSA+IG1hbWFcIDsKK+WRiemfsyA+IGdvb25cIDsKK+m7hOmJmyA+IG91ZW5cIDsKK+enmOipsSA+IGhpd2FcIDsKK+a5r+awlyA+IHl1Z2VcIDsKK+ieuuWtkCA+IG5lamlcIDsKK+aEj+imiyA+IGlrZW5cIDsKK+aLh+WNsCA+IGJvaW5cIDsKK+m7hOi6qyA+IGtpbWlcIDsKK+WSjOitsCA+IHdhZ2lcIDsKK+aKvOWNsCA+IG91aW5cIDsKK+WZqOWFtyA+IGtpZ3VcIDsKK+WSjOiqniA+IHdhZ29cIDsKK+aCsumBiyA+IGhpdW5cIDsKK+m8k+iIniA+IGtvYnVcIDsKK+WQkOmcsiA+IHRvcm9cIDsKK+aBqemhpyA+IG9ua29cIDsKK+aBtembqCA+IGtlaXVcIDsKK+a1ruiPryA+IGZ1a2FcIDsKK+a1t+iLlCA+IG5vcmlcIDsKK+a1t+iKiyA+IGthaXVcIDsKK+elnumFkiA+IG1pa2lcIDsKK+a1hOihoyA+IGpvdWVcIDsKK+ays+mmrCA+IGthYmFcIDsKK+iVjum6piA+IHNvYmFcIDsKK+aKvOS4iyA+IG91a2FcIDsKK+a4oeaysyA+IHRva2FcIDsKK+m4mum1oSA+IG91bXVcIDsKK+WQiOmWkyA+IGFpbWFcIDsKK+WPs+mdoiA+IHVtZW5cIDsKK+m8u+elliA+IGJpc29cIDsKK+aCquiyqCA+IGFra2FcIDsKK+a4oeaspyA+IHRvb3VcIDsKK+enu+euoSA+IGlrYW5cIDsKK+WQpumBiyA+IGhpdW5cIDsKK+WPpOmfsyA+IGtvb25cIDsKK+WYlOWQkCA+IG91dG9cIDsKK+aCsuipsSA+IGhpd2FcIDsKK+WSjOiLsSA+IHdhZWlcIDsKK+WPpOmbhSA+IGtvZ2FcIDsKK+a7i+WRsyA+IGppbWlcIDsKK+aJtuWKqSA+IGZ1am9cIDsKK+WUlueEtiA+IGF6ZW5cIDsKK+iYh+iKsyA+IHN1b3VcIDsKK+etieS9jSA+IHRvdWlcIDsKK+iXjeikuCA+IGJvcm9cIDsKK+aCquihoyA+IGFrdWlcIDsKK+elluiqniA+IHNvZ29cIDsKK+aAqumbqCA+IGthaXVcIDsKK+a5r+WxiyA+IHl1eWFcIDsKK+WUvuajhCA+IGRha2lcIDsKK+WPs+i+uiA+IHVoZW5cIDsKK+aFiOeItiA+IGppZnVcIDsKK+WWnOWvvyA+IGtpanVcIDsKK+WPpOmDvSA+IGtvdG9cIDsKK+ayv+i3ryA+IGVucm9cIDsKK+mHjumEmSA+IHlhaGlcIDsKK+a5r+WlsyA+IHl1bmFcIDsKK+WOremboiA+IG9ucmlcIDsKK+m8u+eCjiA+IGJpZW5cIDsKK+mHjui+uiA+IG5vYmVcIDsKK+m7hOe3ryA+IGtvdWlcIDsKK+iVqui+niA+IGJ1amlcIDsKK+aBqeiqvCA+IG9uZ2lcIDsKK+epjuaenCA+IGVpa2FcIDsKK+mLreawlyA+IGVpa2lcIDsKK+WWtuWWtiA+IGVpZWlcIDsKK+azleihoyA+IGhvdWVcIDsKK+ays+ixmiA+IGZ1Z3VcIDsKK+mHjui3ryA+IG5vamlcIDsKK+a4qeW6piA+IG9uZG9cIDsKK+azleieuiA+IGhvcmFcIDsKK+iTlum6uyA+IGhpbWFcIDsKK+aJgOS7pSA+IHl1ZW5cIDsKK+WRquespiA+IGp1ZnVcIDsKK+aFiOavjSA+IGppYm9cIDsKK+WPpOiqniA+IGtvZ29cIDsKK+WWtuWIqSA+IGVpcmlcIDsKK+WPpOiomCA+IGtva2lcIDsKK+W/nOmcgCA+IG91anVcIDsKK+iWlOiWhyA+IGJhcmFcIDsKK+aIkeWIqSA+IGdhcmlcIDsKK+enu+awkSA+IGltaW5cIDsKK+WWh+WYmyA+IHJhbWFcIDsKK+aGjuaCqiA+IHpvdW9cIDsKK+epuuWwiSA+IGt1dWlcIDsKK+epjuaCnyA+IGVpZ29cIDsKK+awl+mfuyA+IGtpaW5cIDsKK+WPs+iRiSA+IHV5b3VcIDsKK+m6u+eXuiA+IG1haGlcIDsKK+WTgOatjCA+IGFpa2FcIDsKK+awl+manCA+IGtpemFcIDsKK+WPl+iYiiA+IGp1dW5cIDsKK+W+oemhlCA+IG9rYW9cIDsKK+aEm+apnyA+IGFpa2lcIDsKK+WPs+iItyA+IHVnZW5cIDsKK+m5teewvyA+IHJvYm9cIDsKK+aBqee+qSA+IG9uZ2lcIDsKK+WNgembqCA+IGp1dXVcIDsKK+WPs+iEsyA+IHVub3VcIDsKK+a4qeWSjCA+IG9ud2FcIDsKK+awuOmBoCA+IGVpZW5cIDsKK+aEmuahiCA+IGd1YW5cIDsKK+mHjuiJryA+IG5vcmFcIDsKK+W/jOmBvyA+IGtpaGlcIDsKK+iSv+mbgCA+IGFvamlcIDsKK+a3q+WppiA+IGlucHVcIDsKK+awl+mLrSA+IGtpZWlcIDsKK+aDsOawlyA+IGRha2lcIDsKK+WSjOawlyA+IHdha2lcIDsKK+iaiuW4syA+IGtheWFcIDsKK+a1t+adviA+IG1pcnVcIDsKK+aFiOaEmyA+IGppYWlcIDsKK+aFiOaCsiA+IGppaGlcIDsKK+WPpee+qSA+IGt1Z2lcIDsKK+WPpOe+qSA+IGtvZ2lcIDsKK+WSjOatjCA+IHdha2FcIDsKK+axmuihjCA+IG9rb3VcIDsKK+WRvOawlyA+IGtva2lcIDsKK+awl+mBiyA+IGtpdW5cIDsKK+iaiuWxiyA+IGtheWFcIDsKK+egtOmiqCA+IGhhZnVcIDsKK+aEm+aSqyA+IGFpYnVcIDsKK+m7hOaziSA+IHlvbWlcIDsKK+WNsOitnCA+IGlucHVcIDsKK+W/nOiotCA+IG91c29cIDsKK+W+oemFkiA+IG1pa2lcIDsKK+avjemfsyA+IGJvaW5cIDsKK+mDvembhSA+IHRvZ2FcIDsKK+m7hOarqCA+IGhhemVcIDsKK+W/jOirsSA+IGtpa2lcIDsKK+WTgOaFlSA+IGFpYm9cIDsKK+WMu+mBkyA+IGlkb3VcIDsKK+WQiOedgCA+IGFpZ2lcIDsKK+epj+WSjCA+IG9ud2FcIDsKK+epuuS9jSA+IGt1dWlcIDsKK+enmOaKgCA+IGhpZ2lcIDsKK+ellueItiA+IHNvZnVcIDsKK+aEm+aFlSA+IGFpYm9cIDsKK+W+oei6qyA+IG9ubWlcIDsKK+WQjOeVsCA+IGRvdWlcIDsKK+WPpOeogCA+IGtva2lcIDsKK+auuumZoyA+IHRhdGVcIDsKK+aFsOWVjyA+IGltb25cIDsKK+WNkeiqniA+IGhpZ29cIDsKK+WNseiZniA+IGtpZ3VcIDsKK+aEj+aAnSA+IGlzaGlcIDsKK+aCsuatjCA+IGhpa2FcIDsKK+WMuuiyuyA+IGt1aGlcIDsKK+aEj+W/lyA+IGlzaGlcIDsKK+WRhuawlyA+IGFra2VcIDsKK+mCqumtlCA+IGphbWFcIDsKK+mCqumsvCA+IGpha2lcIDsKK+mDvemEmSA+IHRvaGlcIDsKK+WMuuitsCA+IGt1Z2lcIDsKK+engeaEjyA+IHNoaWlcIDsKK+W+kuiyuyA+IHRvaGlcIDsKK+aFsOWKtCA+IGlyb3VcIDsKK+egtOmCqiA+IGhhamFcIDsKK+W+gOi3ryA+IG91cm9cIDsKK+a3q+S6iyA+IGluamlcIDsKK+WPpOeUuyA+IGtvZ2FcIDsKK+mCqumjmyA+IGphaGlcIDsKK+elluavjSA+IHNvYm9cIDsKK+W+oeihoyA+IGd5b2lcIDsKK+mLreWIqSA+IGVpcmlcIDsKK+a0vuaJiyA+IGhhZGVcIDsKK+aCquaenCA+IGFra2FcIDsKK+ayueeFmSA+IHl1ZW5cIDsKK+W8pemZgCA+IG1pZGFcIDsKK+mHjueMvyA+IHlhZW5cIDsKK+WPl+eQhiA+IGp1cmlcIDsKK+WRvOW/nCA+IGtvb3VcIDsKK+enmOWlpSA+IGhpb3VcIDsKK+aAqueVsCA+IGthaWlcIDsKK+mDveitsCA+IHRvZ2lcIDsKK+aEj+WkliA+IGlnYWlcIDsKK+avlOirrSA+IGhpeXVcIDsKK+mBuumquCA+IGlnYWlcIDsKK+axmuepoiA+IG93YWlcIDsKK+aEmuWbsyA+IGd1enVcIDsKK+W+geihoyA+IHNlaWlcIDsKK+aDheaEjyA+IGpvdWlcIDsKK+a1geW4gyA+IHJ1ZnVcIDsKK+avjeiqniA+IGJvZ29cIDsKK+mBuummmSA+IGlrb3VcIDsKK+mHjueBqyA+IG5vYmlcIDsKK+WSjOWtlyA+IHdhamlcIDsKK+WQiOatkyA+IG5lbXVcIDsKK+enu+WLlSA+IGlkb3VcIDsKK+WNsOe2rCA+IGluanVcIDsKK+WKoOmZpCA+IGtham9cIDsKK+W+oeiMtiA+IG9jaGFcIDsKK+aEj+WariA+IGlrb3VcIDsKK+mBuumiqCA+IGlmdXVcIDsKK+avgOiqiSA+IGtpeW9cIDsKK+m6u+W4gyA+IG1hZnVcIDsKK+m8u+S4iyA+IGJpa2FcIDsKK+aCquaEnyA+IG9rYW5cIDsKK+aCquaEjyA+IGFrdWlcIDsKK+aEj+WQkSA+IGlrb3VcIDsKK+enu+S9jyA+IGlqdXVcIDsKK+iZmuS9jSA+IGt5b2lcIDsKK+WMu+iAhSA+IGlzaGFcIDsKK+aBteaWuSA+IGVob3VcIDsKK+iZmuS7riA+IGtva2VcIDsKK+enu+S5lyA+IGlqb3VcIDsKK+aEm+WFkCA+IGFpamlcIDsKK+WKoOmHjCA+IGthcmlcIDsKK+mHjuasoSA+IHlhamlcIDsKK+aymeaxsCA+IHNhdGFcIDsKK+enmOWEgCA+IGhpZ2lcIDsKK+WKqei+niA+IGpvamlcIDsKK+atpumBiyA+IGJ1dW5cIDsKK+asp+mcsiA+IG91cm9cIDsKK+W+oeewviA+IG1pc3VcIDsKK+aCquWvkiA+IG9rYW5cIDsKK+WNseeWkSA+IGtpZ2lcIDsKK+WRs+WZjCA+IG1pc29cIDsKK+WPs+aWuSA+IHVob3VcIDsKK+WNsOeUuyA+IGluZ2FcIDsKK+W7iOmWgCA+IGFtb2lcIDsKK+enmOS6iyA+IGhpamlcIDsKK+axmueCuSA+IG90ZW5cIDsKK+WNsOeSvSA+IGluamlcIDsKK+avm+e+vSA+IGtlYmFcIDsKK+emjeWboCA+IGthaW5cIDsKK+mHjuaariA+IHlhYm9cIDsKK+WRteWRtSA+IGtha2FcIDsKK+WQjOaEjyA+IGRvdWlcIDsKK+aAkuawlyA+IGRva2lcIDsKK+WQiOaEjyA+IGdvdWlcIDsKK+W+oeekvCA+IG9yZWlcIDsKK+azouW4gyA+IGhhYnVcIDsKK+W+oeeilyA+IG93YW5cIDsKK+aBo+aEjyA+IHNoaWlcIDsKK+iRteiKsSA+IGtpa2FcIDsKK+WKoOittyA+IGthZ29cIDsKK+mBuui0iCA+IGl6b3VcIDsKK+axmuazpSA+IG9kZWlcIDsKK+mBuuizoiA+IGlrZW5cIDsKK+ejgeawlyA+IGppa2lcIDsKK+mBuuiyoSA+IGl6YWlcIDsKK+efs+iTtCA+IGFvc2FcIDsKK+W+oeebhiA+IG9ib25cIDsKK+aCsuWWnCA+IGhpa2lcIDsKK+axmuawtCA+IG9zdWlcIDsKK+WPjeaVhSA+IGhvZ29cIDsKK+W8iuihoyA+IGhlaWlcIDsKK+aCsuWTgCA+IGhpYWlcIDsKK+mBoOi3ryA+IGVucm9cIDsKK+WMu+eVjCA+IGlrYWlcIDsKK+mBuuiqoSA+IGlrYWlcIDsKK+WMu+eUqCA+IGl5b3VcIDsKK+mBuuiokyA+IGlrdW5cIDsKK+WNl+eEoSA+IG5hbXVcIDsKK+W+geefoiA+IHNveWFcIDsKK+i/vemiqCA+IG9pdGVcIDsKK+aCquWMliA+IGFra2FcIDsKK+awl+eCjiA+IGtpZW5cIDsKK+egkue0oCA+IGhpc29cIDsKK+aAquaIkSA+IGtlZ2FcIDsKK+WPs+WyuCA+IHVnYW5cIDsKK+m6vuS4iyA+IGtpa2FcIDsKK+awuOawuCA+IGVpZWlcIDsKK+axmuafkyA+IG9zZW5cIDsKK+aBqeWogSA+IG9uJydpXCA7CivnpYflnJIgPiBnaW9uXCA7Civlj6TluIwgPiBrb2tpXCA7Civojbfpp4QgPiBuaWRhXCA7CivljbHmqZ8gPiBraWtpXCA7CivmsJfmuKkgPiBraW9uXCA7CivlvpLniL4gPiB0b2ppXCA7CivmgJ3mg58gPiBzaGlpXCA7Civlvq7muKkgPiBiaW9uXCA7CivpgY7oqqQgPiBrYWdvXCA7Civlj6TlrZcgPiBrb2ppXCA7CivlkIjlm7MgPiBhaXp1XCA7CivnoLTnk5wgPiBoYWthXCA7CivpgbrokZcgPiBpY2hvXCA7Civlub7ph40gPiBpa3VlXCA7CivmsZrmkI0gPiBvc29uXCA7CivlkI/lk6EgPiByaWluXCA7Civljq3mgqogPiBlbicnb1wgOwor5Y+v5aGRID4ga2Fzb1wgOwor5Y675bm0ID4ga296b1wgOwor6YG66I2JID4gaXNvdVwgOwor6I6r6L+mID4gYmFrYVwgOwor6YG66IqzID4gaWhvdVwgOwor5ZCN5Yy7ID4gbWVpaVwgOwor5Y6a5oSPID4ga291aVwgOwor5ZCP5YuZID4gcmltdVwgOwor5q2M6IieID4ga2FidVwgOwor6L+C6YGgID4gdWVuXCA7Civlvq7mhI8gPiBiaWlcIDsKK+WPmeS9jSA+IGpvaVwgOwor6L+C6LevID4gdXJvXCA7CivlvpfmiYsgPiBldGVcIDsKK+awl+WuhyA+IGtpdVwgOwor5beu6YGVID4gc2FpXCA7CivljLvlrrYgPiBpa2FcIDsKK+WFq+mHjSA+IHlhZVwgOwor5Yy75ZOhID4gaWluXCA7Civpgbrmo4QgPiBpa2lcIDsKK+WMu+WLmSA+IGltdVwgOwor5Yy75LqLID4gaWppXCA7CivpgbrmhJsgPiBpYWlcIDsKK+mBuuW9sSA+IGllaVwgOwor6YOo5L2NID4gYnVpXCA7CivmrablqIEgPiBidWlcIDsKK+mBuuWtpCA+IGlrb1wgOwor5beu55WwID4gc2FpXCA7CivnlbDpn7MgPiBpb25cIDsKK+mBuuWFkCA+IGlqaVwgOwor6YGV5ZKMID4gaXdhXCA7CivpgbrkuosgPiBpamlcIDsKK+W4jOaciSA+IGtldVwgOwor6L+C5oSaID4gdWd1XCA7CivmrKfkupwgPiBvdWFcIDsKK+asoeS9jSA+IGppaVwgOwor5qyh5LqcID4gamlhXCA7CivnnInlrocgPiBiaXVcIDsKK+i+nuaEjyA+IGppaVwgOwor55Ww6K2wID4gaWdpXCA7Civovp7lvZkgPiBqaWlcIDsKK+WxhemWkyA+IGltYVwgOwor55Ww576pID4gaWdpXCA7CivluLDkvp0gPiBraWVcIDsKK+mmmemtmiA+IGF5dVwgOwor5qmf5L2NID4ga2lpXCA7CivkvLzpnZ4gPiBlc2VcIDsKK+Wwvue+vSA+IG9oYVwgOwor55Ww54i2ID4gaWZ1XCA7CivkvJrpmbAgPiBlaW5cIDsKK+S9jeiomCA+IGlraVwgOwor55Ww5q+NID4gaWJvXCA7CivkupzpursgPiBhbWFcIDsKK+S7pemBoCA+IGllblwgOwor5LyK6KqeID4gaWdvXCA7Civoh6rmhbAgPiBqaWlcIDsKK+WuieiKuCA+IGFraVwgOwor5Lqc6YmbID4gYWVuXCA7CivnlLLmlpAgPiBrYWlcIDsKK+eVj+aHvCA+IGlrdVwgOwor55WP5oCWID4gaWZ1XCA7CivlsL7moLkgPiBvbmVcIDsKK+eUu+aEjyA+IGdhaVwgOwor5qSF5a2QID4gaXN1XCA7CivnlbDlm7MgPiBpdG9cIDsKK+eVsOWMliA+IGlrYVwgOwor6IOD54KOID4gaWVuXCA7CivkvY3mrKEgPiBpamlcIDsKK+S+neaAmSA+IGVrb1wgOwor5Lqc56eRID4gYWthXCA7CivkvZnmhI8gPiB5b2lcIDsKK+S7ruaciSA+IGtldVwgOwor5L6N5Yy7ID4gamlpXCA7CivkupHngrogPiB1bmlcIDsKK+S+neS8sCA+IGVrb1wgOwor5Lqc5qynID4gYW91XCA7Civku6XlvowgPiBpZ29cIDsKK+S7peW+gCA+IGlvdVwgOwor5LuW5oSPID4gdGFpXCA7Civos4DmhI8gPiBnYWlcIDsKK+acieeEoSA+IHVtdVwgOwor6LK05oSPID4ga2lpXCA7CivkvJrljq0gPiBlZW5cIDsKK+aghOS9jSA+IGVpaVwgOwor5LqV5oi4ID4gaWRvXCA7CivpnZ7pgZUgPiBoaWlcIDsKK+WknOmbqCA+IHlhdVwgOwor5aSa6ZuoID4gdGF1XCA7CivkuozlsIkgPiBuaWlcIDsKK+mbqOmcsiA+IHVyb1wgOwor5Lul5LiLID4gaWthXCA7CivloqjprZogPiBpa2FcIDsKK+S4jeaEjyA+IGZ1aVwgOwor5LiL5oSPID4ga2FpXCA7CivkuozkvY0gPiBuaWlcIDsKK+WogeatpiA+IGlidVwgOwor5pyJ5Y2mID4gdWtlXCA7CivnjovkvY0gPiBvdWlcIDsKK+e+heWuhyA+IHJhb1wgOwor57695YyWID4gdWthXCA7CivntbXppqwgPiBlbWFcIDsKK+WnlOajhCA+IGlraVwgOwor5aWH55WwID4ga2lpXCA7CivkuIvkvY0gPiBrYWlcIDsKK+mYv+irmyA+IGF5dVwgOwor5aiB5YSAID4gaWdpXCA7Civlo4rnlr0gPiBlc29cIDsKK+eDj+iziiA+IGlrYVwgOwor5aeU5ZOhID4gaWluXCA7Civpm6jmsJcgPiB1a2lcIDsKK+WnlOS7mCA+IGlmdVwgOwor6Zuo5pyfID4gdWtpXCA7Civoqp7mhI8gPiBnb2lcIDsKK+iqnuW9mSA+IGdvaVwgOwor5aWz5Yy7ID4gam9pXCA7CivlpoLkvZUgPiBkb3VcIDsKK+mbqOW+jCA+IHVnb1wgOwor5pWF5oSPID4ga29pXCA7CivnhKHngrogPiBtdWlcIDsKK+ijnOmBuiA+IGhvaVwgOwor6Zuo5a2jID4gdWtpXCA7Civnt6/luqYgPiBpZG9cIDsKK+mYv+avlCA+IGFiaVwgOwor57at5oyBID4gaWppXCA7Civpm7LkuLkgPiB1bmlcIDsKK+eEoeaEjyA+IG11aVwgOwor6Zi/5a2XID4gYWppXCA7CivpmL/lqr0gPiBhbWFcIDsKK+eBsOaxgSA+IGFrdVwgOwor57W15ZuzID4gZXp1XCA7CivopovlvpcgPiBtaWVcIDsKK+mYv+WQvSA+IGF1blwgOwor54Sh5L2NID4gbXVpXCA7Civmu4vpm6ggPiBqaXVcIDsKK+WbsueigSA+IGlnb1wgOwor57SG5L2ZID4gdXlvXCA7CivooaPmnrYgPiBpa2FcIDsKK+aFiOmbqCA+IGppdVwgOwor5rW36auqID4gb2dvXCA7CivmhI/ppqwgPiBpYmFcIDsKK+Wbs+S8miA+IHp1ZVwgOwor5omA54K6ID4gc2VpXCA7CivmgqrpnLIgPiBvcm9cIDsKK+a1t+iDhiA+IHVuaVwgOwor5rW36ICBID4gZWJpXCA7CivmiJHmhI8gPiBnYWlcIDsKK+m6u+ihoyA+IG1haVwgOwor5oSP576pID4gaWdpXCA7CivonablpLcgPiBlem9cIDsKK+ehq+m7hCA+IGlvdVwgOwor5oWw5pKrID4gaWJ1XCA7Civlvq7pm6ggPiBiaXVcIDsKK+aEj+awlyA+IGlraVwgOwor6Yut5oSPID4gZWlpXCA7CivnqaLlpJogPiBldGFcIDsKK+WMu+mZoiA+IGlpblwgOwor56mi5ZyfID4gZWRvXCA7Civlj7PnuIEgPiB1ZW5cIDsKK+aFsOWuiSA+IGlhblwgOwor5Y2B6YeNID4gdG9lXCA7CivmhJrmhI8gPiBndWlcIDsKK+a1t+WlsyA+IGFtYVwgOwor5oSP5ZywID4gaWppXCA7CivmhI/lm7MgPiBpdG9cIDsKK+WPs+a0viA+IHVoYVwgOwor5oSP5ZGzID4gaW1pXCA7CivokI7pnaEgPiBpYmlcIDsKK+a1t+S6uiA+IGFtYVwgOwor5Yy756eRID4gaWthXCA7CivlubTprZogPiBheXVcIDsKK+WPpeaEjyA+IGt1aVwgOwor5Y+k5oSPID4ga29pXCA7CivpgbroqaAgPiBpZWlcIDsKK+ekuuWogSA+IGppaVwgOwor5rGf5oi4ID4gZWRvXCA7CivkvIrkupUgPiBpaVwgOwor5Zea5ZG8ID4gYWFcIDsKK+i7liA+IHRzdW11Z2lrdXJ1bWFcIDsKK+ezjiA+IHNlbmNoaW1laXRvcnVcIDsKK+eyqCA+IGhla3V0b21lZXRvcnVcIDsKK+eIqyA+IHRzdW1la2FubXVyaVwgOwor5b+EID4gcml0c3VzaGluYmVuXCA7Civlv5cgPiBrb2tvcm96YXNoaVwgOwor5pS/ID4gbWF0c3VyaWdvdG9cIDsKK+m2jiA+IGtpa3VpdGFkYWtpXCA7Civnso0gPiBtaXJpbWVpdG9ydVwgOwor57KBID4ga2lyb21laXRvcnVcIDsKK+extSA+IGRla2FtZWV0b3J1XCA7Civnq7AgPiBzZW5jaGlyaXR0b1wgOwor56uhID4gaGVrdXRvcml0dG9cIDsKK+erkyA+IG1pcmlyaXR0b3J1XCA7Civnq48gPiBraXJvcml0dG9ydVwgOwor55OwID4gZGVzaGlndXJhbXVcIDsKK+W3sSA+IHRzdWNoaW5vdG9cIDsKK+WxoSA+IHNoaWJhc2hpYmFcIDsKK+isgCA+IGhha2FyaWdvdG9cIDsKK+eGnyA+IHRzdWt1ZHp1a3VcIDsKK+WYtCA+IGt1Y2hpYmFzaGlcIDsKK+OAhSA+IGt1cmlrYWVzaGlcIDsKK+mFmyA+IHNha2Vub21vdG9cIDsKK+iplCA+IG1pa290b25vcmlcIDsKK+idnyA+IGhhcmluZXp1bWlcIDsKK+iQmSA+IGt1dGFiaXJlcnVcIDsKK+erlSA+IGRlc2hpcml0dG9cIDsKK+eUhSA+IHNlbmNoaWd1cmFcIDsKK+eTuCA+IGhla3V0b2d1cmFcIDsKK+eTsSA+IG1pcmlndXJhbXVcIDsKK+eTqSA+IGtpcm9ndXJhbXVcIDsKK+eTpyA+IGRla2FndXJhbXVcIDsKK+aThSA+IGhvc2hpaW1hbWFcIDsKK+WLhSA+IG1pa290b25vcmlcIDsKK+WAqSA+IHRzdXJhdHN1cmFcIDsKK+W5uyA+IG1hYm9yb3NoaVwgOwor5bGNID4gc2hpa2FiYW5lXCA7CivlraQgPiBtaW5hc2hpZ29cIDsKK+eMqiA+IGlub3NoaXNoaVwgOwor5ZSHID4ga3VjaGliaXJ1XCA7CivmqqMgPiBob2Jhc2hpcmFcIDsKK+apmCA+IHRhY2hpYmFuYVwgOwor5YW1ID4gdHN1d2Ftb25vXCA7CivpioAgPiBzaGlyb2dhbmVcIDsKK+mCqiA+IHlva29zaGltYVwgOwor6a+QID4gc3ViYXNoaXJpXCA7CivprpcgPiBrb25vc2hpcm9cIDsKK+mYnSA+IGtvemF0b2hlblwgOwor6LidID4ga3VydWJ1c2hpXCA7Civoo4MgPiBrYW1pc2hpbW9cIDsKK+ihpCA+IGtvcm9tb2hlblwgOwor56uNID4gZGVrYXJpdHRvXCA7Civniq0gPiBrZW1vbm9oZW5cIDsKK+aktCA+IHRvZG9tYXRzdVwgOwor5bWZID4geWFtYXNoaW5hXCA7CivlsLggPiBzaGlrYWJhbmVcIDsKK+WHqSA+IGtvZ2FyYXNoaVwgOwor5LqlID4gaW5vc2hpc2hpXCA7CivlvLEgPiBuYXlvbmF5b1wgOwor6LmyID4gdHN1a3ViYWlcIDsKK+WnkSA+IHNodXV0b21lXCA7CivloYogPiBrYXRhbWFyaVwgOwor5aCkID4gdHN1dHN1bWlcIDsKK+m8kyA+IHRzdWR6dW1pXCA7CivmupAgPiBtaW5hbW90b1wgOwor6baPID4gbml3YXRvcmlcIDsKK+WPoiA+IGt1c2FtdXJhXCA7CivljbAgPiBzaGlydXNoaVwgOwor6a2CID4gdGFtYXNoaWlcIDsKK+iFuCA+IGhhcmF3YXRhXCA7Civmna8gPiBzYWthenVraVwgOwor6Zu3ID4ga2FtaW5hcmlcIDsKK+mbgSA+IGthcmlnYW5lXCA7CivmmoEgPiBha2F0c3VraVwgOwor57SrID4gbXVyYXNha2lcIDsKK+aOjCA+IHRlbm9oaXJhXCA7CivmipEgPiBzb21vc29tb1wgOwor5oeQID4gZnV0b2tvcm9cIDsKK+m7myA+IG1heXV6dW1pXCA7CivpsakgPiBoYXRhaGF0YVwgOwor6bCwID4gaGF0YWhhdGFcIDsKK+mvkSA+IGthenVub2tvXCA7CivprYEgPiBzYWtpZ2FrZVwgOwor6ayjID4gdGF0ZWdhbWlcIDsKK+mkniA+IGhhbmFtdWtlXCA7CivpoJEgPiBrYXRha3VuYVwgOwor6Zq8ID4gaGF5YWJ1c2FcIDsKK+mZtSA+IG1pc2FzYWdpXCA7CivploogPiB0c3VrYWVydVwgOwor6Yu4ID4gbm9rb2dpcmlcIDsKK+i6viA+IHNoaXRzdWtlXCA7Civoq7ogPiBrb3Rvd2F6YVwgOwor6KSMID4gZnVuZG9zaGlcIDsKK+ibpCA+IGhhbWFndXJpXCA7CivokpwgPiBuaW4nJ25pa3VcIDsKK+iBviA+IG1pbWlzaGlpXCA7CivntrQgPiB0c3VkenVyaVwgOwor56+BID4gdGFrYW11cmFcIDsKK+etjSA+IHRha2Vub2tvXCA7CivnopEgPiBpc2hpYnVtaVwgOwor55m4ID4gbWl6dW5vdG9cIDsKK+a8oyA+IHNhemFuYW1pXCA7CivmpaAgPiBrdXN1bm9raVwgOwor5berID4ga2FuJyduYWdpXCA7Civlr78gPiBrb3RvYnVraVwgOwor5ZyVID4gdG9zaG9rYW5cIDsKK+W9oiA+IGthdGFjaGlcIDsKK+i9jSA+IHdhZGFjaGlcIDsKK+W3tyA+IGNoaW1hdGFcIDsKK+i3oyA+IGhhZGFzaGlcIDsKK+i2oyA+IG9tb211a2lcIDsKK+WxgCA+IHRzdWJvbmVcIDsKK+WvpyA+IG11c2hpcm9cIDsKK+eNuiA+IGthd2F1c29cIDsKK+eLkCA+IGtpdHN1bmVcIDsKK+WrgiA+IGFuaXlvbWVcIDsKK+ipsSA+IGhhbmFzaGlcIDsKK+eHlSA+IHRzdWJhbWVcIDsKK+a7tCA+IHNoaXp1a3VcIDsKK+a5liA+IG1penV1bWlcIDsKK+WJoyA+IHRzdXJ1Z2lcIDsKK+WHnSA+IHNoaWtvcmlcIDsKK+WGoCA+IGthbm11cmlcIDsKK+akvyA+IHRzdWJha2lcIDsKK+ainyA+IGZ1a3Vyb3VcIDsKK+mggiA+IGl0YWRha2lcIDsKK+afsSA+IGhhc2hpcmFcIDsKK+S/jiA+IG1hbmFpdGFcIDsKK+aelyA+IGhheWFzaGlcIDsKK+S+jSA+IHNhbXVyYWlcIDsKK+e+iiA+IGhpdHN1amlcIDsKK+adsSA+IGhpZ2FzaGlcIDsKK+aYlCA+IG11a2FzaGlcIDsKK+e1jCA+IHRhdGVpdG9cIDsKK+ettSA+IG11c2hpcm9cIDsKK+mMpiA+IG5pc2hpa2lcIDsKK+engSA+IHdhdGFzaGlcIDsKK+elrSA+IG1hdHN1cmlcIDsKK+ekviA+IHlhc2hpcm9cIDsKK+eiuiA+IHRhc2hpa2FcIDsKK+mCuCA+IHlhc2hpa2lcIDsKK+m9siA+IG11c2hpYmFcIDsKK+m7pSA+IGlyZXp1bWlcIDsKK+m2qyA+IHRzdWd1bWlcIDsKK+m1pCA+IGlrYXJ1Z2FcIDsKK+m1hiA+IGNoaWRvcmlcIDsKK+mwmCA+IG11cm9hamlcIDsKK+mvsyA+IHN1a2Vzb3VcIDsKK+msmCA+IGthdHN1cmFcIDsKK+mbqyA+IHNoaXp1a3VcIDsKK+mOuSA+IGthc3VnYWlcIDsKK+mLqSA+IGtpc3Nha2lcIDsKK+mLkiA+IGtpc3Nha2lcIDsKK+mKryA+IGthc3VnYWlcIDsKK+i5hCA+IGhpZHp1bWVcIDsKK+isrCA+IGF5YW1hcmlcIDsKK+iqvCA+IHlvc2hpbWlcIDsKK+iqriA+IHlhc2FzaGlcIDsKK+ilhSA+IGNoaWhheWFcIDsKK+igjiA+IHV3YWJhbWlcIDsKK+idriA+IG1hbXVzaGlcIDsKK+ichiA+IHNoaWppbWlcIDsKK+iZsSA+IHNoaXJhbWlcIDsKK+iYsCA+IGthdHN1cmFcIDsKK+iVviA+IHRzdWJvbWlcIDsKK+iThiA+IG11c2hpcm9cIDsKK+iJgCA+IGhhc2hpa2VcIDsKK+iBoiA+IHNoaWthdG9cIDsKK+e/vCA+IHRzdWJhc2FcIDsKK+exoSA+IHNoaW5zaGlcIDsKK+ekqyA+IHRzdWJ1dGVcIDsKK+ekjiA+IGlzaGl6dWVcIDsKK+edqyA+IG1hdHN1Z2VcIDsKK+eUpiA+IHlvbWlnYWVcIDsKK+eJnCA+IHVzaGloZW5cIDsKK+avriA+IG11c2hpcnVcIDsKK+avnyA+IG11c2hpcnVcIDsKK+alvyA+IGthdHN1cmFcIDsKK+ajlyA+IG5hdHN1bWVcIDsKK+aiuyA+IHNoaWtpbWlcIDsKK+afiiA+IGhpaXJhZ2lcIDsKK+abmSA+IGFrZWJvbm9cIDsKK+aZkiA+IHNhcmFzaGlcIDsKK+aXgSA+IHRzdWt1cmlcIDsKK+aMmCA+IG11c2hpcnVcIDsKK+aLsyA+IGtvYnVzaGlcIDsKK+aAuiA+IGtvcmFlcnVcIDsKK+W+pCA+IHRha2VzaGlcIDsKK+W3vSA+IHRhdHN1bWlcIDsKK+WjrCA+IG1penVub2VcIDsKK+WajyA+IGt1c2hhbWlcIDsKK+WZuiA+IGhhbmFzaGlcIDsKK+S/pCA+IG9tb2thZ2VcIDsKK+S4vCA+IGRvbmJ1cmlcIDsKK+OAgyA+IG9uYWppa3VcIDsKK+eevCA+IG1hYnV0YVwgOwor6L63ID4gc3ViZXJ1XCA7CivnnrMgPiBoaXRvbWlcIDsKK+i8qSA+IHlha2FyYVwgOwor55uyID4gbWVzaGlpXCA7Civou4ogPiBrdXJ1bWFcIDsKK+W6jyA+IHRzdWlkZVwgOwor55qGID4gbWluJyduYVwgOwor5bmVID4gdG9iYXJpXCA7CivluLMgPiB0b2JhcmlcIDsKK+W4nSA+IG1pa2Fkb1wgOwor5bemID4gaGlkYXJpXCA7Civnlr4gPiBzaGl0c3VcIDsKK+eVsyA+IHRhdGFtaVwgOwor55WgID4gaGF0YWtlXCA7CivnlZEgPiBoYXRha2VcIDsKK+eTpiA+IGthd2FyYVwgOwor5bKsID4gbWlzYWtpXCA7CivlsYogPiB0b2Rva2VcIDsKK+WwiiA+IG1pa290b1wgOwor5a6dID4gdGFrYXJhXCA7CivnjaMgPiBrZW1vbm9cIDsKK+eLvCA+IG9va2FtaVwgOwor54usID4gZG9pdHN1XCA7Civlq4kgPiBzaGl0c3VcIDsKK+iqoCA+IG1ha290b1wgOwor6Ki8ID4gYWthc2hpXCA7CivniLYgPiBjaGljaGlcIDsKK+iomyA+IG5hbWFyaVwgOwor5aiYID4gbXVzdW1lXCA7Civlp78gPiBzdWdhdGFcIDsKK+WmviA+IHdhcmF3YVwgOwor5aa5ID4gaW1vdXRvXCA7CivopoEgPiBrYW5hbWVcIDsKK+iltyA+IHRhc3VraVwgOwor54WZID4ga2VtdXJpXCA7CivopZYgPiBmdXN1bWFcIDsKK+WksSA+IHNoaXRzdVwgOwor6KO4ID4gaGFkYWthXCA7CivoorQgPiBoYWthbWFcIDsKK+iiiyA+IGZ1a3Vyb1wgOwor6KGjID4ga29yb21vXCA7Civln7cgPiBzaGl0c3VcIDsKK+a/lSA+IHNoaXRzdVwgOwor6J+LID4gc2hpdHN1XCA7Civln4MgPiBob2tvcmlcIDsKK+ifgCA+IHNodXRzdVwgOwor6bysID4gaXRhY2hpXCA7CivpvKAgPiBuZXp1bWlcIDsKK+WcnyA+IHRzdWNoaVwgOwor5ryGID4gdXJ1c2hpXCA7Civom7kgPiBzYW5hZ2lcIDsKK+ibmSA+IGthd2F6dVwgOwor5rm/ID4gc2hpdHN1XCA7CivlmaggPiB1dHN1d2FcIDsKK+a4ryA+IG1pbmF0b1wgOwor6JasID4ga3VzdXJpXCA7CivolqogPiB0YWtpZ2lcIDsKK+a2mSA+IG5hbWlkYVwgOwor6JaHID4gemVubWFpXCA7CivoloQgPiBzdXN1a2lcIDsKK+m0iSA+IGthcmFzdVwgOwor5Y+xID4gc2hpdHN1XCA7CivljqggPiBrdXJpeWFcIDsKK+WNuCA+IG9yb3NoaVwgOwor5Y21ID4gdGFtYWdvXCA7CivmraogPiBpYml0c3VcIDsKK+mtmiA+IHNha2FuYVwgOwor5Y2XID4gbWluYW1pXCA7CivljKAgPiB0YWt1bWlcIDsKK+aruyA+IHNha3VyYVwgOwor6Iu6ID4gaWNoaWdvXCA7Civli6IgPiBoYXp1bWlcIDsKK+aqnCA+IGhpbm9raVwgOwor6IiFID4gc2h1dXRvXCA7CivmpoogPiBzYWtha2lcIDsKK+WFiSA+IGhpa2FyaVwgOwor6aSoID4geWFrYXRhXCA7CivogrQgPiBzYWthbmFcIDsKK+ahnCA+IHNha3VyYVwgOwor5YCZID4gc291cm91XCA7Civpn78gPiBoaWJpa2lcIDsKK+afsyA+IHlhbmFnaVwgOwor5L+lID4ga3VydW1hXCA7Civkv6EgPiBtYWtvdG9cIDsKK+S/hCA+IG5pd2FrYVwgOwor5L+CID4ga2FrYXJpXCA7Civkvr8gPiB5b3N1Z2FcIDsKK+aelSA+IG1ha3VyYVwgOwor5py6ID4gdHN1a3VlXCA7Civku48gPiBob3Rva2VcIDsKK+abhyA+IGt1bW9yaVwgOwor6ZuAID4gc3V6dW1lXCA7CivkuqwgPiBtaXlha29cIDsKK+maoyA+IHRvbmFyaVwgOwor5LmzID4gY2hpY2hpXCA7CivkuZkgPiBraW5vdG9cIDsKK+S5jSA+IG5hZ2FyYVwgOwor5LiHID4geW9yb3p1XCA7CivkuIMgPiBzaGljaGlcIDsKK+e4gSA+IHlvc3VnYVwgOwor5LiBID4gaGlub3RvXCA7Civnt5EgPiBtaWRvcmlcIDsKK+e1oyA+IGthc3VyaVwgOwor57WGID4ga2l6dW5hXCA7CivnsL4gPiBzdWRhcmVcIDsKK+mPoSA+IGthZ2FtaVwgOwor6Y6WID4ga3VzYXJpXCA7CivnrZIgPiB0c3V0c3VcIDsKK+aNjCA+IHNhYmFraVwgOwor6Yu8ID4gaGFnYW5lXCA7Civnq6UgPiB3YXJhYmVcIDsKK+mLjyA+IGhhc2FtaVwgOwor6YqDID4gdHN1dHN1XCA7CivpiZsgPiBuYW1hcmlcIDsKK+aJiSA+IHRvYmlyYVwgOwor5omAID4gdG9rb3JvXCA7Civpg70gPiBtaXlha29cIDsKK+aCiSA+IHNoaXRzdVwgOwor6b2mID4gaGFndWtpXCA7CivpvIggPiBzdXBwb25cIDsKK+m7nCA+IGNodXRzdVwgOwor6bqpID4gZnVzdW1hXCA7CivpupMgPiBmdW1vdG9cIDsKK+m1pSA+IGtha2VzdVwgOwor6bSsID4gdWd1aXN1XCA7CivptI4gPiBrYW1vbWVcIDsKK+mxuCA+IHN1enVraVwgOwor6bGwID4gc2hpaXJhXCA7CivpsaogPiBzaGlpcmFcIDsKK+mwuSA+IGthdHN1b1wgOwor6bCvID4gaXdhc2hpXCA7CivpsK4gPiBpd2FzaGlcIDsKK+mwmiA+IGhhcmFrYVwgOwor6bCKID4gbmlzaGluXCA7CivpsIYgPiBzYXdhcmFcIDsKK+mvsSA+IHNoYWNoaVwgOwor6a+wID4gbmFtYXp1XCA7Civpr6ggPiBrdWppcmFcIDsKK+mvoyA+IHN1cnVtZVwgOwor6a6qID4gbWFndXJvXCA7CivprpYgPiBrYWppa2FcIDsKK+mugyA+IGhpcmFtZVwgOwor6a24ID4gbmFtYXp1XCA7CivpqK0gPiBzaGl0c3VcIDsKK+miqiA+IG9yb3NoaVwgOwor6Z6QID4ga29oYXplXCA7CivpnJ4gPiBrYXN1bWlcIDsKK+mcmSA+IG1pem9yZVwgOwor6ZubID4gaGl5b2tvXCA7CivpmrIgPiBzaGl0c3VcIDsKK+masCA+IHNoaXRzdVwgOwor6ZGiID4geWFzdXJpXCA7CivpkZUgPiBzaGl0c3VcIDsKK+mOuiA+IGhhYmFraVwgOwor6Yy6ID4ga2F6YXJpXCA7Civpio0gPiBjaGl0c3VcIDsKK+mKiiA+IHNodXRzdVwgOwor6YmlID4gc2h1dHN1XCA7CivpiYsgPiBrYW4nJ25hXCA7CivpiKggPiBoYWJha2lcIDsKK+mGqiA+IG1vcm9taVwgOwor6YOFID4gc2hpdHN1XCA7CivpgZYgPiBhcHBhcmVcIDsKK+i/miA+IHRvdGVtb1wgOwor6LuIID4geWFnYXRlXCA7Civou4UgPiB5YWdhdGVcIDsKK+i6uyA+IHV0c3VrZVwgOwor6LquID4gc2VnYXJlXCA7CivouLUgPiBrYWthdG9cIDsKK+iziSA+IHNodXRzdVwgOwor6LKtID4gc2hpdHN1XCA7CivosZEgPiBjaGl0c3VcIDsKK+iogSA+IGdvbmJlblwgOwor6KKgID4gY2hpdHN1XCA7Civoop8gPiBjaGl0c3VcIDsKK+ihviA+IGZ1c3VtYVwgOwor6KCNID4gc2Fzb3JpXCA7Civon4QgPiBjaGl0c3VcIDsKK+idqCA+IHNoaXRzdVwgOwor6JuNID4gaG90YXJ1XCA7CivolrogPiBuYXp1bmFcIDsKK+iVqCA+IHdhcmFiaVwgOwor6JS2ID4gc29ub2tvXCA7Civok6wgPiB5b21vZ2lcIDsKK+iSuiA+IHNoaXRzdVwgOwor6JKFID4gc3VrdW1vXCA7CivokoEgPiBzaHV0c3VcIDsKK+iOqCA+IHRhYmFrb1wgOwor6Iy4ID4ga2lub2tvXCA7CivohqMgPiBjaGl0c3VcIDsKK+iGoCA+IG5pa2F3YVwgOwor6IWfID4gY2hpdHN1XCA7CivnuoMgPiBrYXN1cmlcIDsKK+e4hSA+IG9kb3NoaVwgOwor57eVID4ga2FzdXJpXCA7CivntYAgPiBjaHV0c3VcIDsKK+ezmCA+IHN1a3Vtb1wgOwor57OSID4gaG9zaGlpXCA7Civnsq0gPiBzdWt1bW9cIDsKK+esgiA+IHV0c3Vib1wgOwor56uIID4ga2FtYWRvXCA7CivnqpIgPiBjaGl0c3VcIDsKK+eqiyA+IGNodXRzdVwgOwor56epID4gY2hpdHN1XCA7Civnp6QgPiBoYWthcmlcIDsKK+emiiA+IG1pc29naVwgOwor56WRID4gY2hpdHN1XCA7CivnpKkgPiBzaGl0c3VcIDsKK+ehsiA+IGhhemFtYVwgOwor56CmID4gdG9yaWRlXCA7CivnlKkgPiBzaHV0c3VcIDsKK+eTvCA+IHNhcmFrZVwgOwor55KxID4gc2hpdHN1XCA7CivnkZ8gPiBzaGl0c3VcIDsKK+eLuCA+IHRhbnVraVwgOwor54mDID4gb3VjaG91XCA7Civng48gPiBrYXJhc3VcIDsKK+a4miA+IG5hZ2lzYVwgOwor5raOID4geW9kYXJlXCA7Civms48gPiBjaHV0c3VcIDsKK+axoiA+IHRzdWNoaVwgOwor5rGAID4gbWlnaXdhXCA7CivmsLUgPiBzYW56dWlcIDsKK+apmSA+IGRhaWRhaVwgOwor5qi1ID4ga2lrb3JpXCA7CivmqK4gPiBob2t1c29cIDsKK+allCA+IGt1c2FiaVwgOwor5qWKID4geWFuYWdpXCA7CivmpLkgPiBzYXdhcmFcIDsKK+akqiA+IGt1bnVnaVwgOwor5qShID4ga3VudWdpXCA7CivmpJsgPiBtb21pamlcIDsKK+akmiA+IGt1bnVnaVwgOwor5qK6ID4gZnVtb3RvXCA7CivmobwgPiBzaGl0c3VcIDsKK+ahjiA+IHNoaXRzdVwgOwor5qCeID4gc2hpb3JpXCA7Civmn5IgPiBzaGl0c3VcIDsKK+adjiA+IHN1bW9tb1wgOwor5pqmID4ga295b21pXCA7CivmmYogPiBzaGl0c3VcIDsKK+aYtCA+IHN1YmFydVwgOwor5pGUID4gc2h1dHN1XCA7CivmjIMgPiBjaGl0c3VcIDsKK+aKtiA+IGNoaXRzdVwgOwor5omWID4gaGFtZXJ1XCA7CivmhpYgPiBuYW1hamlcIDsKK+aEsSA+IHNoaXRzdVwgOwor5b2gID4ga3V3YWt1XCA7CivlvY8gPiBrdXdha3VcIDsKK+W9jSA+IGt1d2FrdVwgOwor5b2JID4ga3V3YWt1XCA7Civlu5MgPiBrdXJ1d2FcIDsKK+W6oiA+IGNoaXRzdVwgOwor5bmfID4gbm9ib3JpXCA7CivluYkgPiB0YXp1bmFcIDsKK+W4mSA+IGNoaXRzdVwgOwor5bWQID4gYXJhc2hpXCA7CivltJIgPiBzaHV0c3VcIDsKK+WygCA+IHNodXRzdVwgOwor5a+hID4geWFtb21lXCA7Civlq58gPiBqaXl1a3VcIDsKK+WmtyA+IGNoaXRzdVwgOwor5aKOID4ga3V3YWt1XCA7CivloLIgPiBzaGl0c3VcIDsKK+WgmyA+IGhpeW9rdVwgOwor5Zy3ID4gYWt1dHN1XCA7CivlkrAgPiBzaHV0c3VcIDsKK+WQjiA+IGtpc2FraVwgOwor5Y+6ID4ga2FtYXN1XCA7CivljqAgPiBrYXdheWFcIDsKK+WOlCA+IHNoaXRzdVwgOwor5Y6AID4gc2hpdHN1XCA7CivljZsgPiBzaHV0c3VcIDsKK+WKlSA+IHNoaXRzdVwgOwor5YWcID4ga2FidXRvXCA7CivlhKggPiBzaGl0c3VcIDsKK+WBqiA+IGhpeW9rdVwgOwor5YCtID4geWFtYXRvXCA7CivkvoQgPiBzaGl0c3VcIDsKK+S8oSA+IGt1cnVtYVwgOwor5LudID4gZG91am91XCA7Civku4cgPiBrYXRha2lcIDsKK+OAkiA+IHl1dWJpblwgOwor6L+wID4ganV0c3VcIDsKK+W/hSA+IGhpdHN1XCA7CivovrsgPiB0c3VqaVwgOwor5b65ID4gdGV0c3VcIDsKK+eepSA+IGJldHN1XCA7CivlvowgPiBub2NoaVwgOwor5b6LID4gcml0c3VcIDsKK+edgCA+IGNoYWt1XCA7CivlvI8gPiBzaGlraVwgOwor55q6ID4gc2hpd2FcIDsKK+i6hSA+IGNob2t1XCA7Civnmb4gPiBoeWFrdVwgOwor55m9ID4gc2hpcm9cIDsKK+eZvCA+IGhvdHN1XCA7CivnmbogPiBoYXRzdVwgOwor5bm4ID4gc2FjaGlcIDsKK+W5tCA+IHRvc2hpXCA7CivnmaogPiBzaGFrdVwgOwor5be0ID4gdG9tb2VcIDsKK+eXhSA+IHlhbWFpXCA7CivnlaUgPiByeWFrdVwgOwor55WiID4gaGl0c3VcIDsKK+eVnCA+IGNoaWt1XCA7CivnlLogPiBtYWNoaVwgOwor55S3ID4gb3Rva29cIDsKK+eUsSA+IHlvc2hpXCA7Civls7YgPiBzaGltYVwgOwor6LOqID4gdGFjaGlcIDsKK+WyuCA+IGtpc2hpXCA7CivlsYggPiBrdXRzdVwgOwor5bC7ID4gc2hpcmlcIDsKK+WwuiA+IHNoYWt1XCA7Civlr6YgPiBqaXRzdVwgOwor5a+fID4gc2F0c3VcIDsKK+WvhiA+IG1pdHN1XCA7CivlrrQgPiB1dGFnZVwgOwor5a6iID4ga3lha3VcIDsKK+eOhyA+IHJpdHN1XCA7CivorZggPiBzaGlraVwgOwor54y+ID4ga2F0c3VcIDsKK+iqrCA+IHNldHN1XCA7CivoqbAgPiBraXRzdVwgOwor54i6ID4gamlqaWlcIDsKK+eItSA+IHNoYWt1XCA7CivoqK0gPiBzZXRzdVwgOwor54iqID4gdHN1bWVcIDsKK+iooyA+IGtldHN1XCA7Civop7ggPiBzaG9rdVwgOwor54etID4gc2hva3VcIDsKK+inpiA+IHNob2t1XCA7Civop5IgPiB0c3Vub1wgOwor5aa7ID4gdHN1bWFcIDsKK+eGsSA+IG5ldHN1XCA7Civopb8gPiBuaXNoaVwgOwor5aW0ID4geWF0c3VcIDsKK+WlqiA+IGRhdHN1XCA7CivlpI8gPiBuYXRzdVwgOwor54OIID4gcmV0c3VcIDsKK+ijgiA+IHJldHN1XCA7CivoorcgPiBhd2FzZVwgOwor54KOID4gaG9ub29cIDsKK+WigyA+IHNha2FpXCA7CivngbwgPiBzaGFrdVwgOwor5aG1ID4gY2hpcmlcIDsKK+WhmiA+IHRzdWthXCA7CivooZcgPiBtYWNoaVwgOwor5Z+6ID4gbW90b2lcIDsKK+a/tiA+IGthdHN1XCA7Civln5IgPiByYWNoaVwgOwor5Z+OID4gc2hpcm9cIDsKK+m9oiA+IHlvd2FpXCA7CivonZUgPiBzaG9rdVwgOwor5r2UID4ga2V0c3VcIDsKK+m8viA+IGliaWtpXCA7CivonIIgPiBoYWNoaVwgOwor6JyAID4gc2hva3VcIDsKK+m7kCA+IG1vY2hpXCA7Civmu5EgPiBrYXRzdVwgOwor5ruFID4gbWV0c3VcIDsKK+ialSA+IGthaWtvXCA7CivmuowgPiBoYXRzdVwgOwor6bm/ID4gc2hpa2FcIDsKK+iZqyA+IG11c2hpXCA7CivomZ4gPiBvc29yZVwgOwor5ZmCID4gdXdhc2FcIDsKK+a4hyA+IGthdHN1XCA7Civmt7UgPiBmdWNoaVwgOwor6beyID4gd2FzaGlcIDsKK+a3kSA+IHNodWt1XCA7Civll4cgPiBzaG9rdVwgOwor6ba0ID4gdHN1cnVcIDsKK+iWlCA+IHNob2t1XCA7CivllocgPiByYXRzdVwgOwor5ZWcID4gc2V0c3VcIDsKK+WUviA+IHRzdWJhXCA7CivmtLsgPiBrYXRzdVwgOwor6JSRID4gYmV0c3VcIDsKK+WTsiA+IHRldHN1XCA7Civms4kgPiBpenVtaVwgOwor6JOEID4gY2hpa3VcIDsKK+ayuSA+IGFidXJhXCA7CivmsqEgPiBib3RzdVwgOwor5ZKEID4gdG90c3VcIDsKK+axuiA+IGtldHN1XCA7CivokaYgPiB5b3NoaVwgOwor6JGXID4gY2hha3VcIDsKK+axgSA+IHRzdXl1XCA7CivpsIwgPiBkb2pvdVwgOwor5ZCJID4ga2ljaGlcIDsKK+WPrSA+IGhhdHN1XCA7Civlj6MgPiBrdWNoaVwgOwor5Y+UID4gc2h1a3VcIDsKK+auuiA+IHNhdHN1XCA7CivmrpYgPiBzaG9rdVwgOwor5Y20ID4ga3lha3VcIDsKK+WNmCA+IGhpdG9lXCA7CivljZIgPiBzb3RzdVwgOwor5Yy5ID4gaGl0c3VcIDsKK+asoSA+IHRzdWdpXCA7Civli78gPiBtb2NoaVwgOwor6auuID4gaGF0c3VcIDsKK+armyA+IGt1c2hpXCA7CivliqMgPiByZXRzdVwgOwor6IqdID4gc2hpYmFcIDsKK+WKmyA+IHJ5b2t1XCA7CivoibYgPiB0c3V5YVwgOwor5qmLID4gaGFzaGlcIDsKK+WIuSA+IHNldHN1XCA7CivliLcgPiBzYXRzdVwgOwor5qirID4ga2FzaGlcIDsKK+WIpSA+IGJldHN1XCA7CivliJ0gPiBoYXRzdVwgOwor5YiXID4gcmV0c3VcIDsKK+aokiA+IG1pdHN1XCA7CivoiIwgPiBzaGl0YVwgOwor5YiHID4gc2V0c3VcIDsKK+WIgyA+IHlhaWJhXCA7CivlhowgPiBzYXRzdVwgOwor5YaKID4gc2F0c3VcIDsKK+iFsCA+IGtvc2hpXCA7CivlhasgPiB5YXRzdVwgOwor5YWOID4gdXNhZ2lcIDsKK+WFgCA+IGtvdHN1XCA7CivohLEgPiBkYXRzdVwgOwor5qSNID4gc2hva3VcIDsKK+iEiCA+IG15YWt1XCA7CivppIUgPiBtb2NoaVwgOwor6aO+ID4gc2hva3VcIDsKK+mjryA+IG1lc2hpXCA7Civpo58gPiBzaG9rdVwgOwor5qKoID4gbmFzaGlcIDsKK+aioiA+IGtvenVlXCA7CivmopMgPiBhenVzYVwgOwor5YKRID4ga2V0c3VcIDsKK+iChSA+IHNodWt1XCA7CivogbcgPiBzaG9rdVwgOwor6aGNID4gaGl0YWlcIDsKK+WAnyA+IHNoYWt1XCA7CivpoIEgPiBwZWlqaVwgOwor5p+EID4gdHN1a2FcIDsKK+e/gSA+IG9raW5hXCA7Civpnq0gPiBtdWNoaVwgOwor6Z6EID4ga2FiYW5cIDsKK+adviA+IG1hdHN1XCA7CivpnbQgPiBrdXRzdVwgOwor572wID4gYmF0c3VcIDsKK+e9qiA+IHRzdW1pXCA7CivmnZ8gPiB0c3VrYVwgOwor5L2bID4gYnV0c3VcIDsKK+adkyA+IHNoYWt1XCA7CivkvY0gPiBrdXJhaVwgOwor57y6ID4ga2V0c3VcIDsKK+S8uCA+IG5vc2hpXCA7CivpnLIgPiB0c3V5dVwgOwor6ZywID4gYXJhcmVcIDsKK+acqyA+IG1hdHN1XCA7CivpnJwgPiBzaGltb1wgOwor5pyIID4gdHN1a2lcIDsKK+absiA+IGt5b2t1XCA7Civpm5wgPiB6YXRzdVwgOwor5LuZID4gc2VudG9cIDsKK+mbkSA+IHphdHN1XCA7Civpm4cgPiB5YXRvaVwgOwor5Lm+ID4gaG9zaGlcIDsKK+S5niA+IGtvdHN1XCA7CivkuLsgPiBudXNoaVwgOwor57iuID4gc2h1a3VcIDsKK+aYnyA+IGhvc2hpXCA7CivnuJ4gPiBzaGltYVwgOwor5LiLID4gc2hpdGFcIDsKK+e2sSA+IHRzdW5hXCA7CivntbYgPiB6ZXRzdVwgOwor57WQID4ga2V0c3VcIDsKK+e1giA+IG93YXJpXCA7Civmk40gPiBtaXNhb1wgOwor5pKuID4gc2F0c3VcIDsKK+mQtSA+IHRldHN1XCA7CivpkKEgPiB0ZXRzdVwgOwor56+JID4gY2hpa3VcIDsKK+evgCA+IGJ1c2hpXCA7CivnrrggPiBoYXNoaVwgOwor5o6lID4gc2V0c3VcIDsKK+aOoCA+IHJ5YWt1XCA7CivmjpggPiBrdXRzdVwgOwor566SID4gaG91a2lcIDsKK+aNqSA+IHJldHN1XCA7CivnrZQgPiBrb3RhZVwgOwor5ou2ID4gc2F0c3VcIDsKK+aLrSA+IHNoaWtpXCA7Civmi6wgPiBrYXRzdVwgOwor5ouZID4gc2V0c3VcIDsKK+aLlCA+IGJhdHN1XCA7Civnq4sgPiByaXRzdVwgOwor56uKID4gc2V0c3VcIDsKK+aLgiA+IGZ1dHN1XCA7CivmipwgPiBiYXRzdVwgOwor5oqJID4ga2V0c3VcIDsKK+eqgSA+IHRvdHN1XCA7CivnqbQgPiBrZXRzdVwgOwor6YmiID4gaGFjaGlcIDsKK+aJlSA+IGZ1dHN1XCA7CivpiYQgPiB0ZXRzdVwgOwor5oiqID4gc2V0c3VcIDsKK+aIpiA+IGlrdXNhXCA7Civph4sgPiBzaGFrdVwgOwor6YeIID4gc2hha3VcIDsKK+elnSA+IHNodWt1XCA7CivphYwgPiBzaGFrdVwgOwor5oWEID4gcml0c3VcIDsKK+aDmiA+IGtvdHN1XCA7CivpgZQgPiB0YWNoaVwgOwor6YGTID4gbWljaGlcIDsKK+mAuSA+IHRhdHN1XCA7CivpgJAgPiBjaGlrdVwgOwor6YCGID4gZ3lha3VcIDsKK+W/vSA+IGtvdHN1XCA7Civpvp4gPiBiZXRzdVwgOwor6b2nID4ga2V0c3VcIDsKK+m9lSA+IGtvdHN1XCA7CivpvYMgPiBrYXRzdVwgOwor6by/ID4gZ290c3VcIDsKK+m8jiA+IGthbmFlXCA7Civpu7sgPiBmdXRzdVwgOwor6bugID4ga2F0c3VcIDsKK+m6uSA+IGtvdWppXCA7Civpt6sgPiBzaHVrdVwgOwor6bepID4gaGV0c3VcIDsKK+m2uyA+IGtvdHN1XCA7CivptqEgPiBrYXRzdVwgOwor6baNID4gaXN1a2FcIDsKK+m2iSA+IHV6dXJhXCA7CivptZMgPiBob3RzdVwgOwor6bSwID4ga2F0c3VcIDsKK+m0qyA+IHNoaWdpXCA7CivptIMgPiBrZXRzdVwgOwor6bSCID4ga2V0c3VcIDsKK+myviA+IGh5YWt1XCA7CivpsqwgPiBrb2NoaVwgOwor6bGXID4gdXJva29cIDsKK+mxkCA+IHNodWt1XCA7CivpsYkgPiBiZXRzdVwgOwor6bGBID4gY2hpa3VcIDsKK+mwuyA+IHVuYWdpXCA7CivpsJIgPiBhd2FiaVwgOwor6bCPID4gaHlva3VcIDsKK+mwjSA+IGluYWRhXCA7CivpsIkgPiBoaWdhaVwgOwor6bCIID4ga2FyZWlcIDsKK+mvsiA+IGRvam91XCA7Civpr5IgPiBrb2NoaVwgOwor6a+PID4gYXNhcmlcIDsKK+murSA+IHNoYWtlXCA7CivprqggPiBzdXNoaVwgOwor6a6aID4ga2l0c3VcIDsKK+mukyA+IHN1c2hpXCA7CivprpEgPiBhd2FiaVwgOwor6a6FID4gaGl0c3VcIDsKK+muhCA+IGZ1dHN1XCA7CivprakgPiBoYWNoaVwgOwor6a2DID4gYmF0c3VcIDsKK+msuyA+IHNodWt1XCA7CivprKAgPiBrYXRzdVwgOwor6ayOID4gcmF0c3VcIDsKK+mruiA+IGdhdHN1XCA7Civpq7QgPiBmdXRzdVwgOwor6amWID4gdGV0c3VcIDsKK+mpjCA+IHNodWt1XCA7CivpqYsgPiBoYXRzdVwgOwor6aiEID4gcnlva3VcIDsKK+mnnCA+IGhpdHN1XCA7Civpp4MgPiBrZXRzdVwgOwor6aa5ID4gaml0c3VcIDsKK+mmnSA+IGhpdHN1XCA7CivpppsgPiBoYXRzdVwgOwor6aWGID4gaGl0c3VcIDsKK+mkriA+IHRldHN1XCA7CivppJ8gPiB0ZXRzdVwgOwor6aSdID4gc2hva3VcIDsKK+mkkSA+IGhvdHN1XCA7Civpo7YgPiBoaXRzdVwgOwor6aOtID4gY2hva3VcIDsKK+misyA+IGthdHN1XCA7CivporAgPiBoYXRzdVwgOwor6aKvID4gc2F0c3VcIDsKK+mhoyA+IHNodWt1XCA7CivpoKEgPiBraXRzdVwgOwor6aCKID4ga3lva3VcIDsKK+mfpCA+IGJhdHN1XCA7Civpn6EgPiBzYWthblwgOwor6Z+gID4gaGl0c3VcIDsKK+mfjSA+IGZ1dHN1XCA7Civpn4ggPiBiZXRzdVwgOwor6Z+DID4gZGF0c3VcIDsKK+meuCA+IGhpdHN1XCA7CivpnqggPiBrYXRzdVwgOwor6Z26ID4gbWF0c3VcIDsKK+mduSA+IGtldHN1XCA7CivpnaggPiBla3Vib1wgOwor6ZqJID4gZ2V0c3VcIDsKK+mZnyA+IGNob2t1XCA7CivpmKIgPiBnb3RzdVwgOwor6ZelID4gdGF0c3VcIDsKK+mXlSA+IGtldHN1XCA7Civpl5EgPiBnZXRzdVwgOwor6ZeLID4ga2V0c3VcIDsKK+mXiiA+IGthdHN1XCA7CivplqYgPiBzaHVrdVwgOwor6ZalID4gYmF0c3VcIDsKK+mSgyA+IHNob2t1XCA7CivpkaAgPiBzaGFrdVwgOwor6ZC9ID4gdGF0c3VcIDsKK+mQryA+IHNoYWt1XCA7CivpkI0gPiB0ZXRzdVwgOwor6Y+6ID4gaGF0c3VcIDsKK+mPiSA+IHNoeXV1XCA7Civpj4UgPiBzaHl1dVwgOwor6Y6nID4geW9yb2lcIDsKK+mOiyA+IGthdHN1XCA7CivpjaUgPiBrZXRzdVwgOwor6Y2YID4gc2F0c3VcIDsKK+mNlCA+IHRzdWJhXCA7CivpjKggPiBpa2FyaVwgOwor6YyYID4gdHN1bXVcIDsKK+mLqCA+IHRldHN1XCA7Civpi50gPiByZXRzdVwgOwor6YuNID4gaG90c3VcIDsKK+mKvSA+IGthdHN1XCA7CivpiqsgPiBzaG9rdVwgOwor6YqVID4gdGV0c3VcIDsKK+mJvSA+IHNodWt1XCA7CivpiZggPiBmdXRzdVwgOwor6Yi6ID4gZ3lva3VcIDsKK+mIuCA+IGhhdHN1XCA7CivpiK8gPiB0b3RzdVwgOwor6YikID4gaml0c3VcIDsKK+mIhSA+IGdldHN1XCA7Civph7AgPiBqaXRzdVwgOwor6YefID4gaGF0c3VcIDsKK+mGsSA+IGhhdHN1XCA7CivphpcgPiBoYXRzdVwgOwor6YaUID4gc2h5dXVcIDsKK+mGiiA+IHRldHN1XCA7CivphoEgPiByeW9rdVwgOwor6YWrID4gc2V0c3VcIDsKK+mFpiA+IGhhdHN1XCA7CivphJAgPiBjaGlrdVwgOwor6YKyID4gaGl0c3VcIDsKK+mAvCA+IGhpdHN1XCA7CivpgK8gPiByeW9rdVwgOwor6YCCID4ga2F0c3VcIDsKK+i/viA+IHJldHN1XCA7Civov60gPiB0ZXRzdVwgOwor6L6+ID4gdGF0c3VcIDsKK+i+tiA+IGNoYWt1XCA7CivovrUgPiBjaGFrdVwgOwor6L6wID4gdGF0c3VcIDsKK+i+pSA+IHNldHN1XCA7CivovqMgPiByYXRzdVwgOwor6L6cID4gdHN1bWlcIDsKK+i9lSA+IGthdHN1XCA7CivovYQgPiBrYXRzdVwgOwor6Ly/ID4ga29zaGlcIDsKK+i8tSA+IGthdHN1XCA7CivovJ8gPiB0ZXRzdVwgOwor6LyCID4ga3lva3VcIDsKK+i7viA+IHNob2t1XCA7Civou7cgPiBoYXRzdVwgOwor6LuPID4gZ2V0c3VcIDsKK+i7hCA+IHNob2t1XCA7CivourUgPiBuZXJhdVwgOwor6LqpID4ga3lha3VcIDsKK+i6giA+IHRhdHN1XCA7CivoubYgPiBrZXRzdVwgOwor6LmpID4gaGV0c3VcIDsKK+i5nCA+IHNodWt1XCA7CivouZkgPiBzaHVrdVwgOwor6LmVID4gaGl0c3VcIDsKK+i4pyA+IHNodWt1XCA7CivouIsgPiBreWFrdVwgOwor6Le8ID4ga3lva3VcIDsKK+i3myA+IGJpa2tvXCA7Civot4wgPiB0ZXRzdVwgOwor6LeLID4gYmF0c3VcIDsKK+i3gCA+IGdldHN1XCA7CivotrkgPiBrZXRzdVwgOwor6La3ID4ga290c3VcIDsKK+i2niA+IHNoYWt1XCA7CivotpAgPiBrZXRzdVwgOwor6LWpID4ga3lva3VcIDsKK+i0liA+IHNob2t1XCA7Civos6EgPiBzaG9rdVwgOwor6LKcID4ga3lha3VcIDsKK+ixgSA+IGthdHN1XCA7Civorp4gPiBnZXRzdVwgOwor6K2OID4ga2l0c3VcIDsKK+isliA+IHNob2t1XCA7CivorJQgPiBneWFrdVwgOwor6KyQID4gaGl0c3VcIDsKK+irlCA+IHNodWt1XCA7CivoqrMgPiBrdXRzdVwgOwor6KqqID4gc2V0c3VcIDsKK+iqliA+IGhvdHN1XCA7CivoqacgPiBzYXRzdVwgOwor6KmYID4ga3V0c3VcIDsKK+iopSA+IHRvdHN1XCA7CivoqJYgPiBraXRzdVwgOwor6KiQID4ga2V0c3VcIDsKK+insSA+IGhpdHN1XCA7Civop5YgPiBrZXRzdVwgOwor6KaVID4gYmV0c3VcIDsKK+ilrSA+IGtldHN1XCA7CivopaogPiBiZXRzdVwgOwor6KWhID4gc2hva3VcIDsKK+ilkiA+IGhldHN1XCA7CivopY8gPiBoYXRzdVwgOwor6KWNID4gemF0c3VcIDsKK+ikuyA+IHNldHN1XCA7CivopJAgPiBrYXRzdVwgOwor6KSEID4gdHN1bWFcIDsKK+ijsCA+IHRhdHN1XCA7CivoorogPiBrZXRzdVwgOwor6KKcID4gYmF0c3VcIDsKK+iimiA+IGhhdHN1XCA7CivoobUgPiBqaXRzdVwgOwor6KGLID4ga3lva3VcIDsKK+ihiiA+IGJldHN1XCA7CivooLwgPiBreWFrdVwgOwor6KCeID4gc2V0c3VcIDsKK+igmyA+IGJldHN1XCA7CivooJggPiBzZXRzdVwgOwor6KCLID4gc2hva3VcIDsKK+ifmSA+IHNob2t1XCA7CivonbIgPiByYXRzdVwgOwor6J2OID4ga2F0c3VcIDsKK+icnCA+IG1pdHN1XCA7CivonIcgPiB0ZXRzdVwgOwor6JulID4gc2V0c3VcIDsKK+iboyA+IGtpdHN1XCA7Civom54gPiBrYXRzdVwgOwor6JuaID4gcmV0c3VcIDsKK+iZkCA+IGd5YWt1XCA7CivomJYgPiBnZXRzdVwgOwor6JecID4gYWthemFcIDsKK+iXmiA+IHNob2t1XCA7CivolqkgPiBzYXRzdVwgOwor6JalID4gc2hva3VcIDsKK+iWmyA+IHNldHN1XCA7CivolpggPiB0YXRzdVwgOwor6JaKID4gYXphbWlcIDsKK+iVnyA+IGhpdHN1XCA7CivolZ0gPiBzZXRzdVwgOwor6JWAID4ga3lva3VcIDsKK+iUpiA+IHRzdXRhXCA7CivolKQgPiBiaXRzdVwgOwor6JSOID4gc2V0c3VcIDsKK+iTvyA+IHNodWt1XCA7Civok70gPiBoaXRzdVwgOwor6JOHID4ga290c3VcIDsKK+iRpyA+IGhvdHN1XCA7CivokZwgPiBrYXRzdVwgOwor6JGWID4gdG90c3VcIDsKK+iRjiA+IHJpdHN1XCA7Civoj70gPiBzaHVrdVwgOwor6I+dID4gaGF0c3VcIDsKK+iPiSA+IHJ5b2t1XCA7Civojq0gPiBzZXRzdVwgOwor6I6CID4gaGV0c3VcIDsKK+iNuCA+IGhvdHN1XCA7CivojZcgPiBzaG9rdVwgOwor6IyoID4gaWJhcmFcIDsKK+iMoiA+IHJldHN1XCA7CivojJwgPiBha2FuZVwgOwor6IyNID4ga3lva3VcIDsKK+iMiSA+IG1hdHN1XCA7CivojIcgPiBoYXRzdVwgOwor6IyBID4gc2F0c3VcIDsKK+iMgCA+IGh1dHN1XCA7Civoi74gPiBoaXRzdVwgOwor6Iu2ID4gZGV0c3VcIDsKK+iKtCA+IGJ1dHN1XCA7Civoio0gPiBzaGFrdVwgOwor6Im0ID4gaG90c3VcIDsKK+iIsyA+IGNoaWt1XCA7CivoiJ0gPiBrYXRzdVwgOwor6IiEID4gc2hha3VcIDsKK+iIgyA+IHNoYWt1XCA7Civoh7ggPiBqaXRzdVwgOwor6IeyID4gZ2V0c3VcIDsKK+iHhSA+IHNob2t1XCA7CivohbcgPiBoeW9rdVwgOwor6IWvID4gdG90c3VcIDsKK+iEqyA+IGRhdHN1XCA7CivohJYgPiBob3RzdVwgOwor6ISJID4gbXlha3VcIDsKK+iDiCA+IGhhdHN1XCA7CivogrggPiBraXRzdVwgOwor6IKtID4gZG90c3VcIDsKK+iCiyA+IGFiYXJhXCA7CivogZIgPiBrYXRzdVwgOwor6IGAID4gc2hva3VcIDsKK+iAiyA+IHRldHN1XCA7CivogIogPiB0ZXRzdVwgOwor576vID4ga2F0c3VcIDsKK+e+jSA+IHRhdHN1XCA7CivnvbggPiBiYXRzdVwgOwor57y9ID4gaGFjaGlcIDsKK+e8vCA+IGtldHN1XCA7CivnuoggPiBrZXRzdVwgOwor57mzID4gc2hha3VcIDsKK+e5mCA+IGtpdHN1XCA7CivnuKwgPiBzaHVrdVwgOwor57ekID4gc2V0c3VcIDsKK+e2vSA+IHNoYWt1XCA7CivntqAgPiByeW9rdVwgOwor57aNID4gaHV0c3VcIDsKK+e1sCA+IHRldHN1XCA7CivntZwgPiBrZXRzdVwgOwor57WXID4ga290c3VcIDsKK+e1lSA+IHpldHN1XCA7CivntY8gPiBzZXRzdVwgOwor57S8ID4gaHV0c3VcIDsKK+e0siA+IHNldHN1XCA7CivntLEgPiBodXRzdVwgOwor57SuID4gc2F0c3VcIDsKK+e0hyA+IGtvdHN1XCA7Civns7UgPiBnZXRzdVwgOwor57OPID4gc2V0c3VcIDsKK+ezgCA+IGtvdWppXCA7CivnspsgPiBzaHVrdVwgOwor57KSID4gdHN1YnVcIDsKK+exmSA+IHJ5b2t1XCA7Civnr74gPiBiZXRzdVwgOwor56+zID4gaGl0c3VcIDsKK+evqSA+IGZ1cnVpXCA7Civnr6UgPiByaXRzdVwgOwor5667ID4gcml0c3VcIDsKK+eumiA+IHNhdHN1XCA7CivnrZEgPiBjaGlrdVwgOwor562PID4gaWthZGFcIDsKK+etgSA+IGt5b2t1XCA7CivnrL0gPiBzb3VrZVwgOwor56ywID4gaHV0c3VcIDsKK+eslCA+IGhpdHN1XCA7CivnrI8gPiBrb3RzdVwgOwor56utID4ga2V0c3VcIDsKK+eqoyA+IHNvdHN1XCA7Civnqp8gPiBrdXRzdVwgOwor56qDID4gc2V0c3VcIDsKK+epoSA+IHNob2t1XCA7CivnqLcgPiBzaG9rdVwgOwor56itID4ga2F0c3VcIDsKK+eoqyA+IGh5b2t1XCA7CivnqKEgPiBzb3RzdVwgOwor56iZID4gY2hva3VcIDsKK+enuCA+IGthdHN1XCA7Civnp6sgPiBqb3RzdVwgOwor56ejID4gbWF0c3VcIDsKK+enoSA+IGhhdHN1XCA7Civnpp0gPiBzaG9rdVwgOwor56WTID4gZnV0c3VcIDsKK+ejhiA+IGthdHN1XCA7Civnor8gPiBzb3RzdVwgOwor56KjID4ga2V0c3VcIDsKK+einyA+IGthdHN1XCA7Civnoo8gPiBzaGFrdVwgOwor56GIID4ga2F0c3VcIDsKK+efuyA+IGtvdHN1XCA7Civnn5ogPiBzaG9rdVwgOwor55+XID4gY2hpa3VcIDsKK+eeriA+IHRldHN1XCA7Civnno4gPiBrYXRzdVwgOwor552wID4gYmF0c3VcIDsKK+ecnCA+IGJhdHN1XCA7Civnm4sgPiBoYXRzdVwgOwor55qtID4gc2hha3VcIDsKK+ealSA+IGh5b2t1XCA7CivnmowgPiBiYXRzdVwgOwor55m2ID4gaGF0c3VcIDsKK+eZpCA+IHNldHN1XCA7CivnmZ8gPiBoZXRzdVwgOwor55inID4gZ3lha3VcIDsKK+eYnCA+IHNob2t1XCA7CivnmIwgPiByYXRzdVwgOwor55iEID4gc2hha3VcIDsKK+eYgyA+IHNob2t1XCA7Civnl4YgPiBkYXRzdVwgOwor55aZID4gZ2l0c3VcIDsKK+eVtyA+IHRldHN1XCA7CivnlacgPiByeWFrdVwgOwor55WfID4gc2hva3VcIDsKK+eUtiA+IGZ1dHN1XCA7Civnk54gPiB0ZXRzdVwgOwor55GuID4gcml0c3VcIDsKK+ePvyA+IHNodWt1XCA7Civnj4wgPiBoaXRzdVwgOwor546mID4ga2V0c3VcIDsKK+eOpSA+IGdldHN1XCA7CivnjpAgPiBoYXRzdVwgOwor546DID4ga3lha3VcIDsKK+eNpiA+IGthdHN1XCA7CivnjZ0gPiBraXRzdVwgOwor542XID4ga2V0c3VcIDsKK+eMsiA+IGthdHN1XCA7CivnjJ0gPiBzb3RzdVwgOwor54uYID4ga2V0c3VcIDsKK+eKriA+IGhhdHN1XCA7CivniJ0gPiBzaGFrdVwgOwor54iNID4gc2hha3VcIDsKK+eIhyA+IHpldHN1XCA7Civnh7UgPiB0YXRzdVwgOwor54aaID4gaGl0c3VcIDsKK+eFniA+IHNhdHN1XCA7CivnhK8gPiBzaGFrdVwgOwor54SrID4gemV0c3VcIDsKK+eElCA+IGhvbm9vXCA7CivnhI8gPiBreW9rdVwgOwor54OVID4ga2V0c3VcIDsKK+eAkiA+IHNob2t1XCA7Civmv4cgPiBzaG9rdVwgOwor5r6IID4gdGV0c3VcIDsKK+a9miA+IHNodWt1XCA7CivmvZEgPiBoYXRzdVwgOwor5r2PID4ga2V0c3VcIDsKK+a7rSA+IGhpdHN1XCA7Civmu4AgPiBjaGlrdVwgOwor5rqtID4gc2hva3VcIDsKK+a6pyA+IHJpdHN1XCA7CivmuoIgPiByYXRzdVwgOwor5rmiID4gaHlva3VcIDsKK+a5nCA+IHNob2t1XCA7CivmuLQgPiBrYXRzdVwgOwor5rirID4gc2V0c3VcIDsKK+a4pCA+IGJvdHN1XCA7CivmuIsgPiBzaGlidVwgOwor5reIID4ga290c3VcIDsKK+a2hSA+IG5ldHN1XCA7CivmtawgPiBrYWlyaVwgOwor5rWhID4gaG90c3VcIDsKK+a1mSA+IHNldHN1XCA7CivmtK8gPiBrZXRzdVwgOwor5rSrID4ga3lva3VcIDsKK+a0jCA+IHJldHN1XCA7Civms6wgPiBrZXRzdVwgOwor5rOQID4gcnlva3VcIDsKK+azjCA+IGhpdHN1XCA7CivmsrggPiBmdXRzdVwgOwor5rKrID4gbWF0c3VcIDsKK+aylSA+IGJ1dHN1XCA7CivmspIgPiBib3RzdVwgOwor5rGUID4ga2l0c3VcIDsKK+awnyA+IGh1dHN1XCA7CivmsJIgPiBrZXRzdVwgOwor5q6bID4ga3lva3VcIDsKK+augSA+IGJvdHN1XCA7Civmrb8gPiBib3RzdVwgOwor5q2+ID4gYm90c3VcIDsKK+atvSA+IHNldHN1XCA7CivmrbkgPiBnYXRzdVwgOwor5q2gID4gc2V0c3VcIDsKK+atmCA+IGt1dHN1XCA7CivmrYcgPiBrZXRzdVwgOwor5qy7ID4ga3V0c3VcIDsKK+asryA+IGtpdHN1XCA7CivmrKAgPiBrZXRzdVwgOwor5qyfID4gdHN1a2lcIDsKK+arsSA+IGdldHN1XCA7Civmq4EgPiBtaXRzdVwgOwor5qqrID4gc2F0c3VcIDsKK+aqiyA+IGt5b2t1XCA7CivmqZsgPiBrZXRzdVwgOwor5qi0ID4gc2hva3VcIDsKK+anrSA+IHNodWt1XCA7Civmpr4gPiBrb3RzdVwgOwor5qaNID4gc2V0c3VcIDsKK+amgCA+IGtvbWFpXCA7Civmpb4gPiBoYXpvdVwgOwor5qWsID4ga2V0c3VcIDsKK+akoyA+IHNoaWRlXCA7CivmpIogPiBzb3RzdVwgOwor5qSEID4gc2V0c3VcIDsKK+ajgSA+IHNldHN1XCA7CivmorIgPiBzZXRzdVwgOwor5qGyID4gaG90c3VcIDsKK+ahsCA+IGthdHN1XCA7CivmoZsgPiBrYXNlaVwgOwor5qGUID4ga2l0c3VcIDsKK+ahgCA+IGtldHN1XCA7CivmoLsgPiBjaG9rdVwgOwor5qCwID4gaGF0c3VcIDsKK+agqCA+IHNldHN1XCA7CivmoIMgPiB0b2NoaVwgOwor5p+3ID4gc2h1a3VcIDsKK+afriA+IHRvdHN1XCA7CivmnbAgPiBrZXRzdVwgOwor5p2kID4gdG9jaGlcIDsKK+adjCA+IGdvdHN1XCA7CivmnYEgPiBlYnVyaVwgOwor5py4ID4gcnlva3VcIDsKK+acsyA+IGhhdHN1XCA7CivmnK8gPiBqdXRzdVwgOwor5pyuID4ganV0c3VcIDsKK+achSA+IGtldHN1XCA7Civmm7cgPiBrYXRzdVwgOwor5pq8ID4gaGV0c3VcIDsKK+aasSA+IGppdHN1XCA7CivmmaIgPiBzZXRzdVwgOwor5pi1ID4gaml0c3VcIDsKK+aYsyA+IHRldHN1XCA7CivmmKkgPiBiYXRzdVwgOwor5piiID4gaG90c3VcIDsKK+aYkiA+IGtvdHN1XCA7Civml60gPiBhc2FoaVwgOwor5parID4gc2hha3VcIDsKK+aWoyA+IHNodWt1XCA7CivmlaogPiB0YXRzdVwgOwor5pWgID4gdGF0c3VcIDsKK+aVlSA+IGNob2t1XCA7CivmlJ0gPiBzZXRzdVwgOwor5pO9ID4gcnlha3VcIDsKK+aTtyA+IGtldHN1XCA7Civmk6YgPiBzYXRzdVwgOwor5pK7ID4gdGFjaGlcIDsKK+aSpSA+IGJhY2hpXCA7CivmkqQgPiB0ZXRzdVwgOwor5pKHID4gaGV0c3VcIDsKK+aShSA+IGtldHN1XCA7CivmkYsgPiBzYXRzdVwgOwor5pGCID4gc2V0c3VcIDsKK+aQsCA+IGtvdHN1XCA7CivmkKkgPiBrZXRzdVwgOwor5pCQID4gY2hpa3VcIDsKK+aPsyA+IHNldHN1XCA7Civmj7IgPiBzZXRzdVwgOwor5o+sID4gdG90c3VcIDsKK+aPoCA+IHNhdHN1XCA7Civmj5EgPiBnZXRzdVwgOwor5o6fID4gb2tpdGVcIDsKK+aOhyA+IHRhdHN1XCA7Civmjb0gPiBzb3RzdVwgOwor5o26ID4gbmF0c3VcIDsKK+aNuCA+IHRvdHN1XCA7CivmjZ0gPiB0YXRzdVwgOwor5o2PID4gZGV0c3VcIDsKK+aNiyA+IHJhdHN1XCA7CivmjLYgPiBreW9rdVwgOwor5oypID4gdGF0c3VcIDsKK+aMiCA+IGtldHN1XCA7Civmi64gPiBraXRzdVwgOwor5ouJID4gcmF0c3VcIDsKK+aKuSA+IG1hdHN1XCA7CivmipAgPiBkb3RzdVwgOwor5oqIID4gZ2V0c3VcIDsKK+aJpCA+IGdvdHN1XCA7CivmiY4gPiBzYXRzdVwgOwor5oigID4gc2hva3VcIDsKK+aIniA+IGthdHN1XCA7CivmiJwgPiB0ZXRzdVwgOwor5oibID4ga2F0c3VcIDsKK+aIhCA+IGt5YWt1XCA7Civmh6QgPiBjaHl1dVwgOwor5oeOID4gc2hva3VcIDsKK+aGoCA+IGtldHN1XCA7Civmhp8gPiBzaG9rdVwgOwor5oaLID4gaGV0c3VcIDsKK+aEjiA+IGh5b2t1XCA7CivmhIogPiBoeW9rdVwgOwor5oSCID4gYm90c3VcIDsKK+aDmSA+IHRldHN1XCA7CivmgoogPiB0ZXRzdVwgOwor5oGkID4ganV0c3VcIDsKK+aAtSA+IGp1dHN1XCA7CivmgK0gPiBoaXRzdVwgOwor5oCrID4gZnV0c3VcIDsKK+aAmyA+IGRhdHN1XCA7Civlv5QgPiBraXRzdVwgOwor5b6PID4gY2hva3VcIDsKK+W9vyA+IGZ1dHN1XCA7CivlvbQgPiBzaGFrdVwgOwor5b2DID4gaGl0c3VcIDsKK+W9giA+IGhvdHN1XCA7CivlvLwgPiBoaXRzdVwgOwor5by7ID4gaGl0c3VcIDsKK+W8piA+IHRzdXJ1XCA7CivlvKEgPiBrdXRzdVwgOwor5buQID4gdW1heWFcIDsKK+W6giA+IHNob2t1XCA7Civlua8gPiBzZXRzdVwgOwor5bmtID4gYmV0c3VcIDsKK+W4tCA+IHNhdHN1XCA7CivluKUgPiBzb3RzdVwgOwor5biaID4gaG91a2lcIDsKK+W4lSA+IGJhdHN1XCA7Civlt78gPiBodXRzdVwgOwor5beAID4gc2F0c3VcIDsKK+W2sSA+IGthdHN1XCA7Civltq0gPiBnYXRzdVwgOwor5baNID4gc2hpaHVcIDsKK+W1vSA+IHRldHN1XCA7CivltbIgPiBnZXRzdVwgOwor5bWlID4ga2V0c3VcIDsKK+W1kSA+IGtldHN1XCA7CivltYIgPiByaXRzdVwgOwor5bSxID4gc2hva3VcIDsKK+W0qyA+IGt1dHN1XCA7CivltJsgPiBrdXRzdVwgOwor5bOgID4gdG91Z2VcIDsKK+WzmiA+IGJpdHN1XCA7Civls4wgPiB0ZXRzdVwgOwor5bKqID4gaHV0c3VcIDsKK+WypCA+IGtldHN1XCA7Civlso8gPiBndXdhblwgOwor5bKKID4gc2V0c3VcIDsKK+WyiSA+IGJ1dHN1XCA7CivlsbwgPiBnb3RzdVwgOwor5bG5ID4ga2l0c3VcIDsKK+WxtSA+IGdhdHN1XCA7CivlsbQgPiByeW9rdVwgOwor5bGrID4ga3lha3VcIDsKK+WxqSA+IGt5YWt1XCA7CivlsLMgPiBrb3RzdVwgOwor5bCXID4gc2h1a3VcIDsKK+WwkCA+IHNldHN1XCA7Civlr6MgPiBrb3RzdVwgOwor5a+UID4gc2hva3VcIDsKK+WuuyA+IG1pdHN1XCA7CivlrpMgPiBiaXRzdVwgOwor5a6KID4gdG90c3VcIDsKK+WtvSA+IGdldHN1XCA7CivlrbwgPiBnZXRzdVwgOwor5a2wID4gaXp1cmVcIDsKK+WtmyA+IGJvdHN1XCA7CivlrZIgPiBrZXRzdVwgOwor5a2RID4ga2V0c3VcIDsKK+WtjiA+IHNob2t1XCA7CivlrIcgPiBrdXdhaVwgOwor5ayCID4gc2hva3VcIDsKK+WrsyA+IGhldHN1XCA7Civlq6EgPiBjaGFrdVwgOwor5aqfID4gc2V0c3VcIDsKK+WpvCA+IHNoYWt1XCA7CivlqYwgPiBzaHVrdVwgOwor5aiOID4ga2V0c3VcIDsKK+WntCA+IHJldHN1XCA7Civlp6EgPiBrYXRzdVwgOwor5aeeID4ga2l0c3VcIDsKK+WmuiA+IGJhdHN1XCA7CivlprIgPiBkYXRzdVwgOwor5aawID4gY2hha3VcIDsKK+WmrSA+IGhhdHN1XCA7CivlpoEgPiBzaGFrdVwgOwor5aWvID4ga2F0c3VcIDsKK+WlkSA+IHNldHN1XCA7CivlpLcgPiBlYmlzdVwgOwor5aSsID4ga2V0c3VcIDsKK+WkqCA+IHNob2t1XCA7CivlpJkgPiBzaHVrdVwgOwor5aO3ID4gdHN1Ym9cIDsKK+WioiA+IGhhdHN1XCA7CivloowgPiBzaGFrdVwgOwor5aKGID4gdGV0c3VcIDsKK+WhmyA+IHJpdHN1XCA7CivloKggPiBnZXRzdVwgOwor5Z+0ID4gc2hva3VcIDsKK+WfsSA+IHNoeXV1XCA7Civln5MgPiByYWNoaVwgOwor5Z6kID4gdGV0c3VcIDsKK+WeoSA+IGhhdHN1XCA7CivlnpQgPiBzaHlvdVwgOwor5Z6PID4gcm90c3VcIDsKK+WegyA+IHJhdHN1XCA7CivlnbogPiBoYXRzdVwgOwor5Z25ID4ga2V0c3VcIDsKK+WdsiA+IGh1dHN1XCA7CivlnaogPiB0c3Vib1wgOwor5Zy/ID4ga2F0c3VcIDsKK+WcvSA+IGJvdHN1XCA7CivlnLQgPiBzaGFrdVwgOwor5ZyqID4gZ2l0c3VcIDsKK+WcoyA+IGt1dHN1XCA7Civlm64gPiBvdG9yaVwgOwor5ZurID4ga290c3VcIDsKK+WbkyA+IGtldHN1XCA7Civlm5EgPiBzaG9rdVwgOwor5ZuQID4gc2F0c3VcIDsKK+WbiyA+IHNhdHN1XCA7Civlmr0gPiBzZXRzdVwgOwor5Zq8ID4gc2hha3VcIDsKK+WaniA+IHRldHN1XCA7CivlmbYgPiBrYXRzdVwgOwor5ZmyID4ga3V3YWlcIDsKK+WZsSA+IGt5YWt1XCA7CivlmaAgPiB0YXRzdVwgOwor5ZmYID4ga2V0c3VcIDsKK+WZiCA+IHNodWt1XCA7CivlmYQgPiBraXRzdVwgOwor5ZixID4gc2hva3VcIDsKK+WYoCA+IGthdHN1XCA7CivlmI4gPiBrYXRzdVwgOwor5Ze2ID4gaGl0c3VcIDsKK+WXpyA+IGdhcm9uXCA7Civll6IgPiByYXRzdVwgOwor5ZeWID4gc2h1aHVcIDsKK+WXlSA+IHNob2t1XCA7Civll5AgPiBrYXRzdVwgOwor5ZarID4ga2l0c3VcIDsKK+WWnSA+IGthdHN1XCA7CivllowgPiBzaHVrdVwgOwor5ZaGID4gdGV0c3VcIDsKK+WVoCA+IHRldHN1XCA7CivllZIgPiBrb3RzdVwgOwor5ZS/ID4ga290c3VcIDsKK+WUsCA+IHNldHN1XCA7Civlk74gPiB5YXRzdVwgOwor5ZO3ID4gcmV0c3VcIDsKK+WTsyA+IHRhdHN1XCA7Civlk7EgPiBob3RzdVwgOwor5ZOrID4gc2hva3VcIDsKK+WTmCA+IHNhc291XCA7Civlk4sgPiB0ZXRzdVwgOwor5ZKxID4gc2F0c3VcIDsKK+WSrSA+IGtpdHN1XCA7CivlkqcgPiByZXRzdVwgOwor5ZKIID4gaHV0c3VcIDsKK+WShyA+IGhldHN1XCA7Civlkb4gPiB0YXRzdVwgOwor5ZGQID4gdG90c3VcIDsKK+WQtyA+IGtldHN1XCA7CivlkLYgPiB0b3RzdVwgOwor5ZChID4gaGl0c3VcIDsKK+WQiyA+IGluY2hpXCA7CivlkIMgPiBraXRzdVwgOwor5Y+VID4gdGV0c3VcIDsKK+WPkCA+IGhhdHN1XCA7CivljqkgPiB1bWF5YVwgOwor5Y6lID4ga2V0c3VcIDsKK+WNvCA+IGdvdHN1XCA7CivljbsgPiBreWFrdVwgOwor5Y25ID4ganV0c3VcIDsKK+WNqSA+IHNldHN1XCA7CivljaggPiBzZXRzdVwgOwor5Y2NID4gbWFuamlcIDsKK+WNhiA+IHNvdHN1XCA7CivljLEgPiBoaXRzdVwgOwor5YyrID4ga290c3VcIDsKK+WMpCA+IGt5YWt1XCA7CivljKIgPiBrb3RzdVwgOwor5YyDID4ga2F0c3VcIDsKK+WMgSA+IG1vbm1lXCA7Civli7ogPiBzaGFrdVwgOwor5Yu2ID4ga2V0c3VcIDsKK+WLqiA+IGt5YWt1XCA7Civli5YgPiBreWFrdVwgOwor5YuDID4gYm90c3VcIDsKK+WKvSA+IHJldHN1XCA7CivlirwgPiBrYXRzdVwgOwor5YqaID4gY2hha3VcIDsKK+WKhCA+IHNhdHN1XCA7CivlioIgPiBrZXRzdVwgOwor5YqAID4ga2F0c3VcIDsKK+WJnyA+IHRldHN1XCA7CivliY4gPiBzYXRzdVwgOwor5YmMID4gcmF0c3VcIDsKK+WIriA+IGthdHN1XCA7CivliKsgPiBiZXRzdVwgOwor5YicID4gaHV0c3VcIDsKK+WIliA+IGdldHN1XCA7CivliJQgPiBrZXRzdVwgOwor5YeTID4gcml0c3VcIDsKK+WGvSA+IHJldHN1XCA7CivlhrkgPiBodXRzdVwgOwor5YazID4ga2V0c3VcIDsKK+WEsiA+IG1vdWtlXCA7Civlg6ogPiBraXRzdVwgOwor5YOmID4gc2h5dXVcIDsKK+WDgSA+IHNldHN1XCA7CivlgqAgPiBoYXRzdVwgOwor5YKIID4gcml0c3VcIDsKK+WChCA+IGthdHN1XCA7CivlgbAgPiBzZXRzdVwgOwor5YGfID4ga3V3YXVcIDsKK+WBiCA+IGtldHN1XCA7CivlgJQgPiBrdXRzdVwgOwor5YCQID4gc2h1a3VcIDsKK+WAjyA+IHNodWt1XCA7CivlgIwgPiBrdXdhblwgOwor5L+2ID4gc2h1a3VcIDsKK+S+vCA+IGhvdHN1XCA7CivkvrsgPiB0YXRzdVwgOwor5L63ID4ga3lva3VcIDsKK+S+mSA+IGNob2t1XCA7CivkvpMgPiByb3RzdVwgOwor5L6QID4ga3lva3VcIDsKK+S9uCA+IGthdHN1XCA7CivkvbYgPiBraXRzdVwgOwor5L2qID4ga3V3YWlcIDsKK+S9miA+IHRldHN1XCA7CivkvZYgPiBoaXRzdVwgOwor5Ly1ID4ga3lva3VcIDsKK+S8syA+IHNldHN1XCA7CivkvJwgPiBzb3RzdVwgOwor5LyQID4gYmF0c3VcIDsKK+S7tCA+IGdhdHN1XCA7Civku6EgPiBraXRzdVwgOwor5LuIID4gaGF0c3VcIDsKK+S6nyA+IGt5b2t1XCA7Civkuo0gPiBjaG9rdVwgOwor5LqFID4ga2V0c3VcIDsKK+S5tCA+IHNldHN1XCA7CivkuYQgPiBzaGltZVwgOwor5LmAID4gZnV0c3VcIDsKK+S4vyA+IGhldHN1XCA7CivkuLIgPiBrdXNoaVwgOwor44CGID4gc2hpbWVcIDsKK+efsyA+IGtva3VcIDsKK+i/qyA+IGhha3VcIDsKK+i/hCA+IG1hZGVcIDsKK+W/gyA+IHNoaW5cIDsKK+i+vCA+IGtvbXVcIDsKK+W+tCA+IGNob3VcIDsKK+W+syA+IHRva3VcIDsKK+i+sSA+IGpva3VcIDsKK+eerSA+IHJ5b3VcIDsKK+eerCA+IHNodW5cIDsKK+W+qSA+IGZ1a3VcIDsKK+i+myA+IHNoaW5cIDsKK+W+lyA+IHRva3VcIDsKK+W9vCA+IGthcmVcIDsKK+W9uSA+IHlha3VcIDsKK+W9sSA+IGthZ2VcIDsKK+W9qyA+IGNob3VcIDsKK+edpiA+IGJva3VcIDsKK+edoyA+IHRva3VcIDsKK+W8viA+IHRhbWFcIDsKK+ecuiA+IGNob3VcIDsKK+W8tyA+IGt5b3VcIDsKK+W8tSA+IGNob3VcIDsKK+i8ryA+IHNodXVcIDsKK+ecniA+IHNoaW5cIDsKK+W8lCA+IGNob3VcIDsKK+eciSA+IG1heXVcIDsKK+i8gyA+IGtha3VcIDsKK+ebtCA+IGhpdGFcIDsKK+i7kiA+IG5va2lcIDsKK+ebiiA+IHlha3VcIDsKK+W7giA+IHNob3VcIDsKK+eavyA+IHNhcmFcIDsKK+W6tSA+IGlvcmlcIDsKK+eariA+IGthd2FcIDsKK+W6rSA+IG5pd2FcIDsKK+W6lyA+IG1pc2VcIDsKK+W6lSA+IHNva29cIDsKK+i6kSA+IHRla2lcIDsKK+i6jSA+IHlha3VcIDsKK+i6iiA+IGNodXVcIDsKK+W6iiA+IHl1a2FcIDsKK+eahCA+IG1hdG9cIDsKK+W6gSA+IGNob3VcIDsKK+W5uSA+IG1pa2lcIDsKK+i5tCA+IHNodXVcIDsKK+W5syA+IGhpcmFcIDsKK+i5oCA+IHNla2lcIDsKK+i5nyA+IHNla2lcIDsKK+eZliA+IGt1c2VcIDsKK+W5hSA+IGhhYmFcIDsKK+eZgiA+IHJ5b3VcIDsKK+W4uCA+IHRvd2FcIDsKK+W4rSA+IHNla2lcIDsKK+W4jCA+IG1hcmVcIDsKK+W4gyA+IG51bm9cIDsKK+W3uyA+IG1ha2lcIDsKK+i3syA+IGNob3VcIDsKK+W3nSA+IGthd2FcIDsKK+eXhyA+IHNob3VcIDsKK+i2syA+IGFzaGlcIDsKK+i2iiA+IGV0c3VcIDsKK+i2hSA+IGNob3VcIDsKK+i1qyA+IGtha3VcIDsKK+eVqyA+IGtha3VcIDsKK+i1pCA+IHNla2lcIDsKK+eVmSA+IHJ5dXVcIDsKK+eUuyA+IGtha3VcIDsKK+eUsyA+IHNhcnVcIDsKK+eUnyA+IG5hbWFcIDsKK+eUmiA+IHNoaW5cIDsKK+W0liA+IGdha2VcIDsKK+W0jiA+IHNha2lcIDsKK+WzsCA+IG1pbmVcIDsKK+izkSA+IHNoaW5cIDsKK+iziiA+IHpva3VcIDsKK+izgyA+IGNoaW5cIDsKK+iyrCA+IHNla2lcIDsKK+WxsSA+IHlhbWFcIDsKK+WxrCA+IHpva3VcIDsKK+WxniA+IHpva3VcIDsKK+WxkSA+IGt1enVcIDsKK+ixhiA+IG1hbWVcIDsKK+eQtCA+IGtvdG9cIDsKK+WwsSA+IHNodXVcIDsKK+WwkSA+IHNob3VcIDsKK+WwjyA+IHNob3VcIDsKK+WwhiA+IHNob3VcIDsKK+eQgyA+IHRhbWFcIDsKK+WvviA+IHRzdWlcIDsKK+WvuiA+IHRlcmFcIDsKK+WvtSA+IGNob3VcIDsKK+WvqSA+IHNoaW5cIDsKK+WvpSA+IHJ5b3VcIDsKK+WvoiA+IHNoaW5cIDsKK+ePjSA+IGNoaW5cIDsKK+WvjCA+IHRvbWlcIDsKK+WvgiA+IHNhYmlcIDsKK+WuvyA+IHlhZG9cIDsKK+WuriA+IG1peWFcIDsKK+WupCA+IG11cm9cIDsKK+WulyA+IHNodXVcIDsKK+eOliA+IGt5dXVcIDsKK+eOiSA+IGRhbWFcIDsKK+WuiSA+IHlhc3VcIDsKK+WuiCA+IG1vcmlcIDsKK+WuhSA+IHRha3VcIDsKK+iugCA+IHRva3VcIDsKK+WtuCA+IGdha3VcIDsKK+eNsiA+IGtha3VcIDsKK+itryA+IHlha3VcIDsKK+WtqyA+IG1hZ29cIDsKK+eNqCA+IGRva3VcIDsKK+WtpiA+IGdha3VcIDsKK+itiSA+IHNob3VcIDsKK+eNhCA+IGdva3VcIDsKK+eMvyA+IHNhcnVcIDsKK+eMqyA+IG5la29cIDsKK+isoSA+IHV0YWlcIDsKK+isjiA+IG5hem9cIDsKK+WsjCA+IGt5b3VcIDsKK+isgSA+IGV0c3VcIDsKK+eLuSA+IGt5b3VcIDsKK+eLrSA+IGt5b3VcIDsKK+eLgiA+IGt5b3VcIDsKK+WrgSA+IHlvbWVcIDsKK+iqvyA+IGNob3VcIDsKK+iqsCA+IGRhcmVcIDsKK+iqrSA+IHRva3VcIDsKK+iqgiA+IGNob3VcIDsKK+WpvyA+IG11a29cIDsKK+eJuSA+IHRva3VcIDsKK+ipsyA+IHNob3VcIDsKK+eJqSA+IG1vbm9cIDsKK+eJpyA+IGJva3VcIDsKK+eJmyA+IHVzaGlcIDsKK+iplSA+IGh5b3VcIDsKK+eJkiA+IGNob3VcIDsKK+WphiA+IGJhYmFcIDsKK+iouiA+IHNoaW5cIDsKK+iosyA+IHdha2VcIDsKK+ionyA+IHNob3VcIDsKK+WooCA+IHNoaW5cIDsKK+iolyA+IHRha3VcIDsKK+eIhiA+IGJha3VcIDsKK+WnqyA+IGhpbWVcIDsKK+eHkiA+IHNob3VcIDsKK+imuiA+IGtha3VcIDsKK+immiA+IGtha3VcIDsKK+WmmSA+IG15b3VcIDsKK+eGiiA+IGt1bWFcIDsKK+imhiA+IGZ1a3VcIDsKK+ilsiA+IHNodXVcIDsKK+eFpyA+IHNob3VcIDsKK+eFpCA+IHN1c3VcIDsKK+ilgSA+IGt5b3VcIDsKK+eEvCA+IHlha2lcIDsKK+WkqyA+IG90dG9cIDsKK+eEpiA+IHNob3VcIDsKK+WkoiA+IHl1bWVcIDsKK+WknCA+IHlvcnVcIDsKK+WkliA+IGhva2FcIDsKK+ikhyA+IGZ1a3VcIDsKK+ijviA+IHN1c29cIDsKK+WjsSA+IGljaGlcIDsKK+WjkyA+IGF0c3VcIDsKK+WjgSA+IGthYmVcIDsKK+eCuiA+IHRhbWVcIDsKK+eCrSA+IHN1bWlcIDsKK+WiqCA+IHN1bWlcIDsKK+iiliA+IHNvZGVcIDsKK+WikyA+IGhha2FcIDsKK+ihtyA+IGNodXVcIDsKK+ihqCA+IGh5b3VcIDsKK+WhqSA+IHNoaW9cIDsKK+ihnSA+IHNob3VcIDsKK+WhniA+IHNva3VcIDsKK+ihkyA+IHN1YmVcIDsKK+ihjCA+IGd5b3VcIDsKK+ihhiA+IHNodXVcIDsKK+igoiA+IHNodW5cIDsKK+eAnSA+IHJla2lcIDsKK+WggCA+IGhvcmlcIDsKK+a/ryA+IHRha3VcIDsKK+a/gSA+IGRha3VcIDsKK+a/gCA+IGdla2lcIDsKK+a+pCA+IHRha3VcIDsKK+WeoyA+IGtha2lcIDsKK+WeiyA+IGthdGFcIDsKK+a+hCA+IGNob3VcIDsKK+a9riA+IHNoaW9cIDsKK+idoCA+IGZ1a3VcIDsKK+idiSA+IHNlbWlcIDsKK+WdgiA+IHNha2FcIDsKK+a8vyA+IHNob3VcIDsKK+m8uyA+IGhhbmFcIDsKK+a8siA+IGNob3VcIDsKK+WcpyA+IGF0c3VcIDsKK+a8oCA+IGJha3VcIDsKK+WckiA+IHNvbm9cIDsKK+WciyA+IGtva3VcIDsKK+icgyA+IHNoaW5cIDsKK+a8giA+IGh5b3VcIDsKK+a8gSA+IHJ5b3VcIDsKK+WbvSA+IGt1bmlcIDsKK+m7tCA+IGthYmlcIDsKK+m7mSA+IG1va3VcIDsKK+m7mCA+IG1va3VcIDsKK+m7kiA+IGt1cm9cIDsKK+m7jSA+IGtpYmlcIDsKK+ibhyA+IGhlYmlcIDsKK+WbgSA+IHNob3VcIDsKK+a6uiA+IGRla2lcIDsKK+m6piA+IG11Z2lcIDsKK+m6pSA+IGJha3VcIDsKK+iapCA+IG5vbWlcIDsKK+a6oiA+IGl0c3VcIDsKK+a6nSA+IG1pem9cIDsKK+a6nCA+IHJ5dXVcIDsKK+iZjiA+IHRvcmFcIDsKK+a4rCA+IHNva3VcIDsKK+WYlyA+IHNob3VcIDsKK+a4iSA+IHNob3VcIDsKK+m3uSA+IHRha2FcIDsKK+a3sSA+IHNoaW5cIDsKK+iXpSA+IHlha3VcIDsKK+iXpCA+IGZ1amlcIDsKK+WXhSA+IGt5dXVcIDsKK+iXgSA+IHdhcmFcIDsKK+a2vCA+IHJ5b3VcIDsKK+a2nCA+IHRva3VcIDsKK+WWiyA+IGNob3VcIDsKK+WWiSA+IG5vZG9cIDsKK+a2iCA+IHNob3VcIDsKK+a1uCA+IHNoaW5cIDsKK+a1tCA+IHlva3VcIDsKK+a1nCA+IGhhbWFcIDsKK+a1miA+IHNodW5cIDsKK+iVjiA+IGt5b3VcIDsKK+WVhiA+IHNob3VcIDsKK+a1gSA+IHJ5dXVcIDsKK+a0siA+IHNodXVcIDsKK+WUsSA+IHNob3VcIDsKK+WUryA+IHRhZGFcIDsKK+iUrSA+IGthZ2VcIDsKK+a0pSA+IHNoaW5cIDsKK+a0niA+IGhvcmFcIDsKK+a0myA+IHJha3VcIDsKK+WUliA+IG9zaGlcIDsKK+iTriA+IGhhc3VcIDsKK+WTrSA+IGtva3VcIDsKK+mzqSA+IGhhdG9cIDsKK+azqCA+IGNodXVcIDsKK+mzpSA+IHRvcmlcIDsKK+azpSA+IGRvcm9cIDsKK+azoyA+IGt5dXVcIDsKK+azoiA+IG5hbWlcIDsKK+iTiyA+IGZ1dGFcIDsKK+aziiA+IGhha3VcIDsKK+azgSA+IGt5b3VcIDsKK+WSvSA+IG5vZG9cIDsKK+ayvCA+IG51bWFcIDsKK+iSuyA+IGpha3VcIDsKK+aysyA+IGthd2FcIDsKK+iSsiA+IGdhbWFcIDsKK+WSsyA+IHNla2lcIDsKK+WSsiA+IHNob3VcIDsKK+ayoiA+IHNhd2FcIDsKK+WSjiA+IGt5dXVcIDsKK+ayiCA+IGNoaW5cIDsKK+axsiA+IGt5dXVcIDsKK+WRqCA+IHNodXVcIDsKK+mxiCA+IHRhcmFcIDsKK+WRiiA+IGtva3VcIDsKK+axgiA+IGt5dXVcIDsKK+iQvSA+IG9jaGlcIDsKK+WQuCA+IGt5dXVcIDsKK+awtCA+IG1penVcIDsKK+awkSA+IHRhbWlcIDsKK+WQiiA+IGNob3VcIDsKK+WQhCA+IGtha3VcIDsKK+WPsyA+IG1pZ2lcIDsKK+iPryA+IGhhbmFcIDsKK+avrCA+IGt5dXVcIDsKK+WPrCA+IHNob3VcIDsKK+WPqyA+IGt5b3VcIDsKK+WPqiA+IHRhZGFcIDsKK+WPpCA+IGZ1cnVcIDsKK+WPliA+IHRvcmlcIDsKK+avkiA+IGRva3VcIDsKK+WPjiA+IHNodXVcIDsKK+avjSA+IGhhaGFcIDsKK+WPjCA+IGZ1dGFcIDsKK+iPiiA+IGtpa3VcIDsKK+WPiyA+IHRvbW9cIDsKK+WPiiA+IGt5dXVcIDsKK+WPiCA+IG1hdGFcIDsKK+auvyA+IGRvbm9cIDsKK+auuyA+IGthcmFcIDsKK+iOoiA+IHNheWFcIDsKK+WOnyA+IGhhcmFcIDsKK+WOhCA+IHlha3VcIDsKK+attCA+IHJla2lcIDsKK+WNsyA+IHNva3VcIDsKK+WNmiA+IGJha3VcIDsKK+WNlCA+IGt5b3VcIDsKK+WNkyA+IHRha3VcIDsKK+iNiSA+IGt1c2FcIDsKK+WNhyA+IG1hc3VcIDsKK+mssSA+IHV0c3VcIDsKK+assiA+IHlva3VcIDsKK+asnSA+IHV0c3VcIDsKK+msmiA+IGhpZ2VcIDsKK+WMmSA+IHNhamlcIDsKK+WMlyA+IGhva3VcIDsKK+iMjiA+IGt1a2lcIDsKK+iMhSA+IGtheWFcIDsKK+WMgiA+IG5pb3VcIDsKK+mrtyA+IG1hZ2VcIDsKK+mrrSA+IGhpZ2VcIDsKK+mrqiA+IGthbWlcIDsKK+iLpSA+IGpha3VcIDsKK+WLnSA+IHNob3VcIDsKK+mrmCA+IHRha2FcIDsKK+iLlCA+IGtva2VcIDsKK+iKsSA+IGhhbmFcIDsKK+mqqCA+IGhvbmVcIDsKK+WKqSA+IHN1a2VcIDsKK+WKhyA+IGdla2lcIDsKK+WKgyA+IGtha3VcIDsKK+WJvSA+IGh5b3VcIDsKK+WJsiA+IHdhcmlcIDsKK+iJryA+IHJ5b3VcIDsKK+WJpSA+IGhha3VcIDsKK+apnyA+IGhhdGFcIDsKK+mpmiA+IGt5b3VcIDsKK+WJiiA+IHNha3VcIDsKK+WJhyA+IHNva3VcIDsKK+WIuyA+IGtva3VcIDsKK+iIuSA+IGZ1bmVcIDsKK+WIuiA+IHRvZ2VcIDsKK+iItiA+IGhha3VcIDsKK+aoqiA+IHlva29cIDsKK+iInyA+IGZ1bmVcIDsKK+aomSA+IGh5b3VcIDsKK+iIjiA+IHNla2lcIDsKK+iIiiA+IGt5dXVcIDsKK+WIiCA+IGthcmlcIDsKK+aohSA+IG1vbWlcIDsKK+aogiA+IGdha3VcIDsKK+iHrSA+IHNodXVcIDsKK+iHoyA+IHNoaW5cIDsKK+mnkiA+IGtvbWFcIDsKK+mnkCA+IGNodXVcIDsKK+iHjSA+IGhlc29cIDsKK+anjCA+IHRzdWlcIDsKK+WHjCA+IHJ5b3VcIDsKK+anhyA+IG1ha2lcIDsKK+mmtCA+IHNodW5cIDsKK+WGrCA+IGZ1eXVcIDsKK+iGnSA+IGhpemFcIDsKK+iGnCA+IG1ha3VcIDsKK+ammyA+IHNoaW5cIDsKK+mmmSA+IGt5b3VcIDsKK+mmliA+IGt1YmlcIDsKK+WGhiA+IG1hcnVcIDsKK+WGhSA+IHVjaGlcIDsKK+alvSA+IHJha3VcIDsKK+iFuSA+IGhhcmFcIDsKK+altSA+IGdva3VcIDsKK+WFsSA+IGRvbW9cIDsKK+alrSA+IHdhemFcIDsKK+WFrSA+IHJva3VcIDsKK+WFqSA+IHJ5b3VcIDsKK+WFpSA+IG55dXVcIDsKK+WFgyA+IG1vdG9cIDsKK+iEoyA+IHNoaW5cIDsKK+WEnyA+IHNob3VcIDsKK+iEmiA+IGFzaGlcIDsKK+WEmCA+IG1hbWFcIDsKK+akjiA+IHRzdWlcIDsKK+iEiiA+IHNla2lcIDsKK+iEhyA+IHdha2lcIDsKK+iEhSA+IGt5b3VcIDsKK+iEgiA+IHlhbmlcIDsKK+iDvSA+IHlva3VcIDsKK+iDuCA+IG11bmVcIDsKK+ajriA+IG1vcmlcIDsKK+ajmiA+IHRhbmFcIDsKK+WDmiA+IHJ5b3VcIDsKK+WDlSA+IGJva3VcIDsKK+WDkSA+IGt5b3VcIDsKK+WCtyA+IHNob3VcIDsKK+iCqSA+IGthdGFcIDsKK+iCnSA+IGtpbW9cIDsKK+iCmCA+IGhpamlcIDsKK+WCmCA+IGthc2FcIDsKK+iCliA+IHNob3VcIDsKK+iCjCA+IGhhZGFcIDsKK+WCjSA+IHdha2lcIDsKK+iCiSA+IG5pa3VcIDsKK+aigyA+IHRla29cIDsKK+iBvSA+IGNob3VcIDsKK+WBvSA+IG5pc2VcIDsKK+iBtCA+IGNob3VcIDsKK+iBsyA+IHNob3VcIDsKK+WBtCA+IGhhdGFcIDsKK+iBmiA+IHNodXVcIDsKK+ahkCA+IGtpcmlcIDsKK+iBiiA+IHJ5b3VcIDsKK+ahgyA+IG1vbW9cIDsKK+ahgSA+IGtldGFcIDsKK+agvCA+IGtha3VcIDsKK+mguCA+IGt1YmlcIDsKK+iAsyA+IG1pbWlcIDsKK+mgrCA+IGhvaG9cIDsKK+mgmCA+IHJ5b3VcIDsKK+aglyA+IGt1cmlcIDsKK+iAhSA+IG1vbm9cIDsKK+mggyA+IGdvcm9cIDsKK+afvyA+IGtha2lcIDsKK+aftSA+IHNha3VcIDsKK+S/riA+IHNodXVcIDsKK+afmiA+IHl1enVcIDsKK+S/lyA+IHpva3VcIDsKK+aflCA+IG55dXVcIDsKK+e/kiA+IHNodXVcIDsKK+e/jCA+IHlva3VcIDsKK+S/gyA+IHNva3VcIDsKK+S+tSA+IHNoaW5cIDsKK+S+oSA+IGF0YWlcIDsKK+e+niA+IHNodXVcIDsKK+S+myA+IHRvbW9cIDsKK+memCA+IHNheWFcIDsKK+mdqSA+IGthd2FcIDsKK+S9nCA+IHNha3VcIDsKK+adliA+IHRzdWVcIDsKK+adkSA+IG11cmFcIDsKK+adjyA+IGFuenVcIDsKK+adiSA+IHN1Z2lcIDsKK+S8vSA+IHRvZ2lcIDsKK+actCA+IGJva3VcIDsKK+S8tCA+IHRvbW9cIDsKK+S8ryA+IGhha3VcIDsKK+acrSA+IGZ1ZGFcIDsKK+acrCA+IG1vdG9cIDsKK+mcpyA+IGtpcmlcIDsKK+S8kSA+IGt5dXVcIDsKK+S8jyA+IGZ1a3VcIDsKK+acjSA+IGZ1a3VcIDsKK+mchyA+IHNoaW5cIDsKK+mbsiA+IGt1bW9cIDsKK+S7siA+IG5ha2FcIDsKK+S7sCA+IGd5b3VcIDsKK+S7riA+IGthcmlcIDsKK+mbqiA+IHl1a2lcIDsKK+abnSA+IGJha3VcIDsKK+S7liA+IGhva2FcIDsKK+mbjCA+IG1lc3VcIDsKK+mbhiA+IHNodXVcIDsKK+S7hCA+IHNva3VcIDsKK+S6uiA+IGhpdG9cIDsKK+S6qyA+IGt5b3VcIDsKK+S6piA+IG1hdGFcIDsKK+aaoiA+IGNob3VcIDsKK+manCA+IHNob3VcIDsKK+mamSA+IHN1a2lcIDsKK+malCA+IGtha3VcIDsKK+e6jCA+IHpva3VcIDsKK+S6iyA+IGtvdG9cIDsKK+mahiA+IHJ5dXVcIDsKK+aahyA+IGhpbWFcIDsKK+mahSA+IHN1bWlcIDsKK+S6hiA+IHJ5b3VcIDsKK+mZuCA+IHJva3VcIDsKK+aZtiA+IHNob3VcIDsKK+mZsCA+IGthZ2VcIDsKK+aZnSA+IGNodXVcIDsKK+S5iyA+IGtvcmVcIDsKK+S5hSA+IGt5dXVcIDsKK+aZgiA+IHRva2lcIDsKK+aYvCA+IGhpcnVcIDsKK+S4uCA+IG1hcnVcIDsKK+aYrSA+IHNob3VcIDsKK+S4rSA+IG5ha2FcIDsKK+aYqCA+IHNha3VcIDsKK+e4piA+IHRhdGVcIDsKK+aYpSA+IGhhcnVcIDsKK+S4oSA+IHJ5b3VcIDsKK+e4myA+IGJha3VcIDsKK+e4iyA+IHRzdWlcIDsKK+S4iCA+IGRha2VcIDsKK+aYhyA+IHNob3VcIDsKK+e4hCA+IG5hd2FcIDsKK+S4gCA+IGljaGlcIDsKK+aXqCA+IG11bmVcIDsKK+aXlyA+IGhhdGFcIDsKK+aXjyA+IHpva3VcIDsKK+mXhyA+IHlhbWlcIDsKK+aXhSA+IHRhYmlcIDsKK+e2vyA+IHdhdGFcIDsKK+mWviA+IHlva3VcIDsKK+e2viA+IHJ5b3VcIDsKK+mWsiA+IGV0c3VcIDsKK+aWsCA+IHNoaW5cIDsKK+mWoyA+IGtha3VcIDsKK+aWpSA+IHNla2lcIDsKK+mWoiA+IHNla2lcIDsKK+e2miA+IHpva3VcIDsKK+aWmSA+IHJ5b3VcIDsKK+mWkSA+IGhpbWFcIDsKK+aWkSA+IG11cmFcIDsKK+aWjiA+IHRva2lcIDsKK+e1uSA+IGtpbnVcIDsKK+aVtSA+IHRla2lcIDsKK+e1piA+IGt5dXVcIDsKK+e1oSA+IHJha3VcIDsKK+aVmSA+IGt5b3VcIDsKK+aVkSA+IGt5dXVcIDsKK+e1hCA+IGt1bWlcIDsKK+e0uSA+IHNob3VcIDsKK+aUtiA+IHNodXVcIDsKK+e0syA+IHNoaW5cIDsKK+aUqyA+IGtha3VcIDsKK+e0oiA+IHNha3VcIDsKK+e0miA+IGt5dXVcIDsKK+e0mSA+IGthbWlcIDsKK+e0kCA+IGhpbW9cIDsKK+e0hSA+IGJlbmlcIDsKK+e0hCA+IHlha3VcIDsKK+aTsSA+IGtha3VcIDsKK+ezpyA+IHJ5b3VcIDsKK+aSsiA+IGJva3VcIDsKK+eypyA+IHNob3VcIDsKK+eypSA+IGtheXVcIDsKK+eyiSA+IGtvbmFcIDsKK+aSgyA+IGdla2lcIDsKK+aRuiA+IHNob3VcIDsKK+exsyA+IGtvbWVcIDsKK+exoCA+IGthZ29cIDsKK+exjSA+IHNla2lcIDsKK+mQmCA+IGthbmVcIDsKK+mQkCA+IHJ5b3VcIDsKK+aPuiA+IHl1cmlcIDsKK+evrSA+IGthZ29cIDsKK+evpCA+IHRva3VcIDsKK+aPjyA+IGJ5b3VcIDsKK+aOtCA+IGtha3VcIDsKK+eusSA+IGhha29cIDsKK+euoSA+IGt1ZGFcIDsKK+mNtSA+IGthZ2lcIDsKK+mNriA+IGNodXVcIDsKK+etliA+IHNha3VcIDsKK+mNiyA+IG5hYmVcIDsKK+etiyA+IHN1amlcIDsKK+etiSA+IG5hZG9cIDsKK+etiCA+IGhhenVcIDsKK+ethiA+IGZ1ZGVcIDsKK+aMviA+IGt5b3VcIDsKK+esuSA+IHNhc2FcIDsKK+mMsiA+IHJva3VcIDsKK+mMryA+IHNha3VcIDsKK+aMryA+IHNoaW5cIDsKK+esoCA+IGthc2FcIDsKK+eskSA+IHNob3VcIDsKK+mMkCA+IGtpcmlcIDsKK+aMhyA+IHl1YmlcIDsKK+eruSA+IHRha2VcIDsKK+ertiA+IGt5b3VcIDsKK+erryA+IGhhbmFcIDsKK+eroCA+IHNob3VcIDsKK+aLmyA+IHNob3VcIDsKK+aLjSA+IGhha3VcIDsKK+aKvSA+IGNodXVcIDsKK+eqriA+IGt5dXVcIDsKK+eqkyA+IG1hZG9cIDsKK+mKkSA+IHp1a3VcIDsKK+aKgCA+IHdhemFcIDsKK+aJvyA+IHNob3VcIDsKK+epuiA+IHNvcmFcIDsKK+eptiA+IGt5dXVcIDsKK+epjSA+IHNla2lcIDsKK+aJhyA+IG91Z2lcIDsKK+aIvyA+IGZ1c2FcIDsKK+mItCA+IHN1enVcIDsKK+eosSA+IHNob3VcIDsKK+eoriA+IHRhbmVcIDsKK+aInyA+IGdla2lcIDsKK+aImiA+IHNla2lcIDsKK+aIkSA+IHdhcmVcIDsKK+eojSA+IHlheWFcIDsKK+eoiyA+IGhvZG9cIDsKK+eogCA+IG1hcmVcIDsKK+ensCA+IHNob3VcIDsKK+mHoyA+IGNob3VcIDsKK+mHnSA+IGhhcmlcIDsKK+mHnCA+IGthbWFcIDsKK+mHmCA+IGt1Z2lcIDsKK+enkiA+IGJ5b3VcIDsKK+engCA+IHNodXVcIDsKK+emvyA+IGhhZ2VcIDsKK+aGqSA+IGlrb2lcIDsKK+mGpCA+IHNob3VcIDsKK+mGnCA+IHNodXVcIDsKK+aGlCA+IHNob3VcIDsKK+aGkSA+IGh5b3VcIDsKK+emjyA+IGZ1a3VcIDsKK+emhCA+IHJva3VcIDsKK+aFviA+IHlva3VcIDsKK+mFtyA+IGtva3VcIDsKK+mFrCA+IHNodXVcIDsKK+elniA+IGthbWlcIDsKK+mFkiA+IHNha2VcIDsKK+aFiyA+IHphbWFcIDsKK+aElSA+IGdha3VcIDsKK+mDtyA+IGt5b3VcIDsKK+mDrSA+IGtha3VcIDsKK+aDnCA+IHNla2lcIDsKK+aDkSA+IHdha3VcIDsKK+aCqiA+IHdhcnVcIDsKK+eipyA+IGhla2lcIDsKK+eijCA+IHJva3VcIDsKK+aChCA+IHNob3VcIDsKK+aBrSA+IGt5b3VcIDsKK+mBqSA+IHRla2lcIDsKK+aBpSA+IGhhamlcIDsKK+ehnSA+IHNob3VcIDsKK+aBkCA+IGt5b3VcIDsKK+mAuCA+IGl0c3VcIDsKK+mAsiA+IHNoaW5cIDsKK+mAsSA+IHNodXVcIDsKK+aAryA+IGt5b3VcIDsKK+aApSA+IGt5dXVcIDsKK+mAnyA+IHNva3VcIDsKK+mAmiA+IHRzdXVcIDsKK+aAjiA+IHNoaW5cIDsKK+eggiA+IHN1bmFcIDsKK+i/vSA+IHRzdWlcIDsKK+m+pSA+IHlha3VcIDsKK+m+oyA+IGtha3VcIDsKK+m+oCA+IHlha3VcIDsKK+m+nSA+IHNodXVcIDsKK+m+lCA+IGt5b3VcIDsKK+m+jyA+IGt5b3VcIDsKK+m+jSA+IHJ5dXVcIDsKK+m9uiA+IHNodXVcIDsKK+m9sSA+IHNla3VcIDsKK+m9sCA+IHNha3VcIDsKK+m9qiA+IHNva3VcIDsKK+m9qCA+IGt5dXVcIDsKK+m9oyA+IGtvbWFcIDsKK+m9oCA+IGNob3VcIDsKK+m9miA+IHNha3VcIDsKK+m9lCA+IHNoaW5cIDsKK+m9kyA+IHNoaW5cIDsKK+m9hSA+IGt5dXVcIDsKK+m8vCA+IGd5b3VcIDsKK+m8qyA+IHNla2lcIDsKK+m8piA+IGNob3VcIDsKK+m8miA+IGNob3VcIDsKK+m8jyA+IGJla2lcIDsKK+m8giA+IGNob3VcIDsKK+m7tyA+IHRva3VcIDsKK+m7sCA+IHNoaW5cIDsKK+m7kSA+IGtva3VcIDsKK+m6vyA+IG1hcm9cIDsKK+m6tCA+IGtpa3VcIDsKK+m6ryA+IGtpa3VcIDsKK+m6qCA+IHNob3VcIDsKK+m6niA+IHNob3VcIDsKK+m6mCA+IGt5b3VcIDsKK+m6jiA+IHNoaW5cIDsKK+m5tiA+IGt5b3VcIDsKK+m5oiA+IGdla2lcIDsKK+m5oSA+IHNla2lcIDsKK+m4tCA+IGtha3VcIDsKK+m4mSA+IHlha3VcIDsKK+m4liA+IGtha3VcIDsKK+m4kSA+IGdha3VcIDsKK+m4kCA+IHRla2lcIDsKK+m4iiA+IGhla2lcIDsKK+m3vSA+IGtha3VcIDsKK+m3uCA+IGl0c3VcIDsKK+m3ryA+IHJ5b3VcIDsKK+m3riA+IGt5b3VcIDsKK+m3piA+IHNob3VcIDsKK+m3nyA+IHNha3VcIDsKK+m3miA+IHJ5dXVcIDsKK+m3iiA+IGdla2lcIDsKK+m3gSA+IGdla2lcIDsKK+m2uiA+IHNla2lcIDsKK+m2uSA+IHJ5dXVcIDsKK+m2uCA+IGpha3VcIDsKK+m2riA+IGtva3VcIDsKK+m2qiA+IGtla2lcIDsKK+m2qSA+IGJva3VcIDsKK+m2miA+IGdha3VcIDsKK+m2liA+IHNodXVcIDsKK+m2kyA+IGJ5b3VcIDsKK+m2kiA+IHNla2lcIDsKK+m2gyA+IGdla2lcIDsKK+m1siA+IGpha3VcIDsKK+m1sCA+IGNob3VcIDsKK+m1qSA+IGZ1a3VcIDsKK+m1oiA+IHNoaW5cIDsKK+m1oCA+IGtva3VcIDsKK+m1nyA+IGt5b3VcIDsKK+m1mSA+IG1venVcIDsKK+m1lCA+IHNodW5cIDsKK+m1hyA+IHRva2lcIDsKK+m1hSA+IHJha3VcIDsKK+m1gyA+IGNodXVcIDsKK+m1giA+IGt5dXVcIDsKK+m0qiA+IGl0c3VcIDsKK+m0qCA+IGthbW9cIDsKK+m0lyA+IHJ5dXVcIDsKK+m0hyA+IHRva2lcIDsKK+m0hiA+IGNoaW5cIDsKK+mzpiA+IGl0c3VcIDsKK+myjCA+IGhha3VcIDsKK+mxtyA+IGdha3VcIDsKK+mxtiA+IGZ1a2FcIDsKK+mxtSA+IHNoaW5cIDsKK+mxsiA+IHJ5b3VcIDsKK+mxqCA+IHNob3VcIDsKK+mxpyA+IGhhbW9cIDsKK+mxnCA+IGt5b3VcIDsKK+mxmiA+IGtpc3VcIDsKK+mxmCA+IHNoaW5cIDsKK+mxkiA+IG1hc3VcIDsKK+mxjyA+IHNoaW5cIDsKK+mxjiA+IGt5b3VcIDsKK+mxiiA+IGl0c3VcIDsKK+mxhiA+IHNob3VcIDsKK+mxhSA+IHNob3VcIDsKK+mxgyA+IHNodXVcIDsKK+mxgiA+IHNob3VcIDsKK+mwviA+IGh5b3VcIDsKK+mwvSA+IHNodXVcIDsKK+mwtyA+IGNob3VcIDsKK+mwrSA+IGhpcmVcIDsKK+mwqCA+IGNob3VcIDsKK+mwpCA+IGJ1cmlcIDsKK+mwoSA+IHJ5dXVcIDsKK+mwmSA+IGhheWFcIDsKK+mwkCA+IHdhbmlcIDsKK+mwgiA+IHNva3VcIDsKK+mvvSA+IHNla2lcIDsKK+mvqiA+IHJ5b3VcIDsKK+mvpyA+IHNob3VcIDsKK+mvpSA+IHJpa3VcIDsKK+mvlyA+IHNob3VcIDsKK+mvliA+IHNhYmFcIDsKK+mvlCA+IGJvcmFcIDsKK+mvjiA+IHVndWlcIDsKK+mviiA+IGhhemVcIDsKK+muvyA+IGNob3VcIDsKK+muvCA+IHNoaW5cIDsKK+muuSA+IHRha29cIDsKK+mutCA+IGdvcmlcIDsKK+musiA+IG1hdGVcIDsKK+musSA+IGJvcmFcIDsKK+muqyA+IHNhbWVcIDsKK+muoCA+IGhheWFcIDsKK+munSA+IHNob3VcIDsKK+mukiA+IGZ1bmFcIDsKK+muiiA+IGhha3VcIDsKK+muiSA+IGNob3VcIDsKK+mtuSA+IHRvZG9cIDsKK+mtqyA+IHNoaW5cIDsKK+mtoSA+IHRla2lcIDsKK+mtlyA+IHNodXVcIDsKK+mtjiA+IHJ5b3VcIDsKK+mtiCA+IHNob3VcIDsKK+mthCA+IGhha3VcIDsKK+msuiA+IHNob3VcIDsKK+mssiA+IHJla2lcIDsKK+mssCA+IHV0c3VcIDsKK+msryA+IGNob3VcIDsKK+msriA+IGt5dXVcIDsKK+msqSA+IGdla2lcIDsKK+msmyA+IHJ5b3VcIDsKK+mskiA+IHNoaW5cIDsKK+mshiA+IHNob3VcIDsKK+mruSA+IGt5dXVcIDsKK+mrqyA+IGNob3VcIDsKK+mrpCA+IGt5dXVcIDsKK+mrnyA+IGh5b3VcIDsKK+mrnCA+IGt5b3VcIDsKK+mrkSA+IHRva3VcIDsKK+mrjiA+IHJ5b3VcIDsKK+mrhiA+IGhha3VcIDsKK+mqvCA+IGtha3VcIDsKK+mqsiA+IGhha3VcIDsKK+mqriA+IHlva3VcIDsKK+mqrSA+IGhhZ2lcIDsKK+mqjiA+IHNoaW5cIDsKK+mqiSA+IGh5dXVcIDsKK+mpqyA+IGh5dXVcIDsKK+mpnyA+IHNodXVcIDsKK+mpnSA+IHRha3VcIDsKK+mplSA+IGt5b3VcIDsKK+mpkSA+IHJ5dXVcIDsKK+mpjSA+IGd5b3VcIDsKK+mpgyA+IGh5b3VcIDsKK+mpgCA+IGJha3VcIDsKK+motiA+IHNodXVcIDsKK+mosyA+IHRva3VcIDsKK+moriA+IHJ5dXVcIDsKK+moniA+IGtha3VcIDsKK+mnvyA+IHNodW5cIDsKK+mnuCA+IHNoaW5cIDsKK+mntSA+IHJ5dXVcIDsKK+mnsiA+IHNodXVcIDsKK+mnsSA+IHJha3VcIDsKK+mnriA+IGhha3VcIDsKK+mnqiA+IHNoaW5cIDsKK+mngSA+IGJha3VcIDsKK+mmvSA+IGNodXVcIDsKK+mmsiA+IHRha3VcIDsKK+mmsCA+IHRla2lcIDsKK+mmriA+IGh5b3VcIDsKK+mmpSA+IGZ1a3VcIDsKK+mmmCA+IGtha3VcIDsKK+mlnyA+IHNob3VcIDsKK+mllyA+IGt5b3VcIDsKK+mliCA+IHNodXVcIDsKK+mkviA+IHJ5dXVcIDsKK+mkuiA+IGhha3VcIDsKK+mkpiA+IGNob3VcIDsKK+mklyA+IHNva3VcIDsKK+mklSA+IHNodW5cIDsKK+mkiSA+IHNob3VcIDsKK+mjpSA+IHRha3VcIDsKK+mjiCA+IGh5b3VcIDsKK+mjhyA+IGh5b3VcIDsKK+mjhiA+IGh5b3VcIDsKK+mjhSA+IHJ5dXVcIDsKK+mjhCA+IGh5b3VcIDsKK+mjgyA+IGh5b3VcIDsKK+mjgiA+IHJ5dXVcIDsKK+mityA+IGh5b3VcIDsKK+miriA+IGh5b3VcIDsKK+mhsyA+IHNob3VcIDsKK+mhpiA+IHNob3VcIDsKK+mhliA+IHNoaW5cIDsKK+mhkiA+IGd5b3VcIDsKK+mgsCA+IGt5b3VcIDsKK+mgoyA+IHNoaW5cIDsKK+mgniA+IGF0c3VcIDsKK+mgmSA+IHNha3VcIDsKK+mglCA+IHRla2lcIDsKK+mgjCA+IHNob3VcIDsKK+mftyA+IHJha3VcIDsKK+mftiA+IHNob3VcIDsKK+mfriA+IG5pcmFcIDsKK+mfrSA+IGt5dXVcIDsKK+mfmCA+IHNob3VcIDsKK+mflCA+IGNob3VcIDsKK+mfhyA+IHRva3VcIDsKK+mfgSA+IGt5b3VcIDsKK+meuSA+IGtha3VcIDsKK+metCA+IGZ1a3VcIDsKK+meqyA+IGtpa3VcIDsKK+mepiA+IHNodXVcIDsKK+meoiA+IHNob3VcIDsKK+meoCA+IG1hcmlcIDsKK+menyA+IGtha3VcIDsKK+mejyA+IGt5b3VcIDsKK+mehiA+IHRvbW9cIDsKK+mdriA+IHRla2lcIDsKK+mdlSA+IHNoaW5cIDsKK+mdjyA+IGtha3VcIDsKK+mdjiA+IGtha3VcIDsKK+mdhCA+IG1veWFcIDsKK+mdgyA+IGtha3VcIDsKK+mdgiA+IHJla2lcIDsKK+mcuSA+IGhla2lcIDsKK+mcuCA+IGhha3VcIDsKK+mcsyA+IHJ5dXVcIDsKK+mcsSA+IGl0c3VcIDsKK+mcpCA+IHJ5dXVcIDsKK+mcoiA+IGJha3VcIDsKK+mcoSA+IGJha3VcIDsKK+mcjSA+IGtha3VcIDsKK+mchSA+IHNob3VcIDsKK+mchCA+IHNob3VcIDsKK+mcgyA+IGNoaW5cIDsKK+mcgiA+IGJva3VcIDsKK+mbuSA+IGh5b3VcIDsKK+mbmCA+IHdha3VcIDsKK+mblSA+IGNob3VcIDsKK+mbkiA+IHJha3VcIDsKK+mbiSA+IGtpamlcIDsKK+mauyA+IHNla2lcIDsKK+mauiA+IGtva3VcIDsKK+manyA+IGdla2lcIDsKK+mZvyA+IGt5b3VcIDsKK+mZsyA+IGNoaW5cIDsKK+mZniA+IHNob3VcIDsKK+mZlyA+IHNob3VcIDsKK+mZjCA+IGhha3VcIDsKK+mYniA+IHJva3VcIDsKK+mXoiA+IGhla2lcIDsKK+mXnyA+IGt5dXVcIDsKK+mXnSA+IGh5b3VcIDsKK+mXliA+IGNoaW5cIDsKK+mXgyA+IGdla2lcIDsKK+mWtiA+IHNob3VcIDsKK+mWtCA+IGtla2lcIDsKK+mWsSA+IGV0c3VcIDsKK+mWoCA+IHRhbWFcIDsKK+mWliA+IHl1cnVcIDsKK+mWhCA+IGtva3VcIDsKK+mVuSA+IGt5dXVcIDsKK+mVuCA+IGNob3VcIDsKK+mVoCA+IHJ5dXVcIDsKK+mUuiA+IHNob3VcIDsKK+mSgSA+IGtha3VcIDsKK+mRvyA+IG5vbWlcIDsKK+mRsCA+IHlha3VcIDsKK+mRriA+IGhha3VcIDsKK+mRoyA+IGh5b3VcIDsKK+mRoSA+IHNha3VcIDsKK+mRnyA+IHRva3VcIDsKK+mRnCA+IHNob3VcIDsKK+mRkyA+IHlhcmlcIDsKK+mRiiA+IGtha3VcIDsKK+mRhCA+IGNodXVcIDsKK+mRgyA+IHR5b3VcIDsKK+mQuCA+IHRha3VcIDsKK+mQtCA+IGhla2lcIDsKK+mQsiA+IHRha3VcIDsKK+mQlCA+IHNoaW5cIDsKK+mQjiA+IHNob3VcIDsKK+mQiCA+IGt5b3VcIDsKK+mQgiA+IHJ5dXVcIDsKK+mPvSA+IHNodXVcIDsKK+mPuSA+IGt5b3VcIDsKK+mPtyA+IGhva3VcIDsKK+mPpiA+IHNob3VcIDsKK+mPpSA+IHNodXVcIDsKK+mPoiA+IGh5b3VcIDsKK+mPmyA+IHNob3VcIDsKK+mPmCA+IHNob3VcIDsKK+mPkSA+IHRla2lcIDsKK+mPkCA+IHJ5dXVcIDsKK+mPjCA+IGJha3VcIDsKK+mPiiA+IGd5b3VcIDsKK+mPgyA+IHpva3VcIDsKK+mOtCA+IHNva3VcIDsKK+mOsCA+IGl0c3VcIDsKK+mOriA+IGNoaW5cIDsKK+mOrSA+IGNoaW5cIDsKK+mOqCA+IHNodW5cIDsKK+mOpiA+IHJ5dXVcIDsKK+mOmyA+IGhha3VcIDsKK+mOmiA+IHRzdWlcIDsKK+mOmCA+IHJla2lcIDsKK+mOkCA+IHNva3VcIDsKK+mOjyA+IHJ5dXVcIDsKK+mOjSA+IHNha3VcIDsKK+mOjCA+IGthbWFcIDsKK+mOgCA+IHNodXVcIDsKK+mNviA+IHNob3VcIDsKK+mNvCA+IGhhcmlcIDsKK+mNtiA+IHNob3VcIDsKK+mNrCA+IGt1d2FcIDsKK+mNliA+IGNoaW5cIDsKK+mMtyA+IGF0c3VcIDsKK+mMtiA+IGh5b3VcIDsKK+mMtCA+IHJva3VcIDsKK+mMqyA+IHN1enVcIDsKK+mMqSA+IHNob3VcIDsKK+mMniA+IHNodW5cIDsKK+mMhiA+IHNhYmlcIDsKK+mMhCA+IHJva3VcIDsKK+mMgiA+IHJ5b3VcIDsKK+mLvyA+IHNob3VcIDsKK+mLuSA+IGNob3VcIDsKK+mLsyA+IGNodXVcIDsKK+mLsiA+IGJ5b3VcIDsKK+mLpCA+IHN1a2lcIDsKK+mLoCA+IHNoaW5cIDsKK+mLnCA+IHNha3VcIDsKK+mLiCA+IHlva3VcIDsKK+mKvyA+IHNob3VcIDsKK+mKuSA+IHNodXVcIDsKK+mKuCA+IHNob3VcIDsKK+mKtyA+IHNob3VcIDsKK+mKtiA+IGt5dXVcIDsKK+mKmyA+IG1vcmlcIDsKK+mKjiA+IGt5b3VcIDsKK+mKiSA+IGl0c3VcIDsKK+mJviA+IGhva29cIDsKK+mJuyA+IHJha3VcIDsKK+mJriA+IHNoaW5cIDsKK+mJpiA+IGthbmVcIDsKK+mJniA+IGV0c3VcIDsKK+mJnSA+IHJ5dXVcIDsKK+mJmiA+IHJ5dXVcIDsKK+mJkSA+IGhha3VcIDsKK+mJkCA+IHNla2lcIDsKK+mJiiA+IHNob3VcIDsKK+mIviA+IGNodXVcIDsKK+mIvCA+IHNha3VcIDsKK+mIrCA+IHRha3VcIDsKK+mIlSA+IGNodXVcIDsKK+mIlCA+IHNob3VcIDsKK+mIjiA+IGthZ2lcIDsKK+mIjCA+IGV0c3VcIDsKK+mIiiA+IHNoaW5cIDsKK+mHvSA+IGhla2lcIDsKK+mHuyA+IGt5dXVcIDsKK+mHpSA+IHNob3VcIDsKK+mHniA+IHNodXVcIDsKK+mHmyA+IGtva3VcIDsKK+mHmiA+IGt5dXVcIDsKK+mHmSA+IGhha3VcIDsKK+mHlyA+IHNob3VcIDsKK+mHlCA+IGl0c3VcIDsKK+mHkyA+IGh5dXVcIDsKK+mHjyA+IHJ5b3VcIDsKK+mHgiA+IHNob3VcIDsKK+mGuyA+IHNodXVcIDsKK+mGriA+IHNob3VcIDsKK+mGrSA+IGhva3VcIDsKK+mGrCA+IHNob3VcIDsKK+mGlSA+IHNodW5cIDsKK+mGiyA+IHNha3VcIDsKK+mGhyA+IHNodW5cIDsKK+mFsSA+IHNob3VcIDsKK+mFqiA+IHJha3VcIDsKK+mFpyA+IHNodXVcIDsKK+mFmSA+IHNoaW5cIDsKK+mFjiA+IGNodXVcIDsKK+mFiyA+IHNodXVcIDsKK+mFiSA+IHRvcmlcIDsKK+mEuSA+IHNodXVcIDsKK+mEtCA+IGd5b3VcIDsKK+mEqSA+IHNoaW5cIDsKK+mEpSA+IGt5b3VcIDsKK+mEoyA+IHNob3VcIDsKK+mEmiA+IGJha3VcIDsKK+mEmSA+IGhpbmFcIDsKK+mElSA+IGt5b3VcIDsKK+mEiSA+IGt5b3VcIDsKK+mEgiA+IGdha3VcIDsKK+mEgCA+IGpha3VcIDsKK+mDtCA+IGNoaW5cIDsKK+mDsCA+IHNodXVcIDsKK+mDpCA+IGdla2lcIDsKK+mDnSA+IGtha3VcIDsKK+mDhyA+IHNodW5cIDsKK+mDhCA+IGtla2lcIDsKK+mCtSA+IHNob3VcIDsKK+mCsSA+IGt5dXVcIDsKK+mCpiA+IGt1bmlcIDsKK+mCpSA+IHNoaW5cIDsKK+mCmyA+IGt5b3VcIDsKK+mCiyA+IHJ5b3VcIDsKK+mCiCA+IGJha3VcIDsKK+mBvCA+IHJ5b3VcIDsKK+mBuSA+IGl0c3VcIDsKK+mBrCA+IHNva3VcIDsKK+mBpyA+IHNob3VcIDsKK+mBmyA+IHJ5dXVcIDsKK+mBkiA+IHNodXVcIDsKK+mBjyA+IGF0c3VcIDsKK+mBjCA+IGdha3VcIDsKK+mAtyA+IGtla2lcIDsKK+mAtCA+IHRha3VcIDsKK+mAqiA+IHNha3VcIDsKK+mAqSA+IGthbXVcIDsKK+mApyA+IHNha29cIDsKK+mAoSA+IHNodW5cIDsKK+mAmyA+IGt5b3VcIDsKK+mAliA+IHRla2lcIDsKK+mAkSA+IGt5dXVcIDsKK+mAjiA+IHNodXVcIDsKK+mAjSA+IHNob3VcIDsKK+i/uSA+IHNla2lcIDsKK+i/riA+IHNha3VcIDsKK+i/qiA+IHRla2lcIDsKK+i/oiA+IGNob3VcIDsKK+i/oCA+IHNob3VcIDsKK+i/jSA+IGNodW5cIDsKK+i+uCA+IHNob3VcIDsKK+i+nyA+IGhla2lcIDsKK+i9oyA+IHJla2lcIDsKK+i9oiA+IHJla2lcIDsKK+i9jiA+IGt5b3VcIDsKK+i9jCA+IHNvcmlcIDsKK+i9hiA+IHJva3VcIDsKK+i9gyA+IHNoaW5cIDsKK+i9giA+IGtva3VcIDsKK+i8uyA+IGZ1a3VcIDsKK+i8uSA+IGZ1a3VcIDsKK+i8tCA+IGNodW5cIDsKK+i8rCA+IHJ5b3VcIDsKK+i8pyA+IGJ5b3VcIDsKK+i8myA+IHJ5b3VcIDsKK+i8mSA+IGNob3VcIDsKK+i8mCA+IHJ5b3VcIDsKK+i8liA+IHNodXVcIDsKK+i8kiA+IGNob3VcIDsKK+i8jCA+IHJ5b3VcIDsKK+i8iCA+IGNodXVcIDsKK+i7vyA+IGJ5b3VcIDsKK+i7vCA+IGl0c3VcIDsKK+i7uCA+IGppa3VcIDsKK+i7rSA+IGt5b3VcIDsKK+i7qyA+IHNoaW5cIDsKK+i7iyA+IGF0c3VcIDsKK+i6syA+IGt5dXVcIDsKK+i6rCA+IGt5dXVcIDsKK+i6niA+IHNob3VcIDsKK+i6kiA+IHJla2lcIDsKK+i6kCA+IHJ5b3VcIDsKK+i6hCA+IGhla2lcIDsKK+i6gyA+IGhla2lcIDsKK+i5vCA+IGJva3VcIDsKK+i5uyA+IGt5b3VcIDsKK+i5uiA+IGt5b3VcIDsKK+i5sSA+IHNob3VcIDsKK+i5sCA+IHNodXVcIDsKK+i5pCA+IHNob3VcIDsKK+i5oiA+IHRla2lcIDsKK+i5kCA+IHNla2lcIDsKK+i5jCA+IHNob3VcIDsKK+i5gCA+IGNob3VcIDsKK+i4uCA+IGNoaW5cIDsKK+i4syA+IHNodW5cIDsKK+i4sSA+IHRha3VcIDsKK+i4qiA+IHNob3VcIDsKK+i4oiA+IHRla2lcIDsKK+i4liA+IHNla2lcIDsKK+i4iSA+IHJ5b3VcIDsKK+i4hiA+IHNodW5cIDsKK+i4hCA+IGhha3VcIDsKK+i3qyA+IGt5b3VcIDsKK+i3liA+IHNla2lcIDsKK+i3lSA+IGNob3VcIDsKK+i3hSA+IHRha3VcIDsKK+i2uyA+IGNoaW5cIDsKK+i2tSA+IGhha3VcIDsKK+i2rCA+IGt5b3VcIDsKK+i2qyA+IGt5b3VcIDsKK+i2oCA+IHRha3VcIDsKK+i2mSA+IGNob3VcIDsKK+i2giA+IGNoaW5cIDsKK+i2gSA+IGNoaW5cIDsKK+i1syA+IGt5dXVcIDsKK+i1pSA+IGtla2lcIDsKK+i0kCA+IHNoaW5cIDsKK+i0iyA+IG5pc2VcIDsKK+izviA+IHNha3VcIDsKK+izsCA+IHNodW5cIDsKK+izrSA+IGtha2VcIDsKK+izrCA+IGNob3VcIDsKK+izniA+IHNob3VcIDsKK+iznSA+IGNoaW5cIDsKK+izmSA+IHNodXVcIDsKK+izlSA+IGt5dXVcIDsKK+iyuiA+IGt5b3VcIDsKK+iymCA+IGJha3VcIDsKK+iykyA+IGJ5b3VcIDsKK+iyiiA+IGhha3VcIDsKK+iyiSA+IGtha3VcIDsKK+iyhSA+IGt5dXVcIDsKK+iygiA+IGNob3VcIDsKK+ixuSA+IGh5b3VcIDsKK+ixmiA+IGJ1dGFcIDsKK+iurCA+IHRha3VcIDsKK+iunyA+IHRva3VcIDsKK+iuliA+IHNoaW5cIDsKK+iukCA+IHNodXVcIDsKK+iujiA+IHNodXVcIDsKK+iujSA+IGdha3VcIDsKK+iuiyA+IHNob3VcIDsKK+iuhSA+IHNoaW5cIDsKK+iugSA+IHRha3VcIDsKK+ituCA+IGNodXVcIDsKK+itmyA+IHNoaW5cIDsKK+itmSA+IHNob3VcIDsKK+itliA+IHNoaW5cIDsKK+ithSA+IHNodXVcIDsKK+istyA+IGd5b3VcIDsKK+isqyA+IHRha3VcIDsKK+isniA+IGtha3VcIDsKK+isiyA+IGtha3VcIDsKK+irvyA+IHNodXVcIDsKK+irviA+IGRha3VcIDsKK+irtiA+IHNoaW5cIDsKK+irpCA+IGdha3VcIDsKK+irnCA+IGNob3VcIDsKK+irlyA+IHNoaW5cIDsKK+irkiA+IHJ5b3VcIDsKK+irkSA+IHRha3VcIDsKK+iriiA+IGtpa3VcIDsKK+irgyA+IGNoaW5cIDsKK+iqryA+IHNob3VcIDsKK+iqpiA+IHNob3VcIDsKK+iqmiA+IHNob3VcIDsKK+iqkSA+IGt5b3VcIDsKK+iqhiA+IGt5b3VcIDsKK+iqhSA+IGNodXVcIDsKK+ipviA+IGt5b3VcIDsKK+ipuyA+IGdha3VcIDsKK+iptiA+IHNodXVcIDsKK+iptSA+IHNoaW5cIDsKK+iplyA+IGt5b3VcIDsKK+iouyA+IGNodXVcIDsKK+iotyA+IHNoaW5cIDsKK+ioqyA+IHNoaW5cIDsKK+iopiA+IHNoaW5cIDsKK+iooCA+IHNoaW5cIDsKK+iohSA+IGt5dXVcIDsKK+iohCA+IGt5dXVcIDsKK+intCA+IHNob3VcIDsKK+insyA+IGtva3VcIDsKK+inqyA+IHNva3VcIDsKK+inqSA+IGt5dXVcIDsKK+imvyA+IHRla2lcIDsKK+imoSA+IGdla2lcIDsKK+imnCA+IGNob3VcIDsKK+immyA+IGJpa2lcIDsKK+imkyA+IGJla2lcIDsKK+imkCA+IGtha3VcIDsKK+imiCA+IGtha3VcIDsKK+iltSA+IHNob3VcIDsKK+ilryA+IHNoaW5cIDsKK+ilriA+IGhha3VcIDsKK+ilqyA+IHNla2lcIDsKK+ilniA+IGhpZGFcIDsKK+illyA+IHRha3VcIDsKK+ilhiA+IGhva3VcIDsKK+ilgiA+IHNoaW5cIDsKK+ilgCA+IHNla2lcIDsKK+ikviA+IGh5b3VcIDsKK+ikuiA+IGNob3VcIDsKK+iktiA+IGNob3VcIDsKK+iksSA+IGthaWVcIDsKK+ikpSA+IGpva3VcIDsKK+ikjiA+IHNodXVcIDsKK+ikgSA+IHNla2lcIDsKK+ijvCA+IHNla2lcIDsKK+ijsiA+IHJ5b3VcIDsKK+ijsSA+IGh5b3VcIDsKK+ijryA+IGNodXVcIDsKK+ijmyA+IHlvdXVcIDsKK+ijmCA+IGt5dXVcIDsKK+ijkyA+IGtva3VcIDsKK+ijkSA+IHNoaW5cIDsKK+ijhCA+IHl1a2lcIDsKK+iisSA+IGZ1a3VcIDsKK+iisCA+IGhvcm9cIDsKK+iilyA+IHNoaW5cIDsKK+ihsSA+IGt5b3VcIDsKK+ihoCA+IHNodW5cIDsKK+ihiSA+IGtha3VcIDsKK+ihhCA+IGppa3VcIDsKK+ihgiA+IGppa3VcIDsKK+igsCA+IHNob3VcIDsKK+igriA+IGV0c3VcIDsKK+igqCA+IHNob3VcIDsKK+igmiA+IGtha3VcIDsKK+igliA+IGtha3VcIDsKK+iggSA+IGt5b3VcIDsKK+ifuSA+IGthbmlcIDsKK+ifryA+IGd5b3VcIDsKK+ifrSA+IHNob3VcIDsKK+ifnyA+IHJ5b3VcIDsKK+ifnCA+IGt5b3VcIDsKK+ifjiA+IGRhbmlcIDsKK+ifiSA+IHJ5dXVcIDsKK+ifiCA+IGtha3VcIDsKK+ifhyA+IGhpa2lcIDsKK+ifhiA+IGhpa2lcIDsKK+ievyA+IHNob3VcIDsKK+ievSA+IHNodXVcIDsKK+ietSA+IGh5b3VcIDsKK+ieqyA+IHNla2lcIDsKK+iekyA+IHNoaW5cIDsKK+ieiyA+IHNodXVcIDsKK+idtiA+IGNob3VcIDsKK+idpCA+IHNodXVcIDsKK+idjSA+IHNva3VcIDsKK+icvSA+IHJ5b3VcIDsKK+icriA+IHlva3VcIDsKK+icqSA+IGNob3VcIDsKK+icqCA+IHNob3VcIDsKK+icpSA+IHNla2lcIDsKK+icoyA+IGt5b3VcIDsKK+icmSA+IHNob3VcIDsKK+ickCA+IGt5b3VcIDsKK+ichCA+IHNoaW5cIDsKK+ibuiA+IGt5b3VcIDsKK+ibuCA+IHRha29cIDsKK+ibrSA+IGhpcnVcIDsKK+ibrCA+IGt5b3VcIDsKK+ibqSA+IGt5b3VcIDsKK+ibkiA+IGtha3VcIDsKK+ibgSA+IGNob3VcIDsKK+iauCA+IHJla2lcIDsKK+iasSA+IHNha3VcIDsKK+iaryA+IGt5dXVcIDsKK+iaiyA+IGJ1eW9cIDsKK+iZuSA+IG5pamlcIDsKK+iZryA+IGt5dXVcIDsKK+iZrCA+IGt5dXVcIDsKK+iZqSA+IGtla2lcIDsKK+iZmSA+IGh1a3VcIDsKK+iZiCA+IGt5b3VcIDsKK+iYvSA+IHJ5dXVcIDsKK+iYlyA+IGhha3VcIDsKK+iYkiA+IGhhZ2lcIDsKK+iYhiA+IGFzaGlcIDsKK+iYgCA+IHRha3VcIDsKK+iXvyA+IGtha3VcIDsKK+iXtiA+IHJla2lcIDsKK+iXrSA+IGt5dXVcIDsKK+iXqiA+IHlhYnVcIDsKK+iXqCA+IGh5b3VcIDsKK+iXoCA+IGt5b3VcIDsKK+iXkCA+IGJha3VcIDsKK+iXjiA+IHNoaW5cIDsKK+iXiyA+IGNob3VcIDsKK+iWvSA+IHNoaW5cIDsKK+iWvCA+IGNoaW5cIDsKK+iWuCA+IGh5b3VcIDsKK+iWnCA+IGhla2lcIDsKK+iWkyA+IHNoaW5cIDsKK+iWkSA+IGt5b3VcIDsKK+iWjyA+IHlva3VcIDsKK+iWjCA+IGt5b3VcIDsKK+iVuiA+IHNodXVcIDsKK+iVrSA+IHNob3VcIDsKK+iVqiA+IGthYnVcIDsKK+iVoyA+IHNodW5cIDsKK+iVmiA+IGdha3VcIDsKK+iVlyA+IGZ1a2lcIDsKK+iVkCA+IGt1d2FcIDsKK+iViSA+IHNob3VcIDsKK+iViCA+IHNoaW5cIDsKK+iUryA+IGNoaW5cIDsKK+iUoyA+IHNob3VcIDsKK+iUnyA+IHpva3VcIDsKK+iUmiA+IHV0c3VcIDsKK+iUmCA+IHNoaW5cIDsKK+iUlSA+IGhldGFcIDsKK+iUlCA+IGZ1a3VcIDsKK+iUkCA+IHRla2lcIDsKK+iUjyA+IHNob3VcIDsKK+iUjCA+IHNva3VcIDsKK+iUhyA+IGtpa2VcIDsKK+iUhiA+IHJ5b3VcIDsKK+iUgyA+IGt5b3VcIDsKK+iTvCA+IHRhZGVcIDsKK+iTuyA+IHNodXVcIDsKK+iTtCA+IHNodW5cIDsKK+iTsiA+IGt5dXVcIDsKK+iTpyA+IHNob3VcIDsKK+iTmiA+IGNob3VcIDsKK+iTkSA+IG1pbm9cIDsKK+iTkCA+IGpva3VcIDsKK+iTgSA+IHNoaW5cIDsKK+iStCA+IHNha3VcIDsKK+iSqiA+IGhha3VcIDsKK+iSpiA+IHdha3VcIDsKK+iSliA+IHNoaW5cIDsKK+iSkCA+IHNodXVcIDsKK+iSiyA+IHNob3VcIDsKK+iRuiA+IHNodXVcIDsKK+iRtCA+IHNoaW5cIDsKK+iRsSA+IG5lZ2lcIDsKK+iRryA+IHlha3VcIDsKK+iRpCA+IGNodXVcIDsKK+iRoCA+IHNoaW5cIDsKK+iRmyA+IGt1enVcIDsKK+iRmiA+IGNoaW5cIDsKK+iRmSA+IHNob3VcIDsKK+iRjSA+IGh1a3VcIDsKK+iQvCA+IGdha3VcIDsKK+iQqiA+IGt1d2FcIDsKK+iQqSA+IGhhZ2lcIDsKK+iQoiA+IHlhamlcIDsKK+iQmyA+IGt5dXVcIDsKK+iQhyA+IGNob3VcIDsKK+iQhSA+IHNodW5cIDsKK+iPsSA+IHJ5b3VcIDsKK+iPqCA+IHNob3VcIDsKK+iPliA+IHNob3VcIDsKK+iPlCA+IGhva3VcIDsKK+iPkCA+IGhva3VcIDsKK+iOnCA+IHRla2lcIDsKK+iOmCA+IHNoaW5cIDsKK+iOjSA+IGt5dXVcIDsKK+iOgCA+IHNoaW5cIDsKK+iNjSA+IGt5b3VcIDsKK+iMvSA+IGNodXVcIDsKK+iMuiA+IHNodXVcIDsKK+iMryA+IGZ1a3VcIDsKK+iMriA+IHNob3VcIDsKK+iMrSA+IGtla2lcIDsKK+iMnyA+IGl0c3VcIDsKK+iMniA+IHNoaW5cIDsKK+iMliA+IGtha3VcIDsKK+iLnCA+IGJva3VcIDsKK+iLmSA+IHJ5dXVcIDsKK+iLlSA+IGNob3VcIDsKK+iLhiA+IHN1c2FcIDsKK+iKuSA+IHNlcmlcIDsKK+iKsiA+IGt1d2FcIDsKK+iKryA+IHNoaW5cIDsKK+iKqCA+IGt5dXVcIDsKK+iKkiA+IG5vZ2lcIDsKK+iKjiA+IGt5dXVcIDsKK+iKgCA+IHNob3VcIDsKK+iJvSA+IGt5dXVcIDsKK+iJuyA+IHJva3VcIDsKK+iJqyA+IHRvbW9cIDsKK+iJpyA+IHdha3VcIDsKK+iJoiA+IHNob3VcIDsKK+iJnSA+IHNvcmlcIDsKK+iJjyA+IHNodXVcIDsKK+iItSA+IGthamlcIDsKK+iItCA+IHRha3VcIDsKK+iInCA+IHNodW5cIDsKK+iIjyA+IGt5dXVcIDsKK+iIgiA+IHNob3VcIDsKK+iHuyA+IHNoaW5cIDsKK+iHuSA+IHNodXVcIDsKK+iHtSA+IGtha3VcIDsKK+iHsCA+IHNodXVcIDsKK+iHqyA+IGt5b3VcIDsKK+iHmyA+IGtva3VcIDsKK+iHlSA+IGh5b3VcIDsKK+iGsiA+IHNob3VcIDsKK+iGriA+IGt5b3VcIDsKK+iGpCA+IHRhcmFcIDsKK+iGmCA+IGh5b3VcIDsKK+iGlSA+IGtha3VcIDsKK+iGkyA+IGNob3VcIDsKK+iGiyA+IHJ5b3VcIDsKK+iGiiA+IGhha3VcIDsKK+iGiCA+IGtha3VcIDsKK+iGhCA+IHNodXVcIDsKK+iGgyA+IG90c3VcIDsKK+iFvyA+IG1vbW9cIDsKK+iFvSA+IG90c3VcIDsKK+iFrSA+IGdha3VcIDsKK+iFmCA+IGtha3VcIDsKK+iFiiA+IHNla2lcIDsKK+iEvCA+IHJ5b3VcIDsKK+iEuSA+IGNob3VcIDsKK+iEqSA+IHNodXVcIDsKK+iEpCA+IHNoaW5cIDsKK+iEmyA+IHN1bmVcIDsKK+iEiyA+IGt5b3VcIDsKK+iDuiA+IGF0c3VcIDsKK+iDsyA+IGtha3VcIDsKK+iDpCA+IHRhbmVcIDsKK+iDlyA+IHNoaW5cIDsKK+iDhCA+IGNodXVcIDsKK+iCsSA+IGhpamlcIDsKK+iCqyA+IHNodW5cIDsKK+iCoSA+IG1vbW9cIDsKK+iCiCA+IGNob3VcIDsKK+iChyA+IGNob3VcIDsKK+iCgSA+IGNob3VcIDsKK+iBvyA+IGl0c3VcIDsKK+iBvCA+IGNob3VcIDsKK+iBhCA+IHNoaW5cIDsKK+iAtCA+IGNob3VcIDsKK+iApCA+IHNla2lcIDsKK+e/uSA+IGd5b3VcIDsKK+e/siA+IGh5b3VcIDsKK+e/ryA+IGtva3VcIDsKK+e/riA+IGtha3VcIDsKK+e/nyA+IGtla2lcIDsKK+e/lSA+IGt5dXVcIDsKK+e/lCA+IHNob3VcIDsKK+e/jyA+IHJ5dXVcIDsKK+e/iiA+IHlva3VcIDsKK+e/gCA+IGNodXVcIDsKK+e+lyA+IGt5b3VcIDsKK+e+jCA+IGt5b3VcIDsKK+e+gyA+IGJla2lcIDsKK+e+gCA+IHJ5dXVcIDsKK+e9vyA+IHNob3VcIDsKK+e9tiA+IHJ5dXVcIDsKK+e9rSA+IHlva3VcIDsKK+e9pyA+IHNoaW5cIDsKK+e9oCA+IHdhbmFcIDsKK+e9hSA+IGhpYmlcIDsKK+e6lSA+IHNob3VcIDsKK+e6hiA+IGJva3VcIDsKK+e5riA+IGt5b3VcIDsKK+e5rSA+IG1heXVcIDsKK+e5piA+IGt5b3VcIDsKK+e5oSA+IHNodXVcIDsKK+e5miA+IHJ5b3VcIDsKK+e5kiA+IHNob3VcIDsKK+e5jSA+IHNodXVcIDsKK+e5iCA+IGt5b3VcIDsKK+e5hiA+IGt5dXVcIDsKK+e4viA+IHNla2lcIDsKK+e4uSA+IGh5b3VcIDsKK+e4tiA+IGNodXVcIDsKK+e4oCA+IGtva3VcIDsKK+e4nyA+IGpva3VcIDsKK+e4nSA+IHNoaW5cIDsKK+e4kCA+IHNodXVcIDsKK+e4iSA+IHNoaW5cIDsKK+e3siA+IGJ5b3VcIDsKK+e3nSA+IHNodXVcIDsKK+e3mSA+IGtha3VcIDsKK+e3lyA+IHNob3VcIDsKK+e3jiA+IHlva3VcIDsKK+e3hiA+IHNla2lcIDsKK+e3hSA+IHNodXVcIDsKK+e3gyA+IHNob3VcIDsKK+e2uSA+IHJ5dXVcIDsKK+e2tiA+IGt1d2FcIDsKK+e2pyA+IHNodW5cIDsKK+e2oiA+IGNodXVcIDsKK+e2nSA+IGNoaW5cIDsKK+e2myA+IGthc2VcIDsKK+e2jCA+IGtla2lcIDsKK+e2hSA+IHNoaW5cIDsKK+e2gyA+IHNob3VcIDsKK+e1vyA+IGt5dXVcIDsKK+e1iCA+IGJha3VcIDsKK+e0viA+IHNoaW5cIDsKK+e0rCA+IGNodXVcIDsKK+e0liA+IGNoaW5cIDsKK+e0gyA+IHNodW5cIDsKK+e0giA+IGNodXVcIDsKK+ezviA+IGt5dXVcIDsKK+ezuiA+IGt5dXVcIDsKK+eztiA+IGNob3VcIDsKK+eztCA+IHRla2lcIDsKK+ezoCA+IG51a2FcIDsKK+ezlyA+IGt5dXVcIDsKK+ezlCA+IHNodXVcIDsKK+ezkyA+IGtva3VcIDsKK+eziiA+IG5vcmlcIDsKK+eyuyA+IGNob3VcIDsKK+eytyA+IGtpa3VcIDsKK+eytiA+IHJva3VcIDsKK+eytSA+IGV0c3VcIDsKK+eysSA+IHJ5b3VcIDsKK+eyriA+IHJ5b3VcIDsKK+eypCA+IGV0c3VcIDsKK+eylSA+IGhha3VcIDsKK+eygiA+IGt1bWVcIDsKK+exviA+IG1vbWlcIDsKK+exsCA+IHdha3VcIDsKK+expSA+IHlha3VcIDsKK+expCA+IGt1amlcIDsKK+exnCA+IHRha3VcIDsKK+exlSA+IHJ5dXVcIDsKK+exkiA+IHNodXVcIDsKK+exjyA+IGhhdGFcIDsKK+exjCA+IGNodXVcIDsKK+exiiA+IHRla2lcIDsKK+exhiA+IHdha3VcIDsKK+exgCA+IGNodXVcIDsKK+ewtiA+IHJva3VcIDsKK+ewsSA+IGhhdGFcIDsKK+ewqyA+IHNob3VcIDsKK+ewqiA+IHNoaW5cIDsKK+ewqCA+IHNodW5cIDsKK+ewpSA+IGt5b3VcIDsKK+ewmSA+IGhha3VcIDsKK+ewmCA+IHNob3VcIDsKK+ewlyA+IHlhbmFcIDsKK+ewjyA+IHJva3VcIDsKK+ewjiA+IHNha3VcIDsKK+ewjCA+IHNva3VcIDsKK+ewiSA+IHNodXVcIDsKK+ewgCA+IHNha3VcIDsKK+evuCA+IHNoaW5cIDsKK+evtCA+IHRla2lcIDsKK+evoCA+IHNob3VcIDsKK+evmyA+IGpha3VcIDsKK+evlyA+IHdha3VcIDsKK+eviyA+IGt5b3VcIDsKK+euuiA+IHNodW5cIDsKK+eutCA+IHNoaW5cIDsKK+eusCA+IHNodW5cIDsKK+eurCA+IGpva3VcIDsKK+eumSA+IGZ1a3VcIDsKK+eulCA+IGhha3VcIDsKK+eujSA+IHRhZ2FcIDsKK+euhiA+IGhlcmFcIDsKK+etvyA+IHNob3VcIDsKK+etuiA+IGt5b3VcIDsKK+ettCA+IGt5b3VcIDsKK+etsSA+IHNob3VcIDsKK+etsCA+IHNha3VcIDsKK+etkCA+IGt5b3VcIDsKK+ethyA+IGt5b3VcIDsKK+esvyA+IHJha3VcIDsKK+esriA+IHNha3VcIDsKK+espyA+IHNha3VcIDsKK+esiiA+IHphcnVcIDsKK+esiCA+IGt5dXVcIDsKK+eruyA+IHJva3VcIDsKK+eruiA+IHRva3VcIDsKK+ertCA+IHNodW5cIDsKK+erqCA+IGNob3VcIDsKK+erpiA+IHNob3VcIDsKK+eroyA+IHNodW5cIDsKK+ernCA+IHJ5dXVcIDsKK+erhiA+IGt5dXVcIDsKK+erhSA+IGt5b3VcIDsKK+eqvyA+IHJ5dXVcIDsKK+eqtSA+IGNob3VcIDsKK+eqryA+IGthbWFcIDsKK+eqlSA+IGNob3VcIDsKK+eqhCA+IHNha3VcIDsKK+eqgCA+IGNodW5cIDsKK+epuSA+IGt5dXVcIDsKK+epuCA+IHNla2lcIDsKK+eptSA+IGF0c3VcIDsKK+epqyA+IGtha3VcIDsKK+epqiA+IHNob3VcIDsKK+epmSA+IGhva3VcIDsKK+eplSA+IHNob3VcIDsKK+epkCA+IHNodXVcIDsKK+ephiA+IGJva3VcIDsKK+epgCA+IGtva3VcIDsKK+eouSA+IHNoaW5cIDsKK+eouCA+IGtpa3VcIDsKK+eooCA+IGNodXVcIDsKK+eonCA+IHJ5b3VcIDsKK+eolSA+IHNodW5cIDsKK+eokSA+IHJpa3VcIDsKK+enpiA+IHNoaW5cIDsKK+ennSA+IHJla2lcIDsKK+enjSA+IGNodXVcIDsKK+engyA+IHRva3VcIDsKK+emtCA+IHlha3VcIDsKK+emmyA+IHNoaW5cIDsKK+elvyA+IHJva3VcIDsKK+elviA+IHJ5b3VcIDsKK+elsiA+IHNoaW5cIDsKK+elqCA+IGh5b3VcIDsKK+elpyA+IGNob3VcIDsKK+elpSA+IHNob3VcIDsKK+eljyA+IHNla2lcIDsKK+ekvyA+IHlha3VcIDsKK+ektCA+IGhha3VcIDsKK+ekrSA+IGtha3VcIDsKK+ekkCA+IGtha3VcIDsKK+ekgSA+IHNob3VcIDsKK+ejvyA+IHJla2lcIDsKK+ejtiA+IHNla2lcIDsKK+ejpyA+IHNla2lcIDsKK+ejpiA+IGh5b3VcIDsKK+ejnyA+IHJpa3VcIDsKK+ejlCA+IHRha3VcIDsKK+eiuyA+IGtha3VcIDsKK+eitSA+IHNla2lcIDsKK+eiqiA+IGNoaW5cIDsKK+eiqSA+IHNla2lcIDsKK+eioSA+IHRva3VcIDsKK+ehviA+IHRzdWlcIDsKK+ehuiA+IHRha3VcIDsKK+ehtCA+IGtha2lcIDsKK+ehriA+IGtha3VcIDsKK+ehqyA+IHJ5dXVcIDsKK+ehniA+IGtha3VcIDsKK+ehjCA+IHJha3VcIDsKK+egtyA+IHNoaW5cIDsKK+egpyA+IGNoaW5cIDsKK+egoSA+IGdpa3VcIDsKK+egnSA+IGt5b3VcIDsKK+egiSA+IGtla2lcIDsKK+efsSA+IHdha3VcIDsKK+efryA+IGt5b3VcIDsKK+efqiA+IGNodXVcIDsKK+efpyA+IHNoaW5cIDsKK+efpCA+IHNoaW5cIDsKK+efoCA+IHNha3VcIDsKK+efnyA+IHNha3VcIDsKK+efniA+IGl0c3VcIDsKK+efmyA+IGhva29cIDsKK+efjSA+IGtha3VcIDsKK+eeviA+IHNob3VcIDsKK+eepyA+IHNob3VcIDsKK+eenyA+IGh5b3VcIDsKK+eemiA+IHNodW5cIDsKK+eelSA+IHNob3VcIDsKK+eelCA+IHNha3VcIDsKK+eeiyA+IHNoaW5cIDsKK+eehCA+IGJ5b3VcIDsKK+edlyA+IHNla2lcIDsKK+edliA+IGNob3VcIDsKK+ecviA+IHNodXVcIDsKK+ecvSA+IGJha3VcIDsKK+ecuSA+IGNoaW5cIDsKK+ectiA+IGt5b3VcIDsKK+eclSA+IHNoaW5cIDsKK+eckiA+IHNoaW5cIDsKK+echyA+IGJ5b3VcIDsKK+ebviA+IHRhdGVcIDsKK+ebuSA+IHNodW5cIDsKK+ebhSA+IGNodXVcIDsKK+eauSA+IGhpYmlcIDsKK+eauCA+IGhpYmlcIDsKK+eatCA+IHNodW5cIDsKK+eaqiA+IHJla2lcIDsKK+eapiA+IGt5b3VcIDsKK+eaoiA+IGt5b3VcIDsKK+eanyA+IHNha3VcIDsKK+eamyA+IGt5b3VcIDsKK+eamSA+IHNla2lcIDsKK+eajSA+IHNva3VcIDsKK+eagCA+IGh5dXVcIDsKK+eZqCA+IGtha3VcIDsKK+eZpyA+IHJla2lcIDsKK+eZpSA+IGNob3VcIDsKK+eZiyA+IGtha3VcIDsKK+eZhSA+IHJ5dXVcIDsKK+eZhCA+IHNob3VcIDsKK+eZgyA+IHJ5dXVcIDsKK+eZgSA+IGZ1a3VcIDsKK+eYvCA+IGJha3VcIDsKK+eYuSA+IGNob3VcIDsKK+eYtCA+IHNob3VcIDsKK+eYsyA+IGNodXVcIDsKK+eYsiA+IHNob3VcIDsKK+eYriA+IHNoaW5cIDsKK+eYrSA+IGh5b3VcIDsKK+eYpCA+IGtvYnVcIDsKK+eYoCA+IHNla2lcIDsKK+eYhyA+IHNob3VcIDsKK+eXriA+IGNob3VcIDsKK+eXnyA+IHNob3VcIDsKK+eXnCA+IHRva3VcIDsKK+eWuSA+IHNoaW5cIDsKK+eWoiA+IGNoaW5cIDsKK+eWmiA+IGt5dXVcIDsKK+eWlCA+IGNob3VcIDsKK+eWkiA+IGRha3VcIDsKK+eWhyA+IGNodXVcIDsKK+eWhiA+IGt5b3VcIDsKK+eWhSA+IGt5b3VcIDsKK+eVvCA+IGNob3VcIDsKK+eVuyA+IHNob3VcIDsKK+eVuiA+IGt5b3VcIDsKK+eVtSA+IGtha3VcIDsKK+eVtCA+IGNodXVcIDsKK+eVsSA+IHJ5dXVcIDsKK+eVryA+IHNodW5cIDsKK+eVqSA+IGtlc2FcIDsKK+eVmyA+IHNoaW5cIDsKK+eVkCA+IGZ1a3VcIDsKK+eVhCA+IHJ5dXVcIDsKK+eVgyA+IHNodW5cIDsKK+eUvCA+IGNob3VcIDsKK+eUqiA+IHJva3VcIDsKK+eUpyA+IHNoaW5cIDsKK+eUoSA+IHNoaW5cIDsKK+eUniA+IHNob3VcIDsKK+eUlSA+IG1pa2FcIDsKK+eUkyA+IGhla2lcIDsKK+eUgyA+IHNodXVcIDsKK+eTuiA+IGNob3VcIDsKK+eTpCA+IHNob3VcIDsKK+eToiA+IGh5b3VcIDsKK+eTnyA+IGhha3VcIDsKK+eSuSA+IHNodXVcIDsKK+eSpyA+IGhla2lcIDsKK+eSoiA+IHJ5dXVcIDsKK+eSoSA+IHNoaW5cIDsKK+eSniA+IGhha3VcIDsKK+eSmSA+IHJ5b3VcIDsKK+eSiyA+IHNob3VcIDsKK+eShiA+IGt5dXVcIDsKK+eRsiA+IHNob3VcIDsKK+eRqCA+IHNoaW5cIDsKK+eRpyA+IHNoaW5cIDsKK+eRoCA+IHJ5dXVcIDsKK+eRlSA+IGtpenVcIDsKK+eRkiA+IGNob3VcIDsKK+eRgyA+IGNodW5cIDsKK+eQsSA+IGNob3VcIDsKK+eQrSA+IGtva3VcIDsKK+eQqSA+IHNob3VcIDsKK+eQoiA+IHRha3VcIDsKK+eQmyA+IGNoaW5cIDsKK+eQiSA+IHJ5dXVcIDsKK+eQhyA+IHNodXVcIDsKK+ePpiA+IGt5b3VcIDsKK+ePoyA+IHNodW5cIDsKK+ePniA+IHJha3VcIDsKK+ePmSA+IGt5b3VcIDsKK+ePkiA+IHNoaW5cIDsKK+ePjyA+IGtha3VcIDsKK+ePjiA+IGNoaW5cIDsKK+ePiyA+IHJ5dXVcIDsKK+ePhSA+IHNoaW5cIDsKK+ePgCA+IGhha3VcIDsKK+eOvyA+IHNob3VcIDsKK+eOkyA+IHRla2lcIDsKK+eOhSA+IG15b3VcIDsKK+eNtiA+IG55b3VcIDsKK+eNtSA+IHJ5b3VcIDsKK+eNoCA+IHJ5b3VcIDsKK+eNnyA+IGd5b3VcIDsKK+eNkCA+IHNob3VcIDsKK+eNjyA+IGJha3VcIDsKK+eNjiA+IHNob3VcIDsKK+eNjSA+IGt5b3VcIDsKK+eMnyA+IHJ5b3VcIDsKK+eMliA+IHNob3VcIDsKK+eMiyA+IGh5b3VcIDsKK+eLpSA+IHNodW5cIDsKK+eLoiA+IGtha3VcIDsKK+eLmyA+IGhha3VcIDsKK+eLhyA+IGJva3VcIDsKK+eLhiA+IGNoaW5cIDsKK+eLhCA+IHRla2lcIDsKK+eKsSA+IGtla2lcIDsKK+eKqCA+IHNodXVcIDsKK+eKoiA+IHRva3VcIDsKK+eKliA+IHJha3VcIDsKK+eJvyA+IGtva3VcIDsKK+eJniA+IGt5dXVcIDsKK+eJmSA+IGtpYmFcIDsKK+eJmCA+IHRva3VcIDsKK+eJlCA+IGhha3VcIDsKK+eJhiA+IHNob3VcIDsKK+eIvyA+IHNob3VcIDsKK+eItCA+IGtha3VcIDsKK+eIryA+IHNob3VcIDsKK+eImiA+IHlha3VcIDsKK+eIgCA+IGtha3VcIDsKK+eHuCA+IGppeXVcIDsKK+eHriA+IHNob3VcIDsKK+eHmiA+IGl0c3VcIDsKK+eHliA+IHNoaW5cIDsKK+eHjiA+IHJ5b3VcIDsKK+eHiyA+IHNob3VcIDsKK+eGmyA+IGh5b3VcIDsKK+eGhyA+IGtva3VcIDsKK+eGhCA+IHNva3VcIDsKK+eFgSA+IHNoaW5cIDsKK+eEuyA+IHNob3VcIDsKK+eEjCA+IHNodW5cIDsKK+eEhyA+IHNob3VcIDsKK+eEhiA+IGV0c3VcIDsKK+eEhSA+IGtva3VcIDsKK+eEgyA+IGtha3VcIDsKK+eDmSA+IHJha3VcIDsKK+eCuCA+IHNha3VcIDsKK+eCpCA+IHNob3VcIDsKK+eBuCA+IGt5dXVcIDsKK+eBrCA+IGh5b3VcIDsKK+eBpSA+IHNodW5cIDsKK+eBhCA+IHNob3VcIDsKK+eAuSA+IHNla3VcIDsKK+eAtyA+IHlva3VcIDsKK+eApyA+IHRha2lcIDsKK+eAnyA+IHNob3VcIDsKK+eAkyA+IGNob3VcIDsKK+eAkSA+IGJha3VcIDsKK+eAjyA+IHJ5dXVcIDsKK+eAiyA+IHNoaW5cIDsKK+eAhiA+IHRva3VcIDsKK+a/vCA+IHJva3VcIDsKK+a/uSA+IGJva3VcIDsKK+a/riA+IGhva3VcIDsKK+a/rCA+IHNodW5cIDsKK+a/qSA+IGtha3VcIDsKK+a/iCA+IHNodXVcIDsKK+a/hSA+IHNoaW5cIDsKK+a+vCA+IGhla2lcIDsKK+a+tSA+IHNoaW5cIDsKK+a+oCA+IHNob3VcIDsKK+a+mSA+IHNla2lcIDsKK+a+kyA+IGh1a3VcIDsKK+a+kSA+IHJ5dXVcIDsKK+a+hiA+IGd5b3VcIDsKK+a+giA+IGNob3VcIDsKK+a9nyA+IGthdGFcIDsKK+a9nSA+IGt5dXVcIDsKK+a9lyA+IHNodXVcIDsKK+a8uyA+IHJ5b3VcIDsKK+a8syA+IHNob3VcIDsKK+a8mCA+IHNoaW5cIDsKK+a8jSA+IGtha3VcIDsKK+a8iSA+IHJva3VcIDsKK+a7siA+IHNoaW5cIDsKK+a7riA+IGh5dXVcIDsKK+a7qyA+IHNodXVcIDsKK+a7nSA+IHRha2lcIDsKK+a7kyA+IGthc3VcIDsKK+a7jCA+IGRla2lcIDsKK+a6vSA+IGpva3VcIDsKK+a6sSA+IHNoaW5cIDsKK+a6jSA+IHNoaW5cIDsKK+a5qyA+IHNob3VcIDsKK+a5qCA+IGtla2lcIDsKK+a5mCA+IHNob3VcIDsKK+a5kiA+IHNodXVcIDsKK+a4uiA+IGJ5b3VcIDsKK+a4niA+IHNodXVcIDsKK+a4lyA+IHNoaW5cIDsKK+a4jCA+IHJva3VcIDsKK+a3vCA+IGJ5b3VcIDsKK+a3tCA+IG90c3VcIDsKK+a3syA+IHNodW5cIDsKK+a3qSA+IHJ5b3VcIDsKK+a3pSA+IHJva3VcIDsKK+a3oiA+IHlva3VcIDsKK+a3niA+IHNob3VcIDsKK+a3lSA+IHJpa3VcIDsKK+a3jCA+IHNob3VcIDsKK+a3hSA+IHNla2lcIDsKK+a2vyA+IHRva3VcIDsKK+a2iSA+IHNob3VcIDsKK+a1uSA+IHNob3VcIDsKK+a1niA+IHNha3VcIDsKK+a1lyA+IGt5dXVcIDsKK+a0tiA+IGt5b3VcIDsKK+a0tSA+IHNodW5cIDsKK+a0piA+IGJha3VcIDsKK+a0nyA+IGhhbmFcIDsKK+a0kyA+IHNha3VcIDsKK+a0kSA+IGh1a3VcIDsKK+aztSA+IHJ5dXVcIDsKK+azpyA+IGV0c3VcIDsKK+azhiA+IGl0c3VcIDsKK+azhSA+IHNodXVcIDsKK+aysCA+IHRha3VcIDsKK+aykCA+IGJva3VcIDsKK+ayiSA+IGNoaW5cIDsKK+aygyA+IHlva3VcIDsKK+aygSA+IHNoaW5cIDsKK+axuSA+IGt5b3VcIDsKK+axqSA+IGl0c3VcIDsKK+axqCA+IGJla2lcIDsKK+axmyA+IHNoaW5cIDsKK+axkCA+IHNla2lcIDsKK+axiyA+IHNha3VcIDsKK+awuyA+IHJva3VcIDsKK+awtiA+IHNob3VcIDsKK+awjiA+IGNob3VcIDsKK+awhSA+IHNob3VcIDsKK+avsSA+IGtpa3VcIDsKK+avoyA+IGJva3VcIDsKK+avhCA+IGtla2lcIDsKK+avgyA+IGtha3VcIDsKK+auviA+IHNodW5cIDsKK+auvCA+IGtha3VcIDsKK+ausCA+IHRva3VcIDsKK+aurSA+IGt5b3VcIDsKK+aupCA+IHNob3VcIDsKK+auoCA+IHNodXVcIDsKK+aunyA+IG90c3VcIDsKK+aukSA+IGt5b3VcIDsKK+aujSA+IGh5b3VcIDsKK+attSA+IHNha3VcIDsKK+atsCA+IHNodXVcIDsKK+atmSA+IGt5dXVcIDsKK+atkiA+IHRla2lcIDsKK+atiiA+IGt5b3VcIDsKK+astiA+IHNha3VcIDsKK+asqyA+IGtla2lcIDsKK+ashyA+IHNob3VcIDsKK+asgiA+IGhha3VcIDsKK+arrCA+IHNoaW5cIDsKK+arqiA+IHJla2lcIDsKK+arnyA+IHJla2lcIDsKK+arnSA+IHRva3VcIDsKK+aqtCA+IGtha3VcIDsKK+aqqiA+IHJla2lcIDsKK+aqnSA+IHNodXVcIDsKK+aqlyA+IGhha3VcIDsKK+aqjSA+IHlva3VcIDsKK+aqhCA+IGdla2lcIDsKK+apvyA+IGt5b3VcIDsKK+apuCA+IHNob3VcIDsKK+apsyA+IG51ZGVcIDsKK+apsiA+IHp1c2FcIDsKK+apoSA+IHNob3VcIDsKK+apkCA+IHRha3VcIDsKK+apiiA+IHJ5b3VcIDsKK+aoviA+IGV0c3VcIDsKK+aovSA+IHRhcnVcIDsKK+aouiA+IGthYmFcIDsKK+aouCA+IGJva3VcIDsKK+aosCA+IHRhcmFcIDsKK+aooiA+IGJva3VcIDsKK+aonyA+IHNob3VcIDsKK+aomyA+IGt5dXVcIDsKK+aomiA+IHJva3VcIDsKK+aolSA+IHNva3VcIDsKK+aokSA+IHJ5b3VcIDsKK+aogCA+IHRla2lcIDsKK+ansyA+IHNob3VcIDsKK+ansiA+IGtva3VcIDsKK+anriA+IHNoaW5cIDsKK+anqCA+IGtha3VcIDsKK+anoiA+IHNodXVcIDsKK+anlyA+IGt5b3VcIDsKK+anliA+IHRha3VcIDsKK+anjSA+IHlhcmlcIDsKK+aniiA+IHNha3VcIDsKK+anhSA+IGtha3VcIDsKK+amuiA+IHNob3VcIDsKK+amtyA+IGtha3VcIDsKK+amtCA+IHJ5dXVcIDsKK+amsiA+IG90c3VcIDsKK+amqyA+IHNodW5cIDsKK+ampyA+IGtheWFcIDsKK+amliA+IGtva3VcIDsKK+amkiA+IGRva3VcIDsKK+amhSA+IG90c3VcIDsKK+amgSA+IG11cm9cIDsKK+aluCA+IHNodXVcIDsKK+alqyA+IHNodXVcIDsKK+aloiA+IHNodXVcIDsKK+aliSA+IGpha3VcIDsKK+alhSA+IGh5a3VcIDsKK+akqCA+IHRhZnVcIDsKK+akpSA+IG5hZ2lcIDsKK+akmSA+IHN1Z2lcIDsKK+akkyA+IHRha3VcIDsKK+akkiA+IHNob3VcIDsKK+akiyA+IHJ5b3VcIDsKK+akiCA+IGtpa3VcIDsKK+akhiA+IGNodXVcIDsKK+akgSA+IGtha3VcIDsKK+ajvSA+IGNoaW5cIDsKK+ajqyA+IHlva3VcIDsKK+ajnyA+IG11bmVcIDsKK+ajmCA+IHRvZ2VcIDsKK+ajjyA+IHRva3VcIDsKK+airiA+IGtpa3VcIDsKK+aipSA+IHNob3VcIDsKK+aioyA+IHNoaW5cIDsKK+ainCA+IGt5b3VcIDsKK+aijyA+IGtva3VcIDsKK+aigiA+IGt5dXVcIDsKK+aigSA+IGhhcmlcIDsKK+ahuiA+IHJ5dXVcIDsKK+ahtyA+IGtha3VcIDsKK+ahnSA+IG1hc3VcIDsKK+ahmCA+IHRzdWlcIDsKK+ahlSA+IGt5dXVcIDsKK+ahkSA+IGt1d2FcIDsKK+ahjCA+IHRha3VcIDsKK+ahhiA+IGt5b3VcIDsKK+agvyA+IGZ1a3VcIDsKK+aguCA+IGtha3VcIDsKK+agsSA+IGt5b3VcIDsKK+agqiA+IGthYnVcIDsKK+agoiA+IGhha3VcIDsKK+aghSA+IHNha3VcIDsKK+aggiA+IHRvZ2FcIDsKK+afviA+IGt5dXVcIDsKK+afqSA+IGt5dXVcIDsKK+afniA+IHNha3VcIDsKK+afnSA+IHRha3VcIDsKK+aflyA+IHNob3VcIDsKK+afjyA+IGhha3VcIDsKK+aetyA+IGthc2VcIDsKK+aetSA+IGt5b3VcIDsKK+aeqSA+IHNob3VcIDsKK+aeoSA+IG1hc3VcIDsKK+aeoCA+IHdha3VcIDsKK+aekCA+IHNla2lcIDsKK+aegSA+IGt5b3VcIDsKK+aduyA+IGNodXVcIDsKK+adtiA+IGNodW5cIDsKK+adqiA+IGJ5b3VcIDsKK+adpiA+IHN1Z2lcIDsKK+adoyA+IHNvbWFcIDsKK+adoiA+IG1va3VcIDsKK+admSA+IHlva3VcIDsKK+adlCA+IHRha3VcIDsKK+acvSA+IGt5dXVcIDsKK+aclSA+IGNoaW5cIDsKK+aclCA+IHNha3VcIDsKK+ackyA+IGNob3VcIDsKK+ackiA+IG5pa3VcIDsKK+ackCA+IGt5b3VcIDsKK+abuyA+IHNob3VcIDsKK+absCA+IGV0c3VcIDsKK+abnyA+IHNoaW5cIDsKK+abjyA+IGt5b3VcIDsKK+abjCA+IHNob3VcIDsKK+abiSA+IGd5b3VcIDsKK+abhiA+IHJla2lcIDsKK+aauCA+IHJ5b3VcIDsKK+aasiA+IHNob3VcIDsKK+aamSA+IHNodW5cIDsKK+aajSA+IGV0c3VcIDsKK+aZvyA+IHNob3VcIDsKK+aZviA+IHJ5b3VcIDsKK+aZsyA+IHNla2lcIDsKK+aZsCA+IHNla2lcIDsKK+aZqyA+IHRha3VcIDsKK+aZqCA+IHNoaW5cIDsKK+aZmSA+IHNodW5cIDsKK+aZkSA+IGt5b3VcIDsKK+aZjCA+IHNob3VcIDsKK+aZiyA+IHNoaW5cIDsKK+aZiSA+IHNoaW5cIDsKK+aZgSA+IGNob3VcIDsKK+aZgCA+IGNob3VcIDsKK+aYtiA+IGNob3VcIDsKK+aYriA+IHNob3VcIDsKK+aYoyA+IHNoaW5cIDsKK+aYjCA+IHNob3VcIDsKK+aYgyA+IHNva3VcIDsKK+aXviA+IHNodW5cIDsKK+aXpyA+IGt5dXVcIDsKK+aXkiA+IHJ5dXVcIDsKK+aXkCA+IGNob3VcIDsKK+aXiCA+IHJ5dXVcIDsKK+aWsiA+IHRha3VcIDsKK+aWriA+IHNha3VcIDsKK+aWoSA+IGF0c3VcIDsKK+aWoCA+IGtha3VcIDsKK+aWnyA+IHNoaW5cIDsKK+aWmyA+IGtva3VcIDsKK+aWmCA+IHNob3VcIDsKK+aWiCA+IGdha3VcIDsKK+aVvyA+IGt5b3VcIDsKK+aVvSA+IGt5b3VcIDsKK+aVqyA+IHNla3VcIDsKK+aVniA+IHNob3VcIDsKK+aVkiA+IGNoaW5cIDsKK+aVkCA+IHNoaW5cIDsKK+aVjiA+IGt5b3VcIDsKK+aViyA+IGtha3VcIDsKK+aVhyA+IHNha3VcIDsKK+aUtSA+IGJva3VcIDsKK+aUtCA+IGhva3VcIDsKK+aUqiA+IGtha3VcIDsKK+aUiiA+IGZ1a2lcIDsKK+aUiSA+IGtha3VcIDsKK+aTvyA+IHRla2lcIDsKK+aTtCA+IGtha3VcIDsKK+aTsiA+IHRla2lcIDsKK+aToiA+IHRla2lcIDsKK+aTmCA+IGhha3VcIDsKK+aTlyA+IGhla2lcIDsKK+aTkSA+IHNob3VcIDsKK+aTjCA+IHNha3VcIDsKK+aTiiA+IGdla2lcIDsKK+aTiSA+IHNha3VcIDsKK+aThyA+IHRha3VcIDsKK+aSuSA+IGtha3VcIDsKK+aSrCA+IGt5b3VcIDsKK+aSqSA+IHJ5b3VcIDsKK+aSqCA+IHNob3VcIDsKK+aSnyA+IGt5b3VcIDsKK+aSkSA+IGNob3VcIDsKK+aSkCA+IGNob3VcIDsKK+aRvSA+IGh5b3VcIDsKK+aRrSA+IHNla2lcIDsKK+aRnSA+IHJva3VcIDsKK+aRmCA+IHRla2lcIDsKK+aRkSA+IGtha3VcIDsKK+aRjyA+IHNob3VcIDsKK+aRjiA+IGt5dXVcIDsKK+aQvyA+IGtha3VcIDsKK+aQviA+IHNha3VcIDsKK+aQtiA+IHNob3VcIDsKK+aQpiA+IGpha3VcIDsKK+aQoiA+IHNoaW5cIDsKK+aQoCA+IHNha3VcIDsKK+aQjyA+IGhha3VcIDsKK+aQiiA+IHNodXVcIDsKK+aQiSA+IGtha3VcIDsKK+aPqiA+IHNodXVcIDsKK+aPlSA+IGNoaW5cIDsKK+aOtSA+IGhhYmFcIDsKK+aOrCA+IGtpa3VcIDsKK+aOpiA+IHRla2lcIDsKK+aOpCA+IGh5b3VcIDsKK+aOmiA+IHJ5b3VcIDsKK+aOlSA+IHJ5b3VcIDsKK+aNtyA+IHNob3VcIDsKK+aNlCA+IGtha3VcIDsKK+aNkiA+IHNob3VcIDsKK+aNiSA+IHNva3VcIDsKK+aNhCA+IGt5dXVcIDsKK+aNgSA+IGtha3VcIDsKK+aMnyA+IGt5b3VcIDsKK+aMliA+IGF0c3VcIDsKK+aMkSA+IGNob3VcIDsKK+aMjCA+IGtha3VcIDsKK+aMiyA+IHNoaW5cIDsKK+aLsiA+IGt5b3VcIDsKK+aLsSA+IGt5b3VcIDsKK+aLqyA+IHNodXVcIDsKK+aLoSA+IGtha3VcIDsKK+aLkyA+IHRha3VcIDsKK+aLhiA+IHRha3VcIDsKK+aKuyA+IHNoaW5cIDsKK+aKniA+IHRha3VcIDsKK+aKjSA+IHNob3VcIDsKK+aKhCA+IHNob3VcIDsKK+aKgiA+IGt5b3VcIDsKK+aJqCA+IHNhdGVcIDsKK+aJmiA+IGNob3VcIDsKK+aJmCA+IHRha3VcIDsKK+aJkSA+IGhva3VcIDsKK+aJkCA+IHJva3VcIDsKK+aJhCA+IHNob3VcIDsKK+aIsyA+IHRha3VcIDsKK+aIriA+IHJpa3VcIDsKK+aIqyA+IHlva3VcIDsKK+aIoiA+IHNodXVcIDsKK+aInSA+IHpva3VcIDsKK+aIlSA+IHNob3VcIDsKK+aIiSA+IGV0c3VcIDsKK+aIiCA+IGhva29cIDsKK+aHviA+IHNob3VcIDsKK+aHsiA+IGNob3VcIDsKK+aHnyA+IHRzdWlcIDsKK+aHjyA+IHNodW5cIDsKK+aGrSA+IHJ5b3VcIDsKK+aGjSA+IGt5b3VcIDsKK+aGgCA+IHJ5b3VcIDsKK+aFvyA+IGh5b3VcIDsKK+aFvCA+IHNla2lcIDsKK+aFtCA+IHNob3VcIDsKK+aFryA+IHNob3VcIDsKK+aFqyA+IHNob3VcIDsKK+aFniA+IHNob3VcIDsKK+aFnSA+IHRva3VcIDsKK+aFkyA+IGh5b3VcIDsKK+aFjiA+IHNoaW5cIDsKK+aEvSA+IGhha3VcIDsKK+aEvCA+IHNoaW5cIDsKK+aEtiA+IGt5b3VcIDsKK+aEtSA+IGRla2lcIDsKK+aEqCA+IGtha3VcIDsKK+aEnCA+IGt5b3VcIDsKK+aEmSA+IGtha3VcIDsKK+aEliA+IHNoaW5cIDsKK+aEgSA+IHNodXVcIDsKK+aEgCA+IHNob3VcIDsKK+aDuyA+IHNva3VcIDsKK+aDtyA+IHNodW5cIDsKK+aDtSA+IGNob3VcIDsKK+aDqiA+IHRva3VcIDsKK+aDnSA+IHNob3VcIDsKK+aDliA+IHRla2lcIDsKK+aDlSA+IHRla2lcIDsKK+aDiiA+IHJ5b3VcIDsKK+aDhiA+IGNodXVcIDsKK+aDhCA+IGRla2lcIDsKK+aCtSA+IGNob3VcIDsKK+aCsyA+IHRva3VcIDsKK+aCpiA+IGV0c3VcIDsKK+aCpSA+IHlva3VcIDsKK+aCoiA+IHJ5b3VcIDsKK+aCmiA+IHNob3VcIDsKK+aChSA+IGV0c3VcIDsKK+aBtyA+IGt5dXVcIDsKK+aBsSA+IGV0c3VcIDsKK+aBqiA+IGtha3VcIDsKK+aBpyA+IGppa3VcIDsKK+aBnyA+IGt5b3VcIDsKK+aBlCA+IGt5b3VcIDsKK+aBjCA+IGNob3VcIDsKK+aBiiA+IGt5b3VcIDsKK+aBhyA+IGt5b3VcIDsKK+aAsyA+IGt5b3VcIDsKK+aAlyA+IGNob3VcIDsKK+aAjSA+IHNha3VcIDsKK+aAiiA+IGNob3VcIDsKK+W/uCA+IGppa3VcIDsKK+W/tyA+IGt5b3VcIDsKK+W/sSA+IHNoaW5cIDsKK+W/qiA+IHNob3VcIDsKK+W/oSA+IGNodXVcIDsKK+W/oCA+IGNodXVcIDsKK+W/kiA+IHRva3VcIDsKK+W/kSA+IHRva3VcIDsKK+W/hyA+IHJva3VcIDsKK+W+vCA+IGt5b3VcIDsKK+W+uCA+IHNob3VcIDsKK+W+tyA+IHRva3VcIDsKK+W+tSA+IGNob3VcIDsKK+W+sSA+IGh5b3VcIDsKK+W+oiA+IHNob3VcIDsKK+W+nCA+IHNob3VcIDsKK+W+hyA+IHNodW5cIDsKK+W9uCA+IHNob3VcIDsKK+W9tiA+IGtpaHVcIDsKK+W9syA+IHRla2lcIDsKK+W9sCA+IHNob3VcIDsKK+W9qiA+IGh5b3VcIDsKK+W9nyA+IGtha3VcIDsKK+W9lCA+IHJva3VcIDsKK+W9iiA+IGt5b3VcIDsKK+W9hSA+IG5hZ2lcIDsKK+W8uiA+IGt5b3VcIDsKK+W8tiA+IGd5YXVcIDsKK+W8qyA+IHNoaW5cIDsKK+W8nCA+IGt5b3VcIDsKK+W8lyA+IGRvcnVcIDsKK+W8kyA+IHl1bWlcIDsKK+W8jCA+IGl0c3VcIDsKK+W8iyA+IHlva3VcIDsKK+W7viA+IGt5b3VcIDsKK+W7uCA+IHRla2lcIDsKK+W7syA+IGNob3VcIDsKK+W7sCA+IGNob3VcIDsKK+W7qyA+IHJ5b3VcIDsKK+W7pyA+IHNoYXVcIDsKK+W7piA+IGhla2lcIDsKK+W7oCA+IHNob3VcIDsKK+W7nyA+IGJ5b3VcIDsKK+W7mSA+IHlva3VcIDsKK+W7mCA+IHJva3VcIDsKK+W7liA+IHJ5b3VcIDsKK+W7iyA+IHNodXVcIDsKK+W6vyA+IGJ5b3VcIDsKK+W6tCA+IHNla2lcIDsKK+W6sSA+IGNob3VcIDsKK+W6pSA+IGt5dXVcIDsKK+W6oCA+IHNob3VcIDsKK+W5rCA+IGNodXVcIDsKK+W5piA+IGJla2lcIDsKK+W5niA+IGhva3VcIDsKK+W5myA+IHNob3VcIDsKK+W5mSA+IGJha3VcIDsKK+W5mCA+IHNha3VcIDsKK+W5lyA+IGtha3VcIDsKK+W5liA+IGh5b3VcIDsKK+W5kyA+IHNoaW5cIDsKK+W5jiA+IGJla2lcIDsKK+W5giA+IGJla2lcIDsKK+W4pCA+IGdleW9cIDsKK+W4oiA+IGthaHVcIDsKK+W4myA+IGhha3VcIDsKK+W3qSA+IGt5b3VcIDsKK+W3pCA+IHJlaHVcIDsKK+W3kCA+IGNob3VcIDsKK+W2vSA+IGdha3VcIDsKK+W2ryA+IHNoaXVcIDsKK+W2qyA+IGd5b3VcIDsKK+W2qiA+IGd5b3VcIDsKK+W2qCA+IGtha3VcIDsKK+W2oiA+IGd5b3VcIDsKK+W2oCA+IGt5b3VcIDsKK+W2nCA+IHNoaW5cIDsKK+W2myA+IHJ5b3VcIDsKK+W2miA+IHJ5b3VcIDsKK+W2kiA+IHNob3VcIDsKK+W2kCA+IHJ5dXVcIDsKK+W2iCA+IHNoYXVcIDsKK+W2giA+IHNob3VcIDsKK+W1viA+IHNoaW5cIDsKK+W1uSA+IGt5b3VcIDsKK+W1tyA+IHNob3VcIDsKK+W1iiA+IHNob3VcIDsKK+W1gCA+IGNoaXVcIDsKK+W0vyA+IGdha3VcIDsKK+W0tyA+IHNoaXVcIDsKK+W0qCA+IHNlaHVcIDsKK+W0pyA+IHNodXVcIDsKK+W0miA+IHJ5b3VcIDsKK+W0iCA+IHNodXVcIDsKK+WzvSA+IGt5b3VcIDsKK+WzuyA+IHNodW5cIDsKK+WztyA+IHNoaW5cIDsKK+WzrSA+IHNob3VcIDsKK+WzqiA+IHlva3VcIDsKK+WzoyA+IGd5b3VcIDsKK+WzoSA+IGt5b3VcIDsKK+WziyA+IHNodW5cIDsKK+WziSA+IGdha3VcIDsKK+WziCA+IHJha3VcIDsKK+WzhiA+IGthaHVcIDsKK+WzhSA+IGt1cmFcIDsKK+WzgCA+IHNodXVcIDsKK+WyvCA+IHl1cmlcIDsKK+WytiA+IGhha3VcIDsKK+WysyA+IHRha2VcIDsKK+WyqyA+IHNodXVcIDsKK+WypiA+IHJ5dXVcIDsKK+WynSA+IHNha3VcIDsKK+WykSA+IHNoaW5cIDsKK+WyjCA+IGt5dXVcIDsKK+WxviA+IHNoaW5cIDsKK+WxtiA+IG5hdGFcIDsKK+WxsCA+IGdla2lcIDsKK+WxqiA+IHJ5b3VcIDsKK+WxkCA+IGdla2lcIDsKK+WxjCA+IGNob3VcIDsKK+WwvyA+IG55b3VcIDsKK+WwsCA+IHNob3VcIDsKK+WwrSA+IGd5b3VcIDsKK+WwpiA+IHJ5b3VcIDsKK+WwpSA+IHJ5b3VcIDsKK+WwniA+IHJ5b3VcIDsKK+WwmSA+IHNob3VcIDsKK+WwhyA+IHNob3VcIDsKK+WwhSA+IGtva3VcIDsKK+WvtCA+IHNoaW5cIDsKK+WvryA+IHNodW5cIDsKK+WvriA+IHJ5b3VcIDsKK+WvniA+IGJha3VcIDsKK+WvliA+IHNoaW5cIDsKK+WvkSA+IHNoaW5cIDsKK+WviSA+IGtha3VcIDsKK+WvhSA+IHRvcmFcIDsKK+WuuCA+IHNoaW5cIDsKK+WutyA+IHNoaW5cIDsKK+WuqyA+IGt5dXVcIDsKK+WuqCA+IHRld2FcIDsKK+WumSA+IGNodXVcIDsKK+WukiA+IGNodW5cIDsKK+WujSA+IG5pa3VcIDsKK+WuhiA+IGt5b3VcIDsKK+WtniA+IHNoaW5cIDsKK+WthyA+IHNhd2FcIDsKK+WsvCA+IHJpd2FcIDsKK+WsuCA+IHNoaW5cIDsKK+WstiA+IGtha2FcIDsKK+WspyA+IHNoaW5cIDsKK+WspiA+IGNoaXVcIDsKK+WspSA+IGNob3VcIDsKK+WsmSA+IHNob3VcIDsKK+WshSA+IGt1d2FcIDsKK+WrvyA+IGtha3VcIDsKK+WrniA+IHNob3VcIDsKK+WrnCA+IHNoYXVcIDsKK+WrliA+IGh5b3VcIDsKK+WrgCA+IHNoaW5cIDsKK+WqtyA+IGpva3VcIDsKK+WqsyA+IHNla2lcIDsKK+WqsCA+IHNoaXVcIDsKK+WqnSA+IHNodXVcIDsKK+WqmyA+IGhpbWVcIDsKK+WqiyA+IHNodW5cIDsKK+WqgyA+IGp5dXVcIDsKK+WpsyA+IGtha3VcIDsKK+WppCA+IHNodXVcIDsKK+WplSA+IHNob3VcIDsKK+WpiiA+IGh5b3VcIDsKK+WpiCA+IHJ5b3VcIDsKK+WphSA+IGtpa3VcIDsKK+WovCA+IHNob3VcIDsKK+WotyA+IHRzdWlcIDsKK+WoliA+IHNha3VcIDsKK+WolSA+IHNha3VcIDsKK+WogCA+IHNodXVcIDsKK+WnuiA+IHNoaW5cIDsKK+WnoCA+IHNob3VcIDsKK+WnnCA+IGt5b3VcIDsKK+WmvSA+IHNoaW5cIDsKK+WmsSA+IHNob3VcIDsKK+WmryA+IGNodXVcIDsKK+WmlSA+IGNodXVcIDsKK+WmkCA+IHNob3VcIDsKK+WlrSA+IHNla2lcIDsKK+WlrCA+IHNob3VcIDsKK+WlqCA+IHNob3VcIDsKK+WlniA+IHNodW5cIDsKK+WlnSA+IGNob3VcIDsKK+WkjCA+IHJ5b3VcIDsKK+WkiyA+IHNodW5cIDsKK+WjvyA+IHNodW5cIDsKK+WjuSA+IGljaGlcIDsKK+WjsyA+IGtha3VcIDsKK+WjoiA+IHJla2lcIDsKK+WjlyA+IG1hbWFcIDsKK+WjkSA+IGdha3VcIDsKK+WjhiA+IGtha3VcIDsKK+WivCA+IGtla2lcIDsKK+WiuyA+IHNob3VcIDsKK+WiuSA+IG1hbWFcIDsKK+WiqyA+IHNodW5cIDsKK+WioyA+IGhha3VcIDsKK+WinCA+IHRzdWlcIDsKK+WikiA+IHNob3VcIDsKK+WikSA+IHRla2lcIDsKK+WijyA+IHNob3VcIDsKK+WiiyA+IHNoaW5cIDsKK+WihyA+IHNob3VcIDsKK+WihCA+IHNva3VcIDsKK+WigiA+IGh5b3VcIDsKK+WhviA+IGp1a3VcIDsKK+WhuyA+IGJha3VcIDsKK+WhtiA+IGtva3VcIDsKK+WhqCA+IGt5b3VcIDsKK+WhpSA+IGtha3VcIDsKK+WhmSA+IGtha3VcIDsKK+WhliA+IHNob3VcIDsKK+WhkyA+IGJla2lcIDsKK+WhjSA+IHNob3VcIDsKK+WhiSA+IHNla2lcIDsKK+WguyA+IHNoaW5cIDsKK+WguSA+IHNob3VcIDsKK+WgryA+IGd5b3VcIDsKK+WgriA+IGdha3VcIDsKK+WgmCA+IHNob3VcIDsKK+WfuyA+IHNodW5cIDsKK+WfqyA+IHNob3VcIDsKK+WfliA+IGdvbWlcIDsKK+WfkCA+IHNoaW5cIDsKK+WfiCA+IHNodW5cIDsKK+WfhiA+IGtha3VcIDsKK+WfgSA+IHNoaW5cIDsKK+WesyA+IGdha2VcIDsKK+WerCA+IGt5b3VcIDsKK+WemCA+IGh1a3VcIDsKK+WdvCA+IHRha3VcIDsKK+WdtiA+IGJva3VcIDsKK+WdtSA+IGt5b3VcIDsKK+WdtCA+IHJpa3VcIDsKK+WdpyA+IHNla2lcIDsKK+WcviA+IGd5dXVcIDsKK+WcuCA+IHlhbWFcIDsKK+WcsyA+IHNoaXVcIDsKK+WcpSA+IHJva3VcIDsKK+WcpCA+IGhha3VcIDsKK+WcoCA+IGF0c3VcIDsKK+WcgCA+IGtva3VcIDsKK+WbuyA+IGtva3VcIDsKK+WbtiA+IGtva3VcIDsKK+WbryA+IGtva3VcIDsKK+WboiA+IHNodXVcIDsKK+WbnyA+IHNoaW5cIDsKK+WbmiA+IHNodXVcIDsKK+WasyA+IGtva3VcIDsKK+WaqyA+IHNoaW5cIDsKK+WaqSA+IGhha3VcIDsKK+WapiA+IHJla2lcIDsKK+WaoCA+IHJ5dXVcIDsKK+WanSA+IGtha3VcIDsKK+WalyA+IGhha3VcIDsKK+WakCA+IHNob3VcIDsKK+WajSA+IHNoaW5cIDsKK+WaiyA+IGNodXVcIDsKK+WahyA+IGtha3VcIDsKK+WahCA+IGtha3VcIDsKK+WagSA+IHRla2lcIDsKK+WZrSA+IGt5b3VcIDsKK+WZqSA+IGtha3VcIDsKK+WZpiA+IGV0c3VcIDsKK+WZlyA+IGJva3VcIDsKK+WZjyA+IGt5dXVcIDsKK+WZjiA+IGl0c3VcIDsKK+WZiiA+IGl0c3VcIDsKK+WYvyA+IGJva3VcIDsKK+WYvCA+IGt5dXVcIDsKK+WYuiA+IGt5b3VcIDsKK+WYuCA+IHNhem9cIDsKK+WYryA+IHNob3VcIDsKK+WYqCA+IHNob3VcIDsKK+WYniA+IHJva3VcIDsKK+WYmiA+IHRva3VcIDsKK+WYliA+IHNha3VcIDsKK+WYkyA+IGtha3VcIDsKK+WYgiA+IGt5b3VcIDsKK+WYgSA+IHNhaHVcIDsKK+WYgCA+IHNha3VcIDsKK+WXvSA+IHVnYWlcIDsKK+WXvCA+IGJha3VcIDsKK+WXnSA+IGtha3VcIDsKK+WXlyA+IGF0c3VcIDsKK+WXlCA+IHNoaW5cIDsKK+WXkSA+IGthaHVcIDsKK+WXjSA+IHNha3VcIDsKK+WXiyA+IGt5b3VcIDsKK+WXhiA+IHNob3VcIDsKK+WXgCA+IGtha3VcIDsKK+WWsiA+IHlha3VcIDsKK+WWrCA+IGt5b3VcIDsKK+WWqCA+IHJ5b3VcIDsKK+WWoiA+IHRlaHVcIDsKK+WWniA+IHNva3VcIDsKK+WWgSA+IGd5b3VcIDsKK+WWgCA+IGtha3VcIDsKK+WVviA+IHNodXVcIDsKK+WVryA+IGtha3VcIDsKK+WVpiA+IHJhaHVcIDsKK+WVoiA+IHJ5b3VcIDsKK+WViyA+IGt5b3VcIDsKK+WVhyA+IHRla2lcIDsKK+WVhSA+IHRha3VcIDsKK+WVhCA+IHRha3VcIDsKK+WVgyA+IHNodXVcIDsKK+WUvSA+IHNla2lcIDsKK+WUvCA+IHNhaHVcIDsKK+WUtCA+IGt5b3VcIDsKK+WUriA+IHNodXVcIDsKK+WUpyA+IHNva3VcIDsKK+WUoSA+IHJ5b3VcIDsKK+WUmiA+IHNoaW5cIDsKK+WUmSA+IHRla2lcIDsKK+WUkiA+IHNodXVcIDsKK+WUiiA+IGt5b3VcIDsKK+WUgyA+IGtva3VcIDsKK+WTqCA+IHNob3VcIDsKK+WTjSA+IGt5b3VcIDsKK+WTgiA+IHNoaW5cIDsKK+WSuSA+IGF0c3VcIDsKK+WStiA+IGt1dWlcIDsKK+WSryA+IGtha3VcIDsKK+WSoiA+IGdha3VcIDsKK+WSoCA+IHNodXVcIDsKK+WSnyA+IGtha3VcIDsKK+WSiyA+IHNha3VcIDsKK+WRuyA+IHNoaW5cIDsKK+WRuiA+IGt5b3VcIDsKK+WRuSA+IGl0c3VcIDsKK+WRqyA+IHRlaHVcIDsKK+WRjyA+IHNob3VcIDsKK+WRjiA+IHNla2lcIDsKK+WRjCA+IGt5b3VcIDsKK+WRhCA+IGtva3VcIDsKK+WQvyA+IGtva3VcIDsKK+WQtSA+IGJ5b3VcIDsKK+WQsiA+IHNoaW5cIDsKK+WQoyA+IHNoaW5cIDsKK+WQoiA+IHNoaW5cIDsKK+WQnCA+IGNodXVcIDsKK+WPvCA+IGNob3VcIDsKK+WPuyA+IHJva3VcIDsKK+WPtiA+IGt5b3VcIDsKK+WPoCA+IGNob3VcIDsKK+WPkiA+IGpha3VcIDsKK+WPiSA+IG1hdGFcIDsKK+WOsCA+IHNob3VcIDsKK+WOryA+IHJla2lcIDsKK+WOpCA+IHJla2lcIDsKK+WOnSA+IHNha3VcIDsKK+WOkiA+IGthaHVcIDsKK+WOiyA+IGF0c3VcIDsKK+WOhyA+IHRha3VcIDsKK+WNviA+IGdha3VcIDsKK+WNvSA+IHNva3VcIDsKK+WNsiA+IHNob3VcIDsKK+WNrSA+IGt5b3VcIDsKK+WNoSA+IHNhaHVcIDsKK+WNnCA+IGJva3VcIDsKK+WNmSA+IHNob3VcIDsKK+WNjCA+IHNodXVcIDsKK+WNgiA+IHNoaW5cIDsKK+WMvyA+IHRva3VcIDsKK+WMtSA+IHRva3VcIDsKK+WMqSA+IGt5b3VcIDsKK+WMpyA+IGt5b3VcIDsKK+WMoyA+IGhha29cIDsKK+WMoSA+IGt5b3VcIDsKK+WMniA+IHNob3VcIDsKK+WMmyA+IGt5dXVcIDsKK+WMkyA+IGt5b3VcIDsKK+WMkSA+IGt5dXVcIDsKK+WMkCA+IGhva3VcIDsKK+WMiiA+IGtpa3VcIDsKK+WMiSA+IGh5b3VcIDsKK+WMiCA+IGt5b3VcIDsKK+WLvCA+IGt5dXVcIDsKK+WLsCA+IGt5b3VcIDsKK+WLpSA+IGt5b3VcIDsKK+WLoyA+IHNla2lcIDsKK+WLoCA+IHJpa3VcIDsKK+WLkiA+IHJva3VcIDsKK+WLgCA+IGtva3VcIDsKK+WKuyA+IGt5b3VcIDsKK+WKsCA+IGJha3VcIDsKK+WKriA+IGl0c3VcIDsKK+WKrSA+IHNob3VcIDsKK+WKpiA+IGt5b3VcIDsKK+WKnCA+IGF0c3VcIDsKK+WKkCA+IGtha3VcIDsKK+WKiyA+IHN5b3VcIDsKK+WKiSA+IHJ5dXVcIDsKK+WKiCA+IGhla2lcIDsKK+WKhSA+IHRha3VcIDsKK+WKgSA+IHN5b3VcIDsKK+WJuSA+IHJpa3VcIDsKK+WJryA+IGZ1a3VcIDsKK+WJqyA+IHRha3VcIDsKK+WJqCA+IGtha3VcIDsKK+WJoiA+IHRva3VcIDsKK+WJnSA+IGhha3VcIDsKK+WJlCA+IHRla2lcIDsKK+WJkiA+IHNha3VcIDsKK+WJiyA+IGtva3VcIDsKK+WIvCA+IGt5b3VcIDsKK+WIpiA+IGt5b3VcIDsKK+WInyA+IGNob3VcIDsKK+WImCA+IHJ5dXVcIDsKK+WHuCA+IGRla29cIDsKK+WHtiA+IGt5b3VcIDsKK+WHtCA+IGh5b3VcIDsKK+WHqiA+IG5hZ2lcIDsKK+WHpyA+IHRha29cIDsKK+WHmSA+IHRha3VcIDsKK+WHiyA+IGNob3VcIDsKK+WHiSA+IHJ5b3VcIDsKK+WHhyA+IHNob3VcIDsKK+WGviA+IGt5b3VcIDsKK+WGvCA+IHNob3VcIDsKK+WGtSA+IGt5b3VcIDsKK+WGsiA+IGNodXVcIDsKK+WGsCA+IGh5b3VcIDsKK+WGqyA+IGh5b3VcIDsKK+WGqiA+IGJla2lcIDsKK+WGoiA+IGNob3VcIDsKK+WGliA+IGJla2lcIDsKK+WGkSA+IGNodXVcIDsKK+WFuCA+IG5vcmlcIDsKK+WFoiA+IGt5b3VcIDsKK+WFnyA+IHNoaW5cIDsKK+WFkyA+IHNoaW5cIDsKK+WFjyA+IGNob3VcIDsKK+WFiyA+IGtva3VcIDsKK+WFhyA+IGt5b3VcIDsKK+WFhiA+IGNob3VcIDsKK+WFgiA+IHNoaW5cIDsKK+WEtSA+IHNodXVcIDsKK+WEtCA+IHNob3VcIDsKK+WEriA+IHJla2lcIDsKK+WErSA+IHNoaW5cIDsKK+WErCA+IHNoaW5cIDsKK+WEpiA+IGh5b3VcIDsKK+WEoCA+IHJ5b3VcIDsKK+WElCA+IGNodXVcIDsKK+WEgSA+IHNodW5cIDsKK+WDvSA+IHNodXVcIDsKK+WDuyA+IGhla2lcIDsKK+WDuiA+IHNob3VcIDsKK+WDtSA+IGt5b3VcIDsKK+WDsCA+IGhva3VcIDsKK+WDpSA+IGd5b3VcIDsKK+WDmCA+IHNob3VcIDsKK+WDhyA+IHJpa3VcIDsKK+WCvSA+IHNob3VcIDsKK+WCuSA+IGt5b3VcIDsKK+WCtiA+IHNva3VcIDsKK+WCsSA+IHNob3VcIDsKK+WClSA+IGtha3VcIDsKK+WBtyA+IGNodXVcIDsKK+WBsSA+IHNodW5cIDsKK+WBriA+IHNodXVcIDsKK+WBhiA+IHNodW5cIDsKK+WBhSA+IHNob3VcIDsKK+WBgSA+IHNob3VcIDsKK+WAsCA+IHJ5b3VcIDsKK+WAryA+IHNob3VcIDsKK+WArCA+IHRha3VcIDsKK+WAoiA+IHNob3VcIDsKK+WAoSA+IHNob3VcIDsKK+WAnCA+IHRla2lcIDsKK+WAmCA+IHNob3VcIDsKK+WAhiA+IHJ5b3VcIDsKK+WAgyA+IGt5dXVcIDsKK+WAgCA+IGNob3VcIDsKK+S/tSA+IGh5b3VcIDsKK+S/oyA+IG1hdGFcIDsKK+S/oiA+IHNodXVcIDsKK+S/oCA+IGt5b3VcIDsKK+S/jSA+IHJ5b3VcIDsKK+S/iyA+IGNodXVcIDsKK+S/iCA+IGtva3VcIDsKK+S/hyA+IGt5YXVcIDsKK+S/hSA+IGt5dXVcIDsKK+S+uiA+IHNoaW5cIDsKK+S+tiA+IHRvbW9cIDsKK+S+tCA+IGNodXVcIDsKK+S+siA+IHNoaW5cIDsKK+S+oCA+IGt5YW5cIDsKK+S+nCA+IGNodXVcIDsKK+S+miA+IHNodW5cIDsKK+S+giA+IHRha3VcIDsKK+S+gSA+IHNoaW5cIDsKK+S9viA+IGl0c3VcIDsKK+S9uyA+IGNob3VcIDsKK+S9sCA+IGhha3VcIDsKK+S9rCA+IHJ5b3VcIDsKK+S9qyA+IGtha3VcIDsKK+S9lyA+IHdhYmlcIDsKK+S9lCA+IGNoaW5cIDsKK+S9iyA+IHNob3VcIDsKK+S8tyA+IGNodXVcIDsKK+S8qSA+IHNoaW5cIDsKK+S8lCA+IHNoaW5cIDsKK+S8iyA+IGt5dXVcIDsKK+S8iCA+IHNoaW5cIDsKK+S8hCA+IGNob3VcIDsKK+S8gCA+IHNob3VcIDsKK+S7vCA+IGt5b3VcIDsKK+S7oiA+IGhha3VcIDsKK+S7lyA+IHRzdWVcIDsKK+S7iSA+IHNob3VcIDsKK+S7giA+IHJva3VcIDsKK+S6vCA+IHNodXVcIDsKK+S6syA+IGhha3VcIDsKK+S6ryA+IGt5b3VcIDsKK+S6riA+IHJ5b3VcIDsKK+S6qCA+IGt5b3VcIDsKK+S6gCA+IGthbWVcIDsKK+S5oyA+IGt5dXVcIDsKK+S5nyA+IG5hcmlcIDsKK+S5hyA+IHRha3VcIDsKK+S5hiA+IGt5dXVcIDsKK+S4tSA+IHNha3VcIDsKK+S4riA+IGtla2lcIDsKK+S4qSA+IGt5dXVcIDsKK+S4pCA+IHJ5b3VcIDsKK+S4oiA+IGNodXVcIDsKK+S4oCA+IGt5dXVcIDsKK+S4nyA+IGNodXVcIDsKK+S4niA+IHNob3VcIDsKK+S4kiA+IGNodXVcIDsKK+S4kSA+IHVzaGlcIDsKK+S4hCA+IHNob3VcIDsKK+OAhyA+IG1hcnVcIDsKK+i/tyA+IG1laVwgOwor5b+1ID4gbmVuXCA7Civnn60gPiB0YW5cIDsKK+W/qyA+IGthaVwgOwor6L+lID4ga2VpXCA7Civnn6UgPiBjaGlcIDsKK+efnCA+IGtpblwgOwor5b+ZID4gYm91XCA7Civlv5ggPiBib3VcIDsKK+i/lCA+IGhlblwgOwor6L+RID4ga2luXCA7Civov44gPiBnZWlcIDsKK+W/jSA+IG5pblwgOwor6L+FID4gamluXCA7Civovr8gPiB0ZW5cIDsKK+eeuyA+IHNlblwgOwor6L66ID4gaGVuXCA7CivovrIgPiBub3VcIDsKK+i+ryA+IGJlblwgOwor5b6qID4ganVuXCA7CivnnqAgPiBkb3VcIDsKK+W+niA+IGp1dVwgOwor5b6TID4ganV1XCA7CivlvoogPiBrYWlcIDsKK+W+hSA+IHRhaVwgOwor5b6EID4ga2VpXCA7CivlvakgPiBzYWlcIDsKK+edqCA+IGdlaVwgOwor552hID4gc3VpXCA7CivovZ8gPiBnb3VcIDsKK+W9kyA+IHRvdVwgOwor6L2JID4gdGVuXCA7CivlvYggPiBkYW5cIDsKK+ecqSA+IGdlblwgOwor55ygID4gbWluXCA7CivlvJ8gPiB0ZWlcIDsKK+W8myA+IHNoaVwgOwor5byYID4ga291XCA7CivovJUgPiBrZWlcIDsKK+ecjCA+IGtlblwgOwor55yLID4ga2FuXCA7CivovIkgPiBzYWlcIDsKK+W8hCA+IHJvdVwgOwor55yBID4gc2VpXCA7CivlvIEgPiBiZW5cIDsKK+i7vSA+IGtlaVwgOwor5bu7ID4ga2FpXCA7Civlu7ogPiBrZW5cIDsKK+ebuCA+IHNvdVwgOwor55ulID4ga2FuXCA7Civnm6MgPiBrYW5cIDsKK+i7oiA+IHRlblwgOwor5bujID4ga291XCA7Civlu6IgPiBoYWlcIDsKK+eboSA+IGppblwgOwor55ucID4gdG91XCA7Civnm5sgPiBzZWlcIDsKK+eblyA+IHRvdVwgOwor6LuNID4gZ3VuXCA7Civlu4ogPiByb3VcIDsKK+W7iSA+IHJlblwgOwor55uGID4gYm9uXCA7Civnm4MgPiBoYWlcIDsKK+W7gyA+IGhhaVwgOwor5bq4ID4geW91XCA7CivlurcgPiBrb3VcIDsKK+easCA+IGhvdVwgOwor5bqaID4ga291XCA7CivlupYgPiBob3VcIDsKK+i6kyA+IGNoaVwgOwor6LqHID4gY2hvXCA7CivnmocgPiBrb3VcIDsKK+W6hCA+IHNvdVwgOwor5bqDID4ga291XCA7Civlub4gPiBpa3VcIDsKK+W5vSA+IHl1dVwgOwor5bm8ID4geW91XCA7CivnmbsgPiB0b3VcIDsKK+W5siA+IGthblwgOwor55mMID4gZ2FuXCA7CivnmYcgPiBrYW5cIDsKK+W4vSA+IGJvdVwgOwor5bi2ID4gdGFpXCA7CivluK8gPiB0YWlcIDsKK+W4qyA+IHNoaVwgOwor6LifID4gY2hpXCA7CivouI8gPiB0b3VcIDsKK+i4iiA+IHlvdVwgOwor5biCID4gc2hpXCA7Civlt74gPiBraW5cIDsKK+eXtCA+IGNoaVwgOwor55epID4gc291XCA7Civlt6cgPiBrb3VcIDsKK+W3pSA+IGtvdVwgOwor6LehID4gYXRvXCA7Civot58gPiBrb25cIDsKK+W3oSA+IGp1blwgOwor6LedID4ga3lvXCA7Civnl5UgPiBrb25cIDsKK+eXkiA+IHlvdVwgOwor5bauID4ga2VuXCA7CivnloogPiBqb3VcIDsKK+eVtiA+IHRvdVwgOwor6LWwID4gc291XCA7CivnlaogPiBiYW5cIDsKK+i1pyA+IHRhblwgOwor55WmID4gYXplXCA7CivnlZQgPiBoYW5cIDsKK+eVjCA+IGthaVwgOwor5bWMID4ga2FuXCA7CivnlLIgPiBrb3VcIDsKK+W0qSA+IGhvdVwgOwor55SoID4geW91XCA7CivnlKMgPiBzYW5cIDsKK+eUmCA+IGthblwgOwor5bSXID4ga291XCA7CivotIUgPiB6ZWlcIDsKK+izvSA+IHNhaVwgOwor6LO8ID4ga291XCA7Civos7ogPiB0YW5cIDsKK+eTtiA+IGJpblwgOwor6LOjID4gYmFpXCA7Civos6IgPiBrZW5cIDsKK+eTnCA+IHVyaVwgOwor6LOHID4gc2hpXCA7CivosrwgPiB0ZW5cIDsKK+iyuCA+IHRhaVwgOwor6LK3ID4gYmFpXCA7CivosrAgPiBzZWlcIDsKK+iyryA+IGNob1wgOwor5bKpID4gaXdhXCA7CivosqcgPiBiaW5cIDsKK+iyoSA+IHphaVwgOwor5bKhID4ga291XCA7Civosp4gPiB0ZWlcIDsKK+iynSA+IGthaVwgOwor6LGqID4gZ291XCA7CivlsaQgPiBzb3VcIDsKK+ixoSA+IHpvdVwgOwor5bGVID4gdGVuXCA7CivosZAgPiBob3VcIDsKK+WxjyA+IGhlaVwgOwor6LGKID4gaG91XCA7CivlsYYgPiBrYWlcIDsKK+WxhSA+IGt5b1wgOwor5bC9ID4gamluXCA7CivnkLIgPiBoYWlcIDsKK+WwpCA+IHl1dVwgOwor5bCgID4gc2VuXCA7CivlsJogPiBuYW9cIDsKK+WwliA+IHNlblwgOwor5bCOID4gZG91XCA7CivlsI0gPiB0YWlcIDsKK+WwiyA+IGppblwgOwor5bCJID4gam91XCA7CivlsIggPiBzZW5cIDsKK+WwhCA+IHNoYVwgOwor5bCBID4gZnV1XCA7Civnj74gPiBnZW5cIDsKK+WvuCA+IHN1blwgOwor5a+rID4gc2hhXCA7Civnj6ogPiBrZWlcIDsKK+WvkiA+IGthblwgOwor5a65ID4geW91XCA7CivlrrUgPiB5b2lcIDsKK+WusyA+IGdhaVwgOwor5a6wID4gc2FpXCA7CivnjqkgPiBnYW5cIDsKK+WuoyA+IHNlblwgOwor5a6bID4gYXRlXCA7CivlrpogPiB0ZWlcIDsKK+WumCA+IGthblwgOwor5a6MID4ga2FuXCA7CivoroogPiBoZW5cIDsKK+iugyA+IHNhblwgOwor546EID4gZ2VuXCA7CivnjbsgPiBrZW5cIDsKK+eNuCA+IGp1dVwgOwor6K2yID4gam91XCA7CivorasgPiBzZW5cIDsKK+itpiA+IGtlaVwgOwor5a2YID4gc29uXCA7CivlrZQgPiBrb3VcIDsKK+isuSA+IGtpblwgOwor54y2ID4geXV1XCA7CivlrKogPiBoaW5cIDsKK+WsoiA+IGpvdVwgOwor6KydID4gc2hhXCA7CivnjJwgPiBzYWlcIDsKK+ismyA+IGtvdVwgOwor6KyZID4ga2VuXCA7Civni70gPiBoYWlcIDsKK+iruCA+IHNob1wgOwor6KumID4gdGVpXCA7Civni6EgPiBrb3VcIDsKK+eLmSA+IHNob1wgOwor54uXID4ga291XCA7Civoq5YgPiByb25cIDsKK+iriyA+IHNlaVwgOwor5auMID4gaXlhXCA7Civoq4cgPiBkYW5cIDsKK+eLgyA+IGp1dVwgOwor54q2ID4gam91XCA7Civniq8gPiBoYW5cIDsKK+eKrCA+IGludVwgOwor6KqYID4geXV1XCA7CivoqpMgPiBzZWlcIDsKK+WqkiA+IGJhaVwgOwor6KqNID4gbmluXCA7CivoqowgPiBzaGlcIDsKK+iqhCA+IHJ1aVwgOwor6KmyID4gZ2FpXCA7CivnibIgPiBzZWlcIDsKK+ipriA+IHNlblwgOwor6KmpID4gc2hpXCA7CivoqaYgPiBzaGlcIDsKK+eJoiA+IHJvdVwgOwor54mhID4gb3N1XCA7CivoqZ4gPiBzaGlcIDsKK+WpmiA+IGtvblwgOwor54mMID4gcGFpXCA7CivniYggPiBoYW5cIDsKK+eJhyA+IGhlblwgOwor54mAID4gc291XCA7CivniL0gPiBzb3VcIDsKK+iosSA+IGt5b1wgOwor54itID4gc291XCA7CivoqKogPiBob3VcIDsKK+eImyA+IHJhblwgOwor5aiRID4gc2hhXCA7CivoqIogPiBqaW5cIDsKK+ioiCA+IGtlaVwgOwor6KiAID4gZ2VuXCA7Civnh7sgPiBrdW5cIDsKK+inoyA+IGthaVwgOwor5aeTID4gc2VpXCA7Civlp4sgPiBzaGlcIDsKK+WniSA+IGFuZVwgOwor54eIID4gdG91XCA7Civnh4MgPiBuZW5cIDsKK+ingCA+IGthblwgOwor6Ka9ID4gcmFuXCA7CivoprMgPiBrYW5cIDsKK+imqiA+IG95YVwgOwor6KanID4gcmFuXCA7CivoppcgPiBzaGlcIDsKK+imliA+IHNoaVwgOwor5aaWID4geW91XCA7CivlpoogPiBuaW5cIDsKK+WmhCA+IGJvdVwgOwor54W9ID4gc2VuXCA7Civlpb0gPiBrb3VcIDsKK+eFriA+IHNoYVwgOwor5aWuID4gZnVuXCA7CivnhakgPiBoYW5cIDsKK+ilpCA+IHJhblwgOwor5aWlID4gb2t1XCA7CivlpaIgPiBzaGFcIDsKK+ilnyA+IGVyaVwgOwor5aWXID4gdG91XCA7CivlpY8gPiBzb3VcIDsKK+eFjiA+IHNlblwgOwor5aWJID4gaG91XCA7CivlpL4gPiBrb3VcIDsKK+ikuCA+IHJvdVwgOwor54S2ID4gemVuXCA7CivopKogPiB0YWlcIDsKK+WkqSA+IHRlblwgOwor5aSnID4gdGFpXCA7CivnhJogPiBmdW5cIDsKK+WklSA+IHl1dVwgOwor6KSSID4gaG91XCA7CivlpIkgPiBoZW5cIDsKK+ijvSA+IHNlaVwgOwor5aO7ID4gc2VpXCA7Civlo7IgPiBiYWlcIDsKK+WjsCA+IGtvZVwgOwor5aOvID4gc291XCA7Civlo6sgPiBzaGlcIDsKK+ijnSA+IHNvdVwgOwor5aOeID4ga2FpXCA7Civoo5UgPiB5dXVcIDsKK+ijjyA+IHVyYVwgOwor5aOKID4ga2FpXCA7Civlo4cgPiBkYW5cIDsKK+ijhSA+IHNvdVwgOwor6KOBID4gc2FpXCA7CivngrkgPiB0ZW5cIDsKK+iioiA+IGhhblwgOwor5aKXID4gem91XCA7CivngoogPiBzdWlcIDsKK+iigiA+IGJlaVwgOwor54G9ID4gc2FpXCA7CivngbAgPiBoYWlcIDsKK+ihoSA+IGtvdVwgOwor5aGUID4gdG91XCA7CivngYwgPiBrYW5cIDsKK+ihgCA+IGNoaVwgOwor5aGAID4gaGVpXCA7CivooLYgPiBzYW5cIDsKK+WgsSA+IGhvdVwgOwor5aCqID4ga2FuXCA7CivngJUgPiBoaW5cIDsKK+WghiA+IHRhaVwgOwor5aCFID4ga2VuXCA7CivloIIgPiBkb3VcIDsKK+ifuyA+IGFyaVwgOwor5r+6ID4gc2VuXCA7Civmv7EgPiBoaW5cIDsKK+a/nyA+IHNhaVwgOwor5r+YID4gbmVpXCA7Civln4sgPiBtYWlcIDsKK+a/gyA+IG5vdVwgOwor5r65ID4gdGFuXCA7CivonqIgPiBrZWlcIDsKK+WeoiA+IGFrYVwgOwor6b6VID4gZ2FuXCA7Civono0gPiB5dXVcIDsKK+WegiA+IHN1aVwgOwor6J2/ID4gaGFlXCA7CivmvbAgPiBrYWlcIDsKK+WdpiA+IHRhblwgOwor6b2hID4gcmVpXCA7CivmvZwgPiBzZW5cIDsKK+idmSA+IGhlblwgOwor6b2OID4gc2VpXCA7CivpvYogPiBzZWlcIDsKK+idiyA+IHJvdVwgOwor5Z2KID4gYm91XCA7CivlnYcgPiBraW5cIDsKK+icuyA+IHNlaVwgOwor5ry4ID4gemVuXCA7CivlnLAgPiBjaGlcIDsKK+a8rCA+IHNoaVwgOwor5ZyoID4gemFpXCA7CivmvKIgPiBrYW5cIDsKK+icmCA+IGNoaVwgOwor5ZyYID4gZGFuXCA7CivmvJUgPiBzb3VcIDsKK+a8jyA+IHJvdVwgOwor5ZyPID4ga2VuXCA7Civmu78gPiBtYW5cIDsKK+WbsCA+IGtvblwgOwor5ruvID4gdGFpXCA7Civpu6ggPiB0b3VcIDsKK+WboyA+IGRhblwgOwor6bueID4gdGVuXCA7Civlm54gPiBrYWlcIDsKK+ibmyA+IHNodVwgOwor5ZubID4geW9uXCA7Civom4kgPiByZWlcIDsKK+ibhiA+IHNob1wgOwor6bq7ID4gYXNhXCA7CivmurYgPiB5b3VcIDsKK+WatCA+IGdlblwgOwor5rqqID4ga2VpXCA7CivpupcgPiByZWlcIDsKK+a6liA+IGp1blwgOwor5rqAID4gbWFuXCA7Civmub4gPiB3YW5cIDsKK+m5uCA+IGtlblwgOwor5ZmqID4gc291XCA7CivmuacgPiB5dXVcIDsKK+iZnyA+IGdvdVwgOwor6JmcID4gcnlvXCA7CivomZogPiBreW9cIDsKK+WZmyA+IGdvdVwgOwor6JmVID4gc2hvXCA7CivlmYwgPiBzb3VcIDsKK+WYsiA+IHRvdVwgOwor6JitID4gcmFuXCA7CivmuKYgPiB1enVcIDsKK+a4oCA+IGt5b1wgOwor5ribID4gZ2VuXCA7CivlmJggPiB1c29cIDsKK+a4iCA+IHNhaVwgOwor5ZiGID4gdGFuXCA7CivmuIUgPiBzZWlcIDsKK+iYgiA+IHp1aVwgOwor5re7ID4gdGVuXCA7Civmt7ogPiBzZW5cIDsKK+a3tyA+IGtvblwgOwor6JepID4gaGFuXCA7Civll6MgPiBzaGlcIDsKK+a3oSA+IHRhblwgOwor6JedID4gZ2VpXCA7Civll5wgPiBzaGlcIDsKK+a3iyA+IHJpblwgOwor6JeJID4gc2hhXCA7Civpt4QgPiBrZWlcIDsKK+a2siA+IGVraVwgOwor6JavID4gc2hvXCA7CivllrAgPiBrdXVcIDsKK+a2ryA+IGdhaVwgOwor6JauID4gc291XCA7Civllq4gPiB0YW5cIDsKK+iWpiA+IHNlblwgOwor5ZanID4ga2VuXCA7CivllpogPiBrYW5cIDsKK+WWmCA+IHplblwgOwor5raMID4geXV1XCA7CivlloQgPiB6ZW5cIDsKK+WVvCA+IHRlaVwgOwor5rW3ID4gdW1pXCA7CivmtaogPiByb3VcIDsKK+iVqSA+IHRvdVwgOwor5ZWjID4ga2FuXCA7CivllY8gPiBtb25cIDsKK+a1hSA+IHNlblwgOwor5rWEID4gam91XCA7CivolL0gPiBoZWlcIDsKK+WUuCA+IHRlblwgOwor6JS1ID4gc291XCA7CivmtJcgPiBzZW5cIDsKK+a0kiA+IHNlaVwgOwor5ZSQID4gdG91XCA7CivmtIsgPiB5b3VcIDsKK+mztCA+IG1laVwgOwor5rOhID4gYXdhXCA7Civms5UgPiBob3VcIDsKK+WTgSA+IGhpblwgOwor6JK8ID4gc291XCA7CivokrggPiBqb3VcIDsKK+WSrCA+IGtvdVwgOwor6JKfID4ga29uXCA7CivokpkgPiBtb3VcIDsKK+ayliA+IG9raVwgOwor6JKUID4gc2hpXCA7CivmsowgPiB0b25cIDsKK+WRvSA+IG1laVwgOwor5ZGzID4gYWppXCA7CivokawgPiBzb3VcIDsKK+iRoyA+IHRvdVwgOwor5rGgID4gaWtlXCA7CivlkZ8gPiBnZW5cIDsKK+axlyA+IGFzZVwgOwor5ZGRID4gZG9uXCA7CivlkYYgPiBib3VcIDsKK+WRgiA+IHJ5b1wgOwor6bC6ID4gYWppXCA7CivlkLsgPiBmdW5cIDsKK+WQuSA+IHN1aVwgOwor6JCsID4gbWFuXCA7CivlkKsgPiBnYW5cIDsKK+WQnSA+IHJpblwgOwor5ZCbID4ga3VuXCA7CivlkJEgPiBrb3VcIDsKK+awjyA+IHVqaVwgOwor6JCMID4gaG91XCA7CivlkIwgPiBkb3VcIDsKK+awiCA+IHNlblwgOwor5ZCIID4gZ291XCA7CivokIQgPiB0b3VcIDsKK+WPuCA+IHNoaVwgOwor5Y+yID4gc2hpXCA7Civlj7AgPiBkYWlcIDsKK+iPqyA+IGtpblwgOwor5q+rID4ga291XCA7Civoj6kgPiBoYWlcIDsKK+WPqSA+IGtvdVwgOwor5Y+lID4ga291XCA7Civmr44gPiBtYWlcIDsKK+WPjSA+IGhhblwgOwor5Y+DID4gc2FuXCA7Civlj4IgPiBzYW5cIDsKK+WOuyA+IGt5b1wgOwor5q61ID4gZGFuXCA7CivljrMgPiBnZW5cIDsKK+muriA+IHNlblwgOwor5Y6tID4gaXlhXCA7CivljpogPiBrb3VcIDsKK+aumCA+IHphblwgOwor5Y6YID4gcmluXCA7CivmrosgPiB6YW5cIDsKK+auiiA+IHNodVwgOwor5q6GID4gdGFpXCA7Civljb8gPiBrZWlcIDsKK+atuyA+IHNoaVwgOwor5Y23ID4ga2FuXCA7CivmrbMgPiBzYWlcIDsKK+atpCA+IHNoaVwgOwor5q2jID4gc2VpXCA7CivmraIgPiBzaGlcIDsKK+atoSA+IGthblwgOwor5Y2gID4gc2VuXCA7CivmrZQgPiBreW9cIDsKK+iNkiA+IGtvdVwgOwor5q2OID4gdGFuXCA7CivmrYwgPiB1dGFcIDsKK+WNiiA+IGhhblwgOwor5Y2IID4gdW1hXCA7CivljYMgPiBjaGlcIDsKK+WNgSA+IHRvb1wgOwor6ay8ID4gb25pXCA7CivojLYgPiBjaGFcIDsKK+iMqyA+IGJvdVwgOwor6ayiID4gaGluXCA7CivljJogPiBob3VcIDsKK+asiiA+IGtlblwgOwor5YyGID4gc291XCA7CivmrIUgPiBreW9cIDsKK+WMhSA+IGhvdVwgOwor5Yu+ID4ga291XCA7Civli7ggPiBrYW5cIDsKK+WLpyA+IGthblwgOwor5YukID4gZ29uXCA7Civli54gPiByb3VcIDsKK+iLlyA+IG5hZVwgOwor5YuYID4ga2FuXCA7Civpq5QgPiB0ZWlcIDsKK+WLlSA+IGRvdVwgOwor5YuJID4gYmVuXCA7Civli4cgPiB5dXVcIDsKK+mrhCA+IHp1aVwgOwor6aq4ID4ga2FpXCA7CivoirggPiBnZWlcIDsKK+WKuSA+IGtvdVwgOwor6IqzID4gaG91XCA7CivlirQgPiByb3VcIDsKK+WKsSA+IHJlaVwgOwor5YqrID4gZ291XCA7CivmqqIgPiBrZW5cIDsKK+WKnyA+IGtvdVwgOwor5YqNID4ga2VuXCA7CivmqoAgPiB0YW5cIDsKK+iJuCA+IHNvdVwgOwor5Ym1ID4gc291XCA7CivoibIgPiBpcm9cIDsKK+mpoiA+IHJ5b1wgOwor5YmbID4gZ291XCA7CivpqZcgPiBrZW5cIDsKK+WJliA+IGJvdVwgOwor5YmNID4gbWFlXCA7CivliYMgPiB0ZWlcIDsKK+motyA+IHNvdVwgOwor5Yi2ID4gc2VpXCA7CivliLAgPiB0b3VcIDsKK+iIrCA+IGhhblwgOwor6IiqID4ga291XCA7CivmqKkgPiBrZW5cIDsKK+WIpCA+IGJhblwgOwor5qijID4geW91XCA7CivpqJkgPiBoZW5cIDsKK+mokyA+IGtlblwgOwor6aiSID4gc291XCA7CivmqJMgPiByb3VcIDsKK+WIkSA+IGtlaVwgOwor5YiKID4ga2FuXCA7CivoiIggPiBrb3VcIDsKK+WIhiA+IGJ1blwgOwor5YiAID4gdG91XCA7Civmp70gPiBzb3VcIDsKK+iHvCA+IHVzdVwgOwor5Ye9ID4ga2FuXCA7Civoh7ogPiB0YWlcIDsKK+iHtCA+IGNoaVwgOwor6IezID4gc2hpXCA7Civoh6ogPiBzaGlcIDsKK+iHqCA+IHJpblwgOwor5YemID4gc2hvXCA7Civlh6EgPiBib25cIDsKK+iHnyA+IHpvdVwgOwor6aebID4gc2hpXCA7Civmp5ggPiB5b3VcIDsKK+WHjSA+IHRvdVwgOwor5qeLID4ga291XCA7Civpp4UgPiBla2lcIDsKK+WHhCA+IHNlaVwgOwor6Ia/ID4gdW1pXCA7Civohr0gPiB0YW5cIDsKK+amuyA+IHRvdVwgOwor5Ya3ID4gcmVpXCA7CivpprMgPiBjaGlcIDsKK+iGsyA+IHplblwgOwor6aatID4gZ3lvXCA7CivppqwgPiB1bWFcIDsKK+WGmSA+IHNoYVwgOwor5YaXID4gam91XCA7CivlhpIgPiBib3VcIDsKK+WGjSA+IHNhaVwgOwor5qaCID4gZ2FpXCA7CivmpbwgPiByb3VcIDsKK+WFvCA+IGtlblwgOwor6IWuID4gc2FpXCA7CivlhawgPiBrb3VcIDsKK+WFqCA+IHplblwgOwor6IWmID4gbm91XCA7CivlhZogPiB0b3VcIDsKK+iFlSA+IHVkZVwgOwor6aWSID4gam91XCA7CivmpZMgPiBmdXVcIDsKK+WFjSA+IG1lblwgOwor6IWLID4gZWtpXCA7CivppYUgPiBtYW5cIDsKK+WFiCA+IHNlblwgOwor5YWFID4ganV1XCA7CivlhYQgPiBhbmlcIDsKK+iEsyA+IG5vdVwgOwor5YSqID4geXV1XCA7CivmpJwgPiBrZW5cIDsKK+mkkCA+IHNhblwgOwor6aSKID4geW91XCA7CivlhIQgPiBva3VcIDsKK+akgCA+IHdhblwgOwor6aO9ID4gaG91XCA7Civpo7wgPiBzaGlcIDsKK+ajuiA+IGthblwgOwor6aO0ID4gYW1lXCA7Civog7QgPiBkb3VcIDsKK+ajsiA+IHNlaVwgOwor5YOnID4gc291XCA7Civog54gPiBob3VcIDsKK+mjnCA+IGhvblwgOwor5qOSID4gYm91XCA7Civog44gPiB0YWlcIDsKK+WDjyA+IHpvdVwgOwor6IOMID4gc2VpXCA7Civlg40gPiBkb3VcIDsKK+iDhiA+IHRhblwgOwor5YOFID4ga2luXCA7Civlgr4gPiBrZWlcIDsKK+iCsiA+IGlrdVwgOwor5YKzID4gZGVuXCA7CivmorAgPiBrYWlcIDsKK+iCryA+IGtvdVwgOwor5qKvID4gdGVpXCA7CivlgqwgPiBzYWlcIDsKK+miqCA+IGZ1dVwgOwor6IKlID4ga29lXCA7Civmop0gPiBqb3VcIDsKK+iChiA+IHNoaVwgOwor5qKFID4gdW1lXCA7CivmobYgPiBva2VcIDsKK+WBtiA+IGd1dVwgOwor5YG1ID4gdGVpXCA7CivogbIgPiBzZWlcIDsKK+mhryA+IGtlblwgOwor6aGrID4gc2VuXCA7CivmoacgPiBrYWlcIDsKK+WBpSA+IGtlblwgOwor6aGeID4gcnVpXCA7CivmoZ8gPiBzYW5cIDsKK+iBniA+IGJ1blwgOwor6aGbID4gdGVuXCA7CivlgZwgPiB0ZWlcIDsKK+mhmCA+IGdhblwgOwor6IGWID4gc2VpXCA7CivpoZUgPiBrZW5cIDsKK+mhlCA+IGthb1wgOwor6aGPID4gZ2FuXCA7CivpoY4gPiBhZ29cIDsKK+mhjCA+IGRhaVwgOwor5qGCID4ga2VpXCA7CivogL0gPiB0YW5cIDsKK+mgvCA+IHJhaVwgOwor6aC7ID4gaGluXCA7CivogLsgPiBjaGlcIDsKK+WAuSA+IGtlblwgOwor6aCtID4gdG91XCA7CivlgKYgPiBrZW5cIDsKK+agoSA+IGtvdVwgOwor6aCaID4ga2VpXCA7CivogJUgPiBrb3VcIDsKK+mgkyA+IHRvblwgOwor5qCTID4gc2VuXCA7CivlgJIgPiB0b3VcIDsKK+iAkCA+IHRhaVwgOwor5YCJID4gc291XCA7CivpoIYgPiBqdW5cIDsKK+mghSA+IGtvdVwgOwor6ICDID4ga291XCA7CivogIEgPiByb3VcIDsKK+e/uyA+IGhvblwgOwor5L+6ID4gb3JlXCA7Civmn7QgPiBzYWlcIDsKK+afkyA+IHNlblwgOwor5p+QID4gYm91XCA7CivnvrkgPiBrb3VcIDsKK+e+riA+IGtvdVwgOwor5L6vID4ga291XCA7Civkvq0gPiBqaW5cIDsKK+e+qCA+IHNlblwgOwor576kID4gZ3VuXCA7Civmnp0gPiBlZGFcIDsKK+aemiA+IG1haVwgOwor5L6LID4gcmVpXCA7CivkvoYgPiByYWlcIDsKK+advyA+IGl0YVwgOwor5L2/ID4gc2hpXCA7CivmnbUgPiBzaG9cIDsKK+S9tSA+IGhlaVwgOwor572uID4gY2hpXCA7CivmnaUgPiByYWlcIDsKK+mdoiA+IG1lblwgOwor5p2hID4gam91XCA7CivpnZwgPiBzZWlcIDsKK+mdmSA+IHNlaVwgOwor6Z2WID4gc2VpXCA7CivkvZUgPiBuYW5cIDsKK+S9kyA+IHRlaVwgOwor572QID4ga2FuXCA7CivmnZAgPiB6YWlcIDsKK+e9jiA+IHRhblwgOwor5L2PID4ganV1XCA7CivkvY4gPiB0ZWlcIDsKK+mdiCA+IHJlaVwgOwor5L2HID4gY2hvXCA7CivkvYMgPiB0ZW5cIDsKK+S8uiA+IHNoaVwgOwor5pyxID4gYWthXCA7CivmnKcgPiByb3VcIDsKK+acpiA+IGJvdVwgOwor5pydID4gYXNhXCA7CivkvJ0gPiB0ZW5cIDsKK+acmyA+IGJvdVwgOwor5LyaID4ga2FpXCA7CivmnJcgPiByb3VcIDsKK+mciiA+IHJlaVwgOwor5pyLID4gaG91XCA7CivmnIkgPiB5dXVcIDsKK+acgyA+IGthaVwgOwor5pyAID4gc2FpXCA7Civmm78gPiB0YWlcIDsKK+abviA+IHNvdVwgOwor6Zu7ID4gZGVuXCA7Civmm7wgPiBiYW5cIDsKK+S7uyA+IG5pblwgOwor6Zu2ID4gcmVpXCA7Civmm7ggPiBzaG9cIDsKK+S7tiA+IGtlblwgOwor5pu0ID4ga291XCA7Civpm6ggPiBhbWVcIDsKK+mboyA+IG5hblwgOwor5LukID4gcmVpXCA7Civmm5wgPiB5b3VcIDsKK+mbliA+IHN1aVwgOwor5LuVID4gc2hpXCA7Civku5QgPiBzaGlcIDsKK+S7iyA+IGthaVwgOwor5LuKID4ga29uXCA7Civpm4QgPiBvc3VcIDsKK+S7gSA+IG5pblwgOwor5pq0ID4gYm91XCA7Civkuq0gPiB0ZWlcIDsKK+maqiA+IGtlblwgOwor5pqrID4gemFuXCA7CivpmqggPiB6dWlcIDsKK+S6pCA+IGtvdVwgOwor5LqhID4gYm91XCA7CivpmpsgPiBzYWlcIDsKK+S6mSA+IGtvdVwgOwor5LqYID4gc2VuXCA7CivmmpYgPiBkYW5cIDsKK+S6lSA+IHNlaVwgOwor57qSID4gdGVuXCA7CivmmpEgPiBzaG9cIDsKK+majyA+IHp1aVwgOwor57qPID4gdGVuXCA7Civpmo4gPiBrYWlcIDsKK+maiiA+IHRhaVwgOwor6ZqIID4gd2FpXCA7CivkuokgPiBzb3VcIDsKK+e6giA+IHNhblwgOwor5LqCID4gcmFuXCA7Civpmb0gPiB5b3VcIDsKK+e5vCA+IGtlaVwgOwor6Zm6ID4ga2VuXCA7CivmmbogPiBjaGlcIDsKK+mZtiA+IHRvdVwgOwor5pm0ID4gc2VpXCA7CivnubAgPiBzb3VcIDsKK+S5sSA+IHJhblwgOwor5pmvID4ga2VpXCA7CivnuaogPiBrYWlcIDsKK+e5qSA+IGpvdVwgOwor5pmpID4gYmFuXCA7CivpmaUgPiBrYW5cIDsKK+mZoyA+IGppblwgOwor57meID4gam91XCA7CivkuZggPiBqb3VcIDsKK+e5lSA+IHplblwgOwor5LmXID4gam91XCA7CivnuZQgPiBvcmlcIDsKK+mZkCA+IGdlblwgOwor6ZmNID4ga291XCA7CivkuY8gPiBib3VcIDsKK+e5gSA+IGhhblwgOwor57i9ID4gc291XCA7CivpmLIgPiBib3VcIDsKK+e4sSA+IGp1dVwgOwor57irID4gaG91XCA7CivpmKogPiBoYW5cIDsKK+S4piA+IGhlaVwgOwor5LiYID4gb2thXCA7CivkuJQgPiBzaGFcIDsKK+aYkyA+IGVraVwgOwor5piOID4gbWVpXCA7CivkuIogPiBqb3VcIDsKK+aYhiA+IGtvblwgOwor5piCID4ga291XCA7Civnt7QgPiByZW5cIDsKK+e3rCA+IG1lblwgOwor5pesID4ganVuXCA7Civnt6kgPiBrYW5cIDsKK+aXqSA+IHNvdVwgOwor57eoID4gaGVuXCA7Civml6YgPiB0YW5cIDsKK+e3oCA+IHRlaVwgOwor6ZecID4ga2FuXCA7Civnt5ogPiBzZW5cIDsKK+mXmCA+IHRvdVwgOwor57ePID4gc291XCA7Civml4sgPiBzZW5cIDsKK+e3iiA+IGtpblwgOwor5pa5ID4gaG91XCA7CivmlrcgPiBkYW5cIDsKK+e2siA+IGFtaVwgOwor5pavID4gc2hpXCA7Civmlq0gPiBkYW5cIDsKK+aWrCA+IHphblwgOwor6ZakID4ga291XCA7CivmlpwgPiBzaGFcIDsKK+e2mSA+IGtlaVwgOwor57aTID4ga2VpXCA7CivplosgPiBrYWlcIDsKK+mWiSA+IGhlaVwgOwor5paJID4gc2VpXCA7CivmlocgPiBidW5cIDsKK+mWgyA+IHNlblwgOwor5paDID4gaGVpXCA7CivploAgPiBtb25cIDsKK+mVtyA+IG9zYVwgOwor5pW4ID4gc3V1XCA7CivmlbQgPiBzZWlcIDsKK+e1siA+IHNoaVwgOwor57WxID4gdG91XCA7CivmlbAgPiBzdXVcIDsKK+aVrCA+IGtlaVwgOwor57WoID4ganV1XCA7CivmlaMgPiBzYW5cIDsKK+aVoiA+IGthblwgOwor57WeID4ga291XCA7CivmlZcgPiBoYWlcIDsKK+aVjyA+IGJpblwgOwor5pWIID4ga291XCA7CivmlYUgPiB5dWVcIDsKK+aUviA+IGhvdVwgOwor57S6ID4ga29uXCA7CivmlLkgPiBrYWlcIDsKK+e0sCA+IHNlaVwgOwor57SvID4gcnVpXCA7CivmlK8gPiBzaGlcIDsKK+e0myA+IGZ1blwgOwor57SUID4ganVuXCA7CivntI0gPiB0b3VcIDsKK+e0iyA+IG1vblwgOwor57O4ID4gaXRvXCA7Civmk6cgPiBreW9cIDsKK+aToSA+IHRhaVwgOwor57OeID4gZnVuXCA7Civns5YgPiB0b3VcIDsKK+aTlCA+IHRhblwgOwor57K+ID4gc2VpXCA7Civnsp8gPiBhd2FcIDsKK+eylyA+IGFyYVwgOwor6ZG1ID4ga2FuXCA7CivnsZYgPiBzZW5cIDsKK+mRkiA+IGthblwgOwor57GQID4gdG91XCA7CivmkLogPiBrZWlcIDsKK+ewoSA+IGthblwgOwor5pCcID4gc291XCA7CivmkJYgPiB5b3VcIDsKK+aQjSA+IHNvblwgOwor5o+hID4gYWt1XCA7Civmj5sgPiBrYW5cIDsKK+aPmiA+IHlvdVwgOwor5o+QID4gdGVpXCA7Civmj4kgPiBqdXVcIDsKK+evhCA+IGhhblwgOwor5o+DID4gc2VuXCA7CivmjrsgPiBzb3VcIDsKK+aOsiA+IGtlaVwgOwor566qID4gdGFuXCA7CivmjqggPiBzdWlcIDsKK+aOpyA+IGtvdVwgOwor5o6jID4gc2VpXCA7CivmjqIgPiB0YW5cIDsKK+aOoSA+IHNhaVwgOwor566XID4gc2FuXCA7CivmjpIgPiBoYWlcIDsKK+euiyA+IHNlblwgOwor5o6DID4gc291XCA7CivmjbsgPiBuZW5cIDsKK+aNsiA+IGtlblwgOwor5o2uID4ga3lvXCA7CivmjaggPiBzaGFcIDsKK+etpyA+IGtlblwgOwor6Y2bID4gdGFuXCA7CivmjZwgPiBzb3VcIDsKK+aMvyA+IHNvdVwgOwor5oy9ID4gYmFuXCA7CivnrKwgPiBkYWlcIDsKK+espSA+IHNoaVwgOwor6YyiID4gc2VuXCA7CivnrJsgPiBmdWVcIDsKK+aMmSA+IGt5b1wgOwor56yEID4ga2VpXCA7Civnq78gPiBzYW9cIDsKK+aLviA+IGp1dVwgOwor5ou1ID4gc29uXCA7Civmi6AgPiBreW9cIDsKK+ernyA+IGtlaVwgOwor56udID4gaGVpXCA7Civmi50gPiBoYWlcIDsKK+aLnCA+IGhhaVwgOwor5ouYID4ga291XCA7Civmi4UgPiB0YW5cIDsKK+ergyA+IHNvdVwgOwor5oq1ID4gdGVpXCA7CivmirEgPiBob3VcIDsKK+mKrSA+IHNlblwgOwor6YqcID4ga2FuXCA7CivmipsgPiBob3VcIDsKK+mKmCA+IG1laVwgOwor5oqYID4gb3JpXCA7CivmipcgPiBrb3VcIDsKK+aKlSA+IHRvdVwgOwor5oqTID4gc291XCA7CivpioUgPiBkb3VcIDsKK+epvyA+IHNlblwgOwor5omxID4gc291XCA7Civmia4gPiBmdW5cIDsKK+eplyA+IHN1aVwgOwor5omNID4gc2FpXCA7CivnqYkgPiBjaGlcIDsKK+eovyA+IGtvdVwgOwor56i9ID4ga2VpXCA7CivnqLsgPiB0b3VcIDsKK+aIuyA+IHJlaVwgOwor5oi0ID4gdGFpXCA7CivnqLIgPiBpbmVcIDsKK+aIsCA+IHNlblwgOwor56iaID4gY2hpXCA7CivmiJYgPiBhcnVcIDsKK+aIkiA+IGthaVwgOwor5oiQID4gc2VpXCA7CivpiI0gPiBkb25cIDsKK+eojiA+IHplaVwgOwor5oiMID4gaW51XCA7CivmiIAgPiByZW5cIDsKK+aHuCA+IGtlblwgOwor5oe3ID4ga2FpXCA7Civph5EgPiBraW5cIDsKK+mHjSA+IG9tb1wgOwor56eLID4gYWtpXCA7Civmh4kgPiB5b3VcIDsKK+mHhyA+IHNhaVwgOwor5oeDID4ga2luXCA7Civnpr0gPiBraW5cIDsKK+aGuiA+IHRhblwgOwor5oa2ID4gb2t1XCA7CivnprAgPiBkZWlcIDsKK+emriA+IHJlaVwgOwor5oasID4ga2VpXCA7CivmhqcgPiBkb3VcIDsKK+aGpCA+IGZ1blwgOwor6YaSID4gc2VpXCA7CivmhpAgPiByZW5cIDsKK+aGjiA+IHpvdVwgOwor6YaJID4gc3VpXCA7CivnpoUgPiB6ZW5cIDsKK+aGgiA+IHl1dVwgOwor56aBID4ga2luXCA7CivphbggPiBzYW5cIDsKK+eltyA+IHRvdVwgOwor5oWuID4gcnlvXCA7CivmhaggPiBnYWlcIDsKK+aFpSA+IHpvdVwgOwor5oWjID4ga2FuXCA7CivmhaIgPiBtYW5cIDsKK+aFmCA+IHNhblwgOwor6YWUID4gc3VpXCA7CivphY0gPiBoYWlcIDsKK+aFjCA+IGtvdVwgOwor5oWKID4ga2VuXCA7CivnpLwgPiByZWlcIDsKK+ekuiA+IHNoaVwgOwor5oSfID4ga2FuXCA7CivnpJkgPiBnYWlcIDsKK+mDtSA+IHl1dVwgOwor5oOzID4gc291XCA7Civmg7EgPiBub3VcIDsKK+aDqCA+IHNhblwgOwor5oOgID4ga2VpXCA7Civno5AgPiBpd2FcIDsKK+mDjiA+IHJvdVwgOwor6YOKID4ga291XCA7Civmg4UgPiBqb3VcIDsKK+aCvCA+IHRvdVwgOwor5oK2ID4gbW9uXCA7CivmgrQgPiBzdWlcIDsKK+aCoyA+IGthblwgOwor5oKgID4geXV1XCA7CivnopcgPiB3YW5cIDsKK+aCliA+IGhhaVwgOwor5oKUID4ga2FpXCA7CivpgoogPiBoZW5cIDsKK+mChCA+IGthblwgOwor6YKCID4ga2FpXCA7CivpgbggPiBzZW5cIDsKK+mBsiA+IGNoaVwgOwor5oGwID4ga291XCA7Civpga4gPiBzaGFcIDsKK+mBrSA+IHNvdVwgOwor5oGvID4gaWtpXCA7CivnoawgPiBrb3VcIDsKK+aBqCA+IGtvblwgOwor6YGlID4geW91XCA7CivpgaMgPiBrZW5cIDsKK+mBoCA+IHRvb1wgOwor6YGcID4gc29uXCA7CivpgZkgPiB5b3VcIDsKK+mBkSA+IGtvdVwgOwor6YGNID4gaGVuXCA7CivmgY0gPiBrb3VcIDsKK+mBiiA+IHl1dVwgOwor5oGLID4ga29pXCA7CivpgYcgPiBndXVcIDsKK+mBhSA+IGNoaVwgOwor6YGCID4gc3VpXCA7CivpgYEgPiB0b25cIDsKK+aAqiA+IGthaVwgOwor5oCnID4gc2VpXCA7CivnoKUgPiBzaGlcIDsKK+mAoyA+IHJlblwgOwor6YCiID4gaG91XCA7CivpgKAgPiB6b3VcIDsKK+aAoCA+IHRhaVwgOwor6YCeID4gdGVpXCA7CivpgJ0gPiBzZWlcIDsKK+aAnSA+IHNoaVwgOwor6YCZID4gZ2VuXCA7CivnoJUgPiBzYWlcIDsKK+eglCA+IGtlblwgOwor6YCPID4gdG91XCA7CivpgIUgPiBrb3VcIDsKK+mAgyA+IHRvdVwgOwor6YCBID4gc291XCA7CivpgIAgPiB0YWlcIDsKK+W/vyA+IGZ1blwgOwor6b6kID4ga2FpXCA7CivpvqEgPiBzdWlcIDsKK+m+mCA+IHRvdVwgOwor6b6XID4gcmVpXCA7CivpvpYgPiB0b3VcIDsKK+m+kiA+IHJ5dVwgOwor6b6QID4gaG91XCA7Civpvb0gPiBraW5cIDsKK+m9tyA+IGFrdVwgOwor6b22ID4gYWdvXCA7CivpvbUgPiBnb3VcIDsKK+m9syA+IGd1blwgOwor6b2vID4gZ2VpXCA7Civpva0gPiBzaG9cIDsKK+m9rCA+IGd5b1wgOwor6b2pID4gZ291XCA7CivpvZ4gPiBnZW5cIDsKK+m9nSA+IGNoaVwgOwor6b2YID4ga2FpXCA7CivpvZcgPiBraW5cIDsKK+m9kiA+IHNoaVwgOwor6b2PID4gc2VpXCA7CivpvYsgPiBzYWlcIDsKK+m9hCA+IHNoYVwgOwor6b2BID4ga291XCA7CivpvLogPiBydWlcIDsKK+m8tyA+IGtlaVwgOwor6byyID4ga29uXCA7CivpvLEgPiBzZWlcIDsKK+m8qiA+IHNlaVwgOwor6byiID4gZnVuXCA7CivpvKEgPiBzaG9cIDsKK+m8nyA+IHRvdVwgOwor6bybID4ga291XCA7CivpvJkgPiBoZWlcIDsKK+m8lyA+IHRvdVwgOwor6byWID4gZnVuXCA7CivpvJUgPiB0b3VcIDsKK+m8kiA+IHNoaVwgOwor6byRID4gdGVpXCA7CivpvJAgPiBkYWlcIDsKK+m8hyA+IGdvdVwgOwor6byFID4gY2hpXCA7CivpvIMgPiB3YWlcIDsKK+m7vyA+IGdlblwgOwor6bu9ID4gYm91XCA7Civpu7kgPiBjaGlcIDsKK+m7tiA+IGF6YVwgOwor6bu1ID4gdGFuXCA7Civpu7IgPiBzYW5cIDsKK+m7sSA+IHRhaVwgOwor6buuID4gdGFuXCA7Civpu6wgPiBrYW5cIDsKK+m7pyA+IHJlaVwgOwor6budID4geXV1XCA7Civpu5UgPiB0YW5cIDsKK+m7lCA+IGtlblwgOwor6buPID4gbmVuXCA7Civpu44gPiByZWlcIDsKK+m7jCA+IGtvdVwgOwor6buLID4ga291XCA7Civpu4ggPiB0b3VcIDsKK+m7hiA+IGtvdVwgOwor6buDID4ga291XCA7CivpurogPiBtZW5cIDsKK+m6tSA+IGJlblwgOwor6bqzID4gcmFpXCA7CivpurAgPiBib3VcIDsKK+m6riA+IGt5b1wgOwor6bqtID4gaG91XCA7CivpuqogPiBtZW5cIDsKK+m6nyA+IHJpblwgOwor6bqdID4gc2hhXCA7CivpupsgPiBiZWlcIDsKK+m6liA+IGtlaVwgOwor6bqVID4ga2luXCA7CivpupEgPiBnZWlcIDsKK+m6jyA+IGtpblwgOwor6bqIID4gc2h1XCA7CivpuocgPiBraW5cIDsKK+m6hSA+IGhvdVwgOwor6bqDID4gaG91XCA7CivpuoAgPiB5dXVcIDsKK+m5vCA+IGtlblwgOwor6bm7ID4ga2FuXCA7CivpubkgPiBrYW5cIDsKK+m4sCA+IHJlaVwgOwor6bieID4gcmFuXCA7CivpuJsgPiBrYW5cIDsKK+m4jiA+IHlvdVwgOwor6biHID4gc2VuXCA7CivpuIIgPiBrZWlcIDsKK+m3tCA+IGthblwgOwor6bezID4ga2FuXCA7Civpt60gPiBiYW5cIDsKK+m3pSA+IHNoaVwgOwor6begID4gZ3lvXCA7Civpt54gPiBzb3VcIDsKK+m3mSA+IHNoaVwgOwor6beVID4geW91XCA7Civpt5QgPiBnb3VcIDsKK+m3kyA+IHNoYVwgOwor6bePID4gdGVuXCA7Civpt4kgPiB0ZWlcIDsKK+m3hyA+IGtvdVwgOwor6beGID4gdGVuXCA7Civpt4IgPiB5b3VcIDsKK+m2vyA+IHNoaVwgOwor6ba8ID4ga2VuXCA7CivptrUgPiBzdXVcIDsKK+m2sSA+IGtlblwgOwor6basID4gc291XCA7CivptqQgPiBrb25cIDsKK+m2lyA+IHRlaVwgOwor6baKID4ga291XCA7CivptocgPiB0b3VcIDsKK+m2hiA+IHJhaVwgOwor6baEID4gc2VpXCA7Civptb4gPiBrb25cIDsKK+m1vCA+IGtvdVwgOwor6bW7ID4gc3VpXCA7CivptawgPiBob3VcIDsKK+m1qyA+IHRvdVwgOwor6bWnID4gaGVpXCA7CivptaMgPiByYWlcIDsKK+m1kSA+IGtlblwgOwor6bWKID4ga291XCA7CivptYggPiB0ZW5cIDsKK+m1hCA+IHNoaVwgOwor6bWBID4ga291XCA7CivptL8gPiBrb3VcIDsKK+m0viA+IGJvdVwgOwor6bS7ID4ga291XCA7CivptLogPiB0ZWlcIDsKK+m0tCA+IGtvdVwgOwor6bSyID4gc2hpXCA7CivptKYgPiB5b3VcIDsKK+m0nyA+IHNoaVwgOwor6bSeID4geW91XCA7CivptJwgPiBzaGlcIDsKK+m0mCA+IGhlblwgOwor6bSSID4gcmVpXCA7CivptIsgPiBob3VcIDsKK+m0iCA+IGdhblwgOwor6bO5ID4ga2VuXCA7Civps7cgPiBzaGlcIDsKK+mzsyA+IGhvdVwgOwor6bOyID4gc2hpXCA7Civps7AgPiBuaW9cIDsKK+mzryA+IGhvdVwgOwor6bOuID4ga2VpXCA7Civps6sgPiBnYW5cIDsKK+myuSA+IHNvdVwgOwor6bKZID4ga2FpXCA7CivpsokgPiB5dXVcIDsKK+mxuyA+IHNlblwgOwor6bGuID4gc2hvXCA7CivpsaQgPiBrYW5cIDsKK+mxoyA+IHRhblwgOwor6bGgID4ga2FpXCA7CivpsZ8gPiBrb3VcIDsKK+mxniA+IGthblwgOwor6bGdID4gZnVuXCA7CivpsZsgPiBlc29cIDsKK+mxliA+IGtlaVwgOwor6bGUID4gc2VuXCA7CivpsZMgPiBzZW5cIDsKK+mxhyA+IGtvdVwgOwor6bGEID4gc2VuXCA7CivpsLYgPiBzZWlcIDsKK+mwtSA+IGJpblwgOwor6bCyID4gZ291XCA7CivpsLEgPiByZW5cIDsKK+mwqiA+IGtvdVwgOwor6bCpID4geW91XCA7CivpsKcgPiB0b3VcIDsKK+mwpiA+IHNoaVwgOwor6bClID4ga2FuXCA7CivpsKMgPiBzaGlcIDsKK+mwnCA+IGtlblwgOwor6bCVID4gZWJpXCA7CivpsJQgPiBrYW5cIDsKK+mwkyA+IGVyYVwgOwor6bCRID4geW91XCA7CivpsIMgPiB3YWlcIDsKK+mwgSA+IHNlblwgOwor6bCAID4ga2FuXCA7Civpr78gPiBoZW5cIDsKK+mvuiA+IHNob1wgOwor6a+5ID4gc2VpXCA7Civpr7ggPiBrb3VcIDsKK+mvtyA+IHRlaVwgOwor6a+1ID4gYWppXCA7Civpr68gPiBzZWlcIDsKK+mvqyA+IHNvdVwgOwor6a+kID4ga29uXCA7Civpr6IgPiBnZWlcIDsKK+mvnyA+IHRvdVwgOwor6a+bID4gdGFpXCA7Civpr5ggPiBkYWlcIDsKK+mviSA+IGtvaVwgOwor6a+IID4geXV1XCA7Civpr4cgPiBrYW5cIDsKK+mvgSA+IGtvdVwgOwor6a+AID4ga29uXCA7Civprr4gPiBkYWlcIDsKK+muuCA+IGJlblwgOwor6a63ID4gdGVpXCA7CivprrAgPiBrYWlcIDsKK+muqSA+IGhvdVwgOwor6a6mID4gdG91XCA7CivprpQgPiBreW9cIDsKK+mukCA+IHRhaVwgOwor6a6PID4gc2VpXCA7Civpro4gPiBheXVcIDsKK+muiyA+IHl1dVwgOwor6a6GID4gc2VpXCA7Civprb8gPiByZWlcIDsKK+mttyA+IHl1dVwgOwor6a21ID4gZnVuXCA7CivprbQgPiBob3VcIDsKK+mtsyA+IHNoaVwgOwor6a2tID4gZ2VuXCA7CivprawgPiBoYW5cIDsKK+mtqiA+IGthaVwgOwor6a2oID4gdG9uXCA7CivpraUgPiBnb3VcIDsKK+mtoyA+IHNob1wgOwor6a2eID4gZXJpXCA7CivprZwgPiBqaW5cIDsKK+mtmyA+IHRvdVwgOwor6a2WID4ga3lvXCA7CivprZEgPiBjaGlcIDsKK+mtjSA+IGJvdVwgOwor6a2LID4gdGFpXCA7CivprLcgPiBzb3VcIDsKK+mstSA+IHNlblwgOwor6ayzID4ga2VuXCA7CivprK0gPiB0b3VcIDsKK+msrCA+IHRvdVwgOwor6ayrID4ga2FuXCA7CivprKogPiB0b3VcIDsKK+msqCA+IGtvdVwgOwor6aynID4gdG91XCA7CivprKYgPiB0b3VcIDsKK+mspSA+IHRvdVwgOwor6ayfID4ga2FuXCA7CivprJwgPiBrYW5cIDsKK+msmSA+IHNvdVwgOwor6ayWID4gc2FuXCA7CivprIsgPiBzZW5cIDsKK+msiSA+IHNvdVwgOwor6ayIID4ga2VuXCA7CivprIUgPiBob3VcIDsKK+mshCA+IHRlaVwgOwor6ayDID4gc291XCA7CivprIIgPiBiaW5cIDsKK+msgCA+IHRlaVwgOwor6au7ID4ga2VpXCA7Civpq7MgPiBib3VcIDsKK+mrsSA+IGhvdVwgOwor6auvID4gemVuXCA7Civpq6kgPiBiaW5cIDsKK+mrpyA+IHRhblwgOwor6aumID4gYm91XCA7Civpq6UgPiB6ZW5cIDsKK+mroyA+IGhvdVwgOwor6auiID4gdGVpXCA7Civpq6AgPiBrb25cIDsKK+mrniA+IHNvdVwgOwor6aubID4ga291XCA7Civpq5kgPiBrb3VcIDsKK+mrliA+IGthblwgOwor6auVID4gaGluXCA7Civpq5MgPiB6dWlcIDsKK+mrkiA+IHNvdVwgOwor6auQID4ga291XCA7Civpq48gPiByb3VcIDsKK+mriCA+IGhvdVwgOwor6auBID4ga2FpXCA7Civpqr8gPiBoZW5cIDsKK+mqviA+IGtvdVwgOwor6aq5ID4ga291XCA7CivpqrYgPiB0ZWlcIDsKK+mqtSA+IHRhaVwgOwor6aq0ID4gc2hpXCA7CivpqrAgPiB0b3VcIDsKK+mqryA+IGtvdVwgOwor6aqUID4gc291XCA7CivpqakgPiBrYW5cIDsKK+mppCA+IGpvdVwgOwor6ambID4gZWtpXCA7CivpqZQgPiB0ZW5cIDsKK+mpkiA+IHRhblwgOwor6amOID4gcmluXCA7CivpqYcgPiBjaGlcIDsKK+mphCA+IHNvdVwgOwor6amCID4gc2FuXCA7CivpqYEgPiBnb3VcIDsKK+mouiA+IGNoaVwgOwor6ai4ID4gc2VuXCA7CivpqLUgPiBnZW5cIDsKK+mosCA+IHRvdVwgOwor6airID4ga2VuXCA7CivpqKggPiB0YW5cIDsKK+mooyA+IHNvdVwgOwor6aigID4gdGVpXCA7CivpqJcgPiBoZW5cIDsKK+mokCA+IGtlblwgOwor6aiMID4gc291XCA7CivpqIsgPiByYWlcIDsKK+moiCA+IGhlblwgOwor6aiFID4gc3VpXCA7CivpqIMgPiBnYWlcIDsKK+mogiA+IHNlaVwgOwor6aiBID4gdGVpXCA7Civpp74gPiB0YWlcIDsKK+mnvSA+IGtlblwgOwor6ae7ID4ga2FuXCA7Civpp7kgPiBib3VcIDsKK+mntCA+IGthaVwgOwor6aetID4ga2FpXCA7Civpp6sgPiBrZWlcIDsKK+mnpyA+IHRvdVwgOwor6aeiID4gaGVuXCA7Civpp58gPiBzaGlcIDsKK+mnmiA+IHlvdVwgOwor6aeYID4gdGFpXCA7Civpp5QgPiBzb3VcIDsKK+mniSA+IGtlaVwgOwor6aa8ID4gYnVuXCA7CivpprogPiBzb3VcIDsKK+mmtSA+IHNodVwgOwor6aaoID4ga2VpXCA7CivppqYgPiBrZW5cIDsKK+mmkyA+IHNhblwgOwor6aWeID4gc2FuXCA7CivppZsgPiBib3VcIDsKK+mlmSA+IGZ1blwgOwor6aWYID4gc2VuXCA7CivppZUgPiB0b3VcIDsKK+mllCA+IHlvdVwgOwor6aWOID4gc2hpXCA7CivppY0gPiB6ZW5cIDsKK+mljCA+IHNlblwgOwor6aWKID4gc2FuXCA7CivppYkgPiBraW5cIDsKK+mlgSA+IHlvdVwgOwor6aWAID4gdG91XCA7CivppLsgPiBrb3VcIDsKK+mkuSA+IHRvdVwgOwor6aS1ID4gZGFpXCA7CivppLQgPiBmdW5cIDsKK+mksyA+IHRvdVwgOwor6aSxID4ga291XCA7CivppKcgPiBkYWlcIDsKK+mkpCA+IHRhblwgOwor6aSiID4gaG91XCA7CivppKAgPiBoZWlcIDsKK+mkmyA+IGtvblwgOwor6aSaID4ga291XCA7CivppJYgPiB0b3VcIDsKK+mkkiA+IGRhaVwgOwor6aSMID4gZXNhXCA7CivppIggPiBzaGlcIDsKK+mkgyA+IGtvdVwgOwor6aSCID4gdGVuXCA7CivppIEgPiBqaW5cIDsKK+mjsyA+IHNodVwgOwor6aOwID4gaGFuXCA7Civpo6ogPiBqaW5cIDsKK+mjqSA+IHRvblwgOwor6aOnID4gc29uXCA7Civpo6YgPiBrZW5cIDsKK+mjoyA+IHRlaVwgOwor6aOhID4gc2FuXCA7Civpo4wgPiBmdXVcIDsKK+mivyA+IGhhblwgOwor6aK7ID4geW91XCA7CivporogPiB5b3VcIDsKK+miuCA+IHNoaVwgOwor6aK0ID4gc2VuXCA7CivporEgPiB0YWlcIDsKK+mirSA+IHNlblwgOwor6aG0ID4ga2FuXCA7CivpobAgPiBoaW5cIDsKK+mhqiA+IGthaVwgOwor6aGlID4ga291XCA7CivpoaIgPiBiYW5cIDsKK+mhmiA+IHRlblwgOwor6aGZID4gc291XCA7CivpoZMgPiBzZW5cIDsKK+mhkSA+IGthblwgOwor6aGLID4gc2FpXCA7CivpoYcgPiBzdWlcIDsKK+mhhCA+IGthblwgOwor6aC+ID4gc2hpXCA7CivpoL0gPiB0YWlcIDsKK+mguSA+IHRhaVwgOwor6aC3ID4ga2FuXCA7CivpoLMgPiB0ZWlcIDsKK+mgsiA+IHRlaVwgOwor6aCvID4ga2FpXCA7CivpoK4gPiBrYWlcIDsKK+mgpiA+IGthaVwgOwor6aCgID4gZ2FpXCA7CivpoJwgPiBrYW5cIDsKK+mgliA+IGhhblwgOwor6aCSID4gaGFuXCA7CivpoI8gPiBrb3VcIDsKK+mgiCA+IHNodVwgOwor6aCHID4ga2FuXCA7Civpn7ggPiBob3VcIDsKK+mftCA+IHNvdVwgOwor6Z+yID4gc2VpXCA7Civpn7EgPiBzZW5cIDsKK+mfryA+IHNlblwgOwor6Z+dID4ga291XCA7Civpn5wgPiB0b3VcIDsKK+mfmyA+IGhhaVwgOwor6Z+TID4ga2FuXCA7Civpn5AgPiBrb3VcIDsKK+mfjiA+IGJhaVwgOwor6Z+MID4gamluXCA7Civpn4ogPiByYW5cIDsKK+mfiSA+IHNlblwgOwor6Z+GID4gc2VuXCA7Civpn4UgPiBrZW5cIDsKK+mfhCA+IGFrdVwgOwor6Z66ID4gdG91XCA7CivpnrYgPiBoYW5cIDsKK+mesyA+IHRvdVwgOwor6Z6yID4ga291XCA7CivpnrEgPiB0b3VcIDsKK+meriA+IHRlaVwgOwor6Z6sID4ga2VuXCA7CivpnqMgPiBqdXVcIDsKK+meniA+IGhlaVwgOwor6Z6cID4gdG91XCA7CivpnpogPiBrb3VcIDsKK+memSA+IGtlblwgOwor6Z6XID4gdG91XCA7CivpnpYgPiBzYWlcIDsKK+melSA+IGdvdVwgOwor6Z6JID4gdG91XCA7CivpnoAgPiB0b3VcIDsKK+mdvSA+IGJhblwgOwor6Z28ID4gdGFuXCA7CivpnbggPiBzb3VcIDsKK+mdsyA+IGtpblwgOwor6Z2xID4gamluXCA7Civpna0gPiBqaW5cIDsKK+mdqyA+IHNhaVwgOwor6Z2qID4gdGVpXCA7CivpnacgPiBrYWlcIDsKK+mdpiA+IHRlblwgOwor6Z2kID4gaG91XCA7CivpnaMgPiBtZW5cIDsKK+mdoCA+IGtvdVwgOwor6Z2bID4gdGVuXCA7CivpnZogPiBzZWlcIDsKK+mdlyA+IHRlaVwgOwor6Z2RID4gc2VpXCA7CivpnYogPiBmdXVcIDsKK+mdhiA+IHRhaVwgOwor6Z2BID4gcmFpXCA7CivpnL4gPiBiYWlcIDsKK+mcvSA+IHNlaVwgOwor6ZydID4gcmVpXCA7CivpnJsgPiByZWlcIDsKK+mcmiA+IGJvdVwgOwor6ZyWID4gcmluXCA7CivpnJMgPiBnZWlcIDsKK+mckSA+IHRlblwgOwor6ZyOID4gc291XCA7CivpnIkgPiBiYWlcIDsKK+mciCA+IGhhaVwgOwor6ZyGID4gdGVpXCA7Civpm7EgPiBob3VcIDsKK+mbsCA+IGZ1blwgOwor6ZuvID4gYnVuXCA7Civpm58gPiBrZWlcIDsKK+mbniA+IGtlaVwgOwor6ZudID4geW91XCA7Civpm5ogPiBrYW5cIDsKK+mbmSA+IHNvdVwgOwor6ZuOID4gc2hvXCA7Civpm40gPiB5b3VcIDsKK+mbiyA+IHNlblwgOwor6ZuKID4ga291XCA7Civpm4ggPiBrYW5cIDsKK+mauSA+IHN1aVwgOwor6Zq4ID4gcmVpXCA7CivpmrcgPiByZWlcIDsKK+matiA+IHRhaVwgOwor6Zq0ID4gcm91XCA7Civpmq8gPiB0b3VcIDsKK+mariA+IHNlaVwgOwor6ZqnID4gc3VpXCA7CivpmqYgPiBoZWlcIDsKK+mapSA+IHRvdVwgOwor6ZqkID4gdGFpXCA7Civpmp0gPiB0b3VcIDsKK+mamiA+IHRvdVwgOwor6ZqXID4ga2FpXCA7CivpmpEgPiBrYWlcIDsKK+majSA+IGtvdVwgOwor6ZqEID4gdGVpXCA7CivpmoMgPiBzaHVcIDsKK+mZviA+IGpvdVwgOwor6Zm8ID4gc2hvXCA7CivpmbcgPiBrYW5cIDsKK+mZsiA+IHN1aVwgOwor6ZmuID4gdGFpXCA7CivpmawgPiBzdXVcIDsKK+mZqiA+IGJhaVwgOwor6ZmmID4gdG91XCA7CivpmaEgPiB0b3VcIDsKK+mZnSA+IHNlblwgOwor6ZmcID4ga291XCA7CivpmZsgPiBoZWlcIDsKK+mZmCA+IGtlaVwgOwor6ZmWID4ga2FpXCA7CivpmZQgPiBnYWlcIDsKK+mZiyA+IHJvdVwgOwor6Zi6ID4ga3lvXCA7CivpmLggPiBha3VcIDsKK+mYtyA+IHRlaVwgOwor6ZizID4geW91XCA7CivpmLEgPiBzZWlcIDsKK+mYryA+IHNoaVwgOwor6ZiuID4gZ2VuXCA7CivpmKwgPiBrb3VcIDsKK+mYqCA+IGFrdVwgOwor6ZimID4geW91XCA7CivpmKQgPiBjaGlcIDsKK+mYoSA+IHNlblwgOwor6ZemID4gZ29uXCA7Civpl6QgPiBrYW5cIDsKK+mXoSA+IHNlblwgOwor6ZegID4ga2FpXCA7Civpl5kgPiBrZWlcIDsKK+mXlyA+IGthblwgOwor6ZeUID4ga291XCA7Civpl5MgPiBrYWlcIDsKK+mXkiA+IHRvdVwgOwor6ZeQID4gdGVuXCA7Civpl4wgPiByYW5cIDsKK+mXhiA+IGhhblwgOwor6Za/ID4gYnVuXCA7Civplr0gPiBrb25cIDsKK+mWuiA+IGJlblwgOwor6ZasID4gcm91XCA7CivplqsgPiBrb25cIDsKK+mWqSA+IGJlblwgOwor6ZaoID4ga2VpXCA7CivplqcgPiBrb3VcIDsKK+mWoSA+IGdhaVwgOwor6ZaeID4gaGVuXCA7Civplp0gPiByZWlcIDsKK+mWmSA+IHRvdVwgOwor6ZaYID4ga291XCA7CivplpQgPiBiaW5cIDsKK+mWjyA+IGp1blwgOwor6ZaOID4ga291XCA7Civplo0gPiBob3VcIDsKK+mWjCA+IGtvdVwgOwor6ZaIID4ga2FuXCA7CivplocgPiBoZWlcIDsKK+mWgiA+IHNhblwgOwor6ZW0ID4gcm91XCA7Civpla4gPiBrYW5cIDsKK+mUvSA+IGtvdVwgOwor6ZOmID4gc2VuXCA7Civpk5MgPiBib3VcIDsKK+mThyA+IGhvdVwgOwor6ZKEID4gcmFuXCA7Civpkb4gPiByYW5cIDsKK+mRvSA+IHNhblwgOwor6ZG3ID4gam91XCA7CivpkbIgPiBqb3VcIDsKK+mRsSA+IHNhblwgOwor6ZGvID4gc2VuXCA7Civpka0gPiByYW5cIDsKK+mRqyA+IGtpblwgOwor6ZGoID4gcm91XCA7CivpkZ4gPiByb3VcIDsKK+mRmyA+IGtvdVwgOwor6ZGaID4gc2FuXCA7CivpkZkgPiBrZWlcIDsKK+mRkSA+IGthblwgOwor6ZGMID4gaGluXCA7CivpkYggPiBnZWlcIDsKK+mRhSA+IGtvdVwgOwor6ZGBID4gYmFuXCA7CivpkLsgPiBreW9cIDsKK+mQuiA+IHRvdVwgOwor6ZC2ID4ga2FuXCA7CivpkLMgPiByYWlcIDsKK+mQsSA+IHNlblwgOwor6ZCuID4gcmVuXCA7CivpkKsgPiBzZW5cIDsKK+mQnyA+IHRlaVwgOwor6ZCZID4gdG91XCA7CivpkJcgPiBrYW5cIDsKK+mQlSA+IHNhblwgOwor6ZCTID4gdGFpXCA7CivpkI8gPiBzb25cIDsKK+mQiSA+IHNlblwgOwor6ZCHID4gaGFuXCA7CivpkIQgPiBrb3VcIDsKK+mQgyA+IGRvdVwgOwor6ZCBID4gc2hpXCA7Civpj7sgPiByaW5cIDsKK+mPuCA+IHRlaVwgOwor6Y+oID4gc2FuXCA7Civpj6cgPiByb3VcIDsKK+mPpCA+IHJvdVwgOwor6Y+fID4gc2FuXCA7Civpj54gPiB5b3VcIDsKK+mPnSA+IG1hblwgOwor6Y+cID4gdG91XCA7Civpj5kgPiBzYWlcIDsKK+mPlyA+IGtvdVwgOwor6Y+TID4gc291XCA7Civpj4sgPiBiYW5cIDsKK+mPiCA+IHJlblwgOwor6Y+HID4gc2VuXCA7Civpj4YgPiBrYW5cIDsKK+mPhCA+IHRhblwgOwor6Y6sID4ga291XCA7CivpjqsgPiBiYW5cIDsKK+mOqSA+IHNhaVwgOwor6Y6kID4ga291XCA7CivpjqEgPiBzaGlcIDsKK+mOniA+IGhlaVwgOwor6Y6XID4gc291XCA7CivpjpUgPiB0b3VcIDsKK+mOlCA+IHlvdVwgOwor6Y6SID4gZG91XCA7CivpjoogPiBoYXVcIDsKK+mNvyA+IHNoaVwgOwor6Y29ID4gaGVuXCA7CivpjbQgPiB0YW5cIDsKK+mNsyA+IGthblwgOwor6Y2xID4geW91XCA7CivpjbAgPiBrYW5cIDsKK+mNryA+IHNvdVwgOwor6Y2tID4ga291XCA7CivpjaogPiBib3VcIDsKK+mNqSA+IHRlblwgOwor6Y2nID4ga291XCA7CivpjaQgPiBzb3VcIDsKK+mNoCA+IGtvdVwgOwor6Y2eID4ga291XCA7CivpjZogPiB5b3VcIDsKK+mNlyA+IHRlaVwgOwor6Y2VID4ga3VuXCA7CivpjZIgPiBqdXVcIDsKK+mNkSA+IGh1dVwgOwor6Y2QID4gc291XCA7CivpjYogPiByZW5cIDsKK+mNiSA+IHRlaVwgOwor6Y2HID4ga2FpXCA7CivpjYQgPiBrZWlcIDsKK+mMtSA+IG5pZVwgOwor6YyzID4gbW91XCA7CivpjKwgPiByZW5cIDsKK+mMqiA+IHRlblwgOwor6YynID4ga2FuXCA7CivpjKUgPiBpa3VcIDsKK+mMoyA+IHRlaVwgOwor6YygID4gam91XCA7CivpjJ8gPiB0YW5cIDsKK+mMnSA+IHNvdVwgOwor6YycID4gam91XCA7CivpjJogPiBzb3VcIDsKK+mMmSA+IHNoaVwgOwor6YyVID4ga29uXCA7CivpjJQgPiB0b3VcIDsKK+mMkSA+IHJhaVwgOwor6YyIID4ga2VuXCA7CivpjIAgPiByaW5cIDsKK+mLuyA+IGtlblwgOwor6YuuID4gc2VpXCA7Civpi6wgPiBoYW5cIDsKK+mLpyA+IGtlblwgOwor6YulID4gdG91XCA7Civpi6EgPiBrYW5cIDsKK+mLnyA+IHNlblwgOwor6YuZID4gZ3lvXCA7Civpi5cgPiBrZW5cIDsKK+mLlSA+IHNoaVwgOwor6YuTID4gdGVuXCA7Civpi5AgPiBrb3VcIDsKK+mLjiA+IGthblwgOwor6YuMID4gdGVpXCA7Civpi4sgPiBzZW5cIDsKK+mLhyA+IGhhaVwgOwor6YuFID4gc2hpXCA7Civpi4MgPiByb3VcIDsKK+mLgiA+IGJhaVwgOwor6YuBID4gcnlvXCA7Civpi4AgPiB0b3VcIDsKK+mKuyA+IHRlaVwgOwor6Yq6ID4gc291XCA7CivpirIgPiBrYW5cIDsKK+mKpyA+IGtvdVwgOwor6YqkID4gYmVpXCA7CivpiqAgPiByb3VcIDsKK+mKmiA+IHlvdVwgOwor6YqZID4ga2FpXCA7CivpipcgPiBrb3VcIDsKK+mKliA+IHNodVwgOwor6YqTID4gc2VuXCA7CivpipIgPiBrZWlcIDsKK+mKiCA+IHRlaVwgOwor6Ym/ID4ga291XCA7CivpibwgPiBoZWlcIDsKK+mJuSA+IHNoaVwgOwor6Ym4ID4ga291XCA7CivpibcgPiBrb3VcIDsKK+mJtiA+IGtlaVwgOwor6Ym1ID4gdG91XCA7CivpibEgPiBrb3VcIDsKK+mJsCA+IHNoaVwgOwor6YmpID4gam91XCA7CivpiaggPiBkZWlcIDsKK+mJpyA+IGJvdVwgOwor6YmkID4ga291XCA7CivpiaEgPiBoYW5cIDsKK+mJnCA+IGZ1dVwgOwor6YmZID4gdGFpXCA7CivpiZcgPiBrYW5cIDsKK+mJjyA+IHNob1wgOwor6YmOID4gc291XCA7CivpiYkgPiBrZW5cIDsKK+mJiCA+IHNoYVwgOwor6YmHID4gc2hpXCA7CivpiYYgPiB0ZW5cIDsKK+mJhSA+IGt5b1wgOwor6YmDID4gc2hpXCA7CivpiYIgPiBzaGlcIDsKK+mJgCA+IGtvdVwgOwor6Yi/ID4gdGVuXCA7CivpiLYgPiBzaGlcIDsKK+mItSA+IGhlaVwgOwor6YiwID4gc2hpXCA7CivpiK4gPiBkZWlcIDsKK+mIoyA+IGthaVwgOwor6YieID4ga2luXCA7CivpiJwgPiBrb3VcIDsKK+mIliA+IGh1blwgOwor6YiTID4gamluXCA7CivpiJIgPiBzb3VcIDsKK+mIkSA+IGhhblwgOwor6YiQID4ga2VuXCA7CivpiIkgPiBkb3VcIDsKK+mIhCA+IHRvdVwgOwor6YiBID4gaG91XCA7Civph78gPiBraW5cIDsKK+mHvCA+IGtlblwgOwor6Ye2ID4gc2hpXCA7Civph7EgPiB0ZWlcIDsKK+mHryA+IGJvdVwgOwor6YeuID4gc2VuXCA7Civph60gPiBrb3VcIDsKK+mHrCA+IGthblwgOwor6YepID4gaGFuXCA7Civph6cgPiBzZW5cIDsKK+mHpiA+IGtvdVwgOwor6YekID4gc2FuXCA7Civph5YgPiB0b3VcIDsKK+mHiSA+IHl1dVwgOwor6YeGID4gaGFuXCA7Civph4UgPiBnZW5cIDsKK+mHgyA+IHNoaVwgOwor6YeBID4ga2luXCA7Civph4AgPiBqb3VcIDsKK+mGvSA+IHJlaVwgOwor6Ya6ID4ga3VuXCA7CivphrggPiBqb3VcIDsKK+mGtiA+IGdlblwgOwor6Ya1ID4ga3lvXCA7CivphrQgPiByZWlcIDsKK+mGsyA+IGVraVwgOwor6YayID4gam91XCA7CivphrAgPiB0YW5cIDsKK+mGryA+IGtlaVwgOwor6YamID4gc2FuXCA7CivphqIgPiBrYWlcIDsKK+mGmCA+IGtvdVwgOwor6YaTID4gdGFuXCA7CivphpEgPiBzaG9cIDsKK+mGjiA+IGRhaVwgOwor6YaNID4gdGVpXCA7CivphoYgPiBzYW5cIDsKK+mGhSA+IGhhaVwgOwor6YaCID4gcmluXCA7CivphbsgPiBzdWlcIDsKK+mFuSA+IHJhaVwgOwor6YW2ID4gYmFpXCA7CivphbUgPiBrb3VcIDsKK+mFsiA+IHRlaVwgOwor6YWtID4geXV1XCA7CivphakgPiBtZWlcIDsKK+mFoyA+IGthblwgOwor6YWaID4gaHVuXCA7CivphZggPiB0b3VcIDsKK+mFliA+IHRhblwgOwor6YWKID4gdGVpXCA7CivphYcgPiBzYW5cIDsKK+mFhiA+IGZ1dVwgOwor6YWDID4gcmVpXCA7CivphL0gPiB0ZW5cIDsKK+mEvCA+IHNhYlwgOwor6YS6ID4ga291XCA7CivphLcgPiBob3VcIDsKK+mEtiA+IGthaVwgOwor6YSyID4gdGFuXCA7CivphLAgPiByaW5cIDsKK+mEryA+IHNlblwgOwor6YSuID4gYm91XCA7CivphK0gPiB0ZWlcIDsKK+mEpyA+IHRvdVwgOwor6YSeID4gZ2luXCA7CivphJggPiB5b3VcIDsKK+mElyA+IGtvdVwgOwor6YSSID4gc3V1XCA7CivphI0gPiBtZWlcIDsKK+mEhCA+IGtlblwgOwor6YOvID4gdGFuXCA7Civpg6UgPiBoYWlcIDsKK+mDoSA+IGd1blwgOwor6YOfID4ga291XCA7Civpg54gPiByb3VcIDsKK+mDnCA+IGtvdVwgOwor6YOYID4gcnlvXCA7Civpg5cgPiBjaGlcIDsKK+mDlSA+IHNlaVwgOwor6YOSID4gcm91XCA7Civpg4wgPiBrZWlcIDsKK+mDiCA+IGtvdVwgOwor6YODID4ga291XCA7Civpg4EgPiBpa3VcIDsKK+mCviA+IGNodVwgOwor6YK9ID4ga2VpXCA7CivpgrYgPiBoYWlcIDsKK+mCtCA+IGhlaVwgOwor6YKwID4gdGFpXCA7Civpgq8gPiBrYW5cIDsKK+mCqCA+IHNvblwgOwor6YKiID4ga2VpXCA7CivpgqEgPiBob3VcIDsKK+mCoCA+IGhpblwgOwor6YKZID4gYm91XCA7CivpgpcgPiBrYW5cIDsKK+mClSA+IHlvdVwgOwor6YKRID4geXV1XCA7Civpgo4gPiB5dXVcIDsKK+mCjCA+IHJlaVwgOwor6YKJID4gaGVuXCA7CivpgoUgPiBrZW5cIDsKK+mCgyA+IHN1aVwgOwor6YKBID4gYmFpXCA7CivpgoAgPiB5b3VcIDsKK+mBvSA+IGt5b1wgOwor6YG3ID4gc2VuXCA7CivpgbYgPiBqb3VcIDsKK+mBtSA+IGp1blwgOwor6YG0ID4gcmluXCA7CivpgbAgPiB0ZWlcIDsKK+mBryA+IHRvblwgOwor6YGoID4gZ291XCA7CivpgaYgPiBrYW5cIDsKK+mBoiA+IHRvdVwgOwor6YGfID4gY2hpXCA7CivpgZ4gPiB0ZWlcIDsKK+mBnSA+IHRvdVwgOwor6YGYID4ga291XCA7CivpgYkgPiB0ZWlcIDsKK+mBhCA+IHNlblwgOwor6YGDID4gZ2VuXCA7CivpgL8gPiB0b3VcIDsKK+mAsyA+IGlrdVwgOwor6YCwID4geXV1XCA7CivpgK4gPiB0YWlcIDsKK+mArSA+IGthblwgOwor6YCsID4gaG91XCA7CivpgKggPiByYWlcIDsKK+mApSA+IGthaVwgOwor6YCXID4gdG91XCA7CivpgJUgPiBrZWlcIDsKK+mAkyA+IHRlaVwgOwor6YCMID4geXV1XCA7CivpgIggPiBrZWlcIDsKK+mAhCA+IGhvdVwgOwor6L+6ID4gZGFpXCA7Civov7ggPiBob3VcIDsKK+i/tiA+IHl1dVwgOwor6L+1ID4gdG91XCA7Civov7QgPiBrYWlcIDsKK+i/ryA+IHRvdVwgOwor6L+oID4gdGFpXCA7Civov6MgPiBzZWlcIDsKK+i/kiA+IGtvdVwgOwor6L+KID4gc291XCA7Civov4EgPiBzZW5cIDsKK+i/gCA+IGthblwgOwor6L65ID4gaGVuXCA7Civovq4gPiBoZW5cIDsKK+i+qCA+IGJlblwgOwor6L6nID4gYmVuXCA7CivovqYgPiBoYW5cIDsKK+i+oSA+IGhlblwgOwor6L6gID4gc2FpXCA7CivovaUgPiByaW5cIDsKK+i9niA+IGthblwgOwor6L2YID4ga2FuXCA7CivovZcgPiBrYW5cIDsKK+i9lCA+IHJpblwgOwor6L2TID4gaGFuXCA7CivovZIgPiBodW5cIDsKK+i9kSA+IHJhdVwgOwor6L2PID4gc2FuXCA7CivovYcgPiBrb3VcIDsKK+i9gSA+IHRvdVwgOwor6Ly+ID4gdGVuXCA7CivovLogPiBzaGlcIDsKK+i8tyA+IGtvdVwgOwor6Ly2ID4geXV1XCA7CivovLMgPiBzb3VcIDsKK+i8riA+IGp1dVwgOwor6LytID4gemVuXCA7CivovKggPiBrYW5cIDsKK+i8piA+IHJlblwgOwor6LylID4ga29uXCA7CivovKMgPiBob3VcIDsKK+i8oSA+IGthblwgOwor6LyeID4gYm91XCA7CivovJwgPiBzaGlcIDsKK+i8lyA+IGdlaVwgOwor6LyTID4gYmFuXCA7CivovJAgPiBrYW5cIDsKK+i8jyA+IHl1dVwgOwor6LyKID4gY2hpXCA7CivovIcgPiBzZW5cIDsKK+i7uiA+IHlvdVwgOwor6Lu5ID4gc2hpXCA7Civou7AgPiBoYWlcIDsKK+i7qCA+IHJlaVwgOwor6LujID4gZ291XCA7Civou6AgPiBqaW5cIDsKK+i7nyA+IG5hblwgOwor6LucID4gZG91XCA7Civou5sgPiBha3VcIDsKK+i7lCA+IGppblwgOwor6LuRID4gdGVpXCA7Civou5AgPiBzZW5cIDsKK+i7hyA+IHRvdVwgOwor6LuGID4gdGVpXCA7Civou4EgPiByb3VcIDsKK+i6uiA+IHRvdVwgOwor6LqwID4gdGVpXCA7Civouq0gPiB0YW5cIDsKK+i6qiA+IHJpblwgOwor6LqnID4gc2hpXCA7CivouqIgPiB0b3VcIDsKK+i6oSA+IGpvdVwgOwor6LqdID4gcmFuXCA7CivoupogPiBzZW5cIDsKK+i6mSA+IHJpblwgOwor6LqVID4gY2h1XCA7CivoupQgPiB0ZW5cIDsKK+i6iyA+IHNlaVwgOwor6LqJID4gdG9uXCA7CivouoEgPiBzb3VcIDsKK+i5uSA+IHRvdVwgOwor6LmvID4gaGFuXCA7Civoua0gPiBzb3VcIDsKK+i5rCA+IHRvdVwgOwor6LmjID4gbWFuXCA7CivouaEgPiB5b3VcIDsKK+i5nSA+IHNoaVwgOwor6LmbID4gdGFpXCA7CivouZQgPiBzYW5cIDsKK+i5jyA+IHRlaVwgOwor6LmOID4gdGVuXCA7CivouY0gPiB0ZW5cIDsKK+i5iyA+IHRvdVwgOwor6LmKID4ga2VpXCA7CivouYggPiB0b3VcIDsKK+i5hyA+IGtlblwgOwor6LmCID4ganV1XCA7CivouYEgPiBoZW5cIDsKK+i4uSA+IHNlblwgOwor6Li2ID4gdGVpXCA7CivouLQgPiB5b3VcIDsKK+i4oyA+IGhvdVwgOwor6LihID4ga2VuXCA7CivouJ4gPiBreW9cIDsKK+i4lCA+IHRvdVwgOwor6LiQID4gc2VuXCA7CivouIggPiBzaG9cIDsKK+i4hSA+IHRlaVwgOwor6LiBID4ga2VpXCA7Civot7UgPiBzZW5cIDsKK+i3tCA+IHNhaVwgOwor6LeyID4ga291XCA7Civot7EgPiBjaGlcIDsKK+i3sCA+IGhvdVwgOwor6LenID4gc2VuXCA7Civot6QgPiBrb3VcIDsKK+i3miA+IHNhblwgOwor6LeZID4gc2hvXCA7Civot5EgPiBob3VcIDsKK+i3iiA+IGJhaVwgOwor6LeIID4gZGVuXCA7Civot4YgPiB0YWlcIDsKK+i2viA+IHNoaVwgOwor6La8ID4gZ2VuXCA7CivotrIgPiBzYW5cIDsKK+i2ryA+IGthblwgOwor6LaoID4gc3V1XCA7CivotqYgPiBzaGlcIDsKK+i2nyA+IHRvdVwgOwor6LaVID4ga2FuXCA7CivotpEgPiBzaGlcIDsKK+i2jSA+IGNoaVwgOwor6LaIID4gdGFuXCA7CivotoQgPiBzaG9cIDsKK+i1vyA+IGNoaVwgOwor6LWxID4gc291XCA7Civota0gPiBzaGFcIDsKK+i1rCA+IHRlaVwgOwor6LWmID4gc2hhXCA7CivotJwgPiB6b3VcIDsKK+i0myA+IGtvdVwgOwor6LSXID4ga2VuXCA7CivotJMgPiB6b3VcIDsKK+i0kiA+IGtlblwgOwor6LSNID4gc2VuXCA7CivotIogPiBzYW5cIDsKK+i0iSA+IHRhblwgOwor6LSIID4gem91XCA7CivotIQgPiBzaGlcIDsKK+i0gyA+IHdhblwgOwor6LSBID4gaGFpXCA7Civos78gPiByb3VcIDsKK+izuCA+IHlvdVwgOwor6LO3ID4gc2VpXCA7Civos7UgPiBodXVcIDsKK+iztCA+IHJhaVwgOwor6LOyID4gaG91XCA7Civos68gPiBrZWlcIDsKK+izqCA+IHNvdVwgOwor6LOkID4gc2VuXCA7Civos6AgPiBiYWlcIDsKK+iznCA+IHNoaVwgOwor6LObID4gc2FuXCA7Civos5ogPiByYWlcIDsKK+izliA+IHNoYVwgOwor6LOUID4gaGluXCA7Civos5MgPiBoaW5cIDsKK+izkiA+IHNoYVwgOwor6LOOID4gc2VuXCA7Civos40gPiBzb3VcIDsKK+iziyA+IGtvdVwgOwor6LOGID4gaGVuXCA7Civos4UgPiBrYWlcIDsKK+izhCA+IHdhaVwgOwor6LK/ID4gYm91XCA7CivosrkgPiBzZWlcIDsKK+iytiA+IGhlblwgOwor6LKyID4gc2hpXCA7CivosqsgPiBrYW5cIDsKK+iyqiA+IGRvblwgOwor6LKpID4gaGFuXCA7CivosqIgPiBrb3VcIDsKK+iymyA+IGthblwgOwor6LKZID4gY2h1XCA7CivospIgPiB0YW5cIDsKK+iyjiA+IGdlaVwgOwor6LKMID4gYm91XCA7CivososgPiBrYW5cIDsKK+iyhyA+IGtvblwgOwor6LKGID4ga2FuXCA7CivosbsgPiBrYW5cIDsKK+ixuiA+IHNhaVwgOwor6LG4ID4gY2hpXCA7CivosbYgPiBodW5cIDsKK+ixtSA+IHNvdVwgOwor6LGzID4gaGluXCA7CivosawgPiBjaG9cIDsKK+ixqSA+IGhpblwgOwor6LGmID4ga3lvXCA7CivosaQgPiBrb25cIDsKK+ixoyA+IGtlblwgOwor6LGiID4ga2VuXCA7CivosZwgPiBrZW5cIDsKK+ixmyA+IGVraVwgOwor6LGYID4gdG9uXCA7CivosZUgPiBzaGlcIDsKK+ixjyA+IGthblwgOwor6LGLID4gdG91XCA7CivosYkgPiBzaGlcIDsKK+ixhyA+IGtvdVwgOwor6LGFID4gcm91XCA7CivosL8gPiBrZWlcIDsKK+iwviA+IGtvdVwgOwor6LC9ID4ga2FuXCA7CivosLkgPiBrb3VcIDsKK+iwuCA+IHNlblwgOwor6K6cID4gdG91XCA7CivorpogPiBzYW5cIDsKK+iumSA+IGthblwgOwor6K6VID4gcmFuXCA7CivorpMgPiBqb3VcIDsKK+iukiA+IHNhblwgOwor6K2+ID4gc2VuXCA7CivorbwgPiBrYW5cIDsKK+ituSA+IGtvdVwgOwor6K22ID4gdG91XCA7CivorbQgPiBrZW5cIDsKK+itsSA+IHplblwgOwor6K2jID4gc2VuXCA7CivorZ8gPiBzb3VcIDsKK+itniA+IGtlblwgOwor6K2aID4gdGFuXCA7CivorZQgPiBzZW5cIDsKK+itkyA+IGtlaVwgOwor6K2NID4geW91XCA7CivorYggPiB0YWlcIDsKK+ithCA+IHNvdVwgOwor6K2CID4gc2VuXCA7CivorL4gPiBiYW5cIDsKK+issCA+IHJlblwgOwor6KytID4gc2VpXCA7CivorKYgPiBrZWlcIDsKK+isoCA+IHlvdVwgOwor6KyfID4gdG91XCA7CivorJwgPiBnZW5cIDsKK+ismiA+IHNoaVwgOwor6KyXID4gYm91XCA7CivorJEgPiBrZWlcIDsKK+isiiA+IGtvdVwgOwor6KyHID4ga2VuXCA7CivorIYgPiBzZW5cIDsKK+ishSA+IHNvdVwgOwor6KyEID4gdG91XCA7Civoq7wgPiBrZW5cIDsKK+irtyA+IGZ1dVwgOwor6Ku1ID4gbmFuXCA7Civoq7QgPiBrYW5cIDsKK+irsCA+IHNoaVwgOwor6KuuID4gc2hpXCA7Civoq6wgPiBrZWlcIDsKK+irqyA+IGthblwgOwor6KunID4ga2FpXCA7Civoq6IgPiBrb25cIDsKK+iroSA+IHNoaVwgOwor6KugID4ga2VuXCA7Civoq58gPiBzaGlcIDsKK+irniA+IGhlblwgOwor6KudID4gc2hvXCA7Civoq5ogPiBqb3VcIDsKK+irlSA+IGtvdVwgOwor6KuTID4gc2VuXCA7Civoq48gPiBzaHVcIDsKK+irjSA+IHNvdVwgOwor6KuMID4ga2FuXCA7Civoq4kgPiB6dWlcIDsKK+iriCA+IHN1aVwgOwor6KuEID4ganVuXCA7Civoq4IgPiB0ZW5cIDsKK+iqviA+IGdpblwgOwor6Kq7ID4gdG91XCA7CivoqrcgPiBib3VcIDsKK+iqtiA+IHN1aVwgOwor6KqpID4ga2VpXCA7CivoqqggPiBrYWlcIDsKK+iqpSA+IGtvdVwgOwor6KqhID4ga2FpXCA7Civoqp8gPiBrb3VcIDsKK+iqmSA+IGtvdVwgOwor6KqXID4gdGVuXCA7CivoqpUgPiB0YW5cIDsKK+iqjyA+IHJvdVwgOwor6KqDID4gc2hpXCA7Civoqb8gPiBrYWlcIDsKK+ipvCA+IGthaVwgOwor6Km6ID4gYmlpXCA7CivoqbkgPiBzZW5cIDsKK+iptyA+IHRvdVwgOwor6KmsID4ga291XCA7CivoqaUgPiBrb3VcIDsKK+ipoyA+IGtlaVwgOwor6KmiID4ganVuXCA7CivoqZ0gPiBjaG9cIDsKK+ipnCA+IHRvdVwgOwor6KmTID4ga3lvXCA7CivoqZIgPiB0YWlcIDsKK+ipjiA+IGt5b1wgOwor6KmJID4gZG91XCA7CivoqYcgPiB5b3VcIDsKK+iphiA+IHRlaVwgOwor6KmFID4gcmVpXCA7CivoqYMgPiBrZW5cIDsKK+ipgCA+IHRhblwgOwor6Ki+ID4gc2hpXCA7CivoqL0gPiBrb3VcIDsKK+iotSA+IGNoaVwgOwor6KisID4gc291XCA7CivoqKQgPiBrb25cIDsKK+iooiA+IGtpblwgOwor6KieID4geW91XCA7CivoqJUgPiBzYW5cIDsKK+iolCA+IGdpblwgOwor6KiTID4ga3VuXCA7CivoqJIgPiBqaW5cIDsKK+iokSA+IHNoaVwgOwor6KiOID4gdG91XCA7CivoqIwgPiBrb3VcIDsKK+iohyA+IGtvdVwgOwor6KiCID4gdGVpXCA7Civop78gPiBrZWlcIDsKK+invSA+IGtlaVwgOwor6Ke5ID4ga2VpXCA7Civop7YgPiBzaGlcIDsKK+inpyA+IGthaVwgOwor6KelID4ga291XCA7Civop50gPiB0ZWlcIDsKK+innCA+IHNoaVwgOwor6KeYID4gc291XCA7Civop5cgPiBzaGlcIDsKK+inlCA+IGtpblwgOwor6Ka4ID4ga2FuXCA7CivoprcgPiBzaHVcIDsKK+imtSA+IGthblwgOwor6Ka0ID4gdG91XCA7CivoprIgPiBraW5cIDsKK+imryA+IGtvdVwgOwor6KalID4gdGVuXCA7CivopqAgPiBraW5cIDsKK+imnyA+IHNoaVwgOwor6KaYID4gdGVuXCA7CivoppQgPiBla2lcIDsKK+imjSA+IGhlblwgOwor6KaMID4ga2FuXCA7CivopoMgPiB0YW5cIDsKK+ilviA+IGFrYVwgOwor6KW9ID4gcmFuXCA7CivopbwgPiBnZWlcIDsKK+iluyA+IGhhblwgOwor6KW6ID4ga2VuXCA7CivopbQgPiByYW5cIDsKK+ilsyA+IHNlblwgOwor6KWwID4gcmFpXCA7CivopaIgPiB0YW5cIDsKK+iloCA+IHRvdVwgOwor6KWcID4gc2VuXCA7CivopZsgPiBqb3VcIDsKK+ilmiA+IHN1aVwgOwor6KWVID4gcmFuXCA7CivopYwgPiB0YW5cIDsKK+iliSA+IGthblwgOwor6KWEID4gam91XCA7CivopYMgPiBob3VcIDsKK+ikuSA+IGdlaVwgOwor6KSwID4ga2VuXCA7CivopKsgPiBjaGlcIDsKK+ikpyA+IGtlaVwgOwor6KSmID4gZGFpXCA7CivopKAgPiBrb3VcIDsKK+iknSA+IHRhblwgOwor6KScID4gZW5hXCA7CivopJogPiBjaG9cIDsKK+ikmSA+IGhhaVwgOwor6KSWID4gdGFuXCA7CivopI8gPiB5dXVcIDsKK+ikjSA+IHRhblwgOwor6KSKID4gaGVuXCA7CivopIYgPiBzaGlcIDsKK+ikgiA+IGthaVwgOwor6KO1ID4gaGFpXCA7Civoo7QgPiBoYWlcIDsKK+ijqiA+IHRhdVwgOwor6KOnID4gc2VuXCA7Civoo54gPiBzZWlcIDsKK+ijmSA+IGt1blwgOwor6KOSID4gaG91XCA7Civoo44gPiB0ZWlcIDsKK+ijjSA+IGtvblwgOwor6KOMID4ga291XCA7Civoo4sgPiBzaHVcIDsKK+ijiiA+IGpvdVwgOwor6KOIID4ga29uXCA7Civoor8gPiBrZWlcIDsKK+iiviA+IGNodVwgOwor6KK1ID4gamluXCA7CivoorMgPiBzaGlcIDsKK+iiqiA+IGt5b1wgOwor6KKoID4ga2VuXCA7CivooqQgPiBib3VcIDsKK+iiniA+IGtvblwgOwor6KKbID4gdGVpXCA7CivoopIgPiB0YW5cIDsKK+iijSA+IGhvdVwgOwor6KKAID4ga2luXCA7Civoob8gPiBlcmlcIDsKK+ihvSA+IGppblwgOwor6KG7ID4gemVuXCA7CivoobIgPiBkb3VcIDsKK+ihriA+IGtvblwgOwor6KGrID4gc2FuXCA7CivooakgPiBzYWlcIDsKK+ihpiA+IGthblwgOwor6KGfID4gZG91XCA7CivooZwgPiBkb3VcIDsKK+ihmSA+IGd5b1wgOwor6KGYID4ga2FuXCA7CivooZYgPiBrb3VcIDsKK+ihlSA+IHRvdVwgOwor6KGSID4ga2VuXCA7CivooZEgPiByZWlcIDsKK+ihjiA+IGthblwgOwor6KGFID4ga2luXCA7CivooYMgPiBoYWlcIDsKK+ihgSA+IGtvdVwgOwor6KC7ID4gYmFuXCA7CivooLogPiBzYW5cIDsKK+igtSA+IGtlaVwgOwor6KCyID4ga2VuXCA7CivooK0gPiBob3VcIDsKK+igoyA+IHJlaVwgOwor6KChID4gcmVpXCA7CivooJ8gPiByb3VcIDsKK+ignCA+IGhhblwgOwor6KCZID4gaGVuXCA7CivooJQgPiBrb3VcIDsKK+igkyA+IGJvdVwgOwor6KCSID4ga2VuXCA7CivooJAgPiBzZWlcIDsKK+igjyA+IGthaVwgOwor6KCKID4gcmVuXCA7CivooIkgPiBrZW5cIDsKK+ighiA+IHRhaVwgOwor6KCFID4geW91XCA7Civon78gPiBrZWlcIDsKK+ifviA+IHNlblwgOwor6J+6ID4gc2VuXCA7Civon7ggPiByZWlcIDsKK+iftyA+IHRvdVwgOwor6J+2ID4gdGVpXCA7Civon7MgPiBqaW5cIDsKK+ifsSA+IGJvdVwgOwor6J+sID4gc2VuXCA7Civon6ogPiBrZWlcIDsKK+ifpCA+IHNlblwgOwor6J+gID4gaGFuXCA7Civon5ogPiBob3VcIDsKK+ifliA+IHNoaVwgOwor6J+VID4gc3VpXCA7Civon5IgPiBib3VcIDsKK+ifkCA+IHRvdVwgOwor6J+KID4gYm91XCA7Civon4EgPiBidW5cIDsKK+ieuyA+IHJvdVwgOwor6J6zID4gdG91XCA7Civonq8gPiBnb3VcIDsKK+ieriA+IHRlaVwgOwor6J6tID4gY2hpXCA7CivonqwgPiBzb3VcIDsKK+iepyA+IGViaVwgOwor6J6jID4gdG91XCA7Civonp8gPiBtZWlcIDsKK+ielyA+IHRvdVwgOwor6J6VID4gaGVpXCA7CivonowgPiBoYW5cIDsKK+ieiCA+IGdlblwgOwor6J6HID4ga2VpXCA7CivonoYgPiBzaGlcIDsKK+iehSA+IHNoaVwgOwor6J6EID4gc2hpXCA7CivonoMgPiBob3VcIDsKK+iegiA+IHJvdVwgOwor6J27ID4gbmFuXCA7CivonbEgPiBtb3VcIDsKK+idqiA+IHRvdVwgOwor6J2mID4gZWJpXCA7CivonaUgPiBib3VcIDsKK+idoyA+IHl1dVwgOwor6J2hID4gemVuXCA7CivonZcgPiBrb3VcIDsKK+idhSA+IHNhblwgOwor6J2DID4gdGVpXCA7CivonYAgPiB0b3VcIDsKK+icuiA+IGdlaVwgOwor6Jy5ID4gemVpXCA7CivonLcgPiBrZW5cIDsKK+ictCA+IGVraVwgOwor6JyvID4gaG91XCA7CivonKEgPiBzaG9cIDsKK+icnyA+IGlrdVwgOwor6JyWID4ga2FpXCA7CivonJUgPiB6ZWlcIDsKK+iclCA+IHRlblwgOwor6JyTID4gdGVuXCA7CivonJEgPiB0YW5cIDsKK+icjyA+IHl1dVwgOwor6JyNID4gc2hvXCA7CivonIsgPiByb3VcIDsKK+ibvSA+IGJhaVwgOwor6Ju8ID4gc2hhXCA7Civom7sgPiB6ZWlcIDsKK+ibryA+IGViaVwgOwor6JuuID4gYmFuXCA7Civom6cgPiBib3VcIDsKK+iboCA+IHJlaVwgOwor6JufID4ga291XCA7Civom5cgPiBodXVcIDsKK+iblSA+IGthaVwgOwor6JuUID4ga2FpXCA7Civom5EgPiBib3VcIDsKK+ibjiA+IHJlaVwgOwor6JuLID4gdGFuXCA7Civom4UgPiB6ZW5cIDsKK+ibgyA+IGhlaVwgOwor6JuAID4gc2h1XCA7Civomr8gPiBrZW5cIDsKK+iatyA+IGt5b1wgOwor6Jq2ID4ga2FuXCA7CivomrQgPiB5dXVcIDsKK+iasyA+IGNoaVwgOwor6JqwID4geXV1XCA7CivomqsgPiBob3VcIDsKK+iaqiA+IHRvdVwgOwor6JqpID4gc2hpXCA7CivomqcgPiBrYWlcIDsKK+iapiA+IHplblwgOwor6JqjID4ga291XCA7CivomqEgPiBodW5cIDsKK+iamCA+IGthaVwgOwor6JqWID4gZ2VuXCA7CivomowgPiBob3VcIDsKK+iaiCA+IGtlblwgOwor6Jm7ID4gYWJ1XCA7CivombcgPiBrYW5cIDsKK+iZtSA+IHNoYVwgOwor6JmkID4gZ2FuXCA7CivomaMgPiBob3VcIDsKK+iZoiA+IGhvdVwgOwor6JmhID4ga3lvXCA7CivomaAgPiBrb3VcIDsKK+iZmyA+IGt5b1wgOwor6JmXID4ga3lvXCA7CivomZQgPiBrZW5cIDsKK+iZkyA+IGtvdVwgOwor6JmSID4gc2hpXCA7CivomYYgPiBydWlcIDsKK+iZgCA+IHNlaVwgOwor6Ji4ID4gc2FuXCA7CivomK8gPiB0b3VcIDsKK+iYqSA+IGhhblwgOwor6JiiID4gcm91XCA7CivomJ4gPiByZW5cIDsKK+iYmyA+IGlrdVwgOwor6JiaID4gc2VuXCA7CivomJggPiBqb3VcIDsKK+iYkCA+IGtlblwgOwor6JiPID4ga2VpXCA7CivomI0gPiBrdW5cIDsKK+iYiyA+IGhpblwgOwor6JiFID4ga291XCA7Civol74gPiByYWlcIDsKK+iXvCA+IGtlblwgOwor6Je6ID4gcmluXCA7Civol7cgPiBzaG9cIDsKK+iXsyA+IGtvdVwgOwor6JefID4gcnVpXCA7Civol5ggPiByeW9cIDsKK+iXlSA+IGd1dVwgOwor6JePID4gem91XCA7Civol4ogPiBoZW5cIDsKK+iXhyA+IHNob1wgOwor6JeCID4gc291XCA7Civolr4gPiBzaGlcIDsKK+iWuSA+IHRhaVwgOwor6Ja2ID4gYmFpXCA7CivolrQgPiBub3VcIDsKK+iWsCA+IGt1blwgOwor6JatID4gaGFpXCA7CivolqsgPiBrdW5cIDsKK+iWqCA+IGtvdVwgOwor6JanID4ga291XCA7CivolqQgPiBrYWlcIDsKK+iWoiA+IGthaVwgOwor6JagID4gaGFuXCA7Civolp8gPiByZW5cIDsKK+iWnSA+IHNlblwgOwor6JaZID4gdGVpXCA7CivolpAgPiByb3VcIDsKK+iWiyA+IHNoaVwgOwor6JaJID4gd2FpXCA7CivologgPiBrYWlcIDsKK+iWhSA+IGtvdVwgOwor6JaBID4gaWt1XCA7Civolb8gPiBrZW5cIDsKK+iVvSA+IGRvdVwgOwor6JW7ID4ga291XCA7CivolbkgPiB5b3VcIDsKK+iVryA+IHJvdVwgOwor6JWrID4gdG91XCA7CivolaQgPiB6dWlcIDsKK+iVoiA+IGthaVwgOwor6JWhID4gaHVuXCA7CivolZ4gPiBzYWlcIDsKK+iVmSA+IGtlaVwgOwor6JWYID4gam91XCA7CivolZYgPiBreW9cIDsKK+iVlSA+IHl1dVwgOwor6JWSID4gYmFpXCA7CivolZEgPiBrYW5cIDsKK+iVjyA+IGNob1wgOwor6JWLID4genVpXCA7CivolYogPiB6dWlcIDsKK+iVhiA+IHRlblwgOwor6JWDID4gYmFuXCA7CivolYEgPiBqaW5cIDsKK+iUsyA+IHNlblwgOwor6JSyID4ga291XCA7CivolKogPiBzZW5cIDsKK+iUpyA+IHNlaVwgOwor6JSlID4gc291XCA7CivolKEgPiBzYWlcIDsKK+iUniA+IHJvdVwgOwor6JScID4gZ291XCA7CivolJcgPiBzaG9cIDsKK+iUkyA+IGJhblwgOwor6JSCID4gcnVpXCA7CivolIAgPiBob3VcIDsKK+iTuiA+IGdlaVwgOwor6JO3ID4gdGFpXCA7Civok7EgPiBoZWlcIDsKK+iTsCA+IHNoaVwgOwor6JOvID4gc291XCA7Civok6ogPiB0b3VcIDsKK+iTnCA+IGhhaVwgOwor6JOTID4gaGFpXCA7Civok40gPiBzaGlcIDsKK+iTiSA+IHlvdVwgOwor6JOIID4ga291XCA7Civok4IgPiBtZWlcIDsKK+iTgCA+IHNvblwgOwor6JK/ID4ga291XCA7Civokr4gPiBiZWlcIDsKK+iSuSA+IGtlblwgOwor6JKvID4ga2FpXCA7Civokq0gPiBzdXVcIDsKK+iSqCA+IHNlblwgOwor6JKhID4gaG91XCA7CivokpMgPiBqdW5cIDsKK+iSkiA+IHNoaVwgOwor6JKEID4ga2FuXCA7CivokoIgPiB0ZWlcIDsKK+iRvSA+IHlvdVwgOwor6JG8ID4gc291XCA7CivokbkgPiBzaGlcIDsKK+iRuCA+IHNhaVwgOwor6JG3ID4gZ3VuXCA7CivokbYgPiB0ZWlcIDsKK+iRtSA+IGFvaVwgOwor6JGwID4gc3VpXCA7Civoka4gPiB0YW5cIDsKK+iRqiA+IGtlaVwgOwor6JGlID4gc2VuXCA7CivokaIgPiBnYWlcIDsKK+iRmCA+IHNoaVwgOwor6JGSID4ga291XCA7CivokZEgPiBob3VcIDsKK+iRjyA+IHNlblwgOwor6JGIID4gc2hpXCA7CivokYcgPiBqdXVcIDsKK+iRhSA+IHNob1wgOwor6JC5ID4gaGVuXCA7CivokLEgPiBrZW5cIDsKK+iQryA+IGh1dVwgOwor6JCgID4gaG91XCA7CivokJUgPiBzZWlcIDsKK+iQkSA+IGthblwgOwor6JCPID4gdGFuXCA7CivokI0gPiBoZWlcIDsKK+iQiyA+IHNlaVwgOwor6JCKID4gcmFpXCA7CivokIMgPiBzdWlcIDsKK+iPvCA+IHRhblwgOwor6I+7ID4gcmluXCA7Civoj7kgPiBzaG9cIDsKK+iPtyA+IHNvdVwgOwor6I+2ID4gaG91XCA7Civoj6ogPiB0b3VcIDsKK+iPmCA+IHN1dVwgOwor6I+RID4gc2hpXCA7Civoj44gPiBrb25cIDsKK+iPjCA+IGtpblwgOwor6I+FID4ga2FuXCA7Civoj4EgPiBzZWlcIDsKK+iOvyA+IHNoaVwgOwor6I6+ID4gbW91XCA7Civojr0gPiBib3VcIDsKK+iOsSA+IHJhaVwgOwor6I6sID4gYnVuXCA7CivojqcgPiBrYW5cIDsKK+iOpiA+IHNvdVwgOwor6I6gID4geXV1XCA7Civojp8gPiBrYW5cIDsKK+iOniA+IGthblwgOwor6I6bID4gdGVpXCA7CivojpkgPiBraW5cIDsKK+iOliA+IGtlaVwgOwor6I6VID4ga291XCA7CivojpQgPiBtb3VcIDsKK+iOkyA+IG1haVwgOwor6I6SID4ga3lvXCA7CivojoogPiBzb3VcIDsKK+iOiSA+IGNoaVwgOwor6I6HID4gY2hvXCA7CivojoQgPiBrb3VcIDsKK+iNvyA+IHNlaVwgOwor6I27ID4gb2dpXCA7CivojbUgPiBqaW5cIDsKK+iNsyA+IHRvdVwgOwor6I2YID4gc291XCA7CivojZYgPiBob3VcIDsKK+iNlSA+IGtpblwgOwor6I2TID4gaGVpXCA7CivojZEgPiB0ZWlcIDsKK+iNkCA+IHNlblwgOwor6I2OID4gY2hpXCA7CivojYogPiBrZWlcIDsKK+iNhyA+IGtvdVwgOwor6I2GID4ga2VpXCA7CivojYUgPiB0b3VcIDsKK+iNhCA+IGthaVwgOwor6I2DID4gc2VuXCA7CivojYAgPiBqdW5cIDsKK+iMvCA+IHRvdVwgOwor6Iy3ID4gaGFpXCA7CivojLQgPiBrYWlcIDsKK+iMsyA+IGtvdVwgOwor6IyxID4gc2h1XCA7CivojKwgPiBzaGlcIDsKK+iMnSA+IHNhaVwgOwor6IybID4ga29uXCA7CivojJcgPiBtZWlcIDsKK+iMiyA+IHNoaVwgOwor6IyKID4gc2hpXCA7CivojIggPiBzaGlcIDsKK+iMhiA+IGJvdVwgOwor6IyDID4gaGFuXCA7Civoi7kgPiBoZWlcIDsKK+iLtyA+IGthblwgOwor6IuzID4gdG91XCA7Civoi68gPiBob25cIDsKK+iLrSA+IHlvdVwgOwor6IurID4gc2VuXCA7Civoi6ogPiBoZWlcIDsKK+iLqCA+IGRlaVwgOwor6IunID4gY2hvXCA7Civoi6MgPiBreW9cIDsKK+iLoCA+IGJpblwgOwor6IufID4ga291XCA7Civoi54gPiBob3VcIDsKK+iLmiA+IHlvdVwgOwor6IuTID4gcmVpXCA7Civoi5IgPiB6ZW5cIDsKK+iLkCA+IHRlaVwgOwor6IuFID4gZ2FpXCA7Civoir8gPiBqb3VcIDsKK+iKvCA+IGJvdVwgOwor6Iq7ID4gc3V1XCA7CivoircgPiBzaGlcIDsKK+iKriA+IHplaVwgOwor6IqsID4gZnVuXCA7CivoiqsgPiBnZW5cIDsKK+iKqSA+IGtpblwgOwor6IqnID4gY2hvXCA7CivoiqUgPiBrYWlcIDsKK+iKpCA+IGtvdVwgOwor6IqjID4gaHV1XCA7CivoiqEgPiBrZW5cIDsKK+iKoCA+IGJ1blwgOwor6IqfID4gc2FuXCA7CivoipogPiB0b25cIDsKK+iKliA+IGNoaVwgOwor6IqLID4gaW1vXCA7CivoioogPiBzZW5cIDsKK+iKiSA+IGthaVwgOwor6IqHID4gYmVuXCA7CivoioQgPiBrYW5cIDsKK+iKgyA+IGhvdVwgOwor6IqBID4ga291XCA7Civoib8gPiBqb3VcIDsKK+iJviA+IGdhaVwgOwor6ImxID4ga2FuXCA7Civoia4gPiBrb25cIDsKK+iJrSA+IHNvdVwgOwor6ImoID4gbW91XCA7CivoiaYgPiBrYW5cIDsKK+iJoCA+IHRvdVwgOwor6ImfID4gZG91XCA7CivoiZwgPiB0YWlcIDsKK+iJmiA+IHNvdVwgOwor6ImZID4gc291XCA7CivoiZggPiBzb3VcIDsKK+iJkSA+IGhlblwgOwor6ImOID4ga291XCA7CivoiYsgPiBtb3VcIDsKK+iJhyA+IHRlaVwgOwor6ImGID4gcm91XCA7CivoiYQgPiBzb3VcIDsKK+iIuiA+IGtvdVwgOwor6Ii3ID4ga2VuXCA7CivoiLIgPiByZWlcIDsKK+iIqyA+IGhvdVwgOwor6IipID4gc2VuXCA7CivoiKggPiBoYW5cIDsKK+iIoiA+IHNhblwgOwor6IihID4ga291XCA7CivoiJsgPiBzZW5cIDsKK+iImiA+IHRlblwgOwor6IiZID4ga3V1XCA7CivoiJggPiBrYW5cIDsKK+iIlCA+IHRlblwgOwor6IiTID4gc2hpXCA7CivoiJAgPiBzaGlcIDsKK+iIjSA+IHNoYVwgOwor6IiJID4ga3lvXCA7CivoiIAgPiB5b3VcIDsKK+iHvyA+IHNvdVwgOwor6Ie9ID4ga2FuXCA7Civoh7YgPiBzZW5cIDsKK+iHsSA+IGJlblwgOwor6IenID4gem91XCA7Civoh6QgPiBrYW5cIDsKK+iHoSA+IGRlaVwgOwor6IegID4gcmVuXCA7Civoh5ogPiByeW9cIDsKK+iHmCA+IHJvdVwgOwor6IeXID4ga29uXCA7Civoh5MgPiB6b3VcIDsKK+iHkSA+IGRhdVwgOwor6IePID4gaGluXCA7Civoh44gPiBzdWlcIDsKK+iHiyA+IGRlblwgOwor6IeKID4gc291XCA7Civoh4kgPiByZW5cIDsKK+iHiCA+IHJvdVwgOwor6IeGID4gb2t1XCA7Civoh4MgPiB5b3VcIDsKK+iHgCA+IGRlblwgOwor6Ia+ID4ga2FpXCA7CivohrsgPiB0YW5cIDsKK+iGuiA+IHlvdVwgOwor6Ia4ID4genVpXCA7CivohrUgPiBzdWlcIDsKK+iGsCA+IGhhblwgOwor6IaoID4gYm91XCA7CivohqIgPiByb3VcIDsKK+iGniA+IHNlblwgOwor6IabID4gdG91XCA7CivohpYgPiBob3VcIDsKK+iGkCA+IHJ5b1wgOwor6IaPID4ga291XCA7Civoho4gPiBrYWlcIDsKK+iGhSA+IHRvdVwgOwor6IaCID4gcnlvXCA7CivohoEgPiBrZW5cIDsKK+iGgCA+IGhvdVwgOwor6IW6ID4gc2VuXCA7CivohbEgPiBrZW5cIDsKK+iFqyA+IHNodVwgOwor6IWpID4gZGFuXCA7CivohaggPiBzZW5cIDsKK+iFpyA+IHNodVwgOwor6IWlID4gc2VpXCA7CivohaAgPiBzb3VcIDsKK+iFlCA+IGtvdVwgOwor6IWSID4ga3lvXCA7CivohY4gPiBqaW5cIDsKK+iFjCA+IHlvdVwgOwor6IWHID4gZGFpXCA7CivohYYgPiB0ZW5cIDsKK+iFhSA+IHRhblwgOwor6IWBID4gaGVuXCA7CivohLogPiB6ZWlcIDsKK+iEsCA+IHRvdVwgOwor6ISsID4gaG91XCA7CivohKcgPiBzYWlcIDsKK+iEoCA+IHNlblwgOwor6ISYID4ga2FuXCA7CivohJcgPiBidW5cIDsKK+iEhiA+IHplaVwgOwor6ISDID4gemVpXCA7Civog74gPiBzaGlcIDsKK+iDvCA+IGhlblwgOwor6IO2ID4ga291XCA7Civog7IgPiBrYWlcIDsKK+iDsSA+IGtvdVwgOwor6IOuID4gaG91XCA7Civog6UgPiBzaG9cIDsKK+iDoCA+IGt5b1wgOwor6IOdID4gY2hpXCA7Civog5sgPiBrb3VcIDsKK+iDmiA+IGhhaVwgOwor6IOYID4ga2VuXCA7Civog5YgPiBoYW5cIDsKK+iDlCA+IHNoaVwgOwor6IOSID4gZGVpXCA7Civog48gPiBzaGlcIDsKK+iCuiA+IGhhaVwgOwor6IKsID4geXV1XCA7CivogqogPiBib3VcIDsKK+iCpyA+IGhhaVwgOwor6IKmID4gZnVuXCA7CivogqIgPiBzaGlcIDsKK+iCnCA+IHl1dVwgOwor6IKbID4ga291XCA7CivogpMgPiBrb3VcIDsKK+iCjiA+IGtvdVwgOwor6IG5ID4gZGVpXCA7CivogbYgPiBqb3VcIDsKK+iBtSA+IGdhaVwgOwor6IGxID4gZ291XCA7CivogbAgPiBzb3VcIDsKK+iBryA+IHJlblwgOwor6IGuID4gcmVuXCA7CivogasgPiByZW5cIDsKK+iBqCA+IHJlblwgOwor6IGmID4gc291XCA7CivogaQgPiB0ZWlcIDsKK+iBoSA+IHNvdVwgOwor6IGgID4gaGVpXCA7CivogZ8gPiBzZWlcIDsKK+iBmCA+IGhlaVwgOwor6IGGID4gcmVpXCA7CivogL8gPiBrb3VcIDsKK+iAviA+IGtvdVwgOwor6IC8ID4gdGFuXCA7CivogLkgPiBraW5cIDsKK+iAtyA+IHRvdVwgOwor6IC1ID4gdGVpXCA7CivogLAgPiB5dXVcIDsKK+iAriA+IHJvdVwgOwor6ICsID4gcm91XCA7CivogKggPiBkb3VcIDsKK+iApiA+IGdvdVwgOwor6ICgID4ga291XCA7CivogJ8gPiBreW9cIDsKK+iAnSA+IHNob1wgOwor6ICcID4gc2hpXCA7CivogJcgPiBtb3VcIDsKK+iAliA+IHNvdVwgOwor6ICUID4gc2hpXCA7CivogJMgPiB0ZWlcIDsKK+iAkiA+IHJhaVwgOwor6ICRID4gdGFuXCA7CivogI4gPiB6ZW5cIDsKK+iAiSA+IGtvdVwgOwor6ICIID4ga291XCA7CivogIcgPiBrb3VcIDsKK+iAhCA+IG1vdVwgOwor6ICAID4geW91XCA7Civnv78gPiB0b3VcIDsKK+e/viA+IGtlblwgOwor57+9ID4ga2FpXCA7Civnv7ogPiBnb3VcIDsKK+e/sCA+IGthblwgOwor57+rID4gZ2FuXCA7Civnv6kgPiBoZW5cIDsKK+e/qCA+IHNoaVwgOwor57+mID4gc2VuXCA7Civnv6UgPiBzaG9cIDsKK+e/oyA+IHNvdVwgOwor57+gID4gc3VpXCA7Civnv5sgPiB5dXVcIDsKK+e/jiA+IHJlaVwgOwor57+IID4ga291XCA7Civnv4YgPiBzdWlcIDsKK+e/hSA+IHNoaVwgOwor57+DID4ga291XCA7Civnvr8gPiBnZWlcIDsKK+e+vCA+IHNhblwgOwor5764ID4gcnVpXCA7CivnvrYgPiBzZW5cIDsKK+e+tCA+IHNlblwgOwor576qID4geW91XCA7CivnvqYgPiBrYW5cIDsKK+e+oyA+IGd1blwgOwor576iID4gam91XCA7CivnvqEgPiBzZW5cIDsKK+e+nSA+IHRlaVwgOwor576cID4gY2hvXCA7CivnvpogPiByZWlcIDsKK+e+mCA+IHNvdVwgOwor576UID4ga291XCA7CivnvpEgPiB5dXVcIDsKK+e+kCA+IHl1dVwgOwor576PID4geW91XCA7CivnvoIgPiBrZW5cIDsKK+e9viA+IHNvdVwgOwor5729ID4ga2VpXCA7CivnvbIgPiBzaG9cIDsKK+e9sSA+IGd1blwgOwor572rID4ga2VpXCA7CivnvakgPiB0b3VcIDsKK+e9pSA+IGtlblwgOwor572kID4gdGVpXCA7CivnvaMgPiBrYWlcIDsKK+e9oSA+IGtvdVwgOwor572dID4gc2hhXCA7CivnvZwgPiBzaHVcIDsKK+e9lSA+IGthblwgOwor572UID4gbW91XCA7CivnvZMgPiBtb3VcIDsKK+e9kiA+IG1vdVwgOwor572RID4gYm91XCA7CivnvY0gPiByYWlcIDsKK+e9hyA+IHNvblwgOwor572EID4ga2VpXCA7CivnvL8gPiB0b3VcIDsKK+e8viA+IGhlaVwgOwor57y4ID4ga291XCA7CivnvLcgPiBzaGFcIDsKK+e8tiA+IGthblwgOwor57yQID4gc2VuXCA7Civnu7kgPiB0b3VcIDsKK+e6uyA+IGNob1wgOwor57quID4ga291XCA7Civnup4gPiByZW5cIDsKK+e6nSA+IHJ1aVwgOwor57qcID4gcmFuXCA7CivnupsgPiB0b3VcIDsKK+e6miA+IHNoaVwgOwor57qYID4gc2FiXCA7CivnupYgPiBzZW5cIDsKK+e6lCA+IHNhblwgOwor57qQID4ga291XCA7Civnuo4gPiBzZW5cIDsKK+e6jSA+IHJ1aVwgOwor57qKID4ga291XCA7CivnuokgPiBzYW5cIDsKK+e6hyA+IHJhaVwgOwor57qBID4ga3VuXCA7Civnub8gPiByYW5cIDsKK+e5viA+IHRlblwgOwor57m9ID4gaGluXCA7CivnubkgPiBla2lcIDsKK+e5uCA+IHN1aVwgOwor57mvID4ga2VuXCA7CivnuasgPiBrZWlcIDsKK+e5pCA+IHNhblwgOwor57miID4ga2FpXCA7CivnuZ8gPiBzZW5cIDsKK+e5nSA+IGthblwgOwor57mZID4gaGFuXCA7CivnuZYgPiBzYW5cIDsKK+e5kCA+IGtlaVwgOwor57mOID4gYmluXCA7CivnuYsgPiBrZWlcIDsKK+e5iiA+IHNlblwgOwor57mHID4geW91XCA7CivnuYUgPiBzb3VcIDsKK+e5gyA+IGhvdVwgOwor57i/ID4gc2FuXCA7CivnuLogPiByZW5cIDsKK+e4tSA+IGJhblwgOwor57i0ID4ga2VuXCA7CivnuLMgPiB0ZW5cIDsKK+e4siA+IHJ1aVwgOwor57ioID4ga291XCA7CivnuKcgPiB0b3VcIDsKK+e4oyA+IGtlblwgOwor57iiID4gdG91XCA7CivnuKEgPiBzYWlcIDsKK+e4lyA+IHNhaVwgOwor57iSID4gc2hpXCA7CivnuJEgPiBrZW5cIDsKK+e4hiA+IGtvdVwgOwor57iCID4gc291XCA7Civnt7sgPiBjaGlcIDsKK+e3uiA+IGthaVwgOwor57e5ID4gdGVpXCA7Civnt7YgPiBoZW5cIDsKK+e3tSA+IHNvdVwgOwor57exID4ga291XCA7Civnt6sgPiBzb3VcIDsKK+e3qiA+IGtvdVwgOwor57emID4gc2hpXCA7Civnt6UgPiBob3VcIDsKK+e3oiA+IGJvdVwgOwor57ehID4gYmluXCA7Civnt54gPiB0YW5cIDsKK+e3nCA+IGJlblwgOwor57eYID4ga2FuXCA7Civnt5YgPiBzaG9cIDsKK+e3jSA+IGJpblwgOwor57eMID4genVpXCA7Civnt4cgPiBzaGlcIDsKK+e3hCA+IGtvblwgOwor57eCID4gdGFuXCA7CivntrsgPiB0YW5cIDsKK+e2uCA+IHJpblwgOwor57a3ID4gc2FpXCA7CivntrUgPiBzYWlcIDsKK+e2syA+IGhvdVwgOwor57awID4gd2FuXCA7Civntq8gPiB0b3VcIDsKK+e2riA+IGtlaVwgOwor57arID4gc2VuXCA7CivntqogPiBzZW5cIDsKK+e2oyA+IGtlblwgOwor57afID4gcmVpXCA7CivntpwgPiBzb3VcIDsKK+e2lyA+IGdlaVwgOwor57aRID4ga29uXCA7Civnto8gPiBzdWlcIDsKK+e2iyA+IGtvdVwgOwor57aJID4gdG91XCA7CivntoggPiB0ZWlcIDsKK+e2hiA+IGtvdVwgOwor57aCID4gdG91XCA7CivntoEgPiBob3VcIDsKK+e1vSA+IHJ5b1wgOwor57W7ID4gYnVuXCA7CivntbogPiBjaGlcIDsKK+e1uCA+IGtlblwgOwor57WzID4ga291XCA7CivntacgPiB0b3VcIDsKK+e1oiA+IGtlblwgOwor57WbID4gam91XCA7CivntZogPiBrb3VcIDsKK+e1mSA+IGthblwgOwor57WWID4ga291XCA7CivntZMgPiBrYWlcIDsKK+e1kSA+IHNodVwgOwor57WOID4ga291XCA7CivntY0gPiBqaW5cIDsKK+e1iyA+IGtvdVwgOwor57WFID4ga2VpXCA7CivntYMgPiBnZW5cIDsKK+e1gSA+IHNoaVwgOwor57S/ID4gdGFpXCA7CivntLUgPiBjaG9cIDsKK+e0rSA+IGtvdVwgOwor57SqID4gc2VpXCA7CivntKMgPiBzYWlcIDsKK+e0oSA+IGJvdVwgOwor57SeID4gdGFuXCA7CivntJ0gPiBqaW5cIDsKK+e0mCA+IGtvdVwgOwor57STID4gc2hvXCA7CivntJIgPiBrZWlcIDsKK+e0kSA+IGh1dVwgOwor57SPID4gdG91XCA7CivntIogPiBiaW5cIDsKK+e0iSA+IGppblwgOwor57SIID4ga2FuXCA7Civns7sgPiBrZWlcIDsKK+ezsiA+IHJlaVwgOwor57OwID4gZGFuXCA7Civns6sgPiBrYWlcIDsKK+ezqSA+IGthaVwgOwor57OmID4gc2hpXCA7Civns6QgPiBzYW5cIDsKK+eznyA+IHNvdVwgOwor57OdID4gc2FuXCA7Civns5ogPiBzb3VcIDsKK+ezmSA+IHNvdVwgOwor57OVID4ga291XCA7Civns40gPiBzaGlcIDsKK+eziSA+IHNvdVwgOwor57OIID4gc2hvXCA7Civns4cgPiBrb3VcIDsKK+ezhSA+IGp1dVwgOwor57OEID4gaGVuXCA7Civns4IgPiBzYW5cIDsKK+eyvSA+IHNvdVwgOwor57K8ID4gcmluXCA7CivnsrogPiBoYWlcIDsKK+eyuSA+IHN1aVwgOwor57KzID4ga291XCA7CivnsrIgPiBzYW5cIDsKK+eysCA+IGZ1dVwgOwor57KmID4gcmluXCA7CivnsqIgPiBzaGlcIDsKK+eyoSA+IHRvdVwgOwor57KgID4ga291XCA7Civnsp4gPiBzZWlcIDsKK+eymCA+IG5lblwgOwor57KUID4ga3lvXCA7CivnsosgPiBpa2lcIDsKK+eyhyA+IGtvdVwgOwor57G9ID4gc2hpXCA7CivnsbwgPiBzZW5cIDsKK+exrSA+IHNoaVwgOwor57GpID4gaGVuXCA7CivnsacgPiBreW9cIDsKK+exoyA+IHJhblwgOwor57GfID4gcmFpXCA7CivnsZ4gPiBneW9cIDsKK+exmyA+IHNlblwgOwor57GYID4gdG91XCA7CivnsZMgPiBoYW5cIDsKK+exkSA+IHNlblwgOwor57GDID4gcmFuXCA7CivnsL0gPiBzZW5cIDsKK+ewuiA+IHNhaVwgOwor57C5ID4gdG91XCA7CivnsLQgPiBreW9cIDsKK+ewsyA+IGthblwgOwor57CnID4ga291XCA7CivnsKYgPiB0b3VcIDsKK+ewnyA+IHRlblwgOwor57CeID4gdGFuXCA7CivnsJsgPiBzaGlcIDsKK+ewkyA+IHNlblwgOwor57CSID4gc2FuXCA7CivnsI0gPiByb3VcIDsKK+ewhyA+IHNvdVwgOwor57CGID4ga291XCA7CivnsIEgPiBzaGlcIDsKK+evvCA+IHRvdVwgOwor56+6ID4gaGFpXCA7Civnr7kgPiBzYW5cIDsKK+evtyA+IGhvdVwgOwor56+1ID4gc291XCA7Civnr7IgPiBzdWlcIDsKK+evqiA+IGNoaVwgOwor56+oID4gY2hvXCA7Civnr6YgPiBoZWlcIDsKK+evoSA+IHNhblwgOwor56+dID4ga291XCA7Civnr5kgPiBrb3VcIDsKK+evliA+IHRvdVwgOwor56+PID4ga2FuXCA7Civnr4wgPiBrb3VcIDsKK+eviiA+IGtvdVwgOwor56+IID4gaG91XCA7Civnr4cgPiBoZW5cIDsKK+evhiA+IHRlblwgOwor56+FID4gc3VpXCA7Civnr4IgPiBzZWlcIDsKK+euvSA+IHRvdVwgOwor5668ID4gb2t1XCA7CivnrrUgPiBzZWlcIDsKK+eusiA+IHNlblwgOwor566vID4gaGVuXCA7Civnrq0gPiBzZW5cIDsKK+euoCA+IHN1aVwgOwor566fID4ga2luXCA7Civnrp4gPiBrZW5cIDsKK+eunSA+IGthblwgOwor566cID4ga291XCA7CivnrpggPiBraW5cIDsKK+euliA+IHJpblwgOwor566RID4gc291XCA7CivnrpAgPiBzZWlcIDsKK+eujyA+IHNvdVwgOwor566JID4ga2FpXCA7CivnroQgPiBoYWlcIDsKK+ettyA+IGthaVwgOwor562zID4gdGVpXCA7CivnrbIgPiBzb3VcIDsKK+etryA+IGNob1wgOwor562uID4gc2VpXCA7Civnra0gPiBzYW5cIDsKK+etrCA+IHNlaVwgOwor562qID4ga291XCA7CivnrakgPiB0b3VcIDsKK+etpiA+IGthblwgOwor562lID4ga3lvXCA7CivnraQgPiByb3VcIDsKK+etnSA+IHNvdVwgOwor562VID4ga291XCA7CivnrYwgPiBzZW5cIDsKK+ethSA+IHNlblwgOwor562AID4ga2VpXCA7CivnrLYgPiBzaGlcIDsKK+estSA+IGhhblwgOwor56yxID4ga291XCA7CivnrK0gPiByZWlcIDsKK+esqyA+IHNoaVwgOwor56yqID4gdGFuXCA7CivnrKkgPiBoYWlcIDsKK+esqCA+IGhvblwgOwor56yjID4gaG91XCA7CivnrJ4gPiBjaGlcIDsKK+esmSA+IHNvdVwgOwor56yYID4gc2VuXCA7CivnrIsgPiBqdW5cIDsKK+eshyA+IHNhblwgOwor56u+ID4gc2hpXCA7Civnq7wgPiBob3VcIDsKK+eruCA+IGtlaVwgOwor56uxID4gc2VuXCA7Civnq6sgPiBzZWlcIDsKK+eroiA+IHNoaVwgOwor56ubID4gcmVpXCA7Civnq5ogPiBjaG9cIDsKK+ermSA+IHRhblwgOwor56uRID4ga291XCA7Civnq44gPiBmdXVcIDsKK+erjCA+IHNob1wgOwor56uJID4gcm91XCA7Civnq4cgPiB0b3VcIDsKK+erhCA+IHphblwgOwor56q8ID4gc291XCA7CivnqrsgPiBzb3VcIDsKK+eqsCA+IHlvdVwgOwor56qeID4gdGFuXCA7CivnqpggPiBraW5cIDsKK+eqlyA+IHNvdVwgOwor56qWID4ga291XCA7CivnqpQgPiB5b3VcIDsKK+eqkSA+IHlvdVwgOwor56qQID4ga2VpXCA7CivnqoggPiB5b3VcIDsKK+eqhiA+IGJpblwgOwor56qFID4geW91XCA7CivnqoIgPiByb3VcIDsKK+epviA+IHlvdVwgOwor56m9ID4gc2VpXCA7CivnqbAgPiBqb3VcIDsKK+eprSA+IHJ5b1wgOwor56mnID4gc2VpXCA7CivnqaMgPiBqb3VcIDsKK+epoCA+IGpvdVwgOwor56mfID4gc3VpXCA7CivnqZ0gPiBzYWlcIDsKK+epnCA+IHRvdVwgOwor56mIID4gYm9uXCA7CivnqYcgPiBzYW5cIDsKK+ephSA+IGtvdVwgOwor56mEID4gc2VpXCA7CivnqYMgPiB5b3VcIDsKK+eoviA+IGtvdVwgOwor56i6ID4gY2hpXCA7CivnqLUgPiBzaGlcIDsKK+eotCA+IHJlblwgOwor56iwID4gc2hvXCA7CivnqK8gPiBzb3VcIDsKK+eopyA+IGtlaVwgOwor56ifID4gcmluXCA7CivnqJsgPiBrb25cIDsKK+eolyA+IGhpZVwgOwor56iUID4gamluXCA7CivnqIogPiB0ZWlcIDsKK+eoiSA+IGtvdVwgOwor56iIID4ga2FuXCA7CivnqIcgPiBrb25cIDsKK+eohSA+IHplaVwgOwor56iCID4gcm91XCA7Civnp7wgPiBzaHVcIDsKK+ensSA+IHRvdVwgOwor56etID4gc2hpXCA7Civnp6wgPiBreW9cIDsKK+enqiA+IGNoaVwgOwor56elID4gZGVuXCA7Civnp6IgPiByZWlcIDsKK+enniA+IHl1dVwgOwor56eaID4gaGFuXCA7Civnp5YgPiBzaGlcIDsKK+enlCA+IGtvdVwgOwor56ePID4ga291XCA7Civnp4ogPiBuZW5cIDsKK+eniSA+IGhlaVwgOwor56eIID4gc2VuXCA7Civnp4cgPiBnZWlcIDsKK+enhCA+IHNoaVwgOwor56eCID4gamluXCA7CivnprsgPiBjaGlcIDsKK+emuiA+IGd1dVwgOwor56a4ID4ganV1XCA7CivnprMgPiBqb3VcIDsKK+emsSA+IHRvdVwgOwor56avID4gam91XCA7CivnpqsgPiB0YW5cIDsKK+emqiA+IHplblwgOwor56apID4gc2hpXCA7CivnpqYgPiBneW9cIDsKK+emmCA+IHRlaVwgOwor56aWID4gYmFpXCA7CivnppQgPiBzaGlcIDsKK+emkyA+IHlvdVwgOwor56aOID4gdGVpXCA7CivnpowgPiBzaGlcIDsKK+emgCA+IHJpblwgOwor56W8ID4ga2FuXCA7CivnpbkgPiB0b3VcIDsKK+elqyA+IGtvdVwgOwor56WpID4gc2h1XCA7CivnpaIgPiBkZWlcIDsKK+eloCA+IHNoaVwgOwor56WfID4gc3VpXCA7CivnpZsgPiBreW9cIDsKK+elmCA+IHNhblwgOwor56WXID4gc2hpXCA7CivnpZAgPiB5dXVcIDsKK+eliyA+IHRhaVwgOwor56WKID4gaG91XCA7CivnpYkgPiBzaGlcIDsKK+elhiA+IGtlblwgOwor56WFID4geW91XCA7CivnpYQgPiBrYWlcIDsKK+elgCA+IHNoaVwgOwor56S9ID4gam91XCA7CivnpLsgPiBzaGlcIDsKK+ektSA+IHNvdVwgOwor56SxID4gcm91XCA7CivnpKwgPiBiYW5cIDsKK+ekqiA+IHJlaVwgOwor56SnID4gcmFpXCA7CivnpKYgPiBrb3VcIDsKK+ekpSA+IGtpblwgOwor56SfID4gaG91XCA7CivnpJ4gPiBib3VcIDsKK+ekmiA+IGthaVwgOwor56SRID4gdG91XCA7CivnpIwgPiByYWlcIDsKK+ekhyA+IGlrdVwgOwor56SGID4ga2VuXCA7CivnpIAgPiBrYW5cIDsKK+ejvSA+IGtvdVwgOwor56O7ID4gaGFuXCA7Civno7ogPiBrb3VcIDsKK+ejtyA+IHJpblwgOwor56O0ID4gdG91XCA7Civno7MgPiBzb3VcIDsKK+ejsiA+IGt5b1wgOwor56OsID4ga2VpXCA7Civno6ogPiBzYWlcIDsKK+ejoSA+IGthblwgOwor56ObID4gc2FuXCA7Civno5ogPiBzZW5cIDsKK+ejliA+IHJvdVwgOwor56OVID4ga2FpXCA7Civno5MgPiB0YWlcIDsKK+ejkSA+IGdhaVwgOwor56OOID4ga2VpXCA7Civno4wgPiB0ZW5cIDsKK+ejiiA+IHJhaVwgOwor56OJID4gc291XCA7Civno4cgPiBoZWlcIDsKK+ejhSA+IGhvdVwgOwor56K+ID4gdGVuXCA7Civnor0gPiBrb3VcIDsKK+eisyA+IHRhblwgOwor56KyID4gdGVpXCA7CivnorEgPiBrZW5cIDsKK+eisCA+IGhvdVwgOwor56KvID4gZG91XCA7Civnoq0gPiB0b3VcIDsKK+eiqCA+IHdhaVwgOwor56KeID4gZ2FuXCA7Civnop0gPiB6ZW5cIDsKK+eimiA+IGhhaVwgOwor56KYID4gdGVuXCA7CivnopMgPiB0YWlcIDsKK+eijiA+IHNhaVwgOwor56KNID4gZ2FpXCA7CivnooogPiBzZW5cIDsKK+eihyA+IHRlaVwgOwor56G8ID4gaG91XCA7Civnoa8gPiBrZW5cIDsKK+ehqCA+IHNoYVwgOwor56GkID4ga291XCA7CivnoaMgPiBrb3VcIDsKK+ehoSA+IGtvdVwgOwor56GgID4gcm91XCA7CivnoZwgPiBrb3VcIDsKK+ehmSA+IGdhaVwgOwor56GSID4gc2VpXCA7CivnoY8gPiBrZW5cIDsKK+ehjiA+IGtlaVwgOwor56GHID4gZG91XCA7CivnoYUgPiBrZWlcIDsKK+ehhCA+IGtvdVwgOwor56GDID4gc2h1XCA7CivnoL8gPiBrb3VcIDsKK+eguiA+IHJlaVwgOwor56CyID4gaG91XCA7CivnoLAgPiBob3VcIDsKK+egrSA+IGhlblwgOwor56CgID4gc2hvXCA7CivnoI4gPiBrYWlcIDsKK+egjSA+IGthblwgOwor56CMID4gc2VpXCA7CivnoIUgPiByZWlcIDsKK+efvCA+IGtvdVwgOwor55+4ID4ga2FuXCA7Civnn7QgPiB0ZWlcIDsKK+efsCA+IHNvdVwgOwor55+uID4gd2FpXCA7Civnn6YgPiBrb3VcIDsKK+efmSA+IGthblwgOwor55+VID4gYmFuXCA7Civnn5IgPiBib3VcIDsKK+efiSA+IGhpblwgOwor55+IID4gYmVuXCA7Civnn4cgPiBtb3VcIDsKK+efgyA+IGdlaVwgOwor5561ID4gcmluXCA7CivnnrEgPiB5b3VcIDsKK+eesCA+IGthblwgOwor556vID4ga2FuXCA7CivnnqogPiBkb3VcIDsKK+eeoiA+IGJvdVwgOwor556eID4gYmFuXCA7CivnnpEgPiBtZWlcIDsKK+eejSA+IHNvdVwgOwor556MID4ga291XCA7CivnnoAgPiBib3VcIDsKK+edviA+IGtvdVwgOwor5529ID4ga2VpXCA7CivnnbogPiBrb3VcIDsKK+edtCA+IGtvblwgOwor552zID4ga2VpXCA7CivnnbIgPiBzZWlcIDsKK+edrCA+IHNhaVwgOwor552qID4gZWtpXCA7CivnnacgPiBrb25cIDsKK+edpSA+IGhlaVwgOwor552kID4gaGVpXCA7CivnnaAgPiBrZW5cIDsKK+ednyA+IHN1aVwgOwor552eID4gcmFpXCA7CivnnZwgPiBzZWlcIDsKK+edmyA+IHNlaVwgOwor552aID4gZ2FpXCA7CivnnZIgPiBzZW5cIDsKK+edjyA+IGtvblwgOwor552NID4ga2VuXCA7CivnnYcgPiB0ZWlcIDsKK+edhiA+IGthblwgOwor552FID4ga2FuXCA7CivnnLggPiBib3VcIDsKK+ectyA+IGtlblwgOwor55y1ID4gc2hpXCA7CivnnLQgPiBrZW5cIDsKK+ecryA+IGJlaVwgOwor55yuID4gdG91XCA7CivnnKggPiBzb3VcIDsKK+ecpiA+IHNlaVwgOwor55ylID4gc2VpXCA7CivnnKQgPiB0ZWlcIDsKK+ecoiA+IHdhblwgOwor55ybID4gbWFpXCA7CivnnJogPiBzZWlcIDsKK+ecmSA+IGNoaVwgOwor55yUID4gdG91XCA7CivnnI4gPiBzaGlcIDsKK+eciiA+IGJvdVwgOwor55yIID4gdGFuXCA7CivnnIYgPiBob3VcIDsKK+echCA+IGJlblwgOwor55yAID4gYmVpXCA7Civnm7wgPiBoYW5cIDsKK+ebuyA+IGtlaVwgOwor55u2ID4gZ2luXCA7Civnm7AgPiBrYW5cIDsKK+ebqiA+IHRvdVwgOwor55uoID4gc2h1XCA7Civnm6QgPiBiYW5cIDsKK+eboCA+IHJlaVwgOwor55ufID4gbWVpXCA7Civnm54gPiBzYW5cIDsKK+ebliA+IGdhaVwgOwor55uUID4ga2FpXCA7Civnm5IgPiBrb3VcIDsKK+ebjSA+IGtvdVwgOwor55uMID4gd2FuXCA7Civnmr0gPiB0ZW5cIDsKK+eaqCA+IHNlaVwgOwor55qlID4ga291XCA7CivnmqMgPiB5b3VcIDsKK+eaoCA+IHNhaVwgOwor55qdID4ga291XCA7CivnmpwgPiBrb3VcIDsKK+eamiA+IGdhaVwgOwor55qWID4ga2FuXCA7CivnmpMgPiBrb3VcIDsKK+eakCA+IGtvdVwgOwor55qOID4ga291XCA7CivnmosgPiBrb3VcIDsKK+eahSA+IGhhZVwgOwor55qDID4gYm91XCA7CivnmoEgPiBzb3VcIDsKK+eZtCA+IHJlblwgOwor55myID4gdGVuXCA7CivnmbEgPiB0YW5cIDsKK+eZsCA+IHlvdVwgOwor55msID4gc2VuXCA7CivnmakgPiByYWlcIDsKK+eZoiA+IHlvdVwgOwor55mhID4gY2hpXCA7CivnmZwgPiBkZW5cIDsKK+eZmSA+IHNob1wgOwor55mYID4gcmVpXCA7CivnmZUgPiB5b3VcIDsKK+eZiSA+IHRhblwgOwor55mIID4gaGFpXCA7CivnmYYgPiByb3VcIDsKK+eZgCA+IGtvdVwgOwor55i7ID4gcm91XCA7CivnmLogPiByb3VcIDsKK+eYtSA+IHNhaVwgOwor55iwID4gcnVpXCA7CivnmKkgPiB0b3VcIDsKK+eYpiA+IHNvdVwgOwor55ijID4ga2FpXCA7CivnmKIgPiBoYW5cIDsKK+eYoSA+IHNvdVwgOwor55idID4ga2FuXCA7CivnmJsgPiBzZWlcIDsKK+eYmSA+IHNvdVwgOwor55iTID4gdGFuXCA7CivnmJIgPiBnb25cIDsKK+eYjSA+IHlvdVwgOwor55iLID4gZnV1XCA7CivnmIogPiBrb3VcIDsKK+eYiCA+IGtlaVwgOwor55iBID4gc3VpXCA7Civnl7MgPiByaW5cIDsKK+eXsCA+IHRhblwgOwor55evID4ga2FuXCA7Civnl6wgPiBla2lcIDsKK+eXoyA+IGF6YVwgOwor55egID4gc2FuXCA7Civnl5kgPiBrZWlcIDsKK+eXmCA+IHRvdVwgOwor55eXID4gYmFpXCA7Civnl44gPiBrYWlcIDsKK+eXjCA+IHRvdVwgOwor55eKID4gc2VuXCA7Civnl4MgPiBrZW5cIDsKK+eXgSA+IHNlblwgOwor55a9ID4gc2hvXCA7CivnlrwgPiB0b3VcIDsKK+eWuiA+IGhvdVwgOwor55a4ID4gdGFuXCA7CivnlrUgPiBzaGlcIDsKK+eWsyA+IGthblwgOwor55axID4gaG91XCA7CivnlqsgPiBla2lcIDsKK+eWpSA+IGthaVwgOwor55ajID4gaWJvXCA7Civnlp0gPiBzYW5cIDsKK+eWkyA+IHphaVwgOwor55aQID4gY2hpXCA7CivnlokgPiBqb3VcIDsKK+eWgiA+IGpvdVwgOwor55aBID4gcnl1XCA7Civnlb4gPiBzdWlcIDsKK+eVvSA+IHRvblwgOwor55WkID4gc2hpXCA7CivnlaEgPiBrYWlcIDsKK+eVniA+IGJvdVwgOwor55WaID4gaG9uXCA7CivnlZcgPiB0b3VcIDsKK+eVjiA+IGtlblwgOwor55WNID4ga2FpXCA7CivnlYsgPiB0ZW5cIDsKK+eViiA+IGtvdVwgOwor55WIID4gaGFuXCA7CivnlL8gPiBtb3VcIDsKK+eUviA+IHNoaVwgOwor55S9ID4ga2VuXCA7CivnlLkgPiBoZWlcIDsKK+eUuCA+IHRlblwgOwor55S0ID4gc291XCA7CivnlK8gPiBuZWlcIDsKK+eUrCA+IHlvdVwgOwor55SkID4genVpXCA7CivnlKIgPiBzYW5cIDsKK+eUoCA+IHNlaVwgOwor55ScID4gdGVuXCA7CivnlJsgPiB0ZW5cIDsKK+eUlyA+IGdlblwgOwor55SRID4gc291XCA7CivnlI4gPiBzZW5cIDsKK+eUjSA+IGJvdVwgOwor55SGID4gc2hpXCA7CivnlIQgPiBrZW5cIDsKK+eUgSA+IGhlaVwgOwor55O/ID4gaG91XCA7Civnk7sgPiBjaGlcIDsKK+eTtyA+IHNoaVwgOwor55O0ID4gcmlpXCA7Civnk7IgPiB0b25cIDsKK+eTqyA+IGhvblwgOwor55OqID4gaGFuXCA7Civnk6ggPiBrb3VcIDsKK+eToyA+IGJlblwgOwor55ObID4ga2FuXCA7Civnk5ogPiBzYW5cIDsKK+eTmCA+IGthblwgOwor55OTID4gcmFuXCA7Civnk48gPiByb3VcIDsKK+eTjCA+IGthaVwgOwor55OKID4ga2VpXCA7Civnk4kgPiBzYW5cIDsKK+eTiCA+IHJlaVwgOwor55K/ID4gc2VuXCA7CivnkrsgPiBzdWlcIDsKK+eSsiA+IHN1aVwgOwor55KvID4ga2FpXCA7Civnkq4gPiB0YW5cIDsKK+eSqyA+IHRvdVwgOwor55KqID4gc291XCA7CivnkqkgPiBreW9cIDsKK+eSqCA+IHNhblwgOwor55KgID4gaGFuXCA7CivnkpwgPiBrb3VcIDsKK+eSmiA+IGtlaVwgOwor55KYID4gcmluXCA7CivnkpIgPiB0b3VcIDsKK+eSjyA+IHRlaVwgOwor55KJID4gcmluXCA7CivnkocgPiBzZW5cIDsKK+eShSA+IHNvdVwgOwor55KBID4gc291XCA7CivnkoAgPiBzYWlcIDsKK+eRviA+IGtpblwgOwor55G2ID4geW91XCA7CivnkbEgPiB0ZW5cIDsKK+eRsCA+IGthaVwgOwor55GvID4gcm91XCA7Civnka0gPiB0b3VcIDsKK+eRqyA+IHRvdVwgOwor55GkID4geW91XCA7CivnkaIgPiB5b3VcIDsKK+eRniA+IHp1aVwgOwor55GdID4ga291XCA7CivnkZkgPiBkb3VcIDsKK+eRkSA+IHRlblwgOwor55GNID4ga2FuXCA7CivnkYcgPiB0YWlcIDsKK+eRhiA+IHNlaVwgOwor55GFID4gdGVpXCA7CivnkYQgPiBzZW5cIDsKK+eRgSA+IGJvdVwgOwor55C/ID4ga29uXCA7CivnkLogPiBob3VcIDsKK+eQuSA+IGtpblwgOwor55CzID4gcmluXCA7CivnkK8gPiBrYW5cIDsKK+eQriA+IHNvdVwgOwor55CrID4gaG91XCA7CivnkKggPiBrb25cIDsKK+eQpCA+IHNvdVwgOwor55CaID4ga3lvXCA7CivnkIUgPiByb3VcIDsKK+eQhCA+IGtlblwgOwor55CBID4gemVuXCA7CivnkIAgPiBrYW5cIDsKK+ePvSA+IHRlaVwgOwor54+7ID4gYmFpXCA7Civnj7ogPiBrdW5cIDsKK+ePuSA+IHNlaVwgOwor54+1ID4gdGVpXCA7Civnj64gPiBoYWlcIDsKK+ePrSA+IGhhblwgOwor54+pID4ga291XCA7Civnj6cgPiB5b3VcIDsKK+ePoiA+IGdpblwgOwor54+hID4ga2luXCA7Civnj6AgPiBzaHVcIDsKK+ePliA+IGtvdVwgOwor54+TID4ga291XCA7Civnj4ogPiBzYW5cIDsKK+ePiSA+IGJpblwgOwor5469ID4ga291XCA7CivnjrwgPiBzZWlcIDsKK+eOuSA+IGtlblwgOwor5463ID4gdGVuXCA7CivnjrUgPiBnYW5cIDsKK+eOsyA+IHRhaVwgOwor546yID4gcmVpXCA7Civnjq0gPiBoaW5cIDsKK+eOqyA+IGJhaVwgOwor546qID4ga2FuXCA7CivnjqIgPiBoaW5cIDsKK+eOoCA+IGthaVwgOwor546fID4gYmluXCA7CivnjpwgPiBrb3VcIDsKK+eOlSA+IGthblwgOwor546OID4gdGVpXCA7CivnjoEgPiBrZW5cIDsKK+eNtyA+IGtvdVwgOwor542xID4gaGluXCA7CivnjbAgPiBkb3VcIDsKK+eNryA+IGt1blwgOwor542uID4gc2VuXCA7CivnjawgPiBrYWlcIDsKK+eNqyA+IGtlblwgOwor542qID4ga2FpXCA7CivnjakgPiB3YWlcIDsKK+eNpyA+IGtlblwgOwor542eID4gdG91XCA7CivnjZggPiBoZWlcIDsKK+eNliA+IGZ1blwgOwor542SID4gZ291XCA7CivnjYogPiBzb3VcIDsKK+eNhSA+IHNoaVwgOwor542DID4gZ2FpXCA7CivnjL0gPiBiZWlcIDsKK+eMuyA+IHNvblwgOwor54y6ID4geW91XCA7CivnjLcgPiB5dXVcIDsKK+eMtSA+IGhlblwgOwor54y0ID4ga291XCA7CivnjLEgPiBkb3VcIDsKK+eMryA+IHRhblwgOwor54yuID4ga2VuXCA7CivnjKkgPiBzZWlcIDsKK+eMpSA+IHdhaVwgOwor54yeID4gc2hhXCA7CivnjJsgPiBtb3VcIDsKK+eMmSA+IHNvdVwgOwor54yYID4gc2VpXCA7CivnjI0gPiByYWlcIDsKK+eMiiA+IGdlaVwgOwor54yFID4gaGFpXCA7CivnjIQgPiBrZWlcIDsKK+eMgiA+IGthblwgOwor54u+ID4gc2VpXCA7Civni7sgPiBzYW5cIDsKK+eLuiA+IGdlblwgOwor54u3ID4ga2VuXCA7Civni7QgPiBoZWlcIDsKK+eLqSA+IHNodVwgOwor54ugID4gZ2FuXCA7Civni58gPiBrYW5cIDsKK+eLnSA+IHNlblwgOwor54uWID4geXV1XCA7Civni44gPiBrb3VcIDsKK+eLjCA+IHNlaVwgOwor54uAID4gam91XCA7Civnir4gPiBnaW5cIDsKK+eKuSA+IHl1dVwgOwor54q0ID4ga2FuXCA7CivnirIgPiBzYWlcIDsKK+eKmyA+IGJvdVwgOwor54qSID4ga291XCA7Civnio4gPiBob3VcIDsKK+eKjSA+IGtlblwgOwor54qJID4ganVuXCA7CivniocgPiBob25cIDsKK+eKgCA+IHNhaVwgOwor54m9ID4ga2VuXCA7CivnibwgPiBrb3VcIDsKK+eJuyA+IGJvdVwgOwor54m4ID4gc2hpXCA7CivnibcgPiBzZW5cIDsKK+eJtCA+IHRlaVwgOwor54muID4gc2VuXCA7CivniawgPiBoYWlcIDsKK+eJqCA+IGtvdVwgOwor54mjID4gamluXCA7CivniZ8gPiBib3VcIDsKK+eJnSA+IGhpblwgOwor54maID4gdG91XCA7CivniZYgPiB5dXVcIDsKK+eJlSA+IHNvdVwgOwor54mTID4gYm91XCA7CivniZAgPiBzb3VcIDsKK+eJjyA+IGNodVwgOwor54mOID4gc291XCA7CivniYsgPiBzZW5cIDsKK+eJhSA+IHlvdVwgOwor54mCID4gc291XCA7CivniLwgPiBzaG9cIDsKK+eIuyA+IGtvdVwgOwor54ioID4gc2FuXCA7CivniKQgPiByYW5cIDsKK+eInyA+IGthblwgOwor54iXID4geW91XCA7CivniIkgPiByb3VcIDsKK+eIiCA+IHJ5b1wgOwor54e/ID4geW91XCA7Civnh74gPiB0b3VcIDsKK+eHvCA+IGppblwgOwor54e5ID4gc2VuXCA7Civnh6cgPiBzdWlcIDsKK+eHpiA+IHNhblwgOwor54elID4gc291XCA7Civnh6AgPiBva2lcIDsKK+eHnCA+IG1vblwgOwor54eZID4gdG91XCA7Civnh5cgPiByYW5cIDsKK+eHlCA+IGhhblwgOwor54eTID4gZnVuXCA7Civnh5AgPiByaW5cIDsKK+eHjCA+IGZ1blwgOwor54eJID4gdG9uXCA7Civnh4EgPiB5b3VcIDsKK+eHgCA+IHNlblwgOwor54a/ID4ga291XCA7Civnhr4gPiBzaGlcIDsKK+eGsyA+IG1hblwgOwor54ayID4ga2VpXCA7Civnhq8gPiB6ZW5cIDsKK+eGrCA+IGdvdVwgOwor54aiID4gaG91XCA7CivnhqAgPiB5dXVcIDsKK+eGlSA+IGtvdVwgOwor54aUID4geW91XCA7CivnhpIgPiBrZWlcIDsKK+eGjyA+IGt1blwgOwor54aMID4gc2VuXCA7CivnhoAgPiB5b3VcIDsKK+eFuSA+IGtvdVwgOwor54WsID4geW91XCA7CivnhaggPiB3YWlcIDsKK+eFpSA+IGthblwgOwor54WiID4ga2VpXCA7CivnhaAgPiB5b3VcIDsKK+eFnCA+IGlrdVwgOwor54WaID4ga2VpXCA7CivnhZcgPiBkYW5cIDsKK+eFliA+IGRhblwgOwor54WRID4gc2hhXCA7CivnhYwgPiBrb3VcIDsKK+eFiyA+IHNlaVwgOwor54WKID4ga2VuXCA7CivnhYkgPiByZW5cIDsKK+eFhSA+IHRhblwgOwor54StID4ga2VpXCA7CivnhKAgPiBzYWlcIDsKK+eEniA+IHRvblwgOwor54ScID4ga29uXCA7CivnhJkgPiBob3VcIDsKK+eElSA+IGthblwgOwor54SLID4gc291XCA7CivnhIQgPiBrdW5cIDsKK+eDvSA+IGhvdVwgOwor54O6ID4ga291XCA7Civng7kgPiBob3VcIDsKK+eDsSA+IGtlaVwgOwor54OkID4ga291XCA7Civng50gPiBqb3VcIDsKK+eDnCA+IHRlblwgOwor54OYID4ga291XCA7Civng5YgPiBzYWlcIDsKK+eDlCA+IHRvdVwgOwor54ORID4geW91XCA7Civng4sgPiBrb3VcIDsKK+eDiiA+IHlvdVwgOwor54OJID4ga2FuXCA7CivngrcgPiBzaHVcIDsKK+eCtCA+IHlvdVwgOwor54KzID4gaGVpXCA7CivngrEgPiB0YWlcIDsKK+eCsCA+IGhvdVwgOwor54KvID4ga2VpXCA7Civngq4gPiBob3VcIDsKK+eCqyA+IGtlblwgOwor54KbID4geW91XCA7CivngpkgPiBzaGFcIDsKK+eCmCA+IGtpblwgOwor54KXID4ga291XCA7CivngpYgPiB0b25cIDsKK+eClSA+IGtvdVwgOwor54KUID4ga2VpXCA7CivngpIgPiBzb3VcIDsKK+eChiA+IGJ1blwgOwor54KFID4ga2VpXCA7Civngb4gPiBzYWlcIDsKK+eBtiA+IHNvdVwgOwor54G1ID4gcmVpXCA7Civnga4gPiBrb3VcIDsKK+eBpCA+IHJhblwgOwor54GjID4gd2FuXCA7CivngZ0gPiBrb3VcIDsKK+eBmCA+IGRhblwgOwor54GRID4gc2FpXCA7CivngYsgPiBob3VcIDsKK+eBiiA+IHNlblwgOwor54GJID4geW91XCA7CivngYMgPiBodXVcIDsKK+eAviA+IHJhblwgOwor54C8ID4gam91XCA7CivngLIgPiByZW5cIDsKK+eAqCA+IHJhaVwgOwor54CmID4gY2hvXCA7CivngKMgPiBrYWlcIDsKK+eAniA+IGpvdVwgOwor54CaID4ga2FuXCA7CivngJcgPiBrZW5cIDsKK+eAjSA+IHRlblwgOwor54CJID4gc2hhXCA7CivngIEgPiB5b3VcIDsKK+eAgCA+IHl1dVwgOwor5r++ID4gcnlvXCA7Civmv70gPiBzYW5cIDsKK+a/tSA+IGhpblwgOwor5r+zID4gc2VuXCA7Civmv6sgPiByYW5cIDsKK+a/qCA+IHNoaVwgOwor5r+kID4gdG91XCA7Civmv6AgPiBnb3VcIDsKK+a/lCA+IGRlaVwgOwor5r+KID4ga2FpXCA7Civmv4YgPiBmdW5cIDsKK+a/giA+IHJlblwgOwor5r62ID4gc2VuXCA7CivmvrMgPiBpa3VcIDsKK+a+sSA+IHRlblwgOwor5r6wID4gcmVuXCA7Civmvq8gPiBzYW5cIDsKK+a+riA+IGthaVwgOwor5r6qID4gcmVpXCA7CivmvqggPiBzZWlcIDsKK+a+pyA+IHJlaVwgOwor5r6lID4ga2FpXCA7CivmvqMgPiBrYW5cIDsKK+a+oSA+IHNvdVwgOwor5r6fID4gcmluXCA7CivmvpogPiBpa3VcIDsKK+a+lyA+IGthblwgOwor5r6WID4ga2FuXCA7CivmvpQgPiBrb3VcIDsKK+a+kiA+IGtvdVwgOwor5r6OID4gaG91XCA7Civmvo0gPiBzaHVcIDsKK+a+jCA+IHNoaVwgOwor5r6LID4ga291XCA7CivmvocgPiByb3VcIDsKK+a+gyA+IGdlaVwgOwor5r6BID4ganV1XCA7CivmvoAgPiBqdXVcIDsKK+a9viA+IHJpblwgOwor5r28ID4gZG91XCA7CivmvbogPiBzYW5cIDsKK+a9uCA+IHNhblwgOwor5r20ID4gY2hvXCA7Civmva8gPiBqaW5cIDsKK+a9rSA+IHRhblwgOwor5r2sID4gdGFuXCA7CivmvaggPiBzb3VcIDsKK+a9piA+IHJvdVwgOwor5r2kID4ganVuXCA7CivmvaIgPiBrb3VcIDsKK+a9oSA+IHRvblwgOwor5r2bID4gc2VuXCA7CivmvZggPiBoYW5cIDsKK+a9kyA+IGtlaVwgOwor5r2SID4gdG91XCA7CivmvYUgPiBrYW5cIDsKK+a9gCA+IHNvdVwgOwor5ry+ID4geW91XCA7CivmvLwgPiBzYWlcIDsKK+a8tiA+IGthblwgOwor5ryxID4gc291XCA7CivmvLAgPiBob3VcIDsKK+a8ryA+IHRvdVwgOwor5rytID4gYm91XCA7CivmvKsgPiBtYW5cIDsKK+a8qSA+IHNlblwgOwor5rybID4gdG91XCA7CivmvJYgPiBrb3VcIDsKK+a8kSA+IGdhaVwgOwor5ryMID4ga2luXCA7CivmvIggPiBzZWlcIDsKK+a8hCA+IGdhaVwgOwor5ru+ID4ga29uXCA7Civmu70gPiB5b3VcIDsKK+a7uyA+IHNhblwgOwor5ruhID4gbWFuXCA7Civmu54gPiB0YWlcIDsKK+a7miA+IGtvblwgOwor5ruVID4gdG91XCA7Civmu5QgPiB0b3VcIDsKK+a7jiA+IGtlaVwgOwor5ruNID4gY2hpXCA7Civmu4kgPiBrb3VcIDsKK+a7iCA+IGtvdVwgOwor5ruHID4gdGVuXCA7Civmu4QgPiBzb3VcIDsKK+a7giA+IGJvdVwgOwor5ruBID4gY2hvXCA7Civmur8gPiBoYW5cIDsKK+a6uyA+IHRvdVwgOwor5rq3ID4ga29uXCA7CivmurIgPiBzb3VcIDsKK+a6riA+IHNoaVwgOwor5rqfID4gbWVpXCA7CivmupkgPiB0YWlcIDsKK+a6mCA+IGtvdVwgOwor5rqTID4gcmVuXCA7Civmuo8gPiB0b3VcIDsKK+a6iSA+IGdhaVwgOwor5rm9ID4gc2hpXCA7CivmubsgPiBqdW5cIDsKK+a5tiA+IHNlblwgOwor5rmzID4gZGFuXCA7CivmubIgPiBrYW5cIDsKK+a5oyA+IGJpblwgOwor5rmfID4ga291XCA7CivmuZ4gPiB0b3VcIDsKK+a5nSA+IGthaVwgOwor5rmbID4gdGFuXCA7CivmuZcgPiBob3VcIDsKK+a5lCA+IHNlblwgOwor5rmTID4gaG9uXCA7CivmuZEgPiBzaG9cIDsKK+a5jyA+IGthaVwgOwor5rmOID4gYmVuXCA7CivmuY0gPiB0YW5cIDsKK+a5iiA+IHNvdVwgOwor5rmJID4gdGVuXCA7CivmuYggPiBiYWlcIDsKK+a5hSA+IHJlblwgOwor5rmDID4gaGFpXCA7CivmuL4gPiBrb25cIDsKK+a4uyA+IHNlaVwgOwor5ri5ID4ga291XCA7CivmuLggPiB5dXVcIDsKK+a4siA+IHNlblwgOwor5rinID4gdGVpXCA7CivmuKUgPiBha3VcIDsKK+a4oiA+IGh1dVwgOwor5rifID4gdGVpXCA7CivmuJkgPiBrYW5cIDsKK+a4kyA+IGtlaVwgOwor5riAID4gaG9uXCA7Civmt7ggPiBzZWlcIDsKK+a3tiA+IHJhaVwgOwor5rewID4gZGVuXCA7Civmt68gPiBpa3VcIDsKK+a3riA+IHdhaVwgOwor5resID4gc2FpXCA7Civmt6ogPiByaW5cIDsKK+a3qCA+IGpvdVwgOwor5remID4ga2FuXCA7Civmt58gPiB0ZW5cIDsKK+a3myA+IHNlaVwgOwor5reaID4gcnVpXCA7Civmt5kgPiBzb3VcIDsKK+a3mCA+IHRvdVwgOwor5reWID4gZG91XCA7Civmt5IgPiBzZWlcIDsKK+a3jyA+IGtvdVwgOwor5reOID4gaG91XCA7Civmt4ogPiBrYW5cIDsKK+a3hiA+IGtvdVwgOwor5reEID4gc2hpXCA7Civmt4AgPiB0ZW5cIDsKK+a2vSA+IGtvblwgOwor5ra3ID4gdG91XCA7CivmtrUgPiBrYW5cIDsKK+a2rCA+IGtlaVwgOwor5raqID4gaHV1XCA7CivmtqMgPiBrYW5cIDsKK+a2myA+IHRvdVwgOwor5raaID4gc2VpXCA7CivmtpggPiBzaGlcIDsKK+a2lyA+IHNlaVwgOwor5raWID4gcmVpXCA7CivmtpUgPiB0ZWlcIDsKK+a2lCA+IHNhblwgOwor5raTID4ga2VuXCA7CivmtpIgPiB0b25cIDsKK+a2kSA+IHNvdVwgOwor5raHID4gdGVpXCA7CivmtbwgPiBiYWlcIDsKK+a1sCA+IHJlblwgOwor5rWpID4ga291XCA7CivmtacgPiB0ZWlcIDsKK+a1piA+IHVyYVwgOwor5rWlID4geXV1XCA7CivmtaQgPiBrb3VcIDsKK+a1oyA+IGthblwgOwor5rWfID4geXV1XCA7CivmtL0gPiBrb3VcIDsKK+a0uCA+IGtvdVwgOwor5rSuID4gdG91XCA7CivmtKogPiBrb3VcIDsKK+a0qCA+IGtvdVwgOwor5rSaID4ga291XCA7CivmtJkgPiBzaHVcIDsKK+a0iiA+IHNlblwgOwor5rSEID4ga2FpXCA7Civms7QgPiBrYW5cIDsKK+azsiA+IHNlaVwgOwor5rOwID4gdGFpXCA7Civms68gPiBiaW5cIDsKK+azriA+IGhhblwgOwor5rOrID4ga2VuXCA7Civms6ogPiBydWlcIDsKK+azqSA+IHNvdVwgOwor5rOgID4gcmVpXCA7Civms5wgPiB0ZWlcIDsKK+azmyA+IGhhblwgOwor5rOaID4gc2VpXCA7Civms5kgPiBob3VcIDsKK+azlyA+IHNoaVwgOwor5rOWID4gYm91XCA7Civms5QgPiBrYW5cIDsKK+azkSA+IHl1dVwgOwor5rONID4gaG9uXCA7Civms4IgPiBrZWlcIDsKK+ayviA+IHRlblwgOwor5rK6ID4gdGVuXCA7CivmsrUgPiBkZWlcIDsKK+aytCA+IHJlaVwgOwor5rKuID4gc2hvXCA7Civmsp8gPiBrb3VcIDsKK+aynCA+IGhhblwgOwor5rKbID4gaGFpXCA7CivmspogPiBzaGlcIDsKK+aylyA+IHRlblwgOwor5rKUID4gYmVuXCA7CivmspMgPiB0b3VcIDsKK+ayhiA+IGtvdVwgOwor5rKFID4gZ2VuXCA7Civmsb4gPiBmdW5cIDsKK+axuCA+IGhvdVwgOwor5rG2ID4gYnVuXCA7CivmsbQgPiBoZW5cIDsKK+axsyA+IGhlblwgOwor5rGvID4ga291XCA7Civmsa0gPiB6ZWlcIDsKK+axqyA+IGtlaVwgOwor5rGnID4ga2VuXCA7CivmsZ4gPiBrb3VcIDsKK+axnCA+IHNoaVwgOwor5rGVID4gc2FuXCA7CivmsZIgPiBib3VcIDsKK+axjyA+IHRhaVwgOwor5rGOID4gaGFuXCA7CivmsY0gPiBrYW5cIDsKK+awviA+IGhhblwgOwor5rC9ID4gdG9uXCA7CivmsLogPiBzdWlcIDsKK+awuSA+IGthblwgOwor5rCuID4gdGFuXCA7CivmsKcgPiB5b3VcIDsKK+awpiA+IGdhaVwgOwor5rCbID4gZnVuXCA7CivmsJkgPiBzZW5cIDsKK+awkyA+IGJvdVwgOwor5rCQID4gdGVpXCA7CivmsIkgPiBzb3VcIDsKK+awhCA+IGp1dVwgOwor5q+/ID4gc2FuXCA7Civmr7cgPiBib3VcIDsKK+avsyA+IHplaVwgOwor5q+vID4gdGFuXCA7Civmr6cgPiBqdXVcIDsKK+avoSA+IHNlblwgOwor5q+aID4gc2FuXCA7Civmr5MgPiBpa3VcIDsKK+avjyA+IG1haVwgOwor5q+MID4ga2FuXCA7Civmrr0gPiBrb3VcIDsKK+auuCA+IGtlaVwgOwor5q6zID4gc2h1XCA7CivmrrIgPiBzZW5cIDsKK+ausSA+IHNlblwgOwor5q6vID4gaGluXCA7Civmrq4gPiByZW5cIDsKK+auqyA+IHRhblwgOwor5q6pID4gc2FuXCA7CivmrqggPiBrYWlcIDsKK+auoyA+IGtpblwgOwor5q6iID4gdGVpXCA7CivmrpcgPiB5b3VcIDsKK+aulSA+IGZ1dVwgOwor5q6JID4ganVuXCA7CivmroUgPiBzb3VcIDsKK+auhCA+IHRlblwgOwor5q6DID4geW91XCA7CivmroAgPiB5b3VcIDsKK+atsiA+IHNlaVwgOwor5q2uID4ganV1XCA7CivmrasgPiBreW9cIDsKK+atnSA+IGVraVwgOwor5q2bID4ga2FuXCA7CivmrZMgPiBrYW5cIDsKK+atiSA+IGtlblwgOwor5q2GID4ga2luXCA7CivmrYMgPiBzb3VcIDsKK+asvyA+IHRhblwgOwor5qy+ID4ga2FuXCA7CivmrL0gPiBraW5cIDsKK+astSA+IGthblwgOwor5qysID4ga2FpXCA7CivmrKMgPiBnb25cIDsKK+asniA+IHJlaVwgOwor5qyXID4gcmFuXCA7CivmrJYgPiByYW5cIDsKK+askiA+IHJhblwgOwor5qyRID4gc2FuXCA7CivmrJAgPiByZWlcIDsKK+asiSA+IHNvdVwgOwor5qyGID4gc291XCA7CivmrIQgPiByYW5cIDsKK+asgyA+IHNhblwgOwor5qu8ID4gc2VuXCA7Civmq7ogPiByZWlcIDsKK+arsCA+IGthaVwgOwor5qunID4gc2hvXCA7Civmq6UgPiBjaHVcIDsKK+arpCA+IHNlblwgOwor5qucID4ga291XCA7Civmq5ogPiByeW9cIDsKK+arliA+IHJ5b1wgOwor5quVID4gc2FuXCA7Civmq5QgPiByZWlcIDsKK+arkSA+IHJhaVwgOwor5quQID4gcnVpXCA7Civmq4wgPiB5dXVcIDsKK+ariSA+IGNodVwgOwor5quIID4gdG91XCA7Civmq4YgPiBrYWlcIDsKK+argiA+IGthaVwgOwor5qq+ID4ga2VpXCA7CivmqrsgPiBvcmlcIDsKK+aquCA+IG5laVwgOwor5qqzID4gYmluXCA7CivmqrAgPiBoZW5cIDsKK+aqryA+IHRhaVwgOwor5qquID4gdG91XCA7CivmqqwgPiBib3VcIDsKK+aqqSA+IHJpblwgOwor5qqgID4ga2VpXCA7Civmqp4gPiBrYWlcIDsKK+aqkSA+IHJhaVwgOwor5qqJID4gdGVpXCA7CivmqocgPiBzdWlcIDsKK+aqhiA+IHNhblwgOwor5qqBID4gcmluXCA7Civmqb4gPiBzaHVcIDsKK+apqiA+IHplblwgOwor5qmnID4gc291XCA7CivmqaYgPiB0b3VcIDsKK+appCA+IHp1aVwgOwor5qmWID4gdG91XCA7CivmqZUgPiB0b3VcIDsKK+apkSA+IHJvdVwgOwor5qmOID4gaGFuXCA7CivmqYkgPiByaW5cIDsKK+apiCA+IGthaVwgOwor5qmHID4gemVpXCA7CivmqYQgPiBrYW5cIDsKK+aovyA+IHNlblwgOwor5qi3ID4gc291XCA7CivmqLYgPiBzYWlcIDsKK+aoqCA+IHNlaVwgOwor5qikID4gam91XCA7CivmqKAgPiBib25cIDsKK+aoniA+IHN1dVwgOwor5qiXID4gY2hvXCA7CivmqJQgPiBzb3VcIDsKK+aojyA+IHJ1aVwgOwor5qiMID4ga2FuXCA7CivmqIsgPiB0b2lcIDsKK+aoiiA+IGhhblwgOwor5qiDID4gcm91XCA7CivmqIEgPiB0b3VcIDsKK+anvyA+IGtpblwgOwor5qe+ID4gYmFuXCA7Civmp7kgPiBrb3VcIDsKK+antSA+IGthblwgOwor5qexID4geXV1XCA7Civmp68gPiBzYWlcIDsKK+anqyA+IHRhblwgOwor5qeqID4gZ2FpXCA7Civmp6cgPiBzYW5cIDsKK+anniA+IHJvdVwgOwor5qedID4gdG91XCA7Civmp5kgPiB0ZW5cIDsKK+ankyA+IGtvdVwgOwor5qeRID4gYmFpXCA7Civmp5AgPiBrYWlcIDsKK+aniCA+IGRvdVwgOwor5qeDID4gaGFuXCA7Civmp4EgPiBrb3VcIDsKK+amvCA+IGtvdVwgOwor5qa4ID4gdGFpXCA7CivmprEgPiBzdWlcIDsKK+amryA+IHNoaVwgOwor5qatID4gc2hhXCA7CivmpqYgPiBrYW5cIDsKK+ampSA+IGtvdVwgOwor5qagID4gYmVpXCA7CivmppwgPiBib3VcIDsKK+amlSA+IHlvdVwgOwor5qaUID4gcm91XCA7CivmpbsgPiBrb3VcIDsKK+aluiA+IGp1dVwgOwor5qW3ID4ga2FpXCA7CivmpbQgPiB0ZWlcIDsKK+alsyA+IGJhaVwgOwor5qWxID4gc291XCA7Civmpa8gPiBqdW5cIDsKK+alriA+IGNob1wgOwor5qWqID4geW91XCA7CivmpakgPiBoZW5cIDsKK+alqCA+IHRlaVwgOwor5qWmID4ga2VuXCA7CivmpaUgPiBrZW5cIDsKK+alpCA+IHNvdVwgOwor5qWeID4gcm91XCA7CivmpZ0gPiByZW5cIDsKK+almSA+IGJvdVwgOwor5qWXID4ga2VuXCA7CivmpY4gPiBrb25cIDsKK+akvSA+IHRlblwgOwor5qS2ID4gc2h1XCA7CivmpLMgPiB3YWlcIDsKK+aksSA+IGZ1dVwgOwor5qSmID4ga2VuXCA7CivmpKIgPiBrYWlcIDsKK+aklyA+IHRlaVwgOwor5qSWID4gaG91XCA7CivmpJEgPiBoZWlcIDsKK+akkCA+IGt5b1wgOwor5qSMID4ga291XCA7CivmpIkgPiBqb3VcIDsKK+ajvCA+IGh1blwgOwor5qO5ID4gc2FvXCA7Civmo7YgPiByYWlcIDsKK+ajtSA+IGthblwgOwor5qOxID4gcm91XCA7Civmo7AgPiBzb2lcIDsKK+ajryA+IGppblwgOwor5qOtID4gZWtpXCA7Civmo6wgPiBrZW5cIDsKK+ajqCA+IGtlaVwgOwor5qOnID4gc2FuXCA7Civmo6UgPiBoYW5cIDsKK+ajoyA+IHRlaVwgOwor5qOhID4ga291XCA7Civmo6AgPiB0b3VcIDsKK+ajmSA+IHJlaVwgOwor5qOWID4gdG91XCA7Civmo5UgPiBzaHVcIDsKK+ajlCA+IGtvblwgOwor5qOTID4gaG91XCA7Civmo5EgPiBoYWlcIDsKK+ajjSA+IGtvblwgOwor5qOMID4gc2FpXCA7Civmo4kgPiBtZW5cIDsKK+ajiCA+IHNlblwgOwor5qOGID4gcmluXCA7Civmo4UgPiBoZWlcIDsKK+aivCA+IHRvdVwgOwor5qK5ID4gYmluXCA7CivmorUgPiBmdXVcIDsKK+aisSA+IGtvblwgOwor5qKqID4gdG91XCA7CivmoqEgPiBrYW5cIDsKK+aioCA+IHJ5b1wgOwor5qKaID4gYmFuXCA7CivmopggPiBrZW5cIDsKK+ailyA+IGtvdVwgOwor5qKWID4gaGFpXCA7CivmopQgPiBzaGlcIDsKK+aijSA+IHNvdVwgOwor5qKIID4gaG91XCA7CivmooYgPiBob3VcIDsKK+aihCA+IHlvdVwgOwor5qG/ID4ga2FuXCA7Civmob4gPiBrdW5cIDsKK+ahuyA+IGhvdVwgOwor5qG5ID4gcm91XCA7CivmobUgPiB6dWlcIDsKK+ahsSA+IGtlaVwgOwor5qGvID4gdGVpXCA7Civmoa4gPiBoYWlcIDsKK+ahoyA+IHRvdVwgOwor5qGTID4ga2FuXCA7CivmoZIgPiBzb3VcIDsKK+ahiiA+IGtlblwgOwor5qGFID4gZ2FpXCA7CivmoYQgPiBrb3VcIDsKK+agvSA+IHNhaVwgOwor5qC0ID4gc2VuXCA7CivmoLMgPiByb3VcIDsKK+agsiA+IGdvdVwgOwor5qCvID4gaWt1XCA7CivmoKwgPiBzZWlcIDsKK+agqyA+IHNvblwgOwor5qCfID4gaGVpXCA7CivmoJ0gPiB0ZW5cIDsKK+agmSA+IGtvdVwgOwor5qCWID4gc2VpXCA7CivmoJQgPiBrZWlcIDsKK+agiCA+IHNhblwgOwor5p+5ID4gc2hpXCA7Civmn7YgPiBzaGlcIDsKK+afrCA+IGthblwgOwor5p+mID4gdGFuXCA7Civmn6IgPiB0ZWlcIDsKK+afnCA+IGt5b1wgOwor5p+ZID4ga291XCA7Civmn5ggPiBzaGFcIDsKK+afkSA+IGthblwgOwor5p+JID4gaGFuXCA7Civmn4ggPiBoYW5cIDsKK+afhiA+IHJvdVwgOwor5p+DID4gcmVpXCA7Civmnr4gPiBzaGlcIDsKK+aevSA+IHNvdVwgOwor5p68ID4geW91XCA7CivmnrkgPiBob3VcIDsKK+aetCA+IGthaVwgOwor5p6yID4gc2hpXCA7CivmnrAgPiBoZWlcIDsKK+aeoiA+IHN1dVwgOwor5p6bID4gc291XCA7CivmnpggPiB6ZWlcIDsKK+aeliA+IHlvdVwgOwor5p6TID4gc2h1XCA7Civmno8gPiBkYW5cIDsKK+aejCA+IGZ1blwgOwor5p6LID4gaG91XCA7CivmnoUgPiBrZWlcIDsKK+aehCA+IGtvdVwgOwor5p28ID4gY2hvXCA7CivmnbQgPiBrZW5cIDsKK+adsyA+IHlvdVwgOwor5p2yID4ga291XCA7Civmna4gPiBoYWlcIDsKK+adrSA+IGt1aVwgOwor5p2sID4gZ2VuXCA7CivmnacgPiBtYW5cIDsKK+adoCA+IGtvdVwgOwor5p2dID4gY2hpXCA7CivmnZUgPiB0ZWlcIDsKK+adhiA+IGthblwgOwor5py/ID4gc2hpXCA7CivmnL4gPiB0b3VcIDsKK+actyA+IHRvdVwgOwor5pypID4gdG91XCA7CivmnKIgPiBib3VcIDsKK+acnCA+IHRvblwgOwor5pyZID4gbWVpXCA7CivmnJggPiBzZW5cIDsKK+acliA+IHJvdVwgOwor5pyOID4gcmVpXCA7CivmnIwgPiBoYW5cIDsKK+abuiA+IHNvdVwgOwor5pu5ID4gc291XCA7Civmm64gPiBnYW5cIDsKK+abrCA+IHNhaVwgOwor5purID4gcmFuXCA7Civmm6kgPiBkb3VcIDsKK+abqCA+IHJvdVwgOwor5puhID4gam91XCA7Civmm6AgPiBrb3VcIDsKK+abmyA+IGt1blwgOwor5puaID4gYm91XCA7Civmm5QgPiBrZWlcIDsKK+abjiA+IGVraVwgOwor5puIID4gdG91XCA7Civmm4UgPiB5b3VcIDsKK+abhCA+IHlvdVwgOwor5puDID4gdGFpXCA7Civmm4IgPiBrb3VcIDsKK+aaviA+IHRvblwgOwor5pq7ID4ga2VpXCA7CivmmrkgPiBzZW5cIDsKK+aatSA+IGthblwgOwor5pqtID4ga291XCA7CivmmqQgPiBrb3VcIDsKK+aaoCA+IGtvdVwgOwor5pqfID4ga2FpXCA7Civmmp0gPiBtZWlcIDsKK+aamiA+IHlvdVwgOwor5pqYID4geW91XCA7CivmmpIgPiBzZWlcIDsKK+aajCA+IGtlaVwgOwor5pqLID4gYmluXCA7CivmmoQgPiBrZW5cIDsKK+aZuSA+IGVraVwgOwor5pm4ID4gdGVpXCA7CivmmbUgPiBrZWlcIDsKK+aZrCA+IHNhaVwgOwor5pmqID4gdGVuXCA7CivmmacgPiBrb3VcIDsKK+aZpiA+IGthaVwgOwor5pmgID4gc2VpXCA7CivmmZ8gPiBzZWlcIDsKK+aZnCA+IGtvblwgOwor5pmbID4ga2VuXCA7CivmmZogPiBiYW5cIDsKK+aZmCA+IGthblwgOwor5pmXID4ga2FuXCA7CivmmY4gPiBrb3VcIDsKK+aZhiA+IGthaVwgOwor5pmFID4ga2VuXCA7CivmmYQgPiBrb3VcIDsKK+aZgyA+IGtvdVwgOwor5pi/ID4ga291XCA7CivmmLsgPiBrb3VcIDsKK+aYsSA+IGlrdVwgOwor5piwID4gc2hpXCA7CivmmKwgPiBrb25cIDsKK+aYqiA+IGhlblwgOwor5pinID4gbWFpXCA7CivmmKYgPiBrb3VcIDsKK+aYpCA+IHJlaVwgOwor5pihID4ga2VuXCA7CivmmJ4gPiBoZWlcIDsKK+aYnSA+IHNhblwgOwor5picID4geW91XCA7CivmmJUgPiBraW5cIDsKK+aYkSA+IGtpblwgOwor5piPID4ga29uXCA7CivmmI0gPiBrZW5cIDsKK+aYiiA+IGtvdVwgOwor5piJID4gaG91XCA7CivmmIQgPiBoYW5cIDsKK+aXuyA+IGJpblwgOwor5pe1ID4gdGFuXCA7Civml7IgPiB0YWlcIDsKK+aXsSA+IGthblwgOwor5pewID4ga2FuXCA7Civml5sgPiBoYW5cIDsKK+aXmSA+IGhhblwgOwor5peYID4gc2hpXCA7Civml5QgPiBrZW5cIDsKK+aXjCA+IHNlaVwgOwor5peGID4gaGFpXCA7Civml4QgPiBib3VcIDsKK+aXgyA+IHNlblwgOwor5pa/ID4geW91XCA7Civmlr0gPiBzaGlcIDsKK+aWtCA+IHJpblwgOwor5pazID4ga2luXCA7CivmlqcgPiBvbm9cIDsKK+aWpiA+IGdpblwgOwor5pakID4ga2luXCA7CivmlpUgPiByYW5cIDsKK+aWkiA+IGhhblwgOwor5paMID4gaGluXCA7CivmloogPiBzZWlcIDsKK+aWhiA+IGtvdVwgOwor5paFID4ga291XCA7CivmloIgPiByZW5cIDsKK+aWgSA+IGVraVwgOwor5pW7ID4ga2VpXCA7CivmlbIgPiBrb3VcIDsKK+aVryA+IGJpblwgOwor5pWtID4geW91XCA7CivmlakgPiBrb3VcIDsKK+aVpiA+IHRvblwgOwor5pWfID4gdGVuXCA7CivmlZ0gPiBoZWlcIDsKK+aVliA+IGdvdVwgOwor5pWUID4gZ3lvXCA7CivmlYMgPiBiaW5cIDsKK+aUvSA+IGhhblwgOwor5pS8ID4ga2FuXCA7CivmlLsgPiBrb3VcIDsKK+aUuCA+IHl1dVwgOwor5pS3ID4ga291XCA7CivmlK4gPiBkb3VcIDsKK+aUrCA+IHJhblwgOwor5pSpID4gdG91XCA7CivmlKYgPiByZWlcIDsKK+aUpCA+IHRhblwgOwor5pSjID4gcmVuXCA7CivmlKIgPiBzYW5cIDsKK+aUnyA+IGt1blwgOwor5pScID4ga2VpXCA7CivmlJsgPiBzYW5cIDsKK+aUmSA+IHNlblwgOwor5pSYID4gam91XCA7CivmlJQgPiByYW5cIDsKK+aUkyA+IGtlblwgOwor5pSPID4gcm91XCA7CivmlIggPiBrdW5cIDsKK+aUhSA+IHNhblwgOwor5pSEID4gY2hvXCA7CivmlIEgPiB5b3VcIDsKK+aUgCA+IGhhblwgOwor5pO+ID4gam91XCA7Civmk7sgPiBzb3VcIDsKK+aTuiA+IGhhaVwgOwor5pO2ID4gc2VuXCA7Civmk7AgPiBkb3VcIDsKK+aTryA+IGhpblwgOwor5pOtID4ga3lvXCA7Civmk6ogPiB5b3VcIDsKK+aTpSA+IHJhblwgOwor5pOkID4ga291XCA7Civmk6MgPiB0b3VcIDsKK+aToCA+IHNlaVwgOwor5pOaID4ga3lvXCA7Civmk5UgPiBrZWlcIDsKK+aTkiA+IGtpblwgOwor5pOQID4ga2FuXCA7Civmk44gPiBrZWlcIDsKK+aTiyA+IHRvdVwgOwor5pOEID4gcnlvXCA7Civmk4IgPiByYWlcIDsKK+aTgSA+IHlvdVwgOwor5pK/ID4gcmVuXCA7Civmkr0gPiBrb3VcIDsKK+aSvCA+IGthblwgOwor5pKzID4ga2luXCA7CivmkrAgPiBzYW5cIDsKK+aSpiA+IHNoYVwgOwor5pKjID4gdGFuXCA7CivmkqEgPiBzb3VcIDsKK+aSniA+IHNodVwgOwor5pKbID4gcmluXCA7CivmkpogPiBuZW5cIDsKK+aSmSA+IHNvblwgOwor5pKYID4gdG91XCA7CivmkpUgPiBzZWlcIDsKK+aSkyA+IGRvdVwgOwor5pKSID4gc2FuXCA7Civmko8gPiBzYW5cIDsKK+aSiCA+IHJvdVwgOwor5pG7ID4gc2FuXCA7CivmkbYgPiB0YW5cIDsKK+aRtCA+IGNob1wgOwor5pGzID4ga291XCA7Civmka8gPiBzaGlcIDsKK+aRpyA+IHNhaVwgOwor5pGhID4ga2FpXCA7CivmkaAgPiBzb3VcIDsKK+aRnyA+IHJvdVwgOwor5pGcID4ga2FuXCA7CivmkZsgPiBjaGlcIDsKK+aRmiA+IHRvdVwgOwor5pGTID4gaG91XCA7CivmkZIgPiBoZWlcIDsKK+aRhyA+IHlvdVwgOwor5pC0ID4ga2VuXCA7CivmkK8gPiB0b3VcIDsKK+aQrSA+IHRvdVwgOwor5pCsID4gaGFuXCA7CivmkKogPiB0b3VcIDsKK+aQqCA+IHRvdVwgOwor5pClID4gdGFpXCA7CivmkKQgPiBha3VcIDsKK+aQniA+IGtvdVwgOwor5pCYID4gc2hpXCA7CivmkJcgPiB0b3VcIDsKK+aQlCA+IHNvdVwgOwor5pCSID4gaG91XCA7CivmkIYgPiBrb3VcIDsKK+aPuSA+IGhhaVwgOwor5o+3ID4gc291XCA7Civmj7UgPiBrZW5cIDsKK+aPrSA+IGtlaVwgOwor5o+pID4ga2FpXCA7Civmj6UgPiB0ZWlcIDsKK+aPoyA+IHNoaVwgOwor5o+WID4geXV1XCA7Civmj5QgPiBzb3VcIDsKK+aPkyA+IHNoaVwgOwor5o+SID4gc291XCA7Civmj44gPiBzZW5cIDsKK+aPiCA+IGtvdVwgOwor5o+FID4ga2VuXCA7Civmj4EgPiB0ZWlcIDsKK+aPgCA+IGthblwgOwor5o69ID4gaG91XCA7Civmjq8gPiBrb3VcIDsKK+aOriA+IGtlblwgOwor5o6tID4gdGVuXCA7CivmjqsgPiBzb3VcIDsKK+aOmSA+IHNvdVwgOwor5o6WID4gZWtpXCA7CivmjpQgPiBrYW5cIDsKK+aOkCA+IGtvdVwgOwor5o6PID4gdG91XCA7CivmjoogPiBob3VcIDsKK+aOiSA+IHRvdVwgOwor5o6EID4gcm9uXCA7CivmjoIgPiB0ZW5cIDsKK+aOgCA+IGtpblwgOwor5o2/ID4gc2VpXCA7CivmjbYgPiBzdWlcIDsKK+aNtSA+IHRlblwgOwor5o20ID4gZnVuXCA7CivmjbEgPiBnYWlcIDsKK+aNrSA+IGhhaVwgOwor5o2rID4gbW9uXCA7CivmjacgPiBob3VcIDsKK+aNpiA+IGtpblwgOwor5o2lID4gd2FuXCA7CivmjaIgPiBrYW5cIDsKK+aNmyA+IHJ5b1wgOwor5o2YID4gc29uXCA7CivmjY4gPiBzb3VcIDsKK+aNjSA+IGthblwgOwor5o2KID4gaG91XCA7CivmjYYgPiBrb25cIDsKK+aNgyA+IGt1blwgOwor5oy6ID4gdGVpXCA7CivmjLkgPiB5dXVcIDsKK+aMtSA+IHJvdVwgOwor5oytID4ga291XCA7CivmjI0gPiBrb3VcIDsKK+aMiiA+IHJvdVwgOwor5oyEID4ga291XCA7CivmjIIgPiBrZWlcIDsKK+aLvCA+IGhvdVwgOwor5ou3ID4gZ291XCA7Civmi7QgPiBzZW5cIDsKK+aLryA+IGpvdVwgOwor5ouqID4gc2VuXCA7Civmi5ogPiBoZW5cIDsKK+aLkiA+IGt5b1wgOwor5ouRID4ga2FuXCA7Civmi5AgPiBrYWlcIDsKK+aLjiA+IHJlaVwgOwor5ouMID4gaGFuXCA7Civmi4sgPiBob3VcIDsKK+aLiCA+IGRlblwgOwor5ouEID4gY2h1XCA7Civmir8gPiBiaW5cIDsKK+aKviA+IGt5b1wgOwor5oq6ID4gYmFpXCA7CivmiqwgPiB0YWlcIDsKK+aKqCA+IGhvdVwgOwor5oqmID4gaGVpXCA7CivmipYgPiB0b3VcIDsKK+aKlCA+IGhvdVwgOwor5oqPID4gZ2FuXCA7CivmioMgPiBiZW5cIDsKK+aJvSA+IHRvblwgOwor5om8ID4gYWt1XCA7CivmibogPiB0ZWlcIDsKK+aJsyA+IGhhblwgOwor5omtID4ganV1XCA7CivmiaMgPiBrb3VcIDsKK+aJniA+IGthblwgOwor5ombID4ga291XCA7CivmiZQgPiBqb3VcIDsKK+aJkiA+IGhhaVwgOwor5omMID4gc2h1XCA7CivmiYMgPiBrZWlcIDsKK+aJgiA+IHRlblwgOwor5omBID4gaGVuXCA7CivmiL4gPiByZWlcIDsKK+aIvCA+IGJvdVwgOwor5oi5ID4gYWt1XCA7CivmiKkgPiBzZW5cIDsKK+aIpyA+IHNvdVwgOwor5oihID4ga2FuXCA7CivmiJQgPiBzYW5cIDsKK+aIjiA+IGp1dVwgOwor5oiHID4gdG91XCA7CivmiIMgPiB0b3VcIDsKK+aIgSA+IGRhblwgOwor5oe9ID4ga2FuXCA7Civmh7ogPiB6YW5cIDsKK+aHtiA+IHJhblwgOwor5oe0ID4gemFuXCA7Civmh60gPiBrb3VcIDsKK+aHrCA+IGtvdVwgOwor5oepID4geW91XCA7Civmh6MgPiBtb25cIDsKK+aHoiA+IHJhblwgOwor5oeeID4gYm91XCA7Civmh50gPiBnYWlcIDsKK+aHnCA+IGJvdVwgOwor5oeUID4gcmluXCA7Civmh40gPiByaW5cIDsKK+aHjCA+IGVraVwgOwor5oeLID4gYm91XCA7Civmh4ggPiBrYWlcIDsKK+aHhyA+IGtvblwgOwor5oeGID4gc291XCA7Civmh4IgPiB0b3VcIDsKK+aHgSA+IGtlblwgOwor5oeAID4gd2FpXCA7Civmhr4gPiBrYW5cIDsKK+aGvCA+IGtlaVwgOwor5oa5ID4gZG91XCA7CivmhrggPiBzZW5cIDsKK+aGsiA+IGtlblwgOwor5oarID4gYmluXCA7CivmhqogPiBrYW5cIDsKK+aGqCA+IGthblwgOwor5oalID4gcm91XCA7Civmhp0gPiB0YWlcIDsKK+aGmiA+IHRhblwgOwor5oaXID4gZ2luXCA7CivmhpMgPiBrZWlcIDsKK+aGkiA+IGthaVwgOwor5oaKID4gaGFpXCA7CivmhocgPiBrZWlcIDsKK+aGhCA+IGNoaVwgOwor5oaDID4gdG91XCA7CivmhoEgPiBzb3VcIDsKK+aFuyA+IGtlblwgOwor5oW4ID4gdGVpXCA7CivmhbcgPiBrb3VcIDsKK+aFtiA+IGtlaVwgOwor5oW1ID4geW91XCA7CivmhbMgPiBrYW5cIDsKK+aFsiA+IGJhblwgOwor5oWxID4gdGFuXCA7Civmha0gPiBnaW5cIDsKK+aFrCA+IGtpblwgOwor5oWnID4ga2VpXCA7CivmhaAgPiBnb3VcIDsKK+aFnyA+IGRvdVwgOwor5oWaID4gemFuXCA7CivmhZkgPiB6YW5cIDsKK+aFiSA+IGtpblwgOwor5oWGID4gdG91XCA7CivmhYUgPiBzb3VcIDsKK+aFgiA+IHlvdVwgOwor5oWBID4ga29uXCA7CivmhL8gPiBnZW5cIDsKK+aEuSA+IHlvdVwgOwor5oS3ID4ga2FpXCA7CivmhLQgPiBzb3VcIDsKK+aEsCA+IGthdVwgOwor5oSiID4gc2FpXCA7CivmhKEgPiBzb3VcIDsKK+aEniA+IHplblwgOwor5oSXID4gYm91XCA7CivmhJMgPiB0b3VcIDsKK+aEkiA+IGtlaVwgOwor5oSRID4geW91XCA7CivmhJAgPiBiZW5cIDsKK+aEjSA+IGJpblwgOwor5oSMID4ga2FuXCA7CivmhIYgPiBrZW5cIDsKK+aEgyA+IGtlblwgOwor5oO9ID4ga29uXCA7Civmg7wgPiBoZW5cIDsKK+aDuiA+IHNlaVwgOwor5oO4ID4ga2VpXCA7Civmg7YgPiBrb3VcIDsKK+aDtCA+IHp1aVwgOwor5oOlID4geW91XCA7Civmg6MgPiBzb3VcIDsKK+aDniA+IGtpblwgOwor5oObID4ga29uXCA7Civmg5ggPiBib3VcIDsKK+aDlCA+IHRhblwgOwor5oOTID4ga2VuXCA7Civmg48gPiByYW5cIDsKK+aDiyA+IHdhblwgOwor5oOJID4gc2VuXCA7Civmg4cgPiB0b25cIDsKK+aDgiA+IGthblwgOwor5oK+ID4ga291XCA7Civmgr0gPiBzZWlcIDsKK+aCuyA+IGtlaVwgOwor5oK3ID4gcmVpXCA7CivmgrAgPiBzb3VcIDsKK+aCqSA+IG5vdVwgOwor5oKkID4gc291XCA7Civmgp0gPiBrYWlcIDsKK+aCmyA+IHNlblwgOwor5oKXID4gYmFuXCA7CivmgpMgPiBrZW5cIDsKK+aCkiA+IHl1dVwgOwor5oKOID4ga291XCA7Civmgo0gPiBrYW5cIDsKK+aCjCA+IHRlaVwgOwor5oKLID4gcmluXCA7CivmgoggPiBrYWlcIDsKK+aCgyA+IGtvblwgOwor5oG/ID4geW91XCA7Civmgb4gPiBib3VcIDsKK+aBtSA+IGtlaVwgOwor5oGsID4gdGVuXCA7CivmgasgPiBkb3VcIDsKK+aBoyA+IHNoaVwgOwor5oGiID4ga2FpXCA7CivmgaEgPiByaW5cIDsKK+aBoCA+IGthaVwgOwor5oGdID4ga2FpXCA7CivmgZkgPiB5b3VcIDsKK+aBliA+IHNoaVwgOwor5oGSID4ga291XCA7CivmgYkgPiBzaGlcIDsKK+aBiCA+IGJvdVwgOwor5oGGID4ga291XCA7CivmgYIgPiBqdW5cIDsKK+aBgCA+IHNoaVwgOwor5oCxID4gc291XCA7CivmgKYgPiBob3VcIDsKK+aAnyA+IHRlaVwgOwor5oCcID4gcmVpXCA7CivmgJogPiBzaG9cIDsKK+aAlCA+IHNlaVwgOwor5oCTID4gZG91XCA7CivmgJAgPiBrb3VcIDsKK+aAjyA+IHlvdVwgOwor5oCHID4ga3lvXCA7Civlv7wgPiBrb3VcIDsKK+W/uyA+IGtpblwgOwor5b+6ID4ga2VuXCA7Civlv7YgPiBrb25cIDsKK+W/syA+IHRvblwgOwor5b+yID4gdGFpXCA7Civlv7AgPiBzdWlcIDsKK+W/riA+IHNoaVwgOwor5b+tID4gaGVuXCA7Civlv6kgPiBzb3VcIDsKK+W/qCA+IGdhblwgOwor5b+eID4gYmluXCA7Civlv50gPiB0ZW5cIDsKK+W/liA+IHNvblwgOwor5b+TID4ga2FuXCA7Civlv5AgPiBrdW5cIDsKK+W/iyA+IGthaVwgOwor5b+JID4gdG91XCA7Civlv4ggPiBqaW5cIDsKK+W+sCA+IHNlaVwgOwor5b6vID4ga2VpXCA7Civlvq0gPiB5b3VcIDsKK+W+rCA+IGhvdVwgOwor5b6oID4ga291XCA7CivlvqcgPiBoZW5cIDsKK+W+oCA+IHJhaVwgOwor5b6dID4gY2hpXCA7CivlvpkgPiBzaGlcIDsKK+W+mCA+IGhhaVwgOwor5b6WID4gc291XCA7CivlvpEgPiBrZWlcIDsKK+W+iSA+IHlvdVwgOwor5b6IID4ga29uXCA7CivlvoYgPiBzZWlcIDsKK+W+gSA+IHNlaVwgOwor5b2+ID4gcmVpXCA7Civlvb0gPiBjaGlcIDsKK+W9tyA+IGhvdVwgOwor5b2yID4gY2hpXCA7Civlva8gPiBoZXVcIDsKK+W9rSA+IGhvdVwgOwor5b2sID4gaGluXCA7CivlvacgPiBpa3VcIDsKK+W9piA+IGdlblwgOwor5b2lID4gZ2VuXCA7CivlvaQgPiB0b3VcIDsKK+W9oyA+IGJ1blwgOwor5b2hID4gc2FuXCA7CivlvZggPiB0ZWlcIDsKK+W9lyA+IHN1aVwgOwor5b2WID4gdGFuXCA7CivlvZEgPiBrZWlcIDsKK+W9kCA+IGtlaVwgOwor5b2OID4gd2FuXCA7CivlvYsgPiBrYXVcIDsKK+W9hyA+IHlvdVwgOwor5b2EID4ga291XCA7CivlvYEgPiBzZWlcIDsKK+W9gCA+IGtvdVwgOwor5by/ID4ga2VuXCA7CivlvL0gPiB5b3VcIDsKK+W8uSA+IGRhblwgOwor5by4ID4gaG91XCA7CivlvLQgPiB0b25cIDsKK+W8sCA+IHNvdVwgOwor5byvID4gd2FuXCA7CivlvK4gPiBrZW5cIDsKK+W8qCA+IHNldVwgOwor5bykID4gdGVpXCA7CivlvKIgPiB0b3VcIDsKK+W8miA+IHRhaVwgOwor5bySID4gc2hpXCA7CivlvJEgPiBzaGlcIDsKK+W8jiA+IHNhblwgOwor5byKID4gaGVpXCA7CivlvIkgPiBqb3VcIDsKK+W8iCA+IGVraVwgOwor5byGID4ga3lvXCA7CivlvIUgPiBodW5cIDsKK+W7vyA+IGp1dVwgOwor5bu9ID4ga2FpXCA7Civlu7wgPiBkYWlcIDsKK+W7tyA+IHRlaVwgOwor5bu1ID4ganVuXCA7Civlu7IgPiByZWlcIDsKK+W7sSA+IHlvdVwgOwor5buvID4gc2VuXCA7Civlu6wgPiByeW9cIDsKK+W7qiA+IHJpblwgOwor5bupID4gcmluXCA7Civlu6ggPiBrYWlcIDsKK+W7pSA+IGthaVwgOwor5bueID4ga2luXCA7Civlu50gPiBzaGlcIDsKK+W7myA+IHRlblwgOwor5buXID4gdGFpXCA7Civlu5QgPiByb3VcIDsKK+W7kiA+IGdvdVwgOwor5buRID4ga2luXCA7Civlu44gPiBrZWlcIDsKK+W7jCA+IGNoaVwgOwor5buHID4gcml1XCA7Civlu4YgPiBrYWlcIDsKK+W7hSA+IGFodVwgOwor5buBID4gc2hpXCA7Civlu4AgPiBzb3VcIDsKK+W6vSA+IGRvdVwgOwor5bq7ID4gc2hvXCA7CivlurYgPiBzaG9cIDsKK+W6siA+IHJhaVwgOwor5bqwID4gaGVpXCA7CivluqwgPiBib3VcIDsKK+W6qCA+IGtvdVwgOwor5bqkID4gY2hpXCA7CivluqMgPiB0ZXVcIDsKK+W6myA+IHNoaVwgOwor5bqOID4ga2FpXCA7Civluo0gPiBoYWlcIDsKK+W6iSA+IHRvblwgOwor5bqIID4ga2luXCA7Civlub8gPiBnZW5cIDsKK+W5uiA+IHlvdVwgOwor5bm3ID4gaGVpXCA7CivlubYgPiBoZWlcIDsKK+W5tSA+IGtlblwgOwor5bmxID4gcmFuXCA7CivlubAgPiBrZW5cIDsKK+W5riA+IGNodVwgOwor5bmrID4gaG91XCA7CivluaogPiBib3VcIDsKK+W5qSA+IGh1blwgOwor5bmoID4gc2VuXCA7CivluacgPiBzZXVcIDsKK+W5pCA+IGhlaVwgOwor5bmjID4gaGVpXCA7CivluaIgPiB0b3VcIDsKK+W5oSA+IGhhblwgOwor5bmdID4gc2VuXCA7CivluZwgPiBrZWlcIDsKK+W5miA+IGhvdVwgOwor5bmUID4gYmFuXCA7CivluZAgPiB0b3VcIDsKK+W5jSA+IHRvdVwgOwor5bmMID4ga291XCA7CivluYsgPiBoYW5cIDsKK+W5iiA+IGtvdVwgOwor5bmIID4gaGVpXCA7CivluYcgPiBob3VcIDsKK+W5hCA+IGFrdVwgOwor5bmAID4gdGVpXCA7CivluLUgPiB3YW5cIDsKK+W4siA+IGhlaVwgOwor5biuID4gaG91XCA7CivluKwgPiBrdW5cIDsKK+W4qSA+IHNldVwgOwor5bioID4gc2VpXCA7CivluKYgPiB0YWlcIDsKK+W4oyA+IGtlblwgOwor5bihID4gaGVpXCA7CivluKAgPiBnZWlcIDsKK+W4nyA+IGVraVwgOwor5biYID4gcmVuXCA7CivluJYgPiBqb3VcIDsKK+W4kiA+IHRhaVwgOwor5biOID4gdGFuXCA7CivluIsgPiBzaGlcIDsKK+W4hyA+IGRlblwgOwor5biEID4gdGVpXCA7CivluIAgPiBzb3VcIDsKK+W3uiA+IHNvblwgOwor5be5ID4ga2luXCA7Civlt7UgPiBzaGlcIDsKK+W3oCA+IGtlaVwgOwor5befID4ga291XCA7Civlt5wgPiBrYWlcIDsKK+W3myA+IHNlblwgOwor5beYID4gZ2VuXCA7Civlt5YgPiBnYW5cIDsKK+W3lCA+IHRlblwgOwor5beTID4gdGVuXCA7Civlt5IgPiByYW5cIDsKK+W3kSA+IHNhblwgOwor5bePID4ga2VuXCA7Civlt44gPiBkb3VcIDsKK+W3jCA+IGdhblwgOwor5beJID4gc2FuXCA7Civlt4YgPiBrb3VcIDsKK+W3gyA+IHJvdVwgOwor5beCID4gc3VpXCA7CivltrwgPiBzaG9cIDsKK+W2uiA+IHJlaVwgOwor5ba5ID4gdG91XCA7CivltrggPiBrb3VcIDsKK+W2tSA+IHNhaVwgOwor5bayID4ga2VpXCA7CivltrAgPiBrYWlcIDsKK+W2qSA+IGRhdVwgOwor5banID4gZWtpXCA7CivltqEgPiBrZWlcIDsKK+W2nyA+IHNvblwgOwor5badID4gdG91XCA7CivltpkgPiByaW5cIDsKK+W2lSA+IHNldVwgOwor5baUID4ga2luXCA7CivltowgPiB0b3VcIDsKK+W2iyA+IHRvdVwgOwor5baKID4gc3VpXCA7CivltokgPiBzdWlcIDsKK+W2hiA+IHNhdVwgOwor5baEID4gc2FuXCA7CivltoMgPiBzYW5cIDsKK+W1vyA+IHRlaVwgOwor5bW8ID4gc2FuXCA7CivltbogPiByZXVcIDsKK+W1tiA+IHRhb1wgOwor5bWxID4geW91XCA7CivltbAgPiBrZW5cIDsKK+W1rSA+IGhvdVwgOwor5bWsID4ga2FpXCA7CivltaogPiBrb3VcIDsKK+W1qSA+IHN1dVwgOwor5bWnID4gcml1XCA7CivltaQgPiBrZWlcIDsKK+W1oyA+IHRhdVwgOwor5bWiID4gc291XCA7CivltaAgPiBnZWlcIDsKK+W1lyA+IHNlaVwgOwor5bWVID4gc291XCA7CivltZMgPiBnYW5cIDsKK+W1kiA+IGdhblwgOwor5bWOID4gZ3V1XCA7CivltYkgPiB0ZWlcIDsKK+W1iCA+IGthblwgOwor5bWHID4ga2VpXCA7CivltYYgPiBrZWlcIDsKK+W1hSA+IGthblwgOwor5bWDID4gZ2VuXCA7CivltYEgPiBrYW5cIDsKK+W0vSA+IHNhaVwgOwor5bS8ID4gc2hpXCA7CivltLkgPiB0ZWlcIDsKK+W0uCA+IHRvblwgOwor5bS2ID4gaG91XCA7CivltLUgPiBzZXVcIDsKK+W0tCA+IHdhaVwgOwor5bSyID4ga291XCA7CivltKUgPiBoZWlcIDsKK+W0pCA+IGtvdVwgOwor5bSiID4gc291XCA7CivltKEgPiBrYW5cIDsKK+W0oCA+IHRvdVwgOwor5bSfID4gZ2luXCA7CivltJ0gPiBzYXVcIDsKK+W0mSA+IHJvblwgOwor5bSYID4gcm9uXCA7CivltJUgPiBnYWlcIDsKK+W0lCA+IHNhaVwgOwor5bSRID4ga29uXCA7CivltJAgPiBrb25cIDsKK+W0jyA+IGJpblwgOwor5bSNID4gcmFpXCA7CivltIcgPiBzdXVcIDsKK+W0hiA+IGtvdVwgOwor5bSEID4ga2VuXCA7CivltIEgPiBrYW5cIDsKK+WzuiA+IGtvdVwgOwor5bO4ID4gc2VpXCA7Civls7UgPiBrb3VcIDsKK+WztCA+IGtlblwgOwor5bOxID4gZG91XCA7Civls68gPiBob3VcIDsKK+WzriA+IGtpblwgOwor5bOfID4geW91XCA7Civls50gPiB0b3VcIDsKK+WznCA+IGtlaVwgOwor5bOYID4ga2FuXCA7Civls5UgPiBzaGlcIDsKK+WzkiA+IHRvdVwgOwor5bOQID4ga2FpXCA7Civls44gPiBnb25cIDsKK+WzhyA+IGtvdVwgOwor5bK+ID4gc2VuXCA7CivlsrogPiByZWlcIDsKK+WytyA+IGJpblwgOwor5bKyID4ga291XCA7CivlsrEgPiB0YWlcIDsKK+WysCA+IHlvdVwgOwor5bKtID4gcmVpXCA7CivlsqcgPiB0ZXVcIDsKK+WyoyA+IGtvdVwgOwor5bKgID4ga3lvXCA7Civlsp8gPiB5b3VcIDsKK+WylSA+IGthaVwgOwor5bKSID4ga2VuXCA7CivlsosgPiBnb3VcIDsKK+WyhyA+IGdvdVwgOwor5bKFID4gaGFuXCA7Civlsb0gPiBrYW5cIDsKK+WxuyA+IGppblwgOwor5bGzID4gc2VuXCA7Civlsa8gPiB0b25cIDsKK+WxpyA+IHRlaVwgOwor5bGjID4gc2hpXCA7CivlsZ8gPiB0ZWlcIDsKK+WxnCA+IHRlaVwgOwor5bGbID4gaGVpXCA7CivlsZogPiByb3VcIDsKK+WxliA+IHNlaVwgOwor5bGUID4gZGVpXCA7CivlsY4gPiBzaGlcIDsKK+WxhyA+IHRlblwgOwor5bC8ID4gYW1hXCA7CivlsLcgPiBrYW5cIDsKK+WwtiA+IGthblwgOwor5bC1ID4gdGFpXCA7CivlsLIgPiBrYW5cIDsKK+WwrCA+IGthaVwgOwor5bCoID4gYm91XCA7CivlsJ8gPiBzZW5cIDsKK+WwjCA+IHNodVwgOwor5bCCID4gc2VuXCA7Civlr70gPiByaW5cIDsKK+WvuSA+IHRhaVwgOwor5a+2ID4gaG91XCA7Civlr7MgPiBob3VcIDsKK+WvsSA+IGdlaVwgOwor5a+wID4ga2FuXCA7Civlr6wgPiBrYW5cIDsKK+WvqCA+IHNhaVwgOwor5a+cID4gbmVpXCA7Civlr5sgPiBrYW5cIDsKK+WvmiA+IGhvdVwgOwor5a+YID4gc2hpXCA7Civlr5cgPiBuZWlcIDsKK+WvlSA+IG5laVwgOwor5a+TID4gZ3V1XCA7Civlr48gPiBrYW5cIDsKK+WvjiA+IGhlaVwgOwor5a+NID4gbmVpXCA7Civlr4sgPiBrZW5cIDsKK+WviiA+IHRlaVwgOwor5a+HID4ga291XCA7Civlr4EgPiBzYW5cIDsKK+WvgCA+IHNhaVwgOwor5a68ID4ga291XCA7CivlrrogPiBrb3VcIDsKK+WusiA+IGhvdVwgOwor5a6vID4ga291XCA7Civlrq0gPiBrdW5cIDsKK+WurCA+IHNlaVwgOwor5a6pID4gc2hpXCA7CivlrqYgPiBrYW5cIDsKK+WupSA+IHl1dVwgOwor5a6WID4ga291XCA7CivlrpUgPiB0b3VcIDsKK+WulCA+IHNodVwgOwor5a6RID4gc2VpXCA7Civlro8gPiBrb3VcIDsKK+WuiyA+IHNvdVwgOwor5a6BID4gY2hvXCA7CivlroAgPiBiZW5cIDsKK+WtvyA+IHNhblwgOwor5a27ID4gZGFpXCA7CivlrbMgPiBzaGlcIDsKK+WtsSA+IHNlblwgOwor5a2vID4ga2FuXCA7Civlra4gPiBzb3VcIDsKK+WtqSA+IGthaVwgOwor5a2oID4gc2VuXCA7CivlrZ8gPiBtb3VcIDsKK+WtnSA+IGtvdVwgOwor5a2cID4gc2hpXCA7CivlrZYgPiBzaGlcIDsKK+WtlSA+IHlvdVwgOwor5a2NID4gZ2VuXCA7CivlrYwgPiByZW5cIDsKK+WtiCA+IHN1aVwgOwor5a2FID4gc2VuXCA7CivlrYMgPiBqb3VcIDsKK+WtgSA+IHJlaVwgOwor5a2AID4gc291XCA7CivlrL4gPiByYW5cIDsKK+WssiA+IGpvdVwgOwor5ayvID4gdGFpXCA7CivlrK0gPiBkYWlcIDsKK+WsrCA+IHNodVwgOwor5ayoID4gc2hpXCA7CivlrKMgPiB0YXVcIDsKK+WsoCA+IHNhblwgOwor5ayeID4gdG91XCA7CivlrJ0gPiBqb3VcIDsKK+WsmyA+IGtlblwgOwor5ayaID4gcmVuXCA7CivlrJcgPiBzZW5cIDsKK+WsliA+IGhlaVwgOwor5ayTID4ga2V1XCA7CivlrJAgPiBzZW5cIDsKK+WsjyA+IGhhblwgOwor5ayOID4gaGFuXCA7CivlrIsgPiBzZW5cIDsKK+WsiCA+IGRldVwgOwor5ayDID4gc2h1XCA7CivlrIEgPiB0b3VcIDsKK+WrvSA+IHJldVwgOwor5au7ID4ga2FuXCA7Civlq7ogPiBrYW5cIDsKK+WruSA+IGJhdVwgOwor5au4ID4gc2VuXCA7Civlq7YgPiBzZXVcIDsKK+WrrCA+IHNoYVwgOwor5auqID4gcmF1XCA7Civlq6kgPiBkb25cIDsKK+WrqCA+IGthblwgOwor5aumID4ga291XCA7Civlq6UgPiBzZW5cIDsKK+WrnSA+IGthdVwgOwor5auaID4gYmFuXCA7Civlq5kgPiBzZWJcIDsKK+WrmCA+IHJ1aVwgOwor5auQID4gam91XCA7Civlq48gPiByb3VcIDsKK+WrjSA+IHRhdVwgOwor5auLID4gam91XCA7Civlq4ggPiBzZXVcIDsKK+WrhyA+IGJlaVwgOwor5auGID4geW91XCA7Civlq4QgPiBnZW5cIDsKK+WqviA+IGtvdVwgOwor5aq7ID4gaGFuXCA7CivlqrkgPiByaXVcIDsKK+WquCA+IHNoaVwgOwor5aq2ID4gam91XCA7CivlqrUgPiB5b3VcIDsKK+WqsiA+IGhlaVwgOwor5aquID4gdG91XCA7Civlqq0gPiBzaHVcIDsKK+WqpyA+IGthaVwgOwor5aqlID4gaGVuXCA7CivlqqQgPiBzaGlcIDsKK+WqoiA+IGJvdVwgOwor5aqeID4gc2hpXCA7CivlqpwgPiB0ZWlcIDsKK+WqlyA+IGtlblwgOwor5aqUID4gYmVuXCA7CivlqpMgPiBrb3VcIDsKK+WqjyA+IHRhblwgOwor5aqMID4gYm91XCA7CivlqoogPiBzZW5cIDsKK+WpviA+IHRvdVwgOwor5am7ID4gZGFuXCA7CivlqbggPiB0b3VcIDsKK+WptyA+IHRlaVwgOwor5amwID4gdGVuXCA7CivlqaogPiByYW5cIDsKK+WpqSA+IGdlblwgOwor5amnID4gc2VpXCA7CivlqaUgPiBkb3VcIDsKK+WpoCA+IHdhblwgOwor5ameID4ga2VpXCA7CivlqZ0gPiB0ZW5cIDsKK+WpnCA+IGthblwgOwor5ambID4ga2VpXCA7CivlqZggPiBrZW5cIDsKK+WplyA+IGdlaVwgOwor5amWID4gdGVuXCA7CivlqZIgPiB0YW5cIDsKK+WpkSA+IHp1aVwgOwor5amHID4gc2FpXCA7CivlqYQgPiBob3VcIDsKK+WpgyA+IHNvdVwgOwor5amCID4gYmVuXCA7CivlqYEgPiByb3VcIDsKK+WoviA+IGdhaVwgOwor5ai5ID4ga2VuXCA7CivlqLYgPiBzaHVcIDsKK+WotSA+IHNodVwgOwor5aiuID4gZGVuXCA7CivlqKkgPiBiZW5cIDsKK+WoqCA+IGJhblwgOwor5ainID4gdGFpXCA7CivlqKQgPiBzb3VcIDsKK+WooyA+IHRlaVwgOwor5aifID4ga2VuXCA7CivlqJ4gPiBkYWlcIDsKK+WomiA+IG5hblwgOwor5aiZID4gZ291XCA7CivlqJcgPiB0ZWlcIDsKK+WojyA+IGJvdVwgOwor5aiNID4gc2VpXCA7CivlqIogPiBrZW5cIDsKK+WoiSA+IGhlaVwgOwor5ae+ID4gc2VuXCA7Civlp7wgPiBzaGlcIDsKK+WnuCA+IGtlblwgOwor5ae3ID4geXV1XCA7Civlp7UgPiBoYWlcIDsKK+WnsyA+IGJlaVwgOwor5aevID4ga291XCA7Civlp64gPiBrb3VcIDsKK+WnrSA+IGtlblwgOwor5aeqID4gbWVpXCA7Civlp6kgPiBkZW5cIDsKK+WnpyA+IGthblwgOwor5aemID4ga2FuXCA7Civlp6QgPiBrb3VcIDsKK+WnoyA+IGtvdVwgOwor5aeiID4ga2VuXCA7Civlp58gPiBrYWlcIDsKK+WnmyA+IHRvdVwgOwor5aeaID4geW91XCA7Civlp5kgPiBuaW5cIDsKK+WnmCA+IGhpblwgOwor5aeXID4gc2FuXCA7Civlp5YgPiBreW9cIDsKK+WnkiA+IHNoaVwgOwor5aeQID4gYW5lXCA7Civlp48gPiBiYW5cIDsKK+WnjSA+IHNhblwgOwor5aeMID4gemVuXCA7Civlp4ogPiBzaGlcIDsKK+WniCA+IHJlaVwgOwor5aeFID4gaGFuXCA7Civlp4QgPiBiaW5cIDsKK+WngyA+IHNlaVwgOwor5aa2ID4ga2VuXCA7CivlprUgPiB0b3VcIDsKK+WmsyA+IGRhaVwgOwor5aaoID4gYm91XCA7CivlpqcgPiBnZW5cIDsKK+WmpiA+IGhvdVwgOwor5aaiID4gaHVuXCA7CivlpqEgPiBraW5cIDsKK+WmoCA+IGRvdVwgOwor5aaeID4ganV1XCA7Civlpp0gPiBzb3VcIDsKK+WmmyA+IHNoaVwgOwor5aaaID4gaHV1XCA7CivlppcgPiBzZW5cIDsKK+WmjyA+IGJ1blwgOwor5aaOID4ga2FpXCA7Civlpo0gPiBrZW5cIDsKK+WmjCA+IHNlaVwgOwor5aaFID4ga291XCA7Civlpb8gPiBnYW5cIDsKK+WlviA+IHNlblwgOwor5aW7ID4gZGFuXCA7CivlpbkgPiBjaGlcIDsKK+WluCA+IGthblwgOwor5aW3ID4gc2VuXCA7CivlpbYgPiBkYWlcIDsKK+WltSA+IHRlaVwgOwor5aWyID4gc2hhXCA7CivlpbEgPiByZW5cIDsKK+WlqSA+IHJlblwgOwor5aWjID4gd2FuXCA7CivlpaEgPiBnYXVcIDsKK+WloCA+IHRlblwgOwor5aWfID4ga291XCA7CivlpZsgPiBrb3VcIDsKK+WlmiA+IGtlaVwgOwor5aWZID4gaG9uXCA7CivlpZggPiBqb3VcIDsKK+WllSA+IGVraVwgOwor5aWUID4gaG9uXCA7CivlpZIgPiBrYWlcIDsKK+WlkCA+IGthblwgOwor5aWOID4ga2VpXCA7CivlpYwgPiB0ZW5cIDsKK+WlhiA+IGtlblwgOwor5aWFID4gaG91XCA7CivlpYMgPiB0ZWlcIDsKK+WlgCA+IGJvdVwgOwor5aSzID4gdGFpXCA7CivlpLIgPiB0b3VcIDsKK+WksCA+IGtvdVwgOwor5aSvID4ga291XCA7CivlpK0gPiB5b3VcIDsKK+WkoyA+IGJvdVwgOwor5aSgID4ga291XCA7CivlpJ0gPiBzZWlcIDsKK+WkmCA+IGJvdVwgOwor5aSSID4gZG91XCA7CivlpJAgPiBrZWlcIDsKK+WkiiA+IHN1aVwgOwor5aSGID4gaG91XCA7CivlpIUgPiBrb3VcIDsKK+WkgiA+IGNoaVwgOwor5aO+ID4gYm91XCA7Civlo7wgPiBrb25cIDsKK+WjuCA+IGtvblwgOwor5aO0ID4gc2h1XCA7Civlo64gPiBzb3VcIDsKK+WjqCA+IHJhaVwgOwor5aOnID4gZ2FuXCA7Civlo6UgPiB0ZW5cIDsKK+WjpCA+IGpvdVwgOwor5aOjID4gcmluXCA7Civlo6AgPiByb3VcIDsKK+WjnyA+IG9rYVwgOwor5aOcID4gdGFuXCA7Civlo5kgPiBrb3VcIDsKK+WjmCA+IHJ1aVwgOwor5aOWID4gemVuXCA7Civlo5UgPiBnb3VcIDsKK+WjlCA+IHRhdVwgOwor5aOQID4gc2hpXCA7Civlo48gPiBrYW5cIDsKK+WjjiA+IGtlblwgOwor5aONID4gemFuXCA7Civlo4wgPiBqb3VcIDsKK+WjiSA+IGt5b1wgOwor5aOFID4geW91XCA7Civlo4IgPiB0ZW5cIDsKK+WivyA+IGVraVwgOwor5aK+ID4ga29uXCA7Civlor0gPiBrYXVcIDsKK+WiuCA+IHNob1wgOwor5aKzID4gZnVuXCA7CivlorEgPiB0b3VcIDsKK+WirSA+IHNlaVwgOwor5aKsID4gY2hpXCA7CivloqkgPiB0b25cIDsKK+WipiA+IGhhblwgOwor5aKlID4gdG91XCA7CivloqEgPiBzZW5cIDsKK+WioCA+IHNlblwgOwor5aKfID4ga3lvXCA7Civlop4gPiB6b3VcIDsKK+WinSA+IGtvdVwgOwor5aKWID4gdG91XCA7CivlopQgPiBzYWlcIDsKK+WikCA+IGtpblwgOwor5aKKID4gdGVuXCA7CivlookgPiB5b3VcIDsKK+WiiCA+IGthblwgOwor5aKFID4gc2hvXCA7CivlooEgPiBiYW5cIDsKK+WigCA+IGNoaVwgOwor5aG/ID4gcm91XCA7Civlob0gPiBzYXVcIDsKK+WhvCA+IHNlblwgOwor5aG6ID4gYmFpXCA7CivlobkgPiB6YW5cIDsKK+WhtCA+IGhvdVwgOwor5aGyID4gam91XCA7CivlobAgPiBhbWFcIDsKK+WhqyA+IHRlblwgOwor5aGkID4ga2VuXCA7CivloaMgPiB0ZWlcIDsKK+WhoSA+IHRlblwgOwor5aGfID4gc291XCA7CivloZ0gPiBoYXVcIDsKK+WhnCA+IGhvdVwgOwor5aGYID4gdG91XCA7CivloZIgPiBzaGlcIDsKK+WhjyA+IGthaVwgOwor5aGOID4geW91XCA7CivloYwgPiB0b3VcIDsKK+WhgSA+IHJ1aVwgOwor5aC/ID4ga2FuXCA7CivloL0gPiBrb3VcIDsKK+WgvCA+IGtvdVwgOwor5aC6ID4ga2FpXCA7CivloK0gPiBrYXVcIDsKK+WgqSA+IGtvdVwgOwor5aCnID4gemVuXCA7CivloKYgPiBrYWlcIDsKK+WgpSA+IGJvdVwgOwor5aChID4gaG91XCA7CivloKAgPiBrb3VcIDsKK+WgnyA+IHRlblwgOwor5aCeID4gdGV1XCA7CivloJwgPiByZW5cIDsKK+WgiyA+IGhvdVwgOwor5aCJID4gaWt1XCA7CivloIggPiBrb3VcIDsKK+WghyA+IGtpblwgOwor5aCEID4gZ2VuXCA7CivloIMgPiBrb25cIDsKK+WfvyA+IGRlaVwgOwor5Z++ID4gc2h1XCA7Civln70gPiBzb3VcIDsKK+WfuSA+IGJhaVwgOwor5Z+4ID4gZWtpXCA7Civln7YgPiBnZWlcIDsKK+WfsyA+IGthblwgOwor5Z+yID4gaG91XCA7Civln7AgPiBzYWlcIDsKK+WfriA+IHRhblwgOwor5Z+tID4gdGFpXCA7Civln6wgPiB0b3VcIDsKK+WfqSA+IHNhdVwgOwor5Z+mID4gd2FuXCA7Civln6UgPiBzZWlcIDsKK+WfoyA+IHNhaVwgOwor5Z+iID4ga2VuXCA7Civln58gPiBpa2lcIDsKK+WfniA+IHRlaVwgOwor5Z+dID4gdGVuXCA7Civln5wgPiBzaG9cIDsKK+WflSA+IHRlaVwgOwor5Z+PID4gc2VuXCA7Civln4wgPiByb3VcIDsKK+WfhyA+IHlvdVwgOwor5Z+EID4gaG91XCA7Civln4IgPiBrYXVcIDsKK+WfgCA+IHN1aVwgOwor5Z6/ID4gc2hvXCA7Civlnr4gPiBrYW5cIDsKK+WevSA+IGdpblwgOwor5Z68ID4gZWtpXCA7CivlnrsgPiBoYWlcIDsKK+WeuSA+IGhvdVwgOwor5Z64ID4ga2FuXCA7CivlnrYgPiBzZWlcIDsKK+WesCA+IHRhb1wgOwor5Z6pID4gc2VpXCA7CivlnqggPiBzaHVcIDsKK+WepyA+IGtlaVwgOwor5Z6lID4ga2V1XCA7CivlnqAgPiBnaW5cIDsKK+WenyA+IHlvdVwgOwor5Z6aID4gZ2V1XCA7CivlnpkgPiBrdXVcIDsKK+WelyA+IHRldVwgOwor5Z6VID4ga291XCA7CivlnpMgPiBnYWlcIDsKK+WekCA+IHNoaVwgOwor5Z6MID4gdG91XCA7CivlnokgPiBob3VcIDsKK+WeiCA+IHRhaVwgOwor5Z6BID4gY2hpXCA7Civlnb4gPiBjaG9cIDsKK+WdvSA+IHJlaVwgOwor5Z27ID4gY2hpXCA7CivlnbAgPiBrZWlcIDsKK+WdriA+IGRhaVwgOwor5Z2tID4gZGVpXCA7CivlnasgPiB0ZW5cIDsKK+WdqSA+IGthblwgOwor5Z2lID4gc2hvXCA7CivlnaQgPiBrb25cIDsKK+WdoiA+IGhhblwgOwor5Z2aID4ga2VuXCA7CivlnZkgPiBrZWlcIDsKK+WdlyA+IGthaVwgOwor5Z2RID4ga291XCA7CivlnY8gPiBoYWlcIDsKK+WdjiA+IGthblwgOwor5Z2NID4gdGFuXCA7CivlnYwgPiBob25cIDsKK+WdiyA+IGh1blwgOwor5Z2JID4gdG9uXCA7CivlnYYgPiBiYWlcIDsKK+WdhSA+IGtpblwgOwor5Z2BID4gc2hpXCA7CivlnYAgPiBzaGlcIDsKK+WcrSA+IGtlaVwgOwor5ZymID4gaXJpXCA7CivlnKIgPiB0ZWlcIDsKK+WcniA+IHJhblwgOwor5ZydID4gcmFuXCA7CivlnJwgPiBrYW5cIDsKK+WcmyA+IGVraVwgOwor5ZyaID4ga2FpXCA7CivlnIwgPiBzZW5cIDsKK+WciiA+IHNlaVwgOwor5ZyJID4gZ3lvXCA7CivlnIggPiBrZW5cIDsKK+WchyA+IHJpblwgOwor5ZyFID4ga2FuXCA7CivlnIQgPiBneW9cIDsKK+WcgiA+IGtvblwgOwor5ZyBID4gZ2luXCA7Civlm78gPiB5dXVcIDsKK+WbuSA+IHJlaVwgOwor5Zu3ID4ga2luXCA7Civlm7EgPiBzb3VcIDsKK+WbrSA+IGdhblwgOwor5ZusID4ga2FpXCA7Civlm6ogPiBzb3VcIDsKK+WbqCA+IGhlblwgOwor5ZunID4ga2VpXCA7Civlm6UgPiBrb3VcIDsKK+WbpCA+IHRvblwgOwor5ZuhID4ganV1XCA7Civlm50gPiBrZW5cIDsKK+WbnCA+IGppblwgOwor5ZuYID4ga2FpXCA7Civlm5QgPiBkb3VcIDsKK+WbjyA+IGthblwgOwor5ZuKID4gbm91XCA7Civlm4ggPiBnZWlcIDsKK+WbhiA+IHRhaVwgOwor5ZuFID4gdGVuXCA7Civlm4MgPiBzb3VcIDsKK+WbgiA+IGdvdVwgOwor5ZuAID4gdGVuXCA7Civlmr4gPiBrYW5cIDsKK+WauyA+IGdvdVwgOwor5Zq3ID4gamF1XCA7CivlmrUgPiBzYW5cIDsKK+WariA+IGtvdVwgOwor5ZqsID4gaGluXCA7CivlmqogPiB0YW5cIDsKK+WaqCA+IHJvdVwgOwor5ZqiID4gbm91XCA7CivlmpogPiBnaW5cIDsKK+WamSA+IGdvdVwgOwor5ZqUID4gdGVpXCA7Civlmo4gPiBrYXVcIDsKK+WajCA+IHNlaVwgOwor5ZqIID4geW91XCA7CivlmoYgPiBrb3VcIDsKK+WagyA+IHRvdVwgOwor5ZqCID4gcmFuXCA7CivlmoAgPiBkZWlcIDsKK+WZvyA+IHN1aVwgOwor5Zm5ID4gdG91XCA7CivlmbggPiB0b25cIDsKK+WZtyA+IGtpblwgOwor5Zm1ID4gZG91XCA7CivlmbQgPiBmdW5cIDsKK+WZsCA+IHlvdVwgOwor5ZmsID4gemVpXCA7CivlmaUgPiBkb3VcIDsKK+WZpCA+IGtpblwgOwor5ZmjID4gY2h1XCA7CivlmaIgPiBpa3VcIDsKK+WZoSA+IHNlblwgOwor5ZmfID4geW91XCA7CivlmZ4gPiBnZW5cIDsKK+WZmSA+IGtpblwgOwor5ZmUID4gdG91XCA7CivlmZMgPiBreW9cIDsKK+WZjSA+IHNldVwgOwor5ZmLID4gdG9uXCA7CivlmYkgPiB0YW5cIDsKK+WZhyA+IHRvdVwgOwor5ZmGID4gc291XCA7CivlmYMgPiBoYW5cIDsKK+WZgCA+IHNvblwgOwor5Zi+ID4gdGFuXCA7CivlmL0gPiB0YW5cIDsKK+WYuSA+IHJldVwgOwor5Zi3ID4ga291XCA7CivlmLYgPiBzZWlcIDsKK+WYtSA+IGtldVwgOwor5ZiuID4gdG91XCA7CivlmK0gPiBob3VcIDsKK+WYrCA+IHNhaVwgOwor5ZirID4gZGFtXCA7CivlmKogPiBiYWlcIDsKK+WYlSA+IGtlblwgOwor5ZiSID4ga2VpXCA7CivlmJAgPiBoYXVcIDsKK+WYjSA+IHJvdVwgOwor5ZiMID4gaGV1XCA7CivlmIogPiBnYWlcIDsKK+WYiCA+IHNhdVwgOwor5ZiFID4ga2FpXCA7CivlmIQgPiBrZXVcIDsKK+WXvyA+IHRhblwgOwor5Ze+ID4gc291XCA7Civll7sgPiBzaGFcIDsKK+WXuiA+IHN1aVwgOwor5Ze5ID4gcmVuXCA7Civll7ggPiBnb3VcIDsKK+WXtyA+IGdvdVwgOwor5ZeoID4ga2FpXCA7Civll6UgPiBrb3VcIDsKK+WXpCA+IHNoaVwgOwor5ZehID4gcm91XCA7Civll54gPiBzaGlcIDsKK+WXmyA+IGtlblwgOwor5ZeZID4gaG91XCA7Civll5ggPiBrZWlcIDsKK+WXkyA+IHNvdVwgOwor5ZeSID4gdG91XCA7Civll4wgPiBla2lcIDsKK+WXiiA+IGtvdVwgOwor5ZeIID4geW91XCA7Civll4MgPiBrb3VcIDsKK+WXgSA+IHRlaVwgOwor5Za/ID4gc291XCA7Civllq0gPiBnZW5cIDsKK+WWpiA+IGpvdVwgOwor5ZakID4ga291XCA7CivllpsgPiBrYW5cIDsKK+WWmSA+IGthaVwgOwor5ZaXID4gZ2luXCA7CivllpUgPiBiZW5cIDsKK+WWlCA+IGFrdVwgOwor5ZaSID4gc2FuXCA7Civllo8gPiBzaGFcIDsKK+WWjSA+IHNhaVwgOwor5ZaKID4ga2FuXCA7CivlloggPiBrYWlcIDsKK+WWgyA+IG5hblwgOwor5ZW/ID4gdGFuXCA7Civllb0gPiBnYW5cIDsKK+WVuyA+IHNoaVwgOwor5ZW0ID4gdGFuXCA7Civlla4gPiBnb3VcIDsKK+WVpSA+IHNoYVwgOwor5ZWhID4gaGFpXCA7CivllZ8gPiBrZWlcIDsKK+WVmyA+IHNhaVwgOwor5ZWZID4gc2hpXCA7CivllZcgPiB0YW5cIDsKK+WVliA+IHRhblwgOwor5ZWVID4gdG91XCA7CivllZQgPiBrZWlcIDsKK+WVkyA+IGtlaVwgOwor5ZWRID4gc291XCA7CivllZAgPiBzYWlcIDsKK+WVjSA+IHRvblwgOwor5ZWMID4ga291XCA7CivllYkgPiByYW5cIDsKK+WViCA+IGtvdVwgOwor5ZWBID4gdG91XCA7CivllYAgPiBnYWlcIDsKK+WUuyA+IHJhaVwgOwor5ZS2ID4gc2hhXCA7CivllLMgPiByZWlcIDsKK+WUqyA+IGdpblwgOwor5ZSqID4gaG91XCA7CivllKQgPiBrYW5cIDsKK+WUnSA+IGtvdVwgOwor5ZSYID4ga2VpXCA7CivllJcgPiB0b3VcIDsKK+WUlSA+IHNvdVwgOwor5ZSRID4gemVpXCA7CivllI0gPiBrYW5cIDsKK+WUjCA+IHNlblwgOwor5ZSJID4ga2FpXCA7CivllIUgPiBrYW5cIDsKK+WUhCA+IHV0YVwgOwor5ZSBID4gZ2VuXCA7Civlk70gPiBrb3VcIDsKK+WTvCA+IGtvdVwgOwor5ZO7ID4ga2FuXCA7Civlk7ggPiBzYWlcIDsKK+WTsCA+IHJvdVwgOwor5ZOvID4ga2VuXCA7Civlk64gPiBrb3VcIDsKK+WTpCA+IGJvdVwgOwor5ZOiID4gcm91XCA7Civlk6AgPiBrb3VcIDsKK+WTjyA+IGtvblwgOwor5ZOOID4gZ2FpXCA7Civlk4ogPiBpa3VcIDsKK+WTiCA+IGdvdVwgOwor5ZOGID4gc2hpXCA7Civlk4UgPiBrb3VcIDsKK+WThCA+IGtvdVwgOwor5ZODID4gdG91XCA7Civlkr4gPiByb3VcIDsKK+WSuiA+IGtlblwgOwor5ZK4ID4ga2FuXCA7CivlkrcgPiB0YXVcIDsKK+WStSA+IGt1dVwgOwor5ZK0ID4ga2FpXCA7Civlkq4gPiB0b3VcIDsKK+WSqyA+IHNoaVwgOwor5ZKoID4gc2hpXCA7CivlkqMgPiBrb3VcIDsKK+WSlCA+IHJvdVwgOwor5ZKSID4gc2h1XCA7Civlko0gPiBrYWlcIDsKK+WShiA+IGhvdVwgOwor5ZKFID4gdG91XCA7CivlkoIgPiBzb3VcIDsKK+WSgSA+IGthblwgOwor5ZG3ID4ga291XCA7CivlkbIgPiBzaGlcIDsKK+WRsCA+IHNoaVwgOwor5ZGvID4gaGVpXCA7CivlkakgPiBzaGlcIDsKK+WRpyA+IHRlaVwgOwor5ZGlID4gemVuXCA7CivlkaQgPiByZWlcIDsKK+WRoyA+IGJvdVwgOwor5ZGhID4gYnVuXCA7CivlkaAgPiBob25cIDsKK+WRniA+IHNoaVwgOwor5ZGIID4gdGVpXCA7CivlkYcgPiBrZWlcIDsKK+WRhSA+IGJhaVwgOwor5ZGDID4gYWt1XCA7CivlkYEgPiBraW5cIDsKK+WQvCA+IGtvdVwgOwor5ZC6ID4gdG91XCA7CivlkLEgPiBzaGlcIDsKK+WQsCA+IGtvdVwgOwor5ZCvID4ga2VpXCA7CivlkK4gPiBzZW5cIDsKK+WQrSA+IGtvdVwgOwor5ZCsID4ga2luXCA7CivlkKogPiBndXVcIDsKK+WQqSA+IGZ1blwgOwor5ZCoID4gdG9uXCA7CivlkKUgPiBob3VcIDsKK+WQpCA+IGthaVwgOwor5ZCgID4gaGFpXCA7CivlkJ8gPiBnaW5cIDsKK+WQniA+IGRvblwgOwor5ZCZID4ga3V1XCA7CivlkJggPiBnb3VcIDsKK+WQlSA+IHJ5b1wgOwor5ZCGID4geW91XCA7CivlkIUgPiB0ZW5cIDsKK+WQgiA+IGJvdVwgOwor5Y+3ID4gZ291XCA7Civlj64gPiB0ZWlcIDsKK+WPqCA+IHRvdVwgOwor5Y+mID4gcmVpXCA7Civlj58gPiBzb3VcIDsKK+WPnSA+IGtvdVwgOwor5Y+bID4gaGFuXCA7Civlj5ggPiBoZW5cIDsKK+WPkyA+IHNoaVwgOwor5Y+PID4ga2FpXCA7Civlj4cgPiB0YWlcIDsKK+WPhSA+IHNhblwgOwor5Y+EID4gc2FuXCA7Civlj4EgPiBzYW5cIDsKK+WPgCA+IHNlblwgOwor5Y69ID4gcnVpXCA7CivljrogPiBreW9cIDsKK+WOuSA+IGppdVwgOwor5Y64ID4gcmluXCA7CivljrcgPiBrb3VcIDsKK+WOtiA+IHNoaVwgOwor5Y61ID4gZ2VuXCA7CivljrIgPiByZWlcIDsKK+WOriA+IHNoaVwgOwor5Y6rID4gZ291XCA7CivljqogPiBraW5cIDsKK+WOpyA+IHRlblwgOwor5Y6hID4gZ2VuXCA7CivljpwgPiBzaGlcIDsKK+WOmSA+IHNoYVwgOwor5Y6XID4gdGVpXCA7CivljpYgPiBib3VcIDsKK+WOkyA+IGdhaVwgOwor5Y6OID4gc2hpXCA7CivljokgPiByZWlcIDsKK+WOiCA+IGthblwgOwor5Y6DID4gc2VuXCA7CivljoIgPiBrYW5cIDsKK+WNuiA+IGtpblwgOwor5Y2vID4gYm91XCA7Civlja4gPiBzaGlcIDsKK+WNrCA+IGdhdVwgOwor5Y2lID4gc2VpXCA7CivljaQgPiBzZWlcIDsKK+WNoyA+IHl1dVwgOwor5Y2eID4gaGVuXCA7CivljZ0gPiBrYW5cIDsKK+WNlSA+IHRhblwgOwor5Y2QID4gYmFuXCA7CivljYsgPiBzZWlcIDsKK+WNhSA+IHNvdVwgOwor5Y2EID4ganV1XCA7CivljL4gPiBoZW5cIDsKK+WMuCA+IGtlaVwgOwor5Yy3ID4ga3lvXCA7CivljLQgPiBzYW5cIDsKK+WMsyA+IHJlblwgOwor5YyyID4gcmVuXCA7CivljLAgPiB0YW5cIDsKK+WMryA+IHdhaVwgOwor5YyoID4gem91XCA7CivljKUgPiBoZW5cIDsKK+WMnyA+IGtvdVwgOwor5YydID4gc291XCA7CivljJggPiBkb3VcIDsKK+WMkiA+IHRvdVwgOwor5YyPID4gaG91XCA7CivljIwgPiBrb3VcIDsKK+WMiyA+IHRvdVwgOwor5YyEID4ga2FpXCA7Civli70gPiBidW5cIDsKK+WLuSA+IGhvdVwgOwor5Yu3ID4gam91XCA7Civli7UgPiByZWlcIDsKK+WLtCA+IHJ5b1wgOwor5YuzID4ga3VuXCA7Civli7IgPiBrdW5cIDsKK+WLsSA+IGJhaVwgOwor5YuvID4gdGFuXCA7Civli6wgPiBrZW5cIDsKK+WLqyA+IGhhblwgOwor5YuoID4geW91XCA7Civli6YgPiBzb3VcIDsKK+WLoSA+IGhldVwgOwor5YubID4ga3VuXCA7Civli5cgPiBib3VcIDsKK+WLlCA+IGJlblwgOwor5YuTID4ga2FpXCA7Civli5EgPiByYWlcIDsKK+WLkCA+IGJhdVwgOwor5YuPID4gaG91XCA7Civli40gPiBrZWlcIDsKK+WLjCA+IGtlblwgOwor5YuIID4geW91XCA7Civli4YgPiByb3VcIDsKK+WLhCA+IGJpblwgOwor5YuCID4ga291XCA7Civli4EgPiBrZWlcIDsKK+WKvyA+IHNlaVwgOwor5Yq+ID4gZ2FpXCA7CivlirogPiBib3VcIDsKK+WKtyA+IHlvdVwgOwor5Yq2ID4ga291XCA7CivlirUgPiBrZW5cIDsKK+WKsyA+IHJvdVwgOwor5YqyID4ga2VpXCA7Civliq8gPiBzaG9cIDsKK+WKpyA+IHNoaVwgOwor5YqlID4ga291XCA7CivliqQgPiBraW5cIDsKK+WKniA+IGhlblwgOwor5YqdID4ga2FuXCA7CivlipcgPiBzYW5cIDsKK+WKliA+IHNhblwgOwor5YqUID4ga2VuXCA7CivlipIgPiBrZW5cIDsKK+WKkSA+IHphaVwgOwor5YqOID4ga2VuXCA7CivliowgPiBrZWlcIDsKK+WKiiA+IGthaVwgOwor5YqGID4gcmVuXCA7Civlib8gPiBzb3VcIDsKK+WJvCA+IHNhblwgOwor5Ym7ID4gaHV1XCA7CivlibggPiB0YW5cIDsKK+WJtyA+IHNhblwgOwor5Ym0ID4gZ2FpXCA7CivlibMgPiB0b3VcIDsKK+WJsSA+IGtlblwgOwor5YmwID4gam91XCA7Civlia0gPiBva3VcIDsKK+WJrCA+IHRhblwgOwor5YmqID4gc2VuXCA7CivliakgPiBqb3VcIDsKK+WJpCA+IHphaVwgOwor5YmgID4ga2VpXCA7CivliZwgPiB3YW5cIDsKK+WJmiA+IHNoaVwgOwor5YmZID4gc291XCA7CivliZcgPiBzYW5cIDsKK+WJjyA+IHNvdVwgOwor5YmFID4gcm91XCA7CivliYQgPiBrZWlcIDsKK+WIuCA+IGtlblwgOwor5YiyID4ga2VpXCA7CivliLEgPiBzb3VcIDsKK+WIrCA+IHNhblwgOwor5YiqID4gc2FuXCA7CivliKggPiBob3VcIDsKK+WIpyA+IGdvdVwgOwor5YiiID4gcmVpXCA7CivliKEgPiBiaW5cIDsKK+WIoCA+IHNhblwgOwor5YieID4gc2hvXCA7CivliJMgPiBndW5cIDsKK+WIkCA+IHRhblwgOwor5YiOID4gZnVuXCA7CivliIwgPiBzb25cIDsKK+WIiyA+IHNlblwgOwor5YiFID4gc291XCA7CivliIQgPiBqaW5cIDsKK+WIgiA+IHRhdVwgOwor5YiBID4gdGV1XCA7Civlh74gPiBrYW5cIDsKK+WHtyA+IGthaVwgOwor5Ye1ID4ga2FuXCA7Civlh7MgPiB0b3VcIDsKK+WHsiA+IGthblwgOwor5YexID4gZ2FpXCA7Civlh7AgPiBrb3VcIDsKK+WHriA+IGZ1dVwgOwor5YetID4gaGVpXCA7Civlh6ggPiBmdXVcIDsKK+WHpSA+IGt5b1wgOwor5YekID4gaG91XCA7Civlh6MgPiBoYW5cIDsKK+WHoiA+IGJvblwgOwor5YecID4gcmluXCA7Civlh5sgPiByaW5cIDsKK+WHmCA+IHNoaVwgOwor5YeXID4gc2FpXCA7Civlh5YgPiBqdW5cIDsKK+WHlSA+IGJlaVwgOwor5YeUID4gc2F1XCA7Civlh5EgPiBzb3VcIDsKK+WHjyA+IGdlblwgOwor5YeKID4gc2VpXCA7Civlh4ggPiBzb3VcIDsKK+WHhiA+IGp1blwgOwor5YeCID4gYmFpXCA7Civlhr8gPiBzZW5cIDsKK+WGuiA+IGJpblwgOwor5Ya4ID4gaGFuXCA7Civlhq0gPiB0YWlcIDsKK+WGqSA+IHNoYVwgOwor5YamID4ga291XCA7CivlhqUgPiBtZWlcIDsKK+WGoyA+IHNodVwgOwor5YahID4gYm91XCA7CivlhpUgPiBiZW5cIDsKK+WGkyA+IGtvdVwgOwor5YaQID4gYm91XCA7Civlho8gPiBrZWlcIDsKK+WGiyA+IGtlaVwgOwor5YaJID4gbmVuXCA7CivlhoQgPiB6ZW5cIDsKK+WGgyA+IGJvdVwgOwor5YaCID4ga2VpXCA7Civlha4gPiBrZWlcIDsKK+WFpyA+IGRhaVwgOwor5YWmID4gYm91XCA7CivlhaQgPiBrb3VcIDsKK+WFmCA+IHNoaVwgOwor5YWVID4gc2hpXCA7CivlhYogPiB0YWlcIDsKK+WEvyA+IGppblwgOwor5YS9ID4gcmFpXCA7CivlhLwgPiBnZW5cIDsKK+WEuyA+IHRvdVwgOwor5YS5ID4gc2FuXCA7CivlhLcgPiByZWlcIDsKK+WEsyA+IHNhblwgOwor5YSxID4gcm91XCA7CivlhK8gPiB0b3VcIDsKK+WEqSA+IHNoaVwgOwor5YSnID4gc2FuXCA7CivlhKUgPiBpa3VcIDsKK+WEpCA+IGhvdVwgOwor5YSjID4ga291XCA7CivlhKIgPiByeW9cIDsKK+WEoSA+IHJhaVwgOwor5YSdID4ga2VpXCA7CivlhJwgPiBkYXVcIDsKK+WEmiA+IGJvdVwgOwor5YSZID4ga2VuXCA7CivlhJYgPiByYW5cIDsKK+WElSA+IHNlaVwgOwor5YSTID4gdGFpXCA7CivlhJEgPiBnYW5cIDsKK+WEkCA+IGhpblwgOwor5YSOID4gc2FpXCA7CivlhIwgPiBrZXVcIDsKK+WEiyA+IHRhblwgOwor5YSKID4gc2hvXCA7CivlhIkgPiBrZW5cIDsKK+WEiCA+IGthaVwgOwor5YSHID4ga2VuXCA7CivlhIYgPiBrZWlcIDsKK+WEhSA+IHRvdVwgOwor5YSDID4gc2VuXCA7CivlhIIgPiBkb3VcIDsKK+WDvyA+IHNoaVwgOwor5YO8ID4gaG91XCA7Civlg7ggPiBraW5cIDsKK+WDtiA+IGJpblwgOwor5YOvID4gcmluXCA7Civlg64gPiBkb3VcIDsKK+WDrSA+IHNlblwgOwor5YOsID4gc2V1XCA7Civlg6kgPiBrYW5cIDsKK+WDqCA+IGh1blwgOwor5YOkID4gdGFuXCA7Civlg6MgPiBzZW5cIDsKK+WDoiA+IHNlblwgOwor5YOgID4gZmFuXCA7Civlg50gPiBzYW5cIDsKK+WDnCA+IHRvdVwgOwor5YOZID4ga291XCA7Civlg5cgPiByYXVcIDsKK+WDlCA+IHNvblwgOwor5YOTID4gdGFpXCA7Civlg5AgPiBzZW5cIDsKK+WDjiA+IHNlblwgOwor5YOMID4geW91XCA7Civlg4sgPiB0YW5cIDsKK+WDiiA+IHNlblwgOwor5YOJID4gc2VuXCA7Civlg4ggPiBiYW5cIDsKK+WDhiA+IHJlblwgOwor5YOEID4gaGV1XCA7Civlg4IgPiByb3VcIDsKK+WDgCA+IHRlaVwgOwor5YK6ID4gdGVpXCA7CivlgrggPiBzYXVcIDsKK+WCtSA+IHNhaVwgOwor5YKyID4gZ291XCA7CivlgrAgPiBob3VcIDsKK+WCryA+IHNvdVwgOwor5YKuID4gc291XCA7Civlgq0gPiB5b3VcIDsKK+WCqiA+IHNhblwgOwor5YKkID4gc2FpXCA7CivlgqEgPiBoZWlcIDsKK+WCnSA+IHRhblwgOwor5YKbID4geW91XCA7CivlgpogPiBrb3VcIDsKK+WCliA+IHNhdVwgOwor5YKUID4ga2VuXCA7CivlgpMgPiBzZW5cIDsKK+WCkiA+IGtlaVwgOwor5YKQID4ga291XCA7Civlgo8gPiB0b3VcIDsKK+WCjiA+IHRlblwgOwor5YKLID4ga2F1XCA7CivlgocgPiBqb3VcIDsKK+WChiA+IGdlblwgOwor5YKCID4gY2hpXCA7CivlgoEgPiBzb3VcIDsKK+WCgCA+IGthaVwgOwor5YG7ID4gcm91XCA7CivlgbogPiBzYW5cIDsKK+WBuCA+IHRvdVwgOwor5YGzID4gdGFuXCA7CivlgbIgPiBzaGlcIDsKK+WBrSA+IGJlblwgOwor5YGsID4gc291XCA7CivlgasgPiBjaGlcIDsKK+WBqSA+IGh1dVwgOwor5YGoID4gc2hpXCA7CivlgaYgPiBzaG9cIDsKK+WBoiA+IHNldVwgOwor5YGhID4gdGFuXCA7CivlgZ4gPiB5b3VcIDsKK+WBnSA+IGhhaVwgOwor5YGbID4gc291XCA7CivlgZkgPiB0ZWlcIDsKK+WBmCA+IGthblwgOwor5YGXID4gc2VpXCA7CivlgZYgPiBzaGFcIDsKK+WBlSA+IGthaVwgOwor5YGTID4gYWt1XCA7CivlgZIgPiB0b3VcIDsKK+WBkSA+IGh1dVwgOwor5YGQID4gZ2FuXCA7CivlgY8gPiBoZW5cIDsKK+WBjiA+IHdhaVwgOwor5YGNID4gdGVpXCA7CivlgYsgPiBoZWlcIDsKK+WBhCA+IGRhblwgOwor5YGCID4gc2VuXCA7CivlgLwgPiBjaGlcIDsKK+WAtyA+IGRhaVwgOwor5YC0ID4gaG9uXCA7CivlgLMgPiBzaGlcIDsKK+WAsiA+IHRvdVwgOwor5YCxID4ga29uXCA7CivlgKsgPiByaW5cIDsKK+WAqiA+IGdlaVwgOwor5YCoID4ga3lvXCA7CivlgKcgPiBzb3VcIDsKK+WApSA+IGtvdVwgOwor5YCjID4gaG91XCA7CivlgJ4gPiBrZWlcIDsKK+WAnSA+IGthblwgOwor5YCXID4gaG91XCA7CivlgJYgPiBrb3VcIDsKK+WAlSA+IHN1aVwgOwor5YCTID4gdGFuXCA7CivlgJEgPiBtb25cIDsKK+WAjiA+IHRlblwgOwor5YCNID4gYmFpXCA7CivlgIogPiBzb3VcIDsKK+WAiCA+IHJhaVwgOwor5YCFID4gc2FpXCA7CivlgIQgPiBrb3VcIDsKK+WAgiA+IGhlaVwgOwor5YCBID4gY2hpXCA7Civkv78gPiBjaGlcIDsKK+S/vSA+IGtpblwgOwor5L+8ID4gaWt1XCA7Civkv7ggPiBob3VcIDsKK+S/tCA+IHNlblwgOwor5L+zID4gaGFpXCA7Civkv7IgPiBrb3VcIDsKK+S/qyA+IHJhaVwgOwor5L+fID4gc2hpXCA7Civkv5wgPiBoZWlcIDsKK+S/myA+IGJlblwgOwor5L+WID4gaGFpXCA7Civkv5QgPiBrZW5cIDsKK+S/kyA+IGdhdVwgOwor5L+SID4ga29uXCA7Civkv5EgPiB5b3VcIDsKK+S/jyA+IHNldVwgOwor5L+KID4ganVuXCA7Civkv4YgPiBzaG9cIDsKK+S/gCA+IHRhaVwgOwor5L6+ID4ga291XCA7Civkvr0gPiBkYW5cIDsKK+S+uSA+IHRlaVwgOwor5L6rID4gbmVpXCA7CivkvqMgPiByeW9cIDsKK+S+nyA+IHNlblwgOwor5L6XID4gdG91XCA7CivkvpYgPiByb25cIDsKK+S+lCA+IGJvdVwgOwor5L6RID4geXV1XCA7Civkvo8gPiBzaHVcIDsKK+S+iiA+IGtvdVwgOwor5L6IID4gc2hpXCA7CivkvoUgPiBrYWlcIDsKK+S+gyA+IGthblwgOwor5L6AID4ga2VpXCA7Civkvb0gPiBzaGlcIDsKK+S9vCA+IGtvdVwgOwor5L26ID4gc2VuXCA7CivkvbcgPiBrb3VcIDsKK+S9sSA+IGhvdVwgOwor5L2vID4geW91XCA7Civkva4gPiBrb3VcIDsKK+S9qSA+IGhhaVwgOwor5L2jID4geW91XCA7CivkvaIgPiBreW9cIDsKK+S9oSA+IGtlblwgOwor5L2fID4gdG91XCA7CivkvZ4gPiBuZWlcIDsKK+S9nSA+IGtvdVwgOwor5L2YID4gc2hhXCA7CivkvZEgPiB5dXVcIDsKK+S9jCA+IHNoaVwgOwor5L2JID4ga3lvXCA7CivkvYYgPiB0YW5cIDsKK+S9giA+IHlhaVwgOwor5L2AID4gc2hpXCA7CivkvLsgPiBob3VcIDsKK+S8uSA+IHNob1wgOwor5Ly2ID4gcmVpXCA7CivkvK0gPiBrZW5cIDsKK+S8oyA+IGtlblwgOwor5LyYID4geXV1XCA7CivkvJcgPiBnaW5cIDsKK+S8kyA+IGhhaVwgOwor5LySID4ga2luXCA7CivkvIkgPiBrb3VcIDsKK+S8hyA+IGVraVwgOwor5LyFID4gdG9uXCA7CivkvIIgPiBoYWlcIDsKK+S7vyA+IGhvdVwgOwor5Lu+ID4gdGVpXCA7Civku70gPiBoaW5cIDsKK+S7tyA+IGthaVwgOwor5LuxID4ga2VuXCA7Civku68gPiBzb3VcIDsKK+S7rSA+IGppblwgOwor5LugID4ga2FuXCA7Civku58gPiBzZW5cIDsKK+S7niA+IGppblwgOwor5LucID4ga291XCA7Civku5ogPiBrZW5cIDsKK+S7kCA+IHNhblwgOwor5LuOID4ganV1XCA7Civku40gPiBqb3VcIDsKK+S7gyA+IHRlaVwgOwor5LuAID4ganV1XCA7Civkur4gPiBib3VcIDsKK+S6tyA+IHJlblwgOwor5Lq2ID4gdGFuXCA7CivkurAgPiBrZWlcIDsKK+S6oiA+IGtvdVwgOwor5LqgID4gdG91XCA7Civkup0gPiBzZWlcIDsKK+S6lyA+IHNhaVwgOwor5LqWID4gc2hpXCA7CivkuoMgPiByaW5cIDsKK+S6gSA+IGtlblwgOwor5Lm/ID4gY2hpXCA7CivkubkgPiBrYW5cIDsKK+S5qiA+IGRvdVwgOwor5LmpID4ga2VpXCA7CivkuaggPiBzaGlcIDsKK+S5oiA+IGdhaVwgOwor5LmWID4ga2FpXCA7CivkuZMgPiBoYXVcIDsKK+S5kiA+IGhlaVwgOwor5LmRID4gZ2luXCA7CivkuYIgPiBnYWlcIDsKK+S4viA+IGt5b1wgOwor5Li9ID4gcmVpXCA7CivkuLYgPiBjaHVcIDsKK+S4syA+IHNhblwgOwor5LixID4ga2FuXCA7CivkuLAgPiBob3VcIDsKK+S4ryA+IGthaVwgOwor5LioID4ga29uXCA7CivkuKMgPiB5dXVcIDsKK+S4mSA+IGhlaVwgOwor5LiXID4gc2VpXCA7CivkuJMgPiBzZW5cIDsKK+S4kCA+IGthaVwgOwor5LiPID4gYmVuXCA7CivkuIIgPiBrb3VcIDsKK+i/piA+IGthXCA7Civnn6IgPiB5YVwgOwor5b+cID4gb3VcIDsKK+W/jCA+IGtpXCA7Civovq0gPiBqaVwgOwor5b6uID4gYmlcIDsKK+W+oSA+IGdvXCA7Civovp4gPiBqaVwgOwor5b6SID4gdG9cIDsKK+W+kCA+IGpvXCA7CivlvoMgPiBvdVwgOwor5b6AID4gb3VcIDsKK+ecvCA+IG1lXCA7CivovKogPiB3YVwgOwor5bylID4gbWlcIDsKK+ecnyA+IG1hXCA7CivovJ0gPiBraVwgOwor5byVID4gaW5cIDsKK+W8kCA+IG5pXCA7Civlu7YgPiBlblwgOwor55uuID4gbWVcIDsKK+i6qyA+IG1pXCA7CivluqsgPiBrb1wgOwor5bqnID4gemFcIDsKK+W6piA+IGRvXCA7CivlupwgPiBmdVwgOwor5bqHID4gaGlcIDsKK+i4sCA+IHl1XCA7CivluLAgPiBraVwgOwor55e6ID4gaGlcIDsKK+i3ryA+IHJvXCA7Civlt64gPiBzYVwgOwor6LeqID4ga2lcIDsKK+W3qCA+IGtvXCA7Civlt6MgPiBzdVwgOwor5beeID4gc3VcIDsKK+eXmyA+IHRzXCA7CivnlrIgPiBoaVwgOwor55aRID4gZ2lcIDsKK+eWjiA+IHNvXCA7CivnlosgPiBzb1wgOwor6LW3ID4ga2lcIDsKK+i1tCA+IGZ1XCA7CivnlLAgPiB0YVwgOwor55SlID4gb2lcIDsKK+i0lCA+IGhpXCA7CivosrsgPiBoaVwgOwor6LK0ID4ga2lcIDsKK+eSsCA+IHdhXCA7CivosqggPiBrYVwgOwor6LKgID4gZnVcIDsKK+ixqyA+IHlvXCA7CivlsaUgPiByaVwgOwor5bGTID4ga2lcIDsKK+WxiyA+IHlhXCA7CivosLcgPiB5YVwgOwor55CGID4gcmlcIDsKK+WvnSA+IG5lXCA7Civlr5AgPiBiaVwgOwor54+IID4ga2FcIDsKK+WvhCA+IGtpXCA7CivlrrYgPiBrZVwgOwor5a6fID4gbWlcIDsKK+WunCA+IGdpXCA7CivnjosgPiBvdVwgOwor6K29ID4geW9cIDsKK+ittyA+IGdvXCA7CivorbAgPiBnaVwgOwor6K2sID4gaGlcIDsKK+WtoyA+IGtpXCA7CivlrZcgPiBqaVwgOwor5a2QID4gbmVcIDsKK+WsiSA+IGtpXCA7CivlqrwgPiBvdVwgOwor6KqyID4ga2FcIDsKK+iqpCA+IGdvXCA7CivniqAgPiBnaVwgOwor6KqeID4gZ29cIDsKK+WqmiA+IGJpXCA7CivoqokgPiB5b1wgOwor6KqHID4ga29cIDsKK+WppiA+IGZ1XCA7CivlqaIgPiBoaVwgOwor5amJID4gZW5cIDsKK+iotCA+IHNvXCA7CivoqJ0gPiBnYVwgOwor6KiYID4ga2lcIDsKK+eIkCA+IHJvXCA7Civnh58gPiBlaVwgOwor5aasID4gdG9cIDsKK+WmkyA+IGtpXCA7CivoposgPiBtaVwgOwor5aaCID4gam9cIDsKK+WlsyA+IGpvXCA7CivopaYgPiBqdVwgOwor5aWnID4gb3VcIDsKK+WliCA+IG5hXCA7CivlpYcgPiBraVwgOwor5aSuID4gb3VcIDsKK+WkqiA+IHRhXCA7CivnhKEgPiBtdVwgOwor6KSeID4gb25cIDsKK+WkmiA+IHRhXCA7CivopJMgPiBob1wgOwor6KOzID4gbW9cIDsKK+ijoSA+IHJpXCA7Civng58gPiBlblwgOwor6KOcID4gaG9cIDsKK+WiriA+IGRhXCA7CivooqsgPiBoaVwgOwor6KGwID4gc2FcIDsKK+eBryA+IGhpXCA7CivngasgPiBoaVwgOwor6KGeID4gZWlcIDsKK+ihmyA+IGVpXCA7CivloZcgPiB0b1wgOwor5aC1ID4gdG9cIDsKK+WgtCA+IGJhXCA7CivngKwgPiBzZVwgOwor5aCVID4gZGFcIDsKK+ifsiA+IGtpXCA7Civmv6EgPiBqdVwgOwor6J66ID4gcmFcIDsKK+WdkCA+IHphXCA7CivlnJYgPiB0b1wgOwor5ryUID4gZW5cIDsKK+WckyA+IGVuXCA7CivlnIMgPiBob1wgOwor5Zu6ID4ga29cIDsKK+WbsyA+IHp1XCA7Civlm6AgPiBpblwgOwor6buEID4ga2lcIDsKK+a6ryA+IHNvXCA7CivomoogPiBrYVwgOwor6bm9ID4gZW5cIDsKK+a5ryA+IHl1XCA7CivmuKkgPiBvblwgOwor5ZipID4ga2FcIDsKK+a4oSA+IHRvXCA7CivpuJogPiBvdVwgOwor5ZiUID4gb3VcIDsKK+iYhyA+IHNvXCA7Civpt7ogPiByb1wgOwor5re5ID4gZW5cIDsKK+a3qyA+IGluXCA7Civll58gPiBhYVwgOwor6JeNID4gYWlcIDsKK+a2uCA+IGtvXCA7CivllqogPiBtb1wgOwor5ZacID4ga2lcIDsKK+a1riA+IGZ1XCA7CivptaEgPiBidVwgOwor5rS+ID4gaGFcIDsKK+a0qSA+IGVpXCA7Civms7MgPiBlaVwgOwor5ZOpID4gcmlcIDsKK+WToSA+IGluXCA7Civms4QgPiBlaVwgOwor5ZOAID4gYWlcIDsKK+ayvyA+IGVuXCA7CivmsrsgPiBqaVwgOwor5rKZID4gc2FcIDsKK+WSjCA+IHdhXCA7Civmsb0gPiBraVwgOwor5ZG8ID4ga29cIDsKK+axsCA+IHRhXCA7CivlkaogPiBqdVwgOwor6JGhID4gaG9cIDsKK+axnSA+IGpvXCA7CivokYkgPiBoYVwgOwor5ZGJID4gZ29cIDsKK+WQviA+IGdvXCA7CivmsLggPiBlaVwgOwor5rC3ID4gaGlcIDsKK+WQpiA+IGhpXCA7CivmsKMgPiBraVwgOwor5rCXID4ga2lcIDsKK+WQkCA+IHRvXCA7CivlkI8gPiByaVwgOwor5ZCNID4gbmFcIDsKK+WPryA+IGthXCA7Civoj5wgPiBuYVwgOwor5q+bID4ga2VcIDsKK+WPmSA+IGpvXCA7Civmr5ggPiBoaVwgOwor5Y+XID4ganVcIDsKK+avlCA+IGhpXCA7Civoj5MgPiBrYVwgOwor5q+GID4gb3VcIDsKK+iOqyA+IGJvXCA7CivmrbggPiBraVwgOwor6I23ID4gbmlcIDsKK+mtryA+IHJvXCA7CivljbEgPiBraVwgOwor5q2vID4gaGFcIDsKK+atqSA+IGhvXCA7CivmraYgPiBidVwgOwor5q2fID4geW9cIDsKK+mtmCA+IGVuXCA7CivprZQgPiBtYVwgOwor5Y2RID4gaGlcIDsKK+atkCA+IG91XCA7CivprYUgPiBtaVwgOwor6Iy5ID4gam9cIDsKK+asuiA+IGdpXCA7CivmrLcgPiBraVwgOwor5YyWID4ga2FcIDsKK+WMjSA+IGhvXCA7CivojIQgPiBrYVwgOwor6IyCID4gbW9cIDsKK+iLsSA+IGVpXCA7Civoi6YgPiBrdVwgOwor6IubID4ga2FcIDsKK+WLmSA+IG11XCA7Civoi5EgPiBlblwgOwor6Iq9ID4gbWVcIDsKK+WKqiA+IGRvXCA7CivliqAgPiBrYVwgOwor5qqQID4gZW5cIDsKK+aqjiA+IGdvXCA7CivpqYUgPiBrdVwgOwor5qi5ID4ganVcIDsKK+WIqSA+IHJpXCA7CivmqKEgPiBtb1wgOwor6IieID4gYnVcIDsKK+iIhyA+IHlvXCA7Civlh7ogPiBkZVwgOwor6IelID4gZ2FcIDsKK+mniCA+IGt1XCA7Civpp4YgPiBrdVwgOwor6aeEID4gdGFcIDsKK+WGtiA+IHlhXCA7CivohpogPiBmdVwgOwor5qaOID4ga2FcIDsKK+WFtyA+IGd1XCA7CivlhbYgPiBraVwgOwor6aWRID4ga2lcIDsKK+iFkSA+IGZ1XCA7CivlhZIgPiBqaVwgOwor6IWQID4gZnVcIDsKK+WFkCA+IGppXCA7CivppJggPiB5b1wgOwor6aSTID4gZ2FcIDsKK+WEgCA+IGdpXCA7Civlg7kgPiBrYVwgOwor6aOyID4gaW5cIDsKK+mjriA+IGluXCA7Civpo6IgPiBraVwgOwor6IOhID4ga29cIDsKK+WDniA+IGdpXCA7Civpo5sgPiBoaVwgOwor5qOEID4ga2lcIDsKK+WCmSA+IGJpXCA7CivpoacgPiBrb1wgOwor5YGaID4gc2FcIDsKK+mhhiA+IGthXCA7CivmoYggPiBhblwgOwor5YGHID4ga2FcIDsKK+aguSA+IG5lXCA7CivlgLYgPiBrdVwgOwor5YCkID4gbmVcIDsKK+WAmiA+IGtpXCA7CivpoJcgPiBoYVwgOwor6aCQID4geW9cIDsKK+WAiyA+IGtvXCA7CivmoIQgPiBlaVwgOwor6Z+7ID4gaW5cIDsKK+afuyA+IHNhXCA7Civpn7MgPiBuZVwgOwor57+zID4gZWlcIDsKK+S/ryA+IGZ1XCA7Civkv50gPiBob1wgOwor5769ID4gd2FcIDsKK+aetiA+IGthXCA7Civmnq8gPiBrb1wgOwor5L6uID4gYnVcIDsKK+e+qSA+IGdpXCA7CivmnpwgPiBrYVwgOwor5L6YID4gdGFcIDsKK+e+jiA+IGJpXCA7CivnvoUgPiByYVwgOwor5725ID4gcmlcIDsKK+e9tSA+IGJhXCA7CivpnaEgPiBoaVwgOwor6Z2eID4gaGlcIDsKK+S9mSA+IHlvXCA7CivpnZIgPiBhb1wgOwor5L2QID4gc2FcIDsKK+S8vCA+IG5pXCA7CivmnKogPiBtaVwgOwor5pyoID4ga2lcIDsKK+acnyA+IGtpXCA7CivkvI4gPiBnaVwgOwor5LyNID4gZ29cIDsKK+S8gSA+IGtpXCA7Civmm7MgPiBlaVwgOwor6ZuiID4gcmlcIDsKK+S7oyA+IHlvXCA7Civku5ggPiBmdVwgOwor6ZqxID4gaW5cIDsKK+aariA+IGJvXCA7CivpmqAgPiBpblwgOwor5LqbID4gc2FcIDsKK+aalyA+IGFuXCA7CivkupQgPiBnb1wgOwor5LqSID4gZ29cIDsKK+S6kSA+IHVuXCA7CivkuowgPiBuaVwgOwor5LqIID4geW9cIDsKK+e5uyA+IGp1XCA7Civmma4gPiBmdVwgOwor6ZmkID4gam9cIDsKK+mZoiA+IGluXCA7CivkuZ0gPiBrdVwgOwor6ZmEID4gZnVcIDsKK+S5gyA+IG5vXCA7CivpmYAgPiBkYVwgOwor5Li5ID4gbmlcIDsKK+aYryA+IHplXCA7CivmmKAgPiBlaVwgOwor5LiWID4geW9cIDsKK+S4jiA+IHlvXCA7CivkuI0gPiBmdVwgOwor5LiJID4gbWlcIDsKK+aXuiA+IG91XCA7Civml6UgPiBoaVwgOwor5peiID4ga2lcIDsKK+e2uiA+IGtpXCA7CivmlpcgPiB0b1wgOwor6ZaTID4gbWFcIDsKK+aWkCA+IGhpXCA7CivmlbcgPiBmdVwgOwor57SgID4gc29cIDsKK+e0gCA+IGtpXCA7Civmk6wgPiBnaVwgOwor5pKrID4gYnVcIDsKK+aRqSA+IG1hXCA7CivnsZQgPiBzdVwgOwor57C/ID4gYm9cIDsKK+ewtyA+IGVuXCA7CivmjqogPiBzb1wgOwor5o6pID4gZW5cIDsKK+aOmyA+IGthXCA7CivmjoggPiBqdVwgOwor566HID4ga2FcIDsKK+aNlyA+IGhvXCA7CivmjZUgPiBob1wgOwor5oyoID4gYWlcIDsKK+espiA+IGZ1XCA7CivmjIEgPiBqaVwgOwor6YutID4gZWlcIDsKK+mLqiA+IGhvXCA7CivmirwgPiBvdVwgOwor56q6ID4ga2lcIDsKK+eqtiA+IGt1XCA7CivmiqsgPiBoaVwgOwor5oqSID4gam9cIDsKK+aJuSA+IGhpXCA7CivmibYgPiBmdVwgOwor5omTID4gZGFcIDsKK+epjyA+IG9uXCA7CivmiYsgPiB0ZVwgOwor56mCID4gaG9cIDsKK+eovCA+IGthXCA7CivmiLggPiB0b1wgOwor5oiyID4gZ2lcIDsKK+aIryA+IGdpXCA7Civmh7wgPiBrdVwgOwor56eYID4gaGlcIDsKK+enkSA+IGthXCA7Civph44gPiBub1wgOwor6YeMID4gcmlcIDsKK+elliA+IHNvXCA7CivnpZUgPiBoaVwgOwor5oWVID4gYm9cIDsKK+eliCA+IGtpXCA7CivmhYcgPiBpblwgOwor5oSbID4gYWlcIDsKK+aEmiA+IGd1XCA7CivmhIkgPiB5dVwgOwor5oSIID4geXVcIDsKK+aDuSA+IGphXCA7Civpg6ggPiBidVwgOwor56OoID4gbWFcIDsKK+aCuCA+IGtpXCA7CivmgrIgPiBoaVwgOwor6YKjID4gZGFcIDsKK+aCnyA+IGdvXCA7Civpgb8gPiBoaVwgOwor5oGpID4gb25cIDsKK+mBjiA+IGthXCA7CivpgYsgPiB1blwgOwor56C0ID4gaGFcIDsKK+aAqCA+IGVuXCA7CivmgJYgPiBmdVwgOwor6YCUID4gdG9cIDsKK+aAkiA+IGRvXCA7CivpvqIgPiBrYVwgOwor6b6cID4ga2lcIDsKK+m+kSA+IGVuXCA7Civpva4gPiBnaVwgOwor6b2fID4gc29cIDsKK+m9liA+IGdhXCA7CivpvYcgPiBzYVwgOwor6b2GID4gb3VcIDsKK+m8vSA+IGd1XCA7CivpvLkgPiBlblwgOwor6by0ID4gZW5cIDsKK+m8ryA+IGdvXCA7CivpvJQgPiBrb1wgOwor6byJID4gdGFcIDsKK+m7vCA+IGhvXCA7Civpu7ggPiByb1wgOwor6buvID4gYW5cIDsKK+m7rSA+IGVuXCA7Civpu6QgPiBlblwgOwor6buhID4gZW5cIDsKK+m7nyA+IGVpXCA7Civpur4gPiBraVwgOwor6bq8ID4gbWFcIDsKK+m6uCA+IGZ1XCA7CivpuqwgPiBmdVwgOwor6bqkID4gc29cIDsKK+m6kiA+IGtpXCA7CivpuowgPiBndVwgOwor6bqLID4gYmlcIDsKK+m6hCA+IHNvXCA7CivpuoIgPiBraVwgOwor6bqBID4gc29cIDsKK+m5uiA+IHNhXCA7CivpubUgPiByb1wgOwor6bmfID4gb3VcIDsKK+m5gCA+IGJ1XCA7CivpuJ0gPiByaVwgOwor6bicID4ga3VcIDsKK+m4lSA+IHJvXCA7CivpuJIgPiB5b1wgOwor6bewID4gZW5cIDsKK+m3lyA+IG91XCA7Civpt5YgPiBlaVwgOwor6beDID4gYW5cIDsKK+m2siA+IG91XCA7Civptq8gPiBvdVwgOwor6baYID4ga29cIDsKK+m2lSA+IGFuXCA7CivptbogPiB5YVwgOwor6bW3ID4gZW5cIDsKK+m1ryA+IGhpXCA7CivptaogPiBhblwgOwor6bWeID4gZ2FcIDsKK+m1nSA+IGdhXCA7CivptZAgPiBidVwgOwor6bS9ID4gam9cIDsKK+m0vCA+IHJvXCA7CivptLMgPiBhblwgOwor6bSvID4gamlcIDsKK+m0oyA+IGtvXCA7CivptJ0gPiBrdVwgOwor6bSbID4gZW5cIDsKK+m0lSA+IHRhXCA7CivptJEgPiBkb1wgOwor6bO2ID4gZW5cIDsKK+mzrCA+IGZ1XCA7Civps6cgPiBmdVwgOwor6bOBID4gb25cIDsKK+myjyA+IGhpXCA7CivpsoogPiBzYVwgOwor6bGrID4gYWlcIDsKK+mwoiA+IGJhXCA7CivpsJsgPiBvblwgOwor6bCWID4gdGFcIDsKK+mwiyA+IGVuXCA7Civpr6EgPiBoaVwgOwor6a+dID4ga29cIDsKK+mviyA+IHNhXCA7Civpr4YgPiBob1wgOwor6a67ID4gc2FcIDsKK+murCA+IGhvXCA7Civprp8gPiBhblwgOwor6a6eID4gamlcIDsKK+mujSA+IGhpXCA7CivprocgPiBiaVwgOwor6a6AID4gdGFcIDsKK+mtsiA+IHJvXCA7Civpra4gPiBoaVwgOwor6a2mID4gc2FcIDsKK+mtlSA+IGtpXCA7CivprY8gPiBnaVwgOwor6a2MID4ga2lcIDsKK+msvSA+IGJpXCA7CivprLkgPiBraVwgOwor6ay2ID4ga2lcIDsKK+mstCA+IGZ1XCA7CivprJAgPiBraVwgOwor6ayNID4ga29cIDsKK+msjCA+IHRhXCA7CivprIEgPiByaVwgOwor6au/ID4gc2FcIDsKK+mrvSA+IHNhXCA7Civpq7UgPiBqaVwgOwor6auyID4gaGlcIDsKK+mrrCA+IGhpXCA7Civpq5cgPiByb1wgOwor6auDID4gZ3VcIDsKK+mrgCA+IGhpXCA7CivpqrsgPiBrYVwgOwor6amqID4gcmlcIDsKK+mppSA+IGtpXCA7CivpqYogPiBrYVwgOwor6ai+ID4gcmFcIDsKK+mopyA+IGthXCA7CivpqKQgPiBraVwgOwor6aiiID4ga2FcIDsKK+moliA+IGJ1XCA7CivpqJEgPiBoaVwgOwor6aiPID4ga2lcIDsKK+mojiA+IGtpXCA7Civpp7AgPiBpblwgOwor6aesID4gamlcIDsKK+mnoSA+IGJhXCA7Civpp54gPiBkYVwgOwor6aedID4gdGFcIDsKK+mnmSA+IGZ1XCA7Civpp5UgPiBnYVwgOwor6aeTID4gaGlcIDsKK+mnkSA+IGRvXCA7Civppr8gPiByb1wgOwor6aaxID4gdGFcIDsKK+mmnyA+IHRvXCA7CivpppcgPiBraVwgOwor6aWgID4gcmFcIDsKK+mlnCA+IGVuXCA7CivppYsgPiBraVwgOwor6aWHID4geW9cIDsKK+mlgiA+IHVuXCA7CivppL0gPiBraVwgOwor6aS8ID4ga2lcIDsKK+mksiA+IGVpXCA7CivppKwgPiBrb1wgOwor6aSrID4gdW5cIDsKK+mkoSA+IGFuXCA7CivppJwgPiBrYVwgOwor6aSUID4gaG9cIDsKK+mkhyA+IHRvXCA7Civpo6sgPiB5b1wgOwor6aK2ID4ga3VcIDsKK+miqyA+IGZ1XCA7CivpopUgPiBlaVwgOwor6aGxID4gcm9cIDsKK+mhrCA+IGp1XCA7CivpoZcgPiBnaVwgOwor6aC1ID4gaW5cIDsKK+mgtCA+IGVpXCA7CivpoKsgPiBmdVwgOwor6aCOID4ga2lcIDsKK+mgjSA+IGdpXCA7Civpn7ogPiBlaVwgOwor6Z+1ID4gaW5cIDsKK+mfniA+IG9uXCA7Civpn5cgPiB1blwgOwor6Z6/ID4ga2lcIDsKK+meviA+IGthXCA7CivpnrwgPiBraVwgOwor6Z61ID4gYWlcIDsKK+mejSA+IGFuXCA7CivpnosgPiBhaVwgOwor6Z6FID4gb3VcIDsKK+megSA+IGhpXCA7Civpnb8gPiBvdVwgOwor6Z27ID4gc29cIDsKK+mdtyA+IGluXCA7CivpnbYgPiBoYVwgOwor6Z2JID4gYWlcIDsKK+mcqiA+IGluXCA7CivpnKMgPiBpblwgOwor6ZyPID4gaGlcIDsKK+mcgCA+IGp1XCA7Civpm7ogPiBtdVwgOwor6ZuFID4gZ2FcIDsKK+masyA+IGtpXCA7CivpmqkgPiBvdVwgOwor6ZqYID4gYWlcIDsKK+malSA+IGluXCA7CivpmpAgPiBpblwgOwor6ZqLID4gdGFcIDsKK+magiA+IGluXCA7CivpmoEgPiBlblwgOwor6Zm7ID4gaW5cIDsKK+mZtCA+IGhpXCA7CivpmZIgPiBraVwgOwor6ZmPID4gdGFcIDsKK+mZgiA+IGhhXCA7CivpmYEgPiB0YVwgOwor6Zi9ID4gZW5cIDsKK+mYvCA+IHNvXCA7CivpmLsgPiBzb1wgOwor6ZilID4gaW5cIDsKK+mYnCA+IGZ1XCA7CivpmIcgPiB0b1wgOwor6ZeeID4ga25cIDsKK+mXmiA+IGtpXCA7Civpl40gPiB0b1wgOwor6ZeJID4gaW5cIDsKK+mWuyA+IGVuXCA7CivplrkgPiBlblwgOwor6ZatID4gcm9cIDsKK+mWnyA+IGhpXCA7Civplb4gPiBiaVwgOwor6ZG8ID4gcmFcIDsKK+mRqiA+IHJvXCA7CivpkJYgPiBraVwgOwor6Y+WID4gb3VcIDsKK+mPjSA+IHJhXCA7Civpj4EgPiBzYVwgOwor6Y62ID4ga2FcIDsKK+mOtSA+IGthXCA7CivpjqMgPiBlaVwgOwor6Y6IID4gc2FcIDsKK+mOgiA+IGJpXCA7CivpjoEgPiB5YVwgOwor6Y26ID4gdGFcIDsKK+mNnCA+IGthXCA7CivpjY0gPiB0b1wgOwor6Y2IID4gZWlcIDsKK+mMuyA+IGJ1XCA7CivpjK4gPiBrb1wgOwor6YykID4ga2lcIDsKK+mMoSA+IGtpXCA7CivpjI0gPiBoaVwgOwor6Yu6ID4gZW5cIDsKK+mLsCA+IHJpXCA7Civpi6MgPiB5YVwgOwor6YuYID4ga2FcIDsKK+mLhiA+IGluXCA7CivpirwgPiBzYVwgOwor6YqzID4gZWlcIDsKK+mKqCA+IGFuXCA7Civpip8gPiBzYVwgOwor6YmgID4gZWlcIDsKK+mJjSA+IGhpXCA7CivpiLkgPiBoaVwgOwor6Yi3ID4ga29cIDsKK+mIqSA+IHJvXCA7CivpiKYgPiB0YVwgOwor6YilID4ga2FcIDsKK+mInSA+IGluXCA7CivpiJggPiBnaVwgOwor6YiHID4gaHVcIDsKK+mIhiA+IGVuXCA7CivpiIAgPiBoYVwgOwor6Ye5ID4gam9cIDsKK+mHtyA+IHRvXCA7Civph7UgPiBzYVwgOwor6YehID4gZnVcIDsKK+mHkCA+IHJpXCA7Civphr8gPiBiaVwgOwor6Ya8ID4gZW5cIDsKK+mGqCA+IHJpXCA7CivphqEgPiBzYVwgOwor6YaeID4gdW5cIDsKK+mGliA+IHVuXCA7CivphpAgPiBrb1wgOwor6YaDID4gZW5cIDsKK+mFuiA+IGhvXCA7CivphbQgPiB0b1wgOwor6YWzID4gaW5cIDsKK+mFpSA+IHNvXCA7CivphaQgPiBrb1wgOwor6YWiID4gc3VcIDsKK+mFoSA+IHRhXCA7CivphZcgPiBrdVwgOwor6YWTID4gZW5cIDsKK+mFiCA+IHJpXCA7CivphLEgPiBoYVwgOwor6YSiID4gZW5cIDsKK+mEoCA+IGtvXCA7CivphJwgPiBodVwgOwor6YSWID4gdW5cIDsKK+mEiCA+IGtpXCA7CivphIYgPiB1blwgOwor6YSFID4gZ3VcIDsKK+mDvyA+IGJpXCA7Civpg74gPiBlblwgOwor6YO2ID4gYnVcIDsKK+mDqyA+IGhpXCA7Civpg6IgPiBlaVwgOwor6YObID4gZnVcIDsKK+mDmSA+IGh1XCA7CivpgrMgPiBoaVwgOwor6YKQID4gcmlcIDsKK+mCjyA+IHJhXCA7CivpgocgPiBqaVwgOwor6YGhID4gc29cIDsKK+mBkCA+IGthXCA7CivpgL4gPiB5dVwgOwor6YC6ID4gZW5cIDsKK+mAtSA+IGtpXCA7CivpgJggPiBnaVwgOwor6YCLID4gaG9cIDsKK+i/sSA+IHRhXCA7Civov6wgPiBvdVwgOwor6L+pID4gamlcIDsKK+i/lSA+IGdvXCA7Civov5MgPiBnYVwgOwor6L+QID4gdW5cIDsKK+i/iyA+IG91XCA7CivovqQgPiBqaVwgOwor6L6dID4gamlcIDsKK+i9pCA+IHJvXCA7CivovaEgPiBoaVwgOwor6L2dID4geW9cIDsKK+i9nCA+IGppXCA7CivovYUgPiBlblwgOwor6L2AID4gb25cIDsKK+i8uCA+IHl1XCA7CivovKAgPiBrYVwgOwor6LyUID4gZnVcIDsKK+i8hSA+IHJvXCA7CivovIAgPiBqaVwgOwor6Lu7ID4ga2FcIDsKK+i7sSA+IGtvXCA7Civou64gPiBvdVwgOwor6LuMID4ga2lcIDsKK+i7gyA+IHRhXCA7Civou4AgPiBrdVwgOwor6LqyID4gdGFcIDsKK+i6sSA+IHRhXCA7Civouq8gPiBrdVwgOwor6LqbID4gZWlcIDsKK+i6lyA+IGVpXCA7CivouZ4gPiBraVwgOwor6LmJID4gc2FcIDsKK+i4vSA+IGt1XCA7CivouLcgPiB0YVwgOwor6LimID4ga2lcIDsKK+i4oCA+IGVuXCA7CivouJEgPiBraVwgOwor6Le/ID4gdG9cIDsKK+i3vSA+IGtpXCA7Civot7ogPiB0YVwgOwor6LesID4ga2lcIDsKK+i3qCA+IGtvXCA7Civot6UgPiB0YVwgOwor6LeXID4gZnVcIDsKK+i3lCA+IGt1XCA7Civot48gPiBrYVwgOwor6LeOID4gdGFcIDsKK+i3hyA+IGVpXCA7Civot4IgPiBraVwgOwor6La6ID4gZnVcIDsKK+i1riA+IGthXCA7CivotZ8gPiBpblwgOwor6LWRID4gaGlcIDsKK+i0jyA+IGVpXCA7CivotIcgPiBpblwgOwor6LO7ID4gZnVcIDsKK+izpiA+IGZ1XCA7Civos48gPiBlaVwgOwor6LOIID4ga29cIDsKK+izgiA+IHJvXCA7Civos4EgPiBoaVwgOwor6LOAID4gZ2FcIDsKK+iysyA+IG5pXCA7Civosq4gPiBuaVwgOwor6LKUID4gaGlcIDsKK+iykCA+IHl1XCA7Civoso0gPiByaVwgOwor6LG+ID4gaGlcIDsKK+ixvCA+IGhpXCA7Civosa0gPiBrYVwgOwor6LGoID4ga2lcIDsKK+ixnSA+IGhhXCA7CivosZkgPiBnaVwgOwor6LGXID4ga2FcIDsKK+ixlCA+IGVuXCA7CivosZMgPiBlblwgOwor6LGOID4ganVcIDsKK+ixjCA+IGVuXCA7CivosYggPiBraVwgOwor6LC6ID4ga2FcIDsKK+iulCA+IGluXCA7Civoro8gPiBlaVwgOwor6K6MID4gZW5cIDsKK+iuhiA+IGVpXCA7CivoroQgPiBydVwgOwor6K2tID4ga2lcIDsKK+itnCA+IGZ1XCA7CivorZIgPiBoYVwgOwor6K2PID4ga2lcIDsKK+itjCA+IGthXCA7CivorYYgPiBraVwgOwor6K2DID4ga3VcIDsKK+itgSA+IGthXCA7CivorLwgPiBrb1wgOwor6KyzID4gb3VcIDsKK+isqCA+IGJvXCA7CivorIwgPiBrYVwgOwor6KuzID4gYW5cIDsKK+irsSA+IGtpXCA7Civoq60gPiB5dVwgOwor6KubID4geXVcIDsKK+irhiA+IGtpXCA7CivoqrkgPiBoaVwgOwor6KqnID4gaG9cIDsKK+iqoyA+IGZ1XCA7CivoqpIgPiBraVwgOwor6KqQID4gZ2FcIDsKK+iqiyA+IGtpXCA7CivoqoAgPiBqaVwgOwor6KmtID4ga2lcIDsKK+ipqyA+IHRhXCA7CivoqaEgPiBrdVwgOwor6KmgID4gZWlcIDsKK+ipmyA+IHNvXCA7CivoqZYgPiBoaVwgOwor6KmRID4gdGFcIDsKK+ipkCA+IHNhXCA7CivoqY0gPiBlaVwgOwor6KmIID4gcmlcIDsKK+ipgSA+IGtvXCA7CivoqLYgPiBrYVwgOwor6KivID4gc2FcIDsKK+iojyA+IGt1XCA7CivoqIMgPiBmdVwgOwor6KetID4ga2lcIDsKK+inmiA+IGtvXCA7Civop5UgPiBzb1wgOwor6Ka8ID4gcmFcIDsKK+imtiA+IHJhXCA7CivoprAgPiBzb1wgOwor6KasID4ga2lcIDsKK+imqSA+IHRvXCA7CivopqYgPiB5dVwgOwor6KaZID4gcmFcIDsKK+imjyA+IGtpXCA7CivopoogPiBraVwgOwor6KaJID4ga2lcIDsKK+imhyA+IGhhXCA7CivopaMgPiBoaVwgOwor6KS1ID4gcmlcIDsKK+iksiA+IGtvXCA7CivopKggPiBzYVwgOwor6KSVID4geXVcIDsKK+ijuSA+IGthXCA7Civoo7cgPiBlblwgOwor6KOoID4gaGlcIDsKK+ijnyA+IHNhXCA7Civoo5QgPiBlaVwgOwor6KOAID4gaW5cIDsKK+iivSA+IGpvXCA7Civooq4gPiBuZVwgOwor6KKZID4gaGFcIDsKK+iiiCA+IGthXCA7CivoooEgPiBlblwgOwor6KG5ID4ga2lcIDsKK+ihoiA+IGt1XCA7CivooZogPiBrb1wgOwor6KGNID4gZW5cIDsKK+ihiCA+IGppXCA7CivooLkgPiB0b1wgOwor6KCxID4ga29cIDsKK+igpyA+IHRvXCA7CivooJUgPiBkYVwgOwor6KCRID4gZWlcIDsKK+iggyA+IHJhXCA7Civon6sgPiBpblwgOwor6J+jID4ga2lcIDsKK+ifoiA+IGtpXCA7Civonr4gPiBpblwgOwor6J6eID4gYmFcIDsKK+iemCA+IGdpXCA7CivonbggPiBrYVwgOwor6J20ID4ga29cIDsKK+idryA+IGVuXCA7CivonZ0gPiBlblwgOwor6J2YID4gZW5cIDsKK+idkyA+IHl1XCA7CivonYwgPiBrYVwgOwor6Jy/ID4gZW5cIDsKK+icviA+IGthXCA7CivonLEgPiBoaVwgOwor6JyeID4ga2lcIDsKK+icmiA+IGhpXCA7CivonJIgPiBlblwgOwor6JyOID4gZW5cIDsKK+iciiA+IHJpXCA7CivonIkgPiBmdVwgOwor6JyIID4gZ29cIDsKK+ichSA+IGh1XCA7Civom74gPiBnYVwgOwor6JuEID4ga29cIDsKK+iauSA+IGh1XCA7CivomrUgPiBrYVwgOwor6JqtID4gamlcIDsKK+iaqCA+IGh1XCA7CivompwgPiBrYVwgOwor6JqaID4ga2lcIDsKK+iakyA+IGluXCA7CivompEgPiBraVwgOwor6JqNID4gaGlcIDsKK+iZuiA+IGtpXCA7CivomacgPiBraVwgOwor6JmdID4ga29cIDsKK+iZmCA+IHNhXCA7CivomZYgPiBrb1wgOwor6JmNID4ga29cIDsKK+iZgiA+IHJvXCA7CivomYEgPiBraVwgOwor6Ji/ID4gcmFcIDsKK+iYvCA+IGJpXCA7CivomLogPiByaVwgOwor6Ji2ID4gZ2lcIDsKK+iYpyA+IGt1XCA7CivomKEgPiBvdVwgOwor6JiZID4gZWlcIDsKK+iYkyA+IHNvXCA7CivomJEgPiBtYVwgOwor6JiOID4ga2lcIDsKK+iYiiA+IHVuXCA7CivomIQgPiBraVwgOwor6Je7ID4gbW9cIDsKK+iXuSA+IGFpXCA7Civol7QgPiB1blwgOwor6JemID4gYmFcIDsKK+iWvyA+IGdpXCA7CivolrcgPiBqdVwgOwor6JaXID4gZW5cIDsKK+iWhiA+IGFpXCA7CivoloAgPiB1blwgOwor6JW3ID4geW9cIDsKK+iVsCA+IHVuXCA7CivolaAgPiBqb1wgOwor6JWcID4gaGlcIDsKK+iVkyA+IHVuXCA7CivolLQgPiBtYVwgOwor6JSsID4gc29cIDsKK+iUqyA+IGVuXCA7CivolKIgPiBoYVwgOwor6JOZID4gemFcIDsKK+iTliA+IGhpXCA7Civok48gPiByYVwgOwor6JOMID4gc2FcIDsKK+iTiiA+IG91XCA7Civokr0gPiBvblwgOwor6JKxID4gaG9cIDsKK+iSqSA+IHNvXCA7Civokp4gPiByaVwgOwor6JKVID4gdW5cIDsKK+iRrSA+IGthXCA7CivokasgPiBrb1wgOwor6JGpID4gaGFcIDsKK+iRiiA+IGFuXCA7CivokYYgPiBob1wgOwor6JC4ID4geXVcIDsKK+iQtSA+IHdhXCA7CivokJMgPiBnaVwgOwor6JCGID4gaGlcIDsKK+iQgSA+IGtpXCA7Civoj7ggPiBlblwgOwor6I+0ID4gYW5cIDsKK+iPsiA+IGhpXCA7Civoj7AgPiBrb1wgOwor6I+gID4gaGFcIDsKK+iPnyA+IHRvXCA7Civoj48gPiBrYVwgOwor6I+HID4ga29cIDsKK+iPgCA+IGVuXCA7CivojrUgPiB0b1wgOwor6I6qID4gZ2FcIDsKK+iOqSA+IGh1XCA7Civojp0gPiBzYVwgOwor6I6aID4gZW5cIDsKK+iOjiA+IHNhXCA7CivojoYgPiBodVwgOwor6I6FID4gcmlcIDsKK+iNvCA+IHRvXCA7CivojbAgPiB0b1wgOwor6I2UID4gcmlcIDsKK+iNgiA+IGthXCA7CivojLUgPiBpblwgOwor6IyyID4gamlcIDsKK+iMsCA+IHl1XCA7CivojKMgPiBnb1wgOwor6IyYID4gcmlcIDsKK+iLvSA+IGtvXCA7Civoi7sgPiBmdVwgOwor6Iu0ID4gc29cIDsKK+iLpCA+IGhpXCA7Civoir4gPiBoaVwgOwor6Iq6ID4gb3VcIDsKK+iKsCA+IGtpXCA7Civoiq0gPiBiYVwgOwor6IqqID4ga2lcIDsKK+iKpiA+IHJvXCA7CivoipkgPiBmdVwgOwor6IqYID4gaGlcIDsKK+iKlCA+IGtpXCA7CivoipEgPiBraVwgOwor6IqIID4gYmFcIDsKK+iJtyA+IGVuXCA7CivoiaogPiByb1wgOwor6ImkID4gZ2lcIDsKK+iJoyA+IHJvXCA7CivoiZYgPiBzYVwgOwor6ImFID4geW9cIDsKK+iJgyA+IHJpXCA7CivoiLggPiBrYVwgOwor6IiuID4gcm9cIDsKK+iIlyA+IGhvXCA7CivoiJYgPiBob1wgOwor6IiSID4gam9cIDsKK+iIgSA+IHlvXCA7Civoh74gPiB5dVwgOwor6IeeID4ga3VcIDsKK+iHnSA+IHJhXCA7Civoh5kgPiBlblwgOwor6IeCID4gaGlcIDsKK+iGtCA+IGtvXCA7CivohqkgPiBqaVwgOwor6IaGID4gc29cIDsKK+iFtCA+IHl1XCA7CivohaEgPiByYVwgOwor6IWXID4gaGlcIDsKK+iFkyA+IGhpXCA7CivohL4gPiBoaVwgOwor6IS1ID4ga29cIDsKK+iEryA+IGhvXCA7CivohJ4gPiBzYVwgOwor6IScID4ganVcIDsKK+iDuSA+IGppXCA7Civog68gPiBrb1wgOwor6IOtID4gaW5cIDsKK+iDmSA+IHNvXCA7Civog5UgPiBodVwgOwor6IONID4ga29cIDsKK+iDiiA+IGt1XCA7CivogrkgPiBoaVwgOwor6IKeID4gc2FcIDsKK+iCmiA+IHRvXCA7Civoga0gPiBraVwgOwor6IC6ID4gdW5cIDsKK+iAtiA+IHlhXCA7CivogKEgPiBqb1wgOwor6ICeID4ga2FcIDsKK+iAmSA+IGhhXCA7CivogJggPiB1blwgOwor6ICPID4gamlcIDsKK+iAjSA+IHNhXCA7CivogIwgPiBqaVwgOwor6ICGID4ga2lcIDsKK+e/rCA+IGtpXCA7Civnv6EgPiBoaVwgOwor576yID4gZ2lcIDsKK+e+rSA+IHl1XCA7CivnvpYgPiBrb1wgOwor576LID4gYmFcIDsKK+e+iCA+IGtpXCA7CivnvocgPiBraVwgOwor576GID4gaGlcIDsKK+e9tyA+IGhpXCA7CivnvaggPiBhblwgOwor572mID4gaHVcIDsKK+e9nyA+IGtvXCA7CivnvZsgPiByb1wgOwor572YID4gZnVcIDsKK+e9jyA+IHJvXCA7CivnvYwgPiBvdVwgOwor572DID4gb3VcIDsKK+e8uyA+IGZ1XCA7CivnupMgPiBlaVwgOwor57qRID4gcm9cIDsKK+e5pyA+IHVuXCA7CivnuaUgPiBraVwgOwor57mEID4gZWlcIDsKK+e4uyA+IGJpXCA7CivnuLcgPiBydVwgOwor57ivID4gZW5cIDsKK+e4rSA+IHJpXCA7CivnuJwgPiBpblwgOwor57iVID4gdW5cIDsKK+e4iiA+IGVpXCA7CivnuIggPiBlaVwgOwor57iAID4ga2FcIDsKK+e3oyA+IGVuXCA7Civnt4sgPiBoaVwgOwor57asID4ganVcIDsKK+e2piA+IGtpXCA7Civntp4gPiB0YVwgOwor57aWID4gZW5cIDsKK+e1riA+IGpvXCA7CivntaogPiBpblwgOwor57WlID4gaGlcIDsKK+e1nSA+IGt1XCA7CivntYcgPiBrdVwgOwor57S9ID4gdGFcIDsKK+e0piA+IGhhXCA7CivntJwgPiB1blwgOwor57SXID4gc2FcIDsKK+e0lSA+IGhpXCA7Civns68gPiBkYVwgOwor57OiID4gYm9cIDsKK+eznCA+IGJpXCA7Civnsr8gPiBrYVwgOwor57KrID4gamlcIDsKK+eykCA+IHJvXCA7Civnso8gPiB0YVwgOwor57KGID4gc2FcIDsKK+eygyA+IGhpXCA7CivnsbkgPiBqb1wgOwor57GyID4geXVcIDsKK+exriA+IHJhXCA7CivnsawgPiByaVwgOwor57GdID4gZWlcIDsKK+exmiA+IHJvXCA7CivnsLggPiBoYVwgOwor57CsID4gcm9cIDsKK+ewoyA+IGtpXCA7CivnsKAgPiBodVwgOwor57CUID4gc2FcIDsKK+ewkSA+IHNhXCA7CivnsIsgPiBraVwgOwor57CEID4ga29cIDsKK+ewgiA+IGtlXCA7Civnr7YgPiBlblwgOwor56+aID4gaGlcIDsKK+evlCA+IHVuXCA7CivnrrYgPiBrb1wgOwor566lID4gaGFcIDsKK+eumyA+IGtvXCA7CivnrpUgPiBraVwgOwor566OID4ga29cIDsKK+etoCA+IGluXCA7CivnrY4gPiBqb1wgOwor56y0ID4ga2FcIDsKK+essyA+IGthXCA7CivnrK8gPiBkb1wgOwor56yfID4ga29cIDsKK+eshiA+IGhhXCA7Civnq6wgPiBrdVwgOwor56uqID4ganVcIDsKK+erqSA+IGdpXCA7Civnq5IgPiBraVwgOwor56q5ID4gZ29cIDsKK+eqsyA+IHdhXCA7CivnqqwgPiB5dVwgOwor56qqID4gd2FcIDsKK+eqqSA+IGthXCA7CivnqqAgPiBrYVwgOwor56qKID4gd2FcIDsKK+epqSA+IG9uXCA7CivnqaUgPiB5b1wgOwor56miID4gYWlcIDsKK+epliA+IGtpXCA7CivnqY4gPiBlaVwgOwor56mMID4gc29cIDsKK+eosyA+IG9uXCA7CivnqJ4gPiBrYVwgOwor56iYID4ga2lcIDsKK+eojCA+IHRvXCA7CivnqIMgPiBodVwgOwor56enID4gb3VcIDsKK+enoCA+IGhpXCA7Civnp58gPiBzb1wgOwor56eVID4gaGlcIDsKK+emviA+IGthXCA7CivnpqggPiBraVwgOwor56anID4ga2lcIDsKK+emoSA+IGJhXCA7CivnppwgPiBlaVwgOwor56aRID4gZ3VcIDsKK+emjSA+IGthXCA7CivnposgPiBpblwgOwor56W7ID4ga29cIDsKK+eluiA+IGtpXCA7CivnpZwgPiBrb1wgOwor56WaID4gc29cIDsKK+elmSA+IG1pXCA7CivnpZQgPiBodVwgOwor56WHID4ga2lcIDsKK+elgSA+IGtpXCA7CivnpKAgPiBqaVwgOwor56ScID4geW9cIDsKK+ekkiA+IGdpXCA7Civno68gPiBraVwgOwor56OkID4gaW5cIDsKK+ejoCA+IHJvXCA7Civno5IgPiBpblwgOwor56OLID4gc2FcIDsKK+ejgSA+IGppXCA7CivnorwgPiBiYVwgOwor56KsID4ga2FcIDsKK+eipCA+IGVpXCA7CivnopUgPiBraVwgOwor56KUID4gYnVcIDsKK+eihiA+IGhhXCA7CivnooEgPiBnb1wgOwor56GqID4gZ2lcIDsKK+egtSA+IG91XCA7CivnoK4gPiBkb1wgOwor56CjID4gdGFcIDsKK+egoiA+IHJhXCA7CivnoJIgPiBoaVwgOwor56CRID4gZ2FcIDsKK+eghiA+IGh1XCA7Civnn6wgPiBzYVwgOwor55+pID4ga3VcIDsKK+efkSA+IHJvXCA7Civnnr8gPiBrdVwgOwor5569ID4ga29cIDsKK+eeuSA+IGFpXCA7CivnnrYgPiBraVwgOwor556WID4gZWlcIDsKK+eehiA+IGtpXCA7Civnnb8gPiBlaVwgOwor5525ID4gdG9cIDsKK+edsSA+IGthXCA7CivnnaIgPiBraVwgOwor552OID4ga2lcIDsKK+ediiA+IGVuXCA7CivnnYIgPiBiaVwgOwor55ytID4ga2lcIDsKK+eclyA+IGt1XCA7Civnm7EgPiBrdVwgOwor55usID4ga29cIDsKK+ebpyA+IHJvXCA7Civnm6YgPiBvdVwgOwor55uZID4gZnVcIDsKK+ebjiA+IG91XCA7Civnm4kgPiBrYVwgOwor55uIID4gZWlcIDsKK+ebgSA+IGVpXCA7CivnmrcgPiBrb1wgOwor55qnID4gYWlcIDsKK+eapCA+IGhhXCA7CivnmoggPiBraVwgOwor55mvID4ga3VcIDsKK+eZriA+IGluXCA7Civnma0gPiBlaVwgOwor55mSID4geXVcIDsKK+eZiiA+IGluXCA7CivnmLggPiBrYVwgOwor55ilID4gc2FcIDsKK+eYnyA+IG9uXCA7CivnmJ4gPiBlaVwgOwor55iWID4gaW5cIDsKK+eYlSA+IGthXCA7CivnmI8gPiB0b1wgOwor55iJID4geXVcIDsKK+eYgCA+IHlvXCA7Civnl7wgPiBrb1wgOwor55e5ID4gaGlcIDsKK+eXsiA+IG1hXCA7Civnl7EgPiBoaVwgOwor55enID4gc2FcIDsKK+eXpCA+IHNhXCA7Civnl6IgPiByaVwgOwor55ehID4gaG9cIDsKK+eXniA+IGhpXCA7Civnl5QgPiBqaVwgOwor55eEID4gc2FcIDsKK+eXgiA+IGthXCA7Civnl4AgPiBrdVwgOwor55a/ID4gaGlcIDsKK+eWpCA+IGhhXCA7CivnlpwgPiBrYVwgOwor55aVID4gaGlcIDsKK+eWjyA+IHNvXCA7Civnlb8gPiBraVwgOwor55W4ID4ga2lcIDsKK+eVsiA+IHlvXCA7Civnla0gPiB5b1wgOwor55WsID4geW9cIDsKK+eVnSA+IHNlXCA7CivnlZIgPiBob1wgOwor55WJID4gZnVcIDsKK+eVhyA+IGluXCA7CivnlYYgPiBob1wgOwor55WAID4gaGlcIDsKK+eUqyA+IGhvXCA7CivnlJYgPiBvdVwgOwor55SSID4gYnVcIDsKK+eUjCA+IG91XCA7Civnk68gPiBvdVwgOwor55OuID4gb3VcIDsKK+eToCA+IGtvXCA7Civnk5QgPiBlaVwgOwor55OQID4gcm9cIDsKK+eSvSA+IGppXCA7CivnkrUgPiB5b1wgOwor55KmID4gYWlcIDsKK+eSoyA+IGtpXCA7Civnkp8gPiBlaVwgOwor55KRID4gYnVcIDsKK+eSkCA+IHJvXCA7CivnkoMgPiByaVwgOwor55GzID4gc2FcIDsKK+eRqiA+IGJhXCA7CivnkakgPiBlaVwgOwor55GjID4gc2FcIDsKK+eRnCA+IHl1XCA7CivnkZsgPiBlaVwgOwor55GaID4ga29cIDsKK+eRlyA+IGVuXCA7CivnkLYgPiBoYVwgOwor55C1ID4gYmlcIDsKK+eQsCA+IGVuXCA7CivnkKwgPiBlblwgOwor55CqID4ga2lcIDsKK+eQpiA+IGtpXCA7CivnkKUgPiBrb1wgOwor55CRID4gc2FcIDsKK+eQiiA+IHlhXCA7Civnj7ggPiBnb1wgOwor54+3ID4gYnVcIDsKK+ePtCA+IGdhXCA7Civnj7EgPiBlaVwgOwor54+lID4gamlcIDsKK+ePnSA+IGt1XCA7Civnj4IgPiBrYVwgOwor5467ID4gaGFcIDsKK+eOniA+IGh1XCA7CivnjpggPiBraVwgOwor546GID4gamlcIDsKK+eOgCA+IHJhXCA7CivnjbwgPiBiaVwgOwor5425ID4gcm9cIDsKK+eMqCA+IGVuXCA7CivnjKcgPiBrYVwgOwor54ykID4ga2lcIDsKK+eMoiA+IGtvXCA7CivnjJMgPiBrYVwgOwor54ySID4gZW5cIDsKK+eMhyA+IG91XCA7Civni7MgPiB5b1wgOwor54uVID4gb3VcIDsKK+eLkiA+IGhpXCA7Civni4kgPiBoaVwgOwor54uBID4gaW5cIDsKK+eKpyA+IGdpXCA7CivnipMgPiBzdVwgOwor54qCID4gcmlcIDsKK+eKgSA+IHJpXCA7Civnib4gPiBnb1wgOwor54mxID4ga2FcIDsKK+eJryA+IGtvXCA7CivniasgPiBrYVwgOwor54mgID4gdGFcIDsKK+eJgSA+IGthXCA7CivniL4gPiBqaVwgOwor54i5ID4gdGFcIDsKK+eIuCA+IGhhXCA7CivniLAgPiBlblwgOwor54isID4gaGFcIDsKK+eIkyA+IGVuXCA7Civnh6wgPiBraVwgOwor54eEID4gZW5cIDsKK+eGuiA+IGtpXCA7CivnhrkgPiBraVwgOwor54awID4gb3VcIDsKK+eGmSA+IGtpXCA7CivnhoggPiBraVwgOwor54aFID4gdW5cIDsKK+eFpiA+IGt1XCA7CivnhZUgPiBraVwgOwor54WQID4gZWlcIDsKK+eFhyA+IGtpXCA7CivnhYYgPiBrYVwgOwor54S4ID4ga29cIDsKK+eEsSA+IGVuXCA7CivnhLAgPiBlblwgOwor54SJID4gZW5cIDsKK+eDkyA+IGVpXCA7CivngqwgPiBrb1wgOwor54KJID4gcm9cIDsKK+eCgSA+IGtpXCA7CivngakgPiBlblwgOwor54GnID4gZW5cIDsKK+eBniA+IGhhXCA7CivngZUgPiByaVwgOwor54GUID4gZW5cIDsKK+eBjiA+IGVuXCA7CivngYggPiBrdVwgOwor54C0ID4gZWlcIDsKK+eAsCA+IGJpXCA7CivngK8gPiBlaVwgOwor54CgID4gZWlcIDsKK+eAmyA+IGVpXCA7CivngJggPiByb1wgOwor54CHID4gb3VcIDsKK+eAhSA+IGVpXCA7Civmv54gPiBoaVwgOwor5r+aID4gZWlcIDsKK+a+piA+IHlvXCA7CivmvpAgPiB1blwgOwor5r29ID4gaG9cIDsKK+a9niA+IHJvXCA7CivmvZkgPiBraVwgOwor5r2BID4gZWlcIDsKK+a8piA+IGdpXCA7CivmvJogPiBvdVwgOwor5ryTID4gcmlcIDsKK+a8iiA+IHJ1XCA7Civmu7kgPiBrb1wgOwor5ru4ID4ga29cIDsKK+a7tyA+IHJvXCA7Civmu6wgPiBrb1wgOwor5ruPID4gaHVcIDsKK+a7iyA+IGppXCA7Civmu4ogPiBraVwgOwor5ruDID4gb3VcIDsKK+a6syA+IHVuXCA7CivmuqsgPiBvblwgOwor5rqmID4gbWlcIDsKK+a6pSA+IGhvXCA7CivmuqAgPiBzYVwgOwor5rqIID4ga2lcIDsKK+a5riA+IGluXCA7CivmuYQgPiBiaVwgOwor5ri8ID4gYmlcIDsKK+a4tiA+IGVpXCA7CivmuK4gPiBrYVwgOwor5rijID4gc2FcIDsKK+a4nSA+IHl1XCA7CivmuJUgPiBlblwgOwor5riKID4gZW5cIDsKK+a4hCA+IGhpXCA7Civmt6QgPiB5b1wgOwor5regID4gaGlcIDsKK+a3nSA+IGhpXCA7Civmt4cgPiBraVwgOwor5ra5ID4gd2FcIDsKK+a2tCA+IGVuXCA7CivmtoIgPiB0b1wgOwor5rWvID4gZ29cIDsKK+a0vCA+IGFpXCA7CivmtLkgPiBlblwgOwor5rSzID4gam9cIDsKK+a0sSA+IGppXCA7CivmtI8gPiBqaVwgOwor5rSOID4ga2lcIDsKK+a0hyA+IGluXCA7Civms7EgPiBvdVwgOwor5rOdID4gc29cIDsKK+azkyA+IG91XCA7Civms5IgPiBrb1wgOwor5rK9ID4ga29cIDsKK+aysiA+IHRhXCA7CivmsrEgPiB0YVwgOwor5rKYID4gaGlcIDsKK+ayjSA+IGdvXCA7CivmsocgPiBlblwgOwor5rKCID4ga2lcIDsKK+axuyA+IGtvXCA7CivmsaogPiBvdVwgOwor5rGKID4gc2FcIDsKK+awvyA+IGtpXCA7CivmsLMgPiB1blwgOwor5rCyID4gdW5cIDsKK+awqCA+IGFuXCA7CivmsKQgPiBpblwgOwor5rCUID4ga2lcIDsKK+awjSA+IGt1XCA7CivmsIIgPiByaVwgOwor5q+5ID4geXVcIDsKK+avpiA+IGppXCA7Civmr5YgPiBoaVwgOwor5q+LID4gYnVcIDsKK+avhSA+IGtpXCA7Civmr4EgPiBraVwgOwor5q+AID4ga2lcIDsKK+auuSA+IGVpXCA7CivmrrcgPiBpblwgOwor5q60ID4gb3VcIDsKK+aurCA+IHRvXCA7CivmrqogPiBlaVwgOwor5q6eID4gaW5cIDsKK+augiA+IHNvXCA7CivmracgPiBraVwgOwor5q2lID4gaG9cIDsKK+atliA+IGtpXCA7CivmrLggPiBhaVwgOwor5qyoID4ga3VcIDsKK+aspyA+IG91XCA7CivmrKQgPiB5b1wgOwor5qybID4gaGFcIDsKK+asjyA+IHJhXCA7Civmq70gPiBpblwgOwor5quyID4geW9cIDsKK+arqCA+IHJvXCA7Civmq54gPiBlblwgOwor5quTID4gcm9cIDsKK+argyA+IGtpXCA7Civmqr8gPiBlblwgOwor5qq9ID4gamlcIDsKK+aqvCA+IGluXCA7CivmqrEgPiBraVwgOwor5qqlID4gZ2lcIDsKK+aqnyA+IGthXCA7CivmqpsgPiB0YVwgOwor5qqDID4gaW5cIDsKK+apsSA+IHp1XCA7CivmqasgPiBvdVwgOwor5qmiID4gZGFcIDsKK+apkiA+IHVuXCA7CivmqYYgPiBidVwgOwor5qmFID4gYm9cIDsKK+aouyA+IGtpXCA7CivmqLIgPiBqaVwgOwor5qidID4gc2FcIDsKK+anuyA+IGtpXCA7Civmp6UgPiBlaVwgOwor5qeOID4gc2FcIDsKK+amvyA+IGtpXCA7Civmpq4gPiBlaVwgOwor5qaoID4gc2FcIDsKK+amoSA+IHNvXCA7CivmppggPiBrdVwgOwor5qaRID4gZnVcIDsKK+amhiA+IHl1XCA7CivmpbkgPiBlaVwgOwor5qWwID4geXVcIDsKK+aloyA+IGJpXCA7CivmpaEgPiB5dVwgOwor5qWcID4ga29cIDsKK+almyA+IGtvXCA7CivmpZogPiBzb1wgOwor5qWVID4gZGFcIDsKK+algiA+IHNhXCA7CivmpLsgPiBlblwgOwor5qS1ID4ga2FcIDsKK+aksCA+IHlhXCA7Civmo6ogPiBlblwgOwor5qOdID4ga29cIDsKK+ajnCA+IHlvXCA7Civmo5AgPiBoaVwgOwor5qOLID4ga2lcIDsKK+ajiiA+IGtpXCA7CivmorYgPiBiaVwgOwor5qKzID4gc29cIDsKK+airSA+IHNhXCA7CivmoqkgPiByaVwgOwor5qKnID4gZ29cIDsKK+aipiA+IG11XCA7CivmopsgPiBkYVwgOwor5qKOID4gb3VcIDsKK+ahtCA+IGZ1XCA7CivmoasgPiBzYVwgOwor5qGXID4gdGFcIDsKK+ahjSA+IGtvXCA7CivmoK0gPiBqaVwgOwor5qCpID4ga3VcIDsKK+agpyA+IGVpXCA7Civmn7IgPiBoaVwgOwor5p+wID4gbmFcIDsKK+afryA+IGthXCA7Civmn6cgPiBrb1wgOwor5p+lID4gc2FcIDsKK+afpCA+IHNhXCA7Civmn6EgPiBlaVwgOwor5p+OID4gZnVcIDsKK+afhSA+IGppXCA7Civmn4EgPiB0YVwgOwor5p+AID4gaGlcIDsKK+aeuyA+IGVpXCA7CivmnrggPiBrdVwgOwor5p6zID4ga2lcIDsKK+aepiA+IHJvXCA7CivmnpkgPiBnYVwgOwor5p6RID4ga29cIDsKK+aejiA+IGh1XCA7CivmnokgPiBvdVwgOwor5p6HID4gaGlcIDsKK+adtyA+IGhhXCA7CivmnZ4gPiBrb1wgOwor5p2cID4gZG9cIDsKK+adiCA+IHNhXCA7CivmnLYgPiBkYVwgOwor5py1ID4gZGFcIDsKK+acoCA+IGVpXCA7CivmnJ4gPiBraVwgOwor5pyPID4gaGlcIDsKK+achyA+IGhpXCA7Civmm70gPiB6b1wgOwor5pu1ID4gZWlcIDsKK+absSA+IG91XCA7Civmm6YgPiBnaVwgOwor5puWID4gYWlcIDsKK+abgSA+IGtpXCA7Civmm4AgPiBlaVwgOwor5pq/ID4ga2lcIDsKK+aaqCA+IGtpXCA7CivmmpwgPiBmdVwgOwor5pqbID4gc2FcIDsKK+aajiA+IGVpXCA7CivmmokgPiBraVwgOwor5pqIID4gdW5cIDsKK+aagyA+IGhpXCA7CivmmoAgPiBvdVwgOwor5pm8ID4gZW5cIDsKK+aZuyA+IGFuXCA7CivmmbcgPiBraVwgOwor5pmkID4gZ29cIDsKK+aZoSA+IGhvXCA7CivmmZ4gPiBraVwgOwor5pmPID4gYW5cIDsKK+aYuSA+IGFpXCA7CivmmLcgPiBvblwgOwor5pirID4ga3VcIDsKK+aYliA+IGVuXCA7CivmmIggPiBrb1wgOwor5piAID4gaW5cIDsKK+aXvyA+IGdvXCA7Civml7kgPiBqaVwgOwor5pe0ID4ga3VcIDsKK+aXoyA+IGtpXCA7Civml6EgPiBraVwgOwor5pegID4gYnVcIDsKK+aXnyA+IHlvXCA7Civml44gPiBqaVwgOwor5peJID4gZnVcIDsKK+aXgiA+IGtpXCA7Civmlp0gPiBrYVwgOwor5pW6ID4ga3VcIDsKK+aVpyA+IGtpXCA7CivmlZggPiBqb1wgOwor5pWNID4gam9cIDsKK+aViSA+IGJpXCA7CivmlLEgPiBraVwgOwor5pSwID4ga2lcIDsKK+aUniA+IHJhXCA7CivmlJYgPiBlaVwgOwor5pO1ID4gbWFcIDsKK+aTqSA+IGp1XCA7Civmkr4gPiB0YVwgOwor5pKtID4gaGFcIDsKK+aSnSA+IGtpXCA7CivmkbggPiBtb1wgOwor5pGjID4gc2FcIDsKK+aQvSA+IHRhXCA7CivmkLUgPiBvblwgOwor5pCZID4gbnVcIDsKK+aQkyA+IHNhXCA7Civmj7ggPiBzYVwgOwor5o+2ID4geWFcIDsKK+aPtCA+IGVuXCA7Civmj64gPiBraVwgOwor5o+cID4gZW5cIDsKK+aPhiA+IGtpXCA7Civmj4QgPiB5dVwgOwor5o6+ID4gZW5cIDsKK+aOniA+IGVuXCA7Civmjo4gPiBraVwgOwor5o28ID4gZGFcIDsKK+aNrCA+IGh1XCA7CivmjZMgPiBzZVwgOwor5o2QID4gZW5cIDsKK+aNgiA+IGdvXCA7CivmjLwgPiBkYVwgOwor5oyrID4gemFcIDsKK+aMqiA+IGRhXCA7CivmjKcgPiBrdVwgOwor5oyTID4gdGFcIDsKK+aMkCA+IGRhXCA7CivmjIkgPiBhblwgOwor5ou/ID4gZGFcIDsKK+aLvSA+IGVpXCA7Civmi5cgPiBvdVwgOwor5ouWID4gdGFcIDsKK+aLlSA+IHRhXCA7Civmi48gPiBkYVwgOwor5ouKID4gZnVcIDsKK+aLhyA+IGJvXCA7CivmircgPiBoaVwgOwor5oqzID4gamlcIDsKK+aKjiA+IHVuXCA7CivmioogPiB3YVwgOwor5om+ID4ga2FcIDsKK+aJryA+IHRhXCA7CivmiaAgPiBzYVwgOwor5omIID4ga29cIDsKK+aIvSA+IGtvXCA7CivmiLcgPiBrb1wgOwor5oi2ID4ga29cIDsKK+aIsSA+IGdpXCA7CivmiKMgPiBraVwgOwor5oiTID4ga2FcIDsKK+aIjSA+IGp1XCA7CivmiIogPiBib1wgOwor5oevID4gZnVcIDsKK+aHpyA+IGRhXCA7Civmh6YgPiBkYVwgOwor5oehID4gYmFcIDsKK+aHlSA+IGVuXCA7Civmh4ogPiBvdVwgOwor5oauID4gYnVcIDsKK+aGnCA+IHRhXCA7CivmhpkgPiBraVwgOwor5oaYID4ga2lcIDsKK+aFjSA+IHVuXCA7CivmhYggPiBqaVwgOwor5oS+ID4ga2lcIDsKK+aErCA+IHNvXCA7CivmhKsgPiBzb1wgOwor5oSqID4gdW5cIDsKK+aEpyA+IGtpXCA7CivmhKAgPiB1blwgOwor5oSUID4gaW5cIDsKK+aDsiA+IHVuXCA7Civmg7AgPiBkYVwgOwor5oOnID4ga3VcIDsKK+aDoiA+IHNhXCA7Civmg44gPiBraVwgOwor5oOIID4ga2FcIDsKK+aCsSA+IGhpXCA7CivmgqggPiBqaVwgOwor5oKnID4gcmlcIDsKK+aCniA+IGdvXCA7CivmgpUgPiBraVwgOwor5oKRID4gaG9cIDsKK+aChiA+IHlvXCA7CivmgoIgPiBoaVwgOwor5oKBID4gZW5cIDsKK+aBlyA+IGtvXCA7CivmgZUgPiBqb1wgOwor5oGRID4ga2lcIDsKK+aBgyA+IGppXCA7CivmgYEgPiBpblwgOwor5oCpID4gamlcIDsKK+aApCA+IGh1XCA7CivmgJkgPiBrb1wgOwor5oCYID4ga29cIDsKK+aAlSA+IGhhXCA7Civlv68gPiBraVwgOwor5b+sID4geW9cIDsKK+W/pCA+IGdvXCA7Civlv6IgPiBnb1wgOwor5b69ID4ga2lcIDsKK+W+jSA+IGFpXCA7CivlvoIgPiBzb1wgOwor5b26ID4gb3VcIDsKK+W9tSA+IHRhXCA7CivlvYwgPiBiaVwgOwor5bytID4gYmlcIDsKK+W8qSA+IGRvXCA7CivlvKcgPiBrb1wgOwor5byjID4gaHVcIDsKK+W8nSA+IGhhXCA7CivlvJYgPiB0ZVwgOwor5byNID4gbmlcIDsKK+W8hyA+IGVuXCA7CivlvIMgPiBraVwgOwor5bu0ID4gaW5cIDsKK+W7riA+IGVpXCA7Civlu6EgPiBidVwgOwor5bucID4gdG9cIDsKK+W7miA+IHp1XCA7Civlu5UgPiBpblwgOwor5buIID4ga2FcIDsKK+W6viA+IHl1XCA7CivlurMgPiBoaVwgOwor5bqvID4gaG9cIDsKK+W6riA+IGl1XCA7CivluqogPiBraVwgOwor5bqMID4gZ2FcIDsKK+W6iyA+IGtpXCA7CivluoAgPiBoaVwgOwor5bmgID4ga29cIDsKK+W5kSA+IGtpXCA7CivluY8gPiBrYVwgOwor5bmBID4gc3VcIDsKK+W4viA+IHRvXCA7CivluJQgPiBoaVwgOwor5biRID4gZG9cIDsKK+W4jSA+IGtvXCA7CivluIogPiBoYVwgOwor5biGID4gaG9cIDsKK+W3syA+IG1pXCA7Civlt5kgPiBraVwgOwor5beNID4gZ2lcIDsKK+W3iyA+IGtpXCA7Civlt4cgPiBraVwgOwor5ba3ID4gZ2lcIDsKK+W2tCA+IGF1XCA7CivltqwgPiBnaVwgOwor5baeID4gdGFcIDsKK+W2kyA+IGhhXCA7CivltocgPiBrdVwgOwor5baBID4gcnVcIDsKK+W2gCA+IHRvXCA7CivltbMgPiBzYVwgOwor5bWvID4gc2FcIDsKK+W1oSA+IG91XCA7CivltZ8gPiBraVwgOwor5bWeID4gdG9cIDsKK+W1nCA+IGtpXCA7CivltZYgPiBzYVwgOwor5bWLID4gYmlcIDsKK+W0syA+IHl1XCA7CivltKYgPiBlblwgOwor5bSLID4ga2FcIDsKK+WzuSA+IHRvXCA7Civls7IgPiByaVwgOwor5bOsID4gaG9cIDsKK+WzqyA+IHlhXCA7Civls6kgPiBnYVwgOwor5bOoID4gZ2FcIDsKK+WzniA+IGtpXCA7Civls5sgPiByaVwgOwor5bOZID4gamlcIDsKK+WzlyA+IGdpXCA7Civls5YgPiBhblwgOwor5bOUID4gYm9cIDsKK+WzjyA+IGppXCA7Civls4ogPiBodVwgOwor5bK7ID4gamlcIDsKK+WytSA+IGtvXCA7CivlsrQgPiBrdVwgOwor5bKvID4gaGlcIDsKK+WyriA+IHRhXCA7CivlsqggPiBzb1wgOwor5bKlID4gaGFcIDsKK+WylCA+IHNhXCA7CivlspMgPiBraVwgOwor5bKQID4ga2lcIDsKK+WyiCA+IGthXCA7CivlsoYgPiBldVwgOwor5bG6ID4ga2lcIDsKK+WxriA+IHNhXCA7Civlsa0gPiBraVwgOwor5bGoID4ga3VcIDsKK+WxoiA+IHJ1XCA7CivlsaAgPiB0b1wgOwor5bGEID4gaGlcIDsKK+WxgyA+IGtpXCA7CivlsYEgPiBoZVwgOwor5bC5ID4gaW5cIDsKK+WwryA+IGtpXCA7CivlsK4gPiB0YVwgOwor5bCrID4gb3VcIDsKK+WwqiA+IG91XCA7CivlsKkgPiBvdVwgOwor5bCjID4gb3VcIDsKK+WwoiA+IG91XCA7CivlsJQgPiBqaVwgOwor5bCTID4gamlcIDsKK+WwkiA+IGppXCA7CivlsIMgPiBodVwgOwor5bCAID4gaGFcIDsKK+WvsiA+IGdpXCA7Civlr6QgPiBnb1wgOwor5a+gID4ga3VcIDsKK+WvmSA+IHl1XCA7Civlr4MgPiBlblwgOwor5a6xID4gc2FcIDsKK+WukCA+IGdpXCA7Civlro4gPiBldVwgOwor5a6EID4ga2lcIDsKK+WugyA+IHRhXCA7Civlrb4gPiBlaVwgOwor5a26ID4ganVcIDsKK+WttyA+IHJpXCA7CivlrbUgPiBmdVwgOwor5a2lID4gZG9cIDsKK+WtmiA+IGZ1XCA7CivlrYsgPiByaVwgOwor5ay/ID4gZW5cIDsKK+WsvSA+IGVuXCA7CivlrLcgPiBiYVwgOwor5ay0ID4gZWlcIDsKK+WssCA+IGVpXCA7CivlrK4gPiBlblwgOwor5aykID4gYmFcIDsKK+WsoSA+IGFpXCA7CivlrJQgPiBodVwgOwor5ayNID4gYmlcIDsKK+WsgCA+IGtpXCA7Civlq7cgPiB0YVwgOwor5au1ID4gYnVcIDsKK+WrtCA+IGtvXCA7Civlq64gPiBrb1wgOwor5autID4ga29cIDsKK+WrqyA+IGJvXCA7Civlq6MgPiBlblwgOwor5auiID4ga2lcIDsKK+WroCA+IHJpXCA7Civlq5sgPiBlaVwgOwor5auXID4gb3VcIDsKK+WrlSA+IGVpXCA7Civlq4ogPiBzb1wgOwor5aq/ID4ga2lcIDsKK+WqvSA+IGJvXCA7CivlqrogPiBiaVwgOwor5aq0ID4gZW5cIDsKK+WqsSA+IGV1XCA7CivlqqwgPiBob1wgOwor5aqqID4gb3VcIDsKK+WqqSA+IGtvXCA7CivlqqAgPiB0YVwgOwor5aqWID4gZWlcIDsKK+WqlSA+IGVuXCA7CivlqpAgPiBraVwgOwor5aqOID4gc29cIDsKK+WqhCA+IGJpXCA7Civlqb0gPiBrYVwgOwor5am6ID4gYnVcIDsKK+WprCA+IGluXCA7CivlqaMgPiBpblwgOwor5amfID4ga29cIDsKK+WpkyA+IGhpXCA7CivlqZAgPiB3YVwgOwor5amNID4ga2lcIDsKK+WouCA+IGtpXCA7CivlqLAgPiBqaVwgOwor5aivID4gZ29cIDsKK+WorSA+IGtpXCA7CivlqKwgPiBidVwgOwor5aiqID4gZ29cIDsKK+WopSA+IGdhXCA7CivlqJwgPiBkYVwgOwor5aibID4gZ29cIDsKK+WokyA+IGJpXCA7CivlqJIgPiBib1wgOwor5aiMID4gcmlcIDsKK+WohCA+IHJ1XCA7Civlp70gPiBraVwgOwor5ae7ID4gaW5cIDsKK+WnuSA+IHRhXCA7Civlp7YgPiBvdVwgOwor5aeyID4gYW5cIDsKK+WnsSA+IGthXCA7Civlp6wgPiBraVwgOwor5aelID4gYm9cIDsKK+WnnSA+IHN1XCA7Civlp44gPiBhdVwgOwor5aeHID4gaHVcIDsKK+WnhiA+IGJvXCA7Civlp4EgPiBrdVwgOwor5aeAID4ga2FcIDsKK+WmvCA+IGhpXCA7CivlprQgPiBlblwgOwor5aauID4gamlcIDsKK+WmpSA+IGRhXCA7CivlpqQgPiB5b1wgOwor5aajID4gaGlcIDsKK+WmnyA+IGFuXCA7CivlppggPiB1blwgOwor5aaSID4gdG9cIDsKK+WmiyA+IGZ1XCA7CivlpoMgPiBoaVwgOwor5aW8ID4gdGFcIDsKK+WlsCA+IGhpXCA7CivlpasgPiBpblwgOwor5aWcID4gaGlcIDsKK+WlkyA+IHRhXCA7CivlpYQgPiBlblwgOwor5aS/ID4gaGFcIDsKK+WkuCA+IGtvXCA7CivlpLYgPiBoaVwgOwor5aS1ID4gZW5cIDsKK+WkpSA+IGthXCA7CivlpKQgPiBpblwgOwor5aShID4ga2lcIDsKK+WkmyA+IHRhXCA7CivlpJcgPiBlblwgOwor5aSUID4ga2lcIDsKK+WkkyA+IGthXCA7CivlpI4gPiBzYVwgOwor5aSDID4ga29cIDsKK+WjvSA+IGp1XCA7Civlo7ogPiBrb1wgOwor5aOpID4gaGFcIDsKK+WjoSA+IGVpXCA7Civlo5sgPiBlblwgOwor5aOaID4gcm9cIDsKK+WjkiA+IGFpXCA7Civlo4ggPiBvblwgOwor5aOEID4geWFcIDsKK+WiuiA+IG91XCA7CivlorIgPiBib1wgOwor5aKvID4gZGFcIDsKK+WijSA+IGtpXCA7CivlobggPiBvdVwgOwor5aGnID4gYWlcIDsKK+WhlSA+IG91XCA7CivloZEgPiBzb1wgOwor5aGQID4gc29cIDsKK+WhiyA+IGVpXCA7CivloYggPiBraVwgOwor5aC4ID4gaHVcIDsKK+WgtyA+IGFuXCA7CivloLYgPiBrdVwgOwor5aCzID4gYmlcIDsKK+WgsCA+IGVuXCA7CivloKwgPiB5dVwgOwor5aCjID4gZ3VcIDsKK+WgnSA+IGthXCA7CivloJkgPiBpblwgOwor5aCNID4gdG9cIDsKK+WgjCA+IGtvXCA7CivloIEgPiBrYVwgOwor5Z+8ID4ga2lcIDsKK+WftSA+IHRhXCA7Civln68gPiBlblwgOwor5Z+nID4ga3VcIDsKK+WfpCA+IGhpXCA7Civln6AgPiBmdVwgOwor5Z+UID4gaG9cIDsKK+WeuiA+IGh1XCA7CivlnqogPiBoYVwgOwor5Z6eID4gdGFcIDsKK+WenSA+IGtpXCA7CivlnpwgPiBkYVwgOwor5Z6bID4gZGFcIDsKK+WegCA+IGtvXCA7Civlnb8gPiBmdVwgOwor5Z23ID4ga2FcIDsKK+WdsyA+IGF1XCA7CivlnbEgPiBhdVwgOwor5Z2vID4gaGlcIDsKK+WdrCA+IGthXCA7CivlnaEgPiBoYVwgOwor5Z2SID4gaGlcIDsKK+WcuyA+IGtpXCA7CivlnK4gPiBoaVwgOwor5ZyrID4gYXVcIDsKK+WclyA+IHRvXCA7CivlnJQgPiBvdVwgOwor5ZyRID4gaG9cIDsKK+WcjiA+IGVuXCA7Civlm6YgPiBlblwgOwor5ZuZID4gaW5cIDsKK+WbjiA+IHNvXCA7Civlm4wgPiBzb1wgOwor5ZuJID4gcmFcIDsKK+WatiA+IG91XCA7CivlmrIgPiB0YVwgOwor5ZqxID4ga2lcIDsKK+WarSA+IGhpXCA7CivlmqcgPiByb1wgOwor5ZqlID4gZW5cIDsKK+WanyA+IHJpXCA7CivlmpwgPiBiaVwgOwor5ZqYID4gaXVcIDsKK+WalSA+IHJvXCA7CivlmoogPiBoaVwgOwor5ZqFID4ganVcIDsKK+WZviA+IGluXCA7CivlmbMgPiBndVwgOwor5ZmvID4gYWlcIDsKK+WZriA+IGVuXCA7CivlmasgPiBhYVwgOwor5ZmVID4ga2lcIDsKK+WZkCA+IGtpXCA7CivlmYUgPiBraVwgOwor5Zi7ID4ga2lcIDsKK+WYsyA+IGtpXCA7CivlmLAgPiBraVwgOwor5ZifID4gdG9cIDsKK+WYnCA+IGJhXCA7CivlmJsgPiBtYVwgOwor5ZiZID4gaGFcIDsKK+WYkSA+IGtvXCA7CivlmI8gPiBrYVwgOwor5ZiJID4ga2FcIDsKK+WXqSA+IHNhXCA7Civll6YgPiBzYVwgOwor5ZePID4gc2FcIDsKK+WXjiA+IGJhXCA7Civll4kgPiBzb1wgOwor5ZeEID4gc2FcIDsKK+WXgiA+IGV1XCA7CivllrsgPiB5dVwgOwor5Za2ID4gZWlcIDsKK+WWsyA+IHNhXCA7CivllrEgPiByaVwgOwor5ZapID4geXVcIDsKK+WWpSA+IHRvXCA7CivllqMgPiBrdVwgOwor5ZafID4ga2lcIDsKK+WWkyA+IGV1XCA7CivllpEgPiBpblwgOwor5ZaOID4ga2FcIDsKK+WWgiA+IGtpXCA7CivllaQgPiBoaVwgOwor5ZWdID4ga2FcIDsKK+WVmiA+IGhpXCA7CivllZggPiBlblwgOwor5ZWOID4gZ29cIDsKK+WUuSA+IHlvXCA7CivllLcgPiB5b1wgOwor5ZS1ID4gYW5cIDsKK+WUsiA+IGppXCA7CivllK0gPiBraVwgOwor5ZSsID4ga2FcIDsKK+WUlCA+IGdvXCA7CivllI8gPiBraVwgOwor5ZSOID4gcmlcIDsKK+WUiyA+IHRvXCA7CivllIggPiBvdVwgOwor5ZSGID4gc2FcIDsKK+WUgCA+IGl1XCA7Civlk78gPiBrYVwgOwor5ZO6ID4gaG9cIDsKK+WTtiA+IGJhXCA7Civlk6wgPiBrYVwgOwor5ZOqID4gZGFcIDsKK+WTpyA+IGthXCA7Civlk6YgPiBnYVwgOwor5ZOlID4ga2FcIDsKK+WTiSA+IHlhXCA7Civlk4cgPiBhaVwgOwor5ZK8ID4ga2FcIDsKK+WSuyA+IGt1XCA7CivlkqogPiBiaVwgOwor5ZKpID4gYmlcIDsKK+WSpSA+IGtpXCA7CivlkqQgPiB0YVwgOwor5ZKhID4gamlcIDsKK+WSnCA+IHRhXCA7CivlkpYgPiBrYVwgOwor5ZKVID4ga29cIDsKK+WSkSA+IGRhXCA7CivlkpAgPiBob1wgOwor5ZKPID4gZWlcIDsKK+WSiiA+IHdhXCA7CivlkokgPiBhdVwgOwor5ZKDID4gdGFcIDsKK+WSgCA+IHNvXCA7Civlkb8gPiBrYVwgOwor5ZG4ID4gaGlcIDsKK+WRtiA+IGRvXCA7CivlkbUgPiBrYVwgOwor5ZG0ID4ga3VcIDsKK+WRsSA+IGtvXCA7Civlka4gPiBraVwgOwor5ZGtID4gZWlcIDsKK+WRrCA+IGtpXCA7CivlkaYgPiBpdVwgOwor5ZGiID4gamlcIDsKK+WRjSA+IHVuXCA7CivlkYsgPiBodVwgOwor5ZGAID4gZ2FcIDsKK+WQvSA+IGluXCA7CivlkLQgPiBnb1wgOwor5ZCzID4gZ29cIDsKK+WQpyA+IGhhXCA7CivlkJQgPiBzZVwgOwor5ZCTID4ga2FcIDsKK+WQkiA+IHRhXCA7CivlkIEgPiBrdVwgOwor5Y+5ID4gaXVcIDsKK+WPtSA+IGhhXCA7Civlj6cgPiBrYVwgOwor5Y+hID4gZWlcIDsKK+WPmiA+IGthXCA7Civlj4YgPiBhaVwgOwor5Y60ID4gZW5cIDsKK+WOrCA+IGtpXCA7CivljqYgPiBrYVwgOwor5Y6eID4gaGlcIDsKK+WOjyA+IHNhXCA7CivljoogPiBrYVwgOwor5Y2mID4ga2FcIDsKK+WNiSA+IGtpXCA7CivljYAgPiBrdVwgOwor5Yy9ID4gZW5cIDsKK+WMvCA+IGFuXCA7CivljLogPiBrdVwgOwor5YytID4ga2lcIDsKK+WMrCA+IHl1XCA7CivljKogPiBoaVwgOwor5YyVID4gaGlcIDsKK+WMjiA+IG91XCA7CivljIAgPiBpblwgOwor5Yu7ID4gaW5cIDsKK+WLqSA+IGVpXCA7Civli58gPiBib1wgOwor5YucID4gb3VcIDsKK+WLmiA+IGVpXCA7CivlirggPiBhaVwgOwor5YqsID4ga3VcIDsKK+WKmSA+IHJpXCA7CivlipggPiBiYVwgOwor5YqTID4gZ2lcIDsKK+WJuiA+IHJpXCA7Civlia4gPiBrYVwgOwor5YmmID4gZW5cIDsKK+WJoSA+IGVuXCA7CivliZ4gPiBraVwgOwor5YmYID4ga2lcIDsKK+WJlSA+IGhpXCA7CivliYkgPiBzYVwgOwor5YmGID4gcmFcIDsKK+WJgSA+IHRhXCA7CivliLUgPiBqaVwgOwor5Yi0ID4gdGFcIDsKK+WIsyA+IGtvXCA7CivliJUgPiByaVwgOwor5YiSID4ga2FcIDsKK+WIjyA+IGtpXCA7CivliIkgPiBraVwgOwor5Ye5ID4gb3VcIDsKK+WHoCA+IGtpXCA7Civlh54gPiBraVwgOwor5YeSID4gZ2lcIDsKK+WHkCA+IGluXCA7Civlh4UgPiBrb1wgOwor5Ya0ID4gZ29cIDsKK+WGsSA+IGdvXCA7CivlhqggPiBmdVwgOwor5YakID4gZW5cIDsKK+WGniA+IGJpXCA7Civlhp0gPiBnaVwgOwor5YaYID4gaW5cIDsKK+WGlCA+IGt1XCA7Civlho4gPiBrYVwgOwor5YaAID4ga2lcIDsKK+WFviA+IGtpXCA7CivlhbkgPiBqaVwgOwor5YWqID4geXVcIDsKK+WFlyA+IGVuXCA7CivlhZQgPiB0b1wgOwor5YWRID4gZGFcIDsKK+WFjCA+IGRhXCA7CivlhYEgPiBpblwgOwor5YS6ID4gbmFcIDsKK+WEuCA+IHJhXCA7CivlhJ4gPiBqaVwgOwor5YSbID4gYnVcIDsKK+WElyA+IGdpXCA7CivlhJIgPiBqdVwgOwor5YSNID4gc2FcIDsKK+WDviA+IGFpXCA7Civlg7EgPiBrb1wgOwor5YOfID4ga2lcIDsKK+WDmyA+IGtpXCA7Civlg5YgPiBraVwgOwor5YODID4gYmlcIDsKK+WCvyA+IGVuXCA7CivlgrsgPiBzYVwgOwor5YK0ID4ga3VcIDsKK+WCoiA+IGthXCA7Civlgp8gPiBhdVwgOwor5YKeID4gc2FcIDsKK+WCnCA+IGV1XCA7CivlgowgPiBiYVwgOwor5YKKID4gaW5cIDsKK+WChSA+IGZ1XCA7CivlgoMgPiBzb1wgOwor5YG5ID4gYmlcIDsKK+WBpyA+IHRhXCA7CivlgaQgPiB5dVwgOwor5YGjID4gZW5cIDsKK+WBoCA+IGV1XCA7CivlgYwgPiBqYVwgOwor5YGDID4gZW5cIDsKK+WBgCA+IGVpXCA7CivlgLsgPiB5YVwgOwor5YC1ID4gYnVcIDsKK+WAriA+IHJhXCA7CivlgKAgPiBraVwgOwor5YCbID4ga2lcIDsKK+WAhyA+IGVuXCA7Civkv74gPiBoaVwgOwor5L+7ID4gYmlcIDsKK+S/tyA+IGhpXCA7Civkv7EgPiBrdVwgOwor5L+wID4ga2FcIDsKK+S/niA+IHl1XCA7Civkv5ogPiByaVwgOwor5L+ZID4ga2lcIDsKK+S/mCA+IGZ1XCA7Civkv5AgPiByaVwgOwor5L+MID4gZnVcIDsKK+S/iSA+IGdvXCA7Civkv4EgPiBndVwgOwor5L6zID4gc2FcIDsKK+S+oiA+IGJ1XCA7Civkvp4gPiBqb1wgOwor5L6VID4gamlcIDsKK+S+kiA+IGFuXCA7Civkvo4gPiBiaVwgOwor5L6MID4gaW5cIDsKK+S+iSA+IGthXCA7CivkvbkgPiBraVwgOwor5L20ID4gamlcIDsKK+S9syA+IGthXCA7CivkvaAgPiBqaVwgOwor5L2SID4gYXVcIDsKK+S9iCA+IGhvXCA7CivkvYEgPiBhaVwgOwor5Ly+ID4gaGlcIDsKK+S8siA+IGppXCA7CivkvLEgPiBqaVwgOwor5LywID4ga29cIDsKK+S8riA+IGRvXCA7CivkvJkgPiBrYVwgOwor5LyWID4gZG9cIDsKK+S8lSA+IGh1XCA7CivkvIwgPiBhaVwgOwor5LyDID4geW9cIDsKK+S7tSA+IGtvXCA7Civku7MgPiBoaVwgOwor5LuoID4gc2FcIDsKK+S7myA+IHRhXCA7Civku4YgPiBmdVwgOwor5LuFID4gaHVcIDsKK+S6uSA+IGJpXCA7CivkurggPiB0YVwgOwor5LqxID4geWFcIDsKK+S6kyA+IGtpXCA7CivkuoogPiBqaVwgOwor5Lm1ID4gZW5cIDsKK+S5nCA+IGJhXCA7CivkuZogPiBpblwgOwor5LmVID4ga29cIDsKK+S5jiA+IGthXCA7CivkuYggPiBldVwgOwor5LiqID4ga2FcIDsKK+S4lSA+IGhpXCA7CivkuIwgPiBraVwgOwor5LiFID4ga2FcIDsKK+W4tyA+IGlcIDsKK+eVsCA+IGlcIDsKK+eVjyA+IGlcIDsKK+WwviA+IG9cIDsKK+WuhyA+IHVcIDsKK+isgiA+IGlcIDsKK+eIsiA+IGlcIDsKK+WogSA+IGlcIDsKK+WnlCA+IGlcIDsKK+WcjSA+IGlcIDsKK+WbsiA+IGlcIDsKK+WXmiA+IG9cIDsKK+axnyA+IGVcIDsKK+axmiA+IG9cIDsKK+iQjiA+IGlcIDsKK+WMuyA+IGlcIDsKK+akhSA+IGlcIDsKK+iDgyA+IGlcIDsKK+WBiSA+IGlcIDsKK+mgpCA+IGlcIDsKK+S+nSA+IGVcIDsKK+S8iiA+IGlcIDsKK+S7pSA+IGlcIDsKK+S6niA+IGFcIDsKK+mYvyA+IGFcIDsKK+e3kiA+IG9cIDsKK+aWvCA+IG9cIDsKK+e2rSA+IGlcIDsKK+e1tSA+IGVcIDsKK+enuyA+IGlcIDsKK+mGqyA+IGlcIDsKK+aFsCA+IGlcIDsKK+aEjyA+IGlcIDsKK+aDoSA+IG9cIDsKK+mBuiA+IGlcIDsKK+mBlSA+IGlcIDsKK+m3viA+IGlcIDsKK+m3pyA+IGlcIDsKK+m1tiA+IGFcIDsKK+m1nCA+IHVcIDsKK+mwniA+IG9cIDsKK+mwhCA+IGlcIDsKK+mupyA+IGlcIDsKK+mqrCA+IHVcIDsKK+mqqyA+IGlcIDsKK+mqqiA+IGlcIDsKK+mlkCA+IGlcIDsKK+mhiiA+IGlcIDsKK+mgpSA+IGlcIDsKK+mgiSA+IGlcIDsKK+mfmSA+IGlcIDsKK+mfkSA+IGlcIDsKK+mfiyA+IGlcIDsKK+mcqCA+IGlcIDsKK+mbqSA+IHVcIDsKK+maliA+IG9cIDsKK+mXiCA+IGlcIDsKK+mWvCA+IGFcIDsKK+mTlCA+IGFcIDsKK+mQvyA+IGlcIDsKK+mQmiA+IGFcIDsKK+mMjyA+IGFcIDsKK+mKpSA+IGlcIDsKK+mJryA+IGlcIDsKK+mIsyA+IGFcIDsKK+mHqiA+IHVcIDsKK+mFjyA+IGlcIDsKK+mElCA+IG9cIDsKK+mCmCA+IHVcIDsKK+mAtiA+IGlcIDsKK+i/uyA+IGlcIDsKK+i/pCA+IGlcIDsKK+i/hiA+IGlcIDsKK+i/giA+IHVcIDsKK+iyvSA+IGlcIDsKK+iypCA+IGlcIDsKK+ikmCA+IGlcIDsKK+iimCA+IGlcIDsKK+iesSA+IGlcIDsKK+ieoCA+IGlcIDsKK+iekCA+IG9cIDsKK+ieiSA+IG9cIDsKK+icvCA+IGlcIDsKK+icsiA+IGlcIDsKK+ibnCA+IGlcIDsKK+iZtiA+IHVcIDsKK+iUvyA+IGlcIDsKK+iRsyA+IGlcIDsKK+iNvSA+IGlcIDsKK+iNjyA+IGVcIDsKK+iMoSA+IHVcIDsKK+iLoiA+IGlcIDsKK+iLoSA+IGlcIDsKK+iKmyA+IGlcIDsKK+iDsCA+IGlcIDsKK+iChCA+IGlcIDsKK+e3ryA+IGlcIDsKK+e3rSA+IGlcIDsKK+e0hiA+IHVcIDsKK+ewgyA+IGlcIDsKK+ervSA+IHVcIDsKK+emuSA+IHVcIDsKK+emlSA+IGlcIDsKK+ejiCA+IGlcIDsKK+efoyA+IGlcIDsKK+ebgiA+IHVcIDsKK+eYgiA+IGFcIDsKK+eXvyA+IGlcIDsKK+eXviA+IGFcIDsKK+eXjyA+IGlcIDsKK+eXjSA+IGlcIDsKK+eWtCA+IGFcIDsKK+eRpiA+IG9cIDsKK+eRiyA+IGlcIDsKK+eRgCA+IHVcIDsKK+ePhiA+IGlcIDsKK+eOlyA+IHVcIDsKK+eMrCA+IGlcIDsKK+eMlyA+IGlcIDsKK+eKhCA+IGlcIDsKK+eGqCA+IGlcIDsKK+eFkiA+IGlcIDsKK+a/sCA+IGlcIDsKK+a8qiA+IGlcIDsKK+a5iyA+IGlcIDsKK+a4rSA+IGlcIDsKK+a0vyA+IG9cIDsKK+a0pyA+IGlcIDsKK+axoSA+IG9cIDsKK+axmSA+IG9cIDsKK+awrCA+IGFcIDsKK+aviSA+IGlcIDsKK+atjSA+IG9cIDsKK+asuSA+IGlcIDsKK+alsiA+IGlcIDsKK+akuCA+IGlcIDsKK+akjyA+IGFcIDsKK+ahmSA+IHVcIDsKK+afgiA+IGlcIDsKK+aesSA+IGlcIDsKK+adhyA+IG9cIDsKK+adhSA+IHVcIDsKK+aakCA+IGlcIDsKK+aXliA+IGlcIDsKK+aVoSA+IGlcIDsKK+aUuiA+IGlcIDsKK+aJnCA+IHVcIDsKK+aJhiA+IGlcIDsKK+aJhSA+IGlcIDsKK+aHvyA+IGlcIDsKK+aEhyA+IGlcIDsKK+aDnyA+IGlcIDsKK+aCmCA+IGlcIDsKK+aBmiA+IGlcIDsKK+aAoSA+IGlcIDsKK+W+qyA+IGlcIDsKK+W9niA+IGlcIDsKK+W9nSA+IGlcIDsKK+W9nCA+IGlcIDsKK+W9myA+IGlcIDsKK+W9miA+IGlcIDsKK+W9mSA+IGlcIDsKK+W8rCA+IGlcIDsKK+W8mSA+IG9cIDsKK+W8giA+IGlcIDsKK+W5gyA+IGlcIDsKK+W3uCA+IGlcIDsKK+W3siA+IGlcIDsKK+W1qCA+IG9cIDsKK+W0uiA+IGlcIDsKK+W0oyA+IGlcIDsKK+WxmSA+IGFcIDsKK+WvqiA+IGlcIDsKK+WtsiA+IGFcIDsKK+WqpiA+IGlcIDsKK+WqmSA+IGlcIDsKK+WprSA+IGFcIDsKK+WpgCA+IGFcIDsKK+WovyA+IGFcIDsKK+WogyA+IGFcIDsKK+WnqCA+IGlcIDsKK+WmuCA+IGFcIDsKK+WjnSA+IGlcIDsKK+WhoiA+IG9cIDsKK+WgiiA+IGFcIDsKK+WfoSA+IG9cIDsKK+WdqCA+IGlcIDsKK+WcryA+IGlcIDsKK+WcrCA+IG9cIDsKK+WcqSA+IHVcIDsKK+WblyA+IGlcIDsKK+WZgSA+IG9cIDsKK+WWtCA+IGlcIDsKK+WWoSA+IGlcIDsKK+WVniA+IGFcIDsKK+WViiA+IGFcIDsKK+WSvyA+IGlcIDsKK+WSpiA+IGlcIDsKK+WQmiA+IGlcIDsKK+WPniA+IGlcIDsKK+WMnCA+IGlcIDsKK+WEsCA+IGlcIDsKK+WBryA+IGlcIDsKK+WBiiA+IHVcIDsKK+S+hyA+IGlcIDsKK+S8vyA+IGlcIDsKK+S6nCA+IGFcIDsKK+S6jyA+IHVcIDsKK+S6jiA+IHVcIDsKK+S6hCA+IGlcIDsKK+S5gSA+IGlcIDsKK+S4qyA+IGFcIDsKK+OAgiA8PiAnLic7CisjIEVuZCBSQVcgZGF0YSBmb3IgY29udmVydGluZyBDSksgY2hhcmFjdGVycworCisKKzo6IGthdGFrYW5hLWxhdGluICgpOworOjogaGlyYWdhbmEtbGF0aW4gKCk7Cis6OiBmdWxsd2lkdGgtaGFsZndpZHRoICgpOwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9UcmFuc2xpdGVyYXRvcl9IZWJyZXdfTGF0aW4udHh0IGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9UcmFuc2xpdGVyYXRvcl9IZWJyZXdfTGF0aW4udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjNTBhNDQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL1RyYW5zbGl0ZXJhdG9yX0hlYnJld19MYXRpbi50eHQKQEAgLTAsMCArMSwxMDAgQEAKK++7vyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDb3B5cmlnaHQgKGMpIDE5OTktMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworIyBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQXR0aWMvVHJhbnNsaXRlcmF0b3JfSGVicmV3X0xhdGluLnR4dCx2ICQKKyMgJERhdGU6IDIwMDIvMDcvMjYgMTk6NTY6NTUgJAorIyAkUmV2aXNpb246IDEuNCAkCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBUcmFuc2xpdGVyYXRpb24gdGFibGUgZm9yIEhlYnJldworIyBCYXNlZCBvbiB0aGUgVU5HRUdOIHRhYmxlIGF0OgorIyAgIGh0dHA6Ly93d3cuZWtpLmVlL3dncnMvcm9tMV9oZS5wZGYKKyMKKyMgRXhjZXB0aW9uczoKKyMgLSBBY2NlbnRzIGFyZSBhZGRlZCB0byBkaXNhbWJpZ3VhdGUgbGV0dGVycworIyAtIENvbWJpbmF0aW9ucyBvZiBkYWdlc2gsIHNoaW4vc2luIGRvdCB0aGF0IHByb2R1Y2UgZGlmZmVyZW50CisjICAgbGV0dGVycyBhcmUgbm90IHlldCBlbmNvZGVkLgorIworIyBUbyB0ZXN0LCBvcGVuOgorIyAgIGh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9jZ2ktYmluL2ljdS90cgorIyBDbGljayBFZGl0LCBwYXN0ZSBpbiB0aGlzIGZpbGUsIFNhdmUgQXMgaGVicmV3LWxhdGluL1hYWAorIyAod2hlcmUgWFhYIGlzIGEgdXNlcm5hbWUpCisjIE5vdyBnbyBiYWNrIHRvIHRoZSBtYWluIHdpbmRvdywgYW5kIHRyeSBpdCBvdXQuCisjIFVzZSBoZWJyZXctbGF0aW4vWFhYIGZvciBPdXRwdXQgMSwgYW5kIChJbnZlcnNlKSBmb3IgT3V0cHV0IDIKKyMgUGFzdGUgaW4gaGVicmV3IHRleHQgaW4gSW5wdXQsIGFuZCBoaXQgVHJhbnNsaXRlcmF0ZS4KKyMKKyMgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSIKKyMgICBodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vaWN1L3VzZXJndWlkZS9UcmFuc2xpdGVyYXRpb24uaHRtbAorCis6OiBbWzpIZWJyZXc6XSBbXHUwNUIwLVx1MDVCOVx1MDVCQi1cdTA1QkNcdTA1QzEtXHUwNUMyXHUyMTM1LVx1MjEzOMyEXHUwNUJGXV0gOworOjogbmZrZCAobmZjKSA7CiskbGV0dGVyQWZ0ZXIgPSBbOk06XSogWzpMOl0gOworCisjIG1vdmUgbG9uZ2VyIGl0ZW1zIGhlcmUgdG8gYXZvaWQgbWFza2luZworCivXlyA8PiBozLEgOwor16YgPD4gesyxIH0gJGxldHRlckFmdGVyOwor16UgPD4gesyxIDsKK9epIDw+IHPMpyA7CivXqiA8PiB0zKcgOworCivXkCA8PiDKvCA7CivXkSA8PiBiIDsKK9eSIDw+IGcgOwor15MgPD4gZCA7CivXlCA8PiBoIDsKK9eVIDw+IHcgOwor15YgPD4geiA7CivXmCA8PiB0IDsKK9eZIDw+IHkgOwor15sgPD4gayB9ICRsZXR0ZXJBZnRlcjsKK9eaIDw+IGsgOwor15wgPD4gbCA7CivXniA8PiBtIH0gJGxldHRlckFmdGVyOwor150gPD4gbSA7IAor16AgPD4gbiAgfSAkbGV0dGVyQWZ0ZXI7CivXnyA8PiBuIDsKK9ehIDw+IHMgOwor16IgPD4gyrsgOwor16QgPD4gcCB9ICRsZXR0ZXJBZnRlcjsKK9ejIDw+IHAgOwor16cgPD4gcSA7CivXqCA8PiByIDsKKworINewID4gfCAg15XXlTsgIyBIRUJSRVcgTElHQVRVUkUgWUlERElTSCBET1VCTEUgVkFWCisg17EgPiB8INeV15k7ICMgSEVCUkVXIExJR0FUVVJFIFlJRERJU0ggVkFWIFlPRAorINeyID4gfCDXmdeZIDsgIyBIRUJSRVcgTElHQVRVUkUgWUlERElTSCBET1VCTEUgWU9ECisKKwor1rwgPD4gzIcgOyAjIGRhZ2VzaCBqdXN0IGdvZXMgdG8gb3ZlcmRvdCBmb3Igbm93CivXgSA8PiDMjCA7ICMgc2hpbiBkb3QgLT4gc2gKK9eCIDw+IMyCIDsgIyBzaW4gZG90IC0+IHMKKworIyBwb2ludHMKK9ayIDw+IGHMgCA7CivWuCA8PiBhzIEgOwor1rEgPD4gZcyAIDsKK9a1IDw+IGXMgSA7CivWsCA8PiBlzIIgOwor1rQgPD4gaSA7CivWuSA8PiBvzIAgOwor1rsgPD4gdSA7CisKK9a3IDw+IGEgOwor1rYgPD4gZSA7CivWsyA8PiBvIDsKKworXHUwNUJGIDw+ICAgzIQgOworCisjIGZhbGxiYWNrcwor16cgPCBjIDsKK9ekIDwgZiB9ICRsZXR0ZXJBZnRlcjsKK9ejIDwgZiA7CivXliA8IGogOwor15UgPCB2IDsKK9eb16EgPCB4IDsKKworOjogKGxvd2VyKTsKKzo6IG5mYyAobmZkKSA7Cis6OiAoW1s6TGF0aW46XSBbXHUwMkJCLVx1MDJCQ1x1MDMwMC1cdTAzMDJcdTAzMDdcdTAzMENcdTAzMjdcdTAzMzFcdTAzNDAtXHUwMzQxICAgIMyEIF1dKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL1RyYW5zbGl0ZXJhdG9yX0hpcmFnYW5hX0thdGFrYW5hLnR4dCBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfSGlyYWdhbmFfS2F0YWthbmEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmU1MzdhNjkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL1RyYW5zbGl0ZXJhdG9yX0hpcmFnYW5hX0thdGFrYW5hLnR4dApAQCAtMCwwICsxLDIxMSBAQAor77u/Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENvcHlyaWdodCAoYykgMTk5OS0yMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisjIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9BdHRpYy9UcmFuc2xpdGVyYXRvcl9IaXJhZ2FuYV9LYXRha2FuYS50eHQsdiAkCisjICREYXRlOiAyMDAyLzAzLzAyIDAwOjI3OjI3ICQKKyMgJFJldmlzaW9uOiAxLjUgJAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMgbm90ZTogYSBnbG9iYWwgZmlsdGVyIGlzIG1vcmUgZWZmaWNpZW50LCBidXQgTVVTVCBpbmNsdWRlIGFsbCBzb3VyY2UgY2hhcnMKKzo6IFtcdTAwMDAtXHUwMDdFIFx1MzAwMVx1MzAwMiBcdTMwOTktXHUzMDlDIFx1MzBBMS1cdTMwRkMgXHVGRjYxLVx1RkY5RuODvFs6SGlyYWdhbmE6XSBbOkthdGFrYW5hOl0gWzpub25zcGFjaW5nIG1hcms6XV0gOworOjogTkZLQyAoKTsKKworIyBIaXJhZ2FuYS1LYXRha2FuYQorCisjIFRoaXMgaXMgbGFyZ2VseSBhIG9uZS10by1vbmUgbWFwcGluZywgYnV0IGl0IGhhcyBhCisjIGZldyBraW5rczoKKworIyAxLiBUaGUgS2F0YWthbmEgdmEvdmkvdmUvdm8gKDMwRjctMzBGQSkgaGF2ZSBubworIyBIaXJhZ2FuYSBlcXVpdmFsZW50cy4gIFdlIHVzZSBIaXJhZ2FuYSB3YS93aS93ZS93bworIyAoMzA4Ri0zMDkyKSB3aXRoIGEgdm9pY2luZyBtYXJrICgzMDk5KSwgd2hpY2ggaXMKKyMgc2VtYW50aWNhbGx5IGVxdWl2YWxlbnQuICBIb3dldmVyLCB0aGlzIGlzIGEgbm9uLQorIyByb3VuZHRyaXBwaW5nIHRyYW5zZm9ybWF0aW9uLgorCisjIDIuIFRoZSBLYXRha2FuYSBzbWFsbCBrYS9rZSAoMzBGNSwzMEY2KSBoYXZlIG5vCisjIEhpcmFnYW5hIGVxdWlhdmxlbnRzLiAgV2UgY29udmVydCB0aGVtIHRvIG5vcm1hbAorIyBIaXJhZ2FuYSBrYS9rZSAoMzA0QiwzMDUxKS4gIFRoaXMgaXMgYSBvbmUtd2F5CisjIGluZm9ybWF0aW9uLWxvc2luZyB0cmFuc2Zvcm1hdGlvbiBhbmQgcHJlY2x1ZGVzCisjIHJvdW5kLXRyaXBwaW5nIG9mIDMwRjUgYW5kIDMwRjYuCisKKyMgMy4gVGhlIGNvbWJpbmluZyBtYXJrcyAzMDk5LTMwOUMgYXJlIGluIHRoZSBIaXJhZ2FuYQorIyBibG9jaywgYnV0IHRoZXkgYXBwbHkgdG8gS2F0YWthbmEgYXMgd2VsbCwgc28gd2UKKyMgbGVhdmUgdGhlbSB1bnRvdWNoZWQuCisKKyMgNC4gVGhlIEthdGFrYW5hIHByb2xvbmdlZCBzb3VuZCBtYXJrIDMwRkMgZG91YmxlcyB0aGUKKyMgcHJlY2VkaW5nIHZvd2VsLiAgVGhpcyBpcyBhIG9uZS13YXkgaW5mb3JtYXRpb24tCisjIGxvc2luZyB0cmFuc2Zvcm1hdGlvbiBmcm9tIEthdGFrYW5hIHRvIEhpcmFnYW5hLgorCisjIDUuIFRoZSBLYXRha2FuYSBtaWRkbGUgZG90IHNlcGFyYXRlcyB3b3JkcyBpbiBmb3JlaWduCisjIGV4cHJlc3Npb25zOyB3ZSBsZWF2ZSB0aGlzIHVubW9kaWZpZWQuCisKKyMgVGhlIGFib3ZlIHBvaW50cyBwcmVjbHVkZSBzdWNjZXNzZnVsIHJvdW5kLXRyaXAKKyMgdHJhbnNmb3JtYXRpb25zIG9mIGFyYml0cmFyeSBpbnB1dCB0ZXh0LiAgSG93ZXZlciwKKyMgdGhleSBwcm92aWRlIG5hdHVyYWxpc3RpYyByZXN1bHRzIHRoYXQgc2hvdWxkIGNvbmZvcm0KKyMgdG8gdXNlciBleHBlY3RhdGlvbnMuCisKKworIyBDb21iaW5pbmcgZXF1aXZhbGVudHMgdmEvdmkvdmUvdm8KK+OCj+OCmSA8PiDjg7c7CivjgpDjgpkgPD4g44O4Owor44KR44KZIDw+IOODuTsKK+OCkuOCmSA8PiDjg7o7CisKKyMgT25lLXRvLW9uZSBtYXBwaW5ncywgbWFpbiBibG9jaworIyAzMDQxOjMwOTQgPD4gMzBBMTozMEY0CisjIDMwOUQsRSA8PiAzMEZELEUKK+OBgSA8PiDjgqE7CivjgYIgPD4g44KiOwor44GDIDw+IOOCozsKK+OBhCA8PiDjgqQ7CivjgYUgPD4g44KlOwor44GGIDw+IOOCpjsKK+OBhyA8PiDjgqc7CivjgYggPD4g44KoOwor44GJIDw+IOOCqTsKK+OBiiA8PiDjgqo7CivjgYsgPD4g44KrOwor44GMIDw+IOOCrDsKK+OBjSA8PiDjgq07CivjgY4gPD4g44KuOwor44GPIDw+IOOCrzsKK+OBkCA8PiDjgrA7CivjgZEgPD4g44KxOwor44GSIDw+IOOCsjsKK+OBkyA8PiDjgrM7CivjgZQgPD4g44K0Owor44GVIDw+IOOCtTsKK+OBliA8PiDjgrY7CivjgZcgPD4g44K3Owor44GYIDw+IOOCuDsKK+OBmSA8PiDjgrk7CivjgZogPD4g44K6Owor44GbIDw+IOOCuzsKK+OBnCA8PiDjgrw7CivjgZ0gPD4g44K9Owor44GeIDw+IOOCvjsKK+OBnyA8PiDjgr87CivjgaAgPD4g44OAOwor44GhIDw+IOODgTsKK+OBoiA8PiDjg4I7CivjgaMgPD4g44ODOwor44GkIDw+IOODhDsKK+OBpSA8PiDjg4U7CivjgaYgPD4g44OGOwor44GnIDw+IOODhzsKK+OBqCA8PiDjg4g7CivjgakgPD4g44OJOwor44GqIDw+IOODijsKK+OBqyA8PiDjg4s7CivjgawgPD4g44OMOwor44GtIDw+IOODjTsKK+OBriA8PiDjg447Civjga8gPD4g44OPOwor44GwIDw+IOODkDsKK+OBsSA8PiDjg5E7CivjgbIgPD4g44OSOwor44GzIDw+IOODkzsKK+OBtCA8PiDjg5Q7CivjgbUgPD4g44OVOwor44G2IDw+IOODljsKK+OBtyA8PiDjg5c7CivjgbggPD4g44OYOwor44G5IDw+IOODmTsKK+OBuiA8PiDjg5o7CivjgbsgPD4g44ObOwor44G8IDw+IOODnDsKK+OBvSA8PiDjg507Civjgb4gPD4g44OeOwor44G/IDw+IOODnzsKK+OCgCA8PiDjg6A7CivjgoEgPD4g44OhOwor44KCIDw+IOODojsKK+OCgyA8PiDjg6M7CivjgoQgPD4g44OkOwor44KFIDw+IOODpTsKK+OChiA8PiDjg6Y7CivjgocgPD4g44OnOwor44KIIDw+IOODqDsKK+OCiSA8PiDjg6k7CivjgoogPD4g44OqOwor44KLIDw+IOODqzsKK+OCjCA8PiDjg6w7Civjgo0gPD4g44OtOwor44KOIDw+IOODrjsKK+OCjyA8PiDjg687CivjgpAgPD4g44OwOwor44KRIDw+IOODsTsKK+OCkiA8PiDjg7I7CivjgpMgPD4g44OzOwor44KUIDw+IOODtDsKK+OCnSA8PiDjg707Civjgp4gPD4g44O+OworCisjIE9uZS13YXkgS2F0YWthbmEtSGlyYWdhbmEgeGZvcm0gb2Ygc21hbGwgSyBrYS9rZSB0bworIyBub3JtYWwgSCBrYS9rZS4KK+OBiyA8IOODtTsKK+OBkSA8IOODtjsKKworIyBLYXRha2FuYSBmb2xsb3dlZCBieSBhIHByb2xvbmdlZCBzb3VuZCBtYXJrIDMwRkMgaGFzCisjIGl0cyBmaW5hbCB2b3dlbCBkb3VibGVkLiAgVGhpcyBpcyBhIEthdGFrYW5hLUhpcmFnYW5hCisjIG9uZS13YXkgaW5mb3JtYXRpb24tbG9zaW5nIHRyYW5zZm9ybWF0aW9uLiAgV2UKKyMgaW5jbHVkZSB0aGUgc21hbGwgS2F0YWthbmEgKGUuZy4sIHNtYWxsIEEgMzA0MSkgYW5kCisjIGRvIG5vdCBkaXN0aW5ndWlzaCB0aGVtIGZyb20gdGhlaXIgbGFyZ2UKKyMgY291bnRlcnBhcnRzLiAgSXQgZG9lc24ndCBtYWtlIHNlbnNlIHRvIGRvdWJsZSBhCisjIHNtYWxsIGNvdW50ZXJwYXJ0IHZvd2VsIGFzIGEgc21hbGwgSGlyYWdhbmEgdm93ZWwsIHNvCisjIHdlIGRvbid0IGRvIHNvLiAgSW4gbmF0dXJhbCB0ZXh0IHRoaXMgc2hvdWxkIG5ldmVyCisjIG9jY3VyIGFueXdheS4gIElmIGEgMzBGQyBpcyBzZWVuIHdpdGhvdXQgYSBwcmVjZWRpbmcKKyMgdm93ZWwgc291bmQgKGUuZy4sIGFmdGVyIG4gMzBGMykgd2UgZG8gbm90IGNoYW5nZSBpdC4KKworIyMjICRsb25nID0g44O8OworCisjIFRoZSBmb2xsb3dpbmcgY2F0ZWdvcmllcyBhcmUgSGlyYWdhbmEsIG5vdCBLYXRha2FuYQorIyBhcyBtaWdodCBiZSBleHBlY3RlZCwgc2luY2UgYnkgdGhlIHRpbWUgd2UgZ2V0IHRvIHRoZQorIyAzMEZDLCB0aGUgcHJlY2VkaW5nIGNoYXJhY3RlciB3aWxsIGhhdmUgYWxyZWFkeSBiZWVuCisjIHRyYW5zZm9ybWVkIHRvIEhpcmFnYW5hLgorCisjIHtUaGUgZm9sbG93aW5nIG1lY2hhbmljYWxseSBnZW5lcmF0ZWQgZnJvbSB0aGUKKyMgVW5pY29kZSAzLjAgZGF0YTp9CisKKyR4YSA9IFsgXAor44GBIOOBgiDjgYsg44GMIOOBlSDjgZYgXAor44GfIOOBoCDjgaog44GvIOOBsCDjgbEgXAor44G+IOOCgyDjgoQg44KJIOOCjiDjgo8gXAorXTsKKworJHhpID0gWyBcCivjgYMg44GEIOOBjSDjgY4g44GXIOOBmCBcCivjgaEg44GiIOOBqyDjgbIg44GzIOOBtCBcCivjgb8g44KKIOOCkCBcCitdOworCiskeHUgPSBbIFwKK+OBhSDjgYYg44GPIOOBkCDjgZkg44GaIFwKK+OBoyDjgaQg44GlIOOBrCDjgbUg44G2IFwKK+OBtyDjgoAg44KFIOOChiDjgosg44KUIFwKK107CisKKyR4ZSA9IFsgXAor44GHIOOBiCDjgZEg44GSIOOBmyDjgZwgXAor44GmIOOBpyDjga0g44G4IOOBuSDjgbogXAor44KBIOOCjCDjgpEgXAorXTsKKworJHhvID0gWyBcCivjgYkg44GKIOOBkyDjgZQg44GdIOOBniBcCivjgagg44GpIOOBriDjgbsg44G8IOOBvSBcCivjgoIg44KHIOOCiCDjgo0g44KSIFwKK107CisKK+OBgiA8ICR4YSB744O8fTsKK+OBhCA8ICR4aSB744O8fTsKK+OBhiA8ICR4dSB744O8fTsKK+OBiCA8ICR4ZSB744O8fTsKK+OBiiA8ICR4byB744O8fTsKKworOjogKE5GS0MpIDsKKworIyBub3RlOiBhIGdsb2JhbCBmaWx0ZXIgaXMgbW9yZSBlZmZpY2llbnQsIGJ1dCBNVVNUIGluY2x1ZGUgYWxsIHNvdXJjZSBjaGFycyEhCis6OiAoW1x1MDAwMC1cdTAwN0UgXHUzMDAxXHUzMDAyIFx1MzA5OS1cdTMwOUMgXHUzMEExLVx1MzBGQyBcdUZGNjEtXHVGRjlG44O8WzpIaXJhZ2FuYTpdIFs6S2F0YWthbmE6XSBbOm5vbnNwYWNpbmcgbWFyazpdXSk7CisKKyMgZW9mCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL1RyYW5zbGl0ZXJhdG9yX0hpcmFnYW5hX0xhdGluLnR4dCBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfSGlyYWdhbmFfTGF0aW4udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjcyODM4ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL1RyYW5zbGl0ZXJhdG9yX0hpcmFnYW5hX0xhdGluLnR4dApAQCAtMCwwICsxLDE4IEBACivvu78jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ29weXJpZ2h0IChjKSAxOTk5LTIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyMgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0F0dGljL1RyYW5zbGl0ZXJhdG9yX0hpcmFnYW5hX0xhdGluLnR4dCx2ICQKKyMgJERhdGU6IDIwMDEvMTEvMzAgMjI6MjE6MTUgJAorIyAkUmV2aXNpb246IDEuNiAkCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworOjogW1x1MzA0MS1cdTMwOTRcdTMwOTlcdTMwOUQtXHUzMDlFXHUzMEFDXHUzMEFFXHUzMEIwXHUzMEIyXHUzMEI0XHUzMEI2XHUzMEI4XHUzMEJBXHUzMEJDXHUzMEJFXHUzMEMwXHUzMEMyXHUzMEM1XHUzMEM3XHUzMEM5XHUzMEQwXHUzMEQzXHUzMEQ2XHUzMEQ5XHUzMERDXHUzMEY0XHUzMEY3LVx1MzBGQVx1MzBGRV0gOworOjogTkZEIDsKKworOjogSGlyYWdhbmEtS2F0YWthbmE7Cis6OiBLYXRha2FuYS1MYXRpbjsKKworOjogTkZDIDsKKzo6IChMb3dlcikgOworOjogKFsnLC5BLVphLXp+XHUwMEMwLVx1MDBENlx1MDBEOC1cdTAwRjZcdTAwRjgtXHUwMTBGXHUwMTEyLVx1MDEyNVx1MDEyOC1cdTAxMzBcdTAxMzQtXHUwMTM3XHUwMTM5LVx1MDEzRVx1MDE0My1cdTAxNDhcdTAxNEMtXHUwMTUxXHUwMTU0LVx1MDE2NVx1MDE2OC1cdTAxN0VcdTAxQTAtXHUwMUExXHUwMUFGLVx1MDFCMFx1MDFDRC1cdTAxRENcdTAxREUtXHUwMUUzXHUwMUU2LVx1MDFFRFx1MDFGMFx1MDFGNC1cdTAxRjVcdTAxRjgtXHUwMjFCXHUwMjFFLVx1MDIxRlx1MDIyNi1cdTAyMzNcdTAzMDRcdTA0RTItXHUwNEUzXHUwNEVFLVx1MDRFRlx1MUUwMC1cdTFFOTlcdTFFQTAtXHUxRUY5XHUxRkIxXHUxRkI5XHUxRkQxXHUxRkQ5XHUxRkUxXHUxRkU5XHUyMTJBLVx1MjEyQl0pIDsKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfSW50ZXJJbmRpY19CZW5nYWxpLnR4dCBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfSW50ZXJJbmRpY19CZW5nYWxpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4zMDUyOTBiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9UcmFuc2xpdGVyYXRvcl9JbnRlckluZGljX0JlbmdhbGkudHh0CkBAIC0wLDAgKzEsMTUwIEBACisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ29weXJpZ2h0IChjKSAxOTk5LTIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyMgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0F0dGljL1RyYW5zbGl0ZXJhdG9yX0ludGVySW5kaWNfQmVuZ2FsaS50eHQsdiAkCisjICREYXRlOiAyMDAyLzA5LzE5IDE4OjExOjIzICQKKyMgJFJldmlzaW9uOiAxLjEwICQKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIEludGVySW5kaWMtQmVuZ2FsaQorIzo6IE5GRCAoTkZDKSA7CitcdUUwMDE+XHUwOTgxOyAgICAgICAgICAjIFNJR04gQ0FORFJBQklORFUKK1x1RTAwMj5cdTA5ODI7ICAgICAgICAgICMgU0lHTiBBTlVTVkFSQQorXHVFMDAzPlx1MDk4MzsgICAgICAgICAgIyBTSUdOIFZJU0FSR0EKK1x1RTAwNT5cdTA5ODU7ICAgICAgICAgICMgTEVUVEVSIEEKK1x1RTAwNj5cdTA5ODY7ICAgICAgICAgICMgTEVUVEVSIEFBCitcdUUwMDc+XHUwOTg3OyAgICAgICAgICAjIExFVFRFUiBJCitcdUUwMDg+XHUwOTg4OyAgICAgICAgICAjIExFVFRFUiBJSQorXHVFMDA5Plx1MDk4OTsgICAgICAgICAgIyBMRVRURVIgVQorXHVFMDBBPlx1MDk4QTsgICAgICAgICAgIyBMRVRURVIgVVUKK1x1RTAwQj5cdTA5OEI7ICAgICAgICAgICMgTEVUVEVSIFZPQ0FMSUMgUgorXHVFMDBDPlx1MDk4QzsgICAgICAgICAgIyBMRVRURVIgVk9DQUxJQyBMCitcdUUwMEQ+XHUwOThGOyAgICAgICAgICAjIEZBTExCQUNLCitcdUUwMEU+XHUwOThGOyAgICAgICAgICAjIEZBTExCQUNLCitcdUUwMEY+XHUwOThGOyAgICAgICAgICAjIExFVFRFUiBFCitcdUUwMTA+XHUwOTkwOyAgICAgICAgICAjIExFVFRFUiBBSQorXHVFMDExPlx1MDk5MzsgICAgICAgICAgIyBGQUxMQkFDSworXHVFMDEyPlx1MDk5MzsgICAgICAgICAgIyBGQUxMQkFDSworXHVFMDEzPlx1MDk5MzsgICAgICAgICAgIyBMRVRURVIgTworXHVFMDE0Plx1MDk5NDsgICAgICAgICAgIyBMRVRURVIgQVUKK1x1RTAxNT5cdTA5OTU7ICAgICAgICAgICMgTEVUVEVSIEtBCitcdUUwMTY+XHUwOTk2OyAgICAgICAgICAjIExFVFRFUiBLSEEKK1x1RTAxNz5cdTA5OTc7ICAgICAgICAgICMgTEVUVEVSIEdBCitcdUUwMTg+XHUwOTk4OyAgICAgICAgICAjIExFVFRFUiBHSEEKK1x1RTAxOT5cdTA5OTk7ICAgICAgICAgICMgTEVUVEVSIE5HQQorXHVFMDFBPlx1MDk5QTsgICAgICAgICAgIyBMRVRURVIgQ0EKK1x1RTAxQj5cdTA5OUI7ICAgICAgICAgICMgTEVUVEVSIENIQQorXHVFMDFDPlx1MDk5QzsgICAgICAgICAgIyBMRVRURVIgSkEKK1x1RTAxRD5cdTA5OUQ7ICAgICAgICAgICMgTEVUVEVSIEpIQQorXHVFMDFFPlx1MDk5RTsgICAgICAgICAgIyBMRVRURVIgTllBCitcdUUwMUY+XHUwOTlGOyAgICAgICAgICAjIExFVFRFUiBUVEEKK1x1RTAyMD5cdTA5QTA7ICAgICAgICAgICMgTEVUVEVSIFRUSEEKK1x1RTAyMT5cdTA5QTE7ICAgICAgICAgICMgTEVUVEVSIEREQQorXHVFMDIyPlx1MDlBMjsgICAgICAgICAgIyBMRVRURVIgRERIQQorXHVFMDIzPlx1MDlBMzsgICAgICAgICAgIyBMRVRURVIgTk5BCitcdUUwMjQ+XHUwOUE0OyAgICAgICAgICAjIExFVFRFUiBUQQorXHVFMDI1Plx1MDlBNTsgICAgICAgICAgIyBMRVRURVIgVEhBCitcdUUwMjY+XHUwOUE2OyAgICAgICAgICAjIExFVFRFUiBEQQorXHVFMDI3Plx1MDlBNzsgICAgICAgICAgIyBMRVRURVIgREhBCitcdUUwMjg+XHUwOUE4OyAgICAgICAgICAjIExFVFRFUiBOQQorXHVFMDI5Plx1MDlBOFx1MDlCQzsgICAgIyBSRU1BUCAoaW5kaWNFeGNlcHRpb25zLnR4dCk6IFx1MDlhOT5cdTA5YTggPSBMRVRURVIgTk5OQT5MRVRURVIgTkEKK1x1RTAyQT5cdTA5QUE7ICAgICAgICAgICMgTEVUVEVSIFBBCitcdUUwMkI+XHUwOUFCOyAgICAgICAgICAjIExFVFRFUiBQSEEKK1x1RTAyQz5cdTA5QUM7ICAgICAgICAgICMgTEVUVEVSIEJBCitcdUUwMkQ+XHUwOUFEOyAgICAgICAgICAjIExFVFRFUiBCSEEKK1x1RTAyRT5cdTA5QUU7ICAgICAgICAgICMgTEVUVEVSIE1BCitcdUUwMkY+XHUwOUFGOyAgICAgICAgICAjIExFVFRFUiBZQQorXHVFMDMwPlx1MDlCMDsgICAgICAgICAgIyBMRVRURVIgUkEKK1x1RTAzMT5cdTA5QjBcdTA5QkM7ICAgICMgRkFMTEJBQ0sgdG8gUkEKK1x1RTAzMj5cdTA5QjI7ICAgICAgICAgICMgTEVUVEVSIExBCitcdUUwMzM+XHUwOUIyOyAgICAgICAgICAjIFJFTUFQIChpbmRpY0V4Y2VwdGlvbnMudHh0KTogXHUwOWIzPlx1MDliMiA9IExFVFRFUiBMTEE+TEVUVEVSIExBCitcdUUwMzQ+XHUwOUIyOyAgICAgICAgICAjIFJFTUFQIChpbmRpY0V4Y2VwdGlvbnMudHh0KTogXHUwOWI0Plx1MDliMiA9IExFVFRFUiBMTExBPkxFVFRFUiBMQQorXHVFMDM1Plx1MDlBQzsgICAgICAgICAgIyBSRU1BUCAoaW5kaWNFeGNlcHRpb25zLnR4dCk6IFx1MDliNT5cdTA5YWMgPSBMRVRURVIgVkE+TEVUVEVSIEJBCitcdUUwMzY+XHUwOUI2OyAgICAgICAgICAjIExFVFRFUiBTSEEKK1x1RTAzNz5cdTA5Qjc7ICAgICAgICAgICMgTEVUVEVSIFNTQQorXHVFMDM4Plx1MDlCODsgICAgICAgICAgIyBMRVRURVIgU0EKK1x1RTAzOT5cdTA5Qjk7ICAgICAgICAgICMgTEVUVEVSIEhBCitcdUUwM0M+XHUwOUJDOyAgICAgICAgICAjIFNJR04gTlVLVEEKK1x1RTAzRD47ICAgICAgICAgICAgICAgICMgRkFMTEJBQ0sgQkxPVyBBV0FZIEFWQUdSQUhBCitcdUUwM0U+XHUwOUJFOyAgICAgICAgICAjIFZPV0VMIFNJR04gQUEKK1x1RTAzRj5cdTA5QkY7ICAgICAgICAgICMgVk9XRUwgU0lHTiBJCitcdUUwNDA+XHUwOUMwOyAgICAgICAgICAjIFZPV0VMIFNJR04gSUkKK1x1RTA0MT5cdTA5QzE7ICAgICAgICAgICMgVk9XRUwgU0lHTiBVCitcdUUwNDI+XHUwOUMyOyAgICAgICAgICAjIFZPV0VMIFNJR04gVVUKK1x1RTA0Mz5cdTA5QzM7ICAgICAgICAgICMgVk9XRUwgU0lHTiBWT0NBTElDIFIKK1x1RTA0ND5cdTA5QzQ7ICAgICAgICAgICMgVk9XRUwgU0lHTiBWT0NBTElDIFJSCitcdUUwNDU+XHUwOUM3OyAgICAgICAgICAjIFJFTUFQIChpbmRpY0V4Y2VwdGlvbnMudHh0KTogXHUwOWM1Plx1MDljNyA9IFZPV0VMIFNJR04gQ0FORFJBIEU+Vk9XRUwgU0lHTiBFCitcdUUwNDY+XHUwOUM3OyAgICAgICAgICAjIEZBTExCQUNLCitcdUUwNDc+XHUwOUM3OyAgICAgICAgICAjIFZPV0VMIFNJR04gRQorXHVFMDQ4Plx1MDlDODsgICAgICAgICAgIyBWT1dFTCBTSUdOIEFJCitcdUUwNDk+XHUwOUM3XHUwOUJFOyAgICAjIFJFTUFQIChpbmRpY0V4Y2VwdGlvbnMudHh0KTogXHUwOWM5Plx1MDljYiA9IFZPV0VMIFNJR04gQ0FORFJBIE8+Vk9XRUwgU0lHTiBPCitcdUUwNEE+XHUwOUM3XHUwOUJFOyAgICAjIEZBTExCQUNLCitcdUUwNEI+XHUwOUM3XHUwOUJFOyAgICAjIFZPV0VMIFNJR04gTworXHVFMDRDPlx1MDlDN1x1MDlENzsgICAgIyBWT1dFTCBTSUdOIEFVCitcdUUwNEQ+XHUwOUNEOyAgICAgICAgICAjIFNJR04gVklSQU1BCitcdUUwNTA+XHUwOTkzXHUwOTgyOyAgICAjICBJbnRlckluZGljLUJlbmdhbGk6IE9NCitcdWUwNTE+OworXHVlMDUyPjsKK1x1ZTA1Mz47CitcdWUwNTQ+OworXHVFMDU1PjsgICAgICAgICAgICAgICAgIyBMRU5HVEggTUFSSworXHVFMDU2Plx1MDlDODsgICAgICAgICAgIyBSRU1BUCAoaW5kaWNFeGNlcHRpb25zLnR4dCk6IFx1MDlkNj5cdTA5YzggPSBBSSBMRU5HVEggTUFSSz5WT1dFTCBTSUdOIEFJCitcdUUwNTc+XHUwOUQ3OyAgICAgICAgICAjIEFVIExFTkdUSCBNQVJLCitcdUUwNTg+XHUwOTk1XHUwOUJDOyAgICAjIEZBTExCQUNLCitcdUUwNTk+XHUwOTk2XHUwOUJDOyAgICAjIFJFTUFQIChpbmRpY0V4Y2VwdGlvbnMudHh0KTogXHUwOWQ5Plx1MDk5NiA9IExFVFRFUiBLSEhBPkxFVFRFUiBLSEEKK1x1RTA1QT5cdTA5OTdcdTA5QkM7ICAgICMgUkVNQVAgKGluZGljRXhjZXB0aW9ucy50eHQpOiBcdTA5ZGE+XHUwOTk3ID0gTEVUVEVSIEdISEE+TEVUVEVSIEdBCitcdUUwNUI+XHUwOTlDXHUwOUJDOyAgICAjIFJFTUFQIChpbmRpY0V4Y2VwdGlvbnMudHh0KTogXHUwOWRiPlx1MDk5YyA9IExFVFRFUiBaQT5MRVRURVIgSkEKK1x1RTA1Qz5cdTA5QTFcdTA5QkM7ICAgICMgRkFMTEJBQ0sKK1x1RTA1RD5cdTA5QTJcdTA5QkM7ICAgICMgTEVUVEVSIFJIQQorXHVFMDVFPlx1MDlBQlx1MDlCQzsgICAgIyBSRU1BUCAoaW5kaWNFeGNlcHRpb25zLnR4dCk6IFx1MDlkZT5cdTA5YWIgPSBMRVRURVIgRkE+TEVUVEVSIFBIQQorXHVFMDVGPlx1MDlBRlx1MDlCQzsgICAgIyBMRVRURVIgWVlBCitcdUUwNjA+XHUwOUUwOyAgICAgICAgICAjIExFVFRFUiBWT0NBTElDIFJSCitcdUUwNjE+XHUwOUUxOyAgICAgICAgICAjIExFVFRFUiBWT0NBTElDIExMCitcdUUwNjI+XHUwOUUyOyAgICAgICAgICAjIFZPV0VMIFNJR04gVk9DQUxJQyBMCitcdUUwNjM+XHUwOUUzOyAgICAgICAgICAjIFZPV0VMIFNJR04gVk9DQUxJQyBMTAorXHVFMDY0Plx1MDk2NDsgICAgICAgICAgIyBEQU5EQQorXHVFMDY1Plx1MDk2NTsgICAgICAgICAgIyBET1VCTEUgREFOREEKK1x1RTA2Nj5cdTA5RTY7ICAgICAgICAgICMgRElHSVQgWkVSTworXHVFMDY3Plx1MDlFNzsgICAgICAgICAgIyBESUdJVCBPTkUKK1x1RTA2OD5cdTA5RTg7ICAgICAgICAgICMgRElHSVQgVFdPCitcdUUwNjk+XHUwOUU5OyAgICAgICAgICAjIERJR0lUIFRIUkVFCitcdUUwNkE+XHUwOUVBOyAgICAgICAgICAjIERJR0lUIEZPVVIKK1x1RTA2Qj5cdTA5RUI7ICAgICAgICAgICMgRElHSVQgRklWRQorXHVFMDZDPlx1MDlFQzsgICAgICAgICAgIyBESUdJVCBTSVgKK1x1RTA2RD5cdTA5RUQ7ICAgICAgICAgICMgRElHSVQgU0VWRU4KK1x1RTA2RT5cdTA5RUU7ICAgICAgICAgICMgRElHSVQgRUlHSFQKK1x1RTA2Rj5cdTA5RUY7ICAgICAgICAgICMgRElHSVQgTklORQorXHVlMDcwPjsgICAgICAgICAgICAgICAgIyBBQkJSRVZJQVRJT04gU0lHTgorXHVlMDcxPlx1MDlGMDsgICAgICAgICAgIyBMRVRURVIgUkEgV0lUSCBNSURETEUgRElBR09OQUwKK1x1ZTA3Mj5cdTA5RjE7ICAgICAgICAgICMgTEVUVEVSIFJBIFdJVEggTE9XRVIgRElBR09OQUwKK1x1ZTA3Mz5cdTA5RjI7ICAgICAgICAgICMgUlVQRUUgTUFSSworXHVlMDc0Plx1MDlGMzsgICAgICAgICAgIyBSVVBFRSBTSUdOCitcdWUwNzU+XHUwOUY0OyAgICAgICAgICAjIENVUlJFTkNZIE5VTUVSQVRPUiBPTkUKK1x1ZTA3Nj5cdTA5RjU7ICAgICAgICAgICMgQ1VSUkVOQ1kgTlVNRVJBVE9SIFRXTworXHVlMDc3Plx1MDlGNjsgICAgICAgICAgIyBDVVJSRU5DWSBOVU1FUkFUT1IgVEhSRUUKK1x1ZTA3OD5cdTA5Rjc7ICAgICAgICAgICMgQ1VSUkVOQ1kgTlVNRVJBVE9SIEZPVVIKK1x1ZTA3OT5cdTA5Rjg7ICAgICAgICAgICMgQ1VSUkVOQ1kgTlVNRVJBVE9SIE9ORSBMRVNTIFRIQU4gVEhFIERFTk9NSU5BVE9SCitcdWUwN0E+XHUwOUY5OyAgICAgICAgICAjIENVUlJFTkNZIERFTk9NSU5BVE9SIFNJWFRFRU4KK1x1ZTA3Qj5cdTA5RkE7ICAgICAgICAgICMgSVNTSEFSCitcdUUwN0M+OyAgICAgICAgICAgICAgICAjIFRJUFBJCitcdUUwN0Q+OyAgICAgICAgICAgICAgICAjIEFEREFLCitcdUUwN0U+OyAgICAgICAgICAgICAgICAjIElSSQorXHVFMDdGPjsgICAgICAgICAgICAgICAgIyBVUkEKK1x1RTA4MD47ICAgICAgICAgICAgICAgICMgRUsgT05LQVIKKworMCA+IFx1MDlFNjsgICAgICAgIyBGQUxMQkFDSyBGT1IgVEFNSUwKKzEgPiBcdTA5RTc7CisKKworCisKKworCisKKworCisKKworIyAgICA6OiBORkMgKE5GRCkgOworIyBlb2YKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfSW50ZXJJbmRpY19EZXZhbmFnYXJpLnR4dCBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfSW50ZXJJbmRpY19EZXZhbmFnYXJpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5kNzViNTliCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9UcmFuc2xpdGVyYXRvcl9JbnRlckluZGljX0RldmFuYWdhcmkudHh0CkBAIC0wLDAgKzEsMTYxIEBACisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ29weXJpZ2h0IChjKSAxOTk5LTIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyMgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0F0dGljL1RyYW5zbGl0ZXJhdG9yX0ludGVySW5kaWNfRGV2YW5hZ2FyaS50eHQsdiAkCisjICREYXRlOiAyMDAyLzA5LzE5IDE4OjExOjIzICQKKyMgJFJldmlzaW9uOiAxLjkgJAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMgSW50ZXJJbmRpYy1EZXZhbmFnYXJpCisjOjogTkZEIChORkMpIDsgCisjUnVsZXMgZm9yIERlY29tcG9zZWQgY2hhcmFjdGVycworIFx1ZTAyOFx1ZTAzYyA+IFx1MDkyOTsgICNcdWUwMjkKKyBcdWUwMzBcdWUwM2MgPiBcdTA5MzE7ICAjXHVlMDMxCisgXHVlMDMzXHVlMDNjID4gXHUwOTM0OyAgI1x1ZTAzNAorIFx1ZTAxNVx1ZTAzYyA+IFx1MDk1ODsgICNcdWUwNTggTEVUVEVSIFFBICAgKEZvciBVcmR1KQorIFx1ZTAxNlx1ZTAzYyA+IFx1MDk1OTsgICNcdWUwNTkgTEVUVEVSIEtISEEgKEZvciBVcmR1KQorIFx1ZTAxN1x1ZTAzYyA+IFx1MDk1YTsgICNcdWUwNWEgTEVUVEVSIEdISEEgKEZvciBVcmR1KQorIFx1ZTAxY1x1ZTAzYyA+IFx1MDk1YjsgICNcdWUwNWIgTEVUVEVSIFpBICAgKEZvciBVcmR1KQorIFx1ZTAyMVx1ZTAzYyA+IFx1MDk1YzsgICNcdWUwNWMgTEVUVEVSIEREREhBIChwcm9ub3VuY2VkIFJSQSkKKyBcdWUwMjJcdWUwM2MgPiBcdTA5NWQ7ICAjXHVlMDVkIExFVFRFUiBSSEEgICAocHJvbm91bmNlZCBSUkhBKQorIFx1ZTAyYlx1ZTAzYyA+IFx1MDk1ZTsgICNcdWUwNWUgTEVUVEVSIEZBCisgXHVlMDJmXHVlMDNjID4gXHUwOTVmOyAgI1x1ZTA1ZiBMRVRURVIgWVlBCisgCisgI0RlY29tcG9zZWQgY29tcGF0aWJpbGl0eSB0cmFuc2xpdGVyYXRpb25zCisgXHVlMDEyXHVlMDU3Plx1MDkxNDsgICAjIEZBTExCQUNLIEZPUiBUQU1JTCBBVQorIDAgPiBcdTA5NjY7ICAgICAgICMgRkFMTEJBQ0sgRk9SIFRBTUlMCisgMSA+IFx1MDk2NzsKKworIFx1ZTA1NT47ICMgRkFMTEJBQ0sgQkxPVyBBV0FZIEtBTk5BREEgQU5EIFRFTFVHVSBMRU5HVEggTUFSSworIFx1ZTA1Nj47ICMgRkFMTEJBQ0sgQkxPVyBBV0FZIEtBTk5BREEgQU5EIFRFTFVHVSBBSSBMRU5HVEggTUFSSworIFx1ZTA1Nz47ICMgRkFMTEJBQ0sgQkxPVyBBV0FZIFRBTUlMIEFVIExFTkdUSCBNQVJLCisKKyBcdWUwMDEgPiAgXHUwOTAxOyAgIyBTSUdOIENBTkRSQUJJTkRVCisgXHVlMDAyID4gIFx1MDkwMjsgICMgU0lHTiBBTlVTVkFSQQorIFx1ZTAwMyA+ICBcdTA5MDM7ICAjIFNJR04gVklTQVJHQQorIFx1ZTAwNSA+ICBcdTA5MDU7ICAjIExFVFRFUiBBCisgXHVlMDA2ID4gIFx1MDkwNjsgICMgTEVUVEVSIEFBCisgXHVlMDA3ID4gIFx1MDkwNzsgICMgTEVUVEVSIEkKKyBcdWUwMDggPiAgXHUwOTA4OyAgIyBMRVRURVIgSUkKKyBcdWUwMDkgPiAgXHUwOTA5OyAgIyBMRVRURVIgVQorIFx1ZTAwYSA+ICBcdTA5MGE7ICAjIExFVFRFUiBVVQorIFx1ZTAwYiA+ICBcdTA5MGI7ICAjIExFVFRFUiBWT0NBTElDIFIKKyBcdWUwMGMgPiAgXHUwOTBjOyAgIyBMRVRURVIgVk9DQUxJQyBMCisgXHVlMDBkID4gIFx1MDkwZDsgICMgTEVUVEVSIENBTkRSQSBFIChGb3IgcmVwcmVzZW50aW5nIEVuZ2xpc2ggc291bmRzKQorIFx1ZTAwZSA+ICBcdTA5MGU7ICAjIExFVFRFUiBTSE9SVCBFKEZvciBTb3V0aGVybiBTY3JpcHRzKQorIFx1ZTAwZiA+ICBcdTA5MGY7ICAjIExFVFRFUiBFCisgXHVlMDEwID4gIFx1MDkxMDsgICMgTEVUVEVSIEFJCisgXHVlMDExID4gIFx1MDkxMTsgICMgTEVUVEVSIENBTkRSQSBPIChGb3IgcmVwcmVzZW50aW5nIEVuZ2xpc2ggc291bmRzKQorIFx1ZTAxMiA+ICBcdTA5MTI7ICAjIExFVFRFUiBTSE9SVCBPIChGb3IgU291dGhlcm4gU2NyaXB0cykKKyBcdWUwMTMgPiAgXHUwOTEzOyAgIyBMRVRURVIgTworIFx1ZTAxNCA+ICBcdTA5MTQ7ICAjIExFVFRFUiBBVQorIFx1ZTAxNSA+ICBcdTA5MTU7ICAjIExFVFRFUiBLQQorIFx1ZTAxNiA+ICBcdTA5MTY7ICAjIExFVFRFUiBLSEEKKyBcdWUwMTcgPiAgXHUwOTE3OyAgIyBMRVRURVIgR0EKKyBcdWUwMTggPiAgXHUwOTE4OyAgIyBMRVRURVIgR0hBCisgXHVlMDE5ID4gIFx1MDkxOTsgICMgTEVUVEVSIE5HQQorIFx1ZTAxYSA+ICBcdTA5MWE7ICAjIExFVFRFUiBDQQorIFx1ZTAxYiA+ICBcdTA5MWI7ICAjIExFVFRFUiBDSEEKKyBcdWUwMWMgPiAgXHUwOTFjOyAgIyBMRVRURVIgSkEKKyBcdWUwMWQgPiAgXHUwOTFkOyAgIyBMRVRURVIgSkhBCisgXHVlMDFlID4gIFx1MDkxZTsgICMgTEVUVEVSIE5ZQQorIFx1ZTAxZiA+ICBcdTA5MWY7ICAjIExFVFRFUiBUVEEKKyBcdWUwMjAgPiAgXHUwOTIwOyAgIyBMRVRURVIgVFRIQQorIFx1ZTAyMSA+ICBcdTA5MjE7ICAjIExFVFRFUiBEREEKKyBcdWUwMjIgPiAgXHUwOTIyOyAgIyBMRVRURVIgRERIQQorIFx1ZTAyMyA+ICBcdTA5MjM7ICAjIExFVFRFUiBOTkEKKyBcdWUwMjQgPiAgXHUwOTI0OyAgIyBMRVRURVIgVEEKKyBcdWUwMjUgPiAgXHUwOTI1OyAgIyBMRVRURVIgVEhBCisgXHVlMDI2ID4gIFx1MDkyNjsgICMgTEVUVEVSIERBCisgXHVlMDI3ID4gIFx1MDkyNzsgICMgTEVUVEVSIERIQQorIFx1ZTAyOCA+ICBcdTA5Mjg7ICAjIExFVFRFUiBOQQorIFx1ZTAyOSA+ICBcdTA5Mjk7ICAjIExFVFRFUiBOTk5BCisgXHVlMDJhID4gIFx1MDkyYTsgICMgTEVUVEVSIFBBCisgXHVlMDJiID4gIFx1MDkyYjsgICMgTEVUVEVSIFBIQQorIFx1ZTAyYyA+ICBcdTA5MmM7ICAjIExFVFRFUiBCQQorIFx1ZTAyZCA+ICBcdTA5MmQ7ICAjIExFVFRFUiBCSEEKKyBcdWUwMmUgPiAgXHUwOTJlOyAgIyBMRVRURVIgTUEKKyBcdWUwMmYgPiAgXHUwOTJmOyAgIyBMRVRURVIgWUEKKyBcdWUwMzAgPiAgXHUwOTMwOyAgIyBMRVRURVIgUkEKKyBcdWUwMzEgPiAgXHUwOTMxOyAgIyBMRVRURVIgUlJBIChFeWVsYXNoIFJBIGZvciBTb3V0aGVybiBzY3JpcHRzKQorICNcdWUwMzEgPiAgXHUwOTMwOyAgCisgXHVlMDMyID4gIFx1MDkzMjsgICMgTEVUVEVSIExBCisgXHVlMDMzID4gIFx1MDkzMzsgICMgTEVUVEVSIExMQQorIFx1ZTAzNCA+ICBcdTA5MzQ7ICAjIExFVFRFUiBMTExBIChMTExBIGZvciBTb3V0aGVybiBzY3JpcHRzKQorICNcdWUwMzQgPiAgXHUwOTMzOyAgCisgXHVlMDM1ID4gIFx1MDkzNTsgICMgTEVUVEVSIFZBCisgXHVlMDM2ID4gIFx1MDkzNjsgICMgTEVUVEVSIFNIQQorIFx1ZTAzNyA+ICBcdTA5Mzc7ICAjIExFVFRFUiBTU0EKKyBcdWUwMzggPiAgXHUwOTM4OyAgIyBMRVRURVIgU0EKKyBcdWUwMzkgPiAgXHUwOTM5OyAgIyBMRVRURVIgSEEKKyBcdWUwM2MgPiAgXHUwOTNjOyAgIyBTSUdOIE5VS1RBCisgXHVlMDNkID4gIFx1MDkzZDsgICMgU0lHTiBBVkFHUkFIQQorIFx1ZTAzZSA+ICBcdTA5M2U7ICAjIFZPV0VMIFNJR04gQUEKKyBcdWUwM2YgPiAgXHUwOTNmOyAgIyBWT1dFTCBTSUdOIEkKKyBcdWUwNDAgPiAgXHUwOTQwOyAgIyBWT1dFTCBTSUdOIElJCisgXHVlMDQxID4gIFx1MDk0MTsgICMgVk9XRUwgU0lHTiBVCisgXHVlMDQyID4gIFx1MDk0MjsgICMgVk9XRUwgU0lHTiBVVQorIFx1ZTA0MyA+ICBcdTA5NDM7ICAjIFZPV0VMIFNJR04gVk9DQUxJQyBSCisgXHVlMDQ0ID4gIFx1MDk0NDsgICMgVk9XRUwgU0lHTiBWT0NBTElDIFJSCisgXHVlMDQ1ID4gIFx1MDk0NTsgICMgVk9XRUwgU0lHTiBDQU5EUkEgRQorIFx1ZTA0NiA+ICBcdTA5NDY7ICAjIFZPV0VMIFNJR04gU0hPUlQgRQorIFx1ZTA0NyA+ICBcdTA5NDc7ICAjIFZPV0VMIFNJR04gRQorIFx1ZTA0OCA+ICBcdTA5NDg7ICAjIFZPV0VMIFNJR04gQUkKKyBcdWUwNDkgPiAgXHUwOTQ5OyAgIyBWT1dFTCBTSUdOIENBTkRSQSBPCisgXHVlMDRhID4gIFx1MDk0YTsgICMgVk9XRUwgU0lHTiBTSE9SVCBPCisgXHVlMDRiID4gIFx1MDk0YjsgICMgVk9XRUwgU0lHTiBPCisgXHVlMDRjID4gIFx1MDk0YzsgICMgVk9XRUwgU0lHTiBBVQorIFx1ZTA0ZCA+ICBcdTA5NGQ7ICAjIFNJR04gVklSQU1BCisgXHVlMDUwID4gIFx1MDk1MDsgICMgT00KKyBcdWUwNTEgPiAgXHUwOTUxOyAgIyBTVFJFU1MgU0lHTiBVREFUVEEKKyBcdWUwNTIgPiAgXHUwOTUyOyAgIyBTVFJFU1MgU0lHTiBBTlVEQVRUQQorIFx1ZTA1MyA+ICBcdTA5NTM7ICAjIEdSQVZFIEFDQ0VOVAorIFx1ZTA1NCA+ICBcdTA5NTQ7ICAjIEFDVVRFIEFDQ0VOVAorIFx1ZTA1OCA+ICBcdTA5NTg7ICAjIExFVFRFUiBRQSAgIChGb3IgVXJkdSkKKyBcdWUwNTkgPiAgXHUwOTU5OyAgIyBMRVRURVIgS0hIQSAoRm9yIFVyZHUpCisgXHVlMDVhID4gIFx1MDk1YTsgICMgTEVUVEVSIEdISEEgKEZvciBVcmR1KQorIFx1ZTA1YiA+ICBcdTA5NWI7ICAjIExFVFRFUiBaQSAgIChGb3IgVXJkdSkKKyBcdWUwNWMgPiAgXHUwOTVjOyAgIyBMRVRURVIgRERESEEgKHByb25vdW5jZWQgUlJBKQorIFx1ZTA1ZCA+ICBcdTA5NWQ7ICAjIExFVFRFUiBSSEEgICAocHJvbm91bmNlZCBSUkhBKQorIFx1ZTA1ZSA+ICBcdTA5NWU7ICAjIExFVFRFUiBGQQorIFx1ZTA1ZiA+ICBcdTA5NWY7ICAjIExFVFRFUiBZWUEKKyBcdWUwNjAgPiAgXHUwOTYwOyAgIyBMRVRURVIgVk9DQUxJQyBSUgorIFx1ZTA2MSA+ICBcdTA5NjE7ICAjIExFVFRFUiBWT0NBTElDIExMCisgXHVlMDYyID4gIFx1MDk2MjsgICMgVk9XRUwgU0lHTiBWT0NBTElDIEwKKyBcdWUwNjMgPiAgXHUwOTYzOyAgIyBWT1dFTCBTSUdOIFZPQ0FMSUMgTEwKKyBcdWUwNjQgPiAgXHUwOTY0OyAgIyBEQU5EQQorIFx1ZTA2NSA+ICBcdTA5NjU7ICAjIERPVUJMRSBEQU5EQQorIFx1ZTA2NiA+ICBcdTA5NjY7ICAjIERJR0lUIFpFUk8KKyBcdWUwNjcgPiAgXHUwOTY3OyAgIyBESUdJVCBPTkUKKyBcdWUwNjggPiAgXHUwOTY4OyAgIyBESUdJVCBUV08KKyBcdWUwNjkgPiAgXHUwOTY5OyAgIyBESUdJVCBUSFJFRQorIFx1ZTA2YSA+ICBcdTA5NmE7ICAjIERJR0lUIEZPVVIKKyBcdWUwNmIgPiAgXHUwOTZiOyAgIyBESUdJVCBGSVZFCisgXHVlMDZjID4gIFx1MDk2YzsgICMgRElHSVQgU0lYCisgXHVlMDZkID4gIFx1MDk2ZDsgICMgRElHSVQgU0VWRU4KKyBcdWUwNmUgPiAgXHUwOTZlOyAgIyBESUdJVCBFSUdIVAorIFx1ZTA2ZiA+ICBcdTA5NmY7ICAjIERJR0lUIE5JTkUKKworIFx1ZTA3MD5cdTA5NzA7ICAgICAjIEFCQlJFVklBVElPTiBTSUdOCisgXHVlMDcxPlx1MDkzMDsgICAgICMgTEVUVEVSIFJBIFdJVEggTUlERExFIERJQUdPTkFMCisgXHVlMDcyPlx1MDkzMDsgICAgICMgTEVUVEVSIFJBIFdJVEggTE9XRVIgRElBR09OQUwKKyBcdWUwNzM+OyAgICAgICAgICAgIyBSVVBFRSBNQVJLCisgXHVlMDc0PjsgICAgICAgICAgICMgUlVQRUUgU0lHTgorIFx1ZTA3NT47ICAgICAgICAgICAjIENVUlJFTkNZIE5VTUVSQVRPUiBPTkUKKyBcdWUwNzY+OyAgICAgICAgICAgIyBDVVJSRU5DWSBOVU1FUkFUT1IgVFdPCisgXHVlMDc3PjsgICAgICAgICAgICMgQ1VSUkVOQ1kgTlVNRVJBVE9SIFRIUkVFCisgXHVlMDc4PjsgICAgICAgICAgICMgQ1VSUkVOQ1kgTlVNRVJBVE9SIEZPVVIKKyBcdWUwNzk+OyAgICAgICAgICAgIyBDVVJSRU5DWSBOVU1FUkFUT1IgT05FIExFU1MgVEhBTiBUSEUgREVOT01JTkFUT1IKKyBcdWUwN0E+OyAgICAgICAgICAgIyBDVVJSRU5DWSBERU5PTUlOQVRPUiBTSVhURUVOCisgXHVlMDdCPjsgICAgICAgICAgICMgSVNTSEFSCisgXHVFMDdDPjsgICAgICAgICAgICMgVElQUEkKKyBcdUUwN0Q+OyAgICAgICAgICAgIyBBRERBSworIFx1RTA3RT47ICAgICAgICAgICAjIElSSQorIFx1RTA3Rj47ICAgICAgICAgICAjIFVSQQorIFx1RTA4MD47ICAgICAgICAgICAjIEVLIE9OS0FSCisKKyAKKyMgICAgICAgICBcdTA5NzAgICMgVU5NQVBQRUQgRGV2YW5hZ2FyaS1JbnRlckluZGljOiBBQkJSRVZJQVRJT04gU0lHTgorIyAgICA6OiBORkM7CisjIGVvZgpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9UcmFuc2xpdGVyYXRvcl9JbnRlckluZGljX0d1amFyYXRpLnR4dCBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfSW50ZXJJbmRpY19HdWphcmF0aS50eHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMTQyYWM2ZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfSW50ZXJJbmRpY19HdWphcmF0aS50eHQKQEAgLTAsMCArMSwxNDAgQEAKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDb3B5cmlnaHQgKGMpIDE5OTktMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworIyBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQXR0aWMvVHJhbnNsaXRlcmF0b3JfSW50ZXJJbmRpY19HdWphcmF0aS50eHQsdiAkCisjICREYXRlOiAyMDAyLzA5LzE5IDE4OjExOjIzICQKKyMgJFJldmlzaW9uOiAxLjEwICQKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIEludGVySW5kaWMtR3VqYXJhdGkKKyM6OiBORkQgKE5GQykgOworXHVlMDAxPlx1MGE4MTsgIyBTSUdOIENBTkRSQUJJTkRVCitcdWUwMDI+XHUwYTgyOyAjIFNJR04gQU5VU1ZBUkEKK1x1ZTAwMz5cdTBhODM7ICMgU0lHTiBWSVNBUkdBCitcdWUwMDU+XHUwYTg1OyAjIExFVFRFUiBBCitcdWUwMDY+XHUwYTg2OyAjIExFVFRFUiBBQQorXHVlMDA3Plx1MGE4NzsgIyBMRVRURVIgSQorXHVlMDA4Plx1MGE4ODsgIyBMRVRURVIgSUkKK1x1ZTAwOT5cdTBhODk7ICMgTEVUVEVSIFUKK1x1ZTAwYT5cdTBhOGE7ICMgTEVUVEVSIFVVCitcdWUwMGI+XHUwYThiOyAjIExFVFRFUiBWT0NBTElDIFIKK1x1ZTAwYz5cdTBhYjJcdTBhYzM7ICMgUkVNQVAgKGluZGljRXhjZXB0aW9ucy50eHQpOiBcdTBhOGM+XHUwYWIyXHUwYWMzID0gTEVUVEVSIFZPQ0FMSUMgTD5MRVRURVIgTEEuVk9XRUwgU0lHTiBWT0NBTElDIFIKK1x1ZTAwZD5cdTBhOGQ7ICMgR1VKQVJBVEkgVk9XRUwgQ0FORFJBIEUKK1x1ZTAwZT5cdTBhOGY7ICMgRkFMTEJBQ0sKK1x1ZTAwZj5cdTBhOGY7ICMgIEludGVySW5kaWMtR3VqYXJhdGk6IExFVFRFUiBFRSAoXHUwYThmID0gTEVUVEVSIEUpCitcdWUwMTA+XHUwYTkwOyAjIExFVFRFUiBBSQorXHVlMDExPlx1MGE5MTsgIyBGQUxMQkFDSworXHVlMDEyPlx1MGE5MzsgIyBGQUxMQkFDSworXHVlMDEzPlx1MGE5MzsgIyBVTk1BUFBFRCBJbnRlckluZGljLUd1amFyYXRpOiBMRVRURVIgT08gKFx1MGE5MyA9IExFVFRFUiBPKQorXHVlMDE0Plx1MGE5NDsgIyBMRVRURVIgQVUKK1x1ZTAxNT5cdTBhOTU7ICMgTEVUVEVSIEtBCitcdWUwMTY+XHUwYTk2OyAjIExFVFRFUiBLSEEKK1x1ZTAxNz5cdTBhOTc7ICMgTEVUVEVSIEdBCitcdWUwMTg+XHUwYTk4OyAjIExFVFRFUiBHSEEKK1x1ZTAxOT5cdTBhOTk7ICMgTEVUVEVSIE5HQQorXHVlMDFhPlx1MGE5YTsgIyBMRVRURVIgQ0EKK1x1ZTAxYj5cdTBhOWI7ICMgTEVUVEVSIENIQQorXHVlMDFjPlx1MGE5YzsgIyBMRVRURVIgSkEKK1x1ZTAxZD5cdTBhOWQ7ICMgTEVUVEVSIEpIQQorXHVlMDFlPlx1MGE5ZTsgIyBMRVRURVIgTllBCitcdWUwMWY+XHUwYTlmOyAjIExFVFRFUiBUVEEKK1x1ZTAyMD5cdTBhYTA7ICMgTEVUVEVSIFRUSEEKK1x1ZTAyMT5cdTBhYTE7ICMgTEVUVEVSIEREQQorXHVlMDIyPlx1MGFhMjsgIyBMRVRURVIgRERIQQorXHVlMDIzPlx1MGFhMzsgIyBMRVRURVIgTk5BCitcdWUwMjQ+XHUwYWE0OyAjIExFVFRFUiBUQQorXHVlMDI1Plx1MGFhNTsgIyBMRVRURVIgVEhBCitcdWUwMjY+XHUwYWE2OyAjIExFVFRFUiBEQQorXHVlMDI3Plx1MGFhNzsgIyBMRVRURVIgREhBCitcdWUwMjg+XHUwYWE4OyAjIExFVFRFUiBOQQorXHVlMDI5Plx1MGFhOFx1MGFiYzsgIyBGQUxMQkFDSyB0byBOQStOVUtUQQorXHVlMDJhPlx1MGFhYTsgIyBMRVRURVIgUEEKK1x1ZTAyYj5cdTBhYWI7ICMgTEVUVEVSIFBIQQorXHVlMDJjPlx1MGFhYzsgIyBMRVRURVIgQkEKK1x1ZTAyZD5cdTBhYWQ7ICMgTEVUVEVSIEJIQQorXHVlMDJlPlx1MGFhZTsgIyBMRVRURVIgTUEKK1x1ZTAyZj5cdTBhYWY7ICMgTEVUVEVSIFlBCitcdWUwMzA+XHUwYWIwOyAjIExFVFRFUiBSQQorXHVlMDMxPlx1MGFiMFx1MGFiYzsgIyBGQUxMQkFDSworXHVlMDMyPlx1MGFiMjsgIyBMRVRURVIgTEEKK1x1ZTAzMz5cdTBhYjM7ICMgTEVUVEVSIExMQQorXHVlMDM0Plx1MGFiM1x1MGFiYzsgIyAgTEVUVEVSIExMTEE+TEVUVEVSIExMQStOVUtUQQorXHVlMDM1Plx1MGFiNTsgIyBMRVRURVIgVkEKK1x1ZTAzNj5cdTBhYjY7ICMgTEVUVEVSIFNIQQorXHVlMDM3Plx1MGFiNzsgIyBMRVRURVIgU1NBCitcdWUwMzg+XHUwYWI4OyAjIExFVFRFUiBTQQorXHVlMDM5Plx1MGFiOTsgIyBMRVRURVIgSEEKK1x1ZTAzYz5cdTBhYmM7ICMgU0lHTiBOVUtUQQorXHVlMDNkPlx1MGFiZDsgIyBTSUdOIEFWQUdSQUhBCitcdWUwM2U+XHUwYWJlOyAjIFZPV0VMIFNJR04gQUEKK1x1ZTAzZj5cdTBhYmY7ICMgVk9XRUwgU0lHTiBJCitcdWUwNDA+XHUwYWMwOyAjIFZPV0VMIFNJR04gSUkKK1x1ZTA0MT5cdTBhYzE7ICMgVk9XRUwgU0lHTiBVCitcdWUwNDI+XHUwYWMyOyAjIFZPV0VMIFNJR04gVVUKK1x1ZTA0Mz5cdTBhYzM7ICMgVk9XRUwgU0lHTiBWT0NBTElDIFIKK1x1ZTA0ND5cdTBhYzQ7ICMgVk9XRUwgU0lHTiBWT0NBTElDIFJSCitcdWUwNDU+XHUwYWM1OyAjIFZPV0VMIFNJR04gQ0FORFJBIEUKK1x1ZTA0Nj5cdTBhYzc7ICMgRkFMTEJBQ0sKK1x1ZTA0Nz5cdTBhYzc7ICMgIEludGVySW5kaWMtR3VqYXJhdGk6IFZPV0VMIFNJR04gRUUgKFx1MGFjNyA9IFZPV0VMIFNJR04gRSkKK1x1ZTA0OD5cdTBhYzg7ICMgVk9XRUwgU0lHTiBBSQorXHVlMDQ5Plx1MGFjOTsgIyBWT1dFTCBTSUdOIENBTkRSQSBPCitcdWUwNGE+XHUwYWNiOyAjIEZBTExCQUNLCitcdWUwNGI+XHUwYWNiOyAjIFVOTUFQUEVEIEludGVySW5kaWMtR3VqYXJhdGk6IFZPV0VMIFNJR04gT08gKFx1MGFjYiA9IFZPV0VMIFNJR04gTykKK1x1ZTA0Yz5cdTBhY2M7ICMgVk9XRUwgU0lHTiBBVQorXHVlMDRkPlx1MGFjZDsgIyBTSUdOIFZJUkFNQQorXHVlMDUwPlx1MGFkMDsgIyBPTQorXHVlMDUxPjsKK1x1ZTA1Mj47CitcdWUwNTM+OworXHVlMDU0PjsKK1x1ZTA1NT47ICMgVU5NQVBQRUQgSW50ZXJJbmRpYy1HdWphcmF0aTogTEVOR1RIIE1BUksKK1x1ZTA1Nj5cdTBhYzg7ICMgUkVNQVAgKGluZGljRXhjZXB0aW9ucy50eHQpOiBcdTBhZDY+XHUwYWM4ID0gQUkgTEVOR1RIIE1BUks+Vk9XRUwgU0lHTiBBSQorXHVlMDU3Plx1MGFjYzsgIyBSRU1BUCAoaW5kaWNFeGNlcHRpb25zLnR4dCk6IFx1MGFkNz5cdTBhY2MgPSBBVSBMRU5HVEggTUFSSz5WT1dFTCBTSUdOIEFVCitcdWUwNTg+XHUwYTk1XHUwYWJjOyAjIEZBTExCQUNLCitcdWUwNTk+XHUwYTk2XHUwYWJjOyAjIFJFTUFQIChpbmRpY0V4Y2VwdGlvbnMudHh0KTogXHUwYWQ5Plx1MGE5Nlx1MGFiYyA9IExFVFRFUiBLSEhBPkxFVFRFUiBLSEEuU0lHTiBOVUtUQQorXHVlMDVhPlx1MGE5N1x1MGFiYzsgIyBSRU1BUCAoaW5kaWNFeGNlcHRpb25zLnR4dCk6IFx1MGFkYT5cdTBhOTdcdTBhYmMgPSBMRVRURVIgR0hIQT5MRVRURVIgR0EuU0lHTiBOVUtUQQorXHVlMDViPlx1MGE5Y1x1MGFiYzsgIyBSRU1BUCAoaW5kaWNFeGNlcHRpb25zLnR4dCk6IFx1MGFkYj5cdTBhOWNcdTBhYmMgPSBMRVRURVIgWkE+TEVUVEVSIEpBLlNJR04gTlVLVEEKK1x1ZTA1Yz5cdTBhYTFcdTBhYmM7ICMgRkFMTEJBQ0sKK1x1ZTA1ZD5cdTBhYTJcdTBhYmM7ICMgUkVNQVAgKGluZGljRXhjZXB0aW9ucy50eHQpOiBcdTBhZGQ+XHUwYWEyXHUwYWJjID0gTEVUVEVSIFJIQT5MRVRURVIgRERIQS5TSUdOIE5VS1RBCitcdWUwNWU+XHUwYWFiXHUwYWJjOyAjIFJFTUFQIChpbmRpY0V4Y2VwdGlvbnMudHh0KTogXHUwYWRlPlx1MGFhYlx1MGFiYyA9IExFVFRFUiBGQT5MRVRURVIgUEhBLlNJR04gTlVLVEEKK1x1ZTA1Zj5cdTBhYWZcdTBhYmM7ICMgUkVNQVAgKGluZGljRXhjZXB0aW9ucy50eHQpOiBcdTBhZGY+XHUwYWFmXHUwYWJjID0gTEVUVEVSIFlZQT5MRVRURVIgWUEuU0lHTiBOVUtUQQorXHVlMDYwPlx1MGFlMDsgIyBMRVRURVIgVk9DQUxJQyBSUgorXHVlMDYxPlx1MGFiMlx1MGFjMzsgIyBSRU1BUCAoaW5kaWNFeGNlcHRpb25zLnR4dCk6IFx1MGFlMT5cdTBhYjJcdTBhYzMgPSBMRVRURVIgVk9DQUxJQyBMTD5MRVRURVIgTEEuVk9XRUwgU0lHTiBWT0NBTElDIFIKK1x1ZTA2Mj5cdTBhYmZcdTBhYmM7ICMgUkVNQVAgKGluZGljRXhjZXB0aW9ucy50eHQpOiBcdTBhZTI+XHUwYWJmXHUwYWJjID0gVk9XRUwgU0lHTiBWT0NBTElDIEw+Vk9XRUwgU0lHTiBJLlNJR04gTlVLVEEKK1x1ZTA2Mz5cdTBhYzBcdTBhYmM7ICMgUkVNQVAgKGluZGljRXhjZXB0aW9ucy50eHQpOiBcdTBhZTM+XHUwYWMwXHUwYWJjID0gVk9XRUwgU0lHTiBWT0NBTElDIExMPlZPV0VMIFNJR04gSUkuU0lHTiBOVUtUQQorXHVFMDY0Plx1MDk2NDsgICAgICAgICAgIyBEQU5EQQorXHVFMDY1Plx1MDk2NTsgICAgICAgICAgIyBET1VCTEUgREFOREEKK1x1ZTA2Nj5cdTBhZTY7ICMgRElHSVQgWkVSTworXHVlMDY3Plx1MGFlNzsgIyBESUdJVCBPTkUKK1x1ZTA2OD5cdTBhZTg7ICMgRElHSVQgVFdPCitcdWUwNjk+XHUwYWU5OyAjIERJR0lUIFRIUkVFCitcdWUwNmE+XHUwYWVhOyAjIERJR0lUIEZPVVIKK1x1ZTA2Yj5cdTBhZWI7ICMgRElHSVQgRklWRQorXHVlMDZjPlx1MGFlYzsgIyBESUdJVCBTSVgKK1x1ZTA2ZD5cdTBhZWQ7ICMgRElHSVQgU0VWRU4KK1x1ZTA2ZT5cdTBhZWU7ICMgRElHSVQgRUlHSFQKK1x1ZTA2Zj5cdTBhZWY7ICMgRElHSVQgTklORQorXHVlMDcwPjsgICAgICAgIyBBQkJSRVZJQVRJT04gU0lHTgorXHVlMDcxPlx1MGFiMDsgICAgICMgTEVUVEVSIFJBIFdJVEggTUlERExFIERJQUdPTkFMCitcdWUwNzI+XHUwYWIwOyAgICAgIyBMRVRURVIgUkEgV0lUSCBMT1dFUiBESUFHT05BTAorXHVlMDczPjsgICAgICAgICAgICMgUlVQRUUgTUFSSworXHVlMDc0PjsgICAgICAgICAgICMgUlVQRUUgU0lHTgorXHVlMDc1PjsgICAgICAgICAgICMgQ1VSUkVOQ1kgTlVNRVJBVE9SIE9ORQorXHVlMDc2PjsgICAgICAgICAgICMgQ1VSUkVOQ1kgTlVNRVJBVE9SIFRXTworXHVlMDc3PjsgICAgICAgICAgICMgQ1VSUkVOQ1kgTlVNRVJBVE9SIFRIUkVFCitcdWUwNzg+OyAgICAgICAgICAgIyBDVVJSRU5DWSBOVU1FUkFUT1IgRk9VUgorXHVlMDc5PjsgICAgICAgICAgICMgQ1VSUkVOQ1kgTlVNRVJBVE9SIE9ORSBMRVNTIFRIQU4gVEhFIERFTk9NSU5BVE9SCitcdWUwN0E+OyAgICAgICAgICAgIyBDVVJSRU5DWSBERU5PTUlOQVRPUiBTSVhURUVOCitcdWUwN0I+OyAgICAgICAgICAgIyBJU1NIQVIKK1x1RTA3Qz47ICAgICAgICAgICAjIFRJUFBJCitcdUUwN0Q+OyAgICAgICAgICAgIyBBRERBSworXHVFMDdFPjsgICAgICAgICAgICMgSVJJCitcdUUwN0Y+OyAgICAgICAgICAgIyBVUkEKK1x1RTA4MD47ICAgICAgICAgICAjIEVLIE9OS0FSCiswID4gXHUwYWU2OyAgICAgICAjIEZBTExCQUNLIEZPUiBUQU1JTAorMSA+IFx1MGFlNzsKKworI1x1ZTA4MD47ICMgVU5NQVBQRUQgSW50ZXJJbmRpYy1HdWphcmF0aTogSVNTSEFSCisjICAgIDo6IE5GQyAoTkZEKSA7CisjIGVvZgpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9UcmFuc2xpdGVyYXRvcl9JbnRlckluZGljX0d1cm11a2hpLnR4dCBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfSW50ZXJJbmRpY19HdXJtdWtoaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMjQzZmViMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfSW50ZXJJbmRpY19HdXJtdWtoaS50eHQKQEAgLTAsMCArMSwxNTAgQEAKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDb3B5cmlnaHQgKGMpIDE5OTktMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworIyBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQXR0aWMvVHJhbnNsaXRlcmF0b3JfSW50ZXJJbmRpY19HdXJtdWtoaS50eHQsdiAkCisjICREYXRlOiAyMDAyLzA5LzE5IDE4OjExOjIzICQKKyMgJFJldmlzaW9uOiAxLjEwICQKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIEludGVySW5kaWMtR3VybXVraGkKKyM6OiBORkQgKE5GQykgOworJHZvd2VsID0gW1x1MEEwNS1cdTBBMTQgXHUwQTNlLVx1MEE0RF07CiskY29uc29uYW50ID0gW1x1MEExNS1cdTBBMzldOworCitcdWUwMDE+OyAgICAgICAjIEZBTExCQUNLIEJMT1cgQVdBWSBTSUdOIENIQU5EUkFCSU5EVQorI3J1bGVzIGZvciBCSU5ESQorCisjIEFudXN2YXJhIGlzIGVxdWl2YWxlbnQgdG8gQklOREkgd2hlbiBwcmVjZWVkZWQgYnkgYSB2b3dlbAorJHZvd2Vse1x1ZTAwMj5cdTBhMDI7ICMgU0lHTiBBTlVTVkFSQSAoXHUwYTAyID0gU0lHTiBCSU5ESSkKKyMgZWxzZSBpcyBlcXVpdmFsZW50IHRvIFRJUFBJCiskY29uc29uYW50e1x1ZTAwMj5cdTBhNzA7ICMgU0lHTiBUSVBQSQorXHVlMDAyPlx1MGEwMjsKKworXHVlMDAzPjsgIyBGQUxMQkFDSyBCTE9XIEFXQVkgU0lHTiBWSVNBUkdBCitcdWUwMDU+XHUwYTA1OyAjIExFVFRFUiBBCitcdWUwMDY+XHUwYTA2OyAjIExFVFRFUiBBQQorXHVlMDA3Plx1MGEwNzsgIyBMRVRURVIgSQorXHVlMDA4Plx1MGEwODsgIyBMRVRURVIgSUkKK1x1ZTAwOT5cdTBhMDk7ICMgTEVUVEVSIFUKK1x1ZTAwYT5cdTBhMGE7ICMgTEVUVEVSIFVVCitcdWUwMGI+XHUwYTMwXHUwYTNmOyAjIFJFTUFQIChpbmRpY0V4Y2VwdGlvbnMudHh0KTogXHUwYTBiPlx1MGEzMFx1MGEzZiA9IExFVFRFUiBWT0NBTElDIFI+TEVUVEVSIFJBLlZPV0VMIFNJR04gSQorXHVlMDBjPlx1MGEzMzsgIyBGQUxMQkFDSworXHVlMDBkPlx1MGEwZjsgIyBGQUxMQkFDSworXHVlMDBlPlx1MGEwZjsgIyBGQUxMQkFDSworXHVlMDBmPlx1MGEwZjsgIyBMRVRURVIgRUUKK1x1ZTAxMD5cdTBhMTA7ICMgTEVUVEVSIEFJCitcdWUwMTE+XHUwYTEzOyAjIEZBTExCQUNLCitcdWUwMTI+XHUwYTEzOyAjIEZBTExCQUNLCitcdWUwMTM+XHUwYTEzOyAjIExFVFRFUiBPTworXHVlMDE0Plx1MGExNDsgIyBMRVRURVIgQVUKK1x1ZTAxNT5cdTBhMTU7ICMgTEVUVEVSIEtBCitcdWUwMTY+XHUwYTE2OyAjIExFVFRFUiBLSEEKK1x1ZTAxNz5cdTBhMTc7ICMgTEVUVEVSIEdBCitcdWUwMTg+XHUwYTE4OyAjIExFVFRFUiBHSEEKK1x1ZTAxOT5cdTBhMTk7ICMgTEVUVEVSIE5HQQorXHVlMDFhPlx1MGExYTsgIyBMRVRURVIgQ0EKK1x1ZTAxYj5cdTBhMWI7ICMgTEVUVEVSIENIQQorXHVlMDFjPlx1MGExYzsgIyBMRVRURVIgSkEKK1x1ZTAxZD5cdTBhMWQ7ICMgTEVUVEVSIEpIQQorXHVlMDFlPlx1MGExZTsgIyBMRVRURVIgTllBCitcdWUwMWY+XHUwYTFmOyAjIExFVFRFUiBUVEEKK1x1ZTAyMD5cdTBhMjA7ICMgTEVUVEVSIFRUSEEKK1x1ZTAyMT5cdTBhMjE7ICMgTEVUVEVSIEREQQorXHVlMDIyPlx1MGEyMjsgIyBMRVRURVIgRERIQQorXHVlMDIzPlx1MGEyMzsgIyBMRVRURVIgTk5BCitcdWUwMjQ+XHUwYTI0OyAjIExFVFRFUiBUQQorXHVlMDI1Plx1MGEyNTsgIyBMRVRURVIgVEhBCitcdWUwMjY+XHUwYTI2OyAjIExFVFRFUiBEQQorXHVlMDI3Plx1MGEyNzsgIyBMRVRURVIgREhBCitcdWUwMjg+XHUwYTI4OyAjIExFVFRFUiBOQQorXHVlMDI5Plx1MGEyOFx1MGEzYzsgIyBSRU1BUCAoaW5kaWNFeGNlcHRpb25zLnR4dCk6IFx1MGEyOT5cdTBhMjggPSBMRVRURVIgTk5OQT5MRVRURVIgTkEKK1x1ZTAyYT5cdTBhMmE7ICMgTEVUVEVSIFBBCitcdWUwMmI+XHUwYTJiOyAjIExFVFRFUiBQSEEKK1x1ZTAyYz5cdTBhMmM7ICMgTEVUVEVSIEJBCitcdWUwMmQ+XHUwYTJkOyAjIExFVFRFUiBCSEEKK1x1ZTAyZT5cdTBhMmU7ICMgTEVUVEVSIE1BCitcdWUwMmY+XHUwYTJmOyAjIExFVFRFUiBZQQorXHVlMDMwPlx1MGEzMDsgIyBMRVRURVIgUkEKK1x1ZTAzMT5cdTBhMzBcdTBhM2M7ICMgRkFMTEJBQ0sgTEVUVEVSIFJBK05VS1RBCitcdWUwMzI+XHUwYTMyOyAjIExFVFRFUiBMQQorXHVlMDMzPlx1MGEzMzsgIyBMRVRURVIgTExBCitcdWUwMzQ+XHUwYTMzOyAjIFJFTUFQIChpbmRpY0V4Y2VwdGlvbnMudHh0KTogXHUwYTM0Plx1MGEzMyA9IExFVFRFUiBMTExBPkxFVFRFUiBMTEEKK1x1ZTAzNT5cdTBhMzU7ICMgTEVUVEVSIFZBCitcdWUwMzY+XHUwYTM2OyAjIExFVFRFUiBTSEEKK1x1ZTAzNz5cdTBhMzY7ICMgUkVNQVAgKGluZGljRXhjZXB0aW9ucy50eHQpOiBcdTBhMzc+XHUwYTM2ID0gTEVUVEVSIFNTQT5MRVRURVIgU0hBCitcdWUwMzg+XHUwYTM4OyAjIExFVFRFUiBTQQorXHVlMDM5Plx1MGEzOTsgIyBMRVRURVIgSEEKK1x1ZTAzYz5cdTBhM2M7ICMgU0lHTiBOVUtUQQorXHVlMDNkPjsgIyBGQUxMQkFDSyBCTE9XIEFXQVkgU0lHTiBBVkFHUkFIQQorXHVlMDNlPlx1MGEzZTsgIyBWT1dFTCBTSUdOIEFBCitcdWUwM2Y+XHUwYTNmOyAjIFZPV0VMIFNJR04gSQorXHVlMDQwPlx1MGE0MDsgIyBWT1dFTCBTSUdOIElJCitcdWUwNDE+XHUwYTQxOyAjIFZPV0VMIFNJR04gVQorXHVlMDQyPlx1MGE0MjsgIyBWT1dFTCBTSUdOIFVVCitcdWUwNDM+OyAjIEZBTExCQUNLIEJMT1cgQVdBWSBWT1dFTCBTSUdOIFZPQ0FMSUMgUgorXHVlMDQ0PjsgIyBGQUxMQkFDSyBCTE9XIEFXQVkgVk9XRUwgU0lHTiBWT0NBTElDIFJSCitcdWUwNDU+XHUwYTQ4OyAjIFJFTUFQIChpbmRpY0V4Y2VwdGlvbnMudHh0KTogXHUwYTQ1Plx1MGE0OCA9IFZPV0VMIFNJR04gQ0FORFJBIEU+Vk9XRUwgU0lHTiBBSQorXHVlMDQ2Plx1MGE0NzsgIyBGQUxMQUJDSworXHVlMDQ3Plx1MGE0NzsgIyBWT1dFTCBTSUdOIEVFCitcdWUwNDg+XHUwYTQ4OyAjIFZPV0VMIFNJR04gQUkKK1x1ZTA0OT5cdTBhNGM7ICMgUkVNQVAgKGluZGljRXhjZXB0aW9ucy50eHQpOiBcdTBhNDk+XHUwYTRjID0gVk9XRUwgU0lHTiBDQU5EUkEgTz5WT1dFTCBTSUdOIEFVCitcdWUwNGE+XHUwYTRiOyAjIEZBTExCQUNLCitcdWUwNGI+XHUwYTRiOyAjIFZPV0VMIFNJR04gT08KK1x1ZTA0Yz5cdTBhNGM7ICMgVk9XRUwgU0lHTiBBVQorXHVlMDRkPlx1MGE0ZDsgIyBTSUdOIFZJUkFNQQorXHVlMDUwPlx1MGEwZlx1MGEwMjsgIyAgRkFMTEJBQ0sgdG8gT08rQklOREkgOiBPTQorXHVlMDUxPjsKK1x1ZTA1Mj47CitcdWUwNTM+OworXHVlMDU0PjsKK1x1ZTA1NT47ICMgRkFMTEJBQ0sgQkxPVyBBV0FZIExFTkdUSCBNQVJLCitcdWUwNTY+XHUwYTQ4OyAjIFJFTUFQIChpbmRpY0V4Y2VwdGlvbnMudHh0KTogXHUwYTU2Plx1MGE0OCA9IEFJIExFTkdUSCBNQVJLPlZPV0VMIFNJR04gQUkKK1x1ZTA1Nz5cdTBhNGM7ICMgUkVNQVAgKGluZGljRXhjZXB0aW9ucy50eHQpOiBcdTBhNTc+XHUwYTRjID0gQVUgTEVOR1RIIE1BUks+Vk9XRUwgU0lHTiBBVQorXHVlMDU4Plx1MGExNVx1MGEzYzsgIyBGQUxMQkFDSyBSQSsgTlVLVEEKK1x1ZTA1OT5cdTBhNTk7ICMgTEVUVEVSIEtISEEKK1x1ZTA1YT5cdTBhNWE7ICMgTEVUVEVSIEdISEEKK1x1ZTA1Yj5cdTBhNWI7ICMgTEVUVEVSIFpBCitcdWUwNWM+XHUwYTVjOyAjIExFVFRFUiBSUkEKK1x1ZTA1ZD5cdTBhMjJcdTBhM2M7ICMgUkVNQVAgKGluZGljRXhjZXB0aW9ucy50eHQpOiBcdTBhNWQ+XHUwYTIyXHUwYTNjID0gTEVUVEVSIFJIQT5MRVRURVIgRERIQS5TSUdOIE5VS1RBCitcdWUwNWU+XHUwYTVlOyAjIExFVFRFUiBGQQorXHVlMDVmPlx1MGEyZlx1MGEzYzsgIyBSRU1BUCAoaW5kaWNFeGNlcHRpb25zLnR4dCk6IFx1MGE1Zj5cdTBhMmYgPSBMRVRURVIgWVlBPkxFVFRFUiBZQQorXHVlMDYwPlx1MGEzMFx1MGEzZjsgIyBSRU1BUCAoaW5kaWNFeGNlcHRpb25zLnR4dCk6IFx1MGE2MD5cdTBhMzBcdTBhM2YgPSBMRVRURVIgVk9DQUxJQyBSUj5MRVRURVIgUkEuVk9XRUwgU0lHTiBJCitcdWUwNjE+XHUwYTMzXHUwYTNjOyAjIAorXHVlMDYyPlx1MGEzZlx1MGEzYzsgIyBSRU1BUCAoaW5kaWNFeGNlcHRpb25zLnR4dCk6IFx1MGE2Mj5cdTBhM2ZcdTBhM2MgPSBWT1dFTCBTSUdOIFZPQ0FMSUMgTD5WT1dFTCBTSUdOIEkuU0lHTiBOVUtUQQorXHVlMDYzPlx1MGE0MFx1MGEzYzsgIyBSRU1BUCAoaW5kaWNFeGNlcHRpb25zLnR4dCk6IFx1MGE2Mz5cdTBhNDBcdTBhM2MgPSBWT1dFTCBTSUdOIFZPQ0FMSUMgTEw+Vk9XRUwgU0lHTiBJSS5TSUdOIE5VS1RBCitcdUUwNjQ+XHUwOTY0OyAgICAgICAgICAjIERBTkRBCitcdUUwNjU+XHUwOTY1OyAgICAgICAgICAjIERPVUJMRSBEQU5EQQorXHVlMDY2Plx1MGE2NjsgIyBESUdJVCBaRVJPCitcdWUwNjc+XHUwYTY3OyAjIERJR0lUIE9ORQorXHVlMDY4Plx1MGE2ODsgIyBESUdJVCBUV08KK1x1ZTA2OT5cdTBhNjk7ICMgRElHSVQgVEhSRUUKK1x1ZTA2YT5cdTBhNmE7ICMgRElHSVQgRk9VUgorXHVlMDZiPlx1MGE2YjsgIyBESUdJVCBGSVZFCitcdWUwNmM+XHUwYTZjOyAjIERJR0lUIFNJWAorXHVlMDZkPlx1MGE2ZDsgIyBESUdJVCBTRVZFTgorXHVlMDZlPlx1MGE2ZTsgIyBESUdJVCBFSUdIVAorXHVlMDZmPlx1MGE2ZjsgIyBESUdJVCBOSU5FCitcdWUwNzA+OyAgICAgICAjIEFCQlJFVklBVElPTiBTSUdOCitcdWUwNzE+XHUwYTMwOyAgICAgIyBMRVRURVIgUkEgV0lUSCBNSURETEUgRElBR09OQUwKK1x1ZTA3Mj5cdTBhMzA7ICAgICAjIExFVFRFUiBSQSBXSVRIIExPV0VSIERJQUdPTkFMCitcdWUwNzM+OyAgICAgICAgICAgIyBSVVBFRSBNQVJLCitcdWUwNzQ+OyAgICAgICAgICAgIyBSVVBFRSBTSUdOCitcdWUwNzU+OyAgICAgICAgICAgIyBDVVJSRU5DWSBOVU1FUkFUT1IgT05FCitcdWUwNzY+OyAgICAgICAgICAgIyBDVVJSRU5DWSBOVU1FUkFUT1IgVFdPCitcdWUwNzc+OyAgICAgICAgICAgIyBDVVJSRU5DWSBOVU1FUkFUT1IgVEhSRUUKK1x1ZTA3OD47ICAgICAgICAgICAjIENVUlJFTkNZIE5VTUVSQVRPUiBGT1VSCitcdWUwNzk+OyAgICAgICAgICAgIyBDVVJSRU5DWSBOVU1FUkFUT1IgT05FIExFU1MgVEhBTiBUSEUgREVOT01JTkFUT1IKK1x1ZTA3QT47ICAgICAgICAgICAjIENVUlJFTkNZIERFTk9NSU5BVE9SIFNJWFRFRU4KK1x1ZTA3Qj47ICAgICAgICAgICAjIElTU0hBUgorXHVFMDdDPlx1MGE3MDsgICAgICMgVElQUEkKK1x1RTA3RD5cdTBhNzE7ICAgICAjIEFEREFLCitcdUUwN0U+XHUwYTcyOyAgICAgIyBJUkkKK1x1RTA3Rj5cdTBhNzM7ICAgICAjIFVSQQorXHVFMDgwPlx1MGE3NDsgICAgICMgRUsgT05LQVIKKworCiswID4gXHUwYTY2OyAgICAgICAjIEZBTExCQUNLIEZPUiBUQU1JTAorMSA+IFx1MGE2NzsKKyMgICAgOjogTkZDIChORkQpIDsKKyMgZW9mCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL1RyYW5zbGl0ZXJhdG9yX0ludGVySW5kaWNfS2FubmFkYS50eHQgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL1RyYW5zbGl0ZXJhdG9yX0ludGVySW5kaWNfS2FubmFkYS50eHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZTFjMTJhNAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfSW50ZXJJbmRpY19LYW5uYWRhLnR4dApAQCAtMCwwICsxLDE0NCBAQAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENvcHlyaWdodCAoYykgMTk5OS0yMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisjIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9BdHRpYy9UcmFuc2xpdGVyYXRvcl9JbnRlckluZGljX0thbm5hZGEudHh0LHYgJAorIyAkRGF0ZTogMjAwMi8wOS8xOSAxODoxMToyMyAkCisjICRSZXZpc2lvbjogMS4xMCAkCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBJbnRlckluZGljLUthbm5hZGEKKyM6OiBORkQgKE5GQykgOworXHVlMDMyXHVlMDNjPlx1MGNkZTsgIyBMRVRURVIgRkEKK1x1ZTAwMT5cdTBjODI7ICMgUkVNQVAgKGluZGljRXhjZXB0aW9ucy50eHQpOiBcdTBjODE+XHUwYzgyID0gU0lHTiBDQU5EUkFCSU5EVT5TSUdOIEFOVVNWQVJBCitcdWUwMDI+XHUwYzgyOyAjIFNJR04gQU5VU1ZBUkEKK1x1ZTAwMz5cdTBjODM7ICMgU0lHTiBWSVNBUkdBCitcdWUwMDU+XHUwYzg1OyAjIExFVFRFUiBBCitcdWUwMDY+XHUwYzg2OyAjIExFVFRFUiBBQQorXHVlMDA3Plx1MGM4NzsgIyBMRVRURVIgSQorXHVlMDA4Plx1MGM4ODsgIyBMRVRURVIgSUkKK1x1ZTAwOT5cdTBjODk7ICMgTEVUVEVSIFUKK1x1ZTAwYT5cdTBjOGE7ICMgTEVUVEVSIFVVCitcdWUwMGI+XHUwYzhiOyAjIExFVFRFUiBWT0NBTElDIFIKK1x1ZTAwYz5cdTBjOGM7ICMgTEVUVEVSIFZPQ0FMSUMgTAorXHVlMDBkPlx1MGM4ZTsgIyBMRVRURVIgRQorXHVlMDBlPlx1MGM4ZTsgIyBGQUxMQkFDSworXHVlMDBmPlx1MGM4ZjsgIyBMRVRURVIgRUUKK1x1ZTAxMD5cdTBjOTA7ICMgTEVUVEVSIEFJCitcdWUwMTE+XHUwYzkyOyAjIEZBTExCQUNLCitcdWUwMTI+XHUwYzkyOyAjIExFVFRFUiBPCitcdWUwMTM+XHUwYzkzOyAjIExFVFRFUiBPTworXHVlMDE0Plx1MGM5NDsgIyBMRVRURVIgQVUKK1x1ZTAxNT5cdTBjOTU7ICMgTEVUVEVSIEtBCitcdWUwMTY+XHUwYzk2OyAjIExFVFRFUiBLSEEKK1x1ZTAxNz5cdTBjOTc7ICMgTEVUVEVSIEdBCitcdWUwMTg+XHUwYzk4OyAjIExFVFRFUiBHSEEKK1x1ZTAxOT5cdTBjOTk7ICMgTEVUVEVSIE5HQQorXHVlMDFhPlx1MGM5YTsgIyBMRVRURVIgQ0EKK1x1ZTAxYj5cdTBjOWI7ICMgTEVUVEVSIENIQQorXHVlMDFjPlx1MGM5YzsgIyBMRVRURVIgSkEKK1x1ZTAxZD5cdTBjOWQ7ICMgTEVUVEVSIEpIQQorXHVlMDFlPlx1MGM5ZTsgIyBMRVRURVIgTllBCitcdWUwMWY+XHUwYzlmOyAjIExFVFRFUiBUVEEKK1x1ZTAyMD5cdTBjYTA7ICMgTEVUVEVSIFRUSEEKK1x1ZTAyMT5cdTBjYTE7ICMgTEVUVEVSIEREQQorXHVlMDIyPlx1MGNhMjsgIyBMRVRURVIgRERIQQorXHVlMDIzPlx1MGNhMzsgIyBMRVRURVIgTk5BCitcdWUwMjQ+XHUwY2E0OyAjIExFVFRFUiBUQQorXHVlMDI1Plx1MGNhNTsgIyBMRVRURVIgVEhBCitcdWUwMjY+XHUwY2E2OyAjIExFVFRFUiBEQQorXHVlMDI3Plx1MGNhNzsgIyBMRVRURVIgREhBCitcdWUwMjg+XHUwY2E4OyAjIExFVFRFUiBOQQorXHVlMDI5Plx1MGNhODsgIyBSRU1BUCAoaW5kaWNFeGNlcHRpb25zLnR4dCk6IFx1MGNhOT5cdTBjYTggPSBMRVRURVIgTk5OQT5MRVRURVIgTkEKK1x1ZTAyYT5cdTBjYWE7ICMgTEVUVEVSIFBBCitcdWUwMmI+XHUwY2FiOyAjIExFVFRFUiBQSEEKK1x1ZTAyYz5cdTBjYWM7ICMgTEVUVEVSIEJBCitcdWUwMmQ+XHUwY2FkOyAjIExFVFRFUiBCSEEKK1x1ZTAyZT5cdTBjYWU7ICMgTEVUVEVSIE1BCitcdWUwMmY+XHUwY2FmOyAjIExFVFRFUiBZQQorXHVlMDMwXHVlMDNjPlx1MGNiMTsKK1x1ZTAzMD5cdTBjYjA7ICMgTEVUVEVSIFJBCitcdWUwMzE+XHUwY2IxOyAjIExFVFRFUiBSUkEKK1x1ZTAzMj5cdTBjYjI7ICMgTEVUVEVSIExBCitcdWUwMzM+XHUwY2IzOyAjIExFVFRFUiBMTEEKK1x1ZTAzND5cdTBjZGU7ICMgUkVNQVAgKGluZGljRXhjZXB0aW9ucy50eHQpOiBcdTBjYjQ+XHUwY2IzID0gTEVUVEVSIExMTEE+TEVUVEVSIExMQQorXHVlMDM1Plx1MGNiNTsgIyBMRVRURVIgVkEKK1x1ZTAzNj5cdTBjYjY7ICMgTEVUVEVSIFNIQQorXHVlMDM3Plx1MGNiNzsgIyBMRVRURVIgU1NBCitcdWUwMzg+XHUwY2I4OyAjIExFVFRFUiBTQQorXHVlMDM5Plx1MGNiOTsgIyBMRVRURVIgSEEKKworXHVlMDNjPjsgIyBGQUxMQkFDSyBCTE9XIEFXQVkgTlVLVEEKK1x1ZTAzZD47ICMgRkFMTEJBQ0sgQkxPVyBBV0FZIEFWQUdSQUhBCisKK1x1ZTAzZT5cdTBjYmU7ICMgVk9XRUwgU0lHTiBBQQorXHVlMDNmPlx1MGNiZjsgIyBWT1dFTCBTSUdOIEkKK1x1ZTA0MD5cdTBjYzA7ICMgVk9XRUwgU0lHTiBJSQorXHVlMDQxPlx1MGNjMTsgIyBWT1dFTCBTSUdOIFUKK1x1ZTA0Mj5cdTBjYzI7ICMgVk9XRUwgU0lHTiBVVQorXHVlMDQzPlx1MGNjMzsgIyBWT1dFTCBTSUdOIFZPQ0FMSUMgUgorXHVlMDQ0Plx1MGNjNDsgIyBWT1dFTCBTSUdOIFZPQ0FMSUMgUlIKK1x1ZTA0NT5cdTBjYzY7ICMgUkVNQVAgKGluZGljRXhjZXB0aW9ucy50eHQpOiBcdTBjYzU+XHUwY2M2ID0gVk9XRUwgU0lHTiBDQU5EUkEgRT5WT1dFTCBTSUdOIEUKK1x1ZTA0Nj5cdTBjYzY7ICMgVk9XRUwgU0lHTiBFCitcdWUwNDc+XHUwY2M3OyAjIFZPV0VMIFNJR04gRUUKK1x1ZTA0OD5cdTBjYzg7ICMgVk9XRUwgU0lHTiBBSQorXHVlMDQ5Plx1MGNjYTsgIyBSRU1BUCAoaW5kaWNFeGNlcHRpb25zLnR4dCk6IFx1MGNjOT5cdTBjY2EgPSBWT1dFTCBTSUdOIENBTkRSQSBPPlZPV0VMIFNJR04gTworXHVlMDRhPlx1MGNjYTsgIyBWT1dFTCBTSUdOIE8KK1x1ZTA0Yj5cdTBjY2I7ICMgVk9XRUwgU0lHTiBPTworXHVlMDRjPlx1MGNjYzsgIyBWT1dFTCBTSUdOIEFVCitcdWUwNGQ+XHUwY2NkOyAjIFNJR04gVklSQU1BCitcdWUwNTA+XHUwYzkzXHUwYzgyOyAjIFJFTUFQIChpbmRpY0V4Y2VwdGlvbnMudHh0KTogXHUwY2QwPlx1MGM5M1x1MGM4MiA9IE9NPkxFVFRFUiBPTy5TSUdOIEFOVVNWQVJBCitcdWUwNTE+OworXHVlMDUyPjsKK1x1ZTA1Mz47CitcdWUwNTQ+OworXHVlMDU1Plx1MGNkNTsgIyBMRU5HVEggTUFSSworXHVlMDU2Plx1MGNkNjsgIyBBSSBMRU5HVEggTUFSSworXHVlMDU3Plx1MGNjYzsgIyBSRU1BUCAoaW5kaWNFeGNlcHRpb25zLnR4dCk6IFx1MGNkNz5cdTBjY2MgPSBBVSBMRU5HVEggTUFSSz5WT1dFTCBTSUdOIEFVCitcdWUwNTg+XHUwYzk1OyAjIEZBTExCQUNLCitcdWUwNTk+XHUwYzk2OyAjIFJFTUFQIChpbmRpY0V4Y2VwdGlvbnMudHh0KTogXHUwY2Q5Plx1MGM5NiA9IExFVFRFUiBLSEhBPkxFVFRFUiBLSEEKK1x1ZTA1YT5cdTBjOTc7ICMgUkVNQVAgKGluZGljRXhjZXB0aW9ucy50eHQpOiBcdTBjZGE+XHUwYzk3ID0gTEVUVEVSIEdISEE+TEVUVEVSIEdBCitcdWUwNWI+XHUwYzljOyAjIFJFTUFQIChpbmRpY0V4Y2VwdGlvbnMudHh0KTogXHUwY2RiPlx1MGM5YyA9IExFVFRFUiBaQT5MRVRURVIgSkEKK1x1ZTA1Yz5cdTBjYTI7ICMgRkFMTEJBQ0sKK1x1ZTA1ZD5cdTBjYTI7ICMgUkVNQVAgKGluZGljRXhjZXB0aW9ucy50eHQpOiBcdTBjZGQ+XHUwY2EyID0gTEVUVEVSIFJIQT5MRVRURVIgRERIQQorXHVlMDVlPlx1MGNkZTsgIyBMRVRURVIgRkEKK1x1ZTA1Zj5cdTBjYWY7ICMgUkVNQVAgKGluZGljRXhjZXB0aW9ucy50eHQpOiBcdTBjZGY+XHUwY2FmID0gTEVUVEVSIFlZQT5MRVRURVIgWUEKK1x1ZTA2MD5cdTBjZTA7ICMgTEVUVEVSIFZPQ0FMSUMgUlIKK1x1ZTA2MT5cdTBjZTE7ICMgTEVUVEVSIFZPQ0FMSUMgTEwKK1x1ZTA2Mj5cdTBjYmY7ICMgUkVNQVAgKGluZGljRXhjZXB0aW9ucy50eHQpOiBcdTBjZTI+XHUwY2JmID0gVk9XRUwgU0lHTiBWT0NBTElDIEw+Vk9XRUwgU0lHTiBJCitcdWUwNjM+XHUwY2MwOyAjIFJFTUFQIChpbmRpY0V4Y2VwdGlvbnMudHh0KTogXHUwY2UzPlx1MGNjMCA9IFZPV0VMIFNJR04gVk9DQUxJQyBMTD5WT1dFTCBTSUdOIElJCitcdWUwNjQ+Jy4nICAgOyAjIEZBTExCQUNLIEZPUiBEQU5EQQorXHVlMDY1PicuJyAgIDsgIyBGQUxMQkFDSyBGT1IgRE9VQkxFIERBTkRBICAgICAgCitcdWUwNjY+XHUwY2U2OyAjIERJR0lUIFpFUk8KK1x1ZTA2Nz5cdTBjZTc7ICMgRElHSVQgT05FCitcdWUwNjg+XHUwY2U4OyAjIERJR0lUIFRXTworXHVlMDY5Plx1MGNlOTsgIyBESUdJVCBUSFJFRQorXHVlMDZhPlx1MGNlYTsgIyBESUdJVCBGT1VSCitcdWUwNmI+XHUwY2ViOyAjIERJR0lUIEZJVkUKK1x1ZTA2Yz5cdTBjZWM7ICMgRElHSVQgU0lYCitcdWUwNmQ+XHUwY2VkOyAjIERJR0lUIFNFVkVOCitcdWUwNmU+XHUwY2VlOyAjIERJR0lUIEVJR0hUCitcdWUwNmY+XHUwY2VmOyAjIERJR0lUIE5JTkUKK1x1ZTA3MD47ICAgICAgICMgQUJCUkVWSUFUSU9OIFNJR04KK1x1ZTA3MT5cdTBjYjA7ICMgTEVUVEVSIFJBIFdJVEggTUlERExFIERJQUdPTkFMCitcdWUwNzI+XHUwY2IwOyAjIExFVFRFUiBSQSBXSVRIIExPV0VSIERJQUdPTkFMCitcdWUwNzM+OyAgICAgICAjIFJVUEVFIE1BUksKK1x1ZTA3ND47ICAgICAgICMgUlVQRUUgU0lHTgorXHVlMDc1PjsgICAgICAgIyBDVVJSRU5DWSBOVU1FUkFUT1IgT05FCitcdWUwNzY+OyAgICAgICAjIENVUlJFTkNZIE5VTUVSQVRPUiBUV08KK1x1ZTA3Nz47ICAgICAgICMgQ1VSUkVOQ1kgTlVNRVJBVE9SIFRIUkVFCitcdWUwNzg+OyAgICAgICAjIENVUlJFTkNZIE5VTUVSQVRPUiBGT1VSCitcdWUwNzk+OyAgICAgICAjIENVUlJFTkNZIE5VTUVSQVRPUiBPTkUgTEVTUyBUSEFOIFRIRSBERU5PTUlOQVRPUgorXHVlMDdBPjsgICAgICAgIyBDVVJSRU5DWSBERU5PTUlOQVRPUiBTSVhURUVOCitcdWUwN0I+OyAgICAgICAjIElTU0hBUgorXHVFMDdDPjsgICAgICAgIyBUSVBQSQorXHVFMDdEPjsgICAgICAgIyBBRERBSworXHVFMDdFPjsgICAgICAgIyBJUkkKK1x1RTA3Rj47ICAgICAgICMgVVJBCitcdUUwODA+OyAgICAgICAjIEVLIE9OS0FSCisKKzAgPiBcdTBjZTY7ICAgICAgICMgRkFMTEJBQ0sgRk9SIFRBTUlMCisxID4gXHUwY2U3OworCisjICAgIDo6IE5GQyAoTkZEKSA7CisjIGVvZgpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9UcmFuc2xpdGVyYXRvcl9JbnRlckluZGljX0xhdGluLnR4dCBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfSW50ZXJJbmRpY19MYXRpbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZmJhM2FjMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfSW50ZXJJbmRpY19MYXRpbi50eHQKQEAgLTAsMCArMSw1MjYgQEAKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDb3B5cmlnaHQgKGMpIDE5OTktMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworIyBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQXR0aWMvVHJhbnNsaXRlcmF0b3JfSW50ZXJJbmRpY19MYXRpbi50eHQsdiAkCisjICREYXRlOiAyMDAyLzA5LzE5IDE4OjExOjIxICQKKyMgJFJldmlzaW9uOiAxLjggJAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMgSW50ZXJJbmRpYy1MYXRpbgorICAgI1x1MGUwMCByZXNlcnZlZAorICAgICNjb25zb25hbnRzCisgICAgJGNoYW5kcmFiaW5kdT1cdWUwMDE7CisgICAgJGFudXN2YXJhPVx1ZTAwMjsKKyAgICAkdmlzYXJnYT1cdWUwMDM7CisgICAgI1x1MGUwMDQgcmVzZXJ2ZWQKKyAgICAjIHc8dm93ZWw+IHJlcHJlc2VudHMgdGhlIHN0YW5kLWFsb25lIGZvcm0KKyAgICAkd2E9XHVlMDA1OworICAgICR3YWE9XHVlMDA2OworICAgICR3aT1cdWUwMDc7CisgICAgJHdpaT1cdWUwMDg7CisgICAgJHd1PVx1ZTAwOTsKKyAgICAkd3V1PVx1ZTAwYTsKKyAgICAkd3I9XHVlMDBiOworICAgICR3bD1cdWUwMGM7CisgICAgJHdjZT1cdWUwMGQ7ICMgTEVUVEVSIENBTkRSQSBFCisgICAgJHdzZT1cdWUwMGU7ICMgTEVUVEVSIFNIT1JUIEUKKyAgICAkd2U9XHVlMDBmOyAgIyBcdTA5MGYgTEVUVEVSIEUKKyAgICAkd2FpPVx1ZTAxMDsKKyAgICAkd2NvPVx1ZTAxMTsgIyBMRVRURVIgQ0FORFJBIE8KKyAgICAkd3NvPVx1ZTAxMjsgIyBMRVRURVIgU0hPUlQgTworICAgICR3bz1cdWUwMTM7ICAjIFx1MDkxMyBMRVRURVIgTworICAgICR3YXU9XHVlMDE0OworICAgICRrYT1cdWUwMTU7CisgICAgJGtoYT1cdWUwMTY7CisgICAgJGdhPVx1ZTAxNzsKKyAgICAkZ2hhPVx1ZTAxODsKKyAgICAkbmdhPVx1ZTAxOTsKKyAgICAkY2E9XHVlMDFhOworICAgICRjaGE9XHVlMDFiOworICAgICRqYT1cdWUwMWM7CisgICAgJGpoYT1cdWUwMWQ7CisgICAgJG55YT1cdWUwMWU7CisgICAgJHR0YT1cdWUwMWY7CisgICAgJHR0aGE9XHVlMDIwOworICAgICRkZGE9XHVlMDIxOworICAgICRkZGhhPVx1ZTAyMjsKKyAgICAkbm5hPVx1ZTAyMzsKKyAgICAkdGE9XHVlMDI0OworICAgICR0aGE9XHVlMDI1OworICAgICRkYT1cdWUwMjY7CisgICAgJGRoYT1cdWUwMjc7CisgICAgJG5hPVx1ZTAyODsKKyAgICAkZW5hPVx1ZTAyOTsgI2NvbXBhdGliaWxpdHkKKyAgICAkcGE9XHVlMDJhOworICAgICRwaGE9XHVlMDJiOworICAgICRiYT1cdWUwMmM7CisgICAgJGJoYT1cdWUwMmQ7CisgICAgJG1hPVx1ZTAyZTsKKyAgICAkeWE9XHVlMDJmOworICAgICRyYT1cdWUwMzA7CisgICAgJHJyYT1cdWUwMzE7CisgICAgJGxhPVx1ZTAzMjsKKyAgICAkbGxhPVx1ZTAzMzsgCisgICAgJGVsYT1cdWUwMzQ7ICNjb21wYXRpYmlsaXR5CisgICAgJHZhPVx1ZTAzNTsKKyAgICAkc2hhPVx1ZTAzNjsKKyAgICAkc3NhPVx1ZTAzNzsKKyAgICAkc2E9XHVlMDM4OworICAgICRoYT1cdWUwMzk7CisjXHUwOTNhIFJlc2VydmVkCisjXHUwOTNiIFJlc2VydmVkCisgICAgJG51a3RhPVx1ZTAzYzsKKyAgICAkYXZhZ3JhaGE9XHVlMDNkOyAjIFNJR04gQVZBR1JBSEEKKyAgICAjIDx2b3dlbD4gcmVwcmVzZW50cyB0aGUgZGVwZW5kZW50IGZvcm0KKyAgICAkYWE9XHVlMDNlOworICAgICRpPVx1ZTAzZjsKKyAgICAkaWk9XHVlMDQwOworICAgICR1PVx1ZTA0MTsKKyAgICAkdXU9XHVlMDQyOworICAgICRyaD1cdWUwNDM7CisgICAgJGxoPVx1ZTA0NDsKKyAgICAkY2U9XHVlMDQ1OyAjVk9XRUwgU0lHTiBDQU5EUkEgRSAKKyAgICAkc2U9XHVlMDQ2OyAjVk9XRUwgU0lHTiBTSE9SVCBFCisgICAgJGU9XHVlMDQ3OworICAgICRhaT1cdWUwNDg7CisgICAgJGNvPVx1ZTA0OTsgIyBWT1dFTCBTSUdOIENBTkRSQSBPCisgICAgJHNvPVx1ZTA0YTsgIyBWT1dFTCBTSUdOIFNIT1JUIE8KKyAgICAkbz1cdWUwNGI7ICAjIFx1MDk0YgorICAgICRhdT1cdWUwNGM7ICAgIAorICAgICR2aXJhbWE9XHVlMDRkOworIyBcdTA5NGUgUmVzZXJ2ZWQKKyMgXHUwOTRmIFJlc2VydmVkCisgICAgJG9tPVx1ZTA1MDsgIyBPTQorICAgIFx1ZTA1MT47ICAgICAgICAjIFVOTUFQUEVEIFNUUkVTUyBTSUdOIFVEQVRUQQorICAgIFx1ZTA1Mj47ICAgICAgICAjIFVOTUFQUEVEIFNUUkVTUyBTSUdOIEFOVURBVFRBCisgICAgXHVlMDUzPjsgICAgICAgICMgVU5NQVBQRUQgR1JBVkUgQUNDRU5UCisgICAgXHVlMDU0PjsgICAgICAgICMgVU5NQVBQRUQgQUNVVEUgQUNDRU5UCisgICAgJGxtID0gXHVlMDU1OyMgIFRlbHVndSBMZW5ndGggTWFyayAgICAKKyAgICAkYWlsbT1cdWUwNTY7IyAgQUkgTGVuZ3RoIE1hcmsgCisgICAgJGF1bG09XHVlMDU3OyMgIEFVIExlbmd0aCBNYXJrIAorICAgICAjdXJkdSBjb21wYXRpYml0eSBmb3JtcworICAgICR1a2E9XHVlMDU4OworICAgICR1a2hhPVx1ZTA1OTsKKyAgICAkdWdoYT1cdWUwNWE7CisgICAgJHVqaGE9XHVlMDViOworICAgICR1ZGRoYT1cdWUwNWM7CisgICAgJHVkaGE9XHVlMDVkOworICAgICR1ZmE9XHVlMDVlOworICAgICR1eWE9XHVlMDVmOworICAgICR3cnI9XHVlMDYwOworICAgICR3bGw9XHVlMDYxOworICAgICRycmg9XHVlMDYyOworICAgICRsbGg9XHVlMDYzOworICAgICRkYW5kYT1cdWUwNjQ7CisgICAgJGRvdWJsZURhbmRhPVx1ZTA2NTsKKyAgICAkemVybz1cdWUwNjY7ICAgICAjIERJR0lUIFpFUk8KKyAgICAkb25lPVx1ZTA2NzsgICAgICAjIERJR0lUIE9ORQorICAgICR0d289XHVlMDY4OyAgICAgICMgRElHSVQgVFdPCisgICAgJHRocmVlPVx1ZTA2OTsgICAgIyBESUdJVCBUSFJFRQorICAgICRmb3VyPVx1ZTA2YTsgICAgICMgRElHSVQgRk9VUgorICAgICRmaXZlPVx1ZTA2YjsgICAgICMgRElHSVQgRklWRQorICAgICRzaXg9XHVlMDZjOyAgICAgICMgRElHSVQgU0lYCisgICAgJHNldmVuPVx1ZTA2ZDsgICAgIyBESUdJVCBTRVZFTgorICAgICRlaWdodD1cdWUwNmU7ICAgICMgRElHSVQgRUlHSFQKKyAgICAkbmluZT1cdWUwNmY7ICAgICAjIERJR0lUIE5JTkUKKworIyBcdTA5NzA+OyAjIFVOTUFQUEVEIEFCQlJFVklBVElPTiBTSUdOCisgICAgJGRlcFZvd2VsQWJvdmU9W1x1ZTAzZS1cdWUwNDBcdWUwNDUtXHVlMDRjXTsKKyAgICAkZGVwVm93ZWxCZWxvdz1bXHVlMDQxLVx1ZTA0NF07CisgICAgIyAkeCB3YXMgb3JpZ2luYWxseSBjYWxsZWQgJyYnOyAkeiB3YXMgJyUnCisgICAgJHg9WyRhYSRhaSRhdSRpaSRpJHV1JHUkcnJoJHJoJGxoJGxsaCRlJG8kc2UkY2Ukc28kY29dOworICAgICR6PVtiY2RmZ2hqa2xtbnBxcnN0dnd4eXpdOworICAgICR2b3dlbHM9W2FlaW91clx1MDMwNFx1MDMyNVx1MDMwNl07CisgICAgJGZvcmNlSW5kZXBlbmRlbnRNYXRyYSA9IFteW1s6TDpdW1x1MDMwMC1cdTAzNGNdXV07CisgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICAgICMgY29udmVydCBmcm9tIE5hdGl2ZSBsZXR0ZXJzIHRvIExhdGluIGxldHRlcnMKKyAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgICN0cmFuc2xpdGVyYXRpb25zIGZvciBhbnVzdmFyYQorICAgICRhbnVzdmFyYX0gWyRrYSRraGEkZ2EkZ2hhJG5nYV0gICAgICAgICAgICAgPiBuXHUwMzA3OworICAgICRhbnVzdmFyYX0gWyRjYSRjaGEkamEkamhhJG55YV0gICAgICAgICAgICAgPiBuXHUwMzA0OworICAgICRhbnVzdmFyYX0gWyR0dGEkdHRoYSRkZGEkZGRoYSRubmFdICAgICAgICAgPiBuXHUwMzIzOworICAgICRhbnVzdmFyYX0gWyR0YSR0aGEkZGEkZGhhJG5hXSAgICAgICAgICAgICAgPiBuICAgICAgOworICAgICRhbnVzdmFyYX0gWyRwYSRwaGEkYmEkYmhhJG1hXSAgICAgICAgICAgICAgPiBtICAgICAgOworICAgICRhbnVzdmFyYX0gWyR5YSRyYSRsbGEkbGEkdmEkc3NhJHNoYSRzYSRoYV0gPiBuICAgICAgOworICAgICRhbnVzdmFyYT4gbVx1MDMwNzsKKworICAgICMgVXJkdSBjb21wYXRpYmlsaXR5CisgICAgJHlhJG51a3RhfSR4ICAgICAgICA+IHlcdTAzMDcgIDsKKyAgICAkeWEkbnVrdGEkdmlyYW1hICAgID4geVx1MDMwNyAgOworICAgICR5YSRudWt0YSAgICAgICAgICAgPiB5XHUwMzA3YSA7ICAgIAorCisgICAgJGxhJG51a3RhIH0keCAgICAgICA+IGxcdTAzMzEgIDsKKyAgICAkbGEkbnVrdGEkdmlyYW1hICAgID4gbFx1MDMzMSAgOworICAgICRsYSRudWt0YSAgICAgICAgICAgPiBsXHUwMzMxYSA7CisKKyAgICAkbmEkbnVrdGEgfSR4ICAgICAgID4gblx1MDMzMSAgOworICAgICRuYSRudWt0YSR2aXJhbWEgICAgPiBuXHUwMzMxICA7CisgICAgJG5hJG51a3RhICAgICAgICAgICA+IG5cdTAzMzFhIDsKKworICAgICRlbmEgfSR4ICAgICAgICAgICAgPiBuXHUwMzMxICA7CisgICAgJGVuYSR2aXJhbWEgICAgICAgICA+IG5cdTAzMzEgIDsKKyAgICAkZW5hICAgICAgICAgICAgICAgID4gblx1MDMzMWEgOworICAgICR1a2EJCT4gcWEgICAgICAgOworICAgICRrYSRudWt0YSB9JHggICAgICAgPiBxICAgICAgICA7CisgICAgJGthJG51a3RhJHZpcmFtYSAgICA+IHEgICAgICAgIDsKKyAgICAka2EkbnVrdGEgICAgICAgICAgID4gcWEgICAgICAgOworICAgICRraGEkbnVrdGEgfSR4ICAgICAgPiBrXHUwMzMxaFx1MDMzMSA7CisgICAgJGtoYSRudWt0YSR2aXJhbWEgICA+IGtcdTAzMzFoXHUwMzMxIDsKKyAgICAka2hhJG51a3RhICAgICAgICAgID4ga1x1MDMzMWhcdTAzMzFhIDsKKyAgICAkdWtoYSR2aXJhbWEgICAgICAgID4ga1x1MDMzMWhcdTAzMzE7CisgICAgJHVraGEgICAgICAgICAgICAgICA+IGtcdTAzMzFoXHUwMzMxYTsKKyAgICAkdWdoYQkJPiBnXHUwMzA3YSA7CisgICAgJGdhJG51a3RhIH0keCAgICAgICA+IGdcdTAzMDcgIDsKKyAgICAkZ2EkbnVrdGEkdmlyYW1hICAgID4gZ1x1MDMwNyAgOworICAgICRnYSRudWt0YSAgICAgICAgICAgPiBnXHUwMzA3YSA7CisgICAgCisgICAgJHVqaGEgICAgICAgICAgICAgICAgPiB6YSAgICAgICA7CQorICAgICRqYSRudWt0YSB9JHggICAgICAgPiB6ICAgICAgICA7CisgICAgJGphJG51a3RhJHZpcmFtYSAgICA+IHogICAgICAgIDsKKyAgICAkamEkbnVrdGEgICAgICAgICAgID4gemEgICAgICAgOworICAgICRkZGhhJG51a3RhfSR4ICAgICAgPiByXHUwMzIzaCA7CisgICAgJGRkaGEkbnVrdGEkdmlyYW1hICA+IHJcdTAzMjNoIDsKKyAgICAkZGRoYSRudWt0YSAgICAgICAgID4gclx1MDMyM2hhOworCisgICAgJHVkZGhhfSR4ICAgICAgICAgICA+IHJcdTAzMjMgIDsKKyAgICAkdWRkaGEkdmlyYW1hICAgICAgID4gclx1MDMyMyA7CisgICAgJHVkZGhhICAgICAgICAgICAgICA+IHJcdTAzMjNhOworICAgIAorICAgICR1ZGhhICAgICAgICAgICAgICAgPiByXHUwMzIzYSA7CisgICAgJGRkYSRudWt0YX0keCAgICAgICA+IHJcdTAzMjMgIDsKKyAgICAkZGRhJG51a3RhJHZpcmFtYSAgID4gclx1MDMyMyAgOworICAgICRkZGEkbnVrdGEgICAgICAgICAgPiByXHUwMzIzYSA7CisgICAgJHBoYSRudWt0YSB9JHggICAgICA+IGYgIDsKKyAgICAkcGhhJG51a3RhJHZpcmFtYSAgID4gZiAgOworICAgICRwaGEkbnVrdGEgICAgICAgICAgPiBmYSA7CisgICAgJHVmYSB9JHggICAgICAgICAgICA+IGYgIDsKKyAgICAkdWZhJHZpcmFtYSAgICAgICAgID4gZiAgOworICAgICR1ZmEgICAgICAgICAgICAgICAgPiBmYSA7CisKKyAgICAkcmEkbnVrdGF9JHggICAgICAgID4gclx1MDMzMTsKKyAgICAkcmEkbnVrdGEkdmlyYW1hICAgID4gclx1MDMzMTsKKyAgICAkcmEkbnVrdGEgICAgICAgICAgID4gclx1MDMzMWE7CisgICAgJGxsYSRudWt0YX0keCAgICAgICA+IGxcdTAzMzE7CisgICAgJGxsYSRudWt0YSR2aXJhbWEgICA+IGxcdTAzMzE7IAorICAgICRsbGEkbnVrdGEgICAgICAgICAgPiBsXHUwMzMxYTsKKworICAgICRlbGF9JHggICAgICAgICAgICAgPiBsXHUwMzMxOworICAgICRlbGEkdmlyYW1hICAgICAgICAgPiBsXHUwMzMxOyAKKyAgICAkZWxhICAgICAgICAgICAgICAgID4gbFx1MDMzMWE7CisKKyAgICAkdXlhfSR4ICAgICAgICAgICAgID4geVx1MDMwNzsKKyAgICAkdXlhJHZpcmFtYSAgICAgICAgID4geVx1MDMwNzsKKyAgICAkdXlhICAgICAgICAgICAgICAgID4geVx1MDMwN2E7CisKKworICAgICMgbm9ybWFsIGNvbnNvbmFudHMKKyAgICAka2EkdmlyYW1hfSRoYT5rJyc7CisgICAgJGthfSR4Pms7CisgICAgJGthJHZpcmFtYT5rOworICAgICRrYT5rYTsKKyAgICAka2hhfSR4PmtoOworICAgICRraGEkdmlyYW1hPmtoOworICAgICRraGE+a2hhOworICAgICRnYSR2aXJhbWF9JGhhPmcnJzsKKyAgICAkZ2F9JHg+ZzsKKyAgICAkZ2EkdmlyYW1hPmc7CisgICAgJGdhPmdhOworCisgICAgJGdoYX0keD5naDsKKyAgICAkZ2hhJHZpcmFtYT5naDsKKyAgICAkZ2hhPmdoYTsKKworICAgICRuZ2F9JHg+blx1MDMwNzsKKyAgICAkbmdhJHZpcmFtYT5uXHUwMzA3OworICAgICRuZ2E+blx1MDMwN2EgIDsKKyAgICAkY2EkdmlyYW1hfSRoYT5jJyc7CisgICAgJGNhfSR4PmM7CisgICAgJGNhJHZpcmFtYT5jOworICAgICRjYT5jYTsKKworICAgICRjaGF9JHg+Y2g7CisgICAgJGNoYSR2aXJhbWE+Y2g7CisgICAgJGNoYT5jaGE7CisgICAgJGphJHZpcmFtYX0kaGE+aicnOworICAgICRqYX0keD5qOworICAgICRqYSR2aXJhbWE+ajsKKyAgICAkamE+amE7CisKKyAgICAkamhhfSR4PmpoOworICAgICRqaGEkdmlyYW1hPmpoOworICAgICRqaGE+amhhOworCisgICAgJG55YSB9JHg+blx1MDMwMyA7CisgICAgJG55YSR2aXJhbWE+blx1MDMwMzsKKyAgICAkbnlhID4gblx1MDMwM2EgIDsKKworCisgICAgJHR0YSR2aXJhbWF9JGhhPnRcdTAzMjMnJzsKKyAgICAkdHRhfSR4PnRcdTAzMjM7CisgICAgJHR0YSR2aXJhbWE+dFx1MDMyMzsKKyAgICAkdHRhPnRcdTAzMjNhOworCisgICAgJHR0aGF9JHg+dFx1MDMyM2g7CisgICAgJHR0aGEkdmlyYW1hPnRcdTAzMjNoOworICAgICR0dGhhPnRcdTAzMjNoYTsKKyAgICAkZGRhfSR4JGhhPmRcdTAzMjMnJzsKKyAgICAkZGRhfSR4PmRcdTAzMjM7CisgICAgJGRkYSR2aXJhbWE+ZFx1MDMyMzsKKyAgICAkZGRhPmRcdTAzMjNhOworCisgICAgJGRkaGF9JHg+ZFx1MDMyM2g7CisgICAgJGRkaGEkdmlyYW1hPmRcdTAzMjNoOworICAgICRkZGhhPmRcdTAzMjNoYTsKKworICAgICRubmF9JHg+blx1MDMyMyAgOworICAgICRubmEkdmlyYW1hPm5cdTAzMjM7CisgICAgJG5uYT5uXHUwMzIzYSAgIDsKKworCisgICAgJHRhJHZpcmFtYX0kaGE+dCcnOworICAgICR0YSR2aXJhbWF9JHR0aGE+dCcnOworICAgICR0YSR2aXJhbWF9JHR0YT50Jyc7CisgICAgJHRhJHZpcmFtYX0kdGhhPnQnJzsKKyAgICAkdGF9JHg+dDsKKyAgICAkdGEkdmlyYW1hPnQ7CisgICAgJHRhPnRhOworICAgICR0aGF9JHg+dGg7CisgICAgJHRoYSR2aXJhbWE+dGg7CisgICAgJHRoYT50aGE7CisKKyAgICAkZGEkdmlyYW1hfSRoYT5kJyc7CisgICAgJGRhJHZpcmFtYX0kZGRoYT5kJyc7CisgICAgJGRhJHZpcmFtYX0kZGRhPmQnJzsKKyAgICAkZGEkdmlyYW1hfSRkaGE+ZCcnOworICAgICRkYX0keD5kOworICAgICRkYSR2aXJhbWE+ZDsKKyAgICAkZGE+ZGE7CisgICAgJGRoYX0keD5kaDsKKyAgICAkZGhhJHZpcmFtYT5kaDsKKyAgICAkZGhhPmRoYTsKKyAgICAkbmEkdmlyYW1hfSRnYT5uJyc7CisgICAgJG5hJHZpcmFtYX0keWE+bicnOworICAgICRuYX0keD5uOworICAgICRuYSR2aXJhbWE+bjsKKyAgICAkbmE+bmE7CisKKworICAgICRwYSR2aXJhbWF9JGhhPnAnJzsKKyAgICAkcGF9JHg+cDsKKyAgICAkcGEkdmlyYW1hPnA7CisgICAgJHBhPnBhOworICAgICRwaGF9JHg+cGg7CisgICAgJHBoYSR2aXJhbWE+cGg7CisgICAgJHBoYT5waGE7CisgICAgJGJhJHZpcmFtYX0kaGE+YicnOworICAgICRiYX0keD5iOworICAgICRiYSR2aXJhbWE+YjsKKyAgICAkYmE+YmE7CisKKyAgICAkYmhhfSR4PmJoOworICAgICRiaGEkdmlyYW1hPmJoOworICAgICRiaGE+YmhhOworCisgICAgJG1hJHZpcmFtYX0kbWE+bScnOworICAgICRtYX0keD5tOworICAgICRtYSR2aXJhbWE+bTsKKyAgICAkbWE+bWE7CisKKyAgICAkeWF9JHg+eTsKKyAgICAkeWEkdmlyYW1hPnk7CisgICAgJHlhPnlhOworICAgICRyYSR2aXJhbWF9JGhhPnInJzsKKyAgICAkcmF9JHg+cjsKKyAgICAkcmEkdmlyYW1hPnI7CisgICAgJHJhPnJhOworICAgICRycmEkdmlyYW1hfSRoYT5yXHUwMzMxJyc7CisgICAgJHJyYX0keD5yXHUwMzMxOworICAgICRycmEkdmlyYW1hPnJcdTAzMzE7CisgICAgJHJyYT5yXHUwMzMxYTsKKyAgICAkbGEkdmlyYW1hfSRoYT5sJyc7CisgICAgJGxhfSR4Pmw7CisgICAgJGxhJHZpcmFtYT5sOworICAgICRsYT5sYTsKKyAgICAkbGxhJHZpcmFtYX0kaGE+bFx1MDMyMycnOworICAgICRsbGF9JHg+bFx1MDMyMzsKKyAgICAkbGxhJHZpcmFtYT5sXHUwMzIzOworICAgICRsbGE+bFx1MDMyM2E7CisgICAgJHZhfSR4PnY7CisgICAgJHZhJHZpcmFtYT52OworICAgICR2YT52YTsKKyAgICAkc2EkdmlyYW1hfSRoYT5zJyc7CisgICAgJHNhJHZpcmFtYX0kc2hhPnMnJzsKKyAgICAkc2EkdmlyYW1hfSRzc2E+cycnOworICAgICRzYSR2aXJhbWF9JHNhPnMnJzsKKyAgICAkc2F9JHg+czsKKyAgICAkc2EkdmlyYW1hPnM7CisKKyAgICAjZm9yIGd1cm11a2hpCisgICAgJHNhJG51a3RhfSR4PnNcdTAzMDE7CisgICAgJHNhJG51a3RhJHZpcmFtYT5zXHUwMzAxOworICAgICRzYSRudWt0YT5zXHUwMzAxYTsKKyAgICAkc2E+c2E7CisKKyAgICAkc2hhfSR4PnNcdTAzMDE7CisgICAgJHNoYSR2aXJhbWE+c1x1MDMwMTsKKyAgICAkc2hhPnNcdTAzMDFhOworCisgICAgJHNzYX0keD5zXHUwMzIzOworICAgICRzc2EkdmlyYW1hPnNcdTAzMjM7CisgICAgJHNzYT5zXHUwMzIzYTsKKyAgICAkaGF9JHg+aDsKKyAgICAkaGEkdmlyYW1hPmg7CisgICAgJGhhPmhhOworCisgICAgIyBkZXBlbmRlbnQgdm93ZWxzIChzaG91bGQgbmV2ZXIgb2NjdXIgZXhjZXB0IGZvbGxvd2luZyBjb25zb25hbnRzKQorICAgICRmb3JjZUluZGVwZW5kZW50TWF0cmF7JGFhICA+IFx1MDMxNGFcdTAzMDQgICAgICAgOworICAgICRmb3JjZUluZGVwZW5kZW50TWF0cmF7JGFpICA+IFx1MDMxNGFpICAgICAgICAgICAgOworICAgICRmb3JjZUluZGVwZW5kZW50TWF0cmF7JGF1ICA+IFx1MDMxNGF1ICAgICAgICAgICAgOworICAgICRmb3JjZUluZGVwZW5kZW50TWF0cmF7JGlpICA+IFx1MDMxNGlcdTAzMDQgICAgICAgOworICAgICRmb3JjZUluZGVwZW5kZW50TWF0cmF7JGkgICA+IFx1MDMxNGkgICAgICAgICAgICAgOworICAgICRmb3JjZUluZGVwZW5kZW50TWF0cmF7JHV1ICA+IFx1MDMxNHVcdTAzMDQgICAgICAgOworICAgICRmb3JjZUluZGVwZW5kZW50TWF0cmF7JHUgICA+IFx1MDMxNHUgICAgICAgICAgICAgOworICAgICRmb3JjZUluZGVwZW5kZW50TWF0cmF7JHJyaCA+IFx1MDMxNHJcdTAzMjVcdTAzMDQgOworICAgICRmb3JjZUluZGVwZW5kZW50TWF0cmF7JHJoICA+IFx1MDMxNHJcdTAzMjUgICAgICAgOworICAgICRmb3JjZUluZGVwZW5kZW50TWF0cmF7JGxsaCA+IFx1MDMxNGxcdTAzMjVcdTAzMDQgOworICAgICRmb3JjZUluZGVwZW5kZW50TWF0cmF7JGxoICA+IFx1MDMxNGxcdTAzMjUgICAgICAgOworICAgICRmb3JjZUluZGVwZW5kZW50TWF0cmF7JGUgICA+IFx1MDMxNGVcdTAzMDQgICAgICAgOworICAgICRmb3JjZUluZGVwZW5kZW50TWF0cmF7JG8gICA+IFx1MDMxNG9cdTAzMDQgICAgICAgOworICAgICNleHRyYSB2b3dlbHMKKyAgICAkZm9yY2VJbmRlcGVuZGVudE1hdHJheyRjZSAgPiBcdTAzMTRlXHUwMzA2ICAgICAgIDsKKyAgICAkZm9yY2VJbmRlcGVuZGVudE1hdHJheyRjbyAgPiBcdTAzMTRvXHUwMzA2ICAgICAgIDsKKyAgICAkZm9yY2VJbmRlcGVuZGVudE1hdHJheyRzZSAgPiBcdTAzMTRlICAgICAgICAgICAgIDsKKyAgICAkZm9yY2VJbmRlcGVuZGVudE1hdHJheyRzbyAgPiBcdTAzMTRvICAgICAgICAgICAgIDsKKyAgICAkZm9yY2VJbmRlcGVuZGVudE1hdHJheyRudWt0YSAgPjsgIyBOdWt0YSBjYW5ub3QgYXBwZWFyIGluZGVwZW5kZW50bHkgb3IgYXMgZmlyc3QgY2hhcmFjdGVyCisgICAgJGZvcmNlSW5kZXBlbmRlbnRNYXRyYXskdmlyYW1hID47ICMgVmlyYW1hIGNhbm5vdCBhcHBlYXIgaW5kZXBlbmRlbnRseSBvciBhcyBmaXJzdCBjaGFyYWN0ZXIKKyAgICAkYWEgID4gYVx1MDMwNCAgICAgICA7CisgICAgJGFpICA+IGFpICAgICAgICAgICAgOworICAgICRhdSAgPiBhdSAgICAgICAgICAgIDsKKyAgICAkaWkgID4gaVx1MDMwNCAgICAgICA7CisgICAgJGkgICA+IGkgICAgICAgICAgICAgOworICAgICR1dSAgPiB1XHUwMzA0ICAgICAgIDsKKyAgICAkdSAgID4gdSAgICAgICAgICAgICA7CisgICAgJHJyaCA+IHJcdTAzMjVcdTAzMDQgOworICAgICRyaCAgPiByXHUwMzI1ICAgICAgIDsKKyAgICAkbGxoID4gbFx1MDMyNVx1MDMwNCA7CisgICAgJGxoICA+IGxcdTAzMjUgICAgICAgOworICAgICRlICAgPiBlXHUwMzA0ICAgICAgIDsKKyAgICAkbyAgID4gb1x1MDMwNCAgICAgICA7CisgICAgI2V4dHJhIHZvd2VscworICAgICRjZSAgPiBlXHUwMzA2ICAgICAgIDsKKyAgICAkY28gID4gb1x1MDMwNiAgICAgICA7CisgICAgJHNlICA+IGUgICAgICAgICAgICAgOworICAgICRzbyAgPiBvICAgICAgICAgICAgIDsKKyAgICAjZGVwZW5kZW50IHZvd2VscyB3aGVuIGZvbGxvd2luZyBpbmRlcGVuZGVudCB2b3dlbHMuIEdlbmVyYWxseSBJbGxlZ2FsIG9ubHkgZm9yIHJvdW5kdHJpcHBpbmcKKyAgICAkd2FhfSAkeCA+IGFcdTAzMDRcdTAzMTQgICAgICAgIDsKKyAgICAkd2FpfSAkeCA+IGFpXHUwMzE0ICAgICAgICAgICAgIDsKKyAgICAkd2F1fSAkeCA+IGF1XHUwMzE0ICAgICAgICAgICAgIDsKKyAgICAkd2lpfSAkeCA+IGlcdTAzMDRcdTAzMTQgICAgICAgIDsKKyAgICAkd2kgfSAkeCA+IGlcdTAzMTQgICAgICAgICAgICAgIDsKKyAgICAkd3V1fSAkeCA+IHVcdTAzMDRcdTAzMTQgICAgICAgIDsKKyAgICAkd3UgfSAkeCA+IHVcdTAzMTQgICAgICAgICAgICAgIDsKKyAgICAkd3JyfSAkeCA+IHJcdTAzMjVcdTAzMDRcdTAzMTQgIDsKKyAgICAkd3IgfSAkeCA+IHJcdTAzMjVcdTAzMTQgICAgICAgIDsKKyAgICAkd2xsfSAkeCA+IGxcdTAzMjVcdTAzMDRcdTAzMTQgIDsKKyAgICAkd2wgfSAkeCA+IGxcdTAzMjVcdTAzMTQgICAgICAgIDsKKyAgICAkd2UgfSAkeCA+IGVcdTAzMDRcdTAzMTQgICAgICAgIDsKKyAgICAkd28gfSAkeCA+IG9cdTAzMDRcdTAzMTQgICAgICAgIDsKKyAgICAkd2EgfSAkeCA+IGFcdTAzMTQgICAgICAgICAgICAgIDsKKyAgICAjZXh0cmEgdm93ZWxzCisgICAgJHdjZX0gJHggPiBlXHUwMzA2XHUwMzE0ICAgICAgICA7CisgICAgJHdjb30gJHggPiBvXHUwMzA2XHUwMzE0ICAgICAgICA7CisgICAgJHdzZX0gJHggPiBlXHUwMzE0ICAgICAgICAgICAgICA7CisgICAgJHdzb30gJHggPiBvXHUwMzE0ICAgICAgICAgICAgICA7CisgICAgJG9tfSAkeCA+ICcnb21cdTAzMTQgICAgICAgICAgICA7CisgICAgICAgICAgIAorICAgICMgaW5kZXBlbmRlbnQgdm93ZWxzIHdoZW4gcHJlY2VlZGVkIGJ5IHZvd2VscworICAgICR2b3dlbHN7JHdhYSAgICA+ICcnYVx1MDMwNCAgICAgICAgIDsKKyAgICAkdm93ZWxzeyR3YWkgICAgPiAnJ2FpICAgICAgICAgICAgICA7CisgICAgJHZvd2Vsc3skd2F1ICAgID4gJydhdSAgICAgICAgICAgICAgOworICAgICR2b3dlbHN7JHdpaSAgICAgPiAnJ2lcdTAzMDQgICAgICAgIDsKKyAgICAkdm93ZWxzeyR3aSAgICAgPiAnJ2kgICAgICAgICAgICAgICA7CisgICAgJHZvd2Vsc3skd3V1ICAgID4gJyd1XHUwMzA0ICAgICAgICAgOworICAgICR2b3dlbHN7JHd1ICAgICA+ICcndSAgICAgICAgICAgICAgIDsKKyAgICAkdm93ZWxzeyR3cnIgICAgPiAnJ3JcdTAzMjVcdTAzMDQgICA7CisgICAgJHZvd2Vsc3skd3IgICAgID4gJydyXHUwMzI1ICAgICAgICAgOworICAgICR2b3dlbHN7JHdsbCAgICA+ICcnbFx1MDMyNVx1MDMwNCAgIDsKKyAgICAkdm93ZWxzeyR3bCAgICAgPiAnJ2xcdTAzMjUgICAgICAgICA7CisgICAgJHZvd2Vsc3skd2UgICAgID4gJydlXHUwMzA0ICAgICAgICAgOworICAgICR2b3dlbHN7JHdvICAgICA+ICcnb1x1MDMwNCAgICAgICAgIDsKKyAgICAkdm93ZWxzeyR3YSAgICAgPiAnJ2EgICAgICAgICAgICAgICA7CisgICAgI2V4dHJhIHZvd2VscworICAgICR2b3dlbHN7JHdjZSAgICA+ICcnZVx1MDMwNiAgICAgICAgIDsKKyAgICAkdm93ZWxzeyR3Y28gICAgPiAnJ29cdTAzMDYgICAgICAgICA7CisgICAgJHZvd2Vsc3skd3NlICAgID4gJydlICAgICAgICAgICAgICAgOworICAgICR2b3dlbHN7JHdzbyAgICA+ICcnbyAgICAgICAgICAgICAgIDsKKworICAgICMgaW5kZXBlbmRlbnQgdm93ZWxzIChvdGhlcndpc2UpCisgICAgJHdhYSA+IGFcdTAzMDQgICAgICAgICAgOworICAgICR3YWkgPiBhaSAgICAgICAgICAgICAgIDsKKyAgICAkd2F1ID4gYXUgICAgICAgICAgICAgICA7CisgICAgJHdpaSA+IGlcdTAzMDQgICAgICAgICAgOworICAgICR3aSAgPiBpICAgICAgICAgICAgICAgIDsKKyAgICAkd3V1ID4gdVx1MDMwNCAgICAgICAgICA7CisgICAgJHd1ICA+IHUgICAgICAgICAgICAgICAgOworICAgICR3cnIgPiByXHUwMzI1XHUwMzA0ICAgIDsKKyAgICAkd3IgID4gclx1MDMyNSAgICAgICAgICA7CisgICAgJHdsbCA+IGxcdTAzMjVcdTAzMDQgICAgOworICAgICR3bCAgPiBsXHUwMzI1ICAgICAgICAgIDsKKyAgICAkd2UgID4gZVx1MDMwNCAgICAgICAgICA7CisgICAgJHdvICA+IG9cdTAzMDQgICAgICAgICAgOworICAgICR3YSAgPiBhICAgICAgICAgICAgICAgIDsKKyAgICAjZXh0cmEgdm93ZWxzCisgICAgJHdjZSA+IGVcdTAzMDYgICAgICAgICAgOworICAgICR3Y28gPiBvXHUwMzA2ICAgICAgICAgIDsKKyAgICAkd3NlID4gZSAgICAgICAgICAgICAgICA7CisgICAgJHdzbyA+IG8gICAgICAgICAgICAgICAgOworICAgICRvbSA+ICcnb20gICAgICAgICAgICAgIDsKKworICAgICNzdHJlc3MgbWFya3MKKyAgICAkYXZhZ3JhaGEgPiBcdTAzMTU7CisgICAgJGNoYW5kcmFiaW5kdSRhbnVzdmFyYT5cdTAzMDM7CisgICAgJGNoYW5kcmFiaW5kdSA+IG1cdTAzMTA7CisgICAgJHZpc2FyZ2E+aFx1MDMyMzsKKyAgICAjbnVtYmVycworICAgICR6ZXJvICA+IDA7IAorICAgICRvbmUgICA+IDE7ICAKKyAgICAkdHdvICAgPiAyOyAgCisgICAgJHRocmVlID4gMzsKKyAgICAkZm91ciAgPiA0OyAKKyAgICAkZml2ZSAgPiA1OyAKKyAgICAkc2l4ICAgPiA2OyAgCisgICAgJHNldmVuID4gNzsKKyAgICAkZWlnaHQgPiA4OworICAgICRuaW5lICA+IDk7CisgICAgJGxtICAgPjsgCisgICAgJGFpbG0gPjsKKyAgICAkYXVsbSA+OworCisgICAgJGRhbmRhPicuJzsKKyAgICAkZG91YmxlRGFuZGE+Jy4nOworICAgCisgICAgXHVlMDcwPjsgICAgICAgIyBBQkJSRVZJQVRJT04gU0lHTgorICAgICMgTEVUVEVSIFJBIFdJVEggTUlERExFIERJQUdPTkFMCisJXHVlMDcxfSR4PnJhOyAKKwlcdWUwNzEkdmlyYW1hPnI7CisJXHVlMDcxPnJhOyAKKwkjIExFVFRFUiBSQSBXSVRIIExPV0VSIERJQUdPTkFMCisJXHVlMDcyfSR4PnJhOyAKKwlcdWUwNzIkdmlyYW1hPnI7CisJXHVlMDcyPnJhOyAKKwkKKwlcdWUwNzM+OyAgICAgICAjIFJVUEVFIE1BUksKKwlcdWUwNzQ+OyAgICAgICAjIFJVUEVFIFNJR04KKwlcdWUwNzU+OyAgICAgICAjIENVUlJFTkNZIE5VTUVSQVRPUiBPTkUKKwlcdWUwNzY+OyAgICAgICAjIENVUlJFTkNZIE5VTUVSQVRPUiBUV08KKwlcdWUwNzc+OyAgICAgICAjIENVUlJFTkNZIE5VTUVSQVRPUiBUSFJFRQorCVx1ZTA3OD47ICAgICAgICMgQ1VSUkVOQ1kgTlVNRVJBVE9SIEZPVVIKKwlcdWUwNzk+OyAgICAgICAjIENVUlJFTkNZIE5VTUVSQVRPUiBPTkUgTEVTUyBUSEFOIFRIRSBERU5PTUlOQVRPUgorCVx1ZTA3QT47ICAgICAgICMgQ1VSUkVOQ1kgREVOT01JTkFUT1IgU0lYVEVFTgorCVx1ZTA3Qj47ICAgICAgICMgSVNTSEFSCisJXHVFMDdDPjsgICAgICAgIyBUSVBQSQorCVx1RTA3RD47ICAgICAgICMgQUREQUsKKwlcdUUwN0U+OyAgICAgICAjIElSSQorCVx1RTA3Rj47ICAgICAgICMgVVJBCisJXHVFMDgwPjsgICAgICAgIyBFSyBPTktBUgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfSW50ZXJJbmRpY19NYWxheWFsYW0udHh0IGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9UcmFuc2xpdGVyYXRvcl9JbnRlckluZGljX01hbGF5YWxhbS50eHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uY2IzMjM4YwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfSW50ZXJJbmRpY19NYWxheWFsYW0udHh0CkBAIC0wLDAgKzEsMTQ0IEBACisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ29weXJpZ2h0IChjKSAxOTk5LTIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyMgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0F0dGljL1RyYW5zbGl0ZXJhdG9yX0ludGVySW5kaWNfTWFsYXlhbGFtLnR4dCx2ICQKKyMgJERhdGU6IDIwMDIvMDkvMTkgMTg6MTE6MjMgJAorIyAkUmV2aXNpb246IDEuOSAkCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBJbnRlckluZGljLU1hbGF5YWxhbQorIzo6IE5GRCAoTkZDKSA7CitcdWUwMDE+XHUwZDAyOyAjIFJFTUFQIChpbmRpY0V4Y2VwdGlvbnMudHh0KTogXHUwZDAxPlx1MGQwMiA9IFNJR04gQ0FORFJBQklORFU+U0lHTiBBTlVTVkFSQQorXHVlMDAyPlx1MGQwMjsgIyBTSUdOIEFOVVNWQVJBCitcdWUwMDM+XHUwZDAzOyAjIFNJR04gVklTQVJHQQorXHVlMDA1Plx1MGQwNTsgIyBMRVRURVIgQQorXHVlMDA2Plx1MGQwNjsgIyBMRVRURVIgQUEKK1x1ZTAwNz5cdTBkMDc7ICMgTEVUVEVSIEkKK1x1ZTAwOD5cdTBkMDg7ICMgTEVUVEVSIElJCitcdWUwMDk+XHUwZDA5OyAjIExFVFRFUiBVCitcdWUwMGE+XHUwZDBhOyAjIExFVFRFUiBVVQorXHVlMDBiPlx1MGQwYjsgIyBMRVRURVIgVk9DQUxJQyBSCitcdWUwMGM+XHUwZDBjOyAjIExFVFRFUiBWT0NBTElDIEwKK1x1ZTAwZD5cdTBkMGU7ICMgRkFMTExCQUNLIExFVFRFUiBFCitcdWUwMGU+XHUwZDBlOyAjIExFVFRFUiBFCitcdWUwMGY+XHUwZDBmOyAjIExFVFRFUiBFRQorXHVlMDEwPlx1MGQxMDsgIyBMRVRURVIgQUkKK1x1ZTAxMT5cdTBkMTI7ICMgRkFMTEJBQ0sgVE8gTworXHVlMDEyPlx1MGQxMjsgIyBMRVRURVIgTworXHVlMDEzPlx1MGQxMzsgIyBMRVRURVIgT08KK1x1ZTAxND5cdTBkMTQ7ICMgTEVUVEVSIEFVCitcdWUwMTU+XHUwZDE1OyAjIExFVFRFUiBLQQorXHVlMDE2Plx1MGQxNjsgIyBMRVRURVIgS0hBCitcdWUwMTc+XHUwZDE3OyAjIExFVFRFUiBHQQorXHVlMDE4Plx1MGQxODsgIyBMRVRURVIgR0hBCitcdWUwMTk+XHUwZDE5OyAjIExFVFRFUiBOR0EKK1x1ZTAxYT5cdTBkMWE7ICMgTEVUVEVSIENBCitcdWUwMWI+XHUwZDFiOyAjIExFVFRFUiBDSEEKK1x1ZTAxYz5cdTBkMWM7ICMgTEVUVEVSIEpBCitcdWUwMWQ+XHUwZDFkOyAjIExFVFRFUiBKSEEKK1x1ZTAxZT5cdTBkMWU7ICMgTEVUVEVSIE5ZQQorXHVlMDFmPlx1MGQxZjsgIyBMRVRURVIgVFRBCitcdWUwMjA+XHUwZDIwOyAjIExFVFRFUiBUVEhBCitcdWUwMjE+XHUwZDIxOyAjIExFVFRFUiBEREEKK1x1ZTAyMj5cdTBkMjI7ICMgTEVUVEVSIERESEEKK1x1ZTAyMz5cdTBkMjM7ICMgTEVUVEVSIE5OQQorXHVlMDI0Plx1MGQyNDsgIyBMRVRURVIgVEEKK1x1ZTAyNT5cdTBkMjU7ICMgTEVUVEVSIFRIQQorXHVlMDI2Plx1MGQyNjsgIyBMRVRURVIgREEKK1x1ZTAyNz5cdTBkMjc7ICMgTEVUVEVSIERIQQorXHVlMDI4Plx1MGQyODsgIyBMRVRURVIgTkEKK1x1ZTAyOT5cdTBkMjg7ICMgUkVNQVAgKGluZGljRXhjZXB0aW9ucy50eHQpOiBcdTBkMjk+XHUwZDI4ID0gTEVUVEVSIE5OTkE+TEVUVEVSIE5BCitcdWUwMmE+XHUwZDJhOyAjIExFVFRFUiBQQQorXHVlMDJiPlx1MGQyYjsgIyBMRVRURVIgUEhBCitcdWUwMmM+XHUwZDJjOyAjIExFVFRFUiBCQQorXHVlMDJkPlx1MGQyZDsgIyBMRVRURVIgQkhBCitcdWUwMmU+XHUwZDJlOyAjIExFVFRFUiBNQQorXHVlMDJmPlx1MGQyZjsgIyBMRVRURVIgWUEKK1x1ZTAzMFx1ZTAzYz5cdTBkMzE7CitcdWUwMzA+XHUwZDMwOyAjIExFVFRFUiBSQQorXHVlMDMxPlx1MGQzMTsgIyBMRVRURVIgUlJBCitcdWUwMzI+XHUwZDMyOyAjIExFVFRFUiBMQQorXHVlMDMzXHVlMDNjPlx1MGQzNDsKK1x1ZTAzMz5cdTBkMzM7ICMgTEVUVEVSIExMQQorXHVlMDM0Plx1MGQzNDsgIyBMRVRURVIgTExMQQorXHVlMDM1Plx1MGQzNTsgIyBMRVRURVIgVkEKK1x1ZTAzNj5cdTBkMzY7ICMgTEVUVEVSIFNIQQorXHVlMDM3Plx1MGQzNzsgIyBMRVRURVIgU1NBCitcdWUwMzg+XHUwZDM4OyAjIExFVFRFUiBTQQorXHVlMDM5Plx1MGQzOTsgIyBMRVRURVIgSEEKKworXHVlMDNjPjsgIyBGQUxMQkFDSyBCTE9XIEFXQVkgTlVLVEEKK1x1ZTAzZD47ICMgRkFMTEJBQ0sgQkxPVyBBV0FZIEFWQUdSQUhBCisKK1x1ZTAzZT5cdTBkM2U7ICMgVk9XRUwgU0lHTiBBQQorXHVlMDNmPlx1MGQzZjsgIyBWT1dFTCBTSUdOIEkKK1x1ZTA0MD5cdTBkNDA7ICMgVk9XRUwgU0lHTiBJSQorXHVlMDQxPlx1MGQ0MTsgIyBWT1dFTCBTSUdOIFUKK1x1ZTA0Mj5cdTBkNDI7ICMgVk9XRUwgU0lHTiBVVQorXHVlMDQzPlx1MGQ0MzsgIyBWT1dFTCBTSUdOIFZPQ0FMSUMgUgorXHVlMDQ0PjsgIyBGQUxMQkFDSyBCTE9XIEFXQVkgVk9XRUwgU0lHTiBWT0NBTElDIFJSCitcdWUwNDU+XHUwZDNlOyAjIFJFTUFQIChpbmRpY0V4Y2VwdGlvbnMudHh0KTogXHUwZDQ1Plx1MGQzZSA9IFZPV0VMIFNJR04gQ0FORFJBIEU+Vk9XRUwgU0lHTiBBQQorXHVlMDQ2Plx1MGQ0NjsgIyBWT1dFTCBTSUdOIEUKK1x1ZTA0Nz5cdTBkNDc7ICMgVk9XRUwgU0lHTiBFRQorXHVlMDQ4Plx1MGQ0ODsgIyBWT1dFTCBTSUdOIEFJCitcdWUwNDk+XHUwZDRiOyAjIFJFTUFQIChpbmRpY0V4Y2VwdGlvbnMudHh0KTogXHUwZDQ5Plx1MGQ0YiA9IFZPV0VMIFNJR04gQ0FORFJBIE8+Vk9XRUwgU0lHTiBPTworXHVlMDRhPlx1MGQ0YTsgIyBWT1dFTCBTSUdOIE8KK1x1ZTA0Yj5cdTBkNGI7ICMgVk9XRUwgU0lHTiBPTworXHVlMDRjPlx1MGQ0YzsgIyBWT1dFTCBTSUdOIEFVCitcdWUwNGQ+XHUwZDRkOyAjIFNJR04gVklSQU1BCitcdWUwNTA+XHUwZDEzXHUwZDAyOyAjIFVOTUFQUEVEIEludGVySW5kaWMtTWFsYXlhbGFtOiBPTQorXHVlMDUxPjsKK1x1ZTA1Mj47CitcdWUwNTM+OworXHVlMDU0PjsKK1x1ZTA1NT47ICMgRkFMTEJBQ0sgQkxPVyBBV0FZIExFTkdUSCBNQVJLCitcdWUwNTY+XHUwZDQ4OyAjIFJFTUFQIChpbmRpY0V4Y2VwdGlvbnMudHh0KTogXHUwZDU2Plx1MGQ0OCA9IEFJIExFTkdUSCBNQVJLPlZPV0VMIFNJR04gQUkKK1x1ZTA1Nz5cdTBkNTc7ICMgQVUgTEVOR1RIIE1BUksKK1x1ZTA1OD5cdTBkMTU7ICMgRkFMTEJBQ0sKK1x1ZTA1OT5cdTBkMTY7ICMgUkVNQVAgKGluZGljRXhjZXB0aW9ucy50eHQpOiBcdTBkNTk+XHUwZDE2ID0gTEVUVEVSIEtISEE+TEVUVEVSIEtIQQorXHVlMDVhPlx1MGQxNzsgIyBSRU1BUCAoaW5kaWNFeGNlcHRpb25zLnR4dCk6IFx1MGQ1YT5cdTBkMTcgPSBMRVRURVIgR0hIQT5MRVRURVIgR0EKK1x1ZTA1Yj5cdTBkMWM7ICMgUkVNQVAgKGluZGljRXhjZXB0aW9ucy50eHQpOiBcdTBkNWI+XHUwZDFjID0gTEVUVEVSIFpBPkxFVFRFUiBKQQorXHVlMDVkPlx1MGQyMjsgIyBSRU1BUCAoaW5kaWNFeGNlcHRpb25zLnR4dCk6IFx1MGQ1ZD5cdTBkMjIgPSBMRVRURVIgUkhBPkxFVFRFUiBEREhBCitcdWUwNWM+XHUwZDIxOyAjIEZBTExCQUNLCitcdWUwNWU+XHUwZDJiOyAjIFJFTUFQIChpbmRpY0V4Y2VwdGlvbnMudHh0KTogXHUwZDVlPlx1MGQyYiA9IExFVFRFUiBGQT5MRVRURVIgUEhBCitcdWUwNWY+XHUwZDJmOyAjIFJFTUFQIChpbmRpY0V4Y2VwdGlvbnMudHh0KTogXHUwZDVmPlx1MGQyZiA9IExFVFRFUiBZWUE+TEVUVEVSIFlBCitcdWUwNjA+XHUwZDYwOyAjIExFVFRFUiBWT0NBTElDIFJSCitcdWUwNjE+XHUwZDYxOyAjIExFVFRFUiBWT0NBTElDIExMCitcdWUwNjI+OyAjIEZBTExCQUNLIEJMT1cgQVdBWSBWT1dFTCBTSUdOIFZPQ0FMSUMgTAorXHVlMDYzPjsgIyBGQUxMQkFDSyBCTE9XIEFXQVkgVk9XRUwgU0lHTiBWT0NBTElDIExMCitcdWUwNjQ+Jy4nICAgOyAjIEZBTExCQUNLIEZPUiBEQU5EQQorXHVlMDY1PicuJyAgIDsgIyBGQUxMQkFDSyBGT1IgRE9VQkxFIERBTkRBICAgICAgCitcdWUwNjY+XHUwZDY2OyAjIERJR0lUIFpFUk8KK1x1ZTA2Nz5cdTBkNjc7ICMgRElHSVQgT05FCitcdWUwNjg+XHUwZDY4OyAjIERJR0lUIFRXTworXHVlMDY5Plx1MGQ2OTsgIyBESUdJVCBUSFJFRQorXHVlMDZhPlx1MGQ2YTsgIyBESUdJVCBGT1VSCitcdWUwNmI+XHUwZDZiOyAjIERJR0lUIEZJVkUKK1x1ZTA2Yz5cdTBkNmM7ICMgRElHSVQgU0lYCitcdWUwNmQ+XHUwZDZkOyAjIERJR0lUIFNFVkVOCitcdWUwNmU+XHUwZDZlOyAjIERJR0lUIEVJR0hUCitcdWUwNmY+XHUwZDZmOyAjIERJR0lUIE5JTkUKK1x1ZTA3MD47ICAgICAgICMgQUJCUkVWSUFUSU9OIFNJR04KK1x1ZTA3MT5cdTBkMzA7ICMgTEVUVEVSIFJBIFdJVEggTUlERExFIERJQUdPTkFMCitcdWUwNzI+XHUwZDMwOyAjIExFVFRFUiBSQSBXSVRIIExPV0VSIERJQUdPTkFMCitcdWUwNzM+OyAgICAgICAjIFJVUEVFIE1BUksKK1x1ZTA3ND47ICAgICAgICMgUlVQRUUgU0lHTgorXHVlMDc1PjsgICAgICAgIyBDVVJSRU5DWSBOVU1FUkFUT1IgT05FCitcdWUwNzY+OyAgICAgICAjIENVUlJFTkNZIE5VTUVSQVRPUiBUV08KK1x1ZTA3Nz47ICAgICAgICMgQ1VSUkVOQ1kgTlVNRVJBVE9SIFRIUkVFCitcdWUwNzg+OyAgICAgICAjIENVUlJFTkNZIE5VTUVSQVRPUiBGT1VSCitcdWUwNzk+OyAgICAgICAjIENVUlJFTkNZIE5VTUVSQVRPUiBPTkUgTEVTUyBUSEFOIFRIRSBERU5PTUlOQVRPUgorXHVlMDdBPjsgICAgICAgIyBDVVJSRU5DWSBERU5PTUlOQVRPUiBTSVhURUVOCitcdWUwN0I+OyAgICAgICAjIElTU0hBUgorXHVFMDdDPjsgICAgICAgIyBUSVBQSQorXHVFMDdEPjsgICAgICAgIyBBRERBSworXHVFMDdFPjsgICAgICAgIyBJUkkKK1x1RTA3Rj47ICAgICAgICMgVVJBCitcdUUwODA+OyAgICAgICAjIEVLIE9OS0FSCisKKzAgPiBcdTBkNjY7ICAgICAgICMgRkFMTEJBQ0sgRk9SIFRBTUlMCisxID4gXHUwZDY3OworCisjICAgIDo6IE5GQyAoTkZEKSA7CisjIGVvZgpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9UcmFuc2xpdGVyYXRvcl9JbnRlckluZGljX09yaXlhLnR4dCBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfSW50ZXJJbmRpY19Pcml5YS50eHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYTdhNmM1MwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfSW50ZXJJbmRpY19Pcml5YS50eHQKQEAgLTAsMCArMSwxNDAgQEAKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDb3B5cmlnaHQgKGMpIDE5OTktMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworIyBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQXR0aWMvVHJhbnNsaXRlcmF0b3JfSW50ZXJJbmRpY19Pcml5YS50eHQsdiAkCisjICREYXRlOiAyMDAyLzA5LzE5IDE4OjExOjIzICQKKyMgJFJldmlzaW9uOiAxLjkgJAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMgSW50ZXJJbmRpYy1Pcml5YQorIzo6IE5GRCAoTkZDKSA7CitcdWUwMDE+XHUwYjAxOyAjIFNJR04gQ0FORFJBQklORFUKK1x1ZTAwMj5cdTBiMDI7ICMgU0lHTiBBTlVTVkFSQQorXHVlMDAzPlx1MGIwMzsgIyBTSUdOIFZJU0FSR0EKK1x1ZTAwNT5cdTBiMDU7ICMgTEVUVEVSIEEKK1x1ZTAwNj5cdTBiMDY7ICMgTEVUVEVSIEFBCitcdWUwMDc+XHUwYjA3OyAjIExFVFRFUiBJCitcdWUwMDg+XHUwYjA4OyAjIExFVFRFUiBJSQorXHVlMDA5Plx1MGIwOTsgIyBMRVRURVIgVQorXHVlMDBhPlx1MGIwYTsgIyBMRVRURVIgVVUKK1x1ZTAwYj5cdTBiMGI7ICMgTEVUVEVSIFZPQ0FMSUMgUgorXHVlMDBjPlx1MGIwYzsgIyBMRVRURVIgVk9DQUxJQyBMCitcdWUwMGQ+XHUwYjBmOyAjIEZBTExCQUNLCitcdWUwMGU+XHUwYjBmOyAjIEZBTExCQUNLCitcdWUwMGY+XHUwYjBmOyAjIExFVFRFUiBFCitcdWUwMTA+XHUwYjEwOyAjIExFVFRFUiBBSQorXHVlMDExPlx1MGIxMzsgIyBGQUxMQkFDSworXHVlMDEyPlx1MGIxMzsgIyBGQUxMQkFDSworXHVlMDEzPlx1MGIxMzsgIyBGQUxMQkFDSyAgTEVUVEVSIE9PIChcdTBiMTMgPSBMRVRURVIgTykKK1x1ZTAxND5cdTBiMTQ7ICMgTEVUVEVSIEFVCitcdWUwMTU+XHUwYjE1OyAjIExFVFRFUiBLQQorXHVlMDE2Plx1MGIxNjsgIyBMRVRURVIgS0hBCitcdWUwMTc+XHUwYjE3OyAjIExFVFRFUiBHQQorXHVlMDE4Plx1MGIxODsgIyBMRVRURVIgR0hBCitcdWUwMTk+XHUwYjE5OyAjIExFVFRFUiBOR0EKK1x1ZTAxYT5cdTBiMWE7ICMgTEVUVEVSIENBCitcdWUwMWI+XHUwYjFiOyAjIExFVFRFUiBDSEEKK1x1ZTAxYz5cdTBiMWM7ICMgTEVUVEVSIEpBCitcdWUwMWQ+XHUwYjFkOyAjIExFVFRFUiBKSEEKK1x1ZTAxZT5cdTBiMWU7ICMgTEVUVEVSIE5ZQQorXHVlMDFmPlx1MGIxZjsgIyBMRVRURVIgVFRBCitcdWUwMjA+XHUwYjIwOyAjIExFVFRFUiBUVEhBCitcdWUwMjE+XHUwYjIxOyAjIExFVFRFUiBEREEKK1x1ZTAyMj5cdTBiMjI7ICMgTEVUVEVSIERESEEKK1x1ZTAyMz5cdTBiMjM7ICMgTEVUVEVSIE5OQQorXHVlMDI0Plx1MGIyNDsgIyBMRVRURVIgVEEKK1x1ZTAyNT5cdTBiMjU7ICMgTEVUVEVSIFRIQQorXHVlMDI2Plx1MGIyNjsgIyBMRVRURVIgREEKK1x1ZTAyNz5cdTBiMjc7ICMgTEVUVEVSIERIQQorXHVlMDI4Plx1MGIyODsgIyBMRVRURVIgTkEKK1x1ZTAyOT5cdTBiMjhcdTBiM2M7ICMgRkFMTEJBQ0sgXHUwYjI5Plx1MGIyOCA9IExFVFRFUiBOTk5BPkxFVFRFUiBOQQorXHVlMDJhPlx1MGIyYTsgIyBMRVRURVIgUEEKK1x1ZTAyYj5cdTBiMmI7ICMgTEVUVEVSIFBIQQorXHVlMDJjPlx1MGIyYzsgIyBMRVRURVIgQkEKK1x1ZTAyZD5cdTBiMmQ7ICMgTEVUVEVSIEJIQQorXHVlMDJlPlx1MGIyZTsgIyBMRVRURVIgTUEKK1x1ZTAyZj5cdTBiMmY7ICMgTEVUVEVSIFlBCitcdWUwMzA+XHUwYjMwOyAjIExFVFRFUiBSQQorXHVlMDMxPlx1MGI1YzsgIyBMRVRURVIgUlJBCitcdWUwMzI+XHUwYjMyOyAjIExFVFRFUiBMQQorXHVlMDMzPlx1MGIzMzsgIyBMRVRURVIgTExBCitcdWUwMzQ+XHUwYjMzXHUwYjNjOyAjIEZBTExCQUNLICBMRVRURVIgTExMQT5MRVRURVIgTExBCitcdWUwMzU+XHUwYjJjOyAjIEZBTExCQUNLIExFVFRFUiBWQT5MRVRURVIgQkEKK1x1ZTAzNj5cdTBiMzY7ICMgTEVUVEVSIFNIQQorXHVlMDM3Plx1MGIzNzsgIyBMRVRURVIgU1NBCitcdWUwMzg+XHUwYjM4OyAjIExFVFRFUiBTQQorXHVlMDM5Plx1MGIzOTsgIyBMRVRURVIgSEEKK1x1ZTAzYz5cdTBiM2M7ICMgU0lHTiBOVUtUQQorXHVlMDNkPlx1MGIzZDsgIyBTSUdOIEFWQUdSQUhBCitcdWUwM2U+XHUwYjNlOyAjIFZPV0VMIFNJR04gQUEKK1x1ZTAzZj5cdTBiM2Y7ICMgVk9XRUwgU0lHTiBJCitcdWUwNDA+XHUwYjQwOyAjIFZPV0VMIFNJR04gSUkKK1x1ZTA0MT5cdTBiNDE7ICMgVk9XRUwgU0lHTiBVCitcdWUwNDI+XHUwYjQyOyAjIFZPV0VMIFNJR04gVVUKK1x1ZTA0Mz5cdTBiNDM7ICMgVk9XRUwgU0lHTiBWT0NBTElDIFIKK1x1ZTA0ND5cdTBiNDNcdTBiM2M7ICMgRkFMTEJBQ0sgXHUwYjQ0Plx1MGI0M1x1MGIzYyA9IFZPV0VMIFNJR04gVk9DQUxJQyBSUj5WT1dFTCBTSUdOIFZPQ0FMSUMgUi5TSUdOIE5VS1RBCitcdWUwNDU+XHUwYjQ3OyAjIEZBTExCQUNLCitcdWUwNDY+XHUwYjQ3OyAjIEZBTExCQUNLCitcdWUwNDc+XHUwYjQ3OyAjIFZPV0VMIFNJR04gRQorXHVlMDQ4Plx1MGI0ODsgIyBWT1dFTCBTSUdOIEFJCitcdWUwNDk+XHUwYjRiOyAjIEZBTExCQUNLCitcdWUwNGE+XHUwYjRiOyAjIEZBTExCQUNLCitcdWUwNGI+XHUwYjRiOyAjIFZPV0VMIFNJR04gRQorXHVlMDRjPlx1MGI0YzsgIyBWT1dFTCBTSUdOIEFVCitcdWUwNGQ+XHUwYjRkOyAjIFNJR04gVklSQU1BCitcdWUwNTA+XHUwYjEzXHUwYjAxOyAjIEZBTExCQUNLIFx1MGI1MD5cdTBiMTNcdTBiMDEgPSBPTT5MRVRURVIgTy5TSUdOIENBTkRSQUJJTkRVCitcdWUwNTE+OworXHVlMDUyPjsKK1x1ZTA1Mz47CitcdWUwNTQ+OworXHVlMDU1PjsgIyBVTk1BUFBFRCBJbnRlckluZGljLU9yaXlhOiBMRU5HVEggTUFSSworXHVlMDU2Plx1MGI1NjsgIyBBSSBMRU5HVEggTUFSSworXHVlMDU3Plx1MGI1NzsgIyBBVSBMRU5HVEggTUFSSworXHVlMDU5Plx1MGIxNlx1MGIzYzsgIyBGQUxMQkFDSyBcdTBiNTk+XHUwYjE2XHUwYjNjID0gTEVUVEVSIEtISEE+TEVUVEVSIEtIQS5TSUdOIE5VS1RBCitcdWUwNTg+XHUwYjE1XHUwYjNjOyAjIEZBTExCQUNLCitcdWUwNWE+XHUwYjE3XHUwYjNjOyAjIEZBTExCQUNLIFx1MGI1YT5cdTBiMTdcdTBiM2MgPSBMRVRURVIgR0hIQT5MRVRURVIgR0EuU0lHTiBOVUtUQQorXHVlMDViPlx1MGIxY1x1MGIzYzsgIyBGQUxMQkFDSyBcdTBiNWI+XHUwYjFjXHUwYjNjID0gTEVUVEVSIFpBPkxFVFRFUiBKQS5TSUdOIE5VS1RBCitcdWUwNWM+XHUwYjIxXHUwYjNjOyAjIEZBTExCQUNLCitcdWUwNWQ+XHUwYjVkOyAjIExFVFRFUiBSSEEKK1x1ZTA1ZT5cdTBiMmJcdTBiM2M7ICMgRkFMTEJBQ0sgXHUwYjVlPlx1MGIyYlx1MGIzYyA9IExFVFRFUiBGQT5MRVRURVIgUEhBLlNJR04gTlVLVEEKK1x1ZTA1Zj5cdTBiNWY7ICMgTEVUVEVSIFlZQQorXHVlMDYwPlx1MGI2MDsgIyBMRVRURVIgVk9DQUxJQyBSUgorXHVlMDYxPlx1MGI2MTsgIyBMRVRURVIgVk9DQUxJQyBMTAorXHVlMDYyPlx1MGI1Nlx1MGIzYzsgIyBGQUxMQkFDSyBcdTBiNjI+XHUwYjU2XHUwYjNjID0gVk9XRUwgU0lHTiBWT0NBTElDIEw+QUkgTEVOR1RIIE1BUksuU0lHTiBOVUtUQQorXHVlMDYzPlx1MGI1N1x1MGIzYzsgIyBGQUxMQkFDSyBcdTBiNjM+XHUwYjU3XHUwYjNjID0gVk9XRUwgU0lHTiBWT0NBTElDIExMPkFVIExFTkdUSCBNQVJLLlNJR04gTlVLVEEKK1x1RTA2ND5cdTA5NjQ7ICMgREFOREEKK1x1RTA2NT5cdTA5NjU7ICMgRE9VQkxFIERBTkRBCitcdWUwNjY+XHUwYjY2OyAjIERJR0lUIFpFUk8KK1x1ZTA2Nz5cdTBiNjc7ICMgRElHSVQgT05FCitcdWUwNjg+XHUwYjY4OyAjIERJR0lUIFRXTworXHVlMDY5Plx1MGI2OTsgIyBESUdJVCBUSFJFRQorXHVlMDZhPlx1MGI2YTsgIyBESUdJVCBGT1VSCitcdWUwNmI+XHUwYjZiOyAjIERJR0lUIEZJVkUKK1x1ZTA2Yz5cdTBiNmM7ICMgRElHSVQgU0lYCitcdWUwNmQ+XHUwYjZkOyAjIERJR0lUIFNFVkVOCitcdWUwNmU+XHUwYjZlOyAjIERJR0lUIEVJR0hUCitcdWUwNmY+XHUwYjZmOyAjIERJR0lUIE5JTkUKK1x1ZTA3MD47ICAgICAgICMgQUJCUkVWSUFUSU9OIFNJR04KK1x1ZTA3MT5cdTBiMzA7ICMgTEVUVEVSIFJBIFdJVEggTUlERExFIERJQUdPTkFMCitcdWUwNzI+XHUwYjMwOyAjIExFVFRFUiBSQSBXSVRIIExPV0VSIERJQUdPTkFMCitcdWUwNzM+OyAgICAgICAjIFJVUEVFIE1BUksKK1x1ZTA3ND47ICAgICAgICMgUlVQRUUgU0lHTgorXHVlMDc1PjsgICAgICAgIyBDVVJSRU5DWSBOVU1FUkFUT1IgT05FCitcdWUwNzY+OyAgICAgICAjIENVUlJFTkNZIE5VTUVSQVRPUiBUV08KK1x1ZTA3Nz47ICAgICAgICMgQ1VSUkVOQ1kgTlVNRVJBVE9SIFRIUkVFCitcdWUwNzg+OyAgICAgICAjIENVUlJFTkNZIE5VTUVSQVRPUiBGT1VSCitcdWUwNzk+OyAgICAgICAjIENVUlJFTkNZIE5VTUVSQVRPUiBPTkUgTEVTUyBUSEFOIFRIRSBERU5PTUlOQVRPUgorXHVlMDdBPjsgICAgICAgIyBDVVJSRU5DWSBERU5PTUlOQVRPUiBTSVhURUVOCitcdWUwN0I+XHUwQjcwOyAjIElTU0hBUgorXHVFMDdDPjsgICAgICAgIyBUSVBQSQorXHVFMDdEPjsgICAgICAgIyBBRERBSworXHVFMDdFPjsgICAgICAgIyBJUkkKK1x1RTA3Rj47ICAgICAgICMgVVJBCitcdUUwODA+OyAgICAgICAjIEVLIE9OS0FSCisKKzAgPiBcdTBiNjY7ICAgICMgRkFMTEJBQ0sgRk9SIFRBTUlMCisxID4gXHUwYjY3OworCisjICAgIDo6IE5GQyAoTkZEKSA7CisjIGVvZgpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9UcmFuc2xpdGVyYXRvcl9JbnRlckluZGljX1RhbWlsLnR4dCBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfSW50ZXJJbmRpY19UYW1pbC50eHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZGI2ZmZiZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfSW50ZXJJbmRpY19UYW1pbC50eHQKQEAgLTAsMCArMSwxNTQgQEAKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDb3B5cmlnaHQgKGMpIDE5OTktMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworIyBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQXR0aWMvVHJhbnNsaXRlcmF0b3JfSW50ZXJJbmRpY19UYW1pbC50eHQsdiAkCisjICREYXRlOiAyMDAyLzA5LzE5IDE4OjExOjIzICQKKyMgJFJldmlzaW9uOiAxLjEwICQKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIEludGVySW5kaWMtVGFtaWwKKyM6OiBORkQgKE5GQykgOworXHVlMDAxPlx1MGI4MjsgIyBGQUxMQkFDSyBTSUdOIENBTkRSQUJJTkRVCitcdWUwMDI+XHUwYjgyOyAjIFNJR04gQU5VU1ZBUkEKK1x1ZTAwMz5cdTBiODM7ICMgU0lHTiBWSVNBUkdBCitcdWUwMDU+XHUwYjg1OyAjIExFVFRFUiBBCitcdWUwMDY+XHUwYjg2OyAjIExFVFRFUiBBQQorXHVlMDA3Plx1MGI4NzsgIyBMRVRURVIgSQorXHVlMDA4Plx1MGI4ODsgIyBMRVRURVIgSUkKK1x1ZTAwOT5cdTBiODk7ICMgTEVUVEVSIFUKK1x1ZTAwYT5cdTBiOGE7ICMgTEVUVEVSIFVVCitcdWUwMGI+XHUwYmIwXHUwYmJmOyAjIFJFTUFQIChpbmRpY0V4Y2VwdGlvbnMudHh0KTogXHUwYjhiPlx1MGJiMFx1MGJiZiA9IExFVFRFUiBWT0NBTElDIFI+TEVUVEVSIFJBLlZPV0VMIFNJR04gSQorXHVlMDBjPlx1MGI4NzsgIyBSRU1BUCAoaW5kaWNFeGNlcHRpb25zLnR4dCk6IFx1MGI4Yz5cdTBiODcgPSBMRVRURVIgVk9DQUxJQyBMPkxFVFRFUiBJCitcdWUwMGQ+XHUwYjhmOyAjIEZBTExCQUNLCitcdWUwMGU+XHUwYjhlOyAjIExFVFRFUiBFCitcdWUwMGY+XHUwYjhmOyAjIExFVFRFUiBFRQorXHVlMDEwPlx1MGI5MDsgIyBMRVRURVIgQUkKK1x1ZTAxMT5cdTBiOTI7ICMgRkFMTEJBQ0sKK1x1ZTAxMj5cdTBiOTI7ICMgTEVUVEVSIE8KK1x1ZTAxMz5cdTBiOTM7ICMgTEVUVEVSIE9PCitcdWUwMTQ+XHUwYjk0OyAjIExFVFRFUiBBVQorXHVlMDE1Plx1MGI5NTsgIyBMRVRURVIgS0EKK1x1ZTAxNj5cdTBiOTU7ICMgUkVNQVAgKGluZGljRXhjZXB0aW9ucy50eHQpOiBcdTBiOTY+XHUwYjk1ID0gTEVUVEVSIEtIQT5MRVRURVIgS0EKK1x1ZTAxNz5cdTBiOTU7ICMgUkVNQVAgKGluZGljRXhjZXB0aW9ucy50eHQpOiBcdTBiOTc+XHUwYjk1ID0gTEVUVEVSIEdBPkxFVFRFUiBLQQorXHVlMDE4Plx1MGI5NTsgIyBSRU1BUCAoaW5kaWNFeGNlcHRpb25zLnR4dCk6IFx1MGI5OD5cdTBiOTUgPSBMRVRURVIgR0hBPkxFVFRFUiBLQQorXHVlMDE5Plx1MGI5OTsgIyBMRVRURVIgTkdBCitcdWUwMWE+XHUwYjlhOyAjIExFVFRFUiBDQQorXHVlMDFiPlx1MGI5YTsgIyBSRU1BUCAoaW5kaWNFeGNlcHRpb25zLnR4dCk6IFx1MGI5Yj5cdTBiOWEgPSBMRVRURVIgQ0hBPkxFVFRFUiBDQQorXHVlMDFjPlx1MGI5YzsgIyBMRVRURVIgSkEKK1x1ZTAxZD5cdTBiOWE7ICMgUkVNQVAgKGluZGljRXhjZXB0aW9ucy50eHQpOiBcdTBiOWQ+XHUwYjlhID0gTEVUVEVSIEpIQT5MRVRURVIgQ0EKK1x1ZTAxZT5cdTBiOWU7ICMgTEVUVEVSIE5ZQQorXHVlMDFmPlx1MGI5ZjsgIyBMRVRURVIgVFRBCitcdWUwMjA+XHUwYjlmOyAjIFJFTUFQIChpbmRpY0V4Y2VwdGlvbnMudHh0KTogXHUwYmEwPlx1MGI5ZiA9IExFVFRFUiBUVEhBPkxFVFRFUiBUVEEKK1x1ZTAyMT5cdTBiOWY7ICMgUkVNQVAgKGluZGljRXhjZXB0aW9ucy50eHQpOiBcdTBiYTE+XHUwYjlmID0gTEVUVEVSIEREQT5MRVRURVIgVFRBCitcdWUwMjI+XHUwYjlmOyAjIFJFTUFQIChpbmRpY0V4Y2VwdGlvbnMudHh0KTogXHUwYmEyPlx1MGI5ZiA9IExFVFRFUiBEREhBPkxFVFRFUiBUVEEKK1x1ZTAyMz5cdTBiYTM7ICMgTEVUVEVSIE5OQQorXHVlMDI0Plx1MGJhNDsgIyBMRVRURVIgVEEKK1x1ZTAyNT5cdTBiYTQ7ICMgUkVNQVAgKGluZGljRXhjZXB0aW9ucy50eHQpOiBcdTBiYTU+XHUwYmE0ID0gTEVUVEVSIFRIQT5MRVRURVIgVEEKK1x1ZTAyNj5cdTBiYTQ7ICMgUkVNQVAgKGluZGljRXhjZXB0aW9ucy50eHQpOiBcdTBiYTY+XHUwYmE0ID0gTEVUVEVSIERBPkxFVFRFUiBUQQorXHVlMDI3Plx1MGJhNDsgIyBSRU1BUCAoaW5kaWNFeGNlcHRpb25zLnR4dCk6IFx1MGJhNz5cdTBiYTQgPSBMRVRURVIgREhBPkxFVFRFUiBUQQorXHVlMDI4XHVlMDNjPlx1MGJhOTsKK1x1ZTAyOD5cdTBiYTg7ICMgTEVUVEVSIE5BCitcdWUwMjk+XHUwYmE5OyAjIExFVFRFUiBOTk5BCitcdWUwMmE+XHUwYmFhOyAjIExFVFRFUiBQQQorXHVlMDJiPlx1MGJhYTsgIyBSRU1BUCAoaW5kaWNFeGNlcHRpb25zLnR4dCk6IFx1MGJhYj5cdTBiYWEgPSBMRVRURVIgUEhBPkxFVFRFUiBQQQorXHVlMDJjPlx1MGJhYTsgIyBSRU1BUCAoaW5kaWNFeGNlcHRpb25zLnR4dCk6IFx1MGJhYz5cdTBiYWEgPSBMRVRURVIgQkE+TEVUVEVSIFBBCitcdWUwMmQ+XHUwYmFhOyAjIFJFTUFQIChpbmRpY0V4Y2VwdGlvbnMudHh0KTogXHUwYmFkPlx1MGJhYSA9IExFVFRFUiBCSEE+TEVUVEVSIFBBCitcdWUwMmU+XHUwYmFlOyAjIExFVFRFUiBNQQorXHVlMDJmPlx1MGJhZjsgIyBMRVRURVIgWUEKK1x1ZTAzMFx1ZTAzYz5cdTBiYjE7CitcdWUwMzA+XHUwYmIwOyAjIExFVFRFUiBSQQorXHVlMDMxPlx1MGJiMTsgIyBMRVRURVIgUlJBCitcdWUwMzI+XHUwYmIyOyAjIExFVFRFUiBMQQorXHVlMDMzXHVlMDNjPlx1MGJiNDsKK1x1ZTAzMz5cdTBiYjM7ICMgTEVUVEVSIExMQQorXHVlMDM0Plx1MGJiNDsgIyBMRVRURVIgTExMQQorXHVlMDM1Plx1MGJiNTsgIyBMRVRURVIgVkEKK1x1ZTAzNj5cdTBiYjc7ICMgUkVNQVAgKGluZGljRXhjZXB0aW9ucy50eHQpOiBcdTBiYjY+XHUwYmI3ID0gTEVUVEVSIFNIQT5MRVRURVIgU1NBCitcdWUwMzc+XHUwYmI3OyAjIExFVFRFUiBTU0EKK1x1ZTAzOD5cdTBiYjg7ICMgTEVUVEVSIFNBCitcdWUwMzk+XHUwYmI5OyAjIExFVFRFUiBIQQorCitcdWUwM2M+OyAjIEZBTExCQUNLIEJMT1cgQVdBWSBOVUtUQQorXHVlMDNkPjsgIyBGQUxMQkFDSyBCTE9XIEFXQVkgQVZBR1JBSEEKKworXHVlMDNlPlx1MGJiZTsgIyBWT1dFTCBTSUdOIEFBCitcdWUwM2Y+XHUwYmJmOyAjIFZPV0VMIFNJR04gSQorXHVlMDQwPlx1MGJjMDsgIyBWT1dFTCBTSUdOIElJCitcdWUwNDE+XHUwYmMxOyAjIFZPV0VMIFNJR04gVQorXHVlMDQyPlx1MGJjMjsgIyBWT1dFTCBTSUdOIFVVCitcdWUwNDM+XHUwYmNkXHUwYmIwXHUwYmJmOyAjIFJFTUFQIChpbmRpY0V4Y2VwdGlvbnMudHh0KTogXHUwYmMzPlx1MGJjZFx1MGJiMFx1MGJiZiA9IFZPV0VMIFNJR04gVk9DQUxJQyBSPlNJR04gVklSQU1BLkxFVFRFUiBSQS5WT1dFTCBTSUdOIEkKK1x1ZTA0ND5cdTBiY2RcdTBiYjBcdTBiYmY7ICMgUkVNQVAgKGluZGljRXhjZXB0aW9ucy50eHQpOiBcdTBiYzQ+XHUwYmNkXHUwYmIwXHUwYmJmID0gVk9XRUwgU0lHTiBWT0NBTElDIFJSPlNJR04gVklSQU1BLkxFVFRFUiBSQS5WT1dFTCBTSUdOIEkKK1x1ZTA0NT5cdTBiYmU7ICMgUkVNQVAgKGluZGljRXhjZXB0aW9ucy50eHQpOiBcdTBiYzU+XHUwYmJlID0gVk9XRUwgU0lHTiBDQU5EUkEgRT5WT1dFTCBTSUdOIEFBCitcdWUwNDY+XHUwYmM2OyAjIFZPV0VMIFNJR04gRQorXHVlMDQ3Plx1MGJjNzsgIyBWT1dFTCBTSUdOIEVFCitcdWUwNDg+XHUwYmM4OyAjIFZPV0VMIFNJR04gQUkKK1x1ZTA0OT5cdTBiYmU7ICMgUkVNQVAgKGluZGljRXhjZXB0aW9ucy50eHQpOiBcdTBiYzk+XHUwYmJlID0gVk9XRUwgU0lHTiBDQU5EUkEgTz5WT1dFTCBTSUdOIEFBCitcdWUwNGE+XHUwYmNhOyAjIFZPV0VMIFNJR04gTworXHVlMDRiPlx1MGJjYjsgIyBWT1dFTCBTSUdOIE9PCitcdWUwNGM+XHUwYmNjOyAjIFZPV0VMIFNJR04gQVUKK1x1ZTA0ZD5cdTBiY2Q7ICMgU0lHTiBWSVJBTUEKK1x1ZTA1MD5cdTBiOTNcdTBiYWVcdTBiY2Q7ICMgUkVNQVAgKGluZGljRXhjZXB0aW9ucy50eHQpOiBcdTBiZDA+XHUwYjkzXHUwYmFlXHUwYmNkID0gT00+TEVUVEVSIE9PLkxFVFRFUiBNQS5TSUdOIFZJUkFNQQorXHVlMDUxPjsKK1x1ZTA1Mj47CitcdWUwNTM+OworXHVlMDU0PjsKK1x1ZTA1NT47ICMgVU5NQVBQRUQgSW50ZXJJbmRpYy1UYW1pbDogTEVOR1RIIE1BUksKK1x1ZTA1Nj5cdTBiYzg7ICMgUkVNQVAgKGluZGljRXhjZXB0aW9ucy50eHQpOiBcdTBiZDY+XHUwYmM4ID0gQUkgTEVOR1RIIE1BUks+Vk9XRUwgU0lHTiBBSQorXHVlMDU3Plx1MGJkNzsgIyBBVSBMRU5HVEggTUFSSworXHVlMDU4Plx1MGI5NTsgIyBGQUxMQkFDSworXHVlMDU5Plx1MGI5NTsgIyBSRU1BUCAoaW5kaWNFeGNlcHRpb25zLnR4dCk6IFx1MGJkOT5cdTBiOTUgPSBMRVRURVIgS0hIQT5MRVRURVIgS0EKK1x1ZTA1YT5cdTBiOTU7ICMgUkVNQVAgKGluZGljRXhjZXB0aW9ucy50eHQpOiBcdTBiZGE+XHUwYjk1ID0gTEVUVEVSIEdISEE+TEVUVEVSIEtBCitcdWUwNWI+XHUwYjljOyAjIFJFTUFQIChpbmRpY0V4Y2VwdGlvbnMudHh0KTogXHUwYmRiPlx1MGI5YyA9IExFVFRFUiBaQT5MRVRURVIgSkEKK1x1ZTA1Yz5cdTBiYTQ7ICMgRkFMTEJBQ0sKK1x1ZTA1ZD5cdTBiOWY7ICMgUkVNQVAgKGluZGljRXhjZXB0aW9ucy50eHQpOiBcdTBiZGQ+XHUwYjlmID0gTEVUVEVSIFJIQT5MRVRURVIgVFRBCitcdWUwNWU+XHUwYmFhOyAjIFJFTUFQIChpbmRpY0V4Y2VwdGlvbnMudHh0KTogXHUwYmRlPlx1MGJhYSA9IExFVFRFUiBGQT5MRVRURVIgUEEKK1x1ZTA1Zj5cdTBiYWY7ICMgUkVNQVAgKGluZGljRXhjZXB0aW9ucy50eHQpOiBcdTBiZGY+XHUwYmFmID0gTEVUVEVSIFlZQT5MRVRURVIgWUEKK1x1ZTA2MD5cdTBiYjBcdTBiYmY7ICMgUkVNQVAgKGluZGljRXhjZXB0aW9ucy50eHQpOiBcdTBiZTA+XHUwYmIwXHUwYmJmID0gTEVUVEVSIFZPQ0FMSUMgUlI+TEVUVEVSIFJBLlZPV0VMIFNJR04gSQorXHVlMDYxPlx1MGI4ODsgIyBSRU1BUCAoaW5kaWNFeGNlcHRpb25zLnR4dCk6IFx1MGJlMT5cdTBiODggPSBMRVRURVIgVk9DQUxJQyBMTD5MRVRURVIgSUkKK1x1ZTA2Mj5cdTBiYmY7IyBGQUxMQkFDSyBWT1dFTCBTSUdOIFZPQ0FMSUMgTAorXHVlMDYzPlx1MGJjMDsjIEZBTExCQUNLIFZPV0VMIFNJR04gVk9DQUxJQyBMTAorXHVlMDY0PicuJyAgIDsgIyBGQUxMQkFDSyBGT1IgREFOREEKK1x1ZTA2NT4nLicgICA7ICMgRkFMTEJBQ0sgRk9SIERPVUJMRSBEQU5EQSAgICAgIAorCitcdWUwNjY+XHUwMDMwOyAjIEZBTExCQUNLIERJR0lUIFpFUk8KKworXHVlMDY3XHVlMDY2XHVlMDY2XHVlMDY2Plx1MGJGMjsKK1x1ZTA2N1x1ZTA2Nlx1ZTA2Nj5cdTBiZjE7CitcdWUwNjdcdWUwNjY+XHUwYkYwOworCitcdWUwNjc+XHUwYmU3OyAjIERJR0lUIE9ORQorXHVlMDY4Plx1MGJlODsgIyBESUdJVCBUV08KK1x1ZTA2OT5cdTBiZTk7ICMgRElHSVQgVEhSRUUKK1x1ZTA2YT5cdTBiZWE7ICMgRElHSVQgRk9VUgorXHVlMDZiPlx1MGJlYjsgIyBESUdJVCBGSVZFCitcdWUwNmM+XHUwYmVjOyAjIERJR0lUIFNJWAorXHVlMDZkPlx1MGJlZDsgIyBESUdJVCBTRVZFTgorXHVlMDZlPlx1MGJlZTsgIyBESUdJVCBFSUdIVAorXHVlMDZmPlx1MGJlZjsgIyBESUdJVCBOSU5FCisKK1x1ZTA3MD47ICAgICAgICMgQUJCUkVWSUFUSU9OIFNJR04KK1x1ZTA3MT5cdTBiYzA7ICMgTEVUVEVSIFJBIFdJVEggTUlERExFIERJQUdPTkFMCitcdWUwNzI+XHUwYmMwOyAjIExFVFRFUiBSQSBXSVRIIExPV0VSIERJQUdPTkFMCitcdWUwNzM+OyAgICAgICAjIFJVUEVFIE1BUksKK1x1ZTA3ND47ICAgICAgICMgUlVQRUUgU0lHTgorXHVlMDc1PjsgICAgICAgIyBDVVJSRU5DWSBOVU1FUkFUT1IgT05FCitcdWUwNzY+OyAgICAgICAjIENVUlJFTkNZIE5VTUVSQVRPUiBUV08KK1x1ZTA3Nz47ICAgICAgICMgQ1VSUkVOQ1kgTlVNRVJBVE9SIFRIUkVFCitcdWUwNzg+OyAgICAgICAjIENVUlJFTkNZIE5VTUVSQVRPUiBGT1VSCitcdWUwNzk+OyAgICAgICAjIENVUlJFTkNZIE5VTUVSQVRPUiBPTkUgTEVTUyBUSEFOIFRIRSBERU5PTUlOQVRPUgorXHVlMDdBPjsgICAgICAgIyBDVVJSRU5DWSBERU5PTUlOQVRPUiBTSVhURUVOCitcdWUwN0I+OyAgICAgICAjIElTU0hBUgorXHVFMDdDPjsgICAgICAgIyBUSVBQSQorXHVFMDdEPjsgICAgICAgIyBBRERBSworXHVFMDdFPjsgICAgICAgIyBJUkkKK1x1RTA3Rj47ICAgICAgICMgVVJBCitcdUUwODA+OyAgICAgICAjIEVLIE9OS0FSCisKKworMTAwMCAgPlx1MEJGMjsgIyBOVU1CRVIgT05FIFRIT1VTQU5ECisxMDAgICA+XHUwQkYxOyAjIE5VTUJFUiBPTkUgSFVORFJFRAorMTAgICAgPlx1MEJGMDsgIyBOVU1CRVIgVEVOCisKKyMgICAgOjogTkZDIChORkQpIDsKKyMgZW9mCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL1RyYW5zbGl0ZXJhdG9yX0ludGVySW5kaWNfVGVsdWd1LnR4dCBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfSW50ZXJJbmRpY19UZWx1Z3UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjVkM2UyYjkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL1RyYW5zbGl0ZXJhdG9yX0ludGVySW5kaWNfVGVsdWd1LnR4dApAQCAtMCwwICsxLDE0NCBAQAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENvcHlyaWdodCAoYykgMTk5OS0yMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisjIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9BdHRpYy9UcmFuc2xpdGVyYXRvcl9JbnRlckluZGljX1RlbHVndS50eHQsdiAkCisjICREYXRlOiAyMDAyLzA5LzE5IDE4OjExOjIzICQKKyMgJFJldmlzaW9uOiAxLjkgJAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMgSW50ZXJJbmRpYy1UZWx1Z3UKKyM6OiBORkQgKE5GQykgOworXHVlMDAxPlx1MGMwMTsgIyBTSUdOIENBTkRSQUJJTkRVCitcdWUwMDI+XHUwYzAyOyAjIFNJR04gQU5VU1ZBUkEKK1x1ZTAwMz5cdTBjMDM7ICMgU0lHTiBWSVNBUkdBCitcdWUwMDU+XHUwYzA1OyAjIExFVFRFUiBBCitcdWUwMDY+XHUwYzA2OyAjIExFVFRFUiBBQQorXHVlMDA3Plx1MGMwNzsgIyBMRVRURVIgSQorXHVlMDA4Plx1MGMwODsgIyBMRVRURVIgSUkKK1x1ZTAwOT5cdTBjMDk7ICMgTEVUVEVSIFUKK1x1ZTAwYT5cdTBjMGE7ICMgTEVUVEVSIFVVCitcdWUwMGI+XHUwYzBiOyAjIExFVFRFUiBWT0NBTElDIFIKK1x1ZTAwYz5cdTBjMGM7ICMgTEVUVEVSIFZPQ0FMSUMgTAorXHVlMDBkPlx1MGMwRTsgIyBGQUxMQkFDSyBNQVBQSU5HCitcdWUwMGU+XHUwYzBFOyAjIExFVFRFUiBFCitcdWUwMGY+XHUwYzBmOyAjIExFVFRFUiBFRQorXHVlMDEwPlx1MGMxMDsgIyBMRVRURVIgQUkKK1x1ZTAxMT5cdTBjMTI7ICMgRkFMQkFDSyBNQVBQSU5HCitcdWUwMTI+XHUwYzEyOyAjIExFVFRFUiBPCitcdWUwMTM+XHUwYzEzOyAjIExFVFRFUiBPTworXHVlMDE0Plx1MGMxNDsgIyBMRVRURVIgQVUKK1x1ZTAxNT5cdTBjMTU7ICMgTEVUVEVSIEtBCitcdWUwMTY+XHUwYzE2OyAjIExFVFRFUiBLSEEKK1x1ZTAxNz5cdTBjMTc7ICMgTEVUVEVSIEdBCitcdWUwMTg+XHUwYzE4OyAjIExFVFRFUiBHSEEKK1x1ZTAxOT5cdTBjMTk7ICMgTEVUVEVSIE5HQQorXHVlMDFhPlx1MGMxYTsgIyBMRVRURVIgQ0EKK1x1ZTAxYj5cdTBjMWI7ICMgTEVUVEVSIENIQQorXHVlMDFjPlx1MGMxYzsgIyBMRVRURVIgSkEKK1x1ZTAxZD5cdTBjMWQ7ICMgTEVUVEVSIEpIQQorXHVlMDFlPlx1MGMxZTsgIyBMRVRURVIgTllBCitcdWUwMWY+XHUwYzFmOyAjIExFVFRFUiBUVEEKK1x1ZTAyMD5cdTBjMjA7ICMgTEVUVEVSIFRUSEEKK1x1ZTAyMT5cdTBjMjE7ICMgTEVUVEVSIEREQQorXHVlMDIyPlx1MGMyMjsgIyBMRVRURVIgRERIQQorXHVlMDIzPlx1MGMyMzsgIyBMRVRURVIgTk5BCitcdWUwMjQ+XHUwYzI0OyAjIExFVFRFUiBUQQorXHVlMDI1Plx1MGMyNTsgIyBMRVRURVIgVEhBCitcdWUwMjY+XHUwYzI2OyAjIExFVFRFUiBEQQorXHVlMDI3Plx1MGMyNzsgIyBMRVRURVIgREhBCitcdWUwMjg+XHUwYzI4OyAjIExFVFRFUiBOQQorXHVlMDI5Plx1MGMyODsgIyBSRU1BUCAoaW5kaWNFeGNlcHRpb25zLnR4dCk6IFx1MGMyOT5cdTBjMjggPSBMRVRURVIgTk5OQT5MRVRURVIgTkEKK1x1ZTAyYT5cdTBjMmE7ICMgTEVUVEVSIFBBCitcdWUwMmI+XHUwYzJiOyAjIExFVFRFUiBQSEEKK1x1ZTAyYz5cdTBjMmM7ICMgTEVUVEVSIEJBCitcdWUwMmQ+XHUwYzJkOyAjIExFVFRFUiBCSEEKK1x1ZTAyZT5cdTBjMmU7ICMgTEVUVEVSIE1BCitcdWUwMmY+XHUwYzJmOyAjIExFVFRFUiBZQQorXHVlMDMwXHVlMDNjPlx1MGMzMTsKK1x1ZTAzMD5cdTBjMzA7ICMgTEVUVEVSIFJBCitcdWUwMzE+XHUwYzMxOyAjIExFVFRFUiBSUkEKK1x1ZTAzMj5cdTBjMzI7ICMgTEVUVEVSIExBCitcdWUwMzM+XHUwYzMzOyAjIExFVFRFUiBMTEEKK1x1ZTAzND5cdTBjMzM7ICMgUkVNQVAgKGluZGljRXhjZXB0aW9ucy50eHQpOiBcdTBjMzQ+XHUwYzMzID0gTEVUVEVSIExMTEE+TEVUVEVSIExMQQorXHVlMDM1Plx1MGMzNTsgIyBMRVRURVIgVkEKK1x1ZTAzNj5cdTBjMzY7ICMgTEVUVEVSIFNIQQorXHVlMDM3Plx1MGMzNzsgIyBMRVRURVIgU1NBCitcdWUwMzg+XHUwYzM4OyAjIExFVFRFUiBTQQorXHVlMDM5Plx1MGMzOTsgIyBMRVRURVIgSEEKKworXHVlMDNjPjsgIyBGQUxMQkFDSyBCTE9XIEFXQVkgTlVLVEEKK1x1ZTAzZD47ICMgRkFMTEJBQ0sgQkxPVyBBV0FZIEFWQUdSQUhBCisKK1x1ZTAzZT5cdTBjM2U7ICMgVk9XRUwgU0lHTiBBQQorXHVlMDNmPlx1MGMzZjsgIyBWT1dFTCBTSUdOIEkKK1x1ZTA0MD5cdTBjNDA7ICMgVk9XRUwgU0lHTiBJSQorXHVlMDQxPlx1MGM0MTsgIyBWT1dFTCBTSUdOIFUKK1x1ZTA0Mj5cdTBjNDI7ICMgVk9XRUwgU0lHTiBVVQorXHVlMDQzPlx1MGM0MzsgIyBWT1dFTCBTSUdOIFZPQ0FMSUMgUgorXHVlMDQ0Plx1MGM0NDsgIyBWT1dFTCBTSUdOIFZPQ0FMSUMgUlIKK1x1ZTA0NT5cdTBjNDY7ICMgVk9XRUwgU0lHTiBDQU5EUkEgRT5WT1dFTCBTSUdOIEUKK1x1ZTA0Nj5cdTBjNDY7ICMgVk9XRUwgU0lHTiBFCitcdWUwNDc+XHUwYzQ3OyAjIFZPV0VMIFNJR04gRUUKK1x1ZTA0OD5cdTBjNDg7ICMgVk9XRUwgU0lHTiBBSQorXHVlMDQ5Plx1MGM0YTsgIyBSRU1BUCAoaW5kaWNFeGNlcHRpb25zLnR4dCk6IFx1MGM0OT5cdTBjNGEgPSBWT1dFTCBTSUdOIENBTkRSQSBPPlZPV0VMIFNJR04gTworXHVlMDRhPlx1MGM0YTsgIyBWT1dFTCBTSUdOIE8KK1x1ZTA0Yj5cdTBjNGI7ICMgVk9XRUwgU0lHTiBPTworXHVlMDRjPlx1MGM0YzsgIyBWT1dFTCBTSUdOIEFVCitcdWUwNGQ+XHUwYzRkOyAjIFNJR04gVklSQU1BCitcdWUwNTA+XHUwYzEzXHUwYzAyOyAjIFJFTUFQIChpbmRpY0V4Y2VwdGlvbnMudHh0KTogXHUwYzUwPlx1MGMxM1x1MGMwMiA9IE9NPkxFVFRFUiBPTy5TSUdOIEFOVVNWQVJBCitcdWUwNTE+OworXHVlMDUyPjsKK1x1ZTA1Mz47CitcdWUwNTQ+OworXHVlMDU1Plx1MGM1NTsgIyBMRU5HVEggTUFSSworXHVlMDU2Plx1MGM1NjsgIyBBSSBMRU5HVEggTUFSSworXHVlMDU3Plx1MGM0YzsgIyBSRU1BUCAoaW5kaWNFeGNlcHRpb25zLnR4dCk6IFx1MGM1Nz5cdTBjNGMgPSBBVSBMRU5HVEggTUFSSz5WT1dFTCBTSUdOIEFVCitcdWUwNTg+XHUwYzE1OyAjIFJFTUFQCitcdWUwNTk+XHUwYzE2OyAjIFJFTUFQIChpbmRpY0V4Y2VwdGlvbnMudHh0KTogXHUwYzU5Plx1MGMxNiA9IExFVFRFUiBLSEhBPkxFVFRFUiBLSEEKK1x1ZTA1YT5cdTBjMTc7ICMgUkVNQVAgKGluZGljRXhjZXB0aW9ucy50eHQpOiBcdTBjNWE+XHUwYzE3ID0gTEVUVEVSIEdISEE+TEVUVEVSIEdBCitcdWUwNWI+XHUwYzFjOyAjIFJFTUFQIChpbmRpY0V4Y2VwdGlvbnMudHh0KTogXHUwYzViPlx1MGMxYyA9IExFVFRFUiBaQT5MRVRURVIgSkEKK1x1ZTA1Yz5cdTBjMjI7ICMgUkVNQVAKK1x1ZTA1ZD5cdTBjMjI7ICMgUkVNQVAgKGluZGljRXhjZXB0aW9ucy50eHQpOiBcdTBjNWQ+XHUwYzIyID0gTEVUVEVSIFJIQT5MRVRURVIgRERIQQorXHVlMDVlPlx1MGMyYjsgIyBSRU1BUCAoaW5kaWNFeGNlcHRpb25zLnR4dCk6IFx1MGM1ZT5cdTBjMmIgPSBMRVRURVIgRkE+TEVUVEVSIFBIQQorXHVlMDVmPlx1MGMyZjsgIyBSRU1BUCAoaW5kaWNFeGNlcHRpb25zLnR4dCk6IFx1MGM1Zj5cdTBjMmYgPSBMRVRURVIgWVlBPkxFVFRFUiBZQQorXHVlMDYwPlx1MGM2MDsgIyBMRVRURVIgVk9DQUxJQyBSUgorXHVlMDYxPlx1MGM2MTsgIyBMRVRURVIgVk9DQUxJQyBMTAorXHVlMDYyPlx1MGMzZjsgIyBSRU1BUCAoaW5kaWNFeGNlcHRpb25zLnR4dCk6IFx1MGM2Mj5cdTBjM2YgPSBWT1dFTCBTSUdOIFZPQ0FMSUMgTD5WT1dFTCBTSUdOIEkKK1x1ZTA2Mz5cdTBjNDA7ICMgUkVNQVAgKGluZGljRXhjZXB0aW9ucy50eHQpOiBcdTBjNjM+XHUwYzQwID0gVk9XRUwgU0lHTiBWT0NBTElDIExMPlZPV0VMIFNJR04gSUkKK1x1ZTA2ND4nLicgICA7ICMgRkFMTEJBQ0sgRk9SIERBTkRBCitcdWUwNjU+Jy4nICAgOyAjIEZBTExCQUNLIEZPUiBET1VCTEUgREFOREEgICAgICAKK1x1ZTA2Nj5cdTBjNjY7ICMgRElHSVQgWkVSTworXHVlMDY3Plx1MGM2NzsgIyBESUdJVCBPTkUKK1x1ZTA2OD5cdTBjNjg7ICMgRElHSVQgVFdPCitcdWUwNjk+XHUwYzY5OyAjIERJR0lUIFRIUkVFCitcdWUwNmE+XHUwYzZhOyAjIERJR0lUIEZPVVIKK1x1ZTA2Yj5cdTBjNmI7ICMgRElHSVQgRklWRQorXHVlMDZjPlx1MGM2YzsgIyBESUdJVCBTSVgKK1x1ZTA2ZD5cdTBjNmQ7ICMgRElHSVQgU0VWRU4KK1x1ZTA2ZT5cdTBjNmU7ICMgRElHSVQgRUlHSFQKK1x1ZTA2Zj5cdTBjNmY7ICMgRElHSVQgTklORQorCitcdWUwNzA+OyAgICAgICAjIEFCQlJFVklBVElPTiBTSUdOCitcdWUwNzE+XHUwYzMwOyAjIExFVFRFUiBSQSBXSVRIIE1JRERMRSBESUFHT05BTAorXHVlMDcyPlx1MGMzMDsgIyBMRVRURVIgUkEgV0lUSCBMT1dFUiBESUFHT05BTAorXHVlMDczPjsgICAgICAgIyBSVVBFRSBNQVJLCitcdWUwNzQ+OyAgICAgICAjIFJVUEVFIFNJR04KK1x1ZTA3NT47ICAgICAgICMgQ1VSUkVOQ1kgTlVNRVJBVE9SIE9ORQorXHVlMDc2PjsgICAgICAgIyBDVVJSRU5DWSBOVU1FUkFUT1IgVFdPCitcdWUwNzc+OyAgICAgICAjIENVUlJFTkNZIE5VTUVSQVRPUiBUSFJFRQorXHVlMDc4PjsgICAgICAgIyBDVVJSRU5DWSBOVU1FUkFUT1IgRk9VUgorXHVlMDc5PjsgICAgICAgIyBDVVJSRU5DWSBOVU1FUkFUT1IgT05FIExFU1MgVEhBTiBUSEUgREVOT01JTkFUT1IKK1x1ZTA3QT47ICAgICAgICMgQ1VSUkVOQ1kgREVOT01JTkFUT1IgU0lYVEVFTgorXHVlMDdCPjsgICAgICAgIyBJU1NIQVIKK1x1RTA3Qz47ICAgICAgICMgVElQUEkKK1x1RTA3RD47ICAgICAgICMgQUREQUsKK1x1RTA3RT47ICAgICAgICMgSVJJCitcdUUwN0Y+OyAgICAgICAjIFVSQQorXHVFMDgwPjsgICAgICAgIyBFSyBPTktBUgorCiswID4gXHUwYzY2OyAgICAgICAjIEZBTExCQUNLIEZPUiBUQU1JTAorMSA+IFx1MGM2NzsKKworIyAgICA6OiBORkMgKE5GRCkgOworIyBlb2YKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfS2FubmFkYV9JbnRlckluZGljLnR4dCBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfS2FubmFkYV9JbnRlckluZGljLnR4dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44ZGFkZmFkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9UcmFuc2xpdGVyYXRvcl9LYW5uYWRhX0ludGVySW5kaWMudHh0CkBAIC0wLDAgKzEsOTQgQEAKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDb3B5cmlnaHQgKGMpIDE5OTktMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworIyBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQXR0aWMvVHJhbnNsaXRlcmF0b3JfS2FubmFkYV9JbnRlckluZGljLnR4dCx2ICQKKyMgJERhdGU6IDIwMDIvMDkvMTkgMTg6MTE6MjMgJAorIyAkUmV2aXNpb246IDEuNiAkCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBLYW5uYWRhLUludGVySW5kaWMKK1x1MENDNlx1MENENT5cdUUwNDc7ICAgICAgICAjIFZPV0VMIFNJR04gRUUKK1x1MENDNlx1MENDRFx1MENENj5cdUUwNDhcdWUwNGQ7ICAgICAgICAjIFZPV0VMIFNJR04gQUkKK1x1MENDNlx1MENENj5cdUUwNDg7ICAgICAgICAjIFZPV0VMIFNJR04gQUkKK1x1MENDNlx1MENDMlx1MENENT5cdUUwNEI7ICAjIFZPV0VMIFNJR04gT08KK1x1MENDNlx1MENDMj5cdUUwNEE7ICAgICAgICAjIFZPV0VMIFNJR04gTworXHUwQ0JGXHUwQ0Q1Plx1RTA0MDsgICAgICAgICMgVk9XRUwgU0lHTiBJSQorCitcdTBDODI+XHVFMDAyOyAgICAgICAgICAgICAgIyBTSUdOIEFOVVNWQVJBCitcdTBDODM+XHVFMDAzOyAgICAgICAgICAgICAgIyBTSUdOIFZJU0FSR0EKK1x1MEM4NT5cdUUwMDU7ICAgICAgICAgICAgICAjIExFVFRFUiBBCitcdTBDODY+XHVFMDA2OyAgICAgICAgICAgICAgIyBMRVRURVIgQUEKK1x1MEM4Nz5cdUUwMDc7ICAgICAgICAgICAgICAjIExFVFRFUiBJCitcdTBDODg+XHVFMDA4OyAgICAgICAgICAgICAgIyBMRVRURVIgSUkKK1x1MEM4OT5cdUUwMDk7ICAgICAgICAgICAgICAjIExFVFRFUiBVCitcdTBDOEE+XHVFMDBBOyAgICAgICAgICAgICAgIyBMRVRURVIgVVUKK1x1MEM4Qj5cdUUwMEI7ICAgICAgICAgICAgICAjIExFVFRFUiBWT0NBTElDIFIKK1x1MEM4Qz5cdUUwMEM7ICAgICAgICAgICAgICAjIExFVFRFUiBWT0NBTElDIEwKK1x1MEM4RT5cdUUwMEU7ICAgICAgICAgICAgICAjIExFVFRFUiBFCitcdTBDOEY+XHVFMDBGOyAgICAgICAgICAgICAgIyBMRVRURVIgRUUKK1x1MEM5MD5cdUUwMTA7ICAgICAgICAgICAgICAjIExFVFRFUiBBSQorXHUwQzkyPlx1RTAxMjsgICAgICAgICAgICAgICMgTEVUVEVSIE8KK1x1MEM5Mz5cdUUwMTM7ICAgICAgICAgICAgICAjIExFVFRFUiBPTworXHUwQzk0Plx1RTAxNDsgICAgICAgICAgICAgICMgTEVUVEVSIEFVCitcdTBDOTU+XHVFMDE1OyAgICAgICAgICAgICAgIyBMRVRURVIgS0EKK1x1MEM5Nj5cdUUwMTY7ICAgICAgICAgICAgICAjIExFVFRFUiBLSEEKK1x1MEM5Nz5cdUUwMTc7ICAgICAgICAgICAgICAjIExFVFRFUiBHQQorXHUwQzk4Plx1RTAxODsgICAgICAgICAgICAgICMgTEVUVEVSIEdIQQorXHUwQzk5Plx1RTAxOTsgICAgICAgICAgICAgICMgTEVUVEVSIE5HQQorXHUwQzlBPlx1RTAxQTsgICAgICAgICAgICAgICMgTEVUVEVSIENBCitcdTBDOUI+XHVFMDFCOyAgICAgICAgICAgICAgIyBMRVRURVIgQ0hBCitcdTBDOUM+XHVFMDFDOyAgICAgICAgICAgICAgIyBMRVRURVIgSkEKK1x1MEM5RD5cdUUwMUQ7ICAgICAgICAgICAgICAjIExFVFRFUiBKSEEKK1x1MEM5RT5cdUUwMUU7ICAgICAgICAgICAgICAjIExFVFRFUiBOWUEKK1x1MEM5Rj5cdUUwMUY7ICAgICAgICAgICAgICAjIExFVFRFUiBUVEEKK1x1MENBMD5cdUUwMjA7ICAgICAgICAgICAgICAjIExFVFRFUiBUVEhBCitcdTBDQTE+XHVFMDIxOyAgICAgICAgICAgICAgIyBMRVRURVIgRERBCitcdTBDQTI+XHVFMDIyOyAgICAgICAgICAgICAgIyBMRVRURVIgRERIQQorXHUwQ0EzPlx1RTAyMzsgICAgICAgICAgICAgICMgTEVUVEVSIE5OQQorXHUwQ0E0Plx1RTAyNDsgICAgICAgICAgICAgICMgTEVUVEVSIFRBCitcdTBDQTU+XHVFMDI1OyAgICAgICAgICAgICAgIyBMRVRURVIgVEhBCitcdTBDQTY+XHVFMDI2OyAgICAgICAgICAgICAgIyBMRVRURVIgREEKK1x1MENBNz5cdUUwMjc7ICAgICAgICAgICAgICAjIExFVFRFUiBESEEKK1x1MENBOD5cdUUwMjg7ICAgICAgICAgICAgICAjIExFVFRFUiBOQQorXHUwQ0FBPlx1RTAyQTsgICAgICAgICAgICAgICMgTEVUVEVSIFBBCitcdTBDQUI+XHVFMDJCOyAgICAgICAgICAgICAgIyBMRVRURVIgUEhBCitcdTBDQUM+XHVFMDJDOyAgICAgICAgICAgICAgIyBMRVRURVIgQkEKK1x1MENBRD5cdUUwMkQ7ICAgICAgICAgICAgICAjIExFVFRFUiBCSEEKK1x1MENBRT5cdUUwMkU7ICAgICAgICAgICAgICAjIExFVFRFUiBNQQorXHUwQ0FGPlx1RTAyRjsgICAgICAgICAgICAgICMgTEVUVEVSIFlBCitcdTBDQjA+XHVFMDMwOyAgICAgICAgICAgICAgIyBMRVRURVIgUkEKK1x1MENCMT5cdUUwMzE7ICAgICAgICAgICAgICAjIExFVFRFUiBSUkEKK1x1MENCMj5cdUUwMzI7ICAgICAgICAgICAgICAjIExFVFRFUiBMQQorXHUwQ0IzPlx1RTAzMzsgICAgICAgICAgICAgICMgTEVUVEVSIExMQQorXHUwQ0I1Plx1RTAzNTsgICAgICAgICAgICAgICMgTEVUVEVSIFZBCitcdTBDQjY+XHVFMDM2OyAgICAgICAgICAgICAgIyBMRVRURVIgU0hBCitcdTBDQjc+XHVFMDM3OyAgICAgICAgICAgICAgIyBMRVRURVIgU1NBCitcdTBDQjg+XHVFMDM4OyAgICAgICAgICAgICAgIyBMRVRURVIgU0EKK1x1MENCOT5cdUUwMzk7ICAgICAgICAgICAgICAjIExFVFRFUiBIQQorXHUwQ0JFPlx1RTAzRTsgICAgICAgICAgICAgICMgVk9XRUwgU0lHTiBBQQorXHUwQ0JGPlx1RTAzRjsgICAgICAgICAgICAgICMgVk9XRUwgU0lHTiBJCitcdTBDQzE+XHVFMDQxOyAgICAgICAgICAgICAgIyBWT1dFTCBTSUdOIFUKK1x1MENDMj5cdUUwNDI7ICAgICAgICAgICAgICAjIFZPV0VMIFNJR04gVVUKK1x1MENDMz5cdUUwNDM7ICAgICAgICAgICAgICAjIFZPV0VMIFNJR04gVk9DQUxJQyBSCitcdTBDQzQ+XHVFMDQ0OyAgICAgICAgICAgICAgIyBWT1dFTCBTSUdOIFZPQ0FMSUMgUlIKK1x1MENDNj5cdUUwNDY7ICAgICAgICAgICAgICAjIFZPV0VMIFNJR04gRQorXHUwQ0NDPlx1RTA0QzsgICAgICAgICAgICAgICMgVk9XRUwgU0lHTiBBVQorXHUwQ0NEPlx1RTA0RDsgICAgICAgICAgICAgICMgU0lHTiBWSVJBTUEKK1x1MENENT5cdUUwNTU7ICAgICAgICAgICAgICAjIExFTkdUSCBNQVJLCitcdTBDRDY+XHVFMDU2OyAgICAgICAgICAgICAgIyBBSSBMRU5HVEggTUFSSworXHUwQ0RFPlx1RTAzNDsgICAgICAgICAgICAgICMgTEVUVEVSIExMTEEgIAorXHUwQ0UwPlx1RTA2MDsgICAgICAgICAgICAgICMgTEVUVEVSIFZPQ0FMSUMgUlIKK1x1MENFMT5cdUUwNjE7ICAgICAgICAgICAgICAjIExFVFRFUiBWT0NBTElDIExMCitcdTBDRTY+XHVFMDY2OyAgICAgICAgICAgICAgIyBESUdJVCBaRVJPCitcdTBDRTc+XHVFMDY3OyAgICAgICAgICAgICAgIyBESUdJVCBPTkUKK1x1MENFOD5cdUUwNjg7ICAgICAgICAgICAgICAjIERJR0lUIFRXTworXHUwQ0U5Plx1RTA2OTsgICAgICAgICAgICAgICMgRElHSVQgVEhSRUUKK1x1MENFQT5cdUUwNkE7ICAgICAgICAgICAgICAjIERJR0lUIEZPVVIKK1x1MENFQj5cdUUwNkI7ICAgICAgICAgICAgICAjIERJR0lUIEZJVkUKK1x1MENFQz5cdUUwNkM7ICAgICAgICAgICAgICAjIERJR0lUIFNJWAorXHUwQ0VEPlx1RTA2RDsgICAgICAgICAgICAgICMgRElHSVQgU0VWRU4KK1x1MENFRT5cdUUwNkU7ICAgICAgICAgICAgICAjIERJR0lUIEVJR0hUCitcdTBDRUY+XHVFMDZGOyAgICAgICAgICAgICAgIyBESUdJVCBOSU5FCisKKyMgZW9mCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL1RyYW5zbGl0ZXJhdG9yX0xhdGluX0ludGVySW5kaWMudHh0IGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9UcmFuc2xpdGVyYXRvcl9MYXRpbl9JbnRlckluZGljLnR4dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lNjU5YmI1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9UcmFuc2xpdGVyYXRvcl9MYXRpbl9JbnRlckluZGljLnR4dApAQCAtMCwwICsxLDM4NSBAQAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENvcHlyaWdodCAoYykgMTk5OS0yMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisjIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9BdHRpYy9UcmFuc2xpdGVyYXRvcl9MYXRpbl9JbnRlckluZGljLnR4dCx2ICQKKyMgJERhdGU6IDIwMDIvMDMvMDIgMDA6Mjc6MjYgJAorIyAkUmV2aXNpb246IDEuNyAkCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBMYXRpbi1JbnRlckluZGljCisgICAgIzo6IE5GRDsKKyAgICAjXHUwZTAwIHJlc2VydmVkCisgICAgI2NvbnNvbmFudHMKKyAgICAkY2hhbmRyYWJpbmR1PVx1ZTAwMTsKKyAgICAkYW51c3ZhcmE9XHVlMDAyOworICAgICR2aXNhcmdhPVx1ZTAwMzsKKyAgICAjXHUwZTAwNCByZXNlcnZlZAorICAgICMgdzx2b3dlbD4gcmVwcmVzZW50cyB0aGUgc3RhbmQtYWxvbmUgZm9ybQorICAgICR3YT1cdWUwMDU7CisgICAgJHdhYT1cdWUwMDY7CisgICAgJHdpPVx1ZTAwNzsKKyAgICAkd2lpPVx1ZTAwODsKKyAgICAkd3U9XHVlMDA5OworICAgICR3dXU9XHVlMDBhOworICAgICR3cj1cdWUwMGI7CisgICAgJHdsPVx1ZTAwYzsKKyAgICAkd2NlPVx1ZTAwZDsgIyBMRVRURVIgQ0FORFJBIEUKKyAgICAkd3NlPVx1ZTAwZTsgIyBMRVRURVIgU0hPUlQgRQorICAgICR3ZT1cdWUwMGY7ICAjIFx1MDkwZiBMRVRURVIgRQorICAgICR3YWk9XHVlMDEwOworICAgICR3Y289XHVlMDExOyAjIExFVFRFUiBDQU5EUkEgTworICAgICR3c289XHVlMDEyOyAjIExFVFRFUiBTSE9SVCBPCisgICAgJHdvPVx1ZTAxMzsgICMgXHUwOTEzIExFVFRFUiBPCisgICAgJHdhdT1cdWUwMTQ7CisgICAgJGthPVx1ZTAxNTsKKyAgICAka2hhPVx1ZTAxNjsKKyAgICAkZ2E9XHVlMDE3OworICAgICRnaGE9XHVlMDE4OworICAgICRuZ2E9XHVlMDE5OworICAgICRjYT1cdWUwMWE7CisgICAgJGNoYT1cdWUwMWI7CisgICAgJGphPVx1ZTAxYzsKKyAgICAkamhhPVx1ZTAxZDsKKyAgICAkbnlhPVx1ZTAxZTsKKyAgICAkdHRhPVx1ZTAxZjsKKyAgICAkdHRoYT1cdWUwMjA7CisgICAgJGRkYT1cdWUwMjE7CisgICAgJGRkaGE9XHVlMDIyOworICAgICRubmE9XHVlMDIzOworICAgICR0YT1cdWUwMjQ7CisgICAgJHRoYT1cdWUwMjU7CisgICAgJGRhPVx1ZTAyNjsKKyAgICAkZGhhPVx1ZTAyNzsKKyAgICAkbmE9XHVlMDI4OworICAgICRlbmE9XHVlMDI5OyAjY29tcGF0aWJpbGl0eQorICAgICRwYT1cdWUwMmE7CisgICAgJHBoYT1cdWUwMmI7CisgICAgJGJhPVx1ZTAyYzsKKyAgICAkYmhhPVx1ZTAyZDsKKyAgICAkbWE9XHVlMDJlOworICAgICR5YT1cdWUwMmY7CisgICAgJHJhPVx1ZTAzMDsKKyAgICAkcnJhPVx1ZTAzMTsKKyAgICAkbGE9XHVlMDMyOworICAgICRsbGE9XHVlMDMzOyAKKyAgICAkZWxhPVx1ZTAzNDsgI2NvbXBhdGliaWxpdHkKKyAgICAkdmE9XHVlMDM1OworICAgICRzaGE9XHVlMDM2OworICAgICRzc2E9XHVlMDM3OworICAgICRzYT1cdWUwMzg7CisgICAgJGhhPVx1ZTAzOTsKKyNcdTA5M2EgUmVzZXJ2ZWQKKyNcdTA5M2IgUmVzZXJ2ZWQKKyAgICAkbnVrdGE9XHVlMDNjOworICAgICRhdmFncmFoYT1cdWUwM2Q7ICMgU0lHTiBBVkFHUkFIQQorICAgICMgPHZvd2VsPiByZXByZXNlbnRzIHRoZSBkZXBlbmRlbnQgZm9ybQorICAgICRhYT1cdWUwM2U7CisgICAgJGk9XHVlMDNmOworICAgICRpaT1cdWUwNDA7CisgICAgJHU9XHVlMDQxOworICAgICR1dT1cdWUwNDI7CisgICAgJHJoPVx1ZTA0MzsKKyAgICAkbGg9XHVlMDQ0OworICAgICRjZT1cdWUwNDU7ICNWT1dFTCBTSUdOIENBTkRSQSBFIAorICAgICRzZT1cdWUwNDY7ICNWT1dFTCBTSUdOIFNIT1JUIEUKKyAgICAkZT1cdWUwNDc7CisgICAgJGFpPVx1ZTA0ODsKKyAgICAkY289XHVlMDQ5OyAjIFZPV0VMIFNJR04gQ0FORFJBIE8KKyAgICAkc289XHVlMDRhOyAjIFZPV0VMIFNJR04gU0hPUlQgTworICAgICRvPVx1ZTA0YjsgICMgXHUwOTRiCisgICAgJGF1PVx1ZTA0YzsgICAgCisgICAgJHZpcmFtYT1cdWUwNGQ7CisjIFx1MDk0ZSBSZXNlcnZlZAorIyBcdTA5NGYgUmVzZXJ2ZWQKKyAgICRvbSA9IFx1ZTA1MDsgIyBPTQorIyBcdTA5NTE+OyAgICAgICAgIyBVTk1BUFBFRCBTVFJFU1MgU0lHTiBVREFUVEEKKyMgXHUwOTUyPjsgICAgICAgICMgVU5NQVBQRUQgU1RSRVNTIFNJR04gQU5VREFUVEEKKyMgXHUwOTUzPjsgICAgICAgICMgVU5NQVBQRUQgR1JBVkUgQUNDRU5UCisjIFx1MDk1ND47ICAgICAgICAjIFVOTUFQUEVEIEFDVVRFIEFDQ0VOVAorICAgICRsbSA9IFx1ZTA1NTsjICBUZWx1Z3UgTGVuZ3RoIE1hcmsgICAgCisgICAgJGFpbG09XHVlMDU2OyMgIEFJIExlbmd0aCBNYXJrIAorICAgICRhdWxtPVx1ZTA1NzsjICBBVSBMZW5ndGggTWFyayAKKyAgICAgI3VyZHUgY29tcGF0aWJpdHkgZm9ybXMKKyAgICAkdWthPVx1ZTA1ODsKKyAgICAkdWtoYT1cdWUwNTk7CisgICAgJHVnaGE9XHVlMDVhOworICAgICR1amhhPVx1ZTA1YjsKKyAgICAkdWRkaGE9XHVlMDVjOworICAgICR1ZGhhPVx1ZTA1ZDsKKyAgICAkdWZhPVx1ZTA1ZTsKKyAgICAkdXlhPVx1ZTA1ZjsKKyAgICAkd3JyPVx1ZTA2MDsKKyAgICAkd2xsPVx1ZTA2MTsKKyAgICAkcnJoPVx1ZTA2MjsKKyAgICAkbGxoPVx1ZTA2MzsKKyAgICAkZGFuZGE9XHVlMDY0OworICAgICRkb3VibGVEYW5kYT1cdWUwNjU7CisgICAgJHplcm89XHVlMDY2OyAgICAgIyBESUdJVCBaRVJPCisgICAgJG9uZT1cdWUwNjc7ICAgICAgIyBESUdJVCBPTkUKKyAgICAkdHdvPVx1ZTA2ODsgICAgICAjIERJR0lUIFRXTworICAgICR0aHJlZT1cdWUwNjk7ICAgICMgRElHSVQgVEhSRUUKKyAgICAkZm91cj1cdWUwNmE7ICAgICAjIERJR0lUIEZPVVIKKyAgICAkZml2ZT1cdWUwNmI7ICAgICAjIERJR0lUIEZJVkUKKyAgICAkc2l4PVx1ZTA2YzsgICAgICAjIERJR0lUIFNJWAorICAgICRzZXZlbj1cdWUwNmQ7ICAgICMgRElHSVQgU0VWRU4KKyAgICAkZWlnaHQ9XHVlMDZlOyAgICAjIERJR0lUIEVJR0hUCisgICAgJG5pbmU9XHVlMDZmOyAgICAgIyBESUdJVCBOSU5FCisgICAgIyBGb3IgYWxsIG90aGVyIHNjcmlwdHMKKyAgICAkZWNwMD1cdWUwNzA7CisgICAgJGVjcDE9XHVlMDcxOworICAgICRlY3AyPVx1ZTA3MjsKKyAgICAkZWNwMz1cdWUwNzM7CisgICAgJGVjcDQ9XHVlMDc0OworICAgICRlY3A1PVx1ZTA3NTsKKyAgICAkZWNwNj1cdWUwNzY7CisgICAgJGVjcDc9XHVlMDc3OworICAgICRlY3A4PVx1ZTA3ODsKKyAgICAkZWNwOT1cdWUwNzk7CisgICAgJGVjcEE9XHVlMDdhOworICAgICRlY3BCPVx1ZTA3YjsKKyAgICAkZWNwQz1cdWUwN2M7CisgICAgJGVjcEQ9XHVlMDdkOworICAgICRlY3BFPVx1ZTA3ZTsKKyAgICAkZWNwRj1cdWUwN2Y7CisjIFx1MDk3MD47ICMgVU5NQVBQRUQgQUJCUkVWSUFUSU9OIFNJR04KKyAgICAkZGVwVm93ZWxBYm92ZT1bXHVlMDNlLVx1ZTA0MFx1ZTA0NS1cdWUwNGNdOworICAgICRkZXBWb3dlbEJlbG93PVtcdWUwNDEtXHVlMDQ0XTsKKyAgICAkZW5kVGhpbmc9WyRkYW5kYSRkb3VibGVEYW5kYV07CisgICAgIyAkeCB3YXMgb3JpZ2luYWxseSBjYWxsZWQgJyYnOyAkeiB3YXMgJyUnCisgICAgJHg9WyR2aXJhbWEkYWEkYWkkYXUkaWkkaSR1dSR1JHJyaCRyaCRsaCRlJG8kc2UkY2Ukc28kY29dOworICAgICR6PVtiY2RmZ2hqa2xtbnBxcnN0dnd4eXpdOworICAgICRjb25zb25hbnRzPVtbJGthLSRoYV0keltcdTA5MTUtXHUwOTM5XVtcdTA5OTUtXHUwOWI5XVtcdTBhMTUtXHUwYTM5XVtcdTBhOTUtXHUwYWI5XVtcdTBiMTUtXHUwYjM5XVtcdTBiOTUtXHUwYmI5XVtcdTBjMTUtXHUwYzM5XVtcdTBjOTUtXHUwY2I5XVtcdTBkMTUtXHUwZDM5XV07CisgICAgXHUwMzE1ID4gJGF2YWdyYWhhOworICAgIFx1MDMwMz4kY2hhbmRyYWJpbmR1JGFudXN2YXJhOworICAgIG1cdTAzMTA+JGNoYW5kcmFiaW5kdTsKKyAgICBoXHUwMzIzPiR2aXNhcmdhOworICAgIHg+JGthJHZpcmFtYSRzYTsKKyMgY29udmVydCB0byBpbmRlcGVuZGVudCBmb3JtcyBhdCBzdGFydCBvZiB3b3JkIG9yIHN5bGxhYmxlOgorIyBkZXBlbmRlbnQgZm9ybXMgZm9yIHJvdW5kdHJpcAorICAgIFx1MDMxNGFcdTAzMDQ+JGFhOworICAgIFx1MDMxNGFpPiRhaTsKKyAgICBcdTAzMTRhdT4kYXU7CisgICAgXHUwMzE0aWk+JGlpOworICAgIFx1MDMxNGlcdTAzMDQ+JGlpOworICAgIFx1MDMxNGk+JGk7CisgICAgXHUwMzE0dVx1MDMwND4kdXU7CisgICAgXHUwMzE0dT4kdTsKKyAgICBcdTAzMTRyXHUwMzI1XHUwMzA0PiRycmg7CisgICAgXHUwMzE0clx1MDMyNT4kcmg7CisgICAgXHUwMzE0bFx1MDMyNVx1MDMwND4kbGxoOworICAgIFx1MDMxNGxoPiRsaDsKKyAgICBcdTAzMTRsXHUwMzI1PiRsaDsKKyAgICBcdTAzMTRlXHUwMzA0PiRlOworICAgIFx1MDMxNG9cdTAzMDQ+JG87CisgICAgXHUwMzE0YT47CisgICAgXHUwMzE0ZVx1MDMwNj4kY2U7CisgICAgXHUwMzE0b1x1MDMwNj4kY287CisgICAgXHUwMzE0ZT4kc2U7CisgICAgXHUwMzE0bz4kc287CisKKyMgcHJlY2VlZGVkIGJ5IGNvbnNvbmFudHMKKyAgICAkY29uc29uYW50c3sgYVx1MDMwND4kYWE7CisgICAgJGNvbnNvbmFudHN7IGFpPiRhaTsKKyAgICAkY29uc29uYW50c3sgYXU+JGF1OworICAgICRjb25zb25hbnRzeyBpaT4kaWk7CisgICAgJGNvbnNvbmFudHN7IGlcdTAzMDQ+JGlpOworICAgICRjb25zb25hbnRzeyBpPiRpOworICAgICRjb25zb25hbnRzeyB1XHUwMzA0PiR1dTsKKyAgICAkY29uc29uYW50c3sgdT4kdTsKKyAgICAkY29uc29uYW50c3sgclx1MDMyNVx1MDMwND4kcnJoOworICAgICRjb25zb25hbnRzeyByXHUwMzI1YT4kcmg7CisgICAgJGNvbnNvbmFudHN7IHJcdTAzMjU+JHJoOworICAgICRjb25zb25hbnRzeyBsXHUwMzI1XHUwMzA0PiRsbGg7CisgICAgJGNvbnNvbmFudHN7IGxoPiRsaDsKKyAgICAkY29uc29uYW50c3sgbFx1MDMyNT4kbGg7CisgICAgJGNvbnNvbmFudHN7IGVcdTAzMDQ+JGU7CisgICAgJGNvbnNvbmFudHN7IG9cdTAzMDQ+JG87CisgICAgJGNvbnNvbmFudHN7IGVcdTAzMDY+JGNlOworICAgICRjb25zb25hbnRzeyBvXHUwMzA2PiRjbzsKKyAgICAkY29uc29uYW50c3sgZT4kc2U7CisgICAgJGNvbnNvbmFudHN7IG8+JHNvOworCisjIGUuZy4ga2VhaSAtPiB7a2F9e2V9e3dhaX07IGsnYWkgLT4ge2thfXt3YWl9OyAoYWkpIC0+ICh7d2FpfSkKKyAgICBhXHUwMzA0PiR3YWE7CisgICAgYWk+JHdhaTsKKyAgICBhdT4kd2F1OworICAgIGlcdTAzMDQ+JHdpaTsKKyAgICBpPiR3aTsKKyAgICB1XHUwMzA0PiR3dXU7CisgICAgdT4kd3U7CisgICAgclx1MDMyNVx1MDMwND4kd3JyOworICAgIHJcdTAzMjU+JHdyOworICAgIGxcdTAzMjVcdTAzMDQ+JHdsbDsKKyAgICBsaD4kd2w7CisgICAgbFx1MDMyNT4kd2w7CisgICAgZVx1MDMwND4kd2U7CisgICAgb1x1MDMwND4kd287CisgICAgYT4kd2E7CisgICAgZVx1MDMwNj4kd2NlOworICAgIG9cdTAzMDY+JHdjbzsKKyAgICBlPiR3c2U7CisgICAgJydvbT4kb207CisgICAgbz4kd3NvOworICAgIAorICAgICMgcnVsZXMgZm9yIGFudXN2YXJhCisgICAgbn1yXHUwMzI1ICAgICAgICAgICA+ICRuYXwkdmlyYW1hOworICAgIG59bFx1MDMyNSAgICAgICAgICAgPiAkbmF8JHZpcmFtYTsKKyAgICBufW5hICAgICAgICAgICAgICAgID4gJG5hfCR2aXJhbWE7CisgICAgblx1MDMwN31ba2ddICAgICAgICA+ICRhbnVzdmFyYTsKKyAgICBuXHUwMzA3fW5cdTAzMDcgICAgID4gJGFudXN2YXJhOworICAgIG5cdTAzMDR9W2NqXSAgICAgICAgPiAkYW51c3ZhcmE7CisgICAgblx1MDMwNH1uXHUwMzAzICAgICA+ICRhbnVzdmFyYTsKKyAgICBuXHUwMzIzfVt0ZG5dXHUwMzIzID4gJGFudXN2YXJhOworICAgIG59W3Rkbl0gICAgICAgICAgICAgPiAkYW51c3ZhcmE7CisgICAgbX1bcGJtXSAgICAgICAgICAgICA+ICRhbnVzdmFyYTsKKyAgICBufVt5bHZzaHJdICAgICAgICAgID4gJGFudXN2YXJhOworICAgIG1cdTAzMDcgICAgICAgICAgICAgPiAkYW51c3ZhcmE7CisgICAgCisgICAgI3VyZHUgY29tcGF0aWJpbGl0eQorICAgIHE+JHVrYXwkdmlyYW1hOworICAgIGtcdTAzMzFoXHUwMzMxPiR1a2hhIHwkdmlyYW1hOworICAgIGdcdTAzMDc+ICR1Z2hhIHwgJHZpcmFtYTsKKyAgICB6ID4gJHVqaGEgfCR2aXJhbWE7CisgICAgZiA+ICR1ZmF8JHZpcmFtYTsKKyAgICAKKyAgICAjIGRldgorICAgIHlcdTAzMDc+JHV5YXwkdmlyYW1hOworICAgIGxcdTAzMzE+JGVsYXwkdmlyYW1hOworICAgIG5cdTAzMzE+JGVuYXwkdmlyYW1hOworICAgIG5cdTAzMDc+JG5nYXwkdmlyYW1hOworICAgIG5cdTAzMDM+JG55YXwkdmlyYW1hOworICAgIG5cdTAzMjM+JG5uYXwkdmlyYW1hOworICAgIHRcdTAzMjNoPiR0dGhhfCR2aXJhbWE7CisgICAgdFx1MDMyMz4kdHRhfCR2aXJhbWE7CisgICAgclx1MDMyM2g+JHVkaGF8JHZpcmFtYTsKKyAgICByXHUwMzIzPiR1ZGRoYXwkdmlyYW1hOworICAgIGRcdTAzMjNoPiRkZGhhfCR2aXJhbWE7CisgICAgZFx1MDMyMz4kZGRhfCR2aXJhbWE7CisgICAga2g+JGtoYXwkdmlyYW1hOworICAgIGs+JGthfCR2aXJhbWE7CisgICAgZ2g+JGdoYXwkdmlyYW1hOworICAgIGc+JGdhfCR2aXJhbWE7CisgICAgY2g+JGNoYXwkdmlyYW1hOworICAgIGM+JGNhfCR2aXJhbWE7CisgICAgamg+JGpoYXwkdmlyYW1hOworICAgIGo+JGphfCR2aXJhbWE7CisgICAgbnk+JG55YXwkdmlyYW1hOworICAgIHR0aD4kdHRoYXwkdmlyYW1hOworICAgIGRkaD4kZGRoYXwkdmlyYW1hOworICAgIHRoPiR0aGF8JHZpcmFtYTsKKyAgICB0PiR0YXwkdmlyYW1hOworICAgIGRoPiRkaGF8JHZpcmFtYTsKKyAgICBkPiRkYXwkdmlyYW1hOworICAgIG4+JG5hfCR2aXJhbWE7CisgICAgcGg+JHBoYXwkdmlyYW1hOworICAgIHA+JHBhfCR2aXJhbWE7CisgICAgYmg+JGJoYXwkdmlyYW1hOworICAgIGI+JGJhfCR2aXJhbWE7CisgICAgbT4kbWF8JHZpcmFtYTsKKyAgICB5PiR5YXwkdmlyYW1hOworICAgIHJcdTAzMzE+JHJyYXwkdmlyYW1hOworICAgIHI+JHJhfCR2aXJhbWE7CisgICAgbFx1MDMyMz4kbGxhfCR2aXJhbWE7CisgICAgbD4kbGF8JHZpcmFtYTsKKyAgICB2PiR2YXwkdmlyYW1hOworICAgIHc+JHZhfCR2aXJhbWE7CisgICAgc2g+JHNoYXwkdmlyYW1hOworICAgIHNzPiRzc2F8JHZpcmFtYTsKKyAgICBzXHUwMzIzPiRzc2F8JHZpcmFtYTsKKyAgICBzXHUwMzAxPiRzaGF8JHZpcmFtYTsKKyAgICBzPiRzYXwkdmlyYW1hOworICAgIGg+JGhhfCR2aXJhbWE7CisgICAgJy4nPiRkYW5kYTsKKyAgICAkZGFuZGEnLic+JGRvdWJsZURhbmRhOworICAgICRkZXBWb3dlbEFib3Zleyd+Jz4kYW51c3ZhcmE7CisgICAgJGRlcFZvd2VsQmVsb3d7J34nPiRjaGFuZHJhYmluZHU7CisjIGNvbnZlcnQgdG8gZGVwZW5kZW50IGZvcm1zIGFmdGVyIGNvbnNvbmFudCB3aXRoIG5vIHZvd2VsOgorIyBlLmcuIGthaSAtPiB7a2F9e3ZpcmFtYX1haSAtPiB7a2F9e2FpfQorICAgICMkdmlyYW1hIGFhPiRhYTsKKyAgICAkdmlyYW1hIGFcdTAzMDQ+JGFhOworICAgICR2aXJhbWEgYWk+JGFpOworICAgICR2aXJhbWEgYXU+JGF1OworICAgICR2aXJhbWEgaWk+JGlpOworICAgICR2aXJhbWEgaVx1MDMwND4kaWk7CisgICAgJHZpcmFtYSBpPiRpOworICAgICMkdmlyYW1hIHV1PiR1dTsKKyAgICAkdmlyYW1hIHVcdTAzMDQ+JHV1OworICAgICR2aXJhbWEgdT4kdTsKKyAgICAjJHZpcmFtYSBycmg+JHJyaDsKKyAgICAkdmlyYW1hIHJcdTAzMjVcdTAzMDQ+JHJyaDsKKyAgICAjJHZpcmFtYSByaD4kcmg7CisgICAgJHZpcmFtYSByXHUwMzI1YT4kcmg7CisgICAgJHZpcmFtYSByXHUwMzI1PiRyaDsKKyAgICAkdmlyYW1hIGxcdTAzMjVcdTAzMDQ+JGxsaDsKKyAgICAkdmlyYW1hIGxoPiRsaDsKKyAgICAkdmlyYW1hIGxcdTAzMjU+JGxoOworICAgICR2aXJhbWEgZVx1MDMwND4kZTsKKyAgICAkdmlyYW1hIG9cdTAzMDQ+JG87CisgICAgJHZpcmFtYSBhPjsKKyAgICAkdmlyYW1hIGVcdTAzMDY+JGNlOworICAgICR2aXJhbWEgb1x1MDMwNj4kY287CisgICAgJHZpcmFtYSBlPiRzZTsKKyAgICAkdmlyYW1hIG8+JHNvOworCisKKyMgb3RoZXJ3aXNlIGNvbnZlcnQgaW5kZXBlbmRlbnQgZm9ybXMgd2hlbiBzZXBhcmF0ZWQgYnkgJzogaydhaSAtPiB7a2F9e3ZpcmFtYX17d2FpfQorICAgICMkdmlyYW1hJydhYT4kd2FhOworICAgICR2aXJhbWEnJ2FcdTAzMDQ+JHdhYTsKKyAgICAkdmlyYW1hJydhaT4kd2FpOworICAgICR2aXJhbWEnJ2F1PiR3YXU7CisgICAgIyR2aXJhbWEnJ2lpPiR3aWk7CisgICAgJHZpcmFtYScnaVx1MDMwND4kd2lpOworICAgICR2aXJhbWEnJ2k+JHdpOworICAgICMkdmlyYW1hJyd1dT4kd3V1OworICAgICR2aXJhbWEnJ3VcdTAzMDQ+JHd1dTsKKyAgICAkdmlyYW1hJyd1PiR3dTsKKyAgICAjJHZpcmFtYScncnJoPiR3cnI7CisgICAgJHZpcmFtYScnclx1MDMyNVx1MDMwND4kd3JyOworICAgICMkdmlyYW1hJydyaD4kd3I7CisgICAgJHZpcmFtYScnclx1MDMyNT4kd3I7CisgICAgJHZpcmFtYScnbFx1MDMyNVx1MDMwND4kd2xsOworICAgICMkdmlyYW1hJydsaD4kd2w7CisgICAgJHZpcmFtYScnbFx1MDMyNT4kd2w7CisgICAgJHZpcmFtYScnZVx1MDMwND4kd2U7CisgICAgJHZpcmFtYScnb1x1MDMwND4kd287CisgICAgJHZpcmFtYScnYT4kd2E7CisgICAgJHZpcmFtYScnZVx1MDMwNj4kd2NlOworICAgICR2aXJhbWEnJ29cdTAzMDY+JHdjbzsKKyAgICAkdmlyYW1hJydlPiR3c2U7CisgICAgJHZpcmFtYScnbz4kd3NvOworIyBubyB2aXJhbWEKKyAgICAnJ2FcdTAzMDQ+JHdhYTsKKyAgICAnJ2FpPiR3YWk7CisgICAgJydhdT4kd2F1OworICAgICcnaVx1MDMwND4kd2lpOworICAgICcnaT4kd2k7CisgICAgJyd1XHUwMzA0PiR3dXU7CisgICAgJyd1PiR3dTsKKyAgICAnJ3JcdTAzMjVcdTAzMDQ+JHdycjsKKyAgICAnJ3JcdTAzMjU+JHdyOworICAgICcnbFx1MDMyNVx1MDMwND4kd2xsOworICAgICcnbFx1MDMyNT4kd2w7CisgICAgJydlXHUwMzA0PiR3ZTsKKyAgICAnJ29cdTAzMDQ+JHdvOworICAgICcnYT4kd2E7CisgICAgJydlXHUwMzA2PiR3Y2U7CisgICAgJydvXHUwMzA2PiR3Y287CisgICAgJydlPiR3c2U7CisgICAgJydvPiR3c287CisKKyAgICAkdmlyYW1hIH0gWyR6XSA+ICR2aXJhbWE7CisgICAgJHZpcmFtYSB9ICcgJyA+ICR2aXJhbWEgOworICAgICR2aXJhbWF9JGVuZFRoaW5nPjsKKyAgICAwPiR6ZXJvOworICAgIDE+JG9uZTsKKyAgICAyPiR0d287CisgICAgMz4kdGhyZWU7CisgICAgND4kZm91cjsKKyAgICA1PiRmaXZlOworICAgIDY+JHNpeDsKKyAgICA3PiRzZXZlbjsKKyAgICA4PiRlaWdodDsKKyAgICA5PiRuaW5lOworICAgICcnPjsKKyAgICAjOjogTkZDIChORkQpIDsKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfTGF0aW5fSmFtby50eHQgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL1RyYW5zbGl0ZXJhdG9yX0xhdGluX0phbW8udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjdjMWYxOTAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL1RyYW5zbGl0ZXJhdG9yX0xhdGluX0phbW8udHh0CkBAIC0wLDAgKzEsNTI2IEBACisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ29weXJpZ2h0IChjKSAxOTk5LTIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyMgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0F0dGljL1RyYW5zbGl0ZXJhdG9yX0xhdGluX0phbW8udHh0LHYgJAorIyAkRGF0ZTogMjAwMi8wMy8wMiAwMDoyNzoyNyAkCisjICRSZXZpc2lvbjogMS41ICQKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjLSBOLkIuIERPIE5PVCBwdXQgYW55IGZpbHRlcnMsIE5GRCwgZXRjLiBoZXJlIC0tIHRob3NlIGFyZSBhbGlhc2VkIGluCisjLSB0aGUgSU5ERVggZmlsZS4gIFRoaXMgdHJhbnNsaXRlcmF0b3IgaXMsIGJ5IGl0c2VsZiwgbm90CisjLSBpbnN0YW50aWF0ZWQuICBJdCBpcyB1c2VkIGFzIGEgcGFydCBvZiBMYXRpbi1KYW1vLCBMYXRpbi1IYW5ndWwsIG9yCisjLSBpbnZlcnNlcyB0aGVyZW9mLgorCisjIFRyYW5zbGl0ZXJhdGlvbiBmcm9tIExhdGluIGNoYXJhY3RlcnMgdG8gS29yZWFuIHNjcmlwdCBpcyBkb25lIGluCisjIHR3byBzdGVwczogTGF0aW4gdG8gSmFtbywgdGhlbiBKYW1vIHRvIEhhbmd1bC4gIFRoZSBKYW1vLUhhbmd1bAorIyB0cmFuc2xpdGVyYXRpb24gaXMgZG9uZSBhbGdvcml0aG1pY2FsbHkgZm9sbG93aW5nIFVuaWNvZGUgMy4wCisjIHNlY3Rpb24gMy4xMS4gIFRoaXMgZmlsZSBpbXBsZW1lbnRzIHRoZSBMYXRpbiB0byBKYW1vCisjIHRyYW5zbGl0ZXJhdGlvbiB1c2luZyBydWxlcy4KKworIyBKYW1vIG9jY3VweSB0aGUgYmxvY2sgMTEwMC0xMUZGLiAgV2l0aGluIHRoaXMgYmxvY2sgdGhlcmUgYXJlIHRocmVlCisjIGdyb3VwcyBvZiBjaGFyYWN0ZXJzOiBpbml0aWFsIGNvbnNvbmFudHMgb3IgY2hvc2VvbmcgKEkpLCBtZWRpYWwKKyMgdm93ZWxzIG9yIGp1bmdzZW9uZyAoTSksIGFuZCB0cmFpbGluZyBjb25zb25hbnRzIG9yIGpvbmdzZW9uZyAoRikuCisjIFN0YW5kYXJkIEtvcmVhbiBzeWxsYWJsZXMgYXJlIG9mIHRoZSBmb3JtIEkrTStGKi4KKworIyBTZWN0aW9uIDMuMTEgZGVzY3JpYmVzIHRoZSB1c2Ugb2YgJ2ZpbGxlcicgamFtbyB0byBjb252ZXJ0CisjIG5vbnN0YW5kYXJkIHN5bGxhYmxlcyB0byBzdGFuZGFyZCBmb3JtOiB0aGUgY2hvc2VvbmcgZmlsbGVyIDExNUYgYW5kCisjIHRoZSBqdW5zZW9uZyBmaWxsZXIgMTE2MC4gIEluIHRoaXMgdHJhbnNsaXRlcmF0b3IsIHdlIHdpbGwgbm90IHVzZQorIyAxMTVGIG9yIDExNjAuCisKKyMgV2Ugd2lsbCwgaG93ZXZlciwgaW5zZXJ0IHR3byAnbnVsbCcgamFtbyB0byBtYWtlIGZvcmVpZ24gd29yZHMKKyMgY29uZm9ybSB0byBLb3JlYW4gc3lsbGFibGUgc3RydWN0dXJlLiAgVGhlc2UgYXJlIHRoZSBudWxsIGluaXRpYWwKKyMgY29uc29uYW50IDExMEIgKElFVU5HKSBhbmQgdGhlIG51bGwgdm93ZWwgMTE3MyAoRVUpLiAgSW4gTGF0aW4gdGV4dCwKKyMgd2Ugd2lsbCB1c2UgdGhlIHNlcGFyYXRvciBpbiBvcmRlciB0byBkaXNhbWJpZ3VhdGUgc3RyaW5ncywKKyMgZS5nLiAia2FuLWdnYW4iIChpbml0aWFsIEdHKSB2cy4gImthbmdnYW4iIChmaW5hbCBORyArIGluaXRpYWwgRykuCisKKyMgV2Ugd2lsbCBub3QgdXNlIGFsbCBvZiB0aGUgY2hhcmFjdGVycyBpbiB0aGUgamFtbyBibG9jay4gIFdlIHdpbGwKKyMgb25seSB1c2UgdGhlIDE5IGluaXRpYWxzLCAyMSBtZWRpYWxzLCBhbmQgMjcgZmluYWxzIHBvc3Nlc3NpbmcgYQorIyBqYW1vIHNob3J0IG5hbWUgYXMgZGVmaW5lZCBpbiBzZWN0aW9uIDQuNCBvZiB0aGUgVW5pY29kZSBib29rLgorCisjIFJ1bGVzIG9mIHRodW1iLiAgVGhlc2UgZ3VpZGVsaW5lcyBwcm92aWRlIHRoZSBiYXNpYyBmcmFtZXdvcmsKKyMgZm9yIHRoZSBydWxlcy4gIFRoZXkgYXJlIHBocmFzZWQgaW4gdGVybXMgb2YgTGF0aW4tSmFtbyB0cmFuc2xpdGVyYXRpb24uCisjIFRoZSBKYW1vLUxhdGluIHJ1bGVzIGRlcml2ZSBmcm9tIHRoZXNlLCBzaW5jZSB0aGUgSmFtby1MYXRpbiBydWxlcyBhcmUKKyMganVzdCBjb250ZXh0LWZyZWUgdHJhbnNsaXRlcmF0aW9uIG9mIGphbW8gdG8gY29ycmVzcG9uZGluZyBzaG9ydCBuYW1lcywKKyMgd2l0aCB0aGUgYWRkaXRpb24gb2Ygc2VwYXJhdG9ycyB0byBtYWludGFpbiByb3VuZC10cmlwIGludGVncml0eQorIyBpbiB0aGUgY29udGV4dCBvZiB0aGUgTGF0aW4tSmFtbyBydWxlcy4KKworIyBBIHNlcXVlbmNlIG9mIHZvd2VsczoKKyMgLSBUYWtlIHRoZSBsb25nZXN0IHNlcXVlbmNlIHlvdSBjYW4uIElmIHRoZXJlIGFyZSB0b28gbWFueSwgb3IgeW91IGRvbid0CisjICAgaGF2ZSBhIHN0YXJ0aW5nIGNvbnNvbmFudCwgaW50cm9kdWNlIGEgMTEwQiBuZWNlc3NhcnkuCisKKyMgQSBzZXF1ZW5jZSBvZiBjb25zb25hbnRzLgorIyAtIEZpcnN0IGpvaW4gdGhlIGRvdWJsZSBjb25zb25hbnRzOiBHICsgRyAtPiBHRworIyAtIEluIHRoZSByZW1haW5pbmcgbGlzdCwKKyMgLS0gSWYgdGhlcmUgaXMgbm8gcHJlY2VkaW5nIHZvd2VsLCB0YWtlIHRoZSBmaXJzdCBjb25zb25hbnQsIGFuZCBpbnNlcnQgRVUKKyMgICAgYWZ0ZXIgaXQuIENvbnRpbnVlIHdpdGggdGhlIHJlc3Qgb2YgdGhlIGNvbnNvbmFudHMuCisjIC0tIElmIHRoZXJlIGlzIG9uZSBjb25zb25hbnQsIGF0dGFjaCB0byB0aGUgZm9sbG93aW5nIHZvd2VsCisjIC0tIElmIHRoZXJlIGFyZSB0d28gY29uc29uYW50cyBhbmQgYSBmb2xsb3dpbmcgdm93ZWwsIGF0dGFjaCBvbmUgdG8gdGhlCisjICAgIHByZWNlZWRpbmcgdm93ZWwsIGFuZCBvbmUgdG8gdGhlIGZvbGxvd2luZyB2b3dlbC4KKyMgLS0gSWYgdGhlcmUgYXJlIG1vcmUgdGhhbiB0d28gY29uc29uYW50cywgam9pbiB0aGUgZmlyc3QgdHdvIHRvZ2V0aGVyIGlmIHlvdQorIyAgICBjYW46IEwgKyBHID0+IExHCisjIC0tIElmIHlvdSBzdGlsbCBlbmQgdXAgd2l0aCBtb3JlIHRoYW4gMiBjb25zb25hbnRzLCBpbnNlcnQgRVUgYWZ0ZXIgdGhlCisjICAgIGZpcnN0IG9uZSwgYW5kIGNvbnRpbnVlIHdpdGggdGhlIHJlc3Qgb2YgdGhlIGNvbnNvbmFudHMuCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFZhcmlhYmxlcworCisjIFNvbWUgbGF0aW4gY29uc29uYW50cyBvciBjb25zb25hbnQgcGFpcnMgb25seSBvY2N1ciBhcyBpbml0aWFscywgYW5kCisjIHNvbWUgb25seSBhcyBmaW5hbHMsIGJ1dCBzb21lIG9jY3VyIGFzIGJvdGguICBUaGlzIG1ha2VzIHNvbWUgamFtbworIyBjb25zb25hbnRzIGFtYmlndW91cyB3aGVuIHRyYW5zbGl0ZXJhdGVkIGludG8gbGF0aW4uCisjICAgSW5pdGlhbCBvbmx5OiBJRVVORyBCQiBERCBKSiBSCisjICAgRmluYWwgb25seTogQlMgR1MgTCBMQiBMRyBMSCBMTSBMUCBMUyBMVCBORyBOSCBOSgorIyAgIEluaXRpYWwgYW5kIEZpbmFsOiBCIEMgRCBHIEdHIEggSiBLIE0gTiBQIFMgU1MgVAorCisgICRHaSA9IFx1MTEwMDsKKyAgJEdHaSA9IFx1MTEwMTsKKyAgJE5pID0gXHUxMTAyOworICAkRGkgPSBcdTExMDM7CisgICRERCA9IFx1MTEwNDsKKyAgJFIgPSBcdTExMDU7CisgICRNaSA9IFx1MTEwNjsKKyAgJEJpID0gXHUxMTA3OworICAkQkIgPSBcdTExMDg7CisgICRTaSA9IFx1MTEwOTsKKyAgJFNTaSA9IFx1MTEwQTsKKyAgJElFVU5HID0gXHUxMTBCOyAjIG51bGwgaW5pdGlhbCwgaW5zZXJ0ZWQgZHVyaW5nIExhdGluLUphbW8KKyAgJEppID0gXHUxMTBDOworICAkSkogPSBcdTExMEQ7CisgICRDaSA9IFx1MTEwRTsKKyAgJEtpID0gXHUxMTBGOworICAkVGkgPSBcdTExMTA7CisgICRQaSA9IFx1MTExMTsKKyAgJEhpID0gXHUxMTEyOworCisgICRBID0gXHUxMTYxOworICAkQUUgPSBcdTExNjI7CisgICRZQSA9IFx1MTE2MzsKKyAgJFlBRSA9IFx1MTE2NDsKKyAgJEVPID0gXHUxMTY1OworICAkRSA9IFx1MTE2NjsKKyAgJFlFTyA9IFx1MTE2NzsKKyAgJFlFID0gXHUxMTY4OworICAkTyA9IFx1MTE2OTsKKyAgJFdBID0gXHUxMTZBOworICAkV0FFID0gXHUxMTZCOworICAkT0UgPSBcdTExNkM7CisgICRZTyA9IFx1MTE2RDsKKyAgJFUgPSBcdTExNkU7CisgICRXRU8gPSBcdTExNkY7CisgICRXRSA9IFx1MTE3MDsKKyAgJFdJID0gXHUxMTcxOworICAkWVUgPSBcdTExNzI7CisgICRFVSA9IFx1MTE3MzsgIyBudWxsIG1lZGlhbCwgaW5zZXJ0ZWQgZHVyaW5nIExhdGluLUphbW8KKyAgJFlJID0gXHUxMTc0OworICAkSSA9IFx1MTE3NTsKKworICAkR2YgPSBcdTExQTg7CisgICRHR2YgPSBcdTExQTk7CisgICRHUyA9IFx1MTFBQTsKKyAgJE5mID0gXHUxMUFCOworICAkTkogPSBcdTExQUM7CisgICROSCA9IFx1MTFBRDsKKyAgJERmID0gXHUxMUFFOworICAkTCA9IFx1MTFBRjsKKyAgJExHID0gXHUxMUIwOworICAkTE0gPSBcdTExQjE7CisgICRMQiA9IFx1MTFCMjsKKyAgJExTID0gXHUxMUIzOworICAkTFQgPSBcdTExQjQ7CisgICRMUCA9IFx1MTFCNTsKKyAgJExIID0gXHUxMUI2OworICAkTWYgPSBcdTExQjc7CisgICRCZiA9IFx1MTFCODsKKyAgJEJTID0gXHUxMUI5OworICAkU2YgPSBcdTExQkE7CisgICRTU2YgPSBcdTExQkI7CisgICRORyA9IFx1MTFCQzsKKyAgJEpmID0gXHUxMUJEOworICAkQ2YgPSBcdTExQkU7CisgICRLZiA9IFx1MTFCRjsKKyAgJFRmID0gXHUxMUMwOworICAkUGYgPSBcdTExQzE7CisgICRIZiA9IFx1MTFDMjsKKyAgCisgICRqYW1vSW5pdGlhbCA9IFtcdTExMDAtXHUxMTEyXTsKKworICAkamFtb01lZGlhbCA9IFtcdTExNjEtXHUxMTc1XTsKKworICAkbGF0aW5Jbml0aWFsID0gW2JjZGdoamttbnByc3RdOworCisgICMgQW55IGNoYXJhY3RlciBpbiB0aGUgbGF0aW4gdHJhbnNsaXRlcmF0aW9uIG9mIGEgbWVkaWFsCisgICRsYXRpbk1lZGlhbCA9IFthZWlvdXd5XTsKKworICAjIFRoZSBsYXN0IGNoYXJhY3RlciBvZiB0aGUgbGF0aW4gdHJhbnNsaXRlcmF0aW9uIG9mIGEgbWVkaWFsCisgICRsYXRpbk1lZGlhbEVuZCA9IFthZWlvdV07CisKKyAgIyBEaXNhbWJpZ3VhdGlvbiBzZXBhcmF0b3IKKyAgJHNlcCA9IFwnOworCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBKYW1vLUxhdGluCisKKyMgSmFtbyB0byBsYXRpbiBpcyByZWxhdGl2ZWx5IHNpbXBsZSwgc2luY2UgaXQgaXMgdGhlIGxhdGluIHRoYXQgaXMKKyMgYW1iaWd1b3VzLiAgTW9zdCBydWxlcyBhcmUgc3RyYWlnaHRmb3J3YXJkLCBhbmQgd2UgZW5jb2RlIHRoZW0gYmVsb3cKKyMgYXMgc2ltcGxlIGFkZC1vbiBiYWNrIHJ1bGUsIGUuZy46CisKKyMgICAkamFtb01lZGlhbCB7YnN9ID4gJEJTOworCisjIGJlY29tZXMKKworIyAgICRqYW1vTWVkaWFsIHtic30gPD4gJEJTOworCisjIEZ1cnRoZXJtb3JlLCB3ZSBkb24ndCBjYXJlIGFib3V0IHRoZSBvcmRlcmluZyBmb3IgSmFtby1MYXRpbiBiZWNhdXNlCisjIHdlIGFyZSBnb2luZyBmcm9tIHNpbmdsZSBjaGFyYWN0ZXJzLCBzbyB3ZSBjYW4gdmVyeSBlYXNpbHkgcGlnZ3liYWNrCisjIG9uIHRoZSBMYXRpbi1KYW1vLgorCisjIFRoZSBtYWluIGlzc3VlIHdpdGggSmFtby1MYXRpbiBpcyB3aGVuIHRvIGluc2VydCBzZXBhcmF0b3JzLgorIyBTZXBhcmF0b3JzIGFyZSBpbnNlcnRlZCB0byBvYnRhaW4gY29ycmVjdCByb3VuZCB0cmlwIGJlaGF2aW9yLiAgRm9yCisjIGV4YW1wbGUsIHRoZSBzZXF1ZW5jZSBLaSBBIEdmIEdpIEUsIGlmIHRyYW5zbGl0ZXJhdGVkIHRvICJrYWdnZSIsCisjIHdvdWxkIHRoZW4gcm91bmQgdHJpcCB0byBLaSBBIEdHaSBFLiAgVG8gcHJldmVudCB0aGlzLCB3ZSBpbnNlcnQgYQorIyBzZXBhcmF0b3I6ICJrYWctZ2UiLiAgSU1QT1JUQU5UOiBUaGUgbmVlZCBmb3Igc2VwYXJhdG9ycyBkZXBlbmRzCisjIHZlcnkgc3BlY2lmaWNhbGx5IG9uIHRoZSBiZWhhdmlvciBvZiB0aGUgTGF0aW4tSmFtbyBydWxlcy4gIEEgY2hhbmdlCisjIGluIHRoZSBMYXRpbi1KYW1vIGJlaGF2aW9yIGNhbiBjb21wbGV0ZWx5IGNoYW5nZSB0aGUgd2F5IHRoZQorIyBzZXBhcmF0b3IgaW5zZXJ0aW9uIG11c3QgYmUgZG9uZS4KKworIyBGaXJzdCB0cnkgdG8gcHJlc2VydmUgYWN0dWFsIHNlcGFyYXRvcnMgaW4gdGhlIGphbW8gdGV4dCBieSBkb3VibGluZworIyB0aGVtLiAgVGhpcyBmaXhlcyBwcm9ibGVtcyBsaWtlOgorIyAoRGkpKEEpKEppKShVKShORyktKElFVU5HKShZRU8pKE5mKShHaSkoWUVPKShMKSA9PiBkYWp1bmcteWVvbmd5ZW9sCisjID0+IChEaSkoQSkoSmkpKFUpKE5HKShJRVVORykoWUVPKShOZikoR2kpKFlFTykoTCkuICBUaGlzIGlzIG9wdGlvbmFsCisjIC0tIGlmIHdlIGRvbid0IGNhcmUgYWJvdXQgbG9zaW5nIHNlcGFyYXRvcnMgaW4gdGhlIGphbW8sIHdlIGNhbiBkZWxldGUKKyMgdGhpcyBydWxlLgorCisgICRzZXAgJHNlcCA8PiAkc2VwOworCisjIFRyaXBsZSBjb25zb25hbnRzLiAgRm9yIHRocmVlIGNvbnNvbmFudHMgImF4eHgiIHdlIGluc2VydCBhCisjIHNlcGFyYXRvciBiZXR3ZWVuIHRoZSBmaXJzdCBhbmQgc2Vjb25kICJ4IiBpZiBYWGYsIFhmLCBhbmQgWGkgYWxsCisjIGV4aXN0LCBhbmQgd2UgaGF2ZSBBIFhmIFhYaS4gIFRoaXMgcHJldmVudHMgdGhlIHJldmVyc2UKKyMgdHJhbnNsaXRlcmF0aW9uIHRvIEEgWFhmIFhpLgorCisgICRzZXAgPCAkbGF0aW5NZWRpYWxFbmQgZyB7fSAkR0dpOworICAkc2VwIDwgJGxhdGluTWVkaWFsRW5kIHMge30gJFNTaTsKKworIyBGb3Igdm93ZWxzIHRoZSBydWxlIGlzIHNpbWlsYXIuICBJZiB0aGVyZSBpcyBhIHZvd2VsICJhZSIgc3VjaCB0aGF0CisjICJhIiBieSBpdHNlbGYgYW5kICJlIiBieSBpdHNlbGYgYXJlIHZvd2VscywgdGhlbiB3ZSB3YW50IHRvIG1hcCBBIEUKKyMgdG8gImEtZSIgc28gYXMgbm90IHRvIHJvdW5kIHRyaXAgdG8gQUUuICBIb3dldmVyLCBpbiB0aGUgdGV4dCBLaSBFTworIyBJRVVORyBFIHdlIGRvbid0IG5lZWQgdG8gbWFwIHRvICJrZW8tZSIuICAia2VvZSIgc3VmZmljZXMuICBGb3IKKyMgdm93ZWxzIG9mIHRoZSBmb3JtICJhZWkiLCBib3RoICJhZSIgKyAiaSIgYW5kICJhIiArICJlaSIgbXVzdCBiZQorIyB0ZXN0ZWQuICBOT1RFOiBUaGVzZSBydWxlcyB1c2VkIHRvIGhhdmUgYSBsZWZ0IGNvbnRleHQgb2YKKyMgJGxhdGluSW5pdGlhbCBpbnN0ZWFkIG9mIFteJGxhdGluTWVkaWFsXS4gIFRoZSBwcm9ibGVtIHdpdGggdGhpcyBpcworIyBzZXF1ZW5jZXMgd2hlcmUgYW4gaW5pdGlhbCBJRVVORyBpcyB0cmFuc2xpdGVyYXRlZCBhd2F5OgorIyAgIChJRVVORykoQSkoSUVVTkcpKEVPKSA9PiBhZW8gPT4gKElFVU5HKShBRSkoSUVVTkcpKE8pCisKKyAgJHNlcCA8IFteJGxhdGluTWVkaWFsXSBbeSB3XSBlIHt9IFskTyAkT0VdOworICAkc2VwIDwgW14kbGF0aW5NZWRpYWxdIGUge30gWyRPICRPRSAkVV07CisgICRzZXAgPCBbXiRsYXRpbk1lZGlhbF0gW28gYV0ge30gWyRFICRFTyAkRVVdOworICAkc2VwIDwgW14kbGF0aW5NZWRpYWxdIFt3IHldIGEge30gWyRFICRFTyAkRVVdOworCisjIFNpbWlsYXIgdG8gdGhlIGFib3ZlLCBidXQgd2l0aCBhbiBpbnRlcnZlbmluZyAkSUVVTkcuCisKKyAgJHNlcCA8IFteJGxhdGluTWVkaWFsXSBbeSB3XSBlIHt9ICRJRVVORyBbJE8gJE9FXTsKKyAgJHNlcCA8IFteJGxhdGluTWVkaWFsXSBlIHt9ICRJRVVORyBbJE8gJE9FICRVXTsKKyAgJHNlcCA8IFteJGxhdGluTWVkaWFsXSBbbyBhXSB7fSAkSUVVTkcgWyRFICRFTyAkRVVdOworICAkc2VwIDwgW14kbGF0aW5NZWRpYWxdIFt3IHldIGEge30gJElFVU5HIFskRSAkRU8gJEVVXTsKKworIyBTaW5nbGUgZmluYWxzIGZvbGxvd2VkIGJ5IElFVU5HLiAgVGhlIGphbW8gc2VxdWVuY2UgQSBYZiBJRVVORyBFLAorIyB3aGVyZSBYaSBhbHNvIGV4aXN0cywgbXVzdCBiZSB0cmFuc2xpdGVyYXRlZCBhcyAiYXgtZSIgdG8gcHJldmVudAorIyB0aGUgcm91bmQgdHJpcCBjb252ZXJzaW9uIHRvIEEgWGkgRS4KKworICAkc2VwIDwgJGxhdGluTWVkaWFsRW5kIGIge30gJElFVU5HICRqYW1vTWVkaWFsOworICAkc2VwIDwgJGxhdGluTWVkaWFsRW5kIGMge30gJElFVU5HICRqYW1vTWVkaWFsOworICAkc2VwIDwgJGxhdGluTWVkaWFsRW5kIGQge30gJElFVU5HICRqYW1vTWVkaWFsOworICAkc2VwIDwgJGxhdGluTWVkaWFsRW5kIGcge30gJElFVU5HICRqYW1vTWVkaWFsOworICAkc2VwIDwgJGxhdGluTWVkaWFsRW5kIGgge30gJElFVU5HICRqYW1vTWVkaWFsOworICAkc2VwIDwgJGxhdGluTWVkaWFsRW5kIGoge30gJElFVU5HICRqYW1vTWVkaWFsOworICAkc2VwIDwgJGxhdGluTWVkaWFsRW5kIGsge30gJElFVU5HICRqYW1vTWVkaWFsOworICAkc2VwIDwgJGxhdGluTWVkaWFsRW5kIG0ge30gJElFVU5HICRqYW1vTWVkaWFsOworICAkc2VwIDwgJGxhdGluTWVkaWFsRW5kIG4ge30gJElFVU5HICRqYW1vTWVkaWFsOworICAkc2VwIDwgJGxhdGluTWVkaWFsRW5kIHAge30gJElFVU5HICRqYW1vTWVkaWFsOworICAkc2VwIDwgJGxhdGluTWVkaWFsRW5kIHMge30gJElFVU5HICRqYW1vTWVkaWFsOworICAkc2VwIDwgJGxhdGluTWVkaWFsRW5kIHQge30gJElFVU5HICRqYW1vTWVkaWFsOworCisjIERvdWJsZSBmaW5hbHMgZm9sbG93ZWQgYnkgSUVVTkcuICBTaW1pbGFyIHRvIHRoZSBzaW5nbGUgZmluYWxzCisjIGZvbGxvd2VkIGJ5IElFVU5HLiAgQW55IGxhdGluIGNvbnNvbmFudCBwYWlyIFggWSwgYmV0d2VlbiBtZWRpYWxzLAorIyB0aGF0IHdlIHdvdWxkIHNwbGl0IGJ5IExhdGluLUphbW8sIHdlIG11c3QgaGFuZGxlIHdoZW4gaXQgb2NjdXJzIGFzCisjIHBhcnQgb2YgQSBYWWYgSUVVTkcgRSwgdG8gcHJldmVudCByb3VuZCB0cmlwIGNvbnZlcnNpb24gdG8gQSBYZiBZaQorIyBFLgorCisgICRzZXAgPCAkbGF0aW5NZWRpYWxFbmQgYiBzIHt9ICRJRVVORyAkamFtb01lZGlhbDsKKyAgJHNlcCA8ICRsYXRpbk1lZGlhbEVuZCBnIGcge30gJElFVU5HICRqYW1vTWVkaWFsOworICAkc2VwIDwgJGxhdGluTWVkaWFsRW5kIGcgcyB7fSAkSUVVTkcgJGphbW9NZWRpYWw7CisgICRzZXAgPCAkbGF0aW5NZWRpYWxFbmQgbCBiIHt9ICRJRVVORyAkamFtb01lZGlhbDsKKyAgJHNlcCA8ICRsYXRpbk1lZGlhbEVuZCBsIGcge30gJElFVU5HICRqYW1vTWVkaWFsOworICAkc2VwIDwgJGxhdGluTWVkaWFsRW5kIGwgaCB7fSAkSUVVTkcgJGphbW9NZWRpYWw7CisgICRzZXAgPCAkbGF0aW5NZWRpYWxFbmQgbCBtIHt9ICRJRVVORyAkamFtb01lZGlhbDsKKyAgJHNlcCA8ICRsYXRpbk1lZGlhbEVuZCBsIHAge30gJElFVU5HICRqYW1vTWVkaWFsOworICAkc2VwIDwgJGxhdGluTWVkaWFsRW5kIGwgcyB7fSAkSUVVTkcgJGphbW9NZWRpYWw7CisgICRzZXAgPCAkbGF0aW5NZWRpYWxFbmQgbCB0IHt9ICRJRVVORyAkamFtb01lZGlhbDsKKyAgJHNlcCA8ICRsYXRpbk1lZGlhbEVuZCBuIGcge30gJElFVU5HICRqYW1vTWVkaWFsOworICAkc2VwIDwgJGxhdGluTWVkaWFsRW5kIG4gaCB7fSAkSUVVTkcgJGphbW9NZWRpYWw7CisgICRzZXAgPCAkbGF0aW5NZWRpYWxFbmQgbiBqIHt9ICRJRVVORyAkamFtb01lZGlhbDsKKyAgJHNlcCA8ICRsYXRpbk1lZGlhbEVuZCBzIHMge30gJElFVU5HICRqYW1vTWVkaWFsOworCisjIFNwbGl0IGRvdWJsZXMuICBUZXh0IG9mIHRoZSBmb3JtIEEgWGkgWGYgRSwgd2hlcmUgWFhpIGFsc28gb2NjdXJzLAorIyB3ZSB0cmFuc2xpdGVyYXRlIGFzICJheC14ZSIgdG8gcHJldmVudCByb3VuZCB0cmlwIHRyYW5zbGl0ZXJhdGlvbiBhcworIyBBIFhYaSBFLgorCisgICRzZXAgPCAkbGF0aW5NZWRpYWxFbmQgYiB7fSAkQmkgJGphbW9NZWRpYWw7CisgICRzZXAgPCAkbGF0aW5NZWRpYWxFbmQgZCB7fSAkRGkgJGphbW9NZWRpYWw7CisgICRzZXAgPCAkbGF0aW5NZWRpYWxFbmQgaiB7fSAkSmkgJGphbW9NZWRpYWw7CisgICRzZXAgPCAkbGF0aW5NZWRpYWxFbmQgZyB7fSAkR2kgJGphbW9NZWRpYWw7CisgICRzZXAgPCAkbGF0aW5NZWRpYWxFbmQgcyB7fSAkU2kgJGphbW9NZWRpYWw7CisKKyMgWFlZLiAgVGhpcyBjb3JyZXNwb25kcyB0byB0aGUgWFlZIHJ1bGUgaW4gTGF0aW4tSmFtby4gIEJ5IGRlZmF1bHQKKyMgTGF0aW4tSmFtbyBtYXBzICJ4eXkiIHRvIFhmIFlZaSwgdG8ga2VlcCBZWSB0b2dldGhlci4gIEFzIGEgcmVzdWx0LAorIyAieHl5IiBmb3JtcyB0aGF0IGNvcnJlc3BvbmQgdG8gWFlmIFlpIG11c3QgYmUgdHJhbnNsaXRlcmF0ZWQgYXMKKyMgInh5LXkiLgorCisgICRzZXAgPCAkbGF0aW5NZWRpYWxFbmQgYiBzIHt9IFskU2kgJFNTaV07CisgICRzZXAgPCAkbGF0aW5NZWRpYWxFbmQgZyBzIHt9IFskU2kgJFNTaV07CisgICRzZXAgPCAkbGF0aW5NZWRpYWxFbmQgbCBiIHt9IFskQmkgJEJCXTsKKyAgJHNlcCA8ICRsYXRpbk1lZGlhbEVuZCBsIGcge30gWyRHaSAkR0dpXTsKKyAgJHNlcCA8ICRsYXRpbk1lZGlhbEVuZCBsIHMge30gWyRTaSAkU1NpXTsKKyAgJHNlcCA8ICRsYXRpbk1lZGlhbEVuZCBuIGcge30gWyRHaSAkR0dpXTsKKyAgJHNlcCA8ICRsYXRpbk1lZGlhbEVuZCBuIGoge30gWyRKaSAkSkpdOworCisjIERlbGV0aW9uIG9mIElFVU5HIGlzIGhhbmRsZWQgYmVsb3cuCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIExhdGluLUphbW8KKworIyBbQmFzaWMsIGNvbnRleHQtZnJlZSBKYW1vLUxhdGluIHJ1bGVzIGFyZSBlbWJlZGRlZCBoZXJlIHRvby4gIFNlZQorIyBhYm92ZS5dCisKKyMgU3BsaXQgZGlncmFwaHM6IFRleHQgb2YgdGhlIGZvcm0gJ2F4eWUnLCB3aGVyZSAneHknIGlzIGEgZmluYWwKKyMgZGlncmFwaCwgJ3gnIGlzIGEgZmluYWwgKGJ5IGl0c2VsZiksICd5JyBpcyBhbiBpbml0aWFsLCBhbmQgJ2EnIGFuZAorIyAnZScgYXJlIG1lZGlhbHMsIHdlIHdhbnQgdG8gdHJhbnNsaXRlcmF0ZSB0aGlzIGFzIEEgWGYgWWkgRSByYXRoZXIKKyMgdGhhbiBBIFhZZiBJRVVORyBFLiAgV2UgZG8gTk9UIGluY2x1ZGUgdGV4dCBvZiB0aGUgZm9ybSAiYXh4ZSIsCisjIHNpbmNlIHRoYXQgaXMgaGFuZGxlZCBkaWZmZXJlbnRseSBiZWxvdy4gIFRoZXNlIHJ1bGVzIGFyZSBnZW5lcmF0ZWQKKyMgcHJvZ3JhbW1hdGljYWxseSBmcm9tIHRoZSBqYW1vIGRhdGEuCisKKyAgJGphbW9NZWRpYWwge2Igc30gJGxhdGluTWVkaWFsID4gJEJmICRTaTsKKyAgJGphbW9NZWRpYWwge2cgc30gJGxhdGluTWVkaWFsID4gJEdmICRTaTsKKyAgJGphbW9NZWRpYWwge2wgYn0gJGxhdGluTWVkaWFsID4gJEwgJEJpOworICAkamFtb01lZGlhbCB7bCBnfSAkbGF0aW5NZWRpYWwgPiAkTCAkR2k7CisgICRqYW1vTWVkaWFsIHtsIGh9ICRsYXRpbk1lZGlhbCA+ICRMICRIaTsKKyAgJGphbW9NZWRpYWwge2wgbX0gJGxhdGluTWVkaWFsID4gJEwgJE1pOworICAkamFtb01lZGlhbCB7bCBwfSAkbGF0aW5NZWRpYWwgPiAkTCAkUGk7CisgICRqYW1vTWVkaWFsIHtsIHN9ICRsYXRpbk1lZGlhbCA+ICRMICRTaTsKKyAgJGphbW9NZWRpYWwge2wgdH0gJGxhdGluTWVkaWFsID4gJEwgJFRpOworICAkamFtb01lZGlhbCB7biBnfSAkbGF0aW5NZWRpYWwgPiAkTmYgJEdpOworICAkamFtb01lZGlhbCB7biBofSAkbGF0aW5NZWRpYWwgPiAkTmYgJEhpOworICAkamFtb01lZGlhbCB7biBqfSAkbGF0aW5NZWRpYWwgPiAkTmYgJEppOworCisjIFNpbmdsZSBjb25zb25hbnRzIGFyZSBpbml0aWFsczogVGV4dCBvZiB0aGUgZm9ybSAnYXhlJywgd2hlcmUgJ3gnCisjIGNhbiBiZSBhbiBpbml0aWFsIG9yIGEgZmluYWwsIGFuZCAnYScgYW5kICdlJyBhcmUgbWVkaWFscywgd2Ugd2FudAorIyB0byB0cmFuc2xpdGVyYXRlIGFzIEEgWGkgRSByYXRoZXIgdGhhbiBBIFhmIElFVU5HIEUuCisKKyAgJGphbW9NZWRpYWwge2J9ICRsYXRpbk1lZGlhbCA+ICRCaTsKKyAgJGphbW9NZWRpYWwge2N9ICRsYXRpbk1lZGlhbCA+ICRDaTsKKyAgJGphbW9NZWRpYWwge2R9ICRsYXRpbk1lZGlhbCA+ICREaTsKKyAgJGphbW9NZWRpYWwge2d9ICRsYXRpbk1lZGlhbCA+ICRHaTsKKyAgJGphbW9NZWRpYWwge2h9ICRsYXRpbk1lZGlhbCA+ICRIaTsKKyAgJGphbW9NZWRpYWwge2p9ICRsYXRpbk1lZGlhbCA+ICRKaTsKKyAgJGphbW9NZWRpYWwge2t9ICRsYXRpbk1lZGlhbCA+ICRLaTsKKyAgJGphbW9NZWRpYWwge219ICRsYXRpbk1lZGlhbCA+ICRNaTsKKyAgJGphbW9NZWRpYWwge259ICRsYXRpbk1lZGlhbCA+ICROaTsKKyAgJGphbW9NZWRpYWwge3B9ICRsYXRpbk1lZGlhbCA+ICRQaTsKKyAgJGphbW9NZWRpYWwge3N9ICRsYXRpbk1lZGlhbCA+ICRTaTsKKyAgJGphbW9NZWRpYWwge3R9ICRsYXRpbk1lZGlhbCA+ICRUaTsKKworIyBEb3VibGVkIGluaXRpYWxzLiAgVGhlIHNlcXVlbmNlICJheHhlIiwgd2hlcmUgWFggZXhpc3RzIGFzIGFuIGluaXRpYWwKKyMgKFhYaSksIGFuZCBhbHNvIFhpIGFuZCBYZiBleGlzdCAodHJ1ZSBvZiBhbGwgZGlncmFwaHMgWFgpLCB3ZSB3YW50CisjIHRvIHRyYW5zbGl0ZXJhdGUgYXMgQSBYWGkgRSwgcmF0aGVyIHRoYW4gc3BsaXQgdG8gQSBYZiBYaSBFLgorCisgICRqYW1vTWVkaWFsIHtiIGJ9ICRsYXRpbk1lZGlhbCA+ICRCQjsKKyAgJGphbW9NZWRpYWwge2QgZH0gJGxhdGluTWVkaWFsID4gJEREOworICAkamFtb01lZGlhbCB7aiBqfSAkbGF0aW5NZWRpYWwgPiAkSko7CisgICRqYW1vTWVkaWFsIHtnIGd9ICRsYXRpbk1lZGlhbCA+ICRHR2k7CisgICRqYW1vTWVkaWFsIHtzIHN9ICRsYXRpbk1lZGlhbCA+ICRTU2k7CisKKyMgWFlZLiAgQmVjYXVzZSBkb3VibGVkIGNvbnNvbmFudHMgYmluZCBtb3JlIHN0cm9uZ2x5IHRoYW4gWFkKKyMgY29uc29uYW50cywgd2UgbXVzdCBoYW5kbGUgdGhlIHNlcXVlbmNlICJheHl5IiBzcGVjaWFsbHkuICBIZXJlIFhZZgorIyBhbmQgWVlpIG11c3QgZXhpc3QuICBJbiB0aGVzZSBjYXNlcywgd2UgbWFwIHRvIFhmIFlZaSByYXRoZXIgdGhhbgorIyBYWWYuCisKKyAgJGphbW9NZWRpYWwge2J9IHMgcyA+ICRCZjsKKyAgJGphbW9NZWRpYWwge2d9IHMgcyA+ICRHZjsKKyAgJGphbW9NZWRpYWwge2x9IGIgYiA+ICRMOworICAkamFtb01lZGlhbCB7bH0gZyBnID4gJEw7CisgICRqYW1vTWVkaWFsIHtsfSBzIHMgPiAkTDsKKyAgJGphbW9NZWRpYWwge259IGcgZyA+ICROZjsKKyAgJGphbW9NZWRpYWwge259IGogaiA+ICROZjsKKworIyBGaW5hbHM6IEF0dGFjaCBjb25zb25hbnQgd2l0aCBwcmVjZWRpbmcgbWVkaWFsIHRvIHByZWNlZGluZyBtZWRpYWwuCisjIERvIHRoaXMgQkVGT1JFIG1hcHBpbmcgY29uc29uYW50cyB0byBpbml0aWFscy4gIExvbmdlciBrZXlzIG11c3QKKyMgcHJlY2VkZSBzaG9ydGVyIGtleXMgdGhhdCB0aGV5IHN0YXJ0IHdpdGgsIGUuZy4sIHRoZSBydWxlIGZvciAnYnMnCisjIG11c3QgcHJlY2VkZSAnYicuCisKKyMgW0JBU0lDIEphbW8tTGF0aW4gRklOQUxTIGhhbmRsZWQgaGVyZS4gIE9yZGVyIGlycmVsZXZhbnQgd2l0aGluIHRoaXMKKyMgYmxvY2sgZm9yIEphbW8tTGF0aW4uXQorCisgICRqYW1vTWVkaWFsIHtic30gPD4gJEJTOworICAkamFtb01lZGlhbCB7Yn0gPD4gJEJmOworICAkamFtb01lZGlhbCB7Y30gPD4gJENmOworICAkamFtb01lZGlhbCB7ZH0gPD4gJERmOworICAkamFtb01lZGlhbCB7Z2d9IDw+ICRHR2Y7CisgICRqYW1vTWVkaWFsIHtnc30gPD4gJEdTOworICAkamFtb01lZGlhbCB7Z30gPD4gJEdmOworICAkamFtb01lZGlhbCB7aH0gPD4gJEhmOworICAkamFtb01lZGlhbCB7an0gPD4gJEpmOworICAkamFtb01lZGlhbCB7a30gPD4gJEtmOworICAkamFtb01lZGlhbCB7bGJ9IDw+ICRMQjsgICRqYW1vTWVkaWFsIHtsZ30gPD4gJExHOworICAkamFtb01lZGlhbCB7bGh9IDw+ICRMSDsKKyAgJGphbW9NZWRpYWwge2xtfSA8PiAkTE07CisgICRqYW1vTWVkaWFsIHtscH0gPD4gJExQOworICAkamFtb01lZGlhbCB7bHN9IDw+ICRMUzsKKyAgJGphbW9NZWRpYWwge2x0fSA8PiAkTFQ7CisgICRqYW1vTWVkaWFsIHtsfSA8PiAkTDsKKyAgJGphbW9NZWRpYWwge219IDw+ICRNZjsKKyAgJGphbW9NZWRpYWwge25nfSA8PiAkTkc7CisgICRqYW1vTWVkaWFsIHtuaH0gPD4gJE5IOworICAkamFtb01lZGlhbCB7bmp9IDw+ICROSjsKKyAgJGphbW9NZWRpYWwge259IDw+ICROZjsKKyAgJGphbW9NZWRpYWwge3B9IDw+ICRQZjsKKyAgJGphbW9NZWRpYWwge3NzfSA8PiAkU1NmOworICAkamFtb01lZGlhbCB7c30gPD4gJFNmOworICAkamFtb01lZGlhbCB7dH0gPD4gJFRmOworCisjIEluaXRpYWxzOiBBdHRhY2ggc2luZ2xlIGNvbnNvbmFudCB0byBmb2xsb3dpbmcgbWVkaWFsLiAgRG8gdGhpcworIyBBRlRFUiBtYXBwaW5nIGZpbmFscy4gIExvbmdlciBrZXlzIG11c3QgcHJlY2VkZSBzaG9ydGVyIGtleXMgdGhhdAorIyB0aGV5IHN0YXJ0IHdpdGgsIGUuZy4sIHRoZSBydWxlIGZvciAnZ2cnIG11c3QgcHJlY2VkZSAnZycuCisKKyMgW0JBU0lDIEphbW8tTGF0aW4gSU5JVElBTFMgaGFuZGxlZCBoZXJlLiAgT3JkZXIgaXJyZWxldmFudCB3aXRoaW4KKyMgdGhpcyBibG9jayBmb3IgSmFtby1MYXRpbi5dCisKKyAge2dnfSAkbGF0aW5NZWRpYWwgPD4gJEdHaTsKKyAge2d9ICRsYXRpbk1lZGlhbCA8PiAkR2k7CisgIHtufSAkbGF0aW5NZWRpYWwgPD4gJE5pOworICB7ZGR9ICRsYXRpbk1lZGlhbCA8PiAkREQ7CisgIHtkfSAkbGF0aW5NZWRpYWwgPD4gJERpOworICB7cn0gJGxhdGluTWVkaWFsIDw+ICRSOworICB7bX0gJGxhdGluTWVkaWFsIDw+ICRNaTsKKyAge2JifSAkbGF0aW5NZWRpYWwgPD4gJEJCOworICB7Yn0gJGxhdGluTWVkaWFsIDw+ICRCaTsKKyAge3NzfSAkbGF0aW5NZWRpYWwgPD4gJFNTaTsKKyAge3N9ICRsYXRpbk1lZGlhbCA8PiAkU2k7CisgIHtqan0gJGxhdGluTWVkaWFsIDw+ICRKSjsKKyAge2p9ICRsYXRpbk1lZGlhbCA8PiAkSmk7CisgIHtjfSAkbGF0aW5NZWRpYWwgPD4gJENpOworICB7a30gJGxhdGluTWVkaWFsIDw+ICRLaTsKKyAge3R9ICRsYXRpbk1lZGlhbCA8PiAkVGk7CisgIHtwfSAkbGF0aW5NZWRpYWwgPD4gJFBpOworICB7aH0gJGxhdGluTWVkaWFsIDw+ICRIaTsKKworIyAncicgaW4gZmluYWwgcG9zaXRpb24uICBCZWNhdXNlIG9mIHRoZSBlcXVpdmFsZW5jeSBvZiB0aGUgJ2wnIGFuZAorIyAncicgamFtbyAodGhlIGdseXBocyBhcmUgdGhlIHNhbWUpLCB3ZSB0cnkgdG8gcHJvdmlkZSB0aGUgc2FtZQorIyBlcXVpdmFsZW5jeSBpbiBMYXRpbi1KYW1vLiAgVGhlICdsJyB0byAncicgY29udmVyc2lvbiBpcyBoYW5kbGVkCisjIGJlbG93LiAgSWYgd2Ugc2VlIGFuICdyJyBpbiBhbiBhcHBhcmVudCBmaW5hbCBwb3NpdGlvbiwgdHJlYXQgaXQKKyMgbGlrZSAnbCcuICBGb3IgZXhhbXBsZSwgImthcmthIiA9PiBLaSBBIFIgRVUgS2kgQSB3aXRob3V0IHRoaXMgcnVsZS4KKyMgSW5zdGVhZCwgd2Ugd2FudCBLaSBBIEwgS2kgQS4KKworICAkamFtb01lZGlhbCB7cn0gJGxhdGluSW5pdGlhbCA+IHwgbDsKKworIyBJbml0aWFsICsgRmluYWw6IElmIHdlIG1hdGNoIHRoZSBuZXh0IHJ1bGUsIHdlIGhhdmUgaW5pdGlhbCB0aGVuCisjIGZpbmFsIGNvbnNvbmFudCB3aXRoIG5vIGludGVydmVuaW5nIG1lZGlhbC4gIFdlIGluc2VydCB0aGUgbnVsbAorIyB2b3dlbCBCRUZPUkUgaXQgdG8gY3JlYXRlIGEgd2VsbC1mb3JtZWQgc3lsbGFibGUuICAoSW4gdGhlIG5leHQgcnVsZQorIyB3ZSBpbnNlcnQgYSBudWxsIHZvd2VsIEFGVEVSIGFuIGFub21hbG91cyBpbml0aWFsLikKKworICAkamFtb0luaXRpYWwge30gW2JjZGdoamtsbW5wc3RdID4gJEVVOworCisjIEluaXRpYWwgKyBYOiBUaGlzIGJsb2NrIG1hdGNoZXMgYW4gaW5pdGlhbCBjb25zb25hbnQgbm90IGZvbGxvd2VkIGJ5CisjIGEgbWVkaWFsLiAgV2UgaW5zZXJ0IHRoZSBudWxsIHZvd2VsIGFmdGVyIGl0LiAgV2UgaGFuZGxlIGRvdWJsZQorIyBpbml0aWFscyBleHBsaWNpdGx5IGhlcmU7IGZvciBzaW5nbGUgaW5pdGlhbCBjb25zb25hbnRzIHdlIGluc2VydCBFVQorIyAoYXMgTGF0aW4pIGFmdGVyIHRoZW0gYW5kIGxldCBzdGFuZGFyZCBydWxlcyBkbyB0aGUgcmVzdC4KKworIyBCUkVBS1MgUk9VTkQgVFJJUCBJTlRFR1JJVFkKKworICBnZyA+ICRHR2kgJEVVOworICBkZCA+ICRERCAkRVU7CisgIGJiID4gJEJCICRFVTsKKyAgc3MgPiAkU1NpICRFVTsKKyAgamogPiAkSkogJEVVOworCisgIChbYmNkZ2hqa21ucHJzdF0pID4gfCAkMSBldTsKKworIyBYICsgRmluYWw6IEZpbmFsbHkgd2UgaGF2ZSB0byBkZWFsIHdpdGggYSBjb25zb25hbnQgdGhhdCBjYW4gb25seSBiZQorIyBpbnRlcnByZXRlZCBhcyBhIGZpbmFsIChub3QgYW4gaW5pdGlhbCkgYW5kIHdoaWNoIGlzIHByZWNlZGVkCisjIG5laXRoZXIgYnkgYW4gaW5pdGlhbCBub3IgYSBtZWRpYWwuICBJdCBpcyB0aGUgc3RhcnQgb2YgdGhlCisjIHN5bGxhYmxlLCBidXQgY2Fubm90IGJlLiAgTW9zdCBvZiB0aGVzZSB3aWxsIGFscmVhZHkgYmUgaGFuZGxlZCBieQorIyB0aGUgYWJvdmUgcnVsZXMuICAnYnMnIHNwbGl0cyBpbnRvIEJpIEVVIFNmLiAgU2ltaWxhciBmb3IgJ2dzJyAnbmcnCisjICduaCcgJ25qJy4gIFRoZSBvbmx5IHByb2JsZW0gaXMgJ2wnIGFuZCBkaWdyYXBocyBzdGFydGluZyB3aXRoICdsJy4KKyMgRm9yIHRoaXMgaXNvbGF0ZWQgY2FzZSwgd2UgY291bGQgYWRkIGEgbnVsbCBpbml0aWFsIGFuZCBtZWRpYWwsCisjIHdoaWNoIHdvdWxkIGdpdmUgImxhIiA9PiBJRVVORyBFVSBMIElFVU5HIEEsIGZvciBleGFtcGxlLiAgQSBtb3JlCisjIGVjb25vbWljYWwgc29sdXRpb24gaXMgdG8gdHJhbnNsaXRlcmF0ZSBpc29sYXRlZCAibCIgKHRoYXQgaXMsCisjIGluaXRpYWwgImwiKSB0byAiciIuICAoT3RoZXIgc2ltaWxhciBjb252ZXJzaW9ucyBvZiBjb25zb25hbnRzIHRoYXQKKyMgb2NjdXIgbmVpdGhlciBhcyBpbml0aWFscyBub3IgYXMgZmluYWxzIGFyZSBoYW5kbGVkIGJlbG93LikKKworICBsID4gfCByOworCisjIE1lZGlhbHMuICBJZiBhIG1lZGlhbCBpcyBwcmVjZWRlZCBieSBhbiBpbml0aWFsLCB0aGVuIHdlIHByb2NlZWQKKyMgbm9ybWFsbHkuICBBcyB1c3VhbCwgbG9uZ2VyIGtleXMgbXVzdCBwcmVjZWRlIHNob3J0ZXIgb25lcy4KKworIyBbQkFTSUMgSmFtby1MYXRpbiBNRURJQUxTIGhhbmRsZWQgaGVyZS4gIE9yZGVyIGlycmVsZXZhbnQgd2l0aGluCisjIHRoaXMgYmxvY2sgZm9yIEphbW8tTGF0aW4uXQorCisgICRqYW1vSW5pdGlhbCB7YWV9IDw+ICRBRTsKKyAgJGphbW9Jbml0aWFsIHthfSA8PiAkQTsKKyAgJGphbW9Jbml0aWFsIHtlb30gPD4gJEVPOworICAkamFtb0luaXRpYWwge2V1fSA8PiAkRVU7CisgICRqYW1vSW5pdGlhbCB7ZX0gPD4gJEU7CisgICRqYW1vSW5pdGlhbCB7aX0gPD4gJEk7CisgICRqYW1vSW5pdGlhbCB7b2V9IDw+ICRPRTsKKyAgJGphbW9Jbml0aWFsIHtvfSA8PiAkTzsKKyAgJGphbW9Jbml0aWFsIHt1fSA8PiAkVTsKKyAgJGphbW9Jbml0aWFsIHt3YWV9IDw+ICRXQUU7CisgICRqYW1vSW5pdGlhbCB7d2F9IDw+ICRXQTsKKyAgJGphbW9Jbml0aWFsIHt3ZW99IDw+ICRXRU87CisgICRqYW1vSW5pdGlhbCB7d2V9IDw+ICRXRTsKKyAgJGphbW9Jbml0aWFsIHt3aX0gPD4gJFdJOworICAkamFtb0luaXRpYWwge3lhZX0gPD4gJFlBRTsKKyAgJGphbW9Jbml0aWFsIHt5YX0gPD4gJFlBOworICAkamFtb0luaXRpYWwge3llb30gPD4gJFlFTzsKKyAgJGphbW9Jbml0aWFsIHt5ZX0gPD4gJFlFOworICAkamFtb0luaXRpYWwge3lpfSA8PiAkWUk7CisgICRqYW1vSW5pdGlhbCB7eW99IDw+ICRZTzsKKyAgJGphbW9Jbml0aWFsIHt5dX0gPD4gJFlVOworCisjIFdlIG1heSBzZWUgYW4gYW5vbWFsb3VzIGlzb2xhdGVkICd3JyBvciAneScuICBJbiB0aGF0IGNhc2UsIHdlCisjIGludGVycHJldCBpdCBhcyAnd2knIGFuZCAneXUnLCByZXNwZWN0aXZlbHkuCisKKyMgQlJFQUtTIFJPVU5EIFRSSVAgSU5URUdSSVRZCisKKyAgJGphbW9Jbml0aWFsIHt3fSA+IHwgd2k7CisgICRqYW1vSW5pdGlhbCB7eX0gPiB8IHl1OworCisjIE90aGVyd2lzZSwgaW5zZXJ0IGEgbnVsbCBjb25zb25hbnQgSUVVTkcgYmVmb3JlIHRoZSBtZWRpYWwgKHdoaWNoIGlzCisjIHN0aWxsIGFuIHVudHJhbnNsaXRlcmF0ZWQgbGF0aW4gdm93ZWwpLgorCisgICgkbGF0aW5NZWRpYWwpID4gJElFVU5HIHwgJDE7CisKKyMgQ29udmVydCBub24tamFtbyBsYXRpbiBjb25zb25hbnRzIHRvIGVxdWl2YWxlbnRzLiAgVGhlc2Ugb2NjdXIgYXMKKyMgbmVpdGhlciBpbml0aWFscyBub3IgZmluYWxzIGluIGphbW8uICAnbCcgb2NjdXJzIGFzIGEgZmluYWwsIGJ1dCBub3QKKyMgYW4gaW5pdGlhbDsgaXQgaXMgaGFuZGxlZCBhYm92ZS4gIFRoZSBmb2xsb3dpbmcgbGV0dGVycyAobGVmdCBoYW5kCisjIHNpZGUpIHdpbGwgbmV2ZXIgYmUgb3V0cHV0IGJ5IEphbW8tTGF0aW4uCisKKyAgZiA+IHwgcDsKKyAgcSA+IHwgazsKKyAgdiA+IHwgYjsKKyAgeCA+IHwga3M7CisgIHogPiB8IHM7CisKKyMgRGVsZXRlIHNlcGFyYXRvcnMgKExhdGluLUphbW8pLgorCisgICRzZXAgPiA7CisKKyMgRGVsZXRlIG51bGwgY29uc29uYW50cyAoSmFtby1MYXRpbikuICBEbyBOT1QgZGVsZXRlIG51bGwgRVUgdm93ZWxzLAorIyBzaW5jZSB0aGVzZSBtYXkgYWxzbyBvY2N1ciBpbiB0ZXh0LgorCisgIDwgJElFVU5HOworCisjLSBOLkIuIERPIE5PVCBwdXQgYW55IGZpbHRlcnMsIE5GRCwgZXRjLiBoZXJlIC0tIHRob3NlIGFyZSBhbGlhc2VkIGluCisjLSB0aGUgSU5ERVggZmlsZS4gIFRoaXMgdHJhbnNsaXRlcmF0b3IgaXMsIGJ5IGl0c2VsZiwgbm90CisjLSBpbnN0YW50aWF0ZWQuICBJdCBpcyB1c2VkIGFzIGEgcGFydCBvZiBMYXRpbi1KYW1vLCBMYXRpbi1IYW5ndWwsIG9yCisjLSBpbnZlcnNlcyB0aGVyZW9mLgorCisjIGVvZgpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9UcmFuc2xpdGVyYXRvcl9MYXRpbl9LYXRha2FuYS50eHQgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL1RyYW5zbGl0ZXJhdG9yX0xhdGluX0thdGFrYW5hLnR4dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xMWM1OTYxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9UcmFuc2xpdGVyYXRvcl9MYXRpbl9LYXRha2FuYS50eHQKQEAgLTAsMCArMSw0OTkgQEAKK++7vyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDb3B5cmlnaHQgKGMpIDE5OTktMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworIyBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQXR0aWMvVHJhbnNsaXRlcmF0b3JfTGF0aW5fS2F0YWthbmEudHh0LHYgJAorIyAkRGF0ZTogMjAwMS8xMi8wMyAwMjoxMDoyNiAkCisjICRSZXZpc2lvbjogMS4xOSAkCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBub3RlOiBhIGdsb2JhbCBmaWx0ZXIgaXMgbW9yZSBlZmZpY2llbnQsIGJ1dCBNVVNUIGluY2x1ZGUgYWxsIHNvdXJjZSBjaGFycworIzo6IFtcdTAwMDAtXHUwMDdFIFx1MzAwMVx1MzAwMiBcdTMwOTktXHUzMDlDIFx1MzBBMS1cdTMwRkMgXHVGRjYxLVx1RkY5RiBbOkxhdGluOl1bOkthdGFrYW5hOl0gWzpub25zcGFjaW5nIG1hcms6XV0gOworIyBNSU5JTUFMIEZJTFRFUiBHRU5FUkFURUQgRk9SOiBMYXRpbi1LYXRha2FuYQorIyMjIFdBUk5JTkcgLS0gbXVzdCBhZGQgd2lkdGggZmlsdGVyLCBib3RoIGhlcmUgYW5kIGJlbG93ISEhICMjIworOjogW1tcdTExMDAtXHUxMTEyXHUxMTFBXHUxMTIxXHUxMTYwLVx1MTE3NVx1MTFBQVx1MTFBQy1cdTExQURcdTExQjAtXHUxMUI1XHUyMTkwLVx1MjE5M1x1MjUwMlx1MjVBMFx1MjVDQlx1MzAwMC1cdTMwMDJcdTMwMEMtXHUzMDBEXHUzMDk5LVx1MzA5QVx1MzBBMS1cdTMwRURcdTMwRUZcdTMwRjItXHUzMEY0XHUzMEY3XHUzMEZBLVx1MzBGQ1x1RkYwMS1cdUZGNUVcdUZGRTAtXHVGRkU2XVsnLC5BLVphLXp+XHUwMEMwLVx1MDBENlx1MDBEOC1cdTAwRjZcdTAwRjgtXHUwMTBGXHUwMTEyLVx1MDEyNVx1MDEyOC1cdTAxMzBcdTAxMzQtXHUwMTM3XHUwMTM5LVx1MDEzRVx1MDE0My1cdTAxNDhcdTAxNEMtXHUwMTUxXHUwMTU0LVx1MDE2NVx1MDE2OC1cdTAxN0VcdTAxQTAtXHUwMUExXHUwMUFGLVx1MDFCMFx1MDFDRC1cdTAxRENcdTAxREUtXHUwMUUzXHUwMUU2LVx1MDFFRFx1MDFGMFx1MDFGNC1cdTAxRjVcdTAxRjgtXHUwMjFCXHUwMjFFLVx1MDIxRlx1MDIyNi1cdTAyMzNcdTAzMDRcdTA0RTItXHUwNEUzXHUwNEVFLVx1MDRFRlx1MUUwMC1cdTFFOTlcdTFFQTAtXHUxRUY5XHUxRkIxXHUxRkI5XHUxRkQxXHUxRkQ5XHUxRkUxXHUxRkU5XHUyMTJBLVx1MjEyQl1dIDsKKworOjogWzpMYXRpbjpdIGZ1bGx3aWR0aC1oYWxmd2lkdGggKCk7Cis6OiBORkQgKE5GQyk7Cis6OiBMb3dlciAoKTsgICAgIyB3aGVuZXZlciB0cmFuc2xpdGVyYXRpbmcgZnJvbSBjYXNlZCB0byB1bmNhc2VkIHNjcmlwdCwgaW5jbHVkZSB0aGlzCisjIDo6IE5GRCAoKSA7ICAgIyB0aGlzIHdvdWxkIGNhdGNoIHRoZSBvZGQgY2FzZXMgd2hlcmUgYSBsb3dlcmNhc2UgaXMgbm90IGluIE5GRCwgYnV0IG5vbmUgYXJlIGltcG9ydGFudCBmb3IgSmFwYW5lc2UKKworIyBVc2VzIG1vZGlmaWVkIEhlcGJ1cm4uIFNtYWxsIGNoYW5nZXMgdG8gbWFrZSAgdW5hbWJpZ3VvdXMuCisKKyMgfCBLdW5yZWktc2hpa2k6IEhlcGJ1cm4vTUhlcGJ1cm4KKyMgfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgfCBzaTogc2hpCisjIHwgc2kgfnlhOiBzaGEKKyMgfCBzaSB+eXU6IHNodQorIyB8IHNpIH55bzogc2hvCisjIHwgemk6IGppCisjIHwgemkgfnlhOiBqYQorIyB8IHppIH55dToganUKKyMgfCB6aSB+eW86IGpvCisjIHwgdGk6IGNoaQorIyB8IHRpIH55YTogY2hhCisjIHwgdGkgfnl1OiBjaHUKKyMgfCB0aSB+eXU6IGNobworIyB8IHR1OiB0c3UKKyMgfCBkaTogamkvZGppCisjIHwgZHU6IHp1L2R6dQorIyB8IGh1OiBmdQorCisjIHwgRm9yIGZvcmVpZ24gd29yZHM6CisjIHwgLS0tLS0tLS0tLS0tLS0tLS0KKyMgfCBzZSB+aSBzaQorIyB8IHNpIH5lIHNoZQorIyB8IAorIyB8IHplIH5pIHppCisjIHwgemkgfmUgamUKKyMgfCAKKyMgfCB0ZSB+aSB0aQorIyB8IHRpIH5lIGNoZQorIyB8IHRlIH51IHR1CisjIHwgCisjIHwgZGUgfmkgZGkKKyMgfCBkZSB+dSBkdQorIyB8IGRlIH5pIGRpCisjIHwgCisjIHwgaGUgfnU6IGh1CisjIHwgaHUgfmEgZmEKKyMgfCBodSB+aSBmaQorIyB8IGh1IH5lIGhlCisjIHwgaHUgfm8gaG8KKworIyBNb3N0IHNtYWxsIGZvcm1zIGFyZSBnZW5lcmF0ZWQsIGJ1dCBpZiBuZWNlc3NhcnkKKyMgZXhwbGljaXQgc21hbGwgZm9ybXMgYXJlIGdpdmVuIHdpdGggfmEsIH55YSwgZXRjLgorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFZhcmlhYmxlcworCiskdm93ZWwgPSBbYWVpb3VdIDsKKyRjb25zb25hbnQgPSBbYmNkZmdoamtsbW5wcXJzdHZ3eHl6XSA7CiskbWFjcm9uID0gXHUwMzA0IDsKKworIyBWYXJpYWJsZXMgdXNlZCBmb3IgZG91YmxlZC1jb25zb25hbnRzIHdpdGggdHN1CisKKyRrYW5hID0gW1x1MzA0MS1cdTMwOTRdIDsKKworJHZvaWNlID0gW1x1MzA5OVx1MzA5Ql07Ciskc2VtaXZvaWNlID0gW1x1MzA5QVx1MzA5Q107CisKKyRrX3N0YXJ0ID0gW+OCq+OCreOCr+OCseOCs+OBi+OBjeOBj+OBkeOBk10gOworCiskc19zdGFydCA9IFvjgrXjgrfjgrnjgrvjgr3jgZXjgZfjgZnjgZvjgZ1dIDsKKworJGpfc3RhcnQgPSBb44K344GXXSAkdm9pY2UgOworCiskdF9zdGFydCA9IFvjgr/jg4Hjg4Tjg4bjg4jjgZ/jgaHjgaTjgabjgahdIDsKKworJG5fc3RhcnQgPSBb44OK44OL44OM44ON44OO44Oz44Gq44Gr44Gs44Gt44GuXSA7CisKKyRoX3N0YXJ0ID0gW+ODj+ODkuODmOODm+OBr+OBsuOBuOOBu10gOworJGZfc3RhcnQgPSBb44OV44G1XSA7CisKKyRtX3N0YXJ0ID0gW+ODnuODn+ODoOODoeODouOBvuOBv+OCgOOCgeOCgl0gOworCiskeV9zdGFydCA9IFvjg6Tjg6bjg6jjgoTjgobjgohdIDsKKworJHJfc3RhcnQgPSBb44Op44Oq44Or44Os44Ot44KJ44KK44KL44KM44KNXSA7CisKKyR3X3N0YXJ0ID0gW+ODr+ODsOODseODsuOCj+OCkOOCkeOCkl0gOworCiskdl9zdGFydCA9IFvjg6/jg7Djg7Hjg7Jd44KZIDsKKworIyBpZiDjg7MgaXMgZm9sbG93ZWQgYnkgJG5fcXVvdGVyLCB0aGVuIGl0IG5lZWRzIGFuCisjIGFwb3N0cm9waGUgYWZ0ZXIgaXRzIHJvbWFqaSBmb3JtIHRvIGRpc2FtYmlndWF0ZSBpdC4KKyMgZS5nLiwg44OzIOOCoiAhID0gIOODiiwgc28gcmVwcmVzZW50IGFzICJuJ2EiLCBub3QgIm5hIi4KKworJG5fcXVvdGVyICA9ICBb44KiIOOCpCDjgqYg44KoIOOCqiDjg4og44OLIOODjCDjg40g44OOIOODpCDjg6Yg44OoIOODs10gOworCiskc21hbGxfeSA9IFvjg6PjgqPjg6Xjgqfjg6ddIDsKKworJGl0ZXJhdGlvbiA9IFx1MzA5RCA7CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMga2F0YWthbmEgcnVsZXMKKworIyBQdW5jdHVhdGlvbgorCisnLicgPD4g44CCOworJywnIDw+IOOAgTsKKyMgJyAnIH0gW2Etel0gPiA7ICMgZGVsZXRlIHNwYWNlcyBiZWZvcmUgbGF0aW4KKyMgJyAnIDwgW14nICdcdTMwQTAtXHUzMGZmXSB7fSBbJ1x1MzBBMC1cdTMwZmZdIDsgI2luc2VydCBzcGFjZXMgYmVmb3JlIGhpcmFnYW5hCisKKyMgSXRlcmF0aW9uIE1hcmsKKyMgQ29weSBwcmV2aW91cyBsZXR0ZXIgJiBtYXJrcworCisjIFRPRE8KKyMgfCAkMSAkMSA8ICgka2FuYSBbWzpNOl0kdm9pY2Ukc2VtaXZvaWNlXT8pICRpdGVyYXRpb24KKworIyBTcGVjaWFscyBmb3Iga2F0YWthbmEgLS0gbm90IHNoYXJlZCB3aXRoIGhpcmFnYW5hCisKK3ZhIDw+IOODr+OCmSA7Cit2aSA8PiDjg7DjgpkgOwordmUgPD4g44Ox44KZIDsKK3ZvIDw+IOODsuOCmSA7CisnfmthJyA8PiDjg7UgOworJ35rZScgPD4g44O2IDsKKworIyB+fn4gYmVnaW4gc2hhcmVkIHJ1bGVzIH5+fgorCisjc3BlY2lhbAorCit5YSA8ICd+J+ODozsKK3lpIDwgJ34n44KjIDsKK3l1IDwgJ34n44OlOworeWUgPCAnfifjgqc7Cit5byA8ICd+J+ODpzsKKworI25vcm1hbAorCithIDw+IOOCoiA7CisKK2IgfCAnficgPCDjg5Ig44KZfSAkc21hbGxfeSA7CitieSB9ICR2b3dlbCA+IOODkuOCmSB8ICd+eScgOworCitiYSA8PiDjg4/jgpkgOworYmkgPD4g44OS44KZIDsKK2J1IDw+IOODleOCmSA7CitiZSA8PiDjg5jjgpkgOworYm8gPD4g44Ob44KZIDsKKworYyB9IGkgPiB8IHMgOworYyB9IGUgPiB8IHMgOworCitkYSA8PiDjgr/jgpkgOworZGkgPD4g44OG44KZ44KjIDsKK2R1IDw+IOODhuOCmeOCpSA7CitkZSA8PiDjg4bjgpkgOworZG8gPD4g44OI44KZIDsKK2R6dSA8PiDjg4TjgpkgOworZGphIDwg44OB44KZ44OjIDsKK2RqaSd+aScgPCDjg4HjgpnjgqMgOyAjIGxpdQorZGp1IDwg44OB44KZ44OlIDsKK2RqZSA8IOODgeOCmeOCpyA7Citkam8gPCDjg4Hjgpnjg6cgOworZGppIDw+IOODgeOCmSA7CitkaiAgfSAkdm93ZWwgPiDjg4HjgpkgfCAnfnknIDsKKworIyBUT0RPOiBRVUVTVElPTjogdXNlIMS1xLTFvMW7IGluc3RlYWQgb2YgZGosIGR6CisKK2NoYSA8IOODgeODoyA7CitjaGknfmknIDwg44OB44KjIDsgIyBsaXUKK2NodSA8IOODgeODpSA7CitjaGUgPCDjg4HjgqcgOworY2hvIDwg44OB44OnIDsKK2NoaSA8PiDjg4EgOworY2ggfSAkdm93ZWwgPiDjg4EgfCAnfnknIDsKKworZSA8PiDjgqggOworCitnIHwgJ34nIDwg44Kt44KZfSAkc21hbGxfeSA7CitneSAgfSAkdm93ZWwgPiDjgq3jgpkgfCAnfnknIDsKKworZ2EgPD4g44Kr44KZIDsKK2dpIDw+IOOCreOCmSA7CitndSA8PiDjgq/jgpkgOworZ2UgPD4g44Kx44KZIDsKK2dvIDw+IOOCs+OCmSA7CisKK2kgPD4g44KkIDsKKworIyBqICB9ICR2b3dlbCA+IOOCt+OCmSB8ICd+eScgOworCitqYSA8PiDjgrfjgpnjg6MgOworamknfmknIDwg44K344KZ44KjIDsgIyBsaXUKK2p1IDw+IOOCt+OCmeODpSA7CitqZSA8PiDjgrfjgpnjgqcgOworam8gPD4g44K344KZ44OnIDsKK2ppIDw+IOOCt+OCmSA7CisKK2sgfCAnficgPCDjgq19ICRzbWFsbF95IDsKK2t5ICB9ICR2b3dlbCA+IOOCrSB8ICd+eScgOworCitrYSA8PiDjgqsgOwora2kgPD4g44KtIDsKK2t1IDw+IOOCryA7CitrZSA8PiDjgrEgOwora28gPD4g44KzIDsKKworbSB8ICd+JyA8IOODn30gJHNtYWxsX3kgOworbXkgIH0gJHZvd2VsID4g44OfIHwgJ355JyA7CisKK21hIDw+IOODniA7CittaSA8PiDjg58gOworbXUgPD4g44OgIDsKK21lIDw+IOODoSA7CittbyA8PiDjg6IgOworCittIH0gW3BiZnZdID4g44OzIDsKKworbiB8ICd+JyA8IOODiyB9ICRzbWFsbF95IDsKK255ICB9ICR2b3dlbCA+IOODiyB8ICd+eScgOworCituYSA8PiDjg4ogOworbmkgPD4g44OLIDsKK251IDw+IOODjCA7CituZSA8PiDjg40gOworbm8gPD4g44OOIDsKKworbyA8PiDjgqogOworCitwIHwgJ34nIDwg44OS44KaIH0gJHNtYWxsX3kgOworcHkgIH0gJHZvd2VsID4g44OS44KaIHwgJ355JyA7CisKK3BhIDw+IOODj+OCmiA7CitwaSA8PiDjg5LjgpogOworcHUgPD4g44OV44KaIDsKK3BlIDw+IOODmOOCmiA7CitwbyA8PiDjg5vjgpogOworCitoIHwgJ34nIDwg44OSIH0gJHNtYWxsX3kgOworaHkgIH0gJHZvd2VsID4g44OSIHwgJ355JyA7CisKK2hhIDw+IOODjyA7CitoaSA8PiDjg5IgOworaHUgPD4g44OY44KlIDsKK2hlIDw+IOODmCA7CitobyA8PiDjg5sgOworCisjIGYgfCAnficgPCDjg5UgfSAkc21hbGxfeSA7CisjIGYgfSAkdm93ZWwgPiDjg5UgfCAnficgOworCitmYSA8PiDjg5XjgqEgOworZmkgPD4g44OV44KjIDsKK2ZlIDw+IOODleOCpyA7CitmbyA8PiDjg5XjgqkgOworZnUgPD4g44OVIDsKKworciB8ICd+JyA8IOODqiB9ICRzbWFsbF95IDsKK3J5ICB9ICR2b3dlbCA+IOODqiB8ICd+eScgOworCityYSA8PiDjg6kgOworcmkgPD4g44OqIDsKK3J1IDw+IOODqyA7CityZSA8PiDjg6wgOworcm8gPD4g44OtIDsKKworemEgPD4g44K144KZIDsKK3ppIDw+IOOCu+OCmeOCoyA7Cit6dSA8PiDjgrnjgpkgOworemUgPD4g44K744KZIDsKK3pvIDw+IOOCveOCmSA7CisKK3NhIDw+IOOCtSA7CitzaSA8PiDjgrvjgqMgOworc3UgPD4g44K5IDsKK3NlIDw+IOOCuyA7CitzbyA8PiDjgr0gOworCitzaGEgPCDjgrfjg6MgOworc2hpJ35pJyA8IOOCt+OCoyA7ICMgbGl1CitzaHUgPCDjgrfjg6UgOworc2hlIDwg44K344KnIDsKK3NobyA8IOOCt+ODpyA7CitzaGkgPD4g44K3IDsKK3NoIH0gJHZvd2VsID4g44K3IHwgJ355JyA7CisKK3RhIDw+IOOCvyA7Cit0aSA8PiDjg4bjgqMgOwordHUgPD4g44OG44KlIDsKK3RlIDw+IOODhiA7Cit0byA8PiDjg4ggOworCit0c3UgPD4g44OEIDsKKworIyB2ICB9ICR2b3dlbCA+IOOCpuOCmSB8ICd+JyA7CisKKyMndn5hJyA8IOOCpuOCmeOCoSA7ICMgbGl1CisjJ3Z+aScgPCDjgqbjgpnjgqMgOyAjIGxpdQorIyd2fmUnIDwg44Km44KZ44KnIDsgIyBsaXUKKyMndn5vJyA8IOOCpuOCmeOCqSA7ICMgbGl1Cit2dSA8PiDjgqbjgpkgOworCit1IDw+IOOCpiA7CisKKyMgdyAgfSAkdm93ZWwgPiDjgqYgfCAnficgOworCit3YSA8PiDjg68gOword2kgPD4g44OwIDsKK3d1ID4g44KmIDsKK3dlIDw+IOODsSA7Cit3byA8PiDjg7IgOworCit5YSA8PiDjg6QgOworeWkgPiDjgqQgOworeXUgPD4g44OmIDsKK3llID4g44KoIDsKK3lvIDw+IOODqCA7CisKKyMgZG91YmxlIGNvbnNvbmFudHMKKworI3NwZWNpYWxzCitzIH0gc2ggPiDjg4MgOwordCB9IGNoID4g44ODIDsKKworI3ZvaWNlZAorCitqIH0gaiA8PiDjg4MgfSAkal9zdGFydCA7CitiIH0gYiA8PiDjg4MgfSBbJGhfc3RhcnQkZl9zdGFydF0gJHZvaWNlOworZCB9IGQgPD4g44ODIH0gJHRfc3RhcnQgJHZvaWNlOworZyB9IGcgPD4g44ODIH0gJGtfc3RhcnQgJHZvaWNlOworcCB9IHAgPD4g44ODIH0gWyRoX3N0YXJ0JGZfc3RhcnRdICRzZW1pdm9pY2U7CisjIHYgfSB2IDw+IOODgyB9IFvjg6/jg7Djgqbjg7Hjg7LjgYZdICAkdm9pY2UgOworeiB9IHogPD4g44ODIH0gJHNfc3RhcnQgJHZvaWNlOwordiB9IHYgPD4g44ODIH0gJHZfc3RhcnQ7CisKKyMgbm9ybWFsCisKK2sgfSBrIDw+IOODgyB9ICRrX3N0YXJ0IDsKK20gfSBtIDw+IOODgyB9ICRtX3N0YXJ0IDsKK24gfSBuIDw+IOODgyB9ICRuX3N0YXJ0IDsKK2ggfSBoIDw+IOODgyB9ICRoX3N0YXJ0IDsKK2YgfSBmIDw+IOODgyB9ICRmX3N0YXJ0IDsKK3IgfSByIDw+IOODgyB9ICRyX3N0YXJ0IDsKK3QgfSB0IDw+IOODgyB9ICR0X3N0YXJ0IDsKK3MgfSBzIDw+IOODgyB9ICRzX3N0YXJ0IDsKKwordyB9IHcgIDw+IOODgyB9ICR3X3N0YXJ0OworeSB9IHkgPD4g44ODIH0gJHlfc3RhcnQ7CisKKyMgY29tcGxldGVuZXNzIAoreCB9IHggPiDjg4MgOworYyB9IGsgPiDjg4MgOworYyB9IGMgPiDjg4MgOworYyB9IHEgPiDjg4MgOworbCB9IGwgPiDjg4MgOworcSB9IHEgPiDjg4MgOworIyB5IH0geSA+IOODgyA7CisjIHcgfSB3ID4g44ODIDsKKworIyBwcm9sb25nZWQgdm93ZWwgbWFyay4gdGhpcyBpbmRpY2F0ZXMgYSBkb3VibGluZyBvZgorIyB0aGUgcHJlY2VkaW5nIHZvd2VsIHNvdW5kCisKKyNhIDwgYSB7IOODvCA7ICMgbGl1CisjZSA8IGUgeyDjg7wgOyAjIGxpdQorI2kgPCBpIHsg44O8IDsgIyBsaXUKKyNvIDwgbyB7IOODvCA7ICMgbGl1CisjdSA8IHUgeyDjg7wgOyAjIGxpdQorCiskbWFjcm9uIDw+IOODvCA7CisKKyMgc21hbGwgZm9ybXMKKworJ35hJyA8PiDjgqEgOworJ35pJyA8PiDjgqMgOworJ351JyA8PiDjgqUgOworJ35lJyA8PiDjgqcgOworJ35vJyA8PiDjgqkgOworJ350c3UnIDw+IOODgyA7CisnfndhJyA8PiDjg64gOworJ355YScgPD4g44OjIDsKKyd+eWknID4g44KjIDsKKyd+eXUnIDw+IOODpSA7CisnfnllJyA+IOOCpyA7CisnfnlvJyA8PiDjg6cgOworCisjIGl0ZXJhdGlvbiBtYXJrcworIyBUT0RPOiBtYWtlIG1vcmUgYWNjdXJhdGUKKworaiAkMSA8IHNoICh5KiAkdm93ZWwpIHvjg70kdm9pY2UgOworZGogJDEgPCBjaCAoeSogJHZvd2VsKSB744O9JHZvaWNlIDsKK2R6ICQxIDwgdHMgKHkqICR2b3dlbCkge+ODvSR2b2ljZSA7CisKK2cgJDEgPCBrICh5KiAkdm93ZWwpIHvjg70kdm9pY2UgOworeiAkMSA8IHMgKHkqICR2b3dlbCkge+ODvSR2b2ljZSA7CitkICQxIDwgdCAoeSogJHZvd2VsKSB744O9JHZvaWNlIDsKK2ggJDEgPCBiICh5KiAkdm93ZWwpIHvjg70kdm9pY2UgOwordiAkMSA8IHcgKHkqICR2b3dlbCkge+ODvSR2b2ljZSA7CisKK3NoICQxIDwgc2ggKHkqICR2b3dlbCkge+ODvSR2b2ljZSA7CitqICQxIDwgaiAoeSogJHZvd2VsKSB744O9JHZvaWNlIDsKK2NoICQxIDwgY2ggKHkqICR2b3dlbCkge+ODvSR2b2ljZSA7CitkaiAkMSA8IGRqKHkqICR2b3dlbCkge+ODvSR2b2ljZSA7Cit0cyAkMSA8IHRzICh5KiAkdm93ZWwpIHvjg70kdm9pY2UgOworZHogJDEgPCBkeiAoeSogJHZvd2VsKSB744O9JHZvaWNlIDsKKworJDEgPCAoJGNvbnNvbmFudCB5KiAkdm93ZWwpIHvjg70kdm9pY2U/IDsKKyQxIDwgKC4pIHvjg70gJHZvaWNlPyA7ICMgb3RoZXJ3aXNlIHJlcGVhdCBsYXN0IGNoYXJhY3RlcgorIDwg44O9ICR2b2ljZT8gOyAjIGRlbGV0ZSBpZiBubyBjaGFyYWN0ZXJzIGZvdW5kCisKKyMgaC0gcnVsZTogbGVuZ3RoZW5zIHZvd2VsIGlmIG5vdCBmb2xsb3dlZCBieSBhIHZvd2VsCisKK1thZWlvdV0gfSBoID4g44O8IDsKKworIyBvbmUtd2F5IGxhdGluLSA+IGthbmEgcnVsZXMuIHRoZXNlIGRvIG5vdCBvY2N1ciBpbgorIyB3ZWxsLWZvcm1lZCByb21hamkgcmVwcmVzZW50aW5nIGFjdHVhbCBqYXBhbmVzZSB0ZXh0LgorIyB0aGVpciBwdXJwb3NlIGlzIHRvIG1ha2UgYWxsIHJvbWFqaSBtYXAgdG8ga2FuYSBvZgorIyBzb21lIHNvcnQuCisKKyMgdGhlIGZvbGxvd2luZyBhcmUgbm90IHJlYWxseSBuZWNlc3NhcnksIGJ1dCBwcm9kdWNlCisjIHNsaWdodGx5IG1vcmUgbmF0dXJhbCByZXN1bHRzLgorCitjeSA+IOOCu+OCoyA7CitkeSA+IOODhuOCmeOCoyA7CitoeSA+IOODkiA7CitzeSA+IOOCu+OCoyA7Cit0eSA+IOODhuOCoyA7Cit6eSA+IOOCu+OCmeOCoyA7CisKK2ggPiDjg5ggOworCisjIGlzb2xhdGVkIGNvbnNvbmFudHMgbGlzdGVkIGhlcmUgc28gYXMgbm90IHRvIG1hc2sKKyMgbG9uZ2VyIHJ1bGVzIGFib3ZlLgorCitjaCA+IOODgTsKK3NoID4g44K3IDsKK2R6ID4g44OE44KZIDsKK2RqID4g44OB44KZOworCitiID4g44OV44KZIDsKK2QgPiDjg4bjgpkgOworZyA+IOOCr+OCmSA7CitrID4g44KvIDsKK20gPiDjg6AgOworbicnIDwg44OzIH0gJG5fcXVvdGVyIDsKK24gPD4g44OzIDsKK3AgPiDjg5XjgpogOworciA+IOODqyA7CitzID4g44K5IDsKK3QgPiDjg4YgOworeSA+IOOCpCA7Cit6ID4g44K544KZIDsKK3YgPiDjgqbjgpkgOworCitmID4g44OVOworaiAgPiDjgrfjgpk7Cit3ID4g44KmOworCivDnyA+IHwgc3MgOworw6YgPiB8IGUgOworw7AgPiB8IGQgOworw7ggPiB8IHUgOworw74gPiB8IHRoIDsKKworIyBzaW1wbGUgc3Vic3RpdHV0aW9ucyB1c2luZyBiYWNrdXAKKworYyA+IHwgayA7CitsID4gfCByIDsKK3EgPiB8IGsgOworeCA+IHwga3MgOworCisjIH5+fiBFTkQgc2hhcmVkIHJ1bGVzIH5+fgorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEZpbmFsIGNsZWFudXAKKworJ34nID4gOyAjIGRlbGV0ZSBzdHJheSB0aWxkZXMgYmV0d2VlbiBsZXR0ZXJzCitbOkthdGFrYW5hOl0geyAnJyB9IFs6TGF0aW46XSA+IDsgIyBkZWxldGUgc3RyYXkgcXVvdGVzIGJldHdlZW4gbGV0dGVycworIyBbXHUwMkJFWzpOb25zcGFjaW5nIE1hcms6XS1bXHUzMDk5LVx1MzA5Q11dID4gOyAjIGRlbGV0ZSBhbnkgbm9uLXNwYWNpbmcgbWFya3MgdGhhdCB3ZSBkaWRuJ3QgdXNlCisKKzo6IE5GQyAoTkZEKSA7IAorOjogKFs6S2F0YWthbmE6XSBoYWxmd2lkdGgtZnVsbHdpZHRoKTsKKworIyBub3RlOiBhIGdsb2JhbCBmaWx0ZXIgaXMgbW9yZSBlZmZpY2llbnQsIGJ1dCBNVVNUIGluY2x1ZGUgYWxsIHNvdXJjZSBjaGFycyEhCisjOjogKFtcdTAwMDAtXHUwMDdFIFx1MzAwMVx1MzAwMiBcdTMwOTktXHUzMDlDIFx1MzBBMS1cdTMwRkMgXHVGRjYxLVx1RkY5RiBbOkxhdGluOl1bOkthdGFrYW5hOl0gWzpub25zcGFjaW5nIG1hcms6XV0pOworIyBNSU5JTUFMIEZJTFRFUiBHRU5FUkFURUQgRk9SOiBMYXRpbi1LYXRha2FuYSBCQUNLV0FSRAorOjogKCBbW1wgLX5cdTAwQTItXHUwMEEzXHUwMEE1LVx1MDBBNlx1MDBBQ1x1MDMwNFx1MjBBOVx1RkY2MS1cdUZGQkVcdUZGQzItXHVGRkM3XHVGRkNBLVx1RkZDRlx1RkZEMi1cdUZGRDdcdUZGREEtXHVGRkRDXHVGRkU4LVx1RkZFRV1bflx1MzAwMS1cdTMwMDJcdTMwNENcdTMwNEVcdTMwNTBcdTMwNTJcdTMwNTRcdTMwNTZcdTMwNThcdTMwNUFcdTMwNUNcdTMwNUVcdTMwNjBcdTMwNjJcdTMwNjVcdTMwNjdcdTMwNjlcdTMwNzAtXHUzMDcxXHUzMDczLVx1MzA3NFx1MzA3Ni1cdTMwNzdcdTMwNzktXHUzMDdBXHUzMDdDLVx1MzA3RFx1MzA5NFx1MzA5OS1cdTMwOUJcdTMwOUVcdTMwQTEtXHUzMEZBXHUzMEZDLVx1MzBGRV1dICkgOworCisjIGVvZgpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9UcmFuc2xpdGVyYXRvcl9NYWxheWFsYW1fSW50ZXJJbmRpYy50eHQgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL1RyYW5zbGl0ZXJhdG9yX01hbGF5YWxhbV9JbnRlckluZGljLnR4dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4zNzllZmUwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9UcmFuc2xpdGVyYXRvcl9NYWxheWFsYW1fSW50ZXJJbmRpYy50eHQKQEAgLTAsMCArMSw4OSBAQAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENvcHlyaWdodCAoYykgMTk5OS0yMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisjIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9BdHRpYy9UcmFuc2xpdGVyYXRvcl9NYWxheWFsYW1fSW50ZXJJbmRpYy50eHQsdiAkCisjICREYXRlOiAyMDAyLzAzLzAyIDAwOjI3OjI2ICQKKyMgJFJldmlzaW9uOiAxLjUgJAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMgTWFsYXlhbGFtLUludGVySW5kaWMKKyM6OiBORkQgKE5GQykgOworCitcdTBEMDI+XHVFMDAyOyAgICAgICMgU0lHTiBBTlVTVkFSQQorXHUwRDAzPlx1RTAwMzsgICAgICAjIFNJR04gVklTQVJHQQorXHUwRDA1Plx1RTAwNTsgICAgICAjIExFVFRFUiBBCitcdTBEMDY+XHVFMDA2OyAgICAgICMgTEVUVEVSIEFBCitcdTBEMDc+XHVFMDA3OyAgICAgICMgTEVUVEVSIEkKK1x1MEQwOD5cdUUwMDg7ICAgICAgIyBMRVRURVIgSUkKK1x1MEQwOT5cdUUwMDk7ICAgICAgIyBMRVRURVIgVQorXHUwRDBBPlx1RTAwQTsgICAgICAjIExFVFRFUiBVVQorXHUwRDBCPlx1RTAwQjsgICAgICAjIExFVFRFUiBWT0NBTElDIFIKK1x1MEQwQz5cdUUwMEM7ICAgICAgIyBMRVRURVIgVk9DQUxJQyBMCitcdTBEMEU+XHVFMDBFOyAgICAgICMgTEVUVEVSIEUKK1x1MEQwRj5cdUUwMEY7ICAgICAgIyBMRVRURVIgRUUKK1x1MEQxMD5cdUUwMTA7ICAgICAgIyBMRVRURVIgQUkKK1x1MEQxMj5cdUUwMTI7ICAgICAgIyBMRVRURVIgTworXHUwRDEzPlx1RTAxMzsgICAgICAjIExFVFRFUiBPTworXHUwRDE0Plx1RTAxNDsgICAgICAjIExFVFRFUiBBVQorXHUwRDE1Plx1RTAxNTsgICAgICAjIExFVFRFUiBLQQorXHUwRDE2Plx1RTAxNjsgICAgICAjIExFVFRFUiBLSEEKK1x1MEQxNz5cdUUwMTc7ICAgICAgIyBMRVRURVIgR0EKK1x1MEQxOD5cdUUwMTg7ICAgICAgIyBMRVRURVIgR0hBCitcdTBEMTk+XHVFMDE5OyAgICAgICMgTEVUVEVSIE5HQQorXHUwRDFBPlx1RTAxQTsgICAgICAjIExFVFRFUiBDQQorXHUwRDFCPlx1RTAxQjsgICAgICAjIExFVFRFUiBDSEEKK1x1MEQxQz5cdUUwMUM7ICAgICAgIyBMRVRURVIgSkEKK1x1MEQxRD5cdUUwMUQ7ICAgICAgIyBMRVRURVIgSkhBCitcdTBEMUU+XHVFMDFFOyAgICAgICMgTEVUVEVSIE5ZQQorXHUwRDFGPlx1RTAxRjsgICAgICAjIExFVFRFUiBUVEEKK1x1MEQyMD5cdUUwMjA7ICAgICAgIyBMRVRURVIgVFRIQQorXHUwRDIxPlx1RTAyMTsgICAgICAjIExFVFRFUiBEREEKK1x1MEQyMj5cdUUwMjI7ICAgICAgIyBMRVRURVIgRERIQQorXHUwRDIzPlx1RTAyMzsgICAgICAjIExFVFRFUiBOTkEKK1x1MEQyND5cdUUwMjQ7ICAgICAgIyBMRVRURVIgVEEKK1x1MEQyNT5cdUUwMjU7ICAgICAgIyBMRVRURVIgVEhBCitcdTBEMjY+XHVFMDI2OyAgICAgICMgTEVUVEVSIERBCitcdTBEMjc+XHVFMDI3OyAgICAgICMgTEVUVEVSIERIQQorXHUwRDI4Plx1RTAyODsgICAgICAjIExFVFRFUiBOQQorXHUwRDJBPlx1RTAyQTsgICAgICAjIExFVFRFUiBQQQorXHUwRDJCPlx1RTAyQjsgICAgICAjIExFVFRFUiBQSEEKK1x1MEQyQz5cdUUwMkM7ICAgICAgIyBMRVRURVIgQkEKK1x1MEQyRD5cdUUwMkQ7ICAgICAgIyBMRVRURVIgQkhBCitcdTBEMkU+XHVFMDJFOyAgICAgICMgTEVUVEVSIE1BCitcdTBEMkY+XHVFMDJGOyAgICAgICMgTEVUVEVSIFlBCitcdTBEMzA+XHVFMDMwOyAgICAgICMgTEVUVEVSIFJBCitcdTBEMzE+XHVFMDMxOyAgICAgICMgTEVUVEVSIFJSQQorXHUwRDMyPlx1RTAzMjsgICAgICAjIExFVFRFUiBMQQorXHUwRDMzPlx1RTAzMzsgICAgICAjIExFVFRFUiBMTEEKK1x1MEQzND5cdUUwMzQ7ICAgICAgIyBMRVRURVIgTExMQQorXHUwRDM1Plx1RTAzNTsgICAgICAjIExFVFRFUiBWQQorXHUwRDM2Plx1RTAzNjsgICAgICAjIExFVFRFUiBTSEEKK1x1MEQzNz5cdUUwMzc7ICAgICAgIyBMRVRURVIgU1NBCitcdTBEMzg+XHVFMDM4OyAgICAgICMgTEVUVEVSIFNBCitcdTBEMzk+XHVFMDM5OyAgICAgICMgTEVUVEVSIEhBCitcdTBEM0U+XHVFMDNFOyAgICAgICMgVk9XRUwgU0lHTiBBQQorXHUwRDNGPlx1RTAzRjsgICAgICAjIFZPV0VMIFNJR04gSQorXHUwRDQwPlx1RTA0MDsgICAgICAjIFZPV0VMIFNJR04gSUkKK1x1MEQ0MT5cdUUwNDE7ICAgICAgIyBWT1dFTCBTSUdOIFUKK1x1MEQ0Mj5cdUUwNDI7ICAgICAgIyBWT1dFTCBTSUdOIFVVCitcdTBENDM+XHVFMDQzOyAgICAgICMgVk9XRUwgU0lHTiBWT0NBTElDIFIKK1x1MEQ0Nj5cdUUwNDY7ICAgICAgIyBWT1dFTCBTSUdOIEUKK1x1MEQ0Nz5cdUUwNDc7ICAgICAgIyBWT1dFTCBTSUdOIEVFCitcdTBENDg+XHVFMDQ4OyAgICAgICMgVk9XRUwgU0lHTiBBSQorXHUwRDREPlx1RTA0RDsgICAgICAjIFNJR04gVklSQU1BCitcdTBENTc+XHVFMDU3OyAgICAgICMgQVUgTEVOR1RIIE1BUksKK1x1MEQ2MD5cdUUwNjA7ICAgICAgIyBMRVRURVIgVk9DQUxJQyBSUgorXHUwRDYxPlx1RTA2MTsgICAgICAjIExFVFRFUiBWT0NBTElDIExMCitcdTBENjY+XHVFMDY2OyAgICAgICMgRElHSVQgWkVSTworXHUwRDY3Plx1RTA2NzsgICAgICAjIERJR0lUIE9ORQorXHUwRDY4Plx1RTA2ODsgICAgICAjIERJR0lUIFRXTworXHUwRDY5Plx1RTA2OTsgICAgICAjIERJR0lUIFRIUkVFCitcdTBENkE+XHVFMDZBOyAgICAgICMgRElHSVQgRk9VUgorXHUwRDZCPlx1RTA2QjsgICAgICAjIERJR0lUIEZJVkUKK1x1MEQ2Qz5cdUUwNkM7ICAgICAgIyBESUdJVCBTSVgKK1x1MEQ2RD5cdUUwNkQ7ICAgICAgIyBESUdJVCBTRVZFTgorXHUwRDZFPlx1RTA2RTsgICAgICAjIERJR0lUIEVJR0hUCitcdTBENkY+XHVFMDZGOyAgICAgICMgRElHSVQgTklORQorIyAgICA6OiBORkMgKE5GRCkgOworIyBlb2YKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfT3JpeWFfSW50ZXJJbmRpYy50eHQgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL1RyYW5zbGl0ZXJhdG9yX09yaXlhX0ludGVySW5kaWMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmUyNmQwNWUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL1RyYW5zbGl0ZXJhdG9yX09yaXlhX0ludGVySW5kaWMudHh0CkBAIC0wLDAgKzEsOTcgQEAKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDb3B5cmlnaHQgKGMpIDE5OTktMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworIyBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQXR0aWMvVHJhbnNsaXRlcmF0b3JfT3JpeWFfSW50ZXJJbmRpYy50eHQsdiAkCisjICREYXRlOiAyMDAyLzA5LzE5IDE4OjExOjIzICQKKyMgJFJldmlzaW9uOiAxLjYgJAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMgT3JpeWEtSW50ZXJJbmRpYworIzo6IE5GRCAoTkZDKSA7CisjXHUwQjIxXHUwQjNDPlx1RTA1QzsjIExFVFRFUiBSUkEKKyNcdTBCMjJcdTBCM0M+XHVFMDVEOyMgTEVUVEVSIFJIQQorXHUwQjQ3XHUwQjU2Plx1RTA0ODsjIFZPV0VMIFNJR04gQUkKK1x1MEI0N1x1MEIzRT5cdUUwNEI7IyBWT1dFTCBTSUdOIE8KK1x1MEI0N1x1MEI1Nz5cdUUwNEM7IyBWT1dFTCBTSUdOIEFVCisKK1x1MEIwMT5cdUUwMDE7ICAgICAgIyBTSUdOIENBTkRSQUJJTkRVCitcdTBCMDI+XHVFMDAyOyAgICAgICMgU0lHTiBBTlVTVkFSQQorXHUwQjAzPlx1RTAwMzsgICAgICAjIFNJR04gVklTQVJHQQorXHUwQjA1Plx1RTAwNTsgICAgICAjIExFVFRFUiBBCitcdTBCMDY+XHVFMDA2OyAgICAgICMgTEVUVEVSIEFBCitcdTBCMDc+XHVFMDA3OyAgICAgICMgTEVUVEVSIEkKK1x1MEIwOD5cdUUwMDg7ICAgICAgIyBMRVRURVIgSUkKK1x1MEIwOT5cdUUwMDk7ICAgICAgIyBMRVRURVIgVQorXHUwQjBBPlx1RTAwQTsgICAgICAjIExFVFRFUiBVVQorXHUwQjBCPlx1RTAwQjsgICAgICAjIExFVFRFUiBWT0NBTElDIFIKK1x1MEIwQz5cdUUwMEM7ICAgICAgIyBMRVRURVIgVk9DQUxJQyBMCitcdTBCMEY+XHVFMDBGOyAgICAgICMgTEVUVEVSIEUKK1x1MEIxMD5cdUUwMTA7ICAgICAgIyBMRVRURVIgQUkKK1x1MEIxMz5cdUUwMTM7ICAgICAgIyBMRVRURVIgTworXHUwQjE0Plx1RTAxNDsgICAgICAjIExFVFRFUiBBVQorXHUwQjE1Plx1RTAxNTsgICAgICAjIExFVFRFUiBLQQorXHUwQjE2Plx1RTAxNjsgICAgICAjIExFVFRFUiBLSEEKK1x1MEIxNz5cdUUwMTc7ICAgICAgIyBMRVRURVIgR0EKK1x1MEIxOD5cdUUwMTg7ICAgICAgIyBMRVRURVIgR0hBCitcdTBCMTk+XHVFMDE5OyAgICAgICMgTEVUVEVSIE5HQQorXHUwQjFBPlx1RTAxQTsgICAgICAjIExFVFRFUiBDQQorXHUwQjFCPlx1RTAxQjsgICAgICAjIExFVFRFUiBDSEEKK1x1MEIxQz5cdUUwMUM7ICAgICAgIyBMRVRURVIgSkEKK1x1MEIxRD5cdUUwMUQ7ICAgICAgIyBMRVRURVIgSkhBCitcdTBCMUU+XHVFMDFFOyAgICAgICMgTEVUVEVSIE5ZQQorXHUwQjFGPlx1RTAxRjsgICAgICAjIExFVFRFUiBUVEEKK1x1MEIyMD5cdUUwMjA7ICAgICAgIyBMRVRURVIgVFRIQQorXHUwQjIxPlx1RTAyMTsgICAgICAjIExFVFRFUiBEREEKK1x1MEIyMj5cdUUwMjI7ICAgICAgIyBMRVRURVIgRERIQQorXHUwQjIzPlx1RTAyMzsgICAgICAjIExFVFRFUiBOTkEKK1x1MEIyND5cdUUwMjQ7ICAgICAgIyBMRVRURVIgVEEKK1x1MEIyNT5cdUUwMjU7ICAgICAgIyBMRVRURVIgVEhBCitcdTBCMjY+XHVFMDI2OyAgICAgICMgTEVUVEVSIERBCitcdTBCMjc+XHVFMDI3OyAgICAgICMgTEVUVEVSIERIQQorXHUwQjI4Plx1RTAyODsgICAgICAjIExFVFRFUiBOQQorXHUwQjJBPlx1RTAyQTsgICAgICAjIExFVFRFUiBQQQorXHUwQjJCPlx1RTAyQjsgICAgICAjIExFVFRFUiBQSEEKK1x1MEIyQz5cdUUwMkM7ICAgICAgIyBMRVRURVIgQkEKK1x1MEIyRD5cdUUwMkQ7ICAgICAgIyBMRVRURVIgQkhBCitcdTBCMkU+XHVFMDJFOyAgICAgICMgTEVUVEVSIE1BCitcdTBCMkY+XHVFMDJGOyAgICAgICMgTEVUVEVSIFlBCitcdTBCMzA+XHVFMDMwOyAgICAgICMgTEVUVEVSIFJBCitcdTBCMzI+XHVFMDMyOyAgICAgICMgTEVUVEVSIExBCitcdTBCMzM+XHVFMDMzOyAgICAgICMgTEVUVEVSIExMQQorXHUwQjM2Plx1RTAzNjsgICAgICAjIExFVFRFUiBTSEEKK1x1MEIzNz5cdUUwMzc7ICAgICAgIyBMRVRURVIgU1NBCitcdTBCMzg+XHVFMDM4OyAgICAgICMgTEVUVEVSIFNBCitcdTBCMzk+XHVFMDM5OyAgICAgICMgTEVUVEVSIEhBCitcdTBCM0M+XHVFMDNDOyAgICAgICMgU0lHTiBOVUtUQQorXHUwQjNEPlx1RTAzRDsgICAgICAjIFNJR04gQVZBR1JBSEEKK1x1MEIzRT5cdUUwM0U7ICAgICAgIyBWT1dFTCBTSUdOIEFBCitcdTBCM0Y+XHVFMDNGOyAgICAgICMgVk9XRUwgU0lHTiBJCitcdTBCNDA+XHVFMDQwOyAgICAgICMgVk9XRUwgU0lHTiBJSQorXHUwQjQxPlx1RTA0MTsgICAgICAjIFZPV0VMIFNJR04gVQorXHUwQjQyPlx1RTA0MjsgICAgICAjIFZPV0VMIFNJR04gVVUKK1x1MEI0Mz5cdUUwNDM7ICAgICAgIyBWT1dFTCBTSUdOIFZPQ0FMSUMgUgorXHUwQjQ3Plx1RTA0NzsgICAgICAjIFZPV0VMIFNJR04gRQorIworXHUwQjREPlx1RTA0RDsgICAgICAjIFNJR04gVklSQU1BCitcdTBCNTY+XHVFMDU2OyAgICAgICMgQUkgTEVOR1RIIE1BUksKK1x1MEI1Nz5cdUUwNTc7ICAgICAgIyBBVSBMRU5HVEggTUFSSworXHUwOTY0Plx1ZTA2NDsgICAgICAjIERBTkRBCitcdTA5NjU+XHVlMDY1OyAgICAgICMgRE9VQkxFIERBTkRBCisjCitcdTBCNUY+XHVFMDVGOyAgICAgICMgTEVUVEVSIFlZQQorXHUwQjYwPlx1RTA2MDsgICAgICAjIExFVFRFUiBWT0NBTElDIFJSCitcdTBCNjE+XHVFMDYxOyAgICAgICMgTEVUVEVSIFZPQ0FMSUMgTEwKK1x1MEI2Nj5cdUUwNjY7ICAgICAgIyBESUdJVCBaRVJPCitcdTBCNjc+XHVFMDY3OyAgICAgICMgRElHSVQgT05FCitcdTBCNjg+XHVFMDY4OyAgICAgICMgRElHSVQgVFdPCitcdTBCNjk+XHVFMDY5OyAgICAgICMgRElHSVQgVEhSRUUKK1x1MEI2QT5cdUUwNkE7ICAgICAgIyBESUdJVCBGT1VSCitcdTBCNkI+XHVFMDZCOyAgICAgICMgRElHSVQgRklWRQorXHUwQjZDPlx1RTA2QzsgICAgICAjIERJR0lUIFNJWAorXHUwQjZEPlx1RTA2RDsgICAgICAjIERJR0lUIFNFVkVOCitcdTBCNkU+XHVFMDZFOyAgICAgICMgRElHSVQgRUlHSFQKK1x1MEI2Rj5cdUUwNkY7ICAgICAgIyBESUdJVCBOSU5FCitcdTBCNzA+XHVlMDdCOyAgICAgICMgSVNTSEFSCisjICAgIDo6IE5GQyAoTkZEKSA7CisjIGVvZgpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9UcmFuc2xpdGVyYXRvcl9UYW1pbF9JbnRlckluZGljLnR4dCBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfVGFtaWxfSW50ZXJJbmRpYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMGFiOWY0MAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfVGFtaWxfSW50ZXJJbmRpYy50eHQKQEAgLTAsMCArMSw4MCBAQAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENvcHlyaWdodCAoYykgMTk5OS0yMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisjIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9BdHRpYy9UcmFuc2xpdGVyYXRvcl9UYW1pbF9JbnRlckluZGljLnR4dCx2ICQKKyMgJERhdGU6IDIwMDIvMDcvMjUgMjE6MjA6MjYgJAorIyAkUmV2aXNpb246IDEuOCAkCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBUYW1pbC1JbnRlckluZGljCisjOjogTkZEIChORkMpIDsKKworXHUwQkM2XHUwQkJFPlx1RTA0QTsjIFZPV0VMIFNJR04gTworXHUwQkM3XHUwQkJFPlx1RTA0QjsjIFZPV0VMIFNJR04gT08KK1x1MEJDNlx1MEJENz5cdUUwNEM7IyBWT1dFTCBTSUdOIEFVCitcdTBCOTJcdTBCRDc+XHVFMDE0OyMgTEVUVEVSIEFVCisKK1x1MEI4Mj5cdUUwMDI7ICAgICAgIyBTSUdOIEFOVVNWQVJBCitcdTBCODM+XHVFMDAzOyAgICAgICMgU0lHTiBWSVNBUkdBCitcdTBCODU+XHVFMDA1OyAgICAgICMgTEVUVEVSIEEKK1x1MEI4Nj5cdUUwMDY7ICAgICAgIyBMRVRURVIgQUEKK1x1MEI4Nz5cdUUwMDc7ICAgICAgIyBMRVRURVIgSQorXHUwQjg4Plx1RTAwODsgICAgICAjIExFVFRFUiBJSQorXHUwQjg5Plx1RTAwOTsgICAgICAjIExFVFRFUiBVCitcdTBCOEE+XHVFMDBBOyAgICAgICMgTEVUVEVSIFVVCitcdTBCOEU+XHVFMDBFOyAgICAgICMgTEVUVEVSIEUKK1x1MEI4Rj5cdUUwMEY7ICAgICAgIyBMRVRURVIgRUUKK1x1MEI5MD5cdUUwMTA7ICAgICAgIyBMRVRURVIgQUkKK1x1MEI5Mj5cdUUwMTI7ICAgICAgIyBMRVRURVIgTworXHUwQjkzPlx1RTAxMzsgICAgICAjIExFVFRFUiBPTworXHUwQjk0Plx1RTAxNDsJICAgICMgTEVUVEVSIEFVCitcdTBCOTU+XHVFMDE1OyAgICAgICMgTEVUVEVSIEtBCitcdTBCOTk+XHVFMDE5OyAgICAgICMgTEVUVEVSIE5HQQorXHUwQjlBPlx1RTAxQTsgICAgICAjIExFVFRFUiBDQQorXHUwQjlDPlx1RTAxQzsgICAgICAjIExFVFRFUiBKQQorXHUwQjlFPlx1RTAxRTsgICAgICAjIExFVFRFUiBOWUEKK1x1MEI5Rj5cdUUwMUY7ICAgICAgIyBMRVRURVIgVFRBCitcdTBCQTM+XHVFMDIzOyAgICAgICMgTEVUVEVSIE5OQQorXHUwQkE0Plx1RTAyNDsgICAgICAjIExFVFRFUiBUQQorXHUwQkE4Plx1RTAyODsgICAgICAjIExFVFRFUiBOQQorXHUwQkE5Plx1RTAyOTsgICAgICAjIExFVFRFUiBOTk5BCitcdTBCQUE+XHVFMDJBOyAgICAgICMgTEVUVEVSIFBBCitcdTBCQUU+XHVFMDJFOyAgICAgICMgTEVUVEVSIE1BCitcdTBCQUY+XHVFMDJGOyAgICAgICMgTEVUVEVSIFlBCitcdTBCQjA+XHVFMDMwOyAgICAgICMgTEVUVEVSIFJBCitcdTBCQjE+XHVFMDMxOyAgICAgICMgTEVUVEVSIFJSQQorXHUwQkIyPlx1RTAzMjsgICAgICAjIExFVFRFUiBMQQorXHUwQkIzPlx1RTAzMzsgICAgICAjIExFVFRFUiBMTEEKK1x1MEJCND5cdUUwMzQ7ICAgICAgIyBMRVRURVIgTExMQQorXHUwQkI1Plx1RTAzNTsgICAgICAjIExFVFRFUiBWQQorXHUwQkI3Plx1RTAzNzsgICAgICAjIExFVFRFUiBTU0EKK1x1MEJCOD5cdUUwMzg7ICAgICAgIyBMRVRURVIgU0EKK1x1MEJCOT5cdUUwMzk7ICAgICAgIyBMRVRURVIgSEEKK1x1MEJCRT5cdUUwM0U7ICAgICAgIyBWT1dFTCBTSUdOIEFBCitcdTBCQkY+XHVFMDNGOyAgICAgICMgVk9XRUwgU0lHTiBJCitcdTBCQzA+XHVFMDQwOyAgICAgICMgVk9XRUwgU0lHTiBJSQorXHUwQkMxPlx1RTA0MTsgICAgICAjIFZPV0VMIFNJR04gVQorXHUwQkMyPlx1RTA0MjsgICAgICAjIFZPV0VMIFNJR04gVVUKK1x1MEJDNj5cdUUwNDY7ICAgICAgIyBWT1dFTCBTSUdOIEUKK1x1MEJDNz5cdUUwNDc7ICAgICAgIyBWT1dFTCBTSUdOIEVFCitcdTBCQzg+XHVFMDQ4OyAgICAgICMgVk9XRUwgU0lHTiBBSQorCitcdTBCQ0Q+XHVFMDREOyAgICAgICMgU0lHTiBWSVJBTUEKK1x1MEJENz5cdUUwNTc7ICAgICAgIyBBVSBMRU5HVEggTUFSSworXHUwQkU3Plx1RTA2NzsgICAgICAjIERJR0lUIE9ORQorXHUwQkU4Plx1RTA2ODsgICAgICAjIERJR0lUIFRXTworXHUwQkU5Plx1RTA2OTsgICAgICAjIERJR0lUIFRIUkVFCitcdTBCRUE+XHVFMDZBOyAgICAgICMgRElHSVQgRk9VUgorXHUwQkVCPlx1RTA2QjsgICAgICAjIERJR0lUIEZJVkUKK1x1MEJFQz5cdUUwNkM7ICAgICAgIyBESUdJVCBTSVgKK1x1MEJFRD5cdUUwNkQ7ICAgICAgIyBESUdJVCBTRVZFTgorXHUwQkVFPlx1RTA2RTsgICAgICAjIERJR0lUIEVJR0hUCitcdTBCRUY+XHVFMDZGOyAgICAgICMgRElHSVQgTklORQorXHUwQkYwPlx1RTA2N1x1RTA2NjsgICAgICAgICAgCSMgVU5NQVBQRUQgVGFtaWwtSW50ZXJJbmRpYzogTlVNQkVSIFRFTgorXHUwQkYxPlx1RTA2N1x1RTA2Nlx1RTA2NjsgICAgIAkjIFVOTUFQUEVEIFRhbWlsLUludGVySW5kaWM6IE5VTUJFUiBPTkUgSFVORFJFRAorXHUwQkYyPlx1RTA2N1x1RTA2Nlx1RTA2Nlx1RTA2NjsjIFVOTUFQUEVEIFRhbWlsLUludGVySW5kaWM6IE5VTUJFUiBPTkUgVEhPVVNBTkQKKzA+XHVlMDY2OworCisjICAgIDo6IE5GQyAoTkZEKSA7CisjIGVvZgpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9UcmFuc2xpdGVyYXRvcl9UZWx1Z3VfSW50ZXJJbmRpYy50eHQgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL1RyYW5zbGl0ZXJhdG9yX1RlbHVndV9JbnRlckluZGljLnR4dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5iYjA3ZWRmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9UcmFuc2xpdGVyYXRvcl9UZWx1Z3VfSW50ZXJJbmRpYy50eHQKQEAgLTAsMCArMSw5NCBAQAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENvcHlyaWdodCAoYykgMTk5OS0yMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisjIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9BdHRpYy9UcmFuc2xpdGVyYXRvcl9UZWx1Z3VfSW50ZXJJbmRpYy50eHQsdiAkCisjICREYXRlOiAyMDAyLzA4LzE0IDAwOjQwOjU4ICQKKyMgJFJldmlzaW9uOiAxLjcgJAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMgVGVsdWd1LUludGVySW5kaWMKKyM6OiBORkQgKE5GQykgOworXHUwYzQ2XHUwYzRkXHUwYzU2Plx1ZTA0OFx1ZTA0ZDsKK1x1MEM0Nlx1MEM1Nj5cdUUwNDg7IyBWT1dFTCBTSUdOIEFJCitcdTBDMDE+XHVFMDAxOyAgICAgICMgU0lHTiBDQU5EUkFCSU5EVQorXHUwQzAyPlx1RTAwMjsgICAgICAjIFNJR04gQU5VU1ZBUkEKK1x1MEMwMz5cdUUwMDM7ICAgICAgIyBTSUdOIFZJU0FSR0EKK1x1MEMwNT5cdUUwMDU7ICAgICAgIyBMRVRURVIgQQorXHUwQzA2Plx1RTAwNjsgICAgICAjIExFVFRFUiBBQQorXHUwQzA3Plx1RTAwNzsgICAgICAjIExFVFRFUiBJCitcdTBDMDg+XHVFMDA4OyAgICAgICMgTEVUVEVSIElJCitcdTBDMDk+XHVFMDA5OyAgICAgICMgTEVUVEVSIFUKK1x1MEMwQT5cdUUwMEE7ICAgICAgIyBMRVRURVIgVVUKK1x1MEMwQj5cdUUwMEI7ICAgICAgIyBMRVRURVIgVk9DQUxJQyBSCitcdTBDMEM+XHVFMDBDOyAgICAgICMgTEVUVEVSIFZPQ0FMSUMgTAorXHUwQzBFPlx1RTAwRTsgICAgICAjIExFVFRFUiBFCitcdTBDMEY+XHVFMDBGOyAgICAgICMgTEVUVEVSIEVFCitcdTBDMTA+XHVFMDEwOyAgICAgICMgTEVUVEVSIEFJCitcdTBDMTI+XHVFMDEyOyAgICAgICMgTEVUVEVSIE8KK1x1MEMxMz5cdUUwMTM7ICAgICAgIyBMRVRURVIgT08KK1x1MEMxND5cdUUwMTQ7ICAgICAgIyBMRVRURVIgQVUKK1x1MEMxNT5cdUUwMTU7ICAgICAgIyBMRVRURVIgS0EKK1x1MEMxNj5cdUUwMTY7ICAgICAgIyBMRVRURVIgS0hBCitcdTBDMTc+XHVFMDE3OyAgICAgICMgTEVUVEVSIEdBCitcdTBDMTg+XHVFMDE4OyAgICAgICMgTEVUVEVSIEdIQQorXHUwQzE5Plx1RTAxOTsgICAgICAjIExFVFRFUiBOR0EKK1x1MEMxQT5cdUUwMUE7ICAgICAgIyBMRVRURVIgQ0EKK1x1MEMxQj5cdUUwMUI7ICAgICAgIyBMRVRURVIgQ0hBCitcdTBDMUM+XHVFMDFDOyAgICAgICMgTEVUVEVSIEpBCitcdTBDMUQ+XHVFMDFEOyAgICAgICMgTEVUVEVSIEpIQQorXHUwQzFFPlx1RTAxRTsgICAgICAjIExFVFRFUiBOWUEKK1x1MEMxRj5cdUUwMUY7ICAgICAgIyBMRVRURVIgVFRBCitcdTBDMjA+XHVFMDIwOyAgICAgICMgTEVUVEVSIFRUSEEKK1x1MEMyMT5cdUUwMjE7ICAgICAgIyBMRVRURVIgRERBCitcdTBDMjI+XHVFMDIyOyAgICAgICMgTEVUVEVSIERESEEKK1x1MEMyMz5cdUUwMjM7ICAgICAgIyBMRVRURVIgTk5BCitcdTBDMjQ+XHVFMDI0OyAgICAgICMgTEVUVEVSIFRBCitcdTBDMjU+XHVFMDI1OyAgICAgICMgTEVUVEVSIFRIQQorXHUwQzI2Plx1RTAyNjsgICAgICAjIExFVFRFUiBEQQorXHUwQzI3Plx1RTAyNzsgICAgICAjIExFVFRFUiBESEEKK1x1MEMyOD5cdUUwMjg7ICAgICAgIyBMRVRURVIgTkEKK1x1MEMyQT5cdUUwMkE7ICAgICAgIyBMRVRURVIgUEEKK1x1MEMyQj5cdUUwMkI7ICAgICAgIyBMRVRURVIgUEhBCitcdTBDMkM+XHVFMDJDOyAgICAgICMgTEVUVEVSIEJBCitcdTBDMkQ+XHVFMDJEOyAgICAgICMgTEVUVEVSIEJIQQorXHUwQzJFPlx1RTAyRTsgICAgICAjIExFVFRFUiBNQQorXHUwQzJGPlx1RTAyRjsgICAgICAjIExFVFRFUiBZQQorXHUwQzMwPlx1RTAzMDsgICAgICAjIExFVFRFUiBSQQorXHUwQzMxPlx1RTAzMTsgICAgICAjIExFVFRFUiBSUkEKK1x1MEMzMj5cdUUwMzI7ICAgICAgIyBMRVRURVIgTEEKK1x1MEMzMz5cdUUwMzM7ICAgICAgIyBMRVRURVIgTExBCitcdTBDMzU+XHVFMDM1OyAgICAgICMgTEVUVEVSIFZBCitcdTBDMzY+XHVFMDM2OyAgICAgICMgTEVUVEVSIFNIQQorXHUwQzM3Plx1RTAzNzsgICAgICAjIExFVFRFUiBTU0EKK1x1MEMzOD5cdUUwMzg7ICAgICAgIyBMRVRURVIgU0EKK1x1MEMzOT5cdUUwMzk7ICAgICAgIyBMRVRURVIgSEEKK1x1MEMzRT5cdUUwM0U7ICAgICAgIyBWT1dFTCBTSUdOIEFBCitcdTBDM0Y+XHVFMDNGOyAgICAgICMgVk9XRUwgU0lHTiBJCitcdTBDNDA+XHVFMDQwOyAgICAgICMgVk9XRUwgU0lHTiBJSQorXHUwQzQxPlx1RTA0MTsgICAgICAjIFZPV0VMIFNJR04gVQorXHUwQzQyPlx1RTA0MjsgICAgICAjIFZPV0VMIFNJR04gVVUKK1x1MEM0Mz5cdUUwNDM7ICAgICAgIyBWT1dFTCBTSUdOIFZPQ0FMSUMgUgorXHUwQzQ0Plx1RTA0NDsgICAgICAjIFZPV0VMIFNJR04gVk9DQUxJQyBSUgorXHUwQzQ2Plx1RTA0NjsgICAgICAjIFZPV0VMIFNJR04gRQorXHUwQzQ3Plx1RTA0NzsgICAgICAjIFZPV0VMIFNJR04gRUUKK1x1MEM0QT5cdUUwNEE7ICAgICAgIyBWT1dFTCBTSUdOIE8KK1x1MEM0Qj5cdUUwNEI7ICAgICAgIyBWT1dFTCBTSUdOIE9PCitcdTBDNEM+XHVFMDRDOyAgICAgICMgVk9XRUwgU0lHTiBBVQorXHUwQzREPlx1RTA0RDsgICAgICAjIFNJR04gVklSQU1BCitcdTBDNTU+XHVFMDU1OyAgICAgICMgTEVOR1RIIE1BUksKK1x1MEM1Nj5cdUUwNTY7ICAgICAgIyBBSSBMRU5HVEggTUFSSworXHUwQzYwPlx1RTA2MDsgICAgICAjIExFVFRFUiBWT0NBTElDIFJSCitcdTBDNjE+XHVFMDYxOyAgICAgICMgTEVUVEVSIFZPQ0FMSUMgTEwKK1x1MEM2Nj5cdUUwNjY7ICAgICAgIyBESUdJVCBaRVJPCitcdTBDNjc+XHVFMDY3OyAgICAgICMgRElHSVQgT05FCitcdTBDNjg+XHVFMDY4OyAgICAgICMgRElHSVQgVFdPCitcdTBDNjk+XHVFMDY5OyAgICAgICMgRElHSVQgVEhSRUUKK1x1MEM2QT5cdUUwNkE7ICAgICAgIyBESUdJVCBGT1VSCitcdTBDNkI+XHVFMDZCOyAgICAgICMgRElHSVQgRklWRQorXHUwQzZDPlx1RTA2QzsgICAgICAjIERJR0lUIFNJWAorXHUwQzZEPlx1RTA2RDsgICAgICAjIERJR0lUIFNFVkVOCitcdTBDNkU+XHVFMDZFOyAgICAgICMgRElHSVQgRUlHSFQKK1x1MEM2Rj5cdUUwNkY7ICAgICAgIyBESUdJVCBOSU5FCisjICAgIDo6IE5GQyAoTkZEKSA7CisjIGVvZgpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9UcmFuc2xpdGVyYXRvcl9UaGFpTG9naWNhbF9MYXRpbi50eHQgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL1RyYW5zbGl0ZXJhdG9yX1RoYWlMb2dpY2FsX0xhdGluLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZWY4ZmY2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9UcmFuc2xpdGVyYXRvcl9UaGFpTG9naWNhbF9MYXRpbi50eHQKQEAgLTAsMCArMSwxOTEgQEAKK++7vyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDb3B5cmlnaHQgKGMpIDE5OTktMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworIyBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvQXR0aWMvVHJhbnNsaXRlcmF0b3JfVGhhaUxvZ2ljYWxfTGF0aW4udHh0LHYgJAorIyAkRGF0ZTogMjAwMi8wNy8yNiAxOTo1Njo1NSAkCisjICRSZXZpc2lvbjogMS41ICQKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIFRoYWktTGF0aW4KKyMgVGhpcyBzZXQgb2YgcnVsZXMgZm9sbG93cyBJU08gMTE5NDAKKyMJc2VlIGh0dHA6Ly9ob21lcGFnZS5tYWMuY29tL3NpcmJpbmtzL3BkZi9UaGFpLnIyLnBkZgorIyBleGNlcHQgdGhhdCB0aGF0IGRvZXMgbm90IG1lbnRpb24gYW4gaW1wbGljaXQgdm93ZWwsIHNvIHdlIHVzZSBvzKMKKyMKKyMgVGhlIHRyYW5zY3JpcHRpb24gaXMgZmFpcmx5IHVnbHksIHNvIHdlIG91Z2h0IHRvIGFsc28gZG8gdGhlIFVOR0VHTiB2ZXJzaW9uCisjCXNlZTogaHR0cDovL3d3dy5la2kuZWUvd2dycy9yb20xX3RoLnBkZgorIyBhbmQgcHJvYmFibHkgbWFrZSB0aGF0IHRoZSBtYWluIHZhcmlhbnQuCisKKyMgTm90ZTogdGhpcyBpcyBhbiBpbnRlcm5hbCBmaWxlLiBUaGUgTkZEL05GQyBpcyBoYW5kbGVkIGV4dGVybmFsbHksIGluIHRoZSBpbmRleAorIyBUaGUgaW5zZXJ0aW9uIG9mIHNwYWNlcyBiZXR3ZWVuIHdvcmRzLCB0aGUgcmV2ZXJzYWwgb2YgdGhlIHZvd2VscworIyBhbmQgdGhlIGNvbnZlcnNpb24gb2Ygc3BhY2UgdG8gc2VtaWNvbG9uIGFyZSBkb25lICpvdXRzaWRlKiBvZiB0aGVzZSBydWxlcy4KKyMgU28gYXMgZmFyIGFzIHRoZXNlIHJ1bGVzIGFyZSBjb25jZXJuZWQsIHRoZSB2b3dlbHMgYXJlIGluIGxvZ2ljYWwgb3JkZXIhCisKKyMgaW5zZXJ0IGltcGxpY2l0IHZvd2VsIChhbmQgcmVtb3ZlIGl0IGdvaW5nIHRoZSBvdGhlciB3YXkpCisjIENPTU1FTlRFRCBvdXQ6IHRoZSBpbXBsaWNpdCB2b3dlbCBwb3NpdGlvbnMgY2Fubm90IGJlIHByZWRpY3RlZCBhbGdvcml0aG1pY2FsbHkKKyMkY29uc29uYW50ID0gW+C4gS3guK5dOworIyR2b3dlbCA9IFvguLAt4Li64LmALeC5hOC5h107CisKKyN7ICggJGNvbnNvbmFudCApIH0gW14kdm93ZWwg7oCAXSA+IHwgJDEg7oCAIDsKKyPugIAgPiBvzKMgOworIyA8IG/MoyA7CisKKyRub3RBYm92ZSA9IFteXHB7Y2NjPTB9XHB7Y2NjPWFib3ZlfV0gOworJG5vdEJlbG93ID0gW15ccHtjY2M9MH1ccHtjY2M9YmVsb3d9XSA7CisKKyMgQ29uc29uYW50cworIyBXYXJuaW5nOiB0aGUgJ2gncyBuZWVkIHRvIGJlIGhhbmRsZWQgY2FyZWZ1bGx5IQorIyBXaGF0IHdlIHJlYWxseSB3YW50IHRvIHNheSBpcyB0aGUgZm9sbG93aW5nLCBidXQgd2UgY2FuJ3QKKyMgJG5vdEhBY2NlbnQgPSAhKCRub3RBYm92ZSogICDMhCB8ICRub3RCZWxvdyogICDMoykgOworCisjIFNpbmNlIHRoZSBvbmx5IGFjY2VudHMgd2UgY2FyZSBhYm91dCB0aGF0IGNvdWxkIGNhdXNlIHByb2JsZW1zIGFyZSBmcmVlLXN0YW5kaW5nIGFjY2VudHMgYmVsb3csIHdlIHVzZSBpbnN0ZWFkOgorJGZyZWVTdGFuZGluZ0JlbG93ID0gW1x1MDMyNSAgXTsKKyRoQWNjZW50ID0gIFsgICDMhCAgICAgzKNdCiskbm90SEFjY2VudDAgPSBbXiRmcmVlU3RhbmRpbmdCZWxvdyRoQWNjZW50XTsKKyRub3RIQWNjZW50MSA9ICRmcmVlU3RhbmRpbmdCZWxvdyBbXiRoQWNjZW50XTsKKwor4LirID4gaMyEIDsgIyBUSEFJIENIQVJBQ1RFUiBITyBISVAKKyDguKsgfCAkMSA8IGggKCRub3RBYm92ZSopICAgIMyEOyAjIGJhY2t3YXJkIGNhc2UsIGFjY291bnQgZm9yIHJlb3JkZXJpbmcKK+C4riA8PiBozKMgOyAjIFRIQUkgQ0hBUkFDVEVSIEhPIE5PS0hVSworCivguIIgPD4ga8yEaCA7ICMgVEhBSSBDSEFSQUNURVIgS0hPIEtIQUkKK+C4gyA8PiBrzKPMhGggOyAjIFRIQUkgQ0hBUkFDVEVSIEtITyBLSFVBVAor4LiFIDw+IGvKuWggOyAjIFRIQUkgQ0hBUkFDVEVSIEtITyBLSE9OICAKK+C4hiA8PiBrzKNoIDsgIyBUSEFJIENIQVJBQ1RFUiBLSE8gUkFLSEFORwor4LiEIDwga2ggfSAkbm90SEFjY2VudDEgOyAjIFRIQUkgQ0hBUkFDVEVSIEtITyBLSFdBSSAgCivguIQgPD4ga2ggfSAkbm90SEFjY2VudDAgOyAjIFRIQUkgQ0hBUkFDVEVSIEtITyBLSFdBSSAgCivguIEgPD4gayA7ICMgVEhBSSBDSEFSQUNURVIgS08gS0FJCisKK+C4oCA8PiBwzKNoIDsgIyBUSEFJIENIQVJBQ1RFUiBQSE8gU0FNUEhBTwor4LicIDw+IHDMhGggOyAjIFRIQUkgQ0hBUkFDVEVSIFBITyBQSFVORwor4LieIDwgcGggfSAkbm90SEFjY2VudDEgOyAjIFRIQUkgQ0hBUkFDVEVSIFBITyBQSEFOCivguJ4gPD4gcGggfSAkbm90SEFjY2VudDAgOyAjIFRIQUkgQ0hBUkFDVEVSIFBITyBQSEFOCivguJsgPD4gcCA7ICMgVEhBSSBDSEFSQUNURVIgUE8gUExBCisKK+C4iSA8PiBjzIRoIDsgIyBUSEFJIENIQVJBQ1RFUiBDSE8gQ0hJTkcKK+C4jCA8PiBjzKNoIDsgIyBUSEFJIENIQVJBQ1RFUiBDSE8gQ0hPRQor4LiKIDwgY2ggfSAkbm90SEFjY2VudDEgOyAjIFRIQUkgQ0hBUkFDVEVSIENITyBDSEFORwor4LiKIDw+IGNoIH0gJG5vdEhBY2NlbnQwIDsgIyBUSEFJIENIQVJBQ1RFUiBDSE8gQ0hBTkcKK+C4iCA8PiBjIDsgIyBUSEFJIENIQVJBQ1RFUiBDSE8gQ0hBTgorCivguJAgPD4gdMyjzIRoIDsgIyBUSEFJIENIQVJBQ1RFUiBUSE8gVEhBTgor4LiRIDw+IHTMsWggOyAjIFRIQUkgQ0hBUkFDVEVSIFRITyBOQU5HTU9OVEhPCivguJIgPD4gdMq5aCA7ICMgVEhBSSBDSEFSQUNURVIgVEhPIFBIVVRIQU8KK+C4liA8PiB0zIRoIDsgIyBUSEFJIENIQVJBQ1RFUiBUSE8gVEhVTkcKK+C4mCA8PiB0zKNoIDsgIyBUSEFJIENIQVJBQ1RFUiBUSE8gVEhPTkcKK+C4lyA8IHRoIH0gJG5vdEhBY2NlbnQxIDsgIyBUSEFJIENIQVJBQ1RFUiBUSE8gVEhBSEFOCivguJcgPD4gdGggfSAkbm90SEFjY2VudDAgOyAjIFRIQUkgQ0hBUkFDVEVSIFRITyBUSEFIQU4KKyNOb3RlOiBUTyBQQVRBSyBkZXZpYXRlcyBmcm9tIElTTyBzaW5jZSB0LWRvdHVuZGVyICsgaCB3b3VsZCBiZSBhbWJpZ291cy4gU28gaXQgdXNlcyB2ZXJ0aWNhbCB0aWNrLgor4LiPIDw+IHTMqSA7ICMgVEhBSSBDSEFSQUNURVIgVE8gUEFUQUsKK+C4lSA8PiB0IDsgIyBUSEFJIENIQVJBQ1RFUiBUTyBUQU8KKworIyBzaW5jZSB0aGVyZSBpcyBubyBzaW5nbGV0b24gZyAoZ2VuZXJhdGVkKSwgZG9uJ3Qgd29ycnkgYWJvdXQgdGhhdC4KK+C4hyA8PiBuZyA7ICMgVEhBSSBDSEFSQUNURVIgTkdPIE5HVQor4LiTIDw+IG7MoyA7ICMgVEhBSSBDSEFSQUNURVIgTk8gTkVOCivguJkgPD4gbiA7ICMgVEhBSSBDSEFSQUNURVIgTk8gTlUKKwor4LiNIDw+IHnMoyAgOyAjIFRIQUkgQ0hBUkFDVEVSIFlPIFlJTkcKK+C4jiA8PiBkzKMgOyAjIFRIQUkgQ0hBUkFDVEVSIERPIENIQURBCivguJQgPD4gZCA7ICMgVEhBSSBDSEFSQUNURVIgRE8gREVLCisKK+C4miA8PiBiIDsgIyBUSEFJIENIQVJBQ1RFUiBCTyBCQUlNQUkKK+C4nSA8PiBmzIQgOyAjIFRIQUkgQ0hBUkFDVEVSIEZPIEZBCisg4LidIHwgJDEgPCBmICgkbm90QWJvdmUqKSAgICDMhDsgIyBiYWNrd2FyZCBjYXNlLCBhY2NvdW50IGZvciByZW9yZGVyaW5nCisKK+C4oSA8PiBtIDsgIyBUSEFJIENIQVJBQ1RFUiBNTyBNQQor4LiiIDw+IHkgOyAjIFRIQUkgQ0hBUkFDVEVSIFlPIFlBSwor4LijIDw+IHIgOyAjIFRIQUkgQ0hBUkFDVEVSIFJPIFJVQQor4LikIDw+IHYgOyAjIFRIQUkgQ0hBUkFDVEVSIFJVCivguKYgPD4gxYIgOyAjIFRIQUkgQ0hBUkFDVEVSIExVCivguKcgPD4gdyA7ICMgVEhBSSBDSEFSQUNURVIgV08gV0FFTgorCivguKggPD4gc8yjzIQgOyAjIFRIQUkgQ0hBUkFDVEVSIFNPIFNBTEEqKioKKyDguKggfCAkMSA8IHMgICAgzKMgKCRub3RBYm92ZSopICAgIMyEOyAjIGJhY2t3YXJkIGNhc2UsIGFjY291bnQgZm9yIHJlb3JkZXJpbmcKK+C4qSA8PiBzzITKuSA7ICMgVEhBSSBDSEFSQUNURVIgU08gUlVTSQor4LiqID4gc8yEIDsgIyBUSEFJIENIQVJBQ1RFUiBTTyBTVUEqKioKKyDguKogfCAkMSA8IHMgKCRub3RBYm92ZSopICAgIMyEOyAjIGJhY2t3YXJkIGNhc2UsIGFjY291bnQgZm9yIHJlb3JkZXJpbmcKKwor4LisIDw+IGzMoyA7ICMgVEhBSSBDSEFSQUNURVIgTE8gQ0hVTEEKK+C4pSA8PiBsIDsgIyBUSEFJIENIQVJBQ1RFUiBMTyBMSU5HCivguJ8gPD4gZiA7ICMgVEhBSSBDSEFSQUNURVIgRk8gRkFOCisKK+C4rSA8PiB4IDsgIyBUSEFJIENIQVJBQ1RFUiBPIEFORwor4LiLIDw+IHMgOyAjIFRIQUkgQ0hBUkFDVEVSIFNPIFNPCisKKyMgdm93ZWxzCisKKyDguLEgPD4gYcyjIDsgIyBUSEFJIENIQVJBQ1RFUiBNQUkgSEFOLUFLQVQKKwor4LiyID4gYcyEIDsgIyBUSEFJIENIQVJBQ1RFUiBTQVJBIEFBCisg4LiyIHwgJDEgPCBhICgkbm90QWJvdmUqKSAgICDMhDsgIyBiYWNrd2FyZCBjYXNlLCBhY2NvdW50IGZvciByZW9yZGVyaW5nCisKKyMgV2UgZGV2aWF0ZSBmcm9tIElTTyBmb3IgU0FSQSBBTSBmb3IgZGlzYW1iaWd1YXRpb24KK+C4syA+IGEgIMyJOyAjIFRIQUkgQ0hBUkFDVEVSIFNBUkEgQU0KKyDguLMgfCAkMSA8IGEgKCRub3RBYm92ZSopICDMiSA7ICMgYmFja3dhcmQgY2FzZSwgYWNjb3VudCBmb3IgcmVvcmRlcmluZworCivguLAgPD4gYSA7ICMgVEhBSSBDSEFSQUNURVIgU0FSQSBBCisg4Li1IDw+IGnMhCA7ICMgVEhBSSBDSEFSQUNURVIgU0FSQSBJSQorICDguLUgfCAkMSA8IGkgKCRub3RBYm92ZSopICAgIMyEICA7ICMgYmFja3dhcmQgY2FzZSwgYWNjb3VudCBmb3IgcmVvcmRlcmluZworCisg4Li3IDw+IHXMo8yEIDsgIyBUSEFJIENIQVJBQ1RFUiBTQVJBIFVFRQorICDguLcgfCAkMSA8IHUgICDMoyAoJG5vdEFib3ZlKikgICAgzIQgIDsgIyBiYWNrd2FyZCBjYXNlLCBhY2NvdW50IGZvciByZW9yZGVyaW5nCisKKyDguLYgPD4gdcyjIDsgIyBUSEFJIENIQVJBQ1RFUiBTQVJBIFVFCisg4Li5IDw+IHXMhCA7ICMgVEhBSSBDSEFSQUNURVIgU0FSQSBVVQorIOC4uSB8ICQxIDwgdSAgKCRub3RBYm92ZSopICAgIMyEICA7ICMgYmFja3dhcmQgY2FzZSwgYWNjb3VudCBmb3IgcmVvcmRlcmluZworCisg4Li4IDw+IHUgOyAjIFRIQUkgQ0hBUkFDVEVSIFNBUkEgVQorCivguK8gPD4g4oChIDsgIyBUSEFJIENIQVJBQ1RFUiBQQUlZQU5OT0kKKworIyDguL8gPD4gWFhYIDsgIyBUSEFJIENVUlJFTkNZIFNZTUJPTCBCQUhUCisKK+C5gCA8PiBlIDsgIyBUSEFJIENIQVJBQ1RFUiBTQVJBIEUKK+C5gSA8PiDDpiA7ICMgVEhBSSBDSEFSQUNURVIgU0FSQSBBRQor4LmCIDw+IG8gOyAjIFRIQUkgQ0hBUkFDVEVSIFNBUkEgTwor4LmDIDw+IMSxIDsgIyBUSEFJIENIQVJBQ1RFUiBTQVJBIEFJIE1BSU1VQU4KK+C5hCA8PiBpzKMgOyAjIFRIQUkgQ0hBUkFDVEVSIFNBUkEgQUkgTUFJTUFMQUkKK+C5hSA8PiDJqCA7ICMgVEhBSSBDSEFSQUNURVIgTEFLS0hBTkdZQU8KKyDguYcgPD4gzIYgOyAjIFRIQUkgQ0hBUkFDVEVSIE1BSVRBSUtIVQorIOC5iCA8PiDMgCA7ICMgVEhBSSBDSEFSQUNURVIgTUFJIEVLCisg4LmJIDw+IMyCIDsgIyBUSEFJIENIQVJBQ1RFUiBNQUkgVEhPCisg4LmKIDw+IMyBIDsgIyBUSEFJIENIQVJBQ1RFUiBNQUkgVFJJCisg4LmLIDw+IMyMIDsgIyBUSEFJIENIQVJBQ1RFUiBNQUkgQ0hBVFRBV0EKKyDguYwgPD4gzJIgOyAjIFRIQUkgQ0hBUkFDVEVSIFRIQU5USEFLSEFUCisg4LmOIDw+ICd+JyA7ICMgVEhBSSBDSEFSQUNURVIgWUFNQUtLQU4KKworIyBXZSBkZXZpYXRlIGZyb20gSVNPIGZvciBkaXNhbWJpZ3VhdGlvbgorIOC5jSA8PiAgzIogOyAjIFRIQUkgQ0hBUkFDVEVSIE5JS0hBSElUCisKK+C5jyA8PiDCpyA7ICMgVEhBSSBDSEFSQUNURVIgRk9OR01BTgorCivguZAgPD4gMCA7ICMgVEhBSSBESUdJVCBaRVJPCivguZEgPD4gMSA7ICMgVEhBSSBESUdJVCBPTkUKK+C5kiA8PiAyIDsgIyBUSEFJIERJR0lUIFRXTwor4LmTIDw+IDMgOyAjIFRIQUkgRElHSVQgVEhSRUUKK+C5lCA8PiA0IDsgIyBUSEFJIERJR0lUIEZPVVIKK+C5lSA8PiA1IDsgIyBUSEFJIERJR0lUIEZJVkUKK+C5liA8PiA2IDsgIyBUSEFJIERJR0lUIFNJWAor4LmXIDw+IDcgOyAjIFRIQUkgRElHSVQgU0VWRU4KK+C5mCA8PiA4IDsgIyBUSEFJIERJR0lUIEVJR0hUCivguZkgPD4gOSA7ICMgVEhBSSBESUdJVCBOSU5FCisKK+C5miA8PiAnfHwnIDsgIyBUSEFJIENIQVJBQ1RFUiBBTkdLSEFOS0hVCisKK+C5myA8PiDCuyA7ICMgVEhBSSBDSEFSQUNURVIgS0hPTVVUCivguYYgPD4gwqsgOyAjIFRIQUkgQ0hBUkFDVEVSIE1BSVlBTU9LCisKKyMgbW92ZWQgZG93biB0byBtYWtlIHNob3J0ZXIgZmlyc3QKKyNOb3RlOiBQSElOVEhVIGRldmlhdGVzIGZyb20gSVNPIHNpbmNlIHVuZGVycmluZyBjYXVzZXMgY2Fub25pY2FsIHByb2JsZW1zLiBTbyBpdCB1c2VzIHNwYWNpbmcgdGljayBiZWxvdy4KKyDguLogPD4gy4wgOyAjIFRIQUkgQ0hBUkFDVEVSIFBISU5USFUKKyDguLQgPD4gaSA7ICMgVEhBSSBDSEFSQUNURVIgU0FSQSBJCisKKyMgZmFsbGJhY2tzCisKK3wgayA8IGcgOworfCBrIDwgaCA7Cit8IGMgPCBqIDsKK3wgayA8IHEgOworfCBzIDwgeiA7CisKKzo6IChsb3dlcik7CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL1RyYW5zbGl0ZXJhdG9yX1RoYWlfVGhhaUxvZ2ljYWwudHh0IGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9UcmFuc2xpdGVyYXRvcl9UaGFpX1RoYWlMb2dpY2FsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMGI0NGYwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9UcmFuc2xpdGVyYXRvcl9UaGFpX1RoYWlMb2dpY2FsLnR4dApAQCAtMCwwICsxLDMwIEBACivvu78jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ29weXJpZ2h0IChjKSAxOTk5LTIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyMgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0F0dGljL1RyYW5zbGl0ZXJhdG9yX1RoYWlfVGhhaUxvZ2ljYWwudHh0LHYgJAorIyAkRGF0ZTogMjAwMi8wNy8yNiAxOTo1Njo1NSAkCisjICRSZXZpc2lvbjogMS4zICQKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIFRoaXMgcmV2ZXJzZXMgdGhlIFRoYWkgTG9naWNhbE9yZGVyRXhjZXB0aW9uIHZvd2VscywgYW5kIGRvZXMgKHBhcnQgb2YpIHNwYWNlcworIyBUaGUgcnVsZXMgdGhhdCBjb252ZXJ0IHNwYWNlIGludG8gc2VtaWNvbG9uIGFyZSBpbiBhbm90aGVyIGZpbGU7CisjIHNpbmNlIHRoZXkgaGF2ZSB0byBjb21lIEJFRk9SRSB0aGUgYnJlYWsgaXRlcmF0b3IKKworJHRoYWkgPSBbWzp0aGFpOl0gXHUwRTAxLVx1MEUzQVx1MEU0MC1cdTBFNUJdIDsKKworIyBGaXJzdCBjb252ZXJ0IHRoZSBzZW1pY29sb24gYmFjaworCisnICcgIDwgJHRoYWkgeyAnOyAnICB9ICR0aGFpOworCisjIFJlbW92ZSBhbnkgb3RoZXIgc3BhY2VzIGJldHdlZW4gdGhhaSBsZXR0ZXJzCisKKzwgJHRoYWkgeyAnICcgfSAkdGhhaTsKKworIyBOb3cgdm93ZWxzCiskdGhhaV9yZXZlcnNpbmcgPSBbWzpMb2dpY2FsX09yZGVyX0V4Y2VwdGlvbjpdICYgJHRoYWldOworJHRoYWlfbm9uX3JldmVyc2luZyA9IFskdGhhaSAtICR0aGFpX3JldmVyc2luZyBdOworCisoICR0aGFpX3JldmVyc2luZyApICggJHRoYWlfbm9uX3JldmVyc2luZyApID4gJDIgJDE7CisjIG90aGVyIGRpcmVjdGlvbgorJDIgJDEgPCAoICR0aGFpX25vbl9yZXZlcnNpbmcgKSAoICR0aGFpX3JldmVyc2luZyApIDsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL1RyYW5zbGl0ZXJhdG9yX1RoYWlfVGhhaVNlbWkudHh0IGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9UcmFuc2xpdGVyYXRvcl9UaGFpX1RoYWlTZW1pLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODg2MmFiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9UcmFuc2xpdGVyYXRvcl9UaGFpX1RoYWlTZW1pLnR4dApAQCAtMCwwICsxLDE1IEBACivvu78jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ29weXJpZ2h0IChjKSAxOTk5LTIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyMgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0F0dGljL1RyYW5zbGl0ZXJhdG9yX1RoYWlfVGhhaVNlbWkudHh0LHYgJAorIyAkRGF0ZTogMjAwMi8wNy8yNiAxOTo1Njo1NSAkCisjICRSZXZpc2lvbjogMS4zICQKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIFRoZSBydWxlcyB0aGF0IGNvbnZlcnQgc3BhY2UgaW50byBzZW1pY29sb24gYXJlIGluIHRoaXMgZmlsZTsKKyMgc2luY2UgdGhleSBoYXZlIHRvIGNvbWUgQkVGT1JFIHRoZSBicmVhayBpdGVyYXRvci4KKworJHRoYWkgPSBbWzp0aGFpOl0gXHUwRTAxLVx1MEUzQVx1MEU0MC1cdTBFNUJdIDsKKworJHRoYWkgeyAnICcgfSAkdGhhaSA+ICc7ICcgOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfaW5kZXgudHh0IGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9UcmFuc2xpdGVyYXRvcl9pbmRleC50eHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZTAyM2U1NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvVHJhbnNsaXRlcmF0b3JfaW5kZXgudHh0CkBAIC0wLDAgKzEsMjQ4IEBACisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ29weXJpZ2h0IChjKSAxOTk5LTIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyMgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0F0dGljL1RyYW5zbGl0ZXJhdG9yX2luZGV4LnR4dCx2ICQKKyMgJERhdGU6IDIwMDIvMDkvMTkgMTg6MTE6MjMgJAorIyAkUmV2aXNpb246IDEuNDAgJAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjCisjIFRSQU5TTElURVJBVE9SIElOREVYIEZJTEUuICBUaGlzIGZpbGUgbGlzdHMgdGhlIG5vbi1hbGdvcml0aG1pYworIyBzeXN0ZW0gdHJhbnNsaXRlcmF0b3JzLiAgSXQgYWxsb3dzIGFyYml0cmFyeSBtYXBwaW5ncyBiZXR3ZWVuCisjIHRyYW5zbGl0ZXJhdG9yIElEcyBhbmQgZmlsZSBuYW1lcywgYW5kIGFsc28gYWxsb3dzIHRoZSBzeXN0ZW0gdG8KKyMgZGVmaW5lIGFsaWFzZXMgZm9yIHRyYW5zbGl0ZXJhdG9ycywgc28gdGhhdCAiTGF0aW4tSGFuZ3VsIiwgZm9yCisjIGV4YW1wbGUsIGNhbiBiZSBpbXBsZW1lbnRlZCB0cmFuc3BhcmVudGx5IGFzIHRoZSBjb21wb3VuZAorIyAiTGF0aW4tSmFtbztKYW1vLUhhbmd1bCIuICBJbnRlcm5hbCBJRHMgbWF5IGFsc28gYmUgZGVmaW5lZDsgdGhlc2UKKyMgYXJlIGludmlzaWJsZSB0byB0aGUgdXNlciwgYnV0IGNhbiBiZSBjb21wb3NlZCB0b2dldGhlciBieSB0aGUKKyMgc3lzdGVtIHRvIGNyZWF0ZSB2aXNpYmxlIHRyYW5zbGl0ZXJhdG9ycy4KKyMKKyMgQmxhbmsgbGluZXMgYW5kIGxpbmVzIGJlZ2lubmluZyB3aXRoICcjJyBhcmUgaWdub3JlZC4KKyMKKyMgTGluZXMgaW4gdGhpcyBmaWxlIGhhdmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgZm9ybXMgKHRleHQgbm90CisjIGVuY2xvc2VkIGJ5IDw+IGlzIGxpdGVyYWwpOgorIworIyAgIDxpZD46ZmlsZTo8cmVzb3VyY2U+OjxlbmNvZGluZz46PGRpcmVjdGlvbj4KKyMgICA8aWQ+OmludGVybmFsOjxyZXNvdXJjZT46PGVuY29kaW5nPjo8ZGlyZWN0aW9uPgorIyAgIDxpZD46YWxpYXM6PGdldEluc3RhbmNlQXJnPgorIworIyA8aWQ+IGlzIHRoZSBJRCBvZiB0aGUgc3lzdGVtIHRyYW5zbGl0ZXJhdG9yIGJlaW5nIGRlZmluZWQuICBUaGVzZQorIyBhcmUgcHVibGljIElEcyBlbnVtZXJhdGVkIGJ5IFRyYW5zbGl0ZXJhdG9yLmdldEF2YWlsYWJsZUlEcygpLAorIyB1bmxlc3MgdGhlIHNlY29uZCBmaWVsZCBpcyAiaW50ZXJuYWwiLgorIworIyA8cmVzb3VyY2U+IGlzIGEgUmVzb3VyY2VSZWFkZXIgcmVzb3VyY2UgbmFtZS4gIEN1cnJlbnRseSB0aGVzZSByZWZlcgorIyB0byBmaWxlIG5hbWVzIHVuZGVyIGNvbS9pYm0vdGV4dC9yZXNvdXJjZXMuICBUaGlzIHN0cmluZyBpcyBwYXNzZWQKKyMgZGlyZWN0bHkgdG8gUmVzb3VyY2VSZWFkZXIsIHRvZ2V0aGVyIHdpdGggPGVuY29kaW5nPi4KKyMKKyMgPGVuY29kaW5nPiBpcyB0aGUgY2hhcmFjdGVyIGVuY29kaW5nIHRvIHVzZSB3aGVuIHJlYWRpbmcgPHJlc291cmNlPjsKKyMgcGFzc2VkIGRpcmVjdGx5IHRvIFJlc291cmNlUmVhZGVyLiAgRS5nLiwgIlVURjgiLgorIworIyA8ZGlyZWN0aW9uPiBpcyBlaXRoZXIgIkZPUldBUkQiIG9yICJSRVZFUlNFIi4KKyMKKyMgPGdldEluc3RhbmNlQXJnPiBpcyBhIHN0cmluZyB0byBiZSBwYXNzZWQgZGlyZWN0bHkgdG8KKyMgVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoKS4gIFRoZSByZXR1cm5lZCBUcmFuc2xpdGVyYXRvciBvYmplY3QKKyMgdGhlbiBoYXMgaXRzIElEIGNoYW5nZWQgdG8gPGlkPiBhbmQgaXMgcmV0dXJuZWQuCisKKworIyBCaWRpcmVjdGlvbmFsIHJ1bGUgZmlsZXMKKworRnVsbHdpZHRoLUhhbGZ3aWR0aDpmaWxlOlRyYW5zbGl0ZXJhdG9yX0Z1bGx3aWR0aF9IYWxmd2lkdGgudHh0OlVURjg6Rk9SV0FSRAorSGFsZndpZHRoLUZ1bGx3aWR0aDpmaWxlOlRyYW5zbGl0ZXJhdG9yX0Z1bGx3aWR0aF9IYWxmd2lkdGgudHh0OlVURjg6UkVWRVJTRQorCitMYXRpbi1DeXJpbGxpYzpmaWxlOlRyYW5zbGl0ZXJhdG9yX0N5cmlsbGljX0xhdGluLnR4dDpVVEY4OlJFVkVSU0UKK0N5cmlsbGljLUxhdGluOmZpbGU6VHJhbnNsaXRlcmF0b3JfQ3lyaWxsaWNfTGF0aW4udHh0OlVURjg6Rk9SV0FSRAorCitMYXRpbi1IZWJyZXc6ZmlsZTpUcmFuc2xpdGVyYXRvcl9IZWJyZXdfTGF0aW4udHh0OlVURjg6UkVWRVJTRQorSGVicmV3LUxhdGluOmZpbGU6VHJhbnNsaXRlcmF0b3JfSGVicmV3X0xhdGluLnR4dDpVVEY4OkZPUldBUkQKKworTGF0aW4tQXJhYmljOmZpbGU6VHJhbnNsaXRlcmF0b3JfQXJhYmljX0xhdGluLnR4dDpVVEY4OlJFVkVSU0UKK0FyYWJpYy1MYXRpbjpmaWxlOlRyYW5zbGl0ZXJhdG9yX0FyYWJpY19MYXRpbi50eHQ6VVRGODpGT1JXQVJECisKK0hhbi1MYXRpbjpmaWxlOlRyYW5zbGl0ZXJhdG9yX0hhbl9MYXRpbi50eHQ6VVRGODpGT1JXQVJECisjTGF0aW4tSGFuOmZpbGU6VHJhbnNsaXRlcmF0b3JfSGFuX0xhdGluLnR4dDpVVEY4OlJFVkVSU0UgIyBubyByb3VuZCB0cmlwIQorTGF0aW4tSGFuOmFsaWFzOm51bGwKKworIyBDb21tZW50IHRoZXNlIG91dDsgdGhleSBhcmUgb25seSBmb3IgdGVzdGluZworIyBMYXRpbi1IYW4vZGVmaW5pdGlvbjpmaWxlOlRyYW5zbGl0ZXJhdG9yX0hhbl9MYXRpbl9EZWZpbml0aW9uLnR4dDpVVEY4OlJFVkVSU0UKKyMgSGFuLUxhdGluL2RlZmluaXRpb246ZmlsZTpUcmFuc2xpdGVyYXRvcl9IYW5fTGF0aW5fRGVmaW5pdGlvbi50eHQ6VVRGODpGT1JXQVJECisKKyNMYXRpbi1IYW4vRURJQ1Q6ZmlsZTpUcmFuc2xpdGVyYXRvcl9IYW5fTGF0aW5fRURJQ1QudHh0OlVURjg6UkVWRVJTRQorI0hhbi1MYXRpbi9FRElDVDpmaWxlOlRyYW5zbGl0ZXJhdG9yX0hhbl9MYXRpbl9FRElDVC50eHQ6VVRGODpGT1JXQVJECisKK0xhdGluLUdyZWVrOmZpbGU6VHJhbnNsaXRlcmF0b3JfR3JlZWtfTGF0aW4udHh0OlVURjg6UkVWRVJTRQorR3JlZWstTGF0aW46ZmlsZTpUcmFuc2xpdGVyYXRvcl9HcmVla19MYXRpbi50eHQ6VVRGODpGT1JXQVJECisKK0xhdGluLUdyZWVrL1VOR0VHTjpmaWxlOlRyYW5zbGl0ZXJhdG9yX0dyZWVrX0xhdGluX1VOR0VHTi50eHQ6VVRGODpSRVZFUlNFCitHcmVlay1MYXRpbi9VTkdFR046ZmlsZTpUcmFuc2xpdGVyYXRvcl9HcmVla19MYXRpbl9VTkdFR04udHh0OlVURjg6Rk9SV0FSRAorCitMYXRpbi1LYXRha2FuYTpmaWxlOlRyYW5zbGl0ZXJhdG9yX0xhdGluX0thdGFrYW5hLnR4dDpVVEY4OkZPUldBUkQKK0thdGFrYW5hLUxhdGluOmZpbGU6VHJhbnNsaXRlcmF0b3JfTGF0aW5fS2F0YWthbmEudHh0OlVURjg6UkVWRVJTRQorCitMYXRpbi1IaXJhZ2FuYTpmaWxlOlRyYW5zbGl0ZXJhdG9yX0hpcmFnYW5hX0xhdGluLnR4dDpVVEY4OlJFVkVSU0UKK0hpcmFnYW5hLUxhdGluOmZpbGU6VHJhbnNsaXRlcmF0b3JfSGlyYWdhbmFfTGF0aW4udHh0OlVURjg6Rk9SV0FSRAorCisjVGhhaSBTdHVmZjogd2lsbCBjaGFuZ2UgaWYgd2UgZ2V0IFxiIGludG8gVHJhbnNsaXRlcmF0b3IKKworVGhhaS1UaGFpU2VtaTppbnRlcm5hbDpUcmFuc2xpdGVyYXRvcl9UaGFpX1RoYWlTZW1pLnR4dDpVVEY4OkZPUldBUkQKKworVGhhaS1UaGFpTG9naWNhbDppbnRlcm5hbDpUcmFuc2xpdGVyYXRvcl9UaGFpX1RoYWlMb2dpY2FsLnR4dDpVVEY4OkZPUldBUkQKK1RoYWlMb2dpY2FsLVRoYWk6aW50ZXJuYWw6VHJhbnNsaXRlcmF0b3JfVGhhaV9UaGFpTG9naWNhbC50eHQ6VVRGODpSRVZFUlNFCisKK1RoYWlMb2dpY2FsLUxhdGluOmludGVybmFsOlRyYW5zbGl0ZXJhdG9yX1RoYWlMb2dpY2FsX0xhdGluLnR4dDpVVEY4OkZPUldBUkQKK0xhdGluLVRoYWlMb2dpY2FsOmludGVybmFsOlRyYW5zbGl0ZXJhdG9yX1RoYWlMb2dpY2FsX0xhdGluLnR4dDpVVEY4OlJFVkVSU0UKKworIyBNdXN0IHVzZSB0aGUgb3JkZXIgYmVsb3chCisjIFdlIG5lZWQgdHdvIHNlcGFyYXRlIHBhc3NlcyBiZWNhdXNlIG9mIHRoZSBUaGFpIHZvd2VsIHJldmVyc2FsCisjIFRoYWktTG9naWNhbCBhbHNvIGNvbnZlcnRzIHNwYWNlcyB0byBzZW1pY29sb25zLiBUaGF0IGhhcyB0byBiZSBkb25lIGJlZm9yZSB3ZSBpbnNlcnQgbGF0aW4gc3BhY2VzCisKK1RoYWktTGF0aW46YWxpYXM6W1s6dGhhaTpdIFx1MEUwMS1cdTBFM0FcdTBFNDAtXHUwRTVCXTtORkQ7VGhhaS1UaGFpU2VtaTtBbnktQnJlYWtJbnRlcm5hbDtUaGFpLVRoYWlMb2dpY2FsO1RoYWlMb2dpY2FsLUxhdGluO05GQworTGF0aW4tVGhhaTphbGlhczpbWzpMYXRpbjpdWzpNbjpdWzpNZTpdIFwgXDswLTl8flx1MDBBN1x1MDBBQlx1MDBCQlx1MDJCOVx1MDM3NFx1MjAyMVx1MDJDQ107TkZEO0xhdGluLVRoYWlMb2dpY2FsO1RoYWlMb2dpY2FsLVRoYWk7TkZDCisKKyMgZW5kIG9mIFRoYWkgU3R1ZmYKKworSGlyYWdhbmEtS2F0YWthbmE6ZmlsZTpUcmFuc2xpdGVyYXRvcl9IaXJhZ2FuYV9LYXRha2FuYS50eHQ6VVRGODpGT1JXQVJECitLYXRha2FuYS1IaXJhZ2FuYTpmaWxlOlRyYW5zbGl0ZXJhdG9yX0hpcmFnYW5hX0thdGFrYW5hLnR4dDpVVEY4OlJFVkVSU0UKKworQW55LUFjY2VudHM6ZmlsZTpUcmFuc2xpdGVyYXRvcl9BbnlfQWNjZW50cy50eHQ6VVRGODpGT1JXQVJECitBY2NlbnRzLUFueTpmaWxlOlRyYW5zbGl0ZXJhdG9yX0FueV9BY2NlbnRzLnR4dDpVVEY4OlJFVkVSU0UKKworQW55LVB1Ymxpc2hpbmc6ZmlsZTpUcmFuc2xpdGVyYXRvcl9BbnlfUHVibGlzaGluZy50eHQ6VVRGODpGT1JXQVJECitQdWJsaXNoaW5nLUFueTpmaWxlOlRyYW5zbGl0ZXJhdG9yX0FueV9QdWJsaXNoaW5nLnR4dDpVVEY4OlJFVkVSU0UKKworIyBLb3JlYW4KKyMgTi5CLiBEb24ndCBlbmQgTGF0aW4tSmFtbyB3aXRoIE5GQzsgdGhhdCBwcm9kdWNlcyBIYW5ndWwuICBGb3IKKyMgSGFuZ3VsIG91dHB1dCB1c2UgTGF0aW4tSGFuZ3VsLgorCitMb3dlckxhdGluLUphbW86aW50ZXJuYWw6VHJhbnNsaXRlcmF0b3JfTGF0aW5fSmFtby50eHQ6VVRGODpGT1JXQVJECitKYW1vLUxvd2VyTGF0aW46aW50ZXJuYWw6VHJhbnNsaXRlcmF0b3JfTGF0aW5fSmFtby50eHQ6VVRGODpSRVZFUlNFCitMYXRpbi1KYW1vOmFsaWFzOlsnQS1aYS16XHUwMEMwLVx1MDBDNVx1MDBDNy1cdTAwQ0ZcdTAwRDEtXHUwMEQ2XHUwMEQ5LVx1MDBERFx1MDBFMC1cdTAwRTVcdTAwRTctXHUwMEVGXHUwMEYxLVx1MDBGNlx1MDBGOS1cdTAwRkRcdTAwRkYtXHUwMTBGXHUwMTEyLVx1MDEyNVx1MDEyOC1cdTAxMzBcdTAxMzQtXHUwMTM3XHUwMTM5LVx1MDEzRVx1MDE0My1cdTAxNDhcdTAxNEMtXHUwMTUxXHUwMTU0LVx1MDE2NVx1MDE2OC1cdTAxN0VcdTAxQTAtXHUwMUExXHUwMUFGLVx1MDFCMFx1MDFDRC1cdTAxRENcdTAxREUtXHUwMUUxXHUwMUU2LVx1MDFFRFx1MDFGMFx1MDFGNC1cdTAxRjVcdTAxRjgtXHUwMUZCXHUwMjAwLVx1MDIxQlx1MDIxRS1cdTAyMUZcdTAyMjYtXHUwMjMzXHUxRTAwLVx1MUU5OVx1MUVBMC1cdTFFRjlcdTIxMkEtXHUyMTJCXTtORkQ7TG93ZXI7TG93ZXJMYXRpbi1KYW1vCitKYW1vLUxhdGluOmFsaWFzOlsnXHUxMTAwLVx1MTExMlx1MTE2MS1cdTExNzVcdTExQTgtXHUxMUMyXHVBQzAwLVx1RDdBM107TkZEO0phbW8tTG93ZXJMYXRpbjtORkMKK0xhdGluLUhhbmd1bDphbGlhczpbJ0EtWmEtelx1MDBDMC1cdTAwQzVcdTAwQzctXHUwMENGXHUwMEQxLVx1MDBENlx1MDBEOS1cdTAwRERcdTAwRTAtXHUwMEU1XHUwMEU3LVx1MDBFRlx1MDBGMS1cdTAwRjZcdTAwRjktXHUwMEZEXHUwMEZGLVx1MDEwRlx1MDExMi1cdTAxMjVcdTAxMjgtXHUwMTMwXHUwMTM0LVx1MDEzN1x1MDEzOS1cdTAxM0VcdTAxNDMtXHUwMTQ4XHUwMTRDLVx1MDE1MVx1MDE1NC1cdTAxNjVcdTAxNjgtXHUwMTdFXHUwMUEwLVx1MDFBMVx1MDFBRi1cdTAxQjBcdTAxQ0QtXHUwMURDXHUwMURFLVx1MDFFMVx1MDFFNi1cdTAxRURcdTAxRjBcdTAxRjQtXHUwMUY1XHUwMUY4LVx1MDFGQlx1MDIwMC1cdTAyMUJcdTAyMUUtXHUwMjFGXHUwMjI2LVx1MDIzM1x1MUUwMC1cdTFFOTlcdTFFQTAtXHUxRUY5XHUyMTJBLVx1MjEyQl07TkZEO0xvd2VyO0xvd2VyTGF0aW4tSmFtbztORkMKK0hhbmd1bC1MYXRpbjphbGlhczpbJ1x1MTEwMC1cdTExMTJcdTExNjEtXHUxMTc1XHUxMUE4LVx1MTFDMlx1MzEzMS1cdTMxM0ZcdTMxNDEtXHUzMTQzXHUzMTQ1LVx1MzE2M1x1MzIwMC1cdTMyMUNcdTMyNjAtXHUzMjdCXHVBQzAwLVx1RDdBM1x1RkYwN1x1RkZBMS1cdUZGQUZcdUZGQjEtXHVGRkIzXHVGRkI1LVx1RkZCRVx1RkZDMi1cdUZGQzdcdUZGQ0EtXHVGRkNGXHVGRkQyLVx1RkZEN1x1RkZEQS1cdUZGRENdO05GS0Q7SmFtby1Mb3dlckxhdGluO05GQworCisjIEludGVyLUluZGljIGNvbXBvc2VkIHJ1bGVzCitMYXRpbi1JbnRlckluZGljOmludGVybmFsOlRyYW5zbGl0ZXJhdG9yX0xhdGluX0ludGVySW5kaWMudHh0OlVURjg6Rk9SV0FSRAorRGV2YW5hZ2FyaS1JbnRlckluZGljOmludGVybmFsOlRyYW5zbGl0ZXJhdG9yX0RldmFuYWdhcmlfSW50ZXJJbmRpYy50eHQ6VVRGODpGT1JXQVJECitCZW5nYWxpLUludGVySW5kaWM6aW50ZXJuYWw6VHJhbnNsaXRlcmF0b3JfQmVuZ2FsaV9JbnRlckluZGljLnR4dDpVVEY4OkZPUldBUkQKK0d1cm11a2hpLUludGVySW5kaWM6aW50ZXJuYWw6VHJhbnNsaXRlcmF0b3JfR3VybXVraGlfSW50ZXJJbmRpYy50eHQ6VVRGODpGT1JXQVJECitHdWphcmF0aS1JbnRlckluZGljOmludGVybmFsOlRyYW5zbGl0ZXJhdG9yX0d1amFyYXRpX0ludGVySW5kaWMudHh0OlVURjg6Rk9SV0FSRAorT3JpeWEtSW50ZXJJbmRpYzppbnRlcm5hbDpUcmFuc2xpdGVyYXRvcl9Pcml5YV9JbnRlckluZGljLnR4dDpVVEY4OkZPUldBUkQKK1RhbWlsLUludGVySW5kaWM6aW50ZXJuYWw6VHJhbnNsaXRlcmF0b3JfVGFtaWxfSW50ZXJJbmRpYy50eHQ6VVRGODpGT1JXQVJECitUZWx1Z3UtSW50ZXJJbmRpYzppbnRlcm5hbDpUcmFuc2xpdGVyYXRvcl9UZWx1Z3VfSW50ZXJJbmRpYy50eHQ6VVRGODpGT1JXQVJECitLYW5uYWRhLUludGVySW5kaWM6aW50ZXJuYWw6VHJhbnNsaXRlcmF0b3JfS2FubmFkYV9JbnRlckluZGljLnR4dDpVVEY4OkZPUldBUkQKK01hbGF5YWxhbS1JbnRlckluZGljOmludGVybmFsOlRyYW5zbGl0ZXJhdG9yX01hbGF5YWxhbV9JbnRlckluZGljLnR4dDpVVEY4OkZPUldBUkQKKworSW50ZXJJbmRpYy1MYXRpbjppbnRlcm5hbDpUcmFuc2xpdGVyYXRvcl9JbnRlckluZGljX0xhdGluLnR4dDpVVEY4OkZPUldBUkQKK0ludGVySW5kaWMtRGV2YW5hZ2FyaTppbnRlcm5hbDpUcmFuc2xpdGVyYXRvcl9JbnRlckluZGljX0RldmFuYWdhcmkudHh0OlVURjg6Rk9SV0FSRAorSW50ZXJJbmRpYy1CZW5nYWxpOmludGVybmFsOlRyYW5zbGl0ZXJhdG9yX0ludGVySW5kaWNfQmVuZ2FsaS50eHQ6VVRGODpGT1JXQVJECitJbnRlckluZGljLUd1cm11a2hpOmludGVybmFsOlRyYW5zbGl0ZXJhdG9yX0ludGVySW5kaWNfR3VybXVraGkudHh0OlVURjg6Rk9SV0FSRAorSW50ZXJJbmRpYy1HdWphcmF0aTppbnRlcm5hbDpUcmFuc2xpdGVyYXRvcl9JbnRlckluZGljX0d1amFyYXRpLnR4dDpVVEY4OkZPUldBUkQKK0ludGVySW5kaWMtT3JpeWE6aW50ZXJuYWw6VHJhbnNsaXRlcmF0b3JfSW50ZXJJbmRpY19Pcml5YS50eHQ6VVRGODpGT1JXQVJECitJbnRlckluZGljLVRhbWlsOmludGVybmFsOlRyYW5zbGl0ZXJhdG9yX0ludGVySW5kaWNfVGFtaWwudHh0OlVURjg6Rk9SV0FSRAorSW50ZXJJbmRpYy1UZWx1Z3U6aW50ZXJuYWw6VHJhbnNsaXRlcmF0b3JfSW50ZXJJbmRpY19UZWx1Z3UudHh0OlVURjg6Rk9SV0FSRAorSW50ZXJJbmRpYy1LYW5uYWRhOmludGVybmFsOlRyYW5zbGl0ZXJhdG9yX0ludGVySW5kaWNfS2FubmFkYS50eHQ6VVRGODpGT1JXQVJECitJbnRlckluZGljLU1hbGF5YWxhbTppbnRlcm5hbDpUcmFuc2xpdGVyYXRvcl9JbnRlckluZGljX01hbGF5YWxhbS50eHQ6VVRGODpGT1JXQVJECisKKyNMYXRpbi1JbmRpYyB0cmFuc2xpdGVyYXRvcnMKK0xhdGluLURldmFuYWdhcmk6YWxpYXM6WycuMC05QS1aYS16flx1MDBDMC1cdTAwQzVcdTAwQzctXHUwMENGXHUwMEQxLVx1MDBENlx1MDBEOS1cdTAwRERcdTAwRTAtXHUwMEU1XHUwMEU3LVx1MDBFRlx1MDBGMS1cdTAwRjZcdTAwRjktXHUwMEZEXHUwMEZGLVx1MDEwRlx1MDExMi1cdTAxMjVcdTAxMjgtXHUwMTMwXHUwMTM0LVx1MDEzN1x1MDEzOS1cdTAxM0VcdTAxNDMtXHUwMTQ4XHUwMTRDLVx1MDE1MVx1MDE1NC1cdTAxNjVcdTAxNjgtXHUwMTdFXHUwMUEwLVx1MDFBMVx1MDFBRi1cdTAxQjBcdTAxQ0QtXHUwMURDXHUwMURFLVx1MDFFM1x1MDFFNi1cdTAxRURcdTAxRjBcdTAxRjQtXHUwMUY1XHUwMUY4LVx1MDIxQlx1MDIxRS1cdTAyMUZcdTAyMjYtXHUwMjMzXHUwMzAxXHUwMzAzLVx1MDMwNFx1MDMwNi1cdTAzMDdcdTAzMTBcdTAzMTQtXHUwMzE1XHUwMzIzXHUwMzI1XHUwMzMxXHUwMzQxXHUwMzQ0XHUwMzg1LVx1MDM4Nlx1MDM4OC1cdTAzOEFcdTAzOENcdTAzOEUtXHUwMzkwXHUwM0FDLVx1MDNCMFx1MDNDQy1cdTAzQ0VcdTAzRDNcdTA0MDNcdTA0MENcdTA0MEVcdTA0MTlcdTA0MzlcdTA0NTNcdTA0NUNcdTA0NUVcdTA0QzEtXHUwNEMyXHUwNEQwLVx1MDREMVx1MDRENi1cdTA0RDdcdTA0RTItXHUwNEUzXHUwNEVFLVx1MDRFRlx1MUUwMC1cdTFFOTlcdTFFQTAtXHUxRUY5XHUxRjAxXHUxRjAzLVx1MUYwNVx1MUYwN1x1MUYwOVx1MUYwQi1cdTFGMERcdTFGMEZcdTFGMTFcdTFGMTMtXHUxRjE1XHUxRjE5XHUxRjFCLVx1MUYxRFx1MUYyMVx1MUYyMy1cdTFGMjVcdTFGMjdcdTFGMjlcdTFGMkItXHUxRjJEXHUxRjJGXHUxRjMxXHUxRjMzLVx1MUYzNVx1MUYzN1x1MUYzOVx1MUYzQi1cdTFGM0RcdTFGM0ZcdTFGNDFcdTFGNDMtXHUxRjQ1XHUxRjQ5XHUxRjRCLVx1MUY0RFx1MUY1MVx1MUY1My1cdTFGNTVcdTFGNTdcdTFGNTlcdTFGNUJcdTFGNURcdTFGNUZcdTFGNjFcdTFGNjMtXHUxRjY1XHUxRjY3XHUxRjY5XHUxRjZCLVx1MUY2RFx1MUY2Rlx1MUY3MVx1MUY3M1x1MUY3NVx1MUY3N1x1MUY3OVx1MUY3Qlx1MUY3RFx1MUY4MVx1MUY4My1cdTFGODVcdTFGODdcdTFGODlcdTFGOEItXHUxRjhEXHUxRjhGXHUxRjkxXHUxRjkzLVx1MUY5NVx1MUY5N1x1MUY5OVx1MUY5Qi1cdTFGOURcdTFGOUZcdTFGQTFcdTFGQTMtXHUxRkE1XHUxRkE3XHUxRkE5XHUxRkFCLVx1MUZBRFx1MUZBRi1cdTFGQjFcdTFGQjRcdTFGQjgtXHUxRkI5XHUxRkJCXHUxRkM0XHUxRkM5XHUxRkNCXHUxRkNFXHUxRkQwLVx1MUZEMVx1MUZEM1x1MUZEOC1cdTFGRDlcdTFGREJcdTFGREVcdTFGRTAtXHUxRkUxXHUxRkUzXHUxRkU1XHUxRkU4LVx1MUZFOVx1MUZFQi1cdTFGRUNcdTFGRUVcdTFGRjRcdTFGRjlcdTFGRkJcdTIxMkEtXHUyMTJCXHVFMDREXHVFMDY0XTtORkQ7TG93ZXI7TGF0aW4tSW50ZXJJbmRpYztJbnRlckluZGljLURldmFuYWdhcmk7TkZDCitMYXRpbi1CZW5nYWxpOmFsaWFzOlsnLjAtOUEtWmEten5cdTAwQzAtXHUwMEM1XHUwMEM3LVx1MDBDRlx1MDBEMS1cdTAwRDZcdTAwRDktXHUwMEREXHUwMEUwLVx1MDBFNVx1MDBFNy1cdTAwRUZcdTAwRjEtXHUwMEY2XHUwMEY5LVx1MDBGRFx1MDBGRi1cdTAxMEZcdTAxMTItXHUwMTI1XHUwMTI4LVx1MDEzMFx1MDEzNC1cdTAxMzdcdTAxMzktXHUwMTNFXHUwMTQzLVx1MDE0OFx1MDE0Qy1cdTAxNTFcdTAxNTQtXHUwMTY1XHUwMTY4LVx1MDE3RVx1MDFBMC1cdTAxQTFcdTAxQUYtXHUwMUIwXHUwMUNELVx1MDFEQ1x1MDFERS1cdTAxRTNcdTAxRTYtXHUwMUVEXHUwMUYwXHUwMUY0LVx1MDFGNVx1MDFGOC1cdTAyMUJcdTAyMUUtXHUwMjFGXHUwMjI2LVx1MDIzM1x1MDMwMVx1MDMwMy1cdTAzMDRcdTAzMDYtXHUwMzA3XHUwMzEwXHUwMzE0LVx1MDMxNVx1MDMyM1x1MDMyNVx1MDMzMVx1MDM0MVx1MDM0NFx1MDM4NS1cdTAzODZcdTAzODgtXHUwMzhBXHUwMzhDXHUwMzhFLVx1MDM5MFx1MDNBQy1cdTAzQjBcdTAzQ0MtXHUwM0NFXHUwM0QzXHUwNDAzXHUwNDBDXHUwNDBFXHUwNDE5XHUwNDM5XHUwNDUzXHUwNDVDXHUwNDVFXHUwNEMxLVx1MDRDMlx1MDREMC1cdTA0RDFcdTA0RDYtXHUwNEQ3XHUwNEUyLVx1MDRFM1x1MDRFRS1cdTA0RUZcdTFFMDAtXHUxRTk5XHUxRUEwLVx1MUVGOVx1MUYwMVx1MUYwMy1cdTFGMDVcdTFGMDdcdTFGMDlcdTFGMEItXHUxRjBEXHUxRjBGXHUxRjExXHUxRjEzLVx1MUYxNVx1MUYxOVx1MUYxQi1cdTFGMURcdTFGMjFcdTFGMjMtXHUxRjI1XHUxRjI3XHUxRjI5XHUxRjJCLVx1MUYyRFx1MUYyRlx1MUYzMVx1MUYzMy1cdTFGMzVcdTFGMzdcdTFGMzlcdTFGM0ItXHUxRjNEXHUxRjNGXHUxRjQxXHUxRjQzLVx1MUY0NVx1MUY0OVx1MUY0Qi1cdTFGNERcdTFGNTFcdTFGNTMtXHUxRjU1XHUxRjU3XHUxRjU5XHUxRjVCXHUxRjVEXHUxRjVGXHUxRjYxXHUxRjYzLVx1MUY2NVx1MUY2N1x1MUY2OVx1MUY2Qi1cdTFGNkRcdTFGNkZcdTFGNzFcdTFGNzNcdTFGNzVcdTFGNzdcdTFGNzlcdTFGN0JcdTFGN0RcdTFGODFcdTFGODMtXHUxRjg1XHUxRjg3XHUxRjg5XHUxRjhCLVx1MUY4RFx1MUY4Rlx1MUY5MVx1MUY5My1cdTFGOTVcdTFGOTdcdTFGOTlcdTFGOUItXHUxRjlEXHUxRjlGXHUxRkExXHUxRkEzLVx1MUZBNVx1MUZBN1x1MUZBOVx1MUZBQi1cdTFGQURcdTFGQUYtXHUxRkIxXHUxRkI0XHUxRkI4LVx1MUZCOVx1MUZCQlx1MUZDNFx1MUZDOVx1MUZDQlx1MUZDRVx1MUZEMC1cdTFGRDFcdTFGRDNcdTFGRDgtXHUxRkQ5XHUxRkRCXHUxRkRFXHUxRkUwLVx1MUZFMVx1MUZFM1x1MUZFNVx1MUZFOC1cdTFGRTlcdTFGRUItXHUxRkVDXHUxRkVFXHUxRkY0XHUxRkY5XHUxRkZCXHUyMTJBLVx1MjEyQlx1RTA0RFx1RTA2NF07TkZEO0xvd2VyO0xhdGluLUludGVySW5kaWM7SW50ZXJJbmRpYy1CZW5nYWxpO05GQworTGF0aW4tR3VybXVraGk6YWxpYXM6WycuMC05QS1aYS16flx1MDBDMC1cdTAwQzVcdTAwQzctXHUwMENGXHUwMEQxLVx1MDBENlx1MDBEOS1cdTAwRERcdTAwRTAtXHUwMEU1XHUwMEU3LVx1MDBFRlx1MDBGMS1cdTAwRjZcdTAwRjktXHUwMEZEXHUwMEZGLVx1MDEwRlx1MDExMi1cdTAxMjVcdTAxMjgtXHUwMTMwXHUwMTM0LVx1MDEzN1x1MDEzOS1cdTAxM0VcdTAxNDMtXHUwMTQ4XHUwMTRDLVx1MDE1MVx1MDE1NC1cdTAxNjVcdTAxNjgtXHUwMTdFXHUwMUEwLVx1MDFBMVx1MDFBRi1cdTAxQjBcdTAxQ0QtXHUwMURDXHUwMURFLVx1MDFFM1x1MDFFNi1cdTAxRURcdTAxRjBcdTAxRjQtXHUwMUY1XHUwMUY4LVx1MDIxQlx1MDIxRS1cdTAyMUZcdTAyMjYtXHUwMjMzXHUwMzAxXHUwMzAzLVx1MDMwNFx1MDMwNi1cdTAzMDdcdTAzMTBcdTAzMTQtXHUwMzE1XHUwMzIzXHUwMzI1XHUwMzMxXHUwMzQxXHUwMzQ0XHUwMzg1LVx1MDM4Nlx1MDM4OC1cdTAzOEFcdTAzOENcdTAzOEUtXHUwMzkwXHUwM0FDLVx1MDNCMFx1MDNDQy1cdTAzQ0VcdTAzRDNcdTA0MDNcdTA0MENcdTA0MEVcdTA0MTlcdTA0MzlcdTA0NTNcdTA0NUNcdTA0NUVcdTA0QzEtXHUwNEMyXHUwNEQwLVx1MDREMVx1MDRENi1cdTA0RDdcdTA0RTItXHUwNEUzXHUwNEVFLVx1MDRFRlx1MUUwMC1cdTFFOTlcdTFFQTAtXHUxRUY5XHUxRjAxXHUxRjAzLVx1MUYwNVx1MUYwN1x1MUYwOVx1MUYwQi1cdTFGMERcdTFGMEZcdTFGMTFcdTFGMTMtXHUxRjE1XHUxRjE5XHUxRjFCLVx1MUYxRFx1MUYyMVx1MUYyMy1cdTFGMjVcdTFGMjdcdTFGMjlcdTFGMkItXHUxRjJEXHUxRjJGXHUxRjMxXHUxRjMzLVx1MUYzNVx1MUYzN1x1MUYzOVx1MUYzQi1cdTFGM0RcdTFGM0ZcdTFGNDFcdTFGNDMtXHUxRjQ1XHUxRjQ5XHUxRjRCLVx1MUY0RFx1MUY1MVx1MUY1My1cdTFGNTVcdTFGNTdcdTFGNTlcdTFGNUJcdTFGNURcdTFGNUZcdTFGNjFcdTFGNjMtXHUxRjY1XHUxRjY3XHUxRjY5XHUxRjZCLVx1MUY2RFx1MUY2Rlx1MUY3MVx1MUY3M1x1MUY3NVx1MUY3N1x1MUY3OVx1MUY3Qlx1MUY3RFx1MUY4MVx1MUY4My1cdTFGODVcdTFGODdcdTFGODlcdTFGOEItXHUxRjhEXHUxRjhGXHUxRjkxXHUxRjkzLVx1MUY5NVx1MUY5N1x1MUY5OVx1MUY5Qi1cdTFGOURcdTFGOUZcdTFGQTFcdTFGQTMtXHUxRkE1XHUxRkE3XHUxRkE5XHUxRkFCLVx1MUZBRFx1MUZBRi1cdTFGQjFcdTFGQjRcdTFGQjgtXHUxRkI5XHUxRkJCXHUxRkM0XHUxRkM5XHUxRkNCXHUxRkNFXHUxRkQwLVx1MUZEMVx1MUZEM1x1MUZEOC1cdTFGRDlcdTFGREJcdTFGREVcdTFGRTAtXHUxRkUxXHUxRkUzXHUxRkU1XHUxRkU4LVx1MUZFOVx1MUZFQi1cdTFGRUNcdTFGRUVcdTFGRjRcdTFGRjlcdTFGRkJcdTIxMkEtXHUyMTJCXHVFMDREXHVFMDY0XTtORkQ7TG93ZXI7TGF0aW4tSW50ZXJJbmRpYztJbnRlckluZGljLUd1cm11a2hpO05GQworTGF0aW4tR3VqYXJhdGk6YWxpYXM6WycuMC05QS1aYS16flx1MDBDMC1cdTAwQzVcdTAwQzctXHUwMENGXHUwMEQxLVx1MDBENlx1MDBEOS1cdTAwRERcdTAwRTAtXHUwMEU1XHUwMEU3LVx1MDBFRlx1MDBGMS1cdTAwRjZcdTAwRjktXHUwMEZEXHUwMEZGLVx1MDEwRlx1MDExMi1cdTAxMjVcdTAxMjgtXHUwMTMwXHUwMTM0LVx1MDEzN1x1MDEzOS1cdTAxM0VcdTAxNDMtXHUwMTQ4XHUwMTRDLVx1MDE1MVx1MDE1NC1cdTAxNjVcdTAxNjgtXHUwMTdFXHUwMUEwLVx1MDFBMVx1MDFBRi1cdTAxQjBcdTAxQ0QtXHUwMURDXHUwMURFLVx1MDFFM1x1MDFFNi1cdTAxRURcdTAxRjBcdTAxRjQtXHUwMUY1XHUwMUY4LVx1MDIxQlx1MDIxRS1cdTAyMUZcdTAyMjYtXHUwMjMzXHUwMzAxXHUwMzAzLVx1MDMwNFx1MDMwNi1cdTAzMDdcdTAzMTBcdTAzMTQtXHUwMzE1XHUwMzIzXHUwMzI1XHUwMzMxXHUwMzQxXHUwMzQ0XHUwMzg1LVx1MDM4Nlx1MDM4OC1cdTAzOEFcdTAzOENcdTAzOEUtXHUwMzkwXHUwM0FDLVx1MDNCMFx1MDNDQy1cdTAzQ0VcdTAzRDNcdTA0MDNcdTA0MENcdTA0MEVcdTA0MTlcdTA0MzlcdTA0NTNcdTA0NUNcdTA0NUVcdTA0QzEtXHUwNEMyXHUwNEQwLVx1MDREMVx1MDRENi1cdTA0RDdcdTA0RTItXHUwNEUzXHUwNEVFLVx1MDRFRlx1MUUwMC1cdTFFOTlcdTFFQTAtXHUxRUY5XHUxRjAxXHUxRjAzLVx1MUYwNVx1MUYwN1x1MUYwOVx1MUYwQi1cdTFGMERcdTFGMEZcdTFGMTFcdTFGMTMtXHUxRjE1XHUxRjE5XHUxRjFCLVx1MUYxRFx1MUYyMVx1MUYyMy1cdTFGMjVcdTFGMjdcdTFGMjlcdTFGMkItXHUxRjJEXHUxRjJGXHUxRjMxXHUxRjMzLVx1MUYzNVx1MUYzN1x1MUYzOVx1MUYzQi1cdTFGM0RcdTFGM0ZcdTFGNDFcdTFGNDMtXHUxRjQ1XHUxRjQ5XHUxRjRCLVx1MUY0RFx1MUY1MVx1MUY1My1cdTFGNTVcdTFGNTdcdTFGNTlcdTFGNUJcdTFGNURcdTFGNUZcdTFGNjFcdTFGNjMtXHUxRjY1XHUxRjY3XHUxRjY5XHUxRjZCLVx1MUY2RFx1MUY2Rlx1MUY3MVx1MUY3M1x1MUY3NVx1MUY3N1x1MUY3OVx1MUY3Qlx1MUY3RFx1MUY4MVx1MUY4My1cdTFGODVcdTFGODdcdTFGODlcdTFGOEItXHUxRjhEXHUxRjhGXHUxRjkxXHUxRjkzLVx1MUY5NVx1MUY5N1x1MUY5OVx1MUY5Qi1cdTFGOURcdTFGOUZcdTFGQTFcdTFGQTMtXHUxRkE1XHUxRkE3XHUxRkE5XHUxRkFCLVx1MUZBRFx1MUZBRi1cdTFGQjFcdTFGQjRcdTFGQjgtXHUxRkI5XHUxRkJCXHUxRkM0XHUxRkM5XHUxRkNCXHUxRkNFXHUxRkQwLVx1MUZEMVx1MUZEM1x1MUZEOC1cdTFGRDlcdTFGREJcdTFGREVcdTFGRTAtXHUxRkUxXHUxRkUzXHUxRkU1XHUxRkU4LVx1MUZFOVx1MUZFQi1cdTFGRUNcdTFGRUVcdTFGRjRcdTFGRjlcdTFGRkJcdTIxMkEtXHUyMTJCXHVFMDREXHVFMDY0XTtORkQ7TG93ZXI7TGF0aW4tSW50ZXJJbmRpYztJbnRlckluZGljLUd1amFyYXRpO05GQworTGF0aW4tT3JpeWE6YWxpYXM6WycuMC05QS1aYS16flx1MDBDMC1cdTAwQzVcdTAwQzctXHUwMENGXHUwMEQxLVx1MDBENlx1MDBEOS1cdTAwRERcdTAwRTAtXHUwMEU1XHUwMEU3LVx1MDBFRlx1MDBGMS1cdTAwRjZcdTAwRjktXHUwMEZEXHUwMEZGLVx1MDEwRlx1MDExMi1cdTAxMjVcdTAxMjgtXHUwMTMwXHUwMTM0LVx1MDEzN1x1MDEzOS1cdTAxM0VcdTAxNDMtXHUwMTQ4XHUwMTRDLVx1MDE1MVx1MDE1NC1cdTAxNjVcdTAxNjgtXHUwMTdFXHUwMUEwLVx1MDFBMVx1MDFBRi1cdTAxQjBcdTAxQ0QtXHUwMURDXHUwMURFLVx1MDFFM1x1MDFFNi1cdTAxRURcdTAxRjBcdTAxRjQtXHUwMUY1XHUwMUY4LVx1MDIxQlx1MDIxRS1cdTAyMUZcdTAyMjYtXHUwMjMzXHUwMzAxXHUwMzAzLVx1MDMwNFx1MDMwNi1cdTAzMDdcdTAzMTBcdTAzMTQtXHUwMzE1XHUwMzIzXHUwMzI1XHUwMzMxXHUwMzQxXHUwMzQ0XHUwMzg1LVx1MDM4Nlx1MDM4OC1cdTAzOEFcdTAzOENcdTAzOEUtXHUwMzkwXHUwM0FDLVx1MDNCMFx1MDNDQy1cdTAzQ0VcdTAzRDNcdTA0MDNcdTA0MENcdTA0MEVcdTA0MTlcdTA0MzlcdTA0NTNcdTA0NUNcdTA0NUVcdTA0QzEtXHUwNEMyXHUwNEQwLVx1MDREMVx1MDRENi1cdTA0RDdcdTA0RTItXHUwNEUzXHUwNEVFLVx1MDRFRlx1MUUwMC1cdTFFOTlcdTFFQTAtXHUxRUY5XHUxRjAxXHUxRjAzLVx1MUYwNVx1MUYwN1x1MUYwOVx1MUYwQi1cdTFGMERcdTFGMEZcdTFGMTFcdTFGMTMtXHUxRjE1XHUxRjE5XHUxRjFCLVx1MUYxRFx1MUYyMVx1MUYyMy1cdTFGMjVcdTFGMjdcdTFGMjlcdTFGMkItXHUxRjJEXHUxRjJGXHUxRjMxXHUxRjMzLVx1MUYzNVx1MUYzN1x1MUYzOVx1MUYzQi1cdTFGM0RcdTFGM0ZcdTFGNDFcdTFGNDMtXHUxRjQ1XHUxRjQ5XHUxRjRCLVx1MUY0RFx1MUY1MVx1MUY1My1cdTFGNTVcdTFGNTdcdTFGNTlcdTFGNUJcdTFGNURcdTFGNUZcdTFGNjFcdTFGNjMtXHUxRjY1XHUxRjY3XHUxRjY5XHUxRjZCLVx1MUY2RFx1MUY2Rlx1MUY3MVx1MUY3M1x1MUY3NVx1MUY3N1x1MUY3OVx1MUY3Qlx1MUY3RFx1MUY4MVx1MUY4My1cdTFGODVcdTFGODdcdTFGODlcdTFGOEItXHUxRjhEXHUxRjhGXHUxRjkxXHUxRjkzLVx1MUY5NVx1MUY5N1x1MUY5OVx1MUY5Qi1cdTFGOURcdTFGOUZcdTFGQTFcdTFGQTMtXHUxRkE1XHUxRkE3XHUxRkE5XHUxRkFCLVx1MUZBRFx1MUZBRi1cdTFGQjFcdTFGQjRcdTFGQjgtXHUxRkI5XHUxRkJCXHUxRkM0XHUxRkM5XHUxRkNCXHUxRkNFXHUxRkQwLVx1MUZEMVx1MUZEM1x1MUZEOC1cdTFGRDlcdTFGREJcdTFGREVcdTFGRTAtXHUxRkUxXHUxRkUzXHUxRkU1XHUxRkU4LVx1MUZFOVx1MUZFQi1cdTFGRUNcdTFGRUVcdTFGRjRcdTFGRjlcdTFGRkJcdTIxMkEtXHUyMTJCXHVFMDREXHVFMDY0XTtORkQ7TG93ZXI7TGF0aW4tSW50ZXJJbmRpYztJbnRlckluZGljLU9yaXlhO05GQworTGF0aW4tVGFtaWw6YWxpYXM6WycuMC05QS1aYS16flx1MDBDMC1cdTAwQzVcdTAwQzctXHUwMENGXHUwMEQxLVx1MDBENlx1MDBEOS1cdTAwRERcdTAwRTAtXHUwMEU1XHUwMEU3LVx1MDBFRlx1MDBGMS1cdTAwRjZcdTAwRjktXHUwMEZEXHUwMEZGLVx1MDEwRlx1MDExMi1cdTAxMjVcdTAxMjgtXHUwMTMwXHUwMTM0LVx1MDEzN1x1MDEzOS1cdTAxM0VcdTAxNDMtXHUwMTQ4XHUwMTRDLVx1MDE1MVx1MDE1NC1cdTAxNjVcdTAxNjgtXHUwMTdFXHUwMUEwLVx1MDFBMVx1MDFBRi1cdTAxQjBcdTAxQ0QtXHUwMURDXHUwMURFLVx1MDFFM1x1MDFFNi1cdTAxRURcdTAxRjBcdTAxRjQtXHUwMUY1XHUwMUY4LVx1MDIxQlx1MDIxRS1cdTAyMUZcdTAyMjYtXHUwMjMzXHUwMzAxXHUwMzAzLVx1MDMwNFx1MDMwNi1cdTAzMDdcdTAzMTBcdTAzMTQtXHUwMzE1XHUwMzIzXHUwMzI1XHUwMzMxXHUwMzQxXHUwMzQ0XHUwMzg1LVx1MDM4Nlx1MDM4OC1cdTAzOEFcdTAzOENcdTAzOEUtXHUwMzkwXHUwM0FDLVx1MDNCMFx1MDNDQy1cdTAzQ0VcdTAzRDNcdTA0MDNcdTA0MENcdTA0MEVcdTA0MTlcdTA0MzlcdTA0NTNcdTA0NUNcdTA0NUVcdTA0QzEtXHUwNEMyXHUwNEQwLVx1MDREMVx1MDRENi1cdTA0RDdcdTA0RTItXHUwNEUzXHUwNEVFLVx1MDRFRlx1MUUwMC1cdTFFOTlcdTFFQTAtXHUxRUY5XHUxRjAxXHUxRjAzLVx1MUYwNVx1MUYwN1x1MUYwOVx1MUYwQi1cdTFGMERcdTFGMEZcdTFGMTFcdTFGMTMtXHUxRjE1XHUxRjE5XHUxRjFCLVx1MUYxRFx1MUYyMVx1MUYyMy1cdTFGMjVcdTFGMjdcdTFGMjlcdTFGMkItXHUxRjJEXHUxRjJGXHUxRjMxXHUxRjMzLVx1MUYzNVx1MUYzN1x1MUYzOVx1MUYzQi1cdTFGM0RcdTFGM0ZcdTFGNDFcdTFGNDMtXHUxRjQ1XHUxRjQ5XHUxRjRCLVx1MUY0RFx1MUY1MVx1MUY1My1cdTFGNTVcdTFGNTdcdTFGNTlcdTFGNUJcdTFGNURcdTFGNUZcdTFGNjFcdTFGNjMtXHUxRjY1XHUxRjY3XHUxRjY5XHUxRjZCLVx1MUY2RFx1MUY2Rlx1MUY3MVx1MUY3M1x1MUY3NVx1MUY3N1x1MUY3OVx1MUY3Qlx1MUY3RFx1MUY4MVx1MUY4My1cdTFGODVcdTFGODdcdTFGODlcdTFGOEItXHUxRjhEXHUxRjhGXHUxRjkxXHUxRjkzLVx1MUY5NVx1MUY5N1x1MUY5OVx1MUY5Qi1cdTFGOURcdTFGOUZcdTFGQTFcdTFGQTMtXHUxRkE1XHUxRkE3XHUxRkE5XHUxRkFCLVx1MUZBRFx1MUZBRi1cdTFGQjFcdTFGQjRcdTFGQjgtXHUxRkI5XHUxRkJCXHUxRkM0XHUxRkM5XHUxRkNCXHUxRkNFXHUxRkQwLVx1MUZEMVx1MUZEM1x1MUZEOC1cdTFGRDlcdTFGREJcdTFGREVcdTFGRTAtXHUxRkUxXHUxRkUzXHUxRkU1XHUxRkU4LVx1MUZFOVx1MUZFQi1cdTFGRUNcdTFGRUVcdTFGRjRcdTFGRjlcdTFGRkJcdTIxMkEtXHUyMTJCXHVFMDREXHVFMDY0XTtORkQ7TG93ZXI7TGF0aW4tSW50ZXJJbmRpYztJbnRlckluZGljLVRhbWlsO05GQworTGF0aW4tVGVsdWd1OmFsaWFzOlsnLjAtOUEtWmEten5cdTAwQzAtXHUwMEM1XHUwMEM3LVx1MDBDRlx1MDBEMS1cdTAwRDZcdTAwRDktXHUwMEREXHUwMEUwLVx1MDBFNVx1MDBFNy1cdTAwRUZcdTAwRjEtXHUwMEY2XHUwMEY5LVx1MDBGRFx1MDBGRi1cdTAxMEZcdTAxMTItXHUwMTI1XHUwMTI4LVx1MDEzMFx1MDEzNC1cdTAxMzdcdTAxMzktXHUwMTNFXHUwMTQzLVx1MDE0OFx1MDE0Qy1cdTAxNTFcdTAxNTQtXHUwMTY1XHUwMTY4LVx1MDE3RVx1MDFBMC1cdTAxQTFcdTAxQUYtXHUwMUIwXHUwMUNELVx1MDFEQ1x1MDFERS1cdTAxRTNcdTAxRTYtXHUwMUVEXHUwMUYwXHUwMUY0LVx1MDFGNVx1MDFGOC1cdTAyMUJcdTAyMUUtXHUwMjFGXHUwMjI2LVx1MDIzM1x1MDMwMVx1MDMwMy1cdTAzMDRcdTAzMDYtXHUwMzA3XHUwMzEwXHUwMzE0LVx1MDMxNVx1MDMyM1x1MDMyNVx1MDMzMVx1MDM0MVx1MDM0NFx1MDM4NS1cdTAzODZcdTAzODgtXHUwMzhBXHUwMzhDXHUwMzhFLVx1MDM5MFx1MDNBQy1cdTAzQjBcdTAzQ0MtXHUwM0NFXHUwM0QzXHUwNDAzXHUwNDBDXHUwNDBFXHUwNDE5XHUwNDM5XHUwNDUzXHUwNDVDXHUwNDVFXHUwNEMxLVx1MDRDMlx1MDREMC1cdTA0RDFcdTA0RDYtXHUwNEQ3XHUwNEUyLVx1MDRFM1x1MDRFRS1cdTA0RUZcdTFFMDAtXHUxRTk5XHUxRUEwLVx1MUVGOVx1MUYwMVx1MUYwMy1cdTFGMDVcdTFGMDdcdTFGMDlcdTFGMEItXHUxRjBEXHUxRjBGXHUxRjExXHUxRjEzLVx1MUYxNVx1MUYxOVx1MUYxQi1cdTFGMURcdTFGMjFcdTFGMjMtXHUxRjI1XHUxRjI3XHUxRjI5XHUxRjJCLVx1MUYyRFx1MUYyRlx1MUYzMVx1MUYzMy1cdTFGMzVcdTFGMzdcdTFGMzlcdTFGM0ItXHUxRjNEXHUxRjNGXHUxRjQxXHUxRjQzLVx1MUY0NVx1MUY0OVx1MUY0Qi1cdTFGNERcdTFGNTFcdTFGNTMtXHUxRjU1XHUxRjU3XHUxRjU5XHUxRjVCXHUxRjVEXHUxRjVGXHUxRjYxXHUxRjYzLVx1MUY2NVx1MUY2N1x1MUY2OVx1MUY2Qi1cdTFGNkRcdTFGNkZcdTFGNzFcdTFGNzNcdTFGNzVcdTFGNzdcdTFGNzlcdTFGN0JcdTFGN0RcdTFGODFcdTFGODMtXHUxRjg1XHUxRjg3XHUxRjg5XHUxRjhCLVx1MUY4RFx1MUY4Rlx1MUY5MVx1MUY5My1cdTFGOTVcdTFGOTdcdTFGOTlcdTFGOUItXHUxRjlEXHUxRjlGXHUxRkExXHUxRkEzLVx1MUZBNVx1MUZBN1x1MUZBOVx1MUZBQi1cdTFGQURcdTFGQUYtXHUxRkIxXHUxRkI0XHUxRkI4LVx1MUZCOVx1MUZCQlx1MUZDNFx1MUZDOVx1MUZDQlx1MUZDRVx1MUZEMC1cdTFGRDFcdTFGRDNcdTFGRDgtXHUxRkQ5XHUxRkRCXHUxRkRFXHUxRkUwLVx1MUZFMVx1MUZFM1x1MUZFNVx1MUZFOC1cdTFGRTlcdTFGRUItXHUxRkVDXHUxRkVFXHUxRkY0XHUxRkY5XHUxRkZCXHUyMTJBLVx1MjEyQlx1RTA0RFx1RTA2NF07TkZEO0xvd2VyO0xhdGluLUludGVySW5kaWM7SW50ZXJJbmRpYy1UZWx1Z3U7TkZDCitMYXRpbi1LYW5uYWRhOmFsaWFzOlsnLjAtOUEtWmEten5cdTAwQzAtXHUwMEM1XHUwMEM3LVx1MDBDRlx1MDBEMS1cdTAwRDZcdTAwRDktXHUwMEREXHUwMEUwLVx1MDBFNVx1MDBFNy1cdTAwRUZcdTAwRjEtXHUwMEY2XHUwMEY5LVx1MDBGRFx1MDBGRi1cdTAxMEZcdTAxMTItXHUwMTI1XHUwMTI4LVx1MDEzMFx1MDEzNC1cdTAxMzdcdTAxMzktXHUwMTNFXHUwMTQzLVx1MDE0OFx1MDE0Qy1cdTAxNTFcdTAxNTQtXHUwMTY1XHUwMTY4LVx1MDE3RVx1MDFBMC1cdTAxQTFcdTAxQUYtXHUwMUIwXHUwMUNELVx1MDFEQ1x1MDFERS1cdTAxRTNcdTAxRTYtXHUwMUVEXHUwMUYwXHUwMUY0LVx1MDFGNVx1MDFGOC1cdTAyMUJcdTAyMUUtXHUwMjFGXHUwMjI2LVx1MDIzM1x1MDMwMVx1MDMwMy1cdTAzMDRcdTAzMDYtXHUwMzA3XHUwMzEwXHUwMzE0LVx1MDMxNVx1MDMyM1x1MDMyNVx1MDMzMVx1MDM0MVx1MDM0NFx1MDM4NS1cdTAzODZcdTAzODgtXHUwMzhBXHUwMzhDXHUwMzhFLVx1MDM5MFx1MDNBQy1cdTAzQjBcdTAzQ0MtXHUwM0NFXHUwM0QzXHUwNDAzXHUwNDBDXHUwNDBFXHUwNDE5XHUwNDM5XHUwNDUzXHUwNDVDXHUwNDVFXHUwNEMxLVx1MDRDMlx1MDREMC1cdTA0RDFcdTA0RDYtXHUwNEQ3XHUwNEUyLVx1MDRFM1x1MDRFRS1cdTA0RUZcdTFFMDAtXHUxRTk5XHUxRUEwLVx1MUVGOVx1MUYwMVx1MUYwMy1cdTFGMDVcdTFGMDdcdTFGMDlcdTFGMEItXHUxRjBEXHUxRjBGXHUxRjExXHUxRjEzLVx1MUYxNVx1MUYxOVx1MUYxQi1cdTFGMURcdTFGMjFcdTFGMjMtXHUxRjI1XHUxRjI3XHUxRjI5XHUxRjJCLVx1MUYyRFx1MUYyRlx1MUYzMVx1MUYzMy1cdTFGMzVcdTFGMzdcdTFGMzlcdTFGM0ItXHUxRjNEXHUxRjNGXHUxRjQxXHUxRjQzLVx1MUY0NVx1MUY0OVx1MUY0Qi1cdTFGNERcdTFGNTFcdTFGNTMtXHUxRjU1XHUxRjU3XHUxRjU5XHUxRjVCXHUxRjVEXHUxRjVGXHUxRjYxXHUxRjYzLVx1MUY2NVx1MUY2N1x1MUY2OVx1MUY2Qi1cdTFGNkRcdTFGNkZcdTFGNzFcdTFGNzNcdTFGNzVcdTFGNzdcdTFGNzlcdTFGN0JcdTFGN0RcdTFGODFcdTFGODMtXHUxRjg1XHUxRjg3XHUxRjg5XHUxRjhCLVx1MUY4RFx1MUY4Rlx1MUY5MVx1MUY5My1cdTFGOTVcdTFGOTdcdTFGOTlcdTFGOUItXHUxRjlEXHUxRjlGXHUxRkExXHUxRkEzLVx1MUZBNVx1MUZBN1x1MUZBOVx1MUZBQi1cdTFGQURcdTFGQUYtXHUxRkIxXHUxRkI0XHUxRkI4LVx1MUZCOVx1MUZCQlx1MUZDNFx1MUZDOVx1MUZDQlx1MUZDRVx1MUZEMC1cdTFGRDFcdTFGRDNcdTFGRDgtXHUxRkQ5XHUxRkRCXHUxRkRFXHUxRkUwLVx1MUZFMVx1MUZFM1x1MUZFNVx1MUZFOC1cdTFGRTlcdTFGRUItXHUxRkVDXHUxRkVFXHUxRkY0XHUxRkY5XHUxRkZCXHUyMTJBLVx1MjEyQlx1RTA0RFx1RTA2NF07TkZEO0xvd2VyO0xhdGluLUludGVySW5kaWM7SW50ZXJJbmRpYy1LYW5uYWRhO05GQworTGF0aW4tTWFsYXlhbGFtOmFsaWFzOlsnLjAtOUEtWmEten5cdTAwQzAtXHUwMEM1XHUwMEM3LVx1MDBDRlx1MDBEMS1cdTAwRDZcdTAwRDktXHUwMEREXHUwMEUwLVx1MDBFNVx1MDBFNy1cdTAwRUZcdTAwRjEtXHUwMEY2XHUwMEY5LVx1MDBGRFx1MDBGRi1cdTAxMEZcdTAxMTItXHUwMTI1XHUwMTI4LVx1MDEzMFx1MDEzNC1cdTAxMzdcdTAxMzktXHUwMTNFXHUwMTQzLVx1MDE0OFx1MDE0Qy1cdTAxNTFcdTAxNTQtXHUwMTY1XHUwMTY4LVx1MDE3RVx1MDFBMC1cdTAxQTFcdTAxQUYtXHUwMUIwXHUwMUNELVx1MDFEQ1x1MDFERS1cdTAxRTNcdTAxRTYtXHUwMUVEXHUwMUYwXHUwMUY0LVx1MDFGNVx1MDFGOC1cdTAyMUJcdTAyMUUtXHUwMjFGXHUwMjI2LVx1MDIzM1x1MDMwMVx1MDMwMy1cdTAzMDRcdTAzMDYtXHUwMzA3XHUwMzEwXHUwMzE0LVx1MDMxNVx1MDMyM1x1MDMyNVx1MDMzMVx1MDM0MVx1MDM0NFx1MDM4NS1cdTAzODZcdTAzODgtXHUwMzhBXHUwMzhDXHUwMzhFLVx1MDM5MFx1MDNBQy1cdTAzQjBcdTAzQ0MtXHUwM0NFXHUwM0QzXHUwNDAzXHUwNDBDXHUwNDBFXHUwNDE5XHUwNDM5XHUwNDUzXHUwNDVDXHUwNDVFXHUwNEMxLVx1MDRDMlx1MDREMC1cdTA0RDFcdTA0RDYtXHUwNEQ3XHUwNEUyLVx1MDRFM1x1MDRFRS1cdTA0RUZcdTFFMDAtXHUxRTk5XHUxRUEwLVx1MUVGOVx1MUYwMVx1MUYwMy1cdTFGMDVcdTFGMDdcdTFGMDlcdTFGMEItXHUxRjBEXHUxRjBGXHUxRjExXHUxRjEzLVx1MUYxNVx1MUYxOVx1MUYxQi1cdTFGMURcdTFGMjFcdTFGMjMtXHUxRjI1XHUxRjI3XHUxRjI5XHUxRjJCLVx1MUYyRFx1MUYyRlx1MUYzMVx1MUYzMy1cdTFGMzVcdTFGMzdcdTFGMzlcdTFGM0ItXHUxRjNEXHUxRjNGXHUxRjQxXHUxRjQzLVx1MUY0NVx1MUY0OVx1MUY0Qi1cdTFGNERcdTFGNTFcdTFGNTMtXHUxRjU1XHUxRjU3XHUxRjU5XHUxRjVCXHUxRjVEXHUxRjVGXHUxRjYxXHUxRjYzLVx1MUY2NVx1MUY2N1x1MUY2OVx1MUY2Qi1cdTFGNkRcdTFGNkZcdTFGNzFcdTFGNzNcdTFGNzVcdTFGNzdcdTFGNzlcdTFGN0JcdTFGN0RcdTFGODFcdTFGODMtXHUxRjg1XHUxRjg3XHUxRjg5XHUxRjhCLVx1MUY4RFx1MUY4Rlx1MUY5MVx1MUY5My1cdTFGOTVcdTFGOTdcdTFGOTlcdTFGOUItXHUxRjlEXHUxRjlGXHUxRkExXHUxRkEzLVx1MUZBNVx1MUZBN1x1MUZBOVx1MUZBQi1cdTFGQURcdTFGQUYtXHUxRkIxXHUxRkI0XHUxRkI4LVx1MUZCOVx1MUZCQlx1MUZDNFx1MUZDOVx1MUZDQlx1MUZDRVx1MUZEMC1cdTFGRDFcdTFGRDNcdTFGRDgtXHUxRkQ5XHUxRkRCXHUxRkRFXHUxRkUwLVx1MUZFMVx1MUZFM1x1MUZFNVx1MUZFOC1cdTFGRTlcdTFGRUItXHUxRkVDXHUxRkVFXHUxRkY0XHUxRkY5XHUxRkZCXHUyMTJBLVx1MjEyQlx1RTA0RFx1RTA2NF07TkZEO0xvd2VyO0xhdGluLUludGVySW5kaWM7SW50ZXJJbmRpYy1NYWxheWFsYW07TkZDCisgICAKKyNJbmRpYy1MYXRpbiB0cmFuc2xpdGVyYXRvcnMKK0RldmFuYWdhcmktTGF0aW46YWxpYXM6W1x1MDkwMS1cdTA5MDNcdTA5MDUtXHUwOTM5XHUwOTNDLVx1MDk0RFx1MDk1MC1cdTA5NTRcdTA5NTgtXHUwOTZGXTtORkQ7RGV2YW5hZ2FyaS1JbnRlckluZGljO0ludGVySW5kaWMtTGF0aW47TkZDCitCZW5nYWxpLUxhdGluOmFsaWFzOltcdTA5NjQtXHUwOTY1XHUwOTgxLVx1MDk4M1x1MDk4NS1cdTA5OENcdTA5OEYtXHUwOTkwXHUwOTkzLVx1MDlBOFx1MDlBQS1cdTA5QjBcdTA5QjJcdTA5QjYtXHUwOUI5XHUwOUJDXHUwOUJFLVx1MDlDNFx1MDlDNy1cdTA5QzhcdTA5Q0ItXHUwOUNEXHUwOUQ3XHUwOURDLVx1MDlERFx1MDlERi1cdTA5RTNcdTA5RTYtXHUwOUZBXTtORkQ7QmVuZ2FsaS1JbnRlckluZGljO0ludGVySW5kaWMtTGF0aW47TkZDCitHdXJtdWtoaS1MYXRpbjphbGlhczpbXHUwOTY0LVx1MDk2NVx1MEEwMlx1MEEwNS1cdTBBMEFcdTBBMEYtXHUwQTEwXHUwQTEzLVx1MEEyOFx1MEEyQS1cdTBBMzBcdTBBMzItXHUwQTMzXHUwQTM1LVx1MEEzNlx1MEEzOC1cdTBBMzlcdTBBM0NcdTBBM0UtXHUwQTQyXHUwQTQ3LVx1MEE0OFx1MEE0Qi1cdTBBNERcdTBBNTktXHUwQTVDXHUwQTVFXHUwQTY2LVx1MEE3NF07TkZEO0d1cm11a2hpLUludGVySW5kaWM7SW50ZXJJbmRpYy1MYXRpbjtORkMKK0d1amFyYXRpLUxhdGluOmFsaWFzOltcdTA5NjQtXHUwOTY1XHUwQTgxLVx1MEE4M1x1MEE4NS1cdTBBOEJcdTBBOERcdTBBOEYtXHUwQTkxXHUwQTkzLVx1MEFBOFx1MEFBQS1cdTBBQjBcdTBBQjItXHUwQUIzXHUwQUI1LVx1MEFCOVx1MEFCQy1cdTBBQzVcdTBBQzctXHUwQUM5XHUwQUNCLVx1MEFDRFx1MEFEMFx1MEFFMFx1MEFFNi1cdTBBRUZdO05GRDtHdWphcmF0aS1JbnRlckluZGljO0ludGVySW5kaWMtTGF0aW47TkZDCitPcml5YS1MYXRpbjphbGlhczpbXHUwOTY0LVx1MDk2NVx1MEIwMS1cdTBCMDNcdTBCMDUtXHUwQjBDXHUwQjBGLVx1MEIxMFx1MEIxMy1cdTBCMjhcdTBCMkEtXHUwQjMwXHUwQjMyLVx1MEIzM1x1MEIzNi1cdTBCMzlcdTBCM0MtXHUwQjQzXHUwQjQ3LVx1MEI0OFx1MEI0Qi1cdTBCNERcdTBCNTYtXHUwQjU3XHUwQjVDLVx1MEI1RFx1MEI1Ri1cdTBCNjFcdTBCNjYtXHUwQjcwXTtORkQ7T3JpeWEtSW50ZXJJbmRpYztJbnRlckluZGljLUxhdGluO05GQworVGFtaWwtTGF0aW46YWxpYXM6WzBcdTBCODItXHUwQjgzXHUwQjg1LVx1MEI4QVx1MEI4RS1cdTBCOTBcdTBCOTItXHUwQjk1XHUwQjk5LVx1MEI5QVx1MEI5Q1x1MEI5RS1cdTBCOUZcdTBCQTMtXHUwQkE0XHUwQkE4LVx1MEJBQVx1MEJBRS1cdTBCQjVcdTBCQjctXHUwQkI5XHUwQkJFLVx1MEJDMlx1MEJDNi1cdTBCQzhcdTBCQ0EtXHUwQkNEXHUwQkQ3XHUwQkU3LVx1MEJGMl07TkZEO1RhbWlsLUludGVySW5kaWM7SW50ZXJJbmRpYy1MYXRpbjtORkMKK1RlbHVndS1MYXRpbjphbGlhczpbXHUwQzAxLVx1MEMwM1x1MEMwNS1cdTBDMENcdTBDMEUtXHUwQzEwXHUwQzEyLVx1MEMyOFx1MEMyQS1cdTBDMzNcdTBDMzUtXHUwQzM5XHUwQzNFLVx1MEM0NFx1MEM0Ni1cdTBDNDhcdTBDNEEtXHUwQzREXHUwQzU1LVx1MEM1Nlx1MEM2MC1cdTBDNjFcdTBDNjYtXHUwQzZGXTtORkQ7VGVsdWd1LUludGVySW5kaWM7SW50ZXJJbmRpYy1MYXRpbjtORkMKK0thbm5hZGEtTGF0aW46YWxpYXM6W1x1MEM4Mi1cdTBDODNcdTBDODUtXHUwQzhDXHUwQzhFLVx1MEM5MFx1MEM5Mi1cdTBDQThcdTBDQUEtXHUwQ0IzXHUwQ0I1LVx1MENCOVx1MENCRS1cdTBDQzRcdTBDQzYtXHUwQ0M4XHUwQ0NBLVx1MENDRFx1MENENS1cdTBDRDZcdTBDREVcdTBDRTAtXHUwQ0UxXHUwQ0U2LVx1MENFRl07TkZEO0thbm5hZGEtSW50ZXJJbmRpYztJbnRlckluZGljLUxhdGluO05GQworTWFsYXlhbGFtLUxhdGluOmFsaWFzOltcdTBEMDItXHUwRDAzXHUwRDA1LVx1MEQwQ1x1MEQwRS1cdTBEMTBcdTBEMTItXHUwRDI4XHUwRDJBLVx1MEQzOVx1MEQzRS1cdTBENDNcdTBENDYtXHUwRDQ4XHUwRDRBLVx1MEQ0RFx1MEQ1N1x1MEQ2MC1cdTBENjFcdTBENjYtXHUwRDZGXTtORkQ7TWFsYXlhbGFtLUludGVySW5kaWM7SW50ZXJJbmRpYy1MYXRpbjtORkMKKworRGV2YW5hZ2FyaS1CZW5nYWxpOmFsaWFzOltcdTA5MDEtXHUwOTAzXHUwOTA1LVx1MDkzOVx1MDkzQy1cdTA5NERcdTA5NTAtXHUwOTU0XHUwOTU4LVx1MDk2Rl07TkZEO0RldmFuYWdhcmktSW50ZXJJbmRpYztJbnRlckluZGljLUJlbmdhbGk7TkZDCitEZXZhbmFnYXJpLUd1cm11a2hpOmFsaWFzOltcdTA5MDEtXHUwOTAzXHUwOTA1LVx1MDkzOVx1MDkzQy1cdTA5NERcdTA5NTAtXHUwOTU0XHUwOTU4LVx1MDk2Rl07TkZEO0RldmFuYWdhcmktSW50ZXJJbmRpYztJbnRlckluZGljLUd1cm11a2hpO05GQworRGV2YW5hZ2FyaS1HdWphcmF0aTphbGlhczpbXHUwOTAxLVx1MDkwM1x1MDkwNS1cdTA5MzlcdTA5M0MtXHUwOTREXHUwOTUwLVx1MDk1NFx1MDk1OC1cdTA5NkZdO05GRDtEZXZhbmFnYXJpLUludGVySW5kaWM7SW50ZXJJbmRpYy1HdWphcmF0aTtORkMKK0RldmFuYWdhcmktT3JpeWE6YWxpYXM6W1x1MDkwMS1cdTA5MDNcdTA5MDUtXHUwOTM5XHUwOTNDLVx1MDk0RFx1MDk1MC1cdTA5NTRcdTA5NTgtXHUwOTZGXTtORkQ7RGV2YW5hZ2FyaS1JbnRlckluZGljO0ludGVySW5kaWMtT3JpeWE7TkZDCitEZXZhbmFnYXJpLVRhbWlsOmFsaWFzOltcdTA5MDEtXHUwOTAzXHUwOTA1LVx1MDkzOVx1MDkzQy1cdTA5NERcdTA5NTAtXHUwOTU0XHUwOTU4LVx1MDk2Rl07TkZEO0RldmFuYWdhcmktSW50ZXJJbmRpYztJbnRlckluZGljLVRhbWlsO05GQworRGV2YW5hZ2FyaS1UZWx1Z3U6YWxpYXM6W1x1MDkwMS1cdTA5MDNcdTA5MDUtXHUwOTM5XHUwOTNDLVx1MDk0RFx1MDk1MC1cdTA5NTRcdTA5NTgtXHUwOTZGXTtORkQ7RGV2YW5hZ2FyaS1JbnRlckluZGljO0ludGVySW5kaWMtVGVsdWd1O05GQworRGV2YW5hZ2FyaS1LYW5uYWRhOmFsaWFzOltcdTA5MDEtXHUwOTAzXHUwOTA1LVx1MDkzOVx1MDkzQy1cdTA5NERcdTA5NTAtXHUwOTU0XHUwOTU4LVx1MDk2Rl07TkZEO0RldmFuYWdhcmktSW50ZXJJbmRpYztJbnRlckluZGljLUthbm5hZGE7TkZDCitEZXZhbmFnYXJpLU1hbGF5YWxhbTphbGlhczpbXHUwOTAxLVx1MDkwM1x1MDkwNS1cdTA5MzlcdTA5M0MtXHUwOTREXHUwOTUwLVx1MDk1NFx1MDk1OC1cdTA5NkZdO05GRDtEZXZhbmFnYXJpLUludGVySW5kaWM7SW50ZXJJbmRpYy1NYWxheWFsYW07TkZDCisKK0JlbmdhbGktRGV2YW5hZ2FyaTphbGlhczpbXHUwOTY0LVx1MDk2NVx1MDk4MS1cdTA5ODNcdTA5ODUtXHUwOThDXHUwOThGLVx1MDk5MFx1MDk5My1cdTA5QThcdTA5QUEtXHUwOUIwXHUwOUIyXHUwOUI2LVx1MDlCOVx1MDlCQ1x1MDlCRS1cdTA5QzRcdTA5QzctXHUwOUM4XHUwOUNCLVx1MDlDRFx1MDlEN1x1MDlEQy1cdTA5RERcdTA5REYtXHUwOUUzXHUwOUU2LVx1MDlGQV07TkZEO0JlbmdhbGktSW50ZXJJbmRpYztJbnRlckluZGljLURldmFuYWdhcmk7TkZDCitCZW5nYWxpLUd1cm11a2hpOmFsaWFzOltcdTA5NjQtXHUwOTY1XHUwOTgxLVx1MDk4M1x1MDk4NS1cdTA5OENcdTA5OEYtXHUwOTkwXHUwOTkzLVx1MDlBOFx1MDlBQS1cdTA5QjBcdTA5QjJcdTA5QjYtXHUwOUI5XHUwOUJDXHUwOUJFLVx1MDlDNFx1MDlDNy1cdTA5QzhcdTA5Q0ItXHUwOUNEXHUwOUQ3XHUwOURDLVx1MDlERFx1MDlERi1cdTA5RTNcdTA5RTYtXHUwOUZBXTtORkQ7QmVuZ2FsaS1JbnRlckluZGljO0ludGVySW5kaWMtR3VybXVraGk7TkZDCitCZW5nYWxpLUd1amFyYXRpOmFsaWFzOltcdTA5NjQtXHUwOTY1XHUwOTgxLVx1MDk4M1x1MDk4NS1cdTA5OENcdTA5OEYtXHUwOTkwXHUwOTkzLVx1MDlBOFx1MDlBQS1cdTA5QjBcdTA5QjJcdTA5QjYtXHUwOUI5XHUwOUJDXHUwOUJFLVx1MDlDNFx1MDlDNy1cdTA5QzhcdTA5Q0ItXHUwOUNEXHUwOUQ3XHUwOURDLVx1MDlERFx1MDlERi1cdTA5RTNcdTA5RTYtXHUwOUZBXTtORkQ7QmVuZ2FsaS1JbnRlckluZGljO0ludGVySW5kaWMtR3VqYXJhdGk7TkZDCitCZW5nYWxpLU9yaXlhOmFsaWFzOltcdTA5NjQtXHUwOTY1XHUwOTgxLVx1MDk4M1x1MDk4NS1cdTA5OENcdTA5OEYtXHUwOTkwXHUwOTkzLVx1MDlBOFx1MDlBQS1cdTA5QjBcdTA5QjJcdTA5QjYtXHUwOUI5XHUwOUJDXHUwOUJFLVx1MDlDNFx1MDlDNy1cdTA5QzhcdTA5Q0ItXHUwOUNEXHUwOUQ3XHUwOURDLVx1MDlERFx1MDlERi1cdTA5RTNcdTA5RTYtXHUwOUZBXTtORkQ7QmVuZ2FsaS1JbnRlckluZGljO0ludGVySW5kaWMtT3JpeWE7TkZDCitCZW5nYWxpLVRhbWlsOmFsaWFzOltcdTA5NjQtXHUwOTY1XHUwOTgxLVx1MDk4M1x1MDk4NS1cdTA5OENcdTA5OEYtXHUwOTkwXHUwOTkzLVx1MDlBOFx1MDlBQS1cdTA5QjBcdTA5QjJcdTA5QjYtXHUwOUI5XHUwOUJDXHUwOUJFLVx1MDlDNFx1MDlDNy1cdTA5QzhcdTA5Q0ItXHUwOUNEXHUwOUQ3XHUwOURDLVx1MDlERFx1MDlERi1cdTA5RTNcdTA5RTYtXHUwOUZBXTtORkQ7QmVuZ2FsaS1JbnRlckluZGljO0ludGVySW5kaWMtVGFtaWw7TkZDCitCZW5nYWxpLVRlbHVndTphbGlhczpbXHUwOTY0LVx1MDk2NVx1MDk4MS1cdTA5ODNcdTA5ODUtXHUwOThDXHUwOThGLVx1MDk5MFx1MDk5My1cdTA5QThcdTA5QUEtXHUwOUIwXHUwOUIyXHUwOUI2LVx1MDlCOVx1MDlCQ1x1MDlCRS1cdTA5QzRcdTA5QzctXHUwOUM4XHUwOUNCLVx1MDlDRFx1MDlEN1x1MDlEQy1cdTA5RERcdTA5REYtXHUwOUUzXHUwOUU2LVx1MDlGQV07TkZEO0JlbmdhbGktSW50ZXJJbmRpYztJbnRlckluZGljLVRlbHVndTtORkMKK0JlbmdhbGktS2FubmFkYTphbGlhczpbXHUwOTY0LVx1MDk2NVx1MDk4MS1cdTA5ODNcdTA5ODUtXHUwOThDXHUwOThGLVx1MDk5MFx1MDk5My1cdTA5QThcdTA5QUEtXHUwOUIwXHUwOUIyXHUwOUI2LVx1MDlCOVx1MDlCQ1x1MDlCRS1cdTA5QzRcdTA5QzctXHUwOUM4XHUwOUNCLVx1MDlDRFx1MDlEN1x1MDlEQy1cdTA5RERcdTA5REYtXHUwOUUzXHUwOUU2LVx1MDlGQV07TkZEO0JlbmdhbGktSW50ZXJJbmRpYztJbnRlckluZGljLUthbm5hZGE7TkZDCitCZW5nYWxpLU1hbGF5YWxhbTphbGlhczpbXHUwOTY0LVx1MDk2NVx1MDk4MS1cdTA5ODNcdTA5ODUtXHUwOThDXHUwOThGLVx1MDk5MFx1MDk5My1cdTA5QThcdTA5QUEtXHUwOUIwXHUwOUIyXHUwOUI2LVx1MDlCOVx1MDlCQ1x1MDlCRS1cdTA5QzRcdTA5QzctXHUwOUM4XHUwOUNCLVx1MDlDRFx1MDlEN1x1MDlEQy1cdTA5RERcdTA5REYtXHUwOUUzXHUwOUU2LVx1MDlGQV07TkZEO0JlbmdhbGktSW50ZXJJbmRpYztJbnRlckluZGljLU1hbGF5YWxhbTtORkMKKworR3VybXVraGktRGV2YW5hZ2FyaTphbGlhczpbXHUwOTY0LVx1MDk2NVx1MEEwMlx1MEEwNS1cdTBBMEFcdTBBMEYtXHUwQTEwXHUwQTEzLVx1MEEyOFx1MEEyQS1cdTBBMzBcdTBBMzItXHUwQTMzXHUwQTM1LVx1MEEzNlx1MEEzOC1cdTBBMzlcdTBBM0NcdTBBM0UtXHUwQTQyXHUwQTQ3LVx1MEE0OFx1MEE0Qi1cdTBBNERcdTBBNTktXHUwQTVDXHUwQTVFXHUwQTY2LVx1MEE3NF07TkZEO0d1cm11a2hpLUludGVySW5kaWM7SW50ZXJJbmRpYy1EZXZhbmFnYXJpO05GQworR3VybXVraGktQmVuZ2FsaTphbGlhczpbXHUwOTY0LVx1MDk2NVx1MEEwMlx1MEEwNS1cdTBBMEFcdTBBMEYtXHUwQTEwXHUwQTEzLVx1MEEyOFx1MEEyQS1cdTBBMzBcdTBBMzItXHUwQTMzXHUwQTM1LVx1MEEzNlx1MEEzOC1cdTBBMzlcdTBBM0NcdTBBM0UtXHUwQTQyXHUwQTQ3LVx1MEE0OFx1MEE0Qi1cdTBBNERcdTBBNTktXHUwQTVDXHUwQTVFXHUwQTY2LVx1MEE3NF07TkZEO0d1cm11a2hpLUludGVySW5kaWM7SW50ZXJJbmRpYy1CZW5nYWxpO05GQworR3VybXVraGktR3VqYXJhdGk6YWxpYXM6W1x1MDk2NC1cdTA5NjVcdTBBMDJcdTBBMDUtXHUwQTBBXHUwQTBGLVx1MEExMFx1MEExMy1cdTBBMjhcdTBBMkEtXHUwQTMwXHUwQTMyLVx1MEEzM1x1MEEzNS1cdTBBMzZcdTBBMzgtXHUwQTM5XHUwQTNDXHUwQTNFLVx1MEE0Mlx1MEE0Ny1cdTBBNDhcdTBBNEItXHUwQTREXHUwQTU5LVx1MEE1Q1x1MEE1RVx1MEE2Ni1cdTBBNzRdO05GRDtHdXJtdWtoaS1JbnRlckluZGljO0ludGVySW5kaWMtR3VqYXJhdGk7TkZDCitHdXJtdWtoaS1Pcml5YTphbGlhczpbXHUwOTY0LVx1MDk2NVx1MEEwMlx1MEEwNS1cdTBBMEFcdTBBMEYtXHUwQTEwXHUwQTEzLVx1MEEyOFx1MEEyQS1cdTBBMzBcdTBBMzItXHUwQTMzXHUwQTM1LVx1MEEzNlx1MEEzOC1cdTBBMzlcdTBBM0NcdTBBM0UtXHUwQTQyXHUwQTQ3LVx1MEE0OFx1MEE0Qi1cdTBBNERcdTBBNTktXHUwQTVDXHUwQTVFXHUwQTY2LVx1MEE3NF07TkZEO0d1cm11a2hpLUludGVySW5kaWM7SW50ZXJJbmRpYy1Pcml5YTtORkMKK0d1cm11a2hpLVRhbWlsOmFsaWFzOltcdTA5NjQtXHUwOTY1XHUwQTAyXHUwQTA1LVx1MEEwQVx1MEEwRi1cdTBBMTBcdTBBMTMtXHUwQTI4XHUwQTJBLVx1MEEzMFx1MEEzMi1cdTBBMzNcdTBBMzUtXHUwQTM2XHUwQTM4LVx1MEEzOVx1MEEzQ1x1MEEzRS1cdTBBNDJcdTBBNDctXHUwQTQ4XHUwQTRCLVx1MEE0RFx1MEE1OS1cdTBBNUNcdTBBNUVcdTBBNjYtXHUwQTc0XTtORkQ7R3VybXVraGktSW50ZXJJbmRpYztJbnRlckluZGljLVRhbWlsO05GQworR3VybXVraGktVGVsdWd1OmFsaWFzOltcdTA5NjQtXHUwOTY1XHUwQTAyXHUwQTA1LVx1MEEwQVx1MEEwRi1cdTBBMTBcdTBBMTMtXHUwQTI4XHUwQTJBLVx1MEEzMFx1MEEzMi1cdTBBMzNcdTBBMzUtXHUwQTM2XHUwQTM4LVx1MEEzOVx1MEEzQ1x1MEEzRS1cdTBBNDJcdTBBNDctXHUwQTQ4XHUwQTRCLVx1MEE0RFx1MEE1OS1cdTBBNUNcdTBBNUVcdTBBNjYtXHUwQTc0XTtORkQ7R3VybXVraGktSW50ZXJJbmRpYztJbnRlckluZGljLVRlbHVndTtORkMKK0d1cm11a2hpLUthbm5hZGE6YWxpYXM6W1x1MDk2NC1cdTA5NjVcdTBBMDJcdTBBMDUtXHUwQTBBXHUwQTBGLVx1MEExMFx1MEExMy1cdTBBMjhcdTBBMkEtXHUwQTMwXHUwQTMyLVx1MEEzM1x1MEEzNS1cdTBBMzZcdTBBMzgtXHUwQTM5XHUwQTNDXHUwQTNFLVx1MEE0Mlx1MEE0Ny1cdTBBNDhcdTBBNEItXHUwQTREXHUwQTU5LVx1MEE1Q1x1MEE1RVx1MEE2Ni1cdTBBNzRdO05GRDtHdXJtdWtoaS1JbnRlckluZGljO0ludGVySW5kaWMtS2FubmFkYTtORkMKK0d1cm11a2hpLU1hbGF5YWxhbTphbGlhczpbXHUwOTY0LVx1MDk2NVx1MEEwMlx1MEEwNS1cdTBBMEFcdTBBMEYtXHUwQTEwXHUwQTEzLVx1MEEyOFx1MEEyQS1cdTBBMzBcdTBBMzItXHUwQTMzXHUwQTM1LVx1MEEzNlx1MEEzOC1cdTBBMzlcdTBBM0NcdTBBM0UtXHUwQTQyXHUwQTQ3LVx1MEE0OFx1MEE0Qi1cdTBBNERcdTBBNTktXHUwQTVDXHUwQTVFXHUwQTY2LVx1MEE3NF07TkZEO0d1cm11a2hpLUludGVySW5kaWM7SW50ZXJJbmRpYy1NYWxheWFsYW07TkZDCisKK0d1amFyYXRpLURldmFuYWdhcmk6YWxpYXM6W1x1MDk2NC1cdTA5NjVcdTBBODEtXHUwQTgzXHUwQTg1LVx1MEE4Qlx1MEE4RFx1MEE4Ri1cdTBBOTFcdTBBOTMtXHUwQUE4XHUwQUFBLVx1MEFCMFx1MEFCMi1cdTBBQjNcdTBBQjUtXHUwQUI5XHUwQUJDLVx1MEFDNVx1MEFDNy1cdTBBQzlcdTBBQ0ItXHUwQUNEXHUwQUQwXHUwQUUwXHUwQUU2LVx1MEFFRl07TkZEO0d1amFyYXRpLUludGVySW5kaWM7SW50ZXJJbmRpYy1EZXZhbmFnYXJpO05GQworR3VqYXJhdGktQmVuZ2FsaTphbGlhczpbXHUwOTY0LVx1MDk2NVx1MEE4MS1cdTBBODNcdTBBODUtXHUwQThCXHUwQThEXHUwQThGLVx1MEE5MVx1MEE5My1cdTBBQThcdTBBQUEtXHUwQUIwXHUwQUIyLVx1MEFCM1x1MEFCNS1cdTBBQjlcdTBBQkMtXHUwQUM1XHUwQUM3LVx1MEFDOVx1MEFDQi1cdTBBQ0RcdTBBRDBcdTBBRTBcdTBBRTYtXHUwQUVGXTtORkQ7R3VqYXJhdGktSW50ZXJJbmRpYztJbnRlckluZGljLUJlbmdhbGk7TkZDCitHdWphcmF0aS1HdXJtdWtoaTphbGlhczpbXHUwOTY0LVx1MDk2NVx1MEE4MS1cdTBBODNcdTBBODUtXHUwQThCXHUwQThEXHUwQThGLVx1MEE5MVx1MEE5My1cdTBBQThcdTBBQUEtXHUwQUIwXHUwQUIyLVx1MEFCM1x1MEFCNS1cdTBBQjlcdTBBQkMtXHUwQUM1XHUwQUM3LVx1MEFDOVx1MEFDQi1cdTBBQ0RcdTBBRDBcdTBBRTBcdTBBRTYtXHUwQUVGXTtORkQ7R3VqYXJhdGktSW50ZXJJbmRpYztJbnRlckluZGljLUd1cm11a2hpO05GQworR3VqYXJhdGktT3JpeWE6YWxpYXM6W1x1MDk2NC1cdTA5NjVcdTBBODEtXHUwQTgzXHUwQTg1LVx1MEE4Qlx1MEE4RFx1MEE4Ri1cdTBBOTFcdTBBOTMtXHUwQUE4XHUwQUFBLVx1MEFCMFx1MEFCMi1cdTBBQjNcdTBBQjUtXHUwQUI5XHUwQUJDLVx1MEFDNVx1MEFDNy1cdTBBQzlcdTBBQ0ItXHUwQUNEXHUwQUQwXHUwQUUwXHUwQUU2LVx1MEFFRl07TkZEO0d1amFyYXRpLUludGVySW5kaWM7SW50ZXJJbmRpYy1Pcml5YTtORkMKK0d1amFyYXRpLVRhbWlsOmFsaWFzOltcdTA5NjQtXHUwOTY1XHUwQTgxLVx1MEE4M1x1MEE4NS1cdTBBOEJcdTBBOERcdTBBOEYtXHUwQTkxXHUwQTkzLVx1MEFBOFx1MEFBQS1cdTBBQjBcdTBBQjItXHUwQUIzXHUwQUI1LVx1MEFCOVx1MEFCQy1cdTBBQzVcdTBBQzctXHUwQUM5XHUwQUNCLVx1MEFDRFx1MEFEMFx1MEFFMFx1MEFFNi1cdTBBRUZdO05GRDtHdWphcmF0aS1JbnRlckluZGljO0ludGVySW5kaWMtVGFtaWw7TkZDCitHdWphcmF0aS1UZWx1Z3U6YWxpYXM6W1x1MDk2NC1cdTA5NjVcdTBBODEtXHUwQTgzXHUwQTg1LVx1MEE4Qlx1MEE4RFx1MEE4Ri1cdTBBOTFcdTBBOTMtXHUwQUE4XHUwQUFBLVx1MEFCMFx1MEFCMi1cdTBBQjNcdTBBQjUtXHUwQUI5XHUwQUJDLVx1MEFDNVx1MEFDNy1cdTBBQzlcdTBBQ0ItXHUwQUNEXHUwQUQwXHUwQUUwXHUwQUU2LVx1MEFFRl07TkZEO0d1amFyYXRpLUludGVySW5kaWM7SW50ZXJJbmRpYy1UZWx1Z3U7TkZDCitHdWphcmF0aS1LYW5uYWRhOmFsaWFzOltcdTA5NjQtXHUwOTY1XHUwQTgxLVx1MEE4M1x1MEE4NS1cdTBBOEJcdTBBOERcdTBBOEYtXHUwQTkxXHUwQTkzLVx1MEFBOFx1MEFBQS1cdTBBQjBcdTBBQjItXHUwQUIzXHUwQUI1LVx1MEFCOVx1MEFCQy1cdTBBQzVcdTBBQzctXHUwQUM5XHUwQUNCLVx1MEFDRFx1MEFEMFx1MEFFMFx1MEFFNi1cdTBBRUZdO05GRDtHdWphcmF0aS1JbnRlckluZGljO0ludGVySW5kaWMtS2FubmFkYTtORkMKK0d1amFyYXRpLU1hbGF5YWxhbTphbGlhczpbXHUwOTY0LVx1MDk2NVx1MEE4MS1cdTBBODNcdTBBODUtXHUwQThCXHUwQThEXHUwQThGLVx1MEE5MVx1MEE5My1cdTBBQThcdTBBQUEtXHUwQUIwXHUwQUIyLVx1MEFCM1x1MEFCNS1cdTBBQjlcdTBBQkMtXHUwQUM1XHUwQUM3LVx1MEFDOVx1MEFDQi1cdTBBQ0RcdTBBRDBcdTBBRTBcdTBBRTYtXHUwQUVGXTtORkQ7R3VqYXJhdGktSW50ZXJJbmRpYztJbnRlckluZGljLU1hbGF5YWxhbTtORkMKKworT3JpeWEtRGV2YW5hZ2FyaTphbGlhczpbXHUwQjAxLVx1MEIwM1x1MEIwNS1cdTBCMENcdTBCMEYtXHUwQjEwXHUwQjEzLVx1MEIyOFx1MEIyQS1cdTBCMzBcdTBCMzItXHUwQjMzXHUwQjM2LVx1MEIzOVx1MEIzQy1cdTBCNDNcdTBCNDctXHUwQjQ4XHUwQjRCLVx1MEI0RFx1MEI1Ni1cdTBCNTdcdTBCNUMtXHUwQjVEXHUwQjVGLVx1MEI2MVx1MEI2Ni1cdTBCNzBdO05GRDtPcml5YS1JbnRlckluZGljO0ludGVySW5kaWMtRGV2YW5hZ2FyaTtORkMKK09yaXlhLUJlbmdhbGk6YWxpYXM6W1x1MEIwMS1cdTBCMDNcdTBCMDUtXHUwQjBDXHUwQjBGLVx1MEIxMFx1MEIxMy1cdTBCMjhcdTBCMkEtXHUwQjMwXHUwQjMyLVx1MEIzM1x1MEIzNi1cdTBCMzlcdTBCM0MtXHUwQjQzXHUwQjQ3LVx1MEI0OFx1MEI0Qi1cdTBCNERcdTBCNTYtXHUwQjU3XHUwQjVDLVx1MEI1RFx1MEI1Ri1cdTBCNjFcdTBCNjYtXHUwQjcwXTtORkQ7T3JpeWEtSW50ZXJJbmRpYztJbnRlckluZGljLUJlbmdhbGk7TkZDCitPcml5YS1HdXJtdWtoaTphbGlhczpbXHUwQjAxLVx1MEIwM1x1MEIwNS1cdTBCMENcdTBCMEYtXHUwQjEwXHUwQjEzLVx1MEIyOFx1MEIyQS1cdTBCMzBcdTBCMzItXHUwQjMzXHUwQjM2LVx1MEIzOVx1MEIzQy1cdTBCNDNcdTBCNDctXHUwQjQ4XHUwQjRCLVx1MEI0RFx1MEI1Ni1cdTBCNTdcdTBCNUMtXHUwQjVEXHUwQjVGLVx1MEI2MVx1MEI2Ni1cdTBCNzBdO05GRDtPcml5YS1JbnRlckluZGljO0ludGVySW5kaWMtR3VybXVraGk7TkZDCitPcml5YS1HdWphcmF0aTphbGlhczpbXHUwQjAxLVx1MEIwM1x1MEIwNS1cdTBCMENcdTBCMEYtXHUwQjEwXHUwQjEzLVx1MEIyOFx1MEIyQS1cdTBCMzBcdTBCMzItXHUwQjMzXHUwQjM2LVx1MEIzOVx1MEIzQy1cdTBCNDNcdTBCNDctXHUwQjQ4XHUwQjRCLVx1MEI0RFx1MEI1Ni1cdTBCNTdcdTBCNUMtXHUwQjVEXHUwQjVGLVx1MEI2MVx1MEI2Ni1cdTBCNzBdO05GRDtPcml5YS1JbnRlckluZGljO0ludGVySW5kaWMtR3VqYXJhdGk7TkZDCitPcml5YS1UYW1pbDphbGlhczpbXHUwQjAxLVx1MEIwM1x1MEIwNS1cdTBCMENcdTBCMEYtXHUwQjEwXHUwQjEzLVx1MEIyOFx1MEIyQS1cdTBCMzBcdTBCMzItXHUwQjMzXHUwQjM2LVx1MEIzOVx1MEIzQy1cdTBCNDNcdTBCNDctXHUwQjQ4XHUwQjRCLVx1MEI0RFx1MEI1Ni1cdTBCNTdcdTBCNUMtXHUwQjVEXHUwQjVGLVx1MEI2MVx1MEI2Ni1cdTBCNzBdO05GRDtPcml5YS1JbnRlckluZGljO0ludGVySW5kaWMtVGFtaWw7TkZDCitPcml5YS1UZWx1Z3U6YWxpYXM6W1x1MEIwMS1cdTBCMDNcdTBCMDUtXHUwQjBDXHUwQjBGLVx1MEIxMFx1MEIxMy1cdTBCMjhcdTBCMkEtXHUwQjMwXHUwQjMyLVx1MEIzM1x1MEIzNi1cdTBCMzlcdTBCM0MtXHUwQjQzXHUwQjQ3LVx1MEI0OFx1MEI0Qi1cdTBCNERcdTBCNTYtXHUwQjU3XHUwQjVDLVx1MEI1RFx1MEI1Ri1cdTBCNjFcdTBCNjYtXHUwQjcwXTtORkQ7T3JpeWEtSW50ZXJJbmRpYztJbnRlckluZGljLVRlbHVndTtORkMKK09yaXlhLUthbm5hZGE6YWxpYXM6W1x1MEIwMS1cdTBCMDNcdTBCMDUtXHUwQjBDXHUwQjBGLVx1MEIxMFx1MEIxMy1cdTBCMjhcdTBCMkEtXHUwQjMwXHUwQjMyLVx1MEIzM1x1MEIzNi1cdTBCMzlcdTBCM0MtXHUwQjQzXHUwQjQ3LVx1MEI0OFx1MEI0Qi1cdTBCNERcdTBCNTYtXHUwQjU3XHUwQjVDLVx1MEI1RFx1MEI1Ri1cdTBCNjFcdTBCNjYtXHUwQjcwXTtORkQ7T3JpeWEtSW50ZXJJbmRpYztJbnRlckluZGljLUthbm5hZGE7TkZDCitPcml5YS1NYWxheWFsYW06YWxpYXM6W1x1MEIwMS1cdTBCMDNcdTBCMDUtXHUwQjBDXHUwQjBGLVx1MEIxMFx1MEIxMy1cdTBCMjhcdTBCMkEtXHUwQjMwXHUwQjMyLVx1MEIzM1x1MEIzNi1cdTBCMzlcdTBCM0MtXHUwQjQzXHUwQjQ3LVx1MEI0OFx1MEI0Qi1cdTBCNERcdTBCNTYtXHUwQjU3XHUwQjVDLVx1MEI1RFx1MEI1Ri1cdTBCNjFcdTBCNjYtXHUwQjcwXTtORkQ7T3JpeWEtSW50ZXJJbmRpYztJbnRlckluZGljLU1hbGF5YWxhbTtORkMKKworVGFtaWwtRGV2YW5hZ2FyaTphbGlhczpbMFx1MEI4Mi1cdTBCODNcdTBCODUtXHUwQjhBXHUwQjhFLVx1MEI5MFx1MEI5Mi1cdTBCOTVcdTBCOTktXHUwQjlBXHUwQjlDXHUwQjlFLVx1MEI5Rlx1MEJBMy1cdTBCQTRcdTBCQTgtXHUwQkFBXHUwQkFFLVx1MEJCNVx1MEJCNy1cdTBCQjlcdTBCQkUtXHUwQkMyXHUwQkM2LVx1MEJDOFx1MEJDQS1cdTBCQ0RcdTBCRDdcdTBCRTctXHUwQkYyXTtORkQ7VGFtaWwtSW50ZXJJbmRpYztJbnRlckluZGljLURldmFuYWdhcmk7TkZDCitUYW1pbC1CZW5nYWxpOmFsaWFzOlswXHUwQjgyLVx1MEI4M1x1MEI4NS1cdTBCOEFcdTBCOEUtXHUwQjkwXHUwQjkyLVx1MEI5NVx1MEI5OS1cdTBCOUFcdTBCOUNcdTBCOUUtXHUwQjlGXHUwQkEzLVx1MEJBNFx1MEJBOC1cdTBCQUFcdTBCQUUtXHUwQkI1XHUwQkI3LVx1MEJCOVx1MEJCRS1cdTBCQzJcdTBCQzYtXHUwQkM4XHUwQkNBLVx1MEJDRFx1MEJEN1x1MEJFNy1cdTBCRjJdO05GRDtUYW1pbC1JbnRlckluZGljO0ludGVySW5kaWMtQmVuZ2FsaTtORkMKK1RhbWlsLUd1cm11a2hpOmFsaWFzOlswXHUwQjgyLVx1MEI4M1x1MEI4NS1cdTBCOEFcdTBCOEUtXHUwQjkwXHUwQjkyLVx1MEI5NVx1MEI5OS1cdTBCOUFcdTBCOUNcdTBCOUUtXHUwQjlGXHUwQkEzLVx1MEJBNFx1MEJBOC1cdTBCQUFcdTBCQUUtXHUwQkI1XHUwQkI3LVx1MEJCOVx1MEJCRS1cdTBCQzJcdTBCQzYtXHUwQkM4XHUwQkNBLVx1MEJDRFx1MEJEN1x1MEJFNy1cdTBCRjJdO05GRDtUYW1pbC1JbnRlckluZGljO0ludGVySW5kaWMtR3VybXVraGk7TkZDCitUYW1pbC1HdWphcmF0aTphbGlhczpbMFx1MEI4Mi1cdTBCODNcdTBCODUtXHUwQjhBXHUwQjhFLVx1MEI5MFx1MEI5Mi1cdTBCOTVcdTBCOTktXHUwQjlBXHUwQjlDXHUwQjlFLVx1MEI5Rlx1MEJBMy1cdTBCQTRcdTBCQTgtXHUwQkFBXHUwQkFFLVx1MEJCNVx1MEJCNy1cdTBCQjlcdTBCQkUtXHUwQkMyXHUwQkM2LVx1MEJDOFx1MEJDQS1cdTBCQ0RcdTBCRDdcdTBCRTctXHUwQkYyXTtORkQ7VGFtaWwtSW50ZXJJbmRpYztJbnRlckluZGljLUd1amFyYXRpO05GQworVGFtaWwtT3JpeWE6YWxpYXM6WzBcdTBCODItXHUwQjgzXHUwQjg1LVx1MEI4QVx1MEI4RS1cdTBCOTBcdTBCOTItXHUwQjk1XHUwQjk5LVx1MEI5QVx1MEI5Q1x1MEI5RS1cdTBCOUZcdTBCQTMtXHUwQkE0XHUwQkE4LVx1MEJBQVx1MEJBRS1cdTBCQjVcdTBCQjctXHUwQkI5XHUwQkJFLVx1MEJDMlx1MEJDNi1cdTBCQzhcdTBCQ0EtXHUwQkNEXHUwQkQ3XHUwQkU3LVx1MEJGMl07TkZEO1RhbWlsLUludGVySW5kaWM7SW50ZXJJbmRpYy1Pcml5YTtORkMKK1RhbWlsLVRlbHVndTphbGlhczpbMFx1MEI4Mi1cdTBCODNcdTBCODUtXHUwQjhBXHUwQjhFLVx1MEI5MFx1MEI5Mi1cdTBCOTVcdTBCOTktXHUwQjlBXHUwQjlDXHUwQjlFLVx1MEI5Rlx1MEJBMy1cdTBCQTRcdTBCQTgtXHUwQkFBXHUwQkFFLVx1MEJCNVx1MEJCNy1cdTBCQjlcdTBCQkUtXHUwQkMyXHUwQkM2LVx1MEJDOFx1MEJDQS1cdTBCQ0RcdTBCRDdcdTBCRTctXHUwQkYyXTtORkQ7VGFtaWwtSW50ZXJJbmRpYztJbnRlckluZGljLVRlbHVndTtORkMKK1RhbWlsLUthbm5hZGE6YWxpYXM6WzBcdTBCODItXHUwQjgzXHUwQjg1LVx1MEI4QVx1MEI4RS1cdTBCOTBcdTBCOTItXHUwQjk1XHUwQjk5LVx1MEI5QVx1MEI5Q1x1MEI5RS1cdTBCOUZcdTBCQTMtXHUwQkE0XHUwQkE4LVx1MEJBQVx1MEJBRS1cdTBCQjVcdTBCQjctXHUwQkI5XHUwQkJFLVx1MEJDMlx1MEJDNi1cdTBCQzhcdTBCQ0EtXHUwQkNEXHUwQkQ3XHUwQkU3LVx1MEJGMl07TkZEO1RhbWlsLUludGVySW5kaWM7SW50ZXJJbmRpYy1LYW5uYWRhO05GQworVGFtaWwtTWFsYXlhbGFtOmFsaWFzOlswXHUwQjgyLVx1MEI4M1x1MEI4NS1cdTBCOEFcdTBCOEUtXHUwQjkwXHUwQjkyLVx1MEI5NVx1MEI5OS1cdTBCOUFcdTBCOUNcdTBCOUUtXHUwQjlGXHUwQkEzLVx1MEJBNFx1MEJBOC1cdTBCQUFcdTBCQUUtXHUwQkI1XHUwQkI3LVx1MEJCOVx1MEJCRS1cdTBCQzJcdTBCQzYtXHUwQkM4XHUwQkNBLVx1MEJDRFx1MEJEN1x1MEJFNy1cdTBCRjJdO05GRDtUYW1pbC1JbnRlckluZGljO0ludGVySW5kaWMtTWFsYXlhbGFtO05GQworCitUZWx1Z3UtRGV2YW5hZ2FyaTphbGlhczpbXHUwQzAxLVx1MEMwM1x1MEMwNS1cdTBDMENcdTBDMEUtXHUwQzEwXHUwQzEyLVx1MEMyOFx1MEMyQS1cdTBDMzNcdTBDMzUtXHUwQzM5XHUwQzNFLVx1MEM0NFx1MEM0Ni1cdTBDNDhcdTBDNEEtXHUwQzREXHUwQzU1LVx1MEM1Nlx1MEM2MC1cdTBDNjFcdTBDNjYtXHUwQzZGXTtORkQ7VGVsdWd1LUludGVySW5kaWM7SW50ZXJJbmRpYy1EZXZhbmFnYXJpO05GQworVGVsdWd1LUJlbmdhbGk6YWxpYXM6W1x1MEMwMS1cdTBDMDNcdTBDMDUtXHUwQzBDXHUwQzBFLVx1MEMxMFx1MEMxMi1cdTBDMjhcdTBDMkEtXHUwQzMzXHUwQzM1LVx1MEMzOVx1MEMzRS1cdTBDNDRcdTBDNDYtXHUwQzQ4XHUwQzRBLVx1MEM0RFx1MEM1NS1cdTBDNTZcdTBDNjAtXHUwQzYxXHUwQzY2LVx1MEM2Rl07TkZEO1RlbHVndS1JbnRlckluZGljO0ludGVySW5kaWMtQmVuZ2FsaTtORkMKK1RlbHVndS1HdXJtdWtoaTphbGlhczpbXHUwQzAxLVx1MEMwM1x1MEMwNS1cdTBDMENcdTBDMEUtXHUwQzEwXHUwQzEyLVx1MEMyOFx1MEMyQS1cdTBDMzNcdTBDMzUtXHUwQzM5XHUwQzNFLVx1MEM0NFx1MEM0Ni1cdTBDNDhcdTBDNEEtXHUwQzREXHUwQzU1LVx1MEM1Nlx1MEM2MC1cdTBDNjFcdTBDNjYtXHUwQzZGXTtORkQ7VGVsdWd1LUludGVySW5kaWM7SW50ZXJJbmRpYy1HdXJtdWtoaTtORkMKK1RlbHVndS1HdWphcmF0aTphbGlhczpbXHUwQzAxLVx1MEMwM1x1MEMwNS1cdTBDMENcdTBDMEUtXHUwQzEwXHUwQzEyLVx1MEMyOFx1MEMyQS1cdTBDMzNcdTBDMzUtXHUwQzM5XHUwQzNFLVx1MEM0NFx1MEM0Ni1cdTBDNDhcdTBDNEEtXHUwQzREXHUwQzU1LVx1MEM1Nlx1MEM2MC1cdTBDNjFcdTBDNjYtXHUwQzZGXTtORkQ7VGVsdWd1LUludGVySW5kaWM7SW50ZXJJbmRpYy1HdWphcmF0aTtORkMKK1RlbHVndS1Pcml5YTphbGlhczpbXHUwQzAxLVx1MEMwM1x1MEMwNS1cdTBDMENcdTBDMEUtXHUwQzEwXHUwQzEyLVx1MEMyOFx1MEMyQS1cdTBDMzNcdTBDMzUtXHUwQzM5XHUwQzNFLVx1MEM0NFx1MEM0Ni1cdTBDNDhcdTBDNEEtXHUwQzREXHUwQzU1LVx1MEM1Nlx1MEM2MC1cdTBDNjFcdTBDNjYtXHUwQzZGXTtORkQ7VGVsdWd1LUludGVySW5kaWM7SW50ZXJJbmRpYy1Pcml5YTtORkMKK1RlbHVndS1UYW1pbDphbGlhczpbXHUwQzAxLVx1MEMwM1x1MEMwNS1cdTBDMENcdTBDMEUtXHUwQzEwXHUwQzEyLVx1MEMyOFx1MEMyQS1cdTBDMzNcdTBDMzUtXHUwQzM5XHUwQzNFLVx1MEM0NFx1MEM0Ni1cdTBDNDhcdTBDNEEtXHUwQzREXHUwQzU1LVx1MEM1Nlx1MEM2MC1cdTBDNjFcdTBDNjYtXHUwQzZGXTtORkQ7VGVsdWd1LUludGVySW5kaWM7SW50ZXJJbmRpYy1UYW1pbDtORkMKK1RlbHVndS1LYW5uYWRhOmFsaWFzOltcdTBDMDEtXHUwQzAzXHUwQzA1LVx1MEMwQ1x1MEMwRS1cdTBDMTBcdTBDMTItXHUwQzI4XHUwQzJBLVx1MEMzM1x1MEMzNS1cdTBDMzlcdTBDM0UtXHUwQzQ0XHUwQzQ2LVx1MEM0OFx1MEM0QS1cdTBDNERcdTBDNTUtXHUwQzU2XHUwQzYwLVx1MEM2MVx1MEM2Ni1cdTBDNkZdO05GRDtUZWx1Z3UtSW50ZXJJbmRpYztJbnRlckluZGljLUthbm5hZGE7TkZDCitUZWx1Z3UtTWFsYXlhbGFtOmFsaWFzOltcdTBDMDEtXHUwQzAzXHUwQzA1LVx1MEMwQ1x1MEMwRS1cdTBDMTBcdTBDMTItXHUwQzI4XHUwQzJBLVx1MEMzM1x1MEMzNS1cdTBDMzlcdTBDM0UtXHUwQzQ0XHUwQzQ2LVx1MEM0OFx1MEM0QS1cdTBDNERcdTBDNTUtXHUwQzU2XHUwQzYwLVx1MEM2MVx1MEM2Ni1cdTBDNkZdO05GRDtUZWx1Z3UtSW50ZXJJbmRpYztJbnRlckluZGljLU1hbGF5YWxhbTtORkMKKworS2FubmFkYS1EZXZhbmFnYXJpOmFsaWFzOltcdTBDODItXHUwQzgzXHUwQzg1LVx1MEM4Q1x1MEM4RS1cdTBDOTBcdTBDOTItXHUwQ0E4XHUwQ0FBLVx1MENCM1x1MENCNS1cdTBDQjlcdTBDQkUtXHUwQ0M0XHUwQ0M2LVx1MENDOFx1MENDQS1cdTBDQ0RcdTBDRDUtXHUwQ0Q2XHUwQ0RFXHUwQ0UwLVx1MENFMVx1MENFNi1cdTBDRUZdO05GRDtLYW5uYWRhLUludGVySW5kaWM7SW50ZXJJbmRpYy1EZXZhbmFnYXJpO05GQworS2FubmFkYS1CZW5nYWxpOmFsaWFzOltcdTBDODItXHUwQzgzXHUwQzg1LVx1MEM4Q1x1MEM4RS1cdTBDOTBcdTBDOTItXHUwQ0E4XHUwQ0FBLVx1MENCM1x1MENCNS1cdTBDQjlcdTBDQkUtXHUwQ0M0XHUwQ0M2LVx1MENDOFx1MENDQS1cdTBDQ0RcdTBDRDUtXHUwQ0Q2XHUwQ0RFXHUwQ0UwLVx1MENFMVx1MENFNi1cdTBDRUZdO05GRDtLYW5uYWRhLUludGVySW5kaWM7SW50ZXJJbmRpYy1CZW5nYWxpO05GQworS2FubmFkYS1HdXJtdWtoaTphbGlhczpbXHUwQzgyLVx1MEM4M1x1MEM4NS1cdTBDOENcdTBDOEUtXHUwQzkwXHUwQzkyLVx1MENBOFx1MENBQS1cdTBDQjNcdTBDQjUtXHUwQ0I5XHUwQ0JFLVx1MENDNFx1MENDNi1cdTBDQzhcdTBDQ0EtXHUwQ0NEXHUwQ0Q1LVx1MENENlx1MENERVx1MENFMC1cdTBDRTFcdTBDRTYtXHUwQ0VGXTtORkQ7S2FubmFkYS1JbnRlckluZGljO0ludGVySW5kaWMtR3VybXVraGk7TkZDCitLYW5uYWRhLUd1amFyYXRpOmFsaWFzOltcdTBDODItXHUwQzgzXHUwQzg1LVx1MEM4Q1x1MEM4RS1cdTBDOTBcdTBDOTItXHUwQ0E4XHUwQ0FBLVx1MENCM1x1MENCNS1cdTBDQjlcdTBDQkUtXHUwQ0M0XHUwQ0M2LVx1MENDOFx1MENDQS1cdTBDQ0RcdTBDRDUtXHUwQ0Q2XHUwQ0RFXHUwQ0UwLVx1MENFMVx1MENFNi1cdTBDRUZdO05GRDtLYW5uYWRhLUludGVySW5kaWM7SW50ZXJJbmRpYy1HdWphcmF0aTtORkMKK0thbm5hZGEtT3JpeWE6YWxpYXM6W1x1MEM4Mi1cdTBDODNcdTBDODUtXHUwQzhDXHUwQzhFLVx1MEM5MFx1MEM5Mi1cdTBDQThcdTBDQUEtXHUwQ0IzXHUwQ0I1LVx1MENCOVx1MENCRS1cdTBDQzRcdTBDQzYtXHUwQ0M4XHUwQ0NBLVx1MENDRFx1MENENS1cdTBDRDZcdTBDREVcdTBDRTAtXHUwQ0UxXHUwQ0U2LVx1MENFRl07TkZEO0thbm5hZGEtSW50ZXJJbmRpYztJbnRlckluZGljLU9yaXlhO05GQworS2FubmFkYS1UYW1pbDphbGlhczpbXHUwQzgyLVx1MEM4M1x1MEM4NS1cdTBDOENcdTBDOEUtXHUwQzkwXHUwQzkyLVx1MENBOFx1MENBQS1cdTBDQjNcdTBDQjUtXHUwQ0I5XHUwQ0JFLVx1MENDNFx1MENDNi1cdTBDQzhcdTBDQ0EtXHUwQ0NEXHUwQ0Q1LVx1MENENlx1MENERVx1MENFMC1cdTBDRTFcdTBDRTYtXHUwQ0VGXTtORkQ7S2FubmFkYS1JbnRlckluZGljO0ludGVySW5kaWMtVGFtaWw7TkZDCitLYW5uYWRhLVRlbHVndTphbGlhczpbXHUwQzgyLVx1MEM4M1x1MEM4NS1cdTBDOENcdTBDOEUtXHUwQzkwXHUwQzkyLVx1MENBOFx1MENBQS1cdTBDQjNcdTBDQjUtXHUwQ0I5XHUwQ0JFLVx1MENDNFx1MENDNi1cdTBDQzhcdTBDQ0EtXHUwQ0NEXHUwQ0Q1LVx1MENENlx1MENERVx1MENFMC1cdTBDRTFcdTBDRTYtXHUwQ0VGXTtORkQ7S2FubmFkYS1JbnRlckluZGljO0ludGVySW5kaWMtVGVsdWd1O05GQworS2FubmFkYS1NYWxheWFsYW06YWxpYXM6W1x1MEM4Mi1cdTBDODNcdTBDODUtXHUwQzhDXHUwQzhFLVx1MEM5MFx1MEM5Mi1cdTBDQThcdTBDQUEtXHUwQ0IzXHUwQ0I1LVx1MENCOVx1MENCRS1cdTBDQzRcdTBDQzYtXHUwQ0M4XHUwQ0NBLVx1MENDRFx1MENENS1cdTBDRDZcdTBDREVcdTBDRTAtXHUwQ0UxXHUwQ0U2LVx1MENFRl07TkZEO0thbm5hZGEtSW50ZXJJbmRpYztJbnRlckluZGljLU1hbGF5YWxhbTtORkMKKworTWFsYXlhbGFtLURldmFuYWdhcmk6YWxpYXM6W1x1MEQwMi1cdTBEMDNcdTBEMDUtXHUwRDBDXHUwRDBFLVx1MEQxMFx1MEQxMi1cdTBEMjhcdTBEMkEtXHUwRDM5XHUwRDNFLVx1MEQ0M1x1MEQ0Ni1cdTBENDhcdTBENEEtXHUwRDREXHUwRDU3XHUwRDYwLVx1MEQ2MVx1MEQ2Ni1cdTBENkZdO05GRDtNYWxheWFsYW0tSW50ZXJJbmRpYztJbnRlckluZGljLURldmFuYWdhcmk7TkZDCitNYWxheWFsYW0tQmVuZ2FsaTphbGlhczpbXHUwRDAyLVx1MEQwM1x1MEQwNS1cdTBEMENcdTBEMEUtXHUwRDEwXHUwRDEyLVx1MEQyOFx1MEQyQS1cdTBEMzlcdTBEM0UtXHUwRDQzXHUwRDQ2LVx1MEQ0OFx1MEQ0QS1cdTBENERcdTBENTdcdTBENjAtXHUwRDYxXHUwRDY2LVx1MEQ2Rl07TkZEO01hbGF5YWxhbS1JbnRlckluZGljO0ludGVySW5kaWMtQmVuZ2FsaTtORkMKK01hbGF5YWxhbS1HdXJtdWtoaTphbGlhczpbXHUwRDAyLVx1MEQwM1x1MEQwNS1cdTBEMENcdTBEMEUtXHUwRDEwXHUwRDEyLVx1MEQyOFx1MEQyQS1cdTBEMzlcdTBEM0UtXHUwRDQzXHUwRDQ2LVx1MEQ0OFx1MEQ0QS1cdTBENERcdTBENTdcdTBENjAtXHUwRDYxXHUwRDY2LVx1MEQ2Rl07TkZEO01hbGF5YWxhbS1JbnRlckluZGljO0ludGVySW5kaWMtR3VybXVraGk7TkZDCitNYWxheWFsYW0tR3VqYXJhdGk6YWxpYXM6W1x1MEQwMi1cdTBEMDNcdTBEMDUtXHUwRDBDXHUwRDBFLVx1MEQxMFx1MEQxMi1cdTBEMjhcdTBEMkEtXHUwRDM5XHUwRDNFLVx1MEQ0M1x1MEQ0Ni1cdTBENDhcdTBENEEtXHUwRDREXHUwRDU3XHUwRDYwLVx1MEQ2MVx1MEQ2Ni1cdTBENkZdO05GRDtNYWxheWFsYW0tSW50ZXJJbmRpYztJbnRlckluZGljLUd1amFyYXRpO05GQworTWFsYXlhbGFtLU9yaXlhOmFsaWFzOltcdTBEMDItXHUwRDAzXHUwRDA1LVx1MEQwQ1x1MEQwRS1cdTBEMTBcdTBEMTItXHUwRDI4XHUwRDJBLVx1MEQzOVx1MEQzRS1cdTBENDNcdTBENDYtXHUwRDQ4XHUwRDRBLVx1MEQ0RFx1MEQ1N1x1MEQ2MC1cdTBENjFcdTBENjYtXHUwRDZGXTtORkQ7TWFsYXlhbGFtLUludGVySW5kaWM7SW50ZXJJbmRpYy1Pcml5YTtORkMKK01hbGF5YWxhbS1UYW1pbDphbGlhczpbXHUwRDAyLVx1MEQwM1x1MEQwNS1cdTBEMENcdTBEMEUtXHUwRDEwXHUwRDEyLVx1MEQyOFx1MEQyQS1cdTBEMzlcdTBEM0UtXHUwRDQzXHUwRDQ2LVx1MEQ0OFx1MEQ0QS1cdTBENERcdTBENTdcdTBENjAtXHUwRDYxXHUwRDY2LVx1MEQ2Rl07TkZEO01hbGF5YWxhbS1JbnRlckluZGljO0ludGVySW5kaWMtVGFtaWw7TkZDCitNYWxheWFsYW0tVGVsdWd1OmFsaWFzOltcdTBEMDItXHUwRDAzXHUwRDA1LVx1MEQwQ1x1MEQwRS1cdTBEMTBcdTBEMTItXHUwRDI4XHUwRDJBLVx1MEQzOVx1MEQzRS1cdTBENDNcdTBENDYtXHUwRDQ4XHUwRDRBLVx1MEQ0RFx1MEQ1N1x1MEQ2MC1cdTBENjFcdTBENjYtXHUwRDZGXTtORkQ7TWFsYXlhbGFtLUludGVySW5kaWM7SW50ZXJJbmRpYy1UZWx1Z3U7TkZDCitNYWxheWFsYW0tS2FubmFkYTphbGlhczpbXHUwRDAyLVx1MEQwM1x1MEQwNS1cdTBEMENcdTBEMEUtXHUwRDEwXHUwRDEyLVx1MEQyOFx1MEQyQS1cdTBEMzlcdTBEM0UtXHUwRDQzXHUwRDQ2LVx1MEQ0OFx1MEQ0QS1cdTBENERcdTBENTdcdTBENjAtXHUwRDYxXHUwRDY2LVx1MEQ2Rl07TkZEO01hbGF5YWxhbS1JbnRlckluZGljO0ludGVySW5kaWMtS2FubmFkYTtORkMKKworIyBlb2YKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvY2hpbmVzZV9vdmVycmlkZS50eHQgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL2NoaW5lc2Vfb3ZlcnJpZGUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyNDM0MjcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL2NoaW5lc2Vfb3ZlcnJpZGUudHh0CkBAIC0wLDAgKzEsOTE4NCBAQAor77u/Iy8qKgorIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyMgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjICoKKyMgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL0F0dGljL2NoaW5lc2Vfb3ZlcnJpZGUudHh0LHYgJAorIyAqICREYXRlOiAyMDAyLzEyLzE4IDAzOjU2OjQwICQKKyMgKiAkUmV2aXNpb246IDEuNCAkCisjICoKKyMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIyAqLworI092ZXJyaWRlCUxpc3QKKyNGb3JtYXQgaXMgPGNvZGU+PHRhYj48Y2hhcj48dGFiPjxwaW55aW4+KDx0YWI+PGNvbW1lbnQ+KT8KKyNOb3RlOiB0aGUgJ2NvZGUnIGZpZWxkIGlzIGN1cnJlbnRseSBkaXNjYXJkZWQ7IG9ubHkgdGhlIGNoYXIgaXMgaW1wb3J0YW50LgorI05vdGU6IGlmIHRoZXJlIGlzIGNvbmZsaWN0LCB0aGUgRklSU1QgY2hhciB3aW5zLgorI05vdGU6IHRoZSBzb2Z0d2FyZSBjb3JyZWN0cyBzb21lIG9mIHRoZSB0b25lIHZhcmlhdGlvbnMgYmVsb3cuCisKKyMgZml4IGZvciBmaWZ0aCB0b25lCitcdTM3RjcJ45+3CWTEgQkjZml4IGZvciA1dGggdG9uZQorCisjIGZpeGVzIGZvciB0eXBvcworVSszNDdDCeORvAlsacO5CSNseXXDqAorVSszNTAwCeOUgAlsw7zDqAkjbHbDqAorVSszNTI3CeOUpwlsacO5CSNsecO5CitVKzM3MjkJ45ypCcOgbwkjw6B1CitVKzM4MEUJ46COCWrDrQkjamrDrQorVSszODI1CeOgpQlsx5wJI2x2zIAKK1UrM0EzQwnjqLwJbMO8w6gJI2x1w6gKK1UrM0I1QQnjrZoJbMeaCSNseceUCitVKzNDQjYJ47K2CWzHnAkjbHbMgAorVSszRDU2CeO1lglux5wJI255w7kKK1UrM0Q4OAnjtogJbGnHjm5nCSNsaceSbmcKK1UrM0VGMgnju7IJbMeaCSNseceUCitVKzNGOTQJ476UCWzHmgkjbHnHlAorVSs0MDcxCeSBsQnDoG8JI8OgdQorVSs0MEFFCeSCrglsw7zDqAkjbHl1w6gKK1UrNDMwRQnkjI4JbMO8w6gJI2x5dcOoCitVKzQ1MUUJ5JSeCWzHnAkjbHnDuQorVSs0NTg4CeSWiAluw7zDqAkjbnXDqAorVSs0NThCCeSWiwluw7zDqAkjbnXDqAorVSs0NUExCeSWoQlux5wJI255w7kKK1UrNDYxMAnkmJAJbsecCSNuecO5CitVKzQ2QkMJ5Jq8CW7HnAkjbnnDuQorVSs0NkRBCeSbmglsw7zDqAkjbHl1w6gKK1UrNDg5NgnkopYJbMecCSNsecO5CitVKzQ5MjMJ5KSjCWzDvMOoCSNseXXDqAorVSs0OTY4CeSlqAlsx5wJI2x5w7kKK1UrNEEwQgnkqIsJbsO8w6gJI255dcOoCitVKzRBQzQJ5KuECWNodcOgaQkjY2h1w6AKK1UrNEQwOAnktIgJx45vCSPHjnUKK1UrNEQ4QQnktooJbsecCSNuecO5CitVKzUxQ0EJ5YeKCXHDrW5nCSNxw71uZworVSs1MUQ2CeWHlgl6aMeUbgkjemh1xJtuCitVKzU0ODEJ5ZKBCWfDoG4JI2fDqG0KK1UrNTgzOAnloLgJZsOpbmcJI2bDum5nCitVKzYzOUYJ5o6fCWzDvMSbCSNsdcSbCitVKzY2RDUJ5puVCXnDoG4JI3lpw6BuCitVKzZCM0IJ5qy7CWNodcOgaQkjY2h1xIEKK1UrNkI1NgnmrZYJY2h1w6BpCSNjaHXEgQorVSs2QzdDCeaxvAluacWrCSNuacWNdQorVSs2RTZECea5rQlxacO6CSNxacOzdQorVSs2RjcxCea9sQl5xJMJI3lpxJMKK1UrNzQ5MwnnkpMJeGnDuQkjeGnDsnUKK1UrNzYwNwnnmIcJemjHkm5nCSN6aMeUbmcKK1UrNzY3NAnnmbQJbHXDoW4JI2zDvMOhbgorVSs3ODY3Ceehpwl5x5JuZwkjaceSbmcKK1UrNzg3OAnnobgJbsO8w6gJI251w6gKKworIyBTaGFuZ2hhaSBmaXhlcworCitcdTRFN0YJ5Lm/CWzEkworXHU1MTgzCeWGgwltxIFvCitcdTUxODYJ5YaGCXl1xIFuCitcdTU2RjIJ5ZuyCXTFjW5nCitcdTVBMTAJ5aiQCWbFqworXHU1QTU0CeWplAl3xJNpCitcdTVBNkUJ5amuCWrFqworXHU1QTg4CeWqiAlodcSrCitcdTVBOTgJ5aqYCWppxJMKK1x1NUIwNAnlrIQJecSrCitcdTVCMUMJ5aycCXjEq24KK1x1NUIyQgnlrKsJecWNbmcKK1x1NUIzMwnlrLMJd8WNCitcdTVCODIJ5a6CCXTEgWkKK1x1NUMxQgnlsJsJbcWNCitcdTVEMEEJ5bSKCWzEq24KK1x1NUQ3QgnltbsJa8SBbmcKK1x1NjQ1NwnmkZcJc8WNdQorXHU2N0U4CeafqAlwxasKK1x1NjgzNgnmoLYJecSrbgorXHU2QjQ0CeathAlndcSBCitcdTZCOUQJ5q6dCXpoxJNuCitcdTZEMjAJ5rSgCXfFqworXHU2RjcxCea9sQl5acSTCitcdTcwOUEJ54KaCWd1xIFuZworXHU3MTAxCeeEgQl4xKsKK1x1NzE2Rgnnha8JamnEkworXHU3MTdFCeeFvgluzIQKK1x1NzE4RAnnho0JcWnFjW5nCitcdTc0MDEJ55CBCXh1xIFuCitcdTc0NDMJ55GDCWNoxatuCitcdTc0NjEJ55GhCXNoxKsKK1x1NzYyRQnnmK4Jc2jEk24KK1x1Nzc3NQnnnbUJY8SBaQorXHU3QTY2CeeppglixKtuCitcdTdBQTQJ56qkCWd1xIFuCitcdTdCQUUJ566uCXh1xIFuCitcdTgwN0EJ6IG6CXFpxJMKK1x1ODBGRgnog78JZ3XEqworXHU4MTI2CeiEpglkxJMKK1x1ODE5MgnohpIJxY11CitcdTgyODMJ6IqDCWNoxIFpCitcdTg0QzMJ6JODCXPFjXUKK1x1ODhBNQnooqUJdHXFjQorXHU4OUMzCeingwlrdcSrCitcdThGQzcJ6L+HCWd1xY0KK1x1OEZDQwnov4wJamnEgQorXHU5MEE0CemCpAl4xKtuCitcdTkwRUUJ6YOuCXpoxY11CitcdTk1MzcJ6ZS3CWNoxIFpCitcdTk1OUEJ6ZaaCWppxIFuCitcdTk1QzEJ6ZeBCWLEgW8KK1x1OTY3OQnpmbkJc2jEk25nCitcdTk3QkEJ6Z66CXTEgW5nCitcdTk5RUYJ6aevCXpoxasKK1x1OUFFQwnpq6wJcMSTbmcKK1x1OUFGOAnpq7gJZ8WNbmcKK1x1OUJDMgnpr4IJc8WrCitcdTc2ODQJ55qECWTEkworXHU0RTg2CeS6hglsxJMKK1x1NEVCQQnkuroJcsOpbgorXHU4RkQ5Cei/mQl6aMOoCitcdTRFMkQJ5LitCXpoxY1uZworXHU1OTI3CeWkpwlkw6AKK1x1OEJGNAnor7QJc2h1xY0KK1x1NUI1MAnlrZAJeseQCitcdTU0OEMJ5ZKMCWjDqQorXHU1NzMwCeWcsAlkxJMKK1x1NTFGQQnlh7oJY2jFqworXHU5MDUzCemBkwlkw6BvCitcdTVGOTcJ5b6XCWTDqQorXHU5MEEzCemCowluw6AKK1x1ODk4MQnopoEJecOgbworXHU0RUU1CeS7pQl5x5AKK1x1NEYxQQnkvJoJaHXDrAorXHU4RkM3Cei/hwlndcOyCitcdTkxQ0MJ6YeMCWzHkAorXHU1QzBGCeWwjwl4aceObworXHU0RTQ4CeS5iAltxJMKK1x1NTk3RAnlpb0JaMeObworXHU5MEZECemDvQlkxY11CitcdThENzcJ6LW3CXHHkAorXHU2MjEwCeaIkAljaMOpbmcKK1x1NTNFQQnlj6oJemjEqworXHU0RjVDCeS9nAl6dcOyCitcdTVGNTMJ5b2TCWTEgW5nCitcdTc3MEIJ55yLCWvDoG4KK1x1NjU4NwnmlocJd8OpbgorXHU1MzQxCeWNgQlzaMOtCitcdTRFM0IJ5Li7CXpox5QKK1x1ODg0QwnooYwJaMOhbmcKK1x1NjVCOQnmlrkJZsSBbmcKK1x1NTI0RAnliY0JcWnDoW4KK1x1NjI0MAnmiYAJc3XHkgorXHU4OUMxCeingQlqacOgbgorXHU5NzYyCemdogltacOgbgorXHU2QzExCeawkQltw61uCitcdTUyMDYJ5YiGCWbEk24KK1x1NTkxNgnlpJYJd8OgaQorXHU4RUFCCei6qwlzaMSTbgorXHU0RTlCCeS6mwl4acSTCitcdTRFMEUJ5LiOCXnDugorXHU4RkRCCei/mwlqw6xuCitcdTZDRDUJ5rOVCWbHjgorXHU2QjY0CeatpAljx5AKK1x1NTZERQnlm54JaHXDrQorXHU3NDA2CeeQhglsx5AKK1x1N0Y4RQnnvo4JbcSbaQorXHU3MEI5CeeCuQlkaceObgorXHU3OUNECeenjQl6aMeSbmcKK1x1NTE2OAnlhagJcXXDoW4KK1x1NTQxMQnlkJEJeGnDoG5nCitcdTZCNjMJ5q2jCXpow6huZworXHU1NDBECeWQjQltw61uZworXHU1OTczCeWlswlux5oKK1x1NjczQQnmnLoJasSrCitcdTdCNDkJ562JCWTEm25nCitcdTUxRTAJ5YegCWrHkAorXHU1Rjg4CeW+iAloxJtuCitcdTYyNTMJ5omTCWTHjgorXHU0RkJGCeS+vwliacOgbgorXHU5MUNECemHjQljaMOzbmcKK1x1NzZGOAnnm7gJeGnEgW5nCitcdTZCMjEJ5qyhCWPDrAorXHU2NTNGCeaUvwl6aMOobmcKK1x1NjU1OQnmlZkJamnEgW8KK1x1ODk3Rgnopb8JeMSrCitcdTVFNzMJ5bmzCXDDrW5nCitcdTZDMTQJ5rCUCXHDrAorXHU1MzE3CeWMlwlixJtpCitcdTVDMTEJ5bCRCXNox45vCitcdTRFMDcJ5LiHCXfDoG4KK1x1NEU2NgnkuaYJc2jFqworXHU2QkQ0CeavlAlix5AKK1x1NTQ1OAnlkZgJeXXDoW4KK1x1NEU1RAnkuZ0JamnHlAorXHU3QjExCeeskQl4acOgbworXHU5MDFBCemAmgl0xY1uZworXHU1NDdECeWRvQltw6xuZworXHU1RjIwCeW8oAl6aMSBbmcKK1x1OTZCRQnpmr4JbsOhbgorXHU3OTVFCeelnglzaMOpbgorXHU2NTcwCeaVsAlzaMO5CitcdTVCODkJ5a6JCcSBbgorXHU3NjdECeeZvQliw6FpCitcdThERUYJ6LevCWzDuQorXHU2NzFGCeacnwlxxKsKK1x1NTNFQgnlj6sJamnDoG8KK1x1NjNEMAnmj5AJdMOtCitcdTkxRDEJ6YeRCWrEq24KK1x1NjZGNAnmm7QJZ8OobmcKK1x1NTQwOAnlkIgJaMOpCitcdTY1M0UJ5pS+CWbDoG5nCitcdTdDRkIJ57O7CXjDrAorXHU2MjE2CeaIlglodcOyCitcdTUzRjgJ5Y+4CXPEqworXHU1MjI5CeWIqQlsw6wKK1x1NTNDQQnlj4oJasOtCitcdTg5RTMJ6KejCWppxJsKK1x1NTQwNAnlkIQJZ8OoCitcdTUzRjAJ5Y+wCXTDoWkKK1x1OThDRQnpo44JZsSTbmcKK1x1NjIxOAnmiJgJemjDoG4KK1x1NUU3MgnlubIJZ8OgbgorXHU4QkI4CeiuuAl4x5QKK1x1NTE2QgnlhasJYsSBCitcdTc2RjQJ55u0CXpow60KK1x1NjcwRAnmnI0JZsO6CitcdTk4OTgJ6aKYCXTDrQorXHU1RUZBCeW7uglqacOgbgorXHU4MjcyCeiJsglzw6gKK1x1NUI1NwnlrZcJesOsCitcdThCRjcJ6K+3CXHHkG5nCitcdTc2N0UJ55m+CWLHjmkKK1x1NTQwMwnlkIMJY2jEqworXHU0RTQ5CeS5iQl3w7kKK1x1NTE0MwnlhYMJeXXDoW4KK1x1NjcyRgnmnK8Jc2jDuQorXHU4RERGCei3nwlnxJNuCitcdTVFMjYJ5bimCWTDoGkKK1x1NUZFQgnlv6sJa3XDoGkKK1x1Njc2MQnmnaEJdGnDoW8KK1x1ODA1NAnogZQJbGnDoW4KK1x1NUY4MAnlvoAJd8eObmcKK1x1OEJFNQnor6UJZ8SBaQorXHU3RUEyCee6oglow7NuZworXHU1MDE5CeWAmQlow7J1CitcdTRFMDMJ5LiDCXHEqworXHU1RjNBCeW8uglxacOhbmcKK1x1OTc2OQnpnakJZ8OpCitcdTZERjEJ5rexCXNoxJNuCitcdTZDNDIJ5rGCCXFpw7oKK1x1OTFDRgnph48JbGnDoW5nCitcdTdBN0EJ56m6CWvFjW5nCitcdTc1MUEJ55SaCXNow6huCitcdTYyODAJ5oqACWrEqworXHU4QkVECeivrQl5x5QKK1x1NTdGQQnln7oJasSrCitcdTZEM0UJ5rS+CXDDoGkKK1x1NUYwRgnlvI8Jc2jDrAorXHU1MTk5CeWGmQl4acSbCitcdTU0NjIJ5ZGiCW7EkworXHU1MDEyCeWAkglkx45vCitcdTUzRDYJ5Y+WCXHHlAorXHU4QkJFCeiuvglzaMOoCitcdTcyNDgJ54mICWLHjm4KK1x1NzI0NwnniYcJcGnDoG4KK1x1NjI3RQnmib4JemjHjm8KK1x1N0FEOQnnq5kJemjDoG4KK1x1NUU3Rgnlub8JZ3XHjm5nCitcdTVGNjIJ5b2iCXjDrW5nCitcdTU5RDQJ5aeUCXfEm2kKK1x1NjIzRgnmiL8JZsOhbmcKK1x1OTY0NQnpmYUJasOsCitcdTk5OTYJ6aaWCXNox5J1CitcdTYzNkUJ5o2uCWrDuQorXHU1QkZDCeWvvAlkx45vCitcdTYyRkYJ5ou/CW7DoQorXHU5OTk5CemmmQl4acSBbmcKK1x1NzdGMwnnn7MJc2jDrQorXHU4MkU1CeiLpQlydcOyCitcdTUxNzUJ5YW1CWLEq25nCitcdTY4MjEJ5qChCXhpw6BvCitcdTg5QzIJ6KeCCWd1xIFuCitcdTRFODkJ5LqJCXpoxJNuZworXHU3QTc2CeeptglqacWrCitcdTg0M0QJ6JC9CWx1w7IKK1x1NTU5QwnllpwJeMeQCitcdTc5QkIJ56a7CWzDrQorXHU1NzUwCeWdkAl6dcOyCitcdTk2QzYJ6ZuGCWrDrQorXHU1RTlDCeW6nAlmx5QKK1x1NjJDOQnmi4kJbMSBCitcdTlFRDEJ6buRCWjEk2kKK1x1NjgzQwnmoLwJZ8OpCitcdTVDNDAJ5bGACWrDugorXHU2ODM5CeaguQlnxJNuCitcdTY2RkUJ5pu+CWPDqW5nCitcdTUxQzYJ5YeGCXpox5RuCitcdTdFQzgJ57uICXpoxY1uZworXHU1MjA3CeWIhwlxacSTCitcdTU0RUEJ5ZOqCW7HjgorXHU0RTRFCeS5jgloxasKK1x1NEUzRQnkuL4JaseUCitcdTgyRTYJ6IumCWvHlAorXHU3MTY3CeeFpwl6aMOgbworXHU4REIzCei2swl6w7oKK1x1NjJEQgnmi5sJemjEgW8KK1x1NjNBOAnmjqgJdHXEqworXHU1MTc0CeWFtAl4xKtuZworXHU1Rjg1CeW+hQlkxIFpCitcdTdFQTYJ57qmCXl1xJMKK1x1NjBDQQnmg4oJasSrbmcKK1x1N0E4MQnnqoEJdMWrCitcdTUzRjcJ5Y+3CWjDoW8KK1x1N0VERAnnu50JanXDqQorXHU1NDI3CeWQpwlixIEKK1x1NEU5QQnkupoJecOgCitcdTdDN0IJ57G7CWzDqGkKK1x1NkIyMgnmrKIJaHXEgW4KK1x1NTNFNgnlj6YJbMOsbmcKK1x1NTIzQgnliLsJa8OoCitcdTRFRjcJ5Lu3CWppw6AKK1x1NUU5NQnlupUJZMeQCitcdTY1NDUJ5pWFCWfDuQorXHU3NzAxCeecgQlzaMSbbmcKK1x1NkQ4OAnmtogJeGnEgW8KK1x1ODg2MwnooaMJecSrCitcdTUxNzcJ5YW3CWrDuQorXHU2Q0ZECeazvQl6w6kKK1x1N0QyNwnntKcJaseQbgorXHU1OTQ3CeWlhwlxw60KK1x1ODhDNQnoo4UJemh1xIFuZworXHU4NDU3CeiRlwl6aMO5CitcdTZDQjMJ5rKzCWjDqQorXHU0RTI1CeS4pQl5w6FuCitcdTg4NDAJ6KGACXhpxJsKK1x1NjI5NQnmipUJdMOzdQorXHU2NTk3CeaWlwlkw7J1CitcdTgyQ0YJ6IuPCXPFqworXHU2ODA3CeaghwliacSBbworXHU3NUM1CeeXhQliw6xuZworXHU1MzNCCeWMuwl5xKsKK1x1OTYzRgnpmL8JxIEKK1x1N0I1NAnnrZQJZMOhCitcdTUyMDAJ5YiACWTEgW8KK1x1NjdFNQnmn6UJY2jDoQorXHU2NzFECeacnQljaMOhbworXHU3RjU3Cee9lwlsdcOzCitcdTYyQTQJ5oqkCWjDuQorXHU1NTlECeWWnQloxJMKK1x1NEY5QgnkvpsJZ8OybmcKK1x1ODBDQwnog4wJYsOoaQorXHU3MjM3CeeItwl5w6kKK1x1NTRCMQnlkrEJesOhbgorXHU5NTE5CemUmQljdcOyCitcdTY2OTcJ5pqXCcOgbgorXHU2MzkyCeaOkglww6FpCitcdTVGRDkJ5b+ZCW3DoW5nCitcdTZDODkJ5rKJCWNow6luCitcdTU1NEEJ5ZWKCcSBCitcdTc5OEYJ56aPCWbDugorXHU1MjEyCeWIkglodcOhCitcdTgxRjQJ6Ie0CXpow6wKK1x1NjcyOAnmnKgJbcO5CitcdTY1QzEJ5peBCXDDoW5nCitcdTU0MjYJ5ZCmCWbHknUKK1x1OTFDNwnph4cJY8eOaQorXHU5OERGCemjnwlzaMOtCitcdTc2N0IJ55m7CWTEk25nCitcdTdDNzMJ57GzCW3HkAorXHU1MDQ3CeWBhwlqaceOCitcdThGODMJ6L6DCWppw6BvCitcdTgzQjcJ6I63CWh1w7IKK1x1OTAxRgnpgJ8Jc8O5CitcdTY1NEMJ5pWMCWTDrQorXHU1OTJFCeWkrgl5xIFuZworXHU1MTdCCeWFuwl5x45uZworXHU2MzA5CeaMiQnDoG4KK1x1NUVBNwnluqcJenXDsgorXHU3RUY0Cee7tAl3w6lpCitcdTZFMTAJ5riQCWppw6BuCitcdTgwREMJ6IOcCXNow6huZworXHU4NUNGCeiXjwljw6FuZworXHU1RjAyCeW8ggl5w6wKK1x1ODlEMgnop5IJamnHjm8KK1x1NjVCRAnmlr0Jc2jEqworXHU2QTIxCeaooQltw7MKK1x1ODM0OQnojYkJY8eObworXHU2N0QwCeafkAltx5J1CitcdTk2MzUJ6Zi1CXpow6huCitcdTVERUUJ5beuCWNow6AKK1x1NUY4QgnlvosJbMecCitcdTc1MzAJ55SwCXRpw6FuCitcdTZCRDIJ5q+SCWTDugorXHU2Q0UyCeazoglixY0KK1x1NjM2MgnmjaIJaHXDoG4KK1x1NTJCMwnlirMJbMOhbworXHU1NEM4CeWTiAloxIEKK1x1OEREMQnot5EJcMeObworXHU4RDg1Cei2hQljaMSBbworXHU3MEM4CeeDiAlsacOoCitcdThENzYJ6LW2CWfHjm4KK1x1NzUzQgnnlLsJaHXDoAorXHU0RUJGCeS6vwl5w6wKK1x1N0QyMAnntKAJc8O5CitcdTVDMUEJ5bCaCXNow6BuZworXHU5NjY5CemZqQl4aceObgorXHU2NTYzCeaVowlzx45uCitcdTk0OUYJ6ZKfCXpoxY1uZworXHU0RjVCCeS9mwlmw7oKK1x1OEJBOAnorqgJdMeObworXHU2NkYyCeabsglxx5QKK1x1NzNBOQnnjqkJd8OhbgorXHU1MzgyCeWOggljaMeObmcKK1x1ODBBRgnogq8Ja8SbbgorXHU1MzRGCeWNjwl4acOpCitcdTVFNzgJ5bm4CXjDrG5nCitcdTZFMjkJ5ripCXfEk24KK1x1NzU5MQnnlpEJecOtCitcdTdCNTYJ562WCWPDqAorXHU1QjgxCeWugQluw61uZworXHU1MzU2CeWNlgltw6BpCitcdTg0OTkJ6JKZCW3DqW5nCitcdTgyNkYJ6ImvCWxpw6FuZworXHU2NzQyCeadggl6w6EKK1x1NjJDRAnmi40JcMSBaQorXHU3Mzg3CeeOhwlsx5wKK1x1NTU2NgnllaYJbMSBCitcdTYzODgJ5o6ICXNow7J1CitcdTZDQjkJ5rK5CXnDs3UKK1x1NzlFRgnnp68JasSrCitcdTVFQUQJ5bqtCXTDrW5nCitcdTdBOTcJ56qXCWNodcSBbmcKK1x1NjI2QwnmiawJecOhbmcKK1x1NTM2MQnljaEJa8eOCitcdTk2RUEJ6ZuqCXh1xJsKK1x1NzI1QgnniZsJbmnDugorXHU0RTA4CeS4iAl6aMOgbmcKK1x1NTc0RgnlnY8JaHXDoGkKK1x1OUM5QwnpspwJeGnEgW4KK1x1NkJENQnmr5UJYsOsCitcdTc1NjUJ55WlCWzDvMOoCitcdTU5QkIJ5aa7CXHEqworXHU5MDAyCemAgglzaMOsCitcdTk4ODQJ6aKECXnDuQorXHU3NzVCCeedmwlqxKtuZworXHU1MjNBCeWIugljw6wKK1x1N0VCNwnnurcJZsSTbgorXHU2MkVDCeaLrAlrdcOyCitcdTk2NEQJ6ZmNCWppw6BuZworXHU1OTU0CeWllAlixJNuCitcdTkxQ0UJ6YeOCXnEmworXHU3OTgxCeemgQlqw6xuCitcdTdEMjIJ57SiCXN1x5IKK1x1NkIzRQnmrL4Ja3XHjm4KK1x1NjVDNQnml4UJbMeaCitcdTkwMDMJ6YCDCXTDoW8KK1x1OEJDRAnor40JY8OtCitcdTcxOUYJ54afCXNow7oKK1x1OUIzQwnprLwJZ3XHkAorXHU5QUE4CemqqAlnx5QKK1x1NkIzMgnmrLIJecO5CitcdTVGODEJ5b6BCXpoxJNuZworXHU4RkNFCei/jgl5w61uZworXHU0RTAxCeS4gQlkxKtuZworXHU2NzMxCeacsQl6aMWrCitcdTU3MjMJ5ZyjCXNow6huZworXHU4REMzCei3gwl5dcOoCitcdTVGMDQJ5byECW7Dsm5nCitcdTU0NDAJ5ZGACXnEgQorXHU0RUQ4CeS7mAlmw7kKK1x1NjU2QwnmlawJasOsbmcKK1x1NzZEMQnnm5EJamnEgW4KK1x1NUU5MwnlupMJa8O5CitcdTUxQjAJ5YawCWLEq25nCitcdTc4NkMJ56GsCXnDrG5nCitcdTUwMUYJ5YCfCWppw6gKK1x1NjI5OAnmipgJemjDqQorXHU5MDU3CemBlwl5w60KK1x1NTFFMQnlh6EJZsOhbgorXHU2MkEyCeaKoglxaceObmcKK1x1Njc2Rgnmna8JYsSTaQorXHU2MUMyCeaHgglkx5JuZworXHU2MkRDCeaLnAliw6BpCitcdTZEMUIJ5rSbCWx1w7IKK1x1NkRFMQnmt6EJZMOgbgorXHU2RjZFCea9rgljaMOhbworXHU1Mzc3CeWNtwlqdceObgorXHU4QkY4CeivuAl6aMWrCitcdTU1MkYJ5ZSvCXfDqWkKK1x1NTkzQQnlpLoJZHXDsworXHU5MDEwCemAkAl6aMO6CitcdTcxRDUJ54eVCXnDoG4KK1x1NTQ0NgnlkYYJZMSBaQorXHU2RDZBCea1qglsw6BuZworXHU2MkJECeaKvQljaMWNdQorXHU3RUI1Cee6tQl6w7JuZworXHU4MDM2CeiAtgl5xJMKK1x1NjQ3OAnmkbgJbcWNCitcdTYyRTkJ5oupCXrDqQorXHU4MjBECeiIjQlzaMSbCitcdTRFNTgJ5LmYCWNow6luZworXHU1OTY1CeWlpQnDoG8KK1x1NzU2QQnnlaoJZsSBbgorXHU2REY3Cea3twlow7puCitcdTcwNkQJ54GtCW1pw6gKK1x1NTNFQwnlj6wJemjEgW8KK1x1NzZEQgnnm5sJc2jDqG5nCitcdTY4MzgJ5qC4CWjDqQorXHU3RUNECee7jQlzaMOgbworXHU1NzA4CeWciAlxdcSBbgorXHU1NDA5CeWQiQlqw60KK1x1OEMzNwnosLcJZ8eUCitcdTUzODkJ5Y6JCWzDrAorXHU4RkY5Cei/uQlqw6wKK1x1OTZGNwnpm7cJbMOpaQorXHU2MzExCeaMkQl0acSBbworXHU2NEFECeaSrQlixY0KK1x1OUVCRAnpur0JbcSBCitcdTdBREUJ56ueCWrDrG5nCitcdTY2RkYJ5pu/CXTDrAorXHU1RERECeW3nQljaHXEgW4KK1x1NEVDNwnku4cJY2jDs3UKK1x1NTNENAnlj5QJc2jFqworXHU4QzBCCeiwiwltw7N1CitcdTRFQzEJ5LuBCXLDqW4KK1x1ODc4RAnono0JcsOzbmcKK1x1NjU0RgnmlY8JbceQbgorXHU3RDJGCee0rwlsw6hpCitcdTgzNjEJ6I2hCWTDoG5nCitcdTdDQ0EJ57OKCWjDugorXHU3MkI5CeeKuQl5w7N1CitcdTdBMEUJ56iOCXNodcOsCitcdTYyQjUJ5oq1CWTHkAorXHU5MDY1CemBpQl5w6FvCitcdTc3MDkJ55yJCW3DqWkKK1x1NTFBMAnlhqAJZ3XDoG4KK1x1NTE5MgnlhpIJbcOgbworXHU3QTc3CeeptwlxacOzbmcKK1x1OEQzOAnotLgJbcOgbworXHU0RTg4CeS6iAl5x5QKK1x1NEZBNwnkvqcJY8OoCitcdTZDQkYJ5rK/CXnDoW4KK1x1NjJENAnmi5QJYsOhCitcdTU4QzEJ5aOBCWLDrAorXHU2NUU2CeaXpglkw6BuCitcdTY4MEYJ5qCPCWzDoW4KK1x1ODM1MgnojZIJaHXEgW5nCitcdTkwM0MJ6YC8CWLEqworXHU1NDEzCeWQkwl4acOgCitcdThGOUIJ6L6bCXjEq24KK1x1OTY2QQnpmaoJcMOpaQorXHU1QjlDCeWunAl5w60KK1x1OUE3QgnpqbsJemjDuQorXHU4NDBECeiQjQlww61uZworXHU2QzYxCeaxoQl3xasKK1x1NjI1MQnmiZEJcMWrCitcdTU4NUUJ5aGeCXPDoGkKK1x1OTY4NgnpmoYJbMOzbmcKK1x1N0E3NAnnqbQJeHXDqAorXHU3OEU4CeejqAltw7MKK1x1NEYwRgnkvI8JZsO6CitcdTZDRTUJ5rOlCW7DrQorXHU1Rjg0CeW+hAlqw6xuZworXHU4RDU2Cei1lglsw6BpCitcdTYxMjQJ5oSkCWbDqG4KK1x1NUJCRgnlrr8Jc8O5CitcdTc1QkUJ55a+CWrDrQorXHU3QzRECeexjQlqw60KK1x1NTE3QwnlhbwJamnEgW4KK1x1OTcxRQnpnJ4JeGnDoQorXHU2MjRFCeaJjgl6aMSBCitcdTg1ODQJ6JaECWLDsworXHU2MzI0CeaMpAlqx5AKK1x1NTQxMAnlkJAJdMeUCitcdTlCNDIJ6a2CCWjDum4KK1x1NkQwMQnmtIEJamnDqQorXHU2NzlECeaenQl6aMSrCitcdTk2NzcJ6Zm3CXhpw6BuCitcdTc1MzIJ55SyCWppx44KK1x1NEUyNwnkuKcJc8OgbmcKK1x1NzIyQwnniKwJcMOhCitcdTUwNzYJ5YG2CceSdQorXHU2NjQzCeaZgwlodcOgbmcKK1x1OEQ2NAnotaQJY2jDrAorXHU3MEMyCeeDgglsw6BuCitcdTZDRjAJ5rOwCXTDoGkKK1x1NTJEMgnli5IJbMOoCitcdTcwQjgJ54K4CXpow6AKK1x1NkM2QQnmsaoJd8SBbmcKK1x1Njg0MgnmoYIJZ3XDrAorXHU1QzNFCeWwvgl3xJtpCitcdTZGMDIJ5ryCCXBpx45vCitcdTY0OTIJ5pKSCXPHjgorXHU4MDlBCeiCmglkw7kKK1x1NjNDRgnmj48JbWnDoW8KK1x1NEU0RgnkuY8JZsOhCitcdTZFRDEJ5ruRCWh1w6EKK1x1NUJDMgnlr4IJasOsCitcdTZDNjQJ5rGkCXTEgW5nCitcdTY3MzUJ5py1CWR1x5IKK1x1NEY3MwnkvbMJamnEgQorXHU2QkMxCeavgQlodceQCitcdThGQTkJ6L6pCWJpw6BuCitcdTg2QzcJ6JuHCXNow6kKK1x1NkM4OAnmsogJc2jEm24KK1x1NjdBQgnmnqsJZsSTbmcKK1x1ODIwNQnoiIUJamnDuQorXHU1RTdECeW5vQl5xY11CitcdTZCM0EJ5qy6CXHEqworXHU4NDhCCeiSiwlqaceObmcKK1x1ODFFMwnoh6MJY2jDqW4KK1x1OEZERAnov50Jd8OpaQorXHU0RThGCeS6jwlrdcSrCitcdTRFMjIJ5LiiCWRpxasKK1x1NjNGNAnmj7QJeXXDoW4KK1x1ODAxMAnogJAJbsOgaQorXHU4MEQ2CeiDlglww6BuZworXHU1NEZDCeWTvAloxJNuZworXHU4RkIxCei+sQlyx5QKK1x1NzYyNgnnmKYJc2jDsnUKK1x1N0JBRAnnrq0JamnDoG4KK1x1N0Y3MgnnvbIJc2jHlAorXHU4RDc0Cei1tAlmw7kKK1x1N0VFOQnnu6kJasOsCitcdTk1RjcJ6Ze3CW3DqG4KK1x1Nzk2NQnnpaUJeGnDoW5nCitcdTcyRkMJ54u8CWzDoW5nCitcdTU5NzQJ5aW0CW7DugorXHU1QzNBCeWwugljaMeQCitcdTgxNTAJ6IWQCWbHlAorXHU2QkI3Ceautwl5xKtuCitcdTU3Q0IJ5Z+LCW3DoWkKK1x1NkUyMQnmuKEJZMO5CitcdTg4NkIJ6KGrCXNoxIFuCitcdThERTgJ6LeoCWt1w6AKK1x1ODI3MAnoibAJamnEgW4KK1x1ODM3NwnojbcJaMOpCitcdTY1Q0IJ5peLCXh1w6FuCitcdTk0QkIJ6ZK7CXp1xIFuCitcdTVCOEYJ5a6PCWjDs25nCitcdTY2OTYJ5pqWCW51x45uCitcdTU5NDgJ5aWICW7DoGkKK1x1N0Y1QQnnvZoJZsOhCitcdTYyRkUJ5ou+CXNow60KK1x1ODEwOQnohIkJbcOgaQorXHU4MUVECeiHrQljaMOydQorXHU3ODBECeegjQlrx45uCitcdTYzMjgJ5oyoCcSBaQorXHU4OUM4CeiniAlsx45uCitcdTk0REMJ6ZOcCXTDs25nCitcdTdGOUUJ576eCXhpxasKK1x1Njg2MwnmoaMJZMeObmcKK1x1NjI5QgnmipsJcMSBbworXHU4OEU0CeijpAlrw7kKK1x1NEYzMAnkvLAJZ8WrCitcdTgwREUJ6IOeCWLEgW8KK1x1NzM5QgnnjpsJbceOCitcdTY0QTQJ5pKkCWNow6gKK1x1NjU3MgnmlbIJcWnEgW8KK1x1NzZENwnnm5cJY2jDqW5nCitcdTYyNjMJ5omjCWvDsnUKK1x1NTM4QwnljowJecSBCitcdThEQ0MJ6LeMCWRpxJMKK1x1ODQ2MwnokaMJZMeSbmcKK1x1NTIzNwnliLcJc2h1xIEKK1x1OEQ4QgnotosJY8O5CitcdThEMkYJ6LSvCWd1w6BuCitcdTYyRTgJ5ouoCWLFjQorXHU5MDBBCemAiglzaMWrCitcdTc5NkQJ56WtCWrDrAorXHU5N0FECemerQliacSBbgorXHU5MDIyCemAoglmw6luZworXHU2N0NGCeafjwlix45pCitcdTlBNzYJ6am2CXNox5AKK1x1N0VCRAnnur0JbmnHlAorXHU4RTJBCei4qgljaHXDsgorXHU5NTEwCemUkAlkdcOsCitcdTU1ODcJ5ZaHCWzEgQorXHU0RTdFCeS5vglnxIFuCitcdTc3NDEJ552BCXN1xY0KK1x1NEVENAnku5QJesSrCitcdTU4QTgJ5aKoCW3DsgorXHU0RkYxCeS/sQlqw7kKK1x1OEQyMQnotKEJZ8OybmcKK1x1OEQ2MgnotaIJZ8OybmcKK1x1OUE3MAnpqbAJY2jDrQorXHU2OEQyCeajkgliw6BuZworXHU1MzM5CeWMuQlwxKsKK1x1ODEwNgnohIYJY3XDrAorXHU4RDI0Cei0pAl4acOhbgorXHU2MkM2CeaLhgljaMSBaQorXHU2NDQ0CeaRhAluacOoCitcdTU2M0YJ5Zi/CWjEk2kKK1x1OEQzQQnotLoJaMOoCitcdTdGRTAJ57+gCWN1w6wKK1x1N0YxRAnnvJ0JZsOpbmcKK1x1NjI5QQnmipoJZseUCitcdTUzREIJ5Y+bCXDDoG4KK1x1NzE5OQnnhpkJeMSrCitcdTc2RDIJ55uSCWjDqQorXHU4REVBCei3qglndcOsCitcdTc4OTEJ56KRCWLEk2kKK1x1NTQ3NQnlkbUJaMSTCitcdTZEMTIJ5rSSCXPHjgorXHU4MzhFCeiOjglzaMSBCitcdTYyQjkJ5oq5CW3HkgorXHU1MzYyCeWNoglsw7oKK1x1Nzg4RAnnoo0Jw6BpCitcdTY2NTUJ5pmVCXnFq24KK1x1NjJFNgnmi6YJbMOhbgorXHU3MUMzCeeHgwlyw6FuCitcdTcyQzQJ54uECWTDrQorXHU2MkJDCeaKvAl5xIEKK1x1ODIwQwnoiIwJc2jDqQorXHU2N0RDCeafnAlndcOsCitcdTUyNEEJ5YmKCXh1xJMKK1x1Njc0NgnmnYYJZ8eObgorXHU1Q0E5CeWyqQl5w6FuCitcdTU1ODIJ5ZaCCXfDqGkKK1x1NjI1NAnmiZQJcsSTbmcKK1x1NzZDNgnnm4YJcMOpbgorXHU1RkExCeW+oQl5w7kKK1x1ODI3RQnoib4Jw6BpCitcdTU1MDkJ5ZSJCcSBaQorXHU1OUU1CeWnpQlsx45vCitcdTk4QTAJ6aKgCWRpxIFuCitcdTU5RkIJ5ae7CXnEq24KK1x1ODJBQwnoiqwJZsSTbgorXHU2MjQ3CeaJhwlzaMOgbgorXHU4MkFGCeiKrwl4xKtuCitcdTUyRkUJ5Yu+CWfFjXUKK1x1NzI2NwnniacJbcO5CitcdTUxMTIJ5YSSCXLDugorXHU1NEJECeWSvQl5xIFuCitcdTU0MjgJ5ZCoCWTFq24KK1x1ODY2QgnomasJY2jDs25nCitcdTgxNTUJ6IWVCXfHjm4KK1x1N0ZDMQnnv4EJd8STbmcKK1x1NTRBOAnlkqgJesSrCitcdTVDNEYJ5bGPCXDDrW5nCitcdTZDQzQJ5rOECXhpw6gKK1x1NkRGQgnmt7sJdGnEgW4KK1x1OTA3NQnpgbUJesWrbgorXHU2NzU2Ceadlgl6aMOgbmcKK1x1OEE5MwnoqpMJc2jDrAorXHU2Q0UxCeazoQlwxIFvCitcdTkwMDYJ6YCGCW7DrAorXHU1ODZCCeWhqwl0acOhbgorXHU1OTE1CeWklQl4w6wKK1x1ODg3MAnoobAJY3XEqworXHU4NTlCCeiWmwl4dcSTCitcdTRFQzYJ5LuGCXDFqworXHU4RkM4Cei/iAlndceObmcKK1x1NjI4NAnmioQJY2jEgW8KK1x1NkUzNAnmuLQJa8SbCitcdTc1OEYJ55aPCXNoxasKK1x1ODg3NwnoobcJemjFjW5nCitcdTYyRDMJ5ouTCXR1w7IKK1x1NTM1MwnljZMJemh1w7MKK1x1NzVDNwnnl4cJemjEk25nCitcdTk0QTYJ6ZKmCXHEq24KK1x1NTRFOQnlk6kJbMSrCitcdTczQ0EJ54+KCXNoxIFuCitcdTZEQ0IJ5reLCWzDrG4KK1x1NjBBNgnmgqYJeXXDqAorXHU4MjczCeiJswliw7MKK1x1ODQ1QgnokZsJZ8OpCitcdTdGNTUJ572VCWjHjm4KK1x1ODE4MAnohoAJYseObmcKK1x1OTg4OAnpoogJZ8SbbmcKK1x1ODExNgnohJYJYsOzCitcdTgxM0UJ6IS+CXDDrQorXHU1ODIxCeWgoQlix45vCitcdTVBMDcJ5aiHCWppxIFvCitcdTk2NDAJ6ZmACXR1w7MKK1x1ODRDNAnok4QJeMO5CitcdTU3NUYJ5Z2fCWbDqW4KK1x1OTg4MgnpooIJcsOzbmcKK1x1NkYwRgnmvI8JbMOydQorXHU2NzZECeadrQlow6FuZworXHU4RjlGCei+nwliw6wKK1x1NkQ2NgnmtaYJcMeUCitcdTU0MDEJ5ZCBCXnDuQorXHU1NEM0CeWThAloxY1uZworXHU4Mjk5CeiKmQlmw7oKK1x1NjJEQQnmi5oJcMOgbgorXHU4RjY4Cei9qAlkw6BpCitcdTc2RUYJ55uvCWTEq25nCitcdTc4NTUJ56GVCXNow60KK1x1NUJCNAnlrrQJecOgbgorXHU3RkYwCee/sAlow6BuCitcdTgxOUQJ6IadCXjEqworXHU5Njc1CemZtQlsw61uZworXHU5MDNCCemAuwlsdcOzCitcdTUyODgJ5YqICXDEqworXHU1RUM5CeW7iQlsacOhbgorXHU4RDI5Cei0qQlmw6BuCitcdTdFRDgJ57uYCWh1w6wKK1x1NUQxNgnltJYJecOhCitcdThGQjAJ6L6wCWNow6luCitcdTZEQUYJ5ravCXnDoQorXHU2MjA4CeaIiAlnxJMKK1x1NjREMgnmk5IJccOtbgorXHU1ODM1CeWgtQlkx5QKK1x1NjMzRAnmjL0Jd8eObgorXHU4Njc5CeiZuQlow7NuZworXHU2OEIwCeaisAl4acOoCitcdTZFQUEJ5rqqCXjEqworXHU2NTkxCeaWkQlixIFuCitcdTVCRTEJ5a+hCWd1x44KK1x1NUZBQQnlvqoJeMO6bgorXHU2M0EwCeaOoAlsw7zDqAorXHU2NjE0CeaYlAl4xKsKK1x1NUZCRAnlvr0JaHXEqworXHU1NUVGCeWXrwnEk24KK1x1NEUyQgnkuKsJecSBCitcdTlDOEQJ6bKNCWLDoG8KK1x1NURGNwnlt7cJeGnDoG5nCitcdTUwMkEJ5YCqCW7DrQorXHU3QjUyCeetkgl0x5JuZworXHU3OUQyCeenkgltaceObworXHU2Q0JFCeayvgl6aMSBbgorXHU4MjU4CeiJmAlzxY11CitcdTU0RDcJ5ZOXCWh1w6EKK1x1NEVBOQnkuqkJbceUCitcdTUyMzgJ5Yi4CXF1w6BuCitcdTZERUIJ5rerCXnDrW4KK1x1NTk4NAnlpoQJd8OgbmcKK1x1NTNDOQnlj4kJY2jEgQorXHU3NzkyCeeekgltw6FuCitcdTU0M0UJ5ZC+CXfDugorXHU0RkE4CeS+qAlxacOhbworXHU1NTc4CeWVuAl4acOgbworXHU2Q0UzCeazowlxw6wKK1x1OEQ0QgnotYsJZsO5CitcdTcxQUMJ54asCcOhbworXHU1NEIzCeWSswlrw6kKK1x1ODA4QwnogowJasSrCitcdThFQUMJ6LqsCWfFjW5nCitcdTYyRDgJ5ouYCWrFqworXHU1M0VFCeWPrglkxKtuZworXHU1NEM3CeWThwl3xIEKK1x1NjY3NAnmmbQJccOtbmcKK1x1OEMxQwnosJwJbcOtCitcdTU0NUMJ5ZGcCXfFqworXHU5ODgxCemigQlixIFuCitcdTVCRTgJ5a+oCXpow6BpCitcdTVDM0YJ5bC/CW5pw6BvCitcdTk4OEEJ6aKKCWppw6EKK1x1OTAyRQnpgK4JZMeOaQorXHU1MzVDCeWNnAlixY0KK1x1NjYyRAnmmK0JemjEgW8KK1x1NTZDQQnlm4oJbsOhbmcKK1x1NjMyQQnmjKoJbnXDsworXHU1MTVDCeWFnAlkxY11CitcdTY2NzAJ5pmwCXjEqworXHU3Q0Q1CeezlQlnxIFvCitcdTg4RDQJ6KOUCXnDrAorXHU5NEE5CemSqQlnxY11CitcdTU2MzIJ5ZiyCWNow6FvCitcdTUwOEQJ5YKNCWLDoG5nCitcdTUyRkYJ5Yu/CXfDuQorXHU4MENFCeiDjgl0xIFpCitcdTgwQzMJ6IODCXfDqGkKK1x1ODhGOAnoo7gJbHXHkgorXHU3QTkxCeeqkQl5w6FvCitcdTk0RUQJ6ZOtCW3DrW5nCitcdTZDOTAJ5rKQCW3DuQorXHU2RTBBCea4igl5dcSBbgorXHU1MTQwCeWFgAl3w7kKK1x1NUM2NQnlsaUJbMeaCitcdTc1NUMJ55WcCWNow7kKK1x1N0M5RQnnsp4JeMSrCitcdTY0MDIJ5pCCCWzHknUKK1x1OTZDMQnpm4EJecOgbgorXHU1MDI2CeWApglqdcOgbgorXHU2NTAwCeaUgAlwxIFuCitcdTU0OTIJ5ZKSCXpow7J1CitcdTkwNDIJ6YGCCXN1w6wKK1x1NkY4NAnmvoQJY2jDqW5nCitcdTgwMzgJ6IC4CXPHkm5nCitcdTU1NjEJ5ZWhCWbEk2kKK1x1OTExOQnphJkJYseQCitcdTg4MjIJ6KCiCWNox5RuCitcdTgyQTYJ6IqmCWzDugorXHU4MEYzCeiDswlnxJMKK1x1NUUxNgnluJYJdGnEmworXHU3MTMwCeeEsAl5w6BuCitcdTgxMEEJ6ISKCWrDrQorXHU5NkMwCembgAlxdcOoCitcdTVFMDYJ5biGCWbEgW4KK1x1ODAwRAnogI0Jc2h1x44KK1x1NkRCNQnmtrUJaMOhbgorXHU2RkExCea+oQl6x45vCitcdTdDQUEJ57KqCWbDqG4KK1x1ODA5RAnogp0JZ8SBbgorXHU2RjZECea9rQl0w6FuCitcdTgzMDIJ6IyCCW3DoG8KK1x1NjgzRAnmoL0JesSBaQorXHU3RjM0Cee8tAlqaceObworXHU4RTQ4Cei5iAlkx45vCitcdTU1ODAJ5ZaACWvEgQorXHU2REMwCea3gAlkacOgbgorXHU4NzIxCeicoQlsw6AKK1x1NTZCQwnlmrwJanXDqQorXHU5MDFCCemAmwlndcOgbmcKK1x1OUFBNAnpqqQJemjDsnUKK1x1OEJFNwnor6cJY2jDoAorXHU4MEY2CeiDtglqacSBbworXHU1NEM5CeWTiQl6xIFpCitcdThCQkQJ6K69CWbEm25nCitcdTZCNzkJ5q25CWTHjmkKK1x1NjIzMwnmiLMJY2h1xY0KK1x1NjVGMQnml7EJaMOgbgorXHU1RUZGCeW7vwluacOgbgorXHU4NEU2CeiTpgltw7IKK1x1NEU1OQnkuZkJeceQCitcdTY4RkEJ5qO6CWd1xIFuCitcdTZFREUJ5rueCXpow6wKK1x1OEJGNQnor7UJc8OybmcKK1x1ODBCQQnogroJZsOoaQorXHU2QzQxCeaxgQl6aMSrCitcdTdFQjEJ57qxCXNoxIEKK1x1NjEyMwnmhKMJbMOobmcKK1x1ODEwMgnohIIJemjEqworXHU3MDk1CeeClQlrw6BuZworXHU0RjFFCeS8nglzx45uCitcdTk0RjgJ6ZO4CXpow7kKK1x1ODA0MgnogYIJbmnDqAorXHU2OEE4CeaiqAlsw60KK1x1NTRFNgnlk6YJxY0KK1x1NTMxNQnljJUJYsOsCitcdTcxMDkJ54SJCXnEgW4KK1x1OTY5OQnpmpkJeMOsCitcdTU3QUUJ5Z6uCWt1x44KK1x1OTE3Rgnphb8JbmnDoG5nCitcdTlFNDUJ6bmFCcOpCitcdTZEQTkJ5rapCXPDqAorXHU3NjRDCeeZjAnDoWkKK1x1NkQ0RgnmtY8JbGnDugorXHU1M0FFCeWOrglzxKsKK1x1NzE1RQnnhZ4Jc2jDoAorXHU4MTlDCeiGnAltw7MKK1x1OTcwRQnpnI4Jc2jDoAorXHU4MzI4CeiMqAljw60KK1x1N0M5OAnnspgJbmnDoW4KK1x1NjcxNAnmnJQJc2h1w7IKK1x1NTY2MgnlmaIJxY0KK1x1NjMyQgnmjKsJY3XFjQorXHU4NjUwCeiZkAluw7zDqAorXHU5QjQ1CemthQltw6hpCitcdThGQUIJ6L6rCWJpw6BuCitcdTlDQzQJ6bOECcOoCitcdTg5QzUJ6KeFCW3DrAorXHU2QzEzCeawkwltw6FuZworXHU4QzQxCeixgQlodcOyCitcdTUzNTIJ5Y2SCXrDugorXHU4NUM5CeiXiQlqacOoCitcdTUzNzgJ5Y24CXhpw6gKK1x1NjI0MQnmiYEJYmnHjm4KK1x1ODM0NgnojYYJasSrbmcKK1x1NTNFOAnlj6gJZMSBbworXHU4NTJDCeiUrAlzaMWrCitcdTdFRjgJ57u4CWNow7N1CitcdTVBN0YJ5am/CXjDuQorXHU2RDQ3Cea1hwlqacSBbworXHU3OTQ4CeeliAlxx5AKK1x1NEU1MwnkuZMJcMSBbmcKK1x1OTVGNQnpl7UJbceQbgorXHU5RUVGCem7rwnDoG4KK1x1N0VGRAnnu70JemjDoG4KK1x1NTNFRAnlj60JYsSBCitcdTVGMEEJ5byKCWLDrAorXHU3MDc2CeeBtgl6w6BvCitcdTkxOEIJ6YaLCWPDuQorXHU3QTNECeeovQlqxKsKK1x1NjJEOQnmi5kJemh1w7MKK1x1NUM2Rgnlsa8JdMO6bgorXHU5RTIwCem4oAlqacWrCitcdTU0MzEJ5ZCxCXpoxKsKK1x1NjBENQnmg5UJdMOsCitcdTY4MTcJ5qCXCWzDrAorXHU2M0UzCeaPowljaHXHjmkKK1x1ODJEMQnoi5EJeXXDoG4KK1x1Nzc2QwnnnawJY8eOaQorXHU4NDcxCeiRsQljxY1uZworXHU2NDg3CeaShwlwacSbCitcdTgzQ0MJ6I+MCWrFq24KK1x1NjhBMgnmoqIJc2jEgW8KK1x1OEQzRgnotL8JaHXDrAorXHU1MTZFCeWFrgl4xKsKK1x1ODg0RAnooY0JeceObgorXHU4RDRFCei1jglzaMO6CitcdTZEQ0MJ5reMCXTHjm5nCitcdTYyNUIJ5ombCWvDoW5nCitcdTU0QTcJ5ZKnCWxpxJMKK1x1Njc0OQnmnYkJc2jEgW4KK1x1ODY0RgnomY8JbMeUCitcdTc0MTAJ55CQCXN1x5IKK1x1NzJFMQnni6EJamnHjm8KK1x1NkUzQQnmuLoJbWnHjm8KK1x1NkM4MwnmsoMJd8OyCitcdTY0MTMJ5pCTCWN1xY0KK1x1NjhBNwnmoqcJd8O6CitcdTU0MkQJ5ZCtCWvEk25nCitcdTg3NDcJ6J2HCXnDrW5nCitcdTg0NkIJ6JGrCWjDugorXHU2RDk1Cea2lQl0w6wKK1x1NTQ4QgnlkosJeseOCitcdTRFREUJ5LueCXLDqG4KK1x1NjI3MwnmibMJYsSBbgorXHU3NjJCCeeYqwl0xIFuCitcdTU0QTYJ5ZKmCXnDrQorXHU0RjYzCeS9owl5w7JuZworXHU5MDRGCemBjwnDqAorXHU3NDA1CeeQhQlsw6FuZworXHU4NTFBCeiUmgl3w6hpCitcdTZEM0QJ5rS9CXFpw6AKK1x1ODY5NQnompUJY8OhbgorXHU1QkRECeWvnQlxx5BuCitcdTgyREYJ6IufCWfHknUKK1x1ODA0QgnogYsJbMOzbmcKK1x1NjhBRAnmoq0Jc3XFjQorXHU1MkRGCeWLnwltw7kKK1x1NTc4NAnlnoQJbMeSbmcKK1x1ODJBRAnoiq0JYsSBCitcdTU0N0IJ5ZG7CXNoxJNuCitcdThEQjQJ6La0CXDEgQorXHU2MDhECeaCjQlow6BuCitcdTZGMkEJ5ryqCXnEqworXHU3NUE0CeeWpAlixIEKK1x1N0M5Rgnnsp8Jc8O5CitcdTk4OTAJ6aKQCXnDrQorXHU2QTkwCeaqkAl5w6FuCitcdTRGM0EJ5Ly6CWPDrAorXHU3QTk4CeeqmAlqaceSbmcKK1x1NTVDNQnll4UJeGnDuQorXHU2MkNFCeaLjglsxKtuZworXHU5NjEwCemYkAljaMeObgorXHU2Q0ZCCeazuwl4acOoCitcdTRGRUQJ5L+tCWppx45uCitcdTVCMDkJ5ayJCXjEqworXHU2ODE2CeaglglxxKsKK1x1NkNBRQnmsq4JaseUCitcdTU2MEUJ5ZiOCWfEgQorXHU3RkU5Cee/qQlwacSBbgorXHU0RTRECeS5jQl6aMOgCitcdTU0QUYJ5ZKvCWfEkworXHU3MDExCeeAkQlww7kKK1x1NzU5QQnnlpoJamnDuQorXHU2MjdDCeaJvAnDqAorXHU2MjUyCeaJkglixIEKK1x1NTcyQQnlnKoJZ8STCitcdTk2OEIJ6ZqLCXN1w60KK1x1NTQ1QgnlkZsJcWnDoG5nCitcdTcwQUYJ54KvCWppx5JuZworXHU4N0JBCeieuglsdcOzCitcdTdENkUJ57WuCXjDuQorXHU2NzYwCeadoAlnw6BuZworXHU4Nzc0CeidtAlow7oKK1x1OUUzRAnpuL0JZ8STCitcdTc5NUYJ56WfCXN1w6wKK1x1NjRBOQnmkqkJbGnDoW8KK1x1NjBEQQnmg5oJaMWrCitcdTYzMjAJ5oygCW7DoW8KK1x1ODUxMwnolJMJbcOgbgorXHU4NUU5CeiXqQlmxIFuCitcdTk0QjAJ6ZKwCXnDuQorXHU4NDBFCeiQjgl3xJtpCitcdTk3NjEJ6Z2hCW3DrQorXHU2OTEyCeakkglqacSBbworXHU1M0U5CeWPqQlrw7J1CitcdTVFRDYJ5buWCWxpw6BvCitcdTc1MkQJ55StCWLDqW5nCitcdTY1MTgJ5pSYCXLHjm5nCitcdTg3RjkJ6J+5CXhpw6gKK1x1NUY4QQnlvooJaHXDoWkKK1x1NzdGNgnnn7YJasSrCitcdTU1RDQJ5ZeUCWNoxJNuCitcdTY0QUUJ5pKuCWN1xY0KK1x1ODJCRAnoir0JecOhCitcdTYxQ0EJ5oeKCcOgbworXHU4RTBDCei4jAljaMOzdQorXHU3RjAwCee8gAl6aHXDrAorXHU5NjAwCemYgAlmw6EKK1x1NTRDNgnlk4YJZHXFjQorXHU1OTJECeWkrQl5xIFvCitcdTYyQzcJ5ouHCW3HlAorXHU1Rjk4CeW+mAlww6FpCitcdThFMEEJ6LiKCXnHkm5nCitcdTc0OEIJ55KLCXpoxIFuZworXHU4RkY4Cei/uAliw6huZworXHU3MzJDCeeMrAl3w6hpCitcdTgyRDQJ6IuUCXTDoWkKK1x1OTE2MwnphaMJaMSBbgorXHU5NEYyCemTsgljaMeObgorXHU2NEMyCeaTgglsw6hpCitcdTYyRDcJ5ouXCW5pw7kKK1x1NUI1QwnlrZwJesSrCitcdTk1MDQJ6ZSECWNow7oKK1x1NzlBNwnnpqcJeMeQCitcdTYzNDUJ5o2FCXTHkm5nCitcdTg4NTkJ6KGZCXnDoQorXHU5N0EwCemeoAlqxasKK1x1OUFCMAnpqrAJdMOzdQorXHU2NjY0CeaZpAl3w7kKK1x1NTk1NQnlpZUJecOsCitcdThFMDkJ6LiJCWxpw6BuZworXHU5NUY4CemXuAl6aMOhCitcdTgwQUUJ6IKuCcSBbmcKK1x1NTRGRAnlk70JZ8SbbmcKK1x1NjJGRAnmi70Jemh1w6BpCitcdTcwOEEJ54KKCWNodcSrCitcdTgyQjkJ6Iq5CXHDrW4KK1x1NTI3Rgnlib8JamnHjm8KK1x1Njg2OAnmoagJamnHjm5nCitcdTk1MDgJ6ZSICXhpw7kKK1x1NjNCMwnmjrMJbMeUCitcdTRFQTIJ5LqiCWvDoG5nCitcdTVDRDkJ5bOZCXpow6wKK1x1NEVENQnku5UJc2jDrAorXHU4MDhCCeiCiwlsw6hpCitcdTdDM0YJ57C/CWLDuQorXHU5NkNECembjQl5xY1uZworXHU2RDNDCea0vAl3xIEKK1x1NTQ4Rgnlko8JeceSbmcKK1x1NTk0NAnlpYQJeceObgorXHU4NkQ5CeibmQl3xIEKK1x1NkUyMwnmuKMJemjEgQorXHU2QzVCCeaxmwl4w7luCitcdTdDQjEJ57KxCWxpw6FuZworXHU1Rjc3CeW9twlww6FuZworXHU3N0JGCeeevwlxw7oKK1x1NTU2NwnllacJesOpCitcdTgxRkIJ6Ie7CXpoxJNuCitcdTgxMkYJ6ISvCXDDugorXHU3MjYxCeeJoQltx5QKK1x1N0YzMAnnvLAJamnEgW5nCitcdTU1RDIJ5ZeSCXTDoAorXHU2MkY3CeaLtwlrx45vCitcdTYwNjQJ5oGkCXjDuQorXHU3QTk2CeeqlglqacOgbworXHU2MkVECeaLrQlzaMOsCitcdTY2NTYJ5pmWCWh1xKsKK1x1NzhCRQnnor4JbmnHjm4KK1x1NzU5OQnnlpkJZ8STCitcdTlBQTEJ6aqhCWx1w7MKK1x1Nzg0NQnnoYUJZ3XEqworXHU5QTZGCemprwl4w7puCitcdThFNkQJ6LmtCWPDqG5nCitcdTdDQTQJ57KkCXl1w6gKK1x1NTVEQwnll5wJc2jDrAorXHU2MkVGCeaLrwl6aMSbbmcKK1x1NjZGMwnmm7MJecOoCitcdTY4NTQJ5qGUCWrDugorXHU5RjlBCem+mglnxY1uZworXHU2Rjg4Cea+iAljaMOoCitcdTk0QjUJ6ZK1CWLFjQorXHU3MkRFCeeLngluw61uZworXHU4NkU0CeibpAlnw6kKK1x1OTY5OAnpmpgJw6BpCitcdTU0RTcJ5ZOnCWNoxKsKK1x1NzYyOQnnmKkJZMSBCitcdTYzQkEJ5o66CWPDoG4KK1x1NUZENgnlv5YJY8eUbgorXHU2MjJFCeaIrglsw7kKK1x1NzBEOQnng5kJbMOgbworXHU5MEEyCemCogl4w61uZworXHU4RTRCCei5iwl0w6AKK1x1NzYyQQnnmKoJYmnEkworXHU1NTA2CeWUhglzdcWNCitcdTc3NjYJ552mCW3DuQorXHU5NkNDCembjAljw60KK1x1NEYzRAnkvL0JamnEgQorXHU4RjY3Cei9pwlnw6EKK1x1Nzc5Rgnnnp8JcGnHjm8KK1x1NTdENAnln5QJcMeUCitcdTU1QjMJ5ZazCWNoxIEKK1x1ODU0OQnolYkJamnEgW8KK1x1NTNGMQnlj7EJY2jDrAorXHU2MENCCeaDiwl3x45uCitcdTZGOEUJ5r6OCXDDqW5nCitcdTYzNzYJ5o22CWNodcOtCitcdTZFQkEJ5rq6CW7DrAorXHU1NjRFCeWZjgl5xJMKK1x1NkVDNwnmu4cJZGnEgW4KK1x1OEJDRgnor48JemjDoG8KK1x1OUFEMwnpq5MJc3XHkAorXHU5NTJECemUrQlkw6xuZworXHU3QUE2Ceeqpglkw7J1CitcdTZGNjYJ5r2mCWzHjm8KK1x1NTIyOAnliKgJcMOhbworXHU1Njc2CeWZtglnw6EKK1x1ODMzOAnojLgJcsOzbmcKK1x1ODIzNgnoiLYJYsOzCitcdTY4RjEJ5qOxCWzDqW5nCitcdTc2NkIJ55mrCWRpxIFuCitcdTgzMkMJ6IysCWNow6EKK1x1ODA4NwnogocJemjDoG8KK1x1ODc0RQnonY4JeGnEkworXHU3QzM4CeewuAlix5IKK1x1ODMzOQnojLkJcsO6CitcdTYwNkMJ5oGsCXRpw6FuCitcdTYyQkYJ5oq/CW3HkG4KK1x1OTU1MQnplZEJYsOgbmcKK1x1N0I3NQnnrbUJecOhbgorXHU1QUQ2CeWrlglwacOhbworXHU4RkMyCei/ggl5xasKK1x1ODE0QgnohYsJecOoCitcdTZENTIJ5rWSCWjHlAorXHU4NDc1CeiRtQlrdcOtCitcdTY5MEUJ5qSOCXpodcSrCitcdTc3NkIJ552rCWppw6kKK1x1NTI0QwnliYwJbMOhCitcdThENDIJ6LWCCWzDuQorXHU3RkI5Cee+uQlnxJNuZworXHU4NTRBCeiViglydceQCitcdTZDQTUJ5rKlCWzDrAorXHU2NDgyCeaSgglsacOgbworXHU3RjJBCee8qgltacO5CitcdTg5MTAJ6KSQCWjDqAorXHU4REY3Cei3twlxacSBbworXHU5NDk3CemSlwljaMSBaQorXHU4N0M2Ceifhgltw6EKK1x1NTQyRQnlkK4Jc2jHlG4KK1x1NUZCNQnlvrUJemjEk25nCitcdTczQUUJ546uCXfEm2kKK1x1ODVEMAnol5AJbWnHjm8KK1x1OTY4NQnpmoUJecO6CitcdThERTQJ6LekCWppxIFvCitcdThGODQJ6L6ECXpow6kKK1x1NjFGNQnmh7UJbcSbbmcKK1x1NTVFOAnll6gJaMSBaQorXHU3OUU0CeenpAljaMOobmcKK1x1Nzg2QgnnoasJbGnDugorXHU4RTFFCei4nglqw7kKK1x1N0NCRAnnsr0JesOybmcKK1x1OTE3NQnphbUJeGnDoG8KK1x1ODgxNQnooJUJcsO6CitcdTk3MzkJ6Zy5CXDEqworXHU3QTIwCeeooAljaMOzdQorXHU4RTRBCei5igl4xKsKK1x1NkNCQwnmsrwJemjHjm8KK1x1Njg0NQnmoYUJd8OpaQorXHU4MzlFCeiOngl3x45uCitcdTk1MUEJ6ZSaCW3DoW8KK1x1ODE0QwnohYwJecSBbgorXHU3NzdGCeedvwlydcOsCitcdTY0NzkJ5pG5CW3DsworXHU2QzkzCeaykwl0w6AKK1x1NzUyQwnnlKwJeceSbmcKK1x1ODQ0NgnokYYJYseObworXHU1MEVFCeWDrgl0w7NuZworXHU2OTNGCeakvwljaMWrbgorXHU1NzlCCeWemwlkdceSCitcdTk0OEEJ6ZKKCXpoxIFvCitcdTdFREEJ57uaCXh1w6BuCitcdTcwRTgJ54OoCXnDqAorXHU4Rjk4Cei+mAlsw7kKK1x1ODc1OQnonZkJYmnEgW4KK1x1N0E3OQnnqbkJcWnDs25nCitcdTg3MTgJ6JyYCXpoxKsKK1x1NjJBMAnmiqAJa8WNdQorXHU1NEQyCeWTkglkxIEKK1x1N0JDNgnnr4YJemh1w6BuCitcdTYzNEIJ5o2LCWzHmgorXHU3MkYwCeeLsAl6aMSTbmcKK1x1NzU3OAnnlbgJasSrCitcdTgwMTgJ6ICYCXnDum4KK1x1N0ZDQwnnv4wJecOsCitcdTg3MDgJ6JyICXfDugorXHU4NjdCCeiZuwltw6luZworXHU1RjA4CeW8iAl5w6wKK1x1NTY2NAnlmaQJasOsbgorXHU4QzA2Ceiwhgl6aMWrbgorXHU5QUVGCemrrwlyw6FuCitcdTg3M0YJ6Jy/CXfEgW4KK1x1NUI1QQnlrZoJZsO6CitcdTRFOUYJ5LqfCWrDrQorXHU4OEY0CeijtAlww6lpCitcdTc2Q0UJ55uOCcOgbmcKK1x1NTY4NQnlmoUJcsO6CitcdTgzMTcJ6IyXCW3DrW5nCitcdTY0NUUJ5pGeCWx1w7IKK1x1NjgxMwnmoJMJc2h1xIFuCitcdTc2NUUJ55meCWzDoGkKK1x1ODBFRAnog60JecSBbgorXHU0RjJCCeS8qwl6aMO5CitcdTk2NDcJ6ZmHCWzHkm5nCitcdTk3MDYJ6ZyGCXTDrW5nCitcdThGRTUJ6L+lCWppx5JuZworXHU1MjUwCeWJkAlndceOCitcdTVGOTkJ5b6ZCXjHkAorXHU3NkM1CeebhQl6aMWNbmcKK1x1ODM1NAnojZQJbMOsCitcdTgxQ0EJ6IeKCXPDoG8KK1x1NkM2OQnmsakJZ8eUCitcdTY0QUMJ5pKsCXFpw6BvCitcdTY5OTUJ5qaVCXLDs25nCitcdTk1RjAJ6ZewCXLDuW4KK1x1ODBBQQnogqoJZsOhbmcKK1x1NjJDNAnmi4QJemjHlAorXHU4MTEwCeiEkAlqxKsKK1x1NzFBMAnnhqAJecOsCitcdTUwNTUJ5YGVCWppxJMKK1x1NEY1NwnkvZcJdHXDsworXHU0RjhGCeS+jwl6aMWrCitcdTk1MzUJ6ZS1CXFpxIFuZworXHU5QUZCCemruwlqw6wKK1x1ODgyMQnooKEJbMOtCitcdTRFMTUJ5LiVCXDHkAorXHU5NzczCemdswlqw6xuCitcdTU1OTQJ5ZaUCXfFjQorXHU2QzJGCeawrwlsx5wKK1x1NzFDRQnnh44JbGnDoW8KK1x1NTlBOQnlpqkJd8eUCitcdTZEOTQJ5raUCWPDqW4KK1x1NzAxQQnngJoJaMOgbgorXHU2RjMzCea8swl6aMSBbmcKK1x1NTYyRAnlmK0JcMOpbmcKK1x1NzcwOAnnnIgJZMSBbgorXHU2MDc4CeaBuAl0w7JuZworXHU4MjhCCeiKiwl5w7kKK1x1OTE0QgnphYsJcWnDugorXHU4NjExCeiYkQltw7MKK1x1NzdCMwnnnrMJdMOzbmcKK1x1NzdBMAnnnqAJY2jEk25nCitcdTc4RjcJ56O3CWzDrW4KK1x1NzM1NwnnjZcJanXDqQorXHU1MDJECeWArQl3xY0KK1x1OTE0OQnphYkJeceSdQorXHU5NTUwCemVkAlnx45vCitcdTg2NkMJ6JmsCXFpw7oKK1x1ODFCQgnohrsJc2jEgW4KK1x1NzZGOQnnm7kJZMeUbgorXHU2Q0NDCeazjAliw6wKK1x1OUFBNQnpqqUJasOsCitcdTVFN0EJ5bm6CXnEgW8KK1x1NzA5QwnngpwJd8SbaQorXHU5MDVCCemBmwlsacO6CitcdTgzOTgJ6I6YCXjEq24KK1x1OTEzMQnphLEJcMOzCitcdTZDOEYJ5rKPCXHEqworXHU5QTg1CemqhQlodcOhCitcdThDMjcJ6LCnCW3DrAorXHU2M0I4CeaOuAljaMOhbgorXHU4OTFCCeikmwlsx5oKK1x1ODZERgnom58JamnEgW8KK1x1NEZERgnkv58Jc8OsCitcdTcxMEEJ54SKCWjDoG4KK1x1Njg2MgnmoaIJemjEk24KK1x1ODAxOQnogJkJcMOhCitcdTk1MjIJ6ZSiCWfDuQorXHU1NTMwCeWUsAlzaHXEgQorXHU2QzdFCeaxvglmw6luCitcdThCQjkJ6K65CcOpCitcdTlDREQJ6bOdCXNow6BuCitcdTkwMDUJ6YCFCWjDsnUKK1x1ODAzNwnogLcJZMSBCitcdTYzQTMJ5o6jCWNow6gKK1x1ODNFMAnoj6AJYsWNCitcdTk2QkQJ6Zq9CWp1w6BuCitcdTk5NzUJ6aW1CcSbcgorXHU2REI4Cea2uAlow6kKK1x1ODMxQwnojJwJcWnDoG4KK1x1NjI0OAnmiYgJaMO5CitcdTdFQUIJ57qrCXLDqG4KK1x1NkU4OQnmuokJZ8OgaQorXHU2OTJECeakrQl0dceSCitcdTlFQkUJ6bq+CWh1xKsKK1x1NjA0MQnmgYEJbcOzdQorXHU2Q0Q3Ceazlwlzw6wKK1x1NTI3RAnlib0JcGnEgW8KK1x1OTUzOQnplLkJbMOsCitcdTg3MTMJ6JyTCXTDrW5nCitcdTkxNkEJ6YWqCWzDoG8KK1x1OUU1NwnpuZcJw6gKK1x1NzQwRgnnkI8JbGnDoW4KK1x1NjM5NgnmjpYJecSTCitcdTUwODAJ5YKACWt1x5AKK1x1NzY4OAnnmogJZ3XEqworXHU2REM3Cea3hwlxw60KK1x1OTRDMAnpk4AJecOzdQorXHU2NUNDCeaXjAlqxKtuZworXHU1M0MxCeWPgQlzxIFuCitcdTZENUMJ5rWcCWLEq24KK1x1NzYzNAnnmLQJemjDoG5nCitcdTc3QjAJ556wCWvDoG4KK1x1NTBBOQnlgqkJbnXDsworXHU2Q0ZFCeazvglqw6xuZworXHU4N0NCCeifiwl4xKsKK1x1NzYyMAnnmKAJasOtCitcdTVDRTUJ5bOlCXpoxJNuZworXHU1MDBDCeWAjAlndcSBbgorXHU2RTZFCea5rgl5xIFuCitcdTg1MkIJ6JSrCW5pxIFuCitcdTk0Q0UJ6ZOOCWR1w7MKK1x1ODE4MgnohoIJbMeaCitcdThDMTIJ6LCSCXTDrQorXHU2NTM4CeaUuAlixKtuCitcdTlFMjgJ6bioCWLHjm8KK1x1ODUzNwnolLcJcWnDoW5nCitcdTc4M0EJ56C6CWzDrAorXHU4OUNBCeiniglnx5QKK1x1ODZBNAnomqQJeseObworXHU1NTIyCeWUoglqxKsKK1x1NjA2QgnmgasJZMOybmcKK1x1NUE5QgnlqpsJeXXDoW4KK1x1ODg2OQnooakJY2jHjgorXHU3MUE4CeeGqAl5w7luCitcdTk0OTkJ6ZKZCWfDoGkKK1x1OTU2QwnplawJaHXDsgorXHU3RUI2Cee6tglsw7puCitcdTgxMEQJ6ISNCWt1w6BpCitcdTU0RDAJ5ZOQCWt1xIFuZworXHU3ODc3CeehtwlqaceObgorXHU5MTc2CemFtgltw6lpCitcdTgyQUUJ6IquCXJ1w6wKK1x1ODFDMwnoh4MJecWNbmcKK1x1Njc1RQnmnZ4JcceQCitcdTg3MUEJ6JyaCWbEm2kKK1x1NTA0OAnlgYgJasOsCitcdTZDOTQJ5rKUCW1px45uCitcdTRFRTgJ5LuoCWbHjm4KK1x1OEU3NgnoubYJanXDqQorXHU4MDA2CeiAhglxw60KK1x1ODI4RAnoio0Jc2jDoW8KK1x1OUI0NwnprYcJeceObgorXHU5NzUzCemdkwlqw6xuZworXHU4QzA0CeiwhAljaMeObgorXHU3NUI1CeeWtQljxKsKK1x1OEZFNAnov6QJecOtCitcdTdGREYJ57+fCWTDrQorXHU1MTA2CeWEhglqx5BuZworXHU1NURGCeWXnwlqacSTCitcdTgzMDkJ6IyJCW3DsgorXHU5MTU3CemFlwl4w7kKK1x1NzU5Rgnnlp8JbsO8w6gKK1x1NkFBQwnmqqwJbcOpbmcKK1x1NzZFNQnnm6UJZ3XDoG4KK1x1N0VBNQnnuqUJZ8STCitcdTc1QjkJ55a5CXpoxJtuCitcdTk5NkYJ6aWvCWppw6BuCitcdTk3MDEJ6ZyBCWrDrAorXHU2OTQyCealggljaMOhCitcdTY0QzAJ5pOACWfHjm4KK1x1NTc5MwnlnpMJZ8SBaQorXHU4M0MxCeiPgQlqxKtuZworXHU2OUMxCeangQlnx45vCitcdTZGRUYJ5r+vCXpodcOzCitcdTYzQzQJ5o+ECXnDugorXHU1Q0NCCeWziwl4w7puCitcdTcyRDkJ54uZCWrFqworXHU2Rjc4Cea9uAlzaMSBbgorXHU1NzNCCeWcuwlxw60KK1x1NTZFNAnlm6QJdMO6bgorXHU3RUZBCee7uglsaceUCitcdTgxOTgJ6IaYCWJpxIFvCitcdTU0QUQJ5ZKtCWrEqworXHU4MzVGCeiNnwlodcOsCitcdTRGNUEJ5L2aCXnDrAorXHU4RDg0Cei2hAlqxasKK1x1ODBFNAnog6QJecOsbgorXHU1QTI5CeWoqQltaceObgorXHU4OEYxCeijsQliaceObworXHU3OTU3Ceellwl6aMSrCitcdTYzRjYJ5o+2CXnDqQorXHU3QTk1CeeqlQl0aceObworXHU3NTNBCeeUugl0x5BuZworXHU3RUEzCee6owl6aMOydQorXHU1QjVCCeWtmwliw7MKK1x1NUI2QwnlrawJbsSBbworXHU2RjE1Cea8lQljw6FvCitcdTUwN0IJ5YG7CWzDs3UKK1x1OUE5QgnpqpsJw6BvCitcdTkwQjAJ6YKwCXTDoWkKK1x1OEMyQQnosKoJamnDoG4KK1x1OTRCRQnpkr4JamnHjgorXHU1QjUxCeWtkQlqacOpCitcdTU1OUYJ5ZafCWt1w6wKK1x1N0U5QgnnupsJZMOgbworXHU1NDY2CeWRpgl5xY11CitcdTcxNzIJ54WyCWLHjm8KK1x1ODE3NAnohbQJecO6CitcdTgzODYJ6I6GCXDDugorXHU1QjcxCeWtsQljaMOhbgorXHU3MzUwCeeNkAl6aMSBbmcKK1x1NjFGRgnmh78JecOsCitcdTRGRUEJ5L+qCWzDrAorXHU2MzFFCeaMngl0w6AKK1x1ODZDNgnom4YJccWrCitcdTk0RUMJ6ZOsCWfDqQorXHU5ODhDCemijAlow6kKK1x1OTU2QgnplasJZMOobmcKK1x1ODFFNwnoh6cJesSBbmcKK1x1NkU1RgnmuZ8JaHXDoW5nCitcdTRGNUQJ5L2dCWfFjXUKK1x1ODRERgnok58JasOsCitcdTg2QjEJ6JqxCXpow6AKK1x1NjdEQQnmn5oJecOydQorXHU2MTc1CeaFtQl5xY1uZworXHU4MEYwCeiDsAl5w60KK1x1NkNGOAnms7gJbMO6CitcdTVEODIJ5baCCXpow6BuZworXHU5RUNECem7jQlzaMeUCitcdTgyQUIJ6IqrCXl1w6FuCitcdTg3QUIJ6J6rCXNow6wKK1x1OTRFNAnpk6QJdMeQbmcKK1x1NjYxNQnmmJUJeMSrbgorXHU2OEMyCeajgglsw61uZworXHU2QzUwCeaxkAl4xKsKK1x1OEQzMAnotLAJw6hyCitcdTg3QjMJ6J6zCXTDoW5nCitcdTk1MzcJ6ZS3CcOoCitcdTc3N0UJ552+CWfEgW8KK1x1ODMwMQnojIEJemh1w7MKK1x1NTRCQgnlkrsJeGnFqworXHU1NDcyCeWRsgl6xKsKK1x1ODIyMgnoiKIJc2jEgW4KK1x1NkRGQwnmt7wJbWnHjm8KK1x1Njg4Rgnmoo8JZ8O5CitcdTY4NEUJ5qGOCXpow6wKK1x1ODJCRQnoir4JZsOoaQorXHU5NTYyCemVoglqdcOpCitcdTc5NDkJ56WJCXpox5AKK1x1NkMyNAnmsKQJecSrbgorXHU2NzQ4CeadiAljaMSBCitcdTVDNTAJ5bGQCWrEqworXHU4MzdCCeiNuwlkw60KK1x1NTBFRAnlg60JamnDoG4KK1x1ODhFOAnoo6gJYsOsCitcdTk0QkEJ6ZK6CXl1w6gKK1x1ODM1RQnojZ4JcWnDoW8KK1x1N0YxOQnnvJkJasOsbgorXHU1NkVCCeWbqwlow7oKK1x1ODk0MQnopYEJcWnHjm5nCitcdTc4MjMJ56CjCXR1w7MKK1x1NUEwOQnlqIkJcMSrbmcKK1x1OEU0OQnouYkJY3XFjQorXHU5ODg5CemiiQlqacOhCitcdTgzQ0YJ6I+PCWjDqQorXHU4MDlCCeiCmwlnxIFuZworXHU3NzE5CeecmQljaMOsCitcdTZBNTAJ5qmQCXR1w7MKK1x1Njc3NwnmnbcJcMOhCitcdTczNjAJ542gCWxpw6FvCitcdTU1ODEJ5ZaBCXnDugorXHU4MEZBCeiDugnDoG4KK1x1OUFFRAnpq60JesSrCitcdTg2RUQJ6JutCXpow6wKK1x1NjVFRgnml68JbMOhCitcdTU2NEMJ5ZmMCWPEk25nCitcdTlFOTIJ6bqSCXHDrQorXHU3NTc5CeeVuQl3x45uCitcdTYwMkIJ5oCrCWbDqGkKK1x1NEY1RQnkvZ4JbsOsbmcKK1x1OUU1RQnpuZ4JecOhbworXHU5MDk1CemClQl5xY1uZworXHU5MDIxCemAoQlxxatuCitcdTY5NTQJ5qWUCXhpxJMKK1x1N0ZBRgnnvq8JamnDqQorXHU3NUMyCeeXgglqacSBCitcdTZCOTIJ5q6SCXnHlG4KK1x1NkU0RQnmuY4JbWnHjm4KK1x1NkNBRAnmsq0Jc2jDuQorXHU5Nzg1CemehQl5xIFuZworXHU5NEJGCemSvwlkacOgbgorXHU2NEQ4CeaTmAliw7IKK1x1OEY5QQnovpoJbMOtbgorXHU2QzEwCeawkAlkxKsKK1x1NkRCRgnmtr8Jemh1w7MKK1x1NUU5NgnlupYJcMOhbworXHU3MzZECeeNrQl0x44KK1x1NzMzNwnnjLcJecOzdQorXHU1NDY0CeWRpAlsw61uZworXHU2RjVFCea9nglsw7kKK1x1NzExOQnnhJkJYsOoaQorXHU2NjMxCeaYsQl5w7kKK1x1NjlBQgnmpqsJc8eUbgorXHU5MUFFCemGrglqacOgbworXHU5ODhECemijQlrxJMKK1x1NjgzRQnmoL4JbHXDoW4KK1x1NjZCOQnmmrkJeGnEgW4KK1x1OEJFRQnor64Ja3XDoG5nCitcdTlDQ0YJ6bOPCWd1xIFuCitcdThGNkQJ6L2tCcOoCitcdTY4NDEJ5qGBCWjDqW5nCitcdTZFNDQJ5rmECW3DqWkKK1x1OEQ2NwnotacJbseObgorXHU4NzdDCeidvAlix45uZworXHU4NzA3Ceichwl6aMOpCitcdTY4NjQJ5qGkCXHEqworXHU1NUM0CeWXhAlzaMOgCitcdTVERkQJ5be9CXjDuW4KK1x1ODZGOQnom7kJeceSbmcKK1x1OTRDNgnpk4YJbceObworXHU0Rjk3CeS+lwl0w7NuZworXHU5MTY5CemFqQltw61uZworXHU2RkUwCea/oAlow6FvCitcdTZFMUEJ5riaCXpox5QKK1x1N0VFNgnnu6YJdMSBbworXHU3QkMxCeevgQlodcOhbmcKK1x1OTRCOAnpkrgJYsOzCitcdTZCNDMJ5q2DCXNow6AKK1x1Njk2QgnmpasJasOtCitcdTU5QUYJ5aavCXpow7N1CitcdTZGQjkJ5r65CWTDoG4KK1x1OTYxNwnpmJcJanXDqQorXHU3MzIxCeeMoQlsdcOzCitcdTU5NTgJ5aWYCXrDoG5nCitcdTRFQjMJ5LqzCWLDsworXHU2Q0M1CeazhQlxacO6CitcdTk1MzAJ6ZSwCW3Em25nCitcdTc3RkUJ55++CWbDoW4KK1x1NkRFQwnmt6wJY3XDrAorXHU5ODgwCemigAlrxJtuCitcdTY3N0MJ5p28CXpow7kKK1x1N0YxRgnnvJ8JZ8eObworXHU2RDJFCea0rgl0w6FvCitcdTU2MkMJ5ZisCXp1xY0KK1x1OUY4MwnpvoMJaseUCitcdTZCMzkJ5qy5CXnEqworXHU4MEY0CeiDtAlkw7JuZworXHU4MjFCCeiImwljaHXHjm4KK1x1ODUzQQnolLoJZsO5CitcdTgyRDIJ6IuSCXLHjm4KK1x1NzgyRAnnoK0JYmnEgW4KK1x1N0VCMAnnurAJYseQCitcdTZGOEQJ5r6NCXNow7kKK1x1ODJBOQnoiqkJccOtbgorXHU1MUVCCeWHqwlmw7oKK1x1NzVGQwnnl7wJZ8O5CitcdTkwMTEJ6YCRCXFpw7oKK1x1NkZFRQnmv64JcMO6CitcdTU1RjUJ5Ze1CXTFjW5nCitcdTc1QzgJ55eICWxpxJMKK1x1OUVFOQnpu6kJZMO6CitcdThFMDUJ6LiFCWNow6wKK1x1OUY4OQnpvokJbMeSbmcKK1x1OTUxMgnplJIJbMOhbmcKK1x1ODMyRAnojK0JamnEgW8KK1x1ODJENQnoi5UJdGnDoW8KK1x1N0NDRAnns40JY8OtCitcdTYyMDYJ5oiGCWfDoG5nCitcdTcxNEEJ54WKCWppx45uCitcdTY2OEMJ5pqMCWt1w60KK1x1NjIxNwnmiJcJcWnEgW5nCitcdTY3NTMJ5p2TCXNow6FvCitcdTdFRDQJ57uUCWvDuQorXHU5MEQ3CemDlwljaMSrCitcdThBM0UJ6Ki+CXrEqworXHU3QjMzCeesswlqacSBCitcdTk4NzgJ6aG4CWTDugorXHU3NUU3CeeXpwlzaMSBCitcdTdGMzUJ57y1CWd1w6BuCitcdTZGMkYJ5ryvCXTDoAorXHU2QzRBCeaxigljaMOgCitcdTgyRkIJ6Iu7CWbDugorXHU2MDNDCeaAvAlkdcOsCitcdTcxMTAJ54SQCXTEgW8KK1x1NjJDQQnmi4oJZseUCitcdTk2NDIJ6ZmCCXDDrQorXHU4ODY0CeihpAljaMeOCitcdTY1QzQJ5peECW3DoW8KK1x1NjY1RgnmmZ8Jc2jDqG5nCitcdTZBMkYJ5qivCWPDs25nCitcdTdGMjYJ57ymCW3DoG4KK1x1N0YxNwnnvJcJbcOtbgorXHU2MzIyCeaMoglqaceObworXHU4NEQ2CeiTlgliw6wKK1x1OEM0OQnosYkJY2jHkAorXHU3NUZGCeeXvwl3xJtpCitcdTZFNkIJ5rmrCWppx45vCitcdTZEREQJ5redCWbDqWkKK1x1OTk5MAnpppAJeGnFqworXHU1NDU2CeWRlglsw6wKK1x1ODU1OQnolZkJaHXDrAorXHU4Qzg5CeiyiQlow6FvCitcdTZFQzEJ5ruBCWNow7oKK1x1N0U0NwnnuYcJecOhbworXHU3NUQ2CeeXlglwxKsKK1x1NkI0NgnmrYYJeMSrbgorXHU4RjdFCei9vgl5w6AKK1x1NkI4MQnmroEJbcOyCitcdThGRTgJ6L+oCWTDoGkKK1x1NTRCNAnlkrQJaHXDoQorXHU4NTg1CeiWhQloxIFvCitcdTgzQjQJ6I60CXfFjQorXHU5RTg4Cem6iAl6aMeUCitcdTg5REEJ6KeaCWfFqworXHU4RTcwCei5sAljaMO6CitcdTg5MkIJ6KSrCWNox5AKK1x1OEQzRAnotL0JZ8eUCitcdTYzNkQJ5o2tCWLHjmkKK1x1ODQ1QQnokZoJcsOobgorXHU5MEM1CemDhQl6aMOsCitcdTUwMjUJ5YClCWvFjW5nCitcdTk1NEEJ6ZWKCW5pw6gKK1x1OTFCNAnphrQJbMeQCitcdTdDN0MJ57G8CXhpxIFuCitcdTg3MjIJ6JyiCW3Em25nCitcdTg2QjYJ6Jq2CWjEgW4KK1x1N0FFNgnnq6YJc8eSbmcKK1x1NzU3MgnnlbIJc2jEkworXHU2N0I4CeaeuAlnx5J1CitcdTZEMzkJ5rS5CWh1w6FuCitcdThDMkYJ6LCvCXFpw6FvCitcdTkwRTcJ6YOnCXDHknUKK1x1OTQ5MgnpkpIJZsOhbgorXHU5RTg3Cem6hwlqxatuCitcdTc2MTkJ55iZCXPEgW8KK1x1NzRFMAnnk6AJaMO5CitcdThGNkIJ6L2rCXLDqG4KK1x1NkQwQwnmtIwJbGnDqAorXHU5NjFBCemYmglrw6BuCitcdTk1RkMJ6Ze8CWvEgWkKK1x1NUM5OAnlspgJcMOtCitcdTgyREMJ6IucCW3DuQorXHU4MkE4CeiKqAlqxKsKK1x1OTc1QgnpnZsJZGnDoG4KK1x1OUVFNwnpu6cJbMOtCitcdThFN0MJ6Lm8CXDDugorXHU4NjhECeiajQlix5AKK1x1ODAxMgnogJIJbMSbaQorXHU3MTczCeeFswlow7oKK1x1OUY1MQnpvZEJasSrCitcdTcyN0UJ54m+CXfDugorXHU3RjAxCee8gQlqxKsKK1x1NjA5RAnmgp0Ja3XEqworXHU1NEQ5CeWTmQlrdcOgaQorXHU4NTlDCeiWnAliw6wKK1x1ODM2NQnojaUJcWnDoW4KK1x1OTMzRQnpjL4JaHXDsgorXHU4REJBCei2uglmxasKK1x1OTE2Rgnpha8JemjHkAorXHU5NTZBCemVqglxacSBbmcKK1x1OTRDQgnpk4sJYsOsCitcdTc4OUIJ56KbCXHDrAorXHU4MERECeiDnQl6aMSrCitcdTY5Q0UJ5qeOCWNow6EKK1x1Njg0OQnmoYkJxIFuCitcdTY3QjMJ5p6zCXpox5AKK1x1NUMzQgnlsLsJa8SBbworXHU2RDYwCea1oAl4xKsKK1x1NkNBOQnmsqkJaHXDrAorXHU1OTQxCeWlgQlkxKsKK1x1ODU1RQnolZ4JenXDrAorXHU4MzdECeiNvQlzdcSrCitcdTgzNzgJ6I24CWLDrQorXHU3NTVBCeeVmglixJtuCitcdTc3RkQJ55+9CXjEqworXHU3OTNCCeekuwlzaMOsCitcdTcxMkYJ54SvCWNoxIFvCitcdTgwRkMJ6IO8CXBpw6FuCitcdTY5NzgJ5qW4CXFpxasKK1x1NjkxMAnmpJAJasWrCitcdTY4RjAJ5qOwCWNodcOtCitcdTY4NTUJ5qGVCWfEgW8KK1x1NzJGNwnni7cJanXDoG4KK1x1NURCNwnltrcJecOtCitcdTU1NzUJ5ZW1CWLFjQorXHU5MTA0CemEhAlqdcOgbgorXHU0RjY0CeS9pAl3x44KK1x1OUIzMgnprLIJZ8OpCitcdTk2RTAJ6ZugCWNoxKsKK1x1OERCMQnotrEJeseObgorXHU4MTJDCeiErAlwxIFvCitcdTdGMkIJ57yrCXPEgW8KK1x1N0VBMQnnuqEJecWrCitcdTU5QUIJ5aarCWd1xKsKK1x1NkQ5RQnmtp4JZ3XFjQorXHU5NjA4CemYiAl5w7kKK1x1NzM2Rgnnja8JeMWrbgorXHU3MkNECeeLjQlww6FvCitcdTg2MTYJ6JiWCWLDrAorXHU4M0Q2CeiPlgljaMSBbmcKK1x1NEYxQgnkvJsJeceUCitcdTg3OUYJ6J6fCW3DrW5nCitcdThDMzAJ6LCwCWzDoW4KK1x1N0M0MAnnsYAJemjDsnUKK1x1NzY1QwnnmZwJZGnDoG4KK1x1NzdFQwnnn6wJY3XDsworXHU5NTVFCemVngl4w61uCitcdTlFRkIJ6bu7CWbDugorXHU3ODlBCeeimgliw6hpCitcdTc4MjYJ56CmCXpow6BpCitcdTZCNTkJ5q2ZCXNow6gKK1x1NUFGMQnlq7EJcWnDoW5nCitcdTZFQjIJ5rqyCXPFjXUKK1x1NTU4OAnllogJamnEkworXHU4NTdCCeiVuwlow7JuZworXHU4M0YwCeiPsAlnxasKK1x1ODNBOAnojqgJbMOgbmcKK1x1ODM5QwnojpwJZMOtCitcdTU3MkMJ5ZysCXfFqworXHU4QzFECeiwnQlwacOhbgorXHU2MzRDCeaNjAlixIEKK1x1OUFCMQnpqrEJeGnDqAorXHU5NzA4CemciAlww6hpCitcdTdCMjUJ56ylCXPDrAorXHU4ODE2CeiglglodcOyCitcdTk0RUIJ6ZOrCXRpw6FvCitcdTcxRTAJ54egCXnDuQorXHU4MEQ3CeiDlwl6aMSTbgorXHU2NjM2CeaYtgljaMeObmcKK1x1NkI4MgnmroIJY8O6CitcdTY5RkYJ5qe/CWrHkG4KK1x1NjlBNwnmpqcJZsSbaQorXHU2Q0VFCeazrglww6BuCitcdTk5OTUJ6aaVCW7DoW5nCitcdTU3N0IJ5Z27CWTHkAorXHU5MEVCCemDqwlww60KK1x1NTIwOAnliIgJecOsCitcdTlBQkEJ6aq6CWfDsnUKK1x1OUNBRQnpsq4JbMOtbmcKK1x1OTM2QQnpjaoJbcOzdQorXHU5RUZFCem7vgltw6luZworXHU4REQ2Cei3lgl6aMOtCitcdTkxQUEJ6YaqCWzDoW8KK1x1ODcyMwnonKMJcWnEgW5nCitcdTgwMjkJ6ICpCWppx45uZworXHU3NjRECeeZjQlixIFuCitcdTY4NkIJ5qGrCXN1xY0KK1x1OUE5RAnpqp0JbGnDugorXHU5QTkyCemqkglrw6gKK1x1NUFEOAnlq5gJbMOpaQorXHU5NjBGCemYjwnDqAorXHU2M0NFCeaPjgl4dcSBbgorXHU4NDhDCeiSjAlsaceUCitcdTg0NzgJ6JG4CXjHkAorXHU5MTQzCemFgwlsw61uZworXHU5NjQ5CemZiQlqw6xuZworXHU1MjYxCeWJoQlzaMOgbgorXHU3MDk0CeeClAlxdcSTCitcdTk3MkEJ6ZyqCXnDrW4KK1x1N0JBQwnnrqwJcnXDsgorXHU5ODgzCemigwlnxIFuZworXHU3NUEwCeeWoAlsw6wKK1x1OTUxRgnplJ8Ja8WrbgorXHU5NDhECemSjQlzaMSBbgorXHU3ODU2CeehlgnDoWkKK1x1NjVGMAnml7AJZ8OgbgorXHU2QTNFCeaovgl5dcOoCitcdTZFRjkJ5ru5CWjFqworXHU2RUJECea6vQlyw7kKK1x1NjM4QQnmjooJcMOzdQorXHU4M0E5CeiOqQlmw7oKK1x1ODNBQQnojqoJw6kKK1x1ODM1QwnojZwJYsOsCitcdTgyQ0UJ6IuOCW3DqW5nCitcdTgyQUEJ6IqqCWNow60KK1x1ODI3OQnoibkJY8eObworXHU1N0Q1CeWflQljaMOpbmcKK1x1OTUxMQnplJEJdMSrCitcdTlFRTUJ6bulCXHDrW5nCitcdTlBRDEJ6auRCWTDugorXHU4OURDCeinnAl6xKsKK1x1OTFBRgnphq8JeMSrCitcdTkxNjQJ6YWkCWfFqworXHU3QjRDCeetjAlxdcOhbgorXHU4NkYxCeibsQlqacOhCitcdTk4QTEJ6aKhCWNow6BuCitcdTgwNEQJ6IGNCW7DrW5nCitcdTg4RjAJ6KOwCWR1xY0KK1x1NzlENQnnp5UJYseQCitcdTk0QTMJ6ZKjCWLHjm4KK1x1NzhCMgnnorIJZMOsCitcdTc4MTcJ56CXCWNoxJMKK1x1NkNGNgnms7YJc2h1xIFuZworXHU2NzEwCeackAlxw7oKK1x1NkExNwnmqJcJY2jFqworXHU3M0EyCeeOoglixKtuCitcdTdGMzMJ57yzCWh1w6FuCitcdTdFRDAJ57uQCWTDoGkKK1x1N0VDMgnnu4IJZsO6CitcdTZGNDYJ5r2GCXBpxJMKK1x1NkVFMgnmu6IJecOtbmcKK1x1NkU4NgnmuoYJeMO5CitcdTk2MDMJ6ZiDCWvHlG4KK1x1NTVDRAnll40JbcOhCitcdTg1QTgJ6JaoCWjFjW5nCitcdTg1NzIJ6JWyCXHDrQorXHU4NEZDCeiTvAlsaceObworXHU4NTM4CeiUuAlkxY11CitcdTgzNTEJ6I2RCXTDrQorXHU1ODAwCeWggAlrxasKK1x1OEJENAnor5QJbMSbaQorXHU5RkEwCem+oAl5dcOoCitcdTUwN0UJ5YG+CWbDqG4KK1x1OUYwRAnpvI0JdHXDsworXHU4REQ3Cei3lwlmxasKK1x1N0RBRQnntq4JcceQCitcdTg2QjUJ6Jq1CcOpCitcdTg2QTcJ6JqnCWppw6gKK1x1ODY3QQnomboJaHXEqworXHU3QUE4CeeqqAl4xatuCitcdTc1OTIJ55aSCWNodcOhbmcKK1x1OTQ4NwnpkocJZMOsbmcKK1x1N0Y1OAnnvZgJZsO6CitcdTZDMDcJ5rCHCWzHlAorXHU2OUUwCeanoAlxxKsKK1x1Njk2NgnmpaYJeHXDoG4KK1x1NjdERAnmn50JdHXDsgorXHU3NTNFCeeUvgl6xIFpCitcdTZFQkIJ5rq7CXTEgQorXHU2MERECeaDnQl0x45uZworXHU1NjRECeWZjQlqacSBbworXHU2NEQ3CeaTlwlwx5AKK1x1ODUxRgnolJ8JY8O5CitcdTgyQ0MJ6IuMCWPHjm5nCitcdTgyQjAJ6IqwCWrDrAorXHU1NzdDCeWdvAljaMOoCitcdTkwQ0YJ6YOPCWTDsnUKK1x1NTM4RAnljo0Jc2jDqAorXHU5QUMyCemrgglnw6kKK1x1OUM5MgnpspIJamnDqQorXHU5NkU5CembqQl5w7oKK1x1OEM4QQnosooJbcOyCitcdThFMjMJ6LijCWLDsworXHU4OTVFCeilngliw6wKK1x1ODIwNAnoiIQJeMOsCitcdTg3Q0EJ6J+KCW3DoW8KK1x1ODZGOAnom7gJc2jEgW8KK1x1ODA0MwnogYMJZMSBbgorXHU4OEZDCeijvAl0w6wKK1x1NzYyNQnnmKUJY2jDoGkKK1x1N0EwMgnnqIIJbMOhbmcKK1x1OTUxNAnplJQJasWrCitcdTk0QkMJ6ZK8CW3DuQorXHU3NzgwCeeegAltw6BvCitcdTc3MzUJ55y1CWNoxKsKK1x1NzcxQQnnnJoJc2jEm25nCitcdTlFRkMJ6bu8CWbHlAorXHU4MTY3CeiFpwlzaMO5CitcdTgwQ0QJ6IONCWd1xIEKK1x1NzI1NgnniZYJeceSdQorXHU3MjdGCeeJvwlnw7kKK1x1NjYzNAnmmLQJbceObworXHU3MDg1CeeChQlndcOsCitcdTY3OUUJ5p6eCWPFjW5nCitcdTY3NkEJ5p2qCW1px45vCitcdTdGMkMJ57ysCWPDqW5nCitcdTVGNTgJ5b2YCXpow6wKK1x1NUY1NgnlvZYJdHXDoG4KK1x1OTA1OAnpgZgJZ8OydQorXHU2RTU0Cea5lAlqacSBbgorXHU2RTExCea4kQltaceObgorXHU2RDQ4Cea1iAljaMOpbmcKK1x1NjE0QQnmhYoJcWnDoG4KK1x1NUVEMQnlu5EJaseQbgorXHU1RUIzCeW6swliw6wKK1x1NUVCOQnlurkJdHXHkgorXHU3MkMzCeeLgwluaceUCitcdThDNzMJ6LGzCWLEq24KK1x1NTcwOQnlnIkJY2h1w60KK1x1NjQ0NQnmkYUJamnFqworXHU2M0YyCeaPsglzaMOpCitcdTg2MDUJ6JiFCWjDqW5nCitcdTg0QTEJ6JKhCWLDoG5nCitcdTgzRjkJ6I+5CWrFqworXHU4MzZDCeiNrAltx45pCitcdTgzNjkJ6I2pCWrDrG4KK1x1ODI4RQnoio4JcWnFjW5nCitcdTgyN0YJ6Im/CW7HjmkKK1x1NTdEQQnln5oJYsO5CitcdTk2NTQJ6ZmUCWfEgWkKK1x1OEJGQwnor7wJc2jDqWkKK1x1NTIzRgnliL8JZ3XDrAorXHU1NjBGCeWYjwlqaceOCitcdTY3RDIJ5p+SCXHEqworXHU5QUI2Cemqtglkx5AKK1x1OUM5NAnpspQJd8SbaQorXHU5QzkwCemykAl0w6FpCitcdTkxNTAJ6YWQCWfEgW4KK1x1ODIyRAnoiK0JYseQCitcdTg4NDQJ6KGECW7HnAorXHU3QkZDCeevvAlkxY11CitcdTg2N0YJ6Jm/CWNow6BpCitcdTk4QTUJ6aKlCWbEm25nCitcdTk1NjQJ6ZWkCWzDoW4KK1x1OTRCMgnpkrIJZ8O6CitcdTk0QUQJ6ZKtCXDDoQorXHU3RjY4Cee9qAl5x45uCitcdTc4QzkJ56OJCXPHjm5nCitcdTc4NkQJ56GtCW3DoW5nCitcdTc4MjkJ56CpCWbDqGkKK1x1NjA2NwnmgacJbsecCitcdTcwQjEJ54KxCXTDoWkKK1x1NzBCQgnngrsJbHXDsgorXHU4MUE2CeiGpglsw6xuCitcdTgwQzIJ6IOCCXNow6huCitcdTZCRjkJ5q+5CXNoxasKK1x1OEY3NQnovbUJZGnDqQorXHU2OTU3CeallwlqacOgbgorXHU2OEZDCeajvAlmw6luCitcdTY4MUQJ5qCdCWd1xIEKK1x1Njg0NAnmoYQJZ3XEgW5nCitcdTY4MEEJ5qCKCWzDs25nCitcdTkwMkYJ6YCvCWzDuQorXHU2NDM0CeaQtAlxacSBbgorXHU1Qjg0CeWuhAlndceQCitcdTZGOEMJ5r6MCXPEqworXHU2RjI0Cea8pAlnxIFuCitcdTZFQ0YJ5ruPCWbHlAorXHU1RUQyCeW7kgnDoW8KK1x1NUU4MAnluoAJcMeQCitcdTk5NjMJ6aWjCXNow60KK1x1NTkwMgnlpIIJY2jHlAorXHU1RkJDCeW+vAlqaceObworXHU1NjI3CeWYpwltw6wKK1x1NTQzMgnlkLIJeceQbgorXHU2NDk2CeaSlglow6BuCitcdTc1MEQJ55SNCW3DqW5nCitcdTg0MEYJ6JCPCWTDoG4KK1x1ODI3RAnoib0JamnEgW8KK1x1NTg2NQnloaUJZ8OpCitcdTU3Q0YJ5Z+PCXnDoW4KK1x1OTBGRQnpg74JeceObgorXHU5MEM0CemDhAlxdcOoCitcdTk2M0QJ6Zi9CWRpw6BuCitcdThDMDcJ6LCHCXN1w6wKK1x1NTAyRQnlgK4JbHXHkgorXHU0RkRDCeS/nAlwxKtuZworXHUzNDAxCeOQgQl0aceObgorXHUzNDBDCeOQjAlzw6wKK1x1MzQzNwnjkLcJbceOCitcdTM0M0IJ45C7CcWICitcdTM0M0MJ45C8CWNow6huZworXHUzNDQyCeORgglmx45uZworXHUzNDRCCeORiwlqacOybmcKK1x1MzQ0RAnjkY0JbMSbaQorXHUzNDU5CeORmQlkacOpCitcdTM0NUYJ45GfCWLEm25nCitcdTM0NzUJ45G1CWjDoG4KK1x1MzQ3NwnjkbcJdMOgaQorXHUzNDc4CeORuAnHjmkKK1x1MzQ3RQnjkb4JeGnDoW8KK1x1MzQ3Rgnjkb8JdGnDoW8KK1x1MzQ4MQnjkoEJeceUCitcdTM0ODIJ45KCCWvDuQorXHUzNDg0CeOShAluw6BuZworXHUzNDg2CeOShgljaMOsCitcdTM0ODcJ45KHCW3DuQorXHUzNDhECeOSjQlsw6lpCitcdTM0OEUJ45KOCXPHjgorXHUzNDkxCeOSkQlodcOsCitcdTM0OUMJ45KcCXnDugorXHUzNDlECeOSnQltacOoCitcdTM0OUUJ45KeCWrDuW4KK1x1MzRCNwnjkrcJZ3XHjgorXHUzNEI4CeOSuAlzdcOsCitcdTM0QkYJ45K/CWzDrQorXHUzNEMzCeOTgwljaHXDrQorXHUzNEM4CeOTiAliw6hpCitcdTM0QzkJ45OJCWh1w6BuCitcdTM0Q0UJ45OOCWxpw6FuCitcdTM0RDYJ45OWCWLDrAorXHUzNEQ3CeOTlwlqacOpCitcdTM0REUJ45OeCXHDrAorXHUzNEU0CeOTpAlqacOpCitcdTM0RTgJ45OoCWPDrQorXHUzNEY0CeOTtAlqw7luCitcdTM0RjgJ45O4CWp1w6kKK1x1MzRGQwnjk7wJY2jDrAorXHUzNTAwCeOUgAlsdsOoCitcdTM1MDMJ45SDCWp1w6kKK1x1MzUwQgnjlIsJamnDoG4KK1x1MzUwRAnjlI0JZHXHkgorXHUzNTBFCeOUjgl4acOoCitcdTM1MTEJ45SRCWNow6wKK1x1MzUxMwnjlJMJamnHjm4KK1x1MzUxNQnjlJUJasOtCitcdTM1MTkJ45SZCWLHjm5nCitcdTM1MUMJ45ScCWLDoQorXHUzNTFFCeOUnglrdcOgaQorXHUzNTIwCeOUoAlow6kKK1x1MzUyMwnjlKMJbMOpaQorXHUzNTI3CeOUpwlsecO5CitcdTM1MkQJ45StCWNow6gKK1x1MzUyRgnjlK8Jc3XHjm4KK1x1MzUzMwnjlLMJZ3XHkAorXHUzNTM1CeOUtQl4acOgbgorXHUzNTNECeOUvQl5w6BvCitcdTM1NDgJ45WICWjDsnUKK1x1MzU0QgnjlYsJasOsbmcKK1x1MzU0RQnjlY4Jw6gKK1x1MzU1MgnjlZIJd8OpaQorXHUzNTU5CeOVmQlqw7luCitcdTM1NUIJ45WbCXjDuQorXHUzNTYxCeOVoQlow6kKK1x1MzU2MgnjlaIJZ8OgaQorXHUzNTYzCeOVowl5x45uCitcdTM1NkQJ45WtCcOgbworXHUzNTZFCeOVrglmx5QKK1x1MzU3MgnjlbIJaHXDoQorXHUzNTc1CeOVtQlndcOzCitcdTM1N0IJ45W7CXDHknUKK1x1MzU4MAnjloAJbMOoCitcdTM1ODYJ45aGCXHDugorXHUzNTk1CeOWlQliw7IKK1x1MzVBMAnjlqAJYsOgCitcdTM1QTIJ45aiCWrDrQorXHUzNUI3CeOWtwlzaMOtCitcdTM1QkMJ45a8CWR1x5IKK1x1MzVCRAnjlr0JesOpCitcdTM1QzMJ45eDCXfEm24KK1x1MzVDNAnjl4QJbcOhbgorXHUzNUM2CeOXhglnw6kKK1x1MzVDOQnjl4kJYsOsCitcdTM1RDgJ45eYCWLDsworXHUzNUYwCeOXsAljaMO5CitcdTM1RjIJ45eyCWh1w7IKK1x1MzYwRAnjmI0JasOtCitcdTM2MEUJ45iOCWjHjm4KK1x1MzYxMAnjmJAJcMOgbworXHUzNjE0CeOYlAljx45uCitcdTM2MTUJ45iVCWjHjm4KK1x1MzYxOQnjmJkJecOhbgorXHUzNjFDCeOYnAljaMeQCitcdTM2MUQJ45idCW5px45uCitcdTM2MjAJ45igCWLDrAorXHUzNjIzCeOYowl4dcOhbgorXHUzNjQxCeOZgQltx45uZworXHUzNjQ4CeOZiAlow6FuCitcdTM2NEEJ45mKCWNow6FuZworXHUzNjVDCeOZnAljaMOtCitcdTM2NjIJ45miCW3DoW4KK1x1MzY2OAnjmagJasOsCitcdTM2NkEJ45mqCXnDqAorXHUzNjczCeOZswlox45uCitcdTM2NzQJ45m0CWNow6BuCitcdTM2NzgJ45m4CWLDoG8KK1x1MzY3QQnjmboJZ3XDrAorXHUzNjdCCeOZuwljaMOhbgorXHUzNjdFCeOZvgl4w6wKK1x1MzY4MQnjmoEJcWnDoW8KK1x1MzY4MwnjmoMJecO6bgorXHUzNjhDCeOajAlodcOgCitcdTM2OEQJ45qNCWd1w7MKK1x1MzY5MwnjmpMJbMOhaQorXHUzNjk3CeOalwlxacOpCitcdTM2OUMJ45qcCXjDuQorXHUzNjlFCeOangltxJtuZworXHUzNkFCCeOaqwlzaMOgCitcdTM2QUYJ45qvCXjDrW4KK1x1MzZCMgnjmrIJZGnHjm4KK1x1MzZCNwnjmrcJxJtyCitcdTM2Q0YJ45uPCcOydQorXHUzNkQwCeObkAlzx5J1CitcdTM2RDkJ45uZCXFpw6gKK1x1MzZEQgnjm5sJeMOsbgorXHUzNkRECeObnQliw6hpCitcdTM2RUEJ45uqCXnDoG4KK1x1MzZGMQnjm7EJcnXDrAorXHUzNkYzCeObswljaMOgCitcdTM2RjYJ45u2CWNow7N1CitcdTM3MDMJ45yDCWxpw6BuCitcdTM3MDcJ45yHCWh1w6wKK1x1MzcwQQnjnIoJcMOgbmcKK1x1MzcwRQnjnI4JccOtCitcdTM3MTEJ45yRCWbDugorXHUzNzE3CeOclwljx45uCitcdTM3MUIJ45ybCW7DqG4KK1x1MzcxRAnjnJ0Jx45uCitcdTM3MjUJ45ylCW3DoWkKK1x1MzcyNgnjnKYJaMOgbgorXHUzNzI4CeOcqAnDqXIKK1x1MzcyOQnjnKkJw6B1CitcdTM3MkIJ45yrCW3DoAorXHUzNzMxCeOcsQlkw7JuZworXHUzNzMyCeOcsgl3xJtuZworXHUzNzM3CeOctwltw60KK1x1MzczQwnjnLwJemjDrQorXHUzNzQzCeOdgwlmw6BuCitcdTM3NDQJ452ECWNow7puCitcdTM3NEIJ452LCWxpw6FvCitcdTM3NEMJ452MCWppw6kKK1x1Mzc1MQnjnZEJbcOhbmcKK1x1Mzc1MwnjnZMJZ8OpCitcdTM3NTYJ452WCXnDrQorXHUzNzVGCeOdnwltw6FvCitcdTM3NjMJ452jCXnDqAorXHUzNzY2CeOdpglqw7luCitcdTM3NkEJ452qCWRpw6BuCitcdTM3NzYJ4522CcOgaQorXHUzNzdBCeOduglsacOhbgorXHUzNzdECeOdvQljaHXDrQorXHUzNzdGCeOdvwliw7MKK1x1Mzc4RQnjno4JYseOCitcdTM3OTIJ456SCXjDrAorXHUzNzkzCeOekwlxx5AKK1x1Mzc5QQnjnpoJccOsCitcdTM3QTAJ456gCWzDoW8KK1x1MzdBOAnjnqgJeseOaQorXHUzN0FCCeOeqwlqw7kKK1x1MzdCQwnjnrwJY2jDqW5nCitcdTM3QkUJ456+CW7DrQorXHUzN0JGCeOevwljaMOsCitcdTM3QzIJ45+CCWNox5AKK1x1MzdDNwnjn4cJY3XDsworXHUzN0Q5CeOfmQlsx45vCitcdTM3REQJ45+dCXDDqWkKK1x1MzdFNwnjn6cJw6gKK1x1MzdFOQnjn6kJbcOtbgorXHUzN0VDCeOfrAlzaMeUCitcdTM3RjIJ45+yCWp1w6kKK1x1MzdGNAnjn7QJa3XDoGkKK1x1MzdGRgnjn78JbcOhbmcKK1x1MzgwNQnjoIUJZsO6CitcdTM4MEQJ46CNCWrDrQorXHUzODBFCeOgjglqasOtCitcdTM4MTYJ46CWCWrDrAorXHUzODE3CeOglwnDoG8KK1x1MzgxQQnjoJoJZHXDrAorXHUzODIyCeOgoglodcOgCitcdTM4MjMJ46CjCWzDoGkKK1x1MzgyNwnjoKcJbcOtCitcdTM4MkQJ46CtCXpox45uCitcdTM4MzEJ46CxCWrDrAorXHUzODQxCeOhgQlrx45pCitcdTM4NDQJ46GECXPHlG4KK1x1Mzg0NwnjoYcJasOtCitcdTM4NDgJ46GICW3DqW4KK1x1Mzg0OQnjoYkJeGnDoW4KK1x1Mzg0QQnjoYoJcWnDoAorXHUzODRCCeOhiwnDqAorXHUzODRDCeOhjAltw6BvCitcdTM4NTkJ46GZCWLDrAorXHUzODVECeOhnQlmw6huZworXHUzODVFCeOhnglsxJtpCitcdTM4NkQJ46GtCWrDrAorXHUzODczCeOhswlkx5AKK1x1Mzg3NgnjobYJasOsCitcdTM4NzgJ46G4CXpox44KK1x1Mzg4MAnjooAJY8OsCitcdTM4OEQJ46KNCXnDrW5nCitcdTM4OEUJ46KOCWNow6AKK1x1Mzg5MwnjopMJeceObworXHUzOEEwCeOioAlqaceSbmcKK1x1MzhBMwnjoqMJasOsbmcKK1x1MzhCMAnjorAJYsOsCitcdTM4QjMJ46KzCWzDugorXHUzOEI1CeOitQlzaMOoCitcdTM4QzMJ46ODCXnHlAorXHUzOEM2CeOjhgltw60KK1x1MzhDNwnjo4cJbseQCitcdTM4REEJ46OaCXTDs25nCitcdTM4REUJ46OeCWR1w7MKK1x1MzhFMwnjo6MJc2jHjm4KK1x1MzhFNwnjo6cJecOsbgorXHUzOEVBCeOjqglodceObgorXHUzOEYxCeOjsQl6w6kKK1x1MzkwMQnjpIEJbWnHjm4KK1x1MzkwNwnjpIcJx45vCitcdTM5MDkJ46SJCXFpw6AKK1x1MzkwQQnjpIoJeGnDoG8KK1x1MzkxNAnjpJQJZsO6CitcdTM5MTgJ46SYCWNow7kKK1x1MzkxQgnjpJsJbsOtbgorXHUzOTFDCeOknAlqdcOpCitcdTM5MUYJ46SfCWvHkm5nCitcdTM5MjIJ46SiCXjDuQorXHUzOTI0CeOkpAl5w7oKK1x1MzkyNwnjpKcJaMOzdQorXHUzOTI4CeOkqAlnx5JuZworXHUzOTJDCeOkrAlodcOsCitcdTM5MkYJ46SvCWppx5JuZworXHUzOTMwCeOksAl6x45uCitcdTM5MzIJ46SyCXFpw6gKK1x1Mzk0MQnjpYEJZMOpCitcdTM5NDYJ46WGCWRpw6BuCitcdTM5NDcJ46WHCWPDoW4KK1x1Mzk0OQnjpYkJY2jDqAorXHUzOTRFCeOljglsw6FpCitcdTM5NTQJ46WUCXnDugorXHUzOTVCCeOlmwlqw60KK1x1Mzk1RAnjpZ0JbceQCitcdTM5NUUJ46WeCWN1w6wKK1x1Mzk2NgnjpaYJcWnDqAorXHUzOTY4CeOlqAljaHXDrQorXHUzOTcyCeOlsglzaMOobgorXHUzOTc3CeOltwl5w6gKK1x1Mzk3QQnjpboJaMOpCitcdTM5N0QJ46W9CWPDqAorXHUzOTgyCeOmggljaMOhbmcKK1x1Mzk4NAnjpoQJbcOhCitcdTM5OEMJ46aMCXR1w6wKK1x1Mzk4Rgnjpo8Jc8eUbgorXHUzOTkxCeOmkQlsaceObgorXHUzOTk3CeOmlwlqacOgbgorXHUzOTlCCeOmmwl5w7oKK1x1Mzk5QwnjppwJaHXDsgorXHUzOTlGCeOmnwlow6BpCitcdTM5QTIJ46aiCWppw6kKK1x1MzlBNQnjpqUJaHXDoW4KK1x1MzlBOAnjpqgJbMOhbgorXHUzOUI0CeOmtAlnw6kKK1x1MzlCOQnjprkJw6BuZworXHUzOUJBCeOmuglyx5QKK1x1MzlCQgnjprsJeMOtCitcdTM5QkQJ46a9CXjDuQorXHUzOUM0CeOnhAlxaceObgorXHUzOUM4CeOniAl5x5BuCitcdTM5QzkJ46eJCWfDoGkKK1x1MzlDQgnjp4sJeGnHjm4KK1x1MzlEMQnjp5EJd8OpaQorXHUzOUQyCeOnkgl4dcOpCitcdTM5RDUJ46eVCWppw7kKK1x1MzlEOAnjp5gJY3XDrAorXHUzOUYxCeOnsQljaMOobgorXHUzOUYzCeOnswliw7MKK1x1MzlGNQnjp7UJcMOzdQorXHUzOUY3CeOntwlkdcOyCitcdTM5RkIJ46e7CXpox5AKK1x1MzlGRAnjp70JZ8O5CitcdTNBMDEJ46iBCXpow60KK1x1M0EwMwnjqIMJY2jDqW5nCitcdTNBMDUJ46iFCW7DqGkKK1x1M0EwQgnjqIsJY2jEmworXHUzQTBDCeOojAlnw7J1CitcdTNBMEUJ46iOCXLDugorXHUzQTEwCeOokAlix5QKK1x1M0ExMgnjqJIJa3XDrQorXHUzQTEzCeOokwlsw6FvCitcdTNBMjQJ46ikCWh1w6wKK1x1M0EyRgnjqK8JaHXDsgorXHUzQTMwCeOosAlnw6kKK1x1M0EzNgnjqLYJY2jDs3UKK1x1M0EzQQnjqLoJbcOpbgorXHUzQTNECeOovQlwx5AKK1x1M0E0NwnjqYcJaHXDoAorXHUzQTQ4CeOpiAl4acOgbgorXHUzQTU2CeOplglxacOhbmcKK1x1M0E1NwnjqZcJeMOtCitcdTNBNjIJ46miCW3DrQorXHUzQTY5CeOpqQlxx5AKK1x1M0E2QQnjqaoJeGnDqQorXHUzQTZECeOprQliw7MKK1x1M0E2RQnjqa4JcWnDoW4KK1x1M0E2Rgnjqa8JYseObgorXHUzQTcwCeOpsAlqaceObworXHUzQTcyCeOpsglrx5RuCitcdTNBNzYJ46m2CW5pw6gKK1x1M0E3OQnjqbkJZGnDqQorXHUzQTgzCeOqgwlrxJsKK1x1M0E4QwnjqowJdMeSbmcKK1x1M0E5NAnjqpQJc8OgbgorXHUzQTk5CeOqmQlrxJsKK1x1M0FBQQnjqqoJc8OgCitcdTNBQUYJ46qvCWNow6EKK1x1M0FCOQnjqrkJbMeSdQorXHUzQUJECeOqvQlzdceSCitcdTNBQkUJ46q+CWfDqQorXHUzQUM1CeOrhQljaMOhCitcdTNBQ0UJ46uOCWfHlG4KK1x1M0FEMQnjq5EJc2jDrQorXHUzQUQzCeOrkwlxx5AKK1x1M0FEOAnjq5gJbcOsCitcdTNBREIJ46ubCWd1w6BuZworXHUzQURDCeOrnAlkw6BuCitcdTNBRTQJ46ukCWNox45uZworXHUzQUY2CeOrtgljx5J1CitcdTNBRjkJ46u5CWTDoGkKK1x1M0FGQwnjq7wJZGnDqQorXHUzQjA2CeOshgltacOhbgorXHUzQjA5CeOsiQludceObgorXHUzQjEwCeOskAlqx5BuCitcdTNCMTIJ46ySCW3Hjm5nCitcdTNCMkEJ46yqCWRpw6kKK1x1M0IyRAnjrK0JamnDoG8KK1x1M0IyRQnjrK4Ja3XDoGkKK1x1M0I0OAnjrYgJanXDqQorXHUzQjRDCeOtjAltw7N1CitcdTNCNTkJ462ZCXNow6kKK1x1M0I2MQnjraEJeMOsCitcdTNCNjgJ462oCXhpw6kKK1x1M0I2OQnjrakJbMOoaQorXHUzQjZCCeOtqwljdcOhbgorXHUzQjZGCeOtrwlkacOpCitcdTNCNzAJ462wCWrDrAorXHUzQjcxCeOtsQlow6kKK1x1M0I3RQnjrb4JanXDqQorXHUzQjg0CeOuhAlix45uZworXHUzQjhCCeOuiwl5x5J1CitcdTNCOEMJ466MCW1pw6FuCitcdTNCOTUJ466VCcOpcgorXHUzQjlECeOunQlow6kKK1x1M0I5RQnjrp4JamnDqQorXHUzQjlGCeOunwlqw60KK1x1M0JBMwnjrqMJZ8OgaQorXHUzQkE2CeOupglzw6gKK1x1M0JBOAnjrqgJasOtCitcdTNCQUYJ466vCWh1w6EKK1x1M0JCMAnjrrAJYsOtCitcdTNCQjYJ4662CXNow6wKK1x1M0JDMAnjr4AJeGnHjm4KK1x1M0JEMAnjr5AJZseObmcKK1x1M0JENwnjr5cJcseObgorXHUzQkRCCeOvmwlow7oKK1x1M0JERQnjr54JanXDoG4KK1x1M0JFMAnjr6AJcWnDoG4KK1x1M0JFNQnjr6UJY8OhbworXHUzQkYwCeOvsAl6aMOpCitcdTNCRjEJ46+xCWJpx45vCitcdTNCRkIJ46+7CWfHlG4KK1x1M0MwMgnjsIIJc2jEm24KK1x1M0MxMAnjsJAJanXDqQorXHUzQzEyCeOwkglzaMOpCitcdTNDMjQJ47CkCWvEmworXHUzQzMyCeOwsgl4w7kKK1x1M0MzNAnjsLQJcMOzCitcdTNDMzgJ47C4CWxpx45uCitcdTNDM0QJ47C9CW3HkAorXHUzQzQwCeOxgAljaMeQCitcdTNDNEMJ47GMCWNow6gKK1x1M0M1OAnjsZgJw6BuCitcdTNDNUEJ47GaCWPDoW4KK1x1M0M1RgnjsZ8JYsOzCitcdTNDNjYJ47GmCcOoCitcdTNDNkUJ47GuCWt1w6BpCitcdTNDNkYJ47GvCcOhaQorXHUzQzcxCeOxsQlodcOsCitcdTNDNzUJ47G1CWLDqG4KK1x1M0M3NgnjsbYJYsOobmcKK1x1M0M3OAnjsbgJYsOsCitcdTNDNzkJ47G5CWzDrAorXHUzQzdECeOxvQlkw6BuCitcdTNDODkJ47KJCWvDoGkKK1x1M0M4QgnjsosJY2h1w7IKK1x1M0M4Rgnjso8JYseObworXHUzQzlDCeOynAl0w6FuCitcdTNDQTEJ47KhCW7DoGkKK1x1M0NBMgnjsqIJYmnDoG4KK1x1M0NBNgnjsqYJaMOgbgorXHUzQ0IyCeOysglkacOpCitcdTNDQjQJ47K0CXpow7JuZworXHUzQ0I5CeOyuQlndceQCitcdTNDQkEJ47K6CWrDrQorXHUzQ0JECeOyvQluacOgbgorXHUzQ0JFCeOyvgl5x5QKK1x1M0NDMAnjs4AJZ3XDsgorXHUzQ0M1CeOzhQlqaceObworXHUzQ0M2CeOzhglzaMeUCitcdTNDQ0UJ47OOCWJpw6BuCitcdTNDQ0YJ47OPCWNox5AKK1x1M0NEMAnjs5AJc8OgCitcdTNDRDIJ47OSCWJpw6BuCitcdTNDRTUJ47OlCWrDuQorXHUzQ0U4CeOzqAlqaceObgorXHUzQ0VBCeOzqglww6BuCitcdTNEMDMJ47SDCWzDqGkKK1x1M0QwNgnjtIYJasOsbgorXHUzRDE0CeO0lAlzw6gKK1x1M0QzOAnjtLgJbsOgCitcdTNEM0QJ47S9CXhpw6gKK1x1M0Q0MAnjtYAJY3XDoG4KK1x1M0Q0MgnjtYIJY2h1x45uZworXHUzRDQzCeO1gwljaMOoCitcdTNENDQJ47WECWjDoG4KK1x1M0Q0NQnjtYUJZMOgbgorXHUzRDRBCeO1iglzaMSbbgorXHUzRDRDCeO1jAljaMOgbgorXHUzRDRFCeO1jglox45uCitcdTNENTQJ47WUCWNoxJsKK1x1M0Q1NwnjtZcJZsO5CitcdTNENjIJ47WiCWzDqWkKK1x1M0Q2MwnjtaMJa8SbCitcdTNENjQJ47WkCWRpw6BuCitcdTNENjUJ47WlCWLDrAorXHUzRDY4CeO1qAliw6wKK1x1M0Q2QgnjtasJbseQCitcdTNENkUJ47WuCWNow7puCitcdTNENzMJ47WzCWxpw6FvCitcdTNENzgJ47W4CXnDoG8KK1x1M0Q3QQnjtboJcMOhaQorXHUzRDdECeO1vQlkdcOsCitcdTNEN0UJ47W+CWrDrG5nCitcdTNEODgJ47aICWxpx5JuZworXHUzRDkyCeO2kglzaMeObgorXHUzREExCeO2oQlkw6BpCitcdTNEQUIJ47arCWxpx45vCitcdTNEQUMJ47asCW3DqWkKK1x1M0RBRAnjtq0JamnDuQorXHUzREI0CeO2tAljaMeQCitcdTNEQzUJ47eFCWNox45vCitcdTNEQzYJ47eGCWTDsnUKK1x1M0RDNwnjt4cJZ3XDoGkKK1x1M0RDOQnjt4kJd8OoaQorXHUzRENCCeO3iwl0w6FuCitcdTNEQ0UJ47eOCWjDqAorXHUzREU0CeO3pAlow6gKK1x1M0RFQQnjt6oJY3XDrAorXHUzREY0CeO3tAlnw6kKK1x1M0RGNgnjt7YJYsOoaQorXHUzREY4CeO3uAlkacOpCitcdTNFMDEJ47iBCWjHjm4KK1x1M0UwNAnjuIQJasOsCitcdTNFMEEJ47iKCWzDoAorXHUzRTFCCeO4mwlzaMOhbworXHUzRTIzCeO4owl5w6gKK1x1M0UyNwnjuKcJa8OobgorXHUzRTJDCeO4rAliw6hpCitcdTNFMzIJ47iyCXp1w7MKK1x1M0UzNQnjuLUJZ3XHkAorXHUzRTM4CeO4uAlox5J1CitcdTNFNDIJ47mCCWPDrAorXHUzRTQzCeO5gwliw6wKK1x1M0U0NAnjuYQJasOsCitcdTNFNDgJ47mICWzDrQorXHUzRTRDCeO5jAljaMeObgorXHUzRTRECeO5jQlkw60KK1x1M0U1MAnjuZAJY2jDs25nCitcdTNFNTEJ47mRCXPDrAorXHUzRTU4CeO5mAlyw7oKK1x1M0U1RQnjuZ4JecOtbgorXHUzRTYxCeO5oQl4dcOhbgorXHUzRTY0CeO5pAlxacOoCitcdTNFNkIJ47mrCXjDrAorXHUzRTcxCeO5sQlow7oKK1x1M0U3NwnjubcJc2jHkAorXHUzRTdDCeO5vAljaMeUCitcdTNFN0QJ47m9CWNox45uCitcdTNFN0YJ47m/CWRpx45vCitcdTNFODIJ47qCCWfHjm4KK1x1M0U5MgnjupIJbGnDoG8KK1x1M0U5NAnjupQJaMOgaQorXHUzRTk3CeO6lwlkw6BuCitcdTNFOUMJ47qcCWLHjm4KK1x1M0VBMAnjuqAJecOydQorXHUzRUE1CeO6pQljaMOhbgorXHUzRUE5CeO6qQlqacO5CitcdTNFQzAJ47uACXnDs3UKK1x1M0VDNQnju4UJaHXDrAorXHUzRUNBCeO7igltw6FuZworXHUzRUNCCeO7iwlsw6AKK1x1M0VDRQnju44JbMOsCitcdTNFQ0YJ47uPCWzDrW5nCitcdTNFRDQJ47uUCWR1x5IKK1x1M0VERQnju54JYmnDoG4KK1x1M0VFMQnju6EJZGnDqQorXHUzRUU3CeO7pwlkdcOyCitcdTNFRUQJ47utCXPDqAorXHUzRUYwCeO7sAltaceObgorXHUzRUY2CeO7tglix5AKK1x1M0VGOAnju7gJY8OpbgorXHUzRUZBCeO7uglsw6wKK1x1M0YwMgnjvIIJw6kKK1x1M0YwOQnjvIkJecOsbgorXHUzRjBCCeO8iwlnx5QKK1x1M0YwRQnjvI4JYsOoaQorXHUzRjExCeO8kQlsacOgbgorXHUzRjEyCeO8kglxaceUCitcdTNGMTMJ47yTCWxpw6FuCitcdTNGMTcJ47yXCWTHkG5nCitcdTNGMUMJ47ycCcOgbmcKK1x1M0YxRAnjvJ0JZsOgbgorXHUzRjIyCeO8ognEmworXHUzRjIzCeO8owlix45pCitcdTNGMjQJ47ykCXHDrAorXHUzRjI1CeO8pQljaMO6CitcdTNGMkQJ47ytCWRpw6BuCitcdTNGMzAJ47ywCcOpCitcdTNGNDcJ472HCWd1w6BpCitcdTNGNDkJ472JCWjHjm4KK1x1M0Y0QgnjvYsJbHXDsworXHUzRjRFCeO9jglkx45uCitcdTNGNUIJ472bCWvDsnUKK1x1M0Y2MgnjvaIJx45uCitcdTNGNjkJ472pCWPDoG4KK1x1M0Y2QQnjvaoJesSbbmcKK1x1M0Y3MwnjvbMJaMOgbgorXHUzRjc5CeO9uQlmw6BuCitcdTNGODUJ476FCXPDrAorXHUzRjg2CeO+hglyw6FuCitcdTNGOTIJ476SCWrDrAorXHUzRjk2CeO+lglsx5AKK1x1M0Y5NwnjvpcJbMeObmcKK1x1M0ZBMAnjvqAJaHXDoW5nCitcdTNGQTYJ476mCWLDoG5nCitcdTNGQTgJ476oCXHHkAorXHUzRkFGCeO+rwl0dcOtCitcdTNGQjEJ476xCWLDqGkKK1x1M0ZCQQnjvroJbcOgCitcdTNGQkQJ4769CXR1w60KK1x1M0ZCRgnjvr8JbMOhbmcKK1x1M0ZDMwnjv4MJZMOgaQorXHUzRkM1CeO/hQl4aceObgorXHUzRkM3CeO/hwl4w60KK1x1M0ZEQgnjv5sJbMOtCitcdTNGREYJ47+fCWLDoWkKK1x1M0ZFMgnjv6IJecOgbworXHUzRkUzCeO/owlow6kKK1x1NDAwNQnkgIUJc2jDqAorXHU0MDA3CeSAhwlnx5QKK1x1NDAwOQnkgIkJcWnDoW8KK1x1NDAxMQnkgJEJbsOgCitcdTQwMTQJ5ICUCW5pw7oKK1x1NDAxNQnkgJUJY2jDqG5nCitcdTQwMTgJ5ICYCXjDrQorXHU0MDFCCeSAmwltw6hpCitcdTQwMUMJ5ICcCWfHlAorXHU0MDFGCeSAnwlmw6FuCitcdTQwMjEJ5IChCWNow6BuCitcdTQwMjMJ5ICjCWLDrAorXHU0MDMwCeSAsAlnx5QKK1x1NDAzMwnkgLMJw6BpCitcdTQwMzYJ5IC2CWzHjm5nCitcdTQwMzgJ5IC4CWTDrAorXHU0MDM5CeSAuQlqacOhCitcdTQwM0MJ5IC8CXLDqG4KK1x1NDA0MQnkgYEJbMeObmcKK1x1NDA0NQnkgYUJYsOoaQorXHU0MDQ2CeSBhgnHjm4KK1x1NDA0RAnkgY0JamnDoAorXHU0MDUzCeSBkwlqacOoCitcdTQwNTQJ5IGUCWjDoG4KK1x1NDA1OQnkgZkJeceObgorXHU0MDVCCeSBmwlndceQCitcdTQwNUMJ5IGcCWh1x45uZworXHU0MDVGCeSBnwljaMOhCitcdTQwNjQJ5IGkCWNow6gKK1x1NDA2QQnkgaoJbseObgorXHU0MDZGCeSBrwlzaMOoCitcdTQwNzcJ5IG3CWp1w6kKK1x1NDA3QgnkgbsJbMOsCitcdTQwN0MJ5IG8CW3DsgorXHU0MDgzCeSCgwlqacOgbworXHU0MDg0CeSChAlodcOyCitcdTQwODcJ5IKHCW7DoW5nCitcdTQwOTIJ5IKSCWppw6kKK1x1NDA5NgnkgpYJc2jDrQorXHU0MDlBCeSCmgl5w6FvCitcdTQwOUMJ5IKcCWLDoG5nCitcdTQwOUQJ5IKdCWppw6kKK1x1NDBBMAnkgqAJc2jDqQorXHU0MEExCeSCoQlkx5AKK1x1NDBBNAnkgqQJZsO5CitcdTQwQUEJ5IKqCWRpw6BvCitcdTQwQUYJ5IKvCWd1w6BpCitcdTQwQjEJ5IKxCWN1w6wKK1x1NDBCOAnkgrgJZ3XDsworXHU0MEJBCeSCugl3x45uCitcdTQwQkQJ5IK9CWRpw6BvCitcdTQwQkYJ5IK/CXTDoAorXHU0MEMwCeSDgAljdcOsCitcdTQwQzIJ5IOCCWfHlG4KK1x1NDBDRAnkg40JemjDoG8KK1x1NDBDRQnkg44JesOpCitcdTQwRDUJ5IOVCWzDoW8KK1x1NDBEQgnkg5sJbGnDoW4KK1x1NDBERQnkg54Jc2jDugorXHU0MEYyCeSDsglww6FuCitcdTQwRjkJ5IO5CWzDoG4KK1x1NDBGQgnkg7sJYsOgCitcdTQwRkQJ5IO9CWbDugorXHU0MTA2CeSEhglodcOzCitcdTQxMEQJ5ISNCWTDuQorXHU0MTExCeSEkQlodcOzCitcdTQxMTIJ5ISSCW5pw6gKK1x1NDExMwnkhJMJaMOpbmcKK1x1NDExNQnkhJUJc2jDqAorXHU0MTI3CeSEpwlyw6luZworXHU0MTI4CeSEqAl5w7oKK1x1NDEyOQnkhKkJbsOhbworXHU0MTJBCeSEqgljaHXDsgorXHU0MTJGCeSErwlqaceObgorXHU0MTMwCeSEsAl5w6EKK1x1NDEzNwnkhLcJZMOgbgorXHU0MTM5CeSEuQluacOhbgorXHU0MTNCCeSEuwljaMOhbworXHU0MTRECeSFjQlkw7JuZworXHU0MTRGCeSFjwlodcOsCitcdTQxNTAJ5IWQCWppx45uCitcdTQxNTEJ5IWRCXJ1w60KK1x1NDE1MwnkhZMJaseUCitcdTQxNUEJ5IWaCXFpx45uZworXHU0MTVFCeSFngluw6AKK1x1NDE2QwnkhawJw6BpCitcdTQxNzYJ5IW2CW7DsnUKK1x1NDE3OQnkhbkJbMOzdQorXHU0MTdFCeSFvgljw6luCitcdTQxODIJ5IaCCWxpw6FuCitcdTQxODMJ5IaDCWTHjm8KK1x1NDE4NQnkhoUJY8OtCitcdTQxOTMJ5IaTCcOoCitcdTQxOUIJ5IabCWNow6EKK1x1NDFBMQnkhqEJbMOhbmcKK1x1NDFCMwnkhrMJcWnDs25nCitcdTQxQkQJ5Ia9CWrDuQorXHU0MUMwCeSHgAlyw7NuZworXHU0MUMzCeSHgwlzw6wKK1x1NDFDOAnkh4gJZ3XDrAorXHU0MUNCCeSHiwlow6BpCitcdTQxRDIJ5IeSCWppw6gKK1x1NDFENAnkh5QJbHXDsgorXHU0MURCCeSHmwl6aMeQCitcdTQxRTAJ5IegCXpow7J1CitcdTQxRTMJ5IejCW7DoAorXHU0MUU0CeSHpAlkdcOsCitcdTQxRTUJ5IelCXrDqQorXHU0MUU4CeSHqAlnw7JuZworXHU0MUY3CeSHtwlix5AKK1x1NDFGOAnkh7gJY2jDqW5nCitcdTQxRkEJ5Ie6CWNow7N1CitcdTQxRkIJ5Ie7CWh1w6wKK1x1NDFGQwnkh7wJY2jDrAorXHU0MjAxCeSIgQlsw7puCitcdTQyMDIJ5IiCCWLDrG5nCitcdTQyMTEJ5IiRCWd1x44KK1x1NDIxNQnkiJUJY2jDrQorXHU0MjJFCeSIrglqx5QKK1x1NDIzNAnkiLQJcWnDoG4KK1x1NDIzRgnkiL8JbcOgaQorXHU0MjRBCeSJiglmw6BuCitcdTQyNTEJ5ImRCW3DsworXHU0MjUzCeSJkwlsw6lpCitcdTQyNjcJ5ImnCWxpw7oKK1x1NDI3MgnkibIJYmnDqAorXHU0Mjc0CeSJtAlyw6FuZworXHU0Mjc3CeSJtwlkw6BuCitcdTQyNzkJ5Im5CWzDrW5nCitcdTQyN0YJ5Im/CWjDugorXHU0MjgyCeSKggljw6gKK1x1NDI4NgnkioYJamnDuQorXHU0MjkwCeSKkAnDqG4KK1x1NDI5NgnkipYJbMeObgorXHU0Mjk3CeSKlwlodcOhbmcKK1x1NDJBNgnkiqYJecOhCitcdTQyQTkJ5IqpCWbDoW4KK1x1NDJBQgnkiqsJY3XHkAorXHU0MkFECeSKrQljaMOzdQorXHU0MkFFCeSKrglkw60KK1x1NDJCQQnkiroJZ8eUCitcdTQyQkYJ5Iq/CWLDsworXHU0MkM5CeSLiQlqdcOpCitcdTQyRDgJ5IuYCWNodcOyCitcdTQyREIJ5IubCW3DrQorXHU0MkUzCeSLowlmw6FuCitcdTQyRTQJ5IukCXnDoG8KK1x1NDJFRAnki60JaHXDsgorXHU0MkVFCeSLrglqw6xuCitcdTQyRUYJ5IuvCXHHkAorXHU0MkYyCeSLsgljaMSbCitcdTQyRjMJ5IuzCWLDqGkKK1x1NDJGNAnki7QJbmnDuQorXHU0MkY3CeSLtwlsacO6CitcdTQyRjkJ5Iu5CWbDugorXHU0MkZDCeSLvAl0x5BuZworXHU0MkZECeSLvQlixJtuZworXHU0MzA3CeSMhwlodcOsCitcdTQzMEEJ5IyKCXnDoW8KK1x1NDMwQwnkjIwJccOsCitcdTQzMEQJ5IyNCWjDoG4KK1x1NDMwRgnkjI8JbcOsCitcdTQzMTUJ5IyVCW3DrQorXHU0MzIwCeSMoAlxw6xuZworXHU0MzI5CeSMqQltw6wKK1x1NDMyRgnkjK8JZ3XDoG4KK1x1NDMzNQnkjLUJemjDugorXHU0MzQzCeSNgwl5w6FvCitcdTQzNDkJ5I2JCXFpw6FuCitcdTQzNEMJ5I2MCWLDuQorXHU0MzRECeSNjQlnx5QKK1x1NDM1MAnkjZAJaMeObgorXHU0MzUzCeSNkwlow7kKK1x1NDM1NgnkjZYJZsO6CitcdTQzNUQJ5I2dCXTDoAorXHU0MzYxCeSNoQlsacOgbworXHU0MzYyCeSNogl3w7oKK1x1NDM2NQnkjaUJbMOoaQorXHU0MzY4CeSNqAliw7MKK1x1NDM2OQnkjakJx45uZworXHU0MzZBCeSNqglrdcOsCitcdTQzNkYJ5I2vCWd1x5AKK1x1NDM3MgnkjbIJbsOhaQorXHU0MzczCeSNswljaHXDsgorXHU0Mzc0CeSNtAlkdcOyCitcdTQzNzcJ5I23CWd1w6wKK1x1NDM3RQnkjb4JdHXDrQorXHU0MzgwCeSOgAl4dcOoCitcdTQzODUJ5I6FCWbDuQorXHU0Mzg5CeSOiQlzaMO5CitcdTQzOEIJ5I6LCWjDqAorXHU0MzhGCeSOjwnDoG4KK1x1NDM5QQnkjpoJZ3XDoG4KK1x1NDM5RAnkjp0JY2jDugorXHU0MzlGCeSOnwnDqXIKK1x1NDNBMQnkjqEJbnXHjm4KK1x1NDNBMwnkjqMJc8OsCitcdTQzQTQJ5I6kCWNow7oKK1x1NDNBNwnkjqcJYsOgbmcKK1x1NDNBOAnkjqgJw6BuCitcdTQzQUIJ5I6rCWNodcOgbmcKK1x1NDNBQwnkjqwJYsOgCitcdTQzQjEJ5I6xCWLDoAorXHU0M0IzCeSOswl3w6AKK1x1NDNCQQnkjroJemjHkAorXHU0M0JECeSOvQl3w6luCitcdTQzQkYJ5I6/CXFpw7oKK1x1NDNDNgnkj4YJY8OhbworXHU0M0NDCeSPjAlxw6wKK1x1NDNDRQnkj44JZsOpbmcKK1x1NDNEMAnkj5AJanXDqQorXHU0M0QxCeSPkQlkw6wKK1x1NDNENQnkj5UJcsSbbgorXHU0M0Q3CeSPlwlnw6BpCitcdTQzRDgJ5I+YCXDHkAorXHU0M0RECeSPnQljaMO6bgorXHU0M0UzCeSPowlqdcOpCitcdTQzRTYJ5I+mCWh1w6EKK1x1NDNFRQnkj64JeMOtCitcdTQzRjQJ5I+0CXNow6BvCitcdTQ0MDEJ5JCBCW5px45vCitcdTQ0MDQJ5JCECWjDoG4KK1x1NDQwNgnkkIYJY8eOaQorXHU0NDBBCeSQiglkw6EKK1x1NDQwQwnkkIwJdGnHjm4KK1x1NDQxMwnkkJMJcsOzdQorXHU0NDE5CeSQmQlnw6kKK1x1NDQxQQnkkJoJasOtCitcdTQ0MjMJ5JCjCWN1w7IKK1x1NDQyNAnkkKQJY2jDrQorXHU0NDJBCeSQqglmw6BuCitcdTQ0MzgJ5JC4CWd1w7MKK1x1NDQzRgnkkL8Jw6FvCitcdTQ0NDIJ5JGCCceOaQorXHU0NDQ0CeSRhAlww6wKK1x1NDQ0QQnkkYoJd8OpaQorXHU0NDRCCeSRiwluw6FvCitcdTQ0NEQJ5JGNCXnDoG4KK1x1NDQ1MwnkkZMJdMOhaQorXHU0NDU4CeSRmAljaMOhCitcdTQ0NUIJ5JGbCWNox5AKK1x1NDQ2NAnkkaQJasOsbgorXHU0NDY1CeSRpQnDqAorXHU0NDZECeSRrQlkw6wKK1x1NDQ3MQnkkbEJbcOhbgorXHU0NDcyCeSRsgljaMOoCitcdTQ0NzYJ5JG2CWPDoW4KK1x1NDQ3RAnkkb0JZMOhCitcdTQ0ODEJ5JKBCWrDrAorXHU0NDgyCeSSgglqaceObmcKK1x1NDQ4MwnkkoMJY8OgbworXHU0NDg0CeSShAliw7MKK1x1NDQ4OAnkkogJYseUCitcdTQ0OTIJ5JKSCXRpw6FvCitcdTQ0OUIJ5JKbCWjDqW5nCitcdTQ0QTAJ5JKgCWbHjm4KK1x1NDRBMgnkkqIJw6FuZworXHU0NEE1CeSSpQlmw6AKK1x1NDRBOQnkkqkJaMOpCitcdTQ0QjgJ5JK4CXhpw6FuCitcdTQ0QkQJ5JK9CW3DqWkKK1x1NDRDQQnkk4oJw6gKK1x1NDREMQnkk5EJYseQbmcKK1x1NDRENQnkk5UJdHXHkgorXHU0NERCCeSTmwlmx5QKK1x1NDRERAnkk50JbcOpbmcKK1x1NDRFNwnkk6cJY8OsCitcdTQ0RUIJ5JOrCWrDrAorXHU0NEYxCeSTsQljaMOhaQorXHU0NEYyCeSTsglydcOsCitcdTQ0RjQJ5JO0CXJ1w6FuCitcdTQ0RkEJ5JO6CW3Em2kKK1x1NDRGQwnkk7wJaMOoCitcdTQ0RkYJ5JO/CWjHjm4KK1x1NDUwNwnklIcJcceQCitcdTQ1MDgJ5JSICWfHjm4KK1x1NDUxMQnklJEJeGnDqQorXHU0NTE0CeSUlAlqw6xuZworXHU0NTFGCeSUnwljaMOtCitcdTQ1MjIJ5JSiCWh1w6EKK1x1NDUyNwnklKcJbMOtCitcdTQ1MkEJ5JSqCWR1w6wKK1x1NDUyRAnklK0JbsOsbmcKK1x1NDUyRgnklK8JaMO6CitcdTQ1MzAJ5JSwCWbDugorXHU0NTMyCeSUsgljaMOpbmcKK1x1NDUzMwnklLMJbseObgorXHU0NTM0CeSUtAljw6gKK1x1NDUzRQnklL4Jw6gKK1x1NDUzRgnklL8JamnDqAorXHU0NTRCCeSViwljaMeObmcKK1x1NDU1MwnklZMJY2jDoQorXHU0NTU3CeSVlwliw6wKK1x1NDU1RQnklZ4JbMOgbmcKK1x1NDU2MQnklaEJbMeUCitcdTQ1NjMJ5JWjCWjDqQorXHU0NTY1CeSVpQlux5AKK1x1NDU2OQnklakJbMeObworXHU0NTcwCeSVsAliw6BuCitcdTQ1NzEJ5JWxCWTHknUKK1x1NDU3NQnklbUJeGnDqQorXHU0NTdCCeSVuwlnw6kKK1x1NDU3QwnklbwJbsOhbgorXHU0NTdFCeSVvgl5w6FuCitcdTQ1OEEJ5JaKCXnDrQorXHU0NThDCeSWjAlxw61uCitcdTQ1OTAJ5JaQCWrDrG4KK1x1NDU5NAnklpQJaMOgbgorXHU0NTk3CeSWlwl5w6FuCitcdTQ1OUMJ5JacCXnDrW4KK1x1NDU5Rgnklp8JbceObmcKK1x1NDVBMwnklqMJc8OgbworXHU0NUE0CeSWpAl3x45uCitcdTQ1QTUJ5JalCWzDrQorXHU0NUE5CeSWqQliw6wKK1x1NDVBRgnklq8JZ3XDrAorXHU0NUJBCeSWugl0acOhbworXHU0NUJDCeSWvAlqdcOpCitcdTQ1QzQJ5JeECWbHlAorXHU0NUM2CeSXhglndceObgorXHU0NUM3CeSXhwlqw7oKK1x1NDVDQQnkl4oJY2jDqW5nCitcdTQ1RDYJ5JeWCWNow6wKK1x1NDVEOAnkl5gJZ8OpCitcdTQ1REUJ5JeeCWPDoW4KK1x1NDVFMgnkl6IJc3XHkgorXHU0NUUzCeSXowlnx45vCitcdTQ1RjYJ5Je2CWzDoAorXHU0NjAxCeSYgQlnw6kKK1x1NDYwNAnkmIQJZsO5CitcdTQ2MDUJ5JiFCW7DoWkKK1x1NDYwNwnkmIcJd8OpbgorXHU0NjExCeSYkQltw6BpCitcdTQ2MTMJ5JiTCWvDoG4KK1x1NDYyMAnkmKAJZsO6CitcdTQ2MjYJ5JimCW7DrQorXHU0NjI5CeSYqQl4dcOgbgorXHU0NjJCCeSYqwluw7J1CitcdTQ2MkQJ5JitCWRpw6kKK1x1NDYyRQnkmK4Jc8OgCitcdTQ2MzYJ5Ji2CWjDoG4KK1x1NDYzQgnkmLsJc8O5CitcdTQ2M0QJ5Ji9CW7DrQorXHU0NjQzCeSZgwlkdcOyCitcdTQ2NDQJ5JmECXHDrAorXHU0NjQ2CeSZhglndcOsCitcdTQ2NDcJ5JmHCW51x45uCitcdTQ2NDkJ5JmJCXjDum4KK1x1NDY0QwnkmYwJaHXDrAorXHU0NjUzCeSZkwlix45pCitcdTQ2NTUJ5JmVCWNow7kKK1x1NDY1OAnkmZgJY2jHlAorXHU0NjVCCeSZmwlndcOgbgorXHU0NjVGCeSZnwlkdcOyCitcdTQ2NjAJ5JmgCWp1w6kKK1x1NDY2MQnkmaEJaHXDrAorXHU0NjY0CeSZpAlkdceSCitcdTQ2NjgJ5JmoCWd1x5IKK1x1NDY2QQnkmaoJbMOzbmcKK1x1NDY2Rgnkma8JY8O5CitcdTQ2NzEJ5JmxCWTDugorXHU0Njc3CeSZtwlkw6kKK1x1NDY3OAnkmbgJZMOpCitcdTQ2NzkJ5Jm5CWppx45uZworXHU0NjdBCeSZuglsacOhbgorXHU0NjdECeSZvQl4w6wKK1x1NDY4MgnkmoIJaMOoCitcdTQ2ODUJ5JqFCWzDoWkKK1x1NDY4NgnkmoYJx5J1CitcdTQ2ODcJ5JqHCXNoxJtuZworXHU0Njg4CeSaiAlqdcOgbgorXHU0Njg5CeSaiQlxw6wKK1x1NDY4Rgnkmo8JbMOobmcKK1x1NDY5MgnkmpIJY2h1w6FuZworXHU0NjkzCeSakwluaceObgorXHU0Njk1CeSalQlsw6wKK1x1NDY5OAnkmpgJY2jDqW4KK1x1NDZBMwnkmqMJdMOtCitcdTQ2QTkJ5JqpCWppx45vCitcdTQ2QUIJ5JqrCcOhbworXHU0NkFGCeSarwl0x45vCitcdTQ2QjMJ5JqzCXhpw6gKK1x1NDZCNwnkmrcJeMOsCitcdTQ2QkUJ5Jq+CW7DrW4KK1x1NDZDMgnkm4IJY2jDrQorXHU0NkM5CeSbiQltw6wKK1x1NDZDQgnkm4sJZ8OpCitcdTQ2Q0MJ5JuMCXDDoW8KK1x1NDZDRQnkm44JaMO5CitcdTQ2RDYJ5JuWCcOoCitcdTQ2RDgJ5JuYCW7DrW4KK1x1NDZEQgnkm5sJaHXDrAorXHU0NkRFCeSbnglox45uCitcdTQ2RTAJ5JugCWTDsnUKK1x1NDZFQQnkm6oJcWnDs25nCitcdTQ2RUMJ5JusCWNow7N1CitcdTQ2RjAJ5JuwCWjDum4KK1x1NDZGMgnkm7IJbcOhbgorXHU0NkYzCeSbswlqaceObgorXHU0NkY4CeSbuAljaMOoCitcdTQ3MDYJ5JyGCW3DsgorXHU0NzA3CeSchwlnx5RuCitcdTQ3MEEJ5JyKCXrDoG8KK1x1NDcwRQnknI4JbMOhbworXHU0NzExCeSckQlxacOgCitcdTQ3MTMJ5JyTCW5pw6gKK1x1NDcxQgnknJsJY2jDoW4KK1x1NDcxRgnknJ8JY2jDqW4KK1x1NDcyMAnknKAJY2jDqAorXHU0NzIxCeScoQl4w7kKK1x1NDcyQwnknKwJc8eSbmcKK1x1NDczNAnknLQJY2jDuQorXHU0NzM1CeSctQljaMeQCitcdTQ3M0IJ5Jy7CWNox5AKK1x1NDc0MAnknYAJbGnDoW8KK1x1NDc0QwnknYwJanXDqQorXHU0NzRGCeSdjwlsw7N1CitcdTQ3NTMJ5J2TCWzDoAorXHU0NzVGCeSdnwl5w6AKK1x1NDc2MAnknaAJaHXDoW4KK1x1NDc2MgnknaIJbcOgbgorXHU0NzY3CeSdpwltw6luCitcdTQ3NkEJ5J2qCXNow7oKK1x1NDc3MAnknbAJdMOtCitcdTQ3NzkJ5J25CXfHjm4KK1x1NDc4MAnknoAJZ8OydQorXHU0NzgxCeSegQl4acOgbgorXHU0Nzg3CeSehwlkacOpCitcdTQ3ODgJ5J6ICWd1x5AKK1x1NDc5MAnknpAJY2jHlG4KK1x1NDc5NQnknpUJZGnDqQorXHU0NzlECeSenQnHjm8KK1x1NDdBMgnknqIJemjDoAorXHU0N0E2CeSepglow6kKK1x1NDdBOQnknqkJw6gKK1x1NDdCMwnknrMJYsOzCitcdTQ3QjYJ5J62CWTDrAorXHU0N0JDCeSevAljaHXHkAorXHU0N0MzCeSfgwljw6AKK1x1NDdDNAnkn4QJccOsCitcdTQ3QzUJ5J+FCWppw6BuCitcdTQ3QzYJ5J+GCWLDrAorXHU0N0NCCeSfiwl6aMeObgorXHU0N0NDCeSfjAlqw60KK1x1NDdEMQnkn5EJbMeOCitcdTQ3RTIJ5J+iCWNow6luCitcdTQ3RTUJ5J+lCW3DoW5nCitcdTQ3RTYJ5J+mCWLDoQorXHU0N0Y2CeSftgljdcOyCitcdTQ3RjkJ5J+5CWxpw6gKK1x1NDdGQQnkn7oJYseObmcKK1x1NDdGRQnkn74JanXEmworXHU0ODAyCeSgggljaMO6CitcdTQ4MDUJ5KCFCWvHlG4KK1x1NDgwOQnkoIkJaHXDoAorXHU0ODBCCeSgiwlix5AKK1x1NDgxMwnkoJMJY8O5CitcdTQ4MTkJ5KCZCWLDqGkKK1x1NDgxQgnkoJsJamnHjm8KK1x1NDgxRQnkoJ4JY8O5CitcdTQ4MUYJ5KCfCWRpw6kKK1x1NDgyMwnkoKMJeHXHjm4KK1x1NDgyNAnkoKQJZHXHkgorXHU0ODI2CeSgpgl6aMOoCitcdTQ4MjgJ5KCoCWNow6BuCitcdTQ4MkQJ5KCtCWzDoWkKK1x1NDgzMQnkoLEJc2jHlAorXHU0ODM0CeSgtAlxx5BuCitcdTQ4MzkJ5KC5CcOhaQorXHU0ODNDCeSgvAlkacOgbworXHU0ODNFCeSgvglzaMeObgorXHU0ODQ1CeShhQltx5BuCitcdTQ4NDYJ5KGGCXLDs25nCitcdTQ4NEEJ5KGKCWbDoW4KK1x1NDg0RAnkoY0JZsO6CitcdTQ4NjgJ5KGoCWNow6AKK1x1NDg2OQnkoakJZ8eUCitcdTQ4NkEJ5KGqCWNow6FuCitcdTQ4NkYJ5KGvCXNodcOgbmcKK1x1NDg3NgnkobYJYsOoaQorXHU0ODg3CeSihwlyx5JuZworXHU0ODg4CeSiiAljaMOpbgorXHU0ODhECeSijQlmx45uZworXHU0ODk0CeSilAlnw6kKK1x1NDg5NgnkopYJbHnDuQorXHU0ODk3CeSilwlow6kKK1x1NDg5QQnkopoJZ8OybmcKK1x1NDg5RQnkop4JbsO5CitcdTQ4QTUJ5KKlCXnDoW4KK1x1NDhBNwnkoqcJbGnDoG8KK1x1NDhBQQnkoqoJYsOzCitcdTQ4QjAJ5KKwCXTDoWkKK1x1NDhCMQnkorEJZMO6CitcdTQ4QjMJ5KKzCWrHkAorXHU0OEJCCeSiuwljaMOpbgorXHU0OEMwCeSjgAlndceQCitcdTQ4QzgJ5KOICWjDoG5nCitcdTQ4RDQJ5KOUCXN1x5IKK1x1NDhEQQnko5oJbMOzdQorXHU0OEUwCeSjoAlqacOpCitcdTQ4RTEJ5KOhCXTDrQorXHU0OEUzCeSjowlkx45uZworXHU0OEU0CeSjpAlqacOgbworXHU0OEU1CeSjpQlix5AKK1x1NDhGMAnko7AJasO5CitcdTQ4RjEJ5KOxCXjDuQorXHU0OEY2CeSjtglodcOzCitcdTQ5MDEJ5KSBCWPDqW4KK1x1NDkwNAnkpIQJbWnHjm4KK1x1NDkwOQnkpIkJbcOsCitcdTQ5MEIJ5KSLCWd1w7MKK1x1NDkxMgnkpJIJaseQCitcdTQ5MTQJ5KSUCWppw6BuCitcdTQ5MTgJ5KSYCWNox45uCitcdTQ5MUEJ5KSaCWzHkAorXHU0OTIwCeSkoAlqxKsKK1x1NDkyRAnkpK0Ja3XDoG4KK1x1NDkzMAnkpLAJd8SbbmcKK1x1NDkzNwnkpLcJecOhbgorXHU0OTQ0CeSlhAljw7kKK1x1NDk0NQnkpYUJcWnDoG4KK1x1NDk0NgnkpYYJaseQbgorXHU0OTUyCeSlkgljaMOzdQorXHU0OTU4CeSlmAljw7kKK1x1NDk2NAnkpaQJYsOhbworXHU0OTY3CeSlpwlodcOhbgorXHU0OTZGCeSlrwliw6AKK1x1NDk4NQnkpoUJc2jDoG4KK1x1NDk4OAnkpogJZseObmcKK1x1NDk4QwnkpowJY2jDuQorXHU0OTk2CeSmlgl4acOhCitcdTQ5OTgJ5KaYCWLDrAorXHU0OTlBCeSmmglodcOyCitcdTQ5OUIJ5KabCXpow6huZworXHU0OTlDCeSmnAl3w7oKK1x1NDlBNAnkpqQJY2h1w6BpCitcdTQ5QTcJ5KanCXFpw6kKK1x1NDlCMQnkprEJa3XHkAorXHU0OUIyCeSmsglxacOgbgorXHU0OUIzCeSmswlow6BuZworXHU0OUI3CeSmtwljaHXDoGkKK1x1NDlCQgnkprsJY8OsCitcdTQ5QzEJ5KeBCWNow7kKK1x1NDlDMgnkp4IJZMOgbworXHU0OUMzCeSngwlkacOgbgorXHU0OUM1CeSnhQl0w6wKK1x1NDlDNgnkp4YJaMOzbmcKK1x1NDlDNwnkp4cJbseQCitcdTQ5RDIJ5KeSCWzDoWkKK1x1NDlENAnkp5QJbcO5CitcdTQ5RDUJ5KeVCWNow6luZworXHU0OUQ4CeSnmAlxw60KK1x1NDlERAnkp50JZMOsCitcdTQ5REUJ5KeeCWbDuQorXHU0OURGCeSnnwl4acOgbgorXHU0OUVBCeSnqgljaMOoCitcdTQ5RUUJ5KeuCXhpx45uCitcdTQ5RUYJ5KevCWNow6FuCitcdTQ5RjMJ5KezCWPDrQorXHU0OUY1CeSntQlxw60KK1x1NEEwMAnkqIAJZMOtCitcdTRBMDEJ5KiBCWNow6gKK1x1NEEwNgnkqIYJYsOtCitcdTRBMEMJ5KiMCWLDoW8KK1x1NEExMAnkqJAJcWnDoAorXHU0QTEzCeSokwlsw6lpCitcdTRBMTkJ5KiZCWPDqW4KK1x1NEExRQnkqJ4JeceUCitcdTRBMjIJ5KiiCWTDoG4KK1x1NEEyMwnkqKMJZ8OpCitcdTRBMjUJ5KilCWjDuQorXHU0QTJCCeSoqwltw6BpCitcdTRBMzQJ5Ki0CWR1w6wKK1x1NEEzQQnkqLoJZHXDrAorXHU0QTNGCeSovwlxacOhbgorXHU0QTQ2CeSphglqaceObgorXHU0QTQ4CeSpiAlodcOsCitcdTRBNEEJ5KmKCXfHjm4KK1x1NEE1MAnkqZAJZ8OpCitcdTRBNUEJ5KmaCWTDrAorXHU0QTVFCeSpngluacOhbgorXHU0QTYyCeSpoglkw6EKK1x1NEE2MwnkqaMJZHXHkgorXHU0QTY0CeSppAl4w6wKK1x1NEE2NgnkqaYJdGnDoW8KK1x1NEE2QwnkqawJYsSbbmcKK1x1NEE3MwnkqbMJc2jHlAorXHU0QTc4CeSpuAlyw7NuZworXHU0QTgwCeSqgAlndceObgorXHU0QTg4CeSqiAlxaceObgorXHU0QTg5CeSqiQlsw6AKK1x1NEE4RAnkqo0JbMOhbgorXHU0QThGCeSqjwluw6AKK1x1NEE5MAnkqpAJYsOsCitcdTRBOTIJ5KqSCWppw6BvCitcdTRBOTkJ5KqZCWbDugorXHU0QTlBCeSqmglow6gKK1x1NEFBNQnkqqUJZGnDqQorXHU0QUE4CeSqqAliw6FvCitcdTRBQUMJ5KqsCWLDsworXHU0QUJFCeSqvgltw60KK1x1NEFCRgnkqr8Jc2jEm25nCitcdTRBQzYJ5KuGCWNow6luZworXHU0QUNBCeSrigliw7MKK1x1NEFENAnkq5QJccOsCitcdTRBRDYJ5KuWCWNoxJtuCitcdTRBRDcJ5KuXCXhpw6EKK1x1NEFERAnkq50JZseUCitcdTRBREYJ5KufCWjDum4KK1x1NEFFMQnkq6EJcWnDoG4KK1x1NEFFNQnkq6UJa3XHkAorXHU0QUU2CeSrpglnw6kKK1x1NEFFQgnkq6sJbMOzdQorXHU0QUVFCeSrrgljw6FuCitcdTRBRjEJ5KuxCW7DoQorXHU0QUYyCeSrsglow6BuCitcdTRBRkEJ5Ku6CWjDs25nCitcdTRBRkIJ5Ku7CXh1w6kKK1x1NEIwMgnkrIIJeHXDqAorXHU0QjA1CeSshQlsw6wKK1x1NEIwQQnkrIoJcWnDqAorXHU0QjBGCeSsjwliw7kKK1x1NEIxMwnkrJMJw6BuCitcdTRCMTQJ5KyUCXjDuQorXHU0QjFCCeSsmwliw6wKK1x1NEIxRAnkrJ0JaMOpbmcKK1x1NEIyNAnkrKQJY2jDoW8KK1x1NEIyOAnkrKgJY8O5CitcdTRCMkEJ5KyqCWLDsworXHU0QjJCCeSsqwljx45uCitcdTRCM0IJ5Ky7CWppw6BuCitcdTRCM0YJ5Ky/CXfEm2kKK1x1NEI0RQnkrY4JeGnDqQorXHU0QjU1CeStlQlqacOgbgorXHU0QjU4CeStmAl5w6BuCitcdTRCNUEJ5K2aCWNodcOhbmcKK1x1NEI2MAnkraAJamnHjm4KK1x1NEI2NQnkraUJeHXDqAorXHU0QjY5CeStqQltw6wKK1x1NEI2RAnkra0Jc2jHknUKK1x1NEI2RQnkra4JYsOsCitcdTRCNzAJ5K2wCWLEm25nCitcdTRCNzIJ5K2yCW7HkAorXHU0Qjc0CeSttAlodcOhbgorXHU0Qjc3CeSttwlsacO6CitcdTRCODkJ5K6JCWzDugorXHU0QjhCCeSuiwlsw6wKK1x1NEI4RAnkro0JbmnHjm8KK1x1NEI5NwnkrpcJw6BuCitcdTRCOTgJ5K6YCcOpcgorXHU0QjlDCeSunAlzaMOgCitcdTRCOUQJ5K6dCWh1w6FuCitcdTRCOUUJ5K6eCWNow7kKK1x1NEJBNAnkrqQJZMOtCitcdTRCQTcJ5K6nCWjDoW4KK1x1NEJBOQnkrqkJZ8O6CitcdTRCQUIJ5K6rCWzDs3UKK1x1NEJCMAnkrrAJZMeObgorXHU0QkI1CeSutQl0w7NuZworXHU0QkI4CeSuuAlow7oKK1x1NEJCQgnkrrsJY2jDrAorXHU0QkQ0CeSvlAljw6luCitcdTRCREEJ5K+aCceSdQorXHU0QkRCCeSvmwlqaceObgorXHU0QkRGCeSvnwlkdcOsCitcdTRCRTAJ5K+gCceObworXHU0QkUxCeSvoQlqaceObgorXHU0QkUzCeSvowlndcOsCitcdTRCRTUJ5K+lCcOgbgorXHU0QkU4CeSvqAlmw6luCitcdTRCRUIJ5K+rCWjDoG8KK1x1NEJGRAnkr70JZseUCitcdTRCRkYJ5K+/CXrDugorXHU0QzA4CeSwiAljaMeOCitcdTRDMDkJ5LCJCXDDoW4KK1x1NEMwRAnksI0JY8OsCitcdTRDMEUJ5LCOCWd1w6wKK1x1NEMyNQnksKUJaHXDsgorXHU0QzI2CeSwpglwx5AKK1x1NEMyOQnksKkJY2jEmworXHU0QzJECeSwrQluw7J1CitcdTRDMkYJ5LCvCW7HkAorXHU0QzM0CeSwtAlxw6wKK1x1NEMzNwnksLcJYsOgbmcKK1x1NEM0MwnksYMJZMeQCitcdTRDNDcJ5LGHCXNow6BuCitcdTRDNDgJ5LGICXHDrQorXHU0QzRCCeSxiwlkx45uCitcdTRDNTYJ5LGWCWxpw7oKK1x1NEM1QwnksZwJY3XDsgorXHU0QzVECeSxnQliw6AKK1x1NEM1RQnksZ4JbGnDugorXHU0QzY1CeSxpQl6aMOtCitcdTRDNzEJ5LGxCWTDrAorXHU0Qzc5CeSxuQluw6AKK1x1NEM3RQnksb4JbMOzdQorXHU0QzgwCeSygAlkacOpCitcdTRDODQJ5LKECW3DrW4KK1x1NEM5NAnkspQJccOtbmcKK1x1NEM5NQnkspUJcMeUCitcdTRDOTgJ5LKYCWd1x45uCitcdTRDOUEJ5LKaCWzDoGkKK1x1NEM5RQnksp4JbMOsCitcdTRDQTYJ5LKmCWNow6EKK1x1NENBNwnksqcJZMO5CitcdTRDQjUJ5LK1CWjDuQorXHU0Q0JCCeSyuwl4dcOhbgorXHU0Q0JECeSyvQlkx45vCitcdTRDQzEJ5LOBCWLDoQorXHU0Q0NCCeSziwl0w7NuZworXHU0Q0QxCeSzkQl5x5J1CitcdTRDRDQJ5LOUCWppw7kKK1x1NENENgnks5YJbsOoaQorXHU0Q0RBCeSzmglow6kKK1x1NENERAnks50JYsO5CitcdTRDREYJ5LOfCWvDsnUKK1x1NENFMAnks6AJY2h1w60KK1x1NENFQQnks6oJanXDoG4KK1x1NENFQwnks6wJw6gKK1x1NENFRgnks68JY2jDs25nCitcdTRDRjQJ5LO0CWTDoQorXHU0Q0Y4CeSzuAltw6EKK1x1NENGQgnks7sJY8OhbgorXHU0Q0ZGCeSzvwlsw6FuCitcdTREMDIJ5LSCCWjDoG5nCitcdTREMDQJ5LSECWzDrAorXHU0RDFCCeS0mwlqaceObworXHU0RDFECeS0nQliw7kKK1x1NEQxRgnktJ8JaHXDoW4KK1x1NEQyNgnktKYJcsOpbgorXHU0RDMzCeS0swlow6gKK1x1NEQzNQnktLUJYseQbmcKK1x1NEQzQQnktLoJYsO5CitcdTREM0MJ5LS8CWNox45uCitcdTREM0QJ5LS9CWLDoGkKK1x1NEQzRQnktL4JY3XDsworXHU0RDQ0CeS1hAliw60KK1x1NEQ1MAnktZAJY2jHjm4KK1x1NEQ1NgnktZYJamnDoG4KK1x1NEQ1OAnktZgJc2jDoAorXHU0RDVCCeS1mwlqacOgbgorXHU0RDVECeS1nQl5w6AKK1x1NEQ1RQnktZ4JasOsbmcKK1x1NEQ2MgnktaIJbcOoaQorXHU0RDYzCeS1owlkw6EKK1x1NEQ2NQnktaUJc2jDqAorXHU0RDcxCeS1sQlow6gKK1x1NEQ3NAnktbQJecO5bgorXHU0RDc1CeS1tQl6aMOhCitcdTREN0IJ5LW7CWfHlAorXHU0RDhECeS2jQlkw6wKK1x1NEQ4Rgnkto8JdMeQCitcdTREOTMJ5LaTCWrDrAorXHU0RDk0CeS2lAljaMOtCitcdTREOTYJ5LaWCWrDrG4KK1x1NEQ5NwnktpcJa8OoCitcdTREOUIJ5LabCWzDoAorXHU0RDlECeS2nQlxacOgCitcdTREQTAJ5LagCWppx45uCitcdTREQTEJ5LahCXNow60KK1x1NERBQgnktqsJa8eObgorXHU0REFFCeS2rgl5w6FuCitcdTREQjIJ5LayCW7DoW4KK1x1NERCNQnktrUJY2jDrQorXHU0RTAxCeS4gQlkxKtuZworXHU0RTAyCeS4gglrx45vCitcdTRFMDMJ5LiDCXHEqworXHU0RTA1CeS4hQl3w6BuCitcdTRFMDcJ5LiHCXfDoG4KK1x1NEUwOAnkuIgJemjDoG5nCitcdTRFMEMJ5LiMCWrEqworXHU0RTBFCeS4jgl5w7oKK1x1NEUwRgnkuI8JbWnHjm4KK1x1NEUxNQnkuJUJcMSrCitcdTRFMjIJ5LiiCWRpxasKK1x1NEUyNQnkuKUJecOhbgorXHU0RTI3CeS4pwlzw6BuZworXHU0RTI4CeS4qAlnxJsKK1x1NEUyQgnkuKsJecSBCitcdTRFMkQJ5LitCXpoxY1uZworXHU0RTJFCeS4rglndcOgbgorXHU0RTMzCeS4swljaMeObgorXHU0RTM1CeS4tQl3w6lpCitcdTRFM0IJ5Li7CXpox5QKK1x1NEUzRQnkuL4JaseUCitcdTRFNDIJ5LmCCcOgaQorXHU0RTQ4CeS5iAltxJMKK1x1NEU0OQnkuYkJecOsCitcdTRFNEQJ5LmNCXpow6AKK1x1NEU0RQnkuY4JaMWrCitcdTRFNEYJ5LmPCWbDoQorXHU0RTUxCeS5kQlzaMOobmcKK1x1NEU1MwnkuZMJcMSBbmcKK1x1NEU1OAnkuZgJY2jDqW5nCitcdTRFNTkJ5LmZCXnHkAorXHU0RTVECeS5nQlqaceUCitcdTRFNjIJ5LmiCWfDoGkKK1x1NEU2NgnkuaYJc2jFqworXHU0RTdFCeS5vglxacOhbgorXHU0RTdGCeS5vwljaMOsCitcdTRFODYJ5LqGCWzEkworXHU0RTg4CeS6iAl5w7oKK1x1NEU4OQnkuokJemjEk25nCitcdTRFOEEJ5LqKCXNow6wKK1x1NEU4Rgnkuo8Ja3XEqworXHU0RTkwCeS6kAlnw6huZworXHU0RTk5CeS6mQlnw6huCitcdTRFOUEJ5LqaCXnDoAorXHU0RTlCCeS6mwl4acSTCitcdTRFOUMJ5LqcCXnDoAorXHU0RTlFCeS6ngl5w6AKK1x1NEU5Rgnkup8JasOtCitcdTRFQTAJ5LqgCXTDs3UKK1x1NEVBMgnkuqIJa8OgbmcKK1x1NEVBMwnkuqMJcMSTbmcKK1x1NEVBOQnkuqkJbceUCitcdTRFQjMJ5LqzCWLDsworXHU0RUI3CeS6twlsacOhbgorXHU0RUJBCeS6uglyw6luCitcdTRFQkMJ5Lq8CWrDrQorXHU0RUJGCeS6vwl5w6wKK1x1NEVDMQnku4EJcsOpbgorXHU0RUM2CeS7hglww7oKK1x1NEVDNwnku4cJY2jDs3UKK1x1NEVDOAnku4gJYsSBCitcdTRFQ0YJ5LuPCWbDsworXHU0RUQ0CeS7lAl6x5AKK1x1NEVENQnku5UJc2jDrAorXHU0RUQ4CeS7mAlmw7kKK1x1NEVERQnku54JcsOobgorXHU0RUUyCeS7oglkw60KK1x1NEVFNQnku6UJeceQCitcdTRFRTgJ5LuoCXPEgQorXHU0RUVGCeS7rwnDoW5nCitcdTRFRjEJ5LuxCXDDrQorXHU0RUY0CeS7tAlqacOgCitcdTRFRjcJ5Lu3CWppw6AKK1x1NEVGOAnku7gJcsOpbgorXHU0RUZDCeS7vAlixKtuCitcdTRFRkUJ5Lu+CWTEqworXHU0RjAwCeS8gAl6aMWNbmcKK1x1NEYwRgnkvI8JZsO6CitcdTRGMTUJ5LyVCWbFqworXHU0RjFBCeS8mglodcOsCitcdTRGMUIJ5LybCXnHlAorXHU0RjFFCeS8nglzx45uCitcdTRGMjEJ5LyhCWNoxJMKK1x1NEYyOAnkvKgJd8OoaQorXHU0RjJCCeS8qwl6aMO5CitcdTRGMzAJ5LywCWfFqworXHU0RjMxCeS8sQlux5AKK1x1NEYzMwnkvLMJcMOgbgorXHU0RjM1CeS8tQljw6wKK1x1NEYzQQnkvLoJY8OsCitcdTRGM0IJ5Ly7CWLEk25nCitcdTRGM0QJ5Ly9CWppxIEKK1x1NEYzRQnkvL4JcMSrCitcdTRGNDEJ5L2BCceOaQorXHU0RjQyCeS9ggl6aMSTbmcKK1x1NEY0NAnkvYQJYsOobgorXHU0RjU0CeS9lAl6aMOgbgorXHU0RjU2CeS9lgliw6wKK1x1NEY1NwnkvZcJdHXDsworXHU0RjVBCeS9mgl5w6wKK1x1NEY1QgnkvZsJZsOzCitcdTRGNUMJ5L2cCXp1w7IKK1x1NEY1RAnkvZ0JZ8WNdQorXHU0RjVFCeS9ngluw6xuZworXHU0RjYzCeS9owl5w7JuZworXHU0RjY0CeS9pAl3x44KK1x1NEY2QQnkvaoJaHXDrQorXHU0RjcxCeS9sQlmx44KK1x1NEY3MwnkvbMJamnEgQorXHU0Rjc1CeS9tQliw6xuZworXHU0RjdECeS9vQljw6wKK1x1NEY4MAnkvoAJeMOtbmcKK1x1NEY4NwnkvocJecOtCitcdTRGOEEJ5L6KCWd1xIFuZworXHU0RjhGCeS+jwl6aMWrCitcdTRGOTcJ5L6XCXTDs25nCitcdTRGOTgJ5L6YCWNow6AKK1x1NEY5QgnkvpsJZ8OybmcKK1x1NEY5QwnkvpwJemjFjXUKK1x1NEY5RQnkvp4JcseUCitcdTRGQTcJ5L6nCWPDqAorXHU0RkE4CeS+qAlxacOhbworXHU0RkIwCeS+sAljdcOyCitcdTRGQjQJ5L60CWNox5J1CitcdTRGQjYJ5L62CWzHmgorXHU0RkJGCeS+vwliacOgbgorXHU0RkMwCeS/gAlzaMWrCitcdTRGQzcJ5L+HCWt1x45uZworXHU0RkM4CeS/iAlrw7kKK1x1NEZEQgnkv5sJbWnHjm4KK1x1NEZEQwnkv5wJcMSrbmcKK1x1NEZERgnkv58Jc8OsCitcdTRGRTAJ5L+gCXhpw6EKK1x1NEZFMgnkv6IJeGnFqworXHU0RkVBCeS/qglsw6wKK1x1NEZFRAnkv60JamnHjm4KK1x1NEZGMQnkv7EJasO5CitcdTRGRjQJ5L+0CWppw6BuCitcdTRGRjUJ5L+1CWJpx45vCitcdTRGRjcJ5L+3CWbDqGkKK1x1NTAwNAnlgIQJecOhbworXHU1MDA2CeWAhglsaceObmcKK1x1NTAwNwnlgIcJd8eObgorXHU1MDA5CeWAiQljxIFuZworXHU1MDBDCeWAjAlndcSBbgorXHU1MDEyCeWAkglkx45vCitcdTUwMTMJ5YCTCWp1w6gKK1x1NTAxNQnlgJUJY2h1w60KK1x1NTAxOQnlgJkJaMOydQorXHU1MDFGCeWAnwlqacOoCitcdTUwMjIJ5YCiCWppw6kKK1x1NTAyNAnlgKQJemjDrQorXHU1MDI1CeWApQlrxY1uZworXHU1MDI2CeWApglqdcOgbgorXHU1MDJBCeWAqgluw60KK1x1NTAyQgnlgKsJbMO6bgorXHU1MDJECeWArQl3xJNpCitcdTUwMkUJ5YCuCWx1x5IKK1x1NTAzMQnlgLEJaMO5bgorXHU1MDM3CeWAtwluw6BpCitcdTUwM0QJ5YC9CXhpw6EKK1x1NTA0NwnlgYcJamnHjgorXHU1MDQ4CeWBiAlqw6wKK1x1NTA0OQnlgYkJd8SbaQorXHU1MDRCCeWBiwlix5BuZworXHU1MDUzCeWBkwl3w7IKK1x1NTA1NQnlgZUJamnEkworXHU1MDU2CeWBlgljaMSbCitcdTUwNzQJ5YG0CWPDqAorXHU1MDc1CeWBtQl6aMSTbgorXHU1MDc2CeWBtgnHknUKK1x1NTA3QgnlgbsJbMOzdQorXHU1MDdDCeWBvAlqacOpCitcdTUwN0UJ5YG+CWbDqG4KK1x1NTA4MAnlgoAJa3XHkAorXHU1MDgxCeWCgQlzx5J1CitcdTUwODYJ5YKGCXl1w6BuCitcdTUwOEQJ5YKNCWLDoG5nCitcdTUwOEUJ5YKOCWRpxIFuCitcdTUwOTMJ5YKTCXNow6BuCitcdTUwOTcJ5YKXCWNow7kKK1x1NTA5QwnlgpwJecOhbworXHU1MDlFCeWCnglzdcWNCitcdTUwQTkJ5YKpCW51w7MKK1x1NTBBRQnlgq4JY8OhbworXHU1MEFGCeWCrwl6x5JuZworXHU1MEIzCeWCswljaHXDoW4KK1x1NTBCNAnlgrQJeceUCitcdTUwQkEJ5YK6CWNow6wKK1x1NTBDMgnlg4IJbMOzdQorXHU1MEMzCeWDgwliw6hpCitcdTUwQzYJ5YOGCWxpw6FuCitcdTUwQzcJ5YOHCWzDuQorXHU1MEQ0CeWDlAl6x5RuCitcdTUwREYJ5YOfCWrEqworXHU1MEVECeWDrQlqacOgbgorXHU1MEVFCeWDrgl0w7NuZworXHU1MEVGCeWDrwlsx5BuCitcdTUwRkEJ5YO6CXFpw6BvCitcdTUxMDQJ5YSECXnDrAorXHU1MTA2CeWEhglqx5BuZworXHU1MTBECeWEjQlzaMeOCitcdTUxMTAJ5YSQCWLEq24KK1x1NTExMgnlhJIJcsO6CitcdTUxMUYJ5YSfCWNow6FuZworXHU1MTMzCeWEswljaMOgbgorXHU1MTQwCeWFgAl3w7kKK1x1NTE0MwnlhYMJeXXDoW4KK1x1NTE1MgnlhZIJw6lyCitcdTUxNTMJ5YWTCWvDqAorXHU1MTVDCeWFnAlkxY11CitcdTUxNjQJ5YWkCWh1w6FuZworXHU1MTY4CeWFqAlxdcOhbgorXHU1MTZBCeWFqgl5w7oKK1x1NTE2QgnlhasJYsSBCitcdTUxNkUJ5YWuCXjEqworXHU1MTcyCeWFsgl0acSBbgorXHU1MTc0CeWFtAl4w6xuZworXHU1MTc1CeWFtQlixKtuZworXHU1MTc3CeWFtwlqw7kKK1x1NTE3QgnlhbsJeceObmcKK1x1NTE3QwnlhbwJamnEgW4KK1x1NTE5MQnlhpEJemjDsnUKK1x1NTE5MgnlhpIJbcOgbworXHU1MTkzCeWGkwlnw7J1CitcdTUxOTQJ5YaUCXjHlAorXHU1MTk5CeWGmQl4acSbCitcdTUxQTAJ5YagCWd1w6BuCitcdTUxQTEJ5YahCW3DqW5nCitcdTUxQjAJ5YawCWLEq25nCitcdTUxQjEJ5YaxCWjDuQorXHU1MUM2CeWHhgl6aMeUbgorXHU1MUM4CeWHiAlqw6xuZworXHU1MUNBCeWHiglxw71uZworXHU1MUUwCeWHoAlqx5AKK1x1NTFFMQnlh6EJZsOhbgorXHU1MUU4CeWHqAlmxJNuZworXHU1MUVCCeWHqwlmw7oKK1x1NTFGQQnlh7oJY2jFqworXHU1MUZDCeWHvAlkw6BuZworXHU1MjAwCeWIgAlkxIFvCitcdTUyMDYJ5YiGCWbEk24KK1x1NTIwNwnliIcJcWnEkworXHU1MjA4CeWIiAl5w6wKK1x1NTIwQwnliIwJY8eUbgorXHU1MjEyCeWIkglodcOhCitcdTUyMTMJ5YiTCWNodcSBbmcKK1x1NTIxQwnliJwJZsO6CitcdTUyMjUJ5YilCWJpw6kKK1x1NTIyOAnliKgJYsOgbworXHU1MjI5CeWIqQlsw6wKK1x1NTIyQwnliKwJY2jHjm4KK1x1NTIzMgnliLIJa3XEqworXHU1MjM3CeWItwlzaHXEgQorXHU1MjM4CeWIuAlxdcOgbgorXHU1MjNBCeWIugljw6wKK1x1NTIzQgnliLsJa8OoCitcdTUyM0YJ5Yi/CWd1w6wKK1x1NTI0QQnliYoJeGnEgW8KK1x1NTI0QgnliYsJa8OoCitcdTUyNEMJ5YmMCWzDoAorXHU1MjRECeWJjQlxacOhbgorXHU1MjRFCeWJjglzaMOgCitcdTUyNEYJ5YmPCWNodcSBbmcKK1x1NTI1MAnliZAJZ3XHjgorXHU1MjVBCeWJmgl6w6wKK1x1NTI1RQnliZ4JasSrCitcdTUyNjEJ5YmhCXNow6BuCitcdTUyNjIJ5YmiCXpodcOzCitcdTUyNjYJ5YmmCXnEgW4KK1x1NTI2RAnlia0JY2h1xIFuZworXHU1Mjc1CeWJtQljaHXDoG5nCitcdTUyNzYJ5Ym2CWp1xIFuCitcdTUyNzkJ5Ym5CWNoxIFvCitcdTUyN0QJ5Ym9CXBpxIFvCitcdTUyN0YJ5Ym/CWppx45vCitcdTUyODAJ5YqACWd1xIEKK1x1NTI4NAnlioQJemjDoQorXHU1Mjg1CeWKhQlwx5AKK1x1NTI4OAnliogJcMSrCitcdTUyODkJ5YqJCWxpw7oKK1x1NTI5OAnlipgJbcOzCitcdTUyQjMJ5YqzCWzDoW8KK1x1NTJCNAnlirQJbMOhbworXHU1MkI2CeWKtglqw6xuCitcdTUyQzEJ5YuBCWrDrG4KK1x1NTJDMgnli4IJaMOhbworXHU1MkQyCeWLkglsw6gKK1x1NTJEMwnli5MJa8OgaQorXHU1MkQ5CeWLmQl3w7kKK1x1NTJERAnli50Jc2jDqG5nCitcdTUyREUJ5YueCWzDoW8KK1x1NTJERgnli58JbcO5CitcdTUyRTYJ5YumCWNoxIFvCitcdTUyRTcJ5YunCXF1w6BuCitcdTUyRjgJ5Yu4CXF1w6BuCitcdTUyRkIJ5Yu7CXnDum4KK1x1NTJGRQnli74JZ8WNdQorXHU1MkZGCeWLvwl3w7kKK1x1NTMxNQnljJUJYsSrCitcdTUzMTcJ5YyXCWLEm2kKK1x1NTMxOAnljJgJbseObworXHU1MzFBCeWMmglmxIFuZworXHU1MzI5CeWMqQlmxJNpCitcdTUzMkIJ5YyrCWjFqworXHU1MzJGCeWMrwlodcOsCitcdTUzMzEJ5YyxCWt1w6wKK1x1NTMzMgnljLIJbGnDoW4KK1x1NTMzOQnljLkJcMeQCitcdTUzM0IJ5Yy7CXnEqworXHU1MzNDCeWMvAnHjm4KK1x1NTMzRAnljL0JeceObgorXHU1MzQwCeWNgAlxxasKK1x1NTM0MQnljYEJc2jDrQorXHU1MzRGCeWNjwl4acOpCitcdTUzNTIJ5Y2SCXrDugorXHU1MzUzCeWNkwl6aHXDsworXHU1MzU2CeWNlgltw6BpCitcdTUzNTgJ5Y2YCWTEgW4KK1x1NTM1QwnljZwJYsWNCitcdTUzNjEJ5Y2hCWvHjgorXHU1MzYyCeWNoglsw7oKK1x1NTM2QQnljaoJamnDqQorXHU1MzZECeWNrQlxacOzbmcKK1x1NTM3MgnljbIJc2jDoG8KK1x1NTM3NwnljbcJanXHjm4KK1x1NTM3OAnljbgJeGnDqAorXHU1MzgyCeWOggljaMeObmcKK1x1NTM4MwnljoMJw6BuCitcdTUzODkJ5Y6JCWzDrAorXHU1MzhDCeWOjAl5w6BuCitcdTUzOEQJ5Y6NCXNow6gKK1x1NTM5NAnljpQJemjDrAorXHU1Mzk2CeWOlglww6FuZworXHU1Mzk3CeWOlwl0w60KK1x1NTNBMQnljqEJeXXDoW4KK1x1NTNBNwnljqcJaseQbgorXHU1M0FCCeWOqwnDoW8KK1x1NTNBRQnljq4Jc8SrCitcdTUzQjIJ5Y6yCWzDrAorXHU1M0I3CeWOtwlnxY1uZworXHU1M0I5CeWOuQlxacO6CitcdTUzQzAJ5Y+ACWh1w6wKK1x1NTNDMQnlj4EJc8SBbgorXHU1M0MzCeWPgwljxIFuCitcdTUzQzQJ5Y+ECWPEgW4KK1x1NTNDNQnlj4UJY8SBbgorXHU1M0M2CeWPhgnDoGkKK1x1NTNDOQnlj4kJY2jEgQorXHU1M0NBCeWPiglqw60KK1x1NTNDRQnlj44Jc2jFjXUKK1x1NTNEMgnlj5IJbMOsCitcdTUzRDQJ5Y+UCXNoxasKK1x1NTNENgnlj5YJcceUCitcdTUzREIJ5Y+bCXDDoG4KK1x1NTNFNgnlj6YJbMOsbmcKK1x1NTNFOAnlj6gJZMSBbworXHU1M0U5CeWPqQlrw7J1CitcdTUzRUEJ5Y+qCXpox5AKK1x1NTNFQgnlj6sJamnDoG8KK1x1NTNFQwnlj6wJc2jDoG8KK1x1NTNFRAnlj60JYsSBCitcdTUzRUUJ5Y+uCWTEq25nCitcdTUzRjAJ5Y+wCXTDoWkKK1x1NTNGMQnlj7EJY2jDrAorXHU1M0Y3CeWPtwlow6FvCitcdTUzRjgJ5Y+4CXPEqworXHU1NDAxCeWQgQl5w7kKK1x1NTQwMgnlkIIJbcOhbmcKK1x1NTQwMwnlkIMJY2jEqworXHU1NDA0CeWQhAlnw6gKK1x1NTQwOAnlkIgJaMOpCitcdTU0MDkJ5ZCJCWrDrQorXHU1NDBECeWQjQltw61uZworXHU1NDEwCeWQkAl0x5QKK1x1NTQxMQnlkJEJeGnDoG5nCitcdTU0MTMJ5ZCTCXhpw6AKK1x1NTQxNAnlkJQJecSbCitcdTU0MTgJ5ZCYCceSdQorXHU1NDI2CeWQpglmx5J1CitcdTU0MjcJ5ZCnCWLEgQorXHU1NDI4CeWQqAlkxatuCitcdTU0MkQJ5ZCtCWvEk25nCitcdTU0MkUJ5ZCuCXNox5RuCitcdTU0MzEJ5ZCxCXpoxKsKK1x1NTQzMgnlkLIJeceQbgorXHU1NDMzCeWQswl3w7oKK1x1NTQzNgnlkLYJbsOgCitcdTU0MzcJ5ZC3CWNodcSrCitcdTU0M0EJ5ZC6CWTFjXUKK1x1NTQzRAnlkL0JaMWNbmcKK1x1NTQzRQnlkL4Jd8O6CitcdTU0NDAJ5ZGACXnEgQorXHU1NDQxCeWRgQlqw7luCitcdTU0NDIJ5ZGCCWzHmgorXHU1NDQ2CeWRhglkxIFpCitcdTU0NDcJ5ZGHCW7DoAorXHU1NDUxCeWRkQl0xatuCitcdTU0NTYJ5ZGWCWzDrAorXHU1NDU4CeWRmAl5dcOhbgorXHU1NDU5CeWRmQlndcWNCitcdTU0NUIJ5ZGbCXFpw6BuZworXHU1NDVDCeWRnAl3xasKK1x1NTQ1RgnlkZ8JcXXHjm4KK1x1NTQ2MgnlkaIJbsSTCitcdTU0NjMJ5ZGjCeG4vworXHU1NDY0CeWRpAlsw61uZworXHU1NDY2CeWRpgl5xY11CitcdTU0NkMJ5ZGsCXjDrAorXHU1NDcyCeWRsgl6xKsKK1x1NTQ3NQnlkbUJaMSTCitcdTU0N0IJ5ZG7CXNoxJNuCitcdTU0N0QJ5ZG9CW3DrG5nCitcdTU0ODEJ5ZKBCWfDqG0KK1x1NTQ4QgnlkosJeseOCitcdTU0OEMJ5ZKMCWjDqQorXHU1NDhECeWSjQloxIFpCitcdTU0OEYJ5ZKPCXnHkm5nCitcdTU0OTIJ5ZKSCXpow7J1CitcdTU0OTcJ5ZKXCXp1x5IKK1x1NTQ5Rgnlkp8JY2jDoAorXHU1NEE1CeWSpQlkacOpCitcdTU0QTYJ5ZKmCXnDrQorXHU1NEE3CeWSpwlsacSTCitcdTU0QTgJ5ZKoCXrEqworXHU1NEFECeWSrQlqxKsKK1x1NTRBRgnlkq8JZ8STCitcdTU0QjAJ5ZKwCXNodcOgaQorXHU1NEIxCeWSsQl6w6EKK1x1NTRCMgnlkrIJeGnDoG8KK1x1NTRCMwnlkrMJa8OpCitcdTU0QjQJ5ZK0CWh1w6EKK1x1NTRCNwnlkrcJdMOhbworXHU1NEJBCeWSugl4dceObgorXHU1NEJCCeWSuwl4acWrCitcdTU0QkMJ5ZK8CWd1xY0KK1x1NTRCRAnlkr0JecOgbgorXHU1NEJFCeWSvglsx45vCitcdTU0QzQJ5ZOECWjHkm5nCitcdTU0QzUJ5ZOFCXhpxY1uZworXHU1NEM2CeWThglkdcWNCitcdTU0QzcJ5ZOHCXfEgQorXHU1NEM4CeWTiAloxIEKK1x1NTRDOQnlk4kJesSBaQorXHU1NENDCeWTjAlww6BpCitcdTU0RDAJ5ZOQCWt1xIFuZworXHU1NEQyCeWTkglkxIEKK1x1NTRENwnlk5cJaHXDoQorXHU1NEQ5CeWTmQlrdcOgaQorXHU1NEUyCeWToglsw7JuZworXHU1NEU2CeWTpgnDsworXHU1NEU3CeWTpwljaMSrCitcdTU0RTkJ5ZOpCWzEqworXHU1NEVBCeWTqglux44KK1x1NTRFQgnlk6sJesO6CitcdTU0RjUJ5ZO1CWLEgQorXHU1NEZDCeWTvAloxJNuZworXHU1NEZECeWTvQlnxJtuZworXHU1NTAwCeWUgAl5x5J1CitcdTU1MDUJ5ZSFCWjEgW4KK1x1NTUwNgnllIYJc3XFjQorXHU1NTA5CeWUiQnEgWkKK1x1NTUwQQnllIoJamnDoQorXHU1NTBCCeWUiwl0x5QKK1x1NTUwRAnllI0JaHXHjm4KK1x1NTUwRQnllI4JbMOsCitcdTU1MTUJ5ZSVCWfDsm5nCitcdTU1MUUJ5ZSeCWTHknUKK1x1NTUyMgnllKIJasSrCitcdTU1MjgJ5ZSoCXrHlAorXHU1NTI5CeWUqQl3xY0KK1x1NTUyQgnllKsJecOtbgorXHU1NTJGCeWUrwl3w6lpCitcdTU1MzAJ5ZSwCXNodcSBCitcdTU1M0EJ5ZS6CXRpx45uCitcdTU1M0QJ5ZS9CXjEqworXHU1NTQyCeWVggluw7J1CitcdTU1NDUJ5ZWFCXpodcOzCitcdTU1NEEJ5ZWKCcSBCitcdTU1NEQJ5ZWNCXTFq24KK1x1NTU1MgnllZIJd8SBCitcdTU1NTkJ5ZWZCXrHkAorXHU1NTVCCeWVmwljdcOsCitcdTU1NUUJ5ZWeCXnHjgorXHU1NTVGCeWVnwlxx5AKK1x1NTU2MQnllaEJZsSTaQorXHU1NTYyCeWVoglsaceObmcKK1x1NTU2MwnllaMJeGnDoW4KK1x1NTU2NgnllaYJbMSBCitcdTU1NjcJ5ZWnCXrDqQorXHU1NTcxCeWVsQlqdcOpCitcdTU1NzQJ5ZW0CWNox45uCitcdTU1NzUJ5ZW1CWLFjQorXHU1NTc4CeWVuAl4acOgbworXHU1NTgwCeWWgAlrw6gKK1x1NTU4MQnlloEJecO6CitcdTU1ODIJ5ZaCCXfDqGkKK1x1NTU4NwnllocJbMeOCitcdTU1ODgJ5ZaICWppxJMKK1x1NTU4QwnllowJemjFjXUKK1x1NTU5MAnllpAJecOsbgorXHU1NTkyCeWWkgl6w6FuCitcdTU1OTQJ5ZaUCXfFjQorXHU1NTk1CeWWlQltaceObgorXHU1NTlDCeWWnAl4x5AKK1x1NTU5RAnllp0JaMSTCitcdTU1OUYJ5ZafCWt1w6wKK1x1NTVBOAnllqgJbGnDoG5nCitcdTU1QUEJ5ZaqCXPEgW5nCitcdTU1QUIJ5ZarCWNoxKsKK1x1NTVBQwnllqwJcWnDoW8KK1x1NTVBRQnllq4JZMSBbgorXHU1NUFGCeWWrwlwxJNuCitcdTU1QjMJ5ZazCXpoxIEKK1x1NTVCNAnllrQJd8STaQorXHU1NUI5CeWWuQlrdcOtCitcdTU1QkMJ5Za8CWppw6kKK1x1NTVCRQnllr4Ja8O5CitcdTU1QzQJ5ZeECXNow6AKK1x1NTVDNQnll4UJeGnDuQorXHU1NUM2CeWXhglxacOgbmcKK1x1NTVDNwnll4cJc8OoCitcdTU1Q0IJ5ZeLCcOgaQorXHU1NUNECeWXjQltw6EKK1x1NTVDRQnll44JbceOCitcdTU1Q0YJ5ZePCWNoxIEKK1x1NTVEMgnll5IJdMOgCitcdTU1RDQJ5ZeUCWNoxJNuCitcdTU1RDUJ5ZeVCXLDuQorXHU1NURDCeWXnAlzaMOsCitcdTU1REYJ5ZefCWppxJMKK1x1NTVFMAnll6AJbHXDsgorXHU1NUU4CeWXqAloxIFpCitcdTU1RUYJ5ZevCcSTbgorXHU1NUYwCeWXsAlnw6gKK1x1NTVGNQnll7UJdMWNbmcKK1x1NTYwRAnlmI0JbMOzdQorXHU1NjBFCeWYjglnw6EKK1x1NTYwRgnlmI8JamnHjgorXHU1NjEwCeWYkAl4acSBbworXHU1NjExCeWYkQloxasKK1x1NTYxMgnlmJIJaHXDrAorXHU1NjEzCeWYkwlndcWNCitcdTU2MTQJ5ZiUCceSdQorXHU1NjE1CeWYlQl4acSBbgorXHU1NjFDCeWYnAltw6AKK1x1NTYyMQnlmKEJdMSBbmcKK1x1NTYyNwnlmKcJbcOsCitcdTU2MjkJ5ZipCWh1xIEKK1x1NTYyQQnlmKoJbceOaQorXHU1NjJDCeWYrAl6dcWNCitcdTU2MkQJ5ZitCXDEk25nCitcdTU2MzIJ5ZiyCWNow6FvCitcdTU2MzMJ5ZizCWt1w6wKK1x1NTYzNwnlmLcJaMOhbworXHU1NjNBCeWYuglxacOhbworXHU1NjNFCeWYvgl0w6FuCitcdTU2M0YJ5Zi/CWjEk2kKK1x1NTY0MAnlmYAJeMO5bgorXHU1NjQyCeWZggl6x5RuCitcdTU2NEMJ5ZmMCWPEk25nCitcdTU2NEQJ5ZmNCWppxIFvCitcdTU2NEUJ5ZmOCXnEkworXHU1NjYyCeWZognFjQorXHU1NjYzCeWZowl6aHXDsworXHU1NjY0CeWZpAlqw6xuCitcdTU2NjcJ5ZmnCcSBaQorXHU1NjZGCeWZrwnHjmkKK1x1NTY3MAnlmbAJecWNbmcKK1x1NTY3MgnlmbIJa3XDoGkKK1x1NTY3NAnlmbQJcMSTbgorXHU1Njc1CeWZtQlkw6BvCitcdTU2NzYJ5Zm2CWfDoQorXHU1Njc3CeWZtwloxJNuCitcdTU2NzgJ5Zm4CWTDuW4KK1x1NTY4MwnlmoMJdMOgCitcdTU2ODQJ5ZqECWh1w7IKK1x1NTY4NQnlmoUJcsO6CitcdTU2ODgJ5ZqICXnDoAorXHU1NjlECeWanQlodcSBbmcKK1x1NTZBMgnlmqIJbsOhbmcKK1x1NTZBNAnlmqQJbcOzCitcdTU2QUEJ5ZqqCXLEgW5nCitcdTU2QjgJ5Zq4CWRpx45uCitcdTU2QkMJ5Zq8CWp1w6kKK1x1NTZCRAnlmr0JY2h1w7IKK1x1NTZDNQnlm4UJY2jHjm4KK1x1NTZDOQnlm4kJbHXFjQorXHU1NkNBCeWbigluw6FuZworXHU1NkQxCeWbkQl6aMeUCitcdTU2REUJ5ZueCWh1w60KK1x1NTZFNAnlm6QJdMO6bgorXHU1NkU1CeWbpQlrw6BuZworXHU1NkVCCeWbqwlow7oKK1x1NTZFRQnlm64Jw6kKK1x1NTZFRgnlm68JZ3XDsworXHU1NkYyCeWbsgl0xY1uZworXHU1NkYzCeWbswlqdcOgbgorXHU1NkY3CeWbtwlxxatuCitcdTU3MDgJ5ZyICXF1xIFuCitcdTU3MDkJ5ZyJCWNodcOtCitcdTU3MEMJ5ZyMCWNodcOtCitcdTU3MEQJ5ZyNCXfDqWkKK1x1NTcxRAnlnJ0JbHXDoW4KK1x1NTcyMwnlnKMJc2jDqG5nCitcdTU3MjQJ5ZykCXDDugorXHU1NzI1CeWcpQlsw7kKK1x1NTcyQQnlnKoJZ8STCitcdTU3MkMJ5ZysCXfFqworXHU1NzMwCeWcsAlkw6wKK1x1NTczMQnlnLEJY2jHjm5nCitcdTU3M0IJ5Zy7CXHDrQorXHU1NzNDCeWcvAlqxKsKK1x1NTczRgnlnL8JamnDoQorXHU1NzQ0CeWdhAl0w7N1CitcdTU3NDgJ5Z2ICWbDoW5nCitcdTU3NEIJ5Z2LCWbDqG4KK1x1NTc0RgnlnY8JaHXDoGkKK1x1NTc1MAnlnZAJenXDsgorXHU1NzVGCeWdnwlmw6luCitcdTU3NjMJ5Z2jCW7DrAorXHU1NzZFCeWdrgl0w6FpCitcdTU3NzEJ5Z2xCXnEgW5nCitcdTU3NzQJ5Z20CWvEkworXHU1Nzc4CeWduAlixY0KK1x1NTc3QgnlnbsJZMeQCitcdTU3N0MJ5Z28CWNow6gKK1x1NTc4NAnlnoQJbMeSbmcKK1x1NTc4OQnlnokJcMOhbworXHU1NzhECeWejQlqw6wKK1x1NTc5MwnlnpMJZ8SBaQorXHU1Nzk2CeWelglkdcSrCitcdTU3OUIJ5Z6bCWR1x5IKK1x1NTdBOAnlnqgJc2jHknUKK1x1NTdBQwnlnqwJaMOzbmcKK1x1NTdBRQnlnq4Ja3XHjgorXHU1N0JCCeWeuwliw6AKK1x1NTdDMQnln4EJY8OpbgorXHU1N0M2CeWfhglxdcOoCitcdTU3Q0IJ5Z+LCW3DoWkKK1x1NTdDQwnln4wJbMOgbmcKK1x1NTdDRgnln48JecOhbgorXHU1N0QwCeWfkAlqxKtuCitcdTU3RDQJ5Z+UCXDHlAorXHU1N0Q1CeWflQljaMOpbmcKK1x1NTdEQQnln5oJYsO5CitcdTU3RTEJ5Z+hCXnDoAorXHU1N0U1CeWfpQljaMSTbmcKK1x1NTdFOQnln6kJemjEk25nCitcdTU3RjMJ5Z+zCWvHjm4KK1x1NTdGNwnln7cJemjDrQorXHU1N0ZBCeWfuglqxKsKK1x1NTdGRQnln74JasO5CitcdTU4MDAJ5aCACWvFqworXHU1ODBDCeWgjAlnw7kKK1x1NTgwRQnloI4JbMOtbmcKK1x1NTgxNgnloJYJbseObworXHU1ODIxCeWgoQlix45vCitcdTU4MjIJ5aCiCWLHjm8KK1x1NTgyNQnloKUJw6BpCitcdTU4MjkJ5aCpCWNox45uZworXHU1ODM0CeWgtAljaMeObmcKK1x1NTgzNQnloLUJZMeUCitcdTU4MzgJ5aC4CWbDum5nCitcdTU4M0YJ5aC/CWppx45uCitcdTU4NDMJ5aGDCWh1xIFuZworXHU1ODQ5CeWhiQlqw60KK1x1NTg0QQnloYoJa3XDoGkKK1x1NTg1RQnloZ4Jc8SBaQorXHU1ODVGCeWhnwl6w6BuZworXHU1ODYzCeWhowljaMSbbmcKK1x1NTg2NQnloaUJZ8OpCitcdTU4NkIJ5aGrCXRpw6FuCitcdTU4NzMJ5aGzCXDDqW5nCitcdTU4NzkJ5aG5CXFpw6BuCitcdTU4N0IJ5aG7CW3DsgorXHU1ODg3CeWihwl6aMSBbmcKK1x1NTg4QgnloosJY2jEm24KK1x1NTg4RQnloo4JZ3XFjQorXHU1ODhGCeWijwlxaceObmcKK1x1NTg5MAnlopAJaseQbgorXHU1OEEzCeWiowlwxasKK1x1NThBNAnloqQJdHXDrQorXHU1OEE1CeWipQlkx5JuZworXHU1OEE4CeWiqAltw7IKK1x1NThBQgnloqsJesWrbgorXHU1OEFDCeWirAlkxJMKK1x1NThBRAnloq0Jc2jDqG5nCitcdTU4QUUJ5aKuCWR1w7IKK1x1NThBRgnloq8JZHXDsgorXHU1OEIwCeWisAl0w6FuCitcdTU4QjcJ5aK3CcOgbworXHU1OEJBCeWiugnDoG8KK1x1NThCQgnlorsJcWnDoW5nCitcdTU4QzEJ5aOBCWLDrAorXHU1OEM2CeWjhgl4dcSBbgorXHU1OENGCeWjjwlox45uCitcdTU4RDAJ5aOQCXjHkAorXHU1OEQyCeWjkgnDoGkKK1x1NThEMwnlo5MJecSBCitcdTU4RDQJ5aOUCWTHjm8KK1x1NThEOQnlo5kJa3XDoG5nCitcdTU4REUJ5aOeCWh1w6BpCitcdTU4RTcJ5aOnCXnDoW4KK1x1NThGNAnlo7QJecOsCitcdTU4RkEJ5aO6CWjDugorXHU1OEZGCeWjvwl6xatuCitcdTU5MDIJ5aSCCWNox5QKK1x1NTkwNQnlpIUJamnDoG5nCitcdTU5MDYJ5aSGCWbEk25nCitcdTU5MEUJ5aSOCWppx44KK1x1NTkxMAnlpJAJeMOsCitcdTU5MTUJ5aSVCXjDrAorXHU1OTE2CeWklgl3w6BpCitcdTU5MTgJ5aSYCW3Hjm8KK1x1NTkyMwnlpKMJZMOgaQorXHU1OTI3CeWkpwlkw6AKK1x1NTkyOAnlpKgJZsO6CitcdTU5MkMJ5aSsCWd1w6BpCitcdTU5MkQJ5aStCXnEgW8KK1x1NTkyRQnlpK4JecSBbmcKK1x1NTkzMAnlpLAJZ8eObworXHU1OTMzCeWkswl0w6BpCitcdTU5MzUJ5aS1CWppw6EKK1x1NTkzQQnlpLoJZHXDsworXHU1OTNFCeWkvglqacOhCitcdTU5M0YJ5aS/CWLEgQorXHU1OTQwCeWlgAnEk24KK1x1NTk0MQnlpYEJZMSrCitcdTU5NDQJ5aWECXnHjm4KK1x1NTk0NQnlpYUJasSrCitcdTU5NDcJ5aWHCXHDrQorXHU1OTQ4CeWliAluw6BpCitcdTU5NTIJ5aWSCWvEgWkKK1x1NTk1MwnlpZMJc2jEkworXHU1OTU0CeWllAlixJNuCitcdTU5NTUJ5aWVCXnDrAorXHU1OTU4CeWlmAl6w6BuZworXHU1OTU5CeWlmQlixJtuCitcdTU5NUIJ5aWbCWjHjgorXHU1OTY1CeWlpQnDoG8KK1x1NTk2OAnlpagJamnHjm5nCitcdTU5NzMJ5aWzCW7HmgorXHU1OTc0CeWltAluw7oKK1x1NTk3RAnlpb0JaMeObworXHU1OTdFCeWlvgl4acSBbgorXHU1OTg0CeWmhAl3w6BuZworXHU1OUE5CeWmqQl3x5QKK1x1NTlBQgnlpqsJZ3XEqworXHU1OUFGCeWmrwl6aMOzdQorXHU1OUIwCeWmsAlux5AKK1x1NTlCNAnlprQJccSrCitcdTU5QkIJ5aa7CXHEqworXHU1OUJDCeWmvAliw6wKK1x1NTlDMgnlp4IJZsOhCitcdTU5RDQJ5aeUCXfEm2kKK1x1NTlENQnlp5UJamnHjm8KK1x1NTlFNAnlp6QJZ8OydQorXHU1OUU1CeWnpQlsx45vCitcdTU5RTYJ5aemCWppxIFuCitcdTU5RTkJ5aepCW5pw6BuCitcdTU5RkEJ5ae6CXNoxJNuCitcdTU5RkIJ5ae7CXnEq24KK1x1NUEwNwnlqIcJamnEgW8KK1x1NUEwOQnlqIkJcMSrbmcKK1x1NUEwRgnlqI8JbcOhbmcKK1x1NUExRAnlqJ0JcMSTaQorXHU1QTI5CeWoqQltaceObgorXHU1QTJBCeWoqgl3w7oKK1x1NUEyRQnlqK4JecOhbgorXHU1QTM4CeWouAlxw60KK1x1NUE1MQnlqZEJanXDoG4KK1x1NUE1OQnlqZkJasOsbmcKK1x1NUE2MQnlqaEJY2h1w7IKK1x1NUE2NAnlqaQJY2jFjXUKK1x1NUE3QwnlqbwJcnXDsgorXHU1QTdECeWpvQlqaceOCitcdTVBN0YJ5am/CXjDuQorXHU1QThECeWqjQlmw7kKK1x1NUE5QgnlqpsJeXXDoW4KK1x1NUE5QwnlqpwJemjEk24KK1x1NUE5Rgnlqp8JeGnDqAorXHU1QUExCeWqoQlsacOgbgorXHU1QUFGCeWqrwlndceQCitcdTVBQzAJ5auACXHDrW4KK1x1NUFENgnlq5YJcGnDoW8KK1x1NUFENwnlq5cJecO5CitcdTVBRDgJ5auYCWzDqWkKK1x1NUFFQQnlq6oJbMOgbworXHU1QUYxCeWrsQlxacOhbmcKK1x1NUIwOAnlrIgJcsOhbworXHU1QjA5CeWsiQl4xKsKK1x1NUIxQgnlrJsJaHXDoW4KK1x1NUIxQwnlrJwJdGnDoW8KK1x1NUIyNgnlrKYJY2jDs3UKK1x1NUIyRgnlrK8JbmnHjm8KK1x1NUIzMwnlrLMJcWnEgW4KK1x1NUI0MwnlrYMJbmnDoW5nCitcdTVCNDYJ5a2GCXnEq25nCitcdTVCNEQJ5a2NCXnDoW4KK1x1NUI1MAnlrZAJeseQCitcdTVCNTEJ5a2RCWppw6kKK1x1NUI1NwnlrZcJesOsCitcdTVCNUEJ5a2aCWbDugorXHU1QjVCCeWtmwliw7MKK1x1NUI1QwnlrZwJesSrCitcdTVCNkMJ5a2sCW7EgW8KK1x1NUI2RAnlra0JY8OgbgorXHU1QjcxCeWtsQljaMOhbgorXHU1QjcyCeWtsgl5xIEKK1x1NUI3NAnlrbQJbseQCitcdTVCNzcJ5a23CWzDrQorXHU1QjdCCeWtuwlsw6FpCitcdTVCODEJ5a6BCW7DrW5nCitcdTVCODIJ5a6CCXLHkm5nCitcdTVCODQJ5a6ECWd1x5AKK1x1NUI4OQnlrokJxIFuCitcdTVCOEYJ5a6PCWjDs25nCitcdTVCOTQJ5a6UCXl1xIFuCitcdTVCOUMJ5a6cCXnDrQorXHU1QkI0CeWutAl5w6BuCitcdTVCQjcJ5a63CWLDrG4KK1x1NUJCRgnlrr8Jc8O5CitcdTVCQzAJ5a+ACWPDoGkKK1x1NUJDMgnlr4IJasOsCitcdTVCQ0UJ5a+OCWLDrG5nCitcdTVCRDYJ5a+WCXHDrG4KK1x1NUJEOAnlr5gJemjDrAorXHU1QkRECeWvnQlxx5BuCitcdTVCRTEJ5a+hCWd1x44KK1x1NUJFNwnlr6cJbsOtbmcKK1x1NUJFOAnlr6gJemjDoGkKK1x1NUJGQwnlr7wJZMeObworXHU1QkZECeWvvQlsx5wKK1x1NUMwNQnlsIUJa8OoCitcdTVDMDcJ5bCHCWppxIFuZworXHU1QzA4CeWwiAl6aHXEgW4KK1x1NUMwQgnlsIsJeMO6bgorXHU1QzBDCeWwjAlkw6BvCitcdTVDMEYJ5bCPCXhpx45vCitcdTVDMTEJ5bCRCXNox45vCitcdTVDMTIJ5bCSCcSbcgorXHU1QzFBCeWwmglzaMOgbmcKK1x1NUMxQgnlsJsJbGnDoW8KK1x1NUMxRgnlsJ8JeGnHjm4KK1x1NUMyMwnlsKMJbcOpbmcKK1x1NUMyOAnlsKgJbcOhbmcKK1x1NUMyOQnlsKkJa3XHkAorXHU1QzMwCeWwsAljaMSbCitcdTVDM0EJ5bC6CWNox5AKK1x1NUMzQgnlsLsJa8SBbworXHU1QzNFCeWwvgl3xJtpCitcdTVDM0YJ5bC/CW5pw6BvCitcdTVDNDAJ5bGACWrDugorXHU1QzQ2CeWxhglqacOoCitcdTVDNEYJ5bGPCXDDrW5nCitcdTVDNTAJ5bGQCWrEqworXHU1QzVDCeWxnAl0w6wKK1x1NUM1RgnlsZ8JeGnDqAorXHU1QzYyCeWxoglsx5oKK1x1NUM2NQnlsaUJbMeaCitcdTVDNjkJ5bGpCWp1w6kKK1x1NUM2QwnlsawJc2jHlAorXHU1QzZECeWxrQl4w6wKK1x1NUM2Rgnlsa8JdMO6bgorXHU1QzcwCeWxsAlsw6gKK1x1NUM3NQnlsbUJeMO5CitcdTVDODAJ5bKACWNoxasKK1x1NUM4NAnlsoQJeXXDqAorXHU1Qzk4CeWymAlww60KK1x1NUNBNgnlsqYJaseUCitcdTVDQTgJ5bKoCXHFqworXHU1Q0E5CeWyqQl5w6FuCitcdTVDQUUJ5bKuCXR1w7MKK1x1NUNCMAnlsrAJeceSdQorXHU1Q0M4CeWziAlsdcOyCitcdTVDQ0EJ5bOKCWbDuQorXHU1Q0NCCeWziwl4w7puCitcdTVDRDMJ5bOTCXnDrQorXHU1Q0Q5CeWzmQl6aMOsCitcdTVDREEJ5bOaCWTDsm5nCitcdTVDREUJ5bOeCXFpw6FvCitcdTVDRTUJ5bOlCXpoxJNuZworXHU1Q0ZGCeWzvwl3w7oKK1x1NUQxMwnltJMJZ8O5CitcdTVEMTYJ5bSWCXnDoQorXHU1RDE3CeW0lwlnxIFuZworXHU1RDE4CeW0mAlsw7puCitcdTVEMjEJ5bShCWjDoW4KK1x1NUQyQgnltKsJanXDqQorXHU1RDMyCeW0sglodcOhbmcKK1x1NUQ0MgnltYIJbMecCitcdTVENDgJ5bWICWh1x45uCitcdTVENEQJ5bWNCWjDqQorXHU1RDUyCeW1kgl5w6FuCitcdTVENTUJ5bWVCWzHmgorXHU1RDVFCeW1nglqxKsKK1x1NUQ2MQnltaEJY8SrCitcdTVENzAJ5bWwCWPEqworXHU1RDc0CeW1tAlqw60KK1x1NUQ3QQnltboJZMOsCitcdTVEN0UJ5bW+CWPEk24KK1x1NUQ4MgnltoIJemjDoG5nCitcdTVEQTEJ5bahCWd1w6wKK1x1NURBRQnltq4JeGnHjm4KK1x1NURCMgnltrIJeMSrCitcdTVEQjcJ5ba3CXnDrQorXHU1REI4CeW2uAlyw7NuZworXHU1REJECeW2vQl5dcOoCitcdTVEQzMJ5beDCWzDs25nCitcdTVEQ0UJ5beOCWvFq24KK1x1NUREQwnlt5wJZ3XDrAorXHU1RERECeW3nQljaHXEgW4KK1x1NURFRQnlt64JY2jEgQorXHU1REY3CeW3twl4acOgbmcKK1x1NURGOAnlt7gJanXHjm4KK1x1NURGRAnlt70JeMO5bgorXHU1RTA2CeW4hglmxIFuCitcdTVFMTIJ5biSCWTDoGkKK1x1NUUxNgnluJYJdGnEkworXHU1RTE3CeW4lwlmw7oKK1x1NUUyNgnluKYJZMOgaQorXHU1RTMyCeW4sglqacSBbgorXHU1RTM1CeW4tQlqacOgCitcdTVFNTAJ5bmQCWrHkG5nCitcdTVFNUQJ5bmdCWNox45uCitcdTVFNjMJ5bmjCWLDrAorXHU1RTY5CeW5qQlmw6luCitcdTVFNkIJ5bmrCWLEgW5nCitcdTVFNkMJ5bmsCWNow7N1CitcdTVFNkQJ5bmtCW1pw6gKK1x1NUU3MgnlubIJZ8SBbgorXHU1RTczCeW5swlww61uZworXHU1RTc3CeW5twliw6xuZworXHU1RTc4CeW5uAl4w6xuZworXHU1RTdBCeW5ugl5xIFvCitcdTVFN0QJ5bm9CXnFjXUKK1x1NUU3RQnlub4JaseQCitcdTVFN0YJ5bm/CWd1x45uZworXHU1RTgwCeW6gAlwx5AKK1x1NUU5MwnlupMJa8O5CitcdTVFOTUJ5bqVCWTHkAorXHU1RTk2CeW6lglww6FvCitcdTVFOUMJ5bqcCWbHlAorXHU1RUE3CeW6pwl6dcOyCitcdTVFQUIJ5bqrCWvDuQorXHU1RUFECeW6rQl0w61uZworXHU1RUFFCeW6rgl5w7N1CitcdTVFQUYJ5bqvCWLHkAorXHU1RUIzCeW6swliw6wKK1x1NUVCNAnlurQJasOtCitcdTVFQjkJ5bq5CXR1x5IKK1x1NUVCQwnlurwJY8OoCitcdTVFQzIJ5buCCXhpxIFuZworXHU1RUM3CeW7hwlsacO5CitcdTVFQzgJ5buICXNow6AKK1x1NUVDOQnlu4kJbGnDoW4KK1x1NUVDRAnlu40JaseQbgorXHU1RUQxCeW7kQlqx5BuCitcdTVFRDIJ5buSCcOhbworXHU1RUQ1CeW7lQl5w6xuCitcdTVFRDYJ5buWCWxpw6BvCitcdTVFRTIJ5buiCWbDqGkKK1x1NUVFOQnlu6kJYseQbmcKK1x1NUVFQgnlu6sJbGnDoW8KK1x1NUVGQQnlu7oJamnDoG4KK1x1NUVGRQnlu74JZ8eSbmcKK1x1NUVGRgnlu78JbmnDoG4KK1x1NUYwMgnlvIIJecOsCitcdTVGMDQJ5byECW7Dsm5nCitcdTVGMDUJ5byFCWbDqW4KK1x1NUYwOAnlvIgJecOsCitcdTVGMEEJ5byKCWLDrAorXHU1RjBGCeW8jwlzaMOsCitcdTVGMUMJ5bycCWppw6BuZworXHU1RjFECeW8nQliw6AKK1x1NUYyMAnlvKAJemjEgW5nCitcdTVGMjEJ5byhCWp1w6kKK1x1NUYzNgnlvLYJamnDoG5nCitcdTVGMzgJ5by4CWLEk25nCitcdTVGM0EJ5by6CXFpw6FuZworXHU1RjNCCeW8uwliw6wKK1x1NUY0MwnlvYMJYsOsCitcdTVGNDgJ5b2ICWTDoG4KK1x1NUY0OQnlvYkJamnEgW5nCitcdTVGNEEJ5b2KCWppxIFuZworXHU1RjRCCeW9iwlow7NuZworXHU1RjUzCeW9kwlkxIFuZworXHU1RjU0CeW9lAlsw7kKK1x1NUY1NgnlvZYJdHXDoG4KK1x1NUY1OAnlvZgJemjDrAorXHU1RjVBCeW9mglodcOsCitcdTVGNjIJ5b2iCXjDrW5nCitcdTVGNzcJ5b23CWbHjm5nCitcdTVGNzgJ5b24CXfDoG5nCitcdTVGODAJ5b6ACXfHjm5nCitcdTVGODEJ5b6BCXpoxJNuZworXHU1Rjg0CeW+hAlqw6xuZworXHU1Rjg1CeW+hQlkw6BpCitcdTVGODYJ5b6GCXjEqworXHU1Rjg4CeW+iAloxJtuCitcdTVGOEEJ5b6KCWh1w6FpCitcdTVGOEIJ5b6LCWzHnAorXHU1Rjk2CeW+lgljw7NuZworXHU1Rjk3CeW+lwlkw6kKK1x1NUY5OAnlvpgJcMOhaQorXHU1Rjk5CeW+mQl4x5AKK1x1NUY5RQnlvp4JY8WNbmcKK1x1NUY5Rgnlvp8JbMOhaQorXHU1RkExCeW+oQl5w7kKK1x1NUZBMgnlvqIJZsOydQorXHU1RkFBCeW+qgl4w7puCitcdTVGQUYJ5b6vCXjEqworXHU1RkIwCeW+sAliacSBbworXHU1RkIyCeW+sgljaMOtCitcdTVGQjQJ5b60CXpoxJNuZworXHU1RkI1CeW+tQl6aMSTbmcKK1x1NUZCNgnlvrYJYmnDqAorXHU1RkJDCeW+vAlqaceObworXHU1RkJECeW+vQlodcSrCitcdTVGRDUJ5b+VCXNow6wKK1x1NUZENgnlv5YJY8eUbgorXHU1RkQ5CeW/mQltw6FuZworXHU1RkVCCeW/qwlrdcOgaQorXHU1RkY0CeW/tAluaceUCitcdTVGRjkJ5b+5CXPEgWkKK1x1NjAxRQnmgJ4JY2jFjXUKK1x1NjAxRgnmgJ8JZMOsCitcdTYwMjMJ5oCjCXnDs3UKK1x1NjAyQgnmgKsJZsOoaQorXHU2MDNDCeaAvAlkdcOsCitcdTYwNDEJ5oGBCW3Ds3UKK1x1NjA0OQnmgYkJemjHkAorXHU2MDY0CeaBpAl4w7kKK1x1NjA2NwnmgacJbsecCitcdTYwNkIJ5oGrCWTDsm5nCitcdTYwNkMJ5oGsCXRpw6FuCitcdTYwNzgJ5oG4CXTDsm5nCitcdTYwODEJ5oKBCWp1xIFuCitcdTYwODIJ5oKCCXDEqworXHU2MDg4CeaCiAlqacOoCitcdTYwOEQJ5oKNCWjDoG4KK1x1NjA5NwnmgpcJbcOhbgorXHU2MDk4CeaCmAlodcSrCitcdTYwOUQJ5oKdCWt1xKsKK1x1NjA5RQnmgp4Jd8O5CitcdTYwQTYJ5oKmCXl1w6gKK1x1NjBCNgnmgrYJbcSTbgorXHU2MEI3CeaCtwlsw6wKK1x1NjBDMQnmg4EJeMSrCitcdTYwQ0EJ5oOKCWrEq25nCitcdTYwQ0IJ5oOLCXfHjm4KK1x1NjBDRAnmg40JasSrbgorXHU2MEQwCeaDkAlkw6BuCitcdTYwRDUJ5oOVCXTDrAorXHU2MERBCeaDmgloxasKK1x1NjBERAnmg50JdMeObmcKK1x1NjBERQnmg54JeMSrbgorXHU2MEUxCeaDoQnDqAorXHU2MEUyCeaDoglydceQCitcdTYwRTMJ5oOjCWLEm2kKK1x1NjEwMwnmhIMJeHXEgW4KK1x1NjEwNAnmhIQJdMWNdQorXHU2MTBBCeaEigliw6wKK1x1NjExMwnmhJMJZMOgbmcKK1x1NjExNAnmhJQJecSrbgorXHU2MTIxCeaEoQlsw6huZworXHU2MTIzCeaEowlsw6huZworXHU2MTI0CeaEpAlmw6huCitcdTYxMkQJ5oStCXHDrQorXHU2MTNDCeaEvAlzaMOobgorXHU2MTQ2CeaFhgl0xIFvCitcdTYxNEEJ5oWKCXFpw6BuCitcdTYxNEIJ5oWLCXTDoGkKK1x1NjE0RAnmhY0JecO5bgorXHU2MTUyCeaFkgljw7NuZworXHU2MTVFCeaFngljw6BvCitcdTYxNjYJ5oWmCWrDrG4KK1x1NjE2RAnmha0JecOsbgorXHU2MTZFCeaFrglsx5wKK1x1NjE3NAnmhbQJemjDqQorXHU2MTc1CeaFtQl5xY1uZworXHU2MTc2CeaFtglxw6xuZworXHU2MTc4CeaFuAlkw6wKK1x1NjE3QQnmhboJbMOzdQorXHU2MTgyCeaGggl5xY11CitcdTYxODcJ5oaHCWbEgW4KK1x1NjFBNAnmhqQJZsOobgorXHU2MUFFCeaGrgl3x5QKK1x1NjFDMAnmh4AJd8OgaQorXHU2MUMyCeaHgglkx5JuZworXHU2MUM2CeaHhgljx45vCitcdTYxQzkJ5oeJCXnEq25nCitcdTYxQ0EJ5oeKCcOgbworXHU2MURBCeaHmgl5w6xuCitcdTYxRUMJ5oesCWt1w6BuZworXHU2MUVGCeaHrwlmxasKK1x1NjFGNQnmh7UJbcSbbmcKK1x1NjFGNgnmh7YJbMeObgorXHU2MUZGCeaHvwl5w6wKK1x1NjIwNAnmiIQJanXDqQorXHU2MjA2CeaIhglnw6BuZworXHU2MjA3CeaIhwl6aHXDoG5nCitcdTYyMDgJ5oiICWfEkworXHU2MjEwCeaIkAljaMOpbmcKK1x1NjIxNgnmiJYJaHXDsgorXHU2MjE3CeaIlwlxacSBbmcKK1x1NjIxOAnmiJgJemjDoG4KK1x1NjIxRQnmiJ4JamnDoQorXHU2MjI4CeaIqAlnxJMKK1x1NjIyRQnmiK4JbMO5CitcdTYyMzAJ5oiwCXpow6BuCitcdTYyMzIJ5oiyCXjDrAorXHU2MjMzCeaIswljaHXFjQorXHU2MjNBCeaIuglzaMOsCitcdTYyM0YJ5oi/CWbDoW5nCitcdTYyNDAJ5omACXN1x5IKK1x1NjI0MQnmiYEJYmnHjm4KK1x1NjI0MgnmiYIJZGnDoG4KK1x1NjI0NAnmiYQJc2jEgW4KK1x1NjI0NwnmiYcJc2jDoG4KK1x1NjI0OAnmiYgJaMO5CitcdTYyNEUJ5omOCXrEgQorXHU2MjRGCeaJjwlwxasKK1x1NjI1MQnmiZEJcMWrCitcdTYyNTIJ5omSCWLEgQorXHU2MjUzCeaJkwlkx44KK1x1NjI1NAnmiZQJcsSTbmcKK1x1NjI1NQnmiZUJZsO6CitcdTYyNUIJ5ombCWvDoW5nCitcdTYyNUMJ5omcCXfFqworXHU2MjVFCeaJnglnx45uCitcdTYyNUYJ5omfCXNoxJNuCitcdTYyNjEJ5omhCWNox5AKK1x1NjI2MgnmiaIJZ8eUCitcdTYyNjMJ5omjCWvDsnUKK1x1NjI2QwnmiawJecOhbmcKK1x1NjI3MQnmibEJeMSrCitcdTYyNzIJ5omyCXFpw6FuCitcdTYyNzMJ5omzCWLEgW4KK1x1NjI3NAnmibQJamnDoQorXHU2Mjc3CeaJtwnDoG8KK1x1NjI3QwnmibwJw6gKK1x1NjI3RQnmib4JemjHjm8KK1x1NjI4MAnmioAJasOsCitcdTYyODQJ5oqECWNoxIFvCitcdTYyODcJ5oqHCWfHlAorXHU2Mjg4CeaKiAliw6AKK1x1NjI4QgnmiosJccOsbgorXHU2MjhECeaKjQl3w6BuCitcdTYyOTAJ5oqQCW7DuQorXHU2Mjk0CeaKlAlww7N1CitcdTYyOTUJ5oqVCXTDs3UKK1x1NjI5OAnmipgJemjDqQorXHU2Mjk5CeaKmQlmxasKK1x1NjI5QQnmipoJZseUCitcdTYyOUIJ5oqbCXDEgW8KK1x1NjI5RQnmip4JesOpCitcdTYyQTAJ5oqgCWvFjXUKK1x1NjJBMgnmiqIJcWnHjm5nCitcdTYyQTQJ5oqkCWjDuQorXHU2MkE5CeaKqQl0xIFuCitcdTYyQUUJ5oquCXpoxJtuCitcdTYyQjUJ5oq1CWTHkAorXHU2MkI5CeaKuQltx5IKK1x1NjJCQQnmiroJY2jEk24KK1x1NjJCQwnmirwJecSBCitcdTYyQkQJ5oq9CWNoxY11CitcdTYyQkYJ5oq/CW3HkG4KK1x1NjJDMwnmi4MJemjDoAorXHU2MkM0CeaLhAl6aMeUCitcdTYyQzYJ5ouGCWNoxIFpCitcdTYyQzcJ5ouHCW3HlAorXHU2MkM5CeaLiQlsxIEKK1x1NjJDQQnmi4oJZseUCitcdTYyQ0QJ5ouNCXDEgWkKK1x1NjJDRQnmi44JbMSrbmcKK1x1NjJEMwnmi5MJdHXDsgorXHU2MkQ0CeaLlAliw6EKK1x1NjJENQnmi5UJbmnDuQorXHU2MkQ3CeaLlwnHjm8KK1x1NjJEOAnmi5gJasWrCitcdTYyRDkJ5ouZCXpodcOzCitcdTYyREEJ5ouaCXDEq24KK1x1NjJEQgnmi5sJemjEgW8KK1x1NjJEQwnmi5wJYsOgaQorXHU2MkU2CeaLpglsw6FuCitcdTYyRTgJ5ouoCWLFjQorXHU2MkU5CeaLqQl6w6kKK1x1NjJFQQnmi6oJa3XDsgorXHU2MkVDCeaLrAlrdcOyCitcdTYyRUQJ5outCXNow6wKK1x1NjJFRgnmi68JemjEm25nCitcdTYyRjcJ5ou3CWvHjm8KK1x1NjJGOQnmi7kJeGnDqQorXHU2MkZECeaLvQl6aHXDoGkKK1x1NjJGRQnmi74Jc2jDrQorXHU2MkZGCeaLvwluw6EKK1x1NjMwOQnmjIkJw6BuCitcdTYzMEYJ5oyPCWTDsm5nCitcdTYzMTAJ5oyQCW7DoQorXHU2MzExCeaMkQl0acSBbworXHU2MzEyCeaMkglsacOoCitcdTYzMUUJ5oyeCWppxIEKK1x1NjMyMAnmjKAJZMOgbmcKK1x1NjMyMgnmjKIJamnHjm8KK1x1NjMyNAnmjKQJaseQCitcdTYzMjgJ5oyoCcSBaQorXHU2MzI5CeaMqQlzaHXDrAorXHU2MzJBCeaMqgludcOzCitcdTYzMkIJ5oyrCWN1w7IKK1x1NjMzMAnmjLAJY2jDqW5nCitcdTYzMzQJ5oy0CW3Em2kKK1x1NjMzNgnmjLYJasO6CitcdTYzMzgJ5oy4CWppx45uCitcdTYzM0QJ5oy9CXfHjm4KK1x1NjMzRQnmjL4JamnEgQorXHU2MzNGCeaMvwljaMSBCitcdTYzNDAJ5o2ACWbEk25nCitcdTYzNDUJ5o2FCXTHkm5nCitcdTYzNEIJ5o2LCWzHmgorXHU2MzRDCeaNjAlixIEKK1x1NjM1MQnmjZEJZ3XEgQorXHU2MzU3CeaNlwliw7kKK1x1NjM2MgnmjaIJaHXDoG4KK1x1NjM2QQnmjaoJasWrCitcdTYzNkQJ5o2tCWLHjmkKK1x1NjM2RQnmja4JasO5CitcdTYzNkYJ5o2vCWTDoW8KK1x1NjM3MAnmjbAJcXXDoW4KK1x1NjM3MwnmjbMJY2jEk24KK1x1NjM3NgnmjbYJY2h1w60KK1x1NjM3OAnmjbgJbmnEkworXHU2MzdDCeaNvAludcOzCitcdTYzN0QJ5o29CXrDugorXHU2MzdFCeaNvglzw6BvCitcdTYzODMJ5o6DCXPHjm8KK1x1NjM4NAnmjoQJbMO6bgorXHU2Mzg1CeaOhQlkdcWNCitcdTYzODgJ5o6ICXNow7J1CitcdTYzOEEJ5o6KCXDDs3UKK1x1NjM4QgnmjosJZMeQCitcdTYzOEUJ5o6OCWrHkAorXHU2MzkyCeaOkglww6FpCitcdTYzOTMJ5o6TCXNow7oKK1x1NjM5NgnmjpYJecOoCitcdTYzOTcJ5o6XCXnDoAorXHU2Mzk5CeaOmQl6aMSTbmcKK1x1NjM5QQnmjpoJbGnHjm5nCitcdTYzOUQJ5o6dCWh1w7IKK1x1NjM5RQnmjp4Jc2jDoG4KK1x1NjM5Rgnmjp8JbHXEmworXHU2M0EwCeaOoAlsw7zDqAorXHU2M0ExCeaOoQljx45pCitcdTYzQTMJ5o6jCWNow6gKK1x1NjNBOAnmjqgJdHXEqworXHU2M0FCCeaOqwl6xY11CitcdTYzQUQJ5o6tCXDDoQorXHU2M0IyCeaOsglqacSTCitcdTYzQjMJ5o6zCWzHlAorXHU2M0I4CeaOuAljaMOhbgorXHU2M0JBCeaOugljw6BuCitcdTYzQkIJ5o67CXPEgW8KK1x1NjNDNAnmj4QJecO6CitcdTYzQzUJ5o+FCXnDoW4KK1x1NjNDRQnmj44JeHXEgW4KK1x1NjNDRgnmj48JbWnDoW8KK1x1NjNEMAnmj5AJdMOtCitcdTYzRDEJ5o+RCW5pxJMKK1x1NjNENQnmj5UJemjDqG4KK1x1NjNENwnmj5cJY2h1xIFpCitcdTYzRTMJ5o+jCWNodceOaQorXHU2M0U0CeaPpAlqw60KK1x1NjNFNgnmj6YJbMOhCitcdTYzRjIJ5o+yCXNow6kKK1x1NjNGMwnmj7MJeGnEkworXHU2M0Y0CeaPtAl5dcOhbgorXHU2M0Y2CeaPtgl5w6kKK1x1NjQwMgnmkIIJbMeSdQorXHU2NDAzCeaQgwl6x5JuZworXHU2NDBDCeaQjAl6aMeObgorXHU2NDExCeaQkQliw6BuZworXHU2NDEzCeaQkwljdcWNCitcdTY0MTUJ5pCVCWvDqAorXHU2NDFCCeaQmwlqacSBbgorXHU2NDI5CeaQqQlqacOpCitcdTY0MkUJ5pCuCWfHlAorXHU2NDMxCeaQsQlodcOhCitcdTY0MzQJ5pC0CXFpxIFuCitcdTY0MzYJ5pC2CXFpx45uZworXHU2NDM3CeaQtwlzaMSTbgorXHU2NDM4CeaQuAl4w60KK1x1NjQzQgnmkLsJbmnDqAorXHU2NDQzCeaRgwlnxIFuZworXHU2NDQ0CeaRhAluacOoCitcdTY0NDUJ5pGFCWppxasKK1x1NjQ0RgnmkY8JY2jFjW5nCitcdTY0NTkJ5pGZCWzDrQorXHU2NDVDCeaRnAlndcOgbgorXHU2NDVFCeaRnglsdcOyCitcdTY0NUYJ5pGfCWzFjXUKK1x1NjQ2MAnmkaAJeseSbmcKK1x1NjQ2MQnmkaEJZ8OgaQorXHU2NDYyCeaRoglow7kKK1x1NjQ2NAnmkaQJY2h1x45uZworXHU2NDY4CeaRqAltxIEKK1x1NjQ2QQnmkaoJamnEgW5nCitcdTY0NkUJ5pGuCcOhbworXHU2NDczCeaRswlrxY11CitcdTY0NzYJ5pG2CXR1w6FuCitcdTY0NzcJ5pG3CWppx45vCitcdTY0NzgJ5pG4CW3FjQorXHU2NDc5CeaRuQltw7MKK1x1NjQ3QgnmkbsJY2jEgW4KK1x1NjQ3QwnmkbwJYmnEgW8KK1x1NjQ3RAnmkb0JYmnEgW8KK1x1NjQ3RQnmkb4JamnDoG5nCitcdTY0ODIJ5pKCCWxpw6BvCitcdTY0ODMJ5pKDCWd1w6wKK1x1NjQ4NgnmkoYJcGnEkworXHU2NDg3CeaShwlwacSbCitcdTY0ODgJ5pKICWzEgW8KK1x1NjQ4QwnmkowJZ3XDrAorXHU2NDhECeaSjQl4acOhbgorXHU2NDkwCeaSkAljaMSTbmcKK1x1NjQ5MgnmkpIJc8eOCitcdTY0OTYJ5pKWCWjDoG4KK1x1NjQ5NwnmkpcJY2jDqW5nCitcdTY0OUQJ5pKdCWNodcOhbmcKK1x1NjQ5Rgnmkp8JamnHjm8KK1x1NjRBMwnmkqMJZMeObgorXHU2NEE0CeaSpAljaMOoCitcdTY0QTYJ5pKmCWNoxJsKK1x1NjRBOAnmkqgJbGnEgW8KK1x1NjRBOQnmkqkJbGnDoW8KK1x1NjRBQQnmkqoJYsOobgorXHU2NEFDCeaSrAlxacOgbworXHU2NEFECeaSrQlixY0KK1x1NjRBRQnmkq4JY3XFjQorXHU2NEFGCeaSrwlzdcOgbgorXHU2NEIxCeaSsQl0dceSCitcdTY0QkYJ5pK/CWppx45uCitcdTY0QzAJ5pOACWfHjm4KK1x1NjRDMQnmk4EJecWNbmcKK1x1NjRDMgnmk4IJbMOpaQorXHU2NEMzCeaTgwlrdceSCitcdTY0QzcJ5pOHCXrDqQorXHU2NEM4CeaTiAlix5QKK1x1NjRDOQnmk4kJY2h1xY0KK1x1NjRDQQnmk4oJasSrCitcdTY0Q0IJ5pOLCWTHjm5nCitcdTY0Q0MJ5pOMCWPDoG8KK1x1NjREMAnmk5AJaHXDoG4KK1x1NjREMQnmk5EJY2jEgQorXHU2NEQyCeaTkglxw61uCitcdTY0RDQJ5pOUCWTEgW4KK1x1NjRENQnmk5UJeMSrCitcdTY0RDYJ5pOWCWfEmworXHU2NEQ3CeaTlwlwx5AKK1x1NjREOAnmk5gJYsOyCitcdTY0REYJ5pOfCW3DrQorXHU2NEVBCeaTqglodcOyCitcdTY0RUQJ5pOtCWh1w7IKK1x1NjRFRQnmk64JasOtCitcdTY0RjAJ5pOwCW7DrW5nCitcdTY0RjEJ5pOxCWfEkworXHU2NEYyCeaTsgl6aMOsCitcdTY0RjMJ5pOzCWppw6kKK1x1NjRGNgnmk7YJamnDoG4KK1x1NjRGOQnmk7kJc8OydQorXHU2NEZDCeaTvAlsw6wKK1x1NjRGRQnmk74JcseObworXHU2NEZGCeaTvwl0w6wKK1x1NjUwMAnmlIAJcMSBbgorXHU2NTAzCeaUgwlodcWNCitcdTY1MEEJ5pSKCWh1x45uCitcdTY1MEQJ5pSNCXhpxIFuCitcdTY1MTYJ5pSWCXnEq25nCitcdTY1MTgJ5pSYCXLHjm5nCitcdTY1MTkJ5pSZCWNoxIFuCitcdTY1MUMJ5pScCXhpw6kKK1x1NjUxRAnmlJ0Jc2jDqAorXHU2NTFFCeaUnglsdcWNCitcdTY1MUYJ5pSfCWrDuW4KK1x1NjUyMQnmlKEJY2jEqworXHU2NTIyCeaUogljdcOhbgorXHU2NTIzCeaUowlsdcOhbgorXHU2NTI0CeaUpAl0xIFuCitcdTY1MjcJ5pSnCWRpxIFuCitcdTY1MjgJ5pSoCXTHjm5nCitcdTY1MkEJ5pSqCWppx45vCitcdTY1MzMJ5pSzCXDFjQorXHU2NTM1CeaUtQlrx45vCitcdTY1MzcJ5pS3CWvHjm8KK1x1NjUzOAnmlLgJYsSrbgorXHU2NTNFCeaUvglmw6BuZworXHU2NTNGCeaUvwl6aMOobmcKK1x1NjU0MAnmlYAJYsOzCitcdTY1NDUJ5pWFCWfDuQorXHU2NTQ2CeaVhglndcOzCitcdTY1NEMJ5pWMCWTDrQorXHU2NTRGCeaVjwltx5BuCitcdTY1NTcJ5pWXCWLDoGkKK1x1NjU1OQnmlZkJamnEgW8KK1x1NjU1QQnmlZoJZHXDsworXHU2NTVDCeaVnAluacOoCitcdTY1NjMJ5pWjCXPHjm4KK1x1NjU2NAnmlaQJZGnEgW8KK1x1NjU2NwnmlacJamnHjm8KK1x1NjU2QwnmlawJasOsbmcKK1x1NjU2Rgnmla8JaMWrbgorXHU2NTcwCeaVsAlzaMO5CitcdTY1NzEJ5pWxCcOhaQorXHU2NTcyCeaVsglxacSBbworXHU2NTc4CeaVuAlzaMeUCitcdTY1NzkJ5pW5CWxpw6FvCitcdTY1ODIJ5paCCWxpx45uCitcdTY1ODMJ5paDCWLDrAorXHU2NTg1CeaWhQlqaceObworXHU2NTg2CeaWhglqaceObworXHU2NTg3CeaWhwl3w6luCitcdTY1ODgJ5paICWbEk2kKK1x1NjU5MQnmlpEJYsSBbgorXHU2NTk3CeaWlwlkx5J1CitcdTY1OTgJ5paYCWxpw6FvCitcdTY1OUEJ5paaCWppx44KK1x1NjU5RAnmlp0JamnHjgorXHU2NUEyCeaWogl0x5J1CitcdTY1QjkJ5pa5CWbEgW5nCitcdTY1QkEJ5pa6CXfFqworXHU2NUJECeaWvQlzaMSrCitcdTY1QkUJ5pa+CWxpw7oKK1x1NjVDMQnml4EJcMOhbmcKK1x1NjVDMgnml4IJccOtCitcdTY1QzQJ5peECW3DoW8KK1x1NjVDNQnml4UJbMeaCitcdTY1Q0IJ5peLCXh1w6FuCitcdTY1Q0MJ5peMCWrEq25nCitcdTY1RDAJ5peQCXpow6BvCitcdTY1REUJ5peeCW3DsworXHU2NUUxCeaXoQlqw6wKK1x1NjVFMwnml6MJasSrCitcdTY1RTQJ5pekCWh1w7IKK1x1NjVFNgnml6YJZMOgbgorXHU2NUVGCeaXrwlsw6EKK1x1NjVGMAnml7AJZ8OgbgorXHU2NUYxCeaXsQlow6BuCitcdTY1RkYJ5pe/CWjDuW4KK1x1NjYwNwnmmIcJc2jEk25nCitcdTY2MTAJ5piQCWN1w7IKK1x1NjYxNAnmmJQJeMSrCitcdTY2MTUJ5piVCXjEq24KK1x1NjYxRQnmmJ4JYseQbmcKK1x1NjYyMwnmmKMJY2jHlG4KK1x1NjYyNgnmmKYJaMOgbworXHU2NjJDCeaYrAloxatuCitcdTY2MkQJ5pitCXpoxIFvCitcdTY2MzEJ5pixCXnDuQorXHU2NjMyCeaYsglmw6hpCitcdTY2MzQJ5pi0CW3Hjm8KK1x1NjYzNgnmmLYJY2jHjm5nCitcdTY2MzcJ5pi3CXfEk24KK1x1NjYzOAnmmLgJZMWNbmcKK1x1NjY0MwnmmYMJaHXHjm5nCitcdTY2NDQJ5pmECWh1x45uZworXHU2NjQ2CeaZhglrdcSBCitcdTY2NDgJ5pmICWppx45vCitcdTY2NTUJ5pmVCXnFq24KK1x1NjY1NgnmmZYJaHXEqworXHU2NjVGCeaZnwlzaMOobmcKK1x1NjY2MAnmmaAJc2jDqW5nCitcdTY2NjIJ5pmiCXpow6kKK1x1NjY2MwnmmaMJemjEkworXHU2NjY0CeaZpAl3w7kKK1x1NjY3MAnmmbAJeMSrCitcdTY2NzMJ5pmzCXjEqworXHU2Njc0CeaZtAlxw61uZworXHU2Njc5CeaZuQl5w6wKK1x1NjY3QgnmmbsJx45uCitcdTY2N0MJ5pm8CXfHjm4KK1x1NjY4MQnmmoEJZ8SbbmcKK1x1NjY4NgnmmoYJeGnDoAorXHU2Njg4CeaaiAl5xatuCitcdTY2ODkJ5pqJCWh1xKsKK1x1NjY4QwnmmowJa3XDrQorXHU2NjhFCeaajglsw6FuCitcdTY2OTYJ5pqWCW51x45uCitcdTY2OTcJ5pqXCcOgbgorXHU2NjlFCeaanglow6BvCitcdTY2QTEJ5pqhCWLDsworXHU2NkI1CeaatQlow6BuCitcdTY2QjkJ5pq5CXhpxIFuCitcdTY2QzQJ5puECXnDqAorXHU2NkQwCeabkAliw7MKK1x1NjZENAnmm5QJasOsbmcKK1x1NjZEQQnmm5oJbcOpbmcKK1x1NjZGMgnmm7IJcceUCitcdTY2RjMJ5puzCXnDqAorXHU2NkY0CeabtAlnw6huZworXHU2NkY1CeabtQl5w6gKK1x1NjZGRAnmm70JY8STbmcKK1x1NjZGRQnmm74JY8OpbmcKK1x1NjZGRgnmm78JdMOsCitcdTY3MDMJ5pyDCWh1w6wKK1x1NjcwNAnmnIQJeceQbgorXHU2NzA1CeachQlxacOoCitcdTY3MEEJ5pyKCXJ1x45uCitcdTY3MEQJ5pyNCWbDugorXHU2NzBFCeacjglsw61uZworXHU2NzEwCeackAlxw7oKK1x1NjcxNAnmnJQJc2h1w7IKK1x1NjcxRAnmnJ0JY2jDoW8KK1x1NjcxRQnmnJ4JasSrCitcdTY3MUYJ5pyfCXHEqworXHU2NzIwCeacoAlsx5JuZworXHU2NzI4CeacqAltw7kKK1x1NjcyRQnmnK4Jc2jDuQorXHU2NzJGCeacrwlzaMO5CitcdTY3MzEJ5pyxCXpoxasKK1x1NjczMgnmnLIJcGnDoW8KK1x1NjczNQnmnLUJZHXHkgorXHU2NzM5CeacuQlndceQCitcdTY3M0EJ5py6CWrEqworXHU2NzNGCeacvwljw6wKK1x1Njc0MgnmnYIJesOhCitcdTY3NDYJ5p2GCWfEgW4KK1x1Njc0NwnmnYcJd8WrCitcdTY3NDgJ5p2ICWNoxIEKK1x1Njc0OQnmnYkJc2jEgW4KK1x1Njc0QQnmnYoJYmnEgW8KK1x1Njc1MwnmnZMJc2jDoW8KK1x1Njc1NAnmnZQJZHXDsgorXHU2NzU2CeadlgljaMSrCitcdTY3NTkJ5p2ZCXnDrAorXHU2NzVFCeadnglxx5AKK1x1Njc2MAnmnaAJZ8SBbmcKK1x1Njc2MQnmnaEJdGnDoW8KK1x1Njc2NwnmnacJbceOCitcdTY3NkEJ5p2qCW1px45vCitcdTY3NkQJ5p2tCWjDoW5nCitcdTY3NkUJ5p2uCWLDqGkKK1x1Njc2Rgnmna8JYsSTaQorXHU2Nzc2CeadtgljaMWrbgorXHU2Nzc3Ceadtwlww6EKK1x1Njc3OAnmnbgJbmnHlAorXHU2NzdCCeaduwljaMeSdQorXHU2NzdDCeadvAl6aMO5CitcdTY3N0QJ5p29CWNox5J1CitcdTY3ODUJ5p6FCWrEqworXHU2Nzg2Ceaehglix5AKK1x1Njc4OAnmnogJYsOsCitcdTY3OEMJ5p6MCWbDqW4KK1x1Njc4Rgnmno8JbsOhbgorXHU2NzkzCeaekwlkx5J1CitcdTY3OTQJ5p6UCXjDum4KK1x1Njc5NgnmnpYJa8OoCitcdTY3OTkJ5p6ZCcOoCitcdTY3OUQJ5p6dCXpoxKsKK1x1Njc5RQnmnp4JY8WNbmcKK1x1Njc5Rgnmnp8JecO6bgorXHU2N0ExCeaeoQlkx5J1CitcdTY3QTgJ5p6oCWNoxJNuZworXHU2N0FCCeaeqwlmxJNuZworXHU2N0IyCeaesgl4x5AKK1x1NjdCMwnmnrMJemjHkAorXHU2N0I0CeaetAlnxY11CitcdTY3QjgJ5p64CWfFjXUKK1x1NjdCOQnmnrkJZsWrCitcdTY3QkEJ5p66CWR1w7IKK1x1NjdDMQnmn4EJdHXDsworXHU2N0MzCeafgwlsw61uZworXHU2N0M1CeafhQlux5AKK1x1NjdDRgnmn48JYseOaQorXHU2N0QwCeafkAltx5J1CitcdTY3RDIJ5p+SCXHEqworXHU2N0RBCeafmgl5w7J1CitcdTY3REIJ5p+bCWd1w6wKK1x1NjdEQwnmn5wJZ3XDrAorXHU2N0RECeafnQl0dcOyCitcdTY3REYJ5p+fCW7DoW4KK1x1NjdFNAnmn6QJemjEgQorXHU2N0U1CeafpQljaMOhCitcdTY3RTYJ5p+mCWTDoG4KK1x1NjdGMgnmn7IJYsOsCitcdTY3RjUJ5p+1CXpow6AKK1x1NjdGNgnmn7YJc8OsCitcdTY3RkMJ5p+8CWNoxJNuZworXHU2N0ZFCeafvgljw6gKK1x1NjgwNwnmoIcJYmnEgW8KK1x1NjgwQQnmoIoJbMOhbworXHU2ODBGCeagjwlsw6FuCitcdTY4MTAJ5qCQCXPHlG4KK1x1NjgxMwnmoJMJc2h1xIFuCitcdTY4MTYJ5qCWCXHEqworXHU2ODE3Ceaglwlsw6wKK1x1NjgxOQnmoJkJc2jDqAorXHU2ODFECeagnQlndcSBCitcdTY4MUUJ5qCeCWLEk24KK1x1NjgyMAnmoKAJamnHjm8KK1x1NjgyMQnmoKEJeGnDoG8KK1x1NjgyMgnmoKIJYseOaQorXHU2ODIzCeagowlyxJtuCitcdTY4MzAJ5qCwCWbDoQorXHU2ODM4CeaguAlow6kKK1x1NjgzOQnmoLkJZ8STbgorXHU2ODNCCeaguwlzaMOsCitcdTY4M0MJ5qC8CWfDqQorXHU2ODNECeagvQl6xIFpCitcdTY4M0UJ5qC+CWjDoG5nCitcdTY4NDEJ5qGBCWjDqW5nCitcdTY4NDIJ5qGCCWd1w6wKK1x1Njg0NAnmoYQJZ3XEgW5nCitcdTY4NDUJ5qGFCXfDqWkKK1x1Njg0NwnmoYcJxIFuCitcdTY4NDkJ5qGJCcSBbgorXHU2ODRBCeahiglqdcOgbgorXHU2ODRCCeahiwl5w60KK1x1Njg0RQnmoY4JemjDrAorXHU2ODRGCeahjwlqw7oKK1x1Njg1NAnmoZQJasO6CitcdTY4NTUJ5qGVCWfEgW8KK1x1Njg1NgnmoZYJZHXHkgorXHU2ODU4CeahmAljaHXDrQorXHU2ODU5CeahmQltw7N1CitcdTY4NUEJ5qGaCXLDoW8KK1x1Njg2MgnmoaIJemjEk24KK1x1Njg2MwnmoaMJZMeObmcKK1x1Njg2NAnmoaQJZ3XDrAorXHU2ODY4CeahqAlqaceObmcKK1x1Njg2QQnmoaoJeMOtbgorXHU2ODZCCeahqwlzdcWNCitcdTY4NkUJ5qGuCWLEk2kKK1x1Njg3MAnmobAJZ3XEgQorXHU2ODczCeahswliw6huCitcdTY4ODQJ5qKECXnHknUKK1x1Njg4Rgnmoo8JZ8O5CitcdTY4OTAJ5qKQCWLDrAorXHU2ODk5CeaimQlodcOgbgorXHU2ODlECeainQl0acOhbworXHU2OEEwCeaioAlsx5oKK1x1NjhBMQnmoqEJa3XHjm4KK1x1NjhBMgnmoqIJc2jEgW8KK1x1NjhBMwnmoqMJY8OpbgorXHU2OEE0CeaipAlmw6luCitcdTY4QTcJ5qKnCXfDugorXHU2OEE4CeaiqAlsw60KK1x1NjhBQQnmoqoJZMOydQorXHU2OEFDCeairAljaMSbbmcKK1x1NjhBRAnmoq0Jc3XFjQorXHU2OEFFCeairglqw7oKK1x1NjhCMAnmorAJeGnDqAorXHU2OEIxCeaisQlrx5RuCitcdTY4QkMJ5qK8CWTHjm8KK1x1NjhCRAnmor0JdHXFjQorXHU2OEMyCeajgglsw61uZworXHU2OEM3CeajhwljxY1uZworXHU2OENDCeajjAnEgW8KK1x1NjhDRQnmo44JYsOgaQorXHU2OEQyCeajkgliw6BuZworXHU2OEQ0CeajlAlkw6BpCitcdTY4RTQJ5qOkCXF1w6BuCitcdTY4RUQJ5qOtCW5pw6BuCitcdTY4RjAJ5qOwCWNodcOtCitcdTY4RjEJ5qOxCWzDqW5nCitcdTY4RjIJ5qOyCXHEqworXHU2OEYzCeajswlrxJsKK1x1NjhGNgnmo7YJbMOhaQorXHU2OEZBCeajuglndcSBbgorXHU2OEZCCeajuwlmxJNuCitcdTY4RkMJ5qO8CWbDqW4KK1x1NjhGRAnmo70JY2jEk24KK1x1NjhGRQnmo74JcWnDs25nCitcdTY5MDYJ5qSGCWNow7N1CitcdTY5MEEJ5qSKCWNodcOtCitcdTY5MEUJ5qSOCWNodcOtCitcdTY5MEYJ5qSPCXnEgQorXHU2OTEwCeakkAlqxasKK1x1NjkxMgnmpJIJamnEgW8KK1x1NjkxNQnmpJUJYsSrbgorXHU2OTJECeakrQl0dceSCitcdTY5MkYJ5qSvCWR1w7MKK1x1NjkzMQnmpLEJZsOydQorXHU2OTM2Ceaktglow6FuCitcdTY5MzgJ5qS4CXnDrQorXHU2OTNBCeakuglqacSBbgorXHU2OTNGCeakvwljaMWrbgorXHU2OTQxCealgQljaMSBCitcdTY5NDIJ5qWCCWNow6EKK1x1Njk0MwnmpYMJaHXEqworXHU2OTRGCealjwlrdcOtCitcdTY5NTIJ5qWSCXPEqworXHU2OTU0CeallAl4acSTCitcdTY5NTUJ5qWVCWrDrQorXHU2OTU3CeallwlqacOgbgorXHU2OTU4CealmAltw7kKK1x1Njk1QgnmpZsJaMO5CitcdTY5NUMJ5qWcCWjDugorXHU2OTVGCealnwl0w61uZworXHU2OTY2Cealpgl4dcOgbgorXHU2OTY5CealqQlwacOhbgorXHU2OTZCCealqwlqw60KK1x1Njk2RAnmpa0JecOoCitcdTY5NkYJ5qWvCXNox5RuCitcdTY5NzIJ5qWyCWppxJMKK1x1Njk3OAnmpbgJcWnFqworXHU2OTgzCeamgwlmw7oKK1x1Njk5MgnmppIJbMeObmcKK1x1Njk5NQnmppUJcsOzbmcKK1x1Njk5RAnmpp0JaHXDoG5nCitcdTY5QTAJ5qagCW3DrW5nCitcdTY5QTYJ5qamCWfDoG4KK1x1NjlBNwnmpqcJZsSbaQorXHU2OUFCCeamqwlzx5RuCitcdTY5QkUJ5qa+CWfHlAorXHU2OUJGCeamvwlnx45vCitcdTY5QzEJ5qeBCWfHjm8KK1x1NjlDMgnmp4IJaMOpCitcdTY5QzYJ5qeGCWR1xKsKK1x1NjlDRAnmp40JcWnEgW5nCitcdTY5Q0UJ5qeOCWNow6EKK1x1NjlDRgnmp48JY2jDuQorXHU2OUQzCeankwlnw6BuZworXHU2OUQ2Ceanlgl0dcOzCitcdTY5RDgJ5qeYCWvHjm4KK1x1NjlEQwnmp5wJYsSrbmcKK1x1NjlFMAnmp6AJccSrCitcdTY5RUUJ5qeuCXPEk24KK1x1NjlFRgnmp68JY3XEqworXHU2OUYyCeansglow7oKK1x1NjlGNAnmp7QJaMO5CitcdTY5RjgJ5qe4CW5pw6gKK1x1NjlGRQnmp74JbcOhbgorXHU2OUZGCeanvwlqx5BuCitcdTZBMDAJ5qiACWNoxY1uZworXHU2QTAyCeaogglsw6gKK1x1NkEwMwnmqIMJbMOhbmcKK1x1NkEwNgnmqIYJZsOgbgorXHU2QTBCCeaoiwlsw6lpCitcdTZBMTAJ5qiQCWzHlAorXHU2QTE0CeaolAljaMOhbworXHU2QTE1CeaolQljaMSTbmcKK1x1NkExNwnmqJcJY2jFqworXHU2QTE5CeaomQliacSBbworXHU2QTIxCeaooQltw7MKK1x1NkEyMgnmqKIJbmnHjm8KK1x1NkEyNAnmqKQJZ3XEgW5nCitcdTZBMkIJ5qirCWppxIFuCitcdTZBMkYJ5qivCWPDs25nCitcdTZBMzgJ5qi4CXDDugorXHU2QTM5CeaouQlzaMO5CitcdTZBM0UJ5qi+CXl1w6gKK1x1NkE0MAnmqYAJY2jFq24KK1x1NkE0MgnmqYIJZGnDoG4KK1x1NkE0NgnmqYYJY3XDrAorXHU2QTQ4CeapiAluw6FvCitcdTZBNDkJ5qmJCWzDrG4KK1x1NkE1MAnmqZAJdHXDsworXHU2QTUxCeapkQlsx45vCitcdTZBNTIJ5qmSCWNow6luCitcdTZBNUEJ5qmaCXPDuQorXHU2QTVFCeapnglkdceSCitcdTZBNjMJ5qmjCWNoxY1uZworXHU2QTY3Ceappwl6xJNuZworXHU2QTZCCeapqwlow6luZworXHU2QTZDCeaprAljw6luCitcdTZBODEJ5qqBCWzHkG4KK1x1NkE4NwnmqocJenXDrAorXHU2QThDCeaqjAlww7oKK1x1NkE5MAnmqpAJecOhbgorXHU2QTkxCeaqkQlsw6lpCitcdTZBOTIJ5qqSCWTDoG5nCitcdTZBOTQJ5qqUCWTDoG5nCitcdTZBOTUJ5qqVCWrDrAorXHU2QTk2CeaqlglzdcOsCitcdTZBOTgJ5qqYCWLDrAorXHU2QTlDCeaqnAlndcOsCitcdTZBOUQJ5qqdCWrDrQorXHU2QTlGCeaqnwlqaceOCitcdTZBQTEJ5qqhCXNow6wKK1x1NkFBMgnmqqIJamnHjm4KK1x1NkFBQwnmqqwJbcOpbmcKK1x1NkFBRgnmqq8JdMOhaQorXHU2QUIyCeaqsglixKtuZworXHU2QUIzCeaqswlixKtuCitcdTZBQjQJ5qq0CWh1w7IKK1x1NkFCNgnmqrYJa8eObgorXHU2QUJCCeaquwlqacOgbgorXHU2QUJDCeaqvAl5x5BuCitcdTZBQkQJ5qq9CcOpcgorXHU2QUJFCeaqvglqaceSbmcKK1x1NkFCRgnmqr8JeceObgorXHU2QUMzCeargwlndcOsCitcdTZBQ0YJ5quPCWzDqWkKK1x1NkFEMgnmq5IJc8OgCitcdTZBREEJ5quaCWzHmAorXHU2QURDCearnAlnxIFvCitcdTZBRTAJ5qugCWbDqGkKK1x1NkFFMgnmq6IJZ3XDoG4KK1x1NkFFRAnmq60JasOsCitcdTZBRUUJ5quuCcOoCitcdTZBRkYJ5qu/CWxpw6BuCitcdTZCMDUJ5qyFCWrHlAorXHU2QjEwCeaskAlsx5AKK1x1NkIxMQnmrJEJesOgbgorXHU2QjE5CeasmQlsw6lpCitcdTZCMjEJ5qyhCWPDrAorXHU2QjIyCeasoglodcSBbgorXHU2QjI4CeasqAlrw6kKK1x1NkIyRAnmrK0JaMSTCitcdTZCMzIJ5qyyCXnDuQorXHU2QjM5CeasuQl5xKsKK1x1NkIzQQnmrLoJccSrCitcdTZCM0IJ5qy7CWNodcSBCitcdTZCM0MJ5qy8CWNox5AKK1x1NkIzRQnmrL4Ja3XHjm4KK1x1NkIzRgnmrL8Ja8eObgorXHU2QjQzCeatgwlzaMOgCitcdTZCNDQJ5q2ECWd1xIEKK1x1NkI0NgnmrYYJeMSrbgorXHU2QjQ4CeatiAnHknUKK1x1NkI1MQnmrZEJaMWrCitcdTZCNTUJ5q2VCXDEk24KK1x1NkI1NgnmrZYJY2h1xIEKK1x1NkI1OQnmrZkJc2jDqAorXHU2QjVCCeatmwlsaceObgorXHU2QjVDCeatnAljaMO5CitcdTZCNjMJ5q2jCXpow6huZworXHU2QjY0CeatpAljx5AKK1x1NkI2QgnmrasJasO5CitcdTZCNzEJ5q2xCWt1w6wKK1x1NkI3OQnmrbkJZMeOaQorXHU2QjdBCeatuglkx45pCitcdTZCN0YJ5q2/CW3DsgorXHU2QjgxCeaugQltw7IKK1x1NkI4MgnmroIJY8O6CitcdTZCOEUJ5q6OCWrDrG5nCitcdTZCOTIJ5q6SCXnHlG4KK1x1NkI5NwnmrpcJZGnDqQorXHU2QjlECeaunQluw6wKK1x1NkJBMwnmrqMJasOsbgorXHU2QkI3Ceautwl5xKtuCitcdTZCQjgJ5q64CXHDrG5nCitcdTZCQkIJ5q67CWvDqQorXHU2QkJDCeauvAlrw6kKK1x1NkJCRAnmrr0JecOhbworXHU2QkJFCeauvglodcOsCitcdTZCQzEJ5q+BCWh1x5AKK1x1NkJDNwnmr4cJaHXHkAorXHU2QkNDCeavjAlndcOgbgorXHU2QkNFCeavjgltxJtpCitcdTZCRDAJ5q+QCceOaQorXHU2QkQyCeavkglkw7oKK1x1NkJENAnmr5QJYseQCitcdTZCRDUJ5q+VCWLDrAorXHU2QkRFCeavngltw6BvCitcdTZCRTQJ5q+kCcSbcgorXHU2QkU3Ceavpwlyw7NuZworXHU2QkY0CeavtAlixKsKK1x1NkJGOQnmr7kJc2jFqworXHU2QkZBCeavugltw6FvCitcdTZDMDIJ5rCCCW3DoW8KK1x1NkMwMwnmsIMJYseObmcKK1x1NkMwNwnmsIcJbMeUCitcdTZDMEQJ5rCNCXHDugorXHU2QzEwCeawkAlkx5AKK1x1NkMxMQnmsJEJbcOtbgorXHU2QzEzCeawkwltw6FuZworXHU2QzE0CeawlAlxw6wKK1x1NkMyNAnmsKQJecSrbgorXHU2QzI1CeawpQl4xKsKK1x1NkMyRgnmsK8JbMecCitcdTZDMzEJ5rCxCW5pw6BvCitcdTZDM0UJ5rC+CWbDoG4KK1x1NkMzRgnmsL8JZ3XHkAorXHU2QzQxCeaxgQl6aMSrCitcdTZDNDIJ5rGCCXFpw7oKK1x1NkM0NAnmsYQJaMOgbgorXHU2QzRBCeaxigljaMOgCitcdTZDNEMJ5rGMCWNodcOgbgorXHU2QzRGCeaxjwlkw6AKK1x1NkM1MAnmsZAJeMSrCitcdTZDNTEJ5rGRCXNodcOgbgorXHU2QzU2CeaxlglnxIFuCitcdTZDNTgJ5rGYCXFpxIFuCitcdTZDNUEJ5rGaCXfEgQorXHU2QzVCCeaxmwl4w7luCitcdTZDNjEJ5rGhCXfFqworXHU2QzY0CeaxpAl0xIFuZworXHU2QzY1CeaxpQlnx5QKK1x1NkM2OQnmsakJZ8eUCitcdTZDNkEJ5rGqCXfEgW5nCitcdTZDNkIJ5rGrCW3DqW4KK1x1NkM3NwnmsbcJZ8SBaQorXHU2QzdFCeaxvglmw6luCitcdTZDN0YJ5rG/CXjDuQorXHU2QzgzCeaygwl3w7IKK1x1NkM4NwnmsocJeceObgorXHU2Qzg4CeayiAlzaMSbbgorXHU2Qzg5CeayiQljaMOpbgorXHU2QzhECeayjQlow7kKK1x1NkM4Rgnmso8JccSrCitcdTZDOTAJ5rKQCW3DuQorXHU2QzkyCeaykgltw6lpCitcdTZDOTMJ5rKTCXTDoAorXHU2Qzk0CeaylAltaceObgorXHU2Qzk2CeaylgljaMWNbmcKK1x1NkM5QQnmspoJemjHkAorXHU2Q0EyCeayognFjXUKK1x1NkNBNQnmsqUJbMOsCitcdTZDQTkJ5rKpCWh1w6wKK1x1NkNBRAnmsq0JamnEgW4KK1x1NkNBRQnmsq4JaseUCitcdTZDQUYJ5rKvCWNow60KK1x1NkNCMgnmsrIJZHXDsgorXHU2Q0IzCeayswlow6kKK1x1NkNCNgnmsrYJZsO6CitcdTZDQjkJ5rK5CXnDs3UKK1x1NkNCQQnmsroJY2jDrQorXHU2Q0JDCeayvAl6aMeObworXHU2Q0JFCeayvglkacOgbgorXHU2Q0JGCeayvwl5w6FuCitcdTZDQzAJ5rOACWrFqworXHU2Q0M0CeazhAl4acOoCitcdTZDQzUJ5rOFCXFpw7oKK1x1NkNDNgnms4YJecSrCitcdTZDQzcJ5rOHCWppxIEKK1x1NkNDQgnms4sJYsOsCitcdTZDQ0MJ5rOMCWLDrAorXHU2Q0NECeazjQlixJNuCitcdTZDRDIJ5rOSCWfFqworXHU2Q0Q1CeazlQlmx44KK1x1NkNENwnms5cJc8OsCitcdTZDREEJ5rOaCWPHkAorXHU2Q0RDCeaznAljaMOtCitcdTZDREQJ5rOdCXPDuQorXHU2Q0RGCeaznwljaMSTbmcKK1x1NkNFMQnms6EJcMSBbworXHU2Q0UyCeazoglixY0KK1x1NkNFMwnms6MJccOsCitcdTZDRTQJ5rOkCW7HkAorXHU2Q0U1CeazpQluw60KK1x1NkNFNgnms6YJasO6CitcdTZDRTkJ5rOpCXNoxJNuZworXHU2Q0VDCeazrAlqdcOpCitcdTZDRUQJ5rOtCWbFqworXHU2Q0VFCeazrglww6BuCitcdTZDRjAJ5rOwCXTDoGkKK1x1NkNGMgnms7IJaseQCitcdTZDRjYJ5rO2CXNodcSBbmcKK1x1NkNGOAnms7gJbMO6CitcdTZDRkIJ5rO7CXhpw6gKK1x1NkNGRAnms70JesOpCitcdTZDRkUJ5rO+CWrEq25nCitcdTZEMDEJ5rSBCWppw6kKK1x1NkQwMgnmtIIJaHXDrAorXHU2RDA1Cea0hQl5xIFuCitcdTZEMDgJ5rSICXfDqWkKK1x1NkQwQwnmtIwJbGnDqAorXHU2RDEyCea0kglzx44KK1x1NkQxMwnmtJMJc3XHkgorXHU2RDE4Cea0mAlow7NuZworXHU2RDFCCea0mwlsdcOyCitcdTZEMUYJ5rSfCXnDrQorXHU2RDIwCea0oAltw7N1CitcdTZEMjgJ5rSoCXhpw6FvCitcdTZEMkMJ5rSsCWTDoG8KK1x1NkQyRQnmtK4JdMOhbworXHU2RDJGCea0rwlqacOpCitcdTZEMzAJ5rSwCWrDuQorXHU2RDM0Cea0tAlww61uZworXHU2RDM2Cea0tgl4acWNbmcKK1x1NkQzOQnmtLkJaHXDoW4KK1x1NkQzQwnmtLwJd8SBCitcdTZEM0QJ5rS9CXFpw6AKK1x1NkQzRQnmtL4JcMOgaQorXHU2RDNGCea0vwl3xasKK1x1NkQ0NAnmtYQJamnDoG5nCitcdTZENDcJ5rWHCWppxIFvCitcdTZENDgJ5rWICWNow6luZworXHU2RDQ5Cea1iQlzaMSrCitcdTZENEYJ5rWPCWxpw7oKK1x1NkQ1MgnmtZIJaMeUCitcdTZENUIJ5rWbCWjDoW4KK1x1NkQ1QwnmtZwJYsSBbmcKK1x1NkQ1RAnmtZ0JZMOtCitcdTZENjAJ5rWgCXjEqworXHU2RDY0Cea1pAlow7NuZworXHU2RDY2Cea1pglwx5QKK1x1NkQ2QQnmtaoJbMOgbmcKK1x1NkQ2QgnmtasJaMeOaQorXHU2RDZECea1rQlnxJNuZworXHU2RDcwCea1sAlsw6wKK1x1NkQ3MQnmtbEJY2jDum4KK1x1NkQ3OQnmtbkJamnEgQorXHU2RDdBCea1ugljaMWNbmcKK1x1NkQ4OAnmtogJeGnEgW8KK1x1NkQ4QQnmtooJbmnHjm4KK1x1NkQ4QgnmtosJY2jFjW5nCitcdTZEOEQJ5raNCWRpw6BuCitcdTZEOEYJ5raPCXNow7kKK1x1NkQ5MgnmtpIJdMWrbgorXHU2RDk0Cea2lAljw6luCitcdTZEOTUJ5raVCXTDrAorXHU2RDlDCea2nAlkw7oKK1x1NkQ5RQnmtp4JZ3XFjQorXHU2REEyCea2ogl5w7puCitcdTZEQTkJ5rapCXPDqAorXHU2REFCCea2qwlndcOgbgorXHU2REFGCea2rwl5w6EKK1x1NkRCMwnmtrMJa8WNbmcKK1x1NkRCNQnmtrUJaMOhbgorXHU2REI2Cea2tglkw7JuZworXHU2REI4Cea2uAlow6kKK1x1NkRCOQnmtrkJbGnDoG5nCitcdTZEQkQJ5ra9CWjFq24KK1x1NkRCRgnmtr8Jemh1xY0KK1x1NkRDMAnmt4AJZGnDoG4KK1x1NkRDNwnmt4cJccOtCitcdTZEQ0EJ5reKCXnEgW4KK1x1NkRDQgnmt4sJbMOsbgorXHU2RENDCea3jAl0x45uZworXHU2RENECea3jQljaMO5CitcdTZERDIJ5reSCXHEqworXHU2REQ3Cea3lwlqw7oKK1x1NkREQQnmt5oJbMOoaQorXHU2RERCCea3mwl6aMOoCitcdTZEREMJ5recCXDDqW5nCitcdTZEREQJ5redCWbDqWkKK1x1NkRERgnmt58JdGnHjm4KK1x1NkRFMQnmt6EJZMOgbgorXHU2REUyCea3ogl5w7kKK1x1NkRFMwnmt6MJZ3XEgW4KK1x1NkRFQgnmt6sJecOtbgorXHU2REVDCea3rAljdcOsCitcdTZERUQJ5retCWxpx45uCitcdTZERjAJ5rewCW5px45uCitcdTZERjEJ5rexCXNoxJNuCitcdTZERjQJ5re0CWjFqworXHU2REY1Cea3tQl5dcSBbgorXHU2REY3Cea3twlow7puCitcdTZERjgJ5re4CXHEq25nCitcdTZERkEJ5re6CXFpx45uCitcdTZERkIJ5re7CXRpx45uCitcdTZERkMJ5re8CW1px45vCitcdTZFMDQJ5riECWbEk2kKK1x1NkUwNgnmuIYJZGnDqQorXHU2RTBBCea4igl5dcSBbgorXHU2RTEwCea4kAlqacOgbgorXHU2RTExCea4kQltaceObgorXHU2RTEyCea4kglww6wKK1x1NkUxOAnmuJgJaHXDrAorXHU2RTFBCea4mgl6aMeUCitcdTZFMjEJ5rihCWTDuQorXHU2RTIzCea4owl6aMSBCitcdTZFMjYJ5rimCWd1xY0KK1x1NkUyNwnmuKcJZMOsCitcdTZFMjkJ5ripCXfEk24KK1x1NkUyQQnmuKoJZGnDqQorXHU2RTJDCea4rAljw6gKK1x1NkUzMAnmuLAJecSBbgorXHU2RTMxCea4sQnEm3IKK1x1NkUzNAnmuLQJa8SbCitcdTZFMzUJ5ri1CWxpw7oKK1x1NkUzOQnmuLkJaMWNbmcKK1x1NkUzQQnmuLoJbWnHjm8KK1x1NkUzQwnmuLwJbcSbaQorXHU2RTNGCea4vwliw6EKK1x1NkU0NAnmuYQJbcOpaQorXHU2RTRFCea5jgltaceObgorXHU2RTUyCea5kglqw60KK1x1NkU1NAnmuZQJamnEgW4KK1x1NkU1NQnmuZUJY2jDqW4KK1x1NkU1QwnmuZwJc2jDrQorXHU2RTVGCea5nwlodcOhbmcKK1x1NkU2MAnmuaAJaMWrbgorXHU2RTY0Cea5pAlqw7oKK1x1NkU2OQnmuakJZMOybmcKK1x1NkU2QQnmuaoJamnHjm8KK1x1NkU2QgnmuasJamnHjm8KK1x1NkU2QwnmuawJamnHjm8KK1x1NkU2RQnmua4JecSBbgorXHU2RTZGCea5rwl0xIFuZworXHU2RTcwCea5sAlsw7NuZworXHU2RTdDCea5vAluacOoCitcdTZFODAJ5rqACWppxIFuCitcdTZFODYJ5rqGCXjDuQorXHU2RTg4Cea6iAlndcSrCitcdTZFODkJ5rqJCWfDoGkKK1x1NkU4QwnmuowJbGnHjm4KK1x1NkU5NAnmupQJa8OgaQorXHU2RTk5Cea6mQlsacO6CitcdTZFOUQJ5rqdCWfFjXUKK1x1NkU5RQnmup4JbcOsCitcdTZFQTAJ5rqgCXpow6AKK1x1NkVBMQnmuqEJYsOzCitcdTZFQTYJ5rqmCXHEqworXHU2RUFBCea6qgl4xKsKK1x1NkVBQgnmuqsJd8STbgorXHU2RUFFCea6rglzaMSrCitcdTZFQjAJ5rqwCXHDrW4KK1x1NkVCMgnmurIJc8WNdQorXHU2RUIzCea6swlow7puCitcdTZFQjgJ5rq4CXPDuQorXHU2RUJBCea6ugluw6wKK1x1NkVCQgnmursJdMSBCitcdTZFQkMJ5rq8CXNoxKsKK1x1NkVCRAnmur0JcsO5CitcdTZFQzEJ5ruBCWNow7oKK1x1NkVDNAnmu4QJY8SBbmcKK1x1NkVDNwnmu4cJZGnEgW4KK1x1NkVDOAnmu4gJaMOgbworXHU2RUNBCea7igljw60KK1x1NkVDQwnmu4wJZMOtCitcdTZFQ0UJ5ruOCXjDrW5nCitcdTZFQ0YJ5ruPCWbHlAorXHU2RUQxCea7kQlodcOhCitcdTZFRDIJ5ruSCWLDrAorXHU2RUQ4Cea7mAlqacOgbworXHU2RURDCea7nAlnxIFvCitcdTZFREQJ5rudCWzDs25nCitcdTZFREUJ5rueCXpow6wKK1x1NkVFMgnmu6IJecOtbmcKK1x1NkVFMwnmu6MJY2jDum4KK1x1NkVFQgnmu6sJeGnFqworXHU2RUVDCea7rAlow7kKK1x1NkVGMAnmu7AJamnHjm5nCitcdTZFRjMJ5ruzCXNoxIFuZworXHU2RUY5Cea7uQloxasKK1x1NkVGQQnmu7oJZMOtCitcdTZFRkIJ5ru7CWNox45uCitcdTZFRkUJ5ru+CWfHlG4KK1x1NkYwMAnmvIAJYmnEgW8KK1x1NkYwMgnmvIIJcGnEgW8KK1x1NkYwMwnmvIMJasOtCitcdTZGMEEJ5ryKCWzHmgorXHU2RjBCCea8iwlsw7NuZworXHU2RjBGCea8jwlsw7J1CitcdTZGMTAJ5ryQCXnDoG4KK1x1NkYxNQnmvJUJY8OhbworXHU2RjE2Cea8lgljaMO6bgorXHU2RjE4Cea8mAljaMO6bgorXHU2RjE5Cea8mQl0dcOhbgorXHU2RjFBCea8mgnFjXUKK1x1NkYxQgnmvJsJdMSBbgorXHU2RjIzCea8owlsacOhbgorXHU2RjI0Cea8pAlnxIFuCitcdTZGMjgJ5ryoCWbDqW5nCitcdTZGMkEJ5ryqCXnEqworXHU2RjJDCea8rAl6w6wKK1x1NkYyRAnmvK0JbceObmcKK1x1NkYyRgnmvK8JdMOgCitcdTZGMzAJ5rywCXDEk25nCitcdTZGMzIJ5ryyCXpox45uZworXHU2RjMzCea8swl6aMSBbmcKK1x1NkYzOAnmvLgJamnEgW4KK1x1NkYzOQnmvLkJbGnDugorXHU2RjNDCea8vAljdceQCitcdTZGM0YJ5ry/CWppxIFuZworXHU2RjQwCea9gAljw7NuZworXHU2RjQ1Cea9hQlndcOgbgorXHU2RjQ2Cea9hglwacSTCitcdTZGNEYJ5r2PCWp1w6kKK1x1NkY1MAnmvZAJYsWNCitcdTZGNTIJ5r2SCWLFjQorXHU2RjU5Cea9mQlndcSrCitcdTZGNUEJ5r2aCXhpxIFvCitcdTZGNUUJ5r2eCWzDuQorXHU2RjYwCea9oAl4w7luCitcdTZGNjEJ5r2hCWTDuW4KK1x1NkY2MwnmvaMJbMOhbworXHU2RjY2Cea9pglsx45vCitcdTZGNjcJ5r2nCXNow6BuCitcdTZGNkQJ5r2tCXTDoW4KK1x1NkY2RQnmva4JY2jDoW8KK1x1NkY3MAnmvbAJa3XDrAorXHU2RjcxCea9sQlzx44KK1x1NkY3NgnmvbYJYsOsCitcdTZGNzgJ5r24CXNoxIFuCitcdTZGN0QJ5r29CWTDqG5nCitcdTZGODQJ5r6ECWNow6luZworXHU2Rjg1Cea+hQnDoG8KK1x1NkY4NwnmvocJbMOgbworXHU2Rjg4Cea+iAljaMOoCitcdTZGOEEJ5r6KCWPFq24KK1x1NkY4QwnmvowJc8SrCitcdTZGOEQJ5r6NCXNow7kKK1x1NkY4RQnmvo4JcMOpbmcKK1x1NkY4Rgnmvo8JaMOgbgorXHU2RjkyCea+kglow7JuZworXHU2RjkzCea+kwlmw7oKK1x1NkZBMAnmvqAJc2jDqW5nCitcdTZGQTEJ5r6hCXrHjm8KK1x1NkZBMgnmvqIJZMSBbmcKK1x1NkZBMwnmvqMJaHXHjm4KK1x1NkZBNAnmvqQJesOpCitcdTZGQTUJ5r6lCXhpw6gKK1x1NkZBQQnmvqoJaHXDoQorXHU2RkFGCea+rwljw6BuCitcdTZGQjQJ5r60CWh1w6FuCitcdTZGQjcJ5r63CWTEgW4KK1x1NkZCOQnmvrkJZMOgbgorXHU2RkJBCea+uglqacSBbworXHU2RkMxCea/gQl6aHXDsworXHU2RkMzCea/gwluw7NuZworXHU2RkM1Cea/hQlmw6huCitcdTZGQzcJ5r+HCXPDqAorXHU2RkNCCea/iwljaMeUCitcdTZGRDAJ5r+QCW3DrQorXHU2RkQ1Cea/lQlzaMSrCitcdTZGRDYJ5r+WCW7DrAorXHU2RkQ5Cea/mQl5w61uZworXHU2RkRBCea/mgliw6wKK1x1NkZERgnmv58JasOsCitcdTZGRTAJ5r+gCWjDoW8KK1x1NkZFMgnmv6IJY2jDoW8KK1x1NkZFNQnmv6UJeMSrCitcdTZGRTcJ5r+nCWR1w6wKK1x1NkZFQQnmv6oJamnDoG4KK1x1NkZFQwnmv6wJasO5bgorXHU2RkVFCea/rglww7oKK1x1NkZFRgnmv68Jemh1w7MKK1x1NkZGMAnmv7AJd8OpaQorXHU2RkY2Cea/tglqacSBbgorXHU2RkZCCea/uwlkdcOsCitcdTZGRkMJ5r+8CWx1w7IKK1x1NkZGRAnmv70JY3XDoW4KK1x1NkZGRQnmv74JbMecCitcdTcwMDIJ54CCCWppxY1uZworXHU3MDA1CeeAhQl5w61uZworXHU3MDA2CeeAhglkw7oKK1x1NzAwNwnngIcJY2jDqG4KK1x1NzAwQwnngIwJYmnEgW8KK1x1NzAxMAnngJAJYsOgbworXHU3MDExCeeAkQlww7kKK1x1NzAxMgnngJIJccOsbgorXHU3MDFBCeeAmglow6BuCitcdTcwMUQJ54CdCWzDrAorXHU3MDI3CeeApwlsw7NuZworXHU3MDI4CeeAqAlsw6BpCitcdTcwMzEJ54CxCWrDrAorXHU3MDM1CeeAtQlmw6huCitcdTcwM0EJ54C6CWNow6FuCitcdTcwM0QJ54C9CWppx45uCitcdTcwNDMJ54GDCWbEk25nCitcdTcwNDUJ54GFCWh1w6BuCitcdTcwNEQJ54GNCWzDrQorXHU3MDUyCeeBkglow6BuCitcdTcwNTkJ54GZCWTHjm5nCitcdTcwNjkJ54GpCXnDoG4KK1x1NzA2RAnnga0JbWnDqAorXHU3MDc2CeeBtgl6w6BvCitcdTcwODEJ54KBCWfEm25nCitcdTcwODUJ54KFCWd1w6wKK1x1NzA4NgnngoYJd8OpbgorXHU3MDhBCeeCigljaHXEqworXHU3MDhGCeeCjwlnxJtuZworXHU3MDk0CeeClAlxdcSTCitcdTcwOTUJ54KVCWvDoG5nCitcdTcwOTcJ54KXCWd1xIFuZworXHU3MDlDCeeCnAl3xJtpCitcdTcwQTUJ54KlCWbDugorXHU3MEE4CeeCqAlixIFvCitcdTcwQUYJ54KvCWppx5JuZworXHU3MEIxCeeCsQl0w6FpCitcdTcwQjgJ54K4CXpow6EKK1x1NzBCOQnngrkJZGnHjm4KK1x1NzBCQQnngroJd8OoaQorXHU3MEJCCeeCuwlsdcOyCitcdTcwQzIJ54OCCWzDoG4KK1x1NzBDNAnng4QJamnHjm8KK1x1NzBDOAnng4gJbGnDqAorXHU3MENCCeeDiwl4acSBbworXHU3MENDCeeDjAl3w7kKK1x1NzBEMAnng5AJbWnDqAorXHU3MEQ2CeeDlglnw6kKK1x1NzBEOQnng5kJbMOgbworXHU3MERBCeeDmglodceQCitcdTcwREQJ54OdCXpoxJNuZworXHU3MEUwCeeDoAlodceQCitcdTcwRTgJ54OoCXTEq25nCitcdTcwRjQJ54O0CXTEq25nCitcdTcwRjUJ54O1CXNow6FuCitcdTcwRkMJ54O8CWjFqworXHU3MTA1CeeEhQlrw7kKK1x1NzEwOQnnhIkJecSBbgorXHU3MTBBCeeEiglow6BuCitcdTcxMTAJ54SQCXTEgW8KK1x1NzExOQnnhJkJYsOoaQorXHU3MTFCCeeEmwlox5RuCitcdTcxMUQJ54SdCWjDuW4KK1x1NzEyMgnnhKIJaMWNbmcKK1x1NzEyNwnnhKcJY8WNbmcKK1x1NzEyQwnnhKwJeMOtCitcdTcxMkYJ54SvCWNoxIFvCitcdTcxMzAJ54SwCXnDoG4KK1x1NzEzMgnnhLIJamnEgW8KK1x1NzEzNAnnhLQJc2jDqW4KK1x1NzE0MgnnhYIJaMOoCitcdTcxNDcJ54WHCWh1xKsKK1x1NzE0OAnnhYgJZsOobmcKK1x1NzE0QQnnhYoJamnHjm4KK1x1NzE0RgnnhY8JYsOsCitcdTcxNTMJ54WTCXFpw6FuCitcdTcxNTUJ54WVCXjEqworXHU3MTU3CeeFlwltw6lpCitcdTcxNUUJ54WeCXNow6AKK1x1NzE1RgnnhZ8Jd8OoaQorXHU3MTYxCeeFoQl4w6xuCitcdTcxNjcJ54WnCXpow6BvCitcdTcxNjkJ54WpCWbDoW4KK1x1NzE2RAnnha0JYsSBbworXHU3MTcyCeeFsglixIFvCitcdTcxNzMJ54WzCWjDugorXHU3MTc1CeeFtQlzaMOgbgorXHU3MTdFCeeFvgluzIQKK1x1NzE4NQnnhoUJecO5bgorXHU3MTg2CeeGhglow6kKK1x1NzE4NwnnhocJa8eObworXHU3MTkwCeeGkAlqaceSbmcKK1x1NzE5MwnnhpMJbGnDuQorXHU3MTk5CeeGmQl4xKsKK1x1NzE5QQnnhpoJYsOsCitcdTcxOUYJ54afCXNow7oKK1x1NzFBMAnnhqAJecOsCitcdTcxQTgJ54aoCXnDuQorXHU3MUE5CeeGqQnEgW8KK1x1NzFBQwnnhqwJw6FvCitcdTcxQUQJ54atCWTHjm4KK1x1NzFDMQnnh4EJecOoCitcdTcxQzMJ54eDCXLDoW4KK1x1NzFDNgnnh4YJZMWrbgorXHU3MUNBCeeHiglzaMSTbgorXHU3MUNDCeeHjAliw6huCitcdTcxQ0QJ54eNCWxpw6FvCitcdTcxQ0UJ54eOCWxpw6FvCitcdTcxQ0YJ54ePCXnDuQorXHU3MUQzCeeHkwlmxJNuCitcdTcxRDUJ54eVCXnDoG4KK1x1NzFENgnnh5YJeMO6bgorXHU3MUQ3CeeHlwlkw6BuZworXHU3MURBCeeHmgljdcWNCitcdTcxRTAJ54egCXnDuQorXHU3MUUxCeeHoQl5w6wKK1x1NzFFNgnnh6YJY8OgbgorXHU3MUZBCeeHuglkw6BvCitcdTcxRkUJ54e+CWTDoG8KK1x1NzFGRgnnh78JecOgbworXHU3MjAwCeeIgAliw7MKK1x1NzIwNwnniIcJcsOoCitcdTcyMDgJ54iICWxpw6gKK1x1NzIwQQnniIoJxIFvCitcdTcyMEIJ54iLCXjFq24KK1x1NzIwQwnniIwJaHXDoG5nCitcdTcyMEQJ54iNCXNodcOyCitcdTcyMEYJ54iPCWzDrAorXHU3MjE0CeeIlAlzaHXDsgorXHU3MjFCCeeImwlsw6BuCitcdTcyMUUJ54ieCWNow7NuZworXHU3MjFGCeeInwlndcOgbgorXHU3MjJDCeeIrAlww6EKK1x1NzIyRQnniK4JcMOhbworXHU3MjM0CeeItAlmx5QKK1x1NzIzNwnniLcJecOpCitcdTcyM0MJ54i8CXNodcSBbmcKK1x1NzIzRQnniL4JxJtyCitcdTcyNDAJ54mACWNodcOhbmcKK1x1NzI0NwnniYcJcGnDoG4KK1x1NzI0OAnniYgJYseObgorXHU3MjRGCeeJjwl0w7N1CitcdTcyNTAJ54mQCWPFjW5nCitcdTcyNTYJ54mWCXnHknUKK1x1NzI1QQnniZoJY2jEk25nCitcdTcyNUIJ54mbCW5pw7oKK1x1NzI2MAnniaAJdMSBCitcdTcyNjEJ54mhCW3HlAorXHU3MjYzCeeJowlyw6huCitcdTcyNjUJ54mlCWbEgW5nCitcdTcyNjcJ54mnCW3DuQorXHU3MjcxCeeJsQlnxJMKK1x1NzI3NgnnibYJcXXDoG4KK1x1NzI3QgnnibsJbcOhbmcKK1x1NzI3RQnnib4Jd8O6CitcdTcyN0YJ54m/CWfDuQorXHU3Mjg1CeeKhQlnxIFuZworXHU3Mjg2CeeKhgl0w6gKK1x1NzI4NwnniocJYsSTbgorXHU3MjhFCeeKjglmxJNuZworXHU3MjlDCeeKnAlixJNpCitcdTcyQTUJ54qlCWLDsworXHU3MkE3CeeKpwl4xKsKK1x1NzJBOAnniqgJY2jFjXUKK1x1NzJBQQnniqoJY2jDoWkKK1x1NzJCMwnnirMJw6FuCitcdTcyQjUJ54q1CXHDrAorXHU3MkI5CeeKuQl5w7N1CitcdTcyQzAJ54uACXpodcOgbmcKK1x1NzJDMwnni4MJbmnHlAorXHU3MkM0CeeLhAlkw60KK1x1NzJDNQnni4UJccSrbmcKK1x1NzJDQwnni4wJc2jEk25nCitcdTcyQ0QJ54uNCXDDoW8KK1x1NzJEOQnni5kJasWrCitcdTcyREUJ54ueCW7DrW5nCitcdTcyRTEJ54uhCWppx45vCitcdTcyRTIJ54uiCWjDqQorXHU3MkU2CeeLpglrdcOgaQorXHU3MkYwCeeLsAl6aMSTbmcKK1x1NzJGNwnni7cJanXDoG4KK1x1NzJGOQnni7kJeGnDoQorXHU3MkZDCeeLvAlsw6FuZworXHU3MkZECeeLvQliw6hpCitcdTczMDgJ54yICWLDoAorXHU3MzBGCeeMjwlqacSBbgorXHU3MzEzCeeMkwlndceSCitcdTczMTQJ54yUCcSTCitcdTczMTgJ54yYCXpow6wKK1x1NzMyMQnnjKEJbHXDsworXHU3MzI2CeeMpglmxJNuZworXHU3MzJDCeeMrAl3w6hpCitcdTczMzIJ54yyCWjDqAorXHU3MzMzCeeMswlqacSBCitcdTczMzcJ54y3CXnDs3UKK1x1NzMzRAnnjL0JbceOCitcdTczNDIJ542CCWh1w6FuCitcdTczNDMJ542DCWTEgWkKK1x1NzM0QgnnjYsJaMOhbworXHU3MzUwCeeNkAl6aMSBbmcKK1x1NzM1NwnnjZcJanXDqQorXHU3MzVFCeeNngl0w7NuZworXHU3MzYwCeeNoAlsacOhbworXHU3MzYxCeeNoQlxdcOoCitcdTczNjIJ542iCWh1w6EKK1x1NzM2QgnnjasJeGnHjm4KK1x1NzM2RAnnja0JdMeOCitcdTczNkUJ542uCXhpx45uCitcdTczNkYJ542vCXjFq24KK1x1NzM3MgnnjbIJaHXDsgorXHU3Mzc1CeeNtQlsacOoCitcdTczNzgJ5424CXNow7J1CitcdTczN0EJ5426CXTHjgorXHU3MzdCCeeNuwl4acOgbgorXHU3MzdDCeeNvAltw60KK1x1NzM3Rgnnjb8JxJsKK1x1NzM4MQnnjoEJeGnHjm4KK1x1NzM4NQnnjoUJbWnDoG8KK1x1NzM4NwnnjocJbMecCitcdTczODgJ546ICWzDugorXHU3MzhDCeeOjAljaHXDoG4KK1x1NzM5NAnnjpQJY2h1w6BuCitcdTczOTUJ546VCWfEgW4KK1x1NzM5OQnnjpkJY2jDoG5nCitcdTczOUIJ546bCW3HjgorXHU3MzlGCeeOnwltw61uCitcdTczQTAJ546gCWppw6gKK1x1NzNBMgnnjqIJYsSrbgorXHU3M0EzCeeOowliw6BuZworXHU3M0E0CeeOpAliw6BuZworXHU3M0E1CeeOpQl5dcOoCitcdTczQTkJ546pCXfDoW4KK1x1NzNBQQnnjqoJamnEgW4KK1x1NzNBRQnnjq4Jd8SbaQorXHU3M0I4CeeOuAljxKsKK1x1NzNCRAnnjr0JZ8eSdQorXHU3M0NBCeePiglzaMSBbgorXHU3M0RGCeePnwlzw7kKK1x1NzNFNAnnj6QJYseObworXHU3M0YzCeePswlow6BuCitcdTczRjYJ54+2CWTDrAorXHU3NDAxCeeQgQl4dcSBbgorXHU3NDAyCeeQgglqdcSBbgorXHU3NDA1CeeQhQlsw6FuZworXHU3NDA2CeeQhglsx5AKK1x1NzQwQgnnkIsJbMOtCitcdTc0MEUJ55COCWrEq24KK1x1NzQwRgnnkI8JbGnDoW4KK1x1NzQxMAnnkJAJc3XHkgorXHU3NDE2CeeQlgl6aMeObgorXHU3NDFGCeeQnwl3w6lpCitcdTc0MjMJ55CjCWh1xKsKK1x1NzQ0MAnnkYAJeceUCitcdTc0NDIJ55GCCW3DqWkKK1x1NzQ0QgnnkYsJd8SbaQorXHU3NDUzCeeRkwlodcOhbgorXHU3NDU4CeeRmAl5w6kKK1x1NzQ2QQnnkaoJbceOCitcdTc0NzEJ55GxCXRpw6BuCitcdTc0NzIJ55GyCXFpxIFuZworXHU3NDc0CeeRtAlqw6xuCitcdTc0N0YJ55G/CWzEqworXHU3NDg0CeeShAlsaceObgorXHU3NDhBCeeSigltw6luCitcdTc0OEIJ55KLCXpoxIFuZworXHU3NDlBCeeSmglqdcOpCitcdTc0OUIJ55KbCWrEq24KK1x1NzRBMgnnkqIJaHXDoG4KK1x1NzRCMQnnkrEJc8OoCitcdTc0QkEJ55K6CXfDqG4KK1x1NzRDQgnnk4sJYsOzCitcdTc0RTAJ55OgCWjDuQorXHU3NEUxCeeToQl3w6AKK1x1NzRFOAnnk6gJaMOzbmcKK1x1NzRFOQnnk6kJcWnEgW4KK1x1NzRFQQnnk6oJYsO5CitcdTc1MDAJ55SACXpodcOsCitcdTc1MDMJ55SDCXpow7J1CitcdTc1MDYJ55SGCWPDrQorXHU3NTBECeeUjQltw6luZworXHU3NTEwCeeUkAlsw61uCitcdTc1MUEJ55SaCXNow6huCitcdTc1MUIJ55SbCWjDoW4KK1x1NzUxRQnnlJ4JY2jDoW5nCitcdTc1MjEJ55ShCXNoxJNuCitcdTc1MjIJ55SiCWNox45uCitcdTc1MkMJ55SsCXnHkm5nCitcdTc1MkQJ55StCWLDqW5nCitcdTc1MkUJ55SuCWbDqG5nCitcdTc1MzAJ55SwCXRpw6FuCitcdTc1MzIJ55SyCWppx44KK1x1NzUzOQnnlLkJcMSrbmcKK1x1NzUzQQnnlLoJdMeQbmcKK1x1NzUzQgnnlLsJaHXDoAorXHU3NTNFCeeUvgl6xIFpCitcdTc1M0YJ55S/CW3DqW5nCitcdTc1NDIJ55WCCWppw7kKK1x1NzU0MwnnlYMJd8STaQorXHU3NTU4CeeVmAlsaceUCitcdTc1NUEJ55WaCWLEm24KK1x1NzU1QwnnlZwJY2jDuQorXHU3NTVECeeVnQltx5QKK1x1NzU2NQnnlaUJbMO8w6gKK1x1NzU2NwnnlacJZsSBbgorXHU3NTZBCeeVqglmxIFuCitcdTc1NkIJ55WrCWh1w6AKK1x1NzU2RAnnla0JbGnHlAorXHU3NTcyCeeVsglzaMSTCitcdTc1NzMJ55WzCWTDoG5nCitcdTc1NzYJ55W2CWTEgW5nCitcdTc1NzcJ55W3CWNodcOyCitcdTc1NzgJ55W4CWrEqworXHU3NTc5CeeVuQl3x45uCitcdTc1N0EJ55W6CWppxIFuZworXHU3NTg3CeeWhwljaMOzdQorXHU3NTg5CeeWiQlkacOpCitcdTc1OEMJ55aMCW5pw6gKK1x1NzU4Rgnnlo8Jc2jFqworXHU3NTkwCeeWkAl6aMOsCitcdTc1OTEJ55aRCXnDrQorXHU3NTkyCeeWkgljaHXDoW5nCitcdTc1OTUJ55aVCWLHkAorXHU3NTk4CeeWmAlnxIFuZworXHU3NTk5CeeWmQlnxJMKK1x1NzU5QQnnlpoJamnDuQorXHU3NTlGCeeWnwluw7zDqAorXHU3NUEwCeeWoAlsw6wKK1x1NzVBNAnnlqQJYsSBCitcdTc1QjUJ55a1CWPEqworXHU3NUI2CeeWtgl4acOoCitcdTc1QjkJ55a5CXpoxJtuCitcdTc1QkEJ55a6CWbDoQorXHU3NUJFCeeWvglqw60KK1x1NzVDMAnnl4AJZ8WNdQorXHU3NUMxCeeXgQlkacOgbgorXHU3NUMyCeeXgglqacSBCitcdTc1QzQJ55eECXpow6AKK1x1NzVDNQnnl4UJYsOsbmcKK1x1NzVDNwnnl4cJemjDqG5nCitcdTc1QzgJ55eICWxpxJMKK1x1NzVDRgnnl48Jd8SbaQorXHU3NUQzCeeXkwljaMOsCitcdTc1RDYJ55eWCXDEqworXHU3NUU3CeeXpwlzaMSBCitcdTc1RjIJ55eyCW3DoQorXHU3NUZBCeeXugliw6wKK1x1NzVGQgnnl7sJbcOtbgorXHU3NUZDCeeXvAlnw7kKK1x1NzVGRAnnl70JZHXEqworXHU3NUZGCeeXvwl3xJtpCitcdTc2MDMJ55iDCXpow7oKK1x1NzYwNAnnmIQJY8O5CitcdTc2MDYJ55iGCXNow6huCitcdTc2MDgJ55iICWrDrAorXHU3NjA5CeeYiQl5w7kKK1x1NzYwRQnnmI4Jc2jDqG4KK1x1NzYxNgnnmJYJecSrbgorXHU3NjE5CeeYmQlzw6BvCitcdTc2MUEJ55iaCWp1w6kKK1x1NzYyMAnnmKAJasOtCitcdTc2MjEJ55ihCWNodcSBbmcKK1x1NzYyNQnnmKUJY2jDoGkKK1x1NzYyNgnnmKYJc2jDsnUKK1x1NzYyNwnnmKcJbsO8w6gKK1x1NzYyOAnnmKgJZGnEgW4KK1x1NzYyOQnnmKkJZMOhCitcdTc2MkEJ55iqCWJpxJMKK1x1NzYyQgnnmKsJdMSBbgorXHU3NjJGCeeYrwljw7kKK1x1NzYzNAnnmLQJemjDoG5nCitcdTc2MzYJ55i2CWzDsnUKK1x1NzYzQwnnmLwJbcOyCitcdTc2NDMJ55mDCWzDs25nCitcdTc2NDcJ55mHCXhpw6FuCitcdTc2NDkJ55mJCWTEgW4KK1x1NzY0QQnnmYoJw6FpCitcdTc2NEMJ55mMCcOhaQorXHU3NjRECeeZjQlixIFuCitcdTc2NUMJ55mcCWRpw6BuCitcdTc2NUUJ55meCWzDoAorXHU3NjVGCeeZnwliacSbCitcdTc2NjAJ55mgCWrDrAorXHU3NjYxCeeZoQljaMSrCitcdTc2NjQJ55mkCWppw6kKK1x1NzY2OQnnmakJbMOgaQorXHU3NjZCCeeZqwlkacSBbgorXHU3NjZDCeeZrAl4dceObgorXHU3NjZECeeZrQl5x5BuZworXHU3NjdBCeeZuglmxIEKK1x1NzY3QgnnmbsJZMSTbmcKK1x1NzY3QwnnmbwJZsSBCitcdTc2N0QJ55m9CWLDoWkKK1x1NzY3RQnnmb4JYseOaQorXHU3NjdGCeeZvwlqw60KK1x1NzY4MQnnmoEJZMOtCitcdTc2ODQJ55qECWTEkworXHU3Njg1CeeahQlwxIEKK1x1NzY4OAnnmogJZ3XEqworXHU3NjhDCeeajAlodcSrCitcdTc2OTQJ55qUCWjDoG4KK1x1NzY5NwnnmpcJY2jDs3UKK1x1NzY5QwnnmpwJaMOgbworXHU3NjlECeeanQljdcOsCitcdTc2QTEJ55qhCWjDoG8KK1x1NzZBNQnnmqUJaMOgbworXHU3NkFECeearQlqacOgbworXHU3NkI3Ceeatwlnx5QKK1x1NzZCQgnnmrsJbceQbmcKK1x1NzZDMAnnm4AJZGnDoG8KK1x1NzZDNQnnm4UJemjFjW5nCitcdTc2QzYJ55uGCXDDqW4KK1x1NzZDRQnnm44Jw6BuZworXHU3NkQxCeebkQlqacSBbgorXHU3NkQyCeebkglow6kKK1x1NzZEMwnnm5MJZ8SbCitcdTc2RDcJ55uXCWTDoG8KK1x1NzZEQgnnm5sJc2jDqG5nCitcdTc2REMJ55ucCWTDoG8KK1x1NzZFMAnnm6AJaseQbgorXHU3NkUyCeeboglqacOgbgorXHU3NkUzCeebowlqacSBbgorXHU3NkU0CeebpAlww6FuCitcdTc2RTUJ55ulCWd1w6BuCitcdTc2RTkJ55upCXpoxY11CitcdTc2RUEJ55uqCWTDoG5nCitcdTc2RUYJ55uvCWTEq25nCitcdTc2RjAJ55uwCWfHjm4KK1x1NzZGMwnnm7MJbcOhbmcKK1x1NzZGNAnnm7QJemjDrQorXHU3NkY4CeebuAl4acSBbmcKK1x1NzZGOQnnm7kJZMeUbgorXHU3NkZBCeebuglmw6luCitcdTc2RkQJ55u9CWbEk25nCitcdTc2RkYJ55u/CW3DrW4KK1x1NzcwMQnnnIEJc2jEm25nCitcdTc3MDIJ55yCCW1pw6BvCitcdTc3MDgJ55yICWTEgW4KK1x1NzcwOQnnnIkJbcOpaQorXHU3NzBCCeeciwlrw6BuCitcdTc3MEMJ55yMCWTDqG5nCitcdTc3MTkJ55yZCXnDrQorXHU3NzFBCeecmglzaMSbbmcKK1x1NzcxRAnnnJ0JbWnHjm4KK1x1NzcyMQnnnKEJZMSrCitcdTc3MkEJ55yqCWLHkG5nCitcdTc3MkUJ55yuCWTDsm5nCitcdTc3MzAJ55ywCWRpw6kKK1x1NzczMwnnnLMJbcOtbmcKK1x1NzczNAnnnLQJeHXDoG4KK1x1NzczNQnnnLUJY2jEqworXHU3NzNECeecvQltw7IKK1x1Nzc0MQnnnYEJemjEk25nCitcdTc3NDQJ552ECXNow6BvCitcdTc3NDUJ552FCWjDoG4KK1x1Nzc0OAnnnYgJY2jEm25nCitcdTc3NTUJ552VCXfEgW4KK1x1Nzc1NgnnnZYJbMOobmcKK1x1Nzc1NwnnnZcJc2jDrAorXHU3NzVCCeedmwlqxKtuZworXHU3NzVDCeednAl6aMSTbmcKK1x1Nzc2NgnnnaYJbcO5CitcdTc3NkIJ552rCWppw6kKK1x1Nzc2QwnnnawJY8eOaQorXHU3NzcyCeedsglqw6wKK1x1Nzc3RQnnnb4JZ8SBbworXHU3NzdGCeedvwlydcOsCitcdTc3ODAJ556ACW3DoG8KK1x1Nzc4MQnnnoEJZsOhCitcdTc3ODMJ556DCWd1w6wKK1x1Nzc4NwnnnocJbcSrCitcdTc3OTIJ556SCW3DoW4KK1x1Nzc5MwnnnpMJbcOpbgorXHU3NzlGCeeenwlwaceObworXHU3N0EwCeeeoAljaMSTbmcKK1x1NzdBMQnnnqEJasOsCitcdTc3QTQJ556kCWLDrAorXHU3N0E2CeeepglsacOgbworXHU3N0FECeeerQlsaceObworXHU3N0FFCeeergljaMOoCitcdTc3QjAJ556wCWvDoG4KK1x1NzdCMwnnnrMJdMOzbmcKK1x1NzdCNgnnnrYJZ3XDrAorXHU3N0I3CeeetwlqacOgbgorXHU3N0I4CeeeuAlqw60KK1x1NzdCRgnnnr8JccO6CitcdTc3QzAJ55+ACXfDqWkKK1x1NzdDNwnnn4cJbcSTbmcKK1x1NzdDQQnnn4oJbcOhbmcKK1x1NzdEMwnnn5MJbMOzbmcKK1x1NzdERAnnn50JanXDqQorXHU3N0RGCeefnwlzaHXDsgorXHU3N0U0CeefpAlzaMSbbgorXHU3N0U2Ceefpglow7N1CitcdTc3RUMJ55+sCWN1w7MKK1x1NzdGMAnnn7AJesSTbmcKK1x1NzdGMgnnn7IJYseOaQorXHU3N0YzCeefswlzaMOtCitcdTc3RjQJ55+0CWTDrG5nCitcdTc3RjYJ55+2CWrEqworXHU3N0Y5CeefuQlrxasKK1x1NzdGQwnnn7wJamnEgW5nCitcdTc3RkQJ55+9CXjEqworXHU3N0ZFCeefvglmw6FuCitcdTc4MEEJ56CKCWvEgW5nCitcdTc4MEIJ56CLCXFpw6gKK1x1NzgwRAnnoI0Ja8eObgorXHU3ODEwCeegkAnDqAorXHU3ODE1CeeglQlzdcOsCitcdTc4MTcJ56CXCWNoxJMKK1x1NzgxRQnnoJ4JbcOyCitcdTc4MUYJ56CfCXpox44KK1x1NzgyMAnnoKAJccWrCitcdTc4MjEJ56ChCWvEkworXHU3ODIzCeegowl0dcOzCitcdTc4MjYJ56CmCXpow6BpCitcdTc4MjkJ56CpCWbDqGkKK1x1NzgyQQnnoKoJbceUCitcdTc4MkMJ56CsCWzDoQorXHU3ODJECeegrQliacSBbgorXHU3ODMxCeegsQnDoGkKK1x1NzgzQQnnoLoJbMOsCitcdTc4NDUJ56GFCWd1xKsKK1x1Nzg0NgnnoYYJw6gKK1x1Nzg0RAnnoY0Ja8OobgorXHU3ODRGCeehjwl5w6FuCitcdTc4NTEJ56GRCXDEk25nCitcdTc4NTUJ56GVCXNodcOyCitcdTc4NTYJ56GWCcOhaQorXHU3ODVBCeehmglxacOhbworXHU3ODVFCeehnglsw6FuZworXHU3ODYxCeehoQloxY1uZworXHU3ODYyCeehogl3w7IKK1x1Nzg2QgnnoasJbGnDugorXHU3ODZDCeehrAl5w6xuZworXHU3ODZECeehrQltw6FuZworXHU3ODc3CeehtwlqaceObgorXHU3ODdECeehvQlsacO5CitcdTc4OEQJ56KNCcOgaQorXHU3ODkxCeeikQlixJNpCitcdTc4OTQJ56KUCXfHlAorXHU3ODlBCeeimgliw6hpCitcdTc4OUIJ56KbCXHDrAorXHU3OEEwCeeioAlkw6xuZworXHU3OEEyCeeioglrw6gKK1x1NzhBNAnnoqQJd8SbaQorXHU3OEE5CeeiqQlzaHXDsgorXHU3OEFBCeeiqgl6aMSTbgorXHU3OEIyCeeisglkw6wKK1x1NzhCNgnnorYJccOsCitcdTc4QkMJ56K8CW3HjgorXHU3OEJFCeeivgluaceObgorXHU3OEJGCeeivwlwxIFuZworXHU3OEM2CeejhglodcOhCitcdTc4QzkJ56OJCXPHjm5nCitcdTc4Q0QJ56ONCXjEqworXHU3OENGCeejjwnDoWkKK1x1NzhEMgnno5IJa8SbCitcdTc4RDYJ56OWCWzEgQorXHU3OEQ4CeejmAlxw6xuZworXHU3OERCCeejmwljaMOhbgorXHU3OEUwCeejoAlsx5QKK1x1NzhFMwnno6MJY8OgCitcdTc4RTQJ56OkCXnEq24KK1x1NzhFNQnno6UJbMSbaQorXHU3OEU4CeejqAltw7MKK1x1NzhFOQnno6kJccSrCitcdTc4RUEJ56OqCWN1xKsKK1x1NzhFRAnno60JY2h1w7IKK1x1NzhGNQnno7UJamnDoG4KK1x1NzhGNwnno7cJbMOtbgorXHU3OEY4CeejuAlkw6xuZworXHU3OEZCCeejuwlww6FuCitcdTc4RkMJ56O8CcOhbworXHU3OEZFCeejvglkxKsKK1x1NzkwNwnnpIcJecO5CitcdTc5MEMJ56SMCWzDqWkKK1x1NzkwRAnnpI0Ja8STCitcdTc5MUIJ56SbCWppxIFuCitcdTc5MUMJ56ScCWzDqWkKK1x1NzkyOAnnpKgJbMSbaQorXHU3OTJDCeekrAlmw6FuCitcdTc5M0IJ56S7CXNow6wKK1x1Nzk0MgnnpYIJdMSBCitcdTc5NDUJ56WFCXnEgW8KK1x1Nzk0NwnnpYcJccOtCitcdTc5NDgJ56WICXHDrQorXHU3OTQ5CeeliQl6aMeQCitcdTc5NEUJ56WOCWbDqGkKK1x1Nzk1NAnnpZQJZsO5CitcdTc5NTcJ56WXCXpoxKsKK1x1Nzk1RQnnpZ4Jc2jDqW4KK1x1Nzk1RgnnpZ8Jc3XDrAorXHU3OTYxCeeloQljaMOhaQorXHU3OTYzCeelowlsx5oKK1x1Nzk2NQnnpaUJeGnDoW5nCitcdTc5NjkJ56WpCXpow6BpCitcdTc5NkQJ56WtCWrDrAorXHU3OTZFCeelrglnw6BvCitcdTc5NzAJ56WwCWfDoG8KK1x1Nzk3MwnnpbMJY2jEm24KK1x1Nzk3NgnnpbYJYseQbgorXHU3OTgxCeemgQlqw6xuCitcdTc5ODIJ56aCCWNow6FuCitcdTc5ODYJ56aGCWLEk2kKK1x1Nzk4OAnnpogJY2jHjm8KK1x1Nzk4QQnnpooJeMOsCitcdTc5OEYJ56aPCWbDugorXHU3OTkwCeemkAl5dcOgbgorXHU3OTk1CeemlQl5xKsKK1x1Nzk5RAnnpp0JasOtCitcdTc5QTcJ56anCXjHkAorXHU3OUE4CeemqAlqxKsKK1x1NzlBOQnnpqkJc2jDoG4KK1x1NzlBQQnnpqoJY2jDoW4KK1x1NzlBQgnnpqsJdMeObgorXHU3OUFDCeemrAlndcOsCitcdTc5QUQJ56atCW3DrQorXHU3OUIwCeemsAltw60KK1x1NzlCMQnnprEJZMeObworXHU3OUJCCeemuwlsw60KK1x1NzlCQwnnprwJeGnDqAorXHU3OUM4CeeniAl4acSBbgorXHU3OUNECeenjQl6aMeSbmcKK1x1NzlDRQnnp44JZsOpbgorXHU3OUQyCeenkgltaceObworXHU3OUQ1CeenlQlix5AKK1x1NzlENwnnp5cJYsOsCitcdTc5RDkJ56eZCWvDuQorXHU3OURECeennQlqxasKK1x1NzlFMAnnp6AJcMSrCitcdTc5RTQJ56ekCWNow6huZworXHU3OUU1CeenpQluacOhbgorXHU3OUVDCeenrAlqw7kKK1x1NzlFRgnnp68JasSrCitcdTc5RjEJ56exCWPDrQorXHU3OUY3Ceentwl6aMOtCitcdTc5RjkJ56e5CWNox5AKK1x1NzlGQwnnp7wJZ8OgbworXHU3QTAyCeeogglsw6FuZworXHU3QTA0CeeohAl0dcOgbgorXHU3QTA2CeeohglqxKtuZworXHU3QTBBCeeoigl0w60KK1x1N0EwRQnnqI4Jc2h1w6wKK1x1N0EwRgnnqI8JbMOobmcKK1x1N0ExRAnnqJ0JaHXDoAorXHU3QTFGCeeonwlix5BuZworXHU3QTIwCeeooAljaMOzdQorXHU3QTIxCeeooQlsw7zEmworXHU3QTI2CeeopgljaMOzbmcKK1x1N0EyRQnnqK4JemjHkm5nCitcdTdBMkYJ56ivCWNow6huCitcdTdBMzEJ56ixCWNow6huCitcdTdBMzIJ56iyCWTDoG8KK1x1N0EzNgnnqLYJecO5CitcdTdBMzgJ56i4CWJpxIFuCitcdTdBM0EJ56i6CXHHkAorXHU3QTNECeeovQlqxKsKK1x1N0EzRQnnqL4JZ8eObworXHU3QTQxCeepgQljx45uCitcdTdBNDgJ56mICW3DqW4KK1x1N0E0OQnnqYkJemjDrAorXHU3QTVFCeepnglrdcOgbmcKK1x1N0E2RAnnqa0JbMeaCitcdTdBNzEJ56mxCWp1w6kKK1x1N0E3NAnnqbQJeHXDqQorXHU3QTc1CeeptQl3xIEKK1x1N0E3NgnnqbYJamnFqworXHU3QTc3CeeptwlxacOzbmcKK1x1N0E3OQnnqbkJcWnDs25nCitcdTdBN0EJ56m6CWvFjW5nCitcdTdBN0IJ56m7CXTDum4KK1x1N0E4MQnnqoEJdMWrCitcdTdBODIJ56qCCWzDoW8KK1x1N0E4NQnnqoUJeceObworXHU3QTg5CeeqiQlix5BuZworXHU3QThDCeeqjAlqacOgbworXHU3QTkxCeeqkQl5w6FvCitcdTdBOTMJ56qTCWNodcSBbmcKK1x1N0E5NAnnqpQJeceObworXHU3QTk1CeeqlQl0aceObworXHU3QTk2CeeqlglqacOgbworXHU3QTk3CeeqlwljaHXEgW5nCitcdTdBOTgJ56qYCWppx5JuZworXHU3QUE0CeeqpAlndcSBbgorXHU3QUE2Ceeqpglkw7J1CitcdTdBQTgJ56qoCXjFq24KK1x1N0FBOQnnqqkJd8WNCitcdTdBQUQJ56qtCWrDuQorXHU3QUFFCeeqrglxacOzbmcKK1x1N0FCMgnnqrIJY2jDoW8KK1x1N0FCNAnnqrQJdGnDoW4KK1x1N0FCNwnnqrcJa3XHkAorXHU3QUJCCeequwljaHXEgW5nCitcdTdBQkUJ56q+CWt1x45uCitcdTdBQzUJ56uFCXFpw6BvCitcdTdBQzgJ56uICXfDqGkKK1x1N0FDQwnnq4wJY2jDuQorXHU3QUQxCeerkQlow7NuZworXHU3QUQ4CeermAlqx5QKK1x1N0FEOQnnq5kJemjDoG4KK1x1N0FEQQnnq5oJYsOgbmcKK1x1N0FERQnnq54JasOsbmcKK1x1N0FFMQnnq6EJecSrCitcdTdBRTYJ56umCXPHkm5nCitcdTdBRkIJ56u7CWfHjm4KK1x1N0IwMAnnrIAJbcOhbmcKK1x1N0IxMAnnrJAJZ8SBbmcKK1x1N0IxMQnnrJEJeGnDoG8KK1x1N0IyNQnnrKUJc8OsCitcdTdCMkYJ56yvCWbDoW4KK1x1N0IzMgnnrLIJZsOhbgorXHU3QjMzCeesswlqacSBCitcdTdCMzUJ56y1CWbDoG4KK1x1N0IzRQnnrL4JYmnEgW4KK1x1N0I0OQnnrYkJZMSbbmcKK1x1N0I0QwnnrYwJcXXDoW4KK1x1N0I1MgnnrZIJdMeSbmcKK1x1N0I1MwnnrZMJZMSBCitcdTdCNTQJ562UCWTDoQorXHU3QjU1CeetlQlow6FuZworXHU3QjU2Ceetlgljw6gKK1x1N0I2MQnnraEJamnDoG4KK1x1N0I2OAnnragJaMOhbgorXHU3QjY5CeetqQl0x5JuZworXHU3QjZBCeetqglqacSBCitcdTdCNzUJ5621CXnDoW4KK1x1N0I4NQnnroUJYsOsCitcdTdCODgJ566ICWNow60KK1x1N0I4OQnnrokJZ3XHjmkKK1x1N0I5MQnnrpEJc2jDoAorXHU3QjkyCeeukglkw6EKK1x1N0I5QgnnrpsJZ8WrCitcdTdCQTMJ566jCWPDqAorXHU3QkFDCeeurAlydcOyCitcdTdCQUQJ566tCWppw6BuCitcdTdCQjUJ5661CXNoxJtuZworXHU3QkI2Ceeutglow7oKK1x1N0JCOQnnrrkJc2h1w7IKK1x1N0JCRQnnrr4Jc2h1w7IKK1x1N0JCRgnnrr8JasOtCitcdTdCQzEJ56+BCWh1w6FuZworXHU3QkM2Ceevhgl6aHXDoG4KK1x1N0JDQQnnr4oJaMOzbmcKK1x1N0JFMwnnr6MJcMOhbmcKK1x1N0JFNAnnr6QJZMeUCitcdTdCRTcJ56+nCXpodcOzCitcdTdCRUEJ56+qCWNow60KK1x1N0JGMwnnr7MJYsOsCitcdTdCRjkJ56+5CXpodcOgbgorXHU3QkZBCeevuglww6FpCitcdTdCRkMJ56+8CWTFjXUKK1x1N0MwMAnnsIAJesOpCitcdTdDMDEJ57CBCWNodcOyCitcdTdDMDgJ57CICXDDrW5nCitcdTdDMEEJ57CKCWrEqworXHU3QzBFCeewjgl4aceObworXHU3QzE5CeewmQliw7MKK1x1N0MxRQnnsJ4JZMSBbgorXHU3QzI1CeewpQlqacSBbworXHU3QzJCCeewqwl4acSBbworXHU3QzJDCeewrAlsw7kKK1x1N0MyRAnnsK0Jc2jDrAorXHU3QzMwCeewsAlww6FpCitcdTdDMzIJ57CyCWfHjm4KK1x1N0MzNAnnsLQJasO5CitcdTdDMzYJ57C2CWLHkgorXHU3QzM4CeewuAlix5IKK1x1N0MzOQnnsLkJZMSBbmcKK1x1N0MzQwnnsLwJYsO5CitcdTdDM0YJ57C/CWLDuQorXHU3QzQwCeexgAl6aMOydQorXHU3QzRCCeexiwltw60KK1x1N0M0RAnnsY0JasOtCitcdTdDNTAJ57GQCXTDqW5nCitcdTdDNTIJ57GSCWbDoW4KK1x1N0M1NAnnsZQJc8eSdQorXHU3QzU1CeexlQlsx5JuZworXHU3QzYyCeexoglqx5QKK1x1N0M2OAnnsagJbGnDoW4KK1x1N0M3MgnnsbIJecO5CitcdTdDNzMJ57GzCW3HkAorXHU3Qzc1CeextQlmw6FuCitcdTdDNzkJ57G5CW7HmgorXHU3QzdCCeexuwlsw6hpCitcdTdDN0MJ57G8CXhpxIFuCitcdTdDOTgJ57KYCW5pw6FuCitcdTdDOTkJ57KZCXjEqworXHU3QzlFCeeyngl4xKsKK1x1N0M5Rgnnsp8Jc8O5CitcdTdDQTMJ57KjCWPDqAorXHU3Q0E0CeeypAl5w7kKK1x1N0NBNgnnsqYJbMOtbgorXHU3Q0E3Ceeypwl6aHXEgW5nCitcdTdDQUEJ57KqCWbDqG4KK1x1N0NCMQnnsrEJbGnDoW5nCitcdTdDQjQJ57K0CWzHkAorXHU3Q0JBCeeyugliw6BpCitcdTdDQkQJ57K9CXrDsm5nCitcdTdDQkYJ57K/CWd1x5IKK1x1N0NDMgnns4IJcsOzdQorXHU3Q0M2CeezhgloxasKK1x1N0NDQQnns4oJaMO6CitcdTdDQ0IJ57OLCWppw6BuCitcdTdDQ0QJ57ONCWPDrQorXHU3Q0NFCeezjglsw60KK1x1N0NENQnns5UJZ8SBbworXHU3Q0RECeeznQlzx45uCitcdTdDREUJ57OeCWbDqG4KK1x1N0NFNAnns6QJY2jDrAorXHU3Q0U3CeezpwlsacOhbmcKK1x1N0NFOQnns6kJa3XDoGkKK1x1N0NGQgnns7sJeMOsCitcdTdDRkMJ57O8CWfFjW5nCitcdTdDRkYJ57O/CWrHkAorXHU3RDAxCee0gQljaMOgCitcdTdEMDQJ57SECXnEgW8KK1x1N0QwNQnntIUJaMOzbmcKK1x1N0QwNgnntIYJecWrCitcdTdEMDcJ57SHCWfEkworXHU3RDA4Cee0iAl3w6FuCitcdTdEMEIJ57SLCXfDqW4KK1x1N0QwQwnntIwJasOsCitcdTdEMTMJ57STCXNoxasKK1x1N0QxNQnntJUJcMSrCitcdTdEMTYJ57SWCXnHkG4KK1x1N0QxNwnntJcJc2jEgQorXHU3RDE4Cee0mAlow7NuZworXHU3RDFECee0nQlyw6huCitcdTdEMUUJ57SeCWTHjm4KK1x1N0QyMAnntKAJc8O5CitcdTdEMjIJ57SiCXN1x5IKK1x1N0QyNAnntKQJamnHlAorXHU3RDI3Cee0pwljaMWNdQorXHU3RDJECee0rQlow7NuZworXHU3RDJFCee0rgl6xIEKK1x1N0QyRgnntK8JbMOoaQorXHU3RDMwCee0sAl4w6wKK1x1N0QzMwnntLMJc2jEk24KK1x1N0QzQQnntLoJZ8OgbgorXHU3RDNECee0vQl0dcOzCitcdTdEM0YJ57S/CWTDoGkKK1x1N0Q0MAnntYAJY2jDuQorXHU3RDQxCee1gQlxxasKK1x1N0Q0NQnntYUJamnHkm5nCitcdTdENDgJ57WICW3DsgorXHU3RDRFCee1jglow6FuZworXHU3RDRGCee1jwl4acOoCitcdTdENTAJ57WQCWppxJMKK1x1N0Q1MQnntZEJZ8OobmcKK1x1N0Q1QgnntZsJdMSBbworXHU3RDVDCee1nAlqacOpCitcdTdENUQJ57WdCWvDuQorXHU3RDVGCee1nwlsw6BvCitcdTdENjEJ57WhCWzDoG8KK1x1N0Q2MgnntaIJeHXDoG4KK1x1N0Q2MwnntaMJYsSTbmcKK1x1N0Q2NAnntaQJYsOoaQorXHU3RDY2Cee1pglnxJtpCitcdTdENjcJ57WnCWp1w6BuCitcdTdENkUJ57WuCXjDuQorXHU3RDZGCee1rwlnxIFpCitcdTdENzAJ57WwCWRpw6kKK1x1N0Q3QQnntboJY2jEqworXHU3RDdDCee1vAl6aMSbbgorXHU3RDdECee1vQlsx5oKK1x1N0Q4NAnntoQJaHXHjm4KK1x1N0Q4NQnntoUJccSrbgorXHU3RDg2Cee2hglnxJtuZworXHU3RDg3Cee2hwl0w6wKK1x1N0Q4OQnntokJdMOydQorXHU3RDhBCee2igl0w61uZworXHU3RDhGCee2jwlzdcOtCitcdTdEOTAJ57aQCWR1w6wKK1x1N0Q5NAnntpQJaMO5CitcdTdEOUMJ57acCXrFjW5nCitcdTdEOUQJ57adCWNoxJNuCitcdTdEOUUJ57aeCWR1x5IKK1x1N0RBMAnntqAJbMecCitcdTdEQTEJ57ahCWRpw6BvCitcdTdEQTMJ57ajCXF1x45uCitcdTdEQUIJ57arCXhpw6BuCitcdTdEQUUJ57auCXHHkAorXHU3REFGCee2rwl0w6FvCitcdTdEQjAJ57awCXfHjm4KK1x1N0RCNAnntrQJY2h1w7IKK1x1N0RCNQnntrUJY8eOaQorXHU3REI5Cee2uQlsaceUCitcdTdEQkIJ57a7CXpow6BuCitcdTdEQkQJ57a9CWNodcOyCitcdTdEQkUJ57a+CWzDrW5nCitcdTdEQzIJ57eCCXTEgW4KK1x1N0RDMwnnt4MJaMO6bgorXHU3REM1Cee3hQl6xY11CitcdTdEQzcJ57eHCXrEqworXHU3REQxCee3kQlqxKsKK1x1N0RERAnnt50JccSrCitcdTdEREUJ57eeCWR1w6BuCitcdTdERTIJ57eiCW1pw6FvCitcdTdERTQJ57ekCWJpx45uCitcdTdERTkJ57epCWh1x45uCitcdTdERUIJ57erCWPFjW5nCitcdTdERUMJ57esCW1px45uCitcdTdERjYJ57e2CWJpw6BuCitcdTdERjcJ57e3CWd1xY0KK1x1N0RGQgnnt7sJemjDrAorXHU3REZECee3vQljaMSTbmcKK1x1N0UwMwnnuIMJeMWrCitcdTdFMTEJ57iRCWppxIFuCitcdTdFMTQJ57iUCXNodceObmcKK1x1N0UxNQnnuJUJecWrbgorXHU3RTE2Cee4lgljdcSrCitcdTdFMTcJ57iXCWN1xKsKK1x1N0UxOAnnuJgJY2jEk24KK1x1N0UxRAnnuJ0JemjEm24KK1x1N0UxRQnnuJ4JZ8eObworXHU3RTIwCee4oAlow7oKK1x1N0UyMgnnuKIJdMOpbmcKK1x1N0UyNAnnuKQJY8OzbmcKK1x1N0UyNwnnuKcJZsOobmcKK1x1N0UyQgnnuKsJZsOpbmcKK1x1N0UyQwnnuKwJY8O5CitcdTdFMkYJ57ivCXnHjm4KK1x1N0UzMAnnuLAJY8OzbmcKK1x1N0UzMQnnuLEJesWNbmcKK1x1N0UzMgnnuLIJbMOpaQorXHU3RTM0Cee4tAlxacOgbgorXHU3RTM1Cee4tQltw6BuCitcdTdFMzcJ57i3CWzHmgorXHU3RTM5Cee4uQlwaceObworXHU3RTNBCee4uglsacOhbgorXHU3RTNFCee4vglqxKsKK1x1N0U0MgnnuYIJYsSbbmcKK1x1N0U0MwnnuYMJYsSTbmcKK1x1N0U0NAnnuYQJecSrCitcdTdFNDYJ57mGCW1pw6BvCitcdTdFNDcJ57mHCXnDoW8KK1x1N0U0OAnnuYgJcWnHjm5nCitcdTdFNDkJ57mJCWjDum4KK1x1N0U1MAnnuZAJc3XDrAorXHU3RTUxCee5kQljw6luZworXHU3RTUyCee5kgl6xJNuZworXHU3RTUzCee5kwl6aMOsCitcdTdFNTUJ57mVCXNow6BuCitcdTdFNTkJ57mZCWbEgW4KK1x1N0U1QQnnuZoJbGnDoW8KK1x1N0U1QgnnuZsJY2jEgW8KK1x1N0U1QwnnuZwJesWrbgorXHU3RTVECee5nQlqacOgbgorXHU3RTVGCee5nwljaMeObgorXHU3RTYzCee5owlodcOgCitcdTdFNjgJ57moCWTDoQorXHU3RTY5Cee5qQlzaMOpbmcKK1x1N0U2QQnnuaoJaHXDrAorXHU3RTZCCee5qwl4w6wKK1x1N0U2QwnnuawJaHXDoG4KK1x1N0U3MAnnubAJcWnEgW8KK1x1N0U3MQnnubEJY8WNbmcKK1x1N0U3NAnnubQJYsOsCitcdTdFNzUJ57m1CWNow6FuCitcdTdFN0EJ57m6CXLDugorXHU3RTdDCee5vAlqw6wKK1x1N0U4MQnnuoEJeMWrbgorXHU3RTgzCee6gwlsxJtpCitcdTdFOEUJ57qOCXLDoW5nCitcdTdFOTYJ57qWCXhpxIFuCitcdTdFOTcJ57qXCWzDrQorXHU3RTlCCee6mwlkw6BvCitcdTdFOUMJ57qcCWppx45vCitcdTdFQTEJ57qhCXnFqworXHU3RUEyCee6oglow7NuZworXHU3RUEzCee6owl6aMOydQorXHU3RUE1Cee6pQlnxJMKK1x1N0VBNgnnuqYJeXXEkworXHU3RUFCCee6qwlyw6huCitcdTdFQjAJ57qwCWLHkAorXHU3RUIxCee6sQlzaMSBCitcdTdFQjUJ57q1CXrDsm5nCitcdTdFQjYJ57q2CWzDum4KK1x1N0VCNwnnurcJZsSTbgorXHU3RUJCCee6uwl6aMOobgorXHU3RUJECee6vQluaceUCitcdTdFQzIJ57uCCWbDugorXHU3RUM4Cee7iAl6aMWNbmcKK1x1N0VDRAnnu40Jc2jDoG8KK1x1N0VEMAnnu5AJZMOgaQorXHU3RUQ0Cee7lAlrw7kKK1x1N0VENgnnu5YJZGnDqQorXHU3RUQ4Cee7mAlodcOsCitcdTdFREEJ57uaCXh1w6BuCitcdTdFREQJ57udCWp1w6kKK1x1N0VFNgnnu6YJdMSBbworXHU3RUU5Cee7qQlqxKsKK1x1N0VGMQnnu7EJbceQbgorXHU3RUY0Cee7tAl3w6lpCitcdTdFRjgJ57u4CWNow7N1CitcdTdFRjkJ57u5CXTDoW8KK1x1N0VGQQnnu7oJbGnHlAorXHU3RUZECee7vQl6aMOgbgorXHU3RjAwCee8gAl6aHXDrAorXHU3RjAxCee8gQl6xKsKK1x1N0YwQQnnvIoJd8STbgorXHU3RjBCCee8iwlodcOsCitcdTdGMTAJ57yQCWJpw6BuCitcdTdGMTcJ57yXCW3DrW4KK1x1N0YxOQnnvJkJasOsbgorXHU3RjFECee8nQlmw6luZworXHU3RjFFCee8ngljdcSrCitcdTdGMUYJ57yfCWfHjm8KK1x1N0YyNgnnvKYJbcOgbgorXHU3RjJBCee8qgltacO5CitcdTdGMkIJ57yrCXPEgW8KK1x1N0YyQwnnvKwJY8OpbmcKK1x1N0YzMAnnvLAJamnEgW5nCitcdTdGMzMJ57yzCWh1w6FuCitcdTdGMzQJ57y0CWppx45vCitcdTdGMzUJ57y1CWd1w6BuCitcdTdGMzcJ57y3CXhpw6gKK1x1N0YzOQnnvLkJZseSdQorXHU3RjQxCee9gQlnxIFuZworXHU3RjU1Cee9lQlox45uCitcdTdGNTcJ572XCWx1w7MKK1x1N0Y1OAnnvZgJZsO6CitcdTdGNTkJ572ZCW3DrQorXHU3RjVBCee9mglmw6EKK1x1N0Y1QwnnvZwJamnEkworXHU3RjVFCee9nglixIEKK1x1N0Y2MwnnvaMJZ3XDoAorXHU3RjY2Cee9pglmw7oKK1x1N0Y2NwnnvacJbMOtbgorXHU3RjY4Cee9qAl5x45uCitcdTdGNkMJ572sCWzHjm4KK1x1N0Y3MgnnvbIJc2jHlAorXHU3Rjc3Cee9twliw6AKK1x1N0Y3OAnnvbgJZsOhCitcdTdGN0MJ5728CWLDrAorXHU3RjgwCee+gAlsaceUCitcdTdGODYJ576GCXDDrQorXHU3RjhCCee+iwltx5AKK1x1N0Y4RQnnvo4JbcSbaQorXHU3RjlDCee+nAl6aMO5CitcdTdGOUUJ576eCXhpxasKK1x1N0ZBMAnnvqAJeGnDoG4KK1x1N0ZBMgnnvqIJcsOzbmcKK1x1N0ZBNQnnvqUJcWnHjm5nCitcdTdGQTYJ576mCWh1w6FuCitcdTdGQTcJ576nCXN1xY0KK1x1N0ZBOAnnvqgJeGnDoG4KK1x1N0ZBOQnnvqkJecOsCitcdTdGQUYJ576vCWppw6kKK1x1N0ZCOQnnvrkJZ8STbmcKK1x1N0ZCQQnnvroJaMO5CitcdTdGQkUJ576+CWNoxY1uZworXHU3RkMwCee/gAljaMWNbmcKK1x1N0ZDMQnnv4EJd8STbmcKK1x1N0ZDMgnnv4IJZsSTbgorXHU3RkNDCee/jAl5w6wKK1x1N0ZEMAnnv5AJcWnDoG8KK1x1N0ZEOQnnv5kJaHXDrAorXHU3RkRCCee/mwlzaMO5CitcdTdGREMJ57+cCXPDqAorXHU3RkRECee/nQlow7NuZworXHU3RkRGCee/nwlkw60KK1x1N0ZFMAnnv6AJY3XDrAorXHU3RkU5Cee/qQlwacSBbgorXHU3RkVDCee/rAlodcSrCitcdTdGRUYJ57+vCWjDqAorXHU3RkYwCee/sAlow6BuCitcdTdGRkEJ57+6CcOhbworXHU4MDA2CeiAhglxw60KK1x1ODAwNwnogIcJZ8eSdQorXHU4MDBECeiAjQlzaHXHjgorXHU4MDEwCeiAkAluw6BpCitcdTgwMTEJ6ICRCXpodcSBbgorXHU4MDEyCeiAkglsxJtpCitcdTgwMTgJ6ICYCXnDum4KK1x1ODAxOQnogJkJYsOgCitcdTgwMUEJ6ICaCWh1xY0KK1x1ODAyMQnogKEJY2jDugorXHU4MDI1CeiApQlsx5J1CitcdTgwMjkJ6ICpCWppx45uZworXHU4MDJECeiArQlqxKsKK1x1ODAzNAnogLQJZMSrbmcKK1x1ODAzNgnogLYJecSTCitcdTgwMzcJ6IC3CWTEgQorXHU4MDM4CeiAuAlzx5JuZworXHU4MDQyCeiBggluacOoCitcdTgwNDMJ6IGDCWTEgW4KK1x1ODA0QgnogYsJbMOzbmcKK1x1ODA0RAnogY0JbsOtbmcKK1x1ODA0RQnogY4JZ3XFjQorXHU4MDU0CeiBlAlsacOhbgorXHU4MDU5CeiBmQlqxKtuZworXHU4MDVGCeiBnwl4w7kKK1x1ODA3MgnogbIJc2jEk25nCitcdTgwNzcJ6IG3CXpow60KK1x1ODA3OAnogbgJZMSBbgorXHU4MDdBCeiBuglqw60KK1x1ODA3QwnogbwJdMSrbmcKK1x1ODA3RAnogb0JdMSrbmcKK1x1ODA3RQnogb4JbMOzbmcKK1x1ODA4NQnogoUJc8O5CitcdTgwODcJ6IKHCXpow6BvCitcdTgwOEEJ6IKKCWrEq24KK1x1ODA4QgnogosJbMOoaQorXHU4MDhDCeiCjAlqxKsKK1x1ODA4RAnogo0JcWnDugorXHU4MDk3CeiClwlkx5QKK1x1ODA5QQnogpoJZMO5CitcdTgwOUIJ6IKbCWfEgW5nCitcdTgwOUQJ6IKdCWfEgW4KK1x1ODBBMwnogqMJYseQCitcdTgwQTYJ6IKmCWLEgW4KK1x1ODBBNwnogqcJcMSTaQorXHU4MEFBCeiCqglmw6FuZworXHU4MEFDCeiCrAlux5wKK1x1ODBBRQnogq4JxIFuZworXHU4MEFGCeiCrwlrxJtuCitcdTgwQjMJ6IKzCXHDrQorXHU4MEI2CeiCtglww60KK1x1ODBCOAnogrgJeMOsCitcdTgwQjkJ6IK5CWLDrAorXHU4MEJBCeiCuglmw6hpCitcdTgwQkIJ6IK7CWNoxJNuCitcdTgwQzIJ6IOCCXNow6huCitcdTgwQzMJ6IODCXfDqGkKK1x1ODBDNwnog4cJYsSTaQorXHU4MENDCeiDjAliw6hpCitcdTgwQ0QJ6IONCWd1xIEKK1x1ODBDRQnog44JdMSBaQorXHU4MEQwCeiDkAlrxasKK1x1ODBEMQnog5EJemjEqworXHU4MEQyCeiDkglmxasKK1x1ODBENgnog5YJcMOgbmcKK1x1ODBENwnog5cJemjEk24KK1x1ODBEOAnog5gJc2jEk25nCitcdTgwREMJ6IOcCXNow6huZworXHU4MERECeiDnQl6aMSrCitcdTgwREUJ6IOeCWLEgW8KK1x1ODBERgnog58JY2jHkAorXHU4MEU0CeiDpAl5w6xuCitcdTgwRTYJ6IOmCWvEk25nCitcdTgwRUMJ6IOsCW7DugorXHU4MEVECeiDrQl5xIFuCitcdTgwRjAJ6IOwCXnDrQorXHU4MEYyCeiDsglox45pCitcdTgwRjMJ6IOzCWfEkworXHU4MEY0CeiDtAlkw7JuZworXHU4MEY2CeiDtglqacSBbworXHU4MEY3CeiDtwnDoG4KK1x1ODBGQQnog7oJw6BuCitcdTgwRkIJ6IO7CWjDqW5nCitcdTgwRkMJ6IO8CXBpw6FuCitcdTgwRkUJ6IO+CXrDrAorXHU4MTAxCeiEgQl0aceObworXHU4MTAyCeiEggl6aMSrCitcdTgxMDMJ6ISDCWN1w6wKK1x1ODEwNgnohIYJY3XDrAorXHU4MTA4CeiEiAltw6BpCitcdTgxMDkJ6ISJCW3DoGkKK1x1ODEwQQnohIoJasOtCitcdTgxMEQJ6ISNCWt1w6BpCitcdTgxMTAJ6ISQCWrEqworXHU4MTE1CeiElQl3x45uCitcdTgxMTYJ6ISWCWLDsworXHU4MTE5CeiEmQlqdcOpCitcdTgxMUIJ6ISbCWrDrG5nCitcdTgxMUMJ6IScCXFpxJMKK1x1ODExRgnohJ8JbMOoCitcdTgxMjAJ6ISgCWNoxIFuCitcdTgxMjEJ6IShCXTHkG5nCitcdTgxMjUJ6ISlCXFpx45uCitcdTgxMjcJ6ISnCWp1xIFuCitcdTgxMjgJ6ISoCWPDuQorXHU4MTJBCeiEqgl0dcOsCitcdTgxMkMJ6ISsCXDEgW8KK1x1ODEyRAnohK0JY2jDqW5nCitcdTgxMkYJ6ISvCWbHlAorXHU4MTMwCeiEsAlkw7J1CitcdTgxMzcJ6IS3CWNow6FuZworXHU4MTNBCeiEugljdcOsCitcdTgxM0UJ6IS+CXDDrQorXHU4MTNGCeiEvwliacSBbworXHU4MTQwCeiFgAlqdcOgbgorXHU4MTQ0CeiFhAljaHXDoWkKK1x1ODE0NQnohYUJZMOgbgorXHU4MTRCCeiFiwl5w6gKK1x1ODE0QwnohYwJecSBbgorXHU4MTRECeiFjQlyxJtuCitcdTgxNEUJ6IWOCXNow6huCitcdTgxNTAJ6IWQCWbHlAorXHU4MTU1CeiFlQl3w6BuCitcdTgxNTgJ6IWYCcOpcgorXHU4MTVFCeiFnglkw7luCitcdTgxNUYJ6IWfCWx1w7MKK1x1ODE2MgnohaIJbsOgbworXHU4MTY3CeiFpwlzaMO5CitcdTgxNjgJ6IWoCWNodceObgorXHU4MTcyCeiFsglqdcOpCitcdTgxNzMJ6IWzCWppx45vCitcdTgxNzQJ6IW0CXnDugorXHU4MTgwCeiGgAlix45uZworXHU4MTgxCeiGgQlsacOhbgorXHU4MTgyCeiGgglsx5oKK1x1ODE4QgnohosJbGnDoW8KK1x1ODE5MAnohpAJYmnEgW8KK1x1ODE5OAnohpgJYmnEgW8KK1x1ODE5OQnohpkJamnHjm5nCitcdTgxOUMJ6IacCW3DsworXHU4MTlECeiGnQl4xKsKK1x1ODE5Rgnohp8JbMecCitcdTgxQTEJ6IahCWxpw7oKK1x1ODFBMwnohqMJbMOsbgorXHU4MUE2CeiGpglsw6xuCitcdTgxQTcJ6IanCXDDqG5nCitcdTgxQTkJ6IapCW7DrAorXHU4MUFCCeiGqwlsacOhbworXHU4MUIyCeiGsgloxasKK1x1ODFCNAnohrQJaMWrCitcdTgxQjUJ6Ia1CWN1w6wKK1x1ODFCQgnohrsJc2jEgW4KK1x1ODFCQwnohrwJYsOoaQorXHU4MUMzCeiHgwl5xY1uZworXHU4MUM0CeiHhAlqdcOpCitcdTgxQzcJ6IeHCWp1x45uCitcdTgxQ0EJ6IeKCXPEgW8KK1x1ODFDQgnoh4sJw6lyCitcdTgxRDIJ6IeSCWh1w7IKK1x1ODFENgnoh5YJbMeaCitcdTgxREIJ6IebCWh1w7IKK1x1ODFERAnoh50JbHXHkgorXHU4MUUzCeiHowljaMOpbgorXHU4MUU3CeiHpwl6xIFuZworXHU4MUU4CeiHqAlsw61uCitcdTgxRTkJ6IepCWd1w6BuZworXHU4MUVECeiHrQljaMOydQorXHU4MUVFCeiHrglkacOpCitcdTgxRjQJ6Ie0CXpow6wKK1x1ODFGNQnoh7UJZ8OpCitcdTgxRjcJ6Ie3CWRpw6kKK1x1ODFGQgnoh7sJemjEk24KK1x1ODFGRgnoh78JY2jEgQorXHU4MjAzCeiIgwlxaceObworXHU4MjA0CeiIhAl4w6wKK1x1ODIwNQnoiIUJamnDuQorXHU4MjA3CeiIhwl5w7oKK1x1ODIwOAnoiIgJeMSrbmcKK1x1ODIwOQnoiIkJaseUCitcdTgyMEMJ6IiMCXNow6kKK1x1ODIwRAnoiI0Jc2jEmworXHU4MjBGCeiIjwlqaceUCitcdTgyMTMJ6IiTCXNow6wKK1x1ODIxNQnoiJUJZMOgbgorXHU4MjE2CeiIlglww7kKK1x1ODIxNwnoiJcJcMWrCitcdTgyMTgJ6IiYCWd1x45uCitcdTgyMUIJ6IibCWNodceObgorXHU4MjIyCeiIoglzaMSBbgorXHU4MjJECeiIrQlix5AKK1x1ODIyRgnoiK8JemjFjW5nCitcdTgyMzQJ6Ii0CXrDqQorXHU4MjM2CeiItgliw7MKK1x1ODIzQQnoiLoJeGnDoQorXHU4MjNCCeiIuwlsw7oKK1x1ODIzQwnoiLwJaMOzbmcKK1x1ODI0NQnoiYUJbcO5CitcdTgyNTMJ6ImTCWRpw6kKK1x1ODI1OAnoiZgJc8WNdQorXHU4MjU5CeiJmQljxIFuZworXHU4MjYxCeiJoQlkxIFuZworXHU4MjZDCeiJrAljaMOhbgorXHU4MjZGCeiJrwlsacOhbmcKK1x1ODI3MAnoibAJamnEgW4KK1x1ODI3MgnoibIJc8OoCitcdTgyNzMJ6ImzCXnDoG4KK1x1ODI3NQnoibUJcMOtbmcKK1x1ODI3OQnoibkJY8eObworXHU4MjdDCeiJvAlkx5BuZworXHU4MjdECeiJvQlqacSBbworXHU4MjdFCeiJvgnDoGkKK1x1ODI3Rgnoib8JbseOaQorXHU4MjgwCeiKgAlqacSTCitcdTgyODMJ6IqDCXDDqW5nCitcdTgyODcJ6IqHCW3HkAorXHU4Mjg5CeiKiQlnxIFuCitcdTgyOEIJ6IqLCXnDuQorXHU4MjhDCeiKjAl4xasKK1x1ODI4RAnoio0Jc2jDoW8KK1x1ODI4RQnoio4JcWnFjW5nCitcdTgyOEYJ6IqPCWTDuQorXHU4MjkwCeiKkAlow7kKK1x1ODI5MQnoipEJcceQCitcdTgyOTMJ6IqTCXrHkAorXHU4Mjk0CeiKlAlodceQCitcdTgyOTUJ6IqVCXN1xKsKK1x1ODI5NgnoipYJeGnHjm5nCitcdTgyOTgJ6IqYCXDDrQorXHU4Mjk5CeiKmQlmw7oKK1x1ODJBMAnoiqAJZsOzdQorXHU4MkEzCeiKowlmw7N1CitcdTgyQTQJ6IqkCWvFjXUKK1x1ODJBNgnoiqYJbMO6CitcdTgyQTcJ6IqnCXjDuQorXHU4MkE4CeiKqAlqxKsKK1x1ODJBOQnoiqkJccOtbgorXHU4MkFBCeiKqgljaMOtCitcdTgyQUIJ6IqrCXl1w6FuCitcdTgyQUMJ6IqsCWbEk24KK1x1ODJBRAnoiq0JYsSBCitcdTgyQUUJ6IquCXJ1w6wKK1x1ODJBRgnoiq8JeMSrbgorXHU4MkIwCeiKsAlqw6wKK1x1ODJCNQnoirUJanXDqQorXHU4MkI5CeiKuQlxw61uCitcdTgyQkQJ6Iq9CXnDoQorXHU4MkJFCeiKvglmw6hpCitcdTgyQkYJ6Iq/CWh1w6FuCitcdTgyQ0MJ6IuMCWPHjm5nCitcdTgyQ0UJ6IuOCW3DqW5nCitcdTgyQ0YJ6IuPCXPFqworXHU4MkQxCeiLkQl5dcOgbgorXHU4MkQyCeiLkglyx45uCitcdTgyRDQJ6IuUCXTDoWkKK1x1ODJENQnoi5UJdGnDoW8KK1x1ODJENgnoi5YJbWnDoW8KK1x1ODJEOQnoi5kJbMOsCitcdTgyREMJ6IucCW3DuQorXHU4MkRGCeiLnwlnx5J1CitcdTgyRTAJ6IugCW3DrW4KK1x1ODJFMgnoi6IJcceUCitcdTgyRTQJ6IukCXBpxJsKK1x1ODJFNQnoi6UJcnXDsgorXHU4MkU2CeiLpglrx5QKK1x1ODJFNwnoi6cJemjDuQorXHU4MkU4CeiLqAljaMSBbgorXHU4MkVDCeiLrAlxacO6CitcdTgyRjIJ6IuyCXpox44KK1x1ODJGMwnoi7MJZMWNbmcKK1x1ODJGNQnoi7UJZGnDqQorXHU4MkZBCeiLugltw6lpCitcdTgyRkIJ6Iu7CWbDugorXHU4MkZDCeiLvAliw7MKK1x1ODMwMQnojIEJemh1w7MKK1x1ODMwMgnojIIJbcOgbworXHU4MzA3CeiMhwliw6EKK1x1ODMwOAnojIgJY8OtCitcdTgzMDkJ6IyJCW3DsgorXHU4MzBCCeiMiwlkx5AKK1x1ODMwRAnojI0JZ8eSdQorXHU4MzE3CeiMlwltw61uZworXHU4MzE4CeiMmAlqacOgbgorXHU4MzFDCeiMnAlxacOgbgorXHU4MzFECeiMnQljaMeOaQorXHU4MzFFCeiMngljaMOpbgorXHU4MzIxCeiMoQlkdcWNCitcdTgzMjUJ6IylCWd1xKsKK1x1ODMyOAnojKgJY8OtCitcdTgzMkEJ6IyqCWd1xIFuZworXHU4MzJDCeiMrAljaMOhCitcdTgzMkQJ6IytCWppxIFvCitcdTgzMkUJ6IyuCWPEqworXHU4MzMzCeiMswlqacSBbmcKK1x1ODMzOAnojLgJcsOzbmcKK1x1ODMzOQnojLkJcsO6CitcdTgzNDQJ6I2ECWfEgWkKK1x1ODM0NQnojYUJZMSBCitcdTgzNDYJ6I2GCWrEq25nCitcdTgzNDgJ6I2ICWNodceObgorXHU4MzQ5CeiNiQljx45vCitcdTgzNEEJ6I2KCWrEq25nCitcdTgzNEUJ6I2OCWNow60KK1x1ODM1MQnojZEJdMOtCitcdTgzNTIJ6I2SCWh1xIFuZworXHU4MzUzCeiNkwlwxKtuZworXHU4MzU0CeiNlAlsw6wKK1x1ODM1NwnojZcJc2jDuQorXHU4MzVDCeiNnAliw6wKK1x1ODM1RQnojZ4JamnEgW8KK1x1ODM1RgnojZ8JaHXDrAorXHU4MzYxCeiNoQlkw6BuZworXHU4MzY1CeiNpQlxacOhbgorXHU4MzY5CeiNqQlqw6xuCitcdTgzNkMJ6I2sCW3HjmkKK1x1ODM3MAnojbAJZMO5CitcdTgzNzcJ6I23CWjDqQorXHU4Mzc4CeiNuAliw60KK1x1ODM3OQnojbkJYsO5CitcdTgzN0IJ6I27CWTDrQorXHU4MzdECeiNvQlzdcSrCitcdTgzN0UJ6I2+CXDDugorXHU4Mzg2CeiOhglww7oKK1x1ODM4NwnojocJY2jDrQorXHU4MzhBCeiOigl6aHXEgW5nCitcdTgzOEMJ6I6MCWR1w7MKK1x1ODM4RAnojo0JcWnDugorXHU4MzhFCeiOjglzaMSBCitcdTgzOEYJ6I6PCW3DqGkKK1x1ODM5NAnojpQJbcOpbmcKK1x1ODM5NwnojpcJY2jEkworXHU4Mzk4CeiOmAl4xKtuCitcdTgzOTkJ6I6ZCWrFq24KK1x1ODM5QwnojpwJZMOtCitcdTgzOUQJ6I6dCWN1w7IKK1x1ODM5RQnojp4JZ3XEgW4KK1x1ODM5Rgnojp8JaMOgbgorXHU4M0ExCeiOoQljdcOyCitcdTgzQTgJ6I6oCWzDoG5nCitcdTgzQTkJ6I6pCWbDugorXHU4M0FBCeiOqgnDqQorXHU4M0FDCeiOrAltaceObgorXHU4M0FECeiOrQlqacOpCitcdTgzQjQJ6I60CWxpw6FuCitcdTgzQjcJ6I63CWh1w7IKK1x1ODNCRQnojr4JbceObmcKK1x1ODNDMQnoj4EJasSrbmcKK1x1ODNDMwnoj4MJZ3XEgW4KK1x1ODNDNgnoj4YJesWNdQorXHU4M0NDCeiPjAlqxatuCitcdTgzQ0QJ6I+NCWrDuW4KK1x1ODNDRgnoj48JaMOpCitcdTgzRDAJ6I+QCXDDugorXHU4M0QyCeiPkgliw7MKK1x1ODNENQnoj5UJbMO6bgorXHU4M0Q2CeiPlgljaMSBbmcKK1x1ODNERQnoj54JbMOtCitcdTgzRTAJ6I+gCWLFjQorXHU4M0U2CeiPpgliw6hpCitcdTgzRUEJ6I+qCWTDoG5nCitcdTgzRUMJ6I+sCWh1xIEKK1x1ODNFRgnoj68JaHXDoQorXHU4M0YwCeiPsAlnxasKK1x1ODNGMwnoj7MJx45uCitcdTgzRjUJ6I+1CXDDqW5nCitcdTgzRjcJ6I+3CXnFqworXHU4M0Y5CeiPuQlqxasKK1x1ODNGQQnoj7oJamnEgW4KK1x1ODNGQwnoj7wJdMeObgorXHU4M0ZFCeiPvgl0acOhbgorXHU4NDAyCeiQggljaMeUbgorXHU4NDA2CeiQhgliw6wKK1x1ODQwNwnokIcJY2jDoW5nCitcdTg0MEQJ6JCNCXDDrW5nCitcdTg0MEUJ6JCOCXfEm2kKK1x1ODQwRgnokI8JZMOgbgorXHU4NDEyCeiQkglqx5QKK1x1ODQyRQnokK4JeHXEgW4KK1x1ODQzMwnokLMJY8OoCitcdTg0MzUJ6JC1CXfFjQorXHU4NDNBCeiQuglsw6AKK1x1ODQzRAnokL0JbHXDsgorXHU4NDNFCeiQvgl5w61uZworXHU4NDQ2CeiRhglix45vCitcdTg0NDcJ6JGHCXLDs3UKK1x1ODQ0OQnokYkJecOoCitcdTg0NEEJ6JGKCcSBbgorXHU4NDRFCeiRjglsx5wKK1x1ODQ1MgnokZIJaMOzbmcKK1x1ODQ1NwnokZcJemjDuQorXHU4NDU4CeiRmAlyw6huCitcdTg0NUEJ6JGaCXLDqG4KK1x1ODQ1QgnokZsJZ8OpCitcdTg0NUMJ6JGcCWppw6kKK1x1ODQ1RAnokZ0JYsOoaQorXHU4NDYyCeiRoglnw6BpCitcdTg0NjMJ6JGjCWTHkm5nCitcdTg0NjQJ6JGkCWppw6gKK1x1ODQ2QgnokasJaMO6CitcdTg0NkUJ6JGuCWR1w6BuCitcdTg0NzAJ6JGwCWrDuW4KK1x1ODQ3MQnokbEJY8WNbmcKK1x1ODQ3MgnokbIJcXXDoW4KK1x1ODQ3NAnokbQJemjEk24KK1x1ODQ3NQnokbUJa3XDrQorXHU4NDc3CeiRtwloxatuCitcdTg0NzgJ6JG4CXjHkAorXHU4NDhCCeiSiwlqaceObmcKK1x1ODQ4QwnokowJbMOzdQorXHU4NDhECeiSjQl3w6lpCitcdTg0OEUJ6JKOCXDDoGkKK1x1ODQ5NQnokpUJbcOhbmcKK1x1ODQ5OQnokpkJbcSTbmcKK1x1ODQ5QQnokpoJaMOpCitcdTg0QTEJ6JKhCWLDoG5nCitcdTg0QTIJ6JKiCWNow7oKK1x1ODRBNwnokqcJZGnHjm4KK1x1ODRBOAnokqgJcWnDoG4KK1x1ODRCMAnokrAJYsOzCitcdTg0QjMJ6JKzCW7DoAorXHU4NEI2CeiStgljx45uZworXHU4NEJECeiSvQnEk24KK1x1ODRDMAnok4AJc8WrbgorXHU4NEMyCeiTgglodcOyCitcdTg0QzQJ6JOECXjDuQorXHU4NEM4CeiTiAlsw6FuZworXHU4NENCCeiTiwlnw6BpCitcdTg0Q0MJ6JOMCWN1w7IKK1x1ODREMgnok5IJYsOsCitcdTg0RDYJ6JOWCWLDrAorXHU4NEQ3CeiTlwlsxIEKK1x1ODRERgnok58JasOsCitcdTg0RTIJ6JOiCWzDoW5nCitcdTg0RTYJ6JOmCW3DsgorXHU4NEU4CeiTqAl0acSBbworXHU4NEU5CeiTqQltw6BvCitcdTg0RUQJ6JOtCcSBbgorXHU4NEVGCeiTrwljxY1uZworXHU4NEYzCeiTswlqw6xuCitcdTg0RkMJ6JO8CWxpx45vCitcdTg0RkQJ6JO9CWLDrAorXHU4NTAwCeiUgAliw7kKK1x1ODUwMQnolIEJeMOsCitcdTg1MDgJ6JSICWJpxIFvCitcdTg1MDkJ6JSJCWfHlG4KK1x1ODUwQgnolIsJZMOtCitcdTg1MTMJ6JSTCW3DoW4KK1x1ODUxNAnolJQJYsWNCitcdTg1MTUJ6JSVCWTDrAorXHU4NTE5CeiUmQl4dcOgbgorXHU4NTFBCeiUmgl3w6hpCitcdTg1MUIJ6JSbCWjDugorXHU4NTFGCeiUnwljw7kKK1x1ODUyMAnolKAJY8SBCitcdTg1MjIJ6JSiCWppxIFuZworXHU4NTI0CeiUpAltw6wKK1x1ODUyOAnolKgJasO5bgorXHU4NTJCCeiUqwluacSBbgorXHU4NTJDCeiUrAlzaMWrCitcdTg1MkQJ6JStCXnDrG4KK1x1ODUyRQnolK4JY8OhbmcKK1x1ODUzNwnolLcJcWnDoW5nCitcdTg1MzgJ6JS4CWTFjXUKK1x1ODUzQQnolLoJZsO5CitcdTg1M0UJ6JS+CWzDrQorXHU4NTQyCeiVgglixY0KK1x1ODU0NAnolYQJbcOpbmcKK1x1ODU0OQnolYkJamnEgW8KK1x1ODU0QQnolYoJcnXHkAorXHU4NTRCCeiViwlqacSBbworXHU4NTRGCeiVjwljaMO6CitcdTg1NTAJ6JWQCWh1w6EKK1x1ODU1OQnolZkJaHXDrAorXHU4NTVDCeiVnAlmxJtpCitcdTg1NUUJ6JWeCXp1w6wKK1x1ODU1RgnolZ8JZsOgCitcdTg1NjAJ6JWgCWt1w6BpCitcdTg1NjMJ6JWjCXNow7luCitcdTg1NkEJ6JWqCXfDugorXHU4NTZCCeiVqwlkx5JuZworXHU4NTZDCeiVrAlzxKsKK1x1ODU3MgnolbIJccOtCitcdTg1N0EJ6JW6CWrDrQorXHU4NTdCCeiVuwlow7JuZworXHU4NTdDCeiVvAlox45vCitcdTg1ODQJ6JaECWLDsworXHU4NTg1CeiWhQloxIFvCitcdTg1OEEJ6JaKCWrDrAorXHU4NThDCeiWjAl4acSBbmcKK1x1ODU4RAnolo0JbHXDoG4KK1x1ODU4RQnolo4JbWnDqAorXHU4NTk1CeiWlQlsacOhbgorXHU4NTlCCeiWmwl4dcSTCitcdTg1OUMJ6JacCWLDrAorXHU4NTlECeiWnQlrw6BuCitcdTg1QTAJ6JagCWbDoW4KK1x1ODVBMwnolqMJZ8eUCitcdTg1QTgJ6JaoCWjFjW5nCitcdTg1QjUJ6Ja1CWNow7N1CitcdTg1QjYJ6Ja2CWzDrQorXHU4NUI3CeiWtwlyw7oKK1x1ODVCQQnolroJasOsCitcdTg1QkIJ6Ja7CWPDs25nCitcdTg1QzMJ6JeDCWjDoG8KK1x1ODVDNAnol4QJccOtCitcdTg1QzgJ6JeICWrDrQorXHU4NUM5CeiXiQlqw60KK1x1ODVDQQnol4oJYmnHjm4KK1x1ODVDQwnol4wJbMSBCitcdTg1Q0QJ6JeNCWzDoW4KK1x1ODVDRQnol44JasOsbgorXHU4NUNGCeiXjwljw6FuZworXHU4NUQwCeiXkAltaceObworXHU4NUQxCeiXkQlqacOgbworXHU4NUQ4CeiXmAlsx5gKK1x1ODVFMQnol6EJZMOtCitcdTg1RTYJ6JemCW3DsworXHU4NUU3CeiXpwliacSBbworXHU4NUU4CeiXqAliacSBbworXHU4NUU5CeiXqQlmxIFuCitcdTg1RUEJ6JeqCXPHknUKK1x1ODVFQgnol6sJaHXDrQorXHU4NUYzCeiXswlnx45vCitcdTg1RjQJ6Je0CXnDuW4KK1x1ODYwMAnomIAJdHXDsgorXHU4NjAyCeiYgglqxKsKK1x1ODYwNQnomIUJaMOpbmcKK1x1ODYwOAnomIgJdHXDrQorXHU4NjBCCeiYiwlww61uCitcdTg2MEMJ6JiMCWppx5JuZworXHU4NjEwCeiYkAl4acSBbgorXHU4NjExCeiYkQltw7MKK1x1ODYxNgnomJYJYsOsCitcdTg2MTcJ6JiXCW5pw6gKK1x1ODYxRQnomJ4JbGnDoW4KK1x1ODYxRgnomJ8JbMeSbmcKK1x1ODYyMwnomKMJaHXEgQorXHU4NjI1CeiYpQlxw7kKK1x1ODYyOAnomKgJaHXDoWkKK1x1ODYzQQnomLoJbMOtCitcdTg2NEYJ6JmPCWzHlAorXHU4NjUwCeiZkAluw7zDqAorXHU4NjUzCeiZkwl4acSBbworXHU4NjU1CeiZlQljaMeUCitcdTg2NTYJ6JmWCWjFqworXHU4NjU3CeiZlwlxxasKK1x1ODY1QgnomZsJeMWrCitcdTg2NUYJ6JmfCWjDoW8KK1x1ODY2MAnomaAJamnHjm8KK1x1ODY2QgnomasJY2jDs25nCitcdTg2NkMJ6JmsCXFpw7oKK1x1ODY2Rgnoma8JcWnDugorXHU4Njc1CeiZtQlzaMOpCitcdTg2NzYJ6Jm2CWjDoW4KK1x1ODY3OAnombgJZ8OybmcKK1x1ODY3OQnombkJaMOzbmcKK1x1ODY3QQnomboJaHXEqworXHU4NjdCCeiZuwltw6luZworXHU4NjdGCeiZvwljaMOgaQorXHU4NjgzCeiagwl4aceObmcKK1x1ODY4NAnomoQJYsOobmcKK1x1ODY4RAnomo0JYseQCitcdTg2OEUJ6JqOCWPDoW4KK1x1ODY5NQnompUJY8OhbgorXHU4Njk2Ceialglow6FvCitcdTg2OUUJ6JqeCW3DuQorXHU4NkE0CeiapAl6x45vCitcdTg2QTUJ6JqlCWbHlAorXHU4NkE3CeiapwlqacOoCitcdTg2QUQJ6JqtCW7DrQorXHU4NkIxCeiasQl6aMOgCitcdTg2QjQJ6Jq0CXnDsnUKK1x1ODZCNQnomrUJw6kKK1x1ODZCNgnomrYJaMSBbgorXHU4NkI4CeiauAlsw6wKK1x1ODZCQgnomrsJemjDoQorXHU4NkMzCeibgwlix5BuZworXHU4NkM1CeibhQlyw6FuCitcdTg2QzYJ6JuGCXHFqworXHU4NkM3CeibhwlzaMOpCitcdTg2QzgJ6JuICXRpw6gKK1x1ODZEOQnom5kJd8SBCitcdTg2REEJ6JuaCWxpw6gKK1x1ODZERgnom58JamnEgW8KK1x1ODZFMwnom6MJamnDqQorXHU4NkU0CeibpAlnw6kKK1x1ODZFNQnom6UJZ8eSbmcKK1x1ODZFQQnom6oJcWnDqAorXHU4NkVECeibrQl6aMOsCitcdTg2RjEJ6JuxCWppw6EKK1x1ODZGOAnom7gJc2jEgW8KK1x1ODZGOQnom7kJeceSbmcKK1x1ODZGQgnom7sJdHXDrAorXHU4NkZDCeibvAljaMSTCitcdTg2RkYJ6Ju/CWjDoG4KK1x1ODcwNgnonIYJeGnHjm4KK1x1ODcwNwnonIcJemjDqQorXHU4NzA4CeiciAl3w7oKK1x1ODcwRQnonI4JeXXEgW4KK1x1ODcwRgnonI8JZMOgbgorXHU4NzEzCeickwl0w61uZworXHU4NzE0CeiclAlkacOgbgorXHU4NzE4CeicmAl6aMSrCitcdTg3MUEJ6JyaCWbEm2kKK1x1ODcxQgnonJsJasWrCitcdTg3MjEJ6JyhCWzDoAorXHU4NzIyCeicogltxJtuZworXHU4NzIzCeicowlxacSBbmcKK1x1ODcyQQnonKoJZ3XFjQorXHU4NzJGCeicrwliw6BuZworXHU4NzMyCeicsgl3xJtpCitcdTg3MzUJ6Jy1CWp1x45uCitcdTg3MzgJ6Jy4CWrEq25nCitcdTg3M0MJ6Jy8CXfEm2kKK1x1ODczRAnonL0JbGnHjm5nCitcdTg3M0YJ6Jy/CXfEgW4KK1x1ODc0MAnonYAJZMWNbmcKK1x1ODc0MQnonYEJw6gKK1x1ODc0NwnonYcJecOtbmcKK1x1ODc0RQnonY4JeGnEkworXHU4NzRGCeidjwl0w61uZworXHU4NzUxCeidkQlsw6wKK1x1ODc1NgnonZYJeHXEgW4KK1x1ODc1OQnonZkJYmnEgW4KK1x1ODc1QQnonZoJcsOzdQorXHU4NzYyCeidoglqacWrCitcdTg3NjUJ6J2lCW3DoW8KK1x1ODc2NgnonaYJeGnEgQorXHU4NzY3CeidpwlrdcOtCitcdTg3NzEJ6J2xCWTDoGkKK1x1ODc3NAnonbQJaMO6CitcdTg3NzcJ6J23CWd1x5IKK1x1ODc3OQnonbkJw6FuCitcdTg3N0MJ6J28CWLHjm5nCitcdTg3ODQJ6J6ECXPEqworXHU4Nzg2Ceiehgljw6wKK1x1ODc4QgnonosJcMOhbgorXHU4NzhECeiejQlyw7NuZworXHU4NzlFCeiengltxIEKK1x1ODc5Rgnonp8JbcOtbmcKK1x1ODdBNAnonqQJc2jDrAorXHU4N0FCCeieqwl6aMSTCitcdTg3QUMJ6J6sCWPDoW8KK1x1ODdCMwnonrMJdMOhbmcKK1x1ODdCNgnonrYJYsOobmcKK1x1ODdCOAnonrgJY2jDoW4KK1x1ODdCQQnonroJbHXDsworXHU4N0M0CeifhAl6aMOpCitcdTg3QzUJ6J+FCW3DsgorXHU4N0M2Ceifhgltw6EKK1x1ODdDNwnon4cJbcOhCitcdTg3QzkJ6J+JCWxpw6BvCitcdTg3Q0EJ6J+KCW3DoW8KK1x1ODdDQgnon4sJeMSrCitcdTg3RDMJ6J+TCWbDoW4KK1x1ODdFMQnon6EJZ3XHkAorXHU4N0U0CeifpAlixJNuCitcdTg3RTcJ6J+nCWzDoW8KK1x1ODdFQwnon6wJY2jDoW4KK1x1ODdFRAnon60JamnEgW8KK1x1ODdGMAnon7AJbMOtCitcdTg3RjkJ6J+5CXhpw6gKK1x1ODdGQgnon7sJeceQCitcdTg3RkMJ6J+8CWrDrAorXHU4ODAwCeiggAljxKsKK1x1ODgwMgnooIIJc2jDqAorXHU4ODA0CeighAltxJtuZworXHU4ODBGCeigjwlyw7oKK1x1ODgxNQnooJUJcsO6CitcdTg4MTYJ6KCWCWh1w7IKK1x1ODgxNwnooJcJemh1w7MKK1x1ODgxQQnooJoJaMSTCitcdTg4MUIJ6KCbCW1pw6gKK1x1ODgxRQnooJ4JamnDqQorXHU4ODIxCeigoQlsw60KK1x1ODgyMgnooKIJY2jHlG4KK1x1ODgyQwnooKwJbMOzbmcKK1x1ODgzMQnooLEJZ8eUCitcdTg4MzYJ6KC2CWPDoW4KK1x1ODgzRAnooL0JamnDqQorXHU4ODQwCeihgAl4acSbCitcdTg4NDEJ6KGBCWh1xIFuZworXHU4ODQzCeihgwltw6BpCitcdTg4NDQJ6KGECW7HnAorXHU4ODQ4CeihiAnEm3IKK1x1ODg0OQnooYkJaMOhbmcKK1x1ODg0QwnooYwJaMOhbmcKK1x1ODg0RAnooY0JeceObgorXHU4ODRFCeihjglrw6BuCitcdTg4NTYJ6KGWCWzDsm5nCitcdTg4NTkJ6KGZCXnDoQorXHU4ODVBCeihmglow7oKK1x1ODg1RAnooZ0JY2jFjW5nCitcdTg4NUUJ6KGeCXfDqGkKK1x1ODg2MwnooaMJecSrCitcdTg4NjQJ6KGkCWNox44KK1x1ODg2OQnooakJY2jHjgorXHU4ODZBCeihqgl5x5AKK1x1ODg2QgnooasJc2jEgW4KK1x1ODg3MAnoobAJc2h1YcSrCitcdTg4NzEJ6KGxCWppw6kKK1x1ODg3NQnoobUJbsOsCitcdTg4NzYJ6KG2CWNoxY1uZworXHU4ODc3Ceihtwl6aMWNbmcKK1x1ODg3OAnoobgJeGnDqAorXHU4ODdBCeihuglxw6xuCitcdTg4ODAJ6KKACWrFq24KK1x1ODg4MwnoooMJYsOgbworXHU4ODhFCeiijgl5w6BvCitcdTg4OTMJ6KKTCWrHlAorXHU4ODk4CeiimAl5w60KK1x1ODg5OQnoopkJbcOyCitcdTg4OUEJ6KKaCWbDugorXHU4ODlECeiinQlmw6FuCitcdTg4QTMJ6KKjCW3Ds3UKK1x1ODhBNQnooqUJdHXFjQorXHU4OEE5CeiiqQliw6wKK1x1ODhBQwnooqwJZHXHkgorXHU4OEI0CeiitAlqacOpCitcdTg4QjgJ6KK4CWPDum4KK1x1ODhCRAnoor0JcsO6CitcdTg4QzUJ6KOFCXpodcSBbmcKK1x1ODhDRgnoo48JYsSBbworXHU4OEQzCeijkwlnw6kKK1x1ODhENAnoo5QJecOsCitcdTg4RDcJ6KOXCWxpx45uCitcdTg4RTQJ6KOkCWvDuQorXHU4OEU4CeijqAliw6wKK1x1ODhFOQnoo6kJZMSBbworXHU4OEYwCeijsAlkdcWNCitcdTg4RjEJ6KOxCWJpx45vCitcdTg4RjQJ6KO0CXDDqWkKK1x1ODhGNQnoo7UJZ8eUbgorXHU4OEY4CeijuAlsdceSCitcdTg4RkMJ6KO8CXTDrAorXHU4OEZECeijvQl6aMOsCitcdTg4RkYJ6KO/CWNoxY1uZworXHU4OTA5CeikiQlwacSBbgorXHU4OTBCCeikiwlkacOpCitcdTg5MEMJ6KSMCWh1xKsKK1x1ODkwRgnopI8JeGnDuQorXHU4OTEwCeikkAlow6gKK1x1ODkxMQnopJEJeXXDoG4KK1x1ODkxQgnopJsJbMeaCitcdTg5MjYJ6KSmCW7DoGkKK1x1ODkyQgnopKsJY2jHkAorXHU4OTM1CeiktQlsw60KK1x1ODkzNwnopLcJZGnDqQorXHU4OTM4CeikuAlsx5oKK1x1ODkzQwnopLwJcWnHjm5nCitcdTg5NDEJ6KWBCXFpx45uZworXHU4OTQyCeilgglzxJNuCitcdTg5NDMJ6KWDCWLEgW8KK1x1ODk0NwnopYcJamnHjm4KK1x1ODk1OAnopZgJY2jEgW4KK1x1ODk1RQnopZ4JYsOsCitcdTg5NjIJ6KWiCXTHjm4KK1x1ODk2MwnopaMJYsOtCitcdTg5NjQJ6KWkCWzDoW4KK1x1ODk3MgnopbIJeMOtCitcdTg5NzQJ6KW0CWzDoW4KK1x1ODk3NgnopbYJZMOgaQorXHU4OTdGCeilvwl4xKsKK1x1ODk4MQnopoEJecSBbworXHU4OTgyCeimgglmxJtuZworXHU4OTg1CeimhQliacOgbworXHU4OTg4CeimiAlow6kKK1x1ODk4QgnoposJamnDoG4KK1x1ODk4QwnopowJZ3XEgW4KK1x1ODk4RAnopo0JYmnDoG4KK1x1ODk4RQnopo4JZ3XDrAorXHU4OTkwCeimkAlqacOgbworXHU4OTkxCeimkQlwaceObgorXHU4OTk2CeimlglzaMOsCitcdTg5OTgJ6KaYCXpoxIFuCitcdTg5OTkJ6KaZCWx1w7MKK1x1ODk5QwnoppwJdGnDoG8KK1x1ODlBQQnopqoJccSrbgorXHU4OUFCCeimqwlqw6xuCitcdTg5QjMJ6KazCWd1xIFuCitcdTg5QjkJ6Ka5CWppw6BvCitcdTg5QkEJ6Ka6CWp1w6kKK1x1ODlCQgnoprsJbMOgbgorXHU4OUJFCeimvglqw60KK1x1ODlDMAnop4AJZ3XEgW4KK1x1ODlDMQnop4EJamnDoG4KK1x1ODlDMgnop4IJZ3XEgW4KK1x1ODlDMwnop4MJa3XEqworXHU4OUM1CeinhQltw6wKK1x1ODlDOAnop4gJbMeObgorXHU4OUNBCeiniglnx5QKK1x1ODlEMgnop5IJamnHjm8KK1x1ODlEMwnop5MJamnFqworXHU4OUQ0CeinlAlqxKtuCitcdTg5RDcJ6KeXCWbDoW4KK1x1ODlEQQnop5oJZ8WrCitcdTg5REMJ6KecCXrEqworXHU4OURECeinnQlkx5AKK1x1ODlFMAnop6AJamnDqAorXHU4OUUzCeinowlqacSbCitcdTg5RTQJ6KekCWNow7kKK1x1ODlFNwnop6cJamnEmworXHU4OUYwCeinsAlkx44KK1x1ODlGMQnop7EJYsOsCitcdTg5RjQJ6Ke0CXNoxIFuZworXHU4OUY3Ceintwl4dcOpCitcdTg5RkEJ6Ke6CXnDoG4KK1x1OEEwMQnoqIEJaMSTbmcKK1x1OEEwOAnoqIgJasOsCitcdThBMEQJ6KiNCWNow6AKK1x1OEExMAnoqJAJamnDqQorXHU4QTExCeiokQl5w60KK1x1OEExMgnoqJIJcsOobgorXHU4QTIwCeiooAlqw6xuCitcdThBMjIJ6KiiCXjEq24KK1x1OEEyMwnoqKMJanXDqQorXHU4QTI1CeiopQluw6gKK1x1OEEyNgnoqKYJY2jDqW4KK1x1OEEyNwnoqKcJecOzdQorXHU4QTJECeiorQlzaMOoCitcdThBMzIJ6KiyCWPEqworXHU4QTNFCeiovgl6xKsKK1x1OEEzRgnoqL8JesSrCitcdThBNDAJ6KmACWNow6gKK1x1OEE0MQnoqYEJZ8eUCitcdThBNDcJ6KmHCWTDoGkKK1x1OEE1MwnoqZMJcceUCitcdThBNTUJ6KmVCXDDrW5nCitcdThBNTgJ6KmYCXHFqworXHU4QTU5CeipmQliw6EKK1x1OEE2QwnoqawJZ8OydQorXHU4QTZECeiprQlndceQCitcdThBNzQJ6Km0CXfEk2kKK1x1OEE3NwnoqbcJZMOgbgorXHU4QTdBCeipuglsdcOyCitcdThBN0MJ6Km8CWh1xKsKK1x1OEE4MwnoqoMJY2jHkAorXHU4QTg0CeiqhAlsxJtpCitcdThBODcJ6KqHCWt1xIEKK1x1OEE5MgnoqpIJxIFpCitcdThBOTMJ6KqTCXNow6wKK1x1OEE5NwnoqpcJY2jDoW4KK1x1OEE5QQnoqpoJcWnDoG8KK1x1OEE5RQnoqp4JeceUCitcdThBOUYJ6KqfCXfFqworXHU4QUEzCeiqowl3xasKK1x1OEFBNAnoqqQJd8O5CitcdThBQTgJ6KqoCWh1w6wKK1x1OEFBQQnoqqoJc2h1xY0KK1x1OEFBQgnoqqsJc2h1w6wKK1x1OEFBRAnoqq0JZMO6CitcdThBQjAJ6KqwCXNow6lpCitcdThBQjEJ6KqxCWppw6kKK1x1OEFCQwnoqrwJecOsCitcdThBQkQJ6Kq9CW7DoQorXHU4QUJGCeiqvwlkacOgbworXHU4QUMwCeirgAlwx5AKK1x1OEFDNwnoq4cJdMOhbgorXHU4QUNDCeirjAlkx5JuZworXHU4QUNECeirjQl6aMSTbmcKK1x1OEFDRQnoq44JesOpCitcdThBRDAJ6KuQCWxpw6FuZworXHU4QUQzCeirkwlqacOgbgorXHU4QUQ2Ceirlglsw7luCitcdThBRDcJ6KuXCXNoxJtuCitcdThBRDgJ6KuYCWJpx45vCitcdThBREQJ6KudCXjHlAorXHU4QURFCeirnglwaceObgorXHU4QURGCeirnwlzaMOsCitcdThBRTEJ6KuhCXNow6wKK1x1OEFFNwnoq6cJeGnDqQorXHU4QUVFCeirrgl6xKsKK1x1OEFGNAnoq7QJeGnDoW4KK1x1OEFGNwnoq7cJZsOobmcKK1x1OEFGOAnoq7gJemjFqworXHU4QUY5CeiruQljaMeObworXHU4QjA2CeishglzaMOgbgorXHU4QjBFCeisjgltw60KK1x1OEIwRgnorI8Jc8eSdQorXHU4QjEyCeiskglxacSBbmcKK1x1OEIxNQnorJUJcWnDoG4KK1x1OEIxQQnorJoJc2jDrAorXHU4QjFCCeismwlqaceObmcKK1x1OEIxRAnorJ0JeGnDqAorXHU4QjFGCeisnwlxx5BuZworXHU4QjI3Ceispwlsw60KK1x1OEIyQQnorKoJc2jEgW5nCitcdThCMkMJ6KysCW1pw7kKK1x1OEIzMAnorLAJbGnDoW4KK1x1OEIzMgnorLIJY8SBbgorXHU4QjM0CeistAnDoG8KK1x1OEIzOAnorLgJw6FvCitcdThCMzkJ6Ky5CWrHkG4KK1x1OEIzQwnorLwJaMWrCitcdThCM0QJ6Ky9CWppw6BuZworXHU4QjNFCeisvgltw6FuCitcdThCM0YJ6Ky/CWNow6FvCitcdThCNDAJ6K2ACWjDoG4KK1x1OEI0RQnorY4JanXDqQorXHU4QjU3CeitlwlzaMOtCitcdThCNTgJ6K2YCXNow60KK1x1OEI1OQnorZkJcWnDoW8KK1x1OEI1QQnorZoJdMOhbgorXHU4QjY5CeitqQl4acOgCitcdThCN0EJ6K26CWppxIFuCitcdThCN0QJ6K29CXnDuQorXHU4QjgwCeiugAlkw7oKK1x1OEI4MQnoroEJc2jDqAorXHU4QjhDCeiujAl5w6BuCitcdThCOTcJ6K6XCWh1w7IKK1x1OEI5QQnorpoJesOgbgorXHU4QjlECeiunQlow7JuZworXHU4QkE4CeiuqAl0x45vCitcdThCQjgJ6K64CXjHlAorXHU4QkI5CeiuuQnDqQorXHU4QkJCCeiuuwl4acWNbmcKK1x1OEJCRAnorr0JZsSbbmcKK1x1OEJCRQnorr4Jc2jDqAorXHU4QkM3Ceivhwl4acOybmcKK1x1OEJDRAnor40JY8OtCitcdThCQ0YJ6K+PCXpow6BvCitcdThCRDQJ6K+UCWzEm2kKK1x1OEJFNQnor6UJZ8SBaQorXHU4QkU3CeivpwljaMOgCitcdThCRUQJ6K+tCXnHlAorXHU4QkVFCeivrglxacOgbworXHU4QkY0CeivtAlzaHXFjQorXHU4QkY1CeivtQlzw7JuZworXHU4QkY3Ceivtwlxx5BuZworXHU4QkY4CeivuAl6aMWrCitcdThCRkMJ6K+8CXNow6lpCitcdThDMDIJ6LCCCXNoxJtuCitcdThDMDQJ6LCECWNox45uCitcdThDMDYJ6LCGCXpoxatuCitcdThDMDcJ6LCHCXN1w6wKK1x1OEMwQgnosIsJbcOzdQorXHU4QzEyCeiwkgl5w6gKK1x1OEMxQwnosJwJbcOtCitcdThDMUQJ6LCdCXBpx45uCitcdThDMUUJ6LCeCXjFqworXHU4QzI3Ceiwpwltw6wKK1x1OEMyQQnosKoJemjDqQorXHU4QzJGCeiwrwlxacOhbworXHU4QzMwCeiwsAlsw6FuCitcdThDMzcJ6LC3CWfHlAorXHU4QzM4CeiwuAlxxKsKK1x1OEMzRgnosL8JccSrCitcdThDNDAJ6LGACXjEqworXHU4QzQxCeixgQlodcOyCitcdThDNDIJ6LGCCWvHjmkKK1x1OEM0OQnosYkJY2jHkAorXHU4QzRBCeixiglmxJNuZworXHU4QzRCCeixiwlkxJNuZworXHU4QzVCCeixmwl5w6BuCitcdThDNjQJ6LGkCWvEm24KK1x1OEM2QwnosawJemjFqworXHU4QzcxCeixsQl3xJNuCitcdThDNzMJ6LGzCWLEq24KK1x1OEM3QgnosbsJw6BuCitcdThDN0MJ6LG8CWh1xIFuCitcdThDODcJ6LKHCWjDoW8KK1x1OEM4OQnosokJaMOhbworXHU4QzhBCeiyigltw7IKK1x1OEM4RQnoso4JbsOtCitcdThDQTAJ6LKgCWbDuQorXHU4Q0E1CeiypQlow6FuZworXHU4Q0FDCeiyrAl6w6kKK1x1OENBRAnosq0JemjDrAorXHU4Q0IwCeiysAlzaMOsCitcdThDQjkJ6LK5CWLDrAorXHU4Q0JDCeiyvAl0acSTCitcdThDQzEJ6LOBCWLEk24KK1x1OENDMgnos4IJbMO5CitcdThDQzMJ6LODCWzDrG4KK1x1OENDNAnos4QJaHXDrAorXHU4Q0M4CeiziAlnx5QKK1x1OENDOQnos4kJeMO5CitcdThDQ0IJ6LOLCWfEgWkKK1x1OENDRAnos40Jc2jEgQorXHU4Q0QzCeizkwlixKtuCitcdThDRDQJ6LOUCWLEq24KK1x1OENENQnos5UJcWnDugorXHU4Q0RDCeiznAljw6wKK1x1OENERAnos50JY2jEk24KK1x1OENFOAnos6gJY8OzbmcKK1x1OENFQQnos6oJemjDrAorXHU4Q0VCCeizqwlqxKsKK1x1OENFQwnos6wJemjDoG5nCitcdThDRjAJ6LOwCXHDrQorXHU4Q0Y4CeizuAlzaMOobmcKK1x1OENGQQnos7oJemh1w6BuCitcdThDRkIJ6LO7CWbDuQorXHU4RDA0Cei0hAl6aMOsCitcdThEMDUJ6LSFCXpodcOsCitcdThEMEEJ6LSKCXrDoG4KK1x1OEQwRQnotI4JZ8OgbgorXHU4RDEyCei0kglzaMO5CitcdThEMTcJ6LSXCXnDoG4KK1x1OEQxQwnotJwJecO6bgorXHU4RDIxCei0oQlnw7JuZworXHU4RDI0Cei0pAl4acOhbgorXHU4RDI5Cei0qQlmw6BuCitcdThEMkYJ6LSvCWd1w6BuCitcdThEMzAJ6LSwCcOocgorXHU4RDMzCei0swlzaMOsCitcdThEMzgJ6LS4CW3DoG8KK1x1OEQzQQnotLoJaMOoCitcdThEM0QJ6LS9CWfHlAorXHU4RDNGCei0vwlodcOsCitcdThENDIJ6LWCCWzDuQorXHU4RDRCCei1iwlmw7kKK1x1OEQ0RQnotY4Jc2jDugorXHU4RDUxCei1kQliw6wKK1x1OEQ1NgnotZYJbMOgaQorXHU4RDYyCei1ogl5w61uZworXHU4RDY0Cei1pAljaMOsCitcdThENjcJ6LWnCW7Hjm4KK1x1OEQ2OQnotakJc2jDrAorXHU4RDZDCei1rAljaMSTbmcKK1x1OEQ3NAnotbQJZsO5CitcdThENzYJ6LW2CWfHjm4KK1x1OEQ3NwnotbcJcceQCitcdThEODAJ6LaACWNow6luCitcdThEODIJ6LaCCWNow6huCitcdThEODQJ6LaECWrFqworXHU4RDg1Cei2hQljaMSBbworXHU4RDg2Cei2hglkxKsKK1x1OEQ4QgnotosJY8O5CitcdThEOEMJ6LaMCWppw6kKK1x1OEQ4RQnoto4JY2jDugorXHU4RDkyCei2kglkacOgbworXHU4RDlBCei2mgljaMSTbmcKK1x1OERBMAnotqAJY2jDoG8KK1x1OERBMQnotqEJY3XHkAorXHU4REE0Cei2pAljx5J1CitcdThEQTkJ6LapCWNow6wKK1x1OERBRAnotq0JamnDoG8KK1x1OERBRQnotq4JeXXDqAorXHU4REFGCei2rwl0w6wKK1x1OERCMQnotrEJeseObgorXHU4REIzCei2swl6w7oKK1x1OERCNAnotrQJcMSBCitcdThEQjYJ6La2CWd1w6wKK1x1OERCQQnotroJZsWrCitcdThEQkQJ6La9CWbDoG5nCitcdThEQzAJ6LeACXl1w6gKK1x1OERDMwnot4MJeXXDqAorXHU4REM1Cei3hQl0dcOyCitcdThEQzkJ6LeJCWLDqGkKK1x1OERDQwnot4wJZGnEkworXHU4RENECei3jQljx45pCitcdThERDEJ6LeRCXDHjm8KK1x1OEREMgnot5IJcWnHjgorXHU4REQ2Cei3lgl6aMOtCitcdThERDcJ6LeXCWbFqworXHU4RERDCei3nAlsdcOyCitcdThEREYJ6LefCWfEk24KK1x1OERFNAnot6QJamnEgW8KK1x1OERFNQnot6UJZHXDsgorXHU4REU3Cei3pwlxdcOhbgorXHU4REU4Cei3qAlrdcOgCitcdThERTkJ6LepCXpodceOaQorXHU4REVBCei3qglndcOsCitcdThERUMJ6LesCWt1x5AKK1x1OERFRAnot60JZGnDqQorXHU4REVGCei3rwlsw7kKK1x1OERGMAnot7AJYsOobmcKK1x1OERGMQnot7EJemjDrAorXHU4REYyCei3sglqacOhCitcdThERjQJ6Le0CWPHjmkKK1x1OERGNwnot7cJcWnEgW8KK1x1OEUwNQnouIUJY2jDrAorXHU4RTA2Cei4hgljxatuCitcdThFMDcJ6LiHCWzDoG5nCitcdThFMDkJ6LiJCWxpw6FuZworXHU4RTBBCei4igl5x5JuZworXHU4RTBDCei4jAljaMOzdQorXHU4RTEwCei4kAlqacOgbgorXHU4RTEyCei4kgljaHXFjQorXHU4RTE1Cei4lQlqacOpCitcdThFMTkJ6LiZCWh1w6AKK1x1OEUxRQnouJ4JasO5CitcdThFMjMJ6LijCWLDsworXHU4RTI0Cei4pAljw7kKK1x1OEUyNQnouKUJasSrCitcdThFMjcJ6LinCWPDuQorXHU4RTI4Cei4qAlrdcOtCitcdThFMkEJ6LiqCWNodcOyCitcdThFMzIJ6LiyCWTDuW4KK1x1OEUzNgnouLYJZMOsCitcdThFMzcJ6Li3CWR1w6BuCitcdThFM0EJ6Li6CWppw6BuCitcdThFNDMJ6LmDCWTDrAorXHU4RTQ1Cei5hQljaMeOCitcdThFNDgJ6LmICWTHjm8KK1x1OEU0OQnouYkJY3XFjQorXHU4RTRBCei5igl4xKsKK1x1OEU0QgnouYsJdMOgCitcdThFNEMJ6LmMCXFpw6BuZworXHU4RTRECei5jQluaceObgorXHU4RTRFCei5jglkacSBbgorXHU4RTUwCei5kAlqw60KK1x1OEU1MwnouZMJbGnDuQorXHU4RTU0Cei5lAl6w6BuCitcdThFNTUJ6LmVCWLDrAorXHU4RTVDCei5nAlzw7kKK1x1OEU1RAnouZ0JeMeQCitcdThFNjIJ6LmiCWTDrQorXHU4RTYzCei5owlww6FuCitcdThFNjQJ6LmkCXrFjW5nCitcdThFNkQJ6LmtCWPDqW5nCitcdThFNkUJ6LmuCWbEgW4KK1x1OEU3MAnoubAJY2jDugorXHU4RTczCei5swlixY0KK1x1OEU3NQnoubUJY8O5CitcdThFNzYJ6Lm2CWp1w6kKK1x1OEU3NwnoubcJanXDqQorXHU4RTdCCei5uwlxacSBbworXHU4RTdDCei5vAlww7oKK1x1OEU3RAnoub0JZMSBCitcdThFODMJ6LqDCWLDrAorXHU4RTg2Cei6hgljaHXDsgorXHU4RTg4Cei6iAlxacOgbworXHU4RThFCei6jglsdcOyCitcdThFOTMJ6LqTCXpow6wKK1x1OEU5NAnoupQJY2jDoW4KK1x1OEU5NQnoupUJY2jDugorXHU4RUExCei6oQluacOoCitcdThFQTUJ6LqlCWN1xIFuCitcdThFQTcJ6LqnCWzDrG4KK1x1OEVBQgnouqsJc2jEk24KK1x1OEVBQwnouqwJZ8WNbmcKK1x1OEVDNAnou4QJasWrCitcdThFQ0EJ6LuKCWNoxJMKK1x1OEVDQgnou4sJecOgCitcdThFQ0MJ6LuMCWd1x5AKK1x1OEVEMQnou5EJZMOgaQorXHU4RUQyCei7kgl4dcSBbgorXHU4RUQzCei7kwlmw6BuCitcdThFREEJ6LuaCWTDoGkKK1x1OEVFNQnou6UJccO6CitcdThFRTYJ6LumCWLDqG4KK1x1OEVFRAnou60Ja3XEgW5nCitcdThFRUYJ6LuvCWbHlAorXHU4RUY2Cei7tgnDqAorXHU4RUY4Cei7uAl6aMOzdQorXHU4RUY5Cei7uQl6aMeQCitcdThFRkIJ6Lu7CWvEkworXHU4RUZECei7vQlwxJNuZworXHU4RjAwCei8gAnDqXIKK1x1OEYwMgnovIIJasO6CitcdThGMDQJ6LyECWd1xIFuZworXHU4RjA2Cei8hgljaMWrbgorXHU4RjA4Cei8iAl6aMWNdQorXHU4RjA5Cei8iQl6x45pCitcdThGMEEJ6LyKCXpow6wKK1x1OEYxMQnovJEJccOsbmcKK1x1OEYxNgnovJYJbMOpbmcKK1x1OEYxOQnovJkJemjDqQorXHU4RjFECei8nQlodcSrCitcdThGMjEJ6LyhCWvHjm4KK1x1OEYyOAnovKgJZ3XHjm4KK1x1OEYyQwnovKwJbGnDoW5nCitcdThGMkYJ6LyvCWrDrQorXHU4RjM0Cei8tAljaMWrbgorXHU4RjM1Cei8tQlnw6kKK1x1OEYzOQnovLkJZsO5CitcdThGM0IJ6Ly7CWbDugorXHU4RjNGCei8vwl5w7oKK1x1OEY0MAnovYAJd8STbgorXHU4RjQyCei9gglnxasKK1x1OEY0MwnovYMJaMOpCitcdThGNDUJ6L2FCXl1w6FuCitcdThGNDgJ6L2ICWNow6FvCitcdThGNDkJ6L2JCXpodceOaQorXHU4RjRBCei9igl3w6hpCitcdThGNEQJ6L2NCWNow6gKK1x1OEY0RQnovY4JamnDoG8KK1x1OEY1MQnovZEJbMeObworXHU4RjUyCei9kglmw6luCitcdThGNTUJ6L2VCWfDqQorXHU4RjU5Cei9mQlsw6lpCitcdThGNjEJ6L2hCXDDqGkKK1x1OEY2NwnovacJZ8OhCitcdThGNjgJ6L2oCWTDoGkKK1x1OEY2QgnovasJcsOobgorXHU4RjZECei9rQnDqAorXHU4Rjc1Cei9tQlkacOpCitcdThGNzcJ6L23CWjFqworXHU4RjdFCei9vgl5w6AKK1x1OEY4MwnovoMJamnDoG8KK1x1OEY4NAnovoQJbmnHjm4KK1x1OEY5OAnovpgJbMO5CitcdThGOUEJ6L6aCWzDrW4KK1x1OEY5QgnovpsJeMSrbgorXHU4RjlGCei+nwlww6wKK1x1OEZBMAnovqAJYsSBbgorXHU4RkE5Cei+qQliacOgbgorXHU4RkFCCei+qwliacOgbgorXHU4RkIwCei+sAljaMOpbgorXHU4RkIxCei+sQlyx5QKK1x1OEZCMgnovrIJbsOzbmcKK1x1OEZCQQnovroJYmnEgW4KK1x1OEZCRgnovr8JY2jEgW4KK1x1OEZDMgnov4IJecWrCitcdThGQzMJ6L+DCXnDrQorXHU4RkM3Cei/hwlndcOyCitcdThGQzgJ6L+ICW3DoGkKK1x1OEZDQwnov4wJamnEgQorXHU4RkNFCei/jgl5w61uZworXHU4RkNGCei/jwlqw6wKK1x1OEZEMgnov5IJaMOhbmcKK1x1OEZENgnov5YJZMOhCitcdThGRDcJ6L+XCcOpCitcdThGRDkJ6L+ZCXpow6gKK1x1OEZEQgnov5sJasOsbgorXHU4RkRECei/nQl3w6lpCitcdThGRTAJ6L+gCWNow6gKK1x1OEZFNAnov6QJecOtCitcdThGRTUJ6L+lCWppx5JuZworXHU4RkU3Cei/pwljaMOpbgorXHU4RkU4Cei/qAlkw6BpCitcdThGRUMJ6L+sCXfHjm5nCitcdThGRUYJ6L+vCW3DqGkKK1x1OEZGOAnov7gJYsOobmcKK1x1OEZGOQnov7kJasOsCitcdThGRkUJ6L++CWt1w7IKK1x1OTAwMgnpgIIJc2jDrAorXHU5MDAzCemAgwl0w6FvCitcdTkwMDUJ6YCFCWjDsnUKK1x1OTAwNgnpgIYJbsOsCitcdTkwMEEJ6YCKCXjDuW4KK1x1OTAxMAnpgJAJemjDugorXHU5MDExCemAkQlxacO6CitcdTkwMTMJ6YCTCWTDrAorXHU5MDE4CemAmAl5w6BuCitcdTkwMTkJ6YCZCXpow6gKK1x1OTAxQQnpgJoJdMWNbmcKK1x1OTAxQgnpgJsJZ3XDoG5nCitcdTkwMUMJ6YCcCXfDuQorXHU5MDFGCemAnwlzw7kKK1x1OTAyMQnpgKEJccWrbgorXHU5MDIyCemAoglmw6luZworXHU5MDIzCemAowlsacOhbgorXHU5MDI0CemApAlixJNuCitcdTkwMkEJ6YCqCWN1w7IKK1x1OTAyRQnpgK4JZMeOaQorXHU5MDJGCemArwlsw7kKK1x1OTAzMAnpgLAJecOzdQorXHU5MDNCCemAuwlsdcOzCitcdTkwM0MJ6YC8CWLEqworXHU5MDNGCemAvwlkw6BuZworXHU5MDQwCemBgAlxxatuCitcdTkwNDIJ6YGCCXN1w6wKK1x1OTA0MwnpgYMJeceObgorXHU5MDRBCemBigl5w7N1CitcdTkwNEYJ6YGPCcOoCitcdTkwNTMJ6YGTCWTDoG8KK1x1OTA1NAnpgZQJZMOhCitcdTkwNTUJ6YGVCXfDqWkKK1x1OTA1NwnpgZcJecOtCitcdTkwNTgJ6YGYCWfDsnUKK1x1OTA1QgnpgZsJbGnDuQorXHU5MDVDCemBnAl4w7luCitcdTkwNUUJ6YGeCWTDrAorXHU5MDVGCemBnwljaMOtCitcdTkwNjAJ6YGgCXl1x45uCitcdTkwNjEJ6YGhCXFpw6BuCitcdTkwNjUJ6YGlCXnDoW8KK1x1OTA2QQnpgaoJY8OoCitcdTkwNkIJ6YGrCXPDuQorXHU5MDcxCemBsQlsw7N1CitcdTkwNzMJ6YGzCWN1xY0KK1x1OTA3NQnpgbUJesWrbgorXHU5MDc3CemBtwlxacSBbgorXHU5MDc5CemBuQl5w7kKK1x1OTA3QgnpgbsJd8O5CitcdTkwN0MJ6YG8CWxpw6FvCitcdTkwN0UJ6YG+CWjDoWkKK1x1OTA4NAnpgoQJaMOhaQorXHU5MDg1CemChQl6aMSBbgorXHU5MDg5CemCiQliacSBbgorXHU5MDhDCemCjAlsw60KK1x1OTA5MAnpgpAJbMeQCitcdTkwOTIJ6YKSCWrDrAorXHU5MDk1CemClQl5xY1uZworXHU5MDk2CemClglrw6FuZworXHU5MEEwCemCoAlixKtuCitcdTkwQTIJ6YKiCXjDrW5nCitcdTkwQTMJ6YKjCW7DoAorXHU5MEE0CemCpAlzaMOpCitcdTkwQUIJ6YKrCWLEgW5nCitcdTkwQjAJ6YKwCXTDoWkKK1x1OTBCNAnpgrQJYseQbmcKK1x1OTBDMwnpg4MJaMOpCitcdTkwQzQJ6YOECXFpw6gKK1x1OTBDNQnpg4UJemjDrAorXHU5MEM2CemDhglodcOhbgorXHU5MEM4CemDiAlow7J1CitcdTkwQ0MJ6YOMCWd1xKsKK1x1OTBDRgnpg48JamnDoQorXHU5MEQ3CemDlwljaMSrCitcdTkwRDgJ6YOYCWzHmgorXHU5MERFCemDnglsw6FuZworXHU5MERGCemDnwlqacOhCitcdTkwRTMJ6YOjCWLDsworXHU5MEU3CemDpwl5w7puCitcdTkwRTkJ6YOpCWPEqworXHU5MEVCCemDqwlww60KK1x1OTBFRQnpg64JbMOhbgorXHU5MEY1CemDtQl5w7N1CitcdTkwRjYJ6YO2CWLDuQorXHU5MEZECemDvQlkxY11CitcdTkwRkUJ6YO+CXnHjm4KK1x1OTBGRgnpg78JbcOpaQorXHU5MTAwCemEgAlydcOyCitcdTkxMDQJ6YSECWp1w6BuCitcdTkxMEEJ6YSKCXLHlAorXHU5MTEwCemEkAljaMO5CitcdTkxMTMJ6YSTCWrDugorXHU5MTE2CemElgl5w7puCitcdTkxMTkJ6YSZCWLHkAorXHU5MTI0CemEpAltw6BuCitcdTkxMjUJ6YSlCXFpxIFvCitcdTkxMkEJ6YSqCWLDrAorXHU5MTJDCemErAlsw6xuCitcdTkxMzEJ6YSxCXDDsworXHU5MTMyCemEsglkxIFuCitcdTkxMzMJ6YSzCWPDoG8KK1x1OTEzNgnphLYJa3XDoGkKK1x1OTEzQQnphLoJa3XDoG5nCitcdTkxM0IJ6YS7CWxpx45uCitcdTkxM0QJ6YS9CWNow6FuCitcdTkxNDMJ6YWDCWzDrW5nCitcdTkxNDgJ6YWICWzDrAorXHU5MTQ5CemFiQl5x5J1CitcdTkxNEIJ6YWLCXFpw7oKK1x1OTE1MAnphZAJZ8SBbgorXHU5MTUxCemFkQl5x5QKK1x1OTE1NgnphZYJZMSBbgorXHU5MTU3CemFlwl4w7kKK1x1OTE2MwnphaMJaMSBbgorXHU5MTY0CemFpAlnxasKK1x1OTE2NwnphacJY2jDs3UKK1x1OTE2OQnphakJbcOtbmcKK1x1OTE2QQnphaoJbMOgbworXHU5MTZCCemFqwljaMOzbmcKK1x1OTE2Rgnpha8JemjHkAorXHU5MTc1CemFtQlqacOgbworXHU5MTc2CemFtgltw6lpCitcdTkxN0YJ6YW/CW5pw6BuZworXHU5MTgwCemGgAl3w6lpCitcdTkxOEIJ6YaLCWPDuQorXHU5MThFCemGjgljaMOpbmcKK1x1OTE5MwnphpMJdMeObgorXHU5MTlDCemGnAljaMeSdQorXHU5MTlFCemGngl5w7luCitcdTkxQTAJ6YagCcOgbmcKK1x1OTFBQQnphqoJbMOhbworXHU5MUFECemGrQliw7oKK1x1OTFBRQnphq4JemjDoG4KK1x1OTFBRgnphq8JeMSrCitcdTkxQjIJ6YayCW7Ds25nCitcdTkxQjQJ6Ya0CWzHkAorXHU5MUMxCemHgQl4w6xuCitcdTkxQzQJ6YeECWPHjmkKK1x1OTFDNwnph4cJY8eOaQorXHU5MUM4CemHiAlzaMOsCitcdTkxQ0IJ6YeLCXNow6wKK1x1OTFDQwnph4wJbMeQCitcdTkxQ0QJ6YeNCXpow7JuZworXHU5MUNFCemHjgl5xJsKK1x1OTFDRgnph48JbGnDoW5nCitcdTkxRDAJ6YeQCWzDrQorXHU5MUQxCemHkQlqxKtuCitcdTkxRDIJ6YeSCWfDoQorXHU5MUQzCemHkwlnw6EKK1x1OTFENAnph5QJeceQCitcdTkxRDUJ6YeVCWxpx45vCitcdTkxRDYJ6YeWCWTEgW8KK1x1OTFEOQnph5kJcMWNCitcdTkxREEJ6YeaCXFpw7oKK1x1OTFFNAnph6QJc2jEgW4KK1x1OTFFNQnph6UJZseObgorXHU5MUVBCemHqglnxIFuCitcdTkxRUQJ6YetCWfEgW5nCitcdTkxRUUJ6YeuCWTDoGkKK1x1OTFGMgnph7IJY2jEgQorXHU5MUY2CemHtglzaMOpCitcdTkxRjcJ6Ye3CXTHlAorXHU5MUY5CemHuQlux5oKK1x1OTFGRQnph74JasSrbgorXHU5MjAwCemIgAlix44KK1x1OTIwMQnpiIEJZsSBbmcKK1x1OTIwNAnpiIQJZMeSdQorXHU5MjA3CemIhwlmxasKK1x1OTIwOAnpiIgJYsO5CitcdTkyMDkJ6YiJCW7DoAorXHU5MjBBCemIigl4xKtuCitcdTkyMTEJ6YiRCWLHjm4KK1x1OTIxMwnpiJMJY2jHjm8KK1x1OTIxNQnpiJUJbmnHlAorXHU5MjE2CemIlglmxJNuCitcdTkyMUIJ6YibCWd1xY0KK1x1OTIyNQnpiKUJaHXHkgorXHU5MjI2CemIpgl0w6BpCitcdTkyMkUJ6YiuCW7DrQorXHU5MjJGCemIrwlrxJMKK1x1OTIzMwnpiLMJa8STCitcdTkyMzQJ6Yi0CWzDrW5nCitcdTkyMzcJ6Yi3CWfHlAorXHU5MjM4CemIuAliw7MKK1x1OTIzOQnpiLkJcMOtCitcdTkyM0EJ6Yi6CXnDuQorXHU5MjNFCemIvgl5w7N1CitcdTkyM0YJ6Yi/CWRpw6BuCitcdTkyNDAJ6YmACWppx44KK1x1OTI0MQnpiYEJc2jDqQorXHU5MjQ2CemJhgl6dcSBbgorXHU5MjQ4CemJiAl0xIEKK1x1OTI0OQnpiYkJcMOhbworXHU5MjRDCemJjAlow6kKK1x1OTI0RQnpiY4JaseUCitcdTkyNTAJ6YmQCXDHkgorXHU5MjU2CemJlgnEgW4KK1x1OTI1OAnpiZgJZsO6CitcdTkyNUEJ6YmaCW3Hjm8KK1x1OTI1QgnpiZsJcWnEgW4KK1x1OTI1QwnpiZwJZsO6CitcdTkyNUYJ6YmfCWfDsnUKK1x1OTI2NQnpiaUJc2jDuQorXHU5MjY5CemJqQluacSTCitcdTkyNkEJ6YmqCWTDrAorXHU5MjZFCemJrglzaMSTbgorXHU5MjZGCemJrwnEm3IKK1x1OTI3QQnpiboJxJtyCitcdTkyN0IJ6Ym7CWfDqAorXHU5MjdDCemJvAlix5BuZworXHU5MjdGCemJvwloxIEKK1x1OTI4MAnpioAJecOtbgorXHU5MjhGCemKjwlzaMOgbgorXHU5MjkyCemKkgl4w61uZworXHU5MjkzCemKkwlxdcOhbgorXHU5Mjk2CemKlgl6aMWrCitcdTkyOTgJ6YqYCW3DrW5nCitcdTkyOUEJ6YqaCWRpw6BvCitcdTkyOUIJ6YqbCXhpxIFuCitcdTkyQTMJ6YqjCXLDugorXHU5MkE0CemKpAltx5AKK1x1OTJBNQnpiqUJecSrCitcdTkyQTYJ6YqmCXnEq24KK1x1OTJBOAnpiqgJx45uCitcdTkyQTkJ6YqpCWRpxasKK1x1OTJCNAnpirQJc2jDrAorXHU5MkJCCemKuwl0xKsKK1x1OTJCQwnpirwJY3XDsgorXHU5MkMwCemLgAlkw7J1CitcdTkyQzEJ6YuBCWzHmgorXHU5MkMyCemLggltw6lpCitcdTkyQzUJ6YuFCXjEq24KK1x1OTJDNgnpi4YJecO6bgorXHU5MkNDCemLjAlkw6xuZworXHU5MkNECemLjQliw7MKK1x1OTJEOAnpi5gJd8O6CitcdTkyRDkJ6YuZCXfDugorXHU5MkRBCemLmglqw6xuCitcdTkyREQJ6YudCWzDvMOoCitcdTkyRTAJ6YugCXNow6huCitcdTkyRTQJ6YukCWNow7oKK1x1OTJFNQnpi6UJesOobmcKK1x1OTJFNgnpi6YJasWrCitcdTkyRTcJ6YunCcOpCitcdTkyRTgJ6YuoCcOpCitcdTkyRTkJ6YupCW3DoW5nCitcdTkyRUEJ6YuqCXDFqworXHU5MkVCCemLqwlkdcOsCitcdTkyRUUJ6YuuCWNow6luZworXHU5MkY4CemLuAlqxasKK1x1OTJGOQnpi7kJY2jHjm5nCitcdTkyRkQJ6Yu9CWRpw6BvCitcdTkzMDEJ6YyBCWvDqAorXHU5MzAyCemMgglmw7oKK1x1OTMwOAnpjIgJYsOobmcKK1x1OTMwQwnpjIwJw6BuCitcdTkzMEUJ6YyOCWvEkworXHU5MzEzCemMkwlnx5RuCitcdTkzMTYJ6YyWCWTHlAorXHU5MzFECemMnQljaMO6bgorXHU5MzFFCemMngljaMO6bgorXHU5MzFGCemMnwl0w6FuCitcdTkzMjAJ6YygCWTDrG5nCitcdTkzMjIJ6YyiCXFpw6FuCitcdTkzMjMJ6YyjCXpodcOsCitcdTkzMjQJ6YykCWrEqworXHU5MzI1CemMpQl0w6wKK1x1OTMyQwnpjKwJZGnEgW8KK1x1OTMyRQnpjK4JZ8O5CitcdTkzMzAJ6YywCWzHnAorXHU5MzMzCemMswltxJtuZworXHU5MzNFCemMvglodcOyCitcdTkzNDQJ6Y2ECWppxJMKK1x1OTM0OAnpjYgJY2jDrQorXHU5MzRBCemNiglsacOgbgorXHU5MzRDCemNjAl4aceObgorXHU5MzU3CemNlwl0w60KK1x1OTM1RAnpjZ0JY2jEgQorXHU5MzY1CemNpQlxacOoCitcdTkzNjcJ6Y2nCWjFjW5nCitcdTkzNkEJ6Y2qCW3Ds3UKK1x1OTM3NgnpjbYJc8SrCitcdTkzNzcJ6Y23CWTHlAorXHU5MzdBCemNugl6aMSbCitcdTkzN0IJ6Y27CWppw6kKK1x1OTM3RAnpjb0JYmnEgW4KK1x1OTM4QgnpjosJeGnDoQorXHU5MzkxCemOkQljaMSTbmcKK1x1OTM5OAnpjpgJZ8OpCitcdTkzOTkJ6Y6ZCWTEgQorXHU5MzlFCemOnglixKsKK1x1OTM5Rgnpjp8Jc8eObmcKK1x1OTNBMgnpjqIJd8WrCitcdTkzQTMJ6Y6jCWppx5JuZworXHU5M0E0CemOpAlodceObmcKK1x1OTNBNwnpjqcJa8eOaQorXHU5M0FBCemOqglqaceObgorXHU5M0FDCemOrAlnx45vCitcdTkzQUQJ6Y6tCXRpw6FuCitcdTkzQUUJ6Y6uCXpow6huCitcdTkzQUYJ6Y6vCWzDoW5nCitcdTkzQjAJ6Y6wCXnDrAorXHU5M0MzCemPgwl6w7oKK1x1OTNDNAnpj4QJdHXDoW4KK1x1OTNDOAnpj4gJbGnDoG4KK1x1OTNDOQnpj4kJw6BvCitcdTkzQ0IJ6Y+LCWTEqworXHU5M0QxCemPkQlkxKsKK1x1OTNEMgnpj5IJcWnEgW8KK1x1OTNENAnpj5QJYmnEgW8KK1x1OTNENwnpj5cJa8STbmcKK1x1OTNEQgnpj5sJY2jDoW5nCitcdTkzREQJ6Y+dCW3DoG4KK1x1OTNFNQnpj6UJamnDoG4KK1x1OTNFOQnpj6kJamnDoG4KK1x1OTNGOQnpj7kJcWnEgW5nCitcdTkzRkEJ6Y+6CXDFjQorXHU5M0ZGCemPvwljaMSTbmcKK1x1OTQwMQnpkIEJbGnDugorXHU5NDAzCemQgwluw6FvCitcdTk0MDQJ6ZCECWjDqW5nCitcdTk0MEMJ6ZCMCWxpw6BvCitcdTk0MTEJ6ZCRCWR1xKsKK1x1OTQxMwnpkJMJZMWrbgorXHU5NDE0CemQlAl0w6FuCitcdTk0MTUJ6ZCVCWTDqG5nCitcdTk0MTkJ6ZCZCWTDqG5nCitcdTk0MUEJ6ZCaCXnDoAorXHU5NDI1CemQpQlqacSBbgorXHU5NDI4CemQqAlmw6hpCitcdTk0MzAJ6ZCwCXFpxIFvCitcdTk0MzMJ6ZCzCWzDqWkKK1x1OTQzNgnpkLYJaHXDoW4KK1x1OTQzQQnpkLoJY2jEk25nCitcdTk0M0IJ6ZC7CWrDuQorXHU5NDNDCemQvAlixJNuCitcdTk0M0QJ6ZC9CWLDrAorXHU5NDNGCemQvwl5w6wKK1x1OTQ0QwnpkYwJYsSrbgorXHU5NDUxCemRkQlqacOgbgorXHU5NDU3CemRlwlsw60KK1x1OTQ1QgnpkZsJa3XDoG5nCitcdTk0NjEJ6ZGhCWNodcOyCitcdTk0NjIJ6ZGiCWzHnAorXHU5NDY1CemRpQlsx5QKK1x1OTQ2QwnpkawJamnDoG4KK1x1OTQ2RAnpka0JbMOhbgorXHU5NDZFCemRrgliw7MKK1x1OTQ3MAnpkbAJecOgbworXHU5NDcxCemRsQljaMOhbgorXHU5NDczCemRswlodcSrCitcdTk0NzUJ6ZG1CWd1w6BuCitcdTk0N0EJ6ZG6CXHDugorXHU5NDdECemRvQl6dcSBbgorXHU5NDdFCemRvglsdcOhbgorXHU5NDdGCemRvwl6w6FvCitcdTk0ODAJ6ZKACW5pw6gKK1x1OTQ4NAnpkoQJZ8OhCitcdTk0ODcJ6ZKHCWTDrG5nCitcdTk0OEEJ6ZKKCXpoxIFvCitcdTk0OEQJ6ZKNCXNoxIFuCitcdTk0OTEJ6ZKRCWrDrQorXHU5NDkyCemSkglmw6FuCitcdTk0OTcJ6ZKXCWNoxIFpCitcdTk0OTkJ6ZKZCWfDoGkKK1x1OTQ5Rgnpkp8JemjFjW5nCitcdTk0QTMJ6ZKjCWLHjm4KK1x1OTRBNgnpkqYJccSrbgorXHU5NEE5CemSqQlnxY11CitcdTk0QUQJ6ZKtCXDDoQorXHU5NEIwCemSsAl5w7kKK1x1OTRCMgnpkrIJemjFq25nCitcdTk0QjUJ6ZK1CWLFjQorXHU5NEI3CemStwlwxY0KK1x1OTRCOAnpkrgJYsOzCitcdTk0QkEJ6ZK6CWh1w6wKK1x1OTRCQgnpkrsJenXEgW4KK1x1OTRCQwnpkrwJbcO5CitcdTk0QkUJ6ZK+CWppx44KK1x1OTRCRgnpkr8JZGnDoG4KK1x1OTRDMAnpk4AJecOzdQorXHU5NEM2CemThgltx45vCitcdTk0QzcJ6ZOHCWLDoG8KK1x1OTRDQgnpk4sJYsOsCitcdTk0Q0UJ6ZOOCWR1w7MKK1x1OTREQwnpk5wJdMOzbmcKK1x1OTRFNAnpk6QJaMSBCitcdTk0RUIJ6ZOrCXRpw6FvCitcdTk0RUMJ6ZOsCWfDqQorXHU5NEVECemTrQltw61uZworXHU5NEYyCemTsgljaMeObgorXHU5NEY4CemTuAl6aMO5CitcdTk0RkIJ6ZO7CXfDugorXHU5NEZDCemTvAlsw6FpCitcdTk1MDQJ6ZSECWNow7oKK1x1OTUwOAnplIgJeGnDuQorXHU5NTEwCemUkAlydcOsCitcdTk1MTEJ6ZSRCXTEqworXHU5NTEyCemUkglsw6FuZworXHU5NTE0CemUlAlqxasKK1x1OTUxNQnplJUJxIEKK1x1OTUxOAnplJgJbnXDsgorXHU5NTE5CemUmQljdcOyCitcdTk1MUEJ6ZSaCW3DoW8KK1x1OTUxRAnplJ0JZMOpCitcdTk1MUYJ6ZSfCWvFq24KK1x1OTUyMgnplKIJZ8O5CitcdTk1MkIJ6ZSrCXDDqWkKK1x1OTUyQwnplKwJdMOhbgorXHU5NTJECemUrQlkw6xuZworXHU5NTMwCemUsAlqacSTCitcdTk1MzUJ6ZS1CXFpxIFuZworXHU5NTM3CemUtwljaMSBaQorXHU5NTM5CemUuQlsw6wKK1x1OTU0QQnplYoJbmnDqAorXHU5NTUwCemVkAlow6BvCitcdTk1NTEJ6ZWRCWLDoG5nCitcdTk1NUUJ6ZWeCXjDrW4KK1x1OTU2MgnplaIJanXDqQorXHU5NTY0CemVpAlsw6FuCitcdTk1NjgJ6ZWoCWN1xIFuCitcdTk1NkEJ6ZWqCXFpx45uZworXHU5NTZCCemVqwlkw6huZworXHU5NTZDCemVrAlodcOyCitcdTk1NzcJ6ZW3CWNow6FuZworXHU5NTc4CemVuAnDoG8KK1x1OTU3QgnplbsJZGnDqQorXHU5NTdECemVvQlsaceObworXHU5NTgwCemWgAltw6luCitcdTk1ODYJ6ZaGCXnDoW4KK1x1OTU4NwnplocJYsOsCitcdTk1OEQJ6ZaNCWLEk25nCitcdTk1OTIJ6ZaSCWppw6BuCitcdTk1OTMJ6ZaTCWppxIFuCitcdTk1OTQJ6ZaUCW3HkG4KK1x1OTU5NQnplpUJeGnEgQorXHU5NTk3CemWlwlkw7J1CitcdTk1OTkJ6ZaZCW7DoG8KK1x1OTU5RAnplp0Jw6BpCitcdTk1QTIJ6ZaiCWd1xIFuCitcdTk1QTMJ6ZajCWfDqQorXHU5NUE1CemWpQlmw6EKK1x1OTVBOAnplqgJZ3XEqworXHU5NUFECemWrQlsx5gKK1x1OTVCNwnplrcJc2jEgQorXHU5NUI4CemWuAlrx5RuCitcdTk1QkEJ6Za6CXfDqW4KK1x1OTVCQwnplrwJw6gKK1x1OTVCRAnplr0JaMWrbgorXHU5NUM4CemXiAl3w6lpCitcdTk1Q0MJ6ZeMCWzDoW4KK1x1OTVDRAnpl40JZMWrCitcdTk1RDAJ6ZeQCXRpw6FuCitcdTk1RDQJ6ZeUCWjDqQorXHU5NUQ1CemXlQlxdcSTCitcdTk1RDYJ6ZeWCWNodceObmcKK1x1OTVENwnpl5cJZ3XEgW4KK1x1OTVEQgnpl5sJY2jEgW5nCitcdTk1REMJ6ZecCWd1xIFuCitcdTk1REYJ6ZefCXPDoAorXHU5NUUwCemXoAlodcOsCitcdTk1RTIJ6ZeiCWLDrAorXHU5NUYwCemXsAlyw7luCitcdTk1RjUJ6Ze1CW3HkG4KK1x1OTVGNwnpl7cJbcSTbgorXHU5NUY4CemXuAl6aMOhCitcdTk1RkMJ6Ze8CWvEgWkKK1x1OTYwMAnpmIAJZsOhCitcdTk2MDMJ6ZiDCWvHlG4KK1x1OTYwNwnpmIcJZMWrCitcdTk2MDgJ6ZiICXnDuQorXHU5NjBGCemYjwnDqAorXHU5NjEwCemYkAljaMeObgorXHU5NjE3CemYlwlqdcOpCitcdTk2MUEJ6ZiaCWvDoG4KK1x1OTYxRQnpmJ4JbMOoCitcdTk2MjAJ6ZigCXfDqGkKK1x1OTYyMwnpmKMJeceQCitcdTk2MjUJ6ZilCcSBbgorXHU5NjI2CemYpgnDoGkKK1x1OTYyOQnpmKkJcMSTaQorXHU5NjJDCemYrAlrxJNuZworXHU5NjJECemYrQlqdcOgbgorXHU5NjJGCemYrwl6aMeQCitcdTk2MzUJ6Zi1CXpow6huCitcdTk2MzkJ6Zi5CXHFqworXHU5NjNDCemYvAl6dcOyCitcdTk2M0QJ6Zi9CWRpw6BuCitcdTk2M0UJ6Zi+CceOCitcdTk2M0YJ6Zi/CcSBCitcdTk2NDAJ6ZmACXR1w7MKK1x1OTY0MQnpmYEJdHXDsworXHU5NjQyCemZgglww60KK1x1OTY0MwnpmYMJYseQbmcKK1x1OTY0NQnpmYUJasOsCitcdTk2NDcJ6ZmHCWzHkm5nCitcdTk2NDkJ6ZmJCWrDrG5nCitcdTk2NEEJ6ZmKCWR1w7IKK1x1OTY0RAnpmY0JamnDoG5nCitcdTk2NEUJ6ZmOCXNoxasKK1x1OTY1MQnpmZEJw6lyCitcdTk2NTQJ6ZmUCWfEgWkKK1x1OTY1NwnpmZcJcWnDoG8KK1x1OTY1OQnpmZkJY2jDum4KK1x1OTY1QwnpmZwJc2jHjm4KK1x1OTY2MAnpmaAJcMWrCitcdTk2NjUJ6ZmlCXhpw6BuCitcdTk2NjkJ6ZmpCXhpx45uCitcdTk2NkEJ6ZmqCXDDqWkKK1x1OTY2QwnpmawJesWNdQorXHU5NjZECemZrQlxxKsKK1x1OTY2RQnpma4JxIFuCitcdTk2NzEJ6ZmxCWrFqworXHU5Njc0CemZtAlww60KK1x1OTY3NQnpmbUJbMOtbmcKK1x1OTY3NwnpmbcJeGnDoG4KK1x1OTY3OAnpmbgJbMO5CitcdTk2NzkJ6Zm5CWTHlAorXHU5NjdECemZvQl5w6FuZworXHU5NjgwCemagAnEgW4KK1x1OTY4MwnpmoMJecO6CitcdTk2ODQJ6ZqECWTEqworXHU5Njg1CemahQl5w7oKK1x1OTY4NgnpmoYJbMOzbmcKK1x1OTY4NwnpmocJc3XDrAorXHU5NjhCCemaiwlzdcOtCitcdTk2OEMJ6ZqMCceObgorXHU5NjkxCemakQlnxIFpCitcdTk2OTIJ6ZqSCWrEqworXHU5Njk1CemalQl5x5RuCitcdTk2OTYJ6ZqWCWd1xKsKK1x1OTY5OAnpmpgJw6BpCitcdTk2OTkJ6ZqZCXjDrAorXHU5NjlECemanQlkx45vCitcdTk2QTgJ6ZqoCXN1w60KK1x1OTZBQQnpmqoJeGnHjm4KK1x1OTZBQgnpmqsJZsSTbgorXHU5NkFDCemarAlux5AKK1x1OTZCMQnpmrEJeceQbgorXHU5NkIyCemasglkw6BpCitcdTk2QjcJ6Zq3CWN1xKsKK1x1OTZCQQnpmroJaMOoCitcdTk2QkQJ6Zq9CWp1w6BuCitcdTk2QkUJ6Zq+CW7DoW4KK1x1OTZCRgnpmr8JcWnEgW8KK1x1OTZDMAnpm4AJcXXDqAorXHU5NkMxCembgQl5w6BuCitcdTk2QzIJ6ZuCCXHDrW4KK1x1OTZDNgnpm4YJasOtCitcdTk2Q0EJ6ZuKCWfDsnUKK1x1OTZDQwnpm4wJY8OtCitcdTk2Q0QJ6ZuNCXnFjW5nCitcdTk2REMJ6ZucCXrDoQorXHU5NkUwCemboAljaMSrCitcdTk2RTMJ6ZujCW7DoW4KK1x1OTZFNAnpm6QJeHXDqQorXHU5NkU5CembqQl5w7oKK1x1OTZFQQnpm6oJeHXEmworXHU5NkY3Cembtwlsw6lpCitcdTk2RjgJ6Zu4CcOhbgorXHU5NkZBCembugltw6luZworXHU5NzAxCemcgQlqw6wKK1x1OTcwNQnpnIUJemjDoQorXHU5NzA2Cemchgl0w61uZworXHU5NzA4CemciAlww6hpCitcdTk3MEUJ6ZyOCXNow6AKK1x1OTcxRQnpnJ4JeGnDoQorXHU5NzIyCemcogltw7IKK1x1OTcyOAnpnKgJd8OoaQorXHU5NzJBCemcqgl5w61uCitcdTk3MzMJ6ZyzCWzDs25nCitcdTk3MzcJ6Zy3CXDDsgorXHU5NzM5CemcuQlwxKsKK1x1OTczRAnpnL0JasOsCitcdTk3M0YJ6Zy/CW3DqW5nCitcdTk3NDAJ6Z2ACWzDqGkKK1x1OTc0MgnpnYIJbMOsCitcdTk3NDQJ6Z2ECceOaQorXHU5NzQ5CemdiQnDoGkKK1x1OTc1MwnpnZMJasOsbmcKK1x1OTc1NwnpnZcJY2jDqG5nCitcdTk3NUIJ6Z2bCWRpw6BuCitcdTk3NUYJ6Z2fCWbEk2kKK1x1OTc2MQnpnaEJbcOtCitcdTk3NjIJ6Z2iCW1pw6BuCitcdTk3NjYJ6Z2mCW1px45uCitcdTk3NjcJ6Z2nCWh1w6wKK1x1OTc2OQnpnakJZ8OpCitcdTk3NkEJ6Z2qCWNoxIFpCitcdTk3NkMJ6Z2sCWppxIFuCitcdTk3NzMJ6Z2zCWrDrG4KK1x1OTc3NwnpnbcJeceQbgorXHU5Nzc5CemduQluw6AKK1x1OTc3Rgnpnb8JYsOoaQorXHU5NzgyCemeggliw6BvCitcdTk3ODUJ6Z6FCXnHjm5nCitcdTk3ODcJ6Z6HCWfDqQorXHU5Nzg5CemeiQl0w6FvCitcdTk3OEMJ6Z6MCcSBbgorXHU5Nzk1CemelQlzaMSBbworXHU5Nzk5CememQlqdcSBbgorXHU5NzlBCememglrw7JuZworXHU5NzlGCemenwlqxasKK1x1OTdBMAnpnqAJasWrCitcdTk3QTEJ6Z6hCcSTbmcKK1x1OTdBNgnpnqYJcWnFqworXHU5N0E5CemeqQltw7N1CitcdTk3QUIJ6Z6rCWrFqworXHU5N0FDCemerAlqacSBbgorXHU5N0FECemerQliacSBbgorXHU5N0I1CemetQlsx5oKK1x1OTdCQwnpnrwJZ3XDrAorXHU5N0M0CemfhAlow7kKK1x1OTdDNQnpn4UJeGnHjm4KK1x1OTdDQwnpn4wJcsOobgorXHU5N0Q4CemfmAlzaMOoCitcdTk3REQJ6Z+dCWfFjXUKK1x1OTdFMAnpn6AJYsOsCitcdTk3RjQJ6Z+0CcSBbgorXHU5N0Y5CemfuQlodcOhbmcKK1x1OTdGRQnpn74JaHXDsgorXHU5ODAxCemggQl5w6gKK1x1OTgwMgnpoIIJZMeQbmcKK1x1OTgwNAnpoIQJcWnDugorXHU5ODA1CemghQl4acOgbmcKK1x1OTgwOAnpoIgJeMWrCitcdTk4MEQJ6aCNCWt1x5AKK1x1OTgwRgnpoI8JaMOhbmcKK1x1OTgxMAnpoJAJecO5CitcdTk4MTIJ6aCSCWLEgW4KK1x1OTgxMwnpoJMJZMO5bgorXHU5ODE0CemglAlkw60KK1x1OTgxNwnpoJcJcMeSCitcdTk4MTgJ6aCYCWzHkG5nCitcdTk4MUQJ6aCdCWppw6EKK1x1OTgyMQnpoKEJeGnDqQorXHU5ODIyCemgoglndcSBCitcdTk4MjYJ6aCmCWvEkworXHU5ODI3CemgpwlkdcSrCitcdTk4MkMJ6aCsCWppw6EKK1x1OTgyRAnpoK0JdMOzdQorXHU5ODJFCemgrglodcOsCitcdTk4MzAJ6aCwCWppw6EKK1x1OTgzMgnpoLIJdMeQbmcKK1x1OTgzMwnpoLMJY2jEk25nCitcdTk4MzYJ6aC2CWfEm25nCitcdTk4MzgJ6aC4CWfEm25nCitcdTk4MzkJ6aC5CXR1w60KK1x1OTgzQwnpoLwJa8SbCitcdTk4NDcJ6aGHCWN1w6wKK1x1OTg0QQnpoYoJZMOsCitcdTk4NEQJ6aGNCcOpCitcdTk4NTAJ6aGQCWjDum4KK1x1OTg1MQnpoZEJa8eObgorXHU5ODU1CemhlQl0acOhbgorXHU5ODVDCemhnAlqaceObmcKK1x1OTg1RAnpoZ0Ja8WrCitcdTk4NUYJ6aGfCWxpw6FvCitcdTk4NjEJ6aGhCW3EgW4KK1x1OTg2MgnpoaIJbcSBbgorXHU5ODYzCemhowljw7kKK1x1OTg2NAnpoaQJccSrbgorXHU5ODZBCemhqglodcSrCitcdTk4NkIJ6aGrCXpow6BuCitcdTk4NkMJ6aGsCWt1x5AKK1x1OTg3OAnpobgJZMO6CitcdTk4ODAJ6aKACXHDrQorXHU5ODgxCemigQlixIFuCitcdTk4ODIJ6aKCCXPDsm5nCitcdTk4ODMJ6aKDCWfEgW5nCitcdTk4ODQJ6aKECXnDuQorXHU5ODg4CemiiAlqx5BuZworXHU5ODg5CemiiQlqacOhCitcdTk4OEEJ6aKKCWppw6EKK1x1OTg4QwnpoowJaMOpCitcdTk4OEQJ6aKNCWvEkworXHU5ODkwCemikAl5w60KK1x1OTg5MgnpopIJaHXDrAorXHU5ODk4CemimAl0w60KK1x1OTg5OQnpopkJbcSBbgorXHU5OEEwCemioAlkacSBbgorXHU5OEExCemioQljaMOgbgorXHU5OEE1CemipQlmxJtuZworXHU5OEE5CemiqQliacSBbworXHU5OEFCCemiqwlmw7oKK1x1OThBRgnpoq8Jc8OgCitcdTk4QjAJ6aKwCWLDoQorXHU5OEMwCemjgAlsacO6CitcdTk4QzMJ6aODCWJpxIFvCitcdTk4QzkJ6aOJCWxpw6FvCitcdTk4Q0UJ6aOOCWbEk25nCitcdTk4Q0YJ6aOPCXPDrAorXHU5OERGCemjnwlzaMOtCitcdTk4RTAJ6aOgCXNow60KK1x1OThFMgnpo6IJasSrCitcdTk4RUEJ6aOqCXLDqG4KK1x1OThFRAnpo60JY2jDrAorXHU5OEVFCemjrgl5x5BuCitcdTk4RjMJ6aOzCXPDrAorXHU5OEY1CemjtQl6aMeOaQorXHU5OEY2Cemjtgliw6wKK1x1OThGRgnpo78JZHXDsgorXHU5OTA0CemkhAlow6kKK1x1OTkwNQnppIUJYseQbmcKK1x1OTkwOQnppIkJeGnHjm5nCitcdTk5MEIJ6aSLCXPDuW4KK1x1OTkxMQnppJEJYsWNCitcdTk5MTIJ6aSSCW7Em2kKK1x1OTkxNQnppJUJasO5bgorXHU5OTE5CemkmQlrxatuCitcdTk5MUMJ6aScCWd1x5IKK1x1OTkyMgnppKIJYsO5CitcdTk5MjUJ6aSlCWbEm2kKK1x1OTkyOAnppKgJZ3XHjm4KK1x1OTkyQwnppKwJaMO6CitcdTk5MzEJ6aSxCWjDs3UKK1x1OTkzMwnppLMJdMOhbmcKK1x1OTkzNAnppLQJZsSTbgorXHU5OTNGCemkvwlzxY11CitcdTk5NEMJ6aWMCXpodcOgbgorXHU5OTRECemljQlzaMOgbgorXHU5OTRGCemljwlkw6BuCitcdTk5NTIJ6aWSCXLDoW8KK1x1OTk2MgnppaIJbsOhbmcKK1x1OTk2MwnppaMJc2jDrQorXHU5OTY5CemlqQl4w6wKK1x1OTk2Rgnppa8JamnDoG4KK1x1OTk3NQnppbUJxJtyCitcdTk5NzkJ6aW5CWLFjQorXHU5OTdFCemlvglkw7J1CitcdTk5OTAJ6aaQCXhpxasKK1x1OTk5NQnpppUJbsOhbmcKK1x1OTk5NgnpppYJc2jHknUKK1x1OTk5OAnpppgJZ3XDsworXHU5OTk5CemmmQl4acSBbmcKK1x1OTlBMwnppqMJeceObgorXHU5OUE2Cemmpgl4acSBbgorXHU5OUE5CemmqQlmw6luCitcdTk5QUYJ6aavCWjDoW4KK1x1OTlCMAnpprAJZMOgaQorXHU5OUIxCemmsQlkdcOyCitcdTk5QjIJ6aayCXR1xY0KK1x1OTlCNQnpprUJemjDuQorXHU5OUM0CemnhAlwx5IKK1x1OTlDOQnpp4kJamnHkm5nCitcdTk5Q0IJ6aeLCXpoxIFvCitcdTk5RDMJ6aeTCXDEqworXHU5OUQ0CemnlAl6x45uZworXHU5OUQ1CemnlQlqacOgCitcdTk5RDYJ6aeWCWTDoGkKK1x1OTlEOQnpp5kJZsO5CitcdTk5RTYJ6aemCWppw6AKK1x1OTlGMwnpp7MJZMOgbgorXHU5OUZFCemnvgl0dcOsCitcdTlBMDEJ6aiBCWNoxJtuZworXHU5QTAyCemoggl4xKtuZworXHU5QTA0CemohAlsw7kKK1x1OUEwOAnpqIgJasOsCitcdTlBMEYJ6aiPCXHDrQorXHU5QTFGCemonwlndcSrCitcdTlBMkEJ6aiqCXPFjXUKK1x1OUEyQwnpqKwJY2jDqW5nCitcdTlBMzcJ6ai3CXPEgW8KK1x1OUEzOAnpqLgJc2jDoG4KK1x1OUEzQQnpqLoJc2h1xIFuZworXHU5QTNDCemovAlsw7kKK1x1OUE0MQnpqYEJw6BvCitcdTlBNDIJ6amCCWPEgW4KK1x1OUE0NAnpqYQJY8WNbmcKK1x1OUE1MAnpqZAJZGnDoG4KK1x1OUE1NQnpqZUJamnEgW8KK1x1OUE1NgnpqZYJdGnEmworXHU5QTYwCempoAljaMOtCitcdTlBNjIJ6amiCWzHmAorXHU5QTZCCempqwliacSBbworXHU5QTZGCemprwl4w7puCitcdTlBNzAJ6amwCWNow60KK1x1OUE3NgnpqbYJc2jHkAorXHU5QTdCCempuwl6aMO5CitcdTlBODUJ6aqFCWh1w6EKK1x1OUE5MgnpqpIJa8OoCitcdTlBOUIJ6aqbCcOgbworXHU5QTlECemqnQlsacO6CitcdTlBQTEJ6aqhCWx1w7MKK1x1OUFBNAnpqqQJemjDsnUKK1x1OUFBNQnpqqUJasOsCitcdTlBQTgJ6aqoCWfHlAorXHU5QUE5CemqqQlrx45uZworXHU5QUIwCemqsAl0w7N1CitcdTlBQjEJ6aqxCXhpw6gKK1x1OUFCMgnpqrIJYsSBbworXHU5QUI0CemqtAljaMSrCitcdTlBQjUJ6aq1CXTEqworXHU5QUI2Cemqtglkx5AKK1x1OUFCOQnpqrkJcWnEgW8KK1x1OUFCQQnpqroJZ8OydQorXHU5QUMyCemrgglnw6kKK1x1OUFDMwnpq4MJYseObmcKK1x1OUFDOQnpq4kJYsWNCitcdTlBRDEJ6auRCWTDugorXHU5QUQzCemrkwlzdceQCitcdTlBRDUJ6auVCWLDrG4KK1x1OUFEOQnpq5kJZ8SBbworXHU5QUUwCemroAlkw60KK1x1OUFFMwnpq6MJZseObmcKK1x1OUFFNwnpq6cJZMOgbgorXHU5QUVECemrrQl6xKsKK1x1OUFFRQnpq64JZsOgCitcdTlBRUYJ6auvCXLDoW4KK1x1OUFGMwnpq7MJbcOhbworXHU5QUY1CemrtQnDqXIKK1x1OUFGQgnpq7sJasOsCitcdTlBRkMJ6au8CXDDqW5nCitcdTlCMDAJ6ayACWTDrQorXHU5QjA1CemshQlww6luZworXHU5QjBDCemsjAlkdceSCitcdTlCMjEJ6ayhCWjHkm5nCitcdTlCMjgJ6ayoCWjDsm5nCitcdTlCMjkJ6aypCWjDqAorXHU5QjJBCemsqglkw7J1CitcdTlCMkMJ6aysCWTDsnUKK1x1OUIzMgnprLIJZ8OpCitcdTlCMzMJ6ayzCWp1w6BuCitcdTlCMzYJ6ay2CWd1xKsKK1x1OUIzQwnprLwJZ3XHkAorXHU5QjQyCemtgglow7puCitcdTlCNDUJ6a2FCW3DqGkKK1x1OUI0NwnprYcJeceObgorXHU5QjRDCemtjAlxxKsKK1x1OUI1MAnprZAJY2jDs3UKK1x1OUI1OAnprZgJeceObgorXHU5QjVBCemtmgl5w7oKK1x1OUI1RgnprZ8JZ8WNbmcKK1x1OUI2MAnpraAJdHXFjQorXHU5QjYxCemtoQlkacOgbworXHU5QjY0CemtpAlix45uCitcdTlCNkQJ6a2tCXfHjm4KK1x1OUI2RQnpra4JYsOtCitcdTlCNkYJ6a2vCWzHlAorXHU5QjcwCemtsAl3w6luCitcdTlCN0YJ6a2/CWLDoAorXHU5QjgyCemuggliw6AKK1x1OUI4QgnprosJcMOtCitcdTlCOEUJ6a6OCWLEgW8KK1x1OUI5MgnprpIJZsO5CitcdTlCOTQJ6a6UCWrDuQorXHU5QjlCCemumwlzaMWrCitcdTlCOUMJ6a6cCWjDsnUKK1x1OUI5RQnprp4Jw6lyCitcdTlCQTAJ6a6gCXfDqWkKK1x1OUJBMgnprqIJemjDsnUKK1x1OUJBNwnprqcJdMOtCitcdTlCQTgJ6a6oCXHDrQorXHU5QkE5CemuqQliw6xuZworXHU5QkFCCemuqwlqacSBbworXHU5QkFDCemurAliw7kKK1x1OUJBRAnprq0JZ3XEqworXHU5QkFFCemurgl4acSBbgorXHU5QkFGCemurwlnw6kKK1x1OUJCNQnprrUJZHXDsworXHU5QkI4CemuuAltaceObgorXHU5QkI5CemuuQlzaMSBbgorXHU5QkM2Cemvhglmx5QKK1x1OUJDNwnpr4cJaHXDoG4KK1x1OUJDOAnpr4gJY2jDs3UKK1x1OUJDOQnpr4kJbMeQCitcdTlCRDcJ6a+XCXhpx45uZworXHU5QkUyCemvogluw60KK1x1OUJFOQnpr6kJaHXDoG4KK1x1OUJGNwnpr7cJc2jDrAorXHU5QkY4CemvuAlow7N1CitcdTlCRkEJ6a+6CXrDqWkKK1x1OUJGRQnpr74JYmnEgW4KK1x1OUMwNgnpsIYJY2jFq24KK1x1OUMwNwnpsIcJcWnDqAorXHU5QzA5CemwiQlodcOhbmcKK1x1OUMwRAnpsI0JcWnFqworXHU5QzEwCemwkAnDqAorXHU5QzE0CemwlAlqaceObgorXHU5QzE2Cemwlgl0dceSCitcdTlDMTcJ6bCXCWjDugorXHU5QzIwCemwoAlndcSBbgorXHU5QzI1CemwpQlndcSBbgorXHU5QzI3CemwpwlkacOpCitcdTlDMjkJ6bCpCXnDoW8KK1x1OUMyQwnpsKwJY8SBbgorXHU5QzNCCemwuwltw6FuCitcdTlDNDAJ6bGACWrDrAorXHU5QzQ1CemxhQl5xY1uZworXHU5QzQ2Cemxhgl6aMSBbmcKK1x1OUM0QgnpsYsJccWrCitcdTlDNEUJ6bGOCWppx45vCitcdTlDNTMJ6bGTCXNow6BuCitcdTlDNTQJ6bGUCXNow6BuCitcdTlDNTYJ6bGWCWd1w6wKK1x1OUM1NwnpsZcJbMOtbgorXHU5QzY0CemxpAlnx45uCitcdTlDNzEJ6bGxCWzHkAorXHU5QzdCCemxuwliw6AKK1x1OUM4NAnpsoQJYsOgCitcdTlDODYJ6bKGCXDDrW5nCitcdTlDOEIJ6bKLCWLDoAorXHU5QzhECemyjQliw6BvCitcdTlDOTAJ6bKQCXTDoWkKK1x1OUM5MgnpspIJamnDqQorXHU5Qzk0CemylAl3xJtpCitcdTlDOTcJ6bKXCWppxIFvCitcdTlDOUMJ6bKcCXhpxIFuCitcdTlDOUQJ6bKdCWh1w6BuCitcdTlDQUEJ6bKqCWrFq24KK1x1OUNBRQnpsq4JbMOtbmcKK1x1OUNCOQnpsrkJYsSrCitcdTlDQkYJ6bK/CWNow6FuZworXHU5Q0MxCemzgQl3xJNuCitcdTlDQzQJ6bOECWRpw6kKK1x1OUNDRgnps48JZ3XEgW4KK1x1OUNEMAnps5AJecOhbworXHU5Q0QyCemzkglqacSBbgorXHU5Q0RBCemzmglndcOsCitcdTlDREQJ6bOdCXNow6BuCitcdTlDRTAJ6bOgCWjDuQorXHU5Q0UxCemzoQlnx45uCitcdTlDRTQJ6bOkCWTHjm8KK1x1OUNFNgnps6YJeceQCitcdTlDRTcJ6bOnCWbDugorXHU5Q0VBCemzqglix5QKK1x1OUNFRQnps64JaMOgbgorXHU5Q0YyCemzsglzaMSrCitcdTlEMDEJ6bSBCWp1w6kKK1x1OUQwMwnptIMJanXDqQorXHU5RDBBCem0iglqacSBCitcdTlEMUIJ6bSbCXl1xIFuCitcdTlEMUUJ6bSeCXhpxIFvCitcdTlEMUYJ6bSfCWNoxKsKK1x1OUQyMAnptKAJZMOgbgorXHU5RDJBCem0qglow6FuZworXHU5RDM1Cem0tQlow7JuZworXHU5RDNDCem0vAlsdcOyCitcdTlENDEJ6bWBCWppxIFvCitcdTlENDQJ6bWECWNoxKsKK1x1OUQ0NQnptYUJbHXDsgorXHU5RDRECem1jQlix5QKK1x1OUQ1MAnptZAJasO5bgorXHU5RDU1Cem1lQlixKsKK1x1OUQ1NwnptZcJdMSrCitcdTlENUQJ6bWdCcOpCitcdTlENjAJ6bWgCWfHlAorXHU5RDYxCem1oQl3x5QKK1x1OUQ2NgnptaYJYsOsbmcKK1x1OUQ2OAnptagJc2jFqworXHU5RDZCCem1qwlmw6huZworXHU5RDZECem1rQlkdcOyCitcdTlEN0UJ6bW+CWvFq24KK1x1OUQ4QQnptooJZ8STbmcKK1x1OUQ4Rgnpto8JasSrCitcdTlEOTYJ6baWCXFpxasKK1x1OURBMgnptqIJa8WrbgorXHU5REE1Cem2pQltw6lpCitcdTlEQTkJ6bapCXfDuQorXHU5REFECem2rQlmx45uZworXHU5REIyCem2sgl3xJNuZworXHU5REJCCem2uwlow7oKK1x1OURCQwnptrwJamnEgW4KK1x1OURCRAnptr0Jc8eUbgorXHU5REJFCem2vgljw60KK1x1OURDMAnpt4AJY8OtCitcdTlEQzEJ6beBCW7DrAorXHU5REMyCem3ggl5w6BvCitcdTlEQzMJ6beDCXnDoG4KK1x1OURDNwnpt4cJa8OydQorXHU5REM4Cem3iAl0xKsKK1x1OURDQgnpt4sJdMO6CitcdTlERDAJ6beQCWNow6luCitcdTlERDYJ6beWCXnEqworXHU5RERBCem3mglsacOhbworXHU5RERCCem3mwlyw7NuZworXHU5RERDCem3nAlsw7N1CitcdTlERTUJ6belCXPEqworXHU5REVBCem3qgl5xIFuCitcdTlERjEJ6bexCWvEgW8KK1x1OURGOQnpt7kJecSrbmcKK1x1OUUwMQnpuIEJbHXDsworXHU5RTAzCem4gwliw6wKK1x1OUUwQgnpuIsJaMO5CitcdTlFMEQJ6biNCW3DrQorXHU5RTEzCem4kwlsxJtpCitcdTlFMUMJ6bicCWRpx45vCitcdTlFMjAJ6bigCWppxasKK1x1OUUyOAnpuKgJYseObworXHU5RTNDCem4vAl6aMSBbworXHU5RTNECem4vQlnxJMKK1x1OUU0NQnpuYUJw6kKK1x1OUU0RAnpuY0Ja8WrbgorXHU5RTUyCem5kglnxJNuZworXHU5RTU3Cem5lwnDqAorXHU5RTU5Cem5mQljw60KK1x1OUU1QgnpuZsJbcOpaQorXHU5RTVFCem5ngl5w6FvCitcdTlFNUYJ6bmfCXfEk25nCitcdTlFNjMJ6bmjCWjDuQorXHU5RTcyCem5sgltw6luZworXHU5RTdFCem5vgljdcOzCitcdTlFODAJ6bqACXnFjXUKK1x1OUU4NAnpuoQJY8WrCitcdTlFODYJ6bqGCWNow7oKK1x1OUU4NwnpuocJasWrbgorXHU5RTg4Cem6iAl6aMeUCitcdTlFOEQJ6bqNCWxpw7oKK1x1OUU5MgnpupIJccOtCitcdTlFOTYJ6bqWCWrEq25nCitcdTlFOTcJ6bqXCWzDrAorXHU5RTk4Cem6mAlow6kKK1x1OUVBOAnpuqgJY2jHjm8KK1x1OUVBQgnpuqsJbWnHjm4KK1x1OUVBQwnpuqwJZsWrCitcdTlFQjAJ6bqwCW3Ds3UKK1x1OUVCNQnpurUJbWnDoG4KK1x1OUVCQwnpurwJbcSBCitcdTlFQkQJ6bq9CW3EgQorXHU5RUJFCem6vglodcSrCitcdTlFQzIJ6buCCWbDqW4KK1x1OUVDQQnpu4oJa3XDoG5nCitcdTlFQ0MJ6buMCWjDqW5nCitcdTlFQ0QJ6buNCXNox5QKK1x1OUVEMAnpu5AJY2jEqworXHU5RUQxCem7kQloxJNpCitcdTlFRDIJ6buSCWjEk2kKK1x1OUVENgnpu5YJeMOsCitcdTlFREUJ6bueCWRpx45uCitcdTlFREYJ6bufCXnEqworXHU5RUUzCem7owltxJtpCitcdTlFRTUJ6bulCXHDrW5nCitcdTlFRTYJ6bumCXnDuQorXHU5RUU3Cem7pwlsw60KK1x1OUVFOAnpu6gJZMeObmcKK1x1OUVFOQnpu6kJZMO6CitcdTlFRUMJ6busCcOgbgorXHU5RUVFCem7rglkx45uCitcdTlFRUYJ6buvCcOgbgorXHU5RUYwCem7sAl6aMSbbgorXHU5RUZBCem7uglmxJtuCitcdTlFRkIJ6bu7CWbDugorXHU5RUZDCem7vAlmx5QKK1x1OUVGRQnpu74JbcOpbmcKK1x1OUVGRgnpu78JeXXDoW4KK1x1OUYwMwnpvIMJbcSbbmcKK1x1OUYwNwnpvIcJw6FvCitcdTlGMEQJ6byNCXR1w7MKK1x1OUYwRgnpvI8JbcOsCitcdTlGMTIJ6bySCXrEqworXHU5RjE2Cem8lglmw6luCitcdTlGMjkJ6bypCXHDugorXHU5RjM2Cem8tglzxKsKK1x1OUYzNwnpvLcJeMSrCitcdTlGMzgJ6by4CWjFjXUKK1x1OUY0MQnpvYEJaMWNdQorXHU5RjQyCem9ggnDqAorXHU5RjQ0Cem9hAlqxKsKK1x1OUY0QgnpvYsJemjEgWkKK1x1OUY0RAnpvY0JccOtCitcdTlGNEYJ6b2PCWrEqworXHU5RjUxCem9kQlqxKsKK1x1OUY1OAnpvZgJeGnDqAorXHU5RjVCCem9mwljaMOhaQorXHU5RjVECem9nQljaMSrCitcdTlGNUYJ6b2fCWrHlAorXHU5RjYwCem9oAl0acOhbworXHU5RjY2Cem9pgl5w61uCitcdTlGNjcJ6b2nCW5pw6gKK1x1OUY2QQnpvaoJY2h1w7IKK1x1OUY2RAnpva0JY2jHlAorXHU5RjcxCem9sQljaHXDsgorXHU5RjcyCem9sglxx5QKK1x1OUY3NAnpvbQJeGnHjm4KK1x1OUY3NQnpvbUJw7N1CitcdTlGNzYJ6b22CcOoCitcdTlGODMJ6b6DCWrHlAorXHU5Rjg5Cem+iQlsx5JuZworXHU5RjhFCem+jglrw6gKK1x1OUY5NgnpvpYJbMeSbmcKK1x1OUY5QQnpvpoJZ8WNbmcKK1x1OUY5RAnpvp0JasWrbgorXHU5RkEwCem+oAl5dcOoCitcdTlGQTMJ6b6jCWTFjXUKK1x1RDg0MFx1REM2NQnwoIGlCWfHjgorXHVEODU4XHVERTQ2CfCmiYYJY2jDoQorCisjIHByZXZpb3VzIGZpeGVzCisKKzRGMUEJ5LyaCWh1w6wKKzRGM0QJ5Ly9CWppYQorNEY0MgnkvYIJemhlbmcKKzRGNTQJ5L2UCXpow6BuCis0Rjg3CeS+hwl5w60KKzRGOTcJ5L6XCXTDs25nCis0RkE4CeS+qAlxacOhbworNEZDNwnkv4cJa3XEg25nCis0RkUyCeS/ogl4aXUKKzRGRUEJ5L+qCWzDrAorNEZGMQnkv7EJasO5Cis1MDA0CeWAhAl5w6FvCis1MDA2CeWAhglsacSDbmcKKzUwMDcJ5YCHCXfEg24KKzUwMTUJ5YCVCWNodcOtCis1MDI0CeWApAl6aMOtCis1MDJECeWArQl3ZWkKKzUwMkUJ5YCuCWx1xY8KKzUwM0QJ5YC9CXhpw6EKKzUwNTMJ5YGTCXfDsgorNTA4MAnlgoAJa3XErQorNTA4MQnlgoEJc8WPdQorNTA4NgnlgoYJeXXDoG4KKzUwOTMJ5YKTCXNow6BuCis1MEQ0CeWDlAl6xa1uCis1MEVGCeWDrwlsxK1uCis1MTBECeWEjQlzaMSDCSNlZGl0ZWQKKzUxNkEJ5YWqCXnDugorNTE5OQnlhpkJeGnElQorNTFBMAnlhqAJZ3XDoG4KKzUxQ0EJ5YeKCXHDvW5nCis1MjRDCeWJjAlsw6AKKzUyNEUJ5YmOCXNoYQorNTI2MgnliaIJemh1w7MKKzUyNjYJ5YmmCXlhbgorNTJDMgnli4IJaMOhbworNTJERAnli50Jc2jDqG5nCis1MzNECeWMvQl5xINuCSMgZWRpdGVkIGZyb20gecOjbgorNTM0MAnljYAJcXUKKzUzNEYJ5Y2PCXhpw6kKKzUzNTIJ5Y2SCXrDugorNTNBMQnljqEJeXXDoW4KKzUzQTcJ5Y6nCWrErW4KKzUzQUUJ5Y6uCXNpCis1M0NFCeWPjglzaG91Cis1NDAxCeWQgQl5w7kKKzU0MDIJ5ZCCCW3DoW5nCis1NDA4CeWQiAlow6kKKzU0MTMJ5ZCTCXhpw6AKKzU0MTQJ5ZCUCXnElQorNTQyRAnlkK0Ja2VuZworNTQzMgnlkLIJecStbgorNTQ0MQnlkYEJasO5bgorNTQ1MQnlkZEJdHVuCis1NDU2CeWRlglsw6wKKzU0NUMJ5ZGcCXd1Cis1NDVGCeWRnwlxdcSDbgkjZWRpdGVkIGZyb20gcXXDo24KKzU0NkMJ5ZGsCXjDrAorNTQ3MgnlkbIJemkKKzU0OEYJ5ZKPCXnFj25nCis1NDk3CeWSlwl6dcWPCis1NEE2CeWSpgl5w60KKzU0QjIJ5ZKyCXhpw6BvCis1NEIzCeWSswlrw6kKKzU0QkUJ5ZK+CWzEg28JI2VkaXRlZCBmcm9tIGzDo28KKzU0QzUJ5ZOFCXhpb25nCis1NENDCeWTjAlww6BpCis1NEQwCeWTkAlrdWFuZworNTRFNgnlk6YJw7MKKzU0RUIJ5ZOrCXrDugorNTUwMAnllIAJecWPdQorNTUwQgnllIsJdMWtCis1NTI5CeWUqQl3bworNTUyQgnllKsJecOtbgorNTUzMAnllLAJc2h1YQorNTUzQQnllLoJdGnEg24KKzU1NDUJ5ZWFCXpodcOzCis1NTUyCeWVkgl3YQorNTU1OQnllZkJesStCis1NTVFCeWVngl5xIMJI2VkaXRlZCBmcm9tIHnDoworNTU2NwnllacJesOpCis1NTc4CeWVuAl4acOgbworNTU4MAnlloAJa8OoCis1NTgxCeWWgQl5w7oKKzU1OEMJ5ZaMCXpob3UKKzU1OTIJ5ZaSCXrDoW4KKzU1OTQJ5ZaUCXdvCis1NTk1CeWWlQltacSDbgkjZWRpdGVkIGZyb20gbWnDo24KKzU1QUUJ5ZauCWRhbgorNTVBRgnllq8JcGVuCis1NUI0CeWWtAl3ZWkKKzU1QzQJ5ZeECXNow6AKKzU1QzYJ5ZeGCXFpw6BuZworNTVENQnll5UJcsO5Cis1NUYwCeWXsAlnw6gKKzU1RjUJ5Ze1CXRvbmcKKzU2MEYJ5ZiPCWppxIMKKzU2MTUJ5ZiVCXhpYW4KKzU2MUMJ5ZicCW3DoAorNTYyMQnlmKEJdGFuZworNTYyQQnlmKoJbcSDaQkjZWRpdGVkIGZyb20gbcOjaQorNTYyQwnlmKwJenVvCis1NjNBCeWYuglxacOhbworNTYzRQnlmL4JdMOhbgorNTY2MwnlmaMJemh1w7MKKzU2NzAJ5ZmwCXlvbmcKKzU2NzgJ5Zm4CWTDuW4KKzU2ODgJ5ZqICXnDoAorNTZBMgnlmqIJbsOhbmcKKzU2QUEJ5ZqqCXJhbmcKKzU2QkMJ5Zq8CWp1w6kKKzU2RTQJ5ZukCXTDum4KKzU2RUYJ5ZuvCWd1w7MKKzU2RjcJ5Zu3CXF1bgorNTcwOAnlnIgJanXDoG4KKzU3NkUJ5Z2uCXTDoWkKKzU3N0IJ5Z27CWTErQorNTdBOAnlnqgJc2jFj3UKKzU3QzYJ5Z+GCXF1w6gKKzU3Q0YJ5Z+PCXnDoW4KKzU3RTEJ5Z+hCXnDoAorNTdFOQnln6kJemhlbmcKKzU3RkUJ5Z++CWrDuQorNTgxNgnloJYJbsSDbworNTgzOAnloLgJZsOabmcKKzU4NEEJ5aGKCWt1w6BpCis1ODVGCeWhnwl6w6BuZworNTg3MwnlobMJcMOpbmcKKzU4N0IJ5aG7CW3DsgorNTg4NwnloocJemhhbmcKKzU4OEYJ5aKPCXFpxINuZwkjZWRpdGVkIGZyb20gcWnDo25nCis1OEE0CeWipAl0dcOtCis1OEFECeWirQlzaMOobmcKKzU4QjAJ5aKwCXTDoW4KKzU4QkIJ5aK7CXFpw6FuZworNThDNgnlo4YJeHVhbgorNThEMAnlo5AJeMStCis1OEU3CeWjpwl5w6FuCis1OTA1CeWkhQlqacOgbmcKKzU5MDYJ5aSGCWZlbmcKKzU5MTUJ5aSVCXjDrAorNTkzRQnlpL4JamnDoQorNTk0NwnlpYcJccOtCis1OTdFCeWlvgl4aWFuCis1OUQ0CeWnlAl3xJVpCis1OUZBCeWnuglzaGVuCis1QTI5CeWoqQl3xINuCSNlZGl0ZWQgZnJvbSB3w6NuCis1QTJBCeWoqgl3w7oKKzVBMkUJ5aiuCXnDoW4JI2VkaXRlZCBmcm9tIHnDn24KKzVBNjQJ5amkCWNob3UKKzVBN0MJ5am8CXJ1w7IKKzVBOUMJ5aqcCXpoZW4KKzVBQUYJ5aqvCWd1xK0KKzVBQzAJ5auACXHDrW4KKzVCNDYJ5a2GCXlpbmcKKzVCNUIJ5a2bCWLDsworNUI2QwnlrawJbmFvCis1QjcxCeWtsQljaMOhbgorNUJENgnlr5YJccOsbgorNUJEOAnlr5gJemjDrAorNUMwNQnlsIUJa8OoCis1QzNGCeWwvwluacOgbworNUM0RgnlsY8JcMOtbmcJI2VkaXRlZCBmcm9tIHDDnW5nCis1Qzg0CeWyhAl5dcOoCis1Q0FFCeWyrgl0dcOzCis1Q0IwCeWysAl5xY91Cis1Q0M4CeWziAlsdcOyCis1Q0U1CeWzpQl6aGVuZworNUQxNwnltJcJZ2FuZworNUQxOAnltJgJbMO6bgorNUQyMQnltKEJaMOhbgorNUU3NwnlubcJYsOsbmcKKzVFN0UJ5bm+CWrErQorNUU3Rgnlub8JZ3XEg25nCSNlZGl0ZWQgZnJvbSBndcOjbmcKKzVFRTkJ5bupCWLErW5nCis1RjA0CeW8hAluw7JuZworNUYzQQnlvLoJcWnDoW5nCis1Rjg0CeW+hAlqw6xuZworNjBBNgnmgqYJeXXDqAorNjBDQQnmg4oJbGnDoW5nCis2MERECeaDnQl0xINuZwkjZWRpdGVkIGZyb20gdMOjbmcKKzYwREUJ5oOeCXhpbgorNjBFMQnmg6EJw6gKKzYxM0MJ5oS8CXNow6huCis2MjQxCeaJgQliacSDbgkjZWRpdGVkIGZyb20gYmnDo24KKzYyNTMJ5omTCWTEgwkjZWRpdGVkIGZyb20gZMOjCis2MjVCCeaJmwlrw6FuZworNjI3MgnmibIJcWnDoW4KKzYyOUIJ5oqbCXBhbworNjJBRQnmiq4JemjElW4KKzYyQ0QJ5ouNCWLDsworNjJDRQnmi44JbGluZworNjJEMwnmi5MJdHXDsgorNjJGRAnmi70Jemh1YWkKKzYzQkIJ5o67CXNhbworNjNEMAnmj5AJdMOtCis2M0UzCeaPowljaHXEg2kJI2VkaXRlZCBmcm9tIGNodcOjaQorNjNFNAnmj6QJasOtCis2NDAzCeaQgwl6xY9uZworNjQxQgnmkJsJamlhbgorNjQzNgnmkLYJcWnEg25nCSNlZGl0ZWQgZnJvbSBxacOjbmcKKzhCQjgJ6K64CXjFrQorNkQ0RgnmtY8JbGnDugorODlDOAnop4gJbMSDbgkjZWRpdGVkIGZyb20gbMOjbgpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9pbnZ1Y2EuaWN1IGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9pbnZ1Y2EuaWN1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhMzdjMmUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL2ludnVjYS5pY3UKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9wYWNrYWdlLmh0bWwgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL3BhY2thZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44MDk2N2RmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9wYWNrYWdlLmh0bWwKQEAgLTAsMCArMSwxNSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzwhLS0gIENvcHlyaWdodCAoQykgMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQKKyAgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorCisgICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvcGFja2FnZS5odG1sLHYgJAorICAkUmV2aXNpb246IDEuMSAkCisgICREYXRlOiAyMDAwLzAzLzE1IDIxOjM1OjUyICQKKy0tPgorPC9oZWFkPgorPGJvZHkgYmdjb2xvcj0id2hpdGUiPgorUmVzb3VyY2UgZGF0YSB1c2VkIGJ5IGNsYXNzZXMgaW4gY29tLmlibS50ZXh0LgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvcG5hbWVzLmljdSBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvcG5hbWVzLmljdQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTBiMWZmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS9wbmFtZXMuaWN1CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvdGhhaV9kaWN0IGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS90aGFpX2RpY3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOWY4Zjc3ZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvdGhhaV9kaWN0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvdWNhZGF0YS5pY3UgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL3VjYWRhdGEuaWN1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjMDJiMWUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvaW1wbC9kYXRhL3VjYWRhdGEuaWN1CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvdW5hbWVzLmljdSBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvdW5hbWVzLmljdQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDllMjU0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS91bmFtZXMuaWN1CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvdW5vcm0uaWN1IGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS91bm9ybS5pY3UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmVlZWE2YQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvdW5vcm0uaWN1CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvdXByb3BzLmljdSBiL3NyYy9jb20vaWJtL2ljdS9pbXBsL2RhdGEvdXByb3BzLmljdQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZmYwYTI2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ltcGwvZGF0YS91cHJvcHMuaWN1CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9sYW5nL1VDaGFyYWN0ZXIuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9sYW5nL1VDaGFyYWN0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mMmZjNmEyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2xhbmcvVUNoYXJhY3Rlci5qYXZhCkBAIC0wLDAgKzEsNDIyMSBAQAorLyoqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9sYW5nL1VDaGFyYWN0ZXIuamF2YSx2ICQgCisqICREYXRlOiAyMDAyLzEyLzExIDIzOjM3OjQyICQgCisqICRSZXZpc2lvbjogMS42MCAkCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1Lmxhbmc7CisKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuVUNoYXJhY3RlclByb3BlcnR5OworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuUmFuZ2VWYWx1ZUl0ZXJhdG9yOworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuVmFsdWVJdGVyYXRvcjsKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLlZlcnNpb25JbmZvOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuQnJlYWtJdGVyYXRvcjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0LlVURjE2OworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuTm9ybWFsaXplckltcGw7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5VQ2hhcmFjdGVyVXRpbGl0eTsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLlVDaGFyYWN0ZXJOYW1lOworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuVUNoYXJhY3Rlck5hbWVDaG9pY2U7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5VUHJvcGVydHlBbGlhc2VzOworCisvKioKKyAqIDxwPgorICogVGhlIFVDaGFyYWN0ZXIgY2xhc3MgcHJvdmlkZXMgZXh0ZW5zaW9ucyB0byB0aGUgCisgKiA8YSBocmVmPWh0dHA6Ly9qYXZhLnN1bi5jb20vajJzZS8xLjMvZG9jcy9hcGkvamF2YS9sYW5nL0NoYXJhY3Rlci5odG1sPgorICogamF2YS5sYW5nLkNoYXJhY3RlcjwvYT4gY2xhc3MuIFRoZXNlIGV4dGVuc2lvbnMgcHJvdmlkZSBzdXBwb3J0IGZvciAKKyAqIFVuaWNvZGUgMy4yIHByb3BlcnRpZXMgYW5kIHRvZ2V0aGVyIHdpdGggdGhlIDxhIGhyZWY9VVRGMTYuaHRtbD5VVEYxNjwvYT4gCisgKiBjbGFzcywgcHJvdmlkZSBzdXBwb3J0IGZvciBzdXBwbGVtZW50YXJ5IGNoYXJhY3RlcnMgKHRob3NlIHdpdGggY29kZSAKKyAqIHBvaW50cyBhYm92ZSBVK0ZGRkYpLgorICogPC9wPgorICogPHA+CisgKiBDb2RlIHBvaW50cyBhcmUgcmVwcmVzZW50ZWQgaW4gdGhlc2UgQVBJIHVzaW5nIGludHMuIFdoaWxlIGl0IHdvdWxkIGJlIAorICogbW9yZSBjb252ZW5pZW50IGluIEphdmEgdG8gaGF2ZSBhIHNlcGFyYXRlIHByaW1pdGl2ZSBkYXRhdHlwZSBmb3IgdGhlbSwgCisgKiBpbnRzIHN1ZmZpY2UgaW4gdGhlIG1lYW50aW1lLgorICogPC9wPgorICogPHA+CisgKiBUbyB1c2UgdGhpcyBjbGFzcyBwbGVhc2UgYWRkIHRoZSBqYXIgZmlsZSBuYW1lIGljdTRqLmphciB0byB0aGUgCisgKiBjbGFzcyBwYXRoLCBzaW5jZSBpdCBjb250YWlucyBkYXRhIGZpbGVzIHdoaWNoIHN1cHBseSB0aGUgaW5mb3JtYXRpb24gdXNlZCAKKyAqIGJ5IHRoaXMgZmlsZS48YnI+CisgKiBFLmcuIEluIFdpbmRvd3MgPGJyPgorICogPGNvZGU+c2V0IENMQVNTUEFUSD0lQ0xBU1NQQVRIJTskSkFSX0ZJTEVfUEFUSC91Y2hhcmFjdGVyLmphcjwvY29kZT4uPGJyPgorICogT3RoZXJ3aXNlLCBhbm90aGVyIG1ldGhvZCB3b3VsZCBiZSB0byBjb3B5IHRoZSBmaWxlcyB1cHJvcHMuZGF0IGFuZCAKKyAqIHVuYW1lcy5pY3UgZnJvbSB0aGUgaWN1NGogc291cmNlIHN1YmRpcmVjdG9yeSAKKyAqIDxpPiRJQ1U0Sl9TUkMvc3JjL2NvbS5pYm0uaWN1LmltcGwuZGF0YTwvaT4gdG8geW91ciBjbGFzcyBkaXJlY3RvcnkgCisgKiA8aT4kSUNVNEpfQ0xBU1MvY29tLmlibS5pY3UuaW1wbC5kYXRhPC9pPi4KKyAqIDwvcD4KKyAqIDxwPgorICogQXNpZGUgZnJvbSB0aGUgYWRkaXRpb25zIGZvciBVVEYtMTYgc3VwcG9ydCwgYW5kIHRoZSB1cGRhdGVkIFVuaWNvZGUgMy4xCisgKiBwcm9wZXJ0aWVzLCB0aGUgbWFpbiBkaWZmZXJlbmNlcyBiZXR3ZWVuIFVDaGFyYWN0ZXIgYW5kIENoYXJhY3RlciBhcmU6CisgKiA8dWw+CisgKiA8bGk+IFVDaGFyYWN0ZXIgaXMgbm90IGRlc2lnbmVkIHRvIGJlIGEgY2hhciB3cmFwcGVyIGFuZCBkb2VzIG5vdCBoYXZlIAorICogICAgICBBUElzIHRvIHdoaWNoIGludm9sdmVzIG1hbmFnZW1lbnQgb2YgdGhhdCBzaW5nbGUgY2hhci48YnI+CisgKiAgICAgIFRoZXNlIGluY2x1ZGU6IAorICogICAgICA8dWw+CisgKiAgICAgICAgPGxpPiBjaGFyIGNoYXJWYWx1ZSgpLCAKKyAqICAgICAgICA8bGk+IGludCBjb21wYXJlVG8oamF2YS5sYW5nLkNoYXJhY3RlciwgamF2YS5sYW5nLkNoYXJhY3RlciksIGV0Yy4KKyAqICAgICAgPC91bD4KKyAqIDxsaT4gVUNoYXJhY3RlciBkb2VzIG5vdCBpbmNsdWRlIENoYXJhY3RlciBBUElzIHRoYXQgYXJlIGRlcHJlY2F0ZWQsIG5vdCAKKyAqICAgICAgZG9lcyBpdCBpbmNsdWRlIHRoZSBKYXZhLXNwZWNpZmljIGNoYXJhY3RlciBpbmZvcm1hdGlvbiwgc3VjaCBhcyAKKyAqICAgICAgYm9vbGVhbiBpc0phdmFJZGVudGlmaWVyUGFydChjaGFyIGNoKS4KKyAqIDxsaT4gQ2hhcmFjdGVyIG1hcHMgY2hhcmFjdGVycyAnQScgLSAnWicgYW5kICdhJyAtICd6JyB0byB0aGUgbnVtZXJpYyAKKyAqICAgICAgdmFsdWVzICcxMCcgLSAnMzUnLiBVQ2hhcmFjdGVyIGFsc28gZG9lcyB0aGlzIGluIGRpZ2l0IGFuZAorICogICAgICBnZXROdW1lcmljVmFsdWUsIHRvIGFkaGVyZSB0byB0aGUgamF2YSBzZW1hbnRpY3Mgb2YgdGhlc2UKKyAqICAgICAgbWV0aG9kcy4gIE5ldyBtZXRob2RzIHVuaWNvZGVEaWdpdCwgYW5kCisgKiAgICAgIGdldFVuaWNvZGVOdW1lcmljVmFsdWUgZG8gbm90IHRyZWF0IHRoZSBhYm92ZSBjb2RlIHBvaW50cyAKKyAqICAgICAgYXMgaGF2aW5nIG51bWVyaWMgdmFsdWVzLiAgVGhpcyBpcyBhIHNlbWFudGljIGNoYW5nZSBmcm9tIElDVTRKIDEuMy4xLgorICogPC91bD4KKyAqIDxwPgorICogRnVydGhlciBkZXRhaWwgZGlmZmVyZW5jZXMgY2FuIGJlIGRldGVybWluZWQgZnJvbSB0aGUgcHJvZ3JhbSAKKyAqICAgICAgICA8YSBocmVmID0gaHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2RldmVsb3BlcndvcmtzL29wZW5zb3VyY2UvY3ZzL2ljdTRqL35jaGVja291dH4vaWN1NGovc3JjL2NvbS9pYm0vaWN1L2Rldi90ZXN0L2xhbmcvVUNoYXJhY3RlckNvbXBhcmUuamF2YT4KKyAqICAgICAgICBjb20uaWJtLmljdS5kZXYudGVzdC5sYW5nLlVDaGFyYWN0ZXJDb21wYXJlPC9hPgorICogPC9wPgorICogPHA+CisgKiBUaGlzIGNsYXNzIGlzIG5vdCBzdWJjbGFzc2FibGUKKyAqIDwvcD4KKyAqIEBhdXRob3IgU3luIFdlZSBRdWVrCisgKiBAc3RhYmxlIElDVSAyLjEKKyAqIEBzZWUgY29tLmlibS5pY3UubGFuZy5VQ2hhcmFjdGVyQ2F0ZWdvcnkKKyAqIEBzZWUgY29tLmlibS5pY3UubGFuZy5VQ2hhcmFjdGVyRGlyZWN0aW9uCisgKi8KKworLyoKKyAqIG5vdGVzOiAKKyAqIDEpIGZvckRpZ2l0IGlzIG5vdCBwcm92aWRlZCBzaW5jZSB0aGVyZSBpcyBubyBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIAorICogaWN1NGMgdmVyc2lvbiBhbmQgdGhlIGpkayB2ZXJzaW9uCisgKi8KKyAKK3B1YmxpYyBmaW5hbCBjbGFzcyBVQ2hhcmFjdGVyCit7IAorICAgIC8vIHB1YmxpYyBpbm5lciBjbGFzc2VzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgIAorICAgIC8qKgorICAgICAqIEEgZmFtaWx5IG9mIGNoYXJhY3RlciBzdWJzZXRzIHJlcHJlc2VudGluZyB0aGUgY2hhcmFjdGVyIGJsb2NrcyBpbiB0aGUgCisgICAgICogVW5pY29kZSBzcGVjaWZpY2F0aW9uLCBnZW5lcmF0ZWQgZnJvbSBVbmljb2RlIERhdGEgZmlsZSBCbG9ja3MudHh0LiAKKyAgICAgKiBDaGFyYWN0ZXIgYmxvY2tzIGdlbmVyYWxseSBkZWZpbmUgY2hhcmFjdGVycyB1c2VkIGZvciBhIHNwZWNpZmljIHNjcmlwdCAKKyAgICAgKiBvciBwdXJwb3NlLiBBIGNoYXJhY3RlciBpcyBjb250YWluZWQgYnkgYXQgbW9zdCBvbmUgVW5pY29kZSBibG9jay4gCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGNsYXNzIFVuaWNvZGVCbG9jayBleHRlbmRzIENoYXJhY3Rlci5TdWJzZXQgCisgICAgeworICAgICAgICAvLyBibG9ja3Mgb2JqZWN0cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgCisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIEJBU0lDX0xBVElOIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFVuaWNvZGVCbG9jaygiQkFTSUNfTEFUSU4iLCAxKTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIExBVElOXzFfU1VQUExFTUVOVCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgVW5pY29kZUJsb2NrKCJMQVRJTl8xX1NVUFBMRU1FTlQiLCAyKTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIExBVElOX0VYVEVOREVEX0EKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFVuaWNvZGVCbG9jaygiTEFUSU5fRVhURU5ERURfQSIsIDMpOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVbmljb2RlQmxvY2sgTEFUSU5fRVhURU5ERURfQiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFVuaWNvZGVCbG9jaygiTEFUSU5fRVhURU5ERURfQiIsIDQpOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVbmljb2RlQmxvY2sgSVBBX0VYVEVOU0lPTlMgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBVbmljb2RlQmxvY2soIklQQV9FWFRFTlNJT05TIiwgNSk7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFVuaWNvZGVCbG9jayBTUEFDSU5HX01PRElGSUVSX0xFVFRFUlMgCisgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBVbmljb2RlQmxvY2soIlNQQUNJTkdfTU9ESUZJRVJfTEVUVEVSUyIsIDYpOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVbmljb2RlQmxvY2sgQ09NQklOSU5HX0RJQUNSSVRJQ0FMX01BUktTIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgVW5pY29kZUJsb2NrKCJDT01CSU5JTkdfRElBQ1JJVElDQUxfTUFSS1MiLCA3KTsKKyAgICAgICAgLyoqCisgICAgICAgICAqIFVuaWNvZGUgMy4yIHJlbmFtZXMgdGhpcyBibG9jayB0byAiR3JlZWsgYW5kIENvcHRpYyIuCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFVuaWNvZGVCbG9jayBHUkVFSyA9IG5ldyBVbmljb2RlQmxvY2soIkdSRUVLIiwgOCk7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFVuaWNvZGVCbG9jayBDWVJJTExJQyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgVW5pY29kZUJsb2NrKCJDWVJJTExJQyIsIDkpOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVbmljb2RlQmxvY2sgQVJNRU5JQU4gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFVuaWNvZGVCbG9jaygiQVJNRU5JQU4iLCAxMCk7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFVuaWNvZGVCbG9jayBIRUJSRVcgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFVuaWNvZGVCbG9jaygiSEVCUkVXIiwgMTEpOyAgCisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFVuaWNvZGVCbG9jayBBUkFCSUMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgVW5pY29kZUJsb2NrKCJBUkFCSUMiLCAxMik7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFVuaWNvZGVCbG9jayBTWVJJQUMgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFVuaWNvZGVCbG9jaygiU1lSSUFDIiwgMTMpOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVbmljb2RlQmxvY2sgVEhBQU5BIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBVbmljb2RlQmxvY2soIlRIQUFOQSIsIDE0KTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIERFVkFOQUdBUkkgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgVW5pY29kZUJsb2NrKCJERVZBTkFHQVJJIiwgMTUpOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVbmljb2RlQmxvY2sgQkVOR0FMSSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgVW5pY29kZUJsb2NrKCJCRU5HQUxJIiwgMTYpOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVbmljb2RlQmxvY2sgR1VSTVVLSEkgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFVuaWNvZGVCbG9jaygiR1VSTVVLSEkiLCAxNyk7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFVuaWNvZGVCbG9jayBHVUpBUkFUSSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgVW5pY29kZUJsb2NrKCJHVUpBUkFUSSIsIDE4KTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIE9SSVlBID0gbmV3IFVuaWNvZGVCbG9jaygiT1JJWUEiLCAxOSk7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFVuaWNvZGVCbG9jayBUQU1JTCA9IG5ldyBVbmljb2RlQmxvY2soIlRBTUlMIiwgMjApOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVbmljb2RlQmxvY2sgVEVMVUdVIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBVbmljb2RlQmxvY2soIlRFTFVHVSIsIDIxKTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIEtBTk5BREEgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFVuaWNvZGVCbG9jaygiS0FOTkFEQSIsIDIyKTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIE1BTEFZQUxBTSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgVW5pY29kZUJsb2NrKCJNQUxBWUFMQU0iLCAyMyk7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFVuaWNvZGVCbG9jayBTSU5IQUxBIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBVbmljb2RlQmxvY2soIlNJTkhBTEEiLCAyNCk7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFVuaWNvZGVCbG9jayBUSEFJID0gbmV3IFVuaWNvZGVCbG9jaygiVEhBSSIsIDI1KTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIExBTyA9IG5ldyBVbmljb2RlQmxvY2soIkxBTyIsIDI2KTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIFRJQkVUQU4gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFVuaWNvZGVCbG9jaygiVElCRVRBTiIsIDI3KTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIE1ZQU5NQVIgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFVuaWNvZGVCbG9jaygiTVlBTk1BUiIsIDI4KTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIEdFT1JHSUFOIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBVbmljb2RlQmxvY2soIkdFT1JHSUFOIiwgMjkpOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVbmljb2RlQmxvY2sgSEFOR1VMX0pBTU8gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgVW5pY29kZUJsb2NrKCJIQU5HVUxfSkFNTyIsIDMwKTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIEVUSElPUElDIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFVuaWNvZGVCbG9jaygiRVRISU9QSUMiLCAzMSk7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFVuaWNvZGVCbG9jayBDSEVST0tFRSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBVbmljb2RlQmxvY2soIkNIRVJPS0VFIiwgMzIpOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVbmljb2RlQmxvY2sgVU5JRklFRF9DQU5BRElBTl9BQk9SSUdJTkFMX1NZTExBQklDUyAKKyAgICAgICAgICAgICAgID0gbmV3IFVuaWNvZGVCbG9jaygiVU5JRklFRF9DQU5BRElBTl9BQk9SSUdJTkFMX1NZTExBQklDUyIsIDMzKTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIE9HSEFNID0gbmV3IFVuaWNvZGVCbG9jaygiT0dIQU0iLCAzNCk7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFVuaWNvZGVCbG9jayBSVU5JQyA9IG5ldyBVbmljb2RlQmxvY2soIlJVTklDIiwgMzUpOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVbmljb2RlQmxvY2sgS0hNRVIgPSBuZXcgVW5pY29kZUJsb2NrKCJLSE1FUiIsIDM2KTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIE1PTkdPTElBTiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgVW5pY29kZUJsb2NrKCJNT05HT0xJQU4iLCAzNyk7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFVuaWNvZGVCbG9jayBMQVRJTl9FWFRFTkRFRF9BRERJVElPTkFMIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFVuaWNvZGVCbG9jaygiTEFUSU5fRVhURU5ERURfQURESVRJT05BTCIsIDM4KTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIEdSRUVLX0VYVEVOREVEIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgVW5pY29kZUJsb2NrKCJHUkVFS19FWFRFTkRFRCIsIDM5KTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIEdFTkVSQUxfUFVOQ1RVQVRJT04gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFVuaWNvZGVCbG9jaygiR0VORVJBTF9QVU5DVFVBVElPTiIsIDQwKTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIFNVUEVSU0NSSVBUU19BTkRfU1VCU0NSSVBUUyAKKyAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFVuaWNvZGVCbG9jaygiU1VQRVJTQ1JJUFRTX0FORF9TVUJTQ1JJUFRTIiwgNDEpOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVbmljb2RlQmxvY2sgQ1VSUkVOQ1lfU1lNQk9MUyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFVuaWNvZGVCbG9jaygiQ1VSUkVOQ1lfU1lNQk9MUyIsIDQyKTsKKyAgICAgICAgLyoqCisgICAgICAgICAqIFVuaWNvZGUgMy4yIHJlbmFtZXMgdGhpcyBibG9jayB0byAiQ29tYmluaW5nIERpYWNyaXRpY2FsIE1hcmtzIGZvciAKKyAgICAgICAgICogU3ltYm9scyIuCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFVuaWNvZGVCbG9jayBDT01CSU5JTkdfTUFSS1NfRk9SX1NZTUJPTFMgCisgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBVbmljb2RlQmxvY2soIkNPTUJJTklOR19NQVJLU19GT1JfU1lNQk9MUyIsIDQzKTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIExFVFRFUkxJS0VfU1lNQk9MUyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgVW5pY29kZUJsb2NrKCJMRVRURVJMSUtFX1NZTUJPTFMiLCA0NCk7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFVuaWNvZGVCbG9jayBOVU1CRVJfRk9STVMgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgVW5pY29kZUJsb2NrKCJOVU1CRVJfRk9STVMiLCA0NSk7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFVuaWNvZGVCbG9jayBBUlJPV1MgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFVuaWNvZGVCbG9jaygiQVJST1dTIiwgNDYpOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVbmljb2RlQmxvY2sgTUFUSEVNQVRJQ0FMX09QRVJBVE9SUyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBVbmljb2RlQmxvY2soIk1BVEhFTUFUSUNBTF9PUEVSQVRPUlMiLCA0Nyk7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFVuaWNvZGVCbG9jayBNSVNDRUxMQU5FT1VTX1RFQ0hOSUNBTCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBVbmljb2RlQmxvY2soIk1JU0NFTExBTkVPVVNfVEVDSE5JQ0FMIiwgNDgpOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVbmljb2RlQmxvY2sgQ09OVFJPTF9QSUNUVVJFUyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFVuaWNvZGVCbG9jaygiQ09OVFJPTF9QSUNUVVJFUyIsIDQ5KTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIE9QVElDQUxfQ0hBUkFDVEVSX1JFQ09HTklUSU9OIAorICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgVW5pY29kZUJsb2NrKCJPUFRJQ0FMX0NIQVJBQ1RFUl9SRUNPR05JVElPTiIsIDUwKTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIEVOQ0xPU0VEX0FMUEhBTlVNRVJJQ1MgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgVW5pY29kZUJsb2NrKCJFTkNMT1NFRF9BTFBIQU5VTUVSSUNTIiwgNTEpOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVbmljb2RlQmxvY2sgQk9YX0RSQVdJTkcgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgVW5pY29kZUJsb2NrKCJCT1hfRFJBV0lORyIsIDUyKTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIEJMT0NLX0VMRU1FTlRTIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgVW5pY29kZUJsb2NrKCJCTE9DS19FTEVNRU5UUyIsIDUzKTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIEdFT01FVFJJQ19TSEFQRVMgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBVbmljb2RlQmxvY2soIkdFT01FVFJJQ19TSEFQRVMiLCA1NCk7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFVuaWNvZGVCbG9jayBNSVNDRUxMQU5FT1VTX1NZTUJPTFMgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFVuaWNvZGVCbG9jaygiTUlTQ0VMTEFORU9VU19TWU1CT0xTIiwgNTUpOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVbmljb2RlQmxvY2sgRElOR0JBVFMgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFVuaWNvZGVCbG9jaygiRElOR0JBVFMiLCA1Nik7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFVuaWNvZGVCbG9jayBCUkFJTExFX1BBVFRFUk5TIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgVW5pY29kZUJsb2NrKCJCUkFJTExFX1BBVFRFUk5TIiwgNTcpOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVbmljb2RlQmxvY2sgQ0pLX1JBRElDQUxTX1NVUFBMRU1FTlQgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgVW5pY29kZUJsb2NrKCJDSktfUkFESUNBTFNfU1VQUExFTUVOVCIsIDU4KTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIEtBTkdYSV9SQURJQ0FMUyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFVuaWNvZGVCbG9jaygiS0FOR1hJX1JBRElDQUxTIiwgNTkpOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVbmljb2RlQmxvY2sgSURFT0dSQVBISUNfREVTQ1JJUFRJT05fQ0hBUkFDVEVSUyAKKyAgICAgICAgICAgICAgICA9IG5ldyBVbmljb2RlQmxvY2soIklERU9HUkFQSElDX0RFU0NSSVBUSU9OX0NIQVJBQ1RFUlMiLCA2MCk7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFVuaWNvZGVCbG9jayBDSktfU1lNQk9MU19BTkRfUFVOQ1RVQVRJT04gCisgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBVbmljb2RlQmxvY2soIkNKS19TWU1CT0xTX0FORF9QVU5DVFVBVElPTiIsIDYxKTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIEhJUkFHQU5BIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBVbmljb2RlQmxvY2soIkhJUkFHQU5BIiwgNjIpOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVbmljb2RlQmxvY2sgS0FUQUtBTkEgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFVuaWNvZGVCbG9jaygiS0FUQUtBTkEiLCA2Myk7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFVuaWNvZGVCbG9jayBCT1BPTU9GTyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgVW5pY29kZUJsb2NrKCJCT1BPTU9GTyIsIDY0KTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIEhBTkdVTF9DT01QQVRJQklMSVRZX0pBTU8gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgVW5pY29kZUJsb2NrKCJIQU5HVUxfQ09NUEFUSUJJTElUWV9KQU1PIiwgNjUpOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVbmljb2RlQmxvY2sgS0FOQlVOIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBVbmljb2RlQmxvY2soIktBTkJVTiIsIDY2KTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIEJPUE9NT0ZPX0VYVEVOREVEIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBVbmljb2RlQmxvY2soIkJPUE9NT0ZPX0VYVEVOREVEIiwgNjcpOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVbmljb2RlQmxvY2sgRU5DTE9TRURfQ0pLX0xFVFRFUlNfQU5EX01PTlRIUyAKKyAgICAgICAgICAgICAgICAgICAgPSBuZXcgVW5pY29kZUJsb2NrKCJFTkNMT1NFRF9DSktfTEVUVEVSU19BTkRfTU9OVEhTIiwgNjgpOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVbmljb2RlQmxvY2sgQ0pLX0NPTVBBVElCSUxJVFkgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFVuaWNvZGVCbG9jaygiQ0pLX0NPTVBBVElCSUxJVFkiLCA2OSk7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFVuaWNvZGVCbG9jayBDSktfVU5JRklFRF9JREVPR1JBUEhTX0VYVEVOU0lPTl9BIAorICAgICAgICAgICAgICAgID0gbmV3IFVuaWNvZGVCbG9jaygiQ0pLX1VOSUZJRURfSURFT0dSQVBIU19FWFRFTlNJT05fQSIsIDcwKTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIENKS19VTklGSUVEX0lERU9HUkFQSFMgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgVW5pY29kZUJsb2NrKCJDSktfVU5JRklFRF9JREVPR1JBUEhTIiwgNzEpOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVbmljb2RlQmxvY2sgWUlfU1lMTEFCTEVTIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFVuaWNvZGVCbG9jaygiWUlfU1lMTEFCTEVTIiwgNzIpOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVbmljb2RlQmxvY2sgWUlfUkFESUNBTFMgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgVW5pY29kZUJsb2NrKCJZSV9SQURJQ0FMUyIsIDczKTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIEhBTkdVTF9TWUxMQUJMRVMgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBVbmljb2RlQmxvY2soIkhBTkdVTF9TWUxMQUJMRVMiLCA3NCk7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFVuaWNvZGVCbG9jayBISUdIX1NVUlJPR0FURVMgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBVbmljb2RlQmxvY2soIkhJR0hfU1VSUk9HQVRFUyIsIDc1KTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIEhJR0hfUFJJVkFURV9VU0VfU1VSUk9HQVRFUyAKKyAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFVuaWNvZGVCbG9jaygiSElHSF9QUklWQVRFX1VTRV9TVVJST0dBVEVTIiwgNzYpOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVbmljb2RlQmxvY2sgTE9XX1NVUlJPR0FURVMgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBVbmljb2RlQmxvY2soIkxPV19TVVJST0dBVEVTIiwgNzcpOworICAgICAgICAvKioKKyAgICAgICAgICogU2FtZSBhcyBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBQUklWQVRFX1VTRS4KKyAgICAgICAgICogVW50aWwgVW5pY29kZSAzLjEuMTsgdGhlIGNvcnJlc3BvbmRpbmcgYmxvY2sgbmFtZSB3YXMgIlByaXZhdGUgVXNlIjsKKyAgICAgICAgICogYW5kIG11bHRpcGxlIGNvZGUgcG9pbnQgcmFuZ2VzIGhhZCB0aGlzIGJsb2NrLgorICAgICAgICAgKiBVbmljb2RlIDMuMiByZW5hbWVzIHRoZSBibG9jayBmb3IgdGhlIEJNUCBQVUEgdG8gIlByaXZhdGUgVXNlIEFyZWEiIAorICAgICAgICAgKiBhbmQgYWRkcyBzZXBhcmF0ZSBibG9ja3MgZm9yIHRoZSBzdXBwbGVtZW50YXJ5IFBVQXMuCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFVuaWNvZGVCbG9jayBQUklWQVRFX1VTRV9BUkVBIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBVbmljb2RlQmxvY2soIlBSSVZBVEVfVVNFX0FSRUEiLCAgNzgpOworICAgICAgICAvKioKKyAgICAgICAgICogU2FtZSBhcyBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBQUklWQVRFX1VTRV9BUkVBLgorICAgICAgICAgKiBVbnRpbCBVbmljb2RlIDMuMS4xOyB0aGUgY29ycmVzcG9uZGluZyBibG9jayBuYW1lIHdhcyAiUHJpdmF0ZSBVc2UiOworICAgICAgICAgKiBhbmQgbXVsdGlwbGUgY29kZSBwb2ludCByYW5nZXMgaGFkIHRoaXMgYmxvY2suCisgICAgICAgICAqIFVuaWNvZGUgMy4yIHJlbmFtZXMgdGhlIGJsb2NrIGZvciB0aGUgQk1QIFBVQSB0byAiUHJpdmF0ZSBVc2UgQXJlYSIgCisgICAgICAgICAqIGFuZCBhZGRzIHNlcGFyYXRlIGJsb2NrcyBmb3IgdGhlIHN1cHBsZW1lbnRhcnkgUFVBcy4KKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIFBSSVZBVEVfVVNFID0gUFJJVkFURV9VU0VfQVJFQTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIENKS19DT01QQVRJQklMSVRZX0lERU9HUkFQSFMgCisgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFVuaWNvZGVCbG9jaygiQ0pLX0NPTVBBVElCSUxJVFlfSURFT0dSQVBIUyIsIDc5KTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIEFMUEhBQkVUSUNfUFJFU0VOVEFUSU9OX0ZPUk1TIAorICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgVW5pY29kZUJsb2NrKCJBTFBIQUJFVElDX1BSRVNFTlRBVElPTl9GT1JNUyIsIDgwKTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIEFSQUJJQ19QUkVTRU5UQVRJT05fRk9STVNfQSAKKyAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFVuaWNvZGVCbG9jaygiQVJBQklDX1BSRVNFTlRBVElPTl9GT1JNU19BIiwgODEpOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVbmljb2RlQmxvY2sgQ09NQklOSU5HX0hBTEZfTUFSS1MgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgVW5pY29kZUJsb2NrKCJDT01CSU5JTkdfSEFMRl9NQVJLUyIsIDgyKTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIENKS19DT01QQVRJQklMSVRZX0ZPUk1TIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFVuaWNvZGVCbG9jaygiQ0pLX0NPTVBBVElCSUxJVFlfRk9STVMiLCA4Myk7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFVuaWNvZGVCbG9jayBTTUFMTF9GT1JNX1ZBUklBTlRTIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBVbmljb2RlQmxvY2soIlNNQUxMX0ZPUk1fVkFSSUFOVFMiLCA4NCk7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFVuaWNvZGVCbG9jayBBUkFCSUNfUFJFU0VOVEFUSU9OX0ZPUk1TX0IgCisgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBVbmljb2RlQmxvY2soIkFSQUJJQ19QUkVTRU5UQVRJT05fRk9STVNfQiIsIDg1KTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIFNQRUNJQUxTIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBVbmljb2RlQmxvY2soIlNQRUNJQUxTIiwgODYpOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVbmljb2RlQmxvY2sgSEFMRldJRFRIX0FORF9GVUxMV0lEVEhfRk9STVMgCisgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBVbmljb2RlQmxvY2soIkhBTEZXSURUSF9BTkRfRlVMTFdJRFRIX0ZPUk1TIiwgODcpOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVbmljb2RlQmxvY2sgT0xEX0lUQUxJQyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBVbmljb2RlQmxvY2soIk9MRF9JVEFMSUMiLCA4OCk7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFVuaWNvZGVCbG9jayBHT1RISUMgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFVuaWNvZGVCbG9jaygiR09USElDIiwgODkpOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVbmljb2RlQmxvY2sgREVTRVJFVCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgVW5pY29kZUJsb2NrKCJERVNFUkVUIiwgOTApOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVbmljb2RlQmxvY2sgQllaQU5USU5FX01VU0lDQUxfU1lNQk9MUyAKKyAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFVuaWNvZGVCbG9jaygiQllaQU5USU5FX01VU0lDQUxfU1lNQk9MUyIsIDkxKTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIE1VU0lDQUxfU1lNQk9MUyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFVuaWNvZGVCbG9jaygiTVVTSUNBTF9TWU1CT0xTIiwgOTIpOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVbmljb2RlQmxvY2sgTUFUSEVNQVRJQ0FMX0FMUEhBTlVNRVJJQ19TWU1CT0xTIAorICAgICAgICAgICAgICAgID0gbmV3IFVuaWNvZGVCbG9jaygiTUFUSEVNQVRJQ0FMX0FMUEhBTlVNRVJJQ19TWU1CT0xTIiwgOTMpOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVbmljb2RlQmxvY2sgQ0pLX1VOSUZJRURfSURFT0dSQVBIU19FWFRFTlNJT05fQiAgCisgICAgICAgICAgICAgICAgPSBuZXcgVW5pY29kZUJsb2NrKCJDSktfVU5JRklFRF9JREVPR1JBUEhTX0VYVEVOU0lPTl9CIiwgOTQpOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVbmljb2RlQmxvY2sgCisgICAgICAgICAgICBDSktfQ09NUEFUSUJJTElUWV9JREVPR1JBUEhTX1NVUFBMRU1FTlQgCisgICAgICAgICAgICA9IG5ldyBVbmljb2RlQmxvY2soIkNKS19DT01QQVRJQklMSVRZX0lERU9HUkFQSFNfU1VQUExFTUVOVCIsIDk1KTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIFRBR1MgPSBuZXcgVW5pY29kZUJsb2NrKCJUQUdTIiwgOTYpOworICAgIAorICAgICAgICAvLyBOZXcgYmxvY2tzIGluIFVuaWNvZGUgMy4yCisgICAgCisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFVuaWNvZGVCbG9jayBDWVJJTExJQ19TVVBQTEVNRU5UQVJZIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFVuaWNvZGVCbG9jaygiQ1lSSUxMSUNfU1VQUExFTUVOVEFSWSIsIDk3KTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIFRBR0FMT0cgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFVuaWNvZGVCbG9jaygiVEFHQUxPRyIsIDk4KTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIEhBTlVOT08gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFVuaWNvZGVCbG9jaygiSEFOVU5PTyIsIDk5KTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIEJVSElEID0gbmV3IFVuaWNvZGVCbG9jaygiQlVISUQiLCAxMDApOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVbmljb2RlQmxvY2sgVEFHQkFOV0EgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFVuaWNvZGVCbG9jaygiVEFHQkFOV0EiLCAxMDEpOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVbmljb2RlQmxvY2sgTUlTQ0VMTEFORU9VU19NQVRIRU1BVElDQUxfU1lNQk9MU19BIAorICAgICAgICAgICAgICAgID0gbmV3IFVuaWNvZGVCbG9jaygiTUlTQ0VMTEFORU9VU19NQVRIRU1BVElDQUxfU1lNQk9MU19BIiwgMTAyKTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIFNVUFBMRU1FTlRBTF9BUlJPV1NfQSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBVbmljb2RlQmxvY2soIlNVUFBMRU1FTlRBTF9BUlJPV1NfQSIsIDEwMyk7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFVuaWNvZGVCbG9jayBTVVBQTEVNRU5UQUxfQVJST1dTX0IgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgVW5pY29kZUJsb2NrKCJTVVBQTEVNRU5UQUxfQVJST1dTX0IiLCAxMDQpOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVbmljb2RlQmxvY2sgTUlTQ0VMTEFORU9VU19NQVRIRU1BVElDQUxfU1lNQk9MU19CIAorICAgICAgICAgICAgICAgID0gbmV3IFVuaWNvZGVCbG9jaygiTUlTQ0VMTEFORU9VU19NQVRIRU1BVElDQUxfU1lNQk9MU19CIiwgMTA1KTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIFNVUFBMRU1FTlRBTF9NQVRIRU1BVElDQUxfT1BFUkFUT1JTIAorICAgICAgICAgICAgICAgID0gbmV3IFVuaWNvZGVCbG9jaygiU1VQUExFTUVOVEFMX01BVEhFTUFUSUNBTF9PUEVSQVRPUlMiLCAxMDYpOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVbmljb2RlQmxvY2sgS0FUQUtBTkFfUEhPTkVUSUNfRVhURU5TSU9OUyAKKyAgICAgICAgICAgICAgICAgICAgPSBuZXcgVW5pY29kZUJsb2NrKCJLQVRBS0FOQV9QSE9ORVRJQ19FWFRFTlNJT05TIiwgMTA3KTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVW5pY29kZUJsb2NrIFZBUklBVElPTl9TRUxFQ1RPUlMgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFVuaWNvZGVCbG9jaygiVkFSSUFUSU9OX1NFTEVDVE9SUyIsIDEwOCk7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFVuaWNvZGVCbG9jayBTVVBQTEVNRU5UQVJZX1BSSVZBVEVfVVNFX0FSRUFfQSAKKyAgICAgICAgICAgICAgICAgICAgPSBuZXcgVW5pY29kZUJsb2NrKCJTVVBQTEVNRU5UQVJZX1BSSVZBVEVfVVNFX0FSRUFfQSIsIDEwOSk7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFVuaWNvZGVCbG9jayBTVVBQTEVNRU5UQVJZX1BSSVZBVEVfVVNFX0FSRUFfQiAKKyAgICAgICAgICAgICAgICAgICAgPSBuZXcgVW5pY29kZUJsb2NrKCJTVVBQTEVNRU5UQVJZX1BSSVZBVEVfVVNFX0FSRUFfQiIsIDExMCk7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFVuaWNvZGVCbG9jayBJTlZBTElEX0NPREUgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgVW5pY29kZUJsb2NrKCJJTlZBTElEX0NPREUiLCAtMSk7CisgICAgICAgICAgIAorICAgICAgICAvLyBibG9jayBpZCBjb3JyZXNwb25kaW5nIHRvIGljdTRjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgIAorICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSU5WQUxJRF9DT0RFX0lEID0gLTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQkFTSUNfTEFUSU5fSUQgPSAxOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTEFUSU5fMV9TVVBQTEVNRU5UX0lEID0gMjsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IExBVElOX0VYVEVOREVEX0FfSUQgPSAzOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTEFUSU5fRVhURU5ERURfQl9JRCA9IDQ7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBJUEFfRVhURU5TSU9OU19JRCA9IDU7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTUEFDSU5HX01PRElGSUVSX0xFVFRFUlNfSUQgPSA2OworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ09NQklOSU5HX0RJQUNSSVRJQ0FMX01BUktTX0lEID0gNzsKKyAgICAgICAgLyoqCisgICAgICAgICAqIFVuaWNvZGUgMy4yIHJlbmFtZXMgdGhpcyBibG9jayB0byAiR3JlZWsgYW5kIENvcHRpYyIuCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHUkVFS19JRCA9IDg7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDWVJJTExJQ19JRCA9IDk7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBUk1FTklBTl9JRCA9IDEwOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSEVCUkVXX0lEID0gMTE7ICAKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFSQUJJQ19JRCA9IDEyOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1lSSUFDX0lEID0gMTM7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBUSEFBTkFfSUQgPSAxNDsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERFVkFOQUdBUklfSUQgPSAxNTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJFTkdBTElfSUQgPSAxNjsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdVUk1VS0hJX0lEID0gMTc7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHVUpBUkFUSV9JRCA9IDE4OworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgT1JJWUFfSUQgPSAxOTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFRBTUlMX0lEID0gMjA7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBURUxVR1VfSUQgPSAyMTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEtBTk5BREFfSUQgPSAyMjsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE1BTEFZQUxBTV9JRCA9IDIzOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0lOSEFMQV9JRCA9IDI0OworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVEhBSV9JRCA9IDI1OworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTEFPX0lEID0gMjY7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBUSUJFVEFOX0lEID0gMjc7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNWUFOTUFSX0lEID0gMjg7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHRU9SR0lBTl9JRCA9IDI5OworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSEFOR1VMX0pBTU9fSUQgPSAzMDsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEVUSElPUElDX0lEID0gMzE7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDSEVST0tFRV9JRCA9IDMyOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVU5JRklFRF9DQU5BRElBTl9BQk9SSUdJTkFMX1NZTExBQklDU19JRCA9IDMzOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgT0dIQU1fSUQgPSAzNDsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFJVTklDX0lEID0gMzU7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBLSE1FUl9JRCA9IDM2OworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTU9OR09MSUFOX0lEID0gMzc7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBMQVRJTl9FWFRFTkRFRF9BRERJVElPTkFMX0lEID0gMzg7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHUkVFS19FWFRFTkRFRF9JRCA9IDM5OworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0VORVJBTF9QVU5DVFVBVElPTl9JRCA9IDQwOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1VQRVJTQ1JJUFRTX0FORF9TVUJTQ1JJUFRTX0lEID0gNDE7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDVVJSRU5DWV9TWU1CT0xTX0lEID0gNDI7CisgICAgICAgIC8qKgorICAgICAgICAgKiBVbmljb2RlIDMuMiByZW5hbWVzIHRoaXMgYmxvY2sgdG8gIkNvbWJpbmluZyBEaWFjcml0aWNhbCBNYXJrcyBmb3IgCisgICAgICAgICAqIFN5bWJvbHMiLgorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ09NQklOSU5HX01BUktTX0ZPUl9TWU1CT0xTX0lEID0gNDM7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBMRVRURVJMSUtFX1NZTUJPTFNfSUQgPSA0NDsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE5VTUJFUl9GT1JNU19JRCA9IDQ1OworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQVJST1dTX0lEID0gNDY7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNQVRIRU1BVElDQUxfT1BFUkFUT1JTX0lEID0gNDc7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNSVNDRUxMQU5FT1VTX1RFQ0hOSUNBTF9JRCA9IDQ4OworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ09OVFJPTF9QSUNUVVJFU19JRCA9IDQ5OworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgT1BUSUNBTF9DSEFSQUNURVJfUkVDT0dOSVRJT05fSUQgPSA1MDsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEVOQ0xPU0VEX0FMUEhBTlVNRVJJQ1NfSUQgPSA1MTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJPWF9EUkFXSU5HX0lEID0gNTI7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCTE9DS19FTEVNRU5UU19JRCA9IDUzOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR0VPTUVUUklDX1NIQVBFU19JRCA9IDU0OworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTUlTQ0VMTEFORU9VU19TWU1CT0xTX0lEID0gNTU7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBESU5HQkFUU19JRCA9IDU2OworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQlJBSUxMRV9QQVRURVJOU19JRCA9IDU3OworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ0pLX1JBRElDQUxTX1NVUFBMRU1FTlRfSUQgPSA1ODsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEtBTkdYSV9SQURJQ0FMU19JRCA9IDU5OworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSURFT0dSQVBISUNfREVTQ1JJUFRJT05fQ0hBUkFDVEVSU19JRCA9IDYwOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ0pLX1NZTUJPTFNfQU5EX1BVTkNUVUFUSU9OX0lEID0gNjE7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBISVJBR0FOQV9JRCA9IDYyOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgS0FUQUtBTkFfSUQgPSA2MzsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJPUE9NT0ZPX0lEID0gNjQ7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBIQU5HVUxfQ09NUEFUSUJJTElUWV9KQU1PX0lEID0gNjU7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBLQU5CVU5fSUQgPSA2NjsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJPUE9NT0ZPX0VYVEVOREVEX0lEID0gNjc7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBFTkNMT1NFRF9DSktfTEVUVEVSU19BTkRfTU9OVEhTX0lEID0gNjg7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDSktfQ09NUEFUSUJJTElUWV9JRCA9IDY5OworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ0pLX1VOSUZJRURfSURFT0dSQVBIU19FWFRFTlNJT05fQV9JRCA9IDcwOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ0pLX1VOSUZJRURfSURFT0dSQVBIU19JRCA9IDcxOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgWUlfU1lMTEFCTEVTX0lEID0gNzI7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBZSV9SQURJQ0FMU19JRCA9IDczOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSEFOR1VMX1NZTExBQkxFU19JRCA9IDc0OworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSElHSF9TVVJST0dBVEVTX0lEID0gNzU7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBISUdIX1BSSVZBVEVfVVNFX1NVUlJPR0FURVNfSUQgPSA3NjsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IExPV19TVVJST0dBVEVTX0lEID0gNzc7CisgICAgICAgIC8qKgorICAgICAgICAgKiBTYW1lIGFzIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBSSVZBVEVfVVNFLgorICAgICAgICAgKiBVbnRpbCBVbmljb2RlIDMuMS4xOyB0aGUgY29ycmVzcG9uZGluZyBibG9jayBuYW1lIHdhcyAiUHJpdmF0ZSBVc2UiOworICAgICAgICAgKiBhbmQgbXVsdGlwbGUgY29kZSBwb2ludCByYW5nZXMgaGFkIHRoaXMgYmxvY2suCisgICAgICAgICAqIFVuaWNvZGUgMy4yIHJlbmFtZXMgdGhlIGJsb2NrIGZvciB0aGUgQk1QIFBVQSB0byAiUHJpdmF0ZSBVc2UgQXJlYSIgCisgICAgICAgICAqIGFuZCBhZGRzIHNlcGFyYXRlIGJsb2NrcyBmb3IgdGhlIHN1cHBsZW1lbnRhcnkgUFVBcy4KKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBSSVZBVEVfVVNFX0FSRUFfSUQgPSA3ODsKKyAgICAgICAgLyoqCisgICAgICAgICAqIFNhbWUgYXMgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUFJJVkFURV9VU0VfQVJFQS4KKyAgICAgICAgICogVW50aWwgVW5pY29kZSAzLjEuMTsgdGhlIGNvcnJlc3BvbmRpbmcgYmxvY2sgbmFtZSB3YXMgIlByaXZhdGUgVXNlIjsKKyAgICAgICAgICogYW5kIG11bHRpcGxlIGNvZGUgcG9pbnQgcmFuZ2VzIGhhZCB0aGlzIGJsb2NrLgorICAgICAgICAgKiBVbmljb2RlIDMuMiByZW5hbWVzIHRoZSBibG9jayBmb3IgdGhlIEJNUCBQVUEgdG8gIlByaXZhdGUgVXNlIEFyZWEiIAorICAgICAgICAgKiBhbmQgYWRkcyBzZXBhcmF0ZSBibG9ja3MgZm9yIHRoZSBzdXBwbGVtZW50YXJ5IFBVQXMuCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBQUklWQVRFX1VTRV9JRCA9IFBSSVZBVEVfVVNFX0FSRUFfSUQ7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDSktfQ09NUEFUSUJJTElUWV9JREVPR1JBUEhTX0lEID0gNzk7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBTFBIQUJFVElDX1BSRVNFTlRBVElPTl9GT1JNU19JRCA9IDgwOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQVJBQklDX1BSRVNFTlRBVElPTl9GT1JNU19BX0lEID0gODE7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDT01CSU5JTkdfSEFMRl9NQVJLU19JRCA9IDgyOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ0pLX0NPTVBBVElCSUxJVFlfRk9STVNfSUQgPSA4MzsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNNQUxMX0ZPUk1fVkFSSUFOVFNfSUQgPSA4NDsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFSQUJJQ19QUkVTRU5UQVRJT05fRk9STVNfQl9JRCA9IDg1OworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1BFQ0lBTFNfSUQgPSA4NjsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEhBTEZXSURUSF9BTkRfRlVMTFdJRFRIX0ZPUk1TX0lEID0gODc7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBPTERfSVRBTElDX0lEID0gODg7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHT1RISUNfSUQgPSA4OTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERFU0VSRVRfSUQgPSA5MDsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJZWkFOVElORV9NVVNJQ0FMX1NZTUJPTFNfSUQgPSA5MTsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE1VU0lDQUxfU1lNQk9MU19JRCA9IDkyOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTUFUSEVNQVRJQ0FMX0FMUEhBTlVNRVJJQ19TWU1CT0xTX0lEID0gOTM7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDSktfVU5JRklFRF9JREVPR1JBUEhTX0VYVEVOU0lPTl9CX0lEID0gOTQ7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCAKKyAgICAgICAgICAgIENKS19DT01QQVRJQklMSVRZX0lERU9HUkFQSFNfU1VQUExFTUVOVF9JRCA9IDk1OworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVEFHU19JRCA9IDk2OworICAgIAorICAgICAgICAvLyBOZXcgYmxvY2tzIGluIFVuaWNvZGUgMy4yCisgICAgCisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDWVJJTExJQ19TVVBQTEVNRU5UQVJZX0lEID0gOTc7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBUQUdBTE9HX0lEID0gOTg7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBIQU5VTk9PX0lEID0gOTk7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCVUhJRF9JRCA9IDEwMDsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFRBR0JBTldBX0lEID0gMTAxOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTUlTQ0VMTEFORU9VU19NQVRIRU1BVElDQUxfU1lNQk9MU19BX0lEID0gMTAyOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1VQUExFTUVOVEFMX0FSUk9XU19BX0lEID0gMTAzOworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1VQUExFTUVOVEFMX0FSUk9XU19CX0lEID0gMTA0OworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTUlTQ0VMTEFORU9VU19NQVRIRU1BVElDQUxfU1lNQk9MU19CX0lEID0gMTA1OworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1VQUExFTUVOVEFMX01BVEhFTUFUSUNBTF9PUEVSQVRPUlNfSUQgPSAxMDY7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBLQVRBS0FOQV9QSE9ORVRJQ19FWFRFTlNJT05TX0lEID0gMTA3OworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVkFSSUFUSU9OX1NFTEVDVE9SU19JRCA9IDEwODsKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNVUFBMRU1FTlRBUllfUFJJVkFURV9VU0VfQVJFQV9BX0lEID0gMTA5OworICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1VQUExFTUVOVEFSWV9QUklWQVRFX1VTRV9BUkVBX0JfSUQgPSAxMTA7CisgICAgICAgIAorICAgICAgICAvKiogCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ09VTlQgPSAxMTE7CisgICAgICAgIAorICAgICAgICAvLyBwdWJsaWMgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAKKyAgICAgICAgLyoqIAorICAgICAgICAgKiBHZXRzIHRoZSBvbmx5IGluc3RhbmNlIG9mIHRoZSBVbmljb2RlQmxvY2sgd2l0aCB0aGUgYXJndW1lbnQgSUQuCisgICAgICAgICAqIElmIG5vIHN1Y2ggSUQgZXhpc3RzLCBhIElOVkFMSURfQ09ERSBVbmljb2RlQmxvY2sgd2lsbCBiZSByZXR1cm5lZC4KKyAgICAgICAgICogQHBhcmFtIGlkIFVuaWNvZGVCbG9jayBJRAorICAgICAgICAgKiBAcmV0dXJuIHRoZSBvbmx5IGluc3RhbmNlIG9mIHRoZSBVbmljb2RlQmxvY2sgd2l0aCB0aGUgYXJndW1lbnQgSUQKKyAgICAgICAgICogICAgICAgICBpZiBpdCBleGlzdHMsIG90aGVyd2lzZSBhIElOVkFMSURfQ09ERSBVbmljb2RlQmxvY2sgd2lsbCBiZSAKKyAgICAgICAgICogICAgICAgICByZXR1cm5lZC4KKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgVW5pY29kZUJsb2NrIGdldEluc3RhbmNlKGludCBpZCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGlkID4gMCAmJiBpZCA8IEJMT0NLU18ubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEJMT0NLU19baWRdOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIElOVkFMSURfQ09ERTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLyoqCisgICAgICAgICAqIFJldHVybnMgdGhlIFVuaWNvZGUgYWxsb2NhdGlvbiBibG9jayB0aGF0IGNvbnRhaW5zIHRoZSBjb2RlIHBvaW50LAorICAgICAgICAgKiBvciBudWxsIGlmIHRoZSBjb2RlIHBvaW50IGlzIG5vdCBhIG1lbWJlciBvZiBhIGRlZmluZWQgYmxvY2suCisgICAgICAgICAqIEBwYXJhbSBjaCBjb2RlIHBvaW50IHRvIGJlIHRlc3RlZAorICAgICAgICAgKiBAcmV0dXJuIHRoZSBVbmljb2RlIGFsbG9jYXRpb24gYmxvY2sgdGhhdCBjb250YWlucyB0aGUgY29kZSBwb2ludAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBVbmljb2RlQmxvY2sgb2YoaW50IGNoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoY2ggPiBNQVhfVkFMVUUpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gSU5WQUxJRF9DT0RFOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gVW5pY29kZUJsb2NrLmdldEluc3RhbmNlKChQUk9QRVJUWV8uZ2V0QWRkaXRpb25hbChjaCwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiBCTE9DS19NQVNLXykgPj4gQkxPQ0tfU0hJRlRfKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLyoqCisgICAgICAgICAqIFJldHVybnMgdGhlIHR5cGUgSUQgb2YgdGhpcyBVbmljb2RlIGJsb2NrCisgICAgICAgICAqIEByZXR1cm4gaW50ZWdlciB0eXBlIElEIG9mIHRoaXMgVW5pY29kZSBibG9jaworICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIGludCBnZXRJRCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2lkXzsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gcHJpdmF0ZSBkYXRhIG1lbWJlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgIAorICAgICAgICAvKioKKyAgICAgICAgICogQXJyYXkgb2YgVW5pY29kZUJsb2NrcywgZm9yIGVhc3kgYWNjZXNzIGluIGdldEluc3RhbmNlKGludCkKKyAgICAgICAgICovCisgICAgICAgIHByaXZhdGUgZmluYWwgc3RhdGljIFVuaWNvZGVCbG9jayBCTE9DS1NfW10gPSB7CisgICAgICAgICAgICAgICAgbnVsbCwgQkFTSUNfTEFUSU4sIAorICAgICAgICAgICAgICAgIExBVElOXzFfU1VQUExFTUVOVCwgTEFUSU5fRVhURU5ERURfQSwgCisgICAgICAgICAgICAgICAgTEFUSU5fRVhURU5ERURfQiwgSVBBX0VYVEVOU0lPTlMsIAorICAgICAgICAgICAgICAgIFNQQUNJTkdfTU9ESUZJRVJfTEVUVEVSUywgQ09NQklOSU5HX0RJQUNSSVRJQ0FMX01BUktTLAorICAgICAgICAgICAgICAgIEdSRUVLLCBDWVJJTExJQywKKyAgICAgICAgICAgICAgICBBUk1FTklBTiwgSEVCUkVXLAorICAgICAgICAgICAgICAgIEFSQUJJQywgU1lSSUFDLCAKKyAgICAgICAgICAgICAgICBUSEFBTkEsIERFVkFOQUdBUkksIAorICAgICAgICAgICAgICAgIEJFTkdBTEksIEdVUk1VS0hJLCAKKyAgICAgICAgICAgICAgICBHVUpBUkFUSSwgT1JJWUEsIAorICAgICAgICAgICAgICAgIFRBTUlMLCBURUxVR1UsIAorICAgICAgICAgICAgICAgIEtBTk5BREEsIE1BTEFZQUxBTSwgCisgICAgICAgICAgICAgICAgU0lOSEFMQSwgVEhBSSwgCisgICAgICAgICAgICAgICAgTEFPLCBUSUJFVEFOLCAKKyAgICAgICAgICAgICAgICBNWUFOTUFSLCBHRU9SR0lBTiwgCisgICAgICAgICAgICAgICAgSEFOR1VMX0pBTU8sIEVUSElPUElDLCAKKyAgICAgICAgICAgICAgICBDSEVST0tFRSwgVU5JRklFRF9DQU5BRElBTl9BQk9SSUdJTkFMX1NZTExBQklDUywKKyAgICAgICAgICAgICAgICBPR0hBTSwgUlVOSUMsIAorICAgICAgICAgICAgICAgIEtITUVSLCBNT05HT0xJQU4sIAorICAgICAgICAgICAgICAgIExBVElOX0VYVEVOREVEX0FERElUSU9OQUwsIEdSRUVLX0VYVEVOREVELCAKKyAgICAgICAgICAgICAgICBHRU5FUkFMX1BVTkNUVUFUSU9OLCBTVVBFUlNDUklQVFNfQU5EX1NVQlNDUklQVFMsCisgICAgICAgICAgICAgICAgQ1VSUkVOQ1lfU1lNQk9MUywgQ09NQklOSU5HX01BUktTX0ZPUl9TWU1CT0xTLCAKKyAgICAgICAgICAgICAgICBMRVRURVJMSUtFX1NZTUJPTFMsIE5VTUJFUl9GT1JNUywgCisgICAgICAgICAgICAgICAgQVJST1dTLCBNQVRIRU1BVElDQUxfT1BFUkFUT1JTLCAKKyAgICAgICAgICAgICAgICBNSVNDRUxMQU5FT1VTX1RFQ0hOSUNBTCwgQ09OVFJPTF9QSUNUVVJFUywKKyAgICAgICAgICAgICAgICBPUFRJQ0FMX0NIQVJBQ1RFUl9SRUNPR05JVElPTiwgRU5DTE9TRURfQUxQSEFOVU1FUklDUywKKyAgICAgICAgICAgICAgICBCT1hfRFJBV0lORywgQkxPQ0tfRUxFTUVOVFMsCisgICAgICAgICAgICAgICAgR0VPTUVUUklDX1NIQVBFUywgTUlTQ0VMTEFORU9VU19TWU1CT0xTLAorICAgICAgICAgICAgICAgIERJTkdCQVRTLCBCUkFJTExFX1BBVFRFUk5TLAorICAgICAgICAgICAgICAgIENKS19SQURJQ0FMU19TVVBQTEVNRU5ULCBLQU5HWElfUkFESUNBTFMsCisgICAgICAgICAgICAgICAgSURFT0dSQVBISUNfREVTQ1JJUFRJT05fQ0hBUkFDVEVSUywgQ0pLX1NZTUJPTFNfQU5EX1BVTkNUVUFUSU9OLAorICAgICAgICAgICAgICAgIEhJUkFHQU5BLCBLQVRBS0FOQSwgCisgICAgICAgICAgICAgICAgQk9QT01PRk8sIEhBTkdVTF9DT01QQVRJQklMSVRZX0pBTU8sCisgICAgICAgICAgICAgICAgS0FOQlVOLCBCT1BPTU9GT19FWFRFTkRFRCwgCisgICAgICAgICAgICAgICAgRU5DTE9TRURfQ0pLX0xFVFRFUlNfQU5EX01PTlRIUywgQ0pLX0NPTVBBVElCSUxJVFksCisgICAgICAgICAgICAgICAgQ0pLX1VOSUZJRURfSURFT0dSQVBIU19FWFRFTlNJT05fQSwgQ0pLX1VOSUZJRURfSURFT0dSQVBIUywKKyAgICAgICAgICAgICAgICBZSV9TWUxMQUJMRVMsIFlJX1JBRElDQUxTLCAKKyAgICAgICAgICAgICAgICBIQU5HVUxfU1lMTEFCTEVTLCBISUdIX1NVUlJPR0FURVMsCisgICAgICAgICAgICAgICAgSElHSF9QUklWQVRFX1VTRV9TVVJST0dBVEVTLCBMT1dfU1VSUk9HQVRFUywKKyAgICAgICAgICAgICAgICBQUklWQVRFX1VTRV9BUkVBLCBDSktfQ09NUEFUSUJJTElUWV9JREVPR1JBUEhTLAorICAgICAgICAgICAgICAgIEFMUEhBQkVUSUNfUFJFU0VOVEFUSU9OX0ZPUk1TLCBBUkFCSUNfUFJFU0VOVEFUSU9OX0ZPUk1TX0EsCisgICAgICAgICAgICAgICAgQ09NQklOSU5HX0hBTEZfTUFSS1MsIENKS19DT01QQVRJQklMSVRZX0ZPUk1TLAorICAgICAgICAgICAgICAgIFNNQUxMX0ZPUk1fVkFSSUFOVFMsIEFSQUJJQ19QUkVTRU5UQVRJT05fRk9STVNfQiwKKyAgICAgICAgICAgICAgICBTUEVDSUFMUywgSEFMRldJRFRIX0FORF9GVUxMV0lEVEhfRk9STVMsCisgICAgICAgICAgICAgICAgT0xEX0lUQUxJQywgR09USElDLCAKKyAgICAgICAgICAgICAgICBERVNFUkVULCBCWVpBTlRJTkVfTVVTSUNBTF9TWU1CT0xTLAorICAgICAgICAgICAgICAgIE1VU0lDQUxfU1lNQk9MUywgTUFUSEVNQVRJQ0FMX0FMUEhBTlVNRVJJQ19TWU1CT0xTLAorICAgICAgICAgICAgICAgIENKS19VTklGSUVEX0lERU9HUkFQSFNfRVhURU5TSU9OX0IsIAorICAgICAgICAgICAgICAgIENKS19DT01QQVRJQklMSVRZX0lERU9HUkFQSFNfU1VQUExFTUVOVCwgCisgICAgICAgICAgICAgICAgVEFHUywgQ1lSSUxMSUNfU1VQUExFTUVOVEFSWSwKKyAgICAgICAgICAgICAgICBUQUdBTE9HLCBIQU5VTk9PLCAKKyAgICAgICAgICAgICAgICBCVUhJRCwgVEFHQkFOV0EsIAorICAgICAgICAgICAgICAgIE1JU0NFTExBTkVPVVNfTUFUSEVNQVRJQ0FMX1NZTUJPTFNfQSwgU1VQUExFTUVOVEFMX0FSUk9XU19BLAorICAgICAgICAgICAgICAgIFNVUFBMRU1FTlRBTF9BUlJPV1NfQiwgTUlTQ0VMTEFORU9VU19NQVRIRU1BVElDQUxfU1lNQk9MU19CLAorICAgICAgICAgICAgICAgIFNVUFBMRU1FTlRBTF9NQVRIRU1BVElDQUxfT1BFUkFUT1JTLCAKKyAgICAgICAgICAgICAgICBLQVRBS0FOQV9QSE9ORVRJQ19FWFRFTlNJT05TLAorICAgICAgICAgICAgICAgIFZBUklBVElPTl9TRUxFQ1RPUlMsIFNVUFBMRU1FTlRBUllfUFJJVkFURV9VU0VfQVJFQV9BLAorICAgICAgICAgICAgICAgIFNVUFBMRU1FTlRBUllfUFJJVkFURV9VU0VfQVJFQV9CCisgICAgICAgIH07ICAgIAorICAgICAgICAvKioKKyAgICAgICAgICogSWRlbnRpZmljYXRpb24gY29kZSBmb3IgdGhpcyBVbmljb2RlQmxvY2sKKyAgICAgICAgICovCisgICAgICAgIHByaXZhdGUgaW50IG1faWRfOworICAgICAgICAKKyAgICAgICAgLy8gcHJpdmF0ZSBjb25zdHJ1Y3RvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgIAorICAgICAgICAvKioKKyAgICAgICAgICogVW5pY29kZUJsb2NrIGNvbnN0cnVjdG9yCisgICAgICAgICAqIEBwYXJhbSBuYW1lIG5hbWUgb2YgdGhpcyBVbmljb2RlQmxvY2sKKyAgICAgICAgICogQHBhcmFtIGlkIHVuaXF1ZSBpZCBvZiB0aGlzIFVuaWNvZGVCbG9jaworICAgICAgICAgKiBAZXhjZXB0aW9uIE51bGxQb2ludGVyRXhjZXB0aW9uIGlmIG5hbWUgaXMgPGNvZGU+bnVsbDwvY29kZT4KKyAgICAgICAgICovCisgICAgICAgIHByaXZhdGUgVW5pY29kZUJsb2NrKFN0cmluZyBuYW1lLCBpbnQgaWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN1cGVyKG5hbWUpOworICAgICAgICAgICAgbV9pZF8gPSBpZDsKKyAgICAgICAgfQorICAgIH07CisgICAgCisgICAgLyoqCisgICAgICogRWFzdCBBc2lhbiBXaWR0aCBjb25zdGFudHMuCisgICAgICogQHNlZSBVUHJvcGVydHkjRUFTVF9BU0lBTl9XSURUSAorICAgICAqIEBzZWUgVUNoYXJhY3RlciNnZXRJbnRQcm9wZXJ0eVZhbHVlCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludGVyZmFjZSBFYXN0QXNpYW5XaWR0aCAKKyAgICB7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTkVVVFJBTCA9IDA7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQU1CSUdVT1VTID0gMTsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBIQUxGV0lEVEggPSAyOworICAgICAgICAvKioKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZVTExXSURUSCA9IDM7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTkFSUk9XID0gNDsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBXSURFID0gNTsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDT1VOVCA9IDY7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIERlY29tcG9zaXRpb24gVHlwZSBjb25zdGFudHMuCisgICAgICogQHNlZSBVUHJvcGVydHkjREVDT01QT1NJVElPTl9UWVBFCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludGVyZmFjZSBEZWNvbXBvc2l0aW9uVHlwZSAKKyAgICB7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTk9ORSA9IDA7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ0FOT05JQ0FMID0gMTsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDT01QQVQgPSAyOworICAgICAgICAvKioKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IENJUkNMRSA9IDM7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRklOQUwgPSA0OworICAgICAgICAvKioKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZPTlQgPSA1OworICAgICAgICAvKioKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZSQUNUSU9OID0gNjsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBJTklUSUFMID0gNzsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBJU09MQVRFRCA9IDg7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTUVESUFMID0gOTsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBOQVJST1cgPSAxMDsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBOT0JSRUFLID0gMTE7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU01BTEwgPSAxMjsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTUVVBUkUgPSAxMzsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTVUIgPSAxNDsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTVVBFUiA9IDE1OworICAgICAgICAvKioKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFZFUlRJQ0FMID0gMTY7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgV0lERSA9IDE3OworICAgICAgICAvKioKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IENPVU5UID0gMTg7CisgICAgfTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBKb2luaW5nIFR5cGUgY29uc3RhbnRzLgorICAgICAqIEBzZWUgVVByb3BlcnR5I0pPSU5JTkdfVFlQRQorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnRlcmZhY2UgSm9pbmluZ1R5cGUgCisgICAgeworICAgICAgICAvKioKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE5PTl9KT0lOSU5HID0gMDsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBKT0lOX0NBVVNJTkcgPSAxOworICAgICAgICAvKioKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERVQUxfSk9JTklORyA9IDI7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTEVGVF9KT0lOSU5HID0gMzsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBSSUdIVF9KT0lOSU5HID0gNDsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBUUkFOU1BBUkVOVCA9IDU7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ09VTlQgPSA2OworICAgIH07CisgICAgCisgICAgLyoqCisgICAgICogSm9pbmluZyBHcm91cCBjb25zdGFudHMuCisgICAgICogQHNlZSBVUHJvcGVydHkjSk9JTklOR19HUk9VUAorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnRlcmZhY2UgSm9pbmluZ0dyb3VwIAorICAgIHsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBOT19KT0lOSU5HX0dST1VQID0gMDsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBSU4gPSAxOworICAgICAgICAvKioKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFMQVBIID0gMjsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBTEVGID0gMzsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCRUggPSA0OworICAgICAgICAvKioKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJFVEggPSA1OworICAgICAgICAvKioKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERBTCA9IDY7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgREFMQVRIX1JJU0ggPSA3OworICAgICAgICAvKioKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEUgPSA4OworICAgICAgICAvKioKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZFSCA9IDk7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRklOQUxfU0VNS0FUSCA9IDEwOworICAgICAgICAvKioKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdBRiA9IDExOworICAgICAgICAvKioKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdBTUFMID0gMTI7CisgICAgICAgIC8qKiAKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEhBSCA9IDEzOworICAgICAgICAvKioKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEhBTVpBX09OX0hFSF9HT0FMID0gMTQ7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSEUgPSAxNTsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBIRUggPSAxNjsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBIRUhfR09BTCA9IDE3OworICAgICAgICAvKioKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEhFVEggPSAxODsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBLQUYgPSAxOTsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBLQVBIID0gMjA7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgS05PVFRFRF9IRUggPSAyMTsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBMQU0gPSAyMjsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBMQU1BREggPSAyMzsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNRUVNID0gMjQ7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTUlNID0gMjU7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTk9PTiA9IDI2OworICAgICAgICAvKioKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE5VTiA9IDI3OworICAgICAgICAvKioKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBFID0gMjg7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUUFGID0gMjk7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUUFQSCA9IDMwOworICAgICAgICAvKioKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFJFSCA9IDMxOworICAgICAgICAvKioKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFJFVkVSU0VEX1BFID0gMzI7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0FEID0gMzM7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0FESEUgPSAzNDsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTRUVOID0gMzU7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0VNS0FUSCA9IDM2OworICAgICAgICAvKioKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNISU4gPSAzNzsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTV0FTSF9LQUYgPSAzODsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTWVJJQUNfV0FXID0gMzk7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVEFIID0gNDA7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVEFXID0gNDE7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVEVIX01BUkJVVEEgPSA0MjsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBURVRIID0gNDM7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgV0FXID0gNDQ7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgWUVIID0gNDU7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgWUVIX0JBUlJFRSA9IDQ2OworICAgICAgICAvKioKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFlFSF9XSVRIX1RBSUwgPSA0NzsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBZVURIID0gNDg7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgWVVESF9IRSA9IDQ5OworICAgICAgICAvKioKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFpBSU4gPSA1MDsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDT1VOVCA9IDUxOworICAgIH07CisgICAgCisgICAgLyoqCisgICAgICogTGluZSBCcmVhayBjb25zdGFudHMuCisgICAgICogQHNlZSBVUHJvcGVydHkjTElORV9CUkVBSworICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnRlcmZhY2UgTGluZUJyZWFrIAorICAgIHsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBVTktOT1dOID0gMDsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBTUJJR1VPVVMgPSAxOworICAgICAgICAvKioKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFMUEhBQkVUSUMgPSAyOworICAgICAgICAvKioKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJSRUFLX0JPVEggPSAzOworICAgICAgICAvKioKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJSRUFLX0FGVEVSID0gNDsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCUkVBS19CRUZPUkUgPSA1OworICAgICAgICAvKioKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE1BTkRBVE9SWV9CUkVBSyA9IDY7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ09OVElOR0VOVF9CUkVBSyA9IDc7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ0xPU0VfUFVOQ1RVQVRJT04gPSA4OworICAgICAgICAvKioKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IENPTUJJTklOR19NQVJLID0gOTsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDQVJSSUFHRV9SRVRVUk4gPSAxMDsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBFWENMQU1BVElPTiA9IDExOworICAgICAgICAvKioKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdMVUUgPSAxMjsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBIWVBIRU4gPSAxMzsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBJREVPR1JBUEhJQyA9IDE0OworICAgICAgICAvKioKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IElOU0VQRVJBQkxFID0gMTU7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSU5GSVhfTlVNRVJJQyA9IDE2OworICAgICAgICAvKioKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IExJTkVfRkVFRCA9IDE3OworICAgICAgICAvKioKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE5PTlNUQVJURVIgPSAxODsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBOVU1FUklDID0gMTk7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgT1BFTl9QVU5DVFVBVElPTiA9IDIwOworICAgICAgICAvKioKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBPU1RGSVhfTlVNRVJJQyA9IDIxOworICAgICAgICAvKioKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBSRUZJWF9OVU1FUklDID0gMjI7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUVVPVEFUSU9OID0gMjM7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ09NUExFWF9DT05URVhUID0gMjQ7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1VSUk9HQVRFID0gMjU7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1BBQ0UgPSAyNjsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCUkVBS19TWU1CT0xTID0gMjc7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgWldTUEFDRSA9IDI4OworICAgICAgICAvKioKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IENPVU5UID0gMjk7CisgICAgfTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBOdW1lcmljIFR5cGUgY29uc3RhbnRzLgorICAgICAqIEBzZWUgVVByb3BlcnR5I05VTUVSSUNfVFlQRQorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnRlcmZhY2UgTnVtZXJpY1R5cGUgCisgICAgeworICAgICAgICAvKioKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE5PTkUgPSAwOworICAgICAgICAvKioKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERFQ0lNQUwgPSAxOworICAgICAgICAvKioKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERJR0lUID0gMjsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBOVU1FUklDID0gMzsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDT1VOVCA9IDQ7CisgICAgfTsgCisgICAgICAgICAgIAorICAgIC8vIHB1YmxpYyBkYXRhIG1lbWJlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgCisgICAgLyoqIAorICAgICAqIFRoZSBsb3dlc3QgVW5pY29kZSBjb2RlIHBvaW50IHZhbHVlLgorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE1JTl9WQUxVRSA9IFVURjE2LkNPREVQT0lOVF9NSU5fVkFMVUU7CisKKyAgICAvKioKKyAgICAgKiBUaGUgaGlnaGVzdCBVbmljb2RlIGNvZGUgcG9pbnQgdmFsdWUgKHNjYWxhciB2YWx1ZSkgYWNjb3JkaW5nIHRvIHRoZSAKKyAgICAgKiBVbmljb2RlIFN0YW5kYXJkLiAKKyAgICAgKiBUaGlzIGlzIGEgMjEtYml0IHZhbHVlICgyMSBiaXRzLCByb3VuZGVkIHVwKS48YnI+CisgICAgICogVXAtdG8tZGF0ZSBVbmljb2RlIGltcGxlbWVudGF0aW9uIG9mIGphdmEubGFuZy5DaGFyYWN0ZXIuTUlOX1ZBTFVFCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTUFYX1ZBTFVFID0gVVRGMTYuQ09ERVBPSU5UX01BWF9WQUxVRTsgCisgICAgICAKKyAgICAvKioKKyAgICAgKiBUaGUgbWluaW11bSB2YWx1ZSBmb3IgU3VwcGxlbWVudGFyeSBjb2RlIHBvaW50cworICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNVUFBMRU1FTlRBUllfTUlOX1ZBTFVFID0gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVVEYxNi5TVVBQTEVNRU5UQVJZX01JTl9WQUxVRTsKKyAgICAgIAorICAgIC8qKgorICAgICAqIFVuaWNvZGUgdmFsdWUgdXNlZCB3aGVuIHRyYW5zbGF0aW5nIGludG8gVW5pY29kZSBlbmNvZGluZyBmb3JtIGFuZCB0aGVyZSAKKyAgICAgKiBpcyBubyBleGlzdGluZyBjaGFyYWN0ZXIuCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisJcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUkVQTEFDRU1FTlRfQ0hBUiA9ICdcdUZGRkQnOworICAgIAkKKyAgICAvKioKKyAgICAgKiBTcGVjaWFsIHZhbHVlIHRoYXQgaXMgcmV0dXJuZWQgYnkgZ2V0VW5pY29kZU51bWVyaWNWYWx1ZShpbnQpIHdoZW4gbm8gCisgICAgICogbnVtZXJpYyB2YWx1ZSBpcyBkZWZpbmVkIGZvciBhIGNvZGUgcG9pbnQuCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKiBAc2VlICNnZXRVbmljb2RlTnVtZXJpY1ZhbHVlCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBkb3VibGUgTk9fTlVNRVJJQ19WQUxVRSA9IC0xMjM0NTY3ODk7CisgICAgCisgICAgLy8gcHVibGljIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgCisgICAgLyoqCisgICAgICogUmV0cmlldmVzIHRoZSBudW1lcmljIHZhbHVlIG9mIGEgZGVjaW1hbCBkaWdpdCBjb2RlIHBvaW50LgorICAgICAqIDxicj5UaGlzIG1ldGhvZCBvYnNlcnZlcyB0aGUgc2VtYW50aWNzIG9mCisgICAgICogPGNvZGU+amF2YS5sYW5nLkNoYXJhY3Rlci5kaWdpdCgpPC9jb2RlPi4gIE5vdGUgdGhhdCB0aGlzCisgICAgICogd2lsbCByZXR1cm4gcG9zaXRpdmUgdmFsdWVzIGZvciBjb2RlIHBvaW50cyBmb3Igd2hpY2ggaXNEaWdpdAorICAgICAqIHJldHVybnMgZmFsc2UsIGp1c3QgbGlrZSBqYXZhLmxhbmcuQ2hhcmFjdGVyLgorICAgICAqIDxicj48ZW0+U2VtYW50aWMgQ2hhbmdlOjwvZW0+IEluIHJlbGVhc2UgMS4zLjEgYW5kCisgICAgICogcHJpb3IsIHRoaXMgZGlkIG5vdCB0cmVhdCB0aGUgRXVyb3BlYW4gbGV0dGVycyBhcyBoYXZpbmcgYQorICAgICAqIGRpZ2l0IHZhbHVlLCBhbmQgYWxzbyB0cmVhdGVkIG51bWVyaWMgbGV0dGVycyBhbmQgb3RoZXIgbnVtYmVycyBhcyAKKyAgICAgKiBkaWdpdHMuICAKKyAgICAgKiBUaGlzIGhhcyBiZWVuIGNoYW5nZWQgdG8gY29uZm9ybSB0byB0aGUgamF2YSBzZW1hbnRpY3MuCisgICAgICogPGJyPkEgY29kZSBwb2ludCBpcyBhIHZhbGlkIGRpZ2l0IGlmIGFuZCBvbmx5IGlmOgorICAgICAqIDx1bD4KKyAgICAgKiAgIDxsaT5jaCBpcyBhIGRlY2ltYWwgZGlnaXQgb3Igb25lIG9mIHRoZSBldXJvcGVhbiBsZXR0ZXJzLCBhbmQKKyAgICAgKiAgIDxsaT50aGUgdmFsdWUgb2YgY2ggaXMgbGVzcyB0aGFuIHRoZSBzcGVjaWZpZWQgcmFkaXguCisgICAgICogPC91bD4KKyAgICAgKiBAcGFyYW0gY2ggdGhlIGNvZGUgcG9pbnQgdG8gcXVlcnkKKyAgICAgKiBAcGFyYW0gcmFkaXggdGhlIHJhZGl4CisgICAgICogQHJldHVybiB0aGUgbnVtZXJpYyB2YWx1ZSByZXByZXNlbnRlZCBieSB0aGUgY29kZSBwb2ludCBpbiB0aGUKKyAgICAgKiBzcGVjaWZpZWQgcmFkaXgsIG9yIC0xIGlmIHRoZSBjb2RlIHBvaW50IGlzIG5vdCBhIGRlY2ltYWwgZGlnaXQKKyAgICAgKiBvciBpZiBpdHMgdmFsdWUgaXMgdG9vIGxhcmdlIGZvciB0aGUgcmFkaXgKKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludCBkaWdpdChpbnQgY2gsIGludCByYWRpeCkKKyAgICB7CisgICAgICAgIC8vIHdoZW4gY2ggaXMgb3V0IG9mIGJvdW5kcyBnZXRQcm9wZXJ0eSA9PSAwCisgICAgICAgIGludCBwcm9wcyAgICAgICA9IFBST1BFUlRZXy5nZXRQcm9wZXJ0eShjaCk7CisgICAgICAgIGludCBudW1lcmljVHlwZSA9IGdldE51bWVyaWNUeXBlKHByb3BzKTsKKyAgICAgICAgCisgICAgICAgIGludCByZXN1bHQgPSAtMTsKKyAgICAgICAgaWYgKG51bWVyaWNUeXBlID09IE51bWVyaWNUeXBlLkRFQ0lNQUwpIHsKKyAgICAgICAgCS8vIGlmIHByb3BzID09IDAsIGl0IHdpbGwganVzdCBmYWxsIHRocm91Z2ggYW5kIHJldHVybiAtMQorICAgICAgICAJaWYgKGlzTm90RXhjZXB0aW9uSW5kaWNhdG9yKHByb3BzKSkgeworICAgICAgICAgICAgCS8vIG5vdCBjb250YWluZWQgaW4gZXhjZXB0aW9uIGRhdGEKKyAgICAgICAgICAgIAlyZXN1bHQgPSBVQ2hhcmFjdGVyUHJvcGVydHkuZ2V0U2lnbmVkVmFsdWUocHJvcHMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAJaW50IGluZGV4ID0gVUNoYXJhY3RlclByb3BlcnR5LmdldEV4Y2VwdGlvbkluZGV4KHByb3BzKTsKKyAgICAgICAgICAgIAlpZiAoUFJPUEVSVFlfLmhhc0V4Y2VwdGlvblZhbHVlKGluZGV4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3RlclByb3BlcnR5LkVYQ19OVU1FUklDX1ZBTFVFXykpIHsKKyAgICAgICAgICAgICAgICAJcmV0dXJuIFBST1BFUlRZXy5nZXRFeGNlcHRpb24oaW5kZXgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyUHJvcGVydHkuRVhDX05VTUVSSUNfVkFMVUVfKTsgCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAocmVzdWx0IDwgMCAmJiByYWRpeCA+IDEwKSB7CisgICAgICAgICAgICByZXN1bHQgPSBnZXRFdXJvcGVhbkRpZ2l0KGNoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKHJlc3VsdCA8IDAgfHwgcmVzdWx0ID49IHJhZGl4KSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmV0cmlldmVzIHRoZSBudW1lcmljIHZhbHVlIG9mIGEgZGVjaW1hbCBkaWdpdCBjb2RlIHBvaW50LgorICAgICAqIDxicj5UaGlzIGlzIGEgY29udmVuaWVuY2Ugb3ZlcmxvYWQgb2YgPGNvZGU+ZGlnaXQoaW50LCBpbnQpPC9jb2RlPiAKKyAgICAgKiB0aGF0IHByb3ZpZGVzIGEgZGVjaW1hbCByYWRpeC4KKyAgICAgKiA8YnI+PGVtPlNlbWFudGljIENoYW5nZTo8L2VtPiBJbiByZWxlYXNlIDEuMy4xIGFuZCBwcmlvciwgdGhpcworICAgICAqIHRyZWF0ZWQgbnVtZXJpYyBsZXR0ZXJzIGFuZCBvdGhlciBudW1iZXJzIGFzIGRpZ2l0cy4gIFRoaXMgaGFzCisgICAgICogYmVlbiBjaGFuZ2VkIHRvIGNvbmZvcm0gdG8gdGhlIGphdmEgc2VtYW50aWNzLgorICAgICAqIEBwYXJhbSBjaCB0aGUgY29kZSBwb2ludCB0byBxdWVyeQorICAgICAqIEByZXR1cm4gdGhlIG51bWVyaWMgdmFsdWUgcmVwcmVzZW50ZWQgYnkgdGhlIGNvZGUgcG9pbnQsCisgICAgICogb3IgLTEgaWYgdGhlIGNvZGUgcG9pbnQgaXMgbm90IGEgZGVjaW1hbCBkaWdpdCBvciBpZiBpdHMKKyAgICAgKiB2YWx1ZSBpcyB0b28gbGFyZ2UgZm9yIGEgZGVjaW1hbCByYWRpeCAKKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludCBkaWdpdChpbnQgY2gpCisgICAgeworICAgICAgICByZXR1cm4gZGlnaXQoY2gsIERFQ0lNQUxfUkFESVhfKTsKKyAgICB9CisKKyAgICAvKiogCisgICAgICogUmV0dXJucyB0aGUgbnVtZXJpYyB2YWx1ZSBvZiB0aGUgY29kZSBwb2ludCBhcyBhIG5vbm5lZ2F0aXZlIAorICAgICAqIGludGVnZXIuCisgICAgICogPGJyPklmIHRoZSBjb2RlIHBvaW50IGRvZXMgbm90IGhhdmUgYSBudW1lcmljIHZhbHVlLCB0aGVuIC0xIGlzIHJldHVybmVkLiAKKyAgICAgKiA8YnI+CisgICAgICogSWYgdGhlIGNvZGUgcG9pbnQgaGFzIGEgbnVtZXJpYyB2YWx1ZSB0aGF0IGNhbm5vdCBiZSByZXByZXNlbnRlZCBhcyBhIAorICAgICAqIG5vbm5lZ2F0aXZlIGludGVnZXIgKGZvciBleGFtcGxlLCBhIGZyYWN0aW9uYWwgdmFsdWUpLCB0aGVuIC0yIGlzIAorICAgICAqIHJldHVybmVkLgorICAgICAqIEBwYXJhbSBjaCB0aGUgY29kZSBwb2ludCB0byBxdWVyeQorICAgICAqIEByZXR1cm4gdGhlIG51bWVyaWMgdmFsdWUgb2YgdGhlIGNvZGUgcG9pbnQsIG9yIC0xIGlmIGl0IGhhcyBubyBudW1lcmljIAorICAgICAqIHZhbHVlLCBvciAtMiBpZiBpdCBoYXMgYSBudW1lcmljIHZhbHVlIHRoYXQgY2Fubm90IGJlIHJlcHJlc2VudGVkIGFzIGEgCisgICAgICogbm9ubmVnYXRpdmUgaW50ZWdlcgorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgaW50IGdldE51bWVyaWNWYWx1ZShpbnQgY2gpCisgICAgeworICAgICAgICBpbnQgcHJvcHMgPSBQUk9QRVJUWV8uZ2V0UHJvcGVydHkoY2gpOworICAgICAgICBpbnQgbnVtZXJpY1R5cGUgPSBnZXROdW1lcmljVHlwZShwcm9wcyk7CisgICAgICAgIAorICAgICAgICBpbnQgcmVzdWx0ID0gLTE7CisgICAgICAgIGlmIChudW1lcmljVHlwZSA9PSBOdW1lcmljVHlwZS5ERUNJTUFMKSB7CisgICAgICAgICAgICByZXN1bHQgPSAtMjsKKyAgICAgICAgfQorICAgICAgICBpZiAobnVtZXJpY1R5cGUgIT0gTnVtZXJpY1R5cGUuTk9ORSkgeworICAgICAgICAgICAgLy8gaWYgcHJvcHMgPT0gMCwgaXQgd2lsbCBqdXN0IGZhbGwgdGhyb3VnaCBhbmQgcmV0dXJuIC0xCisgICAgICAgICAgICBpZiAoaXNOb3RFeGNlcHRpb25JbmRpY2F0b3IocHJvcHMpKSB7CisgICAgICAgICAgICAgICAgLy8gbm90IGNvbnRhaW5lZCBpbiBleGNlcHRpb24gZGF0YQorICAgICAgICAgICAgICAgIHJldHVybiBVQ2hhcmFjdGVyUHJvcGVydHkuZ2V0U2lnbmVkVmFsdWUocHJvcHMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpbnQgaW5kZXggPSBVQ2hhcmFjdGVyUHJvcGVydHkuZ2V0RXhjZXB0aW9uSW5kZXgocHJvcHMpOworICAgICAgICAgICAgaWYgKCFQUk9QRVJUWV8uaGFzRXhjZXB0aW9uVmFsdWUoaW5kZXgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXJQcm9wZXJ0eS5FWENfREVOT01JTkFUT1JfVkFMVUVfKSAmJiAKKyAgICAgICAgICAgICAgICBQUk9QRVJUWV8uaGFzRXhjZXB0aW9uVmFsdWUoaW5kZXgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyUHJvcGVydHkuRVhDX05VTUVSSUNfVkFMVUVfKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBQUk9QRVJUWV8uZ2V0RXhjZXB0aW9uKGluZGV4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyUHJvcGVydHkuRVhDX05VTUVSSUNfVkFMVUVfKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKHJlc3VsdCA8IDApIHsKKyAgICAgICAgICAgIGludCBldXJvcGVhbm51bWVyaWMgPSBnZXRFdXJvcGVhbkRpZ2l0KGNoKTsKKyAgICAgICAgICAgIGlmIChldXJvcGVhbm51bWVyaWMgPj0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBldXJvcGVhbm51bWVyaWM7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIDxwPkdldCB0aGUgbnVtZXJpYyB2YWx1ZSBmb3IgYSBVbmljb2RlIGNvZGUgcG9pbnQgYXMgZGVmaW5lZCBpbiB0aGUgCisgICAgICogVW5pY29kZSBDaGFyYWN0ZXIgRGF0YWJhc2UuPC9wPgorICAgICAqIDxwPkEgImRvdWJsZSIgcmV0dXJuIHR5cGUgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugc29tZSBudW1lcmljIHZhbHVlcyBhcmUgCisgICAgICogZnJhY3Rpb25zLCBuZWdhdGl2ZSwgb3IgdG9vIGxhcmdlIGZvciBpbnQuPC9wPgorICAgICAqIDxwPkZvciBjaGFyYWN0ZXJzIHdpdGhvdXQgYW55IG51bWVyaWMgdmFsdWVzIGluIHRoZSBVbmljb2RlIENoYXJhY3RlciAKKyAgICAgKiBEYXRhYmFzZSwgdGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBOT19OVU1FUklDX1ZBTFVFLjwvcD4KKyAgICAgKiA8cD48ZW0+QVBJIENoYW5nZTo8L2VtPiBJbiByZWxlYXNlIDIuMiBhbmQgcHJpb3IsIHRoaXMgQVBJIGhhcyBhCisgICAgICogcmV0dXJuIHR5cGUgaW50IGFuZCByZXR1cm5zIC0xIHdoZW4gdGhlIGFyZ3VtZW50IGNoIGRvZXMgbm90IGhhdmUgYSAKKyAgICAgKiBjb3JyZXNwb25kaW5nIG51bWVyaWMgdmFsdWUuIFRoaXMgaGFzIGJlZW4gY2hhbmdlZCB0byBzeW5jaCB3aXRoIElDVTRDCisgICAgICogPC9wPgorICAgICAqIEBwYXJhbSBjaCBDb2RlIHBvaW50IHRvIGdldCB0aGUgbnVtZXJpYyB2YWx1ZSBmb3IuCisgICAgICogQHJldHVybiBudW1lcmljIHZhbHVlIG9mIGNoLCBvciBOT19OVU1FUklDX1ZBTFVFIGlmIG5vbmUgaXMgZGVmaW5lZC4KKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZG91YmxlIGdldFVuaWNvZGVOdW1lcmljVmFsdWUoaW50IGNoKQorICAgIHsKKyAgICAgICAgLy8gZXF1aXZhbGVudCB0byBjIHZlcnNpb24gZG91YmxlIHVfZ2V0TnVtZXJpY1ZhbHVlKFVDaGFyMzIgYykKKyAgICAgICAgaW50IHByb3BzID0gUFJPUEVSVFlfLmdldFByb3BlcnR5KGNoKTsKKyAgICAgICAgaW50IG51bWVyaWNUeXBlID0gZ2V0TnVtZXJpY1R5cGUocHJvcHMpOworICAgICAgICBpZiAobnVtZXJpY1R5cGUgPiBOdW1lcmljVHlwZS5OT05FICYmIG51bWVyaWNUeXBlIDwgTnVtZXJpY1R5cGUuQ09VTlQpIHsKKyAgICAgICAgICAgIGlmIChpc05vdEV4Y2VwdGlvbkluZGljYXRvcihwcm9wcykpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gVUNoYXJhY3RlclByb3BlcnR5LmdldFNpZ25lZFZhbHVlKHByb3BzKTsKKyAgICAgICAgICAgIH0gCisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpbnQgaW5kZXggPSBVQ2hhcmFjdGVyUHJvcGVydHkuZ2V0RXhjZXB0aW9uSW5kZXgocHJvcHMpOworICAgICAgICAgICAgICAgIGJvb2xlYW4gbmV4ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgYm9vbGVhbiBkZXggPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBkb3VibGUgbnVtZXJhdG9yID0gMDsKKyAgICAgICAgICAgICAgICBpZiAoUFJPUEVSVFlfLmhhc0V4Y2VwdGlvblZhbHVlKGluZGV4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyUHJvcGVydHkuRVhDX05VTUVSSUNfVkFMVUVfKSkgeworICAgICAgICAgICAgICAgICAgICBpbnQgbnVtID0gUFJPUEVSVFlfLmdldEV4Y2VwdGlvbihpbmRleCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXJQcm9wZXJ0eS5FWENfTlVNRVJJQ19WQUxVRV8pOworICAgICAgICAgICAgICAgICAgICAvLyBUaGVyZSBhcmUgc3BlY2lhbCB2YWx1ZXMgZm9yIGh1Z2UgbnVtYmVycyB0aGF0IGFyZSAKKyAgICAgICAgICAgICAgICAgICAgLy8gcG93ZXJzIG9mIHRlbi4gZ2VucHJvcHMvc3RvcmUuYyBkb2N1bWVudHM6CisgICAgICAgICAgICAgICAgICAgIC8vIGlmIG51bWVyaWNWYWx1ZSA9IDB4N2ZmZmZmMDAgKyB4IHRoZW4gCisgICAgICAgICAgICAgICAgICAgIC8vIG51bWVyaWNWYWx1ZSA9IDEwIF4geAorICAgICAgICAgICAgICAgICAgICBpZiAobnVtID49IE5VTUVSQVRPUl9QT1dFUl9MSU1JVF8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG51bSAmPSAweGZmOworICAgICAgICAgICAgICAgICAgICAgICAgLy8gMTBeeCB3aXRob3V0IG1hdGguaAorICAgICAgICAgICAgICAgICAgICAgICAgbnVtZXJhdG9yID0gTWF0aC5wb3coMTAsIG51bSk7CisgICAgICAgICAgICAgICAgICAgIH0gCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgbnVtZXJhdG9yID0gbnVtOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIG5leCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRvdWJsZSBkZW5vbWluYXRvciA9IDA7CisgICAgICAgICAgICAgICAgaWYgKFBST1BFUlRZXy5oYXNFeGNlcHRpb25WYWx1ZShpbmRleCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3RlclByb3BlcnR5LkVYQ19ERU5PTUlOQVRPUl9WQUxVRV8pKSB7CisgICAgICAgICAgICAgICAgICAgIGRlbm9taW5hdG9yID0gUFJPUEVSVFlfLmdldEV4Y2VwdGlvbihpbmRleCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3RlclByb3BlcnR5LkVYQ19ERU5PTUlOQVRPUl9WQUxVRV8pOworICAgICAgICAgICAgICAgICAgICAvLyBmYXN0ZXIgcGF0aCBub3QgaW4gYworICAgICAgICAgICAgICAgICAgICBpZiAobnVtZXJhdG9yICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudW1lcmF0b3IgLyBkZW5vbWluYXRvcjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBkZXggPSB0cnVlOworICAgICAgICAgICAgICAgIH0gCisgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChuZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRleCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bWVyYXRvciAvIGRlbm9taW5hdG9yOworICAgICAgICAgICAgICAgICAgICB9IAorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVtZXJhdG9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoZGV4KSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAxIC8gZGVub21pbmF0b3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBOT19OVU1FUklDX1ZBTFVFOworICAgIH0KKyAgCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIHZhbHVlIGluZGljYXRpbmcgYSBjb2RlIHBvaW50J3MgVW5pY29kZSBjYXRlZ29yeS4KKyAgICAgKiBVcC10by1kYXRlIFVuaWNvZGUgaW1wbGVtZW50YXRpb24gb2YgamF2YS5sYW5nLkNoYXJhY3Rlci5nZXRUeXBlKCkgCisgICAgICogZXhjZXB0IGZvciB0aGUgYWJvdmUgbWVudGlvbmVkIGNvZGUgcG9pbnRzIHRoYXQgaGFkIHRoZWlyIGNhdGVnb3J5IAorICAgICAqIGNoYW5nZWQuPGJyPgorICAgICAqIFJldHVybiByZXN1bHRzIGFyZSBjb25zdGFudHMgZnJvbSB0aGUgaW50ZXJmYWNlIAorICAgICAqIDxhIGhyZWY9VUNoYXJhY3RlckNhdGVnb3J5Lmh0bWw+VUNoYXJhY3RlckNhdGVnb3J5PC9hPgorICAgICAqIEBwYXJhbSBjaCBjb2RlIHBvaW50IHdob3NlIHR5cGUgaXMgdG8gYmUgZGV0ZXJtaW5lZAorICAgICAqIEByZXR1cm4gY2F0ZWdvcnkgd2hpY2ggaXMgYSB2YWx1ZSBvZiBVQ2hhcmFjdGVyQ2F0ZWdvcnkKKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludCBnZXRUeXBlKGludCBjaCkKKyAgICB7CisgICAgICAgIC8vIHdoZW4gY2ggaXMgb3V0IG9mIGJvdW5kcyBnZXRQcm9wZXJ0eSA9PSAwCisgICAgICAgIC8vIHJldHVybiBVQ2hhcmFjdGVyUHJvcGVydHkuVFlQRV9NQVNLICYgUFJPUEVSVFlfLmdldFByb3BlcnR5KGNoKTsKKyAgICAgICAgcmV0dXJuIFBST1BFUlRZXy5nZXRQcm9wZXJ0eShjaCkgJiBVQ2hhcmFjdGVyUHJvcGVydHkuVFlQRV9NQVNLOworICAgIH0KKyAgICAgICAKKyAgICAvKioKKyAgICAgKiBEZXRlcm1pbmVzIGlmIGEgY29kZSBwb2ludCBoYXMgYSBkZWZpbmVkIG1lYW5pbmcgaW4gdGhlIHVwLXRvLWRhdGUgCisgICAgICogVW5pY29kZSBzdGFuZGFyZC4KKyAgICAgKiBFLmcuIHN1cHBsZW1lbnRhcnkgY29kZSBwb2ludHMgdGhvdWdoIGFsbG9jYXRlZCBzcGFjZSBhcmUgbm90IGRlZmluZWQgaW4gCisgICAgICogVW5pY29kZSB5ZXQuPGJyPgorICAgICAqIFVwLXRvLWRhdGUgVW5pY29kZSBpbXBsZW1lbnRhdGlvbiBvZiBqYXZhLmxhbmcuQ2hhcmFjdGVyLmlzRGVmaW5lZCgpCisgICAgICogQHBhcmFtIGNoIGNvZGUgcG9pbnQgdG8gYmUgZGV0ZXJtaW5lZCBpZiBpdCBpcyBkZWZpbmVkIGluIHRoZSBtb3N0IAorICAgICAqICAgICAgICBjdXJyZW50IHZlcnNpb24gb2YgVW5pY29kZQorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGlzIGNvZGUgcG9pbnQgaXMgZGVmaW5lZCBpbiB1bmljb2RlCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzRGVmaW5lZChpbnQgY2gpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0VHlwZShjaCkgIT0gMDsKKyAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAvKioKKyAgICAgKiBEZXRlcm1pbmVzIGlmIGEgY29kZSBwb2ludCBpcyBhIEphdmEgZGlnaXQuCisgICAgICogPGJyPlRoaXMgbWV0aG9kIG9ic2VydmVzIHRoZSBzZW1hbnRpY3Mgb2YKKyAgICAgKiA8Y29kZT5qYXZhLmxhbmcuQ2hhcmFjdGVyLmlzRGlnaXQoKTwvY29kZT4uIEl0IHJldHVybnMgdHJ1ZSBmb3IgZGVjaW1hbCAKKyAgICAgKiBkaWdpdHMgb25seS4KKyAgICAgKiA8YnI+PGVtPlNlbWFudGljIENoYW5nZTo8L2VtPiBJbiByZWxlYXNlIDEuMy4xIGFuZCBwcmlvciwgdGhpcyB0cmVhdGVkIAorICAgICAqIG51bWVyaWMgbGV0dGVycyBhbmQgb3RoZXIgbnVtYmVycyBhcyBkaWdpdHMuIAorICAgICAqIFRoaXMgaGFzIGJlZW4gY2hhbmdlZCB0byBjb25mb3JtIHRvIHRoZSBqYXZhIHNlbWFudGljcy4KKyAgICAgKiBAcGFyYW0gY2ggY29kZSBwb2ludCB0byBxdWVyeQorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGlzIGNvZGUgcG9pbnQgaXMgYSBkaWdpdCAKKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNEaWdpdChpbnQgY2gpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0VHlwZShjaCkgPT0gVUNoYXJhY3RlckNhdGVnb3J5LkRFQ0lNQUxfRElHSVRfTlVNQkVSOworICAgIH0KKworICAgIC8qKgorICAgICAqIERldGVybWluZXMgaWYgdGhlIHNwZWNpZmllZCBjb2RlIHBvaW50IGlzIGFuIElTTyBjb250cm9sIGNoYXJhY3Rlci4KKyAgICAgKiBBIGNvZGUgcG9pbnQgaXMgY29uc2lkZXJlZCB0byBiZSBhbiBJU08gY29udHJvbCBjaGFyYWN0ZXIgaWYgaXQgaXMgaW4gCisgICAgICogdGhlIHJhbmdlICYjOTJ1MDAwMCB0aHJvdWdoICYjOTJ1MDAxRiBvciBpbiB0aGUgcmFuZ2UgJiM5MnUwMDdGIHRocm91Z2ggCisgICAgICogJiM5MnUwMDlGLjxicj4KKyAgICAgKiBVcC10by1kYXRlIFVuaWNvZGUgaW1wbGVtZW50YXRpb24gb2YgamF2YS5sYW5nLkNoYXJhY3Rlci5pc0lTT0NvbnRyb2woKQorICAgICAqIEBwYXJhbSBjaCBjb2RlIHBvaW50IHRvIGRldGVybWluZSBpZiBpdCBpcyBhbiBJU08gY29udHJvbCBjaGFyYWN0ZXIKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgY29kZSBwb2ludCBpcyBhIElTTyBjb250cm9sIGNoYXJhY3RlcgorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0lTT0NvbnRyb2woaW50IGNoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNoID49IDAgJiYgY2ggPD0gQVBQTElDQVRJT05fUFJPR1JBTV9DT01NQU5EXyAmJiAKKyAgICAgICAgICAgICgoY2ggPD0gVU5JVF9TRVBBUkFUT1JfKSB8fCAoY2ggPj0gREVMRVRFXykpOworICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIC8qKgorICAgICAqIERldGVybWluZXMgaWYgdGhlIHNwZWNpZmllZCBjb2RlIHBvaW50IGlzIGEgbGV0dGVyLgorICAgICAqIFVwLXRvLWRhdGUgVW5pY29kZSBpbXBsZW1lbnRhdGlvbiBvZiBqYXZhLmxhbmcuQ2hhcmFjdGVyLmlzTGV0dGVyKCkKKyAgICAgKiBAcGFyYW0gY2ggY29kZSBwb2ludCB0byBkZXRlcm1pbmUgaWYgaXQgaXMgYSBsZXR0ZXIKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgY29kZSBwb2ludCBpcyBhIGxldHRlcgorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0xldHRlcihpbnQgY2gpCisgICAgeworICAgICAgICBpbnQgY2F0ID0gZ2V0VHlwZShjaCk7CisgICAgICAgIC8vIGlmIHByb3BzID09IDAsIGl0IHdpbGwganVzdCBmYWxsIHRocm91Z2ggYW5kIHJldHVybiBmYWxzZQorICAgICAgICByZXR1cm4gY2F0ID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5VUFBFUkNBU0VfTEVUVEVSIHx8IAorICAgICAgICAgICAgY2F0ID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5MT1dFUkNBU0VfTEVUVEVSIHx8IAorICAgICAgICAgICAgY2F0ID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5USVRMRUNBU0VfTEVUVEVSIHx8IAorICAgICAgICAgICAgY2F0ID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5NT0RJRklFUl9MRVRURVIgfHwKKyAgICAgICAgICAgIGNhdCA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuT1RIRVJfTEVUVEVSOworICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAvKioKKyAgICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBzcGVjaWZpZWQgY29kZSBwb2ludCBpcyBhIGxldHRlciBvciBkaWdpdC4KKyAgICAgKiBOb3RlIHRoaXMgbWV0aG9kLCB1bmxpa2UgamF2YS5sYW5nLkNoYXJhY3RlciBkb2VzIG5vdCByZWdhcmQgdGhlIGFzY2lpIAorICAgICAqIGNoYXJhY3RlcnMgJ0EnIC0gJ1onIGFuZCAnYScgLSAneicgYXMgZGlnaXRzLgorICAgICAqIEBwYXJhbSBjaCBjb2RlIHBvaW50IHRvIGRldGVybWluZSBpZiBpdCBpcyBhIGxldHRlciBvciBhIGRpZ2l0CisgICAgICogQHJldHVybiB0cnVlIGlmIGNvZGUgcG9pbnQgaXMgYSBsZXR0ZXIgb3IgYSBkaWdpdAorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0xldHRlck9yRGlnaXQoaW50IGNoKQorICAgIHsKKyAgICAgICAgaW50IGNhdCA9IGdldFR5cGUoY2gpOworICAgICAgICByZXR1cm4gY2F0ID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5VUFBFUkNBU0VfTEVUVEVSIAorICAgICAgICAgICAgICAgfHwgY2F0ID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5MT1dFUkNBU0VfTEVUVEVSIAorICAgICAgICAgICAgICAgfHwgY2F0ID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5USVRMRUNBU0VfTEVUVEVSIAorICAgICAgICAgICAgICAgfHwgY2F0ID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5NT0RJRklFUl9MRVRURVIgCisgICAgICAgICAgICAgICB8fCBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5Lk9USEVSX0xFVFRFUiAKKyAgICAgICAgICAgICAgIHx8IGNhdCA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuREVDSU1BTF9ESUdJVF9OVU1CRVI7CisgICAgfQorICAgICAgICAKKyAgICAvKioKKyAgICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBzcGVjaWZpZWQgY29kZSBwb2ludCBpcyBhIGxvd2VyY2FzZSBjaGFyYWN0ZXIuCisgICAgICogVW5pY29kZURhdGEgb25seSBjb250YWlucyBjYXNlIG1hcHBpbmdzIGZvciBjb2RlIHBvaW50cyB3aGVyZSB0aGV5IGFyZSAKKyAgICAgKiBvbmUtdG8tb25lIG1hcHBpbmdzOyBpdCBhbHNvIG9taXRzIGluZm9ybWF0aW9uIGFib3V0IGNvbnRleHQtc2Vuc2l0aXZlIAorICAgICAqIGNhc2UgbWFwcGluZ3MuPGJyPiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBVbmljb2RlIGNhc2UgbWFwcGluZyAKKyAgICAgKiBwbGVhc2UgcmVmZXIgdG8gdGhlIAorICAgICAqIDxhIGhyZWY9aHR0cDovL3d3dy51bmljb2RlLm9yZy91bmljb2RlL3JlcG9ydHMvdHIyMS8+VGVjaG5pY2FsIHJlcG9ydCAKKyAgICAgKiAjMjE8L2E+Ljxicj4KKyAgICAgKiBVcC10by1kYXRlIFVuaWNvZGUgaW1wbGVtZW50YXRpb24gb2YgamF2YS5sYW5nLkNoYXJhY3Rlci5pc0xvd2VyQ2FzZSgpCisgICAgICogQHBhcmFtIGNoIGNvZGUgcG9pbnQgdG8gZGV0ZXJtaW5lIGlmIGl0IGlzIGluIGxvd2VyY2FzZQorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiBjb2RlIHBvaW50IGlzIGEgbG93ZXJjYXNlIGNoYXJhY3RlcgorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0xvd2VyQ2FzZShpbnQgY2gpCisgICAgeworICAgICAgICAvLyBpZiBwcm9wcyA9PSAwLCBpdCB3aWxsIGp1c3QgZmFsbCB0aHJvdWdoIGFuZCByZXR1cm4gZmFsc2UKKyAgICAgICAgcmV0dXJuIGdldFR5cGUoY2gpID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5MT1dFUkNBU0VfTEVUVEVSOworICAgIH0KKyAgICAgICAKKyAgICAvKioKKyAgICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBzcGVjaWZpZWQgY29kZSBwb2ludCBpcyBhIHdoaXRlIHNwYWNlIGNoYXJhY3Rlci4KKyAgICAgKiBBIGNvZGUgcG9pbnQgaXMgY29uc2lkZXJlZCB0byBiZSBhbiB3aGl0ZXNwYWNlIGNoYXJhY3RlciBpZiBhbmQgb25seQorICAgICAqIGlmIGl0IHNhdGlzZmllcyBvbmUgb2YgdGhlIGZvbGxvd2luZyBjcml0ZXJpYToKKyAgICAgKiA8dWw+CisgICAgICogPGxpPiBJdCBpcyBhIFVuaWNvZGUgc3BhY2Ugc2VwYXJhdG9yIChjYXRlZ29yeSAiWnMiKSwgYnV0IGlzIG5vdAorICAgICAqICAgICAgYSBuby1icmVhayBzcGFjZSAoJiM5MnUwMEEwIG9yICYjOTJ1MjAyRiBvciAmIzkydUZFRkYpLgorICAgICAqIDxsaT4gSXQgaXMgYSBVbmljb2RlIGxpbmUgc2VwYXJhdG9yIChjYXRlZ29yeSAiWmwiKS4KKyAgICAgKiA8bGk+IEl0IGlzIGEgVW5pY29kZSBwYXJhZ3JhcGggc2VwYXJhdG9yIChjYXRlZ29yeSAiWnAiKS4KKyAgICAgKiA8bGk+IEl0IGlzICYjOTJ1MDAwOSwgSE9SSVpPTlRBTCBUQUJVTEFUSU9OLiAKKyAgICAgKiA8bGk+IEl0IGlzICYjOTJ1MDAwQSwgTElORSBGRUVELiAKKyAgICAgKiA8bGk+IEl0IGlzICYjOTJ1MDAwQiwgVkVSVElDQUwgVEFCVUxBVElPTi4gCisgICAgICogPGxpPiBJdCBpcyAmIzkydTAwMEMsIEZPUk0gRkVFRC4gCisgICAgICogPGxpPiBJdCBpcyAmIzkydTAwMEQsIENBUlJJQUdFIFJFVFVSTi4gCisgICAgICogPGxpPiBJdCBpcyAmIzkydTAwMUMsIEZJTEUgU0VQQVJBVE9SLiAKKyAgICAgKiA8bGk+IEl0IGlzICYjOTJ1MDAxRCwgR1JPVVAgU0VQQVJBVE9SLiAKKyAgICAgKiA8bGk+IEl0IGlzICYjOTJ1MDAxRSwgUkVDT1JEIFNFUEFSQVRPUi4gCisgICAgICogPGxpPiBJdCBpcyAmIzkydTAwMUYsIFVOSVQgU0VQQVJBVE9SLiAKKyAgICAgKiA8L3VsPgorICAgICAqCisgICAgICogVXAtdG8tZGF0ZSBVbmljb2RlIGltcGxlbWVudGF0aW9uIG9mIGphdmEubGFuZy5DaGFyYWN0ZXIuaXNXaGl0ZXNwYWNlKCkuCisgICAgICogQHBhcmFtIGNoIGNvZGUgcG9pbnQgdG8gZGV0ZXJtaW5lIGlmIGl0IGlzIGEgd2hpdGUgc3BhY2UKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIHNwZWNpZmllZCBjb2RlIHBvaW50IGlzIGEgd2hpdGUgc3BhY2UgY2hhcmFjdGVyCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzV2hpdGVzcGFjZShpbnQgY2gpCisgICAgeworICAgICAgICBpbnQgY2F0ID0gZ2V0VHlwZShjaCk7CisgICAgICAgIC8vIGV4Y2x1ZGUgbm8tYnJlYWsgc3BhY2VzCisgICAgICAgIC8vIGlmIHByb3BzID09IDAsIGl0IHdpbGwganVzdCBmYWxsIHRocm91Z2ggYW5kIHJldHVybiBmYWxzZQorICAgICAgICByZXR1cm4gKGNhdCA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuU1BBQ0VfU0VQQVJBVE9SIHx8IAorICAgICAgICAgICAgICAgIGNhdCA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuTElORV9TRVBBUkFUT1IgfHwKKyAgICAgICAgICAgICAgICBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5LlBBUkFHUkFQSF9TRVBBUkFUT1IpICYmIAorICAgICAgICAgICAgICAgIChjaCAhPSBOT19CUkVBS19TUEFDRV8pICYmIAorICAgICAgICAgICAgICAgIChjaCAhPSBOQVJST1dfTk9fQlJFQUtfU1BBQ0VfKSAmJiAKKyAgICAgICAgICAgICAgICAoY2ggIT0gWkVST19XSURUSF9OT19CUkVBS19TUEFDRV8pIHx8CisgICAgICAgICAgICAgICAgLy8gVEFCIFZUIExGIEZGIENSIEZTIEdTIFJTIFVTIE5MIGFyZSBhbGwgY29udHJvbCBjaGFyYWN0ZXJzCisgICAgICAgICAgICAgICAgLy8gdGhhdCBhcmUgd2hpdGUgc3BhY2VzLgorICAgICAgICAgICAgICAgIChjaCA+PSAweDkgJiYgY2ggPD0gMHhkKSB8fCAoY2ggPj0gMHgxYyAmJiBjaCA8PSAweDFmKTsKKyAgICB9CisgICAgICAgCisgICAgLyoqCisgICAgICogRGV0ZXJtaW5lcyBpZiB0aGUgc3BlY2lmaWVkIGNvZGUgcG9pbnQgaXMgYSBVbmljb2RlIHNwZWNpZmllZCBzcGFjZSAKKyAgICAgKiBjaGFyYWN0ZXIsIGkuZS4gaWYgY29kZSBwb2ludCBpcyBpbiB0aGUgY2F0ZWdvcnkgWnMsIFpsIGFuZCBacC4KKyAgICAgKiBVcC10by1kYXRlIFVuaWNvZGUgaW1wbGVtZW50YXRpb24gb2YgamF2YS5sYW5nLkNoYXJhY3Rlci5pc1NwYWNlQ2hhcigpLgorICAgICAqIEBwYXJhbSBjaCBjb2RlIHBvaW50IHRvIGRldGVybWluZSBpZiBpdCBpcyBhIHNwYWNlCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSBzcGVjaWZpZWQgY29kZSBwb2ludCBpcyBhIHNwYWNlIGNoYXJhY3RlcgorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc1NwYWNlQ2hhcihpbnQgY2gpCisgICAgeworICAgICAgICBpbnQgY2F0ID0gZ2V0VHlwZShjaCk7CisgICAgICAgIC8vIGlmIHByb3BzID09IDAsIGl0IHdpbGwganVzdCBmYWxsIHRocm91Z2ggYW5kIHJldHVybiBmYWxzZQorICAgICAgICByZXR1cm4gY2F0ID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5TUEFDRV9TRVBBUkFUT1IgfHwgCisgICAgICAgICAgICBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5LkxJTkVfU0VQQVJBVE9SIHx8CisgICAgICAgICAgICBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5LlBBUkFHUkFQSF9TRVBBUkFUT1I7CisgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgLyoqCisgICAgICogRGV0ZXJtaW5lcyBpZiB0aGUgc3BlY2lmaWVkIGNvZGUgcG9pbnQgaXMgYSB0aXRsZWNhc2UgY2hhcmFjdGVyLgorICAgICAqIFVuaWNvZGVEYXRhIG9ubHkgY29udGFpbnMgY2FzZSBtYXBwaW5ncyBmb3IgY29kZSBwb2ludHMgd2hlcmUgdGhleSBhcmUgCisgICAgICogb25lLXRvLW9uZSBtYXBwaW5nczsgaXQgYWxzbyBvbWl0cyBpbmZvcm1hdGlvbiBhYm91dCBjb250ZXh0LXNlbnNpdGl2ZSAKKyAgICAgKiBjYXNlIG1hcHBpbmdzLjxicj4KKyAgICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBVbmljb2RlIGNhc2UgbWFwcGluZyBwbGVhc2UgcmVmZXIgdG8gdGhlIAorICAgICAqIDxhIGhyZWY9aHR0cDovL3d3dy51bmljb2RlLm9yZy91bmljb2RlL3JlcG9ydHMvdHIyMS8+CisgICAgICogVGVjaG5pY2FsIHJlcG9ydCAjMjE8L2E+Ljxicj4KKyAgICAgKiBVcC10by1kYXRlIFVuaWNvZGUgaW1wbGVtZW50YXRpb24gb2YgamF2YS5sYW5nLkNoYXJhY3Rlci5pc1RpdGxlQ2FzZSgpLgorICAgICAqIEBwYXJhbSBjaCBjb2RlIHBvaW50IHRvIGRldGVybWluZSBpZiBpdCBpcyBpbiB0aXRsZSBjYXNlCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSBzcGVjaWZpZWQgY29kZSBwb2ludCBpcyBhIHRpdGxlY2FzZSBjaGFyYWN0ZXIKKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNUaXRsZUNhc2UoaW50IGNoKQorICAgIHsKKyAgICAgICAgaW50IGNhdCA9IGdldFR5cGUoY2gpOworICAgICAgICAvLyBpZiBwcm9wcyA9PSAwLCBpdCB3aWxsIGp1c3QgZmFsbCB0aHJvdWdoIGFuZCByZXR1cm4gZmFsc2UKKyAgICAgICAgcmV0dXJuIGNhdCA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuVElUTEVDQVNFX0xFVFRFUjsKKyAgICB9CisgICAgICAgCisgICAgLyoqCisgICAgICogRGV0ZXJtaW5lcyBpZiB0aGUgc3BlY2lmaWVkIGNvZGUgcG9pbnQgbWF5IGJlIGFueSBwYXJ0IG9mIGEgVW5pY29kZSAKKyAgICAgKiBpZGVudGlmaWVyIG90aGVyIHRoYW4gdGhlIHN0YXJ0aW5nIGNoYXJhY3Rlci4KKyAgICAgKiBBIGNvZGUgcG9pbnQgbWF5IGJlIHBhcnQgb2YgYSBVbmljb2RlIGlkZW50aWZpZXIgaWYgYW5kIG9ubHkgaWYgaXQgaXMgCisgICAgICogb25lIG9mIHRoZSBmb2xsb3dpbmc6IAorICAgICAqIDx1bD4KKyAgICAgKiA8bGk+IEx1IFVwcGVyY2FzZSBsZXR0ZXIKKyAgICAgKiA8bGk+IExsIExvd2VyY2FzZSBsZXR0ZXIKKyAgICAgKiA8bGk+IEx0IFRpdGxlY2FzZSBsZXR0ZXIKKyAgICAgKiA8bGk+IExtIE1vZGlmaWVyIGxldHRlcgorICAgICAqIDxsaT4gTG8gT3RoZXIgbGV0dGVyCisgICAgICogPGxpPiBObCBMZXR0ZXIgbnVtYmVyCisgICAgICogPGxpPiBQYyBDb25uZWN0aW5nIHB1bmN0dWF0aW9uIGNoYXJhY3RlciAKKyAgICAgKiA8bGk+IE5kIGRlY2ltYWwgbnVtYmVyCisgICAgICogPGxpPiBNYyBTcGFjaW5nIGNvbWJpbmluZyBtYXJrIAorICAgICAqIDxsaT4gTW4gTm9uLXNwYWNpbmcgbWFyayAKKyAgICAgKiA8bGk+IENmIGZvcm1hdHRpbmcgY29kZQorICAgICAqIDwvdWw+CisgICAgICogVXAtdG8tZGF0ZSBVbmljb2RlIGltcGxlbWVudGF0aW9uIG9mIAorICAgICAqIGphdmEubGFuZy5DaGFyYWN0ZXIuaXNVbmljb2RlSWRlbnRpZmllclBhcnQoKS48YnI+CisgICAgICogU2VlIDxhIGhyZWY9aHR0cDovL3d3dy51bmljb2RlLm9yZy91bmljb2RlL3JlcG9ydHMvdHI4Lz5VVFIgIzg8L2E+LgorICAgICAqIEBwYXJhbSBjaCBjb2RlIHBvaW50IHRvIGRldGVybWluZSBpZiBpcyBjYW4gYmUgcGFydCBvZiBhIFVuaWNvZGUgCisgICAgICogICAgICAgIGlkZW50aWZpZXIKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgY29kZSBwb2ludCBpcyBhbnkgY2hhcmFjdGVyIGJlbG9uZ2luZyBhIHVuaWNvZGUgCisgICAgICogICAgICAgICBpZGVudGlmaWVyIHN1ZmZpeCBhZnRlciB0aGUgZmlyc3QgY2hhcmFjdGVyCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzVW5pY29kZUlkZW50aWZpZXJQYXJ0KGludCBjaCkKKyAgICB7CisgICAgICAgIGludCBjYXQgPSBnZXRUeXBlKGNoKTsKKyAgICAgICAgLy8gaWYgcHJvcHMgPT0gMCwgaXQgd2lsbCBqdXN0IGZhbGwgdGhyb3VnaCBhbmQgcmV0dXJuIGZhbHNlCisgICAgICAgIHJldHVybiBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5LlVQUEVSQ0FTRV9MRVRURVIgfHwgCisgICAgICAgICAgICBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5LkxPV0VSQ0FTRV9MRVRURVIgfHwgCisgICAgICAgICAgICBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5LlRJVExFQ0FTRV9MRVRURVIgfHwgCisgICAgICAgICAgICBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5Lk1PRElGSUVSX0xFVFRFUiB8fAorICAgICAgICAgICAgY2F0ID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5PVEhFUl9MRVRURVIgfHwgCisgICAgICAgICAgICBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5LkxFVFRFUl9OVU1CRVIgfHwKKyAgICAgICAgICAgIGNhdCA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuQ09OTkVDVE9SX1BVTkNUVUFUSU9OIHx8CisgICAgICAgICAgICBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5LkRFQ0lNQUxfRElHSVRfTlVNQkVSIHx8CisgICAgICAgICAgICBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5LkNPTUJJTklOR19TUEFDSU5HX01BUksgfHwgCisgICAgICAgICAgICBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5Lk5PTl9TUEFDSU5HX01BUksgfHwgCisgICAgICAgICAgICAvLyBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5LkZPUk1BVDsKKyAgICAgICAgICAgIGlzSWRlbnRpZmllcklnbm9yYWJsZShjaCk7CisgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAvKioKKyAgICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBzcGVjaWZpZWQgY29kZSBwb2ludCBpcyBwZXJtaXNzaWJsZSBhcyB0aGUgZmlyc3QgCisgICAgICogY2hhcmFjdGVyIGluIGEgVW5pY29kZSBpZGVudGlmaWVyLgorICAgICAqIEEgY29kZSBwb2ludCBtYXkgc3RhcnQgYSBVbmljb2RlIGlkZW50aWZpZXIgaWYgaXQgaXMgb2YgdHlwZSBlaXRoZXIgCisgICAgICogPHVsPiAKKyAgICAgKiA8bGk+IEx1IFVwcGVyY2FzZSBsZXR0ZXIKKyAgICAgKiA8bGk+IExsIExvd2VyY2FzZSBsZXR0ZXIKKyAgICAgKiA8bGk+IEx0IFRpdGxlY2FzZSBsZXR0ZXIKKyAgICAgKiA8bGk+IExtIE1vZGlmaWVyIGxldHRlcgorICAgICAqIDxsaT4gTG8gT3RoZXIgbGV0dGVyCisgICAgICogPGxpPiBObCBMZXR0ZXIgbnVtYmVyCisgICAgICogPC91bD4KKyAgICAgKiBVcC10by1kYXRlIFVuaWNvZGUgaW1wbGVtZW50YXRpb24gb2YgCisgICAgICogamF2YS5sYW5nLkNoYXJhY3Rlci5pc1VuaWNvZGVJZGVudGlmaWVyU3RhcnQoKS48YnI+CisgICAgICogU2VlIDxhIGhyZWY9aHR0cDovL3d3dy51bmljb2RlLm9yZy91bmljb2RlL3JlcG9ydHMvdHI4Lz5VVFIgIzg8L2E+LgorICAgICAqIEBwYXJhbSBjaCBjb2RlIHBvaW50IHRvIGRldGVybWluZSBpZiBpdCBjYW4gc3RhcnQgYSBVbmljb2RlIGlkZW50aWZpZXIKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgY29kZSBwb2ludCBpcyB0aGUgZmlyc3QgY2hhcmFjdGVyIGJlbG9uZ2luZyBhIHVuaWNvZGUgCisgICAgICogICAgICAgICAgICAgIGlkZW50aWZpZXIKKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNVbmljb2RlSWRlbnRpZmllclN0YXJ0KGludCBjaCkKKyAgICB7CisgICAgICAgIGludCBjYXQgPSBnZXRUeXBlKGNoKTsKKyAgICAgICAgLy8gaWYgcHJvcHMgPT0gMCwgaXQgd2lsbCBqdXN0IGZhbGwgdGhyb3VnaCBhbmQgcmV0dXJuIGZhbHNlCisgICAgICAgIHJldHVybiBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5LlVQUEVSQ0FTRV9MRVRURVIgfHwgCisgICAgICAgICAgICBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5LkxPV0VSQ0FTRV9MRVRURVIgfHwgCisgICAgICAgICAgICBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5LlRJVExFQ0FTRV9MRVRURVIgfHwgCisgICAgICAgICAgICBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5Lk1PRElGSUVSX0xFVFRFUiB8fAorICAgICAgICAgICAgY2F0ID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5PVEhFUl9MRVRURVIgfHwgCisgICAgICAgICAgICBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5LkxFVFRFUl9OVU1CRVI7CisgICAgfQorCisgICAgLyoqCisgICAgICogRGV0ZXJtaW5lcyBpZiB0aGUgc3BlY2lmaWVkIGNvZGUgcG9pbnQgc2hvdWxkIGJlIHJlZ2FyZGVkIGFzIGFuIAorICAgICAqIGlnbm9yYWJsZSBjaGFyYWN0ZXIgaW4gYSBVbmljb2RlIGlkZW50aWZpZXIuCisgICAgICogQSBjaGFyYWN0ZXIgaXMgaWdub3JhYmxlIGluIHRoZSBVbmljb2RlIHN0YW5kYXJkIGlmIGl0IGlzIG9mIHRoZSB0eXBlIAorICAgICAqIENmLCBGb3JtYXR0aW5nIGNvZGUuPGJyPgorICAgICAqIFVwLXRvLWRhdGUgVW5pY29kZSBpbXBsZW1lbnRhdGlvbiBvZiAKKyAgICAgKiBqYXZhLmxhbmcuQ2hhcmFjdGVyLmlzSWRlbnRpZmllcklnbm9yYWJsZSgpLjxicj4KKyAgICAgKiBTZWUgPGEgaHJlZj1odHRwOi8vd3d3LnVuaWNvZGUub3JnL3VuaWNvZGUvcmVwb3J0cy90cjgvPlVUUiAjODwvYT4uCisgICAgICogQHBhcmFtIGNoIGNvZGUgcG9pbnQgdG8gYmUgZGV0ZXJtaW5lZCBpZiBpdCBjYW4gYmUgaWdub3JlZCBpbiBhIFVuaWNvZGUgCisgICAgICogICAgICAgIGlkZW50aWZpZXIuCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSBjb2RlIHBvaW50IGlzIGlnbm9yYWJsZQorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0lkZW50aWZpZXJJZ25vcmFibGUoaW50IGNoKQorICAgIHsKKyAgICAgICAgLy8gc2VlIGphdmEubGFuZy5DaGFyYWN0ZXIuaXNJZGVudGlmaWVySWdub3JhYmxlKCkgb24gcmFuZ2Ugb2YgCisgICAgICAgIC8vIGlnbm9yYWJsZSBjaGFyYWN0ZXJzLgorICAgICAgICByZXR1cm4gY2ggPD0gOCB8fCAoY2ggPj0gMHhlICYmIGNoIDw9IDB4MWIpIAorICAgICAgICAgICAgICAgfHwgKGNoID49IDB4N2YgJiYgY2ggPD0gMHg5ZikgCisgICAgICAgICAgICAgICB8fCAoY2ggPj0gMHgyMDBhICYmIGNoIDw9IDB4MjAwZikgCisgICAgICAgICAgICAgICB8fCAoY2ggPj0gMHgyMDZhICYmIGNoIDw9IDB4MjA2ZikgfHwgY2ggPT0gMHhmZWZmOworICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAKKyAgICAvKioKKyAgICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBzcGVjaWZpZWQgY29kZSBwb2ludCBpcyBhbiB1cHBlcmNhc2UgY2hhcmFjdGVyLgorICAgICAqIFVuaWNvZGVEYXRhIG9ubHkgY29udGFpbnMgY2FzZSBtYXBwaW5ncyBmb3IgY29kZSBwb2ludCB3aGVyZSB0aGV5IGFyZSAKKyAgICAgKiBvbmUtdG8tb25lIG1hcHBpbmdzOyBpdCBhbHNvIG9taXRzIGluZm9ybWF0aW9uIGFib3V0IGNvbnRleHQtc2Vuc2l0aXZlIAorICAgICAqIGNhc2UgbWFwcGluZ3MuPGJyPiAKKyAgICAgKiBGb3IgbGFuZ3VhZ2Ugc3BlY2lmaWMgY2FzZSBjb252ZXJzaW9uIGJlaGF2aW9yLCB1c2UgCisgICAgICogdG9VcHBlckNhc2UobG9jYWxlLCBzdHIpLiA8YnI+CisgICAgICogRm9yIGV4YW1wbGUsIHRoZSBjYXNlIGNvbnZlcnNpb24gZm9yIGRvdC1sZXNzIGkgYW5kIGRvdHRlZCBJIGluIFR1cmtpc2gsCisgICAgICogb3IgZm9yIGZpbmFsIHNpZ21hIGluIEdyZWVrLgorICAgICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IFVuaWNvZGUgY2FzZSBtYXBwaW5nIHBsZWFzZSByZWZlciB0byB0aGUgCisgICAgICogPGEgaHJlZj1odHRwOi8vd3d3LnVuaWNvZGUub3JnL3VuaWNvZGUvcmVwb3J0cy90cjIxLz4KKyAgICAgKiBUZWNobmljYWwgcmVwb3J0ICMyMTwvYT4uPGJyPgorICAgICAqIFVwLXRvLWRhdGUgVW5pY29kZSBpbXBsZW1lbnRhdGlvbiBvZiBqYXZhLmxhbmcuQ2hhcmFjdGVyLmlzVXBwZXJDYXNlKCkuCisgICAgICogQHBhcmFtIGNoIGNvZGUgcG9pbnQgdG8gZGV0ZXJtaW5lIGlmIGl0IGlzIGluIHVwcGVyY2FzZQorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgY29kZSBwb2ludCBpcyBhbiB1cHBlcmNhc2UgY2hhcmFjdGVyCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzVXBwZXJDYXNlKGludCBjaCkKKyAgICB7CisgICAgICAgIGludCBjYXQgPSBnZXRUeXBlKGNoKTsKKyAgICAgICAgLy8gaWYgcHJvcHMgPT0gMCwgaXQgd2lsbCBqdXN0IGZhbGwgdGhyb3VnaCBhbmQgcmV0dXJuIGZhbHNlCisgICAgICAgIHJldHVybiBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5LlVQUEVSQ0FTRV9MRVRURVI7CisgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAvKioKKyAgICAgKiBUaGUgZ2l2ZW4gY29kZSBwb2ludCBpcyBtYXBwZWQgdG8gaXRzIGxvd2VyY2FzZSBlcXVpdmFsZW50OyBpZiB0aGUgY29kZSAKKyAgICAgKiBwb2ludCBoYXMgbm8gbG93ZXJjYXNlIGVxdWl2YWxlbnQsIHRoZSBjb2RlIHBvaW50IGl0c2VsZiBpcyByZXR1cm5lZC4KKyAgICAgKiBVbmljb2RlRGF0YSBvbmx5IGNvbnRhaW5zIGNhc2UgbWFwcGluZ3MgZm9yIGNvZGUgcG9pbnQgd2hlcmUgdGhleSBhcmUgCisgICAgICogb25lLXRvLW9uZSBtYXBwaW5nczsgaXQgYWxzbyBvbWl0cyBpbmZvcm1hdGlvbiBhYm91dCBjb250ZXh0LXNlbnNpdGl2ZSAKKyAgICAgKiBjYXNlIG1hcHBpbmdzLjxicj4gCisgICAgICogRm9yIGxhbmd1YWdlIHNwZWNpZmljIGNhc2UgY29udmVyc2lvbiBiZWhhdmlvciwgdXNlIAorICAgICAqIHRvTG93ZXJDYXNlKGxvY2FsZSwgc3RyKS4gPGJyPgorICAgICAqIEZvciBleGFtcGxlLCB0aGUgY2FzZSBjb252ZXJzaW9uIGZvciBkb3QtbGVzcyBpIGFuZCBkb3R0ZWQgSSBpbiBUdXJraXNoLAorICAgICAqIG9yIGZvciBmaW5hbCBzaWdtYSBpbiBHcmVlay4KKyAgICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBVbmljb2RlIGNhc2UgbWFwcGluZyBwbGVhc2UgcmVmZXIgdG8gdGhlIAorICAgICAqIDxhIGhyZWY9aHR0cDovL3d3dy51bmljb2RlLm9yZy91bmljb2RlL3JlcG9ydHMvdHIyMS8+CisgICAgICogVGVjaG5pY2FsIHJlcG9ydCAjMjE8L2E+Ljxicj4KKyAgICAgKiBVcC10by1kYXRlIFVuaWNvZGUgaW1wbGVtZW50YXRpb24gb2YgamF2YS5sYW5nLkNoYXJhY3Rlci50b0xvd2VyQ2FzZSgpCisgICAgICogQHBhcmFtIGNoIGNvZGUgcG9pbnQgd2hvc2UgbG93ZXJjYXNlIGVxdWl2YWxlbnQgaXMgdG8gYmUgcmV0cmlldmVkCisgICAgICogQHJldHVybiB0aGUgbG93ZXJjYXNlIGVxdWl2YWxlbnQgY29kZSBwb2ludAorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgaW50IHRvTG93ZXJDYXNlKGludCBjaCkKKyAgICB7CisgICAgICAgIC8vIHdoZW4gY2ggaXMgb3V0IG9mIGJvdW5kcyBnZXRQcm9wZXJ0eSA9PSAwICAgCisgICAgICAgIGludCBwcm9wcyA9IFBST1BFUlRZXy5nZXRQcm9wZXJ0eShjaCk7CisgICAgICAgIC8vIGlmIHByb3BzID09IDAsIGl0IHdpbGwganVzdCBmYWxsIHRocm91Z2ggYW5kIHJldHVybiBpdHNlbGYKKyAgICAgICAgaWYoaXNOb3RFeGNlcHRpb25JbmRpY2F0b3IocHJvcHMpKSB7CisgICAgICAgICAgICBpbnQgY2F0ID0gVUNoYXJhY3RlclByb3BlcnR5LlRZUEVfTUFTSyAmIHByb3BzOworICAgICAgICAgICAgaWYgKGNhdCA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuVVBQRVJDQVNFX0xFVFRFUiB8fCAKKyAgICAgICAgICAgICAgICBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5LlRJVExFQ0FTRV9MRVRURVIpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2ggKyBVQ2hhcmFjdGVyUHJvcGVydHkuZ2V0U2lnbmVkVmFsdWUocHJvcHMpOworICAgICAgICAgICAgfQorICAgICAgICB9IAorICAgICAgICBlbHNlIAorICAgICAgICB7CisgICAgICAgICAgICBpbnQgaW5kZXggPSBVQ2hhcmFjdGVyUHJvcGVydHkuZ2V0RXhjZXB0aW9uSW5kZXgocHJvcHMpOworICAgICAgICAgICAgaWYgKFBST1BFUlRZXy5oYXNFeGNlcHRpb25WYWx1ZShpbmRleCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyUHJvcGVydHkuRVhDX0xPV0VSQ0FTRV8pKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFBST1BFUlRZXy5nZXRFeGNlcHRpb24oaW5kZXgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyUHJvcGVydHkuRVhDX0xPV0VSQ0FTRV8pOyAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gY2g7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29udmVydHMgYXJndW1lbnQgY29kZSBwb2ludCBhbmQgcmV0dXJucyBhIFN0cmluZyBvYmplY3QgcmVwcmVzZW50aW5nIAorICAgICAqIHRoZSBjb2RlIHBvaW50J3MgdmFsdWUgaW4gVVRGMTYgZm9ybWF0LgorICAgICAqIFRoZSByZXN1bHQgaXMgYSBzdHJpbmcgd2hvc2UgbGVuZ3RoIGlzIDEgZm9yIG5vbi1zdXBwbGVtZW50YXJ5IGNvZGUgCisgICAgICogcG9pbnRzLCAyIG90aGVyd2lzZS48YnI+CisgICAgICogY29tLmlibS5pYm0uaWN1LlVURjE2IGNhbiBiZSB1c2VkIHRvIHBhcnNlIFN0cmluZ3MgZ2VuZXJhdGVkIGJ5IHRoaXMgCisgICAgICogZnVuY3Rpb24uPGJyPgorICAgICAqIFVwLXRvLWRhdGUgVW5pY29kZSBpbXBsZW1lbnRhdGlvbiBvZiBqYXZhLmxhbmcuQ2hhcmFjdGVyLnRvU3RyaW5nKCkKKyAgICAgKiBAcGFyYW0gY2ggY29kZSBwb2ludAorICAgICAqIEByZXR1cm4gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjb2RlIHBvaW50LCBudWxsIGlmIGNvZGUgcG9pbnQgaXMgbm90CisgICAgICogICAgICAgICBkZWZpbmVkIGluIHVuaWNvZGUKKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyB0b1N0cmluZyhpbnQgY2gpCisgICAgeworICAgICAgICBpZiAoY2ggPCBNSU5fVkFMVUUgfHwgY2ggPiBNQVhfVkFMVUUpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoY2ggPCBTVVBQTEVNRU5UQVJZX01JTl9WQUxVRSkgeworICAgICAgICAgICAgcmV0dXJuIFN0cmluZy52YWx1ZU9mKChjaGFyKWNoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgU3RyaW5nQnVmZmVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChVVEYxNi5nZXRMZWFkU3Vycm9nYXRlKGNoKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoVVRGMTYuZ2V0VHJhaWxTdXJyb2dhdGUoY2gpKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIC8qKgorICAgICAqIENvbnZlcnRzIHRoZSBjb2RlIHBvaW50IGFyZ3VtZW50IHRvIHRpdGxlY2FzZS4KKyAgICAgKiBVbmljb2RlRGF0YSBvbmx5IGNvbnRhaW5zIGNhc2UgbWFwcGluZ3MgZm9yIGNvZGUgcG9pbnRzIHdoZXJlIHRoZXkgYXJlIAorICAgICAqIG9uZS10by1vbmUgbWFwcGluZ3M7IGl0IGFsc28gb21pdHMgaW5mb3JtYXRpb24gYWJvdXQgY29udGV4dC1zZW5zaXRpdmUgCisgICAgICogY2FzZSBtYXBwaW5ncy48YnI+IAorICAgICAqIFRoZXJlIGFyZSBvbmx5IGZvdXIgVW5pY29kZSBjaGFyYWN0ZXJzIHRoYXQgYXJlIHRydWx5IHRpdGxlY2FzZSBmb3JtcworICAgICAqIHRoYXQgYXJlIGRpc3RpbmN0IGZyb20gdXBwZXJjYXNlIGZvcm1zLgorICAgICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IFVuaWNvZGUgY2FzZSBtYXBwaW5nIHBsZWFzZSByZWZlcgorICAgICAqIHRvIHRoZSA8YSBocmVmPWh0dHA6Ly93d3cudW5pY29kZS5vcmcvdW5pY29kZS9yZXBvcnRzL3RyMjEvPgorICAgICAqIFRlY2huaWNhbCByZXBvcnQgIzIxPC9hPi48YnI+CisgICAgICogSWYgbm8gdGl0bGVjYXNlIGlzIGF2YWlsYWJsZSwgdGhlIHVwcGVyY2FzZSBpcyByZXR1cm5lZC4gSWYgbm8gdXBwZXJjYXNlIAorICAgICAqIGlzIGF2YWlsYWJsZSwgdGhlIGNvZGUgcG9pbnQgaXRzZWxmIGlzIHJldHVybmVkLjxicj4KKyAgICAgKiBVcC10by1kYXRlIFVuaWNvZGUgaW1wbGVtZW50YXRpb24gb2YgamF2YS5sYW5nLkNoYXJhY3Rlci50b1RpdGxlQ2FzZSgpCisgICAgICogQHBhcmFtIGNoIGNvZGUgcG9pbnQgIHdob3NlIHRpdGxlIGNhc2UgaXMgdG8gYmUgcmV0cmlldmVkCisgICAgICogQHJldHVybiB0aXRsZWNhc2UgY29kZSBwb2ludAorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgaW50IHRvVGl0bGVDYXNlKGludCBjaCkKKyAgICB7CisgICAgICAgIC8vIHdoZW4gY2ggaXMgb3V0IG9mIGJvdW5kcyBnZXRQcm9wZXJ0eSA9PSAwCisgICAgICAgIGludCBwcm9wcyA9IFBST1BFUlRZXy5nZXRQcm9wZXJ0eShjaCk7CisgICAgICAgIC8vIGlmIHByb3BzID09IDAsIGl0IHdpbGwganVzdCBmYWxsIHRocm91Z2ggYW5kIHJldHVybiBpdHNlbGYKKyAgICAgICAgaWYgKGlzTm90RXhjZXB0aW9uSW5kaWNhdG9yKHByb3BzKSkgeworICAgICAgICAgICAgaWYgKChVQ2hhcmFjdGVyUHJvcGVydHkuVFlQRV9NQVNLICYgcHJvcHMpID09IAorICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXJDYXRlZ29yeS5MT1dFUkNBU0VfTEVUVEVSKSB7CisgICAgICAgICAgICAgICAgLy8gaGVyZSwgdGl0bGVjYXNlIGlzIHNhbWUgYXMgdXBwZXJjYXNlCisgICAgICAgICAgICAgICAgcmV0dXJuIGNoIC0gVUNoYXJhY3RlclByb3BlcnR5LmdldFNpZ25lZFZhbHVlKHByb3BzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSAKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpbnQgaW5kZXggPSBVQ2hhcmFjdGVyUHJvcGVydHkuZ2V0RXhjZXB0aW9uSW5kZXgocHJvcHMpOworICAgICAgICAgICAgaWYgKFBST1BFUlRZXy5oYXNFeGNlcHRpb25WYWx1ZShpbmRleCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXJQcm9wZXJ0eS5FWENfVElUTEVDQVNFXykpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gUFJPUEVSVFlfLmdldEV4Y2VwdGlvbihpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3RlclByb3BlcnR5LkVYQ19USVRMRUNBU0VfKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIC8vIGhlcmUsIHRpdGxlY2FzZSBpcyBzYW1lIGFzIHVwcGVyY2FzZQorICAgICAgICAgICAgICAgIGlmIChQUk9QRVJUWV8uaGFzRXhjZXB0aW9uVmFsdWUoaW5kZXgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3RlclByb3BlcnR5LkVYQ19VUFBFUkNBU0VfKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gUFJPUEVSVFlfLmdldEV4Y2VwdGlvbihpbmRleCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXJQcm9wZXJ0eS5FWENfVVBQRVJDQVNFXyk7IAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gY2g7IC8vIG5vIG1hcHBpbmcgLSByZXR1cm4gYyBpdHNlbGYKKyAgICB9CisgICAgICAgCisgICAgLyoqCisgICAgICogQ29udmVydHMgdGhlIGNoYXJhY3RlciBhcmd1bWVudCB0byB1cHBlcmNhc2UuCisgICAgICogVW5pY29kZURhdGEgb25seSBjb250YWlucyBjYXNlIG1hcHBpbmdzIGZvciBjaGFyYWN0ZXJzIHdoZXJlIHRoZXkgYXJlIAorICAgICAqIG9uZS10by1vbmUgbWFwcGluZ3M7IGl0IGFsc28gb21pdHMgaW5mb3JtYXRpb24gYWJvdXQgY29udGV4dC1zZW5zaXRpdmUgCisgICAgICogY2FzZSBtYXBwaW5ncy48YnI+IAorICAgICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IFVuaWNvZGUgY2FzZSBtYXBwaW5nIHBsZWFzZSByZWZlcgorICAgICAqIHRvIHRoZSA8YSBocmVmPWh0dHA6Ly93d3cudW5pY29kZS5vcmcvdW5pY29kZS9yZXBvcnRzL3RyMjEvPgorICAgICAqIFRlY2huaWNhbCByZXBvcnQgIzIxPC9hPi48YnI+CisgICAgICogSWYgbm8gdXBwZXJjYXNlIGlzIGF2YWlsYWJsZSwgdGhlIGNoYXJhY3RlciBpdHNlbGYgaXMgcmV0dXJuZWQuPGJyPgorICAgICAqIFVwLXRvLWRhdGUgVW5pY29kZSBpbXBsZW1lbnRhdGlvbiBvZiBqYXZhLmxhbmcuQ2hhcmFjdGVyLnRvVXBwZXJDYXNlKCkKKyAgICAgKiBAcGFyYW0gY2ggY29kZSBwb2ludCB3aG9zZSB1cHBlcmNhc2UgaXMgdG8gYmUgcmV0cmlldmVkCisgICAgICogQHJldHVybiB1cHBlcmNhc2UgY29kZSBwb2ludAorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgaW50IHRvVXBwZXJDYXNlKGludCBjaCkKKyAgICB7CisgICAgICAgIC8vIHdoZW4gY2ggaXMgb3V0IG9mIGJvdW5kcyBnZXRQcm9wZXJ0eSA9PSAwCisgICAgICAgIGludCBwcm9wcyA9IFBST1BFUlRZXy5nZXRQcm9wZXJ0eShjaCk7CisgICAgICAgIC8vIGlmIHByb3BzID09IDAsIGl0IHdpbGwganVzdCBmYWxsIHRocm91Z2ggYW5kIHJldHVybiBpdHNlbGYKKyAgICAgICAgaWYgKGlzTm90RXhjZXB0aW9uSW5kaWNhdG9yKHByb3BzKSkgeworICAgICAgICAgICAgaWYgKChVQ2hhcmFjdGVyUHJvcGVydHkuVFlQRV9NQVNLICYgcHJvcHMpID09IAorICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXJDYXRlZ29yeS5MT1dFUkNBU0VfTEVUVEVSKSB7CisgICAgICAgICAgICAgICAgLy8gaGVyZSwgdGl0bGVjYXNlIGlzIHNhbWUgYXMgdXBwZXJjYXNlICovCisgICAgICAgICAgICAgICAgcmV0dXJuIGNoIC0gVUNoYXJhY3RlclByb3BlcnR5LmdldFNpZ25lZFZhbHVlKHByb3BzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIAorICAgICAgICB7CisgICAgICAgICAgICBpbnQgaW5kZXggPSBVQ2hhcmFjdGVyUHJvcGVydHkuZ2V0RXhjZXB0aW9uSW5kZXgocHJvcHMpOworICAgICAgICAgICAgaWYgKFBST1BFUlRZXy5oYXNFeGNlcHRpb25WYWx1ZShpbmRleCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXJQcm9wZXJ0eS5FWENfVVBQRVJDQVNFXykpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gUFJPUEVSVFlfLmdldEV4Y2VwdGlvbihpbmRleCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXJQcm9wZXJ0eS5FWENfVVBQRVJDQVNFXyk7IAorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBjaDsgLy8gbm8gbWFwcGluZyAtIHJldHVybiBjIGl0c2VsZgorICAgIH0KKyAgICAgICAKKyAgICAvLyBleHRyYSBtZXRob2RzIG5vdCBpbiBqYXZhLmxhbmcuQ2hhcmFjdGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgCisgICAgLyoqCisgICAgICogRGV0ZXJtaW5lcyBpZiB0aGUgY29kZSBwb2ludCBpcyBhIHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVyLgorICAgICAqIEEgY29kZSBwb2ludCBpcyBhIHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVyIGlmIGFuZCBvbmx5IGlmIGl0IGlzIGdyZWF0ZXIgCisgICAgICogdGhhbiA8YSBocmVmPSNTVVBQTEVNRU5UQVJZX01JTl9WQUxVRT5TVVBQTEVNRU5UQVJZX01JTl9WQUxVRTwvYT4KKyAgICAgKiBAcGFyYW0gY2ggY29kZSBwb2ludCB0byBiZSBkZXRlcm1pbmVkIGlmIGl0IGlzIGluIHRoZSBzdXBwbGVtZW50YXJ5IAorICAgICAqICAgICAgICBwbGFuZQorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiBjb2RlIHBvaW50IGlzIGEgc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXIKKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNTdXBwbGVtZW50YXJ5KGludCBjaCkKKyAgICB7CisgICAgICAgIHJldHVybiBjaCA+PSBVQ2hhcmFjdGVyLlNVUFBMRU1FTlRBUllfTUlOX1ZBTFVFICYmIAorICAgICAgICAgICAgY2ggPD0gVUNoYXJhY3Rlci5NQVhfVkFMVUU7CisgICAgfQorICAgICAgCisgICAgLyoqCisgICAgICogRGV0ZXJtaW5lcyBpZiB0aGUgY29kZSBwb2ludCBpcyBpbiB0aGUgQk1QIHBsYW5lLgorICAgICAqIEBwYXJhbSBjaCBjb2RlIHBvaW50IHRvIGJlIGRldGVybWluZWQgaWYgaXQgaXMgbm90IGEgc3VwcGxlbWVudGFyeSAKKyAgICAgKiAgICAgICAgY2hhcmFjdGVyCisgICAgICogQHJldHVybiB0cnVlIGlmIGNvZGUgcG9pbnQgaXMgbm90IGEgc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXIKKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNCTVAoaW50IGNoKSAKKyAgICB7CisgICAgICAgIHJldHVybiAoY2ggPj0gMCAmJiBjaCA8PSBMQVNUX0NIQVJfTUFTS18pOworICAgIH0KKworICAgIC8qKgorICAgICAqIERldGVybWluZXMgd2hldGhlciB0aGUgc3BlY2lmaWVkIGNvZGUgcG9pbnQgaXMgYSBwcmludGFibGUgY2hhcmFjdGVyIAorICAgICAqIGFjY29yZGluZyB0byB0aGUgVW5pY29kZSBzdGFuZGFyZC4KKyAgICAgKiBAcGFyYW0gY2ggY29kZSBwb2ludCB0byBiZSBkZXRlcm1pbmVkIGlmIGl0IGlzIHByaW50YWJsZQorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgY29kZSBwb2ludCBpcyBhIHByaW50YWJsZSBjaGFyYWN0ZXIKKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNQcmludGFibGUoaW50IGNoKQorICAgIHsKKyAgICAgICAgaW50IGNhdCA9IGdldFR5cGUoY2gpOworICAgICAgICAvLyBpZiBwcm9wcyA9PSAwLCBpdCB3aWxsIGp1c3QgZmFsbCB0aHJvdWdoIGFuZCByZXR1cm4gZmFsc2UKKyAgICAgICAgcmV0dXJuIChjYXQgIT0gVUNoYXJhY3RlckNhdGVnb3J5LlVOQVNTSUdORUQgJiYgCisgICAgICAgICAgICBjYXQgIT0gVUNoYXJhY3RlckNhdGVnb3J5LkNPTlRST0wgJiYgCisgICAgICAgICAgICBjYXQgIT0gVUNoYXJhY3RlckNhdGVnb3J5LkZPUk1BVCAmJgorICAgICAgICAgICAgY2F0ICE9IFVDaGFyYWN0ZXJDYXRlZ29yeS5QUklWQVRFX1VTRSAmJgorICAgICAgICAgICAgY2F0ICE9IFVDaGFyYWN0ZXJDYXRlZ29yeS5TVVJST0dBVEUgJiYKKyAgICAgICAgICAgIGNhdCAhPSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuR0VORVJBTF9PVEhFUl9UWVBFUyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgY29kZSBwb2ludCBpcyBvZiBiYXNlIGZvcm0uCisgICAgICogQSBjb2RlIHBvaW50IG9mIGJhc2UgZm9ybSBkb2VzIG5vdCBncmFwaGljYWxseSBjb21iaW5lIHdpdGggcHJlY2VkaW5nIAorICAgICAqIGNoYXJhY3RlcnMsIGFuZCBpcyBuZWl0aGVyIGEgY29udHJvbCBub3IgYSBmb3JtYXQgY2hhcmFjdGVyLgorICAgICAqIEBwYXJhbSBjaCBjb2RlIHBvaW50IHRvIGJlIGRldGVybWluZWQgaWYgaXQgaXMgb2YgYmFzZSBmb3JtCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSBjb2RlIHBvaW50IGlzIG9mIGJhc2UgZm9ybQorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0Jhc2VGb3JtKGludCBjaCkKKyAgICB7CisgICAgICAgIGludCBjYXQgPSBnZXRUeXBlKGNoKTsKKyAgICAgICAgLy8gaWYgcHJvcHMgPT0gMCwgaXQgd2lsbCBqdXN0IGZhbGwgdGhyb3VnaCBhbmQgcmV0dXJuIGZhbHNlCisgICAgICAgIHJldHVybiBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5LkRFQ0lNQUxfRElHSVRfTlVNQkVSIHx8IAorICAgICAgICAgICAgY2F0ID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5PVEhFUl9OVU1CRVIgfHwgCisgICAgICAgICAgICBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5LkxFVFRFUl9OVU1CRVIgfHwgCisgICAgICAgICAgICBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5LlVQUEVSQ0FTRV9MRVRURVIgfHwgCisgICAgICAgICAgICBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5LkxPV0VSQ0FTRV9MRVRURVIgfHwgCisgICAgICAgICAgICBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5LlRJVExFQ0FTRV9MRVRURVIgfHwKKyAgICAgICAgICAgIGNhdCA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuTU9ESUZJRVJfTEVUVEVSIHx8IAorICAgICAgICAgICAgY2F0ID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5PVEhFUl9MRVRURVIgfHwgCisgICAgICAgICAgICBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5Lk5PTl9TUEFDSU5HX01BUksgfHwgCisgICAgICAgICAgICBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5LkVOQ0xPU0lOR19NQVJLIHx8CisgICAgICAgICAgICBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5LkNPTUJJTklOR19TUEFDSU5HX01BUks7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgQmlkaXJlY3Rpb24gcHJvcGVydHkgb2YgYSBjb2RlIHBvaW50LgorICAgICAqIEZvciBleGFtcGxlLCAweDAwNDEgKGxldHRlciBBKSBoYXMgdGhlIExFRlRfVE9fUklHSFQgZGlyZWN0aW9uYWwgCisgICAgICogcHJvcGVydHkuPGJyPgorICAgICAqIFJlc3VsdCByZXR1cm5lZCBiZWxvbmdzIHRvIHRoZSBpbnRlcmZhY2UgCisgICAgICogPGEgaHJlZj1VQ2hhcmFjdGVyRGlyZWN0aW9uLmh0bWw+VUNoYXJhY3RlckRpcmVjdGlvbjwvYT4KKyAgICAgKiBAcGFyYW0gY2ggdGhlIGNvZGUgcG9pbnQgdG8gYmUgZGV0ZXJtaW5lZCBpdHMgZGlyZWN0aW9uCisgICAgICogQHJldHVybiBkaXJlY3Rpb24gY29uc3RhbnQgZnJvbSBVQ2hhcmFjdGVyRGlyZWN0aW9uLgorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgaW50IGdldERpcmVjdGlvbihpbnQgY2gpCisgICAgeworICAgICAgICAvLyB3aGVuIGNoIGlzIG91dCBvZiBib3VuZHMgZ2V0UHJvcGVydHkgPT0gMAorICAgICAgICByZXR1cm4gKFBST1BFUlRZXy5nZXRQcm9wZXJ0eShjaCkgPj4gQklESV9TSElGVF8pIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIEJJRElfTUFTS19BRlRFUl9TSElGVF87CisgICAgfQorCisgICAgLyoqCisgICAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBjb2RlIHBvaW50IGhhcyB0aGUgIm1pcnJvcmVkIiBwcm9wZXJ0eS4KKyAgICAgKiBUaGlzIHByb3BlcnR5IGlzIHNldCBmb3IgY2hhcmFjdGVycyB0aGF0IGFyZSBjb21tb25seSB1c2VkIGluCisgICAgICogUmlnaHQtVG8tTGVmdCBjb250ZXh0cyBhbmQgbmVlZCB0byBiZSBkaXNwbGF5ZWQgd2l0aCBhICJtaXJyb3JlZCIKKyAgICAgKiBnbHlwaC4KKyAgICAgKiBAcGFyYW0gY2ggY29kZSBwb2ludCB3aG9zZSBtaXJyb3IgaXMgdG8gYmUgZGV0ZXJtaW5lZAorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgY29kZSBwb2ludCBoYXMgdGhlICJtaXJyb3JlZCIgcHJvcGVydHkKKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNNaXJyb3JlZChpbnQgY2gpCisgICAgeworICAgICAgICAvLyB3aGVuIGNoIGlzIG91dCBvZiBib3VuZHMgZ2V0UHJvcGVydHkgPT0gMAorICAgICAgICByZXR1cm4gKFBST1BFUlRZXy5nZXRQcm9wZXJ0eShjaCkgJiBVQ2hhcmFjdGVyUHJvcGVydHkuTUlSUk9SX01BU0spIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE9IDA7CisgICAgfQorCisgICAgLyoqCisgICAgICogTWFwcyB0aGUgc3BlY2lmaWVkIGNvZGUgcG9pbnQgdG8gYSAibWlycm9yLWltYWdlIiBjb2RlIHBvaW50LgorICAgICAqIEZvciBjb2RlIHBvaW50cyB3aXRoIHRoZSAibWlycm9yZWQiIHByb3BlcnR5LCBpbXBsZW1lbnRhdGlvbnMgc29tZXRpbWVzIAorICAgICAqIG5lZWQgYSAicG9vciBtYW4ncyIgbWFwcGluZyB0byBhbm90aGVyIGNvZGUgcG9pbnQgc3VjaCB0aGF0IHRoZSBkZWZhdWx0IAorICAgICAqIGdseXBoIG1heSBzZXJ2ZSBhcyB0aGUgbWlycm9yLWltYWdlIG9mIHRoZSBkZWZhdWx0IGdseXBoIG9mIHRoZSAKKyAgICAgKiBzcGVjaWZpZWQgY29kZSBwb2ludC48YnI+IAorICAgICAqIFRoaXMgaXMgdXNlZnVsIGZvciB0ZXh0IGNvbnZlcnNpb24gdG8gYW5kIGZyb20gY29kZXBhZ2VzIHdpdGggdmlzdWFsIAorICAgICAqIG9yZGVyLCBhbmQgZm9yIGRpc3BsYXlzIHdpdGhvdXQgZ2x5cGggc2VsZWN0aW9uIGNhcGFiaWxpdGllcy4KKyAgICAgKiBAcGFyYW0gY2ggY29kZSBwb2ludCB3aG9zZSBtaXJyb3IgaXMgdG8gYmUgcmV0cmlldmVkCisgICAgICogQHJldHVybiBhbm90aGVyIGNvZGUgcG9pbnQgdGhhdCBtYXkgc2VydmUgYXMgYSBtaXJyb3ItaW1hZ2Ugc3Vic3RpdHV0ZSwgCisgICAgICogICAgICAgICBvciBjaCBpdHNlbGYgaWYgdGhlcmUgaXMgbm8gc3VjaCBtYXBwaW5nIG9yIGNoIGRvZXMgbm90IGhhdmUgdGhlIAorICAgICAqICAgICAgICAgIm1pcnJvcmVkIiBwcm9wZXJ0eQorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgaW50IGdldE1pcnJvcihpbnQgY2gpCisgICAgeworICAgICAgICAvLyB3aGVuIGNoIGlzIG91dCBvZiBib3VuZHMgZ2V0UHJvcGVydHkgPT0gMAorICAgICAgICBpbnQgcHJvcHMgPSBQUk9QRVJUWV8uZ2V0UHJvcGVydHkoY2gpOworICAgICAgICAvLyBtaXJyb3JlZCAtIHRoZSB2YWx1ZSBpcyBhIG1pcnJvciBvZmZzZXQKKyAgICAgICAgLy8gaWYgcHJvcHMgPT0gMCwgaXQgd2lsbCBqdXN0IGZhbGwgdGhyb3VnaCBhbmQgcmV0dXJuIGZhbHNlCisgICAgICAgIGlmICgocHJvcHMgJiBVQ2hhcmFjdGVyUHJvcGVydHkuTUlSUk9SX01BU0spICE9IDApIHsKKyAgICAgICAgICAgIGlmKGlzTm90RXhjZXB0aW9uSW5kaWNhdG9yKHByb3BzKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBjaCArIFVDaGFyYWN0ZXJQcm9wZXJ0eS5nZXRTaWduZWRWYWx1ZShwcm9wcyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGludCBpbmRleCA9IFVDaGFyYWN0ZXJQcm9wZXJ0eS5nZXRFeGNlcHRpb25JbmRleChwcm9wcyk7CisgICAgICAgICAgICAgICAgaWYgKFBST1BFUlRZXy5oYXNFeGNlcHRpb25WYWx1ZShpbmRleCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyUHJvcGVydHkuRVhDX01JUlJPUl9NQVBQSU5HXykpIAorICAgICAgICAgICAgICAgIHJldHVybiBQUk9QRVJUWV8uZ2V0RXhjZXB0aW9uKGluZGV4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyUHJvcGVydHkuRVhDX01JUlJPUl9NQVBQSU5HXyk7ICAgCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGNoOworICAgIH0KKyAgICAgIAorICAgIC8qKgorICAgICAqIEdldHMgdGhlIGNvbWJpbmluZyBjbGFzcyBvZiB0aGUgYXJndW1lbnQgY29kZXBvaW50CisgICAgICogQHBhcmFtIGNoIGNvZGUgcG9pbnQgd2hvc2UgY29tYmluaW5nIGlzIHRvIGJlIHJldHJpZXZlZAorICAgICAqIEByZXR1cm4gdGhlIGNvbWJpbmluZyBjbGFzcyBvZiB0aGUgY29kZXBvaW50CisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnQgZ2V0Q29tYmluaW5nQ2xhc3MoaW50IGNoKQorICAgIHsKKyAgICAJaWYgKGNoIDwgTUlOX1ZBTFVFIHx8IGNoID4gTUFYX1ZBTFVFKSB7CisgICAgCQl0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJDb2RlcG9pbnQgb3V0IG9mIGJvdW5kcyIpOworICAgIAl9CisgICAgCXJldHVybiBOb3JtYWxpemVySW1wbC5nZXRDb21iaW5pbmdDbGFzcyhjaCk7CisgICAgfQorICAgICAgCisgICAgLyoqCisgICAgICogQSBjb2RlIHBvaW50IGlzIGlsbGVnYWwgaWYgYW5kIG9ubHkgaWYKKyAgICAgKiA8dWw+CisgICAgICogPGxpPiBPdXQgb2YgYm91bmRzLCBsZXNzIHRoYW4gMCBvciBncmVhdGVyIHRoYW4gVUNoYXJhY3Rlci5NQVhfVkFMVUUKKyAgICAgKiA8bGk+IEEgc3Vycm9nYXRlIHZhbHVlLCAweEQ4MDAgdG8gMHhERkZGCisgICAgICogPGxpPiBOb3QtYS1jaGFyYWN0ZXIsIGhhdmluZyB0aGUgZm9ybSAweCB4eEZGRkYgb3IgMHggeHhGRkZFCisgICAgICogPC91bD4KKyAgICAgKiBOb3RlOiBsZWdhbCBkb2VzIG5vdCBtZWFuIHRoYXQgaXQgaXMgYXNzaWduZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIFVuaWNvZGUuCisgICAgICogQHBhcmFtIGNoIGNvZGUgcG9pbnQgdG8gZGV0ZXJtaW5lIGlmIGl0IGlzIGEgbGVnYWwgY29kZSBwb2ludCBieSBpdHNlbGYKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgYW5kIG9ubHkgaWYgbGVnYWwuIAorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0xlZ2FsKGludCBjaCkgCisgICAgeworICAgICAgICBpZiAoY2ggPCBNSU5fVkFMVUUpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY2ggPCBVVEYxNi5TVVJST0dBVEVfTUlOX1ZBTFVFKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY2ggPD0gVVRGMTYuU1VSUk9HQVRFX01BWF9WQUxVRSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGlmIChVQ2hhcmFjdGVyVXRpbGl0eS5pc05vbkNoYXJhY3RlcihjaCkpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKGNoIDw9IE1BWF9WQUxVRSk7CisgICAgfQorICAgICAgCisgICAgLyoqCisgICAgICogQSBzdHJpbmcgaXMgbGVnYWwgaWZmIGFsbCBpdHMgY29kZSBwb2ludHMgYXJlIGxlZ2FsLgorICAgICAqIEEgY29kZSBwb2ludCBpcyBpbGxlZ2FsIGlmIGFuZCBvbmx5IGlmCisgICAgICogPHVsPgorICAgICAqIDxsaT4gT3V0IG9mIGJvdW5kcywgbGVzcyB0aGFuIDAgb3IgZ3JlYXRlciB0aGFuIFVDaGFyYWN0ZXIuTUFYX1ZBTFVFCisgICAgICogPGxpPiBBIHN1cnJvZ2F0ZSB2YWx1ZSwgMHhEODAwIHRvIDB4REZGRgorICAgICAqIDxsaT4gTm90LWEtY2hhcmFjdGVyLCBoYXZpbmcgdGhlIGZvcm0gMHggeHhGRkZGIG9yIDB4IHh4RkZGRQorICAgICAqIDwvdWw+CisgICAgICogTm90ZTogbGVnYWwgZG9lcyBub3QgbWVhbiB0aGF0IGl0IGlzIGFzc2lnbmVkIGluIHRoaXMgdmVyc2lvbiBvZiBVbmljb2RlLgorICAgICAqIEBwYXJhbSBjaCBjb2RlIHBvaW50IHRvIGRldGVybWluZSBpZiBpdCBpcyBhIGxlZ2FsIGNvZGUgcG9pbnQgYnkgaXRzZWxmCisgICAgICogQHJldHVybiB0cnVlIGlmIGFuZCBvbmx5IGlmIGxlZ2FsLiAKKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNMZWdhbChTdHJpbmcgc3RyKSAKKyAgICB7CisgICAgICAgIGludCBzaXplID0gc3RyLmxlbmd0aCgpOworICAgICAgICBpbnQgY29kZXBvaW50OworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkgKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvZGVwb2ludCA9IFVURjE2LmNoYXJBdChzdHIsIGkpOworICAgICAgICAgICAgaWYgKCFpc0xlZ2FsKGNvZGVwb2ludCkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaXNTdXBwbGVtZW50YXJ5KGNvZGVwb2ludCkpIHsKKyAgICAgICAgICAgICAgICBpICsrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIHZlcnNpb24gb2YgVW5pY29kZSBkYXRhIHVzZWQuIAorICAgICAqIEByZXR1cm4gdGhlIHVuaWNvZGUgdmVyc2lvbiBudW1iZXIgdXNlZAorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgVmVyc2lvbkluZm8gZ2V0VW5pY29kZVZlcnNpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFBST1BFUlRZXy5tX3VuaWNvZGVWZXJzaW9uXzsKKyAgICB9CisgICAgICAKKyAgICAvKioKKyAgICAgKiBSZXRyaWV2ZSB0aGUgbW9zdCBjdXJyZW50IFVuaWNvZGUgbmFtZSBvZiB0aGUgYXJndW1lbnQgY29kZSBwb2ludCwgb3IgCisgICAgICogbnVsbCBpZiB0aGUgY2hhcmFjdGVyIGlzIHVuYXNzaWduZWQgb3Igb3V0c2lkZSB0aGUgcmFuZ2UgCisgICAgICogVUNoYXJhY3Rlci5NSU5fVkFMVUUgYW5kIFVDaGFyYWN0ZXIuTUFYX1ZBTFVFIG9yIGRvZXMgbm90IGhhdmUgYSBuYW1lLgorICAgICAqIDxicj4KKyAgICAgKiBOb3RlIGNhbGxpbmcgYW55IG1ldGhvZHMgcmVsYXRlZCB0byBjb2RlIHBvaW50IG5hbWVzLCBlLmcuIGdldCpOYW1lKigpIAorICAgICAqIGluY3VycyBhIG9uZS10aW1lIGluaXRpYWxpc2F0aW9uIGNvc3QgdG8gY29uc3RydWN0IHRoZSBuYW1lIHRhYmxlcy4KKyAgICAgKiBAcGFyYW0gY2ggdGhlIGNvZGUgcG9pbnQgZm9yIHdoaWNoIHRvIGdldCB0aGUgbmFtZQorICAgICAqIEByZXR1cm4gbW9zdCBjdXJyZW50IFVuaWNvZGUgbmFtZQorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldE5hbWUoaW50IGNoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE5BTUVfLmdldE5hbWUoY2gsIFVDaGFyYWN0ZXJOYW1lQ2hvaWNlLlVOSUNPREVfQ0hBUl9OQU1FKTsKKyAgICB9CisgICAgICAKKyAgICAvKioKKyAgICAgKiBSZXRyaWV2ZSB0aGUgZWFybGllciB2ZXJzaW9uIDEuMCBVbmljb2RlIG5hbWUgb2YgdGhlIGFyZ3VtZW50IGNvZGUgCisgICAgICogcG9pbnQsIG9yIG51bGwgaWYgdGhlIGNoYXJhY3RlciBpcyB1bmFzc2lnbmVkIG9yIG91dHNpZGUgdGhlIHJhbmdlIAorICAgICAqIFVDaGFyYWN0ZXIuTUlOX1ZBTFVFIGFuZCBVQ2hhcmFjdGVyLk1BWF9WQUxVRSBvciBkb2VzIG5vdCBoYXZlIGEgbmFtZS4KKyAgICAgKiA8YnI+CisgICAgICogTm90ZSBjYWxsaW5nIGFueSBtZXRob2RzIHJlbGF0ZWQgdG8gY29kZSBwb2ludCBuYW1lcywgZS5nLiBnZXQqTmFtZSooKSAKKyAgICAgKiBpbmN1cnMgYSBvbmUtdGltZSBpbml0aWFsaXNhdGlvbiBjb3N0IHRvIGNvbnN0cnVjdCB0aGUgbmFtZSB0YWJsZXMuCisgICAgICogQHBhcmFtIGNoIHRoZSBjb2RlIHBvaW50IGZvciB3aGljaCB0byBnZXQgdGhlIG5hbWUKKyAgICAgKiBAcmV0dXJuIHZlcnNpb24gMS4wIFVuaWNvZGUgbmFtZQorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldE5hbWUxXzAoaW50IGNoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE5BTUVfLmdldE5hbWUoY2gsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyTmFtZUNob2ljZS5VTklDT0RFXzEwX0NIQVJfTkFNRSk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIDxwPlJldHJpZXZlcyBhIG5hbWUgZm9yIGEgdmFsaWQgY29kZXBvaW50LiBVbmxpa2UsIGdldE5hbWUoaW50KSBhbmQKKyAgICAgKiBnZXROYW1lMV8wKGludCksIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIGEgbmFtZSBldmVuIGZvciBjb2RlcG9pbnRzIHRoYXQKKyAgICAgKiBhcmUgbm90IGFzc2lnbmVkIGEgbmFtZSBpbiBVbmljb2RlRGF0YS50eHQuCisgICAgICogPC9wPgorICAgICAqIFRoZSBuYW1lcyBhcmUgcmV0dXJuZWQgaW4gdGhlIGZvbGxvd2luZyBvcmRlci4KKyAgICAgKiA8dWw+CisgICAgICogPGxpPiBNb3N0IGN1cnJlbnQgVW5pY29kZSBuYW1lIGlmIHRoZXJlIGlzIGFueQorICAgICAqIDxsaT4gVW5pY29kZSAxLjAgbmFtZSBpZiB0aGVyZSBpcyBhbnkKKyAgICAgKiA8bGk+IEV4dGVuZGVkIG5hbWUgaW4gdGhlIGZvcm0gb2YgCisgICAgICogICAgICAiPGNvZGVwb2ludF90eXBlLWNvZGVwb2ludF9oZXhfZGlnaXRzPiIuIEUuZy4gPG5vbmNoYXJhY3Rlci1mZmZlPgorICAgICAqIDwvdWw+CisgICAgICogTm90ZSBjYWxsaW5nIGFueSBtZXRob2RzIHJlbGF0ZWQgdG8gY29kZSBwb2ludCBuYW1lcywgZS5nLiBnZXQqTmFtZSooKSAKKyAgICAgKiBpbmN1cnMgYSBvbmUtdGltZSBpbml0aWFsaXNhdGlvbiBjb3N0IHRvIGNvbnN0cnVjdCB0aGUgbmFtZSB0YWJsZXMuCisgICAgICogQHBhcmFtIGNoIHRoZSBjb2RlIHBvaW50IGZvciB3aGljaCB0byBnZXQgdGhlIG5hbWUKKyAgICAgKiBAcmV0dXJuIGEgbmFtZSBmb3IgdGhlIGFyZ3VtZW50IGNvZGVwb2ludAorICAgICAqIEBkcmFmdCBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0RXh0ZW5kZWROYW1lKGludCBjaCkgCisgICAgeworICAgICAgICByZXR1cm4gTkFNRV8uZ2V0TmFtZShjaCwgVUNoYXJhY3Rlck5hbWVDaG9pY2UuRVhURU5ERURfQ0hBUl9OQU1FKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogR2V0IHRoZSBJU08gMTA2NDYgY29tbWVudCBmb3IgYSBjaGFyYWN0ZXIuCisgICAgICogVGhlIElTTyAxMDY0NiBjb21tZW50IGlzIGFuIGluZm9ybWF0aXZlIGZpZWxkIGluIHRoZSBVbmljb2RlIENoYXJhY3RlcgorICAgICAqIERhdGFiYXNlIChVbmljb2RlRGF0YS50eHQgZmllbGQgMTEpIGFuZCBpcyBmcm9tIHRoZSBJU08gMTA2NDYgbmFtZXMgbGlzdC4KKyAgICAgKiBAcGFyYW0gY2ggVGhlIGNvZGUgcG9pbnQgZm9yIHdoaWNoIHRvIGdldCB0aGUgSVNPIGNvbW1lbnQuCisgICAgICogICAgICAgICAgIEl0IG11c3QgYmUgPGNvZGU+MDw9Yzw9MHgxMGZmZmY8L2NvZGU+LgorICAgICAqIEByZXR1cm4gVGhlIElTTyBjb21tZW50LCBvciBudWxsIGlmIHRoZXJlIGlzIG5vIGNvbW1lbnQgZm9yIHRoaXMgCisgICAgICogICAgICAgICBjaGFyYWN0ZXIuCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRJU09Db21tZW50KGludCBjaCkKKyAgICB7CisgICAgICAgIGlmIChjaCA8IFVDaGFyYWN0ZXIuTUlOX1ZBTFVFIHx8IGNoID4gVUNoYXJhY3Rlci5NQVhfVkFMVUUpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBTdHJpbmcgcmVzdWx0ID0gTkFNRV8uZ2V0R3JvdXBOYW1lKGNoLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyTmFtZUNob2ljZS5JU09fQ09NTUVOVF8pOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAgIAorICAgIC8qKgorICAgICAqIDxwPkZpbmQgYSBVbmljb2RlIGNvZGUgcG9pbnQgYnkgaXRzIG1vc3QgY3VycmVudCBVbmljb2RlIG5hbWUgYW5kIAorICAgICAqIHJldHVybiBpdHMgY29kZSBwb2ludCB2YWx1ZS4gQWxsIFVuaWNvZGUgbmFtZXMgYXJlIGluIHVwcGVyY2FzZS48L3A+CisgICAgICogTm90ZSBjYWxsaW5nIGFueSBtZXRob2RzIHJlbGF0ZWQgdG8gY29kZSBwb2ludCBuYW1lcywgZS5nLiBnZXQqTmFtZSooKSAKKyAgICAgKiBpbmN1cnMgYSBvbmUtdGltZSBpbml0aWFsaXNhdGlvbiBjb3N0IHRvIGNvbnN0cnVjdCB0aGUgbmFtZSB0YWJsZXMuCisgICAgICogQHBhcmFtIG5hbWUgbW9zdCBjdXJyZW50IFVuaWNvZGUgY2hhcmFjdGVyIG5hbWUgd2hvc2UgY29kZSBwb2ludCBpcyB0byAKKyAgICAgKiAgICAgICAgYmUgcmV0dXJuZWQKKyAgICAgKiBAcmV0dXJuIGNvZGUgcG9pbnQgb3IgLTEgaWYgbmFtZSBpcyBub3QgZm91bmQKKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludCBnZXRDaGFyRnJvbU5hbWUoU3RyaW5nIG5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gTkFNRV8uZ2V0Q2hhckZyb21OYW1lKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXJOYW1lQ2hvaWNlLlVOSUNPREVfQ0hBUl9OQU1FLCBuYW1lKTsKKyAgICB9CisgICAgICAKKyAgICAvKioKKyAgICAgKiA8cD5GaW5kIGEgVW5pY29kZSBjaGFyYWN0ZXIgYnkgaXRzIHZlcnNpb24gMS4wIFVuaWNvZGUgbmFtZSBhbmQgcmV0dXJuIAorICAgICAqIGl0cyBjb2RlIHBvaW50IHZhbHVlLiBBbGwgVW5pY29kZSBuYW1lcyBhcmUgaW4gdXBwZXJjYXNlLjwvcD4KKyAgICAgKiBOb3RlIGNhbGxpbmcgYW55IG1ldGhvZHMgcmVsYXRlZCB0byBjb2RlIHBvaW50IG5hbWVzLCBlLmcuIGdldCpOYW1lKigpIAorICAgICAqIGluY3VycyBhIG9uZS10aW1lIGluaXRpYWxpc2F0aW9uIGNvc3QgdG8gY29uc3RydWN0IHRoZSBuYW1lIHRhYmxlcy4KKyAgICAgKiBAcGFyYW0gbmFtZSBVbmljb2RlIDEuMCBjb2RlIHBvaW50IG5hbWUgd2hvc2UgY29kZSBwb2ludCBpcyB0byAKKyAgICAgKiAgICAgICAgICAgICByZXR1cm5lZAorICAgICAqIEByZXR1cm4gY29kZSBwb2ludCBvciAtMSBpZiBuYW1lIGlzIG5vdCBmb3VuZAorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgaW50IGdldENoYXJGcm9tTmFtZTFfMChTdHJpbmcgbmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBOQU1FXy5nZXRDaGFyRnJvbU5hbWUoCisgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3Rlck5hbWVDaG9pY2UuVU5JQ09ERV8xMF9DSEFSX05BTUUsIG5hbWUpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiA8cD5GaW5kIGEgVW5pY29kZSBjaGFyYWN0ZXIgYnkgZWl0aGVyIGl0cyBuYW1lIGFuZCByZXR1cm4gaXRzIGNvZGUgCisgICAgICogcG9pbnQgdmFsdWUuIEFsbCBVbmljb2RlIG5hbWVzIGFyZSBpbiB1cHBlcmNhc2UuIAorICAgICAqIEV4dGVuZGVkIG5hbWVzIGFyZSBhbGwgbG93ZXJjYXNlIGV4Y2VwdCBmb3IgbnVtYmVycyBhbmQgYXJlIGNvbnRhaW5lZAorICAgICAqIHdpdGhpbiBhbmdsZSBicmFja2V0cy48L3A+CisgICAgICogVGhlIG5hbWVzIGFyZSBzZWFyY2hlZCBpbiB0aGUgZm9sbG93aW5nIG9yZGVyCisgICAgICogPHVsPgorICAgICAqIDxsaT4gTW9zdCBjdXJyZW50IFVuaWNvZGUgbmFtZSBpZiB0aGVyZSBpcyBhbnkKKyAgICAgKiA8bGk+IFVuaWNvZGUgMS4wIG5hbWUgaWYgdGhlcmUgaXMgYW55CisgICAgICogPGxpPiBFeHRlbmRlZCBuYW1lIGluIHRoZSBmb3JtIG9mIAorICAgICAqICAgICAgIjxjb2RlcG9pbnRfdHlwZS1jb2RlcG9pbnRfaGV4X2RpZ2l0cz4iLiBFLmcuIDxub25jaGFyYWN0ZXItRkZGRT4KKyAgICAgKiA8L3VsPgorICAgICAqIE5vdGUgY2FsbGluZyBhbnkgbWV0aG9kcyByZWxhdGVkIHRvIGNvZGUgcG9pbnQgbmFtZXMsIGUuZy4gZ2V0Kk5hbWUqKCkgCisgICAgICogaW5jdXJzIGEgb25lLXRpbWUgaW5pdGlhbGlzYXRpb24gY29zdCB0byBjb25zdHJ1Y3QgdGhlIG5hbWUgdGFibGVzLgorICAgICAqIEBwYXJhbSBuYW1lIGNvZGVwb2ludCBuYW1lCisgICAgICogQHJldHVybiBjb2RlIHBvaW50IGFzc29jaWF0ZWQgd2l0aCB0aGUgbmFtZSBvciAtMSBpZiB0aGUgbmFtZSBpcyBub3QKKyAgICAgKiAgICAgICAgIGZvdW5kLgorICAgICAqIEBkcmFmdCBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnQgZ2V0Q2hhckZyb21FeHRlbmRlZE5hbWUoU3RyaW5nIG5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gTkFNRV8uZ2V0Q2hhckZyb21OYW1lKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXJOYW1lQ2hvaWNlLkVYVEVOREVEX0NIQVJfTkFNRSwgbmFtZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBVbmljb2RlIG5hbWUgZm9yIGEgZ2l2ZW4gcHJvcGVydHksIGFzIGdpdmVuIGluIHRoZQorICAgICAqIFVuaWNvZGUgZGF0YWJhc2UgZmlsZSBQcm9wZXJ0eUFsaWFzZXMudHh0LiAgTW9zdCBwcm9wZXJ0aWVzCisgICAgICogaGF2ZSBtb3JlIHRoYW4gb25lIG5hbWUuICBUaGUgbmFtZUNob2ljZSBkZXRlcm1pbmVzIHdoaWNoIG9uZQorICAgICAqIGlzIHJldHVybmVkLgorICAgICAqCisgICAgICogSW4gYWRkaXRpb24sIHRoaXMgZnVuY3Rpb24gbWFwcyB0aGUgcHJvcGVydHkKKyAgICAgKiBVUHJvcGVydHkuR0VORVJBTF9DQVRFR09SWV9NQVNLIHRvIHRoZSBzeW50aGV0aWMgbmFtZXMgImdjbSIgLworICAgICAqICJHZW5lcmFsX0NhdGVnb3J5X01hc2siLiAgVGhlc2UgbmFtZXMgYXJlIG5vdCBpbgorICAgICAqIFByb3BlcnR5QWxpYXNlcy50eHQuCisgICAgICogCisgICAgICogQHBhcmFtIHByb3BlcnR5IFVQcm9wZXJ0eSBzZWxlY3Rvci4KKyAgICAgKgorICAgICAqIEBwYXJhbSBuYW1lQ2hvaWNlIFVQcm9wZXJ0eS5OYW1lQ2hvaWNlIHNlbGVjdG9yIGZvciB3aGljaCBuYW1lCisgICAgICogdG8gZ2V0LiAgQWxsIHByb3BlcnRpZXMgaGF2ZSBhIGxvbmcgbmFtZS4gIE1vc3QgaGF2ZSBhIHNob3J0CisgICAgICogbmFtZSwgYnV0IHNvbWUgZG8gbm90LiAgVW5pY29kZSBhbGxvd3MgZm9yIGFkZGl0aW9uYWwgbmFtZXM7IGlmCisgICAgICogcHJlc2VudCB0aGVzZSB3aWxsIGJlIHJldHVybmVkIGJ5IFVQcm9wZXJ0eS5OYW1lQ2hvaWNlLkxPTkcgKyBpLAorICAgICAqIHdoZXJlIGk9MSwgMiwuLi4KKyAgICAgKgorICAgICAqIEByZXR1cm4gYSBuYW1lLCBvciBudWxsIGlmIFVuaWNvZGUgZXhwbGljaXRseSBkZWZpbmVzIG5vIG5hbWUKKyAgICAgKiAoIm4vYSIpIGZvciBhIGdpdmVuIHByb3BlcnR5L25hbWVDaG9pY2UuICBJZiBhIGdpdmVuIG5hbWVDaG9pY2UKKyAgICAgKiB0aHJvd3MgYW4gZXhjZXB0aW9uLCB0aGVuIGFsbCBsYXJnZXIgdmFsdWVzIG9mIG5hbWVDaG9pY2Ugd2lsbAorICAgICAqIHRocm93IGFuIGV4Y2VwdGlvbi4gIElmIG51bGwgaXMgcmV0dXJuZWQgZm9yIGEgZ2l2ZW4KKyAgICAgKiBuYW1lQ2hvaWNlLCB0aGVuIG90aGVyIG5hbWVDaG9pY2UgdmFsdWVzIG1heSByZXR1cm4gbm9uLW51bGwKKyAgICAgKiByZXN1bHRzLgorICAgICAqCisgICAgICogQGV4Y2VwdGlvbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gdGhyb3duIGlmIHByb3BlcnR5IG9yCisgICAgICogbmFtZUNob2ljZSBhcmUgaW52YWxpZC4KKyAgICAgKgorICAgICAqIEBzZWUgVVByb3BlcnR5CisgICAgICogQHNlZSBVUHJvcGVydHkuTmFtZUNob2ljZQorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0UHJvcGVydHlOYW1lKGludCBwcm9wZXJ0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5hbWVDaG9pY2UpIHsKKyAgICAgICAgcmV0dXJuIFBOQU1FU18uZ2V0UHJvcGVydHlOYW1lKHByb3BlcnR5LCBuYW1lQ2hvaWNlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIFVQcm9wZXJ0eSBzZWxlY3RvciBmb3IgYSBnaXZlbiBwcm9wZXJ0eSBuYW1lLCBhcworICAgICAqIHNwZWNpZmllZCBpbiB0aGUgVW5pY29kZSBkYXRhYmFzZSBmaWxlIFByb3BlcnR5QWxpYXNlcy50eHQuCisgICAgICogU2hvcnQsIGxvbmcsIGFuZCBhbnkgb3RoZXIgdmFyaWFudHMgYXJlIHJlY29nbml6ZWQuCisgICAgICoKKyAgICAgKiBJbiBhZGRpdGlvbiwgdGhpcyBmdW5jdGlvbiBtYXBzIHRoZSBzeW50aGV0aWMgbmFtZXMgImdjbSIgLworICAgICAqICJHZW5lcmFsX0NhdGVnb3J5X01hc2siIHRvIHRoZSBwcm9wZXJ0eQorICAgICAqIFVQcm9wZXJ0eS5HRU5FUkFMX0NBVEVHT1JZX01BU0suICBUaGVzZSBuYW1lcyBhcmUgbm90IGluCisgICAgICogUHJvcGVydHlBbGlhc2VzLnR4dC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBwcm9wZXJ0eUFsaWFzIHRoZSBwcm9wZXJ0eSBuYW1lIHRvIGJlIG1hdGNoZWQuICBUaGUgbmFtZQorICAgICAqIGlzIGNvbXBhcmVkIHVzaW5nICJsb29zZSBtYXRjaGluZyIgYXMgZGVzY3JpYmVkIGluCisgICAgICogUHJvcGVydHlBbGlhc2VzLnR4dC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gYSBVUHJvcGVydHkgZW51bS4KKyAgICAgKgorICAgICAqIEBleGNlcHRpb24gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHRocm93biBpZiBwcm9wZXJ0eUFsaWFzCisgICAgICogaXMgbm90IHJlY29nbml6ZWQuCisgICAgICoKKyAgICAgKiBAc2VlIFVQcm9wZXJ0eQorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnQgZ2V0UHJvcGVydHlFbnVtKFN0cmluZyBwcm9wZXJ0eUFsaWFzKSB7CisgICAgICAgIHJldHVybiBQTkFNRVNfLmdldFByb3BlcnR5RW51bShwcm9wZXJ0eUFsaWFzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIFVuaWNvZGUgbmFtZSBmb3IgYSBnaXZlbiBwcm9wZXJ0eSB2YWx1ZSwgYXMgZ2l2ZW4gaW4KKyAgICAgKiB0aGUgVW5pY29kZSBkYXRhYmFzZSBmaWxlIFByb3BlcnR5VmFsdWVBbGlhc2VzLnR4dC4gIE1vc3QKKyAgICAgKiB2YWx1ZXMgaGF2ZSBtb3JlIHRoYW4gb25lIG5hbWUuICBUaGUgbmFtZUNob2ljZSBkZXRlcm1pbmVzCisgICAgICogd2hpY2ggb25lIGlzIHJldHVybmVkLgorICAgICAqCisgICAgICogTm90ZTogU29tZSBvZiB0aGUgbmFtZXMgaW4gUHJvcGVydHlWYWx1ZUFsaWFzZXMudHh0IGNhbiBvbmx5IGJlCisgICAgICogcmV0cmlldmVkIHVzaW5nIFVQcm9wZXJ0eS5HRU5FUkFMX0NBVEVHT1JZX01BU0ssIG5vdAorICAgICAqIFVQcm9wZXJ0eS5HRU5FUkFMX0NBVEVHT1JZLiAgVGhlc2UgaW5jbHVkZTogIkMiIC8gIk90aGVyIiwgIkwiIC8KKyAgICAgKiAiTGV0dGVyIiwgIkxDIiAvICJDYXNlZF9MZXR0ZXIiLCAiTSIgLyAiTWFyayIsICJOIiAvICJOdW1iZXIiLCAiUCIKKyAgICAgKiAvICJQdW5jdHVhdGlvbiIsICJTIiAvICJTeW1ib2wiLCBhbmQgIloiIC8gIlNlcGFyYXRvciIuCisgICAgICoKKyAgICAgKiBAcGFyYW0gcHJvcGVydHkgVVByb3BlcnR5IHNlbGVjdG9yIGNvbnN0YW50LgorICAgICAqIFVQcm9wZXJ0eS5JTlRfU1RBUlQgJmx0Oz0gcHJvcGVydHkgJmx0OyBVUHJvcGVydHkuSU5UX0xJTUlUIG9yCisgICAgICogVVByb3BlcnR5LkJJTkFSWV9TVEFSVCAmbHQ7PSBwcm9wZXJ0eSAmbHQ7IFVQcm9wZXJ0eS5CSU5BUllfTElNSVQgb3IKKyAgICAgKiBVUHJvcGVydHkuTUFTS19TVEFSVCAmbHQ7ID0gcHJvcGVydHkgJmx0OyBVUHJvcGVydHkuTUFTS19MSU1JVC4KKyAgICAgKiBJZiBvdXQgb2YgcmFuZ2UsIG51bGwgaXMgcmV0dXJuZWQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gdmFsdWUgc2VsZWN0b3IgZm9yIGEgdmFsdWUgZm9yIHRoZSBnaXZlbiBwcm9wZXJ0eS4gIEluCisgICAgICogZ2VuZXJhbCwgdmFsaWQgdmFsdWVzIHJhbmdlIGZyb20gMCB1cCB0byBzb21lIG1heGltdW0uICBUaGVyZQorICAgICAqIGFyZSBhIGZldyBleGNlcHRpb25zOiAoMS4pIFVQcm9wZXJ0eS5CTE9DSyB2YWx1ZXMgYmVnaW4gYXQgdGhlCisgICAgICogbm9uLXplcm8gdmFsdWUgQkFTSUNfTEFUSU4uZ2V0SUQoKS4gICgyLikKKyAgICAgKiBVUHJvcGVydHkuQ0FOT05JQ0FMX0NPTUJJTklOR19DTEFTUyB2YWx1ZXMgYXJlIG5vdCBjb250aWd1b3VzCisgICAgICogYW5kIHJhbmdlIGZyb20gMC4uMjQwLiAgKDMuKSAgVVByb3BlcnR5LkdFTkVSQUxfQ0FURUdPUllfTUFTSyB2YWx1ZXMKKyAgICAgKiBhcmUgbWFzayB2YWx1ZXMgcHJvZHVjZWQgYnkgbGVmdC1zaGlmdGluZyAxIGJ5CisgICAgICogVUNoYXJhY3Rlci5nZXRUeXBlKCkuICBUaGlzIGFsbG93cyBncm91cGVkIGNhdGVnb3JpZXMgc3VjaCBhcworICAgICAqIFs6TDpdIHRvIGJlIHJlcHJlc2VudGVkLiAgTWFzayB2YWx1ZXMgYXJlIG5vbi1jb250aWd1b3VzLgorICAgICAqCisgICAgICogQHBhcmFtIG5hbWVDaG9pY2UgVVByb3BlcnR5Lk5hbWVDaG9pY2Ugc2VsZWN0b3IgZm9yIHdoaWNoIG5hbWUKKyAgICAgKiB0byBnZXQuICBBbGwgdmFsdWVzIGhhdmUgYSBsb25nIG5hbWUuICBNb3N0IGhhdmUgYSBzaG9ydCBuYW1lLAorICAgICAqIGJ1dCBzb21lIGRvIG5vdC4gIFVuaWNvZGUgYWxsb3dzIGZvciBhZGRpdGlvbmFsIG5hbWVzOyBpZgorICAgICAqIHByZXNlbnQgdGhlc2Ugd2lsbCBiZSByZXR1cm5lZCBieSBVUHJvcGVydHkuTmFtZUNob2ljZS5MT05HICsgaSwKKyAgICAgKiB3aGVyZSBpPTEsIDIsLi4uCisgICAgICoKKyAgICAgKiBAcmV0dXJuIGEgbmFtZSwgb3IgbnVsbCBpZiBVbmljb2RlIGV4cGxpY2l0bHkgZGVmaW5lcyBubyBuYW1lCisgICAgICogKCJuL2EiKSBmb3IgYSBnaXZlbiBwcm9wZXJ0eS92YWx1ZS9uYW1lQ2hvaWNlLiAgSWYgYSBnaXZlbgorICAgICAqIG5hbWVDaG9pY2UgdGhyb3dzIGFuIGV4Y2VwdGlvbiwgdGhlbiBhbGwgbGFyZ2VyIHZhbHVlcyBvZgorICAgICAqIG5hbWVDaG9pY2Ugd2lsbCB0aHJvdyBhbiBleGNlcHRpb24uICBJZiBudWxsIGlzIHJldHVybmVkIGZvciBhCisgICAgICogZ2l2ZW4gbmFtZUNob2ljZSwgdGhlbiBvdGhlciBuYW1lQ2hvaWNlIHZhbHVlcyBtYXkgcmV0dXJuCisgICAgICogbm9uLW51bGwgcmVzdWx0cy4KKyAgICAgKgorICAgICAqIEBleGNlcHRpb24gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHRocm93biBpZiBwcm9wZXJ0eSwgdmFsdWUsCisgICAgICogb3IgbmFtZUNob2ljZSBhcmUgaW52YWxpZC4KKyAgICAgKgorICAgICAqIEBzZWUgVVByb3BlcnR5CisgICAgICogQHNlZSBVUHJvcGVydHkuTmFtZUNob2ljZQorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0UHJvcGVydHlWYWx1ZU5hbWUoaW50IHByb3BlcnR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbmFtZUNob2ljZSkgeworICAgICAgICByZXR1cm4gUE5BTUVTXy5nZXRQcm9wZXJ0eVZhbHVlTmFtZShwcm9wZXJ0eSwgdmFsdWUsIG5hbWVDaG9pY2UpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgcHJvcGVydHkgdmFsdWUgaW50ZWdlciBmb3IgYSBnaXZlbiB2YWx1ZSBuYW1lLCBhcworICAgICAqIHNwZWNpZmllZCBpbiB0aGUgVW5pY29kZSBkYXRhYmFzZSBmaWxlIFByb3BlcnR5VmFsdWVBbGlhc2VzLnR4dC4KKyAgICAgKiBTaG9ydCwgbG9uZywgYW5kIGFueSBvdGhlciB2YXJpYW50cyBhcmUgcmVjb2duaXplZC4KKyAgICAgKgorICAgICAqIE5vdGU6IFNvbWUgb2YgdGhlIG5hbWVzIGluIFByb3BlcnR5VmFsdWVBbGlhc2VzLnR4dCB3aWxsIG9ubHkgYmUKKyAgICAgKiByZWNvZ25pemVkIHdpdGggVVByb3BlcnR5LkdFTkVSQUxfQ0FURUdPUllfTUFTSywgbm90CisgICAgICogVVByb3BlcnR5LkdFTkVSQUxfQ0FURUdPUlkuICBUaGVzZSBpbmNsdWRlOiAiQyIgLyAiT3RoZXIiLCAiTCIgLworICAgICAqICJMZXR0ZXIiLCAiTEMiIC8gIkNhc2VkX0xldHRlciIsICJNIiAvICJNYXJrIiwgIk4iIC8gIk51bWJlciIsICJQIgorICAgICAqIC8gIlB1bmN0dWF0aW9uIiwgIlMiIC8gIlN5bWJvbCIsIGFuZCAiWiIgLyAiU2VwYXJhdG9yIi4KKyAgICAgKgorICAgICAqIEBwYXJhbSBwcm9wZXJ0eSBVUHJvcGVydHkgc2VsZWN0b3IgY29uc3RhbnQuCisgICAgICogVVByb3BlcnR5LklOVF9TVEFSVCAmbHQ7PSBwcm9wZXJ0eSAmbHQ7IFVQcm9wZXJ0eS5JTlRfTElNSVQgb3IKKyAgICAgKiBVUHJvcGVydHkuQklOQVJZX1NUQVJUICZsdDs9IHByb3BlcnR5ICZsdDsgVVByb3BlcnR5LkJJTkFSWV9MSU1JVCBvcgorICAgICAqIFVQcm9wZXJ0eS5NQVNLX1NUQVJUICZsdDsgPSBwcm9wZXJ0eSAmbHQ7IFVQcm9wZXJ0eS5NQVNLX0xJTUlULgorICAgICAqIE9ubHkgdGhlc2UgcHJvcGVydGllcyBjYW4gYmUgZW51bWVyYXRlZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSB2YWx1ZUFsaWFzIHRoZSB2YWx1ZSBuYW1lIHRvIGJlIG1hdGNoZWQuICBUaGUgbmFtZSBpcworICAgICAqIGNvbXBhcmVkIHVzaW5nICJsb29zZSBtYXRjaGluZyIgYXMgZGVzY3JpYmVkIGluCisgICAgICogUHJvcGVydHlWYWx1ZUFsaWFzZXMudHh0LgorICAgICAqCisgICAgICogQHJldHVybiBhIHZhbHVlIGludGVnZXIuICBOb3RlOiBVUHJvcGVydHkuR0VORVJBTF9DQVRFR09SWQorICAgICAqIHZhbHVlcyBhcmUgbWFzayB2YWx1ZXMgcHJvZHVjZWQgYnkgbGVmdC1zaGlmdGluZyAxIGJ5CisgICAgICogVUNoYXJhY3Rlci5nZXRUeXBlKCkuICBUaGlzIGFsbG93cyBncm91cGVkIGNhdGVnb3JpZXMgc3VjaCBhcworICAgICAqIFs6TDpdIHRvIGJlIHJlcHJlc2VudGVkLgorICAgICAqCisgICAgICogQHNlZSBVUHJvcGVydHkKKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiBwcm9wZXJ0eSBpcyBub3QgYSB2YWxpZCBVUHJvcGVydHkKKyAgICAgKiAgICAgICAgIHNlbGVjdG9yCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludCBnZXRQcm9wZXJ0eVZhbHVlRW51bShpbnQgcHJvcGVydHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHZhbHVlQWxpYXMpIHsKKyAgICAgICAgcmV0dXJuIFBOQU1FU18uZ2V0UHJvcGVydHlWYWx1ZUVudW0ocHJvcGVydHksIHZhbHVlQWxpYXMpOworICAgIH0KKyAgICAgIAorICAgIC8qKgorICAgICAqIFJldHVybnMgYSBjb2RlIHBvaW50IGNvcnJlc3BvbmRpbmcgdG8gdGhlIHR3byBVVEYxNiBjaGFyYWN0ZXJzLgorICAgICAqIEBwYXJhbSBsZWFkIHRoZSBsZWFkIGNoYXIKKyAgICAgKiBAcGFyYW0gdHJhaWwgdGhlIHRyYWlsIGNoYXIKKyAgICAgKiBAcmV0dXJuIGNvZGUgcG9pbnQgaWYgc3Vycm9nYXRlIGNoYXJhY3RlcnMgYXJlIHZhbGlkLgorICAgICAqIEBleGNlcHRpb24gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHRocm93biB3aGVuIGFyZ3VtZW50IGNoYXJhY3RlcnMgZG8KKyAgICAgKiAgICAgICAgICAgIG5vdCBmb3JtIGEgdmFsaWQgY29kZXBvaW50CisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnQgZ2V0Q29kZVBvaW50KGNoYXIgbGVhZCwgY2hhciB0cmFpbCkgCisgICAgeworICAgICAgICBpZiAobGVhZCA+PSBVVEYxNi5MRUFEX1NVUlJPR0FURV9NSU5fVkFMVUUgJiYgCisJICAgICAgICBsZWFkIDw9IFVURjE2LkxFQURfU1VSUk9HQVRFX01BWF9WQUxVRSAmJgorICAgICAgICAgICAgdHJhaWwgPj0gVVRGMTYuVFJBSUxfU1VSUk9HQVRFX01JTl9WQUxVRSAmJiAKKwkgICAgICAgIHRyYWlsIDw9IFVURjE2LlRSQUlMX1NVUlJPR0FURV9NQVhfVkFMVUUpIHsKKyAgICAgICAgICAgIHJldHVybiBVQ2hhcmFjdGVyUHJvcGVydHkuZ2V0UmF3U3VwcGxlbWVudGFyeShsZWFkLCB0cmFpbCk7CisgICAgICAgIH0KKyAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSWxsZWdhbCBzdXJyb2dhdGUgY2hhcmFjdGVycyIpOworICAgIH0KKyAgICAgIAorICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGNvZGUgcG9pbnQgY29ycmVzcG9uZGluZyB0byB0aGUgVVRGMTYgY2hhcmFjdGVyLgorICAgICAqIEBwYXJhbSBjaGFyMTYgdGhlIFVURjE2IGNoYXJhY3RlcgorICAgICAqIEByZXR1cm4gY29kZSBwb2ludCBpZiBhcmd1bWVudCBpcyBhIHZhbGlkIGNoYXJhY3Rlci4KKyAgICAgKiBAZXhjZXB0aW9uIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiB0aHJvd24gd2hlbiBjaGFyMTYgaXMgbm90IGEgdmFsaWQKKyAgICAgKiAgICAgICAgICAgIGNvZGVwb2ludAorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgaW50IGdldENvZGVQb2ludChjaGFyIGNoYXIxNikgCisgICAgeworICAgICAgICBpZiAoVUNoYXJhY3Rlci5pc0xlZ2FsKGNoYXIxNikpIHsKKyAgICAgICAgICAgIHJldHVybiBjaGFyMTY7CisgICAgICAgIH0KKyAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSWxsZWdhbCBjb2RlcG9pbnQiKTsKKyAgICB9CisgICAgICAKKyAgICAvKioKKyAgICAgKiBHZXRzIHVwcGVyY2FzZSB2ZXJzaW9uIG9mIHRoZSBhcmd1bWVudCBzdHJpbmcuIAorICAgICAqIENhc2luZyBpcyBkZXBlbmRlbnQgb24gdGhlIGRlZmF1bHQgbG9jYWxlIGFuZCBjb250ZXh0LXNlbnNpdGl2ZS4KKyAgICAgKiBAcGFyYW0gc3RyIHNvdXJjZSBzdHJpbmcgdG8gYmUgcGVyZm9ybWVkIG9uCisgICAgICogQHJldHVybiB1cHBlcmNhc2UgdmVyc2lvbiBvZiB0aGUgYXJndW1lbnQgc3RyaW5nCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgdG9VcHBlckNhc2UoU3RyaW5nIHN0cikKKyAgICB7CisgICAgICAgIHJldHVybiB0b1VwcGVyQ2FzZShMb2NhbGUuZ2V0RGVmYXVsdCgpLCBzdHIpOworICAgIH0KKyAgICAgIAorICAgIC8qKgorICAgICAqIEdldHMgbG93ZXJjYXNlIHZlcnNpb24gb2YgdGhlIGFyZ3VtZW50IHN0cmluZy4gCisgICAgICogQ2FzaW5nIGlzIGRlcGVuZGVudCBvbiB0aGUgZGVmYXVsdCBsb2NhbGUgYW5kIGNvbnRleHQtc2Vuc2l0aXZlCisgICAgICogQHBhcmFtIHN0ciBzb3VyY2Ugc3RyaW5nIHRvIGJlIHBlcmZvcm1lZCBvbgorICAgICAqIEByZXR1cm4gbG93ZXJjYXNlIHZlcnNpb24gb2YgdGhlIGFyZ3VtZW50IHN0cmluZworICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIHRvTG93ZXJDYXNlKFN0cmluZyBzdHIpCisgICAgeworICAgICAgICByZXR1cm4gdG9Mb3dlckNhc2UoTG9jYWxlLmdldERlZmF1bHQoKSwgc3RyKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogPHA+R2V0cyB0aGUgdGl0bGVjYXNlIHZlcnNpb24gb2YgdGhlIGFyZ3VtZW50IHN0cmluZy48L3A+CisgICAgICogPHA+UG9zaXRpb24gZm9yIHRpdGxlY2FzaW5nIGlzIGRldGVybWluZWQgYnkgdGhlIGFyZ3VtZW50IGJyZWFrIAorICAgICAqIGl0ZXJhdG9yLCBoZW5jZSB0aGUgdXNlciBjYW4gY3VzdG9taXplZCBoaXMgYnJlYWsgaXRlcmF0b3IgZm9yIAorICAgICAqIGEgc3BlY2lhbGl6ZWQgdGl0bGVjYXNpbmcuIEluIHRoaXMgY2FzZSBvbmx5IHRoZSBmb3J3YXJkIGl0ZXJhdGlvbiAKKyAgICAgKiBuZWVkcyB0byBiZSBpbXBsZW1lbnRlZC4KKyAgICAgKiBJZiB0aGUgYnJlYWsgaXRlcmF0b3IgcGFzc2VkIGluIGlzIG51bGwsIHRoZSBkZWZhdWx0IFVuaWNvZGUgYWxnb3JpdGhtCisgICAgICogd2lsbCBiZSB1c2VkIHRvIGRldGVybWluZSB0aGUgdGl0bGVjYXNlIHBvc2l0aW9ucy4KKyAgICAgKiA8L3A+CisgICAgICogPHA+T25seSBwb3NpdGlvbnMgcmV0dXJuZWQgYnkgdGhlIGJyZWFrIGl0ZXJhdG9yIHdpbGwgYmUgdGl0bGUgY2FzZWQsCisgICAgICogY2hhcmFjdGVyIGluIGJldHdlZW4gdGhlIHBvc2l0aW9ucyB3aWxsIGFsbCBiZSBpbiBsb3dlciBjYXNlLjwvcD4KKyAgICAgKiA8cD5DYXNpbmcgaXMgZGVwZW5kZW50IG9uIHRoZSBkZWZhdWx0IGxvY2FsZSBhbmQgY29udGV4dC1zZW5zaXRpdmU8L3A+CisgICAgICogQHBhcmFtIHN0ciBzb3VyY2Ugc3RyaW5nIHRvIGJlIHBlcmZvcm1lZCBvbgorICAgICAqIEBwYXJhbSBicmVha2l0ZXIgYnJlYWsgaXRlcmF0b3IgdG8gZGV0ZXJtaW5lIHRoZSBwb3NpdGlvbnMgaW4gd2hpY2gKKyAgICAgKiAgICAgICAgdGhlIGNoYXJhY3RlciBzaG91bGQgYmUgdGl0bGUgY2FzZWQuCisgICAgICogQHJldHVybiBsb3dlcmNhc2UgdmVyc2lvbiBvZiB0aGUgYXJndW1lbnQgc3RyaW5nCisgICAgICogQGRyYWZ0IElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyB0b1RpdGxlQ2FzZShTdHJpbmcgc3RyLCBCcmVha0l0ZXJhdG9yIGJyZWFraXRlcikKKyAgICB7CisgICAgICAgIHJldHVybiB0b1RpdGxlQ2FzZShMb2NhbGUuZ2V0RGVmYXVsdCgpLCBzdHIsIGJyZWFraXRlcik7CisgICAgfQorICAgICAgCisgICAgLyoqCisgICAgICogR2V0cyB1cHBlcmNhc2UgdmVyc2lvbiBvZiB0aGUgYXJndW1lbnQgc3RyaW5nLiAKKyAgICAgKiBDYXNpbmcgaXMgZGVwZW5kZW50IG9uIHRoZSBhcmd1bWVudCBsb2NhbGUgYW5kIGNvbnRleHQtc2Vuc2l0aXZlLgorICAgICAqIEBwYXJhbSBsb2NhbGUgd2hpY2ggc3RyaW5nIGlzIHRvIGJlIGNvbnZlcnRlZCBpbgorICAgICAqIEBwYXJhbSBzdHIgc291cmNlIHN0cmluZyB0byBiZSBwZXJmb3JtZWQgb24KKyAgICAgKiBAcmV0dXJuIHVwcGVyY2FzZSB2ZXJzaW9uIG9mIHRoZSBhcmd1bWVudCBzdHJpbmcKKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyB0b1VwcGVyQ2FzZShMb2NhbGUgbG9jYWxlLCBTdHJpbmcgc3RyKQorICAgIHsKKyAgICAJaWYgKGxvY2FsZSA9PSBudWxsKSB7CisgICAgCQlsb2NhbGUgPSBMb2NhbGUuZ2V0RGVmYXVsdCgpOworICAgIAl9CisgICAgICAgIHJldHVybiBQUk9QRVJUWV8udG9VcHBlckNhc2UobG9jYWxlLCBzdHIsIDAsIHN0ci5sZW5ndGgoKSk7CisgICAgfQorICAgICAgCisgICAgLyoqCisgICAgICogR2V0cyBsb3dlcmNhc2UgdmVyc2lvbiBvZiB0aGUgYXJndW1lbnQgc3RyaW5nLiAKKyAgICAgKiBDYXNpbmcgaXMgZGVwZW5kZW50IG9uIHRoZSBhcmd1bWVudCBsb2NhbGUgYW5kIGNvbnRleHQtc2Vuc2l0aXZlCisgICAgICogQHBhcmFtIGxvY2FsZSB3aGljaCBzdHJpbmcgaXMgdG8gYmUgY29udmVydGVkIGluCisgICAgICogQHBhcmFtIHN0ciBzb3VyY2Ugc3RyaW5nIHRvIGJlIHBlcmZvcm1lZCBvbgorICAgICAqIEByZXR1cm4gbG93ZXJjYXNlIHZlcnNpb24gb2YgdGhlIGFyZ3VtZW50IHN0cmluZworICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIHRvTG93ZXJDYXNlKExvY2FsZSBsb2NhbGUsIFN0cmluZyBzdHIpCisgICAgeworICAgIAlpbnQgbGVuZ3RoID0gc3RyLmxlbmd0aCgpOworICAgIAlTdHJpbmdCdWZmZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcihsZW5ndGgpOworICAgIAlpZiAobG9jYWxlID09IG51bGwpIHsKKyAgICAJCWxvY2FsZSA9IExvY2FsZS5nZXREZWZhdWx0KCk7CisgICAgCX0KKyAgICAgICAgUFJPUEVSVFlfLnRvTG93ZXJDYXNlKGxvY2FsZSwgc3RyLCAwLCBsZW5ndGgsIHJlc3VsdCk7CisgICAgICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogPHA+R2V0cyB0aGUgdGl0bGVjYXNlIHZlcnNpb24gb2YgdGhlIGFyZ3VtZW50IHN0cmluZy48L3A+CisgICAgICogPHA+UG9zaXRpb24gZm9yIHRpdGxlY2FzaW5nIGlzIGRldGVybWluZWQgYnkgdGhlIGFyZ3VtZW50IGJyZWFrIAorICAgICAqIGl0ZXJhdG9yLCBoZW5jZSB0aGUgdXNlciBjYW4gY3VzdG9taXplZCBoaXMgYnJlYWsgaXRlcmF0b3IgZm9yIAorICAgICAqIGEgc3BlY2lhbGl6ZWQgdGl0bGVjYXNpbmcuIEluIHRoaXMgY2FzZSBvbmx5IHRoZSBmb3J3YXJkIGl0ZXJhdGlvbiAKKyAgICAgKiBuZWVkcyB0byBiZSBpbXBsZW1lbnRlZC4KKyAgICAgKiBJZiB0aGUgYnJlYWsgaXRlcmF0b3IgcGFzc2VkIGluIGlzIG51bGwsIHRoZSBkZWZhdWx0IFVuaWNvZGUgYWxnb3JpdGhtCisgICAgICogd2lsbCBiZSB1c2VkIHRvIGRldGVybWluZSB0aGUgdGl0bGVjYXNlIHBvc2l0aW9ucy4KKyAgICAgKiA8L3A+CisgICAgICogPHA+T25seSBwb3NpdGlvbnMgcmV0dXJuZWQgYnkgdGhlIGJyZWFrIGl0ZXJhdG9yIHdpbGwgYmUgdGl0bGUgY2FzZWQsCisgICAgICogY2hhcmFjdGVyIGluIGJldHdlZW4gdGhlIHBvc2l0aW9ucyB3aWxsIGFsbCBiZSBpbiBsb3dlciBjYXNlLjwvcD4KKyAgICAgKiA8cD5DYXNpbmcgaXMgZGVwZW5kZW50IG9uIHRoZSBhcmd1bWVudCBsb2NhbGUgYW5kIGNvbnRleHQtc2Vuc2l0aXZlPC9wPgorICAgICAqIEBwYXJhbSBsb2NhbGUgd2hpY2ggc3RyaW5nIGlzIHRvIGJlIGNvbnZlcnRlZCBpbgorICAgICAqIEBwYXJhbSBzdHIgc291cmNlIHN0cmluZyB0byBiZSBwZXJmb3JtZWQgb24KKyAgICAgKiBAcGFyYW0gYnJlYWtpdGVyIGJyZWFrIGl0ZXJhdG9yIHRvIGRldGVybWluZSB0aGUgcG9zaXRpb25zIGluIHdoaWNoCisgICAgICogICAgICAgIHRoZSBjaGFyYWN0ZXIgc2hvdWxkIGJlIHRpdGxlIGNhc2VkLgorICAgICAqIEByZXR1cm4gbG93ZXJjYXNlIHZlcnNpb24gb2YgdGhlIGFyZ3VtZW50IHN0cmluZworICAgICAqIEBkcmFmdCBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgdG9UaXRsZUNhc2UoTG9jYWxlIGxvY2FsZSwgU3RyaW5nIHN0ciwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnJlYWtJdGVyYXRvciBicmVha2l0ZXIpCisgICAgeworICAgICAgICBpZiAoYnJlYWtpdGVyID09IG51bGwpIHsKKyAgICAgICAgCWlmIChsb2NhbGUgPT0gbnVsbCkgeworICAgICAgICAJCWxvY2FsZSA9IExvY2FsZS5nZXREZWZhdWx0KCk7CisgICAgICAgIAl9CisgICAgICAgICAgICBicmVha2l0ZXIgPSBCcmVha0l0ZXJhdG9yLmdldFdvcmRJbnN0YW5jZShsb2NhbGUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBQUk9QRVJUWV8udG9UaXRsZUNhc2UobG9jYWxlLCBzdHIsIGJyZWFraXRlcik7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFRoZSBnaXZlbiBjaGFyYWN0ZXIgaXMgbWFwcGVkIHRvIGl0cyBjYXNlIGZvbGRpbmcgZXF1aXZhbGVudCBhY2NvcmRpbmcgCisgICAgICogdG8gVW5pY29kZURhdGEudHh0IGFuZCBDYXNlRm9sZGluZy50eHQ7IGlmIHRoZSBjaGFyYWN0ZXIgaGFzIG5vIGNhc2UgCisgICAgICogZm9sZGluZyBlcXVpdmFsZW50LCB0aGUgY2hhcmFjdGVyIGl0c2VsZiBpcyByZXR1cm5lZC4KKyAgICAgKiBPbmx5ICJzaW1wbGUiLCBzaW5nbGUtY29kZSBwb2ludCBjYXNlIGZvbGRpbmcgbWFwcGluZ3MgYXJlIHVzZWQuCisgICAgICogRm9yICJmdWxsIiwgbXVsdGlwbGUtY29kZSBwb2ludCBtYXBwaW5ncyB1c2UgdGhlIEFQSSAKKyAgICAgKiBmb2xkQ2FzZShTdHJpbmcgc3RyLCBib29sZWFuIGRlZmF1bHRtYXBwaW5nKS4KKyAgICAgKiBAcGFyYW0gY2ggICAgICAgICAgICAgdGhlIGNoYXJhY3RlciB0byBiZSBjb252ZXJ0ZWQKKyAgICAgKiBAcGFyYW0gZGVmYXVsdG1hcHBpbmcgSW5kaWNhdGVzIGlmIGFsbCBtYXBwaW5ncyBkZWZpbmVkIGluIAorICAgICAqICAgICAgICAgICAgICAgICAgICAgICBDYXNlRm9sZGluZy50eHQgaXMgdG8gYmUgdXNlZCwgb3RoZXJ3aXNlIHRoZSAKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZ3MgZm9yIGRvdHRlZCBJICBhbmQgZG90bGVzcyBpIG1hcmtlZCB3aXRoIAorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAnSScgaW4gQ2FzZUZvbGRpbmcudHh0IHdpbGwgYmUgc2tpcHBlZC4KKyAgICAgKiBAcmV0dXJuICAgICAgICAgICAgICAgdGhlIGNhc2UgZm9sZGluZyBlcXVpdmFsZW50IG9mIHRoZSBjaGFyYWN0ZXIsIGlmIAorICAgICAqICAgICAgICAgICAgICAgICAgICAgICBhbnk7IG90aGVyd2lzZSB0aGUgY2hhcmFjdGVyIGl0c2VsZi4KKyAgICAgKiBAc2VlICAgICAgICAgICAgICAgICAgI2ZvbGRDYXNlKFN0cmluZywgYm9vbGVhbikKKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludCBmb2xkQ2FzZShpbnQgY2gsIGJvb2xlYW4gZGVmYXVsdG1hcHBpbmcpCisgICAgeworICAgICAgICAvLyBTb21lIHNwZWNpYWwgY2FzZXMgYXJlIGhhcmRjb2RlZCBiZWNhdXNlIHRoZWlyIGNvbmRpdGlvbnMgY2Fubm90IGJlCisgICAgICAgIC8vIHBhcnNlZCBhbmQgcHJvY2Vzc2VkIGZyb20gQ2FzZUZvbGRpbmcudHh0LgorICAgICAgICAvLyBVbmljb2RlIDMuMiBDYXNlRm9sZGluZy50eHQgc3BlY2lmaWVzIGZvciBpdHMgc3RhdHVzIGZpZWxkOgorICAgICAgICAvLyAjIEM6IGNvbW1vbiBjYXNlIGZvbGRpbmcsIGNvbW1vbiBtYXBwaW5ncyBzaGFyZWQgYnkgYm90aCBzaW1wbGUgYW5kIAorICAgICAgICAvLyBmdWxsIG1hcHBpbmdzLgorICAgICAgICAvLyAjIEY6IGZ1bGwgY2FzZSBmb2xkaW5nLCBtYXBwaW5ncyB0aGF0IGNhdXNlIHN0cmluZ3MgdG8gZ3JvdyBpbiAKKyAgICAgICAgLy8gbGVuZ3RoLiBNdWx0aXBsZSBjaGFyYWN0ZXJzIGFyZSBzZXBhcmF0ZWQgYnkgc3BhY2VzLgorICAgICAgICAvLyAjIFM6IHNpbXBsZSBjYXNlIGZvbGRpbmcsIG1hcHBpbmdzIHRvIHNpbmdsZSBjaGFyYWN0ZXJzIHdoZXJlIAorICAgICAgICAvLyBkaWZmZXJlbnQgZnJvbSBGLgorICAgICAgICAvLyAjIFQ6IHNwZWNpYWwgY2FzZSBmb3IgdXBwZXJjYXNlIEkgYW5kIGRvdHRlZCB1cHBlcmNhc2UgSQorICAgICAgICAvLyAjICAgIC0gRm9yIG5vbi1UdXJraWMgbGFuZ3VhZ2VzLCB0aGlzIG1hcHBpbmcgaXMgbm9ybWFsbHkgbm90IHVzZWQuCisgICAgICAgIC8vICMgICAgLSBGb3IgVHVya2ljIGxhbmd1YWdlcyAodHIsIGF6KSwgdGhpcyBtYXBwaW5nIGNhbiBiZSB1c2VkIAorICAgICAgICAvLyBpbnN0ZWFkIG9mIHRoZSBub3JtYWwgbWFwcGluZyBmb3IgdGhlc2UgY2hhcmFjdGVycy4KKyAgICAgICAgLy8gIyBVc2FnZToKKyAgICAgICAgLy8gIyAgQS4gVG8gZG8gYSBzaW1wbGUgY2FzZSBmb2xkaW5nLCB1c2UgdGhlIG1hcHBpbmdzIHdpdGggc3RhdHVzIAorICAgICAgICAvLyBDICsgUy4KKyAgICAgICAgLy8gIyAgQi4gVG8gZG8gYSBmdWxsIGNhc2UgZm9sZGluZywgdXNlIHRoZSBtYXBwaW5ncyB3aXRoIHN0YXR1cyBDICsgRi4KKyAgICAgICAgLy8gIyAgICBUaGUgbWFwcGluZ3Mgd2l0aCBzdGF0dXMgVCBjYW4gYmUgdXNlZCBvciBvbWl0dGVkIGRlcGVuZGluZyBvbiAKKyAgICAgICAgLy8gdGhlIGRlc2lyZWQgY2FzZS1mb2xkaW5nIGJlaGF2aW9yLiAKKyAgICAgICAgLy8gKFRoZSBkZWZhdWx0IG9wdGlvbiBpcyB0byBleGNsdWRlIHRoZW0uKQorICAgICAgICAvLyBVbmljb2RlIDMuMiBoYXMgJ1QnIG1hcHBpbmdzIGFzIGZvbGxvd3M6CisgICAgICAgIC8vIDAwNDk7IFQ7IDAxMzE7ICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQorICAgICAgICAvLyAwMTMwOyBUOyAwMDY5OyAjIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBET1QgQUJPVkUKKyAgICAgICAgLy8gd2hpbGUgdGhlIGRlZmF1bHQgbWFwcGluZ3MgZm9yIHRoZXNlIGNvZGUgcG9pbnRzIGFyZToKKyAgICAgICAgLy8gMDA0OTsgQzsgMDA2OTsgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCisgICAgICAgIC8vIDAxMzA7IEY7IDAwNjkgMDMwNzsgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggRE9UIEFCT1ZFCisgICAgICAgIC8vIFUrMDEzMCBpcyBvdGhlcndpc2UgbG93ZXJjYXNlZCB0byBVKzAwNjkgKFVuaWNvZGVEYXRhLnR4dCkuCisgICAgICAgIC8vIEluIGNhc2UgdGhpcyBjb2RlIGlzIHVzZWQgd2l0aCBDYXNlRm9sZGluZy50eHQgZnJvbSBhbiBvbGRlciB2ZXJzaW9uIAorICAgICAgICAvLyBvZiBVbmljb2RlIHdoZXJlIENhc2VGb2xkaW5nLnR4dCBjb250YWlucyBtYXBwaW5ncyB3aXRoIGEgc3RhdHVzIG9mIAorICAgICAgICAvLyAnSScgdGhhdCBoYXZlIHRoZSBvcHBvc2l0ZSBwb2xhcml0eSAoJ0knIG1hcHBpbmdzIGFyZSBpbmNsdWRlZCBieSAKKyAgICAgICAgLy8gZGVmYXVsdCBidXQgZXhjbHVkZWQgZm9yIFR1cmtpYyksIHdlIG11c3QgYWxzbyBoYXJkY29kZSB0aGUgVW5pY29kZSAKKyAgICAgICAgLy8gMy4yIG1hcHBpbmdzIGZvciB0aGUgY29kZSBwb2ludHMgd2l0aCAnSScgbWFwcGluZ3MuIAorICAgICAgICAvLyBVbmljb2RlIDMuMS4xIGhhcyAnSScgbWFwcGluZ3MgZm9yIFUrMDEzMCBhbmQgVSswMTMxLgorICAgICAgICAvLyBVbmljb2RlIDMuMiBoYXMgYSAnVCcgbWFwcGluZyBmb3IgVSswMTMwLCBhbmQgbG93ZXJjYXNlcyBVKzAxMzEgdG8gCisgICAgICAgIC8vIGl0c2VsZiAoc2VlIFVuaWNvZGVEYXRhLnR4dCkuCisgICAgICAgIC8vIHdoZW4gY2ggaXMgb3V0IG9mIGJvdW5kcyBnZXRQcm9wZXJ0eSA9PSAwCisgICAgICAgIGludCBwcm9wcyA9IFBST1BFUlRZXy5nZXRQcm9wZXJ0eShjaCk7CisgICAgICAgIGlmIChpc05vdEV4Y2VwdGlvbkluZGljYXRvcihwcm9wcykpIHsKKyAgICAgICAgICAgIGludCB0eXBlID0gVUNoYXJhY3RlclByb3BlcnR5LlRZUEVfTUFTSyAmIHByb3BzOworICAgICAgICAgICAgaWYgKHR5cGUgPT0gVUNoYXJhY3RlckNhdGVnb3J5LlVQUEVSQ0FTRV9MRVRURVIgfHwKKyAgICAgICAgICAgICAgICB0eXBlID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5USVRMRUNBU0VfTEVUVEVSKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNoICsgVUNoYXJhY3RlclByb3BlcnR5LmdldFNpZ25lZFZhbHVlKHByb3BzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSAKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpbnQgaW5kZXggPSBVQ2hhcmFjdGVyUHJvcGVydHkuZ2V0RXhjZXB0aW9uSW5kZXgocHJvcHMpOworICAgICAgICAgICAgaWYgKFBST1BFUlRZXy5oYXNFeGNlcHRpb25WYWx1ZShpbmRleCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXJQcm9wZXJ0eS5FWENfQ0FTRV9GT0xESU5HXykpIHsKKyAgICAgICAgICAgICAgICBpbnQgZXhjZXB0aW9uID0gUFJPUEVSVFlfLmdldEV4Y2VwdGlvbihpbmRleCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXJQcm9wZXJ0eS5FWENfQ0FTRV9GT0xESU5HXyk7CisgICAgICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbiAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGludCBmb2xkZWRjYXNlY2ggPSAKKyAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QRVJUWV8uZ2V0Rm9sZENhc2UoZXhjZXB0aW9uICYgTEFTVF9DSEFSX01BU0tfKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZvbGRlZGNhc2VjaCAhPSAwKXsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmb2xkZWRjYXNlY2g7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIHNwZWNpYWwgY2FzZSBmb2xkaW5nIG1hcHBpbmdzLCBoYXJkY29kZWQKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRlZmF1bHRtYXBwaW5nKSB7IAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVmYXVsdCBtYXBwaW5ncworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoID09IDB4NDkgfHwgY2ggPT0gMHgxMzApIHsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMDA0OTsgQzsgMDA2OTsgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBJICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm8gc2ltcGxlIGRlZmF1bHQgbWFwcGluZyBmb3IgVSswMTMwLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2UgVW5pY29kZURhdGEudHh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFVDaGFyYWN0ZXJQcm9wZXJ0eS5MQVRJTl9TTUFMTF9MRVRURVJfSV87CisgICAgICAgICAgICAgICAgICAgICAgICB9IAorICAgICAgICAgICAgICAgICAgICB9IAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFR1cmtpYyBtYXBwaW5ncyAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaCA9PSAweDQ5KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMDA0OTsgVDsgMDEzMTsgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDB4MTMxOworICAgICAgICAgICAgICAgICAgICAgICAgfSAKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoID09IDB4MTMwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMDEzMDsgVDsgMDA2OTsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggRE9UIEFCT1ZFCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDB4Njk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJuIGNoIGl0c2VsZiBiZWNhdXNlIGl0IGlzIGV4Y2x1ZGVkIGZyb20gY2FzZSBmb2xkaW5nCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjaDsKKyAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKFBST1BFUlRZXy5oYXNFeGNlcHRpb25WYWx1ZShpbmRleCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyUHJvcGVydHkuRVhDX0xPV0VSQ0FTRV8pKSB7ICAKKyAgICAgICAgICAgICAgICAvLyBub3QgZWxzZSEgLSBhbGxvdyB0byBmYWxsIHRocm91Z2ggZnJvbSBhYm92ZQorICAgICAgICAgICAgICAgIHJldHVybiBQUk9QRVJUWV8uZ2V0RXhjZXB0aW9uKGluZGV4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3RlclByb3BlcnR5LkVYQ19MT1dFUkNBU0VfKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIHJldHVybiBjaDsgLy8gbm8gbWFwcGluZyAtIHJldHVybiB0aGUgY2hhcmFjdGVyIGl0c2VsZgorICAgIH0KKworICAgIC8qKgorICAgICAqIFRoZSBnaXZlbiBzdHJpbmcgaXMgbWFwcGVkIHRvIGl0cyBjYXNlIGZvbGRpbmcgZXF1aXZhbGVudCBhY2NvcmRpbmcgdG8KKyAgICAgKiBVbmljb2RlRGF0YS50eHQgYW5kIENhc2VGb2xkaW5nLnR4dDsgaWYgYW55IGNoYXJhY3RlciBoYXMgbm8gY2FzZSAKKyAgICAgKiBmb2xkaW5nIGVxdWl2YWxlbnQsIHRoZSBjaGFyYWN0ZXIgaXRzZWxmIGlzIHJldHVybmVkLgorICAgICAqICJGdWxsIiwgbXVsdGlwbGUtY29kZSBwb2ludCBjYXNlIGZvbGRpbmcgbWFwcGluZ3MgYXJlIHJldHVybmVkIGhlcmUuCisgICAgICogRm9yICJzaW1wbGUiIHNpbmdsZS1jb2RlIHBvaW50IG1hcHBpbmdzIHVzZSB0aGUgQVBJIAorICAgICAqIGZvbGRDYXNlKGludCBjaCwgYm9vbGVhbiBkZWZhdWx0bWFwcGluZykuCisgICAgICogQHBhcmFtIHN0ciAgICAgICAgICAgIHRoZSBTdHJpbmcgdG8gYmUgY29udmVydGVkCisgICAgICogQHBhcmFtIGRlZmF1bHRtYXBwaW5nIEluZGljYXRlcyBpZiBhbGwgbWFwcGluZ3MgZGVmaW5lZCBpbiAKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgQ2FzZUZvbGRpbmcudHh0IGlzIHRvIGJlIHVzZWQsIG90aGVyd2lzZSB0aGUgCisgICAgICogICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmdzIGZvciBkb3R0ZWQgSSBhbmQgZG90bGVzcyBpIG1hcmtlZCB3aXRoIAorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAnSScgaW4gQ2FzZUZvbGRpbmcudHh0IHdpbGwgYmUgc2tpcHBlZC4KKyAgICAgKiBAcmV0dXJuICAgICAgICAgICAgICAgdGhlIGNhc2UgZm9sZGluZyBlcXVpdmFsZW50IG9mIHRoZSBjaGFyYWN0ZXIsIGlmIAorICAgICAqICAgICAgICAgICAgICAgICAgICAgICBhbnk7IG90aGVyd2lzZSB0aGUgY2hhcmFjdGVyIGl0c2VsZi4KKyAgICAgKiBAc2VlICAgICAgICAgICAgICAgICAgI2ZvbGRDYXNlKGludCwgYm9vbGVhbikKKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBmb2xkQ2FzZShTdHJpbmcgc3RyLCBib29sZWFuIGRlZmF1bHRtYXBwaW5nKQorICAgIHsKKyAgICAgICAgaW50ICAgICAgICAgIHNpemUgICA9IHN0ci5sZW5ndGgoKTsKKyAgICAgICAgU3RyaW5nQnVmZmVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWZmZXIoc2l6ZSk7CisgICAgICAgIGludCAgICAgICAgICBvZmZzZXQgID0gMDsKKyAgICAgICAgaW50ICAgICAgICAgIGNoOworCisgICAgICAgIC8vIGNhc2UgbWFwcGluZyBsb29wCisgICAgICAgIHdoaWxlIChvZmZzZXQgPCBzaXplKSB7CisgICAgICAgICAgICBjaCA9IFVURjE2LmNoYXJBdChzdHIsIG9mZnNldCk7CisgICAgICAgICAgICBvZmZzZXQgKz0gVVRGMTYuZ2V0Q2hhckNvdW50KGNoKTsKKyAgICAgICAgICAgIGludCBwcm9wcyA9IFBST1BFUlRZXy5nZXRQcm9wZXJ0eShjaCk7CisgICAgICAgICAgICBpZiAoaXNOb3RFeGNlcHRpb25JbmRpY2F0b3IocHJvcHMpKSB7CisgICAgICAgICAgICAgICAgaW50IHR5cGUgPSBVQ2hhcmFjdGVyUHJvcGVydHkuVFlQRV9NQVNLICYgcHJvcHM7CisgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gVUNoYXJhY3RlckNhdGVnb3J5LlVQUEVSQ0FTRV9MRVRURVIgfHwKKyAgICAgICAgICAgICAgICAgICAgdHlwZSA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuVElUTEVDQVNFX0xFVFRFUikgeworICAgICAgICAgICAgICAgICAgICBjaCArPSBVQ2hhcmFjdGVyUHJvcGVydHkuZ2V0U2lnbmVkVmFsdWUocHJvcHMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gIAorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaW50IGluZGV4ID0gVUNoYXJhY3RlclByb3BlcnR5LmdldEV4Y2VwdGlvbkluZGV4KHByb3BzKTsKKyAgICAgICAgICAgICAgICBpZiAoUFJPUEVSVFlfLmhhc0V4Y2VwdGlvblZhbHVlKGluZGV4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXJQcm9wZXJ0eS5FWENfQ0FTRV9GT0xESU5HXykpIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IGV4Y2VwdGlvbiA9IFBST1BFUlRZXy5nZXRFeGNlcHRpb24oaW5kZXgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyUHJvcGVydHkuRVhDX0NBU0VfRk9MRElOR18pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmIChleGNlcHRpb24gIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgUFJPUEVSVFlfLmdldEZvbGRDYXNlKGV4Y2VwdGlvbiAmIExBU1RfQ0hBUl9NQVNLXywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb24gPj4gU0hJRlRfMjRfLCByZXN1bHQpOworICAgICAgICAgICAgICAgICAgICB9IAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNwZWNpYWwgY2FzZSBmb2xkaW5nIG1hcHBpbmdzLCBoYXJkY29kZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaCAhPSAweDQ5ICYmIGNoICE9IDB4MTMwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJuIGNoIGl0c2VsZiBiZWNhdXNlIHRoZXJlIGlzIG5vIHNwZWNpYWwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWFwcGluZyBmb3IgaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVVEYxNi5hcHBlbmQocmVzdWx0LCBjaCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVmYXVsdG1hcHBpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZWZhdWx0IG1hcHBpbmdzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoID09IDB4NDkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMDA0OTsgQzsgMDA2OTsgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyUHJvcGVydHkuTEFUSU5fU01BTExfTEVUVEVSX0lfKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2ggPT0gMHgxMzApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMDEzMDsgRjsgMDA2OSAwMzA3OyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggRE9UIEFCT1ZFCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyUHJvcGVydHkuTEFUSU5fU01BTExfTEVUVEVSX0lfKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgoY2hhcikweDMwNyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVHVya2ljIG1hcHBpbmdzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoID09IDB4NDkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMDA0OTsgVDsgMDEzMTsgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoKGNoYXIpMHgxMzEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2ggPT0gMHgxMzApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMDEzMDsgVDsgMDA2OTsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERPVCBBQk9WRQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3RlclByb3BlcnR5LkxBVElOX1NNQUxMX0xFVFRFUl9JXyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIC8vIGRvIG5vdCBmYWxsIHRocm91Z2ggdG8gdGhlIG91dHB1dCBvZiBjCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0gCisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChQUk9QRVJUWV8uaGFzRXhjZXB0aW9uVmFsdWUoaW5kZXgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyUHJvcGVydHkuRVhDX0xPV0VSQ0FTRV8pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjaCA9IFBST1BFUlRZXy5nZXRFeGNlcHRpb24oaW5kZXgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3RlclByb3BlcnR5LkVYQ19MT1dFUkNBU0VfKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gaGFuZGxlIDE6MSBjb2RlIHBvaW50IG1hcHBpbmdzIGZyb20gVW5pY29kZURhdGEudHh0CisgICAgICAgICAgICBVVEYxNi5hcHBlbmQocmVzdWx0LCBjaCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJuIG51bWVyaWMgdmFsdWUgb2YgSGFuIGNvZGUgcG9pbnRzLgorICAgICAqIDxicj4gVGhpcyByZXR1cm5zIHRoZSB2YWx1ZSBvZiBIYW4gJ251bWVyaWMnIGNvZGUgcG9pbnRzLAorICAgICAqIGluY2x1ZGluZyB0aG9zZSBmb3IgemVybywgdGVuLCBodW5kcmVkLCB0aG91c2FuZCwgdGVuIHRob3VzYW5kLAorICAgICAqIGFuZCBodW5kcmVkIG1pbGxpb24uICBVbmljb2RlIGRvZXMgbm90IGNvbnNpZGVyIHRoZXNlIHRvIGJlCisgICAgICogbnVtZXJpYy4gVGhpcyBpbmNsdWRlcyBib3RoIHRoZSBzdGFuZGFyZCBhbmQgJ2NoZWNrd3JpdGluZycKKyAgICAgKiBjaGFyYWN0ZXJzLCB0aGUgJ2JpZyBjaXJjbGUnIHplcm8gY2hhcmFjdGVyLCBhbmQgdGhlIHN0YW5kYXJkCisgICAgICogemVybyBjaGFyYWN0ZXIuCisgICAgICogQHBhcmFtIGNoIGNvZGUgcG9pbnQgdG8gcXVlcnkKKyAgICAgKiBAcmV0dXJuIHZhbHVlIGlmIGl0IGlzIGEgSGFuICdudW1lcmljIGNoYXJhY3RlciwnIG90aGVyd2lzZSByZXR1cm4gLTEuICAKKyAgICAgKiBAc3RhYmxlIElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludCBnZXRIYW5OdW1lcmljVmFsdWUoaW50IGNoKQorICAgIHsKKyAgICAgICAgc3dpdGNoKGNoKQorICAgICAgICB7CisgICAgICAgIGNhc2UgSURFT0dSQVBISUNfTlVNQkVSX1pFUk9fIDoKKyAgICAgICAgY2FzZSBDSktfSURFT0dSQVBIX0NPTVBMRVhfWkVST18gOgorICAgICAgICAgICAgcmV0dXJuIDA7IC8vIEhhbiBaZXJvCisgICAgICAgIGNhc2UgQ0pLX0lERU9HUkFQSF9GSVJTVF8gOgorICAgICAgICBjYXNlIENKS19JREVPR1JBUEhfQ09NUExFWF9PTkVfIDoKKyAgICAgICAgICAgIHJldHVybiAxOyAvLyBIYW4gT25lCisgICAgICAgIGNhc2UgQ0pLX0lERU9HUkFQSF9TRUNPTkRfIDoKKyAgICAgICAgY2FzZSBDSktfSURFT0dSQVBIX0NPTVBMRVhfVFdPXyA6CisgICAgICAgICAgICByZXR1cm4gMjsgLy8gSGFuIFR3bworICAgICAgICBjYXNlIENKS19JREVPR1JBUEhfVEhJUkRfIDoKKyAgICAgICAgY2FzZSBDSktfSURFT0dSQVBIX0NPTVBMRVhfVEhSRUVfIDoKKyAgICAgICAgICAgIHJldHVybiAzOyAvLyBIYW4gVGhyZWUKKyAgICAgICAgY2FzZSBDSktfSURFT0dSQVBIX0ZPVVJUSF8gOgorICAgICAgICBjYXNlIENKS19JREVPR1JBUEhfQ09NUExFWF9GT1VSXyA6CisgICAgICAgICAgICByZXR1cm4gNDsgLy8gSGFuIEZvdXIKKyAgICAgICAgY2FzZSBDSktfSURFT0dSQVBIX0ZJRlRIXyA6CisgICAgICAgIGNhc2UgQ0pLX0lERU9HUkFQSF9DT01QTEVYX0ZJVkVfIDoKKyAgICAgICAgICAgIHJldHVybiA1OyAvLyBIYW4gRml2ZQorICAgICAgICBjYXNlIENKS19JREVPR1JBUEhfU0lYVEhfIDoKKyAgICAgICAgY2FzZSBDSktfSURFT0dSQVBIX0NPTVBMRVhfU0lYXyA6CisgICAgICAgICAgICByZXR1cm4gNjsgLy8gSGFuIFNpeAorICAgICAgICBjYXNlIENKS19JREVPR1JBUEhfU0VWRU5USF8gOgorICAgICAgICBjYXNlIENKS19JREVPR1JBUEhfQ09NUExFWF9TRVZFTl8gOgorICAgICAgICAgICAgcmV0dXJuIDc7IC8vIEhhbiBTZXZlbgorICAgICAgICBjYXNlIENKS19JREVPR1JBUEhfRUlHSFRIXyA6IAorICAgICAgICBjYXNlIENKS19JREVPR1JBUEhfQ09NUExFWF9FSUdIVF8gOgorICAgICAgICAgICAgcmV0dXJuIDg7IC8vIEhhbiBFaWdodAorICAgICAgICBjYXNlIENKS19JREVPR1JBUEhfTklORVRIXyA6CisgICAgICAgIGNhc2UgQ0pLX0lERU9HUkFQSF9DT01QTEVYX05JTkVfIDoKKyAgICAgICAgICAgIHJldHVybiA5OyAvLyBIYW4gTmluZQorICAgICAgICBjYXNlIENKS19JREVPR1JBUEhfVEVOXyA6CisgICAgICAgIGNhc2UgQ0pLX0lERU9HUkFQSF9DT01QTEVYX1RFTl8gOgorICAgICAgICAgICAgcmV0dXJuIDEwOworICAgICAgICBjYXNlIENKS19JREVPR1JBUEhfSFVORFJFRF8gOgorICAgICAgICBjYXNlIENKS19JREVPR1JBUEhfQ09NUExFWF9IVU5EUkVEXyA6CisgICAgICAgICAgICByZXR1cm4gMTAwOworICAgICAgICBjYXNlIENKS19JREVPR1JBUEhfVEhPVVNBTkRfIDoKKyAgICAgICAgY2FzZSBDSktfSURFT0dSQVBIX0NPTVBMRVhfVEhPVVNBTkRfIDoKKyAgICAgICAgICAgIHJldHVybiAxMDAwOworICAgICAgICBjYXNlIENKS19JREVPR1JBUEhfVEVOX1RIT1VTQU5EXyA6CisgICAgICAgICAgICByZXR1cm4gMTAwMDA7CisgICAgICAgIGNhc2UgQ0pLX0lERU9HUkFQSF9IVU5EUkVEX01JTExJT05fIDoKKyAgICAgICAgICAgIHJldHVybiAxMDAwMDAwMDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC0xOyAvLyBubyB2YWx1ZQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiA8cD5HZXRzIGFuIGl0ZXJhdG9yIGZvciBjaGFyYWN0ZXIgdHlwZXMsIGl0ZXJhdGluZyBvdmVyIGNvZGVwb2ludHMuPC9wPgorICAgICAqIEV4YW1wbGUgb2YgdXNlOjxicj4KKyAgICAgKiA8cHJlPgorICAgICAqIFJhbmdlVmFsdWVJdGVyYXRvciBpdGVyYXRvciA9IFVDaGFyYWN0ZXIuZ2V0VHlwZUl0ZXJhdG9yKCk7CisgICAgICogUmFuZ2VWYWx1ZUl0ZXJhdG9yLkVsZW1lbnQgZWxlbWVudCA9IG5ldyBSYW5nZVZhbHVlSXRlcmF0b3IuRWxlbWVudCgpOworICAgICAqIHdoaWxlIChpdGVyYXRvci5uZXh0KGVsZW1lbnQpKSB7CisgICAgICogICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQ29kZXBvaW50IFxcdSIgKyAKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIEludGVnZXIudG9IZXhTdHJpbmcoZWxlbWVudC5zdGFydCkgKyAKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICIgdG8gY29kZXBvaW50IFxcdSIgKworICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgSW50ZWdlci50b0hleFN0cmluZyhlbGVtZW50LmxpbWl0IC0gMSkgKyAKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICIgaGFzIHRoZSBjaGFyYWN0ZXIgdHlwZSAiICsgCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnZhbHVlKTsKKyAgICAgKiB9CisgICAgICogPC9wcmU+CisgICAgICogQHJldHVybiBhbiBpdGVyYXRvciAKKyAgICAgKiBAZHJhZnQgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgUmFuZ2VWYWx1ZUl0ZXJhdG9yIGdldFR5cGVJdGVyYXRvcigpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFVDaGFyYWN0ZXJUeXBlSXRlcmF0b3IoUFJPUEVSVFlfKTsKKyAgICB9CisKKwkvKioKKyAgICAgKiA8cD5HZXRzIGFuIGl0ZXJhdG9yIGZvciBjaGFyYWN0ZXIgbmFtZXMsIGl0ZXJhdGluZyBvdmVyIGNvZGVwb2ludHMuPC9wPgorICAgICAqIDxwPlRoaXMgQVBJIG9ubHkgZ2V0cyB0aGUgaXRlcmF0b3IgZm9yIHRoZSBtb2Rlcm4sIG1vc3QgdXAtdG8tZGF0ZSAKKyAgICAgKiBVbmljb2RlIG5hbWVzLiBGb3Igb2xkZXIgMS4wIFVuaWNvZGUgbmFtZXMgdXNlIGdldDFfME5hbWVJdGVyYXRvcigpIG9yCisgICAgICogZm9yIGV4dGVuZGVkIG5hbWVzIHVzZSBnZXRFeHRlbmRlZE5hbWVJdGVyYXRvcigpLjwvcD4KKyAgICAgKiBFeGFtcGxlIG9mIHVzZTo8YnI+CisgICAgICogPHByZT4KKyAgICAgKiBWYWx1ZUl0ZXJhdG9yIGl0ZXJhdG9yID0gVUNoYXJhY3Rlci5nZXROYW1lSXRlcmF0b3IoKTsKKyAgICAgKiBWYWx1ZUl0ZXJhdG9yLkVsZW1lbnQgZWxlbWVudCA9IG5ldyBWYWx1ZUl0ZXJhdG9yLkVsZW1lbnQoKTsKKyAgICAgKiB3aGlsZSAoaXRlcmF0b3IubmV4dChlbGVtZW50KSkgeworICAgICAqICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkNvZGVwb2ludCBcXHUiICsgCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICBJbnRlZ2VyLnRvSGV4U3RyaW5nKGVsZW1lbnQuY29kZXBvaW50KSArCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAiIGhhcyB0aGUgbmFtZSAiICsgKFN0cmluZyllbGVtZW50LnZhbHVlKTsKKyAgICAgKiB9CisgICAgICogPC9wcmU+CisgICAgICogPHA+VGhlIG1heGltYWwgcmFuZ2Ugd2hpY2ggdGhlIG5hbWUgaXRlcmF0b3IgaXRlcmF0ZXMgaXMgZnJvbSAKKyAgICAgKiBVQ2hhcmFjdGVyLk1JTl9WQUxVRSB0byBVQ2hhcmFjdGVyLk1BWF9WQUxVRS48L3A+CisgICAgICogQHJldHVybiBhbiBpdGVyYXRvciAKKyAgICAgKiBAZHJhZnQgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgVmFsdWVJdGVyYXRvciBnZXROYW1lSXRlcmF0b3IoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBVQ2hhcmFjdGVyTmFtZUl0ZXJhdG9yKE5BTUVfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyTmFtZUNob2ljZS5VTklDT0RFX0NIQVJfTkFNRSk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIDxwPkdldHMgYW4gaXRlcmF0b3IgZm9yIGNoYXJhY3RlciBuYW1lcywgaXRlcmF0aW5nIG92ZXIgY29kZXBvaW50cy48L3A+CisgICAgICogPHA+VGhpcyBBUEkgb25seSBnZXRzIHRoZSBpdGVyYXRvciBmb3IgdGhlIG9sZGVyIDEuMCBVbmljb2RlIG5hbWVzLiAKKyAgICAgKiBGb3IgbW9kZXJuLCBtb3N0IHVwLXRvLWRhdGUgVW5pY29kZSBuYW1lcyB1c2UgZ2V0TmFtZUl0ZXJhdG9yKCkgb3IKKyAgICAgKiBmb3IgZXh0ZW5kZWQgbmFtZXMgdXNlIGdldEV4dGVuZGVkTmFtZUl0ZXJhdG9yKCkuPC9wPgorICAgICAqIEV4YW1wbGUgb2YgdXNlOjxicj4KKyAgICAgKiA8cHJlPgorICAgICAqIFZhbHVlSXRlcmF0b3IgaXRlcmF0b3IgPSBVQ2hhcmFjdGVyLmdldDFfME5hbWVJdGVyYXRvcigpOworICAgICAqIFZhbHVlSXRlcmF0b3IuRWxlbWVudCBlbGVtZW50ID0gbmV3IFZhbHVlSXRlcmF0b3IuRWxlbWVudCgpOworICAgICAqIHdoaWxlIChpdGVyYXRvci5uZXh0KGVsZW1lbnQpKSB7CisgICAgICogICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQ29kZXBvaW50IFxcdSIgKyAKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIEludGVnZXIudG9IZXhTdHJpbmcoZWxlbWVudC5jb2RlcG9pbnQpICsKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICIgaGFzIHRoZSBuYW1lICIgKyAoU3RyaW5nKWVsZW1lbnQudmFsdWUpOworICAgICAqIH0KKyAgICAgKiA8L3ByZT4KKyAgICAgKiA8cD5UaGUgbWF4aW1hbCByYW5nZSB3aGljaCB0aGUgbmFtZSBpdGVyYXRvciBpdGVyYXRlcyBpcyBmcm9tIAorICAgICAqIEByZXR1cm4gYW4gaXRlcmF0b3IgCisgICAgICogQGRyYWZ0IElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFZhbHVlSXRlcmF0b3IgZ2V0TmFtZTFfMEl0ZXJhdG9yKCkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgVUNoYXJhY3Rlck5hbWVJdGVyYXRvcihOQU1FXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXJOYW1lQ2hvaWNlLlVOSUNPREVfMTBfQ0hBUl9OQU1FKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogPHA+R2V0cyBhbiBpdGVyYXRvciBmb3IgY2hhcmFjdGVyIG5hbWVzLCBpdGVyYXRpbmcgb3ZlciBjb2RlcG9pbnRzLjwvcD4KKyAgICAgKiA8cD5UaGlzIEFQSSBvbmx5IGdldHMgdGhlIGl0ZXJhdG9yIGZvciB0aGUgZXh0ZW5kZWQgbmFtZXMuIAorICAgICAqIEZvciBtb2Rlcm4sIG1vc3QgdXAtdG8tZGF0ZSBVbmljb2RlIG5hbWVzIHVzZSBnZXROYW1lSXRlcmF0b3IoKSBvcgorICAgICAqIGZvciBvbGRlciAxLjAgVW5pY29kZSBuYW1lcyB1c2UgZ2V0MV8wTmFtZUl0ZXJhdG9yKCkuPC9wPgorICAgICAqIEV4YW1wbGUgb2YgdXNlOjxicj4KKyAgICAgKiA8cHJlPgorICAgICAqIFZhbHVlSXRlcmF0b3IgaXRlcmF0b3IgPSBVQ2hhcmFjdGVyLmdldEV4dGVuZGVkTmFtZUl0ZXJhdG9yKCk7CisgICAgICogVmFsdWVJdGVyYXRvci5FbGVtZW50IGVsZW1lbnQgPSBuZXcgVmFsdWVJdGVyYXRvci5FbGVtZW50KCk7CisgICAgICogd2hpbGUgKGl0ZXJhdG9yLm5leHQoZWxlbWVudCkpIHsKKyAgICAgKiAgICAgU3lzdGVtLm91dC5wcmludGxuKCJDb2RlcG9pbnQgXFx1IiArIAorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgSW50ZWdlci50b0hleFN0cmluZyhlbGVtZW50LmNvZGVwb2ludCkgKworICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgIiBoYXMgdGhlIG5hbWUgIiArIChTdHJpbmcpZWxlbWVudC52YWx1ZSk7CisgICAgICogfQorICAgICAqIDwvcHJlPgorICAgICAqIDxwPlRoZSBtYXhpbWFsIHJhbmdlIHdoaWNoIHRoZSBuYW1lIGl0ZXJhdG9yIGl0ZXJhdGVzIGlzIGZyb20gCisgICAgICogQHJldHVybiBhbiBpdGVyYXRvciAKKyAgICAgKiBAZHJhZnQgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgVmFsdWVJdGVyYXRvciBnZXRFeHRlbmRlZE5hbWVJdGVyYXRvcigpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFVDaGFyYWN0ZXJOYW1lSXRlcmF0b3IoTkFNRV8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyTmFtZUNob2ljZS5FWFRFTkRFRF9DSEFSX05BTUUpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiA8cD5HZXQgdGhlICJhZ2UiIG9mIHRoZSBjb2RlIHBvaW50LjwvcD4KKyAgICAgKiA8cD5UaGUgImFnZSIgaXMgdGhlIFVuaWNvZGUgdmVyc2lvbiB3aGVuIHRoZSBjb2RlIHBvaW50IHdhcyBmaXJzdAorICAgICAqIGRlc2lnbmF0ZWQgKGFzIGEgbm9uLWNoYXJhY3RlciBvciBmb3IgUHJpdmF0ZSBVc2UpIG9yIGFzc2lnbmVkIGEgCisgICAgICogY2hhcmFjdGVyLgorICAgICAqIDxwPlRoaXMgY2FuIGJlIHVzZWZ1bCB0byBhdm9pZCBlbWl0dGluZyBjb2RlIHBvaW50cyB0byByZWNlaXZpbmcgCisgICAgICogcHJvY2Vzc2VzIHRoYXQgZG8gbm90IGFjY2VwdCBuZXdlciBjaGFyYWN0ZXJzLjwvcD4KKyAgICAgKiA8cD5UaGUgZGF0YSBpcyBmcm9tIHRoZSBVQ0QgZmlsZSBEZXJpdmVkQWdlLnR4dC48L3A+CisgICAgICogQHBhcmFtIGNoIFRoZSBjb2RlIHBvaW50LgorICAgICAqIEByZXR1cm4gdGhlIFVuaWNvZGUgdmVyc2lvbiBudW1iZXIKKyAgICAgKiBAZHJhZnQgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgVmVyc2lvbkluZm8gZ2V0QWdlKGludCBjaCkgCisgICAgeworICAgIAlpZiAoY2ggPCBNSU5fVkFMVUUgfHwgY2ggPiBNQVhfVkFMVUUpIHsKKyAgICAJCXRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkNvZGVwb2ludCBvdXQgb2YgYm91bmRzIik7CisgICAgCX0KKyAgICAJcmV0dXJuIFBST1BFUlRZXy5nZXRBZ2UoY2gpOworICAgIH0KKyAgICAKKyAgICAvKioKKwkgKiA8cD5DaGVjayBhIGJpbmFyeSBVbmljb2RlIHByb3BlcnR5IGZvciBhIGNvZGUgcG9pbnQuPC9wPiAKKwkgKiA8cD5Vbmljb2RlLCBlc3BlY2lhbGx5IGluIHZlcnNpb24gMy4yLCBkZWZpbmVzIG1hbnkgbW9yZSBwcm9wZXJ0aWVzIAorCSAqIHRoYW4gdGhlIG9yaWdpbmFsIHNldCBpbiBVbmljb2RlRGF0YS50eHQuPC9wPgorCSAqIDxwPlRoaXMgQVBJIGlzIGludGVuZGVkIHRvIHJlZmxlY3QgVW5pY29kZSBwcm9wZXJ0aWVzIGFzIGRlZmluZWQgaW4gCisJICogdGhlIFVuaWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNlIChVQ0QpIGFuZCBVbmljb2RlIFRlY2huaWNhbCBSZXBvcnRzIAorCSAqIChVVFIpLjwvcD4KKwkgKiA8cD5Gb3IgZGV0YWlscyBhYm91dCB0aGUgcHJvcGVydGllcyBzZWUgCisJICogPGEgaHJlZj1odHRwOi8vd3d3LnVuaWNvZGUub3JnLz5odHRwOi8vd3d3LnVuaWNvZGUub3JnLzwvYT4uPC9wPgorCSAqIDxwPkZvciBuYW1lcyBvZiBVbmljb2RlIHByb3BlcnRpZXMgc2VlIHRoZSBVQ0QgZmlsZSAKKwkgKiBQcm9wZXJ0eUFsaWFzZXMudHh0LjwvcD4KKwkgKiA8cD5UaGlzIEFQSSBkb2VzIG5vdCBjaGVjayB0aGUgdmFsaWRpdHkgb2YgdGhlIGNvZGVwb2ludC48L3A+CisJICogPHA+SW1wb3J0YW50OiBJZiBJQ1UgaXMgYnVpbHQgd2l0aCBVQ0QgZmlsZXMgZnJvbSBVbmljb2RlIHZlcnNpb25zIAorCSAqIGJlbG93IDMuMiwgdGhlbiBwcm9wZXJ0aWVzIG1hcmtlZCB3aXRoICJuZXciIGFyZSBub3Qgb3IgCisJICogbm90IGZ1bGx5IGF2YWlsYWJsZS48L3A+CisJICogQHBhcmFtIGNvZGVwb2ludCBDb2RlIHBvaW50IHRvIHRlc3QuCisJICogQHBhcmFtIHByb3BlcnR5IHNlbGVjdG9yIGNvbnN0YW50IGZyb20gY29tLmlibS5pY3UubGFuZy5VUHJvcGVydHksIAorCSAqICAgICAgICBpZGVudGlmaWVzIHdoaWNoIGJpbmFyeSBwcm9wZXJ0eSB0byBjaGVjay4KKwkgKiBAcmV0dXJuIHRydWUgb3IgZmFsc2UgYWNjb3JkaW5nIHRvIHRoZSBiaW5hcnkgVW5pY29kZSBwcm9wZXJ0eSB2YWx1ZSAKKwkgKiAgICAgICAgIGZvciBjaC4gQWxzbyBmYWxzZSBpZiBwcm9wZXJ0eSBpcyBvdXQgb2YgYm91bmRzIG9yIGlmIHRoZSAKKwkgKiAgICAgICAgIFVuaWNvZGUgdmVyc2lvbiBkb2VzIG5vdCBoYXZlIGRhdGEgZm9yIHRoZSBwcm9wZXJ0eSBhdCBhbGwsIG9yIAorCSAqICAgICAgICAgbm90IGZvciB0aGlzIGNvZGUgcG9pbnQuCisJICogQHNlZSBjb20uaWJtLmljdS5sYW5nLlVQcm9wZXJ0eQorCSAqIEBkcmFmdCBJQ1UgMi4xCisJICovCisJcHVibGljIHN0YXRpYyBib29sZWFuIGhhc0JpbmFyeVByb3BlcnR5KGludCBjaCwgaW50IHByb3BlcnR5KSAKKwl7CisJCWlmIChjaCA8IE1JTl9WQUxVRSB8fCBjaCA+IE1BWF9WQUxVRSkgeworICAgIAkJdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiQ29kZXBvaW50IG91dCBvZiBib3VuZHMiKTsKKyAgICAJfQorICAgIAlyZXR1cm4gUFJPUEVSVFlfLmhhc0JpbmFyeVByb3BlcnR5KGNoLCBwcm9wZXJ0eSk7CisJfQorCQorCS8qKgorCSAqIDxwPkNoZWNrIGlmIGEgY29kZSBwb2ludCBoYXMgdGhlIEFscGhhYmV0aWMgVW5pY29kZSBwcm9wZXJ0eS48L3A+IAorCSAqIDxwPlNhbWUgYXMgVUNoYXJhY3Rlci5oYXNCaW5hcnlQcm9wZXJ0eShjaCwgVVByb3BlcnR5LkFMUEhBQkVUSUMpLjwvcD4KKwkgKiA8cD5EaWZmZXJlbnQgZnJvbSBVQ2hhcmFjdGVyLmlzTGV0dGVyKGNoKSE8L3A+IAorCSAqIEBkcmFmdCBJQ1UgMi4xCisJICogQHBhcmFtIGNoIGNvZGVwb2ludCB0byBiZSB0ZXN0ZWQKKwkgKi8KKwlwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNVQWxwaGFiZXRpYyhpbnQgY2gpCisJeworCQlyZXR1cm4gaGFzQmluYXJ5UHJvcGVydHkoY2gsIFVQcm9wZXJ0eS5BTFBIQUJFVElDKTsKKwl9CisKKwkvKioKKwkgKiA8cD5DaGVjayBpZiBhIGNvZGUgcG9pbnQgaGFzIHRoZSBMb3dlcmNhc2UgVW5pY29kZSBwcm9wZXJ0eS48L3A+CisJICogPHA+U2FtZSBhcyBVQ2hhcmFjdGVyLmhhc0JpbmFyeVByb3BlcnR5KGNoLCBVUHJvcGVydHkuTE9XRVJDQVNFKS48L3A+CisJICogPHA+VGhpcyBpcyBkaWZmZXJlbnQgZnJvbSBVQ2hhcmFjdGVyLmlzTG93ZXJDYXNlKGNoKSE8L3A+CisJICogQHBhcmFtIGNoIGNvZGVwb2ludCB0byBiZSB0ZXN0ZWQKKwkgKiBAZHJhZnQgSUNVIDIuMQorCSAqLworCXB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc1VMb3dlcmNhc2UoaW50IGNoKSAKKwl7CisJCXJldHVybiBoYXNCaW5hcnlQcm9wZXJ0eShjaCwgVVByb3BlcnR5LkxPV0VSQ0FTRSk7CisJfQorCisJLyoqCisJICogPHA+Q2hlY2sgaWYgYSBjb2RlIHBvaW50IGhhcyB0aGUgVXBwZXJjYXNlIFVuaWNvZGUgcHJvcGVydHkuPC9wPgorCSAqIDxwPlNhbWUgYXMgVUNoYXJhY3Rlci5oYXNCaW5hcnlQcm9wZXJ0eShjaCwgVVByb3BlcnR5LlVQUEVSQ0FTRSkuPC9wPgorCSAqIDxwPlRoaXMgaXMgZGlmZmVyZW50IGZyb20gVUNoYXJhY3Rlci5pc1VwcGVyQ2FzZShjaCkhPC9wPgorCSAqIEBwYXJhbSBjaCBjb2RlcG9pbnQgdG8gYmUgdGVzdGVkCisJICogQGRyYWZ0IElDVSAyLjEKKwkgKi8KKwlwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNVVXBwZXJjYXNlKGludCBjaCkgCisJeworCQlyZXR1cm4gaGFzQmluYXJ5UHJvcGVydHkoY2gsIFVQcm9wZXJ0eS5VUFBFUkNBU0UpOworCX0KKworCS8qKgorCSAqIDxwPkNoZWNrIGlmIGEgY29kZSBwb2ludCBoYXMgdGhlIFdoaXRlX1NwYWNlIFVuaWNvZGUgcHJvcGVydHkuPC9wPgorCSAqIDxwPlNhbWUgYXMgVUNoYXJhY3Rlci5oYXNCaW5hcnlQcm9wZXJ0eShjaCwgVVByb3BlcnR5LldISVRFX1NQQUNFKS48L3A+CisJICogPHA+VGhpcyBpcyBkaWZmZXJlbnQgZnJvbSBib3RoIFVDaGFyYWN0ZXIuaXNTcGFjZShjaCkgYW5kIAorCSAqIFVDaGFyYWN0ZXIuaXNXaGl0ZXNwYWNlKGNoKSE8L3A+CisJICogQHBhcmFtIGNoIGNvZGVwb2ludCB0byBiZSB0ZXN0ZWQKKwkgKiBAZHJhZnQgSUNVIDIuMQorCSAqLworCXB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc1VXaGl0ZVNwYWNlKGludCBjaCkgCisJeworCQlyZXR1cm4gaGFzQmluYXJ5UHJvcGVydHkoY2gsIFVQcm9wZXJ0eS5XSElURV9TUEFDRSk7CisJfQorICAgIAorICAgIC8qKgorICAgICAqIDxwPkdldHMgdGhlIHByb3BlcnR5IHZhbHVlIGZvciBhbiBVbmljb2RlIHByb3BlcnR5IHR5cGUgb2YgYSBjb2RlIHBvaW50LiAKKyAgICAgKiBBbHNvIHJldHVybnMgYmluYXJ5IGFuZCBtYXNrIHByb3BlcnR5IHZhbHVlcy48L3A+CisgICAgICogPHA+VW5pY29kZSwgZXNwZWNpYWxseSBpbiB2ZXJzaW9uIDMuMiwgZGVmaW5lcyBtYW55IG1vcmUgcHJvcGVydGllcyB0aGFuIAorICAgICAqIHRoZSBvcmlnaW5hbCBzZXQgaW4gVW5pY29kZURhdGEudHh0LjwvcD4KKyAgICAgKiA8cD5UaGUgcHJvcGVydGllcyBBUElzIGFyZSBpbnRlbmRlZCB0byByZWZsZWN0IFVuaWNvZGUgcHJvcGVydGllcyBhcyAKKyAgICAgKiBkZWZpbmVkIGluIHRoZSBVbmljb2RlIENoYXJhY3RlciBEYXRhYmFzZSAoVUNEKSBhbmQgVW5pY29kZSBUZWNobmljYWwgCisgICAgICogUmVwb3J0cyAoVVRSKS4gRm9yIGRldGFpbHMgYWJvdXQgdGhlIHByb3BlcnRpZXMgc2VlIAorICAgICAqIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvLjwvcD4KKyAgICAgKiA8cD5Gb3IgbmFtZXMgb2YgVW5pY29kZSBwcm9wZXJ0aWVzIHNlZSB0aGUgVUNEIGZpbGUgUHJvcGVydHlBbGlhc2VzLnR4dC4KKyAgICAgKiA8L3A+CisgICAgICogPHByZT4KKyAgICAgKiBTYW1wbGUgdXNhZ2U6CisgICAgICogaW50IGVhID0gVUNoYXJhY3Rlci5nZXRJbnRQcm9wZXJ0eVZhbHVlKGMsIFVQcm9wZXJ0eS5FQVNUX0FTSUFOX1dJRFRIKTsKKyAgICAgKiBpbnQgaWRlbyA9IFVDaGFyYWN0ZXIuZ2V0SW50UHJvcGVydHlWYWx1ZShjLCBVUHJvcGVydHkuSURFT0dSQVBISUMpOworICAgICAqIGJvb2xlYW4gYiA9IChpZGVvID09IDEpID8gdHJ1ZSA6IGZhbHNlOyAKKyAgICAgKiA8L3ByZT4KKyAgICAgKiBAcGFyYW0gY2ggY29kZSBwb2ludCB0byB0ZXN0LgorICAgICAqIEBwYXJhbSB0eXBlIFVQcm9wZXJ0eSBzZWxlY3RvciBjb25zdGFudCwgaWRlbnRpZmllcyB3aGljaCBiaW5hcnkgCisgICAgICogICAgICAgIHByb3BlcnR5IHRvIGNoZWNrLiBNdXN0IGJlIAorICAgICAqICAgICAgICBVUHJvcGVydHkuQklOQVJZX1NUQVJUICZsdDs9IHR5cGUgJmx0OyBVUHJvcGVydHkuQklOQVJZX0xJTUlUIG9yIAorICAgICAqICAgICAgICBVUHJvcGVydHkuSU5UX1NUQVJUICZsdDs9IHR5cGUgJmx0OyBVUHJvcGVydHkuSU5UX0xJTUlUIG9yIAorICAgICAqICAgICAgICBVUHJvcGVydHkuTUFTS19TVEFSVCAmbHQ7PSB0eXBlICZsdDsgVVByb3BlcnR5Lk1BU0tfTElNSVQuCisgICAgICogQHJldHVybiBudW1lcmljIHZhbHVlIHRoYXQgaXMgZGlyZWN0bHkgdGhlIHByb3BlcnR5IHZhbHVlIG9yLAorICAgICAqICAgICAgICAgZm9yIGVudW1lcmF0ZWQgcHJvcGVydGllcywgY29ycmVzcG9uZHMgdG8gdGhlIG51bWVyaWMgdmFsdWUgb2YgCisgICAgICogICAgICAgICB0aGUgZW51bWVyYXRlZCBjb25zdGFudCBvZiB0aGUgcmVzcGVjdGl2ZSBwcm9wZXJ0eSB2YWx1ZSAKKyAgICAgKiAgICAgICAgIGVudW1lcmF0aW9uIHR5cGUgKGNhc3QgdG8gZW51bSB0eXBlIGlmIG5lY2Vzc2FyeSkuCisgICAgICogICAgICAgICBSZXR1cm5zIDAgb3IgMSAoZm9yIGZhbHNlIC8gdHJ1ZSkgZm9yIGJpbmFyeSBVbmljb2RlIHByb3BlcnRpZXMuCisgICAgICogICAgICAgICBSZXR1cm5zIGEgYml0LW1hc2sgZm9yIG1hc2sgcHJvcGVydGllcy4KKyAgICAgKiAgICAgICAgIFJldHVybnMgMCBpZiAndHlwZScgaXMgb3V0IG9mIGJvdW5kcyBvciBpZiB0aGUgVW5pY29kZSB2ZXJzaW9uCisgICAgICogICAgICAgICBkb2VzIG5vdCBoYXZlIGRhdGEgZm9yIHRoZSBwcm9wZXJ0eSBhdCBhbGwsIG9yIG5vdCBmb3IgdGhpcyBjb2RlIAorICAgICAqICAgICAgICAgcG9pbnQuCisgICAgICogQHNlZSBVUHJvcGVydHkKKyAgICAgKiBAc2VlICNoYXNCaW5hcnlQcm9wZXJ0eQorICAgICAqIEBzZWUgI2dldEludFByb3BlcnR5TWluVmFsdWUKKyAgICAgKiBAc2VlICNnZXRJbnRQcm9wZXJ0eU1heFZhbHVlCisgICAgICogQHNlZSAjZ2V0VW5pY29kZVZlcnNpb24KKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgaW50IGdldEludFByb3BlcnR5VmFsdWUoaW50IGNoLCBpbnQgdHlwZSkKKyAgICB7CisgICAgICAgIGlmICh0eXBlIDwgVVByb3BlcnR5LkJJTkFSWV9TVEFSVCkgeworICAgICAgICAgICAgcmV0dXJuIDA7IC8vIHVuZGVmaW5lZAorICAgICAgICB9IAorICAgICAgICBlbHNlIGlmICh0eXBlIDwgVVByb3BlcnR5LkJJTkFSWV9MSU1JVCkgeworICAgICAgICAgICAgcmV0dXJuIGhhc0JpbmFyeVByb3BlcnR5KGNoLCB0eXBlKSA/IDEgOiAwOworICAgICAgICB9IAorICAgICAgICBlbHNlIGlmICh0eXBlIDwgVVByb3BlcnR5LklOVF9TVEFSVCkgeworICAgICAgICAgICAgcmV0dXJuIDA7IC8vIHVuZGVmaW5lZAorICAgICAgICB9IAorICAgICAgICBlbHNlIGlmICh0eXBlIDwgVVByb3BlcnR5LklOVF9MSU1JVCkgeworICAgICAgICAgICAgaW50IHJlc3VsdCA9IDA7CisgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgVVByb3BlcnR5LkJJRElfQ0xBU1M6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdldERpcmVjdGlvbihjaCk7CisgICAgICAgICAgICBjYXNlIFVQcm9wZXJ0eS5CTE9DSzoKKyAgICAgICAgICAgICAgICByZXR1cm4gVW5pY29kZUJsb2NrLm9mKGNoKS5nZXRJRCgpOworICAgICAgICAgICAgY2FzZSBVUHJvcGVydHkuQ0FOT05JQ0FMX0NPTUJJTklOR19DTEFTUzoKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2V0Q29tYmluaW5nQ2xhc3MoY2gpOworICAgICAgICAgICAgY2FzZSBVUHJvcGVydHkuREVDT01QT1NJVElPTl9UWVBFOgorICAgICAgICAgICAgICAgIHJldHVybiBQUk9QRVJUWV8uZ2V0QWRkaXRpb25hbChjaCwgMikgCisgICAgICAgICAgICAgICAgICAgICAgICYgREVDT01QT1NJVElPTl9UWVBFX01BU0tfOworICAgICAgICAgICAgY2FzZSBVUHJvcGVydHkuRUFTVF9BU0lBTl9XSURUSDoKKyAgICAgICAgICAgICAgICByZXR1cm4gKFBST1BFUlRZXy5nZXRBZGRpdGlvbmFsKGNoLCAwKQorICAgICAgICAgICAgICAgICAgICAgICAmIEVBU1RfQVNJQU5fTUFTS18pID4+IEVBU1RfQVNJQU5fU0hJRlRfOworICAgICAgICAgICAgY2FzZSBVUHJvcGVydHkuR0VORVJBTF9DQVRFR09SWToKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2V0VHlwZShjaCk7CisgICAgICAgICAgICBjYXNlIFVQcm9wZXJ0eS5KT0lOSU5HX0dST1VQOgorICAgICAgICAgICAgICAgIHJldHVybiAoUFJPUEVSVFlfLmdldEFkZGl0aW9uYWwoY2gsIDIpIAorICAgICAgICAgICAgICAgICAgICAgICAmIEpPSU5JTkdfR1JPVVBfTUFTS18pID4+IEpPSU5JTkdfR1JPVVBfU0hJRlRfOworICAgICAgICAgICAgY2FzZSBVUHJvcGVydHkuSk9JTklOR19UWVBFOgorICAgICAgICAgICAgICAgIC8vIEFyYWJpY1NoYXBpbmcudHh0OgorICAgICAgICAgICAgICAgIC8vIE5vdGU6IENoYXJhY3RlcnMgb2Ygam9pbmluZyB0eXBlIFQgYW5kIG1vc3QgY2hhcmFjdGVycyBvZiAKKyAgICAgICAgICAgICAgICAvLyBqb2luaW5nIHR5cGUgVSBhcmUgbm90IGV4cGxpY2l0bHkgbGlzdGVkIGluIHRoaXMgZmlsZS4KKyAgICAgICAgICAgICAgICAvLyBDaGFyYWN0ZXJzIG9mIGpvaW5pbmcgdHlwZSBUIGNhbiBbYmVdIGRlcml2ZWQgYnkgdGhlIGZvbGxvd2luZyBmb3JtdWxhOgorICAgICAgICAgICAgICAgIC8vICAgVCA9IE1uICsgQ2YgLSBaV05KIC0gWldKCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gKFBST1BFUlRZXy5nZXRBZGRpdGlvbmFsKGNoLCAyKSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAmIEpPSU5JTkdfVFlQRV9NQVNLXykgPj4gSk9JTklOR19UWVBFX1NISUZUXzsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IDAgJiYgY2ggIT0gWkVST19XSURUSF9OT05fSk9JTkVSXyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgY2ggIT0gWkVST19XSURUSF9KT0lORVJfKSB7CisgICAgICAgICAgICAgICAgICAgIGludCB0ID0gZ2V0VHlwZShjaCk7CisgICAgICAgICAgICAgICAgICAgIGlmICh0ID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5OT05fU1BBQ0lOR19NQVJLCisgICAgICAgICAgICAgICAgICAgICAgICB8fCB0ID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5GT1JNQVQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IEpvaW5pbmdUeXBlLlRSQU5TUEFSRU5UOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICBjYXNlIFVQcm9wZXJ0eS5MSU5FX0JSRUFLOgorICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogTGluZUJyZWFrLnR4dDoKKyAgICAgICAgICAgICAgICAgKiAgLSBBc3NpZ25lZCBjaGFyYWN0ZXJzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgZXhwbGljaXRseSBhcmUgZ2l2ZW4gdGhlIHZhbHVlCisgICAgICAgICAgICAgICAgICogICAgIkFMIi4KKyAgICAgICAgICAgICAgICAgKiAgLSBVbmFzc2lnbmVkIGNoYXJhY3RlcnMgYXJlIGdpdmVuIHRoZSB2YWx1ZSAiWFgiLgorICAgICAgICAgICAgICAgICAqIC4uLgorICAgICAgICAgICAgICAgICAqIEUwMDAuLkY4RkY7WFggIyA8UHJpdmF0ZSBVc2UsIEZpcnN0Pi4uPFByaXZhdGUgVXNlLCBMYXN0PgorICAgICAgICAgICAgICAgICAqIEYwMDAwLi5GRkZGRDtYWCAjIDxQbGFuZSAxNSBQcml2YXRlIFVzZSwgRmlyc3Q+Li48UGxhbmUgMTUgUHJpdmF0ZSBVc2UsIExhc3Q+CisgICAgICAgICAgICAgICAgICogMTAwMDAwLi4xMEZGRkQ7WFggIyA8UGxhbmUgMTYgUHJpdmF0ZSBVc2UsIEZpcnN0Pi4uPFBsYW5lIDE2IFByaXZhdGUgVXNlLCBMYXN0PgorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIHJlc3VsdCA9IChQUk9QRVJUWV8uZ2V0QWRkaXRpb25hbChjaCwgMCkgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYgTElORV9CUkVBS19NQVNLXykgPj4gTElORV9CUkVBS19TSElGVF87CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGludCB0ID0gZ2V0VHlwZShjaCk7CisgICAgICAgICAgICAgICAgICAgIGlmICh0ICE9IFVDaGFyYWN0ZXJDYXRlZ29yeS5VTkFTU0lHTkVEIAorICAgICAgICAgICAgICAgICAgICAgICAgJiYgdCAhPSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuUFJJVkFURV9VU0UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IExpbmVCcmVhay5BTFBIQUJFVElDOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICBjYXNlIFVQcm9wZXJ0eS5OVU1FUklDX1RZUEU6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdldE51bWVyaWNUeXBlKFBST1BFUlRZXy5nZXRQcm9wZXJ0eShjaCkpOworICAgICAgICAgICAgY2FzZSBVUHJvcGVydHkuU0NSSVBUOgorICAgICAgICAgICAgICAgIHJldHVybiBVU2NyaXB0LmdldFNjcmlwdChjaCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBVUHJvcGVydHkuR0VORVJBTF9DQVRFR09SWV9NQVNLKSB7CisgICAgICAgICAgICByZXR1cm4gVUNoYXJhY3RlclByb3BlcnR5LmdldE1hc2soZ2V0VHlwZShjaCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAwOyAvLyB1bmRlZmluZWQKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogR2V0IHRoZSBtaW5pbXVtIHZhbHVlIGZvciBhbiBpbnRlZ2VyL2JpbmFyeSBVbmljb2RlIHByb3BlcnR5IHR5cGUuCisgICAgICogQ2FuIGJlIHVzZWQgdG9nZXRoZXIgd2l0aCBVQ2hhcmFjdGVyLmdldEludFByb3BlcnR5TWF4VmFsdWUoaW50KQorICAgICAqIHRvIGFsbG9jYXRlIGFycmF5cyBvZiBjb20uaWJtLmljdS50ZXh0LlVuaWNvZGVTZXQgb3Igc2ltaWxhci4KKyAgICAgKiBAcGFyYW0gdHlwZSBVUHJvcGVydHkgc2VsZWN0b3IgY29uc3RhbnQsIGlkZW50aWZpZXMgd2hpY2ggYmluYXJ5IAorICAgICAqICAgICAgICBwcm9wZXJ0eSB0byBjaGVjay4gTXVzdCBiZSAKKyAgICAgKiAgICAgICAgVVByb3BlcnR5LkJJTkFSWV9TVEFSVCAmbHQ7PSB0eXBlICZsdDsgVVByb3BlcnR5LkJJTkFSWV9MSU1JVCBvciAKKyAgICAgKiAgICAgICAgVVByb3BlcnR5LklOVF9TVEFSVCAmbHQ7PSB0eXBlICZsdDsgVVByb3BlcnR5LklOVF9MSU1JVC4KKyAgICAgKiBAcmV0dXJuIE1pbmltdW0gdmFsdWUgcmV0dXJuZWQgYnkgVUNoYXJhY3Rlci5nZXRJbnRQcm9wZXJ0eVZhbHVlKGludCkgCisgICAgICogICAgICAgICBmb3IgYSBVbmljb2RlIHByb3BlcnR5LiAwIGlmIHRoZSBwcm9wZXJ0eSAKKyAgICAgKiAgICAgICAgIHNlbGVjdG9yICd0eXBlJyBpcyBvdXQgb2YgcmFuZ2UuCisgICAgICogQHNlZSBVUHJvcGVydHkKKyAgICAgKiBAc2VlICNoYXNCaW5hcnlQcm9wZXJ0eQorICAgICAqIEBzZWUgI2dldFVuaWNvZGVWZXJzaW9uCisgICAgICogQHNlZSAjZ2V0SW50UHJvcGVydHlNYXhWYWx1ZQorICAgICAqIEBzZWUgI2dldEludFByb3BlcnR5VmFsdWUKKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgaW50IGdldEludFByb3BlcnR5TWluVmFsdWUoaW50IHR5cGUpCisgICAgeworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgVVByb3BlcnR5LkJMT0NLOgorICAgICAgICAgICAgICAgIHJldHVybiBVbmljb2RlQmxvY2suSU5WQUxJRF9DT0RFLmdldElEKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7IC8vIHVuZGVmaW5lZDsgYW5kOiBhbGwgb3RoZXIgcHJvcGVydGllcyBoYXZlIGEgbWluaW11bSB2YWx1ZSAKKyAgICAgICAgICAgICAgICAgIC8vIG9mIDAKKyAgICB9CisKKyAgICAKKyAgICAvKioKKyAgICAgKiBHZXQgdGhlIG1heGltdW0gdmFsdWUgZm9yIGFuIGludGVnZXIvYmluYXJ5IFVuaWNvZGUgcHJvcGVydHkuCisgICAgICogQ2FuIGJlIHVzZWQgdG9nZXRoZXIgd2l0aCBVQ2hhcmFjdGVyLmdldEludFByb3BlcnR5TWluVmFsdWUoaW50KQorICAgICAqIHRvIGFsbG9jYXRlIGFycmF5cyBvZiBjb20uaWJtLmljdS50ZXh0LlVuaWNvZGVTZXQgb3Igc2ltaWxhci4KKyAgICAgKiBFeGFtcGxlcyBmb3IgbWluL21heCB2YWx1ZXMgKGZvciBVbmljb2RlIDMuMik6CisgICAgICogPHVsPgorICAgICAqIDxsaT4gVVByb3BlcnR5LkJJRElfQ0xBU1M6ICAgIDAvMTggKFVDaGFyYWN0ZXJEaXJlY3Rpb24uTEVGVF9UT19SSUdIVC9VQ2hhcmFjdGVyRGlyZWN0aW9uLkJPVU5EQVJZX05FVVRSQUwpCisgICAgICogPGxpPiBVUHJvcGVydHkuU0NSSVBUOiAgICAgICAgMC80NSAoVVNjcmlwdC5DT01NT04vVVNjcmlwdC5UQUdCQU5XQSkKKyAgICAgKiA8bGk+IFVQcm9wZXJ0eS5JREVPR1JBUEhJQzogICAwLzEgIChmYWxzZS90cnVlKQorICAgICAqIDwvdWw+CisgICAgICogRm9yIHVuZGVmaW5lZCBVUHJvcGVydHkgY29uc3RhbnQgdmFsdWVzLCBtaW4vbWF4IHZhbHVlcyB3aWxsIGJlIDAvLTEuCisgICAgICogQHBhcmFtIHR5cGUgVVByb3BlcnR5IHNlbGVjdG9yIGNvbnN0YW50LCBpZGVudGlmaWVzIHdoaWNoIGJpbmFyeSAKKyAgICAgKiAgICAgICAgcHJvcGVydHkgdG8gY2hlY2suIE11c3QgYmUgCisgICAgICogICAgICAgIFVQcm9wZXJ0eS5CSU5BUllfU1RBUlQgJmx0Oz0gdHlwZSAmbHQ7IFVQcm9wZXJ0eS5CSU5BUllfTElNSVQgb3IgCisgICAgICogICAgICAgIFVQcm9wZXJ0eS5JTlRfU1RBUlQgJmx0Oz0gdHlwZSAmbHQ7IFVQcm9wZXJ0eS5JTlRfTElNSVQuCisgICAgICogQHJldHVybiBNYXhpbXVtIHZhbHVlIHJldHVybmVkIGJ5IHVfZ2V0SW50UHJvcGVydHlWYWx1ZSBmb3IgYSBVbmljb2RlIAorICAgICAqICAgICAgICAgcHJvcGVydHkuICZsdDs9IDAgaWYgdGhlIHByb3BlcnR5IHNlbGVjdG9yICd0eXBlJyBpcyBvdXQgb2YgcmFuZ2UuCisgICAgICogQHNlZSBVUHJvcGVydHkKKyAgICAgKiBAc2VlICNoYXNCaW5hcnlQcm9wZXJ0eQorICAgICAqIEBzZWUgI2dldFVuaWNvZGVWZXJzaW9uCisgICAgICogQHNlZSAjZ2V0SW50UHJvcGVydHlNYXhWYWx1ZQorICAgICAqIEBzZWUgI2dldEludFByb3BlcnR5VmFsdWUKKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgaW50IGdldEludFByb3BlcnR5TWF4VmFsdWUoaW50IHR5cGUpCisgICAgeyAKKyAgICAgICAgaWYgKHR5cGUgPCBVUHJvcGVydHkuQklOQVJZX1NUQVJUKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7IC8vIHVuZGVmaW5lZAorICAgICAgICB9IAorICAgICAgICBlbHNlIGlmICh0eXBlIDwgVVByb3BlcnR5LkJJTkFSWV9MSU1JVCkgeworICAgICAgICAgICAgcmV0dXJuIDE7IC8vIG1heGltdW0gVFJVRSBmb3IgYWxsIGJpbmFyeSBwcm9wZXJ0aWVzCisgICAgICAgIH0gCisgICAgICAgIGVsc2UgaWYgKHR5cGUgPCBVUHJvcGVydHkuSU5UX1NUQVJUKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7IC8vIHVuZGVmaW5lZAorICAgICAgICB9IAorICAgICAgICBlbHNlIGlmICh0eXBlIDwgVVByb3BlcnR5LklOVF9MSU1JVCkgeworICAgICAgICAgICAgaW50IG1heCA9IDA7CisgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgVVByb3BlcnR5LkJJRElfQ0xBU1M6CisgICAgICAgICAgICAgICAgcmV0dXJuIFVDaGFyYWN0ZXJEaXJlY3Rpb24uQ0hBUl9ESVJFQ1RJT05fQ09VTlQgLSAxOworICAgICAgICAgICAgY2FzZSBVUHJvcGVydHkuQkxPQ0s6CisgICAgICAgICAgICAgICAgbWF4ID0gKFBST1BFUlRZXy5nZXRNYXhCbG9ja1NjcmlwdFZhbHVlcygpCisgICAgICAgICAgICAgICAgICAgICAgJiBCTE9DS19NQVNLXykgPj4gQkxPQ0tfU0hJRlRfOworICAgICAgICAgICAgICAgIGlmIChtYXggPT0gMCkgeworICAgICAgICAgICAgICAgICAgICBtYXggPSBVbmljb2RlQmxvY2suQ09VTlQgLSAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gbWF4OworICAgICAgICAgICAgY2FzZSBVUHJvcGVydHkuQ0FOT05JQ0FMX0NPTUJJTklOR19DTEFTUzoKKyAgICAgICAgICAgICAgICByZXR1cm4gMHhmZjsgLy8gVE9ETyBkbyB3ZSBuZWVkIHRvIGJlIG1vcmUgcHJlY2lzZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldHRpbmcgdGhlIGFjdHVhbCBtYXhpbXVtPworICAgICAgICAgICAgY2FzZSBVUHJvcGVydHkuREVDT01QT1NJVElPTl9UWVBFOgorICAgICAgICAgICAgICAgIHJldHVybiBEZWNvbXBvc2l0aW9uVHlwZS5DT1VOVCAtIDE7CisgICAgICAgICAgICBjYXNlIFVQcm9wZXJ0eS5FQVNUX0FTSUFOX1dJRFRIOgorICAgICAgICAgICAgICAgIHJldHVybiBFYXN0QXNpYW5XaWR0aC5DT1VOVCAtIDE7CisgICAgICAgICAgICBjYXNlIFVQcm9wZXJ0eS5HRU5FUkFMX0NBVEVHT1JZOgorICAgICAgICAgICAgICAgIHJldHVybiBVQ2hhcmFjdGVyQ2F0ZWdvcnkuQ0hBUl9DQVRFR09SWV9DT1VOVCAtIDE7CisgICAgICAgICAgICBjYXNlIFVQcm9wZXJ0eS5KT0lOSU5HX0dST1VQOgorICAgICAgICAgICAgICAgIHJldHVybiBKb2luaW5nR3JvdXAuQ09VTlQgLSAxOworICAgICAgICAgICAgY2FzZSBVUHJvcGVydHkuSk9JTklOR19UWVBFOgorICAgICAgICAgICAgICAgIHJldHVybiBKb2luaW5nVHlwZS5DT1VOVCAtIDE7CisgICAgICAgICAgICBjYXNlIFVQcm9wZXJ0eS5MSU5FX0JSRUFLOgorICAgICAgICAgICAgICAgIHJldHVybiBMaW5lQnJlYWsuQ09VTlQgLSAxOworICAgICAgICAgICAgY2FzZSBVUHJvcGVydHkuTlVNRVJJQ19UWVBFOgorICAgICAgICAgICAgICAgIHJldHVybiBOdW1lcmljVHlwZS5DT1VOVCAtIDE7CisgICAgICAgICAgICBjYXNlIFVQcm9wZXJ0eS5TQ1JJUFQ6CisgICAgICAgICAgICAgICAgbWF4ID0gUFJPUEVSVFlfLmdldE1heEJsb2NrU2NyaXB0VmFsdWVzKCkgJiBTQ1JJUFRfTUFTS187CisgICAgICAgICAgICAgICAgaWYgKG1heCA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIG1heCA9IFVTY3JpcHQuQ09ERV9MSU1JVCAtIDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBtYXg7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC0xOyAvLyB1bmRlZmluZWQKKyAgICB9CisKKyAgICAvLyBwcm90ZWN0ZWQgZGF0YSBtZW1iZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgKiBEYXRhYmFzZSBzdG9yaW5nIHRoZSBzZXRzIG9mIGNoYXJhY3RlciBuYW1lCisgICAgKi8KKyAgICBzdGF0aWMgZmluYWwgVUNoYXJhY3Rlck5hbWUgTkFNRV87CisKKyAgICAvKioKKyAgICAgKiBTaW5nbGV0b24gb2JqZWN0IGVuY2Fwc3VsYXRpbmcgdGhlIGltcG9ydGVkIHBuYW1lcy5pY3UgcHJvcGVydHkgYWxpYXNlcworICAgICAqLworICAgIHN0YXRpYyBmaW5hbCBVUHJvcGVydHlBbGlhc2VzIFBOQU1FU187CisgICAgICAKKyAgICAvLyBibG9jayB0byBpbml0aWFsaXNlIG5hbWUgZGF0YWJhc2UgYW5kIHVuaWNvZGUgMS4wIGRhdGEgCisgICAgc3RhdGljCisgICAgeworICAgICAgICB0cnkKKyAgICAgICAgeworICAgICAgICAgICAgTkFNRV8gPSBVQ2hhcmFjdGVyTmFtZS5nZXRJbnN0YW5jZSgpOworICAgICAgICAgICAgUE5BTUVTXyA9IG5ldyBVUHJvcGVydHlBbGlhc2VzKCk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQorICAgICAgICB7CisgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbihlLmdldE1lc3NhZ2UoKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgICAgIAorICAgIC8vIHByaXZhdGUgdmFyaWFibGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvKioKKyAgICAgKiBEYXRhYmFzZSBzdG9yaW5nIHRoZSBzZXRzIG9mIGNoYXJhY3RlciBwcm9wZXJ0eQorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFVDaGFyYWN0ZXJQcm9wZXJ0eSBQUk9QRVJUWV87CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJLy8gYmxvY2sgdG8gaW5pdGlhbGlzZSBjaGFyYWN0ZXIgcHJvcGVydHkgZGF0YWJhc2UKKyAgICBzdGF0aWMKKyAgICB7CisgICAgICAgIHRyeQorICAgICAgICB7CisgICAgICAgICAgICBQUk9QRVJUWV8gPSBVQ2hhcmFjdGVyUHJvcGVydHkuZ2V0SW5zdGFuY2UoKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKGUuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgfQorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAKKyAgICAvKioKKyAgICAgKiBUbyBnZXQgdGhlIGxhc3QgY2hhcmFjdGVyIG91dCBmcm9tIGEgZGF0YSB0eXBlCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExBU1RfQ0hBUl9NQVNLXyA9IDB4RkZGRjsKKyAgICAgIAorICAgIC8qKgorICAgICAqIFRvIGdldCB0aGUgbGFzdCBieXRlIG91dCBmcm9tIGEgZGF0YSB0eXBlCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExBU1RfQllURV9NQVNLXyA9IDB4RkY7CisgICAgICAKKyAgICAvKioKKyAgICAgKiBTaGlmdCAxNiBiaXRzCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNISUZUXzE2XyA9IDE2OworICAgICAgCisgICAgLyoqCisgICAgICogU2hpZnQgMjQgYml0cworICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTSElGVF8yNF8gPSAyNDsgIAorICAgIAorICAgIC8qKgorICAgICAqIERlY2ltYWwgcmFkaXgKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgREVDSU1BTF9SQURJWF8gPSAxMDsKKyAgICAgIAorICAgIC8qKgorICAgICAqIE5vIGJyZWFrIHNwYWNlIGNvZGUgcG9pbnQKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTk9fQlJFQUtfU1BBQ0VfID0gMHhBMDsKKyAgICAgIAorICAgIC8qKgorICAgICAqIE5hcnJvdyBubyBicmVhayBzcGFjZSBjb2RlIHBvaW50CisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE5BUlJPV19OT19CUkVBS19TUEFDRV8gPSAweDIwMkY7CisgICAgICAKKyAgICAvKioKKyAgICAgKiBaZXJvIHdpZHRoIG5vIGJyZWFrIHNwYWNlIGNvZGUgcG9pbnQKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgWkVST19XSURUSF9OT19CUkVBS19TUEFDRV8gPSAweEZFRkY7CisgICAgICAKKyAgICAvKioKKyAgICAgKiBJZGVvZ3JhcGhpYyBudW1iZXIgemVybyBjb2RlIHBvaW50CisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IElERU9HUkFQSElDX05VTUJFUl9aRVJPXyA9IDB4MzAwNzsKKyAgICAgICAgICAgIAorICAgIC8qKgorICAgICAqIENKSyBJZGVvZ3JhcGgsIEZpcnN0IGNvZGUgcG9pbnQKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ0pLX0lERU9HUkFQSF9GSVJTVF8gPSAweDRlMDA7CisgICAgICAKKyAgICAvKioKKyAgICAgKiBDSksgSWRlb2dyYXBoLCBTZWNvbmQgY29kZSBwb2ludAorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDSktfSURFT0dSQVBIX1NFQ09ORF8gPSAweDRlOGM7CisgICAgICAgICAgICAKKyAgICAvKioKKyAgICAgKiBDSksgSWRlb2dyYXBoLCBUaGlyZCBjb2RlIHBvaW50CisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENKS19JREVPR1JBUEhfVEhJUkRfID0gMHg0ZTA5OworICAgICAgCisgICAgLyoqCisgICAgICogQ0pLIElkZW9ncmFwaCwgRm91cnRoIGNvZGUgcG9pbnQKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ0pLX0lERU9HUkFQSF9GT1VSVEhfID0gMHg1NmQ4OworICAgICAgCisgICAgLyoqCisgICAgICogQ0pLIElkZW9ncmFwaCwgRklGVEggY29kZSBwb2ludAorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDSktfSURFT0dSQVBIX0ZJRlRIXyA9IDB4NGU5NDsKKyAgICAgIAorICAgIC8qKgorICAgICAqIENKSyBJZGVvZ3JhcGgsIFNpeHRoIGNvZGUgcG9pbnQKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ0pLX0lERU9HUkFQSF9TSVhUSF8gPSAweDUxNmQ7CisgICAgICAgICAgICAKKyAgICAvKioKKyAgICAgKiBDSksgSWRlb2dyYXBoLCBTZXZlbnRoIGNvZGUgcG9pbnQKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ0pLX0lERU9HUkFQSF9TRVZFTlRIXyA9IDB4NGUwMzsKKyAgICAgIAorICAgIC8qKgorICAgICAqIENKSyBJZGVvZ3JhcGgsIEVpZ2h0aCBjb2RlIHBvaW50CisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENKS19JREVPR1JBUEhfRUlHSFRIXyA9IDB4NTE2YjsKKyAgICAgIAorICAgIC8qKgorICAgICAqIENKSyBJZGVvZ3JhcGgsIE5pbmV0aCBjb2RlIHBvaW50CisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENKS19JREVPR1JBUEhfTklORVRIXyA9IDB4NGU1ZDsKKyAgICAgIAorICAgIC8qKgorICAgICAqIEFwcGxpY2F0aW9uIFByb2dyYW0gY29tbWFuZCBjb2RlIHBvaW50CisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEFQUExJQ0FUSU9OX1BST0dSQU1fQ09NTUFORF8gPSAweDAwOUY7CisgICAgICAKKyAgICAvKioKKyAgICAgKiBVbml0IHNlcGFyYXRvciBjb2RlIHBvaW50CisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFVOSVRfU0VQQVJBVE9SXyA9IDB4MDAxRjsKKyAgICAgIAorICAgIC8qKgorICAgICAqIERlbGV0ZSBjb2RlIHBvaW50CisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IERFTEVURV8gPSAweDAwN0Y7CisgICAgLyoqCisgICAgICogSVNPIGNvbnRyb2wgY2hhcmFjdGVyIGZpcnN0IHJhbmdlIHVwcGVyIGxpbWl0IDB4MCAtIDB4MUYKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSVNPX0NPTlRST0xfRklSU1RfUkFOR0VfTUFYXyA9IDB4MUY7CisgICAgLyoqCisgICAgICogU2hpZnQgdG8gZ2V0IG51bWVyaWMgdHlwZQorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBOVU1FUklDX1RZUEVfU0hJRlRfID0gMTI7CisgICAgLyoqCisgICAgICogTWFzayB0byBnZXQgbnVtZXJpYyB0eXBlCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE5VTUVSSUNfVFlQRV9NQVNLXyA9IDB4NzsKKyAgICAvKioKKyAgICAgKiBTaGlmdCB0byBnZXQgYmlkaSBiaXRzCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEJJRElfU0hJRlRfID0gNjsKKyAgICAgIAorICAgIC8qKgorICAgICAqIE1hc2sgdG8gYmUgYXBwbGllZCBhZnRlciBzaGlmdGluZyB0byBnZXQgYmlkaSBiaXRzCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEJJRElfTUFTS19BRlRFUl9TSElGVF8gPSAweDFGOworICAgIC8qKgorICAgICAqIEhhbiBkaWdpdCBjaGFyYWN0ZXJzCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENKS19JREVPR1JBUEhfQ09NUExFWF9aRVJPXyAgICAgPSAweDk2ZjY7ICAgIAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDSktfSURFT0dSQVBIX0NPTVBMRVhfT05FXyAgICAgID0gMHg1OGY5OyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ0pLX0lERU9HUkFQSF9DT01QTEVYX1RXT18gICAgICA9IDB4OGNiMzsgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENKS19JREVPR1JBUEhfQ09NUExFWF9USFJFRV8gICAgPSAweDUzYzM7ICAgIAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDSktfSURFT0dSQVBIX0NPTVBMRVhfRk9VUl8gICAgID0gMHg4MDg2OyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ0pLX0lERU9HUkFQSF9DT01QTEVYX0ZJVkVfICAgICA9IDB4NGYwZDsgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENKS19JREVPR1JBUEhfQ09NUExFWF9TSVhfICAgICAgPSAweDk2Nzg7ICAgIAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDSktfSURFT0dSQVBIX0NPTVBMRVhfU0VWRU5fICAgID0gMHg2N2QyOyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ0pLX0lERU9HUkFQSF9DT01QTEVYX0VJR0hUXyAgICA9IDB4NjM0YzsgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENKS19JREVPR1JBUEhfQ09NUExFWF9OSU5FXyAgICAgPSAweDczOTY7ICAgIAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDSktfSURFT0dSQVBIX1RFTl8gICAgICAgICAgICAgID0gMHg1MzQxOyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ0pLX0lERU9HUkFQSF9DT01QTEVYX1RFTl8gICAgICA9IDB4NjJmZTsgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENKS19JREVPR1JBUEhfSFVORFJFRF8gICAgICAgICAgPSAweDc2N2U7ICAgIAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDSktfSURFT0dSQVBIX0NPTVBMRVhfSFVORFJFRF8gID0gMHg0ZjcwOyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ0pLX0lERU9HUkFQSF9USE9VU0FORF8gICAgICAgICA9IDB4NTM0MzsgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENKS19JREVPR1JBUEhfQ09NUExFWF9USE9VU0FORF8gPSAweDRlZGY7ICAgIAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDSktfSURFT0dSQVBIX1RFTl9USE9VU0FORF8gICAgID0gMHg4MjRjOyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ0pLX0lERU9HUkFQSF9IVU5EUkVEX01JTExJT05fICA9IDB4NTEwNDsKKyAgICAvKioKKyAgICAgKiA8cD5OdW1lcmF0b3IgcG93ZXIgbGltaXQuCisgICAgICogVGhlcmUgYXJlIHNwZWNpYWwgdmFsdWVzIGZvciBodWdlIG51bWJlcnMgdGhhdCBhcmUgcG93ZXJzIG9mIHRlbi48L3A+CisgICAgICogPHA+YyB2ZXJzaW9uIGdlbnByb3BzL3N0b3JlLmMgZG9jdW1lbnRzOgorICAgICAqIGlmIG51bWVyaWNWYWx1ZSA9IDB4N2ZmZmZmMDAgKyB4IHRoZW4gbnVtZXJpY1ZhbHVlID0gMTAgXiB4PC9wPgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBOVU1FUkFUT1JfUE9XRVJfTElNSVRfID0gMHg3ZmZmZmYwMDsKKyAgICAvKioKKyAgICAgKiBJbnRlZ2VyIHByb3BlcnRpZXMgbWFzayBhbmQgc2hpZnQgdmFsdWVzIGZvciBqb2luaW5nIHR5cGUuCisgICAgICogRXF1aXZhbGVudCB0byBpY3U0YyBVUFJPUFNfSlRfTUFTSy4gCisgICAgICovICAgIAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBKT0lOSU5HX1RZUEVfTUFTS18gPSAweDAwMDAzODAwOworICAgIC8qKgorICAgICAqIEludGVnZXIgcHJvcGVydGllcyBtYXNrIGFuZCBzaGlmdCB2YWx1ZXMgZm9yIGpvaW5pbmcgdHlwZS4KKyAgICAgKiBFcXVpdmFsZW50IHRvIGljdTRjIFVQUk9QU19KVF9TSElGVC4gCisgICAgICovICAgIAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBKT0lOSU5HX1RZUEVfU0hJRlRfID0gMTE7CisgICAgLyoqCisgICAgICogSW50ZWdlciBwcm9wZXJ0aWVzIG1hc2sgYW5kIHNoaWZ0IHZhbHVlcyBmb3Igam9pbmluZyBncm91cC4KKyAgICAgKiBFcXVpdmFsZW50IHRvIGljdTRjIFVQUk9QU19KR19NQVNLLiAKKyAgICAgKi8gICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEpPSU5JTkdfR1JPVVBfTUFTS18gPSAweDAwMDAwN2UwOworICAgIC8qKgorICAgICAqIEludGVnZXIgcHJvcGVydGllcyBtYXNrIGFuZCBzaGlmdCB2YWx1ZXMgZm9yIGpvaW5pbmcgZ3JvdXAuCisgICAgICogRXF1aXZhbGVudCB0byBpY3U0YyBVUFJPUFNfSkdfU0hJRlQuIAorICAgICAqLyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSk9JTklOR19HUk9VUF9TSElGVF8gPSA1OworICAgIC8qKgorICAgICAqIEludGVnZXIgcHJvcGVydGllcyBtYXNrIGZvciBkZWNvbXBvc2l0aW9uIHR5cGUuCisgICAgICogRXF1aXZhbGVudCB0byBpY3U0YyBVUFJPUFNfRFRfTUFTSy4gCisgICAgICovICAgIAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBERUNPTVBPU0lUSU9OX1RZUEVfTUFTS18gPSAweDAwMDAwMDFmOworICAgIC8qKgorICAgICAqIEludGVnZXIgcHJvcGVydGllcyBtYXNrIGFuZCBzaGlmdCB2YWx1ZXMgZm9yIEVhc3QgQXNpYW4gY2VsbCB3aWR0aC4KKyAgICAgKiBFcXVpdmFsZW50IHRvIGljdTRjIFVQUk9QU19FQV9NQVNLIAorICAgICAqLyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRUFTVF9BU0lBTl9NQVNLXyA9IDB4MDAwMzgwMDA7CisgICAgLyoqCisgICAgICogSW50ZWdlciBwcm9wZXJ0aWVzIG1hc2sgYW5kIHNoaWZ0IHZhbHVlcyBmb3IgRWFzdCBBc2lhbiBjZWxsIHdpZHRoLgorICAgICAqIEVxdWl2YWxlbnQgdG8gaWN1NGMgVVBST1BTX0VBX1NISUZUIAorICAgICAqLyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRUFTVF9BU0lBTl9TSElGVF8gPSAxNTsKKyAgICAvKioKKyAgICAgKiBaZXJvIFdpZHRoIE5vbiBKb2luZXIuCisgICAgICogRXF1aXZhbGVudCB0byBpY3U0YyBaV05KLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBaRVJPX1dJRFRIX05PTl9KT0lORVJfID0gMHgyMDBjOworICAgIC8qKgorICAgICAqIFplcm8gV2lkdGggSm9pbmVyCisgICAgICogRXF1aXZhbGVudCB0byBpY3U0YyBaV0ouIAorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBaRVJPX1dJRFRIX0pPSU5FUl8gPSAweDIwMGQ7CisgICAgLyoqCisgICAgICogSW50ZWdlciBwcm9wZXJ0aWVzIG1hc2sgYW5kIHNoaWZ0IHZhbHVlcyBmb3IgbGluZSBicmVha3MuCisgICAgICogRXF1aXZhbGVudCB0byBpY3U0YyBVUFJPUFNfTEJfTUFTSyAKKyAgICAgKi8gICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExJTkVfQlJFQUtfTUFTS18gPSAweDAwN0MwMDAwOworICAgIC8qKgorICAgICAqIEludGVnZXIgcHJvcGVydGllcyBtYXNrIGFuZCBzaGlmdCB2YWx1ZXMgZm9yIGxpbmUgYnJlYWtzLgorICAgICAqIEVxdWl2YWxlbnQgdG8gaWN1NGMgVVBST1BTX0xCX1NISUZUIAorICAgICAqLyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTElORV9CUkVBS19TSElGVF8gPSAxODsKKyAgICAvKioKKyAgICAgKiBJbnRlZ2VyIHByb3BlcnRpZXMgbWFzayBhbmQgc2hpZnQgdmFsdWVzIGZvciBibG9ja3MuCisgICAgICogRXF1aXZhbGVudCB0byBpY3U0YyBVUFJPUFNfQkxPQ0tfTUFTSyAKKyAgICAgKi8gICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEJMT0NLX01BU0tfID0gMHgwMDAwN2Y4MDsKKyAgICAvKioKKyAgICAgKiBJbnRlZ2VyIHByb3BlcnRpZXMgbWFzayBhbmQgc2hpZnQgdmFsdWVzIGZvciBibG9ja3MuCisgICAgICogRXF1aXZhbGVudCB0byBpY3U0YyBVUFJPUFNfQkxPQ0tfU0hJRlQgCisgICAgICovICAgIAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBCTE9DS19TSElGVF8gPSA3OworICAgIC8qKgorICAgICAqIEludGVnZXIgcHJvcGVydGllcyBtYXNrIGFuZCBzaGlmdCB2YWx1ZXMgZm9yIHNjcmlwdHMuCisgICAgICogRXF1aXZhbGVudCB0byBpY3U0YyBVUFJPUFNfU0hJRlRfTUFTSworICAgICAqLyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU0NSSVBUX01BU0tfID0gMHgwMDAwMDA3ZjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIC8vIHByaXZhdGUgY29uc3RydWN0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLy9DTE9WRVI6T0ZGICAKKyAgICAvKioKKyAgICAgKiBQcml2YXRlIGNvbnN0cnVjdG9yIHRvIHByZXZlbnQgaW5zdGFudGlhdGlvbgorICAgICAqLworICAgIHByaXZhdGUgVUNoYXJhY3RlcigpCisgICAgeworICAgIH0KKyAgICAvLy9DTE9WRVI6T04gCisgICAgLy8gcHJpdmF0ZSBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIHByaXZhdGUgc3RhdGljIGludCBnZXRFdXJvcGVhbkRpZ2l0KGludCBjaCkgeworICAgICAgICBpZiAoY2ggPD0gMHg3YSkgeworICAgICAgICAgICAgaWYgKGNoID49IDB4NDEgJiYgY2ggPD0gMHg1YSkgeworICAgICAgICAgICAgICAgIHJldHVybiBjaCArIDEwIC0gMHg0MTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoY2ggPj0gMHg2MSkgeworICAgICAgICAgICAgICAgIHJldHVybiBjaCArIDEwIC0gMHg2MTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChjaCA+PSAweGZmMjEpIHsKKyAgICAgICAgICAgIGlmIChjaCA8PSAweGZmM2EpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2ggKyAxMCAtIDB4ZmYyMTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoY2ggPj0gMHhmZjQxICYmIGNoIDw9IDB4ZmY1YSkgeworICAgICAgICAgICAgICAgIHJldHVybiBjaCArIDEwIC0gMHhmZjQxOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgbnVtZXJpYyB0eXBlIG9mIHRoZSBwcm9wZXJ0eSBhcmd1bWVudAorICAgICAqIEBwYXJhbSBwcm9wcyAzMiBiaXQgcHJvcGVydHkKKyAgICAgKiBAcmV0dXJuIHRoZSBudW1lcmljIHR5cGUKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBpbnQgZ2V0TnVtZXJpY1R5cGUoaW50IHByb3BzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIChwcm9wcyA+PiBOVU1FUklDX1RZUEVfU0hJRlRfKSAmIE5VTUVSSUNfVFlQRV9NQVNLXzsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQ2hlY2tzIGlmIHRoZSBwcm9wZXJ0eSB2YWx1ZSBoYXMgYSBleGNlcHRpb24gaW5kaWNhdG9yCisgICAgICogQHBhcmFtIHByb3BzIDMyIGJpdCBwcm9wZXJ0eSB2YWx1ZQorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiBwcm9wZXJ0eSBkb2VzIG5vdCBoYXZlIGEgZXhjZXB0aW9uIGluZGljYXRvciwgZmFsc2UKKyAgICAgKiAgICAgICAgICBvdGhlcndpc2UKKyAgICAgKi8gICAgIAorICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gaXNOb3RFeGNlcHRpb25JbmRpY2F0b3IoaW50IHByb3BzKQorICAgIHsKKyAgICAgICAgIHJldHVybiAocHJvcHMgJiBVQ2hhcmFjdGVyUHJvcGVydHkuRVhDRVBUSU9OX01BU0spID09IDA7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvbGFuZy9VQ2hhcmFjdGVyQ2F0ZWdvcnkuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9sYW5nL1VDaGFyYWN0ZXJDYXRlZ29yeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjU4NjVhNTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvbGFuZy9VQ2hhcmFjdGVyQ2F0ZWdvcnkuamF2YQpAQCAtMCwwICsxLDI4NSBAQAorLyoqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqICRTb3VyY2U6IAorKiAgICAgIC91c3IvY3ZzL2ljdTRqL2ljdTRqL3NyYy9jb20vaWJtL2ljdS90ZXh0L1VDaGFyYWN0ZXJDYXRlZ29yeS5qYXZhICQgCisqICREYXRlOiAyMDAyLzEyLzExIDIzOjM3OjQzICQgCisqICRSZXZpc2lvbjogMS4xMSAkCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1Lmxhbmc7CisKKy8qKgorICogRW51bWVyYXRlZCBVbmljb2RlIGNhdGVnb3J5IHR5cGVzIGZyb20gdGhlIFVuaWNvZGVEYXRhLnR4dCBmaWxlLgorICogVXNlZCBhcyByZXR1cm4gcmVzdWx0cyBmcm9tIDxhIGhyZWY9VUNoYXJhY3Rlci5odG1sPlVDaGFyYWN0ZXI8L2E+CisgKiBFcXVpdmFsZW50IHRvIGljdSdzIFVDaGFyQ2F0ZWdvcnkuCisgKiBSZWZlciB0byA8YSBocmVmPWh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljL1VOSURBVEEvVW5pY29kZURhdGEuaHRtbD4KKyAqIFVuaWNvZGUgQ29uc29ydGl1bTwvYT4gZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgVW5pY29kZURhdGEudHh0LgorICogPHA+CisgKiBUaGlzIGNsYXNzIGlzIG5vdCBzdWJjbGFzc2FibGUKKyAqIDwvcD4KKyAqIEBhdXRob3IgU3luIFdlZSBRdWVrCisgKiBAc3RhYmxlIElDVSAyLjEKKyAqLworCitwdWJsaWMgZmluYWwgY2xhc3MgVUNoYXJhY3RlckNhdGVnb3J5Cit7CisgICAgLy8gcHVibGljIHZhcmlhYmxlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIAorICAgIC8qKgorICAgICAqIFVuYXNzaWduZWQgY2hhcmFjdGVyIHR5cGUKKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBVTkFTU0lHTkVEICAgICAgICAgICAgICA9IDA7IAorICAgIC8qKgorICAgICAqIENoYXJhY3RlciB0eXBlIENuCisgICAgICogTm90IEFzc2lnbmVkIChubyBjaGFyYWN0ZXJzIGluIFtVbmljb2RlRGF0YS50eHRdIGhhdmUgdGhpcyBwcm9wZXJ0eSkgCisgICAgICogQGRyYWZ0IElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHRU5FUkFMX09USEVSX1RZUEVTICAgICA9IDA7CisgICAgLyoqCisgICAgICogQ2hhcmFjdGVyIHR5cGUgTHUKKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBVUFBFUkNBU0VfTEVUVEVSICAgICAgICA9IDE7CisgICAgLyoqCisgICAgICogQ2hhcmFjdGVyIHR5cGUgTGwKKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKwlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBMT1dFUkNBU0VfTEVUVEVSICAgICAgICA9IDI7CisJLyoqCisgICAgICogQ2hhcmFjdGVyIHR5cGUgTHQKKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgCXB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFRJVExFQ0FTRV9MRVRURVIgICAgICAgID0gMzsKKyAgIAkvKioKKyAgICAgKiBDaGFyYWN0ZXIgdHlwZSBMbQorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgCXB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE1PRElGSUVSX0xFVFRFUiAgICAgICAgID0gNDsKKyAgIAkvKioKKyAgICAgKiBDaGFyYWN0ZXIgdHlwZSBMbworICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgCXB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE9USEVSX0xFVFRFUiAgICAgICAgICAgID0gNTsKKyAgIAkvKioKKyAgICAgKiBDaGFyYWN0ZXIgdHlwZSBNbgorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAJcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTk9OX1NQQUNJTkdfTUFSSyAgICAgICAgPSA2OworICAgIC8qKgorICAgICAqIENoYXJhY3RlciB0eXBlIE1lCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRU5DTE9TSU5HX01BUksgICAgICAgICAgPSA3OworICAgIC8qKgorICAgICAqIENoYXJhY3RlciB0eXBlIE1jCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ09NQklOSU5HX1NQQUNJTkdfTUFSSyAgPSA4OworICAgIC8qKgorICAgICAqIENoYXJhY3RlciB0eXBlIE5kCisgICAgICogQHN0YWJsZSBJQ1UgMi4xICAgICAgCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgREVDSU1BTF9ESUdJVF9OVU1CRVIgICAgPSA5OworICAgIC8qKgorICAgICAqIENoYXJhY3RlciB0eXBlIE5sCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTEVUVEVSX05VTUJFUiAgICAgICAgICAgPSAxMDsKKyAgICAJCisgICAgLy8gc3RhcnQgb2YgMTEtLS0tLS0tLS0tLS0KKyAgICAJCisgICAgLyoqCisgICAgICogQ2hhcmFjdGVyIHR5cGUgTm8KKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBPVEhFUl9OVU1CRVIgICAgICAgICAgICA9IDExOworICAgIC8qKgorICAgICAqIENoYXJhY3RlciB0eXBlIFpzCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1BBQ0VfU0VQQVJBVE9SICAgICAgICAgPSAxMjsKKyAgICAvKioKKyAgICAgKiBDaGFyYWN0ZXIgdHlwZSBabAorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IExJTkVfU0VQQVJBVE9SICAgICAgICAgID0gMTM7CisgICAgLyoqCisgICAgICogQ2hhcmFjdGVyIHR5cGUgWnAKKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBQQVJBR1JBUEhfU0VQQVJBVE9SICAgICA9IDE0OworICAgIC8qKgorICAgICAqIENoYXJhY3RlciB0eXBlIENjCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAJcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ09OVFJPTCAgICAgICAgICAgICAgICAgPSAxNTsKKyAgIAkvKioKKyAgICAgKiBDaGFyYWN0ZXIgdHlwZSBDZgorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZPUk1BVCAgICAgICAgICAgICAgICAgID0gMTY7CisgICAgLyoqCisgICAgICogQ2hhcmFjdGVyIHR5cGUgQ28KKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgIAlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBQUklWQVRFX1VTRSAgICAgICAgICAgICA9IDE3OworICAgCS8qKgorICAgICAqIENoYXJhY3RlciB0eXBlIENzCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAJcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1VSUk9HQVRFICAgICAgICAgICAgICAgPSAxODsKKyAgIAkvKioKKyAgICAgKiBDaGFyYWN0ZXIgdHlwZSBQZAorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgCXB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERBU0hfUFVOQ1RVQVRJT04gICAgICAgID0gMTk7CisgICAJLyoqCisgICAgICogQ2hhcmFjdGVyIHR5cGUgUHMKKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgIAlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTVEFSVF9QVU5DVFVBVElPTiAgICAgICA9IDIwOworICAgIAkKKyAgIAkvLyBzdGFydCBvZiAyMSAtLS0tLS0tLS0tLS0KKyAgICAKKyAgIAkvKioKKyAgICAgKiBDaGFyYWN0ZXIgdHlwZSBQZQorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgCXB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEVORF9QVU5DVFVBVElPTiAgICAgICAgID0gMjE7CisgICAJLyoqCisgICAgICogQ2hhcmFjdGVyIHR5cGUgUGMKKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgIAlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDT05ORUNUT1JfUFVOQ1RVQVRJT04gICA9IDIyOworICAgCS8qKgorICAgICAqIENoYXJhY3RlciB0eXBlIFBvCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAJcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgT1RIRVJfUFVOQ1RVQVRJT04gICAgICAgPSAyMzsKKyAgIAkvKioKKyAgICAgKiBDaGFyYWN0ZXIgdHlwZSBTbQorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE1BVEhfU1lNQk9MICAgICAgICAgICAgID0gMjQ7CisgICAgLyoqCisgICAgICogQ2hhcmFjdGVyIHR5cGUgU2MKKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgIAlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDVVJSRU5DWV9TWU1CT0wgICAgICAgICA9IDI1OworICAgCS8qKgorICAgICAqIENoYXJhY3RlciB0eXBlIFNrCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAJcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTU9ESUZJRVJfU1lNQk9MICAgICAgICAgPSAyNjsKKyAgIAkvKioKKyAgICAgKiBDaGFyYWN0ZXIgdHlwZSBTbworICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgCXB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE9USEVSX1NZTUJPTCAgICAgICAgICAgID0gMjc7CisgICAJLyoqCisgICAgICogQ2hhcmFjdGVyIHR5cGUgUGkKKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBJTklUSUFMX1BVTkNUVUFUSU9OICAgICA9IDI4OworICAgIC8qKgorICAgICAqIENoYXJhY3RlciB0eXBlIFBmCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRklOQUxfUFVOQ1RVQVRJT04gICAgICAgPSAyOTsKKyAgICAJCisgICAgLy8gc3RhcnQgb2YgMzEgLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgICogQ2hhcmFjdGVyIHR5cGUgY291bnQKKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDSEFSX0NBVEVHT1JZX0NPVU5UICAgICA9IDMwOworICAgIAkKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBuYW1lIG9mIHRoZSBhcmd1bWVudCBjYXRlZ29yeQorICAgICAqIEBwYXJhbSBjYXRlZ29yeSB0byByZXRyaWV2ZSBuYW1lCisgICAgICogQHJldHVybiBjYXRlZ29yeSBuYW1lCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoaW50IGNhdGVnb3J5KQorICAgIHsKKyAgICAgICAgc3dpdGNoIChjYXRlZ29yeSkgeworICAgIAkgICAgY2FzZSBVUFBFUkNBU0VfTEVUVEVSIDoKKyAgICAJICAgICAgcmV0dXJuICJMZXR0ZXIsIFVwcGVyY2FzZSI7CisgICAgCSAgICBjYXNlIExPV0VSQ0FTRV9MRVRURVIgOgorICAgIAkgICAgICByZXR1cm4gIkxldHRlciwgTG93ZXJjYXNlIjsKKyAgICAJICAgIGNhc2UgVElUTEVDQVNFX0xFVFRFUiA6CisgICAgCSAgICAgIHJldHVybiAiTGV0dGVyLCBUaXRsZWNhc2UiOworICAgIAkgICAgY2FzZSBNT0RJRklFUl9MRVRURVIgOgorICAgIAkgICAgICByZXR1cm4gIkxldHRlciwgTW9kaWZpZXIiOworICAgIAkgICAgY2FzZSBPVEhFUl9MRVRURVIgOgorICAgIAkgICAgICByZXR1cm4gIkxldHRlciwgT3RoZXIiOworICAgIAkgICAgY2FzZSBOT05fU1BBQ0lOR19NQVJLIDoKKyAgICAJICAgICAgcmV0dXJuICJNYXJrLCBOb24tU3BhY2luZyI7CisgICAgCSAgICBjYXNlIEVOQ0xPU0lOR19NQVJLIDogCisgICAgCSAgICAgIHJldHVybiAiTWFyaywgRW5jbG9zaW5nIjsKKyAgICAJICAgIGNhc2UgQ09NQklOSU5HX1NQQUNJTkdfTUFSSyA6CisgICAgCSAgICAgIHJldHVybiAiTWFyaywgU3BhY2luZyBDb21iaW5pbmciOworICAgIAkgICAgY2FzZSBERUNJTUFMX0RJR0lUX05VTUJFUiA6CisgICAgCSAgICAgIHJldHVybiAiTnVtYmVyLCBEZWNpbWFsIERpZ2l0IjsKKyAgICAJICAgIGNhc2UgTEVUVEVSX05VTUJFUiA6CisgICAgCSAgICAgIHJldHVybiAiTnVtYmVyLCBMZXR0ZXIiOworICAgIAkgICAgY2FzZSBPVEhFUl9OVU1CRVIgOgorICAgIAkgICAgICByZXR1cm4gIk51bWJlciwgT3RoZXIiOworICAgIAkgICAgY2FzZSBTUEFDRV9TRVBBUkFUT1IgOgorICAgIAkgICAgICByZXR1cm4gIlNlcGFyYXRvciwgU3BhY2UiOworICAgIAkgICAgY2FzZSBMSU5FX1NFUEFSQVRPUiA6CisgICAgCSAgICAgIHJldHVybiAiU2VwYXJhdG9yLCBMaW5lIjsKKyAgICAJICAgIGNhc2UgUEFSQUdSQVBIX1NFUEFSQVRPUiA6CisgICAgCSAgICAgIHJldHVybiAiU2VwYXJhdG9yLCBQYXJhZ3JhcGgiOworICAgIAkgICAgY2FzZSBDT05UUk9MIDoKKyAgICAJICAgICAgcmV0dXJuICJPdGhlciwgQ29udHJvbCI7CisgICAgCSAgICBjYXNlIEZPUk1BVCA6CisgICAgCSAgICAgIHJldHVybiAiT3RoZXIsIEZvcm1hdCI7CisgICAgCSAgICBjYXNlIFBSSVZBVEVfVVNFIDoKKyAgICAJICAgICAgcmV0dXJuICJPdGhlciwgUHJpdmF0ZSBVc2UiOworICAgIAkgICAgY2FzZSBTVVJST0dBVEUgOgorICAgIAkgICAgICByZXR1cm4gIk90aGVyLCBTdXJyb2dhdGUiOworICAgIAkgICAgY2FzZSBEQVNIX1BVTkNUVUFUSU9OIDoKKyAgICAJICAgICAgcmV0dXJuICJQdW5jdHVhdGlvbiwgRGFzaCI7CisgICAgCSAgICBjYXNlIFNUQVJUX1BVTkNUVUFUSU9OIDoKKyAgICAJICAgICAgcmV0dXJuICJQdW5jdHVhdGlvbiwgT3BlbiI7CisgICAgCSAgICBjYXNlIEVORF9QVU5DVFVBVElPTiA6CisgICAgCSAgICAgIHJldHVybiAiUHVuY3R1YXRpb24sIENsb3NlIjsKKyAgICAJICAgIGNhc2UgQ09OTkVDVE9SX1BVTkNUVUFUSU9OIDoKKyAgICAJICAgICAgcmV0dXJuICJQdW5jdHVhdGlvbiwgQ29ubmVjdG9yIjsKKyAgICAJICAgIGNhc2UgT1RIRVJfUFVOQ1RVQVRJT04gOgorICAgIAkgICAgICByZXR1cm4gIlB1bmN0dWF0aW9uLCBPdGhlciI7CisgICAgCSAgICBjYXNlIE1BVEhfU1lNQk9MIDoKKyAgICAJICAgICAgcmV0dXJuICJTeW1ib2wsIE1hdGgiOworICAgIAkgICAgY2FzZSBDVVJSRU5DWV9TWU1CT0wgOgorICAgIAkgICAgICByZXR1cm4gIlN5bWJvbCwgQ3VycmVuY3kiOworICAgIAkgICAgY2FzZSBNT0RJRklFUl9TWU1CT0wgOgorICAgIAkgICAgICByZXR1cm4gIlN5bWJvbCwgTW9kaWZpZXIiOworICAgIAkgICAgY2FzZSBPVEhFUl9TWU1CT0wgOgorICAgIAkgICAgICByZXR1cm4gIlN5bWJvbCwgT3RoZXIiOworICAgIAkgICAgY2FzZSBJTklUSUFMX1BVTkNUVUFUSU9OIDoKKyAgICAJICAgICAgcmV0dXJuICJQdW5jdHVhdGlvbiwgSW5pdGlhbCBxdW90ZSI7CisgICAgCSAgICBjYXNlIEZJTkFMX1BVTkNUVUFUSU9OIDoKKyAgICAJICAgICAgcmV0dXJuICJQdW5jdHVhdGlvbiwgRmluYWwgcXVvdGUiOworICAgICAJfQorICAgIAlyZXR1cm4gIlVuYXNzaWduZWQiOworICAgIH0KKyAgICAJCisgICAgLy8gcHJpdmF0ZSBjb25zdHJ1Y3RvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vL0NMT1ZFUjpPRkYgCisgICAgLyoqCisgICAgICogUHJpdmF0ZSBjb25zdHJ1Y3RvciB0byBwcmV2ZW50IGluaXRpYWxpc2F0aW9uCisgICAgICovCisgICAgcHJpdmF0ZSBVQ2hhcmFjdGVyQ2F0ZWdvcnkoKQorICAgIHsKKyAgICB9CisgICAgLy8vQ0xPVkVSOk9OCit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvbGFuZy9VQ2hhcmFjdGVyRGlyZWN0aW9uLmphdmEgYi9zcmMvY29tL2libS9pY3UvbGFuZy9VQ2hhcmFjdGVyRGlyZWN0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uODEyOTYyNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9sYW5nL1VDaGFyYWN0ZXJEaXJlY3Rpb24uamF2YQpAQCAtMCwwICsxLDE5NiBAQAorLyoqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqICRTb3VyY2U6IAorKiAgICAgL3Vzci9jdnMvaWN1NGovaWN1NGovc3JjL2NvbS9pYm0vaWN1L3RleHQvVUNoYXJhY3RlckRpcmVjdGlvbi5qYXZhICQgCisqICREYXRlOiAyMDAyLzEyLzExIDIzOjM3OjQzICQgCisqICRSZXZpc2lvbjogMS43ICQKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKK3BhY2thZ2UgY29tLmlibS5pY3UubGFuZzsKKworLyoqCisgKiBFbnVtZXJhdGVkIFVuaWNvZGUgY2hhcmFjdGVyIGxpbmd1aXN0aWMgZGlyZWN0aW9uIGNvbnN0YW50cy4KKyAqIFVzZWQgYXMgcmV0dXJuIHJlc3VsdHMgZnJvbSA8YSBocmVmPVVDaGFyYWN0ZXIuaHRtbD5VQ2hhcmFjdGVyPC9hPgorICogPHA+CisgKiBUaGlzIGNsYXNzIGlzIG5vdCBzdWJjbGFzc2FibGUKKyAqIDwvcD4KKyAqIEBhdXRob3IgU3luIFdlZSBRdWVrCisgKiBAc3RhYmxlIElDVSAyLjEKKyAqLworCitwdWJsaWMgZmluYWwgY2xhc3MgVUNoYXJhY3RlckRpcmVjdGlvbgoreworICAgIC8vIHByaXZhdGUgY29uc3RydWN0b3IgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLy9DTE9WRVI6T0ZGICAKKyAgICAvKioKKyAgICAgKiBQcml2YXRlIGNvbnN0cnVjdG9yIHRvIHByZXZlbnQgaW5pdGlhbGlzYXRpb24KKyAgICAgKi8KKyAgICBwcml2YXRlIFVDaGFyYWN0ZXJEaXJlY3Rpb24oKQorICAgIHsKKyAgICB9CisgICAgLy8vQ0xPVkVSOk9OCisgICAgICAKKyAgICAvLyBwdWJsaWMgdmFyaWFibGUgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgICAKKyAgICAvKioKKyAgICAgKiBEaXJlY3Rpb25hbCB0eXBlIEwKKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBMRUZUX1RPX1JJR0hUICAgICAgICAgICAgICA9IDA7CisgICAgLyoqCisgICAgICogRGlyZWN0aW9uYWwgdHlwZSBSCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUklHSFRfVE9fTEVGVCAgICAgICAgICAgICAgPSAxOworICAgIC8qKgorICAgICAqIERpcmVjdGlvbmFsIHR5cGUgRU4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgIAlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBFVVJPUEVBTl9OVU1CRVIgICAgICAgICAgICA9IDI7CisgICAJLyoqCisgICAgICogRGlyZWN0aW9uYWwgdHlwZSBFUworICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEVVUk9QRUFOX05VTUJFUl9TRVBBUkFUT1IgID0gMzsKKyAgICAvKioKKyAgICAgKiBEaXJlY3Rpb25hbCB0eXBlIEVUCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRVVST1BFQU5fTlVNQkVSX1RFUk1JTkFUT1IgPSA0OworICAgIC8qKgorICAgICAqIERpcmVjdGlvbmFsIHR5cGUgQU4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgIAlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBUkFCSUNfTlVNQkVSICAgICAgICAgICAgICA9IDU7CisgICAJLyoqCisgICAgICogRGlyZWN0aW9uYWwgdHlwZSBDUworICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgCXB1YmxpYyBzdGF0aWMgZmluYWwgaW50IENPTU1PTl9OVU1CRVJfU0VQQVJBVE9SICAgID0gNjsKKyAgICAvKioKKyAgICAgKiBEaXJlY3Rpb25hbCB0eXBlIEIKKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCTE9DS19TRVBBUkFUT1IgICAgICAgICAgICA9IDc7CisgICAgLyoqCisgICAgICogRGlyZWN0aW9uYWwgdHlwZSBTCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovICAgICAgCisgICAJcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0VHTUVOVF9TRVBBUkFUT1IgICAgICAgICAgPSA4OworICAgCS8qKgorICAgICAqIERpcmVjdGlvbmFsIHR5cGUgV1MKKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgIAlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBXSElURV9TUEFDRV9ORVVUUkFMICAgICAgICA9IDk7CisgICAgCQorICAgIC8vIHN0YXJ0IG9mIDExIC0tLS0tLS0tLS0tLS0tLQorICAgIAkKKyAgICAvKioKKyAgICAgKiBEaXJlY3Rpb25hbCB0eXBlIE9OCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAJcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgT1RIRVJfTkVVVFJBTCAgICAgICAgICAgICAgPSAxMDsKKyAgIAkvKioKKyAgICAgKiBEaXJlY3Rpb25hbCB0eXBlIExSRQorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IExFRlRfVE9fUklHSFRfRU1CRURESU5HICAgID0gMTE7CisgICAgLyoqCisgICAgICogRGlyZWN0aW9uYWwgdHlwZSBMUk8KKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgIAlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBMRUZUX1RPX1JJR0hUX09WRVJSSURFICAgICA9IDEyOyAgCisgICAgLyoqCisgICAgICogRGlyZWN0aW9uYWwgdHlwZSBBTAorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFJJR0hUX1RPX0xFRlRfQVJBQklDICAgICAgID0gMTM7CisgICAgLyoqCisgICAgICogRGlyZWN0aW9uYWwgdHlwZSBSTEUKKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgIAlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBSSUdIVF9UT19MRUZUX0VNQkVERElORyAgICA9IDE0OworICAgCS8qKgorICAgICAqIERpcmVjdGlvbmFsIHR5cGUgUkxPCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAJcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUklHSFRfVE9fTEVGVF9PVkVSUklERSAgICAgPSAxNTsKKyAgIAkvKioKKyAgICAgKiBEaXJlY3Rpb25hbCB0eXBlIFBERgorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgCXB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBPUF9ESVJFQ1RJT05BTF9GT1JNQVQgICAgID0gMTY7CisgICAgLyoqCisgICAgICogRGlyZWN0aW9uYWwgdHlwZSBOU00KKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBESVJfTk9OX1NQQUNJTkdfTUFSSyAgICAgICA9IDE3OworICAgIC8qKgorICAgICAqIERpcmVjdGlvbmFsIHR5cGUgQk4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCT1VOREFSWV9ORVVUUkFMICAgICAgICAgICA9IDE4OworICAgIC8qKgorICAgICAqIE51bWJlciBvZiBkaXJlY3Rpb25hbCB0eXBlCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisJcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ0hBUl9ESVJFQ1RJT05fQ09VTlQgICAgICAgPSAxOTsKKwkKKwkvKioKKwkgKiBHZXRzIHRoZSBuYW1lIG9mIHRoZSBhcmd1bWVudCBkaXJlY3Rpb24KKwkgKiBAcGFyYW0gZGlyIGRpcmVjdGlvbiB0eXBlIHRvIHJldHJpZXZlIG5hbWUKKwkgKiBAcmV0dXJuIGRpcmVjdGlvbmFsIG5hbWUKKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKwkgKi8KKwlwdWJsaWMgc3RhdGljIFN0cmluZyB0b1N0cmluZyhpbnQgZGlyKQorCXsKKyAgICAJc3dpdGNoKGRpcikKKyAgICAJeworICAgIAkgICAgY2FzZSBMRUZUX1RPX1JJR0hUIDoKKyAgICAJICAgICAgcmV0dXJuICJMZWZ0LXRvLVJpZ2h0IjsKKyAgICAJICAgIGNhc2UgUklHSFRfVE9fTEVGVCA6CisgICAgCSAgICAgIHJldHVybiAiUmlnaHQtdG8tTGVmdCI7CisgICAgCSAgICBjYXNlIEVVUk9QRUFOX05VTUJFUiA6CisgICAgCSAgICAgIHJldHVybiAiRXVyb3BlYW4gTnVtYmVyIjsKKyAgICAJICAgIGNhc2UgRVVST1BFQU5fTlVNQkVSX1NFUEFSQVRPUiA6CisgICAgCSAgICAgIHJldHVybiAiRXVyb3BlYW4gTnVtYmVyIFNlcGFyYXRvciI7CisgICAgCSAgICBjYXNlIEVVUk9QRUFOX05VTUJFUl9URVJNSU5BVE9SIDoKKyAgICAJICAgICAgcmV0dXJuICJFdXJvcGVhbiBOdW1iZXIgVGVybWluYXRvciI7CisgICAgCSAgICBjYXNlIEFSQUJJQ19OVU1CRVIgOgorICAgIAkgICAgICByZXR1cm4gIkFyYWJpYyBOdW1iZXIiOworICAgIAkgICAgY2FzZSBDT01NT05fTlVNQkVSX1NFUEFSQVRPUiA6CisgICAgCSAgICAgIHJldHVybiAiQ29tbW9uIE51bWJlciBTZXBhcmF0b3IiOworICAgIAkgICAgY2FzZSBCTE9DS19TRVBBUkFUT1IgOgorICAgIAkgICAgICByZXR1cm4gIlBhcmFncmFwaCBTZXBhcmF0b3IiOworICAgIAkgICAgY2FzZSBTRUdNRU5UX1NFUEFSQVRPUiA6CisgICAgCSAgICAgIHJldHVybiAiU2VnbWVudCBTZXBhcmF0b3IiOworICAgIAkgICAgY2FzZSBXSElURV9TUEFDRV9ORVVUUkFMIDoKKyAgICAJICAgICAgcmV0dXJuICJXaGl0ZXNwYWNlIjsKKyAgICAJICAgIGNhc2UgT1RIRVJfTkVVVFJBTCA6CisgICAgCSAgICAgIHJldHVybiAiT3RoZXIgTmV1dHJhbHMiOworICAgIAkgICAgY2FzZSBMRUZUX1RPX1JJR0hUX0VNQkVERElORyA6CisgICAgCSAgICAgIHJldHVybiAiTGVmdC10by1SaWdodCBFbWJlZGRpbmciOworICAgIAkgICAgY2FzZSBMRUZUX1RPX1JJR0hUX09WRVJSSURFIDoKKyAgICAJICAgICAgcmV0dXJuICJMZWZ0LXRvLVJpZ2h0IE92ZXJyaWRlIjsKKyAgICAJICAgIGNhc2UgUklHSFRfVE9fTEVGVF9BUkFCSUMgOgorICAgIAkgICAgICByZXR1cm4gIlJpZ2h0LXRvLUxlZnQgQXJhYmljIjsKKyAgICAJICAgIGNhc2UgUklHSFRfVE9fTEVGVF9FTUJFRERJTkcgOgorICAgIAkgICAgICByZXR1cm4gIlJpZ2h0LXRvLUxlZnQgRW1iZWRkaW5nIjsKKyAgICAJICAgIGNhc2UgUklHSFRfVE9fTEVGVF9PVkVSUklERSA6CisgICAgCSAgICAgIHJldHVybiAiUmlnaHQtdG8tTGVmdCBPdmVycmlkZSI7CisgICAgCSAgICBjYXNlIFBPUF9ESVJFQ1RJT05BTF9GT1JNQVQgOgorICAgIAkgICAgICByZXR1cm4gIlBvcCBEaXJlY3Rpb25hbCBGb3JtYXQiOworICAgIAkgICAgY2FzZSBESVJfTk9OX1NQQUNJTkdfTUFSSyA6CisgICAgCSAgICAgIHJldHVybiAiTm9uLVNwYWNpbmcgTWFyayI7CisgICAgCSAgICBjYXNlIEJPVU5EQVJZX05FVVRSQUwgOgorICAgIAkgICAgICByZXR1cm4gIkJvdW5kYXJ5IE5ldXRyYWwiOworICAgIAl9CisgICAgCXJldHVybiAiVW5hc3NpZ25lZCI7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2xhbmcvVUNoYXJhY3Rlck5hbWVJdGVyYXRvci5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2xhbmcvVUNoYXJhY3Rlck5hbWVJdGVyYXRvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxNDZiMjcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvbGFuZy9VQ2hhcmFjdGVyTmFtZUl0ZXJhdG9yLmphdmEKQEAgLTAsMCArMSwzMzYgQEAKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgKgorKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L2xhbmcvVUNoYXJhY3Rlck5hbWVJdGVyYXRvci5qYXZhLHYgJAorKiAkRGF0ZTogMjAwMi8wOS8xOSAyMToxODoxNCAkCisqICRSZXZpc2lvbjogMS40ICQKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKworcGFja2FnZSBjb20uaWJtLmljdS5sYW5nOworCitpbXBvcnQgY29tLmlibS5pY3UudXRpbC5WYWx1ZUl0ZXJhdG9yOworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuVUNoYXJhY3Rlck5hbWU7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5VQ2hhcmFjdGVyTmFtZUNob2ljZTsKKworLyoqCisgKiA8cD5DbGFzcyBlbmFibGluZyBpdGVyYXRpb24gb2YgdGhlIGNvZGVwb2ludHMgYW5kIHRoZWlyIG5hbWVzLjwvcD4KKyAqIDxwPlJlc3VsdCBvZiBlYWNoIGl0ZXJhdGlvbiBjb250YWlucyBhIHZhbGlkIGNvZGVwb2ludCB0aGF0IGhhcyB2YWxpZCAKKyAqIG5hbWUuPC9wPgorICogPHA+U2VlIFVDaGFyYWN0ZXIuZ2V0TmFtZUl0ZXJhdG9yKCkgZm9yIGFuIGV4YW1wbGUgb2YgdXNlLjwvcD4KKyAqIEBhdXRob3Igc3lud2VlCisgKiBAc2luY2UgcmVsZWFzZSAyLjEsIE1hcmNoIDUgMjAwMgorICovCitjbGFzcyBVQ2hhcmFjdGVyTmFtZUl0ZXJhdG9yIGltcGxlbWVudHMgVmFsdWVJdGVyYXRvcgoreworCS8vIHB1YmxpYyBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkKKwkvKioKKyAgICAqIDxwPkdldHMgdGhlIG5leHQgcmVzdWx0IGZvciB0aGlzIGl0ZXJhdGlvbiBhbmQgcmV0dXJucyAKKyAgICAqIHRydWUgaWYgd2UgYXJlIG5vdCBhdCB0aGUgZW5kIG9mIHRoZSBpdGVyYXRpb24sIGZhbHNlIG90aGVyd2lzZS48L3A+CisgICAgKiA8cD5JZiB0aGUgcmV0dXJuIGJvb2xlYW4gaXMgYSBmYWxzZSwgdGhlIGNvbnRlbnRzIG9mIGVsZW1lbnRzIHdpbGwgbm90CisgICAgKiBiZSB1cGRhdGVkLjwvcD4KKyAgICAqIEBwYXJhbSBlbGVtZW50IGZvciBzdG9yaW5nIHRoZSByZXN1bHQgY29kZXBvaW50IGFuZCBuYW1lCisgICAgKiBAcmV0dXJuIHRydWUgaWYgd2UgYXJlIG5vdCBhdCB0aGUgZW5kIG9mIHRoZSBpdGVyYXRpb24sIGZhbHNlIG90aGVyd2lzZS4KKyAgICAqIEBzZWUgRWxlbWVudAorICAgICogQGRyYWZ0IDIuMQorICAgICovCisgICAgcHVibGljIGJvb2xlYW4gbmV4dChWYWx1ZUl0ZXJhdG9yLkVsZW1lbnQgZWxlbWVudCkKKyAgICB7CisgICAgCWlmIChtX2N1cnJlbnRfID49IG1fbGltaXRfKSB7CisgICAgCQlyZXR1cm4gZmFsc2U7CisgICAgCX0KKyAgICAJCisgICAgCWlmIChtX2Nob2ljZV8gIT0gVUNoYXJhY3Rlck5hbWVDaG9pY2UuVU5JQ09ERV8xMF9DSEFSX05BTUUpIHsKKyAgICAJCWludCBsZW5ndGggPSBtX25hbWVfLmdldEFsZ29yaXRobUxlbmd0aCgpOworICAgIAkJaWYgKG1fYWxnb3JpdGhtSW5kZXhfIDwgbGVuZ3RoKSB7CisgICAgCQkJd2hpbGUgKG1fYWxnb3JpdGhtSW5kZXhfIDwgbGVuZ3RoKSB7CisgICAgCQkJCS8vIGZpbmQgdGhlIGFsZ29yaXRobSByYW5nZSB0aGF0IGNvdWxkIGNvbnRhaW4gbV9jdXJyZW50XyAKKyAgICAJCQkJaWYgKG1fYWxnb3JpdGhtSW5kZXhfIDwgMCB8fAorICAgIAkJCQkgICAgbV9uYW1lXy5nZXRBbGdvcml0aG1FbmQobV9hbGdvcml0aG1JbmRleF8pIDwgCisgICAgCQkJCSAgICBtX2N1cnJlbnRfKSB7CisgICAgCQkJCSAJbV9hbGdvcml0aG1JbmRleF8gKys7ICAgCisgICAgCQkJCX0KKyAgICAJCQkJZWxzZSB7CisgICAgCQkJCQlicmVhazsKKyAgICAJCQkJfQorICAgIAkJCX0KKyAgICAJCQkKKyAgICAJCQlpZiAobV9hbGdvcml0aG1JbmRleF8gPCBsZW5ndGgpIHsKKyAgICAJCQkJLy8gaW50ZXJsZWF2ZSB0aGUgZGF0YS1kcml2ZW4gb25lcyB3aXRoIHRoZSBhbGdvcml0aG1pYyBvbmVzCisgICAJCQkJCS8vIGl0ZXJhdGUgb3ZlciBhbGwgYWxnb3JpdGhtaWMgcmFuZ2VzOyBhc3N1bWUgdGhhdCB0aGV5IGFyZSAKKyAgIAkJCQkJLy8gaW4gYXNjZW5kaW5nIG9yZGVyCisgICAJCQkJCWludCBzdGFydCA9IG1fbmFtZV8uZ2V0QWxnb3JpdGhtU3RhcnQobV9hbGdvcml0aG1JbmRleF8pOworICAgCQkJCQlpZiAobV9jdXJyZW50XyA8IHN0YXJ0KSB7CisgICAJCQkJCQkvLyB0aGlzIHNob3VsZCBnZXQgcmlkIG9mIHRob3NlIGNvZGVwb2ludHMgdGhhdCBhcmUgbm90CisgICAJCQkJCQkvLyBpbiB0aGUgYWxnb3JpdGhtaWMgcmFuZ2UKKyAgIAkJCQkJCWludCBlbmQgPSBzdGFydDsKKyAgICAgICAgCQkgICAgCWlmIChtX2xpbWl0XyA8PSBzdGFydCkgeworICAgICAgICAgCQkgCSAgICAgIAllbmQgPSBtX2xpbWl0XzsKKyAgICAgICAgICAJCSAgCQl9CisgICAgICAgICAgICAJCQlpZiAoIWl0ZXJhdGVHcm91cChlbGVtZW50LCBlbmQpKSB7CisgICAgICAgICAgICAJCQkJbV9jdXJyZW50XyArKzsKKyAgICAgICAgICAgICAgCSAJCSAJcmV0dXJuIHRydWU7CisgICAgICAgICAgICAJCQl9CQorICAgICAgICAJCQl9CisgICAgICAgIAkKKyAgICAgICAgCQkJaWYgKG1fY3VycmVudF8gPj0gbV9saW1pdF8pIHsKKyAgICAgICAgCQkJCS8vIGFmdGVyIGl0ZXJhdGVHcm91cCBmYWlscywgY3VycmVudCBjb2RlcG9pbnQgbWF5IGJlCisgICAgICAgIAkJCQkvLyBncmVhdGVyIHRoYW4gbGltaXQKKyAgICAgICAgCQkJCXJldHVybiBmYWxzZTsKKyAgICAgICAgCQkJfQorICAgICAgICAJCQkKKyAgICAgICAgCQkJZWxlbWVudC5pbnRlZ2VyID0gbV9jdXJyZW50XzsKKyAgICAgICAgCQkJZWxlbWVudC52YWx1ZSAgID0gbV9uYW1lXy5nZXRBbGdvcml0aG1OYW1lKG1fYWxnb3JpdGhtSW5kZXhfLCAKKyAgICAgICAgCQkgCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50Xyk7CisgICAgICAgIAkJCS8vIHJlc2V0IHRoZSBncm91cCBpbmRleCBpZiB3ZSBhcmUgaW4gdGhlIGFsZ29yaXRobWljIG5hbWVzICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgCQkJbV9ncm91cEluZGV4XyA9IC0xOyAKKyAgICAgICAgCQkJbV9jdXJyZW50XyArKzsKKyAgICAgICAgCQkJcmV0dXJuIHRydWU7CisgICAgCQkJfQorICAgIAkJfQorICAgIAl9CisgICAgCS8vIGVudW1lcmF0ZSB0aGUgY2hhcmFjdGVyIG5hbWVzIGFmdGVyIHRoZSBsYXN0IGFsZ29yaXRobWljIHJhbmdlIAorICAgIAlpZiAoIWl0ZXJhdGVHcm91cChlbGVtZW50LCBtX2xpbWl0XykpIHsKKyAgICAJCW1fY3VycmVudF8gKys7CisgICAgCQlyZXR1cm4gdHJ1ZTsKKyAgICAJfQorICAgIAllbHNlIGlmIChtX2Nob2ljZV8gPT0gVUNoYXJhY3Rlck5hbWVDaG9pY2UuRVhURU5ERURfQ0hBUl9OQU1FKSB7CisgICAgCQlpZiAoIWl0ZXJhdGVFeHRlbmRlZChlbGVtZW50LCBtX2xpbWl0XykpIHsKKyAgICAJCQltX2N1cnJlbnRfICsrOworICAgIAkJCXJldHVybiB0cnVlOworICAgIAkJfQorICAgIAl9CisgICAgCQorCQlyZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICogPHA+UmVzZXRzIHRoZSBpdGVyYXRvciB0byBzdGFydCBpdGVyYXRpbmcgZnJvbSB0aGUgaW50ZWdlciBpbmRleCAKKyAgICAqIFVDaGFyYWN0ZXIuTUlOX1ZBTFVFIG9yIFggaWYgYSBzZXRSYW5nZShYLCBZKSBoYXMgYmVlbiBjYWxsZWQgcHJldmlvdXNseS4KKyAgICAqIDwvcD4KKyAgICAqIEBkcmFmdCAyLjEKKyAgICAqLworICAgIHB1YmxpYyB2b2lkIHJlc2V0KCkKKyAgICB7CisgICAgCW1fY3VycmVudF8gICAgICAgID0gbV9zdGFydF87CisgICAgCW1fZ3JvdXBJbmRleF8gICAgID0gLTE7CisgICAgCW1fYWxnb3JpdGhtSW5kZXhfID0gLTE7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIDxwPlJlc3RyaWN0cyB0aGUgcmFuZ2Ugb2YgaW50ZWdlcnMgdG8gaXRlcmF0ZSBhbmQgcmVzZXRzIHRoZSBpdGVyYXRpb24gCisgICAgICogdG8gYmVnaW4gYXQgdGhlIGluZGV4IGFyZ3VtZW50IHN0YXJ0LjwvcD4KKyAgICAgKiA8cD5JZiBzZXRSYW5nZShzdGFydCwgZW5kKSBpcyBub3QgcGVyZm9ybWVkIGJlZm9yZSBuZXh0KGVsZW1lbnQpIGlzIAorICAgICAqIGNhbGxlZCwgdGhlIGl0ZXJhdGlvbiB3aWxsIHN0YXJ0IGZyb20gdGhlIGludGVnZXIgaW5kZXggCisgICAgICogVUNoYXJhY3Rlci5NSU5fVkFMVUUgYW5kIGVuZCBhdCBVQ2hhcmFjdGVyLk1BWF9WQUxVRS48L3A+CisgICAgICogPHA+CisgICAgICogSWYgdGhpcyByYW5nZSBpcyBzZXQgb3V0c2lkZSB0aGUgcmFuZ2Ugb2YgVUNoYXJhY3Rlci5NSU5fVkFMVUUgYW5kIAorICAgICAqIFVDaGFyYWN0ZXIuTUFYX1ZBTFVFLCBuZXh0KGVsZW1lbnQpIHdpbGwgYWx3YXlzIHJldHVybiBmYWxzZS4KKyAgICAgKiA8L3A+CisgICAgICogQHBhcmFtIHN0YXJ0IGZpcnN0IGludGVnZXIgaW4gcmFuZ2UgdG8gaXRlcmF0ZQorICAgICAqIEBwYXJhbSBsaW1pdCAxIGludGVnZXIgYWZ0ZXIgdGhlIGxhc3QgaW50ZWdlciBpbiByYW5nZSAKKyAgICAgKiBAZXhjZXB0aW9uIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiB0aHJvd24gd2hlbiBhdHRlbXB0aW5nIHRvIHNldCBhbiAKKyAgICAgKiAgICAgICAgICAgIGlsbGVnYWwgcmFuZ2UuIEUuZyBsaW1pdCA8PSBzdGFydAorICAgICAqIEBkcmFmdCAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRSYW5nZShpbnQgc3RhcnQsIGludCBsaW1pdCkKKyAgICB7CisgICAgCWlmIChzdGFydCA+PSBsaW1pdCkgeworICAgIAkgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKKyAgICAJICAgICAgICAic3RhcnQgb3IgbGltaXQgaGFzIHRvIGJlIHZhbGlkIFVuaWNvZGUgY29kZXBvaW50cyBhbmQgc3RhcnQgPCBsaW1pdCIpOworICAgIAl9CisgICAgCWlmIChzdGFydCA8IFVDaGFyYWN0ZXIuTUlOX1ZBTFVFKSB7CisgICAgCQltX3N0YXJ0XyA9IFVDaGFyYWN0ZXIuTUlOX1ZBTFVFOworICAgIAl9IAorICAgIAllbHNlIHsKKyAgICAJCW1fc3RhcnRfID0gc3RhcnQ7CisgICAgCX0KKyAgICAJCisgICAgCWlmIChsaW1pdCA+IFVDaGFyYWN0ZXIuTUFYX1ZBTFVFICsgMSkgeworICAgIAkJbV9saW1pdF8gPSBVQ2hhcmFjdGVyLk1BWF9WQUxVRSArIDE7CisgICAgCX0KKyAgICAJZWxzZSB7CisgICAgCQltX2xpbWl0XyA9IGxpbWl0OworICAgIAl9CisgICAgCW1fY3VycmVudF8gPSBtX3N0YXJ0XzsKKyAgICB9CisgICAgCisJLy8gcHJvdGVjdGVkIGNvbnN0cnVjdG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIC8qKgorICAgICogQ29uc3RydWN0b3IKKyAgICAqIEBwYXJhbSBuYW1lIG5hbWUgZGF0YQorICAgICogQHBhcmFtIGNob2ljZSBuYW1lIGNob2ljZSBmcm9tIHRoZSBjbGFzcyAKKyAgICAqICAgICAgICAgICAgICAgY29tLmlibS5pY3UubGFuZy5VQ2hhcmFjdGVyTmFtZUNob2ljZQorICAgICogQGRyYWZ0IDIuMQorICAgICovCisgICAgcHJvdGVjdGVkIFVDaGFyYWN0ZXJOYW1lSXRlcmF0b3IoVUNoYXJhY3Rlck5hbWUgbmFtZSwgaW50IGNob2ljZSkKKyAgICB7CisgICAgCW1fbmFtZV8gICAgPSBuYW1lOworICAgIAkvLyBubyBleHBsaWNpdCBjaG9pY2UgaW4gVUNoYXJhY3RlciBzbyBubyBjaGVja3Mgb24gY2hvaWNlCisgICAgIAltX2Nob2ljZV8gID0gY2hvaWNlOworICAgIAltX3N0YXJ0XyAgID0gVUNoYXJhY3Rlci5NSU5fVkFMVUU7CisgICAgCW1fbGltaXRfICAgPSBVQ2hhcmFjdGVyLk1BWF9WQUxVRSArIDE7CisgICAgCW1fY3VycmVudF8gPSBtX3N0YXJ0XzsKKyAgICB9CisgICAgCisgICAgLy8gcHJpdmF0ZSBkYXRhIG1lbWJlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIAkKKyAgCS8qKgorICAJICogTmFtZSBkYXRhCisgIAkgKi8KKyAgCXByaXZhdGUgVUNoYXJhY3Rlck5hbWUgbV9uYW1lXzsKKyAgCS8qKgorICAJICogTmFtZSBjaG9pY2UKKyAgCSAqLworICAJcHJpdmF0ZSBpbnQgbV9jaG9pY2VfOworICAJIC8qKgorICAgICAqIFN0YXJ0IGl0ZXJhdGlvbiByYW5nZQorICAgICAqLworICAgIHByaXZhdGUgaW50IG1fc3RhcnRfOworICAgIC8qKgorICAgICAqIEVuZCArIDEgaXRlcmF0aW9uIHJhbmdlCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgbV9saW1pdF87CisgICAgLyoqCisgICAgICogQ3VycmVudCBjb2RlcG9pbnQKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBtX2N1cnJlbnRfOworICAgIC8qKgorICAgICAqIEdyb3VwIGluZGV4CisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgbV9ncm91cEluZGV4XyA9IC0xOworICAgIC8qKgorICAgICAqIEFsZ29yaXRobSBpbmRleAorICAgICAqLworICAgIHByaXZhdGUgaW50IG1fYWxnb3JpdGhtSW5kZXhfID0gLTE7CisgICAgLyoqCisgICAgKiBHcm91cCB1c2UKKyAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGNoYXIgR1JPVVBfT0ZGU0VUU19bXSA9IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgY2hhcltVQ2hhcmFjdGVyTmFtZS5MSU5FU19QRVJfR1JPVVBfICsgMV07CisgICAgcHJpdmF0ZSBzdGF0aWMgY2hhciBHUk9VUF9MRU5HVEhTX1tdID0gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBjaGFyW1VDaGFyYWN0ZXJOYW1lLkxJTkVTX1BFUl9HUk9VUF8gKyAxXTsKKyAgICAKKyAgICAvLyBwcml2YXRlIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvKioKKyAgICAgKiBHcm91cCBuYW1lIGl0ZXJhdGlvbiwgaXRlcmF0ZSBhbGwgdGhlIG5hbWVzIGluIHRoZSBjdXJyZW50IDMyLWdyb3VwIGFuZCAKKyAgICAgKiByZXR1cm5zIHRoZSBmaXJzdCBjb2RlcG9pbnQgdGhhdCBoYXMgYSB2YWxpZCBuYW1lLgorIAkgKiBAcGFyYW0gcmVzdWx0IHN0b3JlcyB0aGUgcmVzdWx0IGNvZGVwb2ludCBhbmQgbmFtZQorIAkgKiBAcGFyYW0gbGltaXQgbGFzdCBjb2RlcG9pbnQgKyAxIGluIHJhbmdlIHRvIHNlYXJjaAorIAkgKiBAcmV0dXJuIGZhbHNlIGlmIGEgY29kZXBvaW50IHdpdGggYSBuYW1lIGlzIGZvdW5kIGluIGdyb3VwIGFuZCB3ZSBjYW4KKyAJICogICAgICAgICBiYWlsIGZyb20gZnVydGhlciBpdGVyYXRpb24sIHRydWUgdG8gY29udGludWUgb24gd2l0aCB0aGUgCisgCSAqICAgICAgICAgaXRlcmF0aW9uCisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIGl0ZXJhdGVTaW5nbGVHcm91cChWYWx1ZUl0ZXJhdG9yLkVsZW1lbnQgcmVzdWx0LCBpbnQgbGltaXQpIAorICAgIHsKKyAgICAJc3luY2hyb25pemVkKEdST1VQX09GRlNFVFNfKSB7CisgICAgCXN5bmNocm9uaXplZChHUk9VUF9MRU5HVEhTXykgeworIAkJCWludCBpbmRleCA9IG1fbmFtZV8uZ2V0R3JvdXBMZW5ndGhzKG1fZ3JvdXBJbmRleF8sIEdST1VQX09GRlNFVFNfLCAKKyAgICAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdST1VQX0xFTkdUSFNfKTsKKyAgICAgICAgCXdoaWxlIChtX2N1cnJlbnRfIDwgbGltaXQpIHsKKyAgICAgICAgCQlpbnQgICAgb2Zmc2V0ID0gbV9uYW1lXy5nZXRHcm91cE9mZnNldChtX2N1cnJlbnRfKTsKKyAgICAgICAgCQlTdHJpbmcgbmFtZSAgID0gbV9uYW1lXy5nZXRHcm91cE5hbWUoCisgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCArIEdST1VQX09GRlNFVFNfW29mZnNldF0sIAorICAgICAgICAJIAkgICAgICAgICAgICAgICAgICAgICAgICAgIEdST1VQX0xFTkdUSFNfW29mZnNldF0sIG1fY2hvaWNlXyk7CisgICAgICAgIAkJaWYgKChuYW1lID09IG51bGwgfHwgbmFtZS5sZW5ndGgoKSA9PSAwKSAmJiAKKyAgICAgICAgICAJIAkJbV9jaG9pY2VfID09IFVDaGFyYWN0ZXJOYW1lQ2hvaWNlLkVYVEVOREVEX0NIQVJfTkFNRSkgeworICAgICAgICAgICAJCQluYW1lID0gbV9uYW1lXy5nZXRFeHRlbmRlZE5hbWUobV9jdXJyZW50Xyk7CisgICAgICAgIAkJfQorICAgICAgICAJCWlmIChuYW1lICE9IG51bGwgJiYgbmFtZS5sZW5ndGgoKSA+IDApIHsKKyAgICAgICAgCQkJcmVzdWx0LmludGVnZXIgPSBtX2N1cnJlbnRfOworICAgICAgICAJCQlyZXN1bHQudmFsdWUgICA9IG5hbWU7CisgICAgICAgICAgCSAgCSAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAJfQorICAgICAgICAgICAgCSsrIG1fY3VycmVudF87CisgICAgICAgIAl9CisgICAgCX0KKyAgICAJfQorICAgIAlyZXR1cm4gdHJ1ZTsKKwl9CisJCisJLyoqCisgICAgICogR3JvdXAgbmFtZSBpdGVyYXRpb24sIGl0ZXJhdGUgYWxsIHRoZSBuYW1lcyBpbiB0aGUgY3VycmVudCAzMi1ncm91cCBhbmQgCisgICAgICogcmV0dXJucyB0aGUgZmlyc3QgY29kZXBvaW50IHRoYXQgaGFzIGEgdmFsaWQgbmFtZS4KKyAJICogQHBhcmFtIHJlc3VsdCBzdG9yZXMgdGhlIHJlc3VsdCBjb2RlcG9pbnQgYW5kIG5hbWUKKyAJICogQHBhcmFtIGxpbWl0IGxhc3QgY29kZXBvaW50ICsgMSBpbiByYW5nZSB0byBzZWFyY2gKKyAJICogQHJldHVybiBmYWxzZSBpZiBhIGNvZGVwb2ludCB3aXRoIGEgbmFtZSBpcyBmb3VuZCBpbiBncm91cCBhbmQgd2UgY2FuCisgCSAqICAgICAgICAgYmFpbCBmcm9tIGZ1cnRoZXIgaXRlcmF0aW9uLCB0cnVlIHRvIGNvbnRpbnVlIG9uIHdpdGggdGhlIAorIAkgKiAgICAgICAgIGl0ZXJhdGlvbgorICAgICAqLworICAgIHByaXZhdGUgYm9vbGVhbiBpdGVyYXRlR3JvdXAoVmFsdWVJdGVyYXRvci5FbGVtZW50IHJlc3VsdCwgaW50IGxpbWl0KQorICAgIHsKKyAgICAJaWYgKG1fZ3JvdXBJbmRleF8gPCAwKSB7CisgICAgCQltX2dyb3VwSW5kZXhfID0gbV9uYW1lXy5nZXRHcm91cChtX2N1cnJlbnRfKTsKKyAgICAJfQorICAgIAkKKyAgICAJd2hpbGUgKG1fZ3JvdXBJbmRleF8gPCBtX25hbWVfLm1fZ3JvdXBjb3VudF8gJiYKKyAgICAJICAgICAgIG1fY3VycmVudF8gPCBsaW1pdCkgeyAKKyAgICAJCS8vIGl0ZXJhdGUgdGlsbCB0aGUgbGFzdCBncm91cCBvciB0aGUgbGFzdCBjb2RlcG9pbnQKKyAgICAJCWludCBzdGFydE1TQiA9IG1fbmFtZV8uZ2V0Q29kZXBvaW50TVNCKG1fY3VycmVudF8pOworICAgIAkJaW50IGdNU0IgICAgID0gbV9uYW1lXy5nZXRHcm91cE1TQihtX2dyb3VwSW5kZXhfKTsgLy8gY2FuIGJlIC0xCisgICAgCQlpZiAoc3RhcnRNU0IgPT0gZ01TQikgeworICAgIAkJCWlmIChzdGFydE1TQiA9PSBtX25hbWVfLmdldENvZGVwb2ludE1TQihsaW1pdCAtIDEpKSB7CisgICAgCQkJCS8vIGlmIHN0YXJ0IGFuZCBsaW1pdCAtIDEgYXJlIGluIHRoZSBzYW1lIGdyb3VwLCB0aGVuIGVudW1lcmF0ZSAKKyAgICAJCQkJLy8gb25seSBpbiB0aGF0IG9uZQorICAgIAkJCQlyZXR1cm4gaXRlcmF0ZVNpbmdsZUdyb3VwKHJlc3VsdCwgbGltaXQpOworICAgIAkJCX0KKyAgICAJCQkvLyBlbnVtZXJhdGUgY2hhcmFjdGVycyBpbiB0aGUgcGFydGlhbCBzdGFydCBncm91cAorICAgICAgICAgICAJCS8vIGlmIChtX25hbWVfLmdldEdyb3VwT2Zmc2V0KG1fY3VycmVudF8pICE9IDApIHsKKyAgICAgICAgICAgICAgIAlpZiAoIWl0ZXJhdGVTaW5nbGVHcm91cChyZXN1bHQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgIG1fbmFtZV8uZ2V0R3JvdXBMaW1pdChnTVNCKSkpIHsKKyAgICAgICAgICAgICAgICAJcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgIAkrKyBtX2dyb3VwSW5kZXhfOyAvLyBjb250aW51ZSB3aXRoIHRoZSBuZXh0IGdyb3VwCisgICAgCQl9CQorICAgICAgIAkJZWxzZSBpZiAoc3RhcnRNU0IgPiBnTVNCKSB7CisgICAgICAgICAgIAkJCS8vIG1ha2Ugc3VyZSB0aGF0IHdlIHN0YXJ0IGVudW1lcmF0aW5nIHdpdGggdGhlIGZpcnN0IGdyb3VwIAorICAgICAgICAgICAJCQkvLyBhZnRlciBzdGFydCAKKyAgICAgICAgICAgCQkJbV9ncm91cEluZGV4XyArKzsKKyAgICAgICAJCX0KKyAgICAgICAJCWVsc2UgeyAKKyAgICAgICAJCQlpbnQgZ01JTiA9IG1fbmFtZV8uZ2V0R3JvdXBNaW4oZ01TQik7CisgICAgICAgCQkJaWYgKGdNSU4gPiBsaW1pdCkgeworICAgICAgICAgICAgICAgCQlnTUlOID0gbGltaXQ7CisgICAgICAgICAgICAJfQorICAgICAgIAkJCWlmIChtX2Nob2ljZV8gPT0gVUNoYXJhY3Rlck5hbWVDaG9pY2UuRVhURU5ERURfQ0hBUl9OQU1FKSB7CisJCQkJCWlmICghaXRlcmF0ZUV4dGVuZGVkKHJlc3VsdCwgZ01JTikpIHsKKwkJIAkJCQlyZXR1cm4gZmFsc2U7CisJCQkJCX0KKwkgIAkJCX0KKwkgIAkJCW1fY3VycmVudF8gPSBnTUlOOworICAgICAgICAJfQorICAgIAl9CisgICAgICAgIAorCQlyZXR1cm4gdHJ1ZTsKKwl9CisJCisJLyoqCisgCSAqIEl0ZXJhdGUgZXh0ZW5kZWQgbmFtZXMuCisgCSAqIEBwYXJhbSByZXN1bHQgc3RvcmVzIHRoZSByZXN1bHQgY29kZXBvaW50IGFuZCBuYW1lCisgCSAqIEBwYXJhbSBsaW1pdCBsYXN0IGNvZGVwb2ludCArIDEgaW4gcmFuZ2UgdG8gc2VhcmNoCisgCSAqIEByZXR1cm4gZmFsc2UgaWYgYSBjb2RlcG9pbnQgd2l0aCBhIG5hbWUgaXMgZm91bmQgYW5kIHdlIGNhbgorIAkgKiAgICAgICAgIGJhaWwgZnJvbSBmdXJ0aGVyIGl0ZXJhdGlvbiwgdHJ1ZSB0byBjb250aW51ZSBvbiB3aXRoIHRoZSAKKyAJICogICAgICAgICBpdGVyYXRpb24gKHRoaXMgd2lsbCBhbHdheXMgYmUgZmFsc2UgZm9yIHZhbGlkIGNvZGVwb2ludHMpCisgCSAqLyAKKwlwcml2YXRlIGJvb2xlYW4gaXRlcmF0ZUV4dGVuZGVkKFZhbHVlSXRlcmF0b3IuRWxlbWVudCByZXN1bHQsCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGltaXQpCisJeworICAgICAgICB3aGlsZSAobV9jdXJyZW50XyA8IGxpbWl0KSB7CisgICAgICAgIAlTdHJpbmcgbmFtZSA9IG1fbmFtZV8uZ2V0RXh0ZW5kZWRPcjEwTmFtZShtX2N1cnJlbnRfKTsKKyAgICAgICAgCWlmIChuYW1lICE9IG51bGwgJiYgbmFtZS5sZW5ndGgoKSA+IDApIHsKKyAgICAgICAgICAgICAgICByZXN1bHQuaW50ZWdlciA9IG1fY3VycmVudF87CisgICAgICAgIAkJcmVzdWx0LnZhbHVlICAgPSBuYW1lOworICAgIAkJCXJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICsrIG1fY3VycmVudF87CisgICAgICAgIH0KKyAgICAJcmV0dXJuIHRydWU7CisgIAl9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2xhbmcvVUNoYXJhY3RlclR5cGVJdGVyYXRvci5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2xhbmcvVUNoYXJhY3RlclR5cGVJdGVyYXRvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmJhZThlNWMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvbGFuZy9VQ2hhcmFjdGVyVHlwZUl0ZXJhdG9yLmphdmEKQEAgLTAsMCArMSw4MiBAQAorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAqCisqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvbGFuZy9VQ2hhcmFjdGVyVHlwZUl0ZXJhdG9yLmphdmEsdiAkCisqICREYXRlOiAyMDAyLzExLzE1IDIwOjM5OjI2ICQKKyogJFJldmlzaW9uOiAxLjcgJAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1Lmxhbmc7CisKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLlRyaWVJdGVyYXRvcjsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLlVDaGFyYWN0ZXJQcm9wZXJ0eTsKKworLyoqCisgKiBDbGFzcyBlbmFibGluZyBpdGVyYXRpb24gb2YgdGhlIGNvZGVwb2ludHMgYWNjb3JkaW5nIHRvIHRoZWlyIHR5cGVzLgorICogUmVzdWx0IG9mIGVhY2ggaXRlcmF0aW9uIGNvbnRhaW5zIHRoZSBpbnRlcnZhbCBvZiBjb2RlcG9pbnRzIHRoYXQgaGF2ZQorICogdGhlIHNhbWUgdHlwZS4KKyAqIEV4YW1wbGUgb2YgdXNlOjxicj4KKyAqIDxwcmU+CisgKiBSYW5nZVZhbHVlSXRlcmF0b3IgaXRlcmF0b3IgPSBVQ2hhcmFjdGVyLmdldFR5cGVJdGVyYXRvcigpOworICogUmFuZ2VWYWx1ZUl0ZXJhdG9yLkVsZW1lbnQgZWxlbWVudCA9IG5ldyBSYW5nZVZhbHVlSXRlcmF0b3IuRWxlbWVudCgpOworICogd2hpbGUgKGl0ZXJhdG9yLm5leHQoZWxlbWVudCkpIHsKKyAqICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkNvZGVwb2ludCBcXHUiICsgCisgKiAgICAgICAgICAgICAgICAgICAgICAgIEludGVnZXIudG9IZXhTdHJpbmcoZWxlbWVudC5zdGFydCkgKyAKKyAqICAgICAgICAgICAgICAgICAgICAgICAgIiB0byBjb2RlcG9pbnQgXFx1IiArCisgKiAgICAgICAgICAgICAgICAgICAgICAgIEludGVnZXIudG9IZXhTdHJpbmcoZWxlbWVudC5saW1pdCAtIDEpICsgCisgKiAgICAgICAgICAgICAgICAgICAgICAgICIgaGFzIHRoZSBjaGFyYWN0ZXIgdHlwZSAiICsgCisgKiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQudmFsdWUpOworICogfQorICogPC9wcmU+CisgKiBAYXV0aG9yIHN5bndlZQorICogQHNlZSBjb20uaWJtLmljdS51dGlsLlRyaWVJdGVyYXRvcgorICogQHNpbmNlIHJlbGVhc2UgMi4xLCBKYW4gMjQgMjAwMgorICovCitjbGFzcyBVQ2hhcmFjdGVyVHlwZUl0ZXJhdG9yIGV4dGVuZHMgVHJpZUl0ZXJhdG9yCit7CisgICAgLy8gcHJvdGVjdGVkIGNvbnN0cnVjdG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIC8qKgorICAgICogVHJpZUVudW1lcmF0aW9uIGNvbnN0cnVjdG9yCisgICAgKiBAcGFyYW0gcHJvcGVydHkgdGhlIHVuaWNvZGUgY2hhcmFjdGVyIHByb3BlcnRpZXMgdG8gYmUgdXNlZAorICAgICogQGRyYWZ0IDIuMQorICAgICovCisgICAgcHJvdGVjdGVkIFVDaGFyYWN0ZXJUeXBlSXRlcmF0b3IoVUNoYXJhY3RlclByb3BlcnR5IHByb3BlcnR5KQorICAgIHsKKyAgICAgICBzdXBlcihwcm9wZXJ0eS5tX3RyaWVfKTsKKyAgICB9CisgICAgCisgICAgLy8gcHJvdGVjdGVkIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIC8qKgorICAgICogQ2FsbGVkIGJ5IG5leHRFbGVtZW50KCkgdG8gZXh0cmFjdHMgYSAzMiBiaXQgdmFsdWUgZnJvbSBhIHRyaWUgdmFsdWUKKyAgICAqIHVzZWQgZm9yIGNvbXBhcmlzb24uCisgICAgKiBUaGlzIG1ldGhvZCBpcyB0byBiZSBvdmVyd3JpdHRlbiBpZiBzcGVjaWFsIG1hbmlwdWxhdGlvbiBpcyB0byBiZSBkb25lCisgICAgKiB0byByZXRyaWV2ZSBhIHJlbGV2YW50IGNvbXBhcmlzb24uCisgICAgKiBUaGUgZGVmYXVsdCBmdW5jdGlvbiBpcyB0byByZXR1cm4gdGhlIHZhbHVlIGFzIGl0IGlzLgorICAgICogQHBhcmFtIHZhbHVlIGEgdmFsdWUgZnJvbSB0aGUgdHJpZQorICAgICogQHJldHVybiBleHRyYWN0ZWQgdmFsdWUKKyAgICAqLworICAgIHByb3RlY3RlZCBpbnQgZXh0cmFjdChpbnQgdmFsdWUpCisgICAgeworICAgIAkvLyB0aGlzIGlzIG5lZWRlZCBiZWNhdXNlIFRyaWVJdGVyYXRvcigpIGdldHMgY2FsbGVkIGZpcnN0IGFuZCBpdAorICAgIAkvLyBpbiB0dXJuIGNhbGxzIGV4dHJhY3QgdG8gaW5zdGFudGlhdGUgdGhpcyBkZWZhdWx0IHZhbHVlCisgICAgCS8vIHNvIHNvbWV0aW1lcyBtX3Byb3BlcnR5XyBkb2VzIG5vdCBnZXQgYXNzaWduZWQgcHJvcGVybHkKKyAgICAJaWYgKG1fcHJvcGVydHlfID09IG51bGwpIHsKKyAgICAJCW1fcHJvcGVydHlfID0gVUNoYXJhY3RlclByb3BlcnR5LmdldEluc3RhbmNlKCkubV9wcm9wZXJ0eV87CisgICAgCX0KKyAgICAJcmV0dXJuIG1fcHJvcGVydHlfW3ZhbHVlXSAmIFVDaGFyYWN0ZXJQcm9wZXJ0eS5UWVBFX01BU0s7CisgICAgfQorICAgIAorICAgIC8vIHByaXZhdGUgZGF0YSBtZW1iZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIC8qKgorICAgICAqIENoYXJhY3RlciBwcm9wZXJ0eQorICAgICAqLworICAgIHByaXZhdGUgaW50IG1fcHJvcGVydHlfW107Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2xhbmcvVVByb3BlcnR5LmphdmEgYi9zcmMvY29tL2libS9pY3UvbGFuZy9VUHJvcGVydHkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODliNjY0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2xhbmcvVVByb3BlcnR5LmphdmEKQEAgLTAsMCArMSw1MjUgQEAKKy8qKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMSwgaW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAkU291cmNlOiAKKyogICAgICAvdXNyL2N2cy9pY3U0ai9pY3U0ai9zcmMvY29tL2libS9pY3UvdGV4dC9VQ2hhcmFjdGVyQ2F0ZWdvcnkuamF2YSAkIAorKiAkRGF0ZTogMjAwMi8xMi8xMSAxOTo0MTowMiAkIAorKiAkUmV2aXNpb246IDEuOSAkCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1Lmxhbmc7CisKKy8qKgorICogPHA+U2VsZWN0aW9uIGNvbnN0YW50cyBmb3IgVW5pY29kZSBwcm9wZXJ0aWVzLiA8L3A+CisgKiA8cD5UaGVzZSBjb25zdGFudHMgYXJlIHVzZWQgaW4gZnVuY3Rpb25zIGxpa2UgCisgKiBVQ2hhcmFjdGVyLmhhc0JpbmFyeVByb3BlcnR5KGludCkgdG8gc2VsZWN0IG9uZSBvZiB0aGUgVW5pY29kZSBwcm9wZXJ0aWVzLiAKKyAqIDwvcD4KKyAqIDxwPlRoZSBwcm9wZXJ0aWVzIEFQSXMgYXJlIGludGVuZGVkIHRvIHJlZmxlY3QgVW5pY29kZSBwcm9wZXJ0aWVzIGFzIAorICogZGVmaW5lZCBpbiB0aGUgVW5pY29kZSBDaGFyYWN0ZXIgRGF0YWJhc2UgKFVDRCkgYW5kIFVuaWNvZGUgVGVjaG5pY2FsIAorICogUmVwb3J0cyAoVVRSKS48L3A+CisgKiA8cD5Gb3IgZGV0YWlscyBhYm91dCB0aGUgcHJvcGVydGllcyBzZWUgPGEgaHJlZj1odHRwOi8vd3d3LnVuaWNvZGUub3JnPgorICogaHR0cDovL3d3dy51bmljb2RlLm9yZzwvYT4uPC9wPiAKKyAqIDxwPkZvciBuYW1lcyBvZiBVbmljb2RlIHByb3BlcnRpZXMgc2VlIHRoZSBVQ0QgZmlsZSBQcm9wZXJ0eUFsaWFzZXMudHh0LgorICogPC9wPiAKKyAqIDxwPkltcG9ydGFudDogSWYgSUNVIGlzIGJ1aWx0IHdpdGggVUNEIGZpbGVzIGZyb20gVW5pY29kZSB2ZXJzaW9ucyBiZWxvdyAKKyAqIDMuMiwgdGhlbiBwcm9wZXJ0aWVzIG1hcmtlZCB3aXRoICJuZXciIGFyZSBub3Qgb3Igbm90IGZ1bGx5IAorICogYXZhaWxhYmxlLiBDaGVjayBVQ2hhcmFjdGVyLmdldFVuaWNvZGVWZXJzaW9uKCkgdG8gYmUgc3VyZS48L3A+CisgKiBAYXV0aG9yIFN5biBXZWUgUXVlaworICogQGRyYWZ0IElDVSAyLjEKKyAqIEBzZWUgY29tLmlibS5pY3UubGFuZy5VQ2hhcmFjdGVyCisgKi8KK3B1YmxpYyBpbnRlcmZhY2UgVVByb3BlcnR5Cit7CisgIAkvLyBwdWJsaWMgZGF0YSBtZW1iZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgCisgIAkvKiogCisgIAkgKiA8cD5CaW5hcnkgcHJvcGVydHkgQWxwaGFiZXRpYy4gPC9wPgorICAJICogPHA+UHJvcGVydHkgZm9yIFVDaGFyYWN0ZXIuaXNVQWxwaGFiZXRpYygpLCBkaWZmZXJlbnQgZnJvbSB0aGUgcHJvcGVydHkgCisgIAkgKiBpbiBVQ2hhcmFjdGVyLmlzYWxwaGEoKS48L3A+CisgIAkgKiA8cD5MdSArIExsICsgTHQgKyBMbSArIExvICsgTmwgKyBPdGhlcl9BbHBoYWJldGljLjwvcD4KKyAgICAgKiBAZHJhZnQgSUNVIDIuMQorICAJICovIAorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFMUEhBQkVUSUMgPSAwOyAKKyAgICAvKiogCisgICAgICogRmlyc3QgY29uc3RhbnQgZm9yIGJpbmFyeSBVbmljb2RlIHByb3BlcnRpZXMuIAorICAgICAqIEBkcmFmdCBJQ1UgMi4xCisgICAgICovIAorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJJTkFSWV9TVEFSVCA9IEFMUEhBQkVUSUM7CisgICAgLyoqIAorICAgICAqIEJpbmFyeSBwcm9wZXJ0eSBBU0NJSV9IZXhfRGlnaXQgKDAtOSBBLUYgYS1mKS4KKyAgICAgKiBAZHJhZnQgSUNVIDIuMQorICAgICAqLyAKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBU0NJSV9IRVhfRElHSVQgPSAxOyAKKyAgICAvKiogCisgICAgICogPHA+QmluYXJ5IHByb3BlcnR5IEJpZGlfQ29udHJvbC48L3A+CisgICAgICogPHA+Rm9ybWF0IGNvbnRyb2xzIHdoaWNoIGhhdmUgc3BlY2lmaWMgZnVuY3Rpb25zIGluIHRoZSBCaWRpIEFsZ29yaXRobS4KKyAgICAgKiA8L3A+IAorICAgICAqIEBkcmFmdCBJQ1UgMi4xCisgICAgICovIAorICAgCXB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJJRElfQ09OVFJPTCA9IDI7IAorICAgIC8qKiAKKyAgICAgKiA8cD5CaW5hcnkgcHJvcGVydHkgQmlkaV9NaXJyb3JlZC48L3A+IAorICAgICAqIDxwPkNoYXJhY3RlcnMgdGhhdCBtYXkgY2hhbmdlIGRpc3BsYXkgaW4gUlRMIHRleHQuPC9wPiAKKyAgICAgKiA8cD5Qcm9wZXJ0eSBmb3IgVUNoYXJhY3Rlci5pc01pcnJvcmVkKCkuPC9wPiAKKyAgICAgKiA8cD5TZWUgQmlkaSBBbGdvcml0aG07IFVUUiA5LjwvcD4gCisgICAgICogQGRyYWZ0IElDVSAyLjEKKyAgICAgKi8gCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQklESV9NSVJST1JFRCA9IDM7IAorICAgIC8qKiAKKyAgICAgKiA8cD5CaW5hcnkgcHJvcGVydHkgRGFzaC48L3A+IAorICAgICAqIDxwPlZhcmlhdGlvbnMgb2YgZGFzaGVzLjwvcD4gCisgICAgICogQGRyYWZ0IElDVSAyLjEKKyAgICAgKi8gCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgREFTSCA9IDQ7IAorICAgIC8qKiAKKyAgICAgKiA8cD5CaW5hcnkgcHJvcGVydHkgRGVmYXVsdF9JZ25vcmFibGVfQ29kZV9Qb2ludCAobmV3KS4KKyAgICAgKiA8L3A+IAorICAgICAqIDxwPlByb3BlcnR5IHRoYXQgaW5kaWNhdGVzIGNvZGVwb2ludCBpcyBpZ25vcmFibGUgaW4gbW9zdCBwcm9jZXNzaW5nLgorICAgICAqIDwvcD4KKyAgICAgKiA8cD5Db2RlcG9pbnRzICgyMDYwLi4yMDZGLCBGRkYwLi5GRkZCLCBFMDAwMC4uRTBGRkYpICsgCisgICAgICogT3RoZXJfRGVmYXVsdF9JZ25vcmFibGVfQ29kZV9Qb2ludCArIChDZiArIENjICsgQ3MgLSBXaGl0ZV9TcGFjZSk8L3A+IAorICAgICAqIEBkcmFmdCBJQ1UgMi4xCisgICAgICovIAorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERFRkFVTFRfSUdOT1JBQkxFX0NPREVfUE9JTlQgPSA1OyAKKyAgICAvKiogCisgICAgICogPHA+QmluYXJ5IHByb3BlcnR5IERlcHJlY2F0ZWQgKG5ldykuPC9wPiAKKyAgICAgKiA8cD5UaGUgdXNhZ2Ugb2YgZGVwcmVjYXRlZCBjaGFyYWN0ZXJzIGlzIHN0cm9uZ2x5IGRpc2NvdXJhZ2VkLjwvcD4gCisgICAgICogQGRyYWZ0IElDVSAyLjEKKyAgICAgKi8gCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgREVQUkVDQVRFRCA9IDY7IAorICAgIC8qKiAKKyAgICAgKiA8cD5CaW5hcnkgcHJvcGVydHkgRGlhY3JpdGljLjwvcD4gCisgICAgICogPHA+Q2hhcmFjdGVycyB0aGF0IGxpbmd1aXN0aWNhbGx5IG1vZGlmeSB0aGUgbWVhbmluZyBvZiBhbm90aGVyIAorICAgICAqIGNoYXJhY3RlciB0byB3aGljaCB0aGV5IGFwcGx5LjwvcD4gCisgICAgICogQGRyYWZ0IElDVSAyLjEKKyAgICAgKi8gCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRElBQ1JJVElDID0gNzsgCisgICAgLyoqIAorICAgICAqIDxwPkJpbmFyeSBwcm9wZXJ0eSBFeHRlbmRlci48L3A+IAorICAgICAqIDxwPkV4dGVuZCB0aGUgdmFsdWUgb3Igc2hhcGUgb2YgYSBwcmVjZWRpbmcgYWxwaGFiZXRpYyBjaGFyYWN0ZXIsIGUuZy4KKyAgICAgKiBsZW5ndGggYW5kIGl0ZXJhdGlvbiBtYXJrcy48L3A+IAorICAgICAqIEBkcmFmdCBJQ1UgMi4xCisgICAgICovIAorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEVYVEVOREVSID0gODsgCisgICAgLyoqIAorICAgICAqIDxwPkJpbmFyeSBwcm9wZXJ0eSBGdWxsX0NvbXBvc2l0aW9uX0V4Y2x1c2lvbi48L3A+IAorICAgICAqIDxwPkNvbXBvc2l0aW9uRXhjbHVzaW9ucy50eHQgKyBTaW5nbGV0b24gRGVjb21wb3NpdGlvbnMgKyAKKyAgICAgKiBOb24tU3RhcnRlciBEZWNvbXBvc2l0aW9ucy48L3A+IAorICAgICAqIEBkcmFmdCBJQ1UgMi4xCisgICAgICovIAorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZVTExfQ09NUE9TSVRJT05fRVhDTFVTSU9OID0gOTsgCisgICAgLyoqIAorICAgICAqIDxwPkJpbmFyeSBwcm9wZXJ0eSBHcmFwaGVtZV9CYXNlIChuZXcpLjwvcD4KKyAgICAgKiA8cD5Gb3IgcHJvZ3JhbW1hdGljIGRldGVybWluYXRpb24gb2YgZ3JhcGhlbWUgY2x1c3RlciBib3VuZGFyaWVzLiAKKyAgICAgKiBbMC4uMTBGRkZGXS1DYy1DZi1Dcy1Dby1Dbi1abC1acC1HcmFwaGVtZV9MaW5rLUdyYXBoZW1lX0V4dGVuZC1DR0o8L3A+IAorICAgICAqIEBkcmFmdCBJQ1UgMi4xCisgICAgICovIAorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdSQVBIRU1FX0JBU0UgPSAxMDsgCisgICAgLyoqIAorICAgICAqIDxwPkJpbmFyeSBwcm9wZXJ0eSBHcmFwaGVtZV9FeHRlbmQgKG5ldykuPC9wPiAKKyAgICAgKiA8cD5Gb3IgcHJvZ3JhbW1hdGljIGRldGVybWluYXRpb24gb2YgZ3JhcGhlbWUgY2x1c3RlciBib3VuZGFyaWVzLjwvcD4gCisgICAgICogPHA+TWUrTW4rTWMrT3RoZXJfR3JhcGhlbWVfRXh0ZW5kLUdyYXBoZW1lX0xpbmstQ0dKPC9wPiAKKyAgICAgKiBAZHJhZnQgSUNVIDIuMQorICAgICAqLyAKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHUkFQSEVNRV9FWFRFTkQgPSAxMTsgCisgICAgLyoqIAorICAgICAqIDxwPkJpbmFyeSBwcm9wZXJ0eSBHcmFwaGVtZV9MaW5rIChuZXcpLjwvcD4gCisgICAgICogPHA+Rm9yIHByb2dyYW1tYXRpYyBkZXRlcm1pbmF0aW9uIG9mIGdyYXBoZW1lIGNsdXN0ZXIgYm91bmRhcmllcy48L3A+IAorICAgICAqIEBkcmFmdCBJQ1UgMi4xCisgICAgICovIAorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdSQVBIRU1FX0xJTksgPSAxMjsgCisgICAgLyoqIAorICAgICAqIDxwPkJpbmFyeSBwcm9wZXJ0eSBIZXhfRGlnaXQuPC9wPiAKKyAgICAgKiA8cD5DaGFyYWN0ZXJzIGNvbW1vbmx5IHVzZWQgZm9yIGhleGFkZWNpbWFsIG51bWJlcnMuPC9wPiAKKyAgICAgKiBAZHJhZnQgSUNVIDIuMQorICAgICAqLyAKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBIRVhfRElHSVQgPSAxMzsgCisgICAgLyoqIAorICAgICAqIDxwPkJpbmFyeSBwcm9wZXJ0eSBIeXBoZW4uPC9wPiAKKyAgICAgKiA8cD5EYXNoZXMgdXNlZCB0byBtYXJrIGNvbm5lY3Rpb25zIGJldHdlZW4gcGllY2VzIG9mIHdvcmRzLCBwbHVzIHRoZSAKKyAgICAgKiBLYXRha2FuYSBtaWRkbGUgZG90LjwvcD4gCisgICAgICogQGRyYWZ0IElDVSAyLjEKKyAgICAgKi8gCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSFlQSEVOID0gMTQ7IAorICAgIC8qKiAKKyAgICAgKiA8cD5CaW5hcnkgcHJvcGVydHkgSURfQ29udGludWUuPC9wPgorICAgICAqIDxwPkNoYXJhY3RlcnMgdGhhdCBjYW4gY29udGludWUgYW4gaWRlbnRpZmllci48L3A+IAorICAgICAqIDxwPklEX1N0YXJ0K01uK01jK05kK1BjPC9wPiAKKyAgICAgKiBAZHJhZnQgSUNVIDIuMQorICAgICAqLyAKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBJRF9DT05USU5VRSA9IDE1OyAKKyAgICAvKiogCisgICAgICogPHA+QmluYXJ5IHByb3BlcnR5IElEX1N0YXJ0LjwvcD4gCisgICAgICogPHA+Q2hhcmFjdGVycyB0aGF0IGNhbiBzdGFydCBhbiBpZGVudGlmaWVyLjwvcD4gCisgICAgICogPHA+THUrTGwrTHQrTG0rTG8rTmw8L3A+IAorICAgICAqIEBkcmFmdCBJQ1UgMi4xCisgICAgICovIAorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IElEX1NUQVJUID0gMTY7IAorICAgIC8qKiAKKyAgICAgKiA8cD5CaW5hcnkgcHJvcGVydHkgSWRlb2dyYXBoaWMuPC9wPiAKKyAgICAgKiA8cD5DSktWIGlkZW9ncmFwaHMuPC9wPiAKKyAgICAgKiBAZHJhZnQgSUNVIDIuMQorICAgICAqLyAKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBJREVPR1JBUEhJQyA9IDE3OyAKKyAgICAvKiogCisgICAgICogPHA+QmluYXJ5IHByb3BlcnR5IElEU19CaW5hcnlfT3BlcmF0b3IgKG5ldykuPC9wPiAKKyAgICAgKiA8cD5Gb3IgcHJvZ3JhbW1hdGljIGRldGVybWluYXRpb24gb2YgSWRlb2dyYXBoaWMgRGVzY3JpcHRpb24gU2VxdWVuY2VzLgorICAgICAqIDwvcD4gCisgICAgICogQGRyYWZ0IElDVSAyLjEKKyAgICAgKi8gCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSURTX0JJTkFSWV9PUEVSQVRPUiA9IDE4OyAKKyAgICAvKiogCisgICAgICogPHA+QmluYXJ5IHByb3BlcnR5IElEU19UcmluYXJ5X09wZXJhdG9yIChuZXcpLjwvcD4gCisgICAgICogPHA/Rm9yIHByb2dyYW1tYXRpYyBkZXRlcm1pbmF0aW9uIG9mIElkZW9ncmFwaGljIERlc2NyaXB0aW9uIAorICAgICAqIFNlcXVlbmNlcy48L3A+IAorICAgICAqIEBkcmFmdCBJQ1UgMi4xCisgICAgICovIAorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IElEU19UUklOQVJZX09QRVJBVE9SID0gMTk7IAorICAgIC8qKiAKKyAgICAgKiA8cD5CaW5hcnkgcHJvcGVydHkgSm9pbl9Db250cm9sLjwvcD4gCisgICAgICogPHA+Rm9ybWF0IGNvbnRyb2xzIGZvciBjdXJzaXZlIGpvaW5pbmcgYW5kIGxpZ2F0aW9uLjwvcD4gCisgICAgICogQGRyYWZ0IElDVSAyLjEKKyAgICAgKi8gCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSk9JTl9DT05UUk9MID0gMjA7IAorICAgIC8qKiAKKyAgICAgKiA8cD5CaW5hcnkgcHJvcGVydHkgTG9naWNhbF9PcmRlcl9FeGNlcHRpb24gKG5ldykuPC9wPiAKKyAgICAgKiA8cD5DaGFyYWN0ZXJzIHRoYXQgZG8gbm90IHVzZSBsb2dpY2FsIG9yZGVyIGFuZCByZXF1aXJlIHNwZWNpYWwgCisgICAgICogaGFuZGxpbmcgaW4gbW9zdCBwcm9jZXNzaW5nLjwvcD4gCisgICAgICogQGRyYWZ0IElDVSAyLjEKKyAgICAgKi8gCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTE9HSUNBTF9PUkRFUl9FWENFUFRJT04gPSAyMTsgCisgICAgLyoqIAorICAgICAqIDxwPkJpbmFyeSBwcm9wZXJ0eSBMb3dlcmNhc2UuPC9wPiAKKyAgICAgKiA8cD5TYW1lIGFzIFVDaGFyYWN0ZXIuaXNVTG93ZXJjYXNlKCksIGRpZmZlcmVudCBmcm9tIAorICAgICAqIFVDaGFyYWN0ZXIuaXNsb3dlcigpLjwvcD4gCisgICAgICogPHA+TGwrT3RoZXJfTG93ZXJjYXNlPC9wPiAKKyAgICAgKiBAZHJhZnQgSUNVIDIuMQorICAgICAqLyAKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBMT1dFUkNBU0UgPSAyMjsgCisgICAgLyoqIDxwPkJpbmFyeSBwcm9wZXJ0eSBNYXRoLjwvcD4gCisgICAgICogPHA+U20rT3RoZXJfTWF0aDwvcD4gCisgICAgICogQGRyYWZ0IElDVSAyLjEKKyAgICAgKi8gCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTUFUSCA9IDIzOyAKKyAgICAvKiogCisgICAgICogPHA+QmluYXJ5IHByb3BlcnR5IE5vbmNoYXJhY3Rlcl9Db2RlX1BvaW50LjwvcD4gCisgICAgICogPHA+Q29kZSBwb2ludHMgdGhhdCBhcmUgZXhwbGljaXRseSBkZWZpbmVkIGFzIGlsbGVnYWwgZm9yIHRoZSBlbmNvZGluZyAKKyAgICAgKiBvZiBjaGFyYWN0ZXJzLjwvcD4gCisgICAgICogQGRyYWZ0IElDVSAyLjEKKyAgICAgKi8gCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTk9OQ0hBUkFDVEVSX0NPREVfUE9JTlQgPSAyNDsgCisgICAgLyoqIAorICAgICAqIDxwPkJpbmFyeSBwcm9wZXJ0eSBRdW90YXRpb25fTWFyay48L3A+IAorICAgICAqIEBkcmFmdCBJQ1UgMi4xCisgICAgICovIAorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFFVT1RBVElPTl9NQVJLID0gMjU7IAorICAgIC8qKiAKKyAgICAgKiA8cD5CaW5hcnkgcHJvcGVydHkgUmFkaWNhbCAobmV3KS48L3A+IAorICAgICAqIDxwPkZvciBwcm9ncmFtbWF0aWMgZGV0ZXJtaW5hdGlvbiBvZiBJZGVvZ3JhcGhpYyBEZXNjcmlwdGlvbiAKKyAgICAgKiBTZXF1ZW5jZXMuPC9wPiAKKyAgICAgKiBAZHJhZnQgSUNVIDIuMQorICAgICAqLyAKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBSQURJQ0FMID0gMjY7IAorICAgIC8qKiAKKyAgICAgKiA8cD5CaW5hcnkgcHJvcGVydHkgU29mdF9Eb3R0ZWQgKG5ldykuPC9wPiAKKyAgICAgKiA8cD5DaGFyYWN0ZXJzIHdpdGggYSAic29mdCBkb3QiLCBsaWtlIGkgb3Igai48L3A+CisgICAgICogPHA+QW4gYWNjZW50IHBsYWNlZCBvbiB0aGVzZSBjaGFyYWN0ZXJzIGNhdXNlcyB0aGUgZG90IHRvIGRpc2FwcGVhci48L3A+IAorICAgICAqIEBkcmFmdCBJQ1UgMi4xCisgICAgICovIAorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNPRlRfRE9UVEVEID0gMjc7IAorICAgIC8qKiAKKyAgICAgKiA8cD5CaW5hcnkgcHJvcGVydHkgVGVybWluYWxfUHVuY3R1YXRpb24uPC9wPiAKKyAgICAgKiA8cD5QdW5jdHVhdGlvbiBjaGFyYWN0ZXJzIHRoYXQgZ2VuZXJhbGx5IG1hcmsgdGhlIGVuZCBvZiB0ZXh0dWFsIAorICAgICAqIHVuaXRzLjwvcD4gCisgICAgICogQGRyYWZ0IElDVSAyLjEKKyAgICAgKi8gCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVEVSTUlOQUxfUFVOQ1RVQVRJT04gPSAyODsgCisgICAgLyoqIAorICAgICAqIDxwPkJpbmFyeSBwcm9wZXJ0eSBVbmlmaWVkX0lkZW9ncmFwaCAobmV3KS48L3A+IAorICAgICAqIDxwPkZvciBwcm9ncmFtbWF0aWMgZGV0ZXJtaW5hdGlvbiBvZiBJZGVvZ3JhcGhpYyBEZXNjcmlwdGlvbiAKKyAgICAgKiBTZXF1ZW5jZXMuPC9wPiAKKyAgICAgKiBAZHJhZnQgSUNVIDIuMQorICAgICAqLyAKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBVTklGSUVEX0lERU9HUkFQSCA9IDI5OyAKKyAgICAvKiogCisgICAgICogPHA+QmluYXJ5IHByb3BlcnR5IFVwcGVyY2FzZS48L3A+IAorICAgICAqIDxwPlNhbWUgYXMgVUNoYXJhY3Rlci5pc1VVcHBlcmNhc2UoKSwgZGlmZmVyZW50IGZyb20gCisgICAgICogVUNoYXJhY3Rlci5pc1VwcGVyQ2FzZSgpLjwvcD4gCisgICAgICogPHA+THUrT3RoZXJfVXBwZXJjYXNlPC9wPiAKKyAgICAgKiBAZHJhZnQgSUNVIDIuMQorICAgICAqLyAKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBVUFBFUkNBU0UgPSAzMDsgCisgICAgLyoqIAorICAgICAqIDxwPkJpbmFyeSBwcm9wZXJ0eSBXaGl0ZV9TcGFjZS48L3A+IAorICAgICAqIDxwPlNhbWUgYXMgVUNoYXJhY3Rlci5pc1VXaGl0ZVNwYWNlKCksIGRpZmZlcmVudCBmcm9tIAorICAgICAqIFVDaGFyYWN0ZXIuaXNTcGFjZSgpIGFuZCBVQ2hhcmFjdGVyLmlzV2hpdGVzcGFjZSgpLjwvcD4gCisgICAgICogU3BhY2UgY2hhcmFjdGVycytUQUIrQ1IrTEYtWldTUC1aV05CU1A8L3A+IAorICAgICAqIEBkcmFmdCBJQ1UgMi4xCisgICAgICovIAorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFdISVRFX1NQQUNFID0gMzE7IAorICAgIC8qKiAKKyAgICAgKiA8cD5CaW5hcnkgcHJvcGVydHkgWElEX0NvbnRpbnVlLjwvcD4gCisgICAgICogPHA+SURfQ29udGludWUgbW9kaWZpZWQgdG8gYWxsb3cgY2xvc3VyZSB1bmRlciBub3JtYWxpemF0aW9uIGZvcm1zIAorICAgICAqIE5GS0MgYW5kIE5GS0QuPC9wPiAKKyAgICAgKiBAZHJhZnQgSUNVIDIuMQorICAgICAqLyAKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBYSURfQ09OVElOVUUgPSAzMjsgCisgICAgLyoqIAorICAgICAqIDxwPkJpbmFyeSBwcm9wZXJ0eSBYSURfU3RhcnQuPC9wPiAKKyAgICAgKiA8cD5JRF9TdGFydCBtb2RpZmllZCB0byBhbGxvdyBjbG9zdXJlIHVuZGVyIG5vcm1hbGl6YXRpb24gZm9ybXMgTkZLQyAKKyAgICAgKiBhbmQgTkZLRC48L3A+IAorICAgICAqIEBkcmFmdCBJQ1UgMi4xCisgICAgICovIAorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFhJRF9TVEFSVCA9IDMzOyAKKyAgICAvKiogCisgICAgICogPHA+T25lIG1vcmUgdGhhbiB0aGUgbGFzdCBjb25zdGFudCBmb3IgYmluYXJ5IFVuaWNvZGUgcHJvcGVydGllcy48L3A+IAorICAgICAqIEBkcmFmdCBJQ1UgMi4xCisgICAgICovIAorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJJTkFSWV9MSU1JVCA9IDM0OworICAgIC8qKiAKKyAgICAgKiBFbnVtZXJhdGVkIHByb3BlcnR5IEJpZGlfQ2xhc3MuCisgICAgICogU2FtZSBhcyBVQ2hhcmFjdGVyLmdldERpcmVjdGlvbihpbnQpLCByZXR1cm5zIFVDaGFyYWN0ZXJEaXJlY3Rpb24gdmFsdWVzLiAKKyAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCSURJX0NMQVNTID0gMHgxMDAwOworICAgIC8qKiAKKyAgICAgKiBGaXJzdCBjb25zdGFudCBmb3IgZW51bWVyYXRlZC9pbnRlZ2VyIFVuaWNvZGUgcHJvcGVydGllcy4gCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBJTlRfU1RBUlQgPSBCSURJX0NMQVNTOworICAgIC8qKiAKKyAgICAgKiBFbnVtZXJhdGVkIHByb3BlcnR5IEJsb2NrLgorICAgICAqIFNhbWUgYXMgVUNoYXJhY3Rlci5Vbmljb2RlQmxvY2sub2YoaW50KSwgcmV0dXJucyBVQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayAKKyAgICAgKiB2YWx1ZXMuIAorICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJMT0NLID0gMHgxMDAxOworICAgIC8qKiAKKyAgICAgKiBFbnVtZXJhdGVkIHByb3BlcnR5IENhbm9uaWNhbF9Db21iaW5pbmdfQ2xhc3MuCisgICAgICogU2FtZSBhcyBVQ2hhcmFjdGVyLmdldENvbWJpbmluZ0NsYXNzKGludCksIHJldHVybnMgOC1iaXQgbnVtZXJpYyB2YWx1ZXMuIAorICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IENBTk9OSUNBTF9DT01CSU5JTkdfQ0xBU1MgPSAweDEwMDI7CisgICAgLyoqIAorICAgICAqIEVudW1lcmF0ZWQgcHJvcGVydHkgRGVjb21wb3NpdGlvbl9UeXBlLgorICAgICAqIFJldHVybnMgVUNoYXJhY3Rlci5EZWNvbXBvc2l0aW9uVHlwZSB2YWx1ZXMuIAorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgREVDT01QT1NJVElPTl9UWVBFID0gMHgxMDAzOworICAgIC8qKiAKKyAgICAgKiBFbnVtZXJhdGVkIHByb3BlcnR5IEVhc3RfQXNpYW5fV2lkdGguCisgICAgICogU2VlIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvcmVwb3J0cy90cjExLworICAgICAqIFJldHVybnMgVUNoYXJhY3Rlci5FYXN0QXNpYW5XaWR0aCB2YWx1ZXMuIAorICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEVBU1RfQVNJQU5fV0lEVEggPSAweDEwMDQ7CisgICAgLyoqIAorICAgICAqIEVudW1lcmF0ZWQgcHJvcGVydHkgR2VuZXJhbF9DYXRlZ29yeS4KKyAgICAgKiBTYW1lIGFzIFVDaGFyYWN0ZXIuZ2V0VHlwZShpbnQpLCByZXR1cm5zIFVDaGFyYWN0ZXJDYXRlZ29yeSB2YWx1ZXMuIAorICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdFTkVSQUxfQ0FURUdPUlkgPSAweDEwMDU7CisgICAgLyoqIAorICAgICAqIEVudW1lcmF0ZWQgcHJvcGVydHkgSm9pbmluZ19Hcm91cC4KKyAgICAgKiBSZXR1cm5zIFVDaGFyYWN0ZXIuSm9pbmluZ0dyb3VwIHZhbHVlcy4gCisgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSk9JTklOR19HUk9VUCA9IDB4MTAwNjsKKyAgICAvKiogCisgICAgICogRW51bWVyYXRlZCBwcm9wZXJ0eSBKb2luaW5nX1R5cGUuCisgICAgICogUmV0dXJucyBVQ2hhcmFjdGVyLkpvaW5pbmdUeXBlIHZhbHVlcy4gCisgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSk9JTklOR19UWVBFID0gMHgxMDA3OworICAgIC8qKiAKKyAgICAgKiBFbnVtZXJhdGVkIHByb3BlcnR5IExpbmVfQnJlYWsuCisgICAgICogUmV0dXJucyBVQ2hhcmFjdGVyLkxpbmVCcmVhayB2YWx1ZXMuIAorICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IExJTkVfQlJFQUsgPSAweDEwMDg7CisgICAgLyoqIAorICAgICAqIEVudW1lcmF0ZWQgcHJvcGVydHkgTnVtZXJpY19UeXBlLgorICAgICAqIFJldHVybnMgVUNoYXJhY3Rlci5OdW1lcmljVHlwZSB2YWx1ZXMuIAorICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE5VTUVSSUNfVFlQRSA9IDB4MTAwOTsKKyAgICAvKiogCisgICAgICogRW51bWVyYXRlZCBwcm9wZXJ0eSBTY3JpcHQuCisgICAgICogU2FtZSBhcyBVU2NyaXB0LmdldFNjcmlwdChpbnQpLCByZXR1cm5zIFVTY3JpcHQgdmFsdWVzLiAKKyAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTQ1JJUFQgPSAweDEwMEE7CisgICAgLyoqIAorICAgICAqIE9uZSBtb3JlIHRoYW4gdGhlIGxhc3QgY29uc3RhbnQgZm9yIGVudW1lcmF0ZWQvaW50ZWdlciBVbmljb2RlIAorICAgICAqIHByb3BlcnRpZXMuIAorICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IElOVF9MSU1JVCA9IDB4MTAwQjsKKworICAgIC8qKiAKKyAgICAgKiBFbnVtZXJhdGVkIHByb3BlcnR5IEdlbmVyYWxfQ2F0ZWdvcnksIHJldHVybmVkIGFzIGEgYml0IG1hc2suIAorICAgICAqIFdoZW4gdXNlZCBpbiBVQ2hhcmFjdGVyLmdldEludFByb3BlcnR5VmFsdWUoYyksCisgICAgICogcmV0dXJucyBiaXQgbWFza3MgZm9yIFVDaGFyYWN0ZXJDYXRlZ29yeSB2YWx1ZXMgd2hlcmUgZXhhY3RseSBvbmUgYml0IGlzIHNldC4gCisgICAgICogV2hlbiB1c2VkIHdpdGggVUNoYXJhY3Rlci5nZXRQcm9wZXJ0eVZhbHVlTmFtZSgpIGFuZCBVQ2hhcmFjdGVyLmdldFByb3BlcnR5VmFsdWVFbnVtKCksIAorICAgICAqIGEgbXVsdGktYml0IG1hc2sgaXMgdXNlZCBmb3Igc2V0cyBvZiBjYXRlZ29yaWVzIGxpa2UgIkxldHRlcnMiLiAKKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLyAKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHRU5FUkFMX0NBVEVHT1JZX01BU0sgPSAweDIwMDA7IAorICAgIC8qKiAKKyAgICAgKiBGaXJzdCBjb25zdGFudCBmb3IgYml0LW1hc2sgVW5pY29kZSBwcm9wZXJ0aWVzLiAKKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE1BU0tfU1RBUlQgPSBHRU5FUkFMX0NBVEVHT1JZX01BU0s7CisgICAgLyoqIAorICAgICAqIE9uZSBtb3JlIHRoYW4gdGhlIGxhc3QgY29uc3RhbnQgZm9yIGJpdC1tYXNrIFVuaWNvZGUgcHJvcGVydGllcy4gCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8gCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTUFTS19MSU1JVCA9IDB4MjAwMTsgCisgICAgCisgICAgLyoqCisgICAgICogRmlyc3QgY29uc3RhbnQgZm9yIGRvdWJsZSBVbmljb2RlIHByb3BlcnRpZXMuCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBET1VCTEVfU1RBUlQgPSAweDMwMDA7CisgICAgLyoqCisgICAgICogRG91YmxlIHByb3BlcnR5IE51bWVyaWNfVmFsdWUuCisgICAgICogQ29ycmVzcG9uZHMgdG8gVUNoYXJhY3Rlci5nZXRVbmljb2RlTnVtZXJpY1ZhbHVlKGludCkuCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBOVU1FUklDX1ZBTFVFID0gRE9VQkxFX1NUQVJUOworICAgIC8qKgorICAgICAqIE9uZSBtb3JlIHRoYW4gdGhlIGxhc3QgY29uc3RhbnQgZm9yIGRvdWJsZSBVbmljb2RlIHByb3BlcnRpZXMuCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBET1VCTEVfTElNSVQgPSAweDMwMDE7CisgICAgLyoqCisgICAgICogRmlyc3QgY29uc3RhbnQgZm9yIHN0cmluZyBVbmljb2RlIHByb3BlcnRpZXMuCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTVFJJTkdfU1RBUlQgPSAweDQwMDA7CisgICAgLyoqCisgICAgICogU3RyaW5nIHByb3BlcnR5IEFnZS4KKyAgICAgKiBDb3JyZXNwb25kcyB0byBVQ2hhcmFjdGVyLmdldEFnZShpbnQpLgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQUdFID0gU1RSSU5HX1NUQVJUOworICAgIC8qKgorICAgICAqIFN0cmluZyBwcm9wZXJ0eSBCaWRpX01pcnJvcmluZ19HbHlwaC4KKyAgICAgKiBDb3JyZXNwb25kcyB0byBVQ2hhcmFjdGVyLmdldE1pcnJvcihpbnQpLgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQklESV9NSVJST1JJTkdfR0xZUEggPSAweDQwMDE7CisgICAgLyoqCisgICAgICogU3RyaW5nIHByb3BlcnR5IENhc2VfRm9sZGluZy4KKyAgICAgKiBDb3JyZXNwb25kcyB0byBVQ2hhcmFjdGVyLmZvbGRDYXNlKFN0cmluZywgYm9vbGVhbikuCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDQVNFX0ZPTERJTkcgPSAweDQwMDI7CisgICAgLyoqCisgICAgICogU3RyaW5nIHByb3BlcnR5IElTT19Db21tZW50LgorICAgICAqIENvcnJlc3BvbmRzIHRvIFVDaGFyYWN0ZXIuZ2V0SVNPQ29tbWVudChpbnQpLgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSVNPX0NPTU1FTlQgPSAweDQwMDM7CisgICAgLyoqCisgICAgICogU3RyaW5nIHByb3BlcnR5IExvd2VyY2FzZV9NYXBwaW5nLgorICAgICAqIENvcnJlc3BvbmRzIHRvIFVDaGFyYWN0ZXIudG9Mb3dlckNhc2UoU3RyaW5nKS4KKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IExPV0VSQ0FTRV9NQVBQSU5HID0gMHg0MDA0OworICAgIC8qKgorICAgICAqIFN0cmluZyBwcm9wZXJ0eSBOYW1lLgorICAgICAqIENvcnJlc3BvbmRzIHRvIFVDaGFyYWN0ZXIuZ2V0TmFtZShpbnQpLgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTkFNRSA9IDB4NDAwNTsKKyAgICAvKioKKyAgICAgKiBTdHJpbmcgcHJvcGVydHkgU2ltcGxlX0Nhc2VfRm9sZGluZy4KKyAgICAgKiBDb3JyZXNwb25kcyB0byBVQ2hhcmFjdGVyLmZvbGRDYXNlKGludCwgYm9vbGVhbikuCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTSU1QTEVfQ0FTRV9GT0xESU5HID0gMHg0MDA2OworICAgIC8qKgorICAgICAqIFN0cmluZyBwcm9wZXJ0eSBTaW1wbGVfTG93ZXJjYXNlX01hcHBpbmcuCisgICAgICogQ29ycmVzcG9uZHMgdG8gVUNoYXJhY3Rlci50b0xvd2VyQ2FzZShpbnQpLgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0lNUExFX0xPV0VSQ0FTRV9NQVBQSU5HID0gMHg0MDA3OworICAgIC8qKgorICAgICAqIFN0cmluZyBwcm9wZXJ0eSBTaW1wbGVfVGl0bGVjYXNlX01hcHBpbmcuCisgICAgICogQ29ycmVzcG9uZHMgdG8gVUNoYXJhY3Rlci50b1RpdGxlQ2FzZShpbnQpLgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0lNUExFX1RJVExFQ0FTRV9NQVBQSU5HID0gMHg0MDA4OworICAgIC8qKgorICAgICAqIFN0cmluZyBwcm9wZXJ0eSBTaW1wbGVfVXBwZXJjYXNlX01hcHBpbmcuCisgICAgICogQ29ycmVzcG9uZHMgdG8gVUNoYXJhY3Rlci50b1VwcGVyQ2FzZShpbnQpLgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0lNUExFX1VQUEVSQ0FTRV9NQVBQSU5HID0gMHg0MDA5OworICAgIC8qKgorICAgICAqIFN0cmluZyBwcm9wZXJ0eSBUaXRsZWNhc2VfTWFwcGluZy4KKyAgICAgKiBDb3JyZXNwb25kcyB0byBVQ2hhcmFjdGVyLnRvVGl0bGVDYXNlKFN0cmluZykuCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBUSVRMRUNBU0VfTUFQUElORyA9IDB4NDAwQTsKKyAgICAvKioKKyAgICAgKiBTdHJpbmcgcHJvcGVydHkgVW5pY29kZV8xX05hbWUuCisgICAgICogQ29ycmVzcG9uZHMgdG8gVUNoYXJhY3Rlci5nZXROYW1lMV8wKGludCkuCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBVTklDT0RFXzFfTkFNRSA9IDB4NDAwQjsKKyAgICAvKioKKyAgICAgKiBTdHJpbmcgcHJvcGVydHkgVXBwZXJjYXNlX01hcHBpbmcuCisgICAgICogQ29ycmVzcG9uZHMgdG8gVUNoYXJhY3Rlci50b1VwcGVyQ2FzZShTdHJpbmcpLgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVVBQRVJDQVNFX01BUFBJTkcgPSAweDQwMEM7CisgICAgLyoqCisgICAgICogT25lIG1vcmUgdGhhbiB0aGUgbGFzdCBjb25zdGFudCBmb3Igc3RyaW5nIFVuaWNvZGUgcHJvcGVydGllcy4KKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNUUklOR19MSU1JVCA9IDB4NDAwRDsKKworICAgIC8qKgorICAgICAqIFNlbGVjdG9yIGNvbnN0YW50cyBmb3IgVUNoYXJhY3Rlci5nZXRQcm9wZXJ0eU5hbWUoKSBhbmQKKyAgICAgKiBVQ2hhcmFjdGVyLmdldFByb3BlcnR5VmFsdWVOYW1lKCkuICBUaGVzZSBzZWxlY3RvcnMgYXJlIHVzZWQgdG8KKyAgICAgKiBjaG9vc2Ugd2hpY2ggbmFtZSBpcyByZXR1cm5lZCBmb3IgYSBnaXZlbiBwcm9wZXJ0eSBvciB2YWx1ZS4KKyAgICAgKiBBbGwgcHJvcGVydGllcyBhbmQgdmFsdWVzIGhhdmUgYSBsb25nIG5hbWUuICBNb3N0IGhhdmUgYSBzaG9ydAorICAgICAqIG5hbWUsIGJ1dCBzb21lIGRvIG5vdC4gIFVuaWNvZGUgYWxsb3dzIGZvciBhZGRpdGlvbmFsIG5hbWVzLAorICAgICAqIGJleW9uZCB0aGUgbG9uZyBhbmQgc2hvcnQgbmFtZSwgd2hpY2ggd291bGQgYmUgaW5kaWNhdGVkIGJ5CisgICAgICogTE9ORyArIGksIHdoZXJlIGk9MSwgMiwuLi4KKyAgICAgKgorICAgICAqIEBzZWUgVUNoYXJhY3RlciNnZXRQcm9wZXJ0eU5hbWUKKyAgICAgKiBAc2VlIFVDaGFyYWN0ZXIjZ2V0UHJvcGVydHlWYWx1ZU5hbWUKKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBpbnRlcmZhY2UgTmFtZUNob2ljZSB7CisgICAgICAgIC8qKgorICAgICAgICAgKiBTZWxlY3RvciBmb3IgdGhlIGFiYnJldmlhdGVkIG5hbWUgb2YgYSBwcm9wZXJ0eSBvciB2YWx1ZS4KKyAgICAgICAgICogTW9zdCBwcm9wZXJ0aWVzIGFuZCB2YWx1ZXMgaGF2ZSBhIHNob3J0IG5hbWU7IHRob3NlIHRoYXQgZG8KKyAgICAgICAgICogbm90IHJldHVybiBudWxsLgorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgc3RhdGljIGZpbmFsIGludCBTSE9SVCA9IDA7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFNlbGVjdG9yIGZvciB0aGUgbG9uZyBuYW1lIG9mIGEgcHJvcGVydHkgb3IgdmFsdWUuICBBbGwKKyAgICAgICAgICogcHJvcGVydGllcyBhbmQgdmFsdWVzIGhhdmUgYSBsb25nIG5hbWUuCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBzdGF0aWMgZmluYWwgaW50IExPTkcgPSAxOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBUaGUgbnVtYmVyIG9mIHByZWRlZmluZWQgcHJvcGVydHkgbmFtZSBjaG9pY2VzLiAgSW5kaXZpZHVhbAorICAgICAgICAgKiBwcm9wZXJ0aWVzIG9yIHZhbHVlcyBtYXkgaGF2ZSBtb3JlIHRoYW4gQ09VTlQgYWxpYXNlcy4KKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHN0YXRpYyBmaW5hbCBpbnQgQ09VTlQgPSAyOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9sYW5nL1VTY3JpcHQuamF2YSBiL3NyYy9jb20vaWJtL2ljdS9sYW5nL1VTY3JpcHQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5jN2ZhYjFiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2xhbmcvVVNjcmlwdC5qYXZhCkBAIC0wLDAgKzEsMzg5IEBACisvKioKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogQ29weXJpZ2h0IChDKSAyMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAgICAgICoKKyogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKK3BhY2thZ2UgY29tLmlibS5pY3UubGFuZzsKKworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuSUNVTG9jYWxlRGF0YTsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLkxvY2FsZVV0aWxpdHk7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5VQ2hhcmFjdGVyUHJvcGVydHk7CisKK2ltcG9ydCBqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGU7CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKK2ltcG9ydCBqYXZhLnV0aWwuTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uOworCisvKioKKyAqIEEgY2xhc3MgdG8gcmVmbGVjdCBVVFIgIzI0OiBTY3JpcHQgTmFtZXMKKyAqIChiYXNlZCBvbiBJU08gMTU5MjQ6MjAwMCwgIkNvZGUgZm9yIHRoZSByZXByZXNlbnRhdGlvbiBvZiBuYW1lcyBvZgorICogc2NyaXB0cyIpLiAgVVRSICMyNCBkZXNjcmliZXMgdGhlIGJhc2lzIGZvciBhIG5ldyBVbmljb2RlIGRhdGEgZmlsZSwKKyAqIFNjcmlwdHMudHh0LgorICogQHN0YWJsZSBJQ1UgMi40CisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBVU2NyaXB0IHsKKyAgICAvKioKKyAgICAgKiBQdXRzIGEgY29weXJpZ2h0IGluIHRoZSAuY2xhc3MgZmlsZQorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHROb3RpY2UKKyAgICAgICAgPSAiQ29weXJpZ2h0IFx1MDBhOTIwMDEgSUJNIENvcnAuICBBbGwgcmlnaHRzIHJlc2VydmVkLiI7CisgICAgCisgICAgLyoqCisgICAgICogSW52YWxpZCBjb2RlCisgICAgICogQHN0YWJsZSBJQ1UgMi40CisgICAgICovICAgIAorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IElOVkFMSURfQ09ERSA9IC0xOworICAgIC8qKgorICAgICAqIENvbW1vbgorICAgICAqIEBzdGFibGUgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IENPTU1PTiAgICAgICA9ICAwOyAgLyogWnl5eSAqLworICAgIC8qKgorICAgICAqIEluaGVyaXRlZAorICAgICAqIEBzdGFibGUgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IElOSEVSSVRFRCAgICA9ICAxOyAgLyogUWFhaSAqLworICAgIC8qKgorICAgICAqIEFyYWJpYworICAgICAqIEBzdGFibGUgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFSQUJJQyAgICAgICA9ICAyOyAgLyogQXJhYiAqLworICAgIC8qKgorICAgICAqIEFybWVuaWFuCisgICAgICogQHN0YWJsZSBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQVJNRU5JQU4gICAgID0gIDM7ICAvKiBBcm1uICovCisgICAgLyoqCisgICAgICogQmVuZ2FsaQorICAgICAqIEBzdGFibGUgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJFTkdBTEkgICAgICA9ICA0OyAgLyogQmVuZyAqLworICAgIC8qKgorICAgICAqIEJvcG9tb2ZvCisgICAgICogQHN0YWJsZSBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQk9QT01PRk8gICAgID0gIDU7ICAvKiBCb3BvICovCisgICAgLyoqCisgICAgICogQ2hlcm9rZWUKKyAgICAgKiBAc3RhYmxlIElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDSEVST0tFRSAgICAgPSAgNjsgIC8qIENoZXIgKi8KKyAgICAvKioKKyAgICAgKiBDb3B0aWMKKyAgICAgKiBAc3RhYmxlIElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDT1BUSUMgICAgICAgPSAgNzsgIC8qIFFhYWMgKi8KKyAgICAvKioKKyAgICAgKiBDeXJpbGxpYworICAgICAqIEBzdGFibGUgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IENZUklMTElDICAgICA9ICA4OyAgLyogQ3lybCAoQ3lycykgKi8KKyAgICAvKioKKyAgICAgKiBEZXNlcmV0CisgICAgICogQHN0YWJsZSBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgREVTRVJFVCAgICAgID0gIDk7ICAvKiBEc3J0ICovCisgICAgLyoqCisgICAgICogRGV2YW5hZ2FyaQorICAgICAqIEBzdGFibGUgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERFVkFOQUdBUkkgICA9IDEwOyAgLyogRGV2YSAqLworICAgIC8qKgorICAgICAqIEV0aGlvcGljCisgICAgICogQHN0YWJsZSBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRVRISU9QSUMgICAgID0gMTE7ICAvKiBFdGhpICovCisgICAgLyoqCisgICAgICogR2VvcmdpYW4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHRU9SR0lBTiAgICAgPSAxMjsgIC8qIEdlb3IgKEdlb247IEdlb2EpICovCisgICAgLyoqCisgICAgICogR290aGljCisgICAgICogQHN0YWJsZSBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR09USElDICAgICAgID0gMTM7ICAvKiBHb3RoICovCisgICAgLyoqCisgICAgICogR3JlZWsKKyAgICAgKiBAc3RhYmxlIElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHUkVFSyAgICAgICAgPSAxNDsgIC8qIEdyZWsgKi8KKyAgICAvKioKKyAgICAgKiBHdWphcmF0aQorICAgICAqIEBzdGFibGUgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEdVSkFSQVRJICAgICA9IDE1OyAgLyogR3VqciAqLworICAgIC8qKgorICAgICAqIEd1cm11a2hpCisgICAgICogQHN0YWJsZSBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgR1VSTVVLSEkgICAgID0gMTY7ICAvKiBHdXJ1ICovCisgICAgLyoqCisgICAgICogSGFuCisgICAgICogQHN0YWJsZSBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSEFOICAgICAgICAgID0gMTc7ICAvKiBIYW5pICovCisgICAgLyoqCisgICAgICogSGFuZ3VsCisgICAgICogQHN0YWJsZSBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSEFOR1VMICAgICAgID0gMTg7ICAvKiBIYW5nICovCisgICAgLyoqCisgICAgICogSGVicmV3CisgICAgICogQHN0YWJsZSBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSEVCUkVXICAgICAgID0gMTk7ICAvKiBIZWJyICovCisgICAgLyoqCisgICAgICogSGlyYWdhbmEKKyAgICAgKiBAc3RhYmxlIElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBISVJBR0FOQSAgICAgPSAyMDsgIC8qIEhpcmEgKi8KKyAgICAvKioKKyAgICAgKiBLYW5uYWRhCisgICAgICogQHN0YWJsZSBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgS0FOTkFEQSAgICAgID0gMjE7ICAvKiBLbmRhICovCisgICAgLyoqCisgICAgICogS2F0YWthbmEKKyAgICAgKiBAc3RhYmxlIElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBLQVRBS0FOQSAgICAgPSAyMjsgIC8qIEthbmEgKi8KKyAgICAvKioKKyAgICAgKiBLaG1lcgorICAgICAqIEBzdGFibGUgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEtITUVSICAgICAgICA9IDIzOyAgLyogS2htciAqLworICAgIC8qKgorICAgICAqIExhbworICAgICAqIEBzdGFibGUgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IExBTyAgICAgICAgICA9IDI0OyAgLyogTGFvbyAqLworICAgIC8qKgorICAgICAqIExhdGluCisgICAgICogQHN0YWJsZSBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTEFUSU4gICAgICAgID0gMjU7ICAvKiBMYXRuIChMYXRmOyBMYXRnKSAqLworICAgIC8qKgorICAgICAqIE1hbGF5YWxhbQorICAgICAqIEBzdGFibGUgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE1BTEFZQUxBTSAgICA9IDI2OyAgLyogTWx5bSAqLworICAgIC8qKgorICAgICAqIE1hbmdvbGlhbgorICAgICAqIEBzdGFibGUgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE1PTkdPTElBTiAgICA9IDI3OyAgLyogTW9uZyAqLworICAgIC8qKgorICAgICAqIE15YW1tYXIKKyAgICAgKiBAc3RhYmxlIElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNWUFOTUFSICAgICAgPSAyODsgIC8qIE15bXIgKi8KKyAgICAvKioKKyAgICAgKiBPZ2hhbQorICAgICAqIEBzdGFibGUgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE9HSEFNICAgICAgICA9IDI5OyAgLyogT2dhbSAqLworICAgIC8qKgorICAgICAqIE9sZCBJdGFsbGljCisgICAgICogQHN0YWJsZSBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgT0xEX0lUQUxJQyAgID0gMzA7ICAvKiBJdGFsICovCisgICAgLyoqCisgICAgICogT3JpeWEKKyAgICAgKiBAc3RhYmxlIElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBPUklZQSAgICAgICAgPSAzMTsgIC8qIE9yeWEgKi8KKyAgICAvKioKKyAgICAgKiBSdW5pYworICAgICAqIEBzdGFibGUgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFJVTklDICAgICAgICA9IDMyOyAgLyogUnVuciAqLworICAgIC8qKgorICAgICAqIFNpbmhhbGEKKyAgICAgKiBAc3RhYmxlIElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTSU5IQUxBICAgICAgPSAzMzsgIC8qIFNpbmggKi8KKyAgICAvKioKKyAgICAgKiBTeXJpYWMKKyAgICAgKiBAc3RhYmxlIElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTWVJJQUMgICAgICAgPSAzNDsgIC8qIFN5cmMgKFN5cmo7IFN5cm47IFN5cmUpICovCisgICAgLyoqCisgICAgICogVGFtaWwKKyAgICAgKiBAc3RhYmxlIElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBUQU1JTCAgICAgICAgPSAzNTsgIC8qIFRhbWwgKi8KKyAgICAvKioKKyAgICAgKiBUZWx1Z3UKKyAgICAgKiBAc3RhYmxlIElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBURUxVR1UgICAgICAgPSAzNjsgIC8qIFRlbHUgKi8KKyAgICAvKioKKyAgICAgKiBUaGFuYQorICAgICAqIEBzdGFibGUgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFRIQUFOQSAgICAgICA9IDM3OyAgLyogVGhhYSAqLworICAgIC8qKgorICAgICAqIFRoYWkKKyAgICAgKiBAc3RhYmxlIElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBUSEFJICAgICAgICAgPSAzODsgIC8qIFRoYWkgKi8KKyAgICAvKioKKyAgICAgKiBUaWJldGFuCisgICAgICogQHN0YWJsZSBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVElCRVRBTiAgICAgID0gMzk7ICAvKiBUaWJ0ICovCisgICAgLyoqCisgICAgICogVW5pZmllZCBDYW5hZGlhbiBBYm9yaWdpbmFsIFN5bWJvbHMKKyAgICAgKiBAc3RhYmxlIElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBVQ0FTICAgICAgICAgPSA0MDsgIC8qIENhbnMgKi8KKyAgICAvKioKKyAgICAgKiBZaSBzeWxsYWJsZXMKKyAgICAgKiBAc3RhYmxlIElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBZSSAgICAgICAgICAgPSA0MTsgIC8qIFlpaWkgKi8KKyAgICAvKioKKyAgICAgKiBUYWdhbG9nCisgICAgICogQHN0YWJsZSBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVEFHQUxPRyAgICAgID0gNDI7ICAvKiBUZ2xnICovCisgICAgLyoqCisgICAgICogSGFudW5vb28KKyAgICAgKiBAc3RhYmxlIElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBIQU5VTk9PICAgICAgPSA0MzsgIC8qIEhhbm8gKi8KKyAgICAvKioKKyAgICAgKiBCdWhpZAorICAgICAqIEBzdGFibGUgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJVSElEICAgICAgICA9IDQ0OyAgLyogQnVoZCAqLworICAgIC8qKgorICAgICAqIFRhZ2JhbndhCisgICAgICogQHN0YWJsZSBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVEFHQkFOV0EgICAgID0gNDU7ICAvKiBUYWdiICovCisgICAgLyoqCisgICAgICogTGltaXQKKyAgICAgKiBAc3RhYmxlIElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDT0RFX0xJTUlUICAgPSA0NjsgCisgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNDUklQVF9NQVNLICAgPSAweDAwMDAwMDdmOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFVDaGFyYWN0ZXJQcm9wZXJ0eSBwcm9wPSBVQ2hhcmFjdGVyUHJvcGVydHkuZ2V0SW5zdGFuY2UoKTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBIZWxwZXIgZnVuY3Rpb24gdG8gZmluZCB0aGUgY29kZSBmcm9tIGxvY2FsZS4KKyAgICAgKiBAcGFyYW0gTG9jYWxlIHRoZSBsb2NhbGUuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgaW50W10gZmluZENvZGVGcm9tTG9jYWxlKExvY2FsZSBsb2NhbGUpIHsKKworICAgICAgICBSZXNvdXJjZUJ1bmRsZSByYiA9IElDVUxvY2FsZURhdGEuZ2V0TG9jYWxlRWxlbWVudHMobG9jYWxlKTsKKworICAgICAgICAvLyBpZiByYiBpcyBub3QgYSBzdHJpY3QgZmFsbGJhY2sgb2YgdGhlIHJlcXVlc3RlZCBsb2NhbGUsIHJldHVybiBudWxsCisgICAgICAgIGlmIChyYj09bnVsbCB8fCAhTG9jYWxlVXRpbGl0eS5pc0ZhbGxiYWNrT2YocmIuZ2V0TG9jYWxlKCksIGxvY2FsZSkpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgU3RyaW5nW10gc2NyaXB0cyA9IHJiLmdldFN0cmluZ0FycmF5KCJMb2NhbGVTY3JpcHQiKTsKKyAgICAgICAgaW50W10gcmVzdWx0ID0gbmV3IGludFtzY3JpcHRzLmxlbmd0aF07CisgICAgICAgIGludCB3ID0gMDsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzY3JpcHRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgIGludCBjb2RlID0gVUNoYXJhY3Rlci5nZXRQcm9wZXJ0eVZhbHVlRW51bShVUHJvcGVydHkuU0NSSVBULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRzW2ldKTsKKyAgICAgICAgICAgICAgcmVzdWx0W3crK10gPSBjb2RlOworICAgICAgICAgICAgCisgICAgICAgIH0KKworICAgICAgICBpZiAodyA8IHJlc3VsdC5sZW5ndGgpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKCJiYWQgbG9jYWxlIGRhdGEsIGxpc3RlZCAiICsgc2NyaXB0cy5sZW5ndGggKyAiIHNjcmlwdHMgYnV0IGZvdW5kIG9ubHkgIiArIHcpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgICAgICAKKyAgICAvKioKKyAgICAgKiBHZXRzIGEgc2NyaXB0IGNvZGVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gbG9jYWxlIG9yIElTTyAxNTkyNCBhYmJyZXZpYXRpb24gb3IgbmFtZS4gCisgICAgICogUmV0dXJucyBNQUxBWUFNIGdpdmVuICJNYWxheWFtIiBPUiAiTWx5bSIuCisgICAgICogUmV0dXJucyBMQVRJTiBnaXZlbiAiZW4iIE9SICJlbl9VUyIgCisgICAgICogQHBhcmFtIGxvY2FsZSBMb2NhbGUKKyAgICAgKiBAcmV0dXJuIFRoZSBzY3JpcHQgY29kZXMgYXJyYXkuIG51bGwgaWYgdGhlIHRoZSBjb2RlIGNhbm5vdCBiZSBmb3VuZC4gCisgICAgICogQHN0YWJsZSBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnRbXSBnZXRDb2RlKExvY2FsZSBsb2NhbGUpeworICAgICAgICByZXR1cm4gZmluZENvZGVGcm9tTG9jYWxlKGxvY2FsZSk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEdldHMgYSBzY3JpcHQgY29kZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBsb2NhbGUgb3IgSVNPIDE1OTI0IGFiYnJldmlhdGlvbiBvciBuYW1lLiAKKyAgICAgKiBSZXR1cm5zIE1BTEFZQU0gZ2l2ZW4gIk1hbGF5YW0iIE9SICJNbHltIi4KKyAgICAgKiBSZXR1cm5zIExBVElOIGdpdmVuICJlbiIgT1IgImVuX1VTIiAKKyAgICAgKgorICAgICAqIDxwPk5vdGU6IFRvIHNlYXJjaCBieSBzaG9ydCBvciBsb25nIHNjcmlwdCBhbGlhcyBvbmx5LCB1c2UKKyAgICAgKiBVQ2hhcmFjYXRlci5nZXRQcm9wZXJ0eVZhbHVlRW51bShVUHJvcGVydHkuU0NSSVBULCBhbGlhcykKKyAgICAgKiBpbnN0ZWFkLiAgVGhpcyBkb2VzIGEgZmFzdCBsb29rdXAgd2l0aCBubyBhY2Nlc3Mgb2YgdGhlIGxvY2FsZQorICAgICAqIGRhdGEuCisgICAgICogQHBhcmFtIG5hbWVPckFiYnJPckxvY2FsZSBuYW1lIG9mIHRoZSBzY3JpcHQgb3IgSVNPIDE1OTI0IGNvZGUgb3IgbG9jYWxlCisgICAgICogQHJldHVybiBUaGUgc2NyaXB0IGNvZGVzIGFycmF5LiBudWxsIGlmIHRoZSB0aGUgY29kZSBjYW5ub3QgYmUgZm91bmQuCisgICAgICogQHN0YWJsZSBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnRbXSBnZXRDb2RlKFN0cmluZyBuYW1lT3JBYmJyT3JMb2NhbGUpeworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBpbnRbXSB7CisgICAgICAgICAgICAgICAgVUNoYXJhY3Rlci5nZXRQcm9wZXJ0eVZhbHVlRW51bShVUHJvcGVydHkuU0NSSVBULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZU9yQWJick9yTG9jYWxlKQorICAgICAgICAgICAgfTsKKyAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHJldHVybiBmaW5kQ29kZUZyb21Mb2NhbGUoTG9jYWxlVXRpbGl0eS5nZXRMb2NhbGVGcm9tTmFtZShuYW1lT3JBYmJyT3JMb2NhbGUpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKiAKKyAgICAgKiBHZXRzIHRoZSBzY3JpcHQgY29kZSBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIGNvZGVwb2ludC4KKyAgICAgKiBSZXR1cm5zIFVTY3JpcHQuTUFMQVlBTSBnaXZlbiAweDBEMDIgCisgICAgICogQHBhcmFtIGNvZGVwb2ludCBVQ2hhcjMyIGNvZGVwb2ludAorICAgICAqIEByZXR1cm4gVGhlIHNjcmlwdCBjb2RlIAorICAgICAqIEBzdGFibGUgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IGdldFNjcmlwdChpbnQgY29kZXBvaW50KXsKKyAgICAgICAgaWYgKGNvZGVwb2ludCA+PSBVQ2hhcmFjdGVyLk1JTl9WQUxVRSAmIGNvZGVwb2ludCA8PSBVQ2hhcmFjdGVyLk1BWF9WQUxVRSkgeworICAgICAgICAgICAgcmV0dXJuIChpbnQpKHByb3AuZ2V0QWRkaXRpb25hbChjb2RlcG9pbnQsMCkgJiBTQ1JJUFRfTUFTSyk7CisgICAgICAgIH1lbHNleworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbihJbnRlZ2VyLnRvU3RyaW5nKGNvZGVwb2ludCkpOworICAgICAgICB9IAorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBHZXRzIGEgc2NyaXB0IG5hbWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBzY3JpcHQgY29kZS4gCisgICAgICogUmV0dXJucyAgIk1hbGF5YW0iIGdpdmVuIE1BTEFZQU0KKyAgICAgKiBAcGFyYW0gc2NyaXB0Q29kZSBpbnQgc2NyaXB0IGNvZGUKKyAgICAgKiBAcmV0dXJuIHNjcmlwdCBuYW1lIGFzIGEgc3RyaW5nIGluIGZ1bGwgYXMgZ2l2ZW4gaW4gVFIjMjQKKyAgICAgKiBAc3RhYmxlIElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBnZXROYW1lKGludCBzY3JpcHRDb2RlKXsKKyAgICAgICAgcmV0dXJuIFVDaGFyYWN0ZXIuZ2V0UHJvcGVydHlWYWx1ZU5hbWUoVVByb3BlcnR5LlNDUklQVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0Q29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVByb3BlcnR5Lk5hbWVDaG9pY2UuTE9ORyk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEdldHMgYSBzY3JpcHQgbmFtZSBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIHNjcmlwdCBjb2RlLiAKKyAgICAgKiBSZXR1cm5zICAiTWx5bSIgZ2l2ZW4gTUFMQVlBTQorICAgICAqIEBwYXJhbSBzY3JpcHRDb2RlIGludCBzY3JpcHQgY29kZSAKKyAgICAgKiBAcmV0dXJuIHNjcmlwdCBhYmJyZXZpYXRlZCBuYW1lIGFzIGEgc3RyaW5nICBhcyBnaXZlbiBpbiBUUiMyNAorICAgICAqIEBzdGFibGUgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGdldFNob3J0TmFtZShpbnQgc2NyaXB0Q29kZSl7CisgICAgICAgIHJldHVybiBVQ2hhcmFjdGVyLmdldFByb3BlcnR5VmFsdWVOYW1lKFVQcm9wZXJ0eS5TQ1JJUFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdENvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVQcm9wZXJ0eS5OYW1lQ2hvaWNlLlNIT1JUKTsKKyAgICB9CisgICAgLy8vQ0xPVkVSOk9GRgorICAgIC8qKgorICAgICAqICBQcml2YXRlIENvbnN0cnVjdG9yLiBOZXZlciBkZWZhdWx0IGNvbnN0cnVjdAorICAgICAqLworICAgIHByaXZhdGUgVVNjcmlwdCgpe30KKyAgICAvLy9DTE9WRVI6T04KK30KKwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2xhbmcvVVNjcmlwdFJ1bi5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L2xhbmcvVVNjcmlwdFJ1bi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmYTk0MzgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvbGFuZy9VU2NyaXB0UnVuLmphdmEKQEAgLTAsMCArMSw1MzAgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyAqICAgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1Lmxhbmc7CisKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0LlVDaGFyYWN0ZXJJdGVyYXRvcjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0LlVGb3J3YXJkQ2hhcmFjdGVySXRlcmF0b3I7CisKKy8qKgorICogPGNvZGU+VVNjcmlwdFJ1bjwvY29kZT4gaXMgdXNlZCB0byBmaW5kIHJ1bnMgb2YgY2hhcmFjdGVycyBpbgorICogdGhlIHNhbWUgc2NyaXB0LCBhcyBkZWZpbmVkIGluIHRoZSA8Y29kZT5VU2NyaXB0PC9jb2RlPiBjbGFzcy4KKyAqIEl0IGltcGxlbWVudHMgYSBzaW1wbGUgaXRlcmF0b3Igb3ZlciBhbiBhcnJheSBvZiBjaGFyYWN0ZXJzLgorICogVGhlIGl0ZXJhdG9yIHdpbGwgYXNzaWduIDxjb2RlPkNPTU1PTjwvY29kZT4gYW5kIDxjb2RlPklOSEVSSVRFRDwvY29kZT4KKyAqIGNoYXJhY3RlcnMgdG8gdGhlIHNhbWUgc2NyaXB0IGFzIHRoZSBwcmVjZWVkaW5nIGNoYXJhY3RlcnMuIElmIHRoZQorICogQ09NTU9OIGFuZCBJTkhFUklURUQgY2hhcmFjdGVycyBhcmUgZmlyc3QsIHRoZXkgd2lsbCBiZSBhc3NpZ25lZCB0bworICogdGhlIHNhbWUgc2NyaXB0IGFzIHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVycy4KKyAqCisgKiBUaGUgaXRlcmF0b3Igd2lsbCB0cnkgdG8gbWF0Y2ggcGFpcmVkIHB1bmN0dWF0aW9uLiBJZiBpdCBzZWVzIGFuCisgKiBvcGVuaW5nIHB1bmN0dWF0aW9uIGNoYXJhY3RlciwgaXQgd2lsbCByZW1lbWJlciB0aGUgc2NyaXB0IHRoYXQKKyAqIHdhcyBhc3NpZ25lZCB0byB0aGF0IGNoYXJhY3RlciwgYW5kIGFzc2lnbiB0aGUgc2FtZSBzY3JpcHQgdG8gdGhlCisgKiBtYXRjaGluZyBjbG9zaW5nIHB1bmN0dWF0aW9uLgorICoKKyAqIE5vIGF0dGVtcHQgaXMgbWFkZSB0byBjb21iaW5lIHJlbGF0ZWQgc2NyaXB0cyBpbnRvIGEgc2luZ2xlIHJ1bi4gSW4KKyAqIHBhcnRpY3VsYXIsIEhpcmFnYW5hLCBLYXRha2FuYSwgYW5kIEhhbiBjaGFyYWN0ZXJzIHdpbGwgYXBwZWFyIGluIHNlcGVyYXRlCisgKiBydW5zLgorCisgKiBIZXJlIGlzIGFuIGV4YW1wbGUgb2YgaG93IHRvIGl0ZXJhdGUgb3ZlciBzY3JpcHQgcnVuczoKKyAqIDxwcmU+CisgKiB2b2lkIHByaW50U2NyaXB0UnVucyhjaGFyW10gdGV4dCkKKyAqIHsKKyAqICAgICBVU2NyaXB0UnVuIHNjcmlwdFJ1biA9IG5ldyBVU2NyaXB0UnVuKHRleHQpOworICoKKyAqICAgICB3aGlsZSAoc2NyaXB0UnVuLm5leHQoKSkgeworICogICAgICAgICBpbnQgc3RhcnQgID0gc2NyaXB0UnVuLmdldFNjcmlwdFN0YXJ0KCk7CisgKiAgICAgICAgIGludCBsaW1pdCAgPSBzY3JpcHRSdW4uZ2V0U2NyaXB0TGltaXQoKTsKKyAqICAgICAgICAgaW50IHNjcmlwdCA9IHNjcmlwdFJ1bi5nZXRTY3JpcHRDb2RlKCk7CisgKgorICogICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlNjcmlwdCBcIiIgKyBVU2NyaXB0LmdldE5hbWUoc2NyaXB0KSArICJcIiBmcm9tICIgKworICogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgKyAiIHRvICIgKyBsaW1pdCArICIuIik7CisgKiAgICAgfQorICogIH0KKyAqIDwvcHJlPgorICoKKyAqIEBpbnRlcm5hbAorICovCitwdWJsaWMgZmluYWwgY2xhc3MgVVNjcmlwdFJ1bgoreworICAgIC8qKgorICAgICAqIFB1dHMgYSBjb3B5cmlnaHQgaW4gdGhlIC5jbGFzcyBmaWxlCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodE5vdGljZQorICAgICAgICA9ICJDb3B5cmlnaHQgXHUwMGE5MTk5OS0yMDAyIElCTSBDb3JwLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4iOworCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGFuIGVtcHR5IDxjb2RlPlVTY3JpcHRSdW48L2NvZGU+IG9iamVjdC4gVGhlIDxjb2RlPm5leHQoKTwvY29kZT4KKyAgICAgKiBtZXRob2Qgd2lsbCByZXR1cm4gPGNvZGU+ZmFsc2U8L2NvZGU+IHRoZSBmaXJzdCB0aW1lIGl0IGlzIGNhbGxlZC4KKyAgICAgKgorICAgICAqIEBpbnRlcm5hbAorICAgICAqLworICAgIHB1YmxpYyBVU2NyaXB0UnVuKCkKKyAgICB7CisgICAgICAgIGNoYXJbXSBudWxsQ2hhcnMgPSBudWxsOworICAgICAgICAKKyAgICAgICAgcmVzZXQobnVsbENoYXJzLCAwLCAwKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGEgPGNvZGU+VVNjcmlwdFJ1bjwvY29kZT4gb2JqZWN0IHdoaWNoIGl0ZXJhdGVzIG92ZXIgdGhlCisgICAgICogY2hhcmFjdGVycyBpbiB0aGUgZ2l2ZW4gc3RyaW5nLgorICAgICAqCisgICAgICogQHBhcmFtIHRleHQgdGhlIHN0cmluZyBvZiBjaGFyYWN0ZXJzIG92ZXIgd2hpY2ggdG8gaXRlcmF0ZS4KKyAgICAgKgorICAgICAqIEBpbnRlcm5hbAorICAgICAqLworICAgIHB1YmxpYyBVU2NyaXB0UnVuKFN0cmluZyB0ZXh0KQorICAgIHsKKyAgICAgICAgcmVzZXQgKHRleHQpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgYSA8Y29kZT5VU2NyaXB0UnVuPC9jb2RlPiBvYmplY3Qgd2hpY2ggaXRlcmF0ZXMgb3ZlciBhIHN1YnJhbmdlCisgICAgICogb2YgdGhlIGNoYXJhY2V0cnMgaW4gdGhlIGdpdmVuIHN0cmluZy4KKyAgICAgKgorICAgICAqIEBwYXJhbSB0ZXh0IHRoZSBzdHJpbmcgb2YgY2hhcmFjdGVycyBvdmVyIHdoaWNoIHRvIGl0ZXJhdGUuCisgICAgICogQHBhcmFtIHN0YXJ0IHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIG92ZXIgd2hpY2ggdG8gaXRlcmF0ZQorICAgICAqIEBwYXJhbSBjb3VudCB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgb3ZlciB3aGljaCB0byBpdGVyYXRlCisgICAgICoKKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKi8KKyAgICBwdWJsaWMgVVNjcmlwdFJ1bihTdHJpbmcgdGV4dCwgaW50IHN0YXJ0LCBpbnQgY291bnQpCisgICAgeworICAgICAgICByZXNldCh0ZXh0LCBzdGFydCwgY291bnQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdCBhIDxjb2RlPlVTY3JpcHRSdW48L2NvZGU+IG9iamVjdCB3aGljaCBpdGVyYXRlcyBvdmVyIHRoZSBnaXZlbgorICAgICAqIGNoYXJhY2V0cnMuCisgICAgICoKKyAgICAgKiBAcGFyYW0gY2hhcnMgdGhlIGFycmF5IG9mIGNoYXJhY3RlcnMgb3ZlciB3aGljaCB0byBpdGVyYXRlLgorICAgICAqCisgICAgICogQGludGVybmFsCisgICAgICovCisgICAgcHVibGljIFVTY3JpcHRSdW4oY2hhcltdIGNoYXJzKQorICAgIHsKKyAgICAgICAgcmVzZXQoY2hhcnMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdCBhIDxjb2RlPlVTY3JpcHRSdW48L2NvZGU+IG9iamVjdCB3aGljaCBpdGVyYXRlcyBvdmVyIGEgc3VicmFuZ2UKKyAgICAgKiBvZiB0aGUgZ2l2ZW4gY2hhcmFjZXRycy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBjaGFycyB0aGUgYXJyYXkgb2YgY2hhcmFjdGVycyBvdmVyIHdoaWNoIHRvIGl0ZXJhdGUuCisgICAgICogQHBhcmFtIHN0YXJ0IHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIG92ZXIgd2hpY2ggdG8gaXRlcmF0ZQorICAgICAqIEBwYXJhbSBjb3VudCB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgb3ZlciB3aGljaCB0byBpdGVyYXRlCisgICAgICoKKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKi8KKyAgICBwdWJsaWMgVVNjcmlwdFJ1bihjaGFyW10gY2hhcnMsIGludCBzdGFydCwgaW50IGNvdW50KQorICAgIHsKKyAgICAgICAgcmVzZXQoY2hhcnMsIHN0YXJ0LCBjb3VudCk7CisgICAgfQorCisKKyAgICAvKioKKyAgICAgKiBSZXNldCB0aGUgaXRlcmF0b3IgdG8gdGhlIHN0YXJ0IG9mIHRoZSB0ZXh0LgorICAgICAqCisgICAgICogQGludGVybmFsCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHZvaWQgcmVzZXQoKQorICAgIHsKKyAgICAgICAgc2NyaXB0U3RhcnQgPSB0ZXh0U3RhcnQ7CisgICAgICAgIHNjcmlwdExpbWl0ID0gdGV4dFN0YXJ0OworICAgICAgICBzY3JpcHRDb2RlICA9IFVTY3JpcHQuSU5WQUxJRF9DT0RFOworICAgICAgICBwYXJlblNQICAgICA9IC0xOworICAgICAgICAKKyAgICAgICAgdGV4dC5zZXRUb1N0YXJ0KCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVzZXQgdGhlIGl0ZXJhdG9yIHRvIGl0ZXJhdGUgb3ZlciB0aGUgZ2l2ZW4gcmFuZ2Ugb2YgdGhlIHRleHQuIFRocm93cworICAgICAqIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgcmFuZ2UgaXMgb3V0c2lkZSBvZiB0aGUgYm91bmRzIG9mIHRoZQorICAgICAqIGNoYXJhY3RlciBhcnJheS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzdGFydCB0aGUgaW5kZXggb2YgdGhlIG5ldyBmaXJzdCBjaGFyYWN0ZXIgb3ZlciB3aGljaCB0byBpdGVyYXRlCisgICAgICogQHBhcmFtIGNvdW50IHRoZSBuZXcgbnVtYmVyIG9mIGNoYXJhY3RlcnMgb3ZlciB3aGljaCB0byBpdGVyYXRlLgorICAgICAqIEBleGNlcHRpb24gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uCisgICAgICoKKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgdm9pZCByZXNldChpbnQgc3RhcnQsIGludCBjb3VudCkKKyAgICB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uCisgICAgeworICAgICAgICBpbnQgbGVuID0gMDsKKyAgICAgICAgCisgICAgICAgIGlmICh0ZXh0ICE9IG51bGwpIHsKKyAgICAgICAgICAgIGxlbiA9IHRleHQuZ2V0TGVuZ3RoKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChzdGFydCA8IDAgfHwgY291bnQgPCAwIHx8IHN0YXJ0ID4gbGVuIC0gY291bnQpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdGV4dFN0YXJ0ID0gc3RhcnQ7CisgICAgICAgIHRleHRMaW1pdCA9IHN0YXJ0ICsgY291bnQ7CisKKyAgICAgICAgcmVzZXQoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXNldCB0aGUgaXRlcmF0b3IgdG8gaXRlcmF0ZSBvdmVyIDxjb2RlPmNvdW50PC9jb2RlPiBjaGFyYWN0ZXJzCisgICAgICogaW4gPGNvZGU+Y2hhcnM8L2NvZGU+IHN0YXJ0aW5nIGF0IDxjb2RlPnN0YXJ0PC9jb2RlPi4gVGhpcyBhbGxvd3MKKyAgICAgKiBjbGllbnRzIHRvIHJldXNlIGFuIGl0ZXJhdG9yLgorICAgICAqCisgICAgICogQHBhcmFtIGNoYXJzIHRoZSBuZXcgYXJyYXkgb2YgY2hhcmFjdGVycyBvdmVyIHdoaWNoIHRvIGl0ZXJhdGUuCisgICAgICogQHBhcmFtIHN0YXJ0IHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIG92ZXIgd2hpY2ggdG8gaXRlcmF0ZS4KKyAgICAgKiBAcGFyYW0gY291bnQgdGhlIG51YmVyIG9mIGNoYXJhY3RlcnMgb3ZlciB3aGljaCB0byBpdGVyYXRlLgorICAgICAqCisgICAgICogQGludGVybmFsCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHZvaWQgcmVzZXQoY2hhcltdIGNoYXJzLCBpbnQgc3RhcnQsIGludCBjb3VudCkKKyAgICB7CisgICAgICAgIGlmIChjaGFycyA9PSBudWxsKSB7CisgICAgICAgICAgICBjaGFycyA9IGVtcHR5Q2hhckFycmF5OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0ZXh0ID0gVUNoYXJhY3Rlckl0ZXJhdG9yLmdldEluc3RhbmNlKGNoYXJzLCBzdGFydCwgc3RhcnQgKyBjb3VudCk7CisKKyAgICAgICAgcmVzZXQoc3RhcnQsIGNvdW50KTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmVzZXQgdGhlIGl0ZXJhdG9yIHRvIGl0ZXJhdGUgb3ZlciB0aGUgY2hhcmFjdGVycworICAgICAqIGluIDxjb2RlPmNoYXJzPC9jb2RlPi4gVGhpcyBhbGxvd3MgY2xpZW50cyB0byByZXVzZSBhbiBpdGVyYXRvci4KKyAgICAgKgorICAgICAqIEBwYXJhbSBjaGFycyB0aGUgbmV3IGFycmF5IG9mIGNoYXJhY3RlcnMgb3ZlciB3aGljaCB0byBpdGVyYXRlLgorICAgICAqCisgICAgICogQGludGVybmFsCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHZvaWQgcmVzZXQoY2hhcltdIGNoYXJzKQorICAgIHsKKyAgICAgICAgaW50IGxlbmd0aCA9IDA7CisgICAgICAgIAorICAgICAgICBpZiAoY2hhcnMgIT0gbnVsbCkgeworICAgICAgICAgICAgbGVuZ3RoID0gY2hhcnMubGVuZ3RoOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXNldChjaGFycywgMCwgbGVuZ3RoKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmVzZXQgdGhlIGl0ZXJhdG9yIHRvIGl0ZXJhdGUgb3ZlciA8Y29kZT5jb3VudDwvY29kZT4gY2hhcmFjdGVycworICAgICAqIGluIDxjb2RlPnRleHQ8L2NvZGU+IHN0YXJ0aW5nIGF0IDxjb2RlPnN0YXJ0PC9jb2RlPi4gVGhpcyBhbGxvd3MKKyAgICAgKiBjbGllbnRzIHRvIHJldXNlIGFuIGl0ZXJhdG9yLgorICAgICAqCisgICAgICogQHBhcmFtIHRleHQgdGhlIG5ldyBzdHJpbmcgb2YgY2hhcmFjdGVycyBvdmVyIHdoaWNoIHRvIGl0ZXJhdGUuCisgICAgICogQHBhcmFtIHN0YXJ0IHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIG92ZXIgd2hpY2ggdG8gaXRlcmF0ZS4KKyAgICAgKiBAcGFyYW0gY291bnQgdGhlIG51YmVyIG9mIGNoYXJhY3RlcnMgb3ZlciB3aGljaCB0byBpdGVyYXRlLgorICAgICAqCisgICAgICogQGludGVybmFsCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHZvaWQgcmVzZXQoU3RyaW5nIHRleHQsIGludCBzdGFydCwgaW50IGNvdW50KQorICAgIHsKKyAgICAgICAgY2hhcltdIGNoYXJzID0gbnVsbDsKKyAgICAgICAgCisgICAgICAgIGlmICh0ZXh0ICE9IG51bGwpIHsKKyAgICAgICAgICAgIGNoYXJzID0gdGV4dC50b0NoYXJBcnJheSgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXNldChjaGFycywgc3RhcnQsIGNvdW50KTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmVzZXQgdGhlIGl0ZXJhdG9yIHRvIGl0ZXJhdGUgb3ZlciB0aGUgY2hhcmFjdGVycworICAgICAqIGluIDxjb2RlPnRleHQ8L2NvZGU+LiBUaGlzIGFsbG93cyBjbGllbnRzIHRvIHJldXNlIGFuIGl0ZXJhdG9yLgorICAgICAqCisgICAgICogQHBhcmFtIHRleHQgdGhlIG5ldyBzdHJpbmcgb2YgY2hhcmFjdGVycyBvdmVyIHdoaWNoIHRvIGl0ZXJhdGUuCisgICAgICoKKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgdm9pZCByZXNldChTdHJpbmcgdGV4dCkKKyAgICB7CisgICAgICAgIGludCBsZW5ndGggICA9IDA7CisgICAgICAgIAorICAgICAgICBpZiAodGV4dCAhPSBudWxsKSB7CisgICAgICAgICAgICBsZW5ndGggPSB0ZXh0Lmxlbmd0aCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXNldCh0ZXh0LCAwLCBsZW5ndGgpOworICAgIH0KKyAgICAgICAgCisKKworICAgIC8qKgorICAgICAqIEdldCB0aGUgc3RhcnRpbmcgaW5kZXggb2YgdGhlIGN1cnJlbnQgc2NyaXB0IHJ1bi4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlIGN1cnJlbnQgc2NyaXB0IHJ1bi4KKyAgICAgKgorICAgICAqIEBpbnRlcm5hbAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBpbnQgZ2V0U2NyaXB0U3RhcnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNjcmlwdFN0YXJ0OworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldCB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBhZnRlciB0aGUgY3VycmVudCBzY3JpcHQgcnVuLgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBhZnRlciB0aGUgY3VycmVudCBzY3JpcHQgcnVuLgorICAgICAqCisgICAgICogQGludGVybmFsCisgICAgICovCisgICAgcHVibGljIGZpbmFsIGludCBnZXRTY3JpcHRMaW1pdCgpCisgICAgeworICAgICAgICByZXR1cm4gc2NyaXB0TGltaXQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0IHRoZSBzY3JpcHQgY29kZSBmb3IgdGhlIHNjcmlwdCBvZiB0aGUgY3VycmVudCBzY3JpcHQgcnVuLgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgc2NyaXB0IGNvZGUgZm9yIHRoZSBzY3JpcHQgb2YgdGhlIGN1cnJlbnQgc2NyaXB0IHJ1bi4KKyAgICAgKiBAc2VlIGNvbS5pYm0uaWN1LmxhbmcuVVNjcmlwdAorICAgICAqCisgICAgICogQGludGVybmFsCisgICAgICovCisgICAgcHVibGljIGZpbmFsIGludCBnZXRTY3JpcHRDb2RlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBzY3JpcHRDb2RlOworICAgIH0KKworICAgIC8qKgorICAgICAqIEZpbmQgdGhlIG5leHQgc2NyaXB0IHJ1bi4gUmV0dXJucyA8Y29kZT5mYWxzZTwvY29kZT4gaWYgdGhlcmUKKyAgICAgKiBpc24ndCBhbm90aGVyIHJ1biwgcmV0dXJucyA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGVyZSBpcy4KKyAgICAgKgorICAgICAqIEByZXR1cm4gPGNvZGU+ZmFsc2U8L2NvZGU+IGlmIHRoZXJlIGlzbid0IGFub3RoZXIgcnVuLCA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGVyZSBpcy4KKyAgICAgKgorICAgICAqIEBpbnRlcm5hbAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBib29sZWFuIG5leHQoKQorCXsKKwkJaW50IHN0YXJ0U1AgID0gcGFyZW5TUDsgIC8vIHVzZWQgdG8gZmluZCB0aGUgZmlyc3QgbmV3IG9wZW4gY2hhcmFjdGVyCisKKwkJLy8gaWYgd2UndmUgZmFsbGVuIG9mZiB0aGUgZW5kIG9mIHRoZSB0ZXh0LCB3ZSdyZSBkb25lCisJCWlmIChzY3JpcHRMaW1pdCA+PSB0ZXh0TGltaXQpIHsKKwkJCXJldHVybiBmYWxzZTsKKwkJfQorICAgIAorCQlzY3JpcHRDb2RlICA9IFVTY3JpcHQuQ09NTU9OOworICAgICAgICBzY3JpcHRTdGFydCA9IHNjcmlwdExpbWl0OworICAgICAgICAKKyAgICAgICAgaW50IGNoOworICAgICAgICAKKyAgICAgICAgd2hpbGUgKChjaCA9IHRleHQubmV4dENvZGVQb2ludCgpKSAhPSBVRm9yd2FyZENoYXJhY3Rlckl0ZXJhdG9yLkRPTkUpIHsKKwkJCWludCBzYyA9IFVTY3JpcHQuZ2V0U2NyaXB0KGNoKTsKKwkJCWludCBwYWlySW5kZXggPSBnZXRQYWlySW5kZXgoY2gpOworCisJCQkvLyBQYWlyZWQgY2hhcmFjdGVyIGhhbmRsaW5nOgorCQkJLy8KKwkJCS8vIGlmIGl0J3MgYW4gb3BlbiBjaGFyYWN0ZXIsIHB1c2ggaXQgb250byB0aGUgc3RhY2suCisJCQkvLyBpZiBpdCdzIGEgY2xvc2UgY2hhcmFjdGVyLCBmaW5kIHRoZSBtYXRjaGluZyBvcGVuIG9uIHRoZQorCQkJLy8gc3RhY2ssIGFuZCB1c2UgdGhhdCBzY3JpcHQgY29kZS4gQW55IG5vbi1tYXRjaGluZyBvcGVuCisJCQkvLyBjaGFyYWN0ZXJzIGFib3ZlIGl0IG9uIHRoZSBzdGFjayB3aWxsIGJlIHBvcGVkLgorCQkJaWYgKHBhaXJJbmRleCA+PSAwKSB7CisJCQkJaWYgKChwYWlySW5kZXggJiAxKSA9PSAwKSB7CisJCQkJICAgIAorICAgICAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAgICAgKiBJZiB0aGUgcGFyZW4gc3RhY2sgaXMgZnVsbCwgZW1wdHkgaXQuIFRoaXMKKyAgICAgICAgICAgICAgICAgICAgICogbWVhbnMgdGhhdCBkZWVwbHkgbmVzdGVkIHBhaXJlZCBwdW5jdHVhdGlvbgorICAgICAgICAgICAgICAgICAgICAgKiBjaGFyYWN0ZXJzIHdpbGwgYmUgaWdub3JlZCwgYnV0IHRoYXQncyBhbiB1bnVzdWFsCisgICAgICAgICAgICAgICAgICAgICAqIGNhc2UsIGFuZCBpdCdzIGJldHRlciB0byBpZ25vcmUgdGhlbSB0aGFuIHRvCisgICAgICAgICAgICAgICAgICAgICAqIHdyaXRlIG9mZiB0aGUgZW5kIG9mIHRoZSBzdGFjay4uLgorICAgICAgICAgICAgICAgICAgICAgKi8KKwkJCQkgICAgaWYgKCsrcGFyZW5TUCA+PSBQQVJFTl9TVEFDS19ERVBUSCkgeworCQkJCSAgICAgICAgcGFyZW5TUCA9IDA7CisJCQkJICAgIH0KKwkJCQkgICAgCisJCQkJICAgIHBhcmVuU3RhY2tbcGFyZW5TUF0gPSBuZXcgUGFyZW5TdGFja0VudHJ5KHBhaXJJbmRleCwgc2NyaXB0Q29kZSk7CisJCQkJfSBlbHNlIGlmIChwYXJlblNQID49IDApIHsKKwkJCQkJaW50IHBpID0gcGFpckluZGV4ICYgfjE7CisKKwkJCQkJd2hpbGUgKHBhcmVuU1AgPj0gMCAmJiBwYXJlblN0YWNrW3BhcmVuU1BdLnBhaXJJbmRleCAhPSBwaSkgeworCQkJCQkJcGFyZW5TUCAtPSAxOworCQkJCQl9CisKKwkJCQkJaWYgKHBhcmVuU1AgPCBzdGFydFNQKSB7CisJCQkJCQlzdGFydFNQID0gcGFyZW5TUDsKKwkJCQkJfQorCisJCQkJCWlmIChwYXJlblNQID49IDApIHsKKwkJCQkJCXNjID0gcGFyZW5TdGFja1twYXJlblNQXS5zY3JpcHRDb2RlOworCQkJCQl9CisJCQkJfQorCQkJfQorCisJCQlpZiAoc2FtZVNjcmlwdChzY3JpcHRDb2RlLCBzYykpIHsKKwkJCQlpZiAoc2NyaXB0Q29kZSA8PSBVU2NyaXB0LklOSEVSSVRFRCAmJiBzYyA+IFVTY3JpcHQuSU5IRVJJVEVEKSB7CisJCQkJCXNjcmlwdENvZGUgPSBzYzsKKworCQkJCQkvLyBub3cgdGhhdCB3ZSBoYXZlIGEgZmluYWwgc2NyaXB0IGNvZGUsIGZpeCBhbnkgb3BlbgorCQkJCQkvLyBjaGFyYWN0ZXJzIHdlIHB1c2hlZCBiZWZvcmUgd2Uga25ldyB0aGUgc2NyaXB0IGNvZGUuCisJCQkJCXdoaWxlIChzdGFydFNQIDwgcGFyZW5TUCkgeworCQkJCQkJcGFyZW5TdGFja1srK3N0YXJ0U1BdLnNjcmlwdENvZGUgPSBzY3JpcHRDb2RlOworCQkJCQl9CisJCQkJfQorCisJCQkJLy8gaWYgdGhpcyBjaGFyYWN0ZXIgaXMgYSBjbG9zZSBwYWlyZWQgY2hhcmFjdGVyLAorCQkJCS8vIHBvcCBpdCBmcm9tIHRoZSBzdGFjaworCQkJCWlmIChwYWlySW5kZXggPj0gMCAmJiAocGFpckluZGV4ICYgMSkgIT0gMCAmJiBwYXJlblNQID49IDApIHsKKwkJCQkJcGFyZW5TUCAtPSAxOworCQkJCQlzdGFydFNQIC09IDE7CisJCQkJfQorCQkJfSBlbHNlIHsKKwkJCSAgICAvLyBXZSd2ZSBqdXN0IHNlZW4gdGhlIGZpcnN0IGNoYXJhY3RlciBvZgorCQkJICAgIC8vIHRoZSBuZXh0IHJ1bi4gQmFjayBvdmVyIGl0IHNvIHdlJ2xsIHNlZQorCQkJICAgIC8vIGl0IGFnYWluIHRoZSBuZXh0IHRpbWUuCisJCQkgICAgdGV4dC5wcmV2aW91c0NvZGVQb2ludCgpOworCQkJICAgIGJyZWFrOworCQkJfQorCQl9CisKKyAgICAgICAgc2NyaXB0TGltaXQgPSB0ZXh0U3RhcnQgKyB0ZXh0LmdldEluZGV4KCk7CisJCXJldHVybiB0cnVlOworCX0KKworICAgIC8qKgorICAgICAqIENvbXBhcmUgdHdvIHNjcmlwdCBjb2RlcyB0byBzZWUgaWYgdGhleSBhcmUgaW4gdGhlIHNhbWUgc2NyaXB0LiBJZiBvbmUgc2NyaXB0IGlzCisgICAgICogYSBzdHJvbmcgc2NyaXB0LCBhbmQgdGhlIG90aGVyIGlzIElOSEVSSVRFRCBvciBDT01NT04sIGl0IHdpbGwgY29tcGFyZSBlcXVhbC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzY3JpcHRPbmUgb25lIG9mIHRoZSBzY3JpcHQgY29kZXMuCisgICAgICogQHBhcmFtIHNjcmlwdFR3byB0aGUgb3RoZXIgc2NyaXB0IGNvZGUuCisgICAgICogQHJldHVybiA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgdHdvIHNjcmlwdHMgYXJlIHRoZSBzYW1lLgorICAgICAqIEBzZWUgY29tLmlibS5pY3UubGFuZy5VU2NyaXB0CisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBzYW1lU2NyaXB0KGludCBzY3JpcHRPbmUsIGludCBzY3JpcHRUd28pCisJeworCQlyZXR1cm4gc2NyaXB0T25lIDw9IFVTY3JpcHQuSU5IRVJJVEVEIHx8IHNjcmlwdFR3byA8PSBVU2NyaXB0LklOSEVSSVRFRCB8fCBzY3JpcHRPbmUgPT0gc2NyaXB0VHdvOworCX0KKworICAgIC8qCisgICAgICogQW4gaW50ZXJuYWwgY2xhc3Mgd2hpY2ggaG9sZHMgZW50cmllcyBvbiB0aGUgcGFyZW4gc3RhY2suCisgICAgICovCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2xhc3MgUGFyZW5TdGFja0VudHJ5CisJeworCQlpbnQgcGFpckluZGV4OworCQlpbnQgc2NyaXB0Q29kZTsKKwkJCisJCXB1YmxpYyBQYXJlblN0YWNrRW50cnkoaW50IHRoZVBhaXJJbmRleCwgaW50IHRoZVNjcmlwdENvZGUpCisJCXsKKwkJICAgIHBhaXJJbmRleCAgPSB0aGVQYWlySW5kZXg7CisJCSAgICBzY3JpcHRDb2RlID0gdGhlU2NyaXB0Q29kZTsKKwkJfQorICAgIH07CisgICAgCisgICAgcHJpdmF0ZSBjaGFyW10gZW1wdHlDaGFyQXJyYXkgPSB7fTsKKworICAgIHByaXZhdGUgVUNoYXJhY3Rlckl0ZXJhdG9yIHRleHQ7CisKKyAgICBwcml2YXRlIGludCAgdGV4dFN0YXJ0OworICAgIHByaXZhdGUgaW50ICB0ZXh0TGltaXQ7CisgICAgCisgICAgcHJpdmF0ZSBpbnQgIHNjcmlwdFN0YXJ0OworICAgIHByaXZhdGUgaW50ICBzY3JpcHRMaW1pdDsKKyAgICBwcml2YXRlIGludCAgc2NyaXB0Q29kZTsKKworICAgIHByaXZhdGUgc3RhdGljIGludCBQQVJFTl9TVEFDS19ERVBUSCA9IDEyODsKKyAgICBwcml2YXRlIHN0YXRpYyBQYXJlblN0YWNrRW50cnkgcGFyZW5TdGFja1tdID0gbmV3IFBhcmVuU3RhY2tFbnRyeVtQQVJFTl9TVEFDS19ERVBUSF07CisgICAgcHJpdmF0ZSBpbnQgIHBhcmVuU1A7CisKKyAgICAvKioKKyAgICAgKiBGaW5kIHRoZSBoaWdoZXN0IGJpdCB0aGF0J3Mgc2V0IGluIGEgd29yZC4gVXNlcyBhIGJpbmFyeSBzZWFyY2ggdGhyb3VnaAorICAgICAqIHRoZSBiaXRzLgorICAgICAqCisgICAgICogQHBhcmFtIG4gdGhlIHdvcmQgaW4gd2hpY2ggdG8gZmluZCB0aGUgaGlnaGVzdCBiaXQgdGhhdCdzIHNldC4KKyAgICAgKiBAcmV0dXJuIHRoZSBiaXQgbnVtYmVyIChjb3VudGluZyBmcm9tIHRoZSBsb3cgb3JkZXIgYml0KSBvZiB0aGUgaGlnaGVzdCBiaXQuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYnl0ZSBoaWdoQml0KGludCBuKQorICAgIHsKKyAgICAgICAgaWYgKG4gPD0gMCkgeworICAgICAgICAgICAgcmV0dXJuIC0zMjsKKyAgICAgICAgfQorCisgICAgICAgIGJ5dGUgYml0ID0gMDsKKworICAgICAgICBpZiAobiA+PSAxIDw8IDE2KSB7CisgICAgICAgICAgICBuID4+PSAxNjsKKyAgICAgICAgICAgIGJpdCArPSAxNjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChuID49IDEgPDwgOCkgeworICAgICAgICAgICAgbiA+Pj0gODsKKyAgICAgICAgICAgIGJpdCArPSA4OworICAgICAgICB9CisKKyAgICAgICAgaWYgKG4gPj0gMSA8PCA0KSB7CisgICAgICAgICAgICBuID4+PSA0OworICAgICAgICAgICAgYml0ICs9IDQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAobiA+PSAxIDw8IDIpIHsKKyAgICAgICAgICAgIG4gPj49IDI7CisgICAgICAgICAgICBiaXQgKz0gMjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChuID49IDEgPDwgMSkgeworICAgICAgICAgICAgbiA+Pj0gMTsKKyAgICAgICAgICAgIGJpdCArPSAxOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGJpdDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZWFyY2ggdGhlIHBhaXJlZENoYXJzIGFycmF5IGZvciB0aGUgZ2l2ZW4gY2hhcmFjdGVyLgorICAgICAqCisgICAgICogQHBhcmFtIGNoIHRoZSBjaGFyYWN0ZXIgZm9yIHdoaWNoIHRvIHNlYXJjaC4KKyAgICAgKiBAcmV0dXJuIHRoZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVyIGluIHRoZSB0YWJsZSwgb3IgLTEgaWYgaXQncyBub3QgdGhlcmUuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgaW50IGdldFBhaXJJbmRleChpbnQgY2gpCisJeworCQlpbnQgcHJvYmUgPSBwYWlyZWRDaGFyUG93ZXI7CisJCWludCBpbmRleCA9IDA7CisKKwkJaWYgKGNoID49IHBhaXJlZENoYXJzW3BhaXJlZENoYXJFeHRyYV0pIHsKKwkJCWluZGV4ID0gcGFpcmVkQ2hhckV4dHJhOworCQl9CisKKwkJd2hpbGUgKHByb2JlID4gKDEgPDwgMCkpIHsKKwkJCXByb2JlID4+PSAxOworCisJCQlpZiAoY2ggPj0gcGFpcmVkQ2hhcnNbaW5kZXggKyBwcm9iZV0pIHsKKwkJCQlpbmRleCArPSBwcm9iZTsKKwkJCX0KKwkJfQorCisJCWlmIChwYWlyZWRDaGFyc1tpbmRleF0gIT0gY2gpIHsKKwkJCWluZGV4ID0gLTE7CisJCX0KKworCQlyZXR1cm4gaW5kZXg7CisJfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgaW50IHBhaXJlZENoYXJzW10gPSB7CisJCTB4MDAyOCwgMHgwMDI5LCAvLyBhc2NpaSBwYWlyZWQgcHVuY3R1YXRpb24KKwkJMHgwMDNjLCAweDAwM2UsCisJCTB4MDA1YiwgMHgwMDVkLAorCQkweDAwN2IsIDB4MDA3ZCwKKwkJMHgwMGFiLCAweDAwYmIsIC8vIGd1aWxsZW1ldHMKKwkJMHgyMDE4LCAweDIwMTksIC8vIGdlbmVyYWwgcHVuY3R1YXRpb24KKwkJMHgyMDFjLCAweDIwMWQsCisJCTB4MjAzOSwgMHgyMDNhLAorCQkweDMwMDgsIDB4MzAwOSwgLy8gY2hpbmVzZSBwYWlyZWQgcHVuY3R1YXRpb24KKwkJMHgzMDBhLCAweDMwMGIsCisJCTB4MzAwYywgMHgzMDBkLAorCQkweDMwMGUsIDB4MzAwZiwKKwkJMHgzMDEwLCAweDMwMTEsCisJCTB4MzAxNCwgMHgzMDE1LAorCQkweDMwMTYsIDB4MzAxNywKKwkJMHgzMDE4LCAweDMwMTksCisJCTB4MzAxYSwgMHgzMDFiCisJfTsKKworICAgIHByaXZhdGUgc3RhdGljIGludCBwYWlyZWRDaGFyUG93ZXIgPSAxIDw8IGhpZ2hCaXQocGFpcmVkQ2hhcnMubGVuZ3RoKTsKKyAgICBwcml2YXRlIHN0YXRpYyBpbnQgcGFpcmVkQ2hhckV4dHJhID0gcGFpcmVkQ2hhcnMubGVuZ3RoIC0gcGFpcmVkQ2hhclBvd2VyOworfQorCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvbGFuZy9wYWNrYWdlLmh0bWwgYi9zcmMvY29tL2libS9pY3UvbGFuZy9wYWNrYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTEzMjgyZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9sYW5nL3BhY2thZ2UuaHRtbApAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPjwhLS0gIENvcHlyaWdodCAoQykgMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQKKyAgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorLS0+CisKKzx0aXRsZT5DOklDVTRKIC5sYW5nIFBhY2thZ2UgT3ZlcnZpZXc8L3RpdGxlPgorPC9oZWFkPgorCis8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSI+CisKKzxwPkVuaGFuY2VkIGNoYXJhY3RlciBwcm9wZXJ0eSBhbmQgc3Vycm9nYXRlIHN1cHBvcnQuPC9wPgorCitVQ2hhcmFjdGVyIHN1cHBvcnRzIGFsbCBjaGFyYWN0ZXJzIGFuZCBwcm9wZXJ0aWVzIGRlZmluZWQgaW4gdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIFVuaWNvZGUsIGluY2x1ZGluZyBwcm9wZXJ0aWVzIG9mIHN1cnJvZ2F0ZSBjaGFyYWN0ZXJzLiAgSXQgcHJvdmlkZXMgbmV3IEFQSSBmb3IgcXVlcnlpbmcgc3Vycm9nYXRlIGNoYXJhY3RlcnMgKHJlcHJlc2VudGVkIGFzIGludCkgYW5kIGFsc28gc3VwcG9ydHMgdGhlIGphdmEubGFuZy5DaGFyYWN0ZXIgQVBJLiAgVVNjcmlwdCBhbmQgVVNjcmlwdFJ1biBwcm92aWRlIGluZm9ybWF0aW9uIGFib3V0IHNjcmlwdHMsIHdoaWNoIGlzIG5vdCBhdmFpbGFibGUgdGhyb3VnaCB0aGUgSmF2YSBBUElzLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9tYW5pZmVzdC5zdHViIGIvc3JjL2NvbS9pYm0vaWN1L21hbmlmZXN0LnN0dWIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmEwYTMwNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9tYW5pZmVzdC5zdHViCkBAIC0wLDAgKzEsMTAgQEAKK01hbmlmZXN0LVZlcnNpb246IDEuMAorU3BlY2lmaWNhdGlvbi1UaXRsZTogSUNVIGZvciBKYXZhCitTcGVjaWZpY2F0aW9uLVZlcnNpb246IDIuMgorU3BlY2lmaWNhdGlvbi1WZW5kb3I6IElDVQorSW1wbGVtZW50YXRpb24tVGl0bGU6IElDVSBmb3IgSmF2YQorSW1wbGVtZW50YXRpb24tVmVyc2lvbjogMi4yCitJbXBsZW1lbnRhdGlvbi1WZW5kb3I6IElCTSBDb3Jwb3JhdGlvbgorSW1wbGVtZW50YXRpb24tVmVuZG9yLUlkOiBjb20uaWJtCisKK05hbWU6IGNvbS9pYm0vaWN1CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvbWF0aC9CaWdEZWNpbWFsLmphdmEgYi9zcmMvY29tL2libS9pY3UvbWF0aC9CaWdEZWNpbWFsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uM2Y5YmIyZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9tYXRoL0JpZ0RlY2ltYWwuamF2YQpAQCAtMCwwICsxLDQzOTggQEAKKy8qIEdlbmVyYXRlZCBmcm9tICdCaWdEZWNpbWFsLm5yeCcgOCBTZXAgMjAwMCAxMToxMDo1MCBbdjIuMDBdICovCisvKiBPcHRpb25zOiBCaW5hcnkgQ29tbWVudHMgQ3Jvc3NyZWYgRm9ybWF0IEphdmEgTG9nbyBTdHJpY3RhcmdzIFN0cmljdGNhc2UgVHJhY2UyIFZlcmJvc2UzICovCitwYWNrYWdlIGNvbS5pYm0uaWN1Lm1hdGg7CitpbXBvcnQgamF2YS5tYXRoLkJpZ0ludGVnZXI7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5VdGlsaXR5OworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qIEJpZ0RlY2ltYWwgLS0gRGVjaW1hbCBhcml0aG1ldGljIGZvciBKYXZhICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uLCAxOTk2LCAyMDAwLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogVGhlIEJpZ0RlY2ltYWwgY2xhc3MgcHJvdmlkZXMgaW1tdXRhYmxlIGFyYml0cmFyeS1wcmVjaXNpb24gICAgICAgICovCisvKiBmbG9hdGluZyBwb2ludCAoaW5jbHVkaW5nIGludGVnZXIpIGRlY2ltYWwgbnVtYmVycy4gICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogQXMgdGhlIG51bWJlcnMgYXJlIGRlY2ltYWwsIHRoZXJlIGlzIGFuIGV4YWN0IGNvcnJlc3BvbmRlbmNlICAgICAgICovCisvKiBiZXR3ZWVuIGFuIGluc3RhbmNlIG9mIGEgQmlnRGVjaW1hbCBvYmplY3QgYW5kIGl0cyBTdHJpbmcgICAgICAgICAgKi8KKy8qIHJlcHJlc2VudGF0aW9uOyB0aGUgQmlnRGVjaW1hbCBjbGFzcyBwcm92aWRlcyBkaXJlY3QgY29udmVyc2lvbnMgICAqLworLyogdG8gYW5kIGZyb20gU3RyaW5nIGFuZCBjaGFyYWN0ZXIgYXJyYXkgb2JqZWN0cywgYW5kIHdlbGwgYXMgICAgICAgICovCisvKiBjb252ZXJzaW9ucyB0byBhbmQgZnJvbSB0aGUgSmF2YSBwcmltaXRpdmUgdHlwZXMgKHdoaWNoIG1heSBub3QgICAgKi8KKy8qIGJlIGV4YWN0KS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiBOb3RlczogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogMS4gQSBCaWdEZWNpbWFsIG9iamVjdCBpcyBuZXZlciBjaGFuZ2VkIGluIHZhbHVlIG9uY2UgY29uc3RydWN0ZWQ7ICovCisvKiAgICB0aGlzIGF2b2lkcyB0aGUgbmVlZCBmb3IgbG9ja2luZy4gIE5vdGUgaW4gcGFydGljdWxhciB0aGF0IHRoZSAgKi8KKy8qICAgIG1hbnRpc3NhIGFycmF5IG1heSBiZSBzaGFyZWQgYmV0d2VlbiBtYW55IEJpZ0RlY2ltYWwgb2JqZWN0cywgICAqLworLyogICAgc28gdGhhdCBvbmNlIGV4cG9zZWQgaXQgbXVzdCBub3QgYmUgYWx0ZXJlZC4gICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIDIuIFRoaXMgY2xhc3MgbG9va3MgYXQgTWF0aENvbnRleHQgY2xhc3MgZmllbGRzIGRpcmVjdGx5IChmb3IgICAgICAqLworLyogICAgcGVyZm9ybWFuY2UpLiAgSXQgbXVzdCBub3QgYW5kIGRvZXMgbm90IGNoYW5nZSB0aGVtLiAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIDMuIEV4cG9uZW50IGNoZWNraW5nIGlzIGRlbGF5ZWQgdW50aWwgZmluaXNoKCksIGFzIHdlIGtub3cgICAgICAgICAqLworLyogICAgaW50ZXJtZWRpYXRlIGNhbGN1bGF0aW9ucyBjYW5ub3QgY2F1c2UgMzEtYml0IG92ZXJmbG93LiAgICAgICAgICovCisvKiAgICBbVGhpcyBhc3NlcnRpb24gZGVwZW5kcyBvbiBNQVhfRElHSVRTIGluIE1hdGhDb250ZXh0Ll0gICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogNC4gQ29tbWVudHMgZm9yIHRoZSBwdWJsaWMgQVBJIG5vdyBmb2xsb3cgdGhlIGphdmFkb2MgY29udmVudGlvbnMuICovCisvKiAgICBUaGUgTmV0UmV4eCAtY29tbWVudHMgb3B0aW9uIGlzIHVzZWQgdG8gcGFzcyB0aGVzZSBjb21tZW50cyAgICAgKi8KKy8qICAgIHRocm91Z2ggdG8gdGhlIGdlbmVyYXRlZCBKYXZhIGNvZGUgKHdpdGggLWZvcm1hdCwgaWYgZGVzaXJlZCkuICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiA1LiBTeXN0ZW0uYXJyYXljb3B5IGlzIGZhc3RlciB0aGFuIGV4cGxpY2l0IGxvb3AgYXMgZm9sbG93cyAgICAgICAgKi8KKy8qICAgICAgTWVhbiBsZW5ndGggNDogIGVxdWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICBNZWFuIGxlbmd0aCA4OiAgeDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgIE1lYW4gbGVuZ3RoIDE2OiB4MyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgTWVhbiBsZW5ndGggMjQ6IHg0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgRnJvbSBwcmlvciBleHBlcmllbmNlLCB3ZSBleHBlY3QgbWVhbiBsZW5ndGggYSBsaXR0bGUgYmVsb3cgOCwgICovCisvKiAgICBidXQgYXJyYXljb3B5IGlzIHN0aWxsIHRoZSBvbmUgdG8gdXNlLCBpbiBnZW5lcmFsLCB1bnRpbCBsYXRlciAgKi8KKy8qICAgIG1lYXN1cmVtZW50cyBzdWdnZXN0IG90aGVyd2lzZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiA2LiAnRE1TUkNOJyByZWZlcnJlZCB0byBiZWxvdyBpcyB0aGUgb3JpZ2luYWwgKDE5ODEpIElCTSBTLzM3MCAgICAgKi8KKy8qICAgIGFzc2VtYmxlciBjb2RlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBhbGdvcml0aG1zIGJlbG93OyBpdCBpcyAgICAqLworLyogICAgbm93IGNhbGxlZCBJWFhSQ04gYW5kIGlzIGF2YWlsYWJsZSB3aXRoIHRoZSBPUy8zOTAgYW5kIFZNL0VTQSAgICovCisvKiAgICBvcGVyYXRpbmcgc3lzdGVtcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogQ2hhbmdlIEhpc3Rvcnk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAxOTk3LjA5LjAyIEluaXRpYWwgdmVyc2lvbiAoZGVyaXZlZCBmcm9tIG5ldHJleHgubGFuZyBjbGFzc2VzKSAgICAgKi8KKy8qIDE5OTcuMDkuMTIgQWRkIGxvc3REaWdpdHMgY2hlY2tpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogMTk5Ny4xMC4wNiBDaGFuZ2UgbWFudGlzc2EgdG8gYSBieXRlIGFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAxOTk3LjExLjIyIFJld29yayBwb3dlciBbZGlkIG5vdCBwcmVwYXJlIGFyZ3VtZW50cywgZXRjLl0gICAgICAgICAgKi8KKy8qIDE5OTcuMTIuMTMgbXVsdGlwbHkgZGlkIG5vdCBwcmVwYXJlIGFyZ3VtZW50cyAgICAgICAgICAgICAgICAgICAgICAqLworLyogMTk5Ny4xMi4xNCBhZGQgZGlkIG5vdCBwcmVwYXJlIGFuZCBhbGlnbiBhcmd1bWVudHMgY29ycmVjdGx5ICAgICAgICovCisvKiAxOTk4LjA1LjAyIDAuMDcgcGFja2FnaW5nIGNoYW5nZXMgc3VnZ2VzdGVkIGJ5IFN1biBhbmQgT3JhY2xlICAgICAgKi8KKy8qIDE5OTguMDUuMjEgYWRqdXN0IHJlbWFpbmRlciBvcGVyYXRvciBmaW5hbGl6YXRpb24gICAgICAgICAgICAgICAgICAqLworLyogMTk5OC4wNi4wNCByZXdvcmsgdG8gcGFzcyBNYXRoQ29udGV4dCB0byBmaW5pc2goKSBhbmQgcm91bmQoKSAgICAgICovCisvKiAxOTk4LjA2LjA2IGNoYW5nZSBmb3JtYXQgdG8gdXNlIHJvdW5kKCk7IHN1cHBvcnQgcm91bmRpbmcgbW9kZXMgICAgKi8KKy8qIDE5OTguMDYuMjUgcmVuYW1lIHRvIEJpZ0RlY2ltYWwgYW5kIGJlZ2luIG1lcmdlICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICB6ZXJvIGNhbiBub3cgaGF2ZSB0cmFpbGluZyB6ZXJvcyAoaS5lLiwgZXhwXD0wKSAgICAgICAgICovCisvKiAxOTk4LjA2LjI4IG5ldyBtZXRob2RzOiBtb3ZlUG9pbnRYeHh4LCBzY2FsZSwgdG9CaWdJbnRlZ2VyICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2NhbGVkVmFsdWUsIHZhbHVlb2YgICAgICAgICAgICAgICAgICAgICAqLworLyogMTk5OC4wNy4wMSBpbXByb3ZlIGJ5dGVhZGRzdWIgdG8gYWxsb3cgYXJyYXkgcmV1c2UsIGV0Yy4gICAgICAgICAgICovCisvKiAxOTk4LjA3LjAxIG1ha2UgbnVsbCB0ZXN0aW5nIGV4cGxpY2l0IHRvIGF2b2lkIEpJVCBidWcgW1dpbjMyXSAgICAgKi8KKy8qIDE5OTguMDcuMDcgc2NhbGVkIGRpdmlzaW9uICBbZGl2aWRlKEJpZ0RlY2ltYWwsIGludCwgaW50KV0gICAgICAgICAqLworLyogMTk5OC4wNy4wOCBzZXRTY2FsZSwgZmFzdGVyIGVxdWFscyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAxOTk4LjA3LjExIGFsbG93IDFFNiAobm8gc2lnbikgPHNpZ2g+OyBuZXcgZG91YmxlL2Zsb2F0IGNvbnZlcnNpb24gKi8KKy8qIDE5OTguMTAuMTIgY2hhbmdlIHBhY2thZ2UgdG8gY29tLmlibS5pY3UubWF0aCAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIDE5OTguMTIuMTQgcG93ZXIgb3BlcmF0b3Igbm8gbG9uZ2VyIHJvdW5kcyBSSFMgW3RvIG1hdGNoIEFOU0ldICAgICAqLworLyogICAgICAgICAgICBhZGQgdG9CaWdEZWNpbWFsKCkgYW5kIEJpZ0RlY2ltYWwoamF2YS5tYXRoLkJpZ0RlY2ltYWwpICovCisvKiAxOTk4LjEyLjI5IGltcHJvdmUgYnl0ZWFkZHN1YiBieSB1c2luZyB0YWJsZSBsb29rdXAgICAgICAgICAgICAgICAgKi8KKy8qIDE5OTkuMDIuMDQgbG9zdGRpZ2l0cz0wIGJlaGF2aW91ciByb3VuZHMgaW5zdGVhZCBvZiBkaWdpdHMrMSBndWFyZCAqLworLyogMTk5OS4wMi4wNSBjbGVhbmVyIGNvZGUgZm9yIEJpZ0RlY2ltYWwoY2hhcltdKSAgICAgICAgICAgICAgICAgICAgICovCisvKiAxOTk5LjAyLjA2IGFkZCBqYXZhZG9jIGNvbW1lbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIDE5OTkuMDIuMTEgZm9ybWF0KCkgY2hhbmdlZCBmcm9tIDcgdG8gMiBtZXRob2QgZm9ybSAgICAgICAgICAgICAgICAqLworLyogMTk5OS4wMy4wNSBudWxsIHBvaW50ZXIgY2hlY2tpbmcgaXMgbm8gbG9uZ2VyIGV4cGxpY2l0ICAgICAgICAgICAgICovCisvKiAxOTk5LjAzLjA1IHNpbXBsaWZ5OyBjaGFuZ2VzIGZyb20gZGlzY3Vzc2lvbiB3aXRoIEouIEJsb2NoOiAgICAgICAgKi8KKy8qICAgICAgICAgICAgbnVsbCBubyBsb25nZXIgcGVybWl0dGVkIGZvciBNYXRoQ29udGV4dDsgZHJvcCBib29sZWFuLCAqLworLyogICAgICAgICAgICBieXRlLCBjaGFyLCBmbG9hdCwgc2hvcnQgY29uc3RydWN0b3IsIGRlcHJlY2F0ZSBkb3VibGUgICovCisvKiAgICAgICAgICAgIGNvbnN0cnVjdG9yLCBubyBibGFua3MgaW4gc3RyaW5nIGNvbnN0cnVjdG9yLCBhZGQgICAgICAgKi8KKy8qICAgICAgICAgICAgb2Zmc2V0IGFuZCBsZW5ndGggdmVyc2lvbiBvZiBjaGFyW10gY29uc3RydWN0b3I7ICAgICAgICAqLworLyogICAgICAgICAgICBhZGQgdmFsdWVPZihkb3VibGUpOyBkcm9wIGJvb2xlYW5WYWx1ZSwgY2hhclZhbHVlOyAgICAgICovCisvKiAgICAgICAgICAgIGFkZCAuLi5FeGFjdCB2ZXJzaW9ucyBvZiByZW1haW5pbmcgY29udmVydG9ycyAgICAgICAgICAgKi8KKy8qIDE5OTkuMDMuMTMgYWRkIHRvQmlnSW50ZWdlckV4YWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogMTk5OS4wMy4xMyAxLjAwIHJlbGVhc2UgdG8gSUJNIENlbnRyZSBmb3IgSmF2YSBUZWNobm9sb2d5ICAgICAgICAgICovCisvKiAxOTk5LjA1LjI3IDEuMDEgY29ycmVjdCAwLTAuMiBidWcgdW5kZXIgc2NhbGVkIGFyaXRobWV0aWMgICAgICAgICAgKi8KKy8qIDE5OTkuMDYuMjkgMS4wMiBjb25zdHJ1Y3RvcnMgc2hvdWxkIG5vdCBhbGxvdyBleHBvbmVudCA+IDkgZGlnaXRzICAqLworLyogMTk5OS4wNy4wMyAxLjAzIGxvc3QgZGlnaXRzIHNob3VsZCBub3QgYmUgY2hlY2tlZCBpZiBkaWdpdHM9MCAgICAgICovCisvKiAxOTk5LjA3LjA2ICAgICAgbG9zdCBkaWdpdHMgRXhjZXB0aW9uIG1lc3NhZ2UgY2hhbmdlZCAgICAgICAgICAgICAgKi8KKy8qIDE5OTkuMDcuMTAgMS4wNCBtb3JlIHdvcmsgb24gMC0wLjIgKHNjYWxlZCBhcml0aG1ldGljKSAgICAgICAgICAgICAqLworLyogMTk5OS4wNy4xNyAgICAgIGltcHJvdmUgbWVzc2FnZXMgZnJvbSBwb3cgbWV0aG9kICAgICAgICAgICAgICAgICAgICovCisvKiAxOTk5LjA4LjA4ICAgICAgcGVyZm9ybWFuY2UgdHdlYWtzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIDE5OTkuMDguMTUgICAgICBmYXN0cGF0aCBpbiBtdWx0aXBseSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogMTk5OS4xMS4wNSAxLjA1IGZpeCBwcm9ibGVtIGluIGludFZhbHVlRXhhY3QgW2UuZy4sIDU1NTU1NTU1NTVdICAgICovCisvKiAxOTk5LjEyLjIyIDEuMDYgcmVtb3ZlIG11bHRpcGx5IGZhc3RwYXRoLCBhbmQgaW1wcm92ZSBwZXJmb3JtYW5jZSAgKi8KKy8qIDIwMDAuMDEuMDEgICAgICBjb3B5cmlnaHQgdXBkYXRlIFtZMksgaGFzIGFycml2ZWRdICAgICAgICAgICAgICAgICAqLworLyogMjAwMC4wNi4xOCAxLjA4IG5vIGxvbmdlciBkZXByZWNhdGUgQmlnRGVjaW1hbChkb3VibGUpICAgICAgICAgICAgICovCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworCisKKworCisvKioKKyAqIFRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBjbGFzcyBpbXBsZW1lbnRzIGltbXV0YWJsZQorICogYXJiaXRyYXJ5LXByZWNpc2lvbiBkZWNpbWFsIG51bWJlcnMuICBUaGUgbWV0aG9kcyBvZiB0aGUKKyAqIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IGNsYXNzIHByb3ZpZGUgb3BlcmF0aW9ucyBmb3IgZml4ZWQgYW5kCisgKiBmbG9hdGluZyBwb2ludCBhcml0aG1ldGljLCBjb21wYXJpc29uLCBmb3JtYXQgY29udmVyc2lvbnMsIGFuZAorICogaGFzaGluZy4KKyAqIDxwPgorICogQXMgdGhlIG51bWJlcnMgYXJlIGRlY2ltYWwsIHRoZXJlIGlzIGFuIGV4YWN0IGNvcnJlc3BvbmRlbmNlIGJldHdlZW4KKyAqIGFuIGluc3RhbmNlIG9mIGEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gb2JqZWN0IGFuZCBpdHMKKyAqIDxjb2RlPlN0cmluZzwvY29kZT4gcmVwcmVzZW50YXRpb247IHRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBjbGFzcworICogcHJvdmlkZXMgZGlyZWN0IGNvbnZlcnNpb25zIHRvIGFuZCBmcm9tIDxjb2RlPlN0cmluZzwvY29kZT4gYW5kCisgKiBjaGFyYWN0ZXIgYXJyYXkgKDxjb2RlPmNoYXJbXTwvY29kZT4pIG9iamVjdHMsIGFzIHdlbGwgYXMgY29udmVyc2lvbnMKKyAqIHRvIGFuZCBmcm9tIHRoZSBKYXZhIHByaW1pdGl2ZSB0eXBlcyAod2hpY2ggbWF5IG5vdCBiZSBleGFjdCkgYW5kCisgKiA8Y29kZT5CaWdJbnRlZ2VyPC9jb2RlPi4KKyAqIDxwPgorICogSW4gdGhlIGRlc2NyaXB0aW9ucyBvZiBjb25zdHJ1Y3RvcnMgYW5kIG1ldGhvZHMgaW4gdGhpcyBkb2N1bWVudGF0aW9uLAorICogdGhlIHZhbHVlIG9mIGEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gbnVtYmVyIG9iamVjdCBpcyBzaG93biBhcyB0aGUKKyAqIHJlc3VsdCBvZiBpbnZva2luZyB0aGUgPGNvZGU+dG9TdHJpbmcoKTwvY29kZT4gbWV0aG9kIG9uIHRoZSBvYmplY3QuCisgKiBUaGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgYSBkZWNpbWFsIG51bWJlciBpcyBuZWl0aGVyIGRlZmluZWQKKyAqIG5vciBleHBvc2VkLCBhbmQgaXMgbm90IHBlcm1pdHRlZCB0byBhZmZlY3QgdGhlIHJlc3VsdCBvZiBhbnkKKyAqIG9wZXJhdGlvbi4KKyAqIDxwPgorICogVGhlIGZsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgcHJvdmlkZWQgYnkgdGhpcyBjbGFzcyBpcyBkZWZpbmVkIGJ5CisgKiB0aGUgQU5TSSBYMy4yNzQtMTk5NiBzdGFuZGFyZCwgYW5kIGlzIGFsc28gZG9jdW1lbnRlZCBhdAorICogPGNvZGU+aHR0cDovL3d3dzIuaHVyc2xleS5pYm0uY29tL2RlY2ltYWw8L2NvZGU+CisgKiA8YnI+PGk+W1RoaXMgVVJMIHdpbGwgY2hhbmdlLl08L2k+CisgKgorICogPGgzPk9wZXJhdG9yIG1ldGhvZHM8L2gzPgorICogPHA+CisgKiBPcGVyYXRpb25zIG9uIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IG51bWJlcnMgYXJlIGNvbnRyb2xsZWQgYnkgYQorICoge0BsaW5rIE1hdGhDb250ZXh0fSBvYmplY3QsIHdoaWNoIHByb3ZpZGVzIHRoZSBjb250ZXh0IChwcmVjaXNpb24gYW5kCisgKiBvdGhlciBpbmZvcm1hdGlvbikgZm9yIHRoZSBvcGVyYXRpb24uIE1ldGhvZHMgdGhhdCBjYW4gdGFrZSBhCisgKiA8Y29kZT5NYXRoQ29udGV4dDwvY29kZT4gcGFyYW1ldGVyIGltcGxlbWVudCB0aGUgc3RhbmRhcmQgYXJpdGhtZXRpYworICogb3BlcmF0b3JzIGZvciA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBvYmplY3RzIGFuZCBhcmUga25vd24gYXMKKyAqIDxpPm9wZXJhdG9yIG1ldGhvZHM8L2k+LiAgVGhlIGRlZmF1bHQgc2V0dGluZ3MgcHJvdmlkZWQgYnkgdGhlCisgKiBjb25zdGFudCB7QGxpbmsgTWF0aENvbnRleHQjREVGQVVMVH0gKDxjb2RlPmRpZ2l0cz05LAorICogZm9ybT1TQ0lFTlRJRklDLCBsb3N0RGlnaXRzPWZhbHNlLCByb3VuZGluZ01vZGU9Uk9VTkRfSEFMRl9VUDwvY29kZT4pCisgKiBwZXJmb3JtIGdlbmVyYWwtcHVycG9zZSBmbG9hdGluZyBwb2ludCBhcml0aG1ldGljIHRvIG5pbmUgZGlnaXRzIG9mCisgKiBwcmVjaXNpb24uICBUaGUgPGNvZGU+TWF0aENvbnRleHQ8L2NvZGU+IHBhcmFtZXRlciBtdXN0IG5vdCBiZQorICogPGNvZGU+bnVsbDwvY29kZT4uCisgKiA8cD4KKyAqIEVhY2ggb3BlcmF0b3IgbWV0aG9kIGFsc28gaGFzIGEgdmVyc2lvbiBwcm92aWRlZCB3aGljaCBkb2VzCisgKiBub3QgdGFrZSBhIDxjb2RlPk1hdGhDb250ZXh0PC9jb2RlPiBwYXJhbWV0ZXIuICBGb3IgdGhpcyB2ZXJzaW9uIG9mCisgKiBlYWNoIG1ldGhvZCwgdGhlIGNvbnRleHQgc2V0dGluZ3MgdXNlZCBhcmUgPGNvZGU+ZGlnaXRzPTAsCisgKiBmb3JtPVBMQUlOLCBsb3N0RGlnaXRzPWZhbHNlLCByb3VuZGluZ01vZGU9Uk9VTkRfSEFMRl9VUDwvY29kZT47CisgKiB0aGVzZSBzZXR0aW5ncyBwZXJmb3JtIGZpeGVkIHBvaW50IGFyaXRobWV0aWMgd2l0aCB1bmxpbWl0ZWQKKyAqIHByZWNpc2lvbiwgYXMgZGVmaW5lZCBmb3IgdGhlIG9yaWdpbmFsIEJpZ0RlY2ltYWwgY2xhc3MgaW4gSmF2YSAxLjEKKyAqIGFuZCBKYXZhIDEuMi4KKyAqIDxwPgorICogRm9yIG1vbmFkaWMgb3BlcmF0b3JzLCBvbmx5IHRoZSBvcHRpb25hbCA8Y29kZT5NYXRoQ29udGV4dDwvY29kZT4KKyAqIHBhcmFtZXRlciBpcyBwcmVzZW50OyB0aGUgb3BlcmF0aW9uIGFjdHMgdXBvbiB0aGUgY3VycmVudCBvYmplY3QuCisgKiA8cD4KKyAqIEZvciBkeWFkaWMgb3BlcmF0b3JzLCBhIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHBhcmFtZXRlciBpcyBhbHdheXMKKyAqIHByZXNlbnQ7IGl0IG11c3Qgbm90IGJlIDxjb2RlPm51bGw8L2NvZGU+LgorICogVGhlIG9wZXJhdGlvbiBhY3RzIHdpdGggdGhlIGN1cnJlbnQgb2JqZWN0IGJlaW5nIHRoZSBsZWZ0LWhhbmQgb3BlcmFuZAorICogYW5kIHRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBwYXJhbWV0ZXIgYmVpbmcgdGhlIHJpZ2h0LWhhbmQgb3BlcmFuZC4KKyAqIDxwPgorICogRm9yIGV4YW1wbGUsIGFkZGluZyB0d28gPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gb2JqZWN0cyByZWZlcnJlZCB0bworICogYnkgdGhlIG5hbWVzIDxjb2RlPmF3YXJkPC9jb2RlPiBhbmQgPGNvZGU+ZXh0cmE8L2NvZGU+IGNvdWxkIGJlCisgKiB3cml0dGVuIGFzIGFueSBvZjoKKyAqIDxwPjxjb2RlPgorICogICAgIGF3YXJkLmFkZChleHRyYSkKKyAqIDxicj5hd2FyZC5hZGQoZXh0cmEsIE1hdGhDb250ZXh0LkRFRkFVTFQpCisgKiA8YnI+YXdhcmQuYWRkKGV4dHJhLCBhY29udGV4dCkKKyAqIDwvY29kZT4KKyAqIDxwPgorICogKHdoZXJlIDxjb2RlPmFjb250ZXh0PC9jb2RlPiBpcyBhIDxjb2RlPk1hdGhDb250ZXh0PC9jb2RlPiBvYmplY3QpLAorICogd2hpY2ggd291bGQgcmV0dXJuIGEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gb2JqZWN0IHdob3NlIHZhbHVlIGlzCisgKiB0aGUgcmVzdWx0IG9mIGFkZGluZyA8Y29kZT5hd2FyZDwvY29kZT4gYW5kIDxjb2RlPmV4dHJhPC9jb2RlPiB1bmRlcgorICogdGhlIGFwcHJvcHJpYXRlIGNvbnRleHQgc2V0dGluZ3MuCisgKiA8cD4KKyAqIFdoZW4gYSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBvcGVyYXRvciBtZXRob2QgaXMgdXNlZCwgYSBzZXQgb2YKKyAqIHJ1bGVzIGRlZmluZSB3aGF0IHRoZSByZXN1bHQgd2lsbCBiZSAoYW5kLCBieSBpbXBsaWNhdGlvbiwgaG93IHRoZQorICogcmVzdWx0IHdvdWxkIGJlIHJlcHJlc2VudGVkIGFzIGEgY2hhcmFjdGVyIHN0cmluZykuCisgKiBUaGVzZSBydWxlcyBhcmUgZGVmaW5lZCBpbiB0aGUgQmlnRGVjaW1hbCBhcml0aG1ldGljIGRvY3VtZW50YXRpb24KKyAqIChzZWUgdGhlIFVSTCBhYm92ZSksIGJ1dCBpbiBzdW1tYXJ5OgorICogPHVsPgorICogPGxpPlJlc3VsdHMgYXJlIG5vcm1hbGx5IGNhbGN1bGF0ZWQgd2l0aCB1cCB0byBzb21lIG1heGltdW0gbnVtYmVyIG9mCisgKiBzaWduaWZpY2FudCBkaWdpdHMuCisgKiBGb3IgZXhhbXBsZSwgaWYgdGhlIDxjb2RlPk1hdGhDb250ZXh0PC9jb2RlPiBwYXJhbWV0ZXIgZm9yIGFuIG9wZXJhdGlvbgorICogd2VyZSA8Y29kZT5NYXRoQ29udGV4dC5ERUZBVUxUPC9jb2RlPiB0aGVuIHRoZSByZXN1bHQgd291bGQgYmUKKyAqIHJvdW5kZWQgdG8gOSBkaWdpdHM7IHRoZSBkaXZpc2lvbiBvZiAyIGJ5IDMgd291bGQgdGhlbiByZXN1bHQgaW4KKyAqIDAuNjY2NjY2NjY3LgorICogPGJyPgorICogWW91IGNhbiBjaGFuZ2UgdGhlIGRlZmF1bHQgb2YgOSBzaWduaWZpY2FudCBkaWdpdHMgYnkgcHJvdmlkaW5nIHRoZQorICogbWV0aG9kIHdpdGggYSBzdWl0YWJsZSA8Y29kZT5NYXRoQ29udGV4dDwvY29kZT4gb2JqZWN0LiBUaGlzIGxldHMgeW91CisgKiBjYWxjdWxhdGUgdXNpbmcgYXMgbWFueSBkaWdpdHMgYXMgeW91IG5lZWQgLS0gdGhvdXNhbmRzLCBpZiBuZWNlc3NhcnkuCisgKiBGaXhlZCBwb2ludCAoc2NhbGVkKSBhcml0aG1ldGljIGlzIGluZGljYXRlZCBieSB1c2luZyBhCisgKiA8Y29kZT5kaWdpdHM8L2NvZGU+IHNldHRpbmcgb2YgMCAob3Igb21pdHRpbmcgdGhlCisgKiA8Y29kZT5NYXRoQ29udGV4dDwvY29kZT4gcGFyYW1ldGVyKS4KKyAqIDxicj4KKyAqIFNpbWlsYXJseSwgeW91IGNhbiBjaGFuZ2UgdGhlIGFsZ29yaXRobSB1c2VkIGZvciByb3VuZGluZyBmcm9tIHRoZQorICogZGVmYXVsdCAiY2xhc3NpYyIgYWxnb3JpdGhtLgorICogPGxpPgorICogSW4gc3RhbmRhcmQgYXJpdGhtZXRpYyAodGhhdCBpcywgd2hlbiB0aGUgPGNvZGU+Zm9ybTwvY29kZT4gc2V0dGluZworICogaXMgbm90IDxjb2RlPlBMQUlOPC9jb2RlPiksIGEgemVybyByZXN1bHQgaXMgYWx3YXlzIGV4cHJlc3NlZCBhcyB0aGUKKyAqIHNpbmdsZSBkaWdpdCA8Y29kZT4nMCc8L2NvZGU+ICh0aGF0IGlzLCB3aXRoIG5vIHNpZ24sIGRlY2ltYWwgcG9pbnQsCisgKiBvciBleHBvbmVudCBwYXJ0KS4KKyAqIDxsaT4KKyAqIEV4Y2VwdCBmb3IgdGhlIGRpdmlzaW9uIGFuZCBwb3dlciBvcGVyYXRvcnMgaW4gc3RhbmRhcmQgYXJpdGhtZXRpYywKKyAqIHRyYWlsaW5nIHplcm9zIGFyZSBwcmVzZXJ2ZWQgKHRoaXMgaXMgaW4gY29udHJhc3QgdG8gYmluYXJ5IGZsb2F0aW5nCisgKiBwb2ludCBvcGVyYXRpb25zIGFuZCBtb3N0IGVsZWN0cm9uaWMgY2FsY3VsYXRvcnMsIHdoaWNoIGxvc2UgdGhlCisgKiBpbmZvcm1hdGlvbiBhYm91dCB0cmFpbGluZyB6ZXJvcyBpbiB0aGUgZnJhY3Rpb25hbCBwYXJ0IG9mIHJlc3VsdHMpLgorICogPGJyPgorICogU28sIGZvciBleGFtcGxlOgorICogPHA+PGNvZGU+CisgKiAgICAgbmV3IEJpZ0RlY2ltYWwoIjIuNDAiKS5hZGQoICAgICBuZXcgQmlnRGVjaW1hbCgiMiIpKSAgICAgID0mZ3Q7ICI0LjQwIgorICogPGJyPm5ldyBCaWdEZWNpbWFsKCIyLjQwIikuc3VidHJhY3QobmV3IEJpZ0RlY2ltYWwoIjIiKSkgICAgICA9Jmd0OyAiMC40MCIKKyAqIDxicj5uZXcgQmlnRGVjaW1hbCgiMi40MCIpLm11bHRpcGx5KG5ldyBCaWdEZWNpbWFsKCIyIikpICAgICAgPSZndDsgIjQuODAiCisgKiA8YnI+bmV3IEJpZ0RlY2ltYWwoIjIuNDAiKS5kaXZpZGUoICBuZXcgQmlnRGVjaW1hbCgiMiIpLCBkZWYpID0mZ3Q7ICIxLjIiCisgKiA8L2NvZGU+CisgKiA8cD53aGVyZSB0aGUgdmFsdWUgb24gdGhlIHJpZ2h0IG9mIHRoZSA8Y29kZT49Jmd0OzwvY29kZT4gd291bGQgYmUgdGhlCisgKiByZXN1bHQgb2YgdGhlIG9wZXJhdGlvbiwgZXhwcmVzc2VkIGFzIGEgPGNvZGU+U3RyaW5nPC9jb2RlPiwgYW5kCisgKiA8Y29kZT5kZWY8L2NvZGU+IChpbiB0aGlzIGFuZCBmb2xsb3dpbmcgZXhhbXBsZXMpIHJlZmVycyB0bworICogPGNvZGU+TWF0aENvbnRleHQuREVGQVVMVDwvY29kZT4pLgorICogVGhpcyBwcmVzZXJ2YXRpb24gb2YgdHJhaWxpbmcgemVyb3MgaXMgZGVzaXJhYmxlIGZvciBtb3N0CisgKiBjYWxjdWxhdGlvbnMgKGluY2x1ZGluZyBmaW5hbmNpYWwgY2FsY3VsYXRpb25zKS4KKyAqIElmIG5lY2Vzc2FyeSwgdHJhaWxpbmcgemVyb3MgbWF5IGJlIGVhc2lseSByZW1vdmVkIHVzaW5nIGRpdmlzaW9uIGJ5IDEuCisgKiA8bGk+CisgKiBJbiBzdGFuZGFyZCBhcml0aG1ldGljLCBleHBvbmVudGlhbCBmb3JtIGlzIHVzZWQgZm9yIGEgcmVzdWx0CisgKiBkZXBlbmRpbmcgb24gaXRzIHZhbHVlIGFuZCB0aGUgY3VycmVudCBzZXR0aW5nIG9mIDxjb2RlPmRpZ2l0czwvY29kZT4KKyAqICh0aGUgZGVmYXVsdCBpcyA5IGRpZ2l0cykuCisgKiBJZiB0aGUgbnVtYmVyIG9mIHBsYWNlcyBuZWVkZWQgYmVmb3JlIHRoZSBkZWNpbWFsIHBvaW50IGV4Y2VlZHMgdGhlCisgKiA8Y29kZT5kaWdpdHM8L2NvZGU+IHNldHRpbmcsIG9yIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgbnVtYmVyIGlzCisgKiBsZXNzIHRoYW4gPGNvZGU+MC4wMDAwMDE8L2NvZGU+LCB0aGVuIHRoZSBudW1iZXIgd2lsbCBiZSBleHByZXNzZWQgaW4KKyAqIGV4cG9uZW50aWFsIG5vdGF0aW9uOyB0aHVzCisgKiA8cD48Y29kZT4KKyAqICAgbmV3IEJpZ0RlY2ltYWwoIjFlKzYiKS5tdWx0aXBseShuZXcgQmlnRGVjaW1hbCgiMWUrNiIpLCBkZWYpCisgKiA8L2NvZGU+CisgKiA8cD5yZXN1bHRzIGluIDxjb2RlPjFFKzEyPC9jb2RlPiBpbnN0ZWFkIG9mCisgKiA8Y29kZT4xMDAwMDAwMDAwMDAwPC9jb2RlPiwgYW5kCisgKiA8cD48Y29kZT4KKyAqICAgbmV3IEJpZ0RlY2ltYWwoIjEiKS5kaXZpZGUobmV3IEJpZ0RlY2ltYWwoIjNFKzEwIiksIGRlZikKKyAqIDwvY29kZT4KKyAqIDxwPnJlc3VsdHMgaW4gPGNvZGU+My4zMzMzMzMzM0UtMTE8L2NvZGU+IGluc3RlYWQgb2YKKyAqIDxjb2RlPjAuMDAwMDAwMDAwMDMzMzMzMzMzMzwvY29kZT4uCisgKiA8cD4KKyAqIFRoZSBmb3JtIG9mIHRoZSBleHBvbmVudGlhbCBub3RhdGlvbiAoc2NpZW50aWZpYyBvciBlbmdpbmVlcmluZykgaXMKKyAqIGRldGVybWluZWQgYnkgdGhlIDxjb2RlPmZvcm08L2NvZGU+IHNldHRpbmcuCisgKiA8ZXVsPgorICogPHA+CisgKiBUaGUgbmFtZXMgb2YgbWV0aG9kcyBpbiB0aGlzIGNsYXNzIGZvbGxvdyB0aGUgY29udmVudGlvbnMgZXN0YWJsaXNoZWQKKyAqIGJ5IDxjb2RlPmphdmEubGFuZy5OdW1iZXI8L2NvZGU+LCA8Y29kZT5qYXZhLm1hdGguQmlnSW50ZWdlcjwvY29kZT4sCisgKiBhbmQgPGNvZGU+amF2YS5tYXRoLkJpZ0RlY2ltYWw8L2NvZGU+IGluIEphdmEgMS4xIGFuZCBKYXZhIDEuMi4KKyAqCisgKiBAc2VlICAgICBNYXRoQ29udGV4dAorICogQGF1dGhvciAgTWlrZSBDb3dsaXNoYXcKKyAqIEBzdGFibGUgSUNVIDIuMAorICovCisKK3B1YmxpYyBjbGFzcyBCaWdEZWNpbWFsIGV4dGVuZHMgamF2YS5sYW5nLk51bWJlciBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlLGphdmEubGFuZy5Db21wYXJhYmxleworIHByaXZhdGUgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgJDA9IkJpZ0RlY2ltYWwubnJ4IjsKKyAKKyAKKyAKKyAvKiAtLS0tLSBDb25zdGFudHMgLS0tLS0gKi8KKyAvKiBwcm9wZXJ0aWVzIGNvbnN0YW50IHB1YmxpYyAqLyAvLyB1c2VmdWwgdG8gb3RoZXJzCisgLyoqCisgICogVGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IGNvbnN0YW50ICIwIi4KKyAgKgorICAqIEBzZWUgI09ORQorICAqIEBzZWUgI1RFTgorICAqIEBzdGFibGUgSUNVIDIuMAorICAqLworIHB1YmxpYyBzdGF0aWMgZmluYWwgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIFpFUk89bmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgobG9uZykwKTsgLy8gdXNlIGxvbmcgYXMgd2Ugd2FudCB0aGUgaW50IGNvbnN0cnVjdG9yCisgLy8gLi4gdG8gYmUgYWJsZSB0byB1c2UgdGhpcywgZm9yIHNwZWVkCisgCisgLyoqCisgICogVGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IGNvbnN0YW50ICIxIi4KKyAgKgorICAqIEBzZWUgI1RFTgorICAqIEBzZWUgI1pFUk8KKyAgKiBAc3RhYmxlIElDVSAyLjAKKyAgKi8KKyBwdWJsaWMgc3RhdGljIGZpbmFsIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCBPTkU9bmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgobG9uZykxKTsgLy8gdXNlIGxvbmcgYXMgd2Ugd2FudCB0aGUgaW50IGNvbnN0cnVjdG9yCisgLy8gLi4gdG8gYmUgYWJsZSB0byB1c2UgdGhpcywgZm9yIHNwZWVkCisgCisgLyoqCisgICogVGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IGNvbnN0YW50ICIxMCIuCisgICoKKyAgKiBAc2VlICNPTkUKKyAgKiBAc2VlICNaRVJPCisgICogQHN0YWJsZSBJQ1UgMi4wCisgICovCisgcHVibGljIHN0YXRpYyBmaW5hbCBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgVEVOPW5ldyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwoMTApOworIAorIC8vIHRoZSByb3VuZGluZyBtb2RlcyAoY29waWVkIGhlcmUgZm9yIHVwd2FyZHMgY29tcGF0aWJpbGl0eSkKKyAvKioKKyAgKiBSb3VuZGluZyBtb2RlIHRvIHJvdW5kIHRvIGEgbW9yZSBwb3NpdGl2ZSBudW1iZXIuCisgICogQHNlZSBNYXRoQ29udGV4dCNST1VORF9DRUlMSU5HCisgICogQHN0YWJsZSBJQ1UgMi4wCisgICovCisgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUk9VTkRfQ0VJTElORz1jb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0NFSUxJTkc7CisgCisgLyoqCisgICogUm91bmRpbmcgbW9kZSB0byByb3VuZCB0b3dhcmRzIHplcm8uCisgICogQHNlZSBNYXRoQ29udGV4dCNST1VORF9ET1dOCisgICogQHN0YWJsZSBJQ1UgMi4wCisgICovCisgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUk9VTkRfRE9XTj1jb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0RPV047CisgCisgLyoqCisgICogUm91bmRpbmcgbW9kZSB0byByb3VuZCB0byBhIG1vcmUgbmVnYXRpdmUgbnVtYmVyLgorICAqIEBzZWUgTWF0aENvbnRleHQjUk9VTkRfRkxPT1IKKyAgKiBAc3RhYmxlIElDVSAyLjAKKyAgKi8KKyBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBST1VORF9GTE9PUj1jb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0ZMT09SOworIAorIC8qKgorICAqIFJvdW5kaW5nIG1vZGUgdG8gcm91bmQgdG8gbmVhcmVzdCBuZWlnaGJvciwgd2hlcmUgYW4gZXF1aWRpc3RhbnQKKyAgKiB2YWx1ZSBpcyByb3VuZGVkIGRvd24uCisgICogQHNlZSBNYXRoQ29udGV4dCNST1VORF9IQUxGX0RPV04KKyAgKiBAc3RhYmxlIElDVSAyLjAKKyAgKi8KKyBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBST1VORF9IQUxGX0RPV049Y29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0RPV047CisgCisgLyoqCisgICogUm91bmRpbmcgbW9kZSB0byByb3VuZCB0byBuZWFyZXN0IG5laWdoYm9yLCB3aGVyZSBhbiBlcXVpZGlzdGFudAorICAqIHZhbHVlIGlzIHJvdW5kZWQgdG8gdGhlIG5lYXJlc3QgZXZlbiBuZWlnaGJvci4KKyAgKiBAc2VlIE1hdGhDb250ZXh0I1JPVU5EX0hBTEZfRVZFTgorICAqIEBzdGFibGUgSUNVIDIuMAorICAqLworIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFJPVU5EX0hBTEZfRVZFTj1jb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRVZFTjsKKyAKKyAvKioKKyAgKiBSb3VuZGluZyBtb2RlIHRvIHJvdW5kIHRvIG5lYXJlc3QgbmVpZ2hib3IsIHdoZXJlIGFuIGVxdWlkaXN0YW50CisgICogdmFsdWUgaXMgcm91bmRlZCB1cC4KKyAgKiBAc2VlIE1hdGhDb250ZXh0I1JPVU5EX0hBTEZfVVAKKyAgKiBAc3RhYmxlIElDVSAyLjAKKyAgKi8KKyBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBST1VORF9IQUxGX1VQPWNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUDsKKyAKKyAvKioKKyAgKiBSb3VuZGluZyBtb2RlIHRvIGFzc2VydCB0aGF0IG5vIHJvdW5kaW5nIGlzIG5lY2Vzc2FyeS4KKyAgKiBAc2VlIE1hdGhDb250ZXh0I1JPVU5EX1VOTkVDRVNTQVJZCisgICogQHN0YWJsZSBJQ1UgMi4wCisgICovCisgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUk9VTkRfVU5ORUNFU1NBUlk9Y29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5ST1VORF9VTk5FQ0VTU0FSWTsKKyAKKyAvKioKKyAgKiBSb3VuZGluZyBtb2RlIHRvIHJvdW5kIGF3YXkgZnJvbSB6ZXJvLgorICAqIEBzZWUgTWF0aENvbnRleHQjUk9VTkRfVVAKKyAgKiBAc3RhYmxlIElDVSAyLjAKKyAgKi8KKyBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBST1VORF9VUD1jb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX1VQOworIAorIC8qIHByb3BlcnRpZXMgY29uc3RhbnQgcHJpdmF0ZSAqLyAvLyBsb2NhbHMKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIGlzcG9zPTE7IC8vIGluZDogaW5kaWNhdGVzIHBvc2l0aXZlIChtdXN0IGJlIDEpCisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYnl0ZSBpc3plcm89MDsgLy8gaW5kOiBpbmRpY2F0ZXMgemVybyAgICAgKG11c3QgYmUgMCkKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIGlzbmVnPS0xOyAvLyBpbmQ6IGluZGljYXRlcyBuZWdhdGl2ZSAobXVzdCBiZSAtMSkKKyAvLyBbbGF0ZXIgY291bGQgYWRkIE5hTiwgKy8tIGluZmluaXR5LCBoZXJlXQorIAorIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNaW5FeHA9LTk5OTk5OTk5OTsgLy8gbWluaW11bSBleHBvbmVudCBhbGxvd2VkCisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1heEV4cD05OTk5OTk5OTk7IC8vIG1heGltdW0gZXhwb25lbnQgYWxsb3dlZAorIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNaW5Bcmc9LTk5OTk5OTk5OTsgLy8gbWluaW11bSBhcmd1bWVudCBpbnRlZ2VyCisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1heEFyZz05OTk5OTk5OTk7IC8vIG1heGltdW0gYXJndW1lbnQgaW50ZWdlcgorIAorIHByaXZhdGUgc3RhdGljIGZpbmFsIGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQgcGxhaW5NQz1uZXcgY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dCgwLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUExBSU4pOyAvLyBjb250ZXh0IGZvciBwbGFpbiB1bmxpbWl0ZWQgbWF0aAorIAorIC8qIHByb3BlcnRpZXMgY29uc3RhbnQgcHJpdmF0ZSB1bnVzZWQgKi8gLy8gcHJlc2VudCBidXQgbm90IHJlZmVyZW5jZWQKKyAKKyAvLyBTZXJpYWxpemF0aW9uIHZlcnNpb24KKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQ9ODI0NTM1NTgwNDk3NDE5ODgzMkw7CisgCisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyBjb3B5cmlnaHQ9IiBDb3B5cmlnaHQgKGMpIElCTSBDb3Jwb3JhdGlvbiAxOTk2LCAyMDAwLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIjsKKyAKKyAvKiBwcm9wZXJ0aWVzIHN0YXRpYyBwcml2YXRlICovCisgLy8gUHJlY2FsY3VsYXRlZCBjb25zdGFudCBhcnJheXMgKHVzZWQgYnkgYnl0ZWFkZHN1YikKKyBwcml2YXRlIHN0YXRpYyBieXRlIGJ5dGVjYXJbXT1uZXcgYnl0ZVsoOTArOTkpKzFdOyAvLyBjYXJyeS9ib3Jyb3cgYXJyYXkKKyBwcml2YXRlIHN0YXRpYyBieXRlIGJ5dGVkaWdbXT1kaWdpbml0KCk7IC8vIG5leHQgZGlnaXQgYXJyYXkKKyAKKyAvKiAtLS0tLSBJbnN0YW5jZSBwcm9wZXJ0aWVzIFthbGwgcHJpdmF0ZSBhbmQgaW1tdXRhYmxlXSAtLS0tLSAqLworIC8qIHByb3BlcnRpZXMgcHJpdmF0ZSAqLworIAorIC8qKgorICAqIFRoZSBpbmRpY2F0b3IuIFRoaXMgbWF5IHRha2UgdGhlIHZhbHVlczoKKyAgKiA8dWw+CisgICogPGxpPmlzcG9zICAtLSB0aGUgbnVtYmVyIGlzIHBvc2l0aXZlCisgICogPGxpPmlzemVybyAtLSB0aGUgbnVtYmVyIGlzIHplcm8KKyAgKiA8bGk+aXNuZWcgIC0tIHRoZSBudW1iZXIgaXMgbmVnYXRpdmUKKyAgKiA8L3VsPgorICAqCisgICogQHNlcmlhbAorICAqLworIHByaXZhdGUgYnl0ZSBpbmQ7IC8vIGFzc3VtZWQgdW5kZWZpbmVkCisgLy8gTm90ZTogc29tZSBjb2RlIGJlbG93IGFzc3VtZXMgSU5EID0gU2lnbiBbLTEsIDAsIDFdLCBhdCBwcmVzZW50LgorIC8vIFdlIG9ubHkgbmVlZCB0d28gYml0cyBmb3IgdGhpcywgYnV0IHVzZSBhIGJ5dGUgW2Fsc28gcGVybWl0cworIC8vIHNtb290aCBmdXR1cmUgZXh0ZW5zaW9uXS4KKyAKKyAvKioKKyAgKiBUaGUgZm9ybWF0dGluZyBzdHlsZS4gVGhpcyBtYXkgdGFrZSB0aGUgdmFsdWVzOgorICAqIDx1bD4KKyAgKiA8bGk+TWF0aENvbnRleHQuUExBSU4gICAgICAgIC0tIG5vIGV4cG9uZW50IG5lZWRlZAorICAqIDxsaT5NYXRoQ29udGV4dC5TQ0lFTlRJRklDICAgLS0gc2NpZW50aWZpYyBub3RhdGlvbiByZXF1aXJlZAorICAqIDxsaT5NYXRoQ29udGV4dC5FTkdJTkVFUklORyAgLS0gZW5naW5lZXJpbmcgbm90YXRpb24gcmVxdWlyZWQKKyAgKiA8L3VsPgorICAqIDxwPgorICAqIFRoaXMgcHJvcGVydHkgaXMgYW4gb3B0aW1pemF0aW9uOyBpdCBhbGxvd3MgdXMgdG8gZGVmZXIgbnVtYmVyCisgICogbGF5b3V0IHVudGlsIGl0IGlzIGFjdHVhbGx5IG5lZWRlZCBhcyBhIHN0cmluZywgaGVuY2UgYXZvaWRpbmcKKyAgKiB1bm5lY2Vzc2FyeSBmb3JtYXR0aW5nLgorICAqCisgICogQHNlcmlhbAorICAqLworIHByaXZhdGUgYnl0ZSBmb3JtPShieXRlKWNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUExBSU47IC8vIGFzc3VtZWQgUExBSU4KKyAvLyBXZSBvbmx5IG5lZWQgdHdvIGJpdHMgZm9yIHRoaXMsIGF0IHByZXNlbnQsIGJ1dCB1c2UgYSBieXRlCisgLy8gW2FnYWluLCB0byBhbGxvdyBmb3Igc21vb3RoIGZ1dHVyZSBleHRlbnNpb25dCisgCisgLyoqCisgICogVGhlIHZhbHVlIG9mIHRoZSBtYW50aXNzYS4KKyAgKiA8cD4KKyAgKiBPbmNlIGNvbnN0cnVjdGVkLCB0aGlzIG1heSBiZWNvbWUgc2hhcmVkIGJldHdlZW4gc2V2ZXJhbCBCaWdEZWNpbWFsCisgICogb2JqZWN0cywgc28gbXVzdCBub3QgYmUgYWx0ZXJlZC4KKyAgKiA8cD4KKyAgKiBGb3IgZWZmaWNpZW5jeSAoc3BlZWQpLCB0aGlzIGlzIGEgYnl0ZSBhcnJheSwgd2l0aCBlYWNoIGJ5dGUKKyAgKiB0YWtpbmcgYSB2YWx1ZSBvZiAwIC0+IDkuCisgICogPHA+CisgICogSWYgdGhlIGZpcnN0IGJ5dGUgaXMgMCB0aGVuIHRoZSB2YWx1ZSBvZiB0aGUgbnVtYmVyIGlzIHplcm8gKGFuZAorICAqIG1hbnQubGVuZ3RoPTEsIGV4Y2VwdCB3aGVuIGNvbnN0cnVjdGVkIGZyb20gYSBwbGFpbiBudW1iZXIsIGZvcgorICAqIGV4YW1wbGUsIDAuMDAwKS4KKyAgKgorICAqIEBzZXJpYWwKKyAgKi8KKyBwcml2YXRlIGJ5dGUgbWFudFtdOyAvLyBhc3N1bWVkIG51bGwKKyAKKyAvKioKKyAgKiBUaGUgZXhwb25lbnQuCisgICogPHA+CisgICogRm9yIGZpeGVkIHBvaW50IGFyaXRobWV0aWMsIHNjYWxlIGlzIDxjb2RlPi1leHA8L2NvZGU+LCBhbmQgY2FuCisgICogYXBwbHkgdG8gemVyby4KKyAgKgorICAqIE5vdGUgdGhhdCB0aGlzIHByb3BlcnR5IGNhbiBoYXZlIGEgdmFsdWUgbGVzcyB0aGFuIE1pbkV4cCB3aGVuCisgICogdGhlIG1hbnRpc3NhIGhhcyBtb3JlIHRoYW4gb25lIGRpZ2l0LgorICAqCisgICogQHNlcmlhbAorICAqLworIHByaXZhdGUgaW50IGV4cDsKKyAvLyBhc3N1bWVkIDAKKyAKKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgLyogQ29uc3RydWN0b3JzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKioKKyAgKiBDb25zdHJ1Y3RzIGEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gb2JqZWN0IGZyb20gYQorICAqIDxjb2RlPmphdmEubWF0aC5CaWdEZWNpbWFsPC9jb2RlPi4KKyAgKiA8cD4KKyAgKiBDb25zdHJ1Y3RzIGEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gYXMgdGhvdWdoIHRoZSBwYXJhbWV0ZXIgaGFkCisgICogYmVlbiByZXByZXNlbnRlZCBhcyBhIDxjb2RlPlN0cmluZzwvY29kZT4gKHVzaW5nIGl0cworICAqIDxjb2RlPnRvU3RyaW5nPC9jb2RlPiBtZXRob2QpIGFuZCB0aGUKKyAgKiB7QGxpbmsgI0JpZ0RlY2ltYWwoamF2YS5sYW5nLlN0cmluZyl9IGNvbnN0cnVjdG9yIGhhZCB0aGVuIGJlZW4KKyAgKiB1c2VkLgorICAqIFRoZSBwYXJhbWV0ZXIgbXVzdCBub3QgYmUgPGNvZGU+bnVsbDwvY29kZT4uCisgICogPHA+CisgICogPGk+KE5vdGU6IHRoaXMgY29uc3RydWN0b3IgaXMgcHJvdmlkZWQgb25seSBpbiB0aGUKKyAgKiA8Y29kZT5jb20uaWJtLmljdS5tYXRoPC9jb2RlPiB2ZXJzaW9uIG9mIHRoZSBCaWdEZWNpbWFsIGNsYXNzLgorICAqIEl0IHdvdWxkIG5vdCBiZSBwcmVzZW50IGluIGEgPGNvZGU+amF2YS5tYXRoPC9jb2RlPiB2ZXJzaW9uLik8L2k+CisgICoKKyAgKiBAcGFyYW0gYmQgVGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHRvIGJlIHRyYW5zbGF0ZWQuCisgICogQHN0YWJsZSBJQ1UgMi4wCisgICovCisgCisgcHVibGljIEJpZ0RlY2ltYWwoamF2YS5tYXRoLkJpZ0RlY2ltYWwgYmQpeworICB0aGlzKGJkLnRvU3RyaW5nKCkpOworICByZXR1cm47fQorCisgLyoqCisgICogQ29uc3RydWN0cyBhIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IG9iamVjdCBmcm9tIGEKKyAgKiA8Y29kZT5CaWdJbnRlZ2VyPC9jb2RlPiwgd2l0aCBzY2FsZSAwLgorICAqIDxwPgorICAqIENvbnN0cnVjdHMgYSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aGljaCBpcyB0aGUgZXhhY3QgZGVjaW1hbAorICAqIHJlcHJlc2VudGF0aW9uIG9mIHRoZSA8Y29kZT5CaWdJbnRlZ2VyPC9jb2RlPiwgd2l0aCBhIHNjYWxlIG9mCisgICogemVyby4KKyAgKiBUaGUgdmFsdWUgb2YgdGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IGlzIGlkZW50aWNhbCB0byB0aGUgdmFsdWUKKyAgKiBvZiB0aGUgPGNvZGU+QmlnSW50ZWdlcjwvY29kZT4uCisgICogVGhlIHBhcmFtZXRlciBtdXN0IG5vdCBiZSA8Y29kZT5udWxsPC9jb2RlPi4KKyAgKiA8cD4KKyAgKiBUaGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2lsbCBjb250YWluIG9ubHkgZGVjaW1hbCBkaWdpdHMsCisgICogcHJlZml4ZWQgd2l0aCBhIGxlYWRpbmcgbWludXMgc2lnbiAoaHlwaGVuKSBpZiB0aGUKKyAgKiA8Y29kZT5CaWdJbnRlZ2VyPC9jb2RlPiBpcyBuZWdhdGl2ZS4gIEEgbGVhZGluZyB6ZXJvIHdpbGwgYmUKKyAgKiBwcmVzZW50IG9ubHkgaWYgdGhlIDxjb2RlPkJpZ0ludGVnZXI8L2NvZGU+IGlzIHplcm8uCisgICoKKyAgKiBAcGFyYW0gYmkgVGhlIDxjb2RlPkJpZ0ludGVnZXI8L2NvZGU+IHRvIGJlIGNvbnZlcnRlZC4KKyAgKiBAc3RhYmxlIElDVSAyLjAKKyAgKi8KKyAKKyBwdWJsaWMgQmlnRGVjaW1hbChqYXZhLm1hdGguQmlnSW50ZWdlciBiaSl7CisgIHRoaXMoYmkudG9TdHJpbmcoMTApKTsKKyAgcmV0dXJuO30KKyAvLyBleHAgcmVtYWlucyAwCisgCisgLyoqCisgICogQ29uc3RydWN0cyBhIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IG9iamVjdCBmcm9tIGEKKyAgKiA8Y29kZT5CaWdJbnRlZ2VyPC9jb2RlPiBhbmQgYSBzY2FsZS4KKyAgKiA8cD4KKyAgKiBDb25zdHJ1Y3RzIGEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hpY2ggaXMgdGhlIGV4YWN0IGRlY2ltYWwKKyAgKiByZXByZXNlbnRhdGlvbiBvZiB0aGUgPGNvZGU+QmlnSW50ZWdlcjwvY29kZT4sIHNjYWxlZCBieSB0aGUKKyAgKiBzZWNvbmQgcGFyYW1ldGVyLCB3aGljaCBtYXkgbm90IGJlIG5lZ2F0aXZlLgorICAqIFRoZSB2YWx1ZSBvZiB0aGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gaXMgdGhlCisgICogPGNvZGU+QmlnSW50ZWdlcjwvY29kZT4gZGl2aWRlZCBieSB0ZW4gdG8gdGhlIHBvd2VyIG9mIHRoZSBzY2FsZS4KKyAgKiBUaGUgPGNvZGU+QmlnSW50ZWdlcjwvY29kZT4gcGFyYW1ldGVyIG11c3Qgbm90IGJlCisgICogPGNvZGU+bnVsbDwvY29kZT4uCisgICogPHA+CisgICogVGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHdpbGwgY29udGFpbiBvbmx5IGRlY2ltYWwgZGlnaXRzLCAod2l0aAorICAqIGFuIGVtYmVkZGVkIGRlY2ltYWwgcG9pbnQgZm9sbG93ZWQgYnkgPGNvZGU+c2NhbGU8L2NvZGU+IGRlY2ltYWwKKyAgKiBkaWdpdHMgaWYgdGhlIHNjYWxlIGlzIHBvc2l0aXZlKSwgcHJlZml4ZWQgd2l0aCBhIGxlYWRpbmcgbWludXMKKyAgKiBzaWduIChoeXBoZW4pIGlmIHRoZSA8Y29kZT5CaWdJbnRlZ2VyPC9jb2RlPiBpcyBuZWdhdGl2ZS4gIEEKKyAgKiBsZWFkaW5nIHplcm8gd2lsbCBiZSBwcmVzZW50IG9ubHkgaWYgdGhlIDxjb2RlPkJpZ0ludGVnZXI8L2NvZGU+IGlzCisgICogemVyby4KKyAgKgorICAqIEBwYXJhbSAgYmkgICAgVGhlIDxjb2RlPkJpZ0ludGVnZXI8L2NvZGU+IHRvIGJlIGNvbnZlcnRlZC4KKyAgKiBAcGFyYW0gIHNjYWxlIFRoZSA8Y29kZT5pbnQ8L2NvZGU+IHNwZWNpZnlpbmcgdGhlIHNjYWxlLgorICAqIEB0aHJvd3MgTnVtYmVyRm9ybWF0RXhjZXB0aW9uIGlmIHRoZSBzY2FsZSBpcyBuZWdhdGl2ZS4KKyAgKiBAc3RhYmxlIElDVSAyLjAKKyAgKi8KKyAKKyBwdWJsaWMgQmlnRGVjaW1hbChqYXZhLm1hdGguQmlnSW50ZWdlciBiaSxpbnQgc2NhbGUpeworICB0aGlzKGJpLnRvU3RyaW5nKDEwKSk7CisgIGlmIChzY2FsZTwwKSAKKyAgIHRocm93IG5ldyBqYXZhLmxhbmcuTnVtYmVyRm9ybWF0RXhjZXB0aW9uKCJOZWdhdGl2ZSBzY2FsZToiKyIgIitzY2FsZSk7CisgIGV4cD0oaW50KS1zY2FsZTsgLy8gZXhwb25lbnQgaXMgLXNjYWxlCisgIHJldHVybjt9CisKKyAvKioKKyAgKiBDb25zdHJ1Y3RzIGEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gb2JqZWN0IGZyb20gYW4gYXJyYXkgb2YgY2hhcmFjdGVycy4KKyAgKiA8cD4KKyAgKiBDb25zdHJ1Y3RzIGEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gYXMgdGhvdWdoIGEKKyAgKiA8Y29kZT5TdHJpbmc8L2NvZGU+IGhhZCBiZWVuIGNvbnN0cnVjdGVkIGZyb20gdGhlIGNoYXJhY3RlciBhcnJheQorICAqIGFuZCB0aGUge0BsaW5rICNCaWdEZWNpbWFsKGphdmEubGFuZy5TdHJpbmcpfSBjb25zdHJ1Y3RvciBoYWQgdGhlbgorICAqIGJlZW4gdXNlZC4gVGhlIHBhcmFtZXRlciBtdXN0IG5vdCBiZSA8Y29kZT5udWxsPC9jb2RlPi4KKyAgKiA8cD4KKyAgKiBVc2luZyB0aGlzIGNvbnN0cnVjdG9yIGlzIGZhc3RlciB0aGFuIHVzaW5nIHRoZQorICAqIDxjb2RlPkJpZ0RlY2ltYWwoU3RyaW5nKTwvY29kZT4gY29uc3RydWN0b3IgaWYgdGhlIHN0cmluZyBpcworICAqIGFscmVhZHkgYXZhaWxhYmxlIGluIGNoYXJhY3RlciBhcnJheSBmb3JtLgorICAqCisgICogQHBhcmFtIGluY2hhcnMgVGhlIDxjb2RlPmNoYXJbXTwvY29kZT4gYXJyYXkgY29udGFpbmluZyB0aGUgbnVtYmVyCisgICogICAgICAgICAgICAgICAgdG8gYmUgY29udmVydGVkLgorICAqIEB0aHJvd3MgTnVtYmVyRm9ybWF0RXhjZXB0aW9uIGlmIHRoZSBwYXJhbWV0ZXIgaXMgbm90IGEgdmFsaWQKKyAgKiAgICAgICAgICAgICAgICBudW1iZXIuCisgICogQHN0YWJsZSBJQ1UgMi4wCisgICovCisgCisgcHVibGljIEJpZ0RlY2ltYWwoY2hhciBpbmNoYXJzW10peworICB0aGlzKGluY2hhcnMsMCxpbmNoYXJzLmxlbmd0aCk7CisgIHJldHVybjt9CisKKyAvKioKKyAgKiBDb25zdHJ1Y3RzIGEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gb2JqZWN0IGZyb20gYW4gYXJyYXkgb2YgY2hhcmFjdGVycy4KKyAgKiA8cD4KKyAgKiBDb25zdHJ1Y3RzIGEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gYXMgdGhvdWdoIGEKKyAgKiA8Y29kZT5TdHJpbmc8L2NvZGU+IGhhZCBiZWVuIGNvbnN0cnVjdGVkIGZyb20gdGhlIGNoYXJhY3RlciBhcnJheQorICAqIChvciBhIHN1YmFycmF5IG9mIHRoYXQgYXJyYXkpIGFuZCB0aGUKKyAgKiB7QGxpbmsgI0JpZ0RlY2ltYWwoamF2YS5sYW5nLlN0cmluZyl9IGNvbnN0cnVjdG9yIGhhZCB0aGVuIGJlZW4KKyAgKiB1c2VkLiBUaGUgZmlyc3QgcGFyYW1ldGVyIG11c3Qgbm90IGJlIDxjb2RlPm51bGw8L2NvZGU+LCBhbmQgdGhlCisgICogc3ViYXJyYXkgbXVzdCBiZSB3aG9sbHkgY29udGFpbmVkIHdpdGhpbiBpdC4KKyAgKiA8cD4KKyAgKiBVc2luZyB0aGlzIGNvbnN0cnVjdG9yIGlzIGZhc3RlciB0aGFuIHVzaW5nIHRoZQorICAqIDxjb2RlPkJpZ0RlY2ltYWwoU3RyaW5nKTwvY29kZT4gY29uc3RydWN0b3IgaWYgdGhlIHN0cmluZyBpcworICAqIGFscmVhZHkgYXZhaWxhYmxlIHdpdGhpbiBhIGNoYXJhY3RlciBhcnJheS4KKyAgKgorICAqIEBwYXJhbSBpbmNoYXJzIFRoZSA8Y29kZT5jaGFyW108L2NvZGU+IGFycmF5IGNvbnRhaW5pbmcgdGhlIG51bWJlcgorICAqICAgICAgICAgICAgICAgIHRvIGJlIGNvbnZlcnRlZC4KKyAgKiBAcGFyYW0gb2Zmc2V0ICBUaGUgPGNvZGU+aW50PC9jb2RlPiBvZmZzZXQgaW50byB0aGUgYXJyYXkgb2YgdGhlCisgICogICAgICAgICAgICAgICAgc3RhcnQgb2YgdGhlIG51bWJlciB0byBiZSBjb252ZXJ0ZWQuCisgICogQHBhcmFtIGxlbmd0aCAgVGhlIDxjb2RlPmludDwvY29kZT4gbGVuZ3RoIG9mIHRoZSBudW1iZXIuCisgICogQHRocm93cyBOdW1iZXJGb3JtYXRFeGNlcHRpb24gaWYgdGhlIHBhcmFtZXRlciBpcyBub3QgYSB2YWxpZAorICAqICAgICAgICAgICAgICAgIG51bWJlciBmb3IgYW55IHJlYXNvbi4KKyAgKiBAc3RhYmxlIElDVSAyLjAKKyAgKi8KKyAKKyBwdWJsaWMgQmlnRGVjaW1hbChjaGFyIGluY2hhcnNbXSxpbnQgb2Zmc2V0LGludCBsZW5ndGgpe3N1cGVyKCk7CisgIGJvb2xlYW4gZXhvdGljOworICBib29sZWFuIGhhZGV4cDsKKyAgaW50IGQ7CisgIGludCBkb3RvZmY7CisgIGludCBsYXN0OworICBpbnQgaT0wOworICBjaGFyIHNpPTA7CisgIGJvb2xlYW4gZW5lZz1mYWxzZTsKKyAgaW50IGs9MDsKKyAgaW50IGVsZW49MDsKKyAgaW50IGo9MDsKKyAgY2hhciBzaj0wOworICBpbnQgZHZhbHVlPTA7CisgIGludCBtYWc9MDsKKyAgLy8gVGhpcyBpcyB0aGUgcHJpbWFyeSBjb25zdHJ1Y3RvcjsgYWxsIGluY29taW5nIHN0cmluZ3MgZW5kIHVwCisgIC8vIGhlcmU7IGl0IHVzZXMgZXhwbGljaXQgKGlubGluZSkgcGFyc2luZyBmb3Igc3BlZWQgYW5kIHRvIGF2b2lkCisgIC8vIGdlbmVyYXRpbmcgaW50ZXJtZWRpYXRlICh0ZW1wb3JhcnkpIG9iamVjdHMgb2YgYW55IGtpbmQuCisgIC8vIDE5OTguMDYuMjU6IGV4cG9uZW50IGZvcm0gYnVpbHQgb25seSBpZiBFL2UgaW4gc3RyaW5nCisgIC8vIDE5OTguMDYuMjU6IHRyYWlsaW5nIHplcm9zIG5vdCByZW1vdmVkIGZvciB6ZXJvCisgIC8vIDE5OTkuMDMuMDY6IG5vIGVtYmVkZGVkIGJsYW5rczsgYWxsb3cgb2Zmc2V0IGFuZCBsZW5ndGgKKyAgaWYgKGxlbmd0aDw9MCkgCisgICBiYWQoaW5jaGFycyk7IC8vIGJhZCBjb252ZXJzaW9uIChlbXB0eSBzdHJpbmcpCisgIC8vIFtiYWQgb2Zmc2V0IHdpbGwgcmFpc2UgYXJyYXkgYm91bmRzIGV4Y2VwdGlvbl0KKyAgCisgIC8qIEhhbmRsZSBhbmQgc3RlcCBwYXN0IHNpZ24gKi8KKyAgaW5kPWlzcG9zOyAvLyBhc3N1bWUgcG9zaXRpdmUKKyAgaWYgKGluY2hhcnNbMF09PSgnLScpKSAKKyAgIHsKKyAgICBsZW5ndGgtLTsKKyAgICBpZiAobGVuZ3RoPT0wKSAKKyAgICAgYmFkKGluY2hhcnMpOyAvLyBub3RoaW5nIGFmdGVyIHNpZ24KKyAgICBpbmQ9aXNuZWc7CisgICAgb2Zmc2V0Kys7CisgICB9CisgIGVsc2UgCisgICBpZiAoaW5jaGFyc1swXT09KCcrJykpIAorICAgIHsKKyAgICAgbGVuZ3RoLS07CisgICAgIGlmIChsZW5ndGg9PTApIAorICAgICAgYmFkKGluY2hhcnMpOyAvLyBub3RoaW5nIGFmdGVyIHNpZ24KKyAgICAgb2Zmc2V0Kys7CisgICAgfQorICAKKyAgLyogV2UncmUgYXQgdGhlIHN0YXJ0IG9mIHRoZSBudW1iZXIgKi8KKyAgZXhvdGljPWZhbHNlOyAvLyBoYXZlIGV4dHJhIGRpZ2l0cworICBoYWRleHA9ZmFsc2U7IC8vIGhhZCBleHBsaWNpdCBleHBvbmVudAorICBkPTA7IC8vIGNvdW50IG9mIGRpZ2l0cyBmb3VuZAorICBkb3RvZmY9LTE7IC8vIG9mZnNldCB3aGVyZSBkb3Qgd2FzIGZvdW5kCisgIGxhc3Q9LTE7IC8vIGxhc3QgY2hhcmFjdGVyIG9mIG1hbnRpc3NhCisgIHtpbnQgJDE9bGVuZ3RoO2k9b2Zmc2V0O2k6Zm9yKDskMT4wOyQxLS0saSsrKXsKKyAgIHNpPWluY2hhcnNbaV07CisgICBpZiAoc2k+PScwJykgIC8vIHRlc3QgZm9yIEFyYWJpYyBkaWdpdAorICAgIGlmIChzaTw9JzknKSAKKyAgICAgeworICAgICAgbGFzdD1pOworICAgICAgZCsrOyAvLyBzdGlsbCBpbiBtYW50aXNzYQorICAgICAgY29udGludWUgaTsKKyAgICAgfQorICAgaWYgKHNpPT0nLicpIAorICAgIHsgLy8gcmVjb3JkIGFuZCBpZ25vcmUKKyAgICAgaWYgKGRvdG9mZj49MCkgCisgICAgICBiYWQoaW5jaGFycyk7IC8vIHR3byBkb3RzCisgICAgIGRvdG9mZj1pLW9mZnNldDsgLy8gb2Zmc2V0IGludG8gbWFudGlzc2EKKyAgICAgY29udGludWUgaTsKKyAgICB9CisgICBpZiAoc2khPSdlJykgCisgICAgaWYgKHNpIT0nRScpIAorICAgICB7IC8vIGV4cGVjdCBhbiBleHRyYSBkaWdpdAorICAgICAgaWYgKCghKGphdmEubGFuZy5DaGFyYWN0ZXIuaXNEaWdpdChzaSkpKSkgCisgICAgICAgYmFkKGluY2hhcnMpOyAvLyBub3QgYSBudW1iZXIKKyAgICAgIC8vIGRlZmVyIHRoZSBiYXNlIDEwIGNoZWNrIHVudGlsIGxhdGVyIHRvIGF2b2lkIGV4dHJhIG1ldGhvZCBjYWxsCisgICAgICBleG90aWM9dHJ1ZTsgLy8gd2lsbCBuZWVkIGNvbnZlcnNpb24gbGF0ZXIKKyAgICAgIGxhc3Q9aTsKKyAgICAgIGQrKzsgLy8gc3RpbGwgaW4gbWFudGlzc2EKKyAgICAgIGNvbnRpbnVlIGk7CisgICAgIH0KKyAgIC8qIEZvdW5kICdlJyBvciAnRScgLS0gbm93IHByb2Nlc3MgZXhwbGljaXQgZXhwb25lbnQgKi8KKyAgIC8vIDE5OTguMDcuMTE6IHNpZ24gbm8gbG9uZ2VyIHJlcXVpcmVkCisgICBpZiAoKGktb2Zmc2V0KT4obGVuZ3RoLTIpKSAKKyAgICBiYWQoaW5jaGFycyk7IC8vIG5vIHJvb20gZm9yIGV2ZW4gb25lIGRpZ2l0CisgICBlbmVnPWZhbHNlOworICAgaWYgKChpbmNoYXJzW2krMV0pPT0oJy0nKSkgCisgICAgeworICAgICBlbmVnPXRydWU7CisgICAgIGs9aSsyOworICAgIH0KKyAgIGVsc2UgCisgICAgaWYgKChpbmNoYXJzW2krMV0pPT0oJysnKSkgCisgICAgIGs9aSsyOworICAgIGVsc2UgCisgICAgIGs9aSsxOworICAgLy8gayBpcyBvZmZzZXQgb2YgZmlyc3QgZXhwZWN0ZWQgZGlnaXQKKyAgIGVsZW49bGVuZ3RoLSgoay1vZmZzZXQpKTsgLy8gcG9zc2libGUgbnVtYmVyIG9mIGRpZ2l0cworICAgaWYgKChlbGVuPT0wKXwoZWxlbj45KSkgCisgICAgYmFkKGluY2hhcnMpOyAvLyAwIG9yIG1vcmUgdGhhbiA5IGRpZ2l0cworICAge2ludCAkMj1lbGVuO2o9aztqOmZvcig7JDI+MDskMi0tLGorKyl7CisgICAgc2o9aW5jaGFyc1tqXTsKKyAgICBpZiAoc2o8JzAnKSAKKyAgICAgYmFkKGluY2hhcnMpOyAvLyBhbHdheXMgYmFkCisgICAgaWYgKHNqPic5JykgCisgICAgIHsgLy8gbWF5YmUgYW4gZXhvdGljIGRpZ2l0CisgICAgICBpZiAoKCEoamF2YS5sYW5nLkNoYXJhY3Rlci5pc0RpZ2l0KHNqKSkpKSAKKyAgICAgICBiYWQoaW5jaGFycyk7IC8vIG5vdCBhIG51bWJlcgorICAgICAgZHZhbHVlPWphdmEubGFuZy5DaGFyYWN0ZXIuZGlnaXQoc2osMTApOyAvLyBjaGVjayBiYXNlCisgICAgICBpZiAoZHZhbHVlPDApIAorICAgICAgIGJhZChpbmNoYXJzKTsgLy8gbm90IGJhc2UgMTAKKyAgICAgfQorICAgIGVsc2UgCisgICAgIGR2YWx1ZT0oKGludCkoc2opKS0oKGludCkoJzAnKSk7CisgICAgZXhwPShleHAqMTApK2R2YWx1ZTsKKyAgICB9CisgICB9LypqKi8KKyAgIGlmIChlbmVnKSAKKyAgICBleHA9KGludCktZXhwOyAvLyB3YXMgbmVnYXRpdmUKKyAgIGhhZGV4cD10cnVlOyAvLyByZW1lbWJlciB3ZSBoYWQgb25lCisgICBicmVhayBpOyAvLyB3ZSBhcmUgZG9uZQorICAgfQorICB9LyppKi8KKyAgCisgIC8qIEhlcmUgd2hlbiBhbGwgaW5zcGVjdGVkICovCisgIGlmIChkPT0wKSAKKyAgIGJhZChpbmNoYXJzKTsgLy8gbm8gbWFudGlzc2EgZGlnaXRzCisgIGlmIChkb3RvZmY+PTApIAorICAgZXhwPShleHArZG90b2ZmKS1kOyAvLyBhZGp1c3QgZXhwb25lbnQgaWYgaGFkIGRvdAorICAKKyAgLyogc3RyaXAgbGVhZGluZyB6ZXJvcy9kb3QgKGxlYXZlIGZpbmFsIGlmIGFsbCAwJ3MpICovCisgIHtpbnQgJDM9bGFzdC0xO2k9b2Zmc2V0O2k6Zm9yKDtpPD0kMztpKyspeworICAgc2k9aW5jaGFyc1tpXTsKKyAgIGlmIChzaT09JzAnKSAKKyAgICB7CisgICAgIG9mZnNldCsrOworICAgICBkb3RvZmYtLTsKKyAgICAgZC0tOworICAgIH0KKyAgIGVsc2UgCisgICAgaWYgKHNpPT0nLicpIAorICAgICB7CisgICAgICBvZmZzZXQrKzsgLy8gc3RlcCBwYXN0IGRvdAorICAgICAgZG90b2ZmLS07CisgICAgIH0KKyAgICBlbHNlIAorICAgICBpZiAoc2k8PSc5JykgCisgICAgICBicmVhayBpOy8qIG5vbi0wICovCisgICAgIGVsc2UgCisgICAgICB7LyogZXhvdGljICovCisgICAgICAgaWYgKChqYXZhLmxhbmcuQ2hhcmFjdGVyLmRpZ2l0KHNpLDEwKSkhPTApIAorICAgICAgICBicmVhayBpOyAvLyBub24tMCBvciBiYWQKKyAgICAgICAvLyBpcyAwIC4uIHN0cmlwIGxpa2UgJzAnCisgICAgICAgb2Zmc2V0Kys7CisgICAgICAgZG90b2ZmLS07CisgICAgICAgZC0tOworICAgICAgfQorICAgfQorICB9LyppKi8KKyAgCisgIC8qIENyZWF0ZSB0aGUgbWFudGlzc2EgYXJyYXkgKi8KKyAgbWFudD1uZXcgYnl0ZVtkXTsgLy8gd2Uga25vdyB0aGUgbGVuZ3RoCisgIGo9b2Zmc2V0OyAvLyBpbnB1dCBvZmZzZXQKKyAgaWYgKGV4b3RpYykgCisgICB7ZXhvdGljYTpkb3sgLy8gc2xvdzogY2hlY2sgZm9yIGV4b3RpY2EKKyAgICB7aW50ICQ0PWQ7aT0wO2k6Zm9yKDskND4wOyQ0LS0saSsrKXsKKyAgICAgaWYgKGk9PWRvdG9mZikgCisgICAgICBqKys7IC8vIGF0IGRvdAorICAgICBzaj1pbmNoYXJzW2pdOworICAgICBpZiAoc2o8PSc5JykgCisgICAgICBtYW50W2ldPShieXRlKSgoKGludCkoc2opKS0oKGludCkoJzAnKSkpOy8qIGVhc3kgKi8KKyAgICAgZWxzZSAKKyAgICAgIHsKKyAgICAgICBkdmFsdWU9amF2YS5sYW5nLkNoYXJhY3Rlci5kaWdpdChzaiwxMCk7CisgICAgICAgaWYgKGR2YWx1ZTwwKSAKKyAgICAgICAgYmFkKGluY2hhcnMpOyAvLyBub3QgYSBudW1iZXIgYWZ0ZXIgYWxsCisgICAgICAgbWFudFtpXT0oYnl0ZSlkdmFsdWU7CisgICAgICB9CisgICAgIGorKzsKKyAgICAgfQorICAgIH0vKmkqLworICAgfXdoaWxlKGZhbHNlKTt9LypleG90aWNhKi8KKyAgZWxzZSAKKyAgIHtzaW1wbGU6ZG97CisgICAge2ludCAkNT1kO2k9MDtpOmZvcig7JDU+MDskNS0tLGkrKyl7CisgICAgIGlmIChpPT1kb3RvZmYpIAorICAgICAgaisrOworICAgICBtYW50W2ldPShieXRlKSgoKGludCkoaW5jaGFyc1tqXSkpLSgoaW50KSgnMCcpKSk7CisgICAgIGorKzsKKyAgICAgfQorICAgIH0vKmkqLworICAgfXdoaWxlKGZhbHNlKTt9LypzaW1wbGUqLworICAKKyAgLyogTG9va3MgZ29vZC4gIFNldCB0aGUgc2lnbiBpbmRpY2F0b3IgYW5kIGZvcm0sIGFzIG5lZWRlZC4gKi8KKyAgLy8gVHJhaWxpbmcgemVyb3MgYXJlIHByZXNlcnZlZAorICAvLyBUaGUgcnVsZSBoZXJlIGZvciBmb3JtIGlzOgorICAvLyAgIElmIG5vIEUtbm90YXRpb24sIHRoZW4gcmVxdWVzdCBwbGFpbiBub3RhdGlvbgorICAvLyAgIE90aGVyd2lzZSBhY3QgYXMgdGhvdWdoIGFkZCgwLERFRkFVTFQpIGFuZCByZXF1ZXN0IHNjaWVudGlmaWMgbm90YXRpb24KKyAgLy8gW2Zvcm0gaXMgYWxyZWFkeSBQTEFJTl0KKyAgaWYgKG1hbnRbMF09PTApIAorICAgeworICAgIGluZD1pc3plcm87IC8vIGZvcmNlIHRvIHNob3cgemVybworICAgIC8vIG5lZ2F0aXZlIGV4cG9uZW50IGlzIHNpZ25pZmljYW50IChlLmcuLCAtMyBmb3IgMC4wMDApIGlmIHBsYWluCisgICAgaWYgKGV4cD4wKSAKKyAgICAgZXhwPTA7IC8vIHBvc2l0aXZlIGV4cG9uZW50IGNhbiBiZSBpZ25vcmVkCisgICAgaWYgKGhhZGV4cCkgCisgICAgIHsgLy8gemVybyBiZWNvbWVzIHNpbmdsZSBkaWdpdCBmcm9tIGFkZAorICAgICAgbWFudD1aRVJPLm1hbnQ7CisgICAgICBleHA9MDsKKyAgICAgfQorICAgfQorICBlbHNlIAorICAgeyAvLyBub24temVybworICAgIC8vIFtpbmQgd2FzIHNldCBlYXJsaWVyXQorICAgIC8vIG5vdyBkZXRlcm1pbmUgZm9ybQorICAgIGlmIChoYWRleHApIAorICAgICB7CisgICAgICBmb3JtPShieXRlKWNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuU0NJRU5USUZJQzsKKyAgICAgIC8vIDE5OTkuMDYuMjkgY2hlY2sgZm9yIG92ZXJmbG93CisgICAgICBtYWc9KGV4cCttYW50Lmxlbmd0aCktMTsgLy8gdHJ1ZSBleHBvbmVudCBpbiBzY2llbnRpZmljIG5vdGF0aW9uCisgICAgICBpZiAoKG1hZzxNaW5FeHApfChtYWc+TWF4RXhwKSkgCisgICAgICAgYmFkKGluY2hhcnMpOworICAgICB9CisgICB9CisgIC8vIHNheSAnQkQoY1tdKTogbWFudFswXSBtYW50bGVuIGV4cCBpbmQgZm9ybTonIG1hbnRbMF0gbWFudC5sZW5ndGggZXhwIGluZCBmb3JtCisgIHJldHVybjsKKyAgfQorCisgLyoqCisgICogQ29uc3RydWN0cyBhIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IG9iamVjdCBkaXJlY3RseSBmcm9tIGEKKyAgKiA8Y29kZT5kb3VibGU8L2NvZGU+LgorICAqIDxwPgorICAqIENvbnN0cnVjdHMgYSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aGljaCBpcyB0aGUgZXhhY3QgZGVjaW1hbAorICAqIHJlcHJlc2VudGF0aW9uIG9mIHRoZSA2NC1iaXQgc2lnbmVkIGJpbmFyeSBmbG9hdGluZyBwb2ludAorICAqIHBhcmFtZXRlci4KKyAgKiA8cD4KKyAgKiBOb3RlIHRoYXQgdGhpcyBjb25zdHJ1Y3RvciBpdCBhbiBleGFjdCBjb252ZXJzaW9uOyBpdCBkb2VzIG5vdCBnaXZlCisgICogdGhlIHNhbWUgcmVzdWx0IGFzIGNvbnZlcnRpbmcgPGNvZGU+bnVtPC9jb2RlPiB0byBhCisgICogPGNvZGU+U3RyaW5nPC9jb2RlPiB1c2luZyB0aGUgPGNvZGU+RG91YmxlLnRvU3RyaW5nKCk8L2NvZGU+IG1ldGhvZAorICAqIGFuZCB0aGVuIHVzaW5nIHRoZSB7QGxpbmsgI0JpZ0RlY2ltYWwoamF2YS5sYW5nLlN0cmluZyl9CisgICogY29uc3RydWN0b3IuCisgICogVG8gZ2V0IHRoYXQgcmVzdWx0LCB1c2UgdGhlIHN0YXRpYyB7QGxpbmsgI3ZhbHVlT2YoZG91YmxlKX0KKyAgKiBtZXRob2QgdG8gY29uc3RydWN0IGEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gZnJvbSBhCisgICogPGNvZGU+ZG91YmxlPC9jb2RlPi4KKyAgKgorICAqIEBwYXJhbSBudW0gVGhlIDxjb2RlPmRvdWJsZTwvY29kZT4gdG8gYmUgY29udmVydGVkLgorICAqIEB0aHJvd3MgTnVtYmVyRm9ybWF0RXhjZXB0aW9uIGlmIHRoZSBwYXJhbWV0ZXIgaXMgaW5maW5pdGUgb3IKKyAgKiAgICAgICAgICAgIG5vdCBhIG51bWJlci4KKyAgKiBAc3RhYmxlIElDVSAyLjAKKyAgKi8KKyAKKyBwdWJsaWMgQmlnRGVjaW1hbChkb3VibGUgbnVtKXsKKyAgLy8gMTk5OS4wMy4wNjogdXNlIGV4YWN0bHkgdGhlIG9sZCBhbGdvcml0aG0KKyAgLy8gMjAwMC4wMS4wMTogbm90ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgZG9lcyBnaXZlIGFuIGV4YWN0IHJlc3VsdCwKKyAgLy8gICAgICAgICAgICAgc28gcGVyaGFwcyBpdCBzaG91bGQgbm90IGJlIGRlcHJlY2F0ZWQKKyAgLy8gMjAwMC4wNi4xODogbm8gbG9uZ2VyIGRlcHJlY2F0ZWQKKyAgdGhpcygobmV3IGphdmEubWF0aC5CaWdEZWNpbWFsKG51bSkpLnRvU3RyaW5nKCkpOworICByZXR1cm47fQorCisgLyoqCisgICogQ29uc3RydWN0cyBhIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IG9iamVjdCBkaXJlY3RseSBmcm9tIGEKKyAgKiA8Y29kZT5pbnQ8L2NvZGU+LgorICAqIDxwPgorICAqIENvbnN0cnVjdHMgYSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aGljaCBpcyB0aGUgZXhhY3QgZGVjaW1hbAorICAqIHJlcHJlc2VudGF0aW9uIG9mIHRoZSAzMi1iaXQgc2lnbmVkIGJpbmFyeSBpbnRlZ2VyIHBhcmFtZXRlci4KKyAgKiBUaGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2lsbCBjb250YWluIG9ubHkgZGVjaW1hbCBkaWdpdHMsCisgICogcHJlZml4ZWQgd2l0aCBhIGxlYWRpbmcgbWludXMgc2lnbiAoaHlwaGVuKSBpZiB0aGUgcGFyYW1ldGVyIGlzCisgICogbmVnYXRpdmUuCisgICogQSBsZWFkaW5nIHplcm8gd2lsbCBiZSBwcmVzZW50IG9ubHkgaWYgdGhlIHBhcmFtZXRlciBpcyB6ZXJvLgorICAqCisgICogQHBhcmFtIG51bSBUaGUgPGNvZGU+aW50PC9jb2RlPiB0byBiZSBjb252ZXJ0ZWQuCisgICogQHN0YWJsZSBJQ1UgMi4wCisgICovCisgCisgcHVibGljIEJpZ0RlY2ltYWwoaW50IG51bSl7c3VwZXIoKTsKKyAgaW50IG11bjsKKyAgaW50IGk9MDsKKyAgLy8gV2UgZmFzdHBhdGggY29tbW9uZXJzCisgIGlmIChudW08PTkpIAorICAgaWYgKG51bT49KC05KSkgCisgICAge3NpbmdsZWRpZ2l0OmRveworICAgICAvLyB2ZXJ5IGNvbW1vbiBzaW5nbGUgZGlnaXQgY2FzZQorICAgICB7LypzZWxlY3QqLworICAgICBpZiAobnVtPT0wKQorICAgICAgeworICAgICAgIG1hbnQ9WkVSTy5tYW50OworICAgICAgIGluZD1pc3plcm87CisgICAgICB9CisgICAgIGVsc2UgaWYgKG51bT09MSkKKyAgICAgIHsKKyAgICAgICBtYW50PU9ORS5tYW50OworICAgICAgIGluZD1pc3BvczsKKyAgICAgIH0KKyAgICAgZWxzZSBpZiAobnVtPT0oLTEpKQorICAgICAgeworICAgICAgIG1hbnQ9T05FLm1hbnQ7CisgICAgICAgaW5kPWlzbmVnOworICAgICAgfQorICAgICBlbHNleworICAgICAgeworICAgICAgIG1hbnQ9bmV3IGJ5dGVbMV07CisgICAgICAgaWYgKG51bT4wKSAKKyAgICAgICAgeworICAgICAgICAgbWFudFswXT0oYnl0ZSludW07CisgICAgICAgICBpbmQ9aXNwb3M7CisgICAgICAgIH0KKyAgICAgICBlbHNlIAorICAgICAgICB7IC8vIG51bTwtMQorICAgICAgICAgbWFudFswXT0oYnl0ZSkoKGludCktbnVtKTsKKyAgICAgICAgIGluZD1pc25lZzsKKyAgICAgICAgfQorICAgICAgfQorICAgICB9CisgICAgIH0KKyAgICAgcmV0dXJuOworICAgIH13aGlsZShmYWxzZSk7fS8qc2luZ2xlZGlnaXQqLworICAKKyAgLyogV2Ugd29yayBvbiBuZWdhdGl2ZSBudW1iZXJzIHNvIHdlIGhhbmRsZSB0aGUgbW9zdCBuZWdhdGl2ZSBudW1iZXIgKi8KKyAgaWYgKG51bT4wKSAKKyAgIHsKKyAgICBpbmQ9aXNwb3M7CisgICAgbnVtPShpbnQpLW51bTsKKyAgIH0KKyAgZWxzZSAKKyAgIGluZD1pc25lZzsvKiBuZWdhdGl2ZSAqLyAvLyBbMCBjYXNlIGFscmVhZHkgaGFuZGxlZF0KKyAgLy8gW2l0IGlzIHF1aWNrZXIsIGhlcmUsIHRvIHByZS1jYWxjdWxhdGUgdGhlIGxlbmd0aCB3aXRoCisgIC8vIG9uZSBsb29wLCB0aGVuIGFsbG9jYXRlIGV4YWN0bHkgdGhlIHJpZ2h0IGxlbmd0aCBvZiBieXRlIGFycmF5LAorICAvLyB0aGVuIHJlLWZpbGwgaXQgd2l0aCBhbm90aGVyIGxvb3BdCisgIG11bj1udW07IC8vIHdvcmtpbmcgY29weQorICB7aT05O2k6Zm9yKDs7aS0tKXsKKyAgIG11bj1tdW4vMTA7CisgICBpZiAobXVuPT0wKSAKKyAgICBicmVhayBpOworICAgfQorICB9LyppKi8KKyAgLy8gaSBpcyB0aGUgcG9zaXRpb24gb2YgdGhlIGxlZnRtb3N0IGRpZ2l0IHBsYWNlZAorICBtYW50PW5ldyBieXRlWzEwLWldOworICB7aT0oMTAtaSktMTtpOmZvcig7O2ktLSl7CisgICBtYW50W2ldPShieXRlKS0oKChieXRlKShudW0lMTApKSk7CisgICBudW09bnVtLzEwOworICAgaWYgKG51bT09MCkgCisgICAgYnJlYWsgaTsKKyAgIH0KKyAgfS8qaSovCisgIHJldHVybjsKKyAgfQorCisgLyoqCisgICogQ29uc3RydWN0cyBhIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IG9iamVjdCBkaXJlY3RseSBmcm9tIGEKKyAgKiA8Y29kZT5sb25nPC9jb2RlPi4KKyAgKiA8cD4KKyAgKiBDb25zdHJ1Y3RzIGEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hpY2ggaXMgdGhlIGV4YWN0IGRlY2ltYWwKKyAgKiByZXByZXNlbnRhdGlvbiBvZiB0aGUgNjQtYml0IHNpZ25lZCBiaW5hcnkgaW50ZWdlciBwYXJhbWV0ZXIuCisgICogVGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHdpbGwgY29udGFpbiBvbmx5IGRlY2ltYWwgZGlnaXRzLAorICAqIHByZWZpeGVkIHdpdGggYSBsZWFkaW5nIG1pbnVzIHNpZ24gKGh5cGhlbikgaWYgdGhlIHBhcmFtZXRlciBpcworICAqIG5lZ2F0aXZlLgorICAqIEEgbGVhZGluZyB6ZXJvIHdpbGwgYmUgcHJlc2VudCBvbmx5IGlmIHRoZSBwYXJhbWV0ZXIgaXMgemVyby4KKyAgKgorICAqIEBwYXJhbSBudW0gVGhlIDxjb2RlPmxvbmc8L2NvZGU+IHRvIGJlIGNvbnZlcnRlZC4KKyAgKiBAc3RhYmxlIElDVSAyLjAKKyAgKi8KKyAKKyBwdWJsaWMgQmlnRGVjaW1hbChsb25nIG51bSl7c3VwZXIoKTsKKyAgbG9uZyBtdW47CisgIGludCBpPTA7CisgIC8vIE5vdCByZWFsbHkgd29ydGggZmFzdHBhdGhpbmcgY29tbW9uZXJzIGluIHRoaXMgY29uc3RydWN0b3IgW2Fsc28sCisgIC8vIHdlIHVzZSB0aGlzIHRvIGNvbnN0cnVjdCB0aGUgc3RhdGljIGNvbnN0YW50c10uCisgIC8vIFRoaXMgaXMgbXVjaCBmYXN0ZXIgdGhhbjogdGhpcyhTdHJpbmcudmFsdWVPZihudW0pLnRvQ2hhckFycmF5KCkpCisgIC8qIFdlIHdvcmsgb24gbmVnYXRpdmUgbnVtIHNvIHdlIGhhbmRsZSB0aGUgbW9zdCBuZWdhdGl2ZSBudW1iZXIgKi8KKyAgaWYgKG51bT4wKSAKKyAgIHsKKyAgICBpbmQ9aXNwb3M7CisgICAgbnVtPShsb25nKS1udW07CisgICB9CisgIGVsc2UgCisgICBpZiAobnVtPT0wKSAKKyAgICBpbmQ9aXN6ZXJvOworICAgZWxzZSAKKyAgICBpbmQ9aXNuZWc7LyogbmVnYXRpdmUgKi8KKyAgbXVuPW51bTsKKyAge2k9MTg7aTpmb3IoOztpLS0peworICAgbXVuPW11bi8xMDsKKyAgIGlmIChtdW49PTApIAorICAgIGJyZWFrIGk7CisgICB9CisgIH0vKmkqLworICAvLyBpIGlzIHRoZSBwb3NpdGlvbiBvZiB0aGUgbGVmdG1vc3QgZGlnaXQgcGxhY2VkCisgIG1hbnQ9bmV3IGJ5dGVbMTktaV07CisgIHtpPSgxOS1pKS0xO2k6Zm9yKDs7aS0tKXsKKyAgIG1hbnRbaV09KGJ5dGUpLSgoKGJ5dGUpKG51bSUxMCkpKTsKKyAgIG51bT1udW0vMTA7CisgICBpZiAobnVtPT0wKSAKKyAgICBicmVhayBpOworICAgfQorICB9LyppKi8KKyAgcmV0dXJuOworICB9CisKKyAvKioKKyAgKiBDb25zdHJ1Y3RzIGEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gb2JqZWN0IGZyb20gYSA8Y29kZT5TdHJpbmc8L2NvZGU+LgorICAqIDxwPgorICAqIENvbnN0cnVjdHMgYSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBmcm9tIHRoZSBwYXJhbWV0ZXIsIHdoaWNoIG11c3QKKyAgKiBub3QgYmUgPGNvZGU+bnVsbDwvY29kZT4gYW5kIG11c3QgcmVwcmVzZW50IGEgdmFsaWQgPGk+bnVtYmVyPC9pPiwKKyAgKiBhcyBkZXNjcmliZWQgZm9ybWFsbHkgaW4gdGhlIGRvY3VtZW50YXRpb24gcmVmZXJyZWQgdG8KKyAgKiB7QGxpbmsgQmlnRGVjaW1hbCBhYm92ZX0uCisgICogPHA+CisgICogSW4gc3VtbWFyeSwgbnVtYmVycyBpbiA8Y29kZT5TdHJpbmc8L2NvZGU+IGZvcm0gbXVzdCBoYXZlIGF0IGxlYXN0CisgICogb25lIGRpZ2l0LCBtYXkgaGF2ZSBhIGxlYWRpbmcgc2lnbiwgbWF5IGhhdmUgYSBkZWNpbWFsIHBvaW50LCBhbmQKKyAgKiBleHBvbmVudGlhbCBub3RhdGlvbiBtYXkgYmUgdXNlZC4gIFRoZXkgZm9sbG93IGNvbnZlbnRpb25hbCBzeW50YXgsCisgICogYW5kIG1heSBub3QgY29udGFpbiBibGFua3MuCisgICogPHA+CisgICogU29tZSB2YWxpZCBzdHJpbmdzIGZyb20gd2hpY2ggYSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBtaWdodAorICAqIGJlIGNvbnN0cnVjdGVkIGFyZToKKyAgKiA8cHJlPgorICAqICAgICAgICIwIiAgICAgICAgIC0tIFplcm8KKyAgKiAgICAgICIxMiIgICAgICAgICAtLSBBIHdob2xlIG51bWJlcgorICAqICAgICAiLTc2IiAgICAgICAgIC0tIEEgc2lnbmVkIHdob2xlIG51bWJlcgorICAqICAgICAgIjEyLjcwIiAgICAgIC0tIFNvbWUgZGVjaW1hbCBwbGFjZXMKKyAgKiAgICAgIiswLjAwMyIgICAgICAtLSBQbHVzIHNpZ24gaXMgYWxsb3dlZAorICAqICAgICAgIjE3LiIgICAgICAgIC0tIFRoZSBzYW1lIGFzIDE3CisgICogICAgICAgICIuNSIgICAgICAgLS0gVGhlIHNhbWUgYXMgMC41CisgICogICAgICAiNEUrOSIgICAgICAgLS0gRXhwb25lbnRpYWwgbm90YXRpb24KKyAgKiAgICAgICAiMC43M2UtNyIgICAtLSBFeHBvbmVudGlhbCBub3RhdGlvbgorICAqIDwvcHJlPgorICAqIDxwPgorICAqIChFeHBvbmVudGlhbCBub3RhdGlvbiBtZWFucyB0aGF0IHRoZSBudW1iZXIgaW5jbHVkZXMgYW4gb3B0aW9uYWwKKyAgKiBzaWduIGFuZCBhIHBvd2VyIG9mIHRlbiBmb2xsb3dpbmcgYW4gJzwvY29kZT5FPC9jb2RlPicgdGhhdAorICAqIGluZGljYXRlcyBob3cgdGhlIGRlY2ltYWwgcG9pbnQgd2lsbCBiZSBzaGlmdGVkLiAgVGh1cyB0aGUKKyAgKiA8Y29kZT4iNEUrOSI8L2NvZGU+IGFib3ZlIGlzIGp1c3QgYSBzaG9ydCB3YXkgb2Ygd3JpdGluZworICAqIDxjb2RlPjQwMDAwMDAwMDA8L2NvZGU+LCBhbmQgdGhlIDxjb2RlPiIwLjczZS03IjwvY29kZT4gaXMgc2hvcnQKKyAgKiBmb3IgPGNvZGU+MC4wMDAwMDAwNzM8L2NvZGU+LikKKyAgKiA8cD4KKyAgKiBUaGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gY29uc3RydWN0ZWQgZnJvbSB0aGUgU3RyaW5nIGlzIGluIGEKKyAgKiBzdGFuZGFyZCBmb3JtLCB3aXRoIG5vIGJsYW5rcywgYXMgdGhvdWdoIHRoZQorICAqIHtAbGluayAjYWRkKEJpZ0RlY2ltYWwpfSBtZXRob2QgaGFkIGJlZW4gdXNlZCB0byBhZGQgemVybyB0byB0aGUKKyAgKiBudW1iZXIgd2l0aCB1bmxpbWl0ZWQgcHJlY2lzaW9uLgorICAqIElmIHRoZSBzdHJpbmcgdXNlcyBleHBvbmVudGlhbCBub3RhdGlvbiAodGhhdCBpcywgaW5jbHVkZXMgYW4KKyAgKiA8Y29kZT5lPC9jb2RlPiBvciBhbiA8Y29kZT5FPC9jb2RlPiksIHRoZW4gdGhlCisgICogPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gbnVtYmVyIHdpbGwgYmUgZXhwcmVzc2VkIGluIHNjaWVudGlmaWMKKyAgKiBub3RhdGlvbiAod2hlcmUgdGhlIHBvd2VyIG9mIHRlbiBpcyBhZGp1c3RlZCBzbyB0aGVyZSBpcyBhIHNpbmdsZQorICAqIG5vbi16ZXJvIGRpZ2l0IHRvIHRoZSBsZWZ0IG9mIHRoZSBkZWNpbWFsIHBvaW50KTsgaW4gdGhpcyBjYXNlIGlmCisgICogdGhlIG51bWJlciBpcyB6ZXJvIHRoZW4gaXQgd2lsbCBiZSBleHByZXNzZWQgYXMgdGhlIHNpbmdsZSBkaWdpdCAwLAorICAqIGFuZCBpZiBub24temVybyBpdCB3aWxsIGhhdmUgYW4gZXhwb25lbnQgdW5sZXNzIHRoYXQgZXhwb25lbnQgd291bGQKKyAgKiBiZSAwLiAgVGhlIGV4cG9uZW50IG11c3QgZml0IGluIG5pbmUgZGlnaXRzIGJvdGggYmVmb3JlIGFuZCBhZnRlciBpdAorICAqIGlzIGV4cHJlc3NlZCBpbiBzY2llbnRpZmljIG5vdGF0aW9uLgorICAqIDxwPgorICAqIEFueSBkaWdpdHMgaW4gdGhlIHBhcmFtZXRlciBtdXN0IGJlIGRlY2ltYWw7IHRoYXQgaXMsCisgICogPGNvZGU+Q2hhcmFjdGVyLmRpZ2l0KGMsIDEwKTwvY29kZT4gKHdoZXJlIDwvY29kZT5jPC9jb2RlPiBpcyB0aGUKKyAgKiBjaGFyYWN0ZXIgaW4gcXVlc3Rpb24pIHdvdWxkIG5vdCByZXR1cm4gLTEuCisgICoKKyAgKiBAcGFyYW0gc3RyaW5nIFRoZSA8Y29kZT5TdHJpbmc8L2NvZGU+IHRvIGJlIGNvbnZlcnRlZC4KKyAgKiBAdGhyb3dzIE51bWJlckZvcm1hdEV4Y2VwdGlvbiBpZiB0aGUgcGFyYW1ldGVyIGlzIG5vdCBhIHZhbGlkCisgICogbnVtYmVyLgorICAqIEBzdGFibGUgSUNVIDIuMAorICAqLworIAorIHB1YmxpYyBCaWdEZWNpbWFsKGphdmEubGFuZy5TdHJpbmcgc3RyaW5nKXsKKyAgdGhpcyhzdHJpbmcudG9DaGFyQXJyYXkoKSwwLHN0cmluZy5sZW5ndGgoKSk7CisgIHJldHVybjt9CisKKyAvKiA8c2dtbD4gTWFrZSBhIGRlZmF1bHQgQmlnRGVjaW1hbCBvYmplY3QgZm9yIGxvY2FsIHVzZS4gPC9zZ21sPiAqLworIAorIHByaXZhdGUgQmlnRGVjaW1hbCgpe3N1cGVyKCk7CisgIHJldHVybjsKKyAgfQorCisgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIC8qIE9wZXJhdG9yIG1ldGhvZHMgW21ldGhvZHMgd2hpY2ggdGFrZSBhIGNvbnRleHQgcGFyYW1ldGVyXSAgICAgICAgKi8KKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgCisgLyoqCisgICogUmV0dXJucyBhIHBsYWluIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHdob3NlIHZhbHVlIGlzIHRoZSBhYnNvbHV0ZQorICAqIHZhbHVlIG9mIHRoaXMgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4uCisgICogPHA+CisgICogVGhlIHNhbWUgYXMge0BsaW5rICNhYnMoTWF0aENvbnRleHQpfSwgd2hlcmUgdGhlIGNvbnRleHQgaXMKKyAgKiA8Y29kZT5uZXcgTWF0aENvbnRleHQoMCwgTWF0aENvbnRleHQuUExBSU4pPC9jb2RlPi4KKyAgKiA8cD4KKyAgKiBUaGUgbGVuZ3RoIG9mIHRoZSBkZWNpbWFsIHBhcnQgKHRoZSBzY2FsZSkgb2YgdGhlIHJlc3VsdCB3aWxsCisgICogYmUgPGNvZGU+dGhpcy5zY2FsZSgpPC9jb2RlPgorICAqCisgICogQHJldHVybiBBIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHdob3NlIHZhbHVlIGlzIHRoZSBhYnNvbHV0ZQorICAqICAgICAgICAgdmFsdWUgb2YgdGhpcyA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPi4KKyAgKiBAc3RhYmxlIElDVSAyLjAKKyAgKi8KKyAKKyBwdWJsaWMgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIGFicygpeworICByZXR1cm4gdGhpcy5hYnMocGxhaW5NQyk7CisgIH0KKworIC8qKgorICAqIFJldHVybnMgYSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcyB0aGUgYWJzb2x1dGUgdmFsdWUKKyAgKiBvZiB0aGlzIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+LgorICAqIDxwPgorICAqIElmIHRoZSBjdXJyZW50IG9iamVjdCBpcyB6ZXJvIG9yIHBvc2l0aXZlLCB0aGVuIHRoZSBzYW1lIHJlc3VsdCBhcworICAqIGludm9raW5nIHRoZSB7QGxpbmsgI3BsdXMoTWF0aENvbnRleHQpfSBtZXRob2Qgd2l0aCB0aGUgc2FtZQorICAqIHBhcmFtZXRlciBpcyByZXR1cm5lZC4KKyAgKiBPdGhlcndpc2UsIHRoZSBzYW1lIHJlc3VsdCBhcyBpbnZva2luZyB0aGUKKyAgKiB7QGxpbmsgI25lZ2F0ZShNYXRoQ29udGV4dCl9IG1ldGhvZCB3aXRoIHRoZSBzYW1lIHBhcmFtZXRlciBpcworICAqIHJldHVybmVkLgorICAqCisgICogQHBhcmFtICBzZXQgVGhlIDxjb2RlPk1hdGhDb250ZXh0PC9jb2RlPiBhcml0aG1ldGljIHNldHRpbmdzLgorICAqIEByZXR1cm4gICAgIEEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hvc2UgdmFsdWUgaXMgdGhlIGFic29sdXRlCisgICogICAgICAgICAgICAgdmFsdWUgb2YgdGhpcyA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPi4KKyAgKiBAc3RhYmxlIElDVSAyLjAKKyAgKi8KKyAKKyBwdWJsaWMgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIGFicyhjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0IHNldCl7CisgIGlmICh0aGlzLmluZD09aXNuZWcpIAorICAgcmV0dXJuIHRoaXMubmVnYXRlKHNldCk7CisgIHJldHVybiB0aGlzLnBsdXMoc2V0KTsKKyAgfQorCisgLyoqCisgICogUmV0dXJucyBhIHBsYWluIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHdob3NlIHZhbHVlIGlzCisgICogPGNvZGU+dGhpcytyaHM8L2NvZGU+LCB1c2luZyBmaXhlZCBwb2ludCBhcml0aG1ldGljLgorICAqIDxwPgorICAqIFRoZSBzYW1lIGFzIHtAbGluayAjYWRkKEJpZ0RlY2ltYWwsIE1hdGhDb250ZXh0KX0sCisgICogd2hlcmUgdGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IGlzIDxjb2RlPnJoczwvY29kZT4sCisgICogYW5kIHRoZSBjb250ZXh0IGlzIDxjb2RlPm5ldyBNYXRoQ29udGV4dCgwLCBNYXRoQ29udGV4dC5QTEFJTik8L2NvZGU+LgorICAqIDxwPgorICAqIFRoZSBsZW5ndGggb2YgdGhlIGRlY2ltYWwgcGFydCAodGhlIHNjYWxlKSBvZiB0aGUgcmVzdWx0IHdpbGwgYmUKKyAgKiB0aGUgbWF4aW11bSBvZiB0aGUgc2NhbGVzIG9mIHRoZSB0d28gb3BlcmFuZHMuCisgICoKKyAgKiBAcGFyYW0gIHJocyBUaGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gZm9yIHRoZSByaWdodCBoYW5kIHNpZGUgb2YKKyAgKiAgICAgICAgICAgICB0aGUgYWRkaXRpb24uCisgICogQHJldHVybiAgICAgQSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcworICAqICAgICAgICAgICAgIDxjb2RlPnRoaXMrcmhzPC9jb2RlPiwgdXNpbmcgZml4ZWQgcG9pbnQgYXJpdGhtZXRpYy4KKyAgKiBAc3RhYmxlIElDVSAyLjAKKyAgKi8KKyAKKyBwdWJsaWMgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIGFkZChjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgcmhzKXsKKyAgcmV0dXJuIHRoaXMuYWRkKHJocyxwbGFpbk1DKTsKKyAgfQorCisgLyoqCisgICogUmV0dXJucyBhIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHdob3NlIHZhbHVlIGlzIDxjb2RlPnRoaXMrcmhzPC9jb2RlPi4KKyAgKiA8cD4KKyAgKiBJbXBsZW1lbnRzIHRoZSBhZGRpdGlvbiAoPGI+PGNvZGU+KzwvY29kZT48L2I+KSBvcGVyYXRvcgorICAqIChhcyBkZWZpbmVkIGluIHRoZSBkZWNpbWFsIGRvY3VtZW50YXRpb24sIHNlZSB7QGxpbmsgQmlnRGVjaW1hbAorICAqIGNsYXNzIGhlYWRlcn0pLAorICAqIGFuZCByZXR1cm5zIHRoZSByZXN1bHQgYXMgYSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBvYmplY3QuCisgICoKKyAgKiBAcGFyYW0gIHJocyBUaGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gZm9yIHRoZSByaWdodCBoYW5kIHNpZGUgb2YKKyAgKiAgICAgICAgICAgICB0aGUgYWRkaXRpb24uCisgICogQHBhcmFtICBzZXQgVGhlIDxjb2RlPk1hdGhDb250ZXh0PC9jb2RlPiBhcml0aG1ldGljIHNldHRpbmdzLgorICAqIEByZXR1cm4gICAgIEEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hvc2UgdmFsdWUgaXMKKyAgKiAgICAgICAgICAgICA8Y29kZT50aGlzK3JoczwvY29kZT4uCisgICogQHN0YWJsZSBJQ1UgMi4wCisgICovCisgCisgcHVibGljIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCBhZGQoY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIHJocyxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0IHNldCl7CisgIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCBsaHM7CisgIGludCByZXFkaWc7CisgIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCByZXM7CisgIGJ5dGUgdXNlbFtdOworICBpbnQgdXNlbGxlbjsKKyAgYnl0ZSB1c2VyW107CisgIGludCB1c2VybGVuOworICBpbnQgbmV3bGVuPTA7CisgIGludCB0bGVuPTA7CisgIGludCBtdWx0PTA7CisgIGJ5dGUgdFtdPW51bGw7CisgIGludCBpYT0wOworICBpbnQgaWI9MDsKKyAgaW50IGVhPTA7CisgIGludCBlYj0wOworICBieXRlIGNhPTA7CisgIGJ5dGUgY2I9MDsKKyAgLyogZGV0ZXJtaW5lIHJlcXVlc3RlZCBkaWdpdHMgYW5kIGZvcm0gKi8KKyAgaWYgKHNldC5sb3N0RGlnaXRzKSAKKyAgIGNoZWNrZGlnaXRzKHJocyxzZXQuZGlnaXRzKTsKKyAgbGhzPXRoaXM7IC8vIG5hbWUgZm9yIGNsYXJpdHkgYW5kIHByb3h5CisgIAorICAvKiBRdWljayBleGl0IGZvciBhZGQgZmxvYXRpbmcgMCAqLworICAvLyBwbHVzKCkgd2lsbCBvcHRpbWl6ZSB0byByZXR1cm4gc2FtZSBvYmplY3QgaWYgcG9zc2libGUKKyAgaWYgKGxocy5pbmQ9PTApIAorICAgaWYgKHNldC5mb3JtIT1jb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlBMQUlOKSAKKyAgICByZXR1cm4gcmhzLnBsdXMoc2V0KTsKKyAgaWYgKHJocy5pbmQ9PTApIAorICAgaWYgKHNldC5mb3JtIT1jb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlBMQUlOKSAKKyAgICByZXR1cm4gbGhzLnBsdXMoc2V0KTsKKyAgCisgIC8qIFByZXBhcmUgbnVtYmVycyAocm91bmQsIHVubGVzcyB1bmxpbWl0ZWQgcHJlY2lzaW9uKSAqLworICByZXFkaWc9c2V0LmRpZ2l0czsgLy8gbG9jYWwgY29weSAoaGVhdmlseSB1c2VkKQorICBpZiAocmVxZGlnPjApIAorICAgeworICAgIGlmIChsaHMubWFudC5sZW5ndGg+cmVxZGlnKSAKKyAgICAgbGhzPWNsb25lKGxocykucm91bmQoc2V0KTsKKyAgICBpZiAocmhzLm1hbnQubGVuZ3RoPnJlcWRpZykgCisgICAgIHJocz1jbG9uZShyaHMpLnJvdW5kKHNldCk7CisgICAvLyBbd2UgY291bGQgcmV1c2UgdGhlIG5ldyBMSFMgZm9yIHJlc3VsdCBpbiB0aGlzIGNhc2VdCisgICB9CisgIAorICByZXM9bmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgpOyAvLyBidWlsZCByZXN1bHQgaGVyZQorICAKKyAgLyogTm93IHNlZSBob3cgbXVjaCB3ZSBoYXZlIHRvIHBhZCBvciB0cnVuY2F0ZSBsaHMgb3IgcmhzIGluIG9yZGVyCisgICAgIHRvIGFsaWduIHRoZSBudW1iZXJzLiAgSWYgb25lIG51bWJlciBpcyBtdWNoIGxhcmdlciB0aGFuIHRoZQorICAgICBvdGhlciwgdGhlbiB0aGUgc21hbGxlciBjYW5ub3QgYWZmZWN0IHRoZSBhbnN3ZXIgW2J1dCB3ZSBtYXkKKyAgICAgc3RpbGwgbmVlZCB0byBwYWQgd2l0aCB1cCB0byBESUdJVFMgdHJhaWxpbmcgemVyb3NdLiAqLworICAvLyBOb3RlIHNpZ24gbWF5IGJlIDAgaWYgZGlnaXRzIChyZXFkaWcpIGlzIDAKKyAgLy8gdXNlbCBhbmQgdXNlciB3aWxsIGJlIHRoZSBieXRlIGFycmF5cyBwYXNzZWQgdG8gdGhlIGFkZGVyOyB3ZSdsbAorICAvLyB1c2UgdGhlbSBvbiBhbGwgcGF0aHMgZXhjZXB0IHF1aWNrIGV4aXRzCisgIHVzZWw9bGhzLm1hbnQ7CisgIHVzZWxsZW49bGhzLm1hbnQubGVuZ3RoOworICB1c2VyPXJocy5tYW50OworICB1c2VybGVuPXJocy5tYW50Lmxlbmd0aDsKKyAge3BhZGRlcjpkb3svKnNlbGVjdCovCisgIGlmIChsaHMuZXhwPT1yaHMuZXhwKQorICAgey8qIG5vIHBhZGRpbmcgbmVlZGVkICovCisgICAgLy8gVGhpcyBpcyB0aGUgbW9zdCBjb21tb24sIGFuZCBmYXN0ZXN0LCBwYXRoCisgICAgcmVzLmV4cD1saHMuZXhwOworICAgfQorICBlbHNlIGlmIChsaHMuZXhwPnJocy5leHApCisgICB7IC8vIG5lZWQgdG8gcGFkIGxocyBhbmQvb3IgdHJ1bmNhdGUgcmhzCisgICAgbmV3bGVuPSh1c2VsbGVuK2xocy5leHApLXJocy5leHA7CisgICAgLyogSWYsIGFmdGVyIHBhZCwgbGhzIHdvdWxkIGJlIGxvbmdlciB0aGFuIHJocyBieSBkaWdpdHMrMSBvcgorICAgICAgIG1vcmUgKGFuZCBkaWdpdHM+MCkgdGhlbiByaHMgY2Fubm90IGFmZmVjdCBhbnN3ZXIsIHNvIHdlIG9ubHkKKyAgICAgICBuZWVkIHRvIHBhZCB1cCB0byBhIGxlbmd0aCBvZiBESUdJVFMrMS4gKi8KKyAgICBpZiAobmV3bGVuPj0oKHVzZXJsZW4rcmVxZGlnKSsxKSkgCisgICAgIGlmIChyZXFkaWc+MCkgCisgICAgICB7CisgICAgICAgLy8gTEhTIGlzIHN1ZmZpY2llbnQKKyAgICAgICByZXMubWFudD11c2VsOworICAgICAgIHJlcy5leHA9bGhzLmV4cDsKKyAgICAgICByZXMuaW5kPWxocy5pbmQ7CisgICAgICAgaWYgKHVzZWxsZW48cmVxZGlnKSAKKyAgICAgICAgeyAvLyBuZWVkIDAgcGFkZGluZworICAgICAgICAgcmVzLm1hbnQ9ZXh0ZW5kKGxocy5tYW50LHJlcWRpZyk7CisgICAgICAgICByZXMuZXhwPXJlcy5leHAtKChyZXFkaWctdXNlbGxlbikpOworICAgICAgICB9CisgICAgICAgcmV0dXJuIHJlcy5maW5pc2goc2V0LGZhbHNlKTsKKyAgICAgIH0KKyAgICAvLyBSSFMgbWF5IGFmZmVjdCByZXN1bHQKKyAgICByZXMuZXhwPXJocy5leHA7IC8vIGV4cGVjdGVkIGZpbmFsIGV4cG9uZW50CisgICAgaWYgKG5ld2xlbj4ocmVxZGlnKzEpKSAKKyAgICAgaWYgKHJlcWRpZz4wKSAKKyAgICAgIHsKKyAgICAgICAvLyBMSFMgd2lsbCBiZSBtYXg7IFJIUyB0cnVuY2F0ZWQKKyAgICAgICB0bGVuPShuZXdsZW4tcmVxZGlnKS0xOyAvLyB0cnVuY2F0aW9uIGxlbmd0aAorICAgICAgIHVzZXJsZW49dXNlcmxlbi10bGVuOworICAgICAgIHJlcy5leHA9cmVzLmV4cCt0bGVuOworICAgICAgIG5ld2xlbj1yZXFkaWcrMTsKKyAgICAgIH0KKyAgICBpZiAobmV3bGVuPnVzZWxsZW4pIAorICAgICB1c2VsbGVuPW5ld2xlbjsgLy8gbmVlZCB0byBwYWQgTEhTCisgICB9CisgIGVsc2V7IC8vIG5lZWQgdG8gcGFkIHJocyBhbmQvb3IgdHJ1bmNhdGUgbGhzCisgICBuZXdsZW49KHVzZXJsZW4rcmhzLmV4cCktbGhzLmV4cDsKKyAgIGlmIChuZXdsZW4+PSgodXNlbGxlbityZXFkaWcpKzEpKSAKKyAgICBpZiAocmVxZGlnPjApIAorICAgICB7CisgICAgICAvLyBSSFMgaXMgc3VmZmljaWVudAorICAgICAgcmVzLm1hbnQ9dXNlcjsKKyAgICAgIHJlcy5leHA9cmhzLmV4cDsKKyAgICAgIHJlcy5pbmQ9cmhzLmluZDsKKyAgICAgIGlmICh1c2VybGVuPHJlcWRpZykgCisgICAgICAgeyAvLyBuZWVkIDAgcGFkZGluZworICAgICAgICByZXMubWFudD1leHRlbmQocmhzLm1hbnQscmVxZGlnKTsKKyAgICAgICAgcmVzLmV4cD1yZXMuZXhwLSgocmVxZGlnLXVzZXJsZW4pKTsKKyAgICAgICB9CisgICAgICByZXR1cm4gcmVzLmZpbmlzaChzZXQsZmFsc2UpOworICAgICB9CisgICAvLyBMSFMgbWF5IGFmZmVjdCByZXN1bHQKKyAgIHJlcy5leHA9bGhzLmV4cDsgLy8gZXhwZWN0ZWQgZmluYWwgZXhwb25lbnQKKyAgIGlmIChuZXdsZW4+KHJlcWRpZysxKSkgCisgICAgaWYgKHJlcWRpZz4wKSAKKyAgICAgeworICAgICAgLy8gUkhTIHdpbGwgYmUgbWF4OyBMSFMgdHJ1bmNhdGVkCisgICAgICB0bGVuPShuZXdsZW4tcmVxZGlnKS0xOyAvLyB0cnVuY2F0aW9uIGxlbmd0aAorICAgICAgdXNlbGxlbj11c2VsbGVuLXRsZW47CisgICAgICByZXMuZXhwPXJlcy5leHArdGxlbjsKKyAgICAgIG5ld2xlbj1yZXFkaWcrMTsKKyAgICAgfQorICAgaWYgKG5ld2xlbj51c2VybGVuKSAKKyAgICB1c2VybGVuPW5ld2xlbjsgLy8gbmVlZCB0byBwYWQgUkhTCisgIH0KKyAgfXdoaWxlKGZhbHNlKTt9LypwYWRkZXIqLworICAKKyAgLyogT0ssIHdlIGhhdmUgYWxpZ25lZCBtYW50aXNzYXMuICBOb3cgYWRkIG9yIHN1YnRyYWN0LiAqLworICAvLyAxOTk4LjA2LjI3IFNpZ24gbWF5IG5vdyBiZSAwIFtlLmcuLCAwLjAwMF0gLi4gdHJlYXQgYXMgcG9zaXRpdmUKKyAgLy8gMTk5OS4wNS4yNyBBbGxvdyBmb3IgMDAgb24gbGhzIFtpcyBub3QgbGFyZ2VyIHRoYW4gMiBvbiByaHNdCisgIC8vIDE5OTkuMDcuMTAgQWxsb3cgZm9yIDAwIG9uIHJocyBbaXMgbm90IGxhcmdlciB0aGFuIDIgb24gcmhzXQorICBpZiAobGhzLmluZD09aXN6ZXJvKSAKKyAgIHJlcy5pbmQ9aXNwb3M7CisgIGVsc2UgCisgICByZXMuaW5kPWxocy5pbmQ7IC8vIGxpa2VseSBzaWduLCBhbGwgcGF0aHMKKyAgaWYgKCgobGhzLmluZD09aXNuZWcpPzE6MCk9PSgocmhzLmluZD09aXNuZWcpPzE6MCkpICAvLyBzYW1lIHNpZ24sIDAgbm9uLW5lZ2F0aXZlCisgICBtdWx0PTE7CisgIGVsc2UgCisgICB7c2lnbmRpZmY6ZG97IC8vIGRpZmZlcmVudCBzaWducywgc28gc3VidHJhY3Rpb24gaXMgbmVlZGVkCisgICAgbXVsdD0tMTsgLy8gd2lsbCBjYXVzZSBzdWJ0cmFjdAorICAgIC8qIEJlZm9yZSB3ZSBjYW4gc3VidHJhY3Qgd2UgbXVzdCBkZXRlcm1pbmUgd2hpY2ggaXMgdGhlIGxhcmdlciwKKyAgICAgICBhcyBvdXIgYWRkL3N1YnRyYWN0IHJvdXRpbmUgb25seSBoYW5kbGVzIG5vbi1uZWdhdGl2ZSByZXN1bHRzCisgICAgICAgc28gd2UgbWF5IG5lZWQgdG8gc3dhcCB0aGUgb3BlcmFuZHMuICovCisgICAge3N3YXB0ZXN0OmRvey8qc2VsZWN0Ki8KKyAgICBpZiAocmhzLmluZD09aXN6ZXJvKQorICAgICA7IC8vIG9yaWdpbmFsIEEgYmlnZ2VyCisgICAgZWxzZSBpZiAoKHVzZWxsZW48dXNlcmxlbil8KGxocy5pbmQ9PWlzemVybykpCisgICAgIHsgLy8gb3JpZ2luYWwgQiBiaWdnZXIKKyAgICAgIHQ9dXNlbDsKKyAgICAgIHVzZWw9dXNlcjsKKyAgICAgIHVzZXI9dDsgLy8gc3dhcAorICAgICAgdGxlbj11c2VsbGVuOworICAgICAgdXNlbGxlbj11c2VybGVuOworICAgICAgdXNlcmxlbj10bGVuOyAvLyAuLgorICAgICAgcmVzLmluZD0oYnl0ZSktcmVzLmluZDsgLy8gYW5kIHNldCBzaWduCisgICAgIH0KKyAgICBlbHNlIGlmICh1c2VsbGVuPnVzZXJsZW4pCisgICAgIDsgLy8gb3JpZ2luYWwgQSBiaWdnZXIKKyAgICBlbHNleworICAgICB7LyogbG9naWNhbCBsZW5ndGhzIHRoZSBzYW1lICovIC8vIG5lZWQgY29tcGFyZQorICAgICAgLyogbWF5IHN0aWxsIG5lZWQgdG8gc3dhcDogY29tcGFyZSB0aGUgc3RyaW5ncyAqLworICAgICAgaWE9MDsKKyAgICAgIGliPTA7CisgICAgICBlYT11c2VsLmxlbmd0aC0xOworICAgICAgZWI9dXNlci5sZW5ndGgtMTsKKyAgICAgIHtjb21wYXJlOmZvcig7Oyl7CisgICAgICAgaWYgKGlhPD1lYSkgCisgICAgICAgIGNhPXVzZWxbaWFdOworICAgICAgIGVsc2UgCisgICAgICAgIHsKKyAgICAgICAgIGlmIChpYj5lYikgCisgICAgICAgICAgey8qIGlkZW50aWNhbCAqLworICAgICAgICAgICBpZiAoc2V0LmZvcm0hPWNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUExBSU4pIAorICAgICAgICAgICAgcmV0dXJuIFpFUk87CisgICAgICAgICAgIC8vIFtpZiBQTEFJTiB3ZSBtdXN0IGRvIHRoZSBzdWJ0cmFjdCwgaW4gY2FzZSBvZiAwLjAwMCByZXN1bHRzXQorICAgICAgICAgICBicmVhayBjb21wYXJlOworICAgICAgICAgIH0KKyAgICAgICAgIGNhPShieXRlKTA7CisgICAgICAgIH0KKyAgICAgICBpZiAoaWI8PWViKSAKKyAgICAgICAgY2I9dXNlcltpYl07CisgICAgICAgZWxzZSAKKyAgICAgICAgY2I9KGJ5dGUpMDsKKyAgICAgICBpZiAoY2EhPWNiKSAKKyAgICAgICAgeworICAgICAgICAgaWYgKGNhPGNiKSAKKyAgICAgICAgICB7Lyogc3dhcCBuZWVkZWQgKi8KKyAgICAgICAgICAgdD11c2VsOworICAgICAgICAgICB1c2VsPXVzZXI7CisgICAgICAgICAgIHVzZXI9dDsgLy8gc3dhcAorICAgICAgICAgICB0bGVuPXVzZWxsZW47CisgICAgICAgICAgIHVzZWxsZW49dXNlcmxlbjsKKyAgICAgICAgICAgdXNlcmxlbj10bGVuOyAvLyAuLgorICAgICAgICAgICByZXMuaW5kPShieXRlKS1yZXMuaW5kOworICAgICAgICAgIH0KKyAgICAgICAgIGJyZWFrIGNvbXBhcmU7CisgICAgICAgIH0KKyAgICAgICAvKiBtYW50aXNzYXMgdGhlIHNhbWUsIHNvIGZhciAqLworICAgICAgIGlhKys7CisgICAgICAgaWIrKzsKKyAgICAgICB9CisgICAgICB9Lypjb21wYXJlKi8KKyAgICAgfSAvLyBsZW5ndGhzIHRoZSBzYW1lCisgICAgfQorICAgIH13aGlsZShmYWxzZSk7fS8qc3dhcHRlc3QqLworICAgfXdoaWxlKGZhbHNlKTt9LypzaWduZGlmZiovCisgIAorICAvKiBoZXJlLCBBIGlzID4gQiBpZiBzdWJ0cmFjdGluZyAqLworICAvLyBhZGQgW0ErQioxXSBvciBzdWJ0cmFjdCBbQSsoQiotMSldCisgIHJlcy5tYW50PWJ5dGVhZGRzdWIodXNlbCx1c2VsbGVuLHVzZXIsdXNlcmxlbixtdWx0LGZhbHNlKTsKKyAgLy8gW3JldXNlIHBvc3NpYmxlIG9ubHkgYWZ0ZXIgY2hvcDsgYWNjb3VudGluZyBtYWtlcyBub3Qgd29ydGh3aGlsZV0KKyAgCisgIC8vIEZpbmlzaCgpIHJvdW5kcyBiZWZvcmUgc3RyaXBwaW5nIGxlYWRpbmcgMCdzLCB0aGVuIHNldHMgZm9ybSwgZXRjLgorICByZXR1cm4gcmVzLmZpbmlzaChzZXQsZmFsc2UpOworICB9CisKKyAvKioKKyAgKiBDb21wYXJlcyB0aGlzIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHRvIGFub3RoZXIsIHVzaW5nIHVubGltaXRlZAorICAqIHByZWNpc2lvbi4KKyAgKiA8cD4KKyAgKiBUaGUgc2FtZSBhcyB7QGxpbmsgI2NvbXBhcmVUbyhCaWdEZWNpbWFsLCBNYXRoQ29udGV4dCl9LAorICAqIHdoZXJlIHRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBpcyA8Y29kZT5yaHM8L2NvZGU+LAorICAqIGFuZCB0aGUgY29udGV4dCBpcyA8Y29kZT5uZXcgTWF0aENvbnRleHQoMCwgTWF0aENvbnRleHQuUExBSU4pPC9jb2RlPi4KKyAgKgorICAqIEBwYXJhbSAgcmhzIFRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBmb3IgdGhlIHJpZ2h0IGhhbmQgc2lkZSBvZgorICAqICAgICAgICAgICAgIHRoZSBjb21wYXJpc29uLgorICAqIEByZXR1cm4gICAgIEFuIDxjb2RlPmludDwvY29kZT4gd2hvc2UgdmFsdWUgaXMgLTEsIDAsIG9yIDEgYXMKKyAgKiAgICAgICAgICAgICA8Y29kZT50aGlzPC9jb2RlPiBpcyBudW1lcmljYWxseSBsZXNzIHRoYW4sIGVxdWFsIHRvLAorICAqICAgICAgICAgICAgIG9yIGdyZWF0ZXIgdGhhbiA8Y29kZT5yaHM8L2NvZGU+LgorICAqIEBzZWUgICAgI2NvbXBhcmVUbyhPYmplY3QpCisgICogQHN0YWJsZSBJQ1UgMi4wCisgICovCisgCisgcHVibGljIGludCBjb21wYXJlVG8oY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIHJocyl7CisgIHJldHVybiB0aGlzLmNvbXBhcmVUbyhyaHMscGxhaW5NQyk7CisgIH0KKworIC8qKgorICAqIENvbXBhcmVzIHRoaXMgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gdG8gYW5vdGhlci4KKyAgKiA8cD4KKyAgKiBJbXBsZW1lbnRzIG51bWVyaWMgY29tcGFyaXNvbiwKKyAgKiAoYXMgZGVmaW5lZCBpbiB0aGUgZGVjaW1hbCBkb2N1bWVudGF0aW9uLCBzZWUge0BsaW5rIEJpZ0RlY2ltYWwKKyAgKiBjbGFzcyBoZWFkZXJ9KSwKKyAgKiBhbmQgcmV0dXJucyBhIHJlc3VsdCBvZiB0eXBlIDxjb2RlPmludDwvY29kZT4uCisgICogPHA+CisgICogVGhlIHJlc3VsdCB3aWxsIGJlOgorICAqIDx0YWJsZSBjZWxscGFkZGluZz0yPjx0cj4KKyAgKiA8dGQgYWxpZ249cmlnaHQ+PGI+LTE8L2I+PC90ZD4KKyAgKiA8dGQ+aWYgdGhlIGN1cnJlbnQgb2JqZWN0IGlzIGxlc3MgdGhhbiB0aGUgZmlyc3QgcGFyYW1ldGVyPC90ZD4KKyAgKiA8L3RyPjx0cj4KKyAgKiA8dGQgYWxpZ249cmlnaHQ+PGI+MDwvYj48L3RkPgorICAqIDx0ZD5pZiB0aGUgY3VycmVudCBvYmplY3QgaXMgZXF1YWwgdG8gdGhlIGZpcnN0IHBhcmFtZXRlcjwvdGQ+CisgICogPC90cj48dHI+CisgICogPHRkIGFsaWduPXJpZ2h0PjxiPjE8L2I+PC90ZD4KKyAgKiA8dGQ+aWYgdGhlIGN1cnJlbnQgb2JqZWN0IGlzIGdyZWF0ZXIgdGhhbiB0aGUgZmlyc3QgcGFyYW1ldGVyLjwvdGQ+CisgICogPC90cj48L3RhYmxlPgorICAqIDxwPgorICAqIEEge0BsaW5rICNjb21wYXJlVG8oT2JqZWN0KX0gbWV0aG9kIGlzIGFsc28gcHJvdmlkZWQuCisgICoKKyAgKiBAcGFyYW0gIHJocyBUaGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gZm9yIHRoZSByaWdodCBoYW5kIHNpZGUgb2YKKyAgKiAgICAgICAgICAgICB0aGUgY29tcGFyaXNvbi4KKyAgKiBAcGFyYW0gIHNldCBUaGUgPGNvZGU+TWF0aENvbnRleHQ8L2NvZGU+IGFyaXRobWV0aWMgc2V0dGluZ3MuCisgICogQHJldHVybiAgICAgQW4gPGNvZGU+aW50PC9jb2RlPiB3aG9zZSB2YWx1ZSBpcyAtMSwgMCwgb3IgMSBhcworICAqICAgICAgICAgICAgIDxjb2RlPnRoaXM8L2NvZGU+IGlzIG51bWVyaWNhbGx5IGxlc3MgdGhhbiwgZXF1YWwgdG8sCisgICogICAgICAgICAgICAgb3IgZ3JlYXRlciB0aGFuIDxjb2RlPnJoczwvY29kZT4uCisgICogQHNlZSAgICAjY29tcGFyZVRvKE9iamVjdCkKKyAgKiBAc3RhYmxlIElDVSAyLjAKKyAgKi8KKyAKKyBwdWJsaWMgaW50IGNvbXBhcmVUbyhjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgcmhzLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQgc2V0KXsKKyAgaW50IHRoaXNsZW5ndGg9MDsKKyAgaW50IGk9MDsKKyAgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIG5ld3JoczsKKyAgLy8gcmhzPW51bGwgd2lsbCByYWlzZSBOdWxsUG9pbnRlckV4Y2VwdGlvbiwgYXMgcGVyIENvbXBhcmFibGUgaW50ZXJmYWNlCisgIGlmIChzZXQubG9zdERpZ2l0cykgCisgICBjaGVja2RpZ2l0cyhyaHMsc2V0LmRpZ2l0cyk7CisgIC8vIFthZGQgd2lsbCByZWNoZWNrIGluIHNsb3dwYXRoIGNhc2VzIC4uIGJ1dCB3b3VsZCByZXBvcnQgLXJoc10KKyAgaWYgKCh0aGlzLmluZD09cmhzLmluZCkmKHRoaXMuZXhwPT1yaHMuZXhwKSkgCisgICB7CisgICAgLyogc2lnbiAmIGV4cG9uZW50IHRoZSBzYW1lIFt2ZXJ5IGNvbW1vbl0gKi8KKyAgICB0aGlzbGVuZ3RoPXRoaXMubWFudC5sZW5ndGg7CisgICAgaWYgKHRoaXNsZW5ndGg8cmhzLm1hbnQubGVuZ3RoKSAKKyAgICAgcmV0dXJuIChieXRlKS10aGlzLmluZDsKKyAgICBpZiAodGhpc2xlbmd0aD5yaHMubWFudC5sZW5ndGgpIAorICAgICByZXR1cm4gdGhpcy5pbmQ7CisgICAgLyogbGVuZ3RocyBhcmUgdGhlIHNhbWU7IHdlIGNhbiBkbyBhIHN0cmFpZ2h0IG1hbnRpc3NhIGNvbXBhcmUKKyAgICAgICB1bmxlc3MgbWF5YmUgcm91bmRpbmcgW3JvdW5kaW5nIGlzIHZlcnkgdW51c3VhbF0gKi8KKyAgICBpZiAoKHRoaXNsZW5ndGg8PXNldC5kaWdpdHMpfChzZXQuZGlnaXRzPT0wKSkgCisgICAgIHsKKyAgICAgIHtpbnQgJDY9dGhpc2xlbmd0aDtpPTA7aTpmb3IoOyQ2PjA7JDYtLSxpKyspeworICAgICAgIGlmICh0aGlzLm1hbnRbaV08cmhzLm1hbnRbaV0pIAorICAgICAgICByZXR1cm4gKGJ5dGUpLXRoaXMuaW5kOworICAgICAgIGlmICh0aGlzLm1hbnRbaV0+cmhzLm1hbnRbaV0pIAorICAgICAgICByZXR1cm4gdGhpcy5pbmQ7CisgICAgICAgfQorICAgICAgfS8qaSovCisgICAgICByZXR1cm4gMDsgLy8gaWRlbnRpY2FsCisgICAgIH0KKyAgIC8qIGRyb3AgdGhyb3VnaCBmb3IgZnVsbCBjb21wYXJpc29uICovCisgICB9CisgIGVsc2UgCisgICB7CisgICAgLyogTW9yZSBmYXN0cGF0aHMgcG9zc2libGUgKi8KKyAgICBpZiAodGhpcy5pbmQ8cmhzLmluZCkgCisgICAgIHJldHVybiAtMTsKKyAgICBpZiAodGhpcy5pbmQ+cmhzLmluZCkgCisgICAgIHJldHVybiAxOworICAgfQorICAvKiBjYXJyeSBvdXQgYSBzdWJ0cmFjdCB0byBtYWtlIHRoZSBjb21wYXJpc29uICovCisgIG5ld3Jocz1jbG9uZShyaHMpOyAvLyBzYWZlIGNvcHkKKyAgbmV3cmhzLmluZD0oYnl0ZSktbmV3cmhzLmluZDsgLy8gcHJlcGFyZSB0byBzdWJ0cmFjdAorICByZXR1cm4gdGhpcy5hZGQobmV3cmhzLHNldCkuaW5kOyAvLyBhZGQsIGFuZCByZXR1cm4gc2lnbiBvZiByZXN1bHQKKyAgfQorCisgLyoqCisgICogUmV0dXJucyBhIHBsYWluIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHdob3NlIHZhbHVlIGlzCisgICogPGNvZGU+dGhpcy9yaHM8L2NvZGU+LCB1c2luZyBmaXhlZCBwb2ludCBhcml0aG1ldGljLgorICAqIDxwPgorICAqIFRoZSBzYW1lIGFzIHtAbGluayAjZGl2aWRlKEJpZ0RlY2ltYWwsIGludCl9LAorICAqIHdoZXJlIHRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBpcyA8Y29kZT5yaHM8L2NvZGU+LAorICAqIGFuZCB0aGUgcm91bmRpbmcgbW9kZSBpcyB7QGxpbmsgTWF0aENvbnRleHQjUk9VTkRfSEFMRl9VUH0uCisgICoKKyAgKiBUaGUgbGVuZ3RoIG9mIHRoZSBkZWNpbWFsIHBhcnQgKHRoZSBzY2FsZSkgb2YgdGhlIHJlc3VsdCB3aWxsIGJlCisgICogdGhlIHNhbWUgYXMgdGhlIHNjYWxlIG9mIHRoZSBjdXJyZW50IG9iamVjdCwgaWYgdGhlIGxhdHRlciB3ZXJlCisgICogZm9ybWF0dGVkIHdpdGhvdXQgZXhwb25lbnRpYWwgbm90YXRpb24uCisgICoKKyAgKiBAcGFyYW0gIHJocyBUaGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gZm9yIHRoZSByaWdodCBoYW5kIHNpZGUgb2YKKyAgKiAgICAgICAgICAgICB0aGUgZGl2aXNpb24uCisgICogQHJldHVybiAgICAgQSBwbGFpbiA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcworICAqICAgICAgICAgICAgIDxjb2RlPnRoaXMvcmhzPC9jb2RlPiwgdXNpbmcgZml4ZWQgcG9pbnQgYXJpdGhtZXRpYy4KKyAgKiBAdGhyb3dzIEFyaXRobWV0aWNFeGNlcHRpb24gaWYgPGNvZGU+cmhzPC9jb2RlPiBpcyB6ZXJvLgorICAqIEBzdGFibGUgSUNVIDIuMAorICAqLworIAorIHB1YmxpYyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgZGl2aWRlKGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCByaHMpeworICByZXR1cm4gdGhpcy5kb2RpdmlkZSgnRCcscmhzLHBsYWluTUMsLTEpOworICB9CisKKyAvKioKKyAgKiBSZXR1cm5zIGEgcGxhaW4gPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hvc2UgdmFsdWUgaXMKKyAgKiA8Y29kZT50aGlzL3JoczwvY29kZT4sIHVzaW5nIGZpeGVkIHBvaW50IGFyaXRobWV0aWMgYW5kIGEKKyAgKiByb3VuZGluZyBtb2RlLgorICAqIDxwPgorICAqIFRoZSBzYW1lIGFzIHtAbGluayAjZGl2aWRlKEJpZ0RlY2ltYWwsIGludCwgaW50KX0sCisgICogd2hlcmUgdGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IGlzIDxjb2RlPnJoczwvY29kZT4sCisgICogYW5kIHRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIDxjb2RlPnRoaXMuc2NhbGUoKTwvY29kZT4sIGFuZAorICAqIHRoZSB0aGlyZCBpcyA8Y29kZT5yb3VuZDwvY29kZT4uCisgICogPHA+CisgICogVGhlIGxlbmd0aCBvZiB0aGUgZGVjaW1hbCBwYXJ0ICh0aGUgc2NhbGUpIG9mIHRoZSByZXN1bHQgd2lsbAorICAqIHRoZXJlZm9yZSBiZSB0aGUgc2FtZSBhcyB0aGUgc2NhbGUgb2YgdGhlIGN1cnJlbnQgb2JqZWN0LCBpZiB0aGUKKyAgKiBsYXR0ZXIgd2VyZSBmb3JtYXR0ZWQgd2l0aG91dCBleHBvbmVudGlhbCBub3RhdGlvbi4KKyAgKiA8cD4KKyAgKiBAcGFyYW0gIHJocyAgIFRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBmb3IgdGhlIHJpZ2h0IGhhbmQgc2lkZSBvZgorICAqICAgICAgICAgICAgICAgdGhlIGRpdmlzaW9uLgorICAqIEBwYXJhbSAgcm91bmQgVGhlIDxjb2RlPmludDwvY29kZT4gcm91bmRpbmcgbW9kZSB0byBiZSB1c2VkIGZvcgorICAqICAgICAgICAgICAgICAgdGhlIGRpdmlzaW9uIChzZWUgdGhlIHtAbGluayBNYXRoQ29udGV4dH0gY2xhc3MpLgorICAqIEByZXR1cm4gICAgICAgQSBwbGFpbiA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcworICAqICAgICAgICAgICAgICAgPGNvZGU+dGhpcy9yaHM8L2NvZGU+LCB1c2luZyBmaXhlZCBwb2ludCBhcml0aG1ldGljCisgICogICAgICAgICAgICAgICBhbmQgdGhlIHNwZWNpZmllZCByb3VuZGluZyBtb2RlLgorICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIDxjb2RlPnJvdW5kPC9jb2RlPiBpcyBub3QgYQorICAqICAgICAgICAgICAgICAgdmFsaWQgcm91bmRpbmcgbW9kZS4KKyAgKiBAdGhyb3dzIEFyaXRobWV0aWNFeGNlcHRpb24gaWYgPGNvZGU+cmhzPC9jb2RlPiBpcyB6ZXJvLgorICAqIEB0aHJvd3MgQXJpdGhtZXRpY0V4Y2VwdGlvbiBpZiA8Y29kZT5yb3VuZDwvY29kZT4gaXMge0BsaW5rCisgICogICAgICAgICAgICAgICBNYXRoQ29udGV4dCNST1VORF9VTk5FQ0VTU0FSWX0gYW5kCisgICogICAgICAgICAgICAgICA8Y29kZT50aGlzLnNjYWxlKCk8L2NvZGU+IGlzIGluc3VmZmljaWVudCB0bworICAqICAgICAgICAgICAgICAgcmVwcmVzZW50IHRoZSByZXN1bHQgZXhhY3RseS4KKyAgKiBAc3RhYmxlIElDVSAyLjAKKyAgKi8KKyAKKyBwdWJsaWMgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIGRpdmlkZShjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgcmhzLGludCByb3VuZCl7CisgIGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQgc2V0OworICBzZXQ9bmV3IGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQoMCxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlBMQUlOLGZhbHNlLHJvdW5kKTsgLy8gW2NoZWNrcyByb3VuZCwgdG9vXQorICByZXR1cm4gdGhpcy5kb2RpdmlkZSgnRCcscmhzLHNldCwtMSk7IC8vIHRha2Ugc2NhbGUgZnJvbSBMSFMKKyAgfQorCisgLyoqCisgICogUmV0dXJucyBhIHBsYWluIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHdob3NlIHZhbHVlIGlzCisgICogPGNvZGU+dGhpcy9yaHM8L2NvZGU+LCB1c2luZyBmaXhlZCBwb2ludCBhcml0aG1ldGljIGFuZCBhCisgICogZ2l2ZW4gc2NhbGUgYW5kIHJvdW5kaW5nIG1vZGUuCisgICogPHA+CisgICogVGhlIHNhbWUgYXMge0BsaW5rICNkaXZpZGUoQmlnRGVjaW1hbCwgTWF0aENvbnRleHQpfSwKKyAgKiB3aGVyZSB0aGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gaXMgPGNvZGU+cmhzPC9jb2RlPiwKKyAgKiA8Y29kZT5uZXcgTWF0aENvbnRleHQoMCwgTWF0aENvbnRleHQuUExBSU4sIGZhbHNlLCByb3VuZCk8L2NvZGU+LAorICAqIGV4Y2VwdCB0aGF0IHRoZSBsZW5ndGggb2YgdGhlIGRlY2ltYWwgcGFydCAodGhlIHNjYWxlKSB0byBiZSB1c2VkCisgICogZm9yIHRoZSByZXN1bHQgaXMgZXhwbGljaXQgcmF0aGVyIHRoYW4gYmVpbmcgdGFrZW4gZnJvbQorICAqIDxjb2RlPnRoaXM8L2NvZGU+LgorICAqIDxwPgorICAqIFRoZSBsZW5ndGggb2YgdGhlIGRlY2ltYWwgcGFydCAodGhlIHNjYWxlKSBvZiB0aGUgcmVzdWx0IHdpbGwgYmUKKyAgKiB0aGUgc2FtZSBhcyB0aGUgc2NhbGUgb2YgdGhlIGN1cnJlbnQgb2JqZWN0LCBpZiB0aGUgbGF0dGVyIHdlcmUKKyAgKiBmb3JtYXR0ZWQgd2l0aG91dCBleHBvbmVudGlhbCBub3RhdGlvbi4KKyAgKiA8cD4KKyAgKiBAcGFyYW0gIHJocyAgIFRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBmb3IgdGhlIHJpZ2h0IGhhbmQgc2lkZSBvZgorICAqICAgICAgICAgICAgICAgdGhlIGRpdmlzaW9uLgorICAqIEBwYXJhbSAgc2NhbGUgVGhlIDxjb2RlPmludDwvY29kZT4gc2NhbGUgdG8gYmUgdXNlZCBmb3IgdGhlIHJlc3VsdC4KKyAgKiBAcGFyYW0gIHJvdW5kIFRoZSA8Y29kZT5pbnQ8L2NvZGU+IHJvdW5kaW5nIG1vZGUgdG8gYmUgdXNlZCBmb3IKKyAgKiAgICAgICAgICAgICAgIHRoZSBkaXZpc2lvbiAoc2VlIHRoZSB7QGxpbmsgTWF0aENvbnRleHR9IGNsYXNzKS4KKyAgKiBAcmV0dXJuICAgICAgIEEgcGxhaW4gPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hvc2UgdmFsdWUgaXMKKyAgKiAgICAgICAgICAgICAgIDxjb2RlPnRoaXMvcmhzPC9jb2RlPiwgdXNpbmcgZml4ZWQgcG9pbnQgYXJpdGhtZXRpYworICAqICAgICAgICAgICAgICAgYW5kIHRoZSBzcGVjaWZpZWQgcm91bmRpbmcgbW9kZS4KKyAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiA8Y29kZT5yb3VuZDwvY29kZT4gaXMgbm90IGEKKyAgKiAgICAgICAgICAgICAgIHZhbGlkIHJvdW5kaW5nIG1vZGUuCisgICogQHRocm93cyBBcml0aG1ldGljRXhjZXB0aW9uIGlmIDxjb2RlPnJoczwvY29kZT4gaXMgemVyby4KKyAgKiBAdGhyb3dzIEFyaXRobWV0aWNFeGNlcHRpb24gaWYgPGNvZGU+c2NhbGU8L2NvZGU+IGlzIG5lZ2F0aXZlLgorICAqIEB0aHJvd3MgQXJpdGhtZXRpY0V4Y2VwdGlvbiBpZiA8Y29kZT5yb3VuZDwvY29kZT4gaXMge0BsaW5rCisgICogICAgICAgICAgICAgICBNYXRoQ29udGV4dCNST1VORF9VTk5FQ0VTU0FSWX0gYW5kIDxjb2RlPnNjYWxlPC9jb2RlPgorICAqICAgICAgICAgICAgICAgaXMgaW5zdWZmaWNpZW50IHRvIHJlcHJlc2VudCB0aGUgcmVzdWx0IGV4YWN0bHkuCisgICogQHN0YWJsZSBJQ1UgMi4wCisgICovCisgCisgcHVibGljIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCBkaXZpZGUoY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIHJocyxpbnQgc2NhbGUsaW50IHJvdW5kKXsKKyAgY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dCBzZXQ7CisgIGlmIChzY2FsZTwwKSAKKyAgIHRocm93IG5ldyBqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbigiTmVnYXRpdmUgc2NhbGU6IisiICIrc2NhbGUpOworICBzZXQ9bmV3IGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQoMCxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlBMQUlOLGZhbHNlLHJvdW5kKTsgLy8gW2NoZWNrcyByb3VuZF0KKyAgcmV0dXJuIHRoaXMuZG9kaXZpZGUoJ0QnLHJocyxzZXQsc2NhbGUpOworICB9CisKKyAvKioKKyAgKiBSZXR1cm5zIGEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hvc2UgdmFsdWUgaXMgPGNvZGU+dGhpcy9yaHM8L2NvZGU+LgorICAqIDxwPgorICAqIEltcGxlbWVudHMgdGhlIGRpdmlzaW9uICg8Yj48Y29kZT4vPC9jb2RlPjwvYj4pIG9wZXJhdG9yCisgICogKGFzIGRlZmluZWQgaW4gdGhlIGRlY2ltYWwgZG9jdW1lbnRhdGlvbiwgc2VlIHtAbGluayBCaWdEZWNpbWFsCisgICogY2xhc3MgaGVhZGVyfSksCisgICogYW5kIHJldHVybnMgdGhlIHJlc3VsdCBhcyBhIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IG9iamVjdC4KKyAgKgorICAqIEBwYXJhbSAgcmhzIFRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBmb3IgdGhlIHJpZ2h0IGhhbmQgc2lkZSBvZgorICAqICAgICAgICAgICAgIHRoZSBkaXZpc2lvbi4KKyAgKiBAcGFyYW0gIHNldCBUaGUgPGNvZGU+TWF0aENvbnRleHQ8L2NvZGU+IGFyaXRobWV0aWMgc2V0dGluZ3MuCisgICogQHJldHVybiAgICAgQSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcworICAqICAgICAgICAgICAgIDxjb2RlPnRoaXMvcmhzPC9jb2RlPi4KKyAgKiBAdGhyb3dzIEFyaXRobWV0aWNFeGNlcHRpb24gaWYgPGNvZGU+cmhzPC9jb2RlPiBpcyB6ZXJvLgorICAqIEBzdGFibGUgSUNVIDIuMAorICAqLworIAorIHB1YmxpYyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgZGl2aWRlKGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCByaHMsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dCBzZXQpeworICByZXR1cm4gdGhpcy5kb2RpdmlkZSgnRCcscmhzLHNldCwtMSk7CisgIH0KKworIC8qKgorICAqIFJldHVybnMgYSBwbGFpbiA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcyB0aGUgaW50ZWdlcgorICAqIHBhcnQgb2YgPGNvZGU+dGhpcy9yaHM8L2NvZGU+LgorICAqIDxwPgorICAqIFRoZSBzYW1lIGFzIHtAbGluayAjZGl2aWRlSW50ZWdlcihCaWdEZWNpbWFsLCBNYXRoQ29udGV4dCl9LAorICAqIHdoZXJlIHRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBpcyA8Y29kZT5yaHM8L2NvZGU+LAorICAqIGFuZCB0aGUgY29udGV4dCBpcyA8Y29kZT5uZXcgTWF0aENvbnRleHQoMCwgTWF0aENvbnRleHQuUExBSU4pPC9jb2RlPi4KKyAgKgorICAqIEBwYXJhbSAgcmhzIFRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBmb3IgdGhlIHJpZ2h0IGhhbmQgc2lkZSBvZgorICAqICAgICAgICAgICAgIHRoZSBpbnRlZ2VyIGRpdmlzaW9uLgorICAqIEByZXR1cm4gICAgIEEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hvc2UgdmFsdWUgaXMgdGhlIGludGVnZXIKKyAgKiAgICAgICAgICAgICBwYXJ0IG9mIDxjb2RlPnRoaXMvcmhzPC9jb2RlPi4KKyAgKiBAdGhyb3dzIEFyaXRobWV0aWNFeGNlcHRpb24gaWYgPGNvZGU+cmhzPC9jb2RlPiBpcyB6ZXJvLgorICAqIEBzdGFibGUgSUNVIDIuMAorICAqLworIAorIHB1YmxpYyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgZGl2aWRlSW50ZWdlcihjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgcmhzKXsKKyAgLy8gc2NhbGUgMCB0byBkcm9wIC4wMDAgd2hlbiBwbGFpbgorICByZXR1cm4gdGhpcy5kb2RpdmlkZSgnSScscmhzLHBsYWluTUMsMCk7CisgIH0KKworIC8qKgorICAqIFJldHVybnMgYSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcyB0aGUgaW50ZWdlcgorICAqIHBhcnQgb2YgPGNvZGU+dGhpcy9yaHM8L2NvZGU+LgorICAqIDxwPgorICAqIEltcGxlbWVudHMgdGhlIGludGVnZXIgZGl2aXNpb24gb3BlcmF0b3IKKyAgKiAoYXMgZGVmaW5lZCBpbiB0aGUgZGVjaW1hbCBkb2N1bWVudGF0aW9uLCBzZWUge0BsaW5rIEJpZ0RlY2ltYWwKKyAgKiBjbGFzcyBoZWFkZXJ9KSwKKyAgKiBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IGFzIGEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gb2JqZWN0LgorICAqCisgICogQHBhcmFtICByaHMgVGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IGZvciB0aGUgcmlnaHQgaGFuZCBzaWRlIG9mCisgICogICAgICAgICAgICAgdGhlIGludGVnZXIgZGl2aXNpb24uCisgICogQHBhcmFtICBzZXQgVGhlIDxjb2RlPk1hdGhDb250ZXh0PC9jb2RlPiBhcml0aG1ldGljIHNldHRpbmdzLgorICAqIEByZXR1cm4gICAgIEEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hvc2UgdmFsdWUgaXMgdGhlIGludGVnZXIKKyAgKiAgICAgICAgICAgICBwYXJ0IG9mIDxjb2RlPnRoaXMvcmhzPC9jb2RlPi4KKyAgKiBAdGhyb3dzIEFyaXRobWV0aWNFeGNlcHRpb24gaWYgPGNvZGU+cmhzPC9jb2RlPiBpcyB6ZXJvLgorICAqIEB0aHJvd3MgQXJpdGhtZXRpY0V4Y2VwdGlvbiBpZiB0aGUgcmVzdWx0IHdpbGwgbm90IGZpdCBpbiB0aGUKKyAgKiAgICAgICAgICAgICBudW1iZXIgb2YgZGlnaXRzIHNwZWNpZmllZCBmb3IgdGhlIGNvbnRleHQuCisgICogQHN0YWJsZSBJQ1UgMi4wCisgICovCisgCisgcHVibGljIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCBkaXZpZGVJbnRlZ2VyKGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCByaHMsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dCBzZXQpeworICAvLyBzY2FsZSAwIHRvIGRyb3AgLjAwMCB3aGVuIHBsYWluCisgIHJldHVybiB0aGlzLmRvZGl2aWRlKCdJJyxyaHMsc2V0LDApOworICB9CisKKyAvKioKKyAgKiBSZXR1cm5zIGEgcGxhaW4gPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hvc2UgdmFsdWUgaXMKKyAgKiB0aGUgbWF4aW11bSBvZiA8Y29kZT50aGlzPC9jb2RlPiBhbmQgPGNvZGU+cmhzPC9jb2RlPi4KKyAgKiA8cD4KKyAgKiBUaGUgc2FtZSBhcyB7QGxpbmsgI21heChCaWdEZWNpbWFsLCBNYXRoQ29udGV4dCl9LAorICAqIHdoZXJlIHRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBpcyA8Y29kZT5yaHM8L2NvZGU+LAorICAqIGFuZCB0aGUgY29udGV4dCBpcyA8Y29kZT5uZXcgTWF0aENvbnRleHQoMCwgTWF0aENvbnRleHQuUExBSU4pPC9jb2RlPi4KKyAgKgorICAqIEBwYXJhbSAgcmhzIFRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBmb3IgdGhlIHJpZ2h0IGhhbmQgc2lkZSBvZgorICAqICAgICAgICAgICAgIHRoZSBjb21wYXJpc29uLgorICAqIEByZXR1cm4gICAgIEEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hvc2UgdmFsdWUgaXMKKyAgKiAgICAgICAgICAgICB0aGUgbWF4aW11bSBvZiA8Y29kZT50aGlzPC9jb2RlPiBhbmQgPGNvZGU+cmhzPC9jb2RlPi4KKyAgKiBAc3RhYmxlIElDVSAyLjAKKyAgKi8KKyAKKyBwdWJsaWMgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIG1heChjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgcmhzKXsKKyAgcmV0dXJuIHRoaXMubWF4KHJocyxwbGFpbk1DKTsKKyAgfQorCisgLyoqCisgICogUmV0dXJucyBhIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHdob3NlIHZhbHVlIGlzCisgICogdGhlIG1heGltdW0gb2YgPGNvZGU+dGhpczwvY29kZT4gYW5kIDxjb2RlPnJoczwvY29kZT4uCisgICogPHA+CisgICogUmV0dXJucyB0aGUgbGFyZ2VyIG9mIHRoZSBjdXJyZW50IG9iamVjdCBhbmQgdGhlIGZpcnN0IHBhcmFtZXRlci4KKyAgKiA8cD4KKyAgKiBJZiBjYWxsaW5nIHRoZSB7QGxpbmsgI2NvbXBhcmVUbyhCaWdEZWNpbWFsLCBNYXRoQ29udGV4dCl9IG1ldGhvZAorICAqIHdpdGggdGhlIHNhbWUgcGFyYW1ldGVycyB3b3VsZCByZXR1cm4gPGNvZGU+MTwvY29kZT4gb3IKKyAgKiA8Y29kZT4wPC9jb2RlPiwgdGhlbiB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlCisgICoge0BsaW5rICNwbHVzKE1hdGhDb250ZXh0KX0gbWV0aG9kIG9uIHRoZSBjdXJyZW50IG9iamVjdCAodXNpbmcgdGhlCisgICogc2FtZSA8Y29kZT5NYXRoQ29udGV4dDwvY29kZT4gcGFyYW1ldGVyKSBpcyByZXR1cm5lZC4KKyAgKiBPdGhlcndpc2UsIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUge0BsaW5rICNwbHVzKE1hdGhDb250ZXh0KX0KKyAgKiBtZXRob2Qgb24gdGhlIGZpcnN0IHBhcmFtZXRlciBvYmplY3QgKHVzaW5nIHRoZSBzYW1lCisgICogPGNvZGU+TWF0aENvbnRleHQ8L2NvZGU+IHBhcmFtZXRlcikgaXMgcmV0dXJuZWQuCisgICoKKyAgKiBAcGFyYW0gIHJocyBUaGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gZm9yIHRoZSByaWdodCBoYW5kIHNpZGUgb2YKKyAgKiAgICAgICAgICAgICB0aGUgY29tcGFyaXNvbi4KKyAgKiBAcGFyYW0gIHNldCBUaGUgPGNvZGU+TWF0aENvbnRleHQ8L2NvZGU+IGFyaXRobWV0aWMgc2V0dGluZ3MuCisgICogQHJldHVybiAgICAgQSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcworICAqICAgICAgICAgICAgIHRoZSBtYXhpbXVtIG9mIDxjb2RlPnRoaXM8L2NvZGU+IGFuZCA8Y29kZT5yaHM8L2NvZGU+LgorICAqIEBzdGFibGUgSUNVIDIuMAorICAqLworIAorIHB1YmxpYyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgbWF4KGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCByaHMsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dCBzZXQpeworICBpZiAoKHRoaXMuY29tcGFyZVRvKHJocyxzZXQpKT49MCkgCisgICByZXR1cm4gdGhpcy5wbHVzKHNldCk7CisgIGVsc2UgCisgICByZXR1cm4gcmhzLnBsdXMoc2V0KTsKKyAgfQorCisgLyoqCisgICogUmV0dXJucyBhIHBsYWluIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHdob3NlIHZhbHVlIGlzCisgICogdGhlIG1pbmltdW0gb2YgPGNvZGU+dGhpczwvY29kZT4gYW5kIDxjb2RlPnJoczwvY29kZT4uCisgICogPHA+CisgICogVGhlIHNhbWUgYXMge0BsaW5rICNtaW4oQmlnRGVjaW1hbCwgTWF0aENvbnRleHQpfSwKKyAgKiB3aGVyZSB0aGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gaXMgPGNvZGU+cmhzPC9jb2RlPiwKKyAgKiBhbmQgdGhlIGNvbnRleHQgaXMgPGNvZGU+bmV3IE1hdGhDb250ZXh0KDAsIE1hdGhDb250ZXh0LlBMQUlOKTwvY29kZT4uCisgICoKKyAgKiBAcGFyYW0gIHJocyBUaGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gZm9yIHRoZSByaWdodCBoYW5kIHNpZGUgb2YKKyAgKiAgICAgICAgICAgICB0aGUgY29tcGFyaXNvbi4KKyAgKiBAcmV0dXJuICAgICBBIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHdob3NlIHZhbHVlIGlzCisgICogICAgICAgICAgICAgdGhlIG1pbmltdW0gb2YgPGNvZGU+dGhpczwvY29kZT4gYW5kIDxjb2RlPnJoczwvY29kZT4uCisgICogQHN0YWJsZSBJQ1UgMi4wCisgICovCisgCisgcHVibGljIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCBtaW4oY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIHJocyl7CisgIHJldHVybiB0aGlzLm1pbihyaHMscGxhaW5NQyk7CisgIH0KKworIC8qKgorICAqIFJldHVybnMgYSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcworICAqIHRoZSBtaW5pbXVtIG9mIDxjb2RlPnRoaXM8L2NvZGU+IGFuZCA8Y29kZT5yaHM8L2NvZGU+LgorICAqIDxwPgorICAqIFJldHVybnMgdGhlIHNtYWxsZXIgb2YgdGhlIGN1cnJlbnQgb2JqZWN0IGFuZCB0aGUgZmlyc3QgcGFyYW1ldGVyLgorICAqIDxwPgorICAqIElmIGNhbGxpbmcgdGhlIHtAbGluayAjY29tcGFyZVRvKEJpZ0RlY2ltYWwsIE1hdGhDb250ZXh0KX0gbWV0aG9kCisgICogd2l0aCB0aGUgc2FtZSBwYXJhbWV0ZXJzIHdvdWxkIHJldHVybiA8Y29kZT4tMTwvY29kZT4gb3IKKyAgKiA8Y29kZT4wPC9jb2RlPiwgdGhlbiB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlCisgICoge0BsaW5rICNwbHVzKE1hdGhDb250ZXh0KX0gbWV0aG9kIG9uIHRoZSBjdXJyZW50IG9iamVjdCAodXNpbmcgdGhlCisgICogc2FtZSA8Y29kZT5NYXRoQ29udGV4dDwvY29kZT4gcGFyYW1ldGVyKSBpcyByZXR1cm5lZC4KKyAgKiBPdGhlcndpc2UsIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUge0BsaW5rICNwbHVzKE1hdGhDb250ZXh0KX0KKyAgKiBtZXRob2Qgb24gdGhlIGZpcnN0IHBhcmFtZXRlciBvYmplY3QgKHVzaW5nIHRoZSBzYW1lCisgICogPGNvZGU+TWF0aENvbnRleHQ8L2NvZGU+IHBhcmFtZXRlcikgaXMgcmV0dXJuZWQuCisgICoKKyAgKiBAcGFyYW0gIHJocyBUaGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gZm9yIHRoZSByaWdodCBoYW5kIHNpZGUgb2YKKyAgKiAgICAgICAgICAgICB0aGUgY29tcGFyaXNvbi4KKyAgKiBAcGFyYW0gIHNldCBUaGUgPGNvZGU+TWF0aENvbnRleHQ8L2NvZGU+IGFyaXRobWV0aWMgc2V0dGluZ3MuCisgICogQHJldHVybiAgICAgQSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcworICAqICAgICAgICAgICAgIHRoZSBtaW5pbXVtIG9mIDxjb2RlPnRoaXM8L2NvZGU+IGFuZCA8Y29kZT5yaHM8L2NvZGU+LgorICAqIEBzdGFibGUgSUNVIDIuMAorICAqLworIAorIHB1YmxpYyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgbWluKGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCByaHMsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dCBzZXQpeworICBpZiAoKHRoaXMuY29tcGFyZVRvKHJocyxzZXQpKTw9MCkgCisgICByZXR1cm4gdGhpcy5wbHVzKHNldCk7CisgIGVsc2UgCisgICByZXR1cm4gcmhzLnBsdXMoc2V0KTsKKyAgfQorCisgLyoqCisgICogUmV0dXJucyBhIHBsYWluIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHdob3NlIHZhbHVlIGlzCisgICogPGNvZGU+dGhpcypyaHM8L2NvZGU+LCB1c2luZyBmaXhlZCBwb2ludCBhcml0aG1ldGljLgorICAqIDxwPgorICAqIFRoZSBzYW1lIGFzIHtAbGluayAjYWRkKEJpZ0RlY2ltYWwsIE1hdGhDb250ZXh0KX0sCisgICogd2hlcmUgdGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IGlzIDxjb2RlPnJoczwvY29kZT4sCisgICogYW5kIHRoZSBjb250ZXh0IGlzIDxjb2RlPm5ldyBNYXRoQ29udGV4dCgwLCBNYXRoQ29udGV4dC5QTEFJTik8L2NvZGU+LgorICAqIDxwPgorICAqIFRoZSBsZW5ndGggb2YgdGhlIGRlY2ltYWwgcGFydCAodGhlIHNjYWxlKSBvZiB0aGUgcmVzdWx0IHdpbGwgYmUKKyAgKiB0aGUgc3VtIG9mIHRoZSBzY2FsZXMgb2YgdGhlIG9wZXJhbmRzLCBpZiB0aGV5IHdlcmUgZm9ybWF0dGVkCisgICogd2l0aG91dCBleHBvbmVudGlhbCBub3RhdGlvbi4KKyAgKgorICAqIEBwYXJhbSAgcmhzIFRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBmb3IgdGhlIHJpZ2h0IGhhbmQgc2lkZSBvZgorICAqICAgICAgICAgICAgIHRoZSBtdWx0aXBsaWNhdGlvbi4KKyAgKiBAcmV0dXJuICAgICBBIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHdob3NlIHZhbHVlIGlzCisgICogICAgICAgICAgICAgPGNvZGU+dGhpcypyaHM8L2NvZGU+LCB1c2luZyBmaXhlZCBwb2ludCBhcml0aG1ldGljLgorICAqIEBzdGFibGUgSUNVIDIuMAorICAqLworIAorIHB1YmxpYyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgbXVsdGlwbHkoY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIHJocyl7CisgIHJldHVybiB0aGlzLm11bHRpcGx5KHJocyxwbGFpbk1DKTsKKyAgfQorCisgLyoqCisgICogUmV0dXJucyBhIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHdob3NlIHZhbHVlIGlzIDxjb2RlPnRoaXMqcmhzPC9jb2RlPi4KKyAgKiA8cD4KKyAgKiBJbXBsZW1lbnRzIHRoZSBtdWx0aXBsaWNhdGlvbiAoPGI+PGNvZGU+KjwvY29kZT48L2I+KSBvcGVyYXRvcgorICAqIChhcyBkZWZpbmVkIGluIHRoZSBkZWNpbWFsIGRvY3VtZW50YXRpb24sIHNlZSB7QGxpbmsgQmlnRGVjaW1hbAorICAqIGNsYXNzIGhlYWRlcn0pLAorICAqIGFuZCByZXR1cm5zIHRoZSByZXN1bHQgYXMgYSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBvYmplY3QuCisgICoKKyAgKiBAcGFyYW0gIHJocyBUaGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gZm9yIHRoZSByaWdodCBoYW5kIHNpZGUgb2YKKyAgKiAgICAgICAgICAgICB0aGUgbXVsdGlwbGljYXRpb24uCisgICogQHBhcmFtICBzZXQgVGhlIDxjb2RlPk1hdGhDb250ZXh0PC9jb2RlPiBhcml0aG1ldGljIHNldHRpbmdzLgorICAqIEByZXR1cm4gICAgIEEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hvc2UgdmFsdWUgaXMKKyAgKiAgICAgICAgICAgICA8Y29kZT50aGlzKnJoczwvY29kZT4uCisgICogQHN0YWJsZSBJQ1UgMi4wCisgICovCisgCisgcHVibGljIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCBtdWx0aXBseShjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgcmhzLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQgc2V0KXsKKyAgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIGxoczsKKyAgaW50IHBhZGRpbmc7CisgIGludCByZXFkaWc7CisgIGJ5dGUgbXVsdGVyW109bnVsbDsKKyAgYnl0ZSBtdWx0YW5kW109bnVsbDsKKyAgaW50IG11bHRhbmRsZW47CisgIGludCBhY2NsZW49MDsKKyAgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIHJlczsKKyAgYnl0ZSBhY2NbXTsKKyAgaW50IG49MDsKKyAgYnl0ZSBtdWx0PTA7CisgIGlmIChzZXQubG9zdERpZ2l0cykgCisgICBjaGVja2RpZ2l0cyhyaHMsc2V0LmRpZ2l0cyk7CisgIGxocz10aGlzOyAvLyBuYW1lIGZvciBjbGFyaXR5IGFuZCBwcm94eQorICAKKyAgLyogUHJlcGFyZSBudW1iZXJzICh0cnVuY2F0ZSwgdW5sZXNzIHVubGltaXRlZCBwcmVjaXNpb24pICovCisgIHBhZGRpbmc9MDsgLy8gdHJhaWxpbmcgMCdzIHRvIGFkZAorICByZXFkaWc9c2V0LmRpZ2l0czsgLy8gbG9jYWwgY29weQorICBpZiAocmVxZGlnPjApIAorICAgeworICAgIGlmIChsaHMubWFudC5sZW5ndGg+cmVxZGlnKSAKKyAgICAgbGhzPWNsb25lKGxocykucm91bmQoc2V0KTsKKyAgICBpZiAocmhzLm1hbnQubGVuZ3RoPnJlcWRpZykgCisgICAgIHJocz1jbG9uZShyaHMpLnJvdW5kKHNldCk7CisgICAvLyBbd2UgY291bGQgcmV1c2UgdGhlIG5ldyBMSFMgZm9yIHJlc3VsdCBpbiB0aGlzIGNhc2VdCisgICB9CisgIGVsc2UgCisgICB7LyogdW5saW1pdGVkICovCisgICAgLy8gZml4ZWQgcG9pbnQgYXJpdGhtZXRpYyB3aWxsIHdhbnQgZXZlcnkgdHJhaWxpbmcgMDsgd2UgYWRkIHRoZXNlCisgICAgLy8gYWZ0ZXIgdGhlIGNhbGN1bGF0aW9uIHJhdGhlciB0aGFuIGJlZm9yZSwgZm9yIHNwZWVkLgorICAgIGlmIChsaHMuZXhwPjApIAorICAgICBwYWRkaW5nPXBhZGRpbmcrbGhzLmV4cDsKKyAgICBpZiAocmhzLmV4cD4wKSAKKyAgICAgcGFkZGluZz1wYWRkaW5nK3Jocy5leHA7CisgICB9CisgIAorICAvLyBGb3IgYmVzdCBzcGVlZCwgYXMgaW4gRE1TUkNOLCB3ZSB1c2UgdGhlIHNob3J0ZXIgbnVtYmVyIGFzIHRoZQorICAvLyBtdWx0aXBsaWVyIGFuZCB0aGUgbG9uZ2VyIGFzIHRoZSBtdWx0aXBsaWNhbmQuCisgIC8vIDE5OTkuMTIuMjI6IFdlIHVzZWQgdG8gc3BlY2lhbCBjYXNlIHdoZW4gdGhlIHJlc3VsdCB3b3VsZCBmaXQgaW4KKyAgLy8gICAgICAgICAgICAgYSBsb25nLCBidXQgd2l0aCBKYXZhIDEuMyB0aGlzIGdhdmUgbm8gYWR2YW50YWdlLgorICBpZiAobGhzLm1hbnQubGVuZ3RoPHJocy5tYW50Lmxlbmd0aCkgCisgICB7CisgICAgbXVsdGVyPWxocy5tYW50OworICAgIG11bHRhbmQ9cmhzLm1hbnQ7CisgICB9CisgIGVsc2UgCisgICB7CisgICAgbXVsdGVyPXJocy5tYW50OworICAgIG11bHRhbmQ9bGhzLm1hbnQ7CisgICB9CisgIAorICAvKiBDYWxjdWxhdGUgaG93IGxvbmcgcmVzdWx0IGJ5dGUgYXJyYXkgd2lsbCBiZSAqLworICBtdWx0YW5kbGVuPShtdWx0ZXIubGVuZ3RoK211bHRhbmQubGVuZ3RoKS0xOyAvLyBlZmZlY3RpdmUgbGVuZ3RoCisgIC8vIG9wdGltaXplIGZvciA3NSUgb2YgdGhlIGNhc2VzIHdoZXJlIGEgY2FycnkgaXMgZXhwZWN0ZWQuLi4KKyAgaWYgKChtdWx0ZXJbMF0qbXVsdGFuZFswXSk+OSkgCisgICBhY2NsZW49bXVsdGFuZGxlbisxOworICBlbHNlIAorICAgYWNjbGVuPW11bHRhbmRsZW47CisgIAorICAvKiBOb3cgdGhlIG1haW4gbG9uZyBtdWx0aXBsaWNhdGlvbiBsb29wICovCisgIHJlcz1uZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCk7IC8vIHdoZXJlIHdlJ2xsIGJ1aWxkIHJlc3VsdAorICBhY2M9bmV3IGJ5dGVbYWNjbGVuXTsgLy8gYWNjdW11bGF0b3IsIGFsbCB6ZXJvcworICAvLyAxOTk4LjA3LjAxOiBjYWxjdWxhdGUgZnJvbSBsZWZ0IHRvIHJpZ2h0IHNvIHRoYXQgYWNjdW11bGF0b3IgZ29lcworICAvLyB0byBsaWtlbHkgZmluYWwgbGVuZ3RoIG9uIGZpcnN0IGFkZGl0aW9uOyB0aGlzIGF2b2lkcyBhIG9uZS1kaWdpdAorICAvLyBleHRlbnNpb24gKGFuZCBvYmplY3QgYWxsb2NhdGlvbikgZWFjaCB0aW1lIGFyb3VuZCB0aGUgbG9vcC4KKyAgLy8gSW5pdGlhbCBudW1iZXIgdGhlcmVmb3JlIGhhcyB2aXJ0dWFsIHplcm9zIGFkZGVkIHRvIHJpZ2h0LgorICB7aW50ICQ3PW11bHRlci5sZW5ndGg7bj0wO246Zm9yKDskNz4wOyQ3LS0sbisrKXsKKyAgIG11bHQ9bXVsdGVyW25dOworICAgaWYgKG11bHQhPTApIAorICAgIHsgLy8gW29wdGltaXphdGlvbl0KKyAgICAgLy8gYWNjdW11bGF0ZSBbYWNjdW11bGF0b3IgaXMgcmV1c2FibGUgYXJyYXldCisgICAgIGFjYz1ieXRlYWRkc3ViKGFjYyxhY2MubGVuZ3RoLG11bHRhbmQsbXVsdGFuZGxlbixtdWx0LHRydWUpOworICAgIH0KKyAgIC8vIGRpdmlkZSBtdWx0aXBsaWNhbmQgYnkgMTAgZm9yIG5leHQgZGlnaXQgdG8gcmlnaHQKKyAgIG11bHRhbmRsZW4tLTsgLy8gJ3ZpcnR1YWwgbGVuZ3RoJworICAgfQorICB9LypuKi8KKyAgCisgIHJlcy5pbmQ9KGJ5dGUpKGxocy5pbmQqcmhzLmluZCk7IC8vIGZpbmFsIHNpZ24KKyAgcmVzLmV4cD0obGhzLmV4cCtyaHMuZXhwKS1wYWRkaW5nOyAvLyBmaW5hbCBleHBvbmVudAorICAvLyBbb3ZlcmZsb3cgaXMgY2hlY2tlZCBieSBmaW5pc2hdCisgIAorICAvKiBhZGQgdHJhaWxpbmcgemVyb3MgdG8gdGhlIHJlc3VsdCwgaWYgbmVjZXNzYXJ5ICovCisgIGlmIChwYWRkaW5nPT0wKSAKKyAgIHJlcy5tYW50PWFjYzsKKyAgZWxzZSAKKyAgIHJlcy5tYW50PWV4dGVuZChhY2MsYWNjLmxlbmd0aCtwYWRkaW5nKTsgLy8gYWRkIHRyYWlsaW5nIDBzCisgIHJldHVybiByZXMuZmluaXNoKHNldCxmYWxzZSk7CisgIH0KKworIC8qKgorICAqIFJldHVybnMgYSBwbGFpbiA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcworICAqIDxjb2RlPi10aGlzPC9jb2RlPi4KKyAgKiA8cD4KKyAgKiBUaGUgc2FtZSBhcyB7QGxpbmsgI25lZ2F0ZShNYXRoQ29udGV4dCl9LCB3aGVyZSB0aGUgY29udGV4dCBpcworICAqIDxjb2RlPm5ldyBNYXRoQ29udGV4dCgwLCBNYXRoQ29udGV4dC5QTEFJTik8L2NvZGU+LgorICAqIDxwPgorICAqIFRoZSBsZW5ndGggb2YgdGhlIGRlY2ltYWwgcGFydCAodGhlIHNjYWxlKSBvZiB0aGUgcmVzdWx0IHdpbGwgYmUKKyAgKiBiZSA8Y29kZT50aGlzLnNjYWxlKCk8L2NvZGU+CisgICoKKyAgKgorICAqIEByZXR1cm4gQSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcworICAqICAgICAgICAgPGNvZGU+LXRoaXM8L2NvZGU+LgorICAqIEBzdGFibGUgSUNVIDIuMAorICAqLworIAorIHB1YmxpYyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgbmVnYXRlKCl7CisgIHJldHVybiB0aGlzLm5lZ2F0ZShwbGFpbk1DKTsKKyAgfQorCisgLyoqCisgICogUmV0dXJucyBhIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHdob3NlIHZhbHVlIGlzIDxjb2RlPi10aGlzPC9jb2RlPi4KKyAgKiA8cD4KKyAgKiBJbXBsZW1lbnRzIHRoZSBuZWdhdGlvbiAoUHJlZml4IDxiPjxjb2RlPi08L2NvZGU+PC9iPikgb3BlcmF0b3IKKyAgKiAoYXMgZGVmaW5lZCBpbiB0aGUgZGVjaW1hbCBkb2N1bWVudGF0aW9uLCBzZWUge0BsaW5rIEJpZ0RlY2ltYWwKKyAgKiBjbGFzcyBoZWFkZXJ9KSwKKyAgKiBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IGFzIGEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gb2JqZWN0LgorICAqCisgICogQHBhcmFtICBzZXQgVGhlIDxjb2RlPk1hdGhDb250ZXh0PC9jb2RlPiBhcml0aG1ldGljIHNldHRpbmdzLgorICAqIEByZXR1cm4gQSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcworICAqICAgICAgICAgPGNvZGU+LXRoaXM8L2NvZGU+LgorICAqIEBzdGFibGUgSUNVIDIuMAorICAqLworIAorIHB1YmxpYyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgbmVnYXRlKGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQgc2V0KXsKKyAgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIHJlczsKKyAgLy8gT3JpZ2luYWxseSBjYWxsZWQgbWludXMoKSwgY2hhbmdlZCB0byBtYXRjaGVkIEphdmEgcHJlY2VkZW50cworICAvLyBUaGlzIHNpbXBseSBjbG9uZXMsIGZsaXBzIHRoZSBzaWduLCBhbmQgcG9zc2libHkgcm91bmRzCisgIGlmIChzZXQubG9zdERpZ2l0cykgCisgICBjaGVja2RpZ2l0cygoY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKW51bGwsc2V0LmRpZ2l0cyk7CisgIHJlcz1jbG9uZSh0aGlzKTsgLy8gc2FmZSBjb3B5CisgIHJlcy5pbmQ9KGJ5dGUpLXJlcy5pbmQ7CisgIHJldHVybiByZXMuZmluaXNoKHNldCxmYWxzZSk7CisgIH0KKworIC8qKgorICAqIFJldHVybnMgYSBwbGFpbiA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcworICAqIDxjb2RlPit0aGlzPC9jb2RlPi4KKyAgKiBOb3RlIHRoYXQgPGNvZGU+dGhpczwvY29kZT4gaXMgbm90IG5lY2Vzc2FyaWx5IGEKKyAgKiBwbGFpbiA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiwgYnV0IHRoZSByZXN1bHQgd2lsbCBhbHdheXMgYmUuCisgICogPHA+CisgICogVGhlIHNhbWUgYXMge0BsaW5rICNwbHVzKE1hdGhDb250ZXh0KX0sIHdoZXJlIHRoZSBjb250ZXh0IGlzCisgICogPGNvZGU+bmV3IE1hdGhDb250ZXh0KDAsIE1hdGhDb250ZXh0LlBMQUlOKTwvY29kZT4uCisgICogPHA+CisgICogVGhlIGxlbmd0aCBvZiB0aGUgZGVjaW1hbCBwYXJ0ICh0aGUgc2NhbGUpIG9mIHRoZSByZXN1bHQgd2lsbCBiZQorICAqIGJlIDxjb2RlPnRoaXMuc2NhbGUoKTwvY29kZT4KKyAgKgorICAqIEByZXR1cm4gQSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcworICAqICAgICAgICAgPGNvZGU+K3RoaXM8L2NvZGU+LgorICAqIEBzdGFibGUgSUNVIDIuMAorICAqLworIAorIHB1YmxpYyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgcGx1cygpeworICByZXR1cm4gdGhpcy5wbHVzKHBsYWluTUMpOworICB9CisKKyAvKioKKyAgKiBSZXR1cm5zIGEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hvc2UgdmFsdWUgaXMKKyAgKiA8Y29kZT4rdGhpczwvY29kZT4uCisgICogPHA+CisgICogSW1wbGVtZW50cyB0aGUgcGx1cyAoUHJlZml4IDxiPjxjb2RlPis8L2NvZGU+PC9iPikgb3BlcmF0b3IKKyAgKiAoYXMgZGVmaW5lZCBpbiB0aGUgZGVjaW1hbCBkb2N1bWVudGF0aW9uLCBzZWUge0BsaW5rIEJpZ0RlY2ltYWwKKyAgKiBjbGFzcyBoZWFkZXJ9KSwKKyAgKiBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IGFzIGEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gb2JqZWN0LgorICAqIDxwPgorICAqIFRoaXMgbWV0aG9kIGlzIHVzZWZ1bCBmb3Igcm91bmRpbmcgb3Igb3RoZXJ3aXNlIGFwcGx5aW5nIGEgY29udGV4dAorICAqIHRvIGEgZGVjaW1hbCB2YWx1ZS4KKyAgKgorICAqIEBwYXJhbSAgc2V0IFRoZSA8Y29kZT5NYXRoQ29udGV4dDwvY29kZT4gYXJpdGhtZXRpYyBzZXR0aW5ncy4KKyAgKiBAcmV0dXJuIEEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hvc2UgdmFsdWUgaXMKKyAgKiAgICAgICAgIDxjb2RlPit0aGlzPC9jb2RlPi4KKyAgKiBAc3RhYmxlIElDVSAyLjAKKyAgKi8KKyAKKyBwdWJsaWMgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIHBsdXMoY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dCBzZXQpeworICAvLyBUaGlzIGNsb25lcyBhbmQgZm9yY2VzIHRoZSByZXN1bHQgdG8gdGhlIG5ldyBzZXR0aW5ncworICAvLyBNYXkgcmV0dXJuIHNhbWUgb2JqZWN0CisgIGlmIChzZXQubG9zdERpZ2l0cykgCisgICBjaGVja2RpZ2l0cygoY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKW51bGwsc2V0LmRpZ2l0cyk7CisgIC8vIE9wdGltaXphdGlvbjogcmV0dXJucyBzYW1lIG9iamVjdCBmb3Igc29tZSBjb21tb24gY2FzZXMKKyAgaWYgKHNldC5mb3JtPT1jb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlBMQUlOKSAKKyAgIGlmICh0aGlzLmZvcm09PWNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUExBSU4pIAorICAgIHsKKyAgICAgaWYgKHRoaXMubWFudC5sZW5ndGg8PXNldC5kaWdpdHMpIAorICAgICAgcmV0dXJuIHRoaXM7CisgICAgIGlmIChzZXQuZGlnaXRzPT0wKSAKKyAgICAgIHJldHVybiB0aGlzOworICAgIH0KKyAgcmV0dXJuIGNsb25lKHRoaXMpLmZpbmlzaChzZXQsZmFsc2UpOworICB9CisKKyAvKioKKyAgKiBSZXR1cm5zIGEgcGxhaW4gPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hvc2UgdmFsdWUgaXMKKyAgKiA8Y29kZT50aGlzKipyaHM8L2NvZGU+LCB1c2luZyBmaXhlZCBwb2ludCBhcml0aG1ldGljLgorICAqIDxwPgorICAqIFRoZSBzYW1lIGFzIHtAbGluayAjcG93KEJpZ0RlY2ltYWwsIE1hdGhDb250ZXh0KX0sCisgICogd2hlcmUgdGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IGlzIDxjb2RlPnJoczwvY29kZT4sCisgICogYW5kIHRoZSBjb250ZXh0IGlzIDxjb2RlPm5ldyBNYXRoQ29udGV4dCgwLCBNYXRoQ29udGV4dC5QTEFJTik8L2NvZGU+LgorICAqIDxwPgorICAqIFRoZSBwYXJhbWV0ZXIgaXMgdGhlIHBvd2VyIHRvIHdoaWNoIHRoZSA8Y29kZT50aGlzPC9jb2RlPiB3aWxsIGJlCisgICogcmFpc2VkOyBpdCBtdXN0IGJlIGluIHRoZSByYW5nZSAwIHRocm91Z2ggOTk5OTk5OTk5LCBhbmQgbXVzdAorICAqIGhhdmUgYSBkZWNpbWFsIHBhcnQgb2YgemVyby4gIE5vdGUgdGhhdCB0aGVzZSByZXN0cmljdGlvbnMgbWF5IGJlCisgICogcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLCBzbyB0aGV5IHNob3VsZCBub3QgYmUgdXNlZCBhcyBhIHRlc3QgZm9yIGEKKyAgKiB3aG9sZSBudW1iZXIuCisgICogPHA+CisgICogSW4gYWRkaXRpb24sIHRoZSBwb3dlciBtdXN0IG5vdCBiZSBuZWdhdGl2ZSwgYXMgbm8KKyAgKiA8Y29kZT5NYXRoQ29udGV4dDwvY29kZT4gaXMgdXNlZCBhbmQgc28gdGhlIHJlc3VsdCB3b3VsZCB0aGVuCisgICogYWx3YXlzIGJlIDAuCisgICoKKyAgKiBAcGFyYW0gIHJocyBUaGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gZm9yIHRoZSByaWdodCBoYW5kIHNpZGUgb2YKKyAgKiAgICAgICAgICAgICB0aGUgb3BlcmF0aW9uICh0aGUgcG93ZXIpLgorICAqIEByZXR1cm4gICAgIEEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hvc2UgdmFsdWUgaXMKKyAgKiAgICAgICAgICAgICA8Y29kZT50aGlzKipyaHM8L2NvZGU+LCB1c2luZyBmaXhlZCBwb2ludCBhcml0aG1ldGljLgorICAqIEB0aHJvd3MgQXJpdGhtZXRpY0V4Y2VwdGlvbiBpZiA8Y29kZT5yaHM8L2NvZGU+IGlzIG91dCBvZiByYW5nZSBvcgorICAqICAgICAgICAgICAgIGlzIG5vdCBhIHdob2xlIG51bWJlci4KKyAgKiBAc3RhYmxlIElDVSAyLjAKKyAgKi8KKyAKKyBwdWJsaWMgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIHBvdyhjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgcmhzKXsKKyAgcmV0dXJuIHRoaXMucG93KHJocyxwbGFpbk1DKTsKKyAgfQorIC8vIFRoZSBuYW1lIGZvciB0aGlzIG1ldGhvZCBpcyBpbmhlcml0ZWQgZnJvbSB0aGUgcHJlY2VkZW50IHNldCBieSB0aGUKKyAvLyBCaWdJbnRlZ2VyIGFuZCBNYXRoIGNsYXNzZXMuCisgCisgLyoqCisgICogUmV0dXJucyBhIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHdob3NlIHZhbHVlIGlzIDxjb2RlPnRoaXMqKnJoczwvY29kZT4uCisgICogPHA+CisgICogSW1wbGVtZW50cyB0aGUgcG93ZXIgKDxiPjxjb2RlPioqPC9jb2RlPjwvYj4pIG9wZXJhdG9yCisgICogKGFzIGRlZmluZWQgaW4gdGhlIGRlY2ltYWwgZG9jdW1lbnRhdGlvbiwgc2VlIHtAbGluayBCaWdEZWNpbWFsCisgICogY2xhc3MgaGVhZGVyfSksCisgICogYW5kIHJldHVybnMgdGhlIHJlc3VsdCBhcyBhIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IG9iamVjdC4KKyAgKiA8cD4KKyAgKiBUaGUgZmlyc3QgcGFyYW1ldGVyIGlzIHRoZSBwb3dlciB0byB3aGljaCB0aGUgPGNvZGU+dGhpczwvY29kZT4KKyAgKiB3aWxsIGJlIHJhaXNlZDsgaXQgbXVzdCBiZSBpbiB0aGUgcmFuZ2UgLTk5OTk5OTk5OSB0aHJvdWdoCisgICogOTk5OTk5OTk5LCBhbmQgbXVzdCBoYXZlIGEgZGVjaW1hbCBwYXJ0IG9mIHplcm8uICBOb3RlIHRoYXQgdGhlc2UKKyAgKiByZXN0cmljdGlvbnMgbWF5IGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZSwgc28gdGhleSBzaG91bGQgbm90IGJlCisgICogdXNlZCBhcyBhIHRlc3QgZm9yIGEgd2hvbGUgbnVtYmVyLgorICAqIDxwPgorICAqIElmIHRoZSA8Y29kZT5kaWdpdHM8L2NvZGU+IHNldHRpbmcgb2YgdGhlIDxjb2RlPk1hdGhDb250ZXh0PC9jb2RlPgorICAqIHBhcmFtZXRlciBpcyAwLCB0aGUgcG93ZXIgbXVzdCBiZSB6ZXJvIG9yIHBvc2l0aXZlLgorICAqCisgICogQHBhcmFtICByaHMgVGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IGZvciB0aGUgcmlnaHQgaGFuZCBzaWRlIG9mCisgICogICAgICAgICAgICAgdGhlIG9wZXJhdGlvbiAodGhlIHBvd2VyKS4KKyAgKiBAcGFyYW0gIHNldCBUaGUgPGNvZGU+TWF0aENvbnRleHQ8L2NvZGU+IGFyaXRobWV0aWMgc2V0dGluZ3MuCisgICogQHJldHVybiAgICAgQSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcworICAqICAgICAgICAgICAgIDxjb2RlPnRoaXMqKnJoczwvY29kZT4uCisgICogQHRocm93cyBBcml0aG1ldGljRXhjZXB0aW9uIGlmIDxjb2RlPnJoczwvY29kZT4gaXMgb3V0IG9mIHJhbmdlIG9yCisgICogICAgICAgICAgICAgaXMgbm90IGEgd2hvbGUgbnVtYmVyLgorICAqIEBzdGFibGUgSUNVIDIuMAorICAqLworIAorIHB1YmxpYyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgcG93KGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCByaHMsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dCBzZXQpeworICBpbnQgbjsKKyAgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIGxoczsKKyAgaW50IHJlcWRpZzsKKyAgaW50IHdvcmtkaWdpdHM9MDsKKyAgaW50IEw9MDsKKyAgY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dCB3b3Jrc2V0OworICBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgcmVzOworICBib29sZWFuIHNlZW5iaXQ7CisgIGludCBpPTA7CisgIGlmIChzZXQubG9zdERpZ2l0cykgCisgICBjaGVja2RpZ2l0cyhyaHMsc2V0LmRpZ2l0cyk7CisgIG49cmhzLmludGNoZWNrKE1pbkFyZyxNYXhBcmcpOyAvLyBjaGVjayBSSFMgYnkgdGhlIHJ1bGVzCisgIGxocz10aGlzOyAvLyBjbGFyaWZpZWQgbmFtZQorICAKKyAgcmVxZGlnPXNldC5kaWdpdHM7IC8vIGxvY2FsIGNvcHkgKGhlYXZpbHkgdXNlZCkKKyAgaWYgKHJlcWRpZz09MCkgCisgICB7CisgICAgaWYgKHJocy5pbmQ9PWlzbmVnKSAKKyAgICAgdGhyb3cgbmV3IGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uKCJOZWdhdGl2ZSBwb3dlcjoiKyIgIityaHMudG9TdHJpbmcoKSk7CisgICAgd29ya2RpZ2l0cz0wOworICAgfQorICBlbHNlIAorICAgey8qIG5vbi0wIGRpZ2l0cyAqLworICAgIGlmICgocmhzLm1hbnQubGVuZ3RoK3Jocy5leHApPnJlcWRpZykgCisgICAgIHRocm93IG5ldyBqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbigiVG9vIG1hbnkgZGlnaXRzOiIrIiAiK3Jocy50b1N0cmluZygpKTsKKyAgICAKKyAgICAvKiBSb3VuZCB0aGUgbGhzIHRvIERJR0lUUyBpZiBuZWVkIGJlICovCisgICAgaWYgKGxocy5tYW50Lmxlbmd0aD5yZXFkaWcpIAorICAgICBsaHM9Y2xvbmUobGhzKS5yb3VuZChzZXQpOworICAgIAorICAgIC8qIEwgZm9yIHByZWNpc2lvbiBjYWxjdWxhdGlvbiBbc2VlIEFOU0kgWDMuMjc0LTE5OTZdICovCisgICAgTD1yaHMubWFudC5sZW5ndGgrcmhzLmV4cDsgLy8gbGVuZ3RoIHdpdGhvdXQgZGVjaW1hbCB6ZXJvcy9leHAKKyAgICB3b3JrZGlnaXRzPShyZXFkaWcrTCkrMTsgLy8gY2FsY3VsYXRlIHRoZSB3b3JraW5nIERJR0lUUworICAgfQorICAKKyAgLyogQ3JlYXRlIGEgY29weSBvZiBzZXQgZm9yIHdvcmtpbmcgc2V0dGluZ3MgKi8KKyAgLy8gTm90ZTogbm8gbmVlZCB0byBjaGVjayBmb3IgbG9zdERpZ2l0cyBhZ2Fpbi4KKyAgLy8gMTk5OS4wNy4xNyBOb3RlOiB0aGlzIGNvbnN0cnVjdGlvbiBtdXN0IGZvbGxvdyBSSFMgY2hlY2sKKyAgd29ya3NldD1uZXcgY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dCh3b3JrZGlnaXRzLHNldC5mb3JtLGZhbHNlLHNldC5yb3VuZGluZ01vZGUpOworICAKKyAgcmVzPU9ORTsgLy8gYWNjdW11bGF0b3IKKyAgaWYgKG49PTApIAorICAgcmV0dXJuIHJlczsgLy8geCoqMCA9PSAxCisgIGlmIChuPDApIAorICAgbj0oaW50KS1uOyAvLyBbcmhzLmluZCByZWNvcmRzIHRoZSBzaWduXQorICBzZWVuYml0PWZhbHNlOyAvLyBzZXQgb25jZSB3ZSd2ZSBzZWVuIGEgMS1iaXQKKyAge2k9MTtpOmZvcig7O2krKyl7IC8vIGZvciBlYWNoIGJpdCBbdG9wIGJpdCBpZ25vcmVkXQorICAgbj1uK247IC8vIHNoaWZ0IGxlZnQgMSBiaXQKKyAgIGlmIChuPDApIAorICAgIHsgLy8gdG9wIGJpdCBpcyBzZXQKKyAgICAgc2VlbmJpdD10cnVlOyAvLyBPSywgd2UncmUgb2ZmCisgICAgIHJlcz1yZXMubXVsdGlwbHkobGhzLHdvcmtzZXQpOyAvLyBhY2M9YWNjKngKKyAgICB9CisgICBpZiAoaT09MzEpIAorICAgIGJyZWFrIGk7IC8vIHRoYXQgd2FzIHRoZSBsYXN0IGJpdAorICAgaWYgKCghc2VlbmJpdCkpIAorICAgIGNvbnRpbnVlIGk7IC8vIHdlIGRvbid0IGhhdmUgdG8gc3F1YXJlIDEKKyAgIHJlcz1yZXMubXVsdGlwbHkocmVzLHdvcmtzZXQpOyAvLyBhY2M9YWNjKmFjYyBbc3F1YXJlXQorICAgfQorICB9LyppKi8gLy8gMzIgYml0cworICBpZiAocmhzLmluZDwwKSAgLy8gd2FzIGEgKiotbiBbaGVuY2UgZGlnaXRzPjBdCisgICByZXM9T05FLmRpdmlkZShyZXMsd29ya3NldCk7IC8vIC4uIHNvIGFjYz0xL2FjYworICByZXR1cm4gcmVzLmZpbmlzaChzZXQsdHJ1ZSk7IC8vIHJvdW5kIGFuZCBzdHJpcCBbb3JpZ2luYWwgZGlnaXRzXQorICB9CisKKyAvKioKKyAgKiBSZXR1cm5zIGEgcGxhaW4gPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hvc2UgdmFsdWUgaXMKKyAgKiB0aGUgcmVtYWluZGVyIG9mIDxjb2RlPnRoaXMvcmhzPC9jb2RlPiwgdXNpbmcgZml4ZWQgcG9pbnQgYXJpdGhtZXRpYy4KKyAgKiA8cD4KKyAgKiBUaGUgc2FtZSBhcyB7QGxpbmsgI3JlbWFpbmRlcihCaWdEZWNpbWFsLCBNYXRoQ29udGV4dCl9LAorICAqIHdoZXJlIHRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBpcyA8Y29kZT5yaHM8L2NvZGU+LAorICAqIGFuZCB0aGUgY29udGV4dCBpcyA8Y29kZT5uZXcgTWF0aENvbnRleHQoMCwgTWF0aENvbnRleHQuUExBSU4pPC9jb2RlPi4KKyAgKiA8cD4KKyAgKiBUaGlzIGlzIG5vdCB0aGUgbW9kdWxvIG9wZXJhdG9yIC0tIHRoZSByZXN1bHQgbWF5IGJlIG5lZ2F0aXZlLgorICAqCisgICogQHBhcmFtICByaHMgVGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IGZvciB0aGUgcmlnaHQgaGFuZCBzaWRlIG9mCisgICogICAgICAgICAgICAgdGhlIHJlbWFpbmRlciBvcGVyYXRpb24uCisgICogQHJldHVybiAgICAgQSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcyB0aGUgcmVtYWluZGVyCisgICogICAgICAgICAgICAgb2YgPGNvZGU+dGhpcy9yaHM8L2NvZGU+LCB1c2luZyBmaXhlZCBwb2ludCBhcml0aG1ldGljLgorICAqIEB0aHJvd3MgQXJpdGhtZXRpY0V4Y2VwdGlvbiBpZiA8Y29kZT5yaHM8L2NvZGU+IGlzIHplcm8uCisgICogQHN0YWJsZSBJQ1UgMi4wCisgICovCisgCisgcHVibGljIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCByZW1haW5kZXIoY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIHJocyl7CisgIHJldHVybiB0aGlzLmRvZGl2aWRlKCdSJyxyaHMscGxhaW5NQywtMSk7CisgIH0KKworIC8qKgorICAqIFJldHVybnMgYSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcyB0aGUgcmVtYWluZGVyIG9mCisgICogPGNvZGU+dGhpcy9yaHM8L2NvZGU+LgorICAqIDxwPgorICAqIEltcGxlbWVudHMgdGhlIHJlbWFpbmRlciBvcGVyYXRvcgorICAqIChhcyBkZWZpbmVkIGluIHRoZSBkZWNpbWFsIGRvY3VtZW50YXRpb24sIHNlZSB7QGxpbmsgQmlnRGVjaW1hbAorICAqIGNsYXNzIGhlYWRlcn0pLAorICAqIGFuZCByZXR1cm5zIHRoZSByZXN1bHQgYXMgYSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBvYmplY3QuCisgICogPHA+CisgICogVGhpcyBpcyBub3QgdGhlIG1vZHVsbyBvcGVyYXRvciAtLSB0aGUgcmVzdWx0IG1heSBiZSBuZWdhdGl2ZS4KKyAgKgorICAqIEBwYXJhbSAgcmhzIFRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBmb3IgdGhlIHJpZ2h0IGhhbmQgc2lkZSBvZgorICAqICAgICAgICAgICAgIHRoZSByZW1haW5kZXIgb3BlcmF0aW9uLgorICAqIEBwYXJhbSAgc2V0IFRoZSA8Y29kZT5NYXRoQ29udGV4dDwvY29kZT4gYXJpdGhtZXRpYyBzZXR0aW5ncy4KKyAgKiBAcmV0dXJuICAgICBBIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHdob3NlIHZhbHVlIGlzIHRoZSByZW1haW5kZXIKKyAgKiAgICAgICAgICAgICBvZiA8Y29kZT50aGlzK3JoczwvY29kZT4uCisgICogQHRocm93cyBBcml0aG1ldGljRXhjZXB0aW9uIGlmIDxjb2RlPnJoczwvY29kZT4gaXMgemVyby4KKyAgKiBAdGhyb3dzIEFyaXRobWV0aWNFeGNlcHRpb24gaWYgdGhlIGludGVnZXIgcGFydCBvZiB0aGUgcmVzdWx0IHdpbGwKKyAgKiAgICAgICAgICAgICBub3QgZml0IGluIHRoZSBudW1iZXIgb2YgZGlnaXRzIHNwZWNpZmllZCBmb3IgdGhlCisgICogICAgICAgICAgICAgY29udGV4dC4KKyAgKiBAc3RhYmxlIElDVSAyLjAKKyAgKi8KKyAKKyBwdWJsaWMgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIHJlbWFpbmRlcihjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgcmhzLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQgc2V0KXsKKyAgcmV0dXJuIHRoaXMuZG9kaXZpZGUoJ1InLHJocyxzZXQsLTEpOworICB9CisKKyAvKioKKyAgKiBSZXR1cm5zIGEgcGxhaW4gPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hvc2UgdmFsdWUgaXMKKyAgKiA8Y29kZT50aGlzLXJoczwvY29kZT4sIHVzaW5nIGZpeGVkIHBvaW50IGFyaXRobWV0aWMuCisgICogPHA+CisgICogVGhlIHNhbWUgYXMge0BsaW5rICNzdWJ0cmFjdChCaWdEZWNpbWFsLCBNYXRoQ29udGV4dCl9LAorICAqIHdoZXJlIHRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBpcyA8Y29kZT5yaHM8L2NvZGU+LAorICAqIGFuZCB0aGUgY29udGV4dCBpcyA8Y29kZT5uZXcgTWF0aENvbnRleHQoMCwgTWF0aENvbnRleHQuUExBSU4pPC9jb2RlPi4KKyAgKiA8cD4KKyAgKiBUaGUgbGVuZ3RoIG9mIHRoZSBkZWNpbWFsIHBhcnQgKHRoZSBzY2FsZSkgb2YgdGhlIHJlc3VsdCB3aWxsIGJlCisgICogdGhlIG1heGltdW0gb2YgdGhlIHNjYWxlcyBvZiB0aGUgdHdvIG9wZXJhbmRzLgorICAqCisgICogQHBhcmFtICByaHMgVGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IGZvciB0aGUgcmlnaHQgaGFuZCBzaWRlIG9mCisgICogICAgICAgICAgICAgdGhlIHN1YnRyYWN0aW9uLgorICAqIEByZXR1cm4gICAgIEEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hvc2UgdmFsdWUgaXMKKyAgKiAgICAgICAgICAgICA8Y29kZT50aGlzLXJoczwvY29kZT4sIHVzaW5nIGZpeGVkIHBvaW50IGFyaXRobWV0aWMuCisgICogQHN0YWJsZSBJQ1UgMi4wCisgICovCisgCisgcHVibGljIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCBzdWJ0cmFjdChjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgcmhzKXsKKyAgcmV0dXJuIHRoaXMuc3VidHJhY3QocmhzLHBsYWluTUMpOworICB9CisKKyAvKioKKyAgKiBSZXR1cm5zIGEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hvc2UgdmFsdWUgaXMgPGNvZGU+dGhpcy1yaHM8L2NvZGU+LgorICAqIDxwPgorICAqIEltcGxlbWVudHMgdGhlIHN1YnRyYWN0aW9uICg8Yj48Y29kZT4tPC9jb2RlPjwvYj4pIG9wZXJhdG9yCisgICogKGFzIGRlZmluZWQgaW4gdGhlIGRlY2ltYWwgZG9jdW1lbnRhdGlvbiwgc2VlIHtAbGluayBCaWdEZWNpbWFsCisgICogY2xhc3MgaGVhZGVyfSksCisgICogYW5kIHJldHVybnMgdGhlIHJlc3VsdCBhcyBhIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IG9iamVjdC4KKyAgKgorICAqIEBwYXJhbSAgcmhzIFRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBmb3IgdGhlIHJpZ2h0IGhhbmQgc2lkZSBvZgorICAqICAgICAgICAgICAgIHRoZSBzdWJ0cmFjdGlvbi4KKyAgKiBAcGFyYW0gIHNldCBUaGUgPGNvZGU+TWF0aENvbnRleHQ8L2NvZGU+IGFyaXRobWV0aWMgc2V0dGluZ3MuCisgICogQHJldHVybiAgICAgQSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcworICAqICAgICAgICAgICAgIDxjb2RlPnRoaXMtcmhzPC9jb2RlPi4KKyAgKiBAc3RhYmxlIElDVSAyLjAKKyAgKi8KKyAKKyBwdWJsaWMgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIHN1YnRyYWN0KGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCByaHMsY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dCBzZXQpeworICBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgbmV3cmhzOworICBpZiAoc2V0Lmxvc3REaWdpdHMpIAorICAgY2hlY2tkaWdpdHMocmhzLHNldC5kaWdpdHMpOworICAvLyBbYWRkIHdpbGwgcmVjaGVjayAuLiBidXQgd291bGQgcmVwb3J0IC1yaHNdCisgIC8qIGNhcnJ5IG91dCB0aGUgc3VidHJhY3Rpb24gKi8KKyAgLy8gd2UgY291bGQgZmFzdHBhdGggLTAsIGJ1dCBpdCBpcyB0b28gcmFyZS4KKyAgbmV3cmhzPWNsb25lKHJocyk7IC8vIHNhZmUgY29weQorICBuZXdyaHMuaW5kPShieXRlKS1uZXdyaHMuaW5kOyAvLyBwcmVwYXJlIHRvIHN1YnRyYWN0CisgIHJldHVybiB0aGlzLmFkZChuZXdyaHMsc2V0KTsgLy8gYXJpdGhtZXRpYworICB9CisKKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgLyogT3RoZXIgbWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKioKKyAgKiBDb252ZXJ0cyB0aGlzIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHRvIGEgPGNvZGU+Ynl0ZTwvY29kZT4uCisgICogSWYgdGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IGhhcyBhIG5vbi16ZXJvIGRlY2ltYWwgcGFydCBvciBpcworICAqIG91dCBvZiB0aGUgcG9zc2libGUgcmFuZ2UgZm9yIGEgPGNvZGU+Ynl0ZTwvY29kZT4gKDgtYml0IHNpZ25lZAorICAqIGludGVnZXIpIHJlc3VsdCB0aGVuIGFuIDxjb2RlPkFyaXRobWV0aWNFeGNlcHRpb248L2NvZGU+IGlzIHRocm93bi4KKyAgKgorICAqIEByZXR1cm4gQSA8Y29kZT5ieXRlPC9jb2RlPiBlcXVhbCBpbiB2YWx1ZSB0byA8Y29kZT50aGlzPC9jb2RlPi4KKyAgKiBAdGhyb3dzIEFyaXRobWV0aWNFeGNlcHRpb24gaWYgPGNvZGU+dGhpczwvY29kZT4gaGFzIGEgbm9uLXplcm8KKyAgKiAgICAgICAgICAgICAgICAgZGVjaW1hbCBwYXJ0LCBvciB3aWxsIG5vdCBmaXQgaW4gYSA8Y29kZT5ieXRlPC9jb2RlPi4KKyAgKiBAc3RhYmxlIElDVSAyLjAKKyAgKi8KKyAKKyBwdWJsaWMgYnl0ZSBieXRlVmFsdWVFeGFjdCgpeworICBpbnQgbnVtOworICBudW09dGhpcy5pbnRWYWx1ZUV4YWN0KCk7IC8vIHdpbGwgY2hlY2sgZGVjaW1hbCBwYXJ0IHRvbworICBpZiAoKG51bT4xMjcpfChudW08KC0xMjgpKSkgCisgICB0aHJvdyBuZXcgamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24oIkNvbnZlcnNpb24gb3ZlcmZsb3c6IisiICIrdGhpcy50b1N0cmluZygpKTsKKyAgcmV0dXJuIChieXRlKW51bTsKKyAgfQorCisgLyoqCisgICogQ29tcGFyZXMgdGhpcyA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aXRoIHRoZSB2YWx1ZSBvZiB0aGUgcGFyYW1ldGVyLgorICAqIDxwPgorICAqIElmIHRoZSBwYXJhbWV0ZXIgaXMgPGNvZGU+bnVsbDwvY29kZT4sIG9yIGlzIG5vdCBhbiBpbnN0YW5jZSBvZiB0aGUKKyAgKiA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB0eXBlLCBhbiBleGNlcHRpb24gaXMgdGhyb3duLgorICAqIE90aGVyd2lzZSwgdGhlIHBhcmFtZXRlciBpcyBjYXN0IHRvIHR5cGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4KKyAgKiBhbmQgdGhlIHJlc3VsdCBvZiB0aGUge0BsaW5rICNjb21wYXJlVG8oQmlnRGVjaW1hbCl9IG1ldGhvZCwKKyAgKiB1c2luZyB0aGUgY2FzdCBwYXJhbWV0ZXIsIGlzIHJldHVybmVkLgorICAqIDxwPgorICAqIFRoZSB7QGxpbmsgI2NvbXBhcmVUbyhCaWdEZWNpbWFsLCBNYXRoQ29udGV4dCl9IG1ldGhvZCBzaG91bGQgYmUKKyAgKiB1c2VkIHdoZW4gYSA8Y29kZT5NYXRoQ29udGV4dDwvY29kZT4gaXMgbmVlZGVkIGZvciB0aGUgY29tcGFyaXNvbi4KKyAgKgorICAqIEBwYXJhbSAgcmhzIFRoZSA8Y29kZT5PYmplY3Q8L2NvZGU+IGZvciB0aGUgcmlnaHQgaGFuZCBzaWRlIG9mCisgICogICAgICAgICAgICAgdGhlIGNvbXBhcmlzb24uCisgICogQHJldHVybiAgICAgQW4gPGNvZGU+aW50PC9jb2RlPiB3aG9zZSB2YWx1ZSBpcyAtMSwgMCwgb3IgMSBhcworICAqICAgICAgICAgICAgIDxjb2RlPnRoaXM8L2NvZGU+IGlzIG51bWVyaWNhbGx5IGxlc3MgdGhhbiwgZXF1YWwgdG8sCisgICogICAgICAgICAgICAgb3IgZ3JlYXRlciB0aGFuIDxjb2RlPnJoczwvY29kZT4uCisgICogQHRocm93cyBDbGFzc0Nhc3RFeGNlcHRpb24gaWYgPGNvZGU+cmhzPC9jb2RlPiBjYW5ub3QgYmUgY2FzdCB0bworICAqICAgICAgICAgICAgICAgICBhIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IG9iamVjdC4KKyAgKiBAc2VlICAgICNjb21wYXJlVG8oQmlnRGVjaW1hbCkKKyAgKiBAc3RhYmxlIElDVSAyLjAKKyAgKi8KKyAKKyBwdWJsaWMgaW50IGNvbXBhcmVUbyhqYXZhLmxhbmcuT2JqZWN0IHJoc29iail7CisgIC8vIHRoZSBjYXN0IGluIHRoZSBuZXh0IGxpbmUgd2lsbCByYWlzZSBDbGFzc0Nhc3RFeGNlcHRpb24gaWYgbmVjZXNzYXJ5CisgIHJldHVybiBjb21wYXJlVG8oKGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbClyaHNvYmoscGxhaW5NQyk7CisgIH0KKworIC8qKgorICAqIENvbnZlcnRzIHRoaXMgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gdG8gYSA8Y29kZT5kb3VibGU8L2NvZGU+LgorICAqIElmIHRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBpcyBvdXQgb2YgdGhlIHBvc3NpYmxlIHJhbmdlIGZvciBhCisgICogPGNvZGU+ZG91YmxlPC9jb2RlPiAoNjQtYml0IHNpZ25lZCBmbG9hdGluZyBwb2ludCkgcmVzdWx0IHRoZW4gYW4KKyAgKiA8Y29kZT5Bcml0aG1ldGljRXhjZXB0aW9uPC9jb2RlPiBpcyB0aHJvd24uCisgICogPHA+CisgICogVGhlIGRvdWJsZSBwcm9kdWNlZCBpcyBpZGVudGljYWwgdG8gcmVzdWx0IG9mIGV4cHJlc3NpbmcgdGhlCisgICogPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gYXMgYSA8Y29kZT5TdHJpbmc8L2NvZGU+IGFuZCB0aGVuCisgICogY29udmVydGluZyBpdCB1c2luZyB0aGUgPGNvZGU+RG91YmxlKFN0cmluZyk8L2NvZGU+IGNvbnN0cnVjdG9yOworICAqIHRoaXMgY2FuIHJlc3VsdCBpbiB2YWx1ZXMgb2YgPGNvZGU+RG91YmxlLk5FR0FUSVZFX0lORklOSVRZPC9jb2RlPgorICAqIG9yIDxjb2RlPkRvdWJsZS5QT1NJVElWRV9JTkZJTklUWTwvY29kZT4uCisgICoKKyAgKiBAcmV0dXJuIEEgPGNvZGU+ZG91YmxlPC9jb2RlPiBjb3JyZXNwb25kaW5nIHRvIDxjb2RlPnRoaXM8L2NvZGU+LgorICAqIEBzdGFibGUgSUNVIDIuMAorICAqLworIAorIHB1YmxpYyBkb3VibGUgZG91YmxlVmFsdWUoKXsKKyAgLy8gV2UgZ28gdmlhIGEgU3RyaW5nIFthcyBkb2VzIEJpZ0RlY2ltYWwgaW4gSkRLIDEuMl0KKyAgLy8gTmV4dCBsaW5lIGNvdWxkIHBvc3NpYmx5IHJhaXNlIE51bWJlckZvcm1hdEV4Y2VwdGlvbgorICByZXR1cm4gamF2YS5sYW5nLkRvdWJsZS52YWx1ZU9mKHRoaXMudG9TdHJpbmcoKSkuZG91YmxlVmFsdWUoKTsKKyAgfQorCisgLyoqCisgICogQ29tcGFyZXMgdGhpcyA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aXRoIDxjb2RlPnJoczwvY29kZT4gZm9yCisgICogZXF1YWxpdHkuCisgICogPHA+CisgICogSWYgdGhlIHBhcmFtZXRlciBpcyA8Y29kZT5udWxsPC9jb2RlPiwgb3IgaXMgbm90IGFuIGluc3RhbmNlIG9mIHRoZQorICAqIEJpZ0RlY2ltYWwgdHlwZSwgb3IgaXMgbm90IGV4YWN0bHkgZXF1YWwgdG8gdGhlIGN1cnJlbnQKKyAgKiA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBvYmplY3QsIHRoZW4gPGk+ZmFsc2U8L2k+IGlzIHJldHVybmVkLgorICAqIE90aGVyd2lzZSwgPGk+dHJ1ZTwvaT4gaXMgcmV0dXJuZWQuCisgICogPHA+CisgICogIkV4YWN0bHkgZXF1YWwiLCBoZXJlLCBtZWFucyB0aGF0IHRoZSA8Y29kZT5TdHJpbmc8L2NvZGU+CisgICogcmVwcmVzZW50YXRpb25zIG9mIHRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBudW1iZXJzIGFyZQorICAqIGlkZW50aWNhbCAodGhleSBoYXZlIHRoZSBzYW1lIGNoYXJhY3RlcnMgaW4gdGhlIHNhbWUgc2VxdWVuY2UpLgorICAqIDxwPgorICAqIFRoZSB7QGxpbmsgI2NvbXBhcmVUbyhCaWdEZWNpbWFsLCBNYXRoQ29udGV4dCl9IG1ldGhvZCBzaG91bGQgYmUKKyAgKiB1c2VkIGZvciBtb3JlIGdlbmVyYWwgY29tcGFyaXNvbnMuCisgICogQHBhcmFtICByaHMgVGhlIDxjb2RlPk9iamVjdDwvY29kZT4gZm9yIHRoZSByaWdodCBoYW5kIHNpZGUgb2YKKyAgKiAgICAgICAgICAgICB0aGUgY29tcGFyaXNvbi4KKyAgKiBAcmV0dXJuICAgICBBIDxjb2RlPmJvb2xlYW48L2NvZGU+IHdob3NlIHZhbHVlIDxpPnRydWU8L2k+IGlmIGFuZAorICAqICAgICAgICAgICAgIG9ubHkgaWYgdGhlIG9wZXJhbmRzIGhhdmUgaWRlbnRpY2FsIHN0cmluZyByZXByZXNlbnRhdGlvbnMuCisgICogQHRocm93cyBDbGFzc0Nhc3RFeGNlcHRpb24gaWYgPGNvZGU+cmhzPC9jb2RlPiBjYW5ub3QgYmUgY2FzdCB0bworICAqICAgICAgICAgICAgICAgICBhIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IG9iamVjdC4KKyAgKiBAc3RhYmxlIElDVSAyLjAKKyAgKiBAc2VlICAgICNjb21wYXJlVG8oT2JqZWN0KQorICAqIEBzZWUgICAgI2NvbXBhcmVUbyhCaWdEZWNpbWFsKQorICAqIEBzZWUgICAgI2NvbXBhcmVUbyhCaWdEZWNpbWFsLCBNYXRoQ29udGV4dCkKKyAgKi8KKyAKKyBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoamF2YS5sYW5nLk9iamVjdCBvYmopeworICBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgcmhzOworICBpbnQgaT0wOworICBjaGFyIGxjYVtdPW51bGw7CisgIGNoYXIgcmNhW109bnVsbDsKKyAgLy8gV2UgYXJlIGVxdWFsIGlmZiB0b1N0cmluZyBvZiBib3RoIGFyZSBleGFjdGx5IHRoZSBzYW1lCisgIGlmIChvYmo9PW51bGwpIAorICAgcmV0dXJuIGZhbHNlOyAvLyBub3QgZXF1YWwKKyAgaWYgKCghKCgob2JqIGluc3RhbmNlb2YgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKSkpKSkgCisgICByZXR1cm4gZmFsc2U7IC8vIG5vdCBhIGRlY2ltYWwKKyAgcmhzPShjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwpb2JqOyAvLyBjYXN0OyB3ZSBrbm93IGl0IHdpbGwgd29yaworICBpZiAodGhpcy5pbmQhPXJocy5pbmQpIAorICAgcmV0dXJuIGZhbHNlOyAvLyBkaWZmZXJlbnQgc2lnbnMgbmV2ZXIgbWF0Y2gKKyAgaWYgKCgodGhpcy5tYW50Lmxlbmd0aD09cmhzLm1hbnQubGVuZ3RoKSYodGhpcy5leHA9PXJocy5leHApKSYodGhpcy5mb3JtPT1yaHMuZm9ybSkpIAorICAgCisgICB7IC8vIG1hbnRpc3NhcyBzYXkgYWxsCisgICAgLy8gaGVyZSB3aXRoIGVxdWFsLWxlbmd0aCBieXRlIGFycmF5cyB0byBjb21wYXJlCisgICAge2ludCAkOD10aGlzLm1hbnQubGVuZ3RoO2k9MDtpOmZvcig7JDg+MDskOC0tLGkrKyl7CisgICAgIGlmICh0aGlzLm1hbnRbaV0hPXJocy5tYW50W2ldKSAKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgfQorICAgIH0vKmkqLworICAgfQorICBlbHNlIAorICAgeyAvLyBuZWVkIHByb3BlciBsYXlvdXQKKyAgICBsY2E9dGhpcy5sYXlvdXQoKTsgLy8gbGF5b3V0IHRvIGNoYXJhY3RlciBhcnJheQorICAgIHJjYT1yaHMubGF5b3V0KCk7CisgICAgaWYgKGxjYS5sZW5ndGghPXJjYS5sZW5ndGgpIAorICAgICByZXR1cm4gZmFsc2U7IC8vIG1pc21hdGNoCisgICAgLy8gaGVyZSB3aXRoIGVxdWFsLWxlbmd0aCBjaGFyYWN0ZXIgYXJyYXlzIHRvIGNvbXBhcmUKKyAgICB7aW50ICQ5PWxjYS5sZW5ndGg7aT0wO2k6Zm9yKDskOT4wOyQ5LS0saSsrKXsKKyAgICAgaWYgKGxjYVtpXSE9cmNhW2ldKSAKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgfQorICAgIH0vKmkqLworICAgfQorICByZXR1cm4gdHJ1ZTsgLy8gYXJyYXlzIGhhdmUgaWRlbnRpY2FsIGNvbnRlbnQKKyAgfQorCisgLyoqCisgICogQ29udmVydHMgdGhpcyA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB0byBhIDxjb2RlPmZsb2F0PC9jb2RlPi4KKyAgKiBJZiB0aGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gaXMgb3V0IG9mIHRoZSBwb3NzaWJsZSByYW5nZSBmb3IgYQorICAqIDxjb2RlPmZsb2F0PC9jb2RlPiAoMzItYml0IHNpZ25lZCBmbG9hdGluZyBwb2ludCkgcmVzdWx0IHRoZW4gYW4KKyAgKiA8Y29kZT5Bcml0aG1ldGljRXhjZXB0aW9uPC9jb2RlPiBpcyB0aHJvd24uCisgICogPHA+CisgICogVGhlIGZsb2F0IHByb2R1Y2VkIGlzIGlkZW50aWNhbCB0byByZXN1bHQgb2YgZXhwcmVzc2luZyB0aGUKKyAgKiA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBhcyBhIDxjb2RlPlN0cmluZzwvY29kZT4gYW5kIHRoZW4KKyAgKiBjb252ZXJ0aW5nIGl0IHVzaW5nIHRoZSA8Y29kZT5GbG9hdChTdHJpbmcpPC9jb2RlPiBjb25zdHJ1Y3RvcjsKKyAgKiB0aGlzIGNhbiByZXN1bHQgaW4gdmFsdWVzIG9mIDxjb2RlPkZsb2F0Lk5FR0FUSVZFX0lORklOSVRZPC9jb2RlPgorICAqIG9yIDxjb2RlPkZsb2F0LlBPU0lUSVZFX0lORklOSVRZPC9jb2RlPi4KKyAgKgorICAqIEByZXR1cm4gQSA8Y29kZT5mbG9hdDwvY29kZT4gY29ycmVzcG9uZGluZyB0byA8Y29kZT50aGlzPC9jb2RlPi4KKyAgKiBAc3RhYmxlIElDVSAyLjAKKyAgKi8KKyAKKyBwdWJsaWMgZmxvYXQgZmxvYXRWYWx1ZSgpeworICByZXR1cm4gamF2YS5sYW5nLkZsb2F0LnZhbHVlT2YodGhpcy50b1N0cmluZygpKS5mbG9hdFZhbHVlKCk7CisgIH0KKworIC8qKgorICAqIFJldHVybnMgdGhlIDxjb2RlPlN0cmluZzwvY29kZT4gcmVwcmVzZW50YXRpb24gb2YgdGhpcworICAqIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+LCBtb2RpZmllZCBieSBsYXlvdXQgcGFyYW1ldGVycy4KKyAgKiA8cD4KKyAgKiA8aT5UaGlzIG1ldGhvZCBpcyBwcm92aWRlZCBhcyBhIHByaW1pdGl2ZSBmb3IgdXNlIGJ5IG1vcmUKKyAgKiBzb3BoaXN0aWNhdGVkIGNsYXNzZXMsIHN1Y2ggYXMgPGNvZGU+RGVjaW1hbEZvcm1hdDwvY29kZT4sIHRoYXQKKyAgKiBjYW4gYXBwbHkgbG9jYWxlLXNlbnNpdGl2ZSBlZGl0aW5nIG9mIHRoZSByZXN1bHQuICBUaGUgbGV2ZWwgb2YKKyAgKiBmb3JtYXR0aW5nIHRoYXQgaXQgcHJvdmlkZXMgaXMgYSBuZWNlc3NhcnkgcGFydCBvZiB0aGUgQmlnRGVjaW1hbAorICAqIGNsYXNzIGFzIGl0IGlzIHNlbnNpdGl2ZSB0byBhbmQgbXVzdCBmb2xsb3cgdGhlIGNhbGN1bGF0aW9uIGFuZAorICAqIHJvdW5kaW5nIHJ1bGVzIGZvciBCaWdEZWNpbWFsIGFyaXRobWV0aWMuCisgICogSG93ZXZlciwgaWYgdGhlIGZ1bmN0aW9uIGlzIHByb3ZpZGVkIGVsc2V3aGVyZSwgaXQgbWF5IGJlIHJlbW92ZWQKKyAgKiBmcm9tIHRoaXMgY2xhc3MuIDwvaT4KKyAgKiA8cD4KKyAgKiBUaGUgcGFyYW1ldGVycywgZm9yIGJvdGggZm9ybXMgb2YgdGhlIDxjb2RlPmZvcm1hdDwvY29kZT4gbWV0aG9kCisgICogYXJlIGFsbCBvZiB0eXBlIDxjb2RlPmludDwvY29kZT4uCisgICogQSB2YWx1ZSBvZiAtMSBmb3IgYW55IHBhcmFtZXRlciBpbmRpY2F0ZXMgdGhhdCB0aGUgZGVmYXVsdCBhY3Rpb24KKyAgKiBvciB2YWx1ZSBmb3IgdGhhdCBwYXJhbWV0ZXIgc2hvdWxkIGJlIHVzZWQuCisgICogPHA+CisgICogVGhlIHBhcmFtZXRlcnMsIDxjb2RlPmJlZm9yZTwvY29kZT4gYW5kIDxjb2RlPmFmdGVyPC9jb2RlPiwKKyAgKiBzcGVjaWZ5IHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB0byBiZSB1c2VkIGZvciB0aGUgaW50ZWdlciBwYXJ0CisgICogYW5kIGRlY2ltYWwgcGFydCBvZiB0aGUgcmVzdWx0IHJlc3BlY3RpdmVseS4gIEV4cG9uZW50aWFsIG5vdGF0aW9uCisgICogaXMgbm90IHVzZWQuIElmIGVpdGhlciBwYXJhbWV0ZXIgaXMgLTEgKHdoaWNoIGluZGljYXRlcyB0aGUgZGVmYXVsdAorICAqIGFjdGlvbiksIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB1c2VkIHdpbGwgYmUgZXhhY3RseSBhcyBtYW55IGFzCisgICogYXJlIG5lZWRlZCBmb3IgdGhhdCBwYXJ0LgorICAqIDxwPgorICAqIDxjb2RlPmJlZm9yZTwvY29kZT4gbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlcjsgaWYgaXQgaXMgbGFyZ2VyIHRoYW4KKyAgKiBpcyBuZWVkZWQgdG8gY29udGFpbiB0aGUgaW50ZWdlciBwYXJ0LCB0aGF0IHBhcnQgaXMgcGFkZGVkIG9uIHRoZQorICAqIGxlZnQgd2l0aCBibGFua3MgdG8gdGhlIHJlcXVlc3RlZCBsZW5ndGguIElmIDxjb2RlPmJlZm9yZTwvY29kZT4gaXMKKyAgKiBub3QgbGFyZ2UgZW5vdWdoIHRvIGNvbnRhaW4gdGhlIGludGVnZXIgcGFydCBvZiB0aGUgbnVtYmVyCisgICogKGluY2x1ZGluZyB0aGUgc2lnbiwgZm9yIG5lZ2F0aXZlIG51bWJlcnMpIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24uCisgICogPHA+CisgICogPGNvZGU+YWZ0ZXI8L2NvZGU+IG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyOyBpZiBpdCBpcyBub3QgdGhlCisgICogc2FtZSBzaXplIGFzIHRoZSBkZWNpbWFsIHBhcnQgb2YgdGhlIG51bWJlciwgdGhlIG51bWJlciB3aWxsIGJlCisgICogcm91bmRlZCAob3IgZXh0ZW5kZWQgd2l0aCB6ZXJvcykgdG8gZml0LiAgU3BlY2lmeWluZyAwIGZvcgorICAqIDxjb2RlPmFmdGVyPC9jb2RlPiB3aWxsIGNhdXNlIHRoZSBudW1iZXIgdG8gYmUgcm91bmRlZCB0byBhbgorICAqIGludGVnZXIgKHRoYXQgaXMsIGl0IHdpbGwgaGF2ZSBubyBkZWNpbWFsIHBhcnQgb3IgZGVjaW1hbCBwb2ludCkuCisgICogVGhlIHJvdW5kaW5nIG1ldGhvZCB3aWxsIGJlIHRoZSBkZWZhdWx0LAorICAqIDxjb2RlPk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVA8L2NvZGU+LgorICAqIDxwPgorICAqIE90aGVyIHJvdW5kaW5nIG1ldGhvZHMsIGFuZCB0aGUgdXNlIG9mIGV4cG9uZW50aWFsIG5vdGF0aW9uLCBjYW4KKyAgKiBiZSBzZWxlY3RlZCBieSB1c2luZyB7QGxpbmsgI2Zvcm1hdChpbnQsaW50LGludCxpbnQsaW50LGludCl9LgorICAqIFVzaW5nIHRoZSB0d28tcGFyYW1ldGVyIGZvcm0gb2YgdGhlIG1ldGhvZCBoYXMgZXhhY3RseSB0aGUgc2FtZQorICAqIGVmZmVjdCBhcyB1c2luZyB0aGUgc2l4LXBhcmFtZXRlciBmb3JtIHdpdGggdGhlIGZpbmFsIGZvdXIKKyAgKiBwYXJhbWV0ZXJzIGFsbCBiZWluZyAtMS4KKyAgKgorICAqIEBwYXJhbSAgYmVmb3JlIFRoZSA8Y29kZT5pbnQ8L2NvZGU+IHNwZWNpZnlpbmcgdGhlIG51bWJlciBvZiBwbGFjZXMKKyAgKiAgICAgICAgICAgICAgICBiZWZvcmUgdGhlIGRlY2ltYWwgcG9pbnQuICBVc2UgLTEgZm9yICdhcyBtYW55IGFzCisgICogICAgICAgICAgICAgICAgYXJlIG5lZWRlZCcuCisgICogQHBhcmFtICBhZnRlciAgVGhlIDxjb2RlPmludDwvY29kZT4gc3BlY2lmeWluZyB0aGUgbnVtYmVyIG9mIHBsYWNlcworICAqICAgICAgICAgICAgICAgIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50LiAgVXNlIC0xIGZvciAnYXMgbWFueSBhcyBhcmUKKyAgKiAgICAgICAgICAgICAgICBuZWVkZWQnLgorICAqIEByZXR1cm4gICAgICAgIEEgPGNvZGU+U3RyaW5nPC9jb2RlPiByZXByZXNlbnRpbmcgdGhpcworICAqICAgICAgICAgICAgICAgIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+LCBsYWlkIG91dCBhY2NvcmRpbmcgdG8gdGhlCisgICogICAgICAgICAgICAgICAgc3BlY2lmaWVkIHBhcmFtZXRlcnMKKyAgKiBAdGhyb3dzIEFyaXRobWV0aWNFeGNlcHRpb24gaWYgdGhlIG51bWJlciBjYW5ub3QgYmUgbGFpZCBvdXQgYXMKKyAgKiAgICAgICAgICAgICAgICByZXF1ZXN0ZWQuCisgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgYSBwYXJhbWV0ZXIgaXMgb3V0IG9mIHJhbmdlLgorICAqIEBzdGFibGUgSUNVIDIuMAorICAqIEBzZWUgICAgI3RvU3RyaW5nCisgICogQHNlZSAgICAjdG9DaGFyQXJyYXkKKyAgKi8KKyAKKyBwdWJsaWMgamF2YS5sYW5nLlN0cmluZyBmb3JtYXQoaW50IGJlZm9yZSxpbnQgYWZ0ZXIpeworICByZXR1cm4gZm9ybWF0KGJlZm9yZSxhZnRlciwtMSwtMSxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlNDSUVOVElGSUMsUk9VTkRfSEFMRl9VUCk7CisgIH0KKworIC8qKgorICAqIFJldHVybnMgdGhlIDxjb2RlPlN0cmluZzwvY29kZT4gcmVwcmVzZW50YXRpb24gb2YgdGhpcworICAqIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+LCBtb2RpZmllZCBieSBsYXlvdXQgcGFyYW1ldGVycyBhbmQgYWxsb3dpbmcKKyAgKiBleHBvbmVudGlhbCBub3RhdGlvbi4KKyAgKiA8cD4KKyAgKiA8aT5UaGlzIG1ldGhvZCBpcyBwcm92aWRlZCBhcyBhIHByaW1pdGl2ZSBmb3IgdXNlIGJ5IG1vcmUKKyAgKiBzb3BoaXN0aWNhdGVkIGNsYXNzZXMsIHN1Y2ggYXMgPGNvZGU+RGVjaW1hbEZvcm1hdDwvY29kZT4sIHRoYXQKKyAgKiBjYW4gYXBwbHkgbG9jYWxlLXNlbnNpdGl2ZSBlZGl0aW5nIG9mIHRoZSByZXN1bHQuICBUaGUgbGV2ZWwgb2YKKyAgKiBmb3JtYXR0aW5nIHRoYXQgaXQgcHJvdmlkZXMgaXMgYSBuZWNlc3NhcnkgcGFydCBvZiB0aGUgQmlnRGVjaW1hbAorICAqIGNsYXNzIGFzIGl0IGlzIHNlbnNpdGl2ZSB0byBhbmQgbXVzdCBmb2xsb3cgdGhlIGNhbGN1bGF0aW9uIGFuZAorICAqIHJvdW5kaW5nIHJ1bGVzIGZvciBCaWdEZWNpbWFsIGFyaXRobWV0aWMuCisgICogSG93ZXZlciwgaWYgdGhlIGZ1bmN0aW9uIGlzIHByb3ZpZGVkIGVsc2V3aGVyZSwgaXQgbWF5IGJlIHJlbW92ZWQKKyAgKiBmcm9tIHRoaXMgY2xhc3MuIDwvaT4KKyAgKiA8cD4KKyAgKiBUaGUgcGFyYW1ldGVycyBhcmUgYWxsIG9mIHR5cGUgPGNvZGU+aW50PC9jb2RlPi4KKyAgKiBBIHZhbHVlIG9mIC0xIGZvciBhbnkgcGFyYW1ldGVyIGluZGljYXRlcyB0aGF0IHRoZSBkZWZhdWx0IGFjdGlvbgorICAqIG9yIHZhbHVlIGZvciB0aGF0IHBhcmFtZXRlciBzaG91bGQgYmUgdXNlZC4KKyAgKiA8cD4KKyAgKiBUaGUgZmlyc3QgdHdvIHBhcmFtZXRlcnMgKDxjb2RlPmJlZm9yZTwvY29kZT4gYW5kCisgICogPGNvZGU+YWZ0ZXI8L2NvZGU+KSBzcGVjaWZ5IHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB0byBiZSB1c2VkIGZvcgorICAqIHRoZSBpbnRlZ2VyIHBhcnQgYW5kIGRlY2ltYWwgcGFydCBvZiB0aGUgcmVzdWx0IHJlc3BlY3RpdmVseSwgYXMKKyAgKiBkZWZpbmVkIGZvciB7QGxpbmsgI2Zvcm1hdChpbnQsaW50KX0uCisgICogSWYgZWl0aGVyIG9mIHRoZXNlIGlzIC0xICh3aGljaCBpbmRpY2F0ZXMgdGhlIGRlZmF1bHQgYWN0aW9uKSwgdGhlCisgICogbnVtYmVyIG9mIGNoYXJhY3RlcnMgdXNlZCB3aWxsIGJlIGV4YWN0bHkgYXMgbWFueSBhcyBhcmUgbmVlZGVkIGZvcgorICAqIHRoYXQgcGFydC4KKyAgKiA8cD4KKyAgKiBUaGUgcmVtYWluaW5nIHBhcmFtZXRlcnMgY29udHJvbCB0aGUgdXNlIG9mIGV4cG9uZW50aWFsIG5vdGF0aW9uCisgICogYW5kIHJvdW5kaW5nLiAgVGhyZWUgKDxjb2RlPmV4cGxhY2VzPC9jb2RlPiwgPGNvZGU+ZXhkaWdpdHM8L2NvZGU+LAorICAqIGFuZCA8Y29kZT5leGZvcm08L2NvZGU+KSBjb250cm9sIHRoZSBleHBvbmVudCBwYXJ0IG9mIHRoZSByZXN1bHQuCisgICogQXMgYmVmb3JlLCB0aGUgZGVmYXVsdCBhY3Rpb24gZm9yIGFueSBvZiB0aGVzZSBwYXJhbWV0ZXJzIG1heSBiZQorICAqIHNlbGVjdGVkIGJ5IHVzaW5nIHRoZSB2YWx1ZSAtMS4KKyAgKiA8cD4KKyAgKiA8Y29kZT5leHBsYWNlczwvY29kZT4gbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlcjsgaXQgc2V0cyB0aGUgbnVtYmVyCisgICogb2YgcGxhY2VzIChkaWdpdHMgYWZ0ZXIgdGhlIHNpZ24gb2YgdGhlIGV4cG9uZW50KSB0byBiZSB1c2VkIGZvcgorICAqIGFueSBleHBvbmVudCBwYXJ0LCB0aGUgZGVmYXVsdCAod2hlbiA8Y29kZT5leHBsYWNlczwvY29kZT4gaXMgLTEpCisgICogYmVpbmcgdG8gdXNlIGFzIG1hbnkgYXMgYXJlIG5lZWRlZC4KKyAgKiBJZiA8Y29kZT5leHBsYWNlczwvY29kZT4gaXMgbm90IC0xLCBzcGFjZSBpcyBhbHdheXMgcmVzZXJ2ZWQgZm9yCisgICogYW4gZXhwb25lbnQ7IGlmIG9uZSBpcyBub3QgbmVlZGVkIChmb3IgZXhhbXBsZSwgaWYgdGhlIGV4cG9uZW50CisgICogd2lsbCBiZSAwKSB0aGVuIDxjb2RlPmV4cGxhY2VzPC9jb2RlPisyIGJsYW5rcyBhcmUgYXBwZW5kZWQgdG8gdGhlCisgICogcmVzdWx0LgorICAqIDwhLS0gKFRoaXMgcHJlc2VydmVzIHZlcnRpY2FsIGFsaWdubWVudCBvZiBzaW1pbGFybHkgZm9ybWF0dGVkCisgICogICAgICAgbnVtYmVycyBpbiBhIG1vbm9zcGFjZSBmb250LikgLS0+CisgICogSWYgPGNvZGU+ZXhwbGFjZXM8L2NvZGU+IGlzIG5vdCAtMSBhbmQgaXMgbm90IGxhcmdlIGVub3VnaCB0bworICAqIGNvbnRhaW4gdGhlIGV4cG9uZW50LCBhbiBleGNlcHRpb24gaXMgdGhyb3duLgorICAqIDxwPgorICAqIDxjb2RlPmV4ZGlnaXRzPC9jb2RlPiBzZXRzIHRoZSB0cmlnZ2VyIHBvaW50IGZvciB1c2Ugb2YgZXhwb25lbnRpYWwKKyAgKiBub3RhdGlvbi4gSWYsIGJlZm9yZSBhbnkgcm91bmRpbmcsIHRoZSBudW1iZXIgb2YgcGxhY2VzIG5lZWRlZAorICAqIGJlZm9yZSB0aGUgZGVjaW1hbCBwb2ludCBleGNlZWRzIDxjb2RlPmV4ZGlnaXRzPC9jb2RlPiwgb3IgaWYgdGhlCisgICogYWJzb2x1dGUgdmFsdWUgb2YgdGhlIHJlc3VsdCBpcyBsZXNzIHRoYW4gPGNvZGU+MC4wMDAwMDE8L2NvZGU+LAorICAqIHRoZW4gZXhwb25lbnRpYWwgZm9ybSB3aWxsIGJlIHVzZWQsIHByb3ZpZGVkIHRoYXQKKyAgKiA8Y29kZT5leGRpZ2l0czwvY29kZT4gd2FzIHNwZWNpZmllZC4KKyAgKiBXaGVuIDxjb2RlPmV4ZGlnaXRzPC9jb2RlPiBpcyAtMSwgZXhwb25lbnRpYWwgbm90YXRpb24gd2lsbCBuZXZlcgorICAqIGJlIHVzZWQuIElmIDAgaXMgc3BlY2lmaWVkIGZvciA8Y29kZT5leGRpZ2l0czwvY29kZT4sIGV4cG9uZW50aWFsCisgICogbm90YXRpb24gaXMgYWx3YXlzIHVzZWQgdW5sZXNzIHRoZSBleHBvbmVudCB3b3VsZCBiZSAwLgorICAqIDxwPgorICAqIDxjb2RlPmV4Zm9ybTwvY29kZT4gc2V0cyB0aGUgZm9ybSBmb3IgZXhwb25lbnRpYWwgbm90YXRpb24gKGlmCisgICogbmVlZGVkKS4KKyAgKiBJdCAgbWF5IGJlIGVpdGhlciB7QGxpbmsgTWF0aENvbnRleHQjU0NJRU5USUZJQ30gb3IKKyAgKiB7QGxpbmsgTWF0aENvbnRleHQjRU5HSU5FRVJJTkd9LgorICAqIElmIHRoZSBsYXR0ZXIsIGVuZ2luZWVyaW5nLCBmb3JtIGlzIHJlcXVlc3RlZCwgdXAgdG8gdGhyZWUgZGlnaXRzCisgICogKHBsdXMgc2lnbiwgaWYgbmVnYXRpdmUpIG1heSBiZSBuZWVkZWQgZm9yIHRoZSBpbnRlZ2VyIHBhcnQgb2YgdGhlCisgICogcmVzdWx0ICg8Y29kZT5iZWZvcmU8L2NvZGU+KS4gIE90aGVyd2lzZSwgb25seSBvbmUgZGlnaXQgKHBsdXMKKyAgKiBzaWduLCBpZiBuZWdhdGl2ZSkgaXMgbmVlZGVkLgorICAqIDxwPgorICAqIEZpbmFsbHksIHRoZSBzaXh0aCBhcmd1bWVudCwgPGNvZGU+ZXhyb3VuZDwvY29kZT4sIHNlbGVjdHMgdGhlCisgICogcm91bmRpbmcgYWxnb3JpdGhtIHRvIGJlIHVzZWQsIGFuZCBtdXN0IGJlIG9uZSBvZiB0aGUgdmFsdWVzCisgICogaW5kaWNhdGVkIGJ5IGEgcHVibGljIGNvbnN0YW50IGluIHRoZSB7QGxpbmsgTWF0aENvbnRleHR9IGNsYXNzCisgICogd2hvc2UgbmFtZSBzdGFydHMgd2l0aCA8Y29kZT5ST1VORF88L2NvZGU+LgorICAqIFRoZSBkZWZhdWx0ICg8Y29kZT5ST1VORF9IQUxGX1VQPC9jb2RlPikgbWF5IGFsc28gYmUgc2VsZWN0ZWQgYnkKKyAgKiB1c2luZyB0aGUgdmFsdWUgLTEsIGFzIGJlZm9yZS4KKyAgKiA8cD4KKyAgKiBUaGUgc3BlY2lhbCB2YWx1ZSA8Y29kZT5NYXRoQ29udGV4dC5ST1VORF9VTk5FQ0VTU0FSWTwvY29kZT4gbWF5IGJlCisgICogdXNlZCB0byBkZXRlY3Qgd2hldGhlciBub24temVybyBkaWdpdHMgYXJlIGRpc2NhcmRlZCAtLSBpZgorICAqIDxjb2RlPmV4cm91bmQ8L2NvZGU+IGhhcyB0aGlzIHZhbHVlIHRoYW4gaWYgbm9uLXplcm8gZGlnaXRzIHdvdWxkCisgICogYmUgZGlzY2FyZGVkIChyb3VuZGVkKSBkdXJpbmcgZm9ybWF0dGluZyB0aGVuIGFuCisgICogPGNvZGU+QXJpdGhtZXRpY0V4Y2VwdGlvbjwvY29kZT4gaXMgdGhyb3duLgorICAqCisgICogQHBhcmFtICBiZWZvcmUgICBUaGUgPGNvZGU+aW50PC9jb2RlPiBzcGVjaWZ5aW5nIHRoZSBudW1iZXIgb2YgcGxhY2VzCisgICogICAgICAgICAgICAgICAgICBiZWZvcmUgdGhlIGRlY2ltYWwgcG9pbnQuCisgICogICAgICAgICAgICAgICAgICBVc2UgLTEgZm9yICdhcyBtYW55IGFzIGFyZSBuZWVkZWQnLgorICAqIEBwYXJhbSAgYWZ0ZXIgICAgVGhlIDxjb2RlPmludDwvY29kZT4gc3BlY2lmeWluZyB0aGUgbnVtYmVyIG9mIHBsYWNlcworICAqICAgICAgICAgICAgICAgICAgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQuCisgICogICAgICAgICAgICAgICAgICBVc2UgLTEgZm9yICdhcyBtYW55IGFzIGFyZSBuZWVkZWQnLgorICAqIEBwYXJhbSAgZXhwbGFjZXMgVGhlIDxjb2RlPmludDwvY29kZT4gc3BlY2lmeWluZyB0aGUgbnVtYmVyIG9mIHBsYWNlcworICAqICAgICAgICAgICAgICAgICAgdG8gYmUgdXNlZCBmb3IgYW55IGV4cG9uZW50LgorICAqICAgICAgICAgICAgICAgICAgVXNlIC0xIGZvciAnYXMgbWFueSBhcyBhcmUgbmVlZGVkJy4KKyAgKiBAcGFyYW0gIGV4ZGlnaXRzIFRoZSA8Y29kZT5pbnQ8L2NvZGU+IHNwZWNpZnlpbmcgdGhlIHRyaWdnZXIKKyAgKiAgICAgICAgICAgICAgICAgIChkaWdpdHMgYmVmb3JlIHRoZSBkZWNpbWFsIHBvaW50KSB3aGljaCBpZgorICAqICAgICAgICAgICAgICAgICAgZXhjZWVkZWQgY2F1c2VzIGV4cG9uZW50aWFsIG5vdGF0aW9uIHRvIGJlIHVzZWQuCisgICogICAgICAgICAgICAgICAgICBVc2UgMCB0byBmb3JjZSBleHBvbmVudGlhbCBub3RhdGlvbi4KKyAgKiAgICAgICAgICAgICAgICAgIFVzZSAtMSB0byBmb3JjZSBwbGFpbiBub3RhdGlvbiAobm8gZXhwb25lbnRpYWwKKyAgKiAgICAgICAgICAgICAgICAgIG5vdGF0aW9uKS4KKyAgKiBAcGFyYW0gIGV4Zm9ybSAgIFRoZSA8Y29kZT5pbnQ8L2NvZGU+IHNwZWNpZnlpbmcgdGhlIGZvcm0gb2YKKyAgKiAgICAgICAgICAgICAgICAgIGV4cG9uZW50aWFsIG5vdGF0aW9uIHRvIGJlIHVzZWQKKyAgKiAgICAgICAgICAgICAgICAgICh7QGxpbmsgTWF0aENvbnRleHQjU0NJRU5USUZJQ30gb3IKKyAgKiAgICAgICAgICAgICAgICAgIHtAbGluayBNYXRoQ29udGV4dCNFTkdJTkVFUklOR30pLgorICAqIEBwYXJhbSAgZXhyb3VuZCAgVGhlIDxjb2RlPmludDwvY29kZT4gc3BlY2lmeWluZyB0aGUgcm91bmRpbmcgbW9kZQorICAqICAgICAgICAgICAgICAgICAgdG8gdXNlLgorICAqICAgICAgICAgICAgICAgICAgVXNlIC0xIGZvciB0aGUgZGVmYXVsdCwge0BsaW5rIE1hdGhDb250ZXh0I1JPVU5EX0hBTEZfVVB9LgorICAqIEByZXR1cm4gICAgICAgICAgQSA8Y29kZT5TdHJpbmc8L2NvZGU+IHJlcHJlc2VudGluZyB0aGlzCisgICogICAgICAgICAgICAgICAgICA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiwgbGFpZCBvdXQgYWNjb3JkaW5nIHRvIHRoZQorICAqICAgICAgICAgICAgICAgICAgc3BlY2lmaWVkIHBhcmFtZXRlcnMKKyAgKiBAdGhyb3dzIEFyaXRobWV0aWNFeGNlcHRpb24gaWYgdGhlIG51bWJlciBjYW5ub3QgYmUgbGFpZCBvdXQgYXMKKyAgKiAgICAgICAgICAgICAgICAgIHJlcXVlc3RlZC4KKyAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiBhIHBhcmFtZXRlciBpcyBvdXQgb2YgcmFuZ2UuCisgICogQHNlZSAgICAjdG9TdHJpbmcKKyAgKiBAc2VlICAgICN0b0NoYXJBcnJheQorICAqIEBzdGFibGUgSUNVIDIuMAorICAqLworIAorIHB1YmxpYyBqYXZhLmxhbmcuU3RyaW5nIGZvcm1hdChpbnQgYmVmb3JlLGludCBhZnRlcixpbnQgZXhwbGFjZXMsaW50IGV4ZGlnaXRzLGludCBleGZvcm1pbnQsaW50IGV4cm91bmQpeworICBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgbnVtOworICBpbnQgbWFnPTA7CisgIGludCB0aGlzYWZ0ZXI9MDsKKyAgaW50IGxlYWQ9MDsKKyAgYnl0ZSBuZXdtYW50W109bnVsbDsKKyAgaW50IGNob3A9MDsKKyAgaW50IG5lZWQ9MDsKKyAgaW50IG9sZGV4cD0wOworICBjaGFyIGFbXTsKKyAgaW50IHA9MDsKKyAgY2hhciBuZXdhW109bnVsbDsKKyAgaW50IGk9MDsKKyAgaW50IHBsYWNlcz0wOworICAKKyAgCisgIC8qIENoZWNrIGFyZ3VtZW50cyAqLworICBpZiAoKGJlZm9yZTwoLTEpKXwoYmVmb3JlPT0wKSkgCisgICBiYWRhcmcoImZvcm1hdCIsMSxqYXZhLmxhbmcuU3RyaW5nLnZhbHVlT2YoYmVmb3JlKSk7CisgIGlmIChhZnRlcjwoLTEpKSAKKyAgIGJhZGFyZygiZm9ybWF0IiwyLGphdmEubGFuZy5TdHJpbmcudmFsdWVPZihhZnRlcikpOworICBpZiAoKGV4cGxhY2VzPCgtMSkpfChleHBsYWNlcz09MCkpIAorICAgYmFkYXJnKCJmb3JtYXQiLDMsamF2YS5sYW5nLlN0cmluZy52YWx1ZU9mKGV4cGxhY2VzKSk7CisgIGlmIChleGRpZ2l0czwoLTEpKSAKKyAgIGJhZGFyZygiZm9ybWF0Iiw0LGphdmEubGFuZy5TdHJpbmcudmFsdWVPZihleHBsYWNlcykpOworICB7LypzZWxlY3QqLworICBpZiAoZXhmb3JtaW50PT1jb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlNDSUVOVElGSUMpCisgICA7CisgIGVsc2UgaWYgKGV4Zm9ybWludD09Y29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5FTkdJTkVFUklORykKKyAgIDsKKyAgZWxzZSBpZiAoZXhmb3JtaW50PT0oLTEpKQorICAgZXhmb3JtaW50PWNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuU0NJRU5USUZJQzsKKyAgIC8vIG5vdGUgUExBSU4gaXNuJ3QgYWxsb3dlZAorICBlbHNleworICAgYmFkYXJnKCJmb3JtYXQiLDUsamF2YS5sYW5nLlN0cmluZy52YWx1ZU9mKGV4Zm9ybWludCkpOworICB9CisgIH0KKyAgLy8gY2hlY2tpbmcgdGhlIHJvdW5kaW5nIG1vZGUgaXMgZG9uZSBieSB0cnlpbmcgdG8gY29uc3RydWN0IGEKKyAgLy8gTWF0aENvbnRleHQgb2JqZWN0IHdpdGggdGhhdCBtb2RlOyBpdCB3aWxsIGZhaWwgaWYgYmFkCisgIGlmIChleHJvdW5kIT1ST1VORF9IQUxGX1VQKSAKKyAgIHt0cnl7IC8vIGlmIG5vbi1kZWZhdWx0Li4uCisgICAgaWYgKGV4cm91bmQ9PSgtMSkpIAorICAgICBleHJvdW5kPVJPVU5EX0hBTEZfVVA7CisgICAgZWxzZSAKKyAgICAgbmV3IGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQoOSxjb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlNDSUVOVElGSUMsZmFsc2UsZXhyb3VuZCk7CisgICB9CisgICBjYXRjaCAoamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiAkMTApeworICAgIGJhZGFyZygiZm9ybWF0Iiw2LGphdmEubGFuZy5TdHJpbmcudmFsdWVPZihleHJvdW5kKSk7CisgICB9fQorICAKKyAgbnVtPWNsb25lKHRoaXMpOyAvLyBtYWtlIHByaXZhdGUgY29weQorICAKKyAgLyogSGVyZToKKyAgICAgbnVtICAgICAgIGlzIEJpZ0RlY2ltYWwgdG8gZm9ybWF0CisgICAgIGJlZm9yZSAgICBpcyBwbGFjZXMgYmVmb3JlIHBvaW50IFs+MF0KKyAgICAgYWZ0ZXIgICAgIGlzIHBsYWNlcyBhZnRlciBwb2ludCAgWz49MF0KKyAgICAgZXhwbGFjZXMgIGlzIGV4cG9uZW50IHBsYWNlcyAgICAgWz4wXQorICAgICBleGRpZ2l0cyAgaXMgZXhwb25lbnQgZGlnaXRzICAgICBbPj0wXQorICAgICBleGZvcm1pbnQgaXMgZXhwb25lbnQgZm9ybSAgICAgICBbb25lIG9mIHR3b10KKyAgICAgZXhyb3VuZCAgIGlzIHJvdW5kaW5nIG1vZGUgICAgICAgW29uZSBvZiBlaWdodF0KKyAgICAgJ2JlZm9yZScgdGhyb3VnaCAnZXhkaWdpdHMnIGFyZSAtMSBpZiBub3Qgc3BlY2lmaWVkCisgICovCisgIAorICAvKiBkZXRlcm1pbmUgZm9ybSAqLworICB7c2V0Zm9ybTpkb3svKnNlbGVjdCovCisgIGlmIChleGRpZ2l0cz09KC0xKSkKKyAgIG51bS5mb3JtPShieXRlKWNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUExBSU47CisgIGVsc2UgaWYgKG51bS5pbmQ9PWlzemVybykKKyAgIG51bS5mb3JtPShieXRlKWNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUExBSU47CisgIGVsc2V7CisgICAvLyBkZXRlcm1pbmUgd2hldGhlciB0cmlnZ2VycworICAgbWFnPW51bS5leHArbnVtLm1hbnQubGVuZ3RoOworICAgaWYgKG1hZz5leGRpZ2l0cykgCisgICAgbnVtLmZvcm09KGJ5dGUpZXhmb3JtaW50OworICAgZWxzZSAKKyAgICBpZiAobWFnPCgtNSkpIAorICAgICBudW0uZm9ybT0oYnl0ZSlleGZvcm1pbnQ7CisgICAgZWxzZSAKKyAgICAgbnVtLmZvcm09KGJ5dGUpY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5QTEFJTjsKKyAgfQorICB9d2hpbGUoZmFsc2UpO30vKnNldGZvcm0qLworICAKKyAgLyogSWYgJ2FmdGVyJyB3YXMgc3BlY2lmaWVkIHRoZW4gd2UgbWF5IG5lZWQgdG8gYWRqdXN0IHRoZQorICAgICBtYW50aXNzYS4gIFRoaXMgaXMgYSBsaXR0bGUgdHJpY2t5LCBhcyB3ZSBtdXN0IGNvbmZvcm0gdG8gdGhlCisgICAgIHJ1bGVzIG9mIGV4cG9uZW50aWFsIGxheW91dCBpZiBuZWNlc3NhcnkgKGUuZy4sIHdlIGNhbm5vdCBlbmQgdXAKKyAgICAgd2l0aCAxMC4wIGlmIHNjaWVudGlmaWMpLiAqLworICBpZiAoYWZ0ZXI+PTApIAorICAge3NldGFmdGVyOmZvcig7Oyl7CisgICAgLy8gY2FsY3VsYXRlIHRoZSBjdXJyZW50IGFmdGVyLWxlbmd0aAorICAgIHsvKnNlbGVjdCovCisgICAgaWYgKG51bS5mb3JtPT1jb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlBMQUlOKQorICAgICB0aGlzYWZ0ZXI9KGludCktbnVtLmV4cDsgLy8gaGFzIGRlY2ltYWwgcGFydAorICAgIGVsc2UgaWYgKG51bS5mb3JtPT1jb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlNDSUVOVElGSUMpCisgICAgIHRoaXNhZnRlcj1udW0ubWFudC5sZW5ndGgtMTsKKyAgICBlbHNleyAvLyBlbmdpbmVlcmluZworICAgICBsZWFkPSgoKG51bS5leHArbnVtLm1hbnQubGVuZ3RoKS0xKSklMzsgLy8gZXhwb25lbnQgdG8gdXNlCisgICAgIGlmIChsZWFkPDApIAorICAgICAgbGVhZD0zK2xlYWQ7IC8vIG5lZ2F0aXZlIGV4cG9uZW50IGNhc2UKKyAgICAgbGVhZCsrOyAvLyBudW1iZXIgb2YgbGVhZGluZyBkaWdpdHMKKyAgICAgaWYgKGxlYWQ+PW51bS5tYW50Lmxlbmd0aCkgCisgICAgICB0aGlzYWZ0ZXI9MDsKKyAgICAgZWxzZSAKKyAgICAgIHRoaXNhZnRlcj1udW0ubWFudC5sZW5ndGgtbGVhZDsKKyAgICB9CisgICAgfQorICAgIGlmICh0aGlzYWZ0ZXI9PWFmdGVyKSAKKyAgICAgYnJlYWsgc2V0YWZ0ZXI7IC8vIHdlJ3JlIGluIGx1Y2sKKyAgICBpZiAodGhpc2FmdGVyPGFmdGVyKSAKKyAgICAgeyAvLyBuZWVkIGFkZGVkIHRyYWlsaW5nIHplcm9zCisgICAgICAvLyBbdGhpc2FmdGVyIGNhbiBiZSBuZWdhdGl2ZV0KKyAgICAgIG5ld21hbnQ9ZXh0ZW5kKG51bS5tYW50LChudW0ubWFudC5sZW5ndGgrYWZ0ZXIpLXRoaXNhZnRlcik7CisgICAgICBudW0ubWFudD1uZXdtYW50OworICAgICAgbnVtLmV4cD1udW0uZXhwLSgoYWZ0ZXItdGhpc2FmdGVyKSk7IC8vIGFkanVzdCBleHBvbmVudAorICAgICAgaWYgKG51bS5leHA8TWluRXhwKSAKKyAgICAgICB0aHJvdyBuZXcgamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24oIkV4cG9uZW50IE92ZXJmbG93OiIrIiAiK251bS5leHApOworICAgICAgYnJlYWsgc2V0YWZ0ZXI7CisgICAgIH0KKyAgICAvLyBXZSBoYXZlIHRvbyBtYW55IGRpZ2l0cyBhZnRlciB0aGUgZGVjaW1hbCBwb2ludDsgdGhpcyBjb3VsZAorICAgIC8vIGNhdXNlIGEgY2FycnksIHdoaWNoIGNvdWxkIGNoYW5nZSB0aGUgbWFudGlzc2EuLi4KKyAgICAvLyBXYXRjaCBvdXQgZm9yIGltcGxpZWQgbGVhZGluZyB6ZXJvcyBpbiBQTEFJTiBjYXNlCisgICAgY2hvcD10aGlzYWZ0ZXItYWZ0ZXI7IC8vIGRpZ2l0cyB0byBsb3AgW2lzID4wXQorICAgIGlmIChjaG9wPm51bS5tYW50Lmxlbmd0aCkgCisgICAgIHsgLy8gYWxsIGRpZ2l0cyBnbywgbm8gY2hhbmNlIG9mIGNhcnJ5CisgICAgICAvLyBjYXJyeSBvbiB3aXRoIHplcm8KKyAgICAgIG51bS5tYW50PVpFUk8ubWFudDsKKyAgICAgIG51bS5pbmQ9aXN6ZXJvOworICAgICAgbnVtLmV4cD0wOworICAgICAgY29udGludWUgc2V0YWZ0ZXI7IC8vIHJlY2hlY2s6IHdlIG1heSBuZWVkIHRyYWlsaW5nIHplcm9zCisgICAgIH0KKyAgICAvLyB3ZSBoYXZlIGEgZGlnaXQgdG8gaW5zcGVjdCBmcm9tIGV4aXN0aW5nIG1hbnRpc3NhCisgICAgLy8gcm91bmQgdGhlIG51bWJlciBhcyByZXF1aXJlZAorICAgIG5lZWQ9bnVtLm1hbnQubGVuZ3RoLWNob3A7IC8vIGRpZ2l0cyB0byBlbmQgdXAgd2l0aCBbbWF5IGJlIDBdCisgICAgb2xkZXhwPW51bS5leHA7IC8vIHNhdmUgb2xkIGV4cG9uZW50CisgICAgbnVtLnJvdW5kKG5lZWQsZXhyb3VuZCk7CisgICAgLy8gaWYgdGhlIGV4cG9uZW50IGdyZXcgYnkgbW9yZSB0aGFuIHRoZSBkaWdpdHMgd2UgY2hvcHBlZCwgdGhlbgorICAgIC8vIHdlIG11c3QgaGF2ZSBoYWQgYSBjYXJyeSwgc28gd2lsbCBuZWVkIHRvIHJlY2hlY2sgdGhlIGxheW91dAorICAgIGlmICgobnVtLmV4cC1vbGRleHApPT1jaG9wKSAKKyAgICAgYnJlYWsgc2V0YWZ0ZXI7IC8vIG51bWJlciBkaWQgbm90IGhhdmUgY2FycnkKKyAgICAvLyBtYW50aXNzYSBnb3QgZXh0ZW5kZWQgLi4gc28gZ28gYXJvdW5kIGFuZCBjaGVjayBhZ2FpbgorICAgIH0KKyAgIH0vKnNldGFmdGVyKi8KKyAgCisgIGE9bnVtLmxheW91dCgpOyAvLyBsYXkgb3V0LCB3aXRoIGV4cG9uZW50IGlmIHJlcXVpcmVkLCBldGMuCisgIAorICAvKiBIZXJlIHdlIGhhdmUgbGFpZC1vdXQgbnVtYmVyIGluICdhJyAqLworICAvLyBub3cgYXBwbHkgJ2JlZm9yZScgYW5kICdleHBsYWNlcycgYXMgbmVlZGVkCisgIGlmIChiZWZvcmU+MCkgCisgICB7CisgICAgLy8gbG9vayBmb3IgJy4nIG9yICdFJworICAgIHtpbnQgJDExPWEubGVuZ3RoO3A9MDtwOmZvcig7JDExPjA7JDExLS0scCsrKXsKKyAgICAgaWYgKGFbcF09PScuJykgCisgICAgICBicmVhayBwOworICAgICBpZiAoYVtwXT09J0UnKSAKKyAgICAgIGJyZWFrIHA7CisgICAgIH0KKyAgICB9LypwKi8KKyAgICAvLyBwIGlzIG5vdyBvZmZzZXQgb2YgJy4nLCAnRScsIG9yIGNoYXJhY3RlciBhZnRlciBlbmQgb2YgYXJyYXkKKyAgICAvLyB0aGF0IGlzLCB0aGUgY3VycmVudCBsZW5ndGggb2YgYmVmb3JlIHBhcnQKKyAgICBpZiAocD5iZWZvcmUpIAorICAgICBiYWRhcmcoImZvcm1hdCIsMSxqYXZhLmxhbmcuU3RyaW5nLnZhbHVlT2YoYmVmb3JlKSk7IC8vIHdvbid0IGZpdAorICAgIGlmIChwPGJlZm9yZSkgCisgICAgIHsgLy8gbmVlZCBsZWFkaW5nIGJsYW5rcworICAgICAgbmV3YT1uZXcgY2hhclsoYS5sZW5ndGgrYmVmb3JlKS1wXTsKKyAgICAgIHtpbnQgJDEyPWJlZm9yZS1wO2k9MDtpOmZvcig7JDEyPjA7JDEyLS0saSsrKXsKKyAgICAgICBuZXdhW2ldPScgJzsKKyAgICAgICB9CisgICAgICB9LyppKi8KKyAgICAgIGphdmEubGFuZy5TeXN0ZW0uYXJyYXljb3B5KChqYXZhLmxhbmcuT2JqZWN0KWEsMCwoamF2YS5sYW5nLk9iamVjdCluZXdhLGksYS5sZW5ndGgpOworICAgICAgYT1uZXdhOworICAgICB9CisgICAvLyBbaWYgcD1iZWZvcmUgdGhlbiBpdCdzIGp1c3QgdGhlIHJpZ2h0IGxlbmd0aF0KKyAgIH0KKyAgCisgIGlmIChleHBsYWNlcz4wKSAKKyAgIHsKKyAgICAvLyBsb29rIGZvciAnRScgW2Nhbm5vdCBiZSBhdCBvZmZzZXQgMF0KKyAgICB7aW50ICQxMz1hLmxlbmd0aC0xO3A9YS5sZW5ndGgtMTtwOmZvcig7JDEzPjA7JDEzLS0scC0tKXsKKyAgICAgaWYgKGFbcF09PSdFJykgCisgICAgICBicmVhayBwOworICAgICB9CisgICAgfS8qcCovCisgICAgLy8gcCBpcyBub3cgb2Zmc2V0IG9mICdFJywgb3IgMAorICAgIGlmIChwPT0wKSAKKyAgICAgeyAvLyBubyBFIHBhcnQ7IGFkZCB0cmFpbGluZyBibGFua3MKKyAgICAgIG5ld2E9bmV3IGNoYXJbKGEubGVuZ3RoK2V4cGxhY2VzKSsyXTsKKyAgICAgIGphdmEubGFuZy5TeXN0ZW0uYXJyYXljb3B5KChqYXZhLmxhbmcuT2JqZWN0KWEsMCwoamF2YS5sYW5nLk9iamVjdCluZXdhLDAsYS5sZW5ndGgpOworICAgICAge2ludCAkMTQ9ZXhwbGFjZXMrMjtpPWEubGVuZ3RoO2k6Zm9yKDskMTQ+MDskMTQtLSxpKyspeworICAgICAgIG5ld2FbaV09JyAnOworICAgICAgIH0KKyAgICAgIH0vKmkqLworICAgICAgYT1uZXdhOworICAgICB9CisgICAgZWxzZSAKKyAgICAgey8qIGZvdW5kIEUgKi8gLy8gbWF5IG5lZWQgdG8gaW5zZXJ0IHplcm9zCisgICAgICBwbGFjZXM9KGEubGVuZ3RoLXApLTI7IC8vIG51bWJlciBzbyBmYXIKKyAgICAgIGlmIChwbGFjZXM+ZXhwbGFjZXMpIAorICAgICAgIGJhZGFyZygiZm9ybWF0IiwzLGphdmEubGFuZy5TdHJpbmcudmFsdWVPZihleHBsYWNlcykpOworICAgICAgaWYgKHBsYWNlczxleHBsYWNlcykgCisgICAgICAgeyAvLyBuZWVkIHRvIGluc2VydCB6ZXJvcworICAgICAgICBuZXdhPW5ldyBjaGFyWyhhLmxlbmd0aCtleHBsYWNlcyktcGxhY2VzXTsKKyAgICAgICAgamF2YS5sYW5nLlN5c3RlbS5hcnJheWNvcHkoKGphdmEubGFuZy5PYmplY3QpYSwwLChqYXZhLmxhbmcuT2JqZWN0KW5ld2EsMCxwKzIpOyAvLyB0aHJvdWdoIEUgYW5kIHNpZ24KKyAgICAgICAge2ludCAkMTU9ZXhwbGFjZXMtcGxhY2VzO2k9cCsyO2k6Zm9yKDskMTU+MDskMTUtLSxpKyspeworICAgICAgICAgbmV3YVtpXT0nMCc7CisgICAgICAgICB9CisgICAgICAgIH0vKmkqLworICAgICAgICBqYXZhLmxhbmcuU3lzdGVtLmFycmF5Y29weSgoamF2YS5sYW5nLk9iamVjdClhLHArMiwoamF2YS5sYW5nLk9iamVjdCluZXdhLGkscGxhY2VzKTsgLy8gcmVtYWluZGVyIG9mIGV4cG9uZW50CisgICAgICAgIGE9bmV3YTsKKyAgICAgICB9CisgICAgIC8vIFtpZiBwbGFjZXM9ZXhwbGFjZXMgdGhlbiBpdCdzIGp1c3QgdGhlIHJpZ2h0IGxlbmd0aF0KKyAgICAgfQorICAgfQorICByZXR1cm4gbmV3IGphdmEubGFuZy5TdHJpbmcoYSk7CisgIH0KKworIC8qKgorICAqIFJldHVybnMgdGhlIGhhc2hjb2RlIGZvciB0aGlzIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+LgorICAqIFRoaXMgaGFzaGNvZGUgaXMgc3VpdGFibGUgZm9yIHVzZSBieSB0aGUKKyAgKiA8Y29kZT5qYXZhLnV0aWwuSGFzaHRhYmxlPC9jb2RlPiBjbGFzcy4KKyAgKiA8cD4KKyAgKiBOb3RlIHRoYXQgdHdvIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IG9iamVjdHMgYXJlIG9ubHkgZ3VhcmFudGVlZAorICAqIHRvIHByb2R1Y2UgdGhlIHNhbWUgaGFzaGNvZGUgaWYgdGhleSBhcmUgZXhhY3RseSBlcXVhbCAodGhhdCBpcywKKyAgKiB0aGUgPGNvZGU+U3RyaW5nPC9jb2RlPiByZXByZXNlbnRhdGlvbnMgb2YgdGhlCisgICogPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gbnVtYmVycyBhcmUgaWRlbnRpY2FsIC0tIHRoZXkgaGF2ZSB0aGUgc2FtZQorICAqIGNoYXJhY3RlcnMgaW4gdGhlIHNhbWUgc2VxdWVuY2UpLgorICAqCisgICogQHJldHVybiBBbiA8Y29kZT5pbnQ8L2NvZGU+IHRoYXQgaXMgdGhlIGhhc2hjb2RlIGZvciA8Y29kZT50aGlzPC9jb2RlPi4KKyAgKiBAc3RhYmxlIElDVSAyLjAKKyAgKi8KKyAKKyBwdWJsaWMgaW50IGhhc2hDb2RlKCl7CisgIC8vIE1heWJlIGNhbGN1bGF0ZSBvdXJzZWx2ZXMsIGxhdGVyLiAgSWYgc28sIG5vdGUgdGhhdCB0aGVyZSBjYW4gYmUKKyAgLy8gbW9yZSB0aGFuIG9uZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBmb3IgYSBnaXZlbiB0b1N0cmluZygpIHJlc3VsdC4KKyAgcmV0dXJuIHRoaXMudG9TdHJpbmcoKS5oYXNoQ29kZSgpOworICB9CisKKyAvKioKKyAgKiBDb252ZXJ0cyB0aGlzIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHRvIGFuIDxjb2RlPmludDwvY29kZT4uCisgICogSWYgdGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IGhhcyBhIG5vbi16ZXJvIGRlY2ltYWwgcGFydCBpdCBpcworICAqIGRpc2NhcmRlZC4gSWYgdGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IGlzIG91dCBvZiB0aGUgcG9zc2libGUKKyAgKiByYW5nZSBmb3IgYW4gPGNvZGU+aW50PC9jb2RlPiAoMzItYml0IHNpZ25lZCBpbnRlZ2VyKSByZXN1bHQgdGhlbgorICAqIG9ubHkgdGhlIGxvdy1vcmRlciAzMiBiaXRzIGFyZSB1c2VkLiAoVGhhdCBpcywgdGhlIG51bWJlciBtYXkgYmUKKyAgKiA8aT5kZWNhcGl0YXRlZDwvaT4uKSAgVG8gYXZvaWQgdW5leHBlY3RlZCBlcnJvcnMgd2hlbiB0aGVzZQorICAqIGNvbmRpdGlvbnMgb2NjdXIsIHVzZSB0aGUge0BsaW5rICNpbnRWYWx1ZUV4YWN0fSBtZXRob2QuCisgICoKKyAgKiBAcmV0dXJuIEFuIDxjb2RlPmludDwvY29kZT4gY29udmVydGVkIGZyb20gPGNvZGU+dGhpczwvY29kZT4sCisgICogICAgICAgICB0cnVuY2F0ZWQgYW5kIGRlY2FwaXRhdGVkIGlmIG5lY2Vzc2FyeS4KKyAgKiBAc3RhYmxlIElDVSAyLjAKKyAgKi8KKyAKKyBwdWJsaWMgaW50IGludFZhbHVlKCl7CisgIHJldHVybiB0b0JpZ0ludGVnZXIoKS5pbnRWYWx1ZSgpOworICB9CisKKyAvKioKKyAgKiBDb252ZXJ0cyB0aGlzIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHRvIGFuIDxjb2RlPmludDwvY29kZT4uCisgICogSWYgdGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IGhhcyBhIG5vbi16ZXJvIGRlY2ltYWwgcGFydCBvciBpcworICAqIG91dCBvZiB0aGUgcG9zc2libGUgcmFuZ2UgZm9yIGFuIDxjb2RlPmludDwvY29kZT4gKDMyLWJpdCBzaWduZWQKKyAgKiBpbnRlZ2VyKSByZXN1bHQgdGhlbiBhbiA8Y29kZT5Bcml0aG1ldGljRXhjZXB0aW9uPC9jb2RlPiBpcyB0aHJvd24uCisgICoKKyAgKiBAcmV0dXJuIEFuIDxjb2RlPmludDwvY29kZT4gZXF1YWwgaW4gdmFsdWUgdG8gPGNvZGU+dGhpczwvY29kZT4uCisgICogQHRocm93cyBBcml0aG1ldGljRXhjZXB0aW9uIGlmIDxjb2RlPnRoaXM8L2NvZGU+IGhhcyBhIG5vbi16ZXJvCisgICogICAgICAgICAgICAgICAgIGRlY2ltYWwgcGFydCwgb3Igd2lsbCBub3QgZml0IGluIGFuCisgICogICAgICAgICAgICAgICAgIDxjb2RlPmludDwvY29kZT4uCisgICogQHN0YWJsZSBJQ1UgMi4wCisgICovCisgCisgcHVibGljIGludCBpbnRWYWx1ZUV4YWN0KCl7CisgIGludCBsb2RpZ2l0OworICBpbnQgdXNlZXhwPTA7CisgIGludCByZXN1bHQ7CisgIGludCBpPTA7CisgIGludCB0b3BkaWc9MDsKKyAgLy8gVGhpcyBkb2VzIG5vdCB1c2UgbG9uZ1ZhbHVlRXhhY3QoKSBhcyB0aGUgbGF0dGVyIGNhbiBiZSBtdWNoCisgIC8vIHNsb3dlci4KKyAgLy8gaW50Y2hlY2sgKGZyb20gcG93KSByZWxpZXMgb24gdGhpcyB0byBjaGVjayBkZWNpbWFsIHBhcnQKKyAgaWYgKGluZD09aXN6ZXJvKSAKKyAgIHJldHVybiAwOyAvLyBlYXN5LCBhbmQgcXVpdGUgY29tbW9uCisgIC8qIHRlc3QgYW5kIGRyb3AgYW55IHRyYWlsaW5nIGRlY2ltYWwgcGFydCAqLworICBsb2RpZ2l0PW1hbnQubGVuZ3RoLTE7CisgIGlmIChleHA8MCkgCisgICB7CisgICAgbG9kaWdpdD1sb2RpZ2l0K2V4cDsgLy8gcmVkdWNlcyBieSAtKC1leHApCisgICAgLyogYWxsIGRlY2ltYWwgcGxhY2VzIG11c3QgYmUgMCAqLworICAgIGlmICgoIShhbGx6ZXJvKG1hbnQsbG9kaWdpdCsxKSkpKSAKKyAgICAgdGhyb3cgbmV3IGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uKCJEZWNpbWFsIHBhcnQgbm9uLXplcm86IisiICIrdGhpcy50b1N0cmluZygpKTsKKyAgICBpZiAobG9kaWdpdDwwKSAKKyAgICAgcmV0dXJuIDA7IC8vIC0xPHRoaXM8MQorICAgIHVzZWV4cD0wOworICAgfQorICBlbHNlIAorICAgey8qID49MCAqLworICAgIGlmICgoZXhwK2xvZGlnaXQpPjkpICAvLyBlYXJseSBleGl0CisgICAgIHRocm93IG5ldyBqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbigiQ29udmVyc2lvbiBvdmVyZmxvdzoiKyIgIit0aGlzLnRvU3RyaW5nKCkpOworICAgIHVzZWV4cD1leHA7CisgICB9CisgIC8qIGNvbnZlcnQgdGhlIG1hbnRpc3NhIHRvIGJpbmFyeSwgaW5saW5lIGZvciBzcGVlZCAqLworICByZXN1bHQ9MDsKKyAge2ludCAkMTY9bG9kaWdpdCt1c2VleHA7aT0wO2k6Zm9yKDtpPD0kMTY7aSsrKXsKKyAgIHJlc3VsdD1yZXN1bHQqMTA7CisgICBpZiAoaTw9bG9kaWdpdCkgCisgICAgcmVzdWx0PXJlc3VsdCttYW50W2ldOworICAgfQorICB9LyppKi8KKyAgCisgIC8qIE5vdywgaWYgdGhlIHJpc2t5IGxlbmd0aCwgY2hlY2sgZm9yIG92ZXJmbG93ICovCisgIGlmICgobG9kaWdpdCt1c2VleHApPT05KSAKKyAgIHsKKyAgICAvLyBub3RlIHdlIGNhbm5vdCBqdXN0IHRlc3QgZm9yIC12ZSByZXN1bHQsIGFzIG92ZXJmbG93IGNhbiBtb3ZlIGEKKyAgICAvLyB6ZXJvIGludG8gdGhlIHRvcCBiaXQgW2NvbnNpZGVyIDU1NTU1NTU1NTVdCisgICAgdG9wZGlnPXJlc3VsdC8xMDAwMDAwMDAwOyAvLyBnZXQgdG9wIGRpZ2l0LCBwcmVzZXJ2aW5nIHNpZ24KKyAgICBpZiAodG9wZGlnIT1tYW50WzBdKSAKKyAgICAgeyAvLyBkaWdpdCBtdXN0IG1hdGNoIGFuZCBiZSBwb3NpdGl2ZQorICAgICAgLy8gZXhjZXB0IGluIHRoZSBzcGVjaWFsIGNhc2UgLi4uCisgICAgICBpZiAocmVzdWx0PT1qYXZhLmxhbmcuSW50ZWdlci5NSU5fVkFMVUUpICAvLyBsb29rcyBsaWtlIHRoZSBzcGVjaWFsCisgICAgICAgaWYgKGluZD09aXNuZWcpICAvLyByZWFsbHkgd2FzIG5lZ2F0aXZlCisgICAgICAgIGlmIChtYW50WzBdPT0yKSAKKyAgICAgICAgIHJldHVybiByZXN1bHQ7IC8vIHJlYWxseSBoYWQgdG9wIGRpZ2l0IDIKKyAgICAgIHRocm93IG5ldyBqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbigiQ29udmVyc2lvbiBvdmVyZmxvdzoiKyIgIit0aGlzLnRvU3RyaW5nKCkpOworICAgICB9CisgICB9CisgIAorICAvKiBMb29rcyBnb29kICovCisgIGlmIChpbmQ9PWlzcG9zKSAKKyAgIHJldHVybiByZXN1bHQ7CisgIHJldHVybiAoaW50KS1yZXN1bHQ7CisgIH0KKworIC8qKgorICAqIENvbnZlcnRzIHRoaXMgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gdG8gYSA8Y29kZT5sb25nPC9jb2RlPi4KKyAgKiBJZiB0aGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gaGFzIGEgbm9uLXplcm8gZGVjaW1hbCBwYXJ0IGl0IGlzCisgICogZGlzY2FyZGVkLiBJZiB0aGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gaXMgb3V0IG9mIHRoZSBwb3NzaWJsZQorICAqIHJhbmdlIGZvciBhIDxjb2RlPmxvbmc8L2NvZGU+ICg2NC1iaXQgc2lnbmVkIGludGVnZXIpIHJlc3VsdCB0aGVuCisgICogb25seSB0aGUgbG93LW9yZGVyIDY0IGJpdHMgYXJlIHVzZWQuIChUaGF0IGlzLCB0aGUgbnVtYmVyIG1heSBiZQorICAqIDxpPmRlY2FwaXRhdGVkPC9pPi4pICBUbyBhdm9pZCB1bmV4cGVjdGVkIGVycm9ycyB3aGVuIHRoZXNlCisgICogY29uZGl0aW9ucyBvY2N1ciwgdXNlIHRoZSB7QGxpbmsgI2xvbmdWYWx1ZUV4YWN0fSBtZXRob2QuCisgICoKKyAgKiBAcmV0dXJuIEEgPGNvZGU+bG9uZzwvY29kZT4gY29udmVydGVkIGZyb20gPGNvZGU+dGhpczwvY29kZT4sCisgICogICAgICAgICB0cnVuY2F0ZWQgYW5kIGRlY2FwaXRhdGVkIGlmIG5lY2Vzc2FyeS4KKyAgKiBAc3RhYmxlIElDVSAyLjAKKyAgKi8KKyAKKyBwdWJsaWMgbG9uZyBsb25nVmFsdWUoKXsKKyAgcmV0dXJuIHRvQmlnSW50ZWdlcigpLmxvbmdWYWx1ZSgpOworICB9CisKKyAvKioKKyAgKiBDb252ZXJ0cyB0aGlzIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHRvIGEgPGNvZGU+bG9uZzwvY29kZT4uCisgICogSWYgdGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IGhhcyBhIG5vbi16ZXJvIGRlY2ltYWwgcGFydCBvciBpcworICAqIG91dCBvZiB0aGUgcG9zc2libGUgcmFuZ2UgZm9yIGEgPGNvZGU+bG9uZzwvY29kZT4gKDY0LWJpdCBzaWduZWQKKyAgKiBpbnRlZ2VyKSByZXN1bHQgdGhlbiBhbiA8Y29kZT5Bcml0aG1ldGljRXhjZXB0aW9uPC9jb2RlPiBpcyB0aHJvd24uCisgICoKKyAgKiBAcmV0dXJuIEEgPGNvZGU+bG9uZzwvY29kZT4gZXF1YWwgaW4gdmFsdWUgdG8gPGNvZGU+dGhpczwvY29kZT4uCisgICogQHRocm93cyBBcml0aG1ldGljRXhjZXB0aW9uIGlmIDxjb2RlPnRoaXM8L2NvZGU+IGhhcyBhIG5vbi16ZXJvCisgICogICAgICAgICAgICAgICAgIGRlY2ltYWwgcGFydCwgb3Igd2lsbCBub3QgZml0IGluIGEKKyAgKiAgICAgICAgICAgICAgICAgPGNvZGU+bG9uZzwvY29kZT4uCisgICogQHN0YWJsZSBJQ1UgMi4wCisgICovCisgCisgcHVibGljIGxvbmcgbG9uZ1ZhbHVlRXhhY3QoKXsKKyAgaW50IGxvZGlnaXQ7CisgIGludCBjc3RhcnQ9MDsKKyAgaW50IHVzZWV4cD0wOworICBsb25nIHJlc3VsdDsKKyAgaW50IGk9MDsKKyAgbG9uZyB0b3BkaWc9MDsKKyAgLy8gSWRlbnRpY2FsIHRvIGludFZhbHVlRXhhY3QgZXhjZXB0IGZvciByZXN1bHQ9bG9uZywgYW5kIGV4cD49MjAgdGVzdAorICBpZiAoaW5kPT0wKSAKKyAgIHJldHVybiAwOyAvLyBlYXN5LCBhbmQgcXVpdGUgY29tbW9uCisgIGxvZGlnaXQ9bWFudC5sZW5ndGgtMTsgLy8gbGFzdCBpbmNsdWRlZCBkaWdpdAorICBpZiAoZXhwPDApIAorICAgeworICAgIGxvZGlnaXQ9bG9kaWdpdCtleHA7IC8vIC0oLWV4cCkKKyAgICAvKiBhbGwgZGVjaW1hbCBwbGFjZXMgbXVzdCBiZSAwICovCisgICAgaWYgKGxvZGlnaXQ8MCkgCisgICAgIGNzdGFydD0wOworICAgIGVsc2UgCisgICAgIGNzdGFydD1sb2RpZ2l0KzE7CisgICAgaWYgKCghKGFsbHplcm8obWFudCxjc3RhcnQpKSkpIAorICAgICB0aHJvdyBuZXcgamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24oIkRlY2ltYWwgcGFydCBub24temVybzoiKyIgIit0aGlzLnRvU3RyaW5nKCkpOworICAgIGlmIChsb2RpZ2l0PDApIAorICAgICByZXR1cm4gMDsgLy8gLTE8dGhpczwxCisgICAgdXNlZXhwPTA7CisgICB9CisgIGVsc2UgCisgICB7LyogPj0wICovCisgICAgaWYgKChleHArbWFudC5sZW5ndGgpPjE4KSAgLy8gZWFybHkgZXhpdAorICAgICB0aHJvdyBuZXcgamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24oIkNvbnZlcnNpb24gb3ZlcmZsb3c6IisiICIrdGhpcy50b1N0cmluZygpKTsKKyAgICB1c2VleHA9ZXhwOworICAgfQorICAKKyAgLyogY29udmVydCB0aGUgbWFudGlzc2EgdG8gYmluYXJ5LCBpbmxpbmUgZm9yIHNwZWVkICovCisgIC8vIG5vdGUgdGhhdCB3ZSBjb3VsZCBzYWZlbHkgdXNlIHRoZSAndGVzdCBmb3Igd3JhcCB0byBuZWdhdGl2ZScKKyAgLy8gYWxnb3JpdGhtIGhlcmUsIGJ1dCBpbnN0ZWFkIHdlIHBhcmFsbGVsIHRoZSBpbnRWYWx1ZUV4YWN0CisgIC8vIGFsZ29yaXRobSBmb3IgZWFzZSBvZiBjaGVja2luZyBhbmQgbWFpbnRlbmFuY2UuCisgIHJlc3VsdD0obG9uZykwOworICB7aW50ICQxNz1sb2RpZ2l0K3VzZWV4cDtpPTA7aTpmb3IoO2k8PSQxNztpKyspeworICAgcmVzdWx0PXJlc3VsdCoxMDsKKyAgIGlmIChpPD1sb2RpZ2l0KSAKKyAgICByZXN1bHQ9cmVzdWx0K21hbnRbaV07CisgICB9CisgIH0vKmkqLworICAKKyAgLyogTm93LCBpZiB0aGUgcmlza3kgbGVuZ3RoLCBjaGVjayBmb3Igb3ZlcmZsb3cgKi8KKyAgaWYgKChsb2RpZ2l0K3VzZWV4cCk9PTE4KSAKKyAgIHsKKyAgICB0b3BkaWc9cmVzdWx0LzEwMDAwMDAwMDAwMDAwMDAwMDBMOyAvLyBnZXQgdG9wIGRpZ2l0LCBwcmVzZXJ2aW5nIHNpZ24KKyAgICBpZiAodG9wZGlnIT1tYW50WzBdKSAKKyAgICAgeyAvLyBkaWdpdCBtdXN0IG1hdGNoIGFuZCBiZSBwb3NpdGl2ZQorICAgICAgLy8gZXhjZXB0IGluIHRoZSBzcGVjaWFsIGNhc2UgLi4uCisgICAgICBpZiAocmVzdWx0PT1qYXZhLmxhbmcuTG9uZy5NSU5fVkFMVUUpICAvLyBsb29rcyBsaWtlIHRoZSBzcGVjaWFsCisgICAgICAgaWYgKGluZD09aXNuZWcpICAvLyByZWFsbHkgd2FzIG5lZ2F0aXZlCisgICAgICAgIGlmIChtYW50WzBdPT05KSAKKyAgICAgICAgIHJldHVybiByZXN1bHQ7IC8vIHJlYWxseSBoYWQgdG9wIGRpZ2l0IDkKKyAgICAgIHRocm93IG5ldyBqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbigiQ29udmVyc2lvbiBvdmVyZmxvdzoiKyIgIit0aGlzLnRvU3RyaW5nKCkpOworICAgICB9CisgICB9CisgIAorICAvKiBMb29rcyBnb29kICovCisgIGlmIChpbmQ9PWlzcG9zKSAKKyAgIHJldHVybiByZXN1bHQ7CisgIHJldHVybiAobG9uZyktcmVzdWx0OworICB9CisKKyAvKioKKyAgKiBSZXR1cm5zIGEgcGxhaW4gPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hvc2UgZGVjaW1hbCBwb2ludCBoYXMKKyAgKiBiZWVuIG1vdmVkIHRvIHRoZSBsZWZ0IGJ5IGEgc3BlY2lmaWVkIG51bWJlciBvZiBwb3NpdGlvbnMuCisgICogVGhlIHBhcmFtZXRlciwgPGNvZGU+bjwvY29kZT4sIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHBvc2l0aW9ucyB0bworICAqIG1vdmUgdGhlIGRlY2ltYWwgcG9pbnQuCisgICogVGhhdCBpcywgaWYgPGNvZGU+bjwvY29kZT4gaXMgMCBvciBwb3NpdGl2ZSwgdGhlIG51bWJlciByZXR1cm5lZCBpcworICAqIGdpdmVuIGJ5OgorICAqIDxwPjxjb2RlPgorICAqIHRoaXMubXVsdGlwbHkoVEVOLnBvdyhuZXcgQmlnRGVjaW1hbCgtbikpKQorICAqIDwvY29kZT4KKyAgKiA8cD4KKyAgKiA8Y29kZT5uPC9jb2RlPiBtYXkgYmUgbmVnYXRpdmUsIGluIHdoaWNoIGNhc2UgdGhlIG1ldGhvZCByZXR1cm5zCisgICogdGhlIHNhbWUgcmVzdWx0IGFzIDxjb2RlPm1vdmVQb2ludFJpZ2h0KC1uKTwvY29kZT4uCisgICoKKyAgKiBAcGFyYW0gIG4gVGhlIDxjb2RlPmludDwvY29kZT4gc3BlY2lmeWluZyB0aGUgbnVtYmVyIG9mIHBsYWNlcyB0bworICAqICAgICAgICAgICBtb3ZlIHRoZSBkZWNpbWFsIHBvaW50IGxlZnR3YXJkcy4KKyAgKiBAcmV0dXJuICAgQSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBkZXJpdmVkIGZyb20KKyAgKiAgICAgICAgICAgPGNvZGU+dGhpczwvY29kZT4sIHdpdGggdGhlIGRlY2ltYWwgcG9pbnQgbW92ZWQKKyAgKiAgICAgICAgICAgPGNvZGU+bjwvY29kZT4gcGxhY2VzIHRvIHRoZSBsZWZ0LgorICAqIEBzdGFibGUgSUNVIDIuMAorICAqLworIAorIHB1YmxpYyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgbW92ZVBvaW50TGVmdChpbnQgbil7CisgIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCByZXM7CisgIC8vIHZlcnkgbGl0dGxlIHBvaW50IGluIG9wdGltaXppbmcgZm9yIHNoaWZ0IG9mIDAKKyAgcmVzPWNsb25lKHRoaXMpOworICByZXMuZXhwPXJlcy5leHAtbjsKKyAgcmV0dXJuIHJlcy5maW5pc2gocGxhaW5NQyxmYWxzZSk7IC8vIGZpbmlzaCBzZXRzIGZvcm0gYW5kIGNoZWNrcyBleHBvbmVudAorICB9CisKKyAvKioKKyAgKiBSZXR1cm5zIGEgcGxhaW4gPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hvc2UgZGVjaW1hbCBwb2ludCBoYXMKKyAgKiBiZWVuIG1vdmVkIHRvIHRoZSByaWdodCBieSBhIHNwZWNpZmllZCBudW1iZXIgb2YgcG9zaXRpb25zLgorICAqIFRoZSBwYXJhbWV0ZXIsIDxjb2RlPm48L2NvZGU+LCBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBwb3NpdGlvbnMgdG8KKyAgKiBtb3ZlIHRoZSBkZWNpbWFsIHBvaW50LgorICAqIFRoYXQgaXMsIGlmIDxjb2RlPm48L2NvZGU+IGlzIDAgb3IgcG9zaXRpdmUsIHRoZSBudW1iZXIgcmV0dXJuZWQgaXMKKyAgKiBnaXZlbiBieToKKyAgKiA8cD48Y29kZT4KKyAgKiB0aGlzLm11bHRpcGx5KFRFTi5wb3cobmV3IEJpZ0RlY2ltYWwobikpKQorICAqIDwvY29kZT4KKyAgKiA8cD4KKyAgKiA8Y29kZT5uPC9jb2RlPiBtYXkgYmUgbmVnYXRpdmUsIGluIHdoaWNoIGNhc2UgdGhlIG1ldGhvZCByZXR1cm5zCisgICogdGhlIHNhbWUgcmVzdWx0IGFzIDxjb2RlPm1vdmVQb2ludExlZnQoLW4pPC9jb2RlPi4KKyAgKgorICAqIEBwYXJhbSAgbiBUaGUgPGNvZGU+aW50PC9jb2RlPiBzcGVjaWZ5aW5nIHRoZSBudW1iZXIgb2YgcGxhY2VzIHRvCisgICogICAgICAgICAgIG1vdmUgdGhlIGRlY2ltYWwgcG9pbnQgcmlnaHR3YXJkcy4KKyAgKiBAcmV0dXJuICAgQSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBkZXJpdmVkIGZyb20KKyAgKiAgICAgICAgICAgPGNvZGU+dGhpczwvY29kZT4sIHdpdGggdGhlIGRlY2ltYWwgcG9pbnQgbW92ZWQKKyAgKiAgICAgICAgICAgPGNvZGU+bjwvY29kZT4gcGxhY2VzIHRvIHRoZSByaWdodC4KKyAgKiBAc3RhYmxlIElDVSAyLjAKKyAgKi8KKyAKKyBwdWJsaWMgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIG1vdmVQb2ludFJpZ2h0KGludCBuKXsKKyAgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIHJlczsKKyAgcmVzPWNsb25lKHRoaXMpOworICByZXMuZXhwPXJlcy5leHArbjsKKyAgcmV0dXJuIHJlcy5maW5pc2gocGxhaW5NQyxmYWxzZSk7CisgIH0KKworIC8qKgorICAqIFJldHVybnMgdGhlIHNjYWxlIG9mIHRoaXMgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4uCisgICogUmV0dXJucyBhIG5vbi1uZWdhdGl2ZSA8Y29kZT5pbnQ8L2NvZGU+IHdoaWNoIGlzIHRoZSBzY2FsZSBvZiB0aGUKKyAgKiBudW1iZXIuIFRoZSBzY2FsZSBpcyB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBpbiB0aGUgZGVjaW1hbCBwYXJ0IG9mCisgICogdGhlIG51bWJlciBpZiB0aGUgbnVtYmVyIHdlcmUgZm9ybWF0dGVkIHdpdGhvdXQgZXhwb25lbnRpYWwKKyAgKiBub3RhdGlvbi4KKyAgKgorICAqIEByZXR1cm4gQW4gPGNvZGU+aW50PC9jb2RlPiB3aG9zZSB2YWx1ZSBpcyB0aGUgc2NhbGUgb2YgdGhpcworICAqICAgICAgICAgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4uCisgICogQHN0YWJsZSBJQ1UgMi4wCisgICovCisgCisgcHVibGljIGludCBzY2FsZSgpeworICBpZiAoZXhwPj0wKSAKKyAgIHJldHVybiAwOyAvLyBzY2FsZSBjYW4gbmV2ZXIgYmUgbmVnYXRpdmUKKyAgcmV0dXJuIChpbnQpLWV4cDsKKyAgfQorCisgLyoqCisgICogUmV0dXJucyBhIHBsYWluIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHdpdGggYSBnaXZlbiBzY2FsZS4KKyAgKiA8cD4KKyAgKiBJZiB0aGUgZ2l2ZW4gc2NhbGUgKHdoaWNoIG11c3QgYmUgemVybyBvciBwb3NpdGl2ZSkgaXMgdGhlIHNhbWUgYXMKKyAgKiBvciBncmVhdGVyIHRoYW4gdGhlIGxlbmd0aCBvZiB0aGUgZGVjaW1hbCBwYXJ0ICh0aGUgc2NhbGUpIG9mIHRoaXMKKyAgKiA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB0aGVuIHRyYWlsaW5nIHplcm9zIHdpbGwgYmUgYWRkZWQgdG8gdGhlCisgICogZGVjaW1hbCBwYXJ0IGFzIG5lY2Vzc2FyeS4KKyAgKiA8cD4KKyAgKiBJZiB0aGUgZ2l2ZW4gc2NhbGUgaXMgbGVzcyB0aGFuIHRoZSBsZW5ndGggb2YgdGhlIGRlY2ltYWwgcGFydCAodGhlCisgICogc2NhbGUpIG9mIHRoaXMgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gdGhlbiB0cmFpbGluZyBkaWdpdHMKKyAgKiB3aWxsIGJlIHJlbW92ZWQsIGFuZCBpbiB0aGlzIGNhc2UgYW4KKyAgKiA8Y29kZT5Bcml0aG1ldGljRXhjZXB0aW9uPC9jb2RlPiBpcyB0aHJvd24gaWYgYW55IGRpc2NhcmRlZCBkaWdpdHMKKyAgKiBhcmUgbm9uLXplcm8uCisgICogPHA+CisgICogVGhlIHNhbWUgYXMge0BsaW5rICNzZXRTY2FsZShpbnQsIGludCl9LCB3aGVyZSB0aGUgZmlyc3QgcGFyYW1ldGVyCisgICogaXMgdGhlIHNjYWxlLCBhbmQgdGhlIHNlY29uZCBpcworICAqIDxjb2RlPk1hdGhDb250ZXh0LlJPVU5EX1VOTkVDRVNTQVJZPC9jb2RlPi4KKyAgKgorICAqIEBwYXJhbSAgc2NhbGUgVGhlIDxjb2RlPmludDwvY29kZT4gc3BlY2lmeWluZyB0aGUgc2NhbGUgb2YgdGhlCisgICogICAgICAgICAgICAgICByZXN1bHRpbmcgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4uCisgICogQHJldHVybiAgICAgICBBIHBsYWluIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHdpdGggdGhlIGdpdmVuIHNjYWxlLgorICAqIEB0aHJvd3MgQXJpdGhtZXRpY0V4Y2VwdGlvbiBpZiA8Y29kZT5zY2FsZTwvY29kZT4gaXMgbmVnYXRpdmUuCisgICogQHRocm93cyBBcml0aG1ldGljRXhjZXB0aW9uIGlmIHJlZHVjaW5nIHNjYWxlIHdvdWxkIGRpc2NhcmQKKyAgKiAgICAgICAgICAgICAgIG5vbi16ZXJvIGRpZ2l0cy4KKyAgKiBAc3RhYmxlIElDVSAyLjAKKyAgKi8KKyAKKyBwdWJsaWMgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIHNldFNjYWxlKGludCBzY2FsZSl7CisgIHJldHVybiBzZXRTY2FsZShzY2FsZSxST1VORF9VTk5FQ0VTU0FSWSk7CisgIH0KKworIC8qKgorICAqIFJldHVybnMgYSBwbGFpbiA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aXRoIGEgZ2l2ZW4gc2NhbGUuCisgICogPHA+CisgICogSWYgdGhlIGdpdmVuIHNjYWxlICh3aGljaCBtdXN0IGJlIHplcm8gb3IgcG9zaXRpdmUpIGlzIHRoZSBzYW1lIGFzCisgICogb3IgZ3JlYXRlciB0aGFuIHRoZSBsZW5ndGggb2YgdGhlIGRlY2ltYWwgcGFydCAodGhlIHNjYWxlKSBvZiB0aGlzCisgICogPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gdGhlbiB0cmFpbGluZyB6ZXJvcyB3aWxsIGJlIGFkZGVkIHRvIHRoZQorICAqIGRlY2ltYWwgcGFydCBhcyBuZWNlc3NhcnkuCisgICogPHA+CisgICogSWYgdGhlIGdpdmVuIHNjYWxlIGlzIGxlc3MgdGhhbiB0aGUgbGVuZ3RoIG9mIHRoZSBkZWNpbWFsIHBhcnQgKHRoZQorICAqIHNjYWxlKSBvZiB0aGlzIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHRoZW4gdHJhaWxpbmcgZGlnaXRzCisgICogd2lsbCBiZSByZW1vdmVkLCBhbmQgdGhlIHJvdW5kaW5nIG1vZGUgZ2l2ZW4gYnkgdGhlIHNlY29uZAorICAqIHBhcmFtZXRlciBpcyB1c2VkIHRvIGRldGVybWluZSBpZiB0aGUgcmVtYWluaW5nIGRpZ2l0cyBhcmUKKyAgKiBhZmZlY3RlZCBieSBhIGNhcnJ5LgorICAqIEluIHRoaXMgY2FzZSwgYW4gPGNvZGU+SWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uPC9jb2RlPiBpcyB0aHJvd24gaWYKKyAgKiA8Y29kZT5yb3VuZDwvY29kZT4gaXMgbm90IGEgdmFsaWQgcm91bmRpbmcgbW9kZS4KKyAgKiA8cD4KKyAgKiBJZiA8Y29kZT5yb3VuZDwvY29kZT4gaXMgPGNvZGU+TWF0aENvbnRleHQuUk9VTkRfVU5ORUNFU1NBUlk8L2NvZGU+LAorICAqIGFuIDxjb2RlPkFyaXRobWV0aWNFeGNlcHRpb248L2NvZGU+IGlzIHRocm93biBpZiBhbnkgZGlzY2FyZGVkCisgICogZGlnaXRzIGFyZSBub24temVyby4KKyAgKgorICAqIEBwYXJhbSAgc2NhbGUgVGhlIDxjb2RlPmludDwvY29kZT4gc3BlY2lmeWluZyB0aGUgc2NhbGUgb2YgdGhlCisgICogICAgICAgICAgICAgICByZXN1bHRpbmcgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4uCisgICogQHBhcmFtICByb3VuZCBUaGUgPGNvZGU+aW50PC9jb2RlPiByb3VuZGluZyBtb2RlIHRvIGJlIHVzZWQgZm9yCisgICogICAgICAgICAgICAgICB0aGUgZGl2aXNpb24gKHNlZSB0aGUge0BsaW5rIE1hdGhDb250ZXh0fSBjbGFzcykuCisgICogQHJldHVybiAgICAgICBBIHBsYWluIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHdpdGggdGhlIGdpdmVuIHNjYWxlLgorICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIDxjb2RlPnJvdW5kPC9jb2RlPiBpcyBub3QgYQorICAqICAgICAgICAgICAgICAgdmFsaWQgcm91bmRpbmcgbW9kZS4KKyAgKiBAdGhyb3dzIEFyaXRobWV0aWNFeGNlcHRpb24gaWYgPGNvZGU+c2NhbGU8L2NvZGU+IGlzIG5lZ2F0aXZlLgorICAqIEB0aHJvd3MgQXJpdGhtZXRpY0V4Y2VwdGlvbiBpZiA8Y29kZT5yb3VuZDwvY29kZT4gaXMKKyAgKiAgICAgICAgICAgICAgIDxjb2RlPk1hdGhDb250ZXh0LlJPVU5EX1VOTkVDRVNTQVJZPC9jb2RlPiwgYW5kCisgICogICAgICAgICAgICAgICByZWR1Y2luZyBzY2FsZSB3b3VsZCBkaXNjYXJkIG5vbi16ZXJvIGRpZ2l0cy4KKyAgKiBAc3RhYmxlIElDVSAyLjAKKyAgKi8KKyAKKyBwdWJsaWMgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIHNldFNjYWxlKGludCBzY2FsZSxpbnQgcm91bmQpeworICBpbnQgb3Vyc2NhbGU7CisgIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCByZXM7CisgIGludCBwYWRkaW5nPTA7CisgIGludCBuZXdsZW49MDsKKyAgLy8gYXQgcHJlc2VudCB0aGlzIG5hdWdodGlseSBvbmx5IGNoZWNrcyB0aGUgcm91bmQgdmFsdWUgaWYgaXQgaXMKKyAgLy8gbmVlZGVkICh1c2VkKSwgZm9yIHNwZWVkCisgIG91cnNjYWxlPXRoaXMuc2NhbGUoKTsKKyAgaWYgKG91cnNjYWxlPT1zY2FsZSkgIC8vIGFscmVhZHkgY29ycmVjdCBzY2FsZQorICAgaWYgKHRoaXMuZm9ybT09Y29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5QTEFJTikgIC8vIC4uIGFuZCBmb3JtCisgICAgcmV0dXJuIHRoaXM7CisgIHJlcz1jbG9uZSh0aGlzKTsgLy8gbmVlZCBjb3B5CisgIGlmIChvdXJzY2FsZTw9c2NhbGUpIAorICAgeyAvLyBzaW1wbHkgemVyby1wYWRkaW5nL2NoYW5naW5nIGZvcm0KKyAgICAvLyBpZiBvdXJzY2FsZSBpcyAwIHdlIG1heSBoYXZlIGxvdHMgb2YgMHMgdG8gYWRkCisgICAgaWYgKG91cnNjYWxlPT0wKSAKKyAgICAgcGFkZGluZz1yZXMuZXhwK3NjYWxlOworICAgIGVsc2UgCisgICAgIHBhZGRpbmc9c2NhbGUtb3Vyc2NhbGU7CisgICAgcmVzLm1hbnQ9ZXh0ZW5kKHJlcy5tYW50LHJlcy5tYW50Lmxlbmd0aCtwYWRkaW5nKTsKKyAgICByZXMuZXhwPShpbnQpLXNjYWxlOyAvLyBhcyByZXF1ZXN0ZWQKKyAgIH0KKyAgZWxzZSAKKyAgIHsvKiBvdXJzY2FsZT5zY2FsZTogc2hvcnRlbmluZywgcHJvYmFibHkgKi8KKyAgICBpZiAoc2NhbGU8MCkgCisgICAgIHRocm93IG5ldyBqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbigiTmVnYXRpdmUgc2NhbGU6IisiICIrc2NhbGUpOworICAgIC8vIFtyb3VuZCgpIHdpbGwgcmFpc2UgZXhjZXB0aW9uIGlmIGludmFsaWQgcm91bmRdCisgICAgbmV3bGVuPXJlcy5tYW50Lmxlbmd0aC0oKG91cnNjYWxlLXNjYWxlKSk7IC8vIFs8PTAgaXMgT0tdCisgICAgcmVzPXJlcy5yb3VuZChuZXdsZW4scm91bmQpOyAvLyByb3VuZCB0byByZXF1aXJlZCBsZW5ndGgKKyAgICAvLyBUaGlzIGNvdWxkIGhhdmUgc2hpZnRlZCBsZWZ0IGlmIHJvdW5kIChzYXkpIDAuOS0+MVsuMF0KKyAgICAvLyBSZXBhaXIgaWYgc28gYnkgYWRkaW5nIGEgemVybyBhbmQgcmVkdWNpbmcgZXhwb25lbnQKKyAgICBpZiAocmVzLmV4cCE9KChpbnQpLXNjYWxlKSkgCisgICAgIHsKKyAgICAgIHJlcy5tYW50PWV4dGVuZChyZXMubWFudCxyZXMubWFudC5sZW5ndGgrMSk7CisgICAgICByZXMuZXhwPXJlcy5leHAtMTsKKyAgICAgfQorICAgfQorICByZXMuZm9ybT0oYnl0ZSljb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlBMQUlOOyAvLyBieSBkZWZpbml0aW9uCisgIHJldHVybiByZXM7CisgIH0KKworIC8qKgorICAqIENvbnZlcnRzIHRoaXMgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gdG8gYSA8Y29kZT5zaG9ydDwvY29kZT4uCisgICogSWYgdGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IGhhcyBhIG5vbi16ZXJvIGRlY2ltYWwgcGFydCBvciBpcworICAqIG91dCBvZiB0aGUgcG9zc2libGUgcmFuZ2UgZm9yIGEgPGNvZGU+c2hvcnQ8L2NvZGU+ICgxNi1iaXQgc2lnbmVkCisgICogaW50ZWdlcikgcmVzdWx0IHRoZW4gYW4gPGNvZGU+QXJpdGhtZXRpY0V4Y2VwdGlvbjwvY29kZT4gaXMgdGhyb3duLgorICAqCisgICogQHJldHVybiBBIDxjb2RlPnNob3J0PC9jb2RlPiBlcXVhbCBpbiB2YWx1ZSB0byA8Y29kZT50aGlzPC9jb2RlPi4KKyAgKiBAdGhyb3dzIEFyaXRobWV0aWNFeGNlcHRpb24gaWYgPGNvZGU+dGhpczwvY29kZT4gaGFzIGEgbm9uLXplcm8KKyAgKiAgICAgICAgICAgICAgICAgZGVjaW1hbCBwYXJ0LCBvciB3aWxsIG5vdCBmaXQgaW4gYQorICAqICAgICAgICAgICAgICAgICA8Y29kZT5zaG9ydDwvY29kZT4uCisgICogQHN0YWJsZSBJQ1UgMi4wCisgICovCisgCisgcHVibGljIHNob3J0IHNob3J0VmFsdWVFeGFjdCgpeworICBpbnQgbnVtOworICBudW09dGhpcy5pbnRWYWx1ZUV4YWN0KCk7IC8vIHdpbGwgY2hlY2sgZGVjaW1hbCBwYXJ0IHRvbworICBpZiAoKG51bT4zMjc2Nyl8KG51bTwoLTMyNzY4KSkpIAorICAgdGhyb3cgbmV3IGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uKCJDb252ZXJzaW9uIG92ZXJmbG93OiIrIiAiK3RoaXMudG9TdHJpbmcoKSk7CisgIHJldHVybiAoc2hvcnQpbnVtOworICB9CisKKyAvKioKKyAgKiBSZXR1cm5zIHRoZSBzaWduIG9mIHRoaXMgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4sIGFzIGFuCisgICogPGNvZGU+aW50PC9jb2RlPi4KKyAgKiBUaGlzIHJldHVybnMgdGhlIDxpPnNpZ251bTwvaT4gZnVuY3Rpb24gdmFsdWUgdGhhdCByZXByZXNlbnRzIHRoZQorICAqIHNpZ24gb2YgdGhpcyA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPi4KKyAgKiBUaGF0IGlzLCAtMSBpZiB0aGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gaXMgbmVnYXRpdmUsIDAgaWYgaXQgaXMKKyAgKiBudW1lcmljYWxseSBlcXVhbCB0byB6ZXJvLCBvciAxIGlmIGl0IGlzIHBvc2l0aXZlLgorICAqCisgICogQHJldHVybiBBbiA8Y29kZT5pbnQ8L2NvZGU+IHdoaWNoIGlzIC0xIGlmIHRoZQorICAqICAgICAgICAgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gaXMgbmVnYXRpdmUsIDAgaWYgaXQgaXMKKyAgKiAgICAgICAgIG51bWVyaWNhbGx5IGVxdWFsIHRvIHplcm8sIG9yIDEgaWYgaXQgaXMgcG9zaXRpdmUuCisgICogQHN0YWJsZSBJQ1UgMi4wCisgICovCisgCisgcHVibGljIGludCBzaWdudW0oKXsKKyAgcmV0dXJuIChpbnQpdGhpcy5pbmQ7IC8vIFtub3RlIHRoaXMgYXNzdW1lcyB2YWx1ZXMgZm9yIGluZC5dCisgIH0KKworIC8qKgorICAqIENvbnZlcnRzIHRoaXMgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gdG8gYQorICAqIDxjb2RlPmphdmEubWF0aC5CaWdEZWNpbWFsPC9jb2RlPi4KKyAgKiA8cD4KKyAgKiBUaGlzIGlzIGFuIGV4YWN0IGNvbnZlcnNpb247IHRoZSByZXN1bHQgaXMgdGhlIHNhbWUgYXMgaWYgdGhlCisgICogPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2VyZSBmb3JtYXR0ZWQgYXMgYSBwbGFpbiBudW1iZXIgd2l0aG91dAorICAqIGFueSByb3VuZGluZyBvciBleHBvbmVudCBhbmQgdGhlbiB0aGUKKyAgKiA8Y29kZT5qYXZhLm1hdGguQmlnRGVjaW1hbChqYXZhLmxhbmcuU3RyaW5nKTwvY29kZT4gY29uc3RydWN0b3IKKyAgKiB3ZXJlIHVzZWQgdG8gY29uc3RydWN0IHRoZSByZXN1bHQuCisgICogPHA+CisgICogPGk+KE5vdGU6IHRoaXMgbWV0aG9kIGlzIHByb3ZpZGVkIG9ubHkgaW4gdGhlCisgICogPGNvZGU+Y29tLmlibS5pY3UubWF0aDwvY29kZT4gdmVyc2lvbiBvZiB0aGUgQmlnRGVjaW1hbCBjbGFzcy4KKyAgKiBJdCB3b3VsZCBub3QgYmUgcHJlc2VudCBpbiBhIDxjb2RlPmphdmEubWF0aDwvY29kZT4gdmVyc2lvbi4pPC9pPgorICAqCisgICogQHJldHVybiBUaGUgPGNvZGU+amF2YS5tYXRoLkJpZ0RlY2ltYWw8L2NvZGU+IGVxdWFsIGluIHZhbHVlCisgICogICAgICAgICB0byB0aGlzIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+LgorICAqIEBzdGFibGUgSUNVIDIuMAorICAqLworIAorIHB1YmxpYyBqYXZhLm1hdGguQmlnRGVjaW1hbCB0b0JpZ0RlY2ltYWwoKXsKKyAgcmV0dXJuIG5ldyBqYXZhLm1hdGguQmlnRGVjaW1hbCh0aGlzLnVuc2NhbGVkVmFsdWUoKSx0aGlzLnNjYWxlKCkpOworICB9CisKKyAvKioKKyAgKiBDb252ZXJ0cyB0aGlzIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHRvIGEKKyAgKiA8Y29kZT5qYXZhLm1hdGguQmlnSW50ZWdlcjwvY29kZT4uCisgICogPHA+CisgICogQW55IGRlY2ltYWwgcGFydCBpcyB0cnVuY2F0ZWQgKGRpc2NhcmRlZCkuCisgICogSWYgYW4gZXhjZXB0aW9uIGlzIGRlc2lyZWQgc2hvdWxkIHRoZSBkZWNpbWFsIHBhcnQgYmUgbm9uLXplcm8sCisgICogdXNlIHtAbGluayAjdG9CaWdJbnRlZ2VyRXhhY3QoKX0uCisgICoKKyAgKiBAcmV0dXJuIFRoZSA8Y29kZT5qYXZhLm1hdGguQmlnSW50ZWdlcjwvY29kZT4gZXF1YWwgaW4gdmFsdWUKKyAgKiAgICAgICAgIHRvIHRoZSBpbnRlZ2VyIHBhcnQgb2YgdGhpcyA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPi4KKyAgKiBAc3RhYmxlIElDVSAyLjAKKyAgKi8KKyAKKyBwdWJsaWMgamF2YS5tYXRoLkJpZ0ludGVnZXIgdG9CaWdJbnRlZ2VyKCl7CisgIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCByZXM9bnVsbDsKKyAgaW50IG5ld2xlbj0wOworICBieXRlIG5ld21hbnRbXT1udWxsOworICB7LypzZWxlY3QqLworICBpZiAoKGV4cD49MCkmKGZvcm09PWNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUExBSU4pKQorICAgcmVzPXRoaXM7IC8vIGNhbiBsYXlvdXQgc2ltcGx5CisgIGVsc2UgaWYgKGV4cD49MCkKKyAgIHsKKyAgICByZXM9Y2xvbmUodGhpcyk7IC8vIHNhZmUgY29weQorICAgIHJlcy5mb3JtPShieXRlKWNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUExBSU47IC8vIC4uIGFuZCByZXF1ZXN0IFBMQUlOCisgICB9CisgIGVsc2V7CisgICB7IC8vIGV4cDwwOyBzY2FsZSB0byBiZSB0cnVuY2F0ZWQKKyAgICAvLyB3ZSBjb3VsZCB1c2UgZGl2aWRlSW50ZWdlciwgYnV0IHdlIG1heSBhcyB3ZWxsIGJlIHF1aWNrZXIKKyAgICBpZiAoKChpbnQpLXRoaXMuZXhwKT49dGhpcy5tYW50Lmxlbmd0aCkgCisgICAgIHJlcz1aRVJPOyAvLyBhbGwgYmxvd3MgYXdheQorICAgIGVsc2UgCisgICAgIHsKKyAgICAgIHJlcz1jbG9uZSh0aGlzKTsgLy8gc2FmZSBjb3B5CisgICAgICBuZXdsZW49cmVzLm1hbnQubGVuZ3RoK3Jlcy5leHA7CisgICAgICBuZXdtYW50PW5ldyBieXRlW25ld2xlbl07IC8vIFtzaG9ydGVyXQorICAgICAgamF2YS5sYW5nLlN5c3RlbS5hcnJheWNvcHkoKGphdmEubGFuZy5PYmplY3QpcmVzLm1hbnQsMCwoamF2YS5sYW5nLk9iamVjdCluZXdtYW50LDAsbmV3bGVuKTsKKyAgICAgIHJlcy5tYW50PW5ld21hbnQ7CisgICAgICByZXMuZm9ybT0oYnl0ZSljb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlBMQUlOOworICAgICAgcmVzLmV4cD0wOworICAgICB9CisgICB9CisgIH0KKyAgfQorICByZXR1cm4gbmV3IEJpZ0ludGVnZXIobmV3IGphdmEubGFuZy5TdHJpbmcocmVzLmxheW91dCgpKSk7CisgIH0KKworIC8qKgorICAqIENvbnZlcnRzIHRoaXMgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gdG8gYQorICAqIDxjb2RlPmphdmEubWF0aC5CaWdJbnRlZ2VyPC9jb2RlPi4KKyAgKiA8cD4KKyAgKiBBbiBleGNlcHRpb24gaXMgdGhyb3duIGlmIHRoZSBkZWNpbWFsIHBhcnQgKGlmIGFueSkgaXMgbm9uLXplcm8uCisgICoKKyAgKiBAcmV0dXJuIFRoZSA8Y29kZT5qYXZhLm1hdGguQmlnSW50ZWdlcjwvY29kZT4gZXF1YWwgaW4gdmFsdWUKKyAgKiAgICAgICAgIHRvIHRoZSBpbnRlZ2VyIHBhcnQgb2YgdGhpcyA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPi4KKyAgKiBAdGhyb3dzIEFyaXRobWV0aWNFeGNlcHRpb24gaWYgPGNvZGU+dGhpczwvY29kZT4gaGFzIGEgbm9uLXplcm8KKyAgKiAgICAgICAgIGRlY2ltYWwgcGFydC4KKyAgKiBAc3RhYmxlIElDVSAyLjAKKyAgKi8KKyAKKyBwdWJsaWMgamF2YS5tYXRoLkJpZ0ludGVnZXIgdG9CaWdJbnRlZ2VyRXhhY3QoKXsKKyAgLyogdGVzdCBhbnkgdHJhaWxpbmcgZGVjaW1hbCBwYXJ0ICovCisgIGlmIChleHA8MCkgCisgICB7IC8vIHBvc3NpYmxlIGRlY2ltYWwgcGFydAorICAgIC8qIGFsbCBkZWNpbWFsIHBsYWNlcyBtdXN0IGJlIDA7IG5vdGUgZXhwPDAgKi8KKyAgICBpZiAoKCEoYWxsemVybyhtYW50LG1hbnQubGVuZ3RoK2V4cCkpKSkgCisgICAgIHRocm93IG5ldyBqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbigiRGVjaW1hbCBwYXJ0IG5vbi16ZXJvOiIrIiAiK3RoaXMudG9TdHJpbmcoKSk7CisgICB9CisgIHJldHVybiB0b0JpZ0ludGVnZXIoKTsKKyAgfQorCisgLyoqCisgICogUmV0dXJucyB0aGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gYXMgYSBjaGFyYWN0ZXIgYXJyYXkuCisgICogVGhlIHJlc3VsdCBvZiB0aGlzIG1ldGhvZCBpcyB0aGUgc2FtZSBhcyB1c2luZyB0aGUKKyAgKiBzZXF1ZW5jZSA8Y29kZT50b1N0cmluZygpLnRvQ2hhckFycmF5KCk8L2NvZGU+LCBidXQgYXZvaWRzIGNyZWF0aW5nCisgICogdGhlIGludGVybWVkaWF0ZSA8Y29kZT5TdHJpbmc8L2NvZGU+IGFuZCA8Y29kZT5jaGFyW108L2NvZGU+CisgICogb2JqZWN0cy4KKyAgKgorICAqIEByZXR1cm4gVGhlIDxjb2RlPmNoYXJbXTwvY29kZT4gYXJyYXkgY29ycmVzcG9uZGluZyB0byB0aGlzCisgICogICAgICAgICA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPi4KKyAgKiBAc3RhYmxlIElDVSAyLjAKKyAgKi8KKyAKKyBwdWJsaWMgY2hhcltdIHRvQ2hhckFycmF5KCl7CisgIHJldHVybiBsYXlvdXQoKTsKKyAgfQorCisgLyoqCisgICogUmV0dXJucyB0aGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gYXMgYSA8Y29kZT5TdHJpbmc8L2NvZGU+LgorICAqIFRoaXMgcmV0dXJucyBhIDxjb2RlPlN0cmluZzwvY29kZT4gdGhhdCBleGFjdGx5IHJlcHJlc2VudHMgdGhpcworICAqIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+LCBhcyBkZWZpbmVkIGluIHRoZSBkZWNpbWFsIGRvY3VtZW50YXRpb24KKyAgKiAoc2VlIHtAbGluayBCaWdEZWNpbWFsIGNsYXNzIGhlYWRlcn0pLgorICAqIDxwPgorICAqIEJ5IGRlZmluaXRpb24sIHVzaW5nIHRoZSB7QGxpbmsgI0JpZ0RlY2ltYWwoU3RyaW5nKX0gY29uc3RydWN0b3IKKyAgKiBvbiB0aGUgcmVzdWx0IDxjb2RlPlN0cmluZzwvY29kZT4gd2lsbCBjcmVhdGUgYQorICAqIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHRoYXQgaXMgZXhhY3RseSBlcXVhbCB0byB0aGUgb3JpZ2luYWwKKyAgKiA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPi4KKyAgKgorICAqIEByZXR1cm4gVGhlIDxjb2RlPlN0cmluZzwvY29kZT4gZXhhY3RseSBjb3JyZXNwb25kaW5nIHRvIHRoaXMKKyAgKiAgICAgICAgIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+LgorICAqIEBzZWUgICAgI2Zvcm1hdChpbnQsIGludCkKKyAgKiBAc2VlICAgICNmb3JtYXQoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkKKyAgKiBAc2VlICAgICN0b0NoYXJBcnJheSgpCisgICogQHN0YWJsZSBJQ1UgMi4wCisgICovCisgCisgcHVibGljIGphdmEubGFuZy5TdHJpbmcgdG9TdHJpbmcoKXsKKyAgcmV0dXJuIG5ldyBqYXZhLmxhbmcuU3RyaW5nKGxheW91dCgpKTsKKyAgfQorCisgLyoqCisgICogUmV0dXJucyB0aGUgbnVtYmVyIGFzIGEgPGNvZGU+QmlnSW50ZWdlcjwvY29kZT4gYWZ0ZXIgcmVtb3ZpbmcgdGhlCisgICogc2NhbGUuCisgICogVGhhdCBpcywgdGhlIG51bWJlciBpcyBleHByZXNzZWQgYXMgYSBwbGFpbiBudW1iZXIsIGFueSBkZWNpbWFsCisgICogcG9pbnQgaXMgdGhlbiByZW1vdmVkIChyZXRhaW5pbmcgdGhlIGRpZ2l0cyBvZiBhbnkgZGVjaW1hbCBwYXJ0KSwKKyAgKiBhbmQgdGhlIHJlc3VsdCBpcyB0aGVuIGNvbnZlcnRlZCB0byBhIDxjb2RlPkJpZ0ludGVnZXI8L2NvZGU+LgorICAqCisgICogQHJldHVybiBUaGUgPGNvZGU+amF2YS5tYXRoLkJpZ0ludGVnZXI8L2NvZGU+IGVxdWFsIGluIHZhbHVlIHRvCisgICogICAgICAgICB0aGlzIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IG11bHRpcGxpZWQgYnkgdGVuIHRvIHRoZQorICAqICAgICAgICAgcG93ZXIgb2YgPGNvZGU+dGhpcy5zY2FsZSgpPC9jb2RlPi4KKyAgKiBAc3RhYmxlIElDVSAyLjAKKyAgKi8KKyAKKyBwdWJsaWMgamF2YS5tYXRoLkJpZ0ludGVnZXIgdW5zY2FsZWRWYWx1ZSgpeworICBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgcmVzPW51bGw7CisgIGlmIChleHA+PTApIAorICAgcmVzPXRoaXM7CisgIGVsc2UgCisgICB7CisgICAgcmVzPWNsb25lKHRoaXMpOyAvLyBzYWZlIGNvcHkKKyAgICByZXMuZXhwPTA7IC8vIGRyb3Agc2NhbGUKKyAgIH0KKyAgcmV0dXJuIHJlcy50b0JpZ0ludGVnZXIoKTsKKyAgfQorCisgLyoqCisgICogVHJhbnNsYXRlcyBhIDxjb2RlPmRvdWJsZTwvY29kZT4gdG8gYSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPi4KKyAgKiA8cD4KKyAgKiBSZXR1cm5zIGEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hpY2ggaXMgdGhlIGRlY2ltYWwKKyAgKiByZXByZXNlbnRhdGlvbiBvZiB0aGUgNjQtYml0IHNpZ25lZCBiaW5hcnkgZmxvYXRpbmcgcG9pbnQKKyAgKiBwYXJhbWV0ZXIuIElmIHRoZSBwYXJhbWV0ZXIgaXMgaW5maW5pdGUsIG9yIGlzIG5vdCBhIG51bWJlciAoTmFOKSwKKyAgKiBhIDxjb2RlPk51bWJlckZvcm1hdEV4Y2VwdGlvbjwvY29kZT4gaXMgdGhyb3duLgorICAqIDxwPgorICAqIFRoZSBudW1iZXIgaXMgY29uc3RydWN0ZWQgYXMgdGhvdWdoIDxjb2RlPm51bTwvY29kZT4gaGFkIGJlZW4KKyAgKiBjb252ZXJ0ZWQgdG8gYSA8Y29kZT5TdHJpbmc8L2NvZGU+IHVzaW5nIHRoZQorICAqIDxjb2RlPkRvdWJsZS50b1N0cmluZygpPC9jb2RlPiBtZXRob2QgYW5kIHRoZQorICAqIHtAbGluayAjQmlnRGVjaW1hbChqYXZhLmxhbmcuU3RyaW5nKX0gY29uc3RydWN0b3IgaGFkIHRoZW4gYmVlbiB1c2VkLgorICAqIFRoaXMgaXMgdHlwaWNhbGx5IG5vdCBhbiBleGFjdCBjb252ZXJzaW9uLgorICAqCisgICogQHBhcmFtICBkdWIgVGhlIDxjb2RlPmRvdWJsZTwvY29kZT4gdG8gYmUgdHJhbnNsYXRlZC4KKyAgKiBAcmV0dXJuICAgICBUaGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gZXF1YWwgaW4gdmFsdWUgdG8KKyAgKiAgICAgICAgICAgICA8Y29kZT5kdWI8L2NvZGU+LgorICAqIEB0aHJvd3MgTnVtYmVyRm9ybWF0RXhjZXB0aW9uIGlmIHRoZSBwYXJhbWV0ZXIgaXMgaW5maW5pdGUgb3IKKyAgKiAgICAgICAgICAgICBub3QgYSBudW1iZXIuCisgICogQHN0YWJsZSBJQ1UgMi4wCisgICovCisgCisgcHVibGljIHN0YXRpYyBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgdmFsdWVPZihkb3VibGUgZHViKXsKKyAgLy8gUmVtaW5kZXI6IGEgemVybyBkb3VibGUgcmV0dXJucyAnMC4wJywgc28gd2UgY2Fubm90IGZhc3RwYXRoIHRvCisgIC8vIHVzZSB0aGUgY29uc3RhbnQgWkVSTy4gIFRoaXMgbWlnaHQgYmUgaW1wb3J0YW50IGVub3VnaCB0byBqdXN0aWZ5CisgIC8vIGEgZmFjdG9yeSBhcHByb2FjaCwgYSBjYWNoZSwgb3IgYSBmZXcgcHJpdmF0ZSBjb25zdGFudHMsIGxhdGVyLgorICByZXR1cm4gbmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCgobmV3IGphdmEubGFuZy5Eb3VibGUoZHViKSkudG9TdHJpbmcoKSk7CisgIH0KKworIC8qKgorICAqIFRyYW5zbGF0ZXMgYSA8Y29kZT5sb25nPC9jb2RlPiB0byBhIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+LgorICAqIFRoYXQgaXMsIHJldHVybnMgYSBwbGFpbiA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcworICAqIGVxdWFsIHRvIHRoZSBnaXZlbiA8Y29kZT5sb25nPC9jb2RlPi4KKyAgKgorICAqIEBwYXJhbSAgbGludCBUaGUgPGNvZGU+bG9uZzwvY29kZT4gdG8gYmUgdHJhbnNsYXRlZC4KKyAgKiBAcmV0dXJuICAgICAgVGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IGVxdWFsIGluIHZhbHVlIHRvCisgICogICAgICAgICAgICAgIDxjb2RlPmxpbnQ8L2NvZGU+LgorICAqIEBzdGFibGUgSUNVIDIuMAorICAqLworIAorIHB1YmxpYyBzdGF0aWMgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIHZhbHVlT2YobG9uZyBsaW50KXsKKyAgcmV0dXJuIHZhbHVlT2YobGludCwwKTsKKyAgfQorCisgLyoqCisgICogVHJhbnNsYXRlcyBhIDxjb2RlPmxvbmc8L2NvZGU+IHRvIGEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2l0aCBhCisgICogZ2l2ZW4gc2NhbGUuCisgICogVGhhdCBpcywgcmV0dXJucyBhIHBsYWluIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHdob3NlIHVuc2NhbGVkCisgICogdmFsdWUgaXMgZXF1YWwgdG8gdGhlIGdpdmVuIDxjb2RlPmxvbmc8L2NvZGU+LCBhZGp1c3RlZCBieSB0aGUKKyAgKiBzZWNvbmQgcGFyYW1ldGVyLCA8Y29kZT5zY2FsZTwvY29kZT4uCisgICogPHA+CisgICogVGhlIHJlc3VsdCBpcyBnaXZlbiBieToKKyAgKiA8cD48Y29kZT4KKyAgKiAobmV3IEJpZ0RlY2ltYWwobGludCkpLmRpdmlkZShURU4ucG93KG5ldyBCaWdEZWNpbWFsKHNjYWxlKSkpCisgICogPC9jb2RlPgorICAqIDxwPgorICAqIEEgPGNvZGU+TnVtYmVyRm9ybWF0RXhjZXB0aW9uPC9jb2RlPiBpcyB0aHJvd24gaWYgPGNvZGU+c2NhbGU8L2NvZGU+CisgICogaXMgbmVnYXRpdmUuCisgICoKKyAgKiBAcGFyYW0gIGxpbnQgIFRoZSA8Y29kZT5sb25nPC9jb2RlPiB0byBiZSB0cmFuc2xhdGVkLgorICAqIEBwYXJhbSAgc2NhbGUgVGhlIDxjb2RlPmludDwvY29kZT4gc2NhbGUgdG8gYmUgYXBwbGllZC4KKyAgKiBAcmV0dXJuICAgICAgIFRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBlcXVhbCBpbiB2YWx1ZSB0bworICAqICAgICAgICAgICAgICAgPGNvZGU+bGludDwvY29kZT4uCisgICogQHRocm93cyBOdW1iZXJGb3JtYXRFeGNlcHRpb24gaWYgdGhlIHNjYWxlIGlzIG5lZ2F0aXZlLgorICAqIEBzdGFibGUgSUNVIDIuMAorICAqLworIAorIHB1YmxpYyBzdGF0aWMgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIHZhbHVlT2YobG9uZyBsaW50LGludCBzY2FsZSl7CisgIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCByZXM9bnVsbDsKKyAgey8qc2VsZWN0Ki8KKyAgaWYgKGxpbnQ9PTApCisgICByZXM9WkVSTzsKKyAgZWxzZSBpZiAobGludD09MSkKKyAgIHJlcz1PTkU7CisgIGVsc2UgaWYgKGxpbnQ9PTEwKQorICAgcmVzPVRFTjsKKyAgZWxzZXsKKyAgIHJlcz1uZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKGxpbnQpOworICB9CisgIH0KKyAgaWYgKHNjYWxlPT0wKSAKKyAgIHJldHVybiByZXM7CisgIGlmIChzY2FsZTwwKSAKKyAgIHRocm93IG5ldyBqYXZhLmxhbmcuTnVtYmVyRm9ybWF0RXhjZXB0aW9uKCJOZWdhdGl2ZSBzY2FsZToiKyIgIitzY2FsZSk7CisgIHJlcz1jbG9uZShyZXMpOyAvLyBzYWZlIGNvcHkgW2RvIG5vdCBtdXRhdGVdCisgIHJlcy5leHA9KGludCktc2NhbGU7IC8vIGV4cG9uZW50IGlzIC1zY2FsZQorICByZXR1cm4gcmVzOworICB9CisKKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgLyogUHJpdmF0ZSBtZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiA8c2dtbD4gUmV0dXJuIGNoYXIgYXJyYXkgdmFsdWUgb2YgYSBCaWdEZWNpbWFsIChjb252ZXJzaW9uIGZyb20KKyAgICAgICBCaWdEZWNpbWFsIHRvIGxhaWQtb3V0IGNhbm9uaWNhbCBjaGFyIGFycmF5KS4KKyAgICA8cD5UaGUgbWFudGlzc2Egd2lsbCBlaXRoZXIgYWxyZWFkeSBoYXZlIGJlZW4gcm91bmRlZCAoZm9sbG93aW5nIGFuCisgICAgICAgb3BlcmF0aW9uKSBvciB3aWxsIGJlIG9mIGxlbmd0aCBhcHByb3ByaWF0ZSAoaW4gdGhlIGNhc2Ugb2YKKyAgICAgICBjb25zdHJ1Y3Rpb24gZnJvbSBhbiBpbnQsIGZvciBleGFtcGxlKS4KKyAgICA8cD5XZSBtdXN0IG5vdCBhbHRlciB0aGUgbWFudGlzc2EsIGhlcmUuCisgICAgPHA+J2Zvcm0nIGRlc2NyaWJlcyB3aGV0aGVyIHdlIGFyZSB0byB1c2UgZXhwb25lbnRpYWwgbm90YXRpb24gKGFuZAorICAgICAgIGlmIHNvLCB3aGljaCksIG9yIGlmIHdlIGFyZSB0byBsYXkgb3V0IGFzIGEgcGxhaW4vcHVyZSBudW1lcmljLgorICAgIDwvc2dtbD4gKi8KKyAKKyBwcml2YXRlIGNoYXJbXSBsYXlvdXQoKXsKKyAgY2hhciBjbWFudFtdOworICBpbnQgaT0wOworICBqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIHNiPW51bGw7CisgIGludCBldXNlPTA7CisgIGludCBzaWc9MDsKKyAgY2hhciBjc2lnbj0wOworICBjaGFyIHJlY1tdPW51bGw7CisgIGludCBuZWVkc2lnbjsKKyAgaW50IG1hZzsKKyAgaW50IGxlbj0wOworICBjbWFudD1uZXcgY2hhclttYW50Lmxlbmd0aF07IC8vIGNvcHkgYnl0ZVtdIHRvIGEgY2hhcltdCisgIHtpbnQgJDE4PW1hbnQubGVuZ3RoO2k9MDtpOmZvcig7JDE4PjA7JDE4LS0saSsrKXsKKyAgIGNtYW50W2ldPShjaGFyKShtYW50W2ldKygoaW50KSgnMCcpKSk7CisgICB9CisgIH0vKmkqLworICAKKyAgaWYgKGZvcm0hPWNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUExBSU4pIAorICAgey8qIGV4cG9uZW50aWFsIG5vdGF0aW9uIG5lZWRlZCAqLworICAgIHNiPW5ldyBqYXZhLmxhbmcuU3RyaW5nQnVmZmVyKGNtYW50Lmxlbmd0aCsxNSk7IC8vIC14Lnh4eEUrOTk5OTk5OTk5CisgICAgaWYgKGluZD09aXNuZWcpIAorICAgICBzYi5hcHBlbmQoJy0nKTsKKyAgICBldXNlPShleHArY21hbnQubGVuZ3RoKS0xOyAvLyBleHBvbmVudCB0byB1c2UKKyAgICAvKiBzZXR1cCBzaWc9c2lnbmlmaWNhbnQgZGlnaXRzIGFuZCBjb3B5IHRvIHJlc3VsdCAqLworICAgIGlmIChmb3JtPT1jb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlNDSUVOVElGSUMpIAorICAgICB7IC8vIFtkZWZhdWx0XQorICAgICAgc2IuYXBwZW5kKGNtYW50WzBdKTsgLy8gc2lnbmlmaWNhbnQgY2hhcmFjdGVyCisgICAgICBpZiAoY21hbnQubGVuZ3RoPjEpICAvLyBoYXZlIGRlY2ltYWwgcGFydAorICAgICAgIHNiLmFwcGVuZCgnLicpLmFwcGVuZChjbWFudCwxLGNtYW50Lmxlbmd0aC0xKTsKKyAgICAgfQorICAgIGVsc2UgCisgICAgIHtlbmdpbmVlcmluZzpkb3sKKyAgICAgIHNpZz1ldXNlJTM7IC8vIGNvbW1vbgorICAgICAgaWYgKHNpZzwwKSAKKyAgICAgICBzaWc9MytzaWc7IC8vIG5lZ2F0aXZlIGV4cG9uZW50CisgICAgICBldXNlPWV1c2Utc2lnOworICAgICAgc2lnKys7CisgICAgICBpZiAoc2lnPj1jbWFudC5sZW5ndGgpIAorICAgICAgIHsgLy8gemVybyBwYWRkaW5nIG1heSBiZSBuZWVkZWQKKyAgICAgICAgc2IuYXBwZW5kKGNtYW50LDAsY21hbnQubGVuZ3RoKTsKKyAgICAgICAge2ludCAkMTk9c2lnLWNtYW50Lmxlbmd0aDtmb3IoOyQxOT4wOyQxOS0tKXsKKyAgICAgICAgIHNiLmFwcGVuZCgnMCcpOworICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgfQorICAgICAgZWxzZSAKKyAgICAgICB7IC8vIGRlY2ltYWwgcG9pbnQgbmVlZGVkCisgICAgICAgIHNiLmFwcGVuZChjbWFudCwwLHNpZykuYXBwZW5kKCcuJykuYXBwZW5kKGNtYW50LHNpZyxjbWFudC5sZW5ndGgtc2lnKTsKKyAgICAgICB9CisgICAgIH13aGlsZShmYWxzZSk7fS8qZW5naW5lZXJpbmcqLworICAgIGlmIChldXNlIT0wKSAKKyAgICAgeworICAgICAgaWYgKGV1c2U8MCkgCisgICAgICAgeworICAgICAgICBjc2lnbj0nLSc7CisgICAgICAgIGV1c2U9KGludCktZXVzZTsKKyAgICAgICB9CisgICAgICBlbHNlIAorICAgICAgIGNzaWduPScrJzsKKyAgICAgIHNiLmFwcGVuZCgnRScpLmFwcGVuZChjc2lnbikuYXBwZW5kKGV1c2UpOworICAgICB9CisgICAgcmVjPW5ldyBjaGFyW3NiLmxlbmd0aCgpXTsKKyAgICBVdGlsaXR5LmdldENoYXJzKHNiLCAwLHNiLmxlbmd0aCgpLHJlYywwKTsKKyAgICByZXR1cm4gcmVjOworICAgfQorICAKKyAgLyogSGVyZSBmb3Igbm9uLWV4cG9uZW50aWFsIChwbGFpbikgbm90YXRpb24gKi8KKyAgaWYgKGV4cD09MCkgCisgICB7LyogZWFzeSAqLworICAgIGlmIChpbmQ+PTApIAorICAgICByZXR1cm4gY21hbnQ7IC8vIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyCisgICAgcmVjPW5ldyBjaGFyW2NtYW50Lmxlbmd0aCsxXTsKKyAgICByZWNbMF09Jy0nOworICAgIGphdmEubGFuZy5TeXN0ZW0uYXJyYXljb3B5KChqYXZhLmxhbmcuT2JqZWN0KWNtYW50LDAsKGphdmEubGFuZy5PYmplY3QpcmVjLDEsY21hbnQubGVuZ3RoKTsKKyAgICByZXR1cm4gcmVjOworICAgfQorICAKKyAgLyogTmVlZCBhICcuJyBhbmQvb3Igc29tZSB6ZXJvcyAqLworICBuZWVkc2lnbj0oaW50KSgoaW5kPT1pc25lZyk/MTowKTsgLy8gc3BhY2UgZm9yIHNpZ24/ICAwIG9yIDEKKyAgCisgIC8qIE1BRyBpcyB0aGUgcG9zaXRpb24gb2YgdGhlIHBvaW50IGluIHRoZSBtYW50aXNzYSAoaW5kZXggb2YgdGhlCisgICAgIGNoYXJhY3RlciBpdCBmb2xsb3dzKSAqLworICBtYWc9ZXhwK2NtYW50Lmxlbmd0aDsKKyAgCisgIGlmIChtYWc8MSkgCisgICB7LyogMC4wMHh4eHggZm9ybSAqLworICAgIGxlbj0obmVlZHNpZ24rMiktZXhwOyAvLyBuZWVkc2lnbisyKygtbWFnKStjbWFudC5sZW5ndGgKKyAgICByZWM9bmV3IGNoYXJbbGVuXTsKKyAgICBpZiAobmVlZHNpZ24hPTApIAorICAgICByZWNbMF09Jy0nOworICAgIHJlY1tuZWVkc2lnbl09JzAnOworICAgIHJlY1tuZWVkc2lnbisxXT0nLic7CisgICAge2ludCAkMjA9KGludCktbWFnO2k9bmVlZHNpZ24rMjtpOmZvcig7JDIwPjA7JDIwLS0saSsrKXsgLy8gbWF5YmUgbm9uZQorICAgICByZWNbaV09JzAnOworICAgICB9CisgICAgfS8qaSovCisgICAgamF2YS5sYW5nLlN5c3RlbS5hcnJheWNvcHkoKGphdmEubGFuZy5PYmplY3QpY21hbnQsMCwoamF2YS5sYW5nLk9iamVjdClyZWMsKG5lZWRzaWduKzIpLW1hZyxjbWFudC5sZW5ndGgpOworICAgIHJldHVybiByZWM7CisgICB9CisgIAorICBpZiAobWFnPmNtYW50Lmxlbmd0aCkgCisgICB7LyogeHh4eDAwMDAgZm9ybSAqLworICAgIGxlbj1uZWVkc2lnbittYWc7CisgICAgcmVjPW5ldyBjaGFyW2xlbl07CisgICAgaWYgKG5lZWRzaWduIT0wKSAKKyAgICAgcmVjWzBdPSctJzsKKyAgICBqYXZhLmxhbmcuU3lzdGVtLmFycmF5Y29weSgoamF2YS5sYW5nLk9iamVjdCljbWFudCwwLChqYXZhLmxhbmcuT2JqZWN0KXJlYyxuZWVkc2lnbixjbWFudC5sZW5ndGgpOworICAgIHtpbnQgJDIxPW1hZy1jbWFudC5sZW5ndGg7aT1uZWVkc2lnbitjbWFudC5sZW5ndGg7aTpmb3IoOyQyMT4wOyQyMS0tLGkrKyl7IC8vIG5ldmVyIDAKKyAgICAgcmVjW2ldPScwJzsKKyAgICAgfQorICAgIH0vKmkqLworICAgIHJldHVybiByZWM7CisgICB9CisgIAorICAvKiBkZWNpbWFsIHBvaW50IGlzIGluIHRoZSBtaWRkbGUgb2YgdGhlIG1hbnRpc3NhICovCisgIGxlbj0obmVlZHNpZ24rMSkrY21hbnQubGVuZ3RoOworICByZWM9bmV3IGNoYXJbbGVuXTsKKyAgaWYgKG5lZWRzaWduIT0wKSAKKyAgIHJlY1swXT0nLSc7CisgIGphdmEubGFuZy5TeXN0ZW0uYXJyYXljb3B5KChqYXZhLmxhbmcuT2JqZWN0KWNtYW50LDAsKGphdmEubGFuZy5PYmplY3QpcmVjLG5lZWRzaWduLG1hZyk7CisgIHJlY1tuZWVkc2lnbittYWddPScuJzsKKyAgamF2YS5sYW5nLlN5c3RlbS5hcnJheWNvcHkoKGphdmEubGFuZy5PYmplY3QpY21hbnQsbWFnLChqYXZhLmxhbmcuT2JqZWN0KXJlYywobmVlZHNpZ24rbWFnKSsxLGNtYW50Lmxlbmd0aC1tYWcpOworICByZXR1cm4gcmVjOworICB9CisKKyAvKiA8c2dtbD4gQ2hlY2tzIGEgQmlnRGVjaW1hbCBhcmd1bWVudCB0byBlbnN1cmUgaXQncyBhIHRydWUgaW50ZWdlcgorICAgICAgIGluIGEgZ2l2ZW4gcmFuZ2UuCisgICAgPHA+SWYgT0ssIHJldHVybnMgaXQgYXMgYW4gaW50LiA8L3NnbWw+ICovCisgLy8gW2N1cnJlbnRseSBvbmx5IHVzZWQgYnkgcG93XQorIAorIHByaXZhdGUgaW50IGludGNoZWNrKGludCBtaW4saW50IG1heCl7CisgIGludCBpOworICBpPXRoaXMuaW50VmFsdWVFeGFjdCgpOyAvLyBbY2hlY2tzIGZvciBub24tMCBkZWNpbWFsIHBhcnRdCisgIC8vIFVzZSBzYW1lIG1lc3NhZ2UgYXMgdGhvdWdoIGludFZhbHVlRXhhY3QgZmFpbGVkIGR1ZSB0byBzaXplCisgIGlmICgoaTxtaW4pfChpPm1heCkpIAorICAgdGhyb3cgbmV3IGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uKCJDb252ZXJzaW9uIG92ZXJmbG93OiIrIiAiK2kpOworICByZXR1cm4gaTsKKyAgfQorCisgLyogPHNnbWw+IENhcnJ5IG91dCBkaXZpc2lvbiBvcGVyYXRpb25zLiA8L3NnbWw+ICovCisgLyoKKyAgICBBcmcxIGlzIG9wZXJhdGlvbiBjb2RlOiBEPWRpdmlkZSwgST1pbnRlZ2VyIGRpdmlkZSwgUj1yZW1haW5kZXIKKyAgICBBcmcyIGlzIHRoZSByaHMuCisgICAgQXJnMyBpcyB0aGUgY29udGV4dC4KKyAgICBBcmc0IGlzIGV4cGxpY2l0IHNjYWxlIGlmZiBjb2RlPSdEJyBvciAnSScgKC0xIGlmIG5vbmUpLgorIAorICAgIFVuZGVybHlpbmcgYWxnb3JpdGhtIChjb21wbGljYXRpb25zIGZvciBSZW1haW5kZXIgZnVuY3Rpb24gYW5kCisgICAgc2NhbGVkIGRpdmlzaW9uIGFyZSBvbWl0dGVkIGZvciBjbGFyaXR5KToKKyAKKyAgICAgIFRlc3QgZm9yIHgvMCBhbmQgdGhlbiAwL3gKKyAgICAgIEV4cCA9RXhwMSAtIEV4cDIKKyAgICAgIEV4cCA9RXhwICtsZW4odmFyMSkgLWxlbih2YXIyKQorICAgICAgU2lnbj1TaWduMSAqIFNpZ24yCisgICAgICBQYWQgYWNjdW11bGF0b3IgKFZhcjEpIHRvIGRvdWJsZS1sZW5ndGggd2l0aCAwJ3MgKHBhZDEpCisgICAgICBQYWQgVmFyMiB0byBzYW1lIGxlbmd0aCBhcyBWYXIxCisgICAgICBCMkI9MXN0IHR3byBkaWdpdHMgb2YgdmFyMiwgKzEgdG8gYWxsb3cgZm9yIHJvdW5kdXAKKyAgICAgIGhhdmU9MAorICAgICAgRG8gdW50aWwgKGhhdmU9ZGlnaXRzKzEgT1IgcmVzaWR1ZT0wKQorICAgICAgICBpZiBleHA8MCB0aGVuIGlmIGludGVnZXIgZGl2aWRlL3Jlc2lkdWUgdGhlbiBsZWF2ZQorICAgICAgICB0aGlzX2RpZ2l0PTAKKyAgICAgICAgRG8gZm9yZXZlcgorICAgICAgICAgICBjb21wYXJlIG51bWJlcnMKKyAgICAgICAgICAgaWYgPDAgdGhlbiBsZWF2ZSBpbm5lcl9sb29wCisgICAgICAgICAgIGlmID0wIHRoZW4gKC0gcXVpY2sgZXhpdCB3aXRob3V0IHN1YnRyYWN0IC0pIGRvCisgICAgICAgICAgICAgIHRoaXNfZGlnaXQ9dGhpc19kaWdpdCsxOyBvdXRwdXQgdGhpc19kaWdpdAorICAgICAgICAgICAgICBsZWF2ZSBvdXRlcl9sb29wOyBlbmQKKyAgICAgICAgICAgQ29tcGFyZSBsZW5ndGhzIG9mIG51bWJlcnMgKG1hbnRpc3NhZSk6CisgICAgICAgICAgIElmIHNhbWUgdGhlbiBDQT1maXJzdF9kaWdpdF9vZl9WYXIxCisgICAgICAgICAgICAgICAgICAgZWxzZSBDQT1maXJzdF90d29fZGlnaXRzX29mX1ZhcjEKKyAgICAgICAgICAgbXVsdD1jYSoxMC9iMmIgICAtLSBHb29kIGFuZCBzYWZlIGd1ZXNzIGF0IGRpdmlzb3IKKyAgICAgICAgICAgaWYgbXVsdD0wIHRoZW4gbXVsdD0xCisgICAgICAgICAgIHRoaXNfZGlnaXQ9dGhpc19kaWdpdCttdWx0CisgICAgICAgICAgIHN1YnRyYWN0CisgICAgICAgICAgIGVuZCBpbm5lcl9sb29wCisgICAgICAgICBpZiBoYXZlXD0wIHwgdGhpc19kaWdpdFw9MCB0aGVuIGRvCisgICAgICAgICAgIG91dHB1dCB0aGlzX2RpZ2l0CisgICAgICAgICAgIGhhdmU9aGF2ZSsxOyBlbmQKKyAgICAgICAgIHZhcjI9dmFyMi8xMAorICAgICAgICAgZXhwPWV4cC0xCisgICAgICAgICBlbmQgb3V0ZXJfbG9vcAorICAgICAgZXhwPWV4cCsxICAgLS0gc2V0IHRoZSBwcm9wZXIgZXhwb25lbnQKKyAgICAgIGlmIGhhdmU9MCB0aGVuIGdlbmVyYXRlIGFuc3dlcj0wCisgICAgICBSZXR1cm4gdG8gRklOSVNIRUQKKyAgICAgIFJlc3VsdCBkZWZpbmVkIGJ5IE1BVEhWMQorIAorICAgIEZvciBleHRlbmRlZCBjb21tZW50YXJ5LCBzZWUgRE1TUkNOLgorICAqLworIAorIHByaXZhdGUgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIGRvZGl2aWRlKGNoYXIgY29kZSxjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgcmhzLGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQgc2V0LGludCBzY2FsZSl7CisgIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCBsaHM7CisgIGludCByZXFkaWc7CisgIGludCBuZXdleHA7CisgIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCByZXM7CisgIGludCBuZXdsZW47CisgIGJ5dGUgdmFyMVtdOworICBpbnQgdmFyMWxlbjsKKyAgYnl0ZSB2YXIyW107CisgIGludCB2YXIybGVuOworICBpbnQgYjJiOworICBpbnQgaGF2ZTsKKyAgaW50IHRoaXNkaWdpdD0wOworICBpbnQgaT0wOworICBieXRlIHYyPTA7CisgIGludCBiYT0wOworICBpbnQgbXVsdD0wOworICBpbnQgc3RhcnQ9MDsKKyAgaW50IHBhZGRpbmc9MDsKKyAgaW50IGQ9MDsKKyAgYnl0ZSBuZXd2YXIxW109bnVsbDsKKyAgYnl0ZSBsYXN0aGF2ZT0wOworICBpbnQgYWN0ZGlnPTA7CisgIGJ5dGUgbmV3bWFudFtdPW51bGw7CisgIAorICBpZiAoc2V0Lmxvc3REaWdpdHMpIAorICAgY2hlY2tkaWdpdHMocmhzLHNldC5kaWdpdHMpOworICBsaHM9dGhpczsgLy8gbmFtZSBmb3IgY2xhcml0eQorICAKKyAgLy8gW25vdGUgd2UgbXVzdCBoYXZlIGNoZWNrZWQgbG9zdERpZ2l0cyBiZWZvcmUgdGhlIGZvbGxvd2luZyBjaGVja3NdCisgIGlmIChyaHMuaW5kPT0wKSAKKyAgIHRocm93IG5ldyBqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbigiRGl2aWRlIGJ5IDAiKTsgLy8gaW5jbHVkZXMgMC8wCisgIGlmIChsaHMuaW5kPT0wKSAKKyAgIHsgLy8gMC94ID0+IDAgW3Bvc3NpYmx5IHdpdGggLjBzXQorICAgIGlmIChzZXQuZm9ybSE9Y29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5QTEFJTikgCisgICAgIHJldHVybiBaRVJPOworICAgIGlmIChzY2FsZT09KC0xKSkgCisgICAgIHJldHVybiBsaHM7CisgICAgcmV0dXJuIGxocy5zZXRTY2FsZShzY2FsZSk7CisgICB9CisgIAorICAvKiBQcmVwYXJlIG51bWJlcnMgYWNjb3JkaW5nIHRvIEJpZ0RlY2ltYWwgcnVsZXMgKi8KKyAgcmVxZGlnPXNldC5kaWdpdHM7IC8vIGxvY2FsIGNvcHkgKGhlYXZpbHkgdXNlZCkKKyAgaWYgKHJlcWRpZz4wKSAKKyAgIHsKKyAgICBpZiAobGhzLm1hbnQubGVuZ3RoPnJlcWRpZykgCisgICAgIGxocz1jbG9uZShsaHMpLnJvdW5kKHNldCk7CisgICAgaWYgKHJocy5tYW50Lmxlbmd0aD5yZXFkaWcpIAorICAgICByaHM9Y2xvbmUocmhzKS5yb3VuZChzZXQpOworICAgfQorICBlbHNlIAorICAgey8qIHNjYWxlZCBkaXZpZGUgKi8KKyAgICBpZiAoc2NhbGU9PSgtMSkpIAorICAgICBzY2FsZT1saHMuc2NhbGUoKTsKKyAgICAvLyBzZXQgcmVxZGlnIHRvIGJlIGF0IGxlYXN0IGxhcmdlIGVub3VnaCBmb3IgdGhlIGNvbXB1dGF0aW9uCisgICAgcmVxZGlnPWxocy5tYW50Lmxlbmd0aDsgLy8gYmFzZSBsZW5ndGgKKyAgICAvLyBuZXh0IGxpbmUgaGFuZGxlcyBib3RoIHBvc2l0aXZlIGxocy5leHAgYW5kIGFsc28gc2NhbGUgbWlzbWF0Y2gKKyAgICBpZiAoc2NhbGUhPSgoaW50KS1saHMuZXhwKSkgCisgICAgIHJlcWRpZz0ocmVxZGlnK3NjYWxlKStsaHMuZXhwOworICAgIHJlcWRpZz0ocmVxZGlnLSgocmhzLm1hbnQubGVuZ3RoLTEpKSktcmhzLmV4cDsgLy8gcmVkdWNlIGJ5IFJIUyBlZmZlY3QKKyAgICBpZiAocmVxZGlnPGxocy5tYW50Lmxlbmd0aCkgCisgICAgIHJlcWRpZz1saHMubWFudC5sZW5ndGg7IC8vIGNsYW1wCisgICAgaWYgKHJlcWRpZzxyaHMubWFudC5sZW5ndGgpIAorICAgICByZXFkaWc9cmhzLm1hbnQubGVuZ3RoOyAvLyAuLgorICAgfQorICAKKyAgLyogcHJlY2FsY3VsYXRlIGV4cG9uZW50ICovCisgIG5ld2V4cD0oKGxocy5leHAtcmhzLmV4cCkrbGhzLm1hbnQubGVuZ3RoKS1yaHMubWFudC5sZW5ndGg7CisgIC8qIElmIG5ldyBleHBvbmVudCAtdmUsIHRoZW4gc29tZSBxdWljayBleGl0cyBhcmUgcG9zc2libGUgKi8KKyAgaWYgKG5ld2V4cDwwKSAKKyAgIGlmIChjb2RlIT0nRCcpIAorICAgIHsKKyAgICAgaWYgKGNvZGU9PSdJJykgCisgICAgICByZXR1cm4gWkVSTzsgLy8gZWFzeSAtIG5vIGludGVnZXIgcGFydAorICAgICAvKiBNdXN0IGJlICdSJzsgcmVtYWluZGVyIGlzIFtmaW5pc2hlZCBjbG9uZSBvZl0gaW5wdXQgdmFsdWUgKi8KKyAgICAgcmV0dXJuIGNsb25lKGxocykuZmluaXNoKHNldCxmYWxzZSk7CisgICAgfQorICAKKyAgLyogV2UgbmVlZCBzbG93IGRpdmlzaW9uICovCisgIHJlcz1uZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCk7IC8vIHdoZXJlIHdlJ2xsIGJ1aWxkIHJlc3VsdAorICByZXMuaW5kPShieXRlKShsaHMuaW5kKnJocy5pbmQpOyAvLyBmaW5hbCBzaWduIChmb3IgRC9JKQorICByZXMuZXhwPW5ld2V4cDsgLy8gaW5pdGlhbCBleHBvbmVudCAoZm9yIEQvSSkKKyAgcmVzLm1hbnQ9bmV3IGJ5dGVbcmVxZGlnKzFdOyAvLyB3aGVyZSBidWlsZCB0aGUgcmVzdWx0CisgIAorICAvKiBOb3cgW3ZpcnR1YWxseSBwYWQgdGhlIG1hbnRpc3NhZSB3aXRoIHRyYWlsaW5nIHplcm9zICovCisgIC8vIEFsc28gY29weSB0aGUgTEhTLCB3aGljaCB3aWxsIGJlIG91ciB3b3JraW5nIGFycmF5CisgIG5ld2xlbj0ocmVxZGlnK3JlcWRpZykrMTsKKyAgdmFyMT1leHRlbmQobGhzLm1hbnQsbmV3bGVuKTsgLy8gYWx3YXlzIG1ha2VzIGxvbmdlciwgc28gbmV3IHNhZmUgYXJyYXkKKyAgdmFyMWxlbj1uZXdsZW47IC8vIFtyZW1haW5pbmcgZGlnaXRzIGFyZSAwXQorICAKKyAgdmFyMj1yaHMubWFudDsKKyAgdmFyMmxlbj1uZXdsZW47CisgIAorICAvKiBDYWxjdWxhdGUgZmlyc3QgdHdvIGRpZ2l0cyBvZiByaHMgKHZhcjIpLCArMSBmb3IgbGF0ZXIgZXN0aW1hdGlvbnMgKi8KKyAgYjJiPSh2YXIyWzBdKjEwKSsxOworICBpZiAodmFyMi5sZW5ndGg+MSkgCisgICBiMmI9YjJiK3ZhcjJbMV07CisgIAorICAvKiBzdGFydCB0aGUgbG9uZy1kaXZpc2lvbiBsb29wcyAqLworICBoYXZlPTA7CisgIHtvdXRlcjpmb3IoOzspeworICAgdGhpc2RpZ2l0PTA7CisgICAvKiBmaW5kIHRoZSBuZXh0IGRpZ2l0ICovCisgICB7aW5uZXI6Zm9yKDs7KXsKKyAgICBpZiAodmFyMWxlbjx2YXIybGVuKSAKKyAgICAgYnJlYWsgaW5uZXI7IC8vIFYxIHRvbyBsb3cKKyAgICBpZiAodmFyMWxlbj09dmFyMmxlbikgCisgICAgIHsgLy8gY29tcGFyZSBuZWVkZWQKKyAgICAgIHtjb21wYXJlOmRveyAvLyBjb21wYXJpc29uCisgICAgICAge2ludCAkMjI9dmFyMWxlbjtpPTA7aTpmb3IoOyQyMj4wOyQyMi0tLGkrKyl7CisgICAgICAgIC8vIHZhcjFsZW4gaXMgYWx3YXlzIDw9IHZhcjEubGVuZ3RoCisgICAgICAgIGlmIChpPHZhcjIubGVuZ3RoKSAKKyAgICAgICAgIHYyPXZhcjJbaV07CisgICAgICAgIGVsc2UgCisgICAgICAgICB2Mj0oYnl0ZSkwOworICAgICAgICBpZiAodmFyMVtpXTx2MikgCisgICAgICAgICBicmVhayBpbm5lcjsgLy8gVjEgdG9vIGxvdworICAgICAgICBpZiAodmFyMVtpXT52MikgCisgICAgICAgICBicmVhayBjb21wYXJlOyAvLyBPSyB0byBzdWJ0cmFjdAorICAgICAgICB9CisgICAgICAgfS8qaSovCisgICAgICAgLyogcmVhY2ggaGVyZSBpZiBsaHMgYW5kIHJocyBhcmUgaWRlbnRpY2FsOyBzdWJ0cmFjdGlvbiB3aWxsCisgICAgICAgICAgaW5jcmVhc2UgZGlnaXQgYnkgb25lLCBhbmQgdGhlIHJlc2lkdWUgd2lsbCBiZSAwIHNvIHdlCisgICAgICAgICAgYXJlIGRvbmU7IGxlYXZlIHRoZSBsb29wIHdpdGggcmVzaWR1ZSBzZXQgdG8gMCAoaW4gY2FzZQorICAgICAgICAgIGNvZGUgaXMgJ1InIG9yIFJPVU5EX1VOTkVDRVNTQVJZIG9yIGEgUk9VTkRfSEFMRl94eHh4IGlzCisgICAgICAgICAgYmVpbmcgY2hlY2tlZCkgKi8KKyAgICAgICB0aGlzZGlnaXQrKzsKKyAgICAgICByZXMubWFudFtoYXZlXT0oYnl0ZSl0aGlzZGlnaXQ7CisgICAgICAgaGF2ZSsrOworICAgICAgIHZhcjFbMF09KGJ5dGUpMDsgLy8gcmVzaWR1ZSB0byAwIFt0aGlzIGlzIGFsbCB3ZSdsbCB0ZXN0XQorICAgICAgIC8vIHZhcjFsZW49MSAgICAgIC0tIFtvcHRpbWl6ZWQgb3V0XQorICAgICAgIGJyZWFrIG91dGVyOworICAgICAgfXdoaWxlKGZhbHNlKTt9Lypjb21wYXJlKi8KKyAgICAgIC8qIHByZXBhcmUgZm9yIHN1YnRyYWN0aW9uLiAgRXN0aW1hdGUgQkEgKGxlbmd0aHMgdGhlIHNhbWUpICovCisgICAgICBiYT0oaW50KXZhcjFbMF07IC8vIHVzZSBvbmx5IGZpcnN0IGRpZ2l0CisgICAgIH0gLy8gbGVuZ3RocyB0aGUgc2FtZQorICAgIGVsc2UgCisgICAgIHsvKiBsaHMgbG9uZ2VyIHRoYW4gcmhzICovCisgICAgICAvKiB1c2UgZmlyc3QgdHdvIGRpZ2l0cyBmb3IgZXN0aW1hdGUgKi8KKyAgICAgIGJhPXZhcjFbMF0qMTA7CisgICAgICBpZiAodmFyMWxlbj4xKSAKKyAgICAgICBiYT1iYSt2YXIxWzFdOworICAgICB9CisgICAgLyogc3VidHJhY3Rpb24gbmVlZGVkOyBWMT49VjIgKi8KKyAgICBtdWx0PShiYSoxMCkvYjJiOworICAgIGlmIChtdWx0PT0wKSAKKyAgICAgbXVsdD0xOworICAgIHRoaXNkaWdpdD10aGlzZGlnaXQrbXVsdDsKKyAgICAvLyBzdWJ0cmFjdDsgdmFyMSByZXVzYWJsZQorICAgIHZhcjE9Ynl0ZWFkZHN1Yih2YXIxLHZhcjFsZW4sdmFyMix2YXIybGVuLChpbnQpLW11bHQsdHJ1ZSk7CisgICAgaWYgKHZhcjFbMF0hPTApIAorICAgICBjb250aW51ZSBpbm5lcjsgLy8gbWF5YmUgYW5vdGhlciBzdWJ0cmFjdCBuZWVkZWQKKyAgICAvKiBWMSBub3cgcHJvYmFibHkgaGFzIGxlYWRpbmcgemVyb3MsIHJlbW92ZSBsZWFkaW5nIDAncyBhbmQgdHJ5CisgICAgICAgYWdhaW4uIChJdCBjb3VsZCBiZSBsb25nZXIgdGhhbiBWMikgKi8KKyAgICB7aW50ICQyMz12YXIxbGVuLTI7c3RhcnQ9MDtzdGFydDpmb3IoO3N0YXJ0PD0kMjM7c3RhcnQrKyl7CisgICAgIGlmICh2YXIxW3N0YXJ0XSE9MCkgCisgICAgICBicmVhayBzdGFydDsKKyAgICAgdmFyMWxlbi0tOworICAgICB9CisgICAgfS8qc3RhcnQqLworICAgIGlmIChzdGFydD09MCkgCisgICAgIGNvbnRpbnVlIGlubmVyOworICAgIC8vIHNoaWZ0IGxlZnQKKyAgICBqYXZhLmxhbmcuU3lzdGVtLmFycmF5Y29weSgoamF2YS5sYW5nLk9iamVjdCl2YXIxLHN0YXJ0LChqYXZhLmxhbmcuT2JqZWN0KXZhcjEsMCx2YXIxbGVuKTsKKyAgICB9CisgICB9Lyppbm5lciovCisgICAKKyAgIC8qIFdlIGhhdmUgdGhlIG5leHQgZGlnaXQgKi8KKyAgIGlmICgoaGF2ZSE9MCl8KHRoaXNkaWdpdCE9MCkpIAorICAgIHsgLy8gcHV0IHRoZSBkaWdpdCB3ZSBnb3QKKyAgICAgcmVzLm1hbnRbaGF2ZV09KGJ5dGUpdGhpc2RpZ2l0OworICAgICBoYXZlKys7CisgICAgIGlmIChoYXZlPT0ocmVxZGlnKzEpKSAKKyAgICAgIGJyZWFrIG91dGVyOyAvLyB3ZSBoYXZlIGFsbCB3ZSBuZWVkCisgICAgIGlmICh2YXIxWzBdPT0wKSAKKyAgICAgIGJyZWFrIG91dGVyOyAvLyByZXNpZHVlIG5vdyAwCisgICAgfQorICAgLyogY2FuIGxlYXZlIG5vdyBpZiBhIHNjYWxlZCBkaXZpZGUgYW5kIGV4cG9uZW50IGlzIHNtYWxsIGVub3VnaCAqLworICAgaWYgKHNjYWxlPj0wKSAKKyAgICBpZiAoKChpbnQpLXJlcy5leHApPnNjYWxlKSAKKyAgICAgYnJlYWsgb3V0ZXI7CisgICAvKiBjYW4gbGVhdmUgbm93IGlmIG5vdCBEaXZpZGUgYW5kIG5vIGludGVnZXIgcGFydCBsZWZ0ICAqLworICAgaWYgKGNvZGUhPSdEJykgCisgICAgaWYgKHJlcy5leHA8PTApIAorICAgICBicmVhayBvdXRlcjsKKyAgIHJlcy5leHA9cmVzLmV4cC0xOyAvLyByZWR1Y2UgdGhlIGV4cG9uZW50CisgICAvKiB0byBnZXQgaGVyZSwgVjEgaXMgbGVzcyB0aGFuIFYyLCBzbyBkaXZpZGUgVjIgYnkgMTAgYW5kIGdvIGZvcgorICAgICAgdGhlIG5leHQgZGlnaXQgKi8KKyAgIHZhcjJsZW4tLTsKKyAgIH0KKyAgfS8qb3V0ZXIqLworICAKKyAgLyogaGVyZSB3aGVuIHdlIGhhdmUgZmluaXNoZWQgZGl2aWRpbmcsIGZvciBzb21lIHJlYXNvbiAqLworICAvLyBoYXZlIGlzIHRoZSBudW1iZXIgb2YgZGlnaXRzIHdlIGNvbGxlY3RlZCBpbiByZXMubWFudAorICBpZiAoaGF2ZT09MCkgCisgICBoYXZlPTE7IC8vIHJlcy5tYW50WzBdIGlzIDA7IHdlIGFsd2F5cyB3YW50IGEgZGlnaXQKKyAgCisgIGlmICgoY29kZT09J0knKXwoY29kZT09J1InKSkgCisgICB7LyogY2hlY2sgZm9yIGludGVnZXIgb3ZlcmZsb3cgbmVlZGVkICovCisgICAgaWYgKChoYXZlK3Jlcy5leHApPnJlcWRpZykgCisgICAgIHRocm93IG5ldyBqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbigiSW50ZWdlciBvdmVyZmxvdyIpOworICAgIAorICAgIGlmIChjb2RlPT0nUicpIAorICAgICB7cmVtYWluZGVyOmRveworICAgICAgLyogV2Ugd2VyZSBkb2luZyBSZW1haW5kZXIgLS0gcmV0dXJuIHRoZSByZXNpZHVlICovCisgICAgICBpZiAocmVzLm1hbnRbMF09PTApICAvLyBubyBpbnRlZ2VyIHBhcnQgd2FzIGZvdW5kCisgICAgICAgcmV0dXJuIGNsb25lKGxocykuZmluaXNoKHNldCxmYWxzZSk7IC8vIC4uIHNvIHJldHVybiBsaHMsIGNhbm9uaWNhbAorICAgICAgaWYgKHZhcjFbMF09PTApIAorICAgICAgIHJldHVybiBaRVJPOyAvLyBzaW1wbGUgMCByZXNpZHVlCisgICAgICByZXMuaW5kPWxocy5pbmQ7IC8vIHNpZ24gaXMgYWx3YXlzIGFzIExIUworICAgICAgLyogQ2FsY3VsYXRlIHRoZSBleHBvbmVudCBieSBzdWJ0cmFjdGluZyB0aGUgbnVtYmVyIG9mIHBhZGRpbmcgemVyb3MKKyAgICAgICAgIHdlIGFkZGVkIGFuZCBhZGRpbmcgdGhlIG9yaWdpbmFsIGV4cG9uZW50ICovCisgICAgICBwYWRkaW5nPSgocmVxZGlnK3JlcWRpZykrMSktbGhzLm1hbnQubGVuZ3RoOworICAgICAgcmVzLmV4cD0ocmVzLmV4cC1wYWRkaW5nKStsaHMuZXhwOworICAgICAgCisgICAgICAvKiBzdHJpcCBpbnNpZ25pZmljYW50IHBhZGRpbmcgemVyb3MgZnJvbSByZXNpZHVlLCBhbmQgY3JlYXRlL2NvcHkKKyAgICAgICAgIHRoZSByZXN1bHRpbmcgbWFudGlzc2EgaWYgbmVlZCBiZSAqLworICAgICAgZD12YXIxbGVuOworICAgICAge2k9ZC0xO2k6Zm9yKDtpPj0xO2ktLSl7aWYoISgocmVzLmV4cDxsaHMuZXhwKSYocmVzLmV4cDxyaHMuZXhwKSkpYnJlYWs7CisgICAgICAgaWYgKHZhcjFbaV0hPTApIAorICAgICAgICBicmVhayBpOworICAgICAgIGQtLTsKKyAgICAgICByZXMuZXhwPXJlcy5leHArMTsKKyAgICAgICB9CisgICAgICB9LyppKi8KKyAgICAgIGlmIChkPHZhcjEubGVuZ3RoKSAKKyAgICAgICB7LyogbmVlZCB0byByZWR1Y2UgKi8KKyAgICAgICAgbmV3dmFyMT1uZXcgYnl0ZVtkXTsKKyAgICAgICAgamF2YS5sYW5nLlN5c3RlbS5hcnJheWNvcHkoKGphdmEubGFuZy5PYmplY3QpdmFyMSwwLChqYXZhLmxhbmcuT2JqZWN0KW5ld3ZhcjEsMCxkKTsgLy8gc2hvcnRlbgorICAgICAgICB2YXIxPW5ld3ZhcjE7CisgICAgICAgfQorICAgICAgcmVzLm1hbnQ9dmFyMTsKKyAgICAgIHJldHVybiByZXMuZmluaXNoKHNldCxmYWxzZSk7CisgICAgIH13aGlsZShmYWxzZSk7fS8qcmVtYWluZGVyKi8KKyAgIH0KKyAgIAorICBlbHNlIAorICAgey8qICdEJyAtLSBubyBvdmVyZmxvdyBjaGVjayBuZWVkZWQgKi8KKyAgICAvLyBJZiB0aGVyZSB3YXMgYSByZXNpZHVlIHRoZW4gYnVtcCB0aGUgZmluYWwgZGlnaXQgKGlmZiAwIG9yIDUpCisgICAgLy8gc28gdGhhdCB0aGUgcmVzaWR1ZSBpcyB2aXNpYmxlIGZvciBST1VORF9VUCwgUk9VTkRfSEFMRl94eHggYW5kCisgICAgLy8gUk9VTkRfVU5ORUNFU1NBUlkgY2hlY2tzIChldGMuKSBsYXRlci4KKyAgICAvLyBbaWYgd2UgZmluaXNoZWQgZWFybHksIHRoZSByZXNpZHVlIHdpbGwgYmUgMF0KKyAgICBpZiAodmFyMVswXSE9MCkgCisgICAgIHsgLy8gcmVzaWR1ZSBub3QgMAorICAgICAgbGFzdGhhdmU9cmVzLm1hbnRbaGF2ZS0xXTsKKyAgICAgIGlmICgoKGxhc3RoYXZlJTUpKT09MCkgCisgICAgICAgcmVzLm1hbnRbaGF2ZS0xXT0oYnl0ZSkobGFzdGhhdmUrMSk7CisgICAgIH0KKyAgIH0KKyAgCisgIC8qIEhlcmUgZm9yIERpdmlkZSBvciBJbnRlZ2VyIERpdmlkZSAqLworICAvLyBoYW5kbGUgc2NhbGVkIHJlc3VsdHMgZmlyc3QgWydJJyBhbHdheXMgc2NhbGUgMCwgb3B0aW9uYWwgZm9yICdEJ10KKyAgaWYgKHNjYWxlPj0wKSAKKyAgIHtzY2FsZWQ6ZG97CisgICAgLy8gc2F5ICdzY2FsZSBoYXZlIHJlcy5leHAgbGVuJyBzY2FsZSBoYXZlIHJlcy5leHAgcmVzLm1hbnQubGVuZ3RoCisgICAgaWYgKGhhdmUhPXJlcy5tYW50Lmxlbmd0aCkgCisgICAgIC8vIGFscmVhZHkgcGFkZGVkIHdpdGggMCdzLCBzbyBqdXN0IGFkanVzdCBleHBvbmVudAorICAgICByZXMuZXhwPXJlcy5leHAtKChyZXMubWFudC5sZW5ndGgtaGF2ZSkpOworICAgIC8vIGNhbGN1bGF0ZSBudW1iZXIgb2YgZGlnaXRzIHdlIHJlYWxseSB3YW50IFttYXkgYmUgMF0KKyAgICBhY3RkaWc9cmVzLm1hbnQubGVuZ3RoLSgoKChpbnQpLXJlcy5leHApLXNjYWxlKSk7CisgICAgcmVzLnJvdW5kKGFjdGRpZyxzZXQucm91bmRpbmdNb2RlKTsgLy8gcm91bmQgdG8gZGVzaXJlZCBsZW5ndGgKKyAgICAvLyBUaGlzIGNvdWxkIGhhdmUgc2hpZnRlZCBsZWZ0IGlmIHJvdW5kIChzYXkpIDAuOS0+MVsuMF0KKyAgICAvLyBSZXBhaXIgaWYgc28gYnkgYWRkaW5nIGEgemVybyBhbmQgcmVkdWNpbmcgZXhwb25lbnQKKyAgICBpZiAocmVzLmV4cCE9KChpbnQpLXNjYWxlKSkgCisgICAgIHsKKyAgICAgIHJlcy5tYW50PWV4dGVuZChyZXMubWFudCxyZXMubWFudC5sZW5ndGgrMSk7CisgICAgICByZXMuZXhwPXJlcy5leHAtMTsKKyAgICAgfQorICAgIHJldHVybiByZXMuZmluaXNoKHNldCx0cnVlKTsgLy8gW3N0cmlwIGlmIG5vdCBQTEFJTl0KKyAgIH13aGlsZShmYWxzZSk7fS8qc2NhbGVkKi8KKyAgCisgIC8vIHJlYWNoIGhlcmUgb25seSBpZiBhIG5vbi1zY2FsZWQKKyAgaWYgKGhhdmU9PXJlcy5tYW50Lmxlbmd0aCkgCisgICB7IC8vIGdvdCBkaWdpdHMrMSBkaWdpdHMKKyAgICByZXMucm91bmQoc2V0KTsKKyAgICBoYXZlPXJlcWRpZzsKKyAgIH0KKyAgZWxzZSAKKyAgIHsvKiBoYXZlPD1yZXFkaWcgKi8KKyAgICBpZiAocmVzLm1hbnRbMF09PTApIAorICAgICByZXR1cm4gWkVSTzsgLy8gZmFzdHBhdGgKKyAgICAvLyBtYWtlIHRoZSBtYW50aXNzYSB0cnVseSBqdXN0ICdoYXZlJyBsb25nCisgICAgLy8gW3dlIGNvdWxkIGxldCBmaW5pc2ggZG8gdGhpcywgZHVyaW5nIHN0cmlwLCBpZiB3ZSBhZGp1c3RlZAorICAgIC8vIHRoZSBleHBvbmVudDsgaG93ZXZlciwgdHJ1bmNhdGlvbiBhdm9pZHMgdGhlIHN0cmlwIGxvb3BdCisgICAgbmV3bWFudD1uZXcgYnl0ZVtoYXZlXTsgLy8gc2hvcnRlbgorICAgIGphdmEubGFuZy5TeXN0ZW0uYXJyYXljb3B5KChqYXZhLmxhbmcuT2JqZWN0KXJlcy5tYW50LDAsKGphdmEubGFuZy5PYmplY3QpbmV3bWFudCwwLGhhdmUpOworICAgIHJlcy5tYW50PW5ld21hbnQ7CisgICB9CisgIHJldHVybiByZXMuZmluaXNoKHNldCx0cnVlKTsKKyAgfQorCisgCisgLyogPHNnbWw+IFJlcG9ydCBhIGNvbnZlcnNpb24gZXhjZXB0aW9uLiA8L3NnbWw+ICovCisgCisgcHJpdmF0ZSB2b2lkIGJhZChjaGFyIHNbXSl7CisgIHRocm93IG5ldyBqYXZhLmxhbmcuTnVtYmVyRm9ybWF0RXhjZXB0aW9uKCJOb3QgYSBudW1iZXI6IisiICIramF2YS5sYW5nLlN0cmluZy52YWx1ZU9mKHMpKTsKKyAgfQorCisgLyogPHNnbWw+IFJlcG9ydCBhIGJhZCBhcmd1bWVudCB0byBhIG1ldGhvZC4gPC9zZ21sPgorICAgIEFyZzEgaXMgbWV0aG9kIG5hbWUKKyAgICBBcmcyIGlzIGFyZ3VtZW50IHBvc2l0aW9uCisgICAgQXJnMyBpcyB3aGF0IHdhcyBmb3VuZCAqLworIAorIHByaXZhdGUgdm9pZCBiYWRhcmcoamF2YS5sYW5nLlN0cmluZyBuYW1lLGludCBwb3MsamF2YS5sYW5nLlN0cmluZyB2YWx1ZSl7CisgIHRocm93IG5ldyBqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJCYWQgYXJndW1lbnQiKyIgIitwb3MrIiAiKyJ0byIrIiAiK25hbWUrIjoiKyIgIit2YWx1ZSk7CisgIH0KKworIC8qIDxzZ21sPiBFeHRlbmQgYnl0ZSBhcnJheSB0byBnaXZlbiBsZW5ndGgsIHBhZGRpbmcgd2l0aCAwcy4gIElmIG5vCisgICAgZXh0ZW5zaW9uIGlzIHJlcXVpcmVkIHRoZW4gcmV0dXJuIHRoZSBzYW1lIGFycmF5LiA8L3NnbWw+CisgCisgICAgQXJnMSBpcyB0aGUgc291cmNlIGJ5dGUgYXJyYXkKKyAgICBBcmcyIGlzIHRoZSBuZXcgbGVuZ3RoIChsb25nZXIpCisgICAgKi8KKyAKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlW10gZXh0ZW5kKGJ5dGUgaW5hcnJbXSxpbnQgbmV3bGVuKXsKKyAgYnl0ZSBuZXdhcnJbXTsKKyAgaWYgKGluYXJyLmxlbmd0aD09bmV3bGVuKSAKKyAgIHJldHVybiBpbmFycjsKKyAgbmV3YXJyPW5ldyBieXRlW25ld2xlbl07CisgIGphdmEubGFuZy5TeXN0ZW0uYXJyYXljb3B5KChqYXZhLmxhbmcuT2JqZWN0KWluYXJyLDAsKGphdmEubGFuZy5PYmplY3QpbmV3YXJyLDAsaW5hcnIubGVuZ3RoKTsKKyAgLy8gMCBwYWRkaW5nIGlzIGNhcnJpZWQgb3V0IGJ5IHRoZSBKVk0gb24gYWxsb2NhdGlvbiBpbml0aWFsaXphdGlvbgorICByZXR1cm4gbmV3YXJyOworICB9CisKKyAvKiA8c2dtbD4gQWRkIG9yIHN1YnRyYWN0IHR3byA+PTAgaW50ZWdlcnMgaW4gYnl0ZSBhcnJheXMKKyAgICA8cD5UaGlzIHJvdXRpbmUgcGVyZm9ybXMgdGhlIGNhbGN1bGF0aW9uOgorICAgIDxwcmU+CisgICAgQz1BKyhCKk0pCisgICAgPC9wcmU+CisgICAgV2hlcmUgTSBpcyBpbiB0aGUgcmFuZ2UgLTkgdGhyb3VnaCArOQorICAgIDxwPgorICAgIElmIE08MCB0aGVuIEE+PUIgbXVzdCBiZSB0cnVlLCBzbyB0aGUgcmVzdWx0IGlzIGFsd2F5cworICAgIG5vbi1uZWdhdGl2ZS4KKyAKKyAgICBMZWFkaW5nIHplcm9zIGFyZSBub3QgcmVtb3ZlZCBhZnRlciBhIHN1YnRyYWN0aW9uLiAgVGhlIHJlc3VsdCBpcworICAgIGVpdGhlciB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIGxvbmdlciBvZiBBIGFuZCBCLCBvciAxIGxvbmdlciB0aGFuCisgICAgdGhhdCAoaWYgYSBjYXJyeSBvY2N1cnJlZCkuCisgCisgICAgQSBpcyBub3QgYWx0ZXJlZCB1bmxlc3MgQXJnNiBpcyAxLgorICAgIEIgaXMgbmV2ZXIgYWx0ZXJlZC4KKyAKKyAgICBBcmcxIGlzIEEKKyAgICBBcmcyIGlzIEEgbGVuZ3RoIHRvIHVzZSAoaWYgbG9uZ2VyIHRoYW4gQSwgcGFkIHdpdGggMCdzKQorICAgIEFyZzMgaXMgQgorICAgIEFyZzQgaXMgQiBsZW5ndGggdG8gdXNlIChpZiBsb25nZXIgdGhhbiBCLCBwYWQgd2l0aCAwJ3MpCisgICAgQXJnNSBpcyBNLCB0aGUgbXVsdGlwbGllcgorICAgIEFyZzYgaXMgMSBpZiBBIGNhbiBiZSB1c2VkIHRvIGJ1aWxkIHRoZSByZXN1bHQgKGlmIGl0IGZpdHMpCisgCisgICAgVGhpcyByb3V0aW5lIGlzIHNldmVyZWx5IHBlcmZvcm1hbmNlLWNyaXRpY2FsOyAqYW55KiBjaGFuZ2UgaGVyZQorICAgIG11c3QgYmUgbWVhc3VyZWQgKHRpbWVkKSB0byBhc3N1cmUgbm8gcGVyZm9ybWFuY2UgZGVncmFkYXRpb24uCisgICAgKi8KKyAvLyAxOTk2LjAyLjIwIC0tIGVuaGFuY2VkIHZlcnNpb24gb2YgRE1TUkNOIGFsZ29yaXRobSAoMTk4MSkKKyAvLyAxOTk3LjEwLjA1IC0tIGNoYW5nZWQgdG8gYnl0ZSBhcnJheXMgKGZyb20gY2hhciBhcnJheXMpCisgLy8gMTk5OC4wNy4wMSAtLSBjaGFuZ2VkIHRvIGFsbG93IGRlc3RydWN0aXZlIHJldXNlIG9mIExIUworIC8vIDE5OTguMDcuMDEgLS0gY2hhbmdlZCB0byBhbGxvdyB2aXJ0dWFsIGxlbmd0aHMgZm9yIHRoZSBhcnJheXMKKyAvLyAxOTk4LjEyLjI5IC0tIHVzZSBsb29rYXNpZGUgZm9yIGRpZ2l0L2NhcnJ5IGNhbGN1bGF0aW9uCisgLy8gMTk5OS4wOC4wNyAtLSBhdm9pZCBtdWx0aXBseSB3aGVuIG11bHQ9MSwgYW5kIG1ha2UgZGIgYW4gaW50CisgLy8gMTk5OS4xMi4yMiAtLSBzcGVjaWFsIGNhc2UgbT0tMSwgYWxzbyBkcm9wIDAgc3BlY2lhbCBjYXNlCisgCisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYnl0ZVtdIGJ5dGVhZGRzdWIoYnl0ZSBhW10saW50IGF2bGVuLGJ5dGUgYltdLGludCBidmxlbixpbnQgbSxib29sZWFuIHJldXNlKXsKKyAgaW50IGFsZW5ndGg7CisgIGludCBibGVuZ3RoOworICBpbnQgYXA7CisgIGludCBicDsKKyAgaW50IG1heGFycjsKKyAgYnl0ZSByZWJbXTsKKyAgYm9vbGVhbiBxdWlja207CisgIGludCBkaWdpdDsKKyAgaW50IG9wPTA7CisgIGludCBkcDkwPTA7CisgIGJ5dGUgbmV3YXJyW107CisgIGludCBpPTA7CisgIAorICAKKyAgCisgIAorICAvLyBXZSdsbCB1c3VhbGx5IGJlIHJpZ2h0IGlmIHdlIGFzc3VtZSBubyBjYXJyeQorICBhbGVuZ3RoPWEubGVuZ3RoOyAvLyBwaHlzaWNhbCBsZW5ndGhzCisgIGJsZW5ndGg9Yi5sZW5ndGg7IC8vIC4uCisgIGFwPWF2bGVuLTE7IC8vIC0+IGZpbmFsIChyaWdodG1vc3QpIGRpZ2l0CisgIGJwPWJ2bGVuLTE7IC8vIC4uCisgIG1heGFycj1icDsKKyAgaWYgKG1heGFycjxhcCkgCisgICBtYXhhcnI9YXA7CisgIHJlYj0oYnl0ZVtdKW51bGw7IC8vIHJlc3VsdCBieXRlIGFycmF5CisgIGlmIChyZXVzZSkgCisgICBpZiAoKG1heGFycisxKT09YWxlbmd0aCkgCisgICAgcmViPWE7IC8vIE9LIHRvIHJldXNlIEEKKyAgaWYgKHJlYj09bnVsbCkgCisgICByZWI9bmV3IGJ5dGVbbWF4YXJyKzFdOyAvLyBuZWVkIG5ldyBhcnJheQorICAKKyAgcXVpY2ttPWZhbHNlOyAvLyAxIGlmIG5vIG11bHRpcGx5IG5lZWRlZAorICBpZiAobT09MSkgCisgICBxdWlja209dHJ1ZTsgLy8gbW9zdCBjb21tb24KKyAgZWxzZSAKKyAgIGlmIChtPT0oLTEpKSAKKyAgICBxdWlja209dHJ1ZTsgLy8gYWxzbyBjb21tb24KKyAgCisgIGRpZ2l0PTA7IC8vIGRpZ2l0LCB3aXRoIGNhcnJ5IG9yIGJvcnJvdworICB7b3A9bWF4YXJyO29wOmZvcig7b3A+PTA7b3AtLSl7CisgICBpZiAoYXA+PTApIAorICAgIHsKKyAgICAgaWYgKGFwPGFsZW5ndGgpIAorICAgICAgZGlnaXQ9ZGlnaXQrYVthcF07IC8vIHdpdGhpbiBBCisgICAgIGFwLS07CisgICAgfQorICAgaWYgKGJwPj0wKSAKKyAgICB7CisgICAgIGlmIChicDxibGVuZ3RoKSAKKyAgICAgIHsgLy8gd2l0aGluIEIKKyAgICAgICBpZiAocXVpY2ttKSAKKyAgICAgICAgeworICAgICAgICAgaWYgKG0+MCkgCisgICAgICAgICAgZGlnaXQ9ZGlnaXQrYlticF07IC8vIG1vc3QgY29tbW9uCisgICAgICAgICBlbHNlIAorICAgICAgICAgIGRpZ2l0PWRpZ2l0LWJbYnBdOyAvLyBhbHNvIGNvbW1vbgorICAgICAgICB9CisgICAgICAgZWxzZSAKKyAgICAgICAgZGlnaXQ9ZGlnaXQrKGJbYnBdKm0pOworICAgICAgfQorICAgICBicC0tOworICAgIH0KKyAgIC8qIHJlc3VsdCBzbyBmYXIgKGRpZ2l0KSBjb3VsZCBiZSAtOTAgdGhyb3VnaCA5OSAqLworICAgaWYgKGRpZ2l0PDEwKSAKKyAgICBpZiAoZGlnaXQ+PTApIAorICAgICB7cXVpY2s6ZG97IC8vIDAtOQorICAgICAgcmViW29wXT0oYnl0ZSlkaWdpdDsKKyAgICAgIGRpZ2l0PTA7IC8vIG5vIGNhcnJ5CisgICAgICBjb250aW51ZSBvcDsKKyAgICAgfXdoaWxlKGZhbHNlKTt9LypxdWljayovCisgICBkcDkwPWRpZ2l0KzkwOworICAgcmViW29wXT1ieXRlZGlnW2RwOTBdOyAvLyB0aGlzIGRpZ2l0CisgICBkaWdpdD1ieXRlY2FyW2RwOTBdOyAvLyBjYXJyeSBvciBib3Jyb3cKKyAgIH0KKyAgfS8qb3AqLworICAKKyAgaWYgKGRpZ2l0PT0wKSAKKyAgIHJldHVybiByZWI7IC8vIG5vIGNhcnJ5CisgIC8vIGZvbGxvd2luZyBsaW5lIHdpbGwgYmVjb21lIGFuIEFzc2VydCwgbGF0ZXIKKyAgLy8gaWYgZGlnaXQ8MCB0aGVuIHNpZ25hbCBBcml0aG1ldGljRXhjZXB0aW9uKCJpbnRlcm5hbC5lcnJvciBbImRpZ2l0Il0iKQorICAKKyAgLyogV2UgaGF2ZSBjYXJyeSAtLSBuZWVkIHRvIG1ha2Ugc3BhY2UgZm9yIHRoZSBleHRyYSBkaWdpdCAqLworICBuZXdhcnI9KGJ5dGVbXSludWxsOworICBpZiAocmV1c2UpIAorICAgaWYgKChtYXhhcnIrMik9PWEubGVuZ3RoKSAKKyAgICBuZXdhcnI9YTsgLy8gT0sgdG8gcmV1c2UgQQorICBpZiAobmV3YXJyPT1udWxsKSAKKyAgIG5ld2Fycj1uZXcgYnl0ZVttYXhhcnIrMl07CisgIG5ld2FyclswXT0oYnl0ZSlkaWdpdDsgLy8gdGhlIGNhcnJpZWQgZGlnaXQgLi4KKyAgLy8gLi4gYW5kIGFsbCB0aGUgcmVzdCBbdXNlIGxvY2FsIGxvb3AgZm9yIHNob3J0IG51bWJlcnNdCisgIGlmIChtYXhhcnI8MTApIAorICAge2ludCAkMjQ9bWF4YXJyKzE7aT0wO2k6Zm9yKDskMjQ+MDskMjQtLSxpKyspeworICAgIG5ld2FycltpKzFdPXJlYltpXTsKKyAgICB9CisgICB9LyppKi8KKyAgZWxzZSAKKyAgIGphdmEubGFuZy5TeXN0ZW0uYXJyYXljb3B5KChqYXZhLmxhbmcuT2JqZWN0KXJlYiwwLChqYXZhLmxhbmcuT2JqZWN0KW5ld2FyciwxLG1heGFycisxKTsKKyAgcmV0dXJuIG5ld2FycjsKKyAgfQorCisgLyogPHNnbWw+IEluaXRpYWxpemVyIGZvciBkaWdpdCBhcnJheSBwcm9wZXJ0aWVzIChsb29rYXNpZGUpLiA8L3NnbWw+CisgICAgUmV0dXJucyB0aGUgZGlnaXQgYXJyYXksIGFuZCBpbml0aWFsaXplcyB0aGUgY2FycnkgYXJyYXkuICovCisgCisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYnl0ZVtdIGRpZ2luaXQoKXsKKyAgYnl0ZSB3b3JrW107CisgIGludCBvcD0wOworICBpbnQgZGlnaXQ9MDsKKyAgd29yaz1uZXcgYnl0ZVsoOTArOTkpKzFdOworICB7b3A9MDtvcDpmb3IoO29wPD0oOTArOTkpO29wKyspeworICAgZGlnaXQ9b3AtOTA7CisgICBpZiAoZGlnaXQ+PTApIAorICAgIHsKKyAgICAgd29ya1tvcF09KGJ5dGUpKGRpZ2l0JTEwKTsKKyAgICAgYnl0ZWNhcltvcF09KGJ5dGUpKGRpZ2l0LzEwKTsgLy8gY2FsY3VsYXRlIGNhcnJ5CisgICAgIGNvbnRpbnVlIG9wOworICAgIH0KKyAgIC8vIGJvcnJvd2luZy4uLgorICAgZGlnaXQ9ZGlnaXQrMTAwOyAvLyB5ZXMsIHRoaXMgaXMgcmlnaHQgW2NvbnNpZGVyIC01MF0KKyAgIHdvcmtbb3BdPShieXRlKShkaWdpdCUxMCk7CisgICBieXRlY2FyW29wXT0oYnl0ZSkoKGRpZ2l0LzEwKS0xMCk7IC8vIGNhbGN1bGF0ZSBib3Jyb3cgW05COiAtIGFmdGVyICVdCisgICB9CisgIH0vKm9wKi8KKyAgcmV0dXJuIHdvcms7CisgIH0KKworIC8qIDxzZ21sPiBDcmVhdGUgYSBjb3B5IG9mIEJpZ0RlY2ltYWwgb2JqZWN0IGZvciBsb2NhbCB1c2UuCisgICAgPHA+VGhpcyBkb2VzIE5PVCBtYWtlIGEgY29weSBvZiB0aGUgbWFudGlzc2EgYXJyYXkuCisgICAgPC9zZ21sPgorICAgIEFyZzEgaXMgdGhlIEJpZ0RlY2ltYWwgdG8gY2xvbmUgKG5vbi1udWxsKQorICAgICovCisgCisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIGNsb25lKGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCBkZWMpeworICBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgY29weTsKKyAgY29weT1uZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKCk7CisgIGNvcHkuaW5kPWRlYy5pbmQ7CisgIGNvcHkuZXhwPWRlYy5leHA7CisgIGNvcHkuZm9ybT1kZWMuZm9ybTsKKyAgY29weS5tYW50PWRlYy5tYW50OworICByZXR1cm4gY29weTsKKyAgfQorCisgLyogPHNnbWw+IENoZWNrIG9uZSBvciB0d28gbnVtYmVycyBmb3IgbG9zdCBkaWdpdHMuIDwvc2dtbD4KKyAgICBBcmcxIGlzIFJIUyAob3IgbnVsbCwgaWYgbm9uZSkKKyAgICBBcmcyIGlzIGN1cnJlbnQgRElHSVRTIHNldHRpbmcKKyAgICByZXR1cm5zIHF1aWV0bHkgb3IgdGhyb3dzIGFuIGV4Y2VwdGlvbiAqLworIAorIHByaXZhdGUgdm9pZCBjaGVja2RpZ2l0cyhjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgcmhzLGludCBkaWcpeworICBpZiAoZGlnPT0wKSAKKyAgIHJldHVybjsgLy8gZG9uJ3QgY2hlY2sgaWYgZGlnaXRzPTAKKyAgLy8gZmlyc3QgY2hlY2sgbGhzLi4uCisgIGlmICh0aGlzLm1hbnQubGVuZ3RoPmRpZykgCisgICBpZiAoKCEoYWxsemVybyh0aGlzLm1hbnQsZGlnKSkpKSAKKyAgICB0aHJvdyBuZXcgamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24oIlRvbyBtYW55IGRpZ2l0czoiKyIgIit0aGlzLnRvU3RyaW5nKCkpOworICBpZiAocmhzPT1udWxsKSAKKyAgIHJldHVybjsgLy8gbW9uYWRpYworICBpZiAocmhzLm1hbnQubGVuZ3RoPmRpZykgCisgICBpZiAoKCEoYWxsemVybyhyaHMubWFudCxkaWcpKSkpIAorICAgIHRocm93IG5ldyBqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbigiVG9vIG1hbnkgZGlnaXRzOiIrIiAiK3Jocy50b1N0cmluZygpKTsKKyAgcmV0dXJuOworICB9CisKKyAvKiA8c2dtbD4gUm91bmQgdG8gc3BlY2lmaWVkIGRpZ2l0cywgaWYgbmVjZXNzYXJ5LiA8L3NnbWw+CisgICAgQXJnMSBpcyByZXF1ZXN0ZWQgTWF0aENvbnRleHQgW3dpdGggbGVuZ3RoIGFuZCByb3VuZGluZyBtb2RlXQorICAgIHJldHVybnMgdGhpcywgZm9yIGNvbnZlbmllbmNlICovCisgCisgcHJpdmF0ZSBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgcm91bmQoY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dCBzZXQpeworICByZXR1cm4gcm91bmQoc2V0LmRpZ2l0cyxzZXQucm91bmRpbmdNb2RlKTsKKyAgfQorCisgLyogPHNnbWw+IFJvdW5kIHRvIHNwZWNpZmllZCBkaWdpdHMsIGlmIG5lY2Vzc2FyeS4KKyAgICBBcmcxIGlzIHJlcXVlc3RlZCBsZW5ndGggKGRpZ2l0cyB0byByb3VuZCB0bykKKyAgICAgICAgICAgIFttYXkgYmUgPD0wIHdoZW4gY2FsbGVkIGZyb20gZm9ybWF0LCBkb2RpdmlkZSwgZXRjLl0KKyAgICBBcmcyIGlzIHJvdW5kaW5nIG1vZGUKKyAgICByZXR1cm5zIHRoaXMsIGZvciBjb252ZW5pZW5jZQorIAorICAgIGluZCBhbmQgZXhwIGFyZSBhZGp1c3RlZCwgYnV0IG5vdCBjbGVhcmVkIGZvciBhIG1hbnRpc3NhIG9mIHplcm8KKyAKKyAgICBUaGUgbGVuZ3RoIG9mIHRoZSBtYW50aXNzYSByZXR1cm5lZCB3aWxsIGJlIEFyZzEsIGV4Y2VwdCB3aGVuIEFyZzEKKyAgICBpcyAwLCBpbiB3aGljaCBjYXNlIHRoZSByZXR1cm5lZCBtYW50aXNzYSBsZW5ndGggd2lsbCBiZSAxLgorICAgIDwvc2dtbD4KKyAgICAqLworIAorIHByaXZhdGUgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIHJvdW5kKGludCBsZW4saW50IG1vZGUpeworICBpbnQgYWRqdXN0OworICBpbnQgc2lnbjsKKyAgYnl0ZSBvbGRtYW50W107CisgIGJvb2xlYW4gcmV1c2U9ZmFsc2U7CisgIGJ5dGUgZmlyc3Q9MDsKKyAgaW50IGluY3JlbWVudDsKKyAgYnl0ZSBuZXdtYW50W109bnVsbDsKKyAgYWRqdXN0PW1hbnQubGVuZ3RoLWxlbjsKKyAgaWYgKGFkanVzdDw9MCkgCisgICByZXR1cm4gdGhpczsgLy8gbm93dCB0byBkbworICAKKyAgZXhwPWV4cCthZGp1c3Q7IC8vIGV4cG9uZW50IG9mIHJlc3VsdAorICBzaWduPShpbnQpaW5kOyAvLyBzYXZlIFthc3N1bWVzIC0xLCAwLCAxXQorICBvbGRtYW50PW1hbnQ7IC8vIHNhdmUKKyAgaWYgKGxlbj4wKSAKKyAgIHsKKyAgICAvLyByZW1vdmUgdGhlIHVud2FudGVkIGRpZ2l0cworICAgIG1hbnQ9bmV3IGJ5dGVbbGVuXTsKKyAgICBqYXZhLmxhbmcuU3lzdGVtLmFycmF5Y29weSgoamF2YS5sYW5nLk9iamVjdClvbGRtYW50LDAsKGphdmEubGFuZy5PYmplY3QpbWFudCwwLGxlbik7CisgICAgcmV1c2U9dHJ1ZTsgLy8gY2FuIHJldXNlIG1hbnRpc3NhCisgICAgZmlyc3Q9b2xkbWFudFtsZW5dOyAvLyBmaXJzdCBvZiBkaXNjYXJkZWQgZGlnaXRzCisgICB9CisgIGVsc2UgCisgICB7LyogbGVuPD0wICovCisgICAgbWFudD1aRVJPLm1hbnQ7CisgICAgaW5kPWlzemVybzsKKyAgICByZXVzZT1mYWxzZTsgLy8gY2Fubm90IHJldXNlIG1hbnRpc3NhCisgICAgaWYgKGxlbj09MCkgCisgICAgIGZpcnN0PW9sZG1hbnRbMF07CisgICAgZWxzZSAKKyAgICAgZmlyc3Q9KGJ5dGUpMDsgLy8gW3ZpcnR1YWwgZGlnaXRdCisgICB9CisgIAorICAvLyBkZWNpZGUgcm91bmRpbmcgYWRqdXN0bWVudCBkZXBlbmRpbmcgb24gbW9kZSwgc2lnbiwgYW5kIGRpc2NhcmRlZCBkaWdpdHMKKyAgaW5jcmVtZW50PTA7IC8vIGJ1bXBlcgorICB7bW9kZXM6ZG97LypzZWxlY3QqLworICBpZiAobW9kZT09Uk9VTkRfSEFMRl9VUCkKKyAgIHsgLy8gZGVmYXVsdCBmaXJzdCBbbW9zdCBjb21tb25dCisgICAgaWYgKGZpcnN0Pj01KSAKKyAgICAgaW5jcmVtZW50PXNpZ247CisgICB9CisgIGVsc2UgaWYgKG1vZGU9PVJPVU5EX1VOTkVDRVNTQVJZKQorICAgeyAvLyBkZWZhdWx0IGZvciBzZXRTY2FsZSgpCisgICAgLy8gZGlzY2FyZGluZyBhbnkgbm9uLXplcm8gZGlnaXRzIGlzIGFuIGVycm9yCisgICAgaWYgKCghKGFsbHplcm8ob2xkbWFudCxsZW4pKSkpIAorICAgICB0aHJvdyBuZXcgamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24oIlJvdW5kaW5nIG5lY2Vzc2FyeSIpOworICAgfQorICBlbHNlIGlmIChtb2RlPT1ST1VORF9IQUxGX0RPV04pCisgICB7IC8vIDAuNTAwMCBnb2VzIGRvd24KKyAgICBpZiAoZmlyc3Q+NSkgCisgICAgIGluY3JlbWVudD1zaWduOworICAgIGVsc2UgCisgICAgIGlmIChmaXJzdD09NSkgCisgICAgICBpZiAoKCEoYWxsemVybyhvbGRtYW50LGxlbisxKSkpKSAKKyAgICAgICBpbmNyZW1lbnQ9c2lnbjsKKyAgIH0KKyAgZWxzZSBpZiAobW9kZT09Uk9VTkRfSEFMRl9FVkVOKQorICAgeyAvLyAwLjUwMDAgZ29lcyBkb3duIGlmIGxlZnQgZGlnaXQgZXZlbgorICAgIGlmIChmaXJzdD41KSAKKyAgICAgaW5jcmVtZW50PXNpZ247CisgICAgZWxzZSAKKyAgICAgaWYgKGZpcnN0PT01KSAKKyAgICAgIHsKKyAgICAgICBpZiAoKCEoYWxsemVybyhvbGRtYW50LGxlbisxKSkpKSAKKyAgICAgICAgaW5jcmVtZW50PXNpZ247CisgICAgICAgZWxzZSAvKiAwLjUwMDAgKi8KKyAgICAgICAgaWYgKCgoKG1hbnRbbWFudC5sZW5ndGgtMV0pJTIpKT09MSkgCisgICAgICAgICBpbmNyZW1lbnQ9c2lnbjsKKyAgICAgIH0KKyAgIH0KKyAgZWxzZSBpZiAobW9kZT09Uk9VTkRfRE9XTikKKyAgIDsgLy8gbmV2ZXIgaW5jcmVtZW50CisgIGVsc2UgaWYgKG1vZGU9PVJPVU5EX1VQKQorICAgeyAvLyBpbmNyZW1lbnQgaWYgZGlzY2FyZGVkIG5vbi16ZXJvCisgICAgaWYgKCghKGFsbHplcm8ob2xkbWFudCxsZW4pKSkpIAorICAgICBpbmNyZW1lbnQ9c2lnbjsKKyAgIH0KKyAgZWxzZSBpZiAobW9kZT09Uk9VTkRfQ0VJTElORykKKyAgIHsgLy8gbW9yZSBwb3NpdGl2ZQorICAgIGlmIChzaWduPjApIAorICAgICBpZiAoKCEoYWxsemVybyhvbGRtYW50LGxlbikpKSkgCisgICAgICBpbmNyZW1lbnQ9c2lnbjsKKyAgIH0KKyAgZWxzZSBpZiAobW9kZT09Uk9VTkRfRkxPT1IpCisgICB7IC8vIG1vcmUgbmVnYXRpdmUKKyAgICBpZiAoc2lnbjwwKSAKKyAgICAgaWYgKCghKGFsbHplcm8ob2xkbWFudCxsZW4pKSkpIAorICAgICAgaW5jcmVtZW50PXNpZ247CisgICB9CisgIGVsc2V7CisgICB0aHJvdyBuZXcgamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiQmFkIHJvdW5kIHZhbHVlOiIrIiAiK21vZGUpOworICB9CisgIH13aGlsZShmYWxzZSk7fS8qbW9kZXMqLworICAKKyAgaWYgKGluY3JlbWVudCE9MCkgCisgICB7YnVtcDpkb3sKKyAgICBpZiAoaW5kPT1pc3plcm8pIAorICAgICB7CisgICAgICAvLyB3ZSBtdXN0IG5vdCBzdWJ0cmFjdCBmcm9tIDAsIGJ1dCByZXN1bHQgaXMgdHJpdmlhbCBhbnl3YXkKKyAgICAgIG1hbnQ9T05FLm1hbnQ7CisgICAgICBpbmQ9KGJ5dGUpaW5jcmVtZW50OworICAgICB9CisgICAgZWxzZSAKKyAgICAgeworICAgICAgLy8gbWFudGlzc2EgaXMgbm9uLTA7IHdlIGNhbiBzYWZlbHkgYWRkIG9yIHN1YnRyYWN0IDEKKyAgICAgIGlmIChpbmQ9PWlzbmVnKSAKKyAgICAgICBpbmNyZW1lbnQ9KGludCktaW5jcmVtZW50OworICAgICAgbmV3bWFudD1ieXRlYWRkc3ViKG1hbnQsbWFudC5sZW5ndGgsT05FLm1hbnQsMSxpbmNyZW1lbnQscmV1c2UpOworICAgICAgaWYgKG5ld21hbnQubGVuZ3RoPm1hbnQubGVuZ3RoKSAKKyAgICAgICB7IC8vIGhhZCBhIGNhcnJ5CisgICAgICAgIC8vIGRyb3AgcmlnaHRtb3N0IGRpZ2l0IGFuZCByYWlzZSBleHBvbmVudAorICAgICAgICBleHArKzsKKyAgICAgICAgLy8gbWFudCBpcyBhbHJlYWR5IHRoZSBjb3JyZWN0IGxlbmd0aAorICAgICAgICBqYXZhLmxhbmcuU3lzdGVtLmFycmF5Y29weSgoamF2YS5sYW5nLk9iamVjdCluZXdtYW50LDAsKGphdmEubGFuZy5PYmplY3QpbWFudCwwLG1hbnQubGVuZ3RoKTsKKyAgICAgICB9CisgICAgICBlbHNlIAorICAgICAgIG1hbnQ9bmV3bWFudDsKKyAgICAgfQorICAgfXdoaWxlKGZhbHNlKTt9LypidW1wKi8KKyAgLy8gcm91bmRpbmcgY2FuIGluY3JlYXNlIGV4cG9uZW50IHNpZ25pZmljYW50bHkKKyAgaWYgKGV4cD5NYXhFeHApIAorICAgdGhyb3cgbmV3IGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uKCJFeHBvbmVudCBPdmVyZmxvdzoiKyIgIitleHApOworICByZXR1cm4gdGhpczsKKyAgfQorCisgLyogPHNnbWw+IFRlc3QgaWYgcmlnaHRtb3N0IGRpZ2l0cyBhcmUgYWxsIDAuCisgICAgQXJnMSBpcyBhIG1hbnRpc3NhIGFycmF5IHRvIHRlc3QKKyAgICBBcmcyIGlzIHRoZSBvZmZzZXQgb2YgZmlyc3QgZGlnaXQgdG8gY2hlY2sKKyAgICAgICAgICAgIFttYXkgYmUgbmVnYXRpdmU7IGlmIHNvLCBkaWdpdHMgdG8gbGVmdCBhcmUgMCdzXQorICAgIHJldHVybnMgMSBpZiBhbGwgdGhlIGRpZ2l0cyBzdGFydGluZyBhdCBBcmcyIGFyZSAwCisgCisgICAgQXJnMiBtYXkgYmUgYmV5b25kIGFycmF5IGJvdW5kcywgaW4gd2hpY2ggY2FzZSAxIGlzIHJldHVybmVkCisgICAgPC9zZ21sPiAqLworIAorIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gYWxsemVybyhieXRlIGFycmF5W10saW50IHN0YXJ0KXsKKyAgaW50IGk9MDsKKyAgaWYgKHN0YXJ0PDApIAorICAgc3RhcnQ9MDsKKyAge2ludCAkMjU9YXJyYXkubGVuZ3RoLTE7aT1zdGFydDtpOmZvcig7aTw9JDI1O2krKyl7CisgICBpZiAoYXJyYXlbaV0hPTApIAorICAgIHJldHVybiBmYWxzZTsKKyAgIH0KKyAgfS8qaSovCisgIHJldHVybiB0cnVlOworICB9CisKKyAvKiA8c2dtbD4gQ2Fycnkgb3V0IGZpbmFsIGNoZWNrcyBhbmQgY2Fub25pY2FsaXphdGlvbgorICAgIDxwPgorICAgIFRoaXMgZmluaXNoZXMgb2ZmIHRoZSBjdXJyZW50IG51bWJlciBieToKKyAgICAgIDEuIFJvdW5kaW5nIGlmIG5lY2Vzc2FyeSAoTkI6IGxlbmd0aCBpbmNsdWRlcyBsZWFkaW5nIHplcm9zKQorICAgICAgMi4gU3RyaXBwaW5nIHRyYWlsaW5nIHplcm9zIChpZiByZXF1ZXN0ZWQgYW5kIFxQTEFJTikKKyAgICAgIDMuIFN0cmlwcGluZyBsZWFkaW5nIHplcm9zIChhbHdheXMpCisgICAgICA0LiBTZWxlY3RpbmcgZXhwb25lbnRpYWwgbm90YXRpb24gKGlmIHJlcXVpcmVkKQorICAgICAgNS4gQ29udmVydGluZyBhIHplcm8gcmVzdWx0IHRvIGp1c3QgJzAnIChpZiBcUExBSU4pCisgICAgSW4gcHJhY3RpY2UsIHRoZXNlIG9wZXJhdGlvbnMgb3ZlcmxhcCBhbmQgc2hhcmUgY29kZS4KKyAgICBJdCBhbHdheXMgc2V0cyBmb3JtLgorICAgIDwvc2dtbD4KKyAgICBBcmcxIGlzIHJlcXVlc3RlZCBNYXRoQ29udGV4dCAobGVuZ3RoIHRvIHJvdW5kIHRvLCB0cmlnZ2VyLCBhbmQgRk9STSkKKyAgICBBcmcyIGlzIDEgaWYgdHJhaWxpbmcgaW5zaWduaWZpY2FudCB6ZXJvcyBzaG91bGQgYmUgcmVtb3ZlZCBhZnRlcgorICAgICAgICAgcm91bmQgKGZvciBkaXZpc2lvbiwgZXRjLiksIHByb3ZpZGVkIHRoYXQgc2V0LmZvcm0gaXNuJ3QgUExBSU4uCisgICByZXR1cm5zIHRoaXMsIGZvciBjb252ZW5pZW5jZQorICAgKi8KKyAKKyBwcml2YXRlIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCBmaW5pc2goY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dCBzZXQsYm9vbGVhbiBzdHJpcCl7CisgIGludCBkPTA7CisgIGludCBpPTA7CisgIGJ5dGUgbmV3bWFudFtdPW51bGw7CisgIGludCBtYWc9MDsKKyAgaW50IHNpZz0wOworICAvKiBSb3VuZCBpZiBtYW50aXNzYSB0b28gbG9uZyBhbmQgZGlnaXRzIHJlcXVlc3RlZCAqLworICBpZiAoc2V0LmRpZ2l0cyE9MCkgCisgICBpZiAodGhpcy5tYW50Lmxlbmd0aD5zZXQuZGlnaXRzKSAKKyAgICB0aGlzLnJvdW5kKHNldCk7CisgIAorICAvKiBJZiBzdHJpcCByZXF1ZXN0ZWQgKGFuZCBzdGFuZGFyZCBmb3JtYXR0aW5nKSwgcmVtb3ZlCisgICAgIGluc2lnbmlmaWNhbnQgdHJhaWxpbmcgemVyb3MuICovCisgIGlmIChzdHJpcCkgCisgICBpZiAoc2V0LmZvcm0hPWNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQuUExBSU4pIAorICAgIHsKKyAgICAgZD10aGlzLm1hbnQubGVuZ3RoOworICAgICAvKiBzZWUgaWYgd2UgbmVlZCB0byBkcm9wIGFueSB0cmFpbGluZyB6ZXJvcyAqLworICAgICB7aT1kLTE7aTpmb3IoO2k+PTE7aS0tKXsKKyAgICAgIGlmICh0aGlzLm1hbnRbaV0hPTApIAorICAgICAgIGJyZWFrIGk7CisgICAgICBkLS07CisgICAgICBleHArKzsKKyAgICAgIH0KKyAgICAgfS8qaSovCisgICAgIGlmIChkPHRoaXMubWFudC5sZW5ndGgpIAorICAgICAgey8qIG5lZWQgdG8gcmVkdWNlICovCisgICAgICAgbmV3bWFudD1uZXcgYnl0ZVtkXTsKKyAgICAgICBqYXZhLmxhbmcuU3lzdGVtLmFycmF5Y29weSgoamF2YS5sYW5nLk9iamVjdCl0aGlzLm1hbnQsMCwoamF2YS5sYW5nLk9iamVjdCluZXdtYW50LDAsZCk7CisgICAgICAgdGhpcy5tYW50PW5ld21hbnQ7CisgICAgICB9CisgICAgfQorICAKKyAgZm9ybT0oYnl0ZSljb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlBMQUlOOyAvLyBwcmVzZXQKKyAgCisgIC8qIE5vdyBjaGVjayBmb3IgbGVhZGluZy0gYW5kIGFsbC0gemVyb3MgaW4gbWFudGlzc2EgKi8KKyAge2ludCAkMjY9dGhpcy5tYW50Lmxlbmd0aDtpPTA7aTpmb3IoOyQyNj4wOyQyNi0tLGkrKyl7CisgICBpZiAodGhpcy5tYW50W2ldIT0wKSAKKyAgICB7CisgICAgIC8vIG5vbi0wIHJlc3VsdDsgaW5kIHdpbGwgYmUgY29ycmVjdAorICAgICAvLyByZW1vdmUgbGVhZGluZyB6ZXJvcyBbZS5nLiwgYWZ0ZXIgc3VidHJhY3RdCisgICAgIGlmIChpPjApIAorICAgICAge2RlbGVhZDpkb3sKKyAgICAgICBuZXdtYW50PW5ldyBieXRlW3RoaXMubWFudC5sZW5ndGgtaV07CisgICAgICAgamF2YS5sYW5nLlN5c3RlbS5hcnJheWNvcHkoKGphdmEubGFuZy5PYmplY3QpdGhpcy5tYW50LGksKGphdmEubGFuZy5PYmplY3QpbmV3bWFudCwwLHRoaXMubWFudC5sZW5ndGgtaSk7CisgICAgICAgdGhpcy5tYW50PW5ld21hbnQ7CisgICAgICB9d2hpbGUoZmFsc2UpO30vKmRlbGVhZCovCisgICAgIC8vIG5vdyBkZXRlcm1pbmUgZm9ybSBpZiBub3QgUExBSU4KKyAgICAgbWFnPWV4cCttYW50Lmxlbmd0aDsKKyAgICAgaWYgKG1hZz4wKSAKKyAgICAgIHsgLy8gbW9zdCBjb21tb24gcGF0aAorICAgICAgIGlmIChtYWc+c2V0LmRpZ2l0cykgCisgICAgICAgIGlmIChzZXQuZGlnaXRzIT0wKSAKKyAgICAgICAgIGZvcm09KGJ5dGUpc2V0LmZvcm07CisgICAgICAgaWYgKChtYWctMSk8PU1heEV4cCkgCisgICAgICAgIHJldHVybiB0aGlzOyAvLyBubyBvdmVyZmxvdzsgcXVpY2sgcmV0dXJuCisgICAgICB9CisgICAgIGVsc2UgCisgICAgICBpZiAobWFnPCgtNSkpIAorICAgICAgIGZvcm09KGJ5dGUpc2V0LmZvcm07CisgICAgIC8qIGNoZWNrIGZvciBvdmVyZmxvdyAqLworICAgICBtYWctLTsKKyAgICAgaWYgKChtYWc8TWluRXhwKXwobWFnPk1heEV4cCkpIAorICAgICAge292ZXJmbG93OmRveworICAgICAgIC8vIHBvc3NpYmxlIHJlcHJpZXZlIGlmIGZvcm0gaXMgZW5naW5lZXJpbmcKKyAgICAgICBpZiAoZm9ybT09Y29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dC5FTkdJTkVFUklORykgCisgICAgICAgIHsKKyAgICAgICAgIHNpZz1tYWclMzsgLy8gbGVmdG92ZXIKKyAgICAgICAgIGlmIChzaWc8MCkgCisgICAgICAgICAgc2lnPTMrc2lnOyAvLyBuZWdhdGl2ZSBleHBvbmVudAorICAgICAgICAgbWFnPW1hZy1zaWc7IC8vIGV4cG9uZW50IHRvIHVzZQorICAgICAgICAgLy8gMTk5OS4wNi4yOTogc2Vjb25kIHRlc3QgaGVyZSBtdXN0IGJlIE1heEV4cAorICAgICAgICAgaWYgKG1hZz49TWluRXhwKSAKKyAgICAgICAgICBpZiAobWFnPD1NYXhFeHApIAorICAgICAgICAgICBicmVhayBvdmVyZmxvdzsKKyAgICAgICAgfQorICAgICAgIHRocm93IG5ldyBqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbigiRXhwb25lbnQgT3ZlcmZsb3c6IisiICIrbWFnKTsKKyAgICAgIH13aGlsZShmYWxzZSk7fS8qb3ZlcmZsb3cqLworICAgICByZXR1cm4gdGhpczsKKyAgICB9CisgICB9CisgIH0vKmkqLworICAKKyAgLy8gRHJvcCB0aHJvdWdoIHRvIGhlcmUgb25seSBpZiBtYW50aXNzYSBpcyBhbGwgemVyb3MKKyAgaW5kPWlzemVybzsKKyAgey8qc2VsZWN0Ki8KKyAgaWYgKHNldC5mb3JtIT1jb20uaWJtLmljdS5tYXRoLk1hdGhDb250ZXh0LlBMQUlOKQorICAgZXhwPTA7IC8vIHN0YW5kYXJkIHJlc3VsdDsgZ28gdG8gJzAnCisgIGVsc2UgaWYgKGV4cD4wKQorICAgZXhwPTA7IC8vICt2ZSBleHBvbmVudCBhbHNvIGdvZXMgdG8gJzAnCisgIGVsc2V7CisgICAvLyBhIHBsYWluIG51bWJlciB3aXRoIC12ZSBleHBvbmVudDsgcHJlc2VydmUgYW5kIGNoZWNrIGV4cG9uZW50CisgICBpZiAoZXhwPE1pbkV4cCkgCisgICAgdGhyb3cgbmV3IGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uKCJFeHBvbmVudCBPdmVyZmxvdzoiKyIgIitleHApOworICB9CisgIH0KKyAgbWFudD1aRVJPLm1hbnQ7IC8vIGNhbm9uaWNhbCBtYW50aXNzYQorICByZXR1cm4gdGhpczsKKyAgfQorIH0KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS9tYXRoL01hdGhDb250ZXh0LmphdmEgYi9zcmMvY29tL2libS9pY3UvbWF0aC9NYXRoQ29udGV4dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmM5MTg0NzUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvbWF0aC9NYXRoQ29udGV4dC5qYXZhCkBAIC0wLDAgKzEsNjAzIEBACisvKiBHZW5lcmF0ZWQgZnJvbSAnTWF0aENvbnRleHQubnJ4JyA4IFNlcCAyMDAwIDExOjA3OjQ4IFt2Mi4wMF0gKi8KKy8qIE9wdGlvbnM6IEJpbmFyeSBDb21tZW50cyBDcm9zc3JlZiBGb3JtYXQgSmF2YSBMb2dvIFN0cmljdGFyZ3MgU3RyaWN0Y2FzZSBUcmFjZTIgVmVyYm9zZTMgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UubWF0aDsKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiBNYXRoQ29udGV4dCAtLSBNYXRoIGNvbnRleHQgc2V0dGluZ3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogQ29weXJpZ2h0IElCTSBDb3Jwb3JhdGlvbiwgMTk5NywgMjAwMC4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgVGhlIE1hdGhDb250ZXh0IG9iamVjdCBlbmNhcHN1bGF0ZXMgdGhlIHNldHRpbmdzIHVzZWQgYnkgdGhlICAgICAqLworLyogICBCaWdEZWNpbWFsIGNsYXNzOyBpdCBjb3VsZCBhbHNvIGJlIHVzZWQgYnkgb3RoZXIgYXJpdGhtZXRpY3MuICAgICovCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qIE5vdGVzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAxLiBUaGUgcHJvcGVydGllcyBhcmUgY2hlY2tlZCBmb3IgdmFsaWRpdHkgb24gY29uc3RydWN0aW9uLCBzbyAgICAgKi8KKy8qICAgIHRoZSBCaWdEZWNpbWFsIGNsYXNzIG1heSBhc3N1bWUgdGhhdCB0aGV5IGFyZSBjb3JyZWN0LiAgICAgICAgICAqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiBBdXRob3I6ICAgIE1pa2UgQ293bGlzaGF3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIDE5OTcuMDkuMDMgSW5pdGlhbCB2ZXJzaW9uIChlZGl0ZWQgZnJvbSBuZXRyZXh4LmxhbmcuUmV4eFNldCkgICAgICAqLworLyogMTk5Ny4wOS4xMiBBZGQgbG9zdERpZ2l0cyBwcm9wZXJ0eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAxOTk4LjA1LjAyIE1ha2UgdGhlIGNsYXNzIGltbXV0YWJsZSBhbmQgZmluYWw7IGRyb3Agc2V0IG1ldGhvZHMgICAgKi8KKy8qIDE5OTguMDYuMDUgQWRkIFJvdW5kIChyb3VuZGluZyBtb2RlcykgcHJvcGVydHkgICAgICAgICAgICAgICAgICAgICAqLworLyogMTk5OC4wNi4yNSBSZW5hbWUgZnJvbSBEZWNpbWFsQ29udGV4dDsgYWxsb3cgZGlnaXRzPTAgICAgICAgICAgICAgICovCisvKiAxOTk4LjEwLjEyIGNoYW5nZSB0byBjb20uaWJtLmljdS5tYXRoIHBhY2thZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAxOTk5LjAyLjA2IGFkZCBqYXZhZG9jIGNvbW1lbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIDE5OTkuMDMuMDUgc2ltcGxpZnk7IGNoYW5nZXMgZnJvbSBkaXNjdXNzaW9uIHdpdGggSi4gQmxvY2ggICAgICAgICAqLworLyogMTk5OS4wMy4xMyAxLjAwIHJlbGVhc2UgdG8gSUJNIENlbnRyZSBmb3IgSmF2YSBUZWNobm9sb2d5ICAgICAgICAgICovCisvKiAxOTk5LjA3LjEwIDEuMDQgZmxhZyBzZXJpYWxpemF0aW9uIHVudXNlZCAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIDIwMDAuMDEuMDEgMS4wNiBjb3B5cmlnaHQgdXBkYXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKworCisKKy8qKgorICogVGhlIDxjb2RlPk1hdGhDb250ZXh0PC9jb2RlPiBpbW11dGFibGUgY2xhc3MgZW5jYXBzdWxhdGVzIHRoZQorICogc2V0dGluZ3MgdW5kZXJzdG9vZCBieSB0aGUgb3BlcmF0b3IgbWV0aG9kcyBvZiB0aGUge0BsaW5rIEJpZ0RlY2ltYWx9CisgKiBjbGFzcyAoYW5kIHBvdGVudGlhbGx5IG90aGVyIGNsYXNzZXMpLiAgT3BlcmF0b3IgbWV0aG9kcyBhcmUgdGhvc2UKKyAqIHRoYXQgZWZmZWN0IGFuIG9wZXJhdGlvbiBvbiBhIG51bWJlciBvciBhIHBhaXIgb2YgbnVtYmVycy4KKyAqIDxwPgorICogVGhlIHNldHRpbmdzLCB3aGljaCBhcmUgbm90IGJhc2UtZGVwZW5kZW50LCBjb21wcmlzZToKKyAqIDxvbD4KKyAqIDxsaT48Y29kZT5kaWdpdHM8L2NvZGU+OgorICogdGhlIG51bWJlciBvZiBkaWdpdHMgKHByZWNpc2lvbikgdG8gYmUgdXNlZCBmb3IgYW4gb3BlcmF0aW9uCisgKiA8bGk+PGNvZGU+Zm9ybTwvY29kZT46CisgKiB0aGUgZm9ybSBvZiBhbnkgZXhwb25lbnQgdGhhdCByZXN1bHRzIGZyb20gdGhlIG9wZXJhdGlvbgorICogPGxpPjxjb2RlPmxvc3REaWdpdHM8L2NvZGU+OgorICogd2hldGhlciBjaGVja2luZyBmb3IgbG9zdCBkaWdpdHMgaXMgZW5hYmxlZAorICogPGxpPjxjb2RlPnJvdW5kaW5nTW9kZTwvY29kZT46CisgKiB0aGUgYWxnb3JpdGhtIHRvIGJlIHVzZWQgZm9yIHJvdW5kaW5nLgorICogPC9vbD4KKyAqIDxwPgorICogV2hlbiBwcm92aWRlZCwgYSA8Y29kZT5NYXRoQ29udGV4dDwvY29kZT4gb2JqZWN0IHN1cHBsaWVzIHRoZQorICogc2V0dGluZ3MgZm9yIGFuIG9wZXJhdGlvbiBkaXJlY3RseS4KKyAqIDxwPgorICogV2hlbiA8Y29kZT5NYXRoQ29udGV4dC5ERUZBVUxUPC9jb2RlPiBpcyBwcm92aWRlZCBmb3IgYQorICogPGNvZGU+TWF0aENvbnRleHQ8L2NvZGU+IHBhcmFtZXRlciB0aGVuIHRoZSBkZWZhdWx0IHNldHRpbmdzIGFyZSB1c2VkCisgKiAoPGNvZGU+OSwgU0NJRU5USUZJQywgZmFsc2UsIFJPVU5EX0hBTEZfVVA8L2NvZGU+KS4KKyAqIDxwPgorICogSW4gdGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IGNsYXNzLCBhbGwgbWV0aG9kcyB3aGljaCBhY2NlcHQgYQorICogPGNvZGU+TWF0aENvbnRleHQ8L2NvZGU+IG9iamVjdCBkZWZhdWx0cykgYWxzbyBoYXZlIGEgdmVyc2lvbiBvZiB0aGUKKyAqIG1ldGhvZCB3aGljaCBkb2VzIG5vdCBhY2NlcHQgYSBNYXRoQ29udGV4dCBwYXJhbWV0ZXIuICBUaGVzZSB2ZXJzaW9ucworICogY2Fycnkgb3V0IHVubGltaXRlZCBwcmVjaXNpb24gZml4ZWQgcG9pbnQgYXJpdGhtZXRpYyAoYXMgdGhvdWdoIHRoZQorICogc2V0dGluZ3Mgd2VyZSAoPGNvZGU+MCwgUExBSU4sIGZhbHNlLCBST1VORF9IQUxGX1VQPC9jb2RlPikuCisgKiA8cD4KKyAqIFRoZSBpbnN0YW5jZSB2YXJpYWJsZXMgYXJlIHNoYXJlZCB3aXRoIGRlZmF1bHQgYWNjZXNzIChzbyB0aGV5IGFyZQorICogZGlyZWN0bHkgYWNjZXNzaWJsZSB0byB0aGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gY2xhc3MpLCBidXQgbXVzdAorICogbmV2ZXIgYmUgY2hhbmdlZC4KKyAqIDxwPgorICogVGhlIHJvdW5kaW5nIG1vZGUgY29uc3RhbnRzIGhhdmUgdGhlIHNhbWUgbmFtZXMgYW5kIHZhbHVlcyBhcyB0aGUKKyAqIGNvbnN0YW50cyBvZiB0aGUgc2FtZSBuYW1lIGluIDxjb2RlPmphdmEubWF0aC5CaWdEZWNpbWFsPC9jb2RlPiwgdG8KKyAqIG1haW50YWluIGNvbXBhdGliaWxpdHkgd2l0aCBlYXJsaWVyIHZlcnNpb25zIG9mCisgKiA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPi4KKyAqCisgKiBAc2VlICAgICBCaWdEZWNpbWFsCisgKiBAYXV0aG9yICBNaWtlIENvd2xpc2hhdworICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KKworcHVibGljIGZpbmFsIGNsYXNzIE1hdGhDb250ZXh0IGltcGxlbWVudHMgamF2YS5pby5TZXJpYWxpemFibGV7CisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyAkMD0iTWF0aENvbnRleHQubnJ4IjsKKyAKKyAvKiAtLS0tLSBQcm9wZXJ0aWVzIC0tLS0tICovCisgLyogcHJvcGVydGllcyBwdWJsaWMgY29uc3RhbnQgKi8KKyAvKioKKyAgKiBQbGFpbiAoZml4ZWQgcG9pbnQpIG5vdGF0aW9uLCB3aXRob3V0IGFueSBleHBvbmVudC4KKyAgKiBVc2VkIGFzIGEgc2V0dGluZyB0byBjb250cm9sIHRoZSBmb3JtIG9mIHRoZSByZXN1bHQgb2YgYQorICAqIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IG9wZXJhdGlvbi4KKyAgKiBBIHplcm8gcmVzdWx0IGluIHBsYWluIGZvcm0gbWF5IGhhdmUgYSBkZWNpbWFsIHBhcnQgb2Ygb25lIG9yCisgICogbW9yZSB6ZXJvcy4KKyAgKgorICAqIEBzZWUgI0VOR0lORUVSSU5HCisgICogQHNlZSAjU0NJRU5USUZJQworICAqIEBzdGFibGUgSUNVIDIuMAorICAqLworIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBMQUlOPTA7IC8vIFtubyBleHBvbmVudF0KKyAKKyAvKioKKyAgKiBTdGFuZGFyZCBmbG9hdGluZyBwb2ludCBub3RhdGlvbiAod2l0aCBzY2llbnRpZmljIGV4cG9uZW50aWFsCisgICogZm9ybWF0LCB3aGVyZSB0aGVyZSBpcyBvbmUgZGlnaXQgYmVmb3JlIGFueSBkZWNpbWFsIHBvaW50KS4KKyAgKiBVc2VkIGFzIGEgc2V0dGluZyB0byBjb250cm9sIHRoZSBmb3JtIG9mIHRoZSByZXN1bHQgb2YgYQorICAqIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IG9wZXJhdGlvbi4KKyAgKiBBIHplcm8gcmVzdWx0IGluIHBsYWluIGZvcm0gbWF5IGhhdmUgYSBkZWNpbWFsIHBhcnQgb2Ygb25lIG9yCisgICogbW9yZSB6ZXJvcy4KKyAgKgorICAqIEBzZWUgI0VOR0lORUVSSU5HCisgICogQHNlZSAjUExBSU4KKyAgKiBAc3RhYmxlIElDVSAyLjAKKyAgKi8KKyBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTQ0lFTlRJRklDPTE7IC8vIDEgZGlnaXQgYmVmb3JlIC4KKyAKKyAvKioKKyAgKiBTdGFuZGFyZCBmbG9hdGluZyBwb2ludCBub3RhdGlvbiAod2l0aCBlbmdpbmVlcmluZyBleHBvbmVudGlhbAorICAqIGZvcm1hdCwgd2hlcmUgdGhlIHBvd2VyIG9mIHRlbiBpcyBhIG11bHRpcGxlIG9mIDMpLgorICAqIFVzZWQgYXMgYSBzZXR0aW5nIHRvIGNvbnRyb2wgdGhlIGZvcm0gb2YgdGhlIHJlc3VsdCBvZiBhCisgICogPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gb3BlcmF0aW9uLgorICAqIEEgemVybyByZXN1bHQgaW4gcGxhaW4gZm9ybSBtYXkgaGF2ZSBhIGRlY2ltYWwgcGFydCBvZiBvbmUgb3IKKyAgKiBtb3JlIHplcm9zLgorICAqCisgICogQHNlZSAjUExBSU4KKyAgKiBAc2VlICNTQ0lFTlRJRklDCisgICogQHN0YWJsZSBJQ1UgMi4wCisgICovCisgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRU5HSU5FRVJJTkc9MjsgLy8gMS0zIGRpZ2l0cyBiZWZvcmUgLgorIAorIC8vIFRoZSByb3VuZGluZyBtb2RlcyBtYXRjaCB0aGUgb3JpZ2luYWwgQmlnRGVjaW1hbCBjbGFzcyB2YWx1ZXMKKyAvKioKKyAgKiBSb3VuZGluZyBtb2RlIHRvIHJvdW5kIHRvIGEgbW9yZSBwb3NpdGl2ZSBudW1iZXIuCisgICogVXNlZCBhcyBhIHNldHRpbmcgdG8gY29udHJvbCB0aGUgcm91bmRpbmcgbW9kZSB1c2VkIGR1cmluZyBhCisgICogPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gb3BlcmF0aW9uLgorICAqIDxwPgorICAqIElmIGFueSBvZiB0aGUgZGlzY2FyZGVkIGRpZ2l0cyBhcmUgbm9uLXplcm8gdGhlbiB0aGUgcmVzdWx0CisgICogc2hvdWxkIGJlIHJvdW5kZWQgdG93YXJkcyB0aGUgbmV4dCBtb3JlIHBvc2l0aXZlIGRpZ2l0LgorICAqIEBzdGFibGUgSUNVIDIuMAorICAqLworIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFJPVU5EX0NFSUxJTkc9MjsKKyAKKyAvKioKKyAgKiBSb3VuZGluZyBtb2RlIHRvIHJvdW5kIHRvd2FyZHMgemVyby4KKyAgKiBVc2VkIGFzIGEgc2V0dGluZyB0byBjb250cm9sIHRoZSByb3VuZGluZyBtb2RlIHVzZWQgZHVyaW5nIGEKKyAgKiA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBvcGVyYXRpb24uCisgICogPHA+CisgICogQWxsIGRpc2NhcmRlZCBkaWdpdHMgYXJlIGlnbm9yZWQgKHRydW5jYXRlZCkuICBUaGUgcmVzdWx0IGlzCisgICogbmVpdGhlciBpbmNyZW1lbnRlZCBub3IgZGVjcmVtZW50ZWQuCisgICogQHN0YWJsZSBJQ1UgMi4wCisgICovCisgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUk9VTkRfRE9XTj0xOworIAorIC8qKgorICAqIFJvdW5kaW5nIG1vZGUgdG8gcm91bmQgdG8gYSBtb3JlIG5lZ2F0aXZlIG51bWJlci4KKyAgKiBVc2VkIGFzIGEgc2V0dGluZyB0byBjb250cm9sIHRoZSByb3VuZGluZyBtb2RlIHVzZWQgZHVyaW5nIGEKKyAgKiA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBvcGVyYXRpb24uCisgICogPHA+CisgICogSWYgYW55IG9mIHRoZSBkaXNjYXJkZWQgZGlnaXRzIGFyZSBub24temVybyB0aGVuIHRoZSByZXN1bHQKKyAgKiBzaG91bGQgYmUgcm91bmRlZCB0b3dhcmRzIHRoZSBuZXh0IG1vcmUgbmVnYXRpdmUgZGlnaXQuCisgICogQHN0YWJsZSBJQ1UgMi4wCisgICovCisgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUk9VTkRfRkxPT1I9MzsKKyAKKyAvKioKKyAgKiBSb3VuZGluZyBtb2RlIHRvIHJvdW5kIHRvIG5lYXJlc3QgbmVpZ2hib3IsIHdoZXJlIGFuIGVxdWlkaXN0YW50CisgICogdmFsdWUgaXMgcm91bmRlZCBkb3duLgorICAqIFVzZWQgYXMgYSBzZXR0aW5nIHRvIGNvbnRyb2wgdGhlIHJvdW5kaW5nIG1vZGUgdXNlZCBkdXJpbmcgYQorICAqIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IG9wZXJhdGlvbi4KKyAgKiA8cD4KKyAgKiBJZiB0aGUgZGlzY2FyZGVkIGRpZ2l0cyByZXByZXNlbnQgZ3JlYXRlciB0aGFuIGhhbGYgKDAuNSB0aW1lcykKKyAgKiB0aGUgdmFsdWUgb2YgYSBvbmUgaW4gdGhlIG5leHQgcG9zaXRpb24gdGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZQorICAqIHJvdW5kZWQgdXAgKGF3YXkgZnJvbSB6ZXJvKS4gIE90aGVyd2lzZSB0aGUgZGlzY2FyZGVkIGRpZ2l0cyBhcmUKKyAgKiBpZ25vcmVkLgorICAqIEBzdGFibGUgSUNVIDIuMAorICAqLworIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFJPVU5EX0hBTEZfRE9XTj01OworIAorIC8qKgorICAqIFJvdW5kaW5nIG1vZGUgdG8gcm91bmQgdG8gbmVhcmVzdCBuZWlnaGJvciwgd2hlcmUgYW4gZXF1aWRpc3RhbnQKKyAgKiB2YWx1ZSBpcyByb3VuZGVkIHRvIHRoZSBuZWFyZXN0IGV2ZW4gbmVpZ2hib3IuCisgICogVXNlZCBhcyBhIHNldHRpbmcgdG8gY29udHJvbCB0aGUgcm91bmRpbmcgbW9kZSB1c2VkIGR1cmluZyBhCisgICogPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gb3BlcmF0aW9uLgorICAqIDxwPgorICAqIElmIHRoZSBkaXNjYXJkZWQgZGlnaXRzIHJlcHJlc2VudCBncmVhdGVyIHRoYW4gaGFsZiAoMC41IHRpbWVzKQorICAqIHRoZSB2YWx1ZSBvZiBhIG9uZSBpbiB0aGUgbmV4dCBwb3NpdGlvbiB0aGVuIHRoZSByZXN1bHQgc2hvdWxkIGJlCisgICogcm91bmRlZCB1cCAoYXdheSBmcm9tIHplcm8pLiAgSWYgdGhleSByZXByZXNlbnQgbGVzcyB0aGFuIGhhbGYsCisgICogdGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZSByb3VuZGVkIGRvd24uCisgICogPHA+CisgICogT3RoZXJ3aXNlICh0aGV5IHJlcHJlc2VudCBleGFjdGx5IGhhbGYpIHRoZSByZXN1bHQgaXMgcm91bmRlZAorICAqIGRvd24gaWYgaXRzIHJpZ2h0bW9zdCBkaWdpdCBpcyBldmVuLCBvciByb3VuZGVkIHVwIGlmIGl0cworICAqIHJpZ2h0bW9zdCBkaWdpdCBpcyBvZGQgKHRvIG1ha2UgYW4gZXZlbiBkaWdpdCkuCisgICogQHN0YWJsZSBJQ1UgMi4wCisgICovCisgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUk9VTkRfSEFMRl9FVkVOPTY7CisgCisgLyoqCisgICogUm91bmRpbmcgbW9kZSB0byByb3VuZCB0byBuZWFyZXN0IG5laWdoYm9yLCB3aGVyZSBhbiBlcXVpZGlzdGFudAorICAqIHZhbHVlIGlzIHJvdW5kZWQgdXAuCisgICogVXNlZCBhcyBhIHNldHRpbmcgdG8gY29udHJvbCB0aGUgcm91bmRpbmcgbW9kZSB1c2VkIGR1cmluZyBhCisgICogPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gb3BlcmF0aW9uLgorICAqIDxwPgorICAqIElmIHRoZSBkaXNjYXJkZWQgZGlnaXRzIHJlcHJlc2VudCBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gaGFsZgorICAqICgwLjUgdGltZXMpIHRoZSB2YWx1ZSBvZiBhIG9uZSBpbiB0aGUgbmV4dCBwb3NpdGlvbiB0aGVuIHRoZSByZXN1bHQKKyAgKiBzaG91bGQgYmUgcm91bmRlZCB1cCAoYXdheSBmcm9tIHplcm8pLiAgT3RoZXJ3aXNlIHRoZSBkaXNjYXJkZWQKKyAgKiBkaWdpdHMgYXJlIGlnbm9yZWQuCisgICogQHN0YWJsZSBJQ1UgMi4wCisgICovCisgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUk9VTkRfSEFMRl9VUD00OworIAorIC8qKgorICAqIFJvdW5kaW5nIG1vZGUgdG8gYXNzZXJ0IHRoYXQgbm8gcm91bmRpbmcgaXMgbmVjZXNzYXJ5LgorICAqIFVzZWQgYXMgYSBzZXR0aW5nIHRvIGNvbnRyb2wgdGhlIHJvdW5kaW5nIG1vZGUgdXNlZCBkdXJpbmcgYQorICAqIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IG9wZXJhdGlvbi4KKyAgKiA8cD4KKyAgKiBSb3VuZGluZyAocG90ZW50aWFsIGxvc3Mgb2YgaW5mb3JtYXRpb24pIGlzIG5vdCBwZXJtaXR0ZWQuCisgICogSWYgYW55IG9mIHRoZSBkaXNjYXJkZWQgZGlnaXRzIGFyZSBub24temVybyB0aGVuIGFuCisgICogPGNvZGU+QXJpdGhtZXRpY0V4Y2VwdGlvbjwvY29kZT4gc2hvdWxkIGJlIHRocm93bi4KKyAgKiBAc3RhYmxlIElDVSAyLjAKKyAgKi8KKyBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBST1VORF9VTk5FQ0VTU0FSWT03OworIAorIC8qKgorICAqIFJvdW5kaW5nIG1vZGUgdG8gcm91bmQgYXdheSBmcm9tIHplcm8uCisgICogVXNlZCBhcyBhIHNldHRpbmcgdG8gY29udHJvbCB0aGUgcm91bmRpbmcgbW9kZSB1c2VkIGR1cmluZyBhCisgICogPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gb3BlcmF0aW9uLgorICAqIDxwPgorICAqIElmIGFueSBvZiB0aGUgZGlzY2FyZGVkIGRpZ2l0cyBhcmUgbm9uLXplcm8gdGhlbiB0aGUgcmVzdWx0IHdpbGwKKyAgKiBiZSByb3VuZGVkIHVwIChhd2F5IGZyb20gemVybykuCisgICogQHN0YWJsZSBJQ1UgMi4wCisgICovCisgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUk9VTkRfVVA9MDsKKyAKKyAKKyAvKiBwcm9wZXJ0aWVzIHNoYXJlZCAqLworIC8qKgorICAqIFRoZSBudW1iZXIgb2YgZGlnaXRzIChwcmVjaXNpb24pIHRvIGJlIHVzZWQgZm9yIGFuIG9wZXJhdGlvbi4KKyAgKiBBIHZhbHVlIG9mIDAgaW5kaWNhdGVzIHRoYXQgdW5saW1pdGVkIHByZWNpc2lvbiAoYXMgbWFueSBkaWdpdHMKKyAgKiBhcyBhcmUgcmVxdWlyZWQpIHdpbGwgYmUgdXNlZC4KKyAgKiA8cD4KKyAgKiBUaGUge0BsaW5rIEJpZ0RlY2ltYWx9IG9wZXJhdG9yIG1ldGhvZHMgdXNlIHRoaXMgdmFsdWUgdG8KKyAgKiBkZXRlcm1pbmUgdGhlIHByZWNpc2lvbiBvZiByZXN1bHRzLgorICAqIE5vdGUgdGhhdCBsZWFkaW5nIHplcm9zIChpbiB0aGUgaW50ZWdlciBwYXJ0IG9mIGEgbnVtYmVyKSBhcmUKKyAgKiBuZXZlciBzaWduaWZpY2FudC4KKyAgKiA8cD4KKyAgKiA8Y29kZT5kaWdpdHM8L2NvZGU+IHdpbGwgYWx3YXlzIGJlIG5vbi1uZWdhdGl2ZS4KKyAgKgorICAqIEBzZXJpYWwKKyAgKi8KKyBpbnQgZGlnaXRzOworIAorIC8qKgorICAqIFRoZSBmb3JtIG9mIHJlc3VsdHMgZnJvbSBhbiBvcGVyYXRpb24uCisgICogPHA+CisgICogVGhlIHtAbGluayBCaWdEZWNpbWFsfSBvcGVyYXRvciBtZXRob2RzIHVzZSB0aGlzIHZhbHVlIHRvCisgICogZGV0ZXJtaW5lIHRoZSBmb3JtIG9mIHJlc3VsdHMsIGluIHBhcnRpY3VsYXIgd2hldGhlciBhbmQgaG93CisgICogZXhwb25lbnRpYWwgbm90YXRpb24gc2hvdWxkIGJlIHVzZWQuCisgICoKKyAgKiBAc2VlICNFTkdJTkVFUklORworICAqIEBzZWUgI1BMQUlOCisgICogQHNlZSAjU0NJRU5USUZJQworICAqIEBzZXJpYWwKKyAgKi8KKyBpbnQgZm9ybTsgLy8gdmFsdWVzIGZvciB0aGlzIG11c3QgZml0IGluIGEgYnl0ZQorIAorIC8qKgorICAqIENvbnRyb2xzIHdoZXRoZXIgbG9zdCBkaWdpdHMgY2hlY2tpbmcgaXMgZW5hYmxlZCBmb3IgYW4KKyAgKiBvcGVyYXRpb24uCisgICogU2V0IHRvIDxjb2RlPnRydWU8L2NvZGU+IHRvIGVuYWJsZSBjaGVja2luZywgb3IKKyAgKiB0byA8Y29kZT5mYWxzZTwvY29kZT4gdG8gZGlzYWJsZSBjaGVja2luZy4KKyAgKiA8cD4KKyAgKiBXaGVuIGVuYWJsZWQsIHRoZSB7QGxpbmsgQmlnRGVjaW1hbH0gb3BlcmF0b3IgbWV0aG9kcyBjaGVjaworICAqIHRoZSBwcmVjaXNpb24gb2YgdGhlaXIgb3BlcmFuZCBvciBvcGVyYW5kcywgYW5kIHRocm93IGFuCisgICogPGNvZGU+QXJpdGhtZXRpY0V4Y2VwdGlvbjwvY29kZT4gaWYgYW4gb3BlcmFuZCBpcyBtb3JlIHByZWNpc2UKKyAgKiB0aGFuIHRoZSBkaWdpdHMgc2V0dGluZyAodGhhdCBpcywgZGlnaXRzIHdvdWxkIGJlIGxvc3QpLgorICAqIFdoZW4gZGlzYWJsZWQsIG9wZXJhbmRzIGFyZSByb3VuZGVkIHRvIHRoZSBzcGVjaWZpZWQgZGlnaXRzLgorICAqCisgICogQHNlcmlhbAorICAqLworIGJvb2xlYW4gbG9zdERpZ2l0czsKKyAKKyAvKioKKyAgKiBUaGUgcm91bmRpbmcgYWxnb3JpdGhtIHRvIGJlIHVzZWQgZm9yIGFuIG9wZXJhdGlvbi4KKyAgKiA8cD4KKyAgKiBUaGUge0BsaW5rIEJpZ0RlY2ltYWx9IG9wZXJhdG9yIG1ldGhvZHMgdXNlIHRoaXMgdmFsdWUgdG8KKyAgKiBkZXRlcm1pbmUgdGhlIGFsZ29yaXRobSB0byBiZSB1c2VkIHdoZW4gbm9uLXplcm8gZGlnaXRzIGhhdmUgdG8KKyAgKiBiZSBkaXNjYXJkZWQgaW4gb3JkZXIgdG8gcmVkdWNlIHRoZSBwcmVjaXNpb24gb2YgYSByZXN1bHQuCisgICogVGhlIHZhbHVlIG11c3QgYmUgb25lIG9mIHRoZSBwdWJsaWMgY29uc3RhbnRzIHdob3NlIG5hbWUgc3RhcnRzCisgICogd2l0aCA8Y29kZT5ST1VORF88L2NvZGU+LgorICAqCisgICogQHNlZSAjUk9VTkRfQ0VJTElORworICAqIEBzZWUgI1JPVU5EX0RPV04KKyAgKiBAc2VlICNST1VORF9GTE9PUgorICAqIEBzZWUgI1JPVU5EX0hBTEZfRE9XTgorICAqIEBzZWUgI1JPVU5EX0hBTEZfRVZFTgorICAqIEBzZWUgI1JPVU5EX0hBTEZfVVAKKyAgKiBAc2VlICNST1VORF9VTk5FQ0VTU0FSWQorICAqIEBzZWUgI1JPVU5EX1VQCisgICogQHNlcmlhbAorICAqLworIGludCByb3VuZGluZ01vZGU7CisgCisgLyogcHJvcGVydGllcyBwcml2YXRlIGNvbnN0YW50ICovCisgLy8gZGVmYXVsdCBzZXR0aW5ncworIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBERUZBVUxUX0ZPUk09U0NJRU5USUZJQzsKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgREVGQVVMVF9ESUdJVFM9OTsKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIERFRkFVTFRfTE9TVERJR0lUUz1mYWxzZTsKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgREVGQVVMVF9ST1VORElOR01PREU9Uk9VTkRfSEFMRl9VUDsKKyAKKyAvKiBwcm9wZXJ0aWVzIHByaXZhdGUgY29uc3RhbnQgKi8KKyAKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTUlOX0RJR0lUUz0wOyAvLyBzbWFsbGVzdCB2YWx1ZSBmb3IgRElHSVRTLgorIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNQVhfRElHSVRTPTk5OTk5OTk5OTsgLy8gbGFyZ2VzdCB2YWx1ZSBmb3IgRElHSVRTLiAgSWYgaW5jcmVhc2VkLAorIC8vIHRoZSBCaWdEZWNpbWFsIGNsYXNzIG1heSBuZWVkIHVwZGF0ZS4KKyAvLyBsaXN0IG9mIHZhbGlkIHJvdW5kaW5nIG1vZGUgdmFsdWVzLCBtb3N0IGNvbW1vbiB0d28gZmlyc3QKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgUk9VTkRTW109bmV3IGludFtde1JPVU5EX0hBTEZfVVAsUk9VTkRfVU5ORUNFU1NBUlksUk9VTkRfQ0VJTElORyxST1VORF9ET1dOLFJPVU5EX0ZMT09SLFJPVU5EX0hBTEZfRE9XTixST1VORF9IQUxGX0VWRU4sUk9VTkRfVVB9OworIAorIAorIHByaXZhdGUgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgUk9VTkRXT1JEU1tdPW5ldyBqYXZhLmxhbmcuU3RyaW5nW117IlJPVU5EX0hBTEZfVVAiLCJST1VORF9VTk5FQ0VTU0FSWSIsIlJPVU5EX0NFSUxJTkciLCJST1VORF9ET1dOIiwiUk9VTkRfRkxPT1IiLCJST1VORF9IQUxGX0RPV04iLCJST1VORF9IQUxGX0VWRU4iLCJST1VORF9VUCJ9OyAvLyBtYXRjaGluZyBuYW1lcyBvZiB0aGUgUk9VTkRTIHZhbHVlcworIAorIAorIAorIAorIC8qIHByb3BlcnRpZXMgcHJpdmF0ZSBjb25zdGFudCB1bnVzZWQgKi8KKyAKKyAvLyBTZXJpYWxpemF0aW9uIHZlcnNpb24KKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQ9NzE2MzM3Njk5ODg5MjUxNTM3Nkw7CisgCisgLyogcHJvcGVydGllcyBwdWJsaWMgY29uc3RhbnQgKi8KKyAvKioKKyAgKiBBIDxjb2RlPk1hdGhDb250ZXh0PC9jb2RlPiBvYmplY3QgaW5pdGlhbGl6ZWQgdG8gdGhlIGRlZmF1bHQKKyAgKiBzZXR0aW5ncyBmb3IgZ2VuZXJhbC1wdXJwb3NlIGFyaXRobWV0aWMuICBUaGF0IGlzLAorICAqIDxjb2RlPmRpZ2l0cz05IGZvcm09U0NJRU5USUZJQyBsb3N0RGlnaXRzPWZhbHNlCisgICogcm91bmRpbmdNb2RlPVJPVU5EX0hBTEZfVVA8L2NvZGU+LgorICAqCisgICogQHNlZSAjU0NJRU5USUZJQworICAqIEBzZWUgI1JPVU5EX0hBTEZfVVAKKyAgKiBAc3RhYmxlIElDVSAyLjAKKyAgKi8KKyBwdWJsaWMgc3RhdGljIGZpbmFsIGNvbS5pYm0uaWN1Lm1hdGguTWF0aENvbnRleHQgREVGQVVMVD1uZXcgY29tLmlibS5pY3UubWF0aC5NYXRoQ29udGV4dChERUZBVUxUX0RJR0lUUyxERUZBVUxUX0ZPUk0sREVGQVVMVF9MT1NURElHSVRTLERFRkFVTFRfUk9VTkRJTkdNT0RFKTsKKworIAorIAorIAorIC8qIC0tLS0tIENvbnN0cnVjdG9ycyAtLS0tLSAqLworIAorIC8qKgorICAqIENvbnN0cnVjdHMgYSBuZXcgPGNvZGU+TWF0aENvbnRleHQ8L2NvZGU+IHdpdGggYSBzcGVjaWZpZWQKKyAgKiBwcmVjaXNpb24uCisgICogVGhlIG90aGVyIHNldHRpbmdzIGFyZSBzZXQgdG8gdGhlIGRlZmF1bHQgdmFsdWVzCisgICogKHNlZSB7QGxpbmsgI0RFRkFVTFR9KS4KKyAgKgorICAqIEFuIDxjb2RlPklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbjwvY29kZT4gaXMgdGhyb3duIGlmIHRoZQorICAqIDxjb2RlPnNldGRpZ2l0czwvY29kZT4gcGFyYW1ldGVyIGlzIG91dCBvZiByYW5nZQorICAqICgmbHQ7MCBvciAmZ3Q7OTk5OTk5OTk5KS4KKyAgKgorICAqIEBwYXJhbSBzZXRkaWdpdHMgICAgIFRoZSA8Y29kZT5pbnQ8L2NvZGU+IGRpZ2l0cyBzZXR0aW5nCisgICogICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgPGNvZGU+TWF0aENvbnRleHQ8L2NvZGU+LgorICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHBhcmFtZXRlciBvdXQgb2YgcmFuZ2UuCisgICogQHN0YWJsZSBJQ1UgMi4wCisgICovCisgCisgcHVibGljIE1hdGhDb250ZXh0KGludCBzZXRkaWdpdHMpeworICB0aGlzKHNldGRpZ2l0cyxERUZBVUxUX0ZPUk0sREVGQVVMVF9MT1NURElHSVRTLERFRkFVTFRfUk9VTkRJTkdNT0RFKTsKKyAgcmV0dXJuO30KKworIAorIC8qKgorICAqIENvbnN0cnVjdHMgYSBuZXcgPGNvZGU+TWF0aENvbnRleHQ8L2NvZGU+IHdpdGggYSBzcGVjaWZpZWQKKyAgKiBwcmVjaXNpb24gYW5kIGZvcm0uCisgICogVGhlIG90aGVyIHNldHRpbmdzIGFyZSBzZXQgdG8gdGhlIGRlZmF1bHQgdmFsdWVzCisgICogKHNlZSB7QGxpbmsgI0RFRkFVTFR9KS4KKyAgKgorICAqIEFuIDxjb2RlPklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbjwvY29kZT4gaXMgdGhyb3duIGlmIHRoZQorICAqIDxjb2RlPnNldGRpZ2l0czwvY29kZT4gcGFyYW1ldGVyIGlzIG91dCBvZiByYW5nZQorICAqICgmbHQ7MCBvciAmZ3Q7OTk5OTk5OTk5KSwgb3IgaWYgdGhlIHZhbHVlIGdpdmVuIGZvciB0aGUKKyAgKiA8Y29kZT5zZXRmb3JtPC9jb2RlPiBwYXJhbWV0ZXIgaXMgbm90IG9uZSBvZiB0aGUgYXBwcm9wcmlhdGUKKyAgKiBjb25zdGFudHMuCisgICoKKyAgKiBAcGFyYW0gc2V0ZGlnaXRzICAgICBUaGUgPGNvZGU+aW50PC9jb2RlPiBkaWdpdHMgc2V0dGluZworICAqICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIDxjb2RlPk1hdGhDb250ZXh0PC9jb2RlPi4KKyAgKiBAcGFyYW0gc2V0Zm9ybSAgICAgICBUaGUgPGNvZGU+aW50PC9jb2RlPiBmb3JtIHNldHRpbmcKKyAgKiAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyA8Y29kZT5NYXRoQ29udGV4dDwvY29kZT4uCisgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gcGFyYW1ldGVyIG91dCBvZiByYW5nZS4KKyAgKiBAc3RhYmxlIElDVSAyLjAKKyAgKi8KKyAKKyBwdWJsaWMgTWF0aENvbnRleHQoaW50IHNldGRpZ2l0cyxpbnQgc2V0Zm9ybSl7CisgIHRoaXMoc2V0ZGlnaXRzLHNldGZvcm0sREVGQVVMVF9MT1NURElHSVRTLERFRkFVTFRfUk9VTkRJTkdNT0RFKTsKKyAgcmV0dXJuO30KKworIC8qKgorICAqIENvbnN0cnVjdHMgYSBuZXcgPGNvZGU+TWF0aENvbnRleHQ8L2NvZGU+IHdpdGggYSBzcGVjaWZpZWQKKyAgKiBwcmVjaXNpb24sIGZvcm0sIGFuZCBsb3N0RGlnaXRzIHNldHRpbmcuCisgICogVGhlIHJvdW5kaW5nTW9kZSBzZXR0aW5nIGlzIHNldCB0byBpdHMgZGVmYXVsdCB2YWx1ZQorICAqIChzZWUge0BsaW5rICNERUZBVUxUfSkuCisgICoKKyAgKiBBbiA8Y29kZT5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb248L2NvZGU+IGlzIHRocm93biBpZiB0aGUKKyAgKiA8Y29kZT5zZXRkaWdpdHM8L2NvZGU+IHBhcmFtZXRlciBpcyBvdXQgb2YgcmFuZ2UKKyAgKiAoJmx0OzAgb3IgJmd0Ozk5OTk5OTk5OSksIG9yIGlmIHRoZSB2YWx1ZSBnaXZlbiBmb3IgdGhlCisgICogPGNvZGU+c2V0Zm9ybTwvY29kZT4gcGFyYW1ldGVyIGlzIG5vdCBvbmUgb2YgdGhlIGFwcHJvcHJpYXRlCisgICogY29uc3RhbnRzLgorICAqCisgICogQHBhcmFtIHNldGRpZ2l0cyAgICAgVGhlIDxjb2RlPmludDwvY29kZT4gZGlnaXRzIHNldHRpbmcKKyAgKiAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyA8Y29kZT5NYXRoQ29udGV4dDwvY29kZT4uCisgICogQHBhcmFtIHNldGZvcm0gICAgICAgVGhlIDxjb2RlPmludDwvY29kZT4gZm9ybSBzZXR0aW5nCisgICogICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgPGNvZGU+TWF0aENvbnRleHQ8L2NvZGU+LgorICAqIEBwYXJhbSBzZXRsb3N0ZGlnaXRzIFRoZSA8Y29kZT5ib29sZWFuPC9jb2RlPiBsb3N0RGlnaXRzCisgICogICAgICAgICAgICAgICAgICAgICAgc2V0dGluZyBmb3IgdGhpcyA8Y29kZT5NYXRoQ29udGV4dDwvY29kZT4uCisgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gcGFyYW1ldGVyIG91dCBvZiByYW5nZS4KKyAgKiBAc3RhYmxlIElDVSAyLjAKKyAgKi8KKyAKKyBwdWJsaWMgTWF0aENvbnRleHQoaW50IHNldGRpZ2l0cyxpbnQgc2V0Zm9ybSxib29sZWFuIHNldGxvc3RkaWdpdHMpeworICB0aGlzKHNldGRpZ2l0cyxzZXRmb3JtLHNldGxvc3RkaWdpdHMsREVGQVVMVF9ST1VORElOR01PREUpOworICByZXR1cm47fQorCisgLyoqCisgICogQ29uc3RydWN0cyBhIG5ldyA8Y29kZT5NYXRoQ29udGV4dDwvY29kZT4gd2l0aCBhIHNwZWNpZmllZAorICAqIHByZWNpc2lvbiwgZm9ybSwgbG9zdERpZ2l0cywgYW5kIHJvdW5kaW5nTW9kZSBzZXR0aW5nLgorICAqCisgICogQW4gPGNvZGU+SWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uPC9jb2RlPiBpcyB0aHJvd24gaWYgdGhlCisgICogPGNvZGU+c2V0ZGlnaXRzPC9jb2RlPiBwYXJhbWV0ZXIgaXMgb3V0IG9mIHJhbmdlCisgICogKCZsdDswIG9yICZndDs5OTk5OTk5OTkpLCBvciBpZiB0aGUgdmFsdWUgZ2l2ZW4gZm9yIHRoZQorICAqIDxjb2RlPnNldGZvcm08L2NvZGU+IG9yIDxjb2RlPnNldHJvdW5kaW5nbW9kZTwvY29kZT4gcGFyYW1ldGVycyBpcworICAqIG5vdCBvbmUgb2YgdGhlIGFwcHJvcHJpYXRlIGNvbnN0YW50cy4KKyAgKgorICAqIEBwYXJhbSBzZXRkaWdpdHMgICAgICAgVGhlIDxjb2RlPmludDwvY29kZT4gZGlnaXRzIHNldHRpbmcKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIDxjb2RlPk1hdGhDb250ZXh0PC9jb2RlPi4KKyAgKiBAcGFyYW0gc2V0Zm9ybSAgICAgICAgIFRoZSA8Y29kZT5pbnQ8L2NvZGU+IGZvcm0gc2V0dGluZworICAqICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgPGNvZGU+TWF0aENvbnRleHQ8L2NvZGU+LgorICAqIEBwYXJhbSBzZXRsb3N0ZGlnaXRzICAgVGhlIDxjb2RlPmJvb2xlYW48L2NvZGU+IGxvc3REaWdpdHMKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmcgZm9yIHRoaXMgPGNvZGU+TWF0aENvbnRleHQ8L2NvZGU+LgorICAqIEBwYXJhbSBzZXRyb3VuZGluZ21vZGUgVGhlIDxjb2RlPmludDwvY29kZT4gcm91bmRpbmdNb2RlIHNldHRpbmcKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIDxjb2RlPk1hdGhDb250ZXh0PC9jb2RlPi4KKyAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBwYXJhbWV0ZXIgb3V0IG9mIHJhbmdlLgorICAqIEBzdGFibGUgSUNVIDIuMAorICAqLworIAorIHB1YmxpYyBNYXRoQ29udGV4dChpbnQgc2V0ZGlnaXRzLGludCBzZXRmb3JtLGJvb2xlYW4gc2V0bG9zdGRpZ2l0cyxpbnQgc2V0cm91bmRpbmdtb2RlKXtzdXBlcigpOworICAKKyAgCisgIC8vIHNldCB2YWx1ZXMsIGFmdGVyIGNoZWNraW5nCisgIGlmIChzZXRkaWdpdHMhPURFRkFVTFRfRElHSVRTKSAKKyAgIHsKKyAgICBpZiAoc2V0ZGlnaXRzPE1JTl9ESUdJVFMpIAorICAgICB0aHJvdyBuZXcgamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiRGlnaXRzIHRvbyBzbWFsbDoiKyIgIitzZXRkaWdpdHMpOworICAgIGlmIChzZXRkaWdpdHM+TUFYX0RJR0lUUykgCisgICAgIHRocm93IG5ldyBqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJEaWdpdHMgdG9vIGxhcmdlOiIrIiAiK3NldGRpZ2l0cyk7CisgICB9CisgIHsvKnNlbGVjdCovCisgIGlmIChzZXRmb3JtPT1TQ0lFTlRJRklDKQorICAgOyAvLyBbbW9zdCBjb21tb25dCisgIGVsc2UgaWYgKHNldGZvcm09PUVOR0lORUVSSU5HKQorICAgOworICBlbHNlIGlmIChzZXRmb3JtPT1QTEFJTikKKyAgIDsKKyAgZWxzZXsKKyAgIHRocm93IG5ldyBqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJCYWQgZm9ybSB2YWx1ZToiKyIgIitzZXRmb3JtKTsKKyAgfQorICB9CisgIGlmICgoIShpc1ZhbGlkUm91bmQoc2V0cm91bmRpbmdtb2RlKSkpKSAKKyAgIHRocm93IG5ldyBqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJCYWQgcm91bmRpbmdNb2RlIHZhbHVlOiIrIiAiK3NldHJvdW5kaW5nbW9kZSk7CisgIGRpZ2l0cz1zZXRkaWdpdHM7CisgIGZvcm09c2V0Zm9ybTsKKyAgbG9zdERpZ2l0cz1zZXRsb3N0ZGlnaXRzOyAvLyBbbm8gYmFkIHZhbHVlIHBvc3NpYmxlXQorICByb3VuZGluZ01vZGU9c2V0cm91bmRpbmdtb2RlOworICByZXR1cm47fQorCisgLyoqCisgICogUmV0dXJucyB0aGUgZGlnaXRzIHNldHRpbmcuCisgICogVGhpcyB2YWx1ZSBpcyBhbHdheXMgbm9uLW5lZ2F0aXZlLgorICAqCisgICogQHJldHVybiBhbiA8Y29kZT5pbnQ8L2NvZGU+IHdoaWNoIGlzIHRoZSB2YWx1ZSBvZiB0aGUgZGlnaXRzCisgICogICAgICAgICBzZXR0aW5nCisgICogQHN0YWJsZSBJQ1UgMi4wCisgICovCisgCisgcHVibGljIGludCBnZXREaWdpdHMoKXsKKyAgcmV0dXJuIGRpZ2l0czsKKyAgfQorCisgLyoqCisgICogUmV0dXJucyB0aGUgZm9ybSBzZXR0aW5nLgorICAqIFRoaXMgd2lsbCBiZSBvbmUgb2YKKyAgKiB7QGxpbmsgI0VOR0lORUVSSU5HfSwKKyAgKiB7QGxpbmsgI1BMQUlOfSwgb3IKKyAgKiB7QGxpbmsgI1NDSUVOVElGSUN9LgorICAqCisgICogQHJldHVybiBhbiA8Y29kZT5pbnQ8L2NvZGU+IHdoaWNoIGlzIHRoZSB2YWx1ZSBvZiB0aGUgZm9ybSBzZXR0aW5nCisgICogQHN0YWJsZSBJQ1UgMi4wCisgICovCisgCisgcHVibGljIGludCBnZXRGb3JtKCl7CisgIHJldHVybiBmb3JtOworICB9CisKKyAvKioKKyAgKiBSZXR1cm5zIHRoZSBsb3N0RGlnaXRzIHNldHRpbmcuCisgICogVGhpcyB3aWxsIGJlIGVpdGhlciA8Y29kZT50cnVlPC9jb2RlPiAoZW5hYmxlZCkgb3IKKyAgKiA8Y29kZT5mYWxzZTwvY29kZT4gKGRpc2FibGVkKS4KKyAgKgorICAqIEByZXR1cm4gYSA8Y29kZT5ib29sZWFuPC9jb2RlPiB3aGljaCBpcyB0aGUgdmFsdWUgb2YgdGhlIGxvc3REaWdpdHMKKyAgKiAgICAgICAgICAgc2V0dGluZworICAqIEBzdGFibGUgSUNVIDIuMAorICAqLworIAorIHB1YmxpYyBib29sZWFuIGdldExvc3REaWdpdHMoKXsKKyAgcmV0dXJuIGxvc3REaWdpdHM7CisgIH0KKworIC8qKgorICAqIFJldHVybnMgdGhlIHJvdW5kaW5nTW9kZSBzZXR0aW5nLgorICAqIFRoaXMgd2lsbCBiZSBvbmUgb2YKKyAgKiB7QGxpbmsgICNST1VORF9DRUlMSU5HfSwKKyAgKiB7QGxpbmsgICNST1VORF9ET1dOfSwKKyAgKiB7QGxpbmsgICNST1VORF9GTE9PUn0sCisgICoge0BsaW5rICAjUk9VTkRfSEFMRl9ET1dOfSwKKyAgKiB7QGxpbmsgICNST1VORF9IQUxGX0VWRU59LAorICAqIHtAbGluayAgI1JPVU5EX0hBTEZfVVB9LAorICAqIHtAbGluayAgI1JPVU5EX1VOTkVDRVNTQVJZfSwgb3IKKyAgKiB7QGxpbmsgICNST1VORF9VUH0uCisgICoKKyAgKiBAcmV0dXJuIGFuIDxjb2RlPmludDwvY29kZT4gd2hpY2ggaXMgdGhlIHZhbHVlIG9mIHRoZSByb3VuZGluZ01vZGUKKyAgKiAgICAgICAgIHNldHRpbmcKKyAgKiBAc3RhYmxlIElDVSAyLjAKKyAgKi8KKyAKKyBwdWJsaWMgaW50IGdldFJvdW5kaW5nTW9kZSgpeworICByZXR1cm4gcm91bmRpbmdNb2RlOworICB9CisKKyAvKiogUmV0dXJucyB0aGUgPGNvZGU+TWF0aENvbnRleHQ8L2NvZGU+IGFzIGEgcmVhZGFibGUgc3RyaW5nLgorICAqIFRoZSA8Y29kZT5TdHJpbmc8L2NvZGU+IHJldHVybmVkIHJlcHJlc2VudHMgdGhlIHNldHRpbmdzIG9mIHRoZQorICAqIDxjb2RlPk1hdGhDb250ZXh0PC9jb2RlPiBvYmplY3QgYXMgZm91ciBibGFuay1kZWxpbWl0ZWQgd29yZHMKKyAgKiBzZXBhcmF0ZWQgYnkgYSBzaW5nbGUgYmxhbmsgYW5kIHdpdGggbm8gbGVhZGluZyBvciB0cmFpbGluZyBibGFua3MsCisgICogYXMgZm9sbG93czoKKyAgKiA8b2w+CisgICogPGxpPgorICAqIDxjb2RlPmRpZ2l0cz08L2NvZGU+LCBpbW1lZGlhdGVseSBmb2xsb3dlZCBieQorICAqIHRoZSB2YWx1ZSBvZiB0aGUgZGlnaXRzIHNldHRpbmcgYXMgYSBudW1lcmljIHdvcmQuCisgICogPGxpPgorICAqIDxjb2RlPmZvcm09PC9jb2RlPiwgaW1tZWRpYXRlbHkgZm9sbG93ZWQgYnkKKyAgKiB0aGUgdmFsdWUgb2YgdGhlIGZvcm0gc2V0dGluZyBhcyBhbiB1cHBlcmNhc2Ugd29yZAorICAqIChvbmUgb2YgPGNvZGU+U0NJRU5USUZJQzwvY29kZT4sIDxjb2RlPlBMQUlOPC9jb2RlPiwgb3IKKyAgKiA8Y29kZT5FTkdJTkVFUklORzwvY29kZT4pLgorICAqIDxsaT4KKyAgKiA8Y29kZT5sb3N0RGlnaXRzPTwvY29kZT4sIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5CisgICogdGhlIHZhbHVlIG9mIHRoZSBsb3N0RGlnaXRzIHNldHRpbmcKKyAgKiAoPGNvZGU+MTwvY29kZT4gaWYgZW5hYmxlZCwgPGNvZGU+MDwvY29kZT4gaWYgZGlzYWJsZWQpLgorICAqIDxsaT4KKyAgKiA8Y29kZT5yb3VuZGluZ01vZGU9PC9jb2RlPiwgaW1tZWRpYXRlbHkgZm9sbG93ZWQgYnkKKyAgKiB0aGUgdmFsdWUgb2YgdGhlIHJvdW5kaW5nTW9kZSBzZXR0aW5nIGFzIGEgd29yZC4KKyAgKiBUaGlzIHdvcmQgd2lsbCBiZSB0aGUgc2FtZSBhcyB0aGUgbmFtZSBvZiB0aGUgY29ycmVzcG9uZGluZyBwdWJsaWMKKyAgKiBjb25zdGFudC4KKyAgKiA8L29sPgorICAqIDxwPgorICAqIEZvciBleGFtcGxlOgorICAqIDxicj48Y29kZT4KKyAgKiBkaWdpdHM9OSBmb3JtPVNDSUVOVElGSUMgbG9zdERpZ2l0cz0wIHJvdW5kaW5nTW9kZT1ST1VORF9IQUxGX1VQCisgICogPC9jb2RlPgorICAqIDxwPgorICAqIEFkZGl0aW9uYWwgd29yZHMgbWF5IGJlIGFwcGVuZGVkIHRvIHRoZSByZXN1bHQgb2YKKyAgKiA8Y29kZT50b1N0cmluZzwvY29kZT4gaW4gdGhlIGZ1dHVyZSBpZiBtb3JlIHByb3BlcnRpZXMgYXJlIGFkZGVkCisgICogdG8gdGhlIGNsYXNzLgorICAqCisgICogQHJldHVybiBhIDxjb2RlPlN0cmluZzwvY29kZT4gcmVwcmVzZW50aW5nIHRoZSBjb250ZXh0IHNldHRpbmdzLgorICAqIEBzdGFibGUgSUNVIDIuMAorICAqLworIAorIHB1YmxpYyBqYXZhLmxhbmcuU3RyaW5nIHRvU3RyaW5nKCl7CisgIGphdmEubGFuZy5TdHJpbmcgZm9ybXN0cj1udWxsOworICBpbnQgcj0wOworICBqYXZhLmxhbmcuU3RyaW5nIHJvdW5kd29yZD1udWxsOworICB7LypzZWxlY3QqLworICBpZiAoZm9ybT09U0NJRU5USUZJQykKKyAgIGZvcm1zdHI9IlNDSUVOVElGSUMiOworICBlbHNlIGlmIChmb3JtPT1FTkdJTkVFUklORykKKyAgIGZvcm1zdHI9IkVOR0lORUVSSU5HIjsKKyAgZWxzZXsKKyAgIGZvcm1zdHI9IlBMQUlOIjsvKiBmb3JtPVBMQUlOICovCisgIH0KKyAgfQorICB7aW50ICQxPVJPVU5EUy5sZW5ndGg7cj0wO3I6Zm9yKDskMT4wOyQxLS0scisrKXsKKyAgIGlmIChyb3VuZGluZ01vZGU9PVJPVU5EU1tyXSkgCisgICAgeworICAgICByb3VuZHdvcmQ9Uk9VTkRXT1JEU1tyXTsKKyAgICAgYnJlYWsgcjsKKyAgICB9CisgICB9CisgIH0vKnIqLworICByZXR1cm4gImRpZ2l0cz0iK2RpZ2l0cysiICIrImZvcm09Iitmb3Jtc3RyKyIgIisibG9zdERpZ2l0cz0iKyhsb3N0RGlnaXRzPyIxIjoiMCIpKyIgIisicm91bmRpbmdNb2RlPSIrcm91bmR3b3JkOworICB9CisKKyAKKyAvKiA8c2dtbD4gVGVzdCB3aGV0aGVyIHJvdW5kIGlzIHZhbGlkLiA8L3NnbWw+ICovCisgLy8gVGhpcyBjb3VsZCBiZSBtYWRlIHNoYXJlZCBmb3IgdXNlIGJ5IEJpZ0RlY2ltYWwgZm9yIHNldFNjYWxlLgorIAorIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gaXNWYWxpZFJvdW5kKGludCB0ZXN0cm91bmQpeworICBpbnQgcj0wOworICB7aW50ICQyPVJPVU5EUy5sZW5ndGg7cj0wO3I6Zm9yKDskMj4wOyQyLS0scisrKXsKKyAgIGlmICh0ZXN0cm91bmQ9PVJPVU5EU1tyXSkgCisgICAgcmV0dXJuIHRydWU7CisgICB9CisgIH0vKnIqLworICByZXR1cm4gZmFsc2U7CisgIH0KKyB9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvbWF0aC9wYWNrYWdlLmh0bWwgYi9zcmMvY29tL2libS9pY3UvbWF0aC9wYWNrYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYWRiNjYzOQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS9tYXRoL3BhY2thZ2UuaHRtbApAQCAtMCwwICsxLDE5IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKworPGhlYWQ+PCEtLSAgQ29weXJpZ2h0IChDKSAyMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZAorICBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L21hdGgvcGFja2FnZS5odG1sLHYgJAorICAkUmV2aXNpb246IDEuMSAkCisgICREYXRlOiAyMDAwLzA0LzA1IDE4OjA1OjExICQKKy0tPgorCis8dGl0bGU+QzpcY3ZzXGljdTRqXHNyY1xjb21caWJtXGRlbW9ccGFja2FnZS5odG1sPC90aXRsZT4KKzwvaGVhZD4KKworPGJvZHkgYmdjb2xvcj0id2hpdGUiPgorCis8cD5JQk0gQmlnRGVjaW1hbCBzdXBwb3J0LjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS90ZXh0L0FueVRyYW5zbGl0ZXJhdG9yLmphdmEgYi9zcmMvY29tL2libS9pY3UvdGV4dC9BbnlUcmFuc2xpdGVyYXRvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2NzQzZGQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdGV4dC9BbnlUcmFuc2xpdGVyYXRvci5qYXZhCkBAIC0wLDAgKzEsMzM4IEBACisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogQ29weXJpZ2h0IChjKSAyMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uCisqIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L3RleHQvQW55VHJhbnNsaXRlcmF0b3IuamF2YSx2ICQgCisqICRSZXZpc2lvbjogMS4xICQKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIERhdGUgICAgICAgIE5hbWUgICAgICAgIERlc2NyaXB0aW9uCisqIDA2LzA2LzIwMDIgIGFsaXUgICAgICAgIENyZWF0aW9uLgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCitwYWNrYWdlIGNvbS5pYm0uaWN1LnRleHQ7CitpbXBvcnQgY29tLmlibS5pY3UubGFuZy5VU2NyaXB0OworaW1wb3J0IGphdmEubGFuZy5NYXRoOworaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworCisvKioKKyAqIEEgdHJhbnNsaXRlcmF0b3IgdGhhdCB0cmFuc2xhdGVzIG11bHRpcGxlIGlucHV0IHNjcmlwdHMgdG8gYSBzaW5nbGUKKyAqIG91dHB1dCBzY3JpcHQuICBJdCBpcyBuYW1lZCBBbnktVCBvciBBbnktVC9WLCB3aGVyZSBUIGlzIHRoZSB0YXJnZXQKKyAqIGFuZCBWIGlzIHRoZSBvcHRpb25hbCB2YXJpYW50LiAgVGhlIHRhcmdldCBUIGlzIGEgc2NyaXB0LgorICogCisgKiA8cD5BbiBBbnlUcmFuc2xpdGVyYXRvciBwYXJ0aXRpb25zIHRleHQgaW50byBydW5zIG9mIHRoZSBzYW1lCisgKiBzY3JpcHQsIHRvZ2V0aGVyIHdpdGggYWRqYWNlbnQgQ09NTU9OIG9yIElOSEVSSVRFRCBjaGFyYWN0ZXJzLgorICogQWZ0ZXIgZGV0ZXJtaW5pbmcgdGhlIHNjcmlwdCBvZiBlYWNoIHJ1biwgaXQgdHJhbnNsaXRlcmF0ZXMgZnJvbQorICogdGhhdCBzY3JpcHQgdG8gdGhlIGdpdmVuIHRhcmdldC92YXJpYW50LiAgSXQgZG9lcyBzbyBieQorICogaW5zdGFudGlhdGluZyBhIHRyYW5zbGl0ZXJhdG9yIGZyb20gdGhlIHNvdXJjZSBzY3JpcHQgdG8gdGhlCisgKiB0YXJnZXQvdmFyaWFudC4gIElmIGEgcnVuIGNvbnNpc3RzIG9ubHkgb2YgdGhlIHRhcmdldCBzY3JpcHQsCisgKiBDT01NT04sIG9yIElOSEVSSVRFRCBjaGFyYWN0ZXJzLCB0aGVuIHRoZSBydW4gaXMgbm90IGNoYW5nZWQuCisgKgorICogPHA+QXQgc3RhcnR1cCwgYWxsIHBvc3NpYmxlIEFueVRyYW5zbGl0ZXJhdG9ycyBhcmUgcmVnaXN0ZXJlZCB3aXRoCisgKiB0aGUgc3lzdGVtLCBhcyBkZXRlcm1pbmVkIGJ5IGV4YW1pbmluZyB0aGUgcmVnaXN0ZXJlZCBzY3JpcHQKKyAqIHRyYW5zbGl0ZXJhdG9ycy4KKyAqIAorICogQHNpbmNlIElDVSAyLjIKKyAqIEBhdXRob3IgQWxhbiBMaXUKKyAqLworY2xhc3MgQW55VHJhbnNsaXRlcmF0b3IgZXh0ZW5kcyBUcmFuc2xpdGVyYXRvciB7CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIENvbnN0YW50cworICAgIAorICAgIHN0YXRpYyBmaW5hbCBjaGFyIFRBUkdFVF9TRVAgPSAnLSc7CisgICAgc3RhdGljIGZpbmFsIGNoYXIgVkFSSUFOVF9TRVAgPSAnLyc7CisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBBTlkgPSAiQW55IjsKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIE5VTExfSUQgPSAiTnVsbCI7CisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBMQVRJTl9QSVZPVCA9ICItTGF0aW47TGF0aW4tIjsKKyAgICAKKyAgICAvKioKKyAgICAgKiBDYWNoZSBtYXBwaW5nIFVTY3JpcHRDb2RlIHZhbHVlcyB0byBUcmFuc2xpdGVyYXRvciouCisgICAgICovCisgICAgcHJpdmF0ZSBNYXAgY2FjaGU7CisKKyAgICAvKioKKyAgICAgKiBUaGUgdGFyZ2V0IG9yIHRhcmdldC92YXJpYW50IHN0cmluZy4KKyAgICAgKi8KKyAgICBwcml2YXRlIFN0cmluZyB0YXJnZXQ7CisKKyAgICAvKioKKyAgICAgKiBUaGUgdGFyZ2V0IHNjcmlwdCBjb2RlLiAgTmV2ZXIgVVNDUklQVF9JTlZBTElEX0NPREUuCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgdGFyZ2V0U2NyaXB0OworCisgICAgLyoqCisgICAgICogSW1wbGVtZW50cyB7QGxpbmsgVHJhbnNsaXRlcmF0b3IjaGFuZGxlVHJhbnNsaXRlcmF0ZX0uCisgICAgICovCisgICAgcHJvdGVjdGVkIHZvaWQgaGFuZGxlVHJhbnNsaXRlcmF0ZShSZXBsYWNlYWJsZSB0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zaXRpb24gcG9zLCBib29sZWFuIGlzSW5jcmVtZW50YWwpIHsKKyAgICAgICAgaW50IGFsbFN0YXJ0ID0gcG9zLnN0YXJ0OworICAgICAgICBpbnQgYWxsTGltaXQgPSBwb3MubGltaXQ7CisKKyAgICAgICAgU2NyaXB0UnVuSXRlcmF0b3IgaXQgPQorICAgICAgICAgICAgbmV3IFNjcmlwdFJ1bkl0ZXJhdG9yKHRleHQsIHBvcy5jb250ZXh0U3RhcnQsIHBvcy5jb250ZXh0TGltaXQpOworCisgICAgICAgIHdoaWxlIChpdC5uZXh0KCkpIHsKKyAgICAgICAgICAgIC8vIElnbm9yZSBydW5zIGluIHRoZSBhbnRlIGNvbnRleHQKKyAgICAgICAgICAgIGlmIChpdC5saW1pdCA8PSBhbGxTdGFydCkgY29udGludWU7CisKKyAgICAgICAgICAgIC8vIFRyeSB0byBpbnN0YW50aWF0ZSB0cmFuc2xpdGVyYXRvciBmcm9tIGl0LnNjcmlwdENvZGUgdG8KKyAgICAgICAgICAgIC8vIG91ciB0YXJnZXQgb3IgdGFyZ2V0L3ZhcmlhbnQKKyAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQgPSBnZXRUcmFuc2xpdGVyYXRvcihpdC5zY3JpcHRDb2RlKTsKKworICAgICAgICAgICAgaWYgKHQgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgbm8gdHJhbnNsaXRlcmF0b3IuICBEbyBub3RoaW5nLCBidXQga2VlcAorICAgICAgICAgICAgICAgIC8vIHBvcy5zdGFydCB1cCB0byBkYXRlLgorICAgICAgICAgICAgICAgIHBvcy5zdGFydCA9IGl0LmxpbWl0OworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBJZiB0aGUgcnVuIGVuZCBpcyBiZWZvcmUgdGhlIHRyYW5zbGl0ZXJhdGlvbiBsaW1pdCwgZG8KKyAgICAgICAgICAgIC8vIGEgbm9uLWluY3JlbWVudGFsIHRyYW5zbGl0ZXJhdGlvbi4gIE90aGVyd2lzZSBkbyBhbgorICAgICAgICAgICAgLy8gaW5jcmVtZW50YWwgb25lLgorICAgICAgICAgICAgYm9vbGVhbiBpbmNyZW1lbnRhbCA9IGlzSW5jcmVtZW50YWwgJiYgKGl0LmxpbWl0ID49IGFsbExpbWl0KTsKKworICAgICAgICAgICAgcG9zLnN0YXJ0ID0gTWF0aC5tYXgoYWxsU3RhcnQsIGl0LnN0YXJ0KTsKKyAgICAgICAgICAgIHBvcy5saW1pdCA9IE1hdGgubWluKGFsbExpbWl0LCBpdC5saW1pdCk7CisgICAgICAgICAgICBpbnQgbGltaXQgPSBwb3MubGltaXQ7CisgICAgICAgICAgICB0LmZpbHRlcmVkVHJhbnNsaXRlcmF0ZSh0ZXh0LCBwb3MsIGluY3JlbWVudGFsKTsKKyAgICAgICAgICAgIGludCBkZWx0YSA9IHBvcy5saW1pdCAtIGxpbWl0OworICAgICAgICAgICAgYWxsTGltaXQgKz0gZGVsdGE7CisgICAgICAgICAgICBpdC5hZGp1c3RMaW1pdChkZWx0YSk7CisKKyAgICAgICAgICAgIC8vIFdlJ3JlIGRvbmUgaWYgd2UgZW50ZXIgdGhlIHBvc3QgY29udGV4dAorICAgICAgICAgICAgaWYgKGl0LmxpbWl0ID49IGFsbExpbWl0KSBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFJlc3RvcmUgbGltaXQuICBwb3Muc3RhcnQgaXMgZmluZSB3aGVyZSB0aGUgbGFzdCB0cmFuc2xpdGVyYXRvcgorICAgICAgICAvLyBsZWZ0IGl0LCBvciBhdCB0aGUgZW5kIG9mIHRoZSBsYXN0IHJ1bi4KKyAgICAgICAgcG9zLmxpbWl0ID0gYWxsTGltaXQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogUHJpdmF0ZSBjb25zdHJ1Y3RvcgorICAgICAqIEBwYXJhbSBpZCB0aGUgSUQgb2YgdGhlIGZvcm0gUy1UIG9yIFMtVC9WLCB3aGVyZSBUIGlzIHRoZVRhcmdldAorICAgICAqIGFuZCBWIGlzIHRoZVZhcmlhbnQuICBNdXN0IG5vdCBiZSBlbXB0eS4KKyAgICAgKiBAcGFyYW0gdGhlVGFyZ2V0IHRoZSB0YXJnZXQgbmFtZS4gIE11c3Qgbm90IGJlIGVtcHR5LCBhbmQgbXVzdAorICAgICAqIG5hbWUgYSBzY3JpcHQgY29ycmVzcG9uZGluZyB0byB0aGVUYXJnZXRTY3JpcHQuCisgICAgICogQHBhcmFtIHRoZVZhcmlhbnQgdGhlIHZhcmlhbnQgbmFtZSwgb3IgdGhlIGVtcHR5IHN0cmluZyBpZgorICAgICAqIHRoZXJlIGlzIG5vIHZhcmlhbnQKKyAgICAgKiBAcGFyYW0gdGhlVGFyZ2V0U2NyaXB0IHRoZSBzY3JpcHQgY29kZSBjb3JyZXNwb25kaW5nIHRvCisgICAgICogdGhlVGFyZ2V0LgorICAgICAqIEBwYXJhbSBlYyBlcnJvciBjb2RlLCBmYWlscyBpZiB0aGUgaW50ZXJuYWwgaGFzaHRhYmxlIGNhbm5vdCBiZQorICAgICAqIGFsbG9jYXRlZAorICAgICAqLworICAgIHByaXZhdGUgQW55VHJhbnNsaXRlcmF0b3IoU3RyaW5nIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHRoZVRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyB0aGVWYXJpYW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRoZVRhcmdldFNjcmlwdCkgeworICAgICAgICBzdXBlcihpZCwgbnVsbCk7CisgICAgICAgIHRhcmdldFNjcmlwdCA9IHRoZVRhcmdldFNjcmlwdDsKKyAgICAgICAgY2FjaGUgPSBuZXcgSGFzaE1hcCgpOworICAgICAgICAKKyAgICAgICAgdGFyZ2V0ID0gdGhlVGFyZ2V0OworICAgICAgICBpZiAodGhlVmFyaWFudC5sZW5ndGgoKSA+IDApIHsKKyAgICAgICAgICAgIHRhcmdldCA9IHRoZVRhcmdldCArIFZBUklBTlRfU0VQICsgdGhlVmFyaWFudDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSB0cmFuc2xpdGVyYXRvciBmcm9tIHRoZSBnaXZlbiBzb3VyY2UgdG8gb3VyIHRhcmdldCBvcgorICAgICAqIHRhcmdldC92YXJpYW50LiAgUmV0dXJucyBOVUxMIGlmIHRoZSBzb3VyY2UgaXMgdGhlIHNhbWUgYXMgb3VyCisgICAgICogdGFyZ2V0IHNjcmlwdCwgb3IgaWYgdGhlIHNvdXJjZSBpcyBVU0NSSVBUX0lOVkFMSURfQ09ERS4KKyAgICAgKiBDYWNoZXMgdGhlIHJlc3VsdCBhbmQgcmV0dXJucyB0aGUgc2FtZSB0cmFuc2xpdGVyYXRvciB0aGUgbmV4dAorICAgICAqIHRpbWUuICBUaGUgY2FsbGVyIGRvZXMgTk9UIG93biB0aGUgcmVzdWx0IGFuZCBtdXN0IG5vdCBkZWxldGUKKyAgICAgKiBpdC4KKyAgICAgKi8KKyAgICBwcml2YXRlIFRyYW5zbGl0ZXJhdG9yIGdldFRyYW5zbGl0ZXJhdG9yKGludCBzb3VyY2UpIHsKKyAgICAgICAgaWYgKHNvdXJjZSA9PSB0YXJnZXRTY3JpcHQgfHwgc291cmNlID09IFVTY3JpcHQuSU5WQUxJRF9DT0RFKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIEludGVnZXIga2V5ID0gbmV3IEludGVnZXIoc291cmNlKTsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgdCA9IChUcmFuc2xpdGVyYXRvcikgY2FjaGUuZ2V0KGtleSk7CisgICAgICAgIGlmICh0ID09IG51bGwpIHsKKyAgICAgICAgICAgIFN0cmluZyBzb3VyY2VOYW1lID0gVVNjcmlwdC5nZXROYW1lKHNvdXJjZSk7CisgICAgICAgICAgICBTdHJpbmcgaWQgPSBzb3VyY2VOYW1lICsgVEFSR0VUX1NFUCArIHRhcmdldDsKKyAgICAgICAgCisgICAgICAgICAgICB0ID0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoaWQsIEZPUldBUkQpOworICAgICAgICAgICAgaWYgKHQgPT0gbnVsbCkgeworICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gVHJ5IHRvIHBpdm90IGFyb3VuZCBMYXRpbiwgb3VyIG1vc3QgY29tbW9uIHNjcmlwdAorICAgICAgICAgICAgICAgIGlkID0gc291cmNlTmFtZSArIExBVElOX1BJVk9UICsgdGFyZ2V0OworICAgICAgICAgICAgICAgIHQgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZShpZCwgRk9SV0FSRCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh0ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBjYWNoZS5wdXQoa2V5LCB0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0OworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlZ2lzdGVycyBzdGFuZGFyZCB0cmFuc2xpdGVyYXRvcnMgd2l0aCB0aGUgc3lzdGVtLiAgQ2FsbGVkIGJ5CisgICAgICogVHJhbnNsaXRlcmF0b3IgZHVyaW5nIGluaXRpYWxpemF0aW9uLiAgU2NhbiBhbGwgY3VycmVudCB0YXJnZXRzCisgICAgICogYW5kIHJlZ2lzdGVyIHRob3NlIHRoYXQgYXJlIHNjcmlwdHMgVCBhcyBBbnktVC9WLgorICAgICAqLworICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyKCkgeworCisgICAgICAgIEhhc2hTZXQgc2VlbiA9IG5ldyBIYXNoU2V0KCk7CisKKyAgICAgICAgZm9yIChFbnVtZXJhdGlvbiBzPVRyYW5zbGl0ZXJhdG9yLmdldEF2YWlsYWJsZVNvdXJjZXMoKTsgcy5oYXNNb3JlRWxlbWVudHMoKTsgKSB7CisgICAgICAgICAgICBTdHJpbmcgc291cmNlID0gKFN0cmluZykgcy5uZXh0RWxlbWVudCgpOworCisgICAgICAgICAgICAvLyBJZ25vcmUgdGhlICJBbnkiIHNvdXJjZQorICAgICAgICAgICAgaWYgKHNvdXJjZS5lcXVhbHNJZ25vcmVDYXNlKEFOWSkpIGNvbnRpbnVlOworCisgICAgICAgICAgICBmb3IgKEVudW1lcmF0aW9uIHQ9VHJhbnNsaXRlcmF0b3IuZ2V0QXZhaWxhYmxlVGFyZ2V0cyhzb3VyY2UpOworICAgICAgICAgICAgICAgICB0Lmhhc01vcmVFbGVtZW50cygpOyApIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgdGFyZ2V0ID0gKFN0cmluZykgdC5uZXh0RWxlbWVudCgpOworCisgICAgICAgICAgICAgICAgLy8gT25seSBwcm9jZXNzIGVhY2ggdGFyZ2V0IG9uY2UKKyAgICAgICAgICAgICAgICBpZiAoc2Vlbi5jb250YWlucyh0YXJnZXQpKSBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBzZWVuLmFkZCh0YXJnZXQpOworICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gR2V0IHRoZSBzY3JpcHQgY29kZSBmb3IgdGhlIHRhcmdldC4gIElmIG5vdCBhIHNjcmlwdCwgaWdub3JlLgorICAgICAgICAgICAgICAgIGludCB0YXJnZXRTY3JpcHQgPSBzY3JpcHROYW1lVG9Db2RlKHRhcmdldCk7CisgICAgICAgICAgICAgICAgaWYgKHRhcmdldFNjcmlwdCA9PSBVU2NyaXB0LklOVkFMSURfQ09ERSkgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBmb3IgKEVudW1lcmF0aW9uIHY9VHJhbnNsaXRlcmF0b3IuZ2V0QXZhaWxhYmxlVmFyaWFudHMoc291cmNlLCB0YXJnZXQpOworICAgICAgICAgICAgICAgICAgICAgdi5oYXNNb3JlRWxlbWVudHMoKTsgKSB7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyB2YXJpYW50ID0gKFN0cmluZykgdi5uZXh0RWxlbWVudCgpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBTdHJpbmcgaWQ7CisgICAgICAgICAgICAgICAgICAgIGlkID0gVHJhbnNsaXRlcmF0b3JJRFBhcnNlci5TVFZ0b0lEKEFOWSwgdGFyZ2V0LCB2YXJpYW50KTsKKyAgICAgICAgICAgICAgICAgICAgQW55VHJhbnNsaXRlcmF0b3IgdHJhbnMgPSBuZXcgQW55VHJhbnNsaXRlcmF0b3IoaWQsIHRhcmdldCwgdmFyaWFudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0U2NyaXB0KTsKKyAgICAgICAgICAgICAgICAgICAgVHJhbnNsaXRlcmF0b3IucmVnaXN0ZXJJbnN0YW5jZSh0cmFucyk7CisgICAgICAgICAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yLnJlZ2lzdGVyU3BlY2lhbEludmVyc2UodGFyZ2V0LCBOVUxMX0lELCBmYWxzZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBzY3JpcHQgY29kZSBmb3IgYSBnaXZlbiBuYW1lLCBvcgorICAgICAqIFVTY3JpcHQuSU5WQUxJRF9DT0RFIGlmIG5vdCBmb3VuZC4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBpbnQgc2NyaXB0TmFtZVRvQ29kZShTdHJpbmcgbmFtZSkgeworICAgICAgICBpbnRbXSBjb2RlcyA9IFVTY3JpcHQuZ2V0Q29kZShuYW1lKTsKKyAgICAgICAgcmV0dXJuIGNvZGVzICE9IG51bGwgPyBjb2Rlc1swXSA6IFVTY3JpcHQuSU5WQUxJRF9DT0RFOworICAgIH0KKyAgICAKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIFNjcmlwdFJ1bkl0ZXJhdG9yCisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgc2VyaWVzIG9mIHJhbmdlcyBjb3JyZXNwb25kaW5nIHRvIHNjcmlwdHMuIFRoZXkgd2lsbCBiZQorICAgICAqIG9mIHRoZSBmb3JtOgorICAgICAqCisgICAgICogY2NjY1NTY1NTY2NjY1RUY1RjY2NjICAgLSBjID0gY29tbW9uLCBTID0gZmlyc3Qgc2NyaXB0LCBUID0gc2Vjb25kCisgICAgICogfCAgICAgICAgICAgIHwgICAgICAgICAgLSBmaXJzdCBydW4gKHN0YXJ0LCBsaW1pdCkKKyAgICAgKiAgICAgICAgICB8ICAgICAgICAgICB8ICAtIHNlY29uZCBydW4gKHN0YXJ0LCBsaW1pdCkKKyAgICAgKgorICAgICAqIFRoYXQgaXMsIHRoZSBydW5zIHdpbGwgb3ZlcmxhcC4gVGhlIHJlYXNvbiBmb3IgdGhpcyBpcyBzbyB0aGF0IGEKKyAgICAgKiB0cmFuc2xpdGVyYXRvciBjYW4gY29uc2lkZXIgY29tbW9uIGNoYXJhY3RlcnMgYm90aCBiZWZvcmUgYW5kIGFmdGVyCisgICAgICogdGhlIHNjcmlwdHMuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgU2NyaXB0UnVuSXRlcmF0b3IgeworCisgICAgICAgIHByaXZhdGUgUmVwbGFjZWFibGUgdGV4dDsKKyAgICAgICAgcHJpdmF0ZSBpbnQgdGV4dFN0YXJ0OworICAgICAgICBwcml2YXRlIGludCB0ZXh0TGltaXQ7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRoZSBjb2RlIG9mIHRoZSBjdXJyZW50IHJ1biwgdmFsaWQgYWZ0ZXIgbmV4dCgpIHJldHVybnMuICBNYXkKKyAgICAgICAgICogYmUgVVNjcmlwdC5JTlZBTElEX0NPREUgaWYgYW5kIG9ubHkgaWYgdGhlIGVudGlyZSB0ZXh0IGlzCisgICAgICAgICAqIENPTU1PTi9JTkhFUklURUQuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgaW50IHNjcmlwdENvZGU7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRoZSBzdGFydCBvZiB0aGUgcnVuLCBpbmNsdXNpdmUsIHZhbGlkIGFmdGVyIG5leHQoKSByZXR1cm5zLgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIGludCBzdGFydDsKKworICAgICAgICAvKioKKyAgICAgICAgICogVGhlIGVuZCBvZiB0aGUgcnVuLCBleGNsdXNpdmUsIHZhbGlkIGFmdGVyIG5leHQoKSByZXR1cm5zLgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIGludCBsaW1pdDsKKworICAgICAgICAvKioKKyAgICAgICAgICogQ29uc3RydWN0cyBhIHJ1biBpdGVyYXRvciBvdmVyIHRoZSBnaXZlbiB0ZXh0IGZyb20gc3RhcnQKKyAgICAgICAgICogKGluY2x1c2l2ZSkgdG8gbGltaXQgKGV4Y2x1c2l2ZSkuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgU2NyaXB0UnVuSXRlcmF0b3IoUmVwbGFjZWFibGUgdGV4dCwgaW50IHN0YXJ0LCBpbnQgbGltaXQpIHsKKyAgICAgICAgICAgIHRoaXMudGV4dCA9IHRleHQ7CisgICAgICAgICAgICB0aGlzLnRleHRTdGFydCA9IHN0YXJ0OworICAgICAgICAgICAgdGhpcy50ZXh0TGltaXQgPSBsaW1pdDsKKyAgICAgICAgICAgIHRoaXMubGltaXQgPSBzdGFydDsKKyAgICAgICAgfQorCisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFJldHVybnMgVFJVRSBpZiB0aGVyZSBhcmUgYW55IG1vcmUgcnVucy4gIFRSVUUgaXMgYWx3YXlzCisgICAgICAgICAqIHJldHVybmVkIGF0IGxlYXN0IG9uY2UuICBVcG9uIHJldHVybiwgdGhlIGNhbGxlciBzaG91bGQKKyAgICAgICAgICogZXhhbWluZSBzY3JpcHRDb2RlLCBzdGFydCwgYW5kIGxpbWl0LgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIGJvb2xlYW4gbmV4dCgpIHsKKyAgICAgICAgICAgIGludCBjaDsKKyAgICAgICAgICAgIGludCBzOworCisgICAgICAgICAgICBzY3JpcHRDb2RlID0gVVNjcmlwdC5JTlZBTElEX0NPREU7IC8vIGRvbid0IGtub3cgc2NyaXB0IHlldAorICAgICAgICAgICAgc3RhcnQgPSBsaW1pdDsKKworICAgICAgICAgICAgLy8gQXJlIHdlIGRvbmU/CisgICAgICAgICAgICBpZiAoc3RhcnQgPT0gdGV4dExpbWl0KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBNb3ZlIHN0YXJ0IGJhY2sgdG8gaW5jbHVkZSBhZGphY2VudCBDT01NT04gb3IgSU5IRVJJVEVECisgICAgICAgICAgICAvLyBjaGFyYWN0ZXJzCisgICAgICAgICAgICB3aGlsZSAoc3RhcnQgPiB0ZXh0U3RhcnQpIHsKKyAgICAgICAgICAgICAgICBjaCA9IHRleHQuY2hhcjMyQXQoc3RhcnQgLSAxKTsgLy8gbG9vayBiYWNrCisgICAgICAgICAgICAgICAgcyA9IFVTY3JpcHQuZ2V0U2NyaXB0KGNoKTsKKyAgICAgICAgICAgICAgICBpZiAocyA9PSBVU2NyaXB0LkNPTU1PTiB8fCBzID09IFVTY3JpcHQuSU5IRVJJVEVEKSB7CisgICAgICAgICAgICAgICAgICAgIC0tc3RhcnQ7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBNb3ZlIGxpbWl0IGFoZWFkIHRvIGluY2x1ZGUgQ09NTU9OLCBJTkhFUklURUQsIGFuZCBjaGFyYWN0ZXJzCisgICAgICAgICAgICAvLyBvZiB0aGUgY3VycmVudCBzY3JpcHQuCisgICAgICAgICAgICB3aGlsZSAobGltaXQgPCB0ZXh0TGltaXQpIHsKKyAgICAgICAgICAgICAgICBjaCA9IHRleHQuY2hhcjMyQXQobGltaXQpOyAvLyBsb29rIGFoZWFkCisgICAgICAgICAgICAgICAgcyA9IFVTY3JpcHQuZ2V0U2NyaXB0KGNoKTsKKyAgICAgICAgICAgICAgICBpZiAocyAhPSBVU2NyaXB0LkNPTU1PTiAmJiBzICE9IFVTY3JpcHQuSU5IRVJJVEVEKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChzY3JpcHRDb2RlID09IFVTY3JpcHQuSU5WQUxJRF9DT0RFKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRDb2RlID0gczsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzICE9IHNjcmlwdENvZGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICsrbGltaXQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFJldHVybiBUUlVFIGV2ZW4gaWYgdGhlIGVudGlyZSB0ZXh0IGlzIENPTU1PTiAvIElOSEVSSVRFRCwgaW4KKyAgICAgICAgICAgIC8vIHdoaWNoIGNhc2Ugc2NyaXB0Q29kZSB3aWxsIGJlIFVTY3JpcHQuSU5WQUxJRF9DT0RFLgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogQWRqdXN0cyBpbnRlcm5hbCBpbmRpY2VzIGZvciBhIGNoYW5nZSBpbiB0aGUgbGltaXQgaW5kZXggb2YgdGhlCisgICAgICAgICAqIGdpdmVuIGRlbHRhLiAgQSBwb3NpdGl2ZSBkZWx0YSBtZWFucyB0aGUgbGltaXQgaGFzIGluY3JlYXNlZC4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyB2b2lkIGFkanVzdExpbWl0KGludCBkZWx0YSkgeworICAgICAgICAgICAgbGltaXQgKz0gZGVsdGE7CisgICAgICAgICAgICB0ZXh0TGltaXQgKz0gZGVsdGE7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8vZW9mCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvdGV4dC9BcmFiaWNTaGFwaW5nLmphdmEgYi9zcmMvY29tL2libS9pY3UvdGV4dC9BcmFiaWNTaGFwaW5nLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMWFkMWU3MgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L0FyYWJpY1NoYXBpbmcuamF2YQpAQCAtMCwwICsxLDEyMTkgQEAKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgQ29weXJpZ2h0IChDKSAyMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqICAgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LnRleHQ7CisKK2ltcG9ydCBjb20uaWJtLmljdS5sYW5nLio7CisKKy8qKgorICogU2hhcGUgQXJhYmljIHRleHQgb24gYSBjaGFyYWN0ZXIgYmFzaXMuCisgKgorICogPHA+QXJhYmljU2hhcGluZyBwZXJmb3JtcyBiYXNpYyBvcGVyYXRpb25zIGZvciAic2hhcGluZyIgQXJhYmljIHRleHQuIEl0IGlzIG1vc3QKKyAqIHVzZWZ1bCBmb3IgdXNlIHdpdGggbGVnYWN5IGRhdGEgZm9ybWF0cyBhbmQgbGVnYWN5IGRpc3BsYXkgdGVjaG5vbG9neQorICogKHNpbXBsZSB0ZXJtaW5hbHMpLiBBbGwgb3BlcmF0aW9ucyBhcmUgcGVyZm9ybWVkIG9uIFVuaWNvZGUgY2hhcmFjdGVycy48L3A+CisgKgorICogPHA+VGV4dC1iYXNlZCBzaGFwaW5nIG1lYW5zIHRoYXQgc29tZSBjaGFyYWN0ZXIgY29kZSBwb2ludHMgaW4gdGhlIHRleHQgYXJlCisgKiByZXBsYWNlZCBieSBvdGhlcnMgZGVwZW5kaW5nIG9uIHRoZSBjb250ZXh0LiBJdCB0cmFuc2Zvcm1zIG9uZSBraW5kIG9mIHRleHQKKyAqIGludG8gYW5vdGhlci4gSW4gY29tcGFyaXNvbiwgbW9kZXJuIGRpc3BsYXlzIGZvciBBcmFiaWMgdGV4dCBzZWxlY3QKKyAqIGFwcHJvcHJpYXRlLCBjb250ZXh0LWRlcGVuZGVudCBmb250IGdseXBocyBmb3IgZWFjaCB0ZXh0IGVsZW1lbnQsIHdoaWNoIG1lYW5zCisgKiB0aGF0IHRoZXkgdHJhbnNmb3JtIHRleHQgaW50byBhIGdseXBoIHZlY3Rvci48L3A+CisgKgorICogPHA+VGV4dCB0cmFuc2Zvcm1hdGlvbnMgYXJlIG5lY2Vzc2FyeSB3aGVuIG1vZGVybiBkaXNwbGF5IHRlY2hub2xvZ3kgaXMgbm90CisgKiBhdmFpbGFibGUgb3Igd2hlbiB0ZXh0IG5lZWRzIHRvIGJlIHRyYW5zZm9ybWVkIHRvIG9yIGZyb20gbGVnYWN5IGZvcm1hdHMgdGhhdAorICogdXNlICJzaGFwZWQiIGNoYXJhY3RlcnMuIFNpbmNlIHRoZSBBcmFiaWMgc2NyaXB0IGlzIGN1cnNpdmUsIGNvbm5lY3RpbmcKKyAqIGFkamFjZW50IGxldHRlcnMgdG8gZWFjaCBvdGhlciwgY29tcHV0ZXJzIHNlbGVjdCBpbWFnZXMgZm9yIGVhY2ggbGV0dGVyIGJhc2VkCisgKiBvbiB0aGUgc3Vycm91bmRpbmcgbGV0dGVycy4gVGhpcyB1c3VhbGx5IHJlc3VsdHMgaW4gZm91ciBpbWFnZXMgcGVyIEFyYWJpYworICogbGV0dGVyOiBpbml0aWFsLCBtaWRkbGUsIGZpbmFsLCBhbmQgaXNvbGF0ZWQgZm9ybXMuIEluIFVuaWNvZGUsIG9uIHRoZSBvdGhlcgorICogaGFuZCwgbGV0dGVycyBhcmUgbm9ybWFsbHkgc3RvcmVkIGFic3RyYWN0LCBhbmQgYSBkaXNwbGF5IHN5c3RlbSBpcyBleHBlY3RlZAorICogdG8gc2VsZWN0IHRoZSBuZWNlc3NhcnkgZ2x5cGhzLiAoVGhpcyBtYWtlcyBzZWFyY2hpbmcgYW5kIG90aGVyIHRleHQKKyAqIHByb2Nlc3NpbmcgZWFzaWVyIGJlY2F1c2UgdGhlIHNhbWUgbGV0dGVyIGhhcyBvbmx5IG9uZSBjb2RlLikgSXQgaXMgcG9zc2libGUKKyAqIHRvIG1pbWljIHRoaXMgd2l0aCB0ZXh0IHRyYW5zZm9ybWF0aW9ucyBiZWNhdXNlIHRoZXJlIGFyZSBjaGFyYWN0ZXJzIGluCisgKiBVbmljb2RlIHRoYXQgYXJlIHJlbmRlcmVkIGFzIGxldHRlcnMgd2l0aCBhIHNwZWNpZmljIHNoYXBlCisgKiAob3IgY3Vyc2l2ZSBjb25uZWN0aXZpdHkpLiBUaGV5IHdlcmUgaW5jbHVkZWQgZm9yIGludGVyb3BlcmFiaWxpdHkgd2l0aAorICogbGVnYWN5IHN5c3RlbXMgYW5kIGNvZGVwYWdlcywgYW5kIGZvciB1bnNvcGhpc3RpY2F0ZWQgZGlzcGxheSBzeXN0ZW1zLjwvcD4KKyAqCisgKiA8cD5BIHNlY29uZCBraW5kIG9mIHRleHQgdHJhbnNmb3JtYXRpb25zIGlzIHN1cHBvcnRlZCBmb3IgQXJhYmljIGRpZ2l0czoKKyAqIEZvciBjb21wYXRpYmlsaXR5IHdpdGggbGVnYWN5IGNvZGVwYWdlcyB0aGF0IG9ubHkgaW5jbHVkZSBFdXJvcGVhbiBkaWdpdHMsCisgKiBpdCBpcyBwb3NzaWJsZSB0byByZXBsYWNlIG9uZSBzZXQgb2YgZGlnaXRzIGJ5IGFub3RoZXIsIGNoYW5naW5nIHRoZQorICogY2hhcmFjdGVyIGNvZGUgcG9pbnRzLiBUaGVzZSBvcGVyYXRpb25zIGNhbiBiZSBwZXJmb3JtZWQgZm9yIGVpdGhlcgorICogQXJhYmljLUluZGljIERpZ2l0cyAoVSswNjYwLi4uVSswNjY5KSBvciBFYXN0ZXJuIChFeHRlbmRlZCkgQXJhYmljLUluZGljCisgKiBkaWdpdHMgKFUrMDZmMC4uLlUrMDZmOSkuPC9wPgorICoKKyAqIDxwPlNvbWUgcmVwbGFjZW1lbnRzIG1heSByZXN1bHQgaW4gbW9yZSBvciBmZXdlciBjaGFyYWN0ZXJzIChjb2RlIHBvaW50cykuCisgKiBCeSBkZWZhdWx0LCB0aGlzIG1lYW5zIHRoYXQgdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciBtYXkgcmVjZWl2ZSB0ZXh0IHdpdGggYQorICogbGVuZ3RoIGRpZmZlcmVudCBmcm9tIHRoZSBzb3VyY2UgbGVuZ3RoLiBTb21lIGxlZ2FjeSBzeXN0ZW1zIHJlbHkgb24gdGhlCisgKiBsZW5ndGggb2YgdGhlIHRleHQgdG8gYmUgY29uc3RhbnQuIFRoZXkgZXhwZWN0IGV4dHJhIHNwYWNlcyB0byBiZSBhZGRlZAorICogb3IgY29uc3VtZWQgZWl0aGVyIG5leHQgdG8gdGhlIGFmZmVjdGVkIGNoYXJhY3RlciBvciBhdCB0aGUgZW5kIG9mIHRoZQorICogdGV4dC48L3A+CisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworcHVibGljIGZpbmFsIGNsYXNzIEFyYWJpY1NoYXBpbmcgeworICAgIHByaXZhdGUgZmluYWwgaW50IG9wdGlvbnM7CisgICAgcHJpdmF0ZSBib29sZWFuIGlzTG9naWNhbDsgLy8gY29udmVuaWVuY2UKKworICAgIC8qKgorICAgICAqIENvbnZlcnQgYSByYW5nZSBvZiB0ZXh0IGluIHRoZSBzb3VyY2UgYXJyYXksIHB1dHRpbmcgdGhlIHJlc3VsdCAKKyAgICAgKiBpbnRvIGEgcmFuZ2Ugb2YgdGV4dCBpbiB0aGUgZGVzdGluYXRpb24gYXJyYXksIGFuZCByZXR1cm4gdGhlIG51bWJlcgorICAgICAqIG9mIGNoYXJhY3RlcnMgd3JpdHRlbi4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzb3VyY2UgQW4gYXJyYXkgY29udGFpbmluZyB0aGUgaW5wdXQgdGV4dAorICAgICAqIEBwYXJhbSBzb3VyY2VTdGFydCBUaGUgc3RhcnQgb2YgdGhlIHJhbmdlIG9mIHRleHQgdG8gY29udmVydAorICAgICAqIEBwYXJhbSBzb3VyY2VMZW5ndGggVGhlIGxlbmd0aCBvZiB0aGUgcmFuZ2Ugb2YgdGV4dCB0byBjb252ZXJ0CisgICAgICogQHBhcmFtIGRlc3QgVGhlIGRlc3RpbmF0aW9uIGFycmF5IHRoYXQgd2lsbCByZWNlaXZlIHRoZSByZXN1bHQuCisgICAgICogICBJdCBtYXkgYmUgPGNvZGU+TlVMTDwvY29kZT4gb25seSBpZiAgPGNvZGU+ZGVzdFNpemU8L2NvZGU+IGlzIDAuICAKKyAgICAgKiBAcGFyYW0gZGVzdFN0YXJ0IFRoZSBzdGFydCBvZiB0aGUgcmFuZ2Ugb2YgdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciB0byB1c2UuCisgICAgICogQHBhcmFtIGRlc3RTaXplIFRoZSBzaXplIChjYXBhY2l0eSkgb2YgdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlci4KKyAgICAgKiAgIElmIDxjb2RlPmRlc3RTaXplPC9jb2RlPiBpcyAwLCB0aGVuIG5vIG91dHB1dCBpcyBwcm9kdWNlZCwKKyAgICAgKiAgIGJ1dCB0aGUgbmVjZXNzYXJ5IGJ1ZmZlciBzaXplIGlzIHJldHVybmVkICgicHJlZmxpZ2h0aW5nIikuICBUaGlzCisgICAgICogICBkb2VzIG5vdCB2YWxpZGF0ZSB0aGUgdGV4dCBhZ2FpbnN0IHRoZSBvcHRpb25zLCBmb3IgZXhhbXBsZSwgCisgICAgICogICBpZiBsZXR0ZXJzIGFyZSBiZWluZyB1bnNoYXBlZCwgYW5kIHNwYWNlcyBhcmUgYmVpbmcgY29uc3VtZWQKKyAgICAgKiAgIGZvbGxvd2luZyBsYW1hbGVmLCB0aGlzIHdpbGwgbm90IGRldGVjdCBhIGxhbWFsZWYgd2l0aG91dCBhIAorICAgICAqICAgY29ycmVzcG9uZGluZyBzcGFjZS4gIEFuIGVycm9yIHdpbGwgYmUgdGhyb3duIHdoZW4gdGhlIGFjdHVhbAorICAgICAqICAgY29udmVyc2lvbiBpcyBhdHRlbXB0ZWQuCisgICAgICogQHJldHVybiBUaGUgbnVtYmVyIG9mIGNoYXJzIHdyaXR0ZW4gdG8gdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlci4KKyAgICAgKiAgIElmIGFuIGVycm9yIG9jY3VycywgdGhlbiBubyBvdXRwdXQgd2FzIHdyaXR0ZW4sIG9yIGl0IG1heSBiZQorICAgICAqICAgaW5jb21wbGV0ZS4KKyAgICAgKiBAdGhyb3dzIEFyYWJpY1NoYXBpbmdFeGNlcHRpb24gaWYgdGhlIHRleHQgY2Fubm90IGJlIGNvbnZlcnRlZCBhY2NvcmRpbmcgdG8gdGhlIG9wdGlvbnMuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGludCBzaGFwZShjaGFyW10gc291cmNlLCBpbnQgc291cmNlU3RhcnQsIGludCBzb3VyY2VMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICBjaGFyW10gZGVzdCwgaW50IGRlc3RTdGFydCwgaW50IGRlc3RTaXplKSB0aHJvd3MgQXJhYmljU2hhcGluZ0V4Y2VwdGlvbiB7CisgICAgICAgIGlmIChzb3VyY2UgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigic291cmNlIGNhbiBub3QgYmUgbnVsbCIpOworICAgICAgICB9CisgICAgICAgIGlmIChzb3VyY2VTdGFydCA8IDAgfHwgc291cmNlTGVuZ3RoIDwgMCB8fCBzb3VyY2VTdGFydCArIHNvdXJjZUxlbmd0aCA+IHNvdXJjZS5sZW5ndGgpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImJhZCBzb3VyY2Ugc3RhcnQgKCIgKyBzb3VyY2VTdGFydCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIpIG9yIGxlbmd0aCAoIiArIHNvdXJjZUxlbmd0aCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIpIGZvciBidWZmZXIgb2YgbGVuZ3RoICIgKyBzb3VyY2UubGVuZ3RoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZGVzdCA9PSBudWxsICYmIGRlc3RTaXplICE9IDApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIm51bGwgZGVzdCByZXF1aXJlcyBkZXN0U2l6ZSA9PSAwIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKChkZXN0U2l6ZSAhPSAwKSAmJgorICAgICAgICAgICAgKGRlc3RTdGFydCA8IDAgfHwgZGVzdFNpemUgPCAwIHx8IGRlc3RTdGFydCArIGRlc3RTaXplID4gZGVzdC5sZW5ndGgpKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJiYWQgZGVzdCBzdGFydCAoIiArIGRlc3RTdGFydCArIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKSBvciBzaXplICgiICsgZGVzdFNpemUgKyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIikgZm9yIGJ1ZmZlciBvZiBsZW5ndGggIiArIGRlc3QubGVuZ3RoKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBpbnRlcm5hbFNoYXBlKHNvdXJjZSwgc291cmNlU3RhcnQsIHNvdXJjZUxlbmd0aCwgZGVzdCwgZGVzdFN0YXJ0LCBkZXN0U2l6ZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29udmVydCBhIHJhbmdlIG9mIHRleHQgaW4gcGxhY2UuICBUaGlzIG1heSBvbmx5IGJlIHVzZWQgaWYgdGhlIExlbmd0aCBvcHRpb24KKyAgICAgKiBkb2VzIG5vdCBncm93IG9yIHNocmluayB0aGUgdGV4dC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzb3VyY2UgQW4gYXJyYXkgY29udGFpbmluZyB0aGUgaW5wdXQgdGV4dAorICAgICAqIEBwYXJhbSBzdGFydCBUaGUgc3RhcnQgb2YgdGhlIHJhbmdlIG9mIHRleHQgdG8gY29udmVydAorICAgICAqIEBwYXJhbSBsZW5ndGggVGhlIGxlbmd0aCBvZiB0aGUgcmFuZ2Ugb2YgdGV4dCB0byBjb252ZXJ0CisgICAgICogQHRocm93cyBBcmFiaWNTaGFwaW5nRXhjZXB0aW9uIGlmIHRoZSB0ZXh0IGNhbm5vdCBiZSBjb252ZXJ0ZWQgYWNjb3JkaW5nIHRvIHRoZSBvcHRpb25zLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNoYXBlKGNoYXJbXSBzb3VyY2UsIGludCBzdGFydCwgaW50IGxlbmd0aCkgdGhyb3dzIEFyYWJpY1NoYXBpbmdFeGNlcHRpb24geworICAgICAgICBpZiAoKG9wdGlvbnMgJiBMRU5HVEhfTUFTSykgPT0gTEVOR1RIX0dST1dfU0hSSU5LKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgQXJhYmljU2hhcGluZ0V4Y2VwdGlvbigiQ2Fubm90IHNoYXBlIGluIHBsYWNlIHdpdGggbGVuZ3RoIG9wdGlvbiBncm93L3Nocmluay4iKTsKKyAgICAgICAgfQorICAgICAgICBzaGFwZShzb3VyY2UsIHN0YXJ0LCBsZW5ndGgsIHNvdXJjZSwgc3RhcnQsIGxlbmd0aCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29udmVydCBhIHN0cmluZywgcmV0dXJuaW5nIHRoZSBuZXcgc3RyaW5nLgorICAgICAqCisgICAgICogQHBhcmFtIHNvdXJjZSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuCisgICAgICogQHJldHVybiBUaGUgY29udmVydGVkIHN0cmluZy4KKyAgICAgKiBAdGhyb3dzIEFyYWJpY1NoYXBpbmdFeGNlcHRpb24gaWYgdGhlIHN0cmluZyBjYW5ub3QgYmUgY29udmVydGVkIGFjY29yZGluZyB0byB0aGUgb3B0aW9ucy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIHNoYXBlKFN0cmluZyB0ZXh0KSB0aHJvd3MgQXJhYmljU2hhcGluZ0V4Y2VwdGlvbiB7CisgICAgICAgIGNoYXJbXSBzcmMgPSB0ZXh0LnRvQ2hhckFycmF5KCk7CisgICAgICAgIGNoYXJbXSBkZXN0ID0gc3JjOworICAgICAgICBpZiAoKChvcHRpb25zICYgTEVOR1RIX01BU0spID09IExFTkdUSF9HUk9XX1NIUklOSykgJiYKKyAgICAgICAgICAgICgob3B0aW9ucyAmIExFVFRFUlNfTUFTSykgPT0gTEVUVEVSU19VTlNIQVBFKSkgeworCisgICAgICAgICAgICBkZXN0ID0gbmV3IGNoYXJbc3JjLmxlbmd0aCAqIDJdOyAvLyBtYXgKKyAgICAgICAgfQorICAgICAgICBpbnQgbGVuID0gc2hhcGUoc3JjLCAwLCBzcmMubGVuZ3RoLCBkZXN0LCAwLCBkZXN0Lmxlbmd0aCk7CisKKyAgICAgICAgcmV0dXJuIG5ldyBTdHJpbmcoZGVzdCwgMCwgbGVuKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgQXJhYmljU2hhcGluZyB1c2luZyB0aGUgb3B0aW9ucyBmbGFncy4KKyAgICAgKiBUaGUgZmxhZ3MgYXJlIGFzIGZvbGxvd3M6PGJyPgorICAgICAqICdMRU5HVEgnIGZsYWdzIGNvbnRyb2wgd2hldGhlciB0aGUgdGV4dCBjYW4gY2hhbmdlIHNpemUsIGFuZCBpZiBub3QsCisgICAgICogaG93IHRvIG1haW50YWluIHRoZSBzaXplIG9mIHRoZSB0ZXh0IHdoZW4gTGFtQWxlZiBsaWdhdHVyZXMgYXJlIAorICAgICAqIGZvcm1lZCBvciBicm9rZW4uPGJyPgorICAgICAqICdURVhUX0RJUkVDVElPTicgZmxhZ3MgY29udHJvbCB3aGV0aGVyIHRoZSB0ZXh0IGlzIHJlYWQgYW5kIHdyaXR0ZW4KKyAgICAgKiBpbiB2aXN1YWwgb3JkZXIgb3IgaW4gbG9naWNhbCBvcmRlci48YnI+CisgICAgICogJ0xFVFRFUlNfU0hBUEUnIGZsYWdzIGNvbnRyb2wgd2hldGhlciBjb252ZXJzaW9uIGlzIHRvIG9yIGZyb20KKyAgICAgKiBwcmVzZW50YXRpb24gZm9ybXMuPGJyPgorICAgICAqICdESUdJVFMnIGZsYWdzIGNvbnRyb2wgd2hldGhlciBkaWdpdHMgYXJlIHNoYXBlZCwgYW5kIHdoZXRoZXIgZnJvbQorICAgICAqIEV1cm9wZWFuIHRvIEFyYWJpYy1JbmRpYyBvciB2aWNlLXZlcnNhLjxicj4KKyAgICAgKiAnRElHSVRfVFlQRScgZmxhZ3MgY29udHJvbCB3aGV0aGVyIHN0YW5kYXJkIG9yIGV4dGVuZGVkIEFyYWJpYy1JbmRpYworICAgICAqIGRpZ2l0cyBhcmUgdXNlZCB3aGVuIHBlcmZvcm1pbmcgZGlnaXQgY29udmVyc2lvbi4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgQXJhYmljU2hhcGluZyhpbnQgb3B0aW9ucykgeworICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zOworICAgICAgICBpZiAoKG9wdGlvbnMgJiBESUdJVFNfTUFTSykgPiAweDgwKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJiYWQgRElHSVRTIG9wdGlvbnMiKTsKKyAgICAgICAgfQorICAgICAgICBpc0xvZ2ljYWwgPSAob3B0aW9ucyAmIFRFWFRfRElSRUNUSU9OX01BU0spID09IFRFWFRfRElSRUNUSU9OX0xPR0lDQUw7CisgICAgfQorCisgICAgLyoqCisgICAgICogTWVtb3J5IG9wdGlvbjogYWxsb3cgdGhlIHJlc3VsdCB0byBoYXZlIGEgZGlmZmVyZW50IGxlbmd0aCB0aGFuIHRoZSBzb3VyY2UuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTEVOR1RIX0dST1dfU0hSSU5LID0gMDsKKworICAgIC8qKgorICAgICAqIE1lbW9yeSBvcHRpb246IHRoZSByZXN1bHQgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aCBhcyB0aGUgc291cmNlLgorICAgICAqIElmIG1vcmUgcm9vbSBpcyBuZWNlc3NhcnksIHRoZW4gdHJ5IHRvIGNvbnN1bWUgc3BhY2VzIG5leHQgdG8gbW9kaWZpZWQgY2hhcmFjdGVycy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBMRU5HVEhfRklYRURfU1BBQ0VTX05FQVIgPSAxOworCisgICAgLyoqCisgICAgICogTWVtb3J5IG9wdGlvbjogdGhlIHJlc3VsdCBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBzb3VyY2UuCisgICAgICogSWYgbW9yZSByb29tIGlzIG5lY2Vzc2FyeSwgdGhlbiB0cnkgdG8gY29uc3VtZSBzcGFjZXMgYXQgdGhlIGVuZCBvZiB0aGUgdGV4dC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBMRU5HVEhfRklYRURfU1BBQ0VTX0FUX0VORCA9IDI7CisKKyAgICAvKioKKyAgICAgKiBNZW1vcnkgb3B0aW9uOiB0aGUgcmVzdWx0IG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIHNvdXJjZS4KKyAgICAgKiBJZiBtb3JlIHJvb20gaXMgbmVjZXNzYXJ5LCB0aGVuIHRyeSB0byBjb25zdW1lIHNwYWNlcyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSB0ZXh0LgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IExFTkdUSF9GSVhFRF9TUEFDRVNfQVRfQkVHSU5OSU5HID0gMzsKKworICAgIC8qKiAKKyAgICAgKiBCaXQgbWFzayBmb3IgbWVtb3J5IG9wdGlvbnMuIAorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IExFTkdUSF9NQVNLID0gMzsKKworCisgICAgLyoqIAorICAgICAqIERpcmVjdGlvbiBpbmRpY2F0b3I6IHRoZSBzb3VyY2UgaXMgaW4gbG9naWNhbCAoa2V5Ym9hcmQpIG9yZGVyLiAKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBURVhUX0RJUkVDVElPTl9MT0dJQ0FMID0gMDsKKworICAgIC8qKiAKKyAgICAgKiBEaXJlY3Rpb24gaW5kaWNhdG9yOiB0aGUgc291cmNlIGlzIGluIHZpc3VhbCAoZGlzcGxheSkgb3JkZXIsIHRoYXQgaXMsCisgICAgICogdGhlIGxlZnRtb3N0IGRpc3BsYXllZCBjaGFyYWN0ZXIgaXMgc3RvcmVkIGZpcnN0LgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFRFWFRfRElSRUNUSU9OX1ZJU1VBTF9MVFIgPSA0OworCisgICAgLyoqIAorICAgICAqIEJpdCBtYXNrIGZvciBkaXJlY3Rpb24gaW5kaWNhdG9ycy4gCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVEVYVF9ESVJFQ1RJT05fTUFTSyA9IDQ7CisKKworICAgIC8qKgorICAgICAqIExldHRlciBzaGFwaW5nIG9wdGlvbjogZG8gbm90IHBlcmZvcm0gbGV0dGVyIHNoYXBpbmcuIAorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IExFVFRFUlNfTk9PUCA9IDA7CisKKyAgICAvKiogCisgICAgICogTGV0dGVyIHNoYXBpbmcgb3B0aW9uOiByZXBsYWNlIG5vcm1hdGl2ZSBsZXR0ZXIgY2hhcmFjdGVycyBpbiB0aGUgVSswNjAwIChBcmFiaWMpIGJsb2NrLAorICAgICAqIGJ5IHNoYXBlZCBvbmVzIGluIHRoZSBVK0ZFNzAgKFByZXNlbnRhdGlvbiBGb3JtcyBCKSBibG9jay4gUGVyZm9ybXMgTGFtLUFsZWYgbGlnYXR1cmUKKyAgICAgKiBzdWJzdGl0dXRpb24uCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTEVUVEVSU19TSEFQRSA9IDg7CisKKyAgICAvKiogCisgICAgICogTGV0dGVyIHNoYXBpbmcgb3B0aW9uOiByZXBsYWNlIHNoYXBlZCBsZXR0ZXIgY2hhcmFjdGVycyBpbiB0aGUgVStGRTcwIChQcmVzZW50YXRpb24gRm9ybXMgQikgYmxvY2sKKyAgICAgKiBieSBub3JtYXRpdmUgb25lcyBpbiB0aGUgVSswNjAwIChBcmFiaWMpIGJsb2NrLiAgQ29udmVydHMgTGFtLUFsZWYgbGlnYXR1cmVzIHRvIHBhaXJzIG9mIExhbSBhbmQKKyAgICAgKiBBbGVmIGNoYXJhY3RlcnMsIGNvbnN1bWluZyBzcGFjZXMgaWYgcmVxdWlyZWQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTEVUVEVSU19VTlNIQVBFID0gMHgxMDsKKworICAgIC8qKgorICAgICAqIExldHRlciBzaGFwaW5nIG9wdGlvbjogcmVwbGFjZSBub3JtYXRpdmUgbGV0dGVyIGNoYXJhY3RlcnMgaW4gdGhlIFUrMDYwMCAoQXJhYmljKSBibG9jaywKKyAgICAgKiBleGNlcHQgZm9yIHRoZSBUQVNIS0VFTCBjaGFyYWN0ZXJzIGF0IFUrMDY0Qi4uLlUrMDY1MiwgYnkgc2hhcGVkIG9uZXMgaW4gdGhlIFUrRmU3MAorICAgICAqIChQcmVzZW50YXRpb24gRm9ybXMgQikgYmxvY2suICBUaGUgVEFTSEtFRUwgY2hhcmFjdGVycyB3aWxsIGFsd2F5cyBiZSBjb252ZXJ0ZWQgdG8KKyAgICAgKiB0aGUgaXNvbGF0ZWQgZm9ybXMgcmF0aGVyIHRoYW4gdG8gdGhlaXIgY29ycmVjdCBzaGFwZS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBMRVRURVJTX1NIQVBFX1RBU0hLRUVMX0lTT0xBVEVEID0gMHgxODsKKworICAgIC8qKiAKKyAgICAgKiBCaXQgbWFzayBmb3IgbGV0dGVyIHNoYXBpbmcgb3B0aW9ucy4gCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTEVUVEVSU19NQVNLID0gMHgxODsKKworCisgICAgLyoqIAorICAgICAqIERpZ2l0IHNoYXBpbmcgb3B0aW9uOiBkbyBub3QgcGVyZm9ybSBkaWdpdCBzaGFwaW5nLiAKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBESUdJVFNfTk9PUCA9IDA7CisKKyAgICAvKioKKyAgICAgKiBEaWdpdCBzaGFwaW5nIG9wdGlvbjogUmVwbGFjZSBFdXJvcGVhbiBkaWdpdHMgKFUrMDAzMC4uLlUrMDAzOSkgYnkgQXJhYmljLUluZGljIGRpZ2l0cy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBESUdJVFNfRU4yQU4gPSAweDIwOworCisgICAgLyoqCisgICAgICogRGlnaXQgc2hhcGluZyBvcHRpb246IFJlcGxhY2UgQXJhYmljLUluZGljIGRpZ2l0cyBieSBFdXJvcGVhbiBkaWdpdHMgKFUrMDAzMC4uLlUrMDAzOSkuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRElHSVRTX0FOMkVOID0gMHg0MDsKKworICAgIC8qKgorICAgICAqIERpZ2l0IHNoYXBpbmcgb3B0aW9uOgorICAgICAqIFJlcGxhY2UgRXVyb3BlYW4gZGlnaXRzIChVKzAwMzAuLi5VKzAwMzkpIGJ5IEFyYWJpYy1JbmRpYyBkaWdpdHMKKyAgICAgKiBpZiB0aGUgbW9zdCByZWNlbnQgc3Ryb25nbHkgZGlyZWN0aW9uYWwgY2hhcmFjdGVyCisgICAgICogaXMgYW4gQXJhYmljIGxldHRlciAoaXRzIEJpZGkgZGlyZWN0aW9uIHZhbHVlIGlzIFJJR0hUX1RPX0xFRlRfQVJBQklDKS4gCisgICAgICogVGhlIGluaXRpYWwgc3RhdGUgYXQgdGhlIHN0YXJ0IG9mIHRoZSB0ZXh0IGlzIGFzc3VtZWQgdG8gYmUgbm90IGFuIEFyYWJpYywKKyAgICAgKiBsZXR0ZXIsIHNvIEV1cm9wZWFuIGRpZ2l0cyBhdCB0aGUgc3RhcnQgb2YgdGhlIHRleHQgd2lsbCBub3QgY2hhbmdlLgorICAgICAqIENvbXBhcmUgdG8gRElHSVRTX0FMRU4yQU5fSU5JVF9BTC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBESUdJVFNfRU4yQU5fSU5JVF9MUiA9IDB4NjA7CisKKyAgICAvKioKKyAgICAgKiBEaWdpdCBzaGFwaW5nIG9wdGlvbjoKKyAgICAgKiBSZXBsYWNlIEV1cm9wZWFuIGRpZ2l0cyAoVSswMDMwLi4uVSswMDM5KSBieSBBcmFiaWMtSW5kaWMgZGlnaXRzCisgICAgICogaWYgdGhlIG1vc3QgcmVjZW50IHN0cm9uZ2x5IGRpcmVjdGlvbmFsIGNoYXJhY3RlcgorICAgICAqIGlzIGFuIEFyYWJpYyBsZXR0ZXIgKGl0cyBCaWRpIGRpcmVjdGlvbiB2YWx1ZSBpcyBSSUdIVF9UT19MRUZUX0FSQUJJQykuIAorICAgICAqIFRoZSBpbml0aWFsIHN0YXRlIGF0IHRoZSBzdGFydCBvZiB0aGUgdGV4dCBpcyBhc3N1bWVkIHRvIGJlIGFuIEFyYWJpYywKKyAgICAgKiBsZXR0ZXIsIHNvIEV1cm9wZWFuIGRpZ2l0cyBhdCB0aGUgc3RhcnQgb2YgdGhlIHRleHQgd2lsbCBjaGFuZ2UuCisgICAgICogQ29tcGFyZSB0byBESUdJVFNfQUxFTjJBTl9JTlRfTFIuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRElHSVRTX0VOMkFOX0lOSVRfQUwgPSAweDgwOworCisgICAgLyoqIE5vdCBhIHZhbGlkIG9wdGlvbiB2YWx1ZS4gKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRElHSVRTX1JFU0VSVkVEID0gMHhhMDsKKworICAgIC8qKiAKKyAgICAgKiBCaXQgbWFzayBmb3IgZGlnaXQgc2hhcGluZyBvcHRpb25zLiAKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBESUdJVFNfTUFTSyA9IDB4ZTA7CisKKyAgICAvKiogCisgICAgICogRGlnaXQgdHlwZSBvcHRpb246IFVzZSBBcmFiaWMtSW5kaWMgZGlnaXRzIChVKzA2NjAuLi5VKzA2NjkpLiAKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBESUdJVF9UWVBFX0FOID0gMDsKKworICAgIC8qKiAKKyAgICAgKiBEaWdpdCB0eXBlIG9wdGlvbjogVXNlIEVhc3Rlcm4gKEV4dGVuZGVkKSBBcmFiaWMtSW5kaWMgZGlnaXRzIChVKzA2ZjAuLi5VKzA2ZjkpLiAKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBESUdJVF9UWVBFX0FOX0VYVEVOREVEID0gMHgxMDA7CisKKyAgICAvKiogCisgICAgICogQml0IG1hc2sgZm9yIGRpZ2l0IHR5cGUgb3B0aW9ucy4gCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRElHSVRfVFlQRV9NQVNLID0gMHgwMTAwOyAvLyAweDNmMDA/CisKKyAgICAvKioKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IHJocykgeworICAgICAgICByZXR1cm4gcmhzICE9IG51bGwgJiYgCisgICAgICAgICAgICByaHMuZ2V0Q2xhc3MoKSA9PSBBcmFiaWNTaGFwaW5nLmNsYXNzICYmIAorICAgICAgICAgICAgb3B0aW9ucyA9PSAoKEFyYWJpY1NoYXBpbmcpcmhzKS5vcHRpb25zOworICAgIH0KKworICAgIC8qKgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgICAvLy9DTE9WRVI6T0ZGCisgICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKKyAgICAgICAgcmV0dXJuIG9wdGlvbnM7CisgICAgfQorCisgICAgLyoqCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZiA9IG5ldyBTdHJpbmdCdWZmZXIoc3VwZXIudG9TdHJpbmcoKSk7CisgICAgICAgIGJ1Zi5hcHBlbmQoJ1snKTsKKyAgICAgICAgc3dpdGNoIChvcHRpb25zICYgTEVOR1RIX01BU0spIHsKKyAgICAgICAgY2FzZSBMRU5HVEhfR1JPV19TSFJJTks6IGJ1Zi5hcHBlbmQoImdyb3cvc2hyaW5rIik7IGJyZWFrOworICAgICAgICBjYXNlIExFTkdUSF9GSVhFRF9TUEFDRVNfTkVBUjogYnVmLmFwcGVuZCgic3BhY2VzIG5lYXIiKTsgYnJlYWs7CisgICAgICAgIGNhc2UgTEVOR1RIX0ZJWEVEX1NQQUNFU19BVF9FTkQ6IGJ1Zi5hcHBlbmQoInNwYWNlcyBhdCBlbmQiKTsgYnJlYWs7CisgICAgICAgIGNhc2UgTEVOR1RIX0ZJWEVEX1NQQUNFU19BVF9CRUdJTk5JTkc6IGJ1Zi5hcHBlbmQoInNwYWNlcyBhdCBiZWdpbm5pbmciKTsgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgc3dpdGNoIChvcHRpb25zICYgVEVYVF9ESVJFQ1RJT05fTUFTSykgeworICAgICAgICBjYXNlIFRFWFRfRElSRUNUSU9OX0xPR0lDQUw6IGJ1Zi5hcHBlbmQoIiwgbG9naWNhbCIpOyBicmVhazsKKyAgICAgICAgY2FzZSBURVhUX0RJUkVDVElPTl9WSVNVQUxfTFRSOiBidWYuYXBwZW5kKCIsIHZpc3VhbCIpOyBicmVhazsKKyAgICAgICAgfQorICAgICAgICBzd2l0Y2ggKG9wdGlvbnMgJiBMRVRURVJTX01BU0spIHsKKyAgICAgICAgY2FzZSBMRVRURVJTX05PT1A6IGJ1Zi5hcHBlbmQoIiwgbm8gbGV0dGVyIHNoYXBpbmciKTsgYnJlYWs7CisgICAgICAgIGNhc2UgTEVUVEVSU19TSEFQRTogYnVmLmFwcGVuZCgiLCBzaGFwZSBsZXR0ZXJzIik7IGJyZWFrOworICAgICAgICBjYXNlIExFVFRFUlNfU0hBUEVfVEFTSEtFRUxfSVNPTEFURUQ6IGJ1Zi5hcHBlbmQoIiwgc2hhcGUgbGV0dGVycyB0YXNoa2VlbCBpc29sYXRlZCIpOyBicmVhazsKKyAgICAgICAgY2FzZSBMRVRURVJTX1VOU0hBUEU6IGJ1Zi5hcHBlbmQoIiwgdW5zaGFwZSBsZXR0ZXJzIik7IGJyZWFrOworICAgICAgICB9CisgICAgICAgIHN3aXRjaCAob3B0aW9ucyAmIERJR0lUU19NQVNLKSB7CisgICAgICAgIGNhc2UgRElHSVRTX05PT1A6IGJ1Zi5hcHBlbmQoIiwgbm8gZGlnaXQgc2hhcGluZyIpOyBicmVhazsKKyAgICAgICAgY2FzZSBESUdJVFNfRU4yQU46IGJ1Zi5hcHBlbmQoIiwgc2hhcGUgZGlnaXRzIHRvIEFOIik7IGJyZWFrOworICAgICAgICBjYXNlIERJR0lUU19BTjJFTjogYnVmLmFwcGVuZCgiLCBzaGFwZSBkaWdpdHMgdG8gRU4iKTsgYnJlYWs7CisgICAgICAgIGNhc2UgRElHSVRTX0VOMkFOX0lOSVRfTFI6IGJ1Zi5hcHBlbmQoIiwgc2hhcGUgZGlnaXRzIHRvIEFOIGNvbnRleHR1YWxseTogZGVmYXVsdCBFTiIpOyBicmVhazsKKyAgICAgICAgY2FzZSBESUdJVFNfRU4yQU5fSU5JVF9BTDogYnVmLmFwcGVuZCgiLCBzaGFwZSBkaWdpdHMgdG8gQU4gY29udGV4dHVhbGx5OiBkZWZhdWx0IEFMIik7IGJyZWFrOworICAgICAgICB9CisgICAgICAgIHN3aXRjaCAob3B0aW9ucyAmIERJR0lUX1RZUEVfTUFTSykgeworICAgICAgICBjYXNlIERJR0lUX1RZUEVfQU46IGJ1Zi5hcHBlbmQoIiwgc3RhbmRhcmQgQXJhYmljLUluZGljIGRpZ2l0cyIpOyBicmVhazsKKyAgICAgICAgY2FzZSBESUdJVF9UWVBFX0FOX0VYVEVOREVEOiBidWYuYXBwZW5kKCIsIGV4dGVuZGVkIEFyYWJpYy1JbmRpYyBkaWdpdHMiKTsgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYnVmLmFwcGVuZCgiXSIpOworCisgICAgICAgIHJldHVybiBidWYudG9TdHJpbmcoKTsKKyAgICB9CisgICAgLy8vQ0xPVkVSOk9OCisKKyAgICAvLworICAgIC8vIHBvcnRlZCBhcGkKKyAgICAvLworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IElSUkVMRVZBTlQgPSA0OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBMQU1UWVBFID0gMTY7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEFMRUZUWVBFID0gMzI7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTElOS1IgPSAxOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBMSU5LTCA9IDI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExJTktfTUFTSyA9IDM7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgaXJyZWxldmFudFBvc1tdID0geyAKKyAgICAgICAgMHgwLCAweDIsIDB4NCwgMHg2LCAweDgsIDB4QSwgMHhDLCAweEUgCisgICAgfTsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgY29udmVydExhbUFsZWZbXSA9ICB7CisgICAgICAgICdcdTA2MjInLCAvLyBGRUY1IAorICAgICAgICAnXHUwNjIyJywgLy8gRkVGNgorICAgICAgICAnXHUwNjIzJywgLy8gRkVGNworICAgICAgICAnXHUwNjIzJywgLy8gRkVGOAorICAgICAgICAnXHUwNjI1JywgLy8gRkVGOQorICAgICAgICAnXHUwNjI1JywgLy8gRkVGQQorICAgICAgICAnXHUwNjI3JywgLy8gRkVGQgorICAgICAgICAnXHUwNjI3JyAgLy8gRkVGQyAKKyAgICB9OworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciBjb252ZXJ0Tm9ybWFsaXplZExhbUFsZWZbXSA9IHsKKyAgICAgICAgJ1x1MDYyMicsIC8vIDA2NUMKKyAgICAgICAgJ1x1MDYyMycsIC8vIDA2NUQKKyAgICAgICAgJ1x1MDYyNScsIC8vIDA2NUUKKyAgICAgICAgJ1x1MDYyNycsIC8vIDA2NUYKKyAgICB9OworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50W10gYXJhTGluayA9IHsKKyAgICAgICAgMSAgICAgICAgICAgKyAzMiArIDI1NiAqIDB4MTEsICAvKjB4MDYyMiovCisgICAgICAgIDEgICAgICAgICAgICsgMzIgKyAyNTYgKiAweDEzLCAgLyoweDA2MjMqLworICAgICAgICAxICAgICAgICAgICAgICAgICsgMjU2ICogMHgxNSwgIC8qMHgwNjI0Ki8KKyAgICAgICAgMSAgICAgICAgICAgKyAzMiArIDI1NiAqIDB4MTcsICAvKjB4MDYyNSovCisgICAgICAgIDEgKyAyICAgICAgICAgICAgKyAyNTYgKiAweDE5LCAgLyoweDA2MjYqLworICAgICAgICAxICAgICAgICAgICArIDMyICsgMjU2ICogMHgxRCwgIC8qMHgwNjI3Ki8KKyAgICAgICAgMSArIDIgICAgICAgICAgICArIDI1NiAqIDB4MUYsICAvKjB4MDYyOCovCisgICAgICAgIDEgICAgICAgICAgICAgICAgKyAyNTYgKiAweDIzLCAgLyoweDA2MjkqLworICAgICAgICAxICsgMiAgICAgICAgICAgICsgMjU2ICogMHgyNSwgIC8qMHgwNjJBKi8KKyAgICAgICAgMSArIDIgICAgICAgICAgICArIDI1NiAqIDB4MjksICAvKjB4MDYyQiovCisgICAgICAgIDEgKyAyICAgICAgICAgICAgKyAyNTYgKiAweDJELCAgLyoweDA2MkMqLworICAgICAgICAxICsgMiAgICAgICAgICAgICsgMjU2ICogMHgzMSwgIC8qMHgwNjJEKi8KKyAgICAgICAgMSArIDIgICAgICAgICAgICArIDI1NiAqIDB4MzUsICAvKjB4MDYyRSovCisgICAgICAgIDEgICAgICAgICAgICAgICAgKyAyNTYgKiAweDM5LCAgLyoweDA2MkYqLworICAgICAgICAxICAgICAgICAgICAgICAgICsgMjU2ICogMHgzQiwgIC8qMHgwNjMwKi8KKyAgICAgICAgMSAgICAgICAgICAgICAgICArIDI1NiAqIDB4M0QsICAvKjB4MDYzMSovCisgICAgICAgIDEgICAgICAgICAgICAgICAgKyAyNTYgKiAweDNGLCAgLyoweDA2MzIqLworICAgICAgICAxICsgMiAgICAgICAgICAgICsgMjU2ICogMHg0MSwgIC8qMHgwNjMzKi8KKyAgICAgICAgMSArIDIgICAgICAgICAgICArIDI1NiAqIDB4NDUsICAvKjB4MDYzNCovCisgICAgICAgIDEgKyAyICAgICAgICAgICAgKyAyNTYgKiAweDQ5LCAgLyoweDA2MzUqLworICAgICAgICAxICsgMiAgICAgICAgICAgICsgMjU2ICogMHg0RCwgIC8qMHgwNjM2Ki8KKyAgICAgICAgMSArIDIgICAgICAgICAgICArIDI1NiAqIDB4NTEsICAvKjB4MDYzNyovCisgICAgICAgIDEgKyAyICAgICAgICAgICAgKyAyNTYgKiAweDU1LCAgLyoweDA2MzgqLworICAgICAgICAxICsgMiAgICAgICAgICAgICsgMjU2ICogMHg1OSwgIC8qMHgwNjM5Ki8KKyAgICAgICAgMSArIDIgICAgICAgICAgICArIDI1NiAqIDB4NUQsICAvKjB4MDYzQSovCisgICAgICAgIDAsIDAsIDAsIDAsIDAsICAgICAgICAgICAgICAgICAgLyoweDA2M0ItMHgwNjNGKi8KKyAgICAgICAgMSArIDIsICAgICAgICAgICAgICAgICAgICAgICAgICAvKjB4MDY0MCovCisgICAgICAgIDEgKyAyICAgICAgICAgICAgKyAyNTYgKiAweDYxLCAgLyoweDA2NDEqLworICAgICAgICAxICsgMiAgICAgICAgICAgICsgMjU2ICogMHg2NSwgIC8qMHgwNjQyKi8KKyAgICAgICAgMSArIDIgICAgICAgICAgICArIDI1NiAqIDB4NjksICAvKjB4MDY0MyovCisgICAgICAgIDEgKyAyICAgICAgICsgMTYgKyAyNTYgKiAweDZELCAgLyoweDA2NDQqLworICAgICAgICAxICsgMiAgICAgICAgICAgICsgMjU2ICogMHg3MSwgIC8qMHgwNjQ1Ki8KKyAgICAgICAgMSArIDIgICAgICAgICAgICArIDI1NiAqIDB4NzUsICAvKjB4MDY0NiovCisgICAgICAgIDEgKyAyICAgICAgICAgICAgKyAyNTYgKiAweDc5LCAgLyoweDA2NDcqLworICAgICAgICAxICAgICAgICAgICAgICAgICsgMjU2ICogMHg3RCwgIC8qMHgwNjQ4Ki8KKyAgICAgICAgMSAgICAgICAgICAgICAgICArIDI1NiAqIDB4N0YsICAvKjB4MDY0OSovCisgICAgICAgIDEgKyAyICAgICAgICAgICAgKyAyNTYgKiAweDgxLCAgLyoweDA2NEEqLworICAgICAgICA0LCA0LCA0LCA0LCAgICAgICAgICAgICAgICAgICAgIC8qMHgwNjRCLTB4MDY0RSovCisgICAgICAgIDQsIDQsIDQsIDQsICAgICAgICAgICAgICAgICAgICAgLyoweDA2NEYtMHgwNjUyKi8KKyAgICAgICAgNCwgNCwgNCwgMCwgMCwgICAgICAgICAgICAgICAgICAvKjB4MDY1My0weDA2NTcqLworICAgICAgICAwLCAwLCAwLCAwLCAgICAgICAgICAgICAgICAgICAgIC8qMHgwNjU4LTB4MDY1QiovCisgICAgICAgIDEgICAgICAgICAgICAgICAgKyAyNTYgKiAweDg1LCAgLyoweDA2NUMqLworICAgICAgICAxICAgICAgICAgICAgICAgICsgMjU2ICogMHg4NywgIC8qMHgwNjVEKi8KKyAgICAgICAgMSAgICAgICAgICAgICAgICArIDI1NiAqIDB4ODksICAvKjB4MDY1RSovCisgICAgICAgIDEgICAgICAgICAgICAgICAgKyAyNTYgKiAweDhCLCAgLyoweDA2NUYqLworICAgICAgICAwLCAwLCAwLCAwLCAwLCAgICAgICAgICAgICAgICAgIC8qMHgwNjYwLTB4MDY2NCovCisgICAgICAgIDAsIDAsIDAsIDAsIDAsICAgICAgICAgICAgICAgICAgLyoweDA2NjUtMHgwNjY5Ki8KKyAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCwgICAgICAgICAgICAgICAvKjB4MDY2QS0weDA2NkYqLworICAgICAgICA0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMHgwNjcwKi8KKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKjB4MDY3MSovCisgICAgICAgIDEgICAgICAgICAgICsgMzIsICAgICAgICAgICAgICAgLyoweDA2NzIqLworICAgICAgICAxICAgICAgICAgICArIDMyLCAgICAgICAgICAgICAgIC8qMHgwNjczKi8KKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKjB4MDY3NCovCisgICAgICAgIDEgICAgICAgICAgICsgMzIsICAgICAgICAgICAgICAgLyoweDA2NzUqLworICAgICAgICAxLCAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMHgwNjc2LTB4MDY3NyovCisgICAgICAgIDErMiwgMSsyLCAxKzIsIDErMiwgMSsyLCAxKzIsICAgLyoweDA2NzgtMHgwNjdEKi8KKyAgICAgICAgMSsyLCAxKzIsIDErMiwgMSsyLCAxKzIsIDErMiwgICAvKjB4MDY3RS0weDA2ODMqLworICAgICAgICAxKzIsIDErMiwgMSsyLCAxKzIsICAgICAgICAgICAgIC8qMHgwNjg0LTB4MDY4NyovCisgICAgICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsICAgLyoweDA2ODgtMHgwNjkxKi8KKyAgICAgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgICAgICAgICAvKjB4MDY5Mi0weDA2OTkqLworICAgICAgICAxKzIsIDErMiwgMSsyLCAxKzIsIDErMiwgMSsyLCAgIC8qMHgwNjlBLTB4MDZBMyovCisgICAgICAgIDErMiwgMSsyLCAxKzIsIDErMiwgICAgICAgICAgICAgLyoweDA2OUEtMHgwNkEzKi8KKyAgICAgICAgMSsyLCAxKzIsIDErMiwgMSsyLCAxKzIsIDErMiwgICAvKjB4MDZBNC0weDA2QUQqLworICAgICAgICAxKzIsIDErMiwgMSsyLCAxKzIsICAgICAgICAgICAgIC8qMHgwNkE0LTB4MDZBRCovCisgICAgICAgIDErMiwgMSsyLCAxKzIsIDErMiwgMSsyLCAxKzIsICAgLyoweDA2QUUtMHgwNkI3Ki8KKyAgICAgICAgMSsyLCAxKzIsIDErMiwgMSsyLCAgICAgICAgICAgICAvKjB4MDZBRS0weDA2QjcqLworICAgICAgICAxKzIsIDErMiwgMSsyLCAxKzIsIDErMiwgMSsyLCAgIC8qMHgwNkI4LTB4MDZCRiovCisgICAgICAgIDErMiwgMSsyLCAgICAgICAgICAgICAgICAgICAgICAgLyoweDA2QjgtMHgwNkJGKi8KKyAgICAgICAgMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKjB4MDZDMCovCisgICAgICAgIDErMiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoweDA2QzEqLworICAgICAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAgIC8qMHgwNkMyLTB4MDZDQiovCisgICAgICAgIDErMiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoweDA2Q0MqLworICAgICAgICAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMHgwNkNEKi8KKyAgICAgICAgMSsyLCAxKzIsIDErMiwgMSsyLCAgICAgICAgICAgICAvKjB4MDZDRS0weDA2RDEqLworICAgICAgICAxLCAxICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMHgwNkQyLTB4MDZEMyovCisgICAgfTsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludFtdIHByZXNMaW5rID0geworICAgICAgICAxICsgMiwgICAgICAgICAgICAgICAgICAgICAgICAvKjB4RkU3MCovCisgICAgICAgIDEgKyAyLCAgICAgICAgICAgICAgICAgICAgICAgIC8qMHhGRTcxKi8KKyAgICAgICAgMSArIDIsIDAsIDErIDIsIDAsIDErIDIsICAgICAgLyoweEZFNzItMHhGRTc2Ki8KKyAgICAgICAgMSArIDIsICAgICAgICAgICAgICAgICAgICAgICAgLyoweEZFNzcqLworICAgICAgICAxKyAyLCAxICsgMiwgMSsyLCAxICsgMiwgICAgICAvKjB4RkU3OC0weEZFODEqLworICAgICAgICAxKyAyLCAxICsgMiwgMSsyLCAxICsgMiwgICAgICAvKjB4RkU4Mi0weEZFODUqLworICAgICAgICAwLCAwICsgMzIsIDEgKyAzMiwgMCArIDMyLCAgICAvKjB4RkU4Ni0weEZFODkqLworICAgICAgICAxICsgMzIsIDAsIDEsICAwICsgMzIsICAgICAgICAvKjB4RkU4QS0weEZFOEQqLworICAgICAgICAxICsgMzIsIDAsIDIsICAxICsgMiwgICAgICAgICAvKjB4RkU4RS0weEZFOTEqLworICAgICAgICAxLCAwICsgMzIsIDEgKyAzMiwgMCwgICAgICAgICAvKjB4RkU5Mi0weEZFOTUqLworICAgICAgICAyLCAxICsgMiwgMSwgMCwgICAgICAgICAgICAgICAvKjB4RkU5Ni0weEZFOTkqLworICAgICAgICAxLCAwLCAyLCAxICsgMiwgICAgICAgICAgICAgICAvKjB4RkU5QS0weEZFOUQqLworICAgICAgICAxLCAwLCAyLCAxICsgMiwgICAgICAgICAgICAgICAvKjB4RkU5RS0weEZFQTEqLworICAgICAgICAxLCAwLCAyLCAxICsgMiwgICAgICAgICAgICAgICAvKjB4RkVBMi0weEZFQTUqLworICAgICAgICAxLCAwLCAyLCAxICsgMiwgICAgICAgICAgICAgICAvKjB4RkVBNi0weEZFQTkqLworICAgICAgICAxLCAwLCAyLCAxICsgMiwgICAgICAgICAgICAgICAvKjB4RkVBQS0weEZFQUQqLworICAgICAgICAxLCAwLCAxLCAwLCAgICAgICAgICAgICAgICAgICAvKjB4RkVBRS0weEZFQjEqLworICAgICAgICAxLCAwLCAxLCAwLCAgICAgICAgICAgICAgICAgICAvKjB4RkVCMi0weEZFQjUqLworICAgICAgICAxLCAwLCAyLCAxKzIsICAgICAgICAgICAgICAgICAvKjB4RkVCNi0weEZFQjkqLworICAgICAgICAxLCAwLCAyLCAxKzIsICAgICAgICAgICAgICAgICAvKjB4RkVCQS0weEZFQkQqLworICAgICAgICAxLCAwLCAyLCAxKzIsICAgICAgICAgICAgICAgICAvKjB4RkVCRS0weEZFQzEqLworICAgICAgICAxLCAwLCAyLCAxKzIsICAgICAgICAgICAgICAgICAvKjB4RkVDMi0weEZFQzUqLworICAgICAgICAxLCAwLCAyLCAxKzIsICAgICAgICAgICAgICAgICAvKjB4RkVDNi0weEZFQzkqLworICAgICAgICAxLCAwLCAyLCAxKzIsICAgICAgICAgICAgICAgICAvKjB4RkVDQS0weEZFQ0QqLworICAgICAgICAxLCAwLCAyLCAxKzIsICAgICAgICAgICAgICAgICAvKjB4RkVDRS0weEZFRDEqLworICAgICAgICAxLCAwLCAyLCAxKzIsICAgICAgICAgICAgICAgICAvKjB4RkVEMi0weEZFRDUqLworICAgICAgICAxLCAwLCAyLCAxKzIsICAgICAgICAgICAgICAgICAvKjB4RkVENi0weEZFRDkqLworICAgICAgICAxLCAwLCAyLCAxKzIsICAgICAgICAgICAgICAgICAvKjB4RkVEQS0weEZFREQqLworICAgICAgICAxLCAwLCAyLCAxKzIsICAgICAgICAgICAgICAgICAvKjB4RkVERS0weEZFRTEqLworICAgICAgICAxLCAwICsgMTYsIDIgKyAxNiwgMSArIDIgKzE2LCAvKjB4RkVFMi0weEZFRTUqLworICAgICAgICAxICsgMTYsIDAsIDIsIDErMiwgICAgICAgICAgICAvKjB4RkVFNi0weEZFRTkqLworICAgICAgICAxLCAwLCAyLCAxKzIsICAgICAgICAgICAgICAgICAvKjB4RkVFQS0weEZFRUQqLworICAgICAgICAxLCAwLCAyLCAxKzIsICAgICAgICAgICAgICAgICAvKjB4RkVFRS0weEZFRjEqLworICAgICAgICAxLCAwLCAxLCAwLCAgICAgICAgICAgICAgICAgICAvKjB4RkVGMi0weEZFRjUqLworICAgICAgICAxLCAwLCAyLCAxKzIsICAgICAgICAgICAgICAgICAvKjB4RkVGNi0weEZFRjkqLworICAgICAgICAxLCAwLCAxLCAwLCAgICAgICAgICAgICAgICAgICAvKjB4RkVGQS0weEZFRkQqLworICAgICAgICAxLCAwLCAxLCAwLAorICAgICAgICAxCisgICAgfTsKKworICAgIHByaXZhdGUgc3RhdGljIGludFtdIGNvbnZlcnRGRXRvMDYgPSB7CisgICAgICAgIC8qKioqKioqKioqKjAqKioqKioxKioqKioqMioqKioqKjMqKioqKio0KioqKioqNSoqKioqKjYqKioqKio3KioqKioqOCoqKioqKjkqKioqKipBKioqKioqQioqKioqKkMqKioqKipEKioqKioqRSoqKioqKkYqKiovCisgICAgICAgIC8qRkU3Ki8gICAweDY0QiwgMHg2NEIsIDB4NjRDLCAweDY0QywgMHg2NEQsIDB4NjRELCAweDY0RSwgMHg2NEUsIDB4NjRGLCAweDY0RiwgMHg2NTAsIDB4NjUwLCAweDY1MSwgMHg2NTEsIDB4NjUyLCAweDY1MiwKKyAgICAgICAgLypGRTgqLyAgIDB4NjIxLCAweDYyMiwgMHg2MjIsIDB4NjIzLCAweDYyMywgMHg2MjQsIDB4NjI0LCAweDYyNSwgMHg2MjUsIDB4NjI2LCAweDYyNiwgMHg2MjYsIDB4NjI2LCAweDYyNywgMHg2MjcsIDB4NjI4LAorICAgICAgICAvKkZFOSovICAgMHg2MjgsIDB4NjI4LCAweDYyOCwgMHg2MjksIDB4NjI5LCAweDYyQSwgMHg2MkEsIDB4NjJBLCAweDYyQSwgMHg2MkIsIDB4NjJCLCAweDYyQiwgMHg2MkIsIDB4NjJDLCAweDYyQywgMHg2MkMsCisgICAgICAgIC8qRkVBKi8gICAweDYyQywgMHg2MkQsIDB4NjJELCAweDYyRCwgMHg2MkQsIDB4NjJFLCAweDYyRSwgMHg2MkUsIDB4NjJFLCAweDYyRiwgMHg2MkYsIDB4NjMwLCAweDYzMCwgMHg2MzEsIDB4NjMxLCAweDYzMiwKKyAgICAgICAgLypGRUIqLyAgIDB4NjMyLCAweDYzMywgMHg2MzMsIDB4NjMzLCAweDYzMywgMHg2MzQsIDB4NjM0LCAweDYzNCwgMHg2MzQsIDB4NjM1LCAweDYzNSwgMHg2MzUsIDB4NjM1LCAweDYzNiwgMHg2MzYsIDB4NjM2LAorICAgICAgICAvKkZFQyovICAgMHg2MzYsIDB4NjM3LCAweDYzNywgMHg2MzcsIDB4NjM3LCAweDYzOCwgMHg2MzgsIDB4NjM4LCAweDYzOCwgMHg2MzksIDB4NjM5LCAweDYzOSwgMHg2MzksIDB4NjNBLCAweDYzQSwgMHg2M0EsCisgICAgICAgIC8qRkVEKi8gICAweDYzQSwgMHg2NDEsIDB4NjQxLCAweDY0MSwgMHg2NDEsIDB4NjQyLCAweDY0MiwgMHg2NDIsIDB4NjQyLCAweDY0MywgMHg2NDMsIDB4NjQzLCAweDY0MywgMHg2NDQsIDB4NjQ0LCAweDY0NCwKKyAgICAgICAgLypGRUUqLyAgIDB4NjQ0LCAweDY0NSwgMHg2NDUsIDB4NjQ1LCAweDY0NSwgMHg2NDYsIDB4NjQ2LCAweDY0NiwgMHg2NDYsIDB4NjQ3LCAweDY0NywgMHg2NDcsIDB4NjQ3LCAweDY0OCwgMHg2NDgsIDB4NjQ5LAorICAgICAgICAvKkZFRiovICAgMHg2NDksIDB4NjRBLCAweDY0QSwgMHg2NEEsIDB4NjRBLCAweDY1QywgMHg2NUMsIDB4NjVELCAweDY1RCwgMHg2NUUsIDB4NjVFLCAweDY1RiwgMHg2NUYKKyAgICB9OworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IHNoYXBlVGFibGVbXVtdW10gPSB7CisgICAgICAgIHsgezAsMCwwLDB9LCB7MCwwLDAsMH0sIHswLDEsMCwzfSwgezAsMSwwLDF9IH0sCisgICAgICAgIHsgezAsMCwyLDJ9LCB7MCwwLDEsMn0sIHswLDEsMSwyfSwgezAsMSwxLDN9IH0sCisgICAgICAgIHsgezAsMCwwLDB9LCB7MCwwLDAsMH0sIHswLDEsMCwzfSwgezAsMSwwLDN9IH0sCisgICAgICAgIHsgezAsMCwxLDJ9LCB7MCwwLDEsMn0sIHswLDEsMSwyfSwgezAsMSwxLDN9IH0KKyAgICB9OworCisgICAgLyoKKyAgICAgKiBUaGlzIGZ1bmN0aW9uIHNoYXBlcyBFdXJvcGVhbiBkaWdpdHMgdG8gQXJhYmljLUluZGljIGRpZ2l0cworICAgICAqIGluLXBsYWNlLCB3cml0aW5nIG92ZXIgdGhlIGlucHV0IGNoYXJhY3RlcnMuICBEYXRhIGlzIGluIHZpc3VhbAorICAgICAqIG9yZGVyLgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBzaGFwZVRvQXJhYmljRGlnaXRzV2l0aENvbnRleHQoY2hhcltdIGRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBkaWdpdEJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGxhc3RTdHJvbmdXYXNBTCkgeworCisgICAgICAgIGRpZ2l0QmFzZSAtPSAnMCc7IC8vIG1vdmUgY29tbW9uIGFkanVzdG1lbnQgb3V0IG9mIGxvb3AKKworICAgICAgICBmb3IoaW50IGkgPSBzdGFydCArIGxlbmd0aDsgLS1pID49IHN0YXJ0OykgeworICAgICAgICAgICAgY2hhciBjaCA9IGRlc3RbaV07CisgICAgICAgICAgICBzd2l0Y2ggKFVDaGFyYWN0ZXIuZ2V0RGlyZWN0aW9uKGNoKSkgeworICAgICAgICAgICAgY2FzZSBVQ2hhcmFjdGVyRGlyZWN0aW9uLkxFRlRfVE9fUklHSFQ6CisgICAgICAgICAgICBjYXNlIFVDaGFyYWN0ZXJEaXJlY3Rpb24uUklHSFRfVE9fTEVGVDoKKyAgICAgICAgICAgICAgICBsYXN0U3Ryb25nV2FzQUwgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgVUNoYXJhY3RlckRpcmVjdGlvbi5SSUdIVF9UT19MRUZUX0FSQUJJQzoKKyAgICAgICAgICAgICAgICBsYXN0U3Ryb25nV2FzQUwgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBVQ2hhcmFjdGVyRGlyZWN0aW9uLkVVUk9QRUFOX05VTUJFUjoKKyAgICAgICAgICAgICAgICBpZiAobGFzdFN0cm9uZ1dhc0FMICYmIGNoIDw9ICdcdTAwMzknKSB7CisgICAgICAgICAgICAgICAgICAgIGRlc3RbaV0gPSAoY2hhcikoY2ggKyBkaWdpdEJhc2UpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKgorICAgICAqIE5hbWUgICAgOiBpbnZlcnRCdWZmZXIKKyAgICAgKiBGdW5jdGlvbjogVGhpcyBmdW5jdGlvbiBpbnZlcnRzIHRoZSBidWZmZXIsIGl0J3MgdXNlZAorICAgICAqICAgICAgICAgICBpbiBjYXNlIHRoZSB1c2VyIHNwZWNpZmllcyB0aGUgYnVmZmVyIHRvIGJlCisgICAgICogICAgICAgICAgIFRFWFRfRElSRUNUSU9OX0xPR0lDQUwKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIGludmVydEJ1ZmZlcihjaGFyW10gYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuZ3RoKSB7CisKKyAgICAgICAgZm9yKGludCBpID0gc3RhcnQsIGogPSBzdGFydCArIGxlbmd0aCAtIDE7IGkgPCBqOyBpKyssIC0taikgeworICAgICAgICAgICAgY2hhciB0ZW1wID0gYnVmZmVyW2ldOworICAgICAgICAgICAgYnVmZmVyW2ldID0gYnVmZmVyW2pdOworICAgICAgICAgICAgYnVmZmVyW2pdID0gdGVtcDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qCisgICAgICogTmFtZSAgICA6IGNoYW5nZUxhbUFsZWYKKyAgICAgKiBGdW5jdGlvbjogQ29udmVydHMgdGhlIEFsZWYgY2hhcmFjdGVycyBpbnRvIGFuIGVxdWl2YWxlbnQKKyAgICAgKiAgICAgICAgICAgTGFtQWxlZiBsb2NhdGlvbiBpbiB0aGUgMHgwNnh4IFJhbmdlLCB0aGlzIGlzIGFuCisgICAgICogICAgICAgICAgIGludGVybWVkaWF0ZSBzdGFnZSBpbiB0aGUgb3BlcmF0aW9uIG9mIHRoZSBwcm9ncmFtCisgICAgICogICAgICAgICAgIGxhdGVyIGl0J2xsIGJlIGNvbnZlcnRlZCBpbnRvIHRoZSAweEZFeHggTGFtQWxlZnMgCisgICAgICogICAgICAgICAgIGluIHRoZSBzaGFwaW5nIGZ1bmN0aW9uLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGNoYXIgY2hhbmdlTGFtQWxlZihjaGFyIGNoKSB7CisgICAgICAgIHN3aXRjaChjaCkgeworICAgICAgICBjYXNlICdcdTA2MjInOiByZXR1cm4gJ1x1MDY1Qyc7CisgICAgICAgIGNhc2UgJ1x1MDYyMyc6IHJldHVybiAnXHUwNjVEJzsKKyAgICAgICAgY2FzZSAnXHUwNjI1JzogcmV0dXJuICdcdTA2NUUnOworICAgICAgICBjYXNlICdcdTA2MjcnOiByZXR1cm4gJ1x1MDY1Ric7CisgICAgICAgIGRlZmF1bHQ6ICByZXR1cm4gJ1x1MDAwMCc7IC8vIG5vdCBhIGxhbWFsZWYKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qCisgICAgICogTmFtZSAgICA6IHNwZWNpYWxDaGFyCisgICAgICogRnVuY3Rpb246IFNwZWNpYWwgQXJhYmljIGNoYXJhY3RlcnMgbmVlZCBzcGVjaWFsIGhhbmRsaW5nIGluIHRoZSBzaGFwZVVuaWNvZGUKKyAgICAgKiAgICAgICAgICAgZnVuY3Rpb24sIHRoaXMgZnVuY3Rpb24gcmV0dXJucyAxIG9yIDIgZm9yIHRoZXNlIHNwZWNpYWwgY2hhcmFjdGVycworICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGludCBzcGVjaWFsQ2hhcihjaGFyIGNoKSB7CisgICAgICAgIGlmICgoY2ggPiAnXHUwNjIxJyAmJiBjaCA8ICdcdTA2MjYnKSB8fCAKKyAgICAgICAgICAgIChjaCA9PSAnXHUwNjI3JykgfHwKKyAgICAgICAgICAgIChjaCA+ICdcdTA2MkUnICYmIGNoIDwgJ1x1MDYzMycpIHx8CisgICAgICAgICAgICAoY2ggPiAnXHUwNjQ3JyAmJiBjaCA8ICdcdTA2NEEnKSB8fAorICAgICAgICAgICAgKGNoID09ICdcdTA2MjknKSkgeworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0gZWxzZSBpZiAoY2ggPj0gJ1x1MDY0QicgJiYgY2g8PSAnXHUwNjUyJykgeworICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgIH0gZWxzZSBpZiAoY2ggPj0gMHgwNjUzICYmIGNoIDw9IDB4MDY1NSB8fCAKKyAgICAgICAgICAgICAgICAgICBjaCA9PSAweDA2NzAgfHwKKyAgICAgICAgICAgICAgICAgICBjaCA+PSAweEZFNzAgJiYgY2ggPD0gMHhGRTdGKSB7CisgICAgICAgICAgICByZXR1cm4gMzsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qCisgICAgICogTmFtZSAgICA6IGdldExpbmsKKyAgICAgKiBGdW5jdGlvbjogUmVzb2x2ZXMgdGhlIGxpbmsgYmV0d2VlbiB0aGUgY2hhcmFjdGVycyBhcyAKKyAgICAgKiAgICAgICAgICAgQXJhYmljIGNoYXJhY3RlcnMgaGF2ZSBmb3VyIGZvcm1zIDoKKyAgICAgKiAgICAgICAgICAgSXNvbGF0ZWQsIEluaXRpYWwsIE1pZGRsZSBhbmQgRmluYWwgRm9ybQorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGludCBnZXRMaW5rKGNoYXIgY2gpIHsKKyAgICAgICAgaWYgKGNoID49ICdcdTA2MjInICYmIGNoIDw9ICdcdTA2RDMnKSB7CisgICAgICAgICAgICByZXR1cm4gYXJhTGlua1tjaCAtICdcdTA2MjInXTsKKyAgICAgICAgfSBlbHNlIGlmIChjaCA9PSAnXHUyMDBEJykgeworICAgICAgICAgICAgcmV0dXJuIDM7CisgICAgICAgIH0gZWxzZSBpZiAoY2ggPj0gJ1x1MjA2RCcgJiYgY2ggPD0gJ1x1MjA2RicpIHsKKyAgICAgICAgICAgIHJldHVybiA0OworICAgICAgICB9IGVsc2UgaWYgKGNoID49ICdcdUZFNzAnICYmIGNoIDw9ICdcdUZFRkMnKSB7CisgICAgICAgICAgICByZXR1cm4gcHJlc0xpbmtbY2ggLSAnXHVGRTcwJ107CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qCisgICAgICogTmFtZSAgICA6IGNvdW50U3BhY2VzCisgICAgICogRnVuY3Rpb246IENvdW50cyB0aGUgbnVtYmVyIG9mIHNwYWNlcworICAgICAqICAgICAgICAgICBhdCBlYWNoIGVuZCBvZiB0aGUgbG9naWNhbCBidWZmZXIKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBpbnQgY291bnRTcGFjZXNMZWZ0KGNoYXJbXSBkZXN0LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb3VudCkgeworICAgICAgICBmb3IgKGludCBpID0gc3RhcnQsIGUgPSBzdGFydCArIGNvdW50OyBpIDwgZTsgKytpKSB7CisgICAgICAgICAgICBpZiAoZGVzdFtpXSAhPSAnXHUwMDIwJykgeworICAgICAgICAgICAgICAgIHJldHVybiBpIC0gc3RhcnQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGNvdW50OworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGludCBjb3VudFNwYWNlc1JpZ2h0KGNoYXJbXSBkZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY291bnQpIHsKKworICAgICAgICBmb3IgKGludCBpID0gc3RhcnQgKyBjb3VudDsgLS1pID49IHN0YXJ0OykgeworICAgICAgICAgICAgaWYgKGRlc3RbaV0gIT0gJ1x1MDAyMCcpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RhcnQgKyBjb3VudCAtIDEgLSBpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBjb3VudDsKKyAgICB9CisKKyAgICAvKgorICAgICAqIE5hbWUgICAgOiBpc1Rhc2hrZWVsQ2hhcgorICAgICAqIEZ1bmN0aW9uOiBSZXR1cm5zIDEgZm9yIFRhc2hrZWVsIGNoYXJhY3RlcnMgZWxzZSByZXR1cm4gMAorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gaXNUYXNoa2VlbENoYXIoY2hhciBjaCkgeworICAgICAgICByZXR1cm4gY2ggPj0nXHUwNjRCJyAmJiBjaCA8PSAnXHUwNjUyJzsKKyAgICB9CisKKyAgICAvKgorICAgICAqIE5hbWUgICAgOiBpc0FsZWZDaGFyCisgICAgICogRnVuY3Rpb246IFJldHVybnMgMSBmb3IgQWxlZiBjaGFyYWN0ZXJzIGVsc2UgcmV0dXJuIDAKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGlzQWxlZkNoYXIoY2hhciBjaCkgeworICAgICAgICByZXR1cm4gY2ggPT0gJ1x1MDYyMicgfHwgY2ggPT0gJ1x1MDYyMycgfHwgY2ggPT0gJ1x1MDYyNScgfHwgY2ggPT0gJ1x1MDYyNyc7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBOYW1lICAgIDogaXNMYW1BbGVmQ2hhcgorICAgICAqIEZ1bmN0aW9uOiBSZXR1cm5zIDEgZm9yIExhbUFsZWYgY2hhcmFjdGVycyBlbHNlIHJldHVybiAwCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBpc0xhbUFsZWZDaGFyKGNoYXIgY2gpIHsKKyAgICAgICAgcmV0dXJuIGNoID49ICdcdUZFRjUnICYmIGNoIDw9ICdcdUZFRkMnOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gaXNOb3JtYWxpemVkTGFtQWxlZkNoYXIoY2hhciBjaCkgeworICAgICAgICByZXR1cm4gY2ggPj0gJ1x1MDY1QycgJiYgY2ggPD0gJ1x1MDY1Ric7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBOYW1lICAgIDogY2FsY3VsYXRlU2l6ZQorICAgICAqIEZ1bmN0aW9uOiBUaGlzIGZ1bmN0aW9uIGNhbGN1bGF0ZXMgdGhlIGRlc3RTaXplIHRvIGJlIHVzZWQgaW4gcHJlZmxpZ2h0aW5nCisgICAgICogICAgICAgICAgIHdoZW4gdGhlIGRlc3RTaXplIGlzIGVxdWFsIHRvIDAKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBjYWxjdWxhdGVTaXplKGNoYXJbXSBzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc291cmNlU3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc291cmNlTGVuZ3RoKSB7CisJCisgICAgICAgIGludCBkZXN0U2l6ZSA9IHNvdXJjZUxlbmd0aDsKKworICAgICAgICBzd2l0Y2ggKG9wdGlvbnMgJiBMRVRURVJTX01BU0spIHsKKyAgICAgICAgY2FzZSBMRVRURVJTX1NIQVBFOgorICAgICAgICBjYXNlIExFVFRFUlNfU0hBUEVfVEFTSEtFRUxfSVNPTEFURUQ6CisgICAgICAgICAgICBpZiAoaXNMb2dpY2FsKSB7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IHNvdXJjZVN0YXJ0LCBlID0gc291cmNlU3RhcnQgKyBzb3VyY2VMZW5ndGggLSAxOyBpIDwgZTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChzb3VyY2VbaV0gPT0gJ1x1MDY0NCcgJiYgaXNBbGVmQ2hhcihzb3VyY2VbaSsxXSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC0tZGVzdFNpemU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeyAvLyB2aXN1YWwKKyAgICAgICAgICAgICAgICBmb3IoaW50IGkgPSBzb3VyY2VTdGFydCArIDEsIGUgPSBzb3VyY2VTdGFydCArIHNvdXJjZUxlbmd0aDsgaSA8IGU7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoc291cmNlW2ldID09ICdcdTA2NDQnICYmIGlzQWxlZkNoYXIoc291cmNlW2ktMV0pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAtLWRlc3RTaXplOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBMRVRURVJTX1VOU0hBUEU6CisgICAgICAgICAgICBmb3IoaW50IGkgPSBzb3VyY2VTdGFydCwgZSA9IHNvdXJjZVN0YXJ0ICsgc291cmNlTGVuZ3RoOyBpIDwgZTsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzTGFtQWxlZkNoYXIoc291cmNlW2ldKSkgeworICAgICAgICAgICAgICAgICAgICBkZXN0U2l6ZSsrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBkZXN0U2l6ZTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIE5hbWUgICAgOiByZW1vdmVMYW1BbGVmU3BhY2VzCisgICAgICogRnVuY3Rpb246IFRoZSBzaGFwZVVuaWNvZGUgZnVuY3Rpb24gY29udmVydHMgTGFtICsgQWxlZiBpbnRvIExhbUFsZWYgKyBzcGFjZSwKKyAgICAgKiAgICAgICAgICAgdGhpcyBmdW5jdGlvbiByZW1vdmVzIHRoZSBzcGFjZXMgYmVoaW5kIHRoZSBMYW1BbGVmcyBhY2NvcmRpbmcgdG8KKyAgICAgKiAgICAgICAgICAgdGhlIG9wdGlvbnMgdGhlIHVzZXIgc3BlY2lmaWVzLCB0aGUgc3BhY2VzIGFyZSByZW1vdmVkIHRvIHRoZSBlbmQKKyAgICAgKiAgICAgICAgICAgb2YgdGhlIGJ1ZmZlciwgb3Igc2hyaW5rIHRoZSBidWZmZXIgYW5kIHJlbW92ZSBzcGFjZXMgZm9yIGdvb2QKKyAgICAgKiAgICAgICAgICAgb3IgbGVhdmUgdGhlIGJ1ZmZlciBhcyBpdCBpcyBMYW1BbGVmICsgc3BhY2UuCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgcmVtb3ZlTGFtQWxlZlNwYWNlcyhjaGFyW10gZGVzdCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuZ3RoKSB7CisJCisgICAgICAgIGludCBsZW5PcHRpb25zID0gb3B0aW9ucyAmIExFTkdUSF9NQVNLOworICAgICAgICBpZiAoIWlzTG9naWNhbCkgeworICAgICAgICAgICAgc3dpdGNoIChsZW5PcHRpb25zKSB7CisgICAgICAgICAgICBjYXNlIExFTkdUSF9GSVhFRF9TUEFDRVNfQVRfQkVHSU5OSU5HOiBsZW5PcHRpb25zID0gTEVOR1RIX0ZJWEVEX1NQQUNFU19BVF9FTkQ7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBMRU5HVEhfRklYRURfU1BBQ0VTX0FUX0VORDogbGVuT3B0aW9ucyA9IExFTkdUSF9GSVhFRF9TUEFDRVNfQVRfQkVHSU5OSU5HOyBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKGxlbk9wdGlvbnMgPT0gTEVOR1RIX0ZJWEVEX1NQQUNFU19ORUFSKSB7CisgICAgICAgICAgICBmb3IgKGludCBpID0gc3RhcnQsIGUgPSBpICsgbGVuZ3RoOyBpIDwgZTsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKGRlc3RbaV0gPT0gJ1x1ZmZmZicpIHsKKyAgICAgICAgICAgICAgICAgICAgZGVzdFtpXSA9ICdcdTAwMjAnOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZpbmFsIGludCBlID0gc3RhcnQgKyBsZW5ndGg7CisgICAgICAgICAgICBpbnQgdyA9IGU7CisgICAgICAgICAgICBpbnQgciA9IGU7CisgICAgICAgICAgICB3aGlsZSAoLS1yID49IHN0YXJ0KSB7CisgICAgICAgICAgICAgICAgY2hhciBjaCA9IGRlc3Rbcl07CisgICAgICAgICAgICAgICAgaWYgKGNoICE9ICdcdWZmZmYnKSB7CisgICAgICAgICAgICAgICAgICAgIC0tdzsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHcgIT0gcikgeworICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFt3XSA9IGNoOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobGVuT3B0aW9ucyA9PSBMRU5HVEhfRklYRURfU1BBQ0VTX0FUX0VORCkgeworICAgICAgICAgICAgICAgIHdoaWxlICh3ID4gc3RhcnQpIHsKKyAgICAgICAgICAgICAgICAgICAgZGVzdFstLXddID0gJ1x1MDAyMCc7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAodyA+IHN0YXJ0KSB7CisgICAgICAgICAgICAgICAgICAgIC8vIHNoaWZ0LCBhc3N1bWUgc21hbGwgYnVmZmVyIHNpemUgc28gZG9uJ3QgdXNlIGFycmF5Y29weQorICAgICAgICAgICAgICAgICAgICByID0gdzsKKyAgICAgICAgICAgICAgICAgICAgdyA9IHN0YXJ0OworICAgICAgICAgICAgICAgICAgICB3aGlsZSAociA8IGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RbdysrXSA9IGRlc3RbcisrXTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHcgPSBlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobGVuT3B0aW9ucyA9PSBMRU5HVEhfR1JPV19TSFJJTkspIHsKKyAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gdyAtIHN0YXJ0OworICAgICAgICAgICAgICAgIH0gZWxzZSB7IC8vIHNwYWNlcyBhdCBiZWdpbm5pbmcKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHcgPCBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0W3crK10gPSAnXHUwMDIwJzsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbGVuZ3RoOworICAgIH0KKworICAgIC8qCisgICAgICogTmFtZSAgICA6IGV4cGFuZExhbUFsZWYKKyAgICAgKiBGdW5jdGlvbjogTGFtQWxlZiBuZWVkcyBzcGVjaWFsIGhhbmRsaW5nIGFzIHRoZSBMYW1BbGVmIGlzCisgICAgICogICAgICAgICAgIG9uZSBjaGFyYWN0ZXIgd2hpbGUgZXhwYW5kaW5nIGl0IHdpbGwgZ2l2ZSB0d28KKyAgICAgKiAgICAgICAgICAgY2hhcmFjdGVycyBMYW0gKyBBbGVmLCBzbyB3ZSBuZWVkIHRvIGV4cGFuZCB0aGUgTGFtQWxlZgorICAgICAqICAgICAgICAgICBpbiBuZWFyIG9yIGZhciBzcGFjZXMgYWNjb3JkaW5nIHRvIHRoZSBvcHRpb25zIHRoZSB1c2VyCisgICAgICogICAgICAgICAgIHNwZWNpZmllcyBvciBpbmNyZWFzZSB0aGUgYnVmZmVyIHNpemUuCisgICAgICogICAgICAgICAgIERlc3QgaGFzIGVub3VnaCByb29tIGZvciB0aGUgZXhwYW5zaW9uIGlmIHdlIGFyZSBncm93aW5nLgorICAgICAqICAgICAgICAgICBsYW1hbGVmIGFyZSBub3JtYWxpemVkIHRvIHRoZSAnc3BlY2lhbCBjaGFyYWN0ZXJzJworICAgICAqLworICAgIHByaXZhdGUgaW50IGV4cGFuZExhbUFsZWYoY2hhcltdIGRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxhY291bnQpIHRocm93cyBBcmFiaWNTaGFwaW5nRXhjZXB0aW9uIHsKKworICAgICAgICBpbnQgbGVuT3B0aW9ucyA9IG9wdGlvbnMgJiBMRU5HVEhfTUFTSzsKKyAgICAgICAgaWYgKCFpc0xvZ2ljYWwpIHsKKyAgICAgICAgICAgIHN3aXRjaCAobGVuT3B0aW9ucykgeworICAgICAgICAgICAgY2FzZSBMRU5HVEhfRklYRURfU1BBQ0VTX0FUX0JFR0lOTklORzogbGVuT3B0aW9ucyA9IExFTkdUSF9GSVhFRF9TUEFDRVNfQVRfRU5EOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgTEVOR1RIX0ZJWEVEX1NQQUNFU19BVF9FTkQ6IGxlbk9wdGlvbnMgPSBMRU5HVEhfRklYRURfU1BBQ0VTX0FUX0JFR0lOTklORzsgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OiBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAobGVuT3B0aW9ucykgeworICAgICAgICBjYXNlIExFTkdUSF9HUk9XX1NIUklOSzogCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgciA9IHN0YXJ0ICsgbGVuZ3RoLCB3ID0gciArIGxhY291bnQ7IC0tciA+PSBzdGFydDspIHsKKyAgICAgICAgICAgICAgICAgICAgY2hhciBjaCA9IGRlc3Rbcl07CisgICAgICAgICAgICAgICAgICAgIGlmIChpc05vcm1hbGl6ZWRMYW1BbGVmQ2hhcihjaCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RbLS13XSA9ICdcdTA2NDQnOworICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFstLXddID0gY29udmVydE5vcm1hbGl6ZWRMYW1BbGVmW2NoIC0gJ1x1MDY1QyddOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFstLXddID0gY2g7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsZW5ndGggKz0gbGFjb3VudDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgTEVOR1RIX0ZJWEVEX1NQQUNFU19ORUFSOiAKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNOb3JtYWxpemVkTGFtQWxlZkNoYXIoZGVzdFtzdGFydF0pKSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcmFiaWNTaGFwaW5nRXhjZXB0aW9uKCJubyBzcGFjZSBmb3IgbGFtYWxlZiIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gc3RhcnQgKyBsZW5ndGg7IC0taSA+IHN0YXJ0OykgeyAvLyBkb24ndCBjaGVjayBzdGFydCwgYWxyZWFkeSBjaGVja2VkCisgICAgICAgICAgICAgICAgICAgIGNoYXIgY2ggPSBkZXN0W2ldOworICAgICAgICAgICAgICAgICAgICBpZiAoaXNOb3JtYWxpemVkTGFtQWxlZkNoYXIoY2gpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVzdFtpLTFdID09ICdcdTAwMjAnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFtpXSA9ICdcdTA2NDQnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RbLS1pXSA9IGNvbnZlcnROb3JtYWxpemVkTGFtQWxlZltjaCAtICdcdTA2NUMnXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFyYWJpY1NoYXBpbmdFeGNlcHRpb24oIm5vIHNwYWNlIGZvciBsYW1hbGVmIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIExFTkdUSF9GSVhFRF9TUEFDRVNfQVRfRU5EOiAKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAobGFjb3VudCA+IGNvdW50U3BhY2VzTGVmdChkZXN0LCBzdGFydCwgbGVuZ3RoKSkgeworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXJhYmljU2hhcGluZ0V4Y2VwdGlvbigibm8gc3BhY2UgZm9yIGxhbWFsZWYiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZm9yIChpbnQgciA9IHN0YXJ0ICsgbGFjb3VudCwgdyA9IHN0YXJ0LCBlID0gc3RhcnQgKyBsZW5ndGg7IHIgPCBlOyArK3IpIHsKKyAgICAgICAgICAgICAgICAgICAgY2hhciBjaCA9IGRlc3Rbcl07CisgICAgICAgICAgICAgICAgICAgIGlmIChpc05vcm1hbGl6ZWRMYW1BbGVmQ2hhcihjaCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RbdysrXSA9IGNvbnZlcnROb3JtYWxpemVkTGFtQWxlZltjaCAtICdcdTA2NUMnXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RbdysrXSA9ICdcdTA2NDQnOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFt3KytdID0gY2g7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBMRU5HVEhfRklYRURfU1BBQ0VTX0FUX0JFR0lOTklORzogCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGxhY291bnQgPiBjb3VudFNwYWNlc1JpZ2h0KGRlc3QsIHN0YXJ0LCBsZW5ndGgpKSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcmFiaWNTaGFwaW5nRXhjZXB0aW9uKCJubyBzcGFjZSBmb3IgbGFtYWxlZiIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmb3IgKGludCByID0gc3RhcnQgKyBsZW5ndGggLSBsYWNvdW50LCB3ID0gc3RhcnQgKyBsZW5ndGg7IC0tciA+PSBzdGFydDspIHsKKyAgICAgICAgICAgICAgICAgICAgY2hhciBjaCA9IGRlc3Rbcl07CisgICAgICAgICAgICAgICAgICAgIGlmIChpc05vcm1hbGl6ZWRMYW1BbGVmQ2hhcihjaCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RbLS13XSA9ICdcdTA2NDQnOworICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFstLXddID0gY29udmVydE5vcm1hbGl6ZWRMYW1BbGVmW2NoIC0gJ1x1MDY1QyddOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFstLXddID0gY2g7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBsZW5ndGg7CisgICAgfQorCisgICAgLyogQ29udmVydCB0aGUgaW5wdXQgYnVmZmVyIGZyb20gRkV4eCBSYW5nZSBpbnRvIDA2eHggUmFuZ2UKKyAgICAgKiB0byBwdXQgYWxsIGNoYXJhY3RlcnMgaW50byB0aGUgMDZ4eCByYW5nZQorICAgICAqIGV2ZW4gdGhlIGxhbWFsZWYgaXMgY29udmVydGVkIHRvIHRoZSBzcGVjaWFsIHJlZ2lvbiBpbgorICAgICAqIHRoZSAwNnh4IHJhbmdlLiAgUmV0dXJuIHRoZSBudW1iZXIgb2YgbGFtYWxlZiBjaGFycyBmb3VuZC4KKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBub3JtYWxpemUoY2hhcltdIGRlc3QsIGludCBzdGFydCwgaW50IGxlbmd0aCkgeworICAgICAgICBpbnQgbGFjb3VudCA9IDA7CisgICAgICAgIGZvciAoaW50IGkgPSBzdGFydCwgZSA9IGkgKyBsZW5ndGg7IGkgPCBlOyArK2kpIHsKKyAgICAgICAgICAgIGNoYXIgY2ggPSBkZXN0W2ldOworICAgICAgICAgICAgaWYgKGNoID49ICdcdUZFNzAnICYmIGNoIDw9ICdcdUZFRkMnKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzTGFtQWxlZkNoYXIoY2gpKSB7CisgICAgICAgICAgICAgICAgICAgICsrbGFjb3VudDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVzdFtpXSA9IChjaGFyKWNvbnZlcnRGRXRvMDZbY2ggLSAnXHVGRTcwJ107CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGxhY291bnQ7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBOYW1lICAgIDogc2hhcGVVbmljb2RlCisgICAgICogRnVuY3Rpb246IENvbnZlcnRzIGFuIEFyYWJpYyBVbmljb2RlIGJ1ZmZlciBpbiAwNnh4IFJhbmdlIGludG8gYSBzaGFwZWQKKyAgICAgKiAgICAgICAgICAgYXJhYmljIFVuaWNvZGUgYnVmZmVyIGluIEZFeHggUmFuZ2UKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBzaGFwZVVuaWNvZGUoY2hhcltdIGRlc3QsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXN0U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRhc2hrZWVsRmxhZykgeworCisKKyAgICAgICAgbm9ybWFsaXplKGRlc3QsIHN0YXJ0LCBsZW5ndGgpOworCisgICAgICAgIC8vIHJlc29sdmUgdGhlIGxpbmsgYmV0d2VlbiB0aGUgY2hhcmFjdGVycy4KKyAgICAgICAgLy8gQXJhYmljIGNoYXJhY3RlcnMgaGF2ZSBmb3VyIGZvcm1zOiBJc29sYXRlZCwgSW5pdGlhbCwgTWVkaWFsIGFuZCBGaW5hbC4KKyAgICAgICAgLy8gVGFzaGtlZWwgY2hhcmFjdGVycyBoYXZlIHR3bywgaXNvbGF0ZWQgb3IgbWVkaWFsLCBhbmQgc29tZXRpbWVzIG9ubHkgaXNvbGF0ZWQuCisgICAgICAgIC8vIHRhc2hrZWVsRmxhZyA9PSAwOiBzaGFwZSBub3JtYWxseSwgMTogc2hhcGUgaXNvbGF0ZWQsIDI6IGRvbid0IHNoYXBlCisKKyAgICAgICAgYm9vbGVhbiBsYW1hbGVmX2ZvdW5kID0gZmFsc2U7CisgICAgICAgIGludCBpID0gc3RhcnQgKyBsZW5ndGggLSAxOworICAgICAgICBpbnQgY3VyckxpbmsgPSBnZXRMaW5rKGRlc3RbaV0pOworICAgICAgICBpbnQgbmV4dExpbmsgPSAwOworICAgICAgICBpbnQgcHJldkxpbmsgPSAwOworICAgICAgICBpbnQgbGFzdExpbmsgPSAwOworICAgICAgICBpbnQgcHJldlBvcyA9IGk7CisgICAgICAgIGludCBsYXN0UG9zID0gaTsKKyAgICAgICAgaW50IG54ID0gLTI7CisgICAgICAgIGludCBudyA9IDA7CisKKyAgICAgICAgd2hpbGUgKGkgPj0gMCkgeworICAgICAgICAgICAgLy8gSWYgaGlnaCBieXRlIG9mIGN1cnJMaW5rID4gMCB0aGVuIHRoZXJlIG1pZ2h0IGJlIG1vcmUgdGhhbiBvbmUgc2hhcGUKKyAgICAgICAgICAgIGlmICgoY3VyckxpbmsgJiAnXHVGRjAwJykgPiAwIHx8IGlzVGFzaGtlZWxDaGFyKGRlc3RbaV0pKSB7CisgICAgICAgICAgICAgICAgbncgPSBpIC0gMTsKKyAgICAgICAgICAgICAgICBueCA9IC0yOworICAgICAgICAgICAgICAgIHdoaWxlIChueCA8IDApIHsgLy8gd2UgbmVlZCB0byBrbm93IGFib3V0IG5leHQgY2hhcgorICAgICAgICAgICAgICAgICAgICBpZiAobncgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5leHRMaW5rID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG54ID0gSW50ZWdlci5NQVhfVkFMVUU7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXh0TGluayA9IGdldExpbmsoZGVzdFtud10pOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChuZXh0TGluayAmIElSUkVMRVZBTlQpID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBueCA9IG53OworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLW53OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKCgoY3VyckxpbmsgJiBBTEVGVFlQRSkgPiAwKSAmJiAoKGxhc3RMaW5rICYgTEFNVFlQRSkgPiAwKSkgeworICAgICAgICAgICAgICAgICAgICBsYW1hbGVmX2ZvdW5kID0gdHJ1ZTsgCisgICAgICAgICAgICAgICAgICAgIGNoYXIgd0xhbWFsZWYgPSBjaGFuZ2VMYW1BbGVmKGRlc3RbaV0pOyAvLyBnZXQgZnJvbSAweDA2NUMtMHgwNjVmCisgICAgICAgICAgICAgICAgICAgIGlmICh3TGFtYWxlZiAhPSAnXHUwMDAwJykgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVwbGFjZSBhbGVmIGJ5IG1hcmtlciwgaXQgd2lsbCBiZSByZW1vdmVkIGxhdGVyCisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0W2ldID0gJ1x1ZmZmZic7CisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0W2xhc3RQb3NdID0gd0xhbWFsZWY7CisgICAgICAgICAgICAgICAgICAgICAgICBpID0gbGFzdFBvczsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGxhc3RMaW5rID0gcHJldkxpbms7CisgICAgICAgICAgICAgICAgICAgIGN1cnJMaW5rID0gZ2V0TGluayh3TGFtYWxlZik7IC8vIHJlcXVpcmVzICdcdTAwMDAnLCB1bmZvcnR1bmF0ZWx5CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gZ2V0IHRoZSBwcm9wZXIgc2hhcGUgYWNjb3JkaW5nIHRvIGxpbmsgYWJpbGl0eSBvZiBuZWlnaGJvcnMKKyAgICAgICAgICAgICAgICAvLyBhbmQgb2YgY2hhcmFjdGVyOyBkZXBlbmRzIG9uIHRoZSBvcmRlciBvZiB0aGUgc2hhcGVzCisgICAgICAgICAgICAgICAgLy8gKGlzb2xhdGVkLCBpbml0aWFsLCBtaWRkbGUsIGZpbmFsKSBpbiB0aGUgY29tcGF0aWJpbGl0eSBhcmVhCisKKyAgICAgICAgICAgICAgICBpbnQgZmxhZyA9IHNwZWNpYWxDaGFyKGRlc3RbaV0pOworCisgICAgICAgICAgICAgICAgaW50IHNoYXBlID0gc2hhcGVUYWJsZVtuZXh0TGluayAmIExJTktfTUFTS10KKyAgICAgICAgICAgICAgICAgICAgW2xhc3RMaW5rICYgTElOS19NQVNLXQorICAgICAgICAgICAgICAgICAgICBbY3VyckxpbmsgJiBMSU5LX01BU0tdOworCisgICAgICAgICAgICAgICAgaWYgKGZsYWcgPT0gMSkgeworICAgICAgICAgICAgICAgICAgICBzaGFwZSAmPSAweDE7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmbGFnID09IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRhc2hrZWVsRmxhZyA9PSAwICYmCisgICAgICAgICAgICAgICAgICAgICAgICAoKGxhc3RMaW5rICYgTElOS0wpICE9IDApICYmIAorICAgICAgICAgICAgICAgICAgICAgICAgKChuZXh0TGluayAmIExJTktSKSAhPSAwKSAmJiAKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RbaV0gIT0gJ1x1MDY0QycgJiYgCisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0W2ldICE9ICdcdTA2NEQnICYmCisgICAgICAgICAgICAgICAgICAgICAgICAhKChuZXh0TGluayAmIEFMRUZUWVBFKSA9PSBBTEVGVFlQRSAmJiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhc3RMaW5rICYgTEFNVFlQRSkgPT0gTEFNVFlQRSkpIHsKKwkJCisgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IDE7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IDA7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoZmxhZyA9PSAyKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh0YXNoa2VlbEZsYWcgPCAyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0W2ldID0gKGNoYXIpKCdcdUZFNzAnICsgaXJyZWxldmFudFBvc1tkZXN0W2ldIC0gJ1x1MDY0QiddICsgc2hhcGUpOworICAgICAgICAgICAgICAgICAgICB9IC8vIGVsc2UgbGVhdmUgdGFzaGtlZWwgYWxvbmUgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGRlc3RbaV0gPSAoY2hhcikoJ1x1RkU3MCcgKyAoY3VyckxpbmsgPj4gOCkgKyBzaGFwZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBtb3ZlIG9uZSBub3RjaCBmb3J3YXJkCisgICAgICAgICAgICBpZiAoKGN1cnJMaW5rICYgSVJSRUxFVkFOVCkgPT0gMCkgeworICAgICAgICAgICAgICAgIHByZXZMaW5rID0gbGFzdExpbms7CisgICAgICAgICAgICAgICAgbGFzdExpbmsgPSBjdXJyTGluazsKKyAgICAgICAgICAgICAgICBwcmV2UG9zID0gbGFzdFBvczsKKyAgICAgICAgICAgICAgICBsYXN0UG9zID0gaTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLS1pOworICAgICAgICAgICAgaWYgKGkgPT0gbngpIHsKKyAgICAgICAgICAgICAgICBjdXJyTGluayA9IG5leHRMaW5rOworICAgICAgICAgICAgICAgIG54ID0gLTI7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGkgIT0gLTEpIHsKKyAgICAgICAgICAgICAgICBjdXJyTGluayA9IGdldExpbmsoZGVzdFtpXSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiB3ZSBmb3VuZCBhIGxhbS9hbGVmIHBhaXIgaW4gdGhlIGJ1ZmZlciAKKyAgICAgICAgLy8gY2FsbCByZW1vdmVMYW1BbGVmU3BhY2VzIHRvIHJlbW92ZSB0aGUgc3BhY2VzIHRoYXQgd2VyZSBhZGRlZAorCisgICAgICAgIGlmIChsYW1hbGVmX2ZvdW5kKSB7CisgICAgICAgICAgICBkZXN0U2l6ZSA9IHJlbW92ZUxhbUFsZWZTcGFjZXMoZGVzdCwgc3RhcnQsIGxlbmd0aCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkZXN0U2l6ZSA9IGxlbmd0aDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIGRlc3RTaXplOworICAgIH0KKworICAgIC8qCisgICAgICogTmFtZSAgICA6IGRlU2hhcGVVbmljb2RlCisgICAgICogRnVuY3Rpb246IENvbnZlcnRzIGFuIEFyYWJpYyBVbmljb2RlIGJ1ZmZlciBpbiBGRXh4IFJhbmdlIGludG8gdW5zaGFwZWQKKyAgICAgKiAgICAgICAgICAgYXJhYmljIFVuaWNvZGUgYnVmZmVyIGluIDA2eHggUmFuZ2UKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBkZVNoYXBlVW5pY29kZShjaGFyW10gZGVzdCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlc3RTaXplKSB0aHJvd3MgQXJhYmljU2hhcGluZ0V4Y2VwdGlvbiB7CisKKyAgICAgICAgaW50IGxhbWFsZWZfY291bnQgPSBub3JtYWxpemUoZGVzdCwgc3RhcnQsIGxlbmd0aCk7CisKKyAgICAgICAgLy8gSWYgdGhlcmUgd2FzIGEgbGFtYWxlZiBpbiB0aGUgYnVmZmVyIGNhbGwgZXhwYW5kTGFtQWxlZgorICAgICAgICBpZiAobGFtYWxlZl9jb3VudCAhPSAwKSB7CisgICAgICAgICAgICAvLyBuZWVkIHRvIGFkanVzdCBkZXN0IHRvIGZpdCBleHBhbmRlZCBidWZmZXIuLi4gISEhCisgICAgICAgICAgICBkZXN0U2l6ZSA9IGV4cGFuZExhbUFsZWYoZGVzdCwgc3RhcnQsIGxlbmd0aCwgbGFtYWxlZl9jb3VudCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkZXN0U2l6ZSA9IGxlbmd0aDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBkZXN0U2l6ZTsKKyAgICB9CisKKyAgICBwcml2YXRlIGludCBpbnRlcm5hbFNoYXBlKGNoYXJbXSBzb3VyY2UsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNvdXJjZVN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNvdXJjZUxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJbXSBkZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlc3RTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXN0U2l6ZSkgdGhyb3dzIEFyYWJpY1NoYXBpbmdFeGNlcHRpb24geworCisgICAgICAgIGlmIChzb3VyY2VMZW5ndGggPT0gMCkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZGVzdFNpemUgPT0gMCkgeworICAgICAgICAgICAgaWYgKCgob3B0aW9ucyAmIExFVFRFUlNfTUFTSykgIT0gTEVUVEVSU19OT09QKSAmJgorICAgICAgICAgICAgICAgICgob3B0aW9ucyAmIExFTkdUSF9NQVNLKSA9PSBMRU5HVEhfR1JPV19TSFJJTkspKSB7CisJCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGN1bGF0ZVNpemUoc291cmNlLCBzb3VyY2VTdGFydCwgc291cmNlTGVuZ3RoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNvdXJjZUxlbmd0aDsgLy8gYnkgZGVmaW5pdGlvbgorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gYWx3YXlzIHVzZSB0ZW1wIGJ1ZmZlcgorICAgICAgICBjaGFyW10gdGVtcCA9IG5ldyBjaGFyW3NvdXJjZUxlbmd0aCAqIDJdOyAvLyBhbGwgbGFtYWxlZnMgcmVxdWlyaW5nIGV4cGFuc2lvbgorICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KHNvdXJjZSwgc291cmNlU3RhcnQsIHRlbXAsIDAsIHNvdXJjZUxlbmd0aCk7CisKKyAgICAgICAgaWYgKGlzTG9naWNhbCkgeworICAgICAgICAgICAgaW52ZXJ0QnVmZmVyKHRlbXAsIDAsIHNvdXJjZUxlbmd0aCk7CisgICAgICAgIH0KKworICAgICAgICBpbnQgb3V0cHV0U2l6ZSA9IHNvdXJjZUxlbmd0aDsKKworICAgICAgICBzd2l0Y2ggKG9wdGlvbnMgJiBMRVRURVJTX01BU0spIHsKKyAgICAgICAgY2FzZSBMRVRURVJTX1NIQVBFX1RBU0hLRUVMX0lTT0xBVEVEOgorICAgICAgICAgICAgb3V0cHV0U2l6ZSA9IHNoYXBlVW5pY29kZSh0ZW1wLCAwLCBzb3VyY2VMZW5ndGgsIGRlc3RTaXplLCAxKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgTEVUVEVSU19TSEFQRToKKyAgICAgICAgICAgIG91dHB1dFNpemUgPSBzaGFwZVVuaWNvZGUodGVtcCwgMCwgc291cmNlTGVuZ3RoLCBkZXN0U2l6ZSwgMCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIExFVFRFUlNfVU5TSEFQRToKKyAgICAgICAgICAgIG91dHB1dFNpemUgPSBkZVNoYXBlVW5pY29kZSh0ZW1wLCAwLCBzb3VyY2VMZW5ndGgsIGRlc3RTaXplKTsKKyAgICAgICAgICAgIGJyZWFrOyAKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgaWYgKG91dHB1dFNpemUgPiBkZXN0U2l6ZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEFyYWJpY1NoYXBpbmdFeGNlcHRpb24oIm5vdCBlbm91Z2ggcm9vbSBmb3IgcmVzdWx0IGRhdGEiKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgob3B0aW9ucyAmIERJR0lUU19NQVNLKSAhPSBESUdJVFNfTk9PUCkgeworICAgICAgICAgICAgY2hhciBkaWdpdEJhc2UgPSAnXHUwMDMwJzsgLy8gRXVyb3BlYW4gZGlnaXRzCisgICAgICAgICAgICBzd2l0Y2ggKG9wdGlvbnMgJiBESUdJVF9UWVBFX01BU0spIHsKKyAgICAgICAgICAgIGNhc2UgRElHSVRfVFlQRV9BTjoKKyAgICAgICAgICAgICAgICBkaWdpdEJhc2UgPSAnXHUwNjYwJzsgIC8vIEFyYWJpYy1JbmRpYyBkaWdpdHMKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBESUdJVF9UWVBFX0FOX0VYVEVOREVEOgorICAgICAgICAgICAgICAgIGRpZ2l0QmFzZSA9ICdcdTA2ZjAnOyAgLy8gRWFzdGVybiBBcmFiaWMtSW5kaWMgZGlnaXRzIChQZXJzaWFuIGFuZCBVcmR1KQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzd2l0Y2ggKG9wdGlvbnMgJiBESUdJVFNfTUFTSykgeworICAgICAgICAgICAgY2FzZSBESUdJVFNfRU4yQU46CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBpbnQgZGlnaXREZWx0YSA9IGRpZ2l0QmFzZSAtICdcdTAwMzAnOworICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG91dHB1dFNpemU7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBjaCA9IHRlbXBbaV07CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2ggPD0gJ1x1MDAzOScgJiYgY2ggPj0gJ1x1MDAzMCcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wW2ldICs9IGRpZ2l0RGVsdGE7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgRElHSVRTX0FOMkVOOgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY2hhciBkaWdpdFRvcCA9IChjaGFyKShkaWdpdEJhc2UgKyA5KTsKKyAgICAgICAgICAgICAgICAgICAgaW50IGRpZ2l0RGVsdGEgPSAnXHUwMDMwJyAtIGRpZ2l0QmFzZTsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvdXRwdXRTaXplOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgY2ggPSB0ZW1wW2ldOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoIDw9IGRpZ2l0VG9wICYmIGNoID49IGRpZ2l0QmFzZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBbaV0gKz0gZGlnaXREZWx0YTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBESUdJVFNfRU4yQU5fSU5JVF9MUjoKKyAgICAgICAgICAgICAgICBzaGFwZVRvQXJhYmljRGlnaXRzV2l0aENvbnRleHQodGVtcCwgMCwgb3V0cHV0U2l6ZSwgZGlnaXRCYXNlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgRElHSVRTX0VOMkFOX0lOSVRfQUw6CisgICAgICAgICAgICAgICAgc2hhcGVUb0FyYWJpY0RpZ2l0c1dpdGhDb250ZXh0KHRlbXAsIDAsIG91dHB1dFNpemUsIGRpZ2l0QmFzZSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoaXNMb2dpY2FsKSB7CisgICAgICAgICAgICBpbnZlcnRCdWZmZXIodGVtcCwgMCwgb3V0cHV0U2l6ZSk7CisgICAgICAgIH0KKyAgICAgIAorICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KHRlbXAsIDAsIGRlc3QsIGRlc3RTdGFydCwgb3V0cHV0U2l6ZSk7CisgICAgICAKKyAgICAgICAgcmV0dXJuIG91dHB1dFNpemU7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3RleHQvQXJhYmljU2hhcGluZ0V4Y2VwdGlvbi5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvQXJhYmljU2hhcGluZ0V4Y2VwdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmI1M2QzZGMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdGV4dC9BcmFiaWNTaGFwaW5nRXhjZXB0aW9uLmphdmEKQEAgLTAsMCArMSwxOCBAQAorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICBDb3B5cmlnaHQgKEMpIDIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyogICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKK3BhY2thZ2UgY29tLmlibS5pY3UudGV4dDsKKworLyoqCisgKiBUaHJvd24gYnkgQXJhYmljU2hhcGluZyB3aGVuIHRoZXJlIGlzIGEgc2hhcGluZyBlcnJvci4KKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitwdWJsaWMgZmluYWwgY2xhc3MgQXJhYmljU2hhcGluZ0V4Y2VwdGlvbiBleHRlbmRzIEV4Y2VwdGlvbiB7CisgICAgQXJhYmljU2hhcGluZ0V4Y2VwdGlvbihTdHJpbmcgbWVzc2FnZSkgeworICAgICAgICBzdXBlcihtZXNzYWdlKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvdGV4dC9CcmVha0RpY3Rpb25hcnkuamF2YSBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L0JyZWFrRGljdGlvbmFyeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjcwZTRhNmYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdGV4dC9CcmVha0RpY3Rpb25hcnkuamF2YQpAQCAtMCwwICsxLDMxNCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L3RleHQvQnJlYWtEaWN0aW9uYXJ5LmphdmEsdiAkCisgKiAkRGF0ZTogMjAwMi8xMi8wNSAwMToxNDozMiAkCisgKiAkUmV2aXNpb246IDEuOCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UudGV4dDsKKworaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5EYXRhSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5VbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5PdXRwdXRTdHJlYW1Xcml0ZXI7CitpbXBvcnQgamF2YS5pby5QcmludFdyaXRlcjsKK2ltcG9ydCBqYXZhLmlvLkZpbGVPdXRwdXRTdHJlYW07CisKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLkNvbXBhY3RCeXRlQXJyYXk7CisKKy8qKgorICogVGhpcyBpcyB0aGUgY2xhc3MgdGhhdCByZXByZXNlbnRzIHRoZSBsaXN0IG9mIGtub3duIHdvcmRzIHVzZWQgYnkKKyAqIERpY3Rpb25hcnlCYXNlZEJyZWFrSXRlcmF0b3IuICBUaGUgY29uY2VwdHVhbCBkYXRhIHN0cnVjdHVyZSB1c2VkCisgKiBoZXJlIGlzIGEgdHJpZTogdGhlcmUgaXMgYSBub2RlIGhhbmdpbmcgb2ZmIHRoZSByb290IG5vZGUgZm9yIGV2ZXJ5CisgKiBsZXR0ZXIgdGhhdCBjYW4gc3RhcnQgYSB3b3JkLiAgRWFjaCBvZiB0aGVzZSBub2RlcyBoYXMgYSBub2RlIGhhbmdpbmcKKyAqIG9mZiBvZiBpdCBmb3IgZXZlcnkgbGV0dGVyIHRoYXQgY2FuIGJlIHRoZSBzZWNvbmQgbGV0dGVyIG9mIGEgd29yZAorICogaWYgdGhpcyBub2RlIGlzIHRoZSBmaXJzdCBsZXR0ZXIsIGFuZCBzbyBvbi4gIFRoZSB0cmllIGlzIHJlcHJlc2VudGVkCisgKiBhcyBhIHR3by1kaW1lbnNpb25hbCBhcnJheSB0aGF0IGNhbiBiZSB0cmVhdGVkIGFzIGEgdGFibGUgb2Ygc3RhdGUKKyAqIHRyYW5zaXRpb25zLiAgSW5kZXhlcyBhcmUgdXNlZCB0byBjb21wcmVzcyB0aGlzIGFycmF5LCB0YWtpbmcKKyAqIGFkdmFudGFnZSBvZiB0aGUgZmFjdCB0aGF0IHRoaXMgYXJyYXkgd2lsbCBhbHdheXMgYmUgdmVyeSBzcGFyc2UuCisgKiBAaW50ZXJuYWwKKyAqLworcHVibGljIGNsYXNzIEJyZWFrRGljdGlvbmFyeSB7CisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyB0ZXN0aW5nIGFuZCBkZWJ1Z2dpbmcKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8qKiBAaW50ZXJuYWwgKi8KKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgYXJnc1tdKQorICAgICAgICAgICAgdGhyb3dzIEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiwgVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiwgSU9FeGNlcHRpb24geworICAgICAgICBTdHJpbmcgZmlsZW5hbWUgPSBhcmdzWzBdOworCisgICAgICAgIEJyZWFrRGljdGlvbmFyeSBkaWN0aW9uYXJ5ID0gbmV3IEJyZWFrRGljdGlvbmFyeShuZXcgRmlsZUlucHV0U3RyZWFtKGZpbGVuYW1lKSk7CisKKyAgICAgICAgUHJpbnRXcml0ZXIgb3V0ID0gbnVsbDsKKworICAgICAgICBpZihhcmdzLmxlbmd0aCA+PSAyKSB7CisgICAgICAgICAgICBvdXQgPSBuZXcgUHJpbnRXcml0ZXIobmV3IE91dHB1dFN0cmVhbVdyaXRlcihuZXcgRmlsZU91dHB1dFN0cmVhbShhcmdzWzFdKSwgIlVuaWNvZGVMaXR0bGUiKSk7CisgICAgICAgIH0KKworICAgICAgICBkaWN0aW9uYXJ5LnByaW50V29yZExpc3QoIiIsIDAsIG91dCk7CisKKyAgICAgICAgaWYgKG91dCAhPSBudWxsKSB7CisgICAgICAgICAgICBvdXQuY2xvc2UoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKiBAaW50ZXJuYWwgKi8KKyAgICBwdWJsaWMgdm9pZCBwcmludFdvcmRMaXN0KFN0cmluZyBwYXJ0aWFsV29yZCwgaW50IHN0YXRlLCBQcmludFdyaXRlciBvdXQpCisgICAgICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBpZiAoc3RhdGUgPT0gMHhGRkZGKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocGFydGlhbFdvcmQpOworICAgICAgICAgICAgaWYgKG91dCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgb3V0LnByaW50bG4ocGFydGlhbFdvcmQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1Db2xzOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpbnQgbmV3U3RhdGUgPSAoYXQoc3RhdGUsIGkpKSAmIDB4RkZGRjsKKworICAgICAgICAgICAgICAgIGlmIChuZXdTdGF0ZSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGNoYXIgbmV3Q2hhciA9IHJldmVyc2VDb2x1bW5NYXBbaV07CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBuZXdQYXJ0aWFsV29yZCA9IHBhcnRpYWxXb3JkOworCisgICAgICAgICAgICAgICAgICAgIGlmIChuZXdDaGFyICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld1BhcnRpYWxXb3JkICs9IG5ld0NoYXI7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBwcmludFdvcmRMaXN0KG5ld1BhcnRpYWxXb3JkLCBuZXdTdGF0ZSwgb3V0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBIG1hcCB1c2VkIHRvIGdvIGZyb20gY29sdW1uIG51bWJlcnMgdG8gY2hhcmFjdGVycy4gIFVzZWQgb25seQorICAgICAqIGZvciBkZWJ1Z2dpbmcgcmlnaHQgbm93LgorICAgICAqLworICAgIHByaXZhdGUgY2hhcltdIHJldmVyc2VDb2x1bW5NYXAgPSBudWxsOworCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBkYXRhIG1lbWJlcnMKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgLyoqCisgICAgICogTWFwcyBmcm9tIGNoYXJhY3RlcnMgdG8gY29sdW1uIG51bWJlcnMuICBUaGUgbWFpbiB1c2Ugb2YgdGhpcyBpcyB0bworICAgICAqIGF2b2lkIG1ha2luZyByb29tIGluIHRoZSBhcnJheSBmb3IgZW1wdHkgY29sdW1ucy4KKyAgICAgKi8KKyAgICBwcml2YXRlIENvbXBhY3RCeXRlQXJyYXkgY29sdW1uTWFwID0gbnVsbDsKKworICAgIC8qKgorICAgICAqIFRoZSBudW1iZXIgb2YgYWN0dWFsIGNvbHVtbnMgaW4gdGhlIHRhYmxlCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgbnVtQ29sczsKKworICAgIC8qKgorICAgICAqIENvbHVtbnMgYXJlIG9yZ2FuaXplZCBpbnRvIGdyb3VwcyBvZiAzMi4gIFRoaXMgc2F5cyBob3cgbWFueQorICAgICAqIGNvbHVtbiBncm91cHMuICAoV2UgY291bGQgY2FsY3VsYXRlIHRoaXMsIGJ1dCB3ZSBzdG9yZSB0aGUKKyAgICAgKiB2YWx1ZSB0byBhdm9pZCBoYXZpbmcgdG8gcmVwZWF0ZWRseSBjYWxjdWxhdGUgaXQuKQorICAgICAqLworICAgIHByaXZhdGUgaW50IG51bUNvbEdyb3VwczsKKworICAgIC8qKgorICAgICAqIFRoZSBhY3R1YWwgY29tcHJlc3NlZCBzdGF0ZSB0YWJsZS4gIEVhY2ggY29uY2VwdHVhbCByb3cgcmVwcmVzZW50cworICAgICAqIGEgc3RhdGUsIGFuZCB0aGUgY2VsbHMgaW4gaXQgY29udGFpbiB0aGUgcm93IG51bWJlcnMgb2YgdGhlIHN0YXRlcworICAgICAqIHRvIHRyYW5zaXRpb24gdG8gZm9yIGVhY2ggcG9zc2libGUgbGV0dGVyLiAgMCBpcyB1c2VkIHRvIGluZGljYXRlCisgICAgICogYW4gaWxsZWdhbCBjb21iaW5hdGlvbiBvZiBsZXR0ZXJzIChpLmUuLCB0aGUgZXJyb3Igc3RhdGUpLiAgVGhlCisgICAgICogdGFibGUgaXMgY29tcHJlc3NlZCBieSBlbGltaW5hdGluZyBhbGwgdGhlIHVucG9wdWxhdGVkIChpLmUuLCB6ZXJvKQorICAgICAqIGNlbGxzLiAgTXVsdGlwbGUgY29uY2VwdHVhbCByb3dzIGNhbiB0aGVuIGJlIGRvdWJsZWQgdXAgaW4gYSBzaW5nbGUKKyAgICAgKiBwaHlzaWNhbCByb3cgYnkgc2xpZGluZyB0aGVtIHVwIGFuZCBwb3NzaWJseSBzaGlmdGluZyB0aGVtIHRvIG9uZQorICAgICAqIHNpZGUgb3IgdGhlIG90aGVyIHNvIHRoZSBwb3B1bGF0ZWQgY2VsbHMgZG9uJ3QgY29sbGlkZS4gIEluZGV4ZXMKKyAgICAgKiBhcmUgdXNlZCB0byBpZGVudGlmeSB1bnBvcHVsYXRlZCBjZWxscyBhbmQgdG8gbG9jYXRlIHBvcHVsYXRlZCBjZWxscy4KKyAgICAgKi8KKyAgICBwcml2YXRlIHNob3J0W10gdGFibGUgPSBudWxsOworCisgICAgLyoqCisgICAgICogVGhpcyBpbmRleCBtYXBzIGxvZ2ljYWwgcm93IG51bWJlcnMgdG8gcGh5c2ljYWwgcm93IG51bWJlcnMKKyAgICAgKi8KKyAgICBwcml2YXRlIHNob3J0W10gcm93SW5kZXggPSBudWxsOworCisgICAgLyoqCisgICAgICogQSBiaXRtYXAgaXMgdXNlZCB0byB0ZWxsIHdoaWNoIGNlbGxzIGluIHRoZSBjb21jZXB0dWFsIHRhYmxlIGFyZQorICAgICAqIHBvcHVsYXRlZC4gIFRoaXMgYXJyYXkgY29udGFpbnMgYWxsIHRoZSB1bmlxdWUgYml0IGNvbWJpbmF0aW9ucworICAgICAqIGluIHRoYXQgYml0bWFwLiAgSWYgdGhlIHRhYmxlIGlzIG1vcmUgdGhhbiAzMiBjb2x1bW5zIHdpZGUsCisgICAgICogc3VjY2Vzc2l2ZSBlbnRyaWVzIGluIHRoaXMgYXJyYXkgYXJlIHVzZWQgZm9yIGEgc2luZ2xlIHJvdy4KKyAgICAgKi8KKyAgICBwcml2YXRlIGludFtdIHJvd0luZGV4RmxhZ3MgPSBudWxsOworCisgICAgLyoqCisgICAgICogVGhpcyBpbmRleCBtYXBzIGZyb20gYSBsb2dpY2FsIHJvdyBudW1iZXIgaW50byB0aGUgYml0bWFwIHRhYmxlIGFib3ZlLgorICAgICAqIChUaGlzIGtlZXBzIHVzIGZyb20gc3RvcmluZyBkdXBsaWNhdGUgYml0bWFwIGNvbWJpbmF0aW9ucy4pICBTaW5jZSB0aGVyZQorICAgICAqIGFyZSBhIGxvdCBvZiByb3dzIHdpdGggb25seSBvbmUgcG9wdWxhdGVkIGNlbGwsIGluc3RlYWQgb2Ygd2FzdGluZyBzcGFjZQorICAgICAqIGluIHRoZSBiaXRtYXAgdGFibGUsIHdlIGp1c3Qgc3RvcmUgYSBuZWdhdGl2ZSBudW1iZXIgaW4gdGhpcyBpbmRleCBmb3IKKyAgICAgKiByb3dzIHdpdGggb25lIHBvcHVsYXRlZCBjZWxsLiAgVGhlIGFic29sdXRlIHZhbHVlIG9mIHRoYXQgbnVtYmVyIGlzCisgICAgICogdGhlIGNvbHVtbiBudW1iZXIgb2YgdGhlIHBvcHVsYXRlZCBjZWxsLgorICAgICAqLworICAgIHByaXZhdGUgc2hvcnRbXSByb3dJbmRleEZsYWdzSW5kZXggPSBudWxsOworCisgICAgLyoqCisgICAgICogRm9yIGVhY2ggbG9naWNhbCByb3csIHRoaXMgaW5kZXggY29udGFpbnMgYSBjb25zdGFudCB0aGF0IGlzIGFkZGVkIHRvCisgICAgICogdGhlIGxvZ2ljYWwgY29sdW1uIG51bWJlciB0byBnZXQgdGhlIHBoeXNpY2FsIGNvbHVtbiBudW1iZXIKKyAgICAgKi8KKyAgICBwcml2YXRlIGJ5dGVbXSByb3dJbmRleFNoaWZ0cyA9IG51bGw7CisKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIGRlc2VyaWFsaXphdGlvbgorICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAvKiogQGludGVybmFsICovCisgICAgcHVibGljIEJyZWFrRGljdGlvbmFyeShJbnB1dFN0cmVhbSBkaWN0aW9uYXJ5U3RyZWFtKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICByZWFkRGljdGlvbmFyeUZpbGUobmV3IERhdGFJbnB1dFN0cmVhbShkaWN0aW9uYXJ5U3RyZWFtKSk7CisgICAgfQorCisgICAgLyoqIEBpbnRlcm5hbCAqLworICAgIHB1YmxpYyB2b2lkIHJlYWREaWN0aW9uYXJ5RmlsZShEYXRhSW5wdXRTdHJlYW0gaW4pIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGludCBsOworCisgICAgICAgIC8vIHJlYWQgaW4gdGhlIHZlcnNpb24gbnVtYmVyIChyaWdodCBub3cgd2UganVzdCBpZ25vcmUgaXQpCisgICAgICAgIGluLnJlYWRJbnQoKTsKKworICAgICAgICAvLyByZWFkIGluIHRoZSBjb2x1bW4gbWFwICh0aGlzIGlzIHNlcmlhbGl6ZWQgaW4gaXRzIGludGVybmFsIGZvcm06CisgICAgICAgIC8vIGFuIGluZGV4IGFycmF5IGZvbGxvd2VkIGJ5IGEgZGF0YSBhcnJheSkKKyAgICAgICAgbCA9IGluLnJlYWRJbnQoKTsKKyAgICAgICAgY2hhcltdIHRlbXAgPSBuZXcgY2hhcltsXTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0ZW1wLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgdGVtcFtpXSA9IChjaGFyKWluLnJlYWRTaG9ydCgpOworICAgICAgICBsID0gaW4ucmVhZEludCgpOworICAgICAgICBieXRlW10gdGVtcDIgPSBuZXcgYnl0ZVtsXTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0ZW1wMi5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgIHRlbXAyW2ldID0gaW4ucmVhZEJ5dGUoKTsKKyAgICAgICAgY29sdW1uTWFwID0gbmV3IENvbXBhY3RCeXRlQXJyYXkodGVtcCwgdGVtcDIpOworCisgICAgICAgIC8vIHJlYWQgaW4gbnVtQ29scyBhbmQgbnVtQ29sR3JvdXBzCisgICAgICAgIG51bUNvbHMgPSBpbi5yZWFkSW50KCk7CisgICAgICAgIG51bUNvbEdyb3VwcyA9IGluLnJlYWRJbnQoKTsKKworICAgICAgICAvLyByZWFkIGluIHRoZSByb3ctbnVtYmVyIGluZGV4CisgICAgICAgIGwgPSBpbi5yZWFkSW50KCk7CisgICAgICAgIHJvd0luZGV4ID0gbmV3IHNob3J0W2xdOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJvd0luZGV4Lmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgcm93SW5kZXhbaV0gPSBpbi5yZWFkU2hvcnQoKTsKKworICAgICAgICAvLyBsb2FkIGluIHRoZSBwb3B1bGF0ZWQtY2VsbHMgYml0bWFwOiBpbmRleCBmaXJzdCwgdGhlbiBiaXRtYXAgbGlzdAorICAgICAgICBsID0gaW4ucmVhZEludCgpOworICAgICAgICByb3dJbmRleEZsYWdzSW5kZXggPSBuZXcgc2hvcnRbbF07CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcm93SW5kZXhGbGFnc0luZGV4Lmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgcm93SW5kZXhGbGFnc0luZGV4W2ldID0gaW4ucmVhZFNob3J0KCk7CisgICAgICAgIGwgPSBpbi5yZWFkSW50KCk7CisgICAgICAgIHJvd0luZGV4RmxhZ3MgPSBuZXcgaW50W2xdOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJvd0luZGV4RmxhZ3MubGVuZ3RoOyBpKyspCisgICAgICAgICAgICByb3dJbmRleEZsYWdzW2ldID0gaW4ucmVhZEludCgpOworCisgICAgICAgIC8vIGxvYWQgaW4gdGhlIHJvdy1zaGlmdCBpbmRleAorICAgICAgICBsID0gaW4ucmVhZEludCgpOworICAgICAgICByb3dJbmRleFNoaWZ0cyA9IG5ldyBieXRlW2xdOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJvd0luZGV4U2hpZnRzLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgcm93SW5kZXhTaGlmdHNbaV0gPSBpbi5yZWFkQnl0ZSgpOworCisgICAgICAgIC8vIGZpbmFsbHksIGxvYWQgaW4gdGhlIGFjdHVhbCBzdGF0ZSB0YWJsZQorICAgICAgICBsID0gaW4ucmVhZEludCgpOworICAgICAgICB0YWJsZSA9IG5ldyBzaG9ydFtsXTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0YWJsZS5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgIHRhYmxlW2ldID0gaW4ucmVhZFNob3J0KCk7CisKKyAgICAgICAgLy8gdGhpcyBkYXRhIHN0cnVjdHVyZSBpcyBvbmx5IG5lY2Vzc2FyeSBmb3IgdGVzdGluZyBhbmQgZGVidWdnaW5nIHB1cnBvc2VzCisgICAgICAgIHJldmVyc2VDb2x1bW5NYXAgPSBuZXcgY2hhcltudW1Db2xzXTsKKyAgICAgICAgZm9yIChjaGFyIGMgPSAwOyBjIDwgMHhmZmZmOyBjKyspIHsKKyAgICAgICAgICAgIGludCBjb2wgPSBjb2x1bW5NYXAuZWxlbWVudEF0KGMpOworICAgICAgICAgICAgaWYgKGNvbCAhPSAwKSB7CisgICAgICAgICAgICAgICByZXZlcnNlQ29sdW1uTWFwW2NvbF0gPSBjOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gY2xvc2UgdGhlIHN0cmVhbQorICAgICAgICBpbi5jbG9zZSgpOworICAgIH0KKworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gYWNjZXNzIHRvIHRoZSB3b3JkcworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAvKioKKyAgICAgKiBVc2VzIHRoZSBjb2x1bW4gbWFwIHRvIG1hcCB0aGUgY2hhcmFjdGVyIHRvIGEgY29sdW1uIG51bWJlciwgdGhlbgorICAgICAqIHBhc3NlcyB0aGUgcm93IGFuZCBjb2x1bW4gbnVtYmVyIHRvIHRoZSBvdGhlciB2ZXJzaW9uIG9mIGF0KCkKKyAgICAgKiBAcGFyYW0gcm93IFRoZSBjdXJyZW50IHN0YXRlCisgICAgICogQHBhcmFtIGNoIFRoZSBjaGFyYWN0ZXIgd2hvc2UgY29sdW1uIHdlJ3JlIGludGVyZXN0ZWQgaW4KKyAgICAgKiBAcmV0dXJuIFRoZSBuZXcgc3RhdGUgdG8gdHJhbnNpdGlvbiB0bworICAgICAqIEBpbnRlcm5hbAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzaG9ydCBhdChpbnQgcm93LCBjaGFyIGNoKSB7CisgICAgICAgIGludCBjb2wgPSBjb2x1bW5NYXAuZWxlbWVudEF0KGNoKTsKKyAgICAgICAgcmV0dXJuIGF0KHJvdywgY29sKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBpbiB0aGUgY2VsbCB3aXRoIHRoZSBzcGVjaWZpZWQgKGxvZ2ljYWwpIHJvdyBhbmQKKyAgICAgKiBjb2x1bW4gbnVtYmVycy4gIEluIERpY3Rpb25hcnlCYXNlZEJyZWFrSXRlcmF0b3IsIHRoZSByb3cgbnVtYmVyIGlzCisgICAgICogYSBzdGF0ZSBudW1iZXIsIHRoZSBjb2x1bW4gbnVtYmVyIGlzIGFuIGlucHV0LCBhbmQgdGhlIHJldHVybiB2YWx1ZQorICAgICAqIGlzIHRoZSByb3cgbnVtYmVyIG9mIHRoZSBuZXcgc3RhdGUgdG8gdHJhbnNpdGlvbiB0by4gICgwIGlzIHRoZQorICAgICAqICJlcnJvciIgc3RhdGUsIGFuZCAtMSBpcyB0aGUgImVuZCBvZiB3b3JkIiBzdGF0ZSBpbiBhIGRpY3Rpb25hcnkpCisgICAgICogQHBhcmFtIHJvdyBUaGUgcm93IG51bWJlciBvZiB0aGUgY3VycmVudCBzdGF0ZQorICAgICAqIEBwYXJhbSBjb2wgVGhlIGNvbHVtbiBudW1iZXIgb2YgdGhlIGlucHV0IGNoYXJhY3RlciAoMCBtZWFucyAibm90IGEKKyAgICAgKiBkaWN0aW9uYXJ5IGNoYXJhY3RlciIpCisgICAgICogQHJldHVybiBUaGUgcm93IG51bWJlciBvZiB0aGUgbmV3IHN0YXRlIHRvIHRyYW5zaXRpb24gdG8KKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc2hvcnQgYXQoaW50IHJvdywgaW50IGNvbCkgeworICAgICAgICBpZiAoY2VsbElzUG9wdWxhdGVkKHJvdywgY29sKSkgeworICAgICAgICAgICAgLy8gd2UgbWFwIGZyb20gbG9naWNhbCB0byBwaHlzaWNhbCByb3cgbnVtYmVyIGJ5IGxvb2tpbmcgdXAgdGhlCisgICAgICAgICAgICAvLyBtYXBwaW5nIGluIHJvd0luZGV4OyB3ZSBtYXAgZnJvbSBsb2dpY2FsIGNvbHVtbiBudW1iZXIgdG8KKyAgICAgICAgICAgIC8vIHBoeXNpY2FsIGNvbHVtbiBudW1iZXIgYnkgbG9va2luZyB1cCBhIHNoaWZ0IHZhbHVlIGZvciB0aGlzCisgICAgICAgICAgICAvLyBsb2dpY2FsIHJvdyBhbmQgb2Zmc2V0dGluZyB0aGUgbG9naWNhbCBjb2x1bW4gbnVtYmVyIGJ5CisgICAgICAgICAgICAvLyB0aGUgc2hpZnQgYW1vdW50LiAgVGhlbiB3ZSBjYW4gdXNlIGludGVybmFsQXQoKSB0byBhY3R1YWxseQorICAgICAgICAgICAgLy8gZ2V0IHRoZSB2YWx1ZSBvdXQgb2YgdGhlIHRhYmxlLgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsQXQocm93SW5kZXhbcm93XSwgY29sICsgcm93SW5kZXhTaGlmdHNbcm93XSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEdpdmVuIChsb2dpY2FsKSByb3cgYW5kIGNvbHVtbiBudW1iZXJzLCByZXR1cm5zIHRydWUgaWYgdGhlCisgICAgICogY2VsbCBpbiB0aGF0IHBvc2l0aW9uIGlzIHBvcHVsYXRlZAorICAgICAqLworICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiBjZWxsSXNQb3B1bGF0ZWQoaW50IHJvdywgaW50IGNvbCkgeworICAgICAgICAvLyBsb29rIHVwIHRoZSBlbnRyeSBpbiB0aGUgYml0bWFwIGluZGV4IGZvciB0aGUgc3BlY2lmaWVkIHJvdy4KKyAgICAgICAgLy8gSWYgaXQncyBhIG5lZ2F0aXZlIG51bWJlciwgaXQncyB0aGUgY29sdW1uIG51bWJlciBvZiB0aGUgb25seQorICAgICAgICAvLyBwb3B1bGF0ZWQgY2VsbCBpbiB0aGUgcm93CisgICAgICAgIGlmIChyb3dJbmRleEZsYWdzSW5kZXhbcm93XSA8IDApIHsKKyAgICAgICAgICAgIHJldHVybiBjb2wgPT0gLXJvd0luZGV4RmxhZ3NJbmRleFtyb3ddOworICAgICAgICB9CisKKyAgICAgICAgLy8gaWYgaXQncyBhIHBvc2l0aXZlIG51bWJlciwgaXQncyB0aGUgb2Zmc2V0IG9mIGFuIGVudHJ5IGluIHRoZSBiaXRtYXAKKyAgICAgICAgLy8gbGlzdC4gIElmIHRoZSB0YWJsZSBpcyBtb3JlIHRoYW4gMzIgY29sdW1ucyB3aWRlLCB0aGUgYml0bWFwIGlzIHN0b3JlZAorICAgICAgICAvLyBzdWNjZXNzaXZlIGVudHJpZXMgaW4gdGhlIGJpdG1hcCBsaXN0LCBzbyB3ZSBoYXZlIHRvIGRpdmlkZSB0aGUgY29sdW1uCisgICAgICAgIC8vIG51bWJlciBieSAzMiBhbmQgb2Zmc2V0IHRoZSBudW1iZXIgd2UgZ290IG91dCBvZiB0aGUgaW5kZXggYnkgdGhlIHJlc3VsdC4KKyAgICAgICAgLy8gT25jZSB3ZSBoYXZlIHRoZSBhcHByb3ByaWF0ZSBwaWVjZSBvZiB0aGUgYml0bWFwLCB0ZXN0IHRoZSBhcHByb3ByaWF0ZQorICAgICAgICAvLyBiaXQgYW5kIHJldHVybiB0aGUgcmVzdWx0LgorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGludCBmbGFncyA9IHJvd0luZGV4RmxhZ3Nbcm93SW5kZXhGbGFnc0luZGV4W3Jvd10gKyAoY29sID4+IDUpXTsKKyAgICAgICAgICAgIHJldHVybiAoZmxhZ3MgJiAoMSA8PCAoY29sICYgMHgxZikpKSAhPSAwOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogSW1wbGVtZW50YXRpb24gb2YgYXQoKSB3aGVuIHdlIGtub3cgdGhlIHNwZWNpZmllZCBjZWxsIGlzIHBvcHVsYXRlZC4KKyAgICAgKiBAcGFyYW0gcm93IFRoZSBQSFlTSUNBTCByb3cgbnVtYmVyIG9mIHRoZSBjZWxsCisgICAgICogQHBhcmFtIGNvbCBUaGUgUEhZU0lDQUwgY29sdW1uIG51bWJlciBvZiB0aGUgY2VsbAorICAgICAqIEByZXR1cm4gVGhlIHZhbHVlIHN0b3JlZCBpbiB0aGUgY2VsbAorICAgICAqLworICAgIHByaXZhdGUgZmluYWwgc2hvcnQgaW50ZXJuYWxBdChpbnQgcm93LCBpbnQgY29sKSB7CisgICAgICAgIC8vIHRoZSB0YWJsZSBpcyBhIG9uZS1kaW1lbnNpb25hbCBhcnJheSwgc28gdGhpcyBqdXN0IGRvZXMgdGhlIG1hdGggbmVjZXNzYXJ5CisgICAgICAgIC8vIHRvIHRyZWF0IGl0IGFzIGEgdHdvLWRpbWVuc2lvbmFsIGFycmF5ICh3ZSBkb24ndCBqdXN0IHVzZSBhIHR3by1kaW1lbnNpb25hbAorICAgICAgICAvLyBhcnJheSBiZWNhdXNlIHR3by1kaW1lbnNpb25hbCBhcnJheXMgYXJlIGluZWZmaWNpZW50IGluIEphdmEpCisgICAgICAgIHJldHVybiB0YWJsZVtyb3cgKiBudW1Db2xzICsgY29sXTsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS90ZXh0L0JyZWFrSXRlcmF0b3IuamF2YSBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L0JyZWFrSXRlcmF0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4yOTdiODlkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvQnJlYWtJdGVyYXRvci5qYXZhCkBAIC0wLDAgKzEsNzE0IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvdGV4dC9CcmVha0l0ZXJhdG9yLmphdmEsdiAkCisgKiAkRGF0ZTogMjAwMi8xMi8xMiAyMzoyNjo1NiAkCisgKiAkUmV2aXNpb246IDEuMTQgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LnRleHQ7CisKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLklDVUxvY2FsZURhdGE7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5JQ1VMb2NhbGVTZXJ2aWNlOworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuSUNVTG9jYWxlU2VydmljZS5Mb2NhbGVLZXk7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5JQ1VMb2NhbGVTZXJ2aWNlLklDVVJlc291cmNlQnVuZGxlRmFjdG9yeTsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLklDVVNlcnZpY2U7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5JQ1VTZXJ2aWNlLkZhY3Rvcnk7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5JQ1VTZXJ2aWNlLktleTsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLkxvY2FsZVV0aWxpdHk7CisKK2ltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5sYW5nLnJlZi5Tb2Z0UmVmZXJlbmNlOworaW1wb3J0IGphdmEubmV0LlVSTDsKK2ltcG9ydCBqYXZhLnRleHQuQ2hhcmFjdGVySXRlcmF0b3I7CitpbXBvcnQgamF2YS50ZXh0LlN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CitpbXBvcnQgamF2YS51dGlsLk1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGU7CitpbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKKworLyoqCisgKiBBIGNsYXNzIHRoYXQgbG9jYXRlcyBib3VuZGFyaWVzIGluIHRleHQuICBUaGlzIGNsYXNzIGRlZmluZXMgYSBwcm90b2NvbCBmb3IKKyAqIG9iamVjdHMgdGhhdCBicmVhayB1cCBhIHBpZWNlIG9mIG5hdHVyYWwtbGFuZ3VhZ2UgdGV4dCBhY2NvcmRpbmcgdG8gYSBzZXQKKyAqIG9mIGNyaXRlcmlhLiAgSW5zdGFuY2VzIG9yIHN1YmNsYXNzZXMgb2YgQnJlYWtJdGVyYXRvciBjYW4gYmUgcHJvdmlkZWQsIGZvcgorICogZXhhbXBsZSwgdG8gYnJlYWsgYSBwaWVjZSBvZiB0ZXh0IGludG8gd29yZHMsIHNlbnRlbmNlcywgb3IgbG9naWNhbCBjaGFyYWN0ZXJzCisgKiBhY2NvcmRpbmcgdG8gdGhlIGNvbnZlbnRpb25zIG9mIHNvbWUgbGFuZ3VhZ2Ugb3IgZ3JvdXAgb2YgbGFuZ3VhZ2VzLgorICoKKyAqIFdlIHByb3ZpZGUgZml2ZSBidWlsdC1pbiB0eXBlcyBvZiBCcmVha0l0ZXJhdG9yOgorICogPHVsPjxsaT5nZXRUaXRsZUluc3RhbmNlKCkgcmV0dXJucyBhIEJyZWFrSXRlcmF0b3IgdGhhdCBsb2NhdGVzIGJvdW5kYXJpZXMKKyAqIGJldHdlZW4gdGl0bGUgYnJlYWtzLjwvbGk+CisgKiA8dWw+PGxpPmdldFNlbnRlbmNlSW5zdGFuY2UoKSByZXR1cm5zIGEgQnJlYWtJdGVyYXRvciB0aGF0IGxvY2F0ZXMgYm91bmRhcmllcworICogYmV0d2VlbiBzZW50ZW5jZXMuICBUaGlzIGlzIHVzZWZ1bCBmb3IgdHJpcGxlLWNsaWNrIHNlbGVjdGlvbiwgZm9yIGV4YW1wbGUuCisgKiA8bGk+Z2V0V29yZEluc3RhbmNlKCkgcmV0dXJucyBhIEJyZWFrSXRlcmF0b3IgdGhhdCBsb2NhdGVzIGJvdW5kYXJpZXMgYmV0d2VlbgorICogd29yZHMuICBUaGlzIGlzIHVzZWZ1bCBmb3IgZG91YmxlLWNsaWNrIHNlbGVjdGlvbiBvciAiZmluZCB3aG9sZSB3b3JkcyIgc2VhcmNoZXMuCisgKiBUaGlzIHR5cGUgb2YgQnJlYWtJdGVyYXRvciBtYWtlcyBzdXJlIHRoZXJlIGlzIGEgYm91bmRhcnkgcG9zaXRpb24gYXQgdGhlCisgKiBiZWdpbm5pbmcgYW5kIGVuZCBvZiBlYWNoIGxlZ2FsIHdvcmQuICAoTnVtYmVycyBjb3VudCBhcyB3b3JkcywgdG9vLikgIFdoaXRlc3BhY2UKKyAqIGFuZCBwdW5jdHVhdGlvbiBhcmUga2VwdCBzZXBhcmF0ZSBmcm9tIHJlYWwgd29yZHMuCisgKiA8bGk+Z2V0TGluZUluc3RhbmNlKCkgcmV0dXJucyBhIEJyZWFrSXRlcmF0b3IgdGhhdCBsb2NhdGVzIHBvc2l0aW9ucyB3aGVyZSBpdCBpcworICogbGVnYWwgZm9yIGEgdGV4dCBlZGl0b3IgdG8gd3JhcCBsaW5lcy4gIFRoaXMgaXMgc2ltaWxhciB0byB3b3JkIGJyZWFraW5nLCBidXQKKyAqIG5vdCB0aGUgc2FtZTogcHVuY3R1YXRpb24gYW5kIHdoaXRlc3BhY2UgYXJlIGdlbmVyYWxseSBrZXB0IHdpdGggd29yZHMgKHlvdSBkb24ndAorICogd2FudCBhIGxpbmUgdG8gc3RhcnQgd2l0aCB3aGl0ZXNwYWNlLCBmb3IgZXhhbXBsZSksIGFuZCBzb21lIHNwZWNpYWwgY2hhcmFjdGVycworICogY2FuIGZvcmNlIGEgcG9zaXRpb24gdG8gYmUgY29uc2lkZXJlZCBhIGxpbmUtYnJlYWsgcG9zaXRpb24gb3IgcHJldmVudCBhIHBvc2l0aW9uCisgKiBmcm9tIGJlaW5nIGEgbGluZS1icmVhayBwb3NpdGlvbi4KKyAqIDxsaT5nZXRDaGFyYWN0ZXJJbnN0YW5jZSgpIHJldHVybnMgYSBCcmVha0l0ZXJhdG9yIHRoYXQgbG9jYXRlcyBib3VuZGFyaWVzIGJldHdlZW4KKyAqIGxvZ2ljYWwgY2hhcmFjdGVycy4gIEJlY2F1c2Ugb2YgdGhlIHN0cnVjdHVyZSBvZiB0aGUgVW5pY29kZSBlbmNvZGluZywgYSBsb2dpY2FsCisgKiBjaGFyYWN0ZXIgbWF5IGJlIHN0b3JlZCBpbnRlcm5hbGx5IGFzIG1vcmUgdGhhbiBvbmUgVW5pY29kZSBjb2RlIHBvaW50LiAgKEEgd2l0aCBhbgorICogdW1sYXV0IG1heSBiZSBzdG9yZWQgYXMgYW4gYSBmb2xsb3dlZCBieSBhIHNlcGFyYXRlIGNvbWJpbmluZyB1bWxhdXQgY2hhcmFjdGVyLAorICogZm9yIGV4YW1wbGUsIGJ1dCB0aGUgdXNlciBzdGlsbCB0aGlua3Mgb2YgaXQgYXMgb25lIGNoYXJhY3Rlci4pICBUaGlzIGl0ZXJhdG9yIGFsbG93cworICogdmFyaW91cyBwcm9jZXNzZXMgKGVzcGVjaWFsbHkgdGV4dCBlZGl0b3JzKSB0byB0cmVhdCBhcyBjaGFyYWN0ZXJzIHRoZSB1bml0cyBvZiB0ZXh0CisgKiB0aGF0IGEgdXNlciB3b3VsZCB0aGluayBvZiBhcyBjaGFyYWN0ZXJzLCByYXRoZXIgdGhhbiB0aGUgdW5pdHMgb2YgdGV4dCB0aGF0IHRoZQorICogY29tcHV0ZXIgc2VlcyBhcyAiY2hhcmFjdGVycyIuPC91bD4KKyAqCisgKiBCcmVha0l0ZXJhdG9yJ3MgaW50ZXJmYWNlIGZvbGxvd3MgYW4gIml0ZXJhdG9yIiBtb2RlbCAoaGVuY2UgdGhlIG5hbWUpLCBtZWFuaW5nIGl0CisgKiBoYXMgYSBjb25jZXB0IG9mIGEgImN1cnJlbnQgcG9zaXRpb24iIGFuZCBtZXRob2RzIGxpa2UgZmlyc3QoKSwgbGFzdCgpLCBuZXh0KCksCisgKiBhbmQgcHJldmlvdXMoKSB0aGF0IHVwZGF0ZSB0aGUgY3VycmVudCBwb3NpdGlvbi4gIEFsbCBCcmVha0l0ZXJhdG9ycyB1cGhvbGQgdGhlCisgKiBmb2xsb3dpbmcgaW52YXJpYW50czoKKyAqIDx1bD48bGk+VGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIHRoZSB0ZXh0IGFyZSBhbHdheXMgdHJlYXRlZCBhcyBib3VuZGFyeSBwb3NpdGlvbnMuCisgKiA8bGk+VGhlIGN1cnJlbnQgcG9zaXRpb24gb2YgdGhlIGl0ZXJhdG9yIGlzIGFsd2F5cyBhIGJvdW5kYXJ5IHBvc2l0aW9uIChyYW5kb20tCisgKiBhY2Nlc3MgbWV0aG9kcyBtb3ZlIHRoZSBpdGVyYXRvciB0byB0aGUgbmVhcmVzdCBib3VuZGFyeSBwb3NpdGlvbiBiZWZvcmUgb3IKKyAqIGFmdGVyIHRoZSBzcGVjaWZpZWQgcG9zaXRpb24sIG5vdCBfdG9fIHRoZSBzcGVjaWZpZWQgcG9zaXRpb24pLgorICogPGxpPkRPTkUgaXMgdXNlZCBhcyBhIGZsYWcgdG8gaW5kaWNhdGUgd2hlbiBpdGVyYXRpb24gaGFzIHN0b3BwZWQuICBET05FIGlzIG9ubHkKKyAqIHJldHVybmVkIHdoZW4gdGhlIGN1cnJlbnQgcG9zaXRpb24gaXMgdGhlIGVuZCBvZiB0aGUgdGV4dCBhbmQgdGhlIHVzZXIgY2FsbHMgbmV4dCgpLAorICogb3Igd2hlbiB0aGUgY3VycmVudCBwb3NpdGlvbiBpcyB0aGUgYmVnaW5uaW5nIG9mIHRoZSB0ZXh0IGFuZCB0aGUgdXNlciBjYWxscworICogcHJldmlvdXMoKS4KKyAqIDxsaT5CcmVhayBwb3NpdGlvbnMgYXJlIG51bWJlcmVkIGJ5IHRoZSBwb3NpdGlvbnMgb2YgdGhlIGNoYXJhY3RlcnMgdGhhdCBmb2xsb3cKKyAqIHRoZW0uICBUaHVzLCB1bmRlciBub3JtYWwgY2lyY3Vtc3RhbmNlcywgdGhlIHBvc2l0aW9uIGJlZm9yZSB0aGUgZmlyc3QgY2hhcmFjdGVyCisgKiBpcyAwLCB0aGUgcG9zaXRpb24gYWZ0ZXIgdGhlIGZpcnN0IGNoYXJhY3RlciBpcyAxLCBhbmQgdGhlIHBvc2l0aW9uIGFmdGVyIHRoZQorICogbGFzdCBjaGFyYWN0ZXIgaXMgMSBwbHVzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZy4KKyAqIDxsaT5UaGUgY2xpZW50IGNhbiBjaGFuZ2UgdGhlIHBvc2l0aW9uIG9mIGFuIGl0ZXJhdG9yLCBvciB0aGUgdGV4dCBpdCBhbmFseXplcywKKyAqIGF0IHdpbGwsIGJ1dCBjYW5ub3QgY2hhbmdlIHRoZSBiZWhhdmlvci4gIElmIHRoZSB1c2VyIHdhbnRzIGRpZmZlcmVudCBiZWhhdmlvciwgaGUKKyAqIG11c3QgaW5zdGFudGlhdGUgYSBuZXcgaXRlcmF0b3IuPC91bD4KKyAqCisgKiBCcmVha0l0ZXJhdG9yIGFjY2Vzc2VzIHRoZSB0ZXh0IGl0IGFuYWx5emVzIHRocm91Z2ggYSBDaGFyYWN0ZXJJdGVyYXRvciwgd2hpY2ggbWFrZXMKKyAqIGl0IHBvc3NpYmxlIHRvIHVzZSBCcmVha0l0ZXJhdG9yIHRvIGFuYWx5emUgdGV4dCBpbiBhbnkgdGV4dC1zdG9yYWdlIHZlaGljbGUgdGhhdAorICogcHJvdmlkZXMgYSBDaGFyYWN0ZXJJdGVyYXRvciBpbnRlcmZhY2UuCisgKgorICogPGI+Tk9URTo8L2I+ICBTb21lIHR5cGVzIG9mIEJyZWFrSXRlcmF0b3IgY2FuIHRha2UgYSBsb25nIHRpbWUgdG8gY3JlYXRlLCBhbmQKKyAqIGluc3RhbmNlcyBvZiBCcmVha0l0ZXJhdG9yIGFyZSBub3QgY3VycmVudGx5IGNhY2hlZCBieSB0aGUgc3lzdGVtLiAgRm9yCisgKiBvcHRpbWFsIHBlcmZvcm1hbmNlLCBrZWVwIGluc3RhbmNlcyBvZiBCcmVha0l0ZXJhdG9yIGFyb3VuZCBhcyBsb25nIGFzIG1ha2VzCisgKiBzZW5zZS4gIEZvciBleGFtcGxlLCB3aGVuIHdvcmQtd3JhcHBpbmcgYSBkb2N1bWVudCwgZG9uJ3QgY3JlYXRlIGFuZCBkZXN0cm95IGEKKyAqIG5ldyBCcmVha0l0ZXJhdG9yIGZvciBlYWNoIGxpbmUuICBDcmVhdGUgb25lIGJyZWFrIGl0ZXJhdG9yIGZvciB0aGUgd2hvbGUgZG9jdW1lbnQKKyAqIChvciB3aGF0ZXZlciBzdHJldGNoIG9mIHRleHQgeW91J3JlIHdyYXBwaW5nKSBhbmQgdXNlIGl0IHRvIGRvIHRoZSB3aG9sZSBqb2Igb2YKKyAqIHdyYXBwaW5nIHRoZSB0ZXh0LgorICoKKyAgKiA8UD4KKyAqIDxzdHJvbmc+RXhhbXBsZXM8L3N0cm9uZz46PFA+CisgKiBDcmVhdGluZyBhbmQgdXNpbmcgdGV4dCBib3VuZGFyaWVzCisgKiA8YmxvY2txdW90ZT4KKyAqIDxwcmU+CisgKiBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgYXJnc1tdKSB7CisgKiAgICAgIGlmIChhcmdzLmxlbmd0aCA9PSAxKSB7CisgKiAgICAgICAgICBTdHJpbmcgc3RyaW5nVG9FeGFtaW5lID0gYXJnc1swXTsKKyAqICAgICAgICAgIC8vcHJpbnQgZWFjaCB3b3JkIGluIG9yZGVyCisgKiAgICAgICAgICBCcmVha0l0ZXJhdG9yIGJvdW5kYXJ5ID0gQnJlYWtJdGVyYXRvci5nZXRXb3JkSW5zdGFuY2UoKTsKKyAqICAgICAgICAgIGJvdW5kYXJ5LnNldFRleHQoc3RyaW5nVG9FeGFtaW5lKTsKKyAqICAgICAgICAgIHByaW50RWFjaEZvcndhcmQoYm91bmRhcnksIHN0cmluZ1RvRXhhbWluZSk7CisgKiAgICAgICAgICAvL3ByaW50IGVhY2ggc2VudGVuY2UgaW4gcmV2ZXJzZSBvcmRlcgorICogICAgICAgICAgYm91bmRhcnkgPSBCcmVha0l0ZXJhdG9yLmdldFNlbnRlbmNlSW5zdGFuY2UoTG9jYWxlLlVTKTsKKyAqICAgICAgICAgIGJvdW5kYXJ5LnNldFRleHQoc3RyaW5nVG9FeGFtaW5lKTsKKyAqICAgICAgICAgIHByaW50RWFjaEJhY2t3YXJkKGJvdW5kYXJ5LCBzdHJpbmdUb0V4YW1pbmUpOworICogICAgICAgICAgcHJpbnRGaXJzdChib3VuZGFyeSwgc3RyaW5nVG9FeGFtaW5lKTsKKyAqICAgICAgICAgIHByaW50TGFzdChib3VuZGFyeSwgc3RyaW5nVG9FeGFtaW5lKTsKKyAqICAgICAgfQorICogfQorICogPC9wcmU+CisgKiA8L2Jsb2NrcXVvdGU+CisgKgorICogUHJpbnQgZWFjaCBlbGVtZW50IGluIG9yZGVyCisgKiA8YmxvY2txdW90ZT4KKyAqIDxwcmU+CisgKiBwdWJsaWMgc3RhdGljIHZvaWQgcHJpbnRFYWNoRm9yd2FyZChCcmVha0l0ZXJhdG9yIGJvdW5kYXJ5LCBTdHJpbmcgc291cmNlKSB7CisgKiAgICAgaW50IHN0YXJ0ID0gYm91bmRhcnkuZmlyc3QoKTsKKyAqICAgICBmb3IgKGludCBlbmQgPSBib3VuZGFyeS5uZXh0KCk7CisgKiAgICAgICAgICBlbmQgIT0gQnJlYWtJdGVyYXRvci5ET05FOworICogICAgICAgICAgc3RhcnQgPSBlbmQsIGVuZCA9IGJvdW5kYXJ5Lm5leHQoKSkgeworICogICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHNvdXJjZS5zdWJzdHJpbmcoc3RhcnQsZW5kKSk7CisgKiAgICAgfQorICogfQorICogPC9wcmU+CisgKiA8L2Jsb2NrcXVvdGU+CisgKgorICogUHJpbnQgZWFjaCBlbGVtZW50IGluIHJldmVyc2Ugb3JkZXIKKyAqIDxibG9ja3F1b3RlPgorICogPHByZT4KKyAqIHB1YmxpYyBzdGF0aWMgdm9pZCBwcmludEVhY2hCYWNrd2FyZChCcmVha0l0ZXJhdG9yIGJvdW5kYXJ5LCBTdHJpbmcgc291cmNlKSB7CisgKiAgICAgaW50IGVuZCA9IGJvdW5kYXJ5Lmxhc3QoKTsKKyAqICAgICBmb3IgKGludCBzdGFydCA9IGJvdW5kYXJ5LnByZXZpb3VzKCk7CisgKiAgICAgICAgICBzdGFydCAhPSBCcmVha0l0ZXJhdG9yLkRPTkU7CisgKiAgICAgICAgICBlbmQgPSBzdGFydCwgc3RhcnQgPSBib3VuZGFyeS5wcmV2aW91cygpKSB7CisgKiAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihzb3VyY2Uuc3Vic3RyaW5nKHN0YXJ0LGVuZCkpOworICogICAgIH0KKyAqIH0KKyAqIDwvcHJlPgorICogPC9ibG9ja3F1b3RlPgorICoKKyAqIFByaW50IGZpcnN0IGVsZW1lbnQKKyAqIDxibG9ja3F1b3RlPgorICogPHByZT4KKyAqIHB1YmxpYyBzdGF0aWMgdm9pZCBwcmludEZpcnN0KEJyZWFrSXRlcmF0b3IgYm91bmRhcnksIFN0cmluZyBzb3VyY2UpIHsKKyAqICAgICBpbnQgc3RhcnQgPSBib3VuZGFyeS5maXJzdCgpOworICogICAgIGludCBlbmQgPSBib3VuZGFyeS5uZXh0KCk7CisgKiAgICAgU3lzdGVtLm91dC5wcmludGxuKHNvdXJjZS5zdWJzdHJpbmcoc3RhcnQsZW5kKSk7CisgKiB9CisgKiA8L3ByZT4KKyAqIDwvYmxvY2txdW90ZT4KKyAqCisgKiBQcmludCBsYXN0IGVsZW1lbnQKKyAqIDxibG9ja3F1b3RlPgorICogPHByZT4KKyAqIHB1YmxpYyBzdGF0aWMgdm9pZCBwcmludExhc3QoQnJlYWtJdGVyYXRvciBib3VuZGFyeSwgU3RyaW5nIHNvdXJjZSkgeworICogICAgIGludCBlbmQgPSBib3VuZGFyeS5sYXN0KCk7CisgKiAgICAgaW50IHN0YXJ0ID0gYm91bmRhcnkucHJldmlvdXMoKTsKKyAqICAgICBTeXN0ZW0ub3V0LnByaW50bG4oc291cmNlLnN1YnN0cmluZyhzdGFydCxlbmQpKTsKKyAqIH0KKyAqIDwvcHJlPgorICogPC9ibG9ja3F1b3RlPgorICoKKyAqIFByaW50IHRoZSBlbGVtZW50IGF0IGEgc3BlY2lmaWVkIHBvc2l0aW9uCisgKiA8YmxvY2txdW90ZT4KKyAqIDxwcmU+CisgKiBwdWJsaWMgc3RhdGljIHZvaWQgcHJpbnRBdChCcmVha0l0ZXJhdG9yIGJvdW5kYXJ5LCBpbnQgcG9zLCBTdHJpbmcgc291cmNlKSB7CisgKiAgICAgaW50IGVuZCA9IGJvdW5kYXJ5LmZvbGxvd2luZyhwb3MpOworICogICAgIGludCBzdGFydCA9IGJvdW5kYXJ5LnByZXZpb3VzKCk7CisgKiAgICAgU3lzdGVtLm91dC5wcmludGxuKHNvdXJjZS5zdWJzdHJpbmcoc3RhcnQsZW5kKSk7CisgKiB9CisgKiA8L3ByZT4KKyAqIDwvYmxvY2txdW90ZT4KKyAqCisgKiBGaW5kIHRoZSBuZXh0IHdvcmQKKyAqIDxibG9ja3F1b3RlPgorICogPHByZT4KKyAqIHB1YmxpYyBzdGF0aWMgaW50IG5leHRXb3JkU3RhcnRBZnRlcihpbnQgcG9zLCBTdHJpbmcgdGV4dCkgeworICogICAgIEJyZWFrSXRlcmF0b3Igd2IgPSBCcmVha0l0ZXJhdG9yLmdldFdvcmRJbnN0YW5jZSgpOworICogICAgIHdiLnNldFRleHQodGV4dCk7CisgKiAgICAgaW50IGxhc3QgPSB3Yi5mb2xsb3dpbmcocG9zKTsKKyAqICAgICBpbnQgY3VycmVudCA9IHdiLm5leHQoKTsKKyAqICAgICB3aGlsZSAoY3VycmVudCAhPSBCcmVha0l0ZXJhdG9yLkRPTkUpIHsKKyAqICAgICAgICAgZm9yIChpbnQgcCA9IGxhc3Q7IHAgPCBjdXJyZW50OyBwKyspIHsKKyAqICAgICAgICAgICAgIGlmIChDaGFyYWN0ZXIuaXNMZXR0ZXIodGV4dC5jaGFyQXQocCkpCisgKiAgICAgICAgICAgICAgICAgcmV0dXJuIGxhc3Q7CisgKiAgICAgICAgIH0KKyAqICAgICAgICAgbGFzdCA9IGN1cnJlbnQ7CisgKiAgICAgICAgIGN1cnJlbnQgPSB3Yi5uZXh0KCk7CisgKiAgICAgfQorICogICAgIHJldHVybiBCcmVha0l0ZXJhdG9yLkRPTkU7CisgKiB9CisgKiA8L3ByZT4KKyAqIChUaGUgaXRlcmF0b3IgcmV0dXJuZWQgYnkgQnJlYWtJdGVyYXRvci5nZXRXb3JkSW5zdGFuY2UoKSBpcyB1bmlxdWUgaW4gdGhhdAorICogdGhlIGJyZWFrIHBvc2l0aW9ucyBpdCByZXR1cm5zIGRvbid0IHJlcHJlc2VudCBib3RoIHRoZSBzdGFydCBhbmQgZW5kIG9mIHRoZQorICogdGhpbmcgYmVpbmcgaXRlcmF0ZWQgb3Zlci4gIFRoYXQgaXMsIGEgc2VudGVuY2UtYnJlYWsgaXRlcmF0b3IgcmV0dXJucyBicmVha3MKKyAqIHRoYXQgZWFjaCByZXByZXNlbnQgdGhlIGVuZCBvZiBvbmUgc2VudGVuY2UgYW5kIHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQuCisgKiBXaXRoIHRoZSB3b3JkLWJyZWFrIGl0ZXJhdG9yLCB0aGUgY2hhcmFjdGVycyBiZXR3ZWVuIHR3byBib3VuZGFyaWVzIG1pZ2h0IGJlIGEKKyAqIHdvcmQsIG9yIHRoZXkgbWlnaHQgYmUgdGhlIHB1bmN0dWF0aW9uIG9yIHdoaXRlc3BhY2UgYmV0d2VlbiB0d28gd29yZHMuICBUaGUKKyAqIGFib3ZlIGNvZGUgdXNlcyBhIHNpbXBsZSBoZXVyaXN0aWMgdG8gZGV0ZXJtaW5lIHdoaWNoIGJvdW5kYXJ5IGlzIHRoZSBiZWdpbm5pbmcKKyAqIG9mIGEgd29yZDogSWYgdGhlIGNoYXJhY3RlcnMgYmV0d2VlbiB0aGlzIGJvdW5kYXJ5IGFuZCB0aGUgbmV4dCBib3VuZGFyeQorICogaW5jbHVkZSBhdCBsZWFzdCBvbmUgbGV0dGVyICh0aGlzIGNhbiBiZSBhbiBhbHBoYWJldGljYWwgbGV0dGVyLCBhIENKSyBpZGVvZ3JhcGgsCisgKiBhIEhhbmd1bCBzeWxsYWJsZSwgYSBLYW5hIGNoYXJhY3RlciwgZXRjLiksIHRoZW4gdGhlIHRleHQgYmV0d2VlbiB0aGlzIGJvdW5kYXJ5CisgKiBhbmQgdGhlIG5leHQgaXMgYSB3b3JkOyBvdGhlcndpc2UsIGl0J3MgdGhlIG1hdGVyaWFsIGJldHdlZW4gd29yZHMuKQorICogPC9ibG9ja3F1b3RlPgorICoKKyAqIEBzZWUgQ2hhcmFjdGVySXRlcmF0b3IKKyAqIEBzdGFibGUgSUNVIDIuMAorICoKKyAqLworCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQnJlYWtJdGVyYXRvciBpbXBsZW1lbnRzIENsb25lYWJsZQoreworICAgIC8qKgorICAgICAqIERlZmF1bHQgY29uc3RydWN0b3IuICBUaGVyZSBpcyBubyBzdGF0ZSB0aGF0IGlzIGNhcnJpZWQgYnkgdGhpcyBhYnN0cmFjdAorICAgICAqIGJhc2UgY2xhc3MuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHJvdGVjdGVkIEJyZWFrSXRlcmF0b3IoKQorICAgIHsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDbG9uZSBtZXRob2QuICBDcmVhdGVzIGFub3RoZXIgQnJlYWtJdGVyYXRvciB3aXRoIHRoZSBzYW1lIGJlaGF2aW9yIGFuZAorICAgICAqIGN1cnJlbnQgc3RhdGUgYXMgdGhpcyBvbmUuCisgICAgICogQHJldHVybiBUaGUgY2xvbmUuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIE9iamVjdCBjbG9uZSgpCisgICAgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmNsb25lKCk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKENsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBET05FIGlzIHJldHVybmVkIGJ5IHByZXZpb3VzKCkgYW5kIG5leHQoKSBhZnRlciBhbGwgdmFsaWQKKyAgICAgKiBib3VuZGFyaWVzIGhhdmUgYmVlbiByZXR1cm5lZC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBET05FID0gLTE7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGZpcnN0IGJvdW5kYXJ5IHBvc2l0aW9uLiAgVGhpcyBpcyBhbHdheXMgdGhlIGJlZ2lubmluZworICAgICAqIGluZGV4IG9mIHRoZSB0ZXh0IHRoaXMgaXRlcmF0b3IgaXRlcmF0ZXMgb3Zlci4gIEZvciBleGFtcGxlLCBpZgorICAgICAqIHRoZSBpdGVyYXRvciBpdGVyYXRlcyBvdmVyIGEgd2hvbGUgc3RyaW5nLCB0aGlzIGZ1bmN0aW9uIHdpbGwKKyAgICAgKiBhbHdheXMgcmV0dXJuIDAuICBUaGlzIGZ1bmN0aW9uIGFsc28gdXBkYXRlcyB0aGUgaXRlcmF0aW9uIHBvc2l0aW9uCisgICAgICogdG8gcG9pbnQgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgdGV4dC4KKyAgICAgKiBAcmV0dXJuIFRoZSBjaGFyYWN0ZXIgb2Zmc2V0IG9mIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmV0Y2ggb2YgdGV4dAorICAgICAqIGJlaW5nIGJyb2tlbi4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgaW50IGZpcnN0KCk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGxhc3QgYm91bmRhcnkgcG9zaXRpb24uICBUaGlzIGlzIGFsd2F5cyB0aGUgInBhc3QtdGhlLWVuZCIKKyAgICAgKiBpbmRleCBvZiB0aGUgdGV4dCB0aGlzIGl0ZXJhdG9yIGl0ZXJhdGVzIG92ZXIuICBGb3IgZXhhbXBsZSwgaWYgdGhlCisgICAgICogaXRlcmF0b3IgaXRlcmF0ZXMgb3ZlciBhIHdob2xlIHN0cmluZyAoY2FsbCBpdCAidGV4dCIpLCB0aGlzIGZ1bmN0aW9uCisgICAgICogd2lsbCBhbHdheXMgcmV0dXJuIHRleHQubGVuZ3RoKCkuICBUaGlzIGZ1bmN0aW9uIGFsc28gdXBkYXRlZCB0aGUKKyAgICAgKiBpdGVyYXRpb24gcG9zaXRpb24gdG8gcG9pbnQgdG8gdGhlIGVuZCBvZiB0aGUgdGV4dC4KKyAgICAgKiBAcmV0dXJuIFRoZSBjaGFyYWN0ZXIgb2Zmc2V0IG9mIHRoZSBlbmQgb2YgdGhlIHN0cmV0Y2ggb2YgdGV4dAorICAgICAqIGJlaW5nIGJyb2tlbi4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgaW50IGxhc3QoKTsKKworICAgIC8qKgorICAgICAqIEFkdmFuY2VzIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHN0ZXBzIGZvcndhcmQgaW4gdGhlIHRleHQgKGEgbmVnYXRpdmUKKyAgICAgKiBudW1iZXIsIHRoZXJlZm9yZSwgYWR2YW5jZXMgYmFja3dhcmRzKS4gIElmIHRoaXMgY2F1c2VzIHRoZSBpdGVyYXRvcgorICAgICAqIHRvIGFkdmFuY2Ugb2ZmIGVpdGhlciBlbmQgb2YgdGhlIHRleHQsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBET05FOworICAgICAqIG90aGVyd2lzZSwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBwb3NpdGlvbiBvZiB0aGUgYXBwcm9wcmlhdGUKKyAgICAgKiBib3VuZGFyeS4gIENhbGxpbmcgdGhpcyBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcgbmV4dCgpIG9yCisgICAgICogcHJldmlvdXMoKSBuIHRpbWVzLgorICAgICAqIEBwYXJhbSBuIFRoZSBudW1iZXIgb2YgYm91bmRhcmllcyB0byBhZHZhbmNlIG92ZXIgKGlmIHBvc2l0aXZlLCBtb3ZlcworICAgICAqIGZvcndhcmQ7IGlmIG5lZ2F0aXZlLCBtb3ZlcyBiYWNrd2FyZHMpLgorICAgICAqIEByZXR1cm4gVGhlIHBvc2l0aW9uIG9mIHRoZSBib3VuZGFyeSBuIGJvdW5kYXJpZXMgZnJvbSB0aGUgY3VycmVudAorICAgICAqIGl0ZXJhdGlvbiBwb3NpdGlvbiwgb3IgRE9ORSBpZiBtb3ZpbmcgbiBib3VuZGFyaWVzIGNhdXNlcyB0aGUgaXRlcmF0b3IKKyAgICAgKiB0byBhZHZhbmNlIG9mZiBlaXRoZXIgZW5kIG9mIHRoZSB0ZXh0LgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBpbnQgbmV4dChpbnQgbik7CisKKyAgICAvKioKKyAgICAgKiBBZHZhbmNlcyB0aGUgaXRlcmF0b3IgZm9yd2FyZCBvbmUgYm91bmRhcnkuICBUaGUgY3VycmVudCBpdGVyYXRpb24KKyAgICAgKiBwb3NpdGlvbiBpcyB1cGRhdGVkIHRvIHBvaW50IHRvIHRoZSBuZXh0IGJvdW5kYXJ5IHBvc2l0aW9uIGFmdGVyIHRoZQorICAgICAqIGN1cnJlbnQgcG9zaXRpb24sIGFuZCB0aGlzIGlzIGFsc28gdGhlIHZhbHVlIHRoYXQgaXMgcmV0dXJuZWQuICBJZgorICAgICAqIHRoZSBjdXJyZW50IHBvc2l0aW9uIGlzIGVxdWFsIHRvIHRoZSB2YWx1ZSByZXR1cm5lZCBieSBsYXN0KCksIG9yIHRvCisgICAgICogRE9ORSwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIERPTkUgYW5kIHNldHMgdGhlIGN1cnJlbnQgcG9zaXRpb24gdG8KKyAgICAgKiBET05FLgorICAgICAqIEByZXR1cm4gVGhlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCBib3VuZGFyeSBwb3NpdGlvbiBmb2xsb3dpbmcgdGhlCisgICAgICogaXRlcmF0aW9uIHBvc2l0aW9uLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBpbnQgbmV4dCgpOworCisgICAgLyoqCisgICAgICogQWR2YW5jZXMgdGhlIGl0ZXJhdG9yIGJhY2t3YXJkIG9uZSBib3VuZGFyeS4gIFRoZSBjdXJyZW50IGl0ZXJhdGlvbgorICAgICAqIHBvc2l0aW9uIGlzIHVwZGF0ZWQgdG8gcG9pbnQgdG8gdGhlIGxhc3QgYm91bmRhcnkgcG9zaXRpb24gYmVmb3JlCisgICAgICogdGhlIGN1cnJlbnQgcG9zaXRpb24sIGFuZCB0aGlzIGlzIGFsc28gdGhlIHZhbHVlIHRoYXQgaXMgcmV0dXJuZWQuICBJZgorICAgICAqIHRoZSBjdXJyZW50IHBvc2l0aW9uIGlzIGVxdWFsIHRvIHRoZSB2YWx1ZSByZXR1cm5lZCBieSBmaXJzdCgpLCBvciB0bworICAgICAqIERPTkUsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBET05FIGFuZCBzZXRzIHRoZSBjdXJyZW50IHBvc2l0aW9uIHRvCisgICAgICogRE9ORS4KKyAgICAgKiBAcmV0dXJuIFRoZSBwb3NpdGlvbiBvZiB0aGUgbGFzdCBib3VuZGFyeSBwb3NpdGlvbiBwcmVjZWRpbmcgdGhlCisgICAgICogaXRlcmF0aW9uIHBvc2l0aW9uLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBpbnQgcHJldmlvdXMoKTsKKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIGl0ZXJhdG9yJ3MgY3VycmVudCBpdGVyYXRpb24gcG9zaXRpb24gdG8gYmUgdGhlIGZpcnN0CisgICAgICogYm91bmRhcnkgcG9zaXRpb24gZm9sbG93aW5nIHRoZSBzcGVjaWZpZWQgcG9zaXRpb24uICAoV2hldGhlciB0aGUKKyAgICAgKiBzcGVjaWZpZWQgcG9zaXRpb24gaXMgaXRzZWxmIGEgYm91bmRhcnkgcG9zaXRpb24gb3Igbm90IGRvZXNuJ3QKKyAgICAgKiBtYXR0ZXItLSB0aGlzIGZ1bmN0aW9uIGFsd2F5cyBtb3ZlcyB0aGUgaXRlcmF0aW9uIHBvc2l0aW9uIHRvIHRoZQorICAgICAqIGZpcnN0IGJvdW5kYXJ5IGFmdGVyIHRoZSBzcGVjaWZpZWQgcG9zaXRpb24uKSAgSWYgdGhlIHNwZWNpZmllZAorICAgICAqIHBvc2l0aW9uIGlzIHRoZSBwYXN0LXRoZS1lbmQgcG9zaXRpb24sIHJldHVybnMgRE9ORS4KKyAgICAgKiBAcGFyYW0gb2Zmc2V0IFRoZSBjaGFyYWN0ZXIgcG9zaXRpb24gdG8gc3RhcnQgc2VhcmNoaW5nIGZyb20uCisgICAgICogQHJldHVybiBUaGUgcG9zaXRpb24gb2YgdGhlIGZpcnN0IGJvdW5kYXJ5IHBvc2l0aW9uIGZvbGxvd2luZworICAgICAqICJvZmZzZXQiICh3aGV0aGVyIG9yIG5vdCAib2Zmc2V0IiBpdHNlbGYgaXMgYSBib3VuZGFyeSBwb3NpdGlvbiksCisgICAgICogb3IgRE9ORSBpZiAib2Zmc2V0IiBpcyB0aGUgcGFzdC10aGUtZW5kIG9mZnNldC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgaW50IGZvbGxvd2luZyhpbnQgb2Zmc2V0KTsKKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIGl0ZXJhdG9yJ3MgY3VycmVudCBpdGVyYXRpb24gcG9zaXRpb24gdG8gYmUgdGhlIGxhc3QKKyAgICAgKiBib3VuZGFyeSBwb3NpdGlvbiBwcmVjZWRpbmcgdGhlIHNwZWNpZmllZCBwb3NpdGlvbi4gIChXaGV0aGVyIHRoZQorICAgICAqIHNwZWNpZmllZCBwb3NpdGlvbiBpcyBpdHNlbGYgYSBib3VuZGFyeSBwb3NpdGlvbiBvciBub3QgZG9lc24ndAorICAgICAqIG1hdHRlci0tIHRoaXMgZnVuY3Rpb24gYWx3YXlzIG1vdmVzIHRoZSBpdGVyYXRpb24gcG9zaXRpb24gdG8gdGhlCisgICAgICogbGFzdCBib3VuZGFyeSBiZWZvcmUgdGhlIHNwZWNpZmllZCBwb3NpdGlvbi4pICBJZiB0aGUgc3BlY2lmaWVkCisgICAgICogcG9zaXRpb24gaXMgdGhlIHN0YXJ0aW5nIHBvc2l0aW9uLCByZXR1cm5zIERPTkUuCisgICAgICogQHBhcmFtIG9mZnNldCBUaGUgY2hhcmFjdGVyIHBvc2l0aW9uIHRvIHN0YXJ0IHNlYXJjaGluZyBmcm9tLgorICAgICAqIEByZXR1cm4gVGhlIHBvc2l0aW9uIG9mIHRoZSBsYXN0IGJvdW5kYXJ5IHBvc2l0aW9uIHByZWNlZGluZworICAgICAqICJvZmZzZXQiICh3aGV0aGVyIG9mIG5vdCAib2Zmc2V0IiBpdHNlbGYgaXMgYSBib3VuZGFyeSBwb3NpdGlvbiksCisgICAgICogb3IgRE9ORSBpZiAib2Zmc2V0IiBpcyB0aGUgc3RhcnRpbmcgb2Zmc2V0IG9mIHRoZSBpdGVyYXRvci4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IHByZWNlZGluZyhpbnQgb2Zmc2V0KSB7CisgICAgICAgIC8vIE5PVEU6ICBUaGlzIGltcGxlbWVudGF0aW9uIGlzIGhlcmUgc29sZWx5IGJlY2F1c2Ugd2UgY2FuJ3QgYWRkIG5ldworICAgICAgICAvLyBhYnN0cmFjdCBtZXRob2RzIHRvIGFuIGV4aXN0aW5nIGNsYXNzLiAgVGhlcmUgaXMgYWxtb3N0IEFMV0FZUyBhCisgICAgICAgIC8vIGJldHRlciwgZmFzdGVyIHdheSB0byBkbyB0aGlzLgorICAgICAgICBpbnQgcG9zID0gZm9sbG93aW5nKG9mZnNldCk7CisgICAgICAgIHdoaWxlIChwb3MgPj0gb2Zmc2V0ICYmIHBvcyAhPSBET05FKQorICAgICAgICAgICAgcG9zID0gcHJldmlvdXMoKTsKKyAgICAgICAgcmV0dXJuIHBvczsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3BlY2ZpZWQgcG9zaXRpb24gaXMgYSBib3VuZGFyeSBwb3NpdGlvbi4gIElmIHRoZQorICAgICAqIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSwgdGhlIGN1cnJlbnQgaXRlcmF0aW9uIHBvc2l0aW9uIGlzIHNldCB0byB0aGUKKyAgICAgKiBzcGVjaWZpZWQgcG9zaXRpb247IGlmIHRoZSBmdW5jdGlvbiByZXR1cm5zIGZhbHNlLCB0aGUgY3VycmVudAorICAgICAqIGl0ZXJhdGlvbiBwb3NpdGlvbiBpcyBzZXQgYXMgdGhvdWdoIGZvbGxvd2luZygpIGhhZCBiZWVuIGNhbGxlZC4KKyAgICAgKiBAcGFyYW0gb2Zmc2V0IHRoZSBvZmZzZXQgdG8gY2hlY2suCisgICAgICogQHJldHVybiBUcnVlIGlmICJvZmZzZXQiIGlzIGEgYm91bmRhcnkgcG9zaXRpb24uCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNCb3VuZGFyeShpbnQgb2Zmc2V0KSB7CisgICAgICAgIC8vIEFnYWluLCB0aGlzIGlzIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uLCB3aGljaCBpcyBwcm92aWRlZCBzb2xlbHkgYmVjYXVzZQorICAgICAgICAvLyB3ZSBjb3VsZG4ndCBhZGQgYSBuZXcgYWJzdHJhY3QgbWV0aG9kIHRvIGFuIGV4aXN0aW5nIGNsYXNzLiAgVGhlIHJlYWwKKyAgICAgICAgLy8gaW1wbGVtZW50YXRpb25zIHdpbGwgdXN1YWxseSBuZWVkIHRvIGRvIGEgbGl0dGxlIG1vcmUgd29yay4KKyAgICAgICAgaWYgKG9mZnNldCA9PSAwKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gZm9sbG93aW5nKG9mZnNldCAtIDEpID09IG9mZnNldDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGl0ZXJhdG9yJ3MgY3VycmVudCBwb3NpdGlvbi4KKyAgICAgKiBAcmV0dXJuIFRoZSBpdGVyYXRvcidzIGN1cnJlbnQgcG9zaXRpb24uCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IGludCBjdXJyZW50KCk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgQ2hhcmFjdGVySXRlcmF0b3Igb3ZlciB0aGUgdGV4dCBiZWluZyBhbmFseXplZC4KKyAgICAgKiBGb3IgYXQgbGVhc3Qgc29tZSBzdWJjbGFzc2VzIG9mIEJyZWFrSXRlcmF0b3IsIHRoaXMgaXMgYSByZWZlcmVuY2UKKyAgICAgKiB0byB0aGUgPGI+YWN0dWFsIGl0ZXJhdG9yIGJlaW5nIHVzZWQ8L2I+IGJ5IHRoZSBCcmVha0l0ZXJhdG9yLAorICAgICAqIGFuZCB0aGVyZWZvcmUsIHRoaXMgZnVuY3Rpb24ncyByZXR1cm4gdmFsdWUgc2hvdWxkIGJlIHRyZWF0ZWQgYXMKKyAgICAgKiA8dHQ+Y29uc3Q8L3R0Pi4gIE5vIGd1YXJhbnRlZXMgYXJlIG1hZGUgYWJvdXQgdGhlIGN1cnJlbnQgcG9zaXRpb24KKyAgICAgKiBvZiB0aGlzIGl0ZXJhdG9yIHdoZW4gaXQgaXMgcmV0dXJuZWQuICBJZiB5b3UgbmVlZCB0byBtb3ZlIHRoYXQKKyAgICAgKiBwb3NpdGlvbiB0byBleGFtaW5lIHRoZSB0ZXh0LCBjbG9uZSB0aGlzIGZ1bmN0aW9uJ3MgcmV0dXJuIHZhbHVlIGZpcnN0LgorICAgICAqIEByZXR1cm4gQSBDaGFyYWN0ZXJJdGVyYXRvciBvdmVyIHRoZSB0ZXh0IGJlaW5nIGFuYWx5emVkLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBDaGFyYWN0ZXJJdGVyYXRvciBnZXRUZXh0KCk7CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBpdGVyYXRvciB0byBhbmFseXplIGEgbmV3IHBpZWNlIG9mIHRleHQuICBUaGUgbmV3CisgICAgICogcGllY2Ugb2YgdGV4dCBpcyBwYXNzZWQgaW4gYXMgYSBTdHJpbmcsIGFuZCB0aGUgY3VycmVudAorICAgICAqIGl0ZXJhdGlvbiBwb3NpdGlvbiBpcyByZXNldCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcuCisgICAgICogKFRoZSBvbGQgdGV4dCBpcyBkcm9wcGVkLikKKyAgICAgKiBAcGFyYW0gbmV3VGV4dCBBIFN0cmluZyBjb250YWluaW5nIHRoZSB0ZXh0IHRvIGFuYWx5emUgd2l0aAorICAgICAqIHRoaXMgQnJlYWtJdGVyYXRvci4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRUZXh0KFN0cmluZyBuZXdUZXh0KQorICAgIHsKKyAgICAgICAgc2V0VGV4dChuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IobmV3VGV4dCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIGl0ZXJhdG9yIHRvIGFuYWx5emUgYSBuZXcgcGllY2Ugb2YgdGV4dC4gIFRoZQorICAgICAqIEJyZWFrSXRlcmF0b3IgaXMgcGFzc2VkIGEgQ2hhcmFjdGVySXRlcmF0b3IgdGhyb3VnaCB3aGljaAorICAgICAqIGl0IHdpbGwgYWNjZXNzIHRoZSB0ZXh0IGl0c2VsZi4gIFRoZSBjdXJyZW50IGl0ZXJhdGlvbgorICAgICAqIHBvc2l0aW9uIGlzIHJlc2V0IHRvIHRoZSBDaGFyYWN0ZXJJdGVyYXRvcidzIHN0YXJ0IGluZGV4LgorICAgICAqIChUaGUgb2xkIGl0ZXJhdG9yIGlzIGRyb3BwZWQuKQorICAgICAqIEBwYXJhbSBuZXdUZXh0IEEgQ2hhcmFjdGVySXRlcmF0b3IgcmVmZXJyaW5nIHRvIHRoZSB0ZXh0CisgICAgICogdG8gYW5hbHl6ZSB3aXRoIHRoaXMgQnJlYWtJdGVyYXRvciAodGhlIGl0ZXJhdG9yJ3MgY3VycmVudAorICAgICAqIHBvc2l0aW9uIGlzIGlnbm9yZWQsIGJ1dCBpdHMgb3RoZXIgc3RhdGUgaXMgc2lnbmlmaWNhbnQpLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIHNldFRleHQoQ2hhcmFjdGVySXRlcmF0b3IgbmV3VGV4dCk7CisKKyAgICAvKiogQGRyYWZ0IElDVSAyLjQgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBLSU5EX0NIQVJBQ1RFUiA9IDA7CisgICAgLyoqIEBkcmFmdCBJQ1UgMi40ICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgS0lORF9XT1JEID0gMTsKKyAgICAvKiogQGRyYWZ0IElDVSAyLjQgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBLSU5EX0xJTkUgPSAyOworICAgIC8qKiBAZHJhZnQgSUNVIDIuNCAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEtJTkRfU0VOVEVOQ0UgPSAzOworICAgIC8qKiBAZHJhZnQgSUNVIDIuNCAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEtJTkRfVElUTEUgPSA0OworCisgICAgLyoqIEBpbnRlcm5hbCAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFNvZnRSZWZlcmVuY2VbXSBpdGVyQ2FjaGUgPSBuZXcgU29mdFJlZmVyZW5jZVs1XTsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSBuZXcgaW5zdGFuY2Ugb2YgQnJlYWtJdGVyYXRvciB0aGF0IGxvY2F0ZXMgd29yZCBib3VuZGFyaWVzLgorICAgICAqIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyB0aGF0IHRoZSB0ZXh0IGJlaW5nIGFuYWx5emVkIGlzIGluIHRoZSBkZWZhdWx0CisgICAgICogbG9jYWxlJ3MgbGFuZ3VhZ2UuCisgICAgICogQHJldHVybiBBbiBpbnN0YW5jZSBvZiBCcmVha0l0ZXJhdG9yIHRoYXQgbG9jYXRlcyB3b3JkIGJvdW5kYXJpZXMuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBCcmVha0l0ZXJhdG9yIGdldFdvcmRJbnN0YW5jZSgpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0V29yZEluc3RhbmNlKExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSBuZXcgaW5zdGFuY2Ugb2YgQnJlYWtJdGVyYXRvciB0aGF0IGxvY2F0ZXMgd29yZCBib3VuZGFyaWVzLgorICAgICAqIEBwYXJhbSB3aGVyZSBBIGxvY2FsZSBzcGVjaWZ5aW5nIHRoZSBsYW5ndWFnZSBvZiB0aGUgdGV4dCB0byBiZQorICAgICAqIGFuYWx5emVkLgorICAgICAqIEByZXR1cm4gQW4gaW5zdGFuY2Ugb2YgQnJlYWtJdGVyYXRvciB0aGF0IGxvY2F0ZXMgd29yZCBib3VuZGFyaWVzLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgQnJlYWtJdGVyYXRvciBnZXRXb3JkSW5zdGFuY2UoTG9jYWxlIHdoZXJlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdldEJyZWFrSW5zdGFuY2Uod2hlcmUsIEtJTkRfV09SRCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIG5ldyBpbnN0YW5jZSBvZiBCcmVha0l0ZXJhdG9yIHRoYXQgbG9jYXRlcyBsZWdhbCBsaW5lLQorICAgICAqIHdyYXBwaW5nIHBvc2l0aW9ucy4gIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyB0aGUgdGV4dCBiZWluZyBicm9rZW4KKyAgICAgKiBpcyBpbiB0aGUgZGVmYXVsdCBsb2NhbGUncyBsYW5ndWFnZS4KKyAgICAgKiBAcmV0dXJuIEEgbmV3IGluc3RhbmNlIG9mIEJyZWFrSXRlcmF0b3IgdGhhdCBsb2NhdGVzIGxlZ2FsCisgICAgICogbGluZS13cmFwcGluZyBwb3NpdGlvbnMuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBCcmVha0l0ZXJhdG9yIGdldExpbmVJbnN0YW5jZSgpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0TGluZUluc3RhbmNlKExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSBuZXcgaW5zdGFuY2Ugb2YgQnJlYWtJdGVyYXRvciB0aGF0IGxvY2F0ZXMgbGVnYWwgbGluZS0KKyAgICAgKiB3cmFwcGluZyBwb3NpdGlvbnMuCisgICAgICogQHBhcmFtIHdoZXJlIEEgTG9jYWxlIHNwZWNpZnlpbmcgdGhlIGxhbmd1YWdlIG9mIHRoZSB0ZXh0IGJlaW5nIGJyb2tlbi4KKyAgICAgKiBAcmV0dXJuIEEgbmV3IGluc3RhbmNlIG9mIEJyZWFrSXRlcmF0b3IgdGhhdCBsb2NhdGVzIGxlZ2FsCisgICAgICogbGluZS13cmFwcGluZyBwb3NpdGlvbnMuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBCcmVha0l0ZXJhdG9yIGdldExpbmVJbnN0YW5jZShMb2NhbGUgd2hlcmUpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0QnJlYWtJbnN0YW5jZSh3aGVyZSwgS0lORF9MSU5FKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgbmV3IGluc3RhbmNlIG9mIEJyZWFrSXRlcmF0b3IgdGhhdCBsb2NhdGVzIGxvZ2ljYWwtY2hhcmFjdGVyCisgICAgICogYm91bmRhcmllcy4gIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyB0aGF0IHRoZSB0ZXh0IGJlaW5nIGFuYWx5emVkIGlzCisgICAgICogaW4gdGhlIGRlZmF1bHQgbG9jYWxlJ3MgbGFuZ3VhZ2UuCisgICAgICogQHJldHVybiBBIG5ldyBpbnN0YW5jZSBvZiBCcmVha0l0ZXJhdG9yIHRoYXQgbG9jYXRlcyBsb2dpY2FsLWNoYXJhY3RlcgorICAgICAqIGJvdW5kYXJpZXMuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBCcmVha0l0ZXJhdG9yIGdldENoYXJhY3Rlckluc3RhbmNlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBnZXRDaGFyYWN0ZXJJbnN0YW5jZShMb2NhbGUuZ2V0RGVmYXVsdCgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgbmV3IGluc3RhbmNlIG9mIEJyZWFrSXRlcmF0b3IgdGhhdCBsb2NhdGVzIGxvZ2ljYWwtY2hhcmFjdGVyCisgICAgICogYm91bmRhcmllcy4KKyAgICAgKiBAcGFyYW0gd2hlcmUgQSBMb2NhbGUgc3BlY2lmeWluZyB0aGUgbGFuZ3VhZ2Ugb2YgdGhlIHRleHQgYmVpbmcgYW5hbHl6ZWQuCisgICAgICogQHJldHVybiBBIG5ldyBpbnN0YW5jZSBvZiBCcmVha0l0ZXJhdG9yIHRoYXQgbG9jYXRlcyBsb2dpY2FsLWNoYXJhY3RlcgorICAgICAqIGJvdW5kYXJpZXMuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBCcmVha0l0ZXJhdG9yIGdldENoYXJhY3Rlckluc3RhbmNlKExvY2FsZSB3aGVyZSkKKyAgICB7CisgICAgICAgIHJldHVybiBnZXRCcmVha0luc3RhbmNlKHdoZXJlLCBLSU5EX0NIQVJBQ1RFUik7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIG5ldyBpbnN0YW5jZSBvZiBCcmVha0l0ZXJhdG9yIHRoYXQgbG9jYXRlcyBzZW50ZW5jZSBib3VuZGFyaWVzLgorICAgICAqIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyB0aGUgdGV4dCBiZWluZyBhbmFseXplZCBpcyBpbiB0aGUgZGVmYXVsdCBsb2NhbGUncworICAgICAqIGxhbmd1YWdlLgorICAgICAqIEByZXR1cm4gQSBuZXcgaW5zdGFuY2Ugb2YgQnJlYWtJdGVyYXRvciB0aGF0IGxvY2F0ZXMgc2VudGVuY2UgYm91bmRhcmllcy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIEJyZWFrSXRlcmF0b3IgZ2V0U2VudGVuY2VJbnN0YW5jZSgpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0U2VudGVuY2VJbnN0YW5jZShMb2NhbGUuZ2V0RGVmYXVsdCgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgbmV3IGluc3RhbmNlIG9mIEJyZWFrSXRlcmF0b3IgdGhhdCBsb2NhdGVzIHNlbnRlbmNlIGJvdW5kYXJpZXMuCisgICAgICogQHBhcmFtIHdoZXJlIEEgTG9jYWxlIHNwZWNpZnlpbmcgdGhlIGxhbmd1YWdlIG9mIHRoZSB0ZXh0IGJlaW5nIGFuYWx5emVkLgorICAgICAqIEByZXR1cm4gQSBuZXcgaW5zdGFuY2Ugb2YgQnJlYWtJdGVyYXRvciB0aGF0IGxvY2F0ZXMgc2VudGVuY2UgYm91bmRhcmllcy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIEJyZWFrSXRlcmF0b3IgZ2V0U2VudGVuY2VJbnN0YW5jZShMb2NhbGUgd2hlcmUpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0QnJlYWtJbnN0YW5jZSh3aGVyZSwgS0lORF9TRU5URU5DRSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIG5ldyBpbnN0YW5jZSBvZiBCcmVha0l0ZXJhdG9yIHRoYXQgbG9jYXRlcyB0aXRsZSBib3VuZGFyaWVzLgorICAgICAqIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyB0aGUgdGV4dCBiZWluZyBhbmFseXplZCBpcyBpbiB0aGUgZGVmYXVsdCBsb2NhbGUncworICAgICAqIGxhbmd1YWdlLgorICAgICAqIEByZXR1cm4gQSBuZXcgaW5zdGFuY2Ugb2YgQnJlYWtJdGVyYXRvciB0aGF0IGxvY2F0ZXMgdGl0bGUgYm91bmRhcmllcy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIEJyZWFrSXRlcmF0b3IgZ2V0VGl0bGVJbnN0YW5jZSgpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0VGl0bGVJbnN0YW5jZShMb2NhbGUuZ2V0RGVmYXVsdCgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgbmV3IGluc3RhbmNlIG9mIEJyZWFrSXRlcmF0b3IgdGhhdCBsb2NhdGVzIHRpdGxlIGJvdW5kYXJpZXMuCisgICAgICogQHBhcmFtIHdoZXJlIEEgTG9jYWxlIHNwZWNpZnlpbmcgdGhlIGxhbmd1YWdlIG9mIHRoZSB0ZXh0IGJlaW5nIGFuYWx5emVkLgorICAgICAqIEByZXR1cm4gQSBuZXcgaW5zdGFuY2Ugb2YgQnJlYWtJdGVyYXRvciB0aGF0IGxvY2F0ZXMgdGl0bGUgYm91bmRhcmllcy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIEJyZWFrSXRlcmF0b3IgZ2V0VGl0bGVJbnN0YW5jZShMb2NhbGUgd2hlcmUpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0QnJlYWtJbnN0YW5jZSh3aGVyZSwgS0lORF9USVRMRSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVnaXN0ZXIgYSBuZXcgYnJlYWsgaXRlcmF0b3Igb2YgdGhlIGluZGljYXRlZCBraW5kLCB0byB1c2UgaW4gdGhlIGdpdmVuIGxvY2FsZS4KKyAgICAgKiBDbG9uZXMgb2YgdGhlIGl0ZXJhdG9yIHdpbGwgYmUgcmV0dXJuZWQKKyAgICAgKiBpZiBhIHJlcXVlc3QgZm9yIGEgYnJlYWsgaXRlcmF0b3Igb2YgdGhlIGdpdmVuIGtpbmQgbWF0Y2hlcyBvciBmYWxscyBiYWNrIHRvCisgICAgICogdGhpcyBsb2NhbGUuCisgICAgICogQHBhcmFtIGl0ZXIgdGhlIEJyZWFrSXRlcmF0b3IgaW5zdGFuY2UgdG8gYWRvcHQuCisgICAgICogQHBhcmFtIGxvY2FsZSB0aGUgTG9jYWxlIGZvciB3aGljaCB0aGlzIGluc3RhbmNlIGlzIHRvIGJlIHJlZ2lzdGVyZWQKKyAgICAgKiBAcGFyYW0ga2luZCB0aGUgdHlwZSBvZiBpdGVyYXRvciBmb3Igd2hpY2ggdGhpcyBpbnN0YW5jZSBpcyB0byBiZSByZWdpc3RlcmVkCisgICAgICogQHJldHVybiBhIHJlZ2lzdHJ5IGtleSB0aGF0IGNhbiBiZSB1c2VkIHRvIHVucmVnaXN0ZXIgdGhpcyBpbnN0YW5jZQorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBPYmplY3QgcmVnaXN0ZXJJbnN0YW5jZShCcmVha0l0ZXJhdG9yIGl0ZXIsIExvY2FsZSBsb2NhbGUsIGludCBraW5kKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gZ2V0U2VydmljZSgpLnJlZ2lzdGVyT2JqZWN0KGl0ZXIsIGxvY2FsZSwga2luZCk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigidW5rbm93biBraW5kOiAiICsga2luZCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBVbnJlZ2lzdGVyIGEgcHJldmlvdXNseS1yZWdpc3RlcmVkIEJyZWFrSXRlcmF0b3IgdXNpbmcgdGhlIGtleSByZXR1cm5lZCBmcm9tIHRoZQorICAgICAqIHJlZ2lzdGVyIGNhbGwuICBLZXkgYmVjb21lcyBpbnZhbGlkIGFmdGVyIHRoaXMgY2FsbCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGFnYWluLgorICAgICAqIEBwYXJhbSBrZXkgdGhlIHJlZ2lzdHJ5IGtleSByZXR1cm5lZCBieSBhIHByZXZpb3VzIGNhbGwgdG8gcmVnaXN0ZXJJbnN0YW5jZQorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgaXRlcmF0b3IgZm9yIHRoZSBrZXkgd2FzIHN1Y2Nlc3NmdWxseSB1bnJlZ2lzdGVyZWQKKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiB1bnJlZ2lzdGVyKE9iamVjdCBrZXkpIHsKKyAgICAgICAgaWYgKHNlcnZpY2UgIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIHNlcnZpY2UudW5yZWdpc3RlckZhY3RvcnkoKEZhY3Rvcnkpa2V5KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgSUNVTG9jYWxlU2VydmljZSBzZXJ2aWNlOworICAgIHByaXZhdGUgc3RhdGljIElDVUxvY2FsZVNlcnZpY2UgZ2V0U2VydmljZSgpIHsKKyAgICAgICAgaWYgKHNlcnZpY2UgPT0gbnVsbCkgeworICAgICAgICAgICAgSUNVTG9jYWxlU2VydmljZSBuZXdTZXJ2aWNlID0gbmV3IElDVUxvY2FsZVNlcnZpY2UoIkJyZWFrSXRlcmF0b3IiKTsKKworICAgICAgICAgICAgY2xhc3MgUkJCcmVha0l0ZXJhdG9yRmFjdG9yeSBleHRlbmRzIElDVVJlc291cmNlQnVuZGxlRmFjdG9yeSB7CisgICAgICAgICAgICAgICAgcHJvdGVjdGVkIE9iamVjdCBoYW5kbGVDcmVhdGUoTG9jYWxlIGxvYywgaW50IGtpbmQsIElDVVNlcnZpY2Ugc2VydmljZSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlQnJlYWtJbnN0YW5jZShsb2MsIGtpbmQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG5ld1NlcnZpY2UucmVnaXN0ZXJGYWN0b3J5KG5ldyBSQkJyZWFrSXRlcmF0b3JGYWN0b3J5KCkpOworCisgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKEJyZWFrSXRlcmF0b3IuY2xhc3MpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2VydmljZSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIHNlcnZpY2UgPSBuZXdTZXJ2aWNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc2VydmljZTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmdbXSBLSU5EX05BTUVTID0geworICAgICAgICAiQ2hhcmFjdGVyIiwgIldvcmQiLCAiTGluZSIsICJTZW50ZW5jZSIsICJUaXRsZSIKKyAgICB9OworCisgICAgcHJpdmF0ZSBzdGF0aWMgQnJlYWtJdGVyYXRvciBjcmVhdGVCcmVha0luc3RhbmNlKExvY2FsZSBsb2NhbGUsIGludCBraW5kKSB7CisgICAgICAgIFN0cmluZyBwcmVmaXggPSBLSU5EX05BTUVTW2tpbmRdOworICAgICAgICByZXR1cm4gY3JlYXRlQnJlYWtJbnN0YW5jZShsb2NhbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCArICJCcmVha1J1bGVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4ICsgIkJyZWFrRGljdGlvbmFyeSIpOworICAgIH0KKworICAgIC8vIGVuZCBvZiByZWdpc3RyYXRpb24KKworICAgIHByaXZhdGUgc3RhdGljIEJyZWFrSXRlcmF0b3IgZ2V0QnJlYWtJbnN0YW5jZShMb2NhbGUgd2hlcmUsIGludCBraW5kKSB7CisKKyAgICAgICAgaWYgKGl0ZXJDYWNoZVtraW5kXSAhPSBudWxsKSB7CisgICAgICAgICAgICBCcmVha0l0ZXJhdG9yQ2FjaGUgY2FjaGUgPSAoQnJlYWtJdGVyYXRvckNhY2hlKSBpdGVyQ2FjaGVba2luZF0uZ2V0KCk7CisgICAgICAgICAgICBpZiAoY2FjaGUgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGlmIChjYWNoZS5nZXRMb2NhbGUoKS5lcXVhbHMod2hlcmUpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWNoZS5jcmVhdGVCcmVha0luc3RhbmNlKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgQnJlYWtJdGVyYXRvciByZXN1bHQgPSBjcmVhdGVCcmVha0luc3RhbmNlKHdoZXJlLCBraW5kKTsKKyAgICAgICAgQnJlYWtJdGVyYXRvckNhY2hlIGNhY2hlID0gbmV3IEJyZWFrSXRlcmF0b3JDYWNoZSh3aGVyZSwgcmVzdWx0KTsKKyAgICAgICAgaXRlckNhY2hlW2tpbmRdID0gbmV3IFNvZnRSZWZlcmVuY2UoY2FjaGUpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIEJyZWFrSXRlcmF0b3IgY3JlYXRlQnJlYWtJbnN0YW5jZShMb2NhbGUgd2hlcmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBraW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgcnVsZXNOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZGljdGlvbmFyeU5hbWUpIHsKKworLy8JCVN5c3RlbS5vdXQucHJpbnRsbigicnVsZXNOYW1lOiAiK3J1bGVzTmFtZSk7CisvLwkJU3lzdGVtLm91dC5wcmludGxuKCJkaWN0aW9uYXJ5TmFtZTogIitkaWN0aW9uYXJ5TmFtZSk7CisgICAgICAgIFJlc291cmNlQnVuZGxlIGJ1bmRsZSA9IElDVUxvY2FsZURhdGEuZ2V0UmVzb3VyY2VCdW5kbGUoIkJyZWFrSXRlcmF0b3JSdWxlcyIsIHdoZXJlKTsKKyAgICAgICAgU3RyaW5nW10gY2xhc3NOYW1lcyA9IGJ1bmRsZS5nZXRTdHJpbmdBcnJheSgiQnJlYWtJdGVyYXRvckNsYXNzZXMiKTsKKworICAgICAgICBTdHJpbmcgcnVsZXMgPSBidW5kbGUuZ2V0U3RyaW5nKHJ1bGVzTmFtZSk7CisKKyAgICAgICAgaWYgKGNsYXNzTmFtZXNba2luZF0uZXF1YWxzKCJSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIikpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgUnVsZUJhc2VkQnJlYWtJdGVyYXRvcihydWxlcyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoY2xhc3NOYW1lc1traW5kXS5lcXVhbHMoIkRpY3Rpb25hcnlCYXNlZEJyZWFrSXRlcmF0b3IiKSkgeworICAgICAgICAgICAgdHJ5IHsKKwkJCQkvLyBTeXN0ZW0ub3V0LnByaW50bG4oZGljdGlvbmFyeU5hbWUpOworICAgICAgICAgICAgICAgIE9iamVjdCB0ID0gYnVuZGxlLmdldE9iamVjdChkaWN0aW9uYXJ5TmFtZSk7CisJCQkJLy8gU3lzdGVtLm91dC5wcmludGxuKHQpOworICAgICAgICAgICAgICAgIFVSTCB1cmwgPSAoVVJMKXQ7CisgICAgICAgICAgICAgICAgSW5wdXRTdHJlYW0gZGljdGlvbmFyeSA9IHVybC5vcGVuU3RyZWFtKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEaWN0aW9uYXJ5QmFzZWRCcmVha0l0ZXJhdG9yKHJ1bGVzLCBkaWN0aW9uYXJ5KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhdGNoKElPRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhdGNoKE1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbmV3IFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IocnVsZXMpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgYnJlYWsgaXRlcmF0b3IgY2xhc3MgXCIiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWVzW2tpbmRdICsgIlwiIik7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIGxpc3Qgb2YgbG9jYWxlcyBmb3Igd2hpY2ggQnJlYWtJdGVyYXRvcnMgY2FuIGJlIHVzZWQuCisgICAgICogQHJldHVybiBBbiBhcnJheSBvZiBMb2NhbGVzLiAgQWxsIG9mIHRoZSBsb2NhbGVzIGluIHRoZSBhcnJheSBjYW4KKyAgICAgKiBiZSB1c2VkIHdoZW4gY3JlYXRpbmcgYSBCcmVha0l0ZXJhdG9yLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgc3luY2hyb25pemVkIExvY2FsZVtdIGdldEF2YWlsYWJsZUxvY2FsZXMoKQorICAgIHsKKyAgICAgICAgaWYgKHNlcnZpY2UgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIElDVUxvY2FsZURhdGEuZ2V0QXZhaWxhYmxlTG9jYWxlcygpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHNlcnZpY2UuZ2V0QXZhaWxhYmxlTG9jYWxlcygpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2xhc3MgQnJlYWtJdGVyYXRvckNhY2hlIHsKKworICAgICAgICBwcml2YXRlIEJyZWFrSXRlcmF0b3IgaXRlcjsKKyAgICAgICAgcHJpdmF0ZSBMb2NhbGUgd2hlcmU7CisKKyAgICAgICAgQnJlYWtJdGVyYXRvckNhY2hlKExvY2FsZSB3aGVyZSwgQnJlYWtJdGVyYXRvciBpdGVyKSB7CisgICAgICAgICAgICB0aGlzLndoZXJlID0gd2hlcmU7CisgICAgICAgICAgICB0aGlzLml0ZXIgPSAoQnJlYWtJdGVyYXRvcikgaXRlci5jbG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAgTG9jYWxlIGdldExvY2FsZSgpIHsKKyAgICAgICAgICAgIHJldHVybiB3aGVyZTsKKyAgICAgICAgfQorCisgICAgICAgIEJyZWFrSXRlcmF0b3IgY3JlYXRlQnJlYWtJbnN0YW5jZSgpIHsKKyAgICAgICAgICAgIHJldHVybiAoQnJlYWtJdGVyYXRvcikgaXRlci5jbG9uZSgpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3RleHQvQnJlYWtUcmFuc2xpdGVyYXRvci5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvQnJlYWtUcmFuc2xpdGVyYXRvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhMTFlYjMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdGV4dC9CcmVha1RyYW5zbGl0ZXJhdG9yLmphdmEKQEAgLTAsMCArMSwzODggQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS90ZXh0L0JyZWFrVHJhbnNsaXRlcmF0b3IuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8xMS8yMiAwMDoyOTowMCAkIAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LnRleHQ7CisvL2ltcG9ydCBjb20uaWJtLmljdS5kZXYuZGVtby5pbXBsLio7CisvL2ltcG9ydCBjb20uaWJtLmljdS5sYW5nLio7CitpbXBvcnQgY29tLmlibS5pY3UubGFuZy5VQ2hhcmFjdGVyOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CitpbXBvcnQgamF2YS50ZXh0LkNoYXJhY3Rlckl0ZXJhdG9yOworLy9pbXBvcnQgamF2YS51dGlsLio7CisvL2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworLy9pbXBvcnQgamF2YS5pby4qOworCisvKioKKyAqIEluc2VydHMgdGhlIHNwZWNpZmllZCBjaGFyYWN0ZXJzIGF0IHdvcmQgYnJlYWtzLiBUbyByZXN0cmljdCBpdCB0byBwYXJ0aWN1bGFyIGNoYXJhY3RlcnMsIHVzZSBhIGZpbHRlci4KKyAqIFRPRE86IHRoaXMgaXMgYW4gaW50ZXJuYWwgY2xhc3MsIGFuZCBvbmx5IHRlbXBvcmFyeS4gUmVtb3ZlIGl0IG9uY2Ugd2UgaGF2ZSBcYiBub3RhdGlvbiBpbiBUcmFuc2xpdGVyYXRvci4KKyAqLworZmluYWwgY2xhc3MgQnJlYWtUcmFuc2xpdGVyYXRvciBleHRlbmRzIFRyYW5zbGl0ZXJhdG9yIHsKKyAgICBwcml2YXRlIEJyZWFrSXRlcmF0b3IgYmk7CisgICAgcHJpdmF0ZSBTdHJpbmcgaW5zZXJ0aW9uOworICAgIHByaXZhdGUgaW50W10gYm91bmRhcmllcyA9IG5ldyBpbnRbNTBdOworICAgIHByaXZhdGUgaW50IGJvdW5kYXJ5Q291bnQgPSAwOworICAgIAorICAgIHB1YmxpYyBCcmVha1RyYW5zbGl0ZXJhdG9yKFN0cmluZyBJRCwgVW5pY29kZUZpbHRlciBmaWx0ZXIsIEJyZWFrSXRlcmF0b3IgYmksIFN0cmluZyBpbnNlcnRpb24pIHsKKyAgICAgICAgc3VwZXIoSUQsIGZpbHRlcik7CisgICAgICAgIGlmIChiaSA9PSBudWxsKSBiaSA9IEJyZWFrSXRlcmF0b3IuZ2V0V29yZEluc3RhbmNlKG5ldyBMb2NhbGUoInRoIiwgIlRIIikpOworICAgICAgICB0aGlzLmJpID0gYmk7CisgICAgICAgIHRoaXMuaW5zZXJ0aW9uID0gaW5zZXJ0aW9uOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgQnJlYWtUcmFuc2xpdGVyYXRvcihTdHJpbmcgSUQsIFVuaWNvZGVGaWx0ZXIgZmlsdGVyKSB7CisgICAgICAgIHRoaXMoSUQsIGZpbHRlciwgbnVsbCwgIiAiKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIFN0cmluZyBnZXRJbnNlcnRpb24oKSB7CisgICAgICAgIHJldHVybiBpbnNlcnRpb247CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIHNldEluc2VydGlvbihTdHJpbmcgaW5zZXJ0aW9uKSB7CisgICAgICAgIHRoaXMuaW5zZXJ0aW9uID0gaW5zZXJ0aW9uOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgQnJlYWtJdGVyYXRvciBnZXRCcmVha0l0ZXJhdG9yKCkgeworICAgICAgICByZXR1cm4gYmk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIHNldEJyZWFrSXRlcmF0b3IoQnJlYWtJdGVyYXRvciBiaSkgeworICAgICAgICB0aGlzLmJpID0gYmk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBmaW5hbCBpbnQgTEVUVEVSX09SX01BUktfTUFTSyA9IAorICAgICAgICAgICgxPDxDaGFyYWN0ZXIuVVBQRVJDQVNFX0xFVFRFUikKKyAgICAgICAgfCAoMTw8Q2hhcmFjdGVyLkxPV0VSQ0FTRV9MRVRURVIpCisgICAgICAgIHwgKDE8PENoYXJhY3Rlci5USVRMRUNBU0VfTEVUVEVSKQorICAgICAgICB8ICgxPDxDaGFyYWN0ZXIuTU9ESUZJRVJfTEVUVEVSKQorICAgICAgICB8ICgxPDxDaGFyYWN0ZXIuT1RIRVJfTEVUVEVSKQorICAgICAgICB8ICgxPDxDaGFyYWN0ZXIuQ09NQklOSU5HX1NQQUNJTkdfTUFSSykKKyAgICAgICAgfCAoMTw8Q2hhcmFjdGVyLk5PTl9TUEFDSU5HX01BUkspCisgICAgICAgIHwgKDE8PENoYXJhY3Rlci5FTkNMT1NJTkdfTUFSSykKKyAgICAgICAgOworICAgIHByb3RlY3RlZCB2b2lkIGhhbmRsZVRyYW5zbGl0ZXJhdGUoUmVwbGFjZWFibGUgdGV4dCwgUG9zaXRpb24gcG9zLCBib29sZWFuIGluY3JlbWVudGFsKSB7CisgICAgICAgIGJvdW5kYXJ5Q291bnQgPSAwOworICAgICAgICBpbnQgYm91bmRhcnkgPSAwOworICAgICAgICBiaS5zZXRUZXh0KG5ldyBSZXBsYWNlYWJsZUNoYXJhY3Rlckl0ZXJhdG9yKHRleHQsIHBvcy5zdGFydCwgcG9zLmxpbWl0LCBwb3Muc3RhcnQpKTsKKyAgICAgICAgLy8gVE9ETzogZml4IGNsdW1zeSB3b3JrYXJvdW5kIHVzZWQgYmVsb3cuCisgICAgICAgIC8qCisgICAgICAgIGNoYXJbXSB0ZW1wQnVmZmVyID0gbmV3IGNoYXJbdGV4dC5sZW5ndGgoKV07CisgICAgICAgIHRleHQuZ2V0Q2hhcnMoMCwgdGV4dC5sZW5ndGgoKSwgdGVtcEJ1ZmZlciwgMCk7CisgICAgICAgIGJpLnNldFRleHQobmV3IFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yKG5ldyBTdHJpbmcodGVtcEJ1ZmZlciksIHBvcy5zdGFydCwgcG9zLmxpbWl0LCBwb3Muc3RhcnQpKTsKKyAgICAgICAgKi8KKyAgICAgICAgLy8gZW5kIGRlYnVnZ2luZworICAgICAgICAKKyAgICAgICAgLy8gVG8gbWFrZSB0aGluZ3MgbXVjaCBlYXNpZXIsIHdlIHdpbGwgc3RhY2sgdGhlIGJvdW5kYXJpZXMsIGFuZCB0aGVuIGluc2VydCBhdCB0aGUgZW5kLgorICAgICAgICAvLyBnZW5lcmFsbHksIHdlIHdvbid0IG5lZWQgdG9vIG1hbnksIHNpbmNlIHdlIHdpbGwgYmUgZmlsdGVyZWQuCisgICAgICAgIAorICAgICAgICBmb3IoYm91bmRhcnkgPSBiaS5maXJzdCgpOyBib3VuZGFyeSAhPSBiaS5ET05FICYmIGJvdW5kYXJ5IDwgcG9zLmxpbWl0OyBib3VuZGFyeSA9IGJpLm5leHQoKSkgeworICAgICAgICAgICAgaWYgKGJvdW5kYXJ5ID09IDApIGNvbnRpbnVlOworICAgICAgICAgICAgLy8gSEFDSzogQ2hlY2sgdG8gc2VlIHRoYXQgcHJlY2VlZGluZyBpdGVtIHdhcyBhIGxldHRlcgorCisgICAgICAgICAgICBpbnQgY3AgPSBVVEYxNi5jaGFyQXQodGV4dCwgYm91bmRhcnktMSk7CisgICAgICAgICAgICBpbnQgdHlwZSA9IFVDaGFyYWN0ZXIuZ2V0VHlwZShjcCk7CisgICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbihJbnRlZ2VyLnRvU3RyaW5nKGNwLDE2KSArICIgKGJlZm9yZSk6ICIgKyB0eXBlKTsKKyAgICAgICAgICAgIGlmICgoKDE8PHR5cGUpICYgTEVUVEVSX09SX01BUktfTUFTSykgPT0gMCkgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGNwID0gVVRGMTYuY2hhckF0KHRleHQsIGJvdW5kYXJ5KTsKKyAgICAgICAgICAgIHR5cGUgPSBVQ2hhcmFjdGVyLmdldFR5cGUoY3ApOworICAgICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oSW50ZWdlci50b1N0cmluZyhjcCwxNikgKyAiIChhZnRlcik6ICIgKyB0eXBlKTsKKyAgICAgICAgICAgIGlmICgoKDE8PHR5cGUpICYgTEVUVEVSX09SX01BUktfTUFTSykgPT0gMCkgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChib3VuZGFyeUNvdW50ID49IGJvdW5kYXJpZXMubGVuZ3RoKSB7ICAgICAgIC8vIHJlYWxsb2MgaWYgbmVjZXNzYXJ5CisgICAgICAgICAgICAgICAgaW50W10gdGVtcCA9IG5ldyBpbnRbYm91bmRhcmllcy5sZW5ndGggKiAyXTsKKyAgICAgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KGJvdW5kYXJpZXMsIDAsIHRlbXAsIDAsIGJvdW5kYXJpZXMubGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBib3VuZGFyaWVzID0gdGVtcDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgYm91bmRhcmllc1tib3VuZGFyeUNvdW50KytdID0gYm91bmRhcnk7CisgICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbihib3VuZGFyeSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGludCBkZWx0YSA9IDA7CisgICAgICAgIGludCBsYXN0Qm91bmRhcnkgPSAwOworICAgICAgICAKKyAgICAgICAgaWYgKGJvdW5kYXJ5Q291bnQgIT0gMCkgeyAvLyBpZiB3ZSBmb3VuZCBzb21ldGhpbmcsIGFkanVzdAorICAgICAgICAgICAgZGVsdGEgPSBib3VuZGFyeUNvdW50ICogaW5zZXJ0aW9uLmxlbmd0aCgpOworICAgICAgICAgICAgbGFzdEJvdW5kYXJ5ID0gYm91bmRhcmllc1tib3VuZGFyeUNvdW50LTFdOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyB3ZSBkbyB0aGlzIGZyb20gdGhlIGVuZCBiYWNrd2FyZHMsIHNvIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0byBrZWVwIHVwZGF0aW5nLgorICAgICAgICAgICAgCisgICAgICAgICAgICB3aGlsZSAoYm91bmRhcnlDb3VudCA+IDApIHsKKyAgICAgICAgICAgICAgICBib3VuZGFyeSA9IGJvdW5kYXJpZXNbLS1ib3VuZGFyeUNvdW50XTsKKyAgICAgICAgICAgICAgICB0ZXh0LnJlcGxhY2UoYm91bmRhcnksIGJvdW5kYXJ5LCBpbnNlcnRpb24pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBOb3cgZml4IHVwIHRoZSByZXR1cm4gdmFsdWVzCisgICAgICAgIHBvcy5jb250ZXh0TGltaXQgKz0gZGVsdGE7CisgICAgICAgIHBvcy5saW1pdCArPSBkZWx0YTsKKyAgICAgICAgcG9zLnN0YXJ0ID0gaW5jcmVtZW50YWwgPyBsYXN0Qm91bmRhcnkgKyBkZWx0YSA6IHBvcy5saW1pdDsKKyAgICB9CisgICAgCisgICAgCisgICAgLyoqCisgICAgICogUmVnaXN0ZXJzIHN0YW5kYXJkIHZhcmlhbnRzIHdpdGggdGhlIHN5c3RlbS4gIENhbGxlZCBieQorICAgICAqIFRyYW5zbGl0ZXJhdG9yIGR1cmluZyBpbml0aWFsaXphdGlvbi4KKyAgICAgKi8KKyAgICBzdGF0aWMgdm9pZCByZWdpc3RlcigpIHsKKyAgICAgICAgLy8gZmFsc2UgbWVhbnMgdGhhdCBpdCBpcyBpbnZpc2libGUKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgdHJhbnMgPSBuZXcgQnJlYWtUcmFuc2xpdGVyYXRvcigiQW55LUJyZWFrSW50ZXJuYWwiLCBudWxsKTsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IucmVnaXN0ZXJJbnN0YW5jZSh0cmFucywgZmFsc2UpOworICAgICAgICAvKgorICAgICAgICBUcmFuc2xpdGVyYXRvci5yZWdpc3RlckZhY3RvcnkoIkFueS1CcmVhayIsIG5ldyBUcmFuc2xpdGVyYXRvci5GYWN0b3J5KCkgeworICAgICAgICAgICAgcHVibGljIFRyYW5zbGl0ZXJhdG9yIGdldEluc3RhbmNlKFN0cmluZyBJRCkgeworICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQnJlYWtUcmFuc2xpdGVyYXRvcigiQW55LUJyZWFrIiwgbnVsbCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgICAqLworICAgIH0KKyAgICAKKyAgICAvLyBIYWNrLCBqdXN0IHRvIGdldCBhIHJlYWwgY2hhcmFjdGVyIGl0ZXJhdG9yLgorICAgIAorICAgIHN0YXRpYyBmaW5hbCBjbGFzcyBSZXBsYWNlYWJsZUNoYXJhY3Rlckl0ZXJhdG9yIGltcGxlbWVudHMgQ2hhcmFjdGVySXRlcmF0b3IKKyAgICB7CisgICAgICAgIHByaXZhdGUgUmVwbGFjZWFibGUgdGV4dDsKKyAgICAgICAgcHJpdmF0ZSBpbnQgYmVnaW47CisgICAgICAgIHByaXZhdGUgaW50IGVuZDsKKyAgICAgICAgLy8gaW52YXJpYW50OiBiZWdpbiA8PSBwb3MgPD0gZW5kCisgICAgICAgIHByaXZhdGUgaW50IHBvczsKKworICAgICAgICAvKioKKyAgICAgICAgKiBDb25zdHJ1Y3RzIGFuIGl0ZXJhdG9yIHdpdGggYW4gaW5pdGlhbCBpbmRleCBvZiAwLgorICAgICAgICAqLworICAgICAgICBwdWJsaWMgUmVwbGFjZWFibGVDaGFyYWN0ZXJJdGVyYXRvcihSZXBsYWNlYWJsZSB0ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICB0aGlzKHRleHQsIDApOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICogQ29uc3RydWN0cyBhbiBpdGVyYXRvciB3aXRoIHRoZSBzcGVjaWZpZWQgaW5pdGlhbCBpbmRleC4KKyAgICAgICAgKgorICAgICAgICAqIEBwYXJhbSAgdGV4dCAgIFRoZSBTdHJpbmcgdG8gYmUgaXRlcmF0ZWQgb3ZlcgorICAgICAgICAqIEBwYXJhbSAgcG9zICAgIEluaXRpYWwgaXRlcmF0b3IgcG9zaXRpb24KKyAgICAgICAgKi8KKyAgICAgICAgcHVibGljIFJlcGxhY2VhYmxlQ2hhcmFjdGVySXRlcmF0b3IoUmVwbGFjZWFibGUgdGV4dCwgaW50IHBvcykKKyAgICAgICAgeworICAgICAgICB0aGlzKHRleHQsIDAsIHRleHQubGVuZ3RoKCksIHBvcyk7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgKiBDb25zdHJ1Y3RzIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGdpdmVuIHJhbmdlIG9mIHRoZSBnaXZlbiBzdHJpbmcsIHdpdGggdGhlCisgICAgICAgICogaW5kZXggc2V0IGF0IHRoZSBzcGVjaWZpZWQgcG9zaXRpb24uCisgICAgICAgICoKKyAgICAgICAgKiBAcGFyYW0gIHRleHQgICBUaGUgU3RyaW5nIHRvIGJlIGl0ZXJhdGVkIG92ZXIKKyAgICAgICAgKiBAcGFyYW0gIGJlZ2luICBJbmRleCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyCisgICAgICAgICogQHBhcmFtICBlbmQgICAgSW5kZXggb2YgdGhlIGNoYXJhY3RlciBmb2xsb3dpbmcgdGhlIGxhc3QgY2hhcmFjdGVyCisgICAgICAgICogQHBhcmFtICBwb3MgICAgSW5pdGlhbCBpdGVyYXRvciBwb3NpdGlvbgorICAgICAgICAqLworICAgICAgICBwdWJsaWMgUmVwbGFjZWFibGVDaGFyYWN0ZXJJdGVyYXRvcihSZXBsYWNlYWJsZSB0ZXh0LCBpbnQgYmVnaW4sIGludCBlbmQsIGludCBwb3MpIHsKKyAgICAgICAgICAgIGlmICh0ZXh0ID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRoaXMudGV4dCA9IHRleHQ7CisKKyAgICAgICAgICAgIGlmIChiZWdpbiA8IDAgfHwgYmVnaW4gPiBlbmQgfHwgZW5kID4gdGV4dC5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgc3Vic3RyaW5nIHJhbmdlIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChwb3MgPCBiZWdpbiB8fCBwb3MgPiBlbmQpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIHBvc2l0aW9uIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRoaXMuYmVnaW4gPSBiZWdpbjsKKyAgICAgICAgICAgIHRoaXMuZW5kID0gZW5kOworICAgICAgICAgICAgdGhpcy5wb3MgPSBwb3M7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgKiBSZXNldCB0aGlzIGl0ZXJhdG9yIHRvIHBvaW50IHRvIGEgbmV3IHN0cmluZy4gIFRoaXMgcGFja2FnZS12aXNpYmxlCisgICAgICAgICogbWV0aG9kIGlzIHVzZWQgYnkgb3RoZXIgamF2YS50ZXh0IGNsYXNzZXMgdGhhdCB3YW50IHRvIGF2b2lkIGFsbG9jYXRpbmcKKyAgICAgICAgKiBuZXcgUmVwbGFjZWFibGVDaGFyYWN0ZXJJdGVyYXRvciBvYmplY3RzIGV2ZXJ5IHRpbWUgdGhlaXIgc2V0VGV4dCBtZXRob2QKKyAgICAgICAgKiBpcyBjYWxsZWQuCisgICAgICAgICoKKyAgICAgICAgKiBAcGFyYW0gIHRleHQgICBUaGUgU3RyaW5nIHRvIGJlIGl0ZXJhdGVkIG92ZXIKKyAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHZvaWQgc2V0VGV4dChSZXBsYWNlYWJsZSB0ZXh0KSB7CisgICAgICAgICAgICBpZiAodGV4dCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0aGlzLnRleHQgPSB0ZXh0OworICAgICAgICAgICAgdGhpcy5iZWdpbiA9IDA7CisgICAgICAgICAgICB0aGlzLmVuZCA9IHRleHQubGVuZ3RoKCk7CisgICAgICAgICAgICB0aGlzLnBvcyA9IDA7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgKiBJbXBsZW1lbnRzIENoYXJhY3Rlckl0ZXJhdG9yLmZpcnN0KCkgZm9yIFN0cmluZy4KKyAgICAgICAgKiBAc2VlIENoYXJhY3Rlckl0ZXJhdG9yI2ZpcnN0CisgICAgICAgICovCisgICAgICAgIHB1YmxpYyBjaGFyIGZpcnN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgcG9zID0gYmVnaW47CisgICAgICAgICAgICByZXR1cm4gY3VycmVudCgpOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICogSW1wbGVtZW50cyBDaGFyYWN0ZXJJdGVyYXRvci5sYXN0KCkgZm9yIFN0cmluZy4KKyAgICAgICAgKiBAc2VlIENoYXJhY3Rlckl0ZXJhdG9yI2xhc3QKKyAgICAgICAgKi8KKyAgICAgICAgcHVibGljIGNoYXIgbGFzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChlbmQgIT0gYmVnaW4pIHsKKyAgICAgICAgICAgICAgICBwb3MgPSBlbmQgLSAxOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBwb3MgPSBlbmQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gY3VycmVudCgpOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICogSW1wbGVtZW50cyBDaGFyYWN0ZXJJdGVyYXRvci5zZXRJbmRleCgpIGZvciBTdHJpbmcuCisgICAgICAgICogQHNlZSBDaGFyYWN0ZXJJdGVyYXRvciNzZXRJbmRleAorICAgICAgICAqLworICAgICAgICBwdWJsaWMgY2hhciBzZXRJbmRleChpbnQgcCkKKyAgICAgICAgeworICAgICAgICBpZiAocCA8IGJlZ2luIHx8IHAgPiBlbmQpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIGluZGV4Iik7CisgICAgICAgIH0KKyAgICAgICAgICAgIHBvcyA9IHA7CisgICAgICAgICAgICByZXR1cm4gY3VycmVudCgpOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICogSW1wbGVtZW50cyBDaGFyYWN0ZXJJdGVyYXRvci5jdXJyZW50KCkgZm9yIFN0cmluZy4KKyAgICAgICAgKiBAc2VlIENoYXJhY3Rlckl0ZXJhdG9yI2N1cnJlbnQKKyAgICAgICAgKi8KKyAgICAgICAgcHVibGljIGNoYXIgY3VycmVudCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChwb3MgPj0gYmVnaW4gJiYgcG9zIDwgZW5kKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRleHQuY2hhckF0KHBvcyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gRE9ORTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAqIEltcGxlbWVudHMgQ2hhcmFjdGVySXRlcmF0b3IubmV4dCgpIGZvciBTdHJpbmcuCisgICAgICAgICogQHNlZSBDaGFyYWN0ZXJJdGVyYXRvciNuZXh0CisgICAgICAgICovCisgICAgICAgIHB1YmxpYyBjaGFyIG5leHQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAocG9zIDwgZW5kIC0gMSkgeworICAgICAgICAgICAgICAgIHBvcysrOworICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0LmNoYXJBdChwb3MpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcG9zID0gZW5kOworICAgICAgICAgICAgICAgIHJldHVybiBET05FOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICogSW1wbGVtZW50cyBDaGFyYWN0ZXJJdGVyYXRvci5wcmV2aW91cygpIGZvciBTdHJpbmcuCisgICAgICAgICogQHNlZSBDaGFyYWN0ZXJJdGVyYXRvciNwcmV2aW91cworICAgICAgICAqLworICAgICAgICBwdWJsaWMgY2hhciBwcmV2aW91cygpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChwb3MgPiBiZWdpbikgeworICAgICAgICAgICAgICAgIHBvcy0tOworICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0LmNoYXJBdChwb3MpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIERPTkU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgKiBJbXBsZW1lbnRzIENoYXJhY3Rlckl0ZXJhdG9yLmdldEJlZ2luSW5kZXgoKSBmb3IgU3RyaW5nLgorICAgICAgICAqIEBzZWUgQ2hhcmFjdGVySXRlcmF0b3IjZ2V0QmVnaW5JbmRleAorICAgICAgICAqLworICAgICAgICBwdWJsaWMgaW50IGdldEJlZ2luSW5kZXgoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYmVnaW47CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgKiBJbXBsZW1lbnRzIENoYXJhY3Rlckl0ZXJhdG9yLmdldEVuZEluZGV4KCkgZm9yIFN0cmluZy4KKyAgICAgICAgKiBAc2VlIENoYXJhY3Rlckl0ZXJhdG9yI2dldEVuZEluZGV4CisgICAgICAgICovCisgICAgICAgIHB1YmxpYyBpbnQgZ2V0RW5kSW5kZXgoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZW5kOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICogSW1wbGVtZW50cyBDaGFyYWN0ZXJJdGVyYXRvci5nZXRJbmRleCgpIGZvciBTdHJpbmcuCisgICAgICAgICogQHNlZSBDaGFyYWN0ZXJJdGVyYXRvciNnZXRJbmRleAorICAgICAgICAqLworICAgICAgICBwdWJsaWMgaW50IGdldEluZGV4KCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHBvczsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAqIENvbXBhcmVzIHRoZSBlcXVhbGl0eSBvZiB0d28gUmVwbGFjZWFibGVDaGFyYWN0ZXJJdGVyYXRvciBvYmplY3RzLgorICAgICAgICAqIEBwYXJhbSBvYmogdGhlIFJlcGxhY2VhYmxlQ2hhcmFjdGVySXRlcmF0b3Igb2JqZWN0IHRvIGJlIGNvbXBhcmVkIHdpdGguCisgICAgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSBnaXZlbiBvYmogaXMgdGhlIHNhbWUgYXMgdGhpcworICAgICAgICAqIFJlcGxhY2VhYmxlQ2hhcmFjdGVySXRlcmF0b3Igb2JqZWN0OyBmYWxzZSBvdGhlcndpc2UuCisgICAgICAgICovCisgICAgICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb2JqKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAodGhpcyA9PSBvYmopIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghKG9iaiBpbnN0YW5jZW9mIFJlcGxhY2VhYmxlQ2hhcmFjdGVySXRlcmF0b3IpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBSZXBsYWNlYWJsZUNoYXJhY3Rlckl0ZXJhdG9yIHRoYXQgPSAoUmVwbGFjZWFibGVDaGFyYWN0ZXJJdGVyYXRvcikgb2JqOworCisgICAgICAgICAgICBpZiAoaGFzaENvZGUoKSAhPSB0aGF0Lmhhc2hDb2RlKCkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIXRleHQuZXF1YWxzKHRoYXQudGV4dCkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocG9zICE9IHRoYXQucG9zIHx8IGJlZ2luICE9IHRoYXQuYmVnaW4gfHwgZW5kICE9IHRoYXQuZW5kKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgKiBDb21wdXRlcyBhIGhhc2hjb2RlIGZvciB0aGlzIGl0ZXJhdG9yLgorICAgICAgICAqIEByZXR1cm4gQSBoYXNoIGNvZGUKKyAgICAgICAgKi8KKyAgICAgICAgcHVibGljIGludCBoYXNoQ29kZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0ZXh0Lmhhc2hDb2RlKCkgXiBwb3MgXiBiZWdpbiBeIGVuZDsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAqIENyZWF0ZXMgYSBjb3B5IG9mIHRoaXMgaXRlcmF0b3IuCisgICAgICAgICogQHJldHVybiBBIGNvcHkgb2YgdGhpcworICAgICAgICAqLworICAgICAgICBwdWJsaWMgT2JqZWN0IGNsb25lKCkKKyAgICAgICAgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBSZXBsYWNlYWJsZUNoYXJhY3Rlckl0ZXJhdG9yIG90aGVyCisgICAgICAgICAgICAgICAgPSAoUmVwbGFjZWFibGVDaGFyYWN0ZXJJdGVyYXRvcikgc3VwZXIuY2xvbmUoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXRjaCAoQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgIH0KKyAgICAgICAgCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3RleHQvQ2Fub25pY2FsSXRlcmF0b3IuamF2YSBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L0Nhbm9uaWNhbEl0ZXJhdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZGQ3ZGVkMQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L0Nhbm9uaWNhbEl0ZXJhdG9yLmphdmEKQEAgLTAsMCArMSw1MzUgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS90ZXh0L0Nhbm9uaWNhbEl0ZXJhdG9yLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDkvMTcgMTk6MTE6NTIgJCAKKyAqICRSZXZpc2lvbjogMS4xMiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UudGV4dDsKKworaW1wb3J0IGNvbS5pYm0uaWN1LmxhbmcuKjsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLk5vcm1hbGl6ZXJJbXBsOworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuVVNlcmlhbGl6ZWRTZXQ7CisvKioKKyAqIFRoaXMgY2xhc3MgYWxsb3dzIG9uZSB0byBpdGVyYXRlIHRocm91Z2ggYWxsIHRoZSBzdHJpbmdzIHRoYXQgYXJlIGNhbm9uaWNhbGx5IGVxdWl2YWxlbnQgdG8gYSBnaXZlbgorICogc3RyaW5nLiBGb3IgZXhhbXBsZSwgaGVyZSBhcmUgc29tZSBzYW1wbGUgcmVzdWx0czoKKyAqIFJlc3VsdHMgZm9yOiB7QSBXSVRIIFJJTkcgQUJPVkV9e2R9e0RPVCBBQk9WRX17Q0VESUxMQX0KKyAqIDxwcmU+CisgMToge0F9e1JJTkcgQUJPVkV9e2R9e0RPVCBBQk9WRX17Q0VESUxMQX0KKyAyOiB7QX17UklORyBBQk9WRX17ZH17Q0VESUxMQX17RE9UIEFCT1ZFfQorIDM6IHtBfXtSSU5HIEFCT1ZFfXtkIFdJVEggRE9UIEFCT1ZFfXtDRURJTExBfQorIDQ6IHtBfXtSSU5HIEFCT1ZFfXtkIFdJVEggQ0VESUxMQX17RE9UIEFCT1ZFfQorIDU6IHtBIFdJVEggUklORyBBQk9WRX17ZH17RE9UIEFCT1ZFfXtDRURJTExBfQorIDY6IHtBIFdJVEggUklORyBBQk9WRX17ZH17Q0VESUxMQX17RE9UIEFCT1ZFfQorIDc6IHtBIFdJVEggUklORyBBQk9WRX17ZCBXSVRIIERPVCBBQk9WRX17Q0VESUxMQX0KKyA4OiB7QSBXSVRIIFJJTkcgQUJPVkV9e2QgV0lUSCBDRURJTExBfXtET1QgQUJPVkV9CisgOToge0FOR1NUUk9NIFNJR059e2R9e0RPVCBBQk9WRX17Q0VESUxMQX0KKzEwOiB7QU5HU1RST00gU0lHTn17ZH17Q0VESUxMQX17RE9UIEFCT1ZFfQorMTE6IHtBTkdTVFJPTSBTSUdOfXtkIFdJVEggRE9UIEFCT1ZFfXtDRURJTExBfQorMTI6IHtBTkdTVFJPTSBTSUdOfXtkIFdJVEggQ0VESUxMQX17RE9UIEFCT1ZFfQorICo8L3ByZT4KKyAqPGJyPk5vdGU6IHRoZSBjb2RlIGlzIGludGVuZGVkIGZvciB1c2Ugd2l0aCBzbWFsbCBzdHJpbmdzLCBhbmQgaXMgbm90IHN1aXRhYmxlIGZvciBsYXJnZXIgb25lcywKKyAqIHNpbmNlIGl0IGhhcyBub3QgYmVlbiBvcHRpbWl6ZWQgZm9yIHRoYXQgc2l0dWF0aW9uLgorICogQGF1dGhvciBNLiBEYXZpcworICogQGRyYWZ0IElDVSAyLjQKKyAqLworCitwdWJsaWMgZmluYWwgY2xhc3MgQ2Fub25pY2FsSXRlcmF0b3IgeworICAgIC8qKgorICAgICAqIENvbnN0cnVjdCBhIENhbm9uaWNhbEl0ZXJhdG9yIG9iamVjdAorICAgICAqIEBwYXJhbSBzb3VyY2Ugc3RyaW5nIHRvIGdldCByZXN1bHRzIGZvcgorCSAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIENhbm9uaWNhbEl0ZXJhdG9yKFN0cmluZyBzb3VyY2UpIHsKKyAgICAgICAgc2V0U291cmNlKHNvdXJjZSk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEdldHMgdGhlIE5GRCBmb3JtIG9mIHRoZSBjdXJyZW50IHNvdXJjZSB3ZSBhcmUgaXRlcmF0aW5nIG92ZXIuCisgICAgICogQHJldHVybiBnZXRzIHRoZSBzb3VyY2U6IE5PVEU6IGl0IGlzIHRoZSBORkQgZm9ybSBvZiB0aGUgc291cmNlIG9yaWdpbmFsbHkgcGFzc2VkIGluCisJICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIGdldFNvdXJjZSgpIHsKKyAgICAgIHJldHVybiBzb3VyY2U7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJlc2V0cyB0aGUgaXRlcmF0b3Igc28gdGhhdCBvbmUgY2FuIHN0YXJ0IGFnYWluIGZyb20gdGhlIGJlZ2lubmluZy4KKwkgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHJlc2V0KCkgeworICAgICAgICBkb25lID0gZmFsc2U7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY3VycmVudC5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgY3VycmVudFtpXSA9IDA7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogR2V0IHRoZSBuZXh0IGNhbm9uaWNhbGx5IGVxdWl2YWxlbnQgc3RyaW5nLgorCSAqIDxicj48Yj5XYXJuaW5nOiBUaGUgc3RyaW5ncyBhcmUgbm90IGd1YXJhbnRlZWQgdG8gYmUgaW4gYW55IHBhcnRpY3VsYXIgb3JkZXIuPC9iPgorICAgICAqIEByZXR1cm4gdGhlIG5leHQgc3RyaW5nIHRoYXQgaXMgY2Fub25pY2FsbHkgZXF1aXZhbGVudC4gVGhlIHZhbHVlIG51bGwgaXMgcmV0dXJuZWQgd2hlbgorICAgICAqIHRoZSBpdGVyYXRpb24gaXMgZG9uZS4KKwkgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgbmV4dCgpIHsKKyAgICAgICAgaWYgKGRvbmUpIHJldHVybiBudWxsOworICAgICAgICAKKyAgICAgICAgLy8gY29uc3RydWN0IHJldHVybiB2YWx1ZQorICAgICAgICAKKyAgICAgICAgYnVmZmVyLnNldExlbmd0aCgwKTsgLy8gZGVsZXRlIG9sZCBjb250ZW50cworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHBpZWNlcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChwaWVjZXNbaV1bY3VycmVudFtpXV0pOworICAgICAgICB9CisgICAgICAgIFN0cmluZyByZXN1bHQgPSBidWZmZXIudG9TdHJpbmcoKTsKKyAgICAgICAgCisgICAgICAgIC8vIGZpbmQgbmV4dCB2YWx1ZSBmb3IgbmV4dCB0aW1lCisgICAgICAgIAorICAgICAgICBmb3IgKGludCBpID0gY3VycmVudC5sZW5ndGggLSAxOyA7IC0taSkgeworICAgICAgICAgICAgaWYgKGkgPCAwKSB7CisgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjdXJyZW50W2ldKys7CisgICAgICAgICAgICBpZiAoY3VycmVudFtpXSA8IHBpZWNlc1tpXS5sZW5ndGgpIGJyZWFrOyAvLyBnb3Qgc2VxdWVuY2UKKyAgICAgICAgICAgIGN1cnJlbnRbaV0gPSAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFNldCBhIG5ldyBzb3VyY2UgZm9yIHRoaXMgaXRlcmF0b3IuIEFsbG93cyBvYmplY3QgcmV1c2UuCisgICAgICogQHBhcmFtIHNldCB0aGUgc291cmNlIHN0cmluZyB0byBpdGVyYXRlIGFnYWluc3QuIFRoaXMgYWxsb3dzIHRoZSBzYW1lIGl0ZXJhdG9yIHRvIGJlIHVzZWQKKyAgICAgKiB3aGlsZSBjaGFuZ2luZyB0aGUgc291cmNlIHN0cmluZywgc2F2aW5nIG9iamVjdCBjcmVhdGlvbi4KKwkgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFNvdXJjZShTdHJpbmcgbmV3U291cmNlKSB7CisgICAgICAgIHNvdXJjZSA9IE5vcm1hbGl6ZXIubm9ybWFsaXplKG5ld1NvdXJjZSwgTm9ybWFsaXplci5ORkQpOworICAgICAgICBkb25lID0gZmFsc2U7CisgICAgICAgIAorICAgICAgICAvLyBjYXRjaCBkZWdlbmVyYXRlIGNhc2UKKyAgICAJaWYgKG5ld1NvdXJjZS5sZW5ndGgoKSA9PSAwKSB7CisgICAgCQlwaWVjZXMgPSBuZXcgU3RyaW5nWzFdW107CisgICAgCQljdXJyZW50ID0gbmV3IGludFsxXTsKKyAgICAJCXBpZWNlc1swXSA9IG5ldyBTdHJpbmdbXXsiIn07CisgICAgCQlyZXR1cm47CisgICAgCX0KKyAgICAgICAgCisgICAgICAgIC8vIGZpbmQgdGhlIHNlZ21lbnRzCisgICAgICAgIExpc3QgbGlzdCA9IG5ldyBBcnJheUxpc3QoKTsKKyAgICAgICAgaW50IGNwOworICAgICAgICBpbnQgc3RhcnQgPSAwOworICAgICAgICAKKwkgICAgLy8gaSBzaG91bGQgYmUgdGhlIGVuZCBvZiB0aGUgZmlyc3QgY29kZSBwb2ludAorCSAgICAKKwkgICAgaW50IGkgPSBVVEYxNi5maW5kT2Zmc2V0RnJvbUNvZGVQb2ludChzb3VyY2UsIDEpOworICAgICAgICAKKyAgICAgICAgZm9yICg7IGkgPCBzb3VyY2UubGVuZ3RoKCk7IGkgKz0gVVRGMTYuZ2V0Q2hhckNvdW50KGkpKSB7CisgICAgICAgICAgICBjcCA9IFVURjE2LmNoYXJBdChzb3VyY2UsIGkpOworICAgICAgICAgICAgaWYgKE5vcm1hbGl6ZXJJbXBsLmlzQ2Fub25TYWZlU3RhcnQoY3ApKSB7CisgICAgICAgICAgICAgICAgbGlzdC5hZGQoc291cmNlLnN1YnN0cmluZyhzdGFydCwgaSkpOyAvLyBhZGQgdXAgdG8gaQorICAgICAgICAgICAgICAgIHN0YXJ0ID0gaTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBsaXN0LmFkZChzb3VyY2Uuc3Vic3RyaW5nKHN0YXJ0LCBpKSk7IC8vIGFkZCBsYXN0IG9uZQorICAgICAgICAKKyAgICAgICAgLy8gYWxsb2NhdGUgdGhlIGFycmF5cywgYW5kIGZpbmQgdGhlIHN0cmluZ3MgdGhhdCBhcmUgQ0UgdG8gZWFjaCBzZWdtZW50CisgICAgICAgIHBpZWNlcyA9IG5ldyBTdHJpbmdbbGlzdC5zaXplKCldW107CisgICAgICAgIGN1cnJlbnQgPSBuZXcgaW50W2xpc3Quc2l6ZSgpXTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHBpZWNlcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgaWYgKFBST0dSRVNTKSBTeXN0ZW0ub3V0LnByaW50bG4oIlNFR01FTlQiKTsKKyAgICAgICAgICAgIHBpZWNlc1tpXSA9IGdldEVxdWl2YWxlbnRzKChTdHJpbmcpIGxpc3QuZ2V0KGkpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBTaW1wbGUgaW1wbGVtZW50YXRpb24gb2YgcGVybXV0YXRpb24uIAorCSAqIDxicj48Yj5XYXJuaW5nOiBUaGUgc3RyaW5ncyBhcmUgbm90IGd1YXJhbnRlZWQgdG8gYmUgaW4gYW55IHBhcnRpY3VsYXIgb3JkZXIuPC9iPgorICAgICAqIEBwYXJhbSBzb3VyY2UgdGhlIHN0cmluZyB0byBmaW5kIHBlcm11dGF0aW9ucyBmb3IKKyAgICAgKiBAcGFyYW0gdGhlIHNldCB0byBhZGQgdGhlIHJlc3VsdHMgdG8KKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgcGVybXV0ZShTdHJpbmcgc291cmNlLCBib29sZWFuIHNraXBaZXJvcywgU2V0IG91dHB1dCkgeworICAgIAkvLyBUT0RPOiBvcHRpbWl6ZQorICAgICAgICAvL2lmIChQUk9HUkVTUykgU3lzdGVtLm91dC5wcmludGxuKCJQZXJtdXRlOiAiICsgc291cmNlKTsKKyAgICAgICAgCisgICAgICAgIC8vIG9wdGltaXphdGlvbjoKKyAgICAgICAgLy8gaWYgemVybyBvciBvbmUgY2hhcmFjdGVyLCBqdXN0IHJldHVybiBhIHNldCB3aXRoIGl0CisgICAgICAgIC8vIHdlIGNoZWNrIGZvciBsZW5ndGggPCAyIHRvIGtlZXAgZnJvbSBjb3VudGluZyBjb2RlIHBvaW50cyBhbGwgdGhlIHRpbWUKKyAgICAgICAgaWYgKHNvdXJjZS5sZW5ndGgoKSA8PSAyICYmIFVURjE2LmNvdW50Q29kZVBvaW50KHNvdXJjZSkgPD0gMSkgeworICAgICAgICAgICAgb3V0cHV0LmFkZChzb3VyY2UpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBvdGhlcndpc2UgaXRlcmF0ZSB0aHJvdWdoIHRoZSBzdHJpbmcsIGFuZCByZWN1cnNpdmVseSBwZXJtdXRlIGFsbCB0aGUgb3RoZXIgY2hhcmFjdGVycworICAgICAgICBTZXQgc3VicGVybXV0ZSA9IG5ldyBIYXNoU2V0KCk7CisgICAgICAgIGludCBjcDsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzb3VyY2UubGVuZ3RoKCk7IGkgKz0gVVRGMTYuZ2V0Q2hhckNvdW50KGNwKSkgeworICAgICAgICAgICAgY3AgPSBVVEYxNi5jaGFyQXQoc291cmNlLCBpKTsKKyAgICAgICAgICAgIAorICAgICAgICAJLy8gb3B0aW1pemF0aW9uOgorICAgICAgICAJLy8gaWYgdGhlIGNoYXJhY3RlciBpcyBjYW5vbmljYWwgY29tYmluaW5nIGNsYXNzIHplcm8sCisgICAgICAgIAkvLyBkb24ndCBwZXJtdXRlIGl0CisgICAgICAgIAlpZiAoc2tpcFplcm9zICYmIGkgIT0gMCAmJiBVQ2hhcmFjdGVyLmdldENvbWJpbmluZ0NsYXNzKGNwKSA9PSAwKSB7CisgICAgICAgIAkJLy9TeXN0ZW0ub3V0LnByaW50bG4oIlNraXBwaW5nICIgKyBVdGlsaXR5LmhleChVVEYxNi52YWx1ZU9mKHNvdXJjZSwgaSkpKTsKKwkgICAgICAgIAljb250aW51ZTsKKyAgICAgICAgCX0gICAgICAgICAgICAKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gc2VlIHdoYXQgdGhlIHBlcm11dGF0aW9ucyBvZiB0aGUgY2hhcmFjdGVycyBiZWZvcmUgYW5kIGFmdGVyIHRoaXMgb25lIGFyZQorICAgICAgICAgICAgc3VicGVybXV0ZS5jbGVhcigpOworICAgICAgICAgICAgcGVybXV0ZShzb3VyY2Uuc3Vic3RyaW5nKDAsaSkgCisgICAgICAgICAgICAJKyBzb3VyY2Uuc3Vic3RyaW5nKGkgKyBVVEYxNi5nZXRDaGFyQ291bnQoY3ApKSwgc2tpcFplcm9zLCBzdWJwZXJtdXRlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gcHJlZml4IHRoaXMgY2hhcmFjdGVyIHRvIGFsbCBvZiB0aGVtCisgICAgICAgICAgICBTdHJpbmcgY2hTdHIgPSBVVEYxNi52YWx1ZU9mKHNvdXJjZSwgaSk7CisgICAgICAgICAgICBJdGVyYXRvciBpdCA9IHN1YnBlcm11dGUuaXRlcmF0b3IoKTsKKyAgICAgICAgICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgcGllY2UgPSBjaFN0ciArIChTdHJpbmcpIGl0Lm5leHQoKTsKKyAgICAgICAgICAgICAgICAvL2lmIChQUk9HUkVTUykgU3lzdGVtLm91dC5wcmludGxuKCIgIFBpZWNlOiAiICsgcGllY2UpOworICAgICAgICAgICAgICAgIG91dHB1dC5hZGQocGllY2UpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgLy8gRk9SIFRFU1RJTkcKKyAgICAKKyAgICAvKioKKyAgICAgKkByZXR1cm4gdGhlIHNldCBvZiAic2FmZSBzdGFydHMiLCBjaGFyYWN0ZXJzIHRoYXQgYXJlIGNsYXNzIHplcm8gQU5EIGFyZSBuZXZlciBub24taW5pdGlhbCBpbiBhIGRlY29tcG9zaXRpb24uCisgICAgICpAaW50ZXJuYWwKKyAgICAgKgorICAgIHB1YmxpYyBzdGF0aWMgVW5pY29kZVNldCBnZXRTYWZlU3RhcnQoKSB7CisgICAgICAgIHJldHVybiAoVW5pY29kZVNldCkgU0FGRV9TVEFSVC5jbG9uZSgpOworICAgIH0KKyAgICAqLworICAgIC8qKgorICAgICAqQHJldHVybiB0aGUgc2V0IG9mIGNoYXJhY3RlcnMgd2hvc2UgZGVjb21wb3NpdGlvbnMgc3RhcnQgd2l0aCB0aGUgZ2l2ZW4gY2hhcmFjdGVyCisgICAgICpAaW50ZXJuYWwKKyAgICAgKgorICAgIHB1YmxpYyBzdGF0aWMgVW5pY29kZVNldCBnZXRTdGFydHMoaW50IGNwKSB7CisgICAgICAgIFVuaWNvZGVTZXQgcmVzdWx0ID0gQVRfU1RBUlQuZ2V0KGNwKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKSByZXN1bHQgPSBFTVBUWTsKKyAgICAgICAgcmV0dXJuIChVbmljb2RlU2V0KSByZXN1bHQuY2xvbmUoKTsKKyAgICB9CisgICAgKi8KKyAgICAKKyAgICAvLyA9PT09PT09PT09PT09PT09PT09PT0gUFJJVkFURVMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgCisgICAgLy8gZGVidWcKKyAgICBwcml2YXRlIHN0YXRpYyBib29sZWFuIFBST0dSRVNTID0gZmFsc2U7IC8vIGRlYnVnIHByb2dyZXNzCisgICAgcHJpdmF0ZSBzdGF0aWMgVHJhbnNsaXRlcmF0b3IgTkFNRSA9IFBST0dSRVNTID8gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoIm5hbWUiKSA6IG51bGw7CisgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBTS0lQX1pFUk9TID0gdHJ1ZTsKKyAKKyAgICAvLyBmaWVsZHMKKyAgICBwcml2YXRlIFN0cmluZyBzb3VyY2U7CisgICAgcHJpdmF0ZSBib29sZWFuIGRvbmU7CisgICAgcHJpdmF0ZSBTdHJpbmdbXVtdIHBpZWNlczsKKyAgICBwcml2YXRlIGludFtdIGN1cnJlbnQ7CisgICAgLy8gTm90ZTogQyB3aWxsIG5lZWQgdHdvIG1vcmUgZmllbGRzLCBzaW5jZSBhcnJheXMgdGhlcmUgZG9uJ3QgaGF2ZSBsZW5ndGhzCisgICAgLy8gaW50IHBpZWNlc19sZW5ndGg7CisgICAgLy8gaW50W10gcGllY2VzX2xlbmd0aHM7CisgICAgCisgICAgLy8gdHJhbnNpZW50IGZpZWxkcworICAgIHByaXZhdGUgdHJhbnNpZW50IFN0cmluZ0J1ZmZlciBidWZmZXIgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgCisgICAgCisgICAgLy8gd2UgaGF2ZSBhIHNlZ21lbnQsIGluIE5GRC4gRmluZCBhbGwgdGhlIHN0cmluZ3MgdGhhdCBhcmUgY2Fub25pY2FsbHkgZXF1aXZhbGVudCB0byBpdC4KKyAgICBwcml2YXRlIFN0cmluZ1tdIGdldEVxdWl2YWxlbnRzKFN0cmluZyBzZWdtZW50KSB7CisgICAgICAgIFNldCByZXN1bHQgPSBuZXcgSGFzaFNldCgpOworICAgICAgICBTZXQgYmFzaWMgPSBnZXRFcXVpdmFsZW50czIoc2VnbWVudCk7CisgICAgICAgIFNldCBwZXJtdXRhdGlvbnMgPSBuZXcgSGFzaFNldCgpOworICAgICAgICAKKyAgICAgICAgLy8gbm93IGdldCBhbGwgdGhlIHBlcm11dGF0aW9ucworICAgICAgICAvLyBhZGQgb25seSB0aGUgb25lcyB0aGF0IGFyZSBjYW5vbmljYWxseSBlcXVpdmFsZW50CisgICAgICAgIC8vIFRPRE86IG9wdGltaXplIGJ5IG5vdCBwZXJtdXRpbmcgYW55IGNsYXNzIHplcm8uCisgICAgICAgIEl0ZXJhdG9yIGl0ID0gYmFzaWMuaXRlcmF0b3IoKTsKKyAgICAgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkgeworICAgICAgICAgICAgU3RyaW5nIGl0ZW0gPSAoU3RyaW5nKSBpdC5uZXh0KCk7CisgICAgICAgIAlwZXJtdXRhdGlvbnMuY2xlYXIoKTsKKyAgICAgICAgICAgIHBlcm11dGUoaXRlbSwgU0tJUF9aRVJPUywgcGVybXV0YXRpb25zKTsKKyAgICAgICAgICAgIEl0ZXJhdG9yIGl0MiA9IHBlcm11dGF0aW9ucy5pdGVyYXRvcigpOworICAgICAgICAgICAgd2hpbGUgKGl0Mi5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgcG9zc2libGUgPSAoU3RyaW5nKSBpdDIubmV4dCgpOworICAgICAgICAgICAgICAgIAorLyogICAgICAgICAgICAgICAKKwkJCQlTdHJpbmcgYXR0ZW1wdCA9IE5vcm1hbGl6ZXIubm9ybWFsaXplKHBvc3NpYmxlLCBOb3JtYWxpemVyLkRFQ09NUCwgMCk7CisJCQkJaWYgKGF0dGVtcHQuZXF1YWxzKHNlZ21lbnQpKSB7CisqLworICAgICAgICAgICAgICAgIGlmIChOb3JtYWxpemVyLmNvbXBhcmUocG9zc2libGUsIHNlZ21lbnQsMCk9PTApIHsKKyAgICAgICAgICAgICAJICAgICAgICAgICAgICAgCQorICAgICAgICAgICAgCQlpZiAoUFJPR1JFU1MpIFN5c3RlbS5vdXQucHJpbnRsbigiQWRkaW5nIFBlcm11dGF0aW9uOiAiICsgTkFNRS50cmFuc2xpdGVyYXRlKHBvc3NpYmxlKSk7CisgICAgICAgICAgICAgICAgCXJlc3VsdC5hZGQocG9zc2libGUpOworCisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIAkJaWYgKFBST0dSRVNTKSBTeXN0ZW0ub3V0LnByaW50bG4oIi1Ta2lwcGluZyBQZXJtdXRhdGlvbjogIiArIE5BTUUudHJhbnNsaXRlcmF0ZShwb3NzaWJsZSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gY29udmVydCBpbnRvIGEgU3RyaW5nW10gdG8gY2xlYW4gdXAgc3RvcmFnZQorICAgICAgICBTdHJpbmdbXSBmaW5hbFJlc3VsdCA9IG5ldyBTdHJpbmdbcmVzdWx0LnNpemUoKV07CisgICAgICAgIHJlc3VsdC50b0FycmF5KGZpbmFsUmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGZpbmFsUmVzdWx0OworICAgIH0KKyAgICAKKyAgICAgCisgICAgcHJpdmF0ZSBTZXQgZ2V0RXF1aXZhbGVudHMyKFN0cmluZyBzZWdtZW50KSB7CisgICAgICAgIAorICAgICAgICBTZXQgcmVzdWx0ID0gbmV3IEhhc2hTZXQoKTsKKyAgICAgICAgCisgICAgICAgIGlmIChQUk9HUkVTUykgU3lzdGVtLm91dC5wcmludGxuKCJBZGRpbmc6ICIgKyBOQU1FLnRyYW5zbGl0ZXJhdGUoc2VnbWVudCkpOworICAgICAgICAKKyAgICAgICAgcmVzdWx0LmFkZChzZWdtZW50KTsKKyAgICAgICAgU3RyaW5nQnVmZmVyIHdvcmtpbmdCdWZmZXIgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIAorICAgICAgICAvLyBjeWNsZSB0aHJvdWdoIGFsbCB0aGUgY2hhcmFjdGVycworICAgICAgICBpbnQgY3A9MCxlbmQ9MDsKKwkgICAgaW50W10gcmFuZ2UgPSBuZXcgaW50WzJdOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNlZ21lbnQubGVuZ3RoKCk7IGkgKz0gVVRGMTYuZ2V0Q2hhckNvdW50KGNwKSkgeworICAgICAgICAgICAgCisJICAgICAgICAvLyBzZWUgaWYgYW55IGNoYXJhY3RlciBpcyBhdCB0aGUgc3RhcnQgb2Ygc29tZSBkZWNvbXBvc2l0aW9uCisJICAgICAgICBjcCA9IFVURjE2LmNoYXJBdChzZWdtZW50LCBpKTs7CisJICAgICAgICBVU2VyaWFsaXplZFNldCBzdGFydHMgPSBuZXcgVVNlcmlhbGl6ZWRTZXQoKTsKKyAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIU5vcm1hbGl6ZXJJbXBsLmdldENhbm9uU3RhcnRTZXQoY3AsIHN0YXJ0cykpIHsKKwkgICAgICAgICAgY29udGludWU7CisJICAgICAgICB9CisJICAgICAgICBpbnQgaj0wOworICAgICAgICAgICAgLy8gaWYgc28sIHNlZSB3aGljaCBkZWNvbXBvc2l0aW9ucyBtYXRjaCAKKwkgICAgICAgIGZvcihqID0gMCwgY3AgPSBlbmQrMTsgY3AgPD0gZW5kIHx8c3RhcnRzLmdldFNlcmlhbGl6ZWRSYW5nZShqKyssIHJhbmdlKTsgKytjcCkgeworICAgICAgICAgICAgICAgIGlmKGNwPmVuZCl7CisgICAgICAgICAgICAgICAgICAgIGNwPXJhbmdlWzBdOworICAgICAgICAgICAgICAgICAgICBlbmQ9cmFuZ2VbMV07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgIFNldCByZW1haW5kZXIgPSBleHRyYWN0KGNwLCBzZWdtZW50LCBpLHdvcmtpbmdCdWZmZXIpOworCSAgICAgICAgICAgIGlmIChyZW1haW5kZXIgPT0gbnVsbCkgY29udGludWU7CisJCisJICAgICAgICAgICAgLy8gdGhlcmUgd2VyZSBzb21lIG1hdGNoZXMsIHNvIGFkZCBhbGwgdGhlIHBvc3NpYmlsaXRpZXMgdG8gdGhlIHNldC4KKwkgICAgICAgICAgICBTdHJpbmcgcHJlZml4PSBzZWdtZW50LnN1YnN0cmluZygwLGkpOworCSAgICAgICAgICAgIHByZWZpeCArPSBVVEYxNi52YWx1ZU9mKGNwKTsKKwkgICAgICAgICAgICBpbnQgZWwgPSAtMTsKKwkgICAgICAgICAgICBJdGVyYXRvciBpdGVyID0gcmVtYWluZGVyLml0ZXJhdG9yKCk7CisJICAgICAgICAgICAgd2hpbGUgKGl0ZXIuaGFzTmV4dCgpKSB7CisJICAgICAgICAgICAgICAgIFN0cmluZyBpdGVtID0gKFN0cmluZykgaXRlci5uZXh0KCk7CisJICAgICAgICAgICAgICAgIFN0cmluZyB0b0FkZCA9IG5ldyBTdHJpbmcocHJlZml4KTsKKwkgICAgICAgICAgICAgICAgdG9BZGQgKz0gaXRlbTsKKwkgICAgICAgICAgICAgICAgcmVzdWx0LmFkZCh0b0FkZCk7CQkKKwkgICAgICAgICAgICAgICAgLy9pZiAoUFJPR1JFU1MpIHByaW50ZigiQWRkaW5nOiAlc1xuIiwgVVRvUyhUcigqdG9BZGQpKSk7CisJICAgICAgICAgICAgfQorCisgICAgICAgICAgICB9CisJICAgIH0KKwkgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgLyoKKyAgICAgICAgU2V0IHJlc3VsdCA9IG5ldyBIYXNoU2V0KCk7CisgICAgICAgIGlmIChQUk9HUkVTUykgU3lzdGVtLm91dC5wcmludGxuKCJBZGRpbmc6ICIgKyBOQU1FLnRyYW5zbGl0ZXJhdGUoc2VnbWVudCkpOworICAgICAgICByZXN1bHQuYWRkKHNlZ21lbnQpOworICAgICAgICBTdHJpbmdCdWZmZXIgd29ya2luZ0J1ZmZlciA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgCisgICAgICAgIC8vIGN5Y2xlIHRocm91Z2ggYWxsIHRoZSBjaGFyYWN0ZXJzCisgICAgICAgIGludCBjcDsKKyAgICAgICAgCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2VnbWVudC5sZW5ndGgoKTsgaSArPSBVVEYxNi5nZXRDaGFyQ291bnQoY3ApKSB7CisgICAgICAgICAgICAvLyBzZWUgaWYgYW55IGNoYXJhY3RlciBpcyBhdCB0aGUgc3RhcnQgb2Ygc29tZSBkZWNvbXBvc2l0aW9uCisgICAgICAgICAgICBjcCA9IFVURjE2LmNoYXJBdChzZWdtZW50LCBpKTsKKyAgICAgICAgICAgIE5vcm1hbGl6ZXJJbXBsLmdldENhbm9uU3RhcnRTZXQoYyxmaWxsU2V0KQorICAgICAgICAgICAgVW5pY29kZVNldCBzdGFydHMgPSBBVF9TVEFSVC5nZXQoY3ApOworICAgICAgICAgICAgaWYgKHN0YXJ0cyA9PSBudWxsKSBjb250aW51ZTsKKyAgICAgICAgICAgIFVuaWNvZGVTZXRJdGVyYXRvciB1c2kgPSBuZXcgVW5pY29kZVNldEl0ZXJhdG9yKHN0YXJ0cyk7CisgICAgICAgICAgICAvLyBpZiBzbywgc2VlIHdoaWNoIGRlY29tcG9zaXRpb25zIG1hdGNoCisgICAgICAgICAgICB3aGlsZSAodXNpLm5leHQoKSkgeworICAgICAgICAgICAgICAgIGludCBjcDIgPSB1c2kuY29kZXBvaW50OworICAgICAgICAgICAgICAgIC8vIHdlIGtub3cgdGhhdCB0aGVyZSBhcmUgbm8gc3RyaW5ncyBpbiBpdAorICAgICAgICAgICAgICAgIC8vIHNvIHdlIGRvbid0IGhhdmUgdG8gY2hlY2sgQ2hhcmFjdGVySXRlcmF0b3IuSVNfU1RSSU5HCisgICAgICAgICAgICAgICAgU2V0IHJlbWFpbmRlciA9IGV4dHJhY3QoY3AyLCBzZWdtZW50LCBpLCB3b3JraW5nQnVmZmVyKTsKKyAgICAgICAgICAgICAgICBpZiAocmVtYWluZGVyID09IG51bGwpIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIHRoZXJlIHdlcmUgc29tZSBtYXRjaGVzLCBzbyBhZGQgYWxsIHRoZSBwb3NzaWJpbGl0aWVzIHRvIHRoZSBzZXQuCisgICAgICAgICAgICAgICAgU3RyaW5nIHByZWZpeCA9IHNlZ21lbnQuc3Vic3RyaW5nKDAsIGkpICsgVVRGMTYudmFsdWVPZihjcDIpOworICAgICAgICAgICAgICAgIEl0ZXJhdG9yIGl0ID0gcmVtYWluZGVyLml0ZXJhdG9yKCk7CisgICAgICAgICAgICAgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkgeworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgaXRlbSA9IChTdHJpbmcpIGl0Lm5leHQoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFBST0dSRVNTKSBTeXN0ZW0ub3V0LnByaW50bG4oIkFkZGluZzogIiArIE5BTUUudHJhbnNsaXRlcmF0ZShwcmVmaXggKyBpdGVtKSk7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQocHJlZml4ICsgaXRlbSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICovCisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFNlZSBpZiB0aGUgZGVjb21wb3NpdGlvbiBvZiBjcDIgaXMgYXQgc2VnbWVudCBzdGFydGluZyBhdCBzZWdtZW50UG9zIAorICAgICAqICh3aXRoIGNhbm9uaWNhbCByZWFycmFuZ21lbnQhKQorICAgICAqIElmIHNvLCB0YWtlIHRoZSByZW1haW5kZXIsIGFuZCByZXR1cm4gdGhlIGVxdWl2YWxlbnRzIAorICAgICAqLworICAgIHByaXZhdGUgU2V0IGV4dHJhY3QoaW50IGNvbXAsIFN0cmluZyBzZWdtZW50LCBpbnQgc2VnbWVudFBvcywgU3RyaW5nQnVmZmVyIGJ1ZmZlcikgeworICAgICAgICBpZiAoUFJPR1JFU1MpIFN5c3RlbS5vdXQucHJpbnRsbigiIGV4dHJhY3Q6ICIgKyBOQU1FLnRyYW5zbGl0ZXJhdGUoVVRGMTYudmFsdWVPZihjb21wKSkKKyAgICAgICAgICAgICsgIiwgIiArIE5BTUUudHJhbnNsaXRlcmF0ZShzZWdtZW50LnN1YnN0cmluZyhzZWdtZW50UG9zKSkpOworICAgICAgICAgICAgCisgICAgICAgIC8vU3RyaW5nIGRlY29tcCA9IE5vcm1hbGl6ZXIubm9ybWFsaXplKFVURjE2LnZhbHVlT2YoY29tcCksIE5vcm1hbGl6ZXIuREVDT01QLCAwKTsKKyAgICAgICAgU3RyaW5nIGRlY29tcCA9IE5vcm1hbGl6ZXIubm9ybWFsaXplKGNvbXAsIE5vcm1hbGl6ZXIuTkZEKTsKKyAgICAgICAgCisgICAgICAgIC8vIFNlZSBpZiBpdCBtYXRjaGVzIHRoZSBzdGFydCBvZiBzZWdtZW50IChhdCBzZWdtZW50UG9zKQorICAgICAgICBib29sZWFuIG9rID0gZmFsc2U7CisgICAgICAgIGludCBjcDsKKyAgICAgICAgaW50IGRlY29tcFBvcyA9IDA7CisgICAgICAgIGludCBkZWNvbXBDcCA9IFVURjE2LmNoYXJBdChkZWNvbXAsMCk7CisgICAgICAgIGRlY29tcFBvcyArPSBVVEYxNi5nZXRDaGFyQ291bnQoZGVjb21wQ3ApOyAvLyBhZGp1c3QgcG9zaXRpb24gdG8gc2tpcCBmaXJzdCBjaGFyCisgICAgICAgIC8vaW50IGRlY29tcENsYXNzID0gZ2V0Q2xhc3MoZGVjb21wQ3ApOworICAgICAgICBidWZmZXIuc2V0TGVuZ3RoKDApOyAvLyBpbml0aWFsaXplIHdvcmtpbmcgYnVmZmVyLCBzaGFyZWQgYW1vbmcgY2FsbGVlcworICAgICAgICAKKyAgICAgICAgZm9yIChpbnQgaSA9IHNlZ21lbnRQb3M7IGkgPCBzZWdtZW50Lmxlbmd0aCgpOyBpICs9IFVURjE2LmdldENoYXJDb3VudChjcCkpIHsKKyAgICAgICAgICAgIGNwID0gVVRGMTYuY2hhckF0KHNlZ21lbnQsIGkpOworICAgICAgICAgICAgaWYgKGNwID09IGRlY29tcENwKSB7IC8vIGlmIGVxdWFsLCBlYXQgYW5vdGhlciBjcCBmcm9tIGRlY29tcAorICAgICAgICAgICAgICAgIGlmIChQUk9HUkVTUykgU3lzdGVtLm91dC5wcmludGxuKCIgIG1hdGNoZXM6ICIgKyBOQU1FLnRyYW5zbGl0ZXJhdGUoVVRGMTYudmFsdWVPZihjcCkpKTsKKyAgICAgICAgICAgICAgICBpZiAoZGVjb21wUG9zID09IGRlY29tcC5sZW5ndGgoKSkgeyAvLyBkb25lLCBoYXZlIGFsbCBkZWNvbXAgY2hhcmFjdGVycyEKKyAgICAgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChzZWdtZW50LnN1YnN0cmluZyhpICsgVVRGMTYuZ2V0Q2hhckNvdW50KGNwKSkpOyAvLyBhZGQgcmVtYWluaW5nIHNlZ21lbnQgY2hhcnMKKyAgICAgICAgICAgICAgICAgICAgb2sgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVjb21wQ3AgPSBVVEYxNi5jaGFyQXQoZGVjb21wLCBkZWNvbXBQb3MpOworICAgICAgICAgICAgICAgIGRlY29tcFBvcyArPSBVVEYxNi5nZXRDaGFyQ291bnQoZGVjb21wQ3ApOworICAgICAgICAgICAgICAgIC8vZGVjb21wQ2xhc3MgPSBnZXRDbGFzcyhkZWNvbXBDcCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChQUk9HUkVTUykgU3lzdGVtLm91dC5wcmludGxuKCIgIGJ1ZmZlcjogIiArIE5BTUUudHJhbnNsaXRlcmF0ZShVVEYxNi52YWx1ZU9mKGNwKSkpOworICAgICAgICAgICAgICAgIC8vIGJydXRlIGZvcmNlIGFwcHJvYWNoCisgICAgICAgICAgICAgICAgVVRGMTYuYXBwZW5kKGJ1ZmZlciwgY3ApOworICAgICAgICAgICAgICAgIC8qIFRPRE86IG9wdGltaXplCisgICAgICAgICAgICAgICAgLy8gc2luY2Ugd2Uga25vdyB0aGF0IHRoZSBjbGFzc2VzIGFyZSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcsIGFmdGVyIHplcm8KKyAgICAgICAgICAgICAgICAvLyBlLmcuIDAgNSA3IDkgMCAzCisgICAgICAgICAgICAgICAgLy8gd2UgY2FuIGRvIGFuIG9wdGltaXphdGlvbgorICAgICAgICAgICAgICAgIC8vIHRoZXJlIGFyZSBvbmx5IGEgZmV3IGNhc2VzIHRoYXQgd29yazogemVybywgbGVzcywgc2FtZSwgZ3JlYXRlcgorICAgICAgICAgICAgICAgIC8vIGlmIGJvdGggY2xhc3NlcyBhcmUgdGhlIHNhbWUsIHdlIGZhaWwKKyAgICAgICAgICAgICAgICAvLyBpZiB0aGUgZGVjb21wIGNsYXNzIDwgdGhlIHNlZ21lbnQgY2xhc3MsIHdlIGZhaWwKKyAgICAgICAgCisgICAgICAgICAgICAgICAgc2VnQ2xhc3MgPSBnZXRDbGFzcyhjcCk7CisgICAgICAgICAgICAgICAgaWYgKGRlY29tcENsYXNzIDw9IHNlZ0NsYXNzKSByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICghb2spIHJldHVybiBudWxsOyAvLyB3ZSBmYWlsZWQsIGNoYXJhY3RlcnMgbGVmdCBvdmVyCisgICAgICAgIGlmIChQUk9HUkVTUykgU3lzdGVtLm91dC5wcmludGxuKCJNYXRjaGVzIik7CisgICAgICAgIGlmIChidWZmZXIubGVuZ3RoKCkgPT0gMCkgcmV0dXJuIFNFVF9XSVRIX05VTExfU1RSSU5HOyAvLyBzdWNjZWVkLCBidXQgbm8gcmVtYWluZGVyCisgICAgICAgIFN0cmluZyByZW1haW5kZXIgPSBidWZmZXIudG9TdHJpbmcoKTsKKyAgICAgICAgCisgICAgICAgIC8vIGJydXRlIGZvcmNlIGFwcHJvYWNoCisgICAgICAgIC8vIHRvIGNoZWNrIHRvIG1ha2Ugc3VyZSByZXN1bHQgaXMgY2Fub25pY2FsbHkgZXF1aXZhbGVudAorICAgICAgICAvKgorICAgICAgICBTdHJpbmcgdHJpYWwgPSBOb3JtYWxpemVyLm5vcm1hbGl6ZShVVEYxNi52YWx1ZU9mKGNvbXApICsgcmVtYWluZGVyLCBOb3JtYWxpemVyLkRFQ09NUCwgMCk7CisgICAgICAgIGlmICghc2VnbWVudC5yZWdpb25NYXRjaGVzKHNlZ21lbnRQb3MsIHRyaWFsLCAwLCBzZWdtZW50Lmxlbmd0aCgpIC0gc2VnbWVudFBvcykpIHJldHVybiBudWxsOworICAgICAgICAqLworICAgICAgICAKKyAgICAgICAgaWYgKDAhPU5vcm1hbGl6ZXIuY29tcGFyZShVVEYxNi52YWx1ZU9mKGNvbXApICsgcmVtYWluZGVyLCBzZWdtZW50LnN1YnN0cmluZyhzZWdtZW50UG9zKSwgMCkpIHJldHVybiBudWxsOworICAgICAgICAKKyAgICAgICAgLy8gZ2V0IHRoZSByZW1haW5pbmcgY29tYmluYXRpb25zCisgICAgICAgIHJldHVybiBnZXRFcXVpdmFsZW50czIocmVtYWluZGVyKTsKKyAgICB9CisgICAgCisgICAgLyoKKyAgICAvLyBUT0RPOiBmaXggb25jZSB3ZSBoYXZlIGEgY29kZXBvaW50IGludGVyZmFjZSB0byBnZXQgdGhlIGNhbm9uaWNhbCBjb21iaW5pbmcgY2xhc3MKKyAgICAvLyBUT0RPOiBOZWVkIHB1YmxpYyBhY2Nlc3MgdG8gY2Fub25pY2FsIGNvbWJpbmluZyBjbGFzcyBpbiBVQ2hhcmFjdGVyIQorICAgIHByaXZhdGUgc3RhdGljIGludCBnZXRDbGFzcyhpbnQgY3ApIHsKKyAgICAgICAgcmV0dXJuIE5vcm1hbGl6ZXIuZ2V0Q2xhc3MoKGNoYXIpY3ApOworICAgIH0KKyAgICAqLworICAgIAorICAgLy8gPT09PT09PT09PT09PT09PT0gQlVJTERFUiA9PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gVE9ETzogRmxhdHRlbiB0aGlzIGRhdGEgc28gaXQgZG9lc24ndCBoYXZlIHRvIGJlIHJlY29uc3RydWN0ZWQgZWFjaCB0aW1lIQorICAgIAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFVuaWNvZGVTZXQgRU1QVFkgPSBuZXcgVW5pY29kZVNldCgpOyAvLyBjb25zdGFudCwgZG9uJ3QgY2hhbmdlCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU2V0IFNFVF9XSVRIX05VTExfU1RSSU5HID0gbmV3IEhhc2hTZXQoKTsgLy8gY29uc3RhbnQsIGRvbid0IGNoYW5nZQorICAgIHN0YXRpYyB7CisgICAgICAgIFNFVF9XSVRIX05VTExfU1RSSU5HLmFkZCgiIik7CisgICAgfQorICAgIAorICAvLyAgcHJpdmF0ZSBzdGF0aWMgVW5pY29kZVNldCBTQUZFX1NUQVJUID0gbmV3IFVuaWNvZGVTZXQoKTsKKyAgLy8gIHByaXZhdGUgc3RhdGljIENoYXJNYXAgQVRfU1RBUlQgPSBuZXcgQ2hhck1hcCgpOworICAgIAorICAgICAgICAvLyBUT0RPOiBXQVJOSU5HLCBOT1JNQUxJWkVSIGRvZXNuJ3QgaGF2ZSBzdXBwbGVtZW50YXJpZXMgeWV0ICEhOworICAgICAgICAvLyBDaGFuZ2UgRkZGRiB0byAxMEZGRkYgaW4gQywgYW5kIGluIEphdmEgd2hlbiBub3JtYWxpemVyIGlzIHVwZ3JhZGVkLgorICAvLyAgcHJpdmF0ZSBzdGF0aWMgaW50IExBU1RfVU5JQ09ERSA9IDB4MTBGRkZGOworICAgIC8qCisgICAgc3RhdGljIHsKKyAgICAgICAgYnVpbGREYXRhKCk7CisgICAgfQorICAgICovCisgICAgLyoKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIGJ1aWxkRGF0YSgpIHsKKworICAgICAgICBpZiAoUFJPR1JFU1MpIFN5c3RlbS5vdXQucHJpbnRsbigiR2V0dGluZyBTYWZlIFN0YXJ0Iik7CisgICAgICAgIGZvciAoaW50IGNwID0gMDsgY3AgPD0gTEFTVF9VTklDT0RFOyArK2NwKSB7CisgICAgICAgICAgICBpZiAoUFJPR1JFU1MgJiAoY3AgJiAweDdGRikgPT0gMCkgU3lzdGVtLm91dC5wcmludCgnLicpOworICAgICAgICAgICAgaW50IGNjID0gVUNoYXJhY3Rlci5nZXRDb21iaW5pbmdDbGFzcyhjcCk7CisgICAgICAgICAgICBpZiAoY2MgPT0gMCkgU0FGRV9TVEFSVC5hZGQoY3ApOworICAgICAgICAgICAgLy8gd2lsbCBmaXggdG8gYmUgcmVhbGx5IHNhZmUgYmVsb3cKKyAgICAgICAgfQorICAgICAgICBpZiAoUFJPR1JFU1MpIFN5c3RlbS5vdXQucHJpbnRsbigpOworICAgICAgICAKKyAgICAgICAgaWYgKFBST0dSRVNTKSBTeXN0ZW0ub3V0LnByaW50bG4oIkdldHRpbmcgQ29udGFpbm1lbnQiKTsKKyAgICAgICAgZm9yIChpbnQgY3AgPSAwOyBjcCA8PSBMQVNUX1VOSUNPREU7ICsrY3ApIHsKKyAgICAgICAgICAgIGlmIChQUk9HUkVTUyAmIChjcCAmIDB4N0ZGKSA9PSAwKSBTeXN0ZW0ub3V0LnByaW50KCcuJyk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChOb3JtYWxpemVyLmlzTm9ybWFsaXplZChjcCwgTm9ybWFsaXplci5ORkQpKSBjb250aW51ZTsKKworICAgICAgICAgICAgLy9TdHJpbmcgaXN0ciA9IFVURjE2LnZhbHVlT2YoY3ApOworICAgICAgICAgICAgU3RyaW5nIGRlY29tcCA9IE5vcm1hbGl6ZXIubm9ybWFsaXplKGNwLCBOb3JtYWxpemVyLk5GRCk7CisgICAgICAgICAgICAvL2lmIChkZWNvbXAuZXF1YWxzKGlzdHIpKSBjb250aW51ZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gYWRkIGVhY2ggY2hhcmFjdGVyIGluIHRoZSBkZWNvbXBvc2l0aW9uIHRvIGNhbkJlSW4gCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGludCBjb21wb25lbnQ7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGRlY29tcC5sZW5ndGgoKTsgaSArPSBVVEYxNi5nZXRDaGFyQ291bnQoY29tcG9uZW50KSkgeworICAgICAgICAgICAgICAgIGNvbXBvbmVudCA9IFVURjE2LmNoYXJBdChkZWNvbXAsIGkpOworICAgICAgICAgICAgICAgIGlmIChpID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgQVRfU1RBUlQuYWRkKGNvbXBvbmVudCwgY3ApOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoVUNoYXJhY3Rlci5nZXRDb21iaW5pbmdDbGFzcyhjb21wb25lbnQpID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgU0FGRV9TVEFSVC5yZW1vdmUoY29tcG9uZW50KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKFBST0dSRVNTKSBTeXN0ZW0ub3V0LnByaW50bG4oKTsKKyAgICB9CisgICAgICAgIC8vIHRoZSBmb2xsb3dpbmcgaXMganVzdCBmb3IgYSBtYXAgZnJvbSBjaGFyYWN0ZXJzIHRvIGEgc2V0IG9mIGNoYXJhY3RlcnMKKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBDaGFyTWFwIHsKKyAgICAgICAgTWFwIHN0b3JhZ2UgPSBuZXcgSGFzaE1hcCgpOworICAgICAgICBNdXRhYmxlSW50IHByb2JlID0gbmV3IE11dGFibGVJbnQoKTsKKyAgICAgICAgYm9vbGVhbiBjb252ZXJ0ZWQgPSBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIHB1YmxpYyB2b2lkIGFkZChpbnQgY3AsIGludCB3aGF0SXRJc0luKSB7CisgICAgICAgICAgICBVbmljb2RlU2V0IHJlc3VsdCA9IChVbmljb2RlU2V0KSBzdG9yYWdlLmdldChwcm9iZS5zZXQoY3ApKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBVbmljb2RlU2V0KCk7CisgICAgICAgICAgICAgICAgc3RvcmFnZS5wdXQocHJvYmUsIHJlc3VsdCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXN1bHQuYWRkKHdoYXRJdElzSW4pOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwdWJsaWMgVW5pY29kZVNldCBnZXQoaW50IGNwKSB7CisgICAgICAgICAgICByZXR1cm4gKFVuaWNvZGVTZXQpIHN0b3JhZ2UuZ2V0KHByb2JlLnNldChjcCkpOworICAgICAgICB9CisgICAgfQorICAgICAgICAgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgTXV0YWJsZUludCB7CisgICAgICAgIHB1YmxpYyBpbnQgY29udGVudHM7CisgICAgICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7IHJldHVybiBjb250ZW50czsgfQorICAgICAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG90aGVyKSB7CisgICAgICAgICAgICByZXR1cm4gKChNdXRhYmxlSW50KW90aGVyKS5jb250ZW50cyA9PSBjb250ZW50czsKKyAgICAgICAgfQorICAgICAgICAvLyBhbGxvd3MgY2hhaW5pbmcKKyAgICAgICAgcHVibGljIE11dGFibGVJbnQgc2V0KGludCBjb250ZW50cykgeworICAgICAgICAgICAgdGhpcy5jb250ZW50cyA9IGNvbnRlbnRzOworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKyAgICB9CisgICAgKi8KKworfQorICAgIApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS90ZXh0L0NoaW5lc2VEYXRlRm9ybWF0LmphdmEgYi9zcmMvY29tL2libS9pY3UvdGV4dC9DaGluZXNlRGF0ZUZvcm1hdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjFhYzk5NTEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdGV4dC9DaGluZXNlRGF0ZUZvcm1hdC5qYXZhCkBAIC0wLDAgKzEsMTQwIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvdGV4dC9DaGluZXNlRGF0ZUZvcm1hdC5qYXZhLHYgJAorICogJERhdGU6IDIwMDIvMTIvMDUgMDE6MjE6MjkgJAorICogJFJldmlzaW9uOiAxLjcgJAorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LnRleHQ7CitpbXBvcnQgY29tLmlibS5pY3UudXRpbC4qOworaW1wb3J0IGphdmEudGV4dC5GaWVsZFBvc2l0aW9uOworaW1wb3J0IGphdmEudGV4dC5QYXJzZVBvc2l0aW9uOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CisKKy8qKgorICogQSBjb25jcmV0ZSB7QGxpbmsgRGF0ZUZvcm1hdH0gZm9yIHtAbGluayBjb20uaWJtLmljdS51dGlsLkNoaW5lc2VDYWxlbmRhcn0uCisgKiBUaGlzIGNsYXNzIGhhbmRsZXMgYSA8Y29kZT5DaGluZXNlQ2FsZW5kYXI8L2NvZGU+LXNwZWNpZmljIGZpZWxkLAorICogPGNvZGU+Q2hpbmVzZUNhbGVuZGFyLklTX0xFQVBfTU9OVEg8L2NvZGU+LiAgSXQgYWxzbyByZWRlZmluZXMgdGhlCisgKiBoYW5kbGluZyBvZiB0d28gZmllbGRzLCA8Y29kZT5FUkE8L2NvZGU+IGFuZCA8Y29kZT5ZRUFSPC9jb2RlPi4gIFRoZQorICogZm9ybWVyIGlzIGRpc3BsYXllZCBudW1lcmljYWxseSwgaW5zdGVhZCBvZiBzeW1ib2xpY2FsbHksIHNpbmNlIGl0IGlzCisgKiB0aGUgbnVtZXJpYyBjeWNsZSBudW1iZXIgaW4gPGNvZGU+Q2hpbmVzZUNhbGVuZGFyPC9jb2RlPi4gIFRoZSBsYXR0ZXIgaXMKKyAqIG51bWVyaWMsIGFzIGJlZm9yZSwgYnV0IGhhcyBubyBzcGVjaWFsIDItZGlnaXQgWTJLIGJlaGF2aW9yLgorICoKKyAqIDxwPldpdGggcmVnYXJkIHRvIDxjb2RlPkNoaW5lc2VDYWxlbmRhci5JU19MRUFQX01PTlRIPC9jb2RlPiwgdGhpcworICogY2xhc3MgaGFuZGxlcyBwYXJzaW5nIHNwZWNpYWxseS4gIElmIG5vIHN0cmluZyBzeW1ib2wgaXMgZm91bmQgYXQgYWxsLAorICogdGhpcyBpcyB0YWtlbiBhcyBlcXVpdmFsZW50IHRvIGFuIDxjb2RlPklTX0xFQVBfTU9OVEg8L2NvZGU+IHZhbHVlIG9mCisgKiB6ZXJvLiAgVGhpcyBhbGxvd3MgZm9ybWF0cyB0byBkaXNwbGF5IGEgc3BlY2lhbCBzdHJpbmcgKGUuZy4sICIqIikgZm9yCisgKiBsZWFwIG1vbnRocywgYnV0IG5vIHN0cmluZyBmb3Igbm9ybWFsIG1vbnRocy4KKyAqCisgKiA8cD5TdW1tYXJ5IG9mIGZpZWxkIGNoYW5nZXMgdnMuIHtAbGluayBTaW1wbGVEYXRlRm9ybWF0fTo8cHJlPgorICogU3ltYm9sICAgTWVhbmluZyAgICAgICAgICAgICAgICAgUHJlc2VudGF0aW9uICAgICAgICBFeGFtcGxlCisgKiAtLS0tLS0gICAtLS0tLS0tICAgICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0gICAgICAgIC0tLS0tLS0KKyAqIEcgICAgICAgIGN5Y2xlICAgICAgICAgICAgICAgICAgIChOdW1iZXIpICAgICAgICAgICAgNzgKKyAqIHkgICAgICAgIHllYXIgb2YgY3ljbGUgKDEuLjYwKSAgIChOdW1iZXIpICAgICAgICAgICAgMTcKKyAqIGwgICAgICAgIGlzIGxlYXAgbW9udGggICAgICAgICAgIChUZXh0KSAgICAgICAgICAgICAgNDYzNworICogPC9wcmU+CisgKgorICogQHNlZSBjb20uaWJtLmljdS51dGlsLkNoaW5lc2VDYWxlbmRhcgorICogQHNlZSBDaGluZXNlRGF0ZUZvcm1hdFN5bWJvbHMKKyAqIEBhdXRob3IgQWxhbiBMaXUKKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitwdWJsaWMgY2xhc3MgQ2hpbmVzZURhdGVGb3JtYXQgZXh0ZW5kcyBTaW1wbGVEYXRlRm9ybWF0IHsKKworICAgIC8vIFRPRE8gRmluaXNoIHRoZSBjb25zdHJ1Y3RvcnMKKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdCBhIENoaW5lc2VEYXRlRm9ybWF0IGZyb20gYSBkYXRlIGZvcm1hdCBwYXR0ZXJuIGFuZCBsb2NhbGUKKyAgICAgKiBAcGFyYW0gcGF0dGVybiB0aGUgcGF0dGVybgorICAgICAqIEBwYXJhbSBsb2NhbGUgdGhlIGxvY2FsZQorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgcHVibGljIENoaW5lc2VEYXRlRm9ybWF0KFN0cmluZyBwYXR0ZXJuLCBMb2NhbGUgbG9jYWxlKSB7CisgICAgICAgIHN1cGVyKHBhdHRlcm4sIG5ldyBDaGluZXNlRGF0ZUZvcm1hdFN5bWJvbHMobG9jYWxlKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHJvdGVjdGVkIFN0cmluZyBzdWJGb3JtYXQoY2hhciBjaCwgaW50IGNvdW50LCBpbnQgYmVnaW5PZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRQb3NpdGlvbiBwb3MsIERhdGVGb3JtYXRTeW1ib2xzIGZvcm1hdERhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsZW5kYXIgY2FsKSAgeworICAgICAgICBzd2l0Y2ggKGNoKSB7CisgICAgICAgIGNhc2UgJ0cnOiAvLyAnRycgLSBFUkEKKyAgICAgICAgICAgIHJldHVybiB6ZXJvUGFkZGluZ051bWJlcihjYWwuZ2V0KENhbGVuZGFyLkVSQSksIDEsIDkpOworICAgICAgICBjYXNlICdsJzogLy8gJ2wnIC0gSVNfTEVBUF9NT05USAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIENoaW5lc2VEYXRlRm9ybWF0U3ltYm9scyBzeW1ib2xzID0KKyAgICAgICAgICAgICAgICAgICAgKENoaW5lc2VEYXRlRm9ybWF0U3ltYm9scykgZm9ybWF0RGF0YTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9scy5nZXRMZWFwTW9udGgoY2FsLmdldCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGluZXNlQ2FsZW5kYXIuSVNfTEVBUF9NT05USCkpOworICAgICAgICAgICAgfQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIHN1cGVyLnN1YkZvcm1hdChjaCwgY291bnQsIGJlZ2luT2Zmc2V0LCBwb3MsIGZvcm1hdERhdGEsIGNhbCk7CisgICAgICAgIH0KKyAgICB9ICAgIAorCisgICAgLyoqCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHJvdGVjdGVkIGludCBzdWJQYXJzZShTdHJpbmcgdGV4dCwgaW50IHN0YXJ0LCBjaGFyIGNoLCBpbnQgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIG9iZXlDb3VudCwgYm9vbGVhbltdIGFtYmlndW91c1llYXIsIENhbGVuZGFyIGNhbCkgeworICAgICAgICBpZiAoY2ggIT0gJ0cnICYmIGNoICE9ICdsJyAmJiBjaCAhPSAneScpIHsKKyAgICAgICAgICAgIHJldHVybiBzdXBlci5zdWJQYXJzZSh0ZXh0LCBzdGFydCwgY2gsIGNvdW50LCBvYmV5Q291bnQsIGFtYmlndW91c1llYXIsIGNhbCk7CisgICAgICAgIH0KKworICAgICAgICBQYXJzZVBvc2l0aW9uIHBvcyA9IG5ldyBQYXJzZVBvc2l0aW9uKHN0YXJ0KTsKKworICAgICAgICAvLyBJZiB0aGVyZSBhcmUgYW55IHNwYWNlcyBoZXJlLCBza2lwIG92ZXIgdGhlbS4gIElmIHdlIGhpdCB0aGUgZW5kCisgICAgICAgIC8vIG9mIHRoZSBzdHJpbmcsIHRoZW4gZmFpbC4KKyAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgaWYgKHBvcy5nZXRJbmRleCgpID49IHRleHQubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gLXN0YXJ0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2hhciBjID0gdGV4dC5jaGFyQXQocG9zLmdldEluZGV4KCkpOworICAgICAgICAgICAgaWYgKGMgIT0gJyAnICYmIGMgIT0gJ1x0JykgeyAvLyBUT0RPIFNob3VsZG4ndCB0aGlzIGJlIGlzV2hpdGVzcGFjZT8KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBvcy5zZXRJbmRleChwb3MuZ2V0SW5kZXgoKSsxKTsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAoY2gpIHsKKyAgICAgICAgY2FzZSAnRyc6IC8vICdHJyAtIEVSQQorICAgICAgICBjYXNlICd5JzogLy8gJ3knIC0gWUVBUiwgYnV0IHdpdGhvdXQgdGhlIDItZGlnaXQgWTJLIGFkanVzdG1lbnQKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBOdW1iZXIgbnVtYmVyID0gbnVsbDsKKyAgICAgICAgICAgICAgICBpZiAob2JleUNvdW50KSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgoc3RhcnQrY291bnQpID4gdGV4dC5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1zdGFydDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBudW1iZXIgPSBudW1iZXJGb3JtYXQucGFyc2UodGV4dC5zdWJzdHJpbmcoMCwgc3RhcnQrY291bnQpLCBwb3MpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG51bWJlciA9IG51bWJlckZvcm1hdC5wYXJzZSh0ZXh0LCBwb3MpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobnVtYmVyID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1zdGFydDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaW50IHZhbHVlID0gbnVtYmVyLmludFZhbHVlKCk7CisgICAgICAgICAgICAgICAgY2FsLnNldChjaCA9PSAnRycgPyBDYWxlbmRhci5FUkEgOiBDYWxlbmRhci5ZRUFSLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHBvcy5nZXRJbmRleCgpOworICAgICAgICAgICAgfQorICAgICAgICBjYXNlICdsJzogLy8gJ2wnIC0gSVNfTEVBUF9NT05USAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIENoaW5lc2VEYXRlRm9ybWF0U3ltYm9scyBzeW1ib2xzID0KKyAgICAgICAgICAgICAgICAgICAgKENoaW5lc2VEYXRlRm9ybWF0U3ltYm9scykgZ2V0U3ltYm9scygpOworICAgICAgICAgICAgICAgIGludCByZXN1bHQgPSBtYXRjaFN0cmluZyh0ZXh0LCBzdGFydCwgQ2hpbmVzZUNhbGVuZGFyLklTX0xFQVBfTU9OVEgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bWJvbHMuaXNMZWFwTW9udGgsIGNhbCk7CisgICAgICAgICAgICAgICAgLy8gVHJlYXQgdGhlIGFic2VuY2Ugb2YgYW55IG1hdGNoaW5nIHN0cmluZyBhcyBzZXR0aW5nCisgICAgICAgICAgICAgICAgLy8gSVNfTEVBUF9NT05USCB0byBmYWxzZS4KKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0PDApIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsLnNldChDaGluZXNlQ2FsZW5kYXIuSVNfTEVBUF9NT05USCwgMCk7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHN0YXJ0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgfQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIDA7IC8vIFRoaXMgY2FuIG5ldmVyIGhhcHBlbgorICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3RleHQvQ2hpbmVzZURhdGVGb3JtYXRTeW1ib2xzLmphdmEgYi9zcmMvY29tL2libS9pY3UvdGV4dC9DaGluZXNlRGF0ZUZvcm1hdFN5bWJvbHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mM2Q3MDFlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvQ2hpbmVzZURhdGVGb3JtYXRTeW1ib2xzLmphdmEKQEAgLTAsMCArMSw4MCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZAorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L3RleHQvQ2hpbmVzZURhdGVGb3JtYXRTeW1ib2xzLmphdmEsdiAkCisgKiAkRGF0ZTogMjAwMi8xMi8wNSAwMToyMTozMSAkCisgKiAkUmV2aXNpb246IDEuNCAkCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UudGV4dDsKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLio7CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKK2ltcG9ydCBqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGU7CitpbXBvcnQgamF2YS51dGlsLk1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbjsKKworLyoqCisgKiBBIHN1YmNsYXNzIG9mIHtAbGluayBEYXRlRm9ybWF0U3ltYm9sc30gZm9yIHtAbGluayBDaGluZXNlRGF0ZUZvcm1hdH0uCisgKiBUaGlzIGNsYXNzIGNvbnRhaW5zIGFkZGl0aW9uYWwgc3ltYm9scyBjb3JyZXNwb25kaW5nIHRvIHRoZQorICogPGNvZGU+Q2hpbmVzZUNhbGVuZGFyLklTX0xFQVBfTU9OVEg8L2NvZGU+IGZpZWxkLgorICoKKyAqIEBzZWUgQ2hpbmVzZURhdGVGb3JtYXQKKyAqIEBzZWUgY29tLmlibS5pY3UudXRpbC5DaGluZXNlQ2FsZW5kYXIKKyAqIEBhdXRob3IgQWxhbiBMaXUKKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitwdWJsaWMgY2xhc3MgQ2hpbmVzZURhdGVGb3JtYXRTeW1ib2xzIGV4dGVuZHMgRGF0ZUZvcm1hdFN5bWJvbHMgeworICAgIAorICAgIC8qKgorICAgICAqIFBhY2thZ2UtcHJpdmF0ZSBhcnJheSB0aGF0IENoaW5lc2VEYXRlRm9ybWF0IG5lZWRzIHRvIGJlIGFibGUgdG8KKyAgICAgKiByZWFkLgorICAgICAqLworICAgIFN0cmluZyBpc0xlYXBNb250aFtdOyAvLyBEbyBOT1QgYWRkID1udWxsIGluaXRpYWxpemVyCisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgYSBDaGluZXNlRGF0ZUZvcm1hdFN5bWJvbHMgZm9yIHRoZSBkZWZhdWx0IGxvY2FsZS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgQ2hpbmVzZURhdGVGb3JtYXRTeW1ib2xzKCkgeworICAgICAgICB0aGlzKExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdCBhIENoaW5lc2VEYXRlRm9ybWF0U3ltYm9scyBmb3IgdGhlIHByb3ZpZGVkIGxvY2FsZS4KKyAgICAgKiBAcGFyYW0gbG9jYWxlIHRoZSBsb2NhbGUKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgQ2hpbmVzZURhdGVGb3JtYXRTeW1ib2xzKExvY2FsZSBsb2NhbGUpIHsKKyAgICAgICAgc3VwZXIoQ2hpbmVzZUNhbGVuZGFyLmNsYXNzLCBsb2NhbGUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdCBhIENoaW5lc2VEYXRlRm9ybWF0U3ltYm9scyBmb3IgdGhlIHByb3ZpZGVkIGNhbGVuZGFyIGFuZCBsb2NhbGUuCisgICAgICogQHBhcmFtIGNhbCB0aGUgQ2FsZW5kYXIKKyAgICAgKiBAcGFyYW0gbG9jYWxlIHRoZSBsb2NhbGUKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgQ2hpbmVzZURhdGVGb3JtYXRTeW1ib2xzKENhbGVuZGFyIGNhbCwgTG9jYWxlIGxvY2FsZSkgeworICAgICAgICBzdXBlcihjYWw9PW51bGw/bnVsbDpjYWwuZ2V0Q2xhc3MoKSwgbG9jYWxlKTsKKyAgICB9CisKKyAgICAvLyBOZXcgQVBJCisgICAgLyoqCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIFN0cmluZyBnZXRMZWFwTW9udGgoaW50IGlzTGVhcE1vbnRoKSB7CisgICAgICAgIHJldHVybiB0aGlzLmlzTGVhcE1vbnRoW2lzTGVhcE1vbnRoXTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZSBEYXRlRm9ybWF0U3ltYm9scy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgdm9pZCBjb25zdHJ1Y3RDYWxlbmRhclNwZWNpZmljKFJlc291cmNlQnVuZGxlIGJ1bmRsZSkgeworICAgICAgICBzdXBlci5jb25zdHJ1Y3RDYWxlbmRhclNwZWNpZmljKGJ1bmRsZSk7CisgICAgICAgIGlmIChidW5kbGUgIT0gbnVsbCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBpc0xlYXBNb250aCA9IGJ1bmRsZS5nZXRTdHJpbmdBcnJheSgiSXNMZWFwTW9udGgiKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKE1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiBlKSB7fQorICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3RleHQvQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLmphdmEgYi9zcmMvY29tL2libS9pY3UvdGV4dC9Db2xsYXRpb25FbGVtZW50SXRlcmF0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4zZjFmMzY5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLmphdmEKQEAgLTAsMCArMSwyNDk5IEBACisvKioKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCitwYWNrYWdlIGNvbS5pYm0uaWN1LnRleHQ7CisKK2ltcG9ydCBqYXZhLnRleHQuU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3I7CitpbXBvcnQgamF2YS50ZXh0LkNoYXJhY3Rlckl0ZXJhdG9yOworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuTm9ybWFsaXplckltcGw7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5VQ2hhcmFjdGVyUHJvcGVydHk7CitpbXBvcnQgY29tLmlibS5pY3UubGFuZy5VQ2hhcmFjdGVyOworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuSUNVRGVidWc7CisKKy8qKgorICogPHA+PGNvZGU+Q29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yPC9jb2RlPiBpcyBhbiBpdGVyYXRvciBjcmVhdGVkIGJ5CisgKiBhIFJ1bGVCYXNlZENvbGxhdG9yIHRvIHdhbGsgdGhyb3VnaCBhIHN0cmluZy4gVGhlIHJldHVybiByZXN1bHQgb2YKKyAqIGVhY2ggaXRlcmF0aW9uIGlzIGEgMzItYml0IGNvbGxhdGlvbiBlbGVtZW50IHRoYXQgZGVmaW5lcyB0aGUKKyAqIG9yZGVyaW5nIHByaW9yaXR5IG9mIHRoZSBuZXh0IGNoYXJhY3RlciBvciBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzCisgKiBpbiB0aGUgc291cmNlIHN0cmluZy48L3A+CisgKgorICogPHA+Rm9yIGlsbHVzdHJhdGlvbiwgY29uc2lkZXIgdGhlIGZvbGxvd2luZyBpbiBTcGFuaXNoOgorICogPGJsb2NrcXVvdGU+CisgKiA8cHJlPgorICogImNhIiAtPiB0aGUgZmlyc3QgY29sbGF0aW9uIGVsZW1lbnQgaXMgY29sbGF0aW9uX2VsZW1lbnQoJ2MnKSBhbmQgc2Vjb25kIAorICogICAgICAgICBjb2xsYXRpb24gZWxlbWVudCBpcyBjb2xsYXRpb25fZWxlbWVudCgnYScpLgorICogCisgKiBTaW5jZSAiY2giIGluIFNwYW5pc2ggc29ydHMgYXMgb25lIGVudGl0eSwgdGhlIGJlbG93IGV4YW1wbGUgcmV0dXJucyBvbmUKKyAqIGNvbGxhdGlvbiBlbGVtZW50IGZvciB0aGUgdHdvIGNoYXJhY3RlcnMgJ2MnIGFuZCAnaCcKKyAqIAorICogImNoYSIgLT4gdGhlIGZpcnN0IGNvbGxhdGlvbiBlbGVtZW50IGlzIGNvbGxhdGlvbl9lbGVtZW50KCdjaCcpIGFuZCBzZWNvbmQgCisgKiAgICAgICAgICBjb2xsYXRpb24gZWxlbWVudCBpcyBjb2xsYXRpb25fZWxlbWVudCgnYScpLgorICogPC9wcmU+CisgKiA8L2Jsb2NrcXVvdGU+CisgKiBBbmQgaW4gR2VybWFuLAorICogPGJsb2NrcXVvdGU+CisgKiA8cHJlPgorICogU2luY2UgdGhlIGNoYXJhY3RlciAnJiMyMzA7JyBpcyBhIGNvbXBvc2VkIGNoYXJhY3RlciBvZiAnYScgYW5kICdlJywgdGhlCisgKiBpdGVyYXRvciByZXR1cm5zIHR3byBjb2xsYXRpb24gZWxlbWVudHMgZm9yIHRoZSBzaW5nbGUgY2hhcmFjdGVyICcmIzIzMDsnCisgKiAKKyAqICImIzIzMDtiIiAtPiB0aGUgZmlyc3QgY29sbGF0aW9uIGVsZW1lbnQgaXMgY29sbGF0aW9uX2VsZW1lbnQoJ2EnKSwgdGhlIAorICogICAgICAgICAgICAgIHNlY29uZCBjb2xsYXRpb24gZWxlbWVudCBpcyBjb2xsYXRpb25fZWxlbWVudCgnZScpLCBhbmQgdGhlIAorICogICAgICAgICAgICAgIHRoaXJkIGNvbGxhdGlvbiBlbGVtZW50IGlzIGNvbGxhdGlvbl9lbGVtZW50KCdiJykuCisgKiA8L3ByZT4KKyAqIDwvYmxvY2txdW90ZT4KKyAqIDwvcD4KKyAqCisgKiA8cD5Gb3IgY29sbGF0aW9uIG9yZGVyaW5nIGNvbXBhcmlzb24sIHRoZSBjb2xsYXRpb24gZWxlbWVudCByZXN1bHRzCisgKiBjYW4gbm90IGJlIGNvbXBhcmVkIHNpbXBseSBieSB1c2luZyBiYXNpYyBhcml0aG1ldHJpYyBvcGVyYXRvcnMsCisgKiBlLmcuICZsdDssID09IG9yICZndDssIGZ1cnRoZXIgcHJvY2Vzc2luZyBoYXMgdG8gYmUgZG9uZS4gRGV0YWlscworICogY2FuIGJlIGZvdW5kIGluIHRoZSBJQ1UKKyAqIDxhIGhyZWY9aHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2ljdS91c2VyZ3VpZGUvQ29sbGF0ZV9TZXJ2aWNlQXJjaGl0ZWN0dXJlLmh0bWw+CisgKiB1c2VyIGd1aWRlPC9hPi4gQW4gZXhhbXBsZSBvZiB1c2luZyB0aGUgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yCisgKiBmb3IgY29sbGF0aW9uIG9yZGVyaW5nIGNvbXBhcmlzb24gaXMgdGhlIGNsYXNzIAorICogPGEgaHJlZj1TdHJpbmdTZWFyY2guaHRtbD4gY29tLmlibS5pY3UudGV4dC5TdHJpbmdTZWFyY2g8L2E+LjwvcD4KKyAqCisgKiA8cD5UbyBjb25zdHJ1Y3QgYSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3Igb2JqZWN0LCB1c2VycyAKKyAqIGNhbGwgdGhlIG1ldGhvZCBnZXRDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IoKSBvbiBhCisgKiBSdWxlQmFzZWRDb2xsYXRvciB0aGF0IGRlZmluZXMgdGhlIGRlc2lyZWQgc29ydGluZyBvcmRlci48L3A+CisgKgorICogPHA+IEV4YW1wbGU6CisgKiA8YmxvY2txdW90ZT4KKyAqIDxwcmU+CisgKiAgU3RyaW5nIHRlc3RTdHJpbmcgPSAiVGhpcyBpcyBhIHRlc3QiOworICogIFJ1bGVCYXNlZENvbGxhdG9yIHJiYyA9IG5ldyBSdWxlQmFzZWRDb2xsYXRvcigiJmFtcDthJmx0O2IiKTsKKyAqICBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IgaXRlcmF0b3IgPSByYmMuZ2V0Q29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yKHRlc3RTdHJpbmcpOworICogIGludCBwcmltYXJ5T3JkZXIgPSBpdGVyYXRvci5JR05PUkFCTEU7CisgKiAgd2hpbGUgKHByaW1hcnlPcmRlciAhPSBpdGVyYXRvci5OVUxMT1JERVIpIHsKKyAqICAgICAgaW50IG9yZGVyID0gaXRlcmF0b3IubmV4dCgpOworICogICAgICBpZiAob3JkZXIgIT0gaXRlcmF0b3IuSUdOT1JBQkxFICYmCisgKiAgICAgICAgICBvcmRlciAhPSBpdGVyYXRvci5OVUxMT1JERVIpIHsKKyAqICAgICAgICAgIC8vIG9yZGVyIGlzIHZhbGlkLCBub3QgaWdub3JhYmxlIGFuZCB3ZSBoYXZlIG5vdCBwYXNzZWQgdGhlIGVuZAorICogICAgICAgICAgLy8gb2YgdGhlIGl0ZXJhdGlvbiwgd2UgZG8gc29tZXRoaW5nCisgKiAgICAgICAgICBwcmltYXJ5T3JkZXIgPSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IucHJpbWFyeU9yZGVyKG9yZGVyKTsKKyAqICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiTmV4dCBwcmltYXJ5IG9yZGVyIDB4IiArIAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVnZXIudG9IZXhTdHJpbmcocHJpbWFyeU9yZGVyKSk7CisgKiAgICAgIH0KKyAqICB9CisgKiA8L3ByZT4KKyAqIDwvYmxvY2txdW90ZT4KKyAqIDwvcD4KKyAqIDxwPgorICogVGhpcyBjbGFzcyBpcyBub3Qgc3ViY2xhc3NhYmxlCisgKiA8L3A+CisgKiBAc2VlIENvbGxhdG9yCisgKiBAc2VlIFJ1bGVCYXNlZENvbGxhdG9yCisgKiBAc2VlIFN0cmluZ1NlYXJjaAorICogQGF1dGhvciBTeW4gV2VlIFF1ZWsKKyAqIEBkcmFmdCBJQ1UgMi4yIAorICovCitwdWJsaWMgZmluYWwgY2xhc3MgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yIAoreworICAgIC8vIHB1YmxpYyBkYXRhIG1lbWJlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgCisgICAgLyoqCisgICAgICogPHA+VGhpcyBjb25zdGFudCBpcyByZXR1cm5lZCBieSB0aGUgaXRlcmF0b3IgaW4gdGhlIG1ldGhvZHMKKyAgICAgKiBuZXh0KCkgYW5kIHByZXZpb3VzKCkgd2hlbiB0aGUgZW5kIG9yIHRoZSBiZWdpbm5pbmcgb2YgdGhlCisgICAgICogc291cmNlIHN0cmluZyBoYXMgYmVlbiByZWFjaGVkLCBhbmQgdGhlcmUgYXJlIG5vIG1vcmUgdmFsaWQKKyAgICAgKiBjb2xsYXRpb24gZWxlbWVudHMgdG8gcmV0dXJuLjwvcD4KKyAgICAgKgorICAgICAqIDxwPlNlZSBjbGFzcyBkb2N1bWVudGF0aW9uIGZvciBhbiBleGFtcGxlIG9mIHVzZS48L3A+CisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKiBAc2VlICNuZXh0CisgICAgICogQHNlZSAjcHJldmlvdXMgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBOVUxMT1JERVIgPSAweGZmZmZmZmZmOworCisgICAgLyoqCisgICAgICogPHA+VGhpcyBjb25zdGFudCBpcyByZXR1cm5lZCBieSB0aGUgaXRlcmF0b3IgaW4gdGhlIG1ldGhvZHMKKyAgICAgKiBuZXh0KCkgYW5kIHByZXZpb3VzKCkgd2hlbiBhIGNvbGxhdGlvbiBlbGVtZW50IHJlc3VsdCBpcyB0byBiZQorICAgICAqIGlnbm9yZWQuPC9wPgorICAgICAqCisgICAgICogPHA+U2VlIGNsYXNzIGRvY3VtZW50YXRpb24gZm9yIGFuIGV4YW1wbGUgb2YgdXNlLjwvcD4KKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqIEBzZWUgI25leHQKKyAgICAgKiBAc2VlICNwcmV2aW91cyAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IElHTk9SQUJMRSA9IDA7CisKKyAgICAvLyBwdWJsaWMgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgIAorICAgIC8vIHB1YmxpYyBnZXR0ZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgCisgICAgLyoqCisgICAgICogPHA+UmV0dXJucyB0aGUgY2hhcmFjdGVyIG9mZnNldCBpbiB0aGUgc291cmNlIHN0cmluZworICAgICAqIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG5leHQgY29sbGF0aW9uIGVsZW1lbnQuIEkuZS4sIGdldE9mZnNldCgpCisgICAgICogcmV0dXJucyB0aGUgcG9zaXRpb24gaW4gdGhlIHNvdXJjZSBzdHJpbmcgY29ycmVzcG9uZGluZyB0byB0aGUKKyAgICAgKiBjb2xsYXRpb24gZWxlbWVudCB0aGF0IHdpbGwgYmUgcmV0dXJuZWQgYnkgdGhlIG5leHQgY2FsbCB0bworICAgICAqIG5leHQoKS4gVGhpcyB2YWx1ZSBjb3VsZCBiZSBhbnkgb2Y6CisgICAgICogPHVsPgorICAgICAqIDxsaT4gVGhlIGluZGV4IG9mIHRoZSA8Yj5maXJzdDwvYj4gY2hhcmFjdGVyIGNvcnJlc3BvbmRpbmcgdG8KKyAgICAgKiB0aGUgbmV4dCBjb2xsYXRpb24gZWxlbWVudC4gKFRoaXMgbWVhbnMgdGhhdCBpZgorICAgICAqIDxjb2RlPnNldE9mZnNldChvZmZzZXQpPC9jb2RlPiBzZXRzIHRoZSBpbmRleCBpbiB0aGUgbWlkZGxlIG9mCisgICAgICogYSBjb250cmFjdGlvbiwgPGNvZGU+Z2V0T2Zmc2V0KCk8L2NvZGU+IHJldHVybnMgdGhlIGluZGV4IG9mCisgICAgICogdGhlIGZpcnN0IGNoYXJhY3RlciBpbiB0aGUgY29udHJhY3Rpb24sIHdoaWNoIG1heSBub3QgYmUgZXF1YWwKKyAgICAgKiB0byB0aGUgb3JpZ2luYWwgb2Zmc2V0IHRoYXQgd2FzIHNldC4gSGVuY2UgY2FsbGluZyBnZXRPZmZzZXQoKQorICAgICAqIGltbWVkaWF0ZWx5IGFmdGVyIHNldE9mZnNldChvZmZzZXQpIGRvZXMgbm90IGd1YXJhbnRlZSB0aGF0IHRoZQorICAgICAqIG9yaWdpbmFsIG9mZnNldCBzZXQgd2lsbCBiZSByZXR1cm5lZC4pCisgICAgICogPGxpPiBJZiBub3JtYWxpemF0aW9uIGlzIG9uLCB0aGUgaW5kZXggb2YgdGhlIDxiPmltbWVkaWF0ZTwvYj4KKyAgICAgKiBzdWJzZXF1ZW50IGNoYXJhY3Rlciwgb3IgY29tcG9zaXRlIGNoYXJhY3RlciB3aXRoIHRoZSBmaXJzdAorICAgICAqIGNoYXJhY3RlciwgaGF2aW5nIGEgY29tYmluaW5nIGNsYXNzIG9mIDAuCisgICAgICogPGxpPiBUaGUgbGVuZ3RoIG9mIHRoZSBzb3VyY2Ugc3RyaW5nLCBpZiBpdGVyYXRpb24gaGFzIHJlYWNoZWQKKyAgICAgKiB0aGUgZW5kLgorICAgICAqPC91bD4KKyAgICAgKiA8L3A+CisgICAgICogQHJldHVybiBUaGUgY2hhcmFjdGVyIG9mZnNldCBpbiB0aGUgc291cmNlIHN0cmluZyBjb3JyZXNwb25kaW5nIHRvIHRoZSAKKyAgICAgKiAgICAgICAgIGNvbGxhdGlvbiBlbGVtZW50IHRoYXQgd2lsbCBiZSByZXR1cm5lZCBieSB0aGUgbmV4dCBjYWxsIHRvIAorICAgICAqICAgICAgICAgbmV4dCgpLgorICAgICAqIEBkcmFmdCBJQ1UgMi4yIAorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0T2Zmc2V0KCkKKyAgICB7CisgICAgICAgIGlmIChtX2J1ZmZlck9mZnNldF8gIT0gLTEpIHsKKyAgICAgICAgICAgIGlmIChtX2lzRm9yd2FyZHNfKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fRkNETGltaXRfOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG1fRkNEU3RhcnRfOworICAgICAgICB9CisgICAgICAgIHJldHVybiBtX3NvdXJjZV8uZ2V0SW5kZXgoKTsKKyAgICB9CisKKworICAgIC8qKgorICAgICAqIDxwPiBSZXR1cm5zIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhbnkgZXhwYW5zaW9uIHNlcXVlbmNlIHRoYXQgZW5kcyB3aXRoIAorICAgICAqIHRoZSBzcGVjaWZpZWQgY29sbGF0aW9uIGVsZW1lbnQuIElmIHRoZXJlIGlzIG5vIGV4cGFuc2lvbiB3aXRoIHRoaXMKKyAgICAgKiBjb2xsYXRpb24gZWxlbWVudCBhcyB0aGUgbGFzdCBlbGVtZW50LCByZXR1cm5zIDEuCisgICAgICogPC9wPgorICAgICAqIEBwYXJhbSBjZSBhIGNvbGxhdGlvbiBlbGVtZW50IHJldHVybmVkIGJ5IHByZXZpb3VzKCkgb3IgbmV4dCgpLgorICAgICAqIEByZXR1cm4gdGhlIG1heGltdW0gbGVuZ3RoIG9mIGFueSBleHBhbnNpb24gc2VxdWVuY2UgZW5kaW5nCisgICAgICogICAgICAgICB3aXRoIHRoZSBzcGVjaWZpZWQgY29sbGF0aW9uIGVsZW1lbnQuCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldE1heEV4cGFuc2lvbihpbnQgY2UpCisgICAgeworICAgICAgICBpbnQgc3RhcnQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgaW50IGxpbWl0ID0gbV9jb2xsYXRvcl8ubV9leHBhbnNpb25FbmRDRV8ubGVuZ3RoOworICAgICAgICBsb25nIHVuc2lnbmVkY2UgPSBjZSAmIDB4RkZGRkZGRkZsOworICAgICAgICB3aGlsZSAoc3RhcnQgPCBsaW1pdCAtIDEpIHsKKyAgICAgICAgICAgIGludCBtaWQgPSBzdGFydCArICgobGltaXQgLSBzdGFydCkgPj4gMSk7ICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGxvbmcgbWlkY2UgPSBtX2NvbGxhdG9yXy5tX2V4cGFuc2lvbkVuZENFX1ttaWRdICYgMHhGRkZGRkZGRmw7CisgICAgICAgICAgICBpZiAodW5zaWduZWRjZSA8PSBtaWRjZSkgeyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgbGltaXQgPSBtaWQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgc3RhcnQgPSBtaWQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgfSAgICAgICAgICAKKyAgICAgICAgaW50IHJlc3VsdCA9IDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBpZiAobV9jb2xsYXRvcl8ubV9leHBhbnNpb25FbmRDRV9bc3RhcnRdID09IGNlKSB7CisgICAgICAgICAgICByZXN1bHQgPSBtX2NvbGxhdG9yXy5tX2V4cGFuc2lvbkVuZENFTWF4U2l6ZV9bc3RhcnRdOworICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBlbHNlIGlmIChsaW1pdCA8IG1fY29sbGF0b3JfLm1fZXhwYW5zaW9uRW5kQ0VfLmxlbmd0aCAmJgorICAgICAgICAgICAgICAgICBtX2NvbGxhdG9yXy5tX2V4cGFuc2lvbkVuZENFX1tsaW1pdF0gPT0gY2UpIHsgICAgICAgICAgIAorICAgICAgICAgICAgcmVzdWx0ID0gbV9jb2xsYXRvcl8ubV9leHBhbnNpb25FbmRDRU1heFNpemVfW2xpbWl0XTsgCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIGVsc2UgaWYgKChjZSAmIDB4RkZGRikgPT0gMHgwMEMwKSB7CisgICAgICAgICAgICByZXN1bHQgPSAyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsgICAgCisgICAgfQorCisgICAgLy8gcHVibGljIG90aGVyIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAKKyAgICAvKioKKyAgICAgKiA8cD4gUmVzZXRzIHRoZSBjdXJzb3IgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nLiBUaGUgbmV4dAorICAgICAqIGNhbGwgdG8gbmV4dCgpIG9yIHByZXZpb3VzKCkgd2lsbCByZXR1cm4gdGhlIGZpcnN0IGFuZCBsYXN0CisgICAgICogY29sbGF0aW9uIGVsZW1lbnQgaW4gdGhlIHN0cmluZywgcmVzcGVjdGl2ZWx5LjwvcD4KKyAgICAgKgorICAgICAqIDxwPklmIHRoZSBSdWxlQmFzZWRDb2xsYXRvciB1c2VkIGJ5IHRoaXMgaXRlcmF0b3IgaGFzIGhhZCBpdHMKKyAgICAgKiBhdHRyaWJ1dGVzIGNoYW5nZWQsIGNhbGxpbmcgcmVzZXQoKSB3aWxsIHJlaW5pdGlhbGl6ZSB0aGUKKyAgICAgKiBpdGVyYXRvciB0byB1c2UgdGhlIG5ldyBhdHRyaWJ1dGVzLjwvcD4KKyAgICAgKgorICAgICAqIEBkcmFmdCBJQ1UgMi4yIAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHJlc2V0KCkKKyAgICB7CisgICAgICAgIG1fc291cmNlXy5zZXRJbmRleChtX3NvdXJjZV8uZ2V0QmVnaW5JbmRleCgpKTsKKyAgICAgICAgdXBkYXRlSW50ZXJuYWxTdGF0ZSgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIDxwPkdldCB0aGUgbmV4dCBjb2xsYXRpb24gZWxlbWVudCBpbiB0aGUgc291cmNlIHN0cmluZy48L3A+ICAKKyAgICAgKgorICAgICAqIDxwPlRoaXMgaXRlcmF0b3IgaXRlcmF0ZXMgb3ZlciBhIHNlcXVlbmNlIG9mIGNvbGxhdGlvbiBlbGVtZW50cworICAgICAqIHRoYXQgd2VyZSBidWlsdCBmcm9tIHRoZSBzdHJpbmcuIEJlY2F1c2UgdGhlcmUgaXNuJ3QKKyAgICAgKiBuZWNlc3NhcmlseSBhIG9uZS10by1vbmUgbWFwcGluZyBmcm9tIGNoYXJhY3RlcnMgdG8gY29sbGF0aW9uCisgICAgICogZWxlbWVudHMsIHRoaXMgZG9lc24ndCBtZWFuIHRoZSBzYW1lIHRoaW5nIGFzICJyZXR1cm4gdGhlCisgICAgICogY29sbGF0aW9uIGVsZW1lbnQgW29yIG9yZGVyaW5nIHByaW9yaXR5XSBvZiB0aGUgbmV4dCBjaGFyYWN0ZXIKKyAgICAgKiBpbiB0aGUgc3RyaW5nIi48L3A+CisgICAgICoKKyAgICAgKiA8cD5UaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGNvbGxhdGlvbiBlbGVtZW50IHRoYXQgdGhlCisgICAgICogaXRlcmF0b3IgaXMgY3VycmVudGx5IHBvaW50aW5nIHRvLCBhbmQgdGhlbiB1cGRhdGVzIHRoZQorICAgICAqIGludGVybmFsIHBvaW50ZXIgdG8gcG9pbnQgdG8gdGhlIG5leHQgZWxlbWVudC4gIFByZXZpb3VzKCkKKyAgICAgKiB1cGRhdGVzIHRoZSBwb2ludGVyIGZpcnN0LCBhbmQgdGhlbiByZXR1cm5zIHRoZSBlbGVtZW50LiBUaGlzCisgICAgICogbWVhbnMgdGhhdCB3aGVuIHlvdSBjaGFuZ2UgZGlyZWN0aW9uIHdoaWxlIGl0ZXJhdGluZyAoaS5lLiwKKyAgICAgKiBjYWxsIG5leHQoKSBhbmQgdGhlbiBjYWxsIHByZXZpb3VzKCksIG9yIGNhbGwgcHJldmlvdXMoKSBhbmQKKyAgICAgKiB0aGVuIGNhbGwgbmV4dCgpKSwgeW91J2xsIGdldCBiYWNrIHRoZSBzYW1lIGVsZW1lbnQgdHdpY2UuPC9wPgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgbmV4dCBjb2xsYXRpb24gZWxlbWVudCBvciBOVUxMT1JERVIgaWYgdGhlIGVuZCBvZiB0aGUgCisgICAgICogICAgICAgICBpdGVyYXRpb24gaGFzIGJlZW4gcmVhY2hlZC4KKyAgICAgKiBAZHJhZnQgSUNVIDIuMiAKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IG5leHQoKQorICAgIHsKKyAgICAgICAgbV9pc0ZvcndhcmRzXyA9IHRydWU7CisgICAgICAgIGlmIChtX0NFQnVmZmVyU2l6ZV8gPiAwKSB7IAorICAgICAgICAgICAgaWYgKG1fQ0VCdWZmZXJPZmZzZXRfIDwgbV9DRUJ1ZmZlclNpemVfKSB7IAorICAgICAgICAgICAgICAgIC8vIGlmIHRoZXJlIGFyZSBleHBhbnNpb25zIGxlZnQgaW4gdGhlIGJ1ZmZlciwgd2UgcmV0dXJuIGl0CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fQ0VCdWZmZXJfW21fQ0VCdWZmZXJPZmZzZXRfICsrXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fQ0VCdWZmZXJTaXplXyA9IDA7CisgICAgICAgICAgICBtX0NFQnVmZmVyT2Zmc2V0XyA9IDA7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGNoYXIgY2ggPSBuZXh0Q2hhcigpOyAgICAKKyAgICAgICAgLyogU3lzdGVtLm91dC5wcmludGxuKCJjaCAiICsgSW50ZWdlci50b0hleFN0cmluZyhjaCkgKyAiICIgKyAKKyAgICAgICAgICAgSW50ZWdlci50b0hleFN0cmluZyhtX3NvdXJjZV8uY3VycmVudCgpKSk7Ki8KKyAgICAgICAgaWYgKGNoID09IENoYXJhY3Rlckl0ZXJhdG9yLkRPTkUpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMT1JERVI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1fY29sbGF0b3JfLm1faXNIaXJhZ2FuYTRfKSB7CisgICAgICAgICAgICBtX2lzQ29kZVBvaW50SGlyYWdhbmFfID0gKGNoID49IDB4MzA0MCAmJiBjaCA8PSAweDMwOWUpIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICEoY2ggPiAweDMwOTQgJiYgY2ggPCAweDMwOWQpOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgaW50IHJlc3VsdCA9IE5VTExPUkRFUjsKKyAgICAgICAgaWYgKGNoIDw9IDB4RkYpIHsKKyAgICAgICAgICAgIC8vIEZvciBsYXRpbi0xIGNoYXJhY3RlcnMgd2UgbmV2ZXIgbmVlZCB0byBmYWxsIGJhY2sgdG8gdGhlIFVDQSAKKyAgICAgICAgICAgIC8vIHRhYmxlIGJlY2F1c2UgYWxsIG9mIHRoZSBVQ0EgZGF0YSBpcyByZXBsaWNhdGVkIGluIHRoZSAKKyAgICAgICAgICAgIC8vIGxhdGluT25lTWFwcGluZyBhcnJheQorICAgICAgICAgICAgcmVzdWx0ID0gbV9jb2xsYXRvcl8ubV90cmllXy5nZXRMYXRpbjFMaW5lYXJWYWx1ZShjaCk7CisgICAgICAgICAgICBpZiAoUnVsZUJhc2VkQ29sbGF0b3IuaXNTcGVjaWFsKHJlc3VsdCkpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBuZXh0U3BlY2lhbChtX2NvbGxhdG9yXywgcmVzdWx0LCBjaCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXN1bHQgPSBtX2NvbGxhdG9yXy5tX3RyaWVfLmdldExlYWRWYWx1ZShjaCk7CisgICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbihJbnRlZ2VyLnRvSGV4U3RyaW5nKHJlc3VsdCkpOworICAgICAgICAgICAgaWYgKFJ1bGVCYXNlZENvbGxhdG9yLmlzU3BlY2lhbChyZXN1bHQpKSB7ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gc3Vycm9nYXRlIGxlYWRzIGFyZSBoYW5kbGVkIGFzIHNwZWNpYWwgY2VzCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbmV4dFNwZWNpYWwobV9jb2xsYXRvcl8sIHJlc3VsdCwgY2gpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBDRV9OT1RfRk9VTkRfKSB7ICAgCisgICAgICAgICAgICAgICAgLy8gY291bGRuJ3QgZmluZCBhIGdvb2QgQ0UgaW4gdGhlIHRhaWxvcmluZworICAgICAgICAgICAgICAgIC8vIGlmIHdlIGdvdCBoZXJlLCB0aGUgY29kZXBvaW50IE1VU1QgYmUgb3ZlciAweEZGIC0gc28gd2UgbG9vayAKKyAgICAgICAgICAgICAgICAvLyBkaXJlY3RseSBpbiB0aGUgVUNBCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9jb2xsYXRvcl8uVUNBXy5tX3RyaWVfLmdldExlYWRWYWx1ZShjaCk7CisgICAgICAgICAgICAgICAgaWYgKFJ1bGVCYXNlZENvbGxhdG9yLmlzU3BlY2lhbChyZXN1bHQpKSB7IAorICAgICAgICAgICAgICAgICAgICAvLyBVQ0EgYWxzbyBnaXZlcyB1cyBhIHNwZWNpYWwgQ0UKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbmV4dFNwZWNpYWwobV9jb2xsYXRvcl8uVUNBXywgcmVzdWx0LCBjaCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7IAorICAgIH0KKworICAgIC8qKgorICAgICAqIDxwPkdldCB0aGUgcHJldmlvdXMgY29sbGF0aW9uIGVsZW1lbnQgaW4gdGhlIHNvdXJjZSBzdHJpbmcuPC9wPgorICAgICAqCisgICAgICogPHA+VGhpcyBpdGVyYXRvciBpdGVyYXRlcyBvdmVyIGEgc2VxdWVuY2Ugb2YgY29sbGF0aW9uIGVsZW1lbnRzCisgICAgICogdGhhdCB3ZXJlIGJ1aWx0IGZyb20gdGhlIHN0cmluZy4gQmVjYXVzZSB0aGVyZSBpc24ndAorICAgICAqIG5lY2Vzc2FyaWx5IGEgb25lLXRvLW9uZSBtYXBwaW5nIGZyb20gY2hhcmFjdGVycyB0byBjb2xsYXRpb24KKyAgICAgKiBlbGVtZW50cywgdGhpcyBkb2Vzbid0IG1lYW4gdGhlIHNhbWUgdGhpbmcgYXMgInJldHVybiB0aGUKKyAgICAgKiBjb2xsYXRpb24gZWxlbWVudCBbb3Igb3JkZXJpbmcgcHJpb3JpdHldIG9mIHRoZSBwcmV2aW91cworICAgICAqIGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nIi48L3A+CisgICAgICoKKyAgICAgKiA8cD5UaGlzIGZ1bmN0aW9uIHVwZGF0ZXMgdGhlIGl0ZXJhdG9yJ3MgaW50ZXJuYWwgcG9pbnRlciB0bworICAgICAqIHBvaW50IHRvIHRoZSBjb2xsYXRpb24gZWxlbWVudCBwcmVjZWRpbmcgdGhlIG9uZSBpdCdzIGN1cnJlbnRseQorICAgICAqIHBvaW50aW5nIHRvIGFuZCB0aGVuIHJldHVybnMgdGhhdCBlbGVtZW50LCB3aGlsZSBuZXh0KCkgcmV0dXJucworICAgICAqIHRoZSBjdXJyZW50IGVsZW1lbnQgYW5kIHRoZW4gdXBkYXRlcyB0aGUgcG9pbnRlci4gVGhpcyBtZWFucworICAgICAqIHRoYXQgd2hlbiB5b3UgY2hhbmdlIGRpcmVjdGlvbiB3aGlsZSBpdGVyYXRpbmcgKGkuZS4sIGNhbGwKKyAgICAgKiBuZXh0KCkgYW5kIHRoZW4gY2FsbCBwcmV2aW91cygpLCBvciBjYWxsIHByZXZpb3VzKCkgYW5kIHRoZW4KKyAgICAgKiBjYWxsIG5leHQoKSksIHlvdSdsbCBnZXQgYmFjayB0aGUgc2FtZSBlbGVtZW50IHR3aWNlLjwvcD4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIHByZXZpb3VzIGNvbGxhdGlvbiBlbGVtZW50LCBvciBOVUxMT1JERVIgd2hlbiB0aGUgc3RhcnQgb2YgCisgICAgICogICAgICAgICAgICAgdGhlIGl0ZXJhdGlvbiBoYXMgYmVlbiByZWFjaGVkLgorICAgICAqIEBkcmFmdCBJQ1UgMi4yIAorICAgICAqLworICAgIHB1YmxpYyBpbnQgcHJldmlvdXMoKQorICAgIHsKKyAgICAgICAgaWYgKG1fc291cmNlXy5nZXRJbmRleCgpIDw9IDAgJiYgbV9pc0ZvcndhcmRzXykgeworICAgICAgICAgICAgLy8gaWYgaXRlcmF0b3IgaXMgbmV3IG9yIHJlc2V0LCB3ZSBjYW4gaW1tZWRpYXRlIHBlcmZvcm0gIGJhY2t3YXJkcworICAgICAgICAgICAgLy8gaXRlcmF0aW9uIGV2ZW4gd2hlbiB0aGUgb2Zmc2V0IGlzIG5vdCByaWdodC4KKyAgICAgICAgICAgIG1fc291cmNlXy5zZXRJbmRleChtX3NvdXJjZV8uZ2V0RW5kSW5kZXgoKSk7CisgICAgICAgICAgICB1cGRhdGVJbnRlcm5hbFN0YXRlKCk7CisgICAgICAgIH0KKyAgICAgICAgbV9pc0ZvcndhcmRzXyA9IGZhbHNlOworICAgICAgICBpbnQgcmVzdWx0ID0gTlVMTE9SREVSOworICAgICAgICBpZiAobV9DRUJ1ZmZlclNpemVfID4gMCkgeworICAgICAgICAgICAgaWYgKG1fQ0VCdWZmZXJPZmZzZXRfID4gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBtX0NFQnVmZmVyX1stLSBtX0NFQnVmZmVyT2Zmc2V0X107CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX0NFQnVmZmVyU2l6ZV8gPSAwOyAKKyAgICAgICAgICAgIG1fQ0VCdWZmZXJPZmZzZXRfID0gMDsKKyAgICAgICAgfQorICAgICAgICBjaGFyIGNoID0gcHJldmlvdXNDaGFyKCk7ICAgIAorICAgICAgICBpZiAoY2ggPT0gQ2hhcmFjdGVySXRlcmF0b3IuRE9ORSkgeworICAgICAgICAgICAgcmV0dXJuIE5VTExPUkRFUjsKKyAgICAgICAgfSAKKyAgICAgICAgaWYgKG1fY29sbGF0b3JfLm1faXNIaXJhZ2FuYTRfKSB7CisgICAgICAgICAgICBtX2lzQ29kZVBvaW50SGlyYWdhbmFfID0gKGNoID49IDB4MzA0MCAmJiBjaCA8PSAweDMwOWYpOworICAgICAgICB9CisgICAgICAgIGlmIChtX2NvbGxhdG9yXy5pc0NvbnRyYWN0aW9uRW5kKGNoKSAmJiAhaXNCYWNrd2FyZHNTdGFydCgpKSB7CisgICAgICAgICAgICByZXN1bHQgPSBwcmV2aW91c1NwZWNpYWwobV9jb2xsYXRvcl8sIENFX0NPTlRSQUNUSU9OXywgY2gpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKGNoIDw9IDB4RkYpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBtX2NvbGxhdG9yXy5tX3RyaWVfLmdldExhdGluMUxpbmVhclZhbHVlKGNoKTsKKyAgICAgICAgICAgICAgICBpZiAoUnVsZUJhc2VkQ29sbGF0b3IuaXNTcGVjaWFsKHJlc3VsdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcHJldmlvdXNTcGVjaWFsKG1fY29sbGF0b3JfLCByZXN1bHQsIGNoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAobV9idWZmZXJPZmZzZXRfIDwgMCAmJiBtX3NvdXJjZV8uZ2V0SW5kZXgoKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIHdlIG5vdyByZWFycmFuZ2UgdW5jb25kaXRpb25hbGx5CisgICAgICAgICAgICAgICAgICAgIGlmIChpc1RoYWlQcmVWb3dlbChtX3NvdXJjZV8ucHJldmlvdXMoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IENFX1RIQUlfOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9jb2xsYXRvcl8ubV90cmllXy5nZXRMZWFkVmFsdWUoY2gpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIG1fc291cmNlXy5uZXh0KCk7ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1fY29sbGF0b3JfLm1fdHJpZV8uZ2V0TGVhZFZhbHVlKGNoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKFJ1bGVCYXNlZENvbGxhdG9yLmlzU3BlY2lhbChyZXN1bHQpKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHByZXZpb3VzU3BlY2lhbChtX2NvbGxhdG9yXywgcmVzdWx0LCBjaCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gQ0VfTk9UX0ZPVU5EXykgeworICAgICAgICAgICAgICAgICAgICBpZiAoIWlzQmFja3dhcmRzU3RhcnQoKSAKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIG1fY29sbGF0b3JfLmlzQ29udHJhY3Rpb25FbmQoY2gpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBDRV9DT05UUkFDVElPTl87CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gUnVsZUJhc2VkQ29sbGF0b3IuVUNBXy5tX3RyaWVfLmdldExlYWRWYWx1ZShjaCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmIChSdWxlQmFzZWRDb2xsYXRvci5pc1NwZWNpYWwocmVzdWx0KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcHJldmlvdXNTcGVjaWFsKFJ1bGVCYXNlZENvbGxhdG9yLlVDQV8sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCwgY2gpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBwcmltYXJ5IG9yZGVyIG9mIHRoZSBzcGVjaWZpZWQgY29sbGF0aW9uIGVsZW1lbnQsIAorICAgICAqIGkuZS4gdGhlIGZpcnN0IDE2IGJpdHMuICBUaGlzIHZhbHVlIGlzIHVuc2lnbmVkLgorICAgICAqIEBwYXJhbSBjZSB0aGUgY29sbGF0aW9uIGVsZW1lbnQKKyAgICAgKiBAcmV0dXJuIHRoZSBlbGVtZW50J3MgMTYgYml0cyBwcmltYXJ5IG9yZGVyLgorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgcHJpbWFyeU9yZGVyKGludCBjZSkKKyAgICB7CisgICAgICAgIHJldHVybiAoY2UgJiBSdWxlQmFzZWRDb2xsYXRvci5DRV9QUklNQVJZX01BU0tfKSAKKyAgICAgICAgICAgID4+PiBSdWxlQmFzZWRDb2xsYXRvci5DRV9QUklNQVJZX1NISUZUXzsKKyAgICB9CisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBzZWNvbmRhcnkgb3JkZXIgb2YgdGhlIHNwZWNpZmllZCBjb2xsYXRpb24gZWxlbWVudCwKKyAgICAgKiBpLmUuIHRoZSAxNnRoIHRvIDIzdGggYml0cywgaW5jbHVzaXZlLiAgVGhpcyB2YWx1ZSBpcyB1bnNpZ25lZC4KKyAgICAgKiBAcGFyYW0gY2UgdGhlIGNvbGxhdGlvbiBlbGVtZW50CisgICAgICogQHJldHVybiB0aGUgZWxlbWVudCdzIDggYml0cyBzZWNvbmRhcnkgb3JkZXIKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IHNlY29uZGFyeU9yZGVyKGludCBjZSkKKyAgICB7CisgICAgICAgIHJldHVybiAoY2UgJiBSdWxlQmFzZWRDb2xsYXRvci5DRV9TRUNPTkRBUllfTUFTS18pIAorICAgICAgICAgICAgPj4gUnVsZUJhc2VkQ29sbGF0b3IuQ0VfU0VDT05EQVJZX1NISUZUXzsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSB0ZXJ0aWFyeSBvcmRlciBvZiB0aGUgc3BlY2lmaWVkIGNvbGxhdGlvbiBlbGVtZW50LCBpLmUuIHRoZSBsYXN0CisgICAgICogOCBiaXRzLiAgVGhpcyB2YWx1ZSBpcyB1bnNpZ25lZC4KKyAgICAgKiBAcGFyYW0gY2UgdGhlIGNvbGxhdGlvbiBlbGVtZW50CisgICAgICogQHJldHVybiB0aGUgZWxlbWVudCdzIDggYml0cyB0ZXJ0aWFyeSBvcmRlcgorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgdGVydGlhcnlPcmRlcihpbnQgY2UpCisgICAgeworICAgICAgICByZXR1cm4gY2UgJiBSdWxlQmFzZWRDb2xsYXRvci5DRV9URVJUSUFSWV9NQVNLXzsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiA8cD4gU2V0cyB0aGUgaXRlcmF0b3IgdG8gcG9pbnQgdG8gdGhlIGNvbGxhdGlvbiBlbGVtZW50CisgICAgICogY29ycmVzcG9uZGluZyB0byB0aGUgY2hhcmFjdGVyIGF0IHRoZSBzcGVjaWZpZWQgb2Zmc2V0LiBUaGUKKyAgICAgKiB2YWx1ZSByZXR1cm5lZCBieSB0aGUgbmV4dCBjYWxsIHRvIG5leHQoKSB3aWxsIGJlIHRoZSBjb2xsYXRpb24KKyAgICAgKiBlbGVtZW50IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGNoYXJhY3RlcnMgYXQgb2Zmc2V0LjwvcD4KKyAgICAgKgorICAgICAqIDxwPklmIG9mZnNldCBpcyBpbiB0aGUgbWlkZGxlIG9mIGEgY29udHJhY3RpbmcgY2hhcmFjdGVyCisgICAgICogc2VxdWVuY2UsIHRoZSBpdGVyYXRvciBpcyBhZGp1c3RlZCB0byB0aGUgc3RhcnQgb2YgdGhlCisgICAgICogY29udHJhY3Rpbmcgc2VxdWVuY2UuIFRoaXMgbWVhbnMgdGhhdCBnZXRPZmZzZXQoKSBpcyBub3QKKyAgICAgKiBndWFyYW50ZWVkIHRvIHJldHVybiB0aGUgc2FtZSB2YWx1ZSBzZXQgYnkgdGhpcyBtZXRob2QuPC9wPgorICAgICAqCisgICAgICogPHA+SWYgdGhlIGRlY29tcG9zaXRpb24gbW9kZSBpcyBvbiwgYW5kIG9mZnNldCBpcyBpbiB0aGUgbWlkZGxlCisgICAgICogb2YgYSBkZWNvbXBvc2libGUgcmFuZ2Ugb2Ygc291cmNlIHRleHQsIHRoZSBpdGVyYXRvciBtYXkgbm90CisgICAgICogcmV0dXJuIGEgY29ycmVjdCByZXN1bHQgZm9yIHRoZSBuZXh0IGZvcndhcmRzIG9yIGJhY2t3YXJkcworICAgICAqIGl0ZXJhdGlvbi4gIFRoZSB1c2VyIG11c3QgZW5zdXJlIHRoYXQgdGhlIG9mZnNldCBpcyBub3QgaW4gdGhlCisgICAgICogbWlkZGxlIG9mIGEgZGVjb21wb3NpYmxlIHJhbmdlLjwvcD4KKyAgICAgKgorICAgICAqIEBwYXJhbSBvZmZzZXQgdGhlIGNoYXJhY3RlciBvZmZzZXQgaW50byB0aGUgb3JpZ2luYWwgc291cmNlIHN0cmluZyB0byAKKyAgICAgKiAgICAgICAgc2V0LiBOb3RlIHRoYXQgdGhpcyBpcyBub3QgYW4gb2Zmc2V0IGludG8gdGhlIGNvcnJlc3BvbmRpbmcgCisgICAgICogICAgICAgIHNlcXVlbmNlIG9mIGNvbGxhdGlvbiBlbGVtZW50cy4KKyAgICAgKiBAZHJhZnQgSUNVIDIuMiAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRPZmZzZXQoaW50IG9mZnNldCkKKyAgICB7ICAKKyAgICAgICAgbV9zb3VyY2VfLnNldEluZGV4KG9mZnNldCk7CisgICAgICAgIGNoYXIgY2ggPSBtX3NvdXJjZV8uY3VycmVudCgpOworICAgICAgICBpZiAobV9jb2xsYXRvcl8uaXNVbnNhZmUoY2gpKSB7CisgICAgICAgICAgICAvLyBpZiBpdCBpcyB1bnNhZmUgd2UgbmVlZCB0byBjaGVjayBpZiBpdCBpcyBwYXJ0IG9mIGEgY29udHJhY3Rpb24KKyAgICAgICAgICAgIC8vIG9yIGEgc3Vycm9nYXRlIGNoYXJhY3RlcgorICAgICAgICAgICAgaWYgKFVURjE2LmlzVHJhaWxTdXJyb2dhdGUoY2gpKSB7CisgICAgICAgICAgICAgICAgLy8gaWYgaXQgaXMgYSBzdXJyb2dhdGUgcGFpciB3ZSBtb3ZlIHVwIG9uZSBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICBjaGFyIHByZXZjaCA9IG1fc291cmNlXy5wcmV2aW91cygpOworICAgICAgICAgICAgICAgIGlmICghVVRGMTYuaXNMZWFkU3Vycm9nYXRlKHByZXZjaCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9zb3VyY2VfLnNldEluZGV4KG9mZnNldCk7IC8vIGdvIGJhY2sgdG8gdGhlIHNhbWUgaW5kZXgKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBjb3VsZCBiZSBwYXJ0IG9mIGEgY29udHJhY3Rpb24KKyAgICAgICAgICAgICAgICAvLyBiYWNrdXAgdG8gYSBzYWZlIHBvaW50IGFuZCBpdGVyYXRlIHRpbGwgd2UgcGFzcyBvZmZzZXQKKyAgICAgICAgICAgICAgICB3aGlsZSAobV9zb3VyY2VfLmdldEluZGV4KCkgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghbV9jb2xsYXRvcl8uaXNVbnNhZmUoY2gpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBjaCA9IG1fc291cmNlXy5wcmV2aW91cygpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB1cGRhdGVJbnRlcm5hbFN0YXRlKCk7CisgICAgICAgICAgICAgICAgaW50IHByZXZvZmZzZXQgPSAwOworICAgICAgICAgICAgICAgIHdoaWxlIChtX3NvdXJjZV8uZ2V0SW5kZXgoKSA8PSBvZmZzZXQpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJldm9mZnNldCA9IG1fc291cmNlXy5nZXRJbmRleCgpOworICAgICAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICAgICAgfSAgICAgICAKKyAgICAgICAgICAgICAgICBtX3NvdXJjZV8uc2V0SW5kZXgocHJldm9mZnNldCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgdXBkYXRlSW50ZXJuYWxTdGF0ZSgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIDxwPlNldCBhIG5ldyBzb3VyY2Ugc3RyaW5nIGZvciBpdGVyYXRpb24sIGFuZCByZXNldCB0aGUgb2Zmc2V0CisgICAgICogdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgdGV4dC48L3A+CisgICAgICoKKyAgICAgKiBAcGFyYW0gc291cmNlIHRoZSBuZXcgc291cmNlIHN0cmluZyBmb3IgaXRlcmF0aW9uLgorICAgICAqIEBkcmFmdCBJQ1UgMi4yIAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFRleHQoU3RyaW5nIHNvdXJjZSkKKyAgICB7CisgICAgICAgIG1fc3JjVXRpbEl0ZXJfLnNldFRleHQoc291cmNlKTsgICAKKyAgICAgICAgbV9zb3VyY2VfID0gbV9zcmNVdGlsSXRlcl87CisgICAgICAgIHVwZGF0ZUludGVybmFsU3RhdGUoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiA8cD5TZXQgYSBuZXcgc291cmNlIHN0cmluZyBpdGVyYXRvciBmb3IgaXRlcmF0aW9uLCBhbmQgcmVzZXQgdGhlIAorICAgICAqIG9mZnNldCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSB0ZXh0LgorICAgICAqIDwvcD4KKyAgICAgKiBAcGFyYW0gc291cmNlIHRoZSBuZXcgc291cmNlIHN0cmluZyBpdGVyYXRvciBmb3IgaXRlcmF0aW9uLgorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0VGV4dChDaGFyYWN0ZXJJdGVyYXRvciBzb3VyY2UpCisgICAgeyAgIAorICAgICAgICBtX3NvdXJjZV8gPSBzb3VyY2U7ICAgICAKKyAgICAgICAgbV9zb3VyY2VfLnNldEluZGV4KG1fc291cmNlXy5nZXRCZWdpbkluZGV4KCkpOworICAgICAgICB1cGRhdGVJbnRlcm5hbFN0YXRlKCk7CisgICAgfQorICAgIAorICAgIC8vIHB1YmxpYyBtaXNjZWxsYW5lb3VzIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvKioKKyAgICAgKiBUZXN0cyB0aGF0IGFyZ3VtZW50IG9iamVjdCBpcyBlcXVhbHMgdG8gdGhpcyBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuCisgICAgICogSXRlcmF0b3JzIGFyZSBlcXVhbCBpZiB0aGUgb2JqZWN0cyB1c2VzIHRoZSBzYW1lIFJ1bGVCYXNlZENvbGxhdG9yLAorICAgICAqIHRoZSBzYW1lIHNvdXJjZSB0ZXh0IGFuZCBoYXZlIHRoZSBzYW1lIGN1cnJlbnQgcG9zaXRpb24gaW4gaXRlcmF0aW9uLgorICAgICAqIEBwYXJhbSB0aGF0IG9iamVjdCB0byB0ZXN0IGlmIGl0IGlzIGVxdWFscyB0byB0aGlzIAorICAgICAqICAgICAgICAgICAgIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvcgorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCB0aGF0KSAKKyAgICB7CisgICAgICAgIGlmICh0aGF0ID09IHRoaXMpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGlmICh0aGF0IGluc3RhbmNlb2YgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yKSB7CisgICAgICAgICAgICBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IgdGhhdGNlaXRlciAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IpdGhhdDsKKyAgICAgICAgICAgIGlmIChtX2NvbGxhdG9yXy5lcXVhbHModGhhdGNlaXRlci5tX2NvbGxhdG9yXykgCisgICAgICAgICAgICAgICAgJiYgbV9zb3VyY2VfLmVxdWFscyh0aGF0Y2VpdGVyLm1fc291cmNlXykpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIC8vIHBhY2thZ2UgcHJpdmF0ZSBjb25zdHJ1Y3RvcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgIAorICAgIC8qKgorICAgICAqIDxwPkNvbGxhdGlvbkVsZW1lbnRJdGVyYXRvciBjb25zdHJ1Y3Rvci4gVGhpcyB0YWtlcyBhIHNvdXJjZQorICAgICAqIHN0cmluZyBhbmQgYSBSdWxlQmFzZWRDb2xsYXRvci4gVGhlIGl0ZXJhdG9yIHdpbGwgd2FsayB0aHJvdWdoCisgICAgICogdGhlIHNvdXJjZSBzdHJpbmcgYmFzZWQgb24gdGhlIHJ1bGVzIGRlZmluZWQgYnkgdGhlCisgICAgICogY29sbGF0b3IuIElmIHRoZSBzb3VyY2Ugc3RyaW5nIGlzIGVtcHR5LCBOVUxMT1JERVIgd2lsbCBiZQorICAgICAqIHJldHVybmVkIG9uIHRoZSBmaXJzdCBjYWxsIHRvIG5leHQoKS48L3A+CisgICAgICoKKyAgICAgKiBAcGFyYW0gc291cmNlIHRoZSBzb3VyY2Ugc3RyaW5nLgorICAgICAqIEBwYXJhbSBjb2xsYXRvciB0aGUgUnVsZUJhc2VkQ29sbGF0b3IKKyAgICAgKiBAZHJhZnQgSUNVIDIuMiAKKyAgICAgKi8KKyAgICBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IoU3RyaW5nIHNvdXJjZSwgUnVsZUJhc2VkQ29sbGF0b3IgY29sbGF0b3IpIAorICAgIHsKKyAgICAgICAgbV9zcmNVdGlsSXRlcl8gPSBuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3Ioc291cmNlKTsKKyAgICAgICAgbV91dGlsU3RyaW5nQnVmZmVyXyA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgbV9zb3VyY2VfID0gbV9zcmNVdGlsSXRlcl87CisgICAgICAgIG1fY29sbGF0b3JfID0gY29sbGF0b3I7CisgICAgICAgIG1fQ0VCdWZmZXJfID0gbmV3IGludFtDRV9CVUZGRVJfSU5JVF9TSVpFX107CisgICAgICAgIG1fYnVmZmVyXyA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgbV91dGlsU3BlY2lhbEJhY2tVcF8gPSBuZXcgQmFja3VwKCk7CisgICAgICAgIHVwZGF0ZUludGVybmFsU3RhdGUoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiA8cD5Db2xsYXRpb25FbGVtZW50SXRlcmF0b3IgY29uc3RydWN0b3IuIFRoaXMgdGFrZXMgYSBzb3VyY2UKKyAgICAgKiBjaGFyYWN0ZXIgaXRlcmF0b3IgYW5kIGEgUnVsZUJhc2VkQ29sbGF0b3IuIFRoZSBpdGVyYXRvciB3aWxsCisgICAgICogd2FsayB0aHJvdWdoIHRoZSBzb3VyY2Ugc3RyaW5nIGJhc2VkIG9uIHRoZSBydWxlcyBkZWZpbmVkIGJ5CisgICAgICogdGhlIGNvbGxhdG9yLiBJZiB0aGUgc291cmNlIHN0cmluZyBpcyBlbXB0eSwgTlVMTE9SREVSIHdpbGwgYmUKKyAgICAgKiByZXR1cm5lZCBvbiB0aGUgZmlyc3QgY2FsbCB0byBuZXh0KCkuPC9wPgorICAgICAqCisgICAgICogQHBhcmFtIHNvdXJjZSB0aGUgc291cmNlIHN0cmluZyBpdGVyYXRvci4KKyAgICAgKiBAcGFyYW0gY29sbGF0b3IgdGhlIFJ1bGVCYXNlZENvbGxhdG9yCisgICAgICogQGRyYWZ0IElDVSAyLjIgCisgICAgICovCisgICAgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yKENoYXJhY3Rlckl0ZXJhdG9yIHNvdXJjZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yIGNvbGxhdG9yKSAKKyAgICB7CisgICAgICAgIG1fc3JjVXRpbEl0ZXJfID0gbmV3IFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yKCIiKTsKKyAgICAgICAgbV91dGlsU3RyaW5nQnVmZmVyXyA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgbV9zb3VyY2VfID0gc291cmNlOworICAgICAgICBtX2NvbGxhdG9yXyA9IGNvbGxhdG9yOworICAgICAgICBtX0NFQnVmZmVyXyA9IG5ldyBpbnRbQ0VfQlVGRkVSX0lOSVRfU0laRV9dOworICAgICAgICBtX2J1ZmZlcl8gPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIG1fdXRpbFNwZWNpYWxCYWNrVXBfID0gbmV3IEJhY2t1cCgpOworICAgICAgICB1cGRhdGVJbnRlcm5hbFN0YXRlKCk7CisgICAgfQorICAgIAorICAgIC8vIHBhY2thZ2UgcHJpdmF0ZSBkYXRhIG1lbWJlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgCisgICAgLyoqCisgICAgICogdHJ1ZSBpZiBjdXJyZW50IGNvZGVwb2ludCB3YXMgSGlyYWdhbmEKKyAgICAgKi8KKyAgICBib29sZWFuIG1faXNDb2RlUG9pbnRIaXJhZ2FuYV87CisgICAgLyoqCisgICAgICogUG9zaXRpb24gaW4gdGhlIG9yaWdpbmFsIHN0cmluZyB0aGF0IHN0YXJ0cyB3aXRoIGEgbm9uLUZDRCBzZXF1ZW5jZQorICAgICAqLworICAgIGludCBtX0ZDRFN0YXJ0XzsKKyAgICAvKiogCisgICAgICogVGhpcyBpcyB0aGUgQ0UgZnJvbSBDRXMgYnVmZmVyIHRoYXQgc2hvdWxkIGJlIHJldHVybmVkLiAKKyAgICAgKiBJbml0aWFsIHZhbHVlIGlzIDAuCisgICAgICogRm9yd2FyZHMgaXRlcmF0aW9uIHdpbGwgZW5kIHdpdGggbV9DRUJ1ZmZlck9mZnNldF8gPT0gbV9DRUJ1ZmZlclNpemVfLAorICAgICAqIGJhY2t3YXJkcyB3aWxsIGVuZCB3aXRoIG1fQ0VCdWZmZXJPZmZzZXRfID09IDAuCisgICAgICogVGhlIG5leHQvcHJldmlvdXMgYWZ0ZXIgd2UgcmVhY2ggdGhlIGVuZC9iZWdpbm5pbmcgb2YgdGhlIG1fQ0VCdWZmZXJfCisgICAgICogd2lsbCBjYXVzZSB0aGlzIHZhbHVlIHRvIGJlIHJlc2V0IHRvIDAuCisgICAgICovCisgICAgaW50IG1fQ0VCdWZmZXJPZmZzZXRfOworCisgICAgLyoqIAorICAgICAqIFRoaXMgaXMgdGhlIHBvc2l0aW9uIHRvIHdoaWNoIHdlIGhhdmUgc3RvcmVkIHByb2Nlc3NlZCBDRXMuCisgICAgICogSW5pdGlhbCB2YWx1ZSBpcyAwLgorICAgICAqIFRoZSBuZXh0L3ByZXZpb3VzIGFmdGVyIHdlIHJlYWNoIHRoZSBlbmQvYmVnaW5uaW5nIG9mIHRoZSBtX0NFQnVmZmVyXworICAgICAqIHdpbGwgY2F1c2UgdGhpcyB2YWx1ZSB0byBiZSByZXNldCB0byAwLgorICAgICAqLworICAgIGludCBtX0NFQnVmZmVyU2l6ZV87IAorICAgIAorICAgIC8vIHBhY2thZ2UgcHJpdmF0ZSBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBjb2xsYXRvciB1c2VkLgorICAgICAqIEludGVybmFsIHVzZSwgYWxsIGRhdGEgbWVtYmVycyB3aWxsIGJlIHJlc2V0IHRvIHRoZSBkZWZhdWx0IHZhbHVlcworICAgICAqIEBwYXJhbSBjb2xsYXRvciB0byBzZXQKKyAgICAgKi8KKyAgICB2b2lkIHNldENvbGxhdG9yKFJ1bGVCYXNlZENvbGxhdG9yIGNvbGxhdG9yKSAKKyAgICB7CisgICAgICAgIG1fY29sbGF0b3JfID0gY29sbGF0b3I7CisgICAgICAgIHVwZGF0ZUludGVybmFsU3RhdGUoKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogPHA+U2V0cyB0aGUgaXRlcmF0b3IgdG8gcG9pbnQgdG8gdGhlIGNvbGxhdGlvbiBlbGVtZW50IGNvcnJlc3BvbmRpbmcgdG8KKyAgICAgKiB0aGUgc3BlY2lmaWVkIGNoYXJhY3RlciAodGhlIHBhcmFtZXRlciBpcyBhIENIQVJBQ1RFUiBvZmZzZXQgaW4gdGhlCisgICAgICogb3JpZ2luYWwgc3RyaW5nLCBub3QgYW4gb2Zmc2V0IGludG8gaXRzIGNvcnJlc3BvbmRpbmcgc2VxdWVuY2Ugb2YKKyAgICAgKiBjb2xsYXRpb24gZWxlbWVudHMpLiBUaGUgdmFsdWUgcmV0dXJuZWQgYnkgdGhlIG5leHQgY2FsbCB0byBuZXh0KCkKKyAgICAgKiB3aWxsIGJlIHRoZSBjb2xsYXRpb24gZWxlbWVudCBjb3JyZXNwb25kaW5nIHRvIHRoZSBzcGVjaWZpZWQgcG9zaXRpb24KKyAgICAgKiBpbiB0aGUgdGV4dC4gVW5saWtlIHRoZSBwdWJsaWMgbWV0aG9kIHNldE9mZnNldChpbnQpLCB0aGlzIG1ldGhvZCBkb2VzIAorICAgICAqIG5vdCB0cnkgdG8gcmVhZGp1c3QgdGhlIG9mZnNldCB0byB0aGUgc3RhcnQgb2YgYSBjb250cmFjdGluZyBzZXF1ZW5jZS4KKyAgICAgKiBnZXRPZmZzZXQoKSBpcyBndWFyYW50ZWVkIHRvIHJldHVybiB0aGUgc2FtZSB2YWx1ZSBhcyB3YXMgcGFzc2VkIHRvIGEgCisgICAgICogcHJlY2VkaW5nIGNhbGwgdG8gc2V0T2Zmc2V0KCkuPC9wPgorICAgICAqIEBwYXJhbSBvZmZzZXQgbmV3IGNoYXJhY3RlciBvZmZzZXQgaW50byB0aGUgb3JpZ2luYWwgdGV4dCB0byBzZXQuIAorICAgICAqLworICAgIHZvaWQgc2V0RXhhY3RPZmZzZXQoaW50IG9mZnNldCkKKyAgICB7ICAKKyAgICAgICAgbV9zb3VyY2VfLnNldEluZGV4KG9mZnNldCk7CisgICAgICAgIHVwZGF0ZUludGVybmFsU3RhdGUoKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQ2hlY2tzIGlmIGl0ZXJhdG9yIGlzIGluIHRoZSBidWZmZXIgem9uZQorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiBpdGVyYXRvciBpcyBpbiBidWZmZXIgem9uZSwgZmFsc2Ugb3RoZXJ3aXNlCisgICAgICovCisgICAgYm9vbGVhbiBpc0luQnVmZmVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2J1ZmZlck9mZnNldF8gPiAwOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBEZXRlcm1pbmUgaWYgYSBjaGFyYWN0ZXIgaXMgYSBUaGFpIHZvd2VsLCB3aGljaCBzb3J0cyBhZnRlciBpdHMgYmFzZSAKKyAgICAgKiBjb25zb25hbnQuCisgICAgICogQHBhcmFtIGNoIGNoYXJhY3RlciB0byB0ZXN0CisgICAgICogQHJldHVybiB0cnVlIGlmIGNoIGlzIGEgVGhhaSBwcmV2b3dlbCwgZmFsc2Ugb3RoZXJ3aXNlCisgICAgICovCisgICAgc3RhdGljIGZpbmFsIGJvb2xlYW4gaXNUaGFpUHJlVm93ZWwoY2hhciBjaCkKKyAgICB7IAorICAgICAgICByZXR1cm4gKGNoID49IDB4ZTQwICYmIGNoIDw9IDB4ZTQ0KSB8fCAoY2ggPj0gMHhlYzAgJiYgY2ggPD0gMHhlYzQpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiA8cD5TZXRzIHRoZSBpdGVyYXRvciB0byBwb2ludCB0byB0aGUgY29sbGF0aW9uIGVsZW1lbnQgY29ycmVzcG9uZGluZyB0bworICAgICAqIHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVyICh0aGUgcGFyYW1ldGVyIGlzIGEgQ0hBUkFDVEVSIG9mZnNldCBpbiB0aGUKKyAgICAgKiBvcmlnaW5hbCBzdHJpbmcsIG5vdCBhbiBvZmZzZXQgaW50byBpdHMgY29ycmVzcG9uZGluZyBzZXF1ZW5jZSBvZgorICAgICAqIGNvbGxhdGlvbiBlbGVtZW50cykuIFRoZSB2YWx1ZSByZXR1cm5lZCBieSB0aGUgbmV4dCBjYWxsIHRvIG5leHQoKQorICAgICAqIHdpbGwgYmUgdGhlIGNvbGxhdGlvbiBlbGVtZW50IGNvcnJlc3BvbmRpbmcgdG8gdGhlIHNwZWNpZmllZCBwb3NpdGlvbgorICAgICAqIGluIHRoZSB0ZXh0LiBVbmxpa2UgdGhlIHB1YmxpYyBtZXRob2Qgc2V0T2Zmc2V0KGludCksIHRoaXMgbWV0aG9kIGRvZXMgCisgICAgICogbm90IHRyeSB0byByZWFkanVzdCB0aGUgb2Zmc2V0IHRvIHRoZSBzdGFydCBvZiBhIGNvbnRyYWN0aW5nIHNlcXVlbmNlLgorICAgICAqIGdldE9mZnNldCgpIGlzIGd1YXJhbnRlZWQgdG8gcmV0dXJuIHRoZSBzYW1lIHZhbHVlIGFzIHdhcyBwYXNzZWQgdG8gYSAKKyAgICAgKiBwcmVjZWRpbmcgY2FsbCB0byBzZXRPZmZzZXQoKS48L3A+CisgICAgICogPC9wPgorICAgICAqIEBwYXJhbSBzb3VyY2UgdGhlIG5ldyBzb3VyY2Ugc3RyaW5nIGl0ZXJhdG9yIGZvciBpdGVyYXRpb24uCisgICAgICogQHBhcmFtIG9mZnNldCB0byB0aGUgc291cmNlCisgICAgICovCisgICAgdm9pZCBzZXRUZXh0KENoYXJhY3Rlckl0ZXJhdG9yIHNvdXJjZSwgaW50IG9mZnNldCkKKyAgICB7CisgICAgICAgIG1fc291cmNlXyA9IHNvdXJjZTsgICAgIAorICAgICAgICBtX3NvdXJjZV8uc2V0SW5kZXgob2Zmc2V0KTsKKyAgICAgICAgdXBkYXRlSW50ZXJuYWxTdGF0ZSgpOworICAgIH0KKyAgICAKKyAgICAvLyBwcml2YXRlIGlubmVyIGNsYXNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgICogQmFja3VwIGRhdGEgY2xhc3MKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjbGFzcyBCYWNrdXAKKyAgICB7CisgICAgICAgIC8vIHByb3RlY3RlZCBkYXRhIG1lbWJlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAKKyAgICAgICAgLyoqCisgICAgICAgICAqIEJhY2t1cCBub24gRkNEIHNlcXVlbmNlIGxpbWl0CisgICAgICAgICAqLworICAgICAgICBwcm90ZWN0ZWQgaW50IG1fRkNETGltaXRfOworICAgICAgICAvKioKKyAgICAgICAgICogQmFja3VwIG5vbiBGQ0Qgc2VxdWVuY2Ugc3RhcnQKKyAgICAgICAgICovCisgICAgICAgIHByb3RlY3RlZCBpbnQgbV9GQ0RTdGFydF87CisgICAgICAgIC8qKgorICAgICAgICAgKiBCYWNrdXAgaWYgcHJldmlvdXMgQ29kZXBvaW50IGlzIEhpcmFnYW5hIHF1YXRlbmFyeQorICAgICAgICAgKi8KKyAgICAgICAgcHJvdGVjdGVkIGJvb2xlYW4gbV9pc0NvZGVQb2ludEhpcmFnYW5hXzsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEJhY2t1cCBidWZmZXIgcG9zaXRpb24gCisgICAgICAgICAqLworICAgICAgICBwcm90ZWN0ZWQgaW50IG1fYnVmZmVyT2Zmc2V0XzsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEJhY2t1cCBzb3VyY2UgaXRlcmF0b3Igb2Zmc2V0CisgICAgICAgICAqLworICAgICAgICBwcm90ZWN0ZWQgaW50IG1fb2Zmc2V0XzsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEJhY2t1cCBidWZmZXIgY29udGVudHMKKyAgICAgICAgICovCisgICAgICAgIHByb3RlY3RlZCBTdHJpbmdCdWZmZXIgbV9idWZmZXJfOworICAgICAgICAgICAgICAgIAorICAgICAgICAvLyBwcm90ZWN0ZWQgY29uc3RydWN0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgLyoqCisgICAgICAgICAqIEVtcHR5IGNvbnN0cnVjdG9yCisgICAgICAgICAqLworICAgICAgICBwcm90ZWN0ZWQgQmFja3VwKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9idWZmZXJfID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICB9CisgICAgfQorICAgIC8vIGVuZCBpbm5lciBjbGFzcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvKioKKyAgICAgKiBEaXJlY3Rpb24gb2YgdHJhdmVsCisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIG1faXNGb3J3YXJkc187CisgICAgLyoqCisgICAgICogU291cmNlIHN0cmluZyBpdGVyYXRvcgorICAgICAqLworICAgIHByaXZhdGUgQ2hhcmFjdGVySXRlcmF0b3IgbV9zb3VyY2VfOworICAgIC8qKiAKKyAgICAgKiBUaGlzIGlzIHBvc2l0aW9uIHRvIHRoZSBtX2J1ZmZlcl8sIC0xIGlmIGl0ZXJhdG9yIGlzIG5vdCBpbiBtX2J1ZmZlcl8KKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBtX2J1ZmZlck9mZnNldF87CisgICAgLyoqCisgICAgICogQnVmZmVyIGZvciB0ZW1wb3Jhcnkgc3RvcmFnZSBvZiBub3JtYWxpemVkIGNoYXJhY3RlcnMsIGRpc2NvbnRpZ3VvdXMKKyAgICAgKiBjaGFyYWN0ZXJzIGFuZCBUaGFpIGNoYXJhY3RlcnMKKyAgICAgKi8KKyAgICBwcml2YXRlIFN0cmluZ0J1ZmZlciBtX2J1ZmZlcl87CisgICAgLyoqIAorICAgICAqIFBvc2l0aW9uIGluIHRoZSBvcmlnaW5hbCBzdHJpbmcgdG8gY29udGludWUgZm9yd2FyZCBGQ0QgY2hlY2sgZnJvbS4gCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgbV9GQ0RMaW1pdF87IAorICAgIC8qKgorICAgICAqIFRoZSBjb2xsYXRvciB0aGlzIGl0ZXJhdG9yIGlzIGJhc2VkIG9uCisgICAgICovIAorICAgIHByaXZhdGUgUnVsZUJhc2VkQ29sbGF0b3IgbV9jb2xsYXRvcl87CisgICAgLyoqCisgICAgICogdHJ1ZSBpZiBIaXJhZ2FuYSBxdWF0ZW5hcnkgaXMgb24KKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gbV9pc0hpcmFnYW5hNF87CisgICAgLyoqCisgICAgICogQ0UgYnVmZmVyCisgICAgICovIAorICAgIHByaXZhdGUgaW50IG1fQ0VCdWZmZXJfW107IAorICAgIC8qKiAKKyAgICAgKiBJbiByZWFsaXR5IHdlIHNob3VsZCBub3QgaGF2ZSB0byBkZWFsIHdpdGggZXhwYW5zaW9uIHNlcXVlbmNlcyBsb25nZXIgCisgICAgICogdGhlbiAxNi4gSG93ZXZlciB0aGlzIHZhbHVlIGNhbiBiZSBjaGFuZ2UgaWYgYSBiaWdnZXIgYnVmZmVyIGlzIG5lZWRlZC4KKyAgICAgKiBOb3RlLCBpZiB0aGUgc2l6ZSBpcyBjaGFuZ2UgdG8gdG9vIHNtYWxsIGEgbnVtYmVyLCBCSUcgdHJvdWJsZS4KKyAgICAgKiBSZWFzb25hYmxlIHNtYWxsIHZhbHVlIGlzIGFyb3VuZCAxMCwgaWYgdGhlcmUncyBubyBBcmFiaWMgb3Igb3RoZXIgCisgICAgICogZnVua3kgY29sbGF0aW9ucyB0aGF0IGhhdmUgbG9uZyBleHBhbnNpb24gc2VxdWVuY2UuIFRoaXMgaXMgdGhlIGxvbmdlc3QgCisgICAgICogZXhwYW5zaW9uIHNlcXVlbmNlIHRoaXMgY2FuIGhhbmRsZSB3aXRob3V0IGJvbWJpbmcgb3V0LgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDRV9CVUZGRVJfSU5JVF9TSVpFXyA9IDUxMjsKKyAgICAvKioKKyAgICAgKiBCYWNrdXAgc3RvcmFnZSBmb3Igc3BlY2lhbCBwcm9jZXNzaW5nIGlubmVyIGNhc2VzCisgICAgICovCisgICAgcHJpdmF0ZSBCYWNrdXAgbV91dGlsU3BlY2lhbEJhY2tVcF87CisgICAgLyoqCisgICAgICogQmFja3VwIHN0b3JhZ2UgaW4gc3BlY2lhbCBwcm9jZXNzaW5nIGVudHJ5IHN0YXRlCisgICAgICovCisgICAgcHJpdmF0ZSBCYWNrdXAgbV91dGlsU3BlY2lhbEVudHJ5QmFja1VwXzsKKyAgICAvKioKKyAgICAgKiBCYWNrdXAgc3RvcmFnZSBpbiBzcGVjaWFsIHByb2Nlc3NpbmcgZGlzY29udGlndW91cyBzdGF0ZQorICAgICAqLworICAgIHByaXZhdGUgQmFja3VwIG1fdXRpbFNwZWNpYWxEaXNjb250aWd1b3VzQmFja1VwXzsKKyAgICAvKioKKyAgICAgKiBVdGlsaXR5IAorICAgICAqLworICAgIHByaXZhdGUgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IgbV9zcmNVdGlsSXRlcl87CisgICAgcHJpdmF0ZSBTdHJpbmdCdWZmZXIgbV91dGlsU3RyaW5nQnVmZmVyXzsKKyAgICBwcml2YXRlIFN0cmluZ0J1ZmZlciBtX3V0aWxTa2lwcGVkQnVmZmVyXzsKKyAgICBwcml2YXRlIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvciBtX3V0aWxDb2xFSXRlcl87CisgICAgLyoqCisgICAgICogT25lIGNoYXJhY3RlciBiZWZvcmUgdGhlIGZpcnN0IG5vbi16ZXJvIGNvbWJpbmluZyBjbGFzcyBjaGFyYWN0ZXIKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRlVMTF9aRVJPX0NPTUJJTklOR19DTEFTU19GQVNUX0xJTUlUXyA9IDB4QzA7CisgICAgLyoqCisgICAgICogT25lIGNoYXJhY3RlciBiZWZvcmUgdGhlIGZpcnN0IGNoYXJhY3RlciB3aXRoIGxlYWRpbmcgbm9uLXplcm8gY29tYmluaW5nIAorICAgICAqIGNsYXNzIAorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBMRUFEX1pFUk9fQ09NQklOSU5HX0NMQVNTX0ZBU1RfTElNSVRfID0gMHgzMDA7CisgICAgLyoqCisgICAgICogTWFzayBmb3IgdGhlIGxhc3QgYnl0ZQorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBMQVNUX0JZVEVfTUFTS18gPSAweEZGOworICAgIC8qKgorICAgICAqIFNoaWZ0IHZhbHVlIGZvciB0aGUgc2Vjb25kIGxhc3QgYnl0ZQorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTRUNPTkRfTEFTVF9CWVRFX1NISUZUXyA9IDg7CisKKyAgICAvLyBzcGVjaWFsIGNlIHZhbHVlcyBhbmQgdGFncyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLypwcml2YXRlKi8gc3RhdGljIGZpbmFsIGludCBDRV9OT1RfRk9VTkRfID0gMHhGMDAwMDAwMDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ0VfRVhQQU5TSU9OXyA9IDB4RjEwMDAwMDA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENFX0NPTlRSQUNUSU9OXyA9IDB4RjIwMDAwMDA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENFX1RIQUlfID0gMHhGMzAwMDAwMDsKKyAgICAvKioKKyAgICAgKiBJbmRpY2F0ZXMgdGhlIGxhc3QgY2UgaGFzIGJlZW4gY29uc3VtZWQuIENvbXBhcmUgd2l0aCBOVUxMT1JERVIuIAorICAgICAqIE5VTExPUkRFUiBpcyByZXR1cm5lZCBpZiBlcnJvciBvY2N1cnMuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENFX05PX01PUkVfQ0VTXyA9IDB4MDAwMTAxMDE7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENFX05PX01PUkVfQ0VTX1BSSU1BUllfID0gMHgwMDAxMDAwMDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ0VfTk9fTU9SRV9DRVNfU0VDT05EQVJZXyA9IDB4MDAwMDAxMDA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENFX05PX01PUkVfQ0VTX1RFUlRJQVJZXyA9IDB4MDAwMDAwMDE7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ0VfTk9UX0ZPVU5EX1RBR18gPSAwOworICAgIC8qcHJpdmF0ZSovIHN0YXRpYyBmaW5hbCBpbnQgQ0VfRVhQQU5TSU9OX1RBR18gPSAxOyAgICAgICAKKyAgICAvKnByaXZhdGUqLyBzdGF0aWMgZmluYWwgaW50IENFX0NPTlRSQUNUSU9OX1RBR18gPSAyOyAgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENFX1RIQUlfVEFHXyA9IDM7CisgICAgLyoqIAorICAgICAqIENoYXJzZXQgcHJvY2Vzc2luZywgbm90IHlldCBpbXBsZW1lbnRlZCAKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ0VfQ0hBUlNFVF9UQUdfID0gNDsgICAgICAgICAKKyAgICAvKiogCisgICAgICogQUMwMC1EN0FGCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENFX0hBTkdVTF9TWUxMQUJMRV9UQUdfID0gNjsKKyAgICAvKioKKyAgICAgKiBEODAwLURCRkYKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ0VfTEVBRF9TVVJST0dBVEVfVEFHXyA9IDc7ICAKKyAgICAvKiogCisgICAgICogREMwMC1ERkZGCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENFX1RSQUlMX1NVUlJPR0FURV9UQUdfID0gODsgCisgICAgLyoqIAorICAgICAqIDB4MzQwMC0weDREQjUsIDB4NEUwMC0weDlGQTUsIDB4RjkwMC0weEZBMkQKKyAgICAgKi8gICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENFX0NKS19JTVBMSUNJVF9UQUdfID0gOTsgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENFX0lNUExJQ0lUX1RBR18gPSAxMDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ0VfU1BFQ19QUk9DX1RBR18gPSAxMTsKKyAgICAvKiogCisgICAgICogVGhpcyBpcyBhIDMgYnl0ZSBwcmltYXJ5IHdpdGggc3RhcnRpbmcgc2Vjb25kYXJpZXMgYW5kIHRlcnRpYXJpZXMuCisgICAgICogSXQgZml0cyBpbiBhIHNpbmdsZSAzMiBiaXQgQ0UgYW5kIGlzIHVzZWQgaW5zdGVhZCBvZiBleHBhbnNpb24gdG8gc2F2ZQorICAgICAqIHNwYWNlIHdpdGhvdXQgYWZmZWN0aW5nIHRoZSBwZXJmb3JtYW5jZSAoaG9wZWZ1bGx5KS4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ0VfTE9OR19QUklNQVJZX1RBR18gPSAxMjsgCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENFX0NFX1RBR1NfQ09VTlQgPSAxMzsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ0VfQllURV9DT01NT05fID0gMHgwNTsKKyAgICAgICAgCisgICAgLy8gZW5kIHNwZWNpYWwgY2UgdmFsdWVzIGFuZCB0YWdzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSEFOR1VMX1NCQVNFXyA9IDB4QUMwMDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSEFOR1VMX0xCQVNFXyA9IDB4MTEwMDsgCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEhBTkdVTF9WQkFTRV8gPSAweDExNjE7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEhBTkdVTF9UQkFTRV8gPSAweDExQTc7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEhBTkdVTF9WQ09VTlRfID0gMjE7IAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBIQU5HVUxfVENPVU5UXyA9IDI4OyAgICAKKyAgICAKKyAgICAvLyBDSksgc3R1ZmYgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENKS19CQVNFXyA9IDB4NEUwMDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ0pLX0xJTUlUXyA9IDB4OUZGRisxOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDSktfQ09NUEFUX1VTRURfQkFTRV8gPSAweEZBMEU7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENKS19DT01QQVRfVVNFRF9MSU1JVF8gPSAweEZBMkYgKyAxOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDSktfQV9CQVNFXyA9IDB4MzQwMDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ0pLX0FfTElNSVRfID0gMHg0REJGICsgMTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ0pLX0JfQkFTRV8gPSAweDIwMDAwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDSktfQl9MSU1JVF8gPSAweDJBNkRGICsgMTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTk9OX0NKS19PRkZTRVRfID0gMHgxMTAwMDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIC8vIHByaXZhdGUgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgCisgICAgLyoqCisgICAgICogUmVzZXQgdGhlIGl0ZXJhdG9yIGludGVybmFsbHkKKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgdXBkYXRlSW50ZXJuYWxTdGF0ZSgpCisgICAgeworICAgICAgICBtX2lzQ29kZVBvaW50SGlyYWdhbmFfID0gZmFsc2U7CisgICAgICAgIG1fYnVmZmVyXy5zZXRMZW5ndGgoMCk7CisgICAgICAgIG1fYnVmZmVyT2Zmc2V0XyA9IC0xOyAKKyAgICAgICAgbV9DRUJ1ZmZlck9mZnNldF8gPSAwOworICAgICAgICBtX0NFQnVmZmVyU2l6ZV8gPSAwOyAKKyAgICAgICAgbV9GQ0RMaW1pdF8gPSAtMTsKKyAgICAgICAgbV9GQ0RTdGFydF8gPSBtX3NvdXJjZV8uZ2V0RW5kSW5kZXgoKTsKKyAgICAgICAgbV9pc0hpcmFnYW5hNF8gPSBtX2NvbGxhdG9yXy5tX2lzSGlyYWdhbmE0XzsKKyAgICAgICAgbV9pc0ZvcndhcmRzXyA9IHRydWU7CisgICAgfQorICAgICAgICAKKyAgICAvKioKKyAgICAgKiBCYWNrdXAgdGhlIGN1cnJlbnQgaW50ZXJuYWwgc3RhdGUKKyAgICAgKiBAcGFyYW0gYmFja3VwIG9iamVjdCB0byBzdG9yZSB0aGUgZGF0YQorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBiYWNrdXBJbnRlcm5hbFN0YXRlKEJhY2t1cCBiYWNrdXApCisgICAgeworICAgICAgICBiYWNrdXAubV9vZmZzZXRfID0gbV9zb3VyY2VfLmdldEluZGV4KCk7CisgICAgICAgIGJhY2t1cC5tX0ZDRExpbWl0XyA9IG1fRkNETGltaXRfOworICAgICAgICBiYWNrdXAubV9GQ0RTdGFydF8gPSBtX0ZDRFN0YXJ0XzsKKyAgICAgICAgYmFja3VwLm1faXNDb2RlUG9pbnRIaXJhZ2FuYV8gPSBtX2lzQ29kZVBvaW50SGlyYWdhbmFfOworICAgICAgICBiYWNrdXAubV9idWZmZXJPZmZzZXRfID0gbV9idWZmZXJPZmZzZXRfOworICAgICAgICBiYWNrdXAubV9idWZmZXJfLnNldExlbmd0aCgwKTsKKyAgICAgICAgaWYgKG1fYnVmZmVyT2Zmc2V0XyA+PSAwKSB7CisgICAgICAgICAgICAvLyBqZGsgMS4zLjEgZG9lcyBub3QgaGF2ZSBhcHBlbmQoU3RyaW5nQnVmZmVyKSB5ZXQKKyAgICAgICAgICAgIGlmKElDVURlYnVnLmlzSkRLMTRPckhpZ2hlcil7CisgICAgICAgICAgICAgICAgYmFja3VwLm1fYnVmZmVyXy5hcHBlbmQobV9idWZmZXJfKTsKKyAgICAgICAgICAgIH1lbHNleworICAgICAgICAgICAgICAgIGJhY2t1cC5tX2J1ZmZlcl8uYXBwZW5kKG1fYnVmZmVyXy50b1N0cmluZygpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAvKioKKyAgICAgKiBVcGRhdGUgdGhlIGl0ZXJhdG9yIGludGVybmFsbHkgd2l0aCBiYWNrZWQtdXAgc3RhdGUKKyAgICAgKiBAcGFyYW0gYmFja3VwIG9iamVjdCB0aGF0IHN0b3JlZCB0aGUgZGF0YQorICAgICAqLworICAgIHByaXZhdGUgdm9pZCB1cGRhdGVJbnRlcm5hbFN0YXRlKEJhY2t1cCBiYWNrdXApCisgICAgeworICAgICAgICBtX3NvdXJjZV8uc2V0SW5kZXgoYmFja3VwLm1fb2Zmc2V0Xyk7CisgICAgICAgIG1faXNDb2RlUG9pbnRIaXJhZ2FuYV8gPSBiYWNrdXAubV9pc0NvZGVQb2ludEhpcmFnYW5hXzsKKyAgICAgICAgbV9idWZmZXJPZmZzZXRfID0gYmFja3VwLm1fYnVmZmVyT2Zmc2V0XzsKKyAgICAgICAgbV9GQ0RMaW1pdF8gPSBiYWNrdXAubV9GQ0RMaW1pdF87CisgICAgICAgIG1fRkNEU3RhcnRfID0gYmFja3VwLm1fRkNEU3RhcnRfOworICAgICAgICBtX2J1ZmZlcl8uc2V0TGVuZ3RoKDApOworICAgICAgICBpZiAobV9idWZmZXJPZmZzZXRfID49IDApIHsKKyAgICAgICAgICAgIC8vIGpkayAxLjMuMSBkb2VzIG5vdCBoYXZlIGFwcGVuZChTdHJpbmdCdWZmZXIpIHlldAorICAgICAgICAgICAgbV9idWZmZXJfLmFwcGVuZChiYWNrdXAubV9idWZmZXJfLnRvU3RyaW5nKCkpOworICAgICAgICB9CisgICAgfQorICAgICAgICAKKyAgICAvKioKKyAgICAgKiBBIGZhc3QgY29tYmluaW5nIGNsYXNzIHJldHJpZXZhbCBzeXN0ZW0uCisgICAgICogQHBhcmFtIGNoIFVURjE2IGNoYXJhY3RlcgorICAgICAqIEByZXR1cm4gY29tYmluaW5nIGNsYXNzIG9mIGNoCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgZ2V0Q29tYmluaW5nQ2xhc3MoY2hhciBjaCkgCisgICAgeworICAgICAgICBpZiAoY2ggPj0gTEVBRF9aRVJPX0NPTUJJTklOR19DTEFTU19GQVNUX0xJTUlUXyAmJiAKKyAgICAgICAgICAgIG1fY29sbGF0b3JfLmlzVW5zYWZlKGNoKSkgeworICAgICAgICAgICAgcmV0dXJuIE5vcm1hbGl6ZXJJbXBsLmdldENvbWJpbmluZ0NsYXNzKGNoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgICAgIAorICAgIC8qKgorICAgICAqIDxwPkluY3JlbWVudGFsIG5vcm1hbGl6YXRpb24sIHRoaXMgaXMgYW4gZXNzZW50aWFsIG9wdGltaXphdGlvbi4KKyAgICAgKiBBc3N1bWluZyBGQ0QgY2hlY2tzIGhhcyBiZWVuIGRvbmUsIG5vcm1hbGl6ZSB0aGUgbm9uLUZDRCBjaGFyYWN0ZXJzIGludG8gCisgICAgICogdGhlIGJ1ZmZlci4KKyAgICAgKiBTb3VyY2Ugb2Zmc2V0cyBwb2ludHMgdG8gdGhlIGN1cnJlbnQgcHJvY2Vzc2luZyBjaGFyYWN0ZXIuCisgICAgICogPC9wPgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBub3JtYWxpemUoKSAKKyAgICB7CisgICAgICAgIGludCBzaXplID0gbV9GQ0RMaW1pdF8gLSBtX0ZDRFN0YXJ0XzsKKyAgICAgICAgbV9idWZmZXJfLnNldExlbmd0aCgwKTsKKyAgICAgICAgbV9zb3VyY2VfLnNldEluZGV4KG1fRkNEU3RhcnRfKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpICsrKSB7CisgICAgICAgICAgICBtX2J1ZmZlcl8uYXBwZW5kKG1fc291cmNlXy5jdXJyZW50KCkpOworICAgICAgICAgICAgbV9zb3VyY2VfLm5leHQoKTsKKyAgICAgICAgfQorICAgICAgICBTdHJpbmcgZGVjb21wID0gTm9ybWFsaXplci5kZWNvbXBvc2UobV9idWZmZXJfLnRvU3RyaW5nKCksIGZhbHNlKTsKKyAgICAgICAgbV9idWZmZXJfLnNldExlbmd0aCgwKTsKKyAgICAgICAgbV9idWZmZXJfLmFwcGVuZChkZWNvbXApOworICAgICAgICBtX2J1ZmZlck9mZnNldF8gPSAwOworICAgIH0KKyAgICAgICAgCisgICAgLyoqIAorICAgICAqIDxwPkluY3JlbWVudGFsIEZDRCBjaGVjayBhbmQgbm9ybWFsaXphdGlvbi4gR2V0cyB0aGUgbmV4dCBiYXNlIGNoYXJhY3RlcgorICAgICAqIHBvc2l0aW9uIGFuZCBkZXRlcm1pbmVzIGlmIHRoZSBpbi1iZXR3ZWVuIGNoYXJhY3RlcnMgbmVlZHMgbm9ybWFsaXphdGlvbi4KKyAgICAgKiA8L3A+IAorICAgICAqIDxwPldoZW4gZW50ZXJpbmcsIHRoZSBzdGF0ZSBpcyBrbm93biB0byBiZSB0aGlzOgorICAgICAqIDx1bD4KKyAgICAgKiA8bGk+V2UgYXJlIHdvcmtpbmcgb24gc291cmNlIHN0cmluZywgbm90IHRoZSBidWZmZXIuCisgICAgICogPGxpPlRoZSBsZWFkaW5nIGNvbWJpbmluZyBjbGFzcyBmcm9tIHRoZSBjdXJyZW50IGNoYXJhY3RlciBpcyAwIG9yIHRoZSAKKyAgICAgKiAgICAgdHJhaWxpbmcgY29tYmluaW5nIGNsYXNzIG9mIHRoZSBwcmV2aW91cyBjaGFyIHdhcyB6ZXJvLgorICAgICAqIDwvdWw+CisgICAgICogSW5jb21pbmcgc291cmNlIG9mZnNldHMgcG9pbnRzIHRvIHRoZSBjdXJyZW50IHByb2Nlc3NpbmcgY2hhcmFjdGVyLgorICAgICAqIFJldHVybiBzb3VyY2Ugb2Zmc2V0cyBwb2ludHMgdG8gdGhlIGN1cnJlbnQgcHJvY2Vzc2luZyBjaGFyYWN0ZXIuCisgICAgICogPC9wPgorICAgICAqIEBwYXJhbSBjaCBjdXJyZW50IGNoYXJhY3RlcgorICAgICAqIEBwYXJhbSBvZmZzZXQgY3VycmVudCBjaGFyYWN0ZXIgb2Zmc2V0CisgICAgICogQHJldHVybiB0cnVlIGlmIEZDRENoZWNrIHBhc3NlcywgZmFsc2Ugb3RoZXJ3aXNlCisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIEZDRENoZWNrKGNoYXIgY2gsIGludCBvZmZzZXQpIAorICAgIHsKKyAgICAgICAgYm9vbGVhbiByZXN1bHQgPSB0cnVlOworCisgICAgICAgIC8vIEdldCB0aGUgdHJhaWxpbmcgY29tYmluaW5nIGNsYXNzIG9mIHRoZSBjdXJyZW50IGNoYXJhY3Rlci4gIAorICAgICAgICAvLyBJZiBpdCdzIHplcm8sIHdlIGFyZSBPSy4KKyAgICAgICAgbV9GQ0RTdGFydF8gPSBvZmZzZXQ7CisgICAgICAgIG1fc291cmNlXy5zZXRJbmRleChvZmZzZXQpOworICAgICAgICAvLyB0cmllIGFjY2VzcworICAgICAgICBjaGFyIGZjZCA9IE5vcm1hbGl6ZXJJbXBsLmdldEZDRDE2KGNoKTsKKyAgICAgICAgaWYgKGZjZCAhPSAwICYmIFVURjE2LmlzTGVhZFN1cnJvZ2F0ZShjaCkpIHsKKyAgICAgICAgICAgIGNoID0gbV9zb3VyY2VfLm5leHQoKTsgLy8gQ2hhcmFjdGVySXRlcmF0b3IuRE9ORSBoYXMgMCBmY2QKKyAgICAgICAgICAgIGlmIChVVEYxNi5pc1RyYWlsU3Vycm9nYXRlKGNoKSkgeworICAgICAgICAgICAgICAgIGZjZCA9IE5vcm1hbGl6ZXJJbXBsLmdldEZDRDE2RnJvbVN1cnJvZ2F0ZVBhaXIoZmNkLCBjaCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGZjZCA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpbnQgcHJldlRyYWlsQ0MgPSBmY2QgJiBMQVNUX0JZVEVfTUFTS187CisKKyAgICAgICAgaWYgKHByZXZUcmFpbENDICE9IDApIHsKKyAgICAgICAgICAgIC8vIFRoZSBjdXJyZW50IGNoYXIgaGFzIGEgbm9uLXplcm8gdHJhaWxpbmcgQ0MuIFNjYW4gZm9yd2FyZCB1bnRpbCAKKyAgICAgICAgICAgIC8vIHdlIGZpbmQgYSBjaGFyIHdpdGggYSBsZWFkaW5nIGNjIG9mIHplcm8uCisgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgICAgIGNoID0gbV9zb3VyY2VfLm5leHQoKTsKKyAgICAgICAgICAgICAgICBpZiAoY2ggPT0gQ2hhcmFjdGVySXRlcmF0b3IuRE9ORSkgeworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLy8gdHJpZSBhY2Nlc3MKKyAgICAgICAgICAgICAgICBmY2QgPSBOb3JtYWxpemVySW1wbC5nZXRGQ0QxNihjaCk7CisgICAgICAgICAgICAgICAgaWYgKGZjZCAhPSAwICYmIFVURjE2LmlzTGVhZFN1cnJvZ2F0ZShjaCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2ggPSBtX3NvdXJjZV8ubmV4dCgpOworICAgICAgICAgICAgICAgICAgICBpZiAoVVRGMTYuaXNUcmFpbFN1cnJvZ2F0ZShjaCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZjZCA9IE5vcm1hbGl6ZXJJbXBsLmdldEZDRDE2RnJvbVN1cnJvZ2F0ZVBhaXIoZmNkLCBjaCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmY2QgPSAwOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGludCBsZWFkQ0MgPSBmY2QgPj4+IFNFQ09ORF9MQVNUX0JZVEVfU0hJRlRfOworICAgICAgICAgICAgICAgIGlmIChsZWFkQ0MgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGlzIGEgYmFzZSBjaGFyYWN0ZXIsIHdlIHN0b3AgdGhlIEZDRCBjaGVja3MKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGxlYWRDQyA8IHByZXZUcmFpbENDKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHByZXZUcmFpbENDID0gZmNkICYgTEFTVF9CWVRFX01BU0tfOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIG1fRkNETGltaXRfID0gbV9zb3VyY2VfLmdldEluZGV4KCk7CisgICAgICAgIG1fc291cmNlXy5zZXRJbmRleChtX0ZDRFN0YXJ0Xyk7CisgICAgICAgIG1fc291cmNlXy5uZXh0KCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgICAgICAKKyAgICAvKiogCisgICAgICogPHA+TWV0aG9kIHRyaWVzIHRvIGZldGNoIHRoZSBuZXh0IGNoYXJhY3RlciB0aGF0IGlzIGluIGZjZCBmb3JtLjwvcD4KKyAgICAgKiA8cD5Ob3JtYWxpemF0aW9uIGlzIGRvbmUgaWYgcmVxdWlyZWQuPC9wPgorICAgICAqIDxwPk9mZnNldHMgYXJlIHJldHVybmVkIGF0IHRoZSBuZXh0IGNoYXJhY3Rlci48L3A+CisgICAgICogQHJldHVybiBuZXh0IGZjZCBjaGFyYWN0ZXIKKyAgICAgKi8KKyAgICBwcml2YXRlIGNoYXIgbmV4dENoYXIoKQorICAgIHsKKyAgICAgICAgY2hhciByZXN1bHQ7CisgICAgICAgIAorICAgICAgICAvLyBsb29wIGhhbmRsZXMgdGhlIG5leHQgY2hhcmFjdGVyIHdoZXRoZXIgaXQgaXMgaW4gdGhlIGJ1ZmZlciBvciBub3QuCisgICAgICAgIGlmIChtX2J1ZmZlck9mZnNldF8gPCAwKSB7CisgICAgICAgICAgICAvLyB3ZSdyZSB3b3JraW5nIG9uIHRoZSBzb3VyY2UgYW5kIG5vdCBub3JtYWxpemluZy4gZmFzdCBwYXRoLgorICAgICAgICAgICAgLy8gbm90ZSBUaGFpIHByZS12b3dlbCByZW9yZGVyaW5nIHVzZXMgYnVmZmVyIHRvbworICAgICAgICAgICAgcmVzdWx0ID0gbV9zb3VyY2VfLmN1cnJlbnQoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIHdlIGFyZSBpbiB0aGUgYnVmZmVyLCBidWZmZXIgb2Zmc2V0IHdpbGwgbmV2ZXIgYmUgMCBoZXJlCisgICAgICAgICAgICBpZiAobV9idWZmZXJPZmZzZXRfID49IG1fYnVmZmVyXy5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIC8vIE51bGwgbWFya2VkIGVuZCBvZiBidWZmZXIsIHJldmVydCB0byB0aGUgc291cmNlIHN0cmluZyBhbmQKKyAgICAgICAgICAgICAgICAvLyBsb29wIGJhY2sgdG8gdG9wIHRvIHRyeSBhZ2FpbiB0byBnZXQgYSBjaGFyYWN0ZXIuCisgICAgICAgICAgICAgICAgbV9zb3VyY2VfLnNldEluZGV4KG1fRkNETGltaXRfKTsKKyAgICAgICAgICAgICAgICBtX2J1ZmZlck9mZnNldF8gPSAtMTsKKyAgICAgICAgICAgICAgICBtX2J1ZmZlcl8uc2V0TGVuZ3RoKDApOworICAgICAgICAgICAgICAgIHJldHVybiBuZXh0Q2hhcigpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG1fYnVmZmVyXy5jaGFyQXQobV9idWZmZXJPZmZzZXRfICsrKTsKKyAgICAgICAgfQorICAgICAgICBpbnQgc3RhcnRvZmZzZXQgPSBtX3NvdXJjZV8uZ2V0SW5kZXgoKTsKKyAgICAgICAgaWYgKHJlc3VsdCA8IEZVTExfWkVST19DT01CSU5JTkdfQ0xBU1NfRkFTVF9MSU1JVF8gIAorICAgICAgICAgICAgLy8gRmFzdCBmY2Qgc2FmZSBwYXRoLiB0cmFpbCBjb21iaW5pbmcgY2xhc3MgPT0gMC4KKyAgICAgICAgICAgIHx8IG1fY29sbGF0b3JfLmdldERlY29tcG9zaXRpb24oKSA9PSBDb2xsYXRvci5OT19ERUNPTVBPU0lUSU9OIAorICAgICAgICAgICAgfHwgbV9idWZmZXJPZmZzZXRfID49IDAgfHwgbV9GQ0RMaW1pdF8gPiBzdGFydG9mZnNldCkgeworICAgICAgICAgICAgLy8gc2tpcCB0aGUgZmNkIGNoZWNrcyAgICAgICAgICAgIAorICAgICAgICAgICAgbV9zb3VyY2VfLm5leHQoKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgaWYgKHJlc3VsdCA8IExFQURfWkVST19DT01CSU5JTkdfQ0xBU1NfRkFTVF9MSU1JVF8pIHsKKyAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gcGVlayBhdCB0aGUgbmV4dCBjaGFyYWN0ZXIgaW4gb3JkZXIgdG8gdGVsbCBpZiB3ZSBhcmUgCisgICAgICAgICAgICAvLyBGQ0QKKyAgICAgICAgICAgIGNoYXIgbmV4dCA9IG1fc291cmNlXy5uZXh0KCk7CisgICAgICAgICAgICBpZiAobmV4dCA9PSBDaGFyYWN0ZXJJdGVyYXRvci5ET05FIAorICAgICAgICAgICAgICAgIHx8IG5leHQgPD0gTEVBRF9aRVJPX0NPTUJJTklOR19DTEFTU19GQVNUX0xJTUlUXykgeworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7IC8vIGVuZCBvZiBzb3VyY2Ugc3RyaW5nIGFuZCBpZiBuZXh0IGNoYXJhY3RlciAKKyAgICAgICAgICAgICAgICAvLyBzdGFydHMgd2l0aCBhIGJhc2UgY2hhcmFjdGVyIGlzIGFsd2F5cyBmY2QuCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIE5lZWQgYSBtb3JlIGNvbXBsZXRlIEZDRCBjaGVjayBhbmQgcG9zc2libGUgbm9ybWFsaXphdGlvbi4KKyAgICAgICAgaWYgKCFGQ0RDaGVjayhyZXN1bHQsIHN0YXJ0b2Zmc2V0KSkgeworICAgICAgICAgICAgbm9ybWFsaXplKCk7CisgICAgICAgICAgICByZXN1bHQgPSBtX2J1ZmZlcl8uY2hhckF0KDApOworICAgICAgICAgICAgbV9idWZmZXJPZmZzZXRfID0gMTsgICAgICAgICAgCisgICAgICAgIH0gICAgICAgCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgICAgICAKKyAgICAvKioKKyAgICAgKiA8cD5JbmNyZW1lbnRhbCBub3JtYWxpemF0aW9uLCB0aGlzIGlzIGFuIGVzc2VudGlhbCBvcHRpbWl6YXRpb24uCisgICAgICogQXNzdW1pbmcgRkNEIGNoZWNrcyBoYXMgYmVlbiBkb25lLCBub3JtYWxpemUgdGhlIG5vbi1GQ0QgY2hhcmFjdGVycyBpbnRvIAorICAgICAqIHRoZSBidWZmZXIuCisgICAgICogU291cmNlIG9mZnNldHMgcG9pbnRzIHRvIHRoZSBjdXJyZW50IHByb2Nlc3NpbmcgY2hhcmFjdGVyLjwvcD4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgbm9ybWFsaXplQmFja3dhcmRzKCkKKyAgICB7CisgICAgICAgIG5vcm1hbGl6ZSgpOworICAgICAgICBtX2J1ZmZlck9mZnNldF8gPSBtX2J1ZmZlcl8ubGVuZ3RoKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogPHA+SW5jcmVtZW50YWwgYmFja3dhcmRzIEZDRCBjaGVjayBhbmQgbm9ybWFsaXphdGlvbi4gR2V0cyB0aGUgcHJldmlvdXMgCisgICAgICogYmFzZSBjaGFyYWN0ZXIgcG9zaXRpb24gYW5kIGRldGVybWluZXMgaWYgdGhlIGluLWJldHdlZW4gY2hhcmFjdGVycyAKKyAgICAgKiBuZWVkcyBub3JtYWxpemF0aW9uLgorICAgICAqIDwvcD4gCisgICAgICogPHA+V2hlbiBlbnRlcmluZywgdGhlIHN0YXRlIGlzIGtub3duIHRvIGJlIHRoaXM6CisgICAgICogPHVsPgorICAgICAqIDxsaT5XZSBhcmUgd29ya2luZyBvbiBzb3VyY2Ugc3RyaW5nLCBub3QgdGhlIGJ1ZmZlci4KKyAgICAgKiA8bGk+VGhlIHRyYWlsaW5nIGNvbWJpbmluZyBjbGFzcyBmcm9tIHRoZSBjdXJyZW50IGNoYXJhY3RlciBpcyAwIG9yIHRoZSAKKyAgICAgKiAgICAgbGVhZGluZyBjb21iaW5pbmcgY2xhc3Mgb2YgdGhlIG5leHQgY2hhciB3YXMgemVyby4KKyAgICAgKiA8L3VsPgorICAgICAqIElucHV0IHNvdXJjZSBvZmZzZXRzIHBvaW50cyB0byB0aGUgcHJldmlvdXMgY2hhcmFjdGVyLgorICAgICAqIFJldHVybiBzb3VyY2Ugb2Zmc2V0cyBwb2ludHMgdG8gdGhlIGN1cnJlbnQgcHJvY2Vzc2luZyBjaGFyYWN0ZXIuCisgICAgICogPC9wPgorICAgICAqIEBwYXJhbSBjaCBjdXJyZW50IGNoYXJhY3RlcgorICAgICAqIEBwYXJhbSBvZmZzZXQgY3VycmVudCBjaGFyYWN0ZXIgb2Zmc2V0CisgICAgICogQHJldHVybiB0cnVlIGlmIEZDRENoZWNrIHBhc3NlcywgZmFsc2Ugb3RoZXJ3aXNlCisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIEZDRENoZWNrQmFja3dhcmRzKGNoYXIgY2gsIGludCBvZmZzZXQpCisgICAgeworICAgICAgICBib29sZWFuIHJlc3VsdCA9IHRydWU7ICAgIAorICAgICAgICBjaGFyIGZjZCA9IDA7IAorICAgICAgICBtX0ZDRExpbWl0XyA9IG9mZnNldCArIDE7CisgICAgICAgIG1fc291cmNlXy5zZXRJbmRleChvZmZzZXQpOworICAgICAgICBpZiAoIVVURjE2LmlzU3Vycm9nYXRlKGNoKSkgeworICAgICAgICAgICAgZmNkID0gTm9ybWFsaXplckltcGwuZ2V0RkNEMTYoY2gpOworICAgICAgICB9IAorICAgICAgICBlbHNlIGlmIChVVEYxNi5pc1RyYWlsU3Vycm9nYXRlKGNoKSAmJiBtX0ZDRExpbWl0XyA+IDApIHsgCisgICAgICAgICAgICAvLyBub3RlIHRyYWlsIHN1cnJvZ2F0ZSBjaGFyYWN0ZXJzIGdldHMgMCBmY2QKKyAgICAgICAgICAgIGNoYXIgdHJhaWxjaCA9IGNoOworICAgICAgICAgICAgY2ggPSBtX3NvdXJjZV8ucHJldmlvdXMoKTsgIAorICAgICAgICAgICAgaWYgKFVURjE2LmlzTGVhZFN1cnJvZ2F0ZShjaCkpIHsKKyAgICAgICAgICAgICAgICBmY2QgPSBOb3JtYWxpemVySW1wbC5nZXRGQ0QxNihjaCk7CisgICAgICAgICAgICAgICAgaWYgKGZjZCAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGZjZCA9IE5vcm1hbGl6ZXJJbXBsLmdldEZDRDE2RnJvbVN1cnJvZ2F0ZVBhaXIoZmNkLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFpbGNoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IAorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgZmNkID0gMDsgLy8gdW5wYWlyZWQgc3Vycm9nYXRlIAorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpbnQgbGVhZENDID0gZmNkID4+PiBTRUNPTkRfTEFTVF9CWVRFX1NISUZUXzsKKyAgICAgICAgLy8gVGhlIGN1cnJlbnQgY2hhciBoYXMgYSBub24temVybyBsZWFkaW5nIGNvbWJpbmluZyBjbGFzcy4KKyAgICAgICAgLy8gU2NhbiBiYWNrd2FyZCB1bnRpbCB3ZSBmaW5kIGEgY2hhciB3aXRoIGEgdHJhaWxpbmcgY2Mgb2YgemVyby4KKyAgICAgICAgCisgICAgICAgIHdoaWxlIChsZWFkQ0MgIT0gMCkgeworICAgICAgICAgICAgb2Zmc2V0ID0gbV9zb3VyY2VfLmdldEluZGV4KCk7CisgICAgICAgICAgICBpZiAob2Zmc2V0ID09IDApIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNoID0gbV9zb3VyY2VfLnByZXZpb3VzKCk7CisgICAgICAgICAgICBpZiAoIVVURjE2LmlzU3Vycm9nYXRlKGNoKSkgeworICAgICAgICAgICAgICAgIGZjZCA9IE5vcm1hbGl6ZXJJbXBsLmdldEZDRDE2KGNoKTsKKyAgICAgICAgICAgIH0gCisgICAgICAgICAgICBlbHNlIGlmIChVVEYxNi5pc1RyYWlsU3Vycm9nYXRlKGNoKSAmJiBtX3NvdXJjZV8uZ2V0SW5kZXgoKSA+IDApIHsKKyAgICAgICAgICAgICAgICBjaGFyIHRyYWlsID0gY2g7CisgICAgICAgICAgICAgICAgY2ggPSBtX3NvdXJjZV8ucHJldmlvdXMoKTsKKyAgICAgICAgICAgICAgICBpZiAoVVRGMTYuaXNMZWFkU3Vycm9nYXRlKGNoKSkgeworICAgICAgICAgICAgICAgICAgICBmY2QgPSBOb3JtYWxpemVySW1wbC5nZXRGQ0QxNihjaCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChmY2QgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICBmY2QgPSBOb3JtYWxpemVySW1wbC5nZXRGQ0QxNkZyb21TdXJyb2dhdGVQYWlyKGZjZCwgdHJhaWwpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGZjZCA9IDA7IC8vIHVucGFpcmVkIHN1cnJvZ2F0ZQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaW50IHByZXZUcmFpbENDID0gZmNkICYgTEFTVF9CWVRFX01BU0tfOworICAgICAgICAgICAgaWYgKGxlYWRDQyA8IHByZXZUcmFpbENDKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsZWFkQ0MgPSBmY2QgPj4+IFNFQ09ORF9MQVNUX0JZVEVfU0hJRlRfOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBzdG9yaW5nIGNoYXJhY3RlciB3aXRoIDAgbGVhZCBmY2Qgb3IgdGhlIDFzdCBhY2NlbnQgd2l0aCBhIGJhc2UgCisgICAgICAgIC8vIGNoYXJhY3RlciBiZWZvcmUgaXQgICAKKyAgICAgICAgaWYgKGZjZCA9PSAwKSB7CisgICAgICAgICAgICBtX0ZDRFN0YXJ0XyA9IG9mZnNldDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1fRkNEU3RhcnRfID0gbV9zb3VyY2VfLmdldEluZGV4KCk7CisgICAgICAgIH0gCisgICAgICAgIG1fc291cmNlXy5zZXRJbmRleChtX0ZDRExpbWl0Xyk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgICAgICAKKyAgICAvKiogCisgICAgICogPHA+TWV0aG9kIHRyaWVzIHRvIGZldGNoIHRoZSBwcmV2aW91cyBjaGFyYWN0ZXIgdGhhdCBpcyBpbiBmY2QgZm9ybS48L3A+CisgICAgICogPHA+Tm9ybWFsaXphdGlvbiBpcyBkb25lIGlmIHJlcXVpcmVkLjwvcD4KKyAgICAgKiA8cD5PZmZzZXRzIGFyZSByZXR1cm5lZCBhdCB0aGUgY3VycmVudCBjaGFyYWN0ZXIuPC9wPgorICAgICAqIEByZXR1cm4gcHJldmlvdXMgZmNkIGNoYXJhY3RlcgorICAgICAqLworICAgIHByaXZhdGUgY2hhciBwcmV2aW91c0NoYXIoKQorICAgIHsKKyAgICAgICAgaWYgKG1fYnVmZmVyT2Zmc2V0XyA+PSAwKSB7CisgICAgICAgICAgICBtX2J1ZmZlck9mZnNldF8gLS07CisgICAgICAgICAgICBpZiAobV9idWZmZXJPZmZzZXRfID49IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9idWZmZXJfLmNoYXJBdChtX2J1ZmZlck9mZnNldF8pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gQXQgdGhlIHN0YXJ0IG9mIGJ1ZmZlciwgcm91dGUgYmFjayB0byBzdHJpbmcuCisgICAgICAgICAgICAgICAgbV9idWZmZXJfLnNldExlbmd0aCgwKTsKKyAgICAgICAgICAgICAgICBpZiAobV9GQ0RTdGFydF8gPT0gbV9zb3VyY2VfLmdldEJlZ2luSW5kZXgoKSkgeworICAgICAgICAgICAgICAgICAgICBtX0ZDRFN0YXJ0XyA9IC0xOworICAgICAgICAgICAgICAgICAgICBtX3NvdXJjZV8uc2V0SW5kZXgobV9zb3VyY2VfLmdldEJlZ2luSW5kZXgoKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBDaGFyYWN0ZXJJdGVyYXRvci5ET05FOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbV9GQ0RMaW1pdF8gPSBtX0ZDRFN0YXJ0XzsKKyAgICAgICAgICAgICAgICAgICAgbV9zb3VyY2VfLnNldEluZGV4KG1fRkNEU3RhcnRfKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzQ2hhcigpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSAgICAKKyAgICAgICAgY2hhciByZXN1bHQgPSBtX3NvdXJjZV8ucHJldmlvdXMoKTsKKyAgICAgICAgaW50IHN0YXJ0b2Zmc2V0ID0gbV9zb3VyY2VfLmdldEluZGV4KCk7CisgICAgICAgIGlmIChyZXN1bHQgPCBMRUFEX1pFUk9fQ09NQklOSU5HX0NMQVNTX0ZBU1RfTElNSVRfIAorICAgICAgICAgICAgfHwgbV9jb2xsYXRvcl8uZ2V0RGVjb21wb3NpdGlvbigpID09IENvbGxhdG9yLk5PX0RFQ09NUE9TSVRJT04gCisgICAgICAgICAgICB8fCBtX0ZDRFN0YXJ0XyA8PSBzdGFydG9mZnNldCB8fCBtX3NvdXJjZV8uZ2V0SW5kZXgoKSA9PSAwKSB7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgICAgIGNoYXIgY2ggPSBtX3NvdXJjZV8ucHJldmlvdXMoKTsKKyAgICAgICAgaWYgKGNoIDwgRlVMTF9aRVJPX0NPTUJJTklOR19DTEFTU19GQVNUX0xJTUlUXykgeworICAgICAgICAgICAgLy8gaWYgcHJldmlvdXMgY2hhcmFjdGVyIGlzIEZDRCAKKyAgICAgICAgICAgIG1fc291cmNlXy5uZXh0KCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgICAgIC8vIE5lZWQgYSBtb3JlIGNvbXBsZXRlIEZDRCBjaGVjayBhbmQgcG9zc2libGUgbm9ybWFsaXphdGlvbi4KKyAgICAgICAgaWYgKCFGQ0RDaGVja0JhY2t3YXJkcyhyZXN1bHQsIHN0YXJ0b2Zmc2V0KSkgeworICAgICAgICAgICAgbm9ybWFsaXplQmFja3dhcmRzKCk7CisgICAgICAgICAgICBtX2J1ZmZlck9mZnNldF8gLS07CisgICAgICAgICAgICByZXN1bHQgPSBtX2J1ZmZlcl8uY2hhckF0KG1fYnVmZmVyT2Zmc2V0Xyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgIAkvLyBmY2QgY2hlY2tzIGFsd2F5IHJlc2V0IG1fc291cmNlXyB0byB0aGUgbGltaXQgb2YgdGhlIEZDRAorICAgICAgICAJbV9zb3VyY2VfLnNldEluZGV4KHN0YXJ0b2Zmc2V0KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAgICAgCisgICAgLyoqCisgICAgICogRGV0ZXJtaW5lcyBpZiBpdCBpcyBhdCB0aGUgc3RhcnQgb2Ygc291cmNlIGl0ZXJhdGlvbgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiBpdGVyYXRvciBhdCB0aGUgc3RhcnQsIGZhbHNlIG90aGVyd2lzZQorICAgICAqLworICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiBpc0JhY2t3YXJkc1N0YXJ0KCkgCisgICAgeworICAgICAgICByZXR1cm4gKG1fYnVmZmVyT2Zmc2V0XyA8IDAgJiYgbV9zb3VyY2VfLmdldEluZGV4KCkgPT0gMCkKKyAgICAgICAgICAgIHx8IChtX2J1ZmZlck9mZnNldF8gPT0gMCAmJiBtX0ZDRFN0YXJ0XyA8PSAwKTsKKyAgICB9CisgICAgICAgIAorICAgIC8qKgorICAgICAqIENoZWNrcyBpZiBpdGVyYXRvciBpcyBhdCB0aGUgZW5kIG9mIGl0cyBzb3VyY2Ugc3RyaW5nLgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiBpdCBpcyBhdCB0aGUgZW5kLCBmYWxzZSBvdGhlcndpc2UKKyAgICAgKi8KKyAgICBwcml2YXRlIGZpbmFsIGJvb2xlYW4gaXNFbmQoKSAKKyAgICB7CisgICAgICAgIGlmIChtX2J1ZmZlck9mZnNldF8gPj0gMCkgeworICAgICAgICAgICAgaWYgKG1fYnVmZmVyT2Zmc2V0XyAhPSBtX2J1ZmZlcl8ubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBhdCBlbmQgb2YgYnVmZmVyLiBjaGVjayBpZiBmY2QgaXMgYXQgdGhlIGVuZAorICAgICAgICAgICAgICAgIHJldHVybiBtX0ZDRExpbWl0XyA9PSBtX3NvdXJjZV8uZ2V0RW5kSW5kZXgoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbV9zb3VyY2VfLmdldEVuZEluZGV4KCkgPT0gbV9zb3VyY2VfLmdldEluZGV4KCk7CisgICAgfQorICAgICAgICAKKyAgICAvKioKKyAgICAgKiA8cD5TcGVjaWFsIENFIG1hbmFnZW1lbnQgZm9yIHN1cnJvZ2F0ZXM8L3A+CisgICAgICogPHA+TGVhZCBzdXJyb2dhdGUgaXMgZW5jb3VudGVyZWQuIENFIHRvIGJlIHJldHJpZXZlZCBieSB1c2luZyB0aGUgCisgICAgICogZm9sbG93aW5nIGNvZGUgdW5pdC4gSWYgbmV4dCBjaGFyYWN0ZXIgaXMgYSB0cmFpbCBzdXJyb2dhdGUsIGJvdGggCisgICAgICogY2hhcmFjdGVycyB3aWxsIGJlIGNvbWJpbmVkIHRvIHJldHJpZXZlIHRoZSBDRSwgb3RoZXJ3aXNlIGNvbXBsZXRlbHkgCisgICAgICogaWdub3JhYmxlIChVQ0Egc3BlY2lmaWNhdGlvbikgaXMgcmV0dXJuZWQuPC9wPgorICAgICAqIEBwYXJhbSBjb2xsYXRvciBjb2xsYXRvciB0byB1c2UKKyAgICAgKiBAcGFyYW0gY2UgY3VycmVudCBDRQorICAgICAqIEBwYXJhbSB0cmFpbCBjaGFyYWN0ZXIKKyAgICAgKiBAcmV0dXJuIG5leHQgQ0UgZm9yIHRoZSBzdXJyb2dhdGUgY2hhcmFjdGVycworICAgICAqLworICAgIHByaXZhdGUgZmluYWwgaW50IG5leHRTdXJyb2dhdGUoUnVsZUJhc2VkQ29sbGF0b3IgY29sbGF0b3IsIGludCBjZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIHRyYWlsKQorICAgIHsKKyAgICAgICAgaWYgKCFVVEYxNi5pc1RyYWlsU3Vycm9nYXRlKHRyYWlsKSkgeworICAgICAgICAgICAgdXBkYXRlSW50ZXJuYWxTdGF0ZShtX3V0aWxTcGVjaWFsQmFja1VwXyk7CisgICAgICAgICAgICByZXR1cm4gSUdOT1JBQkxFOworICAgICAgICB9IAorICAgICAgICAvLyBUT0RPOiBDRSBjb250YWluIHRoZSBkYXRhIGZyb20gdGhlIHByZXZpb3VzIENFICsgdGhlIG1hc2suIAorICAgICAgICAvLyBJdCBzaG91bGQgYXQgbGVhc3QgYmUgdW5tYXNrZWQKKyAgICAgICAgaW50IHJlc3VsdCA9IGNvbGxhdG9yLm1fdHJpZV8uZ2V0VHJhaWxWYWx1ZShjZSwgdHJhaWwpOworICAgICAgICBpZiAocmVzdWx0ID09IENFX05PVF9GT1VORF8pIHsgCisgICAgICAgICAgICB1cGRhdGVJbnRlcm5hbFN0YXRlKG1fdXRpbFNwZWNpYWxCYWNrVXBfKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAgICAgCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgQ0UgZXhwYW5zaW9uIG9mZnNldAorICAgICAqIEBwYXJhbSBjb2xsYXRvciBjdXJyZW50IGNvbGxhdG9yCisgICAgICogQHBhcmFtIGNlIGNlIHRvIHRlc3QKKyAgICAgKiBAcmV0dXJuIGV4cGFuc2lvbiBvZmZzZXQKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBnZXRFeHBhbnNpb25PZmZzZXQoUnVsZUJhc2VkQ29sbGF0b3IgY29sbGF0b3IsIGludCBjZSkKKyAgICB7CisgICAgICAgIHJldHVybiAoKGNlICYgMHhGRkZGRjApID4+IDQpIC0gY29sbGF0b3IubV9leHBhbnNpb25PZmZzZXRfOworICAgIH0KKyAgICAgICAgCisgICAgLyoqCisgICAgICogU3dhcHMgdGhlIFRoYWkgYW5kIExhb3MgY2hhcmFjdGVycyBhbmQgcmV0dXJucyB0aGUgQ0VzLgorICAgICAqIEBwYXJhbSBjb2xsYXRvciBjb2xsYXRvciB0byB1c2UKKyAgICAgKiBAcGFyYW0gY2UgY3VycmVudCBjZQorICAgICAqIEBwYXJhbSBjaCBjdXJyZW50IGNoYXJhY3RlcgorICAgICAqIEByZXR1cm4gbmV4dCBDRSBmb3IgVGhhaSBjaGFyYWN0ZXJzCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgbmV4dFRoYWkoUnVsZUJhc2VkQ29sbGF0b3IgY29sbGF0b3IsIGludCBjZSwgY2hhciBjaCkKKyAgICB7CisgICAgICAgIGlmIChtX2J1ZmZlck9mZnNldF8gIT0gLTEgLy8gYWxyZWFkeSBzd2FwcGVkCisgICAgICAgICAgICB8fCBpc0VuZCgpKSB7CisgICAgICAgICAgICAvLyBUcmVhdCBUaGFpIGFzIGEgbGVuZ3RoIG9uZSBleHBhbnNpb24KKyAgICAgICAgICAgIC8vIGZpbmQgdGhlIG9mZnNldCB0byBleHBhbnNpb24gdGFibGUKKyAgICAgICAgICAgIC8vIHdlIG5vdyByZWFycmFuZ2UgdW5jb25kaXRpb25hbGx5IHNvIGRvIG5vdCBjaGVjayBiYXNlIGNvbnNvbmFudAorICAgICAgICAgICAgcmV0dXJuIGNvbGxhdG9yLm1fZXhwYW5zaW9uX1tnZXRFeHBhbnNpb25PZmZzZXQoY29sbGF0b3IsIGNlKV07IAorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gc3dhcCB0aGUgcHJldm93ZWwgYW5kIHRoZSBmb2xsb3dpbmcgY2hhciBpbnRvIHRoZSAKKyAgICAgICAgICAgIC8vIGJ1ZmZlciB3aXRoIHRoZWlyIG9yZGVyIHN3YXBwZWQKKyAgICAgICAgICAgIC8vIGJ1ZmZlciBpcyBhbHdheXMgY2xlYW4gd2hlbiB3ZSBhcmUgaW4gdGhlIHNvdXJjZSBzdHJpbmcKKyAgICAgICAgICAgIG1fYnVmZmVyXy5hcHBlbmQobmV4dENoYXIoKSk7CisgICAgICAgICAgICBtX2J1ZmZlcl8uYXBwZW5kKGNoKTsKKyAgICAgICAgICAgIG1fRkNETGltaXRfID0gbV9zb3VyY2VfLmdldEluZGV4KCk7CisgICAgICAgICAgICBtX0ZDRFN0YXJ0XyA9IG1fRkNETGltaXRfIC0gMjsgCisgICAgICAgICAgICBtX2J1ZmZlck9mZnNldF8gPSAwOworICAgICAgICAgICAgcmV0dXJuIElHTk9SQUJMRTsKKyAgICAgICAgfQorICAgIH0KKyAgICAgICAgCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgY29udHJhY3Rpb24gY2Ugb2Zmc2V0CisgICAgICogQHBhcmFtIGNvbGxhdG9yIGN1cnJlbnQgY29sbGF0b3IKKyAgICAgKiBAcGFyYW0gY2UgY3VycmVudCBjZQorICAgICAqIEByZXR1cm4gY29udHJhY3Rpb24gb2Zmc2V0CisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgZ2V0Q29udHJhY3Rpb25PZmZzZXQoUnVsZUJhc2VkQ29sbGF0b3IgY29sbGF0b3IsIGludCBjZSkKKyAgICB7CisgICAgICAgIHJldHVybiAoY2UgJiAweEZGRkZGRikgLSBjb2xsYXRvci5tX2NvbnRyYWN0aW9uT2Zmc2V0XzsKKyAgICB9CisgICAgICAgIAorICAgIC8qKgorICAgICAqIENoZWNrcyBpZiBDRSBpcyBhIHNwZWNpYWwgdGFnIENFCisgICAgICogQHBhcmFtIGNlIHRvIGNoZWNrCisgICAgICogQHJldHVybiB0cnVlIGlmIENFIGlzIGEgc3BlY2lhbCB0YWcgQ0UsIGZhbHNlIG90aGVyd2lzZQorICAgICAqLworICAgIHByaXZhdGUgYm9vbGVhbiBpc1NwZWNpYWxQcmVmaXhUYWcoaW50IGNlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFJ1bGVCYXNlZENvbGxhdG9yLmlzU3BlY2lhbChjZSkgJiYgCisgICAgICAgICAgICBSdWxlQmFzZWRDb2xsYXRvci5nZXRUYWcoY2UpID09IENFX1NQRUNfUFJPQ19UQUdfOworICAgIH0KKyAgICAgICAgCisgICAgLyoqCisgICAgICogPHA+U3BlY2lhbCBwcm9jZXNzaW5nIGdldHRpbmcgYSBDRSB0aGF0IGlzIHByZWNlZGVkIGJ5IGEgY2VydGFpbiAKKyAgICAgKiBwcmVmaXguPC9wPgorICAgICAqIDxwPlVzZWQgZm9yIG9wdGltaXppbmcgSmFwYW5lc2UgbGVuZ3RoIGFuZCBpdGVyYXRpb24gbWFya3MuIFdoZW4gYSAKKyAgICAgKiBzcGVjaWFsIHByb2Nlc3NpbmcgdGFnIGlzIGVuY291bnRlcmVkLCBpdGVyYXRlIGJhY2t3YXJkcyB0byBzZWUgaWYgCisgICAgICogdGhlcmUncyBhIG1hdGNoLjwvcD4gCisgICAgICogPHA+Q29udHJhY3Rpb24gdGFibGVzIGFyZSB1c2VkLCBwcmVmaXggZGF0YSBpcyBzdG9yZWQgYmFja3dhcmRzIGluIHRoZSAKKyAgICAgKiB0YWJsZS48L3A+CisgICAgICogQHBhcmFtIGNvbGxhdG9yIGNvbGxhdG9yIHRvIHVzZQorICAgICAqIEBwYXJhbSBjZSBjdXJyZW50IGNlCisgICAgICogQHBhcmFtIGVudHJ5YmFja3VwIGVudHJ5IGJhY2t1cCBpdGVyYXRvciBzdGF0dXMKKyAgICAgKiBAcmV0dXJuIG5leHQgY29sbGF0aW9uIGVsZW1lbnQKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBuZXh0U3BlY2lhbFByZWZpeChSdWxlQmFzZWRDb2xsYXRvciBjb2xsYXRvciwgaW50IGNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhY2t1cCBlbnRyeWJhY2t1cCkKKyAgICB7CisgICAgICAgIGJhY2t1cEludGVybmFsU3RhdGUobV91dGlsU3BlY2lhbEJhY2tVcF8pOworICAgICAgICB1cGRhdGVJbnRlcm5hbFN0YXRlKGVudHJ5YmFja3VwKTsKKyAgICAgICAgcHJldmlvdXNDaGFyKCk7CisgICAgICAgIC8vIFdlIHdhbnQgdG8gbG9vayBhdCB0aGUgY2hhcmFjdGVyIHdoZXJlIHdlIGVudGVyZWQKKyAgICAgICAgCisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAvLyBUaGlzIGxvb3Agd2lsbCBydW4gb25jZSBwZXIgc291cmNlIHN0cmluZyBjaGFyYWN0ZXIsIGZvciBhcyAKKyAgICAgICAgICAgIC8vIGxvbmcgYXMgd2UgYXJlIG1hdGNoaW5nIGEgcG90ZW50aWFsIGNvbnRyYWN0aW9uIHNlcXVlbmNlICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBGaXJzdCB3ZSBwb3NpdGlvbiBvdXJzZWx2ZXMgYXQgdGhlIGJlZ2luaW5nIG9mIGNvbnRyYWN0aW9uIAorICAgICAgICAgICAgLy8gc2VxdWVuY2UgCisgICAgICAgICAgICBpbnQgZW50cnlvZmZzZXQgPSBnZXRDb250cmFjdGlvbk9mZnNldChjb2xsYXRvciwgY2UpOworICAgICAgICAgICAgaW50IG9mZnNldCA9IGVudHJ5b2Zmc2V0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChpc0JhY2t3YXJkc1N0YXJ0KCkpIHsKKyAgICAgICAgICAgICAgICBjZSA9IGNvbGxhdG9yLm1fY29udHJhY3Rpb25DRV9bb2Zmc2V0XTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNoYXIgcHJldmlvdXMgPSBwcmV2aW91c0NoYXIoKTsKKyAgICAgICAgICAgIHdoaWxlIChwcmV2aW91cyA+IGNvbGxhdG9yLm1fY29udHJhY3Rpb25JbmRleF9bb2Zmc2V0XSkgeyAKKyAgICAgICAgICAgICAgICAvLyBjb250cmFjdGlvbiBjaGFyYWN0ZXJzIGFyZSBvcmRlcmVkLCBza2lwIHNtYWxsZXIgY2hhcmFjdGVycworICAgICAgICAgICAgICAgIG9mZnNldCArKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICAgICBpZiAocHJldmlvdXMgPT0gY29sbGF0b3IubV9jb250cmFjdGlvbkluZGV4X1tvZmZzZXRdKSB7CisgICAgICAgICAgICAgICAgLy8gRm91bmQgdGhlIHNvdXJjZSBzdHJpbmcgY2hhciBpbiB0aGUgdGFibGUuCisgICAgICAgICAgICAgICAgLy8gUGljayB1cCB0aGUgY29ycmVzcG9uZGluZyBDRSBmcm9tIHRoZSB0YWJsZS4KKyAgICAgICAgICAgICAgICBjZSA9IGNvbGxhdG9yLm1fY29udHJhY3Rpb25DRV9bb2Zmc2V0XTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAvLyBpZiB0aGVyZSBpcyBhIGNvbXBsZXRlbHkgaWdub3JhYmxlIGNvZGUgcG9pbnQgaW4gdGhlIG1pZGRsZSAKKyAgICAgICAgICAgICAgICAgLy8gb2YgYSBwcmVmaXgsIHdlIG5lZWQgdG8gYWN0IGFzIGlmIGl0J3Mgbm90IHRoZXJlIAorICAgICAgICAgICAgICAgICAvLyBhc3N1bXB0aW9uOiAncmVhbCcgbm9uY2hhcmFjdGVycyAoKmZmZmUsICpmZmZmLCBmZGQwLWZkZWYgCisgICAgICAgICAgICAgICAgIC8vIGFyZSBzZXQgdG8gemVybykgCisgICAgICAgICAgICAgICAgIC8vIGxvbmUgc3Vycm9nYXRlcyBjYW5ub3QgYmUgc2V0IHRvIHplcm8gYXMgaXQgd291bGQgYnJlYWsgCisgICAgICAgICAgICAgICAgIC8vIG90aGVyIHByb2Nlc3NpbmcgCisgICAgICAgICAgICAgICAgIGludCBpc1plcm9DRSA9IGNvbGxhdG9yLm1fdHJpZV8uZ2V0TGVhZFZhbHVlKHByZXZpb3VzKTsgCisgICAgICAgICAgICAgICAgIC8vIGl0J3MgZWFzeSBmb3IgQk1QIGNvZGUgcG9pbnRzIAorICAgICAgICAgICAgICAgICBpZiAoaXNaZXJvQ0UgPT0gMCkgeyAKKyAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAKKyAgICAgICAgICAgICAgICAgfSAKKyAgICAgICAgICAgICAgICAgZWxzZSBpZiAoVVRGMTYuaXNTdXJyb2dhdGUocHJldmlvdXMpKSB7IAorICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIHN1cHBsZW1lbnRhcnkgY29kZSBwb2ludHMsIHdlIGhhdmUgdG8gY2hlY2sgdGhlIAorICAgICAgICAgICAgICAgICAgICAgLy8gbmV4dCBvbmUgc2l0dWF0aW9ucyB3aGVyZSB3ZSBhcmUgZ29pbmcgdG8gaWdub3JlIAorICAgICAgICAgICAgICAgICAgICAgLy8gMS4gYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmc6IHNjaGFyIGlzIGEgbG9uZSBzdXJyb2dhdGUgCisgICAgICAgICAgICAgICAgICAgICAvLyAyLiBzY2hhciBpcyBhIGxvbmUgc3Vycm9nYXRlIAorICAgICAgICAgICAgICAgICAgICAgLy8gMy4gc2NoYXIgaXMgYSB0cmFpbCBzdXJyb2dhdGUgaW4gYSB2YWxpZCBzdXJyb2dhdGUgCisgICAgICAgICAgICAgICAgICAgICAvLyBzZXF1ZW5jZSB0aGF0IGlzIGV4cGxpY2l0bHkgc2V0IHRvIHplcm8uIAorICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0JhY2t3YXJkc1N0YXJ0KCkpIHsgCisgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBsZWFkID0gcHJldmlvdXNDaGFyKCk7IAorICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChVVEYxNi5pc0xlYWRTdXJyb2dhdGUobGVhZCkpIHsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzWmVyb0NFID0gY29sbGF0b3IubV90cmllXy5nZXRMZWFkVmFsdWUobGVhZCk7IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUnVsZUJhc2VkQ29sbGF0b3IuZ2V0VGFnKGlzWmVyb0NFKSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09IFJ1bGVCYXNlZENvbGxhdG9yLkNFX1NVUlJPR0FURV9UQUdfKSB7IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZpbmFsQ0UgPSBjb2xsYXRvci5tX3RyaWVfLmdldFRyYWlsVmFsdWUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzWmVyb0NFLCBwcmV2aW91cyk7IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbmFsQ0UgPT0gMCkgeyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGlzIGEgcmVhbCwgYXNzaWduZWQgY29tcGxldGVseSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZ25vcmFibGUgY29kZSBwb2ludAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gCisgICAgICAgICAgICAgICAgICAgICAgICAgfSAKKyAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvbmUgc3Vycm9nYXRlLCBjb21wbGV0ZWx5IGlnbm9yYWJsZSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dENoYXIoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7IAorICAgICAgICAgICAgICAgICAgICAgICAgIH0gCisgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dENoYXIoKTsgLy8gc2hpZnQgYmFjayB0byBvcmlnaW5hbCBwb3NpdGlvbgorICAgICAgICAgICAgICAgICAgICAgfSAKKyAgICAgICAgICAgICAgICAgICAgIGVsc2UgeyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb25lIHN1cnJvZ2F0ZSBhdCB0aGUgYmVnZ2luaW5nLCBjb21wbGV0ZWx5IGlnbm9yYWJsZSAKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsgCisgICAgICAgICAgICAgICAgICAgICB9IAorICAgICAgICAgICAgICAgICB9IAorCisgICAgICAgICAgICAgICAgLy8gU291cmNlIHN0cmluZyBjaGFyIHdhcyBub3QgaW4gdGhlIHRhYmxlLCBwcmVmaXggbm90IGZvdW5kCisgICAgICAgICAgICAgICAgY2UgPSBjb2xsYXRvci5tX2NvbnRyYWN0aW9uQ0VfW2VudHJ5b2Zmc2V0XTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICAgICBpZiAoIWlzU3BlY2lhbFByZWZpeFRhZyhjZSkpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGUgc291cmNlIHN0cmluZyBjaGFyIHdhcyBpbiB0aGUgY29udHJhY3Rpb24gdGFibGUsIGFuZCAKKyAgICAgICAgICAgICAgICAvLyB0aGUgY29ycmVzcG9uZGluZyBDRSBpcyBub3QgYSBwcmVmaXggQ0UuIFdlIGZvdW5kIHRoZSAKKyAgICAgICAgICAgICAgICAvLyBwcmVmaXgsIGJyZWFrIG91dCBvZiBsb29wLCB0aGlzIENFIHdpbGwgZW5kIHVwIGJlaW5nIAorICAgICAgICAgICAgICAgIC8vIHJldHVybmVkLiBUaGlzIGlzIHRoZSBub3JtYWwgd2F5IG91dCBvZiBwcmVmaXggaGFuZGxpbmcgCisgICAgICAgICAgICAgICAgLy8gd2hlbiB0aGUgc291cmNlIGFjdHVhbGx5IGNvbnRhaW5lZCB0aGUgcHJlZml4LgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChjZSAhPSBDRV9OT1RfRk9VTkRfKSB7IAorICAgICAgICAgICAgLy8gd2UgZm91bmQgc29tZXRoaW5nIGFuZCB3ZSBjYW4gbWVyaWxseSBjb250aW51ZQorICAgICAgICAgICAgdXBkYXRlSW50ZXJuYWxTdGF0ZShtX3V0aWxTcGVjaWFsQmFja1VwXyk7CisgICAgICAgIH0gCisgICAgICAgIGVsc2UgeyAvLyBwcmVmaXggc2VhcmNoIHdhcyBhIGZhaWx1cmUsIHdlIGhhdmUgdG8gYmFja3VwIGFsbCB0aGUgd2F5IHRvIAorICAgICAgICAgICAgLy8gdGhlIHN0YXJ0CisgICAgICAgICAgICB1cGRhdGVJbnRlcm5hbFN0YXRlKGVudHJ5YmFja3VwKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gY2U7CisgICAgfQorICAgICAgICAKKyAgICAvKioKKyAgICAgKiBDaGVja3MgaWYgdGhlIGNlIGlzIGEgY29udHJhY3Rpb24gdGFnCisgICAgICogQHBhcmFtIGNlIGNlIHRvIGNoZWNrCisgICAgICogQHJldHVybiB0cnVlIGlmIGNlIGlzIGEgY29udHJhY3Rpb24gdGFnLCBmYWxzZSBvdGhlcndpc2UKKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gaXNDb250cmFjdGlvblRhZyhpbnQgY2UpCisgICAgeworICAgICAgICByZXR1cm4gUnVsZUJhc2VkQ29sbGF0b3IuaXNTcGVjaWFsKGNlKSAmJiAKKyAgICAgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yLmdldFRhZyhjZSkgPT0gQ0VfQ09OVFJBQ1RJT05fVEFHXzsKKyAgICB9CisgICAgICAgIAorICAgIC8qKgorICAgICAqIE1ldGhvZCB0byBjb3B5IHNraXBwZWQgY2hhcmFjdGVycyBpbnRvIHRoZSBidWZmZXIgYW5kIHNldHMgdGhlIGZjZCAKKyAgICAgKiBwb3NpdGlvbi4gVG8gZW5zdXJlIHRoYXQgdGhlIHNraXBwZWQgY2hhcmFjdGVycyBhcmUgY29uc2lkZXJlZCBsYXRlciwgCisgICAgICogd2UgbmVlZCB0byBwbGFjZSBpdCBpbiB0aGUgYXBwcm9wcmlhdGUgcG9zaXRpb24gaW4gdGhlIGJ1ZmZlciBhbmQgCisgICAgICogcmVhc3NpZ24gdGhlIHNvdXJjZSBpbmRleC4gc2ltcGxlIGNhc2UgaWYgaW5kZXggcmVzaWRlIGluIHN0cmluZywgCisgICAgICogc2ltcGx5IGNvcHkgdG8gYnVmZmVyIGFuZCBmY2Rwb3NpdGlvbiA9IHBvcywgcG9zID0gc3RhcnQgb2YgYnVmZmVyLiAKKyAgICAgKiBpZiBwb3MgaW4gbm9ybWFsaXphdGlvbiBidWZmZXIsIHdlJ2xsIGluc2VydCB0aGUgY29weSBpbmZyb250IG9mIHBvcyAKKyAgICAgKiBhbmQgcG9pbnQgcG9zIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLiB3aHkgYW0gaSBkb2luZyB0aGVzZSBjb3BpZXM/CisgICAgICogd2VsbCwgc28gdGhhdCB0aGUgd2hvbGUgY2h1bmsgb2YgY29kZXMgaW4gdGhlIGdldE5leHRDRSwgCisgICAgICogdWNvbF9wcnZfZ2V0U3BlY2lhbENFIGRvZXMgbm90IHJlcXVpcmUgYW55IGNoYW5nZXMsIHdoaWNoIHdpbGwgYmUgCisgICAgICogcmVhbGx5IHBhaW5mdWwuCisgICAgICogQHBhcmFtIHNraXBwZWQgY2hhcmFjdGVyIGJ1ZmZlcgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBzZXREaXNjb250aWd1b3VzKFN0cmluZ0J1ZmZlciBza2lwcGVkKQorICAgIHsKKyAgICAgICAgaWYgKG1fYnVmZmVyT2Zmc2V0XyA+PSAwKSB7CisgICAgICAgICAgICBtX2J1ZmZlcl8ucmVwbGFjZSgwLCBtX2J1ZmZlck9mZnNldF8sIHNraXBwZWQudG9TdHJpbmcoKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtX0ZDRExpbWl0XyA9IG1fc291cmNlXy5nZXRJbmRleCgpOworICAgICAgICAgICAgbV9idWZmZXJfLnNldExlbmd0aCgwKTsKKyAgICAgICAgICAgIG1fYnVmZmVyXy5hcHBlbmQoc2tpcHBlZC50b1N0cmluZygpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbV9idWZmZXJPZmZzZXRfID0gMDsKKyAgICB9CisgICAgICAgIAorICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGZvciBmb3J3YXJkIGl0ZXJhdGlvbgorICAgICAqIEByZXR1cm4gY3VycmVudCBjaGFyYWN0ZXIKKyAgICAgKi8KKyAgICBwcml2YXRlIGNoYXIgY3VycmVudENoYXIoKQorICAgIHsKKyAgICAgICAgaWYgKG1fYnVmZmVyT2Zmc2V0XyA8IDApIHsKKyAgICAgICAgICAgIGNoYXIgcmVzdWx0ID0gbV9zb3VyY2VfLnByZXZpb3VzKCk7CisgICAgICAgICAgICBtX3NvdXJjZV8ubmV4dCgpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAvLyBtX2J1ZmZlck9mZnNldF8gaXMgbmV2ZXIgMCBpbiBub3JtYWwgY2lyY3Vtc3RhbmNlcyBleGNlcHQgYWZ0ZXIgYQorICAgICAgICAvLyBkaXNjb250aWd1b3VzIGNvbnRyYWN0aW9uIHNpbmNlIGl0IGlzIGFsd2F5cyByZXR1cm5lZCBhbmQgbW92ZWQKKyAgICAgICAgLy8gYnkgMSB3aGVuIHdlIGRvIG5leHRDaGFyKCkKKyAgICAgICAgcmV0dXJuIG1fYnVmZmVyXy5jaGFyQXQobV9idWZmZXJPZmZzZXRfIC0gMSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogTWV0aG9kIHRvIGdldCB0aGUgZGlzY29udGlndW91cyBjb2xsYXRpb24gZWxlbWVudCB3aXRoaW4gdGhlIHNvdXJjZS4KKyAgICAgKiBOb3RlIHRoaXMgZnVuY3Rpb24gd2lsbCBzZXQgdGhlIHBvc2l0aW9uIHRvIHRoZSBhcHByb3ByaWF0ZSBwbGFjZXMuCisgICAgICogUGFzc2VkIGluIGNoYXJhY3RlciBvZmZzZXQgcG9pbnRzIHRvIHRoZSBzZWNvbmQgY29tYmluaW5nIGNoYXJhY3RlciAKKyAgICAgKiBhZnRlciB0aGUgc3RhcnQgY2hhcmFjdGVyLgorICAgICAqIEBwYXJhbSBjb2xsYXRvciBjdXJyZW50IGNvbGxhdG9yIHVzZWQKKyAgICAgKiBAcGFyYW0gZW50cnlvZmZzZXQgaW5kZXggdG8gdGhlIHN0YXJ0IGNoYXJhY3RlciBpbiB0aGUgY29udHJhY3Rpb24gdGFibGUKKyAgICAgKiBAcmV0dXJuIGRpc2NvbnRpZ3VvdXMgY29sbGF0aW9uIGVsZW1lbnQgb2Zmc2V0CisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgbmV4dERpc2NvbnRpZ3VvdXMoUnVsZUJhc2VkQ29sbGF0b3IgY29sbGF0b3IsIGludCBlbnRyeW9mZnNldCkKKyAgICB7CisgICAgICAgIGludCBvZmZzZXQgPSBlbnRyeW9mZnNldDsKKyAgICAgICAgYm9vbGVhbiBtdWx0aWNvbnRyYWN0aW9uID0gZmFsc2U7CisgICAgICAgIC8vIHNpbmNlIGl0IHdpbGwgYmUgc3R1ZmZlZCBpbnRvIHRoaXMgaXRlcmF0b3IgYW5kIHJhbiBvdmVyIGFnYWluCisgICAgICAgIGlmIChtX3V0aWxTa2lwcGVkQnVmZmVyXyA9PSBudWxsKSB7CisgICAgICAgICAgICBtX3V0aWxTa2lwcGVkQnVmZmVyXyA9IG5ldyBTdHJpbmdCdWZmZXIoKTsgCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtX3V0aWxTa2lwcGVkQnVmZmVyXy5zZXRMZW5ndGgoMCk7CisgICAgICAgIH0KKyAgICAgICAgY2hhciBjaCA9IGN1cnJlbnRDaGFyKCk7CisgICAgICAgIG1fdXRpbFNraXBwZWRCdWZmZXJfLmFwcGVuZChjdXJyZW50Q2hhcigpKTsgCisgICAgICAgIC8vIGFjY2VudCBhZnRlciB0aGUgZmlyc3QgY2hhcmFjdGVyCisgICAgICAgIGlmIChtX3V0aWxTcGVjaWFsRGlzY29udGlndW91c0JhY2tVcF8gPT0gbnVsbCkgeworICAgICAgICAgICAgbV91dGlsU3BlY2lhbERpc2NvbnRpZ3VvdXNCYWNrVXBfID0gbmV3IEJhY2t1cCgpOworICAgICAgICB9CisgICAgICAgIGJhY2t1cEludGVybmFsU3RhdGUobV91dGlsU3BlY2lhbERpc2NvbnRpZ3VvdXNCYWNrVXBfKTsKKyAgICAgICAgY2hhciBuZXh0Y2ggPSBjaDsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIGNoID0gbmV4dGNoOworICAgICAgICAgICAgbmV4dGNoID0gbmV4dENoYXIoKTsgCisgICAgICAgICAgICBpZiAobmV4dGNoID09IENoYXJhY3Rlckl0ZXJhdG9yLkRPTkUgCisgICAgICAgICAgICAgICAgfHwgZ2V0Q29tYmluaW5nQ2xhc3MobmV4dGNoKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgLy8gaWYgdGhlcmUgYXJlIG5vIG1vcmUgYWNjZW50cyB0byBtb3ZlIGFyb3VuZAorICAgICAgICAgICAgICAgIC8vIHdlIGRvbid0IGhhdmUgdG8gc2hpZnQgcHJldmlvdXNDaGFyLCBzaW5jZSB3ZSBhcmUgcmVzZXR0aW5nCisgICAgICAgICAgICAgICAgLy8gdGhlIG9mZnNldCBsYXRlcgorICAgICAgICAgICAgICAgIGlmIChtdWx0aWNvbnRyYWN0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChuZXh0Y2ggIT0gQ2hhcmFjdGVySXRlcmF0b3IuRE9ORSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNDaGFyKCk7IC8vIGJhY2t0cmFjaworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHNldERpc2NvbnRpZ3VvdXMobV91dGlsU2tpcHBlZEJ1ZmZlcl8pOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29sbGF0b3IubV9jb250cmFjdGlvbkNFX1tvZmZzZXRdOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgIG9mZnNldCArKzsgLy8gc2tpcCB0aGUgY29tYmluaW5nIGNsYXNzIG9mZnNldAorICAgICAgICAgICAgd2hpbGUgKG5leHRjaCA+IGNvbGxhdG9yLm1fY29udHJhY3Rpb25JbmRleF9bb2Zmc2V0XSkgeworICAgICAgICAgICAgICAgIG9mZnNldCArKzsKKyAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgIGludCBjZSA9IENFX05PVF9GT1VORF87CisgICAgICAgICAgICBpZiAobmV4dGNoICE9IGNvbGxhdG9yLm1fY29udHJhY3Rpb25JbmRleF9bb2Zmc2V0XQorICAgICAgICAgICAgICAgICAgICB8fCBnZXRDb21iaW5pbmdDbGFzcyhuZXh0Y2gpID09IGdldENvbWJpbmluZ0NsYXNzKGNoKSkgeworICAgICAgICAgICAgICAgICAgICAvLyB1bm1hdGNoZWQgb3IgYmxvY2tlZCBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICBtX3V0aWxTa2lwcGVkQnVmZmVyXy5hcHBlbmQobmV4dGNoKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGNlID0gY29sbGF0b3IubV9jb250cmFjdGlvbkNFX1tvZmZzZXRdOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChjZSA9PSBDRV9OT1RfRk9VTkRfKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9IAorICAgICAgICAgICAgZWxzZSBpZiAoaXNDb250cmFjdGlvblRhZyhjZSkpIHsKKyAgICAgICAgICAgICAgICAvLyB0aGlzIGlzIGEgbXVsdGktY29udHJhY3Rpb24KKyAgICAgICAgICAgICAgICBvZmZzZXQgPSBnZXRDb250cmFjdGlvbk9mZnNldChjb2xsYXRvciwgY2UpOworICAgICAgICAgICAgICAgIGlmIChjb2xsYXRvci5tX2NvbnRyYWN0aW9uQ0VfW29mZnNldF0gIT0gQ0VfTk9UX0ZPVU5EXykgeworICAgICAgICAgICAgICAgICAgICBtdWx0aWNvbnRyYWN0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYmFja3VwSW50ZXJuYWxTdGF0ZShtX3V0aWxTcGVjaWFsRGlzY29udGlndW91c0JhY2tVcF8pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gCisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBzZXREaXNjb250aWd1b3VzKG1fdXRpbFNraXBwZWRCdWZmZXJfKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHVwZGF0ZUludGVybmFsU3RhdGUobV91dGlsU3BlY2lhbERpc2NvbnRpZ3VvdXNCYWNrVXBfKTsKKyAgICAgICAgLy8gYmFja3VwIGlzIG9uZSBmb3J3YXJkIG9mIHRoZSBiYXNlIGNoYXJhY3Rlciwgd2UgbmVlZCB0byBtb3ZlIGJhY2sgCisgICAgICAgIC8vIG9uZSBtb3JlCisgICAgICAgIHByZXZpb3VzQ2hhcigpOworICAgICAgICByZXR1cm4gY29sbGF0b3IubV9jb250cmFjdGlvbkNFX1tlbnRyeW9mZnNldF07CisgICAgfQorICAgICAgICAKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBuZXh0IGNvbnRyYWN0aW9uIGNlCisgICAgICogQHBhcmFtIGNvbGxhdG9yIGNvbGxhdG9yIHRvIHVzZQorICAgICAqIEBwYXJhbSBjZSBjdXJyZW50IGNlCisgICAgICogQHBhcmFtIGVudHJ5YmFja3VwIGVudHJ5IGJhY2t1cCBpdGVyYXRvciBzdGF0dXMKKyAgICAgKiBAcmV0dXJuIGNlIG9mIHRoZSBuZXh0IGNvbnRyYWN0aW9uCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgbmV4dENvbnRyYWN0aW9uKFJ1bGVCYXNlZENvbGxhdG9yIGNvbGxhdG9yLCBpbnQgY2UpCisgICAgeworICAgICAgICBiYWNrdXBJbnRlcm5hbFN0YXRlKG1fdXRpbFNwZWNpYWxCYWNrVXBfKTsKKyAgICAgICAgaW50IGVudHJ5Y2UgPSBDRV9OT1RfRk9VTkRfOworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgaW50IGVudHJ5b2Zmc2V0ID0gZ2V0Q29udHJhY3Rpb25PZmZzZXQoY29sbGF0b3IsIGNlKTsKKyAgICAgICAgICAgIGludCBvZmZzZXQgPSBlbnRyeW9mZnNldDsgICAKKyAgICAgICAgCisgICAgICAgICAgICBpZiAoaXNFbmQoKSkgeworICAgICAgICAgICAgICAgIGNlID0gY29sbGF0b3IubV9jb250cmFjdGlvbkNFX1tvZmZzZXRdOworICAgICAgICAgICAgICAgIGlmIChjZSA9PSBDRV9OT1RfRk9VTkRfKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIGJhY2sgdXAgdGhlIHNvdXJjZSBvdmVyIGFsbCB0aGUgY2hhcnMgd2Ugc2Nhbm5lZCBnb2luZyAKKyAgICAgICAgICAgICAgICAgICAgLy8gaW50byB0aGlzIGNvbnRyYWN0aW9uLgorICAgICAgICAgICAgICAgICAgICBjZSA9IGVudHJ5Y2U7ICAKKyAgICAgICAgICAgICAgICAgICAgdXBkYXRlSW50ZXJuYWxTdGF0ZShtX3V0aWxTcGVjaWFsQmFja1VwXyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgICAgIC8vIGdldCB0aGUgZGlzY29udGlndW9zIG1heGltdW0gY29tYmluaW5nIGNsYXNzCisgICAgICAgICAgICBieXRlIG1heENDID0gKGJ5dGUpKGNvbGxhdG9yLm1fY29udHJhY3Rpb25JbmRleF9bb2Zmc2V0XSAmIDB4RkYpOyAKKyAgICAgICAgICAgIC8vIGNoZWNrcyBpZiBhbGwgY2hhcmFjdGVycyBoYXZlIHRoZSBzYW1lIGNvbWJpbmluZyBjbGFzcworICAgICAgICAgICAgYnl0ZSBhbGxTYW1lID0gKGJ5dGUpKGNvbGxhdG9yLm1fY29udHJhY3Rpb25JbmRleF9bb2Zmc2V0XSA+PiA4KTsKKyAgICAgICAgICAgIGNoYXIgY2ggPSBuZXh0Q2hhcigpOworICAgICAgICAgICAgb2Zmc2V0ICsrOworICAgICAgICAgICAgd2hpbGUgKGNoID4gY29sbGF0b3IubV9jb250cmFjdGlvbkluZGV4X1tvZmZzZXRdKSB7IAorICAgICAgICAgICAgICAgIC8vIGNvbnRyYWN0aW9uIGNoYXJhY3RlcnMgYXJlIG9yZGVyZWQsIHNraXAgYWxsIHNtYWxsZXIKKyAgICAgICAgICAgICAgICBvZmZzZXQgKys7CisgICAgICAgICAgICB9CisgICAgICAgIAorICAgICAgICAgICAgaWYgKGNoID09IGNvbGxhdG9yLm1fY29udHJhY3Rpb25JbmRleF9bb2Zmc2V0XSkgeworICAgICAgICAgICAgICAgIC8vIEZvdW5kIHRoZSBzb3VyY2Ugc3RyaW5nIGNoYXIgaW4gdGhlIGNvbnRyYWN0aW9uIHRhYmxlLgorICAgICAgICAgICAgICAgIC8vICBQaWNrIHVwIHRoZSBjb3JyZXNwb25kaW5nIENFIGZyb20gdGhlIHRhYmxlLgorICAgICAgICAgICAgICAgIGNlID0gY29sbGF0b3IubV9jb250cmFjdGlvbkNFX1tvZmZzZXRdOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gaWYgdGhlcmUgaXMgYSBjb21wbGV0ZWx5IGlnbm9yYWJsZSBjb2RlIHBvaW50IGluIHRoZSBtaWRkbGUgCisgICAgICAgICAgICAgICAgLy8gb2YgY29udHJhY3Rpb24sIHdlIG5lZWQgdG8gYWN0IGFzIGlmIGl0J3Mgbm90IHRoZXJlIAorICAgICAgICAgICAgICAgIGludCBpc1plcm9DRSA9IGNvbGxhdG9yLm1fdHJpZV8uZ2V0TGVhZFZhbHVlKGNoKTsgCisgICAgICAgICAgICAgICAgLy8gaXQncyBlYXN5IGZvciBCTVAgY29kZSBwb2ludHMgCisgICAgICAgICAgICAgICAgaWYgKGlzWmVyb0NFID09IDApIHsgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7IAorICAgICAgICAgICAgICAgIH0gCisgICAgICAgICAgICAgICAgZWxzZSBpZiAoVVRGMTYuaXNMZWFkU3Vycm9nYXRlKGNoKSkgeyAKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0VuZCgpKSB7IAorICAgICAgICAgICAgICAgICAgICAgICAgYmFja3VwSW50ZXJuYWxTdGF0ZShtX3V0aWxTcGVjaWFsQmFja1VwXyk7IAorICAgICAgICAgICAgICAgICAgICAgICAgY2hhciB0cmFpbCA9IG5leHRDaGFyKCk7IAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFVURjE2LmlzVHJhaWxTdXJyb2dhdGUodHJhaWwpKSB7IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvIHN0dWZmIHdpdGggdHJhaWwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFJ1bGVCYXNlZENvbGxhdG9yLmdldFRhZyhpc1plcm9DRSkgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09IFJ1bGVCYXNlZENvbGxhdG9yLkNFX1NVUlJPR0FURV9UQUdfKSB7IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmluYWxDRSA9IGNvbGxhdG9yLm1fdHJpZV8uZ2V0VHJhaWxWYWx1ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNaZXJvQ0UsIHRyYWlsKTsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaW5hbENFID09IDApIHsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnJva2VuIHN1cnJvZ2F0ZSBzZXF1ZW5jZSwgdGh1cyBjb21wbGV0ZWx5IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlnbm9yYWJsZSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJbnRlcm5hbFN0YXRlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXRpbFNwZWNpYWxCYWNrVXBfKTsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7IAorICAgICAgICAgICAgICAgICAgICAgICAgfSAKKyAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUludGVybmFsU3RhdGUobV91dGlsU3BlY2lhbEJhY2tVcF8pOyAKKyAgICAgICAgICAgICAgICAgICAgfSAKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm8gIG1vcmUgY2hhcmFjdGVycywgc28gYnJva2VuIHN1cnJvZ2F0ZSBwYWlyLi4uICAKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgY29udHJhY3Rpb24gd2lsbCB1bHRpbWF0ZWx5IGZhaWwsIGJ1dCBub3QgCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIG9mIHVzIAorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7ICAKKyAgICAgICAgICAgICAgICAgICAgfSAKKyAgICAgICAgICAgICAgIH0gCisKKyAgICAgICAgICAgICAgICAvLyBTb3VyY2Ugc3RyaW5nIGNoYXIgd2FzIG5vdCBpbiBjb250cmFjdGlvbiB0YWJsZS4KKyAgICAgICAgICAgICAgICAvLyBVbmxlc3MgaXQgaXMgYSBkaXNjb250aWd1b3VzIGNvbnRyYWN0aW9uLCB3ZSBhcmUgZG9uZQorICAgICAgICAgICAgICAgIGJ5dGUgc0NDOworICAgICAgICAgICAgICAgIGlmIChtYXhDQyA9PSAwIHx8IChzQ0MgPSAoYnl0ZSlnZXRDb21iaW5pbmdDbGFzcyhjaCkpID09IDAgCisgICAgICAgICAgICAgICAgICAgIHx8IHNDQyA+IG1heENDIHx8IChhbGxTYW1lICE9IDAgJiYgc0NDID09IG1heENDKSB8fCAKKyAgICAgICAgICAgICAgICAgICAgaXNFbmQoKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBDb250cmFjdGlvbiBjYW4gbm90IGJlIGRpc2NvbnRpZ3VvdXMsIGJhY2sgdXAgYnkgb25lCisgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzQ2hhcigpOyAKKyAgICAgICAgICAgICAgICAgICAgY2UgPSBjb2xsYXRvci5tX2NvbnRyYWN0aW9uQ0VfW2VudHJ5b2Zmc2V0XTsKKyAgICAgICAgICAgICAgICB9IAorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvLyBDb250cmFjdGlvbiBpcyBwb3NzaWJseSBkaXNjb250aWd1b3VzLgorICAgICAgICAgICAgICAgICAgICAvLyBmaW5kIHRoZSBuZXh0IGNoYXJhY3RlciBpZiBjaCBpcyBub3QgYSBiYXNlIGNoYXJhY3RlcgorICAgICAgICAgICAgICAgICAgICBjaGFyIG5leHRjaCA9IG5leHRDaGFyKCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChuZXh0Y2ggIT0gQ2hhcmFjdGVySXRlcmF0b3IuRE9ORSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNDaGFyKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGdldENvbWJpbmluZ0NsYXNzKG5leHRjaCkgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNDaGFyKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBiYXNlIGNoYXJhY3RlciBub3QgcGFydCBvZiBkaXNjb250aWd1b3VzIGNvbnRyYWN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICBjZSA9IGNvbGxhdG9yLm1fY29udHJhY3Rpb25DRV9bZW50cnlvZmZzZXRdOworICAgICAgICAgICAgICAgICAgICB9IAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNlID0gbmV4dERpc2NvbnRpZ3VvdXMoY29sbGF0b3IsIGVudHJ5b2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICAgICBpZiAoY2UgPT0gQ0VfTk9UX0ZPVU5EXykgeworICAgICAgICAgICAgICAgIC8vIHNvdXJjZSBkaWQgbm90IG1hdGNoIHRoZSBjb250cmFjdGlvbiwgcmV2ZXJ0IGJhY2sgb3JpZ2luYWwKKyAgICAgICAgICAgICAgICB1cGRhdGVJbnRlcm5hbFN0YXRlKG1fdXRpbFNwZWNpYWxCYWNrVXBfKTsKKyAgICAgICAgICAgICAgICBjZSA9IGVudHJ5Y2U7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBzb3VyY2Ugd2FzIGEgY29udHJhY3Rpb24KKyAgICAgICAgICAgIGlmICghaXNDb250cmFjdGlvblRhZyhjZSkpIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICAgICAvLyBjY29udGludWUgbG9vcGluZyB0byBjaGVjayBmb3IgdGhlIHJlbWFpbmluZyBjb250cmFjdGlvbi4KKyAgICAgICAgICAgIGlmIChjb2xsYXRvci5tX2NvbnRyYWN0aW9uQ0VfW2VudHJ5b2Zmc2V0XSAhPSBDRV9OT1RfRk9VTkRfKSB7CisgICAgICAgICAgICAgICAgLy8gdGhlcmUgYXJlIGZ1cnRoZXIgY29udHJhY3Rpb25zIHRvIGJlIHBlcmZvcm1lZCwgc28gd2Ugc3RvcmUKKyAgICAgICAgICAgICAgICAvLyB0aGUgc28tZmFyIGNvbXBsZXRlZCBjZSwgc28gdGhhdCBpZiB3ZSBmYWlsIGluIHRoZSBuZXh0CisgICAgICAgICAgICAgICAgLy8gcm91bmQgd2UganVzdCByZXR1cm4gdGhpcyBvbmUuCisgICAgICAgICAgICAgICAgZW50cnljZSA9IGNvbGxhdG9yLm1fY29udHJhY3Rpb25DRV9bZW50cnlvZmZzZXRdOworICAgICAgICAgICAgICAgIGJhY2t1cEludGVybmFsU3RhdGUobV91dGlsU3BlY2lhbEJhY2tVcF8pOworICAgICAgICAgICAgICAgIGlmIChtX3V0aWxTcGVjaWFsQmFja1VwXy5tX2J1ZmZlck9mZnNldF8gPj0gMCkgeworICAgICAgICAgICAgICAgICAgICBtX3V0aWxTcGVjaWFsQmFja1VwXy5tX2J1ZmZlck9mZnNldF8gLS07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBtX3V0aWxTcGVjaWFsQmFja1VwXy5tX29mZnNldF8gLS07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIHJldHVybiBjZTsKKyAgICB9CisgICAgICAgIAorICAgIC8qKgorICAgICAqIEdldHMgdGhlIG5leHQgY2UgZm9yIGxvbmcgcHJpbWFyaWVzLCBzdHVmZnMgdGhlIHJlc3Qgb2YgdGhlIGNvbGxhdGlvbiAKKyAgICAgKiBlbGVtZW50cyBpbnRvIHRoZSBjZSBidWZmZXIKKyAgICAgKiBAcGFyYW0gY2UgY3VycmVudCBjZQorICAgICAqIEByZXR1cm4gbmV4dCBjZQorICAgICAqLworICAgIHByaXZhdGUgaW50IG5leHRMb25nUHJpbWFyeShpbnQgY2UpCisgICAgeworICAgICAgICBtX0NFQnVmZmVyX1sxXSA9ICgoY2UgJiAweEZGKSA8PCAyNCkgCisgICAgICAgICAgICB8IFJ1bGVCYXNlZENvbGxhdG9yLkNFX0NPTlRJTlVBVElPTl9NQVJLRVJfOworICAgICAgICBtX0NFQnVmZmVyT2Zmc2V0XyA9IDE7CisgICAgICAgIG1fQ0VCdWZmZXJTaXplXyA9IDI7CisgICAgICAgIG1fQ0VCdWZmZXJfWzBdID0gKChjZSAmIDB4RkZGRjAwKSA8PCA4KSB8IChDRV9CWVRFX0NPTU1PTl8gPDwgOCkgfCAKKyAgICAgICAgICAgIENFX0JZVEVfQ09NTU9OXzsKKyAgICAgICAgcmV0dXJuIG1fQ0VCdWZmZXJfWzBdOworICAgIH0KKyAgICAgICAgCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgbnVtYmVyIG9mIGV4cGFuc2lvbgorICAgICAqIEBwYXJhbSBjZSBjdXJyZW50IGNlCisgICAgICogQHJldHVybiBudW1iZXIgb2YgZXhwYW5zaW9uCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgZ2V0RXhwYW5zaW9uQ291bnQoaW50IGNlKQorICAgIHsgICAKKyAgICAgICAgcmV0dXJuIGNlICYgMHhGOworICAgIH0KKyAgICAgICAgCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgbmV4dCBleHBhbnNpb24gY2UgYW5kIHN0dWZmcyB0aGUgcmVzdCBvZiB0aGUgY29sbGF0aW9uIGVsZW1lbnRzCisgICAgICogaW50byB0aGUgY2UgYnVmZmVyCisgICAgICogQHBhcmFtIGNvbGxhdG9yIGN1cnJlbnQgY29sbGF0b3IKKyAgICAgKiBAcGFyYW0gY2UgY3VycmVudCBjZQorICAgICAqIEByZXR1cm4gbmV4dCBleHBhbnNpb24gY2UKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBuZXh0RXhwYW5zaW9uKFJ1bGVCYXNlZENvbGxhdG9yIGNvbGxhdG9yLCBpbnQgY2UpCisgICAgeworICAgICAgICAvLyBOT1RFOiB3ZSBjYW4gZW5jb3VudGVyIGJvdGggY29udGludWF0aW9ucyBhbmQgZXhwYW5zaW9ucyBpbiBhbiAKKyAgICAgICAgLy8gZXhwYW5zaW9uIQorICAgICAgICAvLyBJIGhhdmUgdG8gZGVjaWRlIHdoZXJlIGNvbnRpbnVhdGlvbnMgYXJlIGdvaW5nIHRvIGJlIGRlYWx0IHdpdGggCisgICAgICAgIGludCBvZmZzZXQgPSBnZXRFeHBhbnNpb25PZmZzZXQoY29sbGF0b3IsIGNlKTsKKyAgICAgICAgbV9DRUJ1ZmZlclNpemVfID0gZ2V0RXhwYW5zaW9uQ291bnQoY2UpOyAKKyAgICAgICAgbV9DRUJ1ZmZlck9mZnNldF8gPSAxOworICAgICAgICBtX0NFQnVmZmVyX1swXSA9IGNvbGxhdG9yLm1fZXhwYW5zaW9uX1tvZmZzZXRdOworICAgICAgICBpZiAobV9DRUJ1ZmZlclNpemVfICE9IDApIHsgCisgICAgICAgICAgICAvLyBpZiB0aGVyZSBhcmUgbGVzcyB0aGFuIDE2IGVsZW1lbnRzIGluIGV4cGFuc2lvbgorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBtX0NFQnVmZmVyU2l6ZV87IGkgKyspIHsKKyAgICAgICAgICAgICAgICBtX0NFQnVmZmVyX1tpXSA9IGNvbGxhdG9yLm1fZXhwYW5zaW9uX1tvZmZzZXQgKyBpXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSAKKyAgICAgICAgZWxzZSB7IAorICAgICAgICAgICAgLy8gY2UgYXJlIHRlcm1pbmF0ZWQKKyAgICAgICAgICAgIG1fQ0VCdWZmZXJTaXplXyA9IDE7CisgICAgICAgICAgICB3aGlsZSAoY29sbGF0b3IubV9leHBhbnNpb25fW29mZnNldF0gIT0gMCkgeworICAgICAgICAgICAgICAgIG1fQ0VCdWZmZXJfW21fQ0VCdWZmZXJTaXplXyArK10gPSAKKyAgICAgICAgICAgICAgICAgICAgY29sbGF0b3IubV9leHBhbnNpb25fWysrIG9mZnNldF07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1fQ0VCdWZmZXJfWzBdOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBuZXh0IGltcGxpY2l0IGNlIGZvciBjb2RlcG9pbnRzCisgICAgICogQHBhcmFtIGNvZGVwb2ludCBjdXJyZW50IGNvZGVwb2ludAorICAgICAqIEByZXR1cm4gaW1wbGljaXQgY2UKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBuZXh0SW1wbGljaXQoaW50IGNvZGVwb2ludCkgCisgICAgeworICAgICAgICBpZiAoIVVDaGFyYWN0ZXIuaXNMZWdhbChjb2RlcG9pbnQpKSB7CisgICAgICAgICAgICAvLyBzeW53ZWUgdG8gY2hlY2sgd2l0aCB2bGFkaW1pciBvbiB0aGUgcmFuZ2Ugb2YgaXNOb25DaGFyKCkKKyAgICAgICAgICAgIC8vIGlsbGVnYWwgY29kZSB2YWx1ZSwgdXNlIGNvbXBsZXRlbHkgaWdub3JlYWJsZSEKKyAgICAgICAgICAgIHJldHVybiBJR05PUkFCTEU7CisgICAgICAgIH0KKyAgICAgICAgaW50IHJlc3VsdCA9IGdldEltcGxpY2l0UHJpbWFyeShjb2RlcG9pbnQpOworICAgICAgICBtX0NFQnVmZmVyX1swXSA9IChyZXN1bHQgJiBSdWxlQmFzZWRDb2xsYXRvci5DRV9QUklNQVJZX01BU0tfKSAKKyAgICAgICAgICAgICAgICAgICAgICAgICB8IDB4MDAwMDA1MDU7CisgICAgICAgIG1fQ0VCdWZmZXJfWzFdID0gKChyZXN1bHQgJiAweDAwMDBGRkZGKSA8PCAxNikgfCAweDAwMDAwMEMwOworICAgICAgICBtX0NFQnVmZmVyT2Zmc2V0XyA9IDE7CisgICAgICAgIG1fQ0VCdWZmZXJTaXplXyA9IDI7CisgICAgICAgIHJldHVybiBtX0NFQnVmZmVyX1swXTsKKyAgICB9CisgICAgICAgIAorICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIG5leHQgY2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBmb2xsb3dpbmcgc3Vycm9nYXRlIGNoYXJhY3RlcnMKKyAgICAgKiBAcGFyYW0gY2ggY3VycmVudCBjaGFyYWN0ZXIKKyAgICAgKiBAcmV0dXJuIGNlCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgbmV4dFN1cnJvZ2F0ZShjaGFyIGNoKQorICAgIHsKKyAgICAgICAgY2hhciBuZXh0Y2ggPSBuZXh0Q2hhcigpOworICAgICAgICBpZiAobmV4dGNoICE9IENoYXJhY3Rlckl0ZXJhdG9yLkRPTkUgJiYgCisgICAgICAgICAgICBVVEYxNi5pc1RyYWlsU3Vycm9nYXRlKG5leHRjaCkpIHsKKyAgICAgICAgICAgIGludCBjb2RlcG9pbnQgPSBVQ2hhcmFjdGVyUHJvcGVydHkuZ2V0UmF3U3VwcGxlbWVudGFyeShjaCwgbmV4dGNoKTsKKyAgICAgICAgICAgIHJldHVybiBuZXh0SW1wbGljaXQoY29kZXBvaW50KTsKKyAgICAgICAgfSAKKyAgICAgICAgaWYgKG5leHRjaCAhPSBDaGFyYWN0ZXJJdGVyYXRvci5ET05FKSB7CisgICAgICAgICAgICBwcmV2aW91c0NoYXIoKTsgLy8gcmV2ZXJ0cyBiYWNrIHRvIHRoZSBvcmlnaW5hbCBwb3NpdGlvbgorICAgICAgICB9CisgICAgICAgIHJldHVybiBJR05PUkFCTEU7IC8vIGNvbXBsZXRlbHkgaWdub3JhYmxlCisgICAgfQorICAgICAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBuZXh0IGNlIGZvciBhIGhhbmd1bCBjaGFyYWN0ZXIsIHRoaXMgaXMgYW4gaW1wbGljaXQgCisgICAgICogY2FsY3VsYXRpb24KKyAgICAgKiBAcGFyYW0gY29sbGF0b3IgY3VycmVudCBjb2xsYXRvcgorICAgICAqIEBwYXJhbSBjaCBjdXJyZW50IGNoYXJhY3RlcgorICAgICAqIEByZXR1cm4gaGFuZ3VsIGNlCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgbmV4dEhhbmd1bChSdWxlQmFzZWRDb2xsYXRvciBjb2xsYXRvciwgY2hhciBjaCkKKyAgICB7CisgICAgICAgIGNoYXIgTCA9IChjaGFyKShjaCAtIEhBTkdVTF9TQkFTRV8pOworICAgICAgICAgICAgICAgIAorICAgICAgICAvLyBkaXZpZGUgaW50byBwaWVjZXMKKyAgICAgICAgLy8gZG8gaXQgaW4gdGhpcyBvcmRlciBzaW5jZSBzb21lIGNvbXBpbGVycyBjYW4gZG8gJSBhbmQgLyBpbiBvbmUgCisgICAgICAgIC8vIG9wZXJhdGlvbgorICAgICAgICBjaGFyIFQgPSAoY2hhcikoTCAlIEhBTkdVTF9UQ09VTlRfKTsgCisgICAgICAgIEwgLz0gSEFOR1VMX1RDT1VOVF87CisgICAgICAgIGNoYXIgViA9IChjaGFyKShMICUgSEFOR1VMX1ZDT1VOVF8pOworICAgICAgICBMIC89IEhBTkdVTF9WQ09VTlRfOworICAgICAgICAgICAgICAgIAorICAgICAgICAvLyBvZmZzZXQgdGhlbQorICAgICAgICBMICs9IEhBTkdVTF9MQkFTRV87CisgICAgICAgIFYgKz0gSEFOR1VMX1ZCQVNFXzsKKyAgICAgICAgVCArPSBIQU5HVUxfVEJBU0VfOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIC8vIHJldHVybiB0aGUgZmlyc3QgQ0UsIGJ1dCBmaXJzdCBwdXQgdGhlIHJlc3QgaW50byB0aGUgZXhwYW5zaW9uIAorICAgICAgICAvLyBidWZmZXIKKyAgICAgICAgbV9DRUJ1ZmZlclNpemVfID0gMDsKKyAgICAgICAgaWYgKCFjb2xsYXRvci5tX2lzSmFtb1NwZWNpYWxfKSB7IC8vIEZBU1QgUEFUSAorICAgICAgICAgICAgbV9DRUJ1ZmZlcl9bbV9DRUJ1ZmZlclNpemVfICsrXSA9IAorICAgICAgICAgICAgICAgIGNvbGxhdG9yLm1fdHJpZV8uZ2V0TGVhZFZhbHVlKEwpOworICAgICAgICAgICAgbV9DRUJ1ZmZlcl9bbV9DRUJ1ZmZlclNpemVfICsrXSA9IAorICAgICAgICAgICAgICAgIGNvbGxhdG9yLm1fdHJpZV8uZ2V0TGVhZFZhbHVlKFYpOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoVCAhPSBIQU5HVUxfVEJBU0VfKSB7CisgICAgICAgICAgICAgICAgbV9DRUJ1ZmZlcl9bbV9DRUJ1ZmZlclNpemVfICsrXSA9IAorICAgICAgICAgICAgICAgICAgICBjb2xsYXRvci5tX3RyaWVfLmdldExlYWRWYWx1ZShUKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fQ0VCdWZmZXJPZmZzZXRfID0gMTsKKyAgICAgICAgICAgIHJldHVybiBtX0NFQnVmZmVyX1swXTsKKyAgICAgICAgfSAKKyAgICAgICAgZWxzZSB7IAorICAgICAgICAgICAgLy8gSmFtbyBpcyBTcGVjaWFsCisgICAgICAgICAgICAvLyBTaW5jZSBIYW5ndWxzIHBhc3MgdGhlIEZDRCBjaGVjaywgaXQgaXMgZ3VhcmFudGVlZCB0aGF0IHdlIAorICAgICAgICAgICAgLy8gd29uJ3QgYmUgaW4gdGhlIG5vcm1hbGl6YXRpb24gYnVmZmVyIGlmIHNvbWV0aGluZyBsaWtlIHRoaXMgCisgICAgICAgICAgICAvLyBoYXBwZW5zCisgICAgICAgICAgICAvLyBNb3ZlIEphbW9zIGludG8gbm9ybWFsaXphdGlvbiBidWZmZXIKKyAgICAgICAgICAgIG1fYnVmZmVyXy5hcHBlbmQoKGNoYXIpTCk7CisgICAgICAgICAgICBtX2J1ZmZlcl8uYXBwZW5kKChjaGFyKVYpOworICAgICAgICAgICAgaWYgKFQgIT0gSEFOR1VMX1RCQVNFXykgeworICAgICAgICAgICAgICAgIG1fYnVmZmVyXy5hcHBlbmQoKGNoYXIpVCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX0ZDRExpbWl0XyA9IG1fc291cmNlXy5nZXRJbmRleCgpOyAgCisgICAgICAgICAgICBtX0ZDRFN0YXJ0XyA9IG1fRkNETGltaXRfIC0gMTsKKyAgICAgICAgICAgIC8vIEluZGljYXRlIHdoZXJlIHRvIGNvbnRpbnVlIGluIG1haW4gaW5wdXQgc3RyaW5nIGFmdGVyIAorICAgICAgICAgICAgLy8gZXhoYXVzdGluZyB0aGUgYnVmZmVyCisgICAgICAgICAgICByZXR1cm4gSUdOT1JBQkxFOworICAgICAgICB9CisgICAgfQorICAgICAgICAKKyAgICAvKioKKyAgICAgKiA8cD5TcGVjaWFsIENFIG1hbmFnZW1lbnQuIEV4cGFuc2lvbnMsIGNvbnRyYWN0aW9ucyBldGMuLi48L3A+CisgICAgICogQHBhcmFtIGNvbGxhdG9yIGNhbiBiZSBwbGFpbiBVQ0EgCisgICAgICogQHBhcmFtIGNlIGN1cnJlbnQgY2UKKyAgICAgKiBAcGFyYW0gY2ggY3VycmVudCBjaGFyYWN0ZXIKKyAgICAgKiBAcmV0dXJuIG5leHQgc3BlY2lhbCBjZQorICAgICAqLworICAgIHByaXZhdGUgaW50IG5leHRTcGVjaWFsKFJ1bGVCYXNlZENvbGxhdG9yIGNvbGxhdG9yLCBpbnQgY2UsIGNoYXIgY2gpIAorICAgIHsKKyAgICAgICAgaW50IGNvZGVwb2ludCA9IGNoOworICAgICAgICBCYWNrdXAgZW50cnliYWNrdXAgPSBtX3V0aWxTcGVjaWFsRW50cnlCYWNrVXBfOworICAgICAgICAvLyB0aGlzIGlzIHRvIGhhbmRsZSByZWN1cnNpdmUgbG9vcGluZworICAgICAgICBpZiAoZW50cnliYWNrdXAgIT0gbnVsbCkgeworICAgICAgICAgICAgbV91dGlsU3BlY2lhbEVudHJ5QmFja1VwXyA9IG51bGw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBlbnRyeWJhY2t1cCA9IG5ldyBCYWNrdXAoKTsKKyAgICAgICAgfQorICAgICAgICBiYWNrdXBJbnRlcm5hbFN0YXRlKGVudHJ5YmFja3VwKTsKKyAgICAgICAgdHJ5IHsgLy8gZm9yY2VzIGl0IHRvIGFzc2lnbiBtX3V0aWxTcGVjaWFsRW50cnlCYWNrdXBfCisgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgICAgIC8vIFRoaXMgbG9vcCB3aWxsIHJlcGVhdCBvbmx5IGluIHRoZSBjYXNlIG9mIGNvbnRyYWN0aW9ucywgCisgICAgICAgICAgICAgICAgLy8gc3Vycm9nYXRlCisgICAgICAgICAgICAgICAgc3dpdGNoKFJ1bGVCYXNlZENvbGxhdG9yLmdldFRhZyhjZSkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIENFX05PVF9GT1VORF9UQUdfOgorICAgICAgICAgICAgICAgICAgICAvLyBpbXBvc3NpYmxlIGNhc2UgZm9yIGljdTRqCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjZTsKKyAgICAgICAgICAgICAgICBjYXNlIFJ1bGVCYXNlZENvbGxhdG9yLkNFX1NVUlJPR0FURV9UQUdfOgorICAgICAgICAgICAgICAgICAgICBpZiAoaXNFbmQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIElHTk9SQUJMRTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBiYWNrdXBJbnRlcm5hbFN0YXRlKG1fdXRpbFNwZWNpYWxCYWNrVXBfKTsKKyAgICAgICAgICAgICAgICAgICAgY2hhciB0cmFpbCA9IG5leHRDaGFyKCk7CisgICAgICAgICAgICAgICAgICAgIGNlID0gbmV4dFN1cnJvZ2F0ZShjb2xsYXRvciwgY2UsIHRyYWlsKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gY2FsY3VsYXRlIHRoZSBzdXBwbGVtZW50YXJ5IGNvZGUgcG9pbnQgdmFsdWUsIAorICAgICAgICAgICAgICAgICAgICAvLyBpZiBzdXJyb2dhdGUgd2FzIG5vdCB0YWlsb3JlZCB3ZSBnbyBvbmUgbW9yZSByb3VuZAorICAgICAgICAgICAgICAgICAgICBjb2RlcG9pbnQgPSAKKyAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXJQcm9wZXJ0eS5nZXRSYXdTdXBwbGVtZW50YXJ5KGNoLCB0cmFpbCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ0VfVEhBSV9UQUdfOgorICAgICAgICAgICAgICAgICAgICBjZSA9IG5leHRUaGFpKGNvbGxhdG9yLCBjZSwgY2gpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIENFX1NQRUNfUFJPQ19UQUdfOgorICAgICAgICAgICAgICAgICAgICBjZSA9IG5leHRTcGVjaWFsUHJlZml4KGNvbGxhdG9yLCBjZSwgZW50cnliYWNrdXApOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIENFX0NPTlRSQUNUSU9OX1RBR186CisgICAgICAgICAgICAgICAgICAgIGNlID0gbmV4dENvbnRyYWN0aW9uKGNvbGxhdG9yLCBjZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ0VfTE9OR19QUklNQVJZX1RBR186CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXh0TG9uZ1ByaW1hcnkoY2UpOworICAgICAgICAgICAgICAgIGNhc2UgQ0VfRVhQQU5TSU9OX1RBR186CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXh0RXhwYW5zaW9uKGNvbGxhdG9yLCBjZSk7CisgICAgICAgICAgICAgICAgICAgIC8vIHZhcmlvdXMgaW1wbGljaXRzIG9wdGltaXphdGlvbgorICAgICAgICAgICAgICAgIGNhc2UgQ0VfQ0pLX0lNUExJQ0lUX1RBR186ICAgIAorICAgICAgICAgICAgICAgICAgICAvLyAweDM0MDAtMHg0REI1LCAweDRFMDAtMHg5RkE1LCAweEY5MDAtMHhGQTJECisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXh0SW1wbGljaXQoY29kZXBvaW50KTsKKyAgICAgICAgICAgICAgICBjYXNlIENFX0lNUExJQ0lUX1RBR186IC8vIGV2ZXJ5dGhpbmcgdGhhdCBpcyBub3QgZGVmaW5lZCAKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5leHRJbXBsaWNpdChjb2RlcG9pbnQpOworICAgICAgICAgICAgICAgIGNhc2UgQ0VfVFJBSUxfU1VSUk9HQVRFX1RBR186IAorICAgICAgICAgICAgICAgICAgICByZXR1cm4gSUdOT1JBQkxFOyAvLyBEQzAwLURGRkYgYnJva2VuIHN1cnJvZ2F0ZQorICAgICAgICAgICAgICAgIGNhc2UgQ0VfTEVBRF9TVVJST0dBVEVfVEFHXzogIC8vIEQ4MDAtREJGRgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV4dFN1cnJvZ2F0ZShjaCk7CisgICAgICAgICAgICAgICAgY2FzZSBDRV9IQU5HVUxfU1lMTEFCTEVfVEFHXzogLy8gQUMwMC1EN0FGCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXh0SGFuZ3VsKGNvbGxhdG9yLCBjaCk7CisgICAgICAgICAgICAgICAgY2FzZSBDRV9DSEFSU0VUX1RBR186CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBub3QgeWV0IGltcGxlbWVudGVkIHByb2JhYmx5IGFmdGVyIDEuOAorICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ0VfTk9UX0ZPVU5EXzsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBjZSA9IElHTk9SQUJMRTsKKyAgICAgICAgICAgICAgICAgICAgLy8gc3lud2VlIHRvZG8sIHRocm93IGV4Y2VwdGlvbiBvciBzb21ldGhpbmcgaGVyZS4KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKCFSdWxlQmFzZWRDb2xsYXRvci5pc1NwZWNpYWwoY2UpKSB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIG1fdXRpbFNwZWNpYWxFbnRyeUJhY2tVcF8gPSBlbnRyeWJhY2t1cDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gY2U7CisgICAgfQorICAgICAgICAKKyAgICAvKioKKyAgICAgKiBHZXR0aW5nIHRoZSBwcmV2aW91cyBUaGFpIGNlCisgICAgICogQHBhcmFtIGNvbGxhdG9yIGN1cnJlbnQgY29sbGF0b3IKKyAgICAgKiBAcGFyYW0gY2ggY3VycmVudCBjaGFyYWN0ZXIKKyAgICAgKiBAcmV0dXJuIHByZXZpb3VzIFRoYWkgY2UKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBwcmV2aW91c1RoYWkoUnVsZUJhc2VkQ29sbGF0b3IgY29sbGF0b3IsIGludCBjZSwgY2hhciBjaCkKKyAgICB7CisgICAgICAgIGlmIChtX2J1ZmZlck9mZnNldF8gPj0gMCB8fCBtX3NvdXJjZV8uZ2V0SW5kZXgoKSA9PSAwKSB7CisgICAgICAgICAgICAvLyBpZiB3ZSBoYXZlIGFscmVhZHkgc3dhcHBlZCBvciBhdCB0aGUgc3RhcnQgb2YgdGhlIHNvdXJjZQorICAgICAgICAgICAgLy8gVHJlYXQgVGhhaSBhcyBhIGxlbmd0aCBvbmUgZXhwYW5zaW9uCisgICAgICAgICAgICByZXR1cm4gY29sbGF0b3IubV9leHBhbnNpb25fW2dldEV4cGFuc2lvbk9mZnNldChjb2xsYXRvciwgY2UpXTsKKyAgICAgICAgfQorICAgICAgICBjaGFyIHByZXZjaCA9IHByZXZpb3VzQ2hhcigpOworICAgICAgICBpZiAoIWlzVGhhaVByZVZvd2VsKHByZXZjaCkpIHsKKyAgICAgICAgICAgIC8vIHdlIG5vdyByZWFycmFuZ2UgdW5jb25kaXRpb25hbGx5IGRvIG5vdCBjaGVjayBmb3IgYmFzZSBjb25zb25hbnQKKyAgICAgICAgICAgIGlmIChwcmV2Y2ggIT0gQ2hhcmFjdGVySXRlcmF0b3IuRE9ORSkgeworICAgICAgICAgICAgICAgIG5leHRDaGFyKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBUcmVhdCBUaGFpIGFzIGEgbGVuZ3RoIG9uZSBleHBhbnNpb24KKyAgICAgICAgICAgIHJldHVybiBjb2xsYXRvci5tX2V4cGFuc2lvbl9bZ2V0RXhwYW5zaW9uT2Zmc2V0KGNvbGxhdG9yLCBjZSldOyAgIAorICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBNb3ZlIHRoZSBwcmV2b3dlbCBhbmQgdGhlIGZvbGxvd2luZyBiYXNlIENvbnNvbmFudCBpbnRvIHRoZQorICAgICAgICAvLyBub3JtYWxpemF0aW9uIGJ1ZmZlciB3aXRoIHRoZWlyIG9yZGVyIHN3YXBwZWQKKyAgICAgICAgLy8gYnVmZmVyIGlzIGFsd2F5cyBjbGVhbiB3aGVuIHdlIGFyZSBpbiB0aGUgc291cmNlIHN0cmluZworICAgICAgICBtX2J1ZmZlcl8uYXBwZW5kKGNoKTsKKyAgICAgICAgbV9idWZmZXJfLmFwcGVuZChwcmV2Y2gpOworICAgICAgICBtX2J1ZmZlck9mZnNldF8gPSAyOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIGlmIChtX3NvdXJjZV8uZ2V0SW5kZXgoKSA9PSAwKSB7CisgICAgICAgICAgICBtX0ZDRFN0YXJ0XyA9IDA7CisgICAgICAgICAgICBtX0ZDRExpbWl0XyA9IDI7CisgICAgICAgIH0gCisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbV9GQ0RTdGFydF8gPSBtX3NvdXJjZV8uZ2V0SW5kZXgoKTsKKyAgICAgICAgICAgIG1fRkNETGltaXRfID0gbV9GQ0RTdGFydF8gKyAyOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gSUdOT1JBQkxFOworICAgIH0KKyAgICAgICAgCisgICAgLyoqCisgICAgICogU3BlY2lhbCBwcm9jZXNzaW5nIGlzIGdldHRpbmcgYSBDRSB0aGF0IGlzIHByZWNlZGVkIGJ5IGEgY2VydGFpbiBwcmVmaXguCisgICAgICogQ3VycmVudGx5IHRoaXMgaXMgb25seSBuZWVkZWQgZm9yIG9wdGltaXppbmcgSmFwYW5lc2UgbGVuZ3RoIGFuZCAKKyAgICAgKiBpdGVyYXRpb24gbWFya3MuIFdoZW4gd2UgZW5jb3V0ZXIgYSBzcGVjaWFsIHByb2Nlc3NpbmcgdGFnLCB3ZSBnbyAKKyAgICAgKiBiYWNrd2FyZHMgYW5kIHRyeSB0byBzZWUgaWYgd2UgaGF2ZSBhIG1hdGNoLiBDb250cmFjdGlvbiB0YWJsZXMgYXJlIHVzZWQgCisgICAgICogLSBzbyB0aGUgd2hvbGUgcHJvY2VzcyBpcyBub3QgdW5saWtlIGNvbnRyYWN0aW9uLiBwcmVmaXggZGF0YSBpcyBzdG9yZWQgCisgICAgICogYmFja3dhcmRzIGluIHRoZSB0YWJsZS4KKyAgICAgKiBAcGFyYW0gY29sbGF0b3IgY3VycmVudCBjb2xsYXRvcgorICAgICAqIEBwYXJhbSBjZSBjdXJyZW50IGNlCisgICAgICogQHJldHVybiBwcmV2aW91cyBjZQorICAgICAqLworICAgIHByaXZhdGUgaW50IHByZXZpb3VzU3BlY2lhbFByZWZpeChSdWxlQmFzZWRDb2xsYXRvciBjb2xsYXRvciwgaW50IGNlKQorICAgIHsKKyAgICAgICAgYmFja3VwSW50ZXJuYWxTdGF0ZShtX3V0aWxTcGVjaWFsQmFja1VwXyk7CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAvLyBwb3NpdGlvbiBvdXJzZWx2ZXMgYXQgdGhlIGJlZ2luaW5nIG9mIGNvbnRyYWN0aW9uIHNlcXVlbmNlIAorICAgICAgICAgICAgaW50IG9mZnNldCA9IGdldENvbnRyYWN0aW9uT2Zmc2V0KGNvbGxhdG9yLCBjZSk7CisgICAgICAgICAgICBpbnQgZW50cnlvZmZzZXQgPSBvZmZzZXQ7CisgICAgICAgICAgICBpZiAoaXNCYWNrd2FyZHNTdGFydCgpKSB7CisgICAgICAgICAgICAgICAgY2UgPSBjb2xsYXRvci5tX2NvbnRyYWN0aW9uQ0VfW29mZnNldF07CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjaGFyIHByZXZjaCA9IHByZXZpb3VzQ2hhcigpOworICAgICAgICAgICAgd2hpbGUgKHByZXZjaCA+IGNvbGxhdG9yLm1fY29udHJhY3Rpb25JbmRleF9bb2Zmc2V0XSkgeyAKKyAgICAgICAgICAgICAgICAvLyBzaW5jZSBjb250cmFjdGlvbiBjb2RlcG9pbnRzIGFyZSBvcmRlcmVkLCB3ZSBza2lwIGFsbCB0aGF0IAorICAgICAgICAgICAgICAgIC8vIGFyZSBzbWFsbGVyCisgICAgICAgICAgICAgICAgb2Zmc2V0ICsrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHByZXZjaCA9PSBjb2xsYXRvci5tX2NvbnRyYWN0aW9uSW5kZXhfW29mZnNldF0pIHsKKyAgICAgICAgICAgICAgICBjZSA9IGNvbGxhdG9yLm1fY29udHJhY3Rpb25DRV9bb2Zmc2V0XTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIC8vIGlmIHRoZXJlIGlzIGEgY29tcGxldGVseSBpZ25vcmFibGUgY29kZSBwb2ludCBpbiB0aGUgbWlkZGxlIAorICAgICAgICAgICAgICAgIC8vIG9mIGEgcHJlZml4LCB3ZSBuZWVkIHRvIGFjdCBhcyBpZiBpdCdzIG5vdCB0aGVyZSBhc3N1bXB0aW9uOiAKKyAgICAgICAgICAgICAgICAvLyAncmVhbCcgbm9uY2hhcmFjdGVycyAoKmZmZmUsICpmZmZmLCBmZGQwLWZkZWYgYXJlIHNldCB0byAKKyAgICAgICAgICAgICAgICAvLyB6ZXJvKSAKKyAgICAgICAgICAgICAgICAvLyBsb25lIHN1cnJvZ2F0ZXMgY2Fubm90IGJlIHNldCB0byB6ZXJvIGFzIGl0IHdvdWxkIGJyZWFrIAorICAgICAgICAgICAgICAgIC8vIG90aGVyIHByb2Nlc3NpbmcgCisgICAgICAgICAgICAgICAgaW50IGlzWmVyb0NFID0gY29sbGF0b3IubV90cmllXy5nZXRMZWFkVmFsdWUocHJldmNoKTsgCisgICAgICAgICAgICAgICAgLy8gaXQncyBlYXN5IGZvciBCTVAgY29kZSBwb2ludHMgCisgICAgICAgICAgICAgICAgaWYgKGlzWmVyb0NFID09IDApIHsgCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAKKyAgICAgICAgICAgICAgICB9IAorICAgICAgICAgICAgICAgIGVsc2UgaWYgKFVURjE2LmlzVHJhaWxTdXJyb2dhdGUocHJldmNoKSAKKyAgICAgICAgICAgICAgICAgICAgICAgICB8fCBVVEYxNi5pc0xlYWRTdXJyb2dhdGUocHJldmNoKSkgeyAKKyAgICAgICAgICAgICAgICAgICAgLy8gZm9yIHN1cHBsZW1lbnRhcnkgY29kZSBwb2ludHMsIHdlIGhhdmUgdG8gY2hlY2sgdGhlIG5leHQgb25lIAorICAgICAgICAgICAgICAgICAgICAvLyBzaXR1YXRpb25zIHdoZXJlIHdlIGFyZSBnb2luZyB0byBpZ25vcmUgCisgICAgICAgICAgICAgICAgICAgIC8vIDEuIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nOiBzY2hhciBpcyBhIGxvbmUgc3Vycm9nYXRlIAorICAgICAgICAgICAgICAgICAgICAvLyAyLiBzY2hhciBpcyBhIGxvbmUgc3Vycm9nYXRlIAorICAgICAgICAgICAgICAgICAgICAvLyAzLiBzY2hhciBpcyBhIHRyYWlsIHN1cnJvZ2F0ZSBpbiBhIHZhbGlkIHN1cnJvZ2F0ZSAKKyAgICAgICAgICAgICAgICAgICAgLy8gICAgc2VxdWVuY2UgdGhhdCBpcyBleHBsaWNpdGx5IHNldCB0byB6ZXJvLiAKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0JhY2t3YXJkc1N0YXJ0KCkpIHsgCisgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGxlYWQgPSBwcmV2aW91c0NoYXIoKTsgCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVVRGMTYuaXNMZWFkU3Vycm9nYXRlKGxlYWQpKSB7IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzWmVyb0NFID0gY29sbGF0b3IubV90cmllXy5nZXRMZWFkVmFsdWUobGVhZCk7IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSdWxlQmFzZWRDb2xsYXRvci5nZXRUYWcoaXNaZXJvQ0UpIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PSBSdWxlQmFzZWRDb2xsYXRvci5DRV9TVVJST0dBVEVfVEFHXykgeyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZpbmFsQ0UgPSBjb2xsYXRvci5tX3RyaWVfLmdldFRyYWlsVmFsdWUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzWmVyb0NFICYgMHhGRkZGRkYsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2Y2gpOyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbmFsQ0UgPT0gMCkgeyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgaXMgYSByZWFsLCBhc3NpZ25lZCBjb21wbGV0ZWx5IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWdub3JhYmxlIGNvZGUgcG9pbnQgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IAorICAgICAgICAgICAgICAgICAgICAgICAgfSAKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0Q2hhcigpOyAvLyByZXZlcnQgdG8gb3JpZ2luYWwgb2Zmc2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9uZSBzdXJyb2dhdGUsIGNvbXBsZXRlbHkgaWdub3JhYmxlIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gCisgICAgICAgICAgICAgICAgICAgICAgICBuZXh0Q2hhcigpOyAvLyByZXZlcnQgdG8gb3JpZ2luYWwgb2Zmc2V0CisgICAgICAgICAgICAgICAgICAgIH0gCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb25lIHN1cnJvZ2F0ZSBhdCB0aGUgYmVnZ2luaW5nLCBjb21wbGV0ZWx5IGlnbm9yYWJsZSAKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsgCisgICAgICAgICAgICAgICAgICAgIH0gCisgICAgICAgICAgICAgICAgfSAKKworICAgICAgICAgICAgICAgIC8vIGNoYXIgd2FzIG5vdCBpbiB0aGUgdGFibGUuIHByZWZpeCBub3QgZm91bmQKKyAgICAgICAgICAgICAgICBjZSA9IGNvbGxhdG9yLm1fY29udHJhY3Rpb25DRV9bZW50cnlvZmZzZXRdOworICAgICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgICAgIGlmICghaXNTcGVjaWFsUHJlZml4VGFnKGNlKSkgeworICAgICAgICAgICAgICAgIC8vIGNoYXIgd2FzIGluIHRoZSBjb250cmFjdGlvbiB0YWJsZSwgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGNlIAorICAgICAgICAgICAgICAgIC8vIGlzIG5vdCBhIHByZWZpeCBjZS4gIFdlIGZvdW5kIHRoZSBwcmVmaXgsIGJyZWFrIG91dCBvZiBsb29wLCAKKyAgICAgICAgICAgICAgICAvLyB0aGlzIGNlIHdpbGwgZW5kIHVwIGJlaW5nIHJldHVybmVkLiAKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICB1cGRhdGVJbnRlcm5hbFN0YXRlKG1fdXRpbFNwZWNpYWxCYWNrVXBfKTsKKyAgICAgICAgcmV0dXJuIGNlOworICAgIH0KKyAgICAgICAgCisgICAgLyoqCisgICAgICogUmV0cmlldmVzIHRoZSBwcmV2aW91cyBjb250cmFjdGlvbiBjZS4gVG8gZW5zdXJlIHRoYXQgdGhlIGJhY2t3YXJkcyBhbmQgCisgICAgICogZm9yd2FyZHMgaXRlcmF0aW9uIG1hdGNoZXMsIHdlIHRha2UgdGhlIGN1cnJlbnQgcmVnaW9uIG9mIG1vc3QgcG9zc2libGUgCisgICAgICogbWF0Y2ggYW5kIHBhc3MgaXQgdGhyb3VnaCB0aGUgZm9yd2FyZCBpdGVyYXRpb24uIFRoaXMgd2lsbCBlbnN1cmUgdGhhdCAKKyAgICAgKiB0aGUgb2JzdGluYXRlIHByb2JsZW0gb2Ygb3ZlcmxhcHBpbmcgY29udHJhY3Rpb25zIHdpbGwgbm90IG9jY3VyLgorICAgICAqIEBwYXJhbSBjb2xsYXRvciBjdXJyZW50IGNvbGxhdG9yCisgICAgICogQHBhcmFtIGNlIGN1cnJlbnQgY2UKKyAgICAgKiBAcGFyYW0gY2ggY3VycmVudCBjaGFyYWN0ZXIKKyAgICAgKiBAcmV0dXJuIHByZXZpb3VzIGNvbnRyYWN0aW9uIGNlCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgcHJldmlvdXNDb250cmFjdGlvbihSdWxlQmFzZWRDb2xsYXRvciBjb2xsYXRvciwgaW50IGNlLCBjaGFyIGNoKQorICAgIHsKKyAgICAgICAgbV91dGlsU3RyaW5nQnVmZmVyXy5zZXRMZW5ndGgoMCk7CisgICAgICAgIHdoaWxlIChjb2xsYXRvci5pc1Vuc2FmZShjaCkpIHsKKyAgICAgICAgICAgIG1fdXRpbFN0cmluZ0J1ZmZlcl8uaW5zZXJ0KDAsIGNoKTsKKyAgICAgICAgICAgIGNoID0gcHJldmlvdXNDaGFyKCk7CisgICAgICAgICAgICBpZiAoaXNCYWNrd2FyZHNTdGFydCgpKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLy8gYWRkcyB0aGUgaW5pdGlhbCBiYXNlIGNoYXJhY3RlciB0byB0aGUgc3RyaW5nCisgICAgICAgIG1fdXRpbFN0cmluZ0J1ZmZlcl8uaW5zZXJ0KDAsIGNoKTsgICAKKyAgICAgICAgCisgICAgICAgIC8vIGEgbmV3IGNvbGxhdGlvbiBlbGVtZW50IGl0ZXJhdG9yIGlzIHVzZWQgdG8gc2ltcGx5IHRoaW5ncywgc2luY2UgCisgICAgICAgIC8vIHVzaW5nIHRoZSBjdXJyZW50IGNvbGxhdGlvbiBlbGVtZW50IGl0ZXJhdG9yIHdpbGwgbWVhbiB0aGF0IHRoZSAKKyAgICAgICAgLy8gZm9yd2FyZCBhbmQgYmFja3dhcmRzIGl0ZXJhdGlvbiB3aWxsIHNoYXJlIGFuZCBjaGFuZ2UgdGhlIHNhbWUgCisgICAgICAgIC8vIGJ1ZmZlcnMuIGl0IGlzIGdvaW5nIHRvIGJlIHBhaW5mdWwuIAorICAgICAgICBpbnQgb3JpZ2luYWxkZWNvbXAgPSBjb2xsYXRvci5nZXREZWNvbXBvc2l0aW9uKCk7CisgICAgICAgIC8vIGZvciBmYXN0ZXIgYWNjZXNzLCBzaW5jZSBzdHJpbmcgd291bGQgaGF2ZSBiZWVuIG5vcm1hbGl6ZWQgYWJvdmUKKyAgICAgICAgY29sbGF0b3Iuc2V0RGVjb21wb3NpdGlvbihDb2xsYXRvci5OT19ERUNPTVBPU0lUSU9OKTsgCisgICAgICAgIGlmIChtX3V0aWxDb2xFSXRlcl8gPT0gbnVsbCkgeworICAgICAgICAgICAgbV91dGlsQ29sRUl0ZXJfID0gbmV3IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXRpbFN0cmluZ0J1ZmZlcl8udG9TdHJpbmcoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxhdG9yKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1fdXRpbENvbEVJdGVyXy5tX2NvbGxhdG9yXyA9IGNvbGxhdG9yOworICAgICAgICAgICAgbV91dGlsQ29sRUl0ZXJfLnNldFRleHQobV91dGlsU3RyaW5nQnVmZmVyXy50b1N0cmluZygpKTsKKyAgICAgICAgfQorICAgICAgICBjZSA9IG1fdXRpbENvbEVJdGVyXy5uZXh0KCk7CisgICAgICAgIG1fQ0VCdWZmZXJTaXplXyA9IDA7CisgICAgICAgIHdoaWxlIChjZSAhPSBOVUxMT1JERVIpIHsKKyAgICAgICAgICAgIGlmIChtX0NFQnVmZmVyU2l6ZV8gPT0gbV9DRUJ1ZmZlcl8ubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgLy8gaW5jcmVhc2luZyBjZWJ1ZmZlciBzaXplCisgICAgICAgICAgICAgICAgICAgIGludCB0ZW1wYnVmZmVyW10gPSBuZXcgaW50W21fQ0VCdWZmZXJfLmxlbmd0aCArIDUwXTsKKyAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShtX0NFQnVmZmVyXywgMCwgdGVtcGJ1ZmZlciwgMCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9DRUJ1ZmZlcl8ubGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgbV9DRUJ1ZmZlcl8gPSB0ZW1wYnVmZmVyOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTExPUkRFUjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX0NFQnVmZmVyX1ttX0NFQnVmZmVyU2l6ZV8gKytdID0gY2U7CisgICAgICAgICAgICBjZSA9IG1fdXRpbENvbEVJdGVyXy5uZXh0KCk7CisgICAgICAgIH0KKyAgICAgICAgY29sbGF0b3Iuc2V0RGVjb21wb3NpdGlvbihvcmlnaW5hbGRlY29tcCk7ICAgICAgIAorICAgICAgICBtX0NFQnVmZmVyT2Zmc2V0XyA9IG1fQ0VCdWZmZXJTaXplXyAtIDE7CisgICAgICAgIHJldHVybiBtX0NFQnVmZmVyX1ttX0NFQnVmZmVyT2Zmc2V0X107CisgICAgfQorICAgICAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBwcmV2aW91cyBsb25nIHByaW1hcnkgY2VzCisgICAgICogQHBhcmFtIGNlIGxvbmcgcHJpbWFyeSBjZQorICAgICAqIEByZXR1cm4gcHJldmlvdXMgbG9uZyBwcmltYXJ5IGNlcworICAgICAqLworICAgIHByaXZhdGUgaW50IHByZXZpb3VzTG9uZ1ByaW1hcnkoaW50IGNlKQorICAgIHsKKyAgICAgICAgbV9DRUJ1ZmZlclNpemVfID0gMDsKKyAgICAgICAgbV9DRUJ1ZmZlcl9bbV9DRUJ1ZmZlclNpemVfICsrXSA9IAorICAgICAgICAgICAgKChjZSAmIDB4RkZGRjAwKSA8PCA4KSB8IChDRV9CWVRFX0NPTU1PTl8gPDwgOCkgfCBDRV9CWVRFX0NPTU1PTl87CisgICAgICAgIG1fQ0VCdWZmZXJfW21fQ0VCdWZmZXJTaXplXyArK10gPSAoKGNlICYgMHhGRikgPDwgMjQpIAorICAgICAgICAgICAgfCBSdWxlQmFzZWRDb2xsYXRvci5DRV9DT05USU5VQVRJT05fTUFSS0VSXzsKKyAgICAgICAgbV9DRUJ1ZmZlck9mZnNldF8gPSBtX0NFQnVmZmVyU2l6ZV8gLSAxOworICAgICAgICByZXR1cm4gbV9DRUJ1ZmZlcl9bbV9DRUJ1ZmZlck9mZnNldF9dOworICAgIH0KKyAgICAgICAgCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgcHJldmlvdXMgZXhwYW5zaW9uIGNlcworICAgICAqIEBwYXJhbSBjb2xsYXRvciBjdXJyZW50IGNvbGxhdG9yCisgICAgICogQHBhcmFtIGNlIGN1cnJlbnQgY2UKKyAgICAgKiBAcmV0dXJuIHByZXZpb3VzIGV4cGFuc2lvbiBjZQorICAgICAqLworICAgIHByaXZhdGUgaW50IHByZXZpb3VzRXhwYW5zaW9uKFJ1bGVCYXNlZENvbGxhdG9yIGNvbGxhdG9yLCBpbnQgY2UpCisgICAgeworICAgICAgICAvLyBmaW5kIHRoZSBvZmZzZXQgdG8gZXhwYW5zaW9uIHRhYmxlCisgICAgICAgIGludCBvZmZzZXQgPSBnZXRFeHBhbnNpb25PZmZzZXQoY29sbGF0b3IsIGNlKTsKKyAgICAgICAgbV9DRUJ1ZmZlclNpemVfID0gZ2V0RXhwYW5zaW9uQ291bnQoY2UpOworICAgICAgICBpZiAobV9DRUJ1ZmZlclNpemVfICE9IDApIHsKKyAgICAgICAgICAgIC8vIGxlc3MgdGhhbiAxNiBlbGVtZW50cyBpbiBleHBhbnNpb24KKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9DRUJ1ZmZlclNpemVfOyBpICsrKSB7CisgICAgICAgICAgICAgICAgbV9DRUJ1ZmZlcl9baV0gPSBjb2xsYXRvci5tX2V4cGFuc2lvbl9bb2Zmc2V0ICsgaV07CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBudWxsIHRlcm1pbmF0ZWQgY2VzCisgICAgICAgICAgICB3aGlsZSAoY29sbGF0b3IubV9leHBhbnNpb25fW29mZnNldCArIG1fQ0VCdWZmZXJTaXplX10gIT0gMCkgeworICAgICAgICAgICAgICAgIG1fQ0VCdWZmZXJfW21fQ0VCdWZmZXJTaXplX10gPSAKKyAgICAgICAgICAgICAgICAgICAgY29sbGF0b3IubV9leHBhbnNpb25fW29mZnNldCArIG1fQ0VCdWZmZXJTaXplX107CisgICAgICAgICAgICAgICAgbV9DRUJ1ZmZlclNpemVfICsrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIG1fQ0VCdWZmZXJPZmZzZXRfID0gbV9DRUJ1ZmZlclNpemVfIC0gMTsKKyAgICAgICAgcmV0dXJuIG1fQ0VCdWZmZXJfW21fQ0VCdWZmZXJPZmZzZXRfXTsKKyAgICB9CisgICAgICAgIAorICAgIC8qKgorICAgICAqIFJldHVybnMgcHJldmlvdXMgaGFuZ3VsIGNlcworICAgICAqIEBwYXJhbSBjb2xsYXRvciBjdXJyZW50IGNvbGxhdG9yCisgICAgICogQHBhcmFtIGNoIGN1cnJlbnQgY2hhcmFjdGVyCisgICAgICogQHJldHVybiBwcmV2aW91cyBoYW5ndWwgY2UKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBwcmV2aW91c0hhbmd1bChSdWxlQmFzZWRDb2xsYXRvciBjb2xsYXRvciwgY2hhciBjaCkKKyAgICB7CisgICAgICAgIGNoYXIgTCA9IChjaGFyKShjaCAtIEhBTkdVTF9TQkFTRV8pOworICAgICAgICAvLyB3ZSBkbyBpdCBpbiB0aGlzIG9yZGVyIHNpbmNlIHNvbWUgY29tcGlsZXJzIGNhbiBkbyAlIGFuZCAvIGluIG9uZQorICAgICAgICAvLyBvcGVyYXRpb24KKyAgICAgICAgY2hhciBUID0gKGNoYXIpKEwgJSBIQU5HVUxfVENPVU5UXyk7CisgICAgICAgIEwgLz0gSEFOR1VMX1RDT1VOVF87CisgICAgICAgIGNoYXIgViA9IChjaGFyKShMICUgSEFOR1VMX1ZDT1VOVF8pOworICAgICAgICBMIC89IEhBTkdVTF9WQ09VTlRfOworICAgICAgICAKKyAgICAgICAgLy8gb2Zmc2V0IHRoZW0KKyAgICAgICAgTCArPSBIQU5HVUxfTEJBU0VfOworICAgICAgICBWICs9IEhBTkdVTF9WQkFTRV87CisgICAgICAgIFQgKz0gSEFOR1VMX1RCQVNFXzsKKyAgICAgICAgCisgICAgICAgIG1fQ0VCdWZmZXJTaXplXyA9IDA7CisgICAgICAgIGlmICghY29sbGF0b3IubV9pc0phbW9TcGVjaWFsXykgeworICAgICAgICAgICAgbV9DRUJ1ZmZlcl9bbV9DRUJ1ZmZlclNpemVfICsrXSA9CisgICAgICAgICAgICAgICAgY29sbGF0b3IubV90cmllXy5nZXRMZWFkVmFsdWUoTCk7CisgICAgICAgICAgICBtX0NFQnVmZmVyX1ttX0NFQnVmZmVyU2l6ZV8gKytdID0KKyAgICAgICAgICAgICAgICBjb2xsYXRvci5tX3RyaWVfLmdldExlYWRWYWx1ZShWKTsKKyAgICAgICAgICAgIGlmIChUICE9IEhBTkdVTF9UQkFTRV8pIHsKKyAgICAgICAgICAgICAgICBtX0NFQnVmZmVyX1ttX0NFQnVmZmVyU2l6ZV8gKytdID0KKyAgICAgICAgICAgICAgICAgICAgY29sbGF0b3IubV90cmllXy5nZXRMZWFkVmFsdWUoVCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX0NFQnVmZmVyT2Zmc2V0XyA9IG1fQ0VCdWZmZXJTaXplXyAtIDE7CisgICAgICAgICAgICByZXR1cm4gbV9DRUJ1ZmZlcl9bbV9DRUJ1ZmZlck9mZnNldF9dOworICAgICAgICB9IAorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIFNpbmNlIEhhbmd1bHMgcGFzcyB0aGUgRkNEIGNoZWNrLCBpdCBpcyBndWFyYW50ZWVkIHRoYXQgd2Ugd29uJ3QgCisgICAgICAgICAgICAvLyBiZSBpbiB0aGUgbm9ybWFsaXphdGlvbiBidWZmZXIgaWYgc29tZXRoaW5nIGxpa2UgdGhpcyBoYXBwZW5zCisgICAgICAgICAgICAvLyBNb3ZlIEphbW9zIGludG8gbm9ybWFsaXphdGlvbiBidWZmZXIKKyAgICAgICAgICAgIG1fYnVmZmVyXy5hcHBlbmQoTCk7CisgICAgICAgICAgICBtX2J1ZmZlcl8uYXBwZW5kKFYpOworICAgICAgICAgICAgaWYgKFQgIT0gSEFOR1VMX1RCQVNFXykgeworICAgICAgICAgICAgICAgIG1fYnVmZmVyXy5hcHBlbmQoVCk7CisgICAgICAgICAgICB9IAorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBtX0ZDRFN0YXJ0XyA9IG1fc291cmNlXy5nZXRJbmRleCgpOworICAgICAgICAgICAgbV9GQ0RMaW1pdF8gPSBtX0ZDRFN0YXJ0XyArIDE7CisgICAgICAgICAgICByZXR1cm4gSUdOT1JBQkxFOworICAgICAgICB9CisgICAgfQorICAgICAgICAKKyAgICAvKioKKyAgICAgKiBHZXRzIGltcGxpY2l0IGNvZGVwb2ludCBjZXMKKyAgICAgKiBAcGFyYW0gY29kZXBvaW50IGN1cnJlbnQgY29kZXBvaW50CisgICAgICogQHJldHVybiBpbXBsaWNpdCBjb2RlcG9pbnQgY2VzCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgcHJldmlvdXNJbXBsaWNpdChpbnQgY29kZXBvaW50KQorICAgIHsKKyAgICAgICAgaWYgKCFVQ2hhcmFjdGVyLmlzTGVnYWwoY29kZXBvaW50KSkgeworICAgICAgICAgICAgcmV0dXJuIElHTk9SQUJMRTsgLy8gaWxsZWdhbCBjb2RlIHZhbHVlLCBjb21wbGV0ZWx5IGlnbm9yZWFibGUhIAorICAgICAgICB9CisgICAgICAgIGludCByZXN1bHQgPSBnZXRJbXBsaWNpdFByaW1hcnkoY29kZXBvaW50KTsKKyAgICAgICAgbV9DRUJ1ZmZlclNpemVfID0gMjsKKyAgICAgICAgbV9DRUJ1ZmZlck9mZnNldF8gPSAxOworICAgICAgICBtX0NFQnVmZmVyX1swXSA9IChyZXN1bHQgJiBSdWxlQmFzZWRDb2xsYXRvci5DRV9QUklNQVJZX01BU0tfKSAKKyAgICAgICAgICAgICAgICAgICAgICAgICB8IDB4MDAwMDA1MDU7CisgICAgICAgIG1fQ0VCdWZmZXJfWzFdID0gKChyZXN1bHQgJiAweDAwMDBGRkZGKSA8PCAxNikgfCAweDAwMDAwMEMwOworICAgICAgICByZXR1cm4gbV9DRUJ1ZmZlcl9bMV07CisgICAgfQorICAgICAgICAKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBwcmV2aW91cyBzdXJyb2dhdGUgY2UKKyAgICAgKiBAcGFyYW0gY2ggY3VycmVudCBjaGFyYWN0ZXIKKyAgICAgKiBAcmV0dXJuIHByZXZpb3VzIHN1cnJvZ2F0ZSBjZQorICAgICAqLworICAgIHByaXZhdGUgaW50IHByZXZpb3VzU3Vycm9nYXRlKGNoYXIgY2gpCisgICAgeworICAgICAgICBpZiAoaXNCYWNrd2FyZHNTdGFydCgpKSB7CisgICAgICAgICAgICAvLyB3ZSBhcmUgYXQgdGhlIHN0YXJ0IG9mIHRoZSBzdHJpbmcsIHdyb25nIHBsYWNlIHRvIGJlIGF0CisgICAgICAgICAgICByZXR1cm4gSUdOT1JBQkxFOworICAgICAgICB9CisgICAgICAgIGNoYXIgcHJldmNoID0gcHJldmlvdXNDaGFyKCk7IAorICAgICAgICAvLyBIYW5kbGVzIEhhbiBhbmQgU3VwcGxlbWVudGFyeSBjaGFyYWN0ZXJzIGhlcmUuCisgICAgICAgIGlmIChVVEYxNi5pc0xlYWRTdXJyb2dhdGUocHJldmNoKSkgeworICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzSW1wbGljaXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXJQcm9wZXJ0eS5nZXRSYXdTdXBwbGVtZW50YXJ5KHByZXZjaCwgY2gpKTsKKyAgICAgICAgfSAKKyAgICAgICAgaWYgKHByZXZjaCAhPSBDaGFyYWN0ZXJJdGVyYXRvci5ET05FKSB7CisgICAgICAgICAgICBuZXh0Q2hhcigpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBJR05PUkFCTEU7IC8vIGNvbXBsZXRlbHkgaWdub3JhYmxlIAorICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAvKioKKyAgICAgKiA8cD5TcGVjaWFsIENFIG1hbmFnZW1lbnQuIEV4cGFuc2lvbnMsIGNvbnRyYWN0aW9ucyBldGMuLi48L3A+CisgICAgICogQHBhcmFtIGNvbGxhdG9yIGNhbiBiZSBwbGFpbiBVQ0EgCisgICAgICogQHBhcmFtIGNlIGN1cnJlbnQgY2UKKyAgICAgKiBAcGFyYW0gY2ggY3VycmVudCBjaGFyYWN0ZXIKKyAgICAgKiBAcmV0dXJuIHByZXZpb3VzIHNwZWNpYWwgY2UKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBwcmV2aW91c1NwZWNpYWwoUnVsZUJhc2VkQ29sbGF0b3IgY29sbGF0b3IsIGludCBjZSwgY2hhciBjaCkKKyAgICB7CisgICAgICAgIHdoaWxlKHRydWUpIHsKKyAgICAgICAgICAgIC8vIHRoZSBvbmx5IGNlcyB0aGF0IGxvb3BzIGFyZSB0aGFpLCBzcGVjaWFsIHByZWZpeCBhbmQgCisgICAgICAgICAgICAvLyBjb250cmFjdGlvbnMgCisgICAgICAgICAgICBzd2l0Y2ggKFJ1bGVCYXNlZENvbGxhdG9yLmdldFRhZyhjZSkpIHsKKyAgICAgICAgICAgIGNhc2UgQ0VfTk9UX0ZPVU5EX1RBR186ICAvLyB0aGlzIHRhZyBhbHdheXMgcmV0dXJucworICAgICAgICAgICAgICAgIHJldHVybiBjZTsKKyAgICAgICAgICAgIGNhc2UgUnVsZUJhc2VkQ29sbGF0b3IuQ0VfU1VSUk9HQVRFX1RBR186IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlc3NlbnRpYWx5IGEgZGlzZW5nYWdlZCBsZWFkIHN1cnJvZ2F0ZS4gYSBicm9rZW4gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNlcXVlbmNlIHdhcyBlbmNvdW50ZXJlZCBhbmQgdGhpcyBpcyBhbiBlcnJvcgorICAgICAgICAgICAgICAgIHJldHVybiBJR05PUkFCTEU7CisgICAgICAgICAgICBjYXNlIENFX1RIQUlfVEFHXzoKKyAgICAgICAgICAgICAgICBjZSA9IHByZXZpb3VzVGhhaShjb2xsYXRvciwgY2UsIGNoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ0VfU1BFQ19QUk9DX1RBR186CisgICAgICAgICAgICAgICAgY2UgPSBwcmV2aW91c1NwZWNpYWxQcmVmaXgoY29sbGF0b3IsIGNlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ0VfQ09OVFJBQ1RJT05fVEFHXzoKKyAgICAgICAgICAgICAgICAvLyBtYXkgbG9vcCBmb3IgZmlyc3QgY2hhcmFjdGVyIGUuZy4gIjB4MGY3MSIgZm9yIGVuZ2xpc2gKKyAgICAgICAgICAgICAgICBpZiAoaXNCYWNrd2FyZHNTdGFydCgpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIHN0YXJ0IG9mIHN0cmluZyBvciB0aGlzIGlzIG5vdCB0aGUgZW5kIG9mIGFueSBjb250cmFjdGlvbgorICAgICAgICAgICAgICAgICAgICBjZSA9IGNvbGxhdG9yLm1fY29udHJhY3Rpb25DRV9bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldENvbnRyYWN0aW9uT2Zmc2V0KGNvbGxhdG9yLCBjZSldOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzQ29udHJhY3Rpb24oY29sbGF0b3IsIGNlLCBjaCk7IC8vIGVsc2UKKyAgICAgICAgICAgIGNhc2UgQ0VfTE9OR19QUklNQVJZX1RBR186CisgICAgICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzTG9uZ1ByaW1hcnkoY2UpOworICAgICAgICAgICAgY2FzZSBDRV9FWFBBTlNJT05fVEFHXzogLy8gYWx3YXlzIHJldHVybnMKKyAgICAgICAgICAgICAgICByZXR1cm4gcHJldmlvdXNFeHBhbnNpb24oY29sbGF0b3IsIGNlKTsKKyAgICAgICAgICAgIGNhc2UgQ0VfSEFOR1VMX1NZTExBQkxFX1RBR186IC8vIEFDMDAtRDdBRgorICAgICAgICAgICAgICAgIHJldHVybiBwcmV2aW91c0hhbmd1bChjb2xsYXRvciwgY2gpOworICAgICAgICAgICAgY2FzZSBDRV9MRUFEX1NVUlJPR0FURV9UQUdfOiAgLy8gRDgwMC1EQkZGCisgICAgICAgICAgICAgICAgcmV0dXJuIElHTk9SQUJMRTsgLy8gYnJva2VuIHN1cnJvZ2F0ZSBzZXF1ZW5jZQorICAgICAgICAgICAgY2FzZSBDRV9UUkFJTF9TVVJST0dBVEVfVEFHXzogLy8gREMwMC1ERkZGCisgICAgICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzU3Vycm9nYXRlKGNoKTsKKyAgICAgICAgICAgIGNhc2UgQ0VfQ0pLX0lNUExJQ0lUX1RBR186IAorICAgICAgICAgICAgICAgIC8vIDB4MzQwMC0weDREQjUsIDB4NEUwMC0weDlGQTUsIDB4RjkwMC0weEZBMkQKKyAgICAgICAgICAgICAgICByZXR1cm4gcHJldmlvdXNJbXBsaWNpdChjaCk7CisgICAgICAgICAgICBjYXNlIENFX0lNUExJQ0lUX1RBR186IC8vIGV2ZXJ5dGhpbmcgdGhhdCBpcyBub3QgZGVmaW5lZAorICAgICAgICAgICAgICAgIC8vIFVDQSBpcyBmaWxsZWQgd2l0aCB0aGVzZS4gVGFpbG9yaW5ncyBhcmUgTk9UX0ZPVU5EIAorICAgICAgICAgICAgICAgIHJldHVybiBwcmV2aW91c0ltcGxpY2l0KGNoKTsKKyAgICAgICAgICAgIGNhc2UgQ0VfQ0hBUlNFVF9UQUdfOiAvLyB0aGlzIHRhZyBhbHdheXMgcmV0dXJucworICAgICAgICAgICAgICAgIHJldHVybiBDRV9OT1RfRk9VTkRfOworICAgICAgICAgICAgZGVmYXVsdDogLy8gdGhpcyB0YWcgYWx3YXlzIHJldHVybnMKKyAgICAgICAgICAgICAgICBjZSA9IElHTk9SQUJMRTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghUnVsZUJhc2VkQ29sbGF0b3IuaXNTcGVjaWFsKGNlKSkgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBjZTsKKyAgICB9CisgICAgCisgICAgLyoqIAorICAgICAqIEdFVCBJTVBMSUNJVCBQUklNQVJZIFdFSUdIVFMKKyAgICAgKiBAcGFyYW0gY3AgY29kZXBvaW50CisgICAgICogQHBhcmFtIHZhbHVlIGlzIGxlZnQganVzdGlmaWVkIHByaW1hcnkga2V5CisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IGdldEltcGxpY2l0UHJpbWFyeShpbnQgY3ApIAorICAgIHsKKyAgICAgICAgY3AgPSBzd2FwQ0pLKGNwKTsKKyAgICAgICAgCisgICAgICAgIC8vaWYgKERFQlVHKSBTeXN0ZW0ub3V0LnByaW50bG4oIkNKSyBzd2FwcGVkOiAiICsgVXRpbGl0eS5oZXgoY3ApKTsKKyAgICAgICAgLy8gd2Ugbm93IGhhdmUgYSByYW5nZSBvZiBudW1iZXJzIGZyb20gMCB0byAyMUZGRkYuCisgICAgICAgIC8vIHdlIG11c3Qgc2tpcCBhbGwgMDAsIDAxLCAwMiBieXRlcywgc28gbW9zdCBieXRlcyBoYXZlIDI1MyB2YWx1ZXMKKyAgICAgICAgLy8gd2UgbXVzdCBsZWF2ZSBhIGdhcCBvZiAwMSBiZXR3ZWVuIGFsbCB2YWx1ZXMgb2YgdGhlIGxhc3QgYnl0ZSwgc28gCisgICAgICAgIC8vIHRoZSBsYXN0IGJ5dGUgaGFzIDEyNiB2YWx1ZXMgKDMgYnl0ZSBjYXNlKQorICAgICAgICAvLyB3ZSBzaGlmdCBzbyB0aGF0IEhBTiBhbGwgaGFzIHRoZSBzYW1lIGZpcnN0IHByaW1hcnksIGZvciAKKyAgICAgICAgLy8gY29tcHJlc3Npb24uCisgICAgICAgIC8vIGZvciB0aGUgNCBieXRlIGNhc2UsIHdlIG1ha2UgdGhlIGdhcCBhcyBsYXJnZSBhcyB3ZSBjYW4gZml0LgorICAgICAgICAvLyBUaHJlZSBieXRlIGZvcm1zIGFyZSBFQyB4eCB4eCwgRUQgeHggeHgsIEVFIHh4IHh4ICh3aXRoIGEgZ2FwIG9mIDEpCisgICAgICAgIC8vIEZvdXIgYnl0ZSBmb3JtcyAobW9zdCBzdXBwbGVtZW50YXJpZXMpIGFyZSBFRiB4eCB4eCB4eCAod2l0aCBhIGdhcCAKKyAgICAgICAgLy8gb2YgTEFTVDJfTVVMVElQTElFUiA9PSAxNCkKKyAgICAgICAgCisgICAgICAgIGludCBsYXN0MCA9IGNwIC0gUnVsZUJhc2VkQ29sbGF0b3IuSU1QTElDSVRfNEJZVEVfQk9VTkRBUllfOworICAgICAgICBpZiAobGFzdDAgPCAwKSB7CisgICAgICAgICAgICBpbnQgbGFzdDEgPSBjcCAvIFJ1bGVCYXNlZENvbGxhdG9yLkxBU1RfQ09VTlRfOworICAgICAgICAgICAgbGFzdDAgPSBjcCAlIFJ1bGVCYXNlZENvbGxhdG9yLkxBU1RfQ09VTlRfOworICAgICAgICAgICAgCisgICAgICAgICAgICBpbnQgbGFzdDIgPSBsYXN0MSAvIFJ1bGVCYXNlZENvbGxhdG9yLk9USEVSX0NPVU5UXzsKKyAgICAgICAgICAgIGxhc3QxICU9IFJ1bGVCYXNlZENvbGxhdG9yLk9USEVSX0NPVU5UXzsKKyAgICAgICAgICAgIHJldHVybiBSdWxlQmFzZWRDb2xsYXRvci5JTVBMSUNJVF9CQVNFXzNCWVRFXyArIChsYXN0MiA8PCAyNCkgCisgICAgICAgICAgICAgICAgICAgKyAobGFzdDEgPDwgMTYpIAorICAgICAgICAgICAgICAgICAgICsgKChsYXN0MCAqIFJ1bGVCYXNlZENvbGxhdG9yLkxBU1RfTVVMVElQTElFUl8pIDw8IDgpOworICAgICAgICB9IAorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGludCBsYXN0MSA9IGxhc3QwIC8gUnVsZUJhc2VkQ29sbGF0b3IuTEFTVF9DT1VOVDJfOworICAgICAgICAgICAgbGFzdDAgJT0gUnVsZUJhc2VkQ29sbGF0b3IuTEFTVF9DT1VOVDJfOworICAgICAgICAgICAgCisgICAgICAgICAgICBpbnQgbGFzdDIgPSBsYXN0MSAvIFJ1bGVCYXNlZENvbGxhdG9yLk9USEVSX0NPVU5UXzsKKyAgICAgICAgICAgIGxhc3QxICU9IFJ1bGVCYXNlZENvbGxhdG9yLk9USEVSX0NPVU5UXzsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaW50IGxhc3QzID0gbGFzdDIgLyBSdWxlQmFzZWRDb2xsYXRvci5PVEhFUl9DT1VOVF87CisgICAgICAgICAgICBsYXN0MiAlPSBSdWxlQmFzZWRDb2xsYXRvci5PVEhFUl9DT1VOVF87CisgICAgICAgICAgICByZXR1cm4gUnVsZUJhc2VkQ29sbGF0b3IuSU1QTElDSVRfQkFTRV80QllURV8gKyAobGFzdDMgPDwgMjQpIAorICAgICAgICAgICAgICAgICAgICsgKGxhc3QyIDw8IDE2KSArIChsYXN0MSA8PCA4KSAKKyAgICAgICAgICAgICAgICAgICArIChsYXN0MCAqIFJ1bGVCYXNlZENvbGxhdG9yLkxBU1QyX01VTFRJUExJRVJfKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBTd2FwcGluZyBDSksgY2hhcmFjdGVycyBmb3IgaW1wbGljaXQgY2VzCisgICAgICogQHBhcmFtIGNwIGNvZGVwb2ludCBDSksKKyAgICAgKiBAcmV0dXJuIHN3YXBwZWQgcmVzdWx0CisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IHN3YXBDSksoaW50IGNwKSAKKyAgICB7CisgICAgICAgIGlmIChjcCA+PSBDSktfQkFTRV8pIHsKKyAgICAgICAgICAgIGlmIChjcCA8IENKS19MSU1JVF8pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gY3AgLSBDSktfQkFTRV87CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY3AgPCBDSktfQ09NUEFUX1VTRURfQkFTRV8pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gY3AgKyBOT05fQ0pLX09GRlNFVF87CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY3AgPCBDSktfQ09NUEFUX1VTRURfTElNSVRfKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNwIC0gQ0pLX0NPTVBBVF9VU0VEX0JBU0VfICsgKENKS19MSU1JVF8gLSBDSktfQkFTRV8pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNwIDwgQ0pLX0JfQkFTRV8pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gY3AgKyBOT05fQ0pLX09GRlNFVF87CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY3AgPCBDSktfQl9MSU1JVF8pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gY3A7IC8vIG5vbi1CTVAtQ0pLCisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gY3AgKyBOT05fQ0pLX09GRlNFVF87IC8vIG5vbi1DSksKKyAgICAgICAgfQorICAgICAgICBpZiAoY3AgPCBDSktfQV9CQVNFXykgeworICAgICAgICAgICAgcmV0dXJuIGNwICsgTk9OX0NKS19PRkZTRVRfOworICAgICAgICB9CisgICAgICAgIGlmIChjcCA8IENKS19BX0xJTUlUXykgeworICAgICAgICAgICAgcmV0dXJuIGNwIC0gQ0pLX0FfQkFTRV8gKyAoQ0pLX0xJTUlUXyAtIENKS19CQVNFXykgCisgICAgICAgICAgICAgICAgICAgKyAoQ0pLX0NPTVBBVF9VU0VEX0xJTUlUXyAtIENKS19DT01QQVRfVVNFRF9CQVNFXyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGNwICsgTk9OX0NKS19PRkZTRVRfOyAvLyBub24tQ0pLCisgICAgfSAgICAgICAKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS90ZXh0L0NvbGxhdGlvbktleS5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvQ29sbGF0aW9uS2V5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMDNhNmEwNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L0NvbGxhdGlvbktleS5qYXZhCkBAIC0wLDAgKzEsMzU0IEBACisvKioKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L3RleHQvQ29sbGF0aW9uS2V5LmphdmEsdiAkIAorKiAkRGF0ZTogMjAwMi8xMi8wNSAyMjoyNzo0MyAkIAorKiAkUmV2aXNpb246IDEuMTIgJAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KK3BhY2thZ2UgY29tLmlibS5pY3UudGV4dDsKKworLyoqCisgKiA8cD5BIDxjb2RlPkNvbGxhdGlvbktleTwvY29kZT4gcmVwcmVzZW50cyBhIDxjb2RlPlN0cmluZzwvY29kZT4KKyAqIHVuZGVyIHRoZSBydWxlcyBvZiBhIHNwZWNpZmljIDxjb2RlPkNvbGxhdG9yPC9jb2RlPgorICogb2JqZWN0LiBDb21wYXJpbmcgdHdvIDxjb2RlPkNvbGxhdGlvbktleTwvY29kZT5zIHJldHVybnMgdGhlCisgKiByZWxhdGl2ZSBvcmRlciBvZiB0aGUgPGNvZGU+U3RyaW5nPC9jb2RlPnMgdGhleSByZXByZXNlbnQuPC9wPgorICoKKyAqIDxwPlNpbmNlIHRoZSBydWxlIHNldCBvZiA8Y29kZT5Db2xsYXRvcjwvY29kZT5zIGNhbiBkaWZmZXIsIHRoZQorICogc29ydCBvcmRlcnMgb2YgdGhlIHNhbWUgc3RyaW5nIHVuZGVyIHR3byBkaWZmZXJlbnQKKyAqIDxjb2RlPkNvbGxhdG9yPC9jb2RlPnMgbWlnaHQgZGlmZmVyLiAgSGVuY2UgY29tcGFyaW5nCisgKiA8Y29kZT5Db2xsYXRpb25LZXk8L2NvZGU+cyBnZW5lcmF0ZWQgZnJvbSBkaWZmZXJlbnQKKyAqIDxjb2RlPkNvbGxhdG9yPC9jb2RlPnMgY2FuIGdpdmUgaW5jb3JyZWN0IHJlc3VsdHMuPC9wPgorICoKKyAqIDxwPkJvdGggdGhlIG1ldGhvZAorICogPGNvZGU+Q29sbGF0aW9uS2V5LmNvbXBhcmVUbyhDb2xsYXRpb25LZXkpPC9jb2RlPiBhbmQgdGhlIG1ldGhvZAorICogPGNvZGU+Q29sbGF0b3IuY29tcGFyZShTdHJpbmcsIFN0cmluZyk8L2NvZGU+IGNvbXBhcmUgdHdvIHN0cmluZ3MKKyAqIGFuZCByZXR1cm5zIHRoZWlyIHJlbGF0aXZlIG9yZGVyLiAgVGhlIHBlcmZvcm1hbmNlIGNoYXJhY3RlcmljdGljcworICogb2YgdGhlc2UgdHdvIGFwcHJvYWNoZXMgY2FuIGRpZmZlci48L3A+CisgKgorICogPHA+RHVyaW5nIHRoZSBjb25zdHJ1Y3Rpb24gb2YgYSA8Y29kZT5Db2xsYXRpb25LZXk8L2NvZGU+LCB0aGUKKyAqIGVudGlyZSBzb3VyY2Ugc3RyaW5nIGlzIGV4YW1pbmVkIGFuZCBwcm9jZXNzZWQgaW50byBhIHNlcmllcyBvZgorICogYml0cyB0ZXJtaW5hdGVkIGJ5IGEgbnVsbCwgdGhhdCBhcmUgc3RvcmVkIGluIHRoZSA8Y29kZT5Db2xsYXRpb25LZXk8L2NvZGU+LiAKKyAqIFdoZW4gPGNvZGU+Q29sbGF0aW9uS2V5LmNvbXBhcmVUbyhDb2xsYXRpb25LZXkpPC9jb2RlPiBleGVjdXRlcywgaXQKKyAqIHBlcmZvcm1zIGJpdHdpc2UgY29tcGFyaXNvbiBvbiB0aGUgYml0IHNlcXVlbmNlcy4gIFRoaXMgY2FuIGluY3VycworICogc3RhcnR1cCBjb3N0IHdoZW4gY3JlYXRpbmcgdGhlIDxjb2RlPkNvbGxhdGlvbktleTwvY29kZT4sIGJ1dCBvbmNlCisgKiB0aGUga2V5IGlzIGNyZWF0ZWQsIGJpbmFyeSBjb21wYXJpc29ucyBhcmUgZmFzdC4gIFRoaXMgYXBwcm9hY2ggaXMKKyAqIHJlY29tbWVuZGVkIHdoZW4gdGhlIHNhbWUgc3RyaW5ncyBhcmUgdG8gYmUgY29tcGFyZWQgb3ZlciBhbmQgb3ZlcgorICogYWdhaW4uPC9wPgorICoKKyAqIDxwPk9uIHRoZSBvdGhlciBoYW5kLCBpbXBsZW1lbnRhdGlvbnMgb2YKKyAqIDxjb2RlPkNvbGxhdG9yLmNvbXBhcmUoU3RyaW5nLCBTdHJpbmcpPC9jb2RlPiBjYW4gZXhhbWluZSBhbmQKKyAqIHByb2Nlc3MgdGhlIHN0cmluZ3Mgb25seSB1bnRpbCB0aGUgZmlyc3QgY2hhcmFjdGVycyBkaWZmZXJpbmcgaW4KKyAqIG9yZGVyLiAgVGhpcyBhcHByb2FjaCBpcyByZWNvbW1lbmRlZCBpZiB0aGUgc3RyaW5ncyBhcmUgdG8gYmUKKyAqIGNvbXBhcmVkIG9ubHkgb25jZS48L3A+CisgKiAKKyAqIDxwPk1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbXBvc2l0aW9uIG9mIHRoZSBiaXQgc2VxdWVuY2UgY2FuCisgKiBiZSBmb3VuZCBpbiB0aGUgCisgKiA8YSBocmVmPSJodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vaWN1L3VzZXJndWlkZS9Db2xsYXRlX1NlcnZpY2VBcmNoaXRlY3R1cmUuaHRtbCI+CisgKiB1c2VyIGd1aWRlPC9hPi48L3A+CisgKgorICogPHA+VGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIGhvdyA8Y29kZT5Db2xsYXRpb25LZXk8L2NvZGU+cyBjYW4gYmUgdXNlZAorICogdG8gc29ydCBhIGxpc3Qgb2YgPGNvZGU+U3RyaW5nPC9jb2RlPnMuPC9wPgorICogPGJsb2NrcXVvdGU+CisgKiA8cHJlPgorICogLy8gQ3JlYXRlIGFuIGFycmF5IG9mIENvbGxhdGlvbktleXMgZm9yIHRoZSBTdHJpbmdzIHRvIGJlIHNvcnRlZC4KKyAqIENvbGxhdG9yIG15Q29sbGF0b3IgPSBDb2xsYXRvci5nZXRJbnN0YW5jZSgpOworICogQ29sbGF0aW9uS2V5W10ga2V5cyA9IG5ldyBDb2xsYXRpb25LZXlbM107CisgKiBrZXlzWzBdID0gbXlDb2xsYXRvci5nZXRDb2xsYXRpb25LZXkoIlRvbSIpOworICoga2V5c1sxXSA9IG15Q29sbGF0b3IuZ2V0Q29sbGF0aW9uS2V5KCJEaWNrIik7CisgKiBrZXlzWzJdID0gbXlDb2xsYXRvci5nZXRDb2xsYXRpb25LZXkoIkhhcnJ5Iik7CisgKiBzb3J0KCBrZXlzICk7CisgKiA8YnI+CisgKiAvLy4uLgorICogPGJyPgorICogLy8gSW5zaWRlIGJvZHkgb2Ygc29ydCByb3V0aW5lLCBjb21wYXJlIGtleXMgdGhpcyB3YXkKKyAqIGlmKCBrZXlzW2ldLmNvbXBhcmVUbygga2V5c1tqXSApID4gMCApCisgKiAgICAvLyBzd2FwIGtleXNbaV0gYW5kIGtleXNbal0KKyAqIDxicj4KKyAqIC8vLi4uCisgKiA8YnI+CisgKiAvLyBGaW5hbGx5LCB3aGVuIHdlJ3ZlIHJldHVybmVkIGZyb20gc29ydC4KKyAqIFN5c3RlbS5vdXQucHJpbnRsbigga2V5c1swXS5nZXRTb3VyY2VTdHJpbmcoKSApOworICogU3lzdGVtLm91dC5wcmludGxuKCBrZXlzWzFdLmdldFNvdXJjZVN0cmluZygpICk7CisgKiBTeXN0ZW0ub3V0LnByaW50bG4oIGtleXNbMl0uZ2V0U291cmNlU3RyaW5nKCkgKTsKKyAqIDwvcHJlPgorICogPC9ibG9ja3F1b3RlPgorICogPC9wPgorICogPHA+CisgKiBUaGlzIGNsYXNzIGlzIG5vdCBzdWJjbGFzc2FibGUKKyAqIDwvcD4KKyAqIEBzZWUgQ29sbGF0b3IKKyAqIEBzZWUgUnVsZUJhc2VkQ29sbGF0b3IKKyAqIEBhdXRob3IgU3luIFdlZSBRdWVrCisgKiBAZHJhZnQgSUNVIDIuMiAKKyAqLworcHVibGljIGZpbmFsIGNsYXNzIENvbGxhdGlvbktleSBpbXBsZW1lbnRzIENvbXBhcmFibGUgCit7CisgICAgLy8gcHVibGljIGNvbnN0cnVjdG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIC8qKgorICAgICAqIENvbGxhdGlvbktleSBjb25zdHJ1Y3Rvci4KKyAgICAgKiBUaGlzIGNvbnN0cnVjdG9yIGlzIGdpdmVuIHB1YmxpYyBhY2Nlc3MsIHVubGlrZSB0aGUgSkRLIHZlcnNpb24sIHRvCisgICAgICogYWxsb3cgYWNjZXNzIHRvIHVzZXJzIGV4dGVuZGluZyB0aGUgQ29sbGF0b3IgY2xhc3MuIFNlZSAKKyAgICAgKiB7QGxpbmsgQ29sbGF0b3IjZ2V0Q29sbGF0aW9uS2V5KFN0cmluZyl9LiAKKyAgICAgKiBAcGFyYW0gc291cmNlIHN0cmluZyB0aGlzIENvbGxhdGlvbktleSBpcyB0byByZXByZXNlbnQKKyAgICAgKiBAcGFyYW0ga2V5IGFycmF5IG9mIGJ5dGVzIHRoYXQgcmVwcmVzZW50IHRoZSBjb2xsYXRpb24gb3JkZXIgb2YgYXJndW1lbnQKKyAgICAgKiAgICAgICAgICAgIHNvdXJjZSB0ZXJtaW5hdGVkIGJ5IGEgbnVsbAorICAgICAqIEBzZWUgQ29sbGF0b3IKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBDb2xsYXRpb25LZXkoU3RyaW5nIHNvdXJjZSwgYnl0ZSBrZXlbXSkKKyAgICB7CisgICAgICAgIG1fc291cmNlXyA9IHNvdXJjZTsKKyAgICAgICAgbV9rZXlfID0ga2V5OworICAgICAgICBtX2hhc2hDb2RlXyA9IDA7CisgICAgfQorICAgIAorICAgIC8vIHB1YmxpYyBnZXR0ZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIHNvdXJjZSBzdHJpbmcgdGhhdCB0aGlzIENvbGxhdGlvbktleSByZXByZXNlbnRzLgorICAgICAqIEByZXR1cm4gc291cmNlIHN0cmluZyB0aGF0IHRoaXMgQ29sbGF0aW9uS2V5IHJlcHJlc2VudHMKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgZ2V0U291cmNlU3RyaW5nKCkgCisgICAgeworICAgICAgICByZXR1cm4gbV9zb3VyY2VfOworICAgIH0KKworICAgIC8qKgorICAgICAqIDxwPkR1cGxpY2F0ZXMgYW5kIHJldHVybnMgdGhlIHZhbHVlIG9mIHRoaXMgQ29sbGF0aW9uS2V5IGFzIGEgc2VxdWVuY2UgCisgICAgICogb2YgYmlnLWVuZGlhbiBieXRlcyB0ZXJtaW5hdGVkIGJ5IGEgbnVsbC48L3A+IAorICAgICAqCisgICAgICogPHA+SWYgdHdvIENvbGxhdGlvbktleXMgY2FuIGJlIGxlZ2l0aW1hdGVseSBjb21wYXJlZCwgdGhlbiBvbmUgY2FuCisgICAgICogY29tcGFyZSB0aGUgYnl0ZSBhcnJheXMgb2YgZWFjaCB0byBvYnRhaW4gdGhlIHNhbWUgcmVzdWx0LCBlLmcuCisgICAgICogPHByZT4KKyAgICAgKiBieXRlIGtleTFbXSA9IGNvbGxhdGlvbmtleTEudG9CeXRlQXJyYXkoKTsKKyAgICAgKiBieXRlIGtleTJbXSA9IGNvbGxhdGlvbmtleTIudG9CeXRlQXJyYXkoKTsKKyAgICAgKiBpbnQga2V5LCB0YXJnZXRrZXk7CisgICAgICogaW50IGkgPSAwOworICAgICAqIGRvIHsKKyAgICAgKgkgICBrZXkgPSBrZXkxW2ldICYgMHhGRjsKKyAgICAgKiAgICAgdGFyZ2V0a2V5ID0ga2V5MltpXSAmIDB4RkY7CisgICAgICogICAgIGlmIChrZXkgJmx0OyB0YXJnZXRrZXkpIHsKKyAgICAgKiAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiU3RyaW5nIDEgaXMgbGVzcyB0aGFuIHN0cmluZyAyIik7CisgICAgICogICAgICAgICByZXR1cm47CisgICAgICogICAgIH0KKyAgICAgKiAgICAgaWYgKHRhcmdldGtleSAmbHQ7IGtleSkgeworICAgICAqICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJTdHJpbmcgMSBpcyBtb3JlIHRoYW4gc3RyaW5nIDIiKTsKKyAgICAgKiAgICAgfQorICAgICAqICAgICBpICsrOworICAgICAqIH0gd2hpbGUgKGtleSAhPSAwICYmIHRhcmdldEtleSAhPSAwKTsKKyAgICAgKgorICAgICAqIFN5c3RlbS5vdXQucHJpbnRsbigiU3RyaW5ncyBhcmUgZXF1YWwuIik7CisgICAgICogPC9wcmU+CisgICAgICogPC9wPiAgCisgICAgICogQHJldHVybiBDb2xsYXRpb25LZXkgdmFsdWUgaW4gYSBzZXF1ZW5jZSBvZiBiaWctZW5kaWFuIGJ5dGUgYnl0ZXMgCisgICAgICogICAgICAgICB0ZXJtaW5hdGVkIGJ5IGEgbnVsbC4KKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBieXRlW10gdG9CeXRlQXJyYXkoKSAKKyAgICB7CisgICAgCWludCBsZW5ndGggPSAwOworICAgIAl3aGlsZSAodHJ1ZSkgeworICAgIAkgICAgaWYgKG1fa2V5X1tsZW5ndGhdID09IDApIHsKKyAgICAJCSAgYnJlYWs7CisgICAgCSAgICB9CisgICAgCSAgICBsZW5ndGggKys7CisgICAgCX0KKyAgICAJbGVuZ3RoICsrOworICAgIAlieXRlIHJlc3VsdFtdID0gbmV3IGJ5dGVbbGVuZ3RoXTsKKyAgICAJU3lzdGVtLmFycmF5Y29weShtX2tleV8sIDAsIHJlc3VsdCwgMCwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvLyBwdWJsaWMgb3RoZXIgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCQorIAkKKyAgICAvKioKKyAgICAgKiA8cD5Db21wYXJlIHRoaXMgQ29sbGF0aW9uS2V5IHRvIGFub3RoZXIgQ29sbGF0aW9uS2V5LiAgVGhlCisgICAgICogY29sbGF0aW9uIHJ1bGVzIG9mIHRoZSBDb2xsYXRvciB0aGF0IGNyZWF0ZWQgdGhpcyBrZXkgYXJlCisgICAgICogYXBwbGllZC48L3A+CisgICAgICoKKyAgICAgKiA8cD48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IENvbXBhcmlzb24gYmV0d2VlbiBDb2xsYXRpb25LZXlzCisgICAgICogY3JlYXRlZCBieSBkaWZmZXJlbnQgQ29sbGF0b3JzIG1pZ2h0IHJldHVybiBpbmNvcnJlY3QKKyAgICAgKiByZXN1bHRzLiAgU2VlIGNsYXNzIGRvY3VtZW50YXRpb24uPC9wPgorICAgICAqCisgICAgICogQHBhcmFtIHRhcmdldCB0YXJnZXQgQ29sbGF0aW9uS2V5CisgICAgICogQHJldHVybiBhbiBpbnRlZ2VyIHZhbHVlLiAgSWYgdGhlIHZhbHVlIGlzIGxlc3MgdGhhbiB6ZXJvIHRoaXMgQ29sbGF0aW9uS2V5CisgICAgICogICAgICAgICBpcyBsZXNzIHRoYW4gdGhhbiB0YXJnZXQsIGlmIHRoZSB2YWx1ZSBpcyB6ZXJvIHRoZXkgYXJlIGVxdWFsLCBhbmQKKyAgICAgKiAgICAgICAgIGlmIHRoZSB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gemVybyB0aGlzIENvbGxhdGlvbktleSBpcyBncmVhdGVyIAorICAgICAqICAgICAgICAgdGhhbiB0YXJnZXQuCisgICAgICogQGV4Y2VwdGlvbiBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpcyB0aHJvd24gaWYgYXJndW1lbnQgaXMgbnVsbC4KKyAgICAgKiBAc2VlIENvbGxhdG9yI2NvbXBhcmUoU3RyaW5nLCBTdHJpbmcpCisgICAgICogQGRyYWZ0IElDVSAyLjIgCisgICAgICovCisgICAgcHVibGljIGludCBjb21wYXJlVG8oQ29sbGF0aW9uS2V5IHRhcmdldCkKKyAgICB7CisgICAgCWludCBpID0gMDsKKyAgICAJd2hpbGUgKG1fa2V5X1tpXSAhPSAwICYmIHRhcmdldC5tX2tleV9baV0gIT0gMCkgeworICAgICAgICAgICAgYnl0ZSBrZXkgPSBtX2tleV9baV07CisgICAgICAgICAgICBieXRlIHRhcmdldGtleSA9IHRhcmdldC5tX2tleV9baV07CisgICAgICAgICAgICBpZiAoa2V5ID09IHRhcmdldGtleSkgeworICAgICAgICAgICAgICAgIGkgKys7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoa2V5ID49IDApIHsKKyAgICAgICAgICAgICAgICBpZiAodGFyZ2V0a2V5IDwgMCB8fCBrZXkgPCB0YXJnZXRrZXkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvLyB0YXJnZXQga2V5IGhhcyB0byBiZSBwb3NpdGl2ZSBhbmQgbGVzcyB0aGFuIGtleQorICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLy8ga2V5IGlzIG5lZ2F0aXZlCisgICAgICAgICAgICAgICAgaWYgKHRhcmdldGtleSA+PSAwIHx8IGtleSA+IHRhcmdldGtleSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgIAl9CisgICAgCS8vIGxhc3QgY29tcGFyaXNvbiBpZiB3ZSBlbmNvdW50ZXIgYSAwCisgICAgICAgIGlmIChtX2tleV9baV0gPT0gdGFyZ2V0Lm1fa2V5X1tpXSkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1fa2V5X1tpXSA9PSAwKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgLy8gdGFyZ2V0IGlzIDAKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgLyoqCisgICAgICogPHA+Q29tcGFyZSB0aGlzIENvbGxhdGlvbktleSB3aXRoIHRoZSBzcGVjaWZpZWQgT2JqZWN0LiAgVGhlCisgICAgICogY29sbGF0aW9uIHJ1bGVzIG9mIHRoZSBDb2xsYXRvciB0aGF0IGNyZWF0ZWQgdGhpcyBrZXkgYXJlCisgICAgICogYXBwbGllZC48L3A+CisgICAgICogCisgICAgICogPHA+U2VlIG5vdGUgaW4gY29tcGFyZVRvKENvbGxhdGlvbktleSkgZm9yIHdhcm5pbmdzIGFib3V0IHBvc3NpYmxlCisgICAgICogaW5jb3JyZWN0IHJlc3VsdHMuPC9wPgorICAgICAqCisgICAgICogQHBhcmFtIG9iaiB0aGUgT2JqZWN0IHRvIGJlIGNvbXBhcmVkIHRvLgorICAgICAqIEByZXR1cm4gUmV0dXJucyBhIG5lZ2F0aXZlIGludGVnZXIsIHplcm8sIG9yIGEgcG9zaXRpdmUgaW50ZWdlciAKKyAgICAgKiAgICAgICAgIHJlc3BlY3RpdmVseSBpZiB0aGlzIENvbGxhdGlvbktleSBpcyBsZXNzIHRoYW4sIGVxdWFsIHRvLCBvciAKKyAgICAgKiAgICAgICAgIGdyZWF0ZXIgdGhhbiB0aGUgZ2l2ZW4gT2JqZWN0LgorICAgICAqIEBleGNlcHRpb24gQ2xhc3NDYXN0RXhjZXB0aW9uIGlzIHRocm93biB3aGVuIHRoZSBhcmd1bWVudCBpcyBub3QgCisgICAgICogICAgICAgICAgICBhIENvbGxhdGlvbktleS4gIE51bGxQb2ludGVyRXhjZXB0aW9uIGlzIHRocm93biB3aGVuIHRoZSBhcmd1bWVudCAKKyAgICAgKiAgICAgICAgICAgIGlzIG51bGwuCisgICAgICogQHNlZSAjY29tcGFyZVRvKENvbGxhdGlvbktleSkKKyAgICAgKiBAZHJhZnQgSUNVIDIuMiAKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGNvbXBhcmVUbyhPYmplY3Qgb2JqKSAKKyAgICB7CisJICAgcmV0dXJuIGNvbXBhcmVUbygoQ29sbGF0aW9uS2V5KW9iaik7CisgICAgfQorCisgICAgLyoqCisgICAgICogPHA+Q29tcGFyZSB0aGlzIENvbGxhdGlvbktleSBhbmQgdGhlIHNwZWNpZmllZCBPYmplY3QgZm9yCisgICAgICogZXF1YWxpdHkuICBUaGUgY29sbGF0aW9uIHJ1bGVzIG9mIHRoZSBDb2xsYXRvciB0aGF0IGNyZWF0ZWQKKyAgICAgKiB0aGlzIGtleSBhcmUgYXBwbGllZC48L3A+CisgICAgICoKKyAgICAgKiA8cD5TZWUgbm90ZSBpbiBjb21wYXJlVG8oQ29sbGF0aW9uS2V5KSBmb3Igd2FybmluZ3MgYWJvdXQKKyAgICAgKiBwb3NzaWJsZSBpbmNvcnJlY3QgcmVzdWx0cy48L3A+CisgICAgICoKKyAgICAgKiBAcGFyYW0gdGFyZ2V0IHRoZSBvYmplY3QgdG8gY29tcGFyZSB0by4KKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIHR3byBrZXlzIGNvbXBhcmUgYXMgZXF1YWwsIGZhbHNlIG90aGVyd2lzZS4KKyAgICAgKiBAc2VlICNjb21wYXJlVG8oQ29sbGF0aW9uS2V5KQorICAgICAqIEBleGNlcHRpb24gQ2xhc3NDYXN0RXhjZXB0aW9uIGlzIHRocm93biB3aGVuIHRoZSBhcmd1bWVudCBpcyBub3QgCisgICAgICogICAgICAgICAgICBhIENvbGxhdGlvbktleS4gIE51bGxQb2ludGVyRXhjZXB0aW9uIGlzIHRocm93biB3aGVuIHRoZSBhcmd1bWVudCAKKyAgICAgKiAgICAgICAgICAgIGlzIG51bGwuCisgICAgICogQGRyYWZ0IElDVSAyLjIgCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCB0YXJnZXQpIAorICAgIHsKKyAgICAgICAgaWYgKCEodGFyZ2V0IGluc3RhbmNlb2YgQ29sbGF0aW9uS2V5KSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gZXF1YWxzKChDb2xsYXRpb25LZXkpdGFyZ2V0KTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogPHA+CisgICAgICogQ29tcGFyZSB0aGlzIENvbGxhdGlvbktleSBhbmQgdGhlIGFyZ3VtZW50IHRhcmdldCBDb2xsYXRpb25LZXkgZm9yIAorICAgICAqIGVxdWFsaXR5LgorICAgICAqIFRoZSBjb2xsYXRpb24gCisgICAgICogcnVsZXMgb2YgdGhlIENvbGxhdG9yIG9iamVjdCB3aGljaCBjcmVhdGVkIHRoZXNlIG9iamVjdHMgYXJlIGFwcGxpZWQuCisgICAgICogPC9wPgorICAgICAqIDxwPgorICAgICAqIFNlZSBub3RlIGluIGNvbXBhcmVUbyhDb2xsYXRpb25LZXkpIGZvciB3YXJuaW5ncyBvZiBpbmNvcnJlY3QgcmVzdWx0cworICAgICAqIDwvcD4KKyAgICAgKiBAcGFyYW0gdGFyZ2V0IHRoZSBDb2xsYXRpb25LZXkgdG8gY29tcGFyZSB0by4KKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdHdvIG9iamVjdHMgYXJlIGVxdWFsLCBmYWxzZSBvdGhlcndpc2UuCisgICAgICogQGV4Y2VwdGlvbiBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpcyB0aHJvd24gd2hlbiB0aGUgYXJndW1lbnQgaXMgbnVsbC4KKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhDb2xsYXRpb25LZXkgdGFyZ2V0KSAKKyAgICB7CisgICAgICAgIGlmICh0aGlzID09IHRhcmdldCkgeworCSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRhcmdldCA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgQ29sbGF0aW9uS2V5IG90aGVyID0gKENvbGxhdGlvbktleSl0YXJnZXQ7CisgICAgICAgIGludCBpID0gMDsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAJICAgIGlmIChtX2tleV9baV0gIT0gb3RoZXIubV9rZXlfW2ldKSB7CisgICAgICAgIAkJcmV0dXJuIGZhbHNlOworICAgIAkgICAgfQorICAgIAkgICAgaWYgKG1fa2V5X1tpXSA9PSAwKSB7CisgICAgCQkgIGJyZWFrOworICAgIAkgICAgfQorICAgIAkgICAgaSArKzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiA8cD5SZXR1cm5zIGEgaGFzaCBjb2RlIGZvciB0aGlzIENvbGxhdGlvbktleS4gVGhlIGhhc2ggdmFsdWUgaXMgY2FsY3VsYXRlZCAKKyAgICAgKiBvbiB0aGUga2V5IGl0c2VsZiwgbm90IHRoZSBTdHJpbmcgZnJvbSB3aGljaCB0aGUga2V5IHdhcyBjcmVhdGVkLiBUaHVzIAorICAgICAqIGlmIHggYW5kIHkgYXJlIENvbGxhdGlvbktleXMsIHRoZW4geC5oYXNoQ29kZSh4KSA9PSB5Lmhhc2hDb2RlKCkgCisgICAgICogaWYgeC5lcXVhbHMoeSkgaXMgdHJ1ZS4gVGhpcyBhbGxvd3MgbGFuZ3VhZ2Utc2Vuc2l0aXZlIGNvbXBhcmlzb24gaW4gYSAKKyAgICAgKiBoYXNoIHRhYmxlLgorICAgICAqIDwvcD4KKyAgICAgKiBAcmV0dXJuIHRoZSBoYXNoIHZhbHVlLgorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIGludCBoYXNoQ29kZSgpIAorICAgIHsKKyAgICAJaWYgKG1faGFzaENvZGVfID09IDApIHsKKyAgICAJICAgIGludCBzaXplID0gbV9rZXlfLmxlbmd0aCA+PiAxOworICAgIAkgICAgU3RyaW5nQnVmZmVyIGtleSA9IG5ldyBTdHJpbmdCdWZmZXIoc2l6ZSk7CisgICAgCSAgICBpbnQgaSA9IDA7CisgICAgCSAgICB3aGlsZSAobV9rZXlfW2ldICE9IDAgJiYgbV9rZXlfW2kgKyAxXSAhPSAwKSB7CisgICAgICAgIAkJa2V5LmFwcGVuZCgoY2hhcikoKG1fa2V5X1tpXSA8PCA4KSB8IG1fa2V5X1tpICsgMV0pKTsKKyAgICAgICAgCQlpICs9IDI7CisgICAgCSAgICB9CisgICAgCSAgICBpZiAobV9rZXlfW2ldICE9IDApIHsKKyAgICAgICAgCQlrZXkuYXBwZW5kKChjaGFyKShtX2tleV9baV0gPDwgOCkpOworICAgIAkgICAgfQorICAgIAkgICAgbV9oYXNoQ29kZV8gPSBrZXkudG9TdHJpbmcoKS5oYXNoQ29kZSgpOworICAgIAl9CisgICAgICAgIHJldHVybiBtX2hhc2hDb2RlXzsKKyAgICB9CisKKyAgICAvLyBwcml2YXRlIGRhdGEgbWVtYmVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBTb3VyY2Ugc3RyaW5nIHRoaXMgQ29sbGF0aW9uS2V5IHJlcHJlc2VudHMKKyAgICAgKi8JCisgICAgcHJpdmF0ZSBTdHJpbmcgbV9zb3VyY2VfOworCisgICAgLyoqCisgICAgICogU2VxdWVuY2Ugb2YgYnl0ZXMgdGhhdCByZXByZXNlbnRzIHRoZSBzb3J0IGtleQorICAgICAqLworICAgIHByaXZhdGUgYnl0ZSBtX2tleV9bXTsKKworICAgIC8qKgorICAgICAqIEhhc2ggY29kZSBmb3IgdGhlIGtleQorICAgICAqLworICAgIHByaXZhdGUgaW50IG1faGFzaENvZGVfOworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3RleHQvQ29sbGF0aW9uUGFyc2VkUnVsZUJ1aWxkZXIuamF2YSBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L0NvbGxhdGlvblBhcnNlZFJ1bGVCdWlsZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2FjNGI0MAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L0NvbGxhdGlvblBhcnNlZFJ1bGVCdWlsZGVyLmphdmEKQEAgLTAsMCArMSwzNzIyIEBACisvKioKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L3RleHQvQ29sbGF0aW9uUGFyc2VkUnVsZUJ1aWxkZXIuamF2YSx2ICQgCisqICREYXRlOiAyMDAyLzEyLzEzIDIzOjE0OjUwICQgCisqICRSZXZpc2lvbjogMS4xMyAkCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworcGFja2FnZSBjb20uaWJtLmljdS50ZXh0OworIAoraW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5CdWZmZXJlZElucHV0U3RyZWFtOworaW1wb3J0IGphdmEudGV4dC5QYXJzZUV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOworaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7CitpbXBvcnQgamF2YS51dGlsLkFycmF5czsKK2ltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247CisKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLlRyaWVCdWlsZGVyOworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuSW50VHJpZUJ1aWxkZXI7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5UcmllSXRlcmF0b3I7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5VdGlsaXR5OworaW1wb3J0IGNvbS5pYm0uaWN1LmxhbmcuVUNoYXJhY3RlcjsKK2ltcG9ydCBjb20uaWJtLmljdS5sYW5nLlVDaGFyYWN0ZXJDYXRlZ29yeTsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLk5vcm1hbGl6ZXJJbXBsOworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuUmFuZ2VWYWx1ZUl0ZXJhdG9yOworCisvKioKKyogQ2xhc3MgZm9yIGJ1aWxkaW5nIGEgY29sbGF0b3IgZnJvbSBhIGxpc3Qgb2YgY29sbGF0aW9uIHJ1bGVzLgorKiBUaGlzIGNsYXNzIGlzIHVzZXMgQ29sbGF0aW9uUnVsZVBhcnNlcgorKiBAYXV0aG9yIFN5biBXZWUgUXVlaworKiBAc2luY2UgcmVsZWFzZSAyLjIsIEp1bmUgMTEgMjAwMgorKiBAZHJhZnQgMi4yCisqLworZmluYWwgY2xhc3MgQ29sbGF0aW9uUGFyc2VkUnVsZUJ1aWxkZXIKK3sgICAgIAorCS8vIHBhY2thZ2UgcHJpdmF0ZSBjb25zdHJ1Y3RvcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RvcgorICAgICAqIEBwYXJhbSBydWxlcyBjb2xsYXRpb24gcnVsZXMKKyAgICAgKiBAZXhjZXB0aW9uIFBhcnNlRXhjZXB0aW9uIHRocm93biB3aGVuIGFyZ3VtZW50IHJ1bGVzIGhhdmUgYW4gaW52YWxpZCAKKyAgICAgKiAgICAgICAgICAgIHN5bnRheCAKKyAgICAgKi8KKyAgICBDb2xsYXRpb25QYXJzZWRSdWxlQnVpbGRlcihTdHJpbmcgcnVsZXMpIHRocm93cyBQYXJzZUV4Y2VwdGlvbgorICAgIHsKKyAgICAgICAgbV9wYXJzZXJfID0gbmV3IENvbGxhdGlvblJ1bGVQYXJzZXIocnVsZXMpOworICAgICAgICBtX3BhcnNlcl8uYXNzZW1ibGVUb2tlbkxpc3QoKTsKKyAgICAgICAgbV91dGlsQ29sRUl0ZXJfID0gUnVsZUJhc2VkQ29sbGF0b3IuVUNBXy5nZXRDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIik7CisgICAgfQorICAgIAorICAgIC8vIHBhY2thZ2UgcHJpdmF0ZSBpbm5lciBjbGFzc2VzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqIAorICAgICAqIEludmVyc2UgVUNBIHdyYXBwZXIKKyAgICAgKi8KKyAgICBzdGF0aWMgY2xhc3MgSW52ZXJzZVVDQSAKKyAgICB7CisgICAgICAgIC8vIHBhY2thZ2UgcHJpdmF0ZSBjb25zdHJ1Y3RvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgCisgICAgICAgIEludmVyc2VVQ0EoKSAKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBwYWNrYWdlIHByaXZhdGUgZGF0YSBtZW1iZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgIAorICAgICAgICAvKioKKyAgICAgICAgICogQXJyYXkgbGlzdCBvZiBjaGFyYWN0ZXJzCisgICAgICAgICAqLworICAgICAgICBpbnQgbV90YWJsZV9bXTsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEFycmF5IGxpc3Qgb2YgY29udGludWF0aW9uIGNoYXJhY3RlcnMKKyAgICAgICAgICovCisgICAgICAgIGNoYXIgbV9jb250aW51YXRpb25zX1tdOworICAgICAgICAKKyAgICAgICAgLy8gcGFja2FnZSBwcml2YXRlIG1ldGhvZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAKKyAgICAgICAgLyoqCisJICAgICAqIFJldHVybnMgdGhlIHByZXZpb3VzIGludmVyc2UgY2VzIG9mIHRoZSBhcmd1bWVudCBjZXMKKwkgICAgICogQHBhcmFtIGNlIGNlIHRvIHRlc3QKKwkgICAgICogQHBhcmFtIGNvbnRjZSBjb250aW51YXRpb24gY2UgdG8gdGVzdAorCSAgICAgKiBAcGFyYW0gc3RyZW5ndGggY29sbGF0aW9uIHN0cmVuZ3RoCisJICAgICAqIEBwYXJhbSBwcmV2cmVzdWx0IGFuIGFycmF5IHRvIHN0b3JlIHRoZSByZXR1cm4gcmVzdWx0cyBwcmV2aW91cyAKKyAgICAgICAgICogICAgICAgICAgICAgICAgICAgaW52ZXJzZSBjZSBhbmQgcHJldmlvdXMgaW52ZXJzZSBjb250aW51YXRpb24gY2UKKyAgICAgICAgICogQHJldHVybiByZXN1bHQgb2YgdGhlIGludmVyc2UgY2UgCisJICAgICAqLworCSAgICBmaW5hbCBpbnQgZ2V0SW52ZXJzZVByZXZDRShpbnQgY2UsIGludCBjb250Y2UsIGludCBzdHJlbmd0aCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcHJldnJlc3VsdFtdKSAKKwkgICAgeworCQkgICAgaW50IHJlc3VsdCA9IGZpbmRJbnZlcnNlQ0UoY2UsIGNvbnRjZSk7CisJCQorCQkgICAgaWYgKHJlc3VsdCA8IDApIHsKKwkJICAgICAgICBwcmV2cmVzdWx0WzBdID0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUjsKKwkJICAgICAgICByZXR1cm4gLTE7CisJCSAgICB9CisJCQorCQkgICAgY2UgJj0gU1RSRU5HVEhfTUFTS19bc3RyZW5ndGhdOworCQkgICAgY29udGNlICY9IFNUUkVOR1RIX01BU0tfW3N0cmVuZ3RoXTsKKwkJCisgICAgICAgICAgICBwcmV2cmVzdWx0WzBdID0gY2U7CisJCSAgICBwcmV2cmVzdWx0WzFdID0gY29udGNlOworCQkKKwkJICAgIHdoaWxlICgocHJldnJlc3VsdFswXSAgJiBTVFJFTkdUSF9NQVNLX1tzdHJlbmd0aF0pID09IGNlIAorCQkgICAgICAgICAgICYmIChwcmV2cmVzdWx0WzFdICAmIFNUUkVOR1RIX01BU0tfW3N0cmVuZ3RoXSk9PSBjb250Y2UKKwkJICAgICAgICAgICAmJiByZXN1bHQgPiAwKSB7IAorCQkgICAgICAgICAgICAgICAgLy8gdGhpcyBjb25kaXRpb24gc2hvdWxkIHByZXZlbnQgZmFsbGluZyBvZmYgdGhlIGVkZ2Ugb2YgdGhlIAorCQkgICAgICAgICAgICAgICAgLy8gd29ybGQgCisJCSAgICAgICAgLy8gaGVyZSwgd2UgZW5kIHVwIGluIGEgc2luZ3VsYXJpdHkgLSB6ZXJvCisJCSAgICAgICAgcHJldnJlc3VsdFswXSA9IG1fdGFibGVfWzMgKiAoLS0gcmVzdWx0KV07CisJCSAgICAgICAgcHJldnJlc3VsdFsxXSA9IG1fdGFibGVfWzMgKiByZXN1bHQgKyAxXTsKKwkJICAgfQorICAgICAgICAgICByZXR1cm4gcmVzdWx0OworCQl9CisgICAgICAgIAorICAgICAgICAvKioKKyAgICAgICAgICogRmluZGluZyB0aGUgaW52ZXJzZSBDRSBvZiB0aGUgYXJndW1lbnQgQ0VzCisgICAgICAgICAqIEBwYXJhbSBjZSBDRSB0byBiZSB0ZXN0ZWQKKyAgICAgICAgICogQHBhcmFtIGNvbnRjZSBjb250aW51YXRpb24gQ0UKKyAgICAgICAgICogQHJldHVybiBpbnZlcnNlIENFCisgICAgICAgICAqLworICAgICAgICBpbnQgZmluZEludmVyc2VDRShpbnQgY2UsIGludCBjb250Y2UpIAorICAgICAgICB7CisgICAgICAgICAgICBpbnQgYm90dG9tID0gMDsKKyAgICAgICAgICAgIGludCB0b3AgPSBtX3RhYmxlXy5sZW5ndGggLyAzOworICAgICAgICAgICAgaW50IHJlc3VsdCA9IDA7CisgICAgCisgICAgICAgICAgICB3aGlsZSAoYm90dG9tIDwgdG9wIC0gMSkgeworCQkgICAgICAgIHJlc3VsdCA9ICh0b3AgKyBib3R0b20pID4+IDE7CisJCSAgICAgICAgaW50IGZpcnN0ID0gbV90YWJsZV9bMyAqIHJlc3VsdF07CisJCSAgICAgICAgaW50IHNlY29uZCA9IG1fdGFibGVfWzMgKiByZXN1bHQgKyAxXTsKKyAgICAgICAgICAgICAgICBpbnQgY29tcGFyaXNvbiA9IFV0aWxpdHkuY29tcGFyZVVuc2lnbmVkKGZpcnN0LCBjZSk7CisJCQkgICAgaWYgKGNvbXBhcmlzb24gPiAwKSB7CisJCQkgICAgICAgIHRvcCA9IHJlc3VsdDsKKwkJCSAgICB9IAorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNvbXBhcmlzb24gPCAwKSB7CisJCQkgICAgICAgIGJvdHRvbSA9IHJlc3VsdDsKKwkJCSAgICB9IAorICAgICAgICAgICAgICAgIGVsc2UgeworCQkJICAgICAgICBpZiAoc2Vjb25kID4gY29udGNlKSB7CisJCQkgICAgICAgICAgICB0b3AgPSByZXN1bHQ7CisJCQkgICAgICAgIH0gCisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNlY29uZCA8IGNvbnRjZSkgeworCQkJICAgICAgICAgICAgYm90dG9tID0gcmVzdWx0OworCQkJICAgICAgICB9IAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKwkJCSAgICAgICAgICAgIGJyZWFrOworCQkJICAgICAgICB9CisJCQkgICAgfQorCQkgICAgfQorCQkKKwkJICAgIHJldHVybiByZXN1bHQ7CisJCX0KKyAgICAKKwkgICAgLyoqCisJICAgICAqIEdldHRpbmcgZ2FwIG9mZnNldHMgaW4gdGhlIGludmVyc2UgVUNBCisJICAgICAqIEBwYXJhbSBsaXN0aGVhZGVyIHBhcnNlZCB0b2tlbiBsaXN0cworCSAgICAgKiBAZXhjZXB0aW9uIEV4Y2VwdGlvbiB0aHJvd24gd2hlbiBlcnJvciBvY2N1cnMgd2hpbGUgZmluZGluZyB0aGUgCisJICAgICAqICAgICAgICAgICAgY29sbGF0aW9uIGdhcHMKKwkgICAgICovCisJICAgIHZvaWQgZ2V0SW52ZXJzZUdhcFBvc2l0aW9ucyhDb2xsYXRpb25SdWxlUGFyc2VyLlRva2VuTGlzdEhlYWRlciAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGhlYWRlcikKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93cyBFeGNlcHRpb24gCisJICAgIHsKKwkgICAgICAgIC8vIHJlc2V0IGFsbCB0aGUgZ2FwcworCQkgICAgQ29sbGF0aW9uUnVsZVBhcnNlci5Ub2tlbiB0b2tlbiA9IGxpc3RoZWFkZXIubV9maXJzdF87CisJICAgICAgICBpbnQgdG9rZW5zdHJlbmd0aCA9IHRva2VuLm1fc3RyZW5ndGhfOworCQorCQkJZm9yIChpbnQgaSA9IDA7IGkgPCAzOyBpICsrKSB7CisJCQkgICAgbGlzdGhlYWRlci5tX2dhcHNIaV9bMyAqIGldID0gMDsKKwkJCSAgICBsaXN0aGVhZGVyLm1fZ2Fwc0hpX1szICogaSArIDFdID0gMDsKKwkJCSAgICBsaXN0aGVhZGVyLm1fZ2Fwc0hpX1szICogaSArIDJdID0gMDsKKwkJCSAgICBsaXN0aGVhZGVyLm1fZ2Fwc0xvX1szICogaV0gPSAwOworCQkJICAgIGxpc3RoZWFkZXIubV9nYXBzTG9fWzMgKiBpICsgMV0gPSAwOworCQkJICAgIGxpc3RoZWFkZXIubV9nYXBzTG9fWzMgKiBpICsgMl0gPSAwOworCQkJICAgIGxpc3RoZWFkZXIubV9udW1TdHJfW2ldID0gMDsKKwkJCSAgICBsaXN0aGVhZGVyLm1fZlN0clRva2VuX1tpXSA9IG51bGw7CisJCQkgICAgbGlzdGhlYWRlci5tX2xTdHJUb2tlbl9baV0gPSBudWxsOworCQkJICAgIGxpc3RoZWFkZXIubV9wb3NfW2ldID0gLTE7CisJCSAgICB9CisJCisJICAgICAgICBpZiAoKGxpc3RoZWFkZXIubV9iYXNlQ0VfID4+PiAyNCkgCisgICAgICAgICAgICAgICAgPj0gUnVsZUJhc2VkQ29sbGF0b3IuVUNBX0NPTlNUQU5UU18uUFJJTUFSWV9JTVBMSUNJVF9NSU5fCisJICAgICAgICAgICAgJiYgKGxpc3RoZWFkZXIubV9iYXNlQ0VfID4+PiAyNCkKKyAgICAgICAgICAgICAgICA8IFJ1bGVCYXNlZENvbGxhdG9yLlVDQV9DT05TVEFOVFNfLlBSSU1BUllfSU1QTElDSVRfTUFYXykgCisgICAgICAgICAgICB7IAorCSAgICAgICAgICAgIC8vIGltcGxpY2l0cyAtCisJCQkgICAgbGlzdGhlYWRlci5tX3Bvc19bMF0gPSAwOworCQkJICAgIGludCB0MSA9IGxpc3RoZWFkZXIubV9iYXNlQ0VfOworCQkJICAgIGludCB0MiA9IGxpc3RoZWFkZXIubV9iYXNlQ29udENFXzsKKwkJCSAgICBsaXN0aGVhZGVyLm1fZ2Fwc0xvX1swXSA9IG1lcmdlQ0UodDEsIHQyLCAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGF0b3IuUFJJTUFSWSk7CisJCQkgICAgbGlzdGhlYWRlci5tX2dhcHNMb19bMV0gPSBtZXJnZUNFKHQxLCB0MiwgCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxhdG9yLlNFQ09OREFSWSk7CisJCQkgICAgbGlzdGhlYWRlci5tX2dhcHNMb19bMl0gPSBtZXJnZUNFKHQxLCB0MiwgCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxhdG9yLlRFUlRJQVJZKTsKKwkJCSAgICBpZiAobGlzdGhlYWRlci5tX2Jhc2VDRV8gPCAweEVGMDAwMDAwKSB7CisJCQkgICAgICAgIC8vIGZpcnN0IGltcGxpY2l0cyBoYXZlIHRocmVlIGJ5dGUgcHJpbWFyaWVzLCB3aXRoIGEgZ2FwIG9mCisgICAgICAgICAgICAgICAgICAgIC8vIG9uZSBzbyB3ZSBlc2VudGlhbGx5IG5lZWQgdG8gYWRkIDIgdG8gdGhlIHRvcCBieXRlIGluIAorCSAgICAgICAgICAgICAgICAvLyBsaXN0aGVhZGVyLm1fYmFzZUNvbnRDRV8KKwkJCSAgICAgICAgdDIgKz0gMHgwMjAwMDAwMDsKKwkJCSAgICB9IAorCSAgICAgICAgICAgIGVsc2UgeworCQkJICAgICAgICAvLyBzZWNvbmQgaW1wbGljaXRzIGhhdmUgZm91ciBieXRlIHByaW1hcmllcywgd2l0aCBhIGdhcCBvZgorICAgICAgICAgICAgICAgICAgICAvLyBJTVBMSUNJVF9MQVNUMl9NVUxUSVBMSUVSXworCQkJICAgICAgICAvLyBOb3csIHRoaXMgZ3V5IGlzIG5vdCByZWFsbHkgYWNjZXNzaWJsZSBoZXJlLCBzbyB1bnRpbCB3ZSAKKwkgICAgICAgICAgICAgICAgLy8gZmluZCBhIGJldHRlciB3YXkgdG8gcGFzcyBpdCBhcm91bmQsIGFzc3VtZSB0aGF0IHRoZSBnYXAgaXMgMQorCQkJICAgICAgICB0MiArPSAweDAwMDIwMDAwOworCQkJICAgIH0KKwkJICAgICAgICBsaXN0aGVhZGVyLm1fZ2Fwc0hpX1swXSA9IG1lcmdlQ0UodDEsIHQyLCAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGF0b3IuUFJJTUFSWSk7CisJCSAgICAgICAgbGlzdGhlYWRlci5tX2dhcHNIaV9bMV0gPSBtZXJnZUNFKHQxLCB0MiwgCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxhdG9yLlNFQ09OREFSWSk7CisJCSAgICAgICAgbGlzdGhlYWRlci5tX2dhcHNIaV9bMl0gPSBtZXJnZUNFKHQxLCB0MiwgCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxhdG9yLlRFUlRJQVJZKTsKKwkJICAgIH0gCisJICAgICAgICBlbHNlIGlmIChsaXN0aGVhZGVyLm1faW5kaXJlY3RfID09IHRydWUgCisgICAgICAgICAgICAgICAgICAgICAmJiBsaXN0aGVhZGVyLm1fbmV4dENFXyAhPSAwKSB7CisJCSAgICAgICAgbGlzdGhlYWRlci5tX3Bvc19bMF0gPSAwOworCQkJICAgIGludCB0MSA9IGxpc3RoZWFkZXIubV9iYXNlQ0VfOworCQkJICAgIGludCB0MiA9IGxpc3RoZWFkZXIubV9iYXNlQ29udENFXzsKKwkJCSAgICBsaXN0aGVhZGVyLm1fZ2Fwc0xvX1swXSA9IG1lcmdlQ0UodDEsIHQyLCAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGF0b3IuUFJJTUFSWSk7CisJCQkgICAgbGlzdGhlYWRlci5tX2dhcHNMb19bMV0gPSBtZXJnZUNFKHQxLCB0MiwgCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxhdG9yLlNFQ09OREFSWSk7CisJCQkgICAgbGlzdGhlYWRlci5tX2dhcHNMb19bMl0gPSBtZXJnZUNFKHQxLCB0MiwgCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxhdG9yLlRFUlRJQVJZKTsKKwkJCSAgICB0MSA9IGxpc3RoZWFkZXIubV9uZXh0Q0VfOworCQkJICAgIHQyID0gbGlzdGhlYWRlci5tX25leHRDb250Q0VfOworCQkJICAgIGxpc3RoZWFkZXIubV9nYXBzSGlfWzBdID0gbWVyZ2VDRSh0MSwgdDIsIAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsYXRvci5QUklNQVJZKTsKKwkJCSAgICBsaXN0aGVhZGVyLm1fZ2Fwc0hpX1sxXSA9IG1lcmdlQ0UodDEsIHQyLCAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGF0b3IuU0VDT05EQVJZKTsKKwkJCSAgICBsaXN0aGVhZGVyLm1fZ2Fwc0hpX1syXSA9IG1lcmdlQ0UodDEsIHQyLCAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGF0b3IuVEVSVElBUlkpOworCQkJfSAKKwkgICAgICAgIGVsc2UgeworCQkJICAgIHdoaWxlICh0cnVlKSB7CisJCQkgICAgICAgIGlmICh0b2tlbnN0cmVuZ3RoIDwgQ0VfQkFTSUNfU1RSRU5HVEhfTElNSVRfKSB7CisJICAgICAgICAgICAgICAgICAgICBsaXN0aGVhZGVyLm1fcG9zX1t0b2tlbnN0cmVuZ3RoXSAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gZ2V0SW52ZXJzZU5leHQobGlzdGhlYWRlciwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vuc3RyZW5ndGgpOworCQkJICAgICAgICAgICAgaWYgKGxpc3RoZWFkZXIubV9wb3NfW3Rva2Vuc3RyZW5ndGhdID49IDApIHsKKwkJCSAgICAgICAgICAgICAgICBsaXN0aGVhZGVyLm1fZlN0clRva2VuX1t0b2tlbnN0cmVuZ3RoXSA9IHRva2VuOworCQkJICAgICAgICAgICAgfSAKKwkgICAgICAgICAgICAgICAgICAgIGVsc2UgeyAKKwkgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgQ0UgbXVzdCBiZSBpbXBsaWNpdCwgc2luY2UgaXQncyBub3QgaW4gdGhlIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRhYmxlIAorCQkJCSAgICAgICAgICAgIC8vIEVycm9yCisJCQkJICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigiSW50ZXJuYWwgcHJvZ3JhbSBlcnJvciIpOworCQkJICAgICAgICAgICAgfQorCQkJICAgICAgICB9CisJCQkKKwkJCSAgICAgICAgd2hpbGUgKHRva2VuICE9IG51bGwgJiYgdG9rZW4ubV9zdHJlbmd0aF8gPj0gdG9rZW5zdHJlbmd0aCkgCisgICAgICAgICAgICAgICAgICAgIHsKKwkJCQkgICAgICAgIGlmICh0b2tlbnN0cmVuZ3RoIDwgQ0VfQkFTSUNfU1RSRU5HVEhfTElNSVRfKSB7CisJCQkJICAgICAgICAgICAgbGlzdGhlYWRlci5tX2xTdHJUb2tlbl9bdG9rZW5zdHJlbmd0aF0gPSB0b2tlbjsKKwkJCQkgICAgICAgIH0KKwkJCQkgICAgICAgIHRva2VuID0gdG9rZW4ubV9uZXh0XzsKKwkJCQkgICAgfQorCQkJICAgICAgICBpZiAodG9rZW5zdHJlbmd0aCA8IENFX0JBU0lDX1NUUkVOR1RIX0xJTUlUXyAtIDEpIHsKKwkJCSAgICAgICAgICAgIC8vIGNoZWNrIGlmIHByZXZpb3VzIGludGVydmFsIGlzIHRoZSBzYW1lIGFuZCBtZXJnZSB0aGUgCisJICAgICAgICAgICAgICAgICAgICAvLyBpbnRlcnZhbHMgaWYgaXQgaXMgc28KKwkJCSAgICAgICAgICAgIGlmIChsaXN0aGVhZGVyLm1fcG9zX1t0b2tlbnN0cmVuZ3RoXSAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09IGxpc3RoZWFkZXIubV9wb3NfW3Rva2Vuc3RyZW5ndGggKyAxXSkgeworCQkJICAgICAgICAgICAgICAgIGxpc3RoZWFkZXIubV9mU3RyVG9rZW5fW3Rva2Vuc3RyZW5ndGhdIAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGxpc3RoZWFkZXIubV9mU3RyVG9rZW5fW3Rva2Vuc3RyZW5ndGggCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAxXTsKKwkJCSAgICAgICAgICAgICAgICBsaXN0aGVhZGVyLm1fZlN0clRva2VuX1t0b2tlbnN0cmVuZ3RoICsgMV0gPSBudWxsOworCQkJICAgICAgICAgICAgICAgIGxpc3RoZWFkZXIubV9sU3RyVG9rZW5fW3Rva2Vuc3RyZW5ndGggKyAxXSA9IG51bGw7CisJCQkgICAgICAgICAgICAgICAgbGlzdGhlYWRlci5tX3Bvc19bdG9rZW5zdHJlbmd0aCArIDFdID0gLTE7CisJCQkgICAgICAgICAgICB9CisJCQkgICAgICAgIH0KKwkJCSAgICAgICAgaWYgKHRva2VuICE9IG51bGwpIHsKKwkJCSAgICAgICAgICAgIHRva2Vuc3RyZW5ndGggPSB0b2tlbi5tX3N0cmVuZ3RoXzsKKwkJCSAgICAgICAgfSAKKwkgICAgICAgICAgICAgICAgZWxzZSB7CisJCQkgICAgICAgICAgICBicmVhazsKKwkJCSAgICAgICAgfQorCQkJICAgIH0KKwkJICAgICAgICBmb3IgKGludCBzdCA9IDA7IHN0IDwgMzsgc3QgKyspIHsKKwkgICAgICAgICAgICAgICAgaW50IHBvcyA9IGxpc3RoZWFkZXIubV9wb3NfW3N0XTsKKwkJICAgICAgICAgICAgaWYgKHBvcyA+PSAwKSB7CisJCSAgICAgICAgICAgICAgICBpbnQgdDEgPSBtX3RhYmxlX1szICogcG9zXTsKKwkJICAgICAgICAgICAgICAgIGludCB0MiA9IG1fdGFibGVfWzMgKiBwb3MgKyAxXTsKKwkJICAgICAgICAgICAgICAgIGxpc3RoZWFkZXIubV9nYXBzSGlfWzMgKiBzdF0gPSBtZXJnZUNFKHQxLCB0MiwgCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGF0b3IuUFJJTUFSWSk7CisJCSAgICAgICAgICAgICAgICBsaXN0aGVhZGVyLm1fZ2Fwc0hpX1szICogc3QgKyAxXSA9IG1lcmdlQ0UodDEsIHQyLCAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGF0b3IuU0VDT05EQVJZKTsKKwkJICAgICAgICAgICAgICAgIGxpc3RoZWFkZXIubV9nYXBzSGlfWzMgKiBzdCArIDJdID0gKHQxICYgMHgzZikgPDwgMjQgCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHQyICYgMHgzZikgPDwgMTY7CisJCSAgICAgICAgICAgICAgICBwb3MgLS07CisJCSAgICAgICAgICAgICAgICB0MSA9IG1fdGFibGVfWzMgKiBwb3NdOworCQkgICAgICAgICAgICAgICAgdDIgPSBtX3RhYmxlX1szICogcG9zICsgMV07CisJCSAgICAgICAgICAgICAgICBsaXN0aGVhZGVyLm1fZ2Fwc0xvX1szICogc3RdID0gbWVyZ2VDRSh0MSwgdDIsIAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxhdG9yLlBSSU1BUlkpOworCQkgICAgICAgICAgICAgICAgbGlzdGhlYWRlci5tX2dhcHNMb19bMyAqIHN0ICsgMV0gPSBtZXJnZUNFKHQxLCB0MiwgCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxhdG9yLlNFQ09OREFSWSk7CisJCSAgICAgICAgICAgICAgICBsaXN0aGVhZGVyLm1fZ2Fwc0xvX1szICogc3QgKyAyXSA9ICh0MSAmIDB4M2YpIDw8IDI0IAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICh0MiAmIDB4M2YpIDw8IDE2OworCQkgICAgICAgICAgICB9CisJCSAgICAgICAgfQorCQkgICAgfQorICAgICAgICB9CisJICAgIAorCSAgICAvKioKKwkgICAgICogR2V0cyB0aGUgbmV4dCBDRSBpbiB0aGUgaW52ZXJzZSB0YWJsZQorCSAgICAgKiBAcGFyYW0gbGlzdGhlYWRlciB0b2tlbiBsaXN0IGhlYWRlcgorCSAgICAgKiBAcGFyYW0gc3RyZW5ndGggY29sbGF0aW9uIHN0cmVuZ3RoCisJICAgICAqIEByZXR1cm4gbmV4dCBjZQorCSAgICAgKi8KKwkgICAgcHJpdmF0ZSBmaW5hbCBpbnQgZ2V0SW52ZXJzZU5leHQoQ29sbGF0aW9uUnVsZVBhcnNlci5Ub2tlbkxpc3RIZWFkZXIgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RoZWFkZXIsIAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RyZW5ndGgpIAorCSAgICB7CisJCSAgICBpbnQgY2UgPSBsaXN0aGVhZGVyLm1fYmFzZUNFXzsKKwkJICAgIGludCBzZWNvbmRjZSA9IGxpc3RoZWFkZXIubV9iYXNlQ29udENFXzsgCisJCSAgICBpbnQgcmVzdWx0ID0gZmluZEludmVyc2VDRShjZSwgc2Vjb25kY2UpOworCQkJCisJCSAgICBpZiAocmVzdWx0IDwgMCkgeworCQkgICAgICAgIHJldHVybiAtMTsKKwkJICAgIH0KKwkJCQorCQkgICAgY2UgJj0gU1RSRU5HVEhfTUFTS19bc3RyZW5ndGhdOworCQkgICAgc2Vjb25kY2UgJj0gU1RSRU5HVEhfTUFTS19bc3RyZW5ndGhdOworCQkKKwkJICAgIGludCBuZXh0Y2UgPSBjZTsKKwkJICAgIGludCBuZXh0Y29udGNlID0gc2Vjb25kY2U7CisJCQorCQkgICAgd2hpbGUoKG5leHRjZSAmIFNUUkVOR1RIX01BU0tfW3N0cmVuZ3RoXSkgPT0gY2UgCisJCSAgICAgICAgICAmJiAobmV4dGNvbnRjZSAgJiBTVFJFTkdUSF9NQVNLX1tzdHJlbmd0aF0pID09IHNlY29uZGNlKSB7CisJCSAgICAgICAgbmV4dGNlID0gbV90YWJsZV9bMyAqICgrKyByZXN1bHQpXTsKKwkJICAgICAgICBuZXh0Y29udGNlID0gbV90YWJsZV9bMyAqIHJlc3VsdCArIDFdOworCQkgICAgfQorCQkJCisJCSAgICBsaXN0aGVhZGVyLm1fbmV4dENFXyA9IG5leHRjZTsKKwkJICAgIGxpc3RoZWFkZXIubV9uZXh0Q29udENFXyA9IG5leHRjb250Y2U7CisJCQorCQkgICAgcmV0dXJuIHJlc3VsdDsKKwkJfQorCX0KKworICAgIC8vIHBhY2thZ2UgcHJpdmF0ZSBkYXRhIG1lbWJlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgICogSW52ZXJzZSBVQ0EsIGluc3RhbnRpYXRlIG9ubHkgd2hlbiByZXF1aXJlZAorICAgICAqLworICAgIHN0YXRpYyBmaW5hbCBJbnZlcnNlVUNBIElOVkVSU0VfVUNBXzsgCisgICAgCisgICAgLyoqCisgICAgICogSW5pdGlhbGl6aW5nIHRoZSBpbnZlcnNlIFVDQQorICAgICAqLworICAgIHN0YXRpYyB7CisgICAgICAgIHRyeQorICAgICAgICB7CisgICAgICAgICAgICBTdHJpbmcgaW52ZGF0ID0gIi9jb20vaWJtL2ljdS9pbXBsL2RhdGEvaW52dWNhLmljdSI7CisgICAgICAgICAgICBJbnB1dFN0cmVhbSBpID0gaW52ZGF0LmdldENsYXNzKCkuZ2V0UmVzb3VyY2VBc1N0cmVhbShpbnZkYXQpOworICAgICAgICAgICAgQnVmZmVyZWRJbnB1dFN0cmVhbSBiID0gbmV3IEJ1ZmZlcmVkSW5wdXRTdHJlYW0oaSwgMTEwMDAwKTsKKyAgICAgICAgICAgIElOVkVSU0VfVUNBXyA9IENvbGxhdG9yUmVhZGVyLnJlYWRJbnZlcnNlVUNBKGIpOworICAgICAgICAgICAgYi5jbG9zZSgpOworICAgICAgICAgICAgaS5jbG9zZSgpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkKKyAgICAgICAgeworICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKGUuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvLyBwYWNrYWdlIHByaXZhdGUgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIC8qKgorICAgICAqIFBhcnNlIGFuZCBzZXRzIHRoZSBjb2xsYXRpb24gcnVsZXMgaW4gdGhlIGFyZ3VtZW50IGNvbGxhdG9yCisgICAgICogQHBhcmFtIGNvbGxhdG9yIHRvIHNldAorICAgICAqIEBleGNlcHRpb24gRXhjZXB0aW9uIHRocm93biB3aGVuIGludGVybmFsIHByb2dyYW0gZXJyb3Igb2NjdXJzCisgICAgICovCisgICAgdm9pZCBzZXRSdWxlcyhSdWxlQmFzZWRDb2xsYXRvciBjb2xsYXRvcikgdGhyb3dzIEV4Y2VwdGlvbgorICAgIHsKKyAgICAgICAgaWYgKG1fcGFyc2VyXy5tX3Jlc3VsdExlbmd0aF8gPiAwIHx8IG1fcGFyc2VyXy5tX3JlbW92ZVNldF8gIT0gbnVsbCkgeyAKKwkJICAgIC8vIHdlIGhhdmUgYSBzZXQgb2YgcnVsZXMsIGxldCdzIG1ha2Ugc29tZXRoaW5nIG9mIGl0IAorCQkgICAgYXNzZW1ibGVUYWlsb3JpbmdUYWJsZShjb2xsYXRvcik7CisJCX0gCisJCWVsc2UgeyAvLyBubyBydWxlcywgYnV0IG5vIGVycm9yIGVpdGhlciBtdXN0IGJlIG9ubHkgb3B0aW9ucworCQkgICAgICAgLy8gV2Ugd2lsbCBpbml0IHRoZSBjb2xsYXRvciBmcm9tIFVDQSAgIAorCQkgICAgY29sbGF0b3Iuc2V0V2l0aFVDQVRhYmxlcygpOworCQl9CisgICAgICAgIC8vIEFuZCBzZXQgb25seSB0aGUgb3B0aW9ucworICAgICAgICBtX3BhcnNlcl8uc2V0RGVmYXVsdE9wdGlvbnNJbkNvbGxhdG9yKGNvbGxhdG9yKTsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSB2b2lkIGNvcHlSYW5nZUZyb21VQ0EoQnVpbGRUYWJsZSB0LCBpbnQgc3RhcnQsIGludCBlbmQpIHsKKyAgICAgICAgaW50IHUgPSAwOworICAgICAgICBmb3IgKHUgPSBzdGFydDsgdSA8PSBlbmQ7IHUgKyspIHsKKyAgICAgICAgICAgIC8vIGlmICgoQ0UgPSB1Y21wZTMyX2dldCh0Lm1fbWFwcGluZywgdSkpID09IFVDT0xfTk9UX0ZPVU5ECisgICAgICAgICAgICBpbnQgQ0UgPSB0Lm1fbWFwcGluZ18uZ2V0VmFsdWUodSk7CisgICAgICAgICAgICBpZiAoQ0UgPT0gQ0VfTk9UX0ZPVU5EXyAKKyAgICAgICAgICAgICAgICAvLyB0aGlzIHRlc3QgaXMgZm9yIGNvbnRyYWN0aW9ucyB0aGF0IGFyZSBtaXNzaW5nIHRoZSBzdGFydGluZyAKKyAgICAgICAgICAgICAgICAvLyBlbGVtZW50LiBMb29rcyBsaWtlIGxhdGluLTEgc2hvdWxkIGJlIGRvbmUgYmVmb3JlIAorICAgICAgICAgICAgICAgIC8vIGFzc2VtYmxpbmcgdGhlIHRhYmxlLCBldmVuIGlmIGl0IHJlc3VsdHMgaW4gbW9yZSBmYWxzZSAKKyAgICAgICAgICAgICAgICAvLyBjbG9zdXJlIGVsZW1lbnRzCisgICAgICAgICAgICAgICAgfHwgKGlzQ29udHJhY3Rpb25UYWJsZUVsZW1lbnQoQ0UpIAorICAgICAgICAgICAgICAgICAgICYmIGdldENFKHQubV9jb250cmFjdGlvbnNfLCBDRSwgMCkgPT0gQ0VfTk9UX0ZPVU5EXykpIHsKKyAgICAgICAgICAgICAgICAvL21fdXRpbEVsZW1lbnRfLm1fdWNoYXJzXyA9IHN0ci50b1N0cmluZygpOworICAgICAgICAgICAgICAgIG1fdXRpbEVsZW1lbnRfLm1fdWNoYXJzXyA9IFVDaGFyYWN0ZXIudG9TdHJpbmcodSk7CisgICAgICAgICAgICAgICAgbV91dGlsRWxlbWVudF8ubV9jUG9pbnRzXyA9IG1fdXRpbEVsZW1lbnRfLm1fdWNoYXJzXzsKKyAgICAgICAgICAgICAgICBtX3V0aWxFbGVtZW50Xy5tX3ByZWZpeF8gPSAwOworICAgICAgICAgICAgICAgIG1fdXRpbEVsZW1lbnRfLm1fQ0VMZW5ndGhfID0gMDsKKyAgICAgICAgICAgICAgICBtX3V0aWxDb2xFSXRlcl8uc2V0VGV4dChtX3V0aWxFbGVtZW50Xy5tX3VjaGFyc18pOworICAgICAgICAgICAgICAgIHdoaWxlIChDRSAhPSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuTlVMTE9SREVSKSB7CisgICAgICAgICAgICAgICAgICAgIENFID0gbV91dGlsQ29sRUl0ZXJfLm5leHQoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKENFICE9IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5OVUxMT1JERVIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXRpbEVsZW1lbnRfLm1fQ0VzX1ttX3V0aWxFbGVtZW50Xy5tX0NFTGVuZ3RoXyArK10gCisgICAgICAgICAgICAgICAgICAgICAgICA9IENFOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGFkZEFuRWxlbWVudCh0LCBtX3V0aWxFbGVtZW50Xyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgICAgICAgICAKKyAgICAvKioKKyAgICAgKiAyLiAgRWxpbWluYXRlIHRoZSBuZWdhdGl2ZSBsaXN0cyBieSBkb2luZyB0aGUgZm9sbG93aW5nIGZvciBlYWNoIAorICAgICAqIG5vbi1udWxsIG5lZ2F0aXZlIGxpc3Q6IAorICAgICAqIG8gICBpZiBwcmV2aW91c0NFKGJhc2VDRSwgc3Ryb25nZXN0TikgIT0gc29tZSBMaXN0SGVhZGVyIFgncyBiYXNlQ0UsIAorICAgICAqIGNyZWF0ZSBuZXcgTGlzdEhlYWRlciBYIAorICAgICAqIG8gICByZXZlcnNlIHRoZSBsaXN0LCBhZGQgdG8gdGhlIGVuZCBvZiBYJ3MgcG9zaXRpdmUgbGlzdC4gUmVzZXQgdGhlIAorICAgICAqIHN0cmVuZ3RoIG9mIHRoZSBmaXJzdCBpdGVtIHlvdSBhZGQsIGJhc2VkIG9uIHRoZSBzdHJvbmdlciBzdHJlbmd0aCAKKyAgICAgKiBsZXZlbHMgb2YgdGhlIHR3byBsaXN0cy4gCisgICAgICogCisgICAgICogMy4gIEZvciBlYWNoIExpc3RIZWFkZXIgd2l0aCBhIG5vbi1udWxsIHBvc2l0aXZlIGxpc3Q6IAorICAgICAqIG8gICBGaW5kIGFsbCBjaGFyYWN0ZXIgc3RyaW5ncyB3aXRoIENFcyBiZXR3ZWVuIHRoZSBiYXNlQ0UgYW5kIHRoZSAKKyAgICAgKiBuZXh0L3ByZXZpb3VzIENFLCBhdCB0aGUgc3RyZW5ndGggb2YgdGhlIGZpcnN0IHRva2VuLiBBZGQgdGhlc2UgdG8gdGhlIAorICAgICAqIHRhaWxvcmluZy4gCisgICAgICogICAgID8gVGhhdCBpcywgaWYgVUNBIGhhcyAuLi4gIHggPDw8IFggPDwgeCcgPDw8IFgnIDwgeSAuLi4sIGFuZCB0aGUgCisgICAgICogICAgICAgdGFpbG9yaW5nIGhhcyAmIHggPCB6Li4uIAorICAgICAqICAgICA/IFRoZW4gd2UgY2hhbmdlIHRoZSB0YWlsb3JpbmcgdG8gJiB4ICA8PDwgWCA8PCB4JyA8PDwgWCcgPCB6IC4uLiAKKyAgICAgKiAKKyAgICAgKiBJdCBpcyBwb3NzaWJsZSB0aGF0IHRoaXMgcGFydCBzaG91bGQgYmUgZG9uZSBldmVuIHdoaWxlIGNvbnN0cnVjdGluZyBsaXN0CisgICAgICogVGhlIHByb2JsZW0gaXMgdGhhdCBpdCBpcyB1bmtub3duIHdoYXQgaXMgZ29pbmcgdG8gYmUgdGhlIHN0cm9uZ2VzdCAKKyAgICAgKiB3ZWlnaHQuCisgICAgICogU28gd2UgbWlnaHQgYXMgd2VsbCBkbyBpdCBoZXJlCisgICAgICogbyAgIEFsbG9jYXRlIENFcyBmb3IgZWFjaCB0b2tlbiBpbiB0aGUgbGlzdCwgYmFzZWQgb24gdGhlIHRvdGFsIG51bWJlciBOIAorICAgICAqIG9mIHRoZSBsYXJnZXN0IGxldmVsIGRpZmZlcmVuY2UsIGFuZCB0aGUgZ2FwIEcgYmV0d2VlbiBiYXNlQ0UgYW5kIG5leHRDRSAKKyAgICAgKiBhdCB0aGF0IGxldmVsLiBUaGUgcmVsYXRpb24gKiBiZXR3ZWVuIHRoZSBsYXN0IGl0ZW0gYW5kIG5leHRDRSBpcyB0aGUgCisgICAgICogc2FtZSBhcyB0aGUgc3Ryb25nZXN0IHN0cmVuZ3RoLiAKKyAgICAgKiBvICAgRXhhbXBsZTogYmFzZUNFIDwgYSA8PCBiIDw8PCBxIDw8IGMgPCBkIDwgZSAqIG5leHRDRShYLDEpIAorICAgICAqICAgICA/IFRoZXJlIGFyZSAzIHByaW1hcnkgaXRlbXM6IGEsIGQsIGUuIEZpdCB0aGVtIGludG8gdGhlIHByaW1hcnkgZ2FwLiAKKyAgICAgKiAgICAgVGhlbiBmaXQgYiBhbmQgYyBpbnRvIHRoZSBzZWNvbmRhcnkgZ2FwIGJldHdlZW4gYSBhbmQgZCwgdGhlbiBmaXQgcSAKKyAgICAgKiAgICAgaW50byB0aGUgdGVydGlhcnkgZ2FwIGJldHdlZW4gYiBhbmQgYy4gCisgICAgICogbyAgIEV4YW1wbGU6IGJhc2VDRSA8PCBiIDw8PCBxIDw8IGMgKiBuZXh0Q0UoWCwyKSAKKyAgICAgKiAgICAgPyBUaGVyZSBhcmUgMiBzZWNvbmRhcnkgaXRlbXM6IGIsIGMuIEZpdCB0aGVtIGludG8gdGhlIHNlY29uZGFyeSBnYXAuIAorICAgICAqICAgICAgIFRoZW4gZml0IHEgaW50byB0aGUgdGVydGlhcnkgZ2FwIGJldHdlZW4gYiBhbmQgYy4gCisgICAgICogbyAgIFdoZW4gaW5jcmVtZW50aW5nIHByaW1hcnkgdmFsdWVzLCB3ZSB3aWxsIG5vdCBjcm9zcyBoaWdoIGJ5dGUgCisgICAgICogICAgIGJvdW5kYXJpZXMgZXhjZXB0IHdoZXJlIHRoZXJlIGlzIG9ubHkgYSBzaW5nbGUtYnl0ZSBwcmltYXJ5LiBUaGF0IGlzIAorICAgICAqICAgICB0byBlbnN1cmUgdGhhdCB0aGUgc2NyaXB0IHJlb3JkZXJpbmcgd2lsbCBjb250aW51ZSB0byB3b3JrLiAKKyAgICAgKiBAcGFyYW0gY29sbGF0b3IgdGhlIHJ1bGUgYmFzZWQgY29sbGF0b3IgdG8gdXBkYXRlCisgICAgICogQGV4Y2VwdGlvbiBFeGNlcHRpb24gdGhyb3duIHdoZW4gaW50ZXJuYWwgcHJvZ3JhbSBlcnJvciBvY2N1cnMKKyAgICAgKi8KKyAgICB2b2lkIGFzc2VtYmxlVGFpbG9yaW5nVGFibGUoUnVsZUJhc2VkQ29sbGF0b3IgY29sbGF0b3IpIHRocm93cyBFeGNlcHRpb24KKyAgICB7CisgICAgICAgIAorCSAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fcGFyc2VyXy5tX3Jlc3VsdExlbmd0aF87IGkgKyspIHsKKwkJICAgIC8vIG5vdyB3ZSBuZWVkIHRvIGdlbmVyYXRlIHRoZSBDRXMgIAorCQkgICAgLy8gV2Ugc3R1ZmYgdGhlIGluaXRpYWwgdmFsdWUgaW4gdGhlIGJ1ZmZlcnMsIGFuZCBpbmNyZWFzZSB0aGUgCisgICAgICAgICAgICAvLyBhcHByb3ByaWF0ZSBidWZmZXIgYWNjb3JkaW5nIHRvIHN0cmVuZ3RoCisJCSAgICBpbml0QnVmZmVycyhtX3BhcnNlcl8ubV9saXN0SGVhZGVyX1tpXSk7CisJICAgIH0KKwkJCisgICAgICAgIGlmIChtX3BhcnNlcl8ubV92YXJpYWJsZVRvcF8gIT0gbnVsbCkgeyAKKyAgICAgICAgICAgIC8vIHN0dWZmIHRoZSB2YXJpYWJsZSB0b3AgdmFsdWUKKwkJICAgIG1fcGFyc2VyXy5tX29wdGlvbnNfLm1fdmFyaWFibGVUb3BWYWx1ZV8gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG1fcGFyc2VyXy5tX3ZhcmlhYmxlVG9wXy5tX0NFX1swXSA+Pj4gMTY7CisJCSAgICAvLyByZW1vdmUgaXQgZnJvbSB0aGUgbGlzdAorCQkgICAgaWYgKG1fcGFyc2VyXy5tX3ZhcmlhYmxlVG9wXy5tX2xpc3RIZWFkZXJfLm1fZmlyc3RfIAorICAgICAgICAgICAgICAgID09IG1fcGFyc2VyXy5tX3ZhcmlhYmxlVG9wXykgeyAvLyBmaXJzdCBpbiBsaXN0CisJCSAgICAgICAgbV9wYXJzZXJfLm1fdmFyaWFibGVUb3BfLm1fbGlzdEhlYWRlcl8ubV9maXJzdF8gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbV9wYXJzZXJfLm1fdmFyaWFibGVUb3BfLm1fbmV4dF87CisJCSAgICB9CisJCSAgICBpZiAobV9wYXJzZXJfLm1fdmFyaWFibGVUb3BfLm1fbGlzdEhlYWRlcl8ubV9sYXN0XyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09IG1fcGFyc2VyXy5tX3ZhcmlhYmxlVG9wXykgeyAKKyAgICAgICAgICAgICAgICAvLyBmaXJzdCBpbiBsaXN0CisJCSAgICAgICAgbV9wYXJzZXJfLm1fdmFyaWFibGVUb3BfLm1fbGlzdEhlYWRlcl8ubV9sYXN0XyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG1fcGFyc2VyXy5tX3ZhcmlhYmxlVG9wXy5tX3ByZXZpb3VzXzsgICAgCisJCSAgICB9CisJCSAgICBpZiAobV9wYXJzZXJfLm1fdmFyaWFibGVUb3BfLm1fbmV4dF8gIT0gbnVsbCkgeworCQkgICAgICAgIG1fcGFyc2VyXy5tX3ZhcmlhYmxlVG9wXy5tX25leHRfLm1fcHJldmlvdXNfIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbV9wYXJzZXJfLm1fdmFyaWFibGVUb3BfLm1fcHJldmlvdXNfOworCQkgICAgfQorCQkgICAgaWYgKG1fcGFyc2VyXy5tX3ZhcmlhYmxlVG9wXy5tX3ByZXZpb3VzXyAhPSBudWxsKSB7CisJCSAgICAgICAgbV9wYXJzZXJfLm1fdmFyaWFibGVUb3BfLm1fcHJldmlvdXNfLm1fbmV4dF8gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBtX3BhcnNlcl8ubV92YXJpYWJsZVRvcF8ubV9uZXh0XzsKKwkJICAgIH0KKwkJfQorCQkKKwkJQnVpbGRUYWJsZSB0ID0gbmV3IEJ1aWxkVGFibGUobV9wYXJzZXJfKTsKKwkJCisgICAgICAgIC8vIEFmdGVyIHRoaXMsIHdlIGhhdmUgYXNzaWduZWQgQ0UgdmFsdWVzIHRvIGFsbCByZWd1bGFyIENFcyBub3cgd2UgCisJCS8vIHdpbGwgZ28gdGhyb3VnaCBsaXN0IG9uY2UgbW9yZSBhbmQgcmVzb2x2ZSBleHBhbnNpb25zLCBtYWtlIAorCQkvLyBVQ0FFbGVtZW50cyBzdHJ1Y3RzIGFuZCBhZGQgdGhlbSB0byB0YWJsZSAgICAgICAgICAgICAgIAorCQlmb3IgKGludCBpID0gMDsgaSA8IG1fcGFyc2VyXy5tX3Jlc3VsdExlbmd0aF87IGkgKyspIHsKKwkJICAgIC8vIG5vdyB3ZSBuZWVkIHRvIGdlbmVyYXRlIHRoZSBDRXMgCisJCSAgICAvLyBXZSBzdHVmZiB0aGUgaW5pdGlhbCB2YWx1ZSBpbiB0aGUgYnVmZmVycywgYW5kIGluY3JlYXNlIHRoZSAKKwkJICAgIC8vIGFwcHJvcHJpYXRlIGJ1ZmZlciBhY2NvcmRpbmcgdG8gc3RyZW5ndGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKwkJICAgIGNyZWF0ZUVsZW1lbnRzKHQsIG1fcGFyc2VyXy5tX2xpc3RIZWFkZXJfW2ldKTsKKwkJfQorCQkKKyAgICAgICAgbV91dGlsRWxlbWVudF8uY2xlYXIoKTsKKyAgICAgICAgU3RyaW5nQnVmZmVyIHN0ciA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgCisJCS8vIGFkZCBsYXRpbi0xIHN0dWZmCisgICAgICAvKiBhZGQgbGF0aW4tMSBzdHVmZiAqLworICAgICAgY29weVJhbmdlRnJvbVVDQSh0LCAwLCAweEZGKTsKKyAgICAKKyAgICAgIC8qIGFkZCBzdHVmZiBmb3IgY29weWluZyAqLworICAgICAgaWYobV9wYXJzZXJfLm1fY29weVNldF8gIT0gbnVsbCkgeworICAgICAgICBpbnQgaSA9IDA7CisgICAgICAgIGZvcihpID0gMDsgaSA8IG1fcGFyc2VyXy5tX2NvcHlTZXRfLmdldFJhbmdlQ291bnQoKTsgaSsrKSB7CisgICAgICAgICAgY29weVJhbmdlRnJvbVVDQSh0LCBtX3BhcnNlcl8ubV9jb3B5U2V0Xy5nZXRSYW5nZVN0YXJ0KGkpLCBtX3BhcnNlcl8ubV9jb3B5U2V0Xy5nZXRSYW5nZUVuZChpKSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIGNvcHkgY29udHJhY3Rpb25zIGZyb20gdGhlIFVDQSAtIHRoaXMgaXMgZmVsdCBtb3N0bHkgZm9yIGN5cmlsbGljCisJCWNoYXIgY29udHNbXSA9IFJ1bGVCYXNlZENvbGxhdG9yLlVDQV9DT05UUkFDVElPTlNfOworICAgICAgICBpbnQgb2Zmc2V0ID0gMDsKKwkJd2hpbGUgKGNvbnRzW29mZnNldF0gIT0gMCkgeworCQkgICAgLy8gdGFpbG9yZWRDRSA9IHVjbXBlMzJfZ2V0KHQubV9tYXBwaW5nLCAqY29udHMpOworICAgICAgICAgICAgaW50IHRhaWxvcmVkQ0UgPSB0Lm1fbWFwcGluZ18uZ2V0VmFsdWUoY29udHNbb2Zmc2V0XSk7CisJCSAgICBpZiAodGFpbG9yZWRDRSAhPSBDRV9OT1RfRk9VTkRfKSB7ICAgICAgICAgCisJCSAgICAgICAgYm9vbGVhbiBuZWVkVG9BZGQgPSB0cnVlOworCQkgICAgICAgIGlmIChpc0NvbnRyYWN0aW9uVGFibGVFbGVtZW50KHRhaWxvcmVkQ0UpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChpc1RhaWxvcmVkKHQubV9jb250cmFjdGlvbnNfLCB0YWlsb3JlZENFLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHMsIG9mZnNldCArIDEpID09IHRydWUpIHsKKwkJICAgICAgICAgICAgICAgIG5lZWRUb0FkZCA9IGZhbHNlOworCQkgICAgICAgICAgICB9CisJCSAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmKG1fcGFyc2VyXy5tX3JlbW92ZVNldF8gIT0gbnVsbCAmJiBtX3BhcnNlcl8ubV9yZW1vdmVTZXRfLmNvbnRhaW5zKGNvbnRzW29mZnNldF0pKSB7CisgICAgICAgICAgICAgICAgICAgIG5lZWRUb0FkZCA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChuZWVkVG9BZGQgPT0gdHJ1ZSkgeyAKKyAgICAgICAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBhZGQgaWYgdGhpcyBjb250cmFjdGlvbiBpcyBub3QgdGFpbG9yZWQuCisJCSAgICAgICAgICAgIG1fdXRpbEVsZW1lbnRfLm1fcHJlZml4XyA9IDA7CisJCSAgICAgICAgICAgIG1fdXRpbEVsZW1lbnRfLm1fcHJlZml4Q2hhcnNfID0gbnVsbDsKKwkJICAgICAgICAgICAgbV91dGlsRWxlbWVudF8ubV9jUG9pbnRzXyA9IG1fdXRpbEVsZW1lbnRfLm1fdWNoYXJzXzsKKyAgICAgICAgICAgICAgICAgICAgc3RyLmRlbGV0ZSgwLCBzdHIubGVuZ3RoKCkpOworICAgICAgICAgICAgICAgICAgICBzdHIuYXBwZW5kKGNvbnRzW29mZnNldF0pOworICAgICAgICAgICAgICAgICAgICBzdHIuYXBwZW5kKGNvbnRzW29mZnNldCArIDFdKTsKKwkJICAgICAgICAgICAgaWYgKGNvbnRzW29mZnNldCArIDJdICE9IDApIHsKKyAgICAJCSAgICAgICAgICAgIHN0ci5hcHBlbmQoY29udHNbb2Zmc2V0ICsgMl0pOworICAgIAkJICAgICAgICB9IAorICAgICAgICAgICAgICAgICAgICBtX3V0aWxFbGVtZW50Xy5tX3VjaGFyc18gPSBzdHIudG9TdHJpbmcoKTsKKyAgICAgICAgICAgICAgICAgICAgbV91dGlsRWxlbWVudF8ubV9DRUxlbmd0aF8gPSAwOworICAgICAgICAgICAgICAgICAgICBtX3V0aWxDb2xFSXRlcl8uc2V0VGV4dChtX3V0aWxFbGVtZW50Xy5tX3VjaGFyc18pOworICAgICAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaW50IENFID0gbV91dGlsQ29sRUl0ZXJfLm5leHQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChDRSAhPSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuTlVMTE9SREVSKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91dGlsRWxlbWVudF8ubV9DRXNfW21fdXRpbEVsZW1lbnRfLm1fQ0VMZW5ndGhfIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytdID0gQ0U7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBhZGRBbkVsZW1lbnQodCwgbV91dGlsRWxlbWVudF8pOworICAgICAgICAgICAgICAgIH0KKwkJICAgIH0gZWxzZSBpZihtX3BhcnNlcl8ubV9yZW1vdmVTZXRfICE9IG51bGwgJiYgbV9wYXJzZXJfLm1fcmVtb3ZlU2V0Xy5jb250YWlucyhjb250c1tvZmZzZXRdKSkgeworICAgICAgICAgICAgICAgIGNvcHlSYW5nZUZyb21VQ0EodCwgY29udHNbb2Zmc2V0XSwgY29udHNbb2Zmc2V0XSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKwkJICAgIG9mZnNldCArPSAzOworCQl9CisgICAgICAgIAorICAgICAgICAvLyBBZGQgY29tcGxldGVseSBpZ25vcmFibGUgZWxlbWVudHMKKyAgICAgICAgcHJvY2Vzc1VDQUNvbXBsZXRlSWdub3JhYmxlcyh0KTsKKyAgICAgICAgCisgICAgICAgIC8vIGNhbm9uaWNhbCBjbG9zdXJlIAorICAgICAgICBjYW5vbmljYWxDbG9zdXJlKHQpOworICAKKwkJLy8gc3RpbGwgbmVlZCB0byBwcm9kdWNlIGNvbXBhdGliaWxpdHkgY2xvc3VyZQorCQlhc3NlbWJsZVRhYmxlKHQsIGNvbGxhdG9yKTsgIAorICAgIH0KKyAgICAKKyAgICAvLyBwcml2YXRlIGlubmVyIGNsYXNzZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIENFR2VuZXJhdG9yIAorICAgIHsKKyAgICAgICAgLy8gcGFja2FnZSBwcml2YXRlIGRhdGEgbWVtYmVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAKKwkgICAgV2VpZ2h0UmFuZ2UgbV9yYW5nZXNfW107CisJICAgIGludCBtX3Jhbmdlc0xlbmd0aF87CisJICAgIGludCBtX2J5dGVTaXplXzsgCisgICAgICAgIGludCBtX3N0YXJ0XzsgCisgICAgICAgIGludCBtX2xpbWl0XzsKKwkgICAgaW50IG1fbWF4Q291bnRfOworCSAgICBpbnQgbV9jb3VudF87CisJICAgIGludCBtX2N1cnJlbnRfOworCSAgICBpbnQgbV9mTG93XzsgLy8gZm9yYmlkZGVuIExvdyAKKwkgICAgaW50IG1fZkhpZ2hfOyAvLyBmb3JiaWRkZW4gSGlnaCAKKyAgICAgICAgCisgICAgICAgIC8vIHBhY2thZ2UgcHJpdmF0ZSBjb25zdHJ1Y3RvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgCisgICAgICAgIENFR2VuZXJhdG9yKCkgCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fcmFuZ2VzXyA9IG5ldyBXZWlnaHRSYW5nZVs3XTsgICAgICAKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSA2OyBpID49IDA7IGkgLS0pIHsKKyAgICAgICAgICAgICAgICBtX3Jhbmdlc19baV0gPSBuZXcgV2VpZ2h0UmFuZ2UoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCX07CisKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBXZWlnaHRSYW5nZSBpbXBsZW1lbnRzIENvbXBhcmFibGUKKyAgICB7CisgICAgICAgIC8vIHB1YmxpYyBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgCisgICAgICAgIC8qKgorICAgICAgICAgKiBDb21wYXJlcyB0aGlzIG9iamVjdCB3aXRoIHRhcmdldAorICAgICAgICAgKiBAcGFyYW0gdGFyZ2V0IG9iamVjdCB0byBjb21wYXJlIHdpdGgKKyAgICAgICAgICogQHJldHVybiAwIGlmIGVxdWFscywgMSBpZiB0aGlzIGlzID4gdGFyZ2V0LCAtMSBvdGhlcndpc2UKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBpbnQgY29tcGFyZVRvKE9iamVjdCB0YXJnZXQpIAorICAgICAgICB7CisgICAgICAgICAgICBpZiAodGhpcyA9PSB0YXJnZXQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGludCB0c3RhcnQgPSAoKFdlaWdodFJhbmdlKXRhcmdldCkubV9zdGFydF87ICAgCisgICAgICAgICAgICBpZiAobV9zdGFydF8gPT0gdHN0YXJ0KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobV9zdGFydF8gPiB0c3RhcnQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLyoqCisgICAgICAgICAqIEluaXRpYWxpemUgCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgdm9pZCBjbGVhcigpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fc3RhcnRfID0gMDsKKyAgICAgICAgICAgIG1fZW5kXyA9IDA7CisgICAgICAgICAgICBtX2xlbmd0aF8gPSAwOyAKKyAgICAgICAgICAgIG1fY291bnRfID0gMDsKKyAgICAgICAgICAgIG1fbGVuZ3RoMl8gPSAwOworICAgICAgICAgICAgbV9jb3VudDJfID0gMDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gcGFja2FnZSBwcml2YXRlIGRhdGEgbWVtYmVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAKKwkgICAgaW50IG1fc3RhcnRfOworICAgICAgICBpbnQgbV9lbmRfOworCSAgICBpbnQgbV9sZW5ndGhfOyAKKyAgICAgICAgaW50IG1fY291bnRfOworCSAgICBpbnQgbV9sZW5ndGgyXzsKKwkgICAgaW50IG1fY291bnQyXzsKKyAgICAgICAgCisgICAgICAgIC8vIHBhY2thZ2UgcHJpdmF0ZSBjb25zdHJ1Y3RvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgCisgICAgICAgIFdlaWdodFJhbmdlKCkKKyAgICAgICAgeworICAgICAgICAgICAgY2xlYXIoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLyoqCisgICAgICAgICAqIENvcHkgY29uc3RydWN0b3IuCisgICAgICAgICAqIENsb25lYWJsZSBpcyB0cm91Ymxlc29tZSwgbmVlZHMgdG8gY2hlY2sgZm9yIGV4Y2VwdGlvbgorICAgICAgICAgKiBAcGFyYW0gc291cmNlIHRvIGNsb25lCisgICAgICAgICAqLworICAgICAgICBXZWlnaHRSYW5nZShXZWlnaHRSYW5nZSBzb3VyY2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fc3RhcnRfID0gc291cmNlLm1fc3RhcnRfOworICAgICAgICAgICAgbV9lbmRfID0gc291cmNlLm1fZW5kXzsKKyAgICAgICAgICAgIG1fbGVuZ3RoXyA9IHNvdXJjZS5tX2xlbmd0aF87IAorICAgICAgICAgICAgbV9jb3VudF8gPSBzb3VyY2UubV9jb3VudF87CisgICAgICAgICAgICBtX2xlbmd0aDJfID0gc291cmNlLm1fbGVuZ3RoMl87CisgICAgICAgICAgICBtX2NvdW50Ml8gPSBzb3VyY2UubV9jb3VudDJfOworICAgICAgICB9CisJfTsKKwkKKwlwcml2YXRlIHN0YXRpYyBjbGFzcyBNYXhKYW1vRXhwYW5zaW9uVGFibGUKKwl7CisJCS8vIHBhY2thZ2UgcHJpdmF0ZSBkYXRhIG1lbWJlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkJCisJICAgIFZlY3RvciBtX2VuZEV4cGFuc2lvbkNFXzsKKwkgICAgLy8gdmVjdG9yIG9mIGJvb2xlYW5zCisJICAgIFZlY3RvciBtX2lzVl87CisJICAgIGJ5dGUgbV9tYXhMU2l6ZV87CisJICAgIGJ5dGUgbV9tYXhWU2l6ZV87CisJICAgIGJ5dGUgbV9tYXhUU2l6ZV87CisJICAgIAorCSAgICAvLyBwYWNrYWdlIHByaXZhdGUgY29uc3RydWN0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJICAgIAorCSAgICBNYXhKYW1vRXhwYW5zaW9uVGFibGUoKQorCSAgICB7CisJICAgIAltX2VuZEV4cGFuc2lvbkNFXyA9IG5ldyBWZWN0b3IoKTsKKwkgICAgCW1faXNWXyA9IG5ldyBWZWN0b3IoKTsKKwkgICAgCW1fZW5kRXhwYW5zaW9uQ0VfLmFkZChuZXcgSW50ZWdlcigwKSk7CisJICAgIAltX2lzVl8uYWRkKG5ldyBCb29sZWFuKGZhbHNlKSk7CisgICAgICAgICAgICBtX21heExTaXplXyA9IDE7CisgICAgICAgICAgICBtX21heFZTaXplXyA9IDE7CisgICAgICAgICAgICBtX21heFRTaXplXyA9IDE7CisJICAgIH0KKyAgICAgICAgCisgICAgICAgIE1heEphbW9FeHBhbnNpb25UYWJsZShNYXhKYW1vRXhwYW5zaW9uVGFibGUgdGFibGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fZW5kRXhwYW5zaW9uQ0VfID0gKFZlY3Rvcil0YWJsZS5tX2VuZEV4cGFuc2lvbkNFXy5jbG9uZSgpOworICAgICAgICAgICAgbV9pc1ZfID0gKFZlY3Rvcil0YWJsZS5tX2lzVl8uY2xvbmUoKTsKKyAgICAgICAgICAgIG1fbWF4TFNpemVfID0gdGFibGUubV9tYXhMU2l6ZV87CisgICAgICAgICAgICBtX21heFZTaXplXyA9IHRhYmxlLm1fbWF4VlNpemVfOworICAgICAgICAgICAgbV9tYXhUU2l6ZV8gPSB0YWJsZS5tX21heFRTaXplXzsKKyAgICAgICAgfQorCX07CisJCisJcHJpdmF0ZSBzdGF0aWMgY2xhc3MgTWF4RXhwYW5zaW9uVGFibGUgCisJeworCQkvLyBwYWNrYWdlIHByaXZhdGUgY29uc3RydWN0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkJCisJCU1heEV4cGFuc2lvblRhYmxlKCkgCisJCXsKKwkJCW1fZW5kRXhwYW5zaW9uQ0VfID0gbmV3IFZlY3RvcigpOworCQkJbV9leHBhbnNpb25DRVNpemVfID0gbmV3IFZlY3RvcigpOworCQkJbV9lbmRFeHBhbnNpb25DRV8uYWRkKG5ldyBJbnRlZ2VyKDApKTsKKwkJCW1fZXhwYW5zaW9uQ0VTaXplXy5hZGQobmV3IEJ5dGUoKGJ5dGUpMCkpOworCQl9CisgICAgICAgIAorICAgICAgICBNYXhFeHBhbnNpb25UYWJsZShNYXhFeHBhbnNpb25UYWJsZSB0YWJsZSkgCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fZW5kRXhwYW5zaW9uQ0VfID0gKFZlY3Rvcil0YWJsZS5tX2VuZEV4cGFuc2lvbkNFXy5jbG9uZSgpOworICAgICAgICAgICAgbV9leHBhbnNpb25DRVNpemVfID0gKFZlY3Rvcil0YWJsZS5tX2V4cGFuc2lvbkNFU2l6ZV8uY2xvbmUoKTsKKyAgICAgICAgfQorCQkKKwkJLy8gcGFja2FnZSBwcml2YXRlIGRhdGEgbWVtYmVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJCQorCSAgICBWZWN0b3IgbV9lbmRFeHBhbnNpb25DRV87CisJICAgIFZlY3RvciBtX2V4cGFuc2lvbkNFU2l6ZV87CisJfTsKKwkKKwlwcml2YXRlIHN0YXRpYyBjbGFzcyBCYXNpY0NvbnRyYWN0aW9uVGFibGUgCisJeworCQkvLyBwYWNrYWdlIHByaXZhdGUgY29uc3RydWN0b3JzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkJCisJCUJhc2ljQ29udHJhY3Rpb25UYWJsZSgpCisJCXsKKwkJCW1fQ0VzXyA9IG5ldyBWZWN0b3IoKTsKKwkgICAgICAgIG1fY29kZVBvaW50c18gPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisJCX0KKwkJCisJCS8vIHBhY2thZ2UgcHJpdmF0ZSBkYXRhIG1lbWJlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCQkKKwkgICAgU3RyaW5nQnVmZmVyIG1fY29kZVBvaW50c187CisJICAgIFZlY3RvciBtX0NFc187CisgICAgfTsKKyAgICAKKwlwcml2YXRlIHN0YXRpYyBjbGFzcyBDb250cmFjdGlvblRhYmxlIAorCXsKKwkJLy8gcGFja2FnZSBwcml2YXRlIGNvbnN0cnVjdG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJCQorCQkvKioKKwkJICogQnVpbGRzIGEgY29udHJhY3Rpb24gdGFibGUKKwkJICogQHBhcmFtIGJ1aWxkdGFibGUKKwkJICovCisJCUNvbnRyYWN0aW9uVGFibGUoSW50VHJpZUJ1aWxkZXIgbWFwcGluZykgCisJCXsKKwkJICAgIG1fbWFwcGluZ18gPSBtYXBwaW5nOworCQkgICAgbV9lbGVtZW50c18gPSBuZXcgVmVjdG9yKCk7CisJCSAgICBtX0NFc18gPSBuZXcgVmVjdG9yKCk7CisJCSAgICBtX2NvZGVQb2ludHNfID0gbmV3IFN0cmluZ0J1ZmZlcigpOworCQkgICAgbV9vZmZzZXRzXyA9IG5ldyBWZWN0b3IoKTsKKwkJICAgIG1fY3VycmVudFRhZ18gPSBDRV9OT1RfRk9VTkRfVEFHXzsKKwkJfQorICAgICAgICAKKyAgICAgICAgLyoqCisgICAgICAgICAqIENvcGllcyBhIGNvbnRyYWN0aW9uIHRhYmxlLgorICAgICAgICAgKiBOb3QgYWxsIGRhdGEgd2lsbCBiZSBjb3BpZWQgaW50byB0aGVpciBvd24gb2JqZWN0LgorICAgICAgICAgKiBAcGFyYW0gdGFibGUKKyAgICAgICAgICovCisgICAgICAgIENvbnRyYWN0aW9uVGFibGUoQ29udHJhY3Rpb25UYWJsZSB0YWJsZSkgCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbWFwcGluZ18gPSB0YWJsZS5tX21hcHBpbmdfOworICAgICAgICAgICAgbV9lbGVtZW50c18gPSAoVmVjdG9yKXRhYmxlLm1fZWxlbWVudHNfLmNsb25lKCk7CisgICAgICAgICAgICBtX2NvZGVQb2ludHNfID0gbmV3IFN0cmluZ0J1ZmZlcih0YWJsZS5tX2NvZGVQb2ludHNfLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgbV9DRXNfID0gKFZlY3Rvcil0YWJsZS5tX0NFc18uY2xvbmUoKTsKKyAgICAgICAgICAgIG1fb2Zmc2V0c18gPSAoVmVjdG9yKXRhYmxlLm1fb2Zmc2V0c18uY2xvbmUoKTsKKyAgICAgICAgICAgIG1fY3VycmVudFRhZ18gPSB0YWJsZS5tX2N1cnJlbnRUYWdfOworICAgICAgICB9CisJCisJICAgIC8vIHBhY2thZ2UgcHJpdmF0ZSBkYXRhIG1lbWJlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJICAgIAorCQkvKioKKwkJICogVmVjdG9yIG9mIEJhc2ljQ29udHJhY3Rpb25UYWJsZQorCQkgKi8KKyAgICAgICAgVmVjdG9yIG1fZWxlbWVudHNfOworICAgICAgICBJbnRUcmllQnVpbGRlciBtX21hcHBpbmdfOworICAgICAgICBTdHJpbmdCdWZmZXIgbV9jb2RlUG9pbnRzXzsKKwkgICAgVmVjdG9yIG1fQ0VzXzsKKwkgICAgVmVjdG9yIG1fb2Zmc2V0c187CisJICAgIGludCBtX2N1cnJlbnRUYWdfOworCX07CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBjbGFzcyBCdWlsZFRhYmxlIGltcGxlbWVudHMgVHJpZUJ1aWxkZXIuRGF0YU1hbmlwdWxhdGUKKwl7CisJCS8vIHBhY2thZ2UgcHJpdmF0ZSBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCQkKKyAgICAgICAgLyoqCisJCSAqIEZvciBjb25zdHJ1Y3Rpb24gb2YgdGhlIFRyaWUgdGFibGVzLgorCQkgKiBIYXMgdG8gYmUgbGFiZWxlZCBwdWJsaWMKKwkJICogQHBhcmFtIHRhYmxlIGJ1aWxkIHRhYmxlCisJCSAqIEBwYXJhbSBjcAorCQkgKiBAcGFyYW0gb2Zmc2V0CisJCSAqIEByZXR1cm4gZGF0YSBvZmZzZXQgb3IgMCAKKwkJICogQGRyYWZ0IDIuMgorCQkgKi8KKwkJcHVibGljIGludCBnZXRGb2xkZWRWYWx1ZShpbnQgY3AsIGludCBvZmZzZXQpCisJCXsKKwkJICAgIGludCBsaW1pdCA9IGNwICsgMHg0MDA7CisJCSAgICB3aGlsZSAoY3AgPCBsaW1pdCkgeworCQkgICAgCWludCB2YWx1ZSA9IG1fbWFwcGluZ18uZ2V0VmFsdWUoY3ApOworCQkgICAgCWJvb2xlYW4gaW5CbG9ja1plcm8gPSBtX21hcHBpbmdfLmlzSW5aZXJvQmxvY2soY3ApOworCQkJICAgIGludCB0YWcgPSBnZXRDRVRhZyh2YWx1ZSk7CisJCQkgICAgaWYgKGluQmxvY2taZXJvID09IHRydWUpIHsKKwkJCSAgICAgICAgY3AgKz0gVHJpZUJ1aWxkZXIuREFUQV9CTE9DS19MRU5HVEhfOworCQkJICAgIH0gCisJCQkgICAgZWxzZSBpZiAoIShpc1NwZWNpYWwodmFsdWUpICYmICh0YWcgPT0gQ0VfSU1QTElDSVRfVEFHXyAKKwkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHRhZyA9PSBDRV9OT1RfRk9VTkRfVEFHXykpKSB7CisJCQkgICAgICAgIC8vIFRoZXNlIGFyZSB2YWx1ZXMgdGhhdCBhcmUgc3RhcnRpbmcgaW4gZWl0aGVyIFVDQSAKKwkJCSAgICAgICAgLy8gKElNUExJQ0lUX1RBRykgb3IgaW4gdGhlIHRhaWxvcmluZ3MgKE5PVF9GT1VORF9UQUcpLiAKKwkJCSAgICAgICAgLy8gUHJlc2VuY2Ugb2YgdGhlc2UgdGFncyBtZWFucyB0aGF0IHRoZXJlIGlzIG5vdGhpbmcgaW4gCisJCQkgICAgICAgIC8vIHRoaXMgcG9zaXRpb24gYW5kIHRoYXQgaXQgc2hvdWxkIGJlIHNraXBwZWQuCisJCQkgICAgICAgIHJldHVybiBSdWxlQmFzZWRDb2xsYXRvci5DRV9TUEVDSUFMX0ZMQUdfIAorCQkJICAgICAgICAgICAgICAgfCAoQ0VfU1VSUk9HQVRFX1RBR18gPDwgMjQpIHwgb2Zmc2V0OworCQkJICAgIH0gCisJCQkgICAgZWxzZSB7CisJCQkgICAgICAgICsrIGNwOworCQkJICAgIH0KKwkJICAgIH0KKwkJCXJldHVybiAwOworCQl9CisJCisJCS8vIHBhY2thZ2UgcHJpdmF0ZSBjb25zdHJ1Y3RvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCQkKKwkJLyoqCisJCSAqIFJldHVybnMgYSB0YWJsZQorCQkgKiBAcmV0dXJuIGJ1aWxkIHRhYmxlCisJCSAqLworCQlCdWlsZFRhYmxlKENvbGxhdGlvblJ1bGVQYXJzZXIgcGFyc2VyKSAKKwkJeworCQkJbV9jb2xsYXRvcl8gPSBuZXcgUnVsZUJhc2VkQ29sbGF0b3IoKTsKKwkJCW1fY29sbGF0b3JfLnNldFdpdGhVQ0FEYXRhKCk7CisJICAgICAgICBNYXhFeHBhbnNpb25UYWJsZSBtYXhldCA9IG5ldyBNYXhFeHBhbnNpb25UYWJsZSgpOworCSAgICAgICAgTWF4SmFtb0V4cGFuc2lvblRhYmxlIG1heGpldCA9IG5ldyBNYXhKYW1vRXhwYW5zaW9uVGFibGUoKTsKKwkgICAgICAgIG1fb3B0aW9uc18gPSBwYXJzZXIubV9vcHRpb25zXzsKKwkgICAgICAgIG1fZXhwYW5zaW9uc18gPSBuZXcgVmVjdG9yKCk7CisJICAgICAgICAvLyBEbyB5b3VyIG93biBtYWxsb2NzIGZvciB0aGUgc3RydWN0dXJlLCBhcnJheSBhbmQgaGF2ZSBsaW5lYXIgCisJICAgICAgICAvLyBMYXRpbiAxCisJICAgICAgICBtX21hcHBpbmdfID0gbmV3IEludFRyaWVCdWlsZGVyKG51bGwsIDB4MTAwMDAwLCAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yLkNFX1NQRUNJQUxfRkxBR18KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKENFX05PVF9GT1VORF9UQUdfIDw8IDI0KSwgCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKTsgCisJICAgICAgICBtX3ByZWZpeExvb2t1cF8gPSBuZXcgSGFzaHRhYmxlKCk7CisJICAgICAgICAvLyB1aGFzaF9vcGVuKHByZWZpeExvb2t1cEhhc2gsIHByZWZpeExvb2t1cENvbXApOworCSAgICAgICAgbV9jb250cmFjdGlvbnNfID0gbmV3IENvbnRyYWN0aW9uVGFibGUobV9tYXBwaW5nXyk7CisJICAgICAgICAvLyBjb3B5IFVDQSdzIG1heGV4cGFuc2lvbiBhbmQgbWVyZ2UgYXMgd2UgZ28gYWxvbmcKKwkJICAgIG1fbWF4RXhwYW5zaW9uc18gPSBtYXhldDsKKwkJICAgIC8vIGFkZGluZyBhbiBleHRyYSBpbml0aWFsIHZhbHVlIGZvciBlYXNpZXIgbWFuaXB1bGF0aW9uIAorCQkgICAgZm9yIChpbnQgaSA9IDA7IAorCQkgICAgICAgICBpIDwgUnVsZUJhc2VkQ29sbGF0b3IuVUNBXy5tX2V4cGFuc2lvbkVuZENFXy5sZW5ndGg7IGkgKyspIHsKKwkJICAgICAgICAgbWF4ZXQubV9lbmRFeHBhbnNpb25DRV8uYWRkKG5ldyBJbnRlZ2VyKAorCQkgICAgICAgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IuVUNBXy5tX2V4cGFuc2lvbkVuZENFX1tpXSkpOworCQkgICAgICAgICBtYXhldC5tX2V4cGFuc2lvbkNFU2l6ZV8uYWRkKG5ldyBCeXRlKAorICAgICAgICAgICAgICAgICAgICAgICAgICBSdWxlQmFzZWRDb2xsYXRvci5VQ0FfLm1fZXhwYW5zaW9uRW5kQ0VNYXhTaXplX1tpXSkpOworCQkgICAgfQorCQkgICAgbV9tYXhKYW1vRXhwYW5zaW9uc18gPSBtYXhqZXQ7CisJCQorCQkgICAgbV91bnNhZmVDUF8gPSBuZXcgYnl0ZVtVTlNBRkVDUF9UQUJMRV9TSVpFX107CisJCSAgICBtX2NvbnRyRW5kQ1BfID0gbmV3IGJ5dGVbVU5TQUZFQ1BfVEFCTEVfU0laRV9dOworCQkgICAgQXJyYXlzLmZpbGwobV91bnNhZmVDUF8sIChieXRlKTApOworCQkgICAgQXJyYXlzLmZpbGwobV9jb250ckVuZENQXywgKGJ5dGUpMCk7CisJCX0KKwkKKyAgICAgICAgLyoqCisgICAgICAgICAqIER1cGxpY2F0aW5nIGEgQnVpbGRUYWJsZS4KKyAgICAgICAgICogTm90IGFsbCBkYXRhIHdpbGwgYmUgZHVwbGljYXRlZCBpbnRvIHRoZWlyIG93biBvYmplY3QuCisgICAgICAgICAqIEBwYXJhbSB0YWJsZSB0byBjbG9uZQorICAgICAgICAgKi8KKyAgICAgICAgQnVpbGRUYWJsZShCdWlsZFRhYmxlIHRhYmxlKSAKKyAgICAgICAgeworICAgICAgICAgICAgbV9jb2xsYXRvcl8gPSB0YWJsZS5tX2NvbGxhdG9yXzsKKyAgICAgICAgICAgIG1fbWFwcGluZ18gPSBuZXcgSW50VHJpZUJ1aWxkZXIodGFibGUubV9tYXBwaW5nXyk7CisgICAgICAgICAgICBtX2V4cGFuc2lvbnNfID0gKFZlY3Rvcil0YWJsZS5tX2V4cGFuc2lvbnNfLmNsb25lKCk7CisgICAgICAgICAgICBtX2NvbnRyYWN0aW9uc18gPSBuZXcgQ29udHJhY3Rpb25UYWJsZSh0YWJsZS5tX2NvbnRyYWN0aW9uc18pOworICAgICAgICAgICAgbV9jb250cmFjdGlvbnNfLm1fbWFwcGluZ18gPSBtX21hcHBpbmdfOworICAgICAgICAgICAgbV9vcHRpb25zXyA9IHRhYmxlLm1fb3B0aW9uc187CisgICAgICAgICAgICBtX21heEV4cGFuc2lvbnNfID0gbmV3IE1heEV4cGFuc2lvblRhYmxlKHRhYmxlLm1fbWF4RXhwYW5zaW9uc18pOworICAgICAgICAgICAgbV9tYXhKYW1vRXhwYW5zaW9uc18gCisgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IE1heEphbW9FeHBhbnNpb25UYWJsZSh0YWJsZS5tX21heEphbW9FeHBhbnNpb25zXyk7CisgICAgICAgICAgICBtX3Vuc2FmZUNQXyA9IG5ldyBieXRlW3RhYmxlLm1fdW5zYWZlQ1BfLmxlbmd0aF07CisgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KHRhYmxlLm1fdW5zYWZlQ1BfLCAwLCBtX3Vuc2FmZUNQXywgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91bnNhZmVDUF8ubGVuZ3RoKTsKKyAgICAgICAgICAgIG1fY29udHJFbmRDUF8gPSBuZXcgYnl0ZVt0YWJsZS5tX2NvbnRyRW5kQ1BfLmxlbmd0aF07CisgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KHRhYmxlLm1fY29udHJFbmRDUF8sIDAsIG1fY29udHJFbmRDUF8sIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY29udHJFbmRDUF8ubGVuZ3RoKTsKKyAgICAgICAgfQorICAgICAgICAKKwkJLy8gcGFja2FnZSBwcml2YXRlIGRhdGEgbWVtYmVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJCQorCQlSdWxlQmFzZWRDb2xsYXRvciBtX2NvbGxhdG9yXzsKKyAgICAgICAgSW50VHJpZUJ1aWxkZXIgbV9tYXBwaW5nXzsgCisgICAgICAgIFZlY3RvciBtX2V4cGFuc2lvbnNfOyAKKyAgICAgICAgQ29udHJhY3Rpb25UYWJsZSBtX2NvbnRyYWN0aW9uc187CisJICAgIC8vIFVDQVRhYmxlSGVhZGVyIGltYWdlOworCSAgICBDb2xsYXRpb25SdWxlUGFyc2VyLk9wdGlvblNldCBtX29wdGlvbnNfOworCSAgICBNYXhFeHBhbnNpb25UYWJsZSBtX21heEV4cGFuc2lvbnNfOworCSAgICBNYXhKYW1vRXhwYW5zaW9uVGFibGUgbV9tYXhKYW1vRXhwYW5zaW9uc187CisJICAgIGJ5dGUgbV91bnNhZmVDUF9bXTsKKwkgICAgYnl0ZSBtX2NvbnRyRW5kQ1BfW107CisJICAgIEhhc2h0YWJsZSBtX3ByZWZpeExvb2t1cF87CisJfTsgCisJCisJcHJpdmF0ZSBzdGF0aWMgY2xhc3MgRWxlbWVudHMKKwl7CisJCS8vIHBhY2thZ2UgcHJpdmF0ZSBkYXRhIG1lbWJlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCQkKKwkJU3RyaW5nIG1fcHJlZml4Q2hhcnNfOworCSAgICBpbnQgbV9wcmVmaXhfOworCSAgICBTdHJpbmcgbV91Y2hhcnNfOworCSAgICAvKioKKwkgICAgICogV29ya2luZyBzdHJpbmcKKwkgICAgICovCisJICAgIFN0cmluZyBtX2NQb2ludHNfOyAgICAKKwkgICAgLyoqCisJICAgICAqIE9mZnNldCB0byB0aGUgd29ya2luZyBzdHJpbmcKKwkgICAgICovCisJICAgIGludCBtX2NQb2ludHNPZmZzZXRfOworCSAgICAvKiogCisJICAgICAqIFRoZXNlIGFyZSBjb2xsYXRpb24gZWxlbWVudHMgLSB0aGVyZSBjb3VsZCBiZSBtb3JlIHRoYW4gb25lIC0gaW4gCisJICAgICAqIGNhc2Ugb2YgZXhwYW5zaW9uIAorCSAgICAgKi8gICAgCisJICAgIGludCBtX0NFc19bXTsgICAgICAKKyAgICAgICAgaW50IG1fQ0VMZW5ndGhfOworCSAgICAvKiogCisJICAgICAqIFRoaXMgaXMgdGhlIHZhbHVlIGVsZW1lbnQgbWFwcyBpbiBvcmlnaW5hbCB0YWJsZSAgIAorCSAgICAgKi8KKwkgICAgaW50IG1fbWFwQ0VfOyAgICAgICAgIAorCSAgICBpbnQgbV9zaXplUHJpbV9bXTsKKwkgICAgaW50IG1fc2l6ZVNlY19bXTsKKwkgICAgaW50IG1fc2l6ZVRlcl9bXTsKKwkgICAgYm9vbGVhbiBtX3ZhcmlhYmxlVG9wXzsKKwkgICAgYm9vbGVhbiBtX2Nhc2VCaXRfOworCSAgICBib29sZWFuIG1faXNUaGFpXzsKKwkgICAgCisJCS8vIHBhY2thZ2UgcHJpdmF0ZSBjb25zdHJ1Y3RvcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCQkKKwkJLyoqCisJCSAqIFBhY2thZ2UgcHJpdmF0ZSBjb25zdHJ1Y3RvcgorCQkgKi8KKwkJRWxlbWVudHMoKQorCQl7CisJCQltX3NpemVQcmltXyA9IG5ldyBpbnRbMTI4XTsJCisJCSAgICBtX3NpemVTZWNfID0gbmV3IGludFsxMjhdOwkKKwkJICAgIG1fc2l6ZVRlcl8gPSBuZXcgaW50WzEyOF07CQorICAgICAgICAgICAgbV9DRXNfID0gbmV3IGludFsyNTZdOworICAgICAgICAgICAgbV9DRUxlbmd0aF8gPSAwOworCQl9CisKKyAgICAgICAgLyoqCisJCSAqIFBhY2thZ2UgcHJpdmF0ZSBjb25zdHJ1Y3RvcgorCQkgKi8KKwkJRWxlbWVudHMoRWxlbWVudHMgZWxlbWVudCkKKwkJeworICAgICAgICAgICAgbV9wcmVmaXhDaGFyc18gPSBlbGVtZW50Lm1fcHJlZml4Q2hhcnNfOworICAgICAgICAgICAgbV9wcmVmaXhfID0gZWxlbWVudC5tX3ByZWZpeF87CisgICAgICAgICAgICBtX3VjaGFyc18gPSBlbGVtZW50Lm1fdWNoYXJzXzsKKyAgICAgICAgICAgIG1fY1BvaW50c18gPSBlbGVtZW50Lm1fY1BvaW50c187ICAgIAorICAgICAgICAgICAgbV9jUG9pbnRzT2Zmc2V0XyA9IGVsZW1lbnQubV9jUG9pbnRzT2Zmc2V0XzsgICAgCisgICAgICAgICAgICBtX0NFc18gPSBlbGVtZW50Lm1fQ0VzXzsKKyAgICAgICAgICAgIG1fQ0VMZW5ndGhfID0gZWxlbWVudC5tX0NFTGVuZ3RoXzsKKyAgICAgICAgICAgIG1fbWFwQ0VfID0gZWxlbWVudC5tX21hcENFXzsKKwkJICAgIG1fc2l6ZVByaW1fID0gZWxlbWVudC5tX3NpemVQcmltXzsKKwkJICAgIG1fc2l6ZVNlY18gPSBlbGVtZW50Lm1fc2l6ZVNlY187CisJCSAgICBtX3NpemVUZXJfID0gZWxlbWVudC5tX3NpemVUZXJfOworCQkgICAgbV92YXJpYWJsZVRvcF8gPSBlbGVtZW50Lm1fdmFyaWFibGVUb3BfOworCQkgICAgbV9jYXNlQml0XyA9IGVsZW1lbnQubV9jYXNlQml0XzsKKwkJICAgIG1faXNUaGFpXyA9IGVsZW1lbnQubV9pc1RoYWlfOworCQl9CisKKyAgICAgICAgLy8gcGFja2FnZSBwcml2YXRlIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAKKyAgICAgICAgLyoqCisgICAgICAgICAqIEluaXRpYWxpemluZyB0aGUgZWxlbWVudHMKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyB2b2lkIGNsZWFyKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9wcmVmaXhDaGFyc18gPSBudWxsOworICAgICAgICAgICAgbV9wcmVmaXhfID0gMDsKKyAgICAgICAgICAgIG1fdWNoYXJzXyA9IG51bGw7CisgICAgICAgICAgICBtX2NQb2ludHNfID0gbnVsbDsgICAgCisgICAgICAgICAgICBtX2NQb2ludHNPZmZzZXRfID0gMDsgIAorICAgICAgICAgICAgbV9DRUxlbmd0aF8gPSAwOworICAgICAgICAgICAgbV9tYXBDRV8gPSAwOworICAgICAgICAgICAgQXJyYXlzLmZpbGwobV9zaXplUHJpbV8sIDApOworICAgICAgICAgICAgQXJyYXlzLmZpbGwobV9zaXplU2VjXywgMCk7CisgICAgICAgICAgICBBcnJheXMuZmlsbChtX3NpemVUZXJfLCAwKTsKKyAgICAgICAgICAgIG1fdmFyaWFibGVUb3BfID0gZmFsc2U7CisgICAgICAgICAgICBtX2Nhc2VCaXRfID0gZmFsc2U7CisgICAgICAgICAgICBtX2lzVGhhaV8gPSBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIAorICAgICAgICAvKioKKyAgICAgICAgICogSGFzaGNvZGUgY2FsY3VsYXRpb24gZm9yIHRva2VuCisgICAgICAgICAqIEByZXR1cm4gdGhlIGhhc2hjb2RlCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkKKyAgICAgICAgeworICAgICAgICAJU3RyaW5nIHN0ciA9IG1fY1BvaW50c18uc3Vic3RyaW5nKG1fY1BvaW50c09mZnNldF8pOworCQkgICAgcmV0dXJuIHN0ci5oYXNoQ29kZSgpOworCSAgICB9CisJCQorCQkvKioKKwkgICAgICogRXF1YWxzIGNhbGN1bGF0aW9uCisJICAgICAqIEBwYXJhbSB0YXJnZXQgb2JqZWN0IHRvIGNvbXBhcmUKKwkgICAgICogQHJldHVybiB0cnVlIGlmIHRhcmdldCBpcyB0aGUgc2FtZSBhcyB0aGlzIG9iamVjdAorCSAgICAgKi8KKwkgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCB0YXJnZXQpCisJICAgIHsKKwkgICAgICAgIGlmICh0YXJnZXQgPT0gdGhpcykgeworCSAgICAgICAgICAgIHJldHVybiB0cnVlOworCSAgICAgICAgfQorCSAgICAgICAgaWYgKHRhcmdldCBpbnN0YW5jZW9mIEVsZW1lbnRzKSB7CisJICAgICAgICAJRWxlbWVudHMgdCA9IChFbGVtZW50cyl0YXJnZXQ7CisJICAgICAgICAJaW50IHNpemUgPSBtX2NQb2ludHNfLmxlbmd0aCgpIC0gbV9jUG9pbnRzT2Zmc2V0XzsKKwkgICAgICAgIAlpZiAoc2l6ZSA9PSB0Lm1fY1BvaW50c18ubGVuZ3RoKCkgLSB0Lm1fY1BvaW50c09mZnNldF8pIHsKKwkJCQkgICAgcmV0dXJuIHQubV9jUG9pbnRzXy5yZWdpb25NYXRjaGVzKHQubV9jUG9pbnRzT2Zmc2V0XywgCisJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2NQb2ludHNfLCAKKwkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY1BvaW50c09mZnNldF8sIHNpemUpOworCSAgICAgICAgCX0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwkJfQorCX07CisKKyAgICAvLyBwcml2YXRlIGRhdGEgbWVtYmVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIC8qKgorICAgICAqIE1heGltdW0gc3RyZW5ndGggdXNlZCBpbiBDRSBidWlsZGluZworICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDRV9CQVNJQ19TVFJFTkdUSF9MSU1JVF8gPSAzOworICAgIC8qKgorICAgICAqIE1heGltdW0gY29sbGF0aW9uIHN0cmVuZ3RoCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENFX1NUUkVOR1RIX0xJTUlUXyA9IDE2OworICAgIC8qKgorICAgICAqIFN0cmVuZ3RoIG1hc2sgYXJyYXksIHVzZWQgaW4gaW52ZXJzZSBVQ0EKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU1RSRU5HVEhfTUFTS19bXSA9IHsweEZGRkYwMDAwLCAweEZGRkZGRjAwLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGfTsKKyAgICAvKioKKyAgICAgKiBDRSB0YWcgZm9yIG5vdCBmb3VuZAorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDRV9OT1RfRk9VTkRfID0gMHhGMDAwMDAwMDsKKyAgICAvKioKKyAgICAgKiBDRSB0YWcgZm9yIG5vdCBmb3VuZAorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDRV9OT1RfRk9VTkRfVEFHXyA9IDA7CisgICAgLyoqCisgICAgICogVGhpcyBjb2RlIHBvaW50IHJlc3VsdHMgaW4gYW4gZXhwYW5zaW9uIAorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDRV9FWFBBTlNJT05fVEFHXyA9IDE7CisgICAgLyoqIAorICAgICAqIFN0YXJ0IG9mIGEgY29udHJhY3Rpb24gCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENFX0NPTlRSQUNUSU9OX1RBR18gPSAyOworICAgIC8qKiAKKyAgICAgKiBUaGFpIGNoYXJhY3RlciAtIGRvIHRoZSByZW9yZGVyaW5nIAorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDRV9USEFJX1RBR18gPSAzOyAgICAgICAgICAgIAorICAgIC8qKiAKKyAgICAgKiBDaGFyc2V0IHByb2Nlc3NpbmcsIG5vdCB5ZXQgaW1wbGVtZW50ZWQKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ0VfQ0hBUlNFVF9UQUdfID0gNDsgICAgICAgICAKKyAgICAvKiogCisgICAgICogTGVhZCBzdXJyb2dhdGUgdGhhdCBpcyB0YWlsb3JlZCBhbmQgZG9lc24ndCBzdGFydCBhIGNvbnRyYWN0aW9uIAorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDRV9TVVJST0dBVEVfVEFHXyA9IDU7CisgICAgLyoqIAorICAgICAqIEFDMDAtRDdBRgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDRV9IQU5HVUxfU1lMTEFCTEVfVEFHXyA9IDY7CisgICAgLyoqIAorICAgICAqIEQ4MDAtREJGRgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDRV9MRUFEX1NVUlJPR0FURV9UQUdfID0gNzsKKyAgICAvKiogCisgICAgICogREMwMC1ERkZGCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENFX1RSQUlMX1NVUlJPR0FURV9UQUdfID0gODsgCisgICAgLyoqIAorICAgICAqIDB4MzQwMC0weDREQjUsIDB4NEUwMC0weDlGQTUsIDB4RjkwMC0weEZBMkQKKyAgICAgKi8gICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENFX0NKS19JTVBMSUNJVF9UQUdfID0gOTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ0VfSU1QTElDSVRfVEFHXyA9IDEwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDRV9TUEVDX1BST0NfVEFHXyA9IDExOworICAgIC8qKiAKKyAgICAgKiBUaGlzIGlzIGEgdGhyZWUgYnl0ZSBwcmltYXJ5IHdpdGggc3RhcnRpbmcgc2Vjb25kYXJpZXMgYW5kIHRlcnRpYXJpZXMuCisgICAgICogSXQgZml0cyBpbiBhIHNpbmdsZSAzMiBiaXQgQ0UgYW5kIGlzIHVzZWQgaW5zdGVhZCBvZiBleHBhbnNpb24gdG8gc2F2ZQorICAgICAqIHNwYWNlIHdpdGhvdXQgYWZmZWN0aW5nIHRoZSBwZXJmb3JtYW5jZSAoaG9wZWZ1bGx5KSAKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ0VfTE9OR19QUklNQVJZX1RBR18gPSAxMjsgIAorICAgIC8qKiAKKyAgICAgKiBVbnNhZmUgVUNoYXIgaGFzaCB0YWJsZSB0YWJsZSBzaXplLiBTaXplIGlzIDMyIGJ5dGVzIGZvciAxIGJpdCBmb3IgZWFjaCAKKyAgICAgKiBsYXRpbiAxIGNoYXIgKyBzb21lIHBvd2VyIG9mIHR3byBmb3IgaGFzaGluZyB0aGUgcmVzdCBvZiB0aGUgY2hhcnMuIAorICAgICAqIFNpemUgaW4gYnl0ZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFVOU0FGRUNQX1RBQkxFX1NJWkVfID0gMTA1NjsKKyAgICAvKiogCisgICAgICogTWFzayB2YWx1ZSBkb3duIHRvICJzb21lIHBvd2VyIG9mIHR3byIgLTEuIE51bWJlciBvZiBiaXRzLCBub3QgbnVtIG9mIAorICAgICAqIGJ5dGVzLiAgICAgICAKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgVU5TQUZFQ1BfVEFCTEVfTUFTS18gPSAweDFmZmY7CisgICAgLyoqCisgICAgICogQ2FzZSB2YWx1ZXMKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgVVBQRVJfQ0FTRV8gPSAweDgwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNSVhFRF9DQVNFXyA9IDB4NDA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExPV0VSX0NBU0VfID0gMHgwMDsKKyAgICAvKioKKyAgICAgKiBJbml0aWFsIHRhYmxlIHNpemUKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSU5JVF9UQUJMRV9TSVpFXyA9IDEwMjg7CisgICAgLyoqCisgICAgICogSGVhZGVyIHNpemUsIGNvcGllZCBmcm9tIElDVTRDLCB0byBiZSBjaGFuZ2VkIHdoZW4gdGhhdCB2YWx1ZSBjaGFuZ2VzCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEhFQURFUl9TSVpFXyA9IDB4QzQ7CisgICAgLyoqCisgICAgICogQ29udHJhY3Rpb24gdGFibGUgbmV3IGVsZW1lbnQgaW5kaWNhdG9yCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENPTlRSQUNUSU9OX1RBQkxFX05FV19FTEVNRU5UXyA9IDB4RkZGRkZGOworICAgIC8qKgorICAgICAqIFBhcnNlciBmb3IgdGhlIHJ1bGVzCisgICAgICovCisgICAgcHJpdmF0ZSBDb2xsYXRpb25SdWxlUGFyc2VyIG1fcGFyc2VyXzsKKyAgICAvKioKKyAgICAgKiBVdGlsaXR5IFVDQSBjb2xsYXRpb24gZWxlbWVudCBpdGVyYXRvcgorICAgICAqLworICAgIHByaXZhdGUgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yIG1fdXRpbENvbEVJdGVyXzsKKyAgICAvKioKKyAgICAgKiBVdGlsaXR5IGRhdGEgbWVtYmVycworICAgICAqLworICAgIHByaXZhdGUgQ0VHZW5lcmF0b3IgbV91dGlsR2Vuc19bXSA9IHtuZXcgQ0VHZW5lcmF0b3IoKSwgbmV3IENFR2VuZXJhdG9yKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBDRUdlbmVyYXRvcigpfTsKKyAgICBwcml2YXRlIGludCBtX3V0aWxDRUJ1ZmZlcl9bXSA9IG5ldyBpbnRbQ0VfQkFTSUNfU1RSRU5HVEhfTElNSVRfXTsKKyAgICBwcml2YXRlIGludCBtX3V0aWxJbnRCdWZmZXJfW10gPSBuZXcgaW50W0NFX1NUUkVOR1RIX0xJTUlUX107CisgICAgcHJpdmF0ZSBFbGVtZW50cyBtX3V0aWxFbGVtZW50XyA9IG5ldyBFbGVtZW50cygpOworICAgIHByaXZhdGUgRWxlbWVudHMgbV91dGlsRWxlbWVudDJfID0gbmV3IEVsZW1lbnRzKCk7CisgICAgcHJpdmF0ZSBDb2xsYXRpb25SdWxlUGFyc2VyLlRva2VuIG1fdXRpbFRva2VuXyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IENvbGxhdGlvblJ1bGVQYXJzZXIuVG9rZW4oKTsKKyAgICBwcml2YXRlIGludCBtX3V0aWxDb3VudEJ1ZmZlcl9bXSA9IG5ldyBpbnRbNl07ICAgICAKKyAgICBwcml2YXRlIGxvbmcgbV91dGlsTG9uZ0J1ZmZlcl9bXSA9IG5ldyBsb25nWzVdOworICAgIHByaXZhdGUgV2VpZ2h0UmFuZ2UgbV91dGlsTG93ZXJXZWlnaHRSYW5nZV9bXSA9IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge25ldyBXZWlnaHRSYW5nZSgpLCBuZXcgV2VpZ2h0UmFuZ2UoKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFdlaWdodFJhbmdlKCksIG5ldyBXZWlnaHRSYW5nZSgpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgV2VpZ2h0UmFuZ2UoKX07IAorICAgIHByaXZhdGUgV2VpZ2h0UmFuZ2UgbV91dGlsVXBwZXJXZWlnaHRSYW5nZV9bXSA9IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge25ldyBXZWlnaHRSYW5nZSgpLCBuZXcgV2VpZ2h0UmFuZ2UoKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFdlaWdodFJhbmdlKCksIG5ldyBXZWlnaHRSYW5nZSgpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgV2VpZ2h0UmFuZ2UoKX07IAorICAgIHByaXZhdGUgV2VpZ2h0UmFuZ2UgbV91dGlsV2VpZ2h0UmFuZ2VfID0gbmV3IFdlaWdodFJhbmdlKCk7CisgICAgcHJpdmF0ZSBjaGFyIG1fdXRpbENoYXJCdWZmZXJfW10gPSBuZXcgY2hhclsyNTZdOworICAgIHByaXZhdGUgQ2Fub25pY2FsSXRlcmF0b3IgbV91dGlsQ2FuSXRlcl8gPSBuZXcgQ2Fub25pY2FsSXRlcmF0b3IoIiIpOworICAgIHByaXZhdGUgU3RyaW5nQnVmZmVyIG1fdXRpbFN0cmluZ0J1ZmZlcl8gPSBuZXcgU3RyaW5nQnVmZmVyKCIiKTsKKyAgICAKKyAgICAvLyBwcml2YXRlIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIC8qKgorICAgICAqIEBwYXJhbSBsaXN0aGVhZGVyIHBhcnNlZCBydWxlIHRva2VucworICAgICAqIEBleGNlcHRpb24gRXhjZXB0aW9uIHRocm93biB3aGVuIGludGVybmFsIGVycm9yIG9jY3VycworICAgICAqLworICAgIHByaXZhdGUgdm9pZCBpbml0QnVmZmVycyhDb2xsYXRpb25SdWxlUGFyc2VyLlRva2VuTGlzdEhlYWRlciBsaXN0aGVhZGVyKSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93cyBFeGNlcHRpb24KKyAgICB7CisgICAgICAgIENvbGxhdGlvblJ1bGVQYXJzZXIuVG9rZW4gdG9rZW4gPSBsaXN0aGVhZGVyLm1fbGFzdF87CisgICAgICAgIEFycmF5cy5maWxsKG1fdXRpbEludEJ1ZmZlcl8sIDAsIENFX1NUUkVOR1RIX0xJTUlUXywgMCk7CisJCQorCQl0b2tlbi5tX3RvSW5zZXJ0XyA9IDE7CisJCW1fdXRpbEludEJ1ZmZlcl9bdG9rZW4ubV9zdHJlbmd0aF9dID0gMTsKKwkJd2hpbGUgKHRva2VuLm1fcHJldmlvdXNfICE9IG51bGwpIHsKKwkJICAgIGlmICh0b2tlbi5tX3ByZXZpb3VzXy5tX3N0cmVuZ3RoXyA8IHRva2VuLm1fc3RyZW5ndGhfKSB7IAorICAgICAgICAgICAgICAgIC8vIGdvaW5nIHVwCisJCSAgICAgICAgbV91dGlsSW50QnVmZmVyX1t0b2tlbi5tX3N0cmVuZ3RoX10gPSAwOworCQkgICAgICAgIG1fdXRpbEludEJ1ZmZlcl9bdG9rZW4ubV9wcmV2aW91c18ubV9zdHJlbmd0aF9dICsrOworCQkgICAgfSAKKyAgICAgICAgICAgIGVsc2UgaWYgKHRva2VuLm1fcHJldmlvdXNfLm1fc3RyZW5ndGhfID4gdG9rZW4ubV9zdHJlbmd0aF8pIHsgCisgICAgICAgICAgICAgICAgLy8gZ29pbmcgZG93bgorCQkgICAgICAgIG1fdXRpbEludEJ1ZmZlcl9bdG9rZW4ubV9wcmV2aW91c18ubV9zdHJlbmd0aF9dID0gMTsKKwkJICAgIH0gCisgICAgICAgICAgICBlbHNlIHsKKwkJICAgICAgICBtX3V0aWxJbnRCdWZmZXJfW3Rva2VuLm1fc3RyZW5ndGhfXSArKzsKKwkJICAgIH0KKwkJICAgIHRva2VuID0gdG9rZW4ubV9wcmV2aW91c187CisJCSAgICB0b2tlbi5tX3RvSW5zZXJ0XyA9IG1fdXRpbEludEJ1ZmZlcl9bdG9rZW4ubV9zdHJlbmd0aF9dOworCQl9IAorCQkKKwkJdG9rZW4ubV90b0luc2VydF8gPSBtX3V0aWxJbnRCdWZmZXJfW3Rva2VuLm1fc3RyZW5ndGhfXTsKKwkJSU5WRVJTRV9VQ0FfLmdldEludmVyc2VHYXBQb3NpdGlvbnMobGlzdGhlYWRlcik7CisJCQorCQl0b2tlbiA9IGxpc3RoZWFkZXIubV9maXJzdF87CisJCWludCBmc3RyZW5ndGggPSBDb2xsYXRvci5JREVOVElDQUw7CisJCWludCBpbml0c3RyZW5ndGggPSBDb2xsYXRvci5JREVOVElDQUw7CisJCQorCQltX3V0aWxDRUJ1ZmZlcl9bQ29sbGF0b3IuUFJJTUFSWV0gPSBtZXJnZUNFKGxpc3RoZWFkZXIubV9iYXNlQ0VfLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGhlYWRlci5tX2Jhc2VDb250Q0VfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsYXRvci5QUklNQVJZKTsKKwkJbV91dGlsQ0VCdWZmZXJfW0NvbGxhdG9yLlNFQ09OREFSWV0gPSBtZXJnZUNFKGxpc3RoZWFkZXIubV9iYXNlQ0VfLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0aGVhZGVyLm1fYmFzZUNvbnRDRV8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGF0b3IuU0VDT05EQVJZKTsKKwkJbV91dGlsQ0VCdWZmZXJfW0NvbGxhdG9yLlRFUlRJQVJZXSA9IG1lcmdlQ0UobGlzdGhlYWRlci5tX2Jhc2VDRV8sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGhlYWRlci5tX2Jhc2VDb250Q0VfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGF0b3IuVEVSVElBUlkpOworCQl3aGlsZSAodG9rZW4gIT0gbnVsbCkgeworCQkgICAgZnN0cmVuZ3RoID0gdG9rZW4ubV9zdHJlbmd0aF87CisJCSAgICBpZiAoZnN0cmVuZ3RoIDwgaW5pdHN0cmVuZ3RoKSB7CisJCSAgICAgICAgaW5pdHN0cmVuZ3RoID0gZnN0cmVuZ3RoOworCQkgICAgICAgIGlmIChsaXN0aGVhZGVyLm1fcG9zX1tmc3RyZW5ndGhdID09IC0xKSB7CisJCSAgICAgICAgICAgIHdoaWxlIChsaXN0aGVhZGVyLm1fcG9zX1tmc3RyZW5ndGhdID09IC0xICYmIGZzdHJlbmd0aCA+IDApIAorICAgICAgICAgICAgICAgICAgICB7CisJCSAgICAgICAgICAgICAgICBmc3RyZW5ndGgtLTsKKwkJICAgICAgICAgICAgfQorCQkgICAgICAgICAgICBpZiAobGlzdGhlYWRlci5tX3Bvc19bZnN0cmVuZ3RoXSA9PSAtMSkgeworCQkgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigiSW50ZXJuYWwgcHJvZ3JhbSBlcnJvciIpOworCQkgICAgICAgICAgICB9CisJCSAgICAgICAgfQorCQkgICAgICAgIGlmIChpbml0c3RyZW5ndGggPT0gQ29sbGF0b3IuVEVSVElBUlkpIHsgCisgICAgICAgICAgICAgICAgICAgIC8vIHN0YXJ0aW5nIHdpdGggdGVydGlhcnkKKwkJCSAgICAgICAgbV91dGlsQ0VCdWZmZXJfW0NvbGxhdG9yLlBSSU1BUlldIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGxpc3RoZWFkZXIubV9nYXBzTG9fW2ZzdHJlbmd0aCAqIDNdOworCQkJICAgICAgICBtX3V0aWxDRUJ1ZmZlcl9bQ29sbGF0b3IuU0VDT05EQVJZXSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGxpc3RoZWFkZXIubV9nYXBzTG9fW2ZzdHJlbmd0aCAqIDMgKyAxXTsKKwkJCSAgICAgICAgbV91dGlsQ0VCdWZmZXJfW0NvbGxhdG9yLlRFUlRJQVJZXSA9IGdldENFR2VuZXJhdG9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91dGlsR2Vuc19bQ29sbGF0b3IuVEVSVElBUlldLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RoZWFkZXIubV9nYXBzTG9fLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RoZWFkZXIubV9nYXBzSGlfLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLCBmc3RyZW5ndGgpOyAKKwkJICAgICAgICB9IAorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGluaXRzdHJlbmd0aCA9PSBDb2xsYXRvci5TRUNPTkRBUlkpIHsgCisgICAgICAgICAgICAgICAgICAgIC8vIHNlY29uZGFyaWVzCisJCSAgICAgICAgICAgIG1fdXRpbENFQnVmZmVyX1tDb2xsYXRvci5QUklNQVJZXSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBsaXN0aGVhZGVyLm1fZ2Fwc0xvX1tmc3RyZW5ndGggKiAzXTsKKwkJICAgICAgICAgICAgbV91dGlsQ0VCdWZmZXJfW0NvbGxhdG9yLlNFQ09OREFSWV0gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBnZXRDRUdlbmVyYXRvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91dGlsR2Vuc19bQ29sbGF0b3IuU0VDT05EQVJZXSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RoZWFkZXIubV9nYXBzTG9fLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGhlYWRlci5tX2dhcHNIaV8sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbiwgZnN0cmVuZ3RoKTsKKwkJICAgICAgICAgICAgbV91dGlsQ0VCdWZmZXJfW0NvbGxhdG9yLlRFUlRJQVJZXSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGdldFNpbXBsZUNFR2VuZXJhdG9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91dGlsR2Vuc19bQ29sbGF0b3IuVEVSVElBUlldLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLCBDb2xsYXRvci5URVJUSUFSWSk7CisJCSAgICAgICAgfSAKKyAgICAgICAgICAgICAgICBlbHNlIHsgCisgICAgICAgICAgICAgICAgICAgIC8vIHByaW1hcmllcyAKKwkJICAgICAgICAgICAgbV91dGlsQ0VCdWZmZXJfW0NvbGxhdG9yLlBSSU1BUlldIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gZ2V0Q0VHZW5lcmF0b3IoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXRpbEdlbnNfW0NvbGxhdG9yLlBSSU1BUlldLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGhlYWRlci5tX2dhcHNMb18sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0aGVhZGVyLm1fZ2Fwc0hpXywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLCBmc3RyZW5ndGgpOworCQkgICAgICAgICAgICBtX3V0aWxDRUJ1ZmZlcl9bQ29sbGF0b3IuU0VDT05EQVJZXSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGdldFNpbXBsZUNFR2VuZXJhdG9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3V0aWxHZW5zX1tDb2xsYXRvci5TRUNPTkRBUlldLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4sIENvbGxhdG9yLlNFQ09OREFSWSk7CisJCSAgICAgICAgICAgIG1fdXRpbENFQnVmZmVyX1tDb2xsYXRvci5URVJUSUFSWV0gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBnZXRTaW1wbGVDRUdlbmVyYXRvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91dGlsR2Vuc19bQ29sbGF0b3IuVEVSVElBUlldLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4sIENvbGxhdG9yLlRFUlRJQVJZKTsKKwkJICAgICAgICB9CisJCSAgICB9IAorICAgICAgICAgICAgZWxzZSB7CisJCSAgICAgICAgaWYgKHRva2VuLm1fc3RyZW5ndGhfID09IENvbGxhdG9yLlRFUlRJQVJZKSB7CisJCSAgICAgICAgICAgIG1fdXRpbENFQnVmZmVyX1tDb2xsYXRvci5URVJUSUFSWV0gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBnZXROZXh0R2VuZXJhdGVkKG1fdXRpbEdlbnNfW0NvbGxhdG9yLlRFUlRJQVJZXSk7CisJCSAgICAgICAgfSAKKyAgICAgICAgICAgICAgICBlbHNlIGlmICh0b2tlbi5tX3N0cmVuZ3RoXyA9PSBDb2xsYXRvci5TRUNPTkRBUlkpIHsKKwkJICAgICAgICAgICAgbV91dGlsQ0VCdWZmZXJfW0NvbGxhdG9yLlNFQ09OREFSWV0gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBnZXROZXh0R2VuZXJhdGVkKG1fdXRpbEdlbnNfW0NvbGxhdG9yLlNFQ09OREFSWV0pOworCQkgICAgICAgICAgICBtX3V0aWxDRUJ1ZmZlcl9bQ29sbGF0b3IuVEVSVElBUlldIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gZ2V0U2ltcGxlQ0VHZW5lcmF0b3IoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91dGlsR2Vuc19bQ29sbGF0b3IuVEVSVElBUlldLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbiwgQ29sbGF0b3IuVEVSVElBUlkpOworCQkgICAgICAgIH0gCisgICAgICAgICAgICAgICAgZWxzZSBpZiAodG9rZW4ubV9zdHJlbmd0aF8gPT0gQ29sbGF0b3IuUFJJTUFSWSkgeworCQkgICAgICAgICAgICBtX3V0aWxDRUJ1ZmZlcl9bQ29sbGF0b3IuUFJJTUFSWV0gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGdldE5leHRHZW5lcmF0ZWQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91dGlsR2Vuc19bQ29sbGF0b3IuUFJJTUFSWV0pOworCQkgICAgICAgICAgICBtX3V0aWxDRUJ1ZmZlcl9bQ29sbGF0b3IuU0VDT05EQVJZXSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gZ2V0U2ltcGxlQ0VHZW5lcmF0b3IoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3V0aWxHZW5zX1tDb2xsYXRvci5TRUNPTkRBUlldLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLCBDb2xsYXRvci5TRUNPTkRBUlkpOworCQkgICAgICAgICAgICBtX3V0aWxDRUJ1ZmZlcl9bQ29sbGF0b3IuVEVSVElBUlldIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBnZXRTaW1wbGVDRUdlbmVyYXRvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXRpbEdlbnNfW0NvbGxhdG9yLlRFUlRJQVJZXSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbiwgQ29sbGF0b3IuVEVSVElBUlkpOworCQkgICAgICAgIH0KKwkJICAgIH0KKwkJICAgIGRvQ0UobV91dGlsQ0VCdWZmZXJfLCB0b2tlbik7CisJCSAgICB0b2tlbiA9IHRva2VuLm1fbmV4dF87CisJICAgIH0KKwl9CisKKyAgICAvKioKKyAgICAgKiBHZXQgdGhlIG5leHQgZ2VuZXJhdGVkIGNlCisgICAgICogQHBhcmFtIGcgY2UgZ2VuZXJhdG9yCisgICAgICogQHJldHVybiBuZXh0IGdlbmVyYXRlZCBjZSAKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBnZXROZXh0R2VuZXJhdGVkKENFR2VuZXJhdG9yIGcpIAorICAgIHsKKyAgICAgICAgZy5tX2N1cnJlbnRfID0gbmV4dFdlaWdodChnKTsKKyAgICAgICAgcmV0dXJuIGcubV9jdXJyZW50XzsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gZyBDRUdlbmVyYXRvcgorICAgICAqIEBwYXJhbSB0b2tlbiBydWxlIHRva2VuCisgICAgICogQHBhcmFtIGZzdHJlbmd0aCAKKyAgICAgKiBAcmV0dXJuIGNlIGdlbmVyYXRvcgorICAgICAqIEBleGNlcHRpb24gRXhjZXB0aW9uIHRocm93biB3aGVuIGludGVybmFsIGVycm9yIG9jY3VycworICAgICAqLworICAgIHByaXZhdGUgaW50IGdldFNpbXBsZUNFR2VuZXJhdG9yKENFR2VuZXJhdG9yIGcsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxhdGlvblJ1bGVQYXJzZXIuVG9rZW4gdG9rZW4sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdHJlbmd0aCkgdGhyb3dzIEV4Y2VwdGlvbgorICAgIHsKKyAgICAgICAgaW50IGhpZ2gsIGxvdywgY291bnQgPSAxOworICAgICAgICBpbnQgbWF4Ynl0ZSA9IChzdHJlbmd0aCA9PSBDb2xsYXRvci5URVJUSUFSWSkgPyAweDNGIDogMHhGRjsKKworCSAgICBpZiAoc3RyZW5ndGggPT0gQ29sbGF0b3IuU0VDT05EQVJZKSB7CisJCSAgICBsb3cgPSBSdWxlQmFzZWRDb2xsYXRvci5DT01NT05fVE9QXzJfIDw8IDI0OworCQkgICAgaGlnaCA9IDB4RkZGRkZGRkY7CisJCSAgICBjb3VudCA9IDB4RkYgLSBSdWxlQmFzZWRDb2xsYXRvci5DT01NT05fVE9QXzJfOworCSAgICB9IAorICAgICAgICBlbHNlIHsKKwkgICAgICAgIGxvdyA9IFJ1bGVCYXNlZENvbGxhdG9yLkJZVEVfQ09NTU9OXyA8PCAyNDsgLy8weDA1MDAwMDAwOworCSAgICAgICAgaGlnaCA9IDB4NDAwMDAwMDA7CisJICAgICAgICBjb3VudCA9IDB4NDAgLSBSdWxlQmFzZWRDb2xsYXRvci5CWVRFX0NPTU1PTl87CisJICAgIH0KKwkKKwkgICAgaWYgKHRva2VuLm1fbmV4dF8gIT0gbnVsbCAmJiB0b2tlbi5tX25leHRfLm1fc3RyZW5ndGhfID09IHN0cmVuZ3RoKSB7CisJICAgICAgICBjb3VudCA9IHRva2VuLm1fbmV4dF8ubV90b0luc2VydF87CisJICAgIH0gCisJCisJICAgIGcubV9yYW5nZXNMZW5ndGhfID0gYWxsb2NhdGVXZWlnaHRzKGxvdywgaGlnaCwgY291bnQsIG1heGJ5dGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnLm1fcmFuZ2VzXyk7CisJICAgIGcubV9jdXJyZW50XyA9IFJ1bGVCYXNlZENvbGxhdG9yLkJZVEVfQ09NTU9OXyA8PCAyNDsKKwkKKwkgICAgaWYgKGcubV9yYW5nZXNMZW5ndGhfID09IDApIHsKKwkgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oIkludGVybmFsIHByb2dyYW0gZXJyb3IiKTsKKwkgICAgfQorCSAgICByZXR1cm4gZy5tX2N1cnJlbnRfOworCX0KKworICAgIC8qKgorICAgICAqIENvbWJpbmVzIDIgY2UgaW50byBvbmUgd2l0aCByZXNwZWN0IHRvIHRoZSBhcmd1bWVudCBzdHJlbmd0aAorICAgICAqIEBwYXJhbSBjZTEgZmlyc3QgY2UKKyAgICAgKiBAcGFyYW0gY2UyIHNlY29uZCBjZQorICAgICAqIEBwYXJhbSBzdHJlbmd0aCBzdHJlbmd0aCB0byB1c2UKKyAgICAgKiBAcmV0dXJuIGNvbWJpbmVkIGNlCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgaW50IG1lcmdlQ0UoaW50IGNlMSwgaW50IGNlMiwgaW50IHN0cmVuZ3RoKSAKKyAgICB7CisgICAgICAgIGludCBtYXNrID0gUnVsZUJhc2VkQ29sbGF0b3IuQ0VfVEVSVElBUllfTUFTS187CisgICAgICAgIGlmIChzdHJlbmd0aCA9PSBDb2xsYXRvci5TRUNPTkRBUlkpIHsKKyAgICAgICAgICAgIG1hc2sgPSBSdWxlQmFzZWRDb2xsYXRvci5DRV9TRUNPTkRBUllfTUFTS187CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoc3RyZW5ndGggPT0gQ29sbGF0b3IuUFJJTUFSWSkgeworICAgICAgICAgICAgbWFzayA9IFJ1bGVCYXNlZENvbGxhdG9yLkNFX1BSSU1BUllfTUFTS187CisgICAgICAgIH0KKyAgICAgICAgY2UxICY9IG1hc2s7CisgICAgICAgIGNlMiAmPSBtYXNrOworICAgICAgICBzd2l0Y2ggKHN0cmVuZ3RoKSAKKyAgICAgICAgeworICAgICAgICAgICAgY2FzZSBDb2xsYXRvci5QUklNQVJZOgorICAgICAgICAgICAgICAgIHJldHVybiBjZTEgfCBjZTIgPj4+IDE2OworICAgICAgICAgICAgY2FzZSBDb2xsYXRvci5TRUNPTkRBUlk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNlMSA8PCAxNiB8IGNlMiA8PCA4OworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gY2UxIDw8IDI0IHwgY2UyIDw8IDE2OworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEBwYXJhbSBnIENFR2VuZXJhdG9yCisgICAgICogQHBhcmFtIGxvd3MgbG93IGdhcCBhcnJheQorICAgICAqIEBwYXJhbSBoaWdocyBoaWdoIGdhcCBhcnJheQorICAgICAqIEBwYXJhbSB0b2tlbiBydWxlIHRva2VuCisgICAgICogQHBhcmFtIGZzdHJlbmd0aCAKKyAgICAgKiBAZXhjZXB0aW9uIEV4Y2VwdGlvbiB0aHJvd24gd2hlbiBpbnRlcm5hbCBlcnJvciBvY2N1cnMKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBnZXRDRUdlbmVyYXRvcihDRUdlbmVyYXRvciBnLCBpbnQgbG93c1tdLCBpbnQgaGlnaHNbXSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGF0aW9uUnVsZVBhcnNlci5Ub2tlbiB0b2tlbiwgaW50IGZzdHJlbmd0aCkgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dzIEV4Y2VwdGlvbgorICAgIHsKKwkgICAgaW50IHN0cmVuZ3RoID0gdG9rZW4ubV9zdHJlbmd0aF87CisJICAgIGludCBsb3cgPSBsb3dzW2ZzdHJlbmd0aCAqIDMgKyBzdHJlbmd0aF07CisJICAgIGludCBoaWdoID0gaGlnaHNbZnN0cmVuZ3RoICogMyArIHN0cmVuZ3RoXTsKKwkgICAgaW50IG1heGJ5dGUgPSAoc3RyZW5ndGggPT0gQ29sbGF0b3IuVEVSVElBUlkpID8gMHgzRiA6IDB4RkY7CisJCisJICAgIGludCBjb3VudCA9IHRva2VuLm1fdG9JbnNlcnRfOworCQorCSAgICBpZiAoVXRpbGl0eS5jb21wYXJlVW5zaWduZWQobG93LCBoaWdoKSA+PSAwIAorICAgICAgICAgICAgJiYgc3RyZW5ndGggPiBDb2xsYXRvci5QUklNQVJZKSB7CisJICAgICAgICBpbnQgcyA9IHN0cmVuZ3RoOworCSAgICAgICAgd2hpbGUgKHRydWUpIHsKKwkJICAgICAgICBzIC0tOworCQkgICAgICAgIGlmIChsb3dzW2ZzdHJlbmd0aCAqIDMgKyBzXSAhPSBoaWdoc1tmc3RyZW5ndGggKiAzICsgc10pIHsKKwkJICAgICAgICAgICAgaWYgKHN0cmVuZ3RoID09IENvbGxhdG9yLlNFQ09OREFSWSkgeworCQkgICAgICAgICAgICAgICAgbG93ID0gUnVsZUJhc2VkQ29sbGF0b3IuQ09NTU9OX1RPUF8yXyA8PCAyNDsKKwkJICAgICAgICAgICAgICAgIGhpZ2ggPSAweEZGRkZGRkZGOworCQkgICAgICAgICAgICB9IAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKwkJICAgICAgICAgICAgICAgIC8vIGxvdyA9IDB4MDIwMDAwMDA7IAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBuZWVkcyB0byBiZSBjaGVja2VkIC0gd2hhdCBpZiBsb3cgaXMKKwkJICAgICAgICAgICAgICAgIC8vIG5vdCBnb29kLi4uCisJCSAgICAgICAgICAgICAgICBoaWdoID0gMHg0MDAwMDAwMDsKKwkJICAgICAgICAgICAgfQorCQkgICAgICAgICAgICBicmVhazsKKwkJICAgICAgICB9CisJCSAgICAgICAgaWYgKHMgPCAwKSB7CisJCSAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oIkludGVybmFsIHByb2dyYW0gZXJyb3IiKTsKKwkJICAgICAgICB9CisJICAgICAgICB9CisJICAgIH0gCisJICAgIGlmIChsb3cgPT0gMCkgeworCSAgICAgICAgbG93ID0gMHgwMTAwMDAwMDsKKwkgICAgfQorCSAgICBpZiAoc3RyZW5ndGggPT0gQ29sbGF0b3IuU0VDT05EQVJZKSB7IC8vIHNpbWlsYXIgYXMgc2ltcGxlIAorCSAgICAgICAgaWYgKFV0aWxpdHkuY29tcGFyZVVuc2lnbmVkKGxvdywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdWxlQmFzZWRDb2xsYXRvci5DT01NT05fQk9UVE9NXzJfIDw8IDI0KSA+PSAwCisgICAgICAgICAgICAgICAgJiYgVXRpbGl0eS5jb21wYXJlVW5zaWduZWQobG93LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yLkNPTU1PTl9UT1BfMl8gPDwgMjQpIDwgMCkgeworCSAgICAgICAgICAgIGxvdyA9IFJ1bGVCYXNlZENvbGxhdG9yLkNPTU1PTl9UT1BfMl8gPDwgMjQ7CisgICAgICAgICAgICB9CisJICAgICAgICBpZiAoVXRpbGl0eS5jb21wYXJlVW5zaWduZWQoaGlnaCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IuQ09NTU9OX0JPVFRPTV8yXyA8PCAyNCkgPiAwIAorICAgICAgICAgICAgICAgICYmIFV0aWxpdHkuY29tcGFyZVVuc2lnbmVkKGhpZ2gsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yLkNPTU1PTl9UT1BfMl8gPDwgMjQpIDwgMCkgeworCSAgICAgICAgICAgIGhpZ2ggPSBSdWxlQmFzZWRDb2xsYXRvci5DT01NT05fVE9QXzJfIDw8IDI0OworCSAgICAgICAgfSAKKwkgICAgICAgIGlmIChVdGlsaXR5LmNvbXBhcmVVbnNpZ25lZChsb3csIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yLkNPTU1PTl9CT1RUT01fMl8gPDwgMjQpIDwgMCkgeworCSAgICAgICAgICAgIGcubV9yYW5nZXNMZW5ndGhfID0gYWxsb2NhdGVXZWlnaHRzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdWxlQmFzZWRDb2xsYXRvci5DT01NT05fVE9QXzJfIDw8IDI0LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlnaCwgY291bnQsIG1heGJ5dGUsIGcubV9yYW5nZXNfKTsKKwkgICAgICAgICAgICBnLm1fY3VycmVudF8gPSBSdWxlQmFzZWRDb2xsYXRvci5DT01NT05fQk9UVE9NXzJfOworCSAgICAgICAgICAgIHJldHVybiBnLm1fY3VycmVudF87CisJICAgICAgICB9CisJICAgIH0gCisJCisJICAgIGcubV9yYW5nZXNMZW5ndGhfID0gYWxsb2NhdGVXZWlnaHRzKGxvdywgaGlnaCwgY291bnQsIG1heGJ5dGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnLm1fcmFuZ2VzXyk7CisJICAgIGlmIChnLm1fcmFuZ2VzTGVuZ3RoXyA9PSAwKSB7CisJICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCJJbnRlcm5hbCBwcm9ncmFtIGVycm9yIik7CisJICAgIH0KKwkgICAgZy5tX2N1cnJlbnRfID0gbmV4dFdlaWdodChnKTsKKwkgICAgcmV0dXJuIGcubV9jdXJyZW50XzsKKwl9CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gY2VwYXJ0cyBsaXN0IG9mIGNvbGxhdGlvbiBlbGVtZW50cyBwYXJ0cworICAgICAqIEBwYXJhbSB0b2tlbiBydWxlIHRva2VuCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIGRvQ0UoaW50IGNlcGFydHNbXSwgQ29sbGF0aW9uUnVsZVBhcnNlci5Ub2tlbiB0b2tlbikgCisgICAgeworICAgICAgICAvLyB0aGlzIG9uZSBtYWtlcyB0aGUgdGFibGUgYW5kIHN0dWZmCisJICAgIC8vIGludCBub29mYnl0ZXNbXSA9IG5ldyBpbnRbM107CisJICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgaSArKykgeworCSAgICAgICAgLy8gbm9vZmJ5dGVzW2ldID0gY291bnRCeXRlcyhjZXBhcnRzW2ldKTsKKyAgICAgICAgICAgIG1fdXRpbEludEJ1ZmZlcl9baV0gPSBjb3VudEJ5dGVzKGNlcGFydHNbaV0pOworCSAgICB9CisJCisJICAgIC8vIEhlcmUgd2UgaGF2ZSB0byBwYWNrIENFcyBmcm9tIHBhcnRzCisJICAgIGludCBjZWkgPSAwOworCSAgICBpbnQgdmFsdWUgPSAwOworCQorCSAgICB3aGlsZSAoKGNlaSA8PCAxKSA8IG1fdXRpbEludEJ1ZmZlcl9bMF0gfHwgY2VpIDwgbV91dGlsSW50QnVmZmVyX1sxXSAKKyAgICAgICAgICAgICAgIHx8IGNlaSA8IG1fdXRpbEludEJ1ZmZlcl9bMl0pIHsKKwkgICAgICAgIGlmIChjZWkgPiAwKSB7CisJICAgICAgICAgICAgdmFsdWUgPSBSdWxlQmFzZWRDb2xsYXRvci5DRV9DT05USU5VQVRJT05fTUFSS0VSXzsKKwkJICAgIH0gZWxzZSB7CisJCSAgICAgICAgdmFsdWUgPSAwOworCQkgICAgfQorCQkKKwkJICAgIGlmICgoY2VpIDw8IDEpIDwgbV91dGlsSW50QnVmZmVyX1swXSkgeworCQkgICAgICAgIHZhbHVlIHw9ICgoY2VwYXJ0c1swXSA+PiAoMzIgLSAoKGNlaSArIDEpIDw8IDQpKSkgJiAweEZGRkYpIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgMTY7CisJCSAgICB9CisJCSAgICBpZiAoY2VpIDwgbV91dGlsSW50QnVmZmVyX1sxXSkgeworCQkgICAgICAgIHZhbHVlIHw9ICgoY2VwYXJ0c1sxXSA+PiAoMzIgLSAoKGNlaSArIDEpIDw8IDMpKSkgJiAweEZGKSA8PCA4OworCQkgICAgfQorCQkgICAgaWYgKGNlaSA8IG1fdXRpbEludEJ1ZmZlcl9bMl0pIHsKKwkJICAgICAgICB2YWx1ZSB8PSAoKGNlcGFydHNbMl0gPj4gKDMyIC0gKChjZWkrMSkgPDwgMykpKSAmIDB4M0YpOworCQkgICAgfQorCQkgICAgdG9rZW4ubV9DRV9bY2VpXSA9IHZhbHVlOworCQkgICAgY2VpICsrOworCQkgIH0KKwkJICBpZiAoY2VpID09IDApIHsgLy8gdG90YWxseSBpZ25vcmFibGUKKwkJICAgICAgdG9rZW4ubV9DRUxlbmd0aF8gPSAxOworCQkgICAgICB0b2tlbi5tX0NFX1swXSA9IDA7CisJCSAgfSAKKyAgICAgICAgICBlbHNlIHsgLy8gdGhlcmUgaXMgYXQgbGVhc3Qgc29tZXRoaW5nCisJCSAgICAgIHRva2VuLm1fQ0VMZW5ndGhfID0gY2VpOworCQl9CisJfQorCisgICAgLyoqCisgICAgICogQ291bnQgdGhlIG51bWJlciBvZiBub24temVybyBieXRlcyB1c2VkIGluIHRoZSBjZQorICAgICAqIEBwYXJhbSBjZSAKKyAgICAgKiBAcmV0dXJuIG51bWJlciBvZiBub24temVybyBieXRlcyB1c2VkIGluIGNlCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IGNvdW50Qnl0ZXMoaW50IGNlKSAgIAorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJICAgIGludCBtYXNrID0gMHhGRkZGRkZGRjsgICAKKwkgICAgaW50IHJlc3VsdCA9IDA7ICAgICAgICAgICAgICAKKwkgICAgd2hpbGUgKG1hc2sgIT0gMCkgeyAgICAgICAgICAgIAorCSAgICAgICAgaWYgKChjZSAmIG1hc2spICE9IDApIHsgCisJICAgICAgICAgICAgcmVzdWx0ICsrOyAgICAgICAgICAgIAorCSAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCSAgICAgICAgbWFzayA+Pj49IDg7ICAgICAgICAgICAgICAgICAKKwkgICAgfSAgIAorICAgICAgICByZXR1cm4gcmVzdWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgCisJfQorCQorCS8qKgorCSAqIFdlIGFyZSByZWFkeSB0byBjcmVhdGUgY29sbGF0aW9uIGVsZW1lbnRzCisJICogQHBhcmFtIHQgYnVpbGQgdGFibGUgdG8gaW5zZXJ0CisJICogQHBhcmFtIGxoIHJ1bGUgdG9rZW4gbGlzdCBoZWFkZXIKKwkgKiBAZXhjZXB0aW9uIEV4Y2VwdGlvbiB0aHJvd24gd2hlbiBpbnRlcm5hbCBwcm9ncmFtIGVycm9yIG9jY3VycworCSAqLworCXByaXZhdGUgdm9pZCBjcmVhdGVFbGVtZW50cyhCdWlsZFRhYmxlIHQsIAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsYXRpb25SdWxlUGFyc2VyLlRva2VuTGlzdEhlYWRlciBsaCkgCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93cyBFeGNlcHRpb24KKyAgICB7CisJICAgIENvbGxhdGlvblJ1bGVQYXJzZXIuVG9rZW4gdG9rID0gbGgubV9maXJzdF87CisJICAgIG1fdXRpbEVsZW1lbnRfLmNsZWFyKCk7CisJICAgIHdoaWxlICh0b2sgIT0gbnVsbCkgeworCSAgICAJLy8gZmlyc3QsIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgZXhwYW5zaW9ucworCSAgICAJLy8gaWYgdGhlcmUgYXJlIGV4cGFuc2lvbnMsIHdlIG5lZWQgdG8gZG8gYSBsaXR0bGUgYml0IG1vcmUgCisJICAgIAkvLyBwcm9jZXNzaW5nIHNpbmNlIHBhcnRzIG9mIGV4cGFuc2lvbiBjYW4gYmUgdGFpbG9yZWQsIHdoaWxlIAorCSAgICAJLy8gb3RoZXJzIGFyZSBub3QKKwkgICAgCWlmICh0b2subV9leHBhbnNpb25fICE9IDApIHsKKwkgICAgICAgICAgICBpbnQgbGVuID0gdG9rLm1fZXhwYW5zaW9uXyA+Pj4gMjQ7CisJICAgICAgICAgICAgaW50IGN1cnJlbnRTZXF1ZW5jZUxlbiA9IGxlbjsKKwkgICAgICAgICAgICBpbnQgZXhwT2Zmc2V0ID0gdG9rLm1fZXhwYW5zaW9uXyAmIDB4MDBGRkZGRkY7CisJICAgICAgICAgICAgbV91dGlsVG9rZW5fLm1fc291cmNlXyA9IGN1cnJlbnRTZXF1ZW5jZUxlbiB8IGV4cE9mZnNldDsKKwkgICAgICAgICAgICBtX3V0aWxUb2tlbl8ubV9ydWxlc18gPSBtX3BhcnNlcl8ubV9zb3VyY2VfOworCQorCSAgICAgICAgICAgIHdoaWxlIChsZW4gPiAwKSB7CisJCQkgICAgICAgIGN1cnJlbnRTZXF1ZW5jZUxlbiA9IGxlbjsKKwkJCSAgICAgICAgd2hpbGUgKGN1cnJlbnRTZXF1ZW5jZUxlbiA+IDApIHsKKwkJCSAgICAgICAgICAgIG1fdXRpbFRva2VuXy5tX3NvdXJjZV8gPSAoY3VycmVudFNlcXVlbmNlTGVuIDw8IDI0KSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGV4cE9mZnNldDsKKwkJCSAgICAgICAgICAgIENvbGxhdGlvblJ1bGVQYXJzZXIuVG9rZW4gZXhwdCA9IAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ29sbGF0aW9uUnVsZVBhcnNlci5Ub2tlbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VyXy5tX2hhc2hUYWJsZV8uZ2V0KG1fdXRpbFRva2VuXyk7CisJCQkgICAgICAgICAgICBpZiAoZXhwdCAhPSBudWxsIAorCQkJICAgICAgICAgICAgICAgICYmIGV4cHQubV9zdHJlbmd0aF8gCisJCQkgICAgICAgICAgICAgICAgICAgIT0gQ29sbGF0aW9uUnVsZVBhcnNlci5UT0tFTl9SRVNFVF8pIHsgCisJCQkgICAgICAgICAgICAgICAgLy8gZXhwYW5zaW9uIGlzIHRhaWxvcmVkCisJCQkgICAgICAgICAgICAgICAgaW50IG5vT2ZDRXNUb0NvcHkgPSBleHB0Lm1fQ0VMZW5ndGhfOworCQkJICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbm9PZkNFc1RvQ29weTsgaiArKykgeworCQkJICAgICAgICAgICAgICAgICAgICB0b2subV9leHBDRV9bdG9rLm1fZXhwQ0VMZW5ndGhfICsgal0gCisJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGV4cHQubV9DRV9bal07CisJCQkgICAgICAgICAgICAgICAgIH0KKwkJCSAgICAgICAgICAgICAgICAgdG9rLm1fZXhwQ0VMZW5ndGhfICs9IG5vT2ZDRXNUb0NvcHk7CisJCQkgICAgICAgICAgICAgICAgIC8vIG5ldmVyIHRyeSB0byBhZGQgY29kZXBvaW50cyBhbmQgQ0VzLgorCQkJICAgICAgICAgICAgICAgICAvLyBGb3Igc29tZSBvZGQgcmVhc29uLCBpdCB3b24ndCB3b3JrLgorCQkJICAgICAgICAgICAgICAgICBleHBPZmZzZXQgKz0gY3VycmVudFNlcXVlbmNlTGVuOyAvL25vT2ZDRXNUb0NvcHk7CisJCQkgICAgICAgICAgICAgICAgIGxlbiAtPSBjdXJyZW50U2VxdWVuY2VMZW47IC8vbm9PZkNFc1RvQ29weTsKKwkJCSAgICAgICAgICAgICAgICAgYnJlYWs7CisJCQkgICAgICAgICAgICAgfSAKKwkJCSAgICAgICAgICAgICBlbHNlIHsKKwkJCSAgICAgICAgICAgICAgICAgY3VycmVudFNlcXVlbmNlTGVuIC0tOworCQkJICAgICAgICAgICAgIH0KKwkJCSAgICAgICAgfQorCSAgICAgICAgICAgICAgICBpZiAoY3VycmVudFNlcXVlbmNlTGVuID09IDApIHsgCisJICAgICAgICAgICAgICAgICAgICAvLyBjb3VsZG4ndCBmaW5kIGFueSB0YWlsb3JlZCBzdWJzZXF1ZW5jZSwgd2lsbCBoYXZlIHRvIAorCSAgICAgICAgICAgICAgICAgICAgLy8gZ2V0IG9uZSBmcm9tIFVDQS4gZmlyc3QsIGdldCB0aGUgVUNoYXJzIGZyb20gdGhlIAorCSAgICAgICAgICAgICAgICAgICAgLy8gcnVsZXMgdGhlbiBwaWNrIENFcyBvdXQgdW50aWwgdGhlcmUgaXMgbm8gbW9yZSBhbmQgCisJICAgICAgICAgICAgICAgICAgICAvLyBzdHVmZiB0aGVtIGludG8gZXhwYW5zaW9uCisJICAgICAgICAgICAgICAgICAgICBtX3V0aWxDb2xFSXRlcl8uc2V0VGV4dChtX3BhcnNlcl8ubV9zb3VyY2VfLnN1YnN0cmluZygKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBPZmZzZXQsIGV4cE9mZnNldCArIDEpKTsKKwkgICAgICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisJICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9yZGVyID0gbV91dGlsQ29sRUl0ZXJfLm5leHQoKTsKKwkgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3JkZXIgPT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUikgeworCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgICAgICAgICAgICAgdG9rLm1fZXhwQ0VfW3Rvay5tX2V4cENFTGVuZ3RoXyArK10gPSBvcmRlcjsKKwkgICAgICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAgICAgICAgIGV4cE9mZnNldCArKzsKKwkgICAgICAgICAgICAgICAgICAgIGxlbiAtLTsKKwkgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgIH0KKwkgICAgICAgIH0gCisJICAgICAgICBlbHNlIHsKKwkgICAgICAgICAgICB0b2subV9leHBDRUxlbmd0aF8gPSAwOworCSAgICAgICAgfQorCQorCSAgICAgICAgLy8gc2V0IHRoZSB1Y2FlbGVtZW50IHdpdGggb2J0YWluZWQgdmFsdWVzCisgICAgICAgICAgICBtX3V0aWxFbGVtZW50Xy5tX0NFTGVuZ3RoXyA9IHRvay5tX0NFTGVuZ3RoXyArIHRvay5tX2V4cENFTGVuZ3RoXzsKKyAgICAgICAgICAgIAorCSAgICAgICAgLy8gY29weSBDRXMKKwkgICAgICAgIFN5c3RlbS5hcnJheWNvcHkodG9rLm1fQ0VfLCAwLCBtX3V0aWxFbGVtZW50Xy5tX0NFc18sIDAsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2subV9DRUxlbmd0aF8pOworCSAgICAgICAgU3lzdGVtLmFycmF5Y29weSh0b2subV9leHBDRV8sIDAsIG1fdXRpbEVsZW1lbnRfLm1fQ0VzXywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvay5tX0NFTGVuZ3RoXywgdG9rLm1fZXhwQ0VMZW5ndGhfKTsKKwkKKwkgICAgICAgIC8vIGNvcHkgVUNoYXJzIAorCSAgICAgICAgLy8gV2Uga2VwdCBwcmVmaXggYW5kIHNvdXJjZSBraW5kIG9mIHRvZ2V0aGVyLCBhcyBpdCBpcyBhIGtpbmQgb2YgYSAKKwkgICAgICAgIC8vIGNvbnRyYWN0aW9uLiAKKwkgICAgICAgIC8vIEhvd2V2ZXIsIG5vdyB3ZSBoYXZlIHRvIHNsaWNlIHRoZSBwcmVmaXggb2ZmIHRoZSBtYWluIHRoaW5nIC0gCisJICAgICAgICBtX3V0aWxFbGVtZW50Xy5tX3ByZWZpeF8gPSAwOy8vIGVsLm1fcHJlZml4Q2hhcnNfOworCSAgICAgICAgbV91dGlsRWxlbWVudF8ubV9jUG9pbnRzT2Zmc2V0XyA9IDA7IC8vZWwubV91Y2hhcnNfOworCSAgICAgICAgaWYgKHRvay5tX3ByZWZpeF8gIT0gMCkgeyAKKwkgICAgICAgIAkvLyB3ZSB3aWxsIGp1c3QgY29weSB0aGUgcHJlZml4IGhlcmUsIGFuZCBhZGp1c3QgYWNjb3JkaW5nbHkgaW4gCisJICAgICAgICAJLy8gdGhlIGFkZFByZWZpeCBmdW5jdGlvbiBpbiB1Y29sX2VsbS4gVGhlIHJlYXNvbiBpcyB0aGF0IHdlIAorCSAgICAgICAgCS8vIG5lZWQgdG8gYWRkIGJvdGggY29tcG9zZWQgQU5EIGRlY29tcG9zZWQgZWxlbWVudHMgdG8gdGhlIAorCSAgICAgICAgCS8vIHVuc2FmZSB0YWJsZS4KKwkJICAgICAgICBpbnQgc2l6ZSA9IHRvay5tX3ByZWZpeF8gPj4gMjQ7CisJCSAgICAgICAgaW50IG9mZnNldCA9IHRvay5tX3ByZWZpeF8gJiAweDAwRkZGRkZGOworCQkgICAgICAgIG1fdXRpbEVsZW1lbnRfLm1fcHJlZml4Q2hhcnNfIAorICAgICAgICAgICAgICAgICAgICAgICAgPSBtX3BhcnNlcl8ubV9zb3VyY2VfLnN1YnN0cmluZyhvZmZzZXQsIG9mZnNldCArIHNpemUpOworCQkgICAgICAgIHNpemUgPSAodG9rLm1fc291cmNlXyA+PiAyNCkgLSAodG9rLm1fcHJlZml4XyA+PiAyNCk7IAorCQkgICAgICAgIG9mZnNldCA9ICh0b2subV9zb3VyY2VfICYgMHgwMEZGRkZGRikgKyAodG9rLm1fcHJlZml4XyA+PiAyNCk7CisJCSAgICAgICAgbV91dGlsRWxlbWVudF8ubV91Y2hhcnNfIAorICAgICAgICAgICAgICAgICAgICAgPSBtX3BhcnNlcl8ubV9zb3VyY2VfLnN1YnN0cmluZyhvZmZzZXQsIG9mZnNldCArIHNpemUpOworCQkgICAgfSAKKwkJICAgIGVsc2UgeworCSAgICAgICAgICAgIG1fdXRpbEVsZW1lbnRfLm1fcHJlZml4Q2hhcnNfID0gbnVsbDsKKwkgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gdG9rLm1fc291cmNlXyAmIDB4MDBGRkZGRkY7CisJICAgICAgICAgICAgaW50IHNpemUgPSB0b2subV9zb3VyY2VfID4+PiAyNDsKKwkgICAgICAgICAgICBtX3V0aWxFbGVtZW50Xy5tX3VjaGFyc18gPSBtX3BhcnNlcl8ubV9zb3VyY2VfLnN1YnN0cmluZyhvZmZzZXQsIAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKyBzaXplKTsKKwkgICAgICAgIH0KKwkgICAgICAgIG1fdXRpbEVsZW1lbnRfLm1fY1BvaW50c18gPSBtX3V0aWxFbGVtZW50Xy5tX3VjaGFyc187CisJICAgICAgICBtX3V0aWxFbGVtZW50Xy5tX2lzVGhhaV8gPSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuaXNUaGFpUHJlVm93ZWwoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3V0aWxFbGVtZW50Xy5tX2NQb2ludHNfLmNoYXJBdCgwKSk7CisJICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fdXRpbEVsZW1lbnRfLm1fY1BvaW50c18ubGVuZ3RoKCkgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gbV91dGlsRWxlbWVudF8ubV9jUG9pbnRzT2Zmc2V0XzsgaSArKykgeworCQkgICAgICAgICBpZiAoaXNKYW1vKG1fdXRpbEVsZW1lbnRfLm1fY1BvaW50c18uY2hhckF0KGkpKSkgeworCQkgICAgICAgICAgICAgdC5tX2NvbGxhdG9yXy5tX2lzSmFtb1NwZWNpYWxfID0gdHJ1ZTsKKwkJICAgICAgICAgICAgIGJyZWFrOworCQkgICAgICAgIH0KKwkJICAgIH0KKwkKKwkgICAgICAgIC8vIENhc2UgYml0cyBoYW5kbGluZyAKKwkgICAgICAgIG1fdXRpbEVsZW1lbnRfLm1fQ0VzX1swXSAmPSAweEZGRkZGRjNGOyAKKyAgICAgICAgICAgIC8vIENsZWFuIHRoZSBjYXNlIGJpdHMgZmllbGQKKwkgICAgICAgIGlmIChtX3V0aWxFbGVtZW50Xy5tX2NQb2ludHNfLmxlbmd0aCgpIAorICAgICAgICAgICAgICAgIC0gbV91dGlsRWxlbWVudF8ubV9jUG9pbnRzT2Zmc2V0XyA+IDEpIHsKKwkgICAgICAgICAgICAvLyBEbyBpdCBtYW51YWxseQorCSAgICAgICAgICAgIG1fdXRpbEVsZW1lbnRfLm1fQ0VzX1swXSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8PSBnZXRDYXNlQml0cyhtX3V0aWxFbGVtZW50Xy5tX2NQb2ludHNfKTsKKwkgICAgICAgIH0gCisJICAgICAgICBlbHNlIHsKKwkgICAgICAgICAgICAvLyBDb3B5IGl0IGZyb20gdGhlIFVDQQorCSAgICAgICAgICAgIGludCBjYXNlQ0UgPSBnZXRGaXJzdENFKG1fdXRpbEVsZW1lbnRfLm1fY1BvaW50c18uY2hhckF0KDApKTsKKwkgICAgICAgICAgICBtX3V0aWxFbGVtZW50Xy5tX0NFc19bMF0gfD0gKGNhc2VDRSAmIDB4QzApOworCSAgICAgICAgfQorCQorCSAgICAgICAgLy8gYW5kIHRoZW4sIGFkZCBpdAorCSAgICAgICAgYWRkQW5FbGVtZW50KHQsIG1fdXRpbEVsZW1lbnRfKTsKKwkgICAgICAgIHRvayA9IHRvay5tX25leHRfOworCSAgICB9ICAgCisJfQorCQorCS8qKgorCSAqIFRlc3RpbmcgaWYgdGhlIHN0cmluZyBhcmd1bWVudCBoYXMgY2FzZQorCSAqIEBwYXJhbSBzcmMgc3RyaW5nCisJICogQHJldHVybiB0aGUgY2FzZSBmb3IgdGhpcyBjaGFyIGFycmF5CisJICogQGV4Y2VwdGlvbiBFeGNlcHRpb24gdGhyb3duIHdoZW4gaW50ZXJuYWwgcHJvZ3JhbSBlcnJvciBvY2N1cnMKKwkgKi8KKwlwcml2YXRlIGZpbmFsIGludCBnZXRDYXNlQml0cyhTdHJpbmcgc3JjKSB0aHJvd3MgRXhjZXB0aW9uCisJeworCQlpbnQgdUNvdW50ID0gMDsgCisJCWludCBsQ291bnQgPSAwOworCQlzcmMgPSBOb3JtYWxpemVyLmRlY29tcG9zZShzcmMsIHRydWUpOworCQltX3V0aWxDb2xFSXRlcl8uc2V0VGV4dChzcmMpOworCQlmb3IgKGludCBpID0gMDsgaSA8IHNyYy5sZW5ndGgoKTsgaSsrKSB7CisJCQltX3V0aWxDb2xFSXRlcl8uc2V0VGV4dChzcmMuc3Vic3RyaW5nKGksIGkgKyAxKSk7CisJCSAgICBpbnQgb3JkZXIgPSBtX3V0aWxDb2xFSXRlcl8ubmV4dCgpOworCQkgICAgaWYgKFJ1bGVCYXNlZENvbGxhdG9yLmlzQ29udGludWF0aW9uKG9yZGVyKSkgeworCQkgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oIkludGVybmFsIHByb2dyYW0gZXJyb3IiKTsKKwkJICAgIH0KKwkJICAgIGlmICgob3JkZXIgJiBSdWxlQmFzZWRDb2xsYXRvci5DRV9DQVNFX0JJVF9NQVNLXykKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PSBVUFBFUl9DQVNFXykgeworCQkgICAgICAgIHVDb3VudCArKzsKKwkJICAgIH0gCisJCSAgICBlbHNlIHsKKwkJICAgIAljaGFyIGNoID0gc3JjLmNoYXJBdChpKTsKKwkJICAgICAgICBpZiAoVUNoYXJhY3Rlci5pc0xvd2VyQ2FzZShjaCkpIHsKKwkJICAgICAgICAgICAgbENvdW50ICsrOworCQkgICAgICAgIH0gCisJCSAgICAgICAgZWxzZSB7CisJCSAgICAgICAgICAgIGlmICh0b1NtYWxsS2FuYShjaCkgPT0gY2ggJiYgdG9MYXJnZUthbmEoY2gpICE9IGNoKSB7CisJCSAgICAgICAgICAgICAgICBsQ291bnQgKys7CisJCSAgICAgICAgICAgIH0KKwkJICAgICAgICB9CisJCSAgICB9CisJCX0KKwkJCisJCWlmICh1Q291bnQgIT0gMCAmJiBsQ291bnQgIT0gMCkgeworCQkgICAgcmV0dXJuIE1JWEVEX0NBU0VfOworCQl9IAorCQllbHNlIGlmICh1Q291bnQgIT0gMCkgeworCQkgICAgcmV0dXJuIFVQUEVSX0NBU0VfOworCQl9IAorCQllbHNlIHsKKwkJICAgIHJldHVybiBMT1dFUl9DQVNFXzsKKwkJfQorCX0KKwkKKwkvKioKKwkgKiBDb252ZXJ0cyBhIGNoYXIgdG8gdGhlIHVwcGVyY2FzZSBLYW5hCisJICogQHBhcmFtIGNoIGNoYXJhY3RlciB0byBjb252ZXJ0CisJICogQHJldHVybiB0aGUgY29udmVydGVkIEthbmEgY2hhcmFjdGVyCisJICovCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciB0b0xhcmdlS2FuYShjaGFyIGNoKSAKKwl7CisJICAgIGlmICgweDMwNDIgPCBjaCAmJiBjaCA8IDB4MzBlZikgeyAvLyBLYW5hIHJhbmdlIAorCSAgICAgICAgc3dpdGNoIChjaCAtIDB4MzAwMCkgeworCSAgICAgICAgICAgIGNhc2UgMHg0MTogCisJICAgICAgICAgICAgY2FzZSAweDQzOiAKKwkgICAgICAgICAgICBjYXNlIDB4NDU6IAorCSAgICAgICAgICAgIGNhc2UgMHg0NzogCisJICAgICAgICAgICAgY2FzZSAweDQ5OiAKKwkgICAgICAgICAgICBjYXNlIDB4NjM6IAorCSAgICAgICAgICAgIGNhc2UgMHg4MzogCisJICAgICAgICAgICAgY2FzZSAweDg1OiAKKwkgICAgICAgICAgICBjYXNlIDB4OEU6CisJICAgICAgICAgICAgY2FzZSAweEExOiAKKwkgICAgICAgICAgICBjYXNlIDB4QTM6IAorCSAgICAgICAgICAgIGNhc2UgMHhBNTogCisJICAgICAgICAgICAgY2FzZSAweEE3OiAKKwkgICAgICAgICAgICBjYXNlIDB4QTk6IAorCSAgICAgICAgICAgIGNhc2UgMHhDMzogCisJICAgICAgICAgICAgY2FzZSAweEUzOiAKKwkgICAgICAgICAgICBjYXNlIDB4RTU6IAorCSAgICAgICAgICAgIGNhc2UgMHhFRToKKwkgICAgICAgICAgICAgICAgY2ggKys7CisJICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICBjYXNlIDB4RjU6CisJICAgICAgICAgICAgY2ggPSAweDMwQUI7CisJICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICBjYXNlIDB4RjY6CisJICAgICAgICAgICAgY2ggPSAweDMwQjE7CisJICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICB9CisJICAgIH0KKwkgICAgcmV0dXJuIGNoOworCX0KKwkKKwkvKioKKwkgKiBDb252ZXJ0cyBhIGNoYXIgdG8gdGhlIGxvd2VyY2FzZSBLYW5hCisJICogQHBhcmFtIGNoIGNoYXJhY3RlciB0byBjb252ZXJ0CisJICogQHJldHVybiB0aGUgY29udmVydGVkIEthbmEgY2hhcmFjdGVyCisJICovCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciB0b1NtYWxsS2FuYShjaGFyIGNoKSAKKwl7CisJICAgIGlmICgweDMwNDIgPCBjaCAmJiBjaCA8IDB4MzBlZikgeyAvLyBLYW5hIHJhbmdlCisJICAgICAgICBzd2l0Y2ggKGNoIC0gMHgzMDAwKSB7CisJICAgICAgICAgICAgY2FzZSAweDQyOiAKKwkgICAgICAgICAgICBjYXNlIDB4NDQ6IAorCSAgICAgICAgICAgIGNhc2UgMHg0NjogCisJICAgICAgICAgICAgY2FzZSAweDQ4OiAKKwkgICAgICAgICAgICBjYXNlIDB4NEE6IAorCSAgICAgICAgICAgIGNhc2UgMHg2NDogCisJICAgICAgICAgICAgY2FzZSAweDg0OiAKKwkgICAgICAgICAgICBjYXNlIDB4ODY6IAorCSAgICAgICAgICAgIGNhc2UgMHg4RjoKKwkgICAgICAgICAgICBjYXNlIDB4QTI6IAorCSAgICAgICAgICAgIGNhc2UgMHhBNDogCisJICAgICAgICAgICAgY2FzZSAweEE2OiAKKwkgICAgICAgICAgICBjYXNlIDB4QTg6IAorCSAgICAgICAgICAgIGNhc2UgMHhBQTogCisJICAgICAgICAgICAgY2FzZSAweEM0OiAKKwkgICAgICAgICAgICBjYXNlIDB4RTQ6IAorCSAgICAgICAgICAgIGNhc2UgMHhFNjogCisJICAgICAgICAgICAgY2FzZSAweEVGOgorCSAgICAgICAgICAgICAgICBjaCAtLTsKKwkgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgY2FzZSAweEFCOgorCSAgICAgICAgICAgICAgICBjaCA9IDB4MzBGNTsKKwkgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgY2FzZSAweEIxOgorCSAgICAgICAgICAgICAgICBjaCA9IDB4MzBGNjsKKwkgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICB9CisJICAgIH0KKwkgICAgcmV0dXJuIGNoOworCX0KKworICAgIC8qKgorICAgICAqIFRoaXMgc2hvdWxkIGJlIGNvbm5lY3RlZCB0byBzcGVjaWFsIEphbW8gaGFuZGxpbmcuCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgZ2V0Rmlyc3RDRShjaGFyIGNoKSAKKyAgICB7CisgICAgCW1fdXRpbENvbEVJdGVyXy5zZXRUZXh0KFVDaGFyYWN0ZXIudG9TdHJpbmcoY2gpKTsKKwkgICAgcmV0dXJuIG1fdXRpbENvbEVJdGVyXy5uZXh0KCk7CisJfQorCQorCS8qKiAKKwkgKiBUaGlzIGFkZHMgYSByZWFkIGVsZW1lbnQsIHdoaWxlIHRlc3RpbmcgZm9yIGV4aXN0ZW5jZSAKKwkgKiBAcGFyYW0gdCBidWlsZCB0YWJsZQorCSAqIEBwYXJhbSBlbGVtZW50IAorCSAqIEByZXR1cm4gY2UKKwkgKi8KKyAgICBwcml2YXRlIGludCBhZGRBbkVsZW1lbnQoQnVpbGRUYWJsZSB0LCBFbGVtZW50cyBlbGVtZW50KSAKKyAgICB7CisgIAkJVmVjdG9yIGV4cGFuc2lvbnMgPSB0Lm1fZXhwYW5zaW9uc187CisgICAgICAgIGlmIChlbGVtZW50Lm1fQ0VMZW5ndGhfID09IDEpIHsKKwkgICAgCWlmIChlbGVtZW50Lm1faXNUaGFpXyA9PSBmYWxzZSkgeworCSAgICAgICAgICAgIGVsZW1lbnQubV9tYXBDRV8gPSBlbGVtZW50Lm1fQ0VzX1swXTsKKwkgICAgICAgIH0gCisJICAgICAgICBlbHNlIHsgLy8gYWRkIHRoYWkgLSB0b3RhbGx5IGJhZCBoZXJlCisgICAgICAgICAgICAgICAgLy8gb21pdHRlZCB0aGUgZXhwYW5zaW9uIG9mZnNldCBoZXJlIGZvciB0aGUgYnVpbGRlcgorICAgICAgICAgICAgICAgIC8vIChIRUFERVJfU0laRV8gPj4gMikKKwkgICAgICAgICAgICBpbnQgZXhwYW5zaW9uID0gUnVsZUJhc2VkQ29sbGF0b3IuQ0VfU1BFQ0lBTF9GTEFHXyAKKwkgICAgICAgICAgICAgICAgICAgICAgICB8IChDRV9USEFJX1RBR18gPDwgUnVsZUJhc2VkQ29sbGF0b3IuQ0VfVEFHX1NISUZUXykgCisJICAgICAgICAgICAgICAgICAgICAgICAgfCAoYWRkRXhwYW5zaW9uKGV4cGFuc2lvbnMsIGVsZW1lbnQubV9DRXNfWzBdKQorCSAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IDQpIAorCSAgICAgICAgICAgICAgICAgICAgICAgIHwgMHgxOworCSAgICAgICAgICAgIGVsZW1lbnQubV9tYXBDRV8gPSBleHBhbnNpb247CisJICAgICAgICB9CisJICAgIH0gCisJICAgIGVsc2UgeyAgICAgCisJICAgICAgICAvLyB1bmZvcnR1bmF0ZWx5LCBpdCBsb29rcyBsaWtlIHdlIGhhdmUgdG8gbG9vayBmb3IgYSBsb25nIHByaW1hcnkgCisJICAgICAgICAvLyBoZXJlIHNpbmNlIGluIGNhbm9uaWNhbCBjbG9zdXJlIHdlIGFyZSBnb2luZyB0byBoaXQgc29tZSBsb25nIAorCSAgICAgICAgLy8gcHJpbWFyaWVzIGZyb20gdGhlIGZpcnN0IHBoYXNlLCBhbmQgdGhleSB3aWxsIGNvbWUgYmFjayBhcyAKKwkgICAgICAgIC8vIGNvbnRpbnVhdGlvbnMvZXhwYW5zaW9ucyBkZXN0cm95aW5nIHRoZSBlZmZlY3Qgb2YgdGhlIHByZXZpb3VzIAorCSAgICAgICAgLy8gb3BpdGltaXphdGlvbi4gQSBsb25nIHByaW1hcnkgaXMgYSB0aHJlZSBieXRlIHByaW1hcnkgd2l0aCAKKwkgICAgICAgIC8vIHN0YXJ0aW5nIHNlY29uZGFyaWVzIGFuZCB0ZXJ0aWFyaWVzLiBJdCBjYW4gYXBwZWFyIGluIGxvbmcgcnVucyAKKwkgICAgICAgIC8vIG9mIG9ubHkgcHJpbWFyeSBkaWZmZXJlbmNlcyAobGlrZSBlYXN0IEFzaWFuIHRhaWxvcmluZ3MpIGFsc28sIAorCSAgICAgICAgLy8gaXQgc2hvdWxkIG5vdCBiZSBhbiBleHBhbnNpb24sIGFzIGV4cGFuc2lvbnMgd291bGQgYnJlYWsgd2l0aCAKKwkgICAgICAgIC8vIHRoaXMKKwkgICAgICAgIGlmIChlbGVtZW50Lm1fQ0VMZW5ndGhfID09IDIgLy8gYSB0d28gQ0UgZXhwYW5zaW9uIAorCSAgICAgICAgICAgICYmIFJ1bGVCYXNlZENvbGxhdG9yLmlzQ29udGludWF0aW9uKGVsZW1lbnQubV9DRXNfWzFdKSAKKwkgICAgICAgICAgICAmJiAoZWxlbWVudC5tX0NFc19bMV0gCisJICAgICAgICAgICAgICYgKH4oMHhGRiA8PCAyNCB8IFJ1bGVCYXNlZENvbGxhdG9yLkNFX0NPTlRJTlVBVElPTl9NQVJLRVJfKSkpIAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PSAwIC8vIHRoYXQgaGFzIG9ubHkgcHJpbWFyaWVzIGluIGNvbnRpbnVhdGlvbgorCSAgICAgICAgICAgICYmICgoKGVsZW1lbnQubV9DRXNfWzBdID4+IDgpICYgMHhGRikgCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PSBSdWxlQmFzZWRDb2xsYXRvci5CWVRFX0NPTU1PTl8pIAorCSAgICAgICAgICAgIC8vIGEgY29tbW9uIHNlY29uZGFyeQorCSAgICAgICAgICAgICYmICgoZWxlbWVudC5tX0NFc19bMF0gJiAweEZGKSAKKwkgICAgICAgICAgICAgICAgPT0gUnVsZUJhc2VkQ29sbGF0b3IuQllURV9DT01NT05fKSAvLyBhbmQgYSBjb21tb24gdGVydGlhcnkKKwkgICAgICAgICAgICApIHsKKwkgICAgICAgICAgICBlbGVtZW50Lm1fbWFwQ0VfID0gUnVsZUJhc2VkQ29sbGF0b3IuQ0VfU1BFQ0lBTF9GTEFHXyAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBsb25nIHByaW1hcnkgc3BlY2lhbAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChDRV9MT05HX1BSSU1BUllfVEFHXyA8PCAyNCkgCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZpcnN0IGFuZCBzZWNvbmQgYnl0ZSBvZiBwcmltYXJ5CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKChlbGVtZW50Lm1fQ0VzX1swXSA+PiA4KSAmIDB4RkZGRjAwKSAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcmQgYnl0ZSBvZiBwcmltYXJ5CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKChlbGVtZW50Lm1fQ0VzX1sxXSA+PiAyNCkgJiAweEZGKTsgICAKKwkgICAgICAgIH0gCisJICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBvbWl0dGluZyBleHBhbnNpb24gb2Zmc2V0IGluIGJ1aWxkZXIKKyAgICAgICAgICAgICAgICAvLyAoSEVBREVSX1NJWkVfID4+IDIpCisJICAgICAgICAgICAgaW50IGV4cGFuc2lvbiA9IFJ1bGVCYXNlZENvbGxhdG9yLkNFX1NQRUNJQUxfRkxBR18gCisJICAgICAgICAgICAgICAgICAgICAgICAgfCAoQ0VfRVhQQU5TSU9OX1RBR18gCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBSdWxlQmFzZWRDb2xsYXRvci5DRV9UQUdfU0hJRlRfKSAKKwkgICAgICAgICAgICAgICAgICAgICAgICB8IChhZGRFeHBhbnNpb24oZXhwYW5zaW9ucywgZWxlbWVudC5tX0NFc19bMF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IDQpICYgMHhGRkZGRjA7CisJCisJICAgICAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBlbGVtZW50Lm1fQ0VMZW5ndGhfOyBpICsrKSB7CisJICAgICAgICAgICAgICAgICBhZGRFeHBhbnNpb24oZXhwYW5zaW9ucywgZWxlbWVudC5tX0NFc19baV0pOworCSAgICAgICAgICAgIH0KKwkJCSAgICBpZiAoZWxlbWVudC5tX0NFTGVuZ3RoXyA8PSAweEYpIHsKKwkJCSAgICAgICAgZXhwYW5zaW9uIHw9IGVsZW1lbnQubV9DRUxlbmd0aF87CisJCQkgICAgfSAKKwkJCSAgICBlbHNlIHsKKwkJCSAgICAgICAgYWRkRXhwYW5zaW9uKGV4cGFuc2lvbnMsIDApOworCQkJICAgIH0KKwkJCSAgICBlbGVtZW50Lm1fbWFwQ0VfID0gZXhwYW5zaW9uOworCQkJICAgIHNldE1heEV4cGFuc2lvbihlbGVtZW50Lm1fQ0VzX1tlbGVtZW50Lm1fQ0VMZW5ndGhfIC0gMV0sCisJCQkgICAgICAgICAgICAgICAgICAgIChieXRlKWVsZW1lbnQubV9DRUxlbmd0aF8sIAorCQkJICAgICAgICAgICAgICAgICAgICB0Lm1fbWF4RXhwYW5zaW9uc18pOworCQkJICAgIGlmIChpc0phbW8oZWxlbWVudC5tX2NQb2ludHNfLmNoYXJBdCgwKSkpeworCQkJICAgICAgICB0Lm1fY29sbGF0b3JfLm1faXNKYW1vU3BlY2lhbF8gPSB0cnVlOworCQkJICAgICAgICBzZXRNYXhKYW1vRXhwYW5zaW9uKGVsZW1lbnQubV9jUG9pbnRzXy5jaGFyQXQoMCksCisJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5tX0NFc19bZWxlbWVudC5tX0NFTGVuZ3RoXyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSAxXSwKKwkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnl0ZSllbGVtZW50Lm1fQ0VMZW5ndGhfLAorCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQubV9tYXhKYW1vRXhwYW5zaW9uc18pOworCQkJICAgIH0KKwkJICAgIH0KKwkgICAgfQorCQorCSAgICAvLyBoZXJlIHdlIHdhbnQgdG8gYWRkIHRoZSBwcmVmaXggc3RydWN0dXJlLgorCSAgICAvLyBJIHdpbGwgdHJ5IHRvIHByb2Nlc3MgaXQgYXMgYSByZXZlcnNlIGNvbnRyYWN0aW9uLCBpZiBwb3NzaWJsZS4KKwkgICAgLy8gcHJlZml4IGJ1ZmZlciBpcyBhbHJlYWR5IHJldmVyc2VkLgorCQorCSAgICBpZiAoZWxlbWVudC5tX3ByZWZpeENoYXJzXyAhPSBudWxsICYmCisgICAgICAgICAgICBlbGVtZW50Lm1fcHJlZml4Q2hhcnNfLmxlbmd0aCgpIC0gZWxlbWVudC5tX3ByZWZpeF8gPiAwKSB7CisJCSAgICAvLyBXZSBrZWVwIHRoZSBzZWVuIHByZWZpeCBzdGFydGVyIGVsZW1lbnRzIGluIGEgaGFzaHRhYmxlIHdlIG5lZWQgCisgICAgICAgICAgICAvLyBpdCB0byBiZSBhYmxlIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gdGhlIHNpbXBsZSBjb2RlcG9pbnRzIGFuZCAKKyAgICAgICAgICAgIC8vIHByZWZpeCBzdGFydGVycy4gQWxzbywgd2UgbmVlZCB0byB1c2UgaXQgZm9yIGNhbm9uaWNhbCBjbG9zdXJlLgorCQkgICAgbV91dGlsRWxlbWVudDJfLm1fY2FzZUJpdF8gPSBlbGVtZW50Lm1fY2FzZUJpdF87CisgICAgICAgICAgICBtX3V0aWxFbGVtZW50Ml8ubV9DRUxlbmd0aF8gPSBlbGVtZW50Lm1fQ0VMZW5ndGhfOworICAgICAgICAgICAgbV91dGlsRWxlbWVudDJfLm1fQ0VzXyA9IGVsZW1lbnQubV9DRXNfOworICAgICAgICAgICAgbV91dGlsRWxlbWVudDJfLm1faXNUaGFpXyA9IGVsZW1lbnQubV9pc1RoYWlfOworICAgICAgICAgICAgbV91dGlsRWxlbWVudDJfLm1fbWFwQ0VfID0gZWxlbWVudC5tX21hcENFXzsKKyAgICAgICAgICAgIG1fdXRpbEVsZW1lbnQyXy5tX3ByZWZpeENoYXJzXyA9IGVsZW1lbnQubV9wcmVmaXhDaGFyc187CisgICAgICAgICAgICBtX3V0aWxFbGVtZW50Ml8ubV9zaXplUHJpbV8gPSBlbGVtZW50Lm1fc2l6ZVByaW1fOworICAgICAgICAgICAgbV91dGlsRWxlbWVudDJfLm1fc2l6ZVNlY18gPSBlbGVtZW50Lm1fc2l6ZVNlY187CisgICAgICAgICAgICBtX3V0aWxFbGVtZW50Ml8ubV9zaXplVGVyXyA9IGVsZW1lbnQubV9zaXplVGVyXzsKKyAgICAgICAgICAgIG1fdXRpbEVsZW1lbnQyXy5tX3ZhcmlhYmxlVG9wXyA9IGVsZW1lbnQubV92YXJpYWJsZVRvcF87CisgICAgICAgICAgICBtX3V0aWxFbGVtZW50Ml8ubV9wcmVmaXhfID0gMDsKKyAgICAgICAgICAgIG1fdXRpbEVsZW1lbnQyXy5tX3VjaGFyc18gCisgICAgICAgICAgICAgICAgICAgICAgICAgICA9IE5vcm1hbGl6ZXIuY29tcG9zZShlbGVtZW50Lm1fcHJlZml4Q2hhcnNfLCBmYWxzZSk7CisgICAgICAgICAgICBtX3V0aWxFbGVtZW50Ml8ubV9jUG9pbnRzXyA9IG1fdXRpbEVsZW1lbnQyXy5tX3VjaGFyc187CisgICAgICAgICAgICBtX3V0aWxFbGVtZW50Ml8ubV9jUG9pbnRzT2Zmc2V0XyA9IDA7CisgICAgICAgICAgICAKKwkJICAgIGlmICh0Lm1fcHJlZml4TG9va3VwXyAhPSBudWxsKSB7CisJCSAgICAgICAgRWxlbWVudHMgdUNFID0gKEVsZW1lbnRzKXQubV9wcmVmaXhMb29rdXBfLmdldChlbGVtZW50KTsKKwkJICAgICAgICBpZiAodUNFICE9IG51bGwpIHsgCisgICAgICAgICAgICAgICAgICAgIC8vIHRoZXJlIGlzIGFscmVhZHkgYSBzZXQgb2YgY29kZSBwb2ludHMgaGVyZQorCQkgICAgICAgICAgICBlbGVtZW50Lm1fbWFwQ0VfID0gYWRkUHJlZml4KHQsIHVDRS5tX21hcENFXywgZWxlbWVudCk7CisJCSAgICAgICAgfSAKKyAgICAgICAgICAgICAgICBlbHNlIHsgLy8gbm8gY29kZSBwb2ludHMsIHNvIHRoaXMgc3BvdCBpcyBjbGVhbgorCQkgICAgICAgICAgICBlbGVtZW50Lm1fbWFwQ0VfID0gYWRkUHJlZml4KHQsIENFX05PVF9GT1VORF8sIGVsZW1lbnQpOworCQkgICAgICAgICAgICB1Q0UgPSBuZXcgRWxlbWVudHMoZWxlbWVudCk7CisJCSAgICAgICAgICAgIHVDRS5tX2NQb2ludHNfID0gdUNFLm1fdWNoYXJzXzsKKwkJICAgICAgICAgICAgdC5tX3ByZWZpeExvb2t1cF8ucHV0KHVDRSwgdUNFKTsKKwkJICAgICAgICB9CisJCSAgICAgICAgaWYgKG1fdXRpbEVsZW1lbnQyXy5tX3ByZWZpeENoYXJzXy5sZW5ndGgoKSAKKyAgICAgICAgICAgICAgICAgICAgICAgICE9IGVsZW1lbnQubV9wcmVmaXhDaGFyc18ubGVuZ3RoKCkgLSBlbGVtZW50Lm1fcHJlZml4XworICAgICAgICAgICAgICAgICAgICB8fCAhbV91dGlsRWxlbWVudDJfLm1fcHJlZml4Q2hhcnNfLnJlZ2lvbk1hdGNoZXMoMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQubV9wcmVmaXhDaGFyc18sIGVsZW1lbnQubV9wcmVmaXhfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91dGlsRWxlbWVudDJfLm1fcHJlZml4Q2hhcnNfLmxlbmd0aCgpKSkgeworCQkgICAgICAgICAgICAvLyBkbyBpdCEKKyAgICAgICAgICAgICAgICAgICAgbV91dGlsRWxlbWVudDJfLm1fbWFwQ0VfID0gYWRkUHJlZml4KHQsIGVsZW1lbnQubV9tYXBDRV8sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91dGlsRWxlbWVudDJfKTsKKwkJICAgICAgICB9CisJCSAgICB9CisJICAgIH0KKwkKKwkgICAgLy8gV2UgbmVlZCB0byB1c2UgdGhlIGNhbm9uaWNhbCBpdGVyYXRvciBoZXJlCisJICAgIC8vIHRoZSB3YXkgd2UgZG8gaXQgaXMgdG8gZ2VuZXJhdGUgdGhlIGNhbm9uaWNhbGx5IGVxdWl2YWxlbnQgc3RyaW5ncyAKKwkgICAgLy8gZm9yIHRoZSBjb250cmFjdGlvbiBhbmQgdGhlbiBhZGQgdGhlIHNlcXVlbmNlcyB0aGF0IHBhc3MgRkNEIGNoZWNrCisJICAgIGlmIChlbGVtZW50Lm1fY1BvaW50c18ubGVuZ3RoKCkgLSBlbGVtZW50Lm1fY1BvaW50c09mZnNldF8gPiAxIAorCSAgICAgICAgJiYgIShlbGVtZW50Lm1fY1BvaW50c18ubGVuZ3RoKCkgLSBlbGVtZW50Lm1fY1BvaW50c09mZnNldF8gPT0gMiAKKyAgICAgICAgICAgICYmIFVURjE2LmlzTGVhZFN1cnJvZ2F0ZShlbGVtZW50Lm1fY1BvaW50c18uY2hhckF0KDApKSAKKyAgICAgICAgICAgICYmIFVURjE2LmlzVHJhaWxTdXJyb2dhdGUoZWxlbWVudC5tX2NQb2ludHNfLmNoYXJBdCgxKSkpKSB7IAorICAgICAgICAgICAgLy8gdGhpcyBpcyBhIGNvbnRyYWN0aW9uLCB3ZSBzaG91bGQgY2hlY2sgd2hldGhlciBhIGNvbXBvc2VkIGZvcm0gCisgICAgICAgICAgICAvLyBzaG91bGQgYWxzbyBiZSBpbmNsdWRlZAorCSAgICAgICAgbV91dGlsQ2FuSXRlcl8uc2V0U291cmNlKGVsZW1lbnQubV9jUG9pbnRzXyk7CisJCSAgICBTdHJpbmcgc291cmNlID0gbV91dGlsQ2FuSXRlcl8ubmV4dCgpOworCQkgICAgd2hpbGUgKHNvdXJjZSAhPSBudWxsICYmIHNvdXJjZS5sZW5ndGgoKSA+IDApIHsKKwkJICAgICAgICBpZiAoTm9ybWFsaXplci5xdWlja0NoZWNrKHNvdXJjZSwgTm9ybWFsaXplci5GQ0QpIAorICAgICAgICAgICAgICAgICAgICAhPSBOb3JtYWxpemVyLk5PKSB7CisJCSAgICAgICAgICAgIGVsZW1lbnQubV91Y2hhcnNfID0gc291cmNlOworCQkgICAgICAgICAgICBlbGVtZW50Lm1fY1BvaW50c18gPSBlbGVtZW50Lm1fdWNoYXJzXzsKKwkJICAgICAgICAgICAgZmluYWxpemVBZGRpdGlvbih0LCBlbGVtZW50KTsKKwkJICAgICAgICB9CisJCSAgICAgICAgc291cmNlID0gbV91dGlsQ2FuSXRlcl8ubmV4dCgpOworCQkgICAgfQorCQkKKwkJICAgIHJldHVybiBlbGVtZW50Lm1fbWFwQ0VfOworCQl9IAorICAgICAgICBlbHNlIHsKKwkJICAgIHJldHVybiBmaW5hbGl6ZUFkZGl0aW9uKHQsIGVsZW1lbnQpOyAgCisJCX0KKwl9CisgICAgCisgICAgLyoqCisgICAgICogQWRkcyBhbiBleHBhbnNpb24gY2UgdG8gdGhlIGV4cGFuc2lvbiB2ZWN0b3IKKyAgICAgKiBAcGFyYW0gZXhwYW5zaW9ucyB2ZWN0b3IgdG8gYWRkIHRvCisgICAgICogQHBhcmFtIHZhbHVlIG9mIHRoZSBleHBhbnNpb24KKyAgICAgKiBAcmV0dXJuIHRoZSBjdXJyZW50IHBvc2l0aW9uIG9mIHRoZSBuZXcgZWxlbWVudAorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBhZGRFeHBhbnNpb24oVmVjdG9yIGV4cGFuc2lvbnMsIGludCB2YWx1ZSkgCisgICAgeworCSAgICBleHBhbnNpb25zLmFkZChuZXcgSW50ZWdlcih2YWx1ZSkpOworCSAgICByZXR1cm4gZXhwYW5zaW9ucy5zaXplKCkgLSAxOworCX0KKwkKKwkvKioKKyAJICogTG9va3MgZm9yIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhbGwgZXhwYW5zaW9uIHNlcXVlbmNlcyBlbmRpbmcgd2l0aCB0aGUgCisgCSAqIHNhbWUgY29sbGF0aW9uIGVsZW1lbnQuIFRoZSBzaXplIHJlcXVpcmVkIGZvciBtYXhleHBhbnNpb24gYW5kIG1heHNpemUgCisgCSAqIGlzIHJldHVybmVkIGlmIHRoZSBhcnJheXMgYXJlIHRvbyBzbWFsbC4KKwkgKiBAcGFyYW0gZW5kZXhwYW5zaW9uIHRoZSBsYXN0IGV4cGFuc2lvbiBjb2xsYXRpb24gZWxlbWVudCB0byBiZSBhZGRlZAorCSAqIEBwYXJhbSBleHBhbnNpb25zaXplIHNpemUgb2YgdGhlIGV4cGFuc2lvbgorCSAqIEBwYXJhbSBtYXhleHBhbnNpb24gZGF0YSBzdHJ1Y3R1cmUgdG8gc3RvcmUgdGhlIG1heGltdW0gZXhwYW5zaW9uIGRhdGEuCisJICogQHJldHVybnMgc2l6ZSBvZiB0aGUgbWF4ZXhwYW5zaW9uIGFuZCBtYXhzaXplIHVzZWQuCisJICovCisJcHJpdmF0ZSBzdGF0aWMgaW50IHNldE1heEV4cGFuc2lvbihpbnQgZW5kZXhwYW5zaW9uLCBieXRlIGV4cGFuc2lvbnNpemUsCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXhFeHBhbnNpb25UYWJsZSBtYXhleHBhbnNpb24pCisJeworCSAgICBpbnQgc3RhcnQgPSAwOworCSAgICBpbnQgbGltaXQgPSBtYXhleHBhbnNpb24ubV9lbmRFeHBhbnNpb25DRV8uc2l6ZSgpOworICAgICAgICBsb25nIHVuc2lnbmVkID0gKGxvbmcpZW5kZXhwYW5zaW9uOworICAgICAgICB1bnNpZ25lZCAmPSAweEZGRkZGRkZGbDsKKwkKKwkgICAgLy8gdXNpbmcgYmluYXJ5IHNlYXJjaCB0byBkZXRlcm1pbmUgaWYgbGFzdCBleHBhbnNpb24gZWxlbWVudCBpcyAKKwkgICAgLy8gYWxyZWFkeSBpbiB0aGUgYXJyYXkgCisJICAgIGludCByZXN1bHQgPSAtMTsKKwkgICAgd2hpbGUgKHN0YXJ0IDwgbGltaXQgLSAxKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJICAgICAgICBpbnQgbWlkID0gc3RhcnQgKyAoKGxpbWl0IC0gc3RhcnQpID4+IDEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgbG9uZyB1bnNpZ25lZGNlID0gKChJbnRlZ2VyKW1heGV4cGFuc2lvbi5tX2VuZEV4cGFuc2lvbkNFXy5nZXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWQpKS5pbnRWYWx1ZSgpOyAKKyAgICAgICAgICAgIHVuc2lnbmVkY2UgJj0gMHhGRkZGRkZGRmw7CisJICAgICAgICBpZiAodW5zaWduZWQgPD0gdW5zaWduZWRjZSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgIGxpbWl0ID0gbWlkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCSAgICBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCSAgICAgIHN0YXJ0ID0gbWlkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJICAgIH0gCisJICAgICAgCisJICAgIGlmICgoKEludGVnZXIpbWF4ZXhwYW5zaW9uLm1fZW5kRXhwYW5zaW9uQ0VfLmdldChzdGFydCkpLmludFZhbHVlKCkgCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT0gZW5kZXhwYW5zaW9uKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkgICAgICAgIHJlc3VsdCA9IHN0YXJ0OyAgCisJICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCSAgICBlbHNlIGlmICgoKEludGVnZXIpbWF4ZXhwYW5zaW9uLm1fZW5kRXhwYW5zaW9uQ0VfLmdldChsaW1pdCkpLmludFZhbHVlKCkgCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT0gZW5kZXhwYW5zaW9uKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkgICAgICAgICAgICByZXN1bHQgPSBsaW1pdDsgICAgICAKKwkgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJICAgIGlmIChyZXN1bHQgPiAtMSkgeworCSAgICAgICAgLy8gZm91bmQgdGhlIGNlIGluIGV4cGFuc2lvbiwgd2UnbGwganVzdCBtb2RpZnkgdGhlIHNpemUgaWYgaXQgCisJICAgICAgICAvLyBpcyBzbWFsbGVyCisJICAgICAgICBPYmplY3QgY3VycmVudHNpemUgPSBtYXhleHBhbnNpb24ubV9leHBhbnNpb25DRVNpemVfLmdldChyZXN1bHQpOworCQkgICAgaWYgKCgoQnl0ZSljdXJyZW50c2l6ZSkuYnl0ZVZhbHVlKCkgPCBleHBhbnNpb25zaXplKSB7CisJCSAgICAgICAgbWF4ZXhwYW5zaW9uLm1fZXhwYW5zaW9uQ0VTaXplXy5zZXQocmVzdWx0LCAKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEJ5dGUoZXhwYW5zaW9uc2l6ZSkpOworCQkgICAgfQorCSAgICB9CisJICAgIGVsc2UgeworCQkgICAgLy8gd2UnbGwgbmVlZCB0byBzcXVlZXplIHRoZSB2YWx1ZSBpbnRvIHRoZSBhcnJheS4gaW5pdGlhbCAKKwkJICAgIC8vIGltcGxlbWVudGF0aW9uLiBzaGlmdGluZyB0aGUgc3ViYXJyYXkgZG93biBieSAxCisJCSAgICBtYXhleHBhbnNpb24ubV9lbmRFeHBhbnNpb25DRV8uaW5zZXJ0RWxlbWVudEF0KAorCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEludGVnZXIoZW5kZXhwYW5zaW9uKSwKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ICsgMSk7CisJCSAgICBtYXhleHBhbnNpb24ubV9leHBhbnNpb25DRVNpemVfLmluc2VydEVsZW1lbnRBdCgKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBCeXRlKGV4cGFuc2lvbnNpemUpLAorCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgKyAxKTsKKwkgICAgfQorCSAgICByZXR1cm4gbWF4ZXhwYW5zaW9uLm1fZW5kRXhwYW5zaW9uQ0VfLnNpemUoKTsKKwl9CisJCisJLyoqCisgCSAqIFNldHMgdGhlIG1heGltdW0gbGVuZ3RoIG9mIGFsbCBqYW1vIGV4cGFuc2lvbiBzZXF1ZW5jZXMgZW5kaW5nIHdpdGggdGhlIAorIAkgKiBzYW1lIGNvbGxhdGlvbiBlbGVtZW50LiBUaGUgc2l6ZSByZXF1aXJlZCBmb3IgbWF4ZXhwYW5zaW9uIGFuZCBtYXhzaXplIAorIAkgKiBpcyByZXR1cm5lZCBpZiB0aGUgYXJyYXlzIGFyZSB0b28gc21hbGwuCisJICogQHBhcmFtIGNoIHRoZSBqYW1vIGNvZGVwb2ludAorCSAqIEBwYXJhbSBlbmRleHBhbnNpb24gdGhlIGxhc3QgZXhwYW5zaW9uIGNvbGxhdGlvbiBlbGVtZW50IHRvIGJlIGFkZGVkCisJICogQHBhcmFtIGV4cGFuc2lvbnNpemUgc2l6ZSBvZiB0aGUgZXhwYW5zaW9uCisJICogQHBhcmFtIG1heGV4cGFuc2lvbiBkYXRhIHN0cnVjdHVyZSB0byBzdG9yZSB0aGUgbWF4aW11bSBleHBhbnNpb24gZGF0YS4KKwkgKiBAcmV0dXJucyBzaXplIG9mIHRoZSBtYXhleHBhbnNpb24gYW5kIG1heHNpemUgdXNlZC4KKwkgKi8KKwlwcml2YXRlIHN0YXRpYyBpbnQgc2V0TWF4SmFtb0V4cGFuc2lvbihjaGFyIGNoLCBpbnQgZW5kZXhwYW5zaW9uLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGUgZXhwYW5zaW9uc2l6ZSwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXhKYW1vRXhwYW5zaW9uVGFibGUgbWF4ZXhwYW5zaW9uKQorCXsKKwkgICAgYm9vbGVhbiBpc1YgPSB0cnVlOworCSAgICBpZiAoY2ggPj0gMHgxMTAwICYmIGNoIDw9IDB4MTExMikgeworCSAgICAgICAgLy8gZGV0ZXJtaW5lcyBMIGZvciBKYW1vLCBkb2Vzbid0IG5lZWQgdG8gc3RvcmUgdGhpcyBzaW5jZSBpdCBpcyAKKwkgICAgICAgIC8vIG5ldmVyIGF0IHRoZSBlbmQgb2YgYSBleHBhbnNpb24KKwkgICAgICAgIGlmIChtYXhleHBhbnNpb24ubV9tYXhMU2l6ZV8gPCBleHBhbnNpb25zaXplKSB7CisJICAgICAgICAgICAgbWF4ZXhwYW5zaW9uLm1fbWF4TFNpemVfID0gZXhwYW5zaW9uc2l6ZTsKKwkgICAgICAgIH0KKwkgICAgICAgIHJldHVybiBtYXhleHBhbnNpb24ubV9lbmRFeHBhbnNpb25DRV8uc2l6ZSgpOworCSAgICB9CisJCisJICAgIGlmIChjaCA+PSAweDExNjEgJiYgY2ggPD0gMHgxMTc1KSB7CisJICAgICAgICAvLyBkZXRlcm1pbmVzIFYgZm9yIEphbW8KKwkgICAgICAgIGlmIChtYXhleHBhbnNpb24ubV9tYXhWU2l6ZV8gPCBleHBhbnNpb25zaXplKSB7CisJICAgICAgICAgICAgbWF4ZXhwYW5zaW9uLm1fbWF4VlNpemVfID0gZXhwYW5zaW9uc2l6ZTsKKwkgICAgICAgIH0KKwkgICAgfQorCQorCSAgICBpZiAoY2ggPj0gMHgxMUE4ICYmIGNoIDw9IDB4MTFDMikgeworCSAgICAgICAgaXNWID0gZmFsc2U7CisJICAgICAgICAvLyBkZXRlcm1pbmVzIFQgZm9yIEphbW8KKwkgICAgICAgIGlmIChtYXhleHBhbnNpb24ubV9tYXhUU2l6ZV8gPCBleHBhbnNpb25zaXplKSB7CisJICAgICAgICAgICAgbWF4ZXhwYW5zaW9uLm1fbWF4VFNpemVfID0gZXhwYW5zaW9uc2l6ZTsKKwkgICAgICAgIH0KKwkgICAgfQorCisgICAgICAgIGludCBwb3MgPSBtYXhleHBhbnNpb24ubV9lbmRFeHBhbnNpb25DRV8uc2l6ZSgpOwkKKwkJd2hpbGUgKHBvcyA+IDApIHsKKwkJICAgIHBvcyAtLTsKKwkJICAgIGlmICgoKEludGVnZXIpbWF4ZXhwYW5zaW9uLm1fZW5kRXhwYW5zaW9uQ0VfLmdldChwb3MpKS5pbnRWYWx1ZSgpIAorCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT0gZW5kZXhwYW5zaW9uKSB7CisJCSAgICAgICAgcmV0dXJuIG1heGV4cGFuc2lvbi5tX2VuZEV4cGFuc2lvbkNFXy5zaXplKCk7CisJCSAgICB9CisJCX0KKwkJbWF4ZXhwYW5zaW9uLm1fZW5kRXhwYW5zaW9uQ0VfLmFkZChuZXcgSW50ZWdlcihlbmRleHBhbnNpb24pKTsKKwkJbWF4ZXhwYW5zaW9uLm1faXNWXy5hZGQobmV3IEJvb2xlYW4oaXNWKSk7CisJCSAgCisJCXJldHVybiBtYXhleHBhbnNpb24ubV9lbmRFeHBhbnNpb25DRV8uc2l6ZSgpOworCX0KKwkKKwkvKioKKwkgKiBBZGRzIGEgcHJlZml4IHRvIHRoZSB0YWJsZQorCSAqIEBwYXJhbSB0IGJ1aWxkIHRhYmxlIHRvIHVwZGF0ZQorCSAqIEBwYXJhbSBDRSBjb2xsYXRpb24gZWxlbWVudCB0byBhZGQKKwkgKiBAcGFyYW0gZWxlbWVudCBydWxlIGVsZW1lbnQgdG8gYWRkCisJICogQHJldHVybiBtb2RpZmllZCBjZQorCSAqLworCXByaXZhdGUgaW50IGFkZFByZWZpeChCdWlsZFRhYmxlIHQsIGludCBDRSwgRWxlbWVudHMgZWxlbWVudCkgCisJeworCSAgICAvLyBjdXJyZW50bHkgdGhlIGxvbmdlc3QgcHJlZml4IHdlJ3JlIHN1cHBvcnRpbmcgaW4gSmFwYW5lc2UgaXMgdHdvIAorCSAgICAvLyBjaGFyYWN0ZXJzIGxvbmcuIEFsdGhvdWdoIHRoaXMgdGFibGUgY291bGQgcXVpdGUgZWFzaWx5IG1pbWljIAorCSAgICAvLyBjb21wbGV0ZSBjb250cmFjdGlvbiBzdHVmZiB0aGVyZSBpcyBubyBnb29kIHJlYXNvbiB0byBtYWtlIGEgZ2VuZXJhbCAKKwkgICAgLy8gc29sdXRpb24sIGFzIGl0IHdvdWxkIHJlcXVpcmUgc29tZSBlcnJvciBwcm9uZSBtZXNzaW5nLgorCSAgICBDb250cmFjdGlvblRhYmxlIGNvbnRyYWN0aW9ucyA9IHQubV9jb250cmFjdGlvbnNfOworCSAgICBTdHJpbmcgb2xkQ1AgPSBlbGVtZW50Lm1fY1BvaW50c187CisJICAgIGludCBvbGRDUE9mZnNldCA9IGVsZW1lbnQubV9jUG9pbnRzT2Zmc2V0XzsKKwkgICAgCisJICAgIGNvbnRyYWN0aW9ucy5tX2N1cnJlbnRUYWdfID0gQ0VfU1BFQ19QUk9DX1RBR187CisJICAgIC8vIGhlcmUsIHdlIHdpbGwgbm9ybWFsaXplICYgYWRkIHByZWZpeCB0byB0aGUgdGFibGUuCisJICAgIGludCBzaXplID0gZWxlbWVudC5tX3ByZWZpeENoYXJzXy5sZW5ndGgoKSAtIGVsZW1lbnQubV9wcmVmaXhfOworCSAgICBmb3IgKGludCBqID0gMTsgaiA8IHNpemU7IGogKyspIHsgICAKKwkgICAgICAgIC8vIEZpcnN0IGFkZCBORkQgcHJlZml4IGNoYXJzIHRvIHVuc2FmZSBDUCBoYXNoIHRhYmxlIAorCSAgICAgICAgLy8gVW5sZXNzIGl0IGlzIGEgdHJhaWwgc3Vycm9nYXRlLCB3aGljaCBpcyBoYW5kbGVkIGFsZ29yaXRtaWNhbGx5IAorCSAgICAgICAgLy8gYW5kIHNob3VsZG4ndCB0YWtlIHVwIHNwYWNlIGluIHRoZSB0YWJsZS4KKwkgICAgICAgIGNoYXIgY2ggPSBlbGVtZW50Lm1fcHJlZml4Q2hhcnNfLmNoYXJBdChqICsgZWxlbWVudC5tX3ByZWZpeF8pOworCSAgICAgICAgaWYgKCFVVEYxNi5pc1RyYWlsU3Vycm9nYXRlKGNoKSkgeworCSAgICAgICAgICAgIHVuc2FmZUNQU2V0KHQubV91bnNhZmVDUF8sIGNoKTsKKwkgICAgICAgIH0KKwkgICAgfQorCSAgICAKKwkgICAgLy8gU3RyaW5nQnVmZmVyIHJldmVyc2VkID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBtX3V0aWxTdHJpbmdCdWZmZXJfLmRlbGV0ZSgwLCBtX3V0aWxTdHJpbmdCdWZmZXJfLmxlbmd0aCgpKTsKKwkgICAgZm9yIChpbnQgaiA9IDA7IGogPCBzaXplOyBqICsrKSB7IAorCSAgICAJLy8gcHJlZml4ZXMgYXJlIGdvaW5nIHRvIGJlIGxvb2tlZCB1cCBiYWNrd2FyZHMKKwkgICAgICAgIC8vIHRoZXJlZm9yZSwgd2Ugd2lsbCBwcm9tcHRseSByZXZlcnNlIHRoZSBwcmVmaXggYnVmZmVyLi4uCisJICAgICAgICBpbnQgb2Zmc2V0ID0gZWxlbWVudC5tX3ByZWZpeENoYXJzXy5sZW5ndGgoKSAtIGogLSAxOworCSAgICAgICAgbV91dGlsU3RyaW5nQnVmZmVyXy5hcHBlbmQoZWxlbWVudC5tX3ByZWZpeENoYXJzXy5jaGFyQXQob2Zmc2V0KSk7CisJICAgIH0KKwkgICAgZWxlbWVudC5tX3ByZWZpeENoYXJzXyA9IG1fdXRpbFN0cmluZ0J1ZmZlcl8udG9TdHJpbmcoKTsKKwkgICAgZWxlbWVudC5tX3ByZWZpeF8gPSAwOworCQorCSAgICAvLyB0aGUgZmlyc3QgY29kZXBvaW50IGlzIGFsc28gdW5zYWZlLCBhcyBpdCBmb3JtcyBhICdjb250cmFjdGlvbicgd2l0aCAKKwkgICAgLy8gdGhlIHByZWZpeAorCSAgICBpZiAoIVVURjE2LmlzVHJhaWxTdXJyb2dhdGUoZWxlbWVudC5tX2NQb2ludHNfLmNoYXJBdCgwKSkpIHsKKwkgICAgICAgIHVuc2FmZUNQU2V0KHQubV91bnNhZmVDUF8sIGVsZW1lbnQubV9jUG9pbnRzXy5jaGFyQXQoMCkpOworCSAgICB9CisJCQorCSAgICBlbGVtZW50Lm1fY1BvaW50c18gPSBlbGVtZW50Lm1fcHJlZml4Q2hhcnNfOworCSAgICBlbGVtZW50Lm1fY1BvaW50c09mZnNldF8gPSBlbGVtZW50Lm1fcHJlZml4XzsKKwkKKwkgICAgLy8gQWRkIHRoZSBsYXN0IGNoYXIgb2YgdGhlIGNvbnRyYWN0aW9uIHRvIHRoZSBjb250cmFjdGlvbi1lbmQgaGFzaCAKKwkgICAgLy8gdGFibGUuIHVubGVzcyBpdCBpcyBhIHRyYWlsIHN1cnJvZ2F0ZSwgd2hpY2ggaXMgaGFuZGxlZCAKKwkgICAgLy8gYWxnb3JpdGhtaWNhbGx5IGFuZCBzaG91bGRuJ3QgYmUgaW4gdGhlIHRhYmxlCisJICAgIGlmICghVVRGMTYuaXNUcmFpbFN1cnJvZ2F0ZSgKKwkgICAgICAgICAgICBlbGVtZW50Lm1fY1BvaW50c18uY2hhckF0KGVsZW1lbnQubV9jUG9pbnRzXy5sZW5ndGgoKSAtIDEpKSkgeworCSAgICAgICAgQ29udHJFbmRDUFNldCh0Lm1fY29udHJFbmRDUF8sIGVsZW1lbnQubV9jUG9pbnRzXy5jaGFyQXQoCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50Lm1fY1BvaW50c18ubGVuZ3RoKCkgLSAxKSk7CisJICAgIH0KKwkgICAgLy8gRmlyc3Qgd2UgbmVlZCB0byBjaGVjayBpZiBjb250cmFjdGlvbnMgc3RhcnRzIHdpdGggYSBzdXJyb2dhdGUKKwkgICAgLy8gaW50IGNwID0gVVRGMTYuY2hhckF0KGVsZW1lbnQubV9jUG9pbnRzXywgZWxlbWVudC5tX2NQb2ludHNPZmZzZXRfKTsKKwkKKwkgICAgLy8gSWYgdGhlcmUgYXJlIGFueSBKYW1vcyBpbiB0aGUgY29udHJhY3Rpb24sIHdlIHNob3VsZCB0dXJuIG9uIHNwZWNpYWwgCisJICAgIC8vIHByb2Nlc3NpbmcgZm9yIEphbW9zCisJICAgIGlmIChpc0phbW8oZWxlbWVudC5tX3ByZWZpeENoYXJzXy5jaGFyQXQoZWxlbWVudC5tX3ByZWZpeF8pKSkgeworCSAgICAgICAgdC5tX2NvbGxhdG9yXy5tX2lzSmFtb1NwZWNpYWxfID0gdHJ1ZTsKKwkgICAgfQorCSAgICAvLyB0aGVuIHdlIG5lZWQgdG8gZGVhbCB3aXRoIGl0IAorCSAgICAvLyB3ZSBjb3VsZCBhcmVhZHkgaGF2ZSBzb21ldGhpbmcgaW4gdGFibGUgLSBvciB3ZSBtaWdodCBub3QgCisJICAgIGlmICghaXNQcmVmaXgoQ0UpKSB7IAorCSAgICAgICAgLy8gaWYgaXQgd2Fzbid0IGNvbnRyYWN0aW9uLCB3ZSB3b3VsZG4ndCBlbmQgdXAgaGVyZQorCSAgICAgICAgaW50IGZpcnN0Q29udHJhY3Rpb25PZmZzZXQgPSBhZGRDb250cmFjdGlvbihjb250cmFjdGlvbnMsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlRSQUNUSU9OX1RBQkxFX05FV19FTEVNRU5UXywgCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyKTAsIENFKTsKKwkgICAgICAgIGludCBuZXdDRSA9IHByb2Nlc3NDb250cmFjdGlvbihjb250cmFjdGlvbnMsIGVsZW1lbnQsIAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENFX05PVF9GT1VORF8pOworCSAgICAgICAgYWRkQ29udHJhY3Rpb24oY29udHJhY3Rpb25zLCBmaXJzdENvbnRyYWN0aW9uT2Zmc2V0LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQubV9wcmVmaXhDaGFyc18uY2hhckF0KGVsZW1lbnQubV9wcmVmaXhfKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdDRSk7CisJICAgICAgICBhZGRDb250cmFjdGlvbihjb250cmFjdGlvbnMsIGZpcnN0Q29udHJhY3Rpb25PZmZzZXQsIChjaGFyKTB4RkZGRiwgCisgICAgCSAgICAgICAgICAgICAgICAgICBDRSk7CisJICAgICAgICBDRSA9IGNvbnN0cnVjdFNwZWNpYWxDRShDRV9TUEVDX1BST0NfVEFHXywgZmlyc3RDb250cmFjdGlvbk9mZnNldCk7CisJICAgIH0gCisJICAgIGVsc2UgeyAKKwkgICAgICAgIC8vIHdlIGFyZSBhZGRpbmcgdG8gZXhpc3RpbmcgY29udHJhY3Rpb24gCisJICAgICAgICAvLyB0aGVyZSB3ZXJlIGFscmVhZHkgc29tZSBlbGVtZW50cyBpbiB0aGUgdGFibGUsIHNvIHdlIG5lZWQgdG8gYWRkIAorCSAgICAgICAgLy8gYSBuZXcgY29udHJhY3Rpb24gCisJICAgICAgICAvLyBUd28gdGhpbmdzIGNhbiBoYXBwZW4gaGVyZTogZWl0aGVyIHRoZSBjb2RlcG9pbnQgaXMgYWxyZWFkeSBpbiAKKwkgICAgICAgIC8vIHRoZSB0YWJsZSwgb3IgaXQgaXMgbm90CisJICAgICAgICBjaGFyIGNoID0gZWxlbWVudC5tX3ByZWZpeENoYXJzXy5jaGFyQXQoZWxlbWVudC5tX3ByZWZpeF8pOworCSAgICAgICAgaW50IHBvc2l0aW9uID0gZmluZENQKGNvbnRyYWN0aW9ucywgQ0UsIGNoKTsKKwkgICAgICAgIGlmIChwb3NpdGlvbiA+IDApIHsgICAgICAgCisJICAgICAgICAgICAgLy8gaWYgaXQgaXMgd2UganVzdCBjb250aW51ZSBkb3duIHRoZSBjaGFpbiAKKwkgICAgICAgICAgICBpbnQgZUNFID0gZ2V0Q0UoY29udHJhY3Rpb25zLCBDRSwgcG9zaXRpb24pOworCSAgICAgICAgICAgIGludCBuZXdDRSA9IHByb2Nlc3NDb250cmFjdGlvbihjb250cmFjdGlvbnMsIGVsZW1lbnQsIGVDRSk7CisJICAgICAgICAgICAgc2V0Q29udHJhY3Rpb24oY29udHJhY3Rpb25zLCBDRSwgcG9zaXRpb24sIGNoLCBuZXdDRSk7CisJICAgICAgICB9IAorCSAgICAgICAgZWxzZSB7ICAgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgLy8gaWYgaXQgaXNuJ3QsIHdlIHdpbGwgaGF2ZSB0byBjcmVhdGUgYSBuZXcgc2VxdWVuY2UgCisJICAgICAgICAgICAgcHJvY2Vzc0NvbnRyYWN0aW9uKGNvbnRyYWN0aW9ucywgZWxlbWVudCwgQ0VfTk9UX0ZPVU5EXyk7CisJICAgICAgICAgICAgaW5zZXJ0Q29udHJhY3Rpb24oY29udHJhY3Rpb25zLCBDRSwgY2gsIGVsZW1lbnQubV9tYXBDRV8pOworCSAgICAgICAgfQorCSAgICB9CisJCisJICAgIGVsZW1lbnQubV9jUG9pbnRzXyA9IG9sZENQOworCSAgICBlbGVtZW50Lm1fY1BvaW50c09mZnNldF8gPSBvbGRDUE9mZnNldDsKKwkKKwkgICAgcmV0dXJuIENFOworCX0KKwkKKwkvKioKKwkgKiBDaGVja3MgaWYgdGhlIGFyZ3VtZW50IGNlIGlzIGEgY29udHJhY3Rpb24KKwkgKiBAcGFyYW0gQ0UgY29sbGF0aW9uIGVsZW1lbnQKKwkgKiBAcmV0dXJuIHRydWUgaWYgYXJndW1lbnQgY2UgaXMgYSBjb250cmFjdGlvbgorCSAqLworCXByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gaXNDb250cmFjdGlvbihpbnQgQ0UpIAorCXsKKwkJcmV0dXJuIGlzU3BlY2lhbChDRSkgJiYgKGdldENFVGFnKENFKSA9PSBDRV9DT05UUkFDVElPTl9UQUdfKTsKKwl9CisJCisJLyoqCisJICogQ2hlY2tzIGlmIHRoZSBhcmd1bWVudCBjZSBoYXMgYSBwcmVmaXgKKwkgKiBAcGFyYW0gQ0UgY29sbGF0aW9uIGVsZW1lbnQKKwkgKiBAcmV0dXJuIHRydWUgaWYgYXJndW1lbnQgY2UgaGFzIGEgcHJlZml4CisJICovCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBpc1ByZWZpeChpbnQgQ0UpIAorCXsKKwkJcmV0dXJuIGlzU3BlY2lhbChDRSkgJiYgKGdldENFVGFnKENFKSA9PSBDRV9TUEVDX1BST0NfVEFHXyk7CisJfQorCQorCS8qKgorCSAqIENoZWNrcyBpZiB0aGUgYXJndW1lbnQgY2UgaXMgc3BlY2lhbAorCSAqIEBwYXJhbSBDRSBjb2xsYXRpb24gZWxlbWVudAorCSAqIEByZXR1cm4gdHJ1ZSBpZiBhcmd1bWVudCBjZSBpcyBzcGVjaWFsCisJICovCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBpc1NwZWNpYWwoaW50IENFKSAKKwl7CisJCXJldHVybiAoQ0UgJiBSdWxlQmFzZWRDb2xsYXRvci5DRV9TUEVDSUFMX0ZMQUdfKSA9PSAweEYwMDAwMDAwOworCX0KKwkKKwkvKioKKwkgKiBDaGVja3MgaWYgdGhlIGFyZ3VtZW50IGNlIGhhcyBhIHByZWZpeAorCSAqIEBwYXJhbSBDRSBjb2xsYXRpb24gZWxlbWVudAorCSAqIEByZXR1cm4gdHJ1ZSBpZiBhcmd1bWVudCBjZSBoYXMgYSBwcmVmaXgKKwkgKi8KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgZ2V0Q0VUYWcoaW50IENFKSAKKwl7CisJICAgIHJldHVybiAoQ0UgJiBSdWxlQmFzZWRDb2xsYXRvci5DRV9UQUdfTUFTS18pID4+PiAKKwkgICAgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yLkNFX1RBR19TSElGVF87CisJfQorICAgIAorCS8qKgorCSAqIEdldHMgdGhlIGNlIGF0IHBvc2l0aW9uIGluIGNvbnRyYWN0aW9uIHRhYmxlCisJICogQHBhcmFtIHRhYmxlIGNvbnRyYWN0aW9uIHRhYmxlCisJICogQHBhcmFtIHBvc2l0aW9uIG9mZnNldCB0byB0aGUgY29udHJhY3Rpb24gdGFibGUKKwkgKiBAcmV0dXJuIGNlCisJICovCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IGdldENFKENvbnRyYWN0aW9uVGFibGUgdGFibGUsIGludCBlbGVtZW50LCAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBvc2l0aW9uKSAKKwl7CisJCWVsZW1lbnQgJj0gMHhGRkZGRkY7CisgICAgICAgIEJhc2ljQ29udHJhY3Rpb25UYWJsZSB0YmwgPSBnZXRCYXNpY0NvbnRyYWN0aW9uVGFibGUodGFibGUsIGVsZW1lbnQpOworICAgICAgICAKKyAgICAJaWYgKHRibCA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gQ0VfTk9UX0ZPVU5EXzsKKyAgICAgICAgfQorCQlpZiAocG9zaXRpb24gPiB0YmwubV9DRXNfLnNpemUoKSB8fCBwb3NpdGlvbiA9PSAtMSkgeworCQkgICAgcmV0dXJuIENFX05PVF9GT1VORF87CisJCX0gCisJCWVsc2UgeworCQkgICAgcmV0dXJuICgoSW50ZWdlcil0YmwubV9DRXNfLmdldChwb3NpdGlvbikpLmludFZhbHVlKCk7CisJCX0KKwl9CisJCisJLyoqCisJICogU2V0cyB0aGUgdW5zYWZlIGNoYXJhY3RlcgorCSAqIEBwYXJhbSB0YWJsZSB1bnNhZmUgdGFibGUKKwkgKiBAcGFyYW0gYyBjaGFyYWN0ZXIgdG8gYmUgYWRkZWQKKwkgKi8KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCB2b2lkIHVuc2FmZUNQU2V0KGJ5dGUgdGFibGVbXSwgY2hhciBjKSAKKwl7CisJICAgIGludCBoYXNoID0gYzsKKwkgICAgaWYgKGhhc2ggPj0gKFVOU0FGRUNQX1RBQkxFX1NJWkVfIDw8IDMpKSB7CisJICAgICAgICBpZiAoaGFzaCA+PSAweGQ4MDAgJiYgaGFzaCA8PSAweGY4ZmYpIHsKKwkgICAgICAgICAgICAvLyBQYXJ0IG9mIGEgc3Vycm9nYXRlLCBvciBpbiBwcml2YXRlIHVzZSBhcmVhLiAKKwkgICAgICAgICAgICAvLyBUaGVzZSBkb24ndCBnbyBpbiB0aGUgdGFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgcmV0dXJuOworCSAgICAgICAgfQorCSAgICAgICAgaGFzaCA9IChoYXNoICYgVU5TQUZFQ1BfVEFCTEVfTUFTS18pICsgMjU2OworCSAgICB9CisJICAgIHRhYmxlW2hhc2ggPj4gM10gfD0gKDEgPDwgKGhhc2ggJiA3KSk7CisJfQorCQorCS8qKgorCSAqIFNldHMgdGhlIGNvbnRyYWN0aW9uIGVuZCBjaGFyYWN0ZXIKKwkgKiBAcGFyYW0gdGFibGUgY29udHJhY3Rpb24gZW5kIHRhYmxlCisJICogQHBhcmFtIGMgY2hhcmFjdGVyIHRvIGJlIGFkZGVkCisJICovCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgdm9pZCBDb250ckVuZENQU2V0KGJ5dGUgdGFibGVbXSwgY2hhciBjKSAKKwl7CisJICAgIGludCBoYXNoID0gYzsKKwkgICAgaWYgKGhhc2ggPj0gKFVOU0FGRUNQX1RBQkxFX1NJWkVfIDw8IDMpKSB7CisJICAgICAgICBoYXNoID0gKGhhc2ggJiBVTlNBRkVDUF9UQUJMRV9NQVNLXykgKyAyNTY7CisJICAgIH0KKwkgICAgdGFibGVbaGFzaCA+PiAzXSB8PSAoMSA8PCAoaGFzaCAmIDcpKTsKKwl9CisJCisJLyoqIAorCSAqIEFkZHMgbW9yZSBjb250cmFjdGlvbnMgaW4gdGFibGUuIElmIGVsZW1lbnQgaXMgbm9uIGV4aXN0YW50LCBpdCBjcmVhdGVzIAorCSAqIG9uLiBSZXR1cm5zIGVsZW1lbnQgaGFuZGxlIAorCSAqIEBwYXJhbSB0YWJsZSBjb250cmFjdGlvbiB0YWJsZQorCSAqIEBwYXJhbSBlbGVtZW50IG9mZnNldCB0byB0aGUgY29udHJhY3Rpb24gdGFibGUKKwkgKiBAcGFyYW0gY29kZVBvaW50IGNvZGVwb2ludCB0byBhZGQKKwkgKiBAcGFyYW0gdmFsdWUKKwkgKiBAcmV0dXJuIGNvbGxhdGlvbiBlbGVtZW50CisJICovCisgICAgcHJpdmF0ZSBzdGF0aWMgaW50IGFkZENvbnRyYWN0aW9uKENvbnRyYWN0aW9uVGFibGUgdGFibGUsIGludCBlbGVtZW50LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBjb2RlUG9pbnQsIGludCB2YWx1ZSkgCisgICAgeworCSAgICBCYXNpY0NvbnRyYWN0aW9uVGFibGUgdGJsID0gZ2V0QmFzaWNDb250cmFjdGlvblRhYmxlKHRhYmxlLCBlbGVtZW50KTsKKwkgICAgaWYgKHRibCA9PSBudWxsKSB7CisJICAgICAgICB0YmwgPSBhZGRBQ29udHJhY3Rpb25FbGVtZW50KHRhYmxlKTsKKwkgICAgICAgIGVsZW1lbnQgPSB0YWJsZS5tX2VsZW1lbnRzXy5zaXplKCkgLSAxOworCSAgICB9IAorCQorCSAgICB0YmwubV9DRXNfLmFkZChuZXcgSW50ZWdlcih2YWx1ZSkpOworCSAgICB0YmwubV9jb2RlUG9pbnRzXy5hcHBlbmQoY29kZVBvaW50KTsKKwkgICAgcmV0dXJuIGNvbnN0cnVjdFNwZWNpYWxDRSh0YWJsZS5tX2N1cnJlbnRUYWdfLCBlbGVtZW50KTsKKwl9CisKKyAgICAvKioKKyAgICAgKiBBZGRzIGEgY29udHJhY3Rpb24gZWxlbWVudCB0byB0aGUgdGFibGUKKyAgICAgKiBAcGFyYW0gdGFibGUgY29udHJhY3Rpb24gdGFibGUgdG8gdXBkYXRlCisgICAgICogQHJldHVybiBjb250cmFjdGlvbiAKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBCYXNpY0NvbnRyYWN0aW9uVGFibGUgYWRkQUNvbnRyYWN0aW9uRWxlbWVudCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250cmFjdGlvblRhYmxlIHRhYmxlKSAKKyAgICB7CisJICAgIEJhc2ljQ29udHJhY3Rpb25UYWJsZSByZXN1bHQgPSBuZXcgQmFzaWNDb250cmFjdGlvblRhYmxlKCk7CisJICAgIHRhYmxlLm1fZWxlbWVudHNfLmFkZChyZXN1bHQpOworCSAgICByZXR1cm4gcmVzdWx0OworCX0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSBzcGVjaWFsIGNlCisgICAgICogQHBhcmFtIHRhZyBzcGVjaWFsIHRhZworICAgICAqIEBwYXJhbSBjZSAKKyAgICAgKiBAcmV0dXJuIGEgY29udHJhY3Rpb24gY2UKKyAgICAgKi8KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgY29uc3RydWN0U3BlY2lhbENFKGludCB0YWcsIGludCBDRSkgCisJeworCQlyZXR1cm4gUnVsZUJhc2VkQ29sbGF0b3IuQ0VfU1BFQ0lBTF9GTEFHXyAKKwkJICAgICAgICB8ICh0YWcgPDwgUnVsZUJhc2VkQ29sbGF0b3IuQ0VfVEFHX1NISUZUXykgfCAoQ0UgJiAweEZGRkZGRik7CisJfQorCQorCS8qKgorCSAqIFNldHMgYW5kIGluc2VydHMgdGhlIGVsZW1lbnQgdGhhdCBoYXMgYSBjb250cmFjdGlvbgorCSAqIEBwYXJhbSBjb250cmFjdGlvbiB0YWJsZSAKKwkgKiBAcGFyYW0gZWxlbWVudCBjb250cmFjdGluZyBlbGVtZW50CisJICogQHBhcmFtIGV4aXN0aW5nQ0UKKwkgKiBAcmV0dXJuIGNvbnRyYWN0aW9uIGNlCisJICovCisJcHJpdmF0ZSBzdGF0aWMgaW50IHByb2Nlc3NDb250cmFjdGlvbihDb250cmFjdGlvblRhYmxlIGNvbnRyYWN0aW9ucywgCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbGVtZW50cyBlbGVtZW50LCAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBleGlzdGluZ0NFKSAKKyAgICB7CisJICAgIGludCBmaXJzdENvbnRyYWN0aW9uT2Zmc2V0ID0gMDsKKwkgICAgLy8gZW5kIG9mIHJlY3Vyc2lvbiAKKwkgICAgaWYgKGVsZW1lbnQubV9jUG9pbnRzXy5sZW5ndGgoKSAtIGVsZW1lbnQubV9jUG9pbnRzT2Zmc2V0XyA9PSAxKSB7CisJICAgICAgICBpZiAoaXNDb250cmFjdGlvblRhYmxlRWxlbWVudChleGlzdGluZ0NFKSAKKwkgICAgICAgICAgICAmJiBnZXRDRVRhZyhleGlzdGluZ0NFKSA9PSBjb250cmFjdGlvbnMubV9jdXJyZW50VGFnXykgeworCSAgICAgICAgICAgIGNoYW5nZUNvbnRyYWN0aW9uKGNvbnRyYWN0aW9ucywgZXhpc3RpbmdDRSwgKGNoYXIpMCwgCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5tX21hcENFXyk7CisJICAgICAgICAgICAgY2hhbmdlQ29udHJhY3Rpb24oY29udHJhY3Rpb25zLCBleGlzdGluZ0NFLCAoY2hhcikweEZGRkYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5tX21hcENFXyk7CisJICAgICAgICAgICAgcmV0dXJuIGV4aXN0aW5nQ0U7CisJICAgICAgICB9IAorCSAgICAgICAgZWxzZSB7CisJICAgICAgICAJLy8gY2FuJ3QgZG8ganVzdCB0aGF0LiBleGlzdGluZ0NlIG1pZ2h0IGJlIGEgY29udHJhY3Rpb24sIAorCSAgICAgICAgCS8vIG1lYW5pbmcgdGhhdCB3ZSBuZWVkIHRvIGRvIGFub3RoZXIgc3RlcAorCSAgICAgICAgICAgIHJldHVybiBlbGVtZW50Lm1fbWFwQ0VfOyAKKwkgICAgICAgIH0KKwkgICAgfQorCQorCSAgICAvLyB0aGlzIHJlY3Vyc2lvbiBjdXJyZW50bHkgZmVlZHMgb24gdGhlIG9ubHkgZWxlbWVudCB3ZSBoYXZlLi4uIAorCSAgICAvLyBXZSB3aWxsIGhhdmUgdG8gY29weSBpdCBpbiBvcmRlciB0byBhY2NvbW9kYXRlIGZvciBib3RoIGJhY2t3YXJkIAorCSAgICAvLyBhbmQgZm9yd2FyZCBjeWNsZXMKKwkgICAgLy8gd2UgZW5jb3VudGVyZWQgZWl0aGVyIGFuIGVtcHR5IHNwYWNlIG9yIGEgbm9uLWNvbnRyYWN0aW9uIGVsZW1lbnQgCisJICAgIC8vIHRoaXMgbWVhbnMgd2UgYXJlIGNvbnN0cnVjdGluZyBhIG5ldyBjb250cmFjdGlvbiBzZXF1ZW5jZSAKKwkgICAgZWxlbWVudC5tX2NQb2ludHNPZmZzZXRfICsrOworCSAgICBpZiAoIWlzQ29udHJhY3Rpb25UYWJsZUVsZW1lbnQoZXhpc3RpbmdDRSkpIHsgCisJICAgICAgICAvLyBpZiBpdCB3YXNuJ3QgY29udHJhY3Rpb24sIHdlIHdvdWxkbid0IGVuZCB1cCBoZXJlCisJICAgICAgICBmaXJzdENvbnRyYWN0aW9uT2Zmc2V0ID0gYWRkQ29udHJhY3Rpb24oY29udHJhY3Rpb25zLCAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVFJBQ1RJT05fVEFCTEVfTkVXX0VMRU1FTlRfLCAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIpMCwgZXhpc3RpbmdDRSk7CisJICAgICAgICBpbnQgbmV3Q0UgPSBwcm9jZXNzQ29udHJhY3Rpb24oY29udHJhY3Rpb25zLCBlbGVtZW50LCAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRV9OT1RfRk9VTkRfKTsKKwkgICAgICAgIGFkZENvbnRyYWN0aW9uKGNvbnRyYWN0aW9ucywgZmlyc3RDb250cmFjdGlvbk9mZnNldCwgCisJICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50Lm1fY1BvaW50c18uY2hhckF0KGVsZW1lbnQubV9jUG9pbnRzT2Zmc2V0XyksIAorCSAgICAgICAgICAgICAgICAgICAgICAgbmV3Q0UpOworCSAgICAgICAgYWRkQ29udHJhY3Rpb24oY29udHJhY3Rpb25zLCBmaXJzdENvbnRyYWN0aW9uT2Zmc2V0LCAKKwkgICAgICAgICAgICAgICAgICAgICAgIChjaGFyKTB4RkZGRiwgZXhpc3RpbmdDRSk7CisJICAgICAgICBleGlzdGluZ0NFID0gY29uc3RydWN0U3BlY2lhbENFKGNvbnRyYWN0aW9ucy5tX2N1cnJlbnRUYWdfLCAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RDb250cmFjdGlvbk9mZnNldCk7CisJICAgIH0gCisJICAgIGVsc2UgeyAKKwkgICAgICAgIC8vIHdlIGFyZSBhZGRpbmcgdG8gZXhpc3RpbmcgY29udHJhY3Rpb24KKwkgICAgICAgIC8vIHRoZXJlIHdlcmUgYWxyZWFkeSBzb21lIGVsZW1lbnRzIGluIHRoZSB0YWJsZSwgc28gd2UgbmVlZCB0byBhZGQgCisJICAgICAgICAvLyBhIG5ldyBjb250cmFjdGlvbiAKKwkgICAgICAgIC8vIFR3byB0aGluZ3MgY2FuIGhhcHBlbiBoZXJlOiBlaXRoZXIgdGhlIGNvZGVwb2ludCBpcyBhbHJlYWR5IGluIAorCSAgICAgICAgLy8gdGhlIHRhYmxlLCBvciBpdCBpcyBub3QKKwkgICAgICAgIGludCBwb3NpdGlvbiA9IGZpbmRDUChjb250cmFjdGlvbnMsIGV4aXN0aW5nQ0UsIAorICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50Lm1fY1BvaW50c18uY2hhckF0KGVsZW1lbnQubV9jUG9pbnRzT2Zmc2V0XykpOworCSAgICAgICAgaWYgKHBvc2l0aW9uID4gMCkgeyAgICAgICAKKwkgICAgICAgICAgICAvLyBpZiBpdCBpcyB3ZSBqdXN0IGNvbnRpbnVlIGRvd24gdGhlIGNoYWluIAorCSAgICAgICAgICAgIGludCBlQ0UgPSBnZXRDRShjb250cmFjdGlvbnMsIGV4aXN0aW5nQ0UsIHBvc2l0aW9uKTsKKwkgICAgICAgICAgICBpbnQgbmV3Q0UgPSBwcm9jZXNzQ29udHJhY3Rpb24oY29udHJhY3Rpb25zLCBlbGVtZW50LCBlQ0UpOworCSAgICAgICAgICAgIHNldENvbnRyYWN0aW9uKGNvbnRyYWN0aW9ucywgZXhpc3RpbmdDRSwgcG9zaXRpb24sIAorCSAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5tX2NQb2ludHNfLmNoYXJBdChlbGVtZW50Lm1fY1BvaW50c09mZnNldF8pLCAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdDRSk7CisJICAgICAgICB9IAorCSAgICAgICAgZWxzZSB7ICAKKwkgICAgICAgICAgICAvLyBpZiBpdCBpc24ndCwgd2Ugd2lsbCBoYXZlIHRvIGNyZWF0ZSBhIG5ldyBzZXF1ZW5jZSAKKwkgICAgICAgICAgICBpbnQgbmV3Q0UgPSBwcm9jZXNzQ29udHJhY3Rpb24oY29udHJhY3Rpb25zLCBlbGVtZW50LCAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0VfTk9UX0ZPVU5EXyk7CisJICAgICAgICAgICAgaW5zZXJ0Q29udHJhY3Rpb24oY29udHJhY3Rpb25zLCBleGlzdGluZ0NFLCAKKwkgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQubV9jUG9pbnRzXy5jaGFyQXQoZWxlbWVudC5tX2NQb2ludHNPZmZzZXRfKSwgCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Q0UpOworCSAgICAgICAgfQorCSAgICB9CisJICAgIGVsZW1lbnQubV9jUG9pbnRzT2Zmc2V0XyAtLTsKKwkgICAgcmV0dXJuIGV4aXN0aW5nQ0U7CisJfQorCQorCS8qKgorCSAqIENoZWNrcyBpZiBDRSBiZWxvbmdzIHRvIHRoZSBjb250cmFjdGlvbiB0YWJsZQorCSAqIEBwYXJhbSBDRSBjb2xsYXRpb24gZWxlbWVudCB0byB0ZXN0CisJICogQHJldHVybiB0cnVlIGlmIENFIGJlbG9uZ3MgdG8gdGhlIGNvbnRyYWN0aW9uIHRhYmxlCisJICovCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBpc0NvbnRyYWN0aW9uVGFibGVFbGVtZW50KGludCBDRSkgCisJeyAKKwkJcmV0dXJuIGlzU3BlY2lhbChDRSkgCisgICAgICAgICAgICAgICAmJiAoZ2V0Q0VUYWcoQ0UpID09IENFX0NPTlRSQUNUSU9OX1RBR18KKwkJICAgICAgICAgICB8fCBnZXRDRVRhZyhDRSkgPT0gQ0VfU1BFQ19QUk9DX1RBR18pOworCX0KKwkKKwkvKioKKwkgKiBHZXRzIHRoZSBjb2RlcG9pbnQgCisJICogQHBhcmFtIHRhYmxlIGNvbnRyYWN0aW9uIHRhYmxlCisJICogQHBhcmFtIGVsZW1lbnQgb2Zmc2V0IHRvIHRoZSBjb250cmFjdGlvbiBlbGVtZW50IGluIHRoZSB0YWJsZQorCSAqIEBwYXJhbSBjb2RlUG9pbnQgY29kZSBwb2ludCB0byBsb29rIGZvcgorCSAqIEByZXR1cm4gdGhlIG9mZnNldCB0byB0aGUgY29kZSBwb2ludAorCSAqLworCXByaXZhdGUgc3RhdGljIGludCBmaW5kQ1AoQ29udHJhY3Rpb25UYWJsZSB0YWJsZSwgaW50IGVsZW1lbnQsIAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBjb2RlUG9pbnQpIAorCXsKKwkJQmFzaWNDb250cmFjdGlvblRhYmxlIHRibCA9IGdldEJhc2ljQ29udHJhY3Rpb25UYWJsZSh0YWJsZSwgZWxlbWVudCk7CisJCWlmICh0YmwgPT0gbnVsbCkgeworCSAgICAgICAgcmV0dXJuIC0xOworCSAgICB9CisJCisJICAgIGludCBwb3NpdGlvbiA9IDA7CisJICAgIHdoaWxlIChjb2RlUG9pbnQgPiB0YmwubV9jb2RlUG9pbnRzXy5jaGFyQXQocG9zaXRpb24pKSB7CisJICAgICAgICAgcG9zaXRpb24gKys7CisJICAgICAgICAgaWYgKHBvc2l0aW9uID4gdGJsLm1fY29kZVBvaW50c18ubGVuZ3RoKCkpIHsKKwkgICAgICAgICAgICAgcmV0dXJuIC0xOworCSAgICAgICAgIH0KKwkgICAgfQorCSAgICBpZiAoY29kZVBvaW50ID09IHRibC5tX2NvZGVQb2ludHNfLmNoYXJBdChwb3NpdGlvbikpIHsKKwkgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKwkgICAgfSAKKwkgICAgZWxzZSB7CisJICAgICAgICByZXR1cm4gLTE7CisJICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBjb250cmFjdGlvbiBlbGVtZW50IG91dCBvZiB0aGUgY29udHJhY3Rpb24gdGFibGUKKyAgICAgKiBAcGFyYW0gdGFibGUgY29udHJhY3Rpb24gdGFibGUKKyAgICAgKiBAcGFyYW0gb2Zmc2V0IHRvIHRoZSBlbGVtZW50IGluIHRoZSBjb250cmFjdGlvbiB0YWJsZQorICAgICAqIEByZXR1cm4gYmFzaWMgY29udHJhY3Rpb24gZWxlbWVudCBhdCBvZmZzZXQgaW4gdGhlIGNvbnRyYWN0aW9uIHRhYmxlCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgQmFzaWNDb250cmFjdGlvblRhYmxlIGdldEJhc2ljQ29udHJhY3Rpb25UYWJsZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udHJhY3Rpb25UYWJsZSB0YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9mZnNldCkgCisgICAgeworICAgIAlvZmZzZXQgJj0gMHhGRkZGRkY7CisgICAgCWlmIChvZmZzZXQgPT0gMHhGRkZGRkYpIHsKKyAgICAJCXJldHVybiBudWxsOworICAgIAl9CisJICAgIHJldHVybiAoQmFzaWNDb250cmFjdGlvblRhYmxlKXRhYmxlLm1fZWxlbWVudHNfLmdldChvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBDaGFuZ2VzIHRoZSBjb250cmFjdGlvbiBlbGVtZW50CisgICAgICogQHBhcmFtIHRhYmxlIGNvbnRyYWN0aW9uIHRhYmxlCisgICAgICogQHBhcmFtIGVsZW1lbnQgb2Zmc2V0IHRvIHRoZSBlbGVtZW50IGluIHRoZSBjb250cmFjdGlvbiB0YWJsZQorICAgICAqIEBwYXJhbSBjb2RlUG9pbnQgY29kZXBvaW50IAorICAgICAqIEBwYXJhbSBuZXdDRSBuZXcgY29sbGF0aW9uIGVsZW1lbnQKKyAgICAgKiBAcmV0dXJuIGJhc2ljIGNvbnRyYWN0aW9uIGVsZW1lbnQgYXQgb2Zmc2V0IGluIHRoZSBjb250cmFjdGlvbiB0YWJsZQorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBjaGFuZ2VDb250cmFjdGlvbihDb250cmFjdGlvblRhYmxlIHRhYmxlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGVsZW1lbnQsIGNoYXIgY29kZVBvaW50LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5ld0NFKSAKKyAgICB7CisJICAgIEJhc2ljQ29udHJhY3Rpb25UYWJsZSB0YmwgPSBnZXRCYXNpY0NvbnRyYWN0aW9uVGFibGUodGFibGUsIGVsZW1lbnQpOwkKKwkgICAgaWYgKHRibCA9PSBudWxsKSB7CisJICAgICAgICByZXR1cm4gMDsKKwkgICAgfQorCSAgICBpbnQgcG9zaXRpb24gPSAwOworCSAgICB3aGlsZSAoY29kZVBvaW50ID4gdGJsLm1fY29kZVBvaW50c18uY2hhckF0KHBvc2l0aW9uKSkgeworCSAgICAgICAgcG9zaXRpb24gKys7CisJICAgICAgICBpZiAocG9zaXRpb24gPiB0YmwubV9jb2RlUG9pbnRzXy5sZW5ndGgoKSkgeworCSAgICAgICAgICAgIHJldHVybiBDRV9OT1RfRk9VTkRfOworCSAgICAgICAgfQorCSAgICB9CisJICAgIGlmIChjb2RlUG9pbnQgPT0gdGJsLm1fY29kZVBvaW50c18uY2hhckF0KHBvc2l0aW9uKSkgeworCSAgICAgICAgdGJsLm1fQ0VzXy5zZXQocG9zaXRpb24sIG5ldyBJbnRlZ2VyKG5ld0NFKSk7CisJICAgICAgICByZXR1cm4gZWxlbWVudCAmIDB4RkZGRkZGOworCSAgICB9IAorCSAgICBlbHNlIHsKKwkgICAgICAgIHJldHVybiBDRV9OT1RfRk9VTkRfOworCSAgICB9CisJfQorCQorCS8qKiAKKwkgKiBTZXRzIGEgcGFydCBvZiBjb250cmFjdGlvbiBzZXF1ZW5jZSBpbiB0YWJsZS4gSWYgZWxlbWVudCBpcyBub24gCisJICogZXhpc3RhbnQsIGl0IGNyZWF0ZXMgb24uIFJldHVybnMgZWxlbWVudCBoYW5kbGUuCisJICogQHBhcmFtIHRhYmxlIGNvbnRyYWN0aW9uIHRhYmxlCisJICogQHBhcmFtIGVsZW1lbnQgb2Zmc2V0IHRvIHRoZSBjb250cmFjdGlvbiB0YWJsZQorCSAqIEBwYXJhbSBvZmZzZXQKKwkgKiBAcGFyYW0gY29kZVBvaW50IGNvbnRyYWN0aW9uIGNoYXJhY3RlcgorCSAqIEBwYXJhbSB2YWx1ZSBjZSB2YWx1ZQorCSAqIEByZXR1cm4gbmV3IGNvbnRyYWN0aW9uIGNlCisJICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IHNldENvbnRyYWN0aW9uKENvbnRyYWN0aW9uVGFibGUgdGFibGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZWxlbWVudCwgaW50IG9mZnNldCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgY29kZVBvaW50LCBpbnQgdmFsdWUpIAorICAgIHsKKyAgICAJZWxlbWVudCAmPSAweEZGRkZGRjsKKwkgICAgQmFzaWNDb250cmFjdGlvblRhYmxlIHRibCA9IGdldEJhc2ljQ29udHJhY3Rpb25UYWJsZSh0YWJsZSwgZWxlbWVudCk7CQorCSAgICBpZiAodGJsID09IG51bGwpIHsKKwkgICAgICAgIHRibCA9IGFkZEFDb250cmFjdGlvbkVsZW1lbnQodGFibGUpOworCSAgICAgICAgZWxlbWVudCA9IHRhYmxlLm1fZWxlbWVudHNfLnNpemUoKSAtIDE7CisJICAgIH0KKwkKKwkgICAgdGJsLm1fQ0VzXy5zZXQob2Zmc2V0LCBuZXcgSW50ZWdlcih2YWx1ZSkpOworCSAgICB0YmwubV9jb2RlUG9pbnRzXy5zZXRDaGFyQXQob2Zmc2V0LCBjb2RlUG9pbnQpOworCSAgICByZXR1cm4gY29uc3RydWN0U3BlY2lhbENFKHRhYmxlLm1fY3VycmVudFRhZ18sIGVsZW1lbnQpOworCX0KKwkKKwkvKiogCisJICogSW5zZXJ0cyBhIHBhcnQgb2YgY29udHJhY3Rpb24gc2VxdWVuY2UgaW4gdGFibGUuIFNlcXVlbmNlcyBiZWhpbmQgdGhlIAorCSAqIG9mZnNldCBhcmUgbW92ZWQgYmFjay4gSWYgZWxlbWVudCBpcyBub24gZXhpc3RlbnQsIGl0IGNyZWF0ZXMgb24uIAorCSAqIEBwYXJhbSB0YWJsZSBjb250cmFjdGlvbgorCSAqIEBwYXJhbSBlbGVtZW50IG9mZnNldCB0byB0aGUgdGFibGUgY29udHJhY3Rpb24KKwkgKiBAcGFyYW0gY29kZVBvaW50IGNvZGUgcG9pbnQKKwkgKiBAcGFyYW0gdmFsdWUgY29sbGF0aW9uIGVsZW1lbnQgdmFsdWUKKwkgKiBAcmV0dXJuIGNvbnRyYWN0aW9uIGNvbGxhdGlvbiBlbGVtZW50CisJICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IGluc2VydENvbnRyYWN0aW9uKENvbnRyYWN0aW9uVGFibGUgdGFibGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZWxlbWVudCwgY2hhciBjb2RlUG9pbnQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmFsdWUpIAorICAgIHsKKwkgICAgZWxlbWVudCAmPSAweEZGRkZGRjsKKwkgICAgQmFzaWNDb250cmFjdGlvblRhYmxlIHRibCA9IGdldEJhc2ljQ29udHJhY3Rpb25UYWJsZSh0YWJsZSwgZWxlbWVudCk7CisJICAgIGlmICh0YmwgPT0gbnVsbCkgeworCSAgICAgICAgdGJsID0gYWRkQUNvbnRyYWN0aW9uRWxlbWVudCh0YWJsZSk7CisJICAgICAgICBlbGVtZW50ID0gdGFibGUubV9lbGVtZW50c18uc2l6ZSgpIC0gMTsKKwkgICAgfQorCQorCSAgICBpbnQgb2Zmc2V0ID0gMDsKKwkgICAgd2hpbGUgKHRibC5tX2NvZGVQb2ludHNfLmNoYXJBdChvZmZzZXQpIDwgY29kZVBvaW50IAorCSAgICAgICAgICAgJiYgb2Zmc2V0IDwgdGJsLm1fY29kZVBvaW50c18ubGVuZ3RoKCkpIHsKKwkgICAgICAgIG9mZnNldCArKzsKKwkgICAgfQorCQorCSAgICB0YmwubV9DRXNfLmluc2VydEVsZW1lbnRBdChuZXcgSW50ZWdlcih2YWx1ZSksIG9mZnNldCk7CisJICAgIHRibC5tX2NvZGVQb2ludHNfLmluc2VydChvZmZzZXQsIGNvZGVQb2ludCk7CisJCisJICAgIHJldHVybiBjb25zdHJ1Y3RTcGVjaWFsQ0UodGFibGUubV9jdXJyZW50VGFnXywgZWxlbWVudCk7CisJfQorCQorCS8qKgorCSAqIEZpbmFsaXplIGFkZGl0aW9uCisJICogQHBhcmFtIHQgYnVpbGQgdGFibGUKKwkgKiBAcGFyYW0gZWxlbWVudCB0byBhZGQKKwkgKi8KKwlwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgZmluYWxpemVBZGRpdGlvbihCdWlsZFRhYmxlIHQsIEVsZW1lbnRzIGVsZW1lbnQpIAorCXsKKwkJaW50IENFID0gQ0VfTk9UX0ZPVU5EXzsKKyAgICAgICAgLy8gVGhpcyBzaG91bGQgYWRkIGEgY29tcGxldGVseSBpZ25vcmFibGUgZWxlbWVudCB0byB0aGUgIAorICAgICAgICAvLyB1bnNhZmUgdGFibGUsIHNvIHRoYXQgYmFja3dhcmQgaXRlcmF0aW9uIHdpbGwgc2tpcCAKKyAgICAgICAgLy8gb3ZlciBpdCB3aGVuIHRyZWF0aW5nIGNvbnRyYWN0aW9ucy4gCisgICAgICAgIGlmIChlbGVtZW50Lm1fbWFwQ0VfID09IDApIHsgCisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGVsZW1lbnQubV9jUG9pbnRzXy5sZW5ndGgoKTsgaSArKykgeyAKKyAgICAgICAgICAgICAgICBjaGFyIGNoID0gZWxlbWVudC5tX2NQb2ludHNfLmNoYXJBdChpKTsKKyAgICAgICAgICAgICAgICBpZiAoIVVURjE2LmlzVHJhaWxTdXJyb2dhdGUoY2gpKSB7IAorICAgICAgICAgICAgICAgICAgICB1bnNhZmVDUFNldCh0Lm1fdW5zYWZlQ1BfLCBjaCk7IAorICAgICAgICAgICAgICAgIH0gCisgICAgICAgICAgICB9IAorICAgICAgICB9IAorCisJCWlmIChlbGVtZW50Lm1fY1BvaW50c18ubGVuZ3RoKCkgLSBlbGVtZW50Lm1fY1BvaW50c09mZnNldF8gPiAxKSB7IAorCQkgICAgLy8gd2UncmUgYWRkaW5nIGEgY29udHJhY3Rpb24KKwkJICAgIGludCBjcCA9IFVURjE2LmNoYXJBdChlbGVtZW50Lm1fY1BvaW50c18sIGVsZW1lbnQubV9jUG9pbnRzT2Zmc2V0Xyk7CisJCSAgICBDRSA9IHQubV9tYXBwaW5nXy5nZXRWYWx1ZShjcCk7CisJCSAgICBDRSA9IGFkZENvbnRyYWN0aW9uKHQsIENFLCBlbGVtZW50KTsKKwkJfSAKKwkJZWxzZSB7IAorCQkgICAgLy8gZWFzeSBjYXNlCisJCSAgICBDRSA9IHQubV9tYXBwaW5nXy5nZXRWYWx1ZShlbGVtZW50Lm1fY1BvaW50c18uY2hhckF0KAorCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5tX2NQb2ludHNPZmZzZXRfKSk7CisJCQorCQkgICAgaWYgKENFICE9IENFX05PVF9GT1VORF8pIHsKKwkJICAgICAgICBpZihpc0NvbnRyYWN0aW9uVGFibGVFbGVtZW50KENFKSkgeyAKKwkJICAgICAgICAgICAgLy8gYWRkaW5nIGEgbm9uIGNvbnRyYWN0aW9uIGVsZW1lbnQgKHRoYWksIGV4cGFuc2lvbiwgCisJCSAgICAgICAgICAgIC8vIHNpbmdsZSkgdG8gYWxyZWFkeSBleGlzdGluZyBjb250cmFjdGlvbiAKKwkJCSAgICAgICAgaWYgKCFpc1ByZWZpeChlbGVtZW50Lm1fbWFwQ0VfKSkgeyAKKwkJCSAgICAgICAgCS8vIHdlIGNhbm5vdCByZWVudGVyIHByZWZpeCBlbGVtZW50cyAtIGFzIHdlIGFyZSBnb2luZyAKKwkJCSAgICAgICAgCS8vIHRvIGNyZWF0ZSBhIGRlYWQgbG9vcAorCQkJICAgICAgICAgICAgLy8gT25seSBleHBhbnNpb25zIGFuZCByZWd1bGFyIENFcyBjYW4gZ28gaGVyZS4uLiAKKwkJCSAgICAgICAgICAgIC8vIENvbnRyYWN0aW9ucyB3aWxsIG5ldmVyIGhhcHBlbiBpbiB0aGlzIHBsYWNlCisJCQkgICAgICAgICAgICBzZXRDb250cmFjdGlvbih0Lm1fY29udHJhY3Rpb25zXywgQ0UsIDAsIChjaGFyKTAsIAorCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5tX21hcENFXyk7CisJCQkgICAgICAgICAgICAvLyBUaGlzIGxvb3AgaGFzIHRvIGNoYW5nZSB0aGUgQ0UgYXQgdGhlIGVuZCBvZiAKKwkJCSAgICAgICAgICAgIC8vIGNvbnRyYWN0aW9uIFJFRE8hCisJCQkgICAgICAgICAgICBjaGFuZ2VMYXN0Q0UodC5tX2NvbnRyYWN0aW9uc18sIENFLCBlbGVtZW50Lm1fbWFwQ0VfKTsKKwkJCSAgICAgICAgfQorCQkgICAgICAgIH0gCisJCSAgICAgICAgZWxzZSB7CisJCSAgICAgICAgICAgIHQubV9tYXBwaW5nXy5zZXRWYWx1ZShlbGVtZW50Lm1fY1BvaW50c18uY2hhckF0KAorCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50Lm1fY1BvaW50c09mZnNldF8pLCAKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQubV9tYXBDRV8pOworCQkgICAgICAgIH0KKwkJICAgIH0gCisJCSAgICBlbHNlIHsKKwkJICAgICAgICB0Lm1fbWFwcGluZ18uc2V0VmFsdWUoZWxlbWVudC5tX2NQb2ludHNfLmNoYXJBdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5tX2NQb2ludHNPZmZzZXRfKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQubV9tYXBDRV8pOworCQkgICAgfQorCQl9CisJCXJldHVybiBDRTsKKwl9CisJCisJLyoqIAorCSAqIE5vdGUgcmVnYXJkaW5nIHN1cnJvZ2F0ZSBoYW5kbGluZzogV2UgYXJlIGludGVyZXN0ZWQgb25seSBpbiB0aGUgc2luZ2xlCisJICogb3IgbGVhZGluZyBzdXJyb2dhdGVzIGluIGEgY29udHJhY3Rpb24uIElmIGEgc3Vycm9nYXRlIGlzIHNvbWV3aGVyZSBlbHNlCisJICogaW4gdGhlIGNvbnRyYWN0aW9uLCBpdCBpcyBnb2luZyB0byBiZSBoYW5kbGVkIGFzIGEgcGFpciBvZiBjb2RlIHVuaXRzLAorCSAqIGFzIGl0IGRvZXNuJ3QgYWZmZWN0IHRoZSBwZXJmb3JtYW5jZSBBTkQgaGFuZGxpbmcgc3Vycm9nYXRlcyBzcGVjaWFsbHkKKwkgKiB3b3VsZCBjb21wbGljYXRlIGNvZGUgd2F5IHRvbyBtdWNoLgorCSAqLworCXByaXZhdGUgc3RhdGljIGludCBhZGRDb250cmFjdGlvbihCdWlsZFRhYmxlIHQsIGludCBDRSwgRWxlbWVudHMgZWxlbWVudCkgCisgICAgeworCSAgICBDb250cmFjdGlvblRhYmxlIGNvbnRyYWN0aW9ucyA9IHQubV9jb250cmFjdGlvbnNfOworCSAgICBjb250cmFjdGlvbnMubV9jdXJyZW50VGFnXyA9IENFX0NPTlRSQUNUSU9OX1RBR187CisJCisJICAgIC8vIEZpcnN0IHdlIG5lZWQgdG8gY2hlY2sgaWYgY29udHJhY3Rpb25zIHN0YXJ0cyB3aXRoIGEgc3Vycm9nYXRlCisJICAgIGludCBjcCA9IFVURjE2LmNoYXJBdChlbGVtZW50Lm1fY1BvaW50c18sIDApOworCSAgICBpbnQgY3BzaXplID0gMTsKKwkgICAgaWYgKFVDaGFyYWN0ZXIuaXNTdXBwbGVtZW50YXJ5KGNwKSkgeworCSAgICAJY3BzaXplID0gMjsKKwkgICAgfQorCSAgICBpZiAoY3BzaXplIDwgZWxlbWVudC5tX2NQb2ludHNfLmxlbmd0aCgpKSB7IAorCSAgICAJLy8gVGhpcyBpcyBhIHJlYWwgY29udHJhY3Rpb24sIGlmIHRoZXJlIGFyZSBvdGhlciBjaGFyYWN0ZXJzIGFmdGVyIAorCSAgICAJLy8gdGhlIGZpcnN0CisJICAgIAlpbnQgc2l6ZSA9IGVsZW1lbnQubV9jUG9pbnRzXy5sZW5ndGgoKSAtIGVsZW1lbnQubV9jUG9pbnRzT2Zmc2V0XzsKKwkgICAgICAgIGZvciAoaW50IGogPSAxOyBqIDwgc2l6ZTsgaiArKykgeyAgIAorCSAgICAgICAgICAgIC8vIEZpcnN0IGFkZCBjb250cmFjdGlvbiBjaGFycyB0byB1bnNhZmUgQ1AgaGFzaCB0YWJsZSAKKwkgICAgICAgICAgICAvLyBVbmxlc3MgaXQgaXMgYSB0cmFpbCBzdXJyb2dhdGUsIHdoaWNoIGlzIGhhbmRsZWQgCisJICAgICAgICAgICAgLy8gYWxnb3JpdG1pY2FsbHkgYW5kIHNob3VsZG4ndCB0YWtlIHVwIHNwYWNlIGluIHRoZSB0YWJsZS4KKwkgICAgICAgICAgICBpZiAoIVVURjE2LmlzVHJhaWxTdXJyb2dhdGUoZWxlbWVudC5tX2NQb2ludHNfLmNoYXJBdCgKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQubV9jUG9pbnRzT2Zmc2V0XyArIGopKSkgeworCSAgICAgICAgICAgICAgICAgdW5zYWZlQ1BTZXQodC5tX3Vuc2FmZUNQXywgCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50Lm1fY1BvaW50c18uY2hhckF0KAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50Lm1fY1BvaW50c09mZnNldF8gKyBqKSk7CisJICAgICAgICAgICAgfQorCSAgICAgICAgfQorCSAgICAgICAgLy8gQWRkIHRoZSBsYXN0IGNoYXIgb2YgdGhlIGNvbnRyYWN0aW9uIHRvIHRoZSBjb250cmFjdGlvbi1lbmQgCisJICAgICAgICAvLyBoYXNoIHRhYmxlLiB1bmxlc3MgaXQgaXMgYSB0cmFpbCBzdXJyb2dhdGUsIHdoaWNoIGlzIGhhbmRsZWQgCisJICAgICAgICAvLyBhbGdvcml0aG1pY2FsbHkgYW5kIHNob3VsZG4ndCBiZSBpbiB0aGUgdGFibGUKKwkgICAgICAgIGlmICghVVRGMTYuaXNUcmFpbFN1cnJvZ2F0ZShlbGVtZW50Lm1fY1BvaW50c18uY2hhckF0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50Lm1fY1BvaW50c18ubGVuZ3RoKCkgLTEpKSkgeworCSAgICAgICAgICAgIENvbnRyRW5kQ1BTZXQodC5tX2NvbnRyRW5kQ1BfLCAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQubV9jUG9pbnRzXy5jaGFyQXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5tX2NQb2ludHNfLmxlbmd0aCgpIC0xKSk7CisJICAgICAgICB9CisJCisJICAgICAgICAvLyBJZiB0aGVyZSBhcmUgYW55IEphbW9zIGluIHRoZSBjb250cmFjdGlvbiwgd2Ugc2hvdWxkIHR1cm4gb24gCisJICAgICAgICAvLyBzcGVjaWFsIHByb2Nlc3NpbmcgZm9yIEphbW9zCisJICAgICAgICBpZiAoaXNKYW1vKGVsZW1lbnQubV9jUG9pbnRzXy5jaGFyQXQoZWxlbWVudC5tX2NQb2ludHNPZmZzZXRfKSkpIHsKKwkgICAgICAgICAgICB0Lm1fY29sbGF0b3JfLm1faXNKYW1vU3BlY2lhbF8gPSB0cnVlOworCSAgICAgICAgfQorCSAgICAgICAgLy8gdGhlbiB3ZSBuZWVkIHRvIGRlYWwgd2l0aCBpdCAKKwkgICAgICAgIC8vIHdlIGNvdWxkIGFyZWFkeSBoYXZlIHNvbWV0aGluZyBpbiB0YWJsZSAtIG9yIHdlIG1pZ2h0IG5vdCAKKwkgICAgICAgIGVsZW1lbnQubV9jUG9pbnRzT2Zmc2V0XyArPSBjcHNpemU7CisJICAgICAgICBpZiAoIWlzQ29udHJhY3Rpb24oQ0UpKSB7IAorCQkgICAgICAgIC8vIGlmIGl0IHdhc24ndCBjb250cmFjdGlvbiwgd2Ugd291bGRuJ3QgZW5kIHVwIGhlcmUKKwkJICAgICAgICBpbnQgZmlyc3RDb250cmFjdGlvbk9mZnNldCA9IGFkZENvbnRyYWN0aW9uKGNvbnRyYWN0aW9ucywgCisJCSAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVFJBQ1RJT05fVEFCTEVfTkVXX0VMRU1FTlRfLCAoY2hhcikwLCBDRSk7CisJCSAgICAgICAgaW50IG5ld0NFID0gcHJvY2Vzc0NvbnRyYWN0aW9uKGNvbnRyYWN0aW9ucywgZWxlbWVudCwgCisJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENFX05PVF9GT1VORF8pOworCQkgICAgICAgIGFkZENvbnRyYWN0aW9uKGNvbnRyYWN0aW9ucywgZmlyc3RDb250cmFjdGlvbk9mZnNldCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQubV9jUG9pbnRzXy5jaGFyQXQoZWxlbWVudC5tX2NQb2ludHNPZmZzZXRfKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Q0UpOworCQkgICAgICAgIGFkZENvbnRyYWN0aW9uKGNvbnRyYWN0aW9ucywgZmlyc3RDb250cmFjdGlvbk9mZnNldCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIpMHhGRkZGLCBDRSk7CisJCSAgICAgICAgQ0UgPSBjb25zdHJ1Y3RTcGVjaWFsQ0UoQ0VfQ09OVFJBQ1RJT05fVEFHXywgCisJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RDb250cmFjdGlvbk9mZnNldCk7CisJCSAgICB9IAorCQkgICAgZWxzZSB7IAorCQkgICAgICAgIC8vIHdlIGFyZSBhZGRpbmcgdG8gZXhpc3RpbmcgY29udHJhY3Rpb24gCisJCSAgICAgICAgLy8gdGhlcmUgd2VyZSBhbHJlYWR5IHNvbWUgZWxlbWVudHMgaW4gdGhlIHRhYmxlLCBzbyB3ZSBuZWVkIHRvIAorCQkgICAgICAgIC8vIGFkZCBhIG5ldyBjb250cmFjdGlvbgorCQkgICAgICAgIC8vIFR3byB0aGluZ3MgY2FuIGhhcHBlbiBoZXJlOiBlaXRoZXIgdGhlIGNvZGVwb2ludCBpcyBhbHJlYWR5IAorCQkgICAgICAgIC8vIGluIHRoZSB0YWJsZSwgb3IgaXQgaXMgbm90IAorCQkgICAgICAgIGludCBwb3NpdGlvbiA9IGZpbmRDUChjb250cmFjdGlvbnMsIENFLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5tX2NQb2ludHNfLmNoYXJBdChlbGVtZW50Lm1fY1BvaW50c09mZnNldF8pKTsKKwkJICAgICAgICBpZiAocG9zaXRpb24gPiAwKSB7ICAgICAgIAorCQkgICAgICAgICAgICAvLyBpZiBpdCBpcyB3ZSBqdXN0IGNvbnRpbnVlIGRvd24gdGhlIGNoYWluCisJCSAgICAgICAgICAgIGludCBlQ0UgPSBnZXRDRShjb250cmFjdGlvbnMsIENFLCBwb3NpdGlvbik7CisJCSAgICAgICAgICAgIGludCBuZXdDRSA9IHByb2Nlc3NDb250cmFjdGlvbihjb250cmFjdGlvbnMsIGVsZW1lbnQsIGVDRSk7CisJCSAgICAgICAgICAgIHNldENvbnRyYWN0aW9uKGNvbnRyYWN0aW9ucywgQ0UsIHBvc2l0aW9uLCAKKwkJICAgICAgICAgICAgICAgICAgZWxlbWVudC5tX2NQb2ludHNfLmNoYXJBdChlbGVtZW50Lm1fY1BvaW50c09mZnNldF8pLCAKKwkJICAgICAgICAgICAgICAgICAgbmV3Q0UpOworCQkgICAgICAgIH0gCisJCSAgICAgICAgZWxzZSB7ICAgICAgICAgICAgICAgICAgCisJCSAgICAgICAgICAgIC8vIGlmIGl0IGlzbid0LCB3ZSB3aWxsIGhhdmUgdG8gY3JlYXRlIGEgbmV3IHNlcXVlbmNlIAorCQkgICAgICAgICAgICBpbnQgbmV3Q0UgPSBwcm9jZXNzQ29udHJhY3Rpb24oY29udHJhY3Rpb25zLCBlbGVtZW50LCAKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENFX05PVF9GT1VORF8pOworCQkgICAgICAgICAgICBpbnNlcnRDb250cmFjdGlvbihjb250cmFjdGlvbnMsIENFLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQubV9jUG9pbnRzXy5jaGFyQXQoZWxlbWVudC5tX2NQb2ludHNPZmZzZXRfKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0NFKTsKKwkJICAgICAgICB9CisJCSAgICB9CisJCSAgICBlbGVtZW50Lm1fY1BvaW50c09mZnNldF8gLT0gY3BzaXplOworCSAgICAgICAgdC5tX21hcHBpbmdfLnNldFZhbHVlKGNwLCBDRSk7CisJICAgIH0gCisJICAgIGVsc2UgaWYgKCFpc0NvbnRyYWN0aW9uKENFKSkgeyAKKwkgICAgICAgIC8vIHRoaXMgaXMganVzdCBhIHN1cnJvZ2F0ZSwgYW5kIHRoZXJlIGlzIG5vIGNvbnRyYWN0aW9uIAorCSAgICAgICAgdC5tX21hcHBpbmdfLnNldFZhbHVlKGNwLCBlbGVtZW50Lm1fbWFwQ0VfKTsKKwkgICAgfSAKKwkgICAgZWxzZSB7IAorCSAgICAgICAgLy8gZmlsbCBvdXQgdGhlIGZpcnN0IHN0YWdlIG9mIHRoZSBjb250cmFjdGlvbiB3aXRoIHRoZSBzdXJyb2dhdGUgCisJICAgICAgICAvLyBDRSAKKwkgICAgICAgIGNoYW5nZUNvbnRyYWN0aW9uKGNvbnRyYWN0aW9ucywgQ0UsIChjaGFyKTAsIGVsZW1lbnQubV9tYXBDRV8pOworCSAgICAgICAgY2hhbmdlQ29udHJhY3Rpb24oY29udHJhY3Rpb25zLCBDRSwgKGNoYXIpMHhGRkZGLCBlbGVtZW50Lm1fbWFwQ0VfKTsKKwkgICAgfQorCSAgICByZXR1cm4gQ0U7CisJfQorCQorCS8qKiAKKwkgKiB0aGlzIGlzIGZvciBhZGRpbmcgbm9uIGNvbnRyYWN0aW9ucyAKKwkgKiBAcGFyYW0gdGFibGUgY29udHJhY3Rpb24gdGFibGUKKwkgKiBAcGFyYW0gZWxlbWVudCBvZmZzZXQgdG8gdGhlIGNvbnRyYWN0aW9uIHRhYmxlCisJICogQHBhcmFtIHZhbHVlIGNvbGxhdGlvbiBlbGVtZW50IHZhbHVlCisJICogQHJldHVybiBuZXcgY29sbGF0aW9uIGVsZW1lbnQgCisJICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IGNoYW5nZUxhc3RDRShDb250cmFjdGlvblRhYmxlIHRhYmxlLCBpbnQgZWxlbWVudCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmFsdWUpIAorICAgIHsKKwkgICAgQmFzaWNDb250cmFjdGlvblRhYmxlIHRibCA9IGdldEJhc2ljQ29udHJhY3Rpb25UYWJsZSh0YWJsZSwgZWxlbWVudCk7CisJICAgIGlmICh0YmwgPT0gbnVsbCkgeworCSAgICAgICAgcmV0dXJuIDA7CisJICAgIH0KKwkKKwkgICAgdGJsLm1fQ0VzXy5zZXQodGJsLm1fQ0VzXy5zaXplKCkgLSAxLCBuZXcgSW50ZWdlcih2YWx1ZSkpOworCSAgICByZXR1cm4gY29uc3RydWN0U3BlY2lhbENFKHRhYmxlLm1fY3VycmVudFRhZ18sIGVsZW1lbnQgJiAweEZGRkZGRik7CisJfQorICAgIAorICAgIC8qKgorICAgICAqIEdpdmVuIGEgc2V0IG9mIHJhbmdlcyBjYWxjdWxhdGVkIGJ5IGFsbG9jV2VpZ2h0cygpLCBpdGVyYXRlIHRocm91Z2ggdGhlIAorICAgICAqIHdlaWdodHMuIFNldHMgdGhlIG5leHQgd2VpZ2h0IGluIGNlZ2VuZXJhdG9yLm1fY3VycmVudF8uCisgICAgICogQHBhcmFtIGNlZ2VuZXJhdG9yIG9iamVjdCB0aGF0IGNvbnRhaW5zIHJhbmdlcyB3ZWlnaHQgcmFuZ2UgYXJyYXkgYW5kCisgICAgICogICAgICAgIGl0cyByYW5nZUNvdW50CisgICAgICogQHJldHVybiB0aGUgbmV4dCB3ZWlnaHQKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBpbnQgbmV4dFdlaWdodChDRUdlbmVyYXRvciBjZWdlbmVyYXRvcikgCisgICAgeworICAgICAgICBpZiAoY2VnZW5lcmF0b3IubV9yYW5nZXNMZW5ndGhfID4gMCkgeworICAgICAgICAgICAgLy8gZ2V0IG1heEJ5dGUgZnJvbSB0aGUgLmNvdW50IGZpZWxkCisgICAgICAgICAgICBpbnQgbWF4Qnl0ZSA9IGNlZ2VuZXJhdG9yLm1fcmFuZ2VzX1swXS5tX2NvdW50XzsKKyAgICAgICAgICAgIC8vIGdldCB0aGUgbmV4dCB3ZWlnaHQgCisgICAgICAgICAgICBpbnQgd2VpZ2h0ID0gY2VnZW5lcmF0b3IubV9yYW5nZXNfWzBdLm1fc3RhcnRfOworICAgICAgICAgICAgaWYgKHdlaWdodCA9PSBjZWdlbmVyYXRvci5tX3Jhbmdlc19bMF0ubV9lbmRfKSB7CisgICAgICAgICAgICAgICAgLy8gdGhpcyByYW5nZSBpcyBmaW5pc2hlZCwgcmVtb3ZlIGl0IGFuZCBtb3ZlIHRoZSBmb2xsb3dpbmcgCisgICAgICAgICAgICAgICAgLy8gb25lcyB1cCAKKyAgICAgICAgICAgICAgICBjZWdlbmVyYXRvci5tX3Jhbmdlc0xlbmd0aF8gLS07CisgICAgICAgICAgICAgICAgaWYgKGNlZ2VuZXJhdG9yLm1fcmFuZ2VzTGVuZ3RoXyA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShjZWdlbmVyYXRvci5tX3Jhbmdlc18sIDEsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlZ2VuZXJhdG9yLm1fcmFuZ2VzXywgMCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VnZW5lcmF0b3IubV9yYW5nZXNMZW5ndGhfKTsKKyAgICAgICAgICAgICAgICAgICAgY2VnZW5lcmF0b3IubV9yYW5nZXNfWzBdLm1fY291bnRfID0gbWF4Qnl0ZTsgCisgICAgICAgICAgICAgICAgICAgIC8vIGtlZXAgbWF4Qnl0ZSBpbiByYW5nZXNbMF0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IAorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gaW5jcmVtZW50IHRoZSB3ZWlnaHQgZm9yIHRoZSBuZXh0IHZhbHVlCisgICAgICAgICAgICAgICAgY2VnZW5lcmF0b3IubV9yYW5nZXNfWzBdLm1fc3RhcnRfIAorICAgICAgICAgICAgICAgICAgICAgID0gaW5jV2VpZ2h0KHdlaWdodCwgY2VnZW5lcmF0b3IubV9yYW5nZXNfWzBdLm1fbGVuZ3RoMl8sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJ5dGUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHdlaWdodDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEluY3JlbWVudCB0aGUgY29sbGF0aW9uIHdlaWdodAorICAgICAqIEBwYXJhbSB3ZWlnaHQgdG8gaW5jcmVtZW50CisgICAgICogQHBhcmFtIGxlbmd0aAorICAgICAqIEBwYXJhbSBtYXhCeXRlCisgICAgICogQHJldHVybiBuZXcgaW5jcmVtZW50ZWQgd2VpZ2h0CisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IGluY1dlaWdodChpbnQgd2VpZ2h0LCBpbnQgbGVuZ3RoLCBpbnQgbWF4Qnl0ZSkgCisgICAgeworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgaW50IGIgPSBnZXRXZWlnaHRCeXRlKHdlaWdodCwgbGVuZ3RoKTsKKyAgICAgICAgICAgIGlmIChiIDwgbWF4Qnl0ZSkgeworICAgICAgICAgICAgICAgIHJldHVybiBzZXRXZWlnaHRCeXRlKHdlaWdodCwgbGVuZ3RoLCBiICsgMSk7CisgICAgICAgICAgICB9IAorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gcm9sbCBvdmVyLCBzZXQgdGhpcyBieXRlIHRvIEJZVEVfRklSU1RfVEFJTE9SRURfIGFuZCAKKyAgICAgICAgICAgICAgICAvLyBpbmNyZW1lbnQgdGhlIHByZXZpb3VzIG9uZQorICAgICAgICAgICAgICAgIHdlaWdodCA9IHNldFdlaWdodEJ5dGUod2VpZ2h0LCBsZW5ndGgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IuQllURV9GSVJTVF9UQUlMT1JFRF8pOworICAgICAgICAgICAgICAgIC0tIGxlbmd0aDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSB3ZWlnaHQgYnl0ZQorICAgICAqIEBwYXJhbSB3ZWlnaHQKKyAgICAgKiBAcGFyYW0gaW5kZXgKKyAgICAgKiBAcmV0dXJuIGJ5dGUKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgZ2V0V2VpZ2h0Qnl0ZShpbnQgd2VpZ2h0LCBpbnQgaW5kZXgpIAorICAgIHsKKyAgICAgICAgcmV0dXJuICh3ZWlnaHQgPj4gKCg0IC0gaW5kZXgpIDw8IDMpKSAmIDB4ZmY7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFNldCB0aGUgd2VpZ2h0IGJ5dGUgaW4gdGFibGUKKyAgICAgKiBAcGFyYW0gd2VpZ2h0IAorICAgICAqIEBwYXJhbSBpbmRleAorICAgICAqIEBwYXJhbSBiIGJ5dGUKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgc2V0V2VpZ2h0Qnl0ZShpbnQgd2VpZ2h0LCBpbnQgaW5kZXgsIGludCBiKSAKKyAgICB7CisgICAgICAgIGluZGV4IDw8PSAzOworICAgICAgICAvLyAweGZmZmZmZmZmIGV4Y2VwdCBhIDAwICJob2xlIiBmb3IgdGhlIGluZGV4LXRoIGJ5dGUKKyAgICAgICAgaW50IG1hc2sgPSAweGZmZmZmZmZmID4+PiBpbmRleDsKKyAgICAgICAgaW5kZXggPSAzMiAtIGluZGV4OworICAgICAgICBtYXNrIHw9IDB4ZmZmZmZmMDAgPDwgaW5kZXg7CisgICAgICAgIHJldHVybiAod2VpZ2h0ICYgbWFzaykgfCAoYiA8PCBpbmRleCk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIENhbGwgZ2V0V2VpZ2h0UmFuZ2VzIGFuZCB0aGVuIGRldGVybWluZSBoZXVyaXN0aWNhbGx5IHdoaWNoIHJhbmdlcyB0byAKKyAgICAgKiB1c2UgZm9yIGEgZ2l2ZW4gbnVtYmVyIG9mIHdlaWdodHMgYmV0d2VlbiAoZXhjbHVkaW5nKSB0d28gbGltaXRzCisgICAgICogQHBhcmFtIGxvd2VybGltaXQKKyAgICAgKiBAcGFyYW0gdXBwZXJsaW1pdAorICAgICAqIEBwYXJhbSBuCisgICAgICogQHBhcmFtIG1heEJ5dGUKKyAgICAgKiBAcGFyYW0gcmFuZ2VzCisgICAgICogQHJldHVybgorICAgICAqLworICAgIHByaXZhdGUgaW50IGFsbG9jYXRlV2VpZ2h0cyhpbnQgbG93ZXJMaW1pdCwgaW50IHVwcGVyTGltaXQsIGludCBuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWF4Qnl0ZSwgV2VpZ2h0UmFuZ2UgcmFuZ2VzW10pIAorICAgIHsKKyAgICAgICAgLy8gbnVtYmVyIG9mIHVzYWJsZSBieXRlIHZhbHVlcyAzLi5tYXhCeXRlCisgICAgICAgIGludCBjb3VudEJ5dGVzID0gbWF4Qnl0ZSAtIFJ1bGVCYXNlZENvbGxhdG9yLkJZVEVfRklSU1RfVEFJTE9SRURfICsgMTsKKyAgICAgICAgLy8gWzBdIHVudXNlZCwgWzVdIHRvIG1ha2UgaW5kZXggY2hlY2tzIHVubmVjZXNzYXJ5LCBtX3V0aWxDb3VudEJ1ZmZlcl8KKyAgICAgICAgLy8gY291bnRCeXRlcyB0byB0aGUgcG93ZXIgb2YgaW5kZXgsIG1fdXRpbExvbmdCdWZmZXJfIGZvciB1bnNpZ25lZG5lc3MKKyAgICAgICAgLy8gZ2NjIHJlcXVpcmVzIGV4cGxpY2l0IGluaXRpYWxpemF0aW9uIAorICAgICAgICBtX3V0aWxMb25nQnVmZmVyX1swXSA9IDE7CisgICAgICAgIG1fdXRpbExvbmdCdWZmZXJfWzFdID0gY291bnRCeXRlczsKKyAgICAgICAgbV91dGlsTG9uZ0J1ZmZlcl9bMl0gPSBtX3V0aWxMb25nQnVmZmVyX1sxXSAqIGNvdW50Qnl0ZXM7CisgICAgICAgIG1fdXRpbExvbmdCdWZmZXJfWzNdID0gbV91dGlsTG9uZ0J1ZmZlcl9bMl0gKiBjb3VudEJ5dGVzOworICAgICAgICBtX3V0aWxMb25nQnVmZmVyX1s0XSA9IG1fdXRpbExvbmdCdWZmZXJfWzNdICogY291bnRCeXRlczsKKyAgICAgICAgaW50IHJhbmdlQ291bnQgPSBnZXRXZWlnaHRSYW5nZXMobG93ZXJMaW1pdCwgdXBwZXJMaW1pdCwgbWF4Qnl0ZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50Qnl0ZXMsIHJhbmdlcyk7CisgICAgICAgIGlmIChyYW5nZUNvdW50IDw9IDApIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIC8vIHdoYXQgaXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHdlaWdodHMgd2l0aCB0aGVzZSByYW5nZXM/CisgICAgICAgIGxvbmcgbWF4Q291bnQgPSAwOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJhbmdlQ291bnQ7ICsrIGkpIHsKKyAgICAgICAgICAgIG1heENvdW50ICs9IChsb25nKXJhbmdlc1tpXS5tX2NvdW50XyAKKyAgICAgICAgICAgICAgICAgICAgICAgICogbV91dGlsTG9uZ0J1ZmZlcl9bNCAtIHJhbmdlc1tpXS5tX2xlbmd0aF9dOworICAgICAgICB9CisgICAgICAgIGlmIChtYXhDb3VudCA8IG4pIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIC8vIHNldCB0aGUgbGVuZ3RoMiBhbmQgY291bnQyIGZpZWxkcworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJhbmdlQ291bnQ7ICsrIGkpIHsKKyAgICAgICAgICAgIHJhbmdlc1tpXS5tX2xlbmd0aDJfID0gcmFuZ2VzW2ldLm1fbGVuZ3RoXzsKKyAgICAgICAgICAgIHJhbmdlc1tpXS5tX2NvdW50Ml8gPSByYW5nZXNbaV0ubV9jb3VudF87CisgICAgICAgIH0KKyAgICAgICAgLy8gdHJ5IHVudGlsIHdlIGZpbmQgc3VpdGFibHkgbGFyZ2UgcmFuZ2VzCisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAvLyBnZXQgdGhlIHNtYWxsZXN0IG51bWJlciBvZiBieXRlcyBpbiBhIHJhbmdlCisgICAgICAgICAgICBpbnQgbWluTGVuZ3RoID0gcmFuZ2VzWzBdLm1fbGVuZ3RoMl87CisgICAgICAgICAgICAvLyBzdW0gdXAgdGhlIG51bWJlciBvZiBlbGVtZW50cyB0aGF0IGZpdCBpbnRvIHJhbmdlcyBvZiBlYWNoIGJ5dGUgCisgICAgICAgICAgICAvLyBsZW5ndGgKKyAgICAgICAgICAgIEFycmF5cy5maWxsKG1fdXRpbENvdW50QnVmZmVyXywgMCk7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJhbmdlQ291bnQ7ICsrIGkpIHsKKyAgICAgICAgICAgICAgICBtX3V0aWxDb3VudEJ1ZmZlcl9bcmFuZ2VzW2ldLm1fbGVuZ3RoMl9dICs9IHJhbmdlc1tpXS5tX2NvdW50Ml87CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBub3cgdHJ5IHRvIGFsbG9jYXRlIG4gZWxlbWVudHMgaW4gdGhlIGF2YWlsYWJsZSBzaG9ydCByYW5nZXMgCisgICAgICAgICAgICBpZiAobiA8PSBtX3V0aWxDb3VudEJ1ZmZlcl9bbWluTGVuZ3RoXSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgbV91dGlsQ291bnRCdWZmZXJfW21pbkxlbmd0aCArIDFdKSB7CisgICAgICAgICAgICAgICAgLy8gdHJpdmlhbCBjYXNlcywgdXNlIHRoZSBmaXJzdCBmZXcgcmFuZ2VzCisgICAgICAgICAgICAgICAgbWF4Q291bnQgPSAwOworICAgICAgICAgICAgICAgIHJhbmdlQ291bnQgPSAwOworICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgbWF4Q291bnQgKz0gcmFuZ2VzW3JhbmdlQ291bnRdLm1fY291bnQyXzsKKyAgICAgICAgICAgICAgICAgICAgKysgcmFuZ2VDb3VudDsKKyAgICAgICAgICAgICAgICB9IHdoaWxlIChuID4gbWF4Q291bnQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfSAKKyAgICAgICAgICAgIGVsc2UgaWYgKG4gPD0gcmFuZ2VzWzBdLm1fY291bnQyXyAqIGNvdW50Qnl0ZXMpIHsKKyAgICAgICAgICAgICAgICAvLyBlYXN5IGNhc2UsIGp1c3QgbWFrZSB0aGlzIG9uZSByYW5nZSBsYXJnZSBlbm91Z2ggYnkgCisgICAgICAgICAgICAgICAgLy8gbGVuZ3RoZW5pbmcgaXQgb25jZSBtb3JlLCBwb3NzaWJseSBzcGxpdCBpdAorICAgICAgICAgICAgICAgIHJhbmdlQ291bnQgPSAxOworICAgICAgICAgICAgICAgIC8vIGNhbGN1bGF0ZSBob3cgdG8gc3BsaXQgdGhlIHJhbmdlIGJldHdlZW4gbWF4TGVuZ3RoLTEgCisgICAgICAgICAgICAgICAgLy8gKGNvdW50MSkgYW5kIG1heExlbmd0aCAoY291bnQyKSAKKyAgICAgICAgICAgICAgICBsb25nIHBvd2VyXzEgCisgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG1fdXRpbExvbmdCdWZmZXJfW21pbkxlbmd0aCAtIHJhbmdlc1swXS5tX2xlbmd0aF9dOworICAgICAgICAgICAgICAgIGxvbmcgcG93ZXIgPSBwb3dlcl8xICogY291bnRCeXRlczsKKyAgICAgICAgICAgICAgICBpbnQgY291bnQyID0gKGludCkoKG4gKyBwb3dlciAtIDEpIC8gcG93ZXIpOworICAgICAgICAgICAgICAgIGludCBjb3VudDEgPSByYW5nZXNbMF0ubV9jb3VudF8gLSBjb3VudDI7CisgICAgICAgICAgICAgICAgLy8gc3BsaXQgdGhlIHJhbmdlCisgICAgICAgICAgICAgICAgaWYgKGNvdW50MSA8IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gbGVuZ3RoZW4gdGhlIGVudGlyZSByYW5nZSB0byBtYXhMZW5ndGggCisgICAgICAgICAgICAgICAgICAgIGxlbmd0aGVuUmFuZ2UocmFuZ2VzLCAwLCBtYXhCeXRlLCBjb3VudEJ5dGVzKTsKKyAgICAgICAgICAgICAgICB9IAorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvLyByZWFsbHkgc3BsaXQgdGhlIHJhbmdlCisgICAgICAgICAgICAgICAgICAgIC8vIGNyZWF0ZSBhIG5ldyByYW5nZSB3aXRoIHRoZSBlbmQgYW5kIGluaXRpYWwgYW5kIGN1cnJlbnQgCisgICAgICAgICAgICAgICAgICAgIC8vIGxlbmd0aCBvZiB0aGUgb2xkIG9uZQorICAgICAgICAgICAgICAgICAgICByYW5nZUNvdW50ID0gMjsKKyAgICAgICAgICAgICAgICAgICAgcmFuZ2VzWzFdLm1fZW5kXyA9IHJhbmdlc1swXS5tX2VuZF87CisgICAgICAgICAgICAgICAgICAgIHJhbmdlc1sxXS5tX2xlbmd0aF8gPSByYW5nZXNbMF0ubV9sZW5ndGhfOworICAgICAgICAgICAgICAgICAgICByYW5nZXNbMV0ubV9sZW5ndGgyXyA9IG1pbkxlbmd0aDsKKyAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRoZSBlbmQgb2YgdGhlIGZpcnN0IHJhbmdlIGFjY29yZGluZyB0byBjb3VudDEKKyAgICAgICAgICAgICAgICAgICAgaW50IGkgPSByYW5nZXNbMF0ubV9sZW5ndGhfOworICAgICAgICAgICAgICAgICAgICBpbnQgYiA9IGdldFdlaWdodEJ5dGUocmFuZ2VzWzBdLm1fc3RhcnRfLCBpKSArIGNvdW50MSAtIDE7CisgICAgICAgICAgICAgICAgICAgIC8vIHJhbmdlc1swXS5jb3VudCBhbmQgY291bnQxIG1heSBiZSA+Y291bnRCeXRlcyBmcm9tIAorICAgICAgICAgICAgICAgICAgICAvLyBtZXJnaW5nIGFkamFjZW50IHJhbmdlczsgYiA+IG1heEJ5dGUgaXMgcG9zc2libGUKKyAgICAgICAgICAgICAgICAgICAgaWYgKGIgPD0gbWF4Qnl0ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VzWzBdLm1fZW5kXyA9IHNldFdlaWdodEJ5dGUocmFuZ2VzWzBdLm1fc3RhcnRfLCBpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIpOworICAgICAgICAgICAgICAgICAgICB9IAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlc1swXS5tX2VuZF8gPSBzZXRXZWlnaHRCeXRlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY1dlaWdodChyYW5nZXNbMF0ubV9zdGFydF8sIGkgLSAxLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Qnl0ZSksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGksIGIgLSBjb3VudEJ5dGVzKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdGhlIGJ5dGVzIGluIHRoZSBlbmQgd2VpZ2h0IGF0IGxlbmd0aCArIDEuLmxlbmd0aDIgCisgICAgICAgICAgICAgICAgICAgIC8vIHRvIG1heEJ5dGUKKyAgICAgICAgICAgICAgICAgICAgYiA9IChtYXhCeXRlIDw8IDI0KSB8IChtYXhCeXRlIDw8IDE2KSB8IChtYXhCeXRlIDw8IDgpCisgICAgICAgICAgICAgICAgICAgICAgICB8IG1heEJ5dGU7IC8vIHRoaXMgdXNlZCB0byBiZSAweGZmZmZmZmZmIAorICAgICAgICAgICAgICAgICAgICByYW5nZXNbMF0ubV9lbmRfID0gdHJ1bmNhdGVXZWlnaHQocmFuZ2VzWzBdLm1fZW5kXywgaSkgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChiID4+PiAoaSA8PCAzKSkgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIChiIDw8ICgoNCAtIG1pbkxlbmd0aCkgPDwgMykpOworICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdGhlIHN0YXJ0IG9mIHRoZSBzZWNvbmQgcmFuZ2UgdG8gaW1tZWRpYXRlbHkgZm9sbG93IAorICAgICAgICAgICAgICAgICAgICAvLyB0aGUgZW5kIG9mIHRoZSBmaXJzdCBvbmUKKyAgICAgICAgICAgICAgICAgICAgcmFuZ2VzWzFdLm1fc3RhcnRfID0gaW5jV2VpZ2h0KHJhbmdlc1swXS5tX2VuZF8sIG1pbkxlbmd0aCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhCeXRlKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gc2V0IHRoZSBjb3VudCB2YWx1ZXMgKGluZm9ybWF0aW9uYWwpCisgICAgICAgICAgICAgICAgICAgIHJhbmdlc1swXS5tX2NvdW50XyA9IGNvdW50MTsKKyAgICAgICAgICAgICAgICAgICAgcmFuZ2VzWzFdLm1fY291bnRfID0gY291bnQyOworICAgIAorICAgICAgICAgICAgICAgICAgICByYW5nZXNbMF0ubV9jb3VudDJfID0gKGludCkoY291bnQxICogcG93ZXJfMSk7CisgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgYmUgKmNvdW50Qnl0ZXMgd2hlbiBsZW5ndGhlbmVkIAorICAgICAgICAgICAgICAgICAgICByYW5nZXNbMV0ubV9jb3VudDJfID0gKGludCkoY291bnQyICogcG93ZXJfMSk7IAorICAgIAorICAgICAgICAgICAgICAgICAgICAvLyBsZW5ndGhlbiB0aGUgc2Vjb25kIHJhbmdlIHRvIG1heExlbmd0aAorICAgICAgICAgICAgICAgICAgICBsZW5ndGhlblJhbmdlKHJhbmdlcywgMSwgbWF4Qnl0ZSwgY291bnRCeXRlcyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gbm8gZ29vZCBtYXRjaCwgbGVuZ3RoZW4gYWxsIG1pbkxlbmd0aCByYW5nZXMgYW5kIGl0ZXJhdGUgCisgICAgICAgICAgICBmb3IgKGludCBpPTA7IHJhbmdlc1tpXS5tX2xlbmd0aDJfID09IG1pbkxlbmd0aDsgKysgaSkgeworICAgICAgICAgICAgICAgIGxlbmd0aGVuUmFuZ2UocmFuZ2VzLCBpLCBtYXhCeXRlLCBjb3VudEJ5dGVzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIAorICAgICAgICBpZiAocmFuZ2VDb3VudCA+IDEpIHsKKyAgICAgICAgICAgIC8vIHNvcnQgdGhlIHJhbmdlcyBieSB3ZWlnaHQgdmFsdWVzIAorICAgICAgICAgICAgQXJyYXlzLnNvcnQocmFuZ2VzLCAwLCByYW5nZUNvdW50KTsKKyAgICAgICAgfQorICAgIAorICAgICAgICAvLyBzZXQgbWF4Qnl0ZSBpbiByYW5nZXNbMF0gZm9yIHVjb2xfbmV4dFdlaWdodCgpCisgICAgICAgIHJhbmdlc1swXS5tX2NvdW50XyA9IG1heEJ5dGU7CisgICAgCisgICAgICAgIHJldHVybiByYW5nZUNvdW50OworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBVcGRhdGVzIHRoZSByYW5nZSBsZW5ndGgKKyAgICAgKiBAcGFyYW0gcmFuZ2Ugd2VpZ2h0IHJhbmdlIGFycmF5CisgICAgICogQHBhcmFtIG9mZnNldCB0byB3ZWlnaHQgcmFuZ2UgYXJyYXkKKyAgICAgKiBAcGFyYW0gbWF4Qnl0ZQorICAgICAqIEBwYXJhbSBjb3VudEJ5dGVzCisgICAgICogQHJldHVybiBuZXcgbGVuZ3RoCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IGxlbmd0aGVuUmFuZ2UoV2VpZ2h0UmFuZ2UgcmFuZ2VbXSwgaW50IG9mZnNldCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1heEJ5dGUsIGludCBjb3VudEJ5dGVzKSAKKyAgICB7CisgICAgICAgIGludCBsZW5ndGggPSByYW5nZVtvZmZzZXRdLm1fbGVuZ3RoMl8gKyAxOworICAgICAgICByYW5nZVtvZmZzZXRdLm1fc3RhcnRfID0gc2V0V2VpZ2h0VHJhaWwocmFuZ2Vbb2Zmc2V0XS5tX3N0YXJ0XywgbGVuZ3RoLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yLkJZVEVfRklSU1RfVEFJTE9SRURfKTsKKyAgICAgICAgcmFuZ2Vbb2Zmc2V0XS5tX2VuZF8gPSBzZXRXZWlnaHRUcmFpbChyYW5nZVtvZmZzZXRdLm1fZW5kXywgbGVuZ3RoLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhCeXRlKTsKKyAgICAgICAgcmFuZ2Vbb2Zmc2V0XS5tX2NvdW50Ml8gKj0gY291bnRCeXRlczsKKyAgICAgICAgcmFuZ2Vbb2Zmc2V0XS5tX2xlbmd0aDJfID0gbGVuZ3RoOworICAgICAgICByZXR1cm4gbGVuZ3RoOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSB3ZWlnaHQgCisgICAgICogQHBhcmFtIHdlaWdodAorICAgICAqIEBwYXJhbSBsZW5ndGgKKyAgICAgKiBAcGFyYW0gdHJhaWwKKyAgICAgKiBAcmV0dXJuIG5ldyB3ZWlnaHQKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgc2V0V2VpZ2h0VHJhaWwoaW50IHdlaWdodCwgaW50IGxlbmd0aCwgaW50IHRyYWlsKSAKKyAgICB7CisgICAgICAgIGxlbmd0aCA9ICg0IC0gbGVuZ3RoKSA8PCAzOworICAgICAgICByZXR1cm4gKHdlaWdodCAmICgweGZmZmZmZjAwIDw8IGxlbmd0aCkpIHwgKHRyYWlsIDw8IGxlbmd0aCk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIHRha2UgdHdvIENFIHdlaWdodHMgYW5kIGNhbGN1bGF0ZSB0aGUKKyAgICAgKiBwb3NzaWJsZSByYW5nZXMgb2Ygd2VpZ2h0cyBiZXR3ZWVuIHRoZSB0d28gbGltaXRzLCBleGNsdWRpbmcgdGhlbQorICAgICAqIGZvciB3ZWlnaHRzIHdpdGggdXAgdG8gNCBieXRlcyB0aGVyZSBhcmUgdXAgdG8gMio0LTE9NyByYW5nZXMKKyAgICAgKiBAcGFyYW0gbG93ZXJsaW1pdAorICAgICAqIEBwYXJhbSB1cHBlcmxpbWl0CisgICAgICogQHBhcmFtIG1heEJ5dGUKKyAgICAgKiBAcGFyYW0gY291bnRCeXRlcworICAgICAqIEBwYXJhbSByYW5nZXMKKyAgICAgKiBAcmV0dXJuIHdlaWdodCByYW5nZXMKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBnZXRXZWlnaHRSYW5nZXMoaW50IGxvd2VyTGltaXQsIGludCB1cHBlckxpbWl0LCBpbnQgbWF4Qnl0ZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb3VudEJ5dGVzLCBXZWlnaHRSYW5nZSByYW5nZXNbXSkgCisgICAgeworICAgICAgICAvLyBhc3N1bWUgdGhhdCBib3RoIGxvd2VyTGltaXQgJiB1cHBlckxpbWl0IGFyZSBub3QgMCAKKyAgICAgICAgLy8gZ2V0IHRoZSBsZW5ndGhzIG9mIHRoZSBsaW1pdHMgCisgICAgICAgIGludCBsb3dlckxlbmd0aCA9IGxlbmd0aE9mV2VpZ2h0KGxvd2VyTGltaXQpOworICAgICAgICBpbnQgdXBwZXJMZW5ndGggPSBsZW5ndGhPZldlaWdodCh1cHBlckxpbWl0KTsKKyAgICAgICAgaWYgKFV0aWxpdHkuY29tcGFyZVVuc2lnbmVkKGxvd2VyTGltaXQsIHVwcGVyTGltaXQpID49IDApIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIC8vIGNoZWNrIHRoYXQgbmVpdGhlciBpcyBhIHByZWZpeCBvZiB0aGUgb3RoZXIKKyAgICAgICAgaWYgKGxvd2VyTGVuZ3RoIDwgdXBwZXJMZW5ndGgpIHsKKyAgICAgICAgICAgIGlmIChsb3dlckxpbWl0ID09IHRydW5jYXRlV2VpZ2h0KHVwcGVyTGltaXQsIGxvd2VyTGVuZ3RoKSkgeworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIC8vIGlmIHRoZSB1cHBlciBsaW1pdCBpcyBhIHByZWZpeCBvZiB0aGUgbG93ZXIgbGltaXQgdGhlbiB0aGUgZWFybGllciAKKyAgICAgICAgLy8gdGVzdCBsb3dlckxpbWl0ID49IHVwcGVyTGltaXQgaGFzIGNhdWdodCBpdAorICAgICAgICAvLyByZXNldCBsb2NhbCB2YXJpYWJsZXMKKyAgICAgICAgLy8gV2l0aCB0aGUgbGltaXQgbGVuZ3RocyBvZiAxLi40LCB0aGVyZSBhcmUgdXAgdG8gNyByYW5nZXMgZm9yIAorICAgICAgICAvLyBhbGxvY2F0aW9uOgorICAgICAgICAvLyByYW5nZSAgICAgbWluaW11bSBsZW5ndGgKKyAgICAgICAgLy8gbG93ZXJbNF0gIDQKKyAgICAgICAgLy8gbG93ZXJbM10gIDMKKyAgICAgICAgLy8gbG93ZXJbMl0gIDIKKyAgICAgICAgLy8gbWlkZGxlICAgIDEKKyAgICAgICAgLy8gdXBwZXJbMl0gIDIKKyAgICAgICAgLy8gdXBwZXJbM10gIDMKKyAgICAgICAgLy8gdXBwZXJbNF0gIDQKKyAgICAgICAgLy8gV2UgYXJlIG5vdyBnb2luZyB0byBjYWxjdWxhdGUgdXAgdG8gNyByYW5nZXMuCisgICAgICAgIC8vIFNvbWUgb2YgdGhlbSB3aWxsIHR5cGljYWxseSBvdmVybGFwLCBzbyB3ZSB3aWxsIHRoZW4gaGF2ZSB0byBtZXJnZSAKKyAgICAgICAgLy8gYW5kIGVsaW1pbmF0ZSByYW5nZXMuCisgICAgICAgIGludCB3ZWlnaHQgPSBsb3dlckxpbWl0OworICAgICAgICBmb3IgKGludCBsZW5ndGggPSBsb3dlckxlbmd0aDsgbGVuZ3RoID49IDI7IC0tIGxlbmd0aCkgeworICAgICAgICAgICAgbV91dGlsTG93ZXJXZWlnaHRSYW5nZV9bbGVuZ3RoXS5jbGVhcigpOworICAgICAgICAgICAgaW50IHRyYWlsID0gZ2V0V2VpZ2h0Qnl0ZSh3ZWlnaHQsIGxlbmd0aCk7CisgICAgICAgICAgICBpZiAodHJhaWwgPCBtYXhCeXRlKSB7CisgICAgICAgICAgICAgICAgbV91dGlsTG93ZXJXZWlnaHRSYW5nZV9bbGVuZ3RoXS5tX3N0YXJ0XyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGluY1dlaWdodFRyYWlsKHdlaWdodCwgbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBtX3V0aWxMb3dlcldlaWdodFJhbmdlX1tsZW5ndGhdLm1fZW5kXyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IHNldFdlaWdodFRyYWlsKHdlaWdodCwgbGVuZ3RoLCBtYXhCeXRlKTsKKyAgICAgICAgICAgICAgICBtX3V0aWxMb3dlcldlaWdodFJhbmdlX1tsZW5ndGhdLm1fbGVuZ3RoXyA9IGxlbmd0aDsKKyAgICAgICAgICAgICAgICBtX3V0aWxMb3dlcldlaWdodFJhbmdlX1tsZW5ndGhdLm1fY291bnRfID0gbWF4Qnl0ZSAtIHRyYWlsOworICAgICAgICAgICAgfQorICAgICAgICAgICAgd2VpZ2h0ID0gdHJ1bmNhdGVXZWlnaHQod2VpZ2h0LCBsZW5ndGggLSAxKTsKKyAgICAgICAgfQorICAgICAgICBtX3V0aWxXZWlnaHRSYW5nZV8uY2xlYXIoKTsKKyAgICAgICAgbV91dGlsV2VpZ2h0UmFuZ2VfLm1fc3RhcnRfID0gaW5jV2VpZ2h0VHJhaWwod2VpZ2h0LCAxKTsKKyAgICAKKyAgICAgICAgd2VpZ2h0ID0gdXBwZXJMaW1pdDsKKyAgICAgICAgLy8gWzBdIGFuZCBbMV0gYXJlIG5vdCB1c2VkIC0gdGhpcyBzaW1wbGlmaWVzIGluZGV4aW5nLCAKKyAgICAgICAgLy8gbV91dGlsVXBwZXJXZWlnaHRSYW5nZV8KKyAgICAgICAgCisgICAgICAgIGZvciAoaW50IGxlbmd0aCA9IHVwcGVyTGVuZ3RoOyBsZW5ndGggPj0gMjsgbGVuZ3RoIC0tKSB7CisgICAgICAgICAgICBpbnQgdHJhaWwgPSBnZXRXZWlnaHRCeXRlKHdlaWdodCwgbGVuZ3RoKTsKKyAgICAgICAgICAgIGlmICh0cmFpbCA+IFJ1bGVCYXNlZENvbGxhdG9yLkJZVEVfRklSU1RfVEFJTE9SRURfKSB7CisgICAgICAgICAgICAgICAgbV91dGlsVXBwZXJXZWlnaHRSYW5nZV9bbGVuZ3RoXS5tX3N0YXJ0XyAKKyAgICAgICAgICAgICAgICAgICAgICA9IHNldFdlaWdodFRyYWlsKHdlaWdodCwgbGVuZ3RoLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yLkJZVEVfRklSU1RfVEFJTE9SRURfKTsKKyAgICAgICAgICAgICAgICBtX3V0aWxVcHBlcldlaWdodFJhbmdlX1tsZW5ndGhdLm1fZW5kXyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGRlY1dlaWdodFRyYWlsKHdlaWdodCwgbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBtX3V0aWxVcHBlcldlaWdodFJhbmdlX1tsZW5ndGhdLm1fbGVuZ3RoXyA9IGxlbmd0aDsKKyAgICAgICAgICAgICAgICBtX3V0aWxVcHBlcldlaWdodFJhbmdlX1tsZW5ndGhdLm1fY291bnRfID0gdHJhaWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFJ1bGVCYXNlZENvbGxhdG9yLkJZVEVfRklSU1RfVEFJTE9SRURfOworICAgICAgICAgICAgfQorICAgICAgICAgICAgd2VpZ2h0ID0gdHJ1bmNhdGVXZWlnaHQod2VpZ2h0LCBsZW5ndGggLSAxKTsKKyAgICAgICAgfQorICAgICAgICBtX3V0aWxXZWlnaHRSYW5nZV8ubV9lbmRfID0gZGVjV2VpZ2h0VHJhaWwod2VpZ2h0LCAxKTsKKyAgICAKKyAgICAgICAgLy8gc2V0IHRoZSBtaWRkbGUgcmFuZ2UKKyAgICAgICAgbV91dGlsV2VpZ2h0UmFuZ2VfLm1fbGVuZ3RoXyA9IDE7CisgICAgICAgIGlmIChtX3V0aWxXZWlnaHRSYW5nZV8ubV9lbmRfID49IG1fdXRpbFdlaWdodFJhbmdlXy5tX3N0YXJ0XykgeworICAgICAgICAgICAgbV91dGlsV2VpZ2h0UmFuZ2VfLm1fY291bnRfIAorICAgICAgICAgICAgICAgICAgID0gKChtX3V0aWxXZWlnaHRSYW5nZV8ubV9lbmRfIC0gbV91dGlsV2VpZ2h0UmFuZ2VfLm1fc3RhcnRfKSAKKyAgICAgICAgICAgICAgICAgICAgICA+PiAyNCkgKyAxOworICAgICAgICB9IAorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIGVsaW1pbmF0ZSBvdmVybGFwcworICAgICAgICAgICAgLy8gcmVtb3ZlIHRoZSBtaWRkbGUgcmFuZ2UKKyAgICAgICAgICAgIG1fdXRpbFdlaWdodFJhbmdlXy5tX2NvdW50XyA9IDA7CisgICAgICAgICAgICAvLyByZWR1Y2Ugb3IgcmVtb3ZlIHRoZSBsb3dlciByYW5nZXMgdGhhdCBnbyBiZXlvbmQgdXBwZXJMaW1pdAorICAgICAgICAgICAgZm9yIChpbnQgbGVuZ3RoID0gNDsgbGVuZ3RoID49IDI7IC0tIGxlbmd0aCkgeworICAgICAgICAgICAgICAgIGlmIChtX3V0aWxMb3dlcldlaWdodFJhbmdlX1tsZW5ndGhdLm1fY291bnRfID4gMCAKKyAgICAgICAgICAgICAgICAgICAgJiYgbV91dGlsVXBwZXJXZWlnaHRSYW5nZV9bbGVuZ3RoXS5tX2NvdW50XyA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0ID0gbV91dGlsVXBwZXJXZWlnaHRSYW5nZV9bbGVuZ3RoXS5tX3N0YXJ0XzsKKyAgICAgICAgICAgICAgICAgICAgaW50IGVuZCA9IG1fdXRpbExvd2VyV2VpZ2h0UmFuZ2VfW2xlbmd0aF0ubV9lbmRfOworICAgICAgICAgICAgICAgICAgICBpZiAoZW5kID49IHN0YXJ0IHx8IGluY1dlaWdodChlbmQsIGxlbmd0aCwgbWF4Qnl0ZSkgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT0gc3RhcnQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvd2VyIGFuZCB1cHBlciByYW5nZXMgY29sbGlkZSBvciBhcmUgZGlyZWN0bHkgCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBhZGphY2VudDogbWVyZ2UgdGhlc2UgdHdvIGFuZCByZW1vdmUgYWxsIHNob3J0ZXIgCisgICAgICAgICAgICAgICAgICAgICAgICAvLyByYW5nZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ID0gbV91dGlsTG93ZXJXZWlnaHRSYW5nZV9bbGVuZ3RoXS5tX3N0YXJ0XzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuZCA9IG1fdXRpbExvd2VyV2VpZ2h0UmFuZ2VfW2xlbmd0aF0ubV9lbmRfIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbV91dGlsVXBwZXJXZWlnaHRSYW5nZV9bbGVuZ3RoXS5tX2VuZF87CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBtZXJnaW5nIGRpcmVjdGx5IGFkamFjZW50IHJhbmdlcyBuZWVkcyB0byBzdWJ0cmFjdCAKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSAwLzEgZ2FwcyBpbiBiZXR3ZWVuOworICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXQgbWF5IHJlc3VsdCBpbiBhIHJhbmdlIHdpdGggY291bnQ+Y291bnRCeXRlcworICAgICAgICAgICAgICAgICAgICAgICAgbV91dGlsTG93ZXJXZWlnaHRSYW5nZV9bbGVuZ3RoXS5tX2NvdW50XyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGdldFdlaWdodEJ5dGUoZW5kLCBsZW5ndGgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBnZXRXZWlnaHRCeXRlKHN0YXJ0LCBsZW5ndGgpICsgMSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGNvdW50Qnl0ZXMgKiAoZ2V0V2VpZ2h0Qnl0ZShlbmQsIGxlbmd0aCAtIDEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gZ2V0V2VpZ2h0Qnl0ZShzdGFydCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGggLSAxKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3V0aWxVcHBlcldlaWdodFJhbmdlX1tsZW5ndGhdLm1fY291bnRfID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgtLSBsZW5ndGggPj0gMikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXRpbExvd2VyV2VpZ2h0UmFuZ2VfW2xlbmd0aF0ubV9jb3VudF8gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbV91dGlsVXBwZXJXZWlnaHRSYW5nZV9bbGVuZ3RoXS5tX2NvdW50XyA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIAorICAgICAgICAvLyBjb3B5IHRoZSByYW5nZXMsIHNob3J0ZXN0IGZpcnN0LCBpbnRvIHRoZSByZXN1bHQgYXJyYXkgCisgICAgICAgIGludCByYW5nZUNvdW50ID0gMDsKKyAgICAgICAgaWYgKG1fdXRpbFdlaWdodFJhbmdlXy5tX2NvdW50XyA+IDApIHsKKyAgICAgICAgICAgIHJhbmdlc1swXSA9IG5ldyBXZWlnaHRSYW5nZShtX3V0aWxXZWlnaHRSYW5nZV8pOworICAgICAgICAgICAgcmFuZ2VDb3VudCA9IDE7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpbnQgbGVuZ3RoID0gMjsgbGVuZ3RoIDw9IDQ7ICsrIGxlbmd0aCkgeworICAgICAgICAgICAgLy8gY29weSB1cHBlciBmaXJzdCBzbyB0aGF0IGxhdGVyIHRoZSBtaWRkbGUgcmFuZ2UgaXMgbW9yZSBsaWtlbHkgCisgICAgICAgICAgICAvLyB0aGUgZmlyc3Qgb25lIHRvIHVzZQorICAgICAgICAgICAgaWYgKG1fdXRpbFVwcGVyV2VpZ2h0UmFuZ2VfW2xlbmd0aF0ubV9jb3VudF8gPiAwKSB7CisgICAgICAgICAgICAgICAgcmFuZ2VzW3JhbmdlQ291bnRdIAorICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgV2VpZ2h0UmFuZ2UobV91dGlsVXBwZXJXZWlnaHRSYW5nZV9bbGVuZ3RoXSk7CisgICAgICAgICAgICAgICAgKysgcmFuZ2VDb3VudDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtX3V0aWxMb3dlcldlaWdodFJhbmdlX1tsZW5ndGhdLm1fY291bnRfID4gMCkgeworICAgICAgICAgICAgICAgIHJhbmdlc1tyYW5nZUNvdW50XSAKKyAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFdlaWdodFJhbmdlKG1fdXRpbExvd2VyV2VpZ2h0UmFuZ2VfW2xlbmd0aF0pOworICAgICAgICAgICAgICAgICsrIHJhbmdlQ291bnQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJhbmdlQ291bnQ7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFRydW5jYXRlcyB0aGUgd2VpZ2h0IHdpdGggbGVuZ3RoCisgICAgICogQHBhcmFtIHdlaWdodAorICAgICAqIEBwYXJhbSBsZW5ndGgKKyAgICAgKiBAcmV0dXJuIHRydW5jYXRlZCB3ZWlnaHQKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgdHJ1bmNhdGVXZWlnaHQoaW50IHdlaWdodCwgaW50IGxlbmd0aCkgCisgICAgeworICAgICAgICByZXR1cm4gd2VpZ2h0ICYgKDB4ZmZmZmZmZmYgPDwgKCg0IC0gbGVuZ3RoKSA8PCAzKSk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIExlbmd0aCBvZiB0aGUgd2VpZ2h0CisgICAgICogQHBhcmFtIHdlaWdodAorICAgICAqIEByZXR1cm4gbGVuZ3RoIG9mIHRoZSB3ZWlnaHQKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgbGVuZ3RoT2ZXZWlnaHQoaW50IHdlaWdodCkgCisgICAgeworICAgICAgICBpZiAoKHdlaWdodCAmIDB4ZmZmZmZmKSA9PSAwKSB7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfSAKKyAgICAgICAgZWxzZSBpZiAoKHdlaWdodCAmIDB4ZmZmZikgPT0gMCkgeworICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgIH0gCisgICAgICAgIGVsc2UgaWYgKCh3ZWlnaHQgJiAweGZmKSA9PSAwKSB7CisgICAgICAgICAgICByZXR1cm4gMzsKKyAgICAgICAgfSAKKyAgICAgICAgcmV0dXJuIDQ7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEluY3JlbWVudCB0aGUgd2VpZ2h0IHRyYWlsCisgICAgICogQHBhcmFtIHdlaWdodCAKKyAgICAgKiBAcGFyYW0gbGVuZ3RoCisgICAgICogQHJldHVybiBuZXcgd2VpZ2h0CisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IGluY1dlaWdodFRyYWlsKGludCB3ZWlnaHQsIGludCBsZW5ndGgpIAorICAgIHsKKyAgICAgICAgcmV0dXJuIHdlaWdodCArICgxIDw8ICgoNC1sZW5ndGgpIDw8IDMpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEZWNyZW1lbnQgdGhlIHdlaWdodCB0cmFpbAorICAgICAqIEBwYXJhbSB3ZWlnaHQgCisgICAgICogQHBhcmFtIGxlbmd0aAorICAgICAqIEByZXR1cm4gbmV3IHdlaWdodAorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGludCBkZWNXZWlnaHRUcmFpbChpbnQgd2VpZ2h0LCBpbnQgbGVuZ3RoKSAKKyAgICB7CisgICAgICAgIHJldHVybiB3ZWlnaHQgLSAoMSA8PCAoKDQgLSBsZW5ndGgpIDw8IDMpKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgY29kZXBvaW50IAorICAgICAqIEBwYXJhbSB0YWJsZSBjb250cmFjdGlvbiB0YWJsZQorICAgICAqIEBwYXJhbSBjb2RlUG9pbnQgY29kZSBwb2ludCB0byBsb29rIGZvcgorICAgICAqIEByZXR1cm4gdGhlIG9mZnNldCB0byB0aGUgY29kZSBwb2ludAorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGludCBmaW5kQ1AoQmFzaWNDb250cmFjdGlvblRhYmxlIHRibCwgY2hhciBjb2RlUG9pbnQpIAorICAgIHsKKyAgICAgICAgaW50IHBvc2l0aW9uID0gMDsKKyAgICAgICAgd2hpbGUgKGNvZGVQb2ludCA+IHRibC5tX2NvZGVQb2ludHNfLmNoYXJBdChwb3NpdGlvbikpIHsKKyAgICAgICAgICAgICBwb3NpdGlvbiArKzsKKyAgICAgICAgICAgICBpZiAocG9zaXRpb24gPiB0YmwubV9jb2RlUG9pbnRzXy5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChjb2RlUG9pbnQgPT0gdGJsLm1fY29kZVBvaW50c18uY2hhckF0KHBvc2l0aW9uKSkgeworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9IAorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEZpbmRzIGEgY29udHJhY3Rpb24gY2UKKyAgICAgKiBAcGFyYW0gdGFibGUKKyAgICAgKiBAcGFyYW0gZWxlbWVudAorICAgICAqIEBwYXJhbSBjaAorICAgICAqIEByZXR1cm4gY2UKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBpbnQgZmluZENFKENvbnRyYWN0aW9uVGFibGUgdGFibGUsIGludCBlbGVtZW50LCBjaGFyIGNoKSAKKyAgICB7CisgICAgICAgIGlmICh0YWJsZSA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gQ0VfTk9UX0ZPVU5EXzsKKyAgICAgICAgfQorICAgICAgICBCYXNpY0NvbnRyYWN0aW9uVGFibGUgdGJsID0gZ2V0QmFzaWNDb250cmFjdGlvblRhYmxlKHRhYmxlLCBlbGVtZW50KTsKKyAgICAgICAgaWYgKHRibCA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gQ0VfTk9UX0ZPVU5EXzsKKyAgICAgICAgfQorICAgICAgICBpbnQgcG9zaXRpb24gPSBmaW5kQ1AodGJsLCBjaCk7CisgICAgICAgIGlmIChwb3NpdGlvbiA+IHRibC5tX0NFc18uc2l6ZSgpIHx8IHBvc2l0aW9uIDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIENFX05PVF9GT1VORF87CisgICAgICAgIH0gCisgICAgICAgIHJldHVybiAoKEludGVnZXIpdGJsLm1fQ0VzXy5nZXQocG9zaXRpb24pKS5pbnRWYWx1ZSgpOworICAgIH0gICAgCisgICAgCisgICAgLyoqCisgICAgICogQ2hlY2tzIGlmIHRoZSBzdHJpbmcgaXMgdGFpbG9yZWQgaW4gdGhlIGNvbnRyYWN0aW9uCisgICAgICogQHBhcmFtIHRhYmxlIGNvbnRyYWN0aW9uIHRhYmxlCisgICAgICogQHBhcmFtIGVsZW1lbnQgCisgICAgICogQHBhcmFtIGFycmF5IGNoYXJhY3RlciBhcnJheSB0byBjaGVjaworICAgICAqIEBwYXJhbSBvZmZzZXQgYXJyYXkgb2Zmc2V0CisgICAgICogQHJldHVybiB0cnVlIGlmIGl0IGlzIHRhaWxvcmVkCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBpc1RhaWxvcmVkKENvbnRyYWN0aW9uVGFibGUgdGFibGUsIGludCBlbGVtZW50LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBhcnJheVtdLCBpbnQgb2Zmc2V0KSAKKyAgICB7CisgICAgICAgIHdoaWxlIChhcnJheVtvZmZzZXRdICE9IDApIHsKKyAgICAgICAgICAgIGVsZW1lbnQgPSBmaW5kQ0UodGFibGUsIGVsZW1lbnQsIGFycmF5W29mZnNldF0pOworICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gQ0VfTk9UX0ZPVU5EXykgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghaXNDb250cmFjdGlvblRhYmxlRWxlbWVudChlbGVtZW50KSkgeworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgb2Zmc2V0ICsrOworICAgICAgICB9CisgICAgICAgIGlmIChnZXRDRSh0YWJsZSwgZWxlbWVudCwgMCkgIT0gQ0VfTk9UX0ZPVU5EXykgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0gCisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBBc3NlbWJsZSBSdWxlQmFzZWRDb2xsYXRvcgorICAgICAqIEBwYXJhbSB0IGJ1aWxkIHRhYmxlCisgICAgICogQHBhcmFtIGNvbGxhdG9yIHRvIHVwZGF0ZQorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBhc3NlbWJsZVRhYmxlKEJ1aWxkVGFibGUgdCwgUnVsZUJhc2VkQ29sbGF0b3IgY29sbGF0b3IpIAorICAgIHsKKyAgICAgICAgSW50VHJpZUJ1aWxkZXIgbWFwcGluZyA9IHQubV9tYXBwaW5nXzsKKyAgICAgICAgVmVjdG9yIGV4cGFuc2lvbnMgPSB0Lm1fZXhwYW5zaW9uc187CisgICAgICAgIENvbnRyYWN0aW9uVGFibGUgY29udHJhY3Rpb25zID0gdC5tX2NvbnRyYWN0aW9uc187CisgICAgICAgIE1heEV4cGFuc2lvblRhYmxlIG1heGV4cGFuc2lvbiA9IHQubV9tYXhFeHBhbnNpb25zXzsKKyAgICAgICAgCisgICAgICAgIC8vIGNvbnRyYWN0aW9uIG9mZnNldCBoYXMgdG8gYmUgaW4gc2luY2Ugd2UgYXJlIGJ1aWxkaW5nIG9uIHRoZSAKKyAgICAgICAgLy8gVUNBIGNvbnRyYWN0aW9ucyAKKyAgICAgICAgLy8gaW50IGJlZm9yZUNvbnRyYWN0aW9ucyA9IChIRUFERVJfU0laRV8gCisgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICsgcGFkZGVkc2l6ZShleHBhbnNpb25zLnNpemUoKSA8PCAyKSkgPj4+IDE7CisgICAgICAgIGNvbGxhdG9yLm1fY29udHJhY3Rpb25PZmZzZXRfID0gMDsKKyAgICAgICAgaW50IGNvbnRyYWN0aW9uc1NpemUgPSBjb25zdHJ1Y3RUYWJsZShjb250cmFjdGlvbnMpOworICAgICAgICAKKyAgICAgICAgLy8gdGhlIGZvbGxvd2luZyBvcGVyYXRpb24gZGVwZW5kcyBvbiB0aGUgdHJpZSBkYXRhLiBUaGVyZWZvcmUsIHdlIGhhdmUgCisgICAgICAgIC8vIHRvIGRvIGl0IGJlZm9yZSB0aGUgdHJpZSBpcyBjb21wYWN0ZWQgCisgICAgICAgIC8vIHNldHMgamFtbyBleHBhbnNpb25zCisgICAgICAgIGdldE1heEV4cGFuc2lvbkphbW8obWFwcGluZywgbWF4ZXhwYW5zaW9uLCB0Lm1fbWF4SmFtb0V4cGFuc2lvbnNfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxhdG9yLm1faXNKYW1vU3BlY2lhbF8pOworICAgICAgICAKKyAgICAgICAgLy8gVE9ETzogTEFUSU4xIGFycmF5IGlzIG5vdyBpbiB0aGUgdXRyaWUgLSBpdCBzaG91bGQgYmUgcmVtb3ZlZCBmcm9tIAorICAgICAgICAvLyB0aGUgY2FsY3VsYXRpb24KKyAgICAgICAgc2V0QXR0cmlidXRlcyhjb2xsYXRvciwgdC5tX29wdGlvbnNfKTsKKyAgICAgICAgLy8gY29weSBleHBhbnNpb25zCisgICAgICAgIGludCBzaXplID0gZXhwYW5zaW9ucy5zaXplKCk7CisgICAgICAgIGNvbGxhdG9yLm1fZXhwYW5zaW9uXyA9IG5ldyBpbnRbc2l6ZV07CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSArKykgeworICAgICAgICAgICAgY29sbGF0b3IubV9leHBhbnNpb25fW2ldID0gKChJbnRlZ2VyKWV4cGFuc2lvbnMuZ2V0KGkpKS5pbnRWYWx1ZSgpOworICAgICAgICB9CisgICAgICAgIC8vIGNvbnRyYWN0aW9ucyBibG9jayAKKyAgICAgICAgaWYgKGNvbnRyYWN0aW9uc1NpemUgIT0gMCkgeworICAgICAgICAgICAgLy8gY29weSBjb250cmFjdGlvbiBpbmRleCAKKyAgICAgICAgICAgIGNvbGxhdG9yLm1fY29udHJhY3Rpb25JbmRleF8gPSBuZXcgY2hhcltjb250cmFjdGlvbnNTaXplXTsKKyAgICAgICAgICAgIGNvbnRyYWN0aW9ucy5tX2NvZGVQb2ludHNfLmdldENoYXJzKDAsIGNvbnRyYWN0aW9uc1NpemUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbGF0b3IubV9jb250cmFjdGlvbkluZGV4XywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKKyAgICAgICAgICAgIC8vIGNvcHkgY29udHJhY3Rpb24gY29sbGF0aW9uIGVsZW1lbnRzCisgICAgICAgICAgICBjb2xsYXRvci5tX2NvbnRyYWN0aW9uQ0VfID0gbmV3IGludFtjb250cmFjdGlvbnNTaXplXTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY29udHJhY3Rpb25zU2l6ZTsgaSArKykgeworICAgICAgICAgICAgICAgIGNvbGxhdG9yLm1fY29udHJhY3Rpb25DRV9baV0gPSAoKEludGVnZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJhY3Rpb25zLm1fQ0VzXy5nZXQoaSkpLmludFZhbHVlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLy8gY29weSBtYXBwaW5nIHRhYmxlCisgICAgICAgIGNvbGxhdG9yLm1fdHJpZV8gPSBtYXBwaW5nLnNlcmlhbGl6ZSh0LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdWxlQmFzZWRDb2xsYXRvci5EYXRhTWFuaXB1bGF0ZS5nZXRJbnN0YW5jZSgpKTsKKyAgICAgICAgLy8gY29weSBtYXggZXhwYW5zaW9uIHRhYmxlCisgICAgICAgIC8vIG5vdCBjb3B5aW5nIHRoZSBmaXJzdCBlbGVtZW50IHdoaWNoIGlzIGEgZHVtbXkKKyAgICAgICAgLy8gdG8gYmUgaW4gc3luY2ggd2l0aCBpY3U0YydzIGJ1aWxkZXIsIHdlIGNvbnRpbnVlIHRvIHVzZSB0aGUgCisgICAgICAgIC8vIGV4cGFuc2lvbiBvZmZzZXQKKyAgICAgICAgLy8gb21pdHRpbmcgZXhwYW5zaW9uIG9mZnNldCBpbiBidWlsZGVyCisgICAgICAgIGNvbGxhdG9yLm1fZXhwYW5zaW9uT2Zmc2V0XyA9IDA7IAorICAgICAgICBzaXplID0gbWF4ZXhwYW5zaW9uLm1fZW5kRXhwYW5zaW9uQ0VfLnNpemUoKTsKKyAgICAgICAgY29sbGF0b3IubV9leHBhbnNpb25FbmRDRV8gPSBuZXcgaW50W3NpemUgLSAxXTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBzaXplOyBpICsrKSB7CisgICAgICAgICAgICBjb2xsYXRvci5tX2V4cGFuc2lvbkVuZENFX1tpIC0gMV0gPSAoKEludGVnZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGV4cGFuc2lvbi5tX2VuZEV4cGFuc2lvbkNFXy5nZXQoaSkpLmludFZhbHVlKCk7CisgICAgICAgIH0KKyAgICAgICAgY29sbGF0b3IubV9leHBhbnNpb25FbmRDRU1heFNpemVfID0gbmV3IGJ5dGVbc2l6ZSAtIDFdOworICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IHNpemU7IGkgKyspIHsKKyAgICAgICAgICAgIGNvbGxhdG9yLm1fZXhwYW5zaW9uRW5kQ0VNYXhTaXplX1tpIC0gMV0gCisgICAgICAgICAgICAgICAgID0gKChCeXRlKW1heGV4cGFuc2lvbi5tX2V4cGFuc2lvbkNFU2l6ZV8uZ2V0KGkpKS5ieXRlVmFsdWUoKTsKKyAgICAgICAgfQorICAgICAgICAvLyBVbnNhZmUgY2hhcnMgdGFibGUuICBGaW5pc2ggaXQgb2ZmLCB0aGVuIGNvcHkgaXQuCisgICAgICAgIHVuc2FmZUNQQWRkQ0NOWih0KTsKKyAgICAgICAgLy8gT3IgaW4gdW5zYWZlYml0cyBmcm9tIFVDQSwgbWFraW5nIGEgY29tYmluZWQgdGFibGUuCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgVU5TQUZFQ1BfVEFCTEVfU0laRV87IGkgKyspIHsgICAgCisgICAgICAgICAgICAgdC5tX3Vuc2FmZUNQX1tpXSB8PSBSdWxlQmFzZWRDb2xsYXRvci5VQ0FfLm1fdW5zYWZlX1tpXTsKKyAgICAgICAgfQorICAgICAgICBjb2xsYXRvci5tX3Vuc2FmZV8gPSB0Lm1fdW5zYWZlQ1BfOworICAgIAorICAgICAgICAvLyBGaW5pc2ggYnVpbGRpbmcgQ29udHJhY3Rpb24gRW5kaW5nIGNoYXJzIGhhc2ggdGFibGUgYW5kIHRoZW4gY29weSBpdCAKKyAgICAgICAgLy8gb3V0LgorICAgICAgICAvLyBPciBpbiB1bnNhZmViaXRzIGZyb20gVUNBLCBtYWtpbmcgYSBjb21iaW5lZCB0YWJsZQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IFVOU0FGRUNQX1RBQkxFX1NJWkVfOyBpICsrKSB7ICAgIAorICAgICAgICAgICAgIHQubV9jb250ckVuZENQX1tpXSB8PSBSdWxlQmFzZWRDb2xsYXRvci5VQ0FfLm1fY29udHJhY3Rpb25FbmRfW2ldOworICAgICAgICB9CisgICAgICAgIGNvbGxhdG9yLm1fY29udHJhY3Rpb25FbmRfID0gdC5tX2NvbnRyRW5kQ1BfOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoaXMgY29sbGF0b3IgdG8gdXNlIHRoZSBhbGwgb3B0aW9ucyBhbmQgdGFibGVzIGluIFVDQS4gCisgICAgICogQHBhcmFtIGNvbGxhdG9yIHdoaWNoIGF0dHJpYnV0ZSBpcyB0byBiZSBzZXQgCisgICAgICogQHBhcmFtIG9wdGlvbiB0byBzZXQgd2l0aAorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIHZvaWQgc2V0QXR0cmlidXRlcyhSdWxlQmFzZWRDb2xsYXRvciBjb2xsYXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxhdGlvblJ1bGVQYXJzZXIuT3B0aW9uU2V0IG9wdGlvbikKKyAgICB7CisgICAgICAgIGNvbGxhdG9yLmxhdGluT25lRmFpbGVkXyA9IHRydWU7CisgICAgICAgIGNvbGxhdG9yLm1fY2FzZUZpcnN0XyA9IG9wdGlvbi5tX2Nhc2VGaXJzdF87CisgICAgICAgIGNvbGxhdG9yLnNldERlY29tcG9zaXRpb24ob3B0aW9uLm1fZGVjb21wb3NpdGlvbl8pOworICAgICAgICBjb2xsYXRvci5zZXRBbHRlcm5hdGVIYW5kbGluZ1NoaWZ0ZWQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi5tX2lzQWx0ZXJuYXRlSGFuZGxpbmdTaGlmdGVkXyk7CisgICAgICAgIGNvbGxhdG9yLnNldENhc2VMZXZlbChvcHRpb24ubV9pc0Nhc2VMZXZlbF8pOworICAgICAgICBjb2xsYXRvci5zZXRGcmVuY2hDb2xsYXRpb24ob3B0aW9uLm1faXNGcmVuY2hDb2xsYXRpb25fKTsKKyAgICAgICAgY29sbGF0b3IubV9pc0hpcmFnYW5hNF8gPSBvcHRpb24ubV9pc0hpcmFnYW5hNF87CisgICAgICAgIGNvbGxhdG9yLnNldFN0cmVuZ3RoKG9wdGlvbi5tX3N0cmVuZ3RoXyk7CisgICAgICAgIGNvbGxhdG9yLm1fdmFyaWFibGVUb3BWYWx1ZV8gPSBvcHRpb24ubV92YXJpYWJsZVRvcFZhbHVlXzsgICAgCisgICAgICAgIGNvbGxhdG9yLmxhdGluT25lRmFpbGVkXyA9IGZhbHNlOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RpbmcgdGhlIGNvbnRyYWN0aW9uIHRhYmxlCisgICAgICogQHBhcmFtIHRhYmxlIGNvbnRyYWN0aW9uIHRhYmxlCisgICAgICogQHJldHVybiAKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBjb25zdHJ1Y3RUYWJsZShDb250cmFjdGlvblRhYmxlIHRhYmxlKSAKKyAgICB7CisgICAgICAgIC8vIFNlZSBob3cgbXVjaCBtZW1vcnkgd2UgbmVlZCAKKyAgICAgICAgaW50IHRzaXplID0gdGFibGUubV9lbGVtZW50c18uc2l6ZSgpOworICAgICAgICBpZiAodHNpemUgPT0gMCkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgdGFibGUubV9vZmZzZXRzXy5jbGVhcigpOworICAgICAgICBpbnQgcG9zaXRpb24gPSAwOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRzaXplOyBpICsrKSB7CisgICAgICAgICAgICB0YWJsZS5tX29mZnNldHNfLmFkZChuZXcgSW50ZWdlcihwb3NpdGlvbikpOworICAgICAgICAgICAgcG9zaXRpb24gKz0gKChCYXNpY0NvbnRyYWN0aW9uVGFibGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZS5tX2VsZW1lbnRzXy5nZXQoaSkpLm1fQ0VzXy5zaXplKCk7CisgICAgICAgIH0KKyAgICAgICAgdGFibGUubV9DRXNfLmNsZWFyKCk7CisgICAgICAgIHRhYmxlLm1fY29kZVBvaW50c18uZGVsZXRlKDAsIHRhYmxlLm1fY29kZVBvaW50c18ubGVuZ3RoKCkpOworICAgICAgICAvLyBOb3cgc3R1ZmYgdGhlIHRoaW5ncyBpbgorICAgICAgICBTdHJpbmdCdWZmZXIgY3BQb2ludGVyID0gdGFibGUubV9jb2RlUG9pbnRzXzsKKyAgICAgICAgVmVjdG9yIENFUG9pbnRlciA9IHRhYmxlLm1fQ0VzXzsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0c2l6ZTsgaSArKykgeworICAgICAgICAgICAgQmFzaWNDb250cmFjdGlvblRhYmxlIGJjdCA9IChCYXNpY0NvbnRyYWN0aW9uVGFibGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZS5tX2VsZW1lbnRzXy5nZXQoaSk7CisgICAgICAgICAgICBpbnQgc2l6ZSA9IGJjdC5tX0NFc18uc2l6ZSgpOworICAgICAgICAgICAgY2hhciBjY01heCA9IDA7CisgICAgICAgICAgICBjaGFyIGNjTWluID0gMjU1OworICAgICAgICAgICAgaW50IG9mZnNldCA9IENFUG9pbnRlci5zaXplKCk7CisgICAgICAgICAgICBDRVBvaW50ZXIuYWRkKGJjdC5tX0NFc18uZ2V0KDApKTsKKyAgICAgICAgICAgIGZvciAoaW50IGogPSAxOyBqIDwgc2l6ZTsgaiArKykgeworICAgICAgICAgICAgICAgIGNoYXIgY2ggPSBiY3QubV9jb2RlUG9pbnRzXy5jaGFyQXQoaik7CisgICAgICAgICAgICAgICAgY2hhciBjYyA9IChjaGFyKShVQ2hhcmFjdGVyLmdldENvbWJpbmluZ0NsYXNzKGNoKSAmIDB4RkYpOworICAgICAgICAgICAgICAgIGlmIChjYyA+IGNjTWF4KSB7CisgICAgICAgICAgICAgICAgICAgIGNjTWF4ID0gY2M7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChjYyA8IGNjTWluKSB7CisgICAgICAgICAgICAgICAgICAgIGNjTWluID0gY2M7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNwUG9pbnRlci5hcHBlbmQoY2gpOworICAgICAgICAgICAgICAgIENFUG9pbnRlci5hZGQoYmN0Lm1fQ0VzXy5nZXQoaikpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY3BQb2ludGVyLmluc2VydChvZmZzZXQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhcikoKChjY01pbiA9PSBjY01heCkgPyAxIDogMCA8PCA4KSB8IGNjTWF4KSk7CisgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHNpemU7IGogKyspIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNDb250cmFjdGlvblRhYmxlRWxlbWVudCgoKEludGVnZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENFUG9pbnRlci5nZXQob2Zmc2V0ICsgaikpLmludFZhbHVlKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGludCBjZSA9ICgoSW50ZWdlcilDRVBvaW50ZXIuZ2V0KG9mZnNldCArIGopKS5pbnRWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBDRVBvaW50ZXIuc2V0KG9mZnNldCArIGosIAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEludGVnZXIoY29uc3RydWN0U3BlY2lhbENFKGdldENFVGFnKGNlKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEludGVnZXIpdGFibGUubV9vZmZzZXRzXy5nZXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldENvbnRyYWN0aW9uT2Zmc2V0KGNlKSkpLmludFZhbHVlKCkpKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IDB4MTBGRkZGOyBpICsrKSB7CisgICAgICAgICAgICBpbnQgQ0UgPSB0YWJsZS5tX21hcHBpbmdfLmdldFZhbHVlKGkpOworICAgICAgICAgICAgaWYgKGlzQ29udHJhY3Rpb25UYWJsZUVsZW1lbnQoQ0UpKSB7CisgICAgICAgICAgICAgICAgQ0UgPSBjb25zdHJ1Y3RTcGVjaWFsQ0UoZ2V0Q0VUYWcoQ0UpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEludGVnZXIpdGFibGUubV9vZmZzZXRzXy5nZXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Q29udHJhY3Rpb25PZmZzZXQoQ0UpKSkuaW50VmFsdWUoKSk7CisgICAgICAgICAgICAgICAgdGFibGUubV9tYXBwaW5nXy5zZXRWYWx1ZShpLCBDRSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBHZXQgY29udHJhY3Rpb24gb2Zmc2V0CisgICAgICogQHBhcmFtIGNlIGNvbGxhdGlvbiBlbGVtZW50IAorICAgICAqIEByZXR1cm4gY29udHJhY3Rpb24gb2Zmc2V0CisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IGdldENvbnRyYWN0aW9uT2Zmc2V0KGludCBjZSkKKyAgICB7CisgICAgICAgIHJldHVybiBjZSAmIDB4RkZGRkZGOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBtYXhpbXVtIEphbW8gZXhwYW5zaW9uCisgICAgICogQHBhcmFtIHRhYmxlIHRyaWUgdGFibGUKKyAgICAgKiBAcGFyYW0gbWF4ZXhwYW5zaW9uIG1heGltdW0gZXhwYW5zaW9uIHRhYmxlCisgICAgICogQHBhcmFtIG1heGphbW9leHBhbnNpb24gbWF4aW11bSBqYW1vIGV4cGFuc2lvbiB0YWJsZQorICAgICAqIEBwYXJhbSBqYW1vc3BlY2lhbCBpcyBqYW1vIHNwZWNpYWw/CisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBnZXRNYXhFeHBhbnNpb25KYW1vKEludFRyaWVCdWlsZGVyIG1hcHBpbmcsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXhFeHBhbnNpb25UYWJsZSBtYXhleHBhbnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1heEphbW9FeHBhbnNpb25UYWJsZSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4amFtb2V4cGFuc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBqYW1vc3BlY2lhbCkKKyAgICB7CisgICAgICAgIGludCBWQkFTRSAgPSAweDExNjE7CisgICAgICAgIGludCBUQkFTRSAgPSAweDExQTg7CisgICAgICAgIGludCBWQ09VTlQgPSAyMTsKKyAgICAgICAgaW50IFRDT1VOVCA9IDI4OworICAgICAgICBpbnQgdiA9IFZCQVNFICsgVkNPVU5UIC0gMTsKKyAgICAgICAgaW50IHQgPSBUQkFTRSArIFRDT1VOVCAtIDE7CisgICAgICAgIAorICAgICAgICB3aGlsZSAodiA+PSBWQkFTRSkgeworICAgICAgICAgICAgaW50IGNlID0gbWFwcGluZy5nZXRWYWx1ZSh2KTsKKyAgICAgICAgICAgIGlmICgoY2UgJiBSdWxlQmFzZWRDb2xsYXRvci5DRV9TUEVDSUFMX0ZMQUdfKSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIT0gUnVsZUJhc2VkQ29sbGF0b3IuQ0VfU1BFQ0lBTF9GTEFHXykgeworICAgICAgICAgICAgICAgIHNldE1heEV4cGFuc2lvbihjZSwgKGJ5dGUpMiwgbWF4ZXhwYW5zaW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHYgLS07CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHdoaWxlICh0ID49IFRCQVNFKQorICAgICAgICB7CisgICAgICAgICAgICBpbnQgY2UgPSBtYXBwaW5nLmdldFZhbHVlKHQpOworICAgICAgICAgICAgaWYgKChjZSAmIFJ1bGVCYXNlZENvbGxhdG9yLkNFX1NQRUNJQUxfRkxBR18pIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPSBSdWxlQmFzZWRDb2xsYXRvci5DRV9TUEVDSUFMX0ZMQUdfKSB7CisgICAgICAgICAgICAgICAgc2V0TWF4RXhwYW5zaW9uKGNlLCAoYnl0ZSkzLCBtYXhleHBhbnNpb24pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdCAtLTsKKyAgICAgICAgfQorICAgICAgICAvLyBBY2NvcmRpbmcgdG8gdGhlIGRvY3MsIDk5JSBvZiB0aGUgdGltZSwgdGhlIEphbW8gd2lsbCBub3QgYmUgc3BlY2lhbCAKKyAgICAgICAgaWYgKGphbW9zcGVjaWFsKSB7CisgICAgICAgICAgICAvLyBnZXRzIHRoZSBtYXggZXhwYW5zaW9uIGluIGFsbCB1bmljb2RlIGNoYXJhY3RlcnMKKyAgICAgICAgICAgIGludCBjb3VudCA9IG1heGphbW9leHBhbnNpb24ubV9lbmRFeHBhbnNpb25DRV8uc2l6ZSgpOworICAgICAgICAgICAgYnl0ZSBtYXhUU2l6ZSA9IChieXRlKShtYXhqYW1vZXhwYW5zaW9uLm1fbWF4TFNpemVfICsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGphbW9leHBhbnNpb24ubV9tYXhWU2l6ZV8gKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhqYW1vZXhwYW5zaW9uLm1fbWF4VFNpemVfKTsKKyAgICAgICAgICAgIGJ5dGUgbWF4VlNpemUgPSAoYnl0ZSkobWF4amFtb2V4cGFuc2lvbi5tX21heExTaXplXyArIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhqYW1vZXhwYW5zaW9uLm1fbWF4VlNpemVfKTsKKyAgICAgICAgCisgICAgICAgICAgICB3aGlsZSAoY291bnQgPiAwKSB7CisgICAgICAgICAgICAgICAgY291bnQgLS07CisgICAgICAgICAgICAgICAgaWYgKCgoQm9vbGVhbiltYXhqYW1vZXhwYW5zaW9uLm1faXNWXy5nZXQoY291bnQpKS5ib29sZWFuVmFsdWUoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT0gdHJ1ZSkgeworICAgICAgICAgICAgICAgICAgICBzZXRNYXhFeHBhbnNpb24oKChJbnRlZ2VyKQorICAgICAgICAgICAgICAgICAgICAgbWF4amFtb2V4cGFuc2lvbi5tX2VuZEV4cGFuc2lvbkNFXy5nZXQoY291bnQpKS5pbnRWYWx1ZSgpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhWU2l6ZSwgbWF4ZXhwYW5zaW9uKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNldE1heEV4cGFuc2lvbigoKEludGVnZXIpCisgICAgICAgICAgICAgICAgICAgICBtYXhqYW1vZXhwYW5zaW9uLm1fZW5kRXhwYW5zaW9uQ0VfLmdldChjb3VudCkpLmludFZhbHVlKCksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFRTaXplLCBtYXhleHBhbnNpb24pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKiogIAorICAgICAqIFRvIHRoZSBVbnNhZmVDUCBoYXNoIHRhYmxlLCBhZGQgYWxsIGNoYXJzIHdpdGggY29tYmluaW5nIGNsYXNzICE9IDAgICAgIAorICAgICAqIEBwYXJhbSB0IGJ1aWxkIHRhYmxlCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgdm9pZCB1bnNhZmVDUEFkZENDTlooQnVpbGRUYWJsZSB0KSAKKyAgICB7CisgICAgCisgICAgICAgIGZvciAoY2hhciBjID0gMDsgYyA8IDB4ZmZmZjsgYyArKykgeworICAgICAgICAgICAgY2hhciBmY2QgPSBOb3JtYWxpemVySW1wbC5nZXRGQ0QxNihjKTsKKyAgICAgICAgICAgIGlmIChmY2QgPj0gMHgxMDAgfHwgLy8gaWYgdGhlIGxlYWRpbmcgY29tYmluaW5nIGNsYXNzKGMpID4gMCB8fAorICAgICAgICAgICAgICAgIChVVEYxNi5pc0xlYWRTdXJyb2dhdGUoYykgJiYgZmNkICE9IDApKSB7CisgICAgICAgICAgICAgICAgLy8gYyBpcyBhIGxlYWRpbmcgc3Vycm9nYXRlIHdpdGggc29tZSBGQ0QgZGF0YQorICAgICAgICAgICAgICAgIHVuc2FmZUNQU2V0KHQubV91bnNhZmVDUF8sIGMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgCisgICAgICAgIGlmICh0Lm1fcHJlZml4TG9va3VwXyAhPSBudWxsKSB7CisgICAgICAgICAgICBFbnVtZXJhdGlvbiBlbnVtID0gdC5tX3ByZWZpeExvb2t1cF8uZWxlbWVudHMoKTsKKyAgICAgICAgICAgIHdoaWxlIChlbnVtLmhhc01vcmVFbGVtZW50cygpKSB7CisgICAgICAgICAgICAgICAgRWxlbWVudHMgZSA9IChFbGVtZW50cyllbnVtLm5leHRFbGVtZW50KCk7CisgICAgICAgICAgICAgICAgLy8gY29kZXBvaW50cyBoZXJlIGFyZSBpbiB0aGUgTkZEIGZvcm0uIFdlIG5lZWQgdG8gYWRkIHRoZQorICAgICAgICAgICAgICAgIC8vIGZpcnN0IGNvZGUgcG9pbnQgb2YgdGhlIE5GQyBmb3JtIHRvIHVuc2FmZSwgYmVjYXVzZSAKKyAgICAgICAgICAgICAgICAvLyBzdHJjb2xsIG5lZWRzIHRvIGJhY2t1cCBvdmVyIHRoZW0uCisgICAgICAgICAgICAgICAgU3RyaW5nIGRlY29tcCA9IE5vcm1hbGl6ZXIuZGVjb21wb3NlKGUubV9jUG9pbnRzXywgdHJ1ZSk7CisgICAgICAgICAgICAgICAgdW5zYWZlQ1BTZXQodC5tX3Vuc2FmZUNQXywgZGVjb21wLmNoYXJBdCgwKSk7CisgICAgICAgICAgICB9IAorICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIENyZWF0ZSBjbG9zdXJlCisgICAgICogQHBhcmFtIHQgYnVpbGQgdGFibGUKKyAgICAgKiBAcGFyYW0gY29sbGF0b3IgUnVsZUJhc2VkQ29sbGF0b3IKKyAgICAgKiBAcGFyYW0gY29sRWwgY29sbGF0aW9uIGVsZW1lbnQgaXRlcmF0b3IKKyAgICAgKiBAcGFyYW0gc3RhcnQgCisgICAgICogQHBhcmFtIGxpbWl0CisgICAgICogQHBhcmFtIHR5cGUgY2hhcmFjdGVyIHR5cGUKKyAgICAgKiBAcmV0dXJuIAorICAgICAqLworICAgIHByaXZhdGUgYm9vbGVhbiBlbnVtQ2F0ZWdvcnlSYW5nZUNsb3N1cmVDYXRlZ29yeShCdWlsZFRhYmxlIHQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IgY29sbGF0b3IsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yIGNvbEVsLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGFydCwgaW50IGxpbWl0LCBpbnQgdHlwZSkgCisgICAgeworICAgICAgICBpZiAodHlwZSAhPSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuVU5BU1NJR05FRCAKKyAgICAgICAgICAgICYmIHR5cGUgIT0gVUNoYXJhY3RlckNhdGVnb3J5LlBSSVZBVEVfVVNFKSB7IAorICAgICAgICAgICAgLy8gaWYgdGhlIHJhbmdlIGlzIGFzc2lnbmVkIC0gd2UgbWlnaHQgb21taXQgbW9yZSBjYXRlZ29yaWVzIGxhdGVyCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAoaW50IHUzMiA9IHN0YXJ0OyB1MzIgPCBsaW1pdDsgdTMyICsrKSB7CisgICAgICAgICAgICAgICAgaW50IG5vT2ZEZWMgPSBOb3JtYWxpemVySW1wbC5nZXREZWNvbXBvc2l0aW9uKHUzMiwgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXRpbENoYXJCdWZmZXJfLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMjU2KTsKKyAgICAgICAgICAgICAgICBpZiAobm9PZkRlYyA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gaWYgd2UncmUgcG9zaXRpdmUsIHRoYXQgbWVhbnMgdGhlcmUgaXMgbm8gZGVjb21wb3NpdGlvbgorICAgICAgICAgICAgICAgICAgICBTdHJpbmcgY29tcCA9IFVDaGFyYWN0ZXIudG9TdHJpbmcodTMyKTsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGRlY29tcCA9IG5ldyBTdHJpbmcobV91dGlsQ2hhckJ1ZmZlcl8sIDAsIG5vT2ZEZWMpOworICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbGxhdG9yLmVxdWFscyhjb21wLCBkZWNvbXApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3V0aWxFbGVtZW50Xy5tX2NQb2ludHNfID0gZGVjb21wOworICAgICAgICAgICAgICAgICAgICAgICAgbV91dGlsRWxlbWVudF8ubV9wcmVmaXhfID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIEVsZW1lbnRzIHByZWZpeCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAoRWxlbWVudHMpdC5tX3ByZWZpeExvb2t1cF8uZ2V0KG1fdXRpbEVsZW1lbnRfKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmVmaXggPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXRpbEVsZW1lbnRfLm1fY1BvaW50c18gPSBjb21wOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXRpbEVsZW1lbnRfLm1fcHJlZml4XyA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91dGlsRWxlbWVudF8ubV9wcmVmaXhDaGFyc18gPSBudWxsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbEVsLnNldFRleHQoZGVjb21wKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2UgPSBjb2xFbC5uZXh0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91dGlsRWxlbWVudF8ubV9DRUxlbmd0aF8gPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChjZSAhPSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuTlVMTE9SREVSKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXRpbEVsZW1lbnRfLm1fQ0VzX1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3V0aWxFbGVtZW50Xy5tX0NFTGVuZ3RoXyArK10gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBjZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2UgPSBjb2xFbC5uZXh0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfSAKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXRpbEVsZW1lbnRfLm1fY1BvaW50c18gPSBjb21wOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXRpbEVsZW1lbnRfLm1fcHJlZml4XyA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91dGlsRWxlbWVudF8ubV9wcmVmaXhDaGFyc18gPSBudWxsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXRpbEVsZW1lbnRfLm1fQ0VMZW5ndGhfID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3V0aWxFbGVtZW50Xy5tX0NFc19bMF0gPSBwcmVmaXgubV9tYXBDRV87CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBjaGFyYWN0ZXIgdXNlcyBhIHByZWZpeC4gV2UgaGF2ZSB0byBhZGQgaXQgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gdGhlIHVuc2FmZSB0YWJsZSwgYXMgaXQgZGVjb21wb3NlZCBmb3JtIGlzIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFscmVhZHkgaW4uIEluIEphcGFuZXNlLCB0aGlzIGhhcHBlbnMgZm9yIFx1MzA5ZSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAmIFx1MzBmZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNpbmNlIHVuc2FmZUNQU2V0IGlzIHN0YXRpYyBpbiB1Y29sX2VsbSwgd2UgYXJlIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvaW5nIHRvIHdyYXAgaXQgdXAgaW4gdGhlIHVuc2FmZUNQQWRkQ0NOWiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXRpbEVsZW1lbnRfLm1faXNUaGFpXyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLmlzVGhhaVByZVZvd2VsKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91dGlsRWxlbWVudF8ubV9jUG9pbnRzXy5jaGFyQXQoMCkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYWRkQW5FbGVtZW50KHQsIG1fdXRpbEVsZW1lbnRfKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgLyoqCisgCSAqIERldGVybWluZSBpZiBhIGNoYXJhY3RlciBpcyBhIEphbW8KKyAJICogQHBhcmFtIGNoIGNoYXJhY3RlciB0byB0ZXN0CisgCSAqIEByZXR1cm4gdHJ1ZSBpZiBjaCBpcyBhIEphbW8sIGZhbHNlIG90aGVyd2lzZQorIAkgKi8KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIGlzSmFtbyhjaGFyIGNoKQorCXsgCisJCXJldHVybiAoY2ggPj0gMHgxMTAwICYmIGNoIDw9IDB4MTExMikgCisJCSAgICAgICB8fCAoY2ggPj0gMHgxMTc1ICYmIGNoIDw9IDB4MTE2MSkgCisJCSAgICAgICB8fCAoY2ggPj0gMHgxMUE4ICYmIGNoIDw9IDB4MTFDMik7CisJfQorICAgIAorICAgIC8qKgorICAgICAqIFByb2R1Y2VzIGNhbm9uaWNhbCBjbG9zdXJlCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIGNhbm9uaWNhbENsb3N1cmUoQnVpbGRUYWJsZSB0KSAKKyAgICB7CisgICAgICAgIEJ1aWxkVGFibGUgdGVtcCA9IG5ldyBCdWlsZFRhYmxlKHQpOworICAgICAgICBhc3NlbWJsZVRhYmxlKHRlbXAsIHRlbXAubV9jb2xsYXRvcl8pOworICAgICAgICAvLyBwcm9kdWNlIGNhbm9uaWNhbCBjbG9zdXJlIAorICAgICAgICBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IgY29sZWl0ZXIgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSB0ZW1wLm1fY29sbGF0b3JfLmdldENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvcigiIik7CisgICAgICAgIFJhbmdlVmFsdWVJdGVyYXRvciB0eXBlaXRlciA9IFVDaGFyYWN0ZXIuZ2V0VHlwZUl0ZXJhdG9yKCk7CisgICAgICAgIFJhbmdlVmFsdWVJdGVyYXRvci5FbGVtZW50IGVsZW1lbnQgPSBuZXcgUmFuZ2VWYWx1ZUl0ZXJhdG9yLkVsZW1lbnQoKTsKKyAgICAgICAgd2hpbGUgKHR5cGVpdGVyLm5leHQoZWxlbWVudCkpIHsKKyAgICAgICAgICAgIGVudW1DYXRlZ29yeVJhbmdlQ2xvc3VyZUNhdGVnb3J5KHQsIHRlbXAubV9jb2xsYXRvcl8sIGNvbGVpdGVyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnN0YXJ0LCBlbGVtZW50LmxpbWl0LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnZhbHVlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHZvaWQgcHJvY2Vzc1VDQUNvbXBsZXRlSWdub3JhYmxlcyhCdWlsZFRhYmxlIHQpIAorICAgIHsKKyAgICAgICAgVHJpZUl0ZXJhdG9yIHRyaWVpdGVyYXRvciAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBUcmllSXRlcmF0b3IoUnVsZUJhc2VkQ29sbGF0b3IuVUNBXy5tX3RyaWVfKTsKKyAgICAgICAgUmFuZ2VWYWx1ZUl0ZXJhdG9yLkVsZW1lbnQgZWxlbWVudCA9IG5ldyBSYW5nZVZhbHVlSXRlcmF0b3IuRWxlbWVudCgpOworICAgICAgICB3aGlsZSAodHJpZWl0ZXJhdG9yLm5leHQoZWxlbWVudCkpIHsKKyAgICAgICAgICAgIGludCBzdGFydCA9IGVsZW1lbnQuc3RhcnQ7CisgICAgICAgICAgICBpbnQgbGltaXQgPSBlbGVtZW50LmxpbWl0OworICAgICAgICAgICAgaWYgKGVsZW1lbnQudmFsdWUgPT0gMCkgeworICAgICAgICAgICAgICAgIHdoaWxlIChzdGFydCA8IGxpbWl0KSB7CisgICAgICAgICAgICAgICAgICAgIGludCBDRSA9IHQubV9tYXBwaW5nXy5nZXRWYWx1ZShzdGFydCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChDRSA9PSBDRV9OT1RfRk9VTkRfKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3V0aWxFbGVtZW50Xy5tX2lzVGhhaV8gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXRpbEVsZW1lbnRfLm1fcHJlZml4XyA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3V0aWxFbGVtZW50Xy5tX3VjaGFyc18gPSBVQ2hhcmFjdGVyLnRvU3RyaW5nKHN0YXJ0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXRpbEVsZW1lbnRfLm1fY1BvaW50c18gPSBtX3V0aWxFbGVtZW50Xy5tX3VjaGFyc187CisgICAgICAgICAgICAgICAgICAgICAgICBtX3V0aWxFbGVtZW50Xy5tX2NQb2ludHNPZmZzZXRfID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXRpbEVsZW1lbnRfLm1fQ0VMZW5ndGhfID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXRpbEVsZW1lbnRfLm1fQ0VzX1swXSA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRBbkVsZW1lbnQodCwgbV91dGlsRWxlbWVudF8pOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHN0YXJ0ICsrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS90ZXh0L0NvbGxhdGlvblJ1bGVQYXJzZXIuamF2YSBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L0NvbGxhdGlvblJ1bGVQYXJzZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MmNhNjVlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvQ29sbGF0aW9uUnVsZVBhcnNlci5qYXZhCkBAIC0wLDAgKzEsMTkyOCBAQAorLyoqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS90ZXh0L0NvbGxhdGlvblJ1bGVQYXJzZXIuamF2YSx2ICQgCisqICREYXRlOiAyMDAyLzExLzIxIDIzOjQ4OjM3ICQgCisqICRSZXZpc2lvbjogMS4xMCAkCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworcGFja2FnZSBjb20uaWJtLmljdS50ZXh0OworCitpbXBvcnQgamF2YS50ZXh0LlBhcnNlRXhjZXB0aW9uOworaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7CitpbXBvcnQgamF2YS51dGlsLkFycmF5czsKK2ltcG9ydCBjb20uaWJtLmljdS5sYW5nLlVDaGFyYWN0ZXI7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5VQ2hhcmFjdGVyUHJvcGVydHk7CisKKy8qKgorKiBDbGFzcyBmb3IgcGFyc2luZyBjb2xsYXRpb24gcnVsZXMsIHByb2R1Y2VzIGEgbGlzdCBvZiB0b2tlbnMgdGhhdCB3aWxsIGJlIAorKiB0dXJuZWQgaW50byBjb2xsYXRpb24gZWxlbWVudHMKKyogQGF1dGhvciBTeW4gV2VlIFF1ZWsKKyogQHNpbmNlIHJlbGVhc2UgMi4yLCBKdW5lIDcgMjAwMgorKiBAZHJhZnQgMi4yCisqLworZmluYWwgY2xhc3MgQ29sbGF0aW9uUnVsZVBhcnNlcgoreyAgICAgCisJLy8gcHVibGljIGRhdGEgbWVtYmVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkKKwkvLyBwYWNrYWdlIHByaXZhdGUgY29uc3RydWN0b3JzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCQorCS8qKgorICAgICAqIDxwPlJ1bGVCYXNlZENvbGxhdG9yIGNvbnN0cnVjdG9yIHRoYXQgdGFrZXMgdGhlIHJ1bGVzLiAKKyAgICAgKiBQbGVhc2Ugc2VlIFJ1bGVCYXNlZENvbGxhdG9yIGNsYXNzIGRlc2NyaXB0aW9uIGZvciBtb3JlIGRldGFpbHMgb24gdGhlIAorICAgICAqIGNvbGxhdGlvbiBydWxlIHN5bnRheC48L3A+CisgICAgICogQHNlZSBqYXZhLnV0aWwuTG9jYWxlCisgICAgICogQHBhcmFtIHJ1bGVzIHRoZSBjb2xsYXRpb24gcnVsZXMgdG8gYnVpbGQgdGhlIGNvbGxhdGlvbiB0YWJsZSBmcm9tLgorICAgICAqIEBleGNlcHRpb24gUGFyc2VFeGNlcHRpb24gdGhyb3duIHdoZW4gYXJndW1lbnQgcnVsZXMgaGF2ZSBhbiBpbnZhbGlkIAorICAgICAqICAgICAgICAgICAgc3ludGF4LgorICAgICAqIEBkcmFmdCAyLjIKKyAgICAgKi8KKyAgICBDb2xsYXRpb25SdWxlUGFyc2VyKFN0cmluZyBydWxlcykgdGhyb3dzIFBhcnNlRXhjZXB0aW9uCisgICAgeworICAgICAgICBleHRyYWN0U2V0c0Zyb21SdWxlcyhydWxlcyk7CisgICAgICAgIG1fc291cmNlXyA9IG5ldyBTdHJpbmdCdWZmZXIoTm9ybWFsaXplci5kZWNvbXBvc2UocnVsZXMsIGZhbHNlKS50cmltKCkpOworICAgICAgICBtX3J1bGVzXyA9IG1fc291cmNlXy50b1N0cmluZygpOworICAgICAgICBtX2N1cnJlbnRfID0gMDsKKyAgICAgICAgbV9leHRyYUN1cnJlbnRfID0gbV9zb3VyY2VfLmxlbmd0aCgpOworICAgICAgICBtX3ZhcmlhYmxlVG9wXyA9IG51bGw7CisgICAgICAgIG1fcGFyc2VkVG9rZW5fID0gbmV3IFBhcnNlZFRva2VuKCk7CisgICAgICAgIG1faGFzaFRhYmxlXyA9IG5ldyBIYXNodGFibGUoKTsKKyAgICAgICAgbV9vcHRpb25zXyA9IG5ldyBPcHRpb25TZXQoUnVsZUJhc2VkQ29sbGF0b3IuVUNBXyk7CisgICAgICAgIG1fbGlzdEhlYWRlcl8gPSBuZXcgVG9rZW5MaXN0SGVhZGVyWzUxMl07CisgICAgICAgIG1fcmVzdWx0TGVuZ3RoXyA9IDA7CisgICAgICAgIC8vIGNhbGwgYXNzZW1ibGVUb2tlbkxpc3QoKSBtYW51YWxseSwgc28gdGhhdCB3ZSBjYW4gCisgICAgICAgIC8vIGluaXQgYSBwYXJzZXIgYW5kIG1hbnVhbGx5IHBhcnNlIHRva2VucworCQkvL2Fzc2VtYmxlVG9rZW5MaXN0KCk7CisgICAgfQorICAgIAorCS8vIHBhY2thZ2UgcHJpdmF0ZSBpbm5lciBjbGFzc2VzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgICogQ29sbGF0aW9uIG9wdGlvbnMgc2V0CisgICAgICovCisgICAgc3RhdGljIGNsYXNzIE9wdGlvblNldCAKKyAgICB7CisJICAgIC8vIHBhY2thZ2UgcHJpdmF0ZSBjb25zdHJ1Y3RvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkgICAgCisJICAgIC8qKgorCSAgICAgKiBJbml0aWFsaXplcyB0aGUgb3B0aW9uIHNldCB3aXRoIHRoZSBhcmd1bWVudCBjb2xsYXRvcnMKKwkgICAgICogQHBhcmFtIGNvbGxhdG9yIG9wdGlvbiB0byB1c2UKKwkgICAgICovCisJICAgIE9wdGlvblNldChSdWxlQmFzZWRDb2xsYXRvciBjb2xsYXRvcikgCisJICAgIHsKKwkJICAgIG1fdmFyaWFibGVUb3BWYWx1ZV8gPSBjb2xsYXRvci5tX3ZhcmlhYmxlVG9wVmFsdWVfOworCQkgICAgbV9pc0ZyZW5jaENvbGxhdGlvbl8gPSBjb2xsYXRvci5pc0ZyZW5jaENvbGxhdGlvbigpOworCQkgICAgbV9pc0FsdGVybmF0ZUhhbmRsaW5nU2hpZnRlZF8gCisJCSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gY29sbGF0b3IuaXNBbHRlcm5hdGVIYW5kbGluZ1NoaWZ0ZWQoKTsKKwkJICAgIG1fY2FzZUZpcnN0XyA9IGNvbGxhdG9yLm1fY2FzZUZpcnN0XzsKKwkJICAgIG1faXNDYXNlTGV2ZWxfID0gY29sbGF0b3IuaXNDYXNlTGV2ZWwoKTsKKwkJICAgIG1fZGVjb21wb3NpdGlvbl8gPSBjb2xsYXRvci5nZXREZWNvbXBvc2l0aW9uKCk7CisJCSAgICBtX3N0cmVuZ3RoXyA9IGNvbGxhdG9yLmdldFN0cmVuZ3RoKCk7CisJCSAgICBtX2lzSGlyYWdhbmE0XyA9IGNvbGxhdG9yLm1faXNIaXJhZ2FuYTRfOworCSAgICB9CisJICAgIAorCSAgICAvLyBwYWNrYWdlIHByaXZhdGUgZGF0YSBtZW1iZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJICAgIAorCSAgICBpbnQgbV92YXJpYWJsZVRvcFZhbHVlXzsKKwkgICAgYm9vbGVhbiBtX2lzRnJlbmNoQ29sbGF0aW9uXzsKKwkgICAgLyoqIAorCSAgICAgKiBBdHRyaWJ1dGUgZm9yIGhhbmRsaW5nIHZhcmlhYmxlIGVsZW1lbnRzCisJICAgICAqLworCSAgICBib29sZWFuIG1faXNBbHRlcm5hdGVIYW5kbGluZ1NoaWZ0ZWRfOyAKKwkgICAgLyoqIAorCSAgICAgKiB3aG8gZ29lcyBmaXJzdCwgbG93ZXIgY2FzZSBvciB1cHBlcmNhc2UgCisJICAgICAqLworCSAgICBpbnQgbV9jYXNlRmlyc3RfOyAgICAgICAgIAorCSAgICAvKiogCisJICAgICAqIGRvIHdlIGhhdmUgYW4gZXh0cmEgY2FzZSBsZXZlbCAKKwkgICAgICovCisJICAgIGJvb2xlYW4gbV9pc0Nhc2VMZXZlbF87ICAgICAgICAgCisJICAgIC8qKiAKKwkgICAgICogYXR0cmlidXRlIGZvciBub3JtYWxpemF0aW9uIAorCSAgICAgKi8KKwkgICAgaW50IG1fZGVjb21wb3NpdGlvbl87IAorCSAgICAvKiogCisJICAgICAqIGF0dHJpYnV0ZSBmb3Igc3RyZW5ndGgKKwkgICAgICovCisJICAgIGludCBtX3N0cmVuZ3RoXzsgICAgICAgICAgCisJICAgIC8qKiAKKwkgICAgICogYXR0cmlidXRlIGZvciBzcGVjaWFsIEhpcmFnYW5hIAorCSAgICAgKi8KKwkgICAgYm9vbGVhbiBtX2lzSGlyYWdhbmE0XzsgICAgICAgICAKKyAgICB9OworICAgIAorICAgIC8qKgorICAgICAqIExpc3Qgb2YgdG9rZW5zIHVzZWQgYnkgdGhlIGNvbGxhdGlvbiBydWxlcworICAgICAqLworICAgIHN0YXRpYyBjbGFzcyBUb2tlbkxpc3RIZWFkZXIKKyAgICB7CisgICAgICAgIFRva2VuIG1fZmlyc3RfOworICAgICAgICBUb2tlbiBtX2xhc3RfOworICAgICAgICBUb2tlbiBtX3Jlc2V0XzsKKyAgICAgICAgYm9vbGVhbiBtX2luZGlyZWN0XzsKKyAgICAgICAgaW50IG1fYmFzZUNFXzsKKyAgICAgICAgaW50IG1fYmFzZUNvbnRDRV87CisgICAgICAgIGludCBtX25leHRDRV87CisgICAgICAgIGludCBtX25leHRDb250Q0VfOworICAgICAgICBpbnQgbV9wcmV2aW91c0NFXzsKKyAgICAgICAgaW50IG1fcHJldmlvdXNDb250Q0VfOworICAgICAgICBpbnQgbV9wb3NfW10gPSBuZXcgaW50W0NvbGxhdG9yLklERU5USUNBTCArIDFdOworICAgICAgICBpbnQgbV9nYXBzTG9fW10gPSBuZXcgaW50WzMgKiAoQ29sbGF0b3IuVEVSVElBUlkgKyAxKV07CisgICAgICAgIGludCBtX2dhcHNIaV9bXSA9IG5ldyBpbnRbMyAqIChDb2xsYXRvci5URVJUSUFSWSArIDEpXTsKKyAgICAgICAgaW50IG1fbnVtU3RyX1tdID0gbmV3IGludFszICogKENvbGxhdG9yLlRFUlRJQVJZICsgMSldOworICAgICAgICBUb2tlbiBtX2ZTdHJUb2tlbl9bXSA9IG5ldyBUb2tlbltDb2xsYXRvci5URVJUSUFSWSArIDFdOworICAgICAgICBUb2tlbiBtX2xTdHJUb2tlbl9bXSA9IG5ldyBUb2tlbltDb2xsYXRvci5URVJUSUFSWSArIDFdOworICAgIH07CisgICAgCisgICAgLyoqCisgICAgICogVG9rZW4gd3JhcHBlciBmb3IgY29sbGF0aW9uIHJ1bGVzCisgICAgICovICAgCisgICAgc3RhdGljIGNsYXNzIFRva2VuIAorICAgIHsKKyAgICAgICAvLyBwYWNrYWdlIHByaXZhdGUgZGF0YSBtZW1iZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgIAorICAgICAgIGludCBtX0NFX1tdOworICAgICAgIGludCBtX0NFTGVuZ3RoXzsKKyAgICAgICBpbnQgbV9leHBDRV9bXTsKKyAgICAgICBpbnQgbV9leHBDRUxlbmd0aF87CisgICAgICAgaW50IG1fc291cmNlXzsKKyAgICAgICBpbnQgbV9leHBhbnNpb25fOworICAgICAgIGludCBtX3ByZWZpeF87CisgICAgICAgaW50IG1fc3RyZW5ndGhfOworICAgICAgIGludCBtX3RvSW5zZXJ0XzsKKyAgICAgICBpbnQgbV9wb2xhcml0eV87IC8vIDEgZm9yIDwsIDw8LCA8PDwsICwgOyBhbmQgMCBmb3IgPiwgPj4sID4+PgorICAgICAgIFRva2VuTGlzdEhlYWRlciBtX2xpc3RIZWFkZXJfOworICAgICAgIFRva2VuIG1fcHJldmlvdXNfOworICAgICAgIFRva2VuIG1fbmV4dF87CisgICAgICAgU3RyaW5nQnVmZmVyIG1fcnVsZXNfOworICAgICAgIAorICAgICAgIC8vIHBhY2thZ2UgcHJpdmF0ZSBjb25zdHJ1Y3RvcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgCisgICAgICAgVG9rZW4oKSAKKyAgICAgICB7CisgICAgICAgICAgIG1fQ0VfID0gbmV3IGludFsxMjhdOworICAgICAgICAgICBtX2V4cENFXyA9IG5ldyBpbnRbMTI4XTsKKyAgICAgICAgICAgLy8gVE9ETzogdGhpcyBzaG91bGQgYWxzbyBoYW5kbGUgcmV2ZXJzZQorICAgICAgICAgICBtX3BvbGFyaXR5XyA9IFRPS0VOX1BPTEFSSVRZX1BPU0lUSVZFXzsgCisgICAgICAgICAgIG1fbmV4dF8gPSBudWxsOworICAgICAgICAgICBtX3ByZXZpb3VzXyA9IG51bGw7CisgICAgICAgICAgIG1fQ0VMZW5ndGhfID0gMDsKKyAgICAgICAgICAgbV9leHBDRUxlbmd0aF8gPSAwOworICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAvLyBwYWNrYWdlIHByaXZhdGUgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgIAorICAgICAgIC8qKgorICAgICAgICAqIEhhc2hjb2RlIGNhbGN1bGF0aW9uIGZvciB0b2tlbgorICAgICAgICAqIEByZXR1cm4gdGhlIGhhc2hjb2RlCisgICAgICAgICovCisgICAgICAgcHVibGljIGludCBoYXNoQ29kZSgpCisgICAgICAgeworICAgICAgICAgICBpbnQgcmVzdWx0ID0gMDsKKwkgICAgICAgaW50IGxlbiA9IChtX3NvdXJjZV8gJiAweEZGMDAwMDAwKSA+Pj4gMjQ7CisJICAgICAgIGludCBpbmMgPSAoKGxlbiAtIDMyKSAvIDMyKSArIDE7CisJICAgICAgICAKKwkgICAgICAgaW50IHN0YXJ0ID0gbV9zb3VyY2VfICYgMHgwMEZGRkZGRjsKKwkgICAgICAgaW50IGxpbWl0ID0gc3RhcnQgKyBsZW47ICAgIAorCQorCSAgICAgICB3aGlsZSAoc3RhcnQgPCBsaW1pdCkgeworCSAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAqIDM3KSArIG1fcnVsZXNfLmNoYXJBdChzdGFydCk7CisJICAgICAgICAgICBzdGFydCArPSBpbmM7CisJICAgICAgIH0KKwkgICAgICAgcmV0dXJuIHJlc3VsdDsKKwkgICB9CisJCisJICAgLyoqCisJICAgICogRXF1YWxzIGNhbGN1bGF0aW9uCisJICAgICogQHBhcmFtIHRhcmdldCBvYmplY3QgdG8gY29tcGFyZQorCSAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0YXJnZXQgaXMgdGhlIHNhbWUgYXMgdGhpcyBvYmplY3QKKwkgICAgKi8KKwkgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IHRhcmdldCkKKwkgICB7CisJICAgICAgIGlmICh0YXJnZXQgPT0gdGhpcykgeworCSAgICAgICAgICAgcmV0dXJuIHRydWU7CisJICAgICAgIH0KKwkgICAgICAgaWYgKHRhcmdldCBpbnN0YW5jZW9mIFRva2VuKSB7CisJICAgICAgICAgICBUb2tlbiB0ID0gKFRva2VuKXRhcmdldDsKKwkJCSAgIGludCBzc3RhcnQgPSBtX3NvdXJjZV8gJiAweDAwRkZGRkZGOworCQkJICAgaW50IHRzdGFydCA9IHQubV9zb3VyY2VfICYgMHgwMEZGRkZGRjsKKwkJCSAgIGludCBzbGltaXQgPSAobV9zb3VyY2VfICYgMHhGRjAwMDAwMCkgPj4gMjQ7CisJCQkgICBpbnQgdGxpbWl0ID0gKG1fc291cmNlXyAmIDB4RkYwMDAwMDApID4+IDI0OworCQkJICAgCisJCQkgICBpbnQgZW5kID0gc3N0YXJ0ICsgc2xpbWl0IC0gMTsKKwkJCQorCQkJICAgaWYgKG1fc291cmNlXyA9PSAwIHx8IHQubV9zb3VyY2VfID09IDApIHsKKwkJCSAgICAgICByZXR1cm4gZmFsc2U7CisJCQkgICB9CisJCQkgICBpZiAoc2xpbWl0ICE9IHRsaW1pdCkgeworCQkJICAgICAgIHJldHVybiBmYWxzZTsKKwkJCSAgIH0KKwkJCSAgIGlmIChtX3NvdXJjZV8gPT0gdC5tX3NvdXJjZV8pIHsKKwkJCSAgICAgICByZXR1cm4gdHJ1ZTsKKwkJCSAgIH0KKyAgICAgICAgICAgICAgIAorCQkJICAgd2hpbGUgKHNzdGFydCA8IGVuZCAKKwkJCSAgICAgICAgICAmJiBtX3J1bGVzXy5jaGFyQXQoc3N0YXJ0KSA9PSB0Lm1fcnVsZXNfLmNoYXJBdCh0c3RhcnQpKSAKKwkgICAgICAgICAgIHsKKwkgICAgICAgICAgICAgICArKyBzc3RhcnQ7CisJICAgICAgICAgICAgICAgKysgdHN0YXJ0OworCSAgICAgICAgICAgfQorCQkJICAgaWYgKG1fcnVsZXNfLmNoYXJBdChzc3RhcnQpID09IHQubV9ydWxlc18uY2hhckF0KHRzdGFydCkpIHsKKwkJCSAgICAgICByZXR1cm4gdHJ1ZTsKKwkJCSAgIH0KKwkgICAgICAgfSAgICAKKwkgICAgICAgcmV0dXJuIGZhbHNlOworCSAgICB9CisgICAgfTsKKyAgICAKKyAgICAvLyBwYWNrYWdlIHByaXZhdGUgZGF0YSBtZW1iZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIC8qKgorICAgICAqIEluZGljYXRvciB0aGF0IHRoZSB0b2tlbiBpcyByZXNldHRlZCB5ZXQsIGllICYgaW4gdGhlIHJ1bGVzCisgICAgICovCisgICAgc3RhdGljIGZpbmFsIGludCBUT0tFTl9SRVNFVF8gPSAweERFQURCRUVGOworICAgIAorICAgIC8qKgorICAgICAqIFNpemUgb2YgdGhlIG51bWJlciBvZiB0b2tlbnMKKyAgICAgKi8KKyAgICBpbnQgbV9yZXN1bHRMZW5ndGhfOworICAgIC8qKgorICAgICAqIExpc3Qgb2YgcGFyc2VkIHRva2VucworICAgICAqLworICAgIFRva2VuTGlzdEhlYWRlciBtX2xpc3RIZWFkZXJfW107CisgICAgLyoqCisgICAgICogVmFyaWFibGUgdG9wIHRva2VuCisgICAgICovCisgICAgVG9rZW4gbV92YXJpYWJsZVRvcF87CisgICAgLyoqCisgICAgICogQ29sbGF0aW9uIG9wdGlvbnMKKyAgICAgKi8KKyAgICBPcHRpb25TZXQgbV9vcHRpb25zXzsKKyAgICAvKioKKyAgICAgKiBOb3JtYWxpemVkIGNvbGxhdGlvbiBydWxlcyB3aXRoIHNvbWUgZXh0cmEgY2hhcmFjdGVycworICAgICAqLworICAgIFN0cmluZ0J1ZmZlciBtX3NvdXJjZV87CisgICAgLyoqCisgICAgICogSGFzaCB0YWJsZSB0byBrZWVwIGFsbCB0b2tlbnMKKyAgICAgKi8KKyAgICBIYXNodGFibGUgbV9oYXNoVGFibGVfOworICAgIAorICAgIC8vIHBhY2thZ2UgcHJpdmF0ZSBtZXRob2QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgdm9pZCBzZXREZWZhdWx0T3B0aW9uc0luQ29sbGF0b3IoUnVsZUJhc2VkQ29sbGF0b3IgY29sbGF0b3IpCisgICAgeworICAgICAgICBjb2xsYXRvci5tX2RlZmF1bHRTdHJlbmd0aF8gPSBtX29wdGlvbnNfLm1fc3RyZW5ndGhfOworICAgICAgICBjb2xsYXRvci5tX2RlZmF1bHREZWNvbXBvc2l0aW9uXyA9IG1fb3B0aW9uc18ubV9kZWNvbXBvc2l0aW9uXzsKKyAgICAgICAgY29sbGF0b3IubV9kZWZhdWx0SXNGcmVuY2hDb2xsYXRpb25fID0gbV9vcHRpb25zXy5tX2lzRnJlbmNoQ29sbGF0aW9uXzsKKyAgICAgICAgY29sbGF0b3IubV9kZWZhdWx0SXNBbHRlcm5hdGVIYW5kbGluZ1NoaWZ0ZWRfIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBtX29wdGlvbnNfLm1faXNBbHRlcm5hdGVIYW5kbGluZ1NoaWZ0ZWRfOworICAgICAgICBjb2xsYXRvci5tX2RlZmF1bHRJc0Nhc2VMZXZlbF8gPSBtX29wdGlvbnNfLm1faXNDYXNlTGV2ZWxfOworICAgICAgICBjb2xsYXRvci5tX2RlZmF1bHRDYXNlRmlyc3RfID0gbV9vcHRpb25zXy5tX2Nhc2VGaXJzdF87CisgICAgICAgIGNvbGxhdG9yLm1fZGVmYXVsdElzSGlyYWdhbmE0XyA9IG1fb3B0aW9uc18ubV9pc0hpcmFnYW5hNF87CisgICAgICAgIGNvbGxhdG9yLm1fZGVmYXVsdFZhcmlhYmxlVG9wVmFsdWVfID0gbV9vcHRpb25zXy5tX3ZhcmlhYmxlVG9wVmFsdWVfOworICAgIH0KKyAgICAKKyAgICAvLyBwcml2YXRlIGlubmVyIGNsYXNzZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIC8qKiAKKyAgICAgKiBUaGlzIGlzIGEgdG9rZW4gdGhhdCBoYXMgYmVlbiBwYXJzZWQgYnV0IG5vdCB5ZXQgcHJvY2Vzc2VkLiBVc2VkIHRvIAorICAgICAqIHJlZHVjZSB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBpbiB0aGUgcGFyc2VyCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgUGFyc2VkVG9rZW4gCisgICAgeworICAgICAgICAvLyBwcml2YXRlIGNvbnN0cnVjdG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgCisgICAgICAgIC8qKgorICAgICAgICAgKiBFbXB0eSBjb25zdHJ1Y3RvcgorICAgICAgICAgKi8KKyAgICAgICAgUGFyc2VkVG9rZW4oKQorICAgICAgICB7CisgICAgICAgICAgICBtX2NoYXJzTGVuXyA9IDA7CisgICAgICAgICAgICBtX2NoYXJzT2Zmc2V0XyA9IDA7CisgICAgICAgICAgICBtX2V4dGVuc2lvbkxlbl8gPSAwOworICAgICAgICAgICAgbV9leHRlbnNpb25PZmZzZXRfID0gMDsKKyAgICAgICAgICAgIG1fcHJlZml4TGVuXyA9IDA7CisgICAgICAgICAgICBtX3ByZWZpeE9mZnNldF8gPSAwOworICAgICAgICAgICAgbV9mbGFnc18gPSAwOworICAgICAgICAgICAgbV9zdHJlbmd0aF8gPSBUT0tFTl9VTlNFVF87CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIHByaXZhdGUgZGF0YSBtZW1iZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAKKyAgICAgICAgaW50IG1fc3RyZW5ndGhfOworICAgICAgICBpbnQgbV9jaGFyc09mZnNldF87CisgICAgICAgIGludCBtX2NoYXJzTGVuXzsKKyAgICAgICAgaW50IG1fZXh0ZW5zaW9uT2Zmc2V0XzsKKyAgICAgICAgaW50IG1fZXh0ZW5zaW9uTGVuXzsKKyAgICAgICAgaW50IG1fcHJlZml4T2Zmc2V0XzsKKyAgICAgICAgaW50IG1fcHJlZml4TGVuXzsKKyAgICAgICAgY2hhciBtX2ZsYWdzXzsKKyAgICAgICAgY2hhciBtX2luZGlyZWN0SW5kZXhfOworICAgIH07CisgICAgCisgICAgLyoqCisgICAgICogQm91bmRhcnkgd3JhcHBlcnMKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBJbmRpcmVjdEJvdW5kYXJpZXMgCisgICAgeworICAgICAgICAvLyBwYWNrYWdlIHByaXZhdGUgY29uc3RydWN0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgIAorICAgICAgICBJbmRpcmVjdEJvdW5kYXJpZXMoaW50IHN0YXJ0Y2VbXSwgaW50IGxpbWl0Y2VbXSkgCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFNldCB2YWx1ZXMgZm9yIHRoZSB0b3AgLSBUT0RPOiBvbmNlIHdlIGhhdmUgdmFsdWVzIGZvciBhbGwgdGhlIAorICAgICAgICAgICAgLy8gaW5kaXJlY3RzLCB3ZSBhcmUgZ29pbmcgdG8gaW5pdGFsaXplIGhlcmUuIAorICAgICAgICAgICAgbV9zdGFydENFXyA9IHN0YXJ0Y2VbMF07CisgICAgICAgICAgICBtX3N0YXJ0Q29udENFXyA9IHN0YXJ0Y2VbMV07CisgICAgICAgICAgICBpZiAobGltaXRjZSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgbV9saW1pdENFXyA9IGxpbWl0Y2VbMF07CisgICAgICAgICAgICAgICAgbV9saW1pdENvbnRDRV8gPSBsaW1pdGNlWzFdOworICAgICAgICAgICAgfSAKKyAgICAgICAgICAgIGVsc2UgeyAKKyAgICAgICAgICAgICAgICBtX2xpbWl0Q0VfID0gMDsKKyAgICAgICAgICAgICAgICBtX2xpbWl0Q29udENFXyA9IDA7IAorICAgICAgICAgICAgfSAKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gcGFja2FnZSBwcml2YXRlIGRhdGEgbWVtYmVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAKKwkgICAgaW50IG1fc3RhcnRDRV87CisJICAgIGludCBtX3N0YXJ0Q29udENFXzsKKwkgICAgaW50IG1fbGltaXRDRV87CisJICAgIGludCBtX2xpbWl0Q29udENFXzsKKyAgICB9OworCisgICAgLyoqCisgICAgICogQ29sbGF0aW9uIG9wdGlvbiBydWxlIHRhZworICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIFRva2VuT3B0aW9uCisgICAgeworICAgIAkvLyBwYWNrYWdlIHByaXZhdGUgY29uc3RydWN0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCQorICAgIAlUb2tlbk9wdGlvbihTdHJpbmcgbmFtZSwgaW50IGF0dHJpYnV0ZSwgU3RyaW5nIHN1Ym9wdGlvbnNbXSwKKyAgICAJICAgICAgICAgICAgaW50IHN1Ym9wdGlvbmF0dHJpYnV0ZXZhbHVlW10pIAorICAgIAl7CisgICAgCQltX25hbWVfID0gbmFtZTsKKyAgICAJCW1fYXR0cmlidXRlXyA9IGF0dHJpYnV0ZTsKKyAgICAgICAgCW1fc3ViT3B0aW9uc18gPSBzdWJvcHRpb25zOworICAgICAgICAJbV9zdWJPcHRpb25BdHRyaWJ1dGVWYWx1ZXNfID0gc3Vib3B0aW9uYXR0cmlidXRldmFsdWU7CQkKKyAgICAJfQorICAgIAkKKyAgICAJLy8gcGFja2FnZSBwcml2YXRlIGRhdGEgbWVtYmVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAkKKyAgICAJcHJpdmF0ZSBTdHJpbmcgbV9uYW1lXzsKKyAgICAJcHJpdmF0ZSBpbnQgbV9hdHRyaWJ1dGVfOworICAgICAgICBwcml2YXRlIFN0cmluZyBtX3N1Yk9wdGlvbnNfW107CisgICAgICAgIHByaXZhdGUgaW50IG1fc3ViT3B0aW9uQXR0cmlidXRlVmFsdWVzX1tdOworICAgIH07CisgICAgCisgICAgLy8gcHJpdmF0ZSB2YXJpYWJsZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIEN1cnJlbnQgcGFyc2VkIHRva2VuCisgICAgICovCisgICAgcHJpdmF0ZSBQYXJzZWRUb2tlbiBtX3BhcnNlZFRva2VuXzsKKyAgICAvKioKKyAgICAgKiBDb2xsYXRpb24gcnVsZQorICAgICAqLworICAgIHByaXZhdGUgU3RyaW5nIG1fcnVsZXNfOworICAgIHByaXZhdGUgaW50IG1fY3VycmVudF87CisgICAgLyoqCisgICAgICogRW5kIG9mIHRoZSBvcHRpb24gd2hpbGUgcmVhZGluZy4gCisgICAgICogTmVlZCBpdCBmb3IgVW5pY29kZVNldCByZWFkaW5nIHN1cHBvcnQuIAorICAgICAqLworICAgIHByaXZhdGUgaW50IG1fb3B0aW9uRW5kXzsKKyAgICAvKioKKyAgICAgKiBDdXJyZW50IG9mZnNldCBpbiBtX3NvdXJjZQorICAgICAqLworICAgIHByaXZhdGUgaW50IG1fc291cmNlTGltaXRfOworICAgIC8qKgorICAgICAqIE9mZnNldCB0byBtX3NvdXJjZV8gb2ZyIHRoZSBleHRyYSBleHBhbnNpb24gY2hhcmFjdGVycworICAgICAqLworICAgIHByaXZhdGUgaW50IG1fZXh0cmFDdXJyZW50XzsKKyAgICAKKyAgICAvKiogCisgICAgICogVW5pY29kZVNldCB0aGF0IGNvbnRhaW5zIGNvZGUgcG9pbnRzIHRvIGJlIGNvcGllZCBmcm9tIHRoZSBVQ0EKKyAgICAgKi8KKyAgICBVbmljb2RlU2V0IG1fY29weVNldF87CisgICAgCisgICAgLyoqCisgICAgICogVW5pY29kZVNldCB0aGF0IGNvbnRhaW5zIGNvZGUgcG9pbnRzIGZvciB3aGljaCB3ZSB3YW50IHRvIHJlbW92ZQorICAgICAqIFVDQSBjb250cmFjdGlvbnMuIEl0IGltcGxpZXMgY29weWluZyBvZiB0aGVzZSBjb2RlIHBvaW50cyBmcm9tIAorICAgICAqIHRoZSBVQ0EuCisgICAgICovCisgICAgVW5pY29kZVNldCBtX3JlbW92ZVNldF87CisgICAgLyoqIAorICAgICAqIFRoaXMgaXMgc3BhY2UgZm9yIHRoZSBleHRyYSBzdHJpbmdzIHRoYXQgbmVlZCB0byBiZSB1bnF1b3RlZCBkdXJpbmcgdGhlIAorICAgICAqIHBhcnNpbmcgb2YgdGhlIHJ1bGVzIAorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBUT0tFTl9FWFRSQV9SVUxFX1NQQUNFX1NJWkVfID0gMjA0ODsKKyAgICAvKioKKyAgICAgKiBJbmRpY2F0b3IgdGhhdCB0aGUgdG9rZW4gaXMgbm90IHNldCB5ZXQKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgVE9LRU5fVU5TRVRfID0gMHhGRkZGRkZGRjsKKyAgICAvKioKKyAgICAgKiBJbmRpY2F0b3IgdGhhdCB0aGUgcnVsZSBpcyBpbiB0aGUgPiBwb2xhcml0eSwgaWUgZXZlcnl0aGluZyBvbiB0aGUgCisgICAgICogcmlnaHQgb2YgdGhlIHJ1bGUgaXMgbGVzcyB0aGFuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFRPS0VOX1BPTEFSSVRZX05FR0FUSVZFXyA9IDA7CisgICAgLyoqCisgICAgICogSW5kaWNhdG9yIHRoYXQgdGhlIHJ1bGUgaXMgaW4gdGhlIDwgcG9sYXJpdHksIGllIGV2ZXJ5dGhpbmcgb24gdGhlIAorICAgICAqIHJpZ2h0IG9mIHRoZSBydWxlIGlzIGdyZWF0ZXIgdGhhbgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBUT0tFTl9QT0xBUklUWV9QT1NJVElWRV8gPSAxOworICAgIC8qKgorICAgICAqIEZsYWcgbWFzayB0byBkZXRlcm1pbmUgaWYgdG9wIGlzIHNldAorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBUT0tFTl9UT1BfTUFTS18gPSAweDA0OworICAgIC8qKgorICAgICAqIEZsYWcgbWFzayB0byBkZXRlcm1pbmUgaWYgdmFyaWFibGUgdG9wIGlzIHNldAorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBUT0tFTl9WQVJJQUJMRV9UT1BfTUFTS18gPSAweDA4OworICAgIC8qKgorICAgICAqIEZsYWcgbWFzayB0byBkZXRlcm1pbmUgaWYgYSBiZWZvcmUgYXR0cmlidXRlIGlzIHNldAorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBUT0tFTl9CRUZPUkVfID0gMHgwMzsKKyAgICAvKioKKyAgICAgKiBGb3IgdXNlIGluIHBhcnNpbmcgdG9rZW4gb3B0aW9ucworICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBUT0tFTl9TVUNDRVNTX01BU0tfID0gMHgxMDsKKyAgICAKKyAgICAvKiogCisgICAgICogVGhlc2UgdmFsdWVzIGFyZSB1c2VkIGZvciBmaW5kaW5nIENFIHZhbHVlcyBmb3IgaW5kaXJlY3QgcG9zaXRpb25pbmcuIAorICAgICAqIEluZGlyZWN0IHBvc2l0aW9uaW5nIGlzIGEgbWVjaGFuaXNtIGZvciBhbGxvd2luZyByZXNldHMgb24gc3ltYm9saWMgCisgICAgICogdmFsdWVzLiBJdCBvbmx5IHdvcmtzIGZvciByZXNldHMgYW5kIHlvdSBjYW5ub3QgdGFpbG9yIGluZGlyZWN0IG5hbWVzLgorICAgICAqIEFuIGluZGlyZWN0IG5hbWUgY2FuIGRlZmluZSBlaXRoZXIgYW4gYW5jaG9yIHBvaW50IG9yIGEgcmFuZ2UuIEFuIGFuY2hvciAKKyAgICAgKiBwb2ludCBiZWhhdmVzIGluIGV4YWN0bHkgdGhlIHNhbWUgd2F5IGFzIGEgY29kZSBwb2ludCBpbiByZXNldCB3b3VsZCwgCisgICAgICogZXhjZXB0IHRoYXQgaXQgY2Fubm90IGJlIHRhaWxvcmVkLiBBIHJhbmdlICh3ZSBjdXJyZW50bHkgb25seSBrbm93IGZvciAKKyAgICAgKiB0aGUgW3RvcF0gcmFuZ2Ugd2lsbCBleHBsaWNpdGx5IHNldCB0aGUgdXBwZXIgYm91bmQgZm9yIGdlbmVyYXRlZCBDRXMsIAorICAgICAqIHRodXMgYWxsb3dpbmcgZm9yIGJldHRlciBjb250cm9sIG92ZXIgaG93IG1hbnkgQ0VzIGNhbiBiZSBzcXVlZXplZCAKKyAgICAgKiBiZXR3ZWVuIGluIHRoZSByYW5nZSB3aXRob3V0IHBlcmZvcm1hbmNlIHBlbmFsdHkuIEluIHRoYXQgcmVzcGVjdCwgd2UgdXNlIAorICAgICAqIFt0b3BdIGZvciB0YWlsb3Jpbmcgb2YgbG9jYWxlcyB0aGF0IHVzZSBDSksgY2hhcmFjdGVycy4gT3RoZXIgaW5kaXJlY3QgCisgICAgICogdmFsdWVzIGFyZSBjdXJyZW50bHkgYSBwdXJlIGNvbnZlbmllbmNlLCB0aGV5IGNhbiBiZSB1c2VkIHRvIGFzc3VyZSB0aGF0IAorICAgICAqIHRoZSBDRXMgd2lsbCBiZSBhbHdheXMgcG9zaXRpb25lZCBpbiB0aGUgc2FtZSBwbGFjZSByZWxhdGl2ZSB0byBhIHBvaW50IAorICAgICAqIHdpdGgga25vd24gcHJvcGVydGllcyAoZS5nLiBmaXJzdCBwcmltYXJ5IGlnbm9yYWJsZSkuIAorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEluZGlyZWN0Qm91bmRhcmllcyBJTkRJUkVDVF9CT1VOREFSSUVTX1tdOworICAgCisgICAgLyoqCisgICAgICogSW52ZXJzZSBVQ0EgY29uc3RhbnRzCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IElOVkVSU0VfU0laRV9NQVNLXyA9IDB4RkZGMDAwMDA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IElOVkVSU0VfT0ZGU0VUX01BU0tfID0gMHgwMDBGRkZGRjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSU5WRVJTRV9TSElGVF9WQUxVRV8gPSAyMDsKKyAgICAKKyAgICAvKioKKyAgICAgKiBDb2xsYXRpb24gb3B0aW9uIHRhZ3MKKyAgICAgKiBbbGFzdCB2YXJpYWJsZV0gbGFzdCB2YXJpYWJsZSB2YWx1ZSAKKyAgICAgKiBbbGFzdCBwcmltYXJ5IGlnbm9yYWJsZV0gbGFyZ2VzdCBDRSBmb3IgcHJpbWFyeSBpZ25vcmFibGUgCisgICAgICogW2xhc3Qgc2Vjb25kYXJ5IGlnbm9yYWJsZV0gbGFyZ2VzdCBDRSBmb3Igc2Vjb25kYXJ5IGlnbm9yYWJsZSAKKyAgICAgKiBbbGFzdCB0ZXJ0aWFyeSBpZ25vcmFibGVdIGxhcmdlc3QgQ0UgZm9yIHRlcnRpYXJ5IGlnbm9yYWJsZSAKKyAgICAgKiBbdG9wXSBndWFyYW50ZWVkIHRvIGJlIGFib3ZlIGFsbCBpbXBsaWNpdCBDRXMsIGZvciBub3cgYW5kIGluIHRoZSBmdXR1cmUgKGluIDEuOCkgCisJICovCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgVG9rZW5PcHRpb24gUlVMRVNfT1BUSU9OU19bXTsKKwkKKwlzdGF0aWMgCisJeworICAgICAgICBJTkRJUkVDVF9CT1VOREFSSUVTXyA9IG5ldyBJbmRpcmVjdEJvdW5kYXJpZXNbMTVdOworICAgICAgICAvLyBVQ09MX1JFU0VUX1RPUF9WQUxVRQorICAgICAgICBJTkRJUkVDVF9CT1VOREFSSUVTX1swXSA9IG5ldyBJbmRpcmVjdEJvdW5kYXJpZXMoCisgICAgICAgICAgICAgICAgICAgICAgICBSdWxlQmFzZWRDb2xsYXRvci5VQ0FfQ09OU1RBTlRTXy5MQVNUX05PTl9WQVJJQUJMRV8sIAorICAgICAgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IuVUNBX0NPTlNUQU5UU18uRklSU1RfSU1QTElDSVRfKTsKKyAgICAgICAgLy8gVUNPTF9GSVJTVF9QUklNQVJZX0lHTk9SQUJMRQorICAgICAgICBJTkRJUkVDVF9CT1VOREFSSUVTX1sxXSA9IG5ldyBJbmRpcmVjdEJvdW5kYXJpZXMoCisgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yLlVDQV9DT05TVEFOVFNfLkZJUlNUX1BSSU1BUllfSUdOT1JBQkxFXywgCisgICAgICAgICAgICAgICAgICAgIG51bGwpOworICAgICAgICAvLyBVQ09MX0xBU1RfUFJJTUFSWV9JR05PUkFCTEUKKyAgICAgICAgSU5ESVJFQ1RfQk9VTkRBUklFU19bMl0gPSBuZXcgSW5kaXJlY3RCb3VuZGFyaWVzKAorICAgICAgICAgICAgICAgICAgICBSdWxlQmFzZWRDb2xsYXRvci5VQ0FfQ09OU1RBTlRTXy5MQVNUX1BSSU1BUllfSUdOT1JBQkxFXywgCisgICAgICAgICAgICAgICAgICAgIG51bGwpOworICAgICAgICAgIAorICAgICAgICAvLyBVQ09MX0ZJUlNUX1NFQ09OREFSWV9JR05PUkFCTEUKKyAgICAgICAgSU5ESVJFQ1RfQk9VTkRBUklFU19bM10gPSBuZXcgSW5kaXJlY3RCb3VuZGFyaWVzKAorICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yLlVDQV9DT05TVEFOVFNfLkZJUlNUX1NFQ09OREFSWV9JR05PUkFCTEVfLCAKKyAgICAgICAgICAgICAgICAgICBudWxsKTsKKyAgICAgICAgLy8gVUNPTF9MQVNUX1NFQ09OREFSWV9JR05PUkFCTEUKKyAgICAgICAgSU5ESVJFQ1RfQk9VTkRBUklFU19bNF0gPSBuZXcgSW5kaXJlY3RCb3VuZGFyaWVzKAorICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yLlVDQV9DT05TVEFOVFNfLkxBU1RfU0VDT05EQVJZX0lHTk9SQUJMRV8sIAorICAgICAgICAgICAgICAgICAgIG51bGwpOworICAgICAgICAvLyBVQ09MX0ZJUlNUX1RFUlRJQVJZX0lHTk9SQUJMRSAKKyAgICAgICAgSU5ESVJFQ1RfQk9VTkRBUklFU19bNV0gPSBuZXcgSW5kaXJlY3RCb3VuZGFyaWVzKAorICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yLlVDQV9DT05TVEFOVFNfLkZJUlNUX1RFUlRJQVJZX0lHTk9SQUJMRV8sIAorICAgICAgICAgICAgICAgICAgIG51bGwpOworICAgICAgICAvLyBVQ09MX0xBU1RfVEVSVElBUllfSUdOT1JBQkxFCisgICAgICAgIElORElSRUNUX0JPVU5EQVJJRVNfWzZdID0gbmV3IEluZGlyZWN0Qm91bmRhcmllcygKKyAgICAgICAgICAgICAgICAgICBSdWxlQmFzZWRDb2xsYXRvci5VQ0FfQ09OU1RBTlRTXy5MQVNUX1RFUlRJQVJZX0lHTk9SQUJMRV8sIAorICAgICAgICAgICAgICAgICAgIG51bGwpOworICAgICAgICAvLyBVQ09MX0ZJUlNUX1ZBUklBQkxFOworICAgICAgICBJTkRJUkVDVF9CT1VOREFSSUVTX1s3XSA9IG5ldyBJbmRpcmVjdEJvdW5kYXJpZXMoCisgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IuVUNBX0NPTlNUQU5UU18uRklSU1RfVkFSSUFCTEVfLCAKKyAgICAgICAgICAgICAgICAgICBudWxsKTsgIAorICAgICAgICAvLyBVQ09MX0xBU1RfVkFSSUFCTEUgCisgICAgICAgIElORElSRUNUX0JPVU5EQVJJRVNfWzhdID0gbmV3IEluZGlyZWN0Qm91bmRhcmllcygKKyAgICAgICAgICAgICAgICAgICBSdWxlQmFzZWRDb2xsYXRvci5VQ0FfQ09OU1RBTlRTXy5MQVNUX1ZBUklBQkxFXywgCisgICAgICAgICAgICAgICAgICAgbnVsbCk7CisgICAgICAgIC8vIFVDT0xfRklSU1RfTk9OX1ZBUklBQkxFCisgICAgICAgIElORElSRUNUX0JPVU5EQVJJRVNfWzldID0gbmV3IEluZGlyZWN0Qm91bmRhcmllcygKKyAgICAgICAgICAgICAgICAgICBSdWxlQmFzZWRDb2xsYXRvci5VQ0FfQ09OU1RBTlRTXy5GSVJTVF9OT05fVkFSSUFCTEVfLCAKKyAgICAgICAgICAgICAgICAgICBudWxsKTsKKyAgICAgICAgLy8gVUNPTF9MQVNUX05PTl9WQVJJQUJMRQorICAgICAgICBJTkRJUkVDVF9CT1VOREFSSUVTX1sxMF0gPSBuZXcgSW5kaXJlY3RCb3VuZGFyaWVzKAorICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yLlVDQV9DT05TVEFOVFNfLkxBU1RfTk9OX1ZBUklBQkxFXywgCisgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IuVUNBX0NPTlNUQU5UU18uRklSU1RfSU1QTElDSVRfKTsKKyAgICAgICAgLy8gVUNPTF9GSVJTVF9JTVBMSUNJVCAKKyAgICAgICAgSU5ESVJFQ1RfQk9VTkRBUklFU19bMTFdID0gbmV3IEluZGlyZWN0Qm91bmRhcmllcygKKyAgICAgICAgICAgICAgICAgICBSdWxlQmFzZWRDb2xsYXRvci5VQ0FfQ09OU1RBTlRTXy5GSVJTVF9JTVBMSUNJVF8sCisgICAgICAgICAgICAgICAgICAgbnVsbCk7IAorICAgICAgICAvLyBVQ09MX0xBU1RfSU1QTElDSVQgCisgICAgICAgIElORElSRUNUX0JPVU5EQVJJRVNfWzEyXSA9IG5ldyBJbmRpcmVjdEJvdW5kYXJpZXMoCisgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IuVUNBX0NPTlNUQU5UU18uTEFTVF9JTVBMSUNJVF8sIAorICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yLlVDQV9DT05TVEFOVFNfLkZJUlNUX1RSQUlMSU5HXyk7IAorICAgICAgICAvLyBVQ09MX0ZJUlNUX1RSQUlMSU5HIAorICAgICAgICBJTkRJUkVDVF9CT1VOREFSSUVTX1sxM10gPSBuZXcgSW5kaXJlY3RCb3VuZGFyaWVzKAorICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yLlVDQV9DT05TVEFOVFNfLkZJUlNUX1RSQUlMSU5HXywgCisgICAgICAgICAgICAgICAgICAgbnVsbCk7IAorICAgICAgICAvLyBVQ09MX0xBU1RfVFJBSUxJTkcgCisgICAgICAgIElORElSRUNUX0JPVU5EQVJJRVNfWzE0XSA9IG5ldyBJbmRpcmVjdEJvdW5kYXJpZXMoCisgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IuVUNBX0NPTlNUQU5UU18uTEFTVF9UUkFJTElOR18sIAorICAgICAgICAgICAgICAgICAgIG51bGwpOyAKKyAgICAgICAgSU5ESVJFQ1RfQk9VTkRBUklFU19bMTRdLm1fbGltaXRDRV8gCisgICAgICAgICAgICAgICAgID0gUnVsZUJhc2VkQ29sbGF0b3IuVUNBX0NPTlNUQU5UU18uUFJJTUFSWV9TUEVDSUFMX01JTl8gPDwgMjQ7IAorCisJCVJVTEVTX09QVElPTlNfID0gbmV3IFRva2VuT3B0aW9uWzE5XTsKKwkJU3RyaW5nIG9wdGlvbltdID0geyJub24taWdub3JhYmxlIiwgInNoaWZ0ZWQifTsKKwkJaW50IHZhbHVlW10gPSB7UnVsZUJhc2VkQ29sbGF0b3IuQXR0cmlidXRlVmFsdWUuTk9OX0lHTk9SQUJMRV8sIAorCSAgICAgICAgICAgICAgICAgICBSdWxlQmFzZWRDb2xsYXRvci5BdHRyaWJ1dGVWYWx1ZS5TSElGVEVEX307CisJICAgIFJVTEVTX09QVElPTlNfWzBdID0gbmV3IFRva2VuT3B0aW9uKCJhbHRlcm5hdGUiLCAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yLkF0dHJpYnV0ZS5BTFRFUk5BVEVfSEFORExJTkdfLCAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiwgdmFsdWUpOworICAgICAgICBvcHRpb24gPSBuZXcgU3RyaW5nWzFdOworICAgICAgICBvcHRpb25bMF0gPSAiMiI7CisgICAgICAgIHZhbHVlID0gbmV3IGludFsxXTsKKyAgICAgICAgdmFsdWVbMF0gPSBSdWxlQmFzZWRDb2xsYXRvci5BdHRyaWJ1dGVWYWx1ZS5PTl87CisgICAgICAgIFJVTEVTX09QVElPTlNfWzFdID0gbmV3IFRva2VuT3B0aW9uKCJiYWNrd2FyZHMiLCAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yLkF0dHJpYnV0ZS5GUkVOQ0hfQ09MTEFUSU9OXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiwgdmFsdWUpOworCSAgICBTdHJpbmcgb2Zmb25vcHRpb25bXSA9IG5ldyBTdHJpbmdbMl07CisgICAgICAgIG9mZm9ub3B0aW9uWzBdID0gIm9mZiI7IAorICAgICAgICBvZmZvbm9wdGlvblsxXSA9ICJvbiI7CisgICAgICAgIGludCBvZmZvbnZhbHVlW10gPSBuZXcgaW50WzJdOworICAgICAgICBvZmZvbnZhbHVlWzBdID0gUnVsZUJhc2VkQ29sbGF0b3IuQXR0cmlidXRlVmFsdWUuT0ZGXzsgCisgICAgICAgIG9mZm9udmFsdWVbMV0gPSBSdWxlQmFzZWRDb2xsYXRvci5BdHRyaWJ1dGVWYWx1ZS5PTl87CisgICAgICAgIFJVTEVTX09QVElPTlNfWzJdID0gbmV3IFRva2VuT3B0aW9uKCJjYXNlTGV2ZWwiLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yLkF0dHJpYnV0ZS5DQVNFX0xFVkVMXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZm9ub3B0aW9uLCBvZmZvbnZhbHVlKTsKKwkgICAgb3B0aW9uID0gbmV3IFN0cmluZ1szXTsKKyAgICAgICAgb3B0aW9uWzBdID0gImxvd2VyIjsgCisgICAgICAgIG9wdGlvblsxXSA9ICJ1cHBlciI7CisgICAgICAgIG9wdGlvblsyXSA9ICJvZmYiOworICAgICAgICB2YWx1ZSA9IG5ldyBpbnRbM107CisgICAgICAgIHZhbHVlWzBdID0gUnVsZUJhc2VkQ29sbGF0b3IuQXR0cmlidXRlVmFsdWUuTE9XRVJfRklSU1RfOworICAgICAgICB2YWx1ZVsxXSA9IFJ1bGVCYXNlZENvbGxhdG9yLkF0dHJpYnV0ZVZhbHVlLlVQUEVSX0ZJUlNUXzsKKyAgICAgICAgdmFsdWVbMl0gPSBSdWxlQmFzZWRDb2xsYXRvci5BdHRyaWJ1dGVWYWx1ZS5PRkZfOworICAgICAgICBSVUxFU19PUFRJT05TX1szXSA9IG5ldyBUb2tlbk9wdGlvbigiY2FzZUZpcnN0IiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdWxlQmFzZWRDb2xsYXRvci5BdHRyaWJ1dGUuQ0FTRV9GSVJTVF8sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLCB2YWx1ZSk7CisgICAgICAgIFJVTEVTX09QVElPTlNfWzRdID0gbmV3IFRva2VuT3B0aW9uKCJub3JtYWxpemF0aW9uIiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IuQXR0cmlidXRlLk5PUk1BTElaQVRJT05fTU9ERV8sCisgICAgICAgIAkgICAgICAgICAgICAgICAgICAgb2Zmb25vcHRpb24sIG9mZm9udmFsdWUpOworCSAgICBSVUxFU19PUFRJT05TX1s1XSA9IG5ldyBUb2tlbk9wdGlvbigiaGlyYWdhbmFRIiwgCisJICAgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IuQXR0cmlidXRlLkhJUkFHQU5BX1FVQVRFUk5BUllfTU9ERV8sCisJICAgIAkgICAgICAgICAgICAgb2Zmb25vcHRpb24sIG9mZm9udmFsdWUpOworICAgICAgICBvcHRpb24gPSBuZXcgU3RyaW5nWzVdOworICAgICAgICBvcHRpb25bMF0gPSAiMSI7IAorICAgICAgICBvcHRpb25bMV0gPSAiMiI7CisgICAgICAgIG9wdGlvblsyXSA9ICIzIjsKKyAgICAgICAgb3B0aW9uWzNdID0gIjQiOyAKKyAgICAgICAgb3B0aW9uWzRdID0gIkkiOworICAgICAgICB2YWx1ZSA9IG5ldyBpbnRbNV07CisgICAgICAgIHZhbHVlWzBdID0gUnVsZUJhc2VkQ29sbGF0b3IuQXR0cmlidXRlVmFsdWUuUFJJTUFSWV87CisgICAgICAgIHZhbHVlWzFdID0gUnVsZUJhc2VkQ29sbGF0b3IuQXR0cmlidXRlVmFsdWUuU0VDT05EQVJZXzsKKyAgICAgICAgdmFsdWVbMl0gPSBSdWxlQmFzZWRDb2xsYXRvci5BdHRyaWJ1dGVWYWx1ZS5URVJUSUFSWV87CisgICAgICAgIHZhbHVlWzNdID0gUnVsZUJhc2VkQ29sbGF0b3IuQXR0cmlidXRlVmFsdWUuUVVBVEVSTkFSWV87CisgICAgICAgIHZhbHVlWzRdID0gUnVsZUJhc2VkQ29sbGF0b3IuQXR0cmlidXRlVmFsdWUuSURFTlRJQ0FMXzsKKwkgICAgUlVMRVNfT1BUSU9OU19bNl0gPSBuZXcgVG9rZW5PcHRpb24oInN0cmVuZ3RoIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IuQXR0cmlidXRlLlNUUkVOR1RIXywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiwgdmFsdWUpOworICAgICAgICBSVUxFU19PUFRJT05TX1s3XSA9IG5ldyBUb2tlbk9wdGlvbigidmFyaWFibGUgdG9wIiwgCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IuQXR0cmlidXRlLkxJTUlUXywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwgbnVsbCk7CisJICAgIFJVTEVTX09QVElPTlNfWzhdID0gbmV3IFRva2VuT3B0aW9uKCJyZWFycmFuZ2UiLCAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdWxlQmFzZWRDb2xsYXRvci5BdHRyaWJ1dGUuTElNSVRfLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsLCBudWxsKTsKKyAgICAgICAgb3B0aW9uID0gbmV3IFN0cmluZ1szXTsKKyAgICAgICAgb3B0aW9uWzBdID0gIjEiOworICAgICAgICBvcHRpb25bMV0gPSAiMiI7CisgICAgICAgIG9wdGlvblsyXSA9ICIzIjsKKyAgICAgICAgdmFsdWUgPSBuZXcgaW50WzNdOworICAgICAgICB2YWx1ZVswXSA9IFJ1bGVCYXNlZENvbGxhdG9yLkF0dHJpYnV0ZVZhbHVlLlBSSU1BUllfOworICAgICAgICB2YWx1ZVsxXSA9IFJ1bGVCYXNlZENvbGxhdG9yLkF0dHJpYnV0ZVZhbHVlLlNFQ09OREFSWV87CisgICAgICAgIHZhbHVlWzJdID0gUnVsZUJhc2VkQ29sbGF0b3IuQXR0cmlidXRlVmFsdWUuVEVSVElBUllfOworCSAgICBSVUxFU19PUFRJT05TX1s5XSA9IG5ldyBUb2tlbk9wdGlvbigiYmVmb3JlIiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IuQXR0cmlidXRlLkxJTUlUXywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLCB2YWx1ZSk7CisJICAgIFJVTEVTX09QVElPTlNfWzEwXSA9IG5ldyBUb2tlbk9wdGlvbigidG9wIiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IuQXR0cmlidXRlLkxJTUlUXywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwgbnVsbCk7CisgICAgICAgIFN0cmluZyBmaXJzdGxhc3RvcHRpb25bXSA9IG5ldyBTdHJpbmdbN107CisgICAgICAgIGZpcnN0bGFzdG9wdGlvblswXSA9ICJwcmltYXJ5IjsKKyAgICAgICAgZmlyc3RsYXN0b3B0aW9uWzFdID0gInNlY29uZGFyeSI7CisgICAgICAgIGZpcnN0bGFzdG9wdGlvblsyXSA9ICJ0ZXJ0aWFyeSI7CisgICAgICAgIGZpcnN0bGFzdG9wdGlvblszXSA9ICJ2YXJpYWJsZSI7CisgICAgICAgIGZpcnN0bGFzdG9wdGlvbls0XSA9ICJyZWd1bGFyIjsKKyAgICAgICAgZmlyc3RsYXN0b3B0aW9uWzVdID0gImltcGxpY2l0IjsKKyAgICAgICAgZmlyc3RsYXN0b3B0aW9uWzZdID0gInRyYWlsaW5nIjsKKworICAgICAgICBpbnQgZmlyc3RsYXN0dmFsdWVbXSA9IG5ldyBpbnRbN107CisgICAgICAgIEFycmF5cy5maWxsKGZpcnN0bGFzdHZhbHVlLCBSdWxlQmFzZWRDb2xsYXRvci5BdHRyaWJ1dGVWYWx1ZS5QUklNQVJZXyk7CisKKwkgICAgUlVMRVNfT1BUSU9OU19bMTFdID0gbmV3IFRva2VuT3B0aW9uKCJmaXJzdCIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yLkF0dHJpYnV0ZS5MSU1JVF8sIAorCSAgICAJICAgICAgICAgICAgICAgICAgICAgIGZpcnN0bGFzdG9wdGlvbiwgZmlyc3RsYXN0dmFsdWUpOworICAgICAgICBSVUxFU19PUFRJT05TX1sxMl0gPSBuZXcgVG9rZW5PcHRpb24oImxhc3QiLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdWxlQmFzZWRDb2xsYXRvci5BdHRyaWJ1dGUuTElNSVRfLCAKKwkgICAgCSAgICAgICAgICAgICAgICAgICAgICBmaXJzdGxhc3RvcHRpb24sIGZpcnN0bGFzdHZhbHVlKTsKKyAgICAgICAgUlVMRVNfT1BUSU9OU19bMTNdID0gbmV3IFRva2VuT3B0aW9uKCJvcHRpbWl6ZSIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yLkF0dHJpYnV0ZS5MSU1JVF8sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsIG51bGwpOworICAgICAgICBSVUxFU19PUFRJT05TX1sxNF0gPSBuZXcgVG9rZW5PcHRpb24oInN1cHByZXNzQ29udHJhY3Rpb25zIiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IuQXR0cmlidXRlLkxJTUlUXywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwgbnVsbCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCSAgICBSVUxFU19PUFRJT05TX1sxNV0gPSBuZXcgVG9rZW5PcHRpb24oInVuZGVmaW5lZCIsIAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yLkF0dHJpYnV0ZS5MSU1JVF8sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsIG51bGwpOworCSAgICBSVUxFU19PUFRJT05TX1sxNl0gPSBuZXcgVG9rZW5PcHRpb24oInNjcmlwdE9yZGVyIiwgCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IuQXR0cmlidXRlLkxJTUlUXywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwgbnVsbCk7CisJICAgIFJVTEVTX09QVElPTlNfWzE3XSA9IG5ldyBUb2tlbk9wdGlvbigiY2hhcnNldG5hbWUiLCAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdWxlQmFzZWRDb2xsYXRvci5BdHRyaWJ1dGUuTElNSVRfLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsLCBudWxsKTsKKwkgICAgUlVMRVNfT1BUSU9OU19bMThdID0gbmV3IFRva2VuT3B0aW9uKCJjaGFyc2V0IiwgCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IuQXR0cmlidXRlLkxJTUlUXywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwgbnVsbCk7CisJfTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBVdGlsaXR5IGRhdGEgbWVtYmVycworICAgICAqLworICAgIHByaXZhdGUgVG9rZW4gbV91dGlsVG9rZW5fID0gbmV3IFRva2VuKCk7CisgICAgcHJpdmF0ZSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IgbV9VQ0FDb2xFSXRlcl8gCisgICAgICAgICAgICAgICAgICAgICAgPSBSdWxlQmFzZWRDb2xsYXRvci5VQ0FfLmdldENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvcigiIik7CisgICAgcHJpdmF0ZSBpbnQgbV91dGlsQ0VCdWZmZXJfW10gPSBuZXcgaW50WzJdOworICAgIAorICAgIC8vIHByaXZhdGUgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBBc3NlbWJsZXMgdGhlIHRva2VuIGxpc3QKKyAgICAgKiBAcGFyYW0KKyAgICAgKiBAZXhjZXB0aW9uIFBhcnNlRXhjZXB0aW9uIHRocm93biB3aGVuIHJ1bGVzIHN5bnRheCBmYWlscworICAgICAqLworICAgIGludCBhc3NlbWJsZVRva2VuTGlzdCgpIHRocm93cyBQYXJzZUV4Y2VwdGlvbgorICAgIHsKKwkJVG9rZW4gbGFzdFRva2VuID0gbnVsbDsKKwkgICAgbV9wYXJzZWRUb2tlbl8ubV9zdHJlbmd0aF8gPSBUT0tFTl9VTlNFVF87IAorICAgICAgICBpbnQgc291cmNlbGltaXQgPSBtX3NvdXJjZV8ubGVuZ3RoKCk7CisgICAgICAgIGludCBleHBhbmROZXh0ID0gMDsKKwkJCisgICAgICAgIHdoaWxlIChtX2N1cnJlbnRfIDwgc291cmNlbGltaXQpIHsKKyAgICAgICAgICAgIG1fcGFyc2VkVG9rZW5fLm1fcHJlZml4T2Zmc2V0XyA9IDA7CisJCSAgICBpZiAocGFyc2VOZXh0VG9rZW4obGFzdFRva2VuID09IG51bGwpIDwgMCkgeworICAgICAgICAgICAgICAgIC8vIHdlIGhhdmUgcmVhY2hlZCB0aGUgZW5kCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisJCSAgICBjaGFyIHNwZWNzID0gbV9wYXJzZWRUb2tlbl8ubV9mbGFnc187CisJCSAgICBib29sZWFuIHZhcmlhYmxlVG9wID0gKChzcGVjcyAmIFRPS0VOX1ZBUklBQkxFX1RPUF9NQVNLXykgIT0gMCk7CisJCSAgICBib29sZWFuIHRvcCA9ICgoc3BlY3MgJiBUT0tFTl9UT1BfTUFTS18pICE9IDApOworCQkgICAgaW50IGxhc3RTdHJlbmd0aCA9IFRPS0VOX1VOU0VUXzsKKyAgICAgICAgICAgIGlmIChsYXN0VG9rZW4gIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGxhc3RTdHJlbmd0aCA9IGxhc3RUb2tlbi5tX3N0cmVuZ3RoXzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fdXRpbFRva2VuXy5tX3NvdXJjZV8gPSBtX3BhcnNlZFRva2VuXy5tX2NoYXJzTGVuXyA8PCAyNCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbV9wYXJzZWRUb2tlbl8ubV9jaGFyc09mZnNldF87CisgICAgICAgICAgICBtX3V0aWxUb2tlbl8ubV9ydWxlc18gPSBtX3NvdXJjZV87CisgICAgICAgICAgICAvLyA0IExvb2t1cCBlYWNoIHNvdXJjZSBpbiB0aGUgQ2hhcnNUb1Rva2VuIG1hcCwgYW5kIGZpbmQgYSAKKyAgICAgICAgICAgIC8vIHNvdXJjZXRva2VuCisgICAgICAgICAgICBUb2tlbiBzb3VyY2VUb2tlbiA9IChUb2tlbiltX2hhc2hUYWJsZV8uZ2V0KG1fdXRpbFRva2VuXyk7CisgICAgICAgICAgICBpZiAobV9wYXJzZWRUb2tlbl8ubV9zdHJlbmd0aF8gIT0gVE9LRU5fUkVTRVRfKSB7CisJCSAgICAgICAgaWYgKGxhc3RUb2tlbiA9PSBudWxsKSB7IAorCQkgICAgICAgIAkvLyB0aGlzIG1lYW5zIHRoYXQgcnVsZXMgaGF2ZW4ndCBzdGFydGVkIHByb3Blcmx5CisJCSAgICAgICAgICAgIHRocm93UGFyc2VFeGNlcHRpb24obV9zb3VyY2VfLnRvU3RyaW5nKCksIDApOworCQkgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvLyAgNiBPdGhlcndpc2UgKHdoZW4gcmVsYXRpb24gIT0gcmVzZXQpCisgICAgICAgICAgICAgICAgaWYgKHNvdXJjZVRva2VuID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgc291cmNlVG9rZW4gaXMgbnVsbCwgY3JlYXRlIG5ldyBvbmUKKwkJICAgICAgICAgICAgc291cmNlVG9rZW4gPSBuZXcgVG9rZW4oKTsKKyAgICAgCQkgICAgICAgIHNvdXJjZVRva2VuLm1fcnVsZXNfID0gbV9zb3VyY2VfOworCQkgICAgICAgICAgICBzb3VyY2VUb2tlbi5tX3NvdXJjZV8gPSBtX3BhcnNlZFRva2VuXy5tX2NoYXJzTGVuXyA8PCAyNCAKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG1fcGFyc2VkVG9rZW5fLm1fY2hhcnNPZmZzZXRfOworCQkgICAgICAgICAgICBzb3VyY2VUb2tlbi5tX3ByZWZpeF8gPSBtX3BhcnNlZFRva2VuXy5tX3ByZWZpeExlbl8gPDwgMjQgCisJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBtX3BhcnNlZFRva2VuXy5tX3ByZWZpeE9mZnNldF87CisJCSAgICAgICAgICAgIC8vIFRPRE86IHRoaXMgc2hvdWxkIGFsc28gaGFuZGxlIHJldmVyc2UKKwkJICAgICAgICAgICAgc291cmNlVG9rZW4ubV9wb2xhcml0eV8gPSBUT0tFTl9QT0xBUklUWV9QT1NJVElWRV87IAorICAgIAkJICAgICAgICBzb3VyY2VUb2tlbi5tX25leHRfID0gbnVsbDsKKyAJCSAgICAgICAgICAgIHNvdXJjZVRva2VuLm1fcHJldmlvdXNfID0gbnVsbDsKKwkJICAgICAgICAgICAgc291cmNlVG9rZW4ubV9DRUxlbmd0aF8gPSAwOworCQkgICAgICAgICAgICBzb3VyY2VUb2tlbi5tX2V4cENFTGVuZ3RoXyA9IDA7CisJCSAgICAgICAgICAgIG1faGFzaFRhYmxlXy5wdXQoc291cmNlVG9rZW4sIHNvdXJjZVRva2VuKTsKKwkJICAgICAgICB9IAorCQkgICAgICAgIGVsc2UgeworCQkgICAgICAgICAgICAvLyB3ZSBjb3VsZCBoYXZlIGZpc2hlZCBvdXQgYSByZXNldCBoZXJlCisJCSAgICAgICAgICAgIGlmIChzb3VyY2VUb2tlbi5tX3N0cmVuZ3RoXyAhPSBUT0tFTl9SRVNFVF8gCisJCSAgICAgICAgICAgICAgICAmJiBsYXN0VG9rZW4gIT0gc291cmNlVG9rZW4pIHsKKwkJICAgICAgICAgICAgICAgIC8vIG90aGVyd2lzZSByZW1vdmUgc291cmNlVG9rZW4gZnJvbSB3aGVyZSBpdCB3YXMuCisJCSAgICAgICAgICAgICAgICBpZiAoc291cmNlVG9rZW4ubV9uZXh0XyAhPSBudWxsKSB7CisJCSAgICAgICAgICAgICAgICAgICAgaWYgKHNvdXJjZVRva2VuLm1fbmV4dF8ubV9zdHJlbmd0aF8gCisJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+IHNvdXJjZVRva2VuLm1fc3RyZW5ndGhfKSB7CisJCSAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVRva2VuLm1fbmV4dF8ubV9zdHJlbmd0aF8gCisJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IHNvdXJjZVRva2VuLm1fc3RyZW5ndGhfOworCQkgICAgICAgICAgICAgICAgICAgIH0KKwkJICAgICAgICAgICAgICAgICAgICBzb3VyY2VUb2tlbi5tX25leHRfLm1fcHJldmlvdXNfIAorCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gc291cmNlVG9rZW4ubV9wcmV2aW91c187CisJCSAgICAgICAgICAgICAgICB9IAorCQkgICAgICAgICAgICAgICAgZWxzZSB7CisJCSAgICAgICAgICAgICAgICAgICAgc291cmNlVG9rZW4ubV9saXN0SGVhZGVyXy5tX2xhc3RfIAorCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gc291cmNlVG9rZW4ubV9wcmV2aW91c187CisJCSAgICAgICAgICAgICAgICB9CisJCSAgICAgICAgICAgICAgICBpZiAoc291cmNlVG9rZW4ubV9wcmV2aW91c18gIT0gbnVsbCkgeworCQkgICAgICAgICAgICAgICAgICAgIHNvdXJjZVRva2VuLm1fcHJldmlvdXNfLm1fbmV4dF8gCisJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gc291cmNlVG9rZW4ubV9uZXh0XzsKKwkJICAgICAgICAgICAgICAgIH0gCisJCSAgICAgICAgICAgICAgICBlbHNlIHsKKwkJICAgICAgICAgICAgICAgICAgICBzb3VyY2VUb2tlbi5tX2xpc3RIZWFkZXJfLm1fZmlyc3RfIAorCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IHNvdXJjZVRva2VuLm1fbmV4dF87CisJCSAgICAgICAgICAgICAgICB9CisJCSAgICAgICAgICAgICAgICBzb3VyY2VUb2tlbi5tX25leHRfID0gbnVsbDsKKwkJICAgICAgICAgICAgICAgIHNvdXJjZVRva2VuLm1fcHJldmlvdXNfID0gbnVsbDsKKwkJICAgICAgICAgICAgfQorCQkgICAgICAgIH0KKyAgICAgICAgCQlzb3VyY2VUb2tlbi5tX3N0cmVuZ3RoXyA9IG1fcGFyc2VkVG9rZW5fLm1fc3RyZW5ndGhfOworICAgICAgICAgICAgICAgIHNvdXJjZVRva2VuLm1fbGlzdEhlYWRlcl8gPSBsYXN0VG9rZW4ubV9saXN0SGVhZGVyXzsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyAxLiAgRmluZCB0aGUgc3Ryb25nZXN0IHN0cmVuZ3RoIGluIGVhY2ggbGlzdCwgYW5kIHNldCAKKyAgICAgICAgICAgICAgICAvLyBzdHJvbmdlc3RQIGFuZCBzdHJvbmdlc3ROIGFjY29yZGluZ2x5IGluIHRoZSBoZWFkZXJzLiAKKyAgICAgICAgICAgICAgICBpZiAobGFzdFN0cmVuZ3RoID09IFRPS0VOX1JFU0VUXworICAgICAgICAgICAgICAgICAgICB8fCBzb3VyY2VUb2tlbi5tX2xpc3RIZWFkZXJfLm1fZmlyc3RfID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgTEFTVCBpcyBhIHJlc2V0IGluc2VydCBzb3VyY2VUb2tlbiBpbiB0aGUgbGlzdC4KKwkJCSAgICAgICAgaWYgKHNvdXJjZVRva2VuLm1fbGlzdEhlYWRlcl8ubV9maXJzdF8gPT0gbnVsbCkgeworCQkJICAgICAgICAgICAgc291cmNlVG9rZW4ubV9saXN0SGVhZGVyXy5tX2ZpcnN0XyA9IHNvdXJjZVRva2VuOworCQkJICAgICAgICAgICAgc291cmNlVG9rZW4ubV9saXN0SGVhZGVyXy5tX2xhc3RfID0gc291cmNlVG9rZW47CisJCQkgICAgICAgIH0gCisJCQkgICAgICAgIGVsc2UgeyAvLyB3ZSBuZWVkIHRvIGZpbmQgYSBwbGFjZSBmb3IgdXMKKwkJCSAgICAgICAgICAgICAgIC8vIGFuZCB3ZSdsbCBnZXQgaW4gZnJvbnQgb2YgdGhlIHNhbWUgc3RyZW5ndGgKKwkJCSAgICAgICAgICAgIGlmIChzb3VyY2VUb2tlbi5tX2xpc3RIZWFkZXJfLm1fZmlyc3RfLm1fc3RyZW5ndGhfIAorCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw9IHNvdXJjZVRva2VuLm1fc3RyZW5ndGhfKSB7CisJCQkgICAgICAgICAgICAgICAgc291cmNlVG9rZW4ubV9uZXh0XyAKKwkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gc291cmNlVG9rZW4ubV9saXN0SGVhZGVyXy5tX2ZpcnN0XzsKKwkJCSAgICAgICAgICAgICAgICBzb3VyY2VUb2tlbi5tX25leHRfLm1fcHJldmlvdXNfID0gc291cmNlVG9rZW47CisJCQkgICAgICAgICAgICAgICAgc291cmNlVG9rZW4ubV9saXN0SGVhZGVyXy5tX2ZpcnN0XyA9IHNvdXJjZVRva2VuOworCQkJICAgICAgICAgICAgICAgIHNvdXJjZVRva2VuLm1fcHJldmlvdXNfID0gbnVsbDsKKwkJCSAgICAgICAgICAgIH0gCisJCQkgICAgICAgICAgICBlbHNlIHsKKwkJCSAgICAgICAgICAgICAgICBsYXN0VG9rZW4gPSBzb3VyY2VUb2tlbi5tX2xpc3RIZWFkZXJfLm1fZmlyc3RfOworCQkJICAgICAgICAgICAgICAgIHdoaWxlIChsYXN0VG9rZW4ubV9uZXh0XyAhPSBudWxsIAorCQkJICAgICAgICAgICAgICAgICAgICAgICAmJiBsYXN0VG9rZW4ubV9uZXh0Xy5tX3N0cmVuZ3RoXyAKKwkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+IHNvdXJjZVRva2VuLm1fc3RyZW5ndGhfKSB7CisJCQkgICAgICAgICAgICAgICAgICAgIGxhc3RUb2tlbiA9IGxhc3RUb2tlbi5tX25leHRfOworCQkJICAgICAgICAgICAgICAgIH0KKwkJCSAgICAgICAgICAgICAgICBpZiAobGFzdFRva2VuLm1fbmV4dF8gIT0gbnVsbCkgeworCQkJICAgICAgICAgICAgICAgICAgICBsYXN0VG9rZW4ubV9uZXh0Xy5tX3ByZXZpb3VzXyA9IHNvdXJjZVRva2VuOworCQkJICAgICAgICAgICAgICAgIH0gCisJCQkgICAgICAgICAgICAgICAgZWxzZSB7CisJCQkgICAgICAgICAgICAgICAgICAgIHNvdXJjZVRva2VuLm1fbGlzdEhlYWRlcl8ubV9sYXN0XyAKKwkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gc291cmNlVG9rZW47CisJCQkgICAgICAgICAgICAgICAgfQorCQkJICAgICAgICAgICAgICAgIHNvdXJjZVRva2VuLm1fcHJldmlvdXNfID0gbGFzdFRva2VuOworCQkJICAgICAgICAgICAgICAgIHNvdXJjZVRva2VuLm1fbmV4dF8gPSBsYXN0VG9rZW4ubV9uZXh0XzsKKwkJCSAgICAgICAgICAgICAgICBsYXN0VG9rZW4ubV9uZXh0XyA9IHNvdXJjZVRva2VuOworCQkJICAgICAgICAgICAgfQorCQkJICAgICAgICB9CisgICAgICAgICAgICAgICAgfSAKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlICh3aGVuIExBU1QgaXMgbm90IGEgcmVzZXQpIAorICAgICAgICAgICAgICAgICAgICAvLyBpZiBwb2xhcml0eSAoTEFTVCkgPT0gcG9sYXJpdHkocmVsYXRpb24pLCBpbnNlcnQgCisgICAgICAgICAgICAgICAgICAgIC8vIHNvdXJjZVRva2VuIGFmdGVyIExBU1QsIG90aGVyd2lzZSBpbnNlcnQgYmVmb3JlLiAKKyAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiBpbnNlcnRpbmcgYWZ0ZXIgb3IgYmVmb3JlLCBzZWFyY2ggdG8gdGhlIG5leHQgCisgICAgICAgICAgICAgICAgICAgIC8vIHBvc2l0aW9uIHdpdGggdGhlIHNhbWUgc3RyZW5ndGggaW4gdGhhdCBkaXJlY3Rpb24uIAorICAgICAgICAgICAgICAgICAgICAvLyAoVGhpcyBpcyBjYWxsZWQgcG9zdHBvbmUgaW5zZXJ0aW9uKS4gICAgICAgIAorCQkJICAgICAgICBpZiAoc291cmNlVG9rZW4gIT0gbGFzdFRva2VuKSB7IAorCQkJICAgICAgICAgICAgaWYgKGxhc3RUb2tlbi5tX3BvbGFyaXR5XyA9PSBzb3VyY2VUb2tlbi5tX3BvbGFyaXR5XykgeworCQkJICAgICAgICAgICAgICAgIHdoaWxlIChsYXN0VG9rZW4ubV9uZXh0XyAhPSBudWxsIAorCQkJICAgICAgICAgICAgICAgICAgICAgICAmJiBsYXN0VG9rZW4ubV9uZXh0Xy5tX3N0cmVuZ3RoXyAKKwkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4gc291cmNlVG9rZW4ubV9zdHJlbmd0aF8pIHsKKwkJCSAgICAgICAgICAgICAgICAgICAgbGFzdFRva2VuID0gbGFzdFRva2VuLm1fbmV4dF87CisJCQkgICAgICAgICAgICAgICAgfQorCQkJICAgICAgICAgICAgICAgIHNvdXJjZVRva2VuLm1fcHJldmlvdXNfID0gbGFzdFRva2VuOworCQkJICAgICAgICAgICAgICAgIGlmIChsYXN0VG9rZW4ubV9uZXh0XyAhPSBudWxsKSB7CisJCQkgICAgICAgICAgICAgICAgICAgIGxhc3RUb2tlbi5tX25leHRfLm1fcHJldmlvdXNfID0gc291cmNlVG9rZW47CisJCQkgICAgICAgICAgICAgICAgfSAKKwkJCSAgICAgICAgICAgICAgICBlbHNlIHsKKwkJCSAgICAgICAgICAgICAgICAgICAgc291cmNlVG9rZW4ubV9saXN0SGVhZGVyXy5tX2xhc3RfID0gc291cmNlVG9rZW47CisJCQkgICAgICAgICAgICAgICAgfQorCQkJICAgICAgICAgICAgICAgIHNvdXJjZVRva2VuLm1fbmV4dF8gPSBsYXN0VG9rZW4ubV9uZXh0XzsKKwkJCSAgICAgICAgICAgICAgICBsYXN0VG9rZW4ubV9uZXh0XyA9IHNvdXJjZVRva2VuOworCQkJICAgICAgICAgICAgfSAKKwkJCSAgICAgICAgICAgIGVsc2UgeworCQkJICAgICAgICAgICAgICAgIHdoaWxlIChsYXN0VG9rZW4ubV9wcmV2aW91c18gIT0gbnVsbCAKKwkJCSAgICAgICAgICAgICAgICAgICAgICAgJiYgbGFzdFRva2VuLm1fcHJldmlvdXNfLm1fc3RyZW5ndGhfIAorCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiBzb3VyY2VUb2tlbi5tX3N0cmVuZ3RoXykgeworCQkJICAgICAgICAgICAgICAgICAgICBsYXN0VG9rZW4gPSBsYXN0VG9rZW4ubV9wcmV2aW91c187CisJCQkgICAgICAgICAgICAgICAgfQorCQkJICAgICAgICAgICAgICAgIHNvdXJjZVRva2VuLm1fbmV4dF8gPSBsYXN0VG9rZW47CisJCQkgICAgICAgICAgICAgICAgaWYgKGxhc3RUb2tlbi5tX3ByZXZpb3VzXyAhPSBudWxsKSB7CisJCQkgICAgICAgICAgICAgICAgICAgIGxhc3RUb2tlbi5tX3ByZXZpb3VzXy5tX25leHRfID0gc291cmNlVG9rZW47CisJCQkgICAgICAgICAgICAgICAgfSAKKwkJCSAgICAgICAgICAgICAgICBlbHNlIHsKKwkJCSAgICAgICAgICAgICAgICAgICAgc291cmNlVG9rZW4ubV9saXN0SGVhZGVyXy5tX2ZpcnN0XyAKKwkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBzb3VyY2VUb2tlbjsKKwkJCSAgICAgICAgICAgICAgICB9CisJCQkgICAgICAgICAgICAgICAgc291cmNlVG9rZW4ubV9wcmV2aW91c18gPSBsYXN0VG9rZW4ubV9wcmV2aW91c187CisJCQkgICAgICAgICAgICAgICAgbGFzdFRva2VuLm1fcHJldmlvdXNfID0gc291cmNlVG9rZW47CisJCQkgICAgICAgICAgICB9CisJCQkgICAgICAgIH0gCisJCQkgICAgICAgIGVsc2UgeyAvLyByZXBlYXRlZCBvbmUgdGhpbmcgdHdpY2UgaW4gcnVsZXMsIHN0YXkgd2l0aCB0aGUgCisJCQkgICAgICAgIAkgICAvLyBzdHJvbmdlciBzdHJlbmd0aCAKKwkJCSAgICAgICAgICAgIGlmIChsYXN0U3RyZW5ndGggPCBzb3VyY2VUb2tlbi5tX3N0cmVuZ3RoXykgeworCQkJICAgICAgICAgICAgICAgIHNvdXJjZVRva2VuLm1fc3RyZW5ndGhfID0gbGFzdFN0cmVuZ3RoOworCQkJICAgICAgICAgICAgfQorCQkJICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8vIGlmIHRoZSB0b2tlbiB3YXMgYSB2YXJpYWJsZSB0b3AsIHdlJ3JlIGdvbm5hIHB1dCBpdCBpbiAKKyAgICAgICAgICAgICAgICBpZiAodmFyaWFibGVUb3AgPT0gdHJ1ZSAmJiBtX3ZhcmlhYmxlVG9wXyA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlVG9wID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIG1fdmFyaWFibGVUb3BfID0gc291cmNlVG9rZW47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8vIFRyZWF0IHRoZSBleHBhbnNpb25zLgorICAgICAgICAgICAgICAgIC8vIFRoZXJlIGFyZSB0d28gdHlwZXMgb2YgZXhwYW5zaW9uczogZXhwbGljaXQgKHggLyB5KSBhbmQgCisgICAgICAgICAgICAgICAgLy8gcmVzZXQgYmFzZWQgcHJvcGFnYXRpbmcgZXhwYW5zaW9ucyAKKyAgICAgICAgICAgICAgICAvLyAoJmFiYyAqIGQgKiBlIDw9PiAmYWIgKiBkIC8gYyAqIGUgLyBjKSAKKyAgICAgICAgICAgICAgICAvLyBpZiBib3RoIG9mIHRoZW0gYXJlIGluIGVmZmVjdCBmb3IgYSB0b2tlbiwgdGhleSBhcmUgY29tYmluZWQuCisgICAgICAgICAgICAgICBzb3VyY2VUb2tlbi5tX2V4cGFuc2lvbl8gPSBtX3BhcnNlZFRva2VuXy5tX2V4dGVuc2lvbkxlbl8gPDwgMjQgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG1fcGFyc2VkVG9rZW5fLm1fZXh0ZW5zaW9uT2Zmc2V0XzsKKyAgICAgICAgICAgICAgIGlmIChleHBhbmROZXh0ICE9IDApIHsKKwkJICAgICAgICAgICBpZiAoc291cmNlVG9rZW4ubV9zdHJlbmd0aF8gPT0gUnVsZUJhc2VkQ29sbGF0b3IuUFJJTUFSWSkgeyAKKwkJICAgICAgICAgICAgICAgLy8gcHJpbWFyeSBzdHJlbmd0aCBraWxscyBvZmYgdGhlIGltcGxpY2l0IGV4cGFuc2lvbiAKKwkJICAgICAgICAgICAgICAgZXhwYW5kTmV4dCA9IDA7CisJCSAgICAgICAgICAgfSAKKwkJICAgICAgICAgICBlbHNlIGlmIChzb3VyY2VUb2tlbi5tX2V4cGFuc2lvbl8gPT0gMCkgeyAKKwkJICAgICAgICAgICAgICAgLy8gaWYgdGhlcmUgaXMgbm8gZXhwYW5zaW9uLCBpbXBsaWNpdCBpcyBqdXN0IGFkZGVkIHRvIAorCQkgICAgICAgICAgICAgICAvLyB0aGUgdG9rZW4gCisJCSAgICAgICAgICAgICAgIHNvdXJjZVRva2VuLm1fZXhwYW5zaW9uXyA9IGV4cGFuZE5leHQ7CisJCSAgICAgICAgICAgfSAKKwkJICAgICAgICAgICBlbHNlIHsgCisJCSAgICAgICAgICAgICAgIC8vIHRoZXJlIGlzIGJvdGggZXhwbGljaXQgYW5kIGltcGxpY2l0IGV4cGFuc2lvbi4gCisJCSAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gbWFrZSBhIGNvbWJpbmF0aW9uCisJCSAgICAgICAgICAgICAgIGludCBzdGFydCA9IGV4cGFuZE5leHQgJiAweEZGRkZGRjsKKyAgICAgICAgICAgICAgICAgICAgICAgaW50IHNpemUgPSBleHBhbmROZXh0ID4+PiAyNDsKKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNpemUgPiAwKSB7CisJCSAgICAgICAgICAgICAgICAgIG1fc291cmNlXy5hcHBlbmQobV9zb3VyY2VfLnN1YnN0cmluZyhzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ICsgc2l6ZSkpOworICAgICAgICAgICAgICAgICAgICAgICB9CisgICAJCSAgICAgICAgICAgICAgIHN0YXJ0ID0gbV9wYXJzZWRUb2tlbl8ubV9leHRlbnNpb25PZmZzZXRfOworCQkgICAgICAgICAgICAgICBtX3NvdXJjZV8uYXBwZW5kKG1fc291cmNlXy5zdWJzdHJpbmcoc3RhcnQsIAorCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCArIG1fcGFyc2VkVG9rZW5fLm1fZXh0ZW5zaW9uTGVuXykpOworCQkgICAgICAgICAgICAgICBzb3VyY2VUb2tlbi5tX2V4cGFuc2lvbl8gPSAoc2l6ZSAKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgbV9wYXJzZWRUb2tlbl8ubV9leHRlbnNpb25MZW5fKSA8PCAyNCAKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbV9leHRyYUN1cnJlbnRfOworCQkgICAgICAgICAgICAgICBtX2V4dHJhQ3VycmVudF8gKz0gc2l6ZSArIG1fcGFyc2VkVG9rZW5fLm1fZXh0ZW5zaW9uTGVuXzsKKwkJICAgICAgICAgICB9CisJCSAgICAgICAgfQorICAgICAgICAgICAgfSAKKyAgICAgICAgICAgIGVsc2UgeworCSAgICAgICAgICAgIGlmIChsYXN0VG9rZW4gIT0gbnVsbCAmJiBsYXN0U3RyZW5ndGggPT0gVE9LRU5fUkVTRVRfKSB7CisJICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBwcmV2aW91cyB0b2tlbiB3YXMgYWxzbyBhIHJlc2V0LCB0aGlzIG1lYW5zIHRoYXQgCisJICAgICAgICAgICAgICAgIC8vIHdlIGhhdmUgdHdvIGNvbnNlY3V0aXZlIHJlc2V0cyBhbmQgd2Ugd2FudCB0byByZW1vdmUgdGhlIAorCSAgICAgICAgICAgICAgICAvLyBwcmV2aW91cyBvbmUgaWYgZW1wdHkKKwkgICAgICAgICAgICAgICAgaWYgKG1fbGlzdEhlYWRlcl9bbV9yZXN1bHRMZW5ndGhfIC0gMV0ubV9maXJzdF8gPT0gbnVsbCkgeworCSAgICAgICAgICAgICAgICAgICAgbV9yZXN1bHRMZW5ndGhfIC0tOworCSAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgfQorCSAgICAgICAgICAgIGlmIChzb3VyY2VUb2tlbiA9PSBudWxsKSB7IAorCSAgICAgICAgICAgICAgICAvLyB0aGlzIGlzIGEgcmVzZXQsIGJ1dCBpdCBtaWdodCBzdGlsbCBiZSBzb21ld2hlcmUgaW4gdGhlIAorCSAgICAgICAgICAgICAgICAvLyB0YWlsb3JpbmcsIGluIHNob3J0ZXIgZm9ybQorCSAgICAgICAgICAgICAgICBpbnQgc2VhcmNoQ2hhcnNMZW4gPSBtX3BhcnNlZFRva2VuXy5tX2NoYXJzTGVuXzsKKwkgICAgICAgICAgICAgICAgd2hpbGUgKHNlYXJjaENoYXJzTGVuID4gMSAmJiBzb3VyY2VUb2tlbiA9PSBudWxsKSB7CisJICAgICAgICAgICAgICAgICAgICBzZWFyY2hDaGFyc0xlbiAtLTsKKwkgICAgICAgICAgICAgICAgICAgIC8vIGtleSA9IHNlYXJjaENoYXJzTGVuIDw8IDI0IHwgY2hhcnNPZmZzZXQ7CisJCQkgICAgICAgICAgICBtX3V0aWxUb2tlbl8ubV9zb3VyY2VfID0gc2VhcmNoQ2hhcnNMZW4gPDwgMjQgCisJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG1fcGFyc2VkVG9rZW5fLm1fY2hhcnNPZmZzZXRfOworCQkJICAgICAgICAgICAgbV91dGlsVG9rZW5fLm1fcnVsZXNfID0gbV9zb3VyY2VfOworCQkJICAgICAgICAgICAgc291cmNlVG9rZW4gPSAoVG9rZW4pbV9oYXNoVGFibGVfLmdldChtX3V0aWxUb2tlbl8pOworCQkJICAgICAgICB9CisJCQkgICAgICAgIGlmIChzb3VyY2VUb2tlbiAhPSBudWxsKSB7CisJCQkgICAgICAgICAgICBleHBhbmROZXh0ID0gKG1fcGFyc2VkVG9rZW5fLm1fY2hhcnNMZW5fIAorCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBzZWFyY2hDaGFyc0xlbikgPDwgMjQgCisJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAobV9wYXJzZWRUb2tlbl8ubV9jaGFyc09mZnNldF8gCisJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBzZWFyY2hDaGFyc0xlbik7CisJCQkgICAgICAgIH0KKwkJCSAgICB9CisJCSAgICAgICAgaWYgKChzcGVjcyAmIFRPS0VOX0JFRk9SRV8pICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRvcCA9PSBmYWxzZSkgeyAKKyAgICAJCSAgICAgICAgICAgIC8vIHdlJ3JlIGRvaW5nIGJlZm9yZSAmIHRoZXJlIGlzIG5vIGluZGlyZWN0aW9uCisgICAgCSAgICAgICAgICAgICAgICBpbnQgc3RyZW5ndGggPSAoc3BlY3MgJiBUT0tFTl9CRUZPUkVfKSAtIDE7CisgICAgCSAgICAgICAgICAgICAgICBpZiAoc291cmNlVG9rZW4gIT0gbnVsbCAKKyAgICAJICAgICAgICAgICAgICAgICAgICAmJiBzb3VyY2VUb2tlbi5tX3N0cmVuZ3RoXyAhPSBUT0tFTl9SRVNFVF8pIHsgCisgICAgCSAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBpcyBhIGJlZm9yZSB0aGF0IGlzIGFscmVhZHkgb3JkZXJlZCBpbiB0aGUgVUNBIAorICAgIAkgICAgICAgICAgICAgICAgICAgIC8vIC0gc28gd2UgbmVlZCB0byBnZXQgdGhlIHByZXZpb3VzIHdpdGggZ29vZCBzdHJlbmd0aAorICAgIAkJCSAgICAgICAgICAgIHdoaWxlIChzb3VyY2VUb2tlbi5tX3N0cmVuZ3RoXyA+IHN0cmVuZ3RoIAorICAgIAkJCSAgICAgICAgICAgICAgICAgICAmJiBzb3VyY2VUb2tlbi5tX3ByZXZpb3VzXyAhPSBudWxsKSB7CisgICAgCQkJICAgICAgICAgICAgICAgIHNvdXJjZVRva2VuID0gc291cmNlVG9rZW4ubV9wcmV2aW91c187CisgICAgCQkJICAgICAgICAgICAgfQorICAgIAkJCSAgICAgICAgICAgIC8vIGhlcmUsIGVpdGhlciB3ZSBoaXQgdGhlIHN0cmVuZ3RoIG9yIE5VTEwKKyAgICAJCQkgICAgICAgICAgICBpZiAoc291cmNlVG9rZW4ubV9zdHJlbmd0aF8gPT0gc3RyZW5ndGgpIHsKKyAgICAJCQkgICAgICAgICAgICAgICAgaWYgKHNvdXJjZVRva2VuLm1fcHJldmlvdXNfICE9IG51bGwpIHsKKyAgICAJCQkgICAgICAgICAgICAgICAgICAgIHNvdXJjZVRva2VuID0gc291cmNlVG9rZW4ubV9wcmV2aW91c187CisgICAgCQkJICAgICAgICAgICAgICAgIH0gCisgICAgCQkJICAgICAgICAgICAgICAgIGVsc2UgeyAvLyBzdGFydCBvZiBsaXN0CisgICAgCQkJICAgICAgICAgICAgICAgICAgICBzb3VyY2VUb2tlbiAKKyAgICAJCQkgICAgICAgICAgICAgICAgICAgICAgICAgPSBzb3VyY2VUb2tlbi5tX2xpc3RIZWFkZXJfLm1fcmVzZXRfOworICAgIAkJCSAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAKKyAgICAJCQkgICAgICAgICAgICB9IAorICAgIAkJCSAgICAgICAgICAgIGVsc2UgeyAvLyB3ZSBoaXQgTlVMTCwgd2Ugc2hvdWxkIGJlIGRvaW5nIHRoZSBlbHNlIHBhcnQgCisgICAgCQkJICAgICAgICAgICAgICAgIHNvdXJjZVRva2VuIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IHNvdXJjZVRva2VuLm1fbGlzdEhlYWRlcl8ubV9yZXNldF87CisgICAgCQkJICAgICAgICAgICAgICAgIHNvdXJjZVRva2VuID0gZ2V0VmlyZ2luQmVmb3JlKHNvdXJjZVRva2VuLCAKKyAgICAJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZW5ndGgpOworICAgIAkJCSAgICAgICAgICAgIH0KKyAgICAJCQkgICAgICAgIH0gCisgICAgCQkJICAgICAgICBlbHNlIHsKKyAgICAJCQkgICAgICAgICAgICBzb3VyY2VUb2tlbiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBnZXRWaXJnaW5CZWZvcmUoc291cmNlVG9rZW4sIHN0cmVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBpcyBib3RoIGJlZm9yZSBhbmQgaW5kaXJlY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIHRvcCA9IGZhbHNlOyAKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fbGlzdEhlYWRlcl9bbV9yZXN1bHRMZW5ndGhfXSA9IG5ldyBUb2tlbkxpc3RIZWFkZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fbGlzdEhlYWRlcl9bbV9yZXN1bHRMZW5ndGhfXS5tX3ByZXZpb3VzQ0VfID0gMDsgCisgICAgICAgICAgICAgICAgICAgICAgICBtX2xpc3RIZWFkZXJfW21fcmVzdWx0TGVuZ3RoX10ubV9wcmV2aW91c0NvbnRDRV8gPSAwOyAKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fbGlzdEhlYWRlcl9bbV9yZXN1bHRMZW5ndGhfXS5tX2luZGlyZWN0XyA9IHRydWU7IAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBkbyBzbGlnaHRseSBtb3JlIHdvcmsuIHdlIG5lZWQgdG8gZ2V0IHRoZSAKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJhc2VDRSB1c2luZyB0aGUgaW52ZXJzZSBVQ0EgJiBnZXRQcmV2aW91cy4gVGhlIG5leHQgCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBib3VuZCBpcyBub3Qgc2V0LCBhbmQgd2lsbCBiZSBkZWNpZGVkIGluIHVjb2xfYmxkCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RyZW5ndGggPSAoc3BlY3MgJiBUT0tFTl9CRUZPUkVfKSAtIDE7IAorICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJhc2VDRSA9IElORElSRUNUX0JPVU5EQVJJRVNfWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlZFRva2VuXy5tX2luZGlyZWN0SW5kZXhfXS5tX3N0YXJ0Q0VfOworICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJhc2VDb250Q0UgPSBJTkRJUkVDVF9CT1VOREFSSUVTX1sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlZFRva2VuXy5tX2luZGlyZWN0SW5kZXhfXS5tX3N0YXJ0Q29udENFXzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBjZVtdID0gbmV3IGludFsyXTsgCisgICAgICAgICAgICAgICAgICAgICAgICBDb2xsYXRpb25QYXJzZWRSdWxlQnVpbGRlci5JbnZlcnNlVUNBIGludnVjYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gQ29sbGF0aW9uUGFyc2VkUnVsZUJ1aWxkZXIuSU5WRVJTRV9VQ0FfOworICAgICAgICAgICAgICAgICAgICAgICAgaW52dWNhLmdldEludmVyc2VQcmV2Q0UoYmFzZUNFLCBiYXNlQ29udENFLCBzdHJlbmd0aCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2xpc3RIZWFkZXJfW21fcmVzdWx0TGVuZ3RoX10ubV9iYXNlQ0VfID0gY2VbMF07CisgICAgICAgICAgICAgICAgICAgICAgICBtX2xpc3RIZWFkZXJfW21fcmVzdWx0TGVuZ3RoX10ubV9iYXNlQ29udENFXyA9IGNlWzFdOworICAgICAgICAgICAgICAgICAgICAgICAgbV9saXN0SGVhZGVyX1ttX3Jlc3VsdExlbmd0aF9dLm1fbmV4dENFXyA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2xpc3RIZWFkZXJfW21fcmVzdWx0TGVuZ3RoX10ubV9uZXh0Q29udENFXyA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVRva2VuID0gbmV3IFRva2VuKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBleHBhbmROZXh0ID0gaW5pdEFSZXNldCgwLCBzb3VyY2VUb2tlbik7ICAgIAorICAgIAkJCSAgICB9CisJCQkgICAgfQorCSAgICAgICAgICAgIC8vIDUgSWYgdGhlIHJlbGF0aW9uIGlzIGEgcmVzZXQ6IAorCSAgICAgICAgICAgIC8vIElmIHNvdXJjZVRva2VuIGlzIG51bGwgCisJICAgICAgICAgICAgLy8gQ3JlYXRlIG5ldyBsaXN0LCBjcmVhdGUgbmV3IHNvdXJjZVRva2VuLCBtYWtlIHRoZSBiYXNlQ0UgCisJICAgICAgICAgICAgLy8gZnJvbSBzb3VyY2UsIHB1dCB0aGUgc291cmNlVG9rZW4gaW4gTGlzdEhlYWRlciBvZiB0aGUgbmV3IAorCSAgICAgICAgICAgIC8vIGxpc3QKKwkgICAgICAgICAgICBpZiAoc291cmNlVG9rZW4gPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBpZiAobV9saXN0SGVhZGVyX1ttX3Jlc3VsdExlbmd0aF9dID09IG51bGwpIHsKKwkgICAgICAgICAgICAJICAgIG1fbGlzdEhlYWRlcl9bbV9yZXN1bHRMZW5ndGhfXSA9IG5ldyBUb2tlbkxpc3RIZWFkZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICAvLyAzIENvbnNpZGVyIGVhY2ggaXRlbTogcmVsYXRpb24sIHNvdXJjZSwgYW5kIGV4cGFuc2lvbjogCisJICAgICAgICAgICAgICAgIC8vIGUuZy4gLi4uPCB4IC8geSAuLi4gCisJICAgICAgICAgICAgICAgIC8vIEZpcnN0IGNvbnZlcnQgYWxsIGV4cGFuc2lvbnMgaW50byBub3JtYWwgZm9ybS4gCisJICAgICAgICAgICAgICAgIC8vIEV4YW1wbGVzOiAKKwkgICAgICAgICAgICAgICAgLy8gSWYgInh5IiBkb2Vzbid0IG9jY3VyIGVhcmxpZXIgaW4gdGhlIGxpc3Qgb3IgaW4gdGhlIFVDQSwgCisJICAgICAgICAgICAgICAgIC8vIGNvbnZlcnQgJnh5ICogYyAqIGQgKiAuLi4gaW50byAmeCAqIGMveSAqIGQgKiAuLi4gCisJICAgICAgICAgICAgICAgIC8vIE5vdGU6IHJlc2V0IHZhbHVlcyBjYW4gbmV2ZXIgaGF2ZSBleHBhbnNpb25zLCBhbHRob3VnaCAKKwkgICAgICAgICAgICAgICAgLy8gdGhleSBjYW4gY2F1c2UgdGhlIHZlcnkgbmV4dCBpdGVtIHRvIGhhdmUgb25lLiBUaGV5IG1heSAKKwkgICAgICAgICAgICAgICAgLy8gYmUgY29udHJhY3Rpb25zLCBpZiB0aGV5IGFyZSBmb3VuZCBlYXJsaWVyIGluIHRoZSBsaXN0LiAKKwkJCSAgICAgICAgaWYgKHRvcCA9PSBmYWxzZSkgeworCQkJICAgICAgICAgICAgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yIGNvbGVpdGVyIAorICAgICAgICAgICAgICAgICAgICAgICAgPSBSdWxlQmFzZWRDb2xsYXRvci5VQ0FfLmdldENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvcigKKyAgICAgICAgICAgICAgICAgICAgICAgIAltX3NvdXJjZV8uc3Vic3RyaW5nKG1fcGFyc2VkVG9rZW5fLm1fY2hhcnNPZmZzZXRfLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCW1fcGFyc2VkVG9rZW5fLm1fY2hhcnNPZmZzZXRfIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJKyBtX3BhcnNlZFRva2VuXy5tX2NoYXJzTGVuXykpOworCQkJCisJCQkgICAgICAgICAgICBpbnQgQ0UgPSBjb2xlaXRlci5uZXh0KCk7CisJCQkgICAgICAgICAgICAvLyBvZmZzZXQgdG8gdGhlIGNoYXJhY3RlciBpbiB0aGUgZnVsbCBydWxlIHN0cmluZworCQkJICAgICAgICAgICAgaW50IGV4cGFuZCA9IGNvbGVpdGVyLmdldE9mZnNldCgpIAorCQkJICAgICAgICAgICAgICAgICAgICAgICAgICsgbV9wYXJzZWRUb2tlbl8ubV9jaGFyc09mZnNldF87CisJCQkgICAgICAgICAgICBpbnQgU2Vjb25kQ0UgPSBjb2xlaXRlci5uZXh0KCk7CisJCQkgICAgICAgICAgICAKKwkJCSAgICAgICAgICAgIG1fbGlzdEhlYWRlcl9bbV9yZXN1bHRMZW5ndGhfXS5tX2Jhc2VDRV8gCisJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBDRSAmIDB4RkZGRkZGM0Y7CisJCQkgICAgICAgICAgICBpZiAoUnVsZUJhc2VkQ29sbGF0b3IuaXNDb250aW51YXRpb24oU2Vjb25kQ0UpKSB7CisJCQkgICAgICAgICAgICAgICAgbV9saXN0SGVhZGVyX1ttX3Jlc3VsdExlbmd0aF9dLm1fYmFzZUNvbnRDRV8gCisJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gU2Vjb25kQ0U7CisJCQkgICAgICAgICAgICB9IAorCQkJICAgICAgICAgICAgZWxzZSB7CisJCQkgICAgICAgICAgICAgICAgbV9saXN0SGVhZGVyX1ttX3Jlc3VsdExlbmd0aF9dLm1fYmFzZUNvbnRDRV8gPSAwOworCQkJICAgICAgICAgICAgfQorCQkJICAgICAgICAgICAgbV9saXN0SGVhZGVyX1ttX3Jlc3VsdExlbmd0aF9dLm1fbmV4dENFXyA9IDA7CisJCQkgICAgICAgICAgICBtX2xpc3RIZWFkZXJfW21fcmVzdWx0TGVuZ3RoX10ubV9uZXh0Q29udENFXyA9IDA7CisJCQkgICAgICAgICAgICBtX2xpc3RIZWFkZXJfW21fcmVzdWx0TGVuZ3RoX10ubV9wcmV2aW91c0NFXyA9IDA7CisJCQkgICAgICAgICAgICBtX2xpc3RIZWFkZXJfW21fcmVzdWx0TGVuZ3RoX10ubV9wcmV2aW91c0NvbnRDRV8gPSAwOworCQkJICAgICAgICAgICAgbV9saXN0SGVhZGVyX1ttX3Jlc3VsdExlbmd0aF9dLm1faW5kaXJlY3RfID0gZmFsc2U7CisJCQkgICAgICAgICAgICBzb3VyY2VUb2tlbiA9IG5ldyBUb2tlbigpOworCQkJICAgICAgICAgICAgZXhwYW5kTmV4dCA9IGluaXRBUmVzZXQoZXhwYW5kLCBzb3VyY2VUb2tlbik7CisJCQkgICAgICAgIH0gCisJCQkgICAgICAgIGVsc2UgeyAvLyB0b3AgPT0gVFJVRQorCQkJICAgICAgICAgICAgdG9wID0gZmFsc2U7CisJCQkgICAgICAgICAgICBtX2xpc3RIZWFkZXJfW21fcmVzdWx0TGVuZ3RoX10ubV9wcmV2aW91c0NFXyA9IDA7CisJCQkgICAgICAgICAgICBtX2xpc3RIZWFkZXJfW21fcmVzdWx0TGVuZ3RoX10ubV9wcmV2aW91c0NvbnRDRV8gPSAwOworCQkJICAgICAgICAgICAgbV9saXN0SGVhZGVyX1ttX3Jlc3VsdExlbmd0aF9dLm1faW5kaXJlY3RfID0gdHJ1ZTsKKwkJCSAgICAgICAgICAgIEluZGlyZWN0Qm91bmRhcmllcyBpYiA9IElORElSRUNUX0JPVU5EQVJJRVNfWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VkVG9rZW5fLm1faW5kaXJlY3RJbmRleF9dOworCQkJICAgICAgICAgICAgbV9saXN0SGVhZGVyX1ttX3Jlc3VsdExlbmd0aF9dLm1fYmFzZUNFXyAKKwkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gaWIubV9zdGFydENFXzsKKwkJCSAgICAgICAgICAgIG1fbGlzdEhlYWRlcl9bbV9yZXN1bHRMZW5ndGhfXS5tX2Jhc2VDb250Q0VfIAorCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGliLm1fc3RhcnRDb250Q0VfOworCQkJICAgICAgICAgICAgbV9saXN0SGVhZGVyX1ttX3Jlc3VsdExlbmd0aF9dLm1fbmV4dENFXyAKKwkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gaWIubV9saW1pdENFXzsKKwkJCSAgICAgICAgICAgIG1fbGlzdEhlYWRlcl9bbV9yZXN1bHRMZW5ndGhfXS5tX25leHRDb250Q0VfIAorCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGliLm1fbGltaXRDb250Q0VfOworCQkJICAgICAgICAgICAgc291cmNlVG9rZW4gPSBuZXcgVG9rZW4oKTsKKwkJCSAgICAgICAgICAgIGV4cGFuZE5leHQgPSBpbml0QVJlc2V0KDAsIHNvdXJjZVRva2VuKTsKKwkgICAgICAgICAgICAgICAgfQorCQkgICAgICAgIH0gCisJCSAgICAgICAgZWxzZSB7IC8vIHJlc2V0IHRvIHNvbWV0aGluZyBhbHJlYWR5IGluIHJ1bGVzCisJCSAgICAgICAgICAgIHRvcCA9IGZhbHNlOworCQkgICAgICAgIH0KKwkJICAgIH0KKwkJICAgIC8vIDcgQWZ0ZXIgYWxsIHRoaXMsIHNldCBMQVNUIHRvIHBvaW50IHRvIHNvdXJjZVRva2VuLCBhbmQgZ290byAKKwkJICAgIC8vIHN0ZXAgMy4KKwkJICAgIGxhc3RUb2tlbiA9IHNvdXJjZVRva2VuOworCQl9CisJCSAgCisJCWlmIChtX3Jlc3VsdExlbmd0aF8gPiAwIAorICAgICAgICAgICAgJiYgbV9saXN0SGVhZGVyX1ttX3Jlc3VsdExlbmd0aF8gLSAxXS5tX2ZpcnN0XyA9PSBudWxsKSB7CisJCSAgICBtX3Jlc3VsdExlbmd0aF8gLS07CisJCX0KKwkJcmV0dXJuIG1fcmVzdWx0TGVuZ3RoXzsKKwl9CisgICAgIAorICAgIC8qKgorICAgICAqIEZvcm1hdHMgYW5kIHRocm93cyBhIFBhcnNlRXhjZXB0aW9uCisgICAgICogQHBhcmFtIHJ1bGVzIGNvbGxhdGlvbiBydWxlIHRoYXQgZmFpbGVkCisgICAgICogQHBhcmFtIG9mZnNldCBmYWlsZWQgb2Zmc2V0IGluIHJ1bGVzCisgICAgICogQHRocm93cyBQYXJzZUV4Y2VwdGlvbiB3aXRoIGZhaWx1cmUgaW5mb3JtYXRpb24KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCB2b2lkIHRocm93UGFyc2VFeGNlcHRpb24oU3RyaW5nIHJ1bGVzLCBpbnQgb2Zmc2V0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93cyBQYXJzZUV4Y2VwdGlvbgorICAgIHsKKyAgICAgICAgLy8gZm9yIHByZS1jb250ZXh0CisgICAgICAgIFN0cmluZyBwcmVjb250ZXh0ID0gcnVsZXMuc3Vic3RyaW5nKDAsIG9mZnNldCk7CisgICAgICAgIFN0cmluZyBwb3N0Y29udGV4dCA9IHJ1bGVzLnN1YnN0cmluZyhvZmZzZXQsIHJ1bGVzLmxlbmd0aCgpKTsKKyAgICAgICAgU3RyaW5nQnVmZmVyIGVycm9yID0gbmV3IFN0cmluZ0J1ZmZlcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQYXJzZSBlcnJvciBvY2N1cnJlZCBpbiBydWxlIGF0IG9mZnNldCAiKTsgCisgICAgICAgIGVycm9yLmFwcGVuZChvZmZzZXQpOyAKKyAgICAgICAgZXJyb3IuYXBwZW5kKCJcbiBhZnRlciB0aGUgcHJlZml4IFwiIik7CisgICAgICAgIGVycm9yLmFwcGVuZChwcmVjb250ZXh0KTsKKyAgICAgICAgZXJyb3IuYXBwZW5kKCJcIiBiZWZvcmUgdGhlIHN1ZmZpeCBcIiIpOworICAgICAgICBlcnJvci5hcHBlbmQocG9zdGNvbnRleHQpOworICAgICAgICB0aHJvdyBuZXcgUGFyc2VFeGNlcHRpb24oZXJyb3IudG9TdHJpbmcoKSwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIGRvU2V0VG9wKCkgeworICAgICAgICBtX3BhcnNlZFRva2VuXy5tX2NoYXJzT2Zmc2V0XyA9IG1fZXh0cmFDdXJyZW50XzsKKyAgICAgICAgbV9zb3VyY2VfLmFwcGVuZCgoY2hhcikweEZGRkUpOworICAgICAgICBJbmRpcmVjdEJvdW5kYXJpZXMgaWIgPSAKKyAgICAgICAgICAgICAgICAgIElORElSRUNUX0JPVU5EQVJJRVNfW21fcGFyc2VkVG9rZW5fLm1faW5kaXJlY3RJbmRleF9dOworICAgICAgICBtX3NvdXJjZV8uYXBwZW5kKChjaGFyKShpYi5tX3N0YXJ0Q0VfID4+IDE2KSk7CisgICAgICAgIG1fc291cmNlXy5hcHBlbmQoKGNoYXIpKGliLm1fc3RhcnRDRV8gJiAweEZGRkYpKTsKKyAgICAgICAgbV9leHRyYUN1cnJlbnRfICs9IDM7CisgICAgICAgIGlmIChJTkRJUkVDVF9CT1VOREFSSUVTX1ttX3BhcnNlZFRva2VuXy5tX2luZGlyZWN0SW5kZXhfCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS5tX3N0YXJ0Q29udENFXyA9PSAwKSB7CisgICAgICAgICAgICBtX3BhcnNlZFRva2VuXy5tX2NoYXJzTGVuXyA9IDM7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7IAorICAgICAgICAgICAgbV9zb3VyY2VfLmFwcGVuZCgoY2hhcikoSU5ESVJFQ1RfQk9VTkRBUklFU19bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZWRUb2tlbl8ubV9pbmRpcmVjdEluZGV4XworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS5tX3N0YXJ0Q29udENFXyA+PiAxNikpOyAKKyAgICAgICAgICAgIG1fc291cmNlXy5hcHBlbmQoKGNoYXIpKElORElSRUNUX0JPVU5EQVJJRVNfWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VkVG9rZW5fLm1faW5kaXJlY3RJbmRleF8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0ubV9zdGFydENvbnRDRV8gJiAweEZGRkYpKTsgCisgICAgICAgICAgICBtX2V4dHJhQ3VycmVudF8gKz0gMjsKKyAgICAgICAgICAgIG1fcGFyc2VkVG9rZW5fLm1fY2hhcnNMZW5fID0gNTsKKyAgICAgICAgfSAKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEdldHRpbmcgdGhlIG5leHQgdG9rZW4KKyAgICAgKiBAcGFyYW0gc3RhcnRvZnJ1bGVzIGZsYWcgaW5kaWNhdGluZyBpZiB3ZSBhcmUgYXQgdGhlIHN0YXJ0IG9mIHJ1bGVzCisgICAgICogQHJldHVybiB0aGUgb2Zmc2V0IG9mIHRoZSBydWxlcworICAgICAqIEBleGNlcHRpb24gUGFyc2VFeGNlcHRpb24gdGhyb3duIHdoZW4gcnVsZSBwYXJzaW5nIGZhaWxzCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgcGFyc2VOZXh0VG9rZW4oYm9vbGVhbiBzdGFydG9mcnVsZXMpIHRocm93cyBQYXJzZUV4Y2VwdGlvbgorICAgIHsgCisJICAgIC8vIHBhcnNpbmcgcGFydAorCSAgICBib29sZWFuIHZhcmlhYmxldG9wID0gZmFsc2U7CisJICAgIGJvb2xlYW4gdG9wID0gZmFsc2U7CisJICAgIGJvb2xlYW4gaW5jaGFycyA9IHRydWU7CisJICAgIGJvb2xlYW4gaW5xdW90ZSA9IGZhbHNlOworCSAgICBib29sZWFuIHdhc2lucXVvdGUgPSBmYWxzZTsKKwkgICAgYnl0ZSBiZWZvcmUgPSAwOworCSAgICBib29sZWFuIGlzZXNjYXBlZCA9IGZhbHNlOworCSAgICBpbnQgLypuZXdjaGFyc2xlbiA9IDAsKi8gbmV3ZXh0ZW5zaW9ubGVuID0gMDsKKwkgICAgaW50IC8qY2hhcnNvZmZzZXQgPSAwLCovIGV4dGVuc2lvbm9mZnNldCA9IDA7CisJICAgIGludCBuZXdzdHJlbmd0aCA9IFRPS0VOX1VOU0VUXzsgCisJCisgICAgICAgIG1fcGFyc2VkVG9rZW5fLm1fY2hhcnNMZW5fID0gMDsKKwkgICAgbV9wYXJzZWRUb2tlbl8ubV9jaGFyc09mZnNldF8gPSAwOworICAgICAgICBtX3BhcnNlZFRva2VuXy5tX3ByZWZpeE9mZnNldF8gPSAwOyAKKyAgICAgICAgbV9wYXJzZWRUb2tlbl8ubV9wcmVmaXhMZW5fID0gMDsKKwkgICAgbV9wYXJzZWRUb2tlbl8ubV9pbmRpcmVjdEluZGV4XyA9IDA7CisJCisJICAgIGludCBsaW1pdCA9IG1fcnVsZXNfLmxlbmd0aCgpOworCSAgICB3aGlsZSAobV9jdXJyZW50XyA8IGxpbWl0KSB7CisJICAgICAgICBjaGFyIGNoID0gbV9zb3VyY2VfLmNoYXJBdChtX2N1cnJlbnRfKTsKKwkgICAgICAgIGlmIChpbnF1b3RlKSB7CisJCSAgICAgICAgaWYgKGNoID09IDB4MDAyNykgeyAvLyAnXCcnCisJCSAgICAgICAgICAgIGlucXVvdGUgPSBmYWxzZTsKKwkJICAgICAgICB9IAorICAgICAgICAgICAgICAgIGVsc2UgeworCQkgICAgICAgICAgICBpZiAoKG1fcGFyc2VkVG9rZW5fLm1fY2hhcnNMZW5fID09IDApIHx8IGluY2hhcnMpIHsKKwkJICAgICAgICAgICAgICAgICBpZiAobV9wYXJzZWRUb2tlbl8ubV9jaGFyc0xlbl8gPT0gMCkgeworCQkgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlZFRva2VuXy5tX2NoYXJzT2Zmc2V0XyA9IG1fZXh0cmFDdXJyZW50XzsKKwkJICAgICAgICAgICAgICAgICB9CisJCSAgICAgICAgICAgICAgICAgbV9wYXJzZWRUb2tlbl8ubV9jaGFyc0xlbl8gKys7CisJCSAgICAgICAgICAgIH0gCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworCQkgICAgICAgICAgICAgICAgaWYgKG5ld2V4dGVuc2lvbmxlbiA9PSAwKSB7CisJCSAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9ub2Zmc2V0ID0gbV9leHRyYUN1cnJlbnRfOworCQkgICAgICAgICAgICAgICAgfQorCQkgICAgICAgICAgICAgICAgbmV3ZXh0ZW5zaW9ubGVuICsrOworCQkgICAgICAgICAgICB9CisJCSAgICAgICAgfQorCSAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoaXNlc2NhcGVkKSB7CisJICAgICAgICAgICAgaXNlc2NhcGVkID0gZmFsc2U7CisJICAgICAgICAgICAgaWYgKG5ld3N0cmVuZ3RoID09IFRPS0VOX1VOU0VUXykgeworCSAgICAgICAgICAgICAgICB0aHJvd1BhcnNlRXhjZXB0aW9uKG1fcnVsZXNfLCBtX2N1cnJlbnRfKTsKKwkgICAgICAgICAgICB9CisJICAgICAgICAgICAgaWYgKGNoICE9IDAgJiYgbV9jdXJyZW50XyAhPSBsaW1pdCkgeworCSAgICAgICAgICAgICAgICBpZiAoaW5jaGFycykgeworCSAgICAgICAgICAgICAgICAgICAgaWYgKG1fcGFyc2VkVG9rZW5fLm1fY2hhcnNMZW5fID09IDApIHsKKwkgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlZFRva2VuXy5tX2NoYXJzT2Zmc2V0XyA9IG1fY3VycmVudF87CisJICAgICAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgICAgICAgICBtX3BhcnNlZFRva2VuXy5tX2NoYXJzTGVuXyArKzsKKwkgICAgICAgICAgICAgICAgfSAKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisJICAgICAgICAgICAgICAgICAgICBpZiAobmV3ZXh0ZW5zaW9ubGVuID09IDApIHsKKwkgICAgICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25vZmZzZXQgPSBtX2N1cnJlbnRfOworCSAgICAgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICAgICAgbmV3ZXh0ZW5zaW9ubGVuICsrOworCSAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgfQorCSAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKCFVQ2hhcmFjdGVyUHJvcGVydHkuaXNSdWxlV2hpdGVTcGFjZShjaCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gU2V0cyB0aGUgc3RyZW5ndGggZm9yIHRoaXMgZW50cnkKKwkgICAgICAgICAgICAgICAgc3dpdGNoIChjaCkgeworCSAgICAgICAgICAgICAgICBjYXNlIDB4MDAzRCA6IC8vICc9JworCSAgICAgICAgICAgICAgICAgICAgaWYgKG5ld3N0cmVuZ3RoICE9IFRPS0VOX1VOU0VUXykgeworCSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkb0VuZFBhcnNlTmV4dFRva2VuKG5ld3N0cmVuZ3RoLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3AsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbm9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdleHRlbnNpb25sZW4sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxldG9wLCBiZWZvcmUpOworCSAgICAgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICAgICAgLy8gaWYgd2Ugc3RhcnQgd2l0aCBzdHJlbmd0aCwgd2UnbGwgcmVzZXQgdG8gdG9wCisJICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnRvZnJ1bGVzID09IHRydWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlZFRva2VuXy5tX2luZGlyZWN0SW5kZXhfID0gNTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3AgPSBkb1NldFRvcCgpOworCSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkb0VuZFBhcnNlTmV4dFRva2VuKFRPS0VOX1JFU0VUXywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25vZmZzZXQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld2V4dGVuc2lvbmxlbiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGV0b3AsIGJlZm9yZSk7CisJICAgICAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgICAgICAgICBuZXdzdHJlbmd0aCA9IENvbGxhdG9yLklERU5USUNBTDsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDB4MDAyQyA6IC8vICcsJworCSAgICAgICAgICAgICAgICAgICAgaWYgKG5ld3N0cmVuZ3RoICE9IFRPS0VOX1VOU0VUXykgeworCSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkb0VuZFBhcnNlTmV4dFRva2VuKG5ld3N0cmVuZ3RoLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3AsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbm9mZnNldCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3ZXh0ZW5zaW9ubGVuLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXRvcCwgYmVmb3JlKTsKKwkgICAgICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAgICAgICAgIC8vIGlmIHdlIHN0YXJ0IHdpdGggc3RyZW5ndGgsIHdlJ2xsIHJlc2V0IHRvIHRvcAorCSAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0b2ZydWxlcyA9PSB0cnVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZWRUb2tlbl8ubV9pbmRpcmVjdEluZGV4XyA9IDU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wID0gZG9TZXRUb3AoKTsKKwkgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZG9FbmRQYXJzZU5leHRUb2tlbihUT0tFTl9SRVNFVF8sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9ub2Zmc2V0LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdleHRlbnNpb25sZW4sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxldG9wLCBiZWZvcmUpOworCSAgICAgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICAgICAgbmV3c3RyZW5ndGggPSBDb2xsYXRvci5URVJUSUFSWTsKKwkgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICBjYXNlIDB4MDAzQiA6IC8vICc7JworCSAgICAgICAgICAgICAgICAgICAgaWYgKG5ld3N0cmVuZ3RoICE9IFRPS0VOX1VOU0VUXykgeworCSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkb0VuZFBhcnNlTmV4dFRva2VuKG5ld3N0cmVuZ3RoLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3AsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbm9mZnNldCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3ZXh0ZW5zaW9ubGVuLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXRvcCwgYmVmb3JlKTsgICAKKwkgICAgICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAgICAgICAgIC8vIGlmIHdlIHN0YXJ0IHdpdGggc3RyZW5ndGgsIHdlJ2xsIHJlc2V0IHRvIHRvcAorCSAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0b2ZydWxlcyA9PSB0cnVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZWRUb2tlbl8ubV9pbmRpcmVjdEluZGV4XyA9IDU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wID0gZG9TZXRUb3AoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZG9FbmRQYXJzZU5leHRUb2tlbihUT0tFTl9SRVNFVF8sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9ub2Zmc2V0LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdleHRlbnNpb25sZW4sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxldG9wLCBiZWZvcmUpOworCSAgICAgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICAgICAgbmV3c3RyZW5ndGggPSBDb2xsYXRvci5TRUNPTkRBUlk7CisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgY2FzZSAweDAwM0MgOiAvLyAnPCcKKwkgICAgICAgICAgICAgICAgICAgIGlmIChuZXdzdHJlbmd0aCAhPSBUT0tFTl9VTlNFVF8pIHsKKwkgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZG9FbmRQYXJzZU5leHRUb2tlbihuZXdzdHJlbmd0aCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25vZmZzZXQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld2V4dGVuc2lvbmxlbiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGV0b3AsIGJlZm9yZSk7CisJICAgICAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgICAgICAgICAvLyBpZiB3ZSBzdGFydCB3aXRoIHN0cmVuZ3RoLCB3ZSdsbCByZXNldCB0byB0b3AKKwkJICAgICAgICAgICAgICAgIGlmIChzdGFydG9mcnVsZXMgPT0gdHJ1ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VkVG9rZW5fLm1faW5kaXJlY3RJbmRleF8gPSA1OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcCA9IGRvU2V0VG9wKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRvRW5kUGFyc2VOZXh0VG9rZW4oVE9LRU5fUkVTRVRfLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3AsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbm9mZnNldCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3ZXh0ZW5zaW9ubGVuLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXRvcCwgYmVmb3JlKTsKKwkJICAgICAgICAgICAgICAgIH0KKwkJICAgICAgICAgICAgICAgIC8vIGJlZm9yZSB0aGlzLCBkbyBhIHNjYW4gdG8gdmVyaWZ5IHdoZXRoZXIgdGhpcyBpcyAKKwkJICAgICAgICAgICAgICAgIC8vIGFub3RoZXIgc3RyZW5ndGgKKwkJICAgICAgICAgICAgICAgIGlmIChtX3NvdXJjZV8uY2hhckF0KG1fY3VycmVudF8gKyAxKSA9PSAweDAwM0MpIHsKKwkJICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRfICsrOworCQkgICAgICAgICAgICAgICAgICAgIGlmIChtX3NvdXJjZV8uY2hhckF0KG1fY3VycmVudF8gKyAxKSA9PSAweDAwM0MpIHsKKwkJICAgICAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50XyArKzsgLy8gdGhyZWUgaW4gYSByb3chCisJCSAgICAgICAgICAgICAgICAgICAgICAgIG5ld3N0cmVuZ3RoID0gQ29sbGF0b3IuVEVSVElBUlk7CisJCSAgICAgICAgICAgICAgICAgICAgfSAKKwkJICAgICAgICAgICAgICAgICAgICBlbHNlIHsgLy8gdHdvIGluIGEgcm93IAorCQkgICAgICAgICAgICAgICAgICAgICAgICBuZXdzdHJlbmd0aCA9IENvbGxhdG9yLlNFQ09OREFSWTsKKwkJICAgICAgICAgICAgICAgICAgICB9CisJCSAgICAgICAgICAgICAgICB9IAorCQkgICAgICAgICAgICAgICAgZWxzZSB7IC8vIGp1c3Qgb25lIAorCQkgICAgICAgICAgICAgICAgICAgIG5ld3N0cmVuZ3RoID0gQ29sbGF0b3IuUFJJTUFSWTsKKwkJICAgICAgICAgICAgICAgIH0KKwkJICAgICAgICAgICAgICAgIGJyZWFrOworCQkgICAgICAgICAgICBjYXNlIDB4MDAyNiA6IC8vICcmJworCQkgICAgICAgICAgICAgICAgaWYgKG5ld3N0cmVuZ3RoICE9IFRPS0VOX1VOU0VUXykgeworCQkgICAgICAgICAgICAgICAgICAgIHJldHVybiBkb0VuZFBhcnNlTmV4dFRva2VuKG5ld3N0cmVuZ3RoLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3AsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbm9mZnNldCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3ZXh0ZW5zaW9ubGVuLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXRvcCwgYmVmb3JlKTsKKwkJICAgICAgICAgICAgICAgIH0KKwkJICAgICAgICAgICAgICAgIG5ld3N0cmVuZ3RoID0gVE9LRU5fUkVTRVRfOyAvLyBQYXR0ZXJuRW50cnk6OlJFU0VUID0gMAorCQkgICAgICAgICAgICAgICAgYnJlYWs7CisJCSAgICAgICAgICAgIGNhc2UgMHgwMDViIDogLy8gJ1snCisJCSAgICAgICAgICAgICAgICAvLyBvcHRpb25zIC0gcmVhZCBhbiBvcHRpb24sIGFuYWx5emUgaXQKKwkJICAgICAgICAgICAgICAgIG1fb3B0aW9uRW5kXyA9IG1fcnVsZXNfLmluZGV4T2YoMHgwMDVkLCBtX2N1cnJlbnRfKTsKKwkJICAgICAgICAgICAgICAgIGlmIChtX29wdGlvbkVuZF8gIT0gLTEpIHsgLy8gJ10nCisJCSAgICAgICAgICAgICAgICAgICAgYnl0ZSByZXN1bHQgPSByZWFkQW5kU2V0T3B0aW9uKCk7CisJCSAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50XyA9IG1fb3B0aW9uRW5kXzsKKwkJICAgICAgICAgICAgICAgICAgICBpZiAoKHJlc3VsdCAmIFRPS0VOX1RPUF9NQVNLXykgIT0gMCkgeworCQkgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV3c3RyZW5ndGggPT0gVE9LRU5fUkVTRVRfKSB7IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wID0gZG9TZXRUb3AoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiZWZvcmUgIT0gMCkgeyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgY29tYmluYXRpb24gb2YgYmVmb3JlIGFuZCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbmRpcmVjdGlvbiBsaWtlIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICcmW2JlZm9yZSAyXVtmaXJzdCByZWd1bGFyXTxiJyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NvdXJjZV8uYXBwZW5kKChjaGFyKTB4MDAyZCk7IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc291cmNlXy5hcHBlbmQoKGNoYXIpYmVmb3JlKTsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9leHRyYUN1cnJlbnRfICs9IDI7IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VkVG9rZW5fLm1fY2hhcnNMZW5fICs9IDI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IAorCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50XyArKzsKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkb0VuZFBhcnNlTmV4dFRva2VuKG5ld3N0cmVuZ3RoLCAKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25vZmZzZXQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld2V4dGVuc2lvbmxlbiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGV0b3AsIGJlZm9yZSk7CisJCSAgICAgICAgICAgICAgICAgICAgICAgIH0gCisJCSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dQYXJzZUV4Y2VwdGlvbihtX3J1bGVzXywgbV9jdXJyZW50Xyk7CisJCSAgICAgICAgICAgICAgICAgICAgICAgIH0KKwkJICAgICAgICAgICAgICAgICAgICB9IAorCQkgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKChyZXN1bHQgJiBUT0tFTl9WQVJJQUJMRV9UT1BfTUFTS18pICE9IDApIHsKKwkJICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5ld3N0cmVuZ3RoICE9IFRPS0VOX1JFU0VUXyAKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIG5ld3N0cmVuZ3RoICE9IFRPS0VOX1VOU0VUXykgeworCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGV0b3AgPSB0cnVlOworCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZWRUb2tlbl8ubV9jaGFyc09mZnNldF8gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBtX2V4dHJhQ3VycmVudF87CisJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NvdXJjZV8uYXBwZW5kKChjaGFyKTB4RkZGRik7CisJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2V4dHJhQ3VycmVudF8gKys7CisJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRfICsrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZWRUb2tlbl8ubV9jaGFyc0xlbl8gPSAxOworCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRvRW5kUGFyc2VOZXh0VG9rZW4obmV3c3RyZW5ndGgsIAorCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9ub2Zmc2V0LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdleHRlbnNpb25sZW4sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxldG9wLCBiZWZvcmUpOworCQkgICAgICAgICAgICAgICAgICAgICAgICB9IAorCQkgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93UGFyc2VFeGNlcHRpb24obV9ydWxlc18sIG1fY3VycmVudF8pOworCQkgICAgICAgICAgICAgICAgICAgICAgICB9CisJCSAgICAgICAgICAgICAgICAgICAgfSAKKwkJICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgocmVzdWx0ICYgVE9LRU5fQkVGT1JFXykgIT0gMCl7CisJCSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdzdHJlbmd0aCA9PSBUT0tFTl9SRVNFVF8pIHsKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZSA9IChieXRlKShyZXN1bHQgJiBUT0tFTl9CRUZPUkVfKTsKKwkJICAgICAgICAgICAgICAgICAgICAgICAgfSAKKwkJICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd1BhcnNlRXhjZXB0aW9uKG1fcnVsZXNfLCBtX2N1cnJlbnRfKTsJCQorCQkgICAgICAgICAgICAgICAgICAgICAgICB9CisJCSAgICAgICAgICAgICAgICAgICAgfSAgCisJCSAgICAgICAgICAgICAgICB9CisJCSAgICAgICAgICAgICAgICBicmVhazsKKwkJICAgICAgICAgICAgY2FzZSAweDAwMkYgOiAvLyAnLycKKwkJICAgICAgICAgICAgICAgIHdhc2lucXVvdGUgPSBmYWxzZTsgLy8gaWYgd2Ugd2VyZSBjb3B5aW5nIHNvdXJjZSAKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hhcmFjdGVycywgd2Ugd2FudCB0byBzdG9wIG5vdworCQkgICAgICAgICAgICAgICAgaW5jaGFycyA9IGZhbHNlOyAvLyB3ZSdyZSBub3cgcHJvY2Vzc2luZyBleHBhbnNpb24gCisJCSAgICAgICAgICAgICAgICBicmVhazsKKwkJICAgICAgICAgICAgY2FzZSAweDAwNUMgOiAvLyBiYWNrIHNsYXNoIGZvciBlc2NhcGVkIGNoYXJzCisJCSAgICAgICAgICAgICAgICBpc2VzY2FwZWQgPSB0cnVlOworCQkgICAgICAgICAgICAgICAgYnJlYWs7CisJCSAgICAgICAgICAgIC8vIGZvdW5kIGEgcXVvdGUsIHdlJ3JlIGdvbm5hIHN0YXJ0IGNvcHlpbmcKKwkJICAgICAgICAgICAgY2FzZSAweDAwMjcgOiAvLydcJycKKwkJICAgICAgICAgICAgICAgIGlmIChuZXdzdHJlbmd0aCA9PSBUT0tFTl9VTlNFVF8pIHsgCisJCSAgICAgICAgICAgICAgICAgICAgLy8gcXVvdGUgaXMgaWxsZWdhbCB1bnRpbCB3ZSBoYXZlIGEgc3RyZW5ndGgKKwkJICAgICAgICAgICAgICAgICAgICB0aHJvd1BhcnNlRXhjZXB0aW9uKG1fcnVsZXNfLCBtX2N1cnJlbnRfKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKwkJICAgICAgICAgICAgICAgIGlucXVvdGUgPSB0cnVlOworCQkgICAgICAgICAgICAgICAgaWYgKGluY2hhcnMpIHsgLy8gd2UncmUgZG9pbmcgY2hhcmFjdGVycyAKKwkJICAgICAgICAgICAgICAgICAgICBpZiAod2FzaW5xdW90ZSA9PSBmYWxzZSkgeworCQkgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlZFRva2VuXy5tX2NoYXJzT2Zmc2V0XyA9IG1fZXh0cmFDdXJyZW50XzsKKwkJICAgICAgICAgICAgICAgICAgICB9CisJCSAgICAgICAgICAgICAgICAgICAgaWYgKG1fcGFyc2VkVG9rZW5fLm1fY2hhcnNMZW5fICE9IDApIHsKKwkJICAgICAgICAgICAgICAgICAgICAJbV9zb3VyY2VfLmFwcGVuZChtX3NvdXJjZV8uc3Vic3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50XyAtIG1fcGFyc2VkVG9rZW5fLm1fY2hhcnNMZW5fLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudF8pKTsKKwkJICAgICAgICAgICAgICAgICAgICAgICAgbV9leHRyYUN1cnJlbnRfICs9IG1fcGFyc2VkVG9rZW5fLm1fY2hhcnNMZW5fOworCQkgICAgICAgICAgICAgICAgICAgIH0KKwkJICAgICAgICAgICAgICAgICAgICBtX3BhcnNlZFRva2VuXy5tX2NoYXJzTGVuXyArKzsKKwkJICAgICAgICAgICAgICAgIH0gCisJCSAgICAgICAgICAgICAgICBlbHNlIHsgLy8gd2UncmUgZG9pbmcgYW4gZXhwYW5zaW9uCisJCSAgICAgICAgICAgICAgICAgICAgaWYgKHdhc2lucXVvdGUgPT0gZmFsc2UpIHsKKwkJICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9ub2Zmc2V0ID0gbV9leHRyYUN1cnJlbnRfOworCQkgICAgICAgICAgICAgICAgICAgIH0KKwkJICAgICAgICAgICAgICAgICAgICBpZiAobmV3ZXh0ZW5zaW9ubGVuICE9IDApIHsKKwkJICAgICAgICAgICAgICAgICAgICAgICAgbV9zb3VyY2VfLmFwcGVuZChtX3NvdXJjZV8uc3Vic3RyaW5nKAorCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50XyAtIG5ld2V4dGVuc2lvbmxlbiwKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudF8pKTsKKwkJICAgICAgICAgICAgICAgICAgICAgICAgbV9leHRyYUN1cnJlbnRfICs9IG5ld2V4dGVuc2lvbmxlbjsKKwkJICAgICAgICAgICAgICAgICAgICB9CisJCSAgICAgICAgICAgICAgICAgICAgbmV3ZXh0ZW5zaW9ubGVuICsrOworCQkgICAgICAgICAgICAgICAgfQorCQkgICAgICAgICAgICAgICAgd2FzaW5xdW90ZSA9IHRydWU7CisJCSAgICAgICAgICAgICAgICBtX2N1cnJlbnRfICsrOworCQkgICAgICAgICAgICAgICAgY2ggPSBtX3NvdXJjZV8uY2hhckF0KG1fY3VycmVudF8pOyAKKwkJICAgICAgICAgICAgICAgIGlmIChjaCA9PSAweDAwMjcpIHsgLy8gY29weSB0aGUgZG91YmxlIHF1b3RlCisJCSAgICAgICAgICAgICAgICAgICAgbV9zb3VyY2VfLmFwcGVuZChjaCk7CisJCSAgICAgICAgICAgICAgICAgICAgbV9leHRyYUN1cnJlbnRfICsrOworCQkgICAgICAgICAgICAgICAgICAgIGlucXVvdGUgPSBmYWxzZTsKKwkJICAgICAgICAgICAgICAgIH0KKwkJICAgICAgICAgICAgICAgIGJyZWFrOworCQkgICAgICAgICAgICAvLyAnQCcgaXMgZnJlbmNoIG9ubHkgaWYgdGhlIHN0cmVuZ3RoIGlzIG5vdCBjdXJyZW50bHkgc2V0CisJCSAgICAgICAgICAgIC8vIGlmIGl0IGlzLCBpdCdzIGp1c3QgYSByZWd1bGFyIGNoYXJhY3RlciBpbiBjb2xsYXRpb24gIAorCQkgICAgICAgICAgICBjYXNlIDB4MDA0MCA6IC8vICdAJworCQkgICAgICAgICAgICAgICAgaWYgKG5ld3N0cmVuZ3RoID09IFRPS0VOX1VOU0VUXykgeworCQkgICAgICAgICAgICAgICAgICAgIG1fb3B0aW9uc18ubV9pc0ZyZW5jaENvbGxhdGlvbl8gPSB0cnVlOworCQkgICAgICAgICAgICAgICAgYnJlYWs7CisJCSAgICAgICAgICAgIH0KKwkJICAgICAgICAgICAgY2FzZSAweDAwN0MgOiAvL3wKKwkJICAgICAgICAgICAgICAgIC8vIHRoaXMgbWVhbnMgd2UgaGF2ZSBhY3R1YWxseSBiZWVuIHJlYWRpbmcgcHJlZml4IHBhcnQgCisJCSAgICAgICAgICAgICAgICAvLyB3ZSB3YW50IHRvIHN0b3JlIHJlYWQgY2hhcmFjdGVycyB0byB0aGUgcHJlZml4IHBhcnQgCisJCSAgICAgICAgICAgICAgICAvLyBhbmQgY29udGludWUgcmVhZGluZyB0aGUgY2hhcmFjdGVycyAocHJvcGVyIHdheSAKKwkJICAgICAgICAgICAgICAgIC8vIHdvdWxkIGJlIHRvIHJlc3RhcnQgcmVhZGluZyB0aGUgY2hhcnMsIGJ1dCBpbiB0aGF0IAorCQkgICAgICAgICAgICAgICAgLy8gY2FzZSB3ZSB3b3VsZCBoYXZlIHRvIGNvbXBsaWNhdGUgdGhlIHRva2VuIGhhc2hlciwgCisJCSAgICAgICAgICAgICAgICAvLyB3aGljaCBJIGRvIG5vdCBpbnRlbmQgdG8gcGxheSB3aXRoLiBJbnN0ZWFkLCB3ZSB3aWxsIAorCQkgICAgICAgICAgICAgICAgLy8gZG8gcHJlZml4ZXMgd2hlbiBwcmVmaXhlcyBhcmUgZHVlIChiZWZvcmUgYWRkaW5nIHRoZSAKKwkJICAgICAgICAgICAgICAgIC8vIGVsZW1lbnRzKS4KKwkJICAgICAgICAgICAgICAgIG1fcGFyc2VkVG9rZW5fLm1fcHJlZml4T2Zmc2V0XyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbV9wYXJzZWRUb2tlbl8ubV9jaGFyc09mZnNldF87CisJCSAgICAgICAgICAgICAgICBtX3BhcnNlZFRva2VuXy5tX3ByZWZpeExlbl8gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG1fcGFyc2VkVG9rZW5fLm1fY2hhcnNMZW5fOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluY2hhcnMpIHsgLy8gd2UncmUgZG9pbmcgY2hhcmFjdGVycworCQkgICAgICAgICAgICAgICAgICAgIGlmICh3YXNpbnF1b3RlID09IGZhbHNlKSB7CisJCSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VkVG9rZW5fLm1fY2hhcnNPZmZzZXRfID0gbV9leHRyYUN1cnJlbnRfOworCQkgICAgICAgICAgICAgICAgICAgIH0KKwkJICAgICAgICAgICAgICAgICAgICBpZiAobV9wYXJzZWRUb2tlbl8ubV9jaGFyc0xlbl8gIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgcHJlZml4ID0gbV9zb3VyY2VfLnN1YnN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudF8gLSBtX3BhcnNlZFRva2VuXy5tX2NoYXJzTGVuXywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRfKTsKKwkJICAgICAgICAgICAgICAgICAgICAJbV9zb3VyY2VfLmFwcGVuZChwcmVmaXgpOworCQkgICAgICAgICAgICAgICAgICAgICAgICBtX2V4dHJhQ3VycmVudF8gKz0gbV9wYXJzZWRUb2tlbl8ubV9jaGFyc0xlbl87CisJCSAgICAgICAgICAgICAgICAgICAgfQorCQkgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VkVG9rZW5fLm1fY2hhcnNMZW5fICsrOworCQkgICAgICAgICAgICAgICAgfQorCQkgICAgICAgICAgICAgICAgd2FzaW5xdW90ZSA9IHRydWU7CisJCSAgICAgICAgICAgICAgICBtX2N1cnJlbnRfICsrOworCQkgICAgICAgICAgICAgICAgY2ggPSBtX3NvdXJjZV8uY2hhckF0KG1fY3VycmVudF8pOyAKKwkJICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDB4MDAyMTogLy8gJyEnIC8vIGlnbm9yaW5nIGphdmEgc2V0IHRoYWkgcmVvcmRlcmluZworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgICAgIGRlZmF1bHQgOgorCSAgICAgICAgICAgICAgICAgICAgaWYgKG5ld3N0cmVuZ3RoID09IFRPS0VOX1VOU0VUXykgeworCSAgICAgICAgICAgICAgICAgICAgICAgIHRocm93UGFyc2VFeGNlcHRpb24obV9ydWxlc18sIG1fY3VycmVudF8pOworCSAgICAgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICAgICAgaWYgKGlzU3BlY2lhbENoYXIoY2gpICYmIChpbnF1b3RlID09IGZhbHNlKSkgeworCSAgICAgICAgICAgICAgICAgICAgICAgIHRocm93UGFyc2VFeGNlcHRpb24obV9ydWxlc18sIG1fY3VycmVudF8pOworCSAgICAgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICAgICAgaWYgKGNoID09IDB4MDAwMCAmJiBtX2N1cnJlbnRfICsgMSA9PSBsaW1pdCkgeworCSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICAgICAgaWYgKGluY2hhcnMpIHsKKwkgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9wYXJzZWRUb2tlbl8ubV9jaGFyc0xlbl8gPT0gMCkgeworCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlZFRva2VuXy5tX2NoYXJzT2Zmc2V0XyA9IG1fY3VycmVudF87CisJICAgICAgICAgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VkVG9rZW5fLm1fY2hhcnNMZW5fKys7CisJICAgICAgICAgICAgICAgICAgICB9IAorCSAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisJICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5ld2V4dGVuc2lvbmxlbiA9PSAwKSB7CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbm9mZnNldCA9IG1fY3VycmVudF87CisJICAgICAgICAgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICAgICAgICAgIG5ld2V4dGVuc2lvbmxlbiArKzsKKwkgICAgICAgICAgICAgICAgICAgIH0JCisJICAgICAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgIH0gICAKKyAgICAgICAgICAgIH0KKwkgICAgICAgIGlmICh3YXNpbnF1b3RlKSB7CisJICAgICAgICAgICAgaWYgKGNoICE9IDB4MjcpIHsKKwkgICAgICAgICAgICAgIAltX3NvdXJjZV8uYXBwZW5kKGNoKTsKKwkgICAgICAgICAgICAgICAgbV9leHRyYUN1cnJlbnRfICsrOworCSAgICAgICAgICAgIH0KKwkgICAgICAgIH0gICAKKwkgICAgICAgIG1fY3VycmVudF8gKys7CisJICAgIH0gIAorCSAgICByZXR1cm4gZG9FbmRQYXJzZU5leHRUb2tlbihuZXdzdHJlbmd0aCwgdG9wLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9ub2Zmc2V0LCBuZXdleHRlbnNpb25sZW4sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXRvcCwgYmVmb3JlKTsKKwl9CisKKyAgICAvKioKKyAgICAgKiBFbmQgdGhlIG5leHQgcGFyc2UgdG9rZW4KKyAgICAgKiBAcGFyYW0gbmV3c3RyZW5ndGggbmV3IHN0cmVuZ3RoCisgICAgICogQHJldHVybiBvZmZzZXQgaW4gcnVsZXMsIC0xIGZvciBlbmQgb2YgcnVsZXMKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBkb0VuZFBhcnNlTmV4dFRva2VuKGludCBuZXdzdHJlbmd0aCwgLyppbnQgbmV3Y2hhcnNsZW4sKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gdG9wLCAvKmludCBjaGFyc29mZnNldCwqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGV4dGVuc2lvbm9mZnNldCwgaW50IG5ld2V4dGVuc2lvbmxlbiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIHZhcmlhYmxldG9wLCBpbnQgYmVmb3JlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dzIFBhcnNlRXhjZXB0aW9uCisgICAgeworICAgICAgICBpZiAobmV3c3RyZW5ndGggPT0gVE9LRU5fVU5TRVRfKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1fcGFyc2VkVG9rZW5fLm1fY2hhcnNMZW5fID09IDAgJiYgdG9wID09IGZhbHNlKSB7CisJCSAgICB0aHJvd1BhcnNlRXhjZXB0aW9uKG1fcnVsZXNfLCBtX2N1cnJlbnRfKTsgCisJCX0KKwkJCisJCW1fcGFyc2VkVG9rZW5fLm1fc3RyZW5ndGhfID0gbmV3c3RyZW5ndGg7IAorCQkvL21fcGFyc2VkVG9rZW5fLm1fY2hhcnNPZmZzZXRfID0gY2hhcnNvZmZzZXQ7CisJCS8vbV9wYXJzZWRUb2tlbl8ubV9jaGFyc0xlbl8gPSBuZXdjaGFyc2xlbjsKKwkJbV9wYXJzZWRUb2tlbl8ubV9leHRlbnNpb25PZmZzZXRfID0gZXh0ZW5zaW9ub2Zmc2V0OworCSAgICBtX3BhcnNlZFRva2VuXy5tX2V4dGVuc2lvbkxlbl8gPSBuZXdleHRlbnNpb25sZW47CisJCW1fcGFyc2VkVG9rZW5fLm1fZmxhZ3NfID0gKGNoYXIpCisJCSAgICAgICAgICAgICAgICAgICAgICAgICAgKCh2YXJpYWJsZXRvcCA/IFRPS0VOX1ZBUklBQkxFX1RPUF9NQVNLXyA6IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAodG9wID8gVE9LRU5fVE9QX01BU0tfIDogMCkgfCBiZWZvcmUpOworCQlyZXR1cm4gbV9jdXJyZW50XzsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogVG9rZW4gYmVmb3JlIHRoaXMgZWxlbWVudAorICAgICAqIEBwYXJhbSBzb3VyY2V0b2tlbiAKKyAgICAgKiBAcGFyYW0gc3RyZW5ndGggY29sbGF0aW9uIHN0cmVuZ3RoCisgICAgICogQHJldHVybiB0aGUgdG9rZW4gYmVmb3JlIHNvdXJjZSB0b2tlbgorICAgICAqIEBleGNlcHRpb24gUGFyc2VFeGNlcHRpb24gdGhyb3duIHdoZW4gcnVsZXMgaGF2ZSB0aGUgd3Jvbmcgc3ludGF4CisgICAgICovCisgICAgcHJpdmF0ZSBUb2tlbiBnZXRWaXJnaW5CZWZvcmUoVG9rZW4gc291cmNldG9rZW4sIGludCBzdHJlbmd0aCkgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dzIFBhcnNlRXhjZXB0aW9uCisgICAgeworCSAgICAvLyB0aGlzIGlzIGEgdmlyZ2luIGJlZm9yZSAtIHdlIG5lZWQgdG8gZmlzaCB0aGUgYW5jaG9yIGZyb20gdGhlIFVDQQorCSAgICBpZiAoc291cmNldG9rZW4gIT0gbnVsbCkgeworICAgICAgICAgICAgaW50IG9mZnNldCA9IHNvdXJjZXRva2VuLm1fc291cmNlXyAmIDB4RkZGRkZGOworICAgICAgICAgICAgbV9VQ0FDb2xFSXRlcl8uc2V0VGV4dChtX3NvdXJjZV8uc3Vic3RyaW5nKG9mZnNldCwgb2Zmc2V0ICsgMSkpOworCSAgICB9IAorCSAgICBlbHNlIHsKKyAgICAgICAgICAgIG1fVUNBQ29sRUl0ZXJfLnNldFRleHQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc291cmNlXy5zdWJzdHJpbmcobV9wYXJzZWRUb2tlbl8ubV9jaGFyc09mZnNldF8sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlZFRva2VuXy5tX2NoYXJzT2Zmc2V0XyArIDEpKTsKKwkgICAgfQorCSAgICAgIAkKKwkgICAgaW50IGJhc2VjZSA9IG1fVUNBQ29sRUl0ZXJfLm5leHQoKSAmIDB4RkZGRkZGM0Y7CisJICAgIGludCBiYXNlY29udGNlID0gbV9VQ0FDb2xFSXRlcl8ubmV4dCgpOworCSAgICBpZiAoYmFzZWNvbnRjZSA9PSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuTlVMTE9SREVSKSB7CisJICAgICAgICBiYXNlY29udGNlID0gMDsKKwkgICAgfQorCSAgICAvLyBmaXJzdCBjZSBhbmQgc2Vjb25kIGNlIG1fdXRpbENFQnVmZmVyXworCSAgICBpbnQgaW52cG9zID0gQ29sbGF0aW9uUGFyc2VkUnVsZUJ1aWxkZXIuSU5WRVJTRV9VQ0FfLmdldEludmVyc2VQcmV2Q0UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VjZSwgYmFzZWNvbnRjZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVuZ3RoLCBtX3V0aWxDRUJ1ZmZlcl8pOworCSAgICBpbnQgY2ggPSBDb2xsYXRpb25QYXJzZWRSdWxlQnVpbGRlci5JTlZFUlNFX1VDQV8ubV90YWJsZV9bMyAqIGludnBvcyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgMl07CisgICAgICAgIGlmICgoY2ggJiAgSU5WRVJTRV9TSVpFX01BU0tfKSAhPSAwKSB7CisJICAgICAgICBpbnQgb2Zmc2V0ID0gY2ggJiBJTlZFUlNFX09GRlNFVF9NQVNLXzsKKwkgICAgICAgIGNoID0gQ29sbGF0aW9uUGFyc2VkUnVsZUJ1aWxkZXIuSU5WRVJTRV9VQ0FfLm1fY29udGludWF0aW9uc19bCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldF07CisJICAgIH0gICAgICAKKwkgICAgbV9zb3VyY2VfLmFwcGVuZCgoY2hhciljaCk7CisJICAgIG1fZXh0cmFDdXJyZW50XyArKzsKKwkgICAgbV9wYXJzZWRUb2tlbl8ubV9jaGFyc09mZnNldF8gPSBtX2V4dHJhQ3VycmVudF8gLSAxOworCSAgICBtX3BhcnNlZFRva2VuXy5tX2NoYXJzTGVuXyA9IDE7CisJCisJICAgIC8vIFdlIGdvdCBhbiBVQ0EgYmVmb3JlLiBIb3dldmVyLCB0aGlzIG1pZ2h0IGhhdmUgYmVlbiB0YWlsb3JlZC4KKwkgICAgLy8gZXhhbXBsZToKKwkgICAgLy8gJlx1MzBjYSA9IFx1MzA2YQorCSAgICAvLyAmW2JlZm9yZSAzXVx1MzA2YTw8PFx1MzA2YXxcdTMwOWQKKwkgIAorCSAgICBtX3V0aWxUb2tlbl8ubV9zb3VyY2VfID0gKG1fcGFyc2VkVG9rZW5fLm1fY2hhcnNMZW5fIDw8IDI0KSAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbV9wYXJzZWRUb2tlbl8ubV9jaGFyc09mZnNldF87CisJICAgIG1fdXRpbFRva2VuXy5tX3J1bGVzXyA9IG1fc291cmNlXzsKKwkgICAgc291cmNldG9rZW4gPSAoVG9rZW4pbV9oYXNoVGFibGVfLmdldChtX3V0aWxUb2tlbl8pOworCSAgCisJICAgIC8vIGlmIHdlIGZvdW5kIGEgdGFpbG9yZWQgdGhpbmcsIHdlIGhhdmUgdG8gdXNlIHRoZSBVQ0EgdmFsdWUgYW5kIAorCSAgICAvLyBjb25zdHJ1Y3QgYSBuZXcgcmVzZXQgdG9rZW4gd2l0aCBjb25zdHJ1Y3RlZCBuYW1lCisJICAgIGlmIChzb3VyY2V0b2tlbiAhPSBudWxsICYmIHNvdXJjZXRva2VuLm1fc3RyZW5ndGhfICE9IFRPS0VOX1JFU0VUXykgeworCSAgICAgICAgLy8gY2hhcmFjdGVyIHRvIHdoaWNoIHdlIHdhbnQgdG8gYW5jaG9yIGlzIGFscmVhZHkgdGFpbG9yZWQuIAorCSAgICAgICAgLy8gV2UgbmVlZCB0byBjb25zdHJ1Y3QgYSBuZXcgdG9rZW4gd2hpY2ggd2lsbCBiZSB0aGUgYW5jaG9yIHBvaW50CisgICAgICAgICAgICBtX3NvdXJjZV8uc2V0Q2hhckF0KG1fZXh0cmFDdXJyZW50XyAtIDEsICdcdUZGRkUnKTsKKwkgICAgICAgIG1fc291cmNlXy5hcHBlbmQoY2gpOworCSAgICAgICAgbV9leHRyYUN1cnJlbnRfICsrOworCSAgICAgICAgbV9wYXJzZWRUb2tlbl8ubV9jaGFyc0xlbl8gKys7CisgICAgICAgICAgICBtX2xpc3RIZWFkZXJfW21fcmVzdWx0TGVuZ3RoX10gPSBuZXcgVG9rZW5MaXN0SGVhZGVyKCk7CisJICAgICAgICBtX2xpc3RIZWFkZXJfW21fcmVzdWx0TGVuZ3RoX10ubV9iYXNlQ0VfIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBtX3V0aWxDRUJ1ZmZlcl9bMF0gJiAweEZGRkZGRjNGOworCSAgICAgICAgaWYgKFJ1bGVCYXNlZENvbGxhdG9yLmlzQ29udGludWF0aW9uKG1fdXRpbENFQnVmZmVyX1sxXSkpIHsKKwkgICAgICAgICAgICBtX2xpc3RIZWFkZXJfW21fcmVzdWx0TGVuZ3RoX10ubV9iYXNlQ29udENFXyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG1fdXRpbENFQnVmZmVyX1sxXTsKKwkgICAgICAgIH0gCisJICAgICAgICBlbHNlIHsKKwkgICAgICAgICAgICBtX2xpc3RIZWFkZXJfW21fcmVzdWx0TGVuZ3RoX10ubV9iYXNlQ29udENFXyA9IDA7CisJICAgICAgICB9CisJICAgICAgICBtX2xpc3RIZWFkZXJfW21fcmVzdWx0TGVuZ3RoX10ubV9uZXh0Q0VfID0gMDsKKwkgICAgICAgIG1fbGlzdEhlYWRlcl9bbV9yZXN1bHRMZW5ndGhfXS5tX25leHRDb250Q0VfID0gMDsKKwkgICAgICAgIG1fbGlzdEhlYWRlcl9bbV9yZXN1bHRMZW5ndGhfXS5tX3ByZXZpb3VzQ0VfID0gMDsKKwkgICAgICAgIG1fbGlzdEhlYWRlcl9bbV9yZXN1bHRMZW5ndGhfXS5tX3ByZXZpb3VzQ29udENFXyA9IDA7CisJICAgICAgICBtX2xpc3RIZWFkZXJfW21fcmVzdWx0TGVuZ3RoX10ubV9pbmRpcmVjdF8gPSBmYWxzZTsKKwkgICAgICAgIHNvdXJjZXRva2VuID0gbmV3IFRva2VuKCk7CisJICAgICAgICBpbml0QVJlc2V0KC0xLCBzb3VyY2V0b2tlbik7ICAgCisJICAgIH0KKwkgICAgcmV0dXJuIHNvdXJjZXRva2VuOworCX0KKwkKKwkvKioKKwkgKiBQcm9jZXNzaW5nIERlc2NyaXB0aW9uLgorCSAqIDEuIEJ1aWxkIGEgbV9saXN0SGVhZGVyXy4gRWFjaCBsaXN0IGhhcyBhIGhlYWRlciwgd2hpY2ggY29udGFpbnMgdHdvIGxpc3RzIAorCSAqIChwb3NpdGl2ZSBhbmQgbmVnYXRpdmUpLCBhIHJlc2V0IHRva2VuLCBhIGJhc2VDRSwgbmV4dENFLCBhbmQgCisJICogcHJldmlvdXNDRS4gVGhlIGxpc3RzIGFuZCByZXNldCBtYXkgYmUgbnVsbC4gCisJICogMi4gQXMgeW91IHByb2Nlc3MsIHlvdSBrZWVwIGEgTEFTVCBwb2ludGVyIHRoYXQgcG9pbnRzIHRvIHRoZSBsYXN0IHRva2VuIAorCSAqIHlvdSBoYW5kbGVkLiAKKwkgKiBAcGFyYW0gZXhwYW5kIHN0cmluZyBvZmZzZXQsIC0xIGZvciBudWxsIHN0cmluZ3MKKwkgKiBAcGFyYW0gdGFyZ2V0VG9rZW4gdG9rZW4gdG8gdXBkYXRlCisJICogQHJldHVybiBleHBhbmRuZXh0IG9mZnNldAorCSAqIEB0aHJvd3MgUGFyc2VFeGNlcHRpb24gdGhyb3duIHdoZW4gcnVsZXMgc3ludGF4IGZhaWxlZAorCSAqLworCXByaXZhdGUgaW50IGluaXRBUmVzZXQoaW50IGV4cGFuZCwgVG9rZW4gdGFyZ2V0VG9rZW4pIHRocm93cyBQYXJzZUV4Y2VwdGlvbgorCXsKKwkgICAgLy8gZG8gdGhlIHJlc2V0IHRoaW5nCisJICAgIHRhcmdldFRva2VuLm1fcnVsZXNfID0gbV9zb3VyY2VfOworCSAgICB0YXJnZXRUb2tlbi5tX3NvdXJjZV8gPSBtX3BhcnNlZFRva2VuXy5tX2NoYXJzTGVuXyA8PCAyNCAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBtX3BhcnNlZFRva2VuXy5tX2NoYXJzT2Zmc2V0XzsKKwkgICAgdGFyZ2V0VG9rZW4ubV9leHBhbnNpb25fID0gbV9wYXJzZWRUb2tlbl8ubV9leHRlbnNpb25MZW5fIDw8IDI0IAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG1fcGFyc2VkVG9rZW5fLm1fZXh0ZW5zaW9uT2Zmc2V0XzsKKwkgICAgaWYgKG1fcGFyc2VkVG9rZW5fLm1fcHJlZml4T2Zmc2V0XyAhPSAwKSB7CisJICAgICAgICB0aHJvd1BhcnNlRXhjZXB0aW9uKG1fcnVsZXNfLCBtX3BhcnNlZFRva2VuXy5tX2NoYXJzT2Zmc2V0XyAtIDEpOworCSAgICB9IAorCSAgICAKKyAgICAgICAgdGFyZ2V0VG9rZW4ubV9wcmVmaXhfID0gMDsKKwkgICAgLy8gVE9ETzogdGhpcyBzaG91bGQgYWxzbyBoYW5kbGUgcmV2ZXJzZQorCSAgICB0YXJnZXRUb2tlbi5tX3BvbGFyaXR5XyA9IFRPS0VOX1BPTEFSSVRZX1BPU0lUSVZFXzsgCisJICAgIHRhcmdldFRva2VuLm1fc3RyZW5ndGhfID0gVE9LRU5fUkVTRVRfOworCSAgICB0YXJnZXRUb2tlbi5tX25leHRfID0gbnVsbDsKKwkgICAgdGFyZ2V0VG9rZW4ubV9wcmV2aW91c18gPSBudWxsOworCSAgICB0YXJnZXRUb2tlbi5tX0NFTGVuZ3RoXyA9IDA7CisJICAgIHRhcmdldFRva2VuLm1fZXhwQ0VMZW5ndGhfID0gMDsKKwkgICAgdGFyZ2V0VG9rZW4ubV9saXN0SGVhZGVyXyA9IG1fbGlzdEhlYWRlcl9bbV9yZXN1bHRMZW5ndGhfXTsKKwkgICAgbV9saXN0SGVhZGVyX1ttX3Jlc3VsdExlbmd0aF9dLm1fZmlyc3RfID0gbnVsbDsKKwkgICAgbV9saXN0SGVhZGVyX1ttX3Jlc3VsdExlbmd0aF9dLm1fbGFzdF8gPSBudWxsOworCSAgICBtX2xpc3RIZWFkZXJfW21fcmVzdWx0TGVuZ3RoX10ubV9maXJzdF8gPSBudWxsOworCSAgICBtX2xpc3RIZWFkZXJfW21fcmVzdWx0TGVuZ3RoX10ubV9sYXN0XyA9IG51bGw7CisJICAgIG1fbGlzdEhlYWRlcl9bbV9yZXN1bHRMZW5ndGhfXS5tX3Jlc2V0XyA9IHRhcmdldFRva2VuOworCQorCSAgICAvKiAzIENvbnNpZGVyIGVhY2ggaXRlbTogcmVsYXRpb24sIHNvdXJjZSwgYW5kIGV4cGFuc2lvbjogCisJICAgICAqIGUuZy4gLi4uPCB4IC8geSAuLi4gCisJICAgICAqIEZpcnN0IGNvbnZlcnQgYWxsIGV4cGFuc2lvbnMgaW50byBub3JtYWwgZm9ybS4gRXhhbXBsZXM6IAorCSAgICAgKiBJZiAieHkiIGRvZXNuJ3Qgb2NjdXIgZWFybGllciBpbiB0aGUgbGlzdCBvciBpbiB0aGUgVUNBLCBjb252ZXJ0IAorCSAgICAgKiAmeHkgKiBjICogZCAqIC4uLiBpbnRvICZ4ICogYy95ICogZCAqIC4uLiAKKwkgICAgICogTm90ZTogcmVzZXQgdmFsdWVzIGNhbiBuZXZlciBoYXZlIGV4cGFuc2lvbnMsIGFsdGhvdWdoIHRoZXkgY2FuIAorCSAgICAgKiBjYXVzZSB0aGUgdmVyeSBuZXh0IGl0ZW0gdG8gaGF2ZSBvbmUuIFRoZXkgbWF5IGJlIGNvbnRyYWN0aW9ucywgaWYgCisJICAgICAqIHRoZXkgYXJlIGZvdW5kIGVhcmxpZXIgaW4gdGhlIGxpc3QuIAorCSAgICAgKi8KKwkgICAgaW50IHJlc3VsdCA9IDA7CisJICAgIGlmIChleHBhbmQgPiAwKSB7CisJICAgICAgICAvLyBjaGVjayB0byBzZWUgaWYgdGhlcmUgaXMgYW4gZXhwYW5zaW9uCisJICAgICAgICBpZiAobV9wYXJzZWRUb2tlbl8ubV9jaGFyc0xlbl8gPiAxKSB7CisJICAgICAgICAgICAgdGFyZ2V0VG9rZW4ubV9zb3VyY2VfID0gKChleHBhbmQgCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIG1fcGFyc2VkVG9rZW5fLm1fY2hhcnNPZmZzZXRfICkgCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAyNCkgCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG1fcGFyc2VkVG9rZW5fLm1fY2hhcnNPZmZzZXRfOworCSAgICAgICAgICAgIHJlc3VsdCA9ICgobV9wYXJzZWRUb2tlbl8ubV9jaGFyc0xlbl8gCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBtX3BhcnNlZFRva2VuXy5tX2NoYXJzT2Zmc2V0XyAtIGV4cGFuZCkgPDwgMjQpIAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZXhwYW5kOworCSAgICAgICAgfQorCSAgICB9ICAgCisJCisJICAgIG1fcmVzdWx0TGVuZ3RoXyArKzsKKwkgICAgbV9oYXNoVGFibGVfLnB1dCh0YXJnZXRUb2tlbiwgdGFyZ2V0VG9rZW4pOworCSAgICByZXR1cm4gcmVzdWx0OworCX0KKwkKKwkvKioKKwkgKiBDaGVja3MgaWYgYW4gY2hhcmFjdGVyIGlzIHNwZWNpYWwKKwkgKiBAcGFyYW0gY2ggY2hhcmFjdGVyIHRvIHRlc3QKKwkgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGNoYXJhY3RlciBpcyBzcGVjaWFsCisJICovCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBpc1NwZWNpYWxDaGFyKGNoYXIgY2gpCisJeworICAgICAgICByZXR1cm4gKGNoIDw9IDB4MDAyRiAmJiBjaCA+PSAweDAwMjApIHx8IChjaCA8PSAweDAwM0YgJiYgY2ggPj0gMHgwMDNBKSAKKyAgICAgICAgICAgICAgIHx8IChjaCA8PSAweDAwNjAgJiYgY2ggPj0gMHgwMDVCKSAKKyAgICAgICAgICAgICAgIHx8IChjaCA8PSAweDAwN0UgJiYgY2ggPj0gMHgwMDdEKSB8fCBjaCA9PSAweDAwN0I7CisJfQorICAgIAorICAgIHByaXZhdGUKKyAgICBVbmljb2RlU2V0IHJlYWRBbmRTZXRVbmljb2RlU2V0KFN0cmluZyBzb3VyY2UsIGludCBzdGFydCkgdGhyb3dzIFBhcnNlRXhjZXB0aW9uIAorICAgIHsKKyAgICAgIHdoaWxlKHNvdXJjZS5jaGFyQXQoc3RhcnQpICE9ICdbJykgeyAvKiBhZHZhbmNlIHdoaWxlIHdlIGZpbmQgdGhlIGZpcnN0ICdbJyAqLworICAgICAgICBzdGFydCsrOworICAgICAgfQorICAgICAgLy8gbm93IHdlIG5lZWQgdG8gZ2V0IGEgYmFsYW5jZWQgc2V0IG9mICdbXScuIFRoZSBwcm9ibGVtIGlzIHRoYXQgYSBzZXQgY2FuIGhhdmUgCisgICAgICAvLyBtYW55LCBhbmQgKmVuZCBwb2ludCB0byB0aGUgZmlyc3QgY2xvc2luZyAnWycKKyAgICAgIGludCBub09wZW5CcmFjZXMgPSAxOworICAgICAgaW50IGN1cnJlbnQgPSAxOyAvLyBza2lwIHRoZSBvcGVuaW5nIGJyYWNlCisgICAgICB3aGlsZShzdGFydCtjdXJyZW50IDwgc291cmNlLmxlbmd0aCgpICYmIG5vT3BlbkJyYWNlcyAhPSAwKSB7CisgICAgICAgIGlmKHNvdXJjZS5jaGFyQXQoc3RhcnQrY3VycmVudCkgPT0gJ1snKSB7CisgICAgICAgICAgbm9PcGVuQnJhY2VzKys7CisgICAgICAgIH0gZWxzZSBpZihzb3VyY2UuY2hhckF0KHN0YXJ0K2N1cnJlbnQpID09ICddJykgeyAvLyBjbG9zaW5nIGJyYWNlCisgICAgICAgICAgbm9PcGVuQnJhY2VzLS07CisgICAgICAgIH0KKyAgICAgICAgY3VycmVudCsrOworICAgICAgfQorICAgICAgaW50IG5leHRCcmFjZSA9IC0xOworICAgIAorICAgICAgaWYobm9PcGVuQnJhY2VzICE9IDAgfHwgKG5leHRCcmFjZSA9IHNvdXJjZS5pbmRleE9mKCJdIiwgc3RhcnQrY3VycmVudCkgLyonXScqLykgPT0gLTEpIHsKKyAgICAgICAgdGhyb3dQYXJzZUV4Y2VwdGlvbihtX3J1bGVzXywgc3RhcnQpOworICAgICAgfQorICAgICAgcmV0dXJuIG5ldyBVbmljb2RlU2V0KHNvdXJjZS5zdWJzdHJpbmcoc3RhcnQsIHN0YXJ0K2N1cnJlbnQpKTsgLy91c2V0X29wZW5QYXR0ZXJuKHN0YXJ0LCBjdXJyZW50KTsKKyAgICB9CisgICAgCisgICAgCisgICAgLyoqIGluIEMsIG9wdGlvbmFyZyBpcyBwYXNzZWQgYnkgcmVmZXJlbmNlIHRvIGZ1bmN0aW9uLgorICAgICAqICBXZSB1c2UgYSBwcml2YXRlIGludCB0byBzaW11bGF0ZSB0aGlzLgorICAgICAqLworICAgIHByaXZhdGUgaW50IG1fb3B0aW9uYXJnXyA9IDA7CisKKwlwcml2YXRlIGludCByZWFkT3B0aW9uKFN0cmluZyBydWxlcywgaW50IHN0YXJ0LCBpbnQgb3B0aW9uZW5kKSAKKyAgICB7CisgICAgICAgIG1fb3B0aW9uYXJnXyA9IDA7CisgICAgICAgIGludCBpID0gMDsKKyAgICAgICAgd2hpbGUgKGkgPCBSVUxFU19PUFRJT05TXy5sZW5ndGgpIHsKKyAgICAgICAgICAgIFN0cmluZyBvcHRpb24gPSBSVUxFU19PUFRJT05TX1tpXS5tX25hbWVfOworICAgICAgICAgICAgaW50IG9wdGlvbmxlbmd0aCA9IG9wdGlvbi5sZW5ndGgoKTsKKyAgICAgICAgICAgIGlmIChydWxlcy5sZW5ndGgoKSA+IHN0YXJ0ICsgb3B0aW9ubGVuZ3RoCisgICAgICAgICAgICAgICAgJiYgb3B0aW9uLmVxdWFsc0lnbm9yZUNhc2UocnVsZXMuc3Vic3RyaW5nKHN0YXJ0LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ICsgb3B0aW9ubGVuZ3RoKSkpIHsKKyAgICAgICAgICAgICAgICBpZiAob3B0aW9uZW5kIC0gc3RhcnQgPiBvcHRpb25sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9vcHRpb25hcmdfID0gc3RhcnQgKyBvcHRpb25sZW5ndGggKyAxOyAKKyAgICAgICAgICAgICAgICAgICAgLy8gc3RhcnQgb2YgdGhlIG9wdGlvbnMsIHNraXAgc3BhY2UKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKG1fb3B0aW9uYXJnXyA8IG9wdGlvbmVuZCAmJiBVQ2hhcmFjdGVyLmlzV2hpdGVzcGFjZShydWxlcy5jaGFyQXQobV9vcHRpb25hcmdfKSkpIAorICAgICAgICAgICAgICAgICAgICB7ICAgLy8gZWF0IHdoaXRlc3BhY2UKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fb3B0aW9uYXJnXyArKzsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gICAgIAorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaSArKzsKKyAgICAgICAgfQorICAgICAgICBpZihpID09IFJVTEVTX09QVElPTlNfLmxlbmd0aCkgeworICAgICAgICAgICAgaSA9IC0xOworICAgICAgICB9CisgICAgICAgIHJldHVybiBpOworICAgIH0KKwkvKioKKwkgKiBSZWFkcyBhbmQgc2V0IGNvbGxhdGlvbiBvcHRpb25zCisJICogQHBhcmFtIG9wdGlvbmVuZCBvZmZzZXQgdG8gdGhlIGVuZCBvZiB0aGUgb3B0aW9uIGluIHJ1bGVzCisJICogQHJldHVybiBUT0tFTl9TVUNDRVNTIGlmIG9wdGlvbiBpcyBzZXQgY29ycmVjdCwgMCBvdGhlcndpc2UKKyAgICAgKiBAZXhjZXB0aW9uIFBhcnNlRXhjZXB0aW9uIHRocm93biB3aGVuIG9wdGlvbnMgaW4gcnVsZXMgYXJlIHdyb25nCisJICovCisJcHJpdmF0ZSBieXRlIHJlYWRBbmRTZXRPcHRpb24oKSB0aHJvd3MgUGFyc2VFeGNlcHRpb24KKwl7CisJCWludCBzdGFydCA9IG1fY3VycmVudF8gKyAxOyAvLyBza2lwIG9wZW5pbmcgJ1snCisJICAgIGludCBpID0gcmVhZE9wdGlvbihtX3J1bGVzXywgc3RhcnQsIG1fb3B0aW9uRW5kXyk7CisgICAgICAgIAorICAgICAgICBpbnQgb3B0aW9uYXJnID0gbV9vcHRpb25hcmdfOworCQorCSAgICBpZiAoaSA8IDApIHsKKwkgICAgICAgIHRocm93UGFyc2VFeGNlcHRpb24obV9ydWxlc18sIHN0YXJ0KTsKKwkgICAgfQorCQorCSAgICBpZiAoaSA8IDcpIHsKKyAgICAgICAgICAgIGlmIChvcHRpb25hcmcgIT0gMCkgeworCSAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgUlVMRVNfT1BUSU9OU19baV0ubV9zdWJPcHRpb25zXy5sZW5ndGg7IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiArKykgeworICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHN1Ym5hbWUgPSBSVUxFU19PUFRJT05TX1tpXS5tX3N1Yk9wdGlvbnNfW2pdOworICAgICAgICAgICAgICAgICAgICAgaW50IHNpemUgPSBvcHRpb25hcmcgKyBzdWJuYW1lLmxlbmd0aCgpOworICAgICAgICAgICAgICAgICAgICAgaWYgKG1fcnVsZXNfLmxlbmd0aCgpID4gc2l6ZSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAmJiBzdWJuYW1lLmVxdWFsc0lnbm9yZUNhc2UobV9ydWxlc18uc3Vic3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hcmcsIHNpemUpKSkgeworCSAgICAgICAgICAgICAgICAgICAgIHNldE9wdGlvbnMobV9vcHRpb25zXywgUlVMRVNfT1BUSU9OU19baV0ubV9hdHRyaWJ1dGVfLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlVMRVNfT1BUSU9OU19baV0ubV9zdWJPcHRpb25BdHRyaWJ1dGVWYWx1ZXNfW2pdKTsKKwkgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVE9LRU5fU1VDQ0VTU19NQVNLXzsKKyAgICAgICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICB9CisJICAgICAgICB9CisJICAgICAgICB0aHJvd1BhcnNlRXhjZXB0aW9uKG1fcnVsZXNfLCBvcHRpb25hcmcpOworCSAgICB9IAorICAgICAgICBlbHNlIGlmIChpID09IDcpIHsgLy8gdmFyaWFibGUgdG9wCisJICAgICAgICByZXR1cm4gVE9LRU5fU1VDQ0VTU19NQVNLXyB8IFRPS0VOX1ZBUklBQkxFX1RPUF9NQVNLXzsKKwkgICAgfSAKKyAgICAgICAgZWxzZSBpZiAoaSA9PSA4KSB7IC8vIHJlYXJhbmdlCisJICAgICAgICByZXR1cm4gVE9LRU5fU1VDQ0VTU19NQVNLXzsKKwkgICAgfSAKKyAgICAgICAgZWxzZSBpZiAoaSA9PSA5KSB7IC8vIGJlZm9yZQorCSAgICAgICAgaWYgKG9wdGlvbmFyZyAhPSAwKSB7CisJICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBSVUxFU19PUFRJT05TX1tpXS5tX3N1Yk9wdGlvbnNfLmxlbmd0aDsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqICsrKSB7CisgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgc3VibmFtZSA9IFJVTEVTX09QVElPTlNfW2ldLm1fc3ViT3B0aW9uc19bal07CisgICAgICAgICAgICAgICAgICAgICBpbnQgc2l6ZSA9IG9wdGlvbmFyZyArIHN1Ym5hbWUubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgICAgICBpZiAobV9ydWxlc18ubGVuZ3RoKCkgPiBzaXplIAorICAgICAgICAgICAgICAgICAgICAgICAgICYmIHN1Ym5hbWUuZXF1YWxzSWdub3JlQ2FzZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ydWxlc18uc3Vic3RyaW5nKG9wdGlvbmFyZywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYXJnICsgc3VibmFtZS5sZW5ndGgoKSkpKSB7CisJICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChieXRlKShUT0tFTl9TVUNDRVNTX01BU0tfIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUlVMRVNfT1BUSU9OU19baV0ubV9zdWJPcHRpb25BdHRyaWJ1dGVWYWx1ZXNfW2pdIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgMSk7CisgICAgICAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgfQorCSAgICAgICAgfQorCSAgICAgICAgdGhyb3dQYXJzZUV4Y2VwdGlvbihtX3J1bGVzXywgb3B0aW9uYXJnKTsKKwkgICAgfSAKKyAgICAgICAgZWxzZSBpZiAoaSA9PSAxMCkgeyAgLy8gdG9wLCB3ZSBhcmUgZ29pbmcgdG8gaGF2ZSBhbiBhcnJheSB3aXRoIAorICAgICAgICAgICAgLy8gc3RydWN0dXJlcyBvZiBsaW1pdCBDRXMgaW5kZXggdG8gdGhpcyBhcnJheSB3aWxsIGJlIAorICAgICAgICAgICAgLy8gc3JjLT5wYXJzZWRUb2tlbi5pbmRpcmVjdEluZGV4CisJICAgICAgICBtX3BhcnNlZFRva2VuXy5tX2luZGlyZWN0SW5kZXhfID0gMDsKKwkgICAgICAgIHJldHVybiBUT0tFTl9TVUNDRVNTX01BU0tfIHwgVE9LRU5fVE9QX01BU0tfOworCSAgICB9IAorICAgICAgICBlbHNlIGlmIChpIDwgMTMpIHsgLy8gZmlyc3QsIGxhc3QgCisJICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IFJVTEVTX09QVElPTlNfW2ldLm1fc3ViT3B0aW9uc18ubGVuZ3RoOyBqICsrKSB7ICAgICAKKwkgICAgICAgICAgICBTdHJpbmcgc3VibmFtZSA9IFJVTEVTX09QVElPTlNfW2ldLm1fc3ViT3B0aW9uc19bal07CisgICAgICAgICAgICAgICAgaW50IHNpemUgPSBvcHRpb25hcmcgKyBzdWJuYW1lLmxlbmd0aCgpOworICAgICAgICAgICAgICAgIGlmIChtX3J1bGVzXy5sZW5ndGgoKSA+IHNpemUgCisgICAgICAgICAgICAgICAgICAgICYmIHN1Ym5hbWUuZXF1YWxzSWdub3JlQ2FzZShtX3J1bGVzXy5zdWJzdHJpbmcob3B0aW9uYXJnLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplKSkpIHsKKwkgICAgICAgICAgICAgICAgbV9wYXJzZWRUb2tlbl8ubV9pbmRpcmVjdEluZGV4XyA9IChjaGFyKShpIC0gMTAgKyAoaiA8PCAxKSk7ICAgICAgICAgCisJICAgICAgICAgICAgICAgIHJldHVybiBUT0tFTl9TVUNDRVNTX01BU0tfIHwgVE9LRU5fVE9QX01BU0tfOworCSAgICAgICAgICAgIH0KKwkgICAgICAgIH0JICAgICAgICAKKyAgICAgICAgICAgIHRocm93UGFyc2VFeGNlcHRpb24obV9ydWxlc18sIG9wdGlvbmFyZyk7CisJICAgIH0gCisgICAgICAgIGVsc2UgaWYoaSA9PSAxMyB8fCBpID09IDE0KSB7IC8vIGNvcHkgYW5kIHJlbW92ZSBhcmUgaGFuZGxlZCBiZWZvcmUgbm9ybWFsaXphdGlvbgorICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBtb3ZlIGVuZCBoZXJlCisgICAgICAgICAgICBpbnQgbm9PcGVuQnJhY2VzID0gMTsKKyAgICAgICAgICAgIG1fY3VycmVudF8rKzsgLy8gc2tpcCBvcGVuaW5nIGJyYWNlCisgICAgICAgICAgICB3aGlsZShtX2N1cnJlbnRfIDwgbV9zb3VyY2VfLmxlbmd0aCgpICYmIG5vT3BlbkJyYWNlcyAhPSAwKSB7CisgICAgICAgICAgICAgICAgaWYobV9zb3VyY2VfLmNoYXJBdChtX2N1cnJlbnRfKSA9PSAnWycpIHsKKyAgICAgICAgICAgICAgICAgIG5vT3BlbkJyYWNlcysrOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZihtX3NvdXJjZV8uY2hhckF0KG1fY3VycmVudF8pID09ICddJykgeyAvLyBjbG9zaW5nIGJyYWNlCisgICAgICAgICAgICAgICAgICBub09wZW5CcmFjZXMtLTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbV9jdXJyZW50XysrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9vcHRpb25FbmRfID0gbV9jdXJyZW50Xy0xOworICAgICAgICAgICAgcmV0dXJuIFRPS0VOX1NVQ0NFU1NfTUFTS187IAorICAgICAgICB9CisgICAgICAgIGVsc2UgeworCSAgICAgICAgdGhyb3dQYXJzZUV4Y2VwdGlvbihtX3J1bGVzXywgb3B0aW9uYXJnKTsKKwkgICAgfQorICAgICAgICByZXR1cm4gVE9LRU5fU1VDQ0VTU19NQVNLXzsgLy8gd2Ugd2lsbCBuZXZlciByZWFjaCBoZXJlLgorCX0KKworICAgIC8qKgorICAgICAqIFNldCBjb2xsYXRpb24gb3B0aW9uCisgICAgICogQHBhcmFtIG9wdGlvbnNldCBvcHRpb24gc2V0IHRvIHNldAorICAgICAqIEBwYXJhbSBhdHRyaWJ1dGUgdHlwZSB0byBzZXQKKyAgICAgKiBAcGFyYW0gdmFsdWUgYXR0cmlidXRlIHZhbHVlCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIHNldE9wdGlvbnMoT3B0aW9uU2V0IG9wdGlvbnNldCwgaW50IGF0dHJpYnV0ZSwgaW50IHZhbHVlKSAKKyAgICB7CisJICAgIHN3aXRjaCAoYXR0cmlidXRlKSB7CisJICAgICAgICBjYXNlIFJ1bGVCYXNlZENvbGxhdG9yLkF0dHJpYnV0ZS5ISVJBR0FOQV9RVUFURVJOQVJZX01PREVfIDoKKwkgICAgICAgICAgICBvcHRpb25zZXQubV9pc0hpcmFnYW5hNF8gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAodmFsdWUgPT0gUnVsZUJhc2VkQ29sbGF0b3IuQXR0cmlidXRlVmFsdWUuT05fKTsKKwkgICAgICAgICAgICBicmVhazsKKwkgICAgICAgIGNhc2UgUnVsZUJhc2VkQ29sbGF0b3IuQXR0cmlidXRlLkZSRU5DSF9DT0xMQVRJT05fIDoKKwkgICAgICAgICAgICBvcHRpb25zZXQubV9pc0ZyZW5jaENvbGxhdGlvbl8gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKHZhbHVlID09IFJ1bGVCYXNlZENvbGxhdG9yLkF0dHJpYnV0ZVZhbHVlLk9OXyk7CisJICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICBjYXNlIFJ1bGVCYXNlZENvbGxhdG9yLkF0dHJpYnV0ZS5BTFRFUk5BVEVfSEFORExJTkdfIDoKKwkgICAgICAgICAgICBvcHRpb25zZXQubV9pc0FsdGVybmF0ZUhhbmRsaW5nU2hpZnRlZF8gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKHZhbHVlIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PSBSdWxlQmFzZWRDb2xsYXRvci5BdHRyaWJ1dGVWYWx1ZS5TSElGVEVEXyk7CisJICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICBjYXNlIFJ1bGVCYXNlZENvbGxhdG9yLkF0dHJpYnV0ZS5DQVNFX0ZJUlNUXyA6CisJICAgICAgICAgICAgb3B0aW9uc2V0Lm1fY2FzZUZpcnN0XyA9IHZhbHVlOworCSAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgY2FzZSBSdWxlQmFzZWRDb2xsYXRvci5BdHRyaWJ1dGUuQ0FTRV9MRVZFTF8gOgorCSAgICAgICAgICAgIG9wdGlvbnNldC5tX2lzQ2FzZUxldmVsXyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAodmFsdWUgPT0gUnVsZUJhc2VkQ29sbGF0b3IuQXR0cmlidXRlVmFsdWUuT05fKTsKKwkgICAgICAgICAgICBicmVhazsKKwkgICAgICAgIGNhc2UgUnVsZUJhc2VkQ29sbGF0b3IuQXR0cmlidXRlLk5PUk1BTElaQVRJT05fTU9ERV8gOgorICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBSdWxlQmFzZWRDb2xsYXRvci5BdHRyaWJ1dGVWYWx1ZS5PTl8pIHsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBDb2xsYXRvci5DQU5PTklDQUxfREVDT01QT1NJVElPTjsKKyAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgb3B0aW9uc2V0Lm1fZGVjb21wb3NpdGlvbl8gPSB2YWx1ZTsKKwkgICAgICAgICAgICBicmVhazsKKwkgICAgICAgIGNhc2UgUnVsZUJhc2VkQ29sbGF0b3IuQXR0cmlidXRlLlNUUkVOR1RIXyA6CisJICAgICAgICAgICAgb3B0aW9uc2V0Lm1fc3RyZW5ndGhfID0gdmFsdWU7CisJICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICBkZWZhdWx0IDoKKwkgICAgICAgICAgICBicmVhazsKKwkgICAgfQorICAJfQorICAJCisgICAgVW5pY29kZVNldCBnZXRUYWlsb3JlZFNldCgpIHRocm93cyBQYXJzZUV4Y2VwdGlvbgorICAgIHsJCisgICAgICAgIGJvb2xlYW4gc3RhcnRPZlJ1bGVzID0gdHJ1ZTsKKyAgICAgICAgVW5pY29kZVNldCB0YWlsb3JlZCA9IG5ldyBVbmljb2RlU2V0KCk7CisgICAgICAgIFN0cmluZyBwYXR0ZXJuOworICAgICAgICBDYW5vbmljYWxJdGVyYXRvciBpdCA9IG5ldyBDYW5vbmljYWxJdGVyYXRvcigiIik7CisgICAgICAgIAorICAgICAgICBtX3BhcnNlZFRva2VuXy5tX3N0cmVuZ3RoXyA9IFRPS0VOX1VOU0VUXzsgCisgICAgICAgIGludCBzb3VyY2VsaW1pdCA9IG1fc291cmNlXy5sZW5ndGgoKTsKKyAgICAgICAgaW50IGV4cGFuZE5leHQgPSAwOworICAgICAgICAKKyAgICAgICAgd2hpbGUgKG1fY3VycmVudF8gPCBzb3VyY2VsaW1pdCkgeworICAgICAgICBtX3BhcnNlZFRva2VuXy5tX3ByZWZpeE9mZnNldF8gPSAwOworICAgICAgICBpZiAocGFyc2VOZXh0VG9rZW4oc3RhcnRPZlJ1bGVzKSA8IDApIHsKKyAgICAgICAgICAgIC8vIHdlIGhhdmUgcmVhY2hlZCB0aGUgZW5kCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBzdGFydE9mUnVsZXMgPSBmYWxzZTsKKyAgICAgICAgLy8gVGhlIGlkZWEgaXMgdG8gdG9rZW5pemUgdGhlIHJ1bGUgc2V0LiBGb3IgZWFjaCBub24tcmVzZXQgdG9rZW4sCisgICAgICAgIC8vIHdlIGFkZCBhbGwgdGhlIGNhbm9uaWNhbHkgZXF1aXZhbGVudCBGQ0Qgc2VxdWVuY2VzIAorICAgICAgICAgICAgaWYobV9wYXJzZWRUb2tlbl8ubV9zdHJlbmd0aF8gIT0gVE9LRU5fUkVTRVRfKSB7CQkgICAgCQorICAgICAgICAgICAgICAgIGl0LnNldFNvdXJjZShtX3NvdXJjZV8uc3Vic3RyaW5nKAorICAgICAgICAgICAgICAgICAgCW1fcGFyc2VkVG9rZW5fLm1fY2hhcnNPZmZzZXRfLCAKKyAgICAgICAgICAgICAgICAgIAltX3BhcnNlZFRva2VuXy5tX2NoYXJzT2Zmc2V0XyttX3BhcnNlZFRva2VuXy5tX2NoYXJzTGVuXykpOworICAgICAgICAgICAgICAgIHBhdHRlcm4gPSBpdC5uZXh0KCk7CisgICAgICAgICAgICAgICAgd2hpbGUocGF0dGVybiAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAJaWYoTm9ybWFsaXplci5xdWlja0NoZWNrKHBhdHRlcm4sIE5vcm1hbGl6ZXIuRkNEKSAhPSBOb3JtYWxpemVyLk5PKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0YWlsb3JlZC5hZGQocGF0dGVybik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcGF0dGVybiA9IGl0Lm5leHQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRhaWxvcmVkOworICAgIH0KKyAgICAKKyAgICBmaW5hbCBwcml2YXRlIHZvaWQgZXh0cmFjdFNldHNGcm9tUnVsZXMoU3RyaW5nIHJ1bGVzKSB0aHJvd3MgUGFyc2VFeGNlcHRpb24geworICAgICAgaW50IG9wdGlvbk51bWJlciA9IC0xOworICAgICAgaW50IHNldFN0YXJ0ID0gMDsKKyAgICAgIGludCBpID0gMDsKKyAgICAgIHdoaWxlKGkgPCBydWxlcy5sZW5ndGgoKSkgeworICAgICAgICBpZihydWxlcy5jaGFyQXQoaSkgPT0gMHgwMDVCKSB7CisgICAgICAgICAgb3B0aW9uTnVtYmVyID0gcmVhZE9wdGlvbihydWxlcywgaSsxLCBydWxlcy5sZW5ndGgoKSk7CisgICAgICAgICAgc2V0U3RhcnQgPSBtX29wdGlvbmFyZ187CisgICAgICAgICAgaWYob3B0aW9uTnVtYmVyID09IDEzKSB7IC8qIGNvcHkgLSBwYXJ0cyBvZiBVQ0EgdG8gdGFpbG9yaW5nICovCisgICAgICAgICAgICBVbmljb2RlU2V0IG5ld1NldCA9IHJlYWRBbmRTZXRVbmljb2RlU2V0KHJ1bGVzLCBzZXRTdGFydCk7CisgICAgICAgICAgICAgIGlmKG1fY29weVNldF8gPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIG1fY29weVNldF8gPSBuZXdTZXQ7CisgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbV9jb3B5U2V0Xy5hZGRBbGwobmV3U2V0KTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgIH0gZWxzZSBpZihvcHRpb25OdW1iZXIgPT0gMTQpIHsKKyAgICAgICAgICAgIFVuaWNvZGVTZXQgbmV3U2V0ID0gcmVhZEFuZFNldFVuaWNvZGVTZXQocnVsZXMsIHNldFN0YXJ0KTsKKyAgICAgICAgICAgICAgaWYobV9yZW1vdmVTZXRfID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBtX3JlbW92ZVNldF8gPSBuZXdTZXQ7CisgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbV9yZW1vdmVTZXRfLmFkZEFsbChuZXdTZXQpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGkrKzsKKyAgICAgIH0gICAgICAgIAorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS90ZXh0L0NvbGxhdG9yLmphdmEgYi9zcmMvY29tL2libS9pY3UvdGV4dC9Db2xsYXRvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmE3Mzg3ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdGV4dC9Db2xsYXRvci5qYXZhCkBAIC0wLDAgKzEsNTgzIEBACisvKioKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L3RleHQvQ29sbGF0b3IuamF2YSx2ICQgCisqICREYXRlOiAyMDAyLzEyLzExIDIzOjM2OjU4ICQgCisqICRSZXZpc2lvbjogMS4xOSAkCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworcGFja2FnZSBjb20uaWJtLmljdS50ZXh0OworCitpbXBvcnQgamF2YS51dGlsLkNvbXBhcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworCitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5JQ1VMb2NhbGVEYXRhOworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuSUNVTG9jYWxlU2VydmljZTsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLklDVUxvY2FsZVNlcnZpY2UuSUNVUmVzb3VyY2VCdW5kbGVGYWN0b3J5OworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuSUNVU2VydmljZTsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLklDVVNlcnZpY2UuRmFjdG9yeTsKKworLyoqCisqIDxwPkNvbGxhdG9yIHBlcmZvcm1zIGxvY2FsZS1zZW5zaXRpdmUgc3RyaW5nIGNvbXBhcmlzb24uIEEgY29uY3JldGUKKyogc3ViY2xhc3MsIFJ1bGVCYXNlZENvbGxhdG9yLCBhbGxvd3MgY3VzdG9taXphdGlvbiBvZiB0aGUgY29sbGF0aW9uCisqIG9yZGVyaW5nIGJ5IHRoZSB1c2Ugb2YgcnVsZSBzZXRzLjwvcD4KKyogCisqIDxwPkZvbGxvd2luZyB0aGUgPGEgaHJlZj1odHRwOi8vd3d3LnVuaWNvZGUub3JnPlVuaWNvZGUKKyogQ29uc29ydGl1bTwvYT4ncyBzcGVjaWZpY2F0aW9ucyBmb3IgdGhlIAorKiA8YSBocmVmPSJodHRwOi8vd3d3LnVuaWNvZGUub3JnL3VuaWNvZGUvcmVwb3J0cy90cjEwLyI+IFVuaWNvZGUgQ29sbGF0aW9uCisqIEFsZ29yaXRobSAoVUNBKTwvYT4sIHRoZXJlIGFyZSA1IGRpZmZlcmVudCBsZXZlbHMgb2Ygc3RyZW5ndGggdXNlZAorKiBpbiBjb21wYXJpc29uczoKKyoKKyogPHVsPgorKiA8bGk+UFJJTUFSWSBzdHJlbmd0aDogVHlwaWNhbGx5LCB0aGlzIGlzIHVzZWQgdG8gZGVub3RlIGRpZmZlcmVuY2VzIGJldHdlZW4gCisqICAgICBiYXNlIGNoYXJhY3RlcnMgKGZvciBleGFtcGxlLCAiYSIgJmx0OyAiYiIpLiAKKyogICAgIEl0IGlzIHRoZSBzdHJvbmdlc3QgZGlmZmVyZW5jZS4gRm9yIGV4YW1wbGUsIGRpY3Rpb25hcmllcyBhcmUgZGl2aWRlZCAKKyogICAgIGludG8gZGlmZmVyZW50IHNlY3Rpb25zIGJ5IGJhc2UgY2hhcmFjdGVyLiAKKyogPGxpPlNFQ09OREFSWSBzdHJlbmd0aDogQWNjZW50cyBpbiB0aGUgY2hhcmFjdGVycyBhcmUgY29uc2lkZXJlZCBzZWNvbmRhcnkgCisqICAgICBkaWZmZXJlbmNlcyAoZm9yIGV4YW1wbGUsICJhcyIgJmx0OyAiJmFncmF2ZTtzIiAmbHQ7ICJhdCIpLiBPdGhlciAKKyogICAgIGRpZmZlcmVuY2VzIAorKiAgICAgYmV0d2VlbiBsZXR0ZXJzIGNhbiBhbHNvIGJlIGNvbnNpZGVyZWQgc2Vjb25kYXJ5IGRpZmZlcmVuY2VzLCBkZXBlbmRpbmcgCisqICAgICBvbiB0aGUgbGFuZ3VhZ2UuIEEgc2Vjb25kYXJ5IGRpZmZlcmVuY2UgaXMgaWdub3JlZCB3aGVuIHRoZXJlIGlzIGEgCisqICAgICBwcmltYXJ5IGRpZmZlcmVuY2UgYW55d2hlcmUgaW4gdGhlIHN0cmluZ3MuCisqIDxsaT5URVJUSUFSWSBzdHJlbmd0aDogVXBwZXIgYW5kIGxvd2VyIGNhc2UgZGlmZmVyZW5jZXMgaW4gY2hhcmFjdGVycyBhcmUgCisqICAgICBkaXN0aW5ndWlzaGVkIGF0IHRlcnRpYXJ5IHN0cmVuZ3RoIChmb3IgZXhhbXBsZSwgImFvIiAmbHQ7ICJBbyIgJmx0OyAKKyogICAgICJhJm9ncmF2ZTsiKS4gSW4gYWRkaXRpb24sIGEgdmFyaWFudCBvZiBhIGxldHRlciBkaWZmZXJzIGZyb20gdGhlIGJhc2UgCisqICAgICBmb3JtIG9uIHRoZSB0ZXJ0aWFyeSBzdHJlbmd0aCAoc3VjaCBhcyAiQSIgYW5kICImIzkzOTg7IikuIEFub3RoZXIgCisqICAgICBleGFtcGxlIGlzIHRoZSAKKyogICAgIGRpZmZlcmVuY2UgYmV0d2VlbiBsYXJnZSBhbmQgc21hbGwgS2FuYS4gQSB0ZXJ0aWFyeSBkaWZmZXJlbmNlIGlzIGlnbm9yZWQgCisqICAgICB3aGVuIHRoZXJlIGlzIGEgcHJpbWFyeSBvciBzZWNvbmRhcnkgZGlmZmVyZW5jZSBhbnl3aGVyZSBpbiB0aGUgc3RyaW5ncy4gCisqIDxsaT5RVUFURVJOQVJZIHN0cmVuZ3RoOiBXaGVuIHB1bmN0dWF0aW9uIGlzIGlnbm9yZWQgCisqICAgICA8YSBocmVmPWh0dHA6Ly93d3ctMTI0LmlibS5jb20vaWN1L3VzZXJndWlkZS9Db2xsYXRlX0NvbmNlcHRzLmh0bWwjSWdub3JpbmdfUHVuY3R1YXRpb24+CisqICAgICAoc2VlIElnbm9yaW5nIFB1bmN0dWF0aW9ucyBpbiB0aGUgdXNlciBndWlkZSk8L2E+IGF0IFBSSU1BUlkgdG8gVEVSVElBUlkgCisqICAgICBzdHJlbmd0aCwgYW4gYWRkaXRpb25hbCBzdHJlbmd0aCBsZXZlbCBjYW4gCisqICAgICBiZSB1c2VkIHRvIGRpc3Rpbmd1aXNoIHdvcmRzIHdpdGggYW5kIHdpdGhvdXQgcHVuY3R1YXRpb24gKGZvciBleGFtcGxlLCAKKyogICAgICJhYiIgJmx0OyAiYS1iIiAmbHQ7ICJhQiIpLiAKKyogICAgIFRoaXMgZGlmZmVyZW5jZSBpcyBpZ25vcmVkIHdoZW4gdGhlcmUgaXMgYSBQUklNQVJZLCBTRUNPTkRBUlkgb3IgVEVSVElBUlkgCisqICAgICBkaWZmZXJlbmNlLiBUaGUgUVVBVEVSTkFSWSBzdHJlbmd0aCBzaG91bGQgb25seSBiZSB1c2VkIGlmIGlnbm9yaW5nIAorKiAgICAgcHVuY3R1YXRpb24gaXMgcmVxdWlyZWQuIAorKiA8bGk+SURFTlRJQ0FMIHN0cmVuZ3RoOgorKiAgICAgV2hlbiBhbGwgb3RoZXIgc3RyZW5ndGhzIGFyZSBlcXVhbCwgdGhlIElERU5USUNBTCBzdHJlbmd0aCBpcyB1c2VkIGFzIGEgCisqICAgICB0aWVicmVha2VyLiBUaGUgVW5pY29kZSBjb2RlIHBvaW50IHZhbHVlcyBvZiB0aGUgTkZEIGZvcm0gb2YgZWFjaCBzdHJpbmcgCisqICAgICBhcmUgY29tcGFyZWQsIGp1c3QgaW4gY2FzZSB0aGVyZSBpcyBubyBkaWZmZXJlbmNlLiAKKyogICAgIEZvciBleGFtcGxlLCBIZWJyZXcgY2FudGVsbGF0aW9uIG1hcmtzIGFyZSBvbmx5IGRpc3Rpbmd1aXNoZWQgYXQgdGhpcyAKKyogICAgIHN0cmVuZ3RoLiBUaGlzIHN0cmVuZ3RoIHNob3VsZCBiZSB1c2VkIHNwYXJpbmdseSwgYXMgb25seSBjb2RlIHBvaW50IAorKiAgICAgdmFsdWUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0d28gc3RyaW5ncyBpcyBhbiBleHRyZW1lbHkgcmFyZSBvY2N1cnJlbmNlLiAKKyogICAgIFVzaW5nIHRoaXMgc3RyZW5ndGggc3Vic3RhbnRpYWxseSBkZWNyZWFzZXMgdGhlIHBlcmZvcm1hbmNlIGZvciBib3RoIAorKiAgICAgY29tcGFyaXNvbiBhbmQgY29sbGF0aW9uIGtleSBnZW5lcmF0aW9uIEFQSXMuIFRoaXMgc3RyZW5ndGggYWxzbyAKKyogICAgIGluY3JlYXNlcyB0aGUgc2l6ZSBvZiB0aGUgY29sbGF0aW9uIGtleS4KKyogPC91bD4KKyoKKyogVW5saWtlIHRoZSBKREssIElDVTRKJ3MgQ29sbGF0b3IgZGVhbHMgb25seSB3aXRoIDIgZGVjb21wb3NpdGlvbiBtb2RlcywgCisqIHRoZSBjYW5vbmljYWwgZGVjb21wb3NpdGlvbiBtb2RlIGFuZCBvbmUgdGhhdCBkb2VzIG5vdCB1c2UgYW55IGRlY29tcG9zaXRpb24uCisqIFRoZSBjb21wYXRpYmlsaXR5IGRlY29tcG9zaXRpb24gbW9kZSwgamF2YS50ZXh0LkNvbGxhdG9yLkZVTExfREVDT01QT1NJVElPTgorKiBpcyBub3Qgc3VwcG9ydGVkIGhlcmUuIElmIHRoZSBjYW5vbmljYWwKKyogZGVjb21wb3NpdGlvbiBtb2RlIGlzIHNldCwgdGhlIENvbGxhdG9yIGhhbmRsZXMgdW4tbm9ybWFsaXplZCB0ZXh0IHByb3Blcmx5LCAKKyogcHJvZHVjaW5nIHRoZSBzYW1lIHJlc3VsdHMgYXMgaWYgdGhlIHRleHQgd2VyZSBub3JtYWxpemVkIGluIE5GRC4gSWYgCisqIGNhbm9uaWNhbCBkZWNvbXBvc2l0aW9uIGlzIHR1cm5lZCBvZmYsIGl0IGlzIHRoZSB1c2VyJ3MgcmVzcG9uc2liaWxpdHkgdG8gCisqIGVuc3VyZSB0aGF0IGFsbCB0ZXh0IGlzIGFscmVhZHkgaW4gdGhlIGFwcHJvcHJpYXRlIGZvcm0gYmVmb3JlIHBlcmZvcm1pbmcKKyogYSBjb21wYXJpc29uIG9yIGJlZm9yZSBnZXR0aW5nIGEgQ29sbGF0aW9uS2V5LjwvcD4KKyoKKyogPHA+Rm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbGxhdGlvbiBzZXJ2aWNlIHNlZSB0aGUgCisqIDxhIGhyZWY9Imh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3UvdXNlcmd1aWRlL0NvbGxhdGVfSW50cm8uaHRtbCI+dXNlcnMgCisqIGd1aWRlPC9hPi48L3A+CisqCisqIDxwPkV4YW1wbGVzIG9mIHVzZQorKiA8cHJlPgorKiAvLyBHZXQgdGhlIENvbGxhdG9yIGZvciBVUyBFbmdsaXNoIGFuZCBzZXQgaXRzIHN0cmVuZ3RoIHRvIFBSSU1BUlkKKyogQ29sbGF0b3IgdXNDb2xsYXRvciA9IENvbGxhdG9yLmdldEluc3RhbmNlKExvY2FsZS5VUyk7CisqIHVzQ29sbGF0b3Iuc2V0U3RyZW5ndGgoQ29sbGF0b3IuUFJJTUFSWSk7CisqIGlmICh1c0NvbGxhdG9yLmNvbXBhcmUoImFiYyIsICJBQkMiKSA9PSAwKSB7CisqICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlN0cmluZ3MgYXJlIGVxdWl2YWxlbnQiKTsKKyogfQorKiAKKyogVGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIGhvdyB0byBjb21wYXJlIHR3byBzdHJpbmdzIHVzaW5nIHRoZQorKiBDb2xsYXRvciBmb3IgdGhlIGRlZmF1bHQgbG9jYWxlLgorKgorKiAvLyBDb21wYXJlIHR3byBzdHJpbmdzIGluIHRoZSBkZWZhdWx0IGxvY2FsZQorKiBDb2xsYXRvciBteUNvbGxhdG9yID0gQ29sbGF0b3IuZ2V0SW5zdGFuY2UoKTsKKyogbXlDb2xsYXRvci5zZXREZWNvbXBvc2l0aW9uKE5PX0RFQ09NUE9TSVRJT04pOworKiBpZiAobXlDb2xsYXRvci5jb21wYXJlKCImYWdyYXZlOyYjOTI7dTAzMjUiLCAiYSYjOTI7dTAzMjUmIzc2ODsiKSAhPSAwKSB7CisqICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiZhZ3JhdmU7JiM5Mjt1MDMyNSBpcyBub3QgZXF1YWxzIHRvIGEmIzkyO3UwMzI1JiM3Njg7IHdpdGhvdXQgZGVjb21wb3NpdGlvbiIpOworKiAgICAgbXlDb2xsYXRvci5zZXREZWNvbXBvc2l0aW9uKENBTk9OSUNBTF9ERUNPTVBPU0lUSU9OKTsKKyogICAgIGlmIChteUNvbGxhdG9yLmNvbXBhcmUoIiZhZ3JhdmU7JiM5Mjt1MDMyNSIsICJhJiM5Mjt1MDMyNSYjNzY4OyIpICE9IDApIHsKKyogICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkVycm9yOiAmYWdyYXZlOyYjOTI7dTAzMjUgc2hvdWxkIGJlIGVxdWFscyB0byBhJiM5Mjt1MDMyNSYjNzY4OyB3aXRoIGRlY29tcG9zaXRpb24iKTsKKyogICAgIH0KKyogICAgIGVsc2UgeworKiAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiJmFncmF2ZTsmIzkyO3UwMzI1IGlzIGVxdWFscyB0byBhJiM5Mjt1MDMyNSYjNzY4OyB3aXRoIGRlY29tcG9zaXRpb24iKTsKKyogICAgIH0KKyogfQorKiBlbHNlIHsKKyogICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRXJyb3I6ICZhZ3JhdmU7JiM5Mjt1MDMyNSBzaG91bGQgYmUgbm90IGVxdWFscyB0byBhJiM5Mjt1MDMyNSYjNzY4OyB3aXRob3V0IGRlY29tcG9zaXRpb24iKTsKKyogfQorKiA8L3ByZT4KKyogPC9wPgorKiBAc2VlIFJ1bGVCYXNlZENvbGxhdG9yCisqIEBzZWUgQ29sbGF0aW9uS2V5CisqIEBhdXRob3IgU3luIFdlZSBRdWVrCisqIEBkcmFmdCBJQ1UgMi4yIAorKi8KK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBDb2xsYXRvciBpbXBsZW1lbnRzIENvbXBhcmF0b3IsIENsb25lYWJsZQoreyAgICAgCisgICAgLy8gcHVibGljIGRhdGEgbWVtYmVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgCisgICAgLyoqCisgICAgICogU3Ryb25nZXN0IGNvbGxhdG9yIHN0cmVuZ3RoIHZhbHVlLiBUeXBpY2FsbHkgdXNlZCB0byBkZW5vdGUgZGlmZmVyZW5jZXMgCisgICAgICogYmV0d2VlbiBiYXNlIGNoYXJhY3RlcnMuIFNlZSBjbGFzcyBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGV4cGxhbmF0aW9uLgorICAgICAqIEBzZWUgI3NldFN0cmVuZ3RoCisgICAgICogQHNlZSAjZ2V0U3RyZW5ndGgKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IFBSSU1BUlkgPSAwOworCisgICAgLyoqCisgICAgICogU2Vjb25kIGxldmVsIGNvbGxhdG9yIHN0cmVuZ3RoIHZhbHVlLiAKKyAgICAgKiBBY2NlbnRzIGluIHRoZSBjaGFyYWN0ZXJzIGFyZSBjb25zaWRlcmVkIHNlY29uZGFyeSBkaWZmZXJlbmNlcy4KKyAgICAgKiBPdGhlciBkaWZmZXJlbmNlcyBiZXR3ZWVuIGxldHRlcnMgY2FuIGFsc28gYmUgY29uc2lkZXJlZCBzZWNvbmRhcnkgCisgICAgICogZGlmZmVyZW5jZXMsIGRlcGVuZGluZyBvbiB0aGUgbGFuZ3VhZ2UuIAorICAgICAqIFNlZSBjbGFzcyBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGV4cGxhbmF0aW9uLgorICAgICAqIEBzZWUgI3NldFN0cmVuZ3RoCisgICAgICogQHNlZSAjZ2V0U3RyZW5ndGgKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IFNFQ09OREFSWSA9IDE7CisKKyAgICAvKioKKyAgICAgKiBUaGlyZCBsZXZlbCBjb2xsYXRvciBzdHJlbmd0aCB2YWx1ZS4gCisgICAgICogVXBwZXIgYW5kIGxvd2VyIGNhc2UgZGlmZmVyZW5jZXMgaW4gY2hhcmFjdGVycyBhcmUgZGlzdGluZ3Vpc2hlZCBhdCB0aGlzCisgICAgICogc3RyZW5ndGggbGV2ZWwuIEluIGFkZGl0aW9uLCBhIHZhcmlhbnQgb2YgYSBsZXR0ZXIgZGlmZmVycyBmcm9tIHRoZSBiYXNlIAorICAgICAqIGZvcm0gb24gdGhlIHRlcnRpYXJ5IGxldmVsLgorICAgICAqIFNlZSBjbGFzcyBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGV4cGxhbmF0aW9uLgorICAgICAqIEBzZWUgI3NldFN0cmVuZ3RoCisgICAgICogQHNlZSAjZ2V0U3RyZW5ndGgKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IFRFUlRJQVJZID0gMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgICAvKioKKyAgICAgKiBGb3VydGggbGV2ZWwgY29sbGF0b3Igc3RyZW5ndGggdmFsdWUuIAorICAgICAqIFdoZW4gcHVuY3R1YXRpb24gaXMgaWdub3JlZCAKKyAgICAgKiA8YSBocmVmPSJodHRwOi8vd3d3LTEyNC5pYm0uY29tL2ljdS91c2VyZ3VpZGUvQ29sbGF0ZV9Db25jZXB0cy5odG1sI0lnbm9yaW5nX1B1bmN0dWF0aW9uIj4KKyAgICAgKiAoc2VlIElnbm9yaW5nIFB1bmN0dWF0aW9ucyBpbiB0aGUgdXNlciBndWlkZSk8L2E+IGF0IFBSSU1BUlkgdG8gVEVSVElBUlkgCisgICAgICogc3RyZW5ndGgsIGFuIGFkZGl0aW9uYWwgc3RyZW5ndGggbGV2ZWwgY2FuIAorICAgICAqIGJlIHVzZWQgdG8gZGlzdGluZ3Vpc2ggd29yZHMgd2l0aCBhbmQgd2l0aG91dCBwdW5jdHVhdGlvbi4KKyAgICAgKiBTZWUgY2xhc3MgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBleHBsYW5hdGlvbi4KKyAgICAgKiBAc2VlICNzZXRTdHJlbmd0aAorICAgICAqIEBzZWUgI2dldFN0cmVuZ3RoCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBRVUFURVJOQVJZID0gMzsKKworICAgIC8qKgorICAgICAqIDxwPgorICAgICAqIFNtYWxsZXN0IENvbGxhdG9yIHN0cmVuZ3RoIHZhbHVlLiBXaGVuIGFsbCBvdGhlciBzdHJlbmd0aHMgYXJlIGVxdWFsLCAKKyAgICAgKiB0aGUgSURFTlRJQ0FMIHN0cmVuZ3RoIGlzIHVzZWQgYXMgYSB0aWVicmVha2VyLiBUaGUgVW5pY29kZSBjb2RlIHBvaW50IAorICAgICAqIHZhbHVlcyBvZiB0aGUgTkZEIGZvcm0gb2YgZWFjaCBzdHJpbmcgYXJlIGNvbXBhcmVkLCBqdXN0IGluIGNhc2UgdGhlcmUgCisgICAgICogaXMgbm8gZGlmZmVyZW5jZS4gCisgICAgICogU2VlIGNsYXNzIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgZXhwbGFuYXRpb24uCisgICAgICogPC9wPgorICAgICAqIDxwPgorICAgICAqIE5vdGUgdGhpcyB2YWx1ZSBpcyBkaWZmZXJlbnQgZnJvbSBKREsncworICAgICAqIDwvcD4KKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IElERU5USUNBTCA9IDE1OworCisgICAgLyoqCisgICAgICogPHA+RGVjb21wb3NpdGlvbiBtb2RlIHZhbHVlLiBXaXRoIE5PX0RFQ09NUE9TSVRJT04gc2V0LCBTdHJpbmdzCisgICAgICogd2lsbCBub3QgYmUgZGVjb21wb3NlZCBmb3IgY29sbGF0aW9uLiBUaGlzIGlzIHRoZSBkZWZhdWx0CisgICAgICogZGVjb21wb3NpdGlvbiBzZXR0aW5nIHVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkIGJ5IHRoZSBsb2NhbGUKKyAgICAgKiB1c2VkIHRvIGNyZWF0ZSB0aGUgQ29sbGF0b3IuPC9wPgorICAgICAqCisgICAgICogPHA+PHN0cm9uZz5Ob3RlPC9zdHJvbmc+IHRoaXMgdmFsdWUgaXMgZGlmZmVyZW50IGZyb20gdGhlIEpESydzLjwvcD4KKyAgICAgKiBAc2VlICNDQU5PTklDQUxfREVDT01QT1NJVElPTgorICAgICAqIEBzZWUgI2dldERlY29tcG9zaXRpb24KKyAgICAgKiBAc2VlICNzZXREZWNvbXBvc2l0aW9uCisgICAgICogQGRyYWZ0IElDVSAyLjIgCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgTk9fREVDT01QT1NJVElPTiA9IDE2OworCisgICAgLyoqCisgICAgICogPHA+RGVjb21wb3NpdGlvbiBtb2RlIHZhbHVlLiBXaXRoIENBTk9OSUNBTF9ERUNPTVBPU0lUSU9OIHNldCwKKyAgICAgKiBjaGFyYWN0ZXJzIHRoYXQgYXJlIGNhbm9uaWNhbCB2YXJpYW50cyBhY2NvcmRpbmcgdG8gdGhlIFVuaWNvZGUgc3RhbmRhcmQKKyAgICAgKiB3aWxsIGJlIGRlY29tcG9zZWQgZm9yIGNvbGxhdGlvbi48L3A+CisgICAgICoKKyAgICAgKiA8cD5DQU5PTklDQUxfREVDT01QT1NJVElPTiBjb3JyZXNwb25kcyB0byBOb3JtYWxpemF0aW9uIEZvcm0gRCBhcworICAgICAqIGRlc2NyaWJlZCBpbiA8YSBocmVmPSJodHRwOi8vd3d3LnVuaWNvZGUub3JnL3VuaWNvZGUvcmVwb3J0cy90cjE1LyI+CisgICAgICogVW5pY29kZSBUZWNobmljYWwgUmVwb3J0ICMxNTwvYT4uCisgICAgICogPC9wPgorICAgICAqIEBzZWUgI05PX0RFQ09NUE9TSVRJT04KKyAgICAgKiBAc2VlICNnZXREZWNvbXBvc2l0aW9uCisgICAgICogQHNlZSAjc2V0RGVjb21wb3NpdGlvbgorICAgICAqIEBkcmFmdCBJQ1UgMi4yIAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IENBTk9OSUNBTF9ERUNPTVBPU0lUSU9OID0gMTc7CisgICAgCisgICAgLy8gcHVibGljIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvLyBwdWJsaWMgc2V0dGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIC8qKgorICAgICAqIDxwPlNldHMgdGhpcyBDb2xsYXRvcidzIHN0cmVuZ3RoIHByb3BlcnR5LiBUaGUgc3RyZW5ndGggcHJvcGVydHkgCisgICAgICogZGV0ZXJtaW5lcyB0aGUgbWluaW11bSBsZXZlbCBvZiBkaWZmZXJlbmNlIGNvbnNpZGVyZWQgc2lnbmlmaWNhbnQgCisgICAgICogZHVyaW5nIGNvbXBhcmlzb24uPC9wPgorICAgICAqIAorICAgICAqIDxwPlRoZSBkZWZhdWx0IHN0cmVuZ3RoIGZvciB0aGUgQ29sbGF0b3IgaXMgVEVSVElBUlksIHVubGVzcyBzcGVjaWZpZWQgCisgICAgICogb3RoZXJ3aXNlIGJ5IHRoZSBsb2NhbGUgdXNlZCB0byBjcmVhdGUgdGhlIENvbGxhdG9yLjwvcD4KKyAgICAgKgorICAgICAqIDxwPlNlZSB0aGUgQ29sbGF0b3IgY2xhc3MgZGVzY3JpcHRpb24gZm9yIGFuIGV4YW1wbGUgb2YgdXNlLjwvcD4KKyAgICAgKiBAcGFyYW0gbmV3IFN0cmVuZ3RoIHRoZSBuZXcgc3RyZW5ndGggdmFsdWUuCisgICAgICogQHNlZSAjZ2V0U3RyZW5ndGgKKyAgICAgKiBAc2VlICNQUklNQVJZCisgICAgICogQHNlZSAjU0VDT05EQVJZCisgICAgICogQHNlZSAjVEVSVElBUlkKKyAgICAgKiBAc2VlICNRVUFURVJOQVJZCisgICAgICogQHNlZSAjSURFTlRJQ0FMCisgICAgICogQGV4Y2VwdGlvbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIG5ldyBzdHJlbmd0aCB2YWx1ZSBpcyBub3Qgb25lIAorICAgICAqICAgICAgICAgICAgICAgIG9mIFBSSU1BUlksIFNFQ09OREFSWSwgVEVSVElBUlksIFFVQVRFUk5BUlkgb3IgSURFTlRJQ0FMLgorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0U3RyZW5ndGgoaW50IG5ld1N0cmVuZ3RoKSAKKyAgICB7CisgICAgICAgIGlmICgobmV3U3RyZW5ndGggIT0gUFJJTUFSWSkgJiYKKyAgICAgICAgICAgIChuZXdTdHJlbmd0aCAhPSBTRUNPTkRBUlkpICYmCisgICAgICAgICAgICAobmV3U3RyZW5ndGggIT0gVEVSVElBUlkpICYmCisgICAgICAgICAgICAobmV3U3RyZW5ndGggIT0gUVVBVEVSTkFSWSkgJiYKKyAgICAgICAgICAgIChuZXdTdHJlbmd0aCAhPSBJREVOVElDQUwpKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbmNvcnJlY3QgY29tcGFyaXNvbiBsZXZlbC4iKTsKKyAgICAgICAgfQorICAgICAgICBtX3N0cmVuZ3RoXyA9IG5ld1N0cmVuZ3RoOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiA8cD5TZXQgdGhlIGRlY29tcG9zaXRpb24gbW9kZSBvZiB0aGlzIENvbGxhdG9yLiAgU2V0dGluZyB0aGlzCisgICAgICogZGVjb21wb3NpdGlvbiBwcm9wZXJ0eSB3aXRoIENBTk9OSUNBTF9ERUNPTVBPU0lUSU9OIGFsbG93cyB0aGUKKyAgICAgKiBDb2xsYXRvciB0byBoYW5kbGUgdW4tbm9ybWFsaXplZCB0ZXh0IHByb3Blcmx5LCBwcm9kdWNpbmcgdGhlCisgICAgICogc2FtZSByZXN1bHRzIGFzIGlmIHRoZSB0ZXh0IHdlcmUgbm9ybWFsaXplZC4gSWYKKyAgICAgKiBOT19ERUNPTVBPU0lUSU9OIGlzIHNldCwgaXQgaXMgdGhlIHVzZXIncyByZXNwb25zaWJpbGl0eSB0bworICAgICAqIGluc3VyZSB0aGF0IGFsbCB0ZXh0IGlzIGFscmVhZHkgaW4gdGhlIGFwcHJvcHJpYXRlIGZvcm0gYmVmb3JlCisgICAgICogYSBjb21wYXJpc29uIG9yIGJlZm9yZSBnZXR0aW5nIGEgQ29sbGF0aW9uS2V5LiBBZGp1c3RpbmcKKyAgICAgKiBkZWNvbXBvc2l0aW9uIG1vZGUgYWxsb3dzIHRoZSB1c2VyIHRvIHNlbGVjdCBiZXR3ZWVuIGZhc3RlciBhbmQKKyAgICAgKiBtb3JlIGNvbXBsZXRlIGNvbGxhdGlvbiBiZWhhdmlvci48L3A+CisgICAgICogCisgICAgICogPHA+U2luY2UgYSBncmVhdCBtYW55IG9mIHRoZSB3b3JsZCdzIGxhbmd1YWdlcyBkbyBub3QgcmVxdWlyZQorICAgICAqIHRleHQgbm9ybWFsaXphdGlvbiwgbW9zdCBsb2NhbGVzIHNldCBOT19ERUNPTVBPU0lUSU9OIGFzIHRoZQorICAgICAqIGRlZmF1bHQgZGVjb21wb3NpdGlvbiBtb2RlLjwvcD4KKyAgICAgKiAKKyAgICAgKiBUaGUgZGVmYXVsdCBkZWNvbXBvc2l0b24gbW9kZSBmb3IgdGhlIENvbGxhdG9yIGlzCisgICAgICogTk9fREVDT01QT1NJVE9OLCB1bmxlc3Mgc3BlY2lmaWVkIG90aGVyd2lzZSBieSB0aGUgbG9jYWxlIHVzZWQKKyAgICAgKiB0byBjcmVhdGUgdGhlIENvbGxhdG9yLjwvcD4KKyAgICAgKiAKKyAgICAgKiA8cD5TZWUgZ2V0RGVjb21wb3NpdGlvbiBmb3IgYSBkZXNjcmlwdGlvbiBvZiBkZWNvbXBvc2l0aW9uCisgICAgICogbW9kZS48L3A+CisgICAgICogCisgICAgICogQHBhcmFtIGRlY29tcG9zaXRpb24gdGhlIG5ldyBkZWNvbXBvc2l0aW9uIG1vZGUKKyAgICAgKiBAc2VlICNnZXREZWNvbXBvc2l0aW9uCisgICAgICogQHNlZSAjTk9fREVDT01QT1NJVElPTgorICAgICAqIEBzZWUgI0NBTk9OSUNBTF9ERUNPTVBPU0lUSU9OCisgICAgICogQGV4Y2VwdGlvbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gSWYgdGhlIGdpdmVuIHZhbHVlIGlzIG5vdCBhIHZhbGlkIAorICAgICAqICAgICAgICAgICAgZGVjb21wb3NpdGlvbiBtb2RlLgorICAgICAqIEBkcmFmdCBJQ1UgMi4yIAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldERlY29tcG9zaXRpb24oaW50IGRlY29tcG9zaXRpb24pIAorICAgIHsKKyAgICAgICAgaWYgKChkZWNvbXBvc2l0aW9uICE9IE5PX0RFQ09NUE9TSVRJT04pICYmCisgICAgICAgICAgICAoZGVjb21wb3NpdGlvbiAhPSBDQU5PTklDQUxfREVDT01QT1NJVElPTikpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIldyb25nIGRlY29tcG9zaXRpb24gbW9kZS4iKTsKKyAgICAgICAgfQorICAgICAgICBtX2RlY29tcG9zaXRpb25fID0gZGVjb21wb3NpdGlvbjsKKyAgICB9CisgICAgCisgICAgLy8gcHVibGljIGdldHRlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBDb2xsYXRvciBmb3IgdGhlIGN1cnJlbnQgZGVmYXVsdCBsb2NhbGUuCisgICAgICogVGhlIGRlZmF1bHQgbG9jYWxlIGlzIGRldGVybWluZWQgYnkgamF2YS51dGlsLkxvY2FsZS5nZXREZWZhdWx0KCkuCisgICAgICogQHJldHVybiB0aGUgQ29sbGF0b3IgZm9yIHRoZSBkZWZhdWx0IGxvY2FsZSAoZm9yIGV4YW1wbGUsIGVuX1VTKSBpZiBpdAorICAgICAqICAgICAgICAgaXMgY3JlYXRlZCBzdWNjZXNzZnVsbHkuIE90aGVyd2lzZSBpZiB0aGVyZSBpcyBubyBDb2xsYXRvcgorICAgICAqICAgICAgICAgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50IGxvY2FsZSwgdGhlIGRlZmF1bHQgVUNBIGNvbGxhdG9yIAorICAgICAqICAgICAgICAgd2lsbCBiZSByZXR1cm5lZC4KKyAgICAgKiBAc2VlIGphdmEudXRpbC5Mb2NhbGUjZ2V0RGVmYXVsdCgpCisgICAgICogQHNlZSAjZ2V0SW5zdGFuY2UoTG9jYWxlKQorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBDb2xsYXRvciBnZXRJbnN0YW5jZSgpIAorICAgIHsKKyAgICAgICAgcmV0dXJuIGdldEluc3RhbmNlKExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgIH0KKworICAgIC8vIGJlZ2luIHJlZ2lzdHJ5IHN0dWZmCisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBDb2xsYXRvciBmb3IgdGhlIGRlc2lyZWQgbG9jYWxlLgorICAgICAqIEBwYXJhbSBsb2NhbGUgdGhlIGRlc2lyZWQgbG9jYWxlLgorICAgICAqIEByZXR1cm4gQ29sbGF0b3IgZm9yIHRoZSBkZXNpcmVkIGxvY2FsZSBpZiBpdCBpcyBjcmVhdGVkIHN1Y2Nlc3NmdWxseS4KKyAgICAgKiAgICAgICAgIE90aGVyd2lzZSBpZiB0aGVyZSBpcyBubyBDb2xsYXRvcgorICAgICAqICAgICAgICAgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50IGxvY2FsZSwgYSBkZWZhdWx0IFVDQSBjb2xsYXRvciB3aWxsIAorICAgICAqICAgICAgICAgYmUgcmV0dXJuZWQuCisgICAgICogQHNlZSBqYXZhLnV0aWwuTG9jYWxlCisgICAgICogQHNlZSBqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGUKKyAgICAgKiBAc2VlICNnZXRJbnN0YW5jZSgpCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIENvbGxhdG9yIGdldEluc3RhbmNlKExvY2FsZSBsb2NhbGUpCisgICAgeworICAgICAgICBpZiAoc2VydmljZSA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFJ1bGVCYXNlZENvbGxhdG9yKGxvY2FsZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLy9DTE9WRVI6T0ZGCisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHJldHVybiAoQ29sbGF0b3IpKChDb2xsYXRvcilzZXJ2aWNlLmdldChsb2NhbGUpKS5jbG9uZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2F0Y2ggKENsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihlLmdldE1lc3NhZ2UoKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLy9DTE9WRVI6T04KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vL0NMT1ZFUjpPRkYKKyAgICBwcml2YXRlIHN0YXRpYyBJQ1VMb2NhbGVTZXJ2aWNlIHNlcnZpY2U7CisgICAgcHJpdmF0ZSBzdGF0aWMgSUNVTG9jYWxlU2VydmljZSBnZXRTZXJ2aWNlKCkgeworICAgICAgICBpZiAoc2VydmljZSA9PSBudWxsKSB7CisgICAgICAgICAgICBJQ1VMb2NhbGVTZXJ2aWNlIG5ld1NlcnZpY2UgPSBuZXcgSUNVTG9jYWxlU2VydmljZSgiQ29sbGF0b3IiKTsKKworICAgICAgICAgICAgY2xhc3MgQ29sbGF0b3JGYWN0b3J5IGV4dGVuZHMgSUNVUmVzb3VyY2VCdW5kbGVGYWN0b3J5IHsKKyAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgT2JqZWN0IGhhbmRsZUNyZWF0ZShMb2NhbGUgbG9jLCBpbnQga2luZCwgSUNVU2VydmljZSBzZXJ2aWNlKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUnVsZUJhc2VkQ29sbGF0b3IobG9jKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBuZXdTZXJ2aWNlLnJlZ2lzdGVyRmFjdG9yeShuZXcgQ29sbGF0b3JGYWN0b3J5KCkpOworCisgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKENvbGxhdG9yLmNsYXNzKSB7CisgICAgICAgICAgICAgICAgaWYgKHNlcnZpY2UgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlID0gbmV3U2VydmljZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHNlcnZpY2U7CisgICAgfQorCisgICAgLyogQHByb3RvdHlwZSAqLworICAgIC8qIHB1YmxpYyAqLyBzdGF0aWMgZmluYWwgT2JqZWN0IHJlZ2lzdGVyKENvbGxhdG9yIGNvbGxhdG9yLCBMb2NhbGUgbG9jYWxlKSB7CisgICAgICAgIHJldHVybiBnZXRTZXJ2aWNlKCkucmVnaXN0ZXJPYmplY3QoY29sbGF0b3IsIGxvY2FsZSk7CisgICAgfQorCisgICAgLyogQHByb3RvdHlwZSAqLworICAgIC8qIHB1YmxpYyAqLyBzdGF0aWMgZmluYWwgYm9vbGVhbiB1bnJlZ2lzdGVyKE9iamVjdCByZWdpc3RyeUtleSkgeworICAgICAgICBpZiAoc2VydmljZSAhPSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gc2VydmljZS51bnJlZ2lzdGVyRmFjdG9yeSgoRmFjdG9yeSlyZWdpc3RyeUtleSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICAvLy9DTE9WRVI6T04KKyAgICAvKioKKyAgICAgKiBHZXQgdGhlIHNldCBvZiBMb2NhbGVzIGZvciB3aGljaCBDb2xsYXRvcnMgYXJlIGluc3RhbGxlZC4gCisgICAgICogQHJldHVybiB0aGUgbGlzdCBvZiBhdmFpbGFibGUgbG9jYWxlcyB3aGljaCBjb2xsYXRvcnMgYXJlIGluc3RhbGxlZC4KKyAgICAgKiAgICAgICAgIFRoZSBzZXQgb2YgTG9jYWxlcyByZXR1cm5lZCB3aWxsIGJlIHRoZSBvbmVzIHJlZ2lzdGVyZWQgaW4gCisgICAgICogICAgICAgICBJQ1VMb2NhbGVTZXJ2aWNlLCBpZiBJQ1VMb2NhbGVTZXJ2aWNlIGlzIHVzZWQuIE90aGVyd2lzZSBpdCB3aWxsCisgICAgICogICAgICAgICBiZSB0aGUgc2V0IG9mIExvY2FsZXMgdGhhdCBhcmUgaW5zdGFsbGVkIHdpdGggSUNVNEouCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIExvY2FsZVtdIGdldEF2YWlsYWJsZUxvY2FsZXMoKSB7CisgICAgICAgIGlmIChzZXJ2aWNlICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBzZXJ2aWNlLmdldEF2YWlsYWJsZUxvY2FsZXMoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vL0NMT1ZFUjpPRkYKKyAgICAgICAgICAgIHJldHVybiBJQ1VMb2NhbGVEYXRhLmdldEF2YWlsYWJsZUxvY2FsZXMoKTsKKyAgICAgICAgICAgIC8vL0NMT1ZFUjpPTgorICAgICAgICB9CisgICAgfQorICAgIC8vLy9DTE9WRVI6T0ZGCisgICAgLyogQHByb3RvdHlwZSAqLworICAgIC8qIHB1YmxpYyAqLyBzdGF0aWMgZmluYWwgTWFwIGdldERpc3BsYXlOYW1lcyhMb2NhbGUgbG9jYWxlKSB7CisgICAgICAgIHJldHVybiBnZXRTZXJ2aWNlKCkuZ2V0RGlzcGxheU5hbWVzKGxvY2FsZSk7CisgICAgfQorICAgIC8vLy9DTE9WRVI6T04KKyAgICAKKyAgICAvLyBlbmQgcmVnaXN0cnkgc3R1ZmYKKworICAgIC8qKgorICAgICAqIDxwPlJldHVybnMgdGhpcyBDb2xsYXRvcidzIHN0cmVuZ3RoIHByb3BlcnR5LiBUaGUgc3RyZW5ndGggcHJvcGVydHkgCisgICAgICogZGV0ZXJtaW5lcyB0aGUgbWluaW11bSBsZXZlbCBvZiBkaWZmZXJlbmNlIGNvbnNpZGVyZWQgc2lnbmlmaWNhbnQuCisgICAgICogPC9wPgorICAgICAqIDxwPgorICAgICAqIFNlZSB0aGUgQ29sbGF0b3IgY2xhc3MgZGVzY3JpcHRpb24gZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgKiA8L3A+CisgICAgICogQHJldHVybiB0aGlzIENvbGxhdG9yJ3MgY3VycmVudCBzdHJlbmd0aCBwcm9wZXJ0eS4KKyAgICAgKiBAc2VlICNzZXRTdHJlbmd0aAorICAgICAqIEBzZWUgI1BSSU1BUlkKKyAgICAgKiBAc2VlICNTRUNPTkRBUlkKKyAgICAgKiBAc2VlICNURVJUSUFSWQorICAgICAqIEBzZWUgI1FVQVRFUk5BUlkKKyAgICAgKiBAc2VlICNJREVOVElDQUwKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0U3RyZW5ndGgoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc3RyZW5ndGhfOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiA8cD4KKyAgICAgKiBHZXQgdGhlIGRlY29tcG9zaXRpb24gbW9kZSBvZiB0aGlzIENvbGxhdG9yLiBEZWNvbXBvc2l0aW9uIG1vZGUKKyAgICAgKiBkZXRlcm1pbmVzIGhvdyBVbmljb2RlIGNvbXBvc2VkIGNoYXJhY3RlcnMgYXJlIGhhbmRsZWQuIAorICAgICAqIDwvcD4KKyAgICAgKiA8cD4KKyAgICAgKiBTZWUgdGhlIENvbGxhdG9yIGNsYXNzIGRlc2NyaXB0aW9uIGZvciBtb3JlIGRldGFpbHMuCisgICAgICogPC9wPgorICAgICAqIEByZXR1cm4gdGhlIGRlY29tcG9zaXRpb24gbW9kZQorICAgICAqIEBzZWUgI3NldERlY29tcG9zaXRpb24KKyAgICAgKiBAc2VlICNOT19ERUNPTVBPU0lUSU9OCisgICAgICogQHNlZSAjQ0FOT05JQ0FMX0RFQ09NUE9TSVRJT04KKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0RGVjb21wb3NpdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gbV9kZWNvbXBvc2l0aW9uXzsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogPHA+CisgICAgICogQ29tcGFyZXMgdGhlIHNvdXJjZSB0ZXh0IFN0cmluZyB0byB0aGUgdGFyZ2V0IHRleHQgU3RyaW5nIGFjY29yZGluZyB0byAKKyAgICAgKiB0aGlzIENvbGxhdG9yJ3MgcnVsZXMsIHN0cmVuZ3RoIGFuZCBkZWNvbXBvc2l0aW9uIG1vZGUuCisgICAgICogUmV0dXJucyBhbiBpbnRlZ2VyIGxlc3MgdGhhbiwgCisgICAgICogZXF1YWwgdG8gb3IgZ3JlYXRlciB0aGFuIHplcm8gZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIHNvdXJjZSBTdHJpbmcgaXMgCisgICAgICogbGVzcyB0aGFuLCBlcXVhbCB0byBvciBncmVhdGVyIHRoYW4gdGhlIHRhcmdldCBTdHJpbmcuIFNlZSB0aGUgQ29sbGF0b3IKKyAgICAgKiBjbGFzcyBkZXNjcmlwdGlvbiBmb3IgYW4gZXhhbXBsZSBvZiB1c2UuCisgICAgICogPC9wPgorICAgICAqIEBwYXJhbSBzb3VyY2UgdGhlIHNvdXJjZSBTdHJpbmcuCisgICAgICogQHBhcmFtIHRhcmdldCB0aGUgdGFyZ2V0IFN0cmluZy4KKyAgICAgKiBAcmV0dXJuIFJldHVybnMgYW4gaW50ZWdlciB2YWx1ZS4gVmFsdWUgaXMgbGVzcyB0aGFuIHplcm8gaWYgc291cmNlIGlzIAorICAgICAqICAgICAgICAgbGVzcyB0aGFuIHRhcmdldCwgdmFsdWUgaXMgemVybyBpZiBzb3VyY2UgYW5kIHRhcmdldCBhcmUgZXF1YWwsIAorICAgICAqICAgICAgICAgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIHplcm8gaWYgc291cmNlIGlzIGdyZWF0ZXIgdGhhbiB0YXJnZXQuCisgICAgICogQHNlZSBDb2xsYXRpb25LZXkKKyAgICAgKiBAc2VlICNnZXRDb2xsYXRpb25LZXkKKyAgICAgKiBAZXhjZXB0aW9uIE51bGxQb2ludGVyRXhjZXB0aW9uIHRocm93biBpZiBlaXRoZXIgYXJndW1lbnRzIGlzIG51bGwuCisgICAgICogICAgICAgICAgICBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gdGhyb3duIGlmIGVpdGhlciBzb3VyY2Ugb3IgdGFyZ2V0IGlzCisgICAgICogICAgICAgICAgICBub3Qgb2YgdGhlIGNsYXNzIFN0cmluZy4KKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBpbnQgY29tcGFyZShPYmplY3Qgc291cmNlLCBPYmplY3QgdGFyZ2V0KQorICAgIHsKKyAgICAgICAgaWYgKCEoc291cmNlIGluc3RhbmNlb2YgU3RyaW5nKSB8fCAhKHRhcmdldCBpbnN0YW5jZW9mIFN0cmluZykpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkFyZ3VtZW50cyBoYXZlIHRvIGJlIG9mIHR5cGUgU3RyaW5nIik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGNvbXBhcmUoKFN0cmluZylzb3VyY2UsIChTdHJpbmcpdGFyZ2V0KTsKKyAgICB9CisgICAgCisgICAgLy8gcHVibGljIG90aGVyIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogQ29udmVuaWVuY2UgbWV0aG9kIGZvciBjb21wYXJpbmcgdGhlIGVxdWFsaXR5IG9mIHR3byB0ZXh0IFN0cmluZ3MgdXNpbmcKKyAgICAgKiB0aGlzIENvbGxhdG9yJ3MgcnVsZXMsIHN0cmVuZ3RoIGFuZCBkZWNvbXBvc2l0aW9uIG1vZGUuCisgICAgICogQHBhcmFtIHNvdXJjZSB0aGUgc291cmNlIHN0cmluZyB0byBiZSBjb21wYXJlZC4KKyAgICAgKiBAcGFyYW0gdGFyZ2V0IHRoZSB0YXJnZXQgc3RyaW5nIHRvIGJlIGNvbXBhcmVkLgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5ncyBhcmUgZXF1YWwgYWNjb3JkaW5nIHRvIHRoZSBjb2xsYXRpb24KKyAgICAgKiAgICAgICAgIHJ1bGVzLCBvdGhlcndpc2UgZmFsc2UuCisgICAgICogQHNlZSAjY29tcGFyZQorICAgICAqIEBleGNlcHRpb24gTnVsbFBvaW50ZXJFeGNlcHRpb24gdGhyb3duIGlmIGVpdGhlciBhcmd1bWVudHMgaXMgbnVsbC4KKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhTdHJpbmcgc291cmNlLCBTdHJpbmcgdGFyZ2V0KSAKKyAgICB7CisgICAgICAgIHJldHVybiAoY29tcGFyZShzb3VyY2UsIHRhcmdldCkgPT0gMCk7CisgICAgfQorCisJICAvKioKKwkgICAqIEdldCBhbiBVbmljb2RlU2V0IHRoYXQgY29udGFpbnMgYWxsIHRoZSBjaGFyYWN0ZXJzIGFuZCBzZXF1ZW5jZXMgCisJICAgKiB0YWlsb3JlZCBpbiB0aGlzIGNvbGxhdG9yLgorCSAgICogQHJldHVybiBhIHBvaW50ZXIgdG8gYSBVbmljb2RlU2V0IG9iamVjdCBjb250YWluaW5nIGFsbCB0aGUgCisJICAgKiAgICAgICAgIGNvZGUgcG9pbnRzIGFuZCBzZXF1ZW5jZXMgdGhhdCBtYXkgc29ydCBkaWZmZXJlbnRseSB0aGFuCisJICAgKiAgICAgICAgIGluIHRoZSBVQ0EuIAorCSAgICogQGRyYWZ0IElDVSAyLjQKKwkgICAqLworICAJcHVibGljIFVuaWNvZGVTZXQgZ2V0VGFpbG9yZWRTZXQoKQorICAJeworICAJCXJldHVybiBuZXcgVW5pY29kZVNldCgwLCAweDEwRkZGRik7CisgIAl9CisKKyAgICAvKioKKyAgICAgKiBDb21wYXJlcyB0aGUgZXF1YWxpdHkgb2YgdHdvIENvbGxhdG9ycy4KKyAgICAgKiBAcGFyYW0gdGhhdCB0aGUgQ29sbGF0b3IgdG8gYmUgY29tcGFyZWQgd2l0aCB0aGlzLgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGlzIENvbGxhdG9yIGlzIHRoZSBzYW1lIGFzIHRoYXQgQ29sbGF0b3I7CisgICAgICogICAgICAgICBmYWxzZSBvdGhlcndpc2UuCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IHRoYXQpOworICAgIAorICAgIC8vIHB1YmxpYyBhYnN0cmFjdCBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBHZW5lcmF0ZXMgYSB1bmlxdWUgaGFzaCBjb2RlIGZvciB0aGlzIENvbGxhdG9yLgorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICogQHJldHVybiAzMiBiaXQgdW5pcXVlIGhhc2ggY29kZQorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBpbnQgaGFzaENvZGUoKTsKKworICAgIC8qKgorICAgICAqIDxwPgorICAgICAqIENvbXBhcmVzIHRoZSBzb3VyY2UgdGV4dCBTdHJpbmcgdG8gdGhlIHRhcmdldCB0ZXh0IFN0cmluZyBhY2NvcmRpbmcgdG8gCisgICAgICogdGhpcyBDb2xsYXRvcidzIHJ1bGVzLCBzdHJlbmd0aCBhbmQgZGVjb21wb3NpdGlvbiBtb2RlLgorICAgICAqIFJldHVybnMgYW4gaW50ZWdlciBsZXNzIHRoYW4sIAorICAgICAqIGVxdWFsIHRvIG9yIGdyZWF0ZXIgdGhhbiB6ZXJvIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBzb3VyY2UgU3RyaW5nIGlzIAorICAgICAqIGxlc3MgdGhhbiwgZXF1YWwgdG8gb3IgZ3JlYXRlciB0aGFuIHRoZSB0YXJnZXQgU3RyaW5nLiBTZWUgdGhlIENvbGxhdG9yCisgICAgICogY2xhc3MgZGVzY3JpcHRpb24gZm9yIGFuIGV4YW1wbGUgb2YgdXNlLgorICAgICAqIDwvcD4KKyAgICAgKiBAcGFyYW0gc291cmNlIHRoZSBzb3VyY2UgU3RyaW5nLgorICAgICAqIEBwYXJhbSB0YXJnZXQgdGhlIHRhcmdldCBTdHJpbmcuCisgICAgICogQHJldHVybiBSZXR1cm5zIGFuIGludGVnZXIgdmFsdWUuIFZhbHVlIGlzIGxlc3MgdGhhbiB6ZXJvIGlmIHNvdXJjZSBpcyAKKyAgICAgKiAgICAgICAgIGxlc3MgdGhhbiB0YXJnZXQsIHZhbHVlIGlzIHplcm8gaWYgc291cmNlIGFuZCB0YXJnZXQgYXJlIGVxdWFsLCAKKyAgICAgKiAgICAgICAgIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiB6ZXJvIGlmIHNvdXJjZSBpcyBncmVhdGVyIHRoYW4gdGFyZ2V0LgorICAgICAqIEBzZWUgQ29sbGF0aW9uS2V5CisgICAgICogQHNlZSAjZ2V0Q29sbGF0aW9uS2V5CisgICAgICogQGV4Y2VwdGlvbiBOdWxsUG9pbnRlckV4Y2VwdGlvbiB0aHJvd24gaWYgZWl0aGVyIGFyZ3VtZW50cyBpcyBudWxsLgorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IGludCBjb21wYXJlKFN0cmluZyBzb3VyY2UsIFN0cmluZyB0YXJnZXQpOworCisgICAgLyoqCisgICAgICogPHA+CisgICAgICogVHJhbnNmb3JtcyB0aGUgU3RyaW5nIGludG8gYSBDb2xsYXRpb25LZXkgc3VpdGFibGUgZm9yIGVmZmljaWVudAorICAgICAqIHJlcGVhdGVkIGNvbXBhcmlzb24uICBUaGUgcmVzdWx0aW5nIGtleSBkZXBlbmRzIG9uIHRoZSBjb2xsYXRvcidzCisgICAgICogcnVsZXMsIHN0cmVuZ3RoIGFuZCBkZWNvbXBvc2l0aW9uIG1vZGUuCisgICAgICogPC9wPiAKKyAgICAgKiA8cD5TZWUgdGhlIENvbGxhdGlvbktleSBjbGFzcyBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLjwvcD4KKyAgICAgKiBAcGFyYW0gc291cmNlIHRoZSBzdHJpbmcgdG8gYmUgdHJhbnNmb3JtZWQgaW50byBhIENvbGxhdGlvbktleS4KKyAgICAgKiBAcmV0dXJuIHRoZSBDb2xsYXRpb25LZXkgZm9yIHRoZSBnaXZlbiBTdHJpbmcgYmFzZWQgb24gdGhpcyBDb2xsYXRvcidzIAorICAgICAqICAgICAgICAgY29sbGF0aW9uIHJ1bGVzLiBJZiB0aGUgc291cmNlIFN0cmluZyBpcyBudWxsLCBhIG51bGwgCisgICAgICogICAgICAgICBDb2xsYXRpb25LZXkgaXMgcmV0dXJuZWQuCisgICAgICogQHNlZSBDb2xsYXRpb25LZXkKKyAgICAgKiBAc2VlICNjb21wYXJlKFN0cmluZywgU3RyaW5nKQorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IENvbGxhdGlvbktleSBnZXRDb2xsYXRpb25LZXkoU3RyaW5nIHNvdXJjZSk7CisgICAgCisgICAgLy8gcHJvdGVjdGVkIGNvbnN0cnVjdG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgCisgICAgLyoqCisgICAgICogRW1wdHkgZGVmYXVsdCBjb25zdHJ1Y3RvciB0byBtYWtlIGphdmFkb2NzIGhhcHB5CisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgQ29sbGF0b3IoKQorICAgIHsKKyAgICB9CisgICAgCisgICAgLy8gcHJpdmF0ZSBkYXRhIG1lbWJlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvKioKKyAgICAgKiBDb2xsYXRpb24gc3RyZW5ndGgKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBtX3N0cmVuZ3RoXyA9IFRFUlRJQVJZOworCisgICAgLyoqCisgICAgICogRGVjb21wb3NpdGlvbiBtb2RlCisgICAgICovIAorICAgIHByaXZhdGUgaW50IG1fZGVjb21wb3NpdGlvbl8gPSBDQU5PTklDQUxfREVDT01QT1NJVElPTjsKK30KKwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3RleHQvQ29sbGF0b3JSZWFkZXIuamF2YSBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L0NvbGxhdG9yUmVhZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTRlNWQyMQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L0NvbGxhdG9yUmVhZGVyLmphdmEKQEAgLTAsMCArMSw0NzkgQEAKKy8qKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvdGV4dC9Db2xsYXRvclJlYWRlci5qYXZhLHYgJCAKKyogJERhdGU6IDIwMDIvMTEvMjAgMTk6MTQ6MDkgJCAKKyogJFJldmlzaW9uOiAxLjEwICQKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCitwYWNrYWdlIGNvbS5pYm0uaWN1LnRleHQ7CisKK2ltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uRGF0YUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5JQ1VCaW5hcnk7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5JbnRUcmllOworCisvKioKKyogPHA+SW50ZXJuYWwgcmVhZGVyIGNsYXNzIGZvciBJQ1UgZGF0YSBmaWxlIHVjYS5pY3UgY29udGFpbmluZyAKKyogVW5pY29kZSBDb2xsYXRpb24gQWxnb3JpdGhtIGRhdGEuPC9wPiAKKyogPHA+VGhpcyBjbGFzcyBzaW1wbHkgcmVhZHMgdWNhLmljdSwgYXV0aGVudGljYXRlcyB0aGF0IGl0IGlzIGEgdmFsaWQKKyogSUNVIGRhdGEgZmlsZSBhbmQgc3BsaXQgaXRzIGNvbnRlbnRzIHVwIGludG8gYmxvY2tzIG9mIGRhdGEgZm9yIHVzZSBpbgorKiA8YSBocmVmPUNvbGxhdG9yLmh0bWw+Y29tLmlibS5pY3UudGV4dC5Db2xsYXRvcjwvYT4uCisqIDwvcD4gCisqIDxwPnVjYS5pY3Ugd2hpY2ggaXMgaW4gYmlnLWVuZGlhbiBmb3JtYXQgaXMgamFyZWQgdG9nZXRoZXIgd2l0aCB0aGlzIAorKiBwYWNrYWdlLjwvcD4KKyogQGF1dGhvciBTeW4gV2VlIFF1ZWsKKyogQHNpbmNlIHJlbGVhc2UgMi4yLCBBcHJpbCAxOCAyMDAyCisqIEBkcmFmdCAyLjIKKyovCisKK2ZpbmFsIGNsYXNzIENvbGxhdG9yUmVhZGVyCit7ICAgICAgICAgIAorICAgIC8vIHByb3RlY3RlZCBjb25zdHJ1Y3RvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvKioKKyAgICAqIDxwPlByb3RlY3RlZCBjb25zdHJ1Y3Rvci48L3A+CisgICAgKiBAcGFyYW0gaW5wdXRTdHJlYW0gSUNVIGNhbGxhdG9yIGZpbGUgaW5wdXQgc3RyZWFtCisgICAgKiBAZXhjZXB0aW9uIElPRXhjZXB0aW9uIHRocm93IGlmIGRhdGEgZmlsZSBmYWlscyBhdXRoZW50aWNhdGlvbiAKKyAgICAqIEBkcmFmdCAyLjEKKyAgICAqLworICAgIHByb3RlY3RlZCBDb2xsYXRvclJlYWRlcihJbnB1dFN0cmVhbSBpbnB1dFN0cmVhbSkgdGhyb3dzIElPRXhjZXB0aW9uCisgICAgeworICAgICAgICBJQ1VCaW5hcnkucmVhZEhlYWRlcihpbnB1dFN0cmVhbSwgREFUQV9GT1JNQVRfSURfLCBVQ0FfQVVUSEVOVElDQVRFXyk7CisgICAgICAgIG1fZGF0YUlucHV0U3RyZWFtXyA9IG5ldyBEYXRhSW5wdXRTdHJlYW0oaW5wdXRTdHJlYW0pOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAqIDxwPlByb3RlY3RlZCBjb25zdHJ1Y3Rvci48L3A+CisgICAgKiBAcGFyYW0gaW5wdXRTdHJlYW0gSUNVIHVwcm9wcy5pY3UgZmlsZSBpbnB1dCBzdHJlYW0KKyAgICAqIEBwYXJhbSByZWFkSUNVSGVhZGVyIGZsYWcgdG8gaW5kaWNhdGUgaWYgdGhlIElDVSBoZWFkZXIgaGFzIHRvIGJlIHJlYWQKKyAgICAqIEBleGNlcHRpb24gSU9FeGNlcHRpb24gdGhyb3cgaWYgZGF0YSBmaWxlIGZhaWxzIGF1dGhlbnRpY2F0aW9uIAorICAgICogQGRyYWZ0IDIuMQorICAgICovCisgICAgcHJvdGVjdGVkIENvbGxhdG9yUmVhZGVyKElucHV0U3RyZWFtIGlucHV0U3RyZWFtLCBib29sZWFuIHJlYWRJQ1VIZWFkZXIpIAorICAgIAkJCQkJCQkJCQkJCQkJdGhyb3dzIElPRXhjZXB0aW9uCisgICAgeworICAgIAlpZiAocmVhZElDVUhlYWRlcikgeworICAgICAgICAJSUNVQmluYXJ5LnJlYWRIZWFkZXIoaW5wdXRTdHJlYW0sIERBVEFfRk9STUFUX0lEXywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ0FfQVVUSEVOVElDQVRFXyk7CisgICAgCX0KKyAgICAgICAgbV9kYXRhSW5wdXRTdHJlYW1fID0gbmV3IERhdGFJbnB1dFN0cmVhbShpbnB1dFN0cmVhbSk7CisgICAgfQorICAKKyAgICAvLyBwcm90ZWN0ZWQgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAKKyAgICAvKioKKyAgICAqIFJlYWQgYW5kIGJyZWFrIHVwIHRoZSBoZWFkZXIgc3RyZWFtIG9mIGRhdGEgcGFzc2VkIGluIGFzIGFyZ3VtZW50cyBpbnRvIAorICAgICogbWVhbmluZ2Z1bCBDb2xsYXRvciBkYXRhLgorICAgICogQHBhcmFtIHJiYyBSdWxlQmFzZWRDb2xsYXRvciB0byBwb3B1bGF0ZSB3aXRoIGhlYWRlciBpbmZvcm1hdGlvbgorICAgICogQGV4Y2VwdGlvbiBJT0V4Y2VwdGlvbiB0aHJvd24gd2hlbiB0aGVyZSdzIGEgZGF0YSBlcnJvci4KKyAgICAqLworICAgIHByb3RlY3RlZCB2b2lkIHJlYWRIZWFkZXIoUnVsZUJhc2VkQ29sbGF0b3IgcmJjKSB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICB7CisgICAgCWludCBzaXplID0gbV9kYXRhSW5wdXRTdHJlYW1fLnJlYWRJbnQoKTsKKyAgICAJLy8gYWxsIHRoZSBvZmZzZXRzIGFyZSBpbiBieXRlcworICAgICAgCS8vIHRvIGdldCB0aGUgYWRkcmVzcyBhZGQgdG8gdGhlIGhlYWRlciBhZGRyZXNzIGFuZCBjYXN0IHByb3Blcmx5IAorICAgICAgCS8vIERlZmF1bHQgb3B0aW9ucyBpbnQgb3B0aW9ucworICAgICAgICBtX2RhdGFJbnB1dFN0cmVhbV8uc2tpcCg0KTsgLy8gb3B0aW9ucworICAgICAgICAvLyBzdHJ1Y3R1cmUgd2hpY2ggaG9sZHMgdmFsdWVzIGZvciBpbmRpcmVjdCBwb3NpdGlvbmluZyBhbmQgaW1wbGljaXQgCisgICAgICAgIC8vIHJhbmdlcworICAgICAgCWludCBVQ0FDb25zdCA9IG1fZGF0YUlucHV0U3RyZWFtXy5yZWFkSW50KCk7IAorICAgICAgICAvLyB0aGlzIG9uZSBpcyBuZWVkZWQgb25seSBmb3IgVUNBLCB0byBjb3B5IHRoZSBhcHByb3ByaWF0ZSAKKyAgICAgICAgLy8gY29udHJhY3Rpb25zCisgICAgICAgIG1fZGF0YUlucHV0U3RyZWFtXy5za2lwKDQpOworICAgICAgCS8vIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlCisgICAgICAJbV9kYXRhSW5wdXRTdHJlYW1fLnNraXBCeXRlcyg0KTsKKyAgICAgIAkvLyBjb25zdCB1aW50OF90ICptYXBwaW5nUG9zaXRpb247IAorICAgICAgCWludCBtYXBwaW5nID0gbV9kYXRhSW5wdXRTdHJlYW1fLnJlYWRJbnQoKTsgCisgICAgICAJLy8gdWludDMyX3QgKmV4cGFuc2lvbjsgCisgICAgICAJcmJjLm1fZXhwYW5zaW9uT2Zmc2V0XyA9IG1fZGF0YUlucHV0U3RyZWFtXy5yZWFkSW50KCk7IAorICAgICAgCS8vIFVDaGFyICpjb250cmFjdGlvbkluZGV4OyAgICAgCisgICAgICAJcmJjLm1fY29udHJhY3Rpb25PZmZzZXRfID0gbV9kYXRhSW5wdXRTdHJlYW1fLnJlYWRJbnQoKTsgCisgICAgICAJLy8gdWludDMyX3QgKmNvbnRyYWN0aW9uQ0VzOworICAgICAgCWludCBjb250cmFjdGlvbkNFID0gbV9kYXRhSW5wdXRTdHJlYW1fLnJlYWRJbnQoKTsgICAKKyAgICAgIAkvLyBuZWVkZWQgZm9yIHZhcmlvdXMgY2xvc3VyZXMgaW50IGNvbnRyYWN0aW9uU2l6ZSAKKyAgICAgIAlpbnQgY29udHJhY3Rpb25TaXplID0gbV9kYXRhSW5wdXRTdHJlYW1fLnJlYWRJbnQoKTsgIAorICAgICAgCS8vIGFycmF5IG9mIGxhc3QgY29sbGF0aW9uIGVsZW1lbnQgaW4gZXhwYW5zaW9uCisgICAgICAJaW50IGV4cGFuc2lvbkVuZENFID0gbV9kYXRhSW5wdXRTdHJlYW1fLnJlYWRJbnQoKTsgIAorICAgICAgCS8vIGFycmF5IG9mIG1heGltdW0gZXhwYW5zaW9uIHNpemUgY29ycmVzcG9uZGluZyB0byB0aGUgZXhwYW5zaW9uCisgICAgICAgIC8vIGNvbGxhdGlvbiBlbGVtZW50cyB3aXRoIGxhc3QgZWxlbWVudCBpbiBleHBhbnNpb25FbmRDRQorICAgICAgCWludCBleHBhbnNpb25FbmRDRU1heFNpemUgPSBtX2RhdGFJbnB1dFN0cmVhbV8ucmVhZEludCgpOyAgICAgCisgICAgICAJLy8gc2l6ZSBvZiBlbmRFeHBhbnNpb25DRSBpbnQgZXhwYW5zaW9uRW5kQ0VTaXplCisgICAgICAJbV9kYXRhSW5wdXRTdHJlYW1fLnNraXBCeXRlcyg0KTsgCisgICAgICAJLy8gaGFzaCB0YWJsZSBvZiB1bnNhZmUgY29kZSBwb2ludHMgCisgICAgICAJaW50IHVuc2FmZSA9IG1fZGF0YUlucHV0U3RyZWFtXy5yZWFkSW50KCk7ICAgICAgICAgICAgCisgICAgICAJLy8gaGFzaCB0YWJsZSBvZiBmaW5hbCBjb2RlIHBvaW50cyBpbiBjb250cmFjdGlvbnMuCisgICAgICAJaW50IGNvbnRyYWN0aW9uRW5kID0gbV9kYXRhSW5wdXRTdHJlYW1fLnJlYWRJbnQoKTsKKyAgICAgIAkvLyBpbnQgQ0Vjb3VudCA9IG1fZGF0YUlucHV0U3RyZWFtXy5yZWFkSW50KCk7CisgICAgICAJbV9kYXRhSW5wdXRTdHJlYW1fLnNraXBCeXRlcyg0KTsKKyAgICAgIAkvLyBpcyBqYW1vU3BlY2lhbAorICAgICAgCXJiYy5tX2lzSmFtb1NwZWNpYWxfID0gbV9kYXRhSW5wdXRTdHJlYW1fLnJlYWRCb29sZWFuKCk7IAorICAgICAgICAvLyBwYWRkaW5nCisgICAgICAJbV9kYXRhSW5wdXRTdHJlYW1fLnNraXBCeXRlcygzKTsKKyAgICAgIAkvLyBieXRlIHZlcnNpb25bXSA9IG5ldyBieXRlWzRdOworICAgICAgCW1fZGF0YUlucHV0U3RyZWFtXy5za2lwQnl0ZXMoNCk7CisgICAgICAJLy8gYnl0ZSBjaGFyc2V0TmFtZVtdID0gbmV3IGJ5dGVbMzJdOyAvLyBmb3IgY2hhcnNldCBDRXMKKyAgICAgIAltX2RhdGFJbnB1dFN0cmVhbV8uc2tpcEJ5dGVzKDMyKTsKKyAgICAgIAltX2RhdGFJbnB1dFN0cmVhbV8uc2tpcEJ5dGVzKDY0KTsgLy8gZm9yIGZ1dHVyZSB1c2UgCisgICAgICAJaWYgKHJiYy5tX2NvbnRyYWN0aW9uT2Zmc2V0XyA9PSAwKSB7IC8vIGNvbnRyYWN0aW9uIGNhbiBiZSBudWxsCisgICAgICAJCXJiYy5tX2NvbnRyYWN0aW9uT2Zmc2V0XyA9IG1hcHBpbmc7CisgICAgICAJCWNvbnRyYWN0aW9uQ0UgPSBtYXBwaW5nOworICAgICAgCX0KKyAgICAgIAltX2V4cGFuc2lvblNpemVfID0gcmJjLm1fY29udHJhY3Rpb25PZmZzZXRfIC0gcmJjLm1fZXhwYW5zaW9uT2Zmc2V0XzsKKyAgICAgIAltX2NvbnRyYWN0aW9uSW5kZXhTaXplXyA9IGNvbnRyYWN0aW9uQ0UgLSByYmMubV9jb250cmFjdGlvbk9mZnNldF87CisgICAgICAJbV9jb250cmFjdGlvbkNFU2l6ZV8gPSBtYXBwaW5nIC0gY29udHJhY3Rpb25DRTsKKyAgICAgIAltX3RyaWVTaXplXyA9IGV4cGFuc2lvbkVuZENFIC0gbWFwcGluZzsKKyAgICAgIAltX2V4cGFuc2lvbkVuZENFU2l6ZV8gPSBleHBhbnNpb25FbmRDRU1heFNpemUgLSBleHBhbnNpb25FbmRDRTsKKyAgICAgIAltX2V4cGFuc2lvbkVuZENFTWF4U2l6ZVNpemVfID0gdW5zYWZlIC0gZXhwYW5zaW9uRW5kQ0VNYXhTaXplOworICAgICAgCW1fdW5zYWZlU2l6ZV8gPSBjb250cmFjdGlvbkVuZCAtIHVuc2FmZTsKKyAgICAgICAgbV9VQ0FWYWx1ZXNTaXplXyA9IHNpemUgLSBVQ0FDb25zdDsgLy8gVUNBIHZhbHVlLCB3aWxsIGJlIGhhbmRsZWQgbGF0ZXIKKyAgICAgICAgLy8gdHJlYXQgaXQgYXMgbm9ybWFsIGNvbGxhdG9yIGZpcnN0CisgICAgICAgIC8vIGZvciBub3JtYWwgY29sbGF0b3IgdGhlcmUgaXMgbm8gVUNBIGNvbnRyYWN0aW9uCisgICAgICAgIG1fY29udHJhY3Rpb25FbmRTaXplXyA9IHNpemUgLSBjb250cmFjdGlvbkVuZDsgICAgCisgICAgICAgIAorICAgICAgCXJiYy5tX2NvbnRyYWN0aW9uT2Zmc2V0XyA+Pj0gMTsgLy8gY2FzdGluZyB0byBpbnRzCisgICAgICAJcmJjLm1fZXhwYW5zaW9uT2Zmc2V0XyA+Pj0gMjsgLy8gY2FzdGluZyB0byBjaGFycworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZWFkIGFuZCBicmVhayB1cCB0aGUgY29sbGF0aW9uIG9wdGlvbnMgcGFzc2VkIGluIHRoZSBzdHJlYW0gb2YgZGF0YQorICAgICAqIGFuZCB1cGRhdGUgdGhlIGFyZ3VtZW50IENvbGxhdG9yIHdpdGggdGhlIHJlc3VsdHMKKyAgICAgKiBAcGFyYW0gcmJjIFJ1bGVCYXNlZENvbGxhdG9yIHRvIHBvcHVsYXRlCisgICAgICogQGV4Y2VwdGlvbiBJT0V4Y2VwdGlvbiB0aHJvd24gd2hlbiB0aGVyZSdzIGEgZGF0YSBlcnJvci4KKyAgICAgKiBAZHJhZnQgMi4yCisgICAgICovCisgICAgcHJvdGVjdGVkIHZvaWQgcmVhZE9wdGlvbnMoUnVsZUJhc2VkQ29sbGF0b3IgcmJjKSB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICB7CisgICAgCXJiYy5tX2RlZmF1bHRWYXJpYWJsZVRvcFZhbHVlXyA9IG1fZGF0YUlucHV0U3RyZWFtXy5yZWFkSW50KCk7CisgICAgCXJiYy5tX2RlZmF1bHRJc0ZyZW5jaENvbGxhdGlvbl8gPSAobV9kYXRhSW5wdXRTdHJlYW1fLnJlYWRJbnQoKQorICAgIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09IFJ1bGVCYXNlZENvbGxhdG9yLkF0dHJpYnV0ZVZhbHVlLk9OXyk7CisgICAgICAgIHJiYy5tX2RlZmF1bHRJc0FsdGVybmF0ZUhhbmRsaW5nU2hpZnRlZF8gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKG1fZGF0YUlucHV0U3RyZWFtXy5yZWFkSW50KCkgPT0gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdWxlQmFzZWRDb2xsYXRvci5BdHRyaWJ1dGVWYWx1ZS5TSElGVEVEXyk7CisgICAgICAgIHJiYy5tX2RlZmF1bHRDYXNlRmlyc3RfID0gbV9kYXRhSW5wdXRTdHJlYW1fLnJlYWRJbnQoKTsKKyAgICAgICAgcmJjLm1fZGVmYXVsdElzQ2FzZUxldmVsXyA9IChtX2RhdGFJbnB1dFN0cmVhbV8ucmVhZEludCgpIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09IFJ1bGVCYXNlZENvbGxhdG9yLkF0dHJpYnV0ZVZhbHVlLk9OXyk7CisgICAgICAgIGludCB2YWx1ZSA9IG1fZGF0YUlucHV0U3RyZWFtXy5yZWFkSW50KCk7CisgICAgCWlmICh2YWx1ZSA9PSBSdWxlQmFzZWRDb2xsYXRvci5BdHRyaWJ1dGVWYWx1ZS5PTl8pIHsKKyAgICAJCXZhbHVlID0gQ29sbGF0b3IuQ0FOT05JQ0FMX0RFQ09NUE9TSVRJT047CisgICAgCX0KKyAgICAJZWxzZSB7CisgICAgCQl2YWx1ZSA9IENvbGxhdG9yLk5PX0RFQ09NUE9TSVRJT047CisgICAgCX0KKyAgICAJcmJjLm1fZGVmYXVsdERlY29tcG9zaXRpb25fID0gdmFsdWU7CisgICAgCXJiYy5tX2RlZmF1bHRTdHJlbmd0aF8gPSBtX2RhdGFJbnB1dFN0cmVhbV8ucmVhZEludCgpOworICAgIAlyYmMubV9kZWZhdWx0SXNIaXJhZ2FuYTRfID0gKG1fZGF0YUlucHV0U3RyZWFtXy5yZWFkSW50KCkgCisgICAgCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT0gUnVsZUJhc2VkQ29sbGF0b3IuQXR0cmlidXRlVmFsdWUuT05fKTsKKyAgICAgICAgbV9kYXRhSW5wdXRTdHJlYW1fLnNraXAoNjQpOyAvLyByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAqIFJlYWQgYW5kIGJyZWFrIHVwIHRoZSBzdHJlYW0gb2YgZGF0YSBwYXNzZWQgaW4gYXMgYXJndW1lbnRzIGludG8gCisgICAgKiBtZWFuaW5nZnVsIENvbGxhdG9yIGRhdGEuCisgICAgKiBAcGFyYW0gcmJjIFJ1bGVCYXNlZENvbGxhdG9yIHRvIHBvcHVsYXRlCisgICAgKiBAcGFyYW0gVUNBQ29uc3Qgb2JqZWN0IHRvIGZpbGwgdXAgd2l0aCBVQ0EgY29uc3RhbnRzIGlmIHdlIGFyZSByZWFkaW5nIAorICAgICogICAgICAgICAgICAgICAgIHRoZSBVQ0EgY29sbGF0b3IsIGlmIG5vdCB1c2UgYSBudWxsCisgICAgKiBAcmV0dXJuIFVDQUNvbnRyYWN0aW9ucyBhcnJheSBmaWxsZWQgdXAgd2l0aCB0aGUgVUNBIGNvbnRyYWN0aW9ucyBpZiB3ZQorICAgICogICAgICAgICAgICAgICAgICAgICAgICBhcmUgcmVhZGluZyB0aGUgVUNBIGNvbGxhdG9yCisgICAgKiBAZXhjZXB0aW9uIElPRXhjZXB0aW9uIHRocm93biB3aGVuIHRoZXJlJ3MgYSBkYXRhIGVycm9yLgorICAgICogQGRyYWZ0IDIuMgorICAgICovCisgICAgcHJvdGVjdGVkIGNoYXJbXSByZWFkKFJ1bGVCYXNlZENvbGxhdG9yIHJiYywgCisgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yLlVDQUNvbnN0YW50cyBVQ0FDb25zdCkgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICB7CisgICAgCXJlYWRIZWFkZXIocmJjKTsKKyAgICAJcmVhZE9wdGlvbnMocmJjKTsKKyAgICAJbV9leHBhbnNpb25TaXplXyA+Pj0gMjsKKyAgICAJcmJjLm1fZXhwYW5zaW9uXyA9IG5ldyBpbnRbbV9leHBhbnNpb25TaXplX107CisgICAgCWZvciAoaW50IGkgPSAwOyBpIDwgbV9leHBhbnNpb25TaXplXzsgaSArKykgeworICAgIAkJcmJjLm1fZXhwYW5zaW9uX1tpXSA9IG1fZGF0YUlucHV0U3RyZWFtXy5yZWFkSW50KCk7CisgICAgCX0KKyAgICAgICAgaWYgKG1fY29udHJhY3Rpb25JbmRleFNpemVfID4gMCkgeyAKKyAgICAgICAgCW1fY29udHJhY3Rpb25JbmRleFNpemVfID4+PSAxOworICAgICAgICAJcmJjLm1fY29udHJhY3Rpb25JbmRleF8gPSBuZXcgY2hhclttX2NvbnRyYWN0aW9uSW5kZXhTaXplX107CisgICAgICAgIAlmb3IgKGludCBpID0gMDsgaSA8IG1fY29udHJhY3Rpb25JbmRleFNpemVfOyBpICsrKSB7CisgICAgICAgIAkJcmJjLm1fY29udHJhY3Rpb25JbmRleF9baV0gPSBtX2RhdGFJbnB1dFN0cmVhbV8ucmVhZENoYXIoKTsKKyAgICAgICAgCX0KKyAgICAgICAgCW1fY29udHJhY3Rpb25DRVNpemVfID4+PSAyOworICAgICAgICAJcmJjLm1fY29udHJhY3Rpb25DRV8gPSBuZXcgaW50W21fY29udHJhY3Rpb25DRVNpemVfXTsKKyAgICAgICAgCWZvciAoaW50IGkgPSAwOyBpIDwgbV9jb250cmFjdGlvbkNFU2l6ZV87IGkgKyspIHsKKyAgICAgICAgCQlyYmMubV9jb250cmFjdGlvbkNFX1tpXSA9IG1fZGF0YUlucHV0U3RyZWFtXy5yZWFkSW50KCk7CisgICAgICAgIAl9CisgICAgICAgIH0KKyAgICAJcmJjLm1fdHJpZV8gPSBuZXcgSW50VHJpZShtX2RhdGFJbnB1dFN0cmVhbV8sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgCSAgUnVsZUJhc2VkQ29sbGF0b3IuRGF0YU1hbmlwdWxhdGUuZ2V0SW5zdGFuY2UoKSk7CisgICAgCWlmICghcmJjLm1fdHJpZV8uaXNMYXRpbjFMaW5lYXIoKSkgeworICAgIAkJdGhyb3cgbmV3IElPRXhjZXB0aW9uKCJEYXRhIGNvcnJ1cHRlZCwgIiAKKyAgICAJCSAgICAgICAgICAgICAgICAgICAgICArICJDb2xsYXRvciBUcmllcyBleHBlY3RlZCB0byBoYXZlIGxpbmVhciAiCisgICAgCQkgICAgICAgICAgICAgICAgICAgICAgKyAibGF0aW4gb25lIGRhdGEgYXJyYXlzIik7CisgICAgCX0KKyAgICAJbV9leHBhbnNpb25FbmRDRVNpemVfID4+PSAyOworICAgIAlyYmMubV9leHBhbnNpb25FbmRDRV8gPSBuZXcgaW50W21fZXhwYW5zaW9uRW5kQ0VTaXplX107CisgICAgCWZvciAoaW50IGkgPSAwOyBpIDwgbV9leHBhbnNpb25FbmRDRVNpemVfOyBpICsrKSB7CisgICAgCQlyYmMubV9leHBhbnNpb25FbmRDRV9baV0gPSBtX2RhdGFJbnB1dFN0cmVhbV8ucmVhZEludCgpOworICAgIAl9CisgICAgCXJiYy5tX2V4cGFuc2lvbkVuZENFTWF4U2l6ZV8gPSBuZXcgYnl0ZVttX2V4cGFuc2lvbkVuZENFTWF4U2l6ZVNpemVfXTsKKyAgICAJZm9yIChpbnQgaSA9IDA7IGkgPCBtX2V4cGFuc2lvbkVuZENFTWF4U2l6ZVNpemVfOyBpICsrKSB7CisgICAgCQlyYmMubV9leHBhbnNpb25FbmRDRU1heFNpemVfW2ldID0gbV9kYXRhSW5wdXRTdHJlYW1fLnJlYWRCeXRlKCk7CisgICAgCX0KKyAgICAJcmJjLm1fdW5zYWZlXyA9IG5ldyBieXRlW21fdW5zYWZlU2l6ZV9dOworICAgIAlmb3IgKGludCBpID0gMDsgaSA8IG1fdW5zYWZlU2l6ZV87IGkgKyspIHsKKyAgICAJCXJiYy5tX3Vuc2FmZV9baV0gPSBtX2RhdGFJbnB1dFN0cmVhbV8ucmVhZEJ5dGUoKTsKKyAgICAJfQorICAgICAgICBpZiAoVUNBQ29uc3QgIT0gbnVsbCkgeworICAgICAgICAgICAgLy8gd2UgYXJlIHJlYWRpbmcgdGhlIFVDQQorICAgICAgICAgICAgLy8gdW5mb3J0dW5hdGVseSB0aGUgVUNBIG9mZnNldCBpbiBhbnkgY29sbGF0b3IgZGF0YSBpcyBub3QgMCBhbmQKKyAgICAgICAgICAgIC8vIG9ubHkgcmVmZXJzIHRvIHRoZSBVQ0EgZGF0YQorICAgICAgICAgICAgbV9jb250cmFjdGlvbkVuZFNpemVfIC09IG1fVUNBVmFsdWVzU2l6ZV87ICAgICAgIAorICAgICAgICB9CisgICAgCXJiYy5tX2NvbnRyYWN0aW9uRW5kXyA9IG5ldyBieXRlW21fY29udHJhY3Rpb25FbmRTaXplX107CisgICAgCWZvciAoaW50IGkgPSAwOyBpIDwgbV9jb250cmFjdGlvbkVuZFNpemVfOyBpICsrKSB7CisgICAgCQlyYmMubV9jb250cmFjdGlvbkVuZF9baV0gPSBtX2RhdGFJbnB1dFN0cmVhbV8ucmVhZEJ5dGUoKTsKKyAgICAJfQorICAgICAgICBpZiAoVUNBQ29uc3QgIT0gbnVsbCkgeworICAgICAgICAgICAgVUNBQ29uc3QuRklSU1RfVEVSVElBUllfSUdOT1JBQkxFX1swXSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBtX2RhdGFJbnB1dFN0cmVhbV8ucmVhZEludCgpOworICAgICAgICAgICAgbV9VQ0FWYWx1ZXNTaXplXyAtPSA0OworICAgICAgICAgICAgVUNBQ29uc3QuRklSU1RfVEVSVElBUllfSUdOT1JBQkxFX1sxXSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBtX2RhdGFJbnB1dFN0cmVhbV8ucmVhZEludCgpOworICAgICAgICAgICAgbV9VQ0FWYWx1ZXNTaXplXyAtPSA0OworICAgICAgICAgICAgVUNBQ29uc3QuTEFTVF9URVJUSUFSWV9JR05PUkFCTEVfWzBdIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG1fZGF0YUlucHV0U3RyZWFtXy5yZWFkSW50KCk7CisgICAgICAgICAgICBtX1VDQVZhbHVlc1NpemVfIC09IDQ7CisgICAgICAgICAgICBVQ0FDb25zdC5MQVNUX1RFUlRJQVJZX0lHTk9SQUJMRV9bMV0gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbV9kYXRhSW5wdXRTdHJlYW1fLnJlYWRJbnQoKTsKKyAgICAgICAgICAgIG1fVUNBVmFsdWVzU2l6ZV8gLT0gNDsKKyAgICAgICAgICAgIFVDQUNvbnN0LkZJUlNUX1BSSU1BUllfSUdOT1JBQkxFX1swXSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBtX2RhdGFJbnB1dFN0cmVhbV8ucmVhZEludCgpOworICAgICAgICAgICAgbV9VQ0FWYWx1ZXNTaXplXyAtPSA0OworICAgICAgICAgICAgVUNBQ29uc3QuRklSU1RfUFJJTUFSWV9JR05PUkFCTEVfWzFdIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG1fZGF0YUlucHV0U3RyZWFtXy5yZWFkSW50KCk7CisgICAgICAgICAgICBtX1VDQVZhbHVlc1NpemVfIC09IDQ7CisgICAgICAgICAgICBVQ0FDb25zdC5GSVJTVF9TRUNPTkRBUllfSUdOT1JBQkxFX1swXSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBtX2RhdGFJbnB1dFN0cmVhbV8ucmVhZEludCgpOworICAgICAgICAgICAgbV9VQ0FWYWx1ZXNTaXplXyAtPSA0OworICAgICAgICAgICAgVUNBQ29uc3QuRklSU1RfU0VDT05EQVJZX0lHTk9SQUJMRV9bMV0gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbV9kYXRhSW5wdXRTdHJlYW1fLnJlYWRJbnQoKTsKKyAgICAgICAgICAgIG1fVUNBVmFsdWVzU2l6ZV8gLT0gNDsKKyAgICAgICAgICAgIFVDQUNvbnN0LkxBU1RfU0VDT05EQVJZX0lHTk9SQUJMRV9bMF0gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbV9kYXRhSW5wdXRTdHJlYW1fLnJlYWRJbnQoKTsKKyAgICAgICAgICAgIG1fVUNBVmFsdWVzU2l6ZV8gLT0gNDsKKyAgICAgICAgICAgIFVDQUNvbnN0LkxBU1RfU0VDT05EQVJZX0lHTk9SQUJMRV9bMV0gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbV9kYXRhSW5wdXRTdHJlYW1fLnJlYWRJbnQoKTsKKyAgICAgICAgICAgIG1fVUNBVmFsdWVzU2l6ZV8gLT0gNDsKKyAgICAgICAgICAgIFVDQUNvbnN0LkxBU1RfUFJJTUFSWV9JR05PUkFCTEVfWzBdIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG1fZGF0YUlucHV0U3RyZWFtXy5yZWFkSW50KCk7CisgICAgICAgICAgICBtX1VDQVZhbHVlc1NpemVfIC09IDQ7CisgICAgICAgICAgICBVQ0FDb25zdC5MQVNUX1BSSU1BUllfSUdOT1JBQkxFX1sxXSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBtX2RhdGFJbnB1dFN0cmVhbV8ucmVhZEludCgpOworICAgICAgICAgICAgbV9VQ0FWYWx1ZXNTaXplXyAtPSA0OworICAgICAgICAgICAgVUNBQ29uc3QuRklSU1RfVkFSSUFCTEVfWzBdID0gbV9kYXRhSW5wdXRTdHJlYW1fLnJlYWRJbnQoKTsgICAgIAorICAgICAgICAgICAgbV9VQ0FWYWx1ZXNTaXplXyAtPSA0OworICAgICAgICAgICAgVUNBQ29uc3QuRklSU1RfVkFSSUFCTEVfWzFdID0gbV9kYXRhSW5wdXRTdHJlYW1fLnJlYWRJbnQoKTsKKyAgICAgICAgICAgIG1fVUNBVmFsdWVzU2l6ZV8gLT0gNDsKKyAgICAgICAgICAgIFVDQUNvbnN0LkxBU1RfVkFSSUFCTEVfWzBdID0gbV9kYXRhSW5wdXRTdHJlYW1fLnJlYWRJbnQoKTsgCisgICAgICAgICAgICBtX1VDQVZhbHVlc1NpemVfIC09IDQ7CisgICAgICAgICAgICBVQ0FDb25zdC5MQVNUX1ZBUklBQkxFX1sxXSA9IG1fZGF0YUlucHV0U3RyZWFtXy5yZWFkSW50KCk7ICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBtX1VDQVZhbHVlc1NpemVfIC09IDQ7CisgICAgICAgICAgICBVQ0FDb25zdC5GSVJTVF9OT05fVkFSSUFCTEVfWzBdID0gbV9kYXRhSW5wdXRTdHJlYW1fLnJlYWRJbnQoKTsgIAorICAgICAgICAgICAgbV9VQ0FWYWx1ZXNTaXplXyAtPSA0OworICAgICAgICAgICAgVUNBQ29uc3QuRklSU1RfTk9OX1ZBUklBQkxFX1sxXSA9IG1fZGF0YUlucHV0U3RyZWFtXy5yZWFkSW50KCk7ICAKKyAgICAgICAgICAgIG1fVUNBVmFsdWVzU2l6ZV8gLT0gNDsKKyAgICAgICAgICAgIFVDQUNvbnN0LkxBU1RfTk9OX1ZBUklBQkxFX1swXSA9IG1fZGF0YUlucHV0U3RyZWFtXy5yZWFkSW50KCk7ICAKKyAgICAgICAgICAgIG1fVUNBVmFsdWVzU2l6ZV8gLT0gNDsKKyAgICAgICAgICAgIFVDQUNvbnN0LkxBU1RfTk9OX1ZBUklBQkxFX1sxXSA9IG1fZGF0YUlucHV0U3RyZWFtXy5yZWFkSW50KCk7ICAKKyAgICAgICAgICAgIG1fVUNBVmFsdWVzU2l6ZV8gLT0gNDsKKyAgICAgICAgICAgIFVDQUNvbnN0LlJFU0VUX1RPUF9WQUxVRV9bMF0gPSBtX2RhdGFJbnB1dFN0cmVhbV8ucmVhZEludCgpOyAgCisgICAgICAgICAgICBtX1VDQVZhbHVlc1NpemVfIC09IDQ7CisgICAgICAgICAgICBVQ0FDb25zdC5SRVNFVF9UT1BfVkFMVUVfWzFdID0gbV9kYXRhSW5wdXRTdHJlYW1fLnJlYWRJbnQoKTsgIAorICAgICAgICAgICAgbV9VQ0FWYWx1ZXNTaXplXyAtPSA0OworICAgICAgICAgICAgVUNBQ29uc3QuRklSU1RfSU1QTElDSVRfWzBdID0gbV9kYXRhSW5wdXRTdHJlYW1fLnJlYWRJbnQoKTsgIAorICAgICAgICAgICAgbV9VQ0FWYWx1ZXNTaXplXyAtPSA0OworICAgICAgICAgICAgVUNBQ29uc3QuRklSU1RfSU1QTElDSVRfWzFdID0gbV9kYXRhSW5wdXRTdHJlYW1fLnJlYWRJbnQoKTsgIAorICAgICAgICAgICAgbV9VQ0FWYWx1ZXNTaXplXyAtPSA0OworICAgICAgICAgICAgVUNBQ29uc3QuTEFTVF9JTVBMSUNJVF9bMF0gPSBtX2RhdGFJbnB1dFN0cmVhbV8ucmVhZEludCgpOyAgCisgICAgICAgICAgICBtX1VDQVZhbHVlc1NpemVfIC09IDQ7CisgICAgICAgICAgICBVQ0FDb25zdC5MQVNUX0lNUExJQ0lUX1sxXSA9IG1fZGF0YUlucHV0U3RyZWFtXy5yZWFkSW50KCk7ICAKKyAgICAgICAgICAgIG1fVUNBVmFsdWVzU2l6ZV8gLT0gNDsKKyAgICAgICAgICAgIFVDQUNvbnN0LkZJUlNUX1RSQUlMSU5HX1swXSA9IG1fZGF0YUlucHV0U3RyZWFtXy5yZWFkSW50KCk7ICAKKyAgICAgICAgICAgIG1fVUNBVmFsdWVzU2l6ZV8gLT0gNDsKKyAgICAgICAgICAgIFVDQUNvbnN0LkZJUlNUX1RSQUlMSU5HX1sxXSA9IG1fZGF0YUlucHV0U3RyZWFtXy5yZWFkSW50KCk7ICAKKyAgICAgICAgICAgIG1fVUNBVmFsdWVzU2l6ZV8gLT0gNDsKKyAgICAgICAgICAgIFVDQUNvbnN0LkxBU1RfVFJBSUxJTkdfWzBdID0gbV9kYXRhSW5wdXRTdHJlYW1fLnJlYWRJbnQoKTsgIAorICAgICAgICAgICAgbV9VQ0FWYWx1ZXNTaXplXyAtPSA0OworICAgICAgICAgICAgVUNBQ29uc3QuTEFTVF9UUkFJTElOR19bMV0gPSBtX2RhdGFJbnB1dFN0cmVhbV8ucmVhZEludCgpOyAgIAorICAgICAgICAgICAgbV9VQ0FWYWx1ZXNTaXplXyAtPSA0OyAKKyAgICAgICAgICAgIFVDQUNvbnN0LlBSSU1BUllfVE9QX01JTl8gPSBtX2RhdGFJbnB1dFN0cmVhbV8ucmVhZEludCgpOyAgCisgICAgICAgICAgICBtX1VDQVZhbHVlc1NpemVfIC09IDQ7CisgICAgICAgICAgICBVQ0FDb25zdC5QUklNQVJZX0lNUExJQ0lUX01JTl8gPSBtX2RhdGFJbnB1dFN0cmVhbV8ucmVhZEludCgpOyAgIAorICAgICAgICAgICAgbV9VQ0FWYWx1ZXNTaXplXyAtPSA0OworICAgICAgICAgICAgVUNBQ29uc3QuUFJJTUFSWV9JTVBMSUNJVF9NQVhfID0gbV9kYXRhSW5wdXRTdHJlYW1fLnJlYWRJbnQoKTsgICAKKyAgICAgICAgICAgIG1fVUNBVmFsdWVzU2l6ZV8gLT0gNDsKKyAgICAgICAgICAgIFVDQUNvbnN0LlBSSU1BUllfVFJBSUxJTkdfTUlOXyA9IG1fZGF0YUlucHV0U3RyZWFtXy5yZWFkSW50KCk7ICAgCisgICAgICAgICAgICBtX1VDQVZhbHVlc1NpemVfIC09IDQ7CisgICAgICAgICAgICBVQ0FDb25zdC5QUklNQVJZX1RSQUlMSU5HX01BWF8gPSBtX2RhdGFJbnB1dFN0cmVhbV8ucmVhZEludCgpOyAgIAorICAgICAgICAgICAgbV9VQ0FWYWx1ZXNTaXplXyAtPSA0OworICAgICAgICAgICAgVUNBQ29uc3QuUFJJTUFSWV9TUEVDSUFMX01JTl8gPSBtX2RhdGFJbnB1dFN0cmVhbV8ucmVhZEludCgpOyAgIAorICAgICAgICAgICAgbV9VQ0FWYWx1ZXNTaXplXyAtPSA0OworICAgICAgICAgICAgVUNBQ29uc3QuUFJJTUFSWV9TUEVDSUFMX01BWF8gPSBtX2RhdGFJbnB1dFN0cmVhbV8ucmVhZEludCgpOyAgIAorICAgICAgICAgICAgbV9VQ0FWYWx1ZXNTaXplXyAtPSA0OworICAgICAgICAgICAgbV9VQ0FWYWx1ZXNTaXplXyA+Pj0gMTsKKyAgICAgICAgICAgIGNoYXIgcmVzdWx0W10gPSBuZXcgY2hhclttX1VDQVZhbHVlc1NpemVfXTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9VQ0FWYWx1ZXNTaXplXzsgaSArKykgeworICAgICAgICAgICAgICAgIHJlc3VsdFtpXSA9IG1fZGF0YUlucHV0U3RyZWFtXy5yZWFkQ2hhcigpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmVhZHMgaW4gdGhlIGludmVyc2UgdWNhIGRhdGEKKyAgICAgKiBAcGFyYW0gaW5wdXQgaW5wdXQgc3RyZWFtIHdpdGggdGhlIGludmVyc2UgdWNhIGRhdGEKKyAgICAgKiBAcmV0dXJuIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBpbnZlcnNlIHVjYSBkYXRhCisgICAgICogQGV4Y2VwdGlvbiBJT0V4Y2VwdGlvbiB0aHJvd24gd2hlbiBlcnJvciBvY2N1cnMgd2hpbGUgcmVhZGluZyB0aGUgCisgICAgICogICAgICAgICAgICBpbnZlcnNlIHVjYQorICAgICAqLworICAgIHByb3RlY3RlZCBzdGF0aWMgQ29sbGF0aW9uUGFyc2VkUnVsZUJ1aWxkZXIuSW52ZXJzZVVDQSByZWFkSW52ZXJzZVVDQSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElucHV0U3RyZWFtIGlucHV0U3RyZWFtKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uCisgICAgeworICAgICAgICAgSUNVQmluYXJ5LnJlYWRIZWFkZXIoaW5wdXRTdHJlYW0sIElOVkVSU0VfVUNBX0RBVEFfRk9STUFUX0lEXywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTlZFUlNFX1VDQV9BVVRIRU5USUNBVEVfKTsKKyAgICAgICAgQ29sbGF0aW9uUGFyc2VkUnVsZUJ1aWxkZXIuSW52ZXJzZVVDQSByZXN1bHQgPSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgQ29sbGF0aW9uUGFyc2VkUnVsZUJ1aWxkZXIuSW52ZXJzZVVDQSgpOworICAgICAgICBEYXRhSW5wdXRTdHJlYW0gaW5wdXQgPSBuZXcgRGF0YUlucHV0U3RyZWFtKGlucHV0U3RyZWFtKTsgICAgICAgIAorICAgICAgICBpbnB1dC5yZWFkSW50KCk7IC8vIGJ5dGVzaXplCisgICAgICAgIGludCB0YWJsZXNpemUgPSBpbnB1dC5yZWFkSW50KCk7IC8vIGluIGludCBzaXplCisgICAgICAgIGludCBjb250c2l6ZSA9IGlucHV0LnJlYWRJbnQoKTsgIC8vIGluIGNoYXIgc2l6ZQorICAgICAgICBpbnB1dC5yZWFkSW50KCk7IC8vIHRhYmxlIGluIGJ5dGVzCisgICAgICAgIGlucHV0LnJlYWRJbnQoKTsgLy8gY29udHMgaW4gYnl0ZXMKKyAgICAgICAgaW50IHNpemUgPSB0YWJsZXNpemUgKiAzOyAvLyBvbmUgY29sdW1uIGZvciBlYWNoIHN0cmVuZ3RoCisgICAgICAgIHJlc3VsdC5tX3RhYmxlXyA9IG5ldyBpbnRbc2l6ZV07CisgICAgICAgIHJlc3VsdC5tX2NvbnRpbnVhdGlvbnNfID0gbmV3IGNoYXJbY29udHNpemVdOworICAgICAgICAKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpICsrKSB7CisgICAgICAgICAgICByZXN1bHQubV90YWJsZV9baV0gPSBpbnB1dC5yZWFkSW50KCk7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb250c2l6ZTsgaSArKykgeworICAgICAgICAgICAgcmVzdWx0Lm1fY29udGludWF0aW9uc19baV0gPSBpbnB1dC5yZWFkQ2hhcigpOworICAgICAgICB9CisgICAgICAgIGlucHV0LmNsb3NlKCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIC8vIHByaXZhdGUgaW5uZXIgY2xhc3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvLyBwcml2YXRlIHZhcmlhYmxlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgICogQXV0aGVudGljYXRlIHVjYSBkYXRhIGZvcm1hdCB2ZXJzaW9uCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgSUNVQmluYXJ5LkF1dGhlbnRpY2F0ZSBVQ0FfQVVUSEVOVElDQVRFXyAKKyAgICAgICAgICAgICAgICA9IG5ldyBJQ1VCaW5hcnkuQXV0aGVudGljYXRlKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIGJvb2xlYW4gaXNEYXRhVmVyc2lvbkFjY2VwdGFibGUoYnl0ZSB2ZXJzaW9uW10pCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZlcnNpb25bMF0gPT0gREFUQV9GT1JNQVRfVkVSU0lPTl9bMF0gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHZlcnNpb25bMV0gPj0gREFUQV9GT1JNQVRfVkVSU0lPTl9bMV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRvbyBoYXJzaCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8mJiB2ZXJzaW9uWzFdID09IERBVEFfRk9STUFUX1ZFUlNJT05fWzFdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vJiYgdmVyc2lvblsyXSA9PSBEQVRBX0ZPUk1BVF9WRVJTSU9OX1syXSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8mJiB2ZXJzaW9uWzNdID09IERBVEFfRk9STUFUX1ZFUlNJT05fWzNdOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgCisgICAgLyoqCisgICAgICogQXV0aGVudGljYXRlIHVjYSBkYXRhIGZvcm1hdCB2ZXJzaW9uCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgSUNVQmluYXJ5LkF1dGhlbnRpY2F0ZSBJTlZFUlNFX1VDQV9BVVRIRU5USUNBVEVfIAorICAgICAgICAgICAgICAgID0gbmV3IElDVUJpbmFyeS5BdXRoZW50aWNhdGUoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgYm9vbGVhbiBpc0RhdGFWZXJzaW9uQWNjZXB0YWJsZShieXRlIHZlcnNpb25bXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmVyc2lvblswXSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09IElOVkVSU0VfVUNBX0RBVEFfRk9STUFUX1ZFUlNJT05fWzBdIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiB2ZXJzaW9uWzFdIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPj0gSU5WRVJTRV9VQ0FfREFUQV9GT1JNQVRfVkVSU0lPTl9bMV07CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfTsKKyAgCisgICAgLyoqCisgICAgKiBEYXRhIGlucHV0IHN0cmVhbSBmb3IgdWNhLmljdSAKKyAgICAqLworICAgIHByaXZhdGUgRGF0YUlucHV0U3RyZWFtIG1fZGF0YUlucHV0U3RyZWFtXzsKKyAgIAorICAgIC8qKgorICAgICogRmlsZSBmb3JtYXQgdmVyc2lvbiBhbmQgaWQgdGhhdCB0aGlzIGNsYXNzIHVuZGVyc3RhbmRzLgorICAgICogTm8gZ3VhcmFudGVlcyBhcmUgbWFkZSBpZiBhIG9sZGVyIHZlcnNpb24gaXMgdXNlZAorICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYnl0ZSBEQVRBX0ZPUk1BVF9WRVJTSU9OX1tdID0gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoYnl0ZSkweDIsIChieXRlKTB4MSwgKGJ5dGUpMHgwLCAoYnl0ZSkweDB9OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJ5dGUgREFUQV9GT1JNQVRfSURfW10gPSB7KGJ5dGUpMHg1NSwgKGJ5dGUpMHg0MywgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChieXRlKTB4NmYsIChieXRlKTB4NmN9OworICAgIC8qKgorICAgICogSW52ZXJzZSBVQ0EgZmlsZSBmb3JtYXQgdmVyc2lvbiBhbmQgaWQgdGhhdCB0aGlzIGNsYXNzIHVuZGVyc3RhbmRzLgorICAgICogTm8gZ3VhcmFudGVlcyBhcmUgbWFkZSBpZiBhIG9sZGVyIHZlcnNpb24gaXMgdXNlZAorICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYnl0ZSBJTlZFUlNFX1VDQV9EQVRBX0ZPUk1BVF9WRVJTSU9OX1tdID0gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoYnl0ZSkweDIsIChieXRlKTB4MCwgKGJ5dGUpMHgwLCAoYnl0ZSkweDB9OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJ5dGUgSU5WRVJTRV9VQ0FfREFUQV9GT1JNQVRfSURfW10gPSB7KGJ5dGUpMHg0OSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnl0ZSkweDZlLCAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnl0ZSkweDc2LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChieXRlKTB4NDN9OworICAgIC8qKgorICAgICogQ29ycnVwdGVkIGVycm9yIHN0cmluZworICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIENPUlJVUFRFRF9EQVRBX0VSUk9SXyA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEYXRhIGNvcnJ1cHRlZCBpbiBDb2xsYXRpb24gZGF0YSBmaWxlIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgLyoqCisgICAgICogU2l6ZSBvZiBleHBhbnNpb24gdGFibGUgaW4gYnl0ZXMKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBtX2V4cGFuc2lvblNpemVfOworICAgIC8qKgorICAgICAqIFNpemUgb2YgY29udHJhY3Rpb24gaW5kZXggdGFibGUgaW4gYnl0ZXMKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBtX2NvbnRyYWN0aW9uSW5kZXhTaXplXzsKKyAgICAvKioKKyAgICAgKiBTaXplIG9mIGNvbnRyYWN0aW9uIHRhYmxlIGluIGJ5dGVzCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgbV9jb250cmFjdGlvbkNFU2l6ZV87CisgICAgLyoqCisgICAgICogU2l6ZSBvZiB0aGUgVHJpZSBpbiBieXRlcworICAgICAqLworICAgIHByaXZhdGUgaW50IG1fdHJpZVNpemVfOworICAgIC8qKgorICAgICAqIFNpemUgb2YgdGhlIHRhYmxlIHRoYXQgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgY29sbGF0aW9uIGVsZW1lbnRzCisgICAgICogdGhhdCBlbmQgd2l0aCBhbiBleHBhbnNpb24gCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgbV9leHBhbnNpb25FbmRDRVNpemVfOworICAgIC8qKgorICAgICAqIFNpemUgb2YgdGhlIHRhYmxlIHRoYXQgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG1heGltdW0gc2l6ZSBvZiAKKyAgICAgKiBjb2xsYXRpb24gZWxlbWVudHMgdGhhdCBlbmQgd2l0aCBhIHBhcnRpY3VsYXIgZXhwYW5zaW9uIENFIGNvcnJlc3BvbmRpbmcKKyAgICAgKiB0byB0aGUgb25lcyBpbiBleHBhbnNpb25FbmRDRQorICAgICAqLworICAgIHByaXZhdGUgaW50IG1fZXhwYW5zaW9uRW5kQ0VNYXhTaXplU2l6ZV87CisgICAgLyoqCisgICAgICogU2l6ZSBvZiB0aGUgdGFibGUgdGhhdCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgIlVuc2FmZSIgCisgICAgICogY29kZXBvaW50cworICAgICAqLworICAgIHByaXZhdGUgaW50IG1fdW5zYWZlU2l6ZV87CisgICAgLyoqCisgICAgICogU2l6ZSBvZiB0aGUgdGFibGUgdGhhdCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCBjb2RlcG9pbnRzIHRoYXQgZW5kcworICAgICAqIHdpdGggYSBjb250cmFjdGlvbgorICAgICAqLworICAgIHByaXZhdGUgaW50IG1fY29udHJhY3Rpb25FbmRTaXplXzsKKyAgICAvKioKKyAgICAgKiBTaXplIG9mIHRoZSB0YWJsZSB0aGF0IGNvbnRhaW5zIFVDQSBjb250cmFjdGlvbiBpbmZvcm1hdGlvbgorICAgICAqLworICAgIHByaXZhdGUgaW50IG1fVUNBVmFsdWVzU2l6ZV87CisgICAgICAKKyAgICAvLyBwcml2YXRlIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAKK30KKwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3RleHQvQ29tcG9zZWRDaGFySXRlci5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvQ29tcG9zZWRDaGFySXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjRhMThkN2YKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdGV4dC9Db21wb3NlZENoYXJJdGVyLmphdmEKQEAgLTAsMCArMSwxNzEgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS90ZXh0L0NvbXBvc2VkQ2hhckl0ZXIuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8xMi8xMSAyMzozNjo1OCAkIAorICogJFJldmlzaW9uOiAxLjYgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LnRleHQ7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5Ob3JtYWxpemVySW1wbDsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLlV0aWxpdHk7CisKKy8qKgorICogPHR0PkNvbXBvc2VkQ2hhckl0ZXI8L3R0PiBpcyBhbiBpdGVyYXRvciBjbGFzcyB0aGF0IHJldHVybnMgYWxsCisgKiBvZiB0aGUgcHJlY29tcG9zZWQgY2hhcmFjdGVycyBkZWZpbmVkIGluIHRoZSBVbmljb2RlIHN0YW5kYXJkLCBhbG9uZworICogd2l0aCB0aGVpciBkZWNvbXBvc2VkIGZvcm1zLiAgVGhpcyBpcyBvZnRlbiB1c2VmdWwgd2hlbiBidWlsZGluZworICogZGF0YSB0YWJsZXMgKDxpPmUuZy48L2k+IGNvbGxhdGlvbiB0YWJsZXMpIHdoaWNoIG5lZWQgdG8gdHJlYXQgY29tcG9zZWQKKyAqIGFuZCBkZWNvbXBvc2VkIGNoYXJhY3RlcnMgZXF1aXZhbGVudGx5LgorICogPHA+CisgKiBGb3IgZXhhbXBsZSwgaW1hZ2luZSB0aGF0IHlvdSBoYXZlIGJ1aWx0IGEgY29sbGF0aW9uIHRhYmxlIHdpdGggb3JkZXJpbmcKKyAqIHJ1bGVzIGZvciB0aGUge0BsaW5rIE5vcm1hbGl6ZXIjREVDT01QIGNhbm9uaWNhbGx5IGRlY29tcG9zZWR9IGZvcm1zIG9mIGFsbAorICogY2hhcmFjdGVycyB1c2VkIGluIGEgcGFydGljdWxhciBsYW5ndWFnZS4gIFdoZW4geW91IHByb2Nlc3MgaW5wdXQgdGV4dCB1c2luZworICogdGhpcyB0YWJsZSwgdGhlIHRleHQgbXVzdCBmaXJzdCBiZSBkZWNvbXBvc2VkIHNvIHRoYXQgaXQgbWF0Y2hlcyB0aGUgZm9ybQorICogdXNlZCBpbiB0aGUgdGFibGUuICBUaGlzIGNhbiBpbXBvc2UgYSBwZXJmb3JtYW5jZSBwZW5hbHR5IHRoYXQgbWF5IGJlCisgKiB1bmFjY2VwdGFibGUgaW4gc29tZSBzaXR1YXRpb25zLgorICogPHA+CisgKiBZb3UgY2FuIGF2b2lkIHRoaXMgcHJvYmxlbSBieSBlbnN1cmluZyB0aGF0IHRoZSBjb2xsYXRpb24gdGFibGUgY29udGFpbnMKKyAqIHJ1bGVzIGZvciBib3RoIHRoZSBkZWNvbXBvc2VkIDxpPmFuZDwvaT4gY29tcG9zZWQgdmVyc2lvbnMgb2YgZWFjaCBjaGFyYWN0ZXIuCisgKiBUbyBkbyBzbywgdXNlIGEgPHR0PkNvbXBvc2VkQ2hhckl0ZXI8L3R0PiB0byBpdGVyYXRlIHRocm91Z2ggYWxsIG9mIHRoZQorICogY29tcG9zZWQgY2hhcmFjdGVycyBpbiBVbmljb2RlLiAgSWYgdGhlIGRlY29tcG9zaXRpb24gZm9yIHRoYXQgY2hhcmFjdGVyCisgKiBjb25zaXN0cyBzb2xlbHkgb2YgY2hhcmFjdGVycyB0aGF0IGFyZSBsaXN0ZWQgaW4geW91ciBydWxlc2V0LCB5b3UgY2FuCisgKiBhZGQgYSBuZXcgcnVsZSBmb3IgdGhlIGNvbXBvc2VkIGNoYXJhY3RlciB0aGF0IG1ha2VzIGl0IGVxdWl2YWxlbnQgdG8KKyAqIGl0cyBkZWNvbXBvc2l0aW9uIHNlcXVlbmNlLgorICogPHA+CisgKiBOb3RlIHRoYXQgPHR0PkNvbXBvc2VkQ2hhckl0ZXI8L3R0PiBpdGVyYXRlcyBvdmVyIGEgPGVtPnN0YXRpYzwvZW0+IHRhYmxlCisgKiBvZiB0aGUgY29tcG9zZWQgY2hhcmFjdGVycyBpbiBVbmljb2RlLiAgSWYgeW91IHdhbnQgdG8gaXRlcmF0ZSBvdmVyIHRoZQorICogY29tcG9zZWQgY2hhcmFjdGVycyBpbiBhIHBhcnRpY3VsYXIgc3RyaW5nLCB1c2Uge0BsaW5rIE5vcm1hbGl6ZXJ9IGluc3RlYWQuCisgKiA8cD4KKyAqIFdoZW4gY29uc3RydWN0aW5nIGEgPHR0PkNvbXBvc2VkQ2hhckl0ZXI8L3R0PiB0aGVyZSBpcyBvbmUKKyAqIG9wdGlvbmFsIGZlYXR1cmUgdGhhdCB5b3UgY2FuIGVuYWJsZSBvciBkaXNhYmxlOgorICogPHVsPgorICogICA8bGk+e0BsaW5rIE5vcm1hbGl6ZXIjSUdOT1JFX0hBTkdVTH0gLSBEbyBub3QgaXRlcmF0ZSBvdmVyIHRoZSBIYW5ndWwKKyAqICAgICAgICAgIGNoYXJhY3RlcnMgYW5kIHRoZWlyIGNvcnJlc3BvbmRpbmcgSmFtbyBkZWNvbXBvc2l0aW9ucy4KKyAqICAgICAgICAgIFRoaXMgb3B0aW9uIGlzIG9mZiBieSBkZWZhdWx0ICg8aT5pLmUuPC9pPiBIYW5ndWwgcHJvY2Vzc2luZyBpcyBlbmFibGVkKQorICogICAgICAgICAgc2luY2UgdGhlIFVuaWNvZGUgc3RhbmRhcmQgc3BlY2lmaWVzIHRoYXQgSGFuZ3VsIHRvIEphbW8gCisgKiAgICAgICAgICBpcyBhIGNhbm9uaWNhbCBkZWNvbXBvc2l0aW9uLgorICogPC91bD4KKyAqIDxwPgorICogPHR0PkNvbXBvc2VkQ2hhckl0ZXI8L3R0PiBpcyBjdXJyZW50bHkgYmFzZWQgb24gdmVyc2lvbiAyLjEuOCBvZiB0aGUKKyAqIDxhIGhyZWY9Imh0dHA6Ly93d3cudW5pY29kZS5vcmciIHRhcmdldD0idW5pY29kZSI+VW5pY29kZSBTdGFuZGFyZDwvYT4uCisgKiBJdCB3aWxsIGJlIHVwZGF0ZWQgYXMgbGF0ZXIgdmVyc2lvbnMgb2YgVW5pY29kZSBhcmUgcmVsZWFzZWQuCisgKiBAZGVwcmVjYXRlZCBJQ1UgMi4yCisgKi8KKy8vL0NMT1ZFUjpPRkYKK3B1YmxpYyBmaW5hbCBjbGFzcyBDb21wb3NlZENoYXJJdGVyIHsKKyAgICAKKyAgICAvKioKKyAgICAgKiBDb25zdGFudCB0aGF0IGluZGljYXRlcyB0aGUgaXRlcmF0aW9uIGhhcyBjb21wbGV0ZWQuCisgICAgICoge0BsaW5rICNuZXh0fSByZXR1cm5zIHRoaXMgdmFsdWUgd2hlbiB0aGVyZSBhcmUgbm8gbW9yZSBjb21wb3NlZCBjaGFyYWN0ZXJzCisgICAgICogb3ZlciB3aGljaCB0byBpdGVyYXRlLgorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsICBjaGFyIERPTkUgPSAoY2hhcikgTm9ybWFsaXplci5ET05FOworICAgIAorICAgIC8qKgorICAgICAqIENvbnN0cnVjdCBhIG5ldyA8dHQ+Q29tcG9zZWRDaGFySXRlcjwvdHQ+LiAgVGhlIGl0ZXJhdG9yIHdpbGwgcmV0dXJuCisgICAgICogYWxsIFVuaWNvZGUgY2hhcmFjdGVycyB3aXRoIGNhbm9uaWNhbCBkZWNvbXBvc2l0aW9ucywgaW5jbHVkaW5nIEtvcmVhbgorICAgICAqIEhhbmd1bCBjaGFyYWN0ZXJzLgorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgQ29tcG9zZWRDaGFySXRlcigpIHsKKyAgICAgICAgY29tcGF0ID0gZmFsc2U7CisgICAgICAgIG9wdGlvbnMgPTA7CisgICAgfQorICAgIAorICAgIAorICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSBub24tZGVmYXVsdCA8dHQ+Q29tcG9zZWRDaGFySXRlcjwvdHQ+IHdpdGggb3B0aW9uYWwgYmVoYXZpb3IuCisgICAgICogPHA+CisgICAgICogQHBhcmFtIGNvbXBhdCAgICA8dHQ+ZmFsc2U8L3R0PiBmb3IgY2Fub25pY2FsIGRlY29tcG9zaXRpb25zIG9ubHk7CisgICAgICogICAgICAgICAgICAgICAgICA8dHQ+dHJ1ZTwvdHQ+IGZvciBib3RoIGNhbm9uaWNhbCBhbmQgY29tcGF0aWJpbGl0eQorICAgICAqICAgICAgICAgICAgICAgICAgZGVjb21wb3NpdGlvbnMuCisgICAgICoKKyAgICAgKiBAcGFyYW0gb3B0aW9ucyAgIE9wdGlvbmFsIGRlY29tcG9zaXRpb24gZmVhdHVyZXMuICBDdXJyZW50bHksIHRoZSBvbmx5CisgICAgICogICAgICAgICAgICAgICAgICBzdXBwb3J0ZWQgb3B0aW9uIGlzIHtAbGluayBOb3JtYWxpemVyI0lHTk9SRV9IQU5HVUx9LCB3aGljaAorICAgICAqICAgICAgICAgICAgICAgICAgY2F1c2VzIHRoaXMgPHR0PkNvbXBvc2VkQ2hhckl0ZXI8L3R0PiBub3QgdG8gaXRlcmF0ZQorICAgICAqICAgICAgICAgICAgICAgICAgb3ZlciB0aGUgSGFuZ3VsIGNoYXJhY3RlcnMgYW5kIHRoZWlyIGNvcnJlc3BvbmRpbmcKKyAgICAgKiAgICAgICAgICAgICAgICAgIEphbW8gZGVjb21wb3NpdGlvbnMuCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBDb21wb3NlZENoYXJJdGVyKGJvb2xlYW4gY29tcGF0LCBpbnQgb3B0aW9ucykgeworICAgICAgICB0aGlzLmNvbXBhdCA9IGNvbXBhdDsKKyAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9uczsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZXJlIGFueSBwcmVjb21wb3NlZCBVbmljb2RlIGNoYXJhY3RlcnMgbm90IHlldCByZXR1cm5lZAorICAgICAqIGJ5IHtAbGluayAjbmV4dH0uCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGhhc05leHQoKSB7CisgICAgICAgIGlmIChuZXh0Q2hhciA9PSBOb3JtYWxpemVyLkRPTkUpICB7CisgICAgICAgICAgICBmaW5kTmV4dENoYXIoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbmV4dENoYXIgIT0gTm9ybWFsaXplci5ET05FOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBuZXh0IHByZWNvbXBvc2VkIFVuaWNvZGUgY2hhcmFjdGVyLgorICAgICAqIFJlcGVhdGVkIGNhbGxzIHRvIDx0dD5uZXh0PC90dD4gcmV0dXJuIGFsbCBvZiB0aGUgcHJlY29tcG9zZWQgY2hhcmFjdGVycyBkZWZpbmVkCisgICAgICogYnkgVW5pY29kZSwgaW4gYXNjZW5kaW5nIG9yZGVyLiAgQWZ0ZXIgYWxsIHByZWNvbXBvc2VkIGNoYXJhY3RlcnMgaGF2ZQorICAgICAqIGJlZW4gcmV0dXJuZWQsIHtAbGluayAjaGFzTmV4dH0gd2lsbCByZXR1cm4gPHR0PmZhbHNlPC90dD4gYW5kIGZ1cnRoZXIgY2FsbHMKKyAgICAgKiB0byA8dHQ+bmV4dDwvdHQ+IHdpbGwgcmV0dXJuIHtAbGluayAjRE9ORX0uCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBjaGFyIG5leHQoKSB7CisgICAgICAgIGlmIChuZXh0Q2hhciA9PSBOb3JtYWxpemVyLkRPTkUpICB7CisgICAgICAgICAgICBmaW5kTmV4dENoYXIoKTsKKyAgICAgICAgfQorICAgICAgICBjdXJDaGFyID0gbmV4dENoYXI7CisgICAgICAgIG5leHRDaGFyID0gTm9ybWFsaXplci5ET05FOworICAgICAgICByZXR1cm4gKGNoYXIpIGN1ckNoYXI7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIFVuaWNvZGUgZGVjb21wb3NpdGlvbiBvZiB0aGUgY3VycmVudCBjaGFyYWN0ZXIuCisgICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgZGVjb21wb3NpdGlvbiBvZiB0aGUgcHJlY29tcG9zZWQgY2hhcmFjdGVyIG1vc3QKKyAgICAgKiByZWNlbnRseSByZXR1cm5lZCBieSB7QGxpbmsgI25leHR9LiAgVGhlIHJlc3VsdGluZyBkZWNvbXBvc2l0aW9uIGlzCisgICAgICogYWZmZWN0ZWQgYnkgdGhlIHNldHRpbmdzIG9mIHRoZSBvcHRpb25zIHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3IuCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgZGVjb21wb3NpdGlvbigpIHsKKyAgICAgICAgLy8gdGhlIGRlY29tcG9zaXRpb24gYnVmZmVyIGNvbnRhaW5zIHRoZSBkZWNvbXBvc2l0aW9uIG9mIAorICAgICAgICAvLyBjdXJyZW50IGNoYXIgc28ganVzdCByZXR1cm4gaXQKKyAgICAgICAgcmV0dXJuIG5ldyBTdHJpbmcoZGVjb21wQnVmLDAsIGJ1Zkxlbik7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgdm9pZCBmaW5kTmV4dENoYXIoKSB7CisgICAgICAgIGludCBjPWN1ckNoYXIrMTsKKyAgICAgICAgZm9yKDs7KXsKKyAgICAgICAgICAgaWYoYyA8IDB4RkZGRil7CisJICAgICAgICAgICBidWZMZW4gPSBOb3JtYWxpemVySW1wbC5nZXREZWNvbXBvc2l0aW9uKGMsY29tcGF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvbXBCdWYsMCwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb21wQnVmLmxlbmd0aCk7CisJICAgICAgICAgICBpZihidWZMZW4+MCl7CisgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBjdXJDaGFyIGNhbiBiZSBkZWNvbXBvc2VkLi4uIHNvIGl0IGlzIGEgY29tcG9zZWQgY2hhcgorCSAgICAgICAgICAgICAgICAvLyBjYWNoZSB0aGUgcmVzdWx0ICAgICAKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICB9CisJICAgICAgICAgICBjKys7CisgICAgICAgICAgIH1lbHNleworCSAgICAgICAgICAgYz1Ob3JtYWxpemVyLkRPTkU7CisJICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIG5leHRDaGFyPWM7ICAKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBpbnQgb3B0aW9uczsKKyAgICBwcml2YXRlIGJvb2xlYW4gY29tcGF0OworICAgIHByaXZhdGUgY2hhcltdIGRlY29tcEJ1ZiA9IG5ldyBjaGFyWzEwMF07CisgICAgcHJpdmF0ZSBpbnQgYnVmTGVuPTA7CisgICAgcHJpdmF0ZSBpbnQgY3VyQ2hhciA9IDA7CisgICAgcHJpdmF0ZSBpbnQgbmV4dENoYXIgPSBOb3JtYWxpemVyLkRPTkU7CisgICAgCisKK307CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvdGV4dC9Db21wb3VuZFRyYW5zbGl0ZXJhdG9yLmphdmEgYi9zcmMvY29tL2libS9pY3UvdGV4dC9Db21wb3VuZFRyYW5zbGl0ZXJhdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYjEwYjYzNwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L0NvbXBvdW5kVHJhbnNsaXRlcmF0b3IuamF2YQpAQCAtMCwwICsxLDUyNyBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L3RleHQvQ29tcG91bmRUcmFuc2xpdGVyYXRvci5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzEyLzAzIDE4OjU3OjM2ICQgCisgKiAkUmV2aXNpb246IDEuMzEgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LnRleHQ7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5VdGlsaXR5OworaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOworCisvKioKKyAqIEEgdHJhbnNsaXRlcmF0b3IgdGhhdCBpcyBjb21wb3NlZCBvZiB0d28gb3IgbW9yZSBvdGhlcgorICogdHJhbnNsaXRlcmF0b3Igb2JqZWN0cyBsaW5rZWQgdG9nZXRoZXIuICBGb3IgZXhhbXBsZSwgaWYgb25lCisgKiB0cmFuc2xpdGVyYXRvciB0cmFuc2xpdGVyYXRlcyBmcm9tIHNjcmlwdCBBIHRvIHNjcmlwdCBCLCBhbmQKKyAqIGFub3RoZXIgdHJhbnNsaXRlcmF0ZXMgZnJvbSBzY3JpcHQgQiB0byBzY3JpcHQgQywgdGhlIHR3byBtYXkgYmUKKyAqIGNvbWJpbmVkIHRvIGZvcm0gYSBuZXcgdHJhbnNsaXRlcmF0b3IgZnJvbSBBIHRvIEMuCisgKgorICogPHA+Q29tcG9zZWQgdHJhbnNsaXRlcmF0b3JzIG1heSBub3QgYmVoYXZlIGFzIGV4cGVjdGVkLiAgRm9yCisgKiBleGFtcGxlLCBpbnZlcnNlcyBtYXkgbm90IGNvbWJpbmUgdG8gZm9ybSB0aGUgaWRlbnRpdHkKKyAqIHRyYW5zbGl0ZXJhdG9yLiAgU2VlIHRoZSBjbGFzcyBkb2N1bWVudGF0aW9uIGZvciB7QGxpbmsKKyAqIFRyYW5zbGl0ZXJhdG9yfSBmb3IgZGV0YWlscy4KKyAqCisgKiA8cD5Db3B5cmlnaHQgJmNvcHk7IElCTSBDb3Jwb3JhdGlvbiAxOTk5LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBAYXV0aG9yIEFsYW4gTGl1CisgKiBAZGVwcmVjYXRlZCBJQ1UgMi40IFRoaXMgY2xhc3MgdG8gYmVjb21lIHByaXZhdGUgYWZ0ZXIgMjAwMy0xMi0wMS4gVXNlIHRoZSBUcmFuc2xpdGVyYXRvciBmYWN0b3J5IG1ldGhvZHMuCisgKi8KK3B1YmxpYyBjbGFzcyBDb21wb3VuZFRyYW5zbGl0ZXJhdG9yIGV4dGVuZHMgVHJhbnNsaXRlcmF0b3IgeworCisgICAgcHJpdmF0ZSBUcmFuc2xpdGVyYXRvcltdIHRyYW5zOworCisgICAgLyoqCisgICAgICogRm9yIGNvbXBvdW5kIFJCVHMgKHRob3NlIHdpdGggYW4gOjppZCBibG9jayBiZWZvcmUgYW5kL29yIGFmdGVyCisgICAgICogdGhlIG1haW4gcnVsZSBibG9jaykgd2UgcmVjb3JkIHRoZSBpbmRleCBvZiB0aGUgUkJUIGhlcmUuCisgICAgICogT3RoZXJ3aXNlLCB0aGlzIHNob3VsZCBoYXZlIGEgdmFsdWUgb2YgLTEuICBXZSBuZWVkIHRoaXMKKyAgICAgKiBpbmZvcm1hdGlvbiB0byBpbXBsZW1lbnQgdG9SdWxlcygpLgorICAgICAqLworICAgIHByaXZhdGUgaW50IGNvbXBvdW5kUkJUSW5kZXg7ICAgIAorCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICJcdTAwQTkgSUJNIENvcnBvcmF0aW9uIDE5OTktMjAwMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4iOworCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIG5ldyBjb21wb3VuZCB0cmFuc2xpdGVyYXRvciBnaXZlbiBhbiBhcnJheSBvZgorICAgICAqIHRyYW5zbGl0ZXJhdG9ycy4gIFRoZSBhcnJheSBvZiB0cmFuc2xpdGVyYXRvcnMgbWF5IGJlIG9mIGFueQorICAgICAqIGxlbmd0aCwgaW5jbHVkaW5nIHplcm8gb3Igb25lLCBob3dldmVyLCB1c2VmdWwgY29tcG91bmQKKyAgICAgKiB0cmFuc2xpdGVyYXRvcnMgaGF2ZSBhdCBsZWFzdCB0d28gY29tcG9uZW50cy4KKyAgICAgKiBAcGFyYW0gdHJhbnNsaXRlcmF0b3JzIGFycmF5IG9mIDxjb2RlPlRyYW5zbGl0ZXJhdG9yPC9jb2RlPgorICAgICAqIG9iamVjdHMKKyAgICAgKiBAcGFyYW0gZmlsdGVyIHRoZSBmaWx0ZXIuICBBbnkgY2hhcmFjdGVyIGZvciB3aGljaAorICAgICAqIDx0dD5maWx0ZXIuY29udGFpbnMoKTwvdHQ+IHJldHVybnMgPHR0PmZhbHNlPC90dD4gd2lsbCBub3QgYmUKKyAgICAgKiBhbHRlcmVkIGJ5IHRoaXMgdHJhbnNsaXRlcmF0b3IuICBJZiA8dHQ+ZmlsdGVyPC90dD4gaXMKKyAgICAgKiA8dHQ+bnVsbDwvdHQ+IHRoZW4gbm8gZmlsdGVyaW5nIGlzIGFwcGxpZWQuCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNCBUaGlzIGNsYXNzIHRvIGJlY29tZSBwcml2YXRlIGFmdGVyIDIwMDMtMTItMDEuIFVzZSB0aGUgVHJhbnNsaXRlcmF0b3IgZmFjdG9yeSBtZXRob2RzLgorICAgICAqLworICAgIHB1YmxpYyBDb21wb3VuZFRyYW5zbGl0ZXJhdG9yKFRyYW5zbGl0ZXJhdG9yW10gdHJhbnNsaXRlcmF0b3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVGaWx0ZXIgZmlsdGVyKSB7CisgICAgICAgIHN1cGVyKGpvaW5JRHModHJhbnNsaXRlcmF0b3JzKSwgZmlsdGVyKTsKKyAgICAgICAgdHJhbnMgPSBuZXcgVHJhbnNsaXRlcmF0b3JbdHJhbnNsaXRlcmF0b3JzLmxlbmd0aF07CisgICAgICAgIFN5c3RlbS5hcnJheWNvcHkodHJhbnNsaXRlcmF0b3JzLCAwLCB0cmFucywgMCwgdHJhbnMubGVuZ3RoKTsKKyAgICAgICAgY29tcHV0ZU1heGltdW1Db250ZXh0TGVuZ3RoKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIG5ldyBjb21wb3VuZCB0cmFuc2xpdGVyYXRvciBnaXZlbiBhbiBhcnJheSBvZgorICAgICAqIHRyYW5zbGl0ZXJhdG9ycy4gIFRoZSBhcnJheSBvZiB0cmFuc2xpdGVyYXRvcnMgbWF5IGJlIG9mIGFueQorICAgICAqIGxlbmd0aCwgaW5jbHVkaW5nIHplcm8gb3Igb25lLCBob3dldmVyLCB1c2VmdWwgY29tcG91bmQKKyAgICAgKiB0cmFuc2xpdGVyYXRvcnMgaGF2ZSBhdCBsZWFzdCB0d28gY29tcG9uZW50cy4KKyAgICAgKiBAcGFyYW0gdHJhbnNsaXRlcmF0b3JzIGFycmF5IG9mIDxjb2RlPlRyYW5zbGl0ZXJhdG9yPC9jb2RlPgorICAgICAqIG9iamVjdHMKKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40IFRoaXMgY2xhc3MgdG8gYmVjb21lIHByaXZhdGUgYWZ0ZXIgMjAwMy0xMi0wMS4gVXNlIHRoZSBUcmFuc2xpdGVyYXRvciBmYWN0b3J5IG1ldGhvZHMuCisgICAgICovCisgICAgcHVibGljIENvbXBvdW5kVHJhbnNsaXRlcmF0b3IoVHJhbnNsaXRlcmF0b3JbXSB0cmFuc2xpdGVyYXRvcnMpIHsKKyAgICAgICAgdGhpcyh0cmFuc2xpdGVyYXRvcnMsIG51bGwpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IGNvbXBvdW5kIHRyYW5zbGl0ZXJhdG9yLgorICAgICAqIEBwYXJhbSBJRCBjb21wb3VuZCBJRAorICAgICAqIEBwYXJhbSBkaXJlY3Rpb24gZWl0aGVyIFRyYW5zbGl0ZXJhdG9yLkZPUldBUkQgb3IgVHJhbnNsaXRlcmF0b3IuUkVWRVJTRQorICAgICAqIEBwYXJhbSBmaWx0ZXIgYSBnbG9iYWwgZmlsdGVyIGZvciB0aGlzIGNvbXBvdW5kIHRyYW5zbGl0ZXJhdG9yCisgICAgICogb3IgbnVsbAorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjQgVGhpcyBjbGFzcyB0byBiZWNvbWUgcHJpdmF0ZSBhZnRlciAyMDAzLTEyLTAxLiBVc2UgdGhlIFRyYW5zbGl0ZXJhdG9yIGZhY3RvcnkgbWV0aG9kcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgQ29tcG91bmRUcmFuc2xpdGVyYXRvcihTdHJpbmcgSUQsIGludCBkaXJlY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pY29kZUZpbHRlciBmaWx0ZXIpIHsKKyAgICAgICAgc3VwZXIoSUQsIGZpbHRlcik7CisgICAgICAgIGluaXQoSUQsIGRpcmVjdGlvbiwgLTEsIG51bGwsIHRydWUpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IGNvbXBvdW5kIHRyYW5zbGl0ZXJhdG9yIHdpdGggbm8gZmlsdGVyLgorICAgICAqIEBwYXJhbSBJRCBjb21wb3VuZCBJRAorICAgICAqIEBwYXJhbSBkaXJlY3Rpb24gZWl0aGVyIFRyYW5zbGl0ZXJhdG9yLkZPUldBUkQgb3IgVHJhbnNsaXRlcmF0b3IuUkVWRVJTRQorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjQgVGhpcyBjbGFzcyB0byBiZWNvbWUgcHJpdmF0ZSBhZnRlciAyMDAzLTEyLTAxLiBVc2UgdGhlIFRyYW5zbGl0ZXJhdG9yIGZhY3RvcnkgbWV0aG9kcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgQ29tcG91bmRUcmFuc2xpdGVyYXRvcihTdHJpbmcgSUQsIGludCBkaXJlY3Rpb24pIHsKKyAgICAgICAgdGhpcyhJRCwgZGlyZWN0aW9uLCBudWxsKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIG5ldyBmb3J3YXJkIGNvbXBvdW5kIHRyYW5zbGl0ZXJhdG9yIHdpdGggbm8gZmlsdGVyLgorICAgICAqIEBwYXJhbSBJRCBjb21wb3VuZCBJRAorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjQgVGhpcyBjbGFzcyB0byBiZWNvbWUgcHJpdmF0ZSBhZnRlciAyMDAzLTEyLTAxLiBVc2UgdGhlIFRyYW5zbGl0ZXJhdG9yIGZhY3RvcnkgbWV0aG9kcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgQ29tcG91bmRUcmFuc2xpdGVyYXRvcihTdHJpbmcgSUQpIHsKKyAgICAgICAgdGhpcyhJRCwgRk9SV0FSRCwgbnVsbCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUGFja2FnZSBwcml2YXRlIGNvbnN0cnVjdG9yIGZvciBjb21wb3VuZCBSQlRzLiAgQ29uc3RydWN0IGEKKyAgICAgKiBjb21wb3VuZCB0cmFuc2xpdGVyYXRvciB1c2luZyB0aGUgZ2l2ZW4gaWRCbG9jaywgd2l0aCB0aGUKKyAgICAgKiBzcGxpdFRyYW5zIGluc2VydGVkIGF0IHRoZSBpZFNwbGl0UG9pbnQuCisgICAgICovCisgICAgQ29tcG91bmRUcmFuc2xpdGVyYXRvcihTdHJpbmcgSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgaWRCbG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpZFNwbGl0UG9pbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xpdGVyYXRvciBzcGxpdFRyYW5zKSB7CisgICAgICAgIHN1cGVyKElELCBudWxsKTsKKyAgICAgICAgaW5pdChpZEJsb2NrLCBGT1JXQVJELCBpZFNwbGl0UG9pbnQsIHNwbGl0VHJhbnMsIGZhbHNlKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUGFja2FnZSBwcml2YXRlIGNvbnN0cnVjdG9yIGZvciBUcmFuc2xpdGVyYXRvciBmcm9tIGEgdmVjdG9yIG9mCisgICAgICogdHJhbnNsaXRlcmF0b3JzLiAgVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgZml4aW5nIHVwIHRoZQorICAgICAqIElELgorICAgICAqLworICAgIENvbXBvdW5kVHJhbnNsaXRlcmF0b3IoVmVjdG9yIGxpc3QpIHsKKyAgICAgICAgc3VwZXIoIiIsIG51bGwpOworICAgICAgICB0cmFucyA9IG51bGw7CisgICAgICAgIGNvbXBvdW5kUkJUSW5kZXggPSAtMTsKKyAgICAgICAgaW5pdChsaXN0LCBGT1JXQVJELCBmYWxzZSk7CisgICAgICAgIC8vIGFzc3VtZSBjYWxsZXIgd2lsbCBmaXh1cCBJRAorICAgIH0KKworICAgIC8qKgorICAgICAqIEZpbmlzaCBjb25zdHJ1Y3RpbmcgYSB0cmFuc2xpdGVyYXRvcjogb25seSB0byBiZSBjYWxsZWQgYnkKKyAgICAgKiBjb25zdHJ1Y3RvcnMuICBCZWZvcmUgY2FsbGluZyBpbml0KCksIHNldCB0cmFucyBhbmQgZmlsdGVyIHRvIE5VTEwuCisgICAgICogQHBhcmFtIGlkIHRoZSBpZCBjb250YWluaW5nICc7Jy1zZXBhcmF0ZWQgZW50cmllcworICAgICAqIEBwYXJhbSBkaXJlY3Rpb24gZWl0aGVyIEZPUldBUkQgb3IgUkVWRVJTRQorICAgICAqIEBwYXJhbSBpZFNwbGl0UG9pbnQgdGhlIGluZGV4IGludG8gaWQgYXQgd2hpY2ggdGhlCisgICAgICogc3BsaXRUcmFucyBzaG91bGQgYmUgaW5zZXJ0ZWQsIGlmIHRoZXJlIGlzIG9uZSwgb3IKKyAgICAgKiAtMSBpZiB0aGVyZSBpcyBub25lLgorICAgICAqIEBwYXJhbSBzcGxpdFRyYW5zIGEgdHJhbnNsaXRlcmF0b3IgdG8gYmUgaW5zZXJ0ZWQKKyAgICAgKiBiZWZvcmUgdGhlIGVudHJ5IGF0IG9mZnNldCBpZFNwbGl0UG9pbnQgaW4gdGhlIGlkIHN0cmluZy4gIE1heSBiZQorICAgICAqIE5VTEwgdG8gaW5zZXJ0IG5vIGVudHJ5LgorICAgICAqIEBwYXJhbSBmaXhSZXZlcnNlSUQgaWYgVFJVRSwgdGhlbiByZWNvbnN0cnVjdCB0aGUgSUQgb2YgcmV2ZXJzZQorICAgICAqIGVudHJpZXMgYnkgY2FsbGluZyBnZXRJRCgpIG9mIGNvbXBvbmVudCBlbnRyaWVzLiAgU29tZSBjb25zdHJ1Y3RvcnMKKyAgICAgKiBkbyBub3QgcmVxdWlyZSB0aGlzIGJlY2F1c2UgdGhleSBhcHBseSBhIGZhY2FkZSBJRCBhbnl3YXkuCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIGluaXQoU3RyaW5nIGlkLAorICAgICAgICAgICAgICAgICAgICAgIGludCBkaXJlY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgaW50IGlkU3BsaXRQb2ludCwKKyAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xpdGVyYXRvciBzcGxpdFRyYW5zLAorICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gZml4UmV2ZXJzZUlEKSB7CisgICAgICAgIC8vIGFzc2VydCh0cmFucyA9PSAwKTsKKworICAgICAgICBWZWN0b3IgbGlzdCA9IG5ldyBWZWN0b3IoKTsKKyAgICAgICAgVW5pY29kZVNldFtdIGNvbXBvdW5kRmlsdGVyID0gbmV3IFVuaWNvZGVTZXRbMV07CisgICAgICAgIFN0cmluZ0J1ZmZlciByZWdlbklEID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBpZiAoIVRyYW5zbGl0ZXJhdG9ySURQYXJzZXIucGFyc2VDb21wb3VuZElEKGlkLCBkaXJlY3Rpb24sCisgICAgICAgICAgICAgICAgIHJlZ2VuSUQsIGxpc3QsIGNvbXBvdW5kRmlsdGVyKSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBJRCAiICsgaWQpOworICAgICAgICB9CisKKyAgICAgICAgY29tcG91bmRSQlRJbmRleCA9IFRyYW5zbGl0ZXJhdG9ySURQYXJzZXIuaW5zdGFudGlhdGVMaXN0KGxpc3QsIHNwbGl0VHJhbnMsIGlkU3BsaXRQb2ludCk7CisKKyAgICAgICAgaW5pdChsaXN0LCBkaXJlY3Rpb24sIGZpeFJldmVyc2VJRCk7CisKKyAgICAgICAgaWYgKGNvbXBvdW5kRmlsdGVyWzBdICE9IG51bGwpIHsKKyAgICAgICAgICAgIHNldEZpbHRlcihjb21wb3VuZEZpbHRlclswXSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBGaW5pc2ggY29uc3RydWN0aW5nIGEgdHJhbnNsaXRlcmF0b3I6IG9ubHkgdG8gYmUgY2FsbGVkIGJ5CisgICAgICogY29uc3RydWN0b3JzLiAgQmVmb3JlIGNhbGxpbmcgaW5pdCgpLCBzZXQgdHJhbnMgYW5kIGZpbHRlciB0byBOVUxMLgorICAgICAqIEBwYXJhbSBsaXN0IGEgdmVjdG9yIG9mIHRyYW5zbGl0ZXJhdG9yIG9iamVjdHMgdG8gYmUgYWRvcHRlZC4gIEl0CisgICAgICogc2hvdWxkIE5PVCBiZSBlbXB0eS4gIFRoZSBsaXN0IHNob3VsZCBiZSBpbiBkZWNsYXJlZCBvcmRlci4gIFRoYXQKKyAgICAgKiBpcywgaXQgc2hvdWxkIGJlIGluIHRoZSBGT1JXQVJEIG9yZGVyOyBpZiBkaXJlY3Rpb24gaXMgUkVWRVJTRSB0aGVuCisgICAgICogdGhlIGxpc3Qgb3JkZXIgd2lsbCBiZSByZXZlcnNlZC4KKyAgICAgKiBAcGFyYW0gZGlyZWN0aW9uIGVpdGhlciBGT1JXQVJEIG9yIFJFVkVSU0UKKyAgICAgKiBAcGFyYW0gZml4UmV2ZXJzZUlEIGlmIFRSVUUsIHRoZW4gcmVjb25zdHJ1Y3QgdGhlIElEIG9mIHJldmVyc2UKKyAgICAgKiBlbnRyaWVzIGJ5IGNhbGxpbmcgZ2V0SUQoKSBvZiBjb21wb25lbnQgZW50cmllcy4gIFNvbWUgY29uc3RydWN0b3JzCisgICAgICogZG8gbm90IHJlcXVpcmUgdGhpcyBiZWNhdXNlIHRoZXkgYXBwbHkgYSBmYWNhZGUgSUQgYW55d2F5LgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBpbml0KFZlY3RvciBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgIGludCBkaXJlY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBmaXhSZXZlcnNlSUQpIHsKKyAgICAgICAgLy8gYXNzZXJ0KHRyYW5zID09IDApOworCisgICAgICAgIC8vIEFsbG9jYXRlIGFycmF5CisgICAgICAgIGludCBjb3VudCA9IGxpc3Quc2l6ZSgpOworICAgICAgICB0cmFucyA9IG5ldyBUcmFuc2xpdGVyYXRvcltjb3VudF07CisKKyAgICAgICAgLy8gTW92ZSB0aGUgdHJhbnNsaXRlcmF0b3JzIGZyb20gdGhlIHZlY3RvciBpbnRvIGFuIGFycmF5LgorICAgICAgICAvLyBSZXZlcnNlIHRoZSBvcmRlciBpZiBuZWNlc3NhcnkuCisgICAgICAgIGludCBpOworICAgICAgICBmb3IgKGk9MDsgaTxjb3VudDsgKytpKSB7CisgICAgICAgICAgICBpbnQgaiA9IChkaXJlY3Rpb24gPT0gRk9SV0FSRCkgPyBpIDogY291bnQgLSAxIC0gaTsKKyAgICAgICAgICAgIHRyYW5zW2ldID0gKFRyYW5zbGl0ZXJhdG9yKSBsaXN0LmVsZW1lbnRBdChqKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZpeCBjb21wb3VuZFJCVEluZGV4IGZvciBSRVZFUlNFIHRyYW5zbGl0ZXJhdG9ycworICAgICAgICBpZiAoY29tcG91bmRSQlRJbmRleCA+PSAwICYmIGRpcmVjdGlvbiA9PSBSRVZFUlNFKSB7CisgICAgICAgICAgICBjb21wb3VuZFJCVEluZGV4ID0gY291bnQgLSAxIC0gY29tcG91bmRSQlRJbmRleDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIElmIHRoZSBkaXJlY3Rpb24gaXMgVVRSQU5TX1JFVkVSU0UgdGhlbiB3ZSBtYXkgbmVlZCB0byBmaXggdGhlCisgICAgICAgIC8vIElELgorICAgICAgICBpZiAoZGlyZWN0aW9uID09IFJFVkVSU0UgJiYgZml4UmV2ZXJzZUlEKSB7CisgICAgICAgICAgICBTdHJpbmdCdWZmZXIgbmV3SUQgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgICAgICBmb3IgKGk9MDsgaTxjb3VudDsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKGkgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIG5ld0lELmFwcGVuZChJRF9ERUxJTSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG5ld0lELmFwcGVuZCh0cmFuc1tpXS5nZXRJRCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNldElEKG5ld0lELnRvU3RyaW5nKCkpOworICAgICAgICB9CisKKyAgICAgICAgY29tcHV0ZU1heGltdW1Db250ZXh0TGVuZ3RoKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBJRHMgb2YgdGhlIGdpdmVuIGxpc3Qgb2YgdHJhbnNsaXRlcmF0b3JzLCBjb25jYXRlbmF0ZWQKKyAgICAgKiB3aXRoICc7JyBkZWxpbWl0aW5nIHRoZW0uICBFcXVpdmFsZW50IHRvIHRoZSBwZXJsaXNoIGV4cHJlc3Npb24KKyAgICAgKiBqb2luKCc7JywgbWFwKCRfLmdldElEKCksIHRyYW5zbGl0ZXJhdG9ycykuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGpvaW5JRHMoVHJhbnNsaXRlcmF0b3JbXSB0cmFuc2xpdGVyYXRvcnMpIHsKKyAgICAgICAgU3RyaW5nQnVmZmVyIGlkID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBmb3IgKGludCBpPTA7IGk8dHJhbnNsaXRlcmF0b3JzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBpZiAoaSA+IDApIHsKKyAgICAgICAgICAgICAgICBpZC5hcHBlbmQoJzsnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlkLmFwcGVuZCh0cmFuc2xpdGVyYXRvcnNbaV0uZ2V0SUQoKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGlkLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIHRyYW5zbGl0ZXJhdG9ycyBpbiB0aGlzIGNoYWluLgorICAgICAqIEByZXR1cm4gbnVtYmVyIG9mIHRyYW5zbGl0ZXJhdG9ycyBpbiB0aGlzIGNoYWluLgorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjQgVGhpcyBjbGFzcyB0byBiZWNvbWUgcHJpdmF0ZSBhZnRlciAyMDAzLTEyLTAxLiBVc2UgdGhlIFRyYW5zbGl0ZXJhdG9yIGZhY3RvcnkgbWV0aG9kcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldENvdW50KCkgeworICAgICAgICByZXR1cm4gdHJhbnMubGVuZ3RoOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIHRyYW5zbGl0ZXJhdG9yIGF0IHRoZSBnaXZlbiBpbmRleCBpbiB0aGlzIGNoYWluLgorICAgICAqIEBwYXJhbSBpbmRleCBpbmRleCBpbnRvIGNoYWluLCBmcm9tIDAgdG8gPGNvZGU+Z2V0Q291bnQoKSAtIDE8L2NvZGU+CisgICAgICogQHJldHVybiB0cmFuc2xpdGVyYXRvciBhdCB0aGUgZ2l2ZW4gaW5kZXgKKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40IFRoaXMgY2xhc3MgdG8gYmVjb21lIHByaXZhdGUgYWZ0ZXIgMjAwMy0xMi0wMS4gVXNlIHRoZSBUcmFuc2xpdGVyYXRvciBmYWN0b3J5IG1ldGhvZHMuCisgICAgICovCisgICAgcHVibGljIFRyYW5zbGl0ZXJhdG9yIGdldFRyYW5zbGl0ZXJhdG9yKGludCBpbmRleCkgeworICAgICAgICByZXR1cm4gdHJhbnNbaW5kZXhdOworICAgIH0KKworICAgIC8qKgorICAgICAqIEFwcGVuZCBjIHRvIGJ1ZiwgdW5sZXNzIGJ1ZiBpcyBlbXB0eSBvciBidWYgYWxyZWFkeSBlbmRzIGluIGMuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBfc21hcnRBcHBlbmQoU3RyaW5nQnVmZmVyIGJ1ZiwgY2hhciBjKSB7CisgICAgICAgIGlmIChidWYubGVuZ3RoKCkgIT0gMCAmJgorICAgICAgICAgICAgYnVmLmNoYXJBdChidWYubGVuZ3RoKCkgLSAxKSAhPSBjKSB7CisgICAgICAgICAgICBidWYuYXBwZW5kKGMpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogT3ZlcnJpZGUgVHJhbnNsaXRlcmF0b3I6CisgICAgICogQ3JlYXRlIGEgcnVsZSBzdHJpbmcgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIGNyZWF0ZUZyb21SdWxlcygpCisgICAgICogdG8gcmVjcmVhdGUgdGhpcyB0cmFuc2xpdGVyYXRvci4KKyAgICAgKiBAcGFyYW0gZXNjYXBlVW5wcmludGFibGUgaWYgVFJVRSB0aGVuIGNvbnZlcnQgdW5wcmludGFibGUKKyAgICAgKiBjaGFyYWN0ZXIgdG8gdGhlaXIgaGV4IGVzY2FwZSByZXByZXNlbnRhdGlvbnMsIFxcdXh4eHggb3IKKyAgICAgKiBcXFV4eHh4eHh4eC4gIFVucHJpbnRhYmxlIGNoYXJhY3RlcnMgYXJlIHRob3NlIG90aGVyIHRoYW4KKyAgICAgKiBVKzAwMEEsIFUrMDAyMC4uVSswMDdFLgorICAgICAqIEByZXR1cm4gdGhlIHJ1bGUgc3RyaW5nCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNCBUaGlzIGNsYXNzIHRvIGJlY29tZSBwcml2YXRlIGFmdGVyIDIwMDItc2VwLTMwLgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgdG9SdWxlcyhib29sZWFuIGVzY2FwZVVucHJpbnRhYmxlKSB7CisgICAgICAgIC8vIFdlIGRvIE5PVCBjYWxsIHRvUnVsZXMoKSBvbiBvdXIgY29tcG9uZW50IHRyYW5zbGl0ZXJhdG9ycywgaW4KKyAgICAgICAgLy8gZ2VuZXJhbC4gIElmIHdlIGhhdmUgc2V2ZXJhbCBydWxlLWJhc2VkIHRyYW5zbGl0ZXJhdG9ycywgdGhpcworICAgICAgICAvLyB5aWVsZHMgYSBjb25jYXRlbmF0aW9uIG9mIHRoZSBydWxlcyAtLSBub3Qgd2hhdCB3ZSB3YW50LiAgV2UgZG8KKyAgICAgICAgLy8gaGFuZGxlIGNvbXBvdW5kIFJCVCB0cmFuc2xpdGVyYXRvcnMgc3BlY2lhbGx5IC0tIHRob3NlIGZvciB3aGljaAorICAgICAgICAvLyBjb21wb3VuZFJCVEluZGV4ID49IDAuICBGb3IgdGhlIHRyYW5zbGl0ZXJhdG9yIGF0IGNvbXBvdW5kUkJUSW5kZXgsCisgICAgICAgIC8vIHdlIGRvIGNhbGwgdG9SdWxlcygpIHJlY3Vyc2l2ZWx5LgorICAgICAgICBTdHJpbmdCdWZmZXIgcnVsZXNTb3VyY2UgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIGlmIChjb21wb3VuZFJCVEluZGV4ID49IDAgJiYgZ2V0RmlsdGVyKCkgIT0gbnVsbCkgeworICAgICAgICAgICAgLy8gSWYgd2UgYXJlIGEgY29tcG91bmQgUkJUIGFuZCBpZiB3ZSBoYXZlIGEgZ2xvYmFsCisgICAgICAgICAgICAvLyBmaWx0ZXIsIHRoZW4gZW1pdCBpdCBhdCB0aGUgdG9wLgorICAgICAgICAgICAgcnVsZXNTb3VyY2UuYXBwZW5kKCI6OiIpLmFwcGVuZChnZXRGaWx0ZXIoKS50b1BhdHRlcm4oZXNjYXBlVW5wcmludGFibGUpKS5hcHBlbmQoSURfREVMSU0pOworICAgICAgICB9CisgICAgICAgIGZvciAoaW50IGk9MDsgaTx0cmFucy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgU3RyaW5nIHJ1bGU7CisgICAgICAgICAgICBpZiAoaSA9PSBjb21wb3VuZFJCVEluZGV4KSB7CisgICAgICAgICAgICAgICAgcnVsZSA9IHRyYW5zW2ldLnRvUnVsZXMoZXNjYXBlVW5wcmludGFibGUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBydWxlID0gdHJhbnNbaV0uYmFzZVRvUnVsZXMoZXNjYXBlVW5wcmludGFibGUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgX3NtYXJ0QXBwZW5kKHJ1bGVzU291cmNlLCAnXG4nKTsKKyAgICAgICAgICAgIHJ1bGVzU291cmNlLmFwcGVuZChydWxlKTsKKyAgICAgICAgICAgIF9zbWFydEFwcGVuZChydWxlc1NvdXJjZSwgSURfREVMSU0pOworICAgICAgICB9CisgICAgICAgIHJldHVybiBydWxlc1NvdXJjZS50b1N0cmluZygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgc2V0IG9mIGFsbCBjaGFyYWN0ZXJzIHRoYXQgbWF5IGJlIG1vZGlmaWVkIGJ5IHRoaXMKKyAgICAgKiBUcmFuc2xpdGVyYXRvciwgaWdub3JpbmcgdGhlIGVmZmVjdCBvZiBvdXIgZmlsdGVyLgorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjQgVGhpcyBjbGFzcyB0byBiZWNvbWUgcHJpdmF0ZSBhZnRlciAyMDAzLTEyLTAxLiBVc2UgdGhlIFRyYW5zbGl0ZXJhdG9yIGZhY3RvcnkgbWV0aG9kcy4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgVW5pY29kZVNldCBoYW5kbGVHZXRTb3VyY2VTZXQoKSB7CisgICAgICAgIFVuaWNvZGVTZXQgc2V0ID0gbmV3IFVuaWNvZGVTZXQoKTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPHRyYW5zLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBzZXQuYWRkQWxsKHRyYW5zW2ldLmdldFNvdXJjZVNldCgpKTsKKyAgICAgICAgICAgIC8vIFRha2UgdGhlIGV4YW1wbGUgb2YgSGlyYWdhbmEtTGF0aW4uICBUaGlzIGlzIHJlYWxseQorICAgICAgICAgICAgLy8gSGlyYWdhbmEtS2F0YWthbmE7IEthdGFrYW5hLUxhdGluLiAgVGhlIHNvdXJjZSBzZXQgb2YKKyAgICAgICAgICAgIC8vIHRoZXNlIHR3byBpcyByb3VnaGx5IFs6SGlyYWdhbmE6XSBhbmQgWzpLYXRha2FuYTpdLgorICAgICAgICAgICAgLy8gQnV0IHRoZSBzb3VyY2Ugc2V0IGZvciB0aGUgZW50aXJlIHRyYW5zbGl0ZXJhdG9yIGlzCisgICAgICAgICAgICAvLyBhY3R1YWxseSBbOkhpcmFnYW5hOl0gT05MWSAtLSB0aGF0IGlzLCB0aGUgZmlyc3QKKyAgICAgICAgICAgIC8vIG5vbi1lbXB0eSBzb3VyY2Ugc2V0LgorCisgICAgICAgICAgICAvLyBUaGlzIGlzIGEgaGV1cmlzdGljLCBhbmQgbm90IDEwMCUgcmVsaWFibGUuCisgICAgICAgICAgICBpZiAoIXNldC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc2V0OworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIHNldCBvZiBhbGwgY2hhcmFjdGVycyB0aGF0IG1heSBiZSBnZW5lcmF0ZWQgYXMKKyAgICAgKiByZXBsYWNlbWVudCB0ZXh0IGJ5IHRoaXMgdHJhbnNsaXRlcmF0b3IuCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNCBUaGlzIGNsYXNzIHRvIGJlY29tZSBwcml2YXRlIGFmdGVyIDIwMDMtMTItMDEuIFVzZSB0aGUgVHJhbnNsaXRlcmF0b3IgZmFjdG9yeSBtZXRob2RzLgorICAgICAqLworICAgIHB1YmxpYyBVbmljb2RlU2V0IGdldFRhcmdldFNldCgpIHsKKyAgICAgICAgVW5pY29kZVNldCBzZXQgPSBuZXcgVW5pY29kZVNldCgpOworICAgICAgICBmb3IgKGludCBpPTA7IGk8dHJhbnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBoZXVyaXN0aWMsIGFuZCBub3QgMTAwJSByZWxpYWJsZS4KKyAgICAgICAgICAgIHNldC5hZGRBbGwodHJhbnNbaV0uZ2V0VGFyZ2V0U2V0KCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBzZXQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogSW1wbGVtZW50cyB7QGxpbmsgVHJhbnNsaXRlcmF0b3IjaGFuZGxlVHJhbnNsaXRlcmF0ZX0uCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNCBUaGlzIGNsYXNzIHRvIGJlY29tZSBwcml2YXRlIGFmdGVyIDIwMDMtMTItMDEuIFVzZSB0aGUgVHJhbnNsaXRlcmF0b3IgZmFjdG9yeSBtZXRob2RzLgorICAgICAqLworICAgIHByb3RlY3RlZCB2b2lkIGhhbmRsZVRyYW5zbGl0ZXJhdGUoUmVwbGFjZWFibGUgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uIGluZGV4LCBib29sZWFuIGluY3JlbWVudGFsKSB7CisgICAgICAgIC8qIENhbGwgZWFjaCB0cmFuc2xpdGVyYXRvciB3aXRoIHRoZSBzYW1lIHN0YXJ0IHZhbHVlIGFuZAorICAgICAgICAgKiBpbml0aWFsIGN1cnNvciBpbmRleCwgYnV0IHdpdGggdGhlIGxpbWl0IGluZGV4IGFzIG1vZGlmaWVkCisgICAgICAgICAqIGJ5IHByZWNlZGluZyB0cmFuc2xpdGVyYXRvcnMuICBUaGUgY3Vyc29yIGluZGV4IG11c3QgYmUKKyAgICAgICAgICogcmVzZXQgZm9yIGVhY2ggdHJhbnNsaXRlcmF0b3IgdG8gZ2l2ZSBlYWNoIGEgY2hhbmNlIHRvCisgICAgICAgICAqIHRyYW5zbGl0ZXJhdGUgdGhlIHRleHQuICBUaGUgaW5pdGlhbCBjdXJzb3IgaW5kZXggaXMga25vd24KKyAgICAgICAgICogdG8gc3RpbGwgcG9pbnQgdG8gdGhlIHNhbWUgcGxhY2UgYWZ0ZXIgZWFjaCB0cmFuc2xpdGVyYXRvcgorICAgICAgICAgKiBpcyBjYWxsZWQgYmVjYXVzZSBlYWNoIHRyYW5zbGl0ZXJhdG9yIHdpbGwgbm90IGNoYW5nZSB0aGUKKyAgICAgICAgICogdGV4dCBiZXR3ZWVuIHN0YXJ0IGFuZCB0aGUgaW5pdGlhbCB2YWx1ZSBvZiBjdXJzb3IuCisgICAgICAgICAqCisgICAgICAgICAqIElNUE9SVEFOVDogQWZ0ZXIgdGhlIGZpcnN0IHRyYW5zbGl0ZXJhdG9yLCBlYWNoIHN1YnNlcXVlbnQKKyAgICAgICAgICogdHJhbnNsaXRlcmF0b3Igb25seSBnZXRzIHRvIHRyYW5zbGl0ZXJhdGUgdGV4dCBjb21taXR0ZWQgYnkKKyAgICAgICAgICogcHJlY2VkaW5nIHRyYW5zbGl0ZXJhdG9yczsgdGhhdCBpcywgdGhlIGN1cnNvciAob3V0cHV0CisgICAgICAgICAqIHZhbHVlKSBvZiB0cmFuc2xpdGVyYXRvciBpIGJlY29tZXMgdGhlIGxpbWl0IChpbnB1dCB2YWx1ZSkKKyAgICAgICAgICogb2YgdHJhbnNsaXRlcmF0b3IgaSsxLiAgRmluYWxseSwgdGhlIG92ZXJhbGwgbGltaXQgaXMgZml4ZWQKKyAgICAgICAgICogdXAgYmVmb3JlIHdlIHJldHVybi4KKyAgICAgICAgICoKKyAgICAgICAgICogQXNzdW1wdGlvbnMgd2UgbWFrZSBoZXJlOgorICAgICAgICAgKiAoMSkgY29udGV4dFN0YXJ0IDw9IHN0YXJ0IDw9IGxpbWl0IDw9IGNvbnRleHRMaW1pdCA8PSB0ZXh0Lmxlbmd0aCgpCisgICAgICAgICAqICgyKSBzdGFydCA8PSBzdGFydCcgPD0gbGltaXQnICA7Y3Vyc29yIGRvZXNuJ3QgbW92ZSBiYWNrCisgICAgICAgICAqICgzKSBzdGFydCA8PSBsaW1pdCcgICAgICAgICAgICA7dGV4dCBiZWZvcmUgY3Vyc29yIHVuY2hhbmdlZAorICAgICAgICAgKiAtIHN0YXJ0JyBpcyB0aGUgdmFsdWUgb2Ygc3RhcnQgYWZ0ZXIgY2FsbGluZyBoYW5kbGVLVAorICAgICAgICAgKiAtIGxpbWl0JyBpcyB0aGUgdmFsdWUgb2YgbGltaXQgYWZ0ZXIgY2FsbGluZyBoYW5kbGVLVAorICAgICAgICAgKi8KKworICAgICAgICAvKioKKyAgICAgICAgICogRXhhbXBsZTogMyB0cmFuc2xpdGVyYXRvcnMuICBUaGlzIGV4YW1wbGUgaWxsdXN0cmF0ZXMgdGhlCisgICAgICAgICAqIG1lY2hhbmljcyB3ZSBuZWVkIHRvIGltcGxlbWVudC4gIEMsIFMsIGFuZCBMIGFyZSB0aGUgY29udGV4dFN0YXJ0LAorICAgICAgICAgKiBzdGFydCwgYW5kIGxpbWl0LiAgZ2wgaXMgdGhlIGdsb2JhbExpbWl0LiAgY29udGV4dExpbWl0IGlzCisgICAgICAgICAqIGVxdWFsIHRvIGxpbWl0IHRocm91Z2hvdXQuCisgICAgICAgICAqCisgICAgICAgICAqIDEuIGgtdSwgY2hhbmdlcyBoZXggdG8gVW5pY29kZQorICAgICAgICAgKgorICAgICAgICAgKiAgICA0ICA3ICBhICBkICAwICAgICAgNCAgNyAgYQorICAgICAgICAgKiAgICBhYmMvdTAwNjEvdSAgICA9PiAgYWJjYS91ICAgIAorICAgICAgICAgKiAgICBDICBTICAgICAgIEwgICAgICAgQyAgIFMgTCAgIGdsPWYtPmEKKyAgICAgICAgICoKKyAgICAgICAgICogMi4gdXB1cCwgY2hhbmdlcyAieCIgdG8gIlhYIgorICAgICAgICAgKgorICAgICAgICAgKiAgICA0ICA3ICBhICAgICAgIDQgIDcgIGEKKyAgICAgICAgICogICAgYWJjYS91ICAgID0+ICBhYmNBQS91ICAgIAorICAgICAgICAgKiAgICBDICBTTCAgICAgICAgIEMgICAgUyAgIAorICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgTCAgICBnbD1hLT5iCisgICAgICAgICAqIDMuIHUtaCwgY2hhbmdlcyBVbmljb2RlIHRvIGhleAorICAgICAgICAgKgorICAgICAgICAgKiAgICA0ICA3ICBhICAgICAgICA0ICA3ICBhICBkICAwICAzCisgICAgICAgICAqICAgIGFiY0FBL3UgICAgPT4gIGFiYy91MDA0MS91MDA0MS91ICAgIAorICAgICAgICAgKiAgICBDICBTIEwgICAgICAgICBDICAgICAgICAgICAgICBTCisgICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwgICBnbD1iLT4xNQorICAgICAgICAgKiA0LiByZXR1cm4KKyAgICAgICAgICoKKyAgICAgICAgICogICAgNCAgNyAgYSAgZCAgMCAgMworICAgICAgICAgKiAgICBhYmMvdTAwNDEvdTAwNDEvdSAgICAKKyAgICAgICAgICogICAgQyBTIEwKKyAgICAgICAgICovCisKKyAgICAgICAgaWYgKHRyYW5zLmxlbmd0aCA8IDEpIHsKKyAgICAgICAgICAgIGluZGV4LnN0YXJ0ID0gaW5kZXgubGltaXQ7CisgICAgICAgICAgICByZXR1cm47IC8vIFNob3J0IGNpcmN1aXQgZm9yIGVtcHR5IGNvbXBvdW5kIHRyYW5zbGl0ZXJhdG9ycworICAgICAgICB9CisKKyAgICAgICAgLy8gY29tcG91bmRMaW1pdCBpcyB0aGUgbGltaXQgdmFsdWUgZm9yIHRoZSBlbnRpcmUgY29tcG91bmQKKyAgICAgICAgLy8gb3BlcmF0aW9uLiAgV2Ugb3ZlcndyaXRlIGluZGV4LmxpbWl0IHdpdGggdGhlIHByZXZpb3VzCisgICAgICAgIC8vIGluZGV4LnN0YXJ0LiAgQWZ0ZXIgZWFjaCB0cmFuc2xpdGVyYXRpb24sIHdlIHVwZGF0ZQorICAgICAgICAvLyBjb21wb3VuZExpbWl0IGZvciBpbnNlcnRpb25zIG9yIGRlbGV0aW9ucyB0aGF0IGhhdmUgaGFwcGVuZWQuCisgICAgICAgIGludCBjb21wb3VuZExpbWl0ID0gaW5kZXgubGltaXQ7CisKKyAgICAgICAgLy8gY29tcG91bmRTdGFydCBpcyB0aGUgc3RhcnQgZm9yIHRoZSBlbnRpcmUgY29tcG91bmQKKyAgICAgICAgLy8gb3BlcmF0aW9uLgorICAgICAgICBpbnQgY29tcG91bmRTdGFydCA9IGluZGV4LnN0YXJ0OworCisgICAgICAgIGludCBkZWx0YSA9IDA7IC8vIGRlbHRhIGluIGxlbmd0aAorCisgICAgICAgIFN0cmluZ0J1ZmZlciBsb2cgPSBudWxsOworICAgICAgICBpZiAoREVCVUcpIHsKKyAgICAgICAgICAgIGxvZyA9IG5ldyBTdHJpbmdCdWZmZXIoIkNvbXBvdW5kVHJhbnNsaXRlcmF0b3J7IiArIGdldElEKCkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5jcmVtZW50YWwgPyAifWk6IElOPSIgOiAifTogSU49IikpOworICAgICAgICAgICAgVXRpbGl0eS5mb3JtYXRJbnB1dChsb2csIHRleHQsIGluZGV4KTsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihVdGlsaXR5LmVzY2FwZShsb2cudG9TdHJpbmcoKSkpOworICAgICAgICB9CisKKyAgICAgICAgLy8gR2l2ZSBlYWNoIHRyYW5zbGl0ZXJhdG9yIGEgY3JhY2sgYXQgdGhlIHJ1biBvZiBjaGFyYWN0ZXJzLgorICAgICAgICAvLyBTZWUgY29tbWVudHMgYXQgdGhlIHRvcCBvZiB0aGUgbWV0aG9kIGZvciBtb3JlIGRldGFpbC4KKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPHRyYW5zLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBpbmRleC5zdGFydCA9IGNvbXBvdW5kU3RhcnQ7IC8vIFJlc2V0IHN0YXJ0CisgICAgICAgICAgICBpbnQgbGltaXQgPSBpbmRleC5saW1pdDsKKworICAgICAgICAgICAgaWYgKGluZGV4LnN0YXJ0ID09IGluZGV4LmxpbWl0KSB7CisgICAgICAgICAgICAgICAgLy8gU2hvcnQgY2lyY3VpdCBmb3IgZW1wdHkgcmFuZ2UKKyAgICAgICAgICAgICAgICBpZiAoREVCVUcpIHsKKyAgICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJDb21wb3VuZFRyYW5zbGl0ZXJhdG9yWyIgKyBpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIuLiIgKyAodHJhbnMubGVuZ3RoLTEpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbmNyZW1lbnRhbCA/ICJdaTogIiA6ICJdOiAiKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVdGlsaXR5LmZvcm1hdElucHV0KHRleHQsIGluZGV4KSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIChOT1RISU5HIFRPIERPKSIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKERFQlVHKSB7CisgICAgICAgICAgICAgICAgbG9nLnNldExlbmd0aCgwKTsKKyAgICAgICAgICAgICAgICBsb2cuYXBwZW5kKCJDb21wb3VuZFRyYW5zbGl0ZXJhdG9yWyIgKyBpICsgIj0iICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zW2ldLmdldElEKCkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgKGluY3JlbWVudGFsID8gIl1pOiAiIDogIl06ICIpKTsKKyAgICAgICAgICAgICAgICBVdGlsaXR5LmZvcm1hdElucHV0KGxvZywgdGV4dCwgaW5kZXgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0cmFuc1tpXS5maWx0ZXJlZFRyYW5zbGl0ZXJhdGUodGV4dCwgaW5kZXgsIGluY3JlbWVudGFsKTsKKworICAgICAgICAgICAgLy8gSW4gYSBwcm9wZXJseSB3cml0dGVuIHRyYW5zbGl0ZXJhdG9yLCBzdGFydCA9PSBsaW1pdCBhZnRlcgorICAgICAgICAgICAgLy8gaGFuZGxlVHJhbnNsaXRlcmF0ZSgpIHJldHVybnMgd2hlbiBpbmNyZW1lbnRhbCBpcyBmYWxzZS4KKyAgICAgICAgICAgIC8vIENhdGNoIGNhc2VzIHdoZXJlIHRoZSBzdWJjbGFzcyBkb2Vzbid0IGRvIHRoaXMsIGFuZCB0aHJvdworICAgICAgICAgICAgLy8gYW4gZXhjZXB0aW9uLiAgKEp1c3QgcGlubmluZyBzdGFydCB0byBsaW1pdCBpcyBhIGJhZCBpZGVhLAorICAgICAgICAgICAgLy8gYmVjYXVzZSB3aGF0J3MgcHJvYmFibHkgaGFwcGVuaW5nIGlzIHRoYXQgdGhlIHN1YmNsYXNzCisgICAgICAgICAgICAvLyBpc24ndCB0cmFuc2xpdGVyYXRpbmcgYWxsIHRoZSB3YXkgdG8gdGhlIGVuZCwgYW5kIGl0IHNob3VsZAorICAgICAgICAgICAgLy8gaW4gbm9uLWluY3JlbWVudGFsIG1vZGUuKQorICAgICAgICAgICAgaWYgKCFpbmNyZW1lbnRhbCAmJiBpbmRleC5zdGFydCAhPSBpbmRleC5saW1pdCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJFUlJPUjogSW5jb21wbGV0ZSBub24taW5jcmVtZW50YWwgdHJhbnNsaXRlcmF0aW9uIGJ5ICIgKyB0cmFuc1tpXS5nZXRJRCgpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKERFQlVHKSB7CisgICAgICAgICAgICAgICAgbG9nLmFwcGVuZCgiID0+ICIpOworICAgICAgICAgICAgICAgIFV0aWxpdHkuZm9ybWF0SW5wdXQobG9nLCB0ZXh0LCBpbmRleCk7CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKFV0aWxpdHkuZXNjYXBlKGxvZy50b1N0cmluZygpKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEN1bXVsYXRpdmUgZGVsdGEgZm9yIGluc2VydGlvbnMvZGVsZXRpb25zCisgICAgICAgICAgICBkZWx0YSArPSBpbmRleC5saW1pdCAtIGxpbWl0OworCisgICAgICAgICAgICBpZiAoaW5jcmVtZW50YWwpIHsKKyAgICAgICAgICAgICAgICAvLyBJbiB0aGUgaW5jcmVtZW50YWwgY2FzZSwgb25seSBhbGxvdyBzdWJzZXF1ZW50CisgICAgICAgICAgICAgICAgLy8gdHJhbnNsaXRlcmF0b3JzIHRvIG1vZGlmeSB3aGF0IGhhcyBhbHJlYWR5IGJlZW4KKyAgICAgICAgICAgICAgICAvLyBjb21wbGV0ZWx5IHByb2Nlc3NlZCBieSBwcmlvciB0cmFuc2xpdGVyYXRvcnMuICBJbiB0aGUKKyAgICAgICAgICAgICAgICAvLyBub24taW5jcm1lbnRhbCBjYXNlLCBhbGxvdyBlYWNoIHRyYW5zbGl0ZXJhdG9yIHRvCisgICAgICAgICAgICAgICAgLy8gcHJvY2VzcyB0aGUgZW50aXJlIHRleHQuCisgICAgICAgICAgICAgICAgaW5kZXgubGltaXQgPSBpbmRleC5zdGFydDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGNvbXBvdW5kTGltaXQgKz0gZGVsdGE7CisKKyAgICAgICAgLy8gU3RhcnQgaXMgZ29vZCB3aGVyZSBpdCBpcyAtLSB3aGVyZSB0aGUgbGFzdCB0cmFuc2xpdGVyYXRvciBsZWZ0CisgICAgICAgIC8vIGl0LiAgTGltaXQgbmVlZHMgdG8gYmUgcHV0IGJhY2sgd2hlcmUgaXQgd2FzLCBtb2R1bG8KKyAgICAgICAgLy8gYWRqdXN0bWVudHMgZm9yIGRlbGV0aW9ucy9pbnNlcnRpb25zLgorICAgICAgICBpbmRleC5saW1pdCA9IGNvbXBvdW5kTGltaXQ7CisKKyAgICAgICAgaWYgKERFQlVHKSB7CisgICAgICAgICAgICBsb2cuc2V0TGVuZ3RoKDApOworICAgICAgICAgICAgbG9nLmFwcGVuZCgiQ29tcG91bmRUcmFuc2xpdGVyYXRvcnsiICsgZ2V0SUQoKSArCisgICAgICAgICAgICAgICAgICAgICAgIChpbmNyZW1lbnRhbCA/ICJ9aTogT1VUPSIgOiAifTogT1VUPSIpKTsKKyAgICAgICAgICAgIFV0aWxpdHkuZm9ybWF0SW5wdXQobG9nLCB0ZXh0LCBpbmRleCk7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oVXRpbGl0eS5lc2NhcGUobG9nLnRvU3RyaW5nKCkpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIENvbXB1dGUgYW5kIHNldCB0aGUgbGVuZ3RoIG9mIHRoZSBsb25nZXN0IGNvbnRleHQgcmVxdWlyZWQgYnkgdGhpcyB0cmFuc2xpdGVyYXRvci4KKyAgICAgKiBUaGlzIGlzIDxlbT5wcmVjZWRpbmc8L2VtPiBjb250ZXh0LgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBjb21wdXRlTWF4aW11bUNvbnRleHRMZW5ndGgoKSB7CisgICAgICAgIGludCBtYXggPSAwOworICAgICAgICBmb3IgKGludCBpPTA7IGk8dHJhbnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGludCBsZW4gPSB0cmFuc1tpXS5nZXRNYXhpbXVtQ29udGV4dExlbmd0aCgpOworICAgICAgICAgICAgaWYgKGxlbiA+IG1heCkgeworICAgICAgICAgICAgICAgIG1heCA9IGxlbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBzZXRNYXhpbXVtQ29udGV4dExlbmd0aChtYXgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS90ZXh0L0RhdGVGb3JtYXQuamF2YSBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L0RhdGVGb3JtYXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44ZjkxN2RiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvRGF0ZUZvcm1hdC5qYXZhCkBAIC0wLDAgKzEsOTEzIEBACisvKgorKiAgIENvcHlyaWdodCAoQykgMTk5Ni0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqICAgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LnRleHQ7CisKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLklDVUxvY2FsZURhdGE7CitpbXBvcnQgY29tLmlibS5pY3UudXRpbC5DYWxlbmRhcjsKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLkdyZWdvcmlhbkNhbGVuZGFyOworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuVGltZVpvbmU7CisKK2ltcG9ydCBqYXZhLnRleHQuRmllbGRQb3NpdGlvbjsKK2ltcG9ydCBqYXZhLnRleHQuRm9ybWF0OworaW1wb3J0IGphdmEudGV4dC5QYXJzZUV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnRleHQuUGFyc2VQb3NpdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworaW1wb3J0IGphdmEudXRpbC5NaXNzaW5nUmVzb3VyY2VFeGNlcHRpb247CitpbXBvcnQgamF2YS51dGlsLlJlc291cmNlQnVuZGxlOworCisvKioKKyAqIERhdGVGb3JtYXQgaXMgYW4gYWJzdHJhY3QgY2xhc3MgZm9yIGRhdGUvdGltZSBmb3JtYXR0aW5nIHN1YmNsYXNzZXMgd2hpY2gKKyAqIGZvcm1hdHMgYW5kIHBhcnNlcyBkYXRlcyBvciB0aW1lIGluIGEgbGFuZ3VhZ2UtaW5kZXBlbmRlbnQgbWFubmVyLgorICogVGhlIGRhdGUvdGltZSBmb3JtYXR0aW5nIHN1YmNsYXNzLCBzdWNoIGFzIFNpbXBsZURhdGVGb3JtYXQsIGFsbG93cyBmb3IKKyAqIGZvcm1hdHRpbmcgKGkuZS4sIGRhdGUgLT4gdGV4dCksIHBhcnNpbmcgKHRleHQgLT4gZGF0ZSksIGFuZAorICogbm9ybWFsaXphdGlvbi4gIFRoZSBkYXRlIGlzIHJlcHJlc2VudGVkIGFzIGEgPGNvZGU+RGF0ZTwvY29kZT4gb2JqZWN0IG9yCisgKiBhcyB0aGUgbWlsbGlzZWNvbmRzIHNpbmNlIEphbnVhcnkgMSwgMTk3MCwgMDA6MDA6MDAgR01ULgorICoKKyAqIDxwPkRhdGVGb3JtYXQgcHJvdmlkZXMgbWFueSBjbGFzcyBtZXRob2RzIGZvciBvYnRhaW5pbmcgZGVmYXVsdCBkYXRlL3RpbWUKKyAqIGZvcm1hdHRlcnMgYmFzZWQgb24gdGhlIGRlZmF1bHQgb3IgYSBnaXZlbiBsb2FjbGUgYW5kIGEgbnVtYmVyIG9mIGZvcm1hdHRpbmcKKyAqIHN0eWxlcy4gVGhlIGZvcm1hdHRpbmcgc3R5bGVzIGluY2x1ZGUgRlVMTCwgTE9ORywgTUVESVVNLCBhbmQgU0hPUlQuIE1vcmUKKyAqIGRldGFpbCBhbmQgZXhhbXBsZXMgb2YgdXNpbmcgdGhlc2Ugc3R5bGVzIGFyZSBwcm92aWRlZCBpbiB0aGUgbWV0aG9kCisgKiBkZXNjcmlwdGlvbnMuCisgKgorICogPHA+RGF0ZUZvcm1hdCBoZWxwcyB5b3UgdG8gZm9ybWF0IGFuZCBwYXJzZSBkYXRlcyBmb3IgYW55IGxvY2FsZS4KKyAqIFlvdXIgY29kZSBjYW4gYmUgY29tcGxldGVseSBpbmRlcGVuZGVudCBvZiB0aGUgbG9jYWxlIGNvbnZlbnRpb25zIGZvcgorICogbW9udGhzLCBkYXlzIG9mIHRoZSB3ZWVrLCBvciBldmVuIHRoZSBjYWxlbmRhciBmb3JtYXQ6IGx1bmFyIHZzLiBzb2xhci4KKyAqCisgKiA8cD5UbyBmb3JtYXQgYSBkYXRlIGZvciB0aGUgY3VycmVudCBMb2NhbGUsIHVzZSBvbmUgb2YgdGhlCisgKiBzdGF0aWMgZmFjdG9yeSBtZXRob2RzOgorICogPHByZT4KKyAqICBteVN0cmluZyA9IERhdGVGb3JtYXQuZ2V0RGF0ZUluc3RhbmNlKCkuZm9ybWF0KG15RGF0ZSk7CisgKiA8L3ByZT4KKyAqIDxwPklmIHlvdSBhcmUgZm9ybWF0dGluZyBtdWx0aXBsZSBudW1iZXJzLCBpdCBpcworICogbW9yZSBlZmZpY2llbnQgdG8gZ2V0IHRoZSBmb3JtYXQgYW5kIHVzZSBpdCBtdWx0aXBsZSB0aW1lcyBzbyB0aGF0CisgKiB0aGUgc3lzdGVtIGRvZXNuJ3QgaGF2ZSB0byBmZXRjaCB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGxvY2FsCisgKiBsYW5ndWFnZSBhbmQgY291bnRyeSBjb252ZW50aW9ucyBtdWx0aXBsZSB0aW1lcy4KKyAqIDxwcmU+CisgKiAgRGF0ZUZvcm1hdCBkZiA9IERhdGVGb3JtYXQuZ2V0RGF0ZUluc3RhbmNlKCk7CisgKiAgZm9yIChpbnQgaSA9IDA7IGkgPCBhLmxlbmd0aDsgKytpKSB7CisgKiAgICBvdXRwdXQucHJpbnRsbihkZi5mb3JtYXQobXlEYXRlW2ldKSArICI7ICIpOworICogIH0KKyAqIDwvcHJlPgorICogPHA+VG8gZm9ybWF0IGEgbnVtYmVyIGZvciBhIGRpZmZlcmVudCBMb2NhbGUsIHNwZWNpZnkgaXQgaW4gdGhlCisgKiBjYWxsIHRvIGdldERhdGVJbnN0YW5jZSgpLgorICogPHByZT4KKyAqICBEYXRlRm9ybWF0IGRmID0gRGF0ZUZvcm1hdC5nZXREYXRlSW5zdGFuY2UoRGF0ZUZvcm1hdC5MT05HLCBMb2NhbGUuRlJBTkNFKTsKKyAqIDwvcHJlPgorICogPHA+WW91IGNhbiB1c2UgYSBEYXRlRm9ybWF0IHRvIHBhcnNlIGFsc28uCisgKiA8cHJlPgorICogIG15RGF0ZSA9IGRmLnBhcnNlKG15U3RyaW5nKTsKKyAqIDwvcHJlPgorICogPHA+VXNlIGdldERhdGVJbnN0YW5jZSB0byBnZXQgdGhlIG5vcm1hbCBkYXRlIGZvcm1hdCBmb3IgdGhhdCBjb3VudHJ5LgorICogVGhlcmUgYXJlIG90aGVyIHN0YXRpYyBmYWN0b3J5IG1ldGhvZHMgYXZhaWxhYmxlLgorICogVXNlIGdldFRpbWVJbnN0YW5jZSB0byBnZXQgdGhlIHRpbWUgZm9ybWF0IGZvciB0aGF0IGNvdW50cnkuCisgKiBVc2UgZ2V0RGF0ZVRpbWVJbnN0YW5jZSB0byBnZXQgYSBkYXRlIGFuZCB0aW1lIGZvcm1hdC4gWW91IGNhbiBwYXNzIGluIAorICogZGlmZmVyZW50IG9wdGlvbnMgdG8gdGhlc2UgZmFjdG9yeSBtZXRob2RzIHRvIGNvbnRyb2wgdGhlIGxlbmd0aCBvZiB0aGUKKyAqIHJlc3VsdDsgZnJvbSBTSE9SVCB0byBNRURJVU0gdG8gTE9ORyB0byBGVUxMLiBUaGUgZXhhY3QgcmVzdWx0IGRlcGVuZHMKKyAqIG9uIHRoZSBsb2NhbGUsIGJ1dCBnZW5lcmFsbHk6CisgKiA8dWw+PGxpPlNIT1JUIGlzIGNvbXBsZXRlbHkgbnVtZXJpYywgc3VjaCBhcyAxMi4xMy41MiBvciAzOjMwcG0KKyAqIDxsaT5NRURJVU0gaXMgbG9uZ2VyLCBzdWNoIGFzIEphbiAxMiwgMTk1MgorICogPGxpPkxPTkcgaXMgbG9uZ2VyLCBzdWNoIGFzIEphbnVhcnkgMTIsIDE5NTIgb3IgMzozMDozMnBtCisgKiA8bGk+RlVMTCBpcyBwcmV0dHkgY29tcGxldGVseSBzcGVjaWZpZWQsIHN1Y2ggYXMKKyAqIFR1ZXNkYXksIEFwcmlsIDEyLCAxOTUyIEFEIG9yIDM6MzA6NDJwbSBQU1QuCisgKiA8L3VsPgorICoKKyAqIDxwPllvdSBjYW4gYWxzbyBzZXQgdGhlIHRpbWUgem9uZSBvbiB0aGUgZm9ybWF0IGlmIHlvdSB3aXNoLgorICogSWYgeW91IHdhbnQgZXZlbiBtb3JlIGNvbnRyb2wgb3ZlciB0aGUgZm9ybWF0IG9yIHBhcnNpbmcsCisgKiAob3Igd2FudCB0byBnaXZlIHlvdXIgdXNlcnMgbW9yZSBjb250cm9sKSwKKyAqIHlvdSBjYW4gdHJ5IGNhc3RpbmcgdGhlIERhdGVGb3JtYXQgeW91IGdldCBmcm9tIHRoZSBmYWN0b3J5IG1ldGhvZHMKKyAqIHRvIGEgU2ltcGxlRGF0ZUZvcm1hdC4gVGhpcyB3aWxsIHdvcmsgZm9yIHRoZSBtYWpvcml0eQorICogb2YgY291bnRyaWVzOyBqdXN0IHJlbWVtYmVyIHRvIHB1dCBpdCBpbiBhIHRyeSBibG9jayBpbiBjYXNlIHlvdQorICogZW5jb3VudGVyIGFuIHVudXN1YWwgb25lLgorICoKKyAqIDxwPllvdSBjYW4gYWxzbyB1c2UgZm9ybXMgb2YgdGhlIHBhcnNlIGFuZCBmb3JtYXQgbWV0aG9kcyB3aXRoCisgKiBQYXJzZVBvc2l0aW9uIGFuZCBGaWVsZFBvc2l0aW9uIHRvCisgKiBhbGxvdyB5b3UgdG8KKyAqIDx1bD48bGk+cHJvZ3Jlc3NpdmVseSBwYXJzZSB0aHJvdWdoIHBpZWNlcyBvZiBhIHN0cmluZy4KKyAqIDxsaT5hbGlnbiBhbnkgcGFydGljdWxhciBmaWVsZCwgb3IgZmluZCBvdXQgd2hlcmUgaXQgaXMgZm9yIHNlbGVjdGlvbgorICogb24gdGhlIHNjcmVlbi4KKyAqIDwvdWw+CisgKgorICogPGg0PlN5bmNocm9uaXphdGlvbjwvaDQ+CisgKgorICogRGF0ZSBmb3JtYXRzIGFyZSBub3Qgc3luY2hyb25pemVkLiBJdCBpcyByZWNvbW1lbmRlZCB0byBjcmVhdGUgc2VwYXJhdGUgCisgKiBmb3JtYXQgaW5zdGFuY2VzIGZvciBlYWNoIHRocmVhZC4gSWYgbXVsdGlwbGUgdGhyZWFkcyBhY2Nlc3MgYSBmb3JtYXQgCisgKiBjb25jdXJyZW50bHksIGl0IG11c3QgYmUgc3luY2hyb25pemVkIGV4dGVybmFsbHkuIAorICoKKyAqIEBzZWUgICAgICAgICAgRm9ybWF0CisgKiBAc2VlICAgICAgICAgIE51bWJlckZvcm1hdAorICogQHNlZSAgICAgICAgICBTaW1wbGVEYXRlRm9ybWF0CisgKiBAc2VlICAgICAgICAgIGNvbS5pYm0uaWN1LnV0aWwuQ2FsZW5kYXIKKyAqIEBzZWUgICAgICAgICAgY29tLmlibS5pY3UudXRpbC5HcmVnb3JpYW5DYWxlbmRhcgorICogQHNlZSAgICAgICAgICBjb20uaWJtLmljdS51dGlsLlRpbWVab25lCisgKiBAYXV0aG9yICAgICAgIE1hcmsgRGF2aXMsIENoZW4tTGllaCBIdWFuZywgQWxhbiBMaXUKKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgRGF0ZUZvcm1hdCBleHRlbmRzIEZvcm1hdCB7CisKKyAgICAvKioKKyAgICAgKiBUaGUgY2FsZW5kYXIgdGhhdCA8Y29kZT5EYXRlRm9ybWF0PC9jb2RlPiB1c2VzIHRvIHByb2R1Y2UgdGhlIHRpbWUgZmllbGQKKyAgICAgKiB2YWx1ZXMgbmVlZGVkIHRvIGltcGxlbWVudCBkYXRlIGFuZCB0aW1lIGZvcm1hdHRpbmcuICBTdWJjbGFzc2VzIHNob3VsZAorICAgICAqIGluaXRpYWxpemUgdGhpcyB0byBhIGNhbGVuZGFyIGFwcHJvcHJpYXRlIGZvciB0aGUgbG9jYWxlIGFzc29jaWF0ZWQgd2l0aAorICAgICAqIHRoaXMgPGNvZGU+RGF0ZUZvcm1hdDwvY29kZT4uCisgICAgICogQHNlcmlhbAorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHByb3RlY3RlZCBDYWxlbmRhciBjYWxlbmRhcjsKKworICAgIC8qKgorICAgICAqIFRoZSBudW1iZXIgZm9ybWF0dGVyIHRoYXQgPGNvZGU+RGF0ZUZvcm1hdDwvY29kZT4gdXNlcyB0byBmb3JtYXQgbnVtYmVycworICAgICAqIGluIGRhdGVzIGFuZCB0aW1lcy4gIFN1YmNsYXNzZXMgc2hvdWxkIGluaXRpYWxpemUgdGhpcyB0byBhIG51bWJlciBmb3JtYXQKKyAgICAgKiBhcHByb3ByaWF0ZSBmb3IgdGhlIGxvY2FsZSBhc3NvY2lhdGVkIHdpdGggdGhpcyA8Y29kZT5EYXRlRm9ybWF0PC9jb2RlPi4KKyAgICAgKiBAc2VyaWFsCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHJvdGVjdGVkIE51bWJlckZvcm1hdCBudW1iZXJGb3JtYXQ7CisKKyAgICAvKioKKyAgICAgKiBVc2VmdWwgY29uc3RhbnQgZm9yIEVSQSBmaWVsZCBhbGlnbm1lbnQuCisgICAgICogVXNlZCBpbiBGaWVsZFBvc2l0aW9uIG9mIGRhdGUvdGltZSBmb3JtYXR0aW5nLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IEVSQV9GSUVMRCA9IDA7CisKKyAgICAvKioKKyAgICAgKiBVc2VmdWwgY29uc3RhbnQgZm9yIFlFQVIgZmllbGQgYWxpZ25tZW50LgorICAgICAqIFVzZWQgaW4gRmllbGRQb3NpdGlvbiBvZiBkYXRlL3RpbWUgZm9ybWF0dGluZy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBZRUFSX0ZJRUxEID0gMTsKKworICAgIC8qKgorICAgICAqIFVzZWZ1bCBjb25zdGFudCBmb3IgTU9OVEggZmllbGQgYWxpZ25tZW50LgorICAgICAqIFVzZWQgaW4gRmllbGRQb3NpdGlvbiBvZiBkYXRlL3RpbWUgZm9ybWF0dGluZy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBNT05USF9GSUVMRCA9IDI7CisKKyAgICAvKioKKyAgICAgKiBVc2VmdWwgY29uc3RhbnQgZm9yIERBVEUgZmllbGQgYWxpZ25tZW50LgorICAgICAqIFVzZWQgaW4gRmllbGRQb3NpdGlvbiBvZiBkYXRlL3RpbWUgZm9ybWF0dGluZy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBEQVRFX0ZJRUxEID0gMzsKKworICAgIC8qKgorICAgICAqIFVzZWZ1bCBjb25zdGFudCBmb3Igb25lLWJhc2VkIEhPVVJfT0ZfREFZIGZpZWxkIGFsaWdubWVudC4KKyAgICAgKiBVc2VkIGluIEZpZWxkUG9zaXRpb24gb2YgZGF0ZS90aW1lIGZvcm1hdHRpbmcuCisgICAgICogSE9VUl9PRl9EQVkxX0ZJRUxEIGlzIHVzZWQgZm9yIHRoZSBvbmUtYmFzZWQgMjQtaG91ciBjbG9jay4KKyAgICAgKiBGb3IgZXhhbXBsZSwgMjM6NTkgKyAwMTowMCByZXN1bHRzIGluIDI0OjU5LgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IEhPVVJfT0ZfREFZMV9GSUVMRCA9IDQ7CisKKyAgICAvKioKKyAgICAgKiBVc2VmdWwgY29uc3RhbnQgZm9yIHplcm8tYmFzZWQgSE9VUl9PRl9EQVkgZmllbGQgYWxpZ25tZW50LgorICAgICAqIFVzZWQgaW4gRmllbGRQb3NpdGlvbiBvZiBkYXRlL3RpbWUgZm9ybWF0dGluZy4KKyAgICAgKiBIT1VSX09GX0RBWTBfRklFTEQgaXMgdXNlZCBmb3IgdGhlIHplcm8tYmFzZWQgMjQtaG91ciBjbG9jay4KKyAgICAgKiBGb3IgZXhhbXBsZSwgMjM6NTkgKyAwMTowMCByZXN1bHRzIGluIDAwOjU5LgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IEhPVVJfT0ZfREFZMF9GSUVMRCA9IDU7CisKKyAgICAvKioKKyAgICAgKiBVc2VmdWwgY29uc3RhbnQgZm9yIE1JTlVURSBmaWVsZCBhbGlnbm1lbnQuCisgICAgICogVXNlZCBpbiBGaWVsZFBvc2l0aW9uIG9mIGRhdGUvdGltZSBmb3JtYXR0aW5nLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IE1JTlVURV9GSUVMRCA9IDY7CisKKyAgICAvKioKKyAgICAgKiBVc2VmdWwgY29uc3RhbnQgZm9yIFNFQ09ORCBmaWVsZCBhbGlnbm1lbnQuCisgICAgICogVXNlZCBpbiBGaWVsZFBvc2l0aW9uIG9mIGRhdGUvdGltZSBmb3JtYXR0aW5nLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IFNFQ09ORF9GSUVMRCA9IDc7CisKKyAgICAvKioKKyAgICAgKiBVc2VmdWwgY29uc3RhbnQgZm9yIE1JTExJU0VDT05EIGZpZWxkIGFsaWdubWVudC4KKyAgICAgKiBVc2VkIGluIEZpZWxkUG9zaXRpb24gb2YgZGF0ZS90aW1lIGZvcm1hdHRpbmcuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgTUlMTElTRUNPTkRfRklFTEQgPSA4OworCisgICAgLyoqCisgICAgICogVXNlZnVsIGNvbnN0YW50IGZvciBEQVlfT0ZfV0VFSyBmaWVsZCBhbGlnbm1lbnQuCisgICAgICogVXNlZCBpbiBGaWVsZFBvc2l0aW9uIG9mIGRhdGUvdGltZSBmb3JtYXR0aW5nLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IERBWV9PRl9XRUVLX0ZJRUxEID0gOTsKKworICAgIC8qKgorICAgICAqIFVzZWZ1bCBjb25zdGFudCBmb3IgREFZX09GX1lFQVIgZmllbGQgYWxpZ25tZW50LgorICAgICAqIFVzZWQgaW4gRmllbGRQb3NpdGlvbiBvZiBkYXRlL3RpbWUgZm9ybWF0dGluZy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBEQVlfT0ZfWUVBUl9GSUVMRCA9IDEwOworCisgICAgLyoqCisgICAgICogVXNlZnVsIGNvbnN0YW50IGZvciBEQVlfT0ZfV0VFS19JTl9NT05USCBmaWVsZCBhbGlnbm1lbnQuCisgICAgICogVXNlZCBpbiBGaWVsZFBvc2l0aW9uIG9mIGRhdGUvdGltZSBmb3JtYXR0aW5nLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IERBWV9PRl9XRUVLX0lOX01PTlRIX0ZJRUxEID0gMTE7CisKKyAgICAvKioKKyAgICAgKiBVc2VmdWwgY29uc3RhbnQgZm9yIFdFRUtfT0ZfWUVBUiBmaWVsZCBhbGlnbm1lbnQuCisgICAgICogVXNlZCBpbiBGaWVsZFBvc2l0aW9uIG9mIGRhdGUvdGltZSBmb3JtYXR0aW5nLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IFdFRUtfT0ZfWUVBUl9GSUVMRCA9IDEyOworCisgICAgLyoqCisgICAgICogVXNlZnVsIGNvbnN0YW50IGZvciBXRUVLX09GX01PTlRIIGZpZWxkIGFsaWdubWVudC4KKyAgICAgKiBVc2VkIGluIEZpZWxkUG9zaXRpb24gb2YgZGF0ZS90aW1lIGZvcm1hdHRpbmcuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgV0VFS19PRl9NT05USF9GSUVMRCA9IDEzOworCisgICAgLyoqCisgICAgICogVXNlZnVsIGNvbnN0YW50IGZvciBBTV9QTSBmaWVsZCBhbGlnbm1lbnQuCisgICAgICogVXNlZCBpbiBGaWVsZFBvc2l0aW9uIG9mIGRhdGUvdGltZSBmb3JtYXR0aW5nLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IEFNX1BNX0ZJRUxEID0gMTQ7CisKKyAgICAvKioKKyAgICAgKiBVc2VmdWwgY29uc3RhbnQgZm9yIG9uZS1iYXNlZCBIT1VSIGZpZWxkIGFsaWdubWVudC4KKyAgICAgKiBVc2VkIGluIEZpZWxkUG9zaXRpb24gb2YgZGF0ZS90aW1lIGZvcm1hdHRpbmcuCisgICAgICogSE9VUjFfRklFTEQgaXMgdXNlZCBmb3IgdGhlIG9uZS1iYXNlZCAxMi1ob3VyIGNsb2NrLgorICAgICAqIEZvciBleGFtcGxlLCAxMTozMCBQTSArIDEgaG91ciByZXN1bHRzIGluIDEyOjMwIEFNLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IEhPVVIxX0ZJRUxEID0gMTU7CisKKyAgICAvKioKKyAgICAgKiBVc2VmdWwgY29uc3RhbnQgZm9yIHplcm8tYmFzZWQgSE9VUiBmaWVsZCBhbGlnbm1lbnQuCisgICAgICogVXNlZCBpbiBGaWVsZFBvc2l0aW9uIG9mIGRhdGUvdGltZSBmb3JtYXR0aW5nLgorICAgICAqIEhPVVIwX0ZJRUxEIGlzIHVzZWQgZm9yIHRoZSB6ZXJvLWJhc2VkIDEyLWhvdXIgY2xvY2suCisgICAgICogRm9yIGV4YW1wbGUsIDExOjMwIFBNICsgMSBob3VyIHJlc3VsdHMgaW4gMDA6MzAgQU0uCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgSE9VUjBfRklFTEQgPSAxNjsKKworICAgIC8qKgorICAgICAqIFVzZWZ1bCBjb25zdGFudCBmb3IgVElNRVpPTkUgZmllbGQgYWxpZ25tZW50LgorICAgICAqIFVzZWQgaW4gRmllbGRQb3NpdGlvbiBvZiBkYXRlL3RpbWUgZm9ybWF0dGluZy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBUSU1FWk9ORV9GSUVMRCA9IDE3OworCisgICAgLy8gUHJvY2xhaW0gc2VyaWFsIGNvbXBhdGliaWxpdHkgd2l0aCAxLjEgRkNTCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gNzIxODMyMjMwNjY0OTk1Mzc4OEw7CisKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZXMgRm9ybWF0LgorICAgICAqIEZvcm1hdHMgYSB0aW1lIG9iamVjdCBpbnRvIGEgdGltZSBzdHJpbmcuIEV4YW1wbGVzIG9mIHRpbWUgb2JqZWN0cworICAgICAqIGFyZSBhIHRpbWUgdmFsdWUgZXhwcmVzc2VkIGluIG1pbGxpc2Vjb25kcyBhbmQgYSBEYXRlIG9iamVjdC4KKyAgICAgKiBAcGFyYW0gb2JqIG11c3QgYmUgYSBOdW1iZXIgb3IgYSBEYXRlIG9yIGEgQ2FsZW5kYXIuCisgICAgICogQHBhcmFtIHRvQXBwZW5kVG8gdGhlIHN0cmluZyBidWZmZXIgZm9yIHRoZSByZXR1cm5pbmcgdGltZSBzdHJpbmcuCisgICAgICogQHJldHVybiB0aGUgZm9ybWF0dGVkIHRpbWUgc3RyaW5nLgorICAgICAqIEBwYXJhbSBmaWVsZFBvc2l0aW9uIGtlZXBzIHRyYWNrIG9mIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmllbGQKKyAgICAgKiB3aXRoaW4gdGhlIHJldHVybmVkIHN0cmluZy4KKyAgICAgKiBPbiBpbnB1dDogYW4gYWxpZ25tZW50IGZpZWxkLAorICAgICAqIGlmIGRlc2lyZWQuIE9uIG91dHB1dDogdGhlIG9mZnNldHMgb2YgdGhlIGFsaWdubWVudCBmaWVsZC4gRm9yCisgICAgICogZXhhbXBsZSwgZ2l2ZW4gYSB0aW1lIHRleHQgIjE5OTYuMDcuMTAgQUQgYXQgMTU6MDg6NTYgUERUIiwKKyAgICAgKiBpZiB0aGUgZ2l2ZW4gZmllbGRQb3NpdGlvbiBpcyBEYXRlRm9ybWF0LllFQVJfRklFTEQsIHRoZQorICAgICAqIGJlZ2luIGluZGV4IGFuZCBlbmQgaW5kZXggb2YgZmllbGRQb3NpdGlvbiB3aWxsIGJlIHNldCB0bworICAgICAqIDAgYW5kIDQsIHJlc3BlY3RpdmVseS4KKyAgICAgKiBOb3RpY2UgdGhhdCBpZiB0aGUgc2FtZSB0aW1lIGZpZWxkIGFwcGVhcnMKKyAgICAgKiBtb3JlIHRoYW4gb25jZSBpbiBhIHBhdHRlcm4sIHRoZSBmaWVsZFBvc2l0aW9uIHdpbGwgYmUgc2V0IGZvciB0aGUgZmlyc3QKKyAgICAgKiBvY2N1cmVuY2Ugb2YgdGhhdCB0aW1lIGZpZWxkLiBGb3IgaW5zdGFuY2UsIGZvcm1hdHRpbmcgYSBEYXRlIHRvCisgICAgICogdGhlIHRpbWUgc3RyaW5nICIxIFBNIFBEVCAoUGFjaWZpYyBEYXlsaWdodCBUaW1lKSIgdXNpbmcgdGhlIHBhdHRlcm4KKyAgICAgKiAiaCBhIHogKHp6enopIiBhbmQgdGhlIGFsaWdubWVudCBmaWVsZCBEYXRlRm9ybWF0LlRJTUVaT05FX0ZJRUxELAorICAgICAqIHRoZSBiZWdpbiBpbmRleCBhbmQgZW5kIGluZGV4IG9mIGZpZWxkUG9zaXRpb24gd2lsbCBiZSBzZXQgdG8KKyAgICAgKiA1IGFuZCA4LCByZXNwZWN0aXZlbHksIGZvciB0aGUgZmlyc3Qgb2NjdXJlbmNlIG9mIHRoZSB0aW1lem9uZQorICAgICAqIHBhdHRlcm4gY2hhcmFjdGVyICd6Jy4KKyAgICAgKiBAc2VlIGphdmEudGV4dC5Gb3JtYXQKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgU3RyaW5nQnVmZmVyIGZvcm1hdChPYmplY3Qgb2JqLCBTdHJpbmdCdWZmZXIgdG9BcHBlbmRUbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFBvc2l0aW9uIGZpZWxkUG9zaXRpb24pCisgICAgeworICAgICAgICBpZiAob2JqIGluc3RhbmNlb2YgQ2FsZW5kYXIpCisgICAgICAgICAgICByZXR1cm4gZm9ybWF0KCAoQ2FsZW5kYXIpb2JqLCB0b0FwcGVuZFRvLCBmaWVsZFBvc2l0aW9uICk7CisgICAgICAgIGVsc2UgaWYgKG9iaiBpbnN0YW5jZW9mIERhdGUpCisgICAgICAgICAgICByZXR1cm4gZm9ybWF0KCAoRGF0ZSlvYmosIHRvQXBwZW5kVG8sIGZpZWxkUG9zaXRpb24gKTsKKyAgICAgICAgZWxzZSBpZiAob2JqIGluc3RhbmNlb2YgTnVtYmVyKQorICAgICAgICAgICAgcmV0dXJuIGZvcm1hdCggbmV3IERhdGUoKChOdW1iZXIpb2JqKS5sb25nVmFsdWUoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRvQXBwZW5kVG8sIGZpZWxkUG9zaXRpb24gKTsKKyAgICAgICAgZWxzZSAKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkNhbm5vdCBmb3JtYXQgZ2l2ZW4gT2JqZWN0IGFzIGEgRGF0ZSIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEZvcm1hdHMgYSBkYXRlIGludG8gYSBkYXRlL3RpbWUgc3RyaW5nLgorICAgICAqIEBwYXJhbSBjYWwgYSBDYWxlbmRhciBzZXQgdG8gdGhlIGRhdGUgYW5kIHRpbWUgdG8gYmUgZm9ybWF0dGVkCisgICAgICogaW50byBhIGRhdGUvdGltZSBzdHJpbmcuCisgICAgICogQHBhcmFtIHRvQXBwZW5kVG8gdGhlIHN0cmluZyBidWZmZXIgZm9yIHRoZSByZXR1cm5pbmcgZGF0ZS90aW1lIHN0cmluZy4KKyAgICAgKiBAcGFyYW0gZmllbGRQb3NpdGlvbiBrZWVwcyB0cmFjayBvZiB0aGUgcG9zaXRpb24gb2YgdGhlIGZpZWxkCisgICAgICogd2l0aGluIHRoZSByZXR1cm5lZCBzdHJpbmcuCisgICAgICogT24gaW5wdXQ6IGFuIGFsaWdubWVudCBmaWVsZCwKKyAgICAgKiBpZiBkZXNpcmVkLiBPbiBvdXRwdXQ6IHRoZSBvZmZzZXRzIG9mIHRoZSBhbGlnbm1lbnQgZmllbGQuIEZvcgorICAgICAqIGV4YW1wbGUsIGdpdmVuIGEgdGltZSB0ZXh0ICIxOTk2LjA3LjEwIEFEIGF0IDE1OjA4OjU2IFBEVCIsCisgICAgICogaWYgdGhlIGdpdmVuIGZpZWxkUG9zaXRpb24gaXMgRGF0ZUZvcm1hdC5ZRUFSX0ZJRUxELCB0aGUKKyAgICAgKiBiZWdpbiBpbmRleCBhbmQgZW5kIGluZGV4IG9mIGZpZWxkUG9zaXRpb24gd2lsbCBiZSBzZXQgdG8KKyAgICAgKiAwIGFuZCA0LCByZXNwZWN0aXZlbHkuCisgICAgICogTm90aWNlIHRoYXQgaWYgdGhlIHNhbWUgdGltZSBmaWVsZCBhcHBlYXJzCisgICAgICogbW9yZSB0aGFuIG9uY2UgaW4gYSBwYXR0ZXJuLCB0aGUgZmllbGRQb3NpdGlvbiB3aWxsIGJlIHNldCBmb3IgdGhlIGZpcnN0CisgICAgICogb2NjdXJlbmNlIG9mIHRoYXQgdGltZSBmaWVsZC4gRm9yIGluc3RhbmNlLCBmb3JtYXR0aW5nIGEgRGF0ZSB0bworICAgICAqIHRoZSB0aW1lIHN0cmluZyAiMSBQTSBQRFQgKFBhY2lmaWMgRGF5bGlnaHQgVGltZSkiIHVzaW5nIHRoZSBwYXR0ZXJuCisgICAgICogImggYSB6ICh6enp6KSIgYW5kIHRoZSBhbGlnbm1lbnQgZmllbGQgRGF0ZUZvcm1hdC5USU1FWk9ORV9GSUVMRCwKKyAgICAgKiB0aGUgYmVnaW4gaW5kZXggYW5kIGVuZCBpbmRleCBvZiBmaWVsZFBvc2l0aW9uIHdpbGwgYmUgc2V0IHRvCisgICAgICogNSBhbmQgOCwgcmVzcGVjdGl2ZWx5LCBmb3IgdGhlIGZpcnN0IG9jY3VyZW5jZSBvZiB0aGUgdGltZXpvbmUKKyAgICAgKiBwYXR0ZXJuIGNoYXJhY3RlciAneicuCisgICAgICogQHJldHVybiB0aGUgZm9ybWF0dGVkIGRhdGUvdGltZSBzdHJpbmcuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IFN0cmluZ0J1ZmZlciBmb3JtYXQoQ2FsZW5kYXIgY2FsLCBTdHJpbmdCdWZmZXIgdG9BcHBlbmRUbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFBvc2l0aW9uIGZpZWxkUG9zaXRpb24pOworCisgICAgLyoqCisgICAgICogRm9ybWF0cyBhIERhdGUgaW50byBhIGRhdGUvdGltZSBzdHJpbmcuCisgICAgICogQHBhcmFtIGRhdGUgYSBEYXRlIHRvIGJlIGZvcm1hdHRlZCBpbnRvIGEgZGF0ZS90aW1lIHN0cmluZy4KKyAgICAgKiBAcGFyYW0gdG9BcHBlbmRUbyB0aGUgc3RyaW5nIGJ1ZmZlciBmb3IgdGhlIHJldHVybmluZyBkYXRlL3RpbWUgc3RyaW5nLgorICAgICAqIEBwYXJhbSBmaWVsZFBvc2l0aW9uIGtlZXBzIHRyYWNrIG9mIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmllbGQKKyAgICAgKiB3aXRoaW4gdGhlIHJldHVybmVkIHN0cmluZy4KKyAgICAgKiBPbiBpbnB1dDogYW4gYWxpZ25tZW50IGZpZWxkLAorICAgICAqIGlmIGRlc2lyZWQuIE9uIG91dHB1dDogdGhlIG9mZnNldHMgb2YgdGhlIGFsaWdubWVudCBmaWVsZC4gRm9yCisgICAgICogZXhhbXBsZSwgZ2l2ZW4gYSB0aW1lIHRleHQgIjE5OTYuMDcuMTAgQUQgYXQgMTU6MDg6NTYgUERUIiwKKyAgICAgKiBpZiB0aGUgZ2l2ZW4gZmllbGRQb3NpdGlvbiBpcyBEYXRlRm9ybWF0LllFQVJfRklFTEQsIHRoZQorICAgICAqIGJlZ2luIGluZGV4IGFuZCBlbmQgaW5kZXggb2YgZmllbGRQb3NpdGlvbiB3aWxsIGJlIHNldCB0bworICAgICAqIDAgYW5kIDQsIHJlc3BlY3RpdmVseS4KKyAgICAgKiBOb3RpY2UgdGhhdCBpZiB0aGUgc2FtZSB0aW1lIGZpZWxkIGFwcGVhcnMKKyAgICAgKiBtb3JlIHRoYW4gb25jZSBpbiBhIHBhdHRlcm4sIHRoZSBmaWVsZFBvc2l0aW9uIHdpbGwgYmUgc2V0IGZvciB0aGUgZmlyc3QKKyAgICAgKiBvY2N1cmVuY2Ugb2YgdGhhdCB0aW1lIGZpZWxkLiBGb3IgaW5zdGFuY2UsIGZvcm1hdHRpbmcgYSBEYXRlIHRvCisgICAgICogdGhlIHRpbWUgc3RyaW5nICIxIFBNIFBEVCAoUGFjaWZpYyBEYXlsaWdodCBUaW1lKSIgdXNpbmcgdGhlIHBhdHRlcm4KKyAgICAgKiAiaCBhIHogKHp6enopIiBhbmQgdGhlIGFsaWdubWVudCBmaWVsZCBEYXRlRm9ybWF0LlRJTUVaT05FX0ZJRUxELAorICAgICAqIHRoZSBiZWdpbiBpbmRleCBhbmQgZW5kIGluZGV4IG9mIGZpZWxkUG9zaXRpb24gd2lsbCBiZSBzZXQgdG8KKyAgICAgKiA1IGFuZCA4LCByZXNwZWN0aXZlbHksIGZvciB0aGUgZmlyc3Qgb2NjdXJlbmNlIG9mIHRoZSB0aW1lem9uZQorICAgICAqIHBhdHRlcm4gY2hhcmFjdGVyICd6Jy4KKyAgICAgKiBAcmV0dXJuIHRoZSBmb3JtYXR0ZWQgZGF0ZS90aW1lIHN0cmluZy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgU3RyaW5nQnVmZmVyIGZvcm1hdChEYXRlIGRhdGUsIFN0cmluZ0J1ZmZlciB0b0FwcGVuZFRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkUG9zaXRpb24gZmllbGRQb3NpdGlvbikgeworICAgICAgICAvLyBVc2Ugb3VyIENhbGVuZGFyIG9iamVjdAorICAgICAgICBjYWxlbmRhci5zZXRUaW1lKGRhdGUpOworICAgICAgICByZXR1cm4gZm9ybWF0KGNhbGVuZGFyLCB0b0FwcGVuZFRvLCBmaWVsZFBvc2l0aW9uKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBGb3JtYXRzIGEgRGF0ZSBpbnRvIGEgZGF0ZS90aW1lIHN0cmluZy4KKyAgICAgKiBAcGFyYW0gZGF0ZSB0aGUgdGltZSB2YWx1ZSB0byBiZSBmb3JtYXR0ZWQgaW50byBhIHRpbWUgc3RyaW5nLgorICAgICAqIEByZXR1cm4gdGhlIGZvcm1hdHRlZCB0aW1lIHN0cmluZy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgU3RyaW5nIGZvcm1hdChEYXRlIGRhdGUpCisgICAgeworICAgICAgICByZXR1cm4gZm9ybWF0KGRhdGUsIG5ldyBTdHJpbmdCdWZmZXIoKSxuZXcgRmllbGRQb3NpdGlvbigwKSkudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQYXJzZSBhIGRhdGUvdGltZSBzdHJpbmcuCisgICAgICoKKyAgICAgKiBAcGFyYW0gdGV4dCAgVGhlIGRhdGUvdGltZSBzdHJpbmcgdG8gYmUgcGFyc2VkCisgICAgICoKKyAgICAgKiBAcmV0dXJuICAgICAgQSBEYXRlLCBvciBudWxsIGlmIHRoZSBpbnB1dCBjb3VsZCBub3QgYmUgcGFyc2VkCisgICAgICoKKyAgICAgKiBAZXhjZXB0aW9uICBQYXJzZUV4Y2VwdGlvbiAgSWYgdGhlIGdpdmVuIHN0cmluZyBjYW5ub3QgYmUgcGFyc2VkIGFzIGEgZGF0ZS4KKyAgICAgKgorICAgICAqIEBzZWUgI3BhcnNlKFN0cmluZywgUGFyc2VQb3NpdGlvbikKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgRGF0ZSBwYXJzZShTdHJpbmcgdGV4dCkgdGhyb3dzIFBhcnNlRXhjZXB0aW9uCisgICAgeworICAgICAgICBQYXJzZVBvc2l0aW9uIHBvcyA9IG5ldyBQYXJzZVBvc2l0aW9uKDApOworICAgICAgICBEYXRlIHJlc3VsdCA9IHBhcnNlKHRleHQsIHBvcyk7CisgICAgICAgIGlmIChwb3MuZ2V0SW5kZXgoKSA9PSAwKSAvLyBJQ1U0SgorICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnNlRXhjZXB0aW9uKCJVbnBhcnNlYWJsZSBkYXRlOiBcIiIgKyB0ZXh0ICsgIlwiIiAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zLmdldEVycm9ySW5kZXgoKSk7IC8vIElDVTRKCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogUGFyc2UgYSBkYXRlL3RpbWUgc3RyaW5nIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gcGFyc2UgcG9zaXRpb24uCisgICAgICogRm9yIGV4YW1wbGUsIGEgdGltZSB0ZXh0ICIwNy8xMC85NiA0OjUgUE0sIFBEVCIgd2lsbCBiZSBwYXJzZWQKKyAgICAgKiBpbnRvIGEgQ2FsZW5kYXIgdGhhdCBpcyBlcXVpdmFsZW50IHRvIERhdGUoODM3MDM5OTI4MDQ2KS4gIFRoZQorICAgICAqIGNhbGxlciBzaG91bGQgY2xlYXIgdGhlIGNhbGVuZGFyIGJlZm9yZSBjYWxsaW5nIHRoaXMgbWV0aG9kLAorICAgICAqIHVubGVzcyBleGlzdGluZyBmaWVsZCBpbmZvcm1hdGlvbiBpcyB0byBiZSBrZXB0LgorICAgICAqCisgICAgICogPHA+IEJ5IGRlZmF1bHQsIHBhcnNpbmcgaXMgbGVuaWVudDogSWYgdGhlIGlucHV0IGlzIG5vdCBpbiB0aGUgZm9ybSB1c2VkCisgICAgICogYnkgdGhpcyBvYmplY3QncyBmb3JtYXQgbWV0aG9kIGJ1dCBjYW4gc3RpbGwgYmUgcGFyc2VkIGFzIGEgZGF0ZSwgdGhlbgorICAgICAqIHRoZSBwYXJzZSBzdWNjZWVkcy4gIENsaWVudHMgbWF5IGluc2lzdCBvbiBzdHJpY3QgYWRoZXJlbmNlIHRvIHRoZQorICAgICAqIGZvcm1hdCBieSBjYWxsaW5nIHNldExlbmllbnQoZmFsc2UpLgorICAgICAqCisgICAgICogQHNlZSAjc2V0TGVuaWVudChib29sZWFuKQorICAgICAqCisgICAgICogQHBhcmFtIHRleHQgIFRoZSBkYXRlL3RpbWUgc3RyaW5nIHRvIGJlIHBhcnNlZAorICAgICAqCisgICAgICogQHBhcmFtIGNhbCAgIFRoZSBjYWxlbmRhciBpbnRvIHdoaWNoIHBhcnNlZCBkYXRhIHdpbGwgYmUgc3RvcmVkLgorICAgICAqICAgICAgICAgICAgICBJbiBnZW5lcmFsLCB0aGlzIHNob3VsZCBiZSBjbGVhcmVkIGJlZm9yZSBjYWxsaW5nIHRoaXMKKyAgICAgKiAgICAgICAgICAgICAgbWV0aG9kLiAgSWYgdGhpcyBwYXJzZSBmYWlscywgdGhlIGNhbGVuZGFyIG1heSBzdGlsbAorICAgICAqICAgICAgICAgICAgICBoYXZlIGJlZW4gbW9kaWZpZWQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gcG9zICAgT24gaW5wdXQsIHRoZSBwb3NpdGlvbiBhdCB3aGljaCB0byBzdGFydCBwYXJzaW5nOyBvbgorICAgICAqICAgICAgICAgICAgICBvdXRwdXQsIHRoZSBwb3NpdGlvbiBhdCB3aGljaCBwYXJzaW5nIHRlcm1pbmF0ZWQsIG9yIHRoZQorICAgICAqICAgICAgICAgICAgICBzdGFydCBwb3NpdGlvbiBpZiB0aGUgcGFyc2UgZmFpbGVkLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIHBhcnNlKFN0cmluZyB0ZXh0LCBDYWxlbmRhciBjYWwsIFBhcnNlUG9zaXRpb24gcG9zKTsKKworICAgIC8qKgorICAgICAqIFBhcnNlIGEgZGF0ZS90aW1lIHN0cmluZyBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIHBhcnNlIHBvc2l0aW9uLiAgRm9yCisgICAgICogZXhhbXBsZSwgYSB0aW1lIHRleHQgIjA3LzEwLzk2IDQ6NSBQTSwgUERUIiB3aWxsIGJlIHBhcnNlZCBpbnRvIGEgRGF0ZQorICAgICAqIHRoYXQgaXMgZXF1aXZhbGVudCB0byBEYXRlKDgzNzAzOTkyODA0NikuCisgICAgICoKKyAgICAgKiA8cD4gQnkgZGVmYXVsdCwgcGFyc2luZyBpcyBsZW5pZW50OiBJZiB0aGUgaW5wdXQgaXMgbm90IGluIHRoZSBmb3JtIHVzZWQKKyAgICAgKiBieSB0aGlzIG9iamVjdCdzIGZvcm1hdCBtZXRob2QgYnV0IGNhbiBzdGlsbCBiZSBwYXJzZWQgYXMgYSBkYXRlLCB0aGVuCisgICAgICogdGhlIHBhcnNlIHN1Y2NlZWRzLiAgQ2xpZW50cyBtYXkgaW5zaXN0IG9uIHN0cmljdCBhZGhlcmVuY2UgdG8gdGhlCisgICAgICogZm9ybWF0IGJ5IGNhbGxpbmcgc2V0TGVuaWVudChmYWxzZSkuCisgICAgICoKKyAgICAgKiBAc2VlICNzZXRMZW5pZW50KGJvb2xlYW4pCisgICAgICoKKyAgICAgKiBAcGFyYW0gdGV4dCAgVGhlIGRhdGUvdGltZSBzdHJpbmcgdG8gYmUgcGFyc2VkCisgICAgICoKKyAgICAgKiBAcGFyYW0gcG9zICAgT24gaW5wdXQsIHRoZSBwb3NpdGlvbiBhdCB3aGljaCB0byBzdGFydCBwYXJzaW5nOyBvbgorICAgICAqICAgICAgICAgICAgICBvdXRwdXQsIHRoZSBwb3NpdGlvbiBhdCB3aGljaCBwYXJzaW5nIHRlcm1pbmF0ZWQsIG9yIHRoZQorICAgICAqICAgICAgICAgICAgICBzdGFydCBwb3NpdGlvbiBpZiB0aGUgcGFyc2UgZmFpbGVkLgorICAgICAqCisgICAgICogQHJldHVybiAgICAgIEEgRGF0ZSwgb3IgbnVsbCBpZiB0aGUgaW5wdXQgY291bGQgbm90IGJlIHBhcnNlZAorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBEYXRlIHBhcnNlKFN0cmluZyB0ZXh0LCBQYXJzZVBvc2l0aW9uIHBvcykgeworICAgICAgICBpbnQgc3RhcnQgPSBwb3MuZ2V0SW5kZXgoKTsKKyAgICAgICAgY2FsZW5kYXIuY2xlYXIoKTsKKyAgICAgICAgcGFyc2UodGV4dCwgY2FsZW5kYXIsIHBvcyk7CisgICAgICAgIGlmIChwb3MuZ2V0SW5kZXgoKSAhPSBzdGFydCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsZW5kYXIuZ2V0VGltZSgpOworICAgICAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIG9jY3VycyBpZiB0aGUgY2FsZW5kYXIgaXMgbm9uLWxlbmllbnQgYW5kIHRoZXJlIGlzCisgICAgICAgICAgICAgICAgLy8gYW4gb3V0LW9mLXJhbmdlIGZpZWxkLiAgV2UgZG9uJ3Qga25vdyB3aGljaCBmaWVsZCB3YXMKKyAgICAgICAgICAgICAgICAvLyBpbGxlZ2FsIHNvIHdlIHNldCB0aGUgZXJyb3IgaW5kZXggdG8gdGhlIHN0YXJ0LgorICAgICAgICAgICAgICAgIHBvcy5zZXRJbmRleChzdGFydCk7CisgICAgICAgICAgICAgICAgcG9zLnNldEVycm9ySW5kZXgoc3RhcnQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIC8qKgorICAgICAqIFBhcnNlIGEgZGF0ZS90aW1lIHN0cmluZyBpbnRvIGFuIE9iamVjdC4gIFRoaXMgY29udmVuaWVuY2UgbWV0aG9kIHNpbXBseQorICAgICAqIGNhbGxzIHBhcnNlKFN0cmluZywgUGFyc2VQb3NpdGlvbikuCisgICAgICoKKyAgICAgKiBAc2VlICNwYXJzZShTdHJpbmcsIFBhcnNlUG9zaXRpb24pCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIE9iamVjdCBwYXJzZU9iamVjdCAoU3RyaW5nIHNvdXJjZSwgUGFyc2VQb3NpdGlvbiBwb3MpCisgICAgeworICAgICAgICByZXR1cm4gcGFyc2Uoc291cmNlLCBwb3MpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0YW50IGZvciBmdWxsIHN0eWxlIHBhdHRlcm4uCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRlVMTCA9IDA7CisKKyAgICAvKioKKyAgICAgKiBDb25zdGFudCBmb3IgbG9uZyBzdHlsZSBwYXR0ZXJuLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IExPTkcgPSAxOworCisgICAgLyoqCisgICAgICogQ29uc3RhbnQgZm9yIG1lZGl1bSBzdHlsZSBwYXR0ZXJuLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE1FRElVTSA9IDI7CisKKyAgICAvKioKKyAgICAgKiBDb25zdGFudCBmb3Igc2hvcnQgc3R5bGUgcGF0dGVybi4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTSE9SVCA9IDM7CisKKyAgICAvKioKKyAgICAgKiBDb25zdGFudCBmb3IgZGVmYXVsdCBzdHlsZSBwYXR0ZXJuLiAgSXRzIHZhbHVlIGlzIE1FRElVTS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBERUZBVUxUID0gTUVESVVNOworCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgdGltZSBmb3JtYXR0ZXIgd2l0aCB0aGUgZGVmYXVsdCBmb3JtYXR0aW5nIHN0eWxlCisgICAgICogZm9yIHRoZSBkZWZhdWx0IGxvY2FsZS4KKyAgICAgKiBAcmV0dXJuIGEgdGltZSBmb3JtYXR0ZXIuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBEYXRlRm9ybWF0IGdldFRpbWVJbnN0YW5jZSgpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0KC0xLCBERUZBVUxULCBMb2NhbGUuZ2V0RGVmYXVsdCgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSB0aW1lIGZvcm1hdHRlciB3aXRoIHRoZSBnaXZlbiBmb3JtYXR0aW5nIHN0eWxlCisgICAgICogZm9yIHRoZSBkZWZhdWx0IGxvY2FsZS4KKyAgICAgKiBAcGFyYW0gc3R5bGUgdGhlIGdpdmVuIGZvcm1hdHRpbmcgc3R5bGUuIEZvciBleGFtcGxlLAorICAgICAqIFNIT1JUIGZvciAiaDptbSBhIiBpbiB0aGUgVVMgbG9jYWxlLgorICAgICAqIEByZXR1cm4gYSB0aW1lIGZvcm1hdHRlci4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIERhdGVGb3JtYXQgZ2V0VGltZUluc3RhbmNlKGludCBzdHlsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBnZXQoLTEsIHN0eWxlLCBMb2NhbGUuZ2V0RGVmYXVsdCgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSB0aW1lIGZvcm1hdHRlciB3aXRoIHRoZSBnaXZlbiBmb3JtYXR0aW5nIHN0eWxlCisgICAgICogZm9yIHRoZSBnaXZlbiBsb2NhbGUuCisgICAgICogQHBhcmFtIHN0eWxlIHRoZSBnaXZlbiBmb3JtYXR0aW5nIHN0eWxlLiBGb3IgZXhhbXBsZSwKKyAgICAgKiBTSE9SVCBmb3IgImg6bW0gYSIgaW4gdGhlIFVTIGxvY2FsZS4KKyAgICAgKiBAcGFyYW0gYUxvY2FsZSB0aGUgZ2l2ZW4gbG9jYWxlLgorICAgICAqIEByZXR1cm4gYSB0aW1lIGZvcm1hdHRlci4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIERhdGVGb3JtYXQgZ2V0VGltZUluc3RhbmNlKGludCBzdHlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhbGUgYUxvY2FsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBnZXQoLTEsIHN0eWxlLCBhTG9jYWxlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBkYXRlIGZvcm1hdHRlciB3aXRoIHRoZSBkZWZhdWx0IGZvcm1hdHRpbmcgc3R5bGUKKyAgICAgKiBmb3IgdGhlIGRlZmF1bHQgbG9jYWxlLgorICAgICAqIEByZXR1cm4gYSBkYXRlIGZvcm1hdHRlci4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIERhdGVGb3JtYXQgZ2V0RGF0ZUluc3RhbmNlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBnZXQoREVGQVVMVCwgLTEsIExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIGRhdGUgZm9ybWF0dGVyIHdpdGggdGhlIGdpdmVuIGZvcm1hdHRpbmcgc3R5bGUKKyAgICAgKiBmb3IgdGhlIGRlZmF1bHQgbG9jYWxlLgorICAgICAqIEBwYXJhbSBzdHlsZSB0aGUgZ2l2ZW4gZm9ybWF0dGluZyBzdHlsZS4gRm9yIGV4YW1wbGUsCisgICAgICogU0hPUlQgZm9yICJNL2QveXkiIGluIHRoZSBVUyBsb2NhbGUuCisgICAgICogQHJldHVybiBhIGRhdGUgZm9ybWF0dGVyLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgRGF0ZUZvcm1hdCBnZXREYXRlSW5zdGFuY2UoaW50IHN0eWxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdldChzdHlsZSwgLTEsIExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIGRhdGUgZm9ybWF0dGVyIHdpdGggdGhlIGdpdmVuIGZvcm1hdHRpbmcgc3R5bGUKKyAgICAgKiBmb3IgdGhlIGdpdmVuIGxvY2FsZS4KKyAgICAgKiBAcGFyYW0gc3R5bGUgdGhlIGdpdmVuIGZvcm1hdHRpbmcgc3R5bGUuIEZvciBleGFtcGxlLAorICAgICAqIFNIT1JUIGZvciAiTS9kL3l5IiBpbiB0aGUgVVMgbG9jYWxlLgorICAgICAqIEBwYXJhbSBhTG9jYWxlIHRoZSBnaXZlbiBsb2NhbGUuCisgICAgICogQHJldHVybiBhIGRhdGUgZm9ybWF0dGVyLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgRGF0ZUZvcm1hdCBnZXREYXRlSW5zdGFuY2UoaW50IHN0eWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2FsZSBhTG9jYWxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdldChzdHlsZSwgLTEsIGFMb2NhbGUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIGRhdGUvdGltZSBmb3JtYXR0ZXIgd2l0aCB0aGUgZGVmYXVsdCBmb3JtYXR0aW5nIHN0eWxlCisgICAgICogZm9yIHRoZSBkZWZhdWx0IGxvY2FsZS4KKyAgICAgKiBAcmV0dXJuIGEgZGF0ZS90aW1lIGZvcm1hdHRlci4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIERhdGVGb3JtYXQgZ2V0RGF0ZVRpbWVJbnN0YW5jZSgpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0KERFRkFVTFQsIERFRkFVTFQsIExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIGRhdGUvdGltZSBmb3JtYXR0ZXIgd2l0aCB0aGUgZ2l2ZW4gZGF0ZSBhbmQgdGltZQorICAgICAqIGZvcm1hdHRpbmcgc3R5bGVzIGZvciB0aGUgZGVmYXVsdCBsb2NhbGUuCisgICAgICogQHBhcmFtIGRhdGVTdHlsZSB0aGUgZ2l2ZW4gZGF0ZSBmb3JtYXR0aW5nIHN0eWxlLiBGb3IgZXhhbXBsZSwKKyAgICAgKiBTSE9SVCBmb3IgIk0vZC95eSIgaW4gdGhlIFVTIGxvY2FsZS4KKyAgICAgKiBAcGFyYW0gdGltZVN0eWxlIHRoZSBnaXZlbiB0aW1lIGZvcm1hdHRpbmcgc3R5bGUuIEZvciBleGFtcGxlLAorICAgICAqIFNIT1JUIGZvciAiaDptbSBhIiBpbiB0aGUgVVMgbG9jYWxlLgorICAgICAqIEByZXR1cm4gYSBkYXRlL3RpbWUgZm9ybWF0dGVyLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgRGF0ZUZvcm1hdCBnZXREYXRlVGltZUluc3RhbmNlKGludCBkYXRlU3R5bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRpbWVTdHlsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBnZXQoZGF0ZVN0eWxlLCB0aW1lU3R5bGUsIExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIGRhdGUvdGltZSBmb3JtYXR0ZXIgd2l0aCB0aGUgZ2l2ZW4gZm9ybWF0dGluZyBzdHlsZXMKKyAgICAgKiBmb3IgdGhlIGdpdmVuIGxvY2FsZS4KKyAgICAgKiBAcGFyYW0gZGF0ZVN0eWxlIHRoZSBnaXZlbiBkYXRlIGZvcm1hdHRpbmcgc3R5bGUuCisgICAgICogQHBhcmFtIHRpbWVTdHlsZSB0aGUgZ2l2ZW4gdGltZSBmb3JtYXR0aW5nIHN0eWxlLgorICAgICAqIEBwYXJhbSBhTG9jYWxlIHRoZSBnaXZlbiBsb2NhbGUuCisgICAgICogQHJldHVybiBhIGRhdGUvdGltZSBmb3JtYXR0ZXIuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBEYXRlRm9ybWF0CisgICAgICAgIGdldERhdGVUaW1lSW5zdGFuY2UoaW50IGRhdGVTdHlsZSwgaW50IHRpbWVTdHlsZSwgTG9jYWxlIGFMb2NhbGUpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0KGRhdGVTdHlsZSwgdGltZVN0eWxlLCBhTG9jYWxlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXQgYSBkZWZhdWx0IGRhdGUvdGltZSBmb3JtYXR0ZXIgdGhhdCB1c2VzIHRoZSBTSE9SVCBzdHlsZSBmb3IgYm90aCB0aGUKKyAgICAgKiBkYXRlIGFuZCB0aGUgdGltZS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIERhdGVGb3JtYXQgZ2V0SW5zdGFuY2UoKSB7CisgICAgICAgIHJldHVybiBnZXREYXRlVGltZUluc3RhbmNlKFNIT1JULCBTSE9SVCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgc2V0IG9mIGxvY2FsZXMgZm9yIHdoaWNoIERhdGVGb3JtYXRzIGFyZSBpbnN0YWxsZWQuCisgICAgICogQHJldHVybiB0aGUgc2V0IG9mIGxvY2FsZXMgZm9yIHdoaWNoIERhdGVGb3JtYXRzIGFyZSBpbnN0YWxsZWQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBMb2NhbGVbXSBnZXRBdmFpbGFibGVMb2NhbGVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBJQ1VMb2NhbGVEYXRhLmdldEF2YWlsYWJsZUxvY2FsZXMoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIGNhbGVuZGFyIHRvIGJlIHVzZWQgYnkgdGhpcyBkYXRlIGZvcm1hdC4gIEluaXRpYWxseSwgdGhlIGRlZmF1bHQKKyAgICAgKiBjYWxlbmRhciBmb3IgdGhlIHNwZWNpZmllZCBvciBkZWZhdWx0IGxvY2FsZSBpcyB1c2VkLgorICAgICAqIEBwYXJhbSBuZXdDYWxlbmRhciB0aGUgbmV3IENhbGVuZGFyIHRvIGJlIHVzZWQgYnkgdGhlIGRhdGUgZm9ybWF0CisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0Q2FsZW5kYXIoQ2FsZW5kYXIgbmV3Q2FsZW5kYXIpCisgICAgeworICAgICAgICB0aGlzLmNhbGVuZGFyID0gbmV3Q2FsZW5kYXI7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgY2FsZW5kYXIgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZGF0ZS90aW1lIGZvcm1hdHRlci4KKyAgICAgKiBAcmV0dXJuIHRoZSBjYWxlbmRhciBhc3NvY2lhdGVkIHdpdGggdGhpcyBkYXRlL3RpbWUgZm9ybWF0dGVyLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBDYWxlbmRhciBnZXRDYWxlbmRhcigpCisgICAgeworICAgICAgICByZXR1cm4gY2FsZW5kYXI7CisgICAgfQorCisgICAgLyoqCisgICAgICogQWxsb3dzIHlvdSB0byBzZXQgdGhlIG51bWJlciBmb3JtYXR0ZXIuCisgICAgICogQHBhcmFtIG5ld051bWJlckZvcm1hdCB0aGUgZ2l2ZW4gbmV3IE51bWJlckZvcm1hdC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXROdW1iZXJGb3JtYXQoTnVtYmVyRm9ybWF0IG5ld051bWJlckZvcm1hdCkKKyAgICB7CisgICAgICAgIHRoaXMubnVtYmVyRm9ybWF0ID0gbmV3TnVtYmVyRm9ybWF0OworICAgICAgICAvKkluIG9yZGVyIHRvIHBhcnNlIFN0cmluZyBsaWtlICIxMS4xMC4yMDAxIiB0byBEYXRlVGltZSBjb3JyZWN0bHkgCisgICAgICAgICAgaW4gTG9jYWxlKCJmciIsIkNIIikgW1JpY2hhcmQvR0NMXQorICAgICAgICAqLworICAgICAgICB0aGlzLm51bWJlckZvcm1hdC5zZXRQYXJzZUludGVnZXJPbmx5KHRydWUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIG51bWJlciBmb3JtYXR0ZXIgd2hpY2ggdGhpcyBkYXRlL3RpbWUgZm9ybWF0dGVyIHVzZXMgdG8KKyAgICAgKiBmb3JtYXQgYW5kIHBhcnNlIGEgdGltZS4KKyAgICAgKiBAcmV0dXJuIHRoZSBudW1iZXIgZm9ybWF0dGVyIHdoaWNoIHRoaXMgZGF0ZS90aW1lIGZvcm1hdHRlciB1c2VzLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBOdW1iZXJGb3JtYXQgZ2V0TnVtYmVyRm9ybWF0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBudW1iZXJGb3JtYXQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgdGltZSB6b25lIGZvciB0aGUgY2FsZW5kYXIgb2YgdGhpcyBEYXRlRm9ybWF0IG9iamVjdC4KKyAgICAgKiBAcGFyYW0gem9uZSB0aGUgZ2l2ZW4gbmV3IHRpbWUgem9uZS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRUaW1lWm9uZShUaW1lWm9uZSB6b25lKQorICAgIHsKKyAgICAgICAgY2FsZW5kYXIuc2V0VGltZVpvbmUoem9uZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgdGltZSB6b25lLgorICAgICAqIEByZXR1cm4gdGhlIHRpbWUgem9uZSBhc3NvY2lhdGVkIHdpdGggdGhlIGNhbGVuZGFyIG9mIERhdGVGb3JtYXQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIFRpbWVab25lIGdldFRpbWVab25lKCkKKyAgICB7CisgICAgICAgIHJldHVybiBjYWxlbmRhci5nZXRUaW1lWm9uZSgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNwZWNpZnkgd2hldGhlciBvciBub3QgZGF0ZS90aW1lIHBhcnNpbmcgaXMgdG8gYmUgbGVuaWVudC4gIFdpdGgKKyAgICAgKiBsZW5pZW50IHBhcnNpbmcsIHRoZSBwYXJzZXIgbWF5IHVzZSBoZXVyaXN0aWNzIHRvIGludGVycHJldCBpbnB1dHMgdGhhdAorICAgICAqIGRvIG5vdCBwcmVjaXNlbHkgbWF0Y2ggdGhpcyBvYmplY3QncyBmb3JtYXQuICBXaXRoIHN0cmljdCBwYXJzaW5nLAorICAgICAqIGlucHV0cyBtdXN0IG1hdGNoIHRoaXMgb2JqZWN0J3MgZm9ybWF0LgorICAgICAqIEBwYXJhbSBsZW5pZW50IHdoZW4gdHJ1ZSwgcGFyc2luZyBpcyBsZW5pZW50CisgICAgICogQHNlZSBjb20uaWJtLmljdS51dGlsLkNhbGVuZGFyI3NldExlbmllbnQKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRMZW5pZW50KGJvb2xlYW4gbGVuaWVudCkKKyAgICB7CisgICAgICAgIGNhbGVuZGFyLnNldExlbmllbnQobGVuaWVudCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVsbCB3aGV0aGVyIGRhdGUvdGltZSBwYXJzaW5nIGlzIHRvIGJlIGxlbmllbnQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNMZW5pZW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiBjYWxlbmRhci5pc0xlbmllbnQoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZXMgaGFzaENvZGUKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICAvLy9DTE9WRVI6T0ZGCisgICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKKyAgICAgICAgcmV0dXJuIG51bWJlckZvcm1hdC5oYXNoQ29kZSgpOworICAgICAgICAvLyBqdXN0IGVub3VnaCBmaWVsZHMgZm9yIGEgcmVhc29uYWJsZSBkaXN0cmlidXRpb24KKyAgICB9CisgICAgLy8vQ0xPVkVSOk9OCisKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZXMgZXF1YWxzCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCBvYmopIHsKKyAgICAgICAgaWYgKHRoaXMgPT0gb2JqKSByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKG9iaiA9PSBudWxsIHx8IGdldENsYXNzKCkgIT0gb2JqLmdldENsYXNzKCkpIHJldHVybiBmYWxzZTsKKyAgICAgICAgRGF0ZUZvcm1hdCBvdGhlciA9IChEYXRlRm9ybWF0KSBvYmo7CisgICAgICAgIHJldHVybiAoY2FsZW5kYXIuaXNFcXVpdmFsZW50VG8ob3RoZXIuY2FsZW5kYXIpICYmCisgICAgICAgICAgICAgICAgbnVtYmVyRm9ybWF0LmVxdWFscyhvdGhlci5udW1iZXJGb3JtYXQpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZXMgQ2xvbmVhYmxlCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIE9iamVjdCBjbG9uZSgpCisgICAgeworICAgICAgICBEYXRlRm9ybWF0IG90aGVyID0gKERhdGVGb3JtYXQpIHN1cGVyLmNsb25lKCk7CisgICAgICAgIG90aGVyLmNhbGVuZGFyID0gKENhbGVuZGFyKSBjYWxlbmRhci5jbG9uZSgpOworICAgICAgICBvdGhlci5udW1iZXJGb3JtYXQgPSAoTnVtYmVyRm9ybWF0KSBudW1iZXJGb3JtYXQuY2xvbmUoKTsKKyAgICAgICAgcmV0dXJuIG90aGVyOworICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSBEYXRlRm9ybWF0IHdpdGggdGhlIGdpdmVuIHRpbWUgYW5kL29yIGRhdGUgc3R5bGUgaW4gdGhlIGdpdmVuCisgICAgICogbG9jYWxlLgorICAgICAqIEBwYXJhbSBkYXRlU3R5bGUgYSB2YWx1ZSBmcm9tIDAgdG8gMyBpbmRpY2F0aW5nIHRoZSB0aW1lIGZvcm1hdCwKKyAgICAgKiBvciAtMSB0byBpbmRpY2F0ZSBubyBkYXRlCisgICAgICogQHBhcmFtIHRpbWVTdHlsZSBhIHZhbHVlIGZyb20gMCB0byAzIGluZGljYXRpbmcgdGhlIHRpbWUgZm9ybWF0LAorICAgICAqIG9yIC0xIHRvIGluZGljYXRlIG5vIHRpbWUKKyAgICAgKiBAcGFyYW0gbG9jIHRoZSBsb2NhbGUgZm9yIHRoZSBmb3JtYXQKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBEYXRlRm9ybWF0IGdldChpbnQgZGF0ZVN0eWxlLCBpbnQgdGltZVN0eWxlLCBMb2NhbGUgbG9jKSB7CisgICAgICAgIGlmICh0aW1lU3R5bGUgPCAtMSB8fCB0aW1lU3R5bGUgPiAzKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbGxlZ2FsIHRpbWUgc3R5bGUgIiArIHRpbWVTdHlsZSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGRhdGVTdHlsZSA8IC0xIHx8IGRhdGVTdHlsZSA+IDMpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIklsbGVnYWwgZGF0ZSBzdHlsZSAiICsgZGF0ZVN0eWxlKTsKKyAgICAgICAgfQorICAgICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBTaW1wbGVEYXRlRm9ybWF0KHRpbWVTdHlsZSwgZGF0ZVN0eWxlLCBsb2MpOworICAgICAgICB9IGNhdGNoIChNaXNzaW5nUmVzb3VyY2VFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBTaW1wbGVEYXRlRm9ybWF0KCJNL2QveXkgaDptbSBhIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSBuZXcgZGF0ZSBmb3JtYXQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHJvdGVjdGVkIERhdGVGb3JtYXQoKSB7fQorCisgICAgLy9+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBQdWJsaWMgc3RhdGljIGludGVyZmFjZSBmb3IgY3JlYXRpbmcgY3VzdG9uIERhdGVGb3JtYXRzIGZvciBkaWZmZXJlbnQKKyAgICAvLyB0eXBlcyBvZiBDYWxlbmRhcnMuCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEge0BsaW5rIERhdGVGb3JtYXR9IG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIHRvIGZvcm1hdCBkYXRlcyBpbgorICAgICAqIHRoZSBjYWxlbmRhciBzeXN0ZW0gc3BlY2lmaWVkIGJ5IDxjb2RlPmNhbDwvY29kZT4uCisgICAgICogPHA+CisgICAgICogQHBhcmFtIGNhbCAgIFRoZSBjYWxlbmRhciBzeXN0ZW0gZm9yIHdoaWNoIGEgZGF0ZSBmb3JtYXQgaXMgZGVzaXJlZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBkYXRlU3R5bGUgVGhlIHR5cGUgb2YgZGF0ZSBmb3JtYXQgZGVzaXJlZC4gIFRoaXMgY2FuIGJlCisgICAgICogICAgICAgICAgICAgIHtAbGluayBEYXRlRm9ybWF0I1NIT1JUfSwge0BsaW5rIERhdGVGb3JtYXQjTUVESVVNfSwKKyAgICAgKiAgICAgICAgICAgICAgZXRjLgorICAgICAqCisgICAgICogQHBhcmFtIGxvY2FsZSBUaGUgbG9jYWxlIGZvciB3aGljaCB0aGUgZGF0ZSBmb3JtYXQgaXMgZGVzaXJlZC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBzdGF0aWMgZmluYWwgcHVibGljIERhdGVGb3JtYXQgZ2V0RGF0ZUluc3RhbmNlKENhbGVuZGFyIGNhbCwgaW50IGRhdGVTdHlsZSwgTG9jYWxlIGxvY2FsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBnZXREYXRlVGltZUluc3RhbmNlKGNhbCwgZGF0ZVN0eWxlLCAtMSwgbG9jYWxlKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEge0BsaW5rIERhdGVGb3JtYXR9IG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIHRvIGZvcm1hdCB0aW1lcyBpbgorICAgICAqIHRoZSBjYWxlbmRhciBzeXN0ZW0gc3BlY2lmaWVkIGJ5IDxjb2RlPmNhbDwvY29kZT4uCisgICAgICogPHA+CisgICAgICogPGI+Tm90ZTo8L2I+IFdoZW4gdGhpcyBmdW5jdGlvbmFsaXR5IGlzIG1vdmVkIGludG8gdGhlIGNvcmUgSkRLLCB0aGlzIG1ldGhvZAorICAgICAqIHdpbGwgcHJvYmFibHkgYmUgcmVwbGFjZWQgYnkgYSBuZXcgb3ZlcmxvYWQgb2Yge0BsaW5rIERhdGVGb3JtYXQjZ2V0SW5zdGFuY2V9LgorICAgICAqIDxwPgorICAgICAqIEBwYXJhbSBjYWwgICBUaGUgY2FsZW5kYXIgc3lzdGVtIGZvciB3aGljaCBhIHRpbWUgZm9ybWF0IGlzIGRlc2lyZWQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gdGltZVN0eWxlIFRoZSB0eXBlIG9mIHRpbWUgZm9ybWF0IGRlc2lyZWQuICBUaGlzIGNhbiBiZQorICAgICAqICAgICAgICAgICAgICB7QGxpbmsgRGF0ZUZvcm1hdCNTSE9SVH0sIHtAbGluayBEYXRlRm9ybWF0I01FRElVTX0sCisgICAgICogICAgICAgICAgICAgIGV0Yy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBsb2NhbGUgVGhlIGxvY2FsZSBmb3Igd2hpY2ggdGhlIHRpbWUgZm9ybWF0IGlzIGRlc2lyZWQuCisgICAgICoKKyAgICAgKiBAc2VlIERhdGVGb3JtYXQjZ2V0VGltZUluc3RhbmNlCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgc3RhdGljIGZpbmFsIHB1YmxpYyBEYXRlRm9ybWF0IGdldFRpbWVJbnN0YW5jZShDYWxlbmRhciBjYWwsIGludCB0aW1lU3R5bGUsIExvY2FsZSBsb2NhbGUpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0RGF0ZVRpbWVJbnN0YW5jZShjYWwsIC0xLCB0aW1lU3R5bGUsIGxvY2FsZSk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIENyZWF0ZSBhIHtAbGluayBEYXRlRm9ybWF0fSBvYmplY3QgdGhhdCBjYW4gYmUgdXNlZCB0byBmb3JtYXQgZGF0ZXMgYW5kIHRpbWVzIGluCisgICAgICogdGhlIGNhbGVuZGFyIHN5c3RlbSBzcGVjaWZpZWQgYnkgPGNvZGU+Y2FsPC9jb2RlPi4KKyAgICAgKiA8cD4KKyAgICAgKiA8Yj5Ob3RlOjwvYj4gV2hlbiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgbW92ZWQgaW50byB0aGUgY29yZSBKREssIHRoaXMgbWV0aG9kCisgICAgICogd2lsbCBwcm9iYWJseSBiZSByZXBsYWNlZCBieSBhIG5ldyBvdmVybG9hZCBvZiB7QGxpbmsgRGF0ZUZvcm1hdCNnZXRJbnN0YW5jZX0uCisgICAgICogPHA+CisgICAgICogQHBhcmFtIGNhbCAgIFRoZSBjYWxlbmRhciBzeXN0ZW0gZm9yIHdoaWNoIGEgZGF0ZS90aW1lIGZvcm1hdCBpcyBkZXNpcmVkLgorICAgICAqCisgICAgICogQHBhcmFtIGRhdGVTdHlsZSBUaGUgdHlwZSBvZiBkYXRlIGZvcm1hdCBkZXNpcmVkLiAgVGhpcyBjYW4gYmUKKyAgICAgKiAgICAgICAgICAgICAge0BsaW5rIERhdGVGb3JtYXQjU0hPUlR9LCB7QGxpbmsgRGF0ZUZvcm1hdCNNRURJVU19LAorICAgICAqICAgICAgICAgICAgICBldGMuCisgICAgICoKKyAgICAgKiBAcGFyYW0gdGltZVN0eWxlIFRoZSB0eXBlIG9mIHRpbWUgZm9ybWF0IGRlc2lyZWQuICBUaGlzIGNhbiBiZQorICAgICAqICAgICAgICAgICAgICB7QGxpbmsgRGF0ZUZvcm1hdCNTSE9SVH0sIHtAbGluayBEYXRlRm9ybWF0I01FRElVTX0sCisgICAgICogICAgICAgICAgICAgIGV0Yy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBsb2NhbGUgVGhlIGxvY2FsZSBmb3Igd2hpY2ggdGhlIGRhdGUvdGltZSBmb3JtYXQgaXMgZGVzaXJlZC4KKyAgICAgKgorICAgICAqIEBzZWUgRGF0ZUZvcm1hdCNnZXREYXRlVGltZUluc3RhbmNlCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgc3RhdGljIGZpbmFsIHB1YmxpYyBEYXRlRm9ybWF0IGdldERhdGVUaW1lSW5zdGFuY2UoQ2FsZW5kYXIgY2FsLCBpbnQgZGF0ZVN0eWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0aW1lU3R5bGUsIExvY2FsZSBsb2NhbGUpCisgICAgeworICAgICAgICByZXR1cm4gY2FsLmdldERhdGVUaW1lRm9ybWF0KGRhdGVTdHlsZSwgdGltZVN0eWxlLCBsb2NhbGUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlbmllbmNlIG92ZXJsb2FkCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgc3RhdGljIGZpbmFsIHB1YmxpYyBEYXRlRm9ybWF0IGdldEluc3RhbmNlKENhbGVuZGFyIGNhbCwgTG9jYWxlIGxvY2FsZSkgeworICAgICAgICByZXR1cm4gZ2V0RGF0ZVRpbWVJbnN0YW5jZShjYWwsIFNIT1JULCBTSE9SVCwgbG9jYWxlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb252ZW5pZW5jZSBvdmVybG9hZAorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHN0YXRpYyBmaW5hbCBwdWJsaWMgRGF0ZUZvcm1hdCBnZXRJbnN0YW5jZShDYWxlbmRhciBjYWwpIHsKKyAgICAgICAgcmV0dXJuIGdldEluc3RhbmNlKGNhbCwgTG9jYWxlLmdldERlZmF1bHQoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29udmVuaWVuY2Ugb3ZlcmxvYWQKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBzdGF0aWMgZmluYWwgcHVibGljIERhdGVGb3JtYXQgZ2V0RGF0ZUluc3RhbmNlKENhbGVuZGFyIGNhbCwgaW50IGRhdGVTdHlsZSkgeworICAgICAgICByZXR1cm4gZ2V0RGF0ZUluc3RhbmNlKGNhbCwgZGF0ZVN0eWxlLCBMb2NhbGUuZ2V0RGVmYXVsdCgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb252ZW5pZW5jZSBvdmVybG9hZAorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHN0YXRpYyBmaW5hbCBwdWJsaWMgRGF0ZUZvcm1hdCBnZXRUaW1lSW5zdGFuY2UoQ2FsZW5kYXIgY2FsLCBpbnQgdGltZVN0eWxlKSB7CisgICAgICAgIHJldHVybiBnZXRUaW1lSW5zdGFuY2UoY2FsLCB0aW1lU3R5bGUsIExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlbmllbmNlIG92ZXJsb2FkCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgc3RhdGljIGZpbmFsIHB1YmxpYyBEYXRlRm9ybWF0IGdldERhdGVUaW1lSW5zdGFuY2UoQ2FsZW5kYXIgY2FsLCBpbnQgZGF0ZVN0eWxlLCBpbnQgdGltZVN0eWxlKSB7CisgICAgICAgIHJldHVybiBnZXREYXRlVGltZUluc3RhbmNlKGNhbCwgZGF0ZVN0eWxlLCB0aW1lU3R5bGUsIExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS90ZXh0L0RhdGVGb3JtYXRTeW1ib2xzLmphdmEgYi9zcmMvY29tL2libS9pY3UvdGV4dC9EYXRlRm9ybWF0U3ltYm9scy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjI2ZmE2YTkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdGV4dC9EYXRlRm9ybWF0U3ltYm9scy5qYXZhCkBAIC0wLDAgKzEsNzM5IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvdGV4dC9EYXRlRm9ybWF0U3ltYm9scy5qYXZhLHYgJAorICogJERhdGU6IDIwMDIvMTIvMTggMjE6MjA6NTIgJAorICogJFJldmlzaW9uOiAxLjE1ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LnRleHQ7CisKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLklDVUxvY2FsZURhdGE7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5VdGlsaXR5OworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuQ2FsZW5kYXI7CitpbXBvcnQgY29tLmlibS5pY3UudXRpbC5HcmVnb3JpYW5DYWxlbmRhcjsKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLlRpbWVab25lOworCitpbXBvcnQgamF2YS5pby5TZXJpYWxpemFibGU7CitpbXBvcnQgamF2YS5sYW5nLnJlZi5Tb2Z0UmVmZXJlbmNlOworaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CitpbXBvcnQgamF2YS51dGlsLk1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGU7CitpbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKKworLyoqCisgKiA8Y29kZT5EYXRlRm9ybWF0U3ltYm9sczwvY29kZT4gaXMgYSBwdWJsaWMgY2xhc3MgZm9yIGVuY2Fwc3VsYXRpbmcKKyAqIGxvY2FsaXphYmxlIGRhdGUtdGltZSBmb3JtYXR0aW5nIGRhdGEsIHN1Y2ggYXMgdGhlIG5hbWVzIG9mIHRoZQorICogbW9udGhzLCB0aGUgbmFtZXMgb2YgdGhlIGRheXMgb2YgdGhlIHdlZWssIGFuZCB0aGUgdGltZSB6b25lIGRhdGEuCisgKiA8Y29kZT5EYXRlRm9ybWF0PC9jb2RlPiBhbmQgPGNvZGU+U2ltcGxlRGF0ZUZvcm1hdDwvY29kZT4gYm90aCB1c2UKKyAqIDxjb2RlPkRhdGVGb3JtYXRTeW1ib2xzPC9jb2RlPiB0byBlbmNhcHN1bGF0ZSB0aGlzIGluZm9ybWF0aW9uLgorICoKKyAqIDxwPgorICogVHlwaWNhbGx5IHlvdSBzaG91bGRuJ3QgdXNlIDxjb2RlPkRhdGVGb3JtYXRTeW1ib2xzPC9jb2RlPiBkaXJlY3RseS4KKyAqIFJhdGhlciwgeW91IGFyZSBlbmNvdXJhZ2VkIHRvIGNyZWF0ZSBhIGRhdGUtdGltZSBmb3JtYXR0ZXIgd2l0aCB0aGUKKyAqIDxjb2RlPkRhdGVGb3JtYXQ8L2NvZGU+IGNsYXNzJ3MgZmFjdG9yeSBtZXRob2RzOiA8Y29kZT5nZXRUaW1lSW5zdGFuY2U8L2NvZGU+LAorICogPGNvZGU+Z2V0RGF0ZUluc3RhbmNlPC9jb2RlPiwgb3IgPGNvZGU+Z2V0RGF0ZVRpbWVJbnN0YW5jZTwvY29kZT4uCisgKiBUaGVzZSBtZXRob2RzIGF1dG9tYXRpY2FsbHkgY3JlYXRlIGEgPGNvZGU+RGF0ZUZvcm1hdFN5bWJvbHM8L2NvZGU+IGZvcgorICogdGhlIGZvcm1hdHRlciBzbyB0aGF0IHlvdSBkb24ndCBoYXZlIHRvLiBBZnRlciB0aGUKKyAqIGZvcm1hdHRlciBpcyBjcmVhdGVkLCB5b3UgbWF5IG1vZGlmeSBpdHMgZm9ybWF0IHBhdHRlcm4gdXNpbmcgdGhlCisgKiA8Y29kZT5zZXRQYXR0ZXJuPC9jb2RlPiBtZXRob2QuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0CisgKiBjcmVhdGluZyBmb3JtYXR0ZXJzIHVzaW5nIDxjb2RlPkRhdGVGb3JtYXQ8L2NvZGU+J3MgZmFjdG9yeSBtZXRob2RzLAorICogc2VlIHtAbGluayBEYXRlRm9ybWF0fS4KKyAqCisgKiA8cD4KKyAqIElmIHlvdSBkZWNpZGUgdG8gY3JlYXRlIGEgZGF0ZS10aW1lIGZvcm1hdHRlciB3aXRoIGEgc3BlY2lmaWMKKyAqIGZvcm1hdCBwYXR0ZXJuIGZvciBhIHNwZWNpZmljIGxvY2FsZSwgeW91IGNhbiBkbyBzbyB3aXRoOgorICogPGJsb2NrcXVvdGU+CisgKiA8cHJlPgorICogbmV3IFNpbXBsZURhdGVGb3JtYXQoYVBhdHRlcm4sIG5ldyBEYXRlRm9ybWF0U3ltYm9scyhhTG9jYWxlKSkuCisgKiA8L3ByZT4KKyAqIDwvYmxvY2txdW90ZT4KKyAqCisgKiA8cD4KKyAqIDxjb2RlPkRhdGVGb3JtYXRTeW1ib2xzPC9jb2RlPiBvYmplY3RzIGFyZSBjbG9uYWJsZS4gV2hlbiB5b3Ugb2J0YWluCisgKiBhIDxjb2RlPkRhdGVGb3JtYXRTeW1ib2xzPC9jb2RlPiBvYmplY3QsIGZlZWwgZnJlZSB0byBtb2RpZnkgdGhlCisgKiBkYXRlLXRpbWUgZm9ybWF0dGluZyBkYXRhLiBGb3IgaW5zdGFuY2UsIHlvdSBjYW4gcmVwbGFjZSB0aGUgbG9jYWxpemVkCisgKiBkYXRlLXRpbWUgZm9ybWF0IHBhdHRlcm4gY2hhcmFjdGVycyB3aXRoIHRoZSBvbmVzIHRoYXQgeW91IGZlZWwgZWFzeQorICogdG8gcmVtZW1iZXIuIE9yIHlvdSBjYW4gY2hhbmdlIHRoZSByZXByZXNlbnRhdGl2ZSBjaXRpZXMKKyAqIHRvIHlvdXIgZmF2b3JpdGUgb25lcy4KKyAqCisgKiA8cD4KKyAqIE5ldyA8Y29kZT5EYXRlRm9ybWF0U3ltYm9sczwvY29kZT4gc3ViY2xhc3NlcyBtYXkgYmUgYWRkZWQgdG8gc3VwcG9ydAorICogPGNvZGU+U2ltcGxlRGF0ZUZvcm1hdDwvY29kZT4gZm9yIGRhdGUtdGltZSBmb3JtYXR0aW5nIGZvciBhZGRpdGlvbmFsIGxvY2FsZXMuCisKKyAqIEBzZWUgICAgICAgICAgRGF0ZUZvcm1hdAorICogQHNlZSAgICAgICAgICBTaW1wbGVEYXRlRm9ybWF0CisgKiBAc2VlICAgICAgICAgIGNvbS5pYm0uaWN1LnV0aWwuU2ltcGxlVGltZVpvbmUKKyAqIEBhdXRob3IgICAgICAgQ2hlbi1MaWVoIEh1YW5nCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworcHVibGljIGNsYXNzIERhdGVGb3JtYXRTeW1ib2xzIGltcGxlbWVudHMgU2VyaWFsaXphYmxlLCBDbG9uZWFibGUgeworCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGEgRGF0ZUZvcm1hdFN5bWJvbHMgb2JqZWN0IGJ5IGxvYWRpbmcgZm9ybWF0IGRhdGEgZnJvbQorICAgICAqIHJlc291cmNlcyBmb3IgdGhlIGRlZmF1bHQgbG9jYWxlLgorICAgICAqCisgICAgICogQHRocm93cyAgamF2YS51dGlsLk1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbgorICAgICAqICAgICAgICAgIGlmIHRoZSByZXNvdXJjZXMgZm9yIHRoZSBkZWZhdWx0IGxvY2FsZSBjYW5ub3QgYmUKKyAgICAgKiAgICAgICAgICBmb3VuZCBvciBjYW5ub3QgYmUgbG9hZGVkLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBEYXRlRm9ybWF0U3ltYm9scygpCisgICAgeworICAgICAgICBpbml0aWFsaXplRGF0YShMb2NhbGUuZ2V0RGVmYXVsdCgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgYSBEYXRlRm9ybWF0U3ltYm9scyBvYmplY3QgYnkgbG9hZGluZyBmb3JtYXQgZGF0YSBmcm9tCisgICAgICogcmVzb3VyY2VzIGZvciB0aGUgZ2l2ZW4gbG9jYWxlLgorICAgICAqCisgICAgICogQHRocm93cyAgamF2YS51dGlsLk1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbgorICAgICAqICAgICAgICAgIGlmIHRoZSByZXNvdXJjZXMgZm9yIHRoZSBzcGVjaWZpZWQgbG9jYWxlIGNhbm5vdCBiZQorICAgICAqICAgICAgICAgIGZvdW5kIG9yIGNhbm5vdCBiZSBsb2FkZWQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIERhdGVGb3JtYXRTeW1ib2xzKExvY2FsZSBsb2NhbGUpCisgICAgeworICAgICAgICBpbml0aWFsaXplRGF0YShsb2NhbGUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEVyYSBzdHJpbmdzLiBGb3IgZXhhbXBsZTogIkFEIiBhbmQgIkJDIi4gIEFuIGFycmF5IG9mIDIgc3RyaW5ncywKKyAgICAgKiBpbmRleGVkIGJ5IDxjb2RlPkNhbGVuZGFyLkJDPC9jb2RlPiBhbmQgPGNvZGU+Q2FsZW5kYXIuQUQ8L2NvZGU+LgorICAgICAqIEBzZXJpYWwKKyAgICAgKi8KKyAgICBTdHJpbmcgZXJhc1tdID0gbnVsbDsKKworICAgIC8qKgorICAgICAqIE1vbnRoIHN0cmluZ3MuIEZvciBleGFtcGxlOiAiSmFudWFyeSIsICJGZWJydWFyeSIsIGV0Yy4gIEFuIGFycmF5CisgICAgICogb2YgMTMgc3RyaW5ncyAoc29tZSBjYWxlbmRhcnMgaGF2ZSAxMyBtb250aHMpLCBpbmRleGVkIGJ5CisgICAgICogPGNvZGU+Q2FsZW5kYXIuSkFOVUFSWTwvY29kZT4sIDxjb2RlPkNhbGVuZGFyLkZFQlJVQVJZPC9jb2RlPiwgZXRjLgorICAgICAqIEBzZXJpYWwKKyAgICAgKi8KKyAgICBTdHJpbmcgbW9udGhzW10gPSBudWxsOworCisgICAgLyoqCisgICAgICogU2hvcnQgbW9udGggc3RyaW5ncy4gRm9yIGV4YW1wbGU6ICJKYW4iLCAiRmViIiwgZXRjLiAgQW4gYXJyYXkgb2YKKyAgICAgKiAxMyBzdHJpbmdzIChzb21lIGNhbGVuZGFycyBoYXZlIDEzIG1vbnRocyksIGluZGV4ZWQgYnkKKyAgICAgKiA8Y29kZT5DYWxlbmRhci5KQU5VQVJZPC9jb2RlPiwgPGNvZGU+Q2FsZW5kYXIuRkVCUlVBUlk8L2NvZGU+LCBldGMuCisKKyAgICAgKiBAc2VyaWFsCisgICAgICovCisgICAgU3RyaW5nIHNob3J0TW9udGhzW10gPSBudWxsOworCisgICAgLyoqCisgICAgICogV2Vla2RheSBzdHJpbmdzLiBGb3IgZXhhbXBsZTogIlN1bmRheSIsICJNb25kYXkiLCBldGMuICBBbiBhcnJheQorICAgICAqIG9mIDggc3RyaW5ncywgaW5kZXhlZCBieSA8Y29kZT5DYWxlbmRhci5TVU5EQVk8L2NvZGU+LAorICAgICAqIDxjb2RlPkNhbGVuZGFyLk1PTkRBWTwvY29kZT4sIGV0Yy4KKyAgICAgKiBUaGUgZWxlbWVudCA8Y29kZT53ZWVrZGF5c1swXTwvY29kZT4gaXMgaWdub3JlZC4KKyAgICAgKiBAc2VyaWFsCisgICAgICovCisgICAgU3RyaW5nIHdlZWtkYXlzW10gPSBudWxsOworCisgICAgLyoqCisgICAgICogU2hvcnQgd2Vla2RheSBzdHJpbmdzLiBGb3IgZXhhbXBsZTogIlN1biIsICJNb24iLCBldGMuICBBbiBhcnJheQorICAgICAqIG9mIDggc3RyaW5ncywgaW5kZXhlZCBieSA8Y29kZT5DYWxlbmRhci5TVU5EQVk8L2NvZGU+LAorICAgICAqIDxjb2RlPkNhbGVuZGFyLk1PTkRBWTwvY29kZT4sIGV0Yy4KKyAgICAgKiBUaGUgZWxlbWVudCA8Y29kZT5zaG9ydFdlZWtkYXlzWzBdPC9jb2RlPiBpcyBpZ25vcmVkLgorICAgICAqIEBzZXJpYWwKKyAgICAgKi8KKyAgICBTdHJpbmcgc2hvcnRXZWVrZGF5c1tdID0gbnVsbDsKKworICAgIC8qKgorICAgICAqIEFNIGFuZCBQTSBzdHJpbmdzLiBGb3IgZXhhbXBsZTogIkFNIiBhbmQgIlBNIi4gIEFuIGFycmF5IG9mCisgICAgICogMiBzdHJpbmdzLCBpbmRleGVkIGJ5IDxjb2RlPkNhbGVuZGFyLkFNPC9jb2RlPiBhbmQKKyAgICAgKiA8Y29kZT5DYWxlbmRhci5QTTwvY29kZT4uCisgICAgICogQHNlcmlhbAorICAgICAqLworICAgIFN0cmluZyBhbXBtc1tdID0gbnVsbDsKKworICAgIC8qKgorICAgICAqIExvY2FsaXplZCBuYW1lcyBvZiB0aW1lIHpvbmVzIGluIHRoaXMgbG9jYWxlLiAgVGhpcyBpcyBhCisgICAgICogdHdvLWRpbWVuc2lvbmFsIGFycmF5IG9mIHN0cmluZ3Mgb2Ygc2l6ZSA8ZW0+bjwvZW0+IGJ5IDxlbT5tPC9lbT4sCisgICAgICogd2hlcmUgPGVtPm08L2VtPiBpcyBhdCBsZWFzdCA1LiAgRWFjaCBvZiB0aGUgPGVtPm48L2VtPiByb3dzIGlzIGFuCisgICAgICogZW50cnkgY29udGFpbmluZyB0aGUgbG9jYWxpemVkIG5hbWVzIGZvciBhIHNpbmdsZSA8Y29kZT5UaW1lWm9uZTwvY29kZT4uCisgICAgICogRWFjaCBzdWNoIHJvdyBjb250YWlucyAod2l0aCA8Y29kZT5pPC9jb2RlPiByYW5naW5nIGZyb20KKyAgICAgKiAwLi48ZW0+bjwvZW0+LTEpOgorICAgICAqIDx1bD4KKyAgICAgKiA8bGk+PGNvZGU+em9uZVN0cmluZ3NbaV1bMF08L2NvZGU+IC0gdGltZSB6b25lIElEPC9saT4KKyAgICAgKiA8bGk+PGNvZGU+em9uZVN0cmluZ3NbaV1bMV08L2NvZGU+IC0gbG9uZyBuYW1lIG9mIHpvbmUgaW4gc3RhbmRhcmQKKyAgICAgKiB0aW1lPC9saT4KKyAgICAgKiA8bGk+PGNvZGU+em9uZVN0cmluZ3NbaV1bMl08L2NvZGU+IC0gc2hvcnQgbmFtZSBvZiB6b25lIGluCisgICAgICogc3RhbmRhcmQgdGltZTwvbGk+CisgICAgICogPGxpPjxjb2RlPnpvbmVTdHJpbmdzW2ldWzNdPC9jb2RlPiAtIGxvbmcgbmFtZSBvZiB6b25lIGluIGRheWxpZ2h0CisgICAgICogc2F2aW5ncyB0aW1lPC9saT4KKyAgICAgKiA8bGk+PGNvZGU+em9uZVN0cmluZ3NbaV1bNF08L2NvZGU+IC0gc2hvcnQgbmFtZSBvZiB6b25lIGluIGRheWxpZ2h0CisgICAgICogc2F2aW5ncyB0aW1lPC9saT4KKyAgICAgKiA8L3VsPgorICAgICAqIFRoZSB6b25lIElEIGlzIDxlbT5ub3Q8L2VtPiBsb2NhbGl6ZWQ7IGl0IGNvcnJlc3BvbmRzIHRvIHRoZSBJRAorICAgICAqIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBhIHN5c3RlbSB0aW1lIHpvbmUgb2JqZWN0LiAgQWxsIG90aGVyIGVudHJpZXMKKyAgICAgKiBhcmUgbG9jYWxpemVkIG5hbWVzLiAgSWYgYSB6b25lIGRvZXMgbm90IGltcGxlbWVudCBkYXlsaWdodCBzYXZpbmdzCisgICAgICogdGltZSwgdGhlIGRheWxpZ2h0IHNhdmluZ3MgdGltZSBuYW1lcyBhcmUgaWdub3JlZC4KKyAgICAgKiBAc2VlIGNvbS5pYm0uaWN1LnV0aWwuVGltZVpvbmUKKyAgICAgKiBAc2VyaWFsCisgICAgICovCisgICAgU3RyaW5nIHpvbmVTdHJpbmdzW11bXSA9IG51bGw7CisKKyAgICAvKioKKyAgICAgKiBVbmxvY2FsaXplZCBkYXRlLXRpbWUgcGF0dGVybiBjaGFyYWN0ZXJzLiBGb3IgZXhhbXBsZTogJ3knLCAnZCcsIGV0Yy4KKyAgICAgKiBBbGwgbG9jYWxlcyB1c2UgdGhlIHNhbWUgdGhlc2UgdW5sb2NhbGl6ZWQgcGF0dGVybiBjaGFyYWN0ZXJzLgorICAgICAqLworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgIHBhdHRlcm5DaGFycyA9ICJHeU1ka0htc1NFREZ3V2FoS3oiOworCisgICAgLyoqCisgICAgICogTG9jYWxpemVkIGRhdGUtdGltZSBwYXR0ZXJuIGNoYXJhY3RlcnMuIEZvciBleGFtcGxlLCBhIGxvY2FsZSBtYXkKKyAgICAgKiB3aXNoIHRvIHVzZSAndScgcmF0aGVyIHRoYW4gJ3knIHRvIHJlcHJlc2VudCB5ZWFycyBpbiBpdHMgZGF0ZSBmb3JtYXQKKyAgICAgKiBwYXR0ZXJuIHN0cmluZ3MuCisgICAgICogVGhpcyBzdHJpbmcgbXVzdCBiZSBleGFjdGx5IDE4IGNoYXJhY3RlcnMgbG9uZywgd2l0aCB0aGUgaW5kZXggb2YKKyAgICAgKiB0aGUgY2hhcmFjdGVycyBkZXNjcmliZWQgYnkgPGNvZGU+RGF0ZUZvcm1hdC5FUkFfRklFTEQ8L2NvZGU+LAorICAgICAqIDxjb2RlPkRhdGVGb3JtYXQuWUVBUl9GSUVMRDwvY29kZT4sIGV0Yy4gIFRodXMsIGlmIHRoZSBzdHJpbmcgd2VyZQorICAgICAqICJYei4uLiIsIHRoZW4gbG9jYWxpemVkIHBhdHRlcm5zIHdvdWxkIHVzZSAnWCcgZm9yIGVyYSBhbmQgJ3onIGZvciB5ZWFyLgorICAgICAqIEBzZXJpYWwKKyAgICAgKi8KKyAgICBTdHJpbmcgIGxvY2FsUGF0dGVybkNoYXJzID0gbnVsbDsKKworICAgIC8qIHVzZSBzZXJpYWxWZXJzaW9uVUlEIGZyb20gSkRLIDEuMS40IGZvciBpbnRlcm9wZXJhYmlsaXR5ICovCisgICAgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IC01OTg3OTczNTQ1NTQ5NDI0NzAyTDsKKworICAgIC8qKgorICAgICAqIEdldHMgZXJhIHN0cmluZ3MuIEZvciBleGFtcGxlOiAiQUQiIGFuZCAiQkMiLgorICAgICAqIEByZXR1cm4gdGhlIGVyYSBzdHJpbmdzLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmdbXSBnZXRFcmFzKCkgeworICAgICAgICByZXR1cm4gZHVwbGljYXRlKGVyYXMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgZXJhIHN0cmluZ3MuIEZvciBleGFtcGxlOiAiQUQiIGFuZCAiQkMiLgorICAgICAqIEBwYXJhbSBuZXdFcmFzIHRoZSBuZXcgZXJhIHN0cmluZ3MuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0RXJhcyhTdHJpbmdbXSBuZXdFcmFzKSB7CisgICAgICAgIGVyYXMgPSBkdXBsaWNhdGUobmV3RXJhcyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0cyBtb250aCBzdHJpbmdzLiBGb3IgZXhhbXBsZTogIkphbnVhcnkiLCAiRmVicnVhcnkiLCBldGMuCisgICAgICogQHJldHVybiB0aGUgbW9udGggc3RyaW5ncy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nW10gZ2V0TW9udGhzKCkgeworICAgICAgICByZXR1cm4gZHVwbGljYXRlKG1vbnRocyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyBtb250aCBzdHJpbmdzLiBGb3IgZXhhbXBsZTogIkphbnVhcnkiLCAiRmVicnVhcnkiLCBldGMuCisgICAgICogQHBhcmFtIG5ld01vbnRocyB0aGUgbmV3IG1vbnRoIHN0cmluZ3MuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0TW9udGhzKFN0cmluZ1tdIG5ld01vbnRocykgeworICAgICAgICBtb250aHMgPSBkdXBsaWNhdGUobmV3TW9udGhzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHNob3J0IG1vbnRoIHN0cmluZ3MuIEZvciBleGFtcGxlOiAiSmFuIiwgIkZlYiIsIGV0Yy4KKyAgICAgKiBAcmV0dXJuIHRoZSBzaG9ydCBtb250aCBzdHJpbmdzLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmdbXSBnZXRTaG9ydE1vbnRocygpIHsKKyAgICAgICAgcmV0dXJuIGR1cGxpY2F0ZShzaG9ydE1vbnRocyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyBzaG9ydCBtb250aCBzdHJpbmdzLiBGb3IgZXhhbXBsZTogIkphbiIsICJGZWIiLCBldGMuCisgICAgICogQHBhcmFtIG5ld1Nob3J0TW9udGhzIHRoZSBuZXcgc2hvcnQgbW9udGggc3RyaW5ncy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRTaG9ydE1vbnRocyhTdHJpbmdbXSBuZXdTaG9ydE1vbnRocykgeworICAgICAgICBzaG9ydE1vbnRocyA9IGR1cGxpY2F0ZShuZXdTaG9ydE1vbnRocyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0cyB3ZWVrZGF5IHN0cmluZ3MuIEZvciBleGFtcGxlOiAiU3VuZGF5IiwgIk1vbmRheSIsIGV0Yy4KKyAgICAgKiBAcmV0dXJuIHRoZSB3ZWVrZGF5IHN0cmluZ3MuIFVzZSA8Y29kZT5DYWxlbmRhci5TVU5EQVk8L2NvZGU+LAorICAgICAqIDxjb2RlPkNhbGVuZGFyLk1PTkRBWTwvY29kZT4sIGV0Yy4gdG8gaW5kZXggdGhlIHJlc3VsdCBhcnJheS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nW10gZ2V0V2Vla2RheXMoKSB7CisgICAgICAgIHJldHVybiBkdXBsaWNhdGUod2Vla2RheXMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgd2Vla2RheSBzdHJpbmdzLiBGb3IgZXhhbXBsZTogIlN1bmRheSIsICJNb25kYXkiLCBldGMuCisgICAgICogQHBhcmFtIG5ld1dlZWtkYXlzIHRoZSBuZXcgd2Vla2RheSBzdHJpbmdzLiBUaGUgYXJyYXkgc2hvdWxkCisgICAgICogYmUgaW5kZXhlZCBieSA8Y29kZT5DYWxlbmRhci5TVU5EQVk8L2NvZGU+LAorICAgICAqIDxjb2RlPkNhbGVuZGFyLk1PTkRBWTwvY29kZT4sIGV0Yy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRXZWVrZGF5cyhTdHJpbmdbXSBuZXdXZWVrZGF5cykgeworICAgICAgICB3ZWVrZGF5cyA9IGR1cGxpY2F0ZShuZXdXZWVrZGF5cyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0cyBzaG9ydCB3ZWVrZGF5IHN0cmluZ3MuIEZvciBleGFtcGxlOiAiU3VuIiwgIk1vbiIsIGV0Yy4KKyAgICAgKiBAcmV0dXJuIHRoZSBzaG9ydCB3ZWVrZGF5IHN0cmluZ3MuIFVzZSA8Y29kZT5DYWxlbmRhci5TVU5EQVk8L2NvZGU+LAorICAgICAqIDxjb2RlPkNhbGVuZGFyLk1PTkRBWTwvY29kZT4sIGV0Yy4gdG8gaW5kZXggdGhlIHJlc3VsdCBhcnJheS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nW10gZ2V0U2hvcnRXZWVrZGF5cygpIHsKKyAgICAgICAgcmV0dXJuIGR1cGxpY2F0ZShzaG9ydFdlZWtkYXlzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHNob3J0IHdlZWtkYXkgc3RyaW5ncy4gRm9yIGV4YW1wbGU6ICJTdW4iLCAiTW9uIiwgZXRjLgorICAgICAqIEBwYXJhbSBuZXdTaG9ydFdlZWtkYXlzIHRoZSBuZXcgc2hvcnQgd2Vla2RheSBzdHJpbmdzLiBUaGUgYXJyYXkgc2hvdWxkCisgICAgICogYmUgaW5kZXhlZCBieSA8Y29kZT5DYWxlbmRhci5TVU5EQVk8L2NvZGU+LAorICAgICAqIDxjb2RlPkNhbGVuZGFyLk1PTkRBWTwvY29kZT4sIGV0Yy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRTaG9ydFdlZWtkYXlzKFN0cmluZ1tdIG5ld1Nob3J0V2Vla2RheXMpIHsKKyAgICAgICAgc2hvcnRXZWVrZGF5cyA9IGR1cGxpY2F0ZShuZXdTaG9ydFdlZWtkYXlzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIGFtcG0gc3RyaW5ncy4gRm9yIGV4YW1wbGU6ICJBTSIgYW5kICJQTSIuCisgICAgICogQHJldHVybiB0aGUgd2Vla2RheSBzdHJpbmdzLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmdbXSBnZXRBbVBtU3RyaW5ncygpIHsKKyAgICAgICAgcmV0dXJuIGR1cGxpY2F0ZShhbXBtcyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyBhbXBtIHN0cmluZ3MuIEZvciBleGFtcGxlOiAiQU0iIGFuZCAiUE0iLgorICAgICAqIEBwYXJhbSBuZXdBbXBtcyB0aGUgbmV3IGFtcG0gc3RyaW5ncy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRBbVBtU3RyaW5ncyhTdHJpbmdbXSBuZXdBbXBtcykgeworICAgICAgICBhbXBtcyA9IGR1cGxpY2F0ZShuZXdBbXBtcyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0cyB0aW1lem9uZSBzdHJpbmdzLgorICAgICAqIEByZXR1cm4gdGhlIHRpbWV6b25lIHN0cmluZ3MuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIFN0cmluZ1tdW10gZ2V0Wm9uZVN0cmluZ3MoKSB7CisgICAgICAgIHJldHVybiBkdXBsaWNhdGUoem9uZVN0cmluZ3MpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGltZXpvbmUgc3RyaW5ncy4KKyAgICAgKiBAcGFyYW0gbmV3Wm9uZVN0cmluZ3MgdGhlIG5ldyB0aW1lem9uZSBzdHJpbmdzLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFpvbmVTdHJpbmdzKFN0cmluZ1tdW10gbmV3Wm9uZVN0cmluZ3MpIHsKKyAgICAgICAgem9uZVN0cmluZ3MgPSBkdXBsaWNhdGUobmV3Wm9uZVN0cmluZ3MpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgbG9jYWxpemVkIGRhdGUtdGltZSBwYXR0ZXJuIGNoYXJhY3RlcnMuIEZvciBleGFtcGxlOiAndScsICd0JywgZXRjLgorICAgICAqIEByZXR1cm4gdGhlIGxvY2FsaXplZCBkYXRlLXRpbWUgcGF0dGVybiBjaGFyYWN0ZXJzLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgZ2V0TG9jYWxQYXR0ZXJuQ2hhcnMoKSB7CisgICAgICAgIHJldHVybiBuZXcgU3RyaW5nKGxvY2FsUGF0dGVybkNoYXJzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIGxvY2FsaXplZCBkYXRlLXRpbWUgcGF0dGVybiBjaGFyYWN0ZXJzLiBGb3IgZXhhbXBsZTogJ3UnLCAndCcsIGV0Yy4KKyAgICAgKiBAcGFyYW0gbmV3TG9jYWxQYXR0ZXJuQ2hhcnMgdGhlIG5ldyBsb2NhbGl6ZWQgZGF0ZS10aW1lCisgICAgICogcGF0dGVybiBjaGFyYWN0ZXJzLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldExvY2FsUGF0dGVybkNoYXJzKFN0cmluZyBuZXdMb2NhbFBhdHRlcm5DaGFycykgeworICAgICAgICBsb2NhbFBhdHRlcm5DaGFycyA9IG5ld0xvY2FsUGF0dGVybkNoYXJzOworICAgIH0KKworICAgIC8qKgorICAgICAqIE92ZXJyaWRlcyBDbG9uZWFibGUKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0IGNsb25lKCkKKyAgICB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBEYXRlRm9ybWF0U3ltYm9scyBvdGhlciA9IChEYXRlRm9ybWF0U3ltYm9scylzdXBlci5jbG9uZSgpOworICAgICAgICAgICAgY29weU1lbWJlcnModGhpcywgb3RoZXIpOworICAgICAgICAgICAgcmV0dXJuIG90aGVyOworICAgICAgICB9IGNhdGNoIChDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcigpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogT3ZlcnJpZGUgaGFzaENvZGUuCisgICAgICogR2VuZXJhdGVzIGEgaGFzaCBjb2RlIGZvciB0aGUgRGF0ZUZvcm1hdFN5bWJvbHMgb2JqZWN0LgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CisgICAgICAgIGludCBoYXNoY29kZSA9IDA7CisgICAgICAgIGZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLnpvbmVTdHJpbmdzWzBdLmxlbmd0aDsgKytpbmRleCkKKyAgICAgICAgICAgIGhhc2hjb2RlIF49IHRoaXMuem9uZVN0cmluZ3NbMF1baW5kZXhdLmhhc2hDb2RlKCk7CisgICAgICAgIHJldHVybiBoYXNoY29kZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZSBlcXVhbHMKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG9iaikKKyAgICB7CisgICAgICAgIGlmICh0aGlzID09IG9iaikgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChvYmogPT0gbnVsbCB8fCBnZXRDbGFzcygpICE9IG9iai5nZXRDbGFzcygpKSByZXR1cm4gZmFsc2U7CisgICAgICAgIERhdGVGb3JtYXRTeW1ib2xzIHRoYXQgPSAoRGF0ZUZvcm1hdFN5bWJvbHMpIG9iajsKKyAgICAgICAgcmV0dXJuIChVdGlsaXR5LmFycmF5RXF1YWxzKGVyYXMsIHRoYXQuZXJhcykKKyAgICAgICAgICAgICAgICAmJiBVdGlsaXR5LmFycmF5RXF1YWxzKG1vbnRocywgdGhhdC5tb250aHMpCisgICAgICAgICAgICAgICAgJiYgVXRpbGl0eS5hcnJheUVxdWFscyhzaG9ydE1vbnRocywgdGhhdC5zaG9ydE1vbnRocykKKyAgICAgICAgICAgICAgICAmJiBVdGlsaXR5LmFycmF5RXF1YWxzKHdlZWtkYXlzLCB0aGF0LndlZWtkYXlzKQorICAgICAgICAgICAgICAgICYmIFV0aWxpdHkuYXJyYXlFcXVhbHMoc2hvcnRXZWVrZGF5cywgdGhhdC5zaG9ydFdlZWtkYXlzKQorICAgICAgICAgICAgICAgICYmIFV0aWxpdHkuYXJyYXlFcXVhbHMoYW1wbXMsIHRoYXQuYW1wbXMpCisgICAgICAgICAgICAgICAgJiYgVXRpbGl0eS5hcnJheUVxdWFscyh6b25lU3RyaW5ncywgdGhhdC56b25lU3RyaW5ncykKKyAgICAgICAgICAgICAgICAmJiBVdGlsaXR5LmFycmF5RXF1YWxzKGxvY2FsUGF0dGVybkNoYXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5sb2NhbFBhdHRlcm5DaGFycykpOworICAgIH0KKworICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09cHJpdmF0ZXM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAvKioKKyAgICAgKiBVc2VmdWwgY29uc3RhbnQgZm9yIGRlZmluaW5nIHRpbWV6b25lIG9mZnNldHMuCisgICAgICovCisgICAgc3RhdGljIGZpbmFsIGludCBtaWxsaXNQZXJIb3VyID0gNjAqNjAqMTAwMDsKKworCisgICAgcHJpdmF0ZSB2b2lkIGluaXRpYWxpemVEYXRhKExvY2FsZSBkZXNpcmVkTG9jYWxlKQorICAgIHsKKyAgICAgICAgUmVzb3VyY2VCdW5kbGUgcmIgPSBJQ1VMb2NhbGVEYXRhLmdldExvY2FsZUVsZW1lbnRzKGRlc2lyZWRMb2NhbGUpOworCisgICAgICAgIC8vIEZJWE1FOiBjYWNoZSBvbmx5IFJlc291cmNlQnVuZGxlLiBIZW5jZSBldmVyeSB0aW1lLCB3aWxsIGRvCisgICAgICAgIC8vIGdldE9iamVjdCgpLiBUaGlzIHdvbid0IGJlIG5lY2Vzc2FyeSBpZiB0aGUgUmVzb3VyY2UgaXRzZWxmCisgICAgICAgIC8vIGlzIGNhY2hlZC4KKyAgICAgICAgZXJhcyA9IHJiLmdldFN0cmluZ0FycmF5KCJFcmFzIik7CisgICAgICAgIG1vbnRocyA9IHJiLmdldFN0cmluZ0FycmF5KCJNb250aE5hbWVzIik7CisgICAgICAgIHNob3J0TW9udGhzID0gcmIuZ2V0U3RyaW5nQXJyYXkoIk1vbnRoQWJicmV2aWF0aW9ucyIpOworCisgICAgICAgIFN0cmluZ1tdIGxXZWVrZGF5cyA9IHJiLmdldFN0cmluZ0FycmF5KCJEYXlOYW1lcyIpOworICAgICAgICB3ZWVrZGF5cyA9IG5ldyBTdHJpbmdbOF07CisgICAgICAgIHdlZWtkYXlzWzBdID0gIiI7ICAvLyAxLWJhc2VkCisgICAgICAgIFN5c3RlbS5hcnJheWNvcHkobFdlZWtkYXlzLCAwLCB3ZWVrZGF5cywgMSwgbFdlZWtkYXlzLmxlbmd0aCk7CisKKyAgICAgICAgU3RyaW5nW10gc1dlZWtkYXlzID0gcmIuZ2V0U3RyaW5nQXJyYXkoIkRheUFiYnJldmlhdGlvbnMiKTsKKyAgICAgICAgc2hvcnRXZWVrZGF5cyA9IG5ldyBTdHJpbmdbOF07CisgICAgICAgIHNob3J0V2Vla2RheXNbMF0gPSAiIjsgIC8vIDEtYmFzZWQKKyAgICAgICAgU3lzdGVtLmFycmF5Y29weShzV2Vla2RheXMsIDAsIHNob3J0V2Vla2RheXMsIDEsIHNXZWVrZGF5cy5sZW5ndGgpOworCisgICAgICAgIGFtcG1zID0gcmIuZ2V0U3RyaW5nQXJyYXkoIkFtUG1NYXJrZXJzIik7CisKKyAgICAgICAgLy8gaGFjayBhcm91bmQgY2xhc3MgY2FzdCBwcm9ibGVtCisgICAgICAgIC8vIHpvbmVTdHJpbmdzID0gKFN0cmluZ1tdW10pcmIuZ2V0T2JqZWN0KCJ6b25lU3RyaW5ncyIpOworICAgICAgICBPYmplY3RbXSB6b25lT2JqZWN0ID0gKE9iamVjdFtdKXJiLmdldE9iamVjdCgiem9uZVN0cmluZ3MiKTsKKyAgICAgICAgem9uZVN0cmluZ3MgPSBuZXcgU3RyaW5nW3pvbmVPYmplY3QubGVuZ3RoXVtdOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHpvbmVTdHJpbmdzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB6b25lU3RyaW5nc1tpXSA9IChTdHJpbmdbXSl6b25lT2JqZWN0W2ldOworICAgICAgICB9CisKKyAgICAgICAgbG9jYWxQYXR0ZXJuQ2hhcnMgPSByYi5nZXRTdHJpbmcoImxvY2FsUGF0dGVybkNoYXJzIik7CisgICAgfQorCisgICAgLyoqCisgICAgICogUGFja2FnZSBwcml2YXRlOiB1c2VkIGJ5IFNpbXBsZURhdGVGb3JtYXQKKyAgICAgKiBHZXRzIHRoZSBpbmRleCBmb3IgdGhlIGdpdmVuIHRpbWUgem9uZSBJRCB0byBvYnRhaW4gdGhlIHRpbWV6b25lCisgICAgICogc3RyaW5ncyBmb3IgZm9ybWF0dGluZy4gVGhlIHRpbWUgem9uZSBJRCBpcyBqdXN0IGZvciBwcm9ncmFtbWF0aWMKKyAgICAgKiBsb29rdXAuIE5PVCBMT0NBTElaRUQhISEKKyAgICAgKiBAcGFyYW0gSUQgdGhlIGdpdmVuIHRpbWUgem9uZSBJRC4KKyAgICAgKiBAcmV0dXJuIHRoZSBpbmRleCBvZiB0aGUgZ2l2ZW4gdGltZSB6b25lIElELiAgUmV0dXJucyAtMSBpZgorICAgICAqIHRoZSBnaXZlbiB0aW1lIHpvbmUgSUQgY2FuJ3QgYmUgbG9jYXRlZCBpbiB0aGUgRGF0ZUZvcm1hdFN5bWJvbHMgb2JqZWN0LgorICAgICAqIEBzZWUgY29tLmlibS5pY3UudXRpbC5TaW1wbGVUaW1lWm9uZQorICAgICAqLworICAgIGZpbmFsIGludCBnZXRab25lSW5kZXgoU3RyaW5nIElEKSB7CisgICAgICAgIGludCByZXN1bHQgPSBfZ2V0Wm9uZUluZGV4KElEKTsKKyAgICAgICAgaWYgKHJlc3VsdCA+PSAwKSB7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBEbyBhIHNlYXJjaCB0aHJvdWdoIHRoZSBlcXVpdmFsZW5jeSBncm91cCBmb3IgdGhlIGdpdmVuIElECisgICAgICAgIGludCBuID0gVGltZVpvbmUuY291bnRFcXVpdmFsZW50SURzKElEKTsKKyAgICAgICAgaWYgKG4gPiAxKSB7CisgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8bjsgKytpKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIGVxdWl2SUQgPSBUaW1lWm9uZS5nZXRFcXVpdmFsZW50SUQoSUQsIGkpOworICAgICAgICAgICAgICAgIGlmICghZXF1aXZJRC5lcXVhbHMoSUQpKSB7CisgICAgICAgICAgICAgICAgICAgIGludCBlcXVpdlJlc3VsdCA9IF9nZXRab25lSW5kZXgoZXF1aXZJRCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChlcXVpdlJlc3VsdCA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXF1aXZSZXN1bHQ7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogTG9va3VwIHRoZSBnaXZlbiBJRC4gIERvIE5PVCBkbyBhbiBlcXVpdmFsZW5jeSBzZWFyY2guCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgX2dldFpvbmVJbmRleChTdHJpbmcgSUQpCisgICAgeworICAgICAgICBmb3IgKGludCBpbmRleD0wOyBpbmRleDx6b25lU3RyaW5ncy5sZW5ndGg7IGluZGV4KyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKElELmVxdWFsc0lnbm9yZUNhc2Uoem9uZVN0cmluZ3NbaW5kZXhdWzBdKSkgcmV0dXJuIGluZGV4OworICAgICAgICAgICAgfQorCisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDbG9uZXMgYW4gYXJyYXkgb2YgU3RyaW5ncy4KKyAgICAgKiBAcGFyYW0gc3JjQXJyYXkgdGhlIHNvdXJjZSBhcnJheSB0byBiZSBjbG9uZWQuCisgICAgICogQHBhcmFtIGNvdW50IHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIGdpdmVuIHNvdXJjZSBhcnJheS4KKyAgICAgKiBAcmV0dXJuIGEgY2xvbmVkIGFycmF5LgorICAgICAqLworICAgIHByaXZhdGUgZmluYWwgU3RyaW5nW10gZHVwbGljYXRlKFN0cmluZ1tdIHNyY0FycmF5KQorICAgIHsKKyAgICAgICAgcmV0dXJuIChTdHJpbmdbXSlzcmNBcnJheS5jbG9uZSgpOworICAgIH0KKworICAgIHByaXZhdGUgZmluYWwgU3RyaW5nW11bXSBkdXBsaWNhdGUoU3RyaW5nW11bXSBzcmNBcnJheSkKKyAgICB7CisgICAgICAgIFN0cmluZ1tdW10gYUNvcHkgPSBuZXcgU3RyaW5nW3NyY0FycmF5Lmxlbmd0aF1bXTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzcmNBcnJheS5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIGFDb3B5W2ldID0gZHVwbGljYXRlKHNyY0FycmF5W2ldKTsKKyAgICAgICAgcmV0dXJuIGFDb3B5OworICAgIH0KKworICAgIC8qKgorICAgICAqIENsb25lcyBhbGwgdGhlIGRhdGEgbWVtYmVycyBmcm9tIHRoZSBzb3VyY2UgRGF0ZUZvcm1hdFN5bWJvbHMgdG8KKyAgICAgKiB0aGUgdGFyZ2V0IERhdGVGb3JtYXRTeW1ib2xzLiBUaGlzIGlzIG9ubHkgZm9yIHN1YmNsYXNzZXMuCisgICAgICogQHBhcmFtIHNyYyB0aGUgc291cmNlIERhdGVGb3JtYXRTeW1ib2xzLgorICAgICAqIEBwYXJhbSBkc3QgdGhlIHRhcmdldCBEYXRlRm9ybWF0U3ltYm9scy4KKyAgICAgKi8KKyAgICBwcml2YXRlIGZpbmFsIHZvaWQgY29weU1lbWJlcnMoRGF0ZUZvcm1hdFN5bWJvbHMgc3JjLCBEYXRlRm9ybWF0U3ltYm9scyBkc3QpCisgICAgeworICAgICAgICBkc3QuZXJhcyA9IGR1cGxpY2F0ZShzcmMuZXJhcyk7CisgICAgICAgIGRzdC5tb250aHMgPSBkdXBsaWNhdGUoc3JjLm1vbnRocyk7CisgICAgICAgIGRzdC5zaG9ydE1vbnRocyA9IGR1cGxpY2F0ZShzcmMuc2hvcnRNb250aHMpOworICAgICAgICBkc3Qud2Vla2RheXMgPSBkdXBsaWNhdGUoc3JjLndlZWtkYXlzKTsKKyAgICAgICAgZHN0LnNob3J0V2Vla2RheXMgPSBkdXBsaWNhdGUoc3JjLnNob3J0V2Vla2RheXMpOworICAgICAgICBkc3QuYW1wbXMgPSBkdXBsaWNhdGUoc3JjLmFtcG1zKTsKKyAgICAgICAgZHN0LnpvbmVTdHJpbmdzID0gZHVwbGljYXRlKHNyYy56b25lU3RyaW5ncyk7CisgICAgICAgIGRzdC5sb2NhbFBhdHRlcm5DaGFycyA9IG5ldyBTdHJpbmcgKHNyYy5sb2NhbFBhdHRlcm5DaGFycyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29tcGFyZXMgdGhlIGVxdWFsaXR5IG9mIHRoZSB0d28gYXJyYXlzIG9mIFN0cmluZy4KKyAgICAgKiBAcGFyYW0gY3VycmVudCB0aGlzIFN0cmluZyBhcnJheS4KKyAgICAgKiBAcGFyYW0gb3RoZXIgdGhhdCBTdHJpbmcgYXJyYXkuCisgICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIGVxdWFscyhTdHJpbmdbXSBjdXJyZW50LCBTdHJpbmdbXSBvdGhlcikKKyAgICB7CisgICAgICAgIGludCBjb3VudCA9IGN1cnJlbnQubGVuZ3RoOworCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAgICAgIGlmICghY3VycmVudFtpXS5lcXVhbHMob3RoZXJbaV0pKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgICAqLworCisgICAgLy9+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKKyAgICAvKioKKyAgICAgKiBHZXQgdGhlIHtAbGluayBEYXRlRm9ybWF0U3ltYm9sc30gb2JqZWN0IHRoYXQgc2hvdWxkIGJlIHVzZWQgdG8gZm9ybWF0IGEKKyAgICAgKiBjYWxlbmRhciBzeXN0ZW0ncyBkYXRlcyBpbiB0aGUgZ2l2ZW4gbG9jYWxlLgorICAgICAqIDxwPgorICAgICAqIDxiPlN1YmNsYXNzaW5nOjwvYj48YnI+CisgICAgICogV2hlbiBjcmVhdGluZyBhIG5ldyBDYWxlbmRhciBzdWJjbGFzcywgeW91IG11c3QgY3JlYXRlIHRoZQorICAgICAqIHtAbGluayBSZXNvdXJjZUJ1bmRsZSBSZXNvdXJjZUJ1bmRsZX0KKyAgICAgKiBjb250YWluaW5nIGl0cyB7QGxpbmsgRGF0ZUZvcm1hdFN5bWJvbHMgRGF0ZUZvcm1hdFN5bWJvbHN9IGluIGEgc3BlY2lmaWMgcGxhY2UuCisgICAgICogVGhlIHJlc291cmNlIGJ1bmRsZSBuYW1lIGlzIGJhc2VkIG9uIHRoZSBjYWxlbmRhcidzIGZ1bGx5LXNwZWNpZmllZAorICAgICAqIGNsYXNzIG5hbWUsIHdpdGggIi5yZXNvdXJjZXMiIGluc2VydGVkIGF0IHRoZSBlbmQgb2YgdGhlIHBhY2thZ2UgbmFtZQorICAgICAqIChqdXN0IGJlZm9yZSB0aGUgY2xhc3MgbmFtZSkgYW5kICJTeW1ib2xzIiBhcHBlbmRlZCB0byB0aGUgZW5kLgorICAgICAqIEZvciBleGFtcGxlLCB0aGUgYnVuZGxlIGNvcnJlc3BvbmRpbmcgdG8gImNvbS5pYm0uaWN1LnV0aWwuSGVicmV3Q2FsZW5kYXIiCisgICAgICogaXMgImNvbS5pYm0uaWN1LmltcGwuZGF0YS5IZWJyZXdDYWxlbmRhclN5bWJvbHMiLgorICAgICAqIDxwPgorICAgICAqIFdpdGhpbiB0aGUgUmVzb3VyY2VCdW5kbGUsIHRoaXMgbWV0aG9kIHNlYXJjaGVzIGZvciBmaXZlIGtleXM6CisgICAgICogPHVsPgorICAgICAqIDxsaT48Yj5EYXlOYW1lczwvYj4gLQorICAgICAqICAgICAgQW4gYXJyYXkgb2Ygc3RyaW5ncyBjb3JyZXNwb25kaW5nIHRvIGVhY2ggcG9zc2libGUKKyAgICAgKiAgICAgIHZhbHVlIG9mIHRoZSA8Y29kZT5EQVlfT0ZfV0VFSzwvY29kZT4gZmllbGQuICBFdmVuIHRob3VnaAorICAgICAqICAgICAgPGNvZGU+REFZX09GX1dFRUs8L2NvZGU+IHN0YXJ0cyB3aXRoIDxjb2RlPlNVTkRBWTwvY29kZT4gPSAxLAorICAgICAqICAgICAgVGhpcyBhcnJheSBpcyAwLWJhc2VkOyB0aGUgbmFtZSBmb3IgU3VuZGF5IGdvZXMgaW4gdGhlCisgICAgICogICAgICBmaXJzdCBwb3NpdGlvbiwgYXQgaW5kZXggMC4gIElmIHRoaXMga2V5IGlzIG5vdCBmb3VuZAorICAgICAqICAgICAgaW4gdGhlIGJ1bmRsZSwgdGhlIGRheSBuYW1lcyBhcmUgaW5oZXJpdGVkIGZyb20gdGhlCisgICAgICogICAgICBkZWZhdWx0IDxjb2RlPkRhdGVGb3JtYXRTeW1ib2xzPC9jb2RlPiBmb3IgdGhlIHJlcXVlc3RlZCBsb2NhbGUuCisgICAgICoKKyAgICAgKiA8bGk+PGI+RGF5QWJicmV2aWF0aW9uczwvYj4gLQorICAgICAqICAgICAgQW4gYXJyYXkgb2YgYWJicmV2aWF0ZWQgZGF5IG5hbWVzIGNvcnJlc3BvbmRpbmcKKyAgICAgKiAgICAgIHRvIHRoZSB2YWx1ZXMgaW4gdGhlICJEYXlOYW1lcyIgYXJyYXkuICBJZiB0aGlzIGtleQorICAgICAqICAgICAgaXMgbm90IGZvdW5kIGluIHRoZSByZXNvdXJjZSBidW5kbGUsIHRoZSAiRGF5TmFtZXMiCisgICAgICogICAgICB2YWx1ZXMgYXJlIHVzZWQgaW5zdGVhZC4gIElmIG5laXRoZXIga2V5IGlzIGZvdW5kLAorICAgICAqICAgICAgdGhlIGRheSBhYmJyZXZpYXRpb25zIGFyZSBpbmhlcml0ZWQgZnJvbSB0aGUgZGVmYXVsdAorICAgICAqICAgICAgPGNvZGU+RGF0ZUZvcm1hdFN5bWJvbHM8L2NvZGU+IGZvciB0aGUgbG9jYWxlLgorICAgICAqCisgICAgICogPGxpPjxiPk1vbnRoTmFtZXM8L2I+IC0KKyAgICAgKiAgICAgIEFuIGFycmF5IG9mIHN0cmluZ3MgY29ycmVzcG9uZGluZyB0byBlYWNoIHBvc3NpYmxlCisgICAgICogICAgICB2YWx1ZSBvZiB0aGUgPGNvZGU+TU9OVEg8L2NvZGU+IGZpZWxkLiAgSWYgdGhpcyBrZXkgaXMgbm90IGZvdW5kCisgICAgICogICAgICBpbiB0aGUgYnVuZGxlLCB0aGUgbW9udGggbmFtZXMgYXJlIGluaGVyaXRlZCBmcm9tIHRoZQorICAgICAqICAgICAgZGVmYXVsdCA8Y29kZT5EYXRlRm9ybWF0U3ltYm9sczwvY29kZT4gZm9yIHRoZSByZXF1ZXN0ZWQgbG9jYWxlLgorICAgICAqCisgICAgICogPGxpPjxiPk1vbnRoQWJicmV2aWF0aW9uczwvYj4gLQorICAgICAqICAgICAgQW4gYXJyYXkgb2YgYWJicmV2aWF0ZWQgZGF5IG5hbWVzIGNvcnJlc3BvbmRpbmcKKyAgICAgKiAgICAgIHRvIHRoZSB2YWx1ZXMgaW4gdGhlICJNb250aE5hbWVzIiBhcnJheS4gIElmIHRoaXMga2V5CisgICAgICogICAgICBpcyBub3QgZm91bmQgaW4gdGhlIHJlc291cmNlIGJ1bmRsZSwgdGhlICJNb250aE5hbWVzIgorICAgICAqICAgICAgdmFsdWVzIGFyZSB1c2VkIGluc3RlYWQuICBJZiBuZWl0aGVyIGtleSBpcyBmb3VuZCwKKyAgICAgKiAgICAgIHRoZSBkYXkgYWJicmV2aWF0aW9ucyBhcmUgaW5oZXJpdGVkIGZyb20gdGhlIGRlZmF1bHQKKyAgICAgKiAgICAgIDxjb2RlPkRhdGVGb3JtYXRTeW1ib2xzPC9jb2RlPiBmb3IgdGhlIGxvY2FsZS4KKyAgICAgKgorICAgICAqIDxsaT48Yj5FcmFzPC9iPiAtCisgICAgICogICAgICBBbiBhcnJheSBvZiBzdHJpbmdzIGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBwb3NzaWJsZQorICAgICAqICAgICAgdmFsdWUgb2YgdGhlIDxjb2RlPkVSQTwvY29kZT4gZmllbGQuICBJZiB0aGlzIGtleSBpcyBub3QgZm91bmQKKyAgICAgKiAgICAgIGluIHRoZSBidW5kbGUsIHRoZSBlcmEgbmFtZXMgYXJlIGluaGVyaXRlZCBmcm9tIHRoZQorICAgICAqICAgICAgZGVmYXVsdCA8Y29kZT5EYXRlRm9ybWF0U3ltYm9sczwvY29kZT4gZm9yIHRoZSByZXF1ZXN0ZWQgbG9jYWxlLgorICAgICAqIDwvdWw+CisgICAgICogPHA+CisgICAgICogQHBhcmFtIGNhbCAgICAgICBUaGUgY2FsZW5kYXIgc3lzdGVtIHdob3NlIGRhdGUgZm9ybWF0IHN5bWJvbHMgYXJlIGRlc2lyZWQuCisgICAgICogQHBhcmFtIGxvY2FsZSAgICBUaGUgbG9jYWxlIHdob3NlIHN5bWJvbHMgYXJlIGRlc2lyZWQuCisgICAgICoKKyAgICAgKiBAc2VlIERhdGVGb3JtYXRTeW1ib2xzI0RhdGVGb3JtYXRTeW1ib2xzKGphdmEudXRpbC5Mb2NhbGUpCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIERhdGVGb3JtYXRTeW1ib2xzKENhbGVuZGFyIGNhbCwgTG9jYWxlIGxvY2FsZSkgeworICAgICAgICB0aGlzKGNhbD09bnVsbD9udWxsOmNhbC5nZXRDbGFzcygpLCBsb2NhbGUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFZhcmlhbnQgb2YgRGF0ZUZvcm1hdFN5bWJvbHMoQ2FsZW5kYXIsIExvY2FsZSkgdGhhdCB0YWtlcyB0aGUgQ2FsZW5kYXIgY2xhc3MKKyAgICAgKiBpbnN0ZWFkIG9mIGEgQ2FsYW5kYXIgaW5zdGFuY2UuCisgICAgICogQHNlZSAjRGF0ZUZvcm1hdFN5bWJvbHMoQ2FsZW5kYXIsIExvY2FsZSkKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBEYXRlRm9ybWF0U3ltYm9scyhDbGFzcyBjYWxlbmRhckNsYXNzLCBMb2NhbGUgbG9jYWxlKSB7CisgICAgICAgIHRoaXMobG9jYWxlKTsgLy8gb2xkLXN0eWxlIGNvbnN0cnVjdGlvbgorICAgICAgICBpZiAoY2FsZW5kYXJDbGFzcyAhPSBudWxsKSB7CisgICAgICAgICAgICBSZXNvdXJjZUJ1bmRsZSBidW5kbGUgPSBudWxsOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBidW5kbGUgPSBnZXREYXRlRm9ybWF0QnVuZGxlKGNhbGVuZGFyQ2xhc3MsIGxvY2FsZSk7CisgICAgICAgICAgICB9IGNhdGNoIChNaXNzaW5nUmVzb3VyY2VFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIC8vaWYgKCEoY2FsIGluc3RhbmNlb2YgR3JlZ29yaWFuQ2FsZW5kYXIpKSB7CisgICAgICAgICAgICAgICAgaWYgKCEoR3JlZ29yaWFuQ2FsZW5kYXIuY2xhc3MuaXNBc3NpZ25hYmxlRnJvbShjYWxlbmRhckNsYXNzKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gT2sgZm9yIHN5bWJvbHMgdG8gYmUgbWlzc2luZyBmb3IgYSBHcmVnb3JpYW4gY2FsZW5kYXIsIGJ1dAorICAgICAgICAgICAgICAgICAgICAvLyBub3QgZm9yIGFueSBvdGhlciB0eXBlLgorICAgICAgICAgICAgICAgICAgICB0aHJvdyBlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbnN0cnVjdENhbGVuZGFyU3BlY2lmaWMoYnVuZGxlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEZldGNoIGEgY3VzdG9tIGNhbGVuZGFyJ3MgRGF0ZUZvcm1hdFN5bWJvbHMgb3V0IG9mIHRoZSBnaXZlbiByZXNvdXJjZQorICAgICAqIGJ1bmRsZS4gIFN5bWJvbHMgdGhhdCBhcmUgbm90IG92ZXJyaWRkZW4gYXJlIGluaGVyaXRlZCBmcm9tIHRoZQorICAgICAqIGRlZmF1bHQgRGF0ZUZvcm1hdFN5bWJvbHMgZm9yIHRoZSBsb2NhbGUuCisgICAgICogQHNlZSBEYXRlRm9ybWF0U3ltYm9scyNEYXRlRm9ybWF0U3ltYm9scworICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBEYXRlRm9ybWF0U3ltYm9scyhSZXNvdXJjZUJ1bmRsZSBidW5kbGUsIExvY2FsZSBsb2NhbGUpIHsKKyAgICAgICAgLy8gR2V0IHRoZSBkZWZhdWx0IHN5bWJvbHMgZm9yIHRoZSBsb2NhbGUsIHNpbmNlIG1vc3QKKyAgICAgICAgLy8gY2FsZW5kYXJzIHdpbGwgb25seSBuZWVkIHRvIG92ZXJyaWRlIG1vbnRoIG5hbWVzIGFuZCB3aWxsCisgICAgICAgIC8vIHdhbnQgZXZlcnl0aGluZyBlbHNlIHRoZSBzYW1lCisgICAgICAgIHRoaXMobG9jYWxlKTsgLy8gb2xkLXN0eWxlIGNvbnN0cnVjdGlvbgorICAgICAgICBjb25zdHJ1Y3RDYWxlbmRhclNwZWNpZmljKGJ1bmRsZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2l2ZW4gYSByZXNvdXJjZSBidW5kbGUgc3BlY2lmaWMgdG8gdGhlIGdpdmVuIENhbGVuZGFyIGNsYXNzLAorICAgICAqIGluaXRpYWxpemUgdGhpcyBvYmplY3QuICBNZW1iZXIgdmFyaWFibGVzIHdpbGwgaGF2ZSBhbHJlYWR5IGJlZW4KKyAgICAgKiBpbml0aWFsaXplZCB1c2luZyB0aGUgZGVmYXVsdCBtZWNoYW5pc20sIHNvIG9ubHkgdGhvc2UgdGhhdCBkaWZmZXIKKyAgICAgKiBmcm9tIG9yIHN1cHBsZW1lbnQgdGhlIHN0YW5kYXJkIHJlc291cmNlIGRhdGEgbmVlZCBiZSBoYW5kbGVkIGhlcmUuCisgICAgICogSWYgc3ViY2xhc3NlcyBvdmVycmlkZSB0aGlzIG1ldGhvZCwgdGhleSBzaG91bGQgY2FsbAorICAgICAqIDxjb2RlPnN1cGVyLmNvbnN0cnVjdENhbGVuZGFyU3BlY2lmaWMoYnVuZGxlKTwvY29kZT4gYXMgbmVlZGVkIHRvCisgICAgICogaGFuZGxlIHRoZSAiRGF5TmFtZXMiLCAiRGF5QWJicmV2aWF0aW9ucyIsICJNb250aE5hbWVzIiwKKyAgICAgKiAiTW9udGhBYmJyZXZpYXRpb25zIiwgYW5kICJFcmFzIiByZXNvdXJjZSBkYXRhLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHByb3RlY3RlZCB2b2lkIGNvbnN0cnVjdENhbGVuZGFyU3BlY2lmaWMoUmVzb3VyY2VCdW5kbGUgYnVuZGxlKSB7CisKKyAgICAgICAgLy8gRmV0Y2ggdGhlIGRheSBuYW1lcyBmcm9tIHRoZSByZXNvdXJjZSBidW5kbGUuICBJZiB0aGV5J3JlIG5vdCBmb3VuZCwKKyAgICAgICAgLy8gaXQncyBvazsgd2UnbGwganVzdCB1c2UgdGhlIGRlZmF1bHQgb25lcy4KKyAgICAgICAgLy8gQWxsb3cgYSBudWxsIFJlc291cmNlQnVuZGxlIGp1c3QgZm9yIHRoZSBzYWtlIG9mIGNvbXBsZXRlbmVzczsKKyAgICAgICAgLy8gdGhpcyBpcyB1c2VmdWwgZm9yIGNhbGVuZGFycyB0aGF0IGRvbid0IGhhdmUgYW55IG92ZXJyaWRkZW4gc3ltYm9scworCisgICAgICAgIGlmIChidW5kbGUgIT0gbnVsbCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBTdHJpbmdbXSB0ZW1wID0gYnVuZGxlLmdldFN0cmluZ0FycmF5KCJEYXlOYW1lcyIpOworICAgICAgICAgICAgICAgIHNldFdlZWtkYXlzKHRlbXApOworICAgICAgICAgICAgICAgIHNldFNob3J0V2Vla2RheXModGVtcCk7CisKKyAgICAgICAgICAgICAgICB0ZW1wID0gYnVuZGxlLmdldFN0cmluZ0FycmF5KCJEYXlBYmJyZXZpYXRpb25zIik7CisgICAgICAgICAgICAgICAgc2V0U2hvcnRXZWVrZGF5cyggdGVtcCApOworICAgICAgICAgICAgfSBjYXRjaCAoTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uIGUpIHt9CisKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgU3RyaW5nW10gdGVtcCA9IGJ1bmRsZS5nZXRTdHJpbmdBcnJheSgiTW9udGhOYW1lcyIpOworICAgICAgICAgICAgICAgIHNldE1vbnRocyggdGVtcCApOworICAgICAgICAgICAgICAgIHNldFNob3J0TW9udGhzKCB0ZW1wICk7CisKKyAgICAgICAgICAgICAgICB0ZW1wID0gYnVuZGxlLmdldFN0cmluZ0FycmF5KCJNb250aEFiYnJldmlhdGlvbnMiKTsKKyAgICAgICAgICAgICAgICBzZXRTaG9ydE1vbnRocyggdGVtcCApOworICAgICAgICAgICAgfSBjYXRjaCAoTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uIGUpIHt9CisKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgU3RyaW5nW10gdGVtcCA9IGJ1bmRsZS5nZXRTdHJpbmdBcnJheSgiRXJhcyIpOworICAgICAgICAgICAgICAgIHNldEVyYXMoIHRlbXAgKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKE1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiBlKSB7fQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogRmluZCB0aGUgUmVzb3VyY2VCdW5kbGUgY29udGFpbmluZyB0aGUgZGF0ZSBmb3JtYXQgaW5mb3JtYXRpb24gZm9yCisgICAgICogYSBzcGVjaWZpZWQgY2FsZW5kYXIgc3ViY2xhc3MgaW4gYSBnaXZlbiBsb2NhbGUuCisgICAgICogPHA+CisgICAgICogVGhlIHJlc291cmNlIGJ1bmRsZSBuYW1lIGlzIGJhc2VkIG9uIHRoZSBjYWxlbmRhcidzIGZ1bGx5LXNwZWNpZmllZAorICAgICAqIGNsYXNzIG5hbWUsIHdpdGggIi5yZXNvdXJjZXMiIGluc2VydGVkIGF0IHRoZSBlbmQgb2YgdGhlIHBhY2thZ2UgbmFtZQorICAgICAqIChqdXN0IGJlZm9yZSB0aGUgY2xhc3MgbmFtZSkgYW5kICJTeW1ib2xzIiBhcHBlbmRlZCB0byB0aGUgZW5kLgorICAgICAqIEZvciBleGFtcGxlLCB0aGUgYnVuZGxlIGNvcnJlc3BvbmRpbmcgdG8gImNvbS5pYm0uaWN1LnV0aWwuSGVicmV3Q2FsZW5kYXIiCisgICAgICogaXMgImNvbS5pYm0uaWN1LmltcGwuZGF0YS5IZWJyZXdDYWxlbmRhclN5bWJvbHMiLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHN0YXRpYyBwdWJsaWMgUmVzb3VyY2VCdW5kbGUgZ2V0RGF0ZUZvcm1hdEJ1bmRsZShDbGFzcyBjYWxlbmRhckNsYXNzLCBMb2NhbGUgbG9jYWxlKQorICAgICAgICB0aHJvd3MgTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uIHsKKworICAgICAgICAvLyBGaW5kIHRoZSBjYWxlbmRhcidzIGNsYXNzIG5hbWUsIHdoaWNoIHdlJ3JlIGdvaW5nIHRvIHVzZSB0byBjb25zdHJ1Y3QgdGhlCisgICAgICAgIC8vIHJlc291cmNlIGJ1bmRsZSBuYW1lLgorICAgICAgICBTdHJpbmcgZnVsbE5hbWUgPSBjYWxlbmRhckNsYXNzLmdldE5hbWUoKTsKKyAgICAgICAgaW50IGxhc3REb3QgPSBmdWxsTmFtZS5sYXN0SW5kZXhPZignLicpOworICAgICAgICBTdHJpbmcgY2xhc3NOYW1lID0gZnVsbE5hbWUuc3Vic3RyaW5nKGxhc3REb3QrMSk7CisKKyAgICAgICAgU3RyaW5nIGJ1bmRsZU5hbWUgPSBjbGFzc05hbWUgKyAiU3ltYm9scyI7CisKKyAgICAgICAgUmVzb3VyY2VCdW5kbGUgcmVzdWx0ID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJlc3VsdCA9IElDVUxvY2FsZURhdGEuZ2V0UmVzb3VyY2VCdW5kbGUoYnVuZGxlTmFtZSwgbG9jYWxlKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIC8vaWYgKCEoY2FsIGluc3RhbmNlb2YgR3JlZ29yaWFuQ2FsZW5kYXIpKSB7CisgICAgICAgICAgICBpZiAoIShHcmVnb3JpYW5DYWxlbmRhci5jbGFzcy5pc0Fzc2lnbmFibGVGcm9tKGNhbGVuZGFyQ2xhc3MpKSkgeworICAgICAgICAgICAgICAgIC8vIE9rIGZvciBzeW1ib2xzIHRvIGJlIG1pc3NpbmcgZm9yIGEgR3JlZ29yaWFuIGNhbGVuZGFyLCBidXQKKyAgICAgICAgICAgICAgICAvLyBub3QgZm9yIGFueSBvdGhlciB0eXBlLgorICAgICAgICAgICAgICAgIHRocm93IGU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBWYXJpYW50IG9mIGdldERhdGVGb3JtYXRCdW5kbGUoamF2YS5sYW5nLkNsYXNzLCBqYXZhLnV0aWwuTG9jYWxlKSB0aGF0IHRha2VzCisgICAgICogYSBDYWxlbmRhciBpbnN0YW5jZSBpbnN0ZWFkIG9mIGEgQ2FsZW5kYXIgY2xhc3MuCisgICAgICogQHNlZSAjZ2V0RGF0ZUZvcm1hdEJ1bmRsZShqYXZhLmxhbmcuQ2xhc3MsIGphdmEudXRpbC5Mb2NhbGUpCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBzdGF0aWMgcHVibGljIFJlc291cmNlQnVuZGxlIGdldERhdGVGb3JtYXRCdW5kbGUoQ2FsZW5kYXIgY2FsLCBMb2NhbGUgbG9jYWxlKQorICAgICAgICB0aHJvd3MgTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uIHsKKyAgICAgICAgcmV0dXJuIGdldERhdGVGb3JtYXRCdW5kbGUoY2FsPT1udWxsP251bGw6Y2FsLmdldENsYXNzKCksIGxvY2FsZSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3RleHQvRGVjaW1hbEZvcm1hdC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvRGVjaW1hbEZvcm1hdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmZjYTg4YjUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdGV4dC9EZWNpbWFsRm9ybWF0LmphdmEKQEAgLTAsMCArMSwzMzczIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvdGV4dC9EZWNpbWFsRm9ybWF0LmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMTIvMDUgMDE6MjE6MzggJCAKKyAqICRSZXZpc2lvbjogMS4yMCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UudGV4dDsKKworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuQ3VycmVuY3k7CitpbXBvcnQgamF2YS50ZXh0LkZvcm1hdDsKK2ltcG9ydCBqYXZhLnRleHQuUGFyc2VQb3NpdGlvbjsKK2ltcG9ydCBqYXZhLnRleHQuRmllbGRQb3NpdGlvbjsKK2ltcG9ydCBqYXZhLm1hdGguQmlnSW50ZWdlcjsKK2ltcG9ydCBqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGU7CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uT2JqZWN0SW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKK2ltcG9ydCBqYXZhLmlvLkludmFsaWRPYmplY3RFeGNlcHRpb247IC8vQnVnIDQxODU3NjEgW1JpY2hhcmQvR0NMXQorCisvKioKKyAqIDxjb2RlPkRlY2ltYWxGb3JtYXQ8L2NvZGU+IGlzIGEgY29uY3JldGUgc3ViY2xhc3Mgb2YKKyAqIDxjb2RlPk51bWJlckZvcm1hdDwvY29kZT4gdGhhdCBmb3JtYXRzIGRlY2ltYWwgbnVtYmVycy4gSXQgaGFzIGEgdmFyaWV0eSBvZgorICogZmVhdHVyZXMgZGVzaWduZWQgdG8gbWFrZSBpdCBwb3NzaWJsZSB0byBwYXJzZSBhbmQgZm9ybWF0IG51bWJlcnMgaW4gYW55CisgKiBsb2NhbGUsIGluY2x1ZGluZyBzdXBwb3J0IGZvciBXZXN0ZXJuLCBBcmFiaWMsIG9yIEluZGljIGRpZ2l0cy4gIEl0IGFsc28KKyAqIHN1cHBvcnRzIGRpZmZlcmVudCBmbGF2b3JzIG9mIG51bWJlcnMsIGluY2x1ZGluZyBpbnRlZ2VycyAoMTIzKSwgZml4ZWQtcG9pbnQKKyAqIG51bWJlcnMgKDEyMy40KSwgc2NpZW50aWZpYyBub3RhdGlvbiAoMS4yM0U0KSwgcGVyY2VudGFnZXMgKDEyJSksIGFuZAorICogY3VycmVuY3kgYW1vdW50cyAoJDEyMykuICBBbGwgb2YgdGhlc2UgZmxhdm9ycyBjYW4gYmUgZWFzaWx5IGxvY2FsaXplZC4KKyAqCisgKiA8cD48c3Ryb25nPlRoaXMgaXMgYW4gZW5oYW5jZWQgdmVyc2lvbiBvZiA8Y29kZT5EZWNpbWFsRm9ybWF0PC9jb2RlPiB0aGF0CisgKiBpcyBiYXNlZCBvbiB0aGUgc3RhbmRhcmQgdmVyc2lvbiBpbiB0aGUgSkRLLiAgTmV3IG9yIGNoYW5nZWQgZnVuY3Rpb25hbGl0eQorICogaXMgbGFiZWxlZAorICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPiBvcgorICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+Q0hBTkdFRDwvZm9udD48L3N0cm9uZz4uPC9zdHJvbmc+CisgKgorICogPHA+VG8gb2J0YWluIGEgPGNvZGU+TnVtYmVyRm9ybWF0PC9jb2RlPiBmb3IgYSBzcGVjaWZpYyBsb2NhbGUgKGluY2x1ZGluZyB0aGUKKyAqIGRlZmF1bHQgbG9jYWxlKSBjYWxsIG9uZSBvZiA8Y29kZT5OdW1iZXJGb3JtYXQ8L2NvZGU+J3MgZmFjdG9yeSBtZXRob2RzIHN1Y2gKKyAqIGFzIDxjb2RlPmdldEluc3RhbmNlKCk8L2NvZGU+LiBEbyBub3QgY2FsbCB0aGUgPGNvZGU+RGVjaW1hbEZvcm1hdDwvY29kZT4KKyAqIGNvbnN0cnVjdG9ycyBkaXJlY3RseSwgdW5sZXNzIHlvdSBrbm93IHdoYXQgeW91IGFyZSBkb2luZywgc2luY2UgdGhlCisgKiA8Y29kZT5OdW1iZXJGb3JtYXQ8L2NvZGU+IGZhY3RvcnkgbWV0aG9kcyBtYXkgcmV0dXJuIHN1YmNsYXNzZXMgb3RoZXIgdGhhbgorICogPGNvZGU+RGVjaW1hbEZvcm1hdDwvY29kZT4uIElmIHlvdSBuZWVkIHRvIGN1c3RvbWl6ZSB0aGUgZm9ybWF0IG9iamVjdCwgZG8KKyAqIHNvbWV0aGluZyBsaWtlIHRoaXM6CisgKgorICogPGJsb2NrcXVvdGU+PHByZT4KKyAqIE51bWJlckZvcm1hdCBmID0gTnVtYmVyRm9ybWF0LmdldEluc3RhbmNlKGxvYyk7CisgKiBpZiAoZiBpbnN0YW5jZW9mIERlY2ltYWxGb3JtYXQpIHsKKyAqICAgICAoKERlY2ltYWxGb3JtYXQpIGYpLnNldERlY2ltYWxTZXBhcmF0b3JBbHdheXNTaG93bih0cnVlKTsKKyAqIH0KKyAqIDwvcHJlPjwvYmxvY2txdW90ZT4KKyAqCisgKiA8cD5BIDxjb2RlPkRlY2ltYWxGb3JtYXQ8L2NvZGU+IGNvbXByaXNlcyBhIDxlbT5wYXR0ZXJuPC9lbT4gYW5kIGEgc2V0IG9mCisgKiA8ZW0+c3ltYm9sczwvZW0+LiAgVGhlIHBhdHRlcm4gbWF5IGJlIHNldCBkaXJlY3RseSB1c2luZworICogPGNvZGU+YXBwbHlQYXR0ZXJuKCk8L2NvZGU+LCBvciBpbmRpcmVjdGx5IHVzaW5nIHRoZSBBUEkgbWV0aG9kcy4gIFRoZQorICogc3ltYm9scyBhcmUgc3RvcmVkIGluIGEgPGNvZGU+RGVjaW1hbEZvcm1hdFN5bWJvbHM8L2NvZGU+IG9iamVjdC4gIFdoZW4gdXNpbmcKKyAqIHRoZSA8Y29kZT5OdW1iZXJGb3JtYXQ8L2NvZGU+IGZhY3RvcnkgbWV0aG9kcywgdGhlIHBhdHRlcm4gYW5kIHN5bWJvbHMgYXJlCisgKiByZWFkIGZyb20gbG9jYWxpemVkIDxjb2RlPlJlc291cmNlQnVuZGxlPC9jb2RlPnMgaW4gdGhlIHBhY2thZ2UKKyAqIDxjb2RlPmphdmEudGV4dC5yZXNvdXJjZTwvY29kZT4uCisgKiAKKyAqIDxoND5TeW5jaHJvbml6YXRpb248L2g0PgorICogPHA+CisgKiBEZWNpbWFsIGZvcm1hdHMgYXJlIGdlbmVyYWxseSBub3Qgc3luY2hyb25pemVkLiBJdCBpcyByZWNvbW1lbmRlZCB0byBjcmVhdGUgCisgKiBzZXBhcmF0ZSBmb3JtYXQgaW5zdGFuY2VzIGZvciBlYWNoIHRocmVhZC4gSWYgbXVsdGlwbGUgdGhyZWFkcyBhY2Nlc3MgYSBmb3JtYXQKKyAqIGNvbmN1cnJlbnRseSwgaXQgbXVzdCBiZSBzeW5jaHJvbml6ZWQgZXh0ZXJuYWxseS4gCisgKiA8cD4KKyAqCisgKiA8cD48c3Ryb25nPkV4YW1wbGU8L3N0cm9uZz4KKyAqCisgKiA8YmxvY2txdW90ZT48cHJlPgorICogPHN0cm9uZz4vLyBQcmludCBvdXQgYSBudW1iZXIgdXNpbmcgdGhlIGxvY2FsaXplZCBudW1iZXIsIGN1cnJlbmN5LAorICogLy8gYW5kIHBlcmNlbnQgZm9ybWF0IGZvciBlYWNoIGxvY2FsZTwvc3Ryb25nPgorICogTG9jYWxlW10gbG9jYWxlcyA9IE51bWJlckZvcm1hdC5nZXRBdmFpbGFibGVMb2NhbGVzKCk7CisgKiBkb3VibGUgbXlOdW1iZXIgPSAtMTIzNC41NjsKKyAqIE51bWJlckZvcm1hdCBmb3JtOworICogZm9yIChpbnQgaj0wOyBqPDM7ICsraikgeworICogICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRk9STUFUIik7CisgKiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsb2NhbGVzLmxlbmd0aDsgKytpKSB7CisgKiAgICAgICAgIGlmIChsb2NhbGVzW2ldLmdldENvdW50cnkoKS5sZW5ndGgoKSA9PSAwKSB7CisgKiAgICAgICAgICAgIC8vIFNraXAgbGFuZ3VhZ2Utb25seSBsb2NhbGVzCisgKiAgICAgICAgICAgIGNvbnRpbnVlOworICogICAgICAgICB9CisgKiAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQobG9jYWxlc1tpXS5nZXREaXNwbGF5TmFtZSgpKTsKKyAqICAgICAgICAgc3dpdGNoIChqKSB7CisgKiAgICAgICAgIGNhc2UgMDoKKyAqICAgICAgICAgICAgIGZvcm0gPSBOdW1iZXJGb3JtYXQuZ2V0SW5zdGFuY2UobG9jYWxlc1tpXSk7IGJyZWFrOworICogICAgICAgICBjYXNlIDE6CisgKiAgICAgICAgICAgICBmb3JtID0gTnVtYmVyRm9ybWF0LmdldEN1cnJlbmN5SW5zdGFuY2UobG9jYWxlc1tpXSk7IGJyZWFrOworICogICAgICAgICBkZWZhdWx0OgorICogICAgICAgICAgICAgZm9ybSA9IE51bWJlckZvcm1hdC5nZXRQZXJjZW50SW5zdGFuY2UobG9jYWxlc1tpXSk7IGJyZWFrOworICogICAgICAgICB9CisgKiAgICAgICAgIHRyeSB7CisgKiAgICAgICAgICAgICAvLyBBc3N1bWUgZm9ybSBpcyBhIERlY2ltYWxGb3JtYXQKKyAqICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIjogIiArICgoRGVjaW1hbEZvcm1hdCkgZm9ybSkudG9QYXR0ZXJuKCkKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiIC0+ICIgKyBmb3JtLmZvcm1hdChteU51bWJlcikpOworICogICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkge30KKyAqICAgICAgICAgdHJ5IHsKKyAqICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIC0+ICIgKyBmb3JtLnBhcnNlKGZvcm0uZm9ybWF0KG15TnVtYmVyKSkpOworICogICAgICAgICB9IGNhdGNoIChQYXJzZUV4Y2VwdGlvbiBlKSB7fQorICogICAgIH0KKyAqIH0KKyAqIDwvcHJlPjwvYmxvY2txdW90ZT4KKyAqCisgKiA8cD48c3Ryb25nPk5vdGVzPC9zdHJvbmc+CisgKgorICogPHA+QSA8Y29kZT5EZWNpbWFsRm9ybWF0PC9jb2RlPiBwYXR0ZXJuIGNvbnRhaW5zIGEgcG9zdGl2ZSBhbmQgbmVnYXRpdmUKKyAqIHN1YnBhdHRlcm4sIGZvciBleGFtcGxlLCAiIywjIzAuMDA7KCMsIyMwLjAwKSIuICBFYWNoIHN1YnBhdHRlcm4gaGFzIGEKKyAqIHByZWZpeCwgbnVtZXJpYyBwYXJ0LCBhbmQgc3VmZml4LiAgSWYgdGhlcmUgaXMgbm8gZXhwbGljaXQgbmVnYXRpdmUKKyAqIHN1YnBhdHRlcm4sIHRoZSBsb2NhbGl6ZWQgbWludXMgc2lnbiwgdHlwaWNhbGx5ICctJywgaXMgcHJlZml4ZWQgdG8gdGhlCisgKiBwb3NpdGl2ZSBmb3JtLiBUaGF0IGlzLCAiMC4wMCIgYWxvbmUgaXMgZXF1aXZhbGVudCB0byAiMC4wMDstMC4wMCIuICBJZiB0aGVyZQorICogaXMgYW4gZXhwbGljaXQgbmVnYXRpdmUgc3VicGF0dGVybiwgaXQgc2VydmVzIG9ubHkgdG8gc3BlY2lmeSB0aGUgbmVnYXRpdmUKKyAqIHByZWZpeCBhbmQgc3VmZml4OyB0aGUgbnVtYmVyIG9mIGRpZ2l0cywgbWluaW1hbCBkaWdpdHMsIGFuZCBvdGhlcgorICogY2hhcmFjdGVyaXN0aWNzIGFyZSBhbGwgdGhlIHNhbWUgYXMgdGhlIHBvc2l0aXZlIHBhdHRlcm4uIFRoYXQgbWVhbnMgdGhhdAorICogIiMsIyMwLjAjOygjKSIgaGFzIHByZWNpc2VseSB0aGUgc2FtZSByZXN1bHQgYXMgIiMsIyMwLjAjOygjLCMjMC4wIykiLgorICoKKyAqIDxwPlRoZSBwcmVmaXhlcywgc3VmZml4ZXMsIGFuZCB2YXJpb3VzIHN5bWJvbHMgdXNlZCBmb3IgaW5maW5pdHksIGRpZ2l0cywKKyAqIHRob3VzYW5kcyBzZXBhcmF0b3JzLCBkZWNpbWFsIHNlcGFyYXRvcnMsIGV0Yy4gbWF5IGJlIHNldCB0byBhcmJpdHJhcnkKKyAqIHZhbHVlcywgYW5kIHRoZXkgd2lsbCBhcHBlYXIgcHJvcGVybHkgZHVyaW5nIGZvcm1hdHRpbmcuICBIb3dldmVyLCBjYXJlIG11c3QKKyAqIGJlIHRha2VuIHRoYXQgdGhlIHN5bWJvbHMgYW5kIHN0cmluZ3MgZG8gbm90IGNvbmZsaWN0LCBvciBwYXJzaW5nIHdpbGwgYmUKKyAqIHVucmVsaWFibGUuICBGb3IgZXhhbXBsZSwgZWl0aGVyIHRoZSBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgcHJlZml4ZXMgb3IgdGhlCisgKiBzdWZmaXhlcyBtdXN0IGJlIGRpc3RpbmN0IGZvciA8Y29kZT5EZWNpbWFsRm9ybWF0LnBhcnNlKCk8L2NvZGU+IHRvIGJlIGFibGUKKyAqIHRvIGRpc3Rpbmd1aXNoIHBvc2l0aXZlIGZyb20gbmVnYXRpdmUgdmFsdWVzLiAgQW5vdGhlciBleGFtcGxlIGlzIHRoYXQgdGhlCisgKiBkZWNpbWFsIHNlcGFyYXRvciBhbmQgdGhvdXNhbmRzIHNlcGFyYXRvciBzaG91bGQgYmUgZGlzdGluY3QgY2hhcmFjdGVycywgb3IKKyAqIHBhcnNpbmcgd2lsbCBiZSBpbXBvc3NpYmxlLgorICoKKyAqIDxwPlRoZSBncm91cGluZyBzZXBhcmF0b3IgaXMgY29tbW9ubHkgdXNlZCBmb3IgdGhvdXNhbmRzLCBidXQgaW4gc29tZQorICogY291bnRyaWVzIGl0IHNlcGFyYXRlcyB0ZW4tdGhvdXNhbmRzLiBUaGUgZ3JvdXBpbmcgc2l6ZSBpcyBhIGNvbnN0YW50IG51bWJlcgorICogb2YgZGlnaXRzIGJldHdlZW4gdGhlIGdyb3VwaW5nIGNoYXJhY3RlcnMsIHN1Y2ggYXMgMyBmb3IgMTAwLDAwMCwwMDAgb3IgNCBmb3IKKyAqIDEsMDAwMCwwMDAwLgorICogSWYgeW91IHN1cHBseSBhIHBhdHRlcm4gd2l0aCBtdWx0aXBsZSBncm91cGluZyBjaGFyYWN0ZXJzLCB0aGUgaW50ZXJ2YWwKKyAqIGJldHdlZW4gdGhlIGxhc3Qgb25lIGFuZCB0aGUgZW5kIG9mIHRoZSBpbnRlZ2VyIGRldGVybWluZXMgdGhlIHByaW1hcnkKKyAqIGdyb3VwaW5nIHNpemUsIGFuZCB0aGUgaW50ZXJ2YWwgYmV0d2VlbiB0aGUgbGFzdCB0d28gZGV0ZXJtaW5lcworICogdGhlIHNlY29uZGFyeSBncm91cGluZyBzaXplIChzZWUgYmVsb3cpOyBhbGwgb3RoZXJzIGFyZSBpZ25vcmVkLgorICogU28gIiMsIyMsIyMjLCMjIyMiID09ICIjIyMsIyMjLCMjIyMiID09ICIjIywjLCMjIywjIyMjIi4KKyAqCisgKiA8UD5Tb21lIGxvY2FsZXMgaGF2ZSB0d28gZGlmZmVyZW50IGdyb3VwaW5nIGludGVydmFsczogIE9uZSB1c2VkIGZvciB0aGUKKyAqIGxlYXN0IHNpZ25pZmljYW50IGludGVnZXIgZGlnaXRzICh0aGUgcHJpbWFyeSBncm91cGluZyBzaXplKSwgYW5kCisgKiBvbmUgdXNlZCBmb3IgYWxsIG90aGVycyAodGhlIHNlY29uZGFyeSBncm91cGluZyBzaXplKS4gIEZvciBleGFtcGxlLAorICogaWYgdGhlIHByaW1hcnkgZ3JvdXBpbmcgaW50ZXJ2YWwgaXMgMywgYW5kIHRoZSBzZWNvbmRhcnkgaXMgMiwgdGhlbgorICogdGhpcyBjb3JyZXNwb25kcyB0byB0aGUgcGF0dGVybiAiIywjIywjIzAiLCBhbmQgdGhlIG51bWJlciAxMjM0NTY3ODkKKyAqIGlzIGZvcm1hdHRlZCBhcyAiMTIsMzQsNTYsNzg5Ii4KKyAqCisgKiA8cD48Y29kZT5EZWNpbWFsRm9ybWF0PC9jb2RlPiBwYXJzZXMgYWxsIFVuaWNvZGUgY2hhcmFjdGVycyB0aGF0IHJlcHJlc2VudAorICogZGVjaW1hbCBkaWdpdHMsIGFzIGRlZmluZWQgYnkgPGNvZGU+Q2hhcmFjdGVyLmRpZ2l0KCk8L2NvZGU+LiAgSW4gYWRkaXRpb24sCisgKiA8Y29kZT5EZWNpbWFsRm9ybWF0PC9jb2RlPiBhbHNvIHJlY29nbml6ZXMgYXMgZGlnaXRzIHRoZSB0ZW4gY29uc2VjdXRpdmUKKyAqIGNoYXJhY3RlcnMgc3RhcnRpbmcgd2l0aCB0aGUgbG9jYWxpemVkIHplcm8gZGlnaXQgZGVmaW5lZCBpbiB0aGUKKyAqIDxjb2RlPkRlY2ltYWxGb3JtYXRTeW1ib2xzPC9jb2RlPiBvYmplY3QuICBEdXJpbmcgZm9ybWF0dGluZywgdGhlCisgKiA8Y29kZT5EZWNpbWFsRm9ybWF0U3ltYm9sczwvY29kZT4tYmFzZWQgZGlnaXRzIGFyZSBvdXRwdXQuCisgKgorICogPHA+SWxsZWdhbCBwYXR0ZXJucywgc3VjaCBhcyAiIy4jLiMiIG9yICIjLiMjIywjIyMiLCB3aWxsIGNhdXNlCisgKiA8Y29kZT5EZWNpbWFsRm9ybWF0PC9jb2RlPiB0byB0aHJvdyBhbiA8Y29kZT5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb248L2NvZGU+CisgKiB3aXRoIGEgbWVzc2FnZSB0aGF0IGRlc2NyaWJlcyB0aGUgcHJvYmxlbS4KKyAqCisgKiA8cD5JZiA8Y29kZT5EZWNpbWFsRm9ybWF0LnBhcnNlKFN0cmluZywgUGFyc2VQb3NpdGlvbik8L2NvZGU+IGZhaWxzIHRvIHBhcnNlCisgKiBhIHN0cmluZywgaXQgcmV0dXJucyA8Y29kZT5udWxsPC9jb2RlPiBhbmQgbGVhdmVzIHRoZSBwYXJzZSBwb3NpdGlvbgorICogdW5jaGFuZ2VkLiAgVGhlIGNvbnZlbmllbmNlIG1ldGhvZCA8Y29kZT5EZWNpbWFsRm9ybWF0LnBhcnNlKFN0cmluZyk8L2NvZGU+CisgKiBpbmRpY2F0ZXMgcGFyc2UgZmFpbHVyZSBieSB0aHJvd2luZyBhIDxjb2RlPlBhcnNlRXhjZXB0aW9uPC9jb2RlPi4KKyAqCisgKiA8cD48c3Ryb25nPlNwZWNpYWwgQ2FzZXM8L3N0cm9uZz4KKyAqCisgKiA8cD48Y29kZT5OYU48L2NvZGU+IGlzIGZvcm1hdHRlZCBhcyBhIHNpbmdsZSBjaGFyYWN0ZXIsIHR5cGljYWxseQorICogPGNvZGU+JiM5Mjt1RkZGRDwvY29kZT4uICBUaGlzIGNoYXJhY3RlciBpcyBkZXRlcm1pbmVkIGJ5IHRoZQorICogPGNvZGU+RGVjaW1hbEZvcm1hdFN5bWJvbHM8L2NvZGU+IG9iamVjdC4gIFRoaXMgaXMgdGhlIG9ubHkgdmFsdWUgZm9yIHdoaWNoCisgKiB0aGUgcHJlZml4ZXMgYW5kIHN1ZmZpeGVzIGFyZSBub3QgdXNlZC4KKyAqCisgKiA8cD5JbmZpbml0eSBpcyBmb3JtYXR0ZWQgYXMgYSBzaW5nbGUgY2hhcmFjdGVyLCB0eXBpY2FsbHkKKyAqIDxjb2RlPiYjOTI7dTIyMUU8L2NvZGU+LCB3aXRoIHRoZSBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBwcmVmaXhlcyBhbmQgc3VmZml4ZXMKKyAqIGFwcGxpZWQuICBUaGUgaW5maW5pdHkgY2hhcmFjdGVyIGlzIGRldGVybWluZWQgYnkgdGhlCisgKiA8Y29kZT5EZWNpbWFsRm9ybWF0U3ltYm9sczwvY29kZT4gb2JqZWN0LgorICoKKyAqIDxwPgorICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICogPHN0cm9uZz5TY2llbnRpZmljIE5vdGF0aW9uPC9zdHJvbmc+CisgKgorICogPHA+TnVtYmVycyBpbiBzY2llbnRpZmljIG5vdGF0aW9uIGFyZSBleHByZXNzZWQgYXMgdGhlIHByb2R1Y3Qgb2YgYSBtYW50aXNzYQorICogYW5kIGEgcG93ZXIgb2YgdGVuLCBmb3IgZXhhbXBsZSwgMTIzNCBjYW4gYmUgZXhwcmVzc2VkIGFzIDEuMjM0IHggMTBeMy4gIFRoZQorICogbWFudGlzc2EgaXMgb2Z0ZW4gaW4gdGhlIHJhbmdlIDEuMCA8PSB4IDwgMTAuMCwgYnV0IGl0IG5lZWQgbm90IGJlLgorICogPGNvZGU+RGVjaW1hbEZvcm1hdDwvY29kZT4gY2FuIGJlIGluc3RydWN0ZWQgdG8gZm9ybWF0IGFuZCBwYXJzZSBzY2llbnRpZmljCisgKiBub3RhdGlvbiB0aHJvdWdoIHRoZSBBUEkgb3IgdmlhIGEgcGF0dGVybi4gIEluIGEgcGF0dGVybiwgdGhlIGV4cG9uZW50CisgKiBjaGFyYWN0ZXIgaW1tZWRpYXRlbHkgZm9sbG93ZWQgYnkgb25lIG9yIG1vcmUgZGlnaXQgY2hhcmFjdGVycyBpbmRpY2F0ZXMKKyAqIHNjaWVudGlmaWMgbm90YXRpb24uICBFeGFtcGxlOiAiMC4jIyNFMCIgZm9ybWF0cyB0aGUgbnVtYmVyIDEyMzQgYXMKKyAqICIxLjIzNEUzIi4KKyAqCisgKiA8dWw+CisgKiA8bGk+VGhlIG51bWJlciBvZiBkaWdpdCBjaGFyYWN0ZXJzIGFmdGVyIHRoZSBleHBvbmVudCBjaGFyYWN0ZXIgZ2l2ZXMgdGhlCisgKiBtaW5pbXVtIGV4cG9uZW50IGRpZ2l0IGNvdW50LiAgVGhlcmUgaXMgbm8gbWF4aW11bS4gIE5lZ2F0aXZlIGV4cG9uZW50cyBhcmUKKyAqIGZvcm1hdHRlZCB1c2luZyB0aGUgbG9jYWxpemVkIG1pbnVzIHNpZ24sIDxlbT5ub3Q8L2VtPiB0aGUgcHJlZml4IGFuZCBzdWZmaXgKKyAqIGZyb20gdGhlIHBhdHRlcm4uICBUaGlzIGFsbG93cyBwYXR0ZXJucyBzdWNoIGFzICIwLiMjI0UwIG0vcyIuICBUbyBwcmVmaXgKKyAqIHBvc2l0aXZlIGV4cG9uZW50cyB3aXRoIGEgbG9jYWxpemVkIHBsdXMgc2lnbiwgc3BlY2lmeSAnKycgYmV0d2VlbiB0aGUKKyAqIGV4cG9uZW50IGFuZCB0aGUgZGlnaXRzOiAiMC4jIyNFKzAiIHdpbGwgcHJvZHVjZSBmb3JtYXRzICIxRSsxIiwgIjFFKzAiLAorICogIjFFLTEiLCBldGMuICAoSW4gbG9jYWxpemVkIHBhdHRlcm5zLCB1c2UgdGhlIGxvY2FsaXplZCBwbHVzIHNpZ24gcmF0aGVyIHRoYW4KKyAqICcrJy4pCisgKgorICogPGxpPlRoZSBtaW5pbXVtIG51bWJlciBvZiBpbnRlZ2VyIGRpZ2l0cyBpcyBhY2hpZXZlZCBieSBhZGp1c3RpbmcgdGhlCisgKiBleHBvbmVudC4gIEV4YW1wbGU6IDAuMDAxMjMgZm9ybWF0dGVkIHdpdGggIjAwLiMjI0UwIiB5aWVsZHMgIjEyLjNFLTQiLiAgVGhpcworICogb25seSBoYXBwZW5zIGlmIHRoZXJlIGlzIG5vIG1heGltdW0gbnVtYmVyIG9mIGludGVnZXIgZGlnaXRzLiAgSWYgdGhlcmUgaXMgYQorICogbWF4aW11bSwgdGhlbiB0aGUgbWluaW11bSBudW1iZXIgb2YgaW50ZWdlciBkaWdpdHMgaXMgZml4ZWQgYXQgb25lLgorICoKKyAqIDxsaT5UaGUgbWF4aW11bSBudW1iZXIgb2YgaW50ZWdlciBkaWdpdHMsIGlmIHByZXNlbnQsIHNwZWNpZmllcyB0aGUgZXhwb25lbnQKKyAqIGdyb3VwaW5nLiAgVGhlIG1vc3QgY29tbW9uIHVzZSBvZiB0aGlzIGlzIHRvIGdlbmVyYXRlIDxlbT5lbmdpbmVlcmluZworICogbm90YXRpb248L2VtPiwgaW4gd2hpY2ggdGhlIGV4cG9uZW50IGlzIGEgbXVsdGlwbGUgb2YgdGhyZWUsIGUuZy4sCisgKiAiIyMwLiMjI0UwIi4gIFRoZSBudW1iZXIgMTIzNDUgaXMgZm9ybWF0dGVkIHVzaW5nICIjIzAuIyMjI0UwIiBhcyAiMTIuMzQ1RTMiLgorICoKKyAqIDxsaT5UaGUgbnVtYmVyIG9mIHNpZ25pZmljYW50IGRpZ2l0cyBpcyB0aGUgc3VtIG9mIHRoZSA8ZW0+bWluaW11bQorICogaW50ZWdlcjwvZW0+IGFuZCA8ZW0+bWF4aW11bSBmcmFjdGlvbjwvZW0+IGRpZ2l0cywgYW5kIGlzIHVuYWZmZWN0ZWQgYnkgdGhlCisgKiBtYXhpbXVtIGludGVnZXIgZGlnaXRzLiAgSWYgdGhpcyBzdW0gaXMgemVybywgdGhlbiBhbGwgc2lnbmlmaWNhbnQgZGlnaXRzIGFyZQorICogc2hvd24uICBUaGUgbnVtYmVyIG9mIHNpZ25pZmljYW50IGRpZ2l0cyBsaW1pdHMgdGhlIHRvdGFsIG51bWJlciBvZiBpbnRlZ2VyCisgKiBhbmQgZnJhY3Rpb24gZGlnaXRzIHRoYXQgd2lsbCBiZSBzaG93biBpbiB0aGUgbWFudGlzc2E7IGl0IGRvZXMgbm90IGFmZmVjdAorICogcGFyc2luZy4gIEZvciBleGFtcGxlLCAxMjM0NSBmb3JtYXR0ZWQgd2l0aCAiIyMwLiMjRTAiIGlzICIxMi4zRTMiLgorICoKKyAqIDxsaT5FeHBvbmVudGlhbCBwYXR0ZXJucyBtYXkgbm90IGNvbnRhaW4gZ3JvdXBpbmcgc2VwYXJhdG9ycy4KKyAqIDwvdWw+CisgKgorICogPHA+CisgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+CisgKiA8c3Ryb25nPlBhZGRpbmc8L3N0cm9uZz4KKyAqCisgKiA8cD48Y29kZT5EZWNpbWFsRm9ybWF0PC9jb2RlPiBzdXBwb3J0cyBwYWRkaW5nIHRoZSByZXN1bHQgb2YKKyAqIDxjb2RlPmZvcm1hdCgpPC9jb2RlPiB0byBhIHNwZWNpZmljIHdpZHRoLiAgUGFkZGluZyBtYXkgYmUgc3BlY2lmaWVkIGVpdGhlcgorICogdGhyb3VnaCB0aGUgQVBJIG9yIHRocm91Z2ggdGhlIHBhdHRlcm4gc3ludGF4LiAgSW4gYSBwYXR0ZXJuIHRoZSBwYWQgZXNjYXBlCisgKiBjaGFyYWN0ZXIsIGZvbGxvd2VkIGJ5IGEgc2luZ2xlIHBhZCBjaGFyYWN0ZXIsIGNhdXNlcyBwYWRkaW5nIHRvIGJlIHBhcnNlZAorICogYW5kIGZvcm1hdHRlZC4gIFRoZSBwYWQgZXNjYXBlIGNoYXJhY3RlciBpcyAnKicgaW4gdW5sb2NhbGl6ZWQgcGF0dGVybnMsIGFuZAorICogY2FuIGJlIGxvY2FsaXplZCB1c2luZyA8Y29kZT5EZWNpbWFsRm9ybWF0U3ltYm9scy5zZXRQYWRFc2NhcGUoKTwvY29kZT4uICBGb3IKKyAqIGV4YW1wbGUsIDxjb2RlPiIkKngjLCMjMC4wMCI8L2NvZGU+IGZvcm1hdHMgMTIzIHRvIDxjb2RlPiIkeHgxMjMuMDAiPC9jb2RlPiwKKyAqIGFuZCAxMjM0IHRvIDxjb2RlPiIkMSwyMzQuMDAiPC9jb2RlPi4KKyAqCisgKiA8dWw+CisgKiA8bGk+V2hlbiBwYWRkaW5nIGlzIGluIGVmZmVjdCwgdGhlIHdpZHRoIG9mIHRoZSBwb3NpdGl2ZSBzdWJwYXR0ZXJuLAorICogaW5jbHVkaW5nIHByZWZpeCBhbmQgc3VmZml4LCBkZXRlcm1pbmVzIHRoZSBmb3JtYXQgd2lkdGguICBGb3IgZXhhbXBsZSwgaW4KKyAqIHRoZSBwYXR0ZXJuIDxjb2RlPiIqICMwIG8nJ2Nsb2NrIjwvY29kZT4sIHRoZSBmb3JtYXQgd2lkdGggaXMgMTAuCisgKgorICogPGxpPlNvbWUgcGFyYW1ldGVycyB3aGljaCB1c3VhbGx5IGRvIG5vdCBtYXR0ZXIgaGF2ZSBtZWFuaW5nIHdoZW4gcGFkZGluZyBpcworICogdXNlZCwgYmVjYXVzZSB0aGUgcGF0dGVybiB3aWR0aCBpcyBzaWduaWZpY2FudCB3aXRoIHBhZGRpbmcuICBJbiB0aGUgcGF0dGVybgorICogIl4gIyMsIyMsIywjIzAuIyMiLCB0aGUgZm9ybWF0IHdpZHRoIGlzIDE0LiAgVGhlIGluaXRpYWwgY2hhcmFjdGVycyAiIyMsIyMsIgorICogZG8gbm90IGFmZmVjdCB0aGUgZ3JvdXBpbmcgc2l6ZSBvciBtYXhpbXVtIGludGVnZXIgZGlnaXRzLCBidXQgdGhleSBkbyBhZmZlY3QKKyAqIHRoZSBmb3JtYXQgd2lkdGguCisgKgorICogPGxpPlBhZGRpbmcgbWF5IGJlIGluc2VydGVkIGF0IG9uZSBvZiBmb3VyIGxvY2F0aW9uczogYmVmb3JlIHRoZSBwcmVmaXgsCisgKiBhZnRlciB0aGUgcHJlZml4LCBiZWZvcmUgdGhlIHN1ZmZpeCwgb3IgYWZ0ZXIgdGhlIHN1ZmZpeC4gIElmIHBhZGRpbmcgaXMKKyAqIHNwZWNpZmllZCBpbiBhbnkgb3RoZXIgbG9jYXRpb24sIDxjb2RlPkRlY2ltYWxGb3JtYXQuYXBwbHlQYXR0ZXJuKCk8L2NvZGU+CisgKiB0aHJvd3MgYW4gPGNvZGU+SWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uPC9jb2RlPi4gIElmIHRoZXJlIGlzIG5vIHByZWZpeCwKKyAqIGJlZm9yZSB0aGUgcHJlZml4IGFuZCBhZnRlciB0aGUgcHJlZml4IGFyZSBlcXVpdmFsZW50LCBsaWtld2lzZSBmb3IgdGhlCisgKiBzdWZmaXguCisgKgorICogPGxpPlRoZSBwYWQgY2hhcmFjdGVyIG1heSBub3QgYmUgYSBxdW90ZS4KKyAqIDwvdWw+CisgKgorICogPHA+CisgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+CisgKiA8c3Ryb25nPlJvdW5kaW5nPC9zdHJvbmc+CisgKgorICogPHA+PGNvZGU+RGVjaW1hbEZvcm1hdDwvY29kZT4gc3VwcG9ydHMgcm91bmRpbmcgdG8gYSBzcGVjaWZpYyBpbmNyZW1lbnQuICBGb3IKKyAqIGV4YW1wbGUsIDEyMzAgcm91bmRlZCB0byB0aGUgbmVhcmVzdCA1MCBpcyAxMjUwLiAgMS4yMzQgcm91bmRlZCB0byB0aGUKKyAqIG5lYXJlc3QgMC42NSBpcyAxLjMuICBUaGUgcm91bmRpbmcgaW5jcmVtZW50IG1heSBiZSBzcGVjaWZpZWQgdGhyb3VnaCB0aGUgQVBJCisgKiBvciBpbiBhIHBhdHRlcm4uICBUbyBzcGVjaWZ5IGEgcm91bmRpbmcgaW5jcmVtZW50IGluIGEgcGF0dGVybiwgaW5jbHVkZSB0aGUKKyAqIGluY3JlbWVudCBpbiB0aGUgcGF0dGVybiBpdHNlbGYuICAiIywjNTAiIHNwZWNpZmllcyBhIHJvdW5kaW5nIGluY3JlbWVudCBvZgorICogNTAuICAiIywjIzAuMDUiIHNwZWNpZmllcyBhIHJvdW5kaW5nIGluY3JlbWVudCBvZiAwLjA1LgorICoKKyAqIDx1bD4KKyAqIDxsaT5Sb3VuZGluZyBvbmx5IGFmZmVjdHMgdGhlIHN0cmluZyBwcm9kdWNlZCBieSBmb3JtYXR0aW5nLiAgSXQgZG9lcworICogbm90IGFmZmVjdCBwYXJzaW5nIG9yIGNoYW5nZSBhbnkgbnVtZXJpY2FsIHZhbHVlcy4KKyAqCisgKiA8bGk+QSA8ZW0+cm91bmRpbmcgbW9kZTwvZW0+IGRldGVybWluZXMgaG93IHZhbHVlcyBhcmUgcm91bmRlZDsgc2VlIHRoZQorICogPGNvZGU+amF2YS5tYXRoLkJpZ0RlY2ltYWw8L2NvZGU+IGRvY3VtZW50YXRpb24gZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlCisgKiBtb2Rlcy4gIFJvdW5kaW5nIGluY3JlbWVudHMgc3BlY2lmaWVkIGluIHBhdHRlcm5zIHVzZSB0aGUgZGVmYXVsdCBtb2RlLAorICogPGNvZGU+Uk9VTkRfSEFMRl9FVkVOPC9jb2RlPi4KKyAqCisgKiA8bGk+U29tZSBsb2NhbGVzIHVzZSByb3VuZGluZyBpbiB0aGVpciBjdXJyZW5jeSBmb3JtYXRzIHRvIHJlZmxlY3QgdGhlCisgKiBzbWFsbGVzdCBjdXJyZW5jeSBkZW5vbWluYXRpb24uCisgKgorICogPGxpPkluIGEgcGF0dGVybiwgZGlnaXRzICcxJyB0aHJvdWdoICc5JyBzcGVjaWZ5IHJvdW5kaW5nLCBidXQgb3RoZXJ3aXNlCisgKiBiZWhhdmUgaWRlbnRpY2FsbHkgdG8gZGlnaXQgJzAnLgorICogPC91bD4KKyAqCisgKiA8cD48c3Ryb25nPlBhdHRlcm4gU3ludGF4PC9zdHJvbmc+CisgKiA8cHJlPgorICogcGF0dGVybiAgICA6PSBzdWJwYXR0ZXJueyc7JyBzdWJwYXR0ZXJufQorICogc3VicGF0dGVybiA6PSB7cHJlZml4fW51bWJlcntzdWZmaXh9CisgKiBudW1iZXIgICAgIDo9IGludGVnZXJ7Jy4nIGZyYWN0aW9ufXtleHBvbmVudH0KKyAqIHByZWZpeCAgICAgOj0gJyYjOTI7dTAwMDAnLi4nJiM5Mjt1RkZGRCcgLSBzcGVjaWFsQ2hhcmFjdGVycworICogc3VmZml4ICAgICA6PSAnJiM5Mjt1MDAwMCcuLicmIzkyO3VGRkZEJyAtIHNwZWNpYWxDaGFyYWN0ZXJzCisgKiBpbnRlZ2VyICAgIDo9ICcjJyogJzAnKiAnMCcKKyAqIGZyYWN0aW9uICAgOj0gJzAnKiAnIycqCisgKiBleHBvbmVudCAgIDo9ICdFJyB7JysnfSAnMCcqICcwJworICogcGFkU3BlYyAgICA6PSAnKicgcGFkQ2hhcgorICogcGFkQ2hhciAgICA6PSAnJiM5Mjt1MDAwMCcuLicmIzkyO3VGRkZEJyAtIHF1b3RlCisgKiAmIzMyOworICogTm90YXRpb246CisgKiAgIFgqICAgICAgIDAgb3IgbW9yZSBpbnN0YW5jZXMgb2YgWAorICogICB7IFggfSAgICAwIG9yIDEgaW5zdGFuY2VzIG9mIFgKKyAqICAgWC4uWSAgICAgYW55IGNoYXJhY3RlciBmcm9tIFggdXAgdG8gWSwgaW5jbHVzaXZlCisgKiAgIFMgLSBUICAgIGNoYXJhY3RlcnMgaW4gUywgZXhjZXB0IHRob3NlIGluIFQKKyAqIDwvcHJlPgorICogVGhlIGZpcnN0IHN1YnBhdHRlcm4gaXMgZm9yIHBvc2l0aXZlIG51bWJlcnMuIFRoZSBzZWNvbmQgKG9wdGlvbmFsKQorICogc3VicGF0dGVybiBpcyBmb3IgbmVnYXRpdmUgbnVtYmVycy4KKyAqIAorICogPHA+Tm90IGluZGljYXRlZCBpbiB0aGUgQk5GIHN5bnRheCBhYm92ZToKKyAqIDx1bD48bGk+VGhlIGdyb3VwaW5nIHNlcGFyYXRvciAnLCcgY2FuIG9jY3VyIGluc2lkZSB0aGUgaW50ZWdlciBwb3J0aW9uIGJldHdlZW4gdGhlCisgKiBtb3N0IHNpZ25pZmljYW50IGRpZ2l0IGFuZCB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgZGlnaXQuCisgKgorICogPGxpPjxmb250IGNvbG9yPXJlZCBmYWNlPWhlbHZldGljYT48c3Ryb25nPk5FVzwvc3Ryb25nPjwvZm9udD4KKyAqICAgICBUd28gZ3JvdXBpbmcgaW50ZXJ2YWxzIGFyZSByZWNvZ25pemVkOiBUaGF0IGJldHdlZW4gdGhlCisgKiAgICAgZGVjaW1hbCBwb2ludCBhbmQgdGhlIGZpcnN0IGdyb3VwaW5nIHN5bWJvbCwgYW5kIHRoYXQKKyAqICAgICBiZXR3ZWVuIHRoZSBmaXJzdCBhbmQgc2Vjb25kIGdyb3VwaW5nIHN5bWJvbHMuIFRoZXNlCisgKiAgICAgaW50ZXJ2YWxzIGFyZSBpZGVudGljYWwgaW4gbW9zdCBsb2NhbGVzLCBidXQgaW4gc29tZQorICogICAgIGxvY2FsZXMgdGhleSBkaWZmZXIuIEZvciBleGFtcGxlLCB0aGUgcGF0dGVybgorICogICAgICZxdW90OyMsIyMsIyMjJnF1b3Q7IGZvcm1hdHMgdGhlIG51bWJlciAxMjM0NTY3ODkgYXMKKyAqICAgICAmcXVvdDsxMiwzNCw1Niw3ODkmcXVvdDsuPC9saT4KKyAqIAorICogPGxpPgorICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICogVGhlIHBhZCBzcGVjaWZpZXIgPGNvZGU+cGFkU3BlYzwvY29kZT4gbWF5IGFwcGVhciBiZWZvcmUgdGhlIHByZWZpeCwKKyAqIGFmdGVyIHRoZSBwcmVmaXgsIGJlZm9yZSB0aGUgc3VmZml4LCBhZnRlciB0aGUgc3VmZml4LCBvciBub3QgYXQgYWxsLgorICoKKyAqIDxsaT4KKyAqIDxzdHJvbmc+PGZvbnQgZmFjZT1oZWx2ZXRpY2EgY29sb3I9cmVkPk5FVzwvZm9udD48L3N0cm9uZz4KKyAqIEluIHBsYWNlIG9mICcwJywgdGhlIGRpZ2l0cyAnMScgdGhyb3VnaCAnOScgbWF5IGJlIHVzZWQgdG8KKyAqIGluZGljYXRlIGEgcm91bmRpbmcgaW5jcmVtZW50LgorICogPC91bD4KKyAqCisgKiA8cD48c3Ryb25nPlNwZWNpYWwgUGF0dGVybiBDaGFyYWN0ZXJzPC9zdHJvbmc+CisgKgorICogPHA+SGVyZSBhcmUgdGhlIHNwZWNpYWwgY2hhcmFjdGVycyB1c2VkIGluIHRoZSBwYXR0ZXJuLCB3aXRoIG5vdGVzIG9uIHRoZWlyCisgKiB1c2FnZS4gIFNwZWNpYWwgY2hhcmFjdGVycyBtdXN0IGJlIHF1b3RlZCwgdW5sZXNzIG5vdGVkIG90aGVyd2lzZSwgaWYgdGhleQorICogYXJlIHRvIGFwcGVhciBpbiB0aGUgcHJlZml4IG9yIHN1ZmZpeC4gIFRoaXMgZG9lcyBub3QgYXBwbHkgdG8gdGhvc2UgbGlzdGVkCisgKiB3aXRoIGxvY2F0aW9uICJwcmVmaXggb3Igc3VmZml4LiIgIFN1Y2ggY2hhcmFjdGVycyBzaG91bGQgb25seSBiZSBxdW90ZWQgaW4KKyAqIG9yZGVyIHRvIHJlbW92ZSB0aGVpciBzcGVjaWFsIG1lYW5pbmcuCisgKgorICogPHA+PHRhYmxlIGJvcmRlcj0xPgorICogPHRyPjx0aD5TeW1ib2w8dGg+TG9jYXRpb248dGg+TWVhbmluZzwvdHI+CisgKiA8dHI+PHRkPjAtOTx0ZD5OdW1iZXI8dGQ+RGlnaXQuCisgKiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+PGZvbnQgZmFjZT1oZWx2ZXRpY2EgY29sb3I9cmVkPk5FVzwvZm9udD48L3N0cm9uZz4KKyAqICAgICAgICAgICAgICAgICAgJzEnIHRocm91Z2ggJzknIGluZGljYXRlIHJvdW5kaW5nPC90cj4KKyAqIDx0cj48dGQ+Izx0ZD5OdW1iZXI8dGQ+RGlnaXQsIHplcm8gc2hvd3MgYXMgYWJzZW50PC90cj4KKyAqIDx0cj48dGQ+Ljx0ZD5OdW1iZXI8dGQ+RGVjaW1hbCBzZXBhcmF0b3Igb3IgbW9uZXRhcnkgZGVjaW1hbCBzZXBhcmF0b3I8L3RyPgorICogPHRyPjx0ZD4sPHRkPk51bWJlcjx0ZD5Hcm91cGluZyBzZXBhcmF0b3I8L3RyPgorICogPHRyPjx0ZD5FPHRkPk51bWJlcgorICogICAgICAgICAgPHRkPlNlcGFyYXRlcyBtYW50aXNzYSBhbmQgZXhwb25lbnQgaW4gc2NpZW50aWZpYyBub3RhdGlvbi4KKyAqICAgICAgICAgICAgICA8ZW0+TmVlZCBub3QgYmUgcXVvdGVkIGluIHByZWZpeCBvciBzdWZmaXguPC9lbT48L3RyPgorICogPHRyPjx0ZD48c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+CisgKiAgICAgICAgICs8dGQ+RXhwb25lbnQKKyAqICAgICAgICAgIDx0ZD5QcmVmaXggcG9zaXRpdmUgZXhwb25lbnRzIHdpdGggbG9jYWxpemVkIHBsdXMgc2lnbi4KKyAqICAgICAgICAgICAgICA8ZW0+TmVlZCBub3QgYmUgcXVvdGVkIGluIHByZWZpeCBvciBzdWZmaXguPC9lbT48L3RyPgorICogPHRyPjx0ZD47PHRkPlN1YnBhdHRlcm4gYm91bmRhcnkKKyAqICAgICAgICAgIDx0ZD5TZXBhcmF0ZXMgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIHN1YnBhdHRlcm5zPC90cj4KKyAqIDx0cj48dGQ+JTx0ZD5QcmVmaXggb3Igc3VmZml4PHRkPk11bHRpcGx5IGJ5IDEwMCBhbmQgc2hvdyBhcyBwZXJjZW50YWdlPC90cj4KKyAqIDx0cj48dGQ+JiM5Mjt1MjAzMDx0ZD5QcmVmaXggb3Igc3VmZml4CisgKiAgICAgICAgICAgICAgICAgICA8dGQ+TXVsdGlwbHkgYnkgMTAwMCBhbmQgc2hvdyBhcyBwZXIgbWlsbGU8L3RyPgorICogPHRyPjx0ZD4mIzkyO3UwMEE0PHRkPlByZWZpeCBvciBzdWZmaXgKKyAqICAgICAgICAgICAgICAgICAgIDx0ZD5DdXJyZW5jeSBzaWduLCByZXBsYWNlZCBieSBjdXJyZW5jeSBzeW1ib2wuICBJZgorICogICAgICAgICAgICAgICAgICAgZG91YmxlZCwgcmVwbGFjZWQgYnkgaW50ZXJuYXRpb25hbCBjdXJyZW5jeSBzeW1ib2wuCisgKiAgICAgICAgICAgICAgICAgICBJZiBwcmVzZW50IGluIGEgcGF0dGVybiwgdGhlIG1vbmV0YXJ5IGRlY2ltYWwgc2VwYXJhdG9yCisgKiAgICAgICAgICAgICAgICAgICBpcyB1c2VkIGluc3RlYWQgb2YgdGhlIGRlY2ltYWwgc2VwYXJhdG9yLjwvdHI+CisgKiA8dHI+PHRkPic8dGQ+UHJlZml4IG9yIHN1ZmZpeAorICogICAgICAgICAgPHRkPlVzZWQgdG8gcXVvdGUgc3BlY2lhbCBjaGFyYWN0ZXJzIGluIGEgcHJlZml4IG9yIHN1ZmZpeCwKKyAqICAgICAgICAgICAgICBmb3IgZXhhbXBsZSwgPGNvZGU+IicjJyMiPC9jb2RlPiBmb3JtYXRzIDEyMyB0bworICogICAgICAgICAgICAgIDxjb2RlPiIjMTIzIjwvY29kZT4uICBUbyBjcmVhdGUgYSBzaW5nbGUgcXVvdGUKKyAqICAgICAgICAgICAgICBpdHNlbGYsIHVzZSB0d28gaW4gYSByb3c6IDxjb2RlPiIjIG8nJ2Nsb2NrIjwvY29kZT4uPC90cj4KKyAqIDx0cj48dGQ+PHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICogICAgICAgICAqPHRkPlByZWZpeCBvciBzdWZmaXggYm91bmRhcnkKKyAqICAgICAgICAgIDx0ZD5QYWQgZXNjYXBlLCBwcmVjZWRlcyBwYWQgY2hhcmFjdGVyPC90cj4KKyAqIDwvdGFibGU+CisgKiA8L3ByZT4KKyAqCisgKgorICogQHNlZSAgICAgICAgICBqYXZhLnRleHQuRm9ybWF0CisgKiBAc2VlICAgICAgICAgIE51bWJlckZvcm1hdAorICogQGF1dGhvciAgICAgICBNYXJrIERhdmlzCisgKiBAYXV0aG9yICAgICAgIEFsYW4gTGl1CisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworcHVibGljIGNsYXNzIERlY2ltYWxGb3JtYXQgZXh0ZW5kcyBOdW1iZXJGb3JtYXQgeworCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgRGVjaW1hbEZvcm1hdCB1c2luZyB0aGUgZGVmYXVsdCBwYXR0ZXJuIGFuZCBzeW1ib2xzCisgICAgICogZm9yIHRoZSBkZWZhdWx0IGxvY2FsZS4gVGhpcyBpcyBhIGNvbnZlbmllbnQgd2F5IHRvIG9idGFpbiBhCisgICAgICogRGVjaW1hbEZvcm1hdCB3aGVuIGludGVybmF0aW9uYWxpemF0aW9uIGlzIG5vdCB0aGUgbWFpbiBjb25jZXJuLgorICAgICAqIDxwPgorICAgICAqIFRvIG9idGFpbiBzdGFuZGFyZCBmb3JtYXRzIGZvciBhIGdpdmVuIGxvY2FsZSwgdXNlIHRoZSBmYWN0b3J5IG1ldGhvZHMKKyAgICAgKiBvbiBOdW1iZXJGb3JtYXQgc3VjaCBhcyBnZXROdW1iZXJJbnN0YW5jZS4gVGhlc2UgZmFjdG9yaWVzIHdpbGwKKyAgICAgKiByZXR1cm4gdGhlIG1vc3QgYXBwcm9wcmlhdGUgc3ViLWNsYXNzIG9mIE51bWJlckZvcm1hdCBmb3IgYSBnaXZlbgorICAgICAqIGxvY2FsZS4KKyAgICAgKiBAc2VlIE51bWJlckZvcm1hdCNnZXRJbnN0YW5jZQorICAgICAqIEBzZWUgTnVtYmVyRm9ybWF0I2dldE51bWJlckluc3RhbmNlCisgICAgICogQHNlZSBOdW1iZXJGb3JtYXQjZ2V0Q3VycmVuY3lJbnN0YW5jZQorICAgICAqIEBzZWUgTnVtYmVyRm9ybWF0I2dldFBlcmNlbnRJbnN0YW5jZQorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBEZWNpbWFsRm9ybWF0KCkgeworICAgICAgICAvLyBbTkVXXQorICAgICAgICBMb2NhbGUgZGVmID0gTG9jYWxlLmdldERlZmF1bHQoKTsKKyAgICAgICAgU3RyaW5nIHBhdHRlcm4gPSBnZXRQYXR0ZXJuKGRlZiwgMCk7CisgICAgICAgIC8vIEFsd2F5cyBhcHBseVBhdHRlcm4gYWZ0ZXIgdGhlIHN5bWJvbHMgYXJlIHNldAorICAgICAgICB0aGlzLnN5bWJvbHMgPSBuZXcgRGVjaW1hbEZvcm1hdFN5bWJvbHMoZGVmKTsKKyAgICAgICAgY3VycmVuY3kgPSBDdXJyZW5jeS5nZXRJbnN0YW5jZShkZWYpOworICAgICAgICBhcHBseVBhdHRlcm4ocGF0dGVybiwgZmFsc2UpOworICAgIH0KKworCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgRGVjaW1hbEZvcm1hdCBmcm9tIHRoZSBnaXZlbiBwYXR0ZXJuIGFuZCB0aGUgc3ltYm9scworICAgICAqIGZvciB0aGUgZGVmYXVsdCBsb2NhbGUuIFRoaXMgaXMgYSBjb252ZW5pZW50IHdheSB0byBvYnRhaW4gYQorICAgICAqIERlY2ltYWxGb3JtYXQgd2hlbiBpbnRlcm5hdGlvbmFsaXphdGlvbiBpcyBub3QgdGhlIG1haW4gY29uY2Vybi4KKyAgICAgKiA8cD4KKyAgICAgKiBUbyBvYnRhaW4gc3RhbmRhcmQgZm9ybWF0cyBmb3IgYSBnaXZlbiBsb2NhbGUsIHVzZSB0aGUgZmFjdG9yeSBtZXRob2RzCisgICAgICogb24gTnVtYmVyRm9ybWF0IHN1Y2ggYXMgZ2V0TnVtYmVySW5zdGFuY2UuIFRoZXNlIGZhY3RvcmllcyB3aWxsCisgICAgICogcmV0dXJuIHRoZSBtb3N0IGFwcHJvcHJpYXRlIHN1Yi1jbGFzcyBvZiBOdW1iZXJGb3JtYXQgZm9yIGEgZ2l2ZW4KKyAgICAgKiBsb2NhbGUuCisgICAgICogQHBhcmFtIHBhdHRlcm4gQSBub24tbG9jYWxpemVkIHBhdHRlcm4gc3RyaW5nLgorICAgICAqIEBleGNlcHRpb24gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBnaXZlbiBwYXR0ZXJuIGlzIGludmFsaWQuCisgICAgICogQHNlZSBOdW1iZXJGb3JtYXQjZ2V0SW5zdGFuY2UKKyAgICAgKiBAc2VlIE51bWJlckZvcm1hdCNnZXROdW1iZXJJbnN0YW5jZQorICAgICAqIEBzZWUgTnVtYmVyRm9ybWF0I2dldEN1cnJlbmN5SW5zdGFuY2UKKyAgICAgKiBAc2VlIE51bWJlckZvcm1hdCNnZXRQZXJjZW50SW5zdGFuY2UKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgRGVjaW1hbEZvcm1hdChTdHJpbmcgcGF0dGVybikgeworICAgIC8vIEFsd2F5cyBhcHBseVBhdHRlcm4gYWZ0ZXIgdGhlIHN5bWJvbHMgYXJlIHNldAorICAgICAgICBMb2NhbGUgZGVmID0gTG9jYWxlLmdldERlZmF1bHQoKTsKKyAgICAgICAgdGhpcy5zeW1ib2xzID0gbmV3IERlY2ltYWxGb3JtYXRTeW1ib2xzKGRlZik7CisgICAgICAgIGN1cnJlbmN5ID0gQ3VycmVuY3kuZ2V0SW5zdGFuY2UoZGVmKTsKKyAgICAgICAgYXBwbHlQYXR0ZXJuKCBwYXR0ZXJuLCBmYWxzZSApOworICAgIH0KKworCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgRGVjaW1hbEZvcm1hdCBmcm9tIHRoZSBnaXZlbiBwYXR0ZXJuIGFuZCBzeW1ib2xzLgorICAgICAqIFVzZSB0aGlzIGNvbnN0cnVjdG9yIHdoZW4geW91IG5lZWQgdG8gY29tcGxldGVseSBjdXN0b21pemUgdGhlCisgICAgICogYmVoYXZpb3Igb2YgdGhlIGZvcm1hdC4KKyAgICAgKiA8cD4KKyAgICAgKiBUbyBvYnRhaW4gc3RhbmRhcmQgZm9ybWF0cyBmb3IgYSBnaXZlbgorICAgICAqIGxvY2FsZSwgdXNlIHRoZSBmYWN0b3J5IG1ldGhvZHMgb24gTnVtYmVyRm9ybWF0IHN1Y2ggYXMKKyAgICAgKiBnZXRJbnN0YW5jZSBvciBnZXRDdXJyZW5jeUluc3RhbmNlLiBJZiB5b3UgbmVlZCBvbmx5IG1pbm9yIGFkanVzdG1lbnRzCisgICAgICogdG8gYSBzdGFuZGFyZCBmb3JtYXQsIHlvdSBjYW4gbW9kaWZ5IHRoZSBmb3JtYXQgcmV0dXJuZWQgYnkKKyAgICAgKiBhIE51bWJlckZvcm1hdCBmYWN0b3J5IG1ldGhvZC4KKyAgICAgKiBAcGFyYW0gcGF0dGVybiBhIG5vbi1sb2NhbGl6ZWQgcGF0dGVybiBzdHJpbmcKKyAgICAgKiBAcGFyYW0gc3ltYm9scyB0aGUgc2V0IG9mIHN5bWJvbHMgdG8gYmUgdXNlZAorICAgICAqIEBleGNlcHRpb24gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBnaXZlbiBwYXR0ZXJuIGlzIGludmFsaWQKKyAgICAgKiBAc2VlIE51bWJlckZvcm1hdCNnZXRJbnN0YW5jZQorICAgICAqIEBzZWUgTnVtYmVyRm9ybWF0I2dldE51bWJlckluc3RhbmNlCisgICAgICogQHNlZSBOdW1iZXJGb3JtYXQjZ2V0Q3VycmVuY3lJbnN0YW5jZQorICAgICAqIEBzZWUgTnVtYmVyRm9ybWF0I2dldFBlcmNlbnRJbnN0YW5jZQorICAgICAqIEBzZWUgRGVjaW1hbEZvcm1hdFN5bWJvbHMKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgRGVjaW1hbEZvcm1hdCAoU3RyaW5nIHBhdHRlcm4sIERlY2ltYWxGb3JtYXRTeW1ib2xzIHN5bWJvbHMpIHsKKyAgICAgICAgLy8gQWx3YXlzIGFwcGx5UGF0dGVybiBhZnRlciB0aGUgc3ltYm9scyBhcmUgc2V0CisgICAgICAgIHRoaXMuc3ltYm9scyA9IChEZWNpbWFsRm9ybWF0U3ltYm9scykgc3ltYm9scy5jbG9uZSgpOworICAgICAgICBzZXRDdXJyZW5jeUZvclN5bWJvbHMoKTsKKyAgICAgICAgYXBwbHlQYXR0ZXJuKCBwYXR0ZXJuLCBmYWxzZSApOworICAgIH0KKworCisgICAgLyoqCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIFN0cmluZ0J1ZmZlciBmb3JtYXQoZG91YmxlIG51bWJlciwgU3RyaW5nQnVmZmVyIHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFBvc2l0aW9uIGZpZWxkUG9zaXRpb24pCisgICAgeworICAgICAgICAvL0ZQOmZpZWxkUG9zaXRpb24uc2V0QmVnaW5JbmRleCgwKTsKKyAgICAgICAgLy9GUDpmaWVsZFBvc2l0aW9uLnNldEVuZEluZGV4KDApOworCisgICAgICAgIGlmIChEb3VibGUuaXNOYU4obnVtYmVyKSkKKyAgICAgICAgeworICAgICAgICAgICAgLy9GUDppZiAoZmllbGRQb3NpdGlvbi5nZXRGaWVsZCgpID09IE51bWJlckZvcm1hdC5JTlRFR0VSX0ZJRUxEKQorICAgICAgICAgICAgLy9GUDpmaWVsZFBvc2l0aW9uLnNldEJlZ2luSW5kZXgocmVzdWx0Lmxlbmd0aCgpKTsKKworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChzeW1ib2xzLmdldE5hTigpKTsKKworICAgICAgICAgICAgLy9GUDppZiAoZmllbGRQb3NpdGlvbi5nZXRGaWVsZCgpID09IE51bWJlckZvcm1hdC5JTlRFR0VSX0ZJRUxEKQorICAgICAgICAgICAgLy9GUDpmaWVsZFBvc2l0aW9uLnNldEVuZEluZGV4KHJlc3VsdC5sZW5ndGgoKSk7CisKKyAgICAgICAgICAgIGFkZFBhZGRpbmcocmVzdWx0LCBmYWxzZSwgZmFsc2UgLyppZ25vcmVkKi8pOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIC8qIERldGVjdGluZyB3aGV0aGVyIGEgZG91YmxlIGlzIG5lZ2F0aXZlIGlzIGVhc3kgd2l0aCB0aGUgZXhjZXB0aW9uIG9mCisgICAgICAgICAqIHRoZSB2YWx1ZSAtMC4wLiAgVGhpcyBpcyBhIGRvdWJsZSB3aGljaCBoYXMgYSB6ZXJvIG1hbnRpc3NhIChhbmQKKyAgICAgICAgICogZXhwb25lbnQpLCBidXQgYSBuZWdhdGl2ZSBzaWduIGJpdC4gIEl0IGlzIHNlbWFudGljYWxseSBkaXN0aW5jdCBmcm9tCisgICAgICAgICAqIGEgemVybyB3aXRoIGEgcG9zaXRpdmUgc2lnbiBiaXQsIGFuZCB0aGlzIGRpc3RpbmN0aW9uIGlzIGltcG9ydGFudAorICAgICAgICAgKiB0byBjZXJ0YWluIGtpbmRzIG9mIGNvbXB1dGF0aW9ucy4gIEhvd2V2ZXIsIGl0J3MgYSBsaXR0bGUgdHJpY2t5IHRvCisgICAgICAgICAqIGRldGVjdCwgc2luY2UgKC0wLjAgPT0gMC4wKSBhbmQgISgtMC4wIDwgMC4wKS4gIEhvdyB0aGVuLCB5b3UgbWF5CisgICAgICAgICAqIGFzaywgZG9lcyBpdCBiZWhhdmUgZGlzdGluY3RseSBmcm9tICswLjA/ICBXZWxsLCAxLygtMC4wKSA9PQorICAgICAgICAgKiAtSW5maW5pdHkuICBQcm9wZXIgZGV0ZWN0aW9uIG9mIC0wLjAgaXMgbmVlZGVkIHRvIGRlYWwgd2l0aCB0aGUKKyAgICAgICAgICogaXNzdWVzIHJhaXNlZCBieSBidWdzIDQxMDY2NTgsIDQxMDY2NjcsIGFuZCA0MTQ3NzA2LiAgTGl1IDcvNi85OC4KKyAgICAgICAgICovCisgICAgICAgIGJvb2xlYW4gaXNOZWdhdGl2ZSA9IChudW1iZXIgPCAwLjApIHx8IChudW1iZXIgPT0gMC4wICYmIDEvbnVtYmVyIDwgMC4wKTsKKyAgICAgICAgaWYgKGlzTmVnYXRpdmUpIG51bWJlciA9IC1udW1iZXI7CisKKyAgICAgICAgLy8gRG8gdGhpcyBCRUZPUkUgY2hlY2tpbmcgdG8gc2VlIGlmIHZhbHVlIGlzIGluZmluaXRlIQorICAgICAgICBpZiAobXVsdGlwbGllciAhPSAxKSBudW1iZXIgKj0gbXVsdGlwbGllcjsKKworICAgICAgICAvLyBBcHBseSByb3VuZGluZyBhZnRlciBtdWx0aXBsaWVyCisgICAgICAgIGlmIChyb3VuZGluZ0RvdWJsZSA+IDAuMCkgeworICAgICAgICAgICAgbnVtYmVyID0gcm91bmRpbmdEb3VibGUKKyAgICAgICAgICAgICAgICAqIHJvdW5kKG51bWJlciAvIHJvdW5kaW5nRG91YmxlLCByb3VuZGluZ01vZGUsIGlzTmVnYXRpdmUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKERvdWJsZS5pc0luZmluaXRlKG51bWJlcikpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoaXNOZWdhdGl2ZSA/IG5lZ2F0aXZlUHJlZml4IDogcG9zaXRpdmVQcmVmaXgpOworCisgICAgICAgICAgICAvL0ZQOmlmIChmaWVsZFBvc2l0aW9uLmdldEZpZWxkKCkgPT0gTnVtYmVyRm9ybWF0LklOVEVHRVJfRklFTEQpCisgICAgICAgICAgICAvL0ZQOmZpZWxkUG9zaXRpb24uc2V0QmVnaW5JbmRleChyZXN1bHQubGVuZ3RoKCkpOworCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHN5bWJvbHMuZ2V0SW5maW5pdHkoKSk7CisKKyAgICAgICAgICAgIC8vRlA6aWYgKGZpZWxkUG9zaXRpb24uZ2V0RmllbGQoKSA9PSBOdW1iZXJGb3JtYXQuSU5URUdFUl9GSUVMRCkKKyAgICAgICAgICAgIC8vRlA6ZXlkZmllbGRQb3NpdGlvbi5zZXRFbmRJbmRleChyZXN1bHQubGVuZ3RoKCkpOworCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGlzTmVnYXRpdmUgPyBuZWdhdGl2ZVN1ZmZpeCA6IHBvc2l0aXZlU3VmZml4KTsKKworICAgICAgICAgICAgYWRkUGFkZGluZyhyZXN1bHQsIHRydWUsIGlzTmVnYXRpdmUpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQgd2UgYXJlIGd1YXJhbnRlZWQgYSBub25uZWdhdGl2ZSBmaW5pdGUKKyAgICAgICAgLy8gbnVtYmVyLgorICAgICAgICBzeW5jaHJvbml6ZWQoZGlnaXRMaXN0KSB7CisgICAgICAgICAgICBkaWdpdExpc3Quc2V0KG51bWJlciwgdXNlRXhwb25lbnRpYWxOb3RhdGlvbiA/CisgICAgICAgICAgICAgICAgICAgICAgZ2V0TWluaW11bUludGVnZXJEaWdpdHMoKSArIGdldE1heGltdW1GcmFjdGlvbkRpZ2l0cygpIDoKKyAgICAgICAgICAgICAgICAgICAgICBnZXRNYXhpbXVtRnJhY3Rpb25EaWdpdHMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAhdXNlRXhwb25lbnRpYWxOb3RhdGlvbik7CisKKyAgICAgICAgICAgIHJldHVybiBzdWJmb3JtYXQocmVzdWx0LCBmaWVsZFBvc2l0aW9uLCBpc05lZ2F0aXZlLCBmYWxzZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+CisgICAgICogUm91bmQgYSBkb3VibGUgdmFsdWUgdG8gdGhlIG5lYXJlc3QgaW50ZWdlciBhY2NvcmRpbmcgdG8gdGhlCisgICAgICogZ2l2ZW4gbW9kZS4KKyAgICAgKiBAcGFyYW0gYSB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIG51bWJlciB0byBiZSByb3VuZGVkCisgICAgICogQHBhcmFtIG1vZGUgYSBCaWdEZWNpbWFsIHJvdW5kaW5nIG1vZGUKKyAgICAgKiBAcGFyYW0gaXNOZWdhdGl2ZSB0cnVlIGlmIHRoZSBudW1iZXIgdG8gYmUgcm91bmRlZCBpcyBuZWdhdGl2ZQorICAgICAqIEByZXR1cm4gdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSByb3VuZGVkIHJlc3VsdAorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGRvdWJsZSByb3VuZChkb3VibGUgYSwgaW50IG1vZGUsIGJvb2xlYW4gaXNOZWdhdGl2ZSkgeworICAgICAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICAgICAgY2FzZSBqYXZhLm1hdGguQmlnRGVjaW1hbC5ST1VORF9DRUlMSU5HOgorICAgICAgICAgICAgcmV0dXJuIGlzTmVnYXRpdmUgPyBNYXRoLmZsb29yKGEpIDogTWF0aC5jZWlsKGEpOworICAgICAgICBjYXNlIGphdmEubWF0aC5CaWdEZWNpbWFsLlJPVU5EX0ZMT09SOgorICAgICAgICAgICAgcmV0dXJuIGlzTmVnYXRpdmUgPyBNYXRoLmNlaWwoYSkgOiBNYXRoLmZsb29yKGEpOworICAgICAgICBjYXNlIGphdmEubWF0aC5CaWdEZWNpbWFsLlJPVU5EX0RPV046CisgICAgICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihhKTsKKyAgICAgICAgY2FzZSBqYXZhLm1hdGguQmlnRGVjaW1hbC5ST1VORF9VUDoKKyAgICAgICAgICAgIHJldHVybiBNYXRoLmNlaWwoYSk7CisgICAgICAgIGNhc2UgamF2YS5tYXRoLkJpZ0RlY2ltYWwuUk9VTkRfSEFMRl9FVkVOOgorICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIGJlIGFibGUgdG8ganVzdCByZXR1cm4gTWF0aC5yaW50KGEpLCBidXQgdGhpcworICAgICAgICAgICAgLy8gZG9lc24ndCB3b3JrIGluIHNvbWUgVk1zLgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRvdWJsZSBmID0gTWF0aC5mbG9vcihhKTsKKyAgICAgICAgICAgICAgICBpZiAoKGEgLSBmKSAhPSAwLjUpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE1hdGgucmludChhKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZiAvPSAyLjA7CisgICAgICAgICAgICAgICAgcmV0dXJuIGYgPT0gTWF0aC5mbG9vcihmKSA/IE1hdGguZmxvb3IoYSkgOiAoTWF0aC5mbG9vcihhKSArIDEuMCk7CisgICAgICAgICAgICB9CisgICAgICAgIGNhc2UgamF2YS5tYXRoLkJpZ0RlY2ltYWwuUk9VTkRfSEFMRl9ET1dOOgorICAgICAgICAgICAgcmV0dXJuICgoYSAtIE1hdGguZmxvb3IoYSkpIDw9IDAuNSkgPyBNYXRoLmZsb29yKGEpIDogTWF0aC5jZWlsKGEpOworICAgICAgICBjYXNlIGphdmEubWF0aC5CaWdEZWNpbWFsLlJPVU5EX0hBTEZfVVA6CisgICAgICAgICAgICByZXR1cm4gKChhIC0gTWF0aC5mbG9vcihhKSkgPCAwLjUpID8gTWF0aC5mbG9vcihhKSA6IE1hdGguY2VpbChhKTsKKyAgICAgICAgY2FzZSBqYXZhLm1hdGguQmlnRGVjaW1hbC5ST1VORF9VTk5FQ0VTU0FSWToKKyAgICAgICAgICAgIGlmIChhICE9IE1hdGguZmxvb3IoYSkpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXJpdGhtZXRpY0V4Y2VwdGlvbigiUm91bmRpbmcgbmVjZXNzYXJ5Iik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gYTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgcm91bmRpbmcgbW9kZTogIiArIG1vZGUpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIFN0cmluZ0J1ZmZlciBmb3JtYXQobG9uZyBudW1iZXIsIFN0cmluZ0J1ZmZlciByZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRQb3NpdGlvbiBmaWVsZFBvc2l0aW9uKQorICAgIHsKKyAgICAgICAgLy9GUDpmaWVsZFBvc2l0aW9uLnNldEJlZ2luSW5kZXgoMCk7CisgICAgICAgIC8vRlA6ZmllbGRQb3NpdGlvbi5zZXRFbmRJbmRleCgwKTsKKworICAgICAgICAvLyBJZiB3ZSBhcmUgdG8gZG8gcm91bmRpbmcsIHdlIG5lZWQgdG8gbW92ZSBpbnRvIHRoZSBCaWdEZWNpbWFsCisgICAgICAgIC8vIGRvbWFpbiBpbiBvcmRlciB0byBkbyBkaXZpZGUvbXVsdGlwbHkgY29ycmVjdGx5LgorICAgICAgICAvLyBbTkVXXQorICAgICAgICBpZiAocm91bmRpbmdJbmNyZW1lbnQgIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIGZvcm1hdChqYXZhLm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKG51bWJlciksIHJlc3VsdCwgZmllbGRQb3NpdGlvbik7CisgICAgICAgIH0KKworICAgICAgICBib29sZWFuIGlzTmVnYXRpdmUgPSAobnVtYmVyIDwgMCk7CisgICAgICAgIGlmIChpc05lZ2F0aXZlKSBudW1iZXIgPSAtbnVtYmVyOworCisgICAgICAgIC8vIEluIGdlbmVyYWwsIGxvbmcgdmFsdWVzIGFsd2F5cyByZXByZXNlbnQgcmVhbCBmaW5pdGUgbnVtYmVycywgc28KKyAgICAgICAgLy8gd2UgZG9uJ3QgaGF2ZSB0byBjaGVjayBmb3IgKy8tIEluZmluaXR5IG9yIE5hTi4gIEhvd2V2ZXIsIHRoZXJlCisgICAgICAgIC8vIGlzIG9uZSBjYXNlIHdlIGhhdmUgdG8gYmUgY2FyZWZ1bCBvZjogIFRoZSBtdWx0aXBsaWVyIGNhbiBwdXNoCisgICAgICAgIC8vIGEgbnVtYmVyIG5lYXIgTUlOX1ZBTFVFIG9yIE1BWF9WQUxVRSBvdXRzaWRlIHRoZSBsZWdhbCByYW5nZS4gIFdlCisgICAgICAgIC8vIGNoZWNrIGZvciB0aGlzIGJlZm9yZSBtdWx0aXBseWluZywgYW5kIGlmIGl0IGhhcHBlbnMgd2UgdXNlIEJpZ0ludGVnZXIKKyAgICAgICAgLy8gaW5zdGVhZC4KKyAgICAgICAgLy8gW05FV10KKyAgICAgICAgaWYgKG11bHRpcGxpZXIgIT0gMSkgeworICAgICAgICAgICAgYm9vbGVhbiB0b29CaWcgPSBmYWxzZTsKKyAgICAgICAgICAgIGlmIChudW1iZXIgPCAwKSB7IC8vIFRoaXMgY2FuIG9ubHkgaGFwcGVuIGlmIG51bWJlciA9PSBMb25nLk1JTl9WQUxVRQorICAgICAgICAgICAgICAgIGxvbmcgY3V0b2ZmID0gTG9uZy5NSU5fVkFMVUUgLyBtdWx0aXBsaWVyOworICAgICAgICAgICAgICAgIHRvb0JpZyA9IChudW1iZXIgPCBjdXRvZmYpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBsb25nIGN1dG9mZiA9IExvbmcuTUFYX1ZBTFVFIC8gbXVsdGlwbGllcjsKKyAgICAgICAgICAgICAgICB0b29CaWcgPSAobnVtYmVyID4gY3V0b2ZmKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh0b29CaWcpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0KEJpZ0ludGVnZXIudmFsdWVPZihpc05lZ2F0aXZlID8gLW51bWJlciA6IG51bWJlciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQsIGZpZWxkUG9zaXRpb24pOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgbnVtYmVyICo9IG11bHRpcGxpZXI7CisgICAgICAgIHN5bmNocm9uaXplZChkaWdpdExpc3QpIHsKKyAgICAgICAgICAgIGRpZ2l0TGlzdC5zZXQobnVtYmVyLCB1c2VFeHBvbmVudGlhbE5vdGF0aW9uID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TWluaW11bUludGVnZXJEaWdpdHMoKSArIGdldE1heGltdW1GcmFjdGlvbkRpZ2l0cygpIDogMCk7CisKKyAgICAgICAgICAgIHJldHVybiBzdWJmb3JtYXQocmVzdWx0LCBmaWVsZFBvc2l0aW9uLCBpc05lZ2F0aXZlLCB0cnVlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIDxzdHJvbmc+PGZvbnQgZmFjZT1oZWx2ZXRpY2EgY29sb3I9cmVkPk5FVzwvZm9udD48L3N0cm9uZz4KKyAgICAgKiBGb3JtYXQgYSBCaWdJbnRlZ2VyIG51bWJlci4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nQnVmZmVyIGZvcm1hdChCaWdJbnRlZ2VyIG51bWJlciwgU3RyaW5nQnVmZmVyIHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFBvc2l0aW9uIGZpZWxkUG9zaXRpb24pIHsKKyAgICAgICAgLy8gSWYgd2UgYXJlIHRvIGRvIHJvdW5kaW5nLCB3ZSBuZWVkIHRvIG1vdmUgaW50byB0aGUgQmlnRGVjaW1hbAorICAgICAgICAvLyBkb21haW4gaW4gb3JkZXIgdG8gZG8gZGl2aWRlL211bHRpcGx5IGNvcnJlY3RseS4KKyAgICAgICAgaWYgKHJvdW5kaW5nSW5jcmVtZW50ICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBmb3JtYXQobmV3IGphdmEubWF0aC5CaWdEZWNpbWFsKG51bWJlciksIHJlc3VsdCwgZmllbGRQb3NpdGlvbik7CisgICAgICAgIH0KKworICAgICAgICBpZiAobXVsdGlwbGllciAhPSAxKSB7CisgICAgICAgICAgICBudW1iZXIgPSBudW1iZXIubXVsdGlwbHkoQmlnSW50ZWdlci52YWx1ZU9mKG11bHRpcGxpZXIpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQgd2UgYXJlIGd1YXJhbnRlZWQgYSBub25uZWdhdGl2ZSBmaW5pdGUKKyAgICAgICAgLy8gbnVtYmVyLgorICAgICAgICBzeW5jaHJvbml6ZWQoZGlnaXRMaXN0KSB7CisgICAgICAgICAgICBkaWdpdExpc3Quc2V0KG51bWJlciwgdXNlRXhwb25lbnRpYWxOb3RhdGlvbiA/CisgICAgICAgICAgICAgICAgICAgICAgICAgIGdldE1pbmltdW1JbnRlZ2VyRGlnaXRzKCkgKyBnZXRNYXhpbXVtRnJhY3Rpb25EaWdpdHMoKSA6IDApOworCisgICAgICAgICAgICByZXR1cm4gc3ViZm9ybWF0KHJlc3VsdCwgZmllbGRQb3NpdGlvbiwgbnVtYmVyLnNpZ251bSgpIDwgMCwgZmFsc2UpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICAgICAqIEZvcm1hdCBhIEJpZ0RlY2ltYWwgbnVtYmVyLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmdCdWZmZXIgZm9ybWF0KGphdmEubWF0aC5CaWdEZWNpbWFsIG51bWJlciwgU3RyaW5nQnVmZmVyIHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFBvc2l0aW9uIGZpZWxkUG9zaXRpb24pIHsKKyAgICAgICAgaWYgKG11bHRpcGxpZXIgIT0gMSkgeworICAgICAgICAgICAgbnVtYmVyID0gbnVtYmVyLm11bHRpcGx5KGphdmEubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YobXVsdGlwbGllcikpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJvdW5kaW5nSW5jcmVtZW50ICE9IG51bGwpIHsKKyAgICAgICAgICAgIG51bWJlciA9IG51bWJlci5kaXZpZGUocm91bmRpbmdJbmNyZW1lbnQsIDAsIHJvdW5kaW5nTW9kZSkKKyAgICAgICAgICAgICAgICAgICAgLm11bHRpcGx5KHJvdW5kaW5nSW5jcmVtZW50KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQgd2UgYXJlIGd1YXJhbnRlZWQgYSBub25uZWdhdGl2ZSBmaW5pdGUKKyAgICAgICAgLy8gbnVtYmVyLgorICAgICAgICBzeW5jaHJvbml6ZWQoZGlnaXRMaXN0KSB7CisgICAgICAgICAgICBkaWdpdExpc3Quc2V0KG51bWJlciwgdXNlRXhwb25lbnRpYWxOb3RhdGlvbiA/CisgICAgICAgICAgICAgICAgICAgICAgZ2V0TWluaW11bUludGVnZXJEaWdpdHMoKSArIGdldE1heGltdW1GcmFjdGlvbkRpZ2l0cygpIDoKKyAgICAgICAgICAgICAgICAgICAgICBnZXRNYXhpbXVtRnJhY3Rpb25EaWdpdHMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAhdXNlRXhwb25lbnRpYWxOb3RhdGlvbik7CisgICAgICAgICAgICByZXR1cm4gc3ViZm9ybWF0KHJlc3VsdCwgZmllbGRQb3NpdGlvbiwgbnVtYmVyLnNpZ251bSgpIDwgMCwgZmFsc2UpOworICAgICAgICB9ICAgICAgICAKKyAgICB9CisKKworICAgIC8qKgorICAgICAqIDxzdHJvbmc+PGZvbnQgZmFjZT1oZWx2ZXRpY2EgY29sb3I9cmVkPk5FVzwvZm9udD48L3N0cm9uZz4KKyAgICAgKiBGb3JtYXQgYSBCaWdEZWNpbWFsIG51bWJlci4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nQnVmZmVyIGZvcm1hdChjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwgbnVtYmVyLCBTdHJpbmdCdWZmZXIgcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkUG9zaXRpb24gZmllbGRQb3NpdGlvbikgeworICAgICAgICAvKiBUaGlzIG1ldGhvZCBpcyBqdXN0IGEgY29weSBvZiB0aGUgY29ycmVzcG9uZGluZyBqYXZhLm1hdGguQmlnRGVjaW1hbAorICAgICAgICAgKiBtZXRob2QgZm9yIG5vdy4gIEl0IGlzbid0IHZlcnkgZWZmaWNpZW50IHNpbmNlIGl0IG11c3QgY3JlYXRlIGEKKyAgICAgICAgICogY29udmVyc2lvbiBvYmplY3QgdG8gZG8gbWF0aCBvbiB0aGUgcm91bmRpbmcgaW5jcmVtZW50LiAgSW4gdGhlCisgICAgICAgICAqIGZ1dHVyZSB3ZSBtYXkgdHJ5IHRvIGNsZWFuIHRoaXMgdXAsIG9yIGV2ZW4gYmV0dGVyLCBsaW1pdCBvdXIgc3VwcG9ydAorICAgICAgICAgKiB0byBqdXN0IG9uZSBmbGF2b3Igb2YgQmlnRGVjaW1hbC4KKyAgICAgICAgICovCisgICAgICAgIGlmIChtdWx0aXBsaWVyICE9IDEpIHsKKyAgICAgICAgICAgIG51bWJlciA9IG51bWJlci5tdWx0aXBseShjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihtdWx0aXBsaWVyKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAocm91bmRpbmdJbmNyZW1lbnQgIT0gbnVsbCkgeworICAgICAgICAgICAgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIHJpID0gbmV3IGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbChyb3VuZGluZ0luY3JlbWVudCk7CisgICAgICAgICAgICBudW1iZXIgPSBudW1iZXIuZGl2aWRlKHJpLCAwLCByb3VuZGluZ01vZGUpCisgICAgICAgICAgICAgICAgICAgIC5tdWx0aXBseShyaSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBBdCB0aGlzIHBvaW50IHdlIGFyZSBndWFyYW50ZWVkIGEgbm9ubmVnYXRpdmUgZmluaXRlCisgICAgICAgIC8vIG51bWJlci4KKyAgICAgICAgc3luY2hyb25pemVkKGRpZ2l0TGlzdCkgeworICAgICAgICAgICAgZGlnaXRMaXN0LnNldChudW1iZXIsIHVzZUV4cG9uZW50aWFsTm90YXRpb24gPworICAgICAgICAgICAgICAgICAgICAgIGdldE1pbmltdW1JbnRlZ2VyRGlnaXRzKCkgKyBnZXRNYXhpbXVtRnJhY3Rpb25EaWdpdHMoKSA6CisgICAgICAgICAgICAgICAgICAgICAgZ2V0TWF4aW11bUZyYWN0aW9uRGlnaXRzKCksCisgICAgICAgICAgICAgICAgICAgICAgIXVzZUV4cG9uZW50aWFsTm90YXRpb24pOworICAgICAgICAgICAgcmV0dXJuIHN1YmZvcm1hdChyZXN1bHQsIGZpZWxkUG9zaXRpb24sIG51bWJlci5zaWdudW0oKSA8IDAsIGZhbHNlKTsKKyAgICAgICAgfSAgICAgICAgCisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgYSBncm91cGluZyBzZXBhcmF0b3IgYmVsb25ncyBhdCB0aGUgZ2l2ZW4KKyAgICAgKiBwb3NpdGlvbiwgYmFzZWQgb24gd2hldGhlciBncm91cGluZyBpcyBpbiB1c2UgYW5kIHRoZSB2YWx1ZXMgb2YKKyAgICAgKiB0aGUgcHJpbWFyeSBhbmQgc2Vjb25kYXJ5IGdyb3VwaW5nIGludGVydmFsLgorICAgICAqIEBwYXJhbSBwb3MgdGhlIG51bWJlciBvZiBpbnRlZ2VyIGRpZ2l0cyB0byB0aGUgcmlnaHQgb2YKKyAgICAgKiB0aGUgY3VycmVudCBwb3NpdGlvbi4gIFplcm8gaW5kaWNhdGVzIHRoZSBwb3NpdGlvbiBhZnRlciB0aGUKKyAgICAgKiByaWdodG1vc3QgaW50ZWdlciBkaWdpdC4KKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgYSBncm91cGluZyBjaGFyYWN0ZXIgYmVsb25ncyBhdCB0aGUgY3VycmVudAorICAgICAqIHBvc2l0aW9uLgorICAgICAqLworICAgIHByaXZhdGUgYm9vbGVhbiBpc0dyb3VwaW5nUG9zaXRpb24oaW50IHBvcykgeworICAgICAgICBib29sZWFuIHJlc3VsdCA9IGZhbHNlOworICAgICAgICBpZiAoaXNHcm91cGluZ1VzZWQoKSAmJiAocG9zID4gMCkgJiYgKGdyb3VwaW5nU2l6ZSA+IDApKSB7CisgICAgICAgICAgICBpZiAoKGdyb3VwaW5nU2l6ZTIgPiAwKSAmJiAocG9zID4gZ3JvdXBpbmdTaXplKSkgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9ICgocG9zIC0gZ3JvdXBpbmdTaXplKSAlIGdyb3VwaW5nU2l6ZTIpID09IDA7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IHBvcyAlIGdyb3VwaW5nU2l6ZSA9PSAwOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29tcGxldGUgdGhlIGZvcm1hdHRpbmcgb2YgYSBmaW5pdGUgbnVtYmVyLiAgT24gZW50cnksIHRoZSBkaWdpdExpc3QgbXVzdAorICAgICAqIGJlIGZpbGxlZCBpbiB3aXRoIHRoZSBjb3JyZWN0IGRpZ2l0cy4KKyAgICAgKi8KKyAgICBwcml2YXRlIFN0cmluZ0J1ZmZlciBzdWJmb3JtYXQoU3RyaW5nQnVmZmVyIHJlc3VsdCwgRmllbGRQb3NpdGlvbiBmaWVsZFBvc2l0aW9uLAorICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gaXNOZWdhdGl2ZSwgYm9vbGVhbiBpc0ludGVnZXIpCisgICAgeworICAgICAgICAvLyBOT1RFOiBUaGlzIGlzbid0IHJlcXVpcmVkIGFueW1vcmUgYmVjYXVzZSBEaWdpdExpc3QgdGFrZXMgY2FyZSBvZiB0aGlzLgorICAgICAgICAvLworICAgICAgICAvLyAgLy8gVGhlIG5lZ2F0aXZlIG9mIHRoZSBleHBvbmVudCByZXByZXNlbnRzIHRoZSBudW1iZXIgb2YgbGVhZGluZworICAgICAgICAvLyAgLy8gemVyb3MgYmV0d2VlbiB0aGUgZGVjaW1hbCBhbmQgdGhlIGZpcnN0IG5vbi16ZXJvIGRpZ2l0LCBmb3IKKyAgICAgICAgLy8gIC8vIGEgdmFsdWUgPCAwLjEgKGUuZy4sIGZvciAwLjAwMTIzLCAtZkV4cG9uZW50ID09IDIpLiAgSWYgdGhpcworICAgICAgICAvLyAgLy8gaXMgbW9yZSB0aGFuIHRoZSBtYXhpbXVtIGZyYWN0aW9uIGRpZ2l0cywgdGhlbiB3ZSBoYXZlIGFuIHVuZGVyZmxvdworICAgICAgICAvLyAgLy8gZm9yIHRoZSBwcmludGVkIHJlcHJlc2VudGF0aW9uLiAgV2UgcmVjb2duaXplIHRoaXMgaGVyZSBhbmQgc2V0CisgICAgICAgIC8vICAvLyB0aGUgRGlnaXRMaXN0IHJlcHJlc2VudGF0aW9uIHRvIHplcm8gaW4gdGhpcyBzaXR1YXRpb24uCisgICAgICAgIC8vCisgICAgICAgIC8vICBpZiAoLWRpZ2l0TGlzdC5kZWNpbWFsQXQgPj0gZ2V0TWF4aW11bUZyYWN0aW9uRGlnaXRzKCkpCisgICAgICAgIC8vICB7CisgICAgICAgIC8vICAgICAgZGlnaXRMaXN0LmNvdW50ID0gMDsKKyAgICAgICAgLy8gIH0KKworICAgICAgICBpbnQgaTsKKyAgICAgICAgY2hhciB6ZXJvID0gc3ltYm9scy5nZXRaZXJvRGlnaXQoKTsKKyAgICAgICAgaW50IHplcm9EZWx0YSA9IHplcm8gLSAnMCc7IC8vICcwJyBpcyB0aGUgRGlnaXRMaXN0IHJlcHJlc2VudGF0aW9uIG9mIHplcm8KKyAgICAgICAgY2hhciBncm91cGluZyA9IHN5bWJvbHMuZ2V0R3JvdXBpbmdTZXBhcmF0b3IoKTsKKyAgICAgICAgY2hhciBkZWNpbWFsID0gaXNDdXJyZW5jeUZvcm1hdCA/CisgICAgICAgICAgICBzeW1ib2xzLmdldE1vbmV0YXJ5RGVjaW1hbFNlcGFyYXRvcigpIDoKKyAgICAgICAgICAgIHN5bWJvbHMuZ2V0RGVjaW1hbFNlcGFyYXRvcigpOworICAgICAgICBpbnQgbWF4SW50RGlnID0gZ2V0TWF4aW11bUludGVnZXJEaWdpdHMoKTsKKyAgICAgICAgaW50IG1pbkludERpZyA9IGdldE1pbmltdW1JbnRlZ2VyRGlnaXRzKCk7CisKKyAgICAgICAgLyogUGVyIGJ1ZyA0MTQ3NzA2LCBEZWNpbWFsRm9ybWF0IG11c3QgcmVzcGVjdCB0aGUgc2lnbiBvZiBudW1iZXJzIHdoaWNoCisgICAgICAgICAqIGZvcm1hdCBhcyB6ZXJvLiAgVGhpcyBhbGxvd3Mgc2Vuc2libGUgY29tcHV0YXRpb25zIGFuZCBwcmVzZXJ2ZXMKKyAgICAgICAgICogcmVsYXRpb25zIHN1Y2ggYXMgc2lnbnVtKDEveCkgPSBzaWdudW0oeCksIHdoZXJlIHggaXMgK0luZmluaXR5IG9yCisgICAgICAgICAqIC1JbmZpbml0eS4gIFByaW9yIHRvIHRoaXMgZml4LCB3ZSBhbHdheXMgZm9ybWF0dGVkIHplcm8gdmFsdWVzIGFzIGlmCisgICAgICAgICAqIHRoZXkgd2VyZSBwb3NpdGl2ZS4gIExpdSA3LzYvOTguCisgICAgICAgICAqLworICAgICAgICBpZiAoZGlnaXRMaXN0LmlzWmVybygpKQorICAgICAgICB7CisgICAgICAgICAgICBkaWdpdExpc3QuZGVjaW1hbEF0ID0gMDsgLy8gTm9ybWFsaXplCisgICAgICAgIH0KKworICAgICAgICByZXN1bHQuYXBwZW5kKGlzTmVnYXRpdmUgPyBuZWdhdGl2ZVByZWZpeCA6IHBvc2l0aXZlUHJlZml4KTsKKworICAgICAgICBpZiAodXNlRXhwb25lbnRpYWxOb3RhdGlvbikKKyAgICAgICAgeworICAgICAgICAgICAgLy8gUmVjb3JkIGZpZWxkIGluZm9ybWF0aW9uIGZvciBjYWxsZXIuCisgICAgICAgICAgICAvL0ZQOmlmIChmaWVsZFBvc2l0aW9uLmdldEZpZWxkKCkgPT0gTnVtYmVyRm9ybWF0LklOVEVHRVJfRklFTEQpCisgICAgICAgICAgICAvL0ZQOnsKKyAgICAgICAgICAgICAgICAvL0ZQOmZpZWxkUG9zaXRpb24uc2V0QmVnaW5JbmRleChyZXN1bHQubGVuZ3RoKCkpOworICAgICAgICAgICAgICAgIC8vRlA6ZmllbGRQb3NpdGlvbi5zZXRFbmRJbmRleCgtMSk7CisgICAgICAgICAgICAvL0ZQOn0KKyAgICAgICAgICAgIC8vRlA6ZWxzZSBpZiAoZmllbGRQb3NpdGlvbi5nZXRGaWVsZCgpID09IE51bWJlckZvcm1hdC5GUkFDVElPTl9GSUVMRCkKKyAgICAgICAgICAgIC8vRlA6eworICAgICAgICAgICAgICAgIC8vRlA6ZmllbGRQb3NpdGlvbi5zZXRCZWdpbkluZGV4KC0xKTsKKyAgICAgICAgICAgIC8vRlA6fQorCisgICAgICAgICAgICAvLyBNaW5pbXVtIGludGVnZXIgZGlnaXRzIGFyZSBoYW5kbGVkIGluIGV4cG9uZW50aWFsIGZvcm1hdCBieQorICAgICAgICAgICAgLy8gYWRqdXN0aW5nIHRoZSBleHBvbmVudC4gIEZvciBleGFtcGxlLCAwLjAxMjM0IHdpdGggMyBtaW5pbXVtCisgICAgICAgICAgICAvLyBpbnRlZ2VyIGRpZ2l0cyBpcyAiMTIzLjRFLTQiLgorCisgICAgICAgICAgICAvLyBNYXhpbXVtIGludGVnZXIgZGlnaXRzIGFyZSBpbnRlcnByZXRlZCBhcyBpbmRpY2F0aW5nIHRoZQorICAgICAgICAgICAgLy8gcmVwZWF0aW5nIHJhbmdlLiAgVGhpcyBpcyB1c2VmdWwgZm9yIGVuZ2luZWVyaW5nIG5vdGF0aW9uLCBpbgorICAgICAgICAgICAgLy8gd2hpY2ggdGhlIGV4cG9uZW50IGlzIHJlc3RyaWN0ZWQgdG8gYSBtdWx0aXBsZSBvZiAzLiAgRm9yCisgICAgICAgICAgICAvLyBleGFtcGxlLCAwLjAxMjM0IHdpdGggMyBtYXhpbXVtIGludGVnZXIgZGlnaXRzIGlzICIxMi4zNGUtMyIuCisgICAgICAgICAgICAvLyBJZiBtYXhpbXVtIGludGVnZXIgZGlnaXRzIGFyZSBkZWZpbmVkIGFuZCBhcmUgbGFyZ2VyIHRoYW4KKyAgICAgICAgICAgIC8vIG1pbmltdW0gaW50ZWdlciBkaWdpdHMsIHRoZW4gbWluaW11bSBpbnRlZ2VyIGRpZ2l0cyBhcmUKKyAgICAgICAgICAgIC8vIGlnbm9yZWQuCisKKyAgICAgICAgICAgIGludCBleHBvbmVudCA9IGRpZ2l0TGlzdC5kZWNpbWFsQXQ7CisgICAgICAgICAgICBpZiAobWF4SW50RGlnID4gMSAmJiBtYXhJbnREaWcgIT0gbWluSW50RGlnKSB7CisgICAgICAgICAgICAgICAgLy8gQSBleHBvbmVudCBpbmNyZW1lbnQgaXMgZGVmaW5lZDsgYWRqdXN0IHRvIGl0LgorICAgICAgICAgICAgICAgIGV4cG9uZW50ID0gKGV4cG9uZW50ID4gMCkgPyAoZXhwb25lbnQgLSAxKSAvIG1heEludERpZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoZXhwb25lbnQgLyBtYXhJbnREaWcpIC0gMTsKKyAgICAgICAgICAgICAgICBleHBvbmVudCAqPSBtYXhJbnREaWc7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIE5vIGV4cG9uZW50IGluY3JlbWVudCBpcyBkZWZpbmVkOyB1c2UgbWluaW11bSBpbnRlZ2VyIGRpZ2l0cy4KKyAgICAgICAgICAgICAgICAvLyBJZiBub25lIGlzIHNwZWNpZmllZCwgYXMgaW4gIiNFMCIsIGdlbmVyYXRlIDEgaW50ZWdlciBkaWdpdC4KKyAgICAgICAgICAgICAgICBleHBvbmVudCAtPSAobWluSW50RGlnID4gMCB8fCBnZXRNaW5pbXVtRnJhY3Rpb25EaWdpdHMoKSA+IDApCisgICAgICAgICAgICAgICAgICAgID8gbWluSW50RGlnIDogMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2Ugbm93IG91dHB1dCBhIG1pbmltdW0gbnVtYmVyIG9mIGRpZ2l0cywgYW5kIG1vcmUgaWYgdGhlcmUKKyAgICAgICAgICAgIC8vIGFyZSBtb3JlIGRpZ2l0cywgdXAgdG8gdGhlIG1heGltdW0gbnVtYmVyIG9mIGRpZ2l0cy4gIFdlCisgICAgICAgICAgICAvLyBwbGFjZSB0aGUgZGVjaW1hbCBwb2ludCBhZnRlciB0aGUgImludGVnZXIiIGRpZ2l0cywgd2hpY2gKKyAgICAgICAgICAgIC8vIGFyZSB0aGUgZmlyc3QgKGRlY2ltYWxBdCAtIGV4cG9uZW50KSBkaWdpdHMuCisgICAgICAgICAgICBpbnQgbWluaW11bURpZ2l0cyA9IG1pbkludERpZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGdldE1pbmltdW1GcmFjdGlvbkRpZ2l0cygpOworICAgICAgICAgICAgLy8gVGhlIG51bWJlciBvZiBpbnRlZ2VyIGRpZ2l0cyBpcyBoYW5kbGVkIHNwZWNpYWxseSBpZiB0aGUgbnVtYmVyCisgICAgICAgICAgICAvLyBpcyB6ZXJvLCBzaW5jZSB0aGVuIHRoZXJlIG1heSBiZSBubyBkaWdpdHMuCisgICAgICAgICAgICBpbnQgaW50ZWdlckRpZ2l0cyA9IGRpZ2l0TGlzdC5pc1plcm8oKSA/IG1pbkludERpZyA6CisgICAgICAgICAgICAgICAgZGlnaXRMaXN0LmRlY2ltYWxBdCAtIGV4cG9uZW50OworICAgICAgICAgICAgaW50IHRvdGFsRGlnaXRzID0gZGlnaXRMaXN0LmNvdW50OworICAgICAgICAgICAgaWYgKG1pbmltdW1EaWdpdHMgPiB0b3RhbERpZ2l0cykgdG90YWxEaWdpdHMgPSBtaW5pbXVtRGlnaXRzOworICAgICAgICAgICAgaWYgKGludGVnZXJEaWdpdHMgPiB0b3RhbERpZ2l0cykgdG90YWxEaWdpdHMgPSBpbnRlZ2VyRGlnaXRzOworCisgICAgICAgICAgICBmb3IgKGk9MDsgaTx0b3RhbERpZ2l0czsgKytpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChpID09IGludGVnZXJEaWdpdHMpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAvLyBSZWNvcmQgZmllbGQgaW5mb3JtYXRpb24gZm9yIGNhbGxlci4KKyAgICAgICAgICAgICAgICAgICAgLy9GUDppZiAoZmllbGRQb3NpdGlvbi5nZXRGaWVsZCgpID09IE51bWJlckZvcm1hdC5JTlRFR0VSX0ZJRUxEKQorICAgICAgICAgICAgICAgICAgICAvL0ZQOmZpZWxkUG9zaXRpb24uc2V0RW5kSW5kZXgocmVzdWx0Lmxlbmd0aCgpKTsKKworICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGRlY2ltYWwpOworCisgICAgICAgICAgICAgICAgICAgIC8vIFJlY29yZCBmaWVsZCBpbmZvcm1hdGlvbiBmb3IgY2FsbGVyLgorICAgICAgICAgICAgICAgICAgICAvL0ZQOmlmIChmaWVsZFBvc2l0aW9uLmdldEZpZWxkKCkgPT0gTnVtYmVyRm9ybWF0LkZSQUNUSU9OX0ZJRUxEKQorICAgICAgICAgICAgICAgICAgICAvL0ZQOmZpZWxkUG9zaXRpb24uc2V0QmVnaW5JbmRleChyZXN1bHQubGVuZ3RoKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKChpIDwgZGlnaXRMaXN0LmNvdW50KSA/CisgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyKShkaWdpdExpc3QuZGlnaXRzW2ldICsgemVyb0RlbHRhKSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgIHplcm8pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAvL0ZvciBJQ1UgY29tcGF0aWJpbGl0eSBhbmQgZm9ybWF0IDAgdG8gMEUwIHdpdGggcGF0dGVybiAiI0UwIiBbUmljaGFyZC9HQ0xdCisgICAgICAgICAgICBpZiAoZGlnaXRMaXN0LmlzWmVybygpICYmICh0b3RhbERpZ2l0cyA9PTApKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh6ZXJvKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gUmVjb3JkIGZpZWxkIGluZm9ybWF0aW9uCisgICAgICAgICAgICBpZiAoZmllbGRQb3NpdGlvbi5nZXRGaWVsZCgpID09IE51bWJlckZvcm1hdC5JTlRFR0VSX0ZJRUxEKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vRlA6aWYgKGZpZWxkUG9zaXRpb24uZ2V0RW5kSW5kZXgoKSA8IDApCisgICAgICAgICAgICAgICAgLy9GUDpmaWVsZFBvc2l0aW9uLnNldEVuZEluZGV4KHJlc3VsdC5sZW5ndGgoKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChmaWVsZFBvc2l0aW9uLmdldEZpZWxkKCkgPT0gTnVtYmVyRm9ybWF0LkZSQUNUSU9OX0ZJRUxEKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vRlA6aWYgKGZpZWxkUG9zaXRpb24uZ2V0QmVnaW5JbmRleCgpIDwgMCkKKyAgICAgICAgICAgICAgICAvL0ZQOmZpZWxkUG9zaXRpb24uc2V0QmVnaW5JbmRleChyZXN1bHQubGVuZ3RoKCkpOworICAgICAgICAgICAgICAgIC8vRlA6ZmllbGRQb3NpdGlvbi5zZXRFbmRJbmRleChyZXN1bHQubGVuZ3RoKCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZXhwb25lbnQgaXMgb3V0cHV0IHVzaW5nIHRoZSBwYXR0ZXJuLXNwZWNpZmllZCBtaW5pbXVtCisgICAgICAgICAgICAvLyBleHBvbmVudCBkaWdpdHMuICBUaGVyZSBpcyBubyBtYXhpbXVtIGxpbWl0IHRvIHRoZSBleHBvbmVudAorICAgICAgICAgICAgLy8gZGlnaXRzLCBzaW5jZSB0cnVuY2F0aW5nIHRoZSBleHBvbmVudCB3b3VsZCByZXN1bHQgaW4gYW4KKyAgICAgICAgICAgIC8vIHVuYWNjZXB0YWJsZSBpbmFjY3VyYWN5LgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChzeW1ib2xzLmdldEV4cG9uZW50U2VwYXJhdG9yKCkpOworCisgICAgICAgICAgICAvLyBGb3IgemVybyB2YWx1ZXMsIHdlIGZvcmNlIHRoZSBleHBvbmVudCB0byB6ZXJvLiAgV2UKKyAgICAgICAgICAgIC8vIG11c3QgZG8gdGhpcyBoZXJlLCBhbmQgbm90IGVhcmxpZXIsIGJlY2F1c2UgdGhlIHZhbHVlCisgICAgICAgICAgICAvLyBpcyB1c2VkIHRvIGRldGVybWluZSBpbnRlZ2VyIGRpZ2l0IGNvdW50IGFib3ZlLgorICAgICAgICAgICAgaWYgKGRpZ2l0TGlzdC5pc1plcm8oKSkgZXhwb25lbnQgPSAwOworCisgICAgICAgICAgICBib29sZWFuIG5lZ2F0aXZlRXhwb25lbnQgPSBleHBvbmVudCA8IDA7CisgICAgICAgICAgICBpZiAobmVnYXRpdmVFeHBvbmVudCkgeworICAgICAgICAgICAgICAgIGV4cG9uZW50ID0gLWV4cG9uZW50OworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3ltYm9scy5nZXRNaW51c1NpZ24oKSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGV4cG9uZW50U2lnbkFsd2F5c1Nob3duKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChzeW1ib2xzLmdldFBsdXNTaWduKCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGlnaXRMaXN0LnNldChleHBvbmVudCk7CisgICAgICAgICAgICBmb3IgKGk9ZGlnaXRMaXN0LmRlY2ltYWxBdDsgaTxtaW5FeHBvbmVudERpZ2l0czsgKytpKSByZXN1bHQuYXBwZW5kKHplcm8pOworICAgICAgICAgICAgZm9yIChpPTA7IGk8ZGlnaXRMaXN0LmRlY2ltYWxBdDsgKytpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoKGkgPCBkaWdpdExpc3QuY291bnQpID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIpKGRpZ2l0TGlzdC5kaWdpdHNbaV0gKyB6ZXJvRGVsdGEpIDogemVybyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICAvLyBSZWNvcmQgZmllbGQgaW5mb3JtYXRpb24gZm9yIGNhbGxlci4KKyAgICAgICAgICAgIC8vRlA6aWYgKGZpZWxkUG9zaXRpb24uZ2V0RmllbGQoKSA9PSBOdW1iZXJGb3JtYXQuSU5URUdFUl9GSUVMRCkKKyAgICAgICAgICAgIC8vRlA6ZmllbGRQb3NpdGlvbi5zZXRCZWdpbkluZGV4KHJlc3VsdC5sZW5ndGgoKSk7CisKKyAgICAgICAgICAgIC8vIE91dHB1dCB0aGUgaW50ZWdlciBwb3J0aW9uLiAgSGVyZSAnY291bnQnIGlzIHRoZSB0b3RhbAorICAgICAgICAgICAgLy8gbnVtYmVyIG9mIGludGVnZXIgZGlnaXRzIHdlIHdpbGwgZGlzcGxheSwgaW5jbHVkaW5nIGJvdGgKKyAgICAgICAgICAgIC8vIGxlYWRpbmcgemVyb3MgcmVxdWlyZWQgdG8gc2F0aXNmeSBnZXRNaW5pbXVtSW50ZWdlckRpZ2l0cywKKyAgICAgICAgICAgIC8vIGFuZCBhY3R1YWwgZGlnaXRzIHByZXNlbnQgaW4gdGhlIG51bWJlci4KKyAgICAgICAgICAgIGludCBjb3VudCA9IG1pbkludERpZzsKKyAgICAgICAgICAgIGludCBkaWdpdEluZGV4ID0gMDsgLy8gSW5kZXggaW50byBkaWdpdExpc3QuZkRpZ2l0c1tdCisgICAgICAgICAgICBpZiAoZGlnaXRMaXN0LmRlY2ltYWxBdCA+IDAgJiYgY291bnQgPCBkaWdpdExpc3QuZGVjaW1hbEF0KQorICAgICAgICAgICAgICAgIGNvdW50ID0gZGlnaXRMaXN0LmRlY2ltYWxBdDsKKworICAgICAgICAgICAgLy8gSGFuZGxlIHRoZSBjYXNlIHdoZXJlIGdldE1heGltdW1JbnRlZ2VyRGlnaXRzKCkgaXMgc21hbGxlcgorICAgICAgICAgICAgLy8gdGhhbiB0aGUgcmVhbCBudW1iZXIgb2YgaW50ZWdlciBkaWdpdHMuICBJZiB0aGlzIGlzIHNvLCB3ZQorICAgICAgICAgICAgLy8gb3V0cHV0IHRoZSBsZWFzdCBzaWduaWZpY2FudCBtYXggaW50ZWdlciBkaWdpdHMuICBGb3IgZXhhbXBsZSwKKyAgICAgICAgICAgIC8vIHRoZSB2YWx1ZSAxOTk3IHByaW50ZWQgd2l0aCAyIG1heCBpbnRlZ2VyIGRpZ2l0cyBpcyBqdXN0ICI5NyIuCisKKyAgICAgICAgICAgIGlmIChjb3VudCA+IG1heEludERpZykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb3VudCA9IG1heEludERpZzsKKyAgICAgICAgICAgICAgICBkaWdpdEluZGV4ID0gZGlnaXRMaXN0LmRlY2ltYWxBdCAtIGNvdW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpbnQgc2l6ZUJlZm9yZUludGVnZXJQYXJ0ID0gcmVzdWx0Lmxlbmd0aCgpOworICAgICAgICAgICAgZm9yIChpPWNvdW50LTE7IGk+PTA7IC0taSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoaSA8IGRpZ2l0TGlzdC5kZWNpbWFsQXQgJiYgZGlnaXRJbmRleCA8IGRpZ2l0TGlzdC5jb3VudCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8vIE91dHB1dCBhIHJlYWwgZGlnaXQKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgoY2hhcikoZGlnaXRMaXN0LmRpZ2l0c1tkaWdpdEluZGV4KytdICsgemVyb0RlbHRhKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8vIE91dHB1dCBhIGxlYWRpbmcgemVybworICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHplcm8pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIE91dHB1dCBncm91cGluZyBzZXBhcmF0b3IgaWYgbmVjZXNzYXJ5LgorICAgICAgICAgICAgICAgIGlmIChpc0dyb3VwaW5nUG9zaXRpb24oaSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChncm91cGluZyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBSZWNvcmQgZmllbGQgaW5mb3JtYXRpb24gZm9yIGNhbGxlci4KKyAgICAgICAgICAgIC8vRlA6aWYgKGZpZWxkUG9zaXRpb24uZ2V0RmllbGQoKSA9PSBOdW1iZXJGb3JtYXQuSU5URUdFUl9GSUVMRCkKKyAgICAgICAgICAgIC8vRlA6ZmllbGRQb3NpdGlvbi5zZXRFbmRJbmRleChyZXN1bHQubGVuZ3RoKCkpOworCisgICAgICAgICAgICAvLyBEZXRlcm1pbmUgd2hldGhlciBvciBub3QgdGhlcmUgYXJlIGFueSBwcmludGFibGUgZnJhY3Rpb25hbAorICAgICAgICAgICAgLy8gZGlnaXRzLiAgSWYgd2UndmUgdXNlZCB1cCB0aGUgZGlnaXRzIHdlIGtub3cgdGhlcmUgYXJlbid0LgorICAgICAgICAgICAgYm9vbGVhbiBmcmFjdGlvblByZXNlbnQgPSAoZ2V0TWluaW11bUZyYWN0aW9uRGlnaXRzKCkgPiAwKSB8fAorICAgICAgICAgICAgKCFpc0ludGVnZXIgJiYgZGlnaXRJbmRleCA8IGRpZ2l0TGlzdC5jb3VudCk7CisKKyAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGZyYWN0aW9uIHByZXNlbnQsIGFuZCB3ZSBoYXZlbid0IHByaW50ZWQgYW55CisgICAgICAgICAgICAvLyBpbnRlZ2VyIGRpZ2l0cywgdGhlbiBwcmludCBhIHplcm8uICBPdGhlcndpc2Ugd2Ugd29uJ3QgcHJpbnQKKyAgICAgICAgICAgIC8vIF9hbnlfIGRpZ2l0cywgYW5kIHdlIHdvbid0IGJlIGFibGUgdG8gcGFyc2UgdGhpcyBzdHJpbmcuCisgICAgICAgICAgICBpZiAoIWZyYWN0aW9uUHJlc2VudCAmJiByZXN1bHQubGVuZ3RoKCkgPT0gc2l6ZUJlZm9yZUludGVnZXJQYXJ0KQorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoemVybyk7CisKKyAgICAgICAgICAgIC8vIE91dHB1dCB0aGUgZGVjaW1hbCBzZXBhcmF0b3IgaWYgd2UgYWx3YXlzIGRvIHNvLgorICAgICAgICAgICAgaWYgKGRlY2ltYWxTZXBhcmF0b3JBbHdheXNTaG93biB8fCBmcmFjdGlvblByZXNlbnQpCisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChkZWNpbWFsKTsKKworICAgICAgICAgICAgLy8gUmVjb3JkIGZpZWxkIGluZm9ybWF0aW9uIGZvciBjYWxsZXIuCisgICAgICAgICAgICAvL0ZQOmlmIChmaWVsZFBvc2l0aW9uLmdldEZpZWxkKCkgPT0gTnVtYmVyRm9ybWF0LkZSQUNUSU9OX0ZJRUxEKQorICAgICAgICAgICAgLy9GUDpmaWVsZFBvc2l0aW9uLnNldEJlZ2luSW5kZXgocmVzdWx0Lmxlbmd0aCgpKTsKKworICAgICAgICAgICAgZm9yIChpPTA7IGkgPCBnZXRNYXhpbXVtRnJhY3Rpb25EaWdpdHMoKTsgKytpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIEhlcmUgaXMgd2hlcmUgd2UgZXNjYXBlIGZyb20gdGhlIGxvb3AuICBXZSBlc2NhcGUgaWYgd2UndmUgb3V0cHV0CisgICAgICAgICAgICAgICAgLy8gdGhlIG1heGltdW0gZnJhY3Rpb24gZGlnaXRzIChzcGVjaWZpZWQgaW4gdGhlIGZvciBleHByZXNzaW9uIGFib3ZlKS4KKyAgICAgICAgICAgICAgICAvLyBXZSBhbHNvIHN0b3Agd2hlbiB3ZSd2ZSBvdXRwdXQgdGhlIG1pbmltdW0gZGlnaXRzIGFuZCBlaXRoZXI6CisgICAgICAgICAgICAgICAgLy8gd2UgaGF2ZSBhbiBpbnRlZ2VyLCBzbyB0aGVyZSBpcyBubyBmcmFjdGlvbmFsIHN0dWZmIHRvIGRpc3BsYXksCisgICAgICAgICAgICAgICAgLy8gb3Igd2UncmUgb3V0IG9mIHNpZ25pZmljYW50IGRpZ2l0cy4KKyAgICAgICAgICAgICAgICBpZiAoaSA+PSBnZXRNaW5pbXVtRnJhY3Rpb25EaWdpdHMoKSAmJgorICAgICAgICAgICAgICAgICAgICAoaXNJbnRlZ2VyIHx8IGRpZ2l0SW5kZXggPj0gZGlnaXRMaXN0LmNvdW50KSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAvLyBPdXRwdXQgbGVhZGluZyBmcmFjdGlvbmFsIHplcm9zLiAgVGhlc2UgYXJlIHplcm9zIHRoYXQgY29tZSBhZnRlcgorICAgICAgICAgICAgICAgIC8vIHRoZSBkZWNpbWFsIGJ1dCBiZWZvcmUgYW55IHNpZ25pZmljYW50IGRpZ2l0cy4gIFRoZXNlIGFyZSBvbmx5CisgICAgICAgICAgICAgICAgLy8gb3V0cHV0IGlmIGFicyhudW1iZXIgYmVpbmcgZm9ybWF0dGVkKSA8IDEuMC4KKyAgICAgICAgICAgICAgICBpZiAoLTEtaSA+IChkaWdpdExpc3QuZGVjaW1hbEF0LTEpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh6ZXJvKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gT3V0cHV0IGEgZGlnaXQsIGlmIHdlIGhhdmUgYW55IHByZWNpc2lvbiBsZWZ0LCBvciBhCisgICAgICAgICAgICAgICAgLy8gemVybyBpZiB3ZSBkb24ndC4gIFdlIGRvbid0IHdhbnQgdG8gb3V0cHV0IG5vaXNlIGRpZ2l0cy4KKyAgICAgICAgICAgICAgICBpZiAoIWlzSW50ZWdlciAmJiBkaWdpdEluZGV4IDwgZGlnaXRMaXN0LmNvdW50KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgoY2hhcikoZGlnaXRMaXN0LmRpZ2l0c1tkaWdpdEluZGV4KytdICsgemVyb0RlbHRhKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoemVybyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBSZWNvcmQgZmllbGQgaW5mb3JtYXRpb24gZm9yIGNhbGxlci4KKyAgICAgICAgICAgIC8vRlA6aWYgKGZpZWxkUG9zaXRpb24uZ2V0RmllbGQoKSA9PSBOdW1iZXJGb3JtYXQuRlJBQ1RJT05fRklFTEQpCisgICAgICAgICAgICAvL0ZQOmZpZWxkUG9zaXRpb24uc2V0RW5kSW5kZXgocmVzdWx0Lmxlbmd0aCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdC5hcHBlbmQoaXNOZWdhdGl2ZSA/IG5lZ2F0aXZlU3VmZml4IDogcG9zaXRpdmVTdWZmaXgpOworCisgICAgICAgIC8vIFtORVddCisgICAgICAgIGFkZFBhZGRpbmcocmVzdWx0LCB0cnVlLCBpc05lZ2F0aXZlKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvLyBbTkVXXQorICAgIHByaXZhdGUgZmluYWwgdm9pZCBhZGRQYWRkaW5nKFN0cmluZ0J1ZmZlciByZXN1bHQsIGJvb2xlYW4gaGFzQWZmaXhlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGlzTmVnYXRpdmUpIHsKKyAgICAgICAgaWYgKGZvcm1hdFdpZHRoID4gMCkgeworICAgICAgICAgICAgaW50IGxlbiA9IGZvcm1hdFdpZHRoIC0gcmVzdWx0Lmxlbmd0aCgpOworICAgICAgICAgICAgaWYgKGxlbiA+IDApIHsKKyAgICAgICAgICAgICAgICBjaGFyW10gcGFkZGluZyA9IG5ldyBjaGFyW2xlbl07CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPGxlbjsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdbaV0gPSBwYWQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHN3aXRjaCAocGFkUG9zaXRpb24pIHsKKyAgICAgICAgICAgICAgICBjYXNlIFBBRF9BRlRFUl9QUkVGSVg6CisgICAgICAgICAgICAgICAgICAgIGlmIChoYXNBZmZpeGVzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuaW5zZXJ0KGlzTmVnYXRpdmUgPyBuZWdhdGl2ZVByZWZpeC5sZW5ndGgoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHBvc2l0aXZlUHJlZml4Lmxlbmd0aCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9IC8vIGVsc2UgZmFsbCB0aHJvdWdoIHRvIG5leHQgY2FzZQorICAgICAgICAgICAgICAgIGNhc2UgUEFEX0JFRk9SRV9QUkVGSVg6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5pbnNlcnQoMCwgcGFkZGluZyk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgUEFEX0JFRk9SRV9TVUZGSVg6CisgICAgICAgICAgICAgICAgICAgIGlmIChoYXNBZmZpeGVzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuaW5zZXJ0KHJlc3VsdC5sZW5ndGgoKSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpc05lZ2F0aXZlID8gbmVnYXRpdmVTdWZmaXgubGVuZ3RoKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcG9zaXRpdmVTdWZmaXgubGVuZ3RoKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9IC8vIGVsc2UgZmFsbCB0aHJvdWdoIHRvIG5leHQgY2FzZQorICAgICAgICAgICAgICAgIGNhc2UgUEFEX0FGVEVSX1NVRkZJWDoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChwYWRkaW5nKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+Q0hBTkdFRDwvZm9udD48L3N0cm9uZz4KKyAgICAgKiBQYXJzZSB0aGUgZ2l2ZW4gc3RyaW5nLCByZXR1cm5pbmcgYSA8Y29kZT5OdW1iZXI8L2NvZGU+IG9iamVjdCB0bworICAgICAqIHJlcHJlc2VudCB0aGUgcGFyc2VkIHZhbHVlLiAgPGNvZGU+RG91YmxlPC9jb2RlPiBvYmplY3RzIGFyZSByZXR1cm5lZCB0bworICAgICAqIHJlcHJlc2VudCBub24taW50ZWdyYWwgdmFsdWVzIHdoaWNoIGNhbm5vdCBiZSBzdG9yZWQgaW4gYQorICAgICAqIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+LiAgVGhlc2UgYXJlIDxjb2RlPk5hTjwvY29kZT4sIGluZmluaXR5LAorICAgICAqIC1pbmZpbml0eSwgYW5kIC0wLjAuICBBbGwgb3RoZXIgdmFsdWVzIGFyZSByZXR1cm5lZCBhcyA8Y29kZT5Mb25nPC9jb2RlPiwKKyAgICAgKiA8Y29kZT5CaWdJbnRlZ2VyPC9jb2RlPiwgb3IgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gdmFsdWVzLCBpbiB0aGF0IG9yZGVyCisgICAgICogb2YgcHJlZmVyZW5jZS4gIElmIHRoZSBwYXJzZSBmYWlscywgbnVsbCBpcyByZXR1cm5lZC4KKyAgICAgKiBAcGFyYW0gdGV4dCB0aGUgc3RyaW5nIHRvIGJlIHBhcnNlZAorICAgICAqIEBwYXJhbSBwYXJzZVBvc2l0aW9uIGRlZmluZXMgdGhlIHBvc2l0aW9uIHdoZXJlIHBhcnNpbmcgaXMgdG8gYmVnaW4sCisgICAgICogYW5kIHVwb24gcmV0dXJuLCB0aGUgcG9zaXRpb24gd2hlcmUgcGFyc2luZyBsZWZ0IG9mZi4gIElmIHRoZSBwb3NpdGlvbgorICAgICAqIGhhcyBub3QgY2hhbmdlZCB1cG9uIHJldHVybiwgdGhlbiBwYXJzaW5nIGZhaWxlZC4KKyAgICAgKiBAcmV0dXJuIGEgPGNvZGU+TnVtYmVyPC9jb2RlPiBvYmplY3Qgd2l0aCB0aGUgcGFyc2VkIHZhbHVlIG9yCisgICAgICogPGNvZGU+bnVsbDwvY29kZT4gaWYgdGhlIHBhcnNlIGZhaWxlZAorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBOdW1iZXIgcGFyc2UoU3RyaW5nIHRleHQsIFBhcnNlUG9zaXRpb24gcGFyc2VQb3NpdGlvbikKKyAgICB7CisgICAgICAgIC8vIFNraXAgcGFkZGluZyBjaGFyYWN0ZXJzLCBpZiBhbnkKKyAgICAgICAgaW50IGJhY2t1cDsKKyAgICAgICAgaW50IGkgPSBiYWNrdXAgPSBwYXJzZVBvc2l0aW9uLmdldEluZGV4KCk7CisgICAgICAgIGlmIChmb3JtYXRXaWR0aCA+IDApIHsKKyAgICAgICAgICAgIHdoaWxlIChpIDwgdGV4dC5sZW5ndGgoKSAmJiB0ZXh0LmNoYXJBdChpKSA9PSBwYWQpIHsKKyAgICAgICAgICAgICAgICArK2k7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwYXJzZVBvc2l0aW9uLnNldEluZGV4KGkpOworICAgICAgICB9CisKKyAgICAgICAgLy8gSGFuZGxlIE5hTiBhcyBhIHNwZWNpYWwgY2FzZQorICAgICAgICBpZiAodGV4dC5yZWdpb25NYXRjaGVzKHBhcnNlUG9zaXRpb24uZ2V0SW5kZXgoKSwgc3ltYm9scy5nZXROYU4oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBzeW1ib2xzLmdldE5hTigpLmxlbmd0aCgpKSkgeworICAgICAgICAgICAgcGFyc2VQb3NpdGlvbi5zZXRJbmRleChwYXJzZVBvc2l0aW9uLmdldEluZGV4KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBzeW1ib2xzLmdldE5hTigpLmxlbmd0aCgpKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgRG91YmxlKERvdWJsZS5OYU4pOworICAgICAgICB9CisKKyAgICAgICAgYm9vbGVhbltdIHN0YXR1cyA9IG5ldyBib29sZWFuW1NUQVRVU19MRU5HVEhdOworICAgICAgICBpZiAoIXN1YnBhcnNlKHRleHQsIHBhcnNlUG9zaXRpb24sIGRpZ2l0TGlzdCwgZmFsc2UsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHBhcnNlUG9zaXRpb24uc2V0SW5kZXgoYmFja3VwKTsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9IGVsc2UgaWYgKGZvcm1hdFdpZHRoIDwgMCkgeworICAgICAgICAgICAgaSA9IHBhcnNlUG9zaXRpb24uZ2V0SW5kZXgoKTsKKyAgICAgICAgICAgIHdoaWxlIChpIDwgdGV4dC5sZW5ndGgoKSAmJiB0ZXh0LmNoYXJBdChpKSA9PSBwYWQpIHsKKyAgICAgICAgICAgICAgICArK2k7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwYXJzZVBvc2l0aW9uLnNldEluZGV4KGkpOworICAgICAgICB9CisKKyAgICAgICAgLy8gSGFuZGxlIGluZmluaXR5CisgICAgICAgIGlmIChzdGF0dXNbU1RBVFVTX0lORklOSVRFXSkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBEb3VibGUoc3RhdHVzW1NUQVRVU19QT1NJVElWRV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gRG91YmxlLlBPU0lUSVZFX0lORklOSVRZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IERvdWJsZS5ORUdBVElWRV9JTkZJTklUWSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBIYW5kbGUgLTAuMAorICAgICAgICBpZiAoIXN0YXR1c1tTVEFUVVNfUE9TSVRJVkVdICYmIGRpZ2l0TGlzdC5pc1plcm8oKSkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBEb3VibGUoLTAuMCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBEbyBhcyBtdWNoIG9mIHRoZSBtdWx0aXBsaWVyIGNvbnZlcnNpb24gYXMgcG9zc2libGUgd2l0aG91dAorICAgICAgICAvLyBsb3NpbmcgYWNjdXJhY3kuCisgICAgICAgIGludCBtdWx0ID0gbXVsdGlwbGllcjsgLy8gRG9uJ3QgbW9kaWZ5IHRoaXMubXVsdGlwbGllcgorICAgICAgICB3aGlsZSAobXVsdCAlIDEwID09IDApIHsKKyAgICAgICAgICAgIC0tZGlnaXRMaXN0LmRlY2ltYWxBdDsKKyAgICAgICAgICAgIG11bHQgLz0gMTA7CisgICAgICAgIH0KKworICAgICAgICAvLyBIYW5kbGUgaW50ZWdyYWwgdmFsdWVzCisgICAgICAgIGlmIChtdWx0ID09IDEgJiYgZGlnaXRMaXN0LmlzSW50ZWdyYWwoKSkgeworICAgICAgICAgICAgQmlnSW50ZWdlciBuID0gZGlnaXRMaXN0LmdldEJpZ0ludGVnZXIoc3RhdHVzW1NUQVRVU19QT1NJVElWRV0pOworICAgICAgICAgICAgcmV0dXJuIChuLmJpdExlbmd0aCgpIDwgNjQpCisgICAgICAgICAgICAgICAgPyAoTnVtYmVyKSBuZXcgTG9uZyhuLmxvbmdWYWx1ZSgpKSAKKyAgICAgICAgICAgICAgICA6IChOdW1iZXIpIG47CisgICAgICAgIH0KKworICAgICAgICAvLyBIYW5kbGUgbm9uLWludGVncmFsIHZhbHVlcworICAgICAgICBqYXZhLm1hdGguQmlnRGVjaW1hbCBuID0gZGlnaXRMaXN0LmdldEJpZ0RlY2ltYWwoc3RhdHVzW1NUQVRVU19QT1NJVElWRV0pOworICAgICAgICBpZiAobXVsdCAhPSAxKSB7CisgICAgICAgICAgICBuID0gbi5kaXZpZGUoamF2YS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihtdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBqYXZhLm1hdGguQmlnRGVjaW1hbC5ST1VORF9IQUxGX0VWRU4pOworICAgICAgICB9CisgICAgICAgIHJldHVybiBuOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTVEFUVVNfSU5GSU5JVEUgPSAwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTVEFUVVNfUE9TSVRJVkUgPSAxOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTVEFUVVNfTEVOR1RIICAgPSAyOworCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+Q0hBTkdFRDwvZm9udD48L3N0cm9uZz4KKyAgICAgKiBQYXJzZSB0aGUgZ2l2ZW4gdGV4dCBpbnRvIGEgbnVtYmVyLiAgVGhlIHRleHQgaXMgcGFyc2VkIGJlZ2lubmluZyBhdAorICAgICAqIHBhcnNlUG9zaXRpb24sIHVudGlsIGFuIHVucGFyc2VhYmxlIGNoYXJhY3RlciBpcyBzZWVuLgorICAgICAqIEBwYXJhbSB0ZXh0IFRoZSBzdHJpbmcgdG8gcGFyc2UuCisgICAgICogQHBhcmFtIHBhcnNlUG9zaXRpb24gVGhlIHBvc2l0aW9uIGF0IHdoaWNoIHRvIGJlaW5nIHBhcnNpbmcuICBVcG9uCisgICAgICogcmV0dXJuLCB0aGUgZmlyc3QgdW5wYXJzZWFibGUgY2hhcmFjdGVyLgorICAgICAqIEBwYXJhbSBkaWdpdHMgVGhlIERpZ2l0TGlzdCB0byBzZXQgdG8gdGhlIHBhcnNlZCB2YWx1ZS4KKyAgICAgKiBAcGFyYW0gaXNFeHBvbmVudCBJZiB0cnVlLCBwYXJzZSBhbiBleHBvbmVudC4gIFRoaXMgbWVhbnMgbm8KKyAgICAgKiBpbmZpbml0ZSB2YWx1ZXMgYW5kIGludGVnZXIgb25seS4KKyAgICAgKiBAcGFyYW0gc3RhdHVzIFVwb24gcmV0dXJuIGNvbnRhaW5zIGJvb2xlYW4gc3RhdHVzIGZsYWdzIGluZGljYXRpbmcKKyAgICAgKiB3aGV0aGVyIHRoZSB2YWx1ZSB3YXMgaW5maW5pdGUgYW5kIHdoZXRoZXIgaXQgd2FzIHBvc2l0aXZlLgorICAgICAqLworICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiBzdWJwYXJzZShTdHJpbmcgdGV4dCwgUGFyc2VQb3NpdGlvbiBwYXJzZVBvc2l0aW9uLAorICAgICAgICAgICAgICAgICAgIERpZ2l0TGlzdCBkaWdpdHMsIGJvb2xlYW4gaXNFeHBvbmVudCwKKyAgICAgICAgICAgICAgICAgICBib29sZWFuIHN0YXR1c1tdKQorICAgIHsKKyAgICAgICAgaW50IHBvc2l0aW9uID0gcGFyc2VQb3NpdGlvbi5nZXRJbmRleCgpOworICAgICAgICBpbnQgb2xkU3RhcnQgPSBwYXJzZVBvc2l0aW9uLmdldEluZGV4KCk7CisgICAgICAgIGludCBiYWNrdXA7CisKKyAgICAgICAgLy8gY2hlY2sgZm9yIHBvc2l0aXZlUHJlZml4OyB0YWtlIGxvbmdlc3QKKyAgICAgICAgYm9vbGVhbiBnb3RQb3NpdGl2ZSA9IHRleHQucmVnaW9uTWF0Y2hlcyhwb3NpdGlvbixwb3NpdGl2ZVByZWZpeCwwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aXZlUHJlZml4Lmxlbmd0aCgpKTsKKyAgICAgICAgYm9vbGVhbiBnb3ROZWdhdGl2ZSA9IHRleHQucmVnaW9uTWF0Y2hlcyhwb3NpdGlvbixuZWdhdGl2ZVByZWZpeCwwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lZ2F0aXZlUHJlZml4Lmxlbmd0aCgpKTsKKyAgICAgICAgaWYgKGdvdFBvc2l0aXZlICYmIGdvdE5lZ2F0aXZlKSB7CisgICAgICAgICAgICBpZiAocG9zaXRpdmVQcmVmaXgubGVuZ3RoKCkgPiBuZWdhdGl2ZVByZWZpeC5sZW5ndGgoKSkKKyAgICAgICAgICAgICAgICBnb3ROZWdhdGl2ZSA9IGZhbHNlOworICAgICAgICAgICAgZWxzZSBpZiAocG9zaXRpdmVQcmVmaXgubGVuZ3RoKCkgPCBuZWdhdGl2ZVByZWZpeC5sZW5ndGgoKSkKKyAgICAgICAgICAgICAgICBnb3RQb3NpdGl2ZSA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIGlmIChnb3RQb3NpdGl2ZSkgeworICAgICAgICAgICAgcG9zaXRpb24gKz0gcG9zaXRpdmVQcmVmaXgubGVuZ3RoKCk7CisgICAgICAgIH0gZWxzZSBpZiAoZ290TmVnYXRpdmUpIHsKKyAgICAgICAgICAgIHBvc2l0aW9uICs9IG5lZ2F0aXZlUHJlZml4Lmxlbmd0aCgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy9QUDpwYXJzZVBvc2l0aW9uLmVycm9ySW5kZXggPSBwb3NpdGlvbjsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICAvLyBwcm9jZXNzIGRpZ2l0cyBvciBJbmYsIGZpbmQgZGVjaW1hbCBwb3NpdGlvbgorICAgICAgICBzdGF0dXNbU1RBVFVTX0lORklOSVRFXSA9IGZhbHNlOworICAgICAgICBpZiAoIWlzRXhwb25lbnQgJiYgdGV4dC5yZWdpb25NYXRjaGVzKHBvc2l0aW9uLHN5bWJvbHMuZ2V0SW5maW5pdHkoKSwwLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2xzLmdldEluZmluaXR5KCkubGVuZ3RoKCkpKQorICAgICAgICB7CisgICAgICAgICAgICBwb3NpdGlvbiArPSBzeW1ib2xzLmdldEluZmluaXR5KCkubGVuZ3RoKCk7CisgICAgICAgICAgICBzdGF0dXNbU1RBVFVTX0lORklOSVRFXSA9IHRydWU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBXZSBub3cgaGF2ZSBhIHN0cmluZyBvZiBkaWdpdHMsIHBvc3NpYmx5IHdpdGggZ3JvdXBpbmcgc3ltYm9scywKKyAgICAgICAgICAgIC8vIGFuZCBkZWNpbWFsIHBvaW50cy4gIFdlIHdhbnQgdG8gcHJvY2VzcyB0aGVzZSBpbnRvIGEgRGlnaXRMaXN0LgorICAgICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBwdXQgYSBidW5jaCBvZiBsZWFkaW5nIHplcm9zIGludG8gdGhlIERpZ2l0TGlzdAorICAgICAgICAgICAgLy8gdGhvdWdoLCBzbyB3ZSBrZWVwIHRyYWNrIG9mIHRoZSBsb2NhdGlvbiBvZiB0aGUgZGVjaW1hbCBwb2ludCwKKyAgICAgICAgICAgIC8vIHB1dCBvbmx5IHNpZ25pZmljYW50IGRpZ2l0cyBpbnRvIHRoZSBEaWdpdExpc3QsIGFuZCBhZGp1c3QgdGhlCisgICAgICAgICAgICAvLyBleHBvbmVudCBhcyBuZWVkZWQuCisKKyAgICAgICAgICAgIGRpZ2l0cy5kZWNpbWFsQXQgPSBkaWdpdHMuY291bnQgPSAwOworICAgICAgICAgICAgY2hhciB6ZXJvID0gc3ltYm9scy5nZXRaZXJvRGlnaXQoKTsKKyAgICAgICAgICAgIGNoYXIgZGVjaW1hbCA9IGlzQ3VycmVuY3lGb3JtYXQgPworICAgICAgICAgICAgc3ltYm9scy5nZXRNb25ldGFyeURlY2ltYWxTZXBhcmF0b3IoKSA6IHN5bWJvbHMuZ2V0RGVjaW1hbFNlcGFyYXRvcigpOworICAgICAgICAgICAgY2hhciBncm91cGluZyA9IHN5bWJvbHMuZ2V0R3JvdXBpbmdTZXBhcmF0b3IoKTsKKyAgICAgICAgICAgIFN0cmluZyBleHBvbmVudFNlcCA9IHN5bWJvbHMuZ2V0RXhwb25lbnRTZXBhcmF0b3IoKTsKKyAgICAgICAgICAgIGJvb2xlYW4gc2F3RGVjaW1hbCA9IGZhbHNlOworICAgICAgICAgICAgYm9vbGVhbiBzYXdFeHBvbmVudCA9IGZhbHNlOworICAgICAgICAgICAgYm9vbGVhbiBzYXdEaWdpdCA9IGZhbHNlOworICAgICAgICAgICAgaW50IGV4cG9uZW50ID0gMDsgLy8gU2V0IHRvIHRoZSBleHBvbmVudCB2YWx1ZSwgaWYgYW55CisgICAgICAgICAgICBpbnQgZGlnaXQgPSAwOworCisgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIHRyYWNrIGRpZ2l0Q291bnQgb3Vyc2VsdmVzLCBiZWNhdXNlIGRpZ2l0cy5jb3VudCB3aWxsCisgICAgICAgICAgICAvLyBwaW4gd2hlbiB0aGUgbWF4aW11bSBhbGxvd2FibGUgZGlnaXRzIGlzIHJlYWNoZWQuCisgICAgICAgICAgICBpbnQgZGlnaXRDb3VudCA9IDA7CisKKyAgICAgICAgICAgIGJhY2t1cCA9IC0xOworICAgICAgICAgICAgZm9yICg7IHBvc2l0aW9uIDwgdGV4dC5sZW5ndGgoKTsgKytwb3NpdGlvbikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjaGFyIGNoID0gdGV4dC5jaGFyQXQocG9zaXRpb24pOworCisgICAgICAgICAgICAgICAgLyogV2UgcmVjb2duaXplIGFsbCBkaWdpdCByYW5nZXMsIG5vdCBvbmx5IHRoZSBMYXRpbiBkaWdpdCByYW5nZQorICAgICAgICAgICAgICAgICAqICcwJy4uJzknLiAgV2UgZG8gc28gYnkgdXNpbmcgdGhlIENoYXJhY3Rlci5kaWdpdCgpIG1ldGhvZCwKKyAgICAgICAgICAgICAgICAgKiB3aGljaCBjb252ZXJ0cyBhIHZhbGlkIFVuaWNvZGUgZGlnaXQgdG8gdGhlIHJhbmdlIDAuLjkuCisgICAgICAgICAgICAgICAgICoKKyAgICAgICAgICAgICAgICAgKiBUaGUgY2hhcmFjdGVyICdjaCcgbWF5IGJlIGEgZGlnaXQuICBJZiBzbywgcGxhY2UgaXRzIHZhbHVlCisgICAgICAgICAgICAgICAgICogZnJvbSAwIHRvIDkgaW4gJ2RpZ2l0Jy4gIEZpcnN0IHRyeSB1c2luZyB0aGUgbG9jYWxlIGRpZ2l0LAorICAgICAgICAgICAgICAgICAqIHdoaWNoIG1heSBvciBNQVkgTk9UIGJlIGEgc3RhbmRhcmQgVW5pY29kZSBkaWdpdCByYW5nZS4gIElmCisgICAgICAgICAgICAgICAgICogdGhpcyBmYWlscywgdHJ5IHVzaW5nIHRoZSBzdGFuZGFyZCBVbmljb2RlIGRpZ2l0IHJhbmdlcyBieQorICAgICAgICAgICAgICAgICAqIGNhbGxpbmcgQ2hhcmFjdGVyLmRpZ2l0KCkuICBJZiB0aGlzIGFsc28gZmFpbHMsIGRpZ2l0IHdpbGwKKyAgICAgICAgICAgICAgICAgKiBoYXZlIGEgdmFsdWUgb3V0c2lkZSB0aGUgcmFuZ2UgMC4uOS4KKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBkaWdpdCA9IGNoIC0gemVybzsKKyAgICAgICAgICAgICAgICBpZiAoZGlnaXQgPCAwIHx8IGRpZ2l0ID4gOSkgZGlnaXQgPSBDaGFyYWN0ZXIuZGlnaXQoY2gsIDEwKTsKKworICAgICAgICAgICAgICAgIGlmIChkaWdpdCA9PSAwKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ2FuY2VsIG91dCBiYWNrdXAgc2V0dGluZyAoc2VlIGdyb3VwaW5nIGhhbmRsZXIgYmVsb3cpCisgICAgICAgICAgICAgICAgICAgIGJhY2t1cCA9IC0xOyAvLyBEbyB0aGlzIEJFRk9SRSBjb250aW51ZSBzdGF0ZW1lbnQgYmVsb3chISEKKyAgICAgICAgICAgICAgICAgICAgc2F3RGlnaXQgPSB0cnVlOworCisgICAgICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBsZWFkaW5nIHplcm9zCisgICAgICAgICAgICAgICAgICAgIGlmIChkaWdpdHMuY291bnQgPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWdub3JlIGxlYWRpbmcgemVyb3MgaW4gaW50ZWdlciBwYXJ0IG9mIG51bWJlci4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2F3RGVjaW1hbCkgY29udGludWU7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgc2VlbiB0aGUgZGVjaW1hbCwgYnV0IG5vIHNpZ25pZmljYW50IGRpZ2l0cyB5ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGVuIHdlIGFjY291bnQgZm9yIGxlYWRpbmcgemVyb3MgYnkgZGVjcmVtZW50aW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGlnaXRzLmRlY2ltYWxBdCBpbnRvIG5lZ2F0aXZlIHZhbHVlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIC0tZGlnaXRzLmRlY2ltYWxBdDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrZGlnaXRDb3VudDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2l0cy5hcHBlbmQoKGNoYXIpKGRpZ2l0ICsgJzAnKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGlnaXQgPiAwICYmIGRpZ2l0IDw9IDkpIC8vIFtzaWNdIGRpZ2l0PT0wIGhhbmRsZWQgYWJvdmUKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHNhd0RpZ2l0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgKytkaWdpdENvdW50OworICAgICAgICAgICAgICAgICAgICBkaWdpdHMuYXBwZW5kKChjaGFyKShkaWdpdCArICcwJykpOworCisgICAgICAgICAgICAgICAgICAgIC8vIENhbmNlbCBvdXQgYmFja3VwIHNldHRpbmcgKHNlZSBncm91cGluZyBoYW5kbGVyIGJlbG93KQorICAgICAgICAgICAgICAgICAgICBiYWNrdXAgPSAtMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoIWlzRXhwb25lbnQgJiYgY2ggPT0gZGVjaW1hbCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8vIElmIHdlJ3JlIG9ubHkgcGFyc2luZyBpbnRlZ2Vycywgb3IgaWYgd2UgQUxSRUFEWSBzYXcgdGhlCisgICAgICAgICAgICAgICAgICAgIC8vIGRlY2ltYWwsIHRoZW4gZG9uJ3QgcGFyc2UgdGhpcyBvbmUuCisgICAgICAgICAgICAgICAgICAgIGlmIChpc1BhcnNlSW50ZWdlck9ubHkoKSB8fCBzYXdEZWNpbWFsKSBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgZGlnaXRzLmRlY2ltYWxBdCA9IGRpZ2l0Q291bnQ7IC8vIE5vdCBkaWdpdHMuY291bnQhCisgICAgICAgICAgICAgICAgICAgIHNhd0RlY2ltYWwgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmICghaXNFeHBvbmVudCAmJiBjaCA9PSBncm91cGluZyAmJiBpc0dyb3VwaW5nVXNlZCgpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNhd0RlY2ltYWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIC8vIElnbm9yZSBncm91cGluZyBjaGFyYWN0ZXJzLCBpZiB3ZSBhcmUgdXNpbmcgdGhlbSwgYnV0IHJlcXVpcmUKKyAgICAgICAgICAgICAgICAgICAgLy8gdGhhdCB0aGV5IGJlIGZvbGxvd2VkIGJ5IGEgZGlnaXQuICBPdGhlcndpc2Ugd2UgYmFja3VwIGFuZAorICAgICAgICAgICAgICAgICAgICAvLyByZXByb2Nlc3MgdGhlbS4KKyAgICAgICAgICAgICAgICAgICAgYmFja3VwID0gcG9zaXRpb247CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFpc0V4cG9uZW50ICYmICFzYXdFeHBvbmVudCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQucmVnaW9uTWF0Y2hlcyhwb3NpdGlvbiwgZXhwb25lbnRTZXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIGV4cG9uZW50U2VwLmxlbmd0aCgpKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8vIFBhcnNlIHNpZ24sIGlmIHByZXNlbnQKKyAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBuZWdFeHAgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgaW50IHBvcyA9IHBvc2l0aW9uICsgZXhwb25lbnRTZXAubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChwb3MgPCB0ZXh0Lmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjaCA9IHRleHQuY2hhckF0KHBvcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2ggPT0gc3ltYm9scy5nZXRQbHVzU2lnbigpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytwb3M7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoID09IHN5bWJvbHMuZ2V0TWludXNTaWduKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArK3BvczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWdFeHAgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgRGlnaXRMaXN0IGV4cG9uZW50RGlnaXRzID0gbmV3IERpZ2l0TGlzdCgpOworICAgICAgICAgICAgICAgICAgICBleHBvbmVudERpZ2l0cy5jb3VudCA9IDA7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlIChwb3MgPCB0ZXh0Lmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBkaWdpdCA9IHRleHQuY2hhckF0KHBvcykgLSB6ZXJvOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpZ2l0IDwgMCB8fCBkaWdpdCA+IDkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FuJ3QgcGFyc2UgIlsxRTBdIiB3aGVuIHBhdHRlcm4gaXMgIjAuIyMjRTA7WzAuIyMjRTBdIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hvdWxkIHVwZGF0ZSByZWFzc2lnbiB0aGUgdmFsdWUgb2YgJ2NoJyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6ICBkaWdpdCA9IENoYXJhY3Rlci5kaWdpdChjaCwgMTApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1JpY2hhcmQvR0NMXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlnaXQgPSBDaGFyYWN0ZXIuZGlnaXQodGV4dC5jaGFyQXQocG9zKSwgMTApOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpZ2l0ID49IDAgJiYgZGlnaXQgPD0gOSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cG9uZW50RGlnaXRzLmFwcGVuZCgoY2hhcikoZGlnaXQgKyAnMCcpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArK3BvczsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmIChleHBvbmVudERpZ2l0cy5jb3VudCA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4cG9uZW50RGlnaXRzLmRlY2ltYWxBdCA9IGV4cG9uZW50RGlnaXRzLmNvdW50OworICAgICAgICAgICAgICAgICAgICAgICAgZXhwb25lbnQgPSAoaW50KSBleHBvbmVudERpZ2l0cy5nZXRMb25nKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmVnRXhwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwb25lbnQgPSAtZXhwb25lbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IHBvczsgLy8gQWR2YW5jZSBwYXN0IHRoZSBleHBvbmVudAorICAgICAgICAgICAgICAgICAgICAgICAgc2F3RXhwb25lbnQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIFdoZXRoZXIgd2UgZmFpbCBvciBzdWNjZWVkLCB3ZSBleGl0IHRoaXMgbG9vcAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoYmFja3VwICE9IC0xKSBwb3NpdGlvbiA9IGJhY2t1cDsKKworICAgICAgICAgICAgLy8gSWYgdGhlcmUgd2FzIG5vIGRlY2ltYWwgcG9pbnQgd2UgaGF2ZSBhbiBpbnRlZ2VyCisgICAgICAgICAgICBpZiAoIXNhd0RlY2ltYWwpIGRpZ2l0cy5kZWNpbWFsQXQgPSBkaWdpdENvdW50OyAvLyBOb3QgZGlnaXRzLmNvdW50IQorCisgICAgICAgICAgICAvLyBBZGp1c3QgZm9yIGV4cG9uZW50LCBpZiBhbnkKKyAgICAgICAgICAgIGRpZ2l0cy5kZWNpbWFsQXQgKz0gZXhwb25lbnQ7CisKKyAgICAgICAgICAgIC8vIElmIG5vbmUgb2YgdGhlIHRleHQgc3RyaW5nIHdhcyByZWNvZ25pemVkLiAgRm9yIGV4YW1wbGUsIHBhcnNlCisgICAgICAgICAgICAvLyAieCIgd2l0aCBwYXR0ZXJuICIjMC4wMCIgKHJldHVybiBpbmRleCBhbmQgZXJyb3IgaW5kZXggYm90aCAwKQorICAgICAgICAgICAgLy8gcGFyc2UgIiQiIHdpdGggcGF0dGVybiAiJCMwLjAwIi4gKHJldHVybiBpbmRleCAwIGFuZCBlcnJvciBpbmRleAorICAgICAgICAgICAgLy8gMSkuCisgICAgICAgICAgICBpZiAoIXNhd0RpZ2l0ICYmIGRpZ2l0Q291bnQgPT0gMCkgeworICAgICAgICAgICAgICAgIHBhcnNlUG9zaXRpb24uc2V0SW5kZXgob2xkU3RhcnQpOworICAgICAgICAgICAgICAgIC8vUFA6cGFyc2VQb3NpdGlvbi5lcnJvckluZGV4ID0gb2xkU3RhcnQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gY2hlY2sgZm9yIHBvc2l0aXZlU3VmZml4CisgICAgICAgIGlmIChnb3RQb3NpdGl2ZSkKKyAgICAgICAgICAgIGdvdFBvc2l0aXZlID0gdGV4dC5yZWdpb25NYXRjaGVzKHBvc2l0aW9uLHBvc2l0aXZlU3VmZml4LDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGl2ZVN1ZmZpeC5sZW5ndGgoKSk7CisgICAgICAgIGlmIChnb3ROZWdhdGl2ZSkKKyAgICAgICAgICAgIGdvdE5lZ2F0aXZlID0gdGV4dC5yZWdpb25NYXRjaGVzKHBvc2l0aW9uLG5lZ2F0aXZlU3VmZml4LDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWdhdGl2ZVN1ZmZpeC5sZW5ndGgoKSk7CisKKyAgICAgICAgLy8gaWYgYm90aCBtYXRjaCwgdGFrZSBsb25nZXN0CisgICAgICAgIGlmIChnb3RQb3NpdGl2ZSAmJiBnb3ROZWdhdGl2ZSkgeworICAgICAgICAgICAgaWYgKHBvc2l0aXZlU3VmZml4Lmxlbmd0aCgpID4gbmVnYXRpdmVTdWZmaXgubGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgZ290TmVnYXRpdmUgPSBmYWxzZTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHBvc2l0aXZlU3VmZml4Lmxlbmd0aCgpIDwgbmVnYXRpdmVTdWZmaXgubGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgZ290UG9zaXRpdmUgPSBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGZhaWwgaWYgbmVpdGhlciBvciBib3RoCisgICAgICAgIGlmIChnb3RQb3NpdGl2ZSA9PSBnb3ROZWdhdGl2ZSkgeworICAgICAgICAgICAgLy9QUDpwYXJzZVBvc2l0aW9uLmVycm9ySW5kZXggPSBwb3NpdGlvbjsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHBhcnNlUG9zaXRpb24uc2V0SW5kZXgocG9zaXRpb24gKworICAgICAgICAgICAgKGdvdFBvc2l0aXZlID8gcG9zaXRpdmVTdWZmaXgubGVuZ3RoKCkgOiBuZWdhdGl2ZVN1ZmZpeC5sZW5ndGgoKSkpOyAvLyBtYXJrIHN1Y2Nlc3MhCisKKyAgICAgICAgc3RhdHVzW1NUQVRVU19QT1NJVElWRV0gPSBnb3RQb3NpdGl2ZTsKKyAgICAgICAgaWYgKHBhcnNlUG9zaXRpb24uZ2V0SW5kZXgoKSA9PSBvbGRTdGFydCkgeworICAgICAgICAgICAgLy9QUDpwYXJzZVBvc2l0aW9uLmVycm9ySW5kZXggPSBwb3NpdGlvbjsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBkZWNpbWFsIGZvcm1hdCBzeW1ib2xzLCB3aGljaCBpcyBnZW5lcmFsbHkgbm90IGNoYW5nZWQKKyAgICAgKiBieSB0aGUgcHJvZ3JhbW1lciBvciB1c2VyLgorICAgICAqIEByZXR1cm4gZGVzaXJlZCBEZWNpbWFsRm9ybWF0U3ltYm9scworICAgICAqIEBzZWUgRGVjaW1hbEZvcm1hdFN5bWJvbHMKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgRGVjaW1hbEZvcm1hdFN5bWJvbHMgZ2V0RGVjaW1hbEZvcm1hdFN5bWJvbHMoKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAvLyBkb24ndCBhbGxvdyBtdWx0aXBsZSByZWZlcmVuY2VzCisgICAgICAgICAgICByZXR1cm4gKERlY2ltYWxGb3JtYXRTeW1ib2xzKSBzeW1ib2xzLmNsb25lKCk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBmb28pIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOyAvLyBzaG91bGQgbmV2ZXIgaGFwcGVuCisgICAgICAgIH0KKyAgICB9CisKKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIGRlY2ltYWwgZm9ybWF0IHN5bWJvbHMsIHdoaWNoIGlzIGdlbmVyYWxseSBub3QgY2hhbmdlZAorICAgICAqIGJ5IHRoZSBwcm9ncmFtbWVyIG9yIHVzZXIuCisgICAgICogQHBhcmFtIG5ld1N5bWJvbHMgZGVzaXJlZCBEZWNpbWFsRm9ybWF0U3ltYm9scworICAgICAqIEBzZWUgRGVjaW1hbEZvcm1hdFN5bWJvbHMKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXREZWNpbWFsRm9ybWF0U3ltYm9scyhEZWNpbWFsRm9ybWF0U3ltYm9scyBuZXdTeW1ib2xzKSB7CisgICAgICAgIHN5bWJvbHMgPSAoRGVjaW1hbEZvcm1hdFN5bWJvbHMpIG5ld1N5bWJvbHMuY2xvbmUoKTsKKyAgICAgICAgc2V0Q3VycmVuY3lGb3JTeW1ib2xzKCk7CisgICAgICAgIGV4cGFuZEFmZml4ZXMoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBVcGRhdGUgdGhlIGN1cnJlbmN5IG9iamVjdCB0byBtYXRjaCB0aGUgc3ltYm9scy4gIFRoaXMgbWV0aG9kCisgICAgICogaXMgdXNlZCBvbmx5IHdoZW4gdGhlIGNhbGxlciBoYXMgcGFzc2VkIGluIGEgc3ltYm9scyBvYmplY3QKKyAgICAgKiB0aGF0IG1heSBub3QgYmUgdGhlIGRlZmF1bHQgb2JqZWN0IGZvciBpdHMgbG9jYWxlLgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBzZXRDdXJyZW5jeUZvclN5bWJvbHMoKSB7CisgICAgICAgIC8qQnVnIDQyMTIwNzIKKyAgICAgICAgICBVcGRhdGUgdGhlIGFmZml4IHN0cmluZ3MgYWNjcm9kaW5nIHRvIHN5bWJvbHMgaW4gb3JkZXIgdG8ga2VlcAorICAgICAgICAgIHRoZSBhZmZpeCBzdHJpbmdzIHVwIHRvIGRhdGUuCisgICAgICAgICAgW1JpY2hhcmQvR0NMXQorICAgICAgICAqLworICAgICAgICAKKyAgICAgICAgLy8gV2l0aCB0aGUgaW50cm9kdWN0aW9uIG9mIHRoZSBDdXJyZW5jeSBvYmplY3QsIHRoZSBjdXJyZW5jeQorICAgICAgICAvLyBzeW1ib2xzIGluIHRoZSBERlMgb2JqZWN0IGFyZSBpZ25vcmVkLiAgRm9yIGJhY2t3YXJkCisgICAgICAgIC8vIGNvbXBhdGliaWxpdHksIHdlIGNoZWNrIGFueSBleHBsaWNpdGx5IHNldCBERlMgb2JqZWN0LiAgSWYgaXQKKyAgICAgICAgLy8gaXMgYSBkZWZhdWx0IHN5bWJvbHMgb2JqZWN0IGZvciBpdHMgbG9jYWxlLCB3ZSBjaGFuZ2UgdGhlCisgICAgICAgIC8vIGN1cnJlbmN5IG9iamVjdCB0byBvbmUgZm9yIHRoYXQgbG9jYWxlLiAgSWYgaXQgaXMgY3VzdG9tLAorICAgICAgICAvLyB3ZSBzZXQgdGhlIGN1cnJlbmN5IHRvIG51bGwuCisgICAgICAgIERlY2ltYWxGb3JtYXRTeW1ib2xzIGRlZiA9CisgICAgICAgICAgICBuZXcgRGVjaW1hbEZvcm1hdFN5bWJvbHMoc3ltYm9scy5nZXRMb2NhbGUoKSk7CisgICAgICAgIAorICAgICAgICBpZiAoc3ltYm9scy5nZXRDdXJyZW5jeVN5bWJvbCgpLmVxdWFscygKKyAgICAgICAgICAgICAgICBkZWYuZ2V0Q3VycmVuY3lTeW1ib2woKSkgJiYKKyAgICAgICAgICAgIHN5bWJvbHMuZ2V0SW50ZXJuYXRpb25hbEN1cnJlbmN5U3ltYm9sKCkuZXF1YWxzKAorICAgICAgICAgICAgICAgIGRlZi5nZXRJbnRlcm5hdGlvbmFsQ3VycmVuY3lTeW1ib2woKSkpIHsKKyAgICAgICAgICAgIGN1cnJlbmN5ID0gQ3VycmVuY3kuZ2V0SW5zdGFuY2Uoc3ltYm9scy5nZXRMb2NhbGUoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjdXJyZW5jeSA9IG51bGw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXQgdGhlIHBvc2l0aXZlIHByZWZpeC4KKyAgICAgKiA8UD5FeGFtcGxlczogKzEyMywgJDEyMywgc0ZyMTIzCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIFN0cmluZyBnZXRQb3NpdGl2ZVByZWZpeCAoKSB7CisgICAgICAgIHJldHVybiBwb3NpdGl2ZVByZWZpeDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIHBvc2l0aXZlIHByZWZpeC4KKyAgICAgKiA8UD5FeGFtcGxlczogKzEyMywgJDEyMywgc0ZyMTIzCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0UG9zaXRpdmVQcmVmaXggKFN0cmluZyBuZXdWYWx1ZSkgeworICAgICAgICBwb3NpdGl2ZVByZWZpeCA9IG5ld1ZhbHVlOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldCB0aGUgbmVnYXRpdmUgcHJlZml4LgorICAgICAqIDxQPkV4YW1wbGVzOiAtMTIzLCAoJDEyMykgKHdpdGggbmVnYXRpdmUgc3VmZml4KSwgc0ZyLTEyMworICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgZ2V0TmVnYXRpdmVQcmVmaXggKCkgeworICAgICAgICByZXR1cm4gbmVnYXRpdmVQcmVmaXg7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0IHRoZSBuZWdhdGl2ZSBwcmVmaXguCisgICAgICogPFA+RXhhbXBsZXM6IC0xMjMsICgkMTIzKSAod2l0aCBuZWdhdGl2ZSBzdWZmaXgpLCBzRnItMTIzCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0TmVnYXRpdmVQcmVmaXggKFN0cmluZyBuZXdWYWx1ZSkgeworICAgICAgICBuZWdhdGl2ZVByZWZpeCA9IG5ld1ZhbHVlOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldCB0aGUgcG9zaXRpdmUgc3VmZml4LgorICAgICAqIDxQPkV4YW1wbGU6IDEyMyUKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIGdldFBvc2l0aXZlU3VmZml4ICgpIHsKKyAgICAgICAgcmV0dXJuIHBvc2l0aXZlU3VmZml4OworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCB0aGUgcG9zaXRpdmUgc3VmZml4LgorICAgICAqIDxQPkV4YW1wbGU6IDEyMyUKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRQb3NpdGl2ZVN1ZmZpeCAoU3RyaW5nIG5ld1ZhbHVlKSB7CisgICAgICAgIHBvc2l0aXZlU3VmZml4ID0gbmV3VmFsdWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0IHRoZSBuZWdhdGl2ZSBzdWZmaXguCisgICAgICogPFA+RXhhbXBsZXM6IC0xMjMlLCAoJDEyMykgKHdpdGggcG9zaXRpdmUgc3VmZml4ZXMpCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIFN0cmluZyBnZXROZWdhdGl2ZVN1ZmZpeCAoKSB7CisgICAgICAgIHJldHVybiBuZWdhdGl2ZVN1ZmZpeDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIHBvc2l0aXZlIHN1ZmZpeC4KKyAgICAgKiA8UD5FeGFtcGxlczogMTIzJQorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldE5lZ2F0aXZlU3VmZml4IChTdHJpbmcgbmV3VmFsdWUpIHsKKyAgICAgICAgbmVnYXRpdmVTdWZmaXggPSBuZXdWYWx1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXQgdGhlIG11bHRpcGxpZXIgZm9yIHVzZSBpbiBwZXJjZW50LCBwZXJtaWxsLCBldGMuCisgICAgICogRm9yIGEgcGVyY2VudGFnZSwgc2V0IHRoZSBzdWZmaXhlcyB0byBoYXZlICIlIiBhbmQgdGhlIG11bHRpcGxpZXIgdG8gYmUgMTAwLgorICAgICAqIChGb3IgQXJhYmljLCB1c2UgYXJhYmljIHBlcmNlbnQgc3ltYm9sKS4KKyAgICAgKiBGb3IgYSBwZXJtaWxsLCBzZXQgdGhlIHN1ZmZpeGVzIHRvIGhhdmUgIlx1MjAzMSIgYW5kIHRoZSBtdWx0aXBsaWVyIHRvIGJlIDEwMDAuCisgICAgICogPFA+RXhhbXBsZXM6IHdpdGggMTAwLCAxLjIzIC0+ICIxMjMiLCBhbmQgIjEyMyIgLT4gMS4yMworICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0TXVsdGlwbGllciAoKSB7CisgICAgICAgIHJldHVybiBtdWx0aXBsaWVyOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCB0aGUgbXVsdGlwbGllciBmb3IgdXNlIGluIHBlcmNlbnQsIHBlcm1pbGwsIGV0Yy4KKyAgICAgKiBGb3IgYSBwZXJjZW50YWdlLCBzZXQgdGhlIHN1ZmZpeGVzIHRvIGhhdmUgIiUiIGFuZCB0aGUgbXVsdGlwbGllciB0byBiZSAxMDAuCisgICAgICogKEZvciBBcmFiaWMsIHVzZSBhcmFiaWMgcGVyY2VudCBzeW1ib2wpLgorICAgICAqIEZvciBhIHBlcm1pbGwsIHNldCB0aGUgc3VmZml4ZXMgdG8gaGF2ZSAiXHUyMDMxIiBhbmQgdGhlIG11bHRpcGxpZXIgdG8gYmUgMTAwMC4KKyAgICAgKiA8UD5FeGFtcGxlczogd2l0aCAxMDAsIDEuMjMgLT4gIjEyMyIsIGFuZCAiMTIzIiAtPiAxLjIzCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0TXVsdGlwbGllciAoaW50IG5ld1ZhbHVlKSB7CisgICAgICAgIGlmIChuZXdWYWx1ZSA8PSAwKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJCYWQgbXVsdGlwbGllcjogIiArIG5ld1ZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICBtdWx0aXBsaWVyID0gbmV3VmFsdWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICAgICAqIEdldCB0aGUgcm91bmRpbmcgaW5jcmVtZW50LgorICAgICAqIEByZXR1cm4gQSBwb3NpdGl2ZSByb3VuZGluZyBpbmNyZW1lbnQsIG9yIDxjb2RlPm51bGw8L2NvZGU+IGlmIHJvdW5kaW5nCisgICAgICogaXMgbm90IGluIGVmZmVjdC4KKyAgICAgKiBAc2VlICNzZXRSb3VuZGluZ0luY3JlbWVudAorICAgICAqIEBzZWUgI2dldFJvdW5kaW5nTW9kZQorICAgICAqIEBzZWUgI3NldFJvdW5kaW5nTW9kZQorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBqYXZhLm1hdGguQmlnRGVjaW1hbCBnZXRSb3VuZGluZ0luY3JlbWVudCgpIHsKKyAgICAgICAgcmV0dXJuIHJvdW5kaW5nSW5jcmVtZW50OworICAgIH0KKworICAgIC8qKgorICAgICAqIDxzdHJvbmc+PGZvbnQgZmFjZT1oZWx2ZXRpY2EgY29sb3I9cmVkPk5FVzwvZm9udD48L3N0cm9uZz4KKyAgICAgKiBTZXQgdGhlIHJvdW5kaW5nIGluY3JlbWVudC4gIFRoaXMgbWV0aG9kIGFsc28gY29udHJvbHMgd2hldGhlcgorICAgICAqIHJvdW5kaW5nIGlzIGVuYWJsZWQuCisgICAgICogQHBhcmFtIG5ld1ZhbHVlIEEgcG9zaXRpdmUgcm91bmRpbmcgaW5jcmVtZW50LCBvciA8Y29kZT5udWxsPC9jb2RlPiBvcgorICAgICAqIDxjb2RlPkJpZ0RlY2ltYWwoMC4wKTwvY29kZT4gdG8gZGlzYWJsZSByb3VuZGluZy4KKyAgICAgKiBAZXhjZXB0aW9uIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiA8Y29kZT5uZXdWYWx1ZTwvY29kZT4gaXMgPCAwLjAKKyAgICAgKiBAc2VlICNnZXRSb3VuZGluZ0luY3JlbWVudAorICAgICAqIEBzZWUgI2dldFJvdW5kaW5nTW9kZQorICAgICAqIEBzZWUgI3NldFJvdW5kaW5nTW9kZQorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFJvdW5kaW5nSW5jcmVtZW50KGphdmEubWF0aC5CaWdEZWNpbWFsIG5ld1ZhbHVlKSB7CisgICAgICAgIGludCBpID0gbmV3VmFsdWUgPT0gbnVsbAorICAgICAgICAgICAgICAgID8gMCA6IG5ld1ZhbHVlLmNvbXBhcmVUbyhqYXZhLm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKDApKTsKKyAgICAgICAgaWYgKGkgPCAwKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbGxlZ2FsIHJvdW5kaW5nIGluY3JlbWVudCIpOworICAgICAgICB9CisgICAgICAgIGlmIChpID09IDApIHsKKyAgICAgICAgICAgIHJvdW5kaW5nSW5jcmVtZW50ID0gbnVsbDsKKyAgICAgICAgICAgIHJvdW5kaW5nRG91YmxlID0gMC4wOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcm91bmRpbmdJbmNyZW1lbnQgPSBuZXdWYWx1ZTsKKyAgICAgICAgICAgIHJvdW5kaW5nRG91YmxlID0gbmV3VmFsdWUuZG91YmxlVmFsdWUoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+CisgICAgICogU2V0IHRoZSByb3VuZGluZyBpbmNyZW1lbnQuICBUaGlzIG1ldGhvZCBhbHNvIGNvbnRyb2xzIHdoZXRoZXIKKyAgICAgKiByb3VuZGluZyBpcyBlbmFibGVkLgorICAgICAqIEBwYXJhbSBuZXdWYWx1ZSBBIHBvc2l0aXZlIHJvdW5kaW5nIGluY3JlbWVudCwgb3IgMC4wIHRvIGRpc2FibGUKKyAgICAgKiByb3VuZGluZy4KKyAgICAgKiBAZXhjZXB0aW9uIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiA8Y29kZT5uZXdWYWx1ZTwvY29kZT4gaXMgPCAwLjAKKyAgICAgKiBAc2VlICNnZXRSb3VuZGluZ0luY3JlbWVudAorICAgICAqIEBzZWUgI2dldFJvdW5kaW5nTW9kZQorICAgICAqIEBzZWUgI3NldFJvdW5kaW5nTW9kZQorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFJvdW5kaW5nSW5jcmVtZW50KGRvdWJsZSBuZXdWYWx1ZSkgeworICAgICAgICBpZiAobmV3VmFsdWUgPCAwLjApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIklsbGVnYWwgcm91bmRpbmcgaW5jcmVtZW50Iik7CisgICAgICAgIH0KKyAgICAgICAgcm91bmRpbmdEb3VibGUgPSBuZXdWYWx1ZTsKKyAgICAgICAgcm91bmRpbmdJbmNyZW1lbnQgPSAobmV3VmFsdWUgPiAwLjApCisgICAgICAgICAgICA/IG5ldyBqYXZhLm1hdGguQmlnRGVjaW1hbChTdHJpbmcudmFsdWVPZihuZXdWYWx1ZSkpIDogbnVsbDsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICAgICAqIEdldCB0aGUgcm91bmRpbmcgbW9kZS4KKyAgICAgKiBAcmV0dXJuIEEgcm91bmRpbmcgbW9kZSwgYmV0d2VlbiA8Y29kZT5CaWdEZWNpbWFsLlJPVU5EX1VQPC9jb2RlPgorICAgICAqIGFuZCA8Y29kZT5CaWdEZWNpbWFsLlJPVU5EX1VOTkVDRVNTQVJZPC9jb2RlPi4KKyAgICAgKiBAc2VlICNzZXRSb3VuZGluZ0luY3JlbWVudAorICAgICAqIEBzZWUgI2dldFJvdW5kaW5nSW5jcmVtZW50CisgICAgICogQHNlZSAjc2V0Um91bmRpbmdNb2RlCisgICAgICogQHNlZSBqYXZhLm1hdGguQmlnRGVjaW1hbAorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0Um91bmRpbmdNb2RlKCkgeworICAgICAgICByZXR1cm4gcm91bmRpbmdNb2RlOworICAgIH0KKworICAgIC8qKgorICAgICAqIDxzdHJvbmc+PGZvbnQgZmFjZT1oZWx2ZXRpY2EgY29sb3I9cmVkPk5FVzwvZm9udD48L3N0cm9uZz4KKyAgICAgKiBTZXQgdGhlIHJvdW5kaW5nIG1vZGUuICBUaGlzIGhhcyBubyBlZmZlY3QgdW5sZXNzIHRoZSByb3VuZGluZworICAgICAqIGluY3JlbWVudCBpcyBncmVhdGVyIHRoYW4gemVyby4KKyAgICAgKiBAcGFyYW0gcm91bmRpbmdNb2RlIEEgcm91bmRpbmcgbW9kZSwgYmV0d2VlbgorICAgICAqIDxjb2RlPkJpZ0RlY2ltYWwuUk9VTkRfVVA8L2NvZGU+IGFuZAorICAgICAqIDxjb2RlPkJpZ0RlY2ltYWwuUk9VTkRfVU5ORUNFU1NBUlk8L2NvZGU+LgorICAgICAqIEBleGNlcHRpb24gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIDxjb2RlPnJvdW5kaW5nTW9kZTwvY29kZT4KKyAgICAgKiBpcyB1bnJlY29nbml6ZWQuCisgICAgICogQHNlZSAjc2V0Um91bmRpbmdJbmNyZW1lbnQKKyAgICAgKiBAc2VlICNnZXRSb3VuZGluZ0luY3JlbWVudAorICAgICAqIEBzZWUgI2dldFJvdW5kaW5nTW9kZQorICAgICAqIEBzZWUgamF2YS5tYXRoLkJpZ0RlY2ltYWwKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRSb3VuZGluZ01vZGUoaW50IHJvdW5kaW5nTW9kZSkgeworICAgICAgICBpZiAocm91bmRpbmdNb2RlIDwgamF2YS5tYXRoLkJpZ0RlY2ltYWwuUk9VTkRfVVAKKyAgICAgICAgICAgIHx8IHJvdW5kaW5nTW9kZSA+IGphdmEubWF0aC5CaWdEZWNpbWFsLlJPVU5EX1VOTkVDRVNTQVJZKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIHJvdW5kaW5nIG1vZGU6ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyByb3VuZGluZ01vZGUpOworICAgICAgICB9CisgICAgICAgIHRoaXMucm91bmRpbmdNb2RlID0gcm91bmRpbmdNb2RlOworICAgIH0KKworICAgIC8qKgorICAgICAqIDxzdHJvbmc+PGZvbnQgZmFjZT1oZWx2ZXRpY2EgY29sb3I9cmVkPk5FVzwvZm9udD48L3N0cm9uZz4KKyAgICAgKiBHZXQgdGhlIHdpZHRoIHRvIHdoaWNoIHRoZSBvdXRwdXQgb2YgPGNvZGU+Zm9ybWF0KCk8L2NvZGU+IGlzIHBhZGRlZC4KKyAgICAgKiBAcmV0dXJuIHRoZSBmb3JtYXQgd2lkdGgsIG9yIHplcm8gaWYgbm8gcGFkZGluZyBpcyBpbiBlZmZlY3QKKyAgICAgKiBAc2VlICNzZXRGb3JtYXRXaWR0aAorICAgICAqIEBzZWUgI2dldFBhZENoYXJhY3RlcgorICAgICAqIEBzZWUgI3NldFBhZENoYXJhY3RlcgorICAgICAqIEBzZWUgI2dldFBhZFBvc2l0aW9uCisgICAgICogQHNlZSAjc2V0UGFkUG9zaXRpb24KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldEZvcm1hdFdpZHRoKCkgeworICAgICAgICByZXR1cm4gZm9ybWF0V2lkdGg7CisgICAgfQorCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICAgICAqIFNldCB0aGUgd2lkdGggdG8gd2hpY2ggdGhlIG91dHB1dCBvZiA8Y29kZT5mb3JtYXQoKTwvY29kZT4gaXMgcGFkZGVkLgorICAgICAqIFRoaXMgbWV0aG9kIGFsc28gY29udHJvbHMgd2hldGhlciBwYWRkaW5nIGlzIGVuYWJsZWQuCisgICAgICogQHBhcmFtIHdpZHRoIHRoZSB3aWR0aCB0byB3aGljaCB0byBwYWQgdGhlIHJlc3VsdCBvZgorICAgICAqIDxjb2RlPmZvcm1hdCgpPC9jb2RlPiwgb3IgemVybyB0byBkaXNhYmxlIHBhZGRpbmcKKyAgICAgKiBAZXhjZXB0aW9uIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiA8Y29kZT53aWR0aDwvY29kZT4gaXMgPCAwCisgICAgICogQHNlZSAjZ2V0Rm9ybWF0V2lkdGgKKyAgICAgKiBAc2VlICNnZXRQYWRDaGFyYWN0ZXIKKyAgICAgKiBAc2VlICNzZXRQYWRDaGFyYWN0ZXIKKyAgICAgKiBAc2VlICNnZXRQYWRQb3NpdGlvbgorICAgICAqIEBzZWUgI3NldFBhZFBvc2l0aW9uCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0Rm9ybWF0V2lkdGgoaW50IHdpZHRoKSB7CisgICAgICAgIGlmICh3aWR0aCA8IDApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIklsbGVnYWwgZm9ybWF0IHdpZHRoIik7CisgICAgICAgIH0KKyAgICAgICAgZm9ybWF0V2lkdGggPSB3aWR0aDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+CisgICAgICogR2V0IHRoZSBjaGFyYWN0ZXIgdXNlZCB0byBwYWQgdG8gdGhlIGZvcm1hdCB3aWR0aC4gIFRoZSBkZWZhdWx0IGlzICcgJy4KKyAgICAgKiBAcmV0dXJuIHRoZSBwYWQgY2hhcmFjdGVyCisgICAgICogQHNlZSAjc2V0Rm9ybWF0V2lkdGgKKyAgICAgKiBAc2VlICNnZXRGb3JtYXRXaWR0aAorICAgICAqIEBzZWUgI3NldFBhZENoYXJhY3RlcgorICAgICAqIEBzZWUgI2dldFBhZFBvc2l0aW9uCisgICAgICogQHNlZSAjc2V0UGFkUG9zaXRpb24KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgY2hhciBnZXRQYWRDaGFyYWN0ZXIoKSB7CisgICAgICAgIHJldHVybiBwYWQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICAgICAqIFNldCB0aGUgY2hhcmFjdGVyIHVzZWQgdG8gcGFkIHRvIHRoZSBmb3JtYXQgd2lkdGguICBUaGlzIGhhcyBubyBlZmZlY3QKKyAgICAgKiB1bmxlc3MgcGFkZGluZyBpcyBlbmFibGVkLgorICAgICAqIEBwYXJhbSBwYWRDaGFyIHRoZSBwYWQgY2hhcmFjdGVyCisgICAgICogQHNlZSAjc2V0Rm9ybWF0V2lkdGgKKyAgICAgKiBAc2VlICNnZXRGb3JtYXRXaWR0aAorICAgICAqIEBzZWUgI2dldFBhZENoYXJhY3RlcgorICAgICAqIEBzZWUgI2dldFBhZFBvc2l0aW9uCisgICAgICogQHNlZSAjc2V0UGFkUG9zaXRpb24KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRQYWRDaGFyYWN0ZXIoY2hhciBwYWRDaGFyKSB7CisgICAgICAgIHBhZCA9IHBhZENoYXI7CisgICAgfQorCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICAgICAqIEdldCB0aGUgcG9zaXRpb24gYXQgd2hpY2ggcGFkZGluZyB3aWxsIHRha2UgcGxhY2UuICBUaGlzIGlzIHRoZSBsb2NhdGlvbgorICAgICAqIGF0IHdoaWNoIHBhZGRpbmcgd2lsbCBiZSBpbnNlcnRlZCBpZiB0aGUgcmVzdWx0IG9mIDxjb2RlPmZvcm1hdCgpPC9jb2RlPgorICAgICAqIGlzIHNob3J0ZXIgdGhhbiB0aGUgZm9ybWF0IHdpZHRoLgorICAgICAqIEByZXR1cm4gdGhlIHBhZCBwb3NpdGlvbiwgb25lIG9mIDxjb2RlPlBBRF9CRUZPUkVfUFJFRklYPC9jb2RlPiwKKyAgICAgKiA8Y29kZT5QQURfQUZURVJfUFJFRklYPC9jb2RlPiwgPGNvZGU+UEFEX0JFRk9SRV9TVUZGSVg8L2NvZGU+LCBvcgorICAgICAqIDxjb2RlPlBBRF9BRlRFUl9TVUZGSVg8L2NvZGU+LgorICAgICAqIEBzZWUgI3NldEZvcm1hdFdpZHRoCisgICAgICogQHNlZSAjZ2V0Rm9ybWF0V2lkdGgKKyAgICAgKiBAc2VlICNzZXRQYWRDaGFyYWN0ZXIKKyAgICAgKiBAc2VlICNnZXRQYWRDaGFyYWN0ZXIKKyAgICAgKiBAc2VlICNzZXRQYWRQb3NpdGlvbgorICAgICAqIEBzZWUgI1BBRF9CRUZPUkVfUFJFRklYCisgICAgICogQHNlZSAjUEFEX0FGVEVSX1BSRUZJWAorICAgICAqIEBzZWUgI1BBRF9CRUZPUkVfU1VGRklYCisgICAgICogQHNlZSAjUEFEX0FGVEVSX1NVRkZJWAorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0UGFkUG9zaXRpb24oKSB7CisgICAgICAgIHJldHVybiBwYWRQb3NpdGlvbjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+CisgICAgICogU2V0IHRoZSBwb3NpdGlvbiBhdCB3aGljaCBwYWRkaW5nIHdpbGwgdGFrZSBwbGFjZS4gIFRoaXMgaXMgdGhlIGxvY2F0aW9uCisgICAgICogYXQgd2hpY2ggcGFkZGluZyB3aWxsIGJlIGluc2VydGVkIGlmIHRoZSByZXN1bHQgb2YgPGNvZGU+Zm9ybWF0KCk8L2NvZGU+CisgICAgICogaXMgc2hvcnRlciB0aGFuIHRoZSBmb3JtYXQgd2lkdGguICBUaGlzIGhhcyBubyBlZmZlY3QgdW5sZXNzIHBhZGRpbmcgaXMKKyAgICAgKiBlbmFibGVkLgorICAgICAqIEBwYXJhbSBwYWRQb3MgdGhlIHBhZCBwb3NpdGlvbiwgb25lIG9mIDxjb2RlPlBBRF9CRUZPUkVfUFJFRklYPC9jb2RlPiwKKyAgICAgKiA8Y29kZT5QQURfQUZURVJfUFJFRklYPC9jb2RlPiwgPGNvZGU+UEFEX0JFRk9SRV9TVUZGSVg8L2NvZGU+LCBvcgorICAgICAqIDxjb2RlPlBBRF9BRlRFUl9TVUZGSVg8L2NvZGU+LgorICAgICAqIEBleGNlcHRpb24gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBwYWQgcG9zaXRpb24gaW4KKyAgICAgKiB1bnJlY29nbml6ZWQKKyAgICAgKiBAc2VlICNzZXRGb3JtYXRXaWR0aAorICAgICAqIEBzZWUgI2dldEZvcm1hdFdpZHRoCisgICAgICogQHNlZSAjc2V0UGFkQ2hhcmFjdGVyCisgICAgICogQHNlZSAjZ2V0UGFkQ2hhcmFjdGVyCisgICAgICogQHNlZSAjZ2V0UGFkUG9zaXRpb24KKyAgICAgKiBAc2VlICNQQURfQkVGT1JFX1BSRUZJWAorICAgICAqIEBzZWUgI1BBRF9BRlRFUl9QUkVGSVgKKyAgICAgKiBAc2VlICNQQURfQkVGT1JFX1NVRkZJWAorICAgICAqIEBzZWUgI1BBRF9BRlRFUl9TVUZGSVgKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRQYWRQb3NpdGlvbihpbnQgcGFkUG9zKSB7CisgICAgICAgIGlmIChwYWRQb3MgPCBQQURfQkVGT1JFX1BSRUZJWCB8fCBwYWRQb3MgPiBQQURfQUZURVJfU1VGRklYKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbGxlZ2FsIHBhZCBwb3NpdGlvbiIpOworICAgICAgICB9CisgICAgICAgIHBhZFBvc2l0aW9uID0gcGFkUG9zOworICAgIH0KKworICAgIC8qKgorICAgICAqIDxzdHJvbmc+PGZvbnQgZmFjZT1oZWx2ZXRpY2EgY29sb3I9cmVkPk5FVzwvZm9udD48L3N0cm9uZz4KKyAgICAgKiBSZXR1cm4gd2hldGhlciBvciBub3Qgc2NpZW50aWZpYyBub3RhdGlvbiBpcyB1c2VkLgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGlzIG9iamVjdCBmb3JtYXRzIGFuZCBwYXJzZXMgc2NpZW50aWZpYyBub3RhdGlvbgorICAgICAqIEBzZWUgI3NldFNjaWVudGlmaWNOb3RhdGlvbgorICAgICAqIEBzZWUgI2dldE1pbmltdW1FeHBvbmVudERpZ2l0cworICAgICAqIEBzZWUgI3NldE1pbmltdW1FeHBvbmVudERpZ2l0cworICAgICAqIEBzZWUgI2lzRXhwb25lbnRTaWduQWx3YXlzU2hvd24KKyAgICAgKiBAc2VlICNzZXRFeHBvbmVudFNpZ25BbHdheXNTaG93bgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGlzU2NpZW50aWZpY05vdGF0aW9uKCkgeworICAgICAgICByZXR1cm4gdXNlRXhwb25lbnRpYWxOb3RhdGlvbjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+CisgICAgICogU2V0IHdoZXRoZXIgb3Igbm90IHNjaWVudGlmaWMgbm90YXRpb24gaXMgdXNlZC4KKyAgICAgKiBAcGFyYW0gdXNlU2NpZW50aWZpYyB0cnVlIGlmIHRoaXMgb2JqZWN0IGZvcm1hdHMgYW5kIHBhcnNlcyBzY2llbnRpZmljCisgICAgICogbm90YXRpb24KKyAgICAgKiBAc2VlICNpc1NjaWVudGlmaWNOb3RhdGlvbgorICAgICAqIEBzZWUgI2dldE1pbmltdW1FeHBvbmVudERpZ2l0cworICAgICAqIEBzZWUgI3NldE1pbmltdW1FeHBvbmVudERpZ2l0cworICAgICAqIEBzZWUgI2lzRXhwb25lbnRTaWduQWx3YXlzU2hvd24KKyAgICAgKiBAc2VlICNzZXRFeHBvbmVudFNpZ25BbHdheXNTaG93bgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFNjaWVudGlmaWNOb3RhdGlvbihib29sZWFuIHVzZVNjaWVudGlmaWMpIHsKKyAgICAgICAgdXNlRXhwb25lbnRpYWxOb3RhdGlvbiA9IHVzZVNjaWVudGlmaWM7CisgICAgICAgIGlmICh1c2VFeHBvbmVudGlhbE5vdGF0aW9uICYmIG1pbkV4cG9uZW50RGlnaXRzIDwgMSkgeworICAgICAgICAgICAgbWluRXhwb25lbnREaWdpdHMgPSAxOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICAgICAqIFJldHVybiB0aGUgbWluaW11bSBleHBvbmVudCBkaWdpdHMgdGhhdCB3aWxsIGJlIHNob3duLgorICAgICAqIEByZXR1cm4gdGhlIG1pbmltdW0gZXhwb25lbnQgZGlnaXRzIHRoYXQgd2lsbCBiZSBzaG93bgorICAgICAqIEBzZWUgI3NldFNjaWVudGlmaWNOb3RhdGlvbgorICAgICAqIEBzZWUgI2lzU2NpZW50aWZpY05vdGF0aW9uCisgICAgICogQHNlZSAjc2V0TWluaW11bUV4cG9uZW50RGlnaXRzCisgICAgICogQHNlZSAjaXNFeHBvbmVudFNpZ25BbHdheXNTaG93bgorICAgICAqIEBzZWUgI3NldEV4cG9uZW50U2lnbkFsd2F5c1Nob3duCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGJ5dGUgZ2V0TWluaW11bUV4cG9uZW50RGlnaXRzKCkgeworICAgICAgICByZXR1cm4gbWluRXhwb25lbnREaWdpdHM7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIDxzdHJvbmc+PGZvbnQgZmFjZT1oZWx2ZXRpY2EgY29sb3I9cmVkPk5FVzwvZm9udD48L3N0cm9uZz4KKyAgICAgKiBTZXQgdGhlIG1pbmltdW0gZXhwb25lbnQgZGlnaXRzIHRoYXQgd2lsbCBiZSBzaG93bi4gIFRoaXMgaGFzIG5vCisgICAgICogZWZmZWN0IHVubGVzcyBzY2llbnRpZmljIG5vdGF0aW9uIGlzIGluIHVzZS4KKyAgICAgKiBAcGFyYW0gbWluRXhwRGlnIGEgdmFsdWUgPj0gMSBpbmRpY2F0aW5nIHRoZSBmZXdlc3QgZXhwb25lbnQgZGlnaXRzCisgICAgICogdGhhdCB3aWxsIGJlIHNob3duCisgICAgICogQGV4Y2VwdGlvbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgPGNvZGU+bWluRXhwRGlnPC9jb2RlPiA8IDEKKyAgICAgKiBAc2VlICNzZXRTY2llbnRpZmljTm90YXRpb24KKyAgICAgKiBAc2VlICNpc1NjaWVudGlmaWNOb3RhdGlvbgorICAgICAqIEBzZWUgI2dldE1pbmltdW1FeHBvbmVudERpZ2l0cworICAgICAqIEBzZWUgI2lzRXhwb25lbnRTaWduQWx3YXlzU2hvd24KKyAgICAgKiBAc2VlICNzZXRFeHBvbmVudFNpZ25BbHdheXNTaG93bgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldE1pbmltdW1FeHBvbmVudERpZ2l0cyhieXRlIG1pbkV4cERpZykgeworICAgICAgICBpZiAobWluRXhwRGlnIDwgMSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiRXhwb25lbnQgZGlnaXRzIG11c3QgYmUgPj0gMSIpOworICAgICAgICB9CisgICAgICAgIG1pbkV4cG9uZW50RGlnaXRzID0gbWluRXhwRGlnOworICAgIH0KKworICAgIC8qKgorICAgICAqIDxzdHJvbmc+PGZvbnQgZmFjZT1oZWx2ZXRpY2EgY29sb3I9cmVkPk5FVzwvZm9udD48L3N0cm9uZz4KKyAgICAgKiBSZXR1cm4gd2hldGhlciB0aGUgZXhwb25lbnQgc2lnbiBpcyBhbHdheXMgc2hvd24uCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSBleHBvbmVudCBpcyBhbHdheXMgcHJlZml4ZWQgd2l0aCBlaXRoZXIgdGhlCisgICAgICogbG9jYWxpemVkIG1pbnVzIHNpZ24gb3IgdGhlIGxvY2FsaXplZCBwbHVzIHNpZ24sIGZhbHNlIGlmIG9ubHkgbmVnYXRpdmUKKyAgICAgKiBleHBvbmVudHMgYXJlIHByZWZpeGVkIHdpdGggdGhlIGxvY2FsaXplZCBtaW51cyBzaWduLgorICAgICAqIEBzZWUgI3NldFNjaWVudGlmaWNOb3RhdGlvbgorICAgICAqIEBzZWUgI2lzU2NpZW50aWZpY05vdGF0aW9uCisgICAgICogQHNlZSAjc2V0TWluaW11bUV4cG9uZW50RGlnaXRzCisgICAgICogQHNlZSAjZ2V0TWluaW11bUV4cG9uZW50RGlnaXRzCisgICAgICogQHNlZSAjc2V0RXhwb25lbnRTaWduQWx3YXlzU2hvd24KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc0V4cG9uZW50U2lnbkFsd2F5c1Nob3duKCkgeworICAgICAgICByZXR1cm4gZXhwb25lbnRTaWduQWx3YXlzU2hvd247CisgICAgfQorCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICAgICAqIFNldCB3aGV0aGVyIHRoZSBleHBvbmVudCBzaWduIGlzIGFsd2F5cyBzaG93bi4gIFRoaXMgaGFzIG5vIGVmZmVjdAorICAgICAqIHVubGVzcyBzY2llbnRpZmljIG5vdGF0aW9uIGlzIGluIHVzZS4KKyAgICAgKiBAcGFyYW0gZXhwU2lnbkFsd2F5cyB0cnVlIGlmIHRoZSBleHBvbmVudCBpcyBhbHdheXMgcHJlZml4ZWQgd2l0aCBlaXRoZXIKKyAgICAgKiB0aGUgbG9jYWxpemVkIG1pbnVzIHNpZ24gb3IgdGhlIGxvY2FsaXplZCBwbHVzIHNpZ24sIGZhbHNlIGlmIG9ubHkKKyAgICAgKiBuZWdhdGl2ZSBleHBvbmVudHMgYXJlIHByZWZpeGVkIHdpdGggdGhlIGxvY2FsaXplZCBtaW51cyBzaWduLgorICAgICAqIEBzZWUgI3NldFNjaWVudGlmaWNOb3RhdGlvbgorICAgICAqIEBzZWUgI2lzU2NpZW50aWZpY05vdGF0aW9uCisgICAgICogQHNlZSAjc2V0TWluaW11bUV4cG9uZW50RGlnaXRzCisgICAgICogQHNlZSAjZ2V0TWluaW11bUV4cG9uZW50RGlnaXRzCisgICAgICogQHNlZSAjaXNFeHBvbmVudFNpZ25BbHdheXNTaG93bgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldEV4cG9uZW50U2lnbkFsd2F5c1Nob3duKGJvb2xlYW4gZXhwU2lnbkFsd2F5cykgeworICAgICAgICBleHBvbmVudFNpZ25BbHdheXNTaG93biA9IGV4cFNpZ25BbHdheXM7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBncm91cGluZyBzaXplLiBHcm91cGluZyBzaXplIGlzIHRoZSBudW1iZXIgb2YgZGlnaXRzIGJldHdlZW4KKyAgICAgKiBncm91cGluZyBzZXBhcmF0b3JzIGluIHRoZSBpbnRlZ2VyIHBvcnRpb24gb2YgYSBudW1iZXIuICBGb3IgZXhhbXBsZSwKKyAgICAgKiBpbiB0aGUgbnVtYmVyICIxMjMsNDU2Ljc4IiwgdGhlIGdyb3VwaW5nIHNpemUgaXMgMy4KKyAgICAgKiBAc2VlICNzZXRHcm91cGluZ1NpemUKKyAgICAgKiBAc2VlIE51bWJlckZvcm1hdCNpc0dyb3VwaW5nVXNlZAorICAgICAqIEBzZWUgRGVjaW1hbEZvcm1hdFN5bWJvbHMjZ2V0R3JvdXBpbmdTZXBhcmF0b3IKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldEdyb3VwaW5nU2l6ZSAoKSB7CisgICAgICAgIHJldHVybiBncm91cGluZ1NpemU7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0IHRoZSBncm91cGluZyBzaXplLiBHcm91cGluZyBzaXplIGlzIHRoZSBudW1iZXIgb2YgZGlnaXRzIGJldHdlZW4KKyAgICAgKiBncm91cGluZyBzZXBhcmF0b3JzIGluIHRoZSBpbnRlZ2VyIHBvcnRpb24gb2YgYSBudW1iZXIuICBGb3IgZXhhbXBsZSwKKyAgICAgKiBpbiB0aGUgbnVtYmVyICIxMjMsNDU2Ljc4IiwgdGhlIGdyb3VwaW5nIHNpemUgaXMgMy4KKyAgICAgKiBAc2VlICNnZXRHcm91cGluZ1NpemUKKyAgICAgKiBAc2VlIE51bWJlckZvcm1hdCNzZXRHcm91cGluZ1VzZWQKKyAgICAgKiBAc2VlIERlY2ltYWxGb3JtYXRTeW1ib2xzI3NldEdyb3VwaW5nU2VwYXJhdG9yCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0R3JvdXBpbmdTaXplIChpbnQgbmV3VmFsdWUpIHsKKyAgICAgICAgZ3JvdXBpbmdTaXplID0gKGJ5dGUpbmV3VmFsdWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBzZWNvbmRhcnkgZ3JvdXBpbmcgc2l6ZS4gSW4gc29tZSBsb2NhbGVzIG9uZQorICAgICAqIGdyb3VwaW5nIGludGVydmFsIGlzIHVzZWQgZm9yIHRoZSBsZWFzdCBzaWduaWZpY2FudCBpbnRlZ2VyCisgICAgICogZGlnaXRzICh0aGUgcHJpbWFyeSBncm91cGluZyBzaXplKSwgYW5kIGFub3RoZXIgaXMgdXNlZCBmb3IgYWxsCisgICAgICogb3RoZXJzICh0aGUgc2Vjb25kYXJ5IGdyb3VwaW5nIHNpemUpLiAgQSBmb3JtYXR0ZXIgc3VwcG9ydGluZyBhCisgICAgICogc2Vjb25kYXJ5IGdyb3VwaW5nIHNpemUgd2lsbCByZXR1cm4gYSBwb3NpdGl2ZSBpbnRlZ2VyIHVuZXF1YWwKKyAgICAgKiB0byB0aGUgcHJpbWFyeSBncm91cGluZyBzaXplIHJldHVybmVkIGJ5CisgICAgICogPGNvZGU+Z2V0R3JvdXBpbmdTaXplKCk8L2NvZGU+LiAgRm9yIGV4YW1wbGUsIGlmIHRoZSBwcmltYXJ5CisgICAgICogZ3JvdXBpbmcgc2l6ZSBpcyA0LCBhbmQgdGhlIHNlY29uZGFyeSBncm91cGluZyBzaXplIGlzIDIsIHRoZW4KKyAgICAgKiB0aGUgbnVtYmVyIDEyMzQ1Njc4OSBmb3JtYXRzIGFzICIxLDIzLDQ1LDY3ODkiLCBhbmQgdGhlIHBhdHRlcm4KKyAgICAgKiBhcHBlYXJzIGFzICIjLCMjLCMjIzAiLgorICAgICAqIFtORVddCisgICAgICogQHJldHVybiB0aGUgc2Vjb25kYXJ5IGdyb3VwaW5nIHNpemUsIG9yIGEgdmFsdWUgbGVzcyB0aGFuCisgICAgICogb25lIGlmIHRoZXJlIGlzIG5vbmUKKyAgICAgKiBAc2VlICNzZXRTZWNvbmRhcnlHcm91cGluZ1NpemUKKyAgICAgKiBAc2VlIE51bWJlckZvcm1hdCNpc0dyb3VwaW5nVXNlZAorICAgICAqIEBzZWUgRGVjaW1hbEZvcm1hdFN5bWJvbHMjZ2V0R3JvdXBpbmdTZXBhcmF0b3IKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldFNlY29uZGFyeUdyb3VwaW5nU2l6ZSAoKSB7CisgICAgICAgIHJldHVybiBncm91cGluZ1NpemUyOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCB0aGUgc2Vjb25kYXJ5IGdyb3VwaW5nIHNpemUuIElmIHNldCB0byBhIHZhbHVlIGxlc3MgdGhhbiAxLAorICAgICAqIHRoZW4gc2Vjb25kYXJ5IGdyb3VwaW5nIGlzIHR1cm5lZCBvZmYsIGFuZCB0aGUgcHJpbWFyeSBncm91cGluZworICAgICAqIHNpemUgaXMgdXNlZCBmb3IgYWxsIGludGVydmFscywgbm90IGp1c3QgdGhlIGxlYXN0IHNpZ25pZmljYW50LgorICAgICAqIFtORVddCisgICAgICogQHNlZSAjZ2V0U2Vjb25kYXJ5R3JvdXBpbmdTaXplCisgICAgICogQHNlZSBOdW1iZXJGb3JtYXQjc2V0R3JvdXBpbmdVc2VkCisgICAgICogQHNlZSBEZWNpbWFsRm9ybWF0U3ltYm9scyNzZXRHcm91cGluZ1NlcGFyYXRvcgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFNlY29uZGFyeUdyb3VwaW5nU2l6ZSAoaW50IG5ld1ZhbHVlKSB7CisgICAgICAgIGdyb3VwaW5nU2l6ZTIgPSAoYnl0ZSluZXdWYWx1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBbGxvd3MgeW91IHRvIGdldCB0aGUgYmVoYXZpb3Igb2YgdGhlIGRlY2ltYWwgc2VwYXJhdG9yIHdpdGggaW50ZWdlcnMuCisgICAgICogKFRoZSBkZWNpbWFsIHNlcGFyYXRvciB3aWxsIGFsd2F5cyBhcHBlYXIgd2l0aCBkZWNpbWFscy4pCisgICAgICogPFA+RXhhbXBsZTogRGVjaW1hbCBPTjogMTIzNDUgLT4gMTIzNDUuOyBPRkY6IDEyMzQ1IC0+IDEyMzQ1CisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNEZWNpbWFsU2VwYXJhdG9yQWx3YXlzU2hvd24oKSB7CisgICAgICAgIHJldHVybiBkZWNpbWFsU2VwYXJhdG9yQWx3YXlzU2hvd247CisgICAgfQorCisgICAgLyoqCisgICAgICogQWxsb3dzIHlvdSB0byBzZXQgdGhlIGJlaGF2aW9yIG9mIHRoZSBkZWNpbWFsIHNlcGFyYXRvciB3aXRoIGludGVnZXJzLgorICAgICAqIChUaGUgZGVjaW1hbCBzZXBhcmF0b3Igd2lsbCBhbHdheXMgYXBwZWFyIHdpdGggZGVjaW1hbHMuKQorICAgICAqIDxQPkV4YW1wbGU6IERlY2ltYWwgT046IDEyMzQ1IC0+IDEyMzQ1LjsgT0ZGOiAxMjM0NSAtPiAxMjM0NQorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldERlY2ltYWxTZXBhcmF0b3JBbHdheXNTaG93bihib29sZWFuIG5ld1ZhbHVlKSB7CisgICAgICAgIGRlY2ltYWxTZXBhcmF0b3JBbHdheXNTaG93biA9IG5ld1ZhbHVlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFN0YW5kYXJkIG92ZXJyaWRlOyBubyBjaGFuZ2UgaW4gc2VtYW50aWNzLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBPYmplY3QgY2xvbmUoKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBEZWNpbWFsRm9ybWF0IG90aGVyID0gKERlY2ltYWxGb3JtYXQpIHN1cGVyLmNsb25lKCk7CisgICAgICAgICAgICBvdGhlci5zeW1ib2xzID0gKERlY2ltYWxGb3JtYXRTeW1ib2xzKSBzeW1ib2xzLmNsb25lKCk7CisgICAgICAgICAgICByZXR1cm4gb3RoZXI7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcigpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogT3ZlcnJpZGVzIGVxdWFscworICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb2JqKQorICAgIHsKKyAgICAgICAgaWYgKG9iaiA9PSBudWxsKSByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghc3VwZXIuZXF1YWxzKG9iaikpIHJldHVybiBmYWxzZTsgLy8gc3VwZXIgZG9lcyBjbGFzcyBjaGVjaworICAgICAgICBEZWNpbWFsRm9ybWF0IG90aGVyID0gKERlY2ltYWxGb3JtYXQpIG9iajsKKyAgICAgICAgLyogQWRkIHRoZSBjb21wYXJpc29uIG9mIHRoZSBmb3VyIG5ldyBhZGRlZCBmaWVsZHMgLHRoZXkgYXJlCisgICAgICAgICAqIHBvc1ByZWZpeFBhdHRlcm4sIHBvc1N1ZmZpeFBhdHRlcm4sIG5lZ1ByZWZpeFBhdHRlcm4sIG5lZ1N1ZmZpeFBhdHRlcm4uCisgICAgICAgICAqIFtSaWNoYXJkL0dDTF0KKyAgICAgICAgICovCisgICAgICAgIHJldHVybiAoKChwb3NQcmVmaXhQYXR0ZXJuID09IG90aGVyLnBvc1ByZWZpeFBhdHRlcm4gJiYKKyAgICAgICAgICAgICAgICAgcG9zaXRpdmVQcmVmaXguZXF1YWxzKG90aGVyLnBvc2l0aXZlUHJlZml4KSkKKyAgICAgICAgICAgICAgICB8fCAocG9zUHJlZml4UGF0dGVybiAhPSBudWxsICYmCisgICAgICAgICAgICAgICAgICAgIHBvc1ByZWZpeFBhdHRlcm4uZXF1YWxzKG90aGVyLnBvc1ByZWZpeFBhdHRlcm4pKSkKKyAgICAgICAgICAgICYmICgocG9zU3VmZml4UGF0dGVybiA9PSBvdGhlci5wb3NTdWZmaXhQYXR0ZXJuICYmCisgICAgICAgICAgICAgICAgIHBvc2l0aXZlU3VmZml4LmVxdWFscyhvdGhlci5wb3NpdGl2ZVN1ZmZpeCkpCisgICAgICAgICAgICAgICAgfHwgKHBvc1N1ZmZpeFBhdHRlcm4gIT0gbnVsbCAmJgorICAgICAgICAgICAgICAgICAgICBwb3NTdWZmaXhQYXR0ZXJuLmVxdWFscyhvdGhlci5wb3NTdWZmaXhQYXR0ZXJuKSkpCisgICAgICAgICAgICAmJiAoKG5lZ1ByZWZpeFBhdHRlcm4gPT0gb3RoZXIubmVnUHJlZml4UGF0dGVybiAmJgorICAgICAgICAgICAgICAgICBuZWdhdGl2ZVByZWZpeC5lcXVhbHMob3RoZXIubmVnYXRpdmVQcmVmaXgpKQorICAgICAgICAgICAgICAgIHx8IChuZWdQcmVmaXhQYXR0ZXJuICE9IG51bGwgJiYKKyAgICAgICAgICAgICAgICAgICAgbmVnUHJlZml4UGF0dGVybi5lcXVhbHMob3RoZXIubmVnUHJlZml4UGF0dGVybikpKQorICAgICAgICAgICAgJiYgKChuZWdTdWZmaXhQYXR0ZXJuID09IG90aGVyLm5lZ1N1ZmZpeFBhdHRlcm4gJiYKKyAgICAgICAgICAgICAgICAgbmVnYXRpdmVTdWZmaXguZXF1YWxzKG90aGVyLm5lZ2F0aXZlU3VmZml4KSkKKyAgICAgICAgICAgICAgICB8fCAobmVnU3VmZml4UGF0dGVybiAhPSBudWxsICYmCisgICAgICAgICAgICAgICAgICAgIG5lZ1N1ZmZpeFBhdHRlcm4uZXF1YWxzKG90aGVyLm5lZ1N1ZmZpeFBhdHRlcm4pKSkKKyAgICAgICAgICAgICYmIG11bHRpcGxpZXIgPT0gb3RoZXIubXVsdGlwbGllcgorICAgICAgICAgICAgJiYgZ3JvdXBpbmdTaXplID09IG90aGVyLmdyb3VwaW5nU2l6ZQorICAgICAgICAgICAgJiYgZ3JvdXBpbmdTaXplMiA9PSBvdGhlci5ncm91cGluZ1NpemUyCisgICAgICAgICAgICAmJiBkZWNpbWFsU2VwYXJhdG9yQWx3YXlzU2hvd24gPT0gb3RoZXIuZGVjaW1hbFNlcGFyYXRvckFsd2F5c1Nob3duCisgICAgICAgICAgICAmJiB1c2VFeHBvbmVudGlhbE5vdGF0aW9uID09IG90aGVyLnVzZUV4cG9uZW50aWFsTm90YXRpb24KKyAgICAgICAgICAgICYmICghdXNlRXhwb25lbnRpYWxOb3RhdGlvbiB8fAorICAgICAgICAgICAgICAgIG1pbkV4cG9uZW50RGlnaXRzID09IG90aGVyLm1pbkV4cG9uZW50RGlnaXRzKQorICAgICAgICAgICAgJiYgc3ltYm9scy5lcXVhbHMob3RoZXIuc3ltYm9scykpOworICAgIH0KKworICAgIC8qKgorICAgICAqIE92ZXJyaWRlcyBoYXNoQ29kZQorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CisgICAgICAgIHJldHVybiBzdXBlci5oYXNoQ29kZSgpICogMzcgKyBwb3NpdGl2ZVByZWZpeC5oYXNoQ29kZSgpOworICAgICAgICAvLyBqdXN0IGVub3VnaCBmaWVsZHMgZm9yIGEgcmVhc29uYWJsZSBkaXN0cmlidXRpb24KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTeW50aGVzaXplcyBhIHBhdHRlcm4gc3RyaW5nIHRoYXQgcmVwcmVzZW50cyB0aGUgY3VycmVudCBzdGF0ZQorICAgICAqIG9mIHRoaXMgRm9ybWF0IG9iamVjdC4KKyAgICAgKiBAc2VlICNhcHBseVBhdHRlcm4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIHRvUGF0dGVybigpIHsKKyAgICAgICAgcmV0dXJuIHRvUGF0dGVybiggZmFsc2UgKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTeW50aGVzaXplcyBhIGxvY2FsaXplZCBwYXR0ZXJuIHN0cmluZyB0aGF0IHJlcHJlc2VudHMgdGhlIGN1cnJlbnQKKyAgICAgKiBzdGF0ZSBvZiB0aGlzIEZvcm1hdCBvYmplY3QuCisgICAgICogQHNlZSAjYXBwbHlQYXR0ZXJuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIFN0cmluZyB0b0xvY2FsaXplZFBhdHRlcm4oKSB7CisgICAgICAgIHJldHVybiB0b1BhdHRlcm4oIHRydWUgKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBFeHBhbmQgdGhlIGFmZml4IHBhdHRlcm4gc3RyaW5ncyBpbnRvIHRoZSBleHBhbmRlZCBhZmZpeCBzdHJpbmdzLiAgSWYgYW55CisgICAgICogYWZmaXggcGF0dGVybiBzdHJpbmcgaXMgbnVsbCwgZG8gbm90IGV4cGFuZCBpdC4gIFRoaXMgbWV0aG9kIHNob3VsZCBiZQorICAgICAqIGNhbGxlZCBhbnkgdGltZSB0aGUgc3ltYm9scyBvciB0aGUgYWZmaXggcGF0dGVybnMgY2hhbmdlIGluIG9yZGVyIHRvIGtlZXAKKyAgICAgKiB0aGUgZXhwYW5kZWQgYWZmaXggc3RyaW5ncyB1cCB0byBkYXRlLgorICAgICAqLworICAgIC8vQnVnIDQyMTIwNzIgW1JpY2hhcmQvR0NMXQorICAgIHByaXZhdGUgdm9pZCBleHBhbmRBZmZpeGVzKCkgeworICAgICAgICAvLyBSZXVzZSBvbmUgU3RyaW5nQnVmZmVyIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UKKyAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZmZlciA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgaWYgKHBvc1ByZWZpeFBhdHRlcm4gIT0gbnVsbCkgeworICAgICAgICAgICAgcG9zaXRpdmVQcmVmaXggPSBleHBhbmRBZmZpeChwb3NQcmVmaXhQYXR0ZXJuLCBidWZmZXIpOworICAgICAgICB9CisgICAgICAgIGlmIChwb3NTdWZmaXhQYXR0ZXJuICE9IG51bGwpIHsKKyAgICAgICAgICAgIHBvc2l0aXZlU3VmZml4ID0gZXhwYW5kQWZmaXgocG9zU3VmZml4UGF0dGVybiwgYnVmZmVyKTsKKyAgICAgICAgfQorICAgICAgICBpZiAobmVnUHJlZml4UGF0dGVybiAhPSBudWxsKSB7CisgICAgICAgICAgICBuZWdhdGl2ZVByZWZpeCA9IGV4cGFuZEFmZml4KG5lZ1ByZWZpeFBhdHRlcm4sIGJ1ZmZlcik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5lZ1N1ZmZpeFBhdHRlcm4gIT0gbnVsbCkgeworICAgICAgICAgICAgbmVnYXRpdmVTdWZmaXggPSBleHBhbmRBZmZpeChuZWdTdWZmaXhQYXR0ZXJuLCBidWZmZXIpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogRXhwYW5kIGFuIGFmZml4IHBhdHRlcm4gaW50byBhbiBhZmZpeCBzdHJpbmcuICBBbGwgY2hhcmFjdGVycyBpbiB0aGUKKyAgICAgKiBwYXR0ZXJuIGFyZSBsaXRlcmFsIHVubGVzcyBwcmVmaXhlZCBieSBRVU9URS4gIFRoZSBmb2xsb3dpbmcgY2hhcmFjdGVycworICAgICAqIGFmdGVyIFFVT1RFIGFyZSByZWNvZ25pemVkOiBQQVRURVJOX1BFUkNFTlQsIFBBVFRFUk5fUEVSX01JTExFLAorICAgICAqIFBBVFRFUk5fTUlOVVMsIGFuZCBDVVJSRU5DWV9TSUdOLiAgSWYgQ1VSUkVOQ1lfU0lHTiBpcyBkb3VibGVkIChRVU9URSArCisgICAgICogQ1VSUkVOQ1lfU0lHTiArIENVUlJFTkNZX1NJR04pLCBpdCBpcyBpbnRlcnByZXRlZCBhcyBhbiBpbnRlcm5hdGlvbmFsCisgICAgICogY3VycmVuY3kgc2lnbi4gIEFueSBvdGhlciBjaGFyYWN0ZXIgYWZ0ZXIgYSBRVU9URSByZXByZXNlbnRzIGl0c2VsZi4KKyAgICAgKiBRVU9URSBtdXN0IGJlIGZvbGxvd2VkIGJ5IGFub3RoZXIgY2hhcmFjdGVyOyBRVU9URSBtYXkgbm90IG9jY3VyIGJ5CisgICAgICogaXRzZWxmIGF0IHRoZSBlbmQgb2YgdGhlIHBhdHRlcm4uCisgICAgICoKKyAgICAgKiBAcGFyYW0gcGF0dGVybiB0aGUgbm9uLW51bGwsIHBvc3NpYmx5IGVtcHR5IHBhdHRlcm4KKyAgICAgKiBAcGFyYW0gYnVmZmVyIGEgc2NyYXRjaCBTdHJpbmdCdWZmZXI7IGl0cyBjb250ZW50cyB3aWxsIGJlIGxvc3QKKyAgICAgKiBAcmV0dXJuIHRoZSBleHBhbmRlZCBlcXVpdmFsZW50IG9mIHBhdHRlcm4KKyAgICAgKi8KKyAgICAvL0J1ZyA0MjEyMDcyIFtSaWNoYXJkL0dDTF0KKyAgICBwcml2YXRlIFN0cmluZyBleHBhbmRBZmZpeChTdHJpbmcgcGF0dGVybiwgU3RyaW5nQnVmZmVyIGJ1ZmZlcikgeworICAgICAgICBidWZmZXIuc2V0TGVuZ3RoKDApOworICAgICAgICBmb3IgKGludCBpPTA7IGk8cGF0dGVybi5sZW5ndGgoKTsgKSB7CisgICAgICAgICAgICBjaGFyIGMgPSBwYXR0ZXJuLmNoYXJBdChpKyspOworICAgICAgICAgICAgaWYgKGMgPT0gUVVPVEUpIHsKKyAgICAgICAgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgICAgICAgIGludCBqID0gcGF0dGVybi5pbmRleE9mKFFVT1RFLCBpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGogPT0gaSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChRVU9URSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpID0gaisxOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaiA+IGkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQocGF0dGVybi5zdWJzdHJpbmcoaSwgaikpOworICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGorMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpPHBhdHRlcm4ubGVuZ3RoKCkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuLmNoYXJBdChpKT09UVVPVEUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKFFVT1RFKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArK2k7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9vcCBhZ2FpbgorICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVudGVybWluYXRlZCBxdW90ZTogIiArIHBhdHRlcm4pOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzd2l0Y2ggKGMpIHsKKyAgICAgICAgICAgIGNhc2UgQ1VSUkVOQ1lfU0lHTjoKKyAgICAgICAgICAgICAgICAvLyBBcyBvZiBJQ1UgMi4yIHdlIHVzZSB0aGUgY3VycmVuY3kgb2JqZWN0LCBhbmQKKyAgICAgICAgICAgICAgICAvLyBpZ25vcmUgdGhlIGN1cnJlbmN5IHN5bWJvbHMgaW4gdGhlIERGUywgdW5sZXNzCisgICAgICAgICAgICAgICAgLy8gd2UgaGF2ZSBhIG51bGwgY3VycmVuY3kgb2JqZWN0LiAgVGhpcyBvY2N1cnMgaWYKKyAgICAgICAgICAgICAgICAvLyByZXN1cnJlY3RpbmcgYSBwcmUtMi4yIG9iamVjdCBvciBpZiB0aGUgdXNlcgorICAgICAgICAgICAgICAgIC8vIHNldHMgYSBjdXN0b20gREZTLgorICAgICAgICAgICAgICAgIGJvb2xlYW4gaW50bCA9IGk8cGF0dGVybi5sZW5ndGgoKSAmJgorICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuLmNoYXJBdChpKSA9PSBDVVJSRU5DWV9TSUdOOworICAgICAgICAgICAgICAgIGlmIChpbnRsKSB7CisgICAgICAgICAgICAgICAgICAgICsraTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgU3RyaW5nIHM7CisgICAgICAgICAgICAgICAgaWYgKGN1cnJlbmN5ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgcyA9IGludGwgPyBjdXJyZW5jeS5nZXRDdXJyZW5jeUNvZGUoKQorICAgICAgICAgICAgICAgICAgICAgICAgOiBjdXJyZW5jeS5nZXRTeW1ib2woc3ltYm9scy5nZXRMb2NhbGUoKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcyA9IGludGwgPyBzeW1ib2xzLmdldEludGVybmF0aW9uYWxDdXJyZW5jeVN5bWJvbCgpCisgICAgICAgICAgICAgICAgICAgICAgICA6IHN5bWJvbHMuZ2V0Q3VycmVuY3lTeW1ib2woKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChzKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGNhc2UgUEFUVEVSTl9QRVJDRU5UOgorICAgICAgICAgICAgICAgIGMgPSBzeW1ib2xzLmdldFBlcmNlbnQoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgUEFUVEVSTl9QRVJfTUlMTEU6CisgICAgICAgICAgICAgICAgYyA9IHN5bWJvbHMuZ2V0UGVyTWlsbCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBQQVRURVJOX01JTlVTOgorICAgICAgICAgICAgICAgIGMgPSBzeW1ib2xzLmdldE1pbnVzU2lnbigpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChjKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYnVmZmVyLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQXBwZW5kIGFuIGFmZml4IHBhdHRlcm4gdG8gdGhlIGdpdmVuIFN0cmluZ0J1ZmZlci4gIExvY2FsaXplIHVucXVvdGVkCisgICAgICogc3BlY2lhbHMuCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIGFwcGVuZEFmZml4UGF0dGVybihTdHJpbmdCdWZmZXIgYnVmZmVyLCBTdHJpbmcgYWZmaXhQYXQsIGJvb2xlYW4gbG9jYWxpemVkKSB7CisgICAgICAgIGlmICghbG9jYWxpemVkKSB7CisgICAgICAgICAgICBidWZmZXIuYXBwZW5kKGFmZml4UGF0KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGludCBpLCBqOworICAgICAgICAgICAgZm9yIChpPTA7IGk8YWZmaXhQYXQubGVuZ3RoKCk7ICsraSkgeworICAgICAgICAgICAgICAgIGNoYXIgY2ggPSBhZmZpeFBhdC5jaGFyQXQoaSk7CisgICAgICAgICAgICAgICAgc3dpdGNoIChjaCkgeworICAgICAgICAgICAgICAgIGNhc2UgUVVPVEU6CisgICAgICAgICAgICAgICAgICAgIGogPSBhZmZpeFBhdC5pbmRleE9mKFFVT1RFLCBpKzEpOworICAgICAgICAgICAgICAgICAgICBpZiAoaiA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIk1hbGZvcm1lZCBhZmZpeCBwYXR0ZXJuOiAiICsgYWZmaXhQYXQpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoYWZmaXhQYXQuc3Vic3RyaW5nKGksIGorMSkpOworICAgICAgICAgICAgICAgICAgICBpID0gajsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgY2FzZSBQQVRURVJOX1BFUl9NSUxMRToKKyAgICAgICAgICAgICAgICAgICAgY2ggPSBzeW1ib2xzLmdldFBlck1pbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBQQVRURVJOX1BFUkNFTlQ6CisgICAgICAgICAgICAgICAgICAgIGNoID0gc3ltYm9scy5nZXRQZXJjZW50KCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgUEFUVEVSTl9NSU5VUzoKKyAgICAgICAgICAgICAgICAgICAgY2ggPSBzeW1ib2xzLmdldE1pbnVzU2lnbigpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChjaCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5DSEFOR0VEPC9mb250Pjwvc3Ryb25nPgorICAgICAqIERvZXMgdGhlIHJlYWwgd29yayBvZiBnZW5lcmF0aW5nIGEgcGF0dGVybi4KKyAgICAgKi8KKyAgICBwcml2YXRlIFN0cmluZyB0b1BhdHRlcm4oYm9vbGVhbiBsb2NhbGl6ZWQpIHsKKyAgICAgICAgU3RyaW5nQnVmZmVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgY2hhciB6ZXJvID0gbG9jYWxpemVkID8gc3ltYm9scy5nZXRaZXJvRGlnaXQoKSA6IFBBVFRFUk5fWkVST19ESUdJVDsKKyAgICAgICAgY2hhciBkaWdpdCA9IGxvY2FsaXplZCA/IHN5bWJvbHMuZ2V0RGlnaXQoKSA6IFBBVFRFUk5fRElHSVQ7CisgICAgICAgIGNoYXIgZ3JvdXAgPSBsb2NhbGl6ZWQgPyBzeW1ib2xzLmdldEdyb3VwaW5nU2VwYXJhdG9yKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFBBVFRFUk5fR1JPVVBJTkdfU0VQQVJBVE9SOworICAgICAgICBpbnQgaTsKKyAgICAgICAgaW50IHJvdW5kaW5nRGVjaW1hbFBvcyA9IDA7IC8vIFBvcyBvZiBkZWNpbWFsIGluIHJvdW5kaW5nRGlnaXRzCisgICAgICAgIFN0cmluZyByb3VuZGluZ0RpZ2l0cyA9IG51bGw7CisgICAgICAgIGludCBwYWRQb3MgPSAoZm9ybWF0V2lkdGggPiAwKSA/IHBhZFBvc2l0aW9uIDogLTE7CisgICAgICAgIFN0cmluZyBwYWRTcGVjID0gKGZvcm1hdFdpZHRoID4gMCkKKyAgICAgICAgICAgID8gbmV3IFN0cmluZ0J1ZmZlcigyKS4KKyAgICAgICAgICAgICAgICBhcHBlbmQobG9jYWxpemVkID8gc3ltYm9scy5nZXRQYWRFc2NhcGUoKSA6IFBBVFRFUk5fUEFEX0VTQ0FQRSkuCisgICAgICAgICAgICAgICAgYXBwZW5kKHBhZCkudG9TdHJpbmcoKQorICAgICAgICAgICAgOiBudWxsOworICAgICAgICBpZiAocm91bmRpbmdJbmNyZW1lbnQgIT0gbnVsbCkgeworICAgICAgICAgICAgaSA9IHJvdW5kaW5nSW5jcmVtZW50LnNjYWxlKCk7CisgICAgICAgICAgICByb3VuZGluZ0RpZ2l0cyA9IHJvdW5kaW5nSW5jcmVtZW50Lm1vdmVQb2ludFJpZ2h0KGkpLnRvU3RyaW5nKCk7CisgICAgICAgICAgICByb3VuZGluZ0RlY2ltYWxQb3MgPSByb3VuZGluZ0RpZ2l0cy5sZW5ndGgoKSAtIGk7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpbnQgcGFydD0wOyBwYXJ0PDI7ICsrcGFydCkgeworICAgICAgICAgICAgLy8gdmFyaWFibGUgbm90IHVzZWQgaW50IHBhcnRTdGFydCA9IHJlc3VsdC5sZW5ndGgoKTsKKyAgICAgICAgICAgIGlmIChwYWRQb3MgPT0gUEFEX0JFRk9SRV9QUkVGSVgpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHBhZFNwZWMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogVXNlIG9yaWdpbmFsIHN5bWJvbHMgcmVhZCBmcm9tIHJlc291cmNlcyBpbiBwYXR0ZXJuCisgICAgICAgICAgICAgKiBlZy4gdXNlICJcdTAwQTQiIGluc3RlYWQgb2YgIiQiIGluIExvY2FsZS5VUyBbUmljaGFyZC9HQ0xdCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGFwcGVuZEFmZml4UGF0dGVybihyZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcnQ9PTAgPyBwb3NQcmVmaXhQYXR0ZXJuIDogbmVnUHJlZml4UGF0dGVybiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxpemVkKTsKKyAgICAgICAgICAgIGlmIChwYWRQb3MgPT0gUEFEX0FGVEVSX1BSRUZJWCkgeworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocGFkU3BlYyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbnQgc3ViMFN0YXJ0ID0gcmVzdWx0Lmxlbmd0aCgpOworICAgICAgICAgICAgaW50IGcgPSBpc0dyb3VwaW5nVXNlZCgpID8gTWF0aC5tYXgoMCwgZ3JvdXBpbmdTaXplKSA6IDA7CisgICAgICAgICAgICBpZiAoZyA+IDAgJiYgZ3JvdXBpbmdTaXplMiA+IDAgJiYgZ3JvdXBpbmdTaXplMiAhPSBncm91cGluZ1NpemUpIHsKKyAgICAgICAgICAgICAgICBnICs9IGdyb3VwaW5nU2l6ZTI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbnQgbWF4SW50RGlnID0gdXNlRXhwb25lbnRpYWxOb3RhdGlvbiA/IGdldE1heGltdW1JbnRlZ2VyRGlnaXRzKCkgOgorICAgICAgICAgICAgICAgIChNYXRoLm1heChNYXRoLm1heChnLCBnZXRNaW5pbXVtSW50ZWdlckRpZ2l0cygpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcm91bmRpbmdEZWNpbWFsUG9zKSArIDEpOworICAgICAgICAgICAgZm9yIChpID0gbWF4SW50RGlnOyBpID4gMDsgLS1pKSB7CisgICAgICAgICAgICAgICAgaWYgKCF1c2VFeHBvbmVudGlhbE5vdGF0aW9uICYmIGk8bWF4SW50RGlnICYmCisgICAgICAgICAgICAgICAgICAgIGlzR3JvdXBpbmdQb3NpdGlvbihpKSkgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGdyb3VwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHJvdW5kaW5nRGlnaXRzICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IHBvcyA9IHJvdW5kaW5nRGVjaW1hbFBvcyAtIGk7CisgICAgICAgICAgICAgICAgICAgIGlmIChwb3MgPj0gMCAmJiBwb3MgPCByb3VuZGluZ0RpZ2l0cy5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgoY2hhcikgKHJvdW5kaW5nRGlnaXRzLmNoYXJBdChwb3MpIC0gJzAnICsgemVybykpOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChpPD1nZXRNaW5pbXVtSW50ZWdlckRpZ2l0cygpID8gemVybyA6IGRpZ2l0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChnZXRNYXhpbXVtRnJhY3Rpb25EaWdpdHMoKSA+IDAgfHwgZGVjaW1hbFNlcGFyYXRvckFsd2F5c1Nob3duKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChsb2NhbGl6ZWQgPyBzeW1ib2xzLmdldERlY2ltYWxTZXBhcmF0b3IoKSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQVRURVJOX0RFQ0lNQUxfU0VQQVJBVE9SKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGludCBwb3MgPSByb3VuZGluZ0RlY2ltYWxQb3M7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZ2V0TWF4aW11bUZyYWN0aW9uRGlnaXRzKCk7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChyb3VuZGluZ0RpZ2l0cyAhPSBudWxsICYmCisgICAgICAgICAgICAgICAgICAgIHBvcyA8IHJvdW5kaW5nRGlnaXRzLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocG9zIDwgMCA/IHplcm8gOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyKSAocm91bmRpbmdEaWdpdHMuY2hhckF0KHBvcykgLSAnMCcgKyB6ZXJvKSk7CisgICAgICAgICAgICAgICAgICAgICsrcG9zOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChpPGdldE1pbmltdW1GcmFjdGlvbkRpZ2l0cygpID8gemVybyA6IGRpZ2l0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh1c2VFeHBvbmVudGlhbE5vdGF0aW9uKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChsb2NhbGl6ZWQgPyBzeW1ib2xzLmdldEV4cG9uZW50U2VwYXJhdG9yKCkgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFUVEVSTl9FWFBPTkVOVCk7CisgICAgICAgICAgICAgICAgaWYgKGV4cG9uZW50U2lnbkFsd2F5c1Nob3duKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQobG9jYWxpemVkID8gc3ltYm9scy5nZXRQbHVzU2lnbigpIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQVRURVJOX1BMVVNfU0lHTik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZvciAoaT0wOyBpPG1pbkV4cG9uZW50RGlnaXRzOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh6ZXJvKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocGFkU3BlYyAhPSBudWxsICYmICF1c2VFeHBvbmVudGlhbE5vdGF0aW9uKSB7CisgICAgICAgICAgICAgICAgaW50IGFkZCA9IGZvcm1hdFdpZHRoIC0gcmVzdWx0Lmxlbmd0aCgpICsgc3ViMFN0YXJ0CisgICAgICAgICAgICAgICAgICAgIC0gKChwYXJ0ID09IDApCisgICAgICAgICAgICAgICAgICAgICAgID8gcG9zaXRpdmVQcmVmaXgubGVuZ3RoKCkgKyBwb3NpdGl2ZVN1ZmZpeC5sZW5ndGgoKQorICAgICAgICAgICAgICAgICAgICAgICA6IG5lZ2F0aXZlUHJlZml4Lmxlbmd0aCgpICsgbmVnYXRpdmVTdWZmaXgubGVuZ3RoKCkpOworICAgICAgICAgICAgICAgIHdoaWxlIChhZGQgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5pbnNlcnQoc3ViMFN0YXJ0LCBkaWdpdCk7CisgICAgICAgICAgICAgICAgICAgICsrbWF4SW50RGlnOworICAgICAgICAgICAgICAgICAgICAtLWFkZDsKKyAgICAgICAgICAgICAgICAgICAgLy8gT25seSBhZGQgYSBncm91cGluZyBzZXBhcmF0b3IgaWYgd2UgaGF2ZSBhdCBsZWFzdAorICAgICAgICAgICAgICAgICAgICAvLyAyIGFkZGl0aW9uYWwgY2hhcmFjdGVycyB0byBiZSBhZGRlZCwgc28gd2UgZG9uJ3QKKyAgICAgICAgICAgICAgICAgICAgLy8gZW5kIHVwIHdpdGggIiwjIyMiLgorICAgICAgICAgICAgICAgICAgICBpZiAoYWRkPjEgJiYgaXNHcm91cGluZ1Bvc2l0aW9uKG1heEludERpZykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5pbnNlcnQoc3ViMFN0YXJ0LCBncm91cCk7CisgICAgICAgICAgICAgICAgICAgICAgICAtLWFkZDsgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChwYWRQb3MgPT0gUEFEX0JFRk9SRV9TVUZGSVgpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHBhZFNwZWMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHBhcnQgPT0gMCkgeworICAgICAgICAgICAgICAgIC8qIFVzZSBvcmlnaW5hbCBzeW1ib2xzIHJlYWQgZnJvbSByZXNvdXJjZXMgaW4gcGF0dGVybgorICAgICAgICAgICAgICAgICAqIGVnLiB1c2UgIlx1MDBBNCIgaW5zdGVhZCBvZiAiJCIgaW4gTG9jYWxlLlVTIFtSaWNoYXJkL0dDTF0KKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBhcHBlbmRBZmZpeFBhdHRlcm4ocmVzdWx0LCBwb3NTdWZmaXhQYXR0ZXJuLCBsb2NhbGl6ZWQpOworICAgICAgICAgICAgICAgIGlmIChwYWRQb3MgPT0gUEFEX0FGVEVSX1NVRkZJWCkgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHBhZFNwZWMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobmVnYXRpdmVTdWZmaXguZXF1YWxzKHBvc2l0aXZlU3VmZml4KSAmJgorICAgICAgICAgICAgICAgICAgICBuZWdhdGl2ZVByZWZpeC5lcXVhbHMoc3ltYm9scy5nZXRNaW51c1NpZ24oKSArIHBvc2l0aXZlUHJlZml4KSkgeworICAgICAgICAgICAgICAgICAgICBwYXJ0ID0gMjsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGxvY2FsaXplZCA/IHN5bWJvbHMuZ2V0UGF0dGVyblNlcGFyYXRvcigpIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQVRURVJOX1NFUEFSQVRPUik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBhcHBlbmRBZmZpeFBhdHRlcm4ocmVzdWx0LCBuZWdTdWZmaXhQYXR0ZXJuLCBsb2NhbGl6ZWQpOworICAgICAgICAgICAgICAgIGlmIChwYWRQb3MgPT0gUEFEX0FGVEVSX1NVRkZJWCkgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHBhZFNwZWMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQXBwbHkgdGhlIGdpdmVuIHBhdHRlcm4gdG8gdGhpcyBGb3JtYXQgb2JqZWN0LiAgQSBwYXR0ZXJuIGlzIGEKKyAgICAgKiBzaG9ydC1oYW5kIHNwZWNpZmljYXRpb24gZm9yIHRoZSB2YXJpb3VzIGZvcm1hdHRpbmcgcHJvcGVydGllcy4KKyAgICAgKiBUaGVzZSBwcm9wZXJ0aWVzIGNhbiBhbHNvIGJlIGNoYW5nZWQgaW5kaXZpZHVhbGx5IHRocm91Z2ggdGhlCisgICAgICogdmFyaW91cyBzZXR0ZXIgbWV0aG9kcy4KKyAgICAgKiA8cD4KKyAgICAgKiBUaGVyZSBpcyBubyBsaW1pdCB0byBpbnRlZ2VyIGRpZ2l0cyBhcmUgc2V0CisgICAgICogYnkgdGhpcyByb3V0aW5lLCBzaW5jZSB0aGF0IGlzIHRoZSB0eXBpY2FsIGVuZC11c2VyIGRlc2lyZTsKKyAgICAgKiB1c2Ugc2V0TWF4aW11bUludGVnZXIgaWYgeW91IHdhbnQgdG8gc2V0IGEgcmVhbCB2YWx1ZS4KKyAgICAgKiBGb3IgbmVnYXRpdmUgbnVtYmVycywgdXNlIGEgc2Vjb25kIHBhdHRlcm4sIHNlcGFyYXRlZCBieSBhIHNlbWljb2xvbgorICAgICAqIDxQPkV4YW1wbGUgIiMsIzAwLjAjIiAtPiAxLDIzNC41NgorICAgICAqIDxQPlRoaXMgbWVhbnMgYSBtaW5pbXVtIG9mIDIgaW50ZWdlciBkaWdpdHMsIDEgZnJhY3Rpb24gZGlnaXQsIGFuZAorICAgICAqIGEgbWF4aW11bSBvZiAyIGZyYWN0aW9uIGRpZ2l0cy4KKyAgICAgKiA8cD5FeGFtcGxlOiAiIywjMDAuMCM7KCMsIzAwLjAjKSIgZm9yIG5lZ2F0aXZlcyBpbiBwYXJlbnRoZXNlcy4KKyAgICAgKiA8cD5JbiBuZWdhdGl2ZSBwYXR0ZXJucywgdGhlIG1pbmltdW0gYW5kIG1heGltdW0gY291bnRzIGFyZSBpZ25vcmVkOworICAgICAqIHRoZXNlIGFyZSBwcmVzdW1lZCB0byBiZSBzZXQgaW4gdGhlIHBvc2l0aXZlIHBhdHRlcm4uCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHZvaWQgYXBwbHlQYXR0ZXJuKCBTdHJpbmcgcGF0dGVybiApIHsKKyAgICAgICAgYXBwbHlQYXR0ZXJuKCBwYXR0ZXJuLCBmYWxzZSApOworICAgIH0KKworICAgIC8qKgorICAgICAqIEFwcGx5IHRoZSBnaXZlbiBwYXR0ZXJuIHRvIHRoaXMgRm9ybWF0IG9iamVjdC4gIFRoZSBwYXR0ZXJuCisgICAgICogaXMgYXNzdW1lZCB0byBiZSBpbiBhIGxvY2FsaXplZCBub3RhdGlvbi4gQSBwYXR0ZXJuIGlzIGEKKyAgICAgKiBzaG9ydC1oYW5kIHNwZWNpZmljYXRpb24gZm9yIHRoZSB2YXJpb3VzIGZvcm1hdHRpbmcgcHJvcGVydGllcy4KKyAgICAgKiBUaGVzZSBwcm9wZXJ0aWVzIGNhbiBhbHNvIGJlIGNoYW5nZWQgaW5kaXZpZHVhbGx5IHRocm91Z2ggdGhlCisgICAgICogdmFyaW91cyBzZXR0ZXIgbWV0aG9kcy4KKyAgICAgKiA8cD4KKyAgICAgKiBUaGVyZSBpcyBubyBsaW1pdCB0byBpbnRlZ2VyIGRpZ2l0cyBhcmUgc2V0CisgICAgICogYnkgdGhpcyByb3V0aW5lLCBzaW5jZSB0aGF0IGlzIHRoZSB0eXBpY2FsIGVuZC11c2VyIGRlc2lyZTsKKyAgICAgKiB1c2Ugc2V0TWF4aW11bUludGVnZXIgaWYgeW91IHdhbnQgdG8gc2V0IGEgcmVhbCB2YWx1ZS4KKyAgICAgKiBGb3IgbmVnYXRpdmUgbnVtYmVycywgdXNlIGEgc2Vjb25kIHBhdHRlcm4sIHNlcGFyYXRlZCBieSBhIHNlbWljb2xvbgorICAgICAqIDxQPkV4YW1wbGUgIiMsIzAwLjAjIiAtPiAxLDIzNC41NgorICAgICAqIDxQPlRoaXMgbWVhbnMgYSBtaW5pbXVtIG9mIDIgaW50ZWdlciBkaWdpdHMsIDEgZnJhY3Rpb24gZGlnaXQsIGFuZAorICAgICAqIGEgbWF4aW11bSBvZiAyIGZyYWN0aW9uIGRpZ2l0cy4KKyAgICAgKiA8cD5FeGFtcGxlOiAiIywjMDAuMCM7KCMsIzAwLjAjKSIgZm9yIG5lZ2F0aXZlcyBpbiBwYXJhbnRoZXNlcy4KKyAgICAgKiA8cD5JbiBuZWdhdGl2ZSBwYXR0ZXJucywgdGhlIG1pbmltdW0gYW5kIG1heGltdW0gY291bnRzIGFyZSBpZ25vcmVkOworICAgICAqIHRoZXNlIGFyZSBwcmVzdW1lZCB0byBiZSBzZXQgaW4gdGhlIHBvc2l0aXZlIHBhdHRlcm4uCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHZvaWQgYXBwbHlMb2NhbGl6ZWRQYXR0ZXJuKCBTdHJpbmcgcGF0dGVybiApIHsKKyAgICAgICAgYXBwbHlQYXR0ZXJuKCBwYXR0ZXJuLCB0cnVlICk7CisgICAgfQorCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+Q0hBTkdFRDwvZm9udD48L3N0cm9uZz4KKyAgICAgKiBEb2VzIHRoZSByZWFsIHdvcmsgb2YgYXBwbHlpbmcgYSBwYXR0ZXJuLgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBhcHBseVBhdHRlcm4oU3RyaW5nIHBhdHRlcm4sIGJvb2xlYW4gbG9jYWxpemVkKSB7CisgICAgICAgIGNoYXIgemVyb0RpZ2l0ICAgICAgICAgPSBQQVRURVJOX1pFUk9fRElHSVQ7CisgICAgICAgIGNoYXIgZ3JvdXBpbmdTZXBhcmF0b3IgPSBQQVRURVJOX0dST1VQSU5HX1NFUEFSQVRPUjsKKyAgICAgICAgY2hhciBkZWNpbWFsU2VwYXJhdG9yICA9IFBBVFRFUk5fREVDSU1BTF9TRVBBUkFUT1I7CisgICAgICAgIGNoYXIgcGVyY2VudCAgICAgICAgICAgPSBQQVRURVJOX1BFUkNFTlQ7CisgICAgICAgIGNoYXIgcGVyTWlsbCAgICAgICAgICAgPSBQQVRURVJOX1BFUl9NSUxMRTsKKyAgICAgICAgY2hhciBkaWdpdCAgICAgICAgICAgICA9IFBBVFRFUk5fRElHSVQ7CisgICAgICAgIGNoYXIgc2VwYXJhdG9yICAgICAgICAgPSBQQVRURVJOX1NFUEFSQVRPUjsKKyAgICAgICAgU3RyaW5nIGV4cG9uZW50ICAgICAgICA9IFBBVFRFUk5fRVhQT05FTlQ7CisgICAgICAgIGNoYXIgcGx1cyAgICAgICAgICAgICAgPSBQQVRURVJOX1BMVVNfU0lHTjsKKyAgICAgICAgY2hhciBwYWRFc2NhcGUgICAgICAgICA9IFBBVFRFUk5fUEFEX0VTQ0FQRTsKKyAgICAgICAgY2hhciBtaW51cyAgICAgICAgICAgICA9IFBBVFRFUk5fTUlOVVM7IC8vQnVnIDQyMTIwNzIgW1JpY2hhcmQvR0NMXQorICAgICAgICBpZiAobG9jYWxpemVkKSB7CisgICAgICAgICAgICB6ZXJvRGlnaXQgICAgICAgICA9IHN5bWJvbHMuZ2V0WmVyb0RpZ2l0KCk7CisgICAgICAgICAgICBncm91cGluZ1NlcGFyYXRvciA9IHN5bWJvbHMuZ2V0R3JvdXBpbmdTZXBhcmF0b3IoKTsKKyAgICAgICAgICAgIGRlY2ltYWxTZXBhcmF0b3IgID0gc3ltYm9scy5nZXREZWNpbWFsU2VwYXJhdG9yKCk7CisgICAgICAgICAgICBwZXJjZW50ICAgICAgICAgICA9IHN5bWJvbHMuZ2V0UGVyY2VudCgpOworICAgICAgICAgICAgcGVyTWlsbCAgICAgICAgICAgPSBzeW1ib2xzLmdldFBlck1pbGwoKTsKKyAgICAgICAgICAgIGRpZ2l0ICAgICAgICAgICAgID0gc3ltYm9scy5nZXREaWdpdCgpOworICAgICAgICAgICAgc2VwYXJhdG9yICAgICAgICAgPSBzeW1ib2xzLmdldFBhdHRlcm5TZXBhcmF0b3IoKTsKKyAgICAgICAgICAgIGV4cG9uZW50ICAgICAgICAgID0gc3ltYm9scy5nZXRFeHBvbmVudFNlcGFyYXRvcigpOworICAgICAgICAgICAgcGx1cyAgICAgICAgICAgICAgPSBzeW1ib2xzLmdldFBsdXNTaWduKCk7CisgICAgICAgICAgICBwYWRFc2NhcGUgICAgICAgICA9IHN5bWJvbHMuZ2V0UGFkRXNjYXBlKCk7CisgICAgICAgICAgICBtaW51cyAgICAgICAgICAgICA9IHN5bWJvbHMuZ2V0TWludXNTaWduKCk7IC8vQnVnIDQyMTIwNzIgW1JpY2hhcmQvR0NMXQorICAgICAgICB9CisgICAgICAgIGNoYXIgbmluZURpZ2l0ID0gKGNoYXIpICh6ZXJvRGlnaXQgKyA5KTsKKworICAgICAgICBib29sZWFuIGdvdE5lZ2F0aXZlID0gZmFsc2U7CisKKyAgICAgICAgaW50IHBvcyA9IDA7CisgICAgICAgIC8vIFBhcnQgMCBpcyB0aGUgcG9zaXRpdmUgcGF0dGVybi4gIFBhcnQgMSwgaWYgcHJlc2VudCwgaXMgdGhlIG5lZ2F0aXZlCisgICAgICAgIC8vIHBhdHRlcm4uCisgICAgICAgIGZvciAoaW50IHBhcnQ9MDsgcGFydDwyICYmIHBvczxwYXR0ZXJuLmxlbmd0aCgpOyArK3BhcnQpIHsKKyAgICAgICAgICAgIC8vIFRoZSBzdWJwYXJ0IHJhbmdlcyBmcm9tIDAgdG8gNDogMD1wYXR0ZXJuIHByb3BlciwgMT1wcmVmaXgsCisgICAgICAgICAgICAvLyAyPXN1ZmZpeCwgMz1wcmVmaXggaW4gcXVvdGUsIDQ9c3VmZml4IGluIHF1b3RlLiAgU3VicGFydCAwIGlzCisgICAgICAgICAgICAvLyBiZXR3ZWVuIHRoZSBwcmVmaXggYW5kIHN1ZmZpeCwgYW5kIGNvbnNpc3RzIG9mIHBhdHRlcm4KKyAgICAgICAgICAgIC8vIGNoYXJhY3RlcnMuICBJbiB0aGUgcHJlZml4IGFuZCBzdWZmaXgsIHBlcmNlbnQsIHBlcm1pbGxlLCBhbmQKKyAgICAgICAgICAgIC8vIGN1cnJlbmN5IHN5bWJvbHMgYXJlIHJlY29nbml6ZWQgYW5kIHRyYW5zbGF0ZWQuCisgICAgICAgICAgICBpbnQgc3VicGFydCA9IDEsIHN1YjBTdGFydCA9IDAsIHN1YjBMaW1pdCA9IDAsIHN1YjJMaW1pdCA9IDA7CisKKyAgICAgICAgICAgIC8vIEl0J3MgaW1wb3J0YW50IHRoYXQgd2UgZG9uJ3QgY2hhbmdlIGFueSBmaWVsZHMgb2YgdGhpcyBvYmplY3QKKyAgICAgICAgICAgIC8vIHByZW1hdHVyZWx5LiAgV2Ugc2V0IHRoZSBmb2xsb3dpbmcgdmFyaWFibGVzIGZvciB0aGUgbXVsdGlwbGllciwKKyAgICAgICAgICAgIC8vIGdyb3VwaW5nLCBldGMuLCBhbmQgdGhlbiBvbmx5IGNoYW5nZSB0aGUgYWN0dWFsIG9iamVjdCBmaWVsZHMgaWYKKyAgICAgICAgICAgIC8vIGV2ZXJ5dGhpbmcgcGFyc2VzIGNvcnJlY3RseS4gIFRoaXMgYWxzbyBsZXRzIHVzIHJlZ2lzdGVyCisgICAgICAgICAgICAvLyB0aGUgZGF0YSBmcm9tIHBhcnQgMCBhbmQgaWdub3JlIHRoZSBwYXJ0IDEsIGV4Y2VwdCBmb3IgdGhlCisgICAgICAgICAgICAvLyBwcmVmaXggYW5kIHN1ZmZpeC4KKyAgICAgICAgICAgIFN0cmluZ0J1ZmZlciBwcmVmaXggPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgICAgICBTdHJpbmdCdWZmZXIgc3VmZml4ID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICAgICAgaW50IGRlY2ltYWxQb3MgPSAtMTsKKyAgICAgICAgICAgIGludCBtdWx0aXBsaWVyID0gMTsKKyAgICAgICAgICAgIGludCBkaWdpdExlZnRDb3VudCA9IDAsIHplcm9EaWdpdENvdW50ID0gMCwgZGlnaXRSaWdodENvdW50ID0gMDsKKyAgICAgICAgICAgIGJ5dGUgZ3JvdXBpbmdDb3VudCA9IC0xOworICAgICAgICAgICAgYnl0ZSBncm91cGluZ0NvdW50MiA9IC0xOworICAgICAgICAgICAgaW50IHBhZFBvcyA9IC0xOworICAgICAgICAgICAgY2hhciBwYWRDaGFyID0gMDsKKyAgICAgICAgICAgIGludCBpbmNyZW1lbnRQb3MgPSAtMTsKKyAgICAgICAgICAgIGxvbmcgaW5jcmVtZW50VmFsID0gMDsKKyAgICAgICAgICAgIGJ5dGUgZXhwRGlnaXRzID0gLTE7CisgICAgICAgICAgICBib29sZWFuIGV4cFNpZ25BbHdheXMgPSBmYWxzZTsKKyAgICAgICAgICAgIGJvb2xlYW4gaXNDdXJyZW5jeSA9IGZhbHNlOworCisgICAgICAgICAgICAvLyBUaGUgYWZmaXggaXMgZWl0aGVyIHRoZSBwcmVmaXggb3IgdGhlIHN1ZmZpeC4KKyAgICAgICAgICAgIFN0cmluZ0J1ZmZlciBhZmZpeCA9IHByZWZpeDsKKworICAgICAgICAgICAgaW50IHN0YXJ0ID0gcG9zOworCisgICAgICAgIFBBUlRMT09QOgorICAgICAgICAgICAgZm9yICg7IHBvcyA8IHBhdHRlcm4ubGVuZ3RoKCk7ICsrcG9zKSB7CisgICAgICAgICAgICAgICAgY2hhciBjaCA9IHBhdHRlcm4uY2hhckF0KHBvcyk7CisgICAgICAgICAgICAgICAgc3dpdGNoIChzdWJwYXJ0KSB7CisgICAgICAgICAgICAgICAgY2FzZSAwOiAvLyBQYXR0ZXJuIHByb3BlciBzdWJwYXJ0IChiZXR3ZWVuIHByZWZpeCAmIHN1ZmZpeCkKKyAgICAgICAgICAgICAgICAgICAgLy8gUHJvY2VzcyB0aGUgZGlnaXRzLCBkZWNpbWFsLCBhbmQgZ3JvdXBpbmcgY2hhcmFjdGVycy4gIFdlCisgICAgICAgICAgICAgICAgICAgIC8vIHJlY29yZCBmaXZlIHBpZWNlcyBvZiBpbmZvcm1hdGlvbi4gIFdlIGV4cGVjdCB0aGUgZGlnaXRzCisgICAgICAgICAgICAgICAgICAgIC8vIHRvIG9jY3VyIGluIHRoZSBwYXR0ZXJuICMjIyMwMC4wMCMjIyMsIGFuZCB3ZSByZWNvcmQgdGhlCisgICAgICAgICAgICAgICAgICAgIC8vIG51bWJlciBvZiBsZWZ0IGRpZ2l0cywgemVybyAoY2VudHJhbCkgZGlnaXRzLCBhbmQgcmlnaHQKKyAgICAgICAgICAgICAgICAgICAgLy8gZGlnaXRzLiAgVGhlIHBvc2l0aW9uIG9mIHRoZSBsYXN0IGdyb3VwaW5nIGNoYXJhY3RlciBpcworICAgICAgICAgICAgICAgICAgICAvLyByZWNvcmRlZCAoc2hvdWxkIGJlIHNvbWV3aGVyZSB3aXRoaW4gdGhlIGZpcnN0IHR3byBibG9ja3MKKyAgICAgICAgICAgICAgICAgICAgLy8gb2YgY2hhcmFjdGVycyksIGFzIGlzIHRoZSBwb3NpdGlvbiBvZiB0aGUgZGVjaW1hbCBwb2ludCwKKyAgICAgICAgICAgICAgICAgICAgLy8gaWYgYW55IChzaG91bGQgYmUgaW4gdGhlIHplcm8gZGlnaXRzKS4gIElmIHRoZXJlIGlzIG5vCisgICAgICAgICAgICAgICAgICAgIC8vIGRlY2ltYWwgcG9pbnQsIHRoZW4gdGhlcmUgc2hvdWxkIGJlIG5vIHJpZ2h0IGRpZ2l0cy4KKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoID09IGRpZ2l0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoemVyb0RpZ2l0Q291bnQgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytkaWdpdFJpZ2h0Q291bnQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrZGlnaXRMZWZ0Q291bnQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ3JvdXBpbmdDb3VudCA+PSAwICYmIGRlY2ltYWxQb3MgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytncm91cGluZ0NvdW50OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoID49IHplcm9EaWdpdCAmJiBjaCA8PSBuaW5lRGlnaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaWdpdFJpZ2h0Q291bnQgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVuZXhwZWN0ZWQgJzAnIGluIHBhdHRlcm4gXCIiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybiArICciJyk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICArK3plcm9EaWdpdENvdW50OworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdyb3VwaW5nQ291bnQgPj0gMCAmJiBkZWNpbWFsUG9zIDwgMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrZ3JvdXBpbmdDb3VudDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaCAhPSB6ZXJvRGlnaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcCA9IGRpZ2l0TGVmdENvdW50ICsgemVyb0RpZ2l0Q291bnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBkaWdpdFJpZ2h0Q291bnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluY3JlbWVudFBvcyA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChpbmNyZW1lbnRQb3MgPCBwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNyZW1lbnRWYWwgKj0gMTA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArK2luY3JlbWVudFBvczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY3JlbWVudFBvcyA9IHA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY3JlbWVudFZhbCArPSBjaCAtIHplcm9EaWdpdDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PSBncm91cGluZ1NlcGFyYXRvcikgeworICAgICAgICAgICAgICAgICAgICAgICAgLypCdWcgNDIxMjA3MgorICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzIHRoZSBMb2NhbGl6ZWQgcGF0dGVybiBsaWtlICInRnIuICcjJyMjMC4wNTsnRnIuLScjJyMjMC4wNSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKExvY2FsZT0iQ0giLCBncm91cGluZ1NlcGFyYXRvciA9PSBRVU9URSkgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICBbUmljaGFyZC9HQ0xdCisgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoID09IFFVT1RFICYmIChwb3MrMSkgPCBwYXR0ZXJuLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBhZnRlciA9IHBhdHRlcm4uY2hhckF0KHBvcysxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShhZnRlciA9PSBkaWdpdCB8fCAoYWZ0ZXIgPj0gemVyb0RpZ2l0ICYmIGFmdGVyIDw9IG5pbmVEaWdpdCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEEgcXVvdGUgb3V0c2lkZSBxdW90ZXMgaW5kaWNhdGVzIGVpdGhlciB0aGUgb3BlbmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBxdW90ZSBvciB0d28gcXVvdGVzLCB3aGljaCBpcyBhIHF1b3RlIGxpdGVyYWwuICBUaGF0IGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSBoYXZlIHRoZSBmaXJzdCBxdW90ZSBpbiAnZG8nIG9yIG8nJ2Nsb2NrLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWZ0ZXIgPT0gUVVPVEUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrcG9zOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmFsbCB0aHJvdWdoIHRvIGFwcGVuZChjaCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChncm91cGluZ0NvdW50IDwgMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnBhcnQgPSAzOyAvLyBxdW90ZWQgcHJlZml4IHN1YnBhcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRyYW5zaXRpb24gdG8gc3VmZml4IHN1YnBhcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VicGFydCA9IDI7IC8vIHN1ZmZpeCBzdWJwYXJ0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmZml4ID0gc3VmZml4OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWIwTGltaXQgPSBwb3MtLTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlY2ltYWxQb3MgPj0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR3JvdXBpbmcgc2VwYXJhdG9yIGFmdGVyIGRlY2ltYWwgaW4gcGF0dGVybiBcIiIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybiArICciJyk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBncm91cGluZ0NvdW50MiA9IGdyb3VwaW5nQ291bnQ7CisgICAgICAgICAgICAgICAgICAgICAgICBncm91cGluZ0NvdW50ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PSBkZWNpbWFsU2VwYXJhdG9yKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVjaW1hbFBvcyA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNdWx0aXBsZSBkZWNpbWFsIHNlcGFyYXRvcnMgaW4gcGF0dGVybiBcIiIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybiArICciJyk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbnRlbnRpb25hbGx5IGluY29ycG9yYXRlIHRoZSBkaWdpdFJpZ2h0Q291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBldmVuIHRob3VnaCBpdCBpcyBpbGxlZ2FsIGZvciB0aGlzIHRvIGJlID4gMAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXQgdGhpcyBwb2ludC4gIFdlIGNoZWNrIHBhdHRlcm4gc3ludGF4IGJlbG93LgorICAgICAgICAgICAgICAgICAgICAgICAgZGVjaW1hbFBvcyA9IGRpZ2l0TGVmdENvdW50ICsgemVyb0RpZ2l0Q291bnQgKyBkaWdpdFJpZ2h0Q291bnQ7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGF0dGVybi5yZWdpb25NYXRjaGVzKHBvcywgZXhwb25lbnQsIDAsIGV4cG9uZW50Lmxlbmd0aCgpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleHBEaWdpdHMgPj0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNdWx0aXBsZSBleHBvbmVudGlhbCAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3ltYm9scyBpbiBwYXR0ZXJuIFwiIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybiArICciJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChncm91cGluZ0NvdW50ID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR3JvdXBpbmcgc2VwYXJhdG9yIGluIGV4cG9uZW50aWFsICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXR0ZXJuIFwiIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybiArICciJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGZvciBwb3NpdGl2ZSBwcmVmaXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHBvcysxKSA8IHBhdHRlcm4ubGVuZ3RoKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgcGF0dGVybi5jaGFyQXQocG9zKzEpID09IHBsdXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwU2lnbkFsd2F5cyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrcG9zOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVc2UgbG9va2FoZWFkIHRvIHBhcnNlIG91dCB0aGUgZXhwb25lbnRpYWwgcGFydCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYXR0ZXJuLCB0aGVuIGp1bXAgaW50byBzdWZmaXggc3VicGFydC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBEaWdpdHMgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgrK3BvcyA8IHBhdHRlcm4ubGVuZ3RoKCkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybi5jaGFyQXQocG9zKSA9PSB6ZXJvRGlnaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytleHBEaWdpdHM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZGlnaXRMZWZ0Q291bnQgKyB6ZXJvRGlnaXRDb3VudCkgPCAxIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cERpZ2l0cyA8IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWFsZm9ybWVkIGV4cG9uZW50aWFsICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXR0ZXJuIFwiIiArIHBhdHRlcm4gKyAnIicpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRyYW5zaXRpb24gdG8gc3VmZml4IHN1YnBhcnQKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1YnBhcnQgPSAyOyAvLyBzdWZmaXggc3VicGFydAorICAgICAgICAgICAgICAgICAgICAgICAgYWZmaXggPSBzdWZmaXg7CisgICAgICAgICAgICAgICAgICAgICAgICBzdWIwTGltaXQgPSBwb3MtLTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMTogLy8gUHJlZml4IHN1YnBhcnQKKyAgICAgICAgICAgICAgICBjYXNlIDI6IC8vIFN1ZmZpeCBzdWJwYXJ0CisgICAgICAgICAgICAgICAgICAgIC8vIFByb2Nlc3MgdGhlIHByZWZpeCAvIHN1ZmZpeCBjaGFyYWN0ZXJzCisgICAgICAgICAgICAgICAgICAgIC8vIFByb2Nlc3MgdW5xdW90ZWQgY2hhcmFjdGVycyBzZWVuIGluIHByZWZpeCBvciBzdWZmaXgKKyAgICAgICAgICAgICAgICAgICAgLy8gc3VicGFydC4KKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoID09IGRpZ2l0IHx8CisgICAgICAgICAgICAgICAgICAgICAgICBjaCA9PSBncm91cGluZ1NlcGFyYXRvciB8fAorICAgICAgICAgICAgICAgICAgICAgICAgY2ggPT0gZGVjaW1hbFNlcGFyYXRvciB8fAorICAgICAgICAgICAgICAgICAgICAgICAgKGNoID49IHplcm9EaWdpdCAmJiBjaCA8PSBuaW5lRGlnaXQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBBbnkgb2YgdGhlc2UgY2hhcmFjdGVycyBpbXBsaWNpdGx5IGJlZ2lucyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5leHQgc3VicGFydCBpZiB3ZSBhcmUgaW4gdGhlIHByZWZpeAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1YnBhcnQgPT0gMSkgeyAvLyBwcmVmaXggc3VicGFydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnBhcnQgPSAwOyAvLyBwYXR0ZXJuIHByb3BlciBzdWJwYXJ0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViMFN0YXJ0ID0gcG9zLS07IC8vIFJlcHJvY2VzcyB0aGlzIGNoYXJhY3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PSBRVU9URSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qQnVnIDQyMTIwNzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3MgdGhlIExvY2FsaXplZCBwYXR0ZXJuIGxpa2UgIidGci4gJyMnIyMwLjA1OydGci4tJyMnIyMwLjA1IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKExvY2FsZT0iQ0giLCBncm91cGluZ1NlcGFyYXRvciA9PSBRVU9URSkgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1JpY2hhcmQvR0NMXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQSBxdW90ZSBvdXRzaWRlIHF1b3RlcyBpbmRpY2F0ZXMgZWl0aGVyIHRoZSBvcGVuaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcXVvdGUgb3IgdHdvIHF1b3Rlcywgd2hpY2ggaXMgYSBxdW90ZSBsaXRlcmFsLiAgVGhhdCBpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSBoYXZlIHRoZSBmaXJzdCBxdW90ZSBpbiAnZG8nIG9yIG8nJ2Nsb2NrLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocG9zKzEpIDwgcGF0dGVybi5sZW5ndGgoKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuLmNoYXJBdChwb3MrMSkgPT0gUVVPVEUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytwb3M7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZhbGwgdGhyb3VnaCB0byBhcHBlbmQoY2gpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VicGFydCArPSAyOyAvLyBvcGVuIHF1b3RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZhbGwgdGhyb3VnaCB0byBhcHBlbmQoY2gpCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2ggPT0gQ1VSUkVOQ1lfU0lHTikgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gVXNlIGxvb2thaGVhZCB0byBkZXRlcm1pbmUgaWYgdGhlIGN1cnJlbmN5IHNpZ24gaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvdWJsZWQgb3Igbm90LgorICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBkb3VibGVkID0gKHBvcyArIDEpIDwgcGF0dGVybi5sZW5ndGgoKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm4uY2hhckF0KHBvcyArIDEpID09IENVUlJFTkNZX1NJR047CisgICAgICAgICAgICAgICAgICAgICAgICAvKkJ1ZyA0MjEyMDcyCisgICAgICAgICAgICAgICAgICAgICAgICAgVG8gbWVldCB0aGUgbmVlZCBvZiBleHBhbmRBZmZpeChTdHJpbmcsIFN0aXJuZ0J1ZmZlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICBbUmljaGFyZC9HQ0xdCisgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRvdWJsZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArK3BvczsgLy8gU2tpcCBvdmVyIHRoZSBkb3VibGVkIGNoYXJhY3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmZml4LmFwcGVuZChjaCk7IC8vIGFwcGVuZCB0d286IG9uZSBoZXJlLCBvbmUgYmVsb3cKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlzQ3VycmVuY3kgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmFsbCB0aHJvdWdoIHRvIGFwcGVuZChjaCkKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PSBRVU9URSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gQSBxdW90ZSBvdXRzaWRlIHF1b3RlcyBpbmRpY2F0ZXMgZWl0aGVyIHRoZSBvcGVuaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBxdW90ZSBvciB0d28gcXVvdGVzLCB3aGljaCBpcyBhIHF1b3RlIGxpdGVyYWwuICBUaGF0IGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgaGF2ZSB0aGUgZmlyc3QgcXVvdGUgaW4gJ2RvJyBvciBvJydjbG9jay4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocG9zKzEpIDwgcGF0dGVybi5sZW5ndGgoKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm4uY2hhckF0KHBvcysxKSA9PSBRVU9URSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrcG9zOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmZml4LmFwcGVuZChjaCk7IC8vIGFwcGVuZCB0d286IG9uZSBoZXJlLCBvbmUgYmVsb3cKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VicGFydCArPSAyOyAvLyBvcGVuIHF1b3RlCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBGYWxsIHRocm91Z2ggdG8gYXBwZW5kKGNoKQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoID09IHNlcGFyYXRvcikgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgYWxsb3cgc2VwYXJhdG9ycyBpbiB0aGUgcHJlZml4LCBhbmQgZG9uJ3QgYWxsb3cKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNlcGFyYXRvcnMgaW4gdGhlIHNlY29uZCBwYXR0ZXJuIChwYXJ0ID09IDEpLgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1YnBhcnQgPT0gMSB8fCBwYXJ0ID09IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVucXVvdGVkIHNwZWNpYWwgY2hhcmFjdGVyICciICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoICsgIicgaW4gcGF0dGVybiBcIiIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybiArICciJyk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBzdWIyTGltaXQgPSBwb3MrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIFBBUlRMT09QOyAvLyBHbyB0byBuZXh0IHBhcnQKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PSBwZXJjZW50IHx8IGNoID09IHBlck1pbGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5leHQgaGFuZGxlIGNoYXJhY3RlcnMgd2hpY2ggYXJlIGFwcGVuZGVkIGRpcmVjdGx5LgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG11bHRpcGxpZXIgIT0gMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVG9vIG1hbnkgcGVyY2VudC9wZXJtaWxsZSBjaGFyYWN0ZXJzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgImluIHBhdHRlcm4gXCIiICsgcGF0dGVybiArICciJyk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsaWVyID0gKGNoID09IHBlcmNlbnQpID8gMTAwIDogMTAwMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgdG8gbm9uLWxvY2FsaXplZCBwYXR0ZXJuCisgICAgICAgICAgICAgICAgICAgICAgICBjaCA9IChjaCA9PSBwZXJjZW50KSA/IFBBVFRFUk5fUEVSQ0VOVCA6IFBBVFRFUk5fUEVSX01JTExFOworICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmFsbCB0aHJvdWdoIHRvIGFwcGVuZChjaCkKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PSBtaW51cykgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29udmVydCB0byBub24tbG9jYWxpemVkIHBhdHRlcm4KKyAgICAgICAgICAgICAgICAgICAgICAgIGNoID0gUEFUVEVSTl9NSU5VUzsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZhbGwgdGhyb3VnaCB0byBhcHBlbmQoY2gpCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2ggPT0gcGFkRXNjYXBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFkUG9zID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk11bHRpcGxlIHBhZCBzcGVjaWZpZXJzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHBvcysxKSA9PSBwYXR0ZXJuLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIHBhZCBzcGVjaWZpZXIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHBhZFBvcyA9IHBvcysrOyAvLyBBZHZhbmNlIHBhc3QgcGFkIGNoYXIKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhZENoYXIgPSBwYXR0ZXJuLmNoYXJBdChwb3MpOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYWZmaXguYXBwZW5kKGNoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAzOiAvLyBQcmVmaXggc3VicGFydCwgaW4gcXVvdGUKKyAgICAgICAgICAgICAgICBjYXNlIDQ6IC8vIFN1ZmZpeCBzdWJwYXJ0LCBpbiBxdW90ZQorICAgICAgICAgICAgICAgICAgICAvLyBBIHF1b3RlIHdpdGhpbiBxdW90ZXMgaW5kaWNhdGVzIGVpdGhlciB0aGUgY2xvc2luZworICAgICAgICAgICAgICAgICAgICAvLyBxdW90ZSBvciB0d28gcXVvdGVzLCB3aGljaCBpcyBhIHF1b3RlIGxpdGVyYWwuICBUaGF0IGlzLAorICAgICAgICAgICAgICAgICAgICAvLyB3ZSBoYXZlIHRoZSBzZWNvbmQgcXVvdGUgaW4gJ2RvJyBvciAnZG9uJyd0Jy4KKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoID09IFFVT1RFKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHBvcysxKSA8IHBhdHRlcm4ubGVuZ3RoKCkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuLmNoYXJBdChwb3MrMSkgPT0gUVVPVEUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArK3BvczsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZmaXguYXBwZW5kKGNoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VicGFydCAtPSAyOyAvLyBjbG9zZSBxdW90ZQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmFsbCB0aHJvdWdoIHRvIGFwcGVuZChjaCkKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAvLyBOT1RFOiBJbiBJQ1UgMi4yIHRoZXJlIHdhcyBjb2RlIGhlcmUgdG8gcGFyc2UgcXVvdGVkCisgICAgICAgICAgICAgICAgICAgIC8vIHBlcmNlbnQgYW5kIHBlcm1pbGxlIGNoYXJhY3RlcnMgX3dpdGhpbiBxdW90ZXNfIGFuZCBnaXZlCisgICAgICAgICAgICAgICAgICAgIC8vIHRoZW0gc3BlY2lhbCBtZWFuaW5nLiAgVGhpcyBpcyBpbmNvcnJlY3QsIHNpbmNlIHF1b3RlZAorICAgICAgICAgICAgICAgICAgICAvLyBjaGFyYWN0ZXJzIGFyZSBsaXRlcmFscyB3aXRob3V0IHNwZWNpYWwgbWVhbmluZy4KKyAgICAgICAgICAgICAgICAgICAgYWZmaXguYXBwZW5kKGNoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChzdWJwYXJ0ID09IDMgfHwgc3VicGFydCA9PSA0KSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiVW50ZXJtaW5hdGVkIHF1b3RlIGluICIgKyBwYXR0ZXJuKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHN1YjBMaW1pdCA9PSAwKSB7CisgICAgICAgICAgICAgICAgc3ViMExpbWl0ID0gcGF0dGVybi5sZW5ndGgoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHN1YjJMaW1pdCA9PSAwKSB7CisgICAgICAgICAgICAgICAgc3ViMkxpbWl0ID0gcGF0dGVybi5sZW5ndGgoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogSGFuZGxlIHBhdHRlcm5zIHdpdGggbm8gJzAnIHBhdHRlcm4gY2hhcmFjdGVyLiAgVGhlc2UgcGF0dGVybnMKKyAgICAgICAgICAgICAqIGFyZSBsZWdhbCwgYnV0IG11c3QgYmUgcmVjb2RpZmllZCB0byBtYWtlIHNlbnNlLiAgIiMjLiMjIyIgLT4KKyAgICAgICAgICAgICAqICIjMC4jIyMiLiAgIi4jIyMiIC0+ICIuMCMjIi4KKyAgICAgICAgICAgICAqCisgICAgICAgICAgICAgKiBXZSBhbGxvdyBwYXR0ZXJucyBvZiB0aGUgZm9ybSAiIyMjIyIgdG8gcHJvZHVjZSBhIHplcm9EaWdpdENvdW50CisgICAgICAgICAgICAgKiBvZiB6ZXJvIChnb3QgdGhhdD8pOyBhbHRob3VnaCB0aGlzIHNlZW1zIGxpa2UgaXQgbWlnaHQgbWFrZSBpdAorICAgICAgICAgICAgICogcG9zc2libGUgZm9yIGZvcm1hdCgpIHRvIHByb2R1Y2UgZW1wdHkgc3RyaW5ncywgZm9ybWF0KCkgY2hlY2tzCisgICAgICAgICAgICAgKiBmb3IgdGhpcyBjb25kaXRpb24gYW5kIG91dHB1dHMgYSB6ZXJvIGRpZ2l0IGluIHRoaXMgc2l0dWF0aW9uLgorICAgICAgICAgICAgICogSGF2aW5nIGEgemVyb0RpZ2l0Q291bnQgb2YgemVybyB5aWVsZHMgYSBtaW5pbXVtIGludGVnZXIgZGlnaXRzCisgICAgICAgICAgICAgKiBvZiB6ZXJvLCB3aGljaCBhbGxvd3MgcHJvcGVyIHJvdW5kLXRyaXAgcGF0dGVybnMuICBXZSBkb24ndCB3YW50CisgICAgICAgICAgICAgKiAiIyIgdG8gYmVjb21lICIjMCIgd2hlbiB0b1BhdHRlcm4oKSBpcyBjYWxsZWQgKGV2ZW4gdGhvdWdoIHRoYXQncworICAgICAgICAgICAgICogd2hhdCBpdCByZWFsbHkgaXMsIHNlbWFudGljYWxseSkuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGlmICh6ZXJvRGlnaXRDb3VudCA9PSAwICYmIGRpZ2l0TGVmdENvdW50ID4gMCAmJiBkZWNpbWFsUG9zID49IDApIHsKKyAgICAgICAgICAgICAgICAvLyBIYW5kbGUgIiMjIy4jIyMiIGFuZCAiIyMjLiIgYW5kICIuIyMjIgorICAgICAgICAgICAgICAgIGludCBuID0gZGVjaW1hbFBvczsKKyAgICAgICAgICAgICAgICBpZiAobiA9PSAwKSArK247IC8vIEhhbmRsZSAiLiMjIyIKKyAgICAgICAgICAgICAgICBkaWdpdFJpZ2h0Q291bnQgPSBkaWdpdExlZnRDb3VudCAtIG47CisgICAgICAgICAgICAgICAgZGlnaXRMZWZ0Q291bnQgPSBuIC0gMTsKKyAgICAgICAgICAgICAgICB6ZXJvRGlnaXRDb3VudCA9IDE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIERvIHN5bnRheCBjaGVja2luZyBvbiB0aGUgZGlnaXRzLCBkZWNpbWFsIHBvaW50cywgYW5kIHF1b3Rlcy4KKyAgICAgICAgICAgIGlmICgoZGVjaW1hbFBvcyA8IDAgJiYgZGlnaXRSaWdodENvdW50ID4gMCkgfHwKKyAgICAgICAgICAgICAgICAoZGVjaW1hbFBvcyA+PSAwICYmCisgICAgICAgICAgICAgICAgIChkZWNpbWFsUG9zIDwgZGlnaXRMZWZ0Q291bnQgfHwKKyAgICAgICAgICAgICAgICAgIGRlY2ltYWxQb3MgPiAoZGlnaXRMZWZ0Q291bnQgKyB6ZXJvRGlnaXRDb3VudCkpKSB8fAorICAgICAgICAgICAgICAgIGdyb3VwaW5nQ291bnQgPT0gMCB8fCBncm91cGluZ0NvdW50MiA9PSAwIHx8CisgICAgICAgICAgICAgICAgc3VicGFydCA+IDIpIHsgLy8gc3VicGFydCA+IDIgPT0gdW5tYXRjaGVkIHF1b3RlCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiTWFsZm9ybWVkIHBhdHRlcm4gXCIiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm4gKyAnIicpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBNYWtlIHN1cmUgcGFkIGlzIGF0IGxlZ2FsIHBvc2l0aW9uIGJlZm9yZSBvciBhZnRlciBhZmZpeC4KKyAgICAgICAgICAgIGlmIChwYWRQb3MgPj0gMCkgeworICAgICAgICAgICAgICAgIGlmIChwYWRQb3MgPT0gc3RhcnQpIHsKKyAgICAgICAgICAgICAgICAgICAgcGFkUG9zID0gUEFEX0JFRk9SRV9QUkVGSVg7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYWRQb3MrMiA9PSBzdWIwU3RhcnQpIHsKKyAgICAgICAgICAgICAgICAgICAgcGFkUG9zID0gUEFEX0FGVEVSX1BSRUZJWDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBhZFBvcyA9PSBzdWIwTGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgcGFkUG9zID0gUEFEX0JFRk9SRV9TVUZGSVg7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYWRQb3MrMiA9PSBzdWIyTGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgcGFkUG9zID0gUEFEX0FGVEVSX1NVRkZJWDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbGxlZ2FsIHBhZCBwb3NpdGlvbiIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHBhcnQgPT0gMCkgeworICAgICAgICAgICAgICAgIC8vIFNldCBuZWdhdGl2ZSBhZmZpeGVzIHRlbXBvcmFyaWx5IHRvIG1hdGNoIHRoZSBwb3NpdGl2ZQorICAgICAgICAgICAgICAgIC8vIGFmZml4ZXMuICBGaXggdGhpcyB1cCBsYXRlciBhZnRlciBwcm9jZXNzaW5nIGJvdGggcGFydHMuCisgICAgICAgICAgICAgICAgLypCdWcgNDIxMjA3MgorICAgICAgICAgICAgICAgICAgVG8gbWVldCB0aGUgbmVlZCBvZiBleHBhbmRBZmZpeChTdHJpbmcsIFN0aXJuZ0J1ZmZlcikKKyAgICAgICAgICAgICAgICAgIFtSaWNoYXJkL0dDTF0KKyAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIHBvc1ByZWZpeFBhdHRlcm4gPSBuZWdQcmVmaXhQYXR0ZXJuID0gcHJlZml4LnRvU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgcG9zU3VmZml4UGF0dGVybiA9IG5lZ1N1ZmZpeFBhdHRlcm4gPSBzdWZmaXgudG9TdHJpbmcoKTsKKworICAgICAgICAgICAgICAgIHVzZUV4cG9uZW50aWFsTm90YXRpb24gPSAoZXhwRGlnaXRzID49IDApOworICAgICAgICAgICAgICAgIGlmICh1c2VFeHBvbmVudGlhbE5vdGF0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIG1pbkV4cG9uZW50RGlnaXRzID0gZXhwRGlnaXRzOworICAgICAgICAgICAgICAgICAgICBleHBvbmVudFNpZ25BbHdheXNTaG93biA9IGV4cFNpZ25BbHdheXM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlzQ3VycmVuY3lGb3JtYXQgPSBpc0N1cnJlbmN5OworICAgICAgICAgICAgICAgIGludCBkaWdpdFRvdGFsQ291bnQgPSBkaWdpdExlZnRDb3VudCArIHplcm9EaWdpdENvdW50ICsgZGlnaXRSaWdodENvdW50OworICAgICAgICAgICAgICAgIC8vIFRoZSBlZmZlY3RpdmVEZWNpbWFsUG9zIGlzIHRoZSBwb3NpdGlvbiB0aGUgZGVjaW1hbCBpcyBhdCBvcgorICAgICAgICAgICAgICAgIC8vIHdvdWxkIGJlIGF0IGlmIHRoZXJlIGlzIG5vIGRlY2ltYWwuICBOb3RlIHRoYXQgaWYKKyAgICAgICAgICAgICAgICAvLyBkZWNpbWFsUG9zPDAsIHRoZW4gZGlnaXRUb3RhbENvdW50ID09IGRpZ2l0TGVmdENvdW50ICsKKyAgICAgICAgICAgICAgICAvLyB6ZXJvRGlnaXRDb3VudC4KKyAgICAgICAgICAgICAgICBpbnQgZWZmZWN0aXZlRGVjaW1hbFBvcyA9IGRlY2ltYWxQb3MgPj0gMCA/IGRlY2ltYWxQb3MgOiBkaWdpdFRvdGFsQ291bnQ7CisgICAgICAgICAgICAgICAgc2V0TWluaW11bUludGVnZXJEaWdpdHMoZWZmZWN0aXZlRGVjaW1hbFBvcyAtIGRpZ2l0TGVmdENvdW50KTsKKyAgICAgICAgICAgICAgICAvKlVwcGVyIGxpbWl0IG9uIGludGVnZXIgYW5kIGZyYWN0aW9uIGRpZ2l0cyBmb3IgYSBKYXZhIGRvdWJsZQorICAgICAgICAgICAgICAgICAgW1JpY2hhcmQvR0NMXQorICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgc2V0TWF4aW11bUludGVnZXJEaWdpdHModXNlRXhwb25lbnRpYWxOb3RhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgPyBkaWdpdExlZnRDb3VudCArIGdldE1pbmltdW1JbnRlZ2VyRGlnaXRzKCkgOiBET1VCTEVfSU5URUdFUl9ESUdJVFMpOworICAgICAgICAgICAgICAgIHNldE1heGltdW1GcmFjdGlvbkRpZ2l0cyhkZWNpbWFsUG9zID49IDAKKyAgICAgICAgICAgICAgICAgICAgICAgID8gKGRpZ2l0VG90YWxDb3VudCAtIGRlY2ltYWxQb3MpIDogMCk7CisgICAgICAgICAgICAgICAgc2V0TWluaW11bUZyYWN0aW9uRGlnaXRzKGRlY2ltYWxQb3MgPj0gMAorICAgICAgICAgICAgICAgICAgICAgICAgPyAoZGlnaXRMZWZ0Q291bnQgKyB6ZXJvRGlnaXRDb3VudCAtIGRlY2ltYWxQb3MpIDogMCk7CisgICAgICAgICAgICAgICAgc2V0R3JvdXBpbmdVc2VkKGdyb3VwaW5nQ291bnQgPiAwKTsKKyAgICAgICAgICAgICAgICB0aGlzLmdyb3VwaW5nU2l6ZSA9IChncm91cGluZ0NvdW50ID4gMCkgPyBncm91cGluZ0NvdW50IDogMDsKKyAgICAgICAgICAgICAgICB0aGlzLmdyb3VwaW5nU2l6ZTIgPSAoZ3JvdXBpbmdDb3VudDIgPiAwICYmIGdyb3VwaW5nQ291bnQyICE9IGdyb3VwaW5nQ291bnQpCisgICAgICAgICAgICAgICAgICAgID8gZ3JvdXBpbmdDb3VudDIgOiAwOworICAgICAgICAgICAgICAgIHRoaXMubXVsdGlwbGllciA9IG11bHRpcGxpZXI7CisgICAgICAgICAgICAgICAgc2V0RGVjaW1hbFNlcGFyYXRvckFsd2F5c1Nob3duKGRlY2ltYWxQb3MgPT0gMAorICAgICAgICAgICAgICAgICAgICAgICAgfHwgZGVjaW1hbFBvcyA9PSBkaWdpdFRvdGFsQ291bnQpOworICAgICAgICAgICAgICAgIGlmIChwYWRQb3MgPj0gMCkgeworICAgICAgICAgICAgICAgICAgICBwYWRQb3NpdGlvbiA9IHBhZFBvczsKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0V2lkdGggPSBzdWIwTGltaXQgLSBzdWIwU3RhcnQ7IC8vIHRvIGJlIGZpeGVkIHVwIGJlbG93CisgICAgICAgICAgICAgICAgICAgIHBhZCA9IHBhZENoYXI7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0V2lkdGggPSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoaW5jcmVtZW50VmFsICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQmlnRGVjaW1hbCBzY2FsZSBjYW5ub3QgYmUgbmVnYXRpdmUgKGV2ZW4gdGhvdWdoCisgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgbWFrZXMgcGVyZmVjdCBzZW5zZSksIHNvIHdlIG5lZWQgdG8gaGFuZGxlIHRoaXMuCisgICAgICAgICAgICAgICAgICAgIGludCBzY2FsZSA9IGluY3JlbWVudFBvcyAtIGVmZmVjdGl2ZURlY2ltYWxQb3M7CisgICAgICAgICAgICAgICAgICAgIHJvdW5kaW5nSW5jcmVtZW50ID0KKyAgICAgICAgICAgICAgICAgICAgICAgIGphdmEubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YoaW5jcmVtZW50VmFsLCBzY2FsZSA+IDAgPyBzY2FsZSA6IDApOworICAgICAgICAgICAgICAgICAgICBpZiAoc2NhbGUgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByb3VuZGluZ0luY3JlbWVudCA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91bmRpbmdJbmNyZW1lbnQubW92ZVBvaW50UmlnaHQoLXNjYWxlKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByb3VuZGluZ0RvdWJsZSA9IHJvdW5kaW5nSW5jcmVtZW50LmRvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIHJvdW5kaW5nTW9kZSA9IGphdmEubWF0aC5CaWdEZWNpbWFsLlJPVU5EX0hBTEZfRVZFTjsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBzZXRSb3VuZGluZ0luY3JlbWVudChudWxsKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8qQnVnIDQyMTIwNzIKKyAgICAgICAgICAgICAgICAgIFRvIG1lZXQgdGhlIG5lZWQgb2YgZXhwYW5kQWZmaXgoU3RyaW5nLCBTdGlybmdCdWZmZXIpCisgICAgICAgICAgICAgICAgICBbUmljaGFyZC9HQ0xdCisgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBuZWdQcmVmaXhQYXR0ZXJuID0gcHJlZml4LnRvU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgbmVnU3VmZml4UGF0dGVybiA9IHN1ZmZpeC50b1N0cmluZygpOworICAgICAgICAgICAgICAgIGdvdE5lZ2F0aXZlID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8qQnVnIDQxNDAwMDkKKyAgICAgICAgICBQcm9jZXNzIHRoZSBlbXB0eSBwYXR0ZXJuCisgICAgICAgICAgW1JpY2hhcmQvR0NMXQorICAgICAgICAqLworICAgICAgICBpZiAocGF0dGVybi5sZW5ndGgoKSA9PSAwKSB7CisgICAgICAgICAgICBwb3NQcmVmaXhQYXR0ZXJuID0gcG9zU3VmZml4UGF0dGVybiA9ICIiOworICAgICAgICAgICAgc2V0TWluaW11bUludGVnZXJEaWdpdHMoMCk7CisgICAgICAgICAgICBzZXRNYXhpbXVtSW50ZWdlckRpZ2l0cyhET1VCTEVfSU5URUdFUl9ESUdJVFMpOworICAgICAgICAgICAgc2V0TWluaW11bUZyYWN0aW9uRGlnaXRzKDApOworICAgICAgICAgICAgc2V0TWF4aW11bUZyYWN0aW9uRGlnaXRzKERPVUJMRV9GUkFDVElPTl9ESUdJVFMpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBJZiB0aGVyZSB3YXMgbm8gbmVnYXRpdmUgcGF0dGVybiwgb3IgaWYgdGhlIG5lZ2F0aXZlIHBhdHRlcm4gaXMKKyAgICAgICAgLy8gaWRlbnRpY2FsIHRvIHRoZSBwb3NpdGl2ZSBwYXR0ZXJuLCB0aGVuIHByZXBlbmQgdGhlIG1pbnVzIHNpZ24gdG8gdGhlCisgICAgICAgIC8vIHBvc2l0aXZlIHBhdHRlcm4gdG8gZm9ybSB0aGUgbmVnYXRpdmUgcGF0dGVybi4KKyAgICAgICAgLypCdWcgNDIxMjA3MgorICAgICAgICAgIFRvIG1lZXQgdGhlIG5lZWQgb2YgZXhwYW5kQWZmaXgoU3RyaW5nLCBTdGlybmdCdWZmZXIpCisgICAgICAgICAgW1JpY2hhcmQvR0NMXQorICAgICAgICAqLworICAgICAgICBpZiAoIWdvdE5lZ2F0aXZlIHx8CisgICAgICAgICAgICAobmVnUHJlZml4UGF0dGVybi5lcXVhbHMocG9zUHJlZml4UGF0dGVybikKKyAgICAgICAgICAgICAmJiBuZWdTdWZmaXhQYXR0ZXJuLmVxdWFscyhwb3NTdWZmaXhQYXR0ZXJuKSkpIHsKKyAgICAgICAgICAgIG5lZ1N1ZmZpeFBhdHRlcm4gPSBwb3NTdWZmaXhQYXR0ZXJuOworICAgICAgICAgICAgbmVnUHJlZml4UGF0dGVybiA9IHN5bWJvbHMuZ2V0TWludXNTaWduKCkgKyBwb3NQcmVmaXhQYXR0ZXJuOworICAgICAgICB9CisgICAgICAgIC8qQnVnIDQyMTIwNzIKKyAgICAgICAgICBVcGRhdGUgdGhlIGFmZml4IHN0cmluZ3MgYWNjcm9kaW5nIHRvIHN5bWJvbHMgaW4gb3JkZXIgdG8ga2VlcAorICAgICAgICAgIHRoZSBhZmZpeCBzdHJpbmdzIHVwIHRvIGRhdGUuCisgICAgICAgICAgW1JpY2hhcmQvR0NMXQorICAgICAgICAqLworICAgICAgICBleHBhbmRBZmZpeGVzKCk7CisKKyAgICAgICAgLy8gTm93IHRoYXQgd2UgaGF2ZSB0aGUgYWN0dWFsIHByZWZpeCBhbmQgc3VmZml4LCBmaXggdXAgZm9ybWF0V2lkdGgKKyAgICAgICAgaWYgKGZvcm1hdFdpZHRoID4gMCkgeworICAgICAgICAgICAgZm9ybWF0V2lkdGggKz0gcG9zaXRpdmVQcmVmaXgubGVuZ3RoKCkgKyBwb3NpdGl2ZVN1ZmZpeC5sZW5ndGgoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qUmV3cml0ZSB0aGUgZm9sbG93aW5nIDQgInNldCIgbWV0aG9kcworICAgICAgVXBwZXIgbGltaXQgb24gaW50ZWdlciBhbmQgZnJhY3Rpb24gZGlnaXRzIGZvciBhIEphdmEgZG91YmxlIAorICAgICAgW1JpY2hhcmQvR0NMXQorICAgICovCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgZGlnaXRzIGFsbG93ZWQgaW4gdGhlIGludGVnZXIgcG9ydGlvbiBvZiBhCisgICAgICogbnVtYmVyLiBUaGlzIG92ZXJyaWRlIGxpbWl0cyB0aGUgaW50ZWdlciBkaWdpdCBjb3VudCB0byAzMDkuCisgICAgICogQHNlZSBOdW1iZXJGb3JtYXQjc2V0TWF4aW11bUludGVnZXJEaWdpdHMKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRNYXhpbXVtSW50ZWdlckRpZ2l0cyhpbnQgbmV3VmFsdWUpIHsKKyAgICAgICAgc3VwZXIuc2V0TWF4aW11bUludGVnZXJEaWdpdHMoTWF0aC5taW4obmV3VmFsdWUsIERPVUJMRV9JTlRFR0VSX0RJR0lUUykpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIG1pbmltdW0gbnVtYmVyIG9mIGRpZ2l0cyBhbGxvd2VkIGluIHRoZSBpbnRlZ2VyIHBvcnRpb24gb2YgYQorICAgICAqIG51bWJlci4gVGhpcyBvdmVycmlkZSBsaW1pdHMgdGhlIGludGVnZXIgZGlnaXQgY291bnQgdG8gMzA5LgorICAgICAqIEBzZWUgTnVtYmVyRm9ybWF0I3NldE1pbmltdW1JbnRlZ2VyRGlnaXRzCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0TWluaW11bUludGVnZXJEaWdpdHMoaW50IG5ld1ZhbHVlKSB7CisgICAgICAgIHN1cGVyLnNldE1pbmltdW1JbnRlZ2VyRGlnaXRzKE1hdGgubWluKG5ld1ZhbHVlLCBET1VCTEVfSU5URUdFUl9ESUdJVFMpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSA8dHQ+Q3VycmVuY3k8L3R0PiBvYmplY3QgdXNlZCB0byBkaXNwbGF5IGN1cnJlbmN5CisgICAgICogYW1vdW50cy4gIFRoaXMgdGFrZXMgZWZmZWN0IGltbWVkaWF0ZWx5LCBpZiB0aGlzIGZvcm1hdCBpcyBhCisgICAgICogY3VycmVuY3kgZm9ybWF0LiAgSWYgdGhpcyBmb3JtYXQgaXMgbm90IGEgY3VycmVuY3kgZm9ybWF0LCB0aGVuCisgICAgICogdGhlIGN1cnJlbmN5IG9iamVjdCBpcyB1c2VkIGlmIGFuZCB3aGVuIHRoaXMgb2JqZWN0IGJlY29tZXMgYQorICAgICAqIGN1cnJlbmN5IGZvcm1hdCB0aHJvdWdoIHRoZSBhcHBsaWNhdGlvbiBvZiBhIG5ldyBwYXR0ZXJuLgorICAgICAqIEBwYXJhbSB0aGVDdXJyZW5jeSBuZXcgY3VycmVuY3kgb2JqZWN0IHRvIHVzZS4gIE11c3Qgbm90IGJlCisgICAgICogbnVsbC4KKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldEN1cnJlbmN5KEN1cnJlbmN5IHRoZUN1cnJlbmN5KSB7CisgICAgICAgIC8vIElmIHdlIGFyZSBhIGN1cnJlbmN5IGZvcm1hdCwgdGhlbiBtb2RpZnkgb3VyIGFmZml4ZXMgdG8KKyAgICAgICAgLy8gZW5jb2RlIHRoZSBjdXJyZW5jeSBzeW1ib2wgZm9yIHRoZSBnaXZlbiBjdXJyZW5jeSBpbiBvdXIKKyAgICAgICAgLy8gbG9jYWxlLCBhbmQgYWRqdXN0IHRoZSBkZWNpbWFsIGRpZ2l0cyBhbmQgcm91bmRpbmcgZm9yIHRoZQorICAgICAgICAvLyBnaXZlbiBjdXJyZW5jeS4KKworICAgICAgICBjdXJyZW5jeSA9IHRoZUN1cnJlbmN5OworCisgICAgICAgIGlmIChpc0N1cnJlbmN5Rm9ybWF0KSB7CisgICAgICAgICAgICBzZXRSb3VuZGluZ0luY3JlbWVudChjdXJyZW5jeS5nZXRSb3VuZGluZ0luY3JlbWVudCgpKTsKKworICAgICAgICAgICAgaW50IGQgPSBjdXJyZW5jeS5nZXREZWZhdWx0RnJhY3Rpb25EaWdpdHMoKTsKKyAgICAgICAgICAgIHNldE1pbmltdW1GcmFjdGlvbkRpZ2l0cyhkKTsKKyAgICAgICAgICAgIHNldE1heGltdW1GcmFjdGlvbkRpZ2l0cyhkKTsKKworICAgICAgICAgICAgZXhwYW5kQWZmaXhlcygpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgPHR0PkN1cnJlbmN5PC90dD4gb2JqZWN0IHVzZWQgdG8gZGlzcGxheSBjdXJyZW5jeQorICAgICAqIGFtb3VudHMuICBUaGlzIHdpbGwgYmUgbnVsbCBpZiBhIG9iamVjdCBpcyByZXN1cnJlY3RlZCB3aXRoIGEKKyAgICAgKiBjdXN0b20gRGVjaW1hbEZvcm1hdFN5bWJvbHMgb2JqZWN0LCBvciBpZiB0aGUgdXNlciBzZXRzIGEKKyAgICAgKiBjdXN0b20gRGVjaW1hbEZvcm1hdFN5bWJvbHMgb2JqZWN0LiAgQSBjdXN0b20KKyAgICAgKiBEZWNpbWFsRm9ybWF0U3ltYm9scyBvYmplY3QgaGFzIGN1cnJlbmN5IHN5bWJvbHMgdGhhdCBhcmUgbm90CisgICAgICogdGhlIHN0YW5kYXJkIG9uZXMgZm9yIGl0cyBsb2NhbGUuCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgQ3VycmVuY3kgZ2V0Q3VycmVuY3koKSB7CisgICAgICAgIHJldHVybiBjdXJyZW5jeTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgZGlnaXRzIGFsbG93ZWQgaW4gdGhlIGZyYWN0aW9uIHBvcnRpb24gb2YgYQorICAgICAqIG51bWJlci4gVGhpcyBvdmVycmlkZSBsaW1pdHMgdGhlIGZyYWN0aW9uIGRpZ2l0IGNvdW50IHRvIDM0MC4KKyAgICAgKiBAc2VlIE51bWJlckZvcm1hdCNzZXRNYXhpbXVtRnJhY3Rpb25EaWdpdHMKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRNYXhpbXVtRnJhY3Rpb25EaWdpdHMoaW50IG5ld1ZhbHVlKSB7CisgICAgICAgIHN1cGVyLnNldE1heGltdW1GcmFjdGlvbkRpZ2l0cyhNYXRoLm1pbihuZXdWYWx1ZSwgRE9VQkxFX0ZSQUNUSU9OX0RJR0lUUykpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIG1pbmltdW0gbnVtYmVyIG9mIGRpZ2l0cyBhbGxvd2VkIGluIHRoZSBmcmFjdGlvbiBwb3J0aW9uIG9mIGEKKyAgICAgKiBudW1iZXIuIFRoaXMgb3ZlcnJpZGUgbGltaXRzIHRoZSBmcmFjdGlvbiBkaWdpdCBjb3VudCB0byAzNDAuCisgICAgICogQHNlZSBOdW1iZXJGb3JtYXQjc2V0TWluaW11bUZyYWN0aW9uRGlnaXRzCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0TWluaW11bUZyYWN0aW9uRGlnaXRzKGludCBuZXdWYWx1ZSkgeworICAgICAgICBzdXBlci5zZXRNaW5pbXVtRnJhY3Rpb25EaWdpdHMoTWF0aC5taW4obmV3VmFsdWUsIERPVUJMRV9GUkFDVElPTl9ESUdJVFMpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBGaXJzdCwgcmVhZCB0aGUgZGVmYXVsdCBzZXJpYWxpemFibGUgZmllbGRzIGZyb20gdGhlIHN0cmVhbS4gIFRoZW4KKyAgICAgKiBpZiA8Y29kZT5zZXJpYWxWZXJzaW9uT25TdHJlYW08L2NvZGU+IGlzIGxlc3MgdGhhbiAxLCBpbmRpY2F0aW5nIHRoYXQKKyAgICAgKiB0aGUgc3RyZWFtIHdhcyB3cml0dGVuIGJ5IEpESyAxLjEsIGluaXRpYWxpemUgPGNvZGU+dXNlRXhwb25lbnRpYWxOb3RhdGlvbjwvY29kZT4KKyAgICAgKiB0byBmYWxzZSwgc2luY2UgaXQgd2FzIG5vdCBwcmVzZW50IGluIEpESyAxLjEuCisgICAgICogRmluYWxseSwgc2V0IHNlcmlhbFZlcnNpb25PblN0cmVhbSBiYWNrIHRvIHRoZSBtYXhpbXVtIGFsbG93ZWQgdmFsdWUgc28gdGhhdAorICAgICAqIGRlZmF1bHQgc2VyaWFsaXphdGlvbiB3aWxsIHdvcmsgcHJvcGVybHkgaWYgdGhpcyBvYmplY3QgaXMgc3RyZWFtZWQgb3V0IGFnYWluLgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCByZWFkT2JqZWN0KE9iamVjdElucHV0U3RyZWFtIHN0cmVhbSkKKyAgICAgICAgIHRocm93cyBJT0V4Y2VwdGlvbiwgQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbgorICAgIHsKKyAgICAgICAgc3RyZWFtLmRlZmF1bHRSZWFkT2JqZWN0KCk7CisgICAgICAgIC8qQnVnIDQxODU3NjEgdmFsaWRhdGUgZmllbGRzCisgICAgICAgICAgW1JpY2hhcmQvR0NMXQorICAgICAgICAqLworICAgICAgICAvLyBXZSBvbmx5IG5lZWQgdG8gY2hlY2sgdGhlIG1heGltdW0gY291bnRzIGJlY2F1c2UgTnVtYmVyRm9ybWF0CisgICAgICAgIC8vIC5yZWFkT2JqZWN0IGhhcyBhbHJlYWR5IGVuc3VyZWQgdGhhdCB0aGUgbWF4aW11bSBpcyBncmVhdGVyIHRoYW4gdGhlCisgICAgICAgIC8vIG1pbmltdW0gY291bnQuCisgICAgICAgIC8qQ29tbWVudGVkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgdmVyc2lvbiwgYW5kIHJlc2VydmVkIGZvciBmdXJ0aGVyIHVzZQorICAgICAgICBpZiAoZ2V0TWF4aW11bUludGVnZXJEaWdpdHMoKSA+IERPVUJMRV9JTlRFR0VSX0RJR0lUUyB8fAorICAgICAgICAgICAgZ2V0TWF4aW11bUZyYWN0aW9uRGlnaXRzKCkgPiBET1VCTEVfRlJBQ1RJT05fRElHSVRTKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9iamVjdEV4Y2VwdGlvbigiRGlnaXQgY291bnQgb3V0IG9mIHJhbmdlIik7CisgICAgICAgIH0qLworICAgICAgICAvKiBUcnVuY2F0ZSB0aGUgbWF4aW11bUludGVnZXJEaWdpdHMgdG8gRE9VQkxFX0lOVEVHRVJfRElHSVRTIGFuZCBtYXhpbXVtRnJhY3Rpb25EaWdpdHMKKyAgICAgICAgICogdG8gRE9VQkxFX0ZSQUNUSU9OX0RJR0lUUworICAgICAgICAgKi8KKyAgICAgICAgaWYgKGdldE1heGltdW1JbnRlZ2VyRGlnaXRzKCkgPiBET1VCTEVfSU5URUdFUl9ESUdJVFMpIHsKKyAgICAgICAgICAgICBzZXRNYXhpbXVtSW50ZWdlckRpZ2l0cyhET1VCTEVfSU5URUdFUl9ESUdJVFMpOworICAgICAgICB9CisgICAgICAgIGlmIChnZXRNYXhpbXVtRnJhY3Rpb25EaWdpdHMoKSA+IERPVUJMRV9GUkFDVElPTl9ESUdJVFMpIHsKKyAgICAgICAgICAgIHNldE1heGltdW1GcmFjdGlvbkRpZ2l0cyhET1VCTEVfRlJBQ1RJT05fRElHSVRTKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoc2VyaWFsVmVyc2lvbk9uU3RyZWFtIDwgMikgeworICAgICAgICAgICAgZXhwb25lbnRTaWduQWx3YXlzU2hvd24gPSBmYWxzZTsKKyAgICAgICAgICAgIHJvdW5kaW5nRG91YmxlID0gMC4wOworICAgICAgICAgICAgcm91bmRpbmdJbmNyZW1lbnQgPSBudWxsOworICAgICAgICAgICAgcm91bmRpbmdNb2RlID0gamF2YS5tYXRoLkJpZ0RlY2ltYWwuUk9VTkRfSEFMRl9FVkVOOworICAgICAgICAgICAgZm9ybWF0V2lkdGggPSAwOworICAgICAgICAgICAgcGFkID0gJyAnOworICAgICAgICAgICAgcGFkUG9zaXRpb24gPSBQQURfQkVGT1JFX1BSRUZJWDsKKyAgICAgICAgICAgIGlmIChzZXJpYWxWZXJzaW9uT25TdHJlYW0gPCAxKSB7CisgICAgICAgICAgICAgICAgLy8gRGlkbid0IGhhdmUgZXhwb25lbnRpYWwgZmllbGRzCisgICAgICAgICAgICAgICAgdXNlRXhwb25lbnRpYWxOb3RhdGlvbiA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChzZXJpYWxWZXJzaW9uT25TdHJlYW0gPCAzKSB7CisgICAgICAgICAgICAvLyBWZXJzaW9ucyBwcmlvciB0byAzIGRvIG5vdCBzdG9yZSBhIGN1cnJlbmN5IG9iamVjdC4KKyAgICAgICAgICAgIC8vIENyZWF0ZSBvbmUgdG8gbWF0Y2ggdGhlIERlY2ltYWxGb3JtYXRTeW1ib2xzIG9iamVjdC4KKyAgICAgICAgICAgIHNldEN1cnJlbmN5Rm9yU3ltYm9scygpOworICAgICAgICB9CisgICAgICAgIHNlcmlhbFZlcnNpb25PblN0cmVhbSA9IGN1cnJlbnRTZXJpYWxWZXJzaW9uOworICAgICAgICBkaWdpdExpc3QgPSBuZXcgRGlnaXRMaXN0KCk7CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gSU5TVEFOQ0UgVkFSSUFCTEVTCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBwcml2YXRlIHRyYW5zaWVudCBEaWdpdExpc3QgZGlnaXRMaXN0ID0gbmV3IERpZ2l0TGlzdCgpOworCisgICAgLyoqCisgICAgICogVGhlIHN5bWJvbCB1c2VkIGFzIGEgcHJlZml4IHdoZW4gZm9ybWF0dGluZyBwb3NpdGl2ZSBudW1iZXJzLCBlLmcuICIrIi4KKyAgICAgKgorICAgICAqIEBzZXJpYWwKKyAgICAgKiBAc2VlICNnZXRQb3NpdGl2ZVByZWZpeAorICAgICAqLworICAgIHByaXZhdGUgU3RyaW5nICBwb3NpdGl2ZVByZWZpeCA9ICIiOworCisgICAgLyoqCisgICAgICogVGhlIHN5bWJvbCB1c2VkIGFzIGEgc3VmZml4IHdoZW4gZm9ybWF0dGluZyBwb3NpdGl2ZSBudW1iZXJzLgorICAgICAqIFRoaXMgaXMgb2Z0ZW4gYW4gZW1wdHkgc3RyaW5nLgorICAgICAqCisgICAgICogQHNlcmlhbAorICAgICAqIEBzZWUgI2dldFBvc2l0aXZlU3VmZml4CisgICAgICovCisgICAgcHJpdmF0ZSBTdHJpbmcgIHBvc2l0aXZlU3VmZml4ID0gIiI7CisKKyAgICAvKioKKyAgICAgKiBUaGUgc3ltYm9sIHVzZWQgYXMgYSBwcmVmaXggd2hlbiBmb3JtYXR0aW5nIG5lZ2F0aXZlIG51bWJlcnMsIGUuZy4gIi0iLgorICAgICAqCisgICAgICogQHNlcmlhbAorICAgICAqIEBzZWUgI2dldE5lZ2F0aXZlUHJlZml4CisgICAgICovCisgICAgcHJpdmF0ZSBTdHJpbmcgIG5lZ2F0aXZlUHJlZml4ID0gIi0iOworCisgICAgLyoqCisgICAgICogVGhlIHN5bWJvbCB1c2VkIGFzIGEgc3VmZml4IHdoZW4gZm9ybWF0dGluZyBuZWdhdGl2ZSBudW1iZXJzLgorICAgICAqIFRoaXMgaXMgb2Z0ZW4gYW4gZW1wdHkgc3RyaW5nLgorICAgICAqCisgICAgICogQHNlcmlhbAorICAgICAqIEBzZWUgI2dldE5lZ2F0aXZlU3VmZml4CisgICAgICovCisgICAgcHJpdmF0ZSBTdHJpbmcgIG5lZ2F0aXZlU3VmZml4ID0gIiI7CisgICAgCisgICAgLyoqCisgICAgICogVGhlIHByZWZpeCBwYXR0ZXJuIGZvciBub24tbmVnYXRpdmUgbnVtYmVycy4gIFRoaXMgdmFyaWFibGUgY29ycmVzcG9uZHMKKyAgICAgKiB0byA8Y29kZT5wb3NpdGl2ZVByZWZpeDwvY29kZT4uCisgICAgICoKKyAgICAgKiA8cD5UaGlzIHBhdHRlcm4gaXMgZXhwYW5kZWQgYnkgdGhlIG1ldGhvZCA8Y29kZT5leHBhbmRBZmZpeCgpPC9jb2RlPiB0bworICAgICAqIDxjb2RlPnBvc2l0aXZlUHJlZml4PC9jb2RlPiB0byB1cGRhdGUgdGhlIGxhdHRlciB0byByZWZsZWN0IGNoYW5nZXMgaW4KKyAgICAgKiA8Y29kZT5zeW1ib2xzPC9jb2RlPi4gIElmIHRoaXMgdmFyaWFibGUgaXMgPGNvZGU+bnVsbDwvY29kZT4gdGhlbgorICAgICAqIDxjb2RlPnBvc2l0aXZlUHJlZml4PC9jb2RlPiBpcyB0YWtlbiBhcyBhIGxpdGVyYWwgdmFsdWUgdGhhdCBkb2VzIG5vdAorICAgICAqIGNoYW5nZSB3aGVuIDxjb2RlPnN5bWJvbHM8L2NvZGU+IGNoYW5nZXMuICBUaGlzIHZhcmlhYmxlIGlzIGFsd2F5cworICAgICAqIDxjb2RlPm51bGw8L2NvZGU+IGZvciA8Y29kZT5EZWNpbWFsRm9ybWF0PC9jb2RlPiBvYmplY3RzIG9sZGVyIHRoYW4KKyAgICAgKiBzdHJlYW0gdmVyc2lvbiAyIHJlc3RvcmVkIGZyb20gc3RyZWFtLgorICAgICAqCisgICAgICogQHNlcmlhbAorICAgICAqLworICAgIC8vW1JpY2hhcmQvR0NMXQorICAgIHByaXZhdGUgU3RyaW5nIHBvc1ByZWZpeFBhdHRlcm47CisKKyAgICAvKioKKyAgICAgKiBUaGUgc3VmZml4IHBhdHRlcm4gZm9yIG5vbi1uZWdhdGl2ZSBudW1iZXJzLiAgVGhpcyB2YXJpYWJsZSBjb3JyZXNwb25kcworICAgICAqIHRvIDxjb2RlPnBvc2l0aXZlU3VmZml4PC9jb2RlPi4gIFRoaXMgdmFyaWFibGUgaXMgYW5hbG9nb3VzIHRvCisgICAgICogPGNvZGU+cG9zUHJlZml4UGF0dGVybjwvY29kZT47IHNlZSB0aGF0IHZhcmlhYmxlIGZvciBmdXJ0aGVyCisgICAgICogZG9jdW1lbnRhdGlvbi4KKyAgICAgKgorICAgICAqIEBzZXJpYWwKKyAgICAgKi8KKyAgICAvL1tSaWNoYXJkL0dDTF0KKyAgICBwcml2YXRlIFN0cmluZyBwb3NTdWZmaXhQYXR0ZXJuOworCisgICAgLyoqCisgICAgICogVGhlIHByZWZpeCBwYXR0ZXJuIGZvciBuZWdhdGl2ZSBudW1iZXJzLiAgVGhpcyB2YXJpYWJsZSBjb3JyZXNwb25kcworICAgICAqIHRvIDxjb2RlPm5lZ2F0aXZlUHJlZml4PC9jb2RlPi4gIFRoaXMgdmFyaWFibGUgaXMgYW5hbG9nb3VzIHRvCisgICAgICogPGNvZGU+cG9zUHJlZml4UGF0dGVybjwvY29kZT47IHNlZSB0aGF0IHZhcmlhYmxlIGZvciBmdXJ0aGVyCisgICAgICogZG9jdW1lbnRhdGlvbi4KKyAgICAgKgorICAgICAqIEBzZXJpYWwKKyAgICAgKi8KKyAgICAvL1tSaWNoYXJkL0dDTF0KKyAgICBwcml2YXRlIFN0cmluZyBuZWdQcmVmaXhQYXR0ZXJuOworCisgICAgLyoqCisgICAgICogVGhlIHN1ZmZpeCBwYXR0ZXJuIGZvciBuZWdhdGl2ZSBudW1iZXJzLiAgVGhpcyB2YXJpYWJsZSBjb3JyZXNwb25kcworICAgICAqIHRvIDxjb2RlPm5lZ2F0aXZlU3VmZml4PC9jb2RlPi4gIFRoaXMgdmFyaWFibGUgaXMgYW5hbG9nb3VzIHRvCisgICAgICogPGNvZGU+cG9zUHJlZml4UGF0dGVybjwvY29kZT47IHNlZSB0aGF0IHZhcmlhYmxlIGZvciBmdXJ0aGVyCisgICAgICogZG9jdW1lbnRhdGlvbi4KKyAgICAgKgorICAgICAqIEBzZXJpYWwKKyAgICAgKi8KKyAgICAvL1tSaWNoYXJkL0dDTF0KKyAgICBwcml2YXRlIFN0cmluZyBuZWdTdWZmaXhQYXR0ZXJuOworICAgIAorICAgIC8qKgorICAgICAqIFRoZSBtdWx0aXBsaWVyIGZvciB1c2UgaW4gcGVyY2VudCwgcGVybWlsbCwgZXRjLgorICAgICAqCisgICAgICogQHNlcmlhbAorICAgICAqIEBzZWUgI2dldE11bHRpcGxpZXIKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCAgICAgbXVsdGlwbGllciA9IDE7CisgICAgCisgICAgLyoqCisgICAgICogVGhlIG51bWJlciBvZiBkaWdpdHMgYmV0d2VlbiBncm91cGluZyBzZXBhcmF0b3JzIGluIHRoZSBpbnRlZ2VyCisgICAgICogcG9ydGlvbiBvZiBhIG51bWJlci4gIE11c3QgYmUgZ3JlYXRlciB0aGFuIDAgaWYKKyAgICAgKiA8Y29kZT5OdW1iZXJGb3JtYXQuZ3JvdXBpbmdVc2VkPC9jb2RlPiBpcyB0cnVlLgorICAgICAqCisgICAgICogQHNlcmlhbAorICAgICAqIEBzZWUgI2dldEdyb3VwaW5nU2l6ZQorICAgICAqIEBzZWUgTnVtYmVyRm9ybWF0I2lzR3JvdXBpbmdVc2VkCisgICAgICovCisgICAgcHJpdmF0ZSBieXRlICAgIGdyb3VwaW5nU2l6ZSA9IDM7ICAvLyBpbnZhcmlhbnQsID4gMCBpZiB1c2VUaG91c2FuZHMKKworICAgIC8qKgorICAgICAqIFRoZSBzZWNvbmRhcnkgZ3JvdXBpbmcgc2l6ZS4gIFRoaXMgaXMgb25seSB1c2VkIGZvciBIaW5kaQorICAgICAqIG51bWVyYWxzLCB3aGljaCB1c2UgYSBwcmltYXJ5IGdyb3VwaW5nIG9mIDMgYW5kIGEgc2Vjb25kYXJ5CisgICAgICogZ3JvdXBpbmcgb2YgMiwgZS5nLiwgIjEyLDM0LDU2NyIuICBJZiB0aGlzIHZhbHVlIGlzIGxlc3MgdGhhbgorICAgICAqIDEsIHRoZW4gc2Vjb25kYXJ5IGdyb3VwaW5nIGlzIGVxdWFsIHRvIHRoZSBwcmltYXJ5IGdyb3VwaW5nLgorICAgICAqIFtORVddCisgICAgICovCisgICAgcHJpdmF0ZSBieXRlICAgIGdyb3VwaW5nU2l6ZTIgPSAwOworICAgIAorICAgIC8qKgorICAgICAqIElmIHRydWUsIGZvcmNlcyB0aGUgZGVjaW1hbCBzZXBhcmF0b3IgdG8gYWx3YXlzIGFwcGVhciBpbiBhIGZvcm1hdHRlZAorICAgICAqIG51bWJlciwgZXZlbiBpZiB0aGUgZnJhY3Rpb25hbCBwYXJ0IG9mIHRoZSBudW1iZXIgaXMgemVyby4KKyAgICAgKgorICAgICAqIEBzZXJpYWwKKyAgICAgKiBAc2VlICNpc0RlY2ltYWxTZXBhcmF0b3JBbHdheXNTaG93bgorICAgICAqLworICAgIHByaXZhdGUgYm9vbGVhbiBkZWNpbWFsU2VwYXJhdG9yQWx3YXlzU2hvd24gPSBmYWxzZTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBUcnVlIGlmIHRoaXMgb2JqZWN0IHJlcHJlc2VudHMgYSBjdXJyZW5jeSBmb3JtYXQuICBUaGlzIGRldGVybWluZXMKKyAgICAgKiB3aGV0aGVyIHRoZSBtb25ldGFyeSBkZWNpbWFsIHNlcGFyYXRvciBpcyB1c2VkIGluc3RlYWQgb2YgdGhlIG5vcm1hbCBvbmUuCisgICAgICovCisgICAgcHJpdmF0ZSB0cmFuc2llbnQgYm9vbGVhbiBpc0N1cnJlbmN5Rm9ybWF0ID0gZmFsc2U7CisgICAgCisgICAgLyoqCisgICAgICogVGhlIDxjb2RlPkRlY2ltYWxGb3JtYXRTeW1ib2xzPC9jb2RlPiBvYmplY3QgdXNlZCBieSB0aGlzIGZvcm1hdC4KKyAgICAgKiBJdCBjb250YWlucyB0aGUgc3ltYm9scyB1c2VkIHRvIGZvcm1hdCBudW1iZXJzLCBlLmcuIHRoZSBncm91cGluZyBzZXBhcmF0b3IsCisgICAgICogZGVjaW1hbCBzZXBhcmF0b3IsIGFuZCBzbyBvbi4KKyAgICAgKgorICAgICAqIEBzZXJpYWwKKyAgICAgKiBAc2VlICNzZXREZWNpbWFsRm9ybWF0U3ltYm9scworICAgICAqIEBzZWUgRGVjaW1hbEZvcm1hdFN5bWJvbHMKKyAgICAgKi8KKyAgICBwcml2YXRlIERlY2ltYWxGb3JtYXRTeW1ib2xzIHN5bWJvbHMgPSBudWxsOyAvLyBMSVUgbmV3IERlY2ltYWxGb3JtYXRTeW1ib2xzKCk7CisKKyAgICAvKioKKyAgICAgKiBUcnVlIHRvIGZvcmNlIHRoZSB1c2Ugb2YgZXhwb25lbnRpYWwgKGkuZS4gc2NpZW50aWZpYykgbm90YXRpb24gd2hlbiBmb3JtYXR0aW5nCisgICAgICogbnVtYmVycy4KKyAgICAgKiA8cD4KKyAgICAgKiBOb3RlIHRoYXQgdGhlIEpESyAxLjIgcHVibGljIEFQSSBwcm92aWRlcyBubyB3YXkgdG8gc2V0IHRoaXMgZmllbGQsCisgICAgICogZXZlbiB0aG91Z2ggaXQgaXMgc3VwcG9ydGVkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiBhbmQgdGhlIHN0cmVhbSBmb3JtYXQuCisgICAgICogVGhlIGludGVudCBpcyB0aGF0IHRoaXMgd2lsbCBiZSBhZGRlZCB0byB0aGUgQVBJIGluIHRoZSBmdXR1cmUuCisgICAgICoKKyAgICAgKiBAc2VyaWFsCisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIHVzZUV4cG9uZW50aWFsTm90YXRpb247ICAvLyBOZXdseSBwZXJzaXN0ZW50IGluIEpESyAxLjIKKworICAgIC8qKgorICAgICAqIFRoZSBtaW5pbXVtIG51bWJlciBvZiBkaWdpdHMgdXNlZCB0byBkaXNwbGF5IHRoZSBleHBvbmVudCB3aGVuIGEgbnVtYmVyIGlzCisgICAgICogZm9ybWF0dGVkIGluIGV4cG9uZW50aWFsIG5vdGF0aW9uLiAgVGhpcyBmaWVsZCBpcyBpZ25vcmVkIGlmCisgICAgICogPGNvZGU+dXNlRXhwb25lbnRpYWxOb3RhdGlvbjwvY29kZT4gaXMgbm90IHRydWUuCisgICAgICogPHA+CisgICAgICogTm90ZSB0aGF0IHRoZSBKREsgMS4yIHB1YmxpYyBBUEkgcHJvdmlkZXMgbm8gd2F5IHRvIHNldCB0aGlzIGZpZWxkLAorICAgICAqIGV2ZW4gdGhvdWdoIGl0IGlzIHN1cHBvcnRlZCBieSB0aGUgaW1wbGVtZW50YXRpb24gYW5kIHRoZSBzdHJlYW0gZm9ybWF0LgorICAgICAqIFRoZSBpbnRlbnQgaXMgdGhhdCB0aGlzIHdpbGwgYmUgYWRkZWQgdG8gdGhlIEFQSSBpbiB0aGUgZnV0dXJlLgorICAgICAqCisgICAgICogQHNlcmlhbAorICAgICAqLworICAgIHByaXZhdGUgYnl0ZSAgICBtaW5FeHBvbmVudERpZ2l0czsgICAgICAgLy8gTmV3bHkgcGVyc2lzdGVudCBpbiBKREsgMS4yCisKKyAgICAvKioKKyAgICAgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+CisgICAgICogSWYgdHJ1ZSwgdGhlIGV4cG9uZW50IGlzIGFsd2F5cyBwcmVmaXhlZCB3aXRoIGVpdGhlciB0aGUgcGx1cworICAgICAqIHNpZ24gb3IgdGhlIG1pbnVzIHNpZ24uICBPdGhlcndpc2UsIG9ubHkgbmVnYXRpdmUgZXhwb25lbnRzIGFyZQorICAgICAqIHByZWZpeGVkIHdpdGggdGhlIG1pbnVzIHNpZ24uICBUaGlzIGhhcyBubyBlZmZlY3QgdW5sZXNzCisgICAgICogPGNvZGU+dXNlRXhwb25lbnRpYWxOb3RhdGlvbjwvY29kZT4gaXMgdHJ1ZS4KKyAgICAgKiBAc2VyaWFsCisgICAgICogQHNpbmNlIEFscGhhV29ya3MgTnVtYmVyRm9ybWF0CisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIGV4cG9uZW50U2lnbkFsd2F5c1Nob3duID0gZmFsc2U7CisKKyAgICAvKioKKyAgICAgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+CisgICAgICogVGhlIHZhbHVlIHRvIHdoaWNoIG51bWJlcnMgYXJlIHJvdW5kZWQgZHVyaW5nIGZvcm1hdHRpbmcuICBGb3IgZXhhbXBsZSwKKyAgICAgKiBpZiB0aGUgcm91bmRpbmcgaW5jcmVtZW50IGlzIDAuMDUsIHRoZW4gMTMuMzcxIHdvdWxkIGJlIGZvcm1hdHRlZCBhcworICAgICAqIDEzLjM1MCwgYXNzdW1pbmcgMyBmcmFjdGlvbiBkaWdpdHMuICBIYXMgdGhlIHZhbHVlIDxjb2RlPm51bGw8L2NvZGU+IGlmCisgICAgICogcm91bmRpbmcgaXMgbm90IGluIGVmZmVjdCwgb3IgYSBwb3NpdGl2ZSB2YWx1ZSBpZiByb3VuZGluZyBpcyBpbiBlZmZlY3QuCisgICAgICogRGVmYXVsdCB2YWx1ZSA8Y29kZT5udWxsPC9jb2RlPi4KKyAgICAgKiBAc2VyaWFsCisgICAgICogQHNpbmNlIEFscGhhV29ya3MgTnVtYmVyRm9ybWF0CisgICAgICovCisgICAgcHJpdmF0ZSBqYXZhLm1hdGguQmlnRGVjaW1hbCByb3VuZGluZ0luY3JlbWVudCA9IG51bGw7CisKKyAgICAvKioKKyAgICAgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+CisgICAgICogVGhlIHJvdW5kaW5nIGluY3JlbWVudCBhcyBhIGRvdWJsZS4gIElmIHRoaXMgdmFsdWUgaXMgPD0gMCwgdGhlbiBubworICAgICAqIHJvdW5kaW5nIGlzIGRvbmUuICBUaGlzIHZhbHVlIGlzCisgICAgICogPGNvZGU+cm91bmRpbmdJbmNyZW1lbnQuZG91YmxlVmFsdWUoKTwvY29kZT4uICBEZWZhdWx0IHZhbHVlIDAuMC4KKyAgICAgKi8KKyAgICBwcml2YXRlIHRyYW5zaWVudCBkb3VibGUgcm91bmRpbmdEb3VibGUgPSAwLjA7CisKKyAgICAvKioKKyAgICAgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+CisgICAgICogVGhlIHJvdW5kaW5nIG1vZGUuICBUaGlzIHZhbHVlIGNvbnRyb2xzIGFueSByb3VuZGluZyBvcGVyYXRpb25zIHdoaWNoCisgICAgICogb2NjdXIgd2hlbiBhcHBseWluZyBhIHJvdW5kaW5nIGluY3JlbWVudCBvciB3aGVuIHJlZHVjaW5nIHRoZSBudW1iZXIgb2YKKyAgICAgKiBmcmFjdGlvbiBkaWdpdHMgdG8gc2F0aXNmeSBhIG1heGltdW0gZnJhY3Rpb24gZGlnaXRzIGxpbWl0LiAgVGhlIHZhbHVlCisgICAgICogbWF5IGFzc3VtZSBhbnkgb2YgdGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHJvdW5kaW5nIG1vZGUgdmFsdWVzLgorICAgICAqIERlZmF1bHQgdmFsdWUgPGNvZGU+QmlnRGVjaW1hbC5ST1VORF9IQUxGX0VWRU48L2NvZGU+LgorICAgICAqIEBzZXJpYWwKKyAgICAgKiBAc2luY2UgQWxwaGFXb3JrcyBOdW1iZXJGb3JtYXQKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCByb3VuZGluZ01vZGUgPSBqYXZhLm1hdGguQmlnRGVjaW1hbC5ST1VORF9IQUxGX0VWRU47CisKKyAgICAvKioKKyAgICAgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+CisgICAgICogVGhlIHBhZGRlZCBmb3JtYXQgd2lkdGgsIG9yIHplcm8gaWYgdGhlcmUgaXMgbm8gcGFkZGluZy4gIE11c3QKKyAgICAgKiBiZSA+PSAwLiAgRGVmYXVsdCB2YWx1ZSB6ZXJvLgorICAgICAqIEBzZXJpYWwKKyAgICAgKiBAc2luY2UgQWxwaGFXb3JrcyBOdW1iZXJGb3JtYXQKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBmb3JtYXRXaWR0aCA9IDA7CisKKyAgICAvKioKKyAgICAgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+CisgICAgICogVGhlIGNoYXJhY3RlciB1c2VkIHRvIHBhZCB0aGUgcmVzdWx0IG9mIGZvcm1hdCB0bworICAgICAqIDxjb2RlPmZvcm1hdFdpZHRoPC9jb2RlPiwgaWYgcGFkZGluZyBpcyBpbiBlZmZlY3QuICBEZWZhdWx0IHZhbHVlICcgJy4KKyAgICAgKiBAc2VyaWFsCisgICAgICogQHNpbmNlIEFscGhhV29ya3MgTnVtYmVyRm9ybWF0CisgICAgICovCisgICAgcHJpdmF0ZSBjaGFyIHBhZCA9ICcgJzsKKworICAgIC8qKgorICAgICAqIDxzdHJvbmc+PGZvbnQgZmFjZT1oZWx2ZXRpY2EgY29sb3I9cmVkPk5FVzwvZm9udD48L3N0cm9uZz4KKyAgICAgKiBUaGUgcG9zaXRpb24gaW4gdGhlIHN0cmluZyBhdCB3aGljaCB0aGUgPGNvZGU+cGFkPC9jb2RlPiBjaGFyYWN0ZXIKKyAgICAgKiB3aWxsIGJlIGluc2VydGVkLCBpZiBwYWRkaW5nIGlzIGluIGVmZmVjdC4gIE11c3QgaGF2ZSBhIHZhbHVlIGZyb20KKyAgICAgKiA8Y29kZT5QQURfQkVGT1JFX1BSRUZJWDwvY29kZT4gdG8gPGNvZGU+UEFEX0FGVEVSX1NVRkZJWDwvY29kZT4uCisgICAgICogRGVmYXVsdCB2YWx1ZSA8Y29kZT5QQURfQkVGT1JFX1BSRUZJWDwvY29kZT4uCisgICAgICogQHNlcmlhbAorICAgICAqIEBzaW5jZSBBbHBoYVdvcmtzIE51bWJlckZvcm1hdAorICAgICAqLworICAgIHByaXZhdGUgaW50IHBhZFBvc2l0aW9uID0gUEFEX0JFRk9SRV9QUkVGSVg7CisKKyAgICAvKioKKyAgICAgKiBDdXJyZW5jeSBvYmplY3QgdXNlZCB0byBmb3JtYXQgY3VycmVuY2llcy4gIE9ubHkgdXNlZCBpZgorICAgICAqIDx0dD5pc0N1cnJlbmN5Rm9ybWF0PC90dD4gaXMgdHJ1ZS4gIEluIHNvbWUgY2FzZXMgdGhpcyB3aWxsIGJlCisgICAgICogbnVsbDogSWYgYSBwcmUtMi4yIG9iamVjdCBpcyByZXN1cnJlY3RlZCB3aXRoIGEgY3VzdG9tCisgICAgICogRGVjaW1hbEZvcm1hdFN5bWJvbHMgb2JqZWN0LCBvciBpZiB0aGUgdXNlciBzZXRzIGEgY3VzdG9tIERGUworICAgICAqIG9iamVjdC4gIEEgY3VzdG9tIERGUyBvYmplY3QgaGFzIGN1cnJlbmN5IHN5bWJvbHMgdGhhdCBhcmUgbm90CisgICAgICogdGhlIHN0YW5kYXJkIG9uZXMgZm9yIGl0cyBsb2NhbGUuCisgICAgICogQHNpbmNlIElDVSAyLjIKKyAgICAgKi8KKyAgICBwcml2YXRlIEN1cnJlbmN5IGN1cnJlbmN5OworCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBzdGF0aWMgZmluYWwgaW50IGN1cnJlbnRTZXJpYWxWZXJzaW9uID0gMzsKKworICAgIC8qKgorICAgICAqIFRoZSBpbnRlcm5hbCBzZXJpYWwgdmVyc2lvbiB3aGljaCBzYXlzIHdoaWNoIHZlcnNpb24gd2FzIHdyaXR0ZW4KKyAgICAgKiBQb3NzaWJsZSB2YWx1ZXMgYXJlOgorICAgICAqIDx1bD4KKyAgICAgKiA8bGk+PGI+MDwvYj4gKGRlZmF1bHQpOiB2ZXJzaW9ucyBiZWZvcmUgSkRLIDEuMgorICAgICAqIDxsaT48Yj4xPC9iPjogdmVyc2lvbiBmcm9tIEpESyAxLjIgYW5kIGxhdGVyLCB3aGljaCBpbmNsdWRlcyB0aGUgdHdvIG5ldyBmaWVsZHMKKyAgICAgKiAgICAgIDxjb2RlPnVzZUV4cG9uZW50aWFsTm90YXRpb248L2NvZGU+IGFuZCA8Y29kZT5taW5FeHBvbmVudERpZ2l0czwvY29kZT4uCisgICAgICogPGxpPjxiPjI8L2I+OiB2ZXJzaW9uIG9uIEFscGhhV29ya3MsIHdoaWNoIGFkZHMgcm91bmRpbmdNb2RlLCBmb3JtYXRXaWR0aCwKKyAgICAgKiAgICAgIHBhZCwgcGFkUG9zaXRpb24sIGV4cG9uZW50U2lnbkFsd2F5c1Nob3duLCByb3VuZGluZ0luY3JlbWVudC4KKyAgICAgKiA8bGk+PGI+MzwvYj46IElDVSAyLjIuICBBZGRzIGN1cnJlbmN5IG9iamVjdC4KKyAgICAgKiA8L3VsPgorICAgICAqIEBzZXJpYWwgKi8KKyAgICBwcml2YXRlIGludCBzZXJpYWxWZXJzaW9uT25TdHJlYW0gPSBjdXJyZW50U2VyaWFsVmVyc2lvbjsKKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIENPTlNUQU5UUworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICAgICAqIENvbnN0YW50IGZvciA8Y29kZT5nZXRQYWRQb3NpdGlvbigpPC9jb2RlPiBhbmQKKyAgICAgKiA8Y29kZT5zZXRQYWRQb3NpdGlvbigpPC9jb2RlPiBzcGVjaWZ5aW5nIHBhZCBjaGFyYWN0ZXJzIGluc2VydGVkIGJlZm9yZQorICAgICAqIHRoZSBwcmVmaXguCisgICAgICogQHNlZSAjc2V0UGFkUG9zaXRpb24KKyAgICAgKiBAc2VlICNnZXRQYWRQb3NpdGlvbgorICAgICAqIEBzZWUgI1BBRF9BRlRFUl9QUkVGSVgKKyAgICAgKiBAc2VlICNQQURfQkVGT1JFX1NVRkZJWAorICAgICAqIEBzZWUgI1BBRF9BRlRFUl9TVUZGSVgKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBQQURfQkVGT1JFX1BSRUZJWCA9IDA7CisKKyAgICAvKioKKyAgICAgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+CisgICAgICogQ29uc3RhbnQgZm9yIDxjb2RlPmdldFBhZFBvc2l0aW9uKCk8L2NvZGU+IGFuZAorICAgICAqIDxjb2RlPnNldFBhZFBvc2l0aW9uKCk8L2NvZGU+IHNwZWNpZnlpbmcgcGFkIGNoYXJhY3RlcnMgaW5zZXJ0ZWQgYWZ0ZXIKKyAgICAgKiB0aGUgcHJlZml4LgorICAgICAqIEBzZWUgI3NldFBhZFBvc2l0aW9uCisgICAgICogQHNlZSAjZ2V0UGFkUG9zaXRpb24KKyAgICAgKiBAc2VlICNQQURfQkVGT1JFX1BSRUZJWAorICAgICAqIEBzZWUgI1BBRF9CRUZPUkVfU1VGRklYCisgICAgICogQHNlZSAjUEFEX0FGVEVSX1NVRkZJWAorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBBRF9BRlRFUl9QUkVGSVggID0gMTsKKworICAgIC8qKgorICAgICAqIDxzdHJvbmc+PGZvbnQgZmFjZT1oZWx2ZXRpY2EgY29sb3I9cmVkPk5FVzwvZm9udD48L3N0cm9uZz4KKyAgICAgKiBDb25zdGFudCBmb3IgPGNvZGU+Z2V0UGFkUG9zaXRpb24oKTwvY29kZT4gYW5kCisgICAgICogPGNvZGU+c2V0UGFkUG9zaXRpb24oKTwvY29kZT4gc3BlY2lmeWluZyBwYWQgY2hhcmFjdGVycyBpbnNlcnRlZCBiZWZvcmUKKyAgICAgKiB0aGUgc3VmZml4LgorICAgICAqIEBzZWUgI3NldFBhZFBvc2l0aW9uCisgICAgICogQHNlZSAjZ2V0UGFkUG9zaXRpb24KKyAgICAgKiBAc2VlICNQQURfQkVGT1JFX1BSRUZJWAorICAgICAqIEBzZWUgI1BBRF9BRlRFUl9QUkVGSVgKKyAgICAgKiBAc2VlICNQQURfQUZURVJfU1VGRklYCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUEFEX0JFRk9SRV9TVUZGSVggPSAyOworCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICAgICAqIENvbnN0YW50IGZvciA8Y29kZT5nZXRQYWRQb3NpdGlvbigpPC9jb2RlPiBhbmQKKyAgICAgKiA8Y29kZT5zZXRQYWRQb3NpdGlvbigpPC9jb2RlPiBzcGVjaWZ5aW5nIHBhZCBjaGFyYWN0ZXJzIGluc2VydGVkIGFmdGVyCisgICAgICogdGhlIHN1ZmZpeC4KKyAgICAgKiBAc2VlICNzZXRQYWRQb3NpdGlvbgorICAgICAqIEBzZWUgI2dldFBhZFBvc2l0aW9uCisgICAgICogQHNlZSAjUEFEX0JFRk9SRV9QUkVGSVgKKyAgICAgKiBAc2VlICNQQURfQUZURVJfUFJFRklYCisgICAgICogQHNlZSAjUEFEX0JFRk9SRV9TVUZGSVgKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBQQURfQUZURVJfU1VGRklYICA9IDM7CisKKyAgICAvLyBDb25zdGFudHMgZm9yIGNoYXJhY3RlcnMgdXNlZCBpbiBwcm9ncmFtbWF0aWMgKHVubG9jYWxpemVkKSBwYXR0ZXJucy4KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjaGFyICAgICAgIFBBVFRFUk5fWkVST19ESUdJVCAgICAgICAgID0gJzAnOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgICAgICAgUEFUVEVSTl9HUk9VUElOR19TRVBBUkFUT1IgPSAnLCc7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciAgICAgICBQQVRURVJOX0RFQ0lNQUxfU0VQQVJBVE9SICA9ICcuJzsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjaGFyICAgICAgIFBBVFRFUk5fRElHSVQgICAgICAgICAgICAgID0gJyMnOworICAgICAgICAgICAgc3RhdGljIGZpbmFsIFN0cmluZyAgICAgUEFUVEVSTl9FWFBPTkVOVCAgICAgICAgICAgPSAiRSI7IC8vIFtORVddCisgICAgICAgICAgICBzdGF0aWMgZmluYWwgY2hhciAgICAgICBQQVRURVJOX1BMVVNfU0lHTiAgICAgICAgICA9ICcrJzsgLy8gW05FV10KKworICAgIC8vIEFmZml4CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciAgICAgICBQQVRURVJOX1BFUl9NSUxMRSAgICAgICAgICA9ICdcdTIwMzAnOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgICAgICAgUEFUVEVSTl9QRVJDRU5UICAgICAgICAgICAgPSAnJSc7CisgICAgICAgICAgICBzdGF0aWMgZmluYWwgY2hhciAgICAgICBQQVRURVJOX1BBRF9FU0NBUEUgICAgICAgICA9ICcqJzsgLy8gW05FV10KKyAgICAvKkJ1ZyA0MjEyMDcyCisgICAgICBUbyBtZWV0IHRoZSBuZWVkIG9mIGV4cGFuZEFmZml4KFN0cmluZywgU3Rpcm5nQnVmZmVyKQorICAgICAgW1JpY2hhcmQvR0NMXQorICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciAgICAgICBQQVRURVJOX01JTlVTICAgICAgICAgICAgICA9ICctJzsgLy9bUmljaGFyZC9HQ0xdCisKKyAgICAvLyBPdGhlciAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjaGFyICAgICAgIFBBVFRFUk5fU0VQQVJBVE9SICAgICAgICAgID0gJzsnOworCisgICAgLy8gUGFkIGVzY2FwZSBpcyBwYWNrYWdlIHByaXZhdGUgdG8gYWxsb3cgYWNjZXNzIGJ5IERlY2ltYWxGb3JtYXRTeW1ib2xzLgorICAgIC8vIEFsc28gcGx1cyBzaWduLiAgQWxzbyBleHBvbmVudC4KKworICAgIC8qKgorICAgICAqIFRoZSBDVVJSRU5DWV9TSUdOIGlzIHRoZSBzdGFuZGFyZCBVbmljb2RlIHN5bWJvbCBmb3IgY3VycmVuY3kuICBJdAorICAgICAqIGlzIHVzZWQgaW4gcGF0dGVybnMgYW5kIHN1YnN0aXR1ZWQgd2l0aCBlaXRoZXIgdGhlIGN1cnJlbmN5IHN5bWJvbCwKKyAgICAgKiBvciBpZiBpdCBpcyBkb3VibGVkLCB3aXRoIHRoZSBpbnRlcm5hdGlvbmFsIGN1cnJlbmN5IHN5bWJvbC4gIElmIHRoZQorICAgICAqIENVUlJFTkNZX1NJR04gaXMgc2VlbiBpbiBhIHBhdHRlcm4sIHRoZW4gdGhlIGRlY2ltYWwgc2VwYXJhdG9yIGlzCisgICAgICogcmVwbGFjZWQgd2l0aCB0aGUgbW9uZXRhcnkgZGVjaW1hbCBzZXBhcmF0b3IuCisgICAgICoKKyAgICAgKiBUaGUgQ1VSUkVOQ1lfU0lHTiBpcyBub3QgbG9jYWxpemVkLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgICAgICAgQ1VSUkVOQ1lfU0lHTiA9ICdcdTAwQTQnOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciAgICAgICBRVU9URSA9ICdcJyc7CisgICAgCisgICAgLyogVXBwZXIgbGltaXQgb24gaW50ZWdlciBhbmQgZnJhY3Rpb24gZGlnaXRzIGZvciBhIEphdmEgZG91YmxlCisgICAgICAgW1JpY2hhcmQvR0NMXQorICAgICovCisgICAgc3RhdGljIGZpbmFsIGludCBET1VCTEVfSU5URUdFUl9ESUdJVFMgID0gMzA5OworICAgIHN0YXRpYyBmaW5hbCBpbnQgRE9VQkxFX0ZSQUNUSU9OX0RJR0lUUyA9IDM0MDsKKyAgICAKKyAgICAvLyBQcm9jbGFpbSBKREsgMS4xIHNlcmlhbCBjb21wYXRpYmlsaXR5LgorICAgIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSA4NjQ0MTMzNzY1NTE0NjUwMThMOworCisgICAgLyoqCisgICAgICogQ2FjaGUgdG8gaG9sZCB0aGUgTnVtYmVyUGF0dGVybiBvZiBhIExvY2FsZS4KKyAgICAgKiBbTkVXXSBObyBsb25nZXIgbmVlZGVkIC0tIHNoYXJlIHRoZSBOdW1iZXJGb3JtYXQgY2FjaGUKKyAgICAgKi8KKyAgICAvLyBwcml2YXRlIHN0YXRpYyBIYXNodGFibGUgY2FjaGVkTG9jYWxlRGF0YSA9IG5ldyBIYXNodGFibGUoMyk7Cit9CisKKy8vZW9mCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvdGV4dC9EZWNpbWFsRm9ybWF0U3ltYm9scy5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvRGVjaW1hbEZvcm1hdFN5bWJvbHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lOWE2MWM0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvRGVjaW1hbEZvcm1hdFN5bWJvbHMuamF2YQpAQCAtMCwwICsxLDc0NCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L3RleHQvRGVjaW1hbEZvcm1hdFN5bWJvbHMuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8xMi8wNSAwMToyMTo0MiAkIAorICogJFJldmlzaW9uOiAxLjggJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LnRleHQ7CisKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLklDVUxvY2FsZURhdGE7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uT2JqZWN0SW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5TZXJpYWxpemFibGU7CitpbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworaW1wb3J0IGphdmEudXRpbC5SZXNvdXJjZUJ1bmRsZTsKKworLyoqCisgKiBUaGlzIGNsYXNzIHJlcHJlc2VudHMgdGhlIHNldCBvZiBzeW1ib2xzIChzdWNoIGFzIHRoZSBkZWNpbWFsIHNlcGFyYXRvciwgdGhlCisgKiBncm91cGluZyBzZXBhcmF0b3IsIGFuZCBzbyBvbikgbmVlZGVkIGJ5IDxjb2RlPkRlY2ltYWxGb3JtYXQ8L2NvZGU+IHRvIGZvcm1hdAorICogbnVtYmVycy4gPGNvZGU+RGVjaW1hbEZvcm1hdDwvY29kZT4gY3JlYXRlcyBmb3IgaXRzZWxmIGFuIGluc3RhbmNlIG9mCisgKiA8Y29kZT5EZWNpbWFsRm9ybWF0U3ltYm9sczwvY29kZT4gZnJvbSBpdHMgbG9jYWxlIGRhdGEuICBJZiB5b3UgbmVlZCB0bworICogY2hhbmdlIGFueSBvZiB0aGVzZSBzeW1ib2xzLCB5b3UgY2FuIGdldCB0aGUKKyAqIDxjb2RlPkRlY2ltYWxGb3JtYXRTeW1ib2xzPC9jb2RlPiBvYmplY3QgZnJvbSB5b3VyIDxjb2RlPkRlY2ltYWxGb3JtYXQ8L2NvZGU+CisgKiBhbmQgbW9kaWZ5IGl0LgorICoKKyAqIDxwPjxzdHJvbmc+VGhpcyBpcyBhbiBlbmhhbmNlZCB2ZXJzaW9uIG9mIDxjb2RlPkRlY2ltYWxGb3JtYXRTeW1ib2xzPC9jb2RlPiB0aGF0CisgKiBpcyBiYXNlZCBvbiB0aGUgc3RhbmRhcmQgdmVyc2lvbiBpbiB0aGUgSkRLLiAgTmV3IG9yIGNoYW5nZWQgZnVuY3Rpb25hbGl0eQorICogaXMgbGFiZWxlZAorICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPi48L3N0cm9uZz4KKyAqCisgKiBAc2VlICAgICAgICAgIGphdmEudXRpbC5Mb2NhbGUKKyAqIEBzZWUgICAgICAgICAgRGVjaW1hbEZvcm1hdAorICogQGF1dGhvciAgICAgICBNYXJrIERhdmlzCisgKiBAYXV0aG9yICAgICAgIEFsYW4gTGl1CisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworCitmaW5hbCBwdWJsaWMgY2xhc3MgRGVjaW1hbEZvcm1hdFN5bWJvbHMgaW1wbGVtZW50cyBDbG9uZWFibGUsIFNlcmlhbGl6YWJsZSB7CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSBEZWNpbWFsRm9ybWF0U3ltYm9scyBvYmplY3QgZm9yIHRoZSBkZWZhdWx0IGxvY2FsZS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgRGVjaW1hbEZvcm1hdFN5bWJvbHMoKSB7CisgICAgICAgIGluaXRpYWxpemUoIExvY2FsZS5nZXREZWZhdWx0KCkgKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSBEZWNpbWFsRm9ybWF0U3ltYm9scyBvYmplY3QgZm9yIHRoZSBnaXZlbiBsb2NhbGUuCisgICAgICogQHBhcmFtIGxvY2FsZSB0aGUgbG9jYWxlCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIERlY2ltYWxGb3JtYXRTeW1ib2xzKCBMb2NhbGUgbG9jYWxlICkgeworICAgICAgICBpbml0aWFsaXplKCBsb2NhbGUgKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGNoYXJhY3RlciB1c2VkIGZvciB6ZXJvLiBEaWZmZXJlbnQgZm9yIEFyYWJpYywgZXRjLgorICAgICAqIEByZXR1cm4gdGhlIGNoYXJhY3RlcgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBjaGFyIGdldFplcm9EaWdpdCgpIHsKKyAgICAgICAgcmV0dXJuIHplcm9EaWdpdDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIGNoYXJhY3RlciB1c2VkIGZvciB6ZXJvLgorICAgICAqIEBwYXJhbSB6ZXJvRGlnaXQgdGhlIHplcm8gY2hhcmFjdGVyLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFplcm9EaWdpdChjaGFyIHplcm9EaWdpdCkgeworICAgICAgICB0aGlzLnplcm9EaWdpdCA9IHplcm9EaWdpdDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGNoYXJhY3RlciB1c2VkIGZvciB0aG91c2FuZHMgc2VwYXJhdG9yLiBEaWZmZXJlbnQgZm9yIEZyZW5jaCwgZXRjLgorICAgICAqIEByZXR1cm4gdGhlIHRob3VzYW5kcyBjaGFyYWN0ZXIKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgY2hhciBnZXRHcm91cGluZ1NlcGFyYXRvcigpIHsKKyAgICAgICAgcmV0dXJuIGdyb3VwaW5nU2VwYXJhdG9yOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCB0aGUgY2hhcmFjdGVyIHVzZWQgZm9yIHRob3VzYW5kcyBzZXBhcmF0b3IuIERpZmZlcmVudCBmb3IgRnJlbmNoLCBldGMuCisgICAgICogQHBhcmFtIGdyb3VwaW5nU2VwYXJhdG9yIHRoZSB0aG91c2FuZHMgY2hhcmFjdGVyCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0R3JvdXBpbmdTZXBhcmF0b3IoY2hhciBncm91cGluZ1NlcGFyYXRvcikgeworICAgICAgICB0aGlzLmdyb3VwaW5nU2VwYXJhdG9yID0gZ3JvdXBpbmdTZXBhcmF0b3I7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBjaGFyYWN0ZXIgdXNlZCBmb3IgZGVjaW1hbCBzaWduLiBEaWZmZXJlbnQgZm9yIEZyZW5jaCwgZXRjLgorICAgICAqIEByZXR1cm4gdGhlIGRlY2ltYWwgY2hhcmFjdGVyCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGNoYXIgZ2V0RGVjaW1hbFNlcGFyYXRvcigpIHsKKyAgICAgICAgcmV0dXJuIGRlY2ltYWxTZXBhcmF0b3I7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0IHRoZSBjaGFyYWN0ZXIgdXNlZCBmb3IgZGVjaW1hbCBzaWduLiBEaWZmZXJlbnQgZm9yIEZyZW5jaCwgZXRjLgorICAgICAqIEBwYXJhbSBkZWNpbWFsU2VwYXJhdG9yIHRoZSBkZWNpbWFsIGNoYXJhY3RlcgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldERlY2ltYWxTZXBhcmF0b3IoY2hhciBkZWNpbWFsU2VwYXJhdG9yKSB7CisgICAgICAgIHRoaXMuZGVjaW1hbFNlcGFyYXRvciA9IGRlY2ltYWxTZXBhcmF0b3I7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBjaGFyYWN0ZXIgdXNlZCBmb3IgbWlsbGUgcGVyY2VudCBzaWduLiBEaWZmZXJlbnQgZm9yIEFyYWJpYywgZXRjLgorICAgICAqIEByZXR1cm4gdGhlIG1pbGxlIHBlcmNlbnQgY2hhcmFjdGVyCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGNoYXIgZ2V0UGVyTWlsbCgpIHsKKyAgICAgICAgcmV0dXJuIHBlck1pbGw7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0IHRoZSBjaGFyYWN0ZXIgdXNlZCBmb3IgbWlsbGUgcGVyY2VudCBzaWduLiBEaWZmZXJlbnQgZm9yIEFyYWJpYywgZXRjLgorICAgICAqIEBwYXJhbSBwZXJNaWxsIHRoZSBtaWxsZSBwZXJjZW50IGNoYXJhY3RlcgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFBlck1pbGwoY2hhciBwZXJNaWxsKSB7CisgICAgICAgIHRoaXMucGVyTWlsbCA9IHBlck1pbGw7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBjaGFyYWN0ZXIgdXNlZCBmb3IgcGVyY2VudCBzaWduLiBEaWZmZXJlbnQgZm9yIEFyYWJpYywgZXRjLgorICAgICAqIEByZXR1cm4gdGhlIHBlcmNlbnQgY2hhcmFjdGVyCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGNoYXIgZ2V0UGVyY2VudCgpIHsKKyAgICAgICAgcmV0dXJuIHBlcmNlbnQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0IHRoZSBjaGFyYWN0ZXIgdXNlZCBmb3IgcGVyY2VudCBzaWduLiBEaWZmZXJlbnQgZm9yIEFyYWJpYywgZXRjLgorICAgICAqIEBwYXJhbSBwZXJjZW50IHRoZSBwZXJjZW50IGNoYXJhY3RlcgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFBlcmNlbnQoY2hhciBwZXJjZW50KSB7CisgICAgICAgIHRoaXMucGVyY2VudCA9IHBlcmNlbnQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBjaGFyYWN0ZXIgdXNlZCBmb3IgYSBkaWdpdCBpbiBhIHBhdHRlcm4uCisgICAgICogQHJldHVybiB0aGUgZGlnaXQgcGF0dGVybiBjaGFyYWN0ZXIKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgY2hhciBnZXREaWdpdCgpIHsKKyAgICAgICAgcmV0dXJuIGRpZ2l0OworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCB0aGUgY2hhcmFjdGVyIHVzZWQgZm9yIGEgZGlnaXQgaW4gYSBwYXR0ZXJuLgorICAgICAqIEBwYXJhbSBkaWdpdCB0aGUgZGlnaXQgcGF0dGVybiBjaGFyYWN0ZXIKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXREaWdpdChjaGFyIGRpZ2l0KSB7CisgICAgICAgIHRoaXMuZGlnaXQgPSBkaWdpdDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGNoYXJhY3RlciB1c2VkIHRvIHNlcGFyYXRlIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSBzdWJwYXR0ZXJucworICAgICAqIGluIGEgcGF0dGVybi4KKyAgICAgKiBAcmV0dXJuIHRoZSBwYXR0ZXJuIHNlcGFyYXRvciBjaGFyYWN0ZXIKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgY2hhciBnZXRQYXR0ZXJuU2VwYXJhdG9yKCkgeworICAgICAgICByZXR1cm4gcGF0dGVyblNlcGFyYXRvcjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIGNoYXJhY3RlciB1c2VkIHRvIHNlcGFyYXRlIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSBzdWJwYXR0ZXJucworICAgICAqIGluIGEgcGF0dGVybi4KKyAgICAgKiBAcGFyYW0gcGF0dGVyblNlcGFyYXRvciB0aGUgcGF0dGVybiBzZXBhcmF0b3IgY2hhcmFjdGVyCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0UGF0dGVyblNlcGFyYXRvcihjaGFyIHBhdHRlcm5TZXBhcmF0b3IpIHsKKyAgICAgICAgdGhpcy5wYXR0ZXJuU2VwYXJhdG9yID0gcGF0dGVyblNlcGFyYXRvcjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIFN0cmluZyB1c2VkIHRvIHJlcHJlc2VudCBpbmZpbml0eS4gQWxtb3N0IGFsd2F5cyBsZWZ0CisgICAgICogdW5jaGFuZ2VkLgorICAgICAqIEByZXR1cm4gdGhlIEluZmluaXR5IHN0cmluZworICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgICAvL0J1ZyA0MTk0MTczIFtSaWNoYXJkL0dDTF0KKworICAgIHB1YmxpYyBTdHJpbmcgZ2V0SW5maW5pdHkoKSB7CisgICAgICAgIHJldHVybiBpbmZpbml0eTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIFN0cmluZyB1c2VkIHRvIHJlcHJlc2VudCBpbmZpbml0eS4gQWxtb3N0IGFsd2F5cyBsZWZ0CisgICAgICogdW5jaGFuZ2VkLgorICAgICAqIEBwYXJhbSBpbmZpbml0eSB0aGUgSW5maW5pdHkgU3RyaW5nCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0SW5maW5pdHkoU3RyaW5nIGluZmluaXR5KSB7CisgICAgICAgIHRoaXMuaW5maW5pdHkgPSBpbmZpbml0eTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIFN0cmluZyB1c2VkIHRvIHJlcHJlc2VudCBOYU4uIEFsbW9zdCBhbHdheXMgbGVmdAorICAgICAqIHVuY2hhbmdlZC4KKyAgICAgKiBAcmV0dXJuIHRoZSBOYU4gU3RyaW5nCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgIC8vQnVnIDQxOTQxNzMgW1JpY2hhcmQvR0NMXQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0TmFOKCkgeworICAgICAgICByZXR1cm4gTmFOOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCB0aGUgU3RyaW5nIHVzZWQgdG8gcmVwcmVzZW50IE5hTi4gQWxtb3N0IGFsd2F5cyBsZWZ0CisgICAgICogdW5jaGFuZ2VkLgorICAgICAqIEBwYXJhbSBOYU4gdGhlIE5hTiBTdHJpbmcKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXROYU4oU3RyaW5nIE5hTikgeworICAgICAgICB0aGlzLk5hTiA9IE5hTjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGNoYXJhY3RlciB1c2VkIHRvIHJlcHJlc2VudCBtaW51cyBzaWduLiBJZiBubyBleHBsaWNpdAorICAgICAqIG5lZ2F0aXZlIGZvcm1hdCBpcyBzcGVjaWZpZWQsIG9uZSBpcyBmb3JtZWQgYnkgcHJlZml4aW5nCisgICAgICogbWludXNTaWduIHRvIHRoZSBwb3NpdGl2ZSBmb3JtYXQuCisgICAgICogQHJldHVybiB0aGUgbWludXMgc2lnbiBjaGFyYWN0ZXIKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgY2hhciBnZXRNaW51c1NpZ24oKSB7CisgICAgICAgIHJldHVybiBtaW51c1NpZ247CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0IHRoZSBjaGFyYWN0ZXIgdXNlZCB0byByZXByZXNlbnQgbWludXMgc2lnbi4gSWYgbm8gZXhwbGljaXQKKyAgICAgKiBuZWdhdGl2ZSBmb3JtYXQgaXMgc3BlY2lmaWVkLCBvbmUgaXMgZm9ybWVkIGJ5IHByZWZpeGluZworICAgICAqIG1pbnVzU2lnbiB0byB0aGUgcG9zaXRpdmUgZm9ybWF0LgorICAgICAqIEBwYXJhbSBtaW51c1NpZ24gdGhlIG1pbnVzIHNpZ24gY2hhcmFjdGVyCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0TWludXNTaWduKGNoYXIgbWludXNTaWduKSB7CisgICAgICAgIHRoaXMubWludXNTaWduID0gbWludXNTaWduOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgc3RyaW5nIGRlbm90aW5nIHRoZSBsb2NhbCBjdXJyZW5jeS4KKyAgICAgKiBAcmV0dXJuIHRoZSBsb2NhbCBjdXJyZW5jeSBTdHJpbmcuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIFN0cmluZyBnZXRDdXJyZW5jeVN5bWJvbCgpCisgICAgeworICAgICAgICByZXR1cm4gY3VycmVuY3lTeW1ib2w7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0IHRoZSBzdHJpbmcgZGVub3RpbmcgdGhlIGxvY2FsIGN1cnJlbmN5LgorICAgICAqIEBwYXJhbSBjdXJyZW5jeSB0aGUgbG9jYWwgY3VycmVuY3kgU3RyaW5nLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldEN1cnJlbmN5U3ltYm9sKFN0cmluZyBjdXJyZW5jeSkKKyAgICB7CisgICAgICAgIGN1cnJlbmN5U3ltYm9sID0gY3VycmVuY3k7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBpbnRlcm5hdGlvbmFsIHN0cmluZyBkZW5vdGluZyB0aGUgbG9jYWwgY3VycmVuY3kuCisgICAgICogQHJldHVybiB0aGUgaW50ZXJuYXRpb25hbCBzdHJpbmcgZGVub3RpbmcgdGhlIGxvY2FsIGN1cnJlbmN5CisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIFN0cmluZyBnZXRJbnRlcm5hdGlvbmFsQ3VycmVuY3lTeW1ib2woKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGludGxDdXJyZW5jeVN5bWJvbDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIGludGVybmF0aW9uYWwgc3RyaW5nIGRlbm90aW5nIHRoZSBsb2NhbCBjdXJyZW5jeS4KKyAgICAgKiBAcGFyYW0gY3VycmVuY3kgdGhlIGludGVybmF0aW9uYWwgc3RyaW5nIGRlbm90aW5nIHRoZSBsb2NhbCBjdXJyZW5jeS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRJbnRlcm5hdGlvbmFsQ3VycmVuY3lTeW1ib2woU3RyaW5nIGN1cnJlbmN5KQorICAgIHsKKyAgICAgICAgaW50bEN1cnJlbmN5U3ltYm9sID0gY3VycmVuY3k7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBtb25ldGFyeSBkZWNpbWFsIHNlcGFyYXRvci4KKyAgICAgKiBAcmV0dXJuIHRoZSBtb25ldGFyeSBkZWNpbWFsIHNlcGFyYXRvciBjaGFyYWN0ZXIKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgY2hhciBnZXRNb25ldGFyeURlY2ltYWxTZXBhcmF0b3IoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1vbmV0YXJ5U2VwYXJhdG9yOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCB0aGUgbW9uZXRhcnkgZGVjaW1hbCBzZXBhcmF0b3IuCisgICAgICogQHBhcmFtIHNlcCB0aGUgbW9uZXRhcnkgZGVjaW1hbCBzZXBhcmF0b3IgY2hhcmFjdGVyCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0TW9uZXRhcnlEZWNpbWFsU2VwYXJhdG9yKGNoYXIgc2VwKQorICAgIHsKKyAgICAgICAgbW9uZXRhcnlTZXBhcmF0b3IgPSBzZXA7CisgICAgfQorCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICAgICAqIFJldHVybiB0aGUgc3RyaW5nIHVzZWQgdG8gc2VwYXJhdGUgdGhlIG1hbnRpc3NhIGZyb20gdGhlIGV4cG9uZW50LgorICAgICAqIEV4YW1wbGVzOiAieDEwXiIgZm9yIDEuMjN4MTBeNCwgIkUiIGZvciAxLjIzRTQuCisgICAgICogQHJldHVybiB0aGUgbG9jYWxpemVkIGV4cG9uZW50IHN5bWJvbCwgdXNlZCBpbiBsb2NhbGl6ZWQgcGF0dGVybnMKKyAgICAgKiBhbmQgZm9ybWF0dGVkIHN0cmluZ3MKKyAgICAgKiBAc2VlICNzZXRFeHBvbmVudFNlcGFyYXRvcgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgZ2V0RXhwb25lbnRTZXBhcmF0b3IoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGV4cG9uZW50U2VwYXJhdG9yOworICAgIH0KKworICAgIC8qKgorICAgICAqIDxzdHJvbmc+PGZvbnQgZmFjZT1oZWx2ZXRpY2EgY29sb3I9cmVkPk5FVzwvZm9udD48L3N0cm9uZz4KKyAgICAgKiBTZXQgdGhlIHN0cmluZyB1c2VkIHRvIHNlcGFyYXRlIHRoZSBtYW50aXNzYSBmcm9tIHRoZSBleHBvbmVudC4KKyAgICAgKiBFeGFtcGxlczogIngxMF4iIGZvciAxLjIzeDEwXjQsICJFIiBmb3IgMS4yM0U0LgorICAgICAqIEBwYXJhbSBleHAgdGhlIGxvY2FsaXplZCBleHBvbmVudCBzeW1ib2wsIHVzZWQgaW4gbG9jYWxpemVkIHBhdHRlcm5zCisgICAgICogYW5kIGZvcm1hdHRlZCBzdHJpbmdzCisgICAgICogQHNlZSAjZ2V0RXhwb25lbnRTZXBhcmF0b3IKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRFeHBvbmVudFNlcGFyYXRvcihTdHJpbmcgZXhwKQorICAgIHsKKyAgICAgICAgZXhwb25lbnRTZXBhcmF0b3IgPSBleHA7CisgICAgfQorCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICAgICAqIFJldHVybiB0aGUgbG9jYWxpemVkIHBsdXMgc2lnbi4KKyAgICAgKiBAcmV0dXJuIHRoZSBwbHVzIHNpZ24sIHVzZWQgaW4gbG9jYWxpemVkIHBhdHRlcm5zIGFuZCBmb3JtYXR0ZWQKKyAgICAgKiBzdHJpbmdzCisgICAgICogQHNlZSAjc2V0UGx1c1NpZ24KKyAgICAgKiBAc2VlICNzZXRNaW51c1NpZ24KKyAgICAgKiBAc2VlICNnZXRNaW51c1NpZ24KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgY2hhciBnZXRQbHVzU2lnbigpIHsKKyAgICAgICAgcmV0dXJuIHBsdXNTaWduOworICAgIH0KKworICAgIC8qKgorICAgICAqIDxzdHJvbmc+PGZvbnQgZmFjZT1oZWx2ZXRpY2EgY29sb3I9cmVkPk5FVzwvZm9udD48L3N0cm9uZz4KKyAgICAgKiBTZXQgdGhlIGxvY2FsaXplZCBwbHVzIHNpZ24uCisgICAgICogQHBhcmFtIHBsdXMgdGhlIHBsdXMgc2lnbiwgdXNlZCBpbiBsb2NhbGl6ZWQgcGF0dGVybnMgYW5kIGZvcm1hdHRlZAorICAgICAqIHN0cmluZ3MKKyAgICAgKiBAc2VlICNnZXRQbHVzU2lnbgorICAgICAqIEBzZWUgI3NldE1pbnVzU2lnbgorICAgICAqIEBzZWUgI2dldE1pbnVzU2lnbgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFBsdXNTaWduKGNoYXIgcGx1cykgeworICAgICAgICBwbHVzU2lnbiA9IHBsdXM7CisgICAgfQorCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICAgICAqIFJldHVybiB0aGUgY2hhcmFjdGVyIHVzZWQgdG8gcGFkIG51bWJlcnMgb3V0IHRvIGEgc3BlY2lmaWVkIHdpZHRoLiAgVGhpcworICAgICAqIGlzIG5vdCB0aGUgcGFkIGNoYXJhY3RlciBpdHNlbGY7IHJhdGhlciwgaXQgaXMgdGhlIHNwZWNpYWwgcGF0dGVybgorICAgICAqIGNoYXJhY3RlciA8ZW0+cHJlY2VkaW5nPC9lbT4gdGhlIHBhZCBjaGFyYWN0ZXIuICBJbiB0aGUgcGF0dGVybgorICAgICAqICIqXyMsIyMwIiwgJyonIGlzIHRoZSBwYWQgZXNjYXBlLCBhbmQgJ18nIGlzIHRoZSBwYWQgY2hhcmFjdGVyLgorICAgICAqIEByZXR1cm4gdGhlIGNoYXJhY3RlciAKKyAgICAgKiBAc2VlICNzZXRQYWRFc2NhcGUKKyAgICAgKiBAc2VlIERlY2ltYWxGb3JtYXQjZ2V0Rm9ybWF0V2lkdGgKKyAgICAgKiBAc2VlIERlY2ltYWxGb3JtYXQjZ2V0UGFkUG9zaXRpb24KKyAgICAgKiBAc2VlIERlY2ltYWxGb3JtYXQjZ2V0UGFkQ2hhcmFjdGVyCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGNoYXIgZ2V0UGFkRXNjYXBlKCkgeworICAgICAgICByZXR1cm4gcGFkRXNjYXBlOworICAgIH0KKworICAgIC8qKgorICAgICAqIDxzdHJvbmc+PGZvbnQgZmFjZT1oZWx2ZXRpY2EgY29sb3I9cmVkPk5FVzwvZm9udD48L3N0cm9uZz4KKyAgICAgKiBTZXQgdGhlIGNoYXJhY3RlciB1c2VkIHRvIHBhZCBudW1iZXJzIG91dCB0byBhIHNwZWNpZmllZCB3aWR0aC4gIFRoaXMgaXMKKyAgICAgKiBub3QgdGhlIHBhZCBjaGFyYWN0ZXIgaXRzZWxmOyByYXRoZXIsIGl0IGlzIHRoZSBzcGVjaWFsIHBhdHRlcm4gY2hhcmFjdGVyCisgICAgICogPGVtPnByZWNlZGluZzwvZW0+IHRoZSBwYWQgY2hhcmFjdGVyLiAgSW4gdGhlIHBhdHRlcm4gIipfIywjIzAiLCAnKicgaXMKKyAgICAgKiB0aGUgcGFkIGVzY2FwZSwgYW5kICdfJyBpcyB0aGUgcGFkIGNoYXJhY3Rlci4KKyAgICAgKiBAc2VlICNnZXRQYWRFc2NhcGUKKyAgICAgKiBAc2VlIERlY2ltYWxGb3JtYXQjc2V0Rm9ybWF0V2lkdGgKKyAgICAgKiBAc2VlIERlY2ltYWxGb3JtYXQjc2V0UGFkUG9zaXRpb24KKyAgICAgKiBAc2VlIERlY2ltYWxGb3JtYXQjc2V0UGFkQ2hhcmFjdGVyCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0UGFkRXNjYXBlKGNoYXIgYykgeworICAgICAgICBwYWRFc2NhcGUgPSBjOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGxvY2FsZSBmb3Igd2hpY2ggdGhpcyBvYmplY3Qgd2FzIGNvbnN0cnVjdGVkLgorICAgICAqIEByZXR1cm4gdGhlIGxvY2FsZSBmb3Igd2hpY2ggdGhpcyBvYmplY3Qgd2FzIGNvbnN0cnVjdGVkCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIExvY2FsZSBnZXRMb2NhbGUoKSB7CisgICAgICAgIHJldHVybiBsb2NhbGU7CisgICAgfQorCisgICAgLyoqCisgICAgICogU3RhbmRhcmQgb3ZlcnJpZGUuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIE9iamVjdCBjbG9uZSgpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJldHVybiAoRGVjaW1hbEZvcm1hdFN5bWJvbHMpc3VwZXIuY2xvbmUoKTsKKyAgICAgICAgICAgIC8vIG90aGVyIGZpZWxkcyBhcmUgYml0LWNvcGllZAorICAgICAgICB9IGNhdGNoIChDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcigpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogT3ZlcnJpZGUgZXF1YWxzLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb2JqKSB7CisgICAgICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAodGhpcyA9PSBvYmopIHJldHVybiB0cnVlOworICAgICAgICBpZiAoZ2V0Q2xhc3MoKSAhPSBvYmouZ2V0Q2xhc3MoKSkgcmV0dXJuIGZhbHNlOworICAgICAgICBEZWNpbWFsRm9ybWF0U3ltYm9scyBvdGhlciA9IChEZWNpbWFsRm9ybWF0U3ltYm9scykgb2JqOworICAgICAgICByZXR1cm4gKHplcm9EaWdpdCA9PSBvdGhlci56ZXJvRGlnaXQgJiYKKyAgICAgICAgZ3JvdXBpbmdTZXBhcmF0b3IgPT0gb3RoZXIuZ3JvdXBpbmdTZXBhcmF0b3IgJiYKKyAgICAgICAgZGVjaW1hbFNlcGFyYXRvciA9PSBvdGhlci5kZWNpbWFsU2VwYXJhdG9yICYmCisgICAgICAgIHBlcmNlbnQgPT0gb3RoZXIucGVyY2VudCAmJgorICAgICAgICBwZXJNaWxsID09IG90aGVyLnBlck1pbGwgJiYKKyAgICAgICAgZGlnaXQgPT0gb3RoZXIuZGlnaXQgJiYKKyAgICAgICAgbWludXNTaWduID09IG90aGVyLm1pbnVzU2lnbiAmJgorICAgICAgICBwYXR0ZXJuU2VwYXJhdG9yID09IG90aGVyLnBhdHRlcm5TZXBhcmF0b3IgJiYKKyAgICAgICAgaW5maW5pdHkuZXF1YWxzKG90aGVyLmluZmluaXR5KSAmJgorICAgICAgICBOYU4uZXF1YWxzKG90aGVyLk5hTikgJiYKKyAgICAgICAgY3VycmVuY3lTeW1ib2wuZXF1YWxzKG90aGVyLmN1cnJlbmN5U3ltYm9sKSAmJgorICAgICAgICBpbnRsQ3VycmVuY3lTeW1ib2wuZXF1YWxzKG90aGVyLmludGxDdXJyZW5jeVN5bWJvbCkgJiYKKyAgICAgICAgcGFkRXNjYXBlID09IG90aGVyLnBhZEVzY2FwZSAmJiAvLyBbTkVXXQorICAgICAgICBwbHVzU2lnbiA9PSBvdGhlci5wbHVzU2lnbiAmJiAvLyBbTkVXXQorICAgICAgICBleHBvbmVudFNlcGFyYXRvci5lcXVhbHMob3RoZXIuZXhwb25lbnRTZXBhcmF0b3IpICYmIC8vIFtORVddCisgICAgICAgIG1vbmV0YXJ5U2VwYXJhdG9yID09IG90aGVyLm1vbmV0YXJ5U2VwYXJhdG9yKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZSBoYXNoQ29kZQorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CisgICAgICAgICAgICBpbnQgcmVzdWx0ID0gemVyb0RpZ2l0OworICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICogMzcgKyBncm91cGluZ1NlcGFyYXRvcjsKKyAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIDM3ICsgZGVjaW1hbFNlcGFyYXRvcjsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogSW5pdGlhbGl6ZXMgdGhlIHN5bWJvbHMgZnJvbSB0aGUgTG9jYWxlRWxlbWVudHMgcmVzb3VyY2UgYnVuZGxlLgorICAgICAqIE5vdGU6IFRoZSBvcmdhbml6YXRpb24gb2YgTG9jYWxlRWxlbWVudHMgYmFkbHkgbmVlZHMgdG8gYmUKKyAgICAgKiBjbGVhbmVkIHVwLgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBpbml0aWFsaXplKCBMb2NhbGUgbG9jYWxlICkgeworICAgICAgICB0aGlzLmxvY2FsZSA9IGxvY2FsZTsKKyAgICAgICAgLyogdHJ5IHRoZSBjYWNoZSBmaXJzdCAqLworICAgICAgICBTdHJpbmdbXVtdIGRhdGEgPSAoU3RyaW5nW11bXSkgY2FjaGVkTG9jYWxlRGF0YS5nZXQobG9jYWxlKTsKKyAgICAgICAgU3RyaW5nW10gbnVtYmVyRWxlbWVudHM7CisgICAgICAgIFN0cmluZ1tdIGN1cnJlbmN5RWxlbWVudHM7CisgICAgICAgIGlmIChkYXRhID09IG51bGwpIHsgIC8qIGNhY2hlIG1pc3MgKi8KKyAgICAgICAgICAgIGRhdGEgPSBuZXcgU3RyaW5nWzJdW107CisgICAgICAgICAgICBSZXNvdXJjZUJ1bmRsZSByYiA9IElDVUxvY2FsZURhdGEuZ2V0TG9jYWxlRWxlbWVudHMobG9jYWxlKTsKKyAgICAgICAgICAgIGRhdGFbMF0gPSByYi5nZXRTdHJpbmdBcnJheSgiTnVtYmVyRWxlbWVudHMiKTsKKyAgICAgICAgICAgIGRhdGFbMV0gPSByYi5nZXRTdHJpbmdBcnJheSgiQ3VycmVuY3lFbGVtZW50cyIpOworICAgICAgICAgICAgLyogdXBkYXRlIGNhY2hlICovCisgICAgICAgICAgICBjYWNoZWRMb2NhbGVEYXRhLnB1dChsb2NhbGUsIGRhdGEpOworICAgICAgICB9CisgICAgICAgIG51bWJlckVsZW1lbnRzID0gZGF0YVswXTsKKyAgICAgICAgY3VycmVuY3lFbGVtZW50cyA9IGRhdGFbMV07CisKKwkvLyB7ZGxmfSBjbGVhbiB1cCBiZWxvdyBub3cgdGhhdCB3ZSBoYXZlIG91ciBvd24gcmVzb3VyY2UgZGF0YQorICAgICAgICBkZWNpbWFsU2VwYXJhdG9yID0gbnVtYmVyRWxlbWVudHNbMF0uY2hhckF0KDApOworICAgICAgICBncm91cGluZ1NlcGFyYXRvciA9IG51bWJlckVsZW1lbnRzWzFdLmNoYXJBdCgwKTsKKyAgICAgICAgLy8gW05FV10gVGVtcG9yYXJ5IGhhY2sgdG8gc3VwcG9ydCBvbGQgSkRLIDEuMSByZXNvdXJjZXMKKyAgICAgICAgcGF0dGVyblNlcGFyYXRvciA9IG51bWJlckVsZW1lbnRzWzJdLmxlbmd0aCgpID4gMCA/CisgICAgICAgICAgICBudW1iZXJFbGVtZW50c1syXS5jaGFyQXQoMCkgOiAnOyc7CisgICAgICAgIC8vIHBhdHRlcm5TZXBhcmF0b3IgPSBudW1iZXJFbGVtZW50c1syXS5jaGFyQXQoMCk7CisgICAgICAgIHBlcmNlbnQgPSBudW1iZXJFbGVtZW50c1szXS5jaGFyQXQoMCk7CisgICAgICAgIHplcm9EaWdpdCA9IG51bWJlckVsZW1lbnRzWzRdLmNoYXJBdCgwKTsgLy9kaWZmZXJlbnQgZm9yIEFyYWJpYyxldGMuCisgICAgICAgIGRpZ2l0ID0gbnVtYmVyRWxlbWVudHNbNV0uY2hhckF0KDApOworICAgICAgICBtaW51c1NpZ24gPSBudW1iZXJFbGVtZW50c1s2XS5jaGFyQXQoMCk7CisgICAgICAgIAorICAgICAgICAvLyBbTkVXXSBUZW1wb3JhcnkgaGFjayB0byBzdXBwb3J0IEpESyB2ZXJzaW9ucyBiZWZvcmUgMS4xLjYgKD8pCisgICAgICAgIGV4cG9uZW50U2VwYXJhdG9yID0gbnVtYmVyRWxlbWVudHMubGVuZ3RoID49IDkgPworICAgICAgICAgICAgbnVtYmVyRWxlbWVudHNbN10gOiBEZWNpbWFsRm9ybWF0LlBBVFRFUk5fRVhQT05FTlQ7CisgICAgICAgIHBlck1pbGwgPSBudW1iZXJFbGVtZW50cy5sZW5ndGggPj0gOSA/CisgICAgICAgICAgICBudW1iZXJFbGVtZW50c1s4XS5jaGFyQXQoMCkgOiAnXHUyMDMwJzsKKyAgICAgICAgaW5maW5pdHkgID0gbnVtYmVyRWxlbWVudHMubGVuZ3RoID49IDEwID8KKyAgICAgICAgICAgIG51bWJlckVsZW1lbnRzWzldIDogIlx1MjIxZSI7CisgICAgICAgIE5hTiA9IG51bWJlckVsZW1lbnRzLmxlbmd0aCA+PSAxMSA/CisgICAgICAgICAgICBudW1iZXJFbGVtZW50c1sxMF0gOiAiXHVmZmZkIjsKKyAgICAgICAgCisgICAgICAgIC8vIFtORVddIFRlbXBvcmFyaWx5IGhhcmQgY29kZTsgcmV0cmlldmUgZnJvbSByZXNvdXJjZSBsYXRlcgorICAgICAgICBwbHVzU2lnbiAgPSBEZWNpbWFsRm9ybWF0LlBBVFRFUk5fUExVU19TSUdOOworICAgICAgICBwYWRFc2NhcGUgPSBEZWNpbWFsRm9ybWF0LlBBVFRFUk5fUEFEX0VTQ0FQRTsKKworICAgICAgICBjdXJyZW5jeVN5bWJvbCA9IGN1cnJlbmN5RWxlbWVudHNbMF07CisgICAgICAgIGludGxDdXJyZW5jeVN5bWJvbCA9IGN1cnJlbmN5RWxlbWVudHNbMV07CisKKyAgICAgICAgLy8gaWYgdGhlIHJlc291cmNlIGRhdGEgc3BlY2lmaWVkIHRoZSBlbXB0eSBzdHJpbmcgYXMgdGhlIG1vbmV0YXJ5IGRlY2ltYWwKKyAgICAgICAgLy8gc2VwYXJhdG9yLCB0aGF0IG1lYW5zIHdlIHNob3VsZCBqdXN0IHVzZSB0aGUgcmVndWxhciBzZXBhcmF0b3IgYXMgdGhlCisgICAgICAgIC8vIG1vbmV0YXJ5IHNlcGFyYXRvcgorICAgICAgICBpZiAoY3VycmVuY3lFbGVtZW50c1syXS5sZW5ndGgoKSA9PSAwKQorICAgICAgICAgICAgbW9uZXRhcnlTZXBhcmF0b3IgPSBkZWNpbWFsU2VwYXJhdG9yOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtb25ldGFyeVNlcGFyYXRvciA9IGN1cnJlbmN5RWxlbWVudHNbMl0uY2hhckF0KDApOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlYWQgdGhlIGRlZmF1bHQgc2VyaWFsaXphYmxlIGZpZWxkcywgdGhlbiBpZiA8Y29kZT5zZXJpYWxWZXJzaW9uT25TdHJlYW08L2NvZGU+CisgICAgICogaXMgbGVzcyB0aGFuIDEsIGluaXRpYWxpemUgPGNvZGU+bW9uZXRhcnlTZXBhcmF0b3I8L2NvZGU+IHRvIGJlCisgICAgICogdGhlIHNhbWUgYXMgPGNvZGU+ZGVjaW1hbFNlcGFyYXRvcjwvY29kZT4gYW5kIDxjb2RlPmV4cG9uZW50aWFsPC9jb2RlPgorICAgICAqIHRvIGJlICdFJy4KKyAgICAgKiBGaW5hbGx5LCBzZXQgc2VyaWFsVmVyc2lvbk9uU3RyZWFtIGJhY2sgdG8gdGhlIG1heGltdW0gYWxsb3dlZCB2YWx1ZSBzbyB0aGF0CisgICAgICogZGVmYXVsdCBzZXJpYWxpemF0aW9uIHdpbGwgd29yayBwcm9wZXJseSBpZiB0aGlzIG9iamVjdCBpcyBzdHJlYW1lZCBvdXQgYWdhaW4uCisgICAgICoKKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgcmVhZE9iamVjdChPYmplY3RJbnB1dFN0cmVhbSBzdHJlYW0pCisgICAgICAgIHRocm93cyBJT0V4Y2VwdGlvbiwgQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiB7CisgICAgICAgIHN0cmVhbS5kZWZhdWx0UmVhZE9iamVjdCgpOworICAgICAgICBpZiAoc2VyaWFsVmVyc2lvbk9uU3RyZWFtIDwgMSkgeworICAgICAgICAgICAgLy8gRGlkbid0IGhhdmUgbW9uZXRhcnlTZXBhcmF0b3Igb3IgZXhwb25lbnRpYWwgZmllbGQ7CisgICAgICAgICAgICAvLyB1c2UgZGVmYXVsdHMuCisgICAgICAgICAgICBtb25ldGFyeVNlcGFyYXRvciA9IGRlY2ltYWxTZXBhcmF0b3I7CisgICAgICAgICAgICBleHBvbmVudGlhbCA9ICdFJzsKKyAgICAgICAgfQorICAgICAgICBpZiAoc2VyaWFsVmVyc2lvbk9uU3RyZWFtIDwgMikgeyAvLyBbTkVXXQorICAgICAgICAgICAgcGFkRXNjYXBlID0gRGVjaW1hbEZvcm1hdC5QQVRURVJOX1BBRF9FU0NBUEU7CisgICAgICAgICAgICBwbHVzU2lnbiA9IERlY2ltYWxGb3JtYXQuUEFUVEVSTl9QTFVTX1NJR047CisgICAgICAgICAgICBleHBvbmVudFNlcGFyYXRvciA9IFN0cmluZy52YWx1ZU9mKGV4cG9uZW50aWFsKTsKKyAgICAgICAgICAgIC8vIEFsdGhvdWdoIHdlIHJlYWQgdGhlIGV4cG9uZW50aWFsIGZpZWxkIG9uIHN0cmVhbSB0byBjcmVhdGUgdGhlCisgICAgICAgICAgICAvLyBleHBvbmVudFNlcGFyYXRvciwgd2UgZG9uJ3QgZG8gdGhlIHJldmVyc2UsIHNpbmNlIHNjaWVudGlmaWMKKyAgICAgICAgICAgIC8vIG5vdGF0aW9uIGlzbid0IHN1cHBvcnRlZCBieSB0aGUgb2xkIGNsYXNzZXMsIGV2ZW4gdGhvdWdoIHRoZQorICAgICAgICAgICAgLy8gc3ltYm9sIGlzIHRoZXJlLgorICAgICAgICB9CisgICAgICAgIGlmIChzZXJpYWxWZXJzaW9uT25TdHJlYW0gPCAzKSB7CisgICAgICAgICAgICAvLyBSZXN1cnJlY3RlZCBvYmplY3RzIGZyb20gb2xkIHN0cmVhbXMgd2lsbCBoYXZlIG5vCisgICAgICAgICAgICAvLyBsb2NhbGUuICBUaGVyZSBpcyBubyAxMDAlIGZpeCBmb3IgdGhpcy4gIEEKKyAgICAgICAgICAgIC8vIDkwJSBmaXggaXMgdG8gY29uc3RydWN0IGEgbWFwcGluZyBvZiBkYXRhIGJhY2sgdG8KKyAgICAgICAgICAgIC8vIGxvY2FsZSwgcGVyaGFwcyBhIGhhc2ggb2YgYWxsIG91ciBtZW1iZXJzLiAgVGhpcyBpcworICAgICAgICAgICAgLy8gZXhwZW5zaXZlIGFuZCBkb2Vzbid0IHNlZW0gd29ydGggaXQuCisgICAgICAgICAgICBsb2NhbGUgPSBMb2NhbGUuZ2V0RGVmYXVsdCgpOworICAgICAgICB9CisgICAgICAgIHNlcmlhbFZlcnNpb25PblN0cmVhbSA9IGN1cnJlbnRTZXJpYWxWZXJzaW9uOworICAgIH0KKworICAgIC8qKgorICAgICAqIENoYXJhY3RlciB1c2VkIGZvciB6ZXJvLgorICAgICAqCisgICAgICogQHNlcmlhbAorICAgICAqIEBzZWUgI2dldFplcm9EaWdpdAorICAgICAqLworICAgIHByaXZhdGUgIGNoYXIgICAgemVyb0RpZ2l0OworCisgICAgLyoqCisgICAgICogQ2hhcmFjdGVyIHVzZWQgZm9yIHRob3VzYW5kcyBzZXBhcmF0b3IuCisgICAgICoKKyAgICAgKiBAc2VyaWFsCisgICAgICogQHNlZSAjZ2V0R3JvdXBpbmdTZXBhcmF0b3IKKyAgICAgKi8KKyAgICBwcml2YXRlICBjaGFyICAgIGdyb3VwaW5nU2VwYXJhdG9yOworCisgICAgLyoqCisgICAgICogQ2hhcmFjdGVyIHVzZWQgZm9yIGRlY2ltYWwgc2lnbi4KKyAgICAgKgorICAgICAqIEBzZXJpYWwKKyAgICAgKiBAc2VlICNnZXREZWNpbWFsU2VwYXJhdG9yCisgICAgICovCisgICAgcHJpdmF0ZSAgY2hhciAgICBkZWNpbWFsU2VwYXJhdG9yOworCisgICAgLyoqCisgICAgICogQ2hhcmFjdGVyIHVzZWQgZm9yIG1pbGxlIHBlcmNlbnQgc2lnbi4KKyAgICAgKgorICAgICAqIEBzZXJpYWwKKyAgICAgKiBAc2VlICNnZXRQZXJNaWxsCisgICAgICovCisgICAgcHJpdmF0ZSAgY2hhciAgICBwZXJNaWxsOworCisgICAgLyoqCisgICAgICogQ2hhcmFjdGVyIHVzZWQgZm9yIHBlcmNlbnQgc2lnbi4KKyAgICAgKiBAc2VyaWFsCisgICAgICogQHNlZSAjZ2V0UGVyY2VudAorICAgICAqLworICAgIHByaXZhdGUgIGNoYXIgICAgcGVyY2VudDsKKworICAgIC8qKgorICAgICAqIENoYXJhY3RlciB1c2VkIGZvciBhIGRpZ2l0IGluIGEgcGF0dGVybi4KKyAgICAgKgorICAgICAqIEBzZXJpYWwKKyAgICAgKiBAc2VlICNnZXREaWdpdAorICAgICAqLworICAgIHByaXZhdGUgIGNoYXIgICAgZGlnaXQ7CisKKyAgICAvKioKKyAgICAgKiBDaGFyYWN0ZXIgdXNlZCB0byBzZXBhcmF0ZSBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgc3VicGF0dGVybnMKKyAgICAgKiBpbiBhIHBhdHRlcm4uCisgICAgICoKKyAgICAgKiBAc2VyaWFsCisgICAgICogQHNlZSAjZ2V0UGF0dGVyblNlcGFyYXRvcgorICAgICAqLworICAgIHByaXZhdGUgIGNoYXIgICAgcGF0dGVyblNlcGFyYXRvcjsKKworICAgIC8qKgorICAgICAqIENoYXJhY3RlciB1c2VkIHRvIHJlcHJlc2VudCBpbmZpbml0eS4KKyAgICAgKiBAc2VyaWFsCisgICAgICogQHNlZSAjZ2V0SW5maW5pdHkKKyAgICAgKi8KKyAgICBwcml2YXRlICBTdHJpbmcgIGluZmluaXR5OworCisgICAgLyoqCisgICAgICogQ2hhcmFjdGVyIHVzZWQgdG8gcmVwcmVzZW50IE5hTi4KKyAgICAgKiBAc2VyaWFsCisgICAgICogQHNlZSAjZ2V0TmFOCisgICAgICovCisgICAgcHJpdmF0ZSAgU3RyaW5nICBOYU47CisKKyAgICAvKioKKyAgICAgKiBDaGFyYWN0ZXIgdXNlZCB0byByZXByZXNlbnQgbWludXMgc2lnbi4KKyAgICAgKiBAc2VyaWFsCisgICAgICogQHNlZSAjZ2V0TWludXNTaWduCisgICAgICovCisgICAgcHJpdmF0ZSAgY2hhciAgICBtaW51c1NpZ247CisKKyAgICAvKioKKyAgICAgKiBTdHJpbmcgZGVub3RpbmcgdGhlIGxvY2FsIGN1cnJlbmN5LCBlLmcuICIkIi4KKyAgICAgKiBAc2VyaWFsCisgICAgICogQHNlZSAjZ2V0Q3VycmVuY3lTeW1ib2wKKyAgICAgKi8KKyAgICBwcml2YXRlICBTdHJpbmcgIGN1cnJlbmN5U3ltYm9sOworCisgICAgLyoqCisgICAgICogSW50ZXJuYXRpb25hbCBzdHJpbmcgZGVub3RpbmcgdGhlIGxvY2FsIGN1cnJlbmN5LCBlLmcuICJVU0QiLgorICAgICAqIEBzZXJpYWwKKyAgICAgKiBAc2VlICNnZXRJbnRlcm5hdGlvbmFsQ3VycmVuY3lTeW1ib2wKKyAgICAgKi8KKyAgICBwcml2YXRlICBTdHJpbmcgIGludGxDdXJyZW5jeVN5bWJvbDsKKworICAgIC8qKgorICAgICAqIFRoZSBkZWNpbWFsIHNlcGFyYXRvciB1c2VkIHdoZW4gZm9ybWF0dGluZyBjdXJyZW5jeSB2YWx1ZXMuCisgICAgICogQHNlcmlhbAorICAgICAqIEBzZWUgI2dldE1vbmV0YXJ5RGVjaW1hbFNlcGFyYXRvcgorICAgICAqLworICAgIHByaXZhdGUgIGNoYXIgICAgbW9uZXRhcnlTZXBhcmF0b3I7IC8vIEZpZWxkIG5ldyBpbiBKREsgMS4xLjYKKworICAgIC8qKgorICAgICAqIFRoZSBjaGFyYWN0ZXIgdXNlZCB0byBkaXN0aW5ndWlzaCB0aGUgZXhwb25lbnQgaW4gYSBudW1iZXIgZm9ybWF0dGVkCisgICAgICogaW4gZXhwb25lbnRpYWwgbm90YXRpb24sIGUuZy4gJ0UnIGZvciBhIG51bWJlciBzdWNoIGFzICIxLjIzRTQ1Ii4KKyAgICAgKiA8cD4KKyAgICAgKiBOb3RlIHRoYXQgdGhpcyBmaWVsZCBoYXMgYmVlbiBzdXBlcnNlZGVkIGJ5IDxjb2RlPmV4cG9uZW50U2VwYXJhdG9yPC9jb2RlPi4KKyAgICAgKiBJdCBpcyByZXRhaW5lZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KKyAgICAgKgorICAgICAqIEBzZXJpYWwKKyAgICAgKi8KKyAgICBwcml2YXRlICBjaGFyICAgIGV4cG9uZW50aWFsOyAgICAgICAvLyBGaWVsZCBuZXcgaW4gSkRLIDEuMS42CisKKyAgICAvKioKKyAgICAgKiBUaGUgc3RyaW5nIHVzZWQgdG8gc2VwYXJhdGUgdGhlIG1hbnRpc3NhIGZyb20gdGhlIGV4cG9uZW50LgorICAgICAqIEV4YW1wbGVzOiAieDEwXiIgZm9yIDEuMjN4MTBeNCwgIkUiIGZvciAxLjIzRTQuCisgICAgICogPHA+CisgICAgICogTm90ZSB0aGF0IHRoaXMgc3VwZXJzZWRlcyB0aGUgPGNvZGU+ZXhwb25lbnRpYWw8L2NvZGU+IGZpZWxkLgorICAgICAqCisgICAgICogQHNlcmlhbAorICAgICAqIEBzaW5jZSBBbHBoYVdvcmtzCisgICAgICovCisgICAgcHJpdmF0ZSBTdHJpbmcgZXhwb25lbnRTZXBhcmF0b3I7CisKKyAgICAvKioKKyAgICAgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+CisgICAgICogVGhlIGNoYXJhY3RlciB1c2VkIHRvIGluZGljYXRlIGEgcGFkZGluZyBjaGFyYWN0ZXIgaW4gYSBmb3JtYXQsCisgICAgICogZS5nLiwgJyonIGluIGEgcGF0dGVybiBzdWNoIGFzICIkKl8jLCMjMC4wMCIuCisgICAgICogQHNlcmlhbAorICAgICAqIEBzaW5jZSBBbHBoYVdvcmtzCisgICAgICovCisgICAgcHJpdmF0ZSBjaGFyIHBhZEVzY2FwZTsKKworICAgIC8qKgorICAgICAqIDxzdHJvbmc+PGZvbnQgZmFjZT1oZWx2ZXRpY2EgY29sb3I9cmVkPk5FVzwvZm9udD48L3N0cm9uZz4KKyAgICAgKiBUaGUgY2hhcmFjdGVyIHVzZWQgdG8gaW5kaWNhdGUgYSBwbHVzIHNpZ24uCisgICAgICogQHNlcmlhbAorICAgICAqIEBzaW5jZSBBbHBoYVdvcmtzCisgICAgICovCisgICAgcHJpdmF0ZSBjaGFyIHBsdXNTaWduOworCisgICAgLyoqCisgICAgICogVGhlIGxvY2FsZSBmb3Igd2hpY2ggdGhpcyBvYmplY3Qgd2FzIGNvbnN0cnVjdGVkLiAgU2V0IHRvIHRoZQorICAgICAqIGRlZmF1bHQgbG9jYWxlIGZvciBvYmplY3RzIHJlc3VycmVjdGVkIGZyb20gb2xkIHN0cmVhbXMuCisgICAgICogQHNpbmNlIElDVSAyLjIKKyAgICAgKi8KKyAgICBwcml2YXRlIExvY2FsZSBsb2NhbGU7CisKKyAgICAvLyBQcm9jbGFpbSBKREsgMS4xIEZDUyBjb21wYXRpYmlsaXR5CisgICAgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDU3NzI3OTYyNDMzOTczNTAzMDBMOworCisgICAgLy8gVGhlIGludGVybmFsIHNlcmlhbCB2ZXJzaW9uIHdoaWNoIHNheXMgd2hpY2ggdmVyc2lvbiB3YXMgd3JpdHRlbgorICAgIC8vIC0gMCAoZGVmYXVsdCkgZm9yIHZlcnNpb24gdXAgdG8gSkRLIDEuMS41CisgICAgLy8gLSAxIGZvciB2ZXJzaW9uIGZyb20gSkRLIDEuMS42LCB3aGljaCBpbmNsdWRlcyB0d28gbmV3IGZpZWxkczoKKyAgICAvLyAgICAgbW9uZXRhcnlTZXBhcmF0b3IgYW5kIGV4cG9uZW50aWFsLgorICAgIC8vIC0gMiBmb3IgdmVyc2lvbiBmcm9tIEFscGhhV29ya3MsIHdoaWNoIGluY2x1ZGVzIDMgbmV3IGZpZWxkczoKKyAgICAvLyAgICAgcGFkRXNjYXBlLCBleHBvbmVudFNlcGFyYXRvciwgYW5kIHBsdXNTaWduLgorICAgIC8vIC0gMyBmb3IgSUNVIDIuMiwgd2hpY2ggaW5jbHVkZXMgdGhlIGxvY2FsZSBmaWVsZAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBjdXJyZW50U2VyaWFsVmVyc2lvbiA9IDM7CisgICAgCisgICAgLyoqCisgICAgICogRGVzY3JpYmVzIHRoZSB2ZXJzaW9uIG9mIDxjb2RlPkRlY2ltYWxGb3JtYXRTeW1ib2xzPC9jb2RlPiBwcmVzZW50IG9uIHRoZSBzdHJlYW0uCisgICAgICogUG9zc2libGUgdmFsdWVzIGFyZToKKyAgICAgKiA8dWw+CisgICAgICogPGxpPjxiPjA8L2I+IChvciB1bmluaXRpYWxpemVkKTogdmVyc2lvbnMgcHJpb3IgdG8gSkRLIDEuMS42LgorICAgICAqCisgICAgICogPGxpPjxiPjE8L2I+OiBWZXJzaW9ucyB3cml0dGVuIGJ5IEpESyAxLjEuNiBvciBsYXRlciwgd2hpY2ggaW5jbHVkZXMKKyAgICAgKiAgICAgIHR3byBuZXcgZmllbGRzOiA8Y29kZT5tb25ldGFyeVNlcGFyYXRvcjwvY29kZT4gYW5kIDxjb2RlPmV4cG9uZW50aWFsPC9jb2RlPi4KKyAgICAgKiA8bGk+PGI+MjwvYj46IFZlcnNpb24gZm9yIEFscGhhV29ya3MuICBBZGRzIHBhZEVzY2FwZSwgZXhwb25lbnRTZXBhcmF0b3IsCisgICAgICogICAgICBhbmQgcGx1c1NpZ24uCisgICAgICogPC91bD4KKyAgICAgKiBXaGVuIHN0cmVhbWluZyBvdXQgYSA8Y29kZT5EZWNpbWFsRm9ybWF0U3ltYm9sczwvY29kZT4sIHRoZSBtb3N0IHJlY2VudCBmb3JtYXQKKyAgICAgKiAoY29ycmVzcG9uZGluZyB0byB0aGUgaGlnaGVzdCBhbGxvd2FibGUgPGNvZGU+c2VyaWFsVmVyc2lvbk9uU3RyZWFtPC9jb2RlPikKKyAgICAgKiBpcyBhbHdheXMgd3JpdHRlbi4KKyAgICAgKgorICAgICAqIEBzZXJpYWwKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBzZXJpYWxWZXJzaW9uT25TdHJlYW0gPSBjdXJyZW50U2VyaWFsVmVyc2lvbjsKKworICAgIC8qKgorICAgICAqIGNhY2hlIHRvIGhvbGQgdGhlIE51bWJlckVsZW1lbnRzIGFuZCB0aGUgQ3VycmVuY3lFbGVtZW50cworICAgICAqIG9mIGEgTG9jYWxlLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEhhc2h0YWJsZSBjYWNoZWRMb2NhbGVEYXRhID0gbmV3IEhhc2h0YWJsZSgzKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS90ZXh0L0RlY29tcERhdGEuamF2YSBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L0RlY29tcERhdGEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42YWI3YzQ3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvRGVjb21wRGF0YS5qYXZhCkBAIC0wLDAgKzEsNzQ1IEBACisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgQ29weXJpZ2h0IChjKSAxOTk3LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyogICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiA+IFRISVMgRklMRSBXQVMgTUFDSElORSBHRU5FUkFURUQgPAorKiA+ICAgICAgIERPIE5PVCBFRElUIEJZIEhBTkQgICAgICAgPAorKiA+ICAgICAgUlVOIFRPT0wgVE8gUkVHRU5FUkFURSAgICAgPAorKiBUb29sOiBjb20uaWJtLmljdS50ZXh0Lk5vcm1hbGl6ZXIKKyogQ3JlYXRpb24gZGF0ZTogVHVlIEp1bCAxOCAxMTowNToyOCBQRFQgMjAwMAorKi8KKworcGFja2FnZSBjb20uaWJtLmljdS50ZXh0OworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuKjsKKworY2xhc3MgRGVjb21wRGF0YSB7CisgICAgc3RhdGljIGZpbmFsIGludCBNQVhfQ0FOT05JQ0FMID0gMjE3NTQ7CisgICAgc3RhdGljIGZpbmFsIGludCBNQVhfQ09NUEFUID0gMTExNzc7CisgICAgc3RhdGljIGZpbmFsIGludCBERUNPTVBfTUFTSyA9IDMyNzY3OworICAgIHN0YXRpYyBmaW5hbCBpbnQgREVDT01QX1JFQ1VSU0UgPSAzMjc2ODsKKyAgICBzdGF0aWMgZmluYWwgc2hvcnQgQkFTRSA9IDA7CisKKyAgICBzdGF0aWMgZmluYWwgQ29tcGFjdENoYXJBcnJheSBvZmZzZXRzID0gbmV3IENvbXBhY3RDaGFyQXJyYXkoCisgICAgICAgICJcMDAwXHUwODAwXHVBNUE1XDAwNVwwMDAgQGBcdTAwODBcdTAwQTBcdTAwQzBcdTAwRTBcMDAwXHUwMTAwXHUwMTIwXHUwMTQwIisKKyAgICAgICAgIlx1MDE2MFx1MDE4MFwwMDBcMDAwXDAwMFx1MDFBMFx1MDFDMFx1MDFFMFwwMDBcMDAwXHUwMjAwXHUwMjIwXHUwMjQwXHUwMjYwIisKKyAgICAgICAgIlx1MDI4MFx1MDJBMFx1MDJDMFx1MDJFMFx1MDMwMFx1MDMyMFwwMDBcMDAwXHUwMzQwXHUwMzYwXHVBNUE1XDAwNFwwMDAiKworICAgICAgICAiXHUwMzgwXHVBNUE1XDAwNFwwMDBcdTAzQTBcMDAwXHUwM0MwXDAwMFwwMDBcdTAzRTBcdUE1QTVcMDIyXDAwMFx1MDQwMCIrCisgICAgICAgICJcdTA0MjBcMDAwXDAwMFwwMDBcdTA0NDBcMDAwXDAwMFx1MDQ2MFx1MDQ4MFx1QTVBNVwwMDdcMDAwXHUwNEEwXDAwMFx1MDRDMCIrCisgICAgICAgICJcMDAwXHUwNEUwXDAwMFwwMDBcMDAwXHUwNTAwXDAwMFwwMDBcMDAwXHUwNTIwXDAwMFwwMDBcMDAwXHUwNTQwXDAwMFwwMDAiKworICAgICAgICAiXDAwMFx1MDU2MFwwMDBcMDAwXHUwNTgwXDAwMFwwMDBcMDAwXHUwNUEwXHUwNUMwXDAwMFx1MDVFMFwwMDBcdTA2MDBcdTA2MjAiKworICAgICAgICAiXHUwNjQwXHUwNjYwXDAwMFwwMDBcMDAwXHUwNjgwXHVBNUE1blwwMDBcdTA2QTBcdTA2QzBcdTA2RTBcdTA3MDBcdTA3MjAiKworICAgICAgICAiXHUwNzQwXHUwNzYwXHUwNzgwXHUwN0EwXHUwN0MwXHUwN0UwXHUwODAwXHUwODIwXHUwODQwXHUwODYwXHUwODgwXHUwOEEwIisKKyAgICAgICAgIlx1MDhDMFx1MDhFMFx1MDkwMFx1MDkyMFx1MDk0MFwwMDBcMDAwXHUwOTYwXHUwOTgwXHUwOUEwXHUwOUMwXHUwOUUwXHUwQTAwIisKKyAgICAgICAgIlx1MEEyMFwwMDBcdTBBNDBcdTBBNjBcdTBBODBcdTBBQTBcdTBBQzBcdTBBRTBcMDAwXHUwQjAwXDAwMFx1MEIyMFx1QTVBNSIrCisgICAgICAgICJcMDExXDAwMFx1MEI0MFx1MEI2MFx1MEI4MFx1MEJBMFx1MEJDMFx1QTVBNUxcMDAwXHUwQkUwXDAwMFwwMDBcdTBDMDAiKworICAgICAgICAiXHUwQzIwXHUwQzQwXHUwQzYwXHUwQzgwXHUwQ0EwXHUwQ0MwXHUwQ0UwXDAwMFx1MEQwMFx1MEQyMFx1MEQ0MFx1MEQ2MCIrCisgICAgICAgICJcdTBEODBcdTBEQTBcdTBEQzBcdTBERTBcMDAwXHUwRTAwXHUwRTIwXHUwRTQwXHUwRTYwXDAwMFwwMDBcMDAwXHUwRTgwIisKKyAgICAgICAgIlx1MEVBMFx1MEVDMFx1MEVFMFx1MEYwMFx1MEYyMFx1MEY0MFx1MEY2MFx1MEY4MFx1MEZBMFx1MEZDMFx1MEZFMFx1MTAwMCIrCisgICAgICAgICJcdTEwMjBcdTEwNDBcdTEwNjBcdUE1QTVcdTA2MjhcMDAwXHUxMDgwXHUxMEEwXHUxMEMwXHUxMEUwXHUxMTAwXHUxMTIwIisKKyAgICAgICAgIlx1MTE0MFx1MTE2MFx1MTE4MFx1MTFBMFx1QTVBNVwwMDZcMDAwXHUxMUMwXHUxMUUwXHUxMjAwXHUxMjIwXHUxMjQwXHUxMjYwIisKKyAgICAgICAgIlx1MTI4MFx1MTJBMFx1MTJDMFx1MTJFMFx1MTMwMFx1MTMyMFx1MTM0MFx1MTM2MFx1MTM4MFx1MTNBMFx1MTNDMFx1MTNFMCIrCisgICAgICAgICJcdTE0MDBcdTE0MjBcdTE0NDBcdTE0NjBcdTE0ODBcdTE0QTBcMDAwXHUxNEMwXHUxNEUwXHUxNTAwXHUxNTIwXHUxNTQwIisKKyAgICAgICAgIlx1MTU2MFx1MTU4MFx1MTVBMFx1MTVDMFx1MTVFMFx1MTYwMFx1MTYyMFx1MTY0MFx1MTY2MFx1MTY4MCIKKyAgICAgICAgLAorICAgICAgICAiXDAwMFx1MTZBMFx1QTVBNSBcMDAwXDAwNVx1QTVBNVwwMDdcMDAwXDAxMlwwMDBcMDIxXHVBNUE1XDAwNFwwMDBcMDI2IisKKyAgICAgICAgIlwwMDBcMDAwXDAzNSEmLVwwMDBcMDAwMjk9XDAwMENPW1wwMDBcdTJCQUVcdTJCQjZcdTJCQkVcdTJCQzZcdTJCQ0VcdTJCRDYiKworICAgICAgICAiXDAwMFx1MkJERVx1MkJFNlx1MkJFRVx1MkJGNlx1MkJGRVx1MkMwNlx1MkMwRVx1MkMxNlx1MkMxRVwwMDBcdTJDMjZcdTJDMkUiKworICAgICAgICAiXHUyQzM2XHUyQzNFXHUyQzQ2XHUyQzRFXDAwMFwwMDBcdTJDNTZcdTJDNUVcdTJDNjZcdTJDNkVcdTJDNzZcMDAwXDAwMCIrCisgICAgICAgICJcdTJDN0VcdTJDODZcdTJDOEVcdTJDOTZcdTJDOUVcdTJDQTZcMDAwXHUyQ0FFXHUyQ0I2XHUyQ0JFXHUyQ0M2XHUyQ0NFIisKKyAgICAgICAgIlx1MkNENlx1MkNERVx1MkNFNlx1MkNFRVwwMDBcdTJDRjZcdTJDRkVcdTJEMDZcdTJEMEVcdTJEMTZcdTJEMUVcMDAwXDAwMCIrCisgICAgICAgICJcdTJEMjZcdTJEMkVcdTJEMzZcdTJEM0VcdTJENDZcMDAwXHUyRDRFXHUyRDU2XHUyRDVFXHUyRDY2XHUyRDZFXHUyRDc2IisKKyAgICAgICAgIlx1MkQ3RVx1MkQ4Nlx1MkQ4RVx1MkQ5Nlx1MkQ5RVx1MkRBNlx1MkRBRVx1MkRCNlx1MkRCRVx1MkRDNlx1MkRDRVwwMDAiKworICAgICAgICAiXDAwMFx1MkRENlx1MkRERVx1MkRFNlx1MkRFRVx1MkRGNlx1MkRGRVx1MkUwNlx1MkUwRVx1MkUxNlx1MkUxRVx1MkUyNiIrCisgICAgICAgICJcdTJFMkVcdTJFMzZcdTJFM0VcdTJFNDZcdTJFNEVcdTJFNTZcdTJFNUVcdTJFNjZcdTJFNkVcMDAwXDAwMFx1MkU3Nlx1MkU3RSIrCisgICAgICAgICJcdTJFODZcdTJFOEVcdTJFOTZcdTJFOUVcdTJFQTZcdTJFQUVcdTJFQjZcMDAwZm5cdTJFQkVcdTJFQzZcdTJFQ0VcdTJFRDYiKworICAgICAgICAiXDAwMFx1MkVERVx1MkVFNlx1MkVFRVx1MkVGNlx1MkVGRVx1MkYwNnZ+XDAwMFwwMDBcdTJGMEVcdTJGMTZcdTJGMUVcdTJGMjYiKworICAgICAgICAiXHUyRjJFXHUyRjM2XHUwMDg2XDAwMFwwMDBcdTJGM0VcdTJGNDZcdTJGNEVcdTJGNTZcdTJGNUVcdTJGNjZcMDAwXDAwMCIrCisgICAgICAgICJcdTJGNkVcdTJGNzZcdTJGN0VcdTJGODZcdTJGOEVcdTJGOTZcdTJGOUVcdTJGQTZcdTJGQUVcdTJGQjZcdTJGQkVcdTJGQzYiKworICAgICAgICAiXHUyRkNFXHUyRkQ2XHUyRkRFXHUyRkU2XHUyRkVFXHUyRkY2XDAwMFwwMDBcdTJGRkVcdTMwMDZcdTMwMEVcdTMwMTZcdTMwMUUiKworICAgICAgICAiXHUzMDI2XHUzMDJFXHUzMDM2XHUzMDNFXHUzMDQ2XHUzMDRFXHUzMDU2XHUzMDVFXHUzMDY2XHUzMDZFXHUzMDc2XHUzMDdFIisKKyAgICAgICAgIlx1MzA4Nlx1MzA4RVx1MzA5Nlx1MzA5RVx1MzBBNlx1MzBBRVx1MDA4RFx1MzBCNlx1MzBCRVx1QTVBNVwwMTVcMDAwXHUzMEM2IisKKyAgICAgICAgIlx1MzBDRVx1QTVBNVwwMjNcMDAwXHUwMDkzXHUwMDlGXHUwMEFCXHUwMEI2XHUwMEJFXHUwMEM2XHUwMENFXHUwMEQ2XHUwMERFIisKKyAgICAgICAgIlx1MzBENlx1MzBERVx1MzBFNlx1MzBFRVx1MzBGNlx1MzBGRVx1MzEwNlx1MzEwRVx1MzExN1x1MzEyM1x1MzEyRlx1MzEzQiIrCisgICAgICAgICJcdTMxNDdcdTMxNTNcdTMxNUZcdTMxNkJcMDAwXHUzMTc3XHUzMTgzXHUzMThGXHUzMTlCXHUzMUE2XHUzMUFFXDAwMFwwMDAiKworICAgICAgICAiXHUzMUI2XHUzMUJFXHUzMUM2XHUzMUNFXHUzMUQ2XHUzMURFXHUzMUU3XHUzMUYzXHUzMUZFXHUzMjA2XHUzMjBFXHUwMDkyIisKKyAgICAgICAgIlx1MDA5RVx1MDBBQVx1MzIxNlx1MzIxRVwwMDBcMDAwXHUzMjI2XHUzMjJFXHUzMjM3XHUzMjQzXHUzMjRFXHUzMjU2XHUzMjVFIisKKyAgICAgICAgIlx1MzI2Nlx1MzI2RVx1MzI3Nlx1MzI3RVx1MzI4Nlx1MzI4RVx1MzI5Nlx1MzI5RVx1MzJBNlx1MzJBRVx1MzJCNlx1MzJCRSIrCisgICAgICAgICJcdTMyQzZcdTMyQ0VcdTMyRDZcdTMyREVcdTMyRTZcdTMyRUVcdTMyRjZcdTMyRkVcdTMzMDZcdTMzMEVcdTMzMTZcdTMzMUUiKworICAgICAgICAiXHUzMzI2XHUzMzJFXHUzMzM2XHUzMzNFXHUzMzQ2XDAwMFwwMDBcdTMzNEVcdTMzNTZcdUE1QTVcMDA2XDAwMFx1MzM1RSIrCisgICAgICAgICJcdTMzNjZcdTMzNkVcdTMzNzZcdTMzN0ZcdTMzOEJcdTMzOTdcdTMzQTNcdTMzQUVcdTMzQjZcdTMzQkZcdTMzQ0JcdTMzRDYiKworICAgICAgICAiXHUzM0RFXHVBNUE1XDAzNFwwMDBcdTAwRTVcdTAwRTlxXHUwMEVEXHUwMEYxXHUwMEY1XHUwMEY5XHUwMEZEXHUwMTAxIisKKyAgICAgICAgIlx1QTVBNVwwMzdcMDAwXHUwMTA2XHUwMTBFXHUwMTE2XHUwMTFFXHUwMTI2XHUwMTJFXDAwMFwwMDBcdTAxMzV9XHUwMDhEIisKKyAgICAgICAgIlx1MDEzOVx1MDEzRFx1QTVBNVwwMzNcMDAwXHUzM0U1XHUzM0U5XDAwMFx1MzNFRFx1MzNGMlx1QTVBNS9cMDAwXHUzM0Y5IisKKyAgICAgICAgIlx1QTVBNVwwMDVcMDAwXHUwMTQyXDAwMFwwMDBcMDAwXHUzM0ZEXHVBNUE1XDAwNVwwMDAmXHVCNDAyXHUzNDBBXHUzNDExIisKKyAgICAgICAgIlx1MzQxNlx1MzQxRVx1MzQyNlwwMDBcdTM0MkVcMDAwXHUzNDM2XHUzNDNFXHUzNDQ3XHVBNUE1XDAzMVwwMDBcdTM0NTIiKworICAgICAgICAiXHUzNDVBXHUzNDYyXHUzNDZBXHUzNDcyXHUzNDdBXHUzNDgzXHVBNUE1XDAzMVwwMDBcdTM0OEVcdTM0OTZcdTM0OUVcdTM0QTYiKworICAgICAgICAiXHUzNEFFXDAwMFx1MDE0OVx1MDE0RFx1MDE1MVx1QjRCNlx1QjRCRVx1MDE1NVx1MDE1OVx1QTVBNVwwMzFcMDAwXHUwMTVEIisKKyAgICAgICAgIlx1MDE2MVx1MDE2NVx1QTVBNVwwMTVcMDAwXHUzNEM2XHUzNENFXDAwMFx1MzRENlwwMDBcMDAwXDAwMFx1MzRERVx1QTVBNSIrCisgICAgICAgICJcMDA0XDAwMFx1MzRFNlx1MzRFRVx1MzRGNlx1QTVBNVwwMTJcMDAwXHUzNEZFXHVBNUE1XDAzN1wwMDBcdTM1MDZcdUE1QTUiKworICAgICAgICAiXDAyNlwwMDBcdTM1MEVcdTM1MTZcMDAwXHUzNTFFXDAwMFwwMDBcMDAwXHUzNTI2XHVBNUE1XDAwNFwwMDBcdTM1MkVcdTM1MzYiKworICAgICAgICAiXHUzNTNFXHVBNUE1XDAyN1wwMDBcdTM1NDZcdTM1NEVcdUE1QTVcMDExXDAwMFx1MzU1Nlx1MzU1RVx1QTVBNVwwMTVcMDAwIisKKyAgICAgICAgIlx1MzU2Nlx1MzU2RVx1MzU3Nlx1MzU3RVwwMDBcMDAwXHUzNTg2XHUzNThFXDAwMFwwMDBcdTM1OTZcdTM1OUVcdTM1QTYiKworICAgICAgICAiXHUzNUFFXHUzNUI2XHUzNUJFXDAwMFwwMDBcdTM1QzZcdTM1Q0VcdTM1RDZcdTM1REVcdTM1RTZcdTM1RUVcMDAwXDAwMCIrCisgICAgICAgICJcdTM1RjZcdTM1RkVcdTM2MDZcdTM2MEVcdTM2MTZcdTM2MUVcdTM2MjZcdTM2MkVcdTM2MzZcdTM2M0VcdTM2NDZcdTM2NEUiKworICAgICAgICAiXDAwMFwwMDBcdTM2NTZcdTM2NUVcdUE1QTVcMDE1XDAwMFx1MDE2QVx1QTVBNVwwMzJcMDAwXHUzNjY2XHUzNjZFXHUzNjc2IisKKyAgICAgICAgIlx1MzY3RVx1MzY4Nlx1QTVBNS5cMDAwXHUwMTcyXHUwMTdBXHUwMTgyXHUwMThBXHVBNUE1XDAwN1wwMDBcdTM2OEVcMDAwIisKKyAgICAgICAgIlx1MzY5Nlx1QTVBNVwwMjBcMDAwXHUzNjlFXHVBNUE1XDAyNVwwMDBcdTM2QTZcdUE1QTVcMDA3XDAwMFx1MzZBRVwwMDAiKworICAgICAgICAiXDAwMFx1MzZCNlx1QTVBNSNcMDAwXHUzNkJFXHUzNkM2XHUzNkNFXHUzNkQ2XHUzNkRFXHUzNkU2XHUzNkVFXHUzNkY2IisKKyAgICAgICAgIlx1QTVBNVwwMTNcMDAwXHUzNkZFXHUzNzA2XHVBNUE1XDAxN1wwMDBcdTM3MEVcdTM3MTZcMDAwXHUzNzFFXHVBNUE1XDAyMyIrCisgICAgICAgICJcMDAwXHUzNzI2XDAwMFwwMDBcdTM3MkVcdUE1QTVcMDQyXDAwMFx1MzczNlx1MzczRVx1Mzc0NlwwMDBcMDAwXHUzNzRFIisKKyAgICAgICAgIlx1QTVBNVwwMTFcMDAwXHUzNzU2XDAwMFwwMDBcdTM3NUVcdTM3NjZcdUE1QTVcMDE3XDAwMFx1Mzc2RVx1Mzc3Nlx1QTVBNSIrCisgICAgICAgICJcMDI2XDAwMFx1Mzc3RVx1QTVBNVwwMjVcMDAwXHUzNzg2XHUzNzhFXHUzNzk2XHVBNUE1XDAzM1wwMDBcdTM3OUVcdUE1QTUiKworICAgICAgICAiXDAyN1wwMDBcdTM3QTZcdUE1QTVcMDA2XDAwMFx1MzdBRVx1MzdCNlwwMDBcdTM3QkVcdTM3QzdcdUE1QTVcMDM2XDAwMCIrCisgICAgICAgICJcdTM3RDJcdTM3REFcdTM3RTJcdUE1QTUtXDAwMFx1MzdFQVwwMDBcdTM3RjJcdTM3RkJcdTM4MDZcdUE1QTVcMDI0XDAwMCIrCisgICAgICAgICJcdTAxOTJcdUE1QTVcMDM3XDAwMFx1MDE5QVx1QTVBNShcMDAwXHUwMUEyXHUwMUFBXHVBNUE1XDAxNlwwMDBcdTAxQjEiKworICAgICAgICAiXHVBNUE1XDAyNlwwMDBcdTM4MEVcdUE1QTVcMDExXDAwMFx1MzgxNlx1QTVBNVwwMDRcMDAwXHUzODFFXHVBNUE1XDAwNCIrCisgICAgICAgICJcMDAwXHUzODI2XHVBNUE1XDAwNFwwMDBcdTM4MkVcdUE1QTVcMDE0XDAwMFx1MzgzNlx1QTVBNVwwMTFcMDAwXHUzODNFIisKKyAgICAgICAgIlwwMDBcdTM4NDZcdTM4NEVcdTAxQjdcdTM4NTZcdTAxQzNcdUE1QTVcMDA3XDAwMFx1Mzg1RVx1QTVBNVwwMjFcMDAwXHUzODY2IisKKyAgICAgICAgIlx1QTVBNVwwMTFcMDAwXHUzODZFXHVBNUE1XDAwNFwwMDBcdTM4NzZcdUE1QTVcMDA0XDAwMFx1Mzg3RVx1QTVBNVwwMDQiKworICAgICAgICAiXDAwMFx1Mzg4Nlx1QTVBNVwwMTRcMDAwXHUzODhFXHVBNUE1XDAxNFwwMDBcdTM4OTZcdUE1QTVcMDMxXDAwMFx1Mzg5RSIrCisgICAgICAgICJcdTM4QTZcdTM4QUVcdTM4QjZcdTM4QkVcdTM4QzZcdTM4Q0VcdTM4RDZcdTM4REZcdTM4RUJcdTM4RjZcdTM4RkVcdTM5MDYiKworICAgICAgICAiXHUzOTBFXHUzOTE2XHUzOTFFXHUzOTI2XHUzOTJFXHUzOTM2XHUzOTNFXHUzOTQ3XHUzOTUzXHUzOTVGXHUzOTZCXHUzOTc2IisKKyAgICAgICAgIlx1Mzk3RVx1Mzk4Nlx1Mzk4RVx1Mzk5N1x1MzlBM1x1MzlBRVx1MzlCNlx1MzlCRVx1MzlDNlx1MzlDRVx1MzlENlx1MzlERSIrCisgICAgICAgICJcdTM5RTZcdTM5RUVcdTM5RjZcdTM5RkVcdTNBMDZcdTNBMEVcdTNBMTZcdTNBMUVcdTNBMjZcdTNBMkZcdTNBM0JcdTNBNDYiKworICAgICAgICAiXHUzQTRFXHUzQTU2XHUzQTVFXHUzQTY2XHUzQTZFXHUzQTc2XHUzQTdFXHUzQTg3XHUzQTkzXHUzQTlFXHUzQUE2XHUzQUFFIisKKyAgICAgICAgIlx1M0FCNlx1M0FCRVx1M0FDNlx1M0FDRVx1M0FENlx1M0FERVx1M0FFNlx1M0FFRVx1M0FGNlx1M0FGRVx1M0IwNlx1M0IwRSIrCisgICAgICAgICJcdTNCMTZcdTNCMUVcdTNCMjZcdTNCMkZcdTNCM0JcdTNCNDdcdTNCNTNcdTNCNUZcdTNCNkJcdTNCNzdcdTNCODNcdTNCOEUiKworICAgICAgICAiXHUzQjk2XHUzQjlFXHUzQkE2XHUzQkFFXHUzQkI2XHUzQkJFXHUzQkM2XHUzQkNGXHUzQkRCXHUzQkU2XHUzQkVFXHUzQkY2IisKKyAgICAgICAgIlx1M0JGRVx1M0MwNlx1M0MwRVx1M0MxN1x1M0MyM1x1M0MyRlx1M0MzQlx1M0M0N1x1M0M1M1x1M0M1RVx1M0M2Nlx1M0M2RSIrCisgICAgICAgICJcdTNDNzZcdTNDN0VcdTNDODZcdTNDOEVcdTNDOTZcdTNDOUVcdTNDQTZcdTNDQUVcdTNDQjZcdTNDQkVcdTNDQzZcdTNDQ0YiKworICAgICAgICAiXHUzQ0RCXHUzQ0U3XHUzQ0YzXHUzQ0ZFXHUzRDA2XHUzRDBFXHUzRDE2XHUzRDFFXHUzRDI2XHUzRDJFXHUzRDM2XHUzRDNFIisKKyAgICAgICAgIlx1M0Q0Nlx1M0Q0RVx1M0Q1Nlx1M0Q1RVx1M0Q2Nlx1M0Q2RVx1M0Q3Nlx1M0Q3RVx1M0Q4Nlx1M0Q4RVx1M0Q5Nlx1M0Q5RSIrCisgICAgICAgICJcdTNEQTZcdTNEQUVcdTNEQjZcdTNEQkVcdTNEQzZcdTNEQ0VcdTNERDZcdTNEREVcdTNERTZcdTAxQ0VcdUJERUVcdUE1QTUiKworICAgICAgICAiXDAwNFwwMDBcdTNERjZcdTNERkVcdTNFMDZcdTNFMEVcdTNFMTdcdTNFMjNcdTNFMkZcdTNFM0JcdTNFNDdcdTNFNTNcdTNFNUYiKworICAgICAgICAiXHUzRTZCXHUzRTc3XHUzRTgzXHUzRThGXHUzRTlCXHUzRUE3XHUzRUIzXHUzRUJGXHUzRUNCXHUzRUQ3XHUzRUUzXHUzRUVGIisKKyAgICAgICAgIlx1M0VGQlx1M0YwNlx1M0YwRVx1M0YxNlx1M0YxRVx1M0YyNlx1M0YyRVx1M0YzN1x1M0Y0M1x1M0Y0Rlx1M0Y1Qlx1M0Y2NyIrCisgICAgICAgICJcdTNGNzNcdTNGN0ZcdTNGOEJcdTNGOTdcdTNGQTNcdTNGQUVcdTNGQjZcdTNGQkVcdTNGQzZcdTNGQ0VcdTNGRDZcdTNGREUiKworICAgICAgICAiXHUzRkU2XHUzRkVGXHUzRkZCXHU0MDA3XHU0MDEzXHU0MDFGXHU0MDJCXHU0MDM3XHU0MDQzXHU0MDRGXHU0MDVCXHU0MDY3IisKKyAgICAgICAgIlx1NDA3M1x1NDA3Rlx1NDA4Qlx1NDA5N1x1NDBBM1x1NDBBRlx1NDBCQlx1NDBDN1x1NDBEM1x1NDBERVx1NDBFNlx1NDBFRSIrCisgICAgICAgICJcdTQwRjZcdTQwRkZcdTQxMEJcdTQxMTdcdTQxMjNcdTQxMkZcdTQxM0JcdTQxNDdcdTQxNTNcdTQxNUZcdTQxNkJcdTQxNzYiKworICAgICAgICAiXHU0MTdFXHU0MTg2XHU0MThFXHU0MTk2XHU0MTlFXHU0MUE2XHU0MUFFXHVBNUE1XDAwNlwwMDBcdTQxQjZcdTQxQkVcdTQxQzciKworICAgICAgICAiXHU0MUQzXHU0MURGXHU0MUVCXHU0MUY3XHU0MjAzXHU0MjBFXHU0MjE2XHU0MjFGXHU0MjJCXHU0MjM3XHU0MjQzXHU0MjRGIisKKyAgICAgICAgIlx1NDI1Qlx1NDI2Nlx1NDI2RVx1NDI3N1x1NDI4M1x1NDI4Rlx1NDI5QlwwMDBcMDAwXHU0MkE2XHU0MkFFXHU0MkI3XHU0MkMzIisKKyAgICAgICAgIlx1NDJDRlx1NDJEQlwwMDBcMDAwXHU0MkU2XHU0MkVFXHU0MkY3XHU0MzAzXHU0MzBGXHU0MzFCXHU0MzI3XHU0MzMzXHU0MzNFIisKKyAgICAgICAgIlx1NDM0Nlx1NDM0Rlx1NDM1Qlx1NDM2N1x1NDM3M1x1NDM3Rlx1NDM4Qlx1NDM5Nlx1NDM5RVx1NDNBN1x1NDNCM1x1NDNCRiIrCisgICAgICAgICJcdTQzQ0JcdTQzRDdcdTQzRTNcdTQzRUVcdTQzRjZcdTQzRkZcdTQ0MEJcdTQ0MTdcdTQ0MjNcdTQ0MkZcdTQ0M0JcdTQ0NDYiKworICAgICAgICAiXHU0NDRFXHU0NDU3XHU0NDYzXHU0NDZGXHU0NDdCXDAwMFwwMDBcdTQ0ODZcdTQ0OEVcdTQ0OTdcdTQ0QTNcdTQ0QUZcdTQ0QkIiKworICAgICAgICAiXDAwMFwwMDBcdTQ0QzZcdTQ0Q0VcdTQ0RDdcdTQ0RTNcdTQ0RUZcdTQ0RkJcdTQ1MDdcdTQ1MTNcMDAwXHU0NTFFXDAwMCIrCisgICAgICAgICJcdTQ1MjdcMDAwXHU0NTMzXDAwMFx1NDUzRlx1NDU0QVx1NDU1Mlx1NDU1Qlx1NDU2N1x1NDU3M1x1NDU3Rlx1NDU4Qlx1NDU5NyIrCisgICAgICAgICJcdTQ1QTJcdTQ1QUFcdTQ1QjNcdTQ1QkZcdTQ1Q0JcdTQ1RDdcdTQ1RTNcdTQ1RUZcdTQ1RkFcdTQ2MDJcdTQ2MEFcdTQ2MTIiKworICAgICAgICAiXHU0NjFBXHU0NjIyXHU0NjJBXHU0NjMyXHU0NjNBXHU0NjQyXHU0NjRBXHU0NjUyXHU0NjVBXHU0NjYyXDAwMFwwMDBcdTQ2NkIiKworICAgICAgICAiXHU0Njc3XHU0NjgwXHU0Njk0XHU0NkE4XHU0NkJDXHU0NkQwXHU0NkU0XHU0NkZCXHU0NzA3XHU0NzEwXHU0NzI0XHU0NzM4IisKKyAgICAgICAgIlx1NDc0Q1x1NDc2MFx1NDc3NFx1NDc4Qlx1NDc5N1x1NDdBMFx1NDdCNFx1NDdDOFx1NDdEQ1x1NDdGMFx1NDgwNFx1NDgxQiIrCisgICAgICAgICJcdTQ4MjdcdTQ4MzBcdTQ4NDRcdTQ4NThcdTQ4NkNcdTQ4ODBcdTQ4OTRcdTQ4QUJcdTQ4QjdcdTQ4QzBcdTQ4RDRcdTQ4RTgiKworICAgICAgICAiXHU0OEZDXHU0OTEwXHU0OTI0XHU0OTNCXHU0OTQ3XHU0OTUwXHU0OTY0XHU0OTc4XHU0OThDXHU0OUEwXHU0OUI0XHU0OUNBIisKKyAgICAgICAgIlx1NDlEMlx1NDlEQlx1NDlFNlx1NDlFRlwwMDBcdTQ5RkFcdTRBMDNcdTRBMEVcdTRBMTZcdTRBMUVcdTRBMjZcdTRBMkUiKworICAgICAgICAiXHUwMUQ2XHU0QTM1XHUwMUQ2XHUwMURFXHVDQTNBXHU0QTQzXHU0QTRFXHU0QTU3XDAwMFx1NEE2Mlx1NEE2Qlx1NEE3NiIrCisgICAgICAgICJcdTRBN0VcdTRBODZcdTRBOEVcdTRBOTZcdUNBOUVcdUNBQTZcdUNBQUVcdTRBQjZcdTRBQkVcdTRBQzdcdTRBRDNcMDAwIisKKyAgICAgICAgIlwwMDBcdTRBREVcdTRBRTdcdTRBRjJcdTRBRkFcdTRCMDJcdTRCMEFcMDAwXHVDQjEyXHVDQjFBXHVDQjIyXHU0QjJBXHU0QjMyIisKKyAgICAgICAgIlx1NEIzQlx1NEI0N1x1NEI1Mlx1NEI1QVx1NEI2Mlx1NEI2Qlx1NEI3Nlx1NEI3RVx1NEI4Nlx1NEI4RVx1NEI5Nlx1Q0I5RSIrCisgICAgICAgICJcdUNCQTZcdTRCQURcMDAwXDAwMFx1NEJCM1x1NEJCRVx1NEJDN1wwMDBcdTRCRDJcdTRCREJcdTRCRTZcdTRCRUVcdTRCRjYiKworICAgICAgICAiXHU0QkZFXHU0QzA2XHVDQzBEXHUwMUU2XDAwMFx1Q0MxMVx1Q0MxNVx1QTVBNVwwMTFcMDA1XHVBNUE1XDAwNlwwMDBcdTAxRUQiKworICAgICAgICAiXHVBNUE1XDAwNVwwMDBcdTAxRjJcdUE1QTVcMDE0XDAwMFx1MDFGOVx1MDFGRVx1MDFGQlx1QTVBNVwwMTBcMDAwXDAwNSIrCisgICAgICAgICJcMDAwXDAwMFwwMDBcdTAyMDZcdTAyMEZcMDAwXHUwMjFBXHUwMjIzXHVBNUE1XDAwNFwwMDBcdTAyMkVcMDAwXHUwMjM2IisKKyAgICAgICAgIlx1QTVBNVwwMTFcMDAwXHUwMjNFXHUwMjQ2XHVBNUE1JlwwMDBcdTAyNERcMDAwXDAwMFwwMDBJXHUwMjUxXHUwMjU1XHUwMjU5IisKKyAgICAgICAgIlx1MDI1RFx1MDI2MVx1MDI2NVx1MDI2OVx1MDI2RFx1MDI3MVx1MDI3NVx1MDA4OVx1MDI0RDlcMDM1IUlcdTAyNTFcdTAyNTUiKworICAgICAgICAiXHUwMjU5XHUwMjVEXHUwMjYxXHUwMjY1XHUwMjY5XHUwMjZEXHUwMjcxXHUwMjc1XHVBNUE1XDAzMVwwMDBcdTAyN0FcdUE1QTUiKworICAgICAgICAiXDAyN1wwMDBcdTAyODNcdTAyOEZcdTAyOTlcdTAyOUVcMDAwXHUwMkE3XHUwMkIzXHUwMkJEXDAwMFx1MDJDMlx1MDJDOSIrCisgICAgICAgICJcdTAyQ0RcdTAyQ0RcdTAyQ0RcdTAwRTVcdTAyRDFlZXV9XDAwMFx1MDBDRFx1MDJENlwwMDBcMDAwXHUwMkREXHUwMkUxIisKKyAgICAgICAgIlx1MDI3OVx1MDI3OVx1MDI3OVwwMDBcMDAwXHUwMkU2XHUwMkVGXHUwMkZBXDAwMFx1MDA5NVwwMDBcdTRDMTlcMDAwXHUwMDk1IisKKyAgICAgICAgIlwwMDBcdTRDMURcdTRDMjJcdTAzMDFcdTAyOTlcMDAwXHUwMzA1XHUwMkYxXHUwMkM1XDAwMFx1MDJFOT1cdTAzMDlcdTAzMEQiKworICAgICAgICAiXHUwMzExXHUwMzE1bVx1QTVBNVwwMzFcMDAwXHUwMzFCXHUwMzI3XHUwMzMzXHUwMzNGXHUwMzRCXHUwMzU3XHUwMzYzIisKKyAgICAgICAgIlx1MDM2Rlx1MDM3Qlx1MDM4N1x1MDM5M1x1MDM5RkJlXHUwM0FBXHUwM0IzXHUwM0JFXHUwM0MxXHUwM0M2XHUwM0NGXHUwM0Q4IisKKyAgICAgICAgIlx1MDNFRVx1MDNGMVx1MDNGNlx1MDNGRnVcdTAyOTlcdTAwOTFcdTAyRTltXHUwNDBBXHUwNDEzXHUwNDFFXHUwNDIxXHUwNDI2IisKKyAgICAgICAgIlx1MDQyRlx1MDQzOFx1MDQ0RVx1MDEzOVx1MDQ1Nlx1MDQ1Rn1cdTAyODlcdTAwQTlcdTA0NjlcdUE1QTVcMDMyXDAwMCIrCisgICAgICAgICJcdTRDMkFcdTRDMzJcdUE1QTVcMDIyXDAwMFx1NEMzQVx1QTVBNVwwMzZcMDAwXHU0QzQyXHU0QzRBXHU0QzUyXHVBNUE1IisKKyAgICAgICAgIlwwMjRcMDAwXHU0QzVBXHVBNUE1XDAwNFwwMDBcdTRDNjJcMDAwXDAwMFx1NEM2QVx1QTVBNVwwMjdcMDAwXHU0QzcyXDAwMCIrCisgICAgICAgICJcdTRDN0FcdUE1QTVcMDA1XDAwMFx1MDQ2RVx1MDQ3N1wwMDBcdTA0ODJcdTA0OEJcdUE1QTVcMDIwXDAwMFx1NEM4MlwwMDAiKworICAgICAgICAiXDAwMFx1NEM4QVwwMDBcMDAwXHU0QzkyXDAwMFx1NEM5QVx1QTVBNVwwMjZcMDAwXHU0Q0EyXDAwMFx1NENBQVx1QTVBNSIrCisgICAgICAgICJcMDEyXDAwMFx1NENCMlx1NENCQVx1NENDMlx1NENDQVx1NENEMlwwMDBcMDAwXHU0Q0RBXHU0Q0UyXDAwMFwwMDBcdTRDRUEiKworICAgICAgICAiXHU0Q0YyXHVBNUE1XDAwNlwwMDBcdTRDRkFcdTREMDJcMDAwXDAwMFx1NEQwQVx1NEQxMlwwMDBcMDAwXHU0RDFBXHU0RDIyIisKKyAgICAgICAgIlx1QTVBNVwwNDJcMDAwXHU0RDJBXHU0RDMyXHU0RDNBXHU0RDQyXHVBNUE1XDAyMFwwMDBcdTRENEFcdTRENTJcdTRENUEiKworICAgICAgICAiXHU0RDYyXHVBNUE1XDAwNlwwMDBcdTRENkFcdTRENzJcdTREN0FcdTREODJcdUE1QTVcMDMzXDAwMFx1NEQ4OVx1NEQ4RCIrCisgICAgICAgICJcdUE1QTVcMDI1XDAwMDlcMDM1IUlcdTAyNTFcdTAyNTVcdTAyNTlcdTAyNURcdTAyNjFcdTA0OTZcdTA0OUVcdTA0QTYiKworICAgICAgICAiXHUwNEFFXHUwNEI2XHUwNEJFXHUwNEM2XHUwNENFXHUwNEQ2XHUwNERFXHUwNEU2XHUwNEVGXHUwNEZCXHUwNTA3XHUwNTEzIisKKyAgICAgICAgIlx1MDUxRlx1MDUyQlx1MDUzN1x1MDU0M1x1MDU0Rlx1MDU1OFx1MDU2Q1x1MDU4MFx1MDU5NFx1MDVBOFx1MDVCQ1x1MDVEMCIrCisgICAgICAgICJcdTA1RTRcdTA1RjhcdTA2MENcdTA2MjBcdTA2MzZcdTA2M0VcdTA2NDZcdTA2NEVcdTA2NTZcdTA2NUVcdTA2NjZcdTA2NkUiKworICAgICAgICAiXHUwNjc2XHUwNjdGXHUwNjhCXHUwNjk3XHUwNkEzXHUwNkFGXHUwNkJCXHUwNkM3XHUwNkQzXHUwNkRGXHUwNkVCXHUwNkY3IisKKyAgICAgICAgIlx1MDcwM1x1MDcwRlx1MDcxQlx1MDcyN1x1MDczM1x1MDczRlx1MDc0Qlx1MDc1N1x1MDc2M1x1MDc2Rlx1MDc3Qlx1MDc4NyIrCisgICAgICAgICJcdTA3OTNcdTA3OUZcdTA3QUJcdTA3QjdcdTA3QzNcdTA3Q0ZcdTA3REJcdTA3RTdcdTA3RjNcdTA3RkZcdTA4MEJcdTA4MTciKworICAgICAgICAiXHUwODIzXHUwODJGXHUwODM5XHUwMzAxXHUwMjk5XHUwMDkxXHUwMkYxXHUwMkM1XHUwODNEXHUwMkNEZWlcdTA4NDF1IisKKyAgICAgICAgIlx1MDJFOVx1MDBDRFx1MDg0NVx1MDJERFx1MDJFMVx1MDI3OVx1MDJFNVx1MDJFRFx1MDg0OVx1MDNDMVx1MDg0RFx1MDNGMSIrCisgICAgICAgICJcdTA4NTFcdTAwOTVcMDIxXHUwNzExXHUwMjg5XHUwMEE5XHUwMzA1XHUwNzQxXHUwMkM5XHUwMEU1bXFcdTA3N0R9XHUwNDY5IisKKyAgICAgICAgIlx1MDA4OT1cdTA3QjlcdTA3QzVcdTAwRURcdTAwOERcdTA3RTlcdTAyQjlcdTA0MjFcdTAwRkRcdTAxMzlcdTAxMDFcdTAwQTEiKworICAgICAgICAiXHUwMjREXHVBNUE1NFwwMDBcdTA4NTVcdUE1QTVcMDIzXDAwMFx1MDg1OVx1QTVBNVwwMTRcMDAwXHUwODVEXHUwODYxIisKKyAgICAgICAgIlx1MDg2NVx1MDg2OVx1MDg2RFx1MDg3MVx1MDg3NVx1MDg3OVx1MDg3RFx1MDg4MVx1MDg4NVx1MDg4OVx1MDg4RFx1MDg5MSIrCisgICAgICAgICJcdTA4OTVcdTA4OTlcdTA4OURcdTA4QTFcdTA4QTVcdTA4QTlcdTA4QURcdTA4QjFcdTA4QjVcdTA4QjlcdTA4QkRcdTA4QzEiKworICAgICAgICAiXHUwOEM1XHUwOEM5XHUwOENEXHUwOEQxXHUwOEQ1XHUwOEQ5XHUwOEREXHUwOEUxXHUwOEU1XHUwOEU5XHUwOEVEXHUwOEYxIisKKyAgICAgICAgIlx1MDhGNVx1MDhGOVx1MDhGRFx1MDkwMVx1MDkwNVx1MDkwOVx1MDkwRFx1MDkxMVx1MDkxNVx1MDkxOVx1MDkxRFx1MDkyMSIrCisgICAgICAgICJcdTA5MjVcdTA5MjlcdTA5MkRcdTA5MzFcdTA5MzVcdTA5MzlcdTA5M0RcdTA5NDFcdTA5NDVcdTA5NDlcdTA5NERcdTA5NTEiKworICAgICAgICAiXHUwOTU1XHUwOTU5XHUwOTVEXHUwOTYxXHUwOTY1XHUwOTY5XHUwOTZEXHUwOTcxXHUwOTc1XHUwOTc5XHUwOTdEXHUwOTgxIisKKyAgICAgICAgIlx1MDk4NVx1MDk4OVx1MDk4RFx1MDk5MVx1MDk5NVx1MDk5OVx1MDk5RFx1MDlBMVx1MDlBNVx1MDlBOVx1MDlBRFx1MDlCMSIrCisgICAgICAgICJcdTA5QjVcdTA5QjlcdTA5QkRcdTA5QzFcdTA5QzVcdTA5QzlcdTA5Q0RcdTA5RDFcdTA5RDVcdTA5RDlcdTA5RERcdTA5RTEiKworICAgICAgICAiXHUwOUU1XHUwOUU5XHUwOUVEXHUwOUYxXHUwOUY1XHUwOUY5XHUwOUZEXHUwQTAxXHUwQTA1XHUwQTA5XHUwQTBEXHUwQTExIisKKyAgICAgICAgIlx1MEExNVx1MEExOVx1MEExRFx1MEEyMVx1MEEyNVx1MEEyOVx1MEEyRFx1MEEzMVx1MEEzNVx1MEEzOVx1MEEzRFx1MEE0MSIrCisgICAgICAgICJcdTBBNDVcdTBBNDlcdTBBNERcdTBBNTFcdTBBNTVcdTBBNTlcdTBBNURcdTBBNjFcdTBBNjVcdTBBNjlcdTBBNkRcdTBBNzEiKworICAgICAgICAiXHUwQTc1XHUwQTc5XHUwQTdEXHUwQTgxXHUwQTg1XHUwQTg5XHUwQThEXHUwQTkxXHUwQTk1XHUwQTk5XHUwQTlEXHUwQUExIisKKyAgICAgICAgIlx1MEFBNVx1MEFBOVx1MEFBRFx1MEFCMVx1MEFCNVx1MEFCOVx1MEFCRFx1MEFDMVx1MEFDNVx1MEFDOVx1MEFDRFx1MEFEMSIrCisgICAgICAgICJcdTBBRDVcdTBBRDlcdTBBRERcdTBBRTFcdTBBRTVcdTBBRTlcdTBBRURcdTBBRjFcdTBBRjVcdTBBRjlcdTBBRkRcdTBCMDEiKworICAgICAgICAiXHUwQjA1XHUwQjA5XHUwQjBEXHUwQjExXHUwQjE1XHUwQjE5XHUwQjFEXHUwQjIxXHUwQjI1XHUwQjI5XHUwQjJEXHUwQjMxIisKKyAgICAgICAgIlx1MEIzNVx1MEIzOVx1MEIzRFx1MEI0MVx1MEI0NVx1MEI0OVx1MEI0RFx1MEI1MVx1MEI1NVx1MEI1OVx1MEI1RFx1MEI2MSIrCisgICAgICAgICJcdTBCNjVcdTBCNjlcdTBCNkRcdTBCNzFcdTBCNzVcdTBCNzlcdTBCN0RcdTBCODFcdTBCODVcdTBCODlcdTBCOERcdTBCOTEiKworICAgICAgICAiXHUwQjk1XHUwQjk5XHUwQjlEXHUwQkExXHUwQkE1XHUwQkE5XHUwQkFEXHUwQkIxXHVBNUE1XDAxMlwwMDBcMDA1XHVBNUE1IisKKyAgICAgICAgIjVcMDAwXHUwQkI1XDAwMFx1MDhCOVx1MEJCOVx1MEJCRFx1QTVBNVwwMjFcMDAwXHU0RDkyXDAwMFx1NEQ5QVwwMDBcdTREQTIiKworICAgICAgICAiXDAwMFx1NERBQVwwMDBcdTREQjJcMDAwXHU0REJBXDAwMFx1NERDMlwwMDBcdTREQ0FcMDAwXHU0REQyXDAwMFx1NEREQSIrCisgICAgICAgICJcMDAwXHU0REUyXDAwMFx1NERFQVwwMDBcMDAwXHU0REYyXDAwMFx1NERGQVwwMDBcdTRFMDJcdUE1QTVcMDA2XDAwMFx1NEUwQSIrCisgICAgICAgICJcdTRFMTJcMDAwXHU0RTFBXHU0RTIyXDAwMFx1NEUyQVx1NEUzMlwwMDBcdTRFM0FcdTRFNDJcMDAwXHU0RTRBXHU0RTUyIisKKyAgICAgICAgIlx1QTVBNVwwMjZcMDAwXHU0RTVBXHVBNUE1XDAwNlwwMDBcdTBCQzJcdTBCQ0FcMDAwXHU0RTYyXHVBNUE1XDAxNVwwMDAiKworICAgICAgICAiXHU0RTZBXDAwMFx1NEU3MlwwMDBcdTRFN0FcMDAwXHU0RTgyXDAwMFx1NEU4QVwwMDBcdTRFOTJcMDAwXHU0RTlBXDAwMCIrCisgICAgICAgICJcdTRFQTJcMDAwXHU0RUFBXDAwMFx1NEVCMlwwMDBcdTRFQkFcMDAwXHU0RUMyXDAwMFwwMDBcdTRFQ0FcMDAwXHU0RUQyIisKKyAgICAgICAgIlwwMDBcdTRFREFcdUE1QTVcMDA2XDAwMFx1NEVFMlx1NEVFQVwwMDBcdTRFRjJcdTRFRkFcMDAwXHU0RjAyXHU0RjBBXDAwMCIrCisgICAgICAgICJcdTRGMTJcdTRGMUFcMDAwXHU0RjIyXHU0RjJBXHVBNUE1XDAyNlwwMDBcdTRGMzJcMDAwXDAwMFx1NEYzQVx1NEY0Mlx1NEY0QSIrCisgICAgICAgICJcdTRGNTJcMDAwXDAwMFwwMDBcdTRGNUFcdUE1QTVcMDIyXDAwMFx1MEJEMVx1MEJENVx1MEJEOVx1MEJERFx1MEJFMVx1MEJFNSIrCisgICAgICAgICJcdTBCRTlcdTBCRURcdTBCRjFcdTBCRjVcdTBCRjlcdTBCRkRcdTBDMDFcdTBDMDVcdTBDMDlcdTBDMERcdTBDMTFcdTBDMTUiKworICAgICAgICAiXHUwQzE5XHUwQzFEXHUwQzIxXHUwQzI1XHUwQzI5XHUwQzJEXHUwQzMxXHUwQzM1XHUwQzM5XHUwQzNEXHUwQzQxXHUwQzQ1IisKKyAgICAgICAgIlx1MEM0OVx1MEM0RFx1MEM1MVx1MEM1NVx1MEM1OVx1MEM1RFx1MEM2MVx1MEM2NVx1MEM2OVx1MEM2RFx1MEM3MVx1MEM3NSIrCisgICAgICAgICJcdTBDNzlcdTBDN0RcdTBDODFcdTBDODVcdTBDODlcdTBDOERcdTBDOTFcdTBDOTVcdTBDOTlcdTBDOURcdTBDQTFcdTBDQTUiKworICAgICAgICAiXHUwQ0E5XHUwQ0FEXHUwQ0IxXHUwQ0I1XHUwQ0I5XHUwQ0JEXHUwQ0MxXHUwQ0M1XHUwQ0M5XHUwQ0NEXHUwQ0QxXHUwQ0Q1IisKKyAgICAgICAgIlx1MENEOVx1MENERFx1MENFMVx1MENFNVx1MENFOVx1MENFRFx1MENGMVx1MENGNVx1MENGOVx1MENGRFx1MEQwMVx1MEQwNSIrCisgICAgICAgICJcdTBEMDlcdTBEMERcdTBEMTFcdTBEMTVcdTBEMTlcdTBEMURcdTBEMjFcdTBEMjVcdTBEMjlcdTBEMkRcdTBEMzFcdTBEMzUiKworICAgICAgICAiXHUwRDM5XHUwRDNEXHUwRDQxXHUwRDQ1XDAwMFwwMDBcMDAwXHUwODVEXHUwODc1XHUwRDQ5XHUwRDREXHUwRDUxXHUwRDU1IisKKyAgICAgICAgIlx1MEQ1OVx1MEQ1RFx1MDg2RFx1MEQ2MVx1MEQ2NVx1MEQ2OVx1MEQ2RFx1MDg3RFx1MEQ3M1x1MEQ3Rlx1MEQ4Qlx1MEQ5NyIrCisgICAgICAgICJcdTBEQTNcdTBEQUZcdTBEQkJcdTBEQzdcdTBERDNcdTBEREZcdTBERUJcdTBERjdcdTBFMDNcdTBFMEZcdTBFMThcdTBFMkMiKworICAgICAgICAiXHUwRTQwXHUwRTU0XHUwRTY4XHUwRTdDXHUwRTkwXHUwRUE0XHUwRUI4XHUwRUNDXHUwRUUwXHUwRUY0XHUwRjA4XHUwRjFDIisKKyAgICAgICAgIlx1MEYzMFwwMDBcMDAwXDAwMFx1MEY0N1x1MEY1M1x1MEY1Rlx1MEY2Qlx1MEY3N1x1MEY4M1x1MEY4Rlx1MEY5Qlx1MEZBNyIrCisgICAgICAgICJcdTBGQjNcdTBGQkZcdTBGQ0JcdTBGRDdcdTBGRTNcdTBGRUZcdTBGRkJcdTEwMDdcdTEwMTNcdTEwMUZcdTEwMkJcdTEwMzciKworICAgICAgICAiXHUxMDQzXHUxMDRGXHUxMDVCXHUxMDY3XHUxMDczXHUxMDdGXHUxMDhCXHUxMDk3XHUxMEEzXHUxMEFGXHUxMEJCXHUxMEM3IisKKyAgICAgICAgIlx1MTBEM1x1MTBERlx1MTBFQlx1QTVBNVwwMzRcMDAwXHUwQkQxXHUwQkREXHUwQkU5XHUwQkYxXHUwQzExXHUwQzE1XHUwQzIxIisKKyAgICAgICAgIlx1MEMyOVx1MEMyRFx1MEMzNVx1MEMzOVx1MEMzRFx1MEM0MVx1MEM0NVx1MEUxRVx1MEUzMlx1MEU0Nlx1MEU1QVx1MEU2RSIrCisgICAgICAgICJcdTBFODJcdTBFOTZcdTBFQUFcdTBFQkVcdTBFRDJcdTBFRTZcdTBFRkFcdTBGMEVcdTBDNDZcdUE1QTVcMDA0XDAwMFx1MDg1RCIrCisgICAgICAgICJcdTA4NzVcdTBENDlcdTBENERcdTBGNzlcdTBGODVcdTBGOTFcdTA4ODlcdTBGQTlcdTA4QjlcdTA5ODFcdTA5QjFcdTA5QUQiKworICAgICAgICAiXHUwOTg1XHUwQUY1XHUwOEQ5XHUwOTc5XHUxMDE1XHUxMDIxXHUxMDJEXHUxMDM5XHUxMDQ1XHUxMDUxXHUxMDVEXHUxMDY5IisKKyAgICAgICAgIlx1MTBGNVx1MTBGOVx1MDhGMVx1MTBGRFx1MTEwMVx1MTEwNVx1MTEwOVx1MTEwRFx1MTBENVx1MTExMVx1MTExNVx1MEQ1MSIrCisgICAgICAgICJcdTBENTVcdTBENTlcdTExMTlcdTExMURcdTExMjFcdTExMjVcdTEwOERcdTEwOTlcdTEwQTVcdTEwQjFcdTEwQkRcdTExMjkiKworICAgICAgICAiXHVBNUE1XDAxN1wwMDBcdTExMkVcdTExMzZcdTExM0VcdTExNDZcdTExNEVcdTExNTZcdTExNUVcdTExNjZcdTExNkVcdTExNzciKworICAgICAgICAiXHUxMTgzXHUxMThGXHVBNUE1XDAwNFwwMDBcdTExOTlcdTExOURcdTExQTFcdTExQTVcdTExQTlcdTExQURcdTExQjFcdTExQjUiKworICAgICAgICAiXHUxMUI5XHUxMUJEXHUxMUMxXHUxMUM1XHUxMUM5XHUxMUNEXHUxMUQxXHUxMUQ1XHUxMUQ5XHUxMUREXHUxMUUxXHUxMUU1IisKKyAgICAgICAgIlx1MTFFOVx1MTFFRFx1MTFGMVx1MTFGNVx1MTFGOVx1MTFGRFx1MTIwMVx1MTIwNVx1MTIwOVx1MTIwRFx1MTIxMVx1MTIxNSIrCisgICAgICAgICJcdTEyMTlcdTEyMURcdTEyMjFcdTEyMjVcdTEyMjlcdTEyMkRcdTEyMzFcdTEyMzVcdTEyMzlcdTEyM0RcdTEyNDFcdTEyNDUiKworICAgICAgICAiXHUxMjQ5XHUxMjREXHUxMjUxXDAwMFx1MTI1NFx1MTI2Q1x1MTI4MFx1MTI5Qlx1MTJBNFx1MTJCRlx1MTJDQlx1MTJENCIrCisgICAgICAgICJcdTEyRjBcdTEzMDdcdTEzMTNcdTEzMUZcdTEzMjhcdTEzM0NcdTEzNTBcdTEzNjRcdTEzNzhcdTEzOENcdTEzQTBcdTEzQjQiKworICAgICAgICAiXHUxM0QyXHUxM0Q4XHUxM0Y0XHUxNDEwXHUxM0UwXHUxNDI4XHUxNDQ0XHUxNDYwXHUxNDc3XHUxNDgzXHUxNDhDXHUxNEEwIisKKyAgICAgICAgIlx1MTRCNFx1MTRDQ1x1MTRFN1x1MTRGM1x1MTRGQ1x1MTUxM1x1MTUxRlx1MTQzQVx1MTUyQVx1MTUzM1x1MTUzRlx1MTU0OCIrCisgICAgICAgICJcdTE1NjRcdTE1NzhcdTE1OTBcdTE1QUNcdTE1QzNcdTE1Q0ZcdTE1RDhcdTE1RjRcdTE2MDhcdTE2MjdcdTE2MzBcdTE2NEIiKworICAgICAgICAiXHUxNjU0XHUxNjZCXHUxNjc0XHUxNjg4XHUxNkEwXHUxNkI0XHUxNkNDXHUxNkUyXHUxNkU4XHUxNzAzXHUxNzBGXHUxNzE4IisKKyAgICAgICAgIlx1MTcyRlx1MTczQlx1MTc0N1x1MTc1MFx1MTc2OFx1MTc3RVx1MTc4NFx1MTdBM1x1MTdBQ1x1MTNGQ1x1MTdDNFx1MTdEQiIrCisgICAgICAgICJcdTE3RTdcdTE3RjBcdTE4MDZcdTE4MENcdTE4MjBcdTE4M0FcdTE4NDBcdTE0MUJcdTE4NUVcdTE4NjZcdTE4NkVcdTE4NzYiKworICAgICAgICAiXHUxODdFXHUxODg2XHUxODhFXHUxODk2XHUxODlFXHUxOEE2XHUxOEFGXHUxOEJCXHUxOEM3XHUxOEQzXHUxOERGXHUxOEVCIisKKyAgICAgICAgIlx1MThGN1x1MTkwM1x1MTkwRlx1MTkxQlx1MTkyN1x1MTkzM1x1MTkzRlx1MTk0Qlx1MTk1N1x1MTk2M1x1MTk2RVx1MTk3NiIrCisgICAgICAgICJcdTE5N0ZcdTE5OEFcdTE5OTJcdUE1QTVcMDA0XDAwMFx1MTk5QVx1MTlBMlx1MTlBQVx1MTlCMlx1MTlCOFx1MTlDRVx1MTlENiIrCisgICAgICAgICJcdTE5REVcdTE5RTZcdTE5RUVcdTE5RjZcdTAyRkVcdTE5RkVcdTFBMDdcdTFBMTBcdTFBMjZcdTFBMkVcdTFBMzZcdTFBM0UiKworICAgICAgICAiXHUxQTQ2XHUxQTRFXHUxQTU2XHUxQTVGXHUxQTZCXHUxQTc3XHUxQTgzXHUxQThFXHUxQTk2XHUxQTlFXHUxQUE2XHUxQUFFIisKKyAgICAgICAgIlx1MUFCNlx1MUFCRVx1MUFDNlx1MUFDRVx1MUFENlx1MUFERlx1MUFFQlx1MUFFMlx1MUFGN1x1MUIwM1x1MUIwRlx1MUIwNiIrCisgICAgICAgICJcdTFCMUJcdTFCMjdcdTFCMzBcdTE5NjZcdTFCNDdcdTFCNTNcdTFCNUZcdTFCNkJcdTFCNzRcdTFCOENcdTFCQUFcdTAwOEEiKworICAgICAgICAiXHUxQkIyXHUxQkJBXHUxQkMyXHUxQkNBXHUxQkQyXHUxQkRBXHUxQkUyXHUxQkVBXHUxQkYyXHUxQkZBXHUxQzAyXHUxQzBBIisKKyAgICAgICAgIlx1MUMxMlx1MUMxQVx1MUMyMlx1MUMyQVx1MUMzMFx1MUM0Nlx1MUM0RVx1MUM1Nlx1MUM1Q1x1MUM3M1x1MUM3RVx1MUM4NiIrCisgICAgICAgICJcdTFDOEVcdTFDOTZcdTFDOUVcdTFDQTZcdTFDQUVcdTFDQjZcdTFBOTJcdTFDQkVcdTFDQzdcdTFDRDJcdTFDREFcdTFDRTMiKworICAgICAgICAiXHUxQ0VGXHUxQ0ZBXHUxRDAwXHUxRDE3XHUxRDIyXHUxRDJBXHUxRDMyXHUxRDNBXDAwMFwwMDBcdTFENDJcdTFENEFcdTFENTIiKworICAgICAgICAiXHUxRDVBXHUxRDYyXHUxRDZBXHUxRDcyXHUxRDdBXHUxRDgyXHUxRDhCXHUxRDk3XHUxREEzXHUxREFGXHUxREJCXHUxREM3IisKKyAgICAgICAgIlx1MUREM1x1MURERlx1MURFQlx1MURGN1x1MUUwM1x1MUUwRlx1MUUxQlx1MUUyN1x1MUUzM1x1MUUzRlx1MUU0Qlx1MUU1NyIrCisgICAgICAgICJcdTFFNjNcdTFFNkZcdTFFN0JcdTFFODdcMDAwXHU0RjYxXHU0RjY1XHU0RjY5XHU0RjZEXHU0RjcxXHU0Rjc1XHU0Rjc5IisKKyAgICAgICAgIlx1NEY3RFx1NEY4MVx1NEY4NVx1NEY4OVx1NEY4RFx1NEY5MVx1NEY5NVx1NEY5OVx1NEY5RFx1NEZBMVx1NEZBNVx1NEZBOSIrCisgICAgICAgICJcdTRGQURcdTRGQjFcdTRGQjVcdTRGQjlcdTRGQkRcdTRGQzFcdTRGQzVcdTRGQzlcdTRGQ0RcdTRGRDFcdTRGRDVcdTRGRDkiKworICAgICAgICAiXHU0RkREXHU0RkUxXHU0RkU1XHU0RkU5XHU0RkVEXHU0RkYxXHU0RkY1XHU0RkY5XHU0RkZEXHU1MDAxXHU1MDA1XHU1MDA5IisKKyAgICAgICAgIlx1NTAwRFx1NTAxMVx1NTAxNVx1NTAxOVx1NTAxRFx1NTAyMVx1NTAyNVx1NTAyOVx1NTAyRFx1NTAzMVx1NTAzNVx1NTAzOSIrCisgICAgICAgICJcdTUwM0RcdTUwNDFcdTUwNDVcdTUwNDlcdTUwNERcdTUwNTFcdTUwNTVcdTUwNTlcdTUwNURcdTUwNjFcdTUwNjVcdTUwNjkiKworICAgICAgICAiXHU1MDZEXHU1MDcxXHU1MDc1XHU1MDc5XHU1MDdEXHU1MDgxXHU1MDg1XHU1MDg5XHU1MDhEXHU1MDkxXHU1MDk1XHU1MDk5IisKKyAgICAgICAgIlx1NTA5RFx1NTBBMVx1NTBBNVx1NTBBOVx1NTBBRFx1NTBCMVx1NTBCNVx1NTBCOVx1NTBCRFx1NTBDMVx1NTBDNVx1NTBDOSIrCisgICAgICAgICJcdTUwQ0RcdTUwRDFcdTUwRDVcdTUwRDlcdTUwRERcdTUwRTFcdTUwRTVcdTUwRTlcdTUwRURcdTUwRjFcdTUwRjVcdTUwRjkiKworICAgICAgICAiXHU1MEZEXHU1MTAxXHU1MTA1XHU1MTA5XHU1MTBEXHU1MTExXHU1MTE1XHU1MTE5XHU1MTFEXHU1MTIxXHU1MTI1XHU1MTI5IisKKyAgICAgICAgIlx1NTEyRFx1NTEzMVx1NTEzNVx1NTEzOVx1NTEzRFx1NTE0MVx1NTE0NVx1NTE0OVx1NTE0RFx1NTE1MVx1NTE1NVx1NTE1OSIrCisgICAgICAgICJcdTUxNURcdTUxNjFcdTUxNjVcdTUxNjlcdTUxNkRcdTUxNzFcdTUxNzVcdTUxNzlcdTUxN0RcdTUxODFcdTUxODVcdTUxODkiKworICAgICAgICAiXHU1MThEXHU1MTkxXHU1MTk1XHU1MTk5XHU1MTlEXHU1MUExXHU1MUE1XHU1MUE5XHU1MUFEXHU1MUIxXHU1MUI1XHU1MUI5IisKKyAgICAgICAgIlx1NTFCRFx1NTFDMVx1NTFDNVx1NTFDOVx1NTFDRFx1NTFEMVx1NTFENVx1NTFEOVx1NTFERFx1NTFFMVx1NTFFNVx1NTFFOSIrCisgICAgICAgICJcdTUxRURcdTUxRjFcdTUxRjVcdTUxRjlcdTUxRkRcdTUyMDFcdTUyMDVcdTUyMDlcdTUyMERcdTUyMTFcdTUyMTVcdTUyMTkiKworICAgICAgICAiXHU1MjFEXHU1MjIxXHU1MjI1XHU1MjI5XHU1MjJEXHU1MjMxXHU1MjM1XHU1MjM5XHU1MjNEXHU1MjQxXHU1MjQ1XHU1MjQ5IisKKyAgICAgICAgIlx1NTI0RFx1NTI1MVx1NTI1NVx1NTI1OVx1NTI1RFx1NTI2MVx1NTI2NVx1NTI2OVx1NTI2RFx1NTI3MVx1NTI3NVx1NTI3OSIrCisgICAgICAgICJcdTUyN0RcdTUyODFcdTUyODVcdTUyODlcdTUyOERcdTUyOTFcdTUyOTVcdTUyOTlcdTUyOURcdTUyQTFcdTUyQTVcdTUyQTkiKworICAgICAgICAiXHU1MkFEXHU1MkIxXHU1MkI1XHU1MkI5XHU1MkJEXHU1MkMxXHU1MkM1XHU1MkM5XHU1MkNEXHU1MkQxXHU1MkQ1XHU1MkQ5IisKKyAgICAgICAgIlx1NTJERFx1NTJFMVx1NTJFNVx1NTJFOVx1NTJFRFx1NTJGMVx1NTJGNVx1NTJGOVx1NTJGRFx1NTMwMVx1NTMwNVx1NTMwOSIrCisgICAgICAgICJcdTUzMERcdTUzMTFcdTUzMTVcdTUzMTlcdTUzMURcdTUzMjFcdTUzMjVcdTUzMjlcdTUzMkRcdTUzMzFcdTUzMzVcdTUzMzkiKworICAgICAgICAiXHU1MzNEXHU1MzQxXHU1MzQ1XHU1MzQ5XHU1MzREXHU1MzUxXHU1MzU1XHU1MzU5XHU1MzVEXHU1MzYxXHU1MzY1XHU1MzY5IisKKyAgICAgICAgIlx1NTM2RFx1NTM3MVx1NTM3NVx1NTM3OVx1NTM3RFx1NTM4MVx1NTM4NVx1NTM4OVx1NTM4RFx1NTM5MVx1NTM5NVwwMDAiKworICAgICAgICAiXDAwMFx1NTM5OVwwMDBcdTUzOURcMDAwXDAwMFx1NTNBMVx1NTNBNVx1NTNBOVx1NTNBRFx1NTNCMVx1NTNCNVx1NTNCOSIrCisgICAgICAgICJcdTUzQkRcdTUzQzFcdTUzQzVcMDAwXHU1M0M5XDAwMFx1NTNDRFwwMDBcMDAwXHU1M0QxXHU1M0Q1XDAwMFwwMDBcMDAwIisKKyAgICAgICAgIlx1NTNEOVx1NTNERFx1NTNFMVx1NTNFNVx1QTVBNVwwMjJcMDAwXHUxRTkyXHUxRTlBXHUxRUEyXHUxRTk3XHUxRUFCXHUxRUI2IisKKyAgICAgICAgIlx1MUVCNlx1QTVBNVwwMTRcMDAwXHUxRUJFXHUxRUM2XHUxRUNFXHUxRUQ2XHUxRURFXHVBNUE1XDAwNVwwMDBcdTUzRUEiKworICAgICAgICAiXDAwMFx1NTNGMlx1MUVFNVx1MDMwOVx1MDMxNVx1MUVFOVx1MUVFRFx1MUVGMVx1MUVGNVx1MUVGOVx1MUVGRFx1MDI2NSIrCisgICAgICAgICJcdTUzRkFcdTU0MDJcdTU0MEJcdTU0MTdcdTU0MjJcdTU0MkFcdTU0MzJcdTU0M0FcdTU0NDJcdTU0NEFcdTU0NTJcdTU0NUEiKworICAgICAgICAiXHU1NDYyXDAwMFx1NTQ2QVx1NTQ3Mlx1NTQ3QVx1NTQ4Mlx1NTQ4QVwwMDBcdTU0OTJcMDAwXHU1NDlBXHU1NEEyXDAwMCIrCisgICAgICAgICJcdTU0QUFcdTU0QjJcMDAwXHU1NEJBXHU1NEMyXHU1NENBXHU1NEQyXHU1NERBXHU1NEUyXHU1NEVBXHU1NEYyXHU1NEZBIisKKyAgICAgICAgIlx1MUYwMlx1MUYwOVx1MUYwOVx1QTVBNVwwMDRcdTFGMERcdUE1QTVcMDA0XHUxRjExXHVBNUE1XDAwNFx1MUYxNVx1QTVBNSIrCisgICAgICAgICJcMDA0XHUxRjE5XHVBNUE1XDAwNFx1MUYxRFx1QTVBNVwwMDRcdTFGMjFcdUE1QTVcMDA0XHUxRjI1XHVBNUE1XDAwNFx1MUYyOSIrCisgICAgICAgICJcdUE1QTVcMDA0XHUxRjJEXHVBNUE1XDAwNFx1MUYzMVx1QTVBNVwwMDRcdTFGMzVcdUE1QTVcMDA0XHUxRjM5XHUxRjNEIisKKyAgICAgICAgIlx1MUYzRFx1MUY0MVx1MUY0MVx1MUY0NVx1MUY0NVx1MUY0OVx1MUY0OVx1MUY0RFx1MUY0RFx1MUY1MVx1MUY1MVx1QTVBNSIrCisgICAgICAgICJcMDA0XHUxRjU1XHVBNUE1XDAwNFx1MUY1OVx1QTVBNVwwMDRcdTFGNURcdUE1QTVcMDA0XHUxRjYxXHUxRjY1XHUxRjY1IisKKyAgICAgICAgIlx1QTVBNVwwMDRcdTFGNjlcdTFGNkVcdTFGNkVcdUE1QTVcMDA0XHUxRjc1XHVBNUE1XDAwNFx1MUY3OVx1MUY3RFx1MUY3RCIrCisgICAgICAgICJcdTFGODJcdTFGODJcdUE1QTUhXDAwMFx1QTVBNVwwMDRcdTFGODlcdTAxODFcdTAxODFcdTFGOERcdTFGOERcdTFGOTEiKworICAgICAgICAiXHUxRjkxXHUwMTgyXHUxRjk1XHUxRjk1XHUxRjk5XHUxRjk5XHUxRjlEXHUxRjlEXHVBNUE1XDAwNFx1MUZBMVx1MUZBNSIrCisgICAgICAgICJcdTFGQTVcdTFGQUJcdTFGQUJcdTFGQjdcdTFGQjdcdTFGQzNcdTFGQzNcdTFGQ0ZcdTFGQ0ZcdTFGREJcdTFGREJcdTFGRTciKworICAgICAgICAiXHUxRkU3XHUxRkYzXHUxRkYzXHUxRkYzXHUxRkZGXHUxRkZGXHUxRkZGXHVBNUE1XDAwNFx1MjAwOVx1MjAwRlx1MjAxQiIrCisgICAgICAgICJcdTIwMjdcdTFGRkZcdTIwMzNcdTIwM0VcdTIwNDZcdTIwNEVcdTIwNTZcdTIwNUVcdTIwNjZcdTIwNkVcdTIwNzZcdTIwN0UiKworICAgICAgICAiXHUyMDg2XHUyMDhFXHUyMDk2XHUyMDlFXHUyMEE2XHUyMEFFXHUyMEI2XHUyMEJFXHUyMEM2XHUyMEMyXHUyMENFXHUyMEQ2IisKKyAgICAgICAgIlx1MjBERVx1MjBFNlx1MjBFRVx1MjBGNlx1MjBGRVx1MjEwNlx1MjEwRVx1MjExNlx1MjExRVx1MjEyNlx1MjEyRVx1MjEzNiIrCisgICAgICAgICJcdTIxM0VcdTIxNDZcdTIxNEVcdTIxNTZcdTIxNUVcdTIxNjZcdTIxNkVcdTIxNzZcdTIxN0VcdTIxODZcdTIxOEVcdTIxOTYiKworICAgICAgICAiXHUyMTlFXHUyMUE2XHUyMUFFXHUyMUI2XHUyMUJFXHUyMUM2XHUyMUNFXHUyMUQ2XHUyMURFXHUyMUU2XHUyMUVFXHUyMUY2IisKKyAgICAgICAgIlx1MjFGRVx1MjIwNlx1MjIwRVx1MjIxNlx1MjIxRVx1MjIyNlx1MjIyRVx1MjIzNlx1MjBDQVx1MjBEMlx1MjIzRVx1MjI0NiIrCisgICAgICAgICJcdTIwMkVcdTIyNEVcdTIyNTZcdTIyNUVcdTIyNjZcdTIyNkVcdTIyNzZcdTIyN0VcdTIyODZcdTIyOEVcdTIyOTZcdTIwQkEiKworICAgICAgICAiXHUyMjlFXHUyMkE2XHUyMjMyXHUyMkFFXHUyMjlBXHUyMkI2XHUyMkJFXHUyMkM2XHUyMkNGXHUyMkRCXHUyMkU3XHUyMkYzIisKKyAgICAgICAgIlx1MjJGRlx1MjMwQlx1MjMxN1x1MjMyM1x1MjAyN1x1MjMyRlx1MUZGRlx1MjAzM1x1MjMzQVx1MjM0Mlx1MjA1Nlx1MjM0QSIrCisgICAgICAgICJcdTIwNUVcdTIwNjZcdTIzNTJcdTIzNUFcdTIwODZcdTIzNjJcdTIwOEVcdTIwOTZcdTIzNkFcdTIzNzJcdTIwQTZcdTIzN0EiKworICAgICAgICAiXHUyMEFFXHUyMEI2XHUyMTk2XHUyMTlFXHUyMUI2XHUyMUJFXHUyMUM2XHUyMUU2XHUyMUVFXHUyMUY2XHUyMUZFXHUyMjFFIisKKyAgICAgICAgIlx1MjIyNlx1MjIyRVx1MjM4Mlx1MjIzRVx1MjM4QVx1MjM5Mlx1MjI2Nlx1MjM5QVx1MjI2RVx1MjI3Nlx1MjJDNlx1MjNBMiIrCisgICAgICAgICJcdTIzQUFcdTIyMzJcdTIzQjJcdTIyQUVcdTIyOUFcdTIwMEZcdTIwMUJcdTIzQkJcdTIwMjdcdTIzQzdcdTIwM0VcdTIwNDYiKworICAgICAgICAiXHUyMDRFXHUyMDU2XHUyM0QyXHUyMDZFXHUyMDc2XHUyMDdFXHUyMDg2XHUyM0RBXHUyMEE2XHUyMEJFXHUyMEM2XHUyMEMyIisKKyAgICAgICAgIlx1MjBDRVx1MjBENlx1MjBFNlx1MjBFRVx1MjBGNlx1MjBGRVx1MjEwNlx1MjEwRVx1MjNFMlx1MjExNlx1MjExRVx1MjEyNiIrCisgICAgICAgICJcdTIxMkVcdTIxMzZcdTIxM0VcdTIxNEVcdTIxNTZcdTIxNUVcdTIxNjZcdTIxNkVcdTIxNzZcdTIxN0VcdTIxODZcdTIxOEUiKworICAgICAgICAiXHUyMUE2XHUyMUFFXHUyMUNFXHUyMUQ2XHUyMURFXHUyMUU2XHUyMUVFXHUyMjA2XHUyMjBFXHUyMjE2XHUyMjFFXHUyM0VBIisKKyAgICAgICAgIlx1MjIzNlx1MjBDQVx1MjBEMlx1MjIzRVx1MjI0RVx1MjI1Nlx1MjI1RVx1MjI2Nlx1MjNGMlx1MjI3RVx1MjI4Nlx1MjNGQSIrCisgICAgICAgICJcdTIwQkFcdTIyOUVcdTIyQTZcdTIyMzJcdTIyN0FcdTIwMjdcdTIzQzdcdTIwNTZcdTIzRDJcdTIwODZcdTIzREFcdTIwQTYiKworICAgICAgICAiXHUyNDAyXHUyMTA2XHUyNDBBXHUyNDEyXHUyNDFBXHUyMUU2XHUyMUVFXHUyMjFFXHUyMjY2XHUyM0YyXHUyMjMyXHUyMjdBIisKKyAgICAgICAgIlx1MjQyM1x1MjQyRlx1MjQzQlx1MjQ0Nlx1MjQ0RVx1MjQ1Nlx1MjQ1RVx1MjQ2Nlx1MjQ2RVx1MjQ3Nlx1MjQ3RVx1MjQ4NiIrCisgICAgICAgICJcdTI0OEVcdTI0OTZcdTIwMjJcdTI0OUVcdTIwMTZcdTI0QTZcdTIyQUFcdTI0QUVcdTI0QjZcdTI0QkVcdTI0QzZcdTI0Q0UiKworICAgICAgICAiXHUyNEQ2XHUyNERFXHUyNDEyXHUyNEU2XHUyNEVFXHUyNEY2XHUyNEZFXHUyNDQ2XHUyNDRFXHUyNDU2XHUyNDVFXHUyNDY2IisKKyAgICAgICAgIlx1MjQ2RVx1MjQ3Nlx1MjQ3RVx1MjQ4Nlx1MjQ4RVx1MjQ5Nlx1MjAyMlx1MjQ5RVx1MjAxNlx1MjRBNlx1MjJBQVx1MjRBRSIrCisgICAgICAgICJcdTI0QjZcdTI0QkVcdTI0QzZcdTI0Q0VcdTI0RDZcdTI0REVcdTI0MTJcdTI0RTZcdTI0RUVcdTI0RjZcdTI0RkVcdTI0Q0UiKworICAgICAgICAiXHUyNEQ2XHUyNERFXHUyNDEyXHUyNDBBXHUyNDFBXHUyMTQ2XHUyMEVFXHUyMEY2XHUyMEZFXHUyNENFXHUyNEQ2XHUyNERFIisKKyAgICAgICAgIlx1MjE0Nlx1MjE0RVx1MjUwNlx1MjUwNlx1QTVBNVwwMjJcMDAwXHUyNTBGXHUyNTFCXHUyNTFCXHUyNTI3XHUyNTMzXHUyNTNGIisKKyAgICAgICAgIlx1MjU0Qlx1MjU1N1x1MjBDN1x1MjBDN1x1MjU2M1x1MjU2Rlx1MjU3Qlx1MjU4N1x1MjU5M1x1MjU5Rlx1MjU5Rlx1MjVBQiIrCisgICAgICAgICJcdTI1QjdcdTI1QjdcdTI1QzNcdTI1QzNcdTI1Q0ZcdTI1REJcdTI1REJcdTI1RTdcdTI1RjNcdTI1RjNcdTI1RkZcdTI1RkYiKworICAgICAgICAiXHUyNjBCXHUyNjE3XHUyNjE3XHUyNjIzXHUyNjIzXHUyNjJGXHUyNjNCXHUyNjQ3XHUyNjUzXHUyNjUzXHUyNjVGXHUyNjZCIisKKyAgICAgICAgIlx1MjY3N1x1MjY4M1x1MjY4Rlx1MjY4Rlx1MjY5Qlx1MjZBN1x1MjZCM1x1MjZCRlx1MjZDQlx1MjZEN1x1MjZEN1x1MjZFMyIrCisgICAgICAgICJcdTI2RTNcdTI2RUZcdTI2RUZcdTI2RkJcdTIwQ0JcdTI3MDdcdTI3MTNcdTIyMzdcdTIwRDNcdTI3MUZcMDAwXDAwMFx1MjcyQiIrCisgICAgICAgICJcdTI3MzdcdTI3NDNcdTI3NEZcdTI3NUJcdTI3NjdcdTI3NjdcdTI3NzNcdTI3N0ZcdTI3OEJcdTI3OTdcdTI3OTdcdTI3QTMiKworICAgICAgICAiXHUyN0FGXHUyN0JCXHUyN0M3XHUyN0QzXHUyN0RGXHUyN0VCXHUyN0Y3XHUyODAzXHUyODBGXHUyODFCXHUyODI3XHUyODMzIisKKyAgICAgICAgIlx1MjgzRlx1Mjg0Qlx1Mjg1N1x1MjI5Rlx1Mjg2M1x1Mjg2Rlx1Mjg3Qlx1Mjg4N1x1Mjg5M1x1MjY5Qlx1MjZCM1x1Mjg5RiIrCisgICAgICAgICJcdTI4QUJcdTI4QjdcdTI4QzNcdTI4Q0ZcdTI4REJcdTI4Q0ZcdTI4QjdcdTI4RTdcdTI4RjNcdTI4RkZcdTI5MEJcdTI5MTciKworICAgICAgICAiXHUyOERCXHUyNjQ3XHUyNUNGXHUyOTIzXHUyOTJGXHVBNUE1KFwwMDBcdTI5M0JcdTI5NDdcdTI5NTBcdTI5NjRcdTI5NzgiKworICAgICAgICAiXHUyOThDXHUyOUEwXHUyOUI0XHUyOUM4XHUyOURGXHUyOUU4XHUyQTM0XHVBNUE1XDAyNFwwMDBcdTAxRkFcdTJBNTlcdTJBNUQiKworICAgICAgICAiXHUyQTYxXHUyQTYxXHUwMjcxXHUwMjc1XHUyQTY1XHUyQTY5XHUyQTZEXHUyQTcxXHUyQTc1XHUyQTc5XHUyQTdEXHUyQTgxIisKKyAgICAgICAgIlx1MkE4NVx1MkE4OVx1MkE4RFx1MkE5MVx1MkE5NVx1MkE5OVx1QTVBNVwwMDRcMDAwXHVBNUE1XDAwNFx1MDIzNlx1MkE2MSIrCisgICAgICAgICJcdTJBNjFcdTJBNjFcdTJBOURcdTJBQTFcdTAxRjlcMDAwXHUyQUE1XHUyQUE5XHUwMjNEXHUwMjJEXHUyQTU5XHUwMjcxIisKKyAgICAgICAgIlx1MDI3NVx1MkE2NVx1MkE2OVx1MkE2RFx1MkE3MVx1MkFBRFx1MkFCMVx1MkFCNVx1MDI2NVx1MkFCOVx1MkFCRFx1MkFDMSIrCisgICAgICAgICJcdTAyNkRcMDAwXHUyQUM1XHUyQUM5XHUyQUNEXHUyQUQxXHVBNUE1XDAwNFwwMDBcdTJBRDZcdTJBREVcdTIyQ0VcMDAwIisKKyAgICAgICAgIlx1MjJEQVwwMDBcdTIyRTZcdTI0MjJcdTIyRjJcdTI0MkVcdTIyRkVcdTI0M0FcdTIzMEFcdTJBRTZcdTJBRUVcdTJBRjYiKworICAgICAgICAiXHUyQUZEXHUyQjAyXHUyQjAyXHUyQjBBXHUyQjBBXHUyQjEyXHUyQjEyXHUyQjFBXHUyQjFBXHVBNUE1XDAwNFx1MUZBQSIrCisgICAgICAgICJcdTAxNzFcdTAxNzFcdUE1QTVcMDA0XHUyMDNEXHUyQjIxXHUyQjIxXHVBNUE1XDAwNFx1MjA2RFx1QTVBNVwwMDRcdTIwOUQiKworICAgICAgICAiXHVBNUE1XDAwNFx1MjAxNVx1QTVBNVwwMDRcdTIwMjFcdUE1QTVcMDA0XHUyMDUxXHUyOTg1XHUyOTg1XHUyMkI1XHUyMkI1IisKKyAgICAgICAgIlx1MjJCRFx1MjJCRFx1MjMyOVx1MjMyOVx1QTVBNVwwMDRcdTIwRURcdUE1QTVcMDA0XHUyNDExXHVBNUE1XDAwNFx1MjEwRCIrCisgICAgICAgICJcdUE1QTVcMDA0XHUyMTFEXHVBNUE1XDAwNFx1MjEzRFx1QTVBNVwwMDRcdTIxNERcdUE1QTVcMDA0XHUyMTU1XHVBNUE1IisKKyAgICAgICAgIlwwMDRcdTIxNjVcdUE1QTVcMDA0XHUyMTc1XHVBNUE1XDAwNFx1MjFBNVx1QTVBNVwwMDRcdTIxQzVcdUE1QTVcMDA0XHUyMUU5IisKKyAgICAgICAgIlx1QTVBNVwwMDRcdTIwMkRcdUE1QTVcMDA0XHUyMjREXHVBNUE1XDAwNFx1MjI3RFx1MDE3OVx1MDE3OVx1MUZBNVx1MUZBNSIrCisgICAgICAgICJcdUE1QTVcMDA0XHUwMTg5XHUyQjI3XHUyQjI3XHUyQjMzXHUyQjMzXHUyQjNGXHUyQjNGXHUyQTQ2XHUyQTQ2XHVBNUE1IisKKyAgICAgICAgIlwwMDRcMDAwXHUwMjJEXHUyQjQ5XHUyQUFEXHUyQUM5XHUyQUNEXHUyQUIxXHUyQjREXHUwMjcxXHUwMjc1XHUyQUI1XHUwMjY1IisKKyAgICAgICAgIlx1MkE5RFx1MkFCOVx1MDFGOVx1MDI4NVx1MDI0RDlcMDM1IUlcdTAyNTFcdTAyNTVcdTAyNTlcdTAyNURcdTAyNjFcdTJBQTkiKworICAgICAgICAiXHUyQUE1XHUyQUJEXHUwMjZEXHUyQUMxXHUwMjNEXHUyQUQxXHUwODM5XHUwMzAxXHUwMjk5XHUwMDkxXHUwMkYxXHUwMkM1IisKKyAgICAgICAgIlx1MDgzRFx1MDJDRGVpXHUwODQxdVx1MDJFOVx1MDBDRFx1MDg0NVx1MDJERFx1MDJFMVx1MDI3OVx1MDJFNVx1MDJFRCIrCisgICAgICAgICJcdTA4NDlcdTAzQzFcdTA4NERcdTAzRjFcdTA4NTFcdTAwOTVcdTJCNTFcdTJBQzVcdTJCNTVcdTJCNTlcdTJBNjFcdTJCNUQiKworICAgICAgICAiXDAyMVx1MDcxMVx1MDI4OVx1MDBBOVx1MDMwNVx1MDc0MVx1MDJDOVx1MDBFNW1xXHUwNzdEfVx1MDQ2OVx1MDA4OT1cdTA3QjkiKworICAgICAgICAiXHUwN0M1XHUwMEVEXHUwMDhEXHUwN0U5XHUwMkI5XHUwNDIxXHUwMEZEXHUwMTM5XHUwMTAxXHUwMEExXHUyQTY1XHUyQjYxIisKKyAgICAgICAgIlx1MkE2OVx1MkI2NVwwMDBcMDAwXHUyQjY5XHUyQThEXHUyQTkxXHUyQUExXHUyQjZEXHUxMjUxXHUxMjc5XHUxNUY5XHUyQjcxIisKKyAgICAgICAgIlx1MTYxOVx1MTJDRFx1MkI3NVx1MTNBNVx1MTc1RFx1MTMzMVx1MTI2MVx1MTE5OVx1MTE5RFx1MTFBMVx1MTFBNVx1MTFBOSIrCisgICAgICAgICJcdTExQURcdTExQjFcdTExQjVcdTExQjlcdTExQkRcdTExQzFcdTExQzVcdTExQzlcdTExQ0RcdTExRDFcdTExRDVcdTExRDkiKworICAgICAgICAiXHUxMUREXHUxMUUxXHUxMUU1XHUxMUU5XHUxMUVEXHUxMUYxXHUxMUY1XHUxMUY5XHUxMUZEXHUxMjAxXHUxMjA1XHUxMjA5IisKKyAgICAgICAgIlx1MTIwRFx1MTIxMVx1MTIxNVx1MTIxOVx1MTIxRFx1MTIyMVx1MTIyNVx1MTIyOVx1MTIyRFx1MTIzMVx1MTIzNVx1MTIzOSIrCisgICAgICAgICJcdTEyM0RcdTEyNDFcdTEyNDVcdTEyODVcdTBCQzVcdTBCQ0RcdTBDOURcdTBCRDFcdTBCRDVcdTBCRDlcdTBCRERcdTBCRTEiKworICAgICAgICAiXHUwQkU1XHUwQkU5XHUwQkVEXHUwQkYxXHUwQkY1XHUwQkY5XHUwQkZEXHUwQzAxXHUwQzA1XHUwQzA5XHUwQzBEXHUwQzExIisKKyAgICAgICAgIlx1MEMxNVx1MEMxOVx1MEMxRFx1MEMyMVx1MEMyNVx1MEMyOVx1MEMyRFx1MEMzMVx1MEMzNVx1MEMzOVx1MEMzRFx1MEM0MSIrCisgICAgICAgICJcdTBDNDVcMDAwXDAwMFwwMDBcdTBDNDlcdTBDNERcdTBDNTFcdTBDNTVcdTBDNTlcdTBDNURcMDAwXDAwMFx1MEM2MVx1MEM2NSIrCisgICAgICAgICJcdTBDNjlcdTBDNkRcdTBDNzFcdTBDNzVcMDAwXDAwMFx1MEM3OVx1MEM3RFx1MEM4MVx1MEM4NVx1MEM4OVx1MEM4RFwwMDAiKworICAgICAgICAiXDAwMFx1MEM5MVx1MEM5NVx1MEM5OVwwMDBcMDAwXDAwMFx1MkI3OVx1MkI3RFx1MkI4MVwwMjZcdTJCODVcdTJCODlcdTJCOEQiKworICAgICAgICAiXDAwMFx1MkI5MVx1MkI5NVx1MkI5OVx1MkI5RFx1MkJBMVx1MkJBNVx1MkJBOVx1QTVBNVwwMjFcMDAwIgorICAgICAgICApOworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBjb250ZW50cyA9IAorICAgICAgICAiXHVGRkZGICBcdTAzMDhhIFx1MDMwNDIzIFx1MDMwMVx1MDNCQyBcdTAzMjcxbzFcdTIwNDQ0MVx1MjA0NDIzXHUyMDQ0IisKKyAgICAgICAgIjRJSmlqTFx1MDBCN2xcdTAwQjdcdTAyQkNuc0RaXHUwMzBDRHpcdTAzMENkelx1MDMwQ0xKTGpsak5KTmpuamhcdTAyNjYiKworICAgICAgICAiclx1MDI3OVx1MDI3Qlx1MDI4MXd5IFx1MDMwNiBcdTAzMDcgXHUwMzBBIFx1MDMyOCBcdTAzMDMgXHUwMzBCXHUwMjYzIisKKyAgICAgICAgInhcdTAyOTUgXHUwMzQ1XHUwM0IyXHUwM0I4XHUwM0E1XHUwM0M2XHUwM0MwXHUwM0JBXHUwM0MxXHUwM0MyXHUwNTY1XHUwNTgyIisKKyAgICAgICAgIlx1MDYyN1x1MDY3NFx1MDY0OFx1MDY3NFx1MDZDN1x1MDY3NFx1MDY0QVx1MDY3NFx1MEU0RFx1MEUzMlx1MEVDRFx1MEVCMiIrCisgICAgICAgICJcdTBFQUJcdTBFOTlcdTBFQUJcdTBFQTFcdTBGMEJcdTBGQjJcdTBGNzFcdTBGODBcdTBGQjNcdTBGNzFcdTBGODBhXHUwMkJFIisKKyAgICAgICAgIiBcdTAzMTMgXHUwMzQyIFx1MDMxNFx1MjAxMCBcdTAzMzMuLi5cdTIwMzJcdTIwMzJcdTIwMzJcdTIwMzJcdTIwMzJcdTIwMzUiKworICAgICAgICAiXHUyMDM1XHUyMDM1XHUyMDM1XHUyMDM1ISEgXHUwMzA1PyEhPzA1Njc4OStcdTIyMTI9KClSc2EvY2Evc0NcdTAwQjBDIisKKyAgICAgICAgImMvb2MvdVx1MDE5MFx1MDBCMEZnSFx1MDEyN05vUFFTTVRFTFRNQmVcdTA1RDBcdTA1RDFcdTA1RDJcdTA1RDMxXHUyMDQ0IisKKyAgICAgICAgIjMyXHUyMDQ0MzFcdTIwNDQ1Mlx1MjA0NDUzXHUyMDQ0NTRcdTIwNDQ1MVx1MjA0NDY1XHUyMDQ0NjFcdTIwNDQ4M1x1MjA0NCIrCisgICAgICAgICI4NVx1MjA0NDg3XHUyMDQ0OElJSUlJSVZWSVZJSVZJSUlcMDAwSVhYSVhJSWlpaWlpaXZ2aXZpaXZpaWlcMDAwaXh4aXgiKworICAgICAgICAiaWltXHUyMjJCXHUyMjJCXHUyMjJCXHUyMjJCXHUyMjJCXHUyMjJFXHUyMjJFXHUyMjJFXHUyMjJFXHUyMjJFMTAxMTEyIisKKyAgICAgICAgIjEzMTQxNTE2MTcxODE5MjAoMSkoMikoMykoNCkoNSkoNikoNykoOCkoOSkoMTApXDAwMCgxMSlcMDAwKDEyKVwwMDAoMSIrCisgICAgICAgICIzKVwwMDAoMTQpXDAwMCgxNSlcMDAwKDE2KVwwMDAoMTcpXDAwMCgxOClcMDAwKDE5KVwwMDAoMjApXDAwMDEuMi4zLjQiKworICAgICAgICAiLjUuNi43LjguOS4xMC4xMS4xMi4xMy4xNC4xNS4xNi4xNy4xOC4xOS4yMC4oYSkoYikoYykoZCkoZSkoZikoZykoaCkoIisKKyAgICAgICAgImkpKGopKGspKGwpKG0pKG4pKG8pKHApKHEpKHIpKHMpKHQpKHUpKHYpKHcpKHgpKHkpKHopQUdLT1VXWVx1NkJDRFx1OUY5RiIrCisgICAgICAgICJcdTRFMDBcdTRFMjhcdTRFMzZcdTRFM0ZcdTRFNTlcdTRFODVcdTRFOENcdTRFQTBcdTRFQkFcdTUxM0ZcdTUxNjVcdTUxNkIiKworICAgICAgICAiXHU1MTgyXHU1MTk2XHU1MUFCXHU1MUUwXHU1MUY1XHU1MjAwXHU1MjlCXHU1MkY5XHU1MzE1XHU1MzFBXHU1MzM4XHU1MzQxIisKKyAgICAgICAgIlx1NTM1Q1x1NTM2OVx1NTM4Mlx1NTNCNlx1NTNDOFx1NTNFM1x1NTZEN1x1NTcxRlx1NThFQlx1NTkwMlx1NTkwQVx1NTkxNSIrCisgICAgICAgICJcdTU5MjdcdTU5NzNcdTVCNTBcdTVCODBcdTVCRjhcdTVDMEZcdTVDMjJcdTVDMzhcdTVDNkVcdTVDNzFcdTVEREJcdTVERTUiKworICAgICAgICAiXHU1REYxXHU1REZFXHU1RTcyXHU1RTdBXHU1RTdGXHU1RUY0XHU1RUZFXHU1RjBCXHU1RjEzXHU1RjUwXHU1RjYxXHU1RjczIisKKyAgICAgICAgIlx1NUZDM1x1NjIwOFx1NjIzNlx1NjI0Qlx1NjUyRlx1NjUzNFx1NjU4N1x1NjU5N1x1NjVBNFx1NjVCOVx1NjVFMFx1NjVFNSIrCisgICAgICAgICJcdTY2RjBcdTY3MDhcdTY3MjhcdTZCMjBcdTZCNjJcdTZCNzlcdTZCQjNcdTZCQ0JcdTZCRDRcdTZCREJcdTZDMEZcdTZDMTQiKworICAgICAgICAiXHU2QzM0XHU3MDZCXHU3MjJBXHU3MjM2XHU3MjNCXHU3MjNGXHU3MjQ3XHU3MjU5XHU3MjVCXHU3MkFDXHU3Mzg0XHU3Mzg5IisKKyAgICAgICAgIlx1NzREQ1x1NzRFNlx1NzUxOFx1NzUxRlx1NzUyOFx1NzUzMFx1NzU4Qlx1NzU5Mlx1NzY3Nlx1NzY3RFx1NzZBRVx1NzZCRiIrCisgICAgICAgICJcdTc2RUVcdTc3REJcdTc3RTJcdTc3RjNcdTc5M0FcdTc5QjhcdTc5QkVcdTdBNzRcdTdBQ0JcdTdBRjlcdTdDNzNcdTdDRjgiKworICAgICAgICAiXHU3RjM2XHU3RjUxXHU3RjhBXHU3RkJEXHU4MDAxXHU4MDBDXHU4MDEyXHU4MDMzXHU4MDdGXHU4MDg5XHU4MUUzXHU4MUVBIisKKyAgICAgICAgIlx1ODFGM1x1ODFGQ1x1ODIwQ1x1ODIxQlx1ODIxRlx1ODI2RVx1ODI3Mlx1ODI3OFx1ODY0RFx1ODY2Qlx1ODg0MFx1ODg0QyIrCisgICAgICAgICJcdTg4NjNcdTg5N0VcdTg5OEJcdTg5RDJcdThBMDBcdThDMzdcdThDNDZcdThDNTVcdThDNzhcdThDOURcdThENjRcdThENzAiKworICAgICAgICAiXHU4REIzXHU4RUFCXHU4RUNBXHU4RjlCXHU4RkIwXHU4RkI1XHU5MDkxXHU5MTQ5XHU5MUM2XHU5MUNDXHU5MUQxXHU5NTc3IisKKyAgICAgICAgIlx1OTU4MFx1OTYxQ1x1OTZCNlx1OTZCOVx1OTZFOFx1OTc1MVx1OTc1RVx1OTc2Mlx1OTc2OVx1OTdDQlx1OTdFRFx1OTdGMyIrCisgICAgICAgICJcdTk4MDFcdTk4QThcdTk4REJcdTk4REZcdTk5OTZcdTk5OTlcdTk5QUNcdTlBQThcdTlBRDhcdTlBREZcdTlCMjVcdTlCMkYiKworICAgICAgICAiXHU5QjMyXHU5QjNDXHU5QjVBXHU5Q0U1XHU5RTc1XHU5RTdGXHU5RUE1XHU5RUJCXHU5RUMzXHU5RUNEXHU5RUQxXHU5RUY5IisKKyAgICAgICAgIlx1OUVGRFx1OUYwRVx1OUYxM1x1OUYyMFx1OUYzQlx1OUY0QVx1OUY1Mlx1OUY4RFx1OUY5Q1x1OUZBMFx1MzAxMlx1NTM0NCIrCisgICAgICAgICJcdTUzNDUgXHUzMDk5IFx1MzA5QVx1MTEwMFx1MTEwMVx1MTFBQVx1MTEwMlx1MTFBQ1x1MTFBRFx1MTEwM1x1MTEwNFx1MTEwNSIrCisgICAgICAgICJcdTExQjBcdTExQjFcdTExQjJcdTExQjNcdTExQjRcdTExQjVcdTExMUFcdTExMDZcdTExMDdcdTExMDhcdTExMjFcdTExMDkiKworICAgICAgICAiXHUxMTBBXHUxMTBCXHUxMTBDXHUxMTBEXHUxMTBFXHUxMTBGXHUxMTEwXHUxMTExXHUxMTEyXHUxMTYxXHUxMTYyXHUxMTYzIisKKyAgICAgICAgIlx1MTE2NFx1MTE2NVx1MTE2Nlx1MTE2N1x1MTE2OFx1MTE2OVx1MTE2QVx1MTE2Qlx1MTE2Q1x1MTE2RFx1MTE2RVx1MTE2RiIrCisgICAgICAgICJcdTExNzBcdTExNzFcdTExNzJcdTExNzNcdTExNzRcdTExNzVcdTExNjBcdTExMTRcdTExMTVcdTExQzdcdTExQzhcdTExQ0MiKworICAgICAgICAiXHUxMUNFXHUxMUQzXHUxMUQ3XHUxMUQ5XHUxMTFDXHUxMUREXHUxMURGXHUxMTFEXHUxMTFFXHUxMTIwXHUxMTIyXHUxMTIzIisKKyAgICAgICAgIlx1MTEyN1x1MTEyOVx1MTEyQlx1MTEyQ1x1MTEyRFx1MTEyRVx1MTEyRlx1MTEzMlx1MTEzNlx1MTE0MFx1MTE0N1x1MTE0QyIrCisgICAgICAgICJcdTExRjFcdTExRjJcdTExNTdcdTExNThcdTExNTlcdTExODRcdTExODVcdTExODhcdTExOTFcdTExOTJcdTExOTRcdTExOUUiKworICAgICAgICAiXHUxMUExXHU0RTA5XHU1NkRCXHU0RTBBXHU0RTJEXHU0RTBCXHU3NTMyXHU0RTE5XHU0RTAxXHU1OTI5XHU1NzMwKFx1MTEwMCIrCisgICAgICAgICIpKFx1MTEwMikoXHUxMTAzKShcdTExMDUpKFx1MTEwNikoXHUxMTA3KShcdTExMDkpKFx1MTEwQikoXHUxMTBDKShcdTExMEUiKworICAgICAgICAiKShcdTExMEYpKFx1MTExMCkoXHUxMTExKShcdTExMTIpKFx1MTEwMFx1MTE2MSlcMDAwKFx1MTEwMlx1MTE2MSlcMDAwIisKKyAgICAgICAgIihcdTExMDNcdTExNjEpXDAwMChcdTExMDVcdTExNjEpXDAwMChcdTExMDZcdTExNjEpXDAwMChcdTExMDdcdTExNjEpXDAwMCIrCisgICAgICAgICIoXHUxMTA5XHUxMTYxKVwwMDAoXHUxMTBCXHUxMTYxKVwwMDAoXHUxMTBDXHUxMTYxKVwwMDAoXHUxMTBFXHUxMTYxKVwwMDAiKworICAgICAgICAiKFx1MTEwRlx1MTE2MSlcMDAwKFx1MTExMFx1MTE2MSlcMDAwKFx1MTExMVx1MTE2MSlcMDAwKFx1MTExMlx1MTE2MSlcMDAwIisKKyAgICAgICAgIihcdTExMENcdTExNkUpXDAwMChcdTRFMDApKFx1NEU4QykoXHU0RTA5KShcdTU2REIpKFx1NEU5NCkoXHU1MTZEKShcdTRFMDMiKworICAgICAgICAiKShcdTUxNkIpKFx1NEU1RCkoXHU1MzQxKShcdTY3MDgpKFx1NzA2QikoXHU2QzM0KShcdTY3MjgpKFx1OTFEMSkoXHU1NzFGIisKKyAgICAgICAgIikoXHU2NUU1KShcdTY4MkEpKFx1NjcwOSkoXHU3OTNFKShcdTU0MEQpKFx1NzI3OSkoXHU4Q0ExKShcdTc5NUQpKFx1NTJCNCIrCisgICAgICAgICIpKFx1NEVFMykoXHU1NDdDKShcdTVCNjYpKFx1NzZFMykoXHU0RjAxKShcdThDQzcpKFx1NTM1NCkoXHU3OTZEKShcdTRGMTEiKworICAgICAgICAiKShcdTgxRUEpKFx1ODFGMylcdTc5RDhcdTc1MzdcdTkwNjlcdTUxMkFcdTUzNzBcdTZDRThcdTk4MDVcdTUxOTlcdTZCNjMiKworICAgICAgICAiXHU1REU2XHU1M0YzXHU1MzNCXHU1Qjk3XHU1OTFDMVx1NjcwODJcdTY3MDgzXHU2NzA4NFx1NjcwODVcdTY3MDg2XHU2NzA4IisKKyAgICAgICAgIjdcdTY3MDg4XHU2NzA4OVx1NjcwODEwXHU2NzA4MTFcdTY3MDgxMlx1NjcwOFx1MzBBMlx1MzBBNFx1MzBBNlx1MzBBOCIrCisgICAgICAgICJcdTMwQUFcdTMwQUJcdTMwQURcdTMwQUZcdTMwQjFcdTMwQjNcdTMwQjVcdTMwQjdcdTMwQjlcdTMwQkJcdTMwQkRcdTMwQkYiKworICAgICAgICAiXHUzMEMxXHUzMEM0XHUzMEM2XHUzMEM4XHUzMENBXHUzMENCXHUzMENDXHUzMENEXHUzMENFXHUzMENGXHUzMEQyXHUzMEQ1IisKKyAgICAgICAgIlx1MzBEOFx1MzBEQlx1MzBERVx1MzBERlx1MzBFMFx1MzBFMVx1MzBFMlx1MzBFNFx1MzBFNlx1MzBFOFx1MzBFOVx1MzBFQSIrCisgICAgICAgICJcdTMwRUJcdTMwRUNcdTMwRURcdTMwRUZcdTMwRjBcdTMwRjFcdTMwRjJcdTMwQTJcdTMwQ0ZcdTMwOUFcdTMwRkNcdTMwQzgiKworICAgICAgICAiXDAwMFx1MzBBMlx1MzBFQlx1MzBENVx1MzBBMVwwMDBcdTMwQTJcdTMwRjNcdTMwRDhcdTMwOUFcdTMwQTJcMDAwXHUzMEEyIisKKyAgICAgICAgIlx1MzBGQ1x1MzBFQlx1MzBBNFx1MzBDQlx1MzBGM1x1MzBBRlx1MzA5OVwwMDBcdTMwQTRcdTMwRjNcdTMwQzFcdTMwQTYiKworICAgICAgICAiXHUzMEE5XHUzMEYzXHUzMEE4XHUzMEI5XHUzMEFGXHUzMEZDXHUzMEM4XHUzMDk5XDAwMFx1MzBBOFx1MzBGQ1x1MzBBQiIrCisgICAgICAgICJcdTMwRkNcMDAwXHUzMEFBXHUzMEYzXHUzMEI5XHUzMEFBXHUzMEZDXHUzMEUwXHUzMEFCXHUzMEE0XHUzMEVBXHUzMEFCIisKKyAgICAgICAgIlx1MzBFOVx1MzBDM1x1MzBDOFwwMDBcdTMwQUJcdTMwRURcdTMwRUFcdTMwRkNcMDAwXHUzMEFCXHUzMDk5XHUzMEVEXHUzMEYzIisKKyAgICAgICAgIlwwMDBcdTMwQUJcdTMwOTlcdTMwRjNcdTMwREVcMDAwXHUzMEFEXHUzMDk5XHUzMEFCXHUzMDk5XDAwMFx1MzBBRFx1MzA5OSIrCisgICAgICAgICJcdTMwQ0JcdTMwRkNcMDAwXHUzMEFEXHUzMEU1XHUzMEVBXHUzMEZDXDAwMFx1MzBBRFx1MzA5OVx1MzBFQlx1MzBCRlx1MzA5OSIrCisgICAgICAgICJcdTMwRkNcMDAwXHUzMEFEXHUzMEVEXHUzMEFEXHUzMEVEXHUzMEFGXHUzMDk5XHUzMEU5XHUzMEUwXDAwMFx1MzBBRFx1MzBFRCIrCisgICAgICAgICJcdTMwRTFcdTMwRkNcdTMwQzhcdTMwRUJcMDAwXHUzMEFEXHUzMEVEXHUzMEVGXHUzMEMzXHUzMEM4XDAwMFx1MzBBRlx1MzA5OSIrCisgICAgICAgICJcdTMwRTlcdTMwRTBcdTMwQzhcdTMwRjNcMDAwXHUzMEFGXHUzMEVCXHUzMEJCXHUzMDk5XHUzMEE0XHUzMEVEXDAwMFx1MzBBRiIrCisgICAgICAgICJcdTMwRURcdTMwRkNcdTMwQ0RcMDAwXHUzMEIxXHUzMEZDXHUzMEI5XHUzMEIzXHUzMEVCXHUzMENBXHUzMEIzXHUzMEZDIisKKyAgICAgICAgIlx1MzBEQlx1MzA5QVwwMDBcdTMwQjVcdTMwQTRcdTMwQUZcdTMwRUJcMDAwXHUzMEI1XHUzMEYzXHUzMEMxXHUzMEZDXHUzMEUwIisKKyAgICAgICAgIlwwMDBcdTMwQjdcdTMwRUFcdTMwRjNcdTMwQUZcdTMwOTlcMDAwXHUzMEJCXHUzMEYzXHUzMEMxXHUzMEJCXHUzMEYzXHUzMEM4IisKKyAgICAgICAgIlx1MzBCRlx1MzA5OVx1MzBGQ1x1MzBCOVwwMDBcdTMwQzZcdTMwOTlcdTMwQjdcdTMwQzhcdTMwOTlcdTMwRUJcdTMwQ0EiKworICAgICAgICAiXHUzMENFXHUzMENFXHUzMEMzXHUzMEM4XHUzMENGXHUzMEE0XHUzMEM0XHUzMENGXHUzMDlBXHUzMEZDXHUzMEJCXHUzMEYzIisKKyAgICAgICAgIlx1MzBDOFwwMDBcdTMwQ0ZcdTMwOUFcdTMwRkNcdTMwQzRcMDAwXHUzMENGXHUzMDk5XHUzMEZDXHUzMEVDXHUzMEVCXDAwMCIrCisgICAgICAgICJcdTMwRDJcdTMwOUFcdTMwQTJcdTMwQjlcdTMwQzhcdTMwRUJcMDAwXHUzMEQyXHUzMDlBXHUzMEFGXHUzMEVCXDAwMFx1MzBEMiIrCisgICAgICAgICJcdTMwOUFcdTMwQjNcdTMwRDJcdTMwOTlcdTMwRUJcdTMwRDVcdTMwQTFcdTMwRTlcdTMwQzNcdTMwQzhcdTMwOTlcMDAwIisKKyAgICAgICAgIlx1MzBENVx1MzBBM1x1MzBGQ1x1MzBDOFwwMDBcdTMwRDVcdTMwOTlcdTMwQzNcdTMwQjdcdTMwQTdcdTMwRUJcMDAwXHUzMEQ1IisKKyAgICAgICAgIlx1MzBFOVx1MzBGM1x1MzBEOFx1MzBBRlx1MzBCRlx1MzBGQ1x1MzBFQlwwMDBcdTMwRDhcdTMwOUFcdTMwQkRcdTMwRDgiKworICAgICAgICAiXHUzMDlBXHUzMENCXHUzMEQyXDAwMFx1MzBEOFx1MzBFQlx1MzBDNFx1MzBEOFx1MzA5QVx1MzBGM1x1MzBCOVwwMDBcdTMwRDgiKworICAgICAgICAiXHUzMDlBXHUzMEZDXHUzMEI3XHUzMDk5XDAwMFx1MzBEOFx1MzA5OVx1MzBGQ1x1MzBCRlwwMDBcdTMwREJcdTMwOUFcdTMwQTQiKworICAgICAgICAiXHUzMEYzXHUzMEM4XDAwMFx1MzBEQlx1MzA5OVx1MzBFQlx1MzBDOFwwMDBcdTMwREJcdTMwRjNcdTMwREJcdTMwOUFcdTMwRjMiKworICAgICAgICAiXHUzMEM4XHUzMDk5XDAwMFx1MzBEQlx1MzBGQ1x1MzBFQlx1MzBEQlx1MzBGQ1x1MzBGM1x1MzBERVx1MzBBNFx1MzBBRiIrCisgICAgICAgICJcdTMwRURcMDAwXHUzMERFXHUzMEE0XHUzMEVCXHUzMERFXHUzMEMzXHUzMENGXHUzMERFXHUzMEVCXHUzMEFGXHUzMERFIisKKyAgICAgICAgIlx1MzBGM1x1MzBCN1x1MzBFN1x1MzBGM1wwMDBcdTMwREZcdTMwQUZcdTMwRURcdTMwRjNcMDAwXHUzMERGXHUzMEVBXHUzMERGIisKKyAgICAgICAgIlx1MzBFQVx1MzBDRlx1MzA5OVx1MzBGQ1x1MzBFQlwwMDBcdTMwRTFcdTMwQUJcdTMwOTlcdTMwRTFcdTMwQUJcdTMwOTkiKworICAgICAgICAiXHUzMEM4XHUzMEYzXDAwMFx1MzBFNFx1MzBGQ1x1MzBDOFx1MzA5OVwwMDBcdTMwRTRcdTMwRkNcdTMwRUJcdTMwRTZcdTMwQTIiKworICAgICAgICAiXHUzMEYzXHUzMEVBXHUzMEMzXHUzMEM4XHUzMEVCXDAwMFx1MzBFQVx1MzBFOVx1MzBFQlx1MzBEMlx1MzA5QVx1MzBGQyIrCisgICAgICAgICJcMDAwXHUzMEVCXHUzMEZDXHUzMEQ1XHUzMDk5XHUzMEVCXDAwMFx1MzBFQ1x1MzBFMFx1MzBFQ1x1MzBGM1x1MzBDOFx1MzBCMSIrCisgICAgICAgICJcdTMwOTlcdTMwRjNcMDAwMFx1NzBCOTFcdTcwQjkyXHU3MEI5M1x1NzBCOTRcdTcwQjk1XHU3MEI5Nlx1NzBCOTdcdTcwQjkiKworICAgICAgICAiOFx1NzBCOTlcdTcwQjkxMFx1NzBCOTExXHU3MEI5MTJcdTcwQjkxM1x1NzBCOTE0XHU3MEI5MTVcdTcwQjkxNlx1NzBCOSIrCisgICAgICAgICIxN1x1NzBCOTE4XHU3MEI5MTlcdTcwQjkyMFx1NzBCOTIxXHU3MEI5MjJcdTcwQjkyM1x1NzBCOTI0XHU3MEI5aFBhZGEiKworICAgICAgICAiQVViYXJvVnBjXHU1RTczXHU2MjEwXHU2NjJEXHU1NDhDXHU1OTI3XHU2QjYzXHU2NjBFXHU2Q0JCXHU2ODJBXHU1RjBGIisKKyAgICAgICAgIlx1NEYxQVx1NzkzRVwwMDBwQW5BXHUwM0JDQW1Ba0FLQkdCY2Fsa2NhbFwwMDBwRm5GXHUwM0JDRlx1MDNCQ2dtZ2tnSCIrCisgICAgICAgICJ6a0h6TUh6R0h6VEh6XHUwM0JDbG1sZGxrbGZtbm1cdTAzQkNtbW1jbWttbW0yY20ya20ybW0zY20za20zbVx1MjIxNXMiKworICAgICAgICAibVx1MjIxNXMyXDAwMGtQYU1QYUdQYXJhZHJhZFx1MjIxNXNcMDAwcmFkXHUyMjE1czJcMDAwcHNcdTAzQkNzbXNwVm5WIisKKyAgICAgICAgIlx1MDNCQ1ZtVmtWTVZwV25XXHUwM0JDV21Xa1dNV2tcdTAzQTlNXHUwM0E5YS5tLlwwMDBCcWNjY2RDXHUyMjE1a2dcMDAwIisKKyAgICAgICAgIkNvLmRCR3loYUhQaW5LS0tNa3RsbmxvZ2x4bWJtaWxtb2xQSHAubS5cMDAwUFBNUFJzclN2V2IxXHU2NUU1Mlx1NjVFNSIrCisgICAgICAgICIzXHU2NUU1NFx1NjVFNTVcdTY1RTU2XHU2NUU1N1x1NjVFNThcdTY1RTU5XHU2NUU1MTBcdTY1RTUxMVx1NjVFNTEyXHU2NUU1IisKKyAgICAgICAgIjEzXHU2NUU1MTRcdTY1RTUxNVx1NjVFNTE2XHU2NUU1MTdcdTY1RTUxOFx1NjVFNTE5XHU2NUU1MjBcdTY1RTUyMVx1NjVFNSIrCisgICAgICAgICIyMlx1NjVFNTIzXHU2NUU1MjRcdTY1RTUyNVx1NjVFNTI2XHU2NUU1MjdcdTY1RTUyOFx1NjVFNTI5XHU2NUU1MzBcdTY1RTUiKworICAgICAgICAiMzFcdTY1RTVmZmZpZmxmZmxzdFx1MDU3NFx1MDU3Nlx1MDU3NFx1MDU2NVx1MDU3NFx1MDU2Qlx1MDU3RVx1MDU3Nlx1MDU3NCIrCisgICAgICAgICJcdTA1NkRcdTA1RTJcdTA1RDRcdTA1REJcdTA1RENcdTA1RERcdTA1RThcdTA1RUFcdTA1RDBcdTA1RENcdTA2NzFcdTA2N0IiKworICAgICAgICAiXHUwNjdFXHUwNjgwXHUwNjdBXHUwNjdGXHUwNjc5XHUwNkE0XHUwNkE2XHUwNjg0XHUwNjgzXHUwNjg2XHUwNjg3XHUwNjhEIisKKyAgICAgICAgIlx1MDY4Q1x1MDY4RVx1MDY4OFx1MDY5OFx1MDY5MVx1MDZBOVx1MDZBRlx1MDZCM1x1MDZCMVx1MDZCQVx1MDZCQlx1MDZENSIrCisgICAgICAgICJcdTA2NTRcdTA2QzFcdTA2QkVcdTA2RDJcdTA2RDJcdTA2NTRcdTA2QURcdTA2QzZcdTA2QzhcdTA2Q0JcdTA2QzVcdTA2QzkiKworICAgICAgICAiXHUwNkQwXHUwNjQ5XHUwNjRBXHUwNjU0XHUwNjI3XHUwNjRBXHUwNjU0XHUwNkQ1XHUwNjRBXHUwNjU0XHUwNjQ4XHUwNjRBIisKKyAgICAgICAgIlx1MDY1NFx1MDZDN1x1MDY0QVx1MDY1NFx1MDZDNlx1MDY0QVx1MDY1NFx1MDZDOFx1MDY0QVx1MDY1NFx1MDZEMFx1MDY0QSIrCisgICAgICAgICJcdTA2NTRcdTA2NDlcdTA2Q0NcdTA2NEFcdTA2NTRcdTA2MkNcdTA2NEFcdTA2NTRcdTA2MkRcdTA2NEFcdTA2NTRcdTA2NDUiKworICAgICAgICAiXHUwNjRBXHUwNjU0XHUwNjRBXHUwNjI4XHUwNjJDXHUwNjI4XHUwNjJEXHUwNjI4XHUwNjJFXHUwNjI4XHUwNjQ1XHUwNjI4IisKKyAgICAgICAgIlx1MDY0OVx1MDYyOFx1MDY0QVx1MDYyQVx1MDYyQ1x1MDYyQVx1MDYyRFx1MDYyQVx1MDYyRVx1MDYyQVx1MDY0NVx1MDYyQSIrCisgICAgICAgICJcdTA2NDlcdTA2MkFcdTA2NEFcdTA2MkJcdTA2MkNcdTA2MkJcdTA2NDVcdTA2MkJcdTA2NDlcdTA2MkJcdTA2NEFcdTA2MkMiKworICAgICAgICAiXHUwNjJEXHUwNjJDXHUwNjQ1XHUwNjJEXHUwNjQ1XHUwNjJFXHUwNjJDXHUwNjJFXHUwNjJEXHUwNjJFXHUwNjQ1XHUwNjMzIisKKyAgICAgICAgIlx1MDYyQ1x1MDYzM1x1MDYyRFx1MDYzM1x1MDYyRVx1MDYzM1x1MDY0NVx1MDYzNVx1MDYyRFx1MDYzNVx1MDY0NVx1MDYzNiIrCisgICAgICAgICJcdTA2MkNcdTA2MzZcdTA2MkRcdTA2MzZcdTA2MkVcdTA2MzZcdTA2NDVcdTA2MzdcdTA2MkRcdTA2MzdcdTA2NDVcdTA2MzgiKworICAgICAgICAiXHUwNjQ1XHUwNjM5XHUwNjJDXHUwNjM5XHUwNjQ1XHUwNjNBXHUwNjJDXHUwNjNBXHUwNjQ1XHUwNjQxXHUwNjJDXHUwNjQxIisKKyAgICAgICAgIlx1MDYyRFx1MDY0MVx1MDYyRVx1MDY0MVx1MDY0NVx1MDY0MVx1MDY0OVx1MDY0MVx1MDY0QVx1MDY0Mlx1MDYyRFx1MDY0MiIrCisgICAgICAgICJcdTA2NDVcdTA2NDJcdTA2NDlcdTA2NDJcdTA2NEFcdTA2NDNcdTA2MjdcdTA2NDNcdTA2MkNcdTA2NDNcdTA2MkRcdTA2NDMiKworICAgICAgICAiXHUwNjJFXHUwNjQzXHUwNjQ0XHUwNjQzXHUwNjQ1XHUwNjQzXHUwNjQ5XHUwNjQzXHUwNjRBXHUwNjQ0XHUwNjJDXHUwNjQ0IisKKyAgICAgICAgIlx1MDYyRFx1MDY0NFx1MDYyRVx1MDY0NFx1MDY0NVx1MDY0NFx1MDY0OVx1MDY0NFx1MDY0QVx1MDY0NVx1MDYyQ1x1MDY0NSIrCisgICAgICAgICJcdTA2NDVcdTA2NDVcdTA2NDlcdTA2NDZcdTA2MkNcdTA2NDZcdTA2MkRcdTA2NDZcdTA2MkVcdTA2NDZcdTA2NDVcdTA2NDYiKworICAgICAgICAiXHUwNjQ5XHUwNjQ2XHUwNjRBXHUwNjQ3XHUwNjJDXHUwNjQ3XHUwNjQ1XHUwNjQ3XHUwNjQ5XHUwNjQ3XHUwNjRBXHUwNjRBIisKKyAgICAgICAgIlx1MDYyRFx1MDY0QVx1MDYyRVx1MDY0QVx1MDY0OVx1MDYzMFx1MDY3MFx1MDYzMVx1MDY3MFx1MDY0OVx1MDY3MCBcdTA2NEMiKworICAgICAgICAiXHUwNjUxIFx1MDY0RFx1MDY1MSBcdTA2NEVcdTA2NTEgXHUwNjRGXHUwNjUxIFx1MDY1MFx1MDY1MSBcdTA2NTFcdTA2NzAiKworICAgICAgICAiXHUwNjRBXHUwNjU0XHUwNjMxXHUwNjRBXHUwNjU0XHUwNjMyXHUwNjRBXHUwNjU0XHUwNjQ2XHUwNjI4XHUwNjMxXHUwNjI4IisKKyAgICAgICAgIlx1MDYzMlx1MDYyOFx1MDY0Nlx1MDYyQVx1MDYzMVx1MDYyQVx1MDYzMlx1MDYyQVx1MDY0Nlx1MDYyQlx1MDYzMVx1MDYyQiIrCisgICAgICAgICJcdTA2MzJcdTA2MkJcdTA2NDZcdTA2NDVcdTA2MjdcdTA2NDZcdTA2MzFcdTA2NDZcdTA2MzJcdTA2NDZcdTA2NDZcdTA2NEEiKworICAgICAgICAiXHUwNjMxXHUwNjRBXHUwNjMyXHUwNjRBXHUwNjQ2XHUwNjRBXHUwNjU0XHUwNjJFXHUwNjRBXHUwNjU0XHUwNjQ3XHUwNjI4IisKKyAgICAgICAgIlx1MDY0N1x1MDYyQVx1MDY0N1x1MDYzNVx1MDYyRVx1MDY0NFx1MDY0N1x1MDY0Nlx1MDY0N1x1MDY0N1x1MDY3MFx1MDYyQiIrCisgICAgICAgICJcdTA2NDdcdTA2MzNcdTA2NDdcdTA2MzRcdTA2NDVcdTA2MzRcdTA2NDdcdTA2NDBcdTA2NEVcdTA2NTFcdTA2NDBcdTA2NEYiKworICAgICAgICAiXHUwNjUxXHUwNjQwXHUwNjUwXHUwNjUxXHUwNjM3XHUwNjQ5XHUwNjM3XHUwNjRBXHUwNjM5XHUwNjQ5XHUwNjM5XHUwNjRBIisKKyAgICAgICAgIlx1MDYzQVx1MDY0OVx1MDYzQVx1MDY0QVx1MDYzM1x1MDY0OVx1MDYzM1x1MDY0QVx1MDYzNFx1MDY0OVx1MDYzNFx1MDY0QSIrCisgICAgICAgICJcdTA2MkRcdTA2NDlcdTA2MkNcdTA2NDlcdTA2MkVcdTA2NDlcdTA2MzVcdTA2NDlcdTA2MzVcdTA2NEFcdTA2MzZcdTA2NDkiKworICAgICAgICAiXHUwNjM2XHUwNjRBXHUwNjM0XHUwNjJDXHUwNjM0XHUwNjJEXHUwNjM0XHUwNjJFXHUwNjM0XHUwNjMxXHUwNjMzXHUwNjMxIisKKyAgICAgICAgIlx1MDYzNVx1MDYzMVx1MDYzNlx1MDYzMVx1MDYyN1x1MDY0Qlx1MDYyQVx1MDYyQ1x1MDY0NVx1MDYyQVx1MDYyRFx1MDYyQyIrCisgICAgICAgICJcdTA2MkFcdTA2MkRcdTA2NDVcdTA2MkFcdTA2MkVcdTA2NDVcdTA2MkFcdTA2NDVcdTA2MkNcdTA2MkFcdTA2NDVcdTA2MkQiKworICAgICAgICAiXHUwNjJBXHUwNjQ1XHUwNjJFXHUwNjJEXHUwNjQ1XHUwNjRBXHUwNjJEXHUwNjQ1XHUwNjQ5XHUwNjMzXHUwNjJEXHUwNjJDIisKKyAgICAgICAgIlx1MDYzM1x1MDYyQ1x1MDYyRFx1MDYzM1x1MDYyQ1x1MDY0OVx1MDYzM1x1MDY0NVx1MDYyRFx1MDYzM1x1MDY0NVx1MDYyQyIrCisgICAgICAgICJcdTA2MzNcdTA2NDVcdTA2NDVcdTA2MzVcdTA2MkRcdTA2MkRcdTA2MzVcdTA2NDVcdTA2NDVcdTA2MzRcdTA2MkRcdTA2NDUiKworICAgICAgICAiXHUwNjM0XHUwNjJDXHUwNjRBXHUwNjM0XHUwNjQ1XHUwNjJFXHUwNjM0XHUwNjQ1XHUwNjQ1XHUwNjM2XHUwNjJEXHUwNjQ5IisKKyAgICAgICAgIlx1MDYzNlx1MDYyRVx1MDY0NVx1MDYzN1x1MDY0NVx1MDYyRFx1MDYzN1x1MDY0NVx1MDY0NVx1MDYzN1x1MDY0NVx1MDY0QSIrCisgICAgICAgICJcdTA2MzlcdTA2MkNcdTA2NDVcdTA2MzlcdTA2NDVcdTA2NDVcdTA2MzlcdTA2NDVcdTA2NDlcdTA2M0FcdTA2NDVcdTA2NDUiKworICAgICAgICAiXHUwNjNBXHUwNjQ1XHUwNjRBXHUwNjNBXHUwNjQ1XHUwNjQ5XHUwNjQxXHUwNjJFXHUwNjQ1XHUwNjQyXHUwNjQ1XHUwNjJEIisKKyAgICAgICAgIlx1MDY0Mlx1MDY0NVx1MDY0NVx1MDY0NFx1MDYyRFx1MDY0NVx1MDY0NFx1MDYyRFx1MDY0QVx1MDY0NFx1MDYyRFx1MDY0OSIrCisgICAgICAgICJcdTA2NDRcdTA2MkNcdTA2MkNcdTA2NDRcdTA2MkVcdTA2NDVcdTA2NDRcdTA2NDVcdTA2MkRcdTA2NDVcdTA2MkRcdTA2MkMiKworICAgICAgICAiXHUwNjQ1XHUwNjJEXHUwNjRBXHUwNjQ1XHUwNjJDXHUwNjJEXHUwNjQ1XHUwNjJFXHUwNjQ1XHUwNjQ1XHUwNjJDXHUwNjJFIisKKyAgICAgICAgIlx1MDY0N1x1MDY0NVx1MDYyQ1x1MDY0N1x1MDY0NVx1MDY0NVx1MDY0Nlx1MDYyRFx1MDY0NVx1MDY0Nlx1MDYyRFx1MDY0OSIrCisgICAgICAgICJcdTA2NDZcdTA2MkNcdTA2NDVcdTA2NDZcdTA2MkNcdTA2NDlcdTA2NDZcdTA2NDVcdTA2NEFcdTA2NDZcdTA2NDVcdTA2NDkiKworICAgICAgICAiXHUwNjRBXHUwNjQ1XHUwNjQ1XHUwNjI4XHUwNjJFXHUwNjRBXHUwNjJBXHUwNjJDXHUwNjRBXHUwNjJBXHUwNjJDXHUwNjQ5IisKKyAgICAgICAgIlx1MDYyQVx1MDYyRVx1MDY0QVx1MDYyQVx1MDYyRVx1MDY0OVx1MDYyQVx1MDY0NVx1MDY0QVx1MDYyQVx1MDY0NVx1MDY0OSIrCisgICAgICAgICJcdTA2MkNcdTA2NDVcdTA2NEFcdTA2MkNcdTA2MkRcdTA2NDlcdTA2MkNcdTA2NDVcdTA2NDlcdTA2MzNcdTA2MkVcdTA2NDkiKworICAgICAgICAiXHUwNjM1XHUwNjJEXHUwNjRBXHUwNjM0XHUwNjJEXHUwNjRBXHUwNjM2XHUwNjJEXHUwNjRBXHUwNjQ0XHUwNjJDXHUwNjRBIisKKyAgICAgICAgIlx1MDY0NFx1MDY0NVx1MDY0QVx1MDY0QVx1MDYyQ1x1MDY0QVx1MDY0QVx1MDY0NVx1MDY0QVx1MDY0NVx1MDY0NVx1MDY0QSIrCisgICAgICAgICJcdTA2NDJcdTA2NDVcdTA2NEFcdTA2NDZcdTA2MkRcdTA2NEFcdTA2MzlcdTA2NDVcdTA2NEFcdTA2NDNcdTA2NDVcdTA2NEEiKworICAgICAgICAiXHUwNjQ2XHUwNjJDXHUwNjJEXHUwNjQ1XHUwNjJFXHUwNjRBXHUwNjQ0XHUwNjJDXHUwNjQ1XHUwNjQzXHUwNjQ1XHUwNjQ1IisKKyAgICAgICAgIlx1MDYyQ1x1MDYyRFx1MDY0QVx1MDYyRFx1MDYyQ1x1MDY0QVx1MDY0NVx1MDYyQ1x1MDY0QVx1MDY0MVx1MDY0NVx1MDY0QSIrCisgICAgICAgICJcdTA2MjhcdTA2MkRcdTA2NEFcdTA2MzNcdTA2MkVcdTA2NEFcdTA2NDZcdTA2MkNcdTA2NEFcdTA2MzVcdTA2NDRcdTA2RDIiKworICAgICAgICAiXHUwNjQyXHUwNjQ0XHUwNkQyXHUwNjI3XHUwNjQ0XHUwNjQ0XHUwNjQ3XDAwMFx1MDYyN1x1MDY0M1x1MDYyOFx1MDYzMSIrCisgICAgICAgICJcMDAwXHUwNjQ1XHUwNjJEXHUwNjQ1XHUwNjJGXDAwMFx1MDYzNVx1MDY0NFx1MDYzOVx1MDY0NVwwMDBcdTA2MzFcdTA2MzMiKworICAgICAgICAiXHUwNjQ4XHUwNjQ0XDAwMFx1MDYzOVx1MDY0NFx1MDY0QVx1MDY0N1wwMDBcdTA2NDhcdTA2MzNcdTA2NDRcdTA2NDVcMDAwIisKKyAgICAgICAgIlx1MDYzNVx1MDY0NFx1MDY0OVx1MDYzNVx1MDY0NFx1MDY0OSBcdTA2MjdcdTA2NDRcdTA2NDRcdTA2NDcgXHUwNjM5XHUwNjQ0IisKKyAgICAgICAgIlx1MDY0QVx1MDY0NyBcdTA2NDhcdTA2MzNcdTA2NDRcdTA2NDVcMDAwXHUwNjJDXHUwNjQ0IFx1MDYyQ1x1MDY0NFx1MDYyNyIrCisgICAgICAgICJcdTA2NDRcdTA2NDdcMDAwXHUyMDE0XHUyMDEzX3t9XHUzMDE0XHUzMDE1XHUzMDEwXHUzMDExXHUzMDBBXHUzMDBCXHUzMDA4IisKKyAgICAgICAgIlx1MzAwOVx1MzAwQ1x1MzAwRFx1MzAwRVx1MzAwRixcdTMwMDE7OiMmKi08PlwxMzQkJUAgXHUwNjRCXHUwNjQwXHUwNjRCIisKKyAgICAgICAgIlx1MDY0MFx1MDY1MSBcdTA2NTJcdTA2NDBcdTA2NTJcdTA2MjFcdTA2MjdcdTA2NTNcdTA2MjdcdTA2NTRcdTA2NDhcdTA2NTQiKworICAgICAgICAiXHUwNjI3XHUwNjU1XHUwNjI5XHUwNjQ0XHUwNjI3XHUwNjUzXHUwNjQ0XHUwNjI3XHUwNjU0XHUwNjQ0XHUwNjI3XHUwNjU1IisKKyAgICAgICAgIlwwNDInW11eYHx+XHUzMDAyXHUzMEZCXHUzMEE1XHUzMEUzXHUwMEEyXHUwMEEzXHUwMEFDXHUwMEE2XHUwMEE1XHUyMEE5IisKKyAgICAgICAgIlx1MjUwMlx1MjE5MFx1MjE5MVx1MjE5Mlx1MjE5M1x1MjVBMFx1MjVDQkFcdTAzMDBBXHUwMzAxQVx1MDMwMkFcdTAzMDMiKworICAgICAgICAiQVx1MDMwOEFcdTAzMEFDXHUwMzI3RVx1MDMwMEVcdTAzMDFFXHUwMzAyRVx1MDMwOElcdTAzMDBJXHUwMzAxSVx1MDMwMiIrCisgICAgICAgICJJXHUwMzA4Tlx1MDMwM09cdTAzMDBPXHUwMzAxT1x1MDMwMk9cdTAzMDNPXHUwMzA4VVx1MDMwMFVcdTAzMDFVXHUwMzAyIisKKyAgICAgICAgIlVcdTAzMDhZXHUwMzAxYVx1MDMwMGFcdTAzMDFhXHUwMzAyYVx1MDMwM2FcdTAzMDhhXHUwMzBBY1x1MDMyN2VcdTAzMDAiKworICAgICAgICAiZVx1MDMwMWVcdTAzMDJlXHUwMzA4aVx1MDMwMGlcdTAzMDFpXHUwMzAyaVx1MDMwOG5cdTAzMDNvXHUwMzAwb1x1MDMwMSIrCisgICAgICAgICJvXHUwMzAyb1x1MDMwM29cdTAzMDh1XHUwMzAwdVx1MDMwMXVcdTAzMDJ1XHUwMzA4eVx1MDMwMXlcdTAzMDhBXHUwMzA0IisKKyAgICAgICAgImFcdTAzMDRBXHUwMzA2YVx1MDMwNkFcdTAzMjhhXHUwMzI4Q1x1MDMwMWNcdTAzMDFDXHUwMzAyY1x1MDMwMkNcdTAzMDciKworICAgICAgICAiY1x1MDMwN0NcdTAzMENjXHUwMzBDRFx1MDMwQ2RcdTAzMENFXHUwMzA0ZVx1MDMwNEVcdTAzMDZlXHUwMzA2RVx1MDMwNyIrCisgICAgICAgICJlXHUwMzA3RVx1MDMyOGVcdTAzMjhFXHUwMzBDZVx1MDMwQ0dcdTAzMDJnXHUwMzAyR1x1MDMwNmdcdTAzMDZHXHUwMzA3IisKKyAgICAgICAgImdcdTAzMDdHXHUwMzI3Z1x1MDMyN0hcdTAzMDJoXHUwMzAySVx1MDMwM2lcdTAzMDNJXHUwMzA0aVx1MDMwNElcdTAzMDYiKworICAgICAgICAiaVx1MDMwNklcdTAzMjhpXHUwMzI4SVx1MDMwN0pcdTAzMDJqXHUwMzAyS1x1MDMyN2tcdTAzMjdMXHUwMzAxbFx1MDMwMSIrCisgICAgICAgICJMXHUwMzI3bFx1MDMyN0xcdTAzMENsXHUwMzBDTlx1MDMwMW5cdTAzMDFOXHUwMzI3blx1MDMyN05cdTAzMENuXHUwMzBDIisKKyAgICAgICAgIk9cdTAzMDRvXHUwMzA0T1x1MDMwNm9cdTAzMDZPXHUwMzBCb1x1MDMwQlJcdTAzMDFyXHUwMzAxUlx1MDMyN3JcdTAzMjciKworICAgICAgICAiUlx1MDMwQ3JcdTAzMENTXHUwMzAxc1x1MDMwMVNcdTAzMDJzXHUwMzAyU1x1MDMyN3NcdTAzMjdTXHUwMzBDc1x1MDMwQyIrCisgICAgICAgICJUXHUwMzI3dFx1MDMyN1RcdTAzMEN0XHUwMzBDVVx1MDMwM3VcdTAzMDNVXHUwMzA0dVx1MDMwNFVcdTAzMDZ1XHUwMzA2IisKKyAgICAgICAgIlVcdTAzMEF1XHUwMzBBVVx1MDMwQnVcdTAzMEJVXHUwMzI4dVx1MDMyOFdcdTAzMDJ3XHUwMzAyWVx1MDMwMnlcdTAzMDIiKworICAgICAgICAiWVx1MDMwOFpcdTAzMDF6XHUwMzAxWlx1MDMwN3pcdTAzMDdaXHUwMzBDelx1MDMwQ09cdTAzMUJvXHUwMzFCVVx1MDMxQiIrCisgICAgICAgICJ1XHUwMzFCQVx1MDMwQ2FcdTAzMENJXHUwMzBDaVx1MDMwQ09cdTAzMENvXHUwMzBDVVx1MDMwQ3VcdTAzMENVXHUwMzA4IisKKyAgICAgICAgIlx1MDMwNHVcdTAzMDhcdTAzMDRVXHUwMzA4XHUwMzAxdVx1MDMwOFx1MDMwMVVcdTAzMDhcdTAzMEN1XHUwMzA4XHUwMzBDIisKKyAgICAgICAgIlVcdTAzMDhcdTAzMDB1XHUwMzA4XHUwMzAwQVx1MDMwOFx1MDMwNGFcdTAzMDhcdTAzMDRBXHUwMzA3XHUwMzA0YVx1MDMwNyIrCisgICAgICAgICJcdTAzMDRcdTAwQzZcdTAzMDRcdTAwRTZcdTAzMDRHXHUwMzBDZ1x1MDMwQ0tcdTAzMENrXHUwMzBDT1x1MDMyOG9cdTAzMjgiKworICAgICAgICAiT1x1MDMyOFx1MDMwNG9cdTAzMjhcdTAzMDRcdTAxQjdcdTAzMENcdTAyOTJcdTAzMENqXHUwMzBDR1x1MDMwMWdcdTAzMDEiKworICAgICAgICAiTlx1MDMwMG5cdTAzMDBBXHUwMzBBXHUwMzAxYVx1MDMwQVx1MDMwMVx1MDBDNlx1MDMwMVx1MDBFNlx1MDMwMVx1MDBEOCIrCisgICAgICAgICJcdTAzMDFcdTAwRjhcdTAzMDFBXHUwMzBGYVx1MDMwRkFcdTAzMTFhXHUwMzExRVx1MDMwRmVcdTAzMEZFXHUwMzExZVx1MDMxMSIrCisgICAgICAgICJJXHUwMzBGaVx1MDMwRklcdTAzMTFpXHUwMzExT1x1MDMwRm9cdTAzMEZPXHUwMzExb1x1MDMxMVJcdTAzMEZyXHUwMzBGIisKKyAgICAgICAgIlJcdTAzMTFyXHUwMzExVVx1MDMwRnVcdTAzMEZVXHUwMzExdVx1MDMxMVNcdTAzMjZzXHUwMzI2VFx1MDMyNnRcdTAzMjYiKworICAgICAgICAiSFx1MDMwQ2hcdTAzMENBXHUwMzA3YVx1MDMwN0VcdTAzMjdlXHUwMzI3T1x1MDMwOFx1MDMwNG9cdTAzMDhcdTAzMDRPIisKKyAgICAgICAgIlx1MDMwM1x1MDMwNG9cdTAzMDNcdTAzMDRPXHUwMzA3b1x1MDMwN09cdTAzMDdcdTAzMDRvXHUwMzA3XHUwMzA0WVx1MDMwNCIrCisgICAgICAgICJ5XHUwMzA0XHUwMzAwXHUwMzAxXHUwMzEzXHUwMzA4XHUwMzAxXHUwMkI5O1x1MDBBOFx1MDMwMVx1MDM5MVx1MDMwMVx1MDBCNyIrCisgICAgICAgICJcdTAzOTVcdTAzMDFcdTAzOTdcdTAzMDFcdTAzOTlcdTAzMDFcdTAzOUZcdTAzMDFcdTAzQTVcdTAzMDFcdTAzQTlcdTAzMDEiKworICAgICAgICAiXHUwM0I5XHUwMzA4XHUwMzAxXHUwMzk5XHUwMzA4XHUwM0E1XHUwMzA4XHUwM0IxXHUwMzAxXHUwM0I1XHUwMzAxXHUwM0I3IisKKyAgICAgICAgIlx1MDMwMVx1MDNCOVx1MDMwMVx1MDNDNVx1MDMwOFx1MDMwMVx1MDNCOVx1MDMwOFx1MDNDNVx1MDMwOFx1MDNCRlx1MDMwMSIrCisgICAgICAgICJcdTAzQzVcdTAzMDFcdTAzQzlcdTAzMDFcdTAzRDJcdTAzMDFcdTAzRDJcdTAzMDhcdTA0MTVcdTAzMDBcdTA0MTVcdTAzMDgiKworICAgICAgICAiXHUwNDEzXHUwMzAxXHUwNDA2XHUwMzA4XHUwNDFBXHUwMzAxXHUwNDE4XHUwMzAwXHUwNDIzXHUwMzA2XHUwNDE4XHUwMzA2IisKKyAgICAgICAgIlx1MDQzOFx1MDMwNlx1MDQzNVx1MDMwMFx1MDQzNVx1MDMwOFx1MDQzM1x1MDMwMVx1MDQ1Nlx1MDMwOFx1MDQzQVx1MDMwMSIrCisgICAgICAgICJcdTA0MzhcdTAzMDBcdTA0NDNcdTAzMDZcdTA0NzRcdTAzMEZcdTA0NzVcdTAzMEZcdTA0MTZcdTAzMDZcdTA0MzZcdTAzMDYiKworICAgICAgICAiXHUwNDEwXHUwMzA2XHUwNDMwXHUwMzA2XHUwNDEwXHUwMzA4XHUwNDMwXHUwMzA4XHUwNDE1XHUwMzA2XHUwNDM1XHUwMzA2IisKKyAgICAgICAgIlx1MDREOFx1MDMwOFx1MDREOVx1MDMwOFx1MDQxNlx1MDMwOFx1MDQzNlx1MDMwOFx1MDQxN1x1MDMwOFx1MDQzN1x1MDMwOCIrCisgICAgICAgICJcdTA0MThcdTAzMDRcdTA0MzhcdTAzMDRcdTA0MThcdTAzMDhcdTA0MzhcdTAzMDhcdTA0MUVcdTAzMDhcdTA0M0VcdTAzMDgiKworICAgICAgICAiXHUwNEU4XHUwMzA4XHUwNEU5XHUwMzA4XHUwNDJEXHUwMzA4XHUwNDREXHUwMzA4XHUwNDIzXHUwMzA0XHUwNDQzXHUwMzA0IisKKyAgICAgICAgIlx1MDQyM1x1MDMwOFx1MDQ0M1x1MDMwOFx1MDQyM1x1MDMwQlx1MDQ0M1x1MDMwQlx1MDQyN1x1MDMwOFx1MDQ0N1x1MDMwOCIrCisgICAgICAgICJcdTA0MkJcdTAzMDhcdTA0NEJcdTAzMDhcdTA2MjdcdTA2NTNcdTA2MjdcdTA2NTRcdTA2NDhcdTA2NTRcdTA2MjdcdTA2NTUiKworICAgICAgICAiXHUwNjRBXHUwNjU0XHUwNkQ1XHUwNjU0XHUwNkMxXHUwNjU0XHUwNkQyXHUwNjU0XHUwOTI4XHUwOTNDXHUwOTMwXHUwOTNDIisKKyAgICAgICAgIlx1MDkzM1x1MDkzQ1x1MDkxNVx1MDkzQ1x1MDkxNlx1MDkzQ1x1MDkxN1x1MDkzQ1x1MDkxQ1x1MDkzQ1x1MDkyMVx1MDkzQyIrCisgICAgICAgICJcdTA5MjJcdTA5M0NcdTA5MkJcdTA5M0NcdTA5MkZcdTA5M0NcdTA5QzdcdTA5QkVcdTA5QzdcdTA5RDdcdTA5QTFcdTA5QkMiKworICAgICAgICAiXHUwOUEyXHUwOUJDXHUwOUFGXHUwOUJDXHUwQTMyXHUwQTNDXHUwQTM4XHUwQTNDXHUwQTE2XHUwQTNDXHUwQTE3XHUwQTNDIisKKyAgICAgICAgIlx1MEExQ1x1MEEzQ1x1MEEyQlx1MEEzQ1x1MEI0N1x1MEI1Nlx1MEI0N1x1MEIzRVx1MEI0N1x1MEI1N1x1MEIyMVx1MEIzQyIrCisgICAgICAgICJcdTBCMjJcdTBCM0NcdTBCOTJcdTBCRDdcdTBCQzZcdTBCQkVcdTBCQzdcdTBCQkVcdTBCQzZcdTBCRDdcdTBDNDZcdTBDNTYiKworICAgICAgICAiXHUwQ0JGXHUwQ0Q1XHUwQ0M2XHUwQ0Q1XHUwQ0M2XHUwQ0Q2XHUwQ0M2XHUwQ0MyXHUwQ0M2XHUwQ0MyXHUwQ0Q1XHUwRDQ2IisKKyAgICAgICAgIlx1MEQzRVx1MEQ0N1x1MEQzRVx1MEQ0Nlx1MEQ1N1x1MEREOVx1MERDQVx1MEREOVx1MERDRlx1MEREOVx1MERDRlx1MERDQSIrCisgICAgICAgICJcdTBERDlcdTBEREZcdTBGNDJcdTBGQjdcdTBGNENcdTBGQjdcdTBGNTFcdTBGQjdcdTBGNTZcdTBGQjdcdTBGNUJcdTBGQjciKworICAgICAgICAiXHUwRjQwXHUwRkI1XHUwRjcxXHUwRjcyXHUwRjcxXHUwRjc0XHUwRkIyXHUwRjgwXHUwRkIzXHUwRjgwXHUwRjcxXHUwRjgwIisKKyAgICAgICAgIlx1MEY5Mlx1MEZCN1x1MEY5Q1x1MEZCN1x1MEZBMVx1MEZCN1x1MEZBNlx1MEZCN1x1MEZBQlx1MEZCN1x1MEY5MFx1MEZCNSIrCisgICAgICAgICJcdTEwMjVcdTEwMkVBXHUwMzI1YVx1MDMyNUJcdTAzMDdiXHUwMzA3Qlx1MDMyM2JcdTAzMjNCXHUwMzMxYlx1MDMzMUMiKworICAgICAgICAiXHUwMzI3XHUwMzAxY1x1MDMyN1x1MDMwMURcdTAzMDdkXHUwMzA3RFx1MDMyM2RcdTAzMjNEXHUwMzMxZFx1MDMzMURcdTAzMjciKworICAgICAgICAiZFx1MDMyN0RcdTAzMkRkXHUwMzJERVx1MDMwNFx1MDMwMGVcdTAzMDRcdTAzMDBFXHUwMzA0XHUwMzAxZVx1MDMwNFx1MDMwMSIrCisgICAgICAgICJFXHUwMzJEZVx1MDMyREVcdTAzMzBlXHUwMzMwRVx1MDMyN1x1MDMwNmVcdTAzMjdcdTAzMDZGXHUwMzA3Zlx1MDMwN0ciKworICAgICAgICAiXHUwMzA0Z1x1MDMwNEhcdTAzMDdoXHUwMzA3SFx1MDMyM2hcdTAzMjNIXHUwMzA4aFx1MDMwOEhcdTAzMjdoXHUwMzI3IisKKyAgICAgICAgIkhcdTAzMkVoXHUwMzJFSVx1MDMzMGlcdTAzMzBJXHUwMzA4XHUwMzAxaVx1MDMwOFx1MDMwMUtcdTAzMDFrXHUwMzAxSyIrCisgICAgICAgICJcdTAzMjNrXHUwMzIzS1x1MDMzMWtcdTAzMzFMXHUwMzIzbFx1MDMyM0xcdTAzMjNcdTAzMDRsXHUwMzIzXHUwMzA0TFx1MDMzMSIrCisgICAgICAgICJsXHUwMzMxTFx1MDMyRGxcdTAzMkRNXHUwMzAxbVx1MDMwMU1cdTAzMDdtXHUwMzA3TVx1MDMyM21cdTAzMjNOXHUwMzA3IisKKyAgICAgICAgIm5cdTAzMDdOXHUwMzIzblx1MDMyM05cdTAzMzFuXHUwMzMxTlx1MDMyRG5cdTAzMkRPXHUwMzAzXHUwMzAxb1x1MDMwMyIrCisgICAgICAgICJcdTAzMDFPXHUwMzAzXHUwMzA4b1x1MDMwM1x1MDMwOE9cdTAzMDRcdTAzMDBvXHUwMzA0XHUwMzAwT1x1MDMwNFx1MDMwMSIrCisgICAgICAgICJvXHUwMzA0XHUwMzAxUFx1MDMwMXBcdTAzMDFQXHUwMzA3cFx1MDMwN1JcdTAzMDdyXHUwMzA3Ulx1MDMyM3JcdTAzMjMiKworICAgICAgICAiUlx1MDMyM1x1MDMwNHJcdTAzMjNcdTAzMDRSXHUwMzMxclx1MDMzMVNcdTAzMDdzXHUwMzA3U1x1MDMyM3NcdTAzMjNTIisKKyAgICAgICAgIlx1MDMwMVx1MDMwN3NcdTAzMDFcdTAzMDdTXHUwMzBDXHUwMzA3c1x1MDMwQ1x1MDMwN1NcdTAzMjNcdTAzMDdzXHUwMzIzIisKKyAgICAgICAgIlx1MDMwN1RcdTAzMDd0XHUwMzA3VFx1MDMyM3RcdTAzMjNUXHUwMzMxdFx1MDMzMVRcdTAzMkR0XHUwMzJEVVx1MDMyNCIrCisgICAgICAgICJ1XHUwMzI0VVx1MDMzMHVcdTAzMzBVXHUwMzJEdVx1MDMyRFVcdTAzMDNcdTAzMDF1XHUwMzAzXHUwMzAxVVx1MDMwNFx1MDMwOCIrCisgICAgICAgICJ1XHUwMzA0XHUwMzA4Vlx1MDMwM3ZcdTAzMDNWXHUwMzIzdlx1MDMyM1dcdTAzMDB3XHUwMzAwV1x1MDMwMXdcdTAzMDEiKworICAgICAgICAiV1x1MDMwOHdcdTAzMDhXXHUwMzA3d1x1MDMwN1dcdTAzMjN3XHUwMzIzWFx1MDMwN3hcdTAzMDdYXHUwMzA4eFx1MDMwOCIrCisgICAgICAgICJZXHUwMzA3eVx1MDMwN1pcdTAzMDJ6XHUwMzAyWlx1MDMyM3pcdTAzMjNaXHUwMzMxelx1MDMzMWhcdTAzMzF0XHUwMzA4IisKKyAgICAgICAgIndcdTAzMEF5XHUwMzBBXHUwMTdGXHUwMzA3QVx1MDMyM2FcdTAzMjNBXHUwMzA5YVx1MDMwOUFcdTAzMDJcdTAzMDFhXHUwMzAyIisKKyAgICAgICAgIlx1MDMwMUFcdTAzMDJcdTAzMDBhXHUwMzAyXHUwMzAwQVx1MDMwMlx1MDMwOWFcdTAzMDJcdTAzMDlBXHUwMzAyXHUwMzAzIisKKyAgICAgICAgImFcdTAzMDJcdTAzMDNBXHUwMzIzXHUwMzAyYVx1MDMyM1x1MDMwMkFcdTAzMDZcdTAzMDFhXHUwMzA2XHUwMzAxQVx1MDMwNiIrCisgICAgICAgICJcdTAzMDBhXHUwMzA2XHUwMzAwQVx1MDMwNlx1MDMwOWFcdTAzMDZcdTAzMDlBXHUwMzA2XHUwMzAzYVx1MDMwNlx1MDMwMyIrCisgICAgICAgICJBXHUwMzIzXHUwMzA2YVx1MDMyM1x1MDMwNkVcdTAzMjNlXHUwMzIzRVx1MDMwOWVcdTAzMDlFXHUwMzAzZVx1MDMwM0UiKworICAgICAgICAiXHUwMzAyXHUwMzAxZVx1MDMwMlx1MDMwMUVcdTAzMDJcdTAzMDBlXHUwMzAyXHUwMzAwRVx1MDMwMlx1MDMwOWVcdTAzMDIiKworICAgICAgICAiXHUwMzA5RVx1MDMwMlx1MDMwM2VcdTAzMDJcdTAzMDNFXHUwMzIzXHUwMzAyZVx1MDMyM1x1MDMwMklcdTAzMDlpXHUwMzA5IisKKyAgICAgICAgIklcdTAzMjNpXHUwMzIzT1x1MDMyM29cdTAzMjNPXHUwMzA5b1x1MDMwOU9cdTAzMDJcdTAzMDFvXHUwMzAyXHUwMzAxTyIrCisgICAgICAgICJcdTAzMDJcdTAzMDBvXHUwMzAyXHUwMzAwT1x1MDMwMlx1MDMwOW9cdTAzMDJcdTAzMDlPXHUwMzAyXHUwMzAzb1x1MDMwMiIrCisgICAgICAgICJcdTAzMDNPXHUwMzIzXHUwMzAyb1x1MDMyM1x1MDMwMk9cdTAzMUJcdTAzMDFvXHUwMzFCXHUwMzAxT1x1MDMxQlx1MDMwMCIrCisgICAgICAgICJvXHUwMzFCXHUwMzAwT1x1MDMxQlx1MDMwOW9cdTAzMUJcdTAzMDlPXHUwMzFCXHUwMzAzb1x1MDMxQlx1MDMwM09cdTAzMUIiKworICAgICAgICAiXHUwMzIzb1x1MDMxQlx1MDMyM1VcdTAzMjN1XHUwMzIzVVx1MDMwOXVcdTAzMDlVXHUwMzFCXHUwMzAxdVx1MDMxQlx1MDMwMSIrCisgICAgICAgICJVXHUwMzFCXHUwMzAwdVx1MDMxQlx1MDMwMFVcdTAzMUJcdTAzMDl1XHUwMzFCXHUwMzA5VVx1MDMxQlx1MDMwM3VcdTAzMUIiKworICAgICAgICAiXHUwMzAzVVx1MDMxQlx1MDMyM3VcdTAzMUJcdTAzMjNZXHUwMzAweVx1MDMwMFlcdTAzMjN5XHUwMzIzWVx1MDMwOXlcdTAzMDkiKworICAgICAgICAiWVx1MDMwM3lcdTAzMDNcdTAzQjFcdTAzMTNcdTAzQjFcdTAzMTRcdTAzQjFcdTAzMTNcdTAzMDBcdTAzQjFcdTAzMTRcdTAzMDAiKworICAgICAgICAiXHUwM0IxXHUwMzEzXHUwMzAxXHUwM0IxXHUwMzE0XHUwMzAxXHUwM0IxXHUwMzEzXHUwMzQyXHUwM0IxXHUwMzE0XHUwMzQyIisKKyAgICAgICAgIlx1MDM5MVx1MDMxM1x1MDM5MVx1MDMxNFx1MDM5MVx1MDMxM1x1MDMwMFx1MDM5MVx1MDMxNFx1MDMwMFx1MDM5MVx1MDMxMyIrCisgICAgICAgICJcdTAzMDFcdTAzOTFcdTAzMTRcdTAzMDFcdTAzOTFcdTAzMTNcdTAzNDJcdTAzOTFcdTAzMTRcdTAzNDJcdTAzQjVcdTAzMTMiKworICAgICAgICAiXHUwM0I1XHUwMzE0XHUwM0I1XHUwMzEzXHUwMzAwXHUwM0I1XHUwMzE0XHUwMzAwXHUwM0I1XHUwMzEzXHUwMzAxXHUwM0I1IisKKyAgICAgICAgIlx1MDMxNFx1MDMwMVx1MDM5NVx1MDMxM1x1MDM5NVx1MDMxNFx1MDM5NVx1MDMxM1x1MDMwMFx1MDM5NVx1MDMxNFx1MDMwMCIrCisgICAgICAgICJcdTAzOTVcdTAzMTNcdTAzMDFcdTAzOTVcdTAzMTRcdTAzMDFcdTAzQjdcdTAzMTNcdTAzQjdcdTAzMTRcdTAzQjdcdTAzMTMiKworICAgICAgICAiXHUwMzAwXHUwM0I3XHUwMzE0XHUwMzAwXHUwM0I3XHUwMzEzXHUwMzAxXHUwM0I3XHUwMzE0XHUwMzAxXHUwM0I3XHUwMzEzIisKKyAgICAgICAgIlx1MDM0Mlx1MDNCN1x1MDMxNFx1MDM0Mlx1MDM5N1x1MDMxM1x1MDM5N1x1MDMxNFx1MDM5N1x1MDMxM1x1MDMwMFx1MDM5NyIrCisgICAgICAgICJcdTAzMTRcdTAzMDBcdTAzOTdcdTAzMTNcdTAzMDFcdTAzOTdcdTAzMTRcdTAzMDFcdTAzOTdcdTAzMTNcdTAzNDJcdTAzOTciKworICAgICAgICAiXHUwMzE0XHUwMzQyXHUwM0I5XHUwMzEzXHUwM0I5XHUwMzE0XHUwM0I5XHUwMzEzXHUwMzAwXHUwM0I5XHUwMzE0XHUwMzAwIisKKyAgICAgICAgIlx1MDNCOVx1MDMxM1x1MDMwMVx1MDNCOVx1MDMxNFx1MDMwMVx1MDNCOVx1MDMxM1x1MDM0Mlx1MDNCOVx1MDMxNFx1MDM0MiIrCisgICAgICAgICJcdTAzOTlcdTAzMTNcdTAzOTlcdTAzMTRcdTAzOTlcdTAzMTNcdTAzMDBcdTAzOTlcdTAzMTRcdTAzMDBcdTAzOTlcdTAzMTMiKworICAgICAgICAiXHUwMzAxXHUwMzk5XHUwMzE0XHUwMzAxXHUwMzk5XHUwMzEzXHUwMzQyXHUwMzk5XHUwMzE0XHUwMzQyXHUwM0JGXHUwMzEzIisKKyAgICAgICAgIlx1MDNCRlx1MDMxNFx1MDNCRlx1MDMxM1x1MDMwMFx1MDNCRlx1MDMxNFx1MDMwMFx1MDNCRlx1MDMxM1x1MDMwMVx1MDNCRiIrCisgICAgICAgICJcdTAzMTRcdTAzMDFcdTAzOUZcdTAzMTNcdTAzOUZcdTAzMTRcdTAzOUZcdTAzMTNcdTAzMDBcdTAzOUZcdTAzMTRcdTAzMDAiKworICAgICAgICAiXHUwMzlGXHUwMzEzXHUwMzAxXHUwMzlGXHUwMzE0XHUwMzAxXHUwM0M1XHUwMzEzXHUwM0M1XHUwMzE0XHUwM0M1XHUwMzEzIisKKyAgICAgICAgIlx1MDMwMFx1MDNDNVx1MDMxNFx1MDMwMFx1MDNDNVx1MDMxM1x1MDMwMVx1MDNDNVx1MDMxNFx1MDMwMVx1MDNDNVx1MDMxMyIrCisgICAgICAgICJcdTAzNDJcdTAzQzVcdTAzMTRcdTAzNDJcdTAzQTVcdTAzMTRcdTAzQTVcdTAzMTRcdTAzMDBcdTAzQTVcdTAzMTRcdTAzMDEiKworICAgICAgICAiXHUwM0E1XHUwMzE0XHUwMzQyXHUwM0M5XHUwMzEzXHUwM0M5XHUwMzE0XHUwM0M5XHUwMzEzXHUwMzAwXHUwM0M5XHUwMzE0IisKKyAgICAgICAgIlx1MDMwMFx1MDNDOVx1MDMxM1x1MDMwMVx1MDNDOVx1MDMxNFx1MDMwMVx1MDNDOVx1MDMxM1x1MDM0Mlx1MDNDOVx1MDMxNCIrCisgICAgICAgICJcdTAzNDJcdTAzQTlcdTAzMTNcdTAzQTlcdTAzMTRcdTAzQTlcdTAzMTNcdTAzMDBcdTAzQTlcdTAzMTRcdTAzMDBcdTAzQTkiKworICAgICAgICAiXHUwMzEzXHUwMzAxXHUwM0E5XHUwMzE0XHUwMzAxXHUwM0E5XHUwMzEzXHUwMzQyXHUwM0E5XHUwMzE0XHUwMzQyXHUwM0IxIisKKyAgICAgICAgIlx1MDMwMFx1MDNCMVx1MDMwMVx1MDNCNVx1MDMwMFx1MDNCNVx1MDMwMVx1MDNCN1x1MDMwMFx1MDNCN1x1MDMwMVx1MDNCOSIrCisgICAgICAgICJcdTAzMDBcdTAzQjlcdTAzMDFcdTAzQkZcdTAzMDBcdTAzQkZcdTAzMDFcdTAzQzVcdTAzMDBcdTAzQzVcdTAzMDFcdTAzQzkiKworICAgICAgICAiXHUwMzAwXHUwM0M5XHUwMzAxXHUwM0IxXHUwMzEzXHUwMzQ1XHUwM0IxXHUwMzE0XHUwMzQ1XHUwM0IxXHUwMzEzXHUwMzAwIisKKyAgICAgICAgIlx1MDM0NVwwMDBcdTAzQjFcdTAzMTRcdTAzMDBcdTAzNDVcMDAwXHUwM0IxXHUwMzEzXHUwMzAxXHUwMzQ1XDAwMFx1MDNCMSIrCisgICAgICAgICJcdTAzMTRcdTAzMDFcdTAzNDVcMDAwXHUwM0IxXHUwMzEzXHUwMzQyXHUwMzQ1XDAwMFx1MDNCMVx1MDMxNFx1MDM0Mlx1MDM0NSIrCisgICAgICAgICJcMDAwXHUwMzkxXHUwMzEzXHUwMzQ1XHUwMzkxXHUwMzE0XHUwMzQ1XHUwMzkxXHUwMzEzXHUwMzAwXHUwMzQ1XDAwMFx1MDM5MSIrCisgICAgICAgICJcdTAzMTRcdTAzMDBcdTAzNDVcMDAwXHUwMzkxXHUwMzEzXHUwMzAxXHUwMzQ1XDAwMFx1MDM5MVx1MDMxNFx1MDMwMVx1MDM0NSIrCisgICAgICAgICJcMDAwXHUwMzkxXHUwMzEzXHUwMzQyXHUwMzQ1XDAwMFx1MDM5MVx1MDMxNFx1MDM0Mlx1MDM0NVwwMDBcdTAzQjdcdTAzMTMiKworICAgICAgICAiXHUwMzQ1XHUwM0I3XHUwMzE0XHUwMzQ1XHUwM0I3XHUwMzEzXHUwMzAwXHUwMzQ1XDAwMFx1MDNCN1x1MDMxNFx1MDMwMCIrCisgICAgICAgICJcdTAzNDVcMDAwXHUwM0I3XHUwMzEzXHUwMzAxXHUwMzQ1XDAwMFx1MDNCN1x1MDMxNFx1MDMwMVx1MDM0NVwwMDBcdTAzQjciKworICAgICAgICAiXHUwMzEzXHUwMzQyXHUwMzQ1XDAwMFx1MDNCN1x1MDMxNFx1MDM0Mlx1MDM0NVwwMDBcdTAzOTdcdTAzMTNcdTAzNDVcdTAzOTciKworICAgICAgICAiXHUwMzE0XHUwMzQ1XHUwMzk3XHUwMzEzXHUwMzAwXHUwMzQ1XDAwMFx1MDM5N1x1MDMxNFx1MDMwMFx1MDM0NVwwMDBcdTAzOTciKworICAgICAgICAiXHUwMzEzXHUwMzAxXHUwMzQ1XDAwMFx1MDM5N1x1MDMxNFx1MDMwMVx1MDM0NVwwMDBcdTAzOTdcdTAzMTNcdTAzNDJcdTAzNDUiKworICAgICAgICAiXDAwMFx1MDM5N1x1MDMxNFx1MDM0Mlx1MDM0NVwwMDBcdTAzQzlcdTAzMTNcdTAzNDVcdTAzQzlcdTAzMTRcdTAzNDVcdTAzQzkiKworICAgICAgICAiXHUwMzEzXHUwMzAwXHUwMzQ1XDAwMFx1MDNDOVx1MDMxNFx1MDMwMFx1MDM0NVwwMDBcdTAzQzlcdTAzMTNcdTAzMDFcdTAzNDUiKworICAgICAgICAiXDAwMFx1MDNDOVx1MDMxNFx1MDMwMVx1MDM0NVwwMDBcdTAzQzlcdTAzMTNcdTAzNDJcdTAzNDVcMDAwXHUwM0M5XHUwMzE0IisKKyAgICAgICAgIlx1MDM0Mlx1MDM0NVwwMDBcdTAzQTlcdTAzMTNcdTAzNDVcdTAzQTlcdTAzMTRcdTAzNDVcdTAzQTlcdTAzMTNcdTAzMDAiKworICAgICAgICAiXHUwMzQ1XDAwMFx1MDNBOVx1MDMxNFx1MDMwMFx1MDM0NVwwMDBcdTAzQTlcdTAzMTNcdTAzMDFcdTAzNDVcMDAwXHUwM0E5IisKKyAgICAgICAgIlx1MDMxNFx1MDMwMVx1MDM0NVwwMDBcdTAzQTlcdTAzMTNcdTAzNDJcdTAzNDVcMDAwXHUwM0E5XHUwMzE0XHUwMzQyXHUwMzQ1IisKKyAgICAgICAgIlwwMDBcdTAzQjFcdTAzMDZcdTAzQjFcdTAzMDRcdTAzQjFcdTAzMDBcdTAzNDVcdTAzQjFcdTAzNDVcdTAzQjFcdTAzMDEiKworICAgICAgICAiXHUwMzQ1XHUwM0IxXHUwMzQyXHUwM0IxXHUwMzQyXHUwMzQ1XHUwMzkxXHUwMzA2XHUwMzkxXHUwMzA0XHUwMzkxXHUwMzAwIisKKyAgICAgICAgIlx1MDM5MVx1MDMwMVx1MDM5MVx1MDM0NVx1MDNCOVx1MDBBOFx1MDM0Mlx1MDNCN1x1MDMwMFx1MDM0NVx1MDNCN1x1MDM0NSIrCisgICAgICAgICJcdTAzQjdcdTAzMDFcdTAzNDVcdTAzQjdcdTAzNDJcdTAzQjdcdTAzNDJcdTAzNDVcdTAzOTVcdTAzMDBcdTAzOTVcdTAzMDEiKworICAgICAgICAiXHUwMzk3XHUwMzAwXHUwMzk3XHUwMzAxXHUwMzk3XHUwMzQ1XHUxRkJGXHUwMzAwXHUxRkJGXHUwMzAxXHUxRkJGXHUwMzQyIisKKyAgICAgICAgIlx1MDNCOVx1MDMwNlx1MDNCOVx1MDMwNFx1MDNCOVx1MDMwOFx1MDMwMFx1MDNCOVx1MDMwOFx1MDMwMVx1MDNCOVx1MDM0MiIrCisgICAgICAgICJcdTAzQjlcdTAzMDhcdTAzNDJcdTAzOTlcdTAzMDZcdTAzOTlcdTAzMDRcdTAzOTlcdTAzMDBcdTAzOTlcdTAzMDFcdTFGRkUiKworICAgICAgICAiXHUwMzAwXHUxRkZFXHUwMzAxXHUxRkZFXHUwMzQyXHUwM0M1XHUwMzA2XHUwM0M1XHUwMzA0XHUwM0M1XHUwMzA4XHUwMzAwIisKKyAgICAgICAgIlx1MDNDNVx1MDMwOFx1MDMwMVx1MDNDMVx1MDMxM1x1MDNDMVx1MDMxNFx1MDNDNVx1MDM0Mlx1MDNDNVx1MDMwOFx1MDM0MiIrCisgICAgICAgICJcdTAzQTVcdTAzMDZcdTAzQTVcdTAzMDRcdTAzQTVcdTAzMDBcdTAzQTVcdTAzMDFcdTAzQTFcdTAzMTRcdTAwQThcdTAzMDAiKworICAgICAgICAiXHUwMEE4XHUwMzAxYFx1MDNDOVx1MDMwMFx1MDM0NVx1MDNDOVx1MDM0NVx1MDNDOVx1MDMwMVx1MDM0NVx1MDNDOVx1MDM0MiIrCisgICAgICAgICJcdTAzQzlcdTAzNDJcdTAzNDVcdTAzOUZcdTAzMDBcdTAzOUZcdTAzMDFcdTAzQTlcdTAzMDBcdTAzQTlcdTAzMDFcdTAzQTkiKworICAgICAgICAiXHUwMzQ1XHUwMEI0XHUyMDAyXHUyMDAzXHUwM0E5S0FcdTAzMEFcdTIxOTBcdTAzMzhcdTIxOTJcdTAzMzhcdTIxOTRcdTAzMzgiKworICAgICAgICAiXHUyMUQwXHUwMzM4XHUyMUQ0XHUwMzM4XHUyMUQyXHUwMzM4XHUyMjAzXHUwMzM4XHUyMjA4XHUwMzM4XHUyMjBCXHUwMzM4IisKKyAgICAgICAgIlx1MjIyM1x1MDMzOFx1MjIyNVx1MDMzOFx1MjIzQ1x1MDMzOFx1MjI0M1x1MDMzOFx1MjI0NVx1MDMzOFx1MjI0OFx1MDMzOCIrCisgICAgICAgICI9XHUwMzM4XHUyMjYxXHUwMzM4XHUyMjREXHUwMzM4PFx1MDMzOD5cdTAzMzhcdTIyNjRcdTAzMzhcdTIyNjVcdTAzMzgiKworICAgICAgICAiXHUyMjcyXHUwMzM4XHUyMjczXHUwMzM4XHUyMjc2XHUwMzM4XHUyMjc3XHUwMzM4XHUyMjdBXHUwMzM4XHUyMjdCXHUwMzM4IisKKyAgICAgICAgIlx1MjI4Mlx1MDMzOFx1MjI4M1x1MDMzOFx1MjI4Nlx1MDMzOFx1MjI4N1x1MDMzOFx1MjJBMlx1MDMzOFx1MjJBOFx1MDMzOCIrCisgICAgICAgICJcdTIyQTlcdTAzMzhcdTIyQUJcdTAzMzhcdTIyN0NcdTAzMzhcdTIyN0RcdTAzMzhcdTIyOTFcdTAzMzhcdTIyOTJcdTAzMzgiKworICAgICAgICAiXHUyMkIyXHUwMzM4XHUyMkIzXHUwMzM4XHUyMkI0XHUwMzM4XHUyMkI1XHUwMzM4XHUzMDA4XHUzMDA5XHUzMDRCXHUzMDk5IisKKyAgICAgICAgIlx1MzA0RFx1MzA5OVx1MzA0Rlx1MzA5OVx1MzA1MVx1MzA5OVx1MzA1M1x1MzA5OVx1MzA1NVx1MzA5OVx1MzA1N1x1MzA5OSIrCisgICAgICAgICJcdTMwNTlcdTMwOTlcdTMwNUJcdTMwOTlcdTMwNURcdTMwOTlcdTMwNUZcdTMwOTlcdTMwNjFcdTMwOTlcdTMwNjRcdTMwOTkiKworICAgICAgICAiXHUzMDY2XHUzMDk5XHUzMDY4XHUzMDk5XHUzMDZGXHUzMDk5XHUzMDZGXHUzMDlBXHUzMDcyXHUzMDk5XHUzMDcyXHUzMDlBIisKKyAgICAgICAgIlx1MzA3NVx1MzA5OVx1MzA3NVx1MzA5QVx1MzA3OFx1MzA5OVx1MzA3OFx1MzA5QVx1MzA3Qlx1MzA5OVx1MzA3Qlx1MzA5QSIrCisgICAgICAgICJcdTMwNDZcdTMwOTlcdTMwOURcdTMwOTlcdTMwQUJcdTMwOTlcdTMwQURcdTMwOTlcdTMwQUZcdTMwOTlcdTMwQjFcdTMwOTkiKworICAgICAgICAiXHUzMEIzXHUzMDk5XHUzMEI1XHUzMDk5XHUzMEI3XHUzMDk5XHUzMEI5XHUzMDk5XHUzMEJCXHUzMDk5XHUzMEJEXHUzMDk5IisKKyAgICAgICAgIlx1MzBCRlx1MzA5OVx1MzBDMVx1MzA5OVx1MzBDNFx1MzA5OVx1MzBDNlx1MzA5OVx1MzBDOFx1MzA5OVx1MzBDRlx1MzA5OSIrCisgICAgICAgICJcdTMwQ0ZcdTMwOUFcdTMwRDJcdTMwOTlcdTMwRDJcdTMwOUFcdTMwRDVcdTMwOTlcdTMwRDVcdTMwOUFcdTMwRDhcdTMwOTkiKworICAgICAgICAiXHUzMEQ4XHUzMDlBXHUzMERCXHUzMDk5XHUzMERCXHUzMDlBXHUzMEE2XHUzMDk5XHUzMEVGXHUzMDk5XHUzMEYwXHUzMDk5IisKKyAgICAgICAgIlx1MzBGMVx1MzA5OVx1MzBGMlx1MzA5OVx1MzBGRFx1MzA5OVx1OEM0OFx1NjZGNFx1OEVDQVx1OENDOFx1NkVEMVx1NEUzMiIrCisgICAgICAgICJcdTUzRTVcdTlGOUNcdTlGOUNcdTU5NTFcdTkxRDFcdTU1ODdcdTU5NDhcdTYxRjZcdTc2NjlcdTdGODVcdTg2M0ZcdTg3QkEiKworICAgICAgICAiXHU4OEY4XHU5MDhGXHU2QTAyXHU2RDFCXHU3MEQ5XHU3M0RFXHU4NDNEXHU5MTZBXHU5OUYxXHU0RTgyXHU1Mzc1XHU2QjA0IisKKyAgICAgICAgIlx1NzIxQlx1ODYyRFx1OUUxRVx1NUQ1MFx1NkZFQlx1ODVDRFx1ODk2NFx1NjJDOVx1ODFEOFx1ODgxRlx1NUVDQVx1NjcxNyIrCisgICAgICAgICJcdTZENkFcdTcyRkNcdTkwQ0VcdTRGODZcdTUxQjdcdTUyREVcdTY0QzRcdTZBRDNcdTcyMTBcdTc2RTdcdTgwMDFcdTg2MDYiKworICAgICAgICAiXHU4NjVDXHU4REVGXHU5NzMyXHU5QjZGXHU5REZBXHU3ODhDXHU3OTdGXHU3REEwXHU4M0M5XHU5MzA0XHU5RTdGXHU4QUQ2IisKKyAgICAgICAgIlx1NThERlx1NUYwNFx1N0M2MFx1ODA3RVx1NzI2Mlx1NzhDQVx1OENDMlx1OTZGN1x1NThEOFx1NUM2Mlx1NkExM1x1NkREQSIrCisgICAgICAgICJcdTZGMEZcdTdEMkZcdTdFMzdcdTk2RkJcdTUyRDJcdTgwOEJcdTUxRENcdTUxQ0NcdTdBMUNcdTdEQkVcdTgzRjFcdTk2NzUiKworICAgICAgICAiXHU4QjgwXHU2MkNGXHU2QTAyXHU4QUZFXHU0RTM5XHU1QkU3XHU2MDEyXHU3Mzg3XHU3NTcwXHU1MzE3XHU3OEZCXHU0RkJGIisKKyAgICAgICAgIlx1NUZBOVx1NEUwRFx1NkNDQ1x1NjU3OFx1N0QyMlx1NTNDM1x1NTg1RVx1NzcwMVx1ODQ0OVx1OEFBQVx1NkJCQVx1OEZCMCIrCisgICAgICAgICJcdTZDODhcdTYyRkVcdTgyRTVcdTYzQTBcdTc1NjVcdTRFQUVcdTUxNjlcdTUxQzlcdTY4ODFcdTdDRTdcdTgyNkZcdThBRDIiKworICAgICAgICAiXHU5MUNGXHU1MkY1XHU1NDQyXHU1OTczXHU1RUVDXHU2NUM1XHU2RkZFXHU3OTJBXHU5NUFEXHU5QTZBXHU5RTk3XHU5RUNFIisKKyAgICAgICAgIlx1NTI5Qlx1NjZDNlx1NkI3N1x1OEY2Mlx1NUU3NFx1NjE5MFx1NjIwMFx1NjQ5QVx1NkYyM1x1NzE0OVx1NzQ4OVx1NzlDQSIrCisgICAgICAgICJcdTdERjRcdTgwNkZcdThGMjZcdTg0RUVcdTkwMjNcdTkzNEFcdTUyMTdcdTUyQTNcdTU0QkRcdTcwQzhcdTg4QzJcdThBQUEiKworICAgICAgICAiXHU1RUM5XHU1RkY1XHU2MzdCXHU2QkFFXHU3QzNFXHU3Mzc1XHU0RUU0XHU1NkY5XHU1QkU3XHU1REJBXHU2MDFDXHU3M0IyIisKKyAgICAgICAgIlx1NzQ2OVx1N0Y5QVx1ODA0Nlx1OTIzNFx1OTZGNlx1OTc0OFx1OTgxOFx1NEY4Qlx1NzlBRVx1OTFCNFx1OTZCOFx1NjBFMSIrCisgICAgICAgICJcdTRFODZcdTUwREFcdTVCRUVcdTVDM0ZcdTY1OTlcdTZBMDJcdTcxQ0VcdTc2NDJcdTg0RkNcdTkwN0NcdTlGOERcdTY2ODgiKworICAgICAgICAiXHU5NjJFXHU1Mjg5XHU2NzdCXHU2N0YzXHU2RDQxXHU2RTlDXHU3NDA5XHU3NTU5XHU3ODZCXHU3RDEwXHU5ODVFXHU1MTZEIisKKyAgICAgICAgIlx1NjIyRVx1OTY3OFx1NTAyQlx1NUQxOVx1NkRFQVx1OEYyQVx1NUY4Qlx1NjE0NFx1NjgxN1x1NzM4N1x1OTY4Nlx1NTIyOSIrCisgICAgICAgICJcdTU0MEZcdTVDNjVcdTY2MTNcdTY3NEVcdTY4QThcdTZDRTVcdTc0MDZcdTc1RTJcdTdGNzlcdTg4Q0ZcdTg4RTFcdTkxQ0MiKworICAgICAgICAiXHU5NkUyXHU1MzNGXHU2RUJBXHU1NDFEXHU3MUQwXHU3NDk4XHU4NUZBXHU5NkEzXHU5QzU3XHU5RTlGXHU2Nzk3XHU2RENCIisKKyAgICAgICAgIlx1ODFFOFx1N0FDQlx1N0IyMFx1N0M5Mlx1NzJDMFx1NzA5OVx1OEI1OFx1NEVDMFx1ODMzNlx1NTIzQVx1NTIwN1x1NUVBNiIrCisgICAgICAgICJcdTYyRDNcdTdDRDZcdTVCODVcdTZEMUVcdTY2QjRcdThGM0JcdTg4NENcdTk2NERcdTg5OEJcdTVFRDNcdTUxNDBcdTU1QzAiKworICAgICAgICAiXHU1ODVBXHU2Njc0XHU1MURFXHU3MzJBXHU3NkNBXHU3OTNDXHU3OTVFXHU3OTY1XHU3OThGXHU5NzU2XHU3Q0JFXHU3RkJEIisKKyAgICAgICAgIlx1ODYxMlx1OEFGOFx1OTAzOFx1OTBGRFx1OThFRlx1OThGQ1x1OTkyOFx1OURCNFx1MDVEOVx1MDVCNFx1MDVGMlx1MDVCNyIrCisgICAgICAgICJcdTA1RTlcdTA1QzFcdTA1RTlcdTA1QzJcdTA1RTlcdTA1QkNcdTA1QzFcdTA1RTlcdTA1QkNcdTA1QzJcdTA1RDBcdTA1QjciKworICAgICAgICAiXHUwNUQwXHUwNUI4XHUwNUQwXHUwNUJDXHUwNUQxXHUwNUJDXHUwNUQyXHUwNUJDXHUwNUQzXHUwNUJDXHUwNUQ0XHUwNUJDIisKKyAgICAgICAgIlx1MDVENVx1MDVCQ1x1MDVENlx1MDVCQ1x1MDVEOFx1MDVCQ1x1MDVEOVx1MDVCQ1x1MDVEQVx1MDVCQ1x1MDVEQlx1MDVCQyIrCisgICAgICAgICJcdTA1RENcdTA1QkNcdTA1REVcdTA1QkNcdTA1RTBcdTA1QkNcdTA1RTFcdTA1QkNcdTA1RTNcdTA1QkNcdTA1RTRcdTA1QkMiKworICAgICAgICAiXHUwNUU2XHUwNUJDXHUwNUU3XHUwNUJDXHUwNUU4XHUwNUJDXHUwNUU5XHUwNUJDXHUwNUVBXHUwNUJDXHUwNUQ1XHUwNUI5IisKKyAgICAgICAgIlx1MDVEMVx1MDVCRlx1MDVEQlx1MDVCRlx1MDVFNFx1MDVCRiIKKyAgICA7CisKKyAgICBzdGF0aWMgZmluYWwgQ29tcGFjdEJ5dGVBcnJheSBjYW5vbkNsYXNzID0gbmV3IENvbXBhY3RCeXRlQXJyYXkoCisgICAgICAgICJcMDAwXHUwMjAwXHVBNUE1XDAwNlwwMDBcdTAwODBcMDAwXDAwMFx1MDEwMFwwMDBcdTAxODBcdTAyMDBcdTAyODBcdTAzMDAiKworICAgICAgICAiXDAwMFwwMDBcMDAwXHUwMzgwXHVBNUE1XDAwNFx1MDQwMFx1MDQ4MFx1MDUwMFx1MDQ4MFx1MDQ4MFx1MDU4MFx1MDYwMCIrCisgICAgICAgICJcdTA2ODBcdTA3MDBcdTA3ODBcdTA4MDBcdUE1QTVcMDE2XDAwMFx1MDg4MFwwMDBcdTA5MDBcdUE1QTVcMDE3XDAwMFx1MDk4MCIrCisgICAgICAgICJcdUE1QTVcMDM2XDAwMFx1MEEwMFx1MEE4MFx1QTVBNVx1MDE5NFwwMDBcdTBCMDBcdUE1QTVcMDA1XDAwMFx1MEI4MFwwMDAiKworICAgICAgICAiXDAwMFwwMDAiCisgICAgICAgICwKKyAgICAgICAgIlwwMDBcdTBDMDBcdUE1ODBcdTAwQTVcdTE1RTZcdUU4QTVcdTA0RENcdUU4RDhcdUE1MDVcdURDQ0FcdUNBQTVcdTA0REMiKworICAgICAgICAiXHVDQUNBXHVBNTBCXHVEQ0E1XHUwNTAxXHVBNTA0XHVEQ0E1XHUwOEU2XHVGMEU2XHVEQ0RDXHVEQ0U2XHVFNkU2XHVEQ0RDIisKKyAgICAgICAgIlx1QTUxMVx1MDBFQVx1RUFFOVx1QTUyMFx1MDBBNVx1MDRFNlx1QTU4QVx1MDBEQ1x1QTUwNFx1RTZEQ1x1RTZFNlx1RTZERSIrCisgICAgICAgICJcdURDQTVcdTA2RTZcdTAwQTVcdTA1RENcdUU2RTZcdURDRTZcdUU2REVcdUU0RTZcdTBBMEJcdTBDMERcdTBFMEZcdTEwMTEiKworICAgICAgICAiXHUxMjEzXDAyNFx1MTUxNlwwMjdcMDMwXHUxOTAwXHVFNkE1XHU4NjAwXHUxQjFDXHUxRDFFXHUxRjIwXHUyMTIyXHVFNkU2IisKKyAgICAgICAgIlx1RENBNVx1MUEwMFx1MjNBNVx1NjUwMFx1QTUwN1x1RTYwMFx1MDBBNVx1MDRFNlx1RENFNlwwMDBcdUU2RTZcdTAwREMiKworICAgICAgICAiXHVFNkU2XHVEQ0E1XHUyMzAwXHUyNEE1XHUxRTAwXHVFNkRDXHVFNkU2XHVEQ0U2XHVFNkRDXHVEQ0RDXHVFNkRDXHVEQ0U2IisKKyAgICAgICAgIlx1RENFNlx1RTZFNlx1RENFNlx1RENFNlx1RENFNlx1RENFNlx1RTZBNVx1NzEwMFx1MDdBNVx1MTAwMFx1MDkwMFwwMDAiKworICAgICAgICAiXHVFNkRDXHVFNkU2XHVBNTY3XDAwN1x1QTUxMFwwMTFcdUE1N0ZcMDExXHVBNTdGXDAxMVx1QTUwN1RcdTVCQTVcdTczMDAiKworICAgICAgICAiXHUwOUE1XHU2RDAwXHU2NzY3XHUwOUE1XHUwRDAwXHVBNTA0XHU2QkE1XHU2QzAwXHU3Njc2XHVBNTBFXHUwMEE1XHUwNDdBIisKKyAgICAgICAgIlx1QTU0Q1x1MDBEQ1x1RENBNVx1MUIwMFx1REMwMFx1REMwMFx1RDhBNVx1MzcwMFx1ODE4Mlx1MDA4NFx1QTUwNVx1MDBBNSIrCisgICAgICAgICJcdTA0ODJcMDAwXHU4MjAwXHVFNkU2XHUwOTAwXHVFNkU2XHVBNTNFXHUwMERDXHVBNTcwXDAwN1wwMTFcdUE1OThcMDExIisKKyAgICAgICAgIlx1QTU1Nlx1MDBFNFx1QTVBNlx1MDBFNlx1RTYwMVx1MDFBNVx1MDRFNlx1MDEwMVx1MDFFNlx1RTZBNVx1MDQwMFx1RTZBNSIrCisgICAgICAgICJcdTQ4MDBcdURBRTRcdUU4REVcdUUwRTBcdUE1NjlcMDEwXHUwOEE1XHU4MzAwXHUxQUE1XHU4MTAwXHVBNTA0XHVFNkE1IisKKyAgICAgICAgIlx1NUMwMCIKKyAgICAgICAgKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS90ZXh0L0RpY3Rpb25hcnlCYXNlZEJyZWFrSXRlcmF0b3IuamF2YSBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L0RpY3Rpb25hcnlCYXNlZEJyZWFrSXRlcmF0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mNGUzNGU4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvRGljdGlvbmFyeUJhc2VkQnJlYWtJdGVyYXRvci5qYXZhCkBAIC0wLDAgKzEsNTg4IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvdGV4dC9EaWN0aW9uYXJ5QmFzZWRCcmVha0l0ZXJhdG9yLmphdmEsdiAkCisgKiAkRGF0ZTogMjAwMi8xMi8wNSAwMToyMTo0MiAkCisgKiAkUmV2aXNpb246IDEuMTEgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS5pY3UudGV4dDsKKworaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7CitpbXBvcnQgamF2YS51dGlsLlN0YWNrOworaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7CitpbXBvcnQgamF2YS50ZXh0LkNoYXJhY3Rlckl0ZXJhdG9yOworaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKKworaW1wb3J0IGphdmEuaW8uKjsKKworLyoqCisgKiBBIHN1YmNsYXNzIG9mIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IgdGhhdCBhZGRzIHRoZSBhYmlsaXR5IHRvIHVzZSBhIGRpY3Rpb25hcnkKKyAqIHRvIGZ1cnRoZXIgc3ViZGl2aWRlIHJhbmdlcyBvZiB0ZXh0IGJleW9uZCB3aGF0IGlzIHBvc3NpYmxlIHVzaW5nIGp1c3QgdGhlCisgKiBzdGF0ZS10YWJsZS1iYXNlZCBhbGdvcml0aG0uICBUaGlzIGlzIG5lY2Vzc2FyeSwgZm9yIGV4YW1wbGUsIHRvIGhhbmRsZQorICogd29yZCBhbmQgbGluZSBicmVha2luZyBpbiBUaGFpLCB3aGljaCBkb2Vzbid0IHVzZSBzcGFjZXMgYmV0d2VlbiB3b3Jkcy4gIFRoZQorICogc3RhdGUtdGFibGUtYmFzZWQgYWxnb3JpdGhtIHVzZWQgYnkgUnVsZUJhc2VkQnJlYWtJdGVyYXRvciBpcyB1c2VkIHRvIGRpdmlkZQorICogdXAgdGV4dCBhcyBmYXIgYXMgcG9zc2libGUsIGFuZCB0aGVuIGNvbnRpZ3VvdXMgcmFuZ2VzIG9mIGxldHRlcnMgYXJlCisgKiByZXBlYXRlZGx5IGNvbXBhcmVkIGFnYWluc3QgYSBsaXN0IG9mIGtub3duIHdvcmRzIChpLmUuLCB0aGUgZGljdGlvbmFyeSkKKyAqIHRvIGRpdmlkZSB0aGVtIHVwIGludG8gd29yZHMuCisgKgorICogRGljdGlvbmFyeUJhc2VkQnJlYWtJdGVyYXRvciB1c2VzIHRoZSBzYW1lIHJ1bGUgbGFuZ3VhZ2UgYXMgUnVsZUJhc2VkQnJlYWtJdGVyYXRvciwKKyAqIGJ1dCBhZGRzIG9uZSBtb3JlIHNwZWNpYWwgc3Vic3RpdHV0aW9uIG5hbWU6IF9kaWN0aW9uYXJ5Xy4gIFRoaXMgc3Vic3RpdHV0aW9uCisgKiBuYW1lIGlzIHVzZWQgdG8gaWRlbnRpZnkgY2hhcmFjdGVycyBpbiB3b3JkcyBpbiB0aGUgZGljdGlvbmFyeS4gIFRoZSBpZGVhIGlzIHRoYXQKKyAqIGlmIHRoZSBpdGVyYXRvciBwYXNzZXMgb3ZlciBhIGNodW5rIG9mIHRleHQgdGhhdCBpbmNsdWRlcyB0d28gb3IgbW9yZSBjaGFyYWN0ZXJzCisgKiBpbiBhIHJvdyB0aGF0IGFyZSBpbmNsdWRlZCBpbiBfZGljdGlvbmFyeV8sIGl0IGdvZXMgYmFjayB0aHJvdWdoIHRoYXQgcmFuZ2UgYW5kCisgKiBkZXJpdmVzIGFkZGl0aW9uYWwgYnJlYWsgcG9zaXRpb25zIChpZiBwb3NzaWJsZSkgdXNpbmcgdGhlIGRpY3Rpb25hcnkuCisgKgorICogRGljdGlvbmFyeUJhc2VkQnJlYWtJdGVyYXRvciBpcyBhbHNvIGNvbnN0cnVjdGVkIHdpdGggdGhlIGZpbGVuYW1lIG9mIGEgZGljdGlvbmFyeQorICogZmlsZS4gIEl0IHVzZXMgQ2xhc3MuZ2V0UmVzb3VyY2UoKSB0byBsb2NhdGUgdGhlIGRpY3Rpb25hcnkgZmlsZS4gIFRoZQorICogZGljdGlvbmFyeSBmaWxlIGlzIGluIGEgc2VyaWFsaXplZCBiaW5hcnkgZm9ybWF0LiAgV2UgaGF2ZSBhIHZlcnkgcHJpbWl0aXZlIChhbmQKKyAqIHNsb3cpIEJ1aWxkRGljdGlvbmFyeUZpbGUgdXRpbGl0eSBmb3IgY3JlYXRpbmcgZGljdGlvbmFyeSBmaWxlcywgYnV0IGFyZW4ndAorICogY3VycmVudGx5IG1ha2luZyBpdCBwdWJsaWMuICBDb250YWN0IHVzIGZvciBoZWxwLgorICoKKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitwdWJsaWMgY2xhc3MgRGljdGlvbmFyeUJhc2VkQnJlYWtJdGVyYXRvciBleHRlbmRzIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IgeworCisgICAgLyoqCisgICAgICogYSBsaXN0IG9mIGtub3duIHdvcmRzIHRoYXQgaXMgdXNlZCB0byBkaXZpZGUgdXAgY29udGlndW91cyByYW5nZXMgb2YgbGV0dGVycywKKyAgICAgKiBzdG9yZWQgaW4gYSBjb21wcmVzc2VkLCBpbmRleGVkLCBmb3JtYXQgdGhhdCBvZmZlcnMgZmFzdCBhY2Nlc3MKKyAgICAgKi8KKyAgICBwcml2YXRlIEJyZWFrRGljdGlvbmFyeSBkaWN0aW9uYXJ5OworCisgICAgLyoqCisgICAgICogYSBsaXN0IG9mIGZsYWdzIGluZGljYXRpbmcgd2hpY2ggY2hhcmFjdGVyIGNhdGVnb3JpZXMgYXJlIGNvbnRhaW5lZCBpbgorICAgICAqIHRoZSBkaWN0aW9uYXJ5IGZpbGUgKHRoaXMgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hpY2ggcmFuZ2VzIG9mIGNoYXJhY3RlcnMKKyAgICAgKiB0byBhcHBseSB0aGUgZGljdGlvbmFyeSB0bykKKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW5bXSBjYXRlZ29yeUZsYWdzOworCisgICAgLyoqCisgICAgICogYSB0ZW1wb3JhcnkgaGlkaW5nIHBsYWNlIGZvciB0aGUgbnVtYmVyIG9mIGRpY3Rpb25hcnkgY2hhcmFjdGVycyBpbiB0aGUKKyAgICAgKiBsYXN0IHJhbmdlIHBhc3NlZCBvdmVyIGJ5IG5leHQoKQorICAgICAqLworICAgIHByaXZhdGUgaW50IGRpY3Rpb25hcnlDaGFyQ291bnQ7CisKKyAgICAvKioKKyAgICAgKiB3aGVuIGEgcmFuZ2Ugb2YgY2hhcmFjdGVycyBpcyBkaXZpZGVkIHVwIHVzaW5nIHRoZSBkaWN0aW9uYXJ5LCB0aGUgYnJlYWsKKyAgICAgKiBwb3NpdGlvbnMgdGhhdCBhcmUgZGlzY292ZXJlZCBhcmUgc3RvcmVkIGhlcmUsIHByZXZlbnRpbmcgdXMgZnJvbSBoYXZpbmcKKyAgICAgKiB0byB1c2UgZWl0aGVyIHRoZSBkaWN0aW9uYXJ5IG9yIHRoZSBzdGF0ZSB0YWJsZSBhZ2FpbiB1bnRpbCB0aGUgaXRlcmF0b3IKKyAgICAgKiBsZWF2ZXMgdGhpcyByYW5nZSBvZiB0ZXh0CisgICAgICovCisgICAgcHJpdmF0ZSBpbnRbXSBjYWNoZWRCcmVha1Bvc2l0aW9uczsKKworICAgIC8qKgorICAgICAqIGlmIGNhY2hlZEJyZWFrUG9zaXRpb25zIGlzIG5vdCBudWxsLCB0aGlzIGluZGljYXRlcyB3aGljaCBpdGVtIGluIHRoZQorICAgICAqIGNhY2hlIHRoZSBjdXJyZW50IGl0ZXJhdGlvbiBwb3NpdGlvbiByZWZlcnMgdG8KKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBwb3NpdGlvbkluQ2FjaGU7CisKKyAgICAvKioKKyAgICAgKiBTcGVjaWFsIHZhcmlhYmxlIG5hbWUgZm9yIGNoYXJhY3RlcnMgaW4gd29yZHMgaW4gZGljdGlvbmFyeQorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBESUNUSU9OQVJZX1ZBUiA9ICJfZGljdGlvbmFyeV8iOworCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIERpY3Rpb25hcnlCYXNlZEJyZWFrSXRlcmF0b3IuCisgICAgICogQHBhcmFtIGRlc2NyaXB0aW9uIFNhbWUgYXMgdGhlIGRlc2NyaXB0aW9uIHBhcmFtZXRlciBvbiBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yLAorICAgICAqIGV4Y2VwdCBmb3IgdGhlIHNwZWNpYWwgbWVhbmluZyBvZiBESUNUSU9OQVJZX1ZBUi4gIFRoaXMgcGFyYW1ldGVyIGlzIGp1c3QKKyAgICAgKiBwYXNzZWQgdGhyb3VnaCB0byBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yJ3MgY29uc3RydWN0b3IuCisgICAgICogQHBhcmFtIGRpY3Rpb25hcnlGaWxlbmFtZSBUaGUgZmlsZW5hbWUgb2YgdGhlIGRpY3Rpb25hcnkgZmlsZSB0byB1c2UKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgRGljdGlvbmFyeUJhc2VkQnJlYWtJdGVyYXRvcihTdHJpbmcgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXRTdHJlYW0gZGljdGlvbmFyeVN0cmVhbSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgc3VwZXIoZGVzY3JpcHRpb24pOworICAgICAgICBkaWN0aW9uYXJ5ID0gbmV3IEJyZWFrRGljdGlvbmFyeShkaWN0aW9uYXJ5U3RyZWFtKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgQnVpbGRlciB0aGF0IGlzIGN1c3RvbWl6ZWQgdG8gYnVpbGQgYSBEaWN0aW9uYXJ5QmFzZWRCcmVha0l0ZXJhdG9yLgorICAgICAqIFRoaXMgaXMgdGhlIHNhbWUgYXMgUnVsZUJhc2VkQnJlYWtJdGVyYXRvci5CdWlsZGVyLCBleGNlcHQgZm9yIHRoZSBleHRyYSBjb2RlCisgICAgICogdG8gaGFuZGxlIHRoZSBESUNUSU9OQVJZX1ZBUiB0YWcuCisgICAgICogQGludGVybmFsCisgICAgICovCisgICAgcHJvdGVjdGVkIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IuQnVpbGRlciBtYWtlQnVpbGRlcigpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBCdWlsZGVyKCk7CisgICAgfQorCisvKiogQGludGVybmFsICovCitwdWJsaWMgdm9pZCB3cml0ZVRhYmxlc1RvRmlsZShGaWxlT3V0cHV0U3RyZWFtIGZpbGUsIGJvb2xlYW4gbGl0dGxlRW5kaWFuKSB0aHJvd3MgSU9FeGNlcHRpb24geworc3VwZXIud3JpdGVUYWJsZXNUb0ZpbGUoZmlsZSwgbGl0dGxlRW5kaWFuKTsKKworRGF0YU91dHB1dFN0cmVhbSBvdXQgPSBuZXcgRGF0YU91dHB1dFN0cmVhbShmaWxlKTsKKworLy8gLS0tIHdyaXRlIGluZGV4IHRvIGZpZWxkcyAodGhlcmUncyBvbmx5IG9uZSBlbnRyeSwgYnV0IHRoaXMgYWxsb3dzIHN1YmNsYXNzaW5nIG9mIHRoaXMgY2xhc3MpCit3cml0ZVN3YXBwZWRJbnQoKHNob3J0KTgsIG91dCwgbGl0dGxlRW5kaWFuKTsKK3dyaXRlU3dhcHBlZEludCgoc2hvcnQpKGNhdGVnb3J5RmxhZ3MubGVuZ3RoICsgMyAmIDB4MGYpLCBvdXQsIGxpdHRsZUVuZGlhbik7CisKK2ZvciAoaW50IGkgPSAwOyBpIDwgY2F0ZWdvcnlGbGFncy5sZW5ndGg7IGkrKykKKyAgICBvdXQud3JpdGVCb29sZWFuKGNhdGVnb3J5RmxhZ3NbaV0pOworc3dpdGNoIChjYXRlZ29yeUZsYWdzLmxlbmd0aCAlIDQpIHsKKyAgICBjYXNlIDE6IG91dC53cml0ZSgwKTsKKyAgICBjYXNlIDI6IG91dC53cml0ZSgwKTsKKyAgICBjYXNlIDM6IG91dC53cml0ZSgwKTsKKyAgICBkZWZhdWx0OiBicmVhazsKK30KK30KKworICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRUZXh0KENoYXJhY3Rlckl0ZXJhdG9yIG5ld1RleHQpIHsKKyAgICAgICAgc3VwZXIuc2V0VGV4dChuZXdUZXh0KTsKKyAgICAgICAgY2FjaGVkQnJlYWtQb3NpdGlvbnMgPSBudWxsOworICAgICAgICBkaWN0aW9uYXJ5Q2hhckNvdW50ID0gMDsKKyAgICAgICAgcG9zaXRpb25JbkNhY2hlID0gMDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBjdXJyZW50IGl0ZXJhdGlvbiBwb3NpdGlvbiB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSB0ZXh0LgorICAgICAqIChpLmUuLCB0aGUgQ2hhcmFjdGVySXRlcmF0b3IncyBzdGFydGluZyBvZmZzZXQpLgorICAgICAqIEByZXR1cm4gVGhlIG9mZnNldCBvZiB0aGUgYmVnaW5uaW5nIG9mIHRoZSB0ZXh0LgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBpbnQgZmlyc3QoKSB7CisgICAgICAgIGNhY2hlZEJyZWFrUG9zaXRpb25zID0gbnVsbDsKKyAgICAgICAgZGljdGlvbmFyeUNoYXJDb3VudCA9IDA7CisgICAgICAgIHBvc2l0aW9uSW5DYWNoZSA9IDA7CisgICAgICAgIHJldHVybiBzdXBlci5maXJzdCgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIGN1cnJlbnQgaXRlcmF0aW9uIHBvc2l0aW9uIHRvIHRoZSBlbmQgb2YgdGhlIHRleHQuCisgICAgICogKGkuZS4sIHRoZSBDaGFyYWN0ZXJJdGVyYXRvcidzIGVuZGluZyBvZmZzZXQpLgorICAgICAqIEByZXR1cm4gVGhlIHRleHQncyBwYXN0LXRoZS1lbmQgb2Zmc2V0LgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBpbnQgbGFzdCgpIHsKKyAgICAgICAgY2FjaGVkQnJlYWtQb3NpdGlvbnMgPSBudWxsOworICAgICAgICBkaWN0aW9uYXJ5Q2hhckNvdW50ID0gMDsKKyAgICAgICAgcG9zaXRpb25JbkNhY2hlID0gMDsKKyAgICAgICAgcmV0dXJuIHN1cGVyLmxhc3QoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBZHZhbmNlcyB0aGUgaXRlcmF0b3Igb25lIHN0ZXAgYmFja3dhcmRzLgorICAgICAqIEByZXR1cm4gVGhlIHBvc2l0aW9uIG9mIHRoZSBsYXN0IGJvdW5kYXJ5IHBvc2l0aW9uIGJlZm9yZSB0aGUKKyAgICAgKiBjdXJyZW50IGl0ZXJhdGlvbiBwb3NpdGlvbgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBpbnQgcHJldmlvdXMoKSB7CisgICAgICAgIENoYXJhY3Rlckl0ZXJhdG9yIHRleHQgPSBnZXRUZXh0KCk7CisKKyAgICAgICAgLy8gaWYgd2UgaGF2ZSBjYWNoZWQgYnJlYWsgcG9zaXRpb25zIGFuZCB3ZSdyZSBzdGlsbCBpbiB0aGUgcmFuZ2UKKyAgICAgICAgLy8gY292ZXJlZCBieSB0aGVtLCBqdXN0IG1vdmUgb25lIHN0ZXAgYmFja3dhcmQgaW4gdGhlIGNhY2hlCisgICAgICAgIGlmIChjYWNoZWRCcmVha1Bvc2l0aW9ucyAhPSBudWxsICYmIHBvc2l0aW9uSW5DYWNoZSA+IDApIHsKKyAgICAgICAgICAgIC0tcG9zaXRpb25JbkNhY2hlOworICAgICAgICAgICAgdGV4dC5zZXRJbmRleChjYWNoZWRCcmVha1Bvc2l0aW9uc1twb3NpdGlvbkluQ2FjaGVdKTsKKyAgICAgICAgICAgIHJldHVybiBjYWNoZWRCcmVha1Bvc2l0aW9uc1twb3NpdGlvbkluQ2FjaGVdOworICAgICAgICB9CisKKyAgICAgICAgLy8gb3RoZXJ3aXNlLCBkdW1wIHRoZSBjYWNoZSBhbmQgdXNlIHRoZSBpbmhlcml0ZWQgcHJldmlvdXMoKSBtZXRob2QgdG8gbW92ZQorICAgICAgICAvLyBiYWNrd2FyZC4gIFRoaXMgbWF5IGZpbGwgdXAgdGhlIGNhY2hlIHdpdGggbmV3IGJyZWFrIHBvc2l0aW9ucywgaW4gd2hpY2gKKyAgICAgICAgLy8gY2FzZSB3ZSBoYXZlIHRvIG1hcmsgb3VyIHBvc2l0aW9uIGluIHRoZSBjYWNoZQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNhY2hlZEJyZWFrUG9zaXRpb25zID0gbnVsbDsKKyAgICAgICAgICAgIGludCByZXN1bHQgPSBzdXBlci5wcmV2aW91cygpOworICAgICAgICAgICAgaWYgKGNhY2hlZEJyZWFrUG9zaXRpb25zICE9IG51bGwpCisgICAgICAgICAgICAgICAgcG9zaXRpb25JbkNhY2hlID0gY2FjaGVkQnJlYWtQb3NpdGlvbnMubGVuZ3RoIC0gMjsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBjdXJyZW50IGl0ZXJhdGlvbiBwb3NpdGlvbiB0byB0aGUgbGFzdCBib3VuZGFyeSBwb3NpdGlvbgorICAgICAqIGJlZm9yZSB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLgorICAgICAqIEBwYXJhbSBvZmZzZXQgVGhlIHBvc2l0aW9uIHRvIGJlZ2luIHNlYXJjaGluZyBmcm9tCisgICAgICogQHJldHVybiBUaGUgcG9zaXRpb24gb2YgdGhlIGxhc3QgYm91bmRhcnkgYmVmb3JlICJvZmZzZXQiCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGludCBwcmVjZWRpbmcoaW50IG9mZnNldCkgeworICAgICAgICBDaGFyYWN0ZXJJdGVyYXRvciB0ZXh0ID0gZ2V0VGV4dCgpOworICAgICAgICBjaGVja09mZnNldChvZmZzZXQsIHRleHQpOworCisgICAgICAgIC8vIGlmIHdlIGhhdmUgbm8gY2FjaGVkIGJyZWFrIHBvc2l0aW9ucywgb3IgIm9mZnNldCIgaXMgb3V0c2lkZSB0aGUKKyAgICAgICAgLy8gcmFuZ2UgY292ZXJlZCBieSB0aGUgY2FjaGUsIHdlIGNhbiBqdXN0IGNhbGwgdGhlIGluaGVyaXRlZCByb3V0aW5lCisgICAgICAgIC8vICh3aGljaCB3aWxsIGV2ZW50dWFsbHkgY2FsbCBvdGhlciByb3V0aW5lcyBpbiB0aGlzIGNsYXNzIHRoYXQgbWF5CisgICAgICAgIC8vIHJlZnJlc2ggdGhlIGNhY2hlKQorICAgICAgICBpZiAoY2FjaGVkQnJlYWtQb3NpdGlvbnMgPT0gbnVsbCB8fCBvZmZzZXQgPD0gY2FjaGVkQnJlYWtQb3NpdGlvbnNbMF0gfHwKKyAgICAgICAgICAgICAgICBvZmZzZXQgPiBjYWNoZWRCcmVha1Bvc2l0aW9uc1tjYWNoZWRCcmVha1Bvc2l0aW9ucy5sZW5ndGggLSAxXSkgeworICAgICAgICAgICAgY2FjaGVkQnJlYWtQb3NpdGlvbnMgPSBudWxsOworICAgICAgICAgICAgcmV0dXJuIHN1cGVyLnByZWNlZGluZyhvZmZzZXQpOworICAgICAgICB9CisKKyAgICAgICAgLy8gb24gdGhlIG90aGVyIGhhbmQsIGlmICJvZmZzZXQiIGlzIHdpdGhpbiB0aGUgcmFuZ2UgY292ZXJlZCBieSB0aGUgY2FjaGUsCisgICAgICAgIC8vIHRoZW4gYWxsIHdlIGhhdmUgdG8gZG8gaXMgc2VhcmNoIHRoZSBjYWNoZSBmb3IgdGhlIGxhc3QgYnJlYWsgcG9zaXRpb24KKyAgICAgICAgLy8gYmVmb3JlICJvZmZzZXQiCisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcG9zaXRpb25JbkNhY2hlID0gMDsKKyAgICAgICAgICAgIHdoaWxlIChwb3NpdGlvbkluQ2FjaGUgPCBjYWNoZWRCcmVha1Bvc2l0aW9ucy5sZW5ndGgKKyAgICAgICAgICAgICAgICAgICAmJiBvZmZzZXQgPiBjYWNoZWRCcmVha1Bvc2l0aW9uc1twb3NpdGlvbkluQ2FjaGVdKQorICAgICAgICAgICAgICAgICsrcG9zaXRpb25JbkNhY2hlOworICAgICAgICAgICAgLS1wb3NpdGlvbkluQ2FjaGU7CisgICAgICAgICAgICB0ZXh0LnNldEluZGV4KGNhY2hlZEJyZWFrUG9zaXRpb25zW3Bvc2l0aW9uSW5DYWNoZV0pOworICAgICAgICAgICAgcmV0dXJuIHRleHQuZ2V0SW5kZXgoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIGN1cnJlbnQgaXRlcmF0aW9uIHBvc2l0aW9uIHRvIHRoZSBmaXJzdCBib3VuZGFyeSBwb3NpdGlvbiBhZnRlcgorICAgICAqIHRoZSBzcGVjaWZpZWQgcG9zaXRpb24uCisgICAgICogQHBhcmFtIG9mZnNldCBUaGUgcG9zaXRpb24gdG8gYmVnaW4gc2VhcmNoaW5nIGZvcndhcmQgZnJvbQorICAgICAqIEByZXR1cm4gVGhlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCBib3VuZGFyeSBhZnRlciAib2Zmc2V0IgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBpbnQgZm9sbG93aW5nKGludCBvZmZzZXQpIHsKKyAgICAgICAgQ2hhcmFjdGVySXRlcmF0b3IgdGV4dCA9IGdldFRleHQoKTsKKyAgICAgICAgY2hlY2tPZmZzZXQob2Zmc2V0LCB0ZXh0KTsKKworICAgICAgICAvLyBpZiB3ZSBoYXZlIG5vIGNhY2hlZCBicmVhayBwb3NpdGlvbnMsIG9yIGlmICJvZmZzZXQiIGlzIG91dHNpZGUgdGhlCisgICAgICAgIC8vIHJhbmdlIGNvdmVyZWQgYnkgdGhlIGNhY2hlLCB0aGVuIGR1bXAgdGhlIGNhY2hlIGFuZCBjYWxsIG91cgorICAgICAgICAvLyBpbmhlcml0ZWQgZm9sbG93aW5nKCkgbWV0aG9kLiAgVGhpcyB3aWxsIGNhbGwgb3RoZXIgbWV0aG9kcyBpbiB0aGlzCisgICAgICAgIC8vIGNsYXNzIHRoYXQgbWF5IHJlZnJlc2ggdGhlIGNhY2hlLgorICAgICAgICBpZiAoY2FjaGVkQnJlYWtQb3NpdGlvbnMgPT0gbnVsbCB8fCBvZmZzZXQgPCBjYWNoZWRCcmVha1Bvc2l0aW9uc1swXSB8fAorICAgICAgICAgICAgICAgIG9mZnNldCA+PSBjYWNoZWRCcmVha1Bvc2l0aW9uc1tjYWNoZWRCcmVha1Bvc2l0aW9ucy5sZW5ndGggLSAxXSkgeworICAgICAgICAgICAgY2FjaGVkQnJlYWtQb3NpdGlvbnMgPSBudWxsOworICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmZvbGxvd2luZyhvZmZzZXQpOworICAgICAgICB9CisKKyAgICAgICAgLy8gb24gdGhlIG90aGVyIGhhbmQsIGlmICJvZmZzZXQiIGlzIHdpdGhpbiB0aGUgcmFuZ2UgY292ZXJlZCBieSB0aGUKKyAgICAgICAgLy8gY2FjaGUsIHRoZW4ganVzdCBzZWFyY2ggdGhlIGNhY2hlIGZvciB0aGUgZmlyc3QgYnJlYWsgcG9zaXRpb24KKyAgICAgICAgLy8gYWZ0ZXIgIm9mZnNldCIKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBwb3NpdGlvbkluQ2FjaGUgPSAwOworICAgICAgICAgICAgd2hpbGUgKHBvc2l0aW9uSW5DYWNoZSA8IGNhY2hlZEJyZWFrUG9zaXRpb25zLmxlbmd0aAorICAgICAgICAgICAgICAgICAgICYmIG9mZnNldCA+PSBjYWNoZWRCcmVha1Bvc2l0aW9uc1twb3NpdGlvbkluQ2FjaGVdKQorICAgICAgICAgICAgICAgICsrcG9zaXRpb25JbkNhY2hlOworICAgICAgICAgICAgdGV4dC5zZXRJbmRleChjYWNoZWRCcmVha1Bvc2l0aW9uc1twb3NpdGlvbkluQ2FjaGVdKTsKKyAgICAgICAgICAgIHJldHVybiB0ZXh0LmdldEluZGV4KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaGlzIGlzIHRoZSBpbXBsZW1lbnRhdGlvbiBmdW5jdGlvbiBmb3IgbmV4dCgpLgorICAgICAqIEBpbnRlcm5hbAorICAgICAqLworICAgIHByb3RlY3RlZCBpbnQgaGFuZGxlTmV4dCgpIHsKKyAgICAgICAgQ2hhcmFjdGVySXRlcmF0b3IgdGV4dCA9IGdldFRleHQoKTsKKworICAgICAgICAvLyBpZiB0aGVyZSBhcmUgbm8gY2FjaGVkIGJyZWFrIHBvc2l0aW9ucywgb3IgaWYgd2UndmUganVzdCBtb3ZlZAorICAgICAgICAvLyBvZmYgdGhlIGVuZCBvZiB0aGUgcmFuZ2UgY292ZXJlZCBieSB0aGUgY2FjaGUsIHdlIGhhdmUgdG8gZHVtcAorICAgICAgICAvLyBhbmQgcG9zc2libHkgcmVnZW5lcmF0ZSB0aGUgY2FjaGUKKyAgICAgICAgaWYgKGNhY2hlZEJyZWFrUG9zaXRpb25zID09IG51bGwgfHwgcG9zaXRpb25JbkNhY2hlID09IGNhY2hlZEJyZWFrUG9zaXRpb25zLmxlbmd0aCAtIDEpIHsKKworICAgICAgICAgICAgLy8gc3RhcnQgYnkgdXNpbmcgdGhlIGluaGVyaXRlZCBoYW5kbGVOZXh0KCkgdG8gZmluZCBhIHRlbnRhdGl2ZSByZXR1cm4KKyAgICAgICAgICAgIC8vIHZhbHVlLiAgIGRpY3Rpb25hcnlDaGFyQ291bnQgdGVsbHMgdXMgaG93IG1hbnkgZGljdGlvbmFyeSBjaGFyYWN0ZXJzCisgICAgICAgICAgICAvLyB3ZSBwYXNzZWQgb3ZlciBvbiBvdXIgd2F5IHRvIHRoZSB0ZW50YXRpdmUgcmV0dXJuIHZhbHVlCisgICAgICAgICAgICBpbnQgc3RhcnRQb3MgPSB0ZXh0LmdldEluZGV4KCk7CisgICAgICAgICAgICBkaWN0aW9uYXJ5Q2hhckNvdW50ID0gMDsKKyAgICAgICAgICAgIGludCByZXN1bHQgPSBzdXBlci5oYW5kbGVOZXh0KCk7CisKKyAgICAgICAgICAgIC8vIGlmIHdlIHBhc3NlZCBvdmVyIG1vcmUgdGhhbiBvbmUgZGljdGlvbmFyeSBjaGFyYWN0ZXIsIHRoZW4gd2UgdXNlCisgICAgICAgICAgICAvLyBkaXZpZGVVcERpY3Rpb25hcnlSYW5nZSgpIHRvIHJlZ2VuZXJhdGUgdGhlIGNhY2hlZCBicmVhayBwb3NpdGlvbnMKKyAgICAgICAgICAgIC8vIGZvciB0aGUgbmV3IHJhbmdlCisgICAgICAgICAgICBpZiAoZGljdGlvbmFyeUNoYXJDb3VudCA+IDEgJiYgcmVzdWx0IC0gc3RhcnRQb3MgPiAxKSB7CisgICAgICAgICAgICAgICAgZGl2aWRlVXBEaWN0aW9uYXJ5UmFuZ2Uoc3RhcnRQb3MsIHJlc3VsdCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIG90aGVyd2lzZSwgdGhlIHZhbHVlIHdlIGdvdCBiYWNrIGZyb20gdGhlIGluaGVyaXRlZCBmdWN0aW9uCisgICAgICAgICAgICAvLyBpcyBvdXIgcmV0dXJuIHZhbHVlLCBhbmQgd2UgY2FuIGR1bXAgdGhlIGNhY2hlCisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRCcmVha1Bvc2l0aW9ucyA9IG51bGw7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIGlmIHRoZSBjYWNoZSBvZiBicmVhayBwb3NpdGlvbnMgaGFzIGJlZW4gcmVnZW5lcmF0ZWQgKG9yIGV4aXN0ZWQgYWxsCisgICAgICAgIC8vIGFsb25nKSwgdGhlbiBqdXN0IGFkdmFuY2UgdG8gdGhlIG5leHQgYnJlYWsgcG9zaXRpb24gaW4gdGhlIGNhY2hlCisgICAgICAgIC8vIGFuZCByZXR1cm4gaXQKKyAgICAgICAgaWYgKGNhY2hlZEJyZWFrUG9zaXRpb25zICE9IG51bGwpIHsKKyAgICAgICAgICAgICsrcG9zaXRpb25JbkNhY2hlOworICAgICAgICAgICAgdGV4dC5zZXRJbmRleChjYWNoZWRCcmVha1Bvc2l0aW9uc1twb3NpdGlvbkluQ2FjaGVdKTsKKyAgICAgICAgICAgIHJldHVybiBjYWNoZWRCcmVha1Bvc2l0aW9uc1twb3NpdGlvbkluQ2FjaGVdOworICAgICAgICB9CisgICAgICAgIHJldHVybiAtOTk5OTsgICAvLyBTSE9VTEQgTkVWRVIgR0VUIEhFUkUhCisgICAgfQorCisgICAgLyoqCisgICAgICogTG9va3MgdXAgYSBjaGFyYWN0ZXIgY2F0ZWdvcnkgZm9yIGEgY2hhcmFjdGVyLgorICAgICAqIEBpbnRlcm5hbAorICAgICAqLworICAgIHByb3RlY3RlZCBpbnQgbG9va3VwQ2F0ZWdvcnkoY2hhciBjKSB7CisgICAgICAgIC8vIHRoaXMgb3ZlcnJpZGUgb2YgbG9va3VwQ2F0ZWdvcnkoKSBleGlzdHMgb25seSB0byBrZWVwIHRyYWNrIG9mIHdoZXRoZXIgd2UndmUKKyAgICAgICAgLy8gcGFzc2VkIG92ZXIgYW55IGRpY3Rpb25hcnkgY2hhcmFjdGVycy4gIEl0IGNhbGxzIHRoZSBpbmhlcml0ZWQgbG9va3VwQ2F0ZWdvcnkoKQorICAgICAgICAvLyB0byBkbyB0aGUgcmVhbCB3b3JrLCBhbmQgdGhlbiBjaGVja3Mgd2hldGhlciBpdHMgcmV0dXJuIHZhbHVlIGlzIG9uZSBvZiB0aGUKKyAgICAgICAgLy8gY2F0ZWdvcmllcyByZXByZXNlbnRlZCBpbiB0aGUgZGljdGlvbmFyeS4gIElmIGl0IGlzLCBidW1wIHRoZSBkaWN0aW9uYXJ5LQorICAgICAgICAvLyBjaGFyYWN0ZXIgY291bnQuCisgICAgICAgIGludCByZXN1bHQgPSBzdXBlci5sb29rdXBDYXRlZ29yeShjKTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yLklHTk9SRSAmJiBjYXRlZ29yeUZsYWdzW3Jlc3VsdF0pIHsKKyAgICAgICAgICAgICsrZGljdGlvbmFyeUNoYXJDb3VudDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8qKgorICAgICAqIFRoaXMgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgYWN0dWFsbHkgaW1wbGVtZW50cyB0aGUgZGljdGlvbmFyeS1iYXNlZAorICAgICAqIGFsZ29yaXRobS4gIEdpdmVuIHRoZSBlbmRwb2ludHMgb2YgYSByYW5nZSBvZiB0ZXh0LCBpdCB1c2VzIHRoZQorICAgICAqIGRpY3Rpb25hcnkgdG8gZGV0ZXJtaW5lIHRoZSBwb3NpdGlvbnMgb2YgYW55IGJvdW5kYXJpZXMgaW4gdGhpcworICAgICAqIHJhbmdlLiAgSXQgc3RvcmVzIGFsbCB0aGUgYm91bmRhcnkgcG9zaXRpb25zIGl0IGRpc2NvdmVycyBpbgorICAgICAqIGNhY2hlZEJyZWFrUG9zaXRpb25zIHNvIHRoYXQgd2Ugb25seSBoYXZlIHRvIGRvIHRoaXMgd29yayBvbmNlCisgICAgICogZm9yIGVhY2ggdGltZSB3ZSBlbnRlciB0aGUgcmFuZ2UuCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIGRpdmlkZVVwRGljdGlvbmFyeVJhbmdlKGludCBzdGFydFBvcywgaW50IGVuZFBvcykgeworICAgICAgICBDaGFyYWN0ZXJJdGVyYXRvciB0ZXh0ID0gZ2V0VGV4dCgpOworCisgICAgICAgIC8vIHRoZSByYW5nZSB3ZSdyZSBkaXZpZGluZyBtYXkgYmVnaW4gb3IgZW5kIHdpdGggbm9uLWRpY3Rpb25hcnkgY2hhcmFjdGVycworICAgICAgICAvLyAoaS5lLiwgZm9yIGxpbmUgYnJlYWtpbmcsIHdlIG1heSBoYXZlIGxlYWRpbmcgb3IgdHJhaWxpbmcgcHVuY3R1YXRpb24KKyAgICAgICAgLy8gdGhhdCBuZWVkcyB0byBiZSBrZXB0IHdpdGggdGhlIHdvcmQpLiAgU2VlayBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlCisgICAgICAgIC8vIHJhbmdlIHRvIHRoZSBmaXJzdCBkaWN0aW9uYXJ5IGNoYXJhY3RlcgorICAgICAgICB0ZXh0LnNldEluZGV4KHN0YXJ0UG9zKTsKKyAgICAgICAgY2hhciBjID0gdGV4dC5jdXJyZW50KCk7CisgICAgICAgIGludCBjYXRlZ29yeSA9IGxvb2t1cENhdGVnb3J5KGMpOworICAgICAgICB3aGlsZSAoY2F0ZWdvcnkgPT0gSUdOT1JFIHx8ICFjYXRlZ29yeUZsYWdzW2NhdGVnb3J5XSkgeworICAgICAgICAgICAgYyA9IHRleHQubmV4dCgpOworICAgICAgICAgICAgY2F0ZWdvcnkgPSBsb29rdXBDYXRlZ29yeShjKTsKKyAgICAgICAgfQorLy9TeXN0ZW0ub3V0LnByaW50bG4oIlxuRGl2aWRpbmcgdXAgcmFuZ2UgZnJvbSAiICsgKHRleHQuZ2V0SW5kZXgoKSArIDEpICsgIiB0byAiICsgZW5kUG9zKTsKKworICAgICAgICAvLyBpbml0aWFsaXplLiAgV2UgbWFpbnRhaW4gdHdvIHN0YWNrczogY3VycmVudEJyZWFrUG9zaXRpb25zIGNvbnRhaW5zCisgICAgICAgIC8vIHRoZSBsaXN0IG9mIGJyZWFrIHBvc2l0aW9ucyB0aGF0IHdpbGwgYmUgcmV0dXJuZWQgaWYgd2Ugc3VjY2Vzc2Z1bGx5CisgICAgICAgIC8vIGZpbmlzaCB0cmF2ZXJzaW5nIHRoZSB3aG9sZSByYW5nZSBub3cuICBwb3NzaWJsZUJyZWFrUG9zaXRpb25zIGxpc3RzCisgICAgICAgIC8vIGFsbCBvdGhlciBwb3NzaWJsZSB3b3JkIGVuZHMgd2UndmUgcGFzc2VkIGFsb25nIHRoZSB3YXkuICAoV2hlbmV2ZXIKKyAgICAgICAgLy8gd2UgcmVhY2ggYW4gZXJyb3IgW2Egc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyB0aGF0IGNhbid0IGJlZ2luIGFueSB3b3JkCisgICAgICAgIC8vIGluIHRoZSBkaWN0aW9uYXJ5XSwgd2UgYmFjayB1cCwgcG9zc2libHkgZGVsZXRlIHNvbWUgYnJlYWtzIGZyb20KKyAgICAgICAgLy8gY3VycmVudEJyZWFrUG9zaXRpb25zLCBtb3ZlIGEgYnJlYWsgZnJvbSBwb3NzaWJsZUJyZWFrUG9zaXRpb25zCisgICAgICAgIC8vIHRvIGN1cnJlbnRCcmVha1Bvc2l0aW9ucywgYW5kIHN0YXJ0IG92ZXIgZnJvbSB0aGVyZS4gIFRoaXMgcHJvY2VzcworICAgICAgICAvLyBjb250aW51ZXMgaW4gdGhpcyB3YXkgdW50aWwgd2UgZWl0aGVyIHN1Y2Nlc3NmdWxseSBtYWtlIGl0IGFsbCB0aGUgd2F5CisgICAgICAgIC8vIGFjcm9zcyB0aGUgcmFuZ2UsIG9yIGV4aGF1c3QgYWxsIG9mIG91ciBjb21iaW5hdGlvbnMgb2YgYnJlYWsKKyAgICAgICAgLy8gcG9zaXRpb25zLikKKyAgICAgICAgU3RhY2sgY3VycmVudEJyZWFrUG9zaXRpb25zID0gbmV3IFN0YWNrKCk7CisgICAgICAgIFN0YWNrIHBvc3NpYmxlQnJlYWtQb3NpdGlvbnMgPSBuZXcgU3RhY2soKTsKKyAgICAgICAgVmVjdG9yIHdyb25nQnJlYWtQb3NpdGlvbnMgPSBuZXcgVmVjdG9yKCk7CisKKyAgICAgICAgLy8gdGhlIGRpY3Rpb25hcnkgaXMgaW1wbGVtZW50ZWQgYXMgYSB0cmllLCB3aGljaCBpcyB0cmVhdGVkIGFzIGEgc3RhdGUKKyAgICAgICAgLy8gbWFjaGluZS4gIC0xIHJlcHJlc2VudHMgdGhlIGVuZCBvZiBhIGxlZ2FsIHdvcmQuICBFdmVyeSB3b3JkIGluIHRoZQorICAgICAgICAvLyBkaWN0aW9uYXJ5IGlzIHJlcHJlc2VudGVkIGJ5IGEgcGF0aCBmcm9tIHRoZSByb290IG5vZGUgdG8gLTEuICBBIHBhdGgKKyAgICAgICAgLy8gdGhhdCBlbmRzIGluIHN0YXRlIDAgaXMgYW4gaWxsZWdhbCBjb21iaW5hdGlvbiBvZiBjaGFyYWN0ZXJzLgorICAgICAgICBpbnQgc3RhdGUgPSAwOworCisgICAgICAgIC8vIHRoZXNlIHR3byB2YXJpYWJsZXMgYXJlIHVzZWQgZm9yIGVycm9yIGhhbmRsaW5nLiAgV2Uga2VlcCB0cmFjayBvZiB0aGUKKyAgICAgICAgLy8gZmFydGhlc3Qgd2UndmUgZ290dGVuIHRocm91Z2ggdGhlIHJhbmdlIGJlaW5nIGRpdmlkZWQsIGFuZCB0aGUgY29tYmluYXRpb24KKyAgICAgICAgLy8gb2YgYnJlYWtzIHRoYXQgZ290IHVzIHRoYXQgZmFyLiAgSWYgd2UgdXNlIHVwIGFsbCBwb3NzaWJsZSBicmVhaworICAgICAgICAvLyBjb21iaW5hdGlvbnMsIHRoZSB0ZXh0IGNvbnRhaW5zIGFuIGVycm9yIG9yIGEgd29yZCB0aGF0J3Mgbm90IGluIHRoZQorICAgICAgICAvLyBkaWN0aW9uYXJ5LiAgSW4gdGhpcyBjYXNlLCB3ZSAiYmxlc3MiIHRoZSBicmVhayBwb3NpdGlvbnMgdGhhdCBnb3QgdXMgdGhlCisgICAgICAgIC8vIGZhcnRoZXN0IGFzIHJlYWwgYnJlYWsgcG9zaXRpb25zLCBhbmQgdGhlbiBzdGFydCBvdmVyIGZyb20gc2NyYXRjaCB3aXRoCisgICAgICAgIC8vIHRoZSBjaGFyYWN0ZXIgd2hlcmUgdGhlIGVycm9yIG9jY3VycmVkLgorICAgICAgICBpbnQgZmFydGhlc3RFbmRQb2ludCA9IHRleHQuZ2V0SW5kZXgoKTsKKyAgICAgICAgU3RhY2sgYmVzdEJyZWFrUG9zaXRpb25zID0gbnVsbDsKKworICAgICAgICAvLyBpbml0aWFsaXplICh3ZSBhbHdheXMgZXhpdCB0aGUgbG9vcCB3aXRoIGEgYnJlYWsgc3RhdGVtZW50KQorICAgICAgICBjID0gdGV4dC5jdXJyZW50KCk7CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisvL1N5c3RlbS5vdXQucHJpbnQoImMgPSAiICsgSW50ZWdlci50b1N0cmluZyhjLCAxNikgKyAiLCBwb3MgPSAiICsgdGV4dC5nZXRJbmRleCgpKTsKKworICAgICAgICAgICAgLy8gaWYgd2UgY2FuIHRyYW5zaXRpb24gdG8gc3RhdGUgIi0xIiBmcm9tIG91ciBjdXJyZW50IHN0YXRlLCB3ZSdyZQorICAgICAgICAgICAgLy8gb24gdGhlIGxhc3QgY2hhcmFjdGVyIG9mIGEgbGVnYWwgd29yZC4gIFB1c2ggdGhhdCBwb3NpdGlvbiBvbnRvCisgICAgICAgICAgICAvLyB0aGUgcG9zc2libGUtYnJlYWstcG9zaXRpb25zIHN0YWNrCisgICAgICAgICAgICBpZiAoZGljdGlvbmFyeS5hdChzdGF0ZSwgMCkgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICBwb3NzaWJsZUJyZWFrUG9zaXRpb25zLnB1c2gobmV3IEludGVnZXIodGV4dC5nZXRJbmRleCgpKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIGxvb2sgdXAgdGhlIG5ldyBzdGF0ZSB0byB0cmFuc2l0aW9uIHRvIGluIHRoZSBkaWN0aW9uYXJ5CisgICAgICAgICAgICBzdGF0ZSA9IChkaWN0aW9uYXJ5LmF0KHN0YXRlLCBjKSkgJiAweEZGRkY7CisvL1N5c3RlbS5vdXQucHJpbnQoIiwgc3RhdGUgPSAiICsgc3RhdGUpOworCisgICAgICAgICAgICAvLyBpZiB0aGUgY2hhcmFjdGVyIHdlJ3JlIHNpdHRpbmcgb24gY2F1c2VzIHVzIHRvIHRyYW5zaXRpb24gdG8KKyAgICAgICAgICAgIC8vIHRoZSAiZW5kIG9mIHdvcmQiIHN0YXRlLCB0aGVuIGl0IHdhcyBhIG5vbi1kaWN0aW9uYXJ5IGNoYXJhY3RlcgorICAgICAgICAgICAgLy8gYW5kIHdlJ3ZlIHN1Y2Nlc3NmdWxseSB0cmF2ZXJzZWQgdGhlIHdob2xlIHJhbmdlLiAgRHJvcCBvdXQKKyAgICAgICAgICAgIC8vIG9mIHRoZSBsb29wLgorICAgICAgICAgICAgaWYgKHN0YXRlID09IC8qLTEqLyAweEZGRkYpIHsKKyAgICAgICAgICAgICAgICBjdXJyZW50QnJlYWtQb3NpdGlvbnMucHVzaChuZXcgSW50ZWdlcih0ZXh0LmdldEluZGV4KCkpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gaWYgdGhlIGNoYXJhY3RlciB3ZSdyZSBzaXR0aW5nIG9uIGNhdXNlcyB1cyB0byB0cmFuc2l0aW9uIHRvCisgICAgICAgICAgICAvLyB0aGUgZXJyb3Igc3RhdGUsIG9yIGlmIHdlJ3ZlIGdvbmUgb2ZmIHRoZSBlbmQgb2YgdGhlIHJhbmdlCisgICAgICAgICAgICAvLyB3aXRob3V0IHRyYW5zaXRpb25pbmcgdG8gdGhlICJlbmQgb2Ygd29yZCIgc3RhdGUsIHdlJ3ZlIGhpdAorICAgICAgICAgICAgLy8gYW4gZXJyb3IuLi4KKyAgICAgICAgICAgIGVsc2UgaWYgKHN0YXRlID09IDAgfHwgdGV4dC5nZXRJbmRleCgpID49IGVuZFBvcykgeworCisgICAgICAgICAgICAgICAgLy8gaWYgdGhpcyBpcyB0aGUgZmFydGhlc3Qgd2UndmUgZ290dGVuLCB0YWtlIG5vdGUgb2YgaXQgaW4KKyAgICAgICAgICAgICAgICAvLyBjYXNlIHRoZXJlJ3MgYW4gZXJyb3IgaW4gdGhlIHRleHQKKyAgICAgICAgICAgICAgICBpZiAodGV4dC5nZXRJbmRleCgpID4gZmFydGhlc3RFbmRQb2ludCkgeworICAgICAgICAgICAgICAgICAgICBmYXJ0aGVzdEVuZFBvaW50ID0gdGV4dC5nZXRJbmRleCgpOworICAgICAgICAgICAgICAgICAgICBiZXN0QnJlYWtQb3NpdGlvbnMgPSAoU3RhY2spKGN1cnJlbnRCcmVha1Bvc2l0aW9ucy5jbG9uZSgpKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyB3cm9uZ0JyZWFrUG9zaXRpb25zIGlzIGEgbGlzdCBvZiBhbGwgYnJlYWsgcG9zaXRpb25zIHdlJ3ZlIHRyaWVkIHN0YXJ0aW5nCisgICAgICAgICAgICAgICAgLy8gdGhhdCBkaWRuJ3QgYWxsb3cgdXMgdG8gdHJhdmVyc2UgYWxsIHRoZSB3YXkgdGhyb3VnaCB0aGUgdGV4dC4gIEV2ZXJ5IHRpbWUKKyAgICAgICAgICAgICAgICAvLyB3ZSBwb3AgYSBicmVhayBwb3NpdGlvbiBvZmYgb2YgY3VycmVudEJyZWFrUG9zaXRpb25zLCB3ZSBwdXQgaXQgaW50bworICAgICAgICAgICAgICAgIC8vIHdyb25nQnJlYWtQb3NpdGlvbnMgdG8gYXZvaWQgdHJ5aW5nIGl0IGFnYWluIGxhdGVyLiAgSWYgd2UgbWFrZSBpdCB0byB0aGlzCisgICAgICAgICAgICAgICAgLy8gc3BvdCwgd2UncmUgZWl0aGVyIGdvaW5nIHRvIGJhY2sgdXAgdG8gYSBicmVhayBpbiBwb3NzaWJsZUJyZWFrUG9zaXRpb25zCisgICAgICAgICAgICAgICAgLy8gYW5kIHRyeSBzdGFydGluZyBvdmVyIGZyb20gdGhlcmUsIG9yIHdlJ3ZlIGV4aGF1c3RlZCBhbGwgcG9zc2libGUgYnJlYWsKKyAgICAgICAgICAgICAgICAvLyBwb3NpdGlvbnMgYW5kIGFyZSBnb2luZyB0byBkbyB0aGUgZmFsbGJhY2sgcHJvY2VkdXJlLiAgVGhpcyBsb29wIHByZXZlbnRzCisgICAgICAgICAgICAgICAgLy8gdXMgZnJvbSBtZXNzaW5nIHdpdGggYW55dGhpbmcgaW4gcG9zc2libGVCcmVha1Bvc2l0aW9ucyB0aGF0IGRpZG4ndCB3b3JrIGFzCisgICAgICAgICAgICAgICAgLy8gYSBzdGFydGluZyBwb2ludCB0aGUgbGFzdCB0aW1lIHdlIHRyaWVkIGl0ICh0aGlzIGlzIHRvIHByZXZlbnQgYSBidW5jaCBvZgorICAgICAgICAgICAgICAgIC8vIHJlcGV0aXRpdmUgY2hlY2tzIGZyb20gc2xvd2luZyBkb3duIHNvbWUgZXh0cmVtZSBjYXNlcykKKyAgICAgICAgICAgICAgICAvLyB2YXJpYWJsZSBub3QgdXNlZCBJbnRlZ2VyIG5ld1N0YXJ0aW5nU3BvdCA9IG51bGw7CisgICAgICAgICAgICAgICAgd2hpbGUgKCFwb3NzaWJsZUJyZWFrUG9zaXRpb25zLmlzRW1wdHkoKSAmJiB3cm9uZ0JyZWFrUG9zaXRpb25zLmNvbnRhaW5zKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc3NpYmxlQnJlYWtQb3NpdGlvbnMucGVlaygpKSkgeworICAgICAgICAgICAgICAgICAgICBwb3NzaWJsZUJyZWFrUG9zaXRpb25zLnBvcCgpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIGlmIHdlJ3ZlIHVzZWQgdXAgYWxsIHBvc3NpYmxlIGJyZWFrLXBvc2l0aW9uIGNvbWJpbmF0aW9ucywgdGhlcmUncworICAgICAgICAgICAgICAgIC8vIGFuIGVycm9yIG9yIGFuIHVua25vd24gd29yZCBpbiB0aGUgdGV4dC4gIEluIHRoaXMgY2FzZSwgd2Ugc3RhcnQKKyAgICAgICAgICAgICAgICAvLyBvdmVyLCB0cmVhdGluZyB0aGUgZmFydGhlc3QgY2hhcmFjdGVyIHdlJ3ZlIHJlYWNoZWQgYXMgdGhlIGJlZ2lubmluZworICAgICAgICAgICAgICAgIC8vIG9mIHRoZSByYW5nZSwgYW5kICJibGVzc2luZyIgdGhlIGJyZWFrIHBvc2l0aW9ucyB0aGF0IGdvdCB1cyB0aGF0CisgICAgICAgICAgICAgICAgLy8gZmFyIGFzIHJlYWwgYnJlYWsgcG9zaXRpb25zCisgICAgICAgICAgICAgICAgaWYgKHBvc3NpYmxlQnJlYWtQb3NpdGlvbnMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChiZXN0QnJlYWtQb3NpdGlvbnMgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEJyZWFrUG9zaXRpb25zID0gYmVzdEJyZWFrUG9zaXRpb25zOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZhcnRoZXN0RW5kUG9pbnQgPCBlbmRQb3MpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LnNldEluZGV4KGZhcnRoZXN0RW5kUG9pbnQgKyAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChjdXJyZW50QnJlYWtQb3NpdGlvbnMuc2l6ZSgpID09IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChJbnRlZ2VyKShjdXJyZW50QnJlYWtQb3NpdGlvbnMucGVlaygpKSkuaW50VmFsdWUoKSAhPSB0ZXh0LmdldEluZGV4KCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHRleHQuZ2V0SW5kZXgoKSAhPSBzdGFydFBvcykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRCcmVha1Bvc2l0aW9ucy5wdXNoKG5ldyBJbnRlZ2VyKHRleHQuZ2V0SW5kZXgoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC5uZXh0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50QnJlYWtQb3NpdGlvbnMucHVzaChuZXcgSW50ZWdlcih0ZXh0LmdldEluZGV4KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIGlmIHdlIHN0aWxsIGhhdmUgbW9yZSBicmVhayBwb3NpdGlvbnMgd2UgY2FuIHRyeSwgdGhlbiBwcm9tb3RlIHRoZQorICAgICAgICAgICAgICAgIC8vIGxhc3QgYnJlYWsgaW4gcG9zc2libGVCcmVha1Bvc2l0aW9ucyBpbnRvIGN1cnJlbnRCcmVha1Bvc2l0aW9ucywKKyAgICAgICAgICAgICAgICAvLyBhbmQgZ2V0IHJpZCBvZiBhbGwgZW50cmllcyBpbiBjdXJyZW50QnJlYWtQb3NpdGlvbnMgdGhhdCBjb21lIGFmdGVyCisgICAgICAgICAgICAgICAgLy8gaXQuICBUaGVuIGJhY2sgdXAgdG8gdGhhdCBwb3NpdGlvbiBhbmQgc3RhcnQgb3ZlciBmcm9tIHRoZXJlIChpLmUuLAorICAgICAgICAgICAgICAgIC8vIHRyZWF0IHRoYXQgcG9zaXRpb24gYXMgdGhlIGJlZ2lubmluZyBvZiBhIG5ldyB3b3JkKQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBJbnRlZ2VyIHRlbXAgPSAoSW50ZWdlcilwb3NzaWJsZUJyZWFrUG9zaXRpb25zLnBvcCgpOworICAgICAgICAgICAgICAgICAgICBPYmplY3QgdGVtcDIgPSBudWxsOworICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIWN1cnJlbnRCcmVha1Bvc2l0aW9ucy5pc0VtcHR5KCkgJiYgdGVtcC5pbnRWYWx1ZSgpIDwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSW50ZWdlciljdXJyZW50QnJlYWtQb3NpdGlvbnMucGVlaygpKS5pbnRWYWx1ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wMiA9IGN1cnJlbnRCcmVha1Bvc2l0aW9ucy5wb3AoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyb25nQnJlYWtQb3NpdGlvbnMuYWRkRWxlbWVudCh0ZW1wMik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgY3VycmVudEJyZWFrUG9zaXRpb25zLnB1c2godGVtcCk7CisgICAgICAgICAgICAgICAgICAgIHRleHQuc2V0SW5kZXgoKChJbnRlZ2VyKWN1cnJlbnRCcmVha1Bvc2l0aW9ucy5wZWVrKCkpLmludFZhbHVlKCkpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIHJlLXN5bmMgImMiIGZvciB0aGUgbmV4dCBnby1yb3VuZCwgYW5kIGRyb3Agb3V0IG9mIHRoZSBsb29wIGlmCisgICAgICAgICAgICAgICAgLy8gd2UndmUgbWFkZSBpdCBvZmYgdGhlIGVuZCBvZiB0aGUgcmFuZ2UKKyAgICAgICAgICAgICAgICBjID0gdGV4dC5jdXJyZW50KCk7CisgICAgICAgICAgICAgICAgc3RhdGUgPSAwOworICAgICAgICAgICAgICAgIGlmICh0ZXh0LmdldEluZGV4KCkgPj0gZW5kUG9zKSB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gaWYgd2UgZGlkbid0IGhpdCBhbnkgZXhjZXB0aW9uYWwgY29uZGl0aW9ucyBvbiB0aGlzIGxhc3QgaXRlcmF0aW9uLAorICAgICAgICAgICAgLy8ganVzdCBhZHZhbmNlIHRvIHRoZSBuZXh0IGNoYXJhY3RlciBhbmQgbG9vcAorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYyA9IHRleHQubmV4dCgpOworICAgICAgICAgICAgfQorLy9TeXN0ZW0ub3V0LnByaW50KCIsIHBvc3NpYmxlQnJlYWtQb3NpdGlvbnMgPSB7ICIpOyBmb3IgKGludCBpID0gMDsgaSA8IHBvc3NpYmxlQnJlYWtQb3NpdGlvbnMuc2l6ZSgpOyBpKyspIFN5c3RlbS5vdXQucHJpbnQocG9zc2libGVCcmVha1Bvc2l0aW9ucy5lbGVtZW50QXQoaSkgKyAiICIpOyBTeXN0ZW0ub3V0LnByaW50KCJ9Iik7CisvL1N5c3RlbS5vdXQucHJpbnQoIiwgY3VycmVudEJyZWFrUG9zaXRpb25zID0geyAiKTsgZm9yIChpbnQgaSA9IDA7IGkgPCBjdXJyZW50QnJlYWtQb3NpdGlvbnMuc2l6ZSgpOyBpKyspIFN5c3RlbS5vdXQucHJpbnQoY3VycmVudEJyZWFrUG9zaXRpb25zLmVsZW1lbnRBdChpKSArICIgIik7IFN5c3RlbS5vdXQucHJpbnRsbigifSIpOworICAgICAgICB9CisKKyAgICAgICAgLy8gZHVtcCB0aGUgbGFzdCBicmVhayBwb3NpdGlvbiBpbiB0aGUgbGlzdCwgYW5kIHJlcGxhY2UgaXQgd2l0aCB0aGUgYWN0dWFsCisgICAgICAgIC8vIGVuZCBvZiB0aGUgcmFuZ2UgKHdoaWNoIG1heSBiZSB0aGUgc2FtZSBjaGFyYWN0ZXIsIG9yIG1heSBiZSBmdXJ0aGVyIG9uCisgICAgICAgIC8vIGJlY2F1c2UgdGhlIHJhbmdlIGFjdHVhbGx5IGVuZGVkIHdpdGggbm9uLWRpY3Rpb25hcnkgY2hhcmFjdGVycyB3ZSB3YW50IHRvCisgICAgICAgIC8vIGtlZXAgd2l0aCB0aGUgd29yZCkKKyAgICAgICAgaWYgKCFjdXJyZW50QnJlYWtQb3NpdGlvbnMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBjdXJyZW50QnJlYWtQb3NpdGlvbnMucG9wKCk7CisgICAgICAgIH0KKyAgICAgICAgY3VycmVudEJyZWFrUG9zaXRpb25zLnB1c2gobmV3IEludGVnZXIoZW5kUG9zKSk7CisKKyAgICAgICAgLy8gY3JlYXRlIGEgcmVndWxhciBhcnJheSB0byBob2xkIHRoZSBicmVhayBwb3NpdGlvbnMgYW5kIGNvcHkKKyAgICAgICAgLy8gdGhlIGJyZWFrIHBvc2l0aW9ucyBmcm9tIHRoZSBzdGFjayB0byB0aGUgYXJyYXkgKGluIGFkZGl0aW9uLAorICAgICAgICAvLyBvdXIgc3RhcnRpbmcgcG9zaXRpb24gZ29lcyBpbnRvIHRoaXMgYXJyYXkgYXMgYSBicmVhayBwb3NpdGlvbikuCisgICAgICAgIC8vIFRoaXMgYXJyYXkgYmVjb21lcyB0aGUgY2FjaGUgb2YgYnJlYWsgcG9zaXRpb25zIHVzZWQgYnkgbmV4dCgpCisgICAgICAgIC8vIGFuZCBwcmV2aW91cygpLCBzbyB0aGlzIGlzIHdoZXJlIHdlIGFjdHVhbGx5IHJlZnJlc2ggdGhlIGNhY2hlLgorICAgICAgICBjYWNoZWRCcmVha1Bvc2l0aW9ucyA9IG5ldyBpbnRbY3VycmVudEJyZWFrUG9zaXRpb25zLnNpemUoKSArIDFdOworICAgICAgICBjYWNoZWRCcmVha1Bvc2l0aW9uc1swXSA9IHN0YXJ0UG9zOworCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY3VycmVudEJyZWFrUG9zaXRpb25zLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICBjYWNoZWRCcmVha1Bvc2l0aW9uc1tpICsgMV0gPSAoKEludGVnZXIpY3VycmVudEJyZWFrUG9zaXRpb25zLmVsZW1lbnRBdChpKSkuaW50VmFsdWUoKTsKKyAgICAgICAgfQorICAgICAgICBwb3NpdGlvbkluQ2FjaGUgPSAwOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRoZSBCdWlsZGVyIGNsYXNzIGZvciBEaWN0aW9uYXJ5QmFzZWRCcmVha0l0ZXJhdG9yIGluaGVyaXRzIGFsbW9zdCBhbGwgb2YKKyAgICAgKiBpdHMgZnVuY3Rpb25hbGl0eSBmcm9tIHRoZSBCdWlsZGVyIGNsYXNzIGZvciBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yLCBidXQKKyAgICAgKiBleHRlbmRzIGl0IHdpdGggZXh0cmEgbG9naWMgdG8gaGFuZGxlIHRoZSBESUNUSU9OQVJZX1ZBUiB0b2tlbgorICAgICAqIEBpbnRlcm5hbAorICAgICAqLworICAgIHByb3RlY3RlZCBjbGFzcyBCdWlsZGVyIGV4dGVuZHMgUnVsZUJhc2VkQnJlYWtJdGVyYXRvci5CdWlsZGVyIHsKKworICAgICAgICAvKioKKyAgICAgICAgICogQSBVbmljb2RlU2V0IHRoYXQgY29udGFpbnMgYWxsIHRoZSBjaGFyYWN0ZXJzIHJlcHJlc2VudGVkIGluIHRoZSBkaWN0aW9uYXJ5CisgICAgICAgICAqLworICAgICAgICBwcml2YXRlIFVuaWNvZGVTZXQgZGljdGlvbmFyeUNoYXJzID0gbmV3IFVuaWNvZGVTZXQoKTsKKyAgICAgICAgcHJpdmF0ZSBTdHJpbmcgZGljdGlvbmFyeUV4cHJlc3Npb24gPSAiIjsKKworICAgICAgICAvKioKKyAgICAgICAgICogTm8gc3BlY2lhbCBpbml0aWFsaXphdGlvbgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIEJ1aWxkZXIoKSB7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogV2Ugb3ZlcnJpZGUgaGFuZGxlU3BlY2lhbFN1YnN0aXR1dGlvbigpIHRvIGFkZCBsb2dpYyB0byBoYW5kbGUKKyAgICAgICAgICogdGhlICRkaWN0aW9uYXJ5IHRhZy4gIElmIHdlIHNlZSBhIHN1YnN0aXR1dGlvbiBuYW1lZCBESUNUSU9OQVJZX1ZBUiwKKyAgICAgICAgICogcGFyc2UgdGhlIHN1YnN0aXR1dGlvbiBleHByZXNzaW9uIGFuZCBzdG9yZSB0aGUgcmVzdWx0IGluCisgICAgICAgICAqIGRpY3Rpb25hcnlDaGFycy4KKyAgICAgICAgICovCisgICAgICAgIHByb3RlY3RlZCB2b2lkIGhhbmRsZVNwZWNpYWxTdWJzdGl0dXRpb24oU3RyaW5nIHJlcGxhY2UsIFN0cmluZyByZXBsYWNlV2l0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnRQb3MsIFN0cmluZyBkZXNjcmlwdGlvbikgeworICAgICAgICAgICAgc3VwZXIuaGFuZGxlU3BlY2lhbFN1YnN0aXR1dGlvbihyZXBsYWNlLCByZXBsYWNlV2l0aCwgc3RhcnRQb3MsIGRlc2NyaXB0aW9uKTsKKworICAgICAgICAgICAgaWYgKHJlcGxhY2UuZXF1YWxzKERJQ1RJT05BUllfVkFSKSkgeworICAgICAgICAgICAgICAgIGlmIChyZXBsYWNlV2l0aC5jaGFyQXQoMCkgPT0gJygnKSB7CisgICAgICAgICAgICAgICAgICAgIGVycm9yKCJEaWN0aW9uYXJ5IGdyb3VwIGNhbid0IGJlIGVuY2xvc2VkIGluICgiLCBzdGFydFBvcywgZGVzY3JpcHRpb24pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkaWN0aW9uYXJ5RXhwcmVzc2lvbiA9IHJlcGxhY2VXaXRoOworICAgICAgICAgICAgICAgIGRpY3Rpb25hcnlDaGFycyA9IG5ldyBVbmljb2RlU2V0KHJlcGxhY2VXaXRoLCBmYWxzZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogVGhlIG90aGVyIGhhbGYgb2YgdGhlIGxvZ2ljIHRvIGhhbmRsZSB0aGUgZGljdGlvbmFyeSBjaGFyYWN0ZXJzIGhhcHBlbnMgaGVyZS4KKyAgICAgICAgICogQWZ0ZXIgdGhlIGluaGVyaXRlZCBidWlsZGVyIGhhcyBkZXJpdmVkIHRoZSByZWFsIGNoYXJhY3RlciBjYXRlZ29yaWVzLCB3ZQorICAgICAgICAgKiBzZXQgdXAgdGhlIGNhdGVnb3J5RmxhZ3MgYXJyYXkgaW4gdGhlIGl0ZXJhdG9yLiAgVGhpcyBhcnJheSBjb250YWlucyAidHJ1ZSIKKyAgICAgICAgICogZm9yIGV2ZXJ5IGNoYXJhY3RlciBjYXRlZ29yeSB0aGF0IGluY2x1ZGVzIGEgZGljdGlvbmFyeSBjaGFyYWN0ZXIuCisgICAgICAgICAqLworICAgICAgICBwcm90ZWN0ZWQgdm9pZCBidWlsZENoYXJDYXRlZ29yaWVzKFZlY3RvciB0ZW1wUnVsZUxpc3QpIHsKKyAgICAgICAgICAgIHN1cGVyLmJ1aWxkQ2hhckNhdGVnb3JpZXModGVtcFJ1bGVMaXN0KTsKKworICAgICAgICAgICAgY2F0ZWdvcnlGbGFncyA9IG5ldyBib29sZWFuW2NhdGVnb3JpZXMuc2l6ZSgpXTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2F0ZWdvcmllcy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgIFVuaWNvZGVTZXQgY3MgPSAoVW5pY29kZVNldCljYXRlZ29yaWVzLmVsZW1lbnRBdChpKTsKKworICAgICAgICAgICAgICAgIGNzLnJldGFpbkFsbChkaWN0aW9uYXJ5Q2hhcnMpOworICAgICAgICAgICAgICAgIGlmICghY3MuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5RmxhZ3NbaV0gPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgY2FsbGVkIGJ5IFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IuYnVpbGRDaGFyQ2F0ZWdvcmllcygpLAorICAgICAgICAvLyB3aGljaCBpcyBjYWxsZWQgYnkgdGhlIGZ1bmN0aW9uIGFib3ZlLiAgVGhpcyBnaXZlcyB1cyBhIHdheSB0byBjcmVhdGUgYSBzZXBhcmF0ZQorICAgICAgICAvLyBjaGFyYWN0ZXIgY2F0ZWdvcnkgZm9yIHRoZSBkaWN0aW9uYXJ5IGNoYXJhY3RlcnMgZXZlbiB3aGVuIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IKKyAgICAgICAgLy8gaXNuJ3QgbWFraW5nIGEgZGlzdGluY3Rpb24KKyAgICAgICAgcHJvdGVjdGVkIHZvaWQgbXVuZ2VFeHByZXNzaW9uTGlzdChIYXNodGFibGUgZXhwcmVzc2lvbnMpIHsKKyAgICAgICAgICAgIGV4cHJlc3Npb25zLnB1dChkaWN0aW9uYXJ5RXhwcmVzc2lvbiwgZGljdGlvbmFyeUNoYXJzKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS90ZXh0L0RpZ2l0TGlzdC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvRGlnaXRMaXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZjA3Y2YyOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L0RpZ2l0TGlzdC5qYXZhCkBAIC0wLDAgKzEsNzQxIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvdGV4dC9EaWdpdExpc3QuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNjowNyAkIAorICogJFJldmlzaW9uOiAxLjkgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LnRleHQ7CisKK2ltcG9ydCBqYXZhLm1hdGguQmlnSW50ZWdlcjsKKworLyoqCisgKiA8Y29kZT5EaWdpdExpc3Q8L2NvZGU+IGhhbmRsZXMgdGhlIHRyYW5zY29kaW5nIGJldHdlZW4gbnVtZXJpYyB2YWx1ZXMgYW5kCisgKiBzdHJpbmdzIG9mIGNoYXJhY3RlcnMuICBJdCBvbmx5IHJlcHJlc2VudHMgbm9uLW5lZ2F0aXZlIG51bWJlcnMuICBUaGUKKyAqIGRpdmlzaW9uIG9mIGxhYm9yIGJldHdlZW4gPGNvZGU+RGlnaXRMaXN0PC9jb2RlPiBhbmQKKyAqIDxjb2RlPkRlY2ltYWxGb3JtYXQ8L2NvZGU+IGlzIHRoYXQgPGNvZGU+RGlnaXRMaXN0PC9jb2RlPiBoYW5kbGVzIHRoZSByYWRpeAorICogMTAgcmVwcmVzZW50YXRpb24gaXNzdWVzIGFuZCBudW1lcmljIGNvbnZlcnNpb24sIGluY2x1ZGluZyByb3VuZGluZzsKKyAqIDxjb2RlPkRlY2ltYWxGb3JtYXQ8L2NvZGU+IGhhbmRsZXMgdGhlIGxvY2FsZS1zcGVjaWZpYyBpc3N1ZXMgc3VjaCBhcworICogcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIHJlcHJlc2VudGF0aW9uLCBkaWdpdCBncm91cGluZywgZGVjaW1hbCBwb2ludCwKKyAqIGN1cnJlbmN5LCBhbmQgc28gb24uCisgKgorICogPHA+QSA8Y29kZT5EaWdpdExpc3Q8L2NvZGU+IGlzIGEgcmVwcmVzZW50YXRpb24gb2YgYSBmaW5pdGUgbnVtZXJpYyB2YWx1ZS4KKyAqIDxjb2RlPkRpZ2l0TGlzdDwvY29kZT4gb2JqZWN0cyBkbyBub3QgcmVwcmVzZW50IDxjb2RlPk5hTjwvY29kZT4gb3IgaW5maW5pdGUKKyAqIHZhbHVlcy4gIEEgPGNvZGU+RGlnaXRMaXN0PC9jb2RlPiB2YWx1ZSBjYW4gYmUgY29udmVydGVkIHRvIGEKKyAqIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHdpdGhvdXQgbG9zcyBvZiBwcmVjaXNpb24uICBDb252ZXJzaW9uIHRvIG90aGVyCisgKiBudW1lcmljIGZvcm1hdHMgbWF5IGludm9sdmUgbG9zcyBvZiBwcmVjaXNpb24sIGRlcGVuZGluZyBvbiB0aGUgc3BlY2lmaWMKKyAqIHZhbHVlLgorICoKKyAqIDxwPlRoZSA8Y29kZT5EaWdpdExpc3Q8L2NvZGU+IHJlcHJlc2VudGF0aW9uIGNvbnNpc3RzIG9mIGEgc3RyaW5nIG9mCisgKiBjaGFyYWN0ZXJzLCB3aGljaCBhcmUgdGhlIGRpZ2l0cyByYWRpeCAxMCwgZnJvbSAnMCcgdG8gJzknLiAgSXQgYWxzbyBoYXMgYQorICogYmFzZSAxMCBleHBvbmVudCBhc3NvY2lhdGVkIHdpdGggaXQuICBUaGUgdmFsdWUgcmVwcmVzZW50ZWQgYnkgYQorICogPGNvZGU+RGlnaXRMaXN0PC9jb2RlPiBvYmplY3QgY2FuIGJlIGNvbXB1dGVkIGJ5IG11bGl0cGx5aW5nIHRoZSBmcmFjdGlvbgorICogPGVtPmY8L2VtPiwgd2hlcmUgMCA8PSA8ZW0+ZjwvZW0+IDwgMSwgZGVyaXZlZCBieSBwbGFjaW5nIGFsbCB0aGUgZGlnaXRzIG9mCisgKiB0aGUgbGlzdCB0byB0aGUgcmlnaHQgb2YgdGhlIGRlY2ltYWwgcG9pbnQsIGJ5IDEwXmV4cG9uZW50LgorICoKKyAqIEBzZWUgamF2YS51dGlsLkxvY2FsZQorICogQHNlZSBqYXZhLnRleHQuRm9ybWF0CisgKiBAc2VlIE51bWJlckZvcm1hdAorICogQHNlZSBEZWNpbWFsRm9ybWF0CisgKiBAc2VlIGphdmEudGV4dC5DaG9pY2VGb3JtYXQKKyAqIEBzZWUgamF2YS50ZXh0Lk1lc3NhZ2VGb3JtYXQKKyAqIEB2ZXJzaW9uICAgICAgMS4xOCAwOC8xMi85OAorICogQGF1dGhvciAgICAgICBNYXJrIERhdmlzLCBBbGFuIExpdQorICogKi8KK2ZpbmFsIGNsYXNzIERpZ2l0TGlzdCBpbXBsZW1lbnRzIENsb25lYWJsZSB7CisgICAgLyoqCisgICAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIHNpZ25pZmljYW50IGRpZ2l0cyBpbiBhbiBJRUVFIDc1NCBkb3VibGUsIHRoYXQKKyAgICAgKiBpcywgaW4gYSBKYXZhIGRvdWJsZS4gIFRoaXMgbXVzdCBub3QgYmUgaW5jcmVhc2VkLCBvciBnYXJiYWdlIGRpZ2l0cworICAgICAqIHdpbGwgYmUgZ2VuZXJhdGVkLCBhbmQgc2hvdWxkIG5vdCBiZSBkZWNyZWFzZWQsIG9yIGFjY3VyYWN5IHdpbGwgYmUgbG9zdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNQVhfTE9OR19ESUdJVFMgPSAxOTsgLy8gPT0gTG9uZy50b1N0cmluZyhMb25nLk1BWF9WQUxVRSkubGVuZ3RoKCkKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBEQkxfRElHID0gMTc7CisKKyAgICAvKioKKyAgICAgKiBUaGVzZSBkYXRhIG1lbWJlcnMgYXJlIGludGVudGlvbmFsbHkgcHVibGljIGFuZCBjYW4gYmUgc2V0IGRpcmVjdGx5LgorICAgICAqCisgICAgICogVGhlIHZhbHVlIHJlcHJlc2VudGVkIGlzIGdpdmVuIGJ5IHBsYWNpbmcgdGhlIGRlY2ltYWwgcG9pbnQgYmVmb3JlCisgICAgICogZGlnaXRzW2RlY2ltYWxBdF0uICBJZiBkZWNpbWFsQXQgaXMgPCAwLCB0aGVuIGxlYWRpbmcgemVyb3MgYmV0d2VlbgorICAgICAqIHRoZSBkZWNpbWFsIHBvaW50IGFuZCB0aGUgZmlyc3Qgbm9uemVybyBkaWdpdCBhcmUgaW1wbGllZC4gIElmIGRlY2ltYWxBdAorICAgICAqIGlzID4gY291bnQsIHRoZW4gdHJhaWxpbmcgemVyb3MgYmV0d2VlbiB0aGUgZGlnaXRzW2NvdW50LTFdIGFuZCB0aGUKKyAgICAgKiBkZWNpbWFsIHBvaW50IGFyZSBpbXBsaWVkLgorICAgICAqCisgICAgICogRXF1aXZhbGVudGx5LCB0aGUgcmVwcmVzZW50ZWQgdmFsdWUgaXMgZ2l2ZW4gYnkgZiAqIDEwXmRlY2ltYWxBdC4gIEhlcmUKKyAgICAgKiBmIGlzIGEgdmFsdWUgMC4xIDw9IGYgPCAxIGFycml2ZWQgYXQgYnkgcGxhY2luZyB0aGUgZGlnaXRzIGluIERpZ2l0cyB0bworICAgICAqIHRoZSByaWdodCBvZiB0aGUgZGVjaW1hbC4KKyAgICAgKgorICAgICAqIERpZ2l0TGlzdCBpcyBub3JtYWxpemVkLCBzbyBpZiBpdCBpcyBub24temVybywgZmlnaXRzWzBdIGlzIG5vbi16ZXJvLiAgV2UKKyAgICAgKiBkb24ndCBhbGxvdyBkZW5vcm1hbGl6ZWQgbnVtYmVycyBiZWNhdXNlIG91ciBleHBvbmVudCBpcyBlZmZlY3RpdmVseSBvZgorICAgICAqIHVubGltaXRlZCBtYWduaXR1ZGUuICBUaGUgY291bnQgdmFsdWUgY29udGFpbnMgdGhlIG51bWJlciBvZiBzaWduaWZpY2FudAorICAgICAqIGRpZ2l0cyBwcmVzZW50IGluIGRpZ2l0c1tdLgorICAgICAqCisgICAgICogWmVybyBpcyByZXByZXNlbnRlZCBieSBhbnkgRGlnaXRMaXN0IHdpdGggY291bnQgPT0gMCBvciB3aXRoIGVhY2ggZGlnaXRzW2ldCisgICAgICogZm9yIGFsbCBpIDw9IGNvdW50ID09ICcwJy4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGRlY2ltYWxBdCA9IDA7CisgICAgcHVibGljIGludCBjb3VudCA9IDA7CisgICAgcHVibGljIGJ5dGVbXSBkaWdpdHMgPSBuZXcgYnl0ZVtNQVhfTE9OR19ESUdJVFNdOworCisgICAgcHJpdmF0ZSBmaW5hbCB2b2lkIGVuc3VyZUNhcGFjaXR5KGludCBkaWdpdENhcGFjaXR5LCBpbnQgZGlnaXRzVG9Db3B5KSB7CisgICAgICAgIGlmIChkaWdpdENhcGFjaXR5ID4gZGlnaXRzLmxlbmd0aCkgeworICAgICAgICAgICAgYnl0ZVtdIG5ld0RpZ2l0cyA9IG5ldyBieXRlW2RpZ2l0Q2FwYWNpdHkgKiAyXTsKKyAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoZGlnaXRzLCAwLCBuZXdEaWdpdHMsIDAsIGRpZ2l0c1RvQ29weSk7CisgICAgICAgICAgICBkaWdpdHMgPSBuZXdEaWdpdHM7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgcmVwcmVzZW50ZWQgbnVtYmVyIGlzIHplcm8uCisgICAgICovCisgICAgYm9vbGVhbiBpc1plcm8oKQorICAgIHsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPGNvdW50OyArK2kpIGlmIChkaWdpdHNbaV0gIT0gJzAnKSByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8qKgorICAgICAqIENsZWFycyBvdXQgdGhlIGRpZ2l0cy4KKyAgICAgKiBVc2UgYmVmb3JlIGFwcGVuZGluZyB0aGVtLgorICAgICAqIFR5cGljYWxseSwgeW91IHNldCBhIHNlcmllcyBvZiBkaWdpdHMgd2l0aCBhcHBlbmQsIHRoZW4gYXQgdGhlIHBvaW50CisgICAgICogeW91IGhpdCB0aGUgZGVjaW1hbCBwb2ludCwgeW91IHNldCBteURpZ2l0TGlzdC5kZWNpbWFsQXQgPSBteURpZ2l0TGlzdC5jb3VudDsKKyAgICAgKiB0aGVuIGdvIG9uIGFwcGVuZGluZyBkaWdpdHMuCisgICAgICovCisgICAgcHVibGljIHZvaWQgY2xlYXIgKCkgeworICAgICAgICBkZWNpbWFsQXQgPSAwOworICAgICAgICBjb3VudCA9IDA7CisgICAgfQorICAgIC8qKgorICAgICAqIEFwcGVuZHMgZGlnaXRzIHRvIHRoZSBsaXN0LgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGFwcGVuZCAoaW50IGRpZ2l0KSB7CisgICAgICAgIGVuc3VyZUNhcGFjaXR5KGNvdW50KzEsIGNvdW50KTsKKyAgICAgICAgZGlnaXRzW2NvdW50KytdID0gKGJ5dGUpIGRpZ2l0OworICAgIH0KKyAgICAvKioKKyAgICAgKiBVdGlsaXR5IHJvdXRpbmUgdG8gZ2V0IHRoZSB2YWx1ZSBvZiB0aGUgZGlnaXQgbGlzdAorICAgICAqIElmIChjb3VudCA9PSAwKSB0aGlzIHRocm93cyBhIE51bWJlckZvcm1hdEV4Y2VwdGlvbiwgd2hpY2gKKyAgICAgKiBtaW1pY3MgTG9uZy5wYXJzZUxvbmcoKS4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgZG91YmxlIGdldERvdWJsZSgpIHsKKyAgICAgICAgaWYgKGNvdW50ID09IDApIHJldHVybiAwLjA7CisgICAgICAgIFN0cmluZ0J1ZmZlciB0ZW1wID0gbmV3IFN0cmluZ0J1ZmZlcihjb3VudCk7CisgICAgICAgIHRlbXAuYXBwZW5kKCcuJyk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgdGVtcC5hcHBlbmQoKGNoYXIpKGRpZ2l0c1tpXSkpOworICAgICAgICB0ZW1wLmFwcGVuZCgnRScpOworICAgICAgICB0ZW1wLmFwcGVuZChJbnRlZ2VyLnRvU3RyaW5nKGRlY2ltYWxBdCkpOworICAgICAgICByZXR1cm4gRG91YmxlLnZhbHVlT2YodGVtcC50b1N0cmluZygpKS5kb3VibGVWYWx1ZSgpOworICAgICAgICAvLyBsb25nIHZhbHVlID0gTG9uZy5wYXJzZUxvbmcodGVtcC50b1N0cmluZygpKTsKKyAgICAgICAgLy8gcmV0dXJuICh2YWx1ZSAqIE1hdGgucG93KDEwLCBkZWNpbWFsQXQgLSBjb3VudCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFV0aWxpdHkgcm91dGluZSB0byBnZXQgdGhlIHZhbHVlIG9mIHRoZSBkaWdpdCBsaXN0LgorICAgICAqIElmIChjb3VudCA9PSAwKSB0aGlzIHJldHVybnMgMCwgdW5saWtlIExvbmcucGFyc2VMb25nKCkuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIGxvbmcgZ2V0TG9uZygpIHsKKyAgICAgICAgLy8gZm9yIG5vdywgc2ltcGxlIGltcGxlbWVudGF0aW9uOyBsYXRlciwgZG8gcHJvcGVyIElFRUUgbmF0aXZlIHN0dWZmCisKKyAgICAgICAgaWYgKGNvdW50ID09IDApIHJldHVybiAwOworCisgICAgICAgIC8vIFdlIGhhdmUgdG8gY2hlY2sgZm9yIHRoaXMsIGJlY2F1c2UgdGhpcyBpcyB0aGUgb25lIE5FR0FUSVZFIHZhbHVlCisgICAgICAgIC8vIHdlIHJlcHJlc2VudC4gIElmIHdlIHRyaWVkIHRvIGp1c3QgcGFzcyB0aGUgZGlnaXRzIG9mZiB0byBwYXJzZUxvbmcsCisgICAgICAgIC8vIHdlJ2QgZ2V0IGEgcGFyc2UgZmFpbHVyZS4KKyAgICAgICAgaWYgKGlzTG9uZ01JTl9WQUxVRSgpKSByZXR1cm4gTG9uZy5NSU5fVkFMVUU7CisKKyAgICAgICAgU3RyaW5nQnVmZmVyIHRlbXAgPSBuZXcgU3RyaW5nQnVmZmVyKGNvdW50KTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBkZWNpbWFsQXQ7ICsraSkKKyAgICAgICAgeworICAgICAgICAgICAgdGVtcC5hcHBlbmQoKGkgPCBjb3VudCkgPyAoY2hhcikoZGlnaXRzW2ldKSA6ICcwJyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIExvbmcucGFyc2VMb25nKHRlbXAudG9TdHJpbmcoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgPGNvZGU+QmlnSW50ZWdlcjwvY29kZT4gcmVwcmVzZW50aW5nIHRoZSB2YWx1ZSBzdG9yZWQgaW4gdGhpcworICAgICAqIDxjb2RlPkRpZ2l0TGlzdDwvY29kZT4uICBUaGlzIG1ldGhvZCBhc3N1bWVzIHRoYXQgdGhpcyBvYmplY3QgY29udGFpbnMKKyAgICAgKiBhbiBpbnRlZ3JhbCB2YWx1ZTsgaWYgbm90LCBpdCB3aWxsIHJldHVybiBhbiBpbmNvcnJlY3QgdmFsdWUuCisgICAgICogW2JuZl0KKyAgICAgKiBAcGFyYW0gaXNQb3NpdGl2ZSBkZXRlcm1pbmVzIHRoZSBzaWduIG9mIHRoZSByZXR1cm5lZCByZXN1bHQKKyAgICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGlzIG9iamVjdCBhcyBhIDxjb2RlPkJpZ0ludGVnZXI8L2NvZGU+CisgICAgICovCisgICAgcHVibGljIEJpZ0ludGVnZXIgZ2V0QmlnSW50ZWdlcihib29sZWFuIGlzUG9zaXRpdmUpIHsKKyAgICAgICAgaWYgKGlzWmVybygpKSByZXR1cm4gQmlnSW50ZWdlci52YWx1ZU9mKDApOworICAgICAgICBTdHJpbmdCdWZmZXIgc3RyaW5nUmVwID0gbmV3IFN0cmluZ0J1ZmZlcihjb3VudCk7CisgICAgICAgIGlmICghaXNQb3NpdGl2ZSkgeworICAgICAgICAgICAgc3RyaW5nUmVwLmFwcGVuZCgnLScpOworICAgICAgICB9CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxjb3VudDsgKytpKSB7CisgICAgICAgICAgICBzdHJpbmdSZXAuYXBwZW5kKChjaGFyKSBkaWdpdHNbaV0pOworICAgICAgICB9CisgICAgICAgIGludCBkID0gZGVjaW1hbEF0OworICAgICAgICB3aGlsZSAoZC0tID4gY291bnQpIHsKKyAgICAgICAgICAgIHN0cmluZ1JlcC5hcHBlbmQoJzAnKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoc3RyaW5nUmVwLnRvU3RyaW5nKCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHJlcHJlc2VudGluZyB0aGUgdmFsdWUgc3RvcmVkIGluIHRoaXMKKyAgICAgKiA8Y29kZT5EaWdpdExpc3Q8L2NvZGU+LgorICAgICAqIFtibmZdCisgICAgICogQHBhcmFtIGlzUG9zaXRpdmUgZGV0ZXJtaW5lcyB0aGUgc2lnbiBvZiB0aGUgcmV0dXJuZWQgcmVzdWx0CisgICAgICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhpcyBvYmplY3QgYXMgYSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPgorICAgICAqLworICAgIHB1YmxpYyBqYXZhLm1hdGguQmlnRGVjaW1hbCBnZXRCaWdEZWNpbWFsKGJvb2xlYW4gaXNQb3NpdGl2ZSkgeworICAgICAgICBpZiAoaXNaZXJvKCkpIHJldHVybiBqYXZhLm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKDApOworICAgICAgICBTdHJpbmdCdWZmZXIgc3RyaW5nUmVwID0gbmV3IFN0cmluZ0J1ZmZlcihjb3VudCsxKTsKKyAgICAgICAgaWYgKCFpc1Bvc2l0aXZlKSB7CisgICAgICAgICAgICBzdHJpbmdSZXAuYXBwZW5kKCctJyk7CisgICAgICAgIH0KKyAgICAgICAgaW50IGQgPSBkZWNpbWFsQXQ7CisgICAgICAgIGlmIChkIDwgMCkgeworICAgICAgICAgICAgc3RyaW5nUmVwLmFwcGVuZCgnLicpOworICAgICAgICAgICAgd2hpbGUgKGQgPCAwKSB7CisgICAgICAgICAgICAgICAgc3RyaW5nUmVwLmFwcGVuZCgnMCcpOworICAgICAgICAgICAgICAgICsrZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGQgPSAtMTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGludCBpPTA7IGk8Y291bnQ7ICsraSkgeworICAgICAgICAgICAgaWYgKGQgPT0gaSkgeworICAgICAgICAgICAgICAgIHN0cmluZ1JlcC5hcHBlbmQoJy4nKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0cmluZ1JlcC5hcHBlbmQoKGNoYXIpIGRpZ2l0c1tpXSk7CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKGQtLSA+IGNvdW50KSB7CisgICAgICAgICAgICBzdHJpbmdSZXAuYXBwZW5kKCcwJyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG5ldyBqYXZhLm1hdGguQmlnRGVjaW1hbChzdHJpbmdSZXAudG9TdHJpbmcoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHdoZXRoZXIgb3Igbm90IHRoaXMgb2JqZWN0cyByZXByZXNlbnRlZCB2YWx1ZSBpcyBhbiBpbnRlZ2VyLgorICAgICAqIFtibmZdCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSByZXByZXNlbnRlZCB2YWx1ZSBvZiB0aGlzIG9iamVjdCBpcyBhbiBpbnRlZ2VyCisgICAgICovCisgICAgYm9vbGVhbiBpc0ludGVncmFsKCkgeworICAgICAgICAvLyBUcmltIHRyYWlsaW5nIHplcm9zLiAgVGhpcyBkb2VzIG5vdCBjaGFuZ2UgdGhlIHJlcHJlc2VudGVkIHZhbHVlLgorICAgICAgICB3aGlsZSAoY291bnQgPiAwICYmIGRpZ2l0c1tjb3VudCAtIDFdID09IChieXRlKScwJykgLS1jb3VudDsKKyAgICAgICAgcmV0dXJuIGNvdW50ID09IDAgfHwgZGVjaW1hbEF0ID49IGNvdW50OworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSBudW1iZXIgcmVwcmVzZW50ZWQgYnkgdGhpcyBvYmplY3QgY2FuIGZpdCBpbnRvCisgICAgICogYSBsb25nLgorICAgICAqLworICAgIGJvb2xlYW4gZml0c0ludG9Mb25nKGJvb2xlYW4gaXNQb3NpdGl2ZSkKKyAgICB7CisgICAgICAgIC8vIEZpZ3VyZSBvdXQgaWYgdGhlIHJlc3VsdCB3aWxsIGZpdCBpbiBhIGxvbmcuICBXZSBoYXZlIHRvCisgICAgICAgIC8vIGZpcnN0IGxvb2sgZm9yIG5vbnplcm8gZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50OworICAgICAgICAvLyB0aGVuIGNoZWNrIHRoZSBzaXplLiAgSWYgdGhlIGRpZ2l0IGNvdW50IGlzIDE4IG9yIGxlc3MsIHRoZW4KKyAgICAgICAgLy8gdGhlIHZhbHVlIGNhbiBkZWZpbml0ZWx5IGJlIHJlcHJlc2VudGVkIGFzIGEgbG9uZy4gIElmIGl0IGlzIDE5CisgICAgICAgIC8vIHRoZW4gaXQgbWF5IGJlIHRvbyBsYXJnZS4KKworICAgICAgICAvLyBUcmltIHRyYWlsaW5nIHplcm9zLiAgVGhpcyBkb2VzIG5vdCBjaGFuZ2UgdGhlIHJlcHJlc2VudGVkIHZhbHVlLgorICAgICAgICB3aGlsZSAoY291bnQgPiAwICYmIGRpZ2l0c1tjb3VudCAtIDFdID09IChieXRlKScwJykgLS1jb3VudDsKKworICAgICAgICBpZiAoY291bnQgPT0gMCkgeworICAgICAgICAgICAgLy8gUG9zaXRpdmUgemVybyBmaXRzIGludG8gYSBsb25nLCBidXQgbmVnYXRpdmUgemVybyBjYW4gb25seQorICAgICAgICAgICAgLy8gYmUgcmVwcmVzZW50ZWQgYXMgYSBkb3VibGUuIC0gYnVnIDQxNjI4NTIKKyAgICAgICAgICAgIHJldHVybiBpc1Bvc2l0aXZlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGRlY2ltYWxBdCA8IGNvdW50IHx8IGRlY2ltYWxBdCA+IE1BWF9MT05HX0RJR0lUUykgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmIChkZWNpbWFsQXQgPCBNQVhfTE9OR19ESUdJVFMpIHJldHVybiB0cnVlOworCisgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQgd2UgaGF2ZSBkZWNpbWFsQXQgPT0gY291bnQsIGFuZCBjb3VudCA9PSBNQVhfTE9OR19ESUdJVFMuCisgICAgICAgIC8vIFRoZSBudW1iZXIgd2lsbCBvdmVyZmxvdyBpZiBpdCBpcyBsYXJnZXIgdGhhbiA5MjIzMzcyMDM2ODU0Nzc1ODA3CisgICAgICAgIC8vIG9yIHNtYWxsZXIgdGhhbiAtOTIyMzM3MjAzNjg1NDc3NTgwOC4KKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPGNvdW50OyArK2kpCisgICAgICAgIHsKKyAgICAgICAgICAgIGJ5dGUgZGlnID0gZGlnaXRzW2ldLCBtYXggPSBMT05HX01JTl9SRVBbaV07CisgICAgICAgICAgICBpZiAoZGlnID4gbWF4KSByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoZGlnIDwgbWF4KSByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQgdGhlIGZpcnN0IGNvdW50IGRpZ2l0cyBtYXRjaC4gIElmIGRlY2ltYWxBdCBpcyBsZXNzCisgICAgICAgIC8vIHRoYW4gY291bnQsIHRoZW4gdGhlIHJlbWFpbmluZyBkaWdpdHMgYXJlIHplcm8sIGFuZCB3ZSByZXR1cm4gdHJ1ZS4KKyAgICAgICAgaWYgKGNvdW50IDwgZGVjaW1hbEF0KSByZXR1cm4gdHJ1ZTsKKworICAgICAgICAvLyBOb3cgd2UgaGF2ZSBhIHJlcHJlc2VudGF0aW9uIG9mIExvbmcuTUlOX1ZBTFVFLCB3aXRob3V0IHRoZSBsZWFkaW5nCisgICAgICAgIC8vIG5lZ2F0aXZlIHNpZ24uICBJZiB0aGlzIHJlcHJlc2VudHMgYSBwb3NpdGl2ZSB2YWx1ZSwgdGhlbiBpdCBkb2VzCisgICAgICAgIC8vIG5vdCBmaXQ7IG90aGVyd2lzZSBpdCBmaXRzLgorICAgICAgICByZXR1cm4gIWlzUG9zaXRpdmU7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0IHRoZSBkaWdpdCBsaXN0IHRvIGEgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIGRvdWJsZSB2YWx1ZS4KKyAgICAgKiBUaGlzIG1ldGhvZCBzdXBwb3J0cyBmaXhlZC1wb2ludCBub3RhdGlvbi4KKyAgICAgKiBAcGFyYW0gc291cmNlIFZhbHVlIHRvIGJlIGNvbnZlcnRlZDsgbXVzdCBub3QgYmUgSW5mLCAtSW5mLCBOYW4sCisgICAgICogb3IgYSB2YWx1ZSA8PSAwLgorICAgICAqIEBwYXJhbSBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgVGhlIG1vc3QgZnJhY3Rpb25hbCBkaWdpdHMgd2hpY2ggc2hvdWxkCisgICAgICogYmUgY29udmVydGVkLgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCB2b2lkIHNldChkb3VibGUgc291cmNlLCBpbnQgbWF4aW11bUZyYWN0aW9uRGlnaXRzKQorICAgIHsKKyAgICAgICAgc2V0KHNvdXJjZSwgbWF4aW11bUZyYWN0aW9uRGlnaXRzLCB0cnVlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIGRpZ2l0IGxpc3QgdG8gYSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gZG91YmxlIHZhbHVlLgorICAgICAqIFRoaXMgbWV0aG9kIHN1cHBvcnRzIGJvdGggZml4ZWQtcG9pbnQgYW5kIGV4cG9uZW50aWFsIG5vdGF0aW9uLgorICAgICAqIEBwYXJhbSBzb3VyY2UgVmFsdWUgdG8gYmUgY29udmVydGVkOyBtdXN0IG5vdCBiZSBJbmYsIC1JbmYsIE5hbiwKKyAgICAgKiBvciBhIHZhbHVlIDw9IDAuCisgICAgICogQHBhcmFtIG1heGltdW1EaWdpdHMgVGhlIG1vc3QgZnJhY3Rpb25hbCBvciB0b3RhbCBkaWdpdHMgd2hpY2ggc2hvdWxkCisgICAgICogYmUgY29udmVydGVkLgorICAgICAqIEBwYXJhbSBmaXhlZFBvaW50IElmIHRydWUsIHRoZW4gbWF4aW11bURpZ2l0cyBpcyB0aGUgbWF4aW11bQorICAgICAqIGZyYWN0aW9uYWwgZGlnaXRzIHRvIGJlIGNvbnZlcnRlZC4gIElmIGZhbHNlLCB0b3RhbCBkaWdpdHMuCisgICAgICovCisgICAgZmluYWwgdm9pZCBzZXQoZG91YmxlIHNvdXJjZSwgaW50IG1heGltdW1EaWdpdHMsIGJvb2xlYW4gZml4ZWRQb2ludCkKKyAgICB7CisgICAgICAgIGlmIChzb3VyY2UgPT0gMCkgc291cmNlID0gMDsKKyAgICAgICAgLy8gR2VuZXJhdGUgYSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZm9ybSBERERERCwgREREREQuREREREQsIG9yCisgICAgICAgIC8vIERERERERSsvLURERERELgorICAgICAgICBTdHJpbmcgcmVwID0gRG91YmxlLnRvU3RyaW5nKHNvdXJjZSk7CisKKyAgICAgICAgc2V0KHJlcCwgTUFYX0xPTkdfRElHSVRTKTsKKworICAgICAgICBpZiAoZml4ZWRQb2ludCkgeworICAgICAgICAgICAgLy8gVGhlIG5lZ2F0aXZlIG9mIHRoZSBleHBvbmVudCByZXByZXNlbnRzIHRoZSBudW1iZXIgb2YgbGVhZGluZworICAgICAgICAgICAgLy8gemVyb3MgYmV0d2VlbiB0aGUgZGVjaW1hbCBhbmQgdGhlIGZpcnN0IG5vbi16ZXJvIGRpZ2l0LCBmb3IKKyAgICAgICAgICAgIC8vIGEgdmFsdWUgPCAwLjEgKGUuZy4sIGZvciAwLjAwMTIzLCAtZGVjaW1hbEF0ID09IDIpLiAgSWYgdGhpcworICAgICAgICAgICAgLy8gaXMgbW9yZSB0aGFuIHRoZSBtYXhpbXVtIGZyYWN0aW9uIGRpZ2l0cywgdGhlbiB3ZSBoYXZlIGFuIHVuZGVyZmxvdworICAgICAgICAgICAgLy8gZm9yIHRoZSBwcmludGVkIHJlcHJlc2VudGF0aW9uLgorICAgICAgICAgICAgaWYgKC1kZWNpbWFsQXQgPiBtYXhpbXVtRGlnaXRzKSB7CisgICAgICAgICAgICAgICAgY291bnQgPSAwOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoLWRlY2ltYWxBdCA9PSBtYXhpbXVtRGlnaXRzKSB7CisgICAgICAgICAgICAgICAgaWYgKHNob3VsZFJvdW5kVXAoMCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY291bnQgPSAxOworICAgICAgICAgICAgICAgICAgICArK2RlY2ltYWxBdDsKKyAgICAgICAgICAgICAgICAgICAgZGlnaXRzWzBdID0gKGJ5dGUpJzEnOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGNvdW50ID0gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gZWxzZSBmYWxsIHRocm91Z2gKKyAgICAgICAgfQorCisgICAgICAgIC8vIEVsaW1pbmF0ZSB0cmFpbGluZyB6ZXJvcy4KKyAgICAgICAgd2hpbGUgKGNvdW50ID4gMSAmJiBkaWdpdHNbY291bnQgLSAxXSA9PSAnMCcpCisgICAgICAgICAgICAtLWNvdW50OworCisgICAgICAgIC8vIEVsaW1pbmF0ZSBkaWdpdHMgYmV5b25kIG1heGltdW0gZGlnaXRzIHRvIGJlIGRpc3BsYXllZC4KKyAgICAgICAgLy8gUm91bmQgdXAgaWYgYXBwcm9wcmlhdGUuCisgICAgICAgIHJvdW5kKGZpeGVkUG9pbnQgPyAobWF4aW11bURpZ2l0cyArIGRlY2ltYWxBdCkgOiBtYXhpbXVtRGlnaXRzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHaXZlbiBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgZm9ybSBERERERCwgREREREQuREREREQsCisgICAgICogb3IgRERERERFKy8tREREREQsIHNldCB0aGlzIG9iamVjdCdzIHZhbHVlIHRvIGl0LiAgSWdub3JlCisgICAgICogYW55IGxlYWRpbmcgJy0nLgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBzZXQoU3RyaW5nIHJlcCwgaW50IG1heENvdW50KSB7CisgICAgICAgIGRlY2ltYWxBdCA9IC0xOworICAgICAgICBjb3VudCA9IDA7CisgICAgICAgIGludCBleHBvbmVudCA9IDA7CisgICAgICAgIC8vIE51bWJlciBvZiB6ZXJvcyBiZXR3ZWVuIGRlY2ltYWwgcG9pbnQgYW5kIGZpcnN0IG5vbi16ZXJvIGRpZ2l0IGFmdGVyCisgICAgICAgIC8vIGRlY2ltYWwgcG9pbnQsIGZvciBudW1iZXJzIDwgMS4KKyAgICAgICAgaW50IGxlYWRpbmdaZXJvc0FmdGVyRGVjaW1hbCA9IDA7CisgICAgICAgIGJvb2xlYW4gbm9uWmVyb0RpZ2l0U2VlbiA9IGZhbHNlOworICAgICAgICAvLyBTa2lwIG92ZXIgbGVhZGluZyAnLScKKyAgICAgICAgaW50IGk9MDsKKyAgICAgICAgaWYgKHJlcC5jaGFyQXQoaSkgPT0gJy0nKSB7CisgICAgICAgICAgICArK2k7CisgICAgICAgIH0KKyAgICAgICAgZm9yICg7IGkgPCByZXAubGVuZ3RoKCk7ICsraSkgeworICAgICAgICAgICAgY2hhciBjID0gcmVwLmNoYXJBdChpKTsKKyAgICAgICAgICAgIGlmIChjID09ICcuJykgeworICAgICAgICAgICAgICAgIGRlY2ltYWxBdCA9IGNvdW50OworICAgICAgICAgICAgfSBlbHNlIGlmIChjID09ICdlJyB8fCBjID09ICdFJykgeworICAgICAgICAgICAgICAgICsraTsKKyAgICAgICAgICAgICAgICAvLyBJbnRlZ2VyLnBhcnNlSW50IGRvZXNuJ3QgaGFuZGxlIGxlYWRpbmcgJysnIHNpZ25zCisgICAgICAgICAgICAgICAgaWYgKHJlcC5jaGFyQXQoaSkgPT0gJysnKSB7CisgICAgICAgICAgICAgICAgICAgICsraTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZXhwb25lbnQgPSBJbnRlZ2VyLnZhbHVlT2YocmVwLnN1YnN0cmluZyhpKSkuaW50VmFsdWUoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoY291bnQgPCBtYXhDb3VudCkgeworICAgICAgICAgICAgICAgIGlmICghbm9uWmVyb0RpZ2l0U2VlbikgeworICAgICAgICAgICAgICAgICAgICBub25aZXJvRGlnaXRTZWVuID0gKGMgIT0gJzAnKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFub25aZXJvRGlnaXRTZWVuICYmIGRlY2ltYWxBdCAhPSAtMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgKytsZWFkaW5nWmVyb3NBZnRlckRlY2ltYWw7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAobm9uWmVyb0RpZ2l0U2VlbikgeworICAgICAgICAgICAgICAgICAgICBlbnN1cmVDYXBhY2l0eShjb3VudCsxLCBjb3VudCk7CisgICAgICAgICAgICAgICAgICAgIGRpZ2l0c1tjb3VudCsrXSA9IChieXRlKWM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChkZWNpbWFsQXQgPT0gLTEpIHsKKyAgICAgICAgICAgIGRlY2ltYWxBdCA9IGNvdW50OworICAgICAgICB9CisgICAgICAgIGRlY2ltYWxBdCArPSBleHBvbmVudCAtIGxlYWRpbmdaZXJvc0FmdGVyRGVjaW1hbDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0cnVuY2F0aW5nIHRoZSByZXByZXNlbnRhdGlvbiB0byB0aGUgZ2l2ZW4gbnVtYmVyCisgICAgICogb2YgZGlnaXRzIHdpbGwgcmVzdWx0IGluIGFuIGluY3JlbWVudCB0byB0aGUgbGFzdCBkaWdpdC4gIFRoaXMKKyAgICAgKiBtZXRob2QgaW1wbGVtZW50cyBoYWxmLWV2ZW4gcm91bmRpbmcsIHRoZSBkZWZhdWx0IHJvdW5kaW5nIG1vZGUuCisgICAgICogW2JuZl0KKyAgICAgKiBAcGFyYW0gbWF4aW11bURpZ2l0cyB0aGUgbnVtYmVyIG9mIGRpZ2l0cyB0byBrZWVwLCBmcm9tIDAgdG8KKyAgICAgKiA8Y29kZT5jb3VudC0xPC9jb2RlPi4gIElmIDAsIHRoZW4gYWxsIGRpZ2l0cyBhcmUgcm91bmRlZCBhd2F5LCBhbmQKKyAgICAgKiB0aGlzIG1ldGhvZCByZXR1cm5zIHRydWUgaWYgYSBvbmUgc2hvdWxkIGJlIGdlbmVyYXRlZCAoZS5nLiwgZm9ybWF0dGluZworICAgICAqIDAuMDkgd2l0aCAiIy4jIikuCisgICAgICogQHJldHVybiB0cnVlIGlmIGRpZ2l0IDxjb2RlPm1heGltdW1EaWdpdHMtMTwvY29kZT4gc2hvdWxkIGJlCisgICAgICogaW5jcmVtZW50ZWQKKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gc2hvdWxkUm91bmRVcChpbnQgbWF4aW11bURpZ2l0cykgeworICAgICAgICAvLyB2YXJpYWJsZSBub3QgdXNlZCBib29sZWFuIGluY3JlbWVudCA9IGZhbHNlOworICAgICAgICAvLyBJbXBsZW1lbnQgSUVFRSBoYWxmLWV2ZW4gcm91bmRpbmcKKyAgICAgICAgLypCdWcgNDI0MzEwOAorICAgICAgICAgIGZvcm1hdCgwLjApIGdpdmVzICIwLjEiIGlmIHByZWNlZGVkIGJ5IHBhcnNlKCI5OS45OSIpIFtSaWNoYXJkL0dDTF0KKyAgICAgICAgKi8KKyAgICAgICAgaWYgKG1heGltdW1EaWdpdHMgPCBjb3VudCkgeworICAgICAgICAgICAgaWYgKGRpZ2l0c1ttYXhpbXVtRGlnaXRzXSA+ICc1JykgeworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfSBlbHNlIGlmIChkaWdpdHNbbWF4aW11bURpZ2l0c10gPT0gJzUnICkgeworICAgICAgICAgICAgICAgIGZvciAoaW50IGk9bWF4aW11bURpZ2l0cysxOyBpPGNvdW50OyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRpZ2l0c1tpXSAhPSAnMCcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBtYXhpbXVtRGlnaXRzID4gMCAmJiAoZGlnaXRzW21heGltdW1EaWdpdHMtMV0gJSAyICE9IDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSb3VuZCB0aGUgcmVwcmVzZW50YXRpb24gdG8gdGhlIGdpdmVuIG51bWJlciBvZiBkaWdpdHMuCisgICAgICogQHBhcmFtIG1heGltdW1EaWdpdHMgVGhlIG1heGltdW0gbnVtYmVyIG9mIGRpZ2l0cyB0byBiZSBzaG93bi4KKyAgICAgKiBVcG9uIHJldHVybiwgY291bnQgd2lsbCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gbWF4aW11bURpZ2l0cy4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgdm9pZCByb3VuZChpbnQgbWF4aW11bURpZ2l0cykgeyAgICAgICAgCisgICAgICAgIC8vIEVsaW1pbmF0ZSBkaWdpdHMgYmV5b25kIG1heGltdW0gZGlnaXRzIHRvIGJlIGRpc3BsYXllZC4KKyAgICAgICAgLy8gUm91bmQgdXAgaWYgYXBwcm9wcmlhdGUuCisgICAgICAgIC8vIFtibmZdIHJld3JpdHRlbiB0byBmaXggNDE3OTgxOAorICAgICAgICBpZiAobWF4aW11bURpZ2l0cyA+IDAgJiYgbWF4aW11bURpZ2l0cyA8IGNvdW50KSB7CisgICAgICAgICAgICBpZiAoc2hvdWxkUm91bmRVcChtYXhpbXVtRGlnaXRzKSkgeworICAgICAgICAgICAgICAgIC8vIFJvdW5kaW5nIHVwIGludm9sdmVkIGluY3JlbWVudGluZyBkaWdpdHMgZnJvbSBMU0QgdG8gTVNELgorICAgICAgICAgICAgICAgIC8vIEluIG1vc3QgY2FzZXMgdGhpcyBpcyBzaW1wbGUsIGJ1dCBpbiBhIHdvcnN0IGNhc2Ugc2l0dWF0aW9uCisgICAgICAgICAgICAgICAgLy8gKDk5OTkuLjk5KSB3ZSBoYXZlIHRvIGFkanVzdCB0aGUgZGVjaW1hbEF0IHZhbHVlLgorICAgICAgICAgICAgICAgIGZvciAoOzspCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAtLW1heGltdW1EaWdpdHM7CisgICAgICAgICAgICAgICAgICAgIGlmIChtYXhpbXVtRGlnaXRzIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBhbGwgOSdzLCBzbyB3ZSBpbmNyZW1lbnQgdG8gYSBzaW5nbGUgZGlnaXQKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9mIG9uZSBhbmQgYWRqdXN0IHRoZSBleHBvbmVudC4KKyAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2l0c1swXSA9IChieXRlKSAnMSc7CisgICAgICAgICAgICAgICAgICAgICAgICArK2RlY2ltYWxBdDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1heGltdW1EaWdpdHMgPSAwOyAvLyBBZGp1c3QgdGhlIGNvdW50CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICsrZGlnaXRzW21heGltdW1EaWdpdHNdOworICAgICAgICAgICAgICAgICAgICBpZiAoZGlnaXRzW21heGltdW1EaWdpdHNdIDw9ICc5JykgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIC8vIGRpZ2l0c1ttYXhpbXVtRGlnaXRzXSA9ICcwJzsgLy8gVW5uZWNlc3Nhcnkgc2luY2Ugd2UnbGwgdHJ1bmNhdGUgdGhpcworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICArK21heGltdW1EaWdpdHM7IC8vIEluY3JlbWVudCBmb3IgdXNlIGFzIGNvdW50CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb3VudCA9IG1heGltdW1EaWdpdHM7CisgICAgICAgICAgICAvKkJ1ZyA0MjE3NjYxIERlY2ltYWxGb3JtYXQgZm9ybWF0cyAxLjAwMSB0byAiMS4wMCIgaW5zdGVhZCBvZiAiMSIKKyAgICAgICAgICAgICAgRWxpbWluYXRlIHRyYWlsaW5nIHplcm9zLiBbUmljaGFyZC9HQ0xdCisgICAgICAgICAgICAqLworICAgICAgICAgICAgd2hpbGUgKGNvdW50ID4gMSAmJiBkaWdpdHNbY291bnQtMV0gPT0gJzAnKSB7CisgICAgICAgICAgICAgICAgLS1jb3VudDsKKyAgICAgICAgICAgIH0gLy9bUmljaGFyZC9HQ0xdCisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBVdGlsaXR5IHJvdXRpbmUgdG8gc2V0IHRoZSB2YWx1ZSBvZiB0aGUgZGlnaXQgbGlzdCBmcm9tIGEgbG9uZworICAgICAqLworICAgIHB1YmxpYyBmaW5hbCB2b2lkIHNldChsb25nIHNvdXJjZSkKKyAgICB7CisgICAgICAgIHNldChzb3VyY2UsIDApOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCB0aGUgZGlnaXQgbGlzdCB0byBhIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBsb25nIHZhbHVlLgorICAgICAqIEBwYXJhbSBzb3VyY2UgVmFsdWUgdG8gYmUgY29udmVydGVkOyBtdXN0IGJlID49IDAgb3IgPT0KKyAgICAgKiBMb25nLk1JTl9WQUxVRS4KKyAgICAgKiBAcGFyYW0gbWF4aW11bURpZ2l0cyBUaGUgbW9zdCBkaWdpdHMgd2hpY2ggc2hvdWxkIGJlIGNvbnZlcnRlZC4KKyAgICAgKiBJZiBtYXhpbXVtRGlnaXRzIGlzIGxvd2VyIHRoYW4gdGhlIG51bWJlciBvZiBzaWduaWZpY2FudCBkaWdpdHMKKyAgICAgKiBpbiBzb3VyY2UsIHRoZSByZXByZXNlbnRhdGlvbiB3aWxsIGJlIHJvdW5kZWQuICBJZ25vcmVkIGlmIDw9IDAuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHZvaWQgc2V0KGxvbmcgc291cmNlLCBpbnQgbWF4aW11bURpZ2l0cykKKyAgICB7CisgICAgICAgIC8vIFRoaXMgbWV0aG9kIGRvZXMgbm90IGV4cGVjdCBhIG5lZ2F0aXZlIG51bWJlci4gSG93ZXZlciwKKyAgICAgICAgLy8gInNvdXJjZSIgY2FuIGJlIGEgTG9uZy5NSU5fVkFMVUUgKC05MjIzMzcyMDM2ODU0Nzc1ODA4KSwKKyAgICAgICAgLy8gaWYgdGhlIG51bWJlciBiZWluZyBmb3JtYXR0ZWQgaXMgYSBMb25nLk1JTl9WQUxVRS4gIEluIHRoYXQKKyAgICAgICAgLy8gY2FzZSwgaXQgd2lsbCBiZSBmb3JtYXR0ZWQgYXMgLUxvbmcuTUlOX1ZBTFVFLCBhIG51bWJlcgorICAgICAgICAvLyB3aGljaCBpcyBvdXRzaWRlIHRoZSBsZWdhbCByYW5nZSBvZiBhIGxvbmcsIGJ1dCB3aGljaCBjYW4KKyAgICAgICAgLy8gYmUgcmVwcmVzZW50ZWQgYnkgRGlnaXRMaXN0LgorICAgICAgICAvLyBbTkVXXSBGYXN0ZXIgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaWYgKHNvdXJjZSA8PSAwKSB7CisgICAgICAgICAgICBpZiAoc291cmNlID09IExvbmcuTUlOX1ZBTFVFKSB7CisgICAgICAgICAgICAgICAgZGVjaW1hbEF0ID0gY291bnQgPSBNQVhfTE9OR19ESUdJVFM7CisgICAgICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShMT05HX01JTl9SRVAsIDAsIGRpZ2l0cywgMCwgY291bnQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBjb3VudCA9IDA7CisgICAgICAgICAgICAgICAgZGVjaW1hbEF0ID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGludCBsZWZ0ID0gTUFYX0xPTkdfRElHSVRTOworICAgICAgICAgICAgaW50IHJpZ2h0OworICAgICAgICAgICAgd2hpbGUgKHNvdXJjZSA+IDApIHsKKyAgICAgICAgICAgICAgICBkaWdpdHNbLS1sZWZ0XSA9IChieXRlKSAoKChsb25nKSAnMCcpICsgKHNvdXJjZSAlIDEwKSk7CisgICAgICAgICAgICAgICAgc291cmNlIC89IDEwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVjaW1hbEF0ID0gTUFYX0xPTkdfRElHSVRTLWxlZnQ7CisgICAgICAgICAgICAvLyBEb24ndCBjb3B5IHRyYWlsaW5nIHplcm9zCisgICAgICAgICAgICAvLyB3ZSBhcmUgZ3VhcmFudGVlZCB0aGF0IHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBub24temVybyBkaWdpdCwKKyAgICAgICAgICAgIC8vIHNvIHdlIGRvbid0IGhhdmUgdG8gY2hlY2sgbG93ZXIgYm91bmRzCisgICAgICAgICAgICBmb3IgKHJpZ2h0ID0gTUFYX0xPTkdfRElHSVRTIC0gMTsgZGlnaXRzW3JpZ2h0XSA9PSAoYnl0ZSkgJzAnOyAtLXJpZ2h0KSB7fQorICAgICAgICAgICAgY291bnQgPSByaWdodCAtIGxlZnQgKyAxOworICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShkaWdpdHMsIGxlZnQsIGRpZ2l0cywgMCwgY291bnQpOworICAgICAgICB9ICAgICAgICAKKyAgICAgICAgaWYgKG1heGltdW1EaWdpdHMgPiAwKSByb3VuZChtYXhpbXVtRGlnaXRzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIGRpZ2l0IGxpc3QgdG8gYSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gQmlnSW50ZWdlciB2YWx1ZS4KKyAgICAgKiBbYm5mXQorICAgICAqIEBwYXJhbSBzb3VyY2UgVmFsdWUgdG8gYmUgY29udmVydGVkCisgICAgICogQHBhcmFtIG1heGltdW1EaWdpdHMgVGhlIG1vc3QgZGlnaXRzIHdoaWNoIHNob3VsZCBiZSBjb252ZXJ0ZWQuCisgICAgICogSWYgbWF4aW11bURpZ2l0cyBpcyBsb3dlciB0aGFuIHRoZSBudW1iZXIgb2Ygc2lnbmlmaWNhbnQgZGlnaXRzCisgICAgICogaW4gc291cmNlLCB0aGUgcmVwcmVzZW50YXRpb24gd2lsbCBiZSByb3VuZGVkLiAgSWdub3JlZCBpZiA8PSAwLgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCB2b2lkIHNldChCaWdJbnRlZ2VyIHNvdXJjZSwgaW50IG1heGltdW1EaWdpdHMpIHsKKyAgICAgICAgU3RyaW5nIHN0cmluZ0RpZ2l0cyA9IHNvdXJjZS50b1N0cmluZygpOworCisgICAgICAgIGNvdW50ID0gZGVjaW1hbEF0ID0gc3RyaW5nRGlnaXRzLmxlbmd0aCgpOworCisgICAgICAgIC8vIERvbid0IGNvcHkgdHJhaWxpbmcgemVyb3MKKyAgICAgICAgd2hpbGUgKGNvdW50ID4gMSAmJiBzdHJpbmdEaWdpdHMuY2hhckF0KGNvdW50IC0gMSkgPT0gJzAnKSAtLWNvdW50OworCisgICAgICAgIGludCBvZmZzZXQgPSAwOworICAgICAgICBpZiAoc3RyaW5nRGlnaXRzLmNoYXJBdCgwKSA9PSAnLScpIHsKKyAgICAgICAgICAgICsrb2Zmc2V0OworICAgICAgICAgICAgLS1jb3VudDsKKyAgICAgICAgICAgIC0tZGVjaW1hbEF0OworICAgICAgICB9CisKKyAgICAgICAgZW5zdXJlQ2FwYWNpdHkoY291bnQsIDApOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgICAgIGRpZ2l0c1tpXSA9IChieXRlKSBzdHJpbmdEaWdpdHMuY2hhckF0KGkgKyBvZmZzZXQpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1heGltdW1EaWdpdHMgPiAwKSByb3VuZChtYXhpbXVtRGlnaXRzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbnRlcm5hbCBtZXRob2QgdGhhdCBzZXRzIHRoaXMgZGlnaXQgbGlzdCB0byByZXByZXNlbnQgdGhlCisgICAgICogZ2l2ZW4gdmFsdWUuICBUaGUgdmFsdWUgaXMgZ2l2ZW4gYXMgYSBTdHJpbmcgb2YgdGhlIGZvcm1hdAorICAgICAqIHJldHVybmVkIGJ5IEJpZ0RlY2ltYWwuCisgICAgICogQHBhcmFtIHN0cmluZ0RpZ2l0cyB2YWx1ZSB0byBiZSByZXByZXNlbnRlZCB3aXRoIHRoZSBmb2xsb3dpbmcKKyAgICAgKiBzeW50YXgsIGV4cHJlc3NlZCBhcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbjogLT9cZCouP1xkKgorICAgICAqIE11c3Qgbm90IGJlIGFuIGVtcHR5IHN0cmluZy4KKyAgICAgKiBAcGFyYW0gbWF4aW11bURpZ2l0cyBUaGUgbW9zdCBkaWdpdHMgd2hpY2ggc2hvdWxkIGJlIGNvbnZlcnRlZC4KKyAgICAgKiBJZiBtYXhpbXVtRGlnaXRzIGlzIGxvd2VyIHRoYW4gdGhlIG51bWJlciBvZiBzaWduaWZpY2FudCBkaWdpdHMKKyAgICAgKiBpbiBzb3VyY2UsIHRoZSByZXByZXNlbnRhdGlvbiB3aWxsIGJlIHJvdW5kZWQuICBJZ25vcmVkIGlmIDw9IDAuCisgICAgICogQHBhcmFtIGZpeGVkUG9pbnQgSWYgdHJ1ZSwgdGhlbiBtYXhpbXVtRGlnaXRzIGlzIHRoZSBtYXhpbXVtCisgICAgICogZnJhY3Rpb25hbCBkaWdpdHMgdG8gYmUgY29udmVydGVkLiAgSWYgZmFsc2UsIHRvdGFsIGRpZ2l0cy4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgc2V0QmlnRGVjaW1hbERpZ2l0cyhTdHJpbmcgc3RyaW5nRGlnaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtYXhpbXVtRGlnaXRzLCBib29sZWFuIGZpeGVkUG9pbnQpIHsKKy8vfCAgICAgICAgLy8gRmluZCB0aGUgZmlyc3Qgbm9uLXplcm8gZGlnaXQsIHRoZSBkZWNpbWFsLCBhbmQgdGhlIGxhc3Qgbm9uLXplcm8gZGlnaXQuCisvL3wgICAgICAgIGludCBmaXJzdD0tMSwgbGFzdD1zdHJpbmdEaWdpdHMubGVuZ3RoKCktMSwgZGVjaW1hbD0tMTsKKy8vfCAgICAgICAgZm9yIChpbnQgaT0wOyAoZmlyc3Q8MCB8fCBkZWNpbWFsPDApICYmIGk8PWxhc3Q7ICsraSkgeworLy98ICAgICAgICAgICAgY2hhciBjID0gc3RyaW5nRGlnaXRzLmNoYXJBdChpKTsKKy8vfCAgICAgICAgICAgIGlmIChjID09ICcuJykgeworLy98ICAgICAgICAgICAgICAgIGRlY2ltYWwgPSBpOworLy98ICAgICAgICAgICAgfSBlbHNlIGlmIChmaXJzdCA8IDAgJiYgKGMgPj0gJzEnICYmIGMgPD0gJzknKSkgeworLy98ICAgICAgICAgICAgICAgIGZpcnN0ID0gaTsKKy8vfCAgICAgICAgICAgIH0KKy8vfCAgICAgICAgfQorLy98CisvL3wgICAgICAgIGlmIChmaXJzdCA8IDApIHsKKy8vfCAgICAgICAgICAgIGNsZWFyKCk7CisvL3wgICAgICAgICAgICByZXR1cm47CisvL3wgICAgICAgIH0KKy8vfAorLy98ICAgICAgICAvLyBBdCB0aGlzIHBvaW50IHdlIGtub3cgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIG5vbi16ZXJvIGRpZ2l0LCBzbyB0aGUKKy8vfCAgICAgICAgLy8gZm9sbG93aW5nIGxvb3AgaXMgc2FmZS4KKy8vfCAgICAgICAgZm9yICg7OykgeworLy98ICAgICAgICAgICAgY2hhciBjID0gc3RyaW5nRGlnaXRzLmNoYXJBdChsYXN0KTsKKy8vfCAgICAgICAgICAgIGlmIChjICE9ICcwJyAmJiBjICE9ICcuJykgeworLy98ICAgICAgICAgICAgICAgIGJyZWFrOworLy98ICAgICAgICAgICAgfQorLy98ICAgICAgICAgICAgLS1sYXN0OworLy98ICAgICAgICB9CisvL3wKKy8vfCAgICAgICAgaWYgKGRlY2ltYWwgPCAwKSB7CisvL3wgICAgICAgICAgICBkZWNpbWFsID0gc3RyaW5nRGlnaXRzLmxlbmd0aCgpOworLy98ICAgICAgICB9CisvL3wKKy8vfCAgICAgICAgY291bnQgPSBsYXN0IC0gZmlyc3Q7CisvL3wgICAgICAgIGlmIChkZWNpbWFsIDwgZmlyc3QgfHwgZGVjaW1hbCA+IGxhc3QpIHsKKy8vfCAgICAgICAgICAgICsrY291bnQ7CisvL3wgICAgICAgIH0KKy8vfCAgICAgICAgZGVjaW1hbEF0ID0gZGVjaW1hbCAtIGZpcnN0OworLy98ICAgICAgICBpZiAoZGVjaW1hbEF0IDwgMCkgeworLy98ICAgICAgICAgICAgKytkZWNpbWFsQXQ7CisvL3wgICAgICAgIH0KKy8vfAorLy98ICAgICAgICBlbnN1cmVDYXBhY2l0eShjb3VudCwgMCk7CisvL3wgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworLy98ICAgICAgICAgICAgZGlnaXRzW2ldID0gKGJ5dGUpIHN0cmluZ0RpZ2l0cy5jaGFyQXQoZmlyc3QrKyk7CisvL3wgICAgICAgICAgICBpZiAoZmlyc3QgPT0gZGVjaW1hbCkgeworLy98ICAgICAgICAgICAgICAgICsrZmlyc3Q7CisvL3wgICAgICAgICAgICB9CisvL3wgICAgICAgIH0KKworICAgICAgICAvLyBUaGUgbWF4RGlnaXRzIGhlcmUgY291bGQgYWxzbyBiZSBJbnRlZ2VyLk1BWF9WQUxVRQorICAgICAgICBzZXQoc3RyaW5nRGlnaXRzLCBzdHJpbmdEaWdpdHMubGVuZ3RoKCkpOworCisgICAgICAgIC8vIEVsaW1pbmF0ZSBkaWdpdHMgYmV5b25kIG1heGltdW0gZGlnaXRzIHRvIGJlIGRpc3BsYXllZC4KKyAgICAgICAgLy8gUm91bmQgdXAgaWYgYXBwcm9wcmlhdGUuCisgICAgICAgIHJvdW5kKGZpeGVkUG9pbnQgPyAobWF4aW11bURpZ2l0cyArIGRlY2ltYWxBdCkgOiBtYXhpbXVtRGlnaXRzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIGRpZ2l0IGxpc3QgdG8gYSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gQmlnRGVjaW1hbCB2YWx1ZS4KKyAgICAgKiBbYm5mXQorICAgICAqIEBwYXJhbSBzb3VyY2UgVmFsdWUgdG8gYmUgY29udmVydGVkCisgICAgICogQHBhcmFtIG1heGltdW1EaWdpdHMgVGhlIG1vc3QgZGlnaXRzIHdoaWNoIHNob3VsZCBiZSBjb252ZXJ0ZWQuCisgICAgICogSWYgbWF4aW11bURpZ2l0cyBpcyBsb3dlciB0aGFuIHRoZSBudW1iZXIgb2Ygc2lnbmlmaWNhbnQgZGlnaXRzCisgICAgICogaW4gc291cmNlLCB0aGUgcmVwcmVzZW50YXRpb24gd2lsbCBiZSByb3VuZGVkLiAgSWdub3JlZCBpZiA8PSAwLgorICAgICAqIEBwYXJhbSBmaXhlZFBvaW50IElmIHRydWUsIHRoZW4gbWF4aW11bURpZ2l0cyBpcyB0aGUgbWF4aW11bQorICAgICAqIGZyYWN0aW9uYWwgZGlnaXRzIHRvIGJlIGNvbnZlcnRlZC4gIElmIGZhbHNlLCB0b3RhbCBkaWdpdHMuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHZvaWQgc2V0KGphdmEubWF0aC5CaWdEZWNpbWFsIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1heGltdW1EaWdpdHMsIGJvb2xlYW4gZml4ZWRQb2ludCkgeworICAgICAgICBzZXRCaWdEZWNpbWFsRGlnaXRzKHNvdXJjZS50b1N0cmluZygpLCBtYXhpbXVtRGlnaXRzLCBmaXhlZFBvaW50KTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIFNldCB0aGUgZGlnaXQgbGlzdCB0byBhIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBCaWdEZWNpbWFsIHZhbHVlLgorICAgICAqIFtibmZdCisgICAgICogQHBhcmFtIHNvdXJjZSBWYWx1ZSB0byBiZSBjb252ZXJ0ZWQKKyAgICAgKiBAcGFyYW0gbWF4aW11bURpZ2l0cyBUaGUgbW9zdCBkaWdpdHMgd2hpY2ggc2hvdWxkIGJlIGNvbnZlcnRlZC4KKyAgICAgKiBJZiBtYXhpbXVtRGlnaXRzIGlzIGxvd2VyIHRoYW4gdGhlIG51bWJlciBvZiBzaWduaWZpY2FudCBkaWdpdHMKKyAgICAgKiBpbiBzb3VyY2UsIHRoZSByZXByZXNlbnRhdGlvbiB3aWxsIGJlIHJvdW5kZWQuICBJZ25vcmVkIGlmIDw9IDAuCisgICAgICogQHBhcmFtIGZpeGVkUG9pbnQgSWYgdHJ1ZSwgdGhlbiBtYXhpbXVtRGlnaXRzIGlzIHRoZSBtYXhpbXVtCisgICAgICogZnJhY3Rpb25hbCBkaWdpdHMgdG8gYmUgY29udmVydGVkLiAgSWYgZmFsc2UsIHRvdGFsIGRpZ2l0cy4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgdm9pZCBzZXQoY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1heGltdW1EaWdpdHMsIGJvb2xlYW4gZml4ZWRQb2ludCkgeworICAgICAgICBzZXRCaWdEZWNpbWFsRGlnaXRzKHNvdXJjZS50b1N0cmluZygpLCBtYXhpbXVtRGlnaXRzLCBmaXhlZFBvaW50KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBlcXVhbGl0eSB0ZXN0IGJldHdlZW4gdHdvIGRpZ2l0IGxpc3RzLgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb2JqKSB7CisgICAgICAgIGlmICh0aGlzID09IG9iaikgICAgICAgICAgICAgICAgICAgICAgLy8gcXVpY2sgY2hlY2sKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAoIShvYmogaW5zdGFuY2VvZiBEaWdpdExpc3QpKSAgICAgICAgIC8vICgxKSBzYW1lIG9iamVjdD8KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgRGlnaXRMaXN0IG90aGVyID0gKERpZ2l0TGlzdCkgb2JqOworICAgICAgICBpZiAoY291bnQgIT0gb3RoZXIuY291bnQgfHwKKyAgICAgICAgZGVjaW1hbEF0ICE9IG90aGVyLmRlY2ltYWxBdCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICAgICAgaWYgKGRpZ2l0c1tpXSAhPSBvdGhlci5kaWdpdHNbaV0pCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZW5lcmF0ZXMgdGhlIGhhc2ggY29kZSBmb3IgdGhlIGRpZ2l0IGxpc3QuCisgICAgICovCisgICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKKyAgICAgICAgaW50IGhhc2hjb2RlID0gZGVjaW1hbEF0OworCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgICAgIGhhc2hjb2RlID0gaGFzaGNvZGUgKiAzNyArIGRpZ2l0c1tpXTsKKworICAgICAgICByZXR1cm4gaGFzaGNvZGU7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0cnVlIGlmIHRoaXMgRGlnaXRMaXN0IHJlcHJlc2VudHMgTG9uZy5NSU5fVkFMVUU7CisgICAgICogZmFsc2UsIG90aGVyd2lzZS4gIFRoaXMgaXMgcmVxdWlyZWQgc28gdGhhdCBnZXRMb25nKCkgd29ya3MuCisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIGlzTG9uZ01JTl9WQUxVRSgpCisgICAgeworICAgICAgICBpZiAoZGVjaW1hbEF0ICE9IGNvdW50IHx8IGNvdW50ICE9IE1BWF9MT05HX0RJR0lUUykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZGlnaXRzW2ldICE9IExPTkdfTUlOX1JFUFtpXSkgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgYnl0ZVtdIExPTkdfTUlOX1JFUDsKKworICAgIHN0YXRpYworICAgIHsKKyAgICAgICAgLy8gU3RvcmUgdGhlIHJlcHJlc2VudGF0aW9uIG9mIExPTkdfTUlOIHdpdGhvdXQgdGhlIGxlYWRpbmcgJy0nCisgICAgICAgIFN0cmluZyBzID0gTG9uZy50b1N0cmluZyhMb25nLk1JTl9WQUxVRSk7CisgICAgICAgIExPTkdfTUlOX1JFUCA9IG5ldyBieXRlW01BWF9MT05HX0RJR0lUU107CisgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IE1BWF9MT05HX0RJR0lUUzsgKytpKQorICAgICAgICB7CisgICAgICAgICAgICBMT05HX01JTl9SRVBbaV0gPSAoYnl0ZSlzLmNoYXJBdChpICsgMSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGZsb29yIG9mIHRoZSBsb2cgYmFzZSAxMCBvZiBhIGdpdmVuIGRvdWJsZS4KKyAgICAgKiBUaGlzIG1ldGhvZCBjb21wZW5zYXRlcyBmb3IgaW5hY2N1cmFjaWVzIHdoaWNoIGFyaXNlIG5hdHVyYWxseSB3aGVuCisgICAgICogY29tcHV0aW5nIGxvZ3MsIGFuZCBhbHdheXMgZ2l2ZSB0aGUgY29ycmVjdCB2YWx1ZS4gIFRoZSBwYXJhbWV0ZXIKKyAgICAgKiBtdXN0IGJlIHBvc2l0aXZlIGFuZCBmaW5pdGUuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IGxvZzEwKGRvdWJsZSBkKQorICAgIHsKKyAgICAgICAgLy8gVGhlIHJlYXNvbiB0aGlzIHJvdXRpbmUgaXMgbmVlZGVkIGlzIHRoYXQgc2ltcGx5IHRha2luZyB0aGUKKyAgICAgICAgLy8gbG9nIGFuZCBkaXZpZGluZyBieSBsb2cxMCB5aWVsZHMgYSByZXN1bHQgd2hpY2ggbWF5IGJlIG9mZgorICAgICAgICAvLyBieSAxIGR1ZSB0byByb3VuZGluZyBlcnJvcnMuICBGb3IgZXhhbXBsZSwgdGhlIG5haXZlIGxvZzEwCisgICAgICAgIC8vIG9mIDEuMGUzMDAgdGFrZW4gdGhpcyB3YXkgaXMgMjk5LCByYXRoZXIgdGhhbiAzMDAuCisgICAgICAgIGRvdWJsZSBsb2cxMCA9IE1hdGgubG9nKGQpIC8gTE9HMTA7CisgICAgICAgIGludCBpbG9nMTAgPSAoaW50KU1hdGguZmxvb3IobG9nMTApOworICAgICAgICAvLyBQb3NpdGl2ZSBsb2dzIGNvdWxkIGJlIHRvbyBzbWFsbCwgZS5nLiAwLjk5IGluc3RlYWQgb2YgMS4wCisgICAgICAgIGlmIChsb2cxMCA+IDAgJiYgZCA+PSBNYXRoLnBvdygxMCwgaWxvZzEwICsgMSkpCisgICAgICAgIHsKKyAgICAgICAgICAgICsraWxvZzEwOworICAgICAgICB9CisgICAgICAgIC8vIE5lZ2F0aXZlIGxvZ3MgY291bGQgYmUgdG9vIGJpZywgZS5nLiAtMC45OSBpbnN0ZWFkIG9mIC0xLjAKKyAgICAgICAgZWxzZSBpZiAobG9nMTAgPCAwICYmIGQgPCBNYXRoLnBvdygxMCwgaWxvZzEwKSkKKyAgICAgICAgeworICAgICAgICAgICAgLS1pbG9nMTA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGlsb2cxMDsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBkb3VibGUgTE9HMTAgPSBNYXRoLmxvZygxMC4wKTsKKworICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKQorICAgIHsKKyAgICAgICAgaWYgKGlzWmVybygpKSByZXR1cm4gIjAiOworICAgICAgICBTdHJpbmdCdWZmZXIgYnVmID0gbmV3IFN0cmluZ0J1ZmZlcigiMC4iKTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPGNvdW50OyArK2kpIGJ1Zi5hcHBlbmQoKGNoYXIpZGlnaXRzW2ldKTsKKyAgICAgICAgYnVmLmFwcGVuZCgieDEwXiIpOworICAgICAgICBidWYuYXBwZW5kKGRlY2ltYWxBdCk7CisgICAgICAgIHJldHVybiBidWYudG9TdHJpbmcoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvdGV4dC9Fc2NhcGVUcmFuc2xpdGVyYXRvci5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvRXNjYXBlVHJhbnNsaXRlcmF0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5kNDBhMWFmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvRXNjYXBlVHJhbnNsaXRlcmF0b3IuamF2YQpAQCAtMCwwICsxLDIwMSBAQAorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICBDb3B5cmlnaHQgKGMpIDIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyogICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICBEYXRlICAgICAgICBOYW1lICAgICAgICBEZXNjcmlwdGlvbgorKiAgIDExLzE5LzIwMDEgIGFsaXUgICAgICAgIENyZWF0aW9uLgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KK3BhY2thZ2UgY29tLmlibS5pY3UudGV4dDsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLlV0aWxpdHk7CisKKy8qKgorICogQSB0cmFuc2xpdGVyYXRvciB0aGF0IGNvbnZlcnRzIFVuaWNvZGUgY2hhcmFjdGVycyB0byBhbiBlc2NhcGUKKyAqIGZvcm0uICBFeGFtcGxlcyBvZiBlc2NhcGUgZm9ybXMgYXJlICJVKzRFMDEiIGFuZCAiJiN4MTBGRkZGOyIuCisgKiBFc2NhcGUgZm9ybXMgaGF2ZSBhIHByZWZpeCBhbmQgc3VmZml4LCBlaXRoZXIgb2Ygd2hpY2ggbWF5IGJlCisgKiBlbXB0eSwgYSByYWRpeCwgdHlwaWNhbGx5IDE2IG9yIDEwLCBhIG1pbmltdW0gZGlnaXQgY291bnQsCisgKiB0eXBpY2FsbHkgMSwgNCwgb3IgOCwgYW5kIGEgYm9vbGVhbiB0aGF0IHNwZWNpZmllcyB3aGV0aGVyCisgKiBzdXBwbGVtZW50YWwgY2hhcmFjdGVycyBhcmUgaGFuZGxlZCBhcyAzMi1iaXQgY29kZSBwb2ludHMgb3IgYXMgdHdvCisgKiAxNi1iaXQgY29kZSB1bml0cy4gIE1vc3QgZXNjYXBlIGZvcm1zIGhhbmRsZSAzMi1iaXQgY29kZSBwb2ludHMsCisgKiBidXQgc29tZSwgc3VjaCBhcyB0aGUgSmF2YSBmb3JtLCBpbnRlbnRpb25hbGx5IGJyZWFrIHRoZW0gaW50byB0d28KKyAqIHN1cnJvZ2F0ZSBwYWlycywgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCisgKgorICogPHA+U29tZSBlc2NhcGUgZm9ybXMgYWN0dWFsbHkgaGF2ZSB0d28gZGlmZmVyZW50IHBhdHRlcm5zLCBvbmUgZm9yCisgKiBCTVAgY2hhcmFjdGVycyAoMC4uRkZGRikgYW5kIG9uZSBmb3Igc3VwcGxlbWVudHMgKD5GRkZGKS4gIFRvCisgKiBoYW5kbGUgdGhpcywgYSBzZWNvbmQgRXNjYXBlVHJhbnNsaXRlcmF0b3IgbWF5IGJlIGRlZmluZWQgdGhhdAorICogc3BlY2lmaWVzIHRoZSBwYXR0ZXJuIHRvIGJlIHByb2R1Y2VkIGZvciBzdXBwbGVtZW50YWxzLiAgQW4gZXhhbXBsZQorICogb2YgYSBmb3JtIHRoYXQgcmVxdWlyZXMgdGhpcyBpcyB0aGUgQyBmb3JtLCB3aGljaCB1c2VzICJcXHVGRkZGIgorICogZm9yIEJNUCBjaGFyYWN0ZXJzIGFuZCAiXFxVMDAxMEZGRkYiIGZvciBzdXBwbGVtZW50YWxzLgorICoKKyAqIDxwPlRoaXMgY2xhc3MgaXMgcGFja2FnZSBwcml2YXRlLiAgSXQgcmVnaXN0ZXJzIHNldmVyYWwgc3RhbmRhcmQKKyAqIHZhcmlhbnRzIHdpdGggdGhlIHN5c3RlbSB3aGljaCBhcmUgdGhlbiBhY2Nlc3NlZCB2aWEgdGhlaXIgSURzLgorICoKKyAqIEBhdXRob3IgQWxhbiBMaXUKKyAqIEB2ZXJzaW9uICRSQ1NmaWxlOiBFc2NhcGVUcmFuc2xpdGVyYXRvci5qYXZhLHYgJCAkUmV2aXNpb246IDEuNSAkICREYXRlOiAyMDAyLzAyLzI1IDIyOjQzOjU4ICQKKyAqLworY2xhc3MgRXNjYXBlVHJhbnNsaXRlcmF0b3IgZXh0ZW5kcyBUcmFuc2xpdGVyYXRvciB7CisKKyAgICAvKioKKyAgICAgKiBUaGUgcHJlZml4IG9mIHRoZSBlc2NhcGUgZm9ybTsgbWF5IGJlIGVtcHR5LCBidXQgdXN1YWxseSBpc24ndC4KKyAgICAgKiBNYXkgbm90IGJlIG51bGwuCisgICAgICovCisgICAgcHJpdmF0ZSBTdHJpbmcgcHJlZml4OworCisgICAgLyoqCisgICAgICogVGhlIHByZWZpeCBvZiB0aGUgZXNjYXBlIGZvcm07IG9mdGVuIGVtcHR5LiAgTWF5IG5vdCBiZSBudWxsLgorICAgICAqLworICAgIHByaXZhdGUgU3RyaW5nIHN1ZmZpeDsKKworICAgIC8qKgorICAgICAqIFRoZSByYWRpeCB0byBkaXNwbGF5IHRoZSBudW1iZXIgaW4uICBUeXBpY2FsbHkgMTYgb3IgMTAuICBNdXN0CisgICAgICogYmUgaW4gdGhlIHJhbmdlIDIgdG8gMzYuCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgcmFkaXg7CisKKyAgICAvKioKKyAgICAgKiBUaGUgbWluaW11bSBudW1iZXIgb2YgZGlnaXRzLiAgVHlwaWNhbGx5IDEsIDQsIG9yIDguICBWYWx1ZXMKKyAgICAgKiBsZXNzIHRoYW4gMSBhcmUgZXF1aXZhbGVudCB0byAxLgorICAgICAqLworICAgIHByaXZhdGUgaW50IG1pbkRpZ2l0czsKKworICAgIC8qKgorICAgICAqIElmIHRydWUsIHN1cHBsZW1lbnRhbHMgYXJlIGhhbmRsZWQgYXMgMzItYml0IGNvZGUgcG9pbnRzLiAgSWYKKyAgICAgKiBmYWxzZSwgdGhleSBhcmUgaGFuZGxlZCBhcyB0d28gMTYtYml0IGNvZGUgdW5pdHMuCisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIGdyb2tTdXBwbGVtZW50YWxzOworCisgICAgLyoqCisgICAgICogVGhlIGZvcm0gdG8gYmUgdXNlZCBmb3Igc3VwcGxlbWVudGFscy4gIElmIHRoaXMgaXMgbnVsbCB0aGVuCisgICAgICogdGhlIHNhbWUgZm9ybSBpcyB1c2VkIGZvciBCTVAgY2hhcmFjdGVycyBhbmQgc3VwcGxlbWVudGFscy4gIElmCisgICAgICogdGhpcyBpcyBub3QgbnVsbCBhbmQgaWYgZ3Jva1N1cHBsZW1lbnRhbHMgaXMgdHJ1ZSB0aGVuIHRoZQorICAgICAqIHByZWZpeCwgc3VmZml4LCByYWRpeCwgYW5kIG1pbkRpZ2l0cyBvZiB0aGlzIG9iamVjdCBhcmUgdXNlZAorICAgICAqIGZvciBzdXBwbGVtZW50YWxzLgorICAgICAqLworICAgIHByaXZhdGUgRXNjYXBlVHJhbnNsaXRlcmF0b3Igc3VwcGxlbWVudGFsSGFuZGxlcjsKKworICAgIC8qKgorICAgICAqIFJlZ2lzdGVycyBzdGFuZGFyZCB2YXJpYW50cyB3aXRoIHRoZSBzeXN0ZW0uICBDYWxsZWQgYnkKKyAgICAgKiBUcmFuc2xpdGVyYXRvciBkdXJpbmcgaW5pdGlhbGl6YXRpb24uCisgICAgICovCisgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXIoKSB7CisgICAgICAgIC8vIFVuaWNvZGU6ICJVKzEwRkZGRiIgaGV4LCBtaW49NCwgbWF4PTYKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IucmVnaXN0ZXJGYWN0b3J5KCJBbnktSGV4L1VuaWNvZGUiLCBuZXcgVHJhbnNsaXRlcmF0b3IuRmFjdG9yeSgpIHsKKyAgICAgICAgICAgIHB1YmxpYyBUcmFuc2xpdGVyYXRvciBnZXRJbnN0YW5jZShTdHJpbmcgSUQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVzY2FwZVRyYW5zbGl0ZXJhdG9yKCJBbnktSGV4L1VuaWNvZGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlUrIiwgIiIsIDE2LCA0LCB0cnVlLCBudWxsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgICAgIAorICAgICAgICAvLyBKYXZhOiAiXFx1RkZGRiIgaGV4LCBtaW49NCwgbWF4PTQKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IucmVnaXN0ZXJGYWN0b3J5KCJBbnktSGV4L0phdmEiLCBuZXcgVHJhbnNsaXRlcmF0b3IuRmFjdG9yeSgpIHsKKyAgICAgICAgICAgIHB1YmxpYyBUcmFuc2xpdGVyYXRvciBnZXRJbnN0YW5jZShTdHJpbmcgSUQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVzY2FwZVRyYW5zbGl0ZXJhdG9yKCJBbnktSGV4L0phdmEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxcdSIsICIiLCAxNiwgNCwgZmFsc2UsIG51bGwpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgICAgCisgICAgICAgIC8vIEM6ICJcXHVGRkZGIiBoZXgsIG1pbj00LCBtYXg9NDsgXFxVMDAxMEZGRkYgaGV4LCBtaW49OCwgbWF4PTgKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IucmVnaXN0ZXJGYWN0b3J5KCJBbnktSGV4L0MiLCBuZXcgVHJhbnNsaXRlcmF0b3IuRmFjdG9yeSgpIHsKKyAgICAgICAgICAgIHB1YmxpYyBUcmFuc2xpdGVyYXRvciBnZXRJbnN0YW5jZShTdHJpbmcgSUQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVzY2FwZVRyYW5zbGl0ZXJhdG9yKCJBbnktSGV4L0MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxcdSIsICIiLCAxNiwgNCwgdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgbmV3IEVzY2FwZVRyYW5zbGl0ZXJhdG9yKCIiLCAiXFxVIiwgIiIsIDE2LCA4LCB0cnVlLCBudWxsKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgICAKKyAgICAgICAgLy8gWE1MOiAiJiN4MTBGRkZGOyIgaGV4LCBtaW49MSwgbWF4PTYKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IucmVnaXN0ZXJGYWN0b3J5KCJBbnktSGV4L1hNTCIsIG5ldyBUcmFuc2xpdGVyYXRvci5GYWN0b3J5KCkgeworICAgICAgICAgICAgcHVibGljIFRyYW5zbGl0ZXJhdG9yIGdldEluc3RhbmNlKFN0cmluZyBJRCkgeworICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRXNjYXBlVHJhbnNsaXRlcmF0b3IoIkFueS1IZXgvWE1MIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICImI3giLCAiOyIsIDE2LCAxLCB0cnVlLCBudWxsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisKKyAgICAgICAgLy8gWE1MMTA6ICImMTExNDExMTsiIGRlYywgbWluPTEsIG1heD03IChub3QgcmVhbGx5ICJBbnktSGV4IikKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IucmVnaXN0ZXJGYWN0b3J5KCJBbnktSGV4L1hNTDEwIiwgbmV3IFRyYW5zbGl0ZXJhdG9yLkZhY3RvcnkoKSB7CisgICAgICAgICAgICBwdWJsaWMgVHJhbnNsaXRlcmF0b3IgZ2V0SW5zdGFuY2UoU3RyaW5nIElEKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBFc2NhcGVUcmFuc2xpdGVyYXRvcigiQW55LUhleC9YTUwxMCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJiMiLCAiOyIsIDEwLCAxLCB0cnVlLCBudWxsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisKKyAgICAgICAgLy8gUGVybDogIlxceHsyNjNBfSIgaGV4LCBtaW49MSwgbWF4PTYKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IucmVnaXN0ZXJGYWN0b3J5KCJBbnktSGV4L1BlcmwiLCBuZXcgVHJhbnNsaXRlcmF0b3IuRmFjdG9yeSgpIHsKKyAgICAgICAgICAgIHB1YmxpYyBUcmFuc2xpdGVyYXRvciBnZXRJbnN0YW5jZShTdHJpbmcgSUQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVzY2FwZVRyYW5zbGl0ZXJhdG9yKCJBbnktSGV4L1BlcmwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxceHsiLCAifSIsIDE2LCAxLCB0cnVlLCBudWxsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisKKyAgICAgICAgLy8gR2VuZXJpYworICAgICAgICBUcmFuc2xpdGVyYXRvci5yZWdpc3RlckZhY3RvcnkoIkFueS1IZXgiLCBuZXcgVHJhbnNsaXRlcmF0b3IuRmFjdG9yeSgpIHsKKyAgICAgICAgICAgIHB1YmxpYyBUcmFuc2xpdGVyYXRvciBnZXRJbnN0YW5jZShTdHJpbmcgSUQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVzY2FwZVRyYW5zbGl0ZXJhdG9yKCJBbnktSGV4IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcXHUiLCAiIiwgMTYsIDQsIGZhbHNlLCBudWxsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhbiBlc2NhcGUgdHJhbnNsaXRlcmF0b3Igd2l0aCB0aGUgZ2l2ZW4gSUQgYW5kCisgICAgICogcGFyYW1ldGVycy4gIFNlZSB0aGUgY2xhc3MgbWVtYmVyIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuCisgICAgICovCisgICAgRXNjYXBlVHJhbnNsaXRlcmF0b3IoU3RyaW5nIElELCBTdHJpbmcgcHJlZml4LCBTdHJpbmcgc3VmZml4LAorICAgICAgICAgICAgICAgICAgICAgICAgIGludCByYWRpeCwgaW50IG1pbkRpZ2l0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGdyb2tTdXBwbGVtZW50YWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgIEVzY2FwZVRyYW5zbGl0ZXJhdG9yIHN1cHBsZW1lbnRhbEhhbmRsZXIpIHsKKyAgICAgICAgc3VwZXIoSUQsIG51bGwpOworICAgICAgICB0aGlzLnByZWZpeCA9IHByZWZpeDsKKyAgICAgICAgdGhpcy5zdWZmaXggPSBzdWZmaXg7CisgICAgICAgIHRoaXMucmFkaXggPSByYWRpeDsKKyAgICAgICAgdGhpcy5taW5EaWdpdHMgPSBtaW5EaWdpdHM7CisgICAgICAgIHRoaXMuZ3Jva1N1cHBsZW1lbnRhbHMgPSBncm9rU3VwcGxlbWVudGFsczsKKyAgICAgICAgdGhpcy5zdXBwbGVtZW50YWxIYW5kbGVyID0gc3VwcGxlbWVudGFsSGFuZGxlcjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbXBsZW1lbnRzIHtAbGluayBUcmFuc2xpdGVyYXRvciNoYW5kbGVUcmFuc2xpdGVyYXRlfS4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVUcmFuc2xpdGVyYXRlKFJlcGxhY2VhYmxlIHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb3NpdGlvbiBwb3MsIGJvb2xlYW4gaW5jcmVtZW50YWwpIHsKKyAgICAgICAgaW50IHN0YXJ0ID0gcG9zLnN0YXJ0OworICAgICAgICBpbnQgbGltaXQgPSBwb3MubGltaXQ7CisKKyAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZiA9IG5ldyBTdHJpbmdCdWZmZXIocHJlZml4KTsKKyAgICAgICAgaW50IHByZWZpeExlbiA9IHByZWZpeC5sZW5ndGgoKTsKKyAgICAgICAgYm9vbGVhbiByZWRvUHJlZml4ID0gZmFsc2U7CisKKyAgICAgICAgd2hpbGUgKHN0YXJ0IDwgbGltaXQpIHsKKyAgICAgICAgICAgIGludCBjID0gZ3Jva1N1cHBsZW1lbnRhbHMgPyB0ZXh0LmNoYXIzMkF0KHN0YXJ0KSA6IHRleHQuY2hhckF0KHN0YXJ0KTsKKyAgICAgICAgICAgIGludCBjaGFyTGVuID0gZ3Jva1N1cHBsZW1lbnRhbHMgPyBVVEYxNi5nZXRDaGFyQ291bnQoYykgOiAxOworCisgICAgICAgICAgICBpZiAoKGMgJiAweEZGRkYwMDAwKSAhPSAwICYmIHN1cHBsZW1lbnRhbEhhbmRsZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGJ1Zi5zZXRMZW5ndGgoMCk7CisgICAgICAgICAgICAgICAgYnVmLmFwcGVuZChzdXBwbGVtZW50YWxIYW5kbGVyLnByZWZpeCk7CisgICAgICAgICAgICAgICAgVXRpbGl0eS5hcHBlbmROdW1iZXIoYnVmLCBjLCBzdXBwbGVtZW50YWxIYW5kbGVyLnJhZGl4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBsZW1lbnRhbEhhbmRsZXIubWluRGlnaXRzKTsKKyAgICAgICAgICAgICAgICBidWYuYXBwZW5kKHN1cHBsZW1lbnRhbEhhbmRsZXIuc3VmZml4KTsKKyAgICAgICAgICAgICAgICByZWRvUHJlZml4ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKHJlZG9QcmVmaXgpIHsKKyAgICAgICAgICAgICAgICAgICAgYnVmLnNldExlbmd0aCgwKTsKKyAgICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZChwcmVmaXgpOworICAgICAgICAgICAgICAgICAgICByZWRvUHJlZml4ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYnVmLnNldExlbmd0aChwcmVmaXhMZW4pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBVdGlsaXR5LmFwcGVuZE51bWJlcihidWYsIGMsIHJhZGl4LCBtaW5EaWdpdHMpOworICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoc3VmZml4KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGV4dC5yZXBsYWNlKHN0YXJ0LCBzdGFydCArIGNoYXJMZW4sIGJ1Zi50b1N0cmluZygpKTsKKyAgICAgICAgICAgIHN0YXJ0ICs9IGJ1Zi5sZW5ndGgoKTsKKyAgICAgICAgICAgIGxpbWl0ICs9IGJ1Zi5sZW5ndGgoKSAtIGNoYXJMZW47CisgICAgICAgIH0KKworICAgICAgICBwb3MuY29udGV4dExpbWl0ICs9IGxpbWl0IC0gcG9zLmxpbWl0OworICAgICAgICBwb3MubGltaXQgPSBsaW1pdDsKKyAgICAgICAgcG9zLnN0YXJ0ID0gc3RhcnQ7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3RleHQvRnVuY3Rpb25SZXBsYWNlci5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvRnVuY3Rpb25SZXBsYWNlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmYzMDczOTAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdGV4dC9GdW5jdGlvblJlcGxhY2VyLmphdmEKQEAgLTAsMCArMSw4NSBAQAorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICBDb3B5cmlnaHQgKGMpIDIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24KKyogICBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICBEYXRlICAgICAgICBOYW1lICAgICAgICBEZXNjcmlwdGlvbgorKiAgIDAxLzE0LzIwMDIgIGFsaXUgICAgICAgIENyZWF0aW9uLgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKworcGFja2FnZSBjb20uaWJtLmljdS50ZXh0OworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuVXRpbGl0eTsKKworLyoqCisgKiBBIHJlcGxhY2VyIHRoYXQgY2FsbHMgYSB0cmFuc2xpdGVyYXRvciB0byBnZW5lcmF0ZSBpdHMgb3V0cHV0IHRleHQuCisgKiBUaGUgaW5wdXQgdGV4dCB0byB0aGUgdHJhbnNsaXRlcmF0b3IgaXMgdGhlIG91dHB1dCBvZiBhbm90aGVyCisgKiBVbmljb2RlUmVwbGFjZXIgb2JqZWN0LiAgVGhhdCBpcywgdGhpcyByZXBsYWNlciB3cmFwcyBhbm90aGVyCisgKiByZXBsYWNlciB3aXRoIGEgdHJhbnNsaXRlcmF0b3IuCisgKiBAYXV0aG9yIEFsYW4gTGl1CisgKi8KK2NsYXNzIEZ1bmN0aW9uUmVwbGFjZXIgaW1wbGVtZW50cyBVbmljb2RlUmVwbGFjZXIgeworCisgICAgLyoqCisgICAgICogVGhlIHRyYW5zbGl0ZXJhdG9yLiAgTXVzdCBub3QgYmUgbnVsbC4KKyAgICAgKi8KKyAgICBwcml2YXRlIFRyYW5zbGl0ZXJhdG9yIHRyYW5zbGl0OworCisgICAgLyoqCisgICAgICogVGhlIHJlcGxhY2VyIG9iamVjdC4gIFRoaXMgZ2VuZXJhdGVzIHRleHQgdGhhdCBpcyB0aGVuCisgICAgICogcHJvY2Vzc2VkIGJ5ICd0cmFuc2xpdCcuICBNdXN0IG5vdCBiZSBudWxsLgorICAgICAqLworICAgIHByaXZhdGUgVW5pY29kZVJlcGxhY2VyIHJlcGxhY2VyOworCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGEgcmVwbGFjZXIgdGhhdCB0YWtlcyB0aGUgb3V0cHV0IG9mIHRoZSBnaXZlbgorICAgICAqIHJlcGxhY2VyLCBwYXNzZXMgaXQgdGhyb3VnaCB0aGUgZ2l2ZW4gdHJhbnNsaXRlcmF0b3IsIGFuZCBlbWl0cworICAgICAqIHRoZSByZXN1bHQgYXMgb3V0cHV0LgorICAgICAqLworICAgIHB1YmxpYyBGdW5jdGlvblJlcGxhY2VyKFRyYW5zbGl0ZXJhdG9yIHRoZVRyYW5zbGl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVSZXBsYWNlciB0aGVSZXBsYWNlcikgeworICAgICAgICB0cmFuc2xpdCA9IHRoZVRyYW5zbGl0OworICAgICAgICByZXBsYWNlciA9IHRoZVJlcGxhY2VyOworICAgIH0KKworICAgIC8qKgorICAgICAqIFVuaWNvZGVSZXBsYWNlciBBUEkKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IHJlcGxhY2UoUmVwbGFjZWFibGUgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgIGludFtdIGN1cnNvcikgeworCisgICAgICAgIC8vIEZpcnN0IGRlbGVnYXRlIHRvIHN1Ym9yZGluYXRlIHJlcGxhY2VyCisgICAgICAgIGludCBsZW4gPSByZXBsYWNlci5yZXBsYWNlKHRleHQsIHN0YXJ0LCBsaW1pdCwgY3Vyc29yKTsKKyAgICAgICAgbGltaXQgPSBzdGFydCArIGxlbjsKKworICAgICAgICAvLyBOb3cgdHJhbnNsaXRlcmF0ZQorICAgICAgICBsaW1pdCA9IHRyYW5zbGl0LnRyYW5zbGl0ZXJhdGUodGV4dCwgc3RhcnQsIGxpbWl0KTsKKworICAgICAgICByZXR1cm4gbGltaXQgLSBzdGFydDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBVbmljb2RlUmVwbGFjZXIgQVBJCisgICAgICovCisgICAgcHVibGljIFN0cmluZyB0b1JlcGxhY2VyUGF0dGVybihib29sZWFuIGVzY2FwZVVucHJpbnRhYmxlKSB7CisgICAgICAgIFN0cmluZ0J1ZmZlciBydWxlID0gbmV3IFN0cmluZ0J1ZmZlcigiJiIpOworICAgICAgICBydWxlLmFwcGVuZCh0cmFuc2xpdC5nZXRJRCgpKTsKKyAgICAgICAgcnVsZS5hcHBlbmQoIiggIik7CisgICAgICAgIHJ1bGUuYXBwZW5kKHJlcGxhY2VyLnRvUmVwbGFjZXJQYXR0ZXJuKGVzY2FwZVVucHJpbnRhYmxlKSk7CisgICAgICAgIHJ1bGUuYXBwZW5kKCIgKSIpOworICAgICAgICByZXR1cm4gcnVsZS50b1N0cmluZygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFVuaW9uIHRoZSBzZXQgb2YgYWxsIGNoYXJhY3RlcnMgdGhhdCBtYXkgb3V0cHV0IGJ5IHRoaXMgb2JqZWN0CisgICAgICogaW50byB0aGUgZ2l2ZW4gc2V0LgorICAgICAqIEBwYXJhbSB0b1VuaW9uVG8gdGhlIHNldCBpbnRvIHdoaWNoIHRvIHVuaW9uIHRoZSBvdXRwdXQgY2hhcmFjdGVycworICAgICAqLworICAgIHB1YmxpYyB2b2lkIGFkZFJlcGxhY2VtZW50U2V0VG8oVW5pY29kZVNldCB0b1VuaW9uVG8pIHsKKyAgICAgICAgdG9VbmlvblRvLmFkZEFsbCh0cmFuc2xpdC5nZXRUYXJnZXRTZXQoKSk7CisgICAgfQorfQorCisvL2VvZgpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3RleHQvSGV4VG9Vbmljb2RlVHJhbnNsaXRlcmF0b3IuamF2YSBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L0hleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMGE2OTIwZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L0hleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yLmphdmEKQEAgLTAsMCArMSwzODcgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS90ZXh0L0F0dGljL0hleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMTIvMDMgMTg6NTY6NDQgJCAKKyAqICRSZXZpc2lvbjogMS4xNCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UudGV4dDsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLlV0aWxpdHk7CisKKy8qKgorICogQSB0cmFuc2xpdGVyYXRvciB0aGF0IGNvbnZlcnRzIGZyb20gaGV4YWRlY2ltYWwgVW5pY29kZSBlc2NhcGUKKyAqIHNlcXVlbmNlcyB0byB0aGUgY2hhcmFjdGVycyB0aGV5IHJlcHJlc2VudC4gIEZvciBleGFtcGxlLCAiVSswMDQwIgorICogYW5kICdcdTAwNDAnLiAgQSBkZWZhdWx0IEhleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yIHJlY29nbml6ZXMgdGhlCisgKiBwcmVmaXhlcyAiVSsiLCAidSsiLCAiJiM5MjtVIiwgYW5kICImIzkyO3UiLiAgSGV4IHZhbHVlcyBtYXkgYmUKKyAqIHVwcGVyLSBvciBsb3dlcmNhc2UuICBCeSBjYWxsaW5nIHRoZSBhcHBseVBhdHRlcm4oKSBtZXRob2QsIG9uZQorICogb3IgbW9yZSBjdXN0b20gcHJlZml4L3N1ZmZpeCBwYWlycyBtYXkgYmUgc3BlY2lmaWVkLiAgU2VlCisgKiBhcHBseVBhdHRlcm4oKSBmb3IgZGV0YWlscy4KKyAqCisgKiBAYXV0aG9yIEFsYW4gTGl1CisgKiBAZGVwcmVjYXRlZCBJQ1UgMi40IFRoaXMgY2xhc3MgdG8gYmUgcmVtb3ZlZCBhZnRlciAyMDAzLTEyLTAxLiBVc2UgdGhlIFRyYW5zbGl0ZXJhdG9yIGZhY3RvcnkgbWV0aG9kcy4KKyAqLworcHVibGljIGNsYXNzIEhleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yIGV4dGVuZHMgVHJhbnNsaXRlcmF0b3IgeworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAiXHUwMEE5IElCTSBDb3Jwb3JhdGlvbiAxOTk5LiBBbGwgcmlnaHRzIHJlc2VydmVkLiI7CisKKyAgICAvKioKKyAgICAgKiBQYWNrYWdlIGFjY2Vzc2libGUgSUQgZm9yIHRoaXMgdHJhbnNsaXRlcmF0b3IuCisgICAgICovCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBfSUQgPSAiSGV4LUFueSI7CisKKyAgICAvKioKKyAgICAgKiBUaGlzIHBhdHRlcm4gZW5jb2RlcyB0aGUgZm9sbG93aW5nIHNwZWNzIGZvciB0aGUgZGVmYXVsdCBjb25zdHJ1Y3RvcjoKKyAgICAgKiAgIFxcdTAwMDAKKyAgICAgKiAgIFxcVTAwMDAKKyAgICAgKiAgIHUrMDAwMAorICAgICAqICAgVSswMDAwCisgICAgICogVGhlIG11bHRpcGxlIGJhY2tzbGFzaGVzIHJlc29sdmUgdG8gYSBzaW5nbGUgYmFja3NsYXNoCisgICAgICogaW4gdGhlIGVmZmVjdGl2ZSBwcmVmaXguCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIERFRkFVTFRfUEFUVEVSTiA9ICJcXFxcdTAwMDA7XFxcXFUwMDAwO3UrMDAwMDtVKzAwMDAiOworCisgICAgLy8gQ2hhcmFjdGVyIGNvbnN0YW50cyBmb3Igc3BlY2lhbCBwYXR0ZXJuIGNoYXJhY3RlcnMKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjaGFyIFNFTUlDT0xPTiA9ICc7JzsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjaGFyIFpFUk8gICAgICA9ICcwJzsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjaGFyIFBPVU5EICAgICA9ICcjJzsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjaGFyIEJBQ0tTTEFTSCA9ICdcXCc7CisKKyAgICAvKioKKyAgICAgKiBUaGUgcGF0dGVybiBmb3IgdGhpcyB0cmFuc2xpdGVyYXRvcgorICAgICAqLworICAgIHByaXZhdGUgU3RyaW5nIHBhdHRlcm47CisKKyAgICAvKioKKyAgICAgKiBUaGUgcHJvY2Vzc2VkIHBhdHRlcm4gc3BlY2lmaWNhdGlvbi4gIFNlZSBhcHBseVBhdHRlcm4oKSBmb3IKKyAgICAgKiBkZXRhaWxzLgorICAgICAqLworICAgIHByaXZhdGUgY2hhcltdIGFmZml4ZXM7CisKKyAgICAvKioKKyAgICAgKiBUaGUgbnVtYmVyIG9mIGRpZmZlcmVudCBhZmZpeCBzZXRzIGluIGFmZml4ZXMuCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgYWZmaXhDb3VudDsKKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSB0cmFuc2xpdGVyYXRvci4KKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40IFRoaXMgY2xhc3MgdG8gYmUgcmVtb3ZlZCBhZnRlciAyMDAzLTEyLTAxLiBVc2UgdGhlIFRyYW5zbGl0ZXJhdG9yIGZhY3RvcnkgbWV0aG9kcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgSGV4VG9Vbmljb2RlVHJhbnNsaXRlcmF0b3IoKSB7CisgICAgICAgIHN1cGVyKF9JRCwgbnVsbCk7CisgICAgICAgIGFwcGx5UGF0dGVybihERUZBVUxUX1BBVFRFUk4pOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSB0cmFuc2xpdGVyYXRvci4KKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40IFRoaXMgY2xhc3MgdG8gYmUgcmVtb3ZlZCBhZnRlciAyMDAzLTEyLTAxLiBVc2UgdGhlIFRyYW5zbGl0ZXJhdG9yIGZhY3RvcnkgbWV0aG9kcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgSGV4VG9Vbmljb2RlVHJhbnNsaXRlcmF0b3IoU3RyaW5nIHRoZVBhdHRlcm4pIHsKKyAgICAgICAgdGhpcyh0aGVQYXR0ZXJuLCBudWxsKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIHRyYW5zbGl0ZXJhdG9yLgorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjQgVGhpcyBjbGFzcyB0byBiZSByZW1vdmVkIGFmdGVyIDIwMDMtMTItMDEuIFVzZSB0aGUgVHJhbnNsaXRlcmF0b3IgZmFjdG9yeSBtZXRob2RzLgorICAgICAqLworICAgIHB1YmxpYyBIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvcihTdHJpbmcgdGhlUGF0dGVybiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pY29kZUZpbHRlciB0aGVGaWx0ZXIpIHsKKyAgICAgICAgc3VwZXIoX0lELCB0aGVGaWx0ZXIpOworICAgICAgICBhcHBseVBhdHRlcm4odGhlUGF0dGVybik7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0IHRoZSBwYXR0ZXJucyByZWNvZ25pemVkIGJ5IHRoaXMgdHJhbnNsaXRlcmF0b3IuICBPbmUgb3IKKyAgICAgKiBtb3JlIHBhdHRlcm5zIG1heSBiZSBzcGVjaWZpZWQsIHNlcGFyYXRlZCBieSBzZW1pY29sb25zICgnOycpLgorICAgICAqIEVhY2ggcGF0dGVybiBjb250YWlucyB6ZXJvIG9yIG1vcmUgcHJlZml4IGNoYXJhY3RlcnMsIG9uZSBvcgorICAgICAqIG1vcmUgZGlnaXQgY2hhcmFjdGVycywgYW5kIHplcm8gb3IgbW9yZSBzdWZmaXggY2hhcmFjdGVycy4gIFRoZQorICAgICAqIGRpZ2l0IGNoYXJhY3RlcnMgaW5kaWNhdGVzIG9wdGlvbmFsIGRpZ2l0cyAoJyMnKSBmb2xsb3dlZCBieQorICAgICAqIHJlcXVpcmVkIGRpZ2l0cyAoJzAnKS4gIFRoZSB0b3RhbCBudW1iZXIgb2YgZGlnaXRzIGNhbm5vdAorICAgICAqIGV4Y2VlZCA0LCBhbmQgbXVzdCBiZSBhdCBsZWFzdCAxIHJlcXVpcmVkIGRpZ2l0LiAgVXNlIGEKKyAgICAgKiBiYWNrc2xhc2ggKCdcXCcpIHRvIGVzY2FwZSBhbnkgb2YgdGhlIHNwZWNpYWwgY2hhcmFjdGVycy4gIEFuCisgICAgICogZW1wdHkgcGF0dGVybiBpcyBhbGxvd2VkOyBpdCBzcGVjaWZpZXMgYSB0cmFuc2xpdGVyYXRvciB0aGF0CisgICAgICogZG9lcyBub3RoaW5nLgorICAgICAqCisgICAgICogPHA+RXhhbXBsZTogIlUrMDAwMDs8IyMjMD4iIHNwZWNpZmllcyB0d28gcGF0dGVybnMuICBUaGUgZmlyc3QKKyAgICAgKiBoYXMgYSBwcmVmaXggb2YgIlUrIiwgZXhhY3RseSBmb3VyIGRpZ2l0cywgYW5kIG5vIHN1ZmZpeC4gIFRoZQorICAgICAqIHNlY29uZCBoYXMgYSBwcmVmaXggb2YgIjwiLCBiZXR3ZWVuIG9uZSBhbmQgZm91ciBkaWdpdHMsIGFuZCBhCisgICAgICogc3VmZml4IG9mICI+Ii4KKyAgICAgKgorICAgICAqIDxwPjxwcmU+CisgICAgICogcGF0dGVybiA6PSBzcGVjIHwgKCBwYXR0ZXJuICc7JyBzcGVjICkKKyAgICAgKiBzcGVjIDo9IHByZWZpeC1jaGFyKiBkaWdpdC1zcGVjIHN1ZmZpeC1jaGFyKgorICAgICAqIGRpZ2l0LXNwZWMgOj0gJyMnKiAnMCcrCisgICAgICogcHJlZml4LWNoYXIgOj0gW15zcGVjaWFsLWNoYXJdIHwgJ1xcJyBzcGVjaWFsLWNoYXIKKyAgICAgKiBzdWZmaXgtY2hhciA6PSBbXnNwZWNpYWwtY2hhcl0gfCAnXFwnIHNwZWNpYWwtY2hhcgorICAgICAqIHNwZWNpYWwtY2hhciA6PSAnOycgfCAnMCcgfCAnIycgfCAnXFwnCisgICAgICogPC9wcmU+CisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNCBUaGlzIGNsYXNzIHRvIGJlIHJlbW92ZWQgYWZ0ZXIgMjAwMy0xMi0wMS4gVXNlIHRoZSBUcmFuc2xpdGVyYXRvciBmYWN0b3J5IG1ldGhvZHMuCisgICAgICovCisgICAgcHVibGljIHZvaWQgYXBwbHlQYXR0ZXJuKFN0cmluZyBwYXR0ZXJuKSB7CisKKyAgICAgICAgLyogVGhlIHBhdHRlcm4gaXMgcHJvY2Vzc2VkIGFuZCBzdG9yZWQgaW4gYWZmaXhlcy4gIFRoZSBwYXR0ZXJuCisgICAgICAgICAqIGNvbnNpc3RzIG9mIHplcm8gb3IgbW9yZSBhZmZpeGVzLiAgRWFjaCBhZmZpeCBpcyBwYXJzZWQgdG8KKyAgICAgICAgICogZGV0ZXJtaW5lIHRoZSBwcmVmaXgsIHN1ZmZpeCwgbWluaW11bSBkaWdpdCBjb3VudCwgYW5kIG1heGltdW0KKyAgICAgICAgICogZGlnaXQgY291bnQuICBUaGVzZSB2YWx1ZXMgYXJlIHRoZW4gc3RvcmVkIGFzIGEgZm91ciBjaGFyYWN0ZXIKKyAgICAgICAgICogaGVhZGVyLiAgVGhhdCBpcywgdGhlaXIgbnVtZXJpYyB2YWx1ZXMgYXJlIGNhc3QgdG8gVUNoYXJzIGFuZAorICAgICAgICAgKiBzdG9yZWQgaW4gdGhlIHN0cmluZy4gIEZvbGxvd2luZyB0aGVzZSBmb3VyIGNoYXJhY3RlcnMsIHRoZSBwcmVmaXgKKyAgICAgICAgICogY2hhcmFjdGVycywgdGhlbiBzdWZmaXggY2hhcmFjdGVycyBhcmUgc3RvcmVkLiAgRWFjaCBzcGVjIHRha2VzCisgICAgICAgICAqIG4rNCBjaGFyYWN0ZXJzLCB3aGVyZSBuIGlzIHRoZSB0b3RhbCBsZW5ndGggb2YgdGhlIHByZWZpeCBhbmQKKyAgICAgICAgICogc3VmZml4LgorICAgICAgICAgKi8KKworICAgICAgICBTdHJpbmdCdWZmZXIgYWZmaXhlcyA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgYWZmaXhDb3VudCA9IDA7CisKKyAgICAgICAgLyogVGhlIG1vZGUgc3BlY2lmaWVzIHdoZXJlIHdlIGFyZSBpbiBlYWNoIHNwZWMuCisgICAgICAgICAqIG1vZGUgMCA9IGluIHByZWZpeAorICAgICAgICAgKiBtb2RlIDEgPSBpbiBvcHRpb25hbCBkaWdpdHMgKCMpCisgICAgICAgICAqIG1vZGUgMiA9IGluIHJlcXVpcmVkIGRpZ2l0cyAoMCkKKyAgICAgICAgICogbW9kZSAzID0gaW4gc3VmZml4CisgICAgICAgICAqLworICAgICAgICBpbnQgbW9kZSA9IDA7CisKKyAgICAgICAgaW50IHByZWZpeExlbiA9IDAsIHN1ZmZpeExlbiA9IDAsIG1pbkRpZ2l0cyA9IDAsIG1heERpZ2l0cyA9IDA7CisgICAgICAgIGludCBzdGFydCA9IDA7CisKKyAgICAgICAgLyogVG8gbWFrZSBwYXJzaW5nIGVhc2llciwgd2UgYXBwZW5kIGEgdmlydHVhbCAnOycgYXQgdGhlIGVuZCBvZgorICAgICAgICAgKiB0aGUgcGF0dGVybiBzdHJpbmcsIGlmIHRoZXJlIGlzbid0IG9uZSBhbHJlYWR5LiAgV2hlbiB3ZSBnZXQgdG8KKyAgICAgICAgICogdGhlIGluZGV4IHBhdHRlcm4ubGVuZ3RoKCkgKHRoYXQgaXMsIG9uZSBwYXN0IHRoZSBlbmQpLCB3ZQorICAgICAgICAgKiBjcmVhdGUgYSB2aXJ0dWFsICc7JyBpZiBuZWNlc3NhcnkuCisgICAgICAgICAqLworICAgICAgICBjaGFyIGMgPSAwOyAgICAgICAgICAgICAgICAvLyBUaGVzZSBhcmUgb3V0c2lkZSB0aGUgbG9vcCBzbyB3ZSBjYW4KKyAgICAgICAgYm9vbGVhbiBpc0xpdGVyYWwgPSBmYWxzZTsgLy8gc2VlIHRoZSBwcmV2aW91cyBjaGFyYWN0ZXIuLi4KKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPD1wYXR0ZXJuLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgIC8vIENyZWF0ZSB0aGUgdmlydHVhbCB0cmFpbGluZyAnOycgaWYgbmVjZXNzYXJ5CisgICAgICAgICAgICBpZiAoaSA9PSBwYXR0ZXJuLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGxhc3QgY2hhcmFjdGVyIHdhcyBub3QgYSBub24tbGl0ZXJhbCAnOycuLi4KKyAgICAgICAgICAgICAgICBpZiAoaSA+IDAgJiYgIShjID09IFNFTUlDT0xPTiAmJiAhaXNMaXRlcmFsKSkgeworICAgICAgICAgICAgICAgICAgICBjID0gU0VNSUNPTE9OOworICAgICAgICAgICAgICAgICAgICBpc0xpdGVyYWwgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGMgPSBwYXR0ZXJuLmNoYXJBdChpKTsKKyAgICAgICAgICAgICAgICBpc0xpdGVyYWwgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGMgPT0gQkFDS1NMQVNIKSB7CisgICAgICAgICAgICAgICAgaWYgKChpKzEpPHBhdHRlcm4ubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaXNMaXRlcmFsID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYyA9IHBhdHRlcm4uY2hhckF0KCsraSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVHJhaWxpbmcgJ1xcJworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJUcmFpbGluZyAnXFwnIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWlzTGl0ZXJhbCkgeworICAgICAgICAgICAgICAgIHN3aXRjaCAoYykgeworICAgICAgICAgICAgICAgIGNhc2UgUE9VTkQ6CisgICAgICAgICAgICAgICAgICAgIC8vIFNlZWluZyBhICcjJyBtb3ZlcyB1cyBmcm9tIG1vZGUgMCAocHJlZml4KSB0byBtb2RlIDEKKyAgICAgICAgICAgICAgICAgICAgLy8gKG9wdGlvbmFsIGRpZ2l0cykuCisgICAgICAgICAgICAgICAgICAgIGlmIChtb2RlID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrbW9kZTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtb2RlICE9IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVucXVvdGVkICcjJworICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiVW5xdW90ZWQgJyMnIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgKyttYXhEaWdpdHM7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgWkVSTzoKKyAgICAgICAgICAgICAgICAgICAgLy8gU2VlaW5nIGEgJzAnIG1vdmVzIHVzIHRvIG1vZGUgMiAocmVxdWlyZWQgZGlnaXRzKQorICAgICAgICAgICAgICAgICAgICBpZiAobW9kZSA8IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vZGUgPSAyOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1vZGUgIT0gMikgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gVW5xdW90ZWQgJzAnCisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJVbnF1b3RlZCAnMCciKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICArK21pbkRpZ2l0czsKKyAgICAgICAgICAgICAgICAgICAgKyttYXhEaWdpdHM7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgU0VNSUNPTE9OOgorICAgICAgICAgICAgICAgICAgICBpZiAobWluRGlnaXRzIDwgMSB8fCBtYXhEaWdpdHMgPiA0CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbnZhbGlkIG1pbi9tYXggZGlnaXQgY291bnQKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IHByZWZpeExlbiA+IDB4RkZGRiB8fCBzdWZmaXhMZW4gPiAweEZGRkYpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1ZmZpeCBvciBwcmVmaXggdG9vIGxvbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlN1ZmZpeCBvciBwcmVmaXggdG9vIGxvbmciKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSB3YXMgbm8gcHJlZml4IGFuZCBubyBzdWZmaXgsIHRoZW4gdGhlCisgICAgICAgICAgICAgICAgICAgIC8vIGhlYWRlciB3aWxsIG5vdCBoYXZlIGJlZW4gYWxsb2NhdGVkIHlldC4gIFdlIG5lZWQKKyAgICAgICAgICAgICAgICAgICAgLy8gYWxsb2NhdGUgdGhlIGhlYWRlciBub3cuCisgICAgICAgICAgICAgICAgICAgIGlmIChzdGFydCA9PSBhZmZpeGVzLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhZmZpeGVzLmFwcGVuZCgiQUFBQSIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIC8vIEZpbGwgaW4gNC1jaGFyYWN0ZXIgaGVhZGVyCisgICAgICAgICAgICAgICAgICAgIGFmZml4ZXMuc2V0Q2hhckF0KHN0YXJ0KyssIChjaGFyKSBwcmVmaXhMZW4pOworICAgICAgICAgICAgICAgICAgICBhZmZpeGVzLnNldENoYXJBdChzdGFydCsrLCAoY2hhcikgc3VmZml4TGVuKTsKKyAgICAgICAgICAgICAgICAgICAgYWZmaXhlcy5zZXRDaGFyQXQoc3RhcnQrKywgKGNoYXIpIG1pbkRpZ2l0cyk7CisgICAgICAgICAgICAgICAgICAgIGFmZml4ZXMuc2V0Q2hhckF0KHN0YXJ0LCAgIChjaGFyKSBtYXhEaWdpdHMpOworICAgICAgICAgICAgICAgICAgICBzdGFydCA9IGFmZml4ZXMubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgICAgICsrYWZmaXhDb3VudDsKKyAgICAgICAgICAgICAgICAgICAgcHJlZml4TGVuID0gc3VmZml4TGVuID0gbWluRGlnaXRzID0gbWF4RGlnaXRzID0gbW9kZSA9IDA7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGlzTGl0ZXJhbCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGlzTGl0ZXJhbCkgeworICAgICAgICAgICAgICAgIGlmIChzdGFydCA9PSBhZmZpeGVzLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3BhY2UgZm9yIHRoZSBoZWFkZXIuICBBcHBlbmQgYW55IGZvdXIKKyAgICAgICAgICAgICAgICAgICAgLy8gY2hhcmFjdGVycyBhcyBwbGFjZSBob2xkZXJzIGZvciB0aGUgaGVhZGVyIHZhbHVlcy4KKyAgICAgICAgICAgICAgICAgICAgLy8gV2UgZmlsbCB0aGVzZSBpbiB3aGVuIHdlIHBhcnNlIHRoZSAnOycuCisgICAgICAgICAgICAgICAgICAgIGFmZml4ZXMuYXBwZW5kKCJBQUFBIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGFmZml4ZXMuYXBwZW5kKGMpOworICAgICAgICAgICAgICAgIGlmIChtb2RlID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgKytwcmVmaXhMZW47CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQW55IGxpdGVyYWwgb3V0c2lkZSB0aGUgcHJlZml4IG1vdmVzIHVzIGludG8gbW9kZSAzCisgICAgICAgICAgICAgICAgICAgIC8vIChzdWZmaXgpCisgICAgICAgICAgICAgICAgICAgIG1vZGUgPSAzOworICAgICAgICAgICAgICAgICAgICArK3N1ZmZpeExlbjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBXZSBvbmx5IG1vZGlmeSB0aGUgcGF0dGVybiBhbmQgYWZmaXhlcyBtZW1iZXIgdmFyaWFibGVzIGlmCisgICAgICAgIC8vIHdlIGdldCB0byB0aGlzIHBvaW50LCB0aGF0IGlzLCBpZiB0aGUgcGFyc2Ugc3VjY2VlZHMuCisgICAgICAgIHRoaXMucGF0dGVybiA9IHBhdHRlcm47CisgICAgICAgIGludCBsZW4gPSBhZmZpeGVzLmxlbmd0aCgpOworICAgICAgICB0aGlzLmFmZml4ZXMgPSBuZXcgY2hhcltsZW5dOworICAgICAgICBVdGlsaXR5LmdldENoYXJzKGFmZml4ZXMsIDAsIGxlbiwgdGhpcy5hZmZpeGVzLCAwKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhpcyB0cmFuc2xpdGVyYXRvcidzIHBhdHRlcm4uCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNCBUaGlzIGNsYXNzIHRvIGJlIHJlbW92ZWQgYWZ0ZXIgMjAwMy0xMi0wMS4gVXNlIHRoZSBUcmFuc2xpdGVyYXRvciBmYWN0b3J5IG1ldGhvZHMuCisgICAgICovCisgICAgcHVibGljIFN0cmluZyB0b1BhdHRlcm4oKSB7CisgICAgICAgIHJldHVybiBwYXR0ZXJuOworICAgIH0KKworICAgIC8qKgorICAgICAqIEltcGxlbWVudHMge0BsaW5rIFRyYW5zbGl0ZXJhdG9yI2hhbmRsZVRyYW5zbGl0ZXJhdGV9LgorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjQgVGhpcyBjbGFzcyB0byBiZSByZW1vdmVkIGFmdGVyIDIwMDMtMTItMDEuIFVzZSB0aGUgVHJhbnNsaXRlcmF0b3IgZmFjdG9yeSBtZXRob2RzLgorICAgICAqLworICAgIHByb3RlY3RlZCB2b2lkIGhhbmRsZVRyYW5zbGl0ZXJhdGUoUmVwbGFjZWFibGUgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uIG9mZnNldHMsIGJvb2xlYW4gaXNJbmNyZW1lbnRhbCkgeworICAgICAgICBpbnQgY3Vyc29yID0gb2Zmc2V0cy5zdGFydDsKKyAgICAgICAgaW50IGxpbWl0ID0gb2Zmc2V0cy5saW1pdDsKKyAgICAgICAgaW50IGksIGosIGlwYXQ7CisKKyAgICAgIGxvb3A6CisgICAgICAgIHdoaWxlIChjdXJzb3IgPCBsaW1pdCkgeworICAgICAgICAgICAgLy8gTG9vcCBvdmVyIHRoZSBzcGVjcyBpbiBhZmZpeGVzLiAgSWYgYWZmaXhDb3VudCBpcyB6ZXJvIChhbgorICAgICAgICAgICAgLy8gZW1wdHkgcGF0dGVybiksIHRoZW4gd2UgZG8gbm90aGluZy4gIFdlIGV4aXQgdGhpcyBsb29wIHdoZW4KKyAgICAgICAgICAgIC8vIHdlIG1hdGNoIG9uZSBvZiB0aGUgc3BlY3MuICBXZSBleGl0IHRoaXMgZnVuY3Rpb24gKGJ5CisgICAgICAgICAgICAvLyBqdW1waW5nIHRvIGV4aXQ6IGJlbG93KSBpZiBhIHBhcnRpYWwgbWF0Y2ggaXMgZGV0ZWN0ZWQgYW5kCisgICAgICAgICAgICAvLyBpc0luY3JlbWVudGFsIGlzIHRydWUuCisgICAgICAgICAgICBmb3IgKGo9MCwgaXBhdD0wOyBqPGFmZml4Q291bnQ7ICsraikgeworCisgICAgICAgICAgICAgICAgLy8gUmVhZCB0aGUgaGVhZGVyCisgICAgICAgICAgICAgICAgaW50IHByZWZpeExlbiA9IGFmZml4ZXNbaXBhdCsrXTsKKyAgICAgICAgICAgICAgICBpbnQgc3VmZml4TGVuID0gYWZmaXhlc1tpcGF0KytdOworICAgICAgICAgICAgICAgIGludCBtaW5EaWdpdHMgPSBhZmZpeGVzW2lwYXQrK107CisgICAgICAgICAgICAgICAgaW50IG1heERpZ2l0cyA9IGFmZml4ZXNbaXBhdCsrXTsKKworICAgICAgICAgICAgICAgIC8vIGN1cnMgaXMgYSBjb3B5IG9mIGN1cnNvciB0aGF0IGlzIGFkdmFuY2VkIG92ZXIgdGhlCisgICAgICAgICAgICAgICAgLy8gY2hhcmFjdGVycyBhcyB3ZSBwYXJzZSB0aGVtLgorICAgICAgICAgICAgICAgIGludCBjdXJzID0gY3Vyc29yOworICAgICAgICAgICAgICAgIGJvb2xlYW4gbWF0Y2ggPSB0cnVlOworCisgICAgICAgICAgICAgICAgZm9yIChpPTA7IGk8cHJlZml4TGVuOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnMgPj0gbGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID4gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkgbWF0Y2hlZCBhIGNoYXJhY3Rlci4gIFRoaXMgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhIHBhcnRpYWwgbWF0Y2gsIHNvIHdlIHJldHVybiBpZiBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluY3JlbWVudGFsIG1vZGUuICBJbiBub24taW5jcmVtZW50YWwgbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnbyB0byB0aGUgbmV4dCBzcGVjLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0luY3JlbWVudGFsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGxvb3A7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgY2hhciBjID0gdGV4dC5jaGFyQXQoY3VycysrKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgIT0gYWZmaXhlc1tpcGF0ICsgaV0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChtYXRjaCkgeworICAgICAgICAgICAgICAgICAgICBjaGFyIHUgPSAwOworICAgICAgICAgICAgICAgICAgICBpbnQgZGlnaXRDb3VudCA9IDA7CisgICAgICAgICAgICAgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJzID49IGxpbWl0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIHBhcnRpYWwgbWF0Y2ggaW4gaW5jcmVtZW50YWwgbW9kZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VycyA+IGN1cnNvciAmJiBpc0luY3JlbWVudGFsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGxvb3A7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRpZ2l0ID0gQ2hhcmFjdGVyLmRpZ2l0KHRleHQuY2hhckF0KGN1cnMpLCAxNik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGlnaXQgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICArK2N1cnM7CisgICAgICAgICAgICAgICAgICAgICAgICB1IDw8PSA0OworICAgICAgICAgICAgICAgICAgICAgICAgdSB8PSAoY2hhcikgZGlnaXQ7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKytkaWdpdENvdW50ID09IG1heERpZ2l0cykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSAoZGlnaXRDb3VudCA+PSBtaW5EaWdpdHMpOworCisgICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpPTA7IGk8c3VmZml4TGVuOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VycyA+PSBsaW1pdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBmb3IgcGFydGlhbCBtYXRjaCBpbiBpbmNyZW1lbnRhbCBtb2RlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VycyA+IGN1cnNvciAmJiBpc0luY3JlbWVudGFsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsb29wOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGMgPSB0ZXh0LmNoYXJBdChjdXJzKyspOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjICE9IGFmZml4ZXNbaXBhdCArIHByZWZpeExlbiArIGldKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCwgd2UgaGF2ZSBhIG1hdGNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC5yZXBsYWNlKGN1cnNvciwgY3VycywgU3RyaW5nLnZhbHVlT2YodSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0IC09IGN1cnMgLSBjdXJzb3IgLSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgYnJlYWsgc3RhdGVtZW50IGxlYXZlcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb29wIHRoYXQgaXMgdHJhdmVyc2luZyB0aGUgc3BlY3MgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhZmZpeGVzLiAgV2UgdGhlbiBwYXJzZSB0aGUgbmV4dCBpbnB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoYXJhY3Rlci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlwYXQgKz0gcHJlZml4TGVuICsgc3VmZml4TGVuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICArK2N1cnNvcjsKKyAgICAgICAgfQorCisgICAgICAgIG9mZnNldHMuY29udGV4dExpbWl0ICs9IGxpbWl0IC0gb2Zmc2V0cy5saW1pdDsKKyAgICAgICAgb2Zmc2V0cy5saW1pdCA9IGxpbWl0OworICAgICAgICBvZmZzZXRzLnN0YXJ0ID0gY3Vyc29yOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS90ZXh0L0xvd2VyY2FzZVRyYW5zbGl0ZXJhdG9yLmphdmEgYi9zcmMvY29tL2libS9pY3UvdGV4dC9Mb3dlcmNhc2VUcmFuc2xpdGVyYXRvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjViZTlkZDkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdGV4dC9Mb3dlcmNhc2VUcmFuc2xpdGVyYXRvci5qYXZhCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS90ZXh0L0xvd2VyY2FzZVRyYW5zbGl0ZXJhdG9yLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMTAvMzEgMjI6MzY6NDkgJCAKKyAqICRSZXZpc2lvbjogMS4xMyAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UudGV4dDsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLlVDaGFyYWN0ZXJQcm9wZXJ0eTsKKworLyoqCisgKiBBIHRyYW5zbGl0ZXJhdG9yIHRoYXQgcGVyZm9ybXMgbG9jYWxlLXNlbnNpdGl2ZSB0b0xvd2VyKCkKKyAqIGNhc2UgbWFwcGluZy4KKyAqLworY2xhc3MgTG93ZXJjYXNlVHJhbnNsaXRlcmF0b3IgZXh0ZW5kcyBUcmFuc2xpdGVyYXRvcnsKKworICAgIC8qKgorICAgICAqIFBhY2thZ2UgYWNjZXNzaWJsZSBJRC4KKyAgICAgKi8KKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIF9JRCA9ICJBbnktTG93ZXIiOworICAgIAorICAgIC8vIFRPRE86IEFkZCB2YXJpYW50cyBmb3IgdHIsIGF6LCBsdCwgZGVmYXVsdCA9IGRlZmF1bHQgbG9jYWxlCisKKyAgICAvKioKKyAgICAgKiBTeXN0ZW0gcmVnaXN0cmF0aW9uIGhvb2suCisgICAgICovCisgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXIoKSB7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yLnJlZ2lzdGVyRmFjdG9yeShfSUQsIG5ldyBUcmFuc2xpdGVyYXRvci5GYWN0b3J5KCkgeworICAgICAgICAgICAgcHVibGljIFRyYW5zbGl0ZXJhdG9yIGdldEluc3RhbmNlKFN0cmluZyBJRCkgeworICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTG93ZXJjYXNlVHJhbnNsaXRlcmF0b3IoTG9jYWxlLlVTKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IucmVnaXN0ZXJTcGVjaWFsSW52ZXJzZSgiTG93ZXIiLCAiVXBwZXIiLCB0cnVlKTsKKyAgICB9CisKKyAgICBwcml2YXRlIExvY2FsZSBsb2M7CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgdHJhbnNsaXRlcmF0b3IuCisgICAgICovCisKKyAgICBwdWJsaWMgTG93ZXJjYXNlVHJhbnNsaXRlcmF0b3IoTG9jYWxlIGxvYykgeworICAgICAgICBzdXBlcihfSUQsIG51bGwpOworICAgICAgICB0aGlzLmxvYyA9IGxvYzsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbXBsZW1lbnRzIHtAbGluayBUcmFuc2xpdGVyYXRvciNoYW5kbGVUcmFuc2xpdGVyYXRlfS4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVUcmFuc2xpdGVyYXRlKFJlcGxhY2VhYmxlIHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb3NpdGlvbiBvZmZzZXRzLCBib29sZWFuIGlzSW5jcmVtZW50YWwpIHsKKyAgICAgICAgaW50IHRleHRQb3MgPSBvZmZzZXRzLnN0YXJ0OworICAgICAgICBpZiAodGV4dFBvcyA+PSBvZmZzZXRzLmxpbWl0KSByZXR1cm47CisKKyAgICAgICAgLy8gZ2V0IHN0cmluZyBmb3IgY29udGV4dAorICAgICAgICAvLyBUT0RPOiBhZGQgY29udmVuaWVuY2UgbWV0aG9kIHRvIGRvIHRoaXMsIHNpbmNlIHdlIGRvIGl0IGFsbCBvdmVyCisgICAgICAgIAorICAgICAgICBVQ2hhcmFjdGVySXRlcmF0b3Igb3JpZ2luYWwgPSBVQ2hhcmFjdGVySXRlcmF0b3IuZ2V0SW5zdGFuY2UodGV4dCk7CisgICAgICAgIAorICAgICAgICAvLyBXYWxrIHRocm91Z2ggb3JpZ2luYWwgc3RyaW5nCisgICAgICAgIC8vIElmIHRoZXJlIGlzIGEgY2FzZSBjaGFuZ2UsIG1vZGlmeSBjb3JyZXNwb25kaW5nIHBvc2l0aW9uIGluIHJlcGxhY2VhYmxlCisgICAgICAgIAorICAgICAgICBpbnQgbGltaXQgPSBvZmZzZXRzLmxpbWl0OworICAgICAgICBpbnQgY3A7CisgICAgICAgIGludCBvbGRMZW47CisgICAgICAgIAorICAgICAgICB3aGlsZSAodGV4dFBvcyA8IGxpbWl0KSB7CisgICAgICAgIAlvcmlnaW5hbC5zZXRJbmRleCh0ZXh0UG9zKTsKKyAgICAgICAgICAgIGNwID0gb3JpZ2luYWwuY3VycmVudENvZGVQb2ludCgpOworICAgICAgICAgICAgb2xkTGVuID0gVVRGMTYuZ2V0Q2hhckNvdW50KGNwKTsKKyAgICAgICAgICAgIGludCBuZXdMZW4gPSBtX2NoYXJwcHR5Xy50b0xvd2VyQ2FzZShsb2MsIGNwLCBvcmlnaW5hbCwgYnVmZmVyKTsKKyAgICAgICAgICAgIGlmIChuZXdMZW4gPj0gMCkgeworICAgICAgICAgICAgICAgIHRleHQucmVwbGFjZSh0ZXh0UG9zLCB0ZXh0UG9zICsgb2xkTGVuLCBidWZmZXIsIDAsIG5ld0xlbik7CisgICAgICAgICAgICAgICAgaWYgKG5ld0xlbiAhPSBvbGRMZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgdGV4dFBvcyArPSBuZXdMZW47CisgICAgICAgICAgICAgICAgICAgIG9mZnNldHMubGltaXQgKz0gbmV3TGVuIC0gb2xkTGVuOworICAgICAgICAgICAgICAgICAgICBvZmZzZXRzLmNvbnRleHRMaW1pdCArPSBuZXdMZW4gLSBvbGRMZW47CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRleHRQb3MgKz0gb2xkTGVuOworICAgICAgICB9CisgICAgICAgIG9mZnNldHMuc3RhcnQgPSBvZmZzZXRzLmxpbWl0OworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIGNoYXIgYnVmZmVyW10gPSBuZXcgY2hhcltVQ2hhcmFjdGVyUHJvcGVydHkuTUFYX0NBU0VfTUFQX1NJWkVdOworICAgIC8qKgorICAgICAqIENoYXJhY3RlciBwcm9wZXJ0aWVzIGRhdGEgYmFzZQorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFVDaGFyYWN0ZXJQcm9wZXJ0eSBtX2NoYXJwcHR5XyA9IAorICAgIAkJCQkJCQkgICAgICAgICAgICBVQ2hhcmFjdGVyUHJvcGVydHkuZ2V0SW5zdGFuY2UoKTsgCit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvdGV4dC9ORlJ1bGUuamF2YSBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L05GUnVsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjQwNWY0MTgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdGV4dC9ORlJ1bGUuamF2YQpAQCAtMCwwICsxLDEzMzUgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS90ZXh0L05GUnVsZS5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzA3LzMxIDAwOjU0OjU4ICQgCisgKiAkUmV2aXNpb246IDEuNiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UudGV4dDsKKworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuVUNoYXJhY3RlclByb3BlcnR5OworCitpbXBvcnQgamF2YS50ZXh0Lio7CisKKy8qKgorICogQSBjbGFzcyByZXByZXNudGluZyBhIHNpbmdsZSBydWxlIGluIGEgUnVsZUJhc2VkTnVtYmVyRm9ybWF0LiAgQSBydWxlCisgKiBpbnNlcnRzIGl0cyB0ZXh0IGludG8gdGhlIHJlc3VsdCBzdHJpbmcgYW5kIHRoZW4gcGFzc2VzIGNvbnRyb2wgdG8gaXRzCisgKiBzdWJzdGl0dXRpb25zLCB3aGljaCBkbyB0aGUgc2FtZSB0aGluZy4KKyAqICRSQ1NmaWxlOiBORlJ1bGUuamF2YSx2ICQgJFJldmlzaW9uOiAxLjYgJCAkRGF0ZTogMjAwMi8wNy8zMSAwMDo1NDo1OCAkCisgKi8KK2ZpbmFsIGNsYXNzIE5GUnVsZSB7CisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIGNvbnN0YW50cworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIFB1dHMgYSBjb3B5cmlnaHQgaW4gdGhlIC5jbGFzcyBmaWxlCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodE5vdGljZQorICAgICAgICA9ICJDb3B5cmlnaHQgXHUwMGE5MTk5Ny0xOTk4IElCTSBDb3JwLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4iOworCisgICAgLyoqCisgICAgICogU3BlY2lhbCBiYXNlIHZhbHVlIHVzZWQgdG8gaWRlbnRpZnkgYSBuZWdhdGl2ZS1udW1iZXIgcnVsZQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE5FR0FUSVZFX05VTUJFUl9SVUxFID0gLTE7CisKKyAgICAvKioKKyAgICAgKiBTcGVjaWFsIGJhc2UgdmFsdWUgdXNlZCB0byBpZGVudGlmeSBhbiBpbXByb3BlciBmcmFjdGlvbiAoeC54KSBydWxlCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSU1QUk9QRVJfRlJBQ1RJT05fUlVMRSA9IC0yOworCisgICAgLyoqCisgICAgICogU3BlY2lhbCBiYXNlIHZhbHVlIHVzZWQgdG8gaWRlbnRpZnkgYSBwcm9wZXIgZnJhY3Rpb24gKDAueCkgcnVsZQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBST1BFUl9GUkFDVElPTl9SVUxFID0gLTM7CisKKyAgICAvKioKKyAgICAgKiBTcGVjaWFsIGJhc2UgdmFsdWUgdXNlZCB0byBpZGVudGlmeSBhIG1hc3RlciBydWxlCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTUFTVEVSX1JVTEUgPSAtNDsKKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBkYXRhIG1lbWJlcnMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBUaGUgcnVsZSdzIGJhc2UgdmFsdWUKKyAgICAgKi8KKyAgICBwcml2YXRlIGxvbmcgYmFzZVZhbHVlOworCisgICAgLyoqCisgICAgICogVGhlIHJ1bGUncyByYWRpeCAodGhlIHJhZGl4IHRvIHRoZSBwb3dlciBvZiB0aGUgZXhwb25lbnQgZXF1YWxzCisgICAgICogdGhlIHJ1bGUncyBkaXZpc29yKQorICAgICAqLworICAgIHByaXZhdGUgc2hvcnQgcmFkaXggPSAxMDsKKworICAgIC8qKgorICAgICAqIFRoZSBydWxlJ3MgZXhwb25lbnQgKHRoZSByYWR4IHJhc2VkIHRvIHRoZSBwb3dlciBvZiB0aGUgZXhwb25zbnQKKyAgICAgKiBlcXVhbHMgdGhlIHJ1bGUncyBkaXZpc29yKQorICAgICAqLworICAgIHByaXZhdGUgc2hvcnQgZXhwb25lbnQgPSAwOworCisgICAgLyoqCisgICAgICogVGhlIHJ1bGUncyBydWxlIHRleHQuICBXaGVuIGZvcm1hdHRpbmcgYSBudW1iZXIsIHRoZSBydWxlJ3MgdGV4dAorICAgICAqIGlzIGluc2VydGVkIGludG8gdGhlIHJlc3VsdCBzdHJpbmcsIGFuZCB0aGVuIHRoZSB0ZXh0IGZyb20gYW55CisgICAgICogc3Vic3RpdHV0aW9ucyBpcyBpbnNlcnRlZCBpbnRvIHRoZSByZXN1bHQgc3RyaW5nCisgICAgICovCisgICAgcHJpdmF0ZSBTdHJpbmcgcnVsZVRleHQgPSBudWxsOworCisgICAgLyoqCisgICAgICogVGhlIHJ1bGUncyBmaXJzdCBzdWJzdGl0dXRpb24gKHRoZSBvbmUgd2l0aCB0aGUgbG93ZXIgb2Zmc2V0CisgICAgICogaW50byB0aGUgcnVsZSB0ZXh0KQorICAgICAqLworICAgIHByaXZhdGUgTkZTdWJzdGl0dXRpb24gc3ViMSA9IG51bGw7CisKKyAgICAvKioKKyAgICAgKiBUaGUgcnVsZSdzIHNlY29uZCBzdWJzdGl0dXRpb24gKHRoZSBvbmUgd2l0aCB0aGUgaGlnaGVyIG9mZnNldAorICAgICAqIGludG8gdGhlIHJ1bGUgdGV4dCkKKyAgICAgKi8KKyAgICBwcml2YXRlIE5GU3Vic3RpdHV0aW9uIHN1YjIgPSBudWxsOworCisgICAgLyoqCisgICAgICogVGhlIFJ1bGVCYXNlZE51bWJlckZvcm1hdCB0aGF0IG93bnMgdGhpcyBydWxlCisgICAgICovCisgICAgcHJpdmF0ZSBSdWxlQmFzZWROdW1iZXJGb3JtYXQgZm9ybWF0dGVyID0gbnVsbDsKKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBjb25zdHJ1Y3Rpb24KKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIG9uZSBvciBtb3JlIHJ1bGVzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbiBwYXNzZWQgaW4uCisgICAgICogQHBhcmFtIGRlc2NyaXB0aW9uIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgcnVsZShzKS4KKyAgICAgKiBAcGFyYW0gb3duZXIgVGhlIHJ1bGUgc2V0IGNvbnRhaW5pbmcgdGhlIG5ldyBydWxlKHMpLgorICAgICAqIEBwYXJhbSBwcmVkZWNlc3NvciBUaGUgcnVsZSB0aGF0IHByZWNlZGVzIHRoZSBuZXcgb25lKHMpIGluICJvd25lciIncworICAgICAqIHJ1bGUgbGlzdAorICAgICAqIEBwYXJhbSBvd25lcnNPd25lciBUaGUgUnVsZUJhc2VkTnVtYmVyRm9ybWF0IHRoYXQgb3ducyB0aGUKKyAgICAgKiBydWxlIHNldCB0aGF0IG93bnMgdGhlIG5ldyBydWxlKHMpCisgICAgICogQHJldHVybiBBbiBpbnN0YW5jZSBvZiBORlJ1bGUsIG9yIGFuIGFycmF5IG9mIE5GUnVsZXMKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIE9iamVjdCBtYWtlUnVsZXMoU3RyaW5nICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORlJ1bGVTZXQgICAgICAgICAgICAgb3duZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5GUnVsZSAgICAgICAgICAgICAgICBwcmVkZWNlc3NvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkTnVtYmVyRm9ybWF0IG93bmVyc093bmVyKSB7CisgICAgICAgIC8vIHdlIGtub3cgd2UncmUgbWFraW5nIGF0IGxlYXN0IG9uZSBydWxlLCBzbyBnbyBhaGVhZCBhbmQKKyAgICAgICAgLy8gbmV3IGl0IHVwIGFuZCBpbml0aWFsaXplIGl0cyBiYXNldmFsdWUgYW5kIGRpdmlzb3IKKyAgICAgICAgLy8gKHRoaXMgYWxzbyBzdHJpcHMgdGhlIHJ1bGUgZGVzY3JpcHRvciwgaWYgYW55LCBvZmYgdGhlCisgICAgICAgIC8vIGRlc2NyaXB0b24gc3RyaW5nKQorICAgICAgICBORlJ1bGUgcnVsZTEgPSBuZXcgTkZSdWxlKG93bmVyc093bmVyKTsKKyAgICAgICAgZGVzY3JpcHRpb24gPSBydWxlMS5wYXJzZVJ1bGVEZXNjcmlwdG9yKGRlc2NyaXB0aW9uKTsKKworICAgICAgICAvLyBjaGVjayB0aGUgZGVzY3JpcHRpb24gdG8gc2VlIHdoZXRoZXIgdGhlcmUncyB0ZXh0IGVuY2xvc2VkCisgICAgICAgIC8vIGluIGJyYWNrZXRzCisgICAgICAgIGludCBicmFjazEgPSBkZXNjcmlwdGlvbi5pbmRleE9mKCJbIik7CisgICAgICAgIGludCBicmFjazIgPSBkZXNjcmlwdGlvbi5pbmRleE9mKCJdIik7CisKKyAgICAgICAgLy8gaWYgdGhlIGRlc2NyaXB0aW9uIGRvZXNuJ3QgY29udGFpbiBhIG1hdGNoZWQgcGFpciBvZiBicmFja2V0cywKKyAgICAgICAgLy8gb3IgaWYgaXQncyBvZiBhIHR5cGUgdGhhdCBkb2Vzbid0IHJlY29nbml6ZSBicmFja2V0ZWQgdGV4dCwKKyAgICAgICAgLy8gdGhlbiBsZWF2ZSB0aGUgZGVzY3JpcHRpb24gYWxvbmUsIGluaXRpYWxpemUgdGhlIHJ1bGUncworICAgICAgICAvLyBydWxlIHRleHQgYW5kIHN1YnN0aXR1dGlvbnMsIGFuZCByZXR1cm4gdGhhdCBydWxlCisgICAgICAgIGlmIChicmFjazEgPT0gLTEgfHwgYnJhY2syID09IC0xIHx8IGJyYWNrMSA+IGJyYWNrMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHJ1bGUxLmdldEJhc2VWYWx1ZSgpID09IFBST1BFUl9GUkFDVElPTl9SVUxFCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgcnVsZTEuZ2V0QmFzZVZhbHVlKCkgPT0gTkVHQVRJVkVfTlVNQkVSX1JVTEUpIHsKKyAgICAgICAgICAgIHJ1bGUxLnJ1bGVUZXh0ID0gZGVzY3JpcHRpb247CisgICAgICAgICAgICBydWxlMS5leHRyYWN0U3Vic3RpdHV0aW9ucyhvd25lciwgcHJlZGVjZXNzb3IsIG93bmVyc093bmVyKTsKKyAgICAgICAgICAgIHJldHVybiBydWxlMTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIGlmIHRoZSBkZXNjcmlwdGlvbiBkb2VzIGNvbnRhaW4gYSBtYXRjaGVkIHBhaXIgb2YgYnJhY2tldHMsCisgICAgICAgICAgICAvLyB0aGVuIGl0J3MgcmVhbGx5IHNob3J0aGFuZCBmb3IgdHdvIHJ1bGVzICh3aXRoIG9uZSBleGNlcHRpb24pCisgICAgICAgICAgICBORlJ1bGUgcnVsZTIgPSBudWxsOworICAgICAgICAgICAgU3RyaW5nQnVmZmVyIHNidWYgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisKKyAgICAgICAgICAgIC8vIHdlJ2xsIGFjdHVhbGx5IG9ubHkgc3BsaXQgdGhlIHJ1bGUgaW50byB0d28gcnVsZXMgaWYgaXRzCisgICAgICAgICAgICAvLyBiYXNlIHZhbHVlIGlzIGFuIGV2ZW4gbXVsdGlwbGUgb2YgaXRzIGRpdmlzb3IgKG9yIGl0J3Mgb25lCisgICAgICAgICAgICAvLyBvZiB0aGUgc3BlY2lhbCBydWxlcykKKyAgICAgICAgICAgIGlmICgocnVsZTEuYmFzZVZhbHVlID4gMAorICAgICAgICAgICAgICAgICAgICAmJiBydWxlMS5iYXNlVmFsdWUgJSAoTWF0aC5wb3cocnVsZTEucmFkaXgsIHJ1bGUxLmV4cG9uZW50KSkgPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgfHwgcnVsZTEuYmFzZVZhbHVlID09IElNUFJPUEVSX0ZSQUNUSU9OX1JVTEUKKyAgICAgICAgICAgICAgICAgICAgfHwgcnVsZTEuYmFzZVZhbHVlID09IE1BU1RFUl9SVUxFKSB7CisKKyAgICAgICAgICAgICAgICAvLyBpZiBpdCBwYXNzZXMgdGhhdCB0ZXN0LCBuZXcgdXAgdGhlIHNlY29uZCBydWxlLiAgSWYgdGhlCisgICAgICAgICAgICAgICAgLy8gcnVsZSBzZXQgYm90aCBydWxlcyB3aWxsIGJlbG9uZyB0byBpcyBhIGZyYWN0aW9uIHJ1bGUKKyAgICAgICAgICAgICAgICAvLyBzZXQsIHRoZXkgYm90aCBoYXZlIHRoZSBzYW1lIGJhc2UgdmFsdWU7IG90aGVyd2lzZSwKKyAgICAgICAgICAgICAgICAvLyBpbmNyZW1lbnQgdGhlIG9yaWdpbmFsIHJ1bGUncyBiYXNlIHZhbHVlICgicnVsZTEiIGFjdHVhbGx5CisgICAgICAgICAgICAgICAgLy8gZ29lcyBTRUNPTkQgaW4gdGhlIHJ1bGUgc2V0J3MgcnVsZSBsaXN0KQorICAgICAgICAgICAgICAgIHJ1bGUyID0gbmV3IE5GUnVsZShvd25lcnNPd25lcik7CisgICAgICAgICAgICAgICAgaWYgKHJ1bGUxLmJhc2VWYWx1ZSA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIHJ1bGUyLmJhc2VWYWx1ZSA9IHJ1bGUxLmJhc2VWYWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFvd25lci5pc0ZyYWN0aW9uU2V0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrcnVsZTEuYmFzZVZhbHVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gaWYgdGhlIGRlc2NyaXB0aW9uIGJlZ2FuIHdpdGggIngueCIgYW5kIGNvbnRhaW5zIGJyYWNrZXRlZAorICAgICAgICAgICAgICAgIC8vIHRleHQsIGl0IGRlc2NyaWJlcyBib3RoIHRoZSBpbXByb3BlciBmcmFjdGlvbiBydWxlIGFuZAorICAgICAgICAgICAgICAgIC8vIHRoZSBwcm9wZXIgZnJhY3Rpb24gcnVsZQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJ1bGUxLmJhc2VWYWx1ZSA9PSBJTVBST1BFUl9GUkFDVElPTl9SVUxFKSB7CisgICAgICAgICAgICAgICAgICAgIHJ1bGUyLmJhc2VWYWx1ZSA9IFBST1BFUl9GUkFDVElPTl9SVUxFOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBkZXNjcmlwdGlvbiBiZWdhbiB3aXRoICJ4LjAiIGFuZCBjb250YWlucyBicmFja2V0ZWQKKyAgICAgICAgICAgICAgICAvLyB0ZXh0LCBpdCBkZXNjcmliZXMgYm90aCB0aGUgbWFzdGVyIHJ1bGUgYW5kIHRoZQorICAgICAgICAgICAgICAgIC8vIGltcHJvcGVyIGZyYWN0aW9uIHJ1bGUKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChydWxlMS5iYXNlVmFsdWUgPT0gTUFTVEVSX1JVTEUpIHsKKyAgICAgICAgICAgICAgICAgICAgcnVsZTIuYmFzZVZhbHVlID0gcnVsZTEuYmFzZVZhbHVlOworICAgICAgICAgICAgICAgICAgICBydWxlMS5iYXNlVmFsdWUgPSBJTVBST1BFUl9GUkFDVElPTl9SVUxFOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIGJvdGggcnVsZXMgaGF2ZSB0aGUgc2FtZSByYWRpeCBhbmQgZXhwb25lbnQgKGkuZS4sIHRoZQorICAgICAgICAgICAgICAgIC8vIHNhbWUgZGl2aXNvcikKKyAgICAgICAgICAgICAgICBydWxlMi5yYWRpeCA9IHJ1bGUxLnJhZGl4OworICAgICAgICAgICAgICAgIHJ1bGUyLmV4cG9uZW50ID0gcnVsZTEuZXhwb25lbnQ7CisKKyAgICAgICAgICAgICAgICAvLyBydWxlMidzIHJ1bGUgdGV4dCBvbWl0cyB0aGUgc3R1ZmYgaW4gYnJhY2tldHM6IGluaXRhbGl6ZQorICAgICAgICAgICAgICAgIC8vIGl0cyBydWxlIHRleHQgYW5kIHN1YnN0aXR1dGlvbnMgYWNjb3JkaW5nbHkKKyAgICAgICAgICAgICAgICBzYnVmLmFwcGVuZChkZXNjcmlwdGlvbi5zdWJzdHJpbmcoMCwgYnJhY2sxKSk7CisgICAgICAgICAgICAgICAgaWYgKGJyYWNrMiArIDEgPCBkZXNjcmlwdGlvbi5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgICAgICBzYnVmLmFwcGVuZChkZXNjcmlwdGlvbi5zdWJzdHJpbmcoYnJhY2syICsgMSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBydWxlMi5ydWxlVGV4dCA9IHNidWYudG9TdHJpbmcoKTsKKyAgICAgICAgICAgICAgICBydWxlMi5leHRyYWN0U3Vic3RpdHV0aW9ucyhvd25lciwgcHJlZGVjZXNzb3IsIG93bmVyc093bmVyKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gcnVsZTEncyB0ZXh0IGluY2x1ZGVzIHRoZSB0ZXh0IGluIHRoZSBicmFja2V0cyBidXQgb21pdHMKKyAgICAgICAgICAgIC8vIHRoZSBicmFja2V0cyB0aGVtc2VsdmVzOiBpbml0aWFsaXplIF9pdHNfIHJ1bGUgdGV4dCBhbmQKKyAgICAgICAgICAgIC8vIHN1YnN0aXR1dGlvbnMgYWNjb3JkaW5nbHkKKyAgICAgICAgICAgIHNidWYuc2V0TGVuZ3RoKDApOworICAgICAgICAgICAgc2J1Zi5hcHBlbmQoZGVzY3JpcHRpb24uc3Vic3RyaW5nKDAsIGJyYWNrMSkpOworICAgICAgICAgICAgc2J1Zi5hcHBlbmQoZGVzY3JpcHRpb24uc3Vic3RyaW5nKGJyYWNrMSArIDEsIGJyYWNrMikpOworICAgICAgICAgICAgaWYgKGJyYWNrMiArIDEgPCBkZXNjcmlwdGlvbi5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIHNidWYuYXBwZW5kKGRlc2NyaXB0aW9uLnN1YnN0cmluZyhicmFjazIgKyAxKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBydWxlMS5ydWxlVGV4dCA9IHNidWYudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIHJ1bGUxLmV4dHJhY3RTdWJzdGl0dXRpb25zKG93bmVyLCBwcmVkZWNlc3Nvciwgb3duZXJzT3duZXIpOworCisgICAgICAgICAgICAvLyBpZiB3ZSBvbmx5IGhhdmUgb25lIHJ1bGUsIHJldHVybiBpdDsgaWYgd2UgaGF2ZSB0d28sIHJldHVybgorICAgICAgICAgICAgLy8gYSB0d28tZWxlbWVudCBhcnJheSBjb250YWluaW5nIHRoZW0gKG5vdGljZSB0aGF0IHJ1bGUyIGdvZXMKKyAgICAgICAgICAgIC8vIEJFRk9SRSBydWxlMSBpbiB0aGUgbGlzdDogaW4gYWxsIGNhc2VzLCBydWxlMiBPTUlUUyB0aGUKKyAgICAgICAgICAgIC8vIG1hdGVyaWFsIGluIHRoZSBicmFja2V0cyBhbmQgcnVsZTEgSU5DTFVERVMgdGhlIG1hdGVyaWFsCisgICAgICAgICAgICAvLyBpbiB0aGUgYnJhY2tldHMpCisgICAgICAgICAgICBpZiAocnVsZTIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJldHVybiBydWxlMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBORlJ1bGVbXSB7IHJ1bGUyLCBydWxlMSB9OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogTm9taW5hbCBjb25zdHJ1Y3RvciBmb3IgTkZSdWxlLiAgTW9zdCBvZiB0aGUgd29yayBvZiBjb25zdHJ1Y3RpbmcKKyAgICAgKiBhbiBORlJ1bGUgaXMgYWN0dWFsbHkgcGVyZm9ybWVkIGJ5IG1ha2VSdWxlcygpLgorICAgICAqLworICAgIHB1YmxpYyBORlJ1bGUoUnVsZUJhc2VkTnVtYmVyRm9ybWF0IGZvcm1hdHRlcikgeworICAgICAgICB0aGlzLmZvcm1hdHRlciA9IGZvcm1hdHRlcjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgcnVsZSdzIHJ1bGUgZGVzY3JpcHRvciAoaS5lLiwgdGhlIGJhc2UKKyAgICAgKiB2YWx1ZSBhbmQvb3Igb3RoZXIgdG9rZW5zIHRoYXQgcHJlY2VkZSB0aGUgcnVsZSdzIHJ1bGUgdGV4dAorICAgICAqIGluIHRoZSBkZXNjcmlwdGlvbikgYW5kIHNldHMgdGhlIHJ1bGUncyBiYXNlIHZhbHVlLCByYWRpeCwgYW5kCisgICAgICogZXhwb25lbnQgYWNjb3JkaW5nIHRvIHRoZSBkZXNjcmlwdG9yLiAgKElmIHRoZSBkZXNjcmlwdGlvbiBkb2Vzbid0CisgICAgICogaW5jbHVkZSBhIHJ1bGUgZGVzY3JpcHRvciwgdGhlbiB0aGlzIGZ1bmN0aW9uIHNldHMgZXZlcnl0aGluZyB0bworICAgICAqIGRlZmF1bHQgdmFsdWVzIGFuZCB0aGUgcnVsZSBzZXQgc2V0cyB0aGUgcnVsZSdzIHJlYWwgYmFzZSB2YWx1ZSkuCisgICAgICogQHBhcmFtIGRlc2NyaXB0aW9uIFRoZSBydWxlJ3MgZGVzY3JpcHRpb24KKyAgICAgKiBAcmV0dXJuIElmICJkZXNjcmlwdGlvbiIgaW5jbHVkZWQgYSBydWxlIGRlc2NyaXB0b3IsIHRoaXMgaXMKKyAgICAgKiAiZGVzY3JpcHRpb24iIHdpdGggdGhlIGRlc2NyaXB0b3IgYW5kIGFueSB0cmFpbGluZyB3aGl0ZXNwYWNlCisgICAgICogc3RyaXBwZWQgb2ZmLiAgT3RoZXJ3aXNlOyBpdCdzICJkZXNjcmlwdG9yIiB1bmNoYW5nZC4KKyAgICAgKi8KKyAgICBwcml2YXRlIFN0cmluZyBwYXJzZVJ1bGVEZXNjcmlwdG9yKFN0cmluZyBkZXNjcmlwdGlvbikgeworICAgICAgICBTdHJpbmcgZGVzY3JpcHRvcjsKKworICAgICAgICAvLyB0aGUgZGVzY3JpcHRpb24gY29uc2lzdHMgb2YgYSBydWxlIGRlc2NyaXB0b3IgYW5kIGEgcnVsZSBib2R5LAorICAgICAgICAvLyBzZXBhcmF0ZWQgYnkgYSBjb2xvbi4gIFRoZSBydWxlIGRlc2NyaXB0b3IgaXMgb3B0aW9uYWwuICBJZgorICAgICAgICAvLyBpdCdzIG9taXR0ZWQsIGp1c3Qgc2V0IHRoZSBiYXNlIHZhbHVlIHRvIDAuCisgICAgICAgIGludCBwID0gZGVzY3JpcHRpb24uaW5kZXhPZigiOiIpOworICAgICAgICBpZiAocCA9PSAtMSkgeworICAgICAgICAgICAgc2V0QmFzZVZhbHVlKDApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gY29weSB0aGUgZGVzY3JpcHRvciBvdXQgaW50byBpdHMgb3duIHN0cmluZyBhbmQgc3RyaXAgaXQsCisgICAgICAgICAgICAvLyBhbG9uZyB3aXRoIGFueSB0cmFpbGluZyB3aGl0ZXNwYWNlLCBvdXQgb2YgdGhlIG9yaWdpbmFsCisgICAgICAgICAgICAvLyBkZXNjcmlwdGlvbgorICAgICAgICAgICAgZGVzY3JpcHRvciA9IGRlc2NyaXB0aW9uLnN1YnN0cmluZygwLCBwKTsKKyAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgIHdoaWxlIChwIDwgZGVzY3JpcHRpb24ubGVuZ3RoKCkgJiYgVUNoYXJhY3RlclByb3BlcnR5LmlzUnVsZVdoaXRlU3BhY2UoZGVzY3JpcHRpb24uY2hhckF0KHApKSkKKyAgICAgICAgICAgICAgICArK3A7CisgICAgICAgICAgICBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uLnN1YnN0cmluZyhwKTsKKworICAgICAgICAgICAgLy8gY2hlY2sgZmlyc3QgdG8gc2VlIGlmIHRoZSBydWxlIGRlc2NyaXB0b3IgbWF0Y2hlcyB0aGUgdG9rZW4KKyAgICAgICAgICAgIC8vIGZvciBvbmUgb2YgdGhlIHNwZWNpYWwgcnVsZXMuICBJZiBpdCBkb2VzLCBzZXQgdGhlIGJhc2UKKyAgICAgICAgICAgIC8vIHZhbHVlIHRvIHRoZSBjb3JyZWN0IGlkZW50ZmllciB2YWx1ZQorICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3IuZXF1YWxzKCIteCIpKSB7CisgICAgICAgICAgICAgICAgc2V0QmFzZVZhbHVlKE5FR0FUSVZFX05VTUJFUl9SVUxFKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGRlc2NyaXB0b3IuZXF1YWxzKCJ4LngiKSkgeworICAgICAgICAgICAgICAgIHNldEJhc2VWYWx1ZShJTVBST1BFUl9GUkFDVElPTl9SVUxFKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGRlc2NyaXB0b3IuZXF1YWxzKCIwLngiKSkgeworICAgICAgICAgICAgICAgIHNldEJhc2VWYWx1ZShQUk9QRVJfRlJBQ1RJT05fUlVMRSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChkZXNjcmlwdG9yLmVxdWFscygieC4wIikpIHsKKyAgICAgICAgICAgICAgICBzZXRCYXNlVmFsdWUoTUFTVEVSX1JVTEUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBpZiB0aGUgcnVsZSBkZXNjcmlwdG9yIGJlZ2lucyB3aXRoIGEgZGlnaXQsIGl0J3MgYSBkZXNjcmlwdG9yCisgICAgICAgICAgICAvLyBmb3IgYSBub3JtYWwgcnVsZQorICAgICAgICAgICAgZWxzZSBpZiAoZGVzY3JpcHRvci5jaGFyQXQoMCkgPj0gJzAnICYmIGRlc2NyaXB0b3IuY2hhckF0KDApIDw9ICc5JykgeworICAgICAgICAgICAgICAgIFN0cmluZ0J1ZmZlciB0ZW1wVmFsdWUgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgICAgICAgICAgcCA9IDA7CisgICAgICAgICAgICAgICAgY2hhciBjID0gJyAnOworCisgICAgICAgICAgICAgICAgLy8gYmVnaW4gcGFyc2luZyB0aGUgZGVzY3JpcHRvcjogY29weSBkaWdpdHMKKyAgICAgICAgICAgICAgICAvLyBpbnRvICJ0ZW1wVmFsdWUiLCBza2lwIHBlcmlvZHMsIGNvbW1hcywgYW5kIHNwYWNlcywKKyAgICAgICAgICAgICAgICAvLyBzdG9wIG9uIGEgc2xhc2ggb3IgPiBzaWduIChvciBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcpLAorICAgICAgICAgICAgICAgIC8vIGFuZCB0aHJvdyBhbiBleGNlcHRpb24gb24gYW55IG90aGVyIGNoYXJhY3RlcgorICAgICAgICAgICAgICAgIHdoaWxlIChwIDwgZGVzY3JpcHRvci5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgICAgICBjID0gZGVzY3JpcHRvci5jaGFyQXQocCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjID49ICcwJyAmJiBjIDw9ICc5JykgeworICAgICAgICAgICAgICAgICAgICAgICAgdGVtcFZhbHVlLmFwcGVuZChjKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjID09ICcvJyB8fCBjID09ICc+JykgeworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoVUNoYXJhY3RlclByb3BlcnR5LmlzUnVsZVdoaXRlU3BhY2UoYykgfHwgYyA9PSAnLCcgfHwgYyA9PSAnLicpIHsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIklsbGVnYWwgY2hhcmFjdGVyIGluIHJ1bGUgZGVzY3JpcHRvciIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyB0ZW1wVmFsdWUgbm93IGNvbnRhaW5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZQorICAgICAgICAgICAgICAgIC8vIHJ1bGUncyBiYXNlIHZhbHVlIHdpdGggdGhlIHB1bmN0dWF0aW9uIHN0cmlwcGVkIG91dC4KKyAgICAgICAgICAgICAgICAvLyBTZXQgdGhlIHJ1bGUncyBiYXNlIHZhbHVlIGFjY29yZGluZ2x5CisgICAgICAgICAgICAgICAgc2V0QmFzZVZhbHVlKExvbmcucGFyc2VMb25nKHRlbXBWYWx1ZS50b1N0cmluZygpKSk7CisKKyAgICAgICAgICAgICAgICAvLyBpZiB3ZSBzdG9wcGVkIHRoZSBwcmV2aW91cyBsb29wIG9uIGEgc2xhc2gsIHdlJ3JlCisgICAgICAgICAgICAgICAgLy8gbm93IHBhcnNpbmcgdGhlIHJ1bGUncyByYWRpeC4gIEFnYWluLCBhY2N1bXVsYXRlIGRpZ2l0cworICAgICAgICAgICAgICAgIC8vIGluIHRlbXBWYWx1ZSwgc2tpcCBwdW5jdHVhdGlvbiwgc3RvcCBvbiBhID4gbWFyaywgYW5kCisgICAgICAgICAgICAgICAgLy8gdGhyb3cgYW4gZXhjZXB0aW9uIG9uIGFueXRoaW5nIGVsc2UKKyAgICAgICAgICAgICAgICBpZiAoYyA9PSAnLycpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVtcFZhbHVlLnNldExlbmd0aCgwKTsKKyAgICAgICAgICAgICAgICAgICAgKytwOworICAgICAgICAgICAgICAgICAgICB3aGlsZSAocCA8IGRlc2NyaXB0b3IubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBkZXNjcmlwdG9yLmNoYXJBdChwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID49ICcwJyAmJiBjIDw9ICc5JykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBWYWx1ZS5hcHBlbmQoYyk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjID09ICc+JykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoVUNoYXJhY3RlclByb3BlcnR5LmlzUnVsZVdoaXRlU3BhY2UoYykgfHwgYyA9PSAnLCcgfHwgYyA9PSAnLicpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIklsbGVnYWwgY2hhcmFjdGVyIGlzIHJ1bGUgZGVzY3JpcHRvciIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgKytwOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgLy8gdGVtcFZhbHVlIG5vdyBjb250YWluJ3MgdGhlIHJ1bGUncyByYWRpeC4gIFNldCBpdAorICAgICAgICAgICAgICAgICAgICAvLyBhY2NvcmRpbmdseSwgYW5kIHJlY2FsY3VsYXRlIHRoZSBydWxlJ3MgZXhwb25lbnQKKyAgICAgICAgICAgICAgICAgICAgcmFkaXggPSBTaG9ydC5wYXJzZVNob3J0KHRlbXBWYWx1ZS50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJhZGl4ID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlJ1bGUgY2FuJ3QgaGF2ZSByYWRpeCBvZiAwIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZXhwb25lbnQgPSBleHBlY3RlZEV4cG9uZW50KCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gaWYgd2Ugc3RvcHBlZCB0aGUgcHJldmlvdXMgbG9vcCBvbiBhID4gc2lnbiwgdGhlbiBjb250aW51ZQorICAgICAgICAgICAgICAgIC8vIGZvciBhcyBsb25nIGFzIHdlIHN0aWxsIHNlZSA+IHNpZ25zLiAgRm9yIGVhY2ggb25lLAorICAgICAgICAgICAgICAgIC8vIGRlY3JlbWVudCB0aGUgZXhwb25lbnQgKHVubGVzcyB0aGUgZXhwb25lbnQgaXMgYWxyZWFkeSAwKS4KKyAgICAgICAgICAgICAgICAvLyBJZiB3ZSBzZWUgYW5vdGhlciBjaGFyYWN0ZXIgYmVmb3JlIHJlYWNoaW5nIHRoZSBlbmQgb2YKKyAgICAgICAgICAgICAgICAvLyB0aGUgZGVzY3JpcHRvciwgdGhhdCdzIGFsc28gYSBzeW50YXggZXJyb3IuCisgICAgICAgICAgICAgICAgaWYgKGMgPT0gJz4nKSB7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlIChwIDwgZGVzY3JpcHRvci5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGRlc2NyaXB0b3IuY2hhckF0KHApOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJz4nICYmIGV4cG9uZW50ID4gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZXhwb25lbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIklsbGVnYWwgY2hhcmFjdGVyIGluIHJ1bGUgZGVzY3JpcHRvciIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgKytwOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gZmluYWxseSwgaWYgdGhlIHJ1bGUgYm9keSBiZWdpbnMgd2l0aCBhbiBhcG9zdHJvcGhlLCBzdHJpcCBpdCBvZmYKKyAgICAgICAgLy8gKHRoaXMgaXMgZ2VuZXJhbGx5IHVzZWQgdG8gcHV0IHdoaXRlc3BhY2UgYXQgdGhlIGJlZ2lubmluZyBvZgorICAgICAgICAvLyBhIHJ1bGUncyBydWxlIHRleHQpCisgICAgICAgIGlmIChkZXNjcmlwdGlvbi5sZW5ndGgoKSA+IDAgJiYgZGVzY3JpcHRpb24uY2hhckF0KDApID09ICdcJycpIHsKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24uc3Vic3RyaW5nKDEpOworICAgICAgICB9CisKKyAgICAgICAgLy8gcmV0dXJuIHRoZSBkZXNjcmlwdGlvbiB3aXRoIGFsbCB0aGUgc3R1ZmYgd2UndmUganVzdCB3YWRlZCB0aHJvdWdoCisgICAgICAgIC8vIHN0cmlwcGVkIG9mZiB0aGUgZnJvbnQuICBJdCBub3cgY29udGFpbnMganVzdCB0aGUgcnVsZSBib2R5LgorICAgICAgICByZXR1cm4gZGVzY3JpcHRpb247CisgICAgfQorCisgICAgLyoqCisgICAgICogU2VhcmNoZXMgdGhlIHJ1bGUncyBydWxlIHRleHQgZm9yIHRoZSBzdWJzdGl0dXRpb24gdG9rZW5zLAorICAgICAqIGNyZWF0ZXMgdGhlIHN1YnN0aXR1dGlvbnMsIGFuZCByZW1vdmVzIHRoZSBzdWJzdGl0dXRpb24gdG9rZW5zCisgICAgICogZnJvbSB0aGUgcnVsZSdzIHJ1bGUgdGV4dC4KKyAgICAgKiBAcGFyYW0gb3duZXIgVGhlIHJ1bGUgc2V0IGNvbnRhaW5pbmcgdGhpcyBydWxlCisgICAgICogQHBhcmFtIHByZWRlY2Vzc29yIFRoZSBydWxlIHByZXNlZGluZyB0aGlzIG9uZSBpbiAib3duZXJzIiBydWxlIGxpc3QKKyAgICAgKiBAcGFyYW0gb3duZXJzT3duZXIgVGhlIFJ1bGVCYXNlZEZvcm1hdCB0aGF0IG93bnMgdGhpcyBydWxlCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIGV4dHJhY3RTdWJzdGl0dXRpb25zKE5GUnVsZVNldCAgICAgICAgICAgICBvd25lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkZSdWxlICAgICAgICAgICAgICAgIHByZWRlY2Vzc29yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdWxlQmFzZWROdW1iZXJGb3JtYXQgb3duZXJzT3duZXIpIHsKKyAgICAgICAgc3ViMSA9IGV4dHJhY3RTdWJzdGl0dXRpb24ob3duZXIsIHByZWRlY2Vzc29yLCBvd25lcnNPd25lcik7CisgICAgICAgIHN1YjIgPSBleHRyYWN0U3Vic3RpdHV0aW9uKG93bmVyLCBwcmVkZWNlc3Nvciwgb3duZXJzT3duZXIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNlYXJjaGVzIHRoZSBydWxlJ3MgcnVsZSB0ZXh0IGZvciB0aGUgZmlyc3Qgc3Vic3RpdHV0aW9uIHRva2VuLAorICAgICAqIGNyZWF0ZXMgYSBzdWJzdGl0dXRpb24gYmFzZWQgb24gaXQsIGFuZCByZW1vdmVzIHRoZSB0b2tlbiBmcm9tCisgICAgICogdGhlIHJ1bGUncyBydWxlIHRleHQuCisgICAgICogQHBhcmFtIG93bmVyIFRoZSBydWxlIHNldCBjb250YWluaW5nIHRoaXMgcnVsZQorICAgICAqIEBwYXJhbSBwcmVkZWNlc3NvciBUaGUgcnVsZSBwcmVjZWRpbmcgdGhpcyBvbmUgaW4gdGhlIHJ1bGUgc2V0J3MKKyAgICAgKiBydWxlIGxpc3QKKyAgICAgKiBAcGFyYW0gb3duZXJzT3duZXIgVGhlIFJ1bGVCYXNlZE51bWJlckZvcm1hdCB0aGF0IG93bnMgdGhpcyBydWxlCisgICAgICogQHJldHVybiBUaGUgbmV3bHktY3JlYXRlZCBzdWJzdGl0dXRpb24uICBUaGlzIGlzIG5ldmVyIG51bGw7IGlmCisgICAgICogdGhlIHJ1bGUgdGV4dCBkb2Vzbid0IGNvbnRhaW4gYW55IHN1YnN0aXR1dGlvbiB0b2tlbnMsIHRoaXMgd2lsbAorICAgICAqIGJlIGEgTnVsbFN1YnN0aXR1dGlvbi4KKyAgICAgKi8KKyAgICBwcml2YXRlIE5GU3Vic3RpdHV0aW9uIGV4dHJhY3RTdWJzdGl0dXRpb24oTkZSdWxlU2V0ICAgICAgICAgICAgIG93bmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORlJ1bGUgICAgICAgICAgICAgICAgcHJlZGVjZXNzb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZE51bWJlckZvcm1hdCBvd25lcnNPd25lcikgeworICAgICAgICBORlN1YnN0aXR1dGlvbiByZXN1bHQgPSBudWxsOworICAgICAgICBpbnQgc3ViU3RhcnQ7CisgICAgICAgIGludCBzdWJFbmQ7CisKKyAgICAgICAgLy8gc2VhcmNoIHRoZSBydWxlJ3MgcnVsZSB0ZXh0IGZvciB0aGUgZmlyc3QgdHdvIGNoYXJhY3RlcnMgb2YKKyAgICAgICAgLy8gYSBzdWJzdGl0dXRpb24gdG9rZW4KKyAgICAgICAgc3ViU3RhcnQgPSBpbmRleE9mQW55KG5ldyBTdHJpbmdbXSB7ICI8PCIsICI8JSIsICI8IyIsICI8MCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPj4iLCAiPiUiLCAiPiMiLCAiPjAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIj0lIiwgIj0jIiwgIj0wIiB9ICk7CisKKyAgICAgICAgLy8gaWYgd2UgZGlkbid0IGZpbmQgb25lLCBjcmVhdGUgYSBudWxsIHN1YnN0aXR1dGlvbiBwb3NpdGlvbmVkCisgICAgICAgIC8vIGF0IHRoZSBlbmQgb2YgdGhlIHJ1bGUgdGV4dAorICAgICAgICBpZiAoc3ViU3RhcnQgPT0gLTEpIHsKKyAgICAgICAgICAgIHJldHVybiBORlN1YnN0aXR1dGlvbi5tYWtlU3Vic3RpdHV0aW9uKHJ1bGVUZXh0Lmxlbmd0aCgpLCB0aGlzLCBwcmVkZWNlc3NvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvd25lciwgb3duZXJzT3duZXIsICIiKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIHNwZWNpYWwtY2FzZSB0aGUgIj4+PiIgdG9rZW4sIHNpbmNlIHNlYXJjaGluZyBmb3IgdGhlID4gYXQgdGhlCisgICAgICAgIC8vIGVuZCB3aWxsIGFjdHVhbGx5IGZpbmQgdGhlID4gaW4gdGhlIG1pZGRsZQorICAgICAgICBpZiAocnVsZVRleHQuc3Vic3RyaW5nKHN1YlN0YXJ0KS5zdGFydHNXaXRoKCI+Pj4iKSkgeworICAgICAgICAgICAgc3ViRW5kID0gc3ViU3RhcnQgKyAyOworCisgICAgICAgIC8vIG90aGVyd2lzZSB0aGUgc3Vic3RpdHV0aW9uIHRva2VuIGVuZHMgd2l0aCB0aGUgc2FtZSBjaGFyYWN0ZXIKKyAgICAgICAgLy8gaXQgYmVnYW4gd2l0aAorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc3ViRW5kID0gcnVsZVRleHQuaW5kZXhPZihydWxlVGV4dC5jaGFyQXQoc3ViU3RhcnQpLCBzdWJTdGFydCArIDEpOworICAgICAgICB9CisKKyAgICAgICAgLy8gaWYgd2UgZG9uJ3QgZmluZCB0aGUgZW5kIG9mIHRoZSB0b2tlbiAoaS5lLiwgaWYgd2UncmUgb24gYSBzaW5nbGUsCisgICAgICAgIC8vIHVubWF0Y2hlZCB0b2tlbiBjaGFyYWN0ZXIpLCBjcmVhdGUgYSBudWxsIHN1YnN0aXR1dGlvbiBwb3NpdGlvbmVkCisgICAgICAgIC8vIGF0IHRoZSBlbmQgb2YgdGhlIHJ1bGUKKyAgICAgICAgaWYgKHN1YkVuZCA9PSAtMSkgeworICAgICAgICAgICAgcmV0dXJuIE5GU3Vic3RpdHV0aW9uLm1ha2VTdWJzdGl0dXRpb24ocnVsZVRleHQubGVuZ3RoKCksIHRoaXMsIHByZWRlY2Vzc29yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG93bmVyLCBvd25lcnNPd25lciwgIiIpOworICAgICAgICB9CisKKyAgICAgICAgLy8gaWYgd2UgZ2V0IGhlcmUsIHdlIGhhdmUgYSByZWFsIHN1YnN0aXR1dGlvbiB0b2tlbiAob3IgYXQgbGVhc3QKKyAgICAgICAgLy8gc29tZSB0ZXh0IGJvdW5kZWQgYnkgc3Vic3RpdHV0aW9uIHRva2VuIGNoYXJhY3RlcnMpLiAgVXNlCisgICAgICAgIC8vIG1ha2VTdWJzdGl0dXRpb24oKSB0byBjcmVhdGUgdGhlIHJpZ2h0IGtpbmQgb2Ygc3Vic3RpdHV0aW9uCisgICAgICAgIHJlc3VsdCA9IE5GU3Vic3RpdHV0aW9uLm1ha2VTdWJzdGl0dXRpb24oc3ViU3RhcnQsIHRoaXMsIHByZWRlY2Vzc29yLCBvd25lciwKKyAgICAgICAgICAgICAgICAgICAgICAgIG93bmVyc093bmVyLCBydWxlVGV4dC5zdWJzdHJpbmcoc3ViU3RhcnQsIHN1YkVuZCArIDEpKTsKKworICAgICAgICAvLyByZW1vdmUgdGhlIHN1YnN0aXR1dGlvbiBmcm9tIHRoZSBydWxlIHRleHQKKyAgICAgICAgcnVsZVRleHQgPSBydWxlVGV4dC5zdWJzdHJpbmcoMCwgc3ViU3RhcnQpICsgcnVsZVRleHQuc3Vic3RyaW5nKHN1YkVuZCArIDEpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIHJ1bGUncyBiYXNlIHZhbHVlLCBhbmQgY2F1c2VzIHRoZSByYWRpeCBhbmQgZXhwb25lbnQKKyAgICAgKiB0byBiZSByZWNhbGN1bGF0ZWQuICBUaGlzIGlzIHVzZWQgZHVyaW5nIGNvbnN0cnVjdGlvbiB3aGVuIHdlCisgICAgICogZG9uJ3Qga25vdyB0aGUgcnVsZSdzIGJhc2UgdmFsdWUgdW50aWwgYWZ0ZXIgaXQncyBiZWVuCisgICAgICogY29uc3RydWN0ZWQuICBJdCBzaG91bGQgYmUgdXNlZCBhdCBhbnkgb3RoZXIgdGltZS4KKyAgICAgKiBAcGFyYW0gVGhlIG5ldyBiYXNlIHZhbHVlIGZvciB0aGUgcnVsZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgdm9pZCBzZXRCYXNlVmFsdWUobG9uZyBuZXdCYXNlVmFsdWUpIHsKKyAgICAgICAgLy8gc2V0IHRoZSBiYXNlIHZhbHVlCisgICAgICAgIGJhc2VWYWx1ZSA9IG5ld0Jhc2VWYWx1ZTsKKworICAgICAgICAvLyBpZiB0aGlzIGlzbid0IGEgc3BlY2lhbCBydWxlLCByZWNhbGN1bGF0ZSB0aGUgcmFkaXggYW5kIGV4cG9uZW50CisgICAgICAgIC8vICh0aGUgcmFkaXggYWx3YXlzIGRlZmF1bHRzIHRvIDEwOyBpZiBpdCdzIHN1cHBvc2VkIHRvIGJlIHNvbWV0aGluZworICAgICAgICAvLyBlbHNlLCBpdCdzIGNsZWFuZWQgdXAgYnkgdGhlIGNhbGxlciBhbmQgdGhlIGV4cG9uZW50IGlzCisgICAgICAgIC8vIHJlY2FsY3VsYXRlZCBhZ2Fpbi0tIHRoZSBvbmx5IGZ1bmN0aW9uIHRoYXQgZG9lcyB0aGlzIGlzCisgICAgICAgIC8vIE5GUnVsZS5wYXJzZVJ1bGVEZXNjcmlwdG9yKCkgKQorICAgICAgICBpZiAoYmFzZVZhbHVlID49IDEpIHsKKyAgICAgICAgICAgIHJhZGl4ID0gMTA7CisgICAgICAgICAgICBleHBvbmVudCA9IGV4cGVjdGVkRXhwb25lbnQoKTsKKworICAgICAgICAgICAgLy8gdGhpcyBmdW5jdGlvbiBnZXRzIGNhbGxlZCBvbiBhIGZ1bGx5LWNvbnN0cnVjdGVkIHJ1bGUgd2hvc2UKKyAgICAgICAgICAgIC8vIGRlc2NyaXB0aW9uIGRpZG4ndCBzcGVjaWZ5IGEgYmFzZSB2YWx1ZS4gIFRoaXMgbWVhbnMgaXQKKyAgICAgICAgICAgIC8vIGhhcyBzdWJzdGl0dXRpb25zLCBhbmQgc29tZSBzdWJzdGl0dXRpb25zIGhvbGQgb24gdG8gY29waWVzCisgICAgICAgICAgICAvLyBvZiB0aGUgcnVsZSdzIGRpdmlzb3IuICBGaXggdGhlaXIgY29waWVzIG9mIHRoZSBkaXZpc29yLgorICAgICAgICAgICAgaWYgKHN1YjEgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHN1YjEuc2V0RGl2aXNvcihyYWRpeCwgZXhwb25lbnQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHN1YjIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHN1YjIuc2V0RGl2aXNvcihyYWRpeCwgZXhwb25lbnQpOworICAgICAgICAgICAgfQorCisgICAgICAgIC8vIGlmIHRoaXMgaXMgYSBzcGVjaWFsIHJ1bGUsIGl0cyByYWRpeCBhbmQgZXhwb25lbnQgYXJlIGJhc2ljYWxseQorICAgICAgICAvLyBpZ25vcmVkLiAgU2V0IHRoZW0gdG8gInNhZmUiIGRlZmF1bHQgdmFsdWVzCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByYWRpeCA9IDEwOworICAgICAgICAgICAgZXhwb25lbnQgPSAwOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhpcyBjYWxjdWxhdGVzIHRoZSBydWxlJ3MgZXhwb25lbnQgYmFzZWQgb24gaXRzIHJhZGl4IGFuZCBiYXNlCisgICAgICogdmFsdWUuICBUaGlzIHdpbGwgYmUgdGhlIGhpZ2hlc3QgcG93ZXIgdGhlIHJhZGl4IGNhbiBiZSByYWlzZWQgdG8KKyAgICAgKiBhbmQgc3RpbGwgcHJvZHVjZSBhIHJlc3VsdCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGJhc2UgdmFsdWUuCisgICAgICovCisgICAgcHJpdmF0ZSBzaG9ydCBleHBlY3RlZEV4cG9uZW50KCkgeworICAgICAgICAvLyBzaW5jZSB0aGUgbG9nIG9mIDAsIG9yIHRoZSBsb2cgYmFzZSAwIG9mIHNvbWV0aGluZywgY2F1c2VzIGFuCisgICAgICAgIC8vIGVycm9yLCBkZWNsYXJlIHRoZSBleHBvbmVudCBpbiB0aGVzZSBjYXNlcyB0byBiZSAwICh3ZSBhbHNvCisgICAgICAgIC8vIGRlYWwgd2l0aCB0aGUgc3BlY2lhbC1ydWxlIGlkZW50aWZpZXJzIGhlcmUpCisgICAgICAgIGlmIChyYWRpeCA9PSAwIHx8IGJhc2VWYWx1ZSA8IDEpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgLy8gd2UgZ2V0IHJvdW5kaW5nIGVycm9yIGluIHNvbWUgY2FzZXMtLSBmb3IgZXhhbXBsZSwgbG9nIDEwMDAgLyBsb2cgMTAKKyAgICAgICAgLy8gZ2l2ZXMgdXMgMS45OTk5OTk5OTk2IGluc3RlYWQgb2YgMi4gIFRoZSBleHRyYSBsb2dpYyBoZXJlIGlzIHRvIHRha2UKKyAgICAgICAgLy8gdGhhdCBpbnRvIGFjY291bnQKKyAgICAgICAgc2hvcnQgdGVtcFJlc3VsdCA9IChzaG9ydCkoTWF0aC5sb2coYmFzZVZhbHVlKSAvIE1hdGgubG9nKHJhZGl4KSk7CisgICAgICAgIGlmIChNYXRoLnBvdyhyYWRpeCwgdGVtcFJlc3VsdCArIDEpIDw9IGJhc2VWYWx1ZSkgeworICAgICAgICAgICAgcmV0dXJuIChzaG9ydCkodGVtcFJlc3VsdCArIDEpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHRlbXBSZXN1bHQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZWFyY2hlcyB0aGUgcnVsZSdzIHJ1bGUgdGV4dCBmb3IgYW55IG9mIHRoZSBzcGVjaWZpZWQgc3RyaW5ncy4KKyAgICAgKiBAcGFyYW0gc3RyaW5ncyBBbiBhcnJheSBvZiBzdHJpbmdzIHRvIHNlYXJjaCB0aGUgcnVsZSdzIHJ1bGUKKyAgICAgKiB0ZXh0IGZvcgorICAgICAqIEByZXR1cm4gVGhlIGluZGV4IG9mIHRoZSBmaXJzdCBtYXRjaCBpbiB0aGUgcnVsZSdzIHJ1bGUgdGV4dAorICAgICAqIChpLmUuLCB0aGUgZmlyc3Qgc3Vic3RyaW5nIGluIHRoZSBydWxlJ3MgcnVsZSB0ZXh0IHRoYXQgbWF0Y2hlcworICAgICAqIF9hbnlfIG9mIHRoZSBzdHJpbmdzIGluICJzdHJpbmdzIikuICBJZiBub25lIG9mIHRoZSBzdHJpbmdzIGluCisgICAgICogInN0cmluZ3MiIGlzIGZvdW5kIGluIHRoZSBydWxlJ3MgcnVsZSB0ZXh0LCByZXR1cm5zIC0xLgorICAgICAqLworICAgIHByaXZhdGUgaW50IGluZGV4T2ZBbnkoU3RyaW5nW10gc3RyaW5ncykgeworICAgICAgICBpbnQgcG9zOworICAgICAgICBpbnQgcmVzdWx0ID0gLTE7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc3RyaW5ncy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgcG9zID0gcnVsZVRleHQuaW5kZXhPZihzdHJpbmdzW2ldKTsKKyAgICAgICAgICAgIGlmIChwb3MgIT0gLTEgJiYgKHJlc3VsdCA9PSAtMSB8fCBwb3MgPCByZXN1bHQpKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gcG9zOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIGJvaWxlcnBsYXRlCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogVGVzdHMgdHdvIHJ1bGVzIGZvciBlcXVhbGl0eS4KKyAgICAgKiBAcGFyYW0gdGhhdCBUaGUgcnVsZSB0byBjb21wYXJlIHRoaXMgb25lIGFnYWluc3QKKyAgICAgKiBAcmV0dXJuIFRydWUgaWYgdGhlIHR3byBydWxlcyBhcmUgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IHRoYXQpIHsKKwlpZiAodGhhdCBpbnN0YW5jZW9mIE5GUnVsZSkgeworICAgICAgICAgICAgTkZSdWxlIHRoYXQyID0gKE5GUnVsZSl0aGF0OworCisgICAgICAgICAgICByZXR1cm4gYmFzZVZhbHVlID09IHRoYXQyLmJhc2VWYWx1ZQorICAgICAgICAgICAgICAgICAgICYmIHJhZGl4ID09IHRoYXQyLnJhZGl4CisgICAgICAgICAgICAgICAgICAgJiYgZXhwb25lbnQgPT0gdGhhdDIuZXhwb25lbnQKKyAgICAgICAgICAgICAgICAgICAmJiBydWxlVGV4dC5lcXVhbHModGhhdDIucnVsZVRleHQpCisgICAgICAgICAgICAgICAgICAgJiYgc3ViMS5lcXVhbHModGhhdDIuc3ViMSkKKyAgICAgICAgICAgICAgICAgICAmJiBzdWIyLmVxdWFscyh0aGF0Mi5zdWIyKTsKKwl9CisJcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSB0ZXh0dWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBydWxlLiAgVGhpcyB3b24ndAorICAgICAqIG5lY2Vzc2FyaWx5IGJlIHRoZSBzYW1lIGFzIHRoZSBkZXNjcmlwdGlvbiB0aGF0IHRoaXMgcnVsZQorICAgICAqIHdhcyBjcmVhdGVkIHdpdGgsIGJ1dCBpdCB3aWxsIHByb2R1Y2UgdGhlIHNhbWUgcmVzdWx0LgorICAgICAqIEByZXR1cm4gQSB0ZXh0dWFsIGRlc2NyaXB0aW9uIG9mIHRoZSBydWxlCisgICAgICovCisgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgU3RyaW5nQnVmZmVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKworICAgICAgICAvLyBzdGFydCB3aXRoIHRoZSBydWxlIGRlc2NyaXB0b3IuICBTcGVjaWFsLWNhc2UgdGhlIHNwZWNpYWwgcnVsZXMKKyAgICAgICAgaWYgKGJhc2VWYWx1ZSA9PSBORUdBVElWRV9OVU1CRVJfUlVMRSkgeworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiLXg6ICIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGJhc2VWYWx1ZSA9PSBJTVBST1BFUl9GUkFDVElPTl9SVUxFKSB7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCJ4Lng6ICIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGJhc2VWYWx1ZSA9PSBQUk9QRVJfRlJBQ1RJT05fUlVMRSkgeworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiMC54OiAiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChiYXNlVmFsdWUgPT0gTUFTVEVSX1JVTEUpIHsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoInguMDogIik7CisgICAgICAgIH0KKworICAgICAgICAvLyBmb3IgYSBub3JtYWwgcnVsZSwgd3JpdGUgb3V0IGl0cyBiYXNlIHZhbHVlLCBhbmQgaWYgdGhlIHJhZGl4IGlzCisgICAgICAgIC8vIHNvbWV0aGluZyBvdGhlciB0aGFuIDEwLCB3cml0ZSBvdXQgdGhlIHJhZGl4ICh3aXRoIHRoZSBwcmVjZWRpbmcKKyAgICAgICAgLy8gc2xhc2gsIG9mIGNvdXJzZSkuICBUaGVuIGNhbGN1bGF0ZSB0aGUgZXhwZWN0ZWQgZXhwb25lbnQgYW5kIGlmCisgICAgICAgIC8vIGlmIGlzbid0IHRoZSBzYW1lIGFzIHRoZSBhY3R1YWwgZXhwb25lbnQsIHdyaXRlIGFuIGFwcHJvcHJpYXRlCisgICAgICAgIC8vIG51bWJlciBvZiA+IHNpZ25zLiAgRmluYWxseSwgdGVybWluYXRlIHRoZSB3aG9sZSB0aGluZyB3aXRoCisgICAgICAgIC8vIGEgY29sb24uCisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmcudmFsdWVPZihiYXNlVmFsdWUpKTsKKyAgICAgICAgICAgIGlmIChyYWRpeCAhPSAxMCkgeworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJy8nKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZy52YWx1ZU9mKHJhZGl4KSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbnQgbnVtQ2FyZXRzID0gZXhwZWN0ZWRFeHBvbmVudCgpIC0gZXhwb25lbnQ7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUNhcmV0czsgaSsrKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJz4nKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIjogIik7CisgICAgICAgIH0KKworICAgICAgICAvLyBpZiB0aGUgcnVsZSB0ZXh0IGJlZ2lucyB3aXRoIGEgc3BhY2UsIHdyaXRlIGFuIGFwb3N0cm9waGUKKyAgICAgICAgLy8gKHdoaXRlc3BhY2UgYWZ0ZXIgdGhlIHJ1bGUgZGVzY3JpcHRvciBpcyBpZ25vcmVkOyB0aGUKKyAgICAgICAgLy8gYXBvc3Ryb3BoZSBpcyB1c2VkIHRvIG1ha2UgdGhlIHdoaXRlc3BhY2Ugc2lnbmlmaWNhbnQpCisgICAgICAgIGlmIChydWxlVGV4dC5zdGFydHNXaXRoKCIgIikgJiYgKHN1YjEgPT0gbnVsbCB8fCBzdWIxLmdldFBvcygpICE9IDApKSB7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCJcJyIpOworICAgICAgICB9CisKKyAgICAgICAgLy8gbm93LCB3cml0ZSB0aGUgcnVsZSdzIHJ1bGUgdGV4dCwgaW5zZXJ0aW5nIGFwcHJvcHJpYXRlCisgICAgICAgIC8vIHN1YnN0aXR1dGlvbiB0b2tlbnMgaW4gdGhlIGFwcHJvcHJpYXRlIHBsYWNlcworICAgICAgICBTdHJpbmdCdWZmZXIgcnVsZVRleHRDb3B5ID0gbmV3IFN0cmluZ0J1ZmZlcihydWxlVGV4dCk7CisgICAgICAgIHJ1bGVUZXh0Q29weS5pbnNlcnQoc3ViMi5nZXRQb3MoKSwgc3ViMi50b1N0cmluZygpKTsKKyAgICAgICAgcnVsZVRleHRDb3B5Lmluc2VydChzdWIxLmdldFBvcygpLCBzdWIxLnRvU3RyaW5nKCkpOworICAgICAgICByZXN1bHQuYXBwZW5kKHJ1bGVUZXh0Q29weSk7CisKKyAgICAgICAgLy8gYW5kIGZpbmFsbHksIHRvcCB0aGUgd2hvbGUgdGhpbmcgb2ZmIHdpdGggYSBzZW1pY29sb24gYW5kCisgICAgICAgIC8vIHJldHVybiB0aGUgcmVzdWx0CisgICAgICAgIHJlc3VsdC5hcHBlbmQoJzsnKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBzaW1wbGUgYWNjZXNzb3JzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgcnVsZSdzIGJhc2UgdmFsdWUKKyAgICAgKiBAcmV0dXJuIFRoZSBydWxlJ3MgYmFzZSB2YWx1ZQorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBsb25nIGdldEJhc2VWYWx1ZSgpIHsKKyAgICAgICAgcmV0dXJuIGJhc2VWYWx1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBydWxlJ3MgZGl2aXNvciAodGhlIHZhbHVlIHRoYXQgY290cm9scyB0aGUgYmVoYXZpb3IKKyAgICAgKiBvZiBpdHMgc3Vic3RpdHV0aW9ucykKKyAgICAgKiBAcmV0dXJuIFRoZSBydWxlJ3MgZGl2aXNvcgorICAgICAqLworICAgIHB1YmxpYyBkb3VibGUgZ2V0RGl2aXNvcigpIHsKKyAgICAgICAgcmV0dXJuIE1hdGgucG93KHJhZGl4LCBleHBvbmVudCk7CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIGZvcm1hdHRpbmcKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBGb3JtYXRzIHRoZSBudW1iZXIsIGFuZCBpbnNlcnRzIHRoZSByZXN1bHRpbmcgdGV4dCBpbnRvCisgICAgICogdG9JbnNlcnRJbnRvLgorICAgICAqIEBwYXJhbSBudW1iZXIgVGhlIG51bWJlciBiZWluZyBmb3JtYXR0ZWQKKyAgICAgKiBAcGFyYW0gdG9JbnNlcnRJbnRvIFRoZSBzdHJpbmcgd2hlcmUgdGhlIHJlc3VsdGFudCB0ZXh0IHNob3VsZAorICAgICAqIGJlIGluc2VydGVkCisgICAgICogQHBhcmFtIHBvcyBUaGUgcG9zaXRpb24gaW4gdG9JbnNlcnRJbnRvIHdoZXJlIHRoZSByZXN1bHRhbnQgdGV4dAorICAgICAqIHNob3VsZCBiZSBpbnNlcnRlZAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGRvRm9ybWF0KGxvbmcgbnVtYmVyLCBTdHJpbmdCdWZmZXIgdG9JbnNlcnRJbnRvLCBpbnQgcG9zKSB7CisgICAgICAgIC8vIGZpcnN0LCBpbnNlcnQgdGhlIHJ1bGUncyBydWxlIHRleHQgaW50byB0b0luc2VydEludG8gYXQgdGhlCisgICAgICAgIC8vIHNwZWNpZmllZCBwb3NpdGlvbiwgdGhlbiBpbnNlcnQgdGhlIHJlc3VsdHMgb2YgdGhlIHN1YnN0aXR1dGlvbnMKKyAgICAgICAgLy8gaW50byB0aGUgcmlnaHQgcGxhY2VzIGluIHRvSW5zZXJ0SW50byAobm90aWNlIHdlIGRvIHRoZQorICAgICAgICAvLyBzdWJzdGl0dXRpb25zIGluIHJldmVyc2Ugb3JkZXIgc28gdGhhdCB0aGUgb2Zmc2V0cyBkb24ndCBnZXQKKyAgICAgICAgLy8gbWVzc2VkIHVwKQorICAgICAgICB0b0luc2VydEludG8uaW5zZXJ0KHBvcywgcnVsZVRleHQpOworICAgICAgICBzdWIyLmRvU3Vic3RpdHV0aW9uKG51bWJlciwgdG9JbnNlcnRJbnRvLCBwb3MpOworICAgICAgICBzdWIxLmRvU3Vic3RpdHV0aW9uKG51bWJlciwgdG9JbnNlcnRJbnRvLCBwb3MpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEZvcm1hdHMgdGhlIG51bWJlciwgYW5kIGluc2VydHMgdGhlIHJlc3VsdGluZyB0ZXh0IGludG8KKyAgICAgKiB0b0luc2VydEludG8uCisgICAgICogQHBhcmFtIG51bWJlciBUaGUgbnVtYmVyIGJlaW5nIGZvcm1hdHRlZAorICAgICAqIEBwYXJhbSB0b0luc2VydEludG8gVGhlIHN0cmluZyB3aGVyZSB0aGUgcmVzdWx0YW50IHRleHQgc2hvdWxkCisgICAgICogYmUgaW5zZXJ0ZWQKKyAgICAgKiBAcGFyYW0gcG9zIFRoZSBwb3NpdGlvbiBpbiB0b0luc2VydEludG8gd2hlcmUgdGhlIHJlc3VsdGFudCB0ZXh0CisgICAgICogc2hvdWxkIGJlIGluc2VydGVkCisgICAgICovCisgICAgcHVibGljIHZvaWQgZG9Gb3JtYXQoZG91YmxlIG51bWJlciwgU3RyaW5nQnVmZmVyIHRvSW5zZXJ0SW50bywgaW50IHBvcykgeworICAgICAgICAvLyBmaXJzdCwgaW5zZXJ0IHRoZSBydWxlJ3MgcnVsZSB0ZXh0IGludG8gdG9JbnNlcnRJbnRvIGF0IHRoZQorICAgICAgICAvLyBzcGVjaWZpZWQgcG9zaXRpb24sIHRoZW4gaW5zZXJ0IHRoZSByZXN1bHRzIG9mIHRoZSBzdWJzdGl0dXRpb25zCisgICAgICAgIC8vIGludG8gdGhlIHJpZ2h0IHBsYWNlcyBpbiB0b0luc2VydEludG8KKyAgICAgICAgLy8gW2FnYWluLCB3ZSBoYXZlIHR3byBjb3BpZXMgb2YgdGhpcyByb3V0aW5lIHRoYXQgZG8gdGhlIHNhbWUgdGhpbmcKKyAgICAgICAgLy8gc28gdGhhdCB3ZSBkb24ndCBzYWNyaWZpY2UgcHJlY2lzaW9uIGluIGEgbG9uZyBieSBjYXN0aW5nIGl0CisgICAgICAgIC8vIHRvIGEgZG91YmxlXQorICAgICAgICB0b0luc2VydEludG8uaW5zZXJ0KHBvcywgcnVsZVRleHQpOworICAgICAgICBzdWIyLmRvU3Vic3RpdHV0aW9uKG51bWJlciwgdG9JbnNlcnRJbnRvLCBwb3MpOworICAgICAgICBzdWIxLmRvU3Vic3RpdHV0aW9uKG51bWJlciwgdG9JbnNlcnRJbnRvLCBwb3MpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFVzZWQgYnkgdGhlIG93bmluZyBydWxlIHNldCB0byBkZXRlcm1pbmUgd2hldGhlciB0byBpbnZva2UgdGhlCisgICAgICogcm9sbGJhY2sgcnVsZSAoaS5lLiwgd2hldGhlciB0aGlzIHJ1bGUgb3IgdGhlIG9uZSB0aGF0IHByZWNlZGVzCisgICAgICogaXQgaW4gdGhlIHJ1bGUgc2V0J3MgbGlzdCBzaG91bGQgYmUgdXNlZCB0byBmb3JtYXQgdGhlIG51bWJlcikKKyAgICAgKiBAcGFyYW0gVGhlIG51bWJlciBiZWluZyBmb3JtYXR0ZWQKKyAgICAgKiBAcmV0dXJuIFRydWUgaWYgdGhlIHJ1bGUgc2V0IHNob3VsZCB1c2UgdGhlIHJ1bGUgdGhhdCBwcmVjZWRlcworICAgICAqIHRoaXMgb25lIGluIGl0cyBsaXN0OyBmYWxzZSBpZiBpdCBzaG91bGQgdXNlIHRoaXMgcnVsZQorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIHNob3VsZFJvbGxCYWNrKGRvdWJsZSBudW1iZXIpIHsKKyAgICAgICAgLy8gd2Ugcm9sbCBiYWNrIGlmIHRoZSBydWxlIGNvbnRhaW5zIGEgbW9kdWx1cyBzdWJzdGl0dXRpb24sCisgICAgICAgIC8vIHRoZSBudW1iZXIgYmVpbmcgZm9ybWF0dGVkIGlzIGFuIGV2ZW4gbXVsdGlwbGUgb2YgdGhlIHJ1bGUncworICAgICAgICAvLyBkaXZpc29yLCBhbmQgdGhlIHJ1bGUncyBiYXNlIHZhbHVlIGlzIE5PVCBhbiBldmVuIG11bHRpcGxlCisgICAgICAgIC8vIG9mIGl0cyBkaXZpc29yCisgICAgICAgIC8vIEluIG90aGVyIHdvcmRzLCBpZiB0aGUgb3JpZ2luYWwgZGVzY3JpcHRpb24gaGFkCisgICAgICAgIC8vICAgIDEwMDogPDwgaHVuZHJlZFsgPj5dOworICAgICAgICAvLyB0aGF0IGV4cGFuZHMgaW50bworICAgICAgICAvLyAgICAxMDA6IDw8IGh1bmRyZWQ7CisgICAgICAgIC8vICAgIDEwMTogPDwgaHVuZHJlZCA+PjsKKyAgICAgICAgLy8gaW50ZXJuYWxseS4gIEJ1dCB3aGVuIHdlJ3JlIGZvcm1hdHRpbmcgMjAwLCBpZiB3ZSB1c2UgdGhlIHJ1bGUKKyAgICAgICAgLy8gYXQgMTAxLCB3aGljaCB3b3VsZCBub3JtYWxseSBhcHBseSwgd2UgZ2V0ICJ0d28gaHVuZHJlZCB6ZXJvIi4KKyAgICAgICAgLy8gVG8gcHJldmVudCB0aGlzLCB3ZSByb2xsIGJhY2sgYW5kIHVzZSB0aGUgcnVsZSBhdCAxMDAgaW5zdGVhZC4KKyAgICAgICAgLy8gVGhpcyBpcyB0aGUgbG9naWMgdGhhdCBtYWtlcyB0aGlzIGhhcHBlbjogdGhlIHJ1bGUgYXQgMTAxIGhhcworICAgICAgICAvLyBhIG1vZHVsdXMgc3Vic3RpdHV0aW9uLCBpdHMgYmFzZSB2YWx1ZSBpc24ndCBhbiBldmVuIG11bHRpcGxlCisgICAgICAgIC8vIG9mIDEwMCwgYW5kIHRoZSB2YWx1ZSB3ZSdyZSB0cnlpbmcgdG8gZm9ybWF0IF9pc18gYW4gZXZlbgorICAgICAgICAvLyBtdWx0aXBsZSBvZiAxMDAuICBUaGlzIGlzIGNhbGxlZCB0aGUgInJvbGxiYWNrIHJ1bGUuIgorICAgICAgICBpZiAoKHN1YjEuaXNNb2R1bHVzU3Vic3RpdHV0aW9uKCkpIHx8IChzdWIyLmlzTW9kdWx1c1N1YnN0aXR1dGlvbigpKSkgeworICAgICAgICAgICAgcmV0dXJuIChudW1iZXIgJSBNYXRoLnBvdyhyYWRpeCwgZXhwb25lbnQpKSA9PSAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKGJhc2VWYWx1ZSAlIE1hdGgucG93KHJhZGl4LCBleHBvbmVudCkpICE9IDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBwYXJzaW5nCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogQXR0ZW1wdHMgdG8gcGFyc2UgdGhlIHN0cmluZyB3aXRoIHRoaXMgcnVsZS4KKyAgICAgKiBAcGFyYW0gdGV4dCBUaGUgc3RyaW5nIGJlaW5nIHBhcnNlZAorICAgICAqIEBwYXJhbSBwYXJzZVBvc2l0aW9uIE9uIGVudHJ5LCB0aGUgdmFsdWUgaXMgaWdub3JlZCBhbmQgYXNzdW1lZCB0bworICAgICAqIGJlIDAuIE9uIGV4aXQsIHRoaXMgaGFzIGJlZW4gdXBkYXRlZCB3aXRoIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmlyc3QKKyAgICAgKiBjaGFyYWN0ZXIgbm90IGNvbnN1bWVkIGJ5IG1hdGNoaW5nIHRoZSB0ZXh0IGFnYWluc3QgdGhpcyBydWxlCisgICAgICogKGlmIHRoaXMgcnVsZSBkb2Vzbid0IG1hdGNoIHRoZSB0ZXh0IGF0IGFsbCwgdGhlIHBhcnNlIHBvc2l0aW9uCisgICAgICogaWYgbGVmdCB1bmNoYW5nZWQgKHByZXN1bWFibHkgYXQgMCkgYW5kIHRoZSBmdW5jdGlvbiByZXR1cm5zCisgICAgICogbmV3IExvbmcoMCkpLgorICAgICAqIEBwYXJhbSBpc0ZyYWN0aW9uUnVsZSBUcnVlIGlmIHRoaXMgcnVsZSBpcyBjb250YWluZWQgd2l0aGluIGEKKyAgICAgKiBmcmFjdGlvbiBydWxlIHNldC4gIFRoaXMgaXMgb25seSB1c2VkIGlmIHRoZSBydWxlIGhhcyBubworICAgICAqIHN1YnN0aXR1dGlvbnMuCisgICAgICogQHJldHVybiBJZiB0aGlzIHJ1bGUgbWF0Y2hlZCB0aGUgdGV4dCwgdGhpcyBpcyB0aGUgcnVsZSdzIGJhc2UgdmFsdWUKKyAgICAgKiBjb21iaW5lZCBhcHByb3ByaWF0ZWx5IHdpdGggdGhlIHJlc3VsdHMgb2YgcGFyc2luZyB0aGUgc3Vic3RpdHV0aW9ucy4KKyAgICAgKiBJZiBub3RoaW5nIG1hdGNoZWQsIHRoaXMgaXMgbmV3IExvbmcoMCkgYW5kIHRoZSBwYXJzZSBwb3NpdGlvbiBpcworICAgICAqIGxlZnQgdW5jaGFuZ2VkLiAgVGhlIHJlc3VsdCB3aWxsIGJlIGFuIGluc3RhbmNlIG9mIExvbmcgaWYgdGhlCisgICAgICogcmVzdWx0IGlzIGFuIGludGVnZXIgYW5kIERvdWJsZSBvdGhlcndpc2UuICBUaGUgcmVzdWx0IGlzIG5ldmVyIG51bGwuCisgICAgICovCisgICAgcHVibGljIE51bWJlciBkb1BhcnNlKFN0cmluZyB0ZXh0LCBQYXJzZVBvc2l0aW9uIHBhcnNlUG9zaXRpb24sIGJvb2xlYW4gaXNGcmFjdGlvblJ1bGUsCisgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgdXBwZXJCb3VuZCkgeworCisgICAgICAgIC8vIGludGVybmFsbHkgd2Ugb3BlcmF0ZSBvbiBhIGNvcHkgb2YgdGhlIHN0cmluZyBiZWluZyBwYXJzZWQKKyAgICAgICAgLy8gKGJlY2F1c2Ugd2UncmUgZ29pbmcgdG8gY2hhbmdlIGl0KSBhbmQgdXNlIG91ciBvd24gUGFyc2VQb3NpdGlvbgorICAgICAgICBQYXJzZVBvc2l0aW9uIHBwID0gbmV3IFBhcnNlUG9zaXRpb24oMCk7CisgICAgICAgIFN0cmluZyB3b3JrVGV4dCA9IG5ldyBTdHJpbmcodGV4dCk7CisKKyAgICAgICAgLy8gY2hlY2sgdG8gc2VlIHdoZXRoZXIgdGhlIHRleHQgYmVmb3JlIHRoZSBmaXJzdCBzdWJzdGl0dXRpb24KKyAgICAgICAgLy8gbWF0Y2hlcyB0aGUgdGV4dCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcgYmVpbmcKKyAgICAgICAgLy8gcGFyc2VkLiAgSWYgaXQgZG9lcywgc3RyaXAgdGhhdCBvZmYgdGhlIGZyb250IG9mIHdvcmtUZXh0OworICAgICAgICAvLyBvdGhlcndpc2UsIGR1bXAgb3V0IHdpdGggYSBtaXNtYXRjaAorICAgICAgICB3b3JrVGV4dCA9IHN0cmlwUHJlZml4KHdvcmtUZXh0LCBydWxlVGV4dC5zdWJzdHJpbmcoMCwgc3ViMS5nZXRQb3MoKSksIHBwKTsKKyAgICAgICAgaW50IHByZWZpeExlbmd0aCA9IHRleHQubGVuZ3RoKCkgLSB3b3JrVGV4dC5sZW5ndGgoKTsKKworICAgICAgICBpZiAocHAuZ2V0SW5kZXgoKSA9PSAwICYmIHN1YjEuZ2V0UG9zKCkgIT0gMCkgeworLy8gY29tbWVudGVkIG91dCBiZWNhdXNlIFBhcnNlUG9zaXRpb24gZG9lc24ndCBoYXZlIGVycm9yIGluZGV4IGluIDEuMS54CisvLyAgICAgICAgICAgICAgICBwYXJzZVBvc2l0aW9uLnNldEVycm9ySW5kZXgocHAuZ2V0RXJyb3JJbmRleCgpKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgTG9uZygwKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIHRoaXMgaXMgdGhlIGZ1biBwYXJ0LiAgVGhlIGJhc2ljIGd1dHMgb2YgdGhlIHJ1bGUtbWF0Y2hpbmcKKyAgICAgICAgLy8gbG9naWMgaXMgbWF0Y2hUb0RlbGltaXRlcigpLCB3aGljaCBpcyBjYWxsZWQgdHdpY2UuICBUaGUgZmlyc3QKKyAgICAgICAgLy8gdGltZSBpdCBzZWFyY2hlcyB0aGUgaW5wdXQgc3RyaW5nIGZvciB0aGUgcnVsZSB0ZXh0IEJFVFdFRU4KKyAgICAgICAgLy8gdGhlIHN1YnN0aXR1dGlvbnMgYW5kIHRyaWVzIHRvIG1hdGNoIHRoZSBpbnRlcnZlbmluZyB0ZXh0CisgICAgICAgIC8vIGluIHRoZSBpbnB1dCBzdHJpbmcgd2l0aCB0aGUgZmlyc3Qgc3Vic3RpdHV0aW9uLiAgSWYgdGhhdAorICAgICAgICAvLyBzdWNjZWVkcywgaXQgdGhlbiBjYWxscyBpdCBhZ2FpbiwgdGhpcyB0aW1lIHRvIGxvb2sgZm9yIHRoZQorICAgICAgICAvLyBydWxlIHRleHQgYWZ0ZXIgdGhlIHNlY29uZCBzdWJzdGl0dXRpb24gYW5kIHRvIG1hdGNoIHRoZQorICAgICAgICAvLyBpbnRlcnZlbmluZyBpbnB1dCB0ZXh0IGFnYWluc3QgdGhlIHNlY29uZCBzdWJzdGl0dXRpb24uCisgICAgICAgIC8vCisgICAgICAgIC8vIEZvciBleGFtcGxlLCBzYXkgd2UgaGF2ZSBhIHJ1bGUgdGhhdCBsb29rcyBsaWtlIHRoaXM6CisgICAgICAgIC8vICAgIGZpcnN0IDw8IG1pZGRsZSA+PiBsYXN0OworICAgICAgICAvLyBhbmQgaW5wdXQgdGV4dCB0aGF0IGxvb2tzIGxpa2UgdGhpczoKKyAgICAgICAgLy8gICAgZmlyc3Qgb25lIG1pZGRsZSB0d28gbGFzdAorICAgICAgICAvLyBGaXJzdCB3ZSB1c2Ugc3RyaXBQcmVmaXgoKSB0byBtYXRjaCAiZmlyc3QgIiBpbiBib3RoIHBsYWNlcyBhbmQKKyAgICAgICAgLy8gc3RyaXAgaXQgb2ZmIHRoZSBmcm9udCwgbGVhdmluZworICAgICAgICAvLyAgICBvbmUgbWlkZGxlIHR3byBsYXN0CisgICAgICAgIC8vIFRoZW4gd2UgdXNlIG1hdGNoVG9EZWxpbWl0ZXIoKSB0byBtYXRjaCAiIG1pZGRsZSAiIGFuZCB0cnkgdG8KKyAgICAgICAgLy8gbWF0Y2ggIm9uZSIgYWdhaW5zdCBhIHN1YnN0aXR1dGlvbi4gIElmIGl0J3Mgc3VjY2Vzc2Z1bCwgd2Ugbm93CisgICAgICAgIC8vIGhhdmUKKyAgICAgICAgLy8gICAgdHdvIGxhc3QKKyAgICAgICAgLy8gV2UgdXNlIG1hdGNoVG9EZWxpbWl0ZXIoKSBhIHNlY29uZCB0aW1lIHRvIG1hdGNoICIgbGFzdCIgYW5kCisgICAgICAgIC8vIHRyeSB0byBtYXRjaCAidHdvIiBhZ2FpbnN0IGEgc3Vic3RpdHV0aW9uLiAgSWYgInR3byIgbWF0Y2hlcworICAgICAgICAvLyB0aGUgc3Vic3RpdHV0aW9uLCB3ZSBoYXZlIGEgc3VjY2Vzc2Z1bCBwYXJzZS4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gU2luY2UgaXQncyBwb3NzaWJsZSBpbiBtYW55IGNhc2VzIHRvIGZpbmQgbXVsdGlwbGUgaW5zdGFuY2VzCisgICAgICAgIC8vIG9mIGVhY2ggb2YgdGhlc2UgcGllY2VzIG9mIHJ1bGUgdGV4dCBpbiB0aGUgaW5wdXQgc3RyaW5nLAorICAgICAgICAvLyB3ZSBuZWVkIHRvIHRyeSBhbGwgdGhlIHBvc3NpYmxlIGNvbWJpbmF0aW9ucyBvZiB0aGVzZQorICAgICAgICAvLyBsb2NhdGlvbnMuICBUaGlzIHByZXZlbnRzIHVzIGZyb20gcHJlbWF0dXJlbHkgZGVjbGFyaW5nIGEgbWlzbWF0Y2gsCisgICAgICAgIC8vIGFuZCBtYWtlcyBzdXJlIHdlIG1hdGNoIGFzIG11Y2ggaW5wdXQgdGV4dCBhcyB3ZSBjYW4uCisgICAgICAgIGludCBoaWdoV2F0ZXJNYXJrID0gMDsKKyAgICAgICAgZG91YmxlIHJlc3VsdCA9IDA7CisgICAgICAgIGludCBzdGFydCA9IDA7CisgICAgICAgIGRvdWJsZSB0ZW1wQmFzZVZhbHVlID0gTWF0aC5tYXgoMCwgYmFzZVZhbHVlKTsKKworICAgICAgICBkbyB7CisgICAgICAgICAgICAvLyBvdXIgcGFydGlhbCBwYXJzZSByZXN1bHQgc3RhcnRzIG91dCBhcyB0aGlzIHJ1bGUncyBiYXNlCisgICAgICAgICAgICAvLyB2YWx1ZS4gIElmIGl0IGZpbmRzIGEgc3VjY2Vzc2Z1bCBtYXRjaCwgbWF0Y2hUb0RlbGltaXRlcigpCisgICAgICAgICAgICAvLyB3aWxsIGNvbXBvc2UgdGhpcyBpbiBzb21lIHdheSB3aXRoIHdoYXQgaXQgZ2V0cyBiYWNrIGZyb20KKyAgICAgICAgICAgIC8vIHRoZSBzdWJzdGl0dXRpb24sIGdpdmluZyB1cyBhIG5ldyBwYXJ0aWFsIHBhcnNlIHJlc3VsdAorICAgICAgICAgICAgcHAuc2V0SW5kZXgoMCk7CisgICAgICAgICAgICBkb3VibGUgcGFydGlhbFJlc3VsdCA9IG1hdGNoVG9EZWxpbWl0ZXIod29ya1RleHQsIHN0YXJ0LCB0ZW1wQmFzZVZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGVUZXh0LnN1YnN0cmluZyhzdWIxLmdldFBvcygpLCBzdWIyLmdldFBvcygpKSwgcHAsIHN1YjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBwZXJCb3VuZCkuZG91YmxlVmFsdWUoKTsKKworICAgICAgICAgICAgLy8gaWYgd2UgZ290IGEgc3VjY2Vzc2Z1bCBtYXRjaCAob3Igd2VyZSB0cnlpbmcgdG8gbWF0Y2ggYQorICAgICAgICAgICAgLy8gbnVsbCBzdWJzdGl0dXRpb24pLCBwcCBpcyBub3cgcG9pbnRpbmcgYXQgdGhlIGZpcnN0IHVubWF0Y2hlZAorICAgICAgICAgICAgLy8gY2hhcmFjdGVyLiAgVGFrZSBub3RlIG9mIHRoYXQsIGFuZCB0cnkgbWF0Y2hUb0RlbGltaXRlcigpCisgICAgICAgICAgICAvLyBvbiB0aGUgaW5wdXQgdGV4dCBhZ2FpbgorICAgICAgICAgICAgaWYgKHBwLmdldEluZGV4KCkgIT0gMCB8fCBzdWIxLmlzTnVsbFN1YnN0aXR1dGlvbigpKSB7CisgICAgICAgICAgICAgICAgc3RhcnQgPSBwcC5nZXRJbmRleCgpOworCisgICAgICAgICAgICAgICAgU3RyaW5nIHdvcmtUZXh0MiA9IHdvcmtUZXh0LnN1YnN0cmluZyhwcC5nZXRJbmRleCgpKTsKKyAgICAgICAgICAgICAgICBQYXJzZVBvc2l0aW9uIHBwMiA9IG5ldyBQYXJzZVBvc2l0aW9uKDApOworCisgICAgICAgICAgICAgICAgLy8gdGhlIHNlY29uZCBtYXRjaFRvRGVsaW1pdGVyKCkgd2lsbCBjb21wb3NlIG91ciBwcmV2aW91cworICAgICAgICAgICAgICAgIC8vIHBhcnRpYWwgcmVzdWx0IHdpdGggd2hhdGV2ZXIgaXQgZ2V0cyBiYWNrIGZyb20gaXRzCisgICAgICAgICAgICAgICAgLy8gc3Vic3RpdHV0aW9uIGlmIHRoZXJlJ3MgYSBzdWNjZXNzZnVsIG1hdGNoLCBnaXZpbmcgdXMKKyAgICAgICAgICAgICAgICAvLyBhIHJlYWwgcmVzdWx0CisgICAgICAgICAgICAgICAgcGFydGlhbFJlc3VsdCA9IG1hdGNoVG9EZWxpbWl0ZXIod29ya1RleHQyLCAwLCBwYXJ0aWFsUmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydWxlVGV4dC5zdWJzdHJpbmcoc3ViMi5nZXRQb3MoKSksIHBwMiwgc3ViMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBwZXJCb3VuZCkuZG91YmxlVmFsdWUoKTsKKworICAgICAgICAgICAgICAgIC8vIGlmIHdlIGdvdCBhIHN1Y2Nlc3NmdWwgbWF0Y2ggb24gdGhpcyBzZWNvbmQKKyAgICAgICAgICAgICAgICAvLyBtYXRjaFRvRGVsaW1pdGVyKCkgY2FsbCwgdXBkYXRlIHRoZSBoaWdoLXdhdGVyIG1hcmsKKyAgICAgICAgICAgICAgICAvLyBhbmQgcmVzdWx0IChpZiBuZWNlc3NhcnkpCisgICAgICAgICAgICAgICAgaWYgKHBwMi5nZXRJbmRleCgpICE9IDAgfHwgc3ViMi5pc051bGxTdWJzdGl0dXRpb24oKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAocHJlZml4TGVuZ3RoICsgcHAuZ2V0SW5kZXgoKSArIHBwMi5nZXRJbmRleCgpID4gaGlnaFdhdGVyTWFyaykgeworICAgICAgICAgICAgICAgICAgICAgICAgaGlnaFdhdGVyTWFyayA9IHByZWZpeExlbmd0aCArIHBwLmdldEluZGV4KCkgKyBwcDIuZ2V0SW5kZXgoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHBhcnRpYWxSZXN1bHQ7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisvLyBjb21tZW50ZWQgb3V0IGJlY2F1c2UgUGFyc2VQb3NpdGlvbiBkb2Vzbid0IGhhdmUgZXJyb3IgaW5kZXggaW4gMS4xLngKKy8vICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKy8vICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRlbXAgPSBwcDIuZ2V0RXJyb3JJbmRleCgpICsgc3ViMS5nZXRQb3MoKSArIHBwLmdldEluZGV4KCk7CisvLyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZW1wPiBwYXJzZVBvc2l0aW9uLmdldEVycm9ySW5kZXgoKSkgeworLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VQb3NpdGlvbi5zZXRFcnJvckluZGV4KHRlbXApOworLy8gICAgICAgICAgICAgICAgICAgICAgICB9CisvLyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorLy8gY29tbWVudGVkIG91dCBiZWNhdXNlIFBhcnNlUG9zaXRpb24gZG9lc24ndCBoYXZlIGVycm9yIGluZGV4IGluIDEuMS54CisvLyAgICAgICAgICAgICAgICBlbHNlIHsKKy8vICAgICAgICAgICAgICAgICAgICBpbnQgdGVtcCA9IHN1YjEuZ2V0UG9zKCkgKyBwcC5nZXRFcnJvckluZGV4KCk7CisvLyAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXAgPiBwYXJzZVBvc2l0aW9uLmdldEVycm9ySW5kZXgoKSkgeworLy8gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZVBvc2l0aW9uLnNldEVycm9ySW5kZXgodGVtcCk7CisvLyAgICAgICAgICAgICAgICAgICAgfQorLy8gICAgICAgICAgICAgICAgfQorICAgICAgICAvLyBrZWVwIHRyeWluZyB0byBtYXRjaCB0aGluZ3MgdW50aWwgdGhlIG91dGVyIG1hdGNoVG9EZWxpbWl0ZXIoKQorICAgICAgICAvLyBjYWxsIGZhaWxzIHRvIG1ha2UgYSBtYXRjaCAoZWFjaCB0aW1lLCBpdCBwaWNrcyB1cCB3aGVyZSBpdAorICAgICAgICAvLyBsZWZ0IG9mZiB0aGUgcHJldmlvdXMgdGltZSkKKyAgICAgICAgfSB3aGlsZSAoc3ViMS5nZXRQb3MoKSAhPSBzdWIyLmdldFBvcygpICYmIHBwLmdldEluZGV4KCkgPiAwICYmIHBwLmdldEluZGV4KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IHdvcmtUZXh0Lmxlbmd0aCgpICYmIHBwLmdldEluZGV4KCkgIT0gc3RhcnQpOworCisgICAgICAgIC8vIHVwZGF0ZSB0aGUgY2FsbGVyJ3MgUGFyc2VQb3NpdGlvbiB3aXRoIG91ciBoaWdoLXdhdGVyIG1hcmsKKyAgICAgICAgLy8gKGkuZS4sIGl0IG5vdyBwb2ludHMgYXQgdGhlIGZpcnN0IGNoYXJhY3RlciB0aGlzIGZ1bmN0aW9uCisgICAgICAgIC8vIGRpZG4ndCBtYXRjaC0tIHRoZSBQYXJzZVBvc2l0aW9uIGlzIHRoZXJlZm9yZSB1bmNoYW5nZWQgaWYKKyAgICAgICAgLy8gd2UgZGlkbid0IG1hdGNoIGFueXRoaW5nKQorICAgICAgICBwYXJzZVBvc2l0aW9uLnNldEluZGV4KGhpZ2hXYXRlck1hcmspOworLy8gY29tbWVudGVkIG91dCBiZWNhdXNlIFBhcnNlUG9zaXRpb24gZG9lc24ndCBoYXZlIGVycm9yIGluZGV4IGluIDEuMS54CisvLyAgICAgICAgaWYgKGhpZ2hXYXRlck1hcmsgPiAwKSB7CisvLyAgICAgICAgICAgIHBhcnNlUG9zaXRpb24uc2V0RXJyb3JJbmRleCgwKTsKKy8vICAgICAgICB9CisKKyAgICAgICAgLy8gdGhpcyBpcyBhIGhhY2sgZm9yIG9uZSB1bnVzdWFsIGNvbmRpdGlvbjogTm9ybWFsbHksIHdoZXRoZXIgdGhpcworICAgICAgICAvLyBydWxlIGJlbG9uZyB0byBhIGZyYWN0aW9uIHJ1bGUgc2V0IG9yIG5vdCBpcyBoYW5kbGVkIGJ5IGl0cworICAgICAgICAvLyBzdWJzdGl0dXRpb25zLiAgQnV0IGlmIHRoYXQgcnVsZSBIQVMgTk8gc3Vic3RpdHV0aW9ucywgdGhlbgorICAgICAgICAvLyB3ZSBoYXZlIHRvIGFjY291bnQgZm9yIGl0IGhlcmUuICBCeSBkZWZpbml0aW9uLCBpZiB0aGUgbWF0Y2hpbmcKKyAgICAgICAgLy8gcnVsZSBpbiBhIGZyYWN0aW9uIHJ1bGUgc2V0IGhhcyBubyBzdWJzdGl0dXRpb25zLCBpdHMgbnVtZXJhdG9yCisgICAgICAgIC8vIGlzIDEsIGFuZCBzbyB0aGUgcmVzdWx0IGlzIHRoZSByZWNpcHJvY2FsIG9mIGl0cyBiYXNlIHZhbHVlLgorICAgICAgICBpZiAoaXNGcmFjdGlvblJ1bGUgJiYgaGlnaFdhdGVyTWFyayA+IDAgJiYgc3ViMS5pc051bGxTdWJzdGl0dXRpb24oKSkgeworICAgICAgICAgICAgcmVzdWx0ID0gMSAvIHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIHJldHVybiB0aGUgcmVzdWx0IGFzIGEgTG9uZyBpZiBwb3NzaWJsZSwgb3IgYXMgYSBEb3VibGUKKyAgICAgICAgaWYgKHJlc3VsdCA9PSAobG9uZylyZXN1bHQpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgTG9uZygobG9uZylyZXN1bHQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBEb3VibGUocmVzdWx0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBieSBwYXJzZSgpIHRvIG1hdGNoIHRoZSB0ZXh0IGJlaW5nIHBhcnNlZAorICAgICAqIGFnYWluc3QgYSBwb3NzaWJsZSBwcmVmaXggc3RyaW5nLiAgVGhpcyBmdW5jdGlvbgorICAgICAqIG1hdGNoZXMgY2hhcmFjdGVycyBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZyBiZWluZyBwYXJzZWQKKyAgICAgKiB0byBjaGFyYWN0ZXJzIGZyb20gdGhlIHByb3NwZWN0aXZlIHByZWZpeC4gIElmIHRoZXkgbWF0Y2gsIHBwIGlzCisgICAgICogdXBkYXRlZCB0byB0aGUgZmlyc3QgY2hhcmFjdGVyIG5vdCBtYXRjaGVkLCBhbmQgdGhlIHJlc3VsdCBpcworICAgICAqIHRoZSB1bnBhcnNlZCBwYXJ0IG9mIHRoZSBzdHJpbmcuICBJZiB0aGV5IGRvbid0IG1hdGNoLCB0aGUgd2hvbGUKKyAgICAgKiBzdHJpbmcgaXMgcmV0dXJuZWQsIGFuZCBwcCBpcyBsZWZ0IHVuY2hhbmdlZC4KKyAgICAgKiBAcGFyYW0gdGV4dCBUaGUgc3RyaW5nIGJlaW5nIHBhcnNlZAorICAgICAqIEBwYXJhbSBwcmVmaXggVGhlIHRleHQgdG8gbWF0Y2ggYWdhaW5zdAorICAgICAqIEBwYXJhbSBwcCBPbiBlbnRyeSwgaWdub3JlZCBhbmQgYXNzdW1lZCB0byBiZSAwLiAgT24gZXhpdCwgcG9pbnRzCisgICAgICogdG8gdGhlIGZpcnN0IHVubWF0Y2hlZCBjaGFyYWN0ZXIgKGFzc3VtaW5nIHRoZSB3aG9sZSBwcmVmaXggbWF0Y2hlZCksCisgICAgICogb3IgaXMgdW5jaGFuZ2VkIChpZiB0aGUgd2hvbGUgcHJlZml4IGRpZG4ndCBtYXRjaCkuCisgICAgICogQHJldHVybiBJZiB0aGluZ3MgbWF0Y2gsIHRoaXMgaXMgdGhlIHVucGFyc2VkIHBhcnQgb2YgInRleHQiOworICAgICAqIGlmIHRoZXkgZGlkbid0IG1hdGNoLCB0aGlzIGlzICJ0ZXh0Ii4KKyAgICAgKi8KKyAgICBwcml2YXRlIFN0cmluZyBzdHJpcFByZWZpeChTdHJpbmcgdGV4dCwgU3RyaW5nIHByZWZpeCwgUGFyc2VQb3NpdGlvbiBwcCkgeworICAgICAgICAvLyBpZiB0aGUgcHJlZml4IHRleHQgaXMgZW1wdHksIGR1bXAgb3V0IHdpdGhvdXQgZG9pbmcgYW55dGhpbmcKKyAgICAgICAgaWYgKHByZWZpeC5sZW5ndGgoKSA9PSAwKSB7CisgICAgICAgICAgICByZXR1cm4gdGV4dDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIG90aGVyd2lzZSwgdXNlIHByZWZpeExlbmd0aCgpIHRvIG1hdGNoIHRoZSBiZWdpbm5pbmcgb2YKKyAgICAgICAgICAgIC8vICJ0ZXh0IiBhZ2FpbnN0ICJwcmVmaXgiLiAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZQorICAgICAgICAgICAgLy8gbnVtYmVyIG9mIGNoYXJhY3RlcnMgZnJvbSAidGV4dCIgdGhhdCBtYXRjaGVkIChvciAwIGlmCisgICAgICAgICAgICAvLyB3ZSBkaWRuJ3QgbWF0Y2ggdGhlIHdob2xlIHByZWZpeCkKKyAgICAgICAgICAgIGludCBwZmwgPSBwcmVmaXhMZW5ndGgodGV4dCwgcHJlZml4KTsKKyAgICAgICAgICAgIGlmIChwZmwgIT0gMCkgeworICAgICAgICAgICAgICAgIC8vIGlmIHdlIGdvdCBhIHN1Y2Nlc3NmdWwgbWF0Y2gsIHVwZGF0ZSB0aGUgcGFyc2UgcG9zaXRpb24KKyAgICAgICAgICAgICAgICAvLyBhbmQgc3RyaXAgdGhlIHByZWZpeCBvZmYgb2YgInRleHQiCisgICAgICAgICAgICAgICAgcHAuc2V0SW5kZXgocHAuZ2V0SW5kZXgoKSArIHBmbCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRleHQuc3Vic3RyaW5nKHBmbCk7CisKKyAgICAgICAgICAgIC8vIGlmIHdlIGRpZG4ndCBnZXQgYSBzdWNjZXNzZnVsIG1hdGNoLCBsZWF2ZSBldmVyeXRoaW5nIGFsb25lCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogVXNlZCBieSBwYXJzZSgpIHRvIG1hdGNoIGEgc3Vic3RpdHV0aW9uIGFuZCBhbnkgZm9sbG93aW5nIHRleHQuCisgICAgICogInRleHQiIGlzIHNlYXJjaGVkIGZvciBpbnN0YW5jZXMgb2YgImRlbGltaXRlciIuICBGb3IgZWFjaCBpbnN0YW5jZQorICAgICAqIG9mIGRlbGltaXRlciwgdGhlIGludGVydmVuaW5nIHRleHQgaXMgdGVzdGVkIHRvIHNlZSB3aGV0aGVyIGl0CisgICAgICogbWF0Y2hlcyB0aGUgc3Vic3RpdHV0aW9uLiAgVGhlIGxvbmdlc3QgbWF0Y2ggd2lucy4KKyAgICAgKiBAcGFyYW0gdGV4dCBUaGUgc3RyaW5nIGJlaW5nIHBhcnNlZAorICAgICAqIEBwYXJhbSBzdGFydFBvcyBUaGUgcG9zaXRpb24gaW4gInRleHQiIHdoZXJlIHdlIHNob3VsZCBzdGFydCBsb29raW5nCisgICAgICogZm9yICJkZWxpbWl0ZXIiLgorICAgICAqIEBwYXJhbSBiYXNlVmFsdWUgQSBwYXJ0aWFsIHBhcnNlIHJlc3VsdCAob2Z0ZW4gdGhlIHJ1bGUncyBiYXNlIHZhbHVlKSwKKyAgICAgKiB3aGljaCBpcyBjb21iaW5lZCB3aXRoIHRoZSByZXN1bHQgZnJvbSBtYXRjaGluZyB0aGUgc3Vic3RpdHV0aW9uCisgICAgICogQHBhcmFtIGRlbGltaXRlciBUaGUgc3RyaW5nIHRvIHNlYXJjaCAidGV4dCIgZm9yLgorICAgICAqIEBwYXJhbSBwcCBJZ25vcmVkIGFuZCBwcmVzdW1lZCB0byBiZSAwIG9uIGVudHJ5LiAgSWYgdGhlcmUncyBhIG1hdGNoLAorICAgICAqIG9uIGV4aXQgdGhpcyB3aWxsIHBvaW50IHRvIHRoZSBmaXJzdCB1bm1hdGNoZWQgY2hhcmFjdGVyLgorICAgICAqIEBwYXJhbSBzdWIgSWYgd2UgZmluZCAiZGVsaW1pdGVyIiBpbiAidGV4dCIsIHRoaXMgc3Vic3RpdHV0aW9uIGlzIHVzZWQKKyAgICAgKiB0byBtYXRjaCB0aGUgdGV4dCBiZXR3ZWVuIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZyBhbmQgdGhlCisgICAgICogcG9zaXRpb24gb2YgImRlbGltaXRlci4iICAoSWYgImRlbGltaXRlciIgaXMgdGhlIGVtcHR5IHN0cmluZywgdGhlbgorICAgICAqIHRoaXMgZnVuY3Rpb24ganVzdCBtYXRjaGVzIGFnYWluc3QgdGhpcyBzdWJzdGl0dXRpb24gYW5kIHVwZGF0ZXMKKyAgICAgKiBldmVyeXRoaW5nIGFjY29yZGluZ2x5LikKKyAgICAgKiBAcGFyYW0gdXBwZXJCb3VuZCBXaGVuIG1hdGNoaW5nIHRoZSBzdWJzdGl0dXRpb24sIGl0IHdpbGwgb25seQorICAgICAqIGNvbnNpZGVyIHJ1bGVzIHdpdGggYmFzZSB2YWx1ZXMgbG93ZXIgdGhhbiB0aGlzIHZhbHVlLgorICAgICAqIEByZXR1cm4gSWYgdGhlcmUncyBhIG1hdGNoLCB0aGlzIGlzIHRoZSByZXN1bHQgb2YgY29tcG9zaW5nCisgICAgICogYmFzZVZhbHVlIHdpdGggdGhlIHJlc3VsdCBvZiBtYXRjaGluZyB0aGUgc3Vic3RpdHV0aW9uLiAgT3RoZXJ3aXNlLAorICAgICAqIHRoaXMgaXMgbmV3IExvbmcoMCkuICBJdCdzIG5ldmVyIG51bGwuICBJZiB0aGUgcmVzdWx0IGlzIGFuIGludGVnZXIsCisgICAgICogdGhpcyB3aWxsIGJlIGFuIGluc3RhbmNlIG9mIExvbmc7IG90aGVyd2lzZSwgaXQncyBhbiBpbnN0YW5jZSBvZgorICAgICAqIERvdWJsZS4KKyAgICAgKi8KKyAgICBwcml2YXRlIE51bWJlciBtYXRjaFRvRGVsaW1pdGVyKFN0cmluZyB0ZXh0LCBpbnQgc3RhcnRQb3MsIGRvdWJsZSBiYXNlVmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZGVsaW1pdGVyLCBQYXJzZVBvc2l0aW9uIHBwLCBORlN1YnN0aXR1dGlvbiBzdWIsIGRvdWJsZSB1cHBlckJvdW5kKSB7CisgICAgICAgIC8vIGlmICJkZWxpbWl0ZXIiIGNvbnRhaW5zIHJlYWwgKGkuZS4sIG5vbi1pZ25vcmFibGUpIHRleHQsIHNlYXJjaAorICAgICAgICAvLyBpdCBmb3IgImRlbGltaXRlciIgYmVnaW5uaW5nIGF0ICJzdGFydCIuICBJZiB0aGF0IHN1Y2NlZWRzLCB0aGVuCisgICAgICAgIC8vIHVzZSAic3ViIidzIGRvUGFyc2UoKSBtZXRob2QgdG8gbWF0Y2ggdGhlIHRleHQgYmVmb3JlIHRoZQorICAgICAgICAvLyBpbnN0YW5jZSBvZiAiZGVsaW1pdGVyIiB3ZSBqdXN0IGZvdW5kLgorICAgICAgICBpZiAoIWFsbElnbm9yYWJsZShkZWxpbWl0ZXIpKSB7CisgICAgICAgICAgICBQYXJzZVBvc2l0aW9uIHRlbXBQUCA9IG5ldyBQYXJzZVBvc2l0aW9uKDApOworICAgICAgICAgICAgTnVtYmVyIHRlbXBSZXN1bHQ7CisKKyAgICAgICAgICAgIC8vIHVzZSBmaW5kVGV4dCgpIHRvIHNlYXJjaCBmb3IgImRlbGltaXRlciIuICBJdCByZXR1cm5zIGEgdHdvLQorICAgICAgICAgICAgLy8gZWxlbWVudCBhcnJheTogZWxlbWVudCAwIGlzIHRoZSBwb3NpdGlvbiBvZiB0aGUgbWF0Y2gsIGFuZAorICAgICAgICAgICAgLy8gZWxlbWVudCAxIGlzIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB0aGF0IG1hdGNoZWQKKyAgICAgICAgICAgIC8vICJkZWxpbWl0ZXIiLgorICAgICAgICAgICAgaW50W10gdGVtcCA9IGZpbmRUZXh0KHRleHQsIGRlbGltaXRlciwgc3RhcnRQb3MpOworICAgICAgICAgICAgaW50IGRQb3MgPSB0ZW1wWzBdOworICAgICAgICAgICAgaW50IGRMZW4gPSB0ZW1wWzFdOworCisgICAgICAgICAgICAvLyBpZiBmaW5kVGV4dCgpIHN1Y2NlZWRlZCwgaXNvbGF0ZSB0aGUgdGV4dCBwcmVjZWRpbmcgdGhlCisgICAgICAgICAgICAvLyBtYXRjaCwgYW5kIHVzZSAic3ViIiB0byBtYXRjaCB0aGF0IHRleHQKKyAgICAgICAgICAgIHdoaWxlIChkUG9zID49IDApIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgc3ViVGV4dCA9IHRleHQuc3Vic3RyaW5nKDAsIGRQb3MpOworICAgICAgICAgICAgICAgIGlmIChzdWJUZXh0Lmxlbmd0aCgpID4gMCkgeworICAgICAgICAgICAgICAgICAgICB0ZW1wUmVzdWx0ID0gc3ViLmRvUGFyc2Uoc3ViVGV4dCwgdGVtcFBQLCBiYXNlVmFsdWUsIHVwcGVyQm91bmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZXIubGVuaWVudFBhcnNlRW5hYmxlZCgpKTsKKworICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgc3Vic3RpdHV0aW9uIGNvdWxkIG1hdGNoIGFsbCB0aGUgdGV4dCB1cCB0bworICAgICAgICAgICAgICAgICAgICAvLyB3aGVyZSB3ZSBmb3VuZCAiZGVsaW1pdGVyIiwgdGhlbiB0aGlzIGZ1bmN0aW9uIGhhcworICAgICAgICAgICAgICAgICAgICAvLyBhIHN1Y2Nlc3NmdWwgbWF0Y2guICBCdW1wIHRoZSBjYWxsZXIncyBwYXJzZSBwb3NpdGlvbgorICAgICAgICAgICAgICAgICAgICAvLyB0byBwb2ludCB0byB0aGUgZmlyc3QgY2hhcmFjdGVyIGFmdGVyIHRoZSB0ZXh0CisgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQgbWF0Y2hlcyAiZGVsaW1pdGVyIiwgYW5kIHJldHVybiB0aGUgcmVzdWx0CisgICAgICAgICAgICAgICAgICAgIC8vIHdlIGdvdCBmcm9tIHBhcnNpbmcgdGhlIHN1YnN0aXR1dGlvbi4KKyAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXBQUC5nZXRJbmRleCgpID09IGRQb3MpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBwLnNldEluZGV4KGRQb3MgKyBkTGVuKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZW1wUmVzdWx0OworICAgICAgICAgICAgICAgICAgICB9CisvLyBjb21tZW50ZWQgb3V0IGJlY2F1c2UgUGFyc2VQb3NpdGlvbiBkb2Vzbid0IGhhdmUgZXJyb3IgaW5kZXggaW4gMS4xLngKKy8vICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKy8vICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXBQUC5nZXRFcnJvckluZGV4KCkgPiAwKSB7CisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcC5zZXRFcnJvckluZGV4KHRlbXBQUC5nZXRFcnJvckluZGV4KCkpOworLy8gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHAuc2V0RXJyb3JJbmRleCh0ZW1wUFAuZ2V0SW5kZXgoKSk7CisvLyAgICAgICAgICAgICAgICAgICAgICAgIH0KKy8vICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gaWYgd2UgZGlkbid0IG1hdGNoIHRoZSBzdWJzdGl0dXRpb24sIHNlYXJjaCBmb3IgYW5vdGhlcgorICAgICAgICAgICAgICAgIC8vIGNvcHkgb2YgImRlbGltaXRlciIgaW4gInRleHQiIGFuZCByZXBlYXQgdGhlIGxvb3AgaWYKKyAgICAgICAgICAgICAgICAvLyB3ZSBmaW5kIGl0CisgICAgICAgICAgICAgICAgdGVtcFBQLnNldEluZGV4KDApOworICAgICAgICAgICAgICAgIHRlbXAgPSBmaW5kVGV4dCh0ZXh0LCBkZWxpbWl0ZXIsIGRQb3MgKyBkTGVuKTsKKyAgICAgICAgICAgICAgICBkUG9zID0gdGVtcFswXTsKKyAgICAgICAgICAgICAgICBkTGVuID0gdGVtcFsxXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIGlmIHdlIG1ha2UgaXQgaGVyZSwgdGhpcyB3YXMgYW4gdW5zdWNjZXNzZnVsIG1hdGNoLCBhbmQgd2UKKyAgICAgICAgICAgIC8vIGxlYXZlIHBwIHVuY2hhbmdlZCBhbmQgcmV0dXJuIDAKKyAgICAgICAgICAgIHBwLnNldEluZGV4KDApOworICAgICAgICAgICAgcmV0dXJuIG5ldyBMb25nKDApOworCisgICAgICAgIC8vIGlmICJkZWxpbWl0ZXIiIGlzIGVtcHR5LCBvciBjb25zaXN0cyBvbmx5IG9mIGlnbm9yYWJsZSBjaGFyYWN0ZXJzCisgICAgICAgIC8vIChpLmUuLCBpcyBzZW1hbnRpY2FsbHkgZW1wdHkpLCB0aHdlIHdlIG9idmlvdXNseSBjYW4ndCBzZWFyY2gKKyAgICAgICAgLy8gZm9yICJkZWxpbWl0ZXIiLiAgSW5zdGVhZCwganVzdCB1c2UgInN1YiIgdG8gcGFyc2UgYXMgbXVjaCBvZgorICAgICAgICAvLyAidGV4dCIgYXMgcG9zc2libGUuCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQYXJzZVBvc2l0aW9uIHRlbXBQUCA9IG5ldyBQYXJzZVBvc2l0aW9uKDApOworICAgICAgICAgICAgTnVtYmVyIHJlc3VsdCA9IG5ldyBMb25nKDApOworICAgICAgICAgICAgTnVtYmVyIHRlbXBSZXN1bHQ7CisKKyAgICAgICAgICAgIC8vIHRyeSB0byBtYXRjaCB0aGUgd2hvbGUgc3RyaW5nIGFnYWluc3QgdGhlIHN1YnN0aXR1dGlvbgorICAgICAgICAgICAgdGVtcFJlc3VsdCA9IHN1Yi5kb1BhcnNlKHRleHQsIHRlbXBQUCwgYmFzZVZhbHVlLCB1cHBlckJvdW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlci5sZW5pZW50UGFyc2VFbmFibGVkKCkpOworICAgICAgICAgICAgaWYgKHRlbXBQUC5nZXRJbmRleCgpICE9IDAgfHwgc3ViLmlzTnVsbFN1YnN0aXR1dGlvbigpKSB7CisgICAgICAgICAgICAgICAgLy8gaWYgdGhlcmUncyBhIHN1Y2Nlc3NmdWwgbWF0Y2ggKG9yIGl0J3MgYSBudWxsCisgICAgICAgICAgICAgICAgLy8gc3Vic3RpdHV0aW9uKSwgdXBkYXRlIHBwIHRvIHBvaW50IHRvIHRoZSBmaXJzdAorICAgICAgICAgICAgICAgIC8vIGNoYXJhY3RlciB3ZSBkaWRuJ3QgbWF0Y2gsIGFuZCBwYXNzIHRoZSByZXN1bHQgZnJvbQorICAgICAgICAgICAgICAgIC8vIHN1Yi5kb1BhcnNlKCkgb24gdGhyb3VnaCB0byB0aGUgY2FsbGVyCisgICAgICAgICAgICAgICAgcHAuc2V0SW5kZXgodGVtcFBQLmdldEluZGV4KCkpOworICAgICAgICAgICAgICAgIGlmICh0ZW1wUmVzdWx0ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdGVtcFJlc3VsdDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisvLyBjb21tZW50ZWQgb3V0IGJlY2F1c2UgUGFyc2VQb3NpdGlvbiBkb2Vzbid0IGhhdmUgZXJyb3IgaW5kZXggaW4gMS4xLngKKy8vICAgICAgICAgICAgZWxzZSB7CisvLyAgICAgICAgICAgICAgICBwcC5zZXRFcnJvckluZGV4KHRlbXBQUC5nZXRFcnJvckluZGV4KCkpOworLy8gICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIGFuZCBpZiB3ZSBnZXQgdG8gaGVyZSwgdGhlbiBub3RoaW5nIG1hdGNoZWQsIHNvIHdlIHJldHVybgorICAgICAgICAgICAgLy8gMCBhbmQgbGVhdmUgcHAgYWxvbmUKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBVc2VkIGJ5IHN0cmlwUHJlZml4KCkgdG8gbWF0Y2ggY2hhcmFjdGVycy4gIElmIGxlbmllbnQgcGFyc2UgbW9kZQorICAgICAqIGlzIG9mZiwgdGhpcyBqdXN0IGNhbGxzIHN0YXJ0c1dpdGgoKS4gIElmIGxlbmllbnQgcGFyc2UgbW9kZSBpcyBvbiwKKyAgICAgKiB0aGlzIGZ1bmN0aW9uIHVzZXMgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9ycyB0byBtYXRjaCBjaGFyYWN0ZXJzIGluCisgICAgICogdGhlIHN0cmluZ3MgKG9ubHkgcHJpbWFyeS1vcmRlciBkaWZmZXJlbmNlcyBhcmUgc2lnbmlmaWNhbnQgaW4KKyAgICAgKiBkZXRlcm1pbmluZyB3aGV0aGVyIHRoZXJlJ3MgYSBtYXRjaCkuCisgICAgICogQHBhcmFtIHN0ciBUaGUgc3RyaW5nIGJlaW5nIHRlc3RlZAorICAgICAqIEBwYXJhbSBwcmVmaXggVGhlIHRleHQgd2UncmUgaG9waW5nIHRvIHNlZSBhdCB0aGUgYmVnaW5uaW5nCisgICAgICogb2YgInN0ciIKKyAgICAgKiBAcmV0dXJuIElmICJwcmVmaXgiIGlzIGZvdW5kIGF0IHRoZSBiZWdpbm5pbmcgb2YgInN0ciIsIHRoaXMKKyAgICAgKiBpcyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gInN0ciIgdGhhdCB3ZXJlIG1hdGNoZWQgKHRoaXMKKyAgICAgKiBpc24ndCBuZWNlc3NhcmlseSB0aGUgc2FtZSBhcyB0aGUgbGVuZ3RoIG9mICJwcmVmaXgiIHdoZW4gbWF0Y2hpbmcKKyAgICAgKiB0ZXh0IHdpdGggYSBjb2xsYXRvcikuICBJZiB0aGVyZSdzIG5vIG1hdGNoLCB0aGlzIGlzIDAuCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgcHJlZml4TGVuZ3RoKFN0cmluZyBzdHIsIFN0cmluZyBwcmVmaXgpIHsKKyAgICAgICAgLy8gaWYgd2UncmUgbG9va2luZyBmb3IgYW4gZW1wdHkgcHJlZml4LCBpdCBvYnZpb3VzbHkgbWF0Y2hlcworICAgICAgICAvLyB6ZXJvIGNoYXJhY3RlcnMuICBKdXN0IGdvIGFoZWFkIGFuZCByZXR1cm4gMC4KKyAgICAgICAgaWYgKHByZWZpeC5sZW5ndGgoKSA9PSAwKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGdvIHRocm91Z2ggYWxsIHRoaXMgZ3JpZWYgaWYgd2UncmUgaW4gbGVuaWVudC1wYXJzZSBtb2RlCisgICAgICAgIGlmIChmb3JtYXR0ZXIubGVuaWVudFBhcnNlRW5hYmxlZCgpKSB7CisgICAgICAgICAgICAvLyBnZXQgdGhlIGZvcm1hdHRlcidzIGNvbGxhdG9yIGFuZCB1c2UgaXQgdG8gY3JlYXRlIHR3bworICAgICAgICAgICAgLy8gY29sbGF0aW9uIGVsZW1lbnQgaXRlcmF0b3JzLCBvbmUgb3ZlciB0aGUgdGFyZ2V0IHN0cmluZworICAgICAgICAgICAgLy8gYW5kIGFub3RoZXIgb3ZlciB0aGUgcHJlZml4IChyaWdodCBub3csIHdlJ2xsIHRocm93IGFuCisgICAgICAgICAgICAvLyBleGNlcHRpb24gaWYgdGhlIGNvbGxhdG9yIHdlIGdldCBiYWNrIGZyb20gdGhlIGZvcm1hdHRlcgorICAgICAgICAgICAgLy8gaXNuJ3QgYSBSdWxlQmFzZWRDb2xsYXRvciwgYmVjYXVzZSBSdWxlQmFzZWRDb2xsYXRvciBkZWZpbmVzCisgICAgICAgICAgICAvLyB0aGUgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9lciBwcm90b2NvbC4gIEhvcGVmdWxseSwgdGhpcworICAgICAgICAgICAgLy8gd2lsbCBjaGFuZ2Ugc29tZWRheS4pCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gUHJldmlvdXMgY29kZSB3YXMgbWF0Y2hpbmcgImZpZnR5LSIgYWdhaW5zdCAiIGZpZnR5IiBhbmQgbGVhdmluZworICAgICAgICAgICAgLy8gdGhlIG51bWJlciAiIGZpZnR5LTciIHRvIHBhcnNlIGFzIDQzICg1MCAtIDcpLgorICAgICAgICAgICAgLy8gQWxzbyBpdCBzZWVtcyB0aGF0IGlmIHdlIGNvbnN1bWUgdGhlIGVudGlyZSBwcmVmaXgsIHRoYXQncyBvayBldmVuCisgICAgICAgICAgICAvLyBpZiB3ZSd2ZSBjb25zdW1lZCB0aGUgZW50aXJlIHN0cmluZywgc28gSSBzd2l0Y2hlZCB0aGUgbG9naWMgdG8KKyAgICAgICAgICAgIC8vIHJlZmxlY3QgdGhpcy4KKyAgICAgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yIGNvbGxhdG9yID0gKFJ1bGVCYXNlZENvbGxhdG9yKWZvcm1hdHRlci5nZXRDb2xsYXRvcigpOworICAgICAgICAgICAgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yIHN0ckl0ZXIgPSBjb2xsYXRvci5nZXRDb2xsYXRpb25FbGVtZW50SXRlcmF0b3Ioc3RyKTsKKyAgICAgICAgICAgIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvciBwcmVmaXhJdGVyID0gY29sbGF0b3IuZ2V0Q29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yKHByZWZpeCk7CisKKyAgICAgICAgICAgIC8vIG1hdGNoIGNvbGxhdGlvbiBlbGVtZW50cyBiZXR3ZWVuIHRoZSBzdHJpbmdzCisgICAgICAgICAgICBpbnQgb1N0ciA9IHN0ckl0ZXIubmV4dCgpOworICAgICAgICAgICAgaW50IG9QcmVmaXggPSBwcmVmaXhJdGVyLm5leHQoKTsKKworICAgICAgICAgICAgd2hpbGUgKG9QcmVmaXggIT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUikgeworICAgICAgICAgICAgICAgIC8vIHNraXAgb3ZlciBpZ25vcmFibGUgY2hhcmFjdGVycyBpbiB0aGUgdGFyZ2V0IHN0cmluZworICAgICAgICAgICAgICAgIHdoaWxlIChDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IucHJpbWFyeU9yZGVyKG9TdHIpID09IDAgJiYgb1N0ciAhPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuTlVMTE9SREVSKSB7CisgICAgICAgICAgICAgICAgICAgIG9TdHIgPSBzdHJJdGVyLm5leHQoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBza2lwIG92ZXIgaWdub3JhYmxlIGNoYXJhY3RlcnMgaW4gdGhlIHByZWZpeAorICAgICAgICAgICAgICAgIHdoaWxlIChDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IucHJpbWFyeU9yZGVyKG9QcmVmaXgpID09IDAgJiYgb1ByZWZpeCAhPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuTlVMTE9SREVSKSB7CisgICAgICAgICAgICAgICAgICAgIG9QcmVmaXggPSBwcmVmaXhJdGVyLm5leHQoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBpZiBza2lwcGluZyBvdmVyIGlnbm9yYWJsZXMgYnJvdWdodCB0byB0aGUgZW5kIG9mCisgICAgICAgICAgICAgICAgLy8gdGhlIHByZWZpeCwgd2UgRElEIG1hdGNoOiBkcm9wIG91dCBvZiB0aGUgbG9vcAorICAgICAgICAgICAgICAgIGlmIChvUHJlZml4ID09IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5OVUxMT1JERVIpIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gaWYgc2tpcHBpbmcgb3ZlciBpZ25vcmFibGVzIGJyb3VnaHQgdXMgdG8gdGhlIGVuZAorICAgICAgICAgICAgICAgIC8vIG9mIHRoZSB0YXJnZXQgc3RyaW5nLCB3ZSBkaWRuJ3QgbWF0Y2ggYW5kIHJldHVybiAwCisgICAgICAgICAgICAgICAgaWYgKG9TdHIgPT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUikgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBtYXRjaCBjb2xsYXRpb24gZWxlbWVudHMgZnJvbSB0aGUgdHdvIHN0cmluZ3MKKyAgICAgICAgICAgICAgICAvLyAoY29uc2lkZXJpbmcgb25seSBwcmltYXJ5IGRpZmZlcmVuY2VzKS4gIElmIHdlCisgICAgICAgICAgICAgICAgLy8gZ2V0IGEgbWlzbWF0Y2gsIGR1bXAgb3V0IGFuZCByZXR1cm4gMAorICAgICAgICAgICAgICAgIGlmIChDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IucHJpbWFyeU9yZGVyKG9TdHIpICE9IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbWFyeU9yZGVyKG9QcmVmaXgpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvLyBvdGhlcndpc2UsIGFkdmFuY2UgdG8gdGhlIG5leHQgY2hhcmFjdGVyIGluIGVhY2ggc3RyaW5nCisgICAgICAgICAgICAgICAgLy8gYW5kIGxvb3AgKHdlIGRyb3Agb3V0IG9mIHRoZSBsb29wIHdoZW4gd2UgZXhoYXVzdAorICAgICAgICAgICAgICAgIC8vIGNvbGxhdGlvbiBlbGVtZW50cyBpbiB0aGUgcHJlZml4KQorCisgICAgICAgICAgICAgICAgb1N0ciA9IHN0ckl0ZXIubmV4dCgpOworICAgICAgICAgICAgICAgIG9QcmVmaXggPSBwcmVmaXhJdGVyLm5leHQoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gd2UgYXJlIG5vdCBjb21wYXRpYmxlIHdpdGggamRrIDEuMSBhbnkgbG9uZ2VyCisgICAgICAgICAgICBpbnQgcmVzdWx0ID0gc3RySXRlci5nZXRPZmZzZXQoKTsKKyAgICAgICAgICAgIGlmIChvU3RyICE9IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5OVUxMT1JERVIpIHsKKyAgICAgICAgICAgICAgICAtLXJlc3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgIC8vIEpESyAxLjItc3BlY2lmaWMgQVBJIGNhbGwKKyAgICAgICAgICAgIC8vIHJldHVybiBzdHJJdGVyLmdldE9mZnNldCgpOworICAgICAgICAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAvLyBKREsgMS4xIEhBQ0sgKHRha2Ugb3V0IGZvciAxLjItc3BlY2lmaWMgY29kZSkKKworICAgICAgICAgICAgLy8gaWYgd2UgbWFrZSBpdCB0byBoZXJlLCB3ZSBoYXZlIGEgc3VjY2Vzc2Z1bCBtYXRjaC4gIE5vdyB3ZQorICAgICAgICAgICAgLy8gaGF2ZSB0byBmaW5kIG91dCBIT1cgTUFOWSBjaGFyYWN0ZXJzIGZyb20gdGhlIHRhcmdldCBzdHJpbmcKKyAgICAgICAgICAgIC8vIG1hdGNoZWQgdGhlIHByZWZpeCAodGhlcmUgaXNuJ3QgbmVjZXNzYXJpbHkgYSBvbmUtdG8tb25lCisgICAgICAgICAgICAvLyBtYXBwaW5nIGJldHdlZW4gY29sbGF0aW9uIGVsZW1lbnRzIGFuZCBjaGFyYWN0ZXJzKS4KKyAgICAgICAgICAgIC8vIEluIEpESyAxLjIsIHRoZXJlJ3MgYSBzaW1wbGUgZ2V0T2Zmc2V0KCkgY2FsbCB3ZSBjYW4gdXNlLgorICAgICAgICAgICAgLy8gSW4gSkRLIDEuMSwgb24gdGhlIG90aGVyIGhhbmQsIHdlIGhhdmUgdG8gZ28gdGhyb3VnaCBzb21lCisgICAgICAgICAgICAvLyB1Z2x5IGNvbnRvcnRpb25zLiAgRmlyc3QsIHVzZSB0aGUgY29sbGF0b3IgdG8gY29tcGFyZSB0aGUKKyAgICAgICAgICAgIC8vIHNhbWUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgZnJvbSB0aGUgcHJlZml4IGFuZCB0YXJnZXQgc3RyaW5nLgorICAgICAgICAgICAgLy8gSWYgdGhleSdyZSBlcXVhbCwgd2UncmUgZG9uZS4KKyAgICAgICAgICAgIGNvbGxhdG9yLnNldFN0cmVuZ3RoKENvbGxhdG9yLlBSSU1BUlkpOworICAgICAgICAgICAgaWYgKHN0ci5sZW5ndGgoKSA+PSBwcmVmaXgubGVuZ3RoKCkKKyAgICAgICAgICAgICAgICAgICAgJiYgY29sbGF0b3IuZXF1YWxzKHN0ci5zdWJzdHJpbmcoMCwgcHJlZml4Lmxlbmd0aCgpKSwgcHJlZml4KSkgeworICAgICAgICAgICAgICAgIHJldHVybiBwcmVmaXgubGVuZ3RoKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIGlmIHRoZXkncmUgbm90IGVxdWFsLCB0aGVuIHdlIGhhdmUgdG8gY29tcGFyZSBzdWNjZXNzaXZlbHkKKyAgICAgICAgICAgIC8vIGxhcmdlciBhbmQgbGFyZ2VyIHN1YnN0cmluZ3Mgb2YgdGhlIHRhcmdldCBzdHJpbmcgdW50aWwgd2UKKyAgICAgICAgICAgIC8vIGdldCB0byBvbmUgdGhhdCBtYXRjaGVzIHRoZSBwcmVmaXguICBBdCB0aGF0IHBvaW50LCB3ZSBrbm93CisgICAgICAgICAgICAvLyBob3cgbWFueSBjaGFyYWN0ZXJzIG1hdGNoZWQgdGhlIHByZWZpeCwgYW5kIHdlIGNhbiByZXR1cm4uCisgICAgICAgICAgICBpbnQgcCA9IDE7CisgICAgICAgICAgICB3aGlsZSAocCA8PSBzdHIubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoY29sbGF0b3IuZXF1YWxzKHN0ci5zdWJzdHJpbmcoMCwgcCksIHByZWZpeCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHA7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgKytwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gU0hPVUxLRCBORVZFUiBHRVQgSEVSRSEhIQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICovCisKKyAgICAgICAgLy8gSWYgbGVuaWVudCBwYXJzaW5nIGlzIHR1cm5lZCBvZmYsIGZvcmdldCBhbGwgdGhhdCBjcmFwIGFib3ZlLgorICAgICAgICAvLyBKdXN0IHVzZSBTdHJpbmcuc3RhcnRzV2l0aCgpIGFuZCBiZSBkb25lIHdpdGggaXQuCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoc3RyLnN0YXJ0c1dpdGgocHJlZml4KSkgeworICAgICAgICAgICAgICAgIHJldHVybiBwcmVmaXgubGVuZ3RoKCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogU2VhcmNoZXMgYSBzdHJpbmcgZm9yIGFub3RoZXIgc3RyaW5nLiAgSWYgbGVuaWVudCBwYXJzaW5nIGlzIG9mZiwKKyAgICAgKiB0aGlzIGp1c3QgY2FsbHMgaW5kZXhPZigpLiAgSWYgbGVuaWVudCBwYXJzaW5nIGlzIG9uLCB0aGlzIGZ1bmN0aW9uCisgICAgICogdXNlcyBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IgdG8gbWF0Y2ggY2hhcmFjdGVycywgYW5kIG9ubHkKKyAgICAgKiBwcmltYXJ5LW9yZGVyIGRpZmZlcmVuY2VzIGFyZSBzaWduaWZpY2FudCBpbiBkZXRlcm1pbmluZyB3aGV0aGVyCisgICAgICogdGhlcmUncyBhIG1hdGNoLgorICAgICAqIEBwYXJhbSBzdHIgVGhlIHN0cmluZyB0byBzZWFyY2gKKyAgICAgKiBAcGFyYW0ga2V5IFRoZSBzdHJpbmcgdG8gc2VhcmNoICJzdHIiIGZvcgorICAgICAqIEByZXR1cm4gQSB0d28tZWxlbWVudCBhcnJheSBvZiBpbnRzLiAgRWxlbWVudCAwIGlzIHRoZSBwb3NpdGlvbgorICAgICAqIG9mIHRoZSBtYXRjaCwgb3IgLTEgaWYgdGhlcmUgd2FzIG5vIG1hdGNoLiAgRWxlbWVudCAxIGlzIHRoZQorICAgICAqIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluICJzdHIiIHRoYXQgbWF0Y2hlZCAod2hpY2ggaXNuJ3QgbmVjZXNzYXJpbHkKKyAgICAgKiB0aGUgc2FtZSBhcyB0aGUgbGVuZ3RoIG9mICJrZXkiKQorICAgICAqLworICAgIHByaXZhdGUgaW50W10gZmluZFRleHQoU3RyaW5nIHN0ciwgU3RyaW5nIGtleSkgeworICAgICAgICByZXR1cm4gZmluZFRleHQoc3RyLCBrZXksIDApOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNlYXJjaGVzIGEgc3RyaW5nIGZvciBhbm90aGVyIHN0cmluZy4gIElmIGxlbmllbnQgcGFyc2luZyBpcyBvZmYsCisgICAgICogdGhpcyBqdXN0IGNhbGxzIGluZGV4T2YoKS4gIElmIGxlbmllbnQgcGFyc2luZyBpcyBvbiwgdGhpcyBmdW5jdGlvbgorICAgICAqIHVzZXMgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yIHRvIG1hdGNoIGNoYXJhY3RlcnMsIGFuZCBvbmx5CisgICAgICogcHJpbWFyeS1vcmRlciBkaWZmZXJlbmNlcyBhcmUgc2lnbmlmaWNhbnQgaW4gZGV0ZXJtaW5pbmcgd2hldGhlcgorICAgICAqIHRoZXJlJ3MgYSBtYXRjaC4KKyAgICAgKiBAcGFyYW0gc3RyIFRoZSBzdHJpbmcgdG8gc2VhcmNoCisgICAgICogQHBhcmFtIGtleSBUaGUgc3RyaW5nIHRvIHNlYXJjaCAic3RyIiBmb3IKKyAgICAgKiBAcGFyYW0gc3RhcnRpbmdBdCBUaGUgaW5kZXggaW50byAic3RyIiB3aGVyZSB0aGUgc2VhcmNoIGlzIHRvCisgICAgICogYmVnaW4KKyAgICAgKiBAcmV0dXJuIEEgdHdvLWVsZW1lbnQgYXJyYXkgb2YgaW50cy4gIEVsZW1lbnQgMCBpcyB0aGUgcG9zaXRpb24KKyAgICAgKiBvZiB0aGUgbWF0Y2gsIG9yIC0xIGlmIHRoZXJlIHdhcyBubyBtYXRjaC4gIEVsZW1lbnQgMSBpcyB0aGUKKyAgICAgKiBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiAic3RyIiB0aGF0IG1hdGNoZWQgKHdoaWNoIGlzbid0IG5lY2Vzc2FyaWx5CisgICAgICogdGhlIHNhbWUgYXMgdGhlIGxlbmd0aCBvZiAia2V5IikKKyAgICAgKi8KKyAgICBwcml2YXRlIGludFtdIGZpbmRUZXh0KFN0cmluZyBzdHIsIFN0cmluZyBrZXksIGludCBzdGFydGluZ0F0KSB7CisgICAgICAgIC8vIGlmIGxlbmllbnQgcGFyc2luZyBpcyB0dXJuZWQgb2ZmLCB0aGlzIGlzIGVhc3k6IGp1c3QgY2FsbAorICAgICAgICAvLyBTdHJpbmcuaW5kZXhPZigpIGFuZCB3ZSdyZSBkb25lCisgICAgICAgIGlmICghZm9ybWF0dGVyLmxlbmllbnRQYXJzZUVuYWJsZWQoKSkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBpbnRbXSB7IHN0ci5pbmRleE9mKGtleSwgc3RhcnRpbmdBdCksIGtleS5sZW5ndGgoKSB9OworCisgICAgICAgIC8vIGJ1dCBpZiBsZW5pZW50IHBhcnNpbmcgaXMgdHVybmVkIE9OLCB3ZSd2ZSBnb3Qgc29tZSB3b3JrCisgICAgICAgIC8vIGFoZWFkIG9mIHVzCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgIC8vIEpESyAxLjEgSEFDSyAodGFrZSBvdXQgb2YgMS4yLXNwZWNpZmljIGNvZGUpCisKKyAgICAgICAgICAgIC8vIGluIEpESyAxLjIsIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvciBwcm92aWRlcyB1cyB3aXRoIGFuCisgICAgICAgICAgICAvLyBBUEkgdG8gbWFwIGJldHdlZW4gY2hhcmFjdGVyIG9mZnNldHMgYW5kIGNvbGxhdGlvbiBlbGVtZW50cworICAgICAgICAgICAgLy8gYW5kIHdlIGNhbiBkbyB0aGlzIGJ5IG1hcmNoaW5nIHRocm91Z2ggdGhlIHN0cmluZyBjb21wYXJpbmcKKyAgICAgICAgICAgIC8vIGNvbGxhdGlvbiBlbGVtZW50cy4gIFdlIGNhbid0IGRvIHRoYXQgaW4gSkRLIDEuMS4gIEluc3RlZCwKKyAgICAgICAgICAgIC8vIHdlIGhhdmUgdG8gZ28gdGhyb3VnaCB0aGlzIGhvcnJpYmxlIHNsb3cgbWVzczoKKyAgICAgICAgICAgIGludCBwID0gc3RhcnRpbmdBdDsKKyAgICAgICAgICAgIGludCBrZXlMZW4gPSAwOworCisgICAgICAgICAgICAvLyBiYXNpY2FsbHkganVzdCBpc29sYXRlIHNtYWxsZXIgYW5kIHNtYWxsZXIgc3Vic3RyaW5ncyBvZgorICAgICAgICAgICAgLy8gdGhlIHRhcmdldCBzdHJpbmcgKGVhY2ggcnVubmluZyB0byB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsCisgICAgICAgICAgICAvLyBhbmQgd2l0aCB0aGUgZmlyc3Qgb25lIHJ1bm5pbmcgZnJvbSBzdGFydGluZ0F0IHRvIHRoZSBlbmQpCisgICAgICAgICAgICAvLyBhbmQgdGhlbiB1c2UgcHJlZml4TGVuZ3RoKCkgdG8gc2VlIGlmIHRoZSBzZWFyY2gga2V5IGlzIGF0CisgICAgICAgICAgICAvLyB0aGUgYmVnaW5uaW5nIG9mIGVhY2ggc3Vic3RyaW5nLiAgVGhpcyBpcyBleGNydWNpYXRpbmdseQorICAgICAgICAgICAgLy8gc2xvdywgYnV0IGl0IHdpbGwgbG9jYXRlIHRoZSBrZXkgYW5kIHRlbGwgdXNlIGhvdyBsb25nIHRoZQorICAgICAgICAgICAgLy8gbWF0Y2hpbmcgdGV4dCB3YXMuCisgICAgICAgICAgICB3aGlsZSAocCA8IHN0ci5sZW5ndGgoKSAmJiBrZXlMZW4gPT0gMCkgeworICAgICAgICAgICAgICAgIGtleUxlbiA9IHByZWZpeExlbmd0aChzdHIuc3Vic3RyaW5nKHApLCBrZXkpOworICAgICAgICAgICAgICAgIGlmIChrZXlMZW4gIT0gMCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IGludFtdIHsgcCwga2V5TGVuIH07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIGlmIHdlIG1ha2UgaXQgdG8gaGVyZSwgd2UgZGlkbid0IGZpbmQgaXQuICBSZXR1cm4gLTEgZm9yIHRoZQorICAgICAgICAgICAgLy8gbG9jYXRpb24uICBUaGUgbGVuZ3RoIHNob3VsZCBiZSBpZ25vcmVkLCBidXQgc2V0IGl0IHRvIDAsCisgICAgICAgICAgICAvLyB3aGljaCBzaG91bGQgYmUgInNhZmUiCisgICAgICAgICAgICByZXR1cm4gbmV3IGludFtdIHsgLTEsIDAgfTsKKworICAgICAgICAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAvLyBKREsgMS4yIHZlcnNpb24gb2YgdGhpcyByb3V0aW5lCisgICAgICAgICAgICAvL1J1bGVCYXNlZENvbGxhdG9yIGNvbGxhdG9yID0gKFJ1bGVCYXNlZENvbGxhdG9yKWZvcm1hdHRlci5nZXRDb2xsYXRvcigpOworICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yIHN0ckl0ZXIgPSBjb2xsYXRvci5nZXRDb2xsYXRpb25FbGVtZW50SXRlcmF0b3Ioc3RyKTsKKyAgICAgICAgICAgIC8vQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yIGtleUl0ZXIgPSBjb2xsYXRvci5nZXRDb2xsYXRpb25FbGVtZW50SXRlcmF0b3Ioa2V5KTsKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvL2ludCBrZXlTdGFydCA9IC0xOworICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vc3RyLnNldE9mZnNldChzdGFydGluZ0F0KTsKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvL2ludCBvU3RyID0gc3RySXRlci5uZXh0KCk7CisgICAgICAgICAgICAvL2ludCBvS2V5ID0ga2V5SXRlci5uZXh0KCk7CisgICAgICAgICAgICAvL3doaWxlIChvS2V5ICE9IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5OVUxMT1JERVIpIHsKKyAgICAgICAgICAgIC8vICAgIHdoaWxlIChvU3RyICE9IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5OVUxMT1JERVIgJiYKKyAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5wcmltYXJ5T3JkZXIob1N0cikgPT0gMCkKKyAgICAgICAgICAgIC8vICAgICAgICBvU3RyID0gc3RySXRlci5uZXh0KCk7CisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gICAgd2hpbGUgKG9LZXkgIT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUiAmJgorICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLnByaW1hcnlPcmRlcihvS2V5KSA9PSAwKQorICAgICAgICAgICAgLy8gICAgICAgIG9LZXkgPSBrZXlJdGVyLm5leHQoKTsKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyAgICBpZiAob1N0ciA9PSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuTlVMTE9SREVSKSB7CisgICAgICAgICAgICAvLyAgICAgICAgcmV0dXJuIG5ldyBpbnRbXSB7IC0xLCAwIH07CisgICAgICAgICAgICAvLyAgICB9CisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gICAgaWYgKG9LZXkgPT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUikgeworICAgICAgICAgICAgLy8gICAgICAgIGJyZWFrOworICAgICAgICAgICAgLy8gICAgfQorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vICAgIGlmIChDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IucHJpbWFyeU9yZGVyKG9TdHIpID09CisgICAgICAgICAgICAvLyAgICAgICAgICAgIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5wcmltYXJ5T3JkZXIob0tleSkpIHsKKyAgICAgICAgICAgIC8vICAgICAgICBrZXlTdGFydCA9IHN0ckl0ZXIuZ2V0T2Zmc2V0KCk7CisgICAgICAgICAgICAvLyAgICAgICAgb1N0ciA9IHN0ckl0ZXIubmV4dCgpOworICAgICAgICAgICAgLy8gICAgICAgIG9LZXkgPSBrZXlJdGVyLm5leHQoKTsKKyAgICAgICAgICAgIC8vICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyAgICAgICAgaWYgKGtleVN0YXJ0ICE9IC0xKSB7CisgICAgICAgICAgICAvLyAgICAgICAgICAgIGtleVN0YXJ0ID0gLTE7CisgICAgICAgICAgICAvLyAgICAgICAgICAgIGtleUl0ZXIucmVzZXQoKTsKKyAgICAgICAgICAgIC8vICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gICAgICAgICAgICBvU3RyID0gc3RySXRlci5uZXh0KCk7CisgICAgICAgICAgICAvLyAgICAgICAgfQorICAgICAgICAgICAgLy8gICAgfQorICAgICAgICAgICAgLy99CisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy9pZiAob0tleSA9PSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuTlVMTE9SREVSKSB7CisgICAgICAgICAgICAvLyAgICByZXR1cm4gbmV3IGludFtdIHsga2V5U3RhcnQsIHN0ckl0ZXIuZ2V0T2Zmc2V0KCkgLSBrZXlTdGFydCB9OworICAgICAgICAgICAgLy99IGVsc2UgeworICAgICAgICAgICAgLy8gICAgcmV0dXJuIG5ldyBpbnRbXSB7IC0xLCAwIH07CisgICAgICAgICAgICAvL30KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIENoZWNrcyB0byBzZWUgd2hldGhlciBhIHN0cmluZyBjb25zaXN0cyBlbnRpcmVseSBvZiBpZ25vcmFibGUKKyAgICAgKiBjaGFyYWN0ZXJzLgorICAgICAqIEBwYXJhbSBzdHIgVGhlIHN0cmluZyB0byB0ZXN0LgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGVtcHR5IG9mIGNvbnNpc3RzIGVudGlyZWx5IG9mCisgICAgICogY2hhcmFjdGVycyB0aGF0IHRoZSBudW1iZXIgZm9ybWF0dGVyJ3MgY29sbGF0b3Igc2F5cyBhcmUKKyAgICAgKiBpZ25vcmFibGUgYXQgdGhlIHByaW1hcnktb3JkZXIgbGV2ZWwuICBmYWxzZSBvdGhlcndpc2UuCisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIGFsbElnbm9yYWJsZShTdHJpbmcgc3RyKSB7CisgICAgICAgIC8vIGlmIHRoZSBzdHJpbmcgaXMgZW1wdHksIHdlIGNhbiBqdXN0IHJldHVybiB0cnVlCisgICAgICAgIGlmIChzdHIubGVuZ3RoKCkgPT0gMCkgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICAvLyBpZiBsZW5pZW50IHBhcnNpbmcgaXMgdHVybmVkIG9uLCB3YWxrIHRocm91Z2ggdGhlIHN0cmluZyB3aXRoCisgICAgICAgIC8vIGEgY29sbGF0aW9uIGVsZW1lbnQgaXRlcmF0b3IgYW5kIG1ha2Ugc3VyZSBlYWNoIGNvbGxhdGlvbgorICAgICAgICAvLyBlbGVtZW50IGlzIDAgKGlnbm9yYWJsZSkgYXQgdGhlIHByaW1hcnkgbGV2ZWwKKyAgICAgICAgaWYgKGZvcm1hdHRlci5sZW5pZW50UGFyc2VFbmFibGVkKCkpIHsKKyAgICAgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yIGNvbGxhdG9yID0gKFJ1bGVCYXNlZENvbGxhdG9yKShmb3JtYXR0ZXIuZ2V0Q29sbGF0b3IoKSk7CisgICAgICAgICAgICBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IgaXRlciA9IGNvbGxhdG9yLmdldENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvcihzdHIpOworCisgICAgICAgICAgICBpbnQgbyA9IGl0ZXIubmV4dCgpOworICAgICAgICAgICAgd2hpbGUgKG8gIT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUgorICAgICAgICAgICAgICAgICAgICYmIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5wcmltYXJ5T3JkZXIobykgPT0gMCkgeworICAgICAgICAgICAgICAgIG8gPSBpdGVyLm5leHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBvID09IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5OVUxMT1JERVI7CisgICAgICAgIC8vIGlmIGxlbmllbnQgcGFyc2luZyBpcyB0dXJuZWQgb2ZmLCB0aGVyZSBpcyBubyBzdWNoIHRoaW5nIGFzCisgICAgICAgIC8vIGFuIGlnbm9yYWJsZSBjaGFyYWN0ZXI6IHJldHVybiB0cnVlIG9ubHkgaWYgdGhlIHN0cmluZyBpcyBlbXB0eQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3RleHQvTkZSdWxlU2V0LmphdmEgYi9zcmMvY29tL2libS9pY3UvdGV4dC9ORlJ1bGVTZXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42MmYxZTU5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvTkZSdWxlU2V0LmphdmEKQEAgLTAsMCArMSw3NTQgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS90ZXh0L05GUnVsZVNldC5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzA3LzMxIDE3OjM3OjA4ICQgCisgKiAkUmV2aXNpb246IDEuNyAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UudGV4dDsKKworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuVUNoYXJhY3RlclByb3BlcnR5OworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuVXRpbGl0eTsKKworaW1wb3J0IGphdmEudGV4dC4qOworaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7CisKKy8qKgorICogQSBjb2xsZWN0aW9uIG9mIHJ1bGVzIHVzZWQgYnkgYSBSdWxlQmFzZWROdW1iZXJGb3JtYXQgdG8gZm9ybWF0IGFuZAorICogcGFyc2UgbnVtYmVycy4gIEl0IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiBhIFJ1bGVTZXQgdG8gc2VsZWN0IGFuCisgKiBhcHByb3ByaWF0ZSBydWxlIGZvciBmb3JtYXR0aW5nIGEgcGFydGljdWxhciBudW1iZXIgYW5kIGRpc3BhdGNoCisgKiBjb250cm9sIHRvIGl0LCBhbmQgdG8gYXJiaXRyYXRlIGJldHdlZW4gZGlmZmVyZW50IHJ1bGVzIHdoZW4gcGFyc2luZworICogYSBudW1iZXIuCisgKiAkUkNTZmlsZTogTkZSdWxlU2V0LmphdmEsdiAkICRSZXZpc2lvbjogMS43ICQgJERhdGU6IDIwMDIvMDcvMzEgMTc6Mzc6MDggJAorICovCitmaW5hbCBjbGFzcyBORlJ1bGVTZXQgeworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBjb25zdGFudHMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBQdXRzIGEgY29weXJpZ2h0IGluIHRoZSAuY2xhc3MgZmlsZQorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHROb3RpY2UKKyAgICAgICAgPSAiQ29weXJpZ2h0IFx1MDBhOTE5OTctMTk5OCBJQk0gQ29ycC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuIjsKKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBkYXRhIG1lbWJlcnMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBUaGUgcnVsZSBzZXQncyBuYW1lCisgICAgICovCisgICAgcHJpdmF0ZSBTdHJpbmcgbmFtZTsKKworICAgIC8qKgorICAgICAqIFRoZSBydWxlIHNldCdzIHJlZ3VsYXIgcnVsZXMKKyAgICAgKi8KKyAgICBwcml2YXRlIE5GUnVsZVtdIHJ1bGVzOworCisgICAgLyoqCisgICAgICogVGhlIHJ1bGUgc2V0J3MgbmVnYXRpdmUtbnVtYmVyIHJ1bGUKKyAgICAgKi8KKyAgICBwcml2YXRlIE5GUnVsZSBuZWdhdGl2ZU51bWJlclJ1bGUgPSBudWxsOworCisgICAgLyoqCisgICAgICogVGhlIHJ1bGUgc2V0J3MgZnJhY3Rpb24gcnVsZXM6IGVsZW1lbnQgMCBpcyB0aGUgcHJvcGVyIGZyYWN0aW9uCisgICAgICogKDAueCkgcnVsZSwgZWxlbWVudCAxIGlzIHRoZSBpbXByb3BlciBmcmFjdGlvbiAoeC54KSBydWxlLCBhbmQKKyAgICAgKiBlbGVtZW50IDIgaXMgdGhlIG1hc3RlciAoeC4wKSBydWxlLgorICAgICAqLworICAgIHByaXZhdGUgTkZSdWxlW10gZnJhY3Rpb25SdWxlcyA9IG5ldyBORlJ1bGVbM107CisKKyAgICAvKioKKyAgICAgKiBUcnVlIGlmIHRoZSBydWxlIHNldCBpcyBhIGZyYWN0aW9uIHJ1bGUgc2V0LiAgQSBmcmFjdGlvbiBydWxlIHNldAorICAgICAqIGlzIGEgcnVsZSBzZXQgdGhhdCBpcyB1c2VkIHRvIGZvcm1hdCB0aGUgZnJhY3Rpb25hbCBwYXJ0IG9mIGEKKyAgICAgKiBudW1iZXIuICBJdCBpcyBjYWxsZWQgZnJvbSBhID4+IHN1YnN0aXR1dGlvbiBpbiBhbm90aGVyIHJ1bGUgc2V0J3MKKyAgICAgKiBmcmFjdGlvbiBydWxlLCBhbmQgaXMgb25seSBjYWxsZWQgdXBvbiB0byBmb3JtYXQgdmFsdWVzIGJldHdlZW4KKyAgICAgKiAwIGFuZCAxLiAgQSBmcmFjdGlvbiBydWxlIHNldCBoYXMgZGlmZmVyZW50IHJ1bGUtc2VsZWN0aW9uCisgICAgICogYmVoYXZpb3IgdGhhbiBhIHJlZ3VsYXIgcnVsZSBzZXQuCisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIGlzRnJhY3Rpb25SdWxlU2V0ID0gZmFsc2U7CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gY29uc3RydWN0aW9uCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoKKyAgICAgKiBDb25zdHJ1Y3RzIGEgcnVsZSBzZXQuCisgICAgICogQHBhcmFtIGRlc2NyaXB0aW9ucyBBbiBhcnJheSBvZiBTdHJpbmdzIHJlcHJlc2VudGluZyBydWxlIHNldAorICAgICAqIGRlc2NyaXB0aW9ucy4gIE9uIGV4aXQsIHRoaXMgcnVsZSBzZXQncyBlbnRyeSBpbiB0aGUgYXJyYXkgd2lsbAorICAgICAqIGhhdmUgYmVlbiBzdHJpcHBlZCBvZiBpdHMgcnVsZSBzZXQgbmFtZSBhbmQgYW55IHRyYWlsaW5nIHdoaXRlc3BhY2UuCisgICAgICogQHBhcmFtIGluZGV4IFRoZSBpbmRleCBpbnRvICJkZXNjcmlwdGlvbnMiIG9mIHRoZSBkZXNjcmlwdGlvbgorICAgICAqIGZvciB0aGUgcnVsZSB0byBiZSBjb25zdHJ1Y3RlZAorICAgICAqLworICAgIHB1YmxpYyBORlJ1bGVTZXQoU3RyaW5nW10gZGVzY3JpcHRpb25zLCBpbnQgaW5kZXgpIHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24geworICAgICAgICBTdHJpbmcgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbnNbaW5kZXhdOworCisgICAgICAgIC8vIGlmIHRoZSBkZXNjcmlwdGlvbiBiZWdpbnMgd2l0aCBhIHJ1bGUgc2V0IG5hbWUgKHRoZSBydWxlIHNldAorICAgICAgICAvLyBuYW1lIGNhbiBiZSBvbWl0dGVkIGluIGZvcm1hdHRlciBkZXNjcmlwdGlvbnMgdGhhdCBjb25zaXN0CisgICAgICAgIC8vIG9mIG9ubHkgb25lIHJ1bGUgc2V0KSwgY29weSBpdCBvdXQgaW50byBvdXIgIm5hbWUiIG1lbWJlcgorICAgICAgICAvLyBhbmQgZGVsZXRlIGl0IGZyb20gdGhlIGRlc2NyaXB0aW9uCisgICAgICAgIGlmIChkZXNjcmlwdGlvbi5jaGFyQXQoMCkgPT0gJyUnKSB7CisgICAgICAgICAgICBpbnQgcG9zID0gZGVzY3JpcHRpb24uaW5kZXhPZignOicpOworICAgICAgICAgICAgaWYgKHBvcyA9PSAtMSkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlJ1bGUgc2V0IG5hbWUgZG9lc24ndCBlbmQgaW4gY29sb24iKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbmFtZSA9IGRlc2NyaXB0aW9uLnN1YnN0cmluZygwLCBwb3MpOworICAgICAgICAgICAgICAgIHdoaWxlIChwb3MgPCBkZXNjcmlwdGlvbi5sZW5ndGgoKSAmJiBVQ2hhcmFjdGVyUHJvcGVydHkuaXNSdWxlV2hpdGVTcGFjZShkZXNjcmlwdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhckF0KCsrcG9zKSkpIHsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbi5zdWJzdHJpbmcocG9zKTsKKyAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbnNbaW5kZXhdID0gZGVzY3JpcHRpb247CisgICAgICAgICAgICB9CisKKyAgICAgICAgLy8gaWYgdGhlIGRlc2NyaXB0aW9uIGRvZXNuJ3QgYmVnaW4gd2l0aCBhIHJ1bGUgc2V0IG5hbWUsIGl0cworICAgICAgICAvLyBuYW1lIGlzICIlZGVmYXVsdCIKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG5hbWUgPSAiJWRlZmF1bHQiOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGRlc2NyaXB0aW9uLmxlbmd0aCgpID09IDApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkVtcHR5IHJ1bGUgc2V0IGRlc2NyaXB0aW9uIik7CisgICAgICAgIH0KKworICAgICAgICAvLyBhbGwgb2YgdGhlIG90aGVyIG1lbWJlcnMgb2YgTkZSdWxlU2V0IGFyZSBpbml0aWFsaXplZAorICAgICAgICAvLyBieSBwYXJzZVJ1bGVzKCkKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgdGhlIHN1Ym9yZGluYXRlIGRhdGEgc3RydWN0dXJlcyB1c2VkIGJ5IHRoaXMgb2JqZWN0LgorICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSBSdWxlQmFzZWROdW1iZXJGb3JtYXQgY29uc3RydWN0b3IKKyAgICAgKiBhZnRlciBhbGwgdGhlIHJ1bGUgc2V0cyBoYXZlIGJlZW4gY3JlYXRlZCB0byBhY3R1YWxseSBwYXJzZQorICAgICAqIHRoZSBkZXNjcmlwdGlvbiBhbmQgYnVpbGQgcnVsZXMgZnJvbSBpdC4gIFNpbmNlIGFueSBydWxlIHNldAorICAgICAqIGNhbiByZWZlciB0byBhbnkgb3RoZXIgcnVsZSBzZXQsIHdlIGhhdmUgdG8gaGF2ZSBjcmVhdGVkIGFsbCBvZgorICAgICAqIHRoZW0gYmVmb3JlIHdlIGNhbiBjcmVhdGUgYW55dGhpbmcgZWxzZS4KKyAgICAgKiBAcGFyYW0gZGVzY3JpcHRpb24gVGhlIHRleHR1YWwgZGVzY3JpcHRpb24gb2YgdGhpcyBydWxlIHNldAorICAgICAqIEBwYXJhbSBvd25lciBUaGUgZm9ybWF0dGVyIHRoYXQgb3ducyB0aGlzIHJ1bGUgc2V0CisgICAgICovCisgICAgcHVibGljIHZvaWQgcGFyc2VSdWxlcyhTdHJpbmcgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBSdWxlQmFzZWROdW1iZXJGb3JtYXQgb3duZXIpIHsKKyAgICAgICAgLy8gc3RhcnQgYnkgY3JlYXRpbmcgYSBWZWN0b3Igd2hvc2UgZWxlbWVudHMgYXJlIFN0cmluZ3MgY29udGFpbmluZworICAgICAgICAvLyB0aGUgZGVzY3JpcHRpb25zIG9mIHRoZSBydWxlcyAob25lIHJ1bGUgcGVyIGVsZW1lbnQpLiAgVGhlIHJ1bGVzCisgICAgICAgIC8vIGFyZSBzZXBhcmF0ZWQgYnkgc2VtaWNvbG9ucyAodGhlcmUncyBubyBlc2NhcGUgZmFjaWxpdHk6IEFMTAorICAgICAgICAvLyBzZW1pY29sb25zIGFyZSBydWxlIGRlbGltaXRlcnMpCisgICAgICAgIFZlY3RvciBydWxlRGVzY3JpcHRpb25zID0gbmV3IFZlY3RvcigpOworCisgICAgICAgIGludCBvbGRQID0gMDsKKyAgICAgICAgaW50IHAgPSBkZXNjcmlwdGlvbi5pbmRleE9mKCc7Jyk7CisgICAgICAgIHdoaWxlIChvbGRQICE9IC0xKSB7CisgICAgICAgICAgICBpZiAocCAhPSAtMSkgeworICAgICAgICAgICAgICAgIHJ1bGVEZXNjcmlwdGlvbnMuYWRkRWxlbWVudChkZXNjcmlwdGlvbi5zdWJzdHJpbmcob2xkUCwgcCkpOworICAgICAgICAgICAgICAgIG9sZFAgPSBwICsgMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKG9sZFAgPCBkZXNjcmlwdGlvbi5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgICAgICBydWxlRGVzY3JpcHRpb25zLmFkZEVsZW1lbnQoZGVzY3JpcHRpb24uc3Vic3RyaW5nKG9sZFApKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgb2xkUCA9IHA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwID0gZGVzY3JpcHRpb24uaW5kZXhPZignOycsIHAgKyAxKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIG5vdyBnbyBiYWNrIHRocm91Z2ggYW5kIGJ1aWxkIGEgdmVjdG9yIG9mIHRoZSBydWxlcyB0aGVtc2VsdmVzCisgICAgICAgIC8vICh0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBkZXNjcmlwdGlvbiBsaXN0IGlzbid0IG5lY2Vzc2FyaWx5CisgICAgICAgIC8vIHRoZSBudW1iZXIgb2YgcnVsZXMtLSBzb21lIGRlc2NyaXB0aW9ucyBtYXkgZXhwZW5kIGludG8gdHdvIHJ1bGVzKQorICAgICAgICBWZWN0b3IgdGVtcFJ1bGVzID0gbmV3IFZlY3RvcigpOworCisgICAgICAgIC8vIHdlIGtlZXAgdHJhY2sgb2YgdGhlIHJ1bGUgYmVmb3JlIHRoZSBvbmUgd2UncmUgY3VycmVudGx5IHdvcmtpbmcKKyAgICAgICAgLy8gb24gc29sZWx5IHRvIHN1cHBvcnQgPj4+IHN1YnN0aXR1dGlvbnMKKyAgICAgICAgTkZSdWxlIHByZWRlY2Vzc29yID0gbnVsbDsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBydWxlRGVzY3JpcHRpb25zLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICAvLyBtYWtlUnVsZXMgKGEgZmFjdG9yeSBtZXRob2Qgb24gTkZSdWxlKSB3aWxsIHJldHVybiBlaXRoZXIKKyAgICAgICAgICAgIC8vIGEgc2luZ2xlIHJ1bGUgb3IgYW4gYXJyYXkgb2YgcnVsZXMuICBFaXRoZXIgd2F5LCBhZGQgdGhlbQorICAgICAgICAgICAgLy8gdG8gb3VyIHJ1bGUgdmVjdG9yCisgICAgICAgICAgICBPYmplY3QgdGVtcCA9IE5GUnVsZS5tYWtlUnVsZXMoKFN0cmluZylydWxlRGVzY3JpcHRpb25zLmVsZW1lbnRBdChpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLCBwcmVkZWNlc3Nvciwgb3duZXIpOworCisgICAgICAgICAgICBpZiAodGVtcCBpbnN0YW5jZW9mIE5GUnVsZSkgeworICAgICAgICAgICAgICAgIHRlbXBSdWxlcy5hZGRFbGVtZW50KHRlbXApOworICAgICAgICAgICAgICAgIHByZWRlY2Vzc29yID0gKE5GUnVsZSl0ZW1wOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAodGVtcCBpbnN0YW5jZW9mIE5GUnVsZVtdKSB7CisgICAgICAgICAgICAgICAgTkZSdWxlW10gcnVsZXNUb0FkZCA9IChORlJ1bGVbXSl0ZW1wOworCisgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBydWxlc1RvQWRkLmxlbmd0aDsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgIHRlbXBSdWxlcy5hZGRFbGVtZW50KHJ1bGVzVG9BZGRbal0pOworICAgICAgICAgICAgICAgICAgICBwcmVkZWNlc3NvciA9IHJ1bGVzVG9BZGRbal07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIC8vIG5vdyB3ZSBjYW4gYmFnIHRoZSBkZXNjcmlwdGlvbiBsaXN0CisgICAgICAgIHJ1bGVEZXNjcmlwdGlvbnMgPSBudWxsOworCisgICAgICAgIC8vIGZvciBydWxlcyB0aGF0IGRpZG4ndCBzcGVjaWZ5IGEgYmFzZSB2YWx1ZSwgdGhlaXIgYmFzZSB2YWx1ZXMKKyAgICAgICAgLy8gd2VyZSBpbml0aWFsaXplZCB0byAwLiAgTWFrZSBhbm90aGVyIHBhc3MgdGhyb3VnaCB0aGUgbGlzdCBhbmQKKyAgICAgICAgLy8gc2V0IGFsbCB0aG9zZSBydWxlcycgYmFzZSB2YWx1ZXMuICBXZSBhbHNvIHJlbW92ZSBhbnkgc3BlY2lhbAorICAgICAgICAvLyBydWxlcyBmcm9tIHRoZSBsaXN0IGFuZCBwdXQgdGhlbSBpbnRvIHRoZWlyIG93biBtZW1iZXIgdmFyaWFibGVzCisgICAgICAgIGxvbmcgZGVmYXVsdEJhc2VWYWx1ZSA9IDA7CisKKyAgICAgICAgLy8gKHRoaXMgaXNuJ3QgYSBmb3IgbG9vcCBiZWNhdXNlIHdlIG1pZ2h0IGJlIGRlbGV0aW5nIGl0ZW1zIGZyb20KKyAgICAgICAgLy8gdGhlIHZlY3Rvci0tIHdlIHdhbnQgdG8gbWFrZSBzdXJlIHdlIG9ubHkgaW5jcmVtZW50IGkgd2hlbgorICAgICAgICAvLyB3ZSBfZGlkbid0XyBkZWxldGUgYXl0aGluZyBmcm9tIHRoZSB2ZWN0b3IpCisgICAgICAgIGludCBpID0gMDsKKyAgICAgICAgd2hpbGUgKGkgPCB0ZW1wUnVsZXMuc2l6ZSgpKSB7CisgICAgICAgICAgICBORlJ1bGUgcnVsZSA9IChORlJ1bGUpdGVtcFJ1bGVzLmVsZW1lbnRBdChpKTsKKworICAgICAgICAgICAgc3dpdGNoICgoaW50KXJ1bGUuZ2V0QmFzZVZhbHVlKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBpZiB0aGUgcnVsZSdzIGJhc2UgdmFsdWUgaXMgMCwgZmlsbCBpbiBhIGRlZmF1bHQKKyAgICAgICAgICAgICAgICAvLyBiYXNlIHZhbHVlICh0aGlzIHdpbGwgYmUgMSBwbHVzIHRoZSBwcmVjZWRpbmcKKyAgICAgICAgICAgICAgICAvLyBydWxlJ3MgYmFzZSB2YWx1ZSBmb3IgcmVndWxhciBydWxlIHNldHMsIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAvLyBzYW1lIGFzIHRoZSBwcmVjZWRpbmcgcnVsZSdzIGJhc2UgdmFsdWUgaW4gZnJhY3Rpb24KKyAgICAgICAgICAgICAgICAvLyBydWxlIHNldHMpCisgICAgICAgICAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgICAgICAgICBydWxlLnNldEJhc2VWYWx1ZShkZWZhdWx0QmFzZVZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0ZyYWN0aW9uUnVsZVNldCkgeworICAgICAgICAgICAgICAgICAgICAgICAgKytkZWZhdWx0QmFzZVZhbHVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICsraTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAvLyBpZiBpdCdzIHRoZSBuZWdhdGl2ZS1udW1iZXIgcnVsZSwgY29weSBpdCBpbnRvIGl0cyBvd24KKyAgICAgICAgICAgICAgICAvLyBkYXRhIG1lbWJlciBhbmQgZGVsZXRlIGl0IGZyb20gdGhlIGxpc3QKKyAgICAgICAgICAgICAgICBjYXNlIE5GUnVsZS5ORUdBVElWRV9OVU1CRVJfUlVMRToKKyAgICAgICAgICAgICAgICAgICAgbmVnYXRpdmVOdW1iZXJSdWxlID0gcnVsZTsKKyAgICAgICAgICAgICAgICAgICAgdGVtcFJ1bGVzLnJlbW92ZUVsZW1lbnRBdChpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAvLyBpZiBpdCdzIHRoZSBpbXByb3BlciBmcmFjdGlvbiBydWxlLCBjb3B5IGl0IGludG8gdGhlCisgICAgICAgICAgICAgICAgLy8gY29ycmVjdCBlbGVtZW50IG9mIGZyYWN0aW9uUnVsZXMKKyAgICAgICAgICAgICAgICBjYXNlIE5GUnVsZS5JTVBST1BFUl9GUkFDVElPTl9SVUxFOgorICAgICAgICAgICAgICAgICAgICBmcmFjdGlvblJ1bGVzWzBdID0gcnVsZTsKKyAgICAgICAgICAgICAgICAgICAgdGVtcFJ1bGVzLnJlbW92ZUVsZW1lbnRBdChpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAvLyBpZiBpdCdzIHRoZSBwcm9wZXIgZnJhY3Rpb24gcnVsZSwgY29weSBpdCBpbnRvIHRoZQorICAgICAgICAgICAgICAgIC8vIGNvcnJlY3QgZWxlbWVudCBvZiBmcmFjdGlvblJ1bGVzCisgICAgICAgICAgICAgICAgY2FzZSBORlJ1bGUuUFJPUEVSX0ZSQUNUSU9OX1JVTEU6CisgICAgICAgICAgICAgICAgICAgIGZyYWN0aW9uUnVsZXNbMV0gPSBydWxlOworICAgICAgICAgICAgICAgICAgICB0ZW1wUnVsZXMucmVtb3ZlRWxlbWVudEF0KGkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIC8vIGlmIGl0J3MgdGhlIG1hc3RlciBydWxlLCBjb3B5IGl0IGludG8gdGhlCisgICAgICAgICAgICAgICAgLy8gY29ycmVjdCBlbGVtZW50IG9mIGZyYWN0aW9uUnVsZXMKKyAgICAgICAgICAgICAgICBjYXNlIE5GUnVsZS5NQVNURVJfUlVMRToKKyAgICAgICAgICAgICAgICAgICAgZnJhY3Rpb25SdWxlc1syXSA9IHJ1bGU7CisgICAgICAgICAgICAgICAgICAgIHRlbXBSdWxlcy5yZW1vdmVFbGVtZW50QXQoaSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgLy8gaWYgaXQncyBhIHJlZ3VsYXIgcnVsZSB0aGF0IGFscmVhZHkga25vd3MgaXRzIGJhc2UgdmFsdWUsCisgICAgICAgICAgICAgICAgLy8gY2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBydWxlcyBhcmUgaW4gb3JkZXIsIGFuZCB1cGRhdGUKKyAgICAgICAgICAgICAgICAvLyB0aGUgZGVmYXVsdCBiYXNlIHZhbHVlIGZvciB0aGUgbmV4dCBydWxlCisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJ1bGUuZ2V0QmFzZVZhbHVlKCkgPCBkZWZhdWx0QmFzZVZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJSdWxlcyBhcmUgbm90IGluIG9yZGVyIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEJhc2VWYWx1ZSA9IHJ1bGUuZ2V0QmFzZVZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGlmICghaXNGcmFjdGlvblJ1bGVTZXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrZGVmYXVsdEJhc2VWYWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICArK2k7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gZmluYWxseSwgd2UgY2FuIGNvcHkgdGhlIHJ1bGVzIGZyb20gdGhlIHZlY3RvciBpbnRvIGEKKyAgICAgICAgLy8gZml4ZWQtbGVuZ3RoIGFycmF5CisgICAgICAgIHJ1bGVzID0gbmV3IE5GUnVsZVt0ZW1wUnVsZXMuc2l6ZSgpXTsKKyAgICAgICAgdGVtcFJ1bGVzLmNvcHlJbnRvKChPYmplY3RbXSlydWxlcyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogRmxhZ3MgdGhpcyBydWxlIHNldCBhcyBhIGZyYWN0aW9uIHJ1bGUgc2V0LiAgVGhpcyBmdW5jdGlvbiBpcworICAgICAqIGNhbGxlZCBkdXJpbmcgdGhlIGNvbnN0cnVjdGlvbiBwcm9jZXNzIG9uY2Ugd2Uga25vdyB0aGlzIHJ1bGUKKyAgICAgKiBzZXQgaXMgYSBmcmFjdGlvbiBydWxlIHNldC4gIFdlIGRvbid0IGtub3cgYSBydWxlIHNldCBpcyBhCisgICAgICogZnJhY3Rpb24gcnVsZSBzZXQgdW50aWwgd2Ugc2VlIGl0IHVzZWQgc29tZXdoZXJlLiAgVGhpcyBmdW5jdGlvbgorICAgICAqIGlzIG5vdCBhZCBtdXN0IG5vdCBiZSBjYWxsZWQgYXQgYW55IHRpbWUgb3RoZXIgdGhhbiBkdXJpbmcKKyAgICAgKiBjb25zdHJ1Y3Rpb24gb2YgYSBSdWxlQmFzZWROdW1iZXJGb3JtYXQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgbWFrZUludG9GcmFjdGlvblJ1bGVTZXQoKSB7CisgICAgICAgIGlzRnJhY3Rpb25SdWxlU2V0ID0gdHJ1ZTsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gYm9pbGVycGxhdGUKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBDb21wYXJlcyB0d28gcnVsZSBzZXRzIGZvciBlcXVhbGl0eS4KKyAgICAgKiBAcGFyYW0gdGhhdCBUaGUgb3RoZXIgcnVsZSBzZXQKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIHR3byBydWxlIHNldHMgYXJlIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50LgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3QgdGhhdCkgeworICAgICAgICAvLyBpZiBkaWZmZXJlbnQgY2xhc3NlcywgdGhleSdyZSBub3QgZXF1YWwKKyAgICAgICAgaWYgKCEodGhhdCBpbnN0YW5jZW9mIE5GUnVsZVNldCkpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIG90aGVyd2lzZSwgY29tcGFyZSB0aGUgbWVtYmVycyBvbmUgYnkgb25lLi4uCisgICAgICAgICAgICBORlJ1bGVTZXQgdGhhdDIgPSAoTkZSdWxlU2V0KXRoYXQ7CisKKyAgICAgICAgICAgIGlmICghbmFtZS5lcXVhbHModGhhdDIubmFtZSkKKwkJfHwgIVV0aWxpdHkub2JqZWN0RXF1YWxzKG5lZ2F0aXZlTnVtYmVyUnVsZSwgdGhhdDIubmVnYXRpdmVOdW1iZXJSdWxlKQorCQl8fCAhVXRpbGl0eS5vYmplY3RFcXVhbHMoZnJhY3Rpb25SdWxlc1swXSwgdGhhdDIuZnJhY3Rpb25SdWxlc1swXSkKKwkJfHwgIVV0aWxpdHkub2JqZWN0RXF1YWxzKGZyYWN0aW9uUnVsZXNbMV0sIHRoYXQyLmZyYWN0aW9uUnVsZXNbMV0pCisJCXx8ICFVdGlsaXR5Lm9iamVjdEVxdWFscyhmcmFjdGlvblJ1bGVzWzJdLCB0aGF0Mi5mcmFjdGlvblJ1bGVzWzJdKQorCQl8fCBydWxlcy5sZW5ndGggIT0gdGhhdDIucnVsZXMubGVuZ3RoCisgICAgICAgICAgICAgICAgfHwgaXNGcmFjdGlvblJ1bGVTZXQgIT0gdGhhdDIuaXNGcmFjdGlvblJ1bGVTZXQpIHsKKworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gLi4udGhlbiBjb21wYXJlIHRoZSBydWxlIGxpc3RzLi4uCisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJ1bGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKCFydWxlc1tpXS5lcXVhbHModGhhdDIucnVsZXNbaV0pKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIC4uLmFuZCBpZiB3ZSBtYWtlIGl0IGhlcmUsIHRuZXkncmUgZXF1YWwKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCisKKyAgICAvKioKKyAgICAgKiBCdWlsZHMgYSB0ZXh0dWFsIHJlcHJlc2VudGF0aW9uIG9mIGEgcnVsZSBzZXQuCisgICAgICogQHJldHVybiBBIHRleHR1YWwgcmVwcmVzZW50YXRpb24gb2YgYSBydWxlIHNldC4gIFRoaXMgd29uJ3QKKyAgICAgKiBuZWNlc3NhcmlseSBiZSB0aGUgc2FtZSBkZXNjcmlwdGlvbiB0aGF0IHRoZSBydWxlIHNldCB3YXMKKyAgICAgKiBjb25zdHJ1Y3RlZCB3aXRoLCBidXQgaXQgd2lsbCBwcm9kdWNlIHRoZSBzYW1lIHJlc3VsdHMuCisgICAgICovCisgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgU3RyaW5nQnVmZmVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKworICAgICAgICAvLyB0aGUgcnVsZSBzZXQgbmFtZSBnb2VzIGZpcnN0Li4uCisgICAgICAgIHJlc3VsdC5hcHBlbmQobmFtZSArICI6XG4iKTsKKworICAgICAgICAvLyBmb2xsb3dlZCBieSB0aGUgcmVndWxhciBydWxlcy4uLgorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJ1bGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCIgICAgIiArIHJ1bGVzW2ldLnRvU3RyaW5nKCkgKyAiXG4iKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGZvbGxvd2VkIGJ5IHRoZSBzcGVjaWFsIHJ1bGVzIChpZiB0aGV5IGV4aXN0KQorICAgICAgICBpZiAobmVnYXRpdmVOdW1iZXJSdWxlICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIiAgICAiICsgbmVnYXRpdmVOdW1iZXJSdWxlLnRvU3RyaW5nKCkgKyAiXG4iKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZnJhY3Rpb25SdWxlc1swXSAhPSBudWxsKSB7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCIgICAgIiArIGZyYWN0aW9uUnVsZXNbMF0udG9TdHJpbmcoKSArICJcbiIpOworICAgICAgICB9CisgICAgICAgIGlmIChmcmFjdGlvblJ1bGVzWzFdICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIiAgICAiICsgZnJhY3Rpb25SdWxlc1sxXS50b1N0cmluZygpICsgIlxuIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGZyYWN0aW9uUnVsZXNbMl0gIT0gbnVsbCkgeworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiICAgICIgKyBmcmFjdGlvblJ1bGVzWzJdLnRvU3RyaW5nKCkgKyAiXG4iKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gc2ltcGxlIGFjY2Vzc29ycworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIFNheXMgd2hldGhlciB0aGlzIHJ1bGUgc2V0IGlzIGEgZnJhY3Rpb24gcnVsZSBzZXQuCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoaXMgcnVsZSBpcyBhIGZyYWN0aW9uIHJ1bGUgc2V0OyBmYWxzZSBpZiBpdCBpc24ndAorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGlzRnJhY3Rpb25TZXQoKSB7CisgICAgICAgIHJldHVybiBpc0ZyYWN0aW9uUnVsZVNldDsKKyAgICB9CisKKyAgICAvKgorICAgICAqIFJldHVybnMgdGhlIHJ1bGUgc2V0J3MgbmFtZQorICAgICAqIEByZXR1cm4gVGhlIHJ1bGUgc2V0J3MgbmFtZQorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpIHsKKyAgICAgICAgcmV0dXJuIG5hbWU7CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIGZvcm1hdHRpbmcKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBGb3JtYXRzIGEgbG9uZy4gIFNlbGVjdHMgYW4gYXBwcm9wcmlhdGUgcnVsZSBhbmQgZGlzcGF0Y2hlcworICAgICAqIGNvbnRyb2wgdG8gaXQuCisgICAgICogQHBhcmFtIG51bWJlciBUaGUgbnVtYmVyIGJlaW5nIGZvcm1hdHRlZAorICAgICAqIEBwYXJhbSB0b0luc2VydEludG8gVGhlIHN0cmluZyB3aGVyZSB0aGUgcmVzdWx0IGlzIHRvIGJlIHBsYWNlZAorICAgICAqIEBwYXJhbSBwb3MgVGhlIHBvc2l0aW9uIGluIHRvSW5zZXJ0SW50byB3aGVyZSB0aGUgcmVzdWx0IG9mCisgICAgICogdGhpcyBvcGVyYXRpb24gaXMgdG8gYmUgaW5zZXJ0ZWQKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBmb3JtYXQobG9uZyBudW1iZXIsIFN0cmluZ0J1ZmZlciB0b0luc2VydEludG8sIGludCBwb3MpIHsKKyAgICAgICAgTkZSdWxlIGFwcGxpY2FibGVSdWxlID0gZmluZE5vcm1hbFJ1bGUobnVtYmVyKTsKKworICAgICAgICBhcHBsaWNhYmxlUnVsZS5kb0Zvcm1hdChudW1iZXIsIHRvSW5zZXJ0SW50bywgcG9zKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBGb3JtYXRzIGEgZG91YmxlLiAgU2VsZWN0cyBhbiBhcHByb3ByaWF0ZSBydWxlIGFuZCBkaXNwYXRjaGVzCisgICAgICogY29udHJvbCB0byBpdC4KKyAgICAgKiBAcGFyYW0gbnVtYmVyIFRoZSBudW1iZXIgYmVpbmcgZm9ybWF0dGVkCisgICAgICogQHBhcmFtIHRvSW5zZXJ0SW50byBUaGUgc3RyaW5nIHdoZXJlIHRoZSByZXN1bHQgaXMgdG8gYmUgcGxhY2VkCisgICAgICogQHBhcmFtIHBvcyBUaGUgcG9zaXRpb24gaW4gdG9JbnNlcnRJbnRvIHdoZXJlIHRoZSByZXN1bHQgb2YKKyAgICAgKiB0aGlzIG9wZXJhdGlvbiBpcyB0byBiZSBpbnNlcnRlZAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGZvcm1hdChkb3VibGUgbnVtYmVyLCBTdHJpbmdCdWZmZXIgdG9JbnNlcnRJbnRvLCBpbnQgcG9zKSB7CisgICAgICAgIE5GUnVsZSBhcHBsaWNhYmxlUnVsZSA9IGZpbmRSdWxlKG51bWJlcik7CisKKyAgICAgICAgYXBwbGljYWJsZVJ1bGUuZG9Gb3JtYXQobnVtYmVyLCB0b0luc2VydEludG8sIHBvcyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2VsZWN0cyBhbiBhcHJvcHJpYXRlIHJ1bGUgZm9yIGZvcm1hdHRpbmcgdGhlIG51bWJlci4KKyAgICAgKiBAcGFyYW0gbnVtYmVyIFRoZSBudW1iZXIgYmVpbmcgZm9ybWF0dGVkLgorICAgICAqIEByZXR1cm4gVGhlIHJ1bGUgdGhhdCBzaG91bGQgYmUgdXNlZCB0byBmb3JtYXQgaXQKKyAgICAgKi8KKyAgICBwcml2YXRlIE5GUnVsZSBmaW5kUnVsZShkb3VibGUgbnVtYmVyKSB7CisgICAgICAgIC8vIGlmIHRoaXMgaXMgYSBmcmFjdGlvbiBydWxlIHNldCwgdXNlIGZpbmRGcmFjdGlvblJ1bGVTZXRSdWxlKCkKKyAgICAgICAgaWYgKGlzRnJhY3Rpb25SdWxlU2V0KSB7CisgICAgICAgICAgICByZXR1cm4gZmluZEZyYWN0aW9uUnVsZVNldFJ1bGUobnVtYmVyKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGlmIHRoZSBudW1iZXIgaXMgbmVnYXRpdmUsIHJldHVybiB0aGUgbmVnYXRpdmUgbnVtYmVyIHJ1bGUKKyAgICAgICAgLy8gKGlmIHRoZXJlIGlzbid0IGEgbmVnYXRpdmUtbnVtYmVyIHJ1bGUsIHdlIHByZXRlbmQgaXQncyBhCisgICAgICAgIC8vIHBvc2l0aXZlIG51bWJlcikKKyAgICAgICAgaWYgKG51bWJlciA8IDApIHsKKyAgICAgICAgICAgIGlmIChuZWdhdGl2ZU51bWJlclJ1bGUgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJldHVybiBuZWdhdGl2ZU51bWJlclJ1bGU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG51bWJlciA9IC1udW1iZXI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBpZiB0aGUgbnVtYmVyIGlzbid0IGFuIGludGVnZXIsIHdlIHVzZSBvbmUgZiB0aGUgZnJhY3Rpb24gcnVsZXMuLi4KKyAgICAgICAgaWYgKG51bWJlciAhPSBNYXRoLmZsb29yKG51bWJlcikpIHsKKyAgICAgICAgICAgIC8vIGlmIHRoZSBudW1iZXIgaXMgYmV0d2VlbiAwIGFuZCAxLCByZXR1cm4gdGhlIHByb3BlcgorICAgICAgICAgICAgLy8gZnJhY3Rpb24gcnVsZQorICAgICAgICAgICAgaWYgKG51bWJlciA8IDEgJiYgZnJhY3Rpb25SdWxlc1sxXSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZyYWN0aW9uUnVsZXNbMV07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIG90aGVyd2lzZSwgcmV0dXJuIHRoZSBpbXByb3BlciBmcmFjdGlvbiBydWxlCisgICAgICAgICAgICBlbHNlIGlmIChmcmFjdGlvblJ1bGVzWzBdICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZnJhY3Rpb25SdWxlc1swXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIGlmIHRoZXJlJ3MgYSBtYXN0ZXIgcnVsZSwgdXNlIGl0IHRvIGZvcm1hdCB0aGUgbnVtYmVyCisgICAgICAgIGlmIChmcmFjdGlvblJ1bGVzWzJdICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBmcmFjdGlvblJ1bGVzWzJdOworCisgICAgICAgIC8vIGFuZCBpZiB3ZSBoYXZlbid0IHlldCByZXR1cm5lZCBhIHJ1bGUsIHVzZSBmaW5kTm9ybWFsUnVsZSgpCisgICAgICAgIC8vIHRvIGZpbmQgdGhlIGFwcGxpY2FibGUgcnVsZQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGZpbmROb3JtYWxSdWxlKChsb25nKU1hdGgucm91bmQobnVtYmVyKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJZiB0aGUgdmFsdWUgcGFzc2VkIHRvIGZpbmRSdWxlKCkgaXMgYSBwb3NpdGl2ZSBpbnRlZ2VyLCBmaW5kUnVsZSgpCisgICAgICogdXNlcyB0aGlzIGZ1bmN0aW9uIHRvIHNlbGVjdCB0aGUgYXBwcm9wcmlhdGUgcnVsZS4gIFRoZSByZXN1bHQgd2lsbAorICAgICAqIGdlbmVyYWxseSBiZSB0aGUgcnVsZSB3aXRoIHRoZSBoaWdoZXN0IGJhc2UgdmFsdWUgbGVzcyB0aGFuIG9yIGVxdWFsCisgICAgICogdG8gdGhlIG51bWJlci4gIFRoZXJlIGlzIG9uZSBleGNlcHRpb24gdG8gdGhpczogSWYgdGhhdCBydWxlIGhhcworICAgICAqIHR3byBzdWJzdGl0dXRpb25zIGFuZCBhIGJhc2UgdmFsdWUgdGhhdCBpcyBub3QgYW4gZXZlbiBtdWx0aXBsZSBvZgorICAgICAqIGl0cyBkaXZpc29yLCBhbmQgdGhlIG51bWJlciBpdHNlbGYgSVMgYW4gZXZlbiBtdWx0aXBsZSBvZiB0aGUgcnVsZSdzCisgICAgICogZGl2aXNvciwgdGhlbiB0aGUgcmVzdWx0IHdpbGwgYmUgdGhlIHJ1bGUgdGhhdCBwcmVjZWRlZCB0aGUgb3JpZ2luYWwKKyAgICAgKiByZXN1bHQgaW4gdGhlIHJ1bGUgbGlzdC4gIChUaGlzIGJlaGF2aW9yIGlzIGtub3duIGFzIHRoZSAicm9sbGJhY2sKKyAgICAgKiBydWxlIiwgYW5kIGlzIHVzZWQgdG8gaGFuZGxlIG9wdGlvbmFsIHRleHQ6IGEgcnVsZSB3aXRoIG9wdGlvbmFsCisgICAgICogdGV4dCBpcyByZXByZXNlbnRlZCBpbnRlcm5hbGx5IGFzIHR3byBydWxlcywgYW5kIHRoZSByb2xsYmFjayBydWxlCisgICAgICogc2VsZWN0cyBhcHByb3ByaWF0ZSBiZXR3ZWVuIHRoZW0uICBUaGlzIGF2b2lkcyB0aGluZ3MgbGlrZSAidHdvCisgICAgICogaHVuZHJlZCB6ZXJvIi4pCisgICAgICogQHBhcmFtIG51bWJlciBUaGUgbnVtYmVyIGJlaW5nIGZvcm1hdHRlZAorICAgICAqIEByZXR1cm4gVGhlIHJ1bGUgdG8gdXNlIHRvIGZvcm1hdCB0aGlzIG51bWJlcgorICAgICAqLworICAgIHByaXZhdGUgTkZSdWxlIGZpbmROb3JtYWxSdWxlKGxvbmcgbnVtYmVyKSB7CisgICAgICAgIC8vIGlmIHRoaXMgaXMgYSBmcmFjdGlvbiBydWxlIHNldCwgdXNlIGZpbmRGcmFjdGlvblJ1bGVTZXRSdWxlKCkKKyAgICAgICAgLy8gdG8gZmluZCB0aGUgcnVsZSAod2Ugc2hvdWxkIG9ubHkgZ28gaW50byB0aGlzIGNsYXVzZSBpZiB0aGUKKyAgICAgICAgLy8gdmFsdWUgaXMgMCkKKyAgICAgICAgaWYgKGlzRnJhY3Rpb25SdWxlU2V0KSB7CisgICAgICAgICAgICByZXR1cm4gZmluZEZyYWN0aW9uUnVsZVNldFJ1bGUobnVtYmVyKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGlmIHRoZSBudW1iZXIgaXMgbmVnYXRpdmUsIHJldHVybiB0aGUgbmVnYXRpdmUtbnVtYmVyIHJ1bGUKKyAgICAgICAgLy8gKGlmIHRoZXJlIGlzbid0IG9uZSwgcHJldGVuZCB0aGUgbnVtYmVyIGlzIHBvc2l0aXZlKQorICAgICAgICBpZiAobnVtYmVyIDwgMCkgeworICAgICAgICAgICAgaWYgKG5lZ2F0aXZlTnVtYmVyUnVsZSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5lZ2F0aXZlTnVtYmVyUnVsZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbnVtYmVyID0gLW51bWJlcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIHdlIGhhdmUgdG8gcmVwZWF0IHRoZSBwcmVjZWRpbmcgdHdvIGNoZWNrcywgZXZlbiB0aG91Z2ggd2UKKyAgICAgICAgLy8gZG8gdGhlbSBpbiBmaW5kUnVsZSgpLCBiZWNhdXNlIHRoZSB2ZXJzaW9uIG9mIGZvcm1hdCgpIHRoYXQKKyAgICAgICAgLy8gdGFrZXMgYSBsb25nIGJ5cGFzc2VzIGZpbmRSdWxlKCkgYW5kIGdvZXMgc3RyYWlnaHQgdG8gdGhpcworICAgICAgICAvLyBmdW5jdGlvbi4gIFRoaXMgZnVuY3Rpb24gZG9lcyBza2lwIHRoZSBmcmFjdGlvbiBydWxlcyBzaW5jZQorICAgICAgICAvLyB3ZSBrbm93IHRoZSB2YWx1ZSBpcyBhbiBpbnRlZ2VyIChpdCBhbHNvIHNraXBzIHRoZSBtYXN0ZXIKKyAgICAgICAgLy8gcnVsZSwgc2luY2UgaXQncyBjb25zaWRlcmVkIGEgZnJhY3Rpb24gcnVsZS4gIFNraXBwaW5nIHRoZQorICAgICAgICAvLyBtYXN0ZXIgcnVsZSBpbiB0aGlzIGZ1bmN0aW9uIGlzIGFsc28gaG93IHdlIGF2b2lkIGluZmluaXRlCisgICAgICAgIC8vIHJlY3Vyc2lvbikKKworICAgICAgICAvLyBiaW5hcnktc2VhcmNoIHRoZSBydWxlIGxpc3QgZm9yIHRoZSBhcHBsaWNhYmxlIHJ1bGUKKyAgICAgICAgLy8gKGEgcnVsZSBpcyB1c2VkIGZvciBhbGwgdmFsdWVzIGZyb20gaXRzIGJhc2UgdmFsdWUgdG8KKyAgICAgICAgLy8gdGhlIG5leHQgcnVsZSdzIGJhc2UgdmFsdWUpCisgICAgICAgIGludCBsbyA9IDA7CisgICAgICAgIGludCBoaSA9IHJ1bGVzLmxlbmd0aDsKKwlpZiAoaGkgPiAwKSB7CisJICAgIHdoaWxlIChsbyA8IGhpKSB7CisJCWludCBtaWQgPSAobG8gKyBoaSkgLyAyOworCQlpZiAocnVsZXNbbWlkXS5nZXRCYXNlVmFsdWUoKSA9PSBudW1iZXIpIHsKKwkJICAgIHJldHVybiBydWxlc1ttaWRdOworCQl9CisJCWVsc2UgaWYgKHJ1bGVzW21pZF0uZ2V0QmFzZVZhbHVlKCkgPiBudW1iZXIpIHsKKwkJICAgIGhpID0gbWlkOworCQl9CisJCWVsc2UgeworCQkgICAgbG8gPSBtaWQgKyAxOworCQl9CisJICAgIH0KKwkgICAgTkZSdWxlIHJlc3VsdCA9IHJ1bGVzW2hpIC0gMV07CisKKwkgICAgLy8gdXNlIHNob3VsZFJvbGxCYWNrKCkgdG8gc2VlIHdoZXRoZXIgd2UgbmVlZCB0byBpbnZva2UgdGhlCisJICAgIC8vIHJvbGxiYWNrIHJ1bGUgKHNlZSBzaG91bGRSb2xsQmFjaygpJ3MgZG9jdW1lbnRhdGlvbiBmb3IKKwkgICAgLy8gYW4gZXhwbGFuYXRpb24gb2YgdGhlIHJvbGxiYWNrIHJ1bGUpLiAgSWYgd2UgZG8sIHJvbGwgYmFjaworCSAgICAvLyBvbmUgcnVsZSBhbmQgcmV0dXJuIHRoYXQgb25lIGluc3RlYWQgb2YgdGhlIG9uZSB3ZSdkIG5vcm1hbGx5CisJICAgIC8vIHJldHVybgorCSAgICBpZiAocmVzdWx0LnNob3VsZFJvbGxCYWNrKG51bWJlcikpIHsKKwkJcmVzdWx0ID0gcnVsZXNbaGkgLSAyXTsKKwkgICAgfQorCSAgICByZXR1cm4gcmVzdWx0OworCX0KKwkvLyBlbHNlIHVzZSB0aGUgbWFzdGVyIHJ1bGUKKwlyZXR1cm4gZnJhY3Rpb25SdWxlc1syXTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJZiB0aGlzIHJ1bGUgaXMgYSBmcmFjdGlvbiBydWxlIHNldCwgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIGJ5CisgICAgICogZmluZFJ1bGUoKSB0byBzZWxlY3QgdGhlIG1vc3QgYXBwcm9wcmlhdGUgcnVsZSBmb3IgZm9ybWF0dGluZworICAgICAqIHRoZSBudW1iZXIuICBCYXNpY2FsbHksIHRoZSBiYXNlIHZhbHVlIG9mIGVhY2ggcnVsZSBpbiB0aGUgcnVsZQorICAgICAqIHNldCBpcyB0cmVhdGVkIGFzIHRoZSBkZW5vbWluYXRvciBvZiBhIGZyYWN0aW9uLiAgV2hpY2hldmVyCisgICAgICogZGVub21pbmF0b3IgY2FuIHByb2R1Y2UgdGhlIGZyYWN0aW9uIGNsb3Nlc3QgaW4gdmFsdWUgdG8gdGhlCisgICAgICogbnVtYmVyIHBhc3NlZCBpbiBpcyB0aGUgcmVzdWx0LiAgSWYgdGhlcmUncyBhIHRpZSwgdGhlIGVhcmxpZXIKKyAgICAgKiBvbmUgaW4gdGhlIGxpc3Qgd2lucy4gIChJZiB0aGVyZSBhcmUgdHdvIHJ1bGVzIGluIGEgcm93IHdpdGggdGhlCisgICAgICogc2FtZSBiYXNlIHZhbHVlLCB0aGUgZmlyc3Qgb25lIGlzIHVzZWQgd2hlbiB0aGUgbnVtZXJhdG9yIG9mIHRoZQorICAgICAqIGZyYWN0aW9uIHdvdWxkIGJlIDEsIGFuZCB0aGUgc2Vjb25kIHJ1bGUgaXMgdXNlZCB0aGUgcmVzdCBvZiB0aGUKKyAgICAgKiB0aW1lLgorICAgICAqIEBwYXJhbSBudW1iZXIgVGhlIG51bWJlciBiZWluZyBmb3JtYXR0ZWQgKHdoaWNoIHdpbGwgYWx3YXlzIGJlCisgICAgICogYSBudW1iZXIgYmV0d2VlbiAwIGFuZCAxKQorICAgICAqIEByZXR1cm4gVGhlIHJ1bGUgdG8gdXNlIHRvIGZvcm1hdCB0aGlzIG51bWJlcgorICAgICAqLworICAgIHByaXZhdGUgTkZSdWxlIGZpbmRGcmFjdGlvblJ1bGVTZXRSdWxlKGRvdWJsZSBudW1iZXIpIHsKKyAgICAgICAgLy8gdGhlIG9idmlvdXMgd2F5IHRvIGRvIHRoaXMgKG11bHRpcGx5IHRoZSB2YWx1ZSBiZWluZyBmb3JtYXR0ZWQKKyAgICAgICAgLy8gYnkgZWFjaCBydWxlJ3MgYmFzZSB2YWx1ZSB1bnRpbCB5b3UgZ2V0IGFuIGludGVncmFsIHJlc3VsdCkKKyAgICAgICAgLy8gZG9lc24ndCB3b3JrIGJlY2F1c2Ugb2Ygcm91bmRpbmcgZXJyb3IuICBUaGlzIG1ldGhvZCBpcyBtb3JlCisgICAgICAgIC8vIGFjY3VyYXRlCisKKyAgICAgICAgLy8gZmluZCB0aGUgbGVhc3QgY29tbW9uIG11bHRpcGxlIG9mIHRoZSBydWxlcycgYmFzZSB2YWx1ZXMKKyAgICAgICAgLy8gYW5kIG11bHRpcGx5IHRoaXMgYnkgdGhlIG51bWJlciBiZWluZyBmb3JtYXR0ZWQuICBUaGlzIGlzCisgICAgICAgIC8vIGFsbCB0aGUgcHJlY2lzaW9uIHdlIG5lZWQsIGFuZCB3ZSBjYW4gZG8gYWxsIG9mIHRoZSByZXN0CisgICAgICAgIC8vIG9mIHRoZSBtYXRoIHVzaW5nIGludGVnZXIgYXJpdGhtZXRpYworICAgICAgICBsb25nIGxlYXN0Q29tbW9uTXVsdGlwbGUgPSBydWxlc1swXS5nZXRCYXNlVmFsdWUoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBydWxlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgbGVhc3RDb21tb25NdWx0aXBsZSA9IGxjbShsZWFzdENvbW1vbk11bHRpcGxlLCBydWxlc1tpXS5nZXRCYXNlVmFsdWUoKSk7CisgICAgICAgIH0KKyAgICAgICAgbG9uZyBudW1lcmF0b3IgPSAobG9uZykoTWF0aC5yb3VuZChudW1iZXIgKiBsZWFzdENvbW1vbk11bHRpcGxlKSk7CisKKyAgICAgICAgLy8gZm9yIGVhY2ggcnVsZSwgZG8gdGhlIGZvbGxvd2luZy4uLgorICAgICAgICBsb25nIHRlbXBEaWZmZXJlbmNlOworICAgICAgICBsb25nIGRpZmZlcmVuY2UgPSBMb25nLk1BWF9WQUxVRTsKKyAgICAgICAgaW50IHdpbm5lciA9IDA7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcnVsZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIC8vICJudW1lcmF0b3IiIGlzIHRoZSBudW1lcmF0b3Igb2YgdGhlIGZyYWN0aW9uIGlzIHRoZQorICAgICAgICAgICAgLy8gZGVub21pbmF0b3IgaXMgdGhlIExDRC4gIFRoZSBudW1lcmF0b3IgaWYgdGhlIHRoZSBydWxlJ3MKKyAgICAgICAgICAgIC8vIGJhc2UgdmFsdWUgaXMgdGhlIGRlbm9taWF0b3IgaXMgIm51bWVyYXRvciIgdGltZXMgdGhlCisgICAgICAgICAgICAvLyBiYXNlIHZhbHVlIGRpdmlkZWQgYnl0aGUgTENELiAgSGVyZSB3ZSBjaGVjayB0byBzZWUgaWYKKyAgICAgICAgICAgIC8vIHRoYXQncyBhbiBpbnRlZ2VyLCBhbmQgaWYgbm90LCBob3cgY2xvc2UgaXQgaXMgdG8gYmVpbmcKKyAgICAgICAgICAgIC8vIGFuIGludGVnZXIuCisgICAgICAgICAgICB0ZW1wRGlmZmVyZW5jZSA9IG51bWVyYXRvciAqIHJ1bGVzW2ldLmdldEJhc2VWYWx1ZSgpICUgbGVhc3RDb21tb25NdWx0aXBsZTsKKworICAgICAgICAgICAgLy8gbm9ybWFsaXplIHRoZSByZXN1bHQgb2YgdGhlIGFib3ZlIGNhbGN1bGF0aW9uOiB3ZSB3YW50CisgICAgICAgICAgICAvLyB0aGUgbnVtZXJhdG9yJ3MgZGlzdGFuY2UgZnJvbSB0aGUgQ0xPU0VTVCBtdWx0aXBsZQorICAgICAgICAgICAgLy8gb2YgdGhlIExDRAorICAgICAgICAgICAgaWYgKGxlYXN0Q29tbW9uTXVsdGlwbGUgLSB0ZW1wRGlmZmVyZW5jZSA8IHRlbXBEaWZmZXJlbmNlKSB7CisgICAgICAgICAgICAgICAgdGVtcERpZmZlcmVuY2UgPSBsZWFzdENvbW1vbk11bHRpcGxlIC0gdGVtcERpZmZlcmVuY2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIGlmIHRoaXMgaXMgYXMgY2xvc2UgYXMgd2UndmUgY29tZSwga2VlcCB0cmFjayBvZiBob3cgY2xvc2UKKyAgICAgICAgICAgIC8vIHRoYXQgaXMsIGFuZCB0aGUgbGluZSBudW1iZXIgb2YgdGhlIHJ1bGUgdGhhdCBkaWQgaXQuICBJZgorICAgICAgICAgICAgLy8gd2UndmUgc2NvcmVkIGEgZGlyZWN0IGhpdCwgd2UgZG9uJ3QgaGF2ZSB0byBsb29rIGF0IGFueSBtb3JlCisgICAgICAgICAgICAvLyBydWxlcworICAgICAgICAgICAgaWYgKHRlbXBEaWZmZXJlbmNlIDwgZGlmZmVyZW5jZSkgeworICAgICAgICAgICAgICAgIGRpZmZlcmVuY2UgPSB0ZW1wRGlmZmVyZW5jZTsKKyAgICAgICAgICAgICAgICB3aW5uZXIgPSBpOworICAgICAgICAgICAgICAgIGlmIChkaWZmZXJlbmNlID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gaWYgd2UgaGF2ZSB0d28gc3VjY2Vzc2l2ZSBydWxlcyB0aGF0IGJvdGggaGF2ZSB0aGUgd2lubmluZyBiYXNlCisgICAgICAgIC8vIHZhbHVlLCB0aGVuIHRoZSBmaXJzdCBvbmUgKHRoZSBvbmUgd2UgZm91bmQgYWJvdmUpIGlzIHVzZWQgaWYKKyAgICAgICAgLy8gdGhlIG51bWVyYXRvciBvZiB0aGUgZnJhY3Rpb24gaXMgMSBhbmQgdGhlIHNlY29uZCBvbmUgaXMgdXNlZCBpZgorICAgICAgICAvLyB0aGUgbnVtZXJhdG9yIG9mIHRoZSBmcmFjdGlvbiBpcyBhbnl0aGluZyBlbHNlICh0aGlzIGxldHMgdXMKKyAgICAgICAgLy8gZG8gdGhpbmdzIGxpa2UgIm9uZSB0aGlyZCIvInR3byB0aGlyZHMiIHdpdGhvdXQgaGF2ZWluZyB0byBkZWZpbmUKKyAgICAgICAgLy8gYSB3aG9sZSBidW5jaCBvZiBleHRyYSBydWxlIHNldHMpCisgICAgICAgIGlmICh3aW5uZXIgKyAxIDwgcnVsZXMubGVuZ3RoCisgICAgICAgICAgICAgICAgJiYgcnVsZXNbd2lubmVyICsgMV0uZ2V0QmFzZVZhbHVlKCkgPT0gcnVsZXNbd2lubmVyXS5nZXRCYXNlVmFsdWUoKSkgeworICAgICAgICAgICAgaWYgKE1hdGgucm91bmQobnVtYmVyICogcnVsZXNbd2lubmVyXS5nZXRCYXNlVmFsdWUoKSkgPCAxCisgICAgICAgICAgICAgICAgICAgIHx8IE1hdGgucm91bmQobnVtYmVyICogcnVsZXNbd2lubmVyXS5nZXRCYXNlVmFsdWUoKSkgPj0gMikgeworICAgICAgICAgICAgICAgICsrd2lubmVyOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gZmluYWxseSwgcmV0dXJuIHRoZSB3aW5uaW5nIHJ1bGUKKyAgICAgICAgcmV0dXJuIHJ1bGVzW3dpbm5lcl07CisgICAgfQorCisgICAgLyoqCisgICAgICogQ2FsY3VsYXRlcyB0aGUgbGVhc3QgY29tbW9uIG11bHRpcGxlIG9mIHggYW5kIHkuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgbG9uZyBsY20obG9uZyB4LCBsb25nIHkpIHsKKyAgICAgICAgLy8gYmluYXJ5IGdjZCBhbGdvcml0aG0gZnJvbSBLbnV0aCwgIlRoZSBBcnQgb2YgQ29tcHV0ZXIgUHJvZ3JhbW1pbmcsIgorICAgICAgICAvLyB2b2wuIDIsIDFzdCBlZC4sIHBwLiAyOTgtMjk5CisgICAgICAgIGxvbmcgeDEgPSB4OworICAgICAgICBsb25nIHkxID0geTsKKworICAgICAgICBpbnQgcDIgPSAwOworICAgICAgICB3aGlsZSAoKHgxICYgMSkgPT0gMCAmJiAoeTEgJiAxKSA9PSAwKSB7CisgICAgICAgICAgICArK3AyOworICAgICAgICAgICAgeDEgPj49IDE7CisgICAgICAgICAgICB5MSA+Pj0gMTsKKyAgICAgICAgfQorCisgICAgICAgIGxvbmcgdDsKKyAgICAgICAgaWYgKCh4MSAmIDEpID09IDEpIHsKKyAgICAgICAgICAgIHQgPSAteTE7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0ID0geDE7CisgICAgICAgIH0KKworICAgICAgICB3aGlsZSAodCAhPSAwKSB7CisgICAgICAgICAgICB3aGlsZSAoKHQgJiAxKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgdCA+Pj0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh0ID4gMCkgeworICAgICAgICAgICAgICAgIHgxID0gdDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgeTEgPSAtdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHQgPSB4MSAtIHkxOworICAgICAgICB9CisgICAgICAgIGxvbmcgZ2NkID0geDEgPDwgcDI7CisKKyAgICAgICAgLy8geCAqIHkgPT0gZ2NkKHgsIHkpICogbGNtKHgsIHkpCisgICAgICAgIHJldHVybiB4IC8gZ2NkICogeTsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gcGFyc2luZworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIFBhcnNlcyBhIHN0cmluZy4gIE1hdGNoZXMgdGhlIHN0cmluZyB0byBiZSBwYXJzZWQgYWdhaW5zdCBlYWNoCisgICAgICogb2YgaXRzIHJ1bGVzICh3aXRoIGEgYmFzZSB2YWx1ZSBsZXNzIHRoYW4gdXBwZXJCb3VuZCkgYW5kIHJldHVybnMKKyAgICAgKiB0aGUgdmFsdWUgcHJvZHVjZWQgYnkgdGhlIHJ1bGUgdGhhdCBtYXRjaGVkIHRoZSBtb3N0IGNoYXJjdGVycworICAgICAqIGluIHRoZSBzb3VyY2Ugc3RyaW5nLgorICAgICAqIEBwYXJhbSB0ZXh0IFRoZSBzdHJpbmcgdG8gcGFyc2UKKyAgICAgKiBAcGFyYW0gcGFyc2VQb3NpdGlvbiBUaGUgaW5pdGlhbCBwb3NpdGlvbiBpcyBpZ25vcmVkIGFuZCBhc3N1bWVkCisgICAgICogdG8gYmUgMC4gIE9uIGV4aXQsIHRoaXMgb2JqZWN0IGhhcyBiZWVuIHVwZGF0ZWQgdG8gcG9pbnQgdG8gdGhlCisgICAgICogZmlyc3QgY2hhcmFjdGVyIHBvc2l0aW9uIHRoaXMgcnVsZSBzZXQgZGlkbid0IGNvbnN1bWUuCisgICAgICogQHBhcmFtIHVwcGVyQm91bmQgTGltaXRzIHRoZSBydWxlcyB0aGF0IGNhbiBiZSBhbGxvd2VkIHRvIG1hdGNoLgorICAgICAqIE9ubHkgcnVsZXMgd2hvc2UgYmFzZSB2YWx1ZXMgYXJlIHN0cmljdGx5IGxlc3MgdGhhbiB1cHBlckJvdW5kCisgICAgICogYXJlIGNvbnNpZGVyZWQuCisgICAgICogQHJldHVybiBUaGUgbnVtZXJpY2FsIHJlc3VsdCBvZiBwYXJzaW5nIHRoaXMgc3RyaW5nLiAgVGhpcyB3aWxsCisgICAgICogYmUgdGhlIG1hdGNoaW5nIHJ1bGUncyBiYXNlIHZhbHVlLCBjb21wb3NlZCBhcHByb3ByaWF0ZWx5IHdpdGgKKyAgICAgKiB0aGUgcmVzdWx0cyBvZiBtYXRjaGluZyBhbnkgb2YgaXRzIHN1YnN0aXR1dGlvbnMuICBUaGUgb2JqZWN0CisgICAgICogd2lsbCBiZSBhbiBpbnN0YW5jZSBvZiBMb25nIGlmIGl0J3MgYW4gaW50ZWdyYWwgdmFsdWU7IG90aGVyd2lzZSwKKyAgICAgKiBpdCB3aWxsIGJlIGFuIGluc3RhbmNlIG9mIERvdWJsZS4gIFRoaXMgZnVuY3Rpb24gYWx3YXlzIHJldHVybnMKKyAgICAgKiBhIHZhbGlkIG9iamVjdDogSWYgbm90aGluZyBtYXRjaGVkIHRoZSBpbnB1dCBzdHJpbmcgYXQgYWxsLAorICAgICAqIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBuZXcgTG9uZygwKSwgYW5kIHRoZSBwYXJzZSBwb3NpdGlvbiBpcworICAgICAqIGxlZnQgdW5jaGFuZ2VkLgorICAgICAqLworICAgIHB1YmxpYyBOdW1iZXIgcGFyc2UoU3RyaW5nIHRleHQsIFBhcnNlUG9zaXRpb24gcGFyc2VQb3NpdGlvbiwgZG91YmxlIHVwcGVyQm91bmQpIHsKKyAgICAgICAgLy8gdHJ5IG1hdGNoaW5nIGVhY2ggcnVsZSBpbiB0aGUgcnVsZSBzZXQgYWdhaW5zdCB0aGUgdGV4dCBiZWluZworICAgICAgICAvLyBwYXJzZWQuICBXaGljaGV2ZXIgb25lIG1hdGNoZXMgdGhlIG1vc3QgY2hhcmFjdGVycyBpcyB0aGUgb25lCisgICAgICAgIC8vIHRoYXQgZGV0ZXJtaW5lcyB0aGUgdmFsdWUgd2UgcmV0dXJuLgorCisgICAgICAgIFBhcnNlUG9zaXRpb24gaGlnaFdhdGVyTWFyayA9IG5ldyBQYXJzZVBvc2l0aW9uKDApOworICAgICAgICBOdW1iZXIgcmVzdWx0ID0gbmV3IExvbmcoMCk7CisgICAgICAgIE51bWJlciB0ZW1wUmVzdWx0ID0gbnVsbDsKKworICAgICAgICAvLyBkdW1wIG91dCBpZiB0aGVyZSdzIG5vIHRleHQgdG8gcGFyc2UKKyAgICAgICAgaWYgKHRleHQubGVuZ3RoKCkgPT0gMCkgeworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIHN0YXJ0IGJ5IHRyeWluZyB0aGUgbmVoYXRpdmUgbnVtYmVyIHJ1bGUgKGlmIHRoZXJlIGlzIG9uZSkKKyAgICAgICAgaWYgKG5lZ2F0aXZlTnVtYmVyUnVsZSAhPSBudWxsKSB7CisgICAgICAgICAgICB0ZW1wUmVzdWx0ID0gbmVnYXRpdmVOdW1iZXJSdWxlLmRvUGFyc2UodGV4dCwgcGFyc2VQb3NpdGlvbiwgZmFsc2UsIHVwcGVyQm91bmQpOworICAgICAgICAgICAgaWYgKHBhcnNlUG9zaXRpb24uZ2V0SW5kZXgoKSA+IGhpZ2hXYXRlck1hcmsuZ2V0SW5kZXgoKSkgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRlbXBSZXN1bHQ7CisgICAgICAgICAgICAgICAgaGlnaFdhdGVyTWFyay5zZXRJbmRleChwYXJzZVBvc2l0aW9uLmdldEluZGV4KCkpOworICAgICAgICAgICAgfQorLy8gY29tbWVudGVkIG91dCBiZWNhdXNlIHRoZSBlcnJvci1pbmRleCBBUEkgb24gUGFyc2VQb3NpdGlvbiBpc24ndCB0aGVyZSBpbiAxLjEueAorLy8gICAgICAgICAgICBpZiAocGFyc2VQb3NpdGlvbi5nZXRFcnJvckluZGV4KCkgPiBoaWdoV2F0ZXJNYXJrLmdldEVycm9ySW5kZXgoKSkgeworLy8gICAgICAgICAgICAgICAgaGlnaFdhdGVyTWFyay5zZXRFcnJvckluZGV4KHBhcnNlUG9zaXRpb24uZ2V0RXJyb3JJbmRleCgpKTsKKy8vICAgICAgICAgICAgfQorICAgICAgICAgICAgcGFyc2VQb3NpdGlvbi5zZXRJbmRleCgwKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIHRoZW4gdHJ5IGVhY2ggb2YgdGhlIGZyYWN0aW9uIHJ1bGVzCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgaSsrKSB7CisgICAgICAgICAgICBpZiAoZnJhY3Rpb25SdWxlc1tpXSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgdGVtcFJlc3VsdCA9IGZyYWN0aW9uUnVsZXNbaV0uZG9QYXJzZSh0ZXh0LCBwYXJzZVBvc2l0aW9uLCBmYWxzZSwgdXBwZXJCb3VuZCk7CisgICAgICAgICAgICAgICAgaWYgKHBhcnNlUG9zaXRpb24uZ2V0SW5kZXgoKSA+IGhpZ2hXYXRlck1hcmsuZ2V0SW5kZXgoKSkgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB0ZW1wUmVzdWx0OworICAgICAgICAgICAgICAgICAgICBoaWdoV2F0ZXJNYXJrLnNldEluZGV4KHBhcnNlUG9zaXRpb24uZ2V0SW5kZXgoKSk7CisgICAgICAgICAgICAgICAgfQorLy8gY29tbWVudGVkIG91dCBiZWNhdXNlIHRoZSBlcnJvci1pbmRleCBBUEkgb24gUGFyc2VQb3NpdGlvbiBpc24ndCB0aGVyZSBpbiAxLjEueAorLy8gICAgICAgICAgICBpZiAocGFyc2VQb3NpdGlvbi5nZXRFcnJvckluZGV4KCkgPiBoaWdoV2F0ZXJNYXJrLmdldEVycm9ySW5kZXgoKSkgeworLy8gICAgICAgICAgICAgICAgaGlnaFdhdGVyTWFyay5zZXRFcnJvckluZGV4KHBhcnNlUG9zaXRpb24uZ2V0RXJyb3JJbmRleCgpKTsKKy8vICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHBhcnNlUG9zaXRpb24uc2V0SW5kZXgoMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBmaW5hbGx5LCBnbyB0aHJvdWdoIHRoZSByZWd1bGFyIHJ1bGVzIG9uZSBhdCBhIHRpbWUuICBXZSBzdGFydAorICAgICAgICAvLyBhdCB0aGUgZW5kIG9mIHRoZSBsaXN0IGJlY2F1c2Ugd2Ugd2FudCB0byB0cnkgbWF0Y2hpbmcgdGhlIG1vc3QKKyAgICAgICAgLy8gc2lnaWZpY2FudCBydWxlIGZpcnN0ICh0aGlzIGhlbHBzIGVuc3VyZSB0aGF0IHdlIHBhcnNlCisgICAgICAgIC8vICJmaXZlIHRob3VzYW5kIHRocmVlIGh1bmRyZWQgc2l4IiBhcworICAgICAgICAvLyAiKGZpdmUgdGhvdXNhbmQpICh0aHJlZSBodW5kcmVkKSAoc2l4KSIgcmF0aGVyIHRoYW4KKyAgICAgICAgLy8gIigoZml2ZSB0aG91c2FuZCB0aHJlZSkgaHVuZHJlZCkgKHNpeCkiKS4gIFNraXAgcnVsZXMgd2hvc2UKKyAgICAgICAgLy8gYmFzZSB2YWx1ZXMgYXJlIGhpZ2hlciB0aGFuIHRoZSB1cHBlciBib3VuZCAoYWdhaW4sIHRoaXMgaGVscHMKKyAgICAgICAgLy8gbGltaXQgYW1iaWd1aXR5IGJ5IG1ha2luZyBzdXJlIHRoZSBydWxlcyB0aGF0IG1hdGNoIGEgcnVsZSdzCisgICAgICAgIC8vIGFyZSBsZXNzIHNpZ25pZmljYW50IHRoYW4gdGhlIHJ1bGUgY29udGFpbmluZyB0aGUgc3Vic3RpdHV0aW9ucykvCisgICAgICAgIGZvciAoaW50IGkgPSBydWxlcy5sZW5ndGggLSAxOyBpID49IDAgJiYgaGlnaFdhdGVyTWFyay5nZXRJbmRleCgpIDwgdGV4dC5sZW5ndGgoKTsgaS0tKSB7CisgICAgICAgICAgICBpZiAoIWlzRnJhY3Rpb25SdWxlU2V0ICYmIHJ1bGVzW2ldLmdldEJhc2VWYWx1ZSgpID49IHVwcGVyQm91bmQpIHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGVtcFJlc3VsdCA9IHJ1bGVzW2ldLmRvUGFyc2UodGV4dCwgcGFyc2VQb3NpdGlvbiwgaXNGcmFjdGlvblJ1bGVTZXQsIHVwcGVyQm91bmQpOworICAgICAgICAgICAgaWYgKHBhcnNlUG9zaXRpb24uZ2V0SW5kZXgoKSA+IGhpZ2hXYXRlck1hcmsuZ2V0SW5kZXgoKSkgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRlbXBSZXN1bHQ7CisgICAgICAgICAgICAgICAgaGlnaFdhdGVyTWFyay5zZXRJbmRleChwYXJzZVBvc2l0aW9uLmdldEluZGV4KCkpOworICAgICAgICAgICAgfQorLy8gY29tbWVudGVkIG91dCBiZWNhdXNlIHRoZSBlcnJvci1pbmRleCBBUEkgb24gUGFyc2VQb3NpdGlvbiBpc24ndCB0aGVyZSBpbiAxLjEueAorLy8gICAgICAgICAgICBpZiAocGFyc2VQb3NpdGlvbi5nZXRFcnJvckluZGV4KCkgPiBoaWdoV2F0ZXJNYXJrLmdldEVycm9ySW5kZXgoKSkgeworLy8gICAgICAgICAgICAgICAgaGlnaFdhdGVyTWFyay5zZXRFcnJvckluZGV4KHBhcnNlUG9zaXRpb24uZ2V0RXJyb3JJbmRleCgpKTsKKy8vICAgICAgICAgICAgfQorICAgICAgICAgICAgcGFyc2VQb3NpdGlvbi5zZXRJbmRleCgwKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGZpbmFsbHksIHVwZGF0ZSB0aGUgcGFyc2UgcG9zdGlvbiB3ZSB3ZXJlIHBhc3NlZCB0byBwb2ludCB0byB0aGUKKyAgICAgICAgLy8gZmlyc3QgY2hhcmFjdGVyIHdlIGRpZG4ndCB1c2UsIGFuZCByZXR1cm4gdGhlIHJlc3VsdCB0aGF0CisgICAgICAgIC8vIGNwb3JyZXNwb25kcyB0byB0aGF0IHN0cmluZyBvZiBjaGFyYWN0ZXJzCisgICAgICAgIHBhcnNlUG9zaXRpb24uc2V0SW5kZXgoaGlnaFdhdGVyTWFyay5nZXRJbmRleCgpKTsKKy8vIGNvbW1lbnRlZCBvdXQgYmVjYXVzZSB0aGUgZXJyb3ItaW5kZXggQVBJIG9uIFBhcnNlUG9zaXRpb24gaXNuJ3QgdGhlcmUgaW4gMS4xLngKKy8vICAgICAgICBpZiAocGFyc2VQb3NpdGlvbi5nZXRJbmRleCgpID09IDApIHsKKy8vICAgICAgICAgICAgcGFyc2VQb3NpdGlvbi5zZXRFcnJvckluZGV4KGhpZ2hXYXRlck1hcmsuZ2V0RXJyb3JJbmRleCgpKTsKKy8vICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvdGV4dC9ORlN1YnN0aXR1dGlvbi5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvTkZTdWJzdGl0dXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4yZmE1MzFiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvTkZTdWJzdGl0dXRpb24uamF2YQpAQCAtMCwwICsxLDE3NTUgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS90ZXh0L05GU3Vic3RpdHV0aW9uLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDcvMzEgMTc6Mzc6MDggJCAKKyAqICRSZXZpc2lvbjogMS44ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS50ZXh0OworCitpbXBvcnQgamF2YS50ZXh0Lio7CisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gTkZTdWJzdGl0dXRpb24gKGFic3RyYWN0IGJhc2UgY2xhc3MpCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLyoqCisgKiBBbiBhYnN0cmFjdCBjbGFzcyBkZWZpbmluZyBwcm90b2NvbCBmb3Igc3Vic3RpdHV0aW9ucy4gIEEgc3Vic3RpdHV0aW9uCisgKiBpcyBhIHNlY3Rpb24gb2YgYSBydWxlIHRoYXQgaW5zZXJ0cyB0ZXh0IGludG8gdGhlIHJ1bGUncyBydWxlIHRleHQKKyAqIGJhc2VkIG9uIHNvbWUgcGFydCBvZiB0aGUgbnVtYmVyIGJlaW5nIGZvcm1hdHRlZC4KKyAqIEBhdXRob3IgUmljaGFyZCBHaWxsYW0KKyAqIEB2ZXJzaW9uICRSQ1NmaWxlOiBORlN1YnN0aXR1dGlvbi5qYXZhLHYgJCAkUmV2aXNpb246IDEuOCAkICREYXRlOiAyMDAyLzA3LzMxIDE3OjM3OjA4ICQKKyAqLworYWJzdHJhY3QgY2xhc3MgTkZTdWJzdGl0dXRpb24geworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBjb25zdGFudHMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBQdXRzIGEgY29weXJpZ2h0IGluIHRoZSAuY2xhc3MgZmlsZQorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHROb3RpY2UKKyAgICAgICAgPSAiQ29weXJpZ2h0IFx1MDBhOTE5OTctMTk5OCBJQk0gQ29ycC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuIjsKKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBkYXRhIG1lbWJlcnMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBUaGUgc3Vic3RpdHV0aW9uJ3MgcG9zaXRpb24gaW4gdGhlIHJ1bGUgdGV4dCBvZiB0aGUgcnVsZSB0aGF0IG93bnMgaXQKKyAgICAgKi8KKyAgICBpbnQgcG9zOworCisgICAgLyoqCisgICAgICogVGhlIHJ1bGUgc2V0IHRoaXMgc3Vic3RpdHV0aW9uIHVzZXMgdG8gZm9ybWF0IGl0cyByZXN1bHQsIG9yIG51bGwuCisgICAgICogKEVpdGhlciB0aGlzIG9yIG51bWJlckZvcm1hdCBoYXMgdG8gYmUgbm9uLW51bGwuKQorICAgICAqLworICAgIE5GUnVsZVNldCBydWxlU2V0ID0gbnVsbDsKKworICAgIC8qKgorICAgICAqIFRoZSBEZWNpbWFsRm9ybWF0IHRoaXMgc3Vic3RpdHV0aW9uIHVzZXMgdG8gZm9ybWF0IGl0cyByZXN1bHQsCisgICAgICogb3IgbnVsbC4gIChFaXRoZXIgdGhpcyBvciBydWxlU2V0IGhhcyB0byBiZSBub24tbnVsbC4pCisgICAgICovCisgICAgRGVjaW1hbEZvcm1hdCBudW1iZXJGb3JtYXQgPSBudWxsOworCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIGNvbnN0cnVjdGlvbgorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIFBhcnNlcyB0aGUgZGVzY3JpcHRpb24sIGNyZWF0ZXMgdGhlIHJpZ2h0IGtpbmQgb2Ygc3Vic3RpdHV0aW9uLAorICAgICAqIGFuZCBpbml0aWFsaXplcyBpdCBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb24uCisgICAgICogQHBhcmFtIHBvcyBUaGUgc3Vic3RpdHV0aW9uJ3MgcG9zaXRpb24gaW4gdGhlIHJ1bGUgdGV4dCBvZiB0aGUKKyAgICAgKiBydWxlIHRoYXQgb3ducyBpdC4KKyAgICAgKiBAcGFyYW0gcnVsZSBUaGUgcnVsZSBjb250YWluaW5nIHRoaXMgc3Vic3RpdHV0aW9uCisgICAgICogQHBhcmFtIHJ1bGVQcmVkZWNlc3NvciBUaGUgcnVsZSBwcmVjZWRpbmcgdGhlIG9uZSB0aGF0IGNvbnRhaW5zCisgICAgICogdGhpcyBzdWJzdGl0dXRpb24gaW4gdGhlIHJ1bGUgc2V0J3MgcnVsZSBsaXN0ICh0aGlzIGlzIHVzZWQKKyAgICAgKiBvbmx5IGZvciA+Pj4gc3Vic3RpdHV0aW9ucykuCisgICAgICogQHBhcmFtIHJ1bGVTZXQgVGhlIHJ1bGUgc2V0IGNvbnRhaW5pbmcgdGhlIHJ1bGUgY29udGFpbmluZyB0aGlzCisgICAgICogc3Vic3RpdHV0aW9uCisgICAgICogQHBhcmFtIGZvcm1hdHRlciBUaGUgUnVsZUJhc2VkTnVtYmVyRm9ybWF0IHRoYXQgdWx0aW1hdGVseSBvd25zCisgICAgICogdGhpcyBzdWJzdGl0dXRpb24KKyAgICAgKiBAcGFyYW0gZGVzY3JpcHRpb24gVGhlIGRlc2NyaXB0aW9uIHRvIHBhcnNlIHRvIGJ1aWxkIHRoZSBzdWJzdGl0dXRpb24KKyAgICAgKiAodGhpcyBpcyBqdXN0IHRoZSBzdWJzdHJpbmcgb2YgdGhlIHJ1bGUncyBkZXNjcmlwdGlvbiBjb250YWluaW5nCisgICAgICogdGhlIHN1YnN0aXR1dGlvbiB0b2tlbiBpdHNlbGYpCisgICAgICogQHJldHVybiBBIG5ldyBzdWJzdGl0dXRpb24gY29uc3RydWN0ZWQgYWNjb3JkaW5nIHRvIHRoZSBkZXNjcmlwdGlvbgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgTkZTdWJzdGl0dXRpb24gbWFrZVN1YnN0aXR1dGlvbihpbnQgcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORlJ1bGUgcnVsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkZSdWxlIHJ1bGVQcmVkZWNlc3NvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkZSdWxlU2V0IHJ1bGVTZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZE51bWJlckZvcm1hdCBmb3JtYXR0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBkZXNjcmlwdGlvbikgeworICAgICAgICAvLyBpZiB0aGUgZGVzY3JpcHRpb24gaXMgZW1wdHksIHJldHVybiBhIE51bW1TdWJzdGl0dXRpb24KKyAgICAgICAgaWYgKGRlc2NyaXB0aW9uLmxlbmd0aCgpID09IDApIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgTnVsbFN1YnN0aXR1dGlvbihwb3MsIHJ1bGVTZXQsIGZvcm1hdHRlciwgZGVzY3JpcHRpb24pOworICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoIChkZXNjcmlwdGlvbi5jaGFyQXQoMCkpIHsKKyAgICAgICAgICAgIC8vIGlmIHRoZSBkZXNjcmlwdGlvbiBiZWdpbnMgd2l0aCAnPCcuLi4KKyAgICAgICAgICAgIGNhc2UgJzwnOgorICAgICAgICAgICAgICAgIC8vIHRocm93IGFuIGV4Y2VwdGlvbiBpZiB0aGUgcnVsZSBpcyBhIG5lZ2F0aXZlIG51bWJlcgorICAgICAgICAgICAgICAgIC8vIHJ1bGUKKyAgICAgICAgICAgICAgICBpZiAocnVsZS5nZXRCYXNlVmFsdWUoKSA9PSBORlJ1bGUuTkVHQVRJVkVfTlVNQkVSX1JVTEUpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiPDwgbm90IGFsbG93ZWQgaW4gbmVnYXRpdmUtbnVtYmVyIHJ1bGUiKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBpZiB0aGUgcnVsZSBpcyBhIGZyYWN0aW9uIHJ1bGUsIHJldHVybiBhbgorICAgICAgICAgICAgICAgIC8vIEludGVncmFsUGFydFN1YnN0aXR1dGlvbgorICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJ1bGUuZ2V0QmFzZVZhbHVlKCkgPT0gTkZSdWxlLklNUFJPUEVSX0ZSQUNUSU9OX1JVTEUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBydWxlLmdldEJhc2VWYWx1ZSgpID09IE5GUnVsZS5QUk9QRVJfRlJBQ1RJT05fUlVMRQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHJ1bGUuZ2V0QmFzZVZhbHVlKCkgPT0gTkZSdWxlLk1BU1RFUl9SVUxFKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSW50ZWdyYWxQYXJ0U3Vic3RpdHV0aW9uKHBvcywgcnVsZVNldCwgZm9ybWF0dGVyLCBkZXNjcmlwdGlvbik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gaWYgdGhlIHJ1bGUgc2V0IGNvbnRhaW5pbmcgdGhlIHJ1bGUgaXMgYSBmcmFjdGlvbgorICAgICAgICAgICAgICAgIC8vIHJ1bGUgc2V0LCByZXR1cm4gYSBOdW1lcmF0b3JTdWJzdGl0dXRpb24KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChydWxlU2V0LmlzRnJhY3Rpb25TZXQoKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE51bWVyYXRvclN1YnN0aXR1dGlvbihwb3MsIHJ1bGUuZ2V0QmFzZVZhbHVlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZXIuZ2V0RGVmYXVsdFJ1bGVTZXQoKSwgZm9ybWF0dGVyLCBkZXNjcmlwdGlvbik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlLCByZXR1cm4gYSBNdWx0aXBsaWVyU3Vic3RpdHV0aW9uCisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTXVsdGlwbGllclN1YnN0aXR1dGlvbihwb3MsIHJ1bGUuZ2V0RGl2aXNvcigpLCBydWxlU2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyLCBkZXNjcmlwdGlvbik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBpZiB0aGUgZGVzY3JpcHRpb24gYmVnaW5zIHdpdGggJz4nLi4uCisgICAgICAgICAgICBjYXNlICc+JzoKKyAgICAgICAgICAgICAgICAvLyBpZiB0aGUgcnVsZSBpcyBhIG5lZ2F0aXZlLW51bWJlciBydWxlLCByZXR1cm4KKyAgICAgICAgICAgICAgICAvLyBhbiBBYnNvbHV0ZVZhbHVlU3Vic3RpdHV0aW9uCisgICAgICAgICAgICAgICAgaWYgKHJ1bGUuZ2V0QmFzZVZhbHVlKCkgPT0gTkZSdWxlLk5FR0FUSVZFX05VTUJFUl9SVUxFKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQWJzb2x1dGVWYWx1ZVN1YnN0aXR1dGlvbihwb3MsIHJ1bGVTZXQsIGZvcm1hdHRlciwgZGVzY3JpcHRpb24pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBydWxlIGlzIGEgZnJhY3Rpb24gcnVsZSwgcmV0dXJuIGEKKyAgICAgICAgICAgICAgICAvLyBGcmFjdGlvbmFsUGFydFN1YnN0aXR1dGlvbgorICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJ1bGUuZ2V0QmFzZVZhbHVlKCkgPT0gTkZSdWxlLklNUFJPUEVSX0ZSQUNUSU9OX1JVTEUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBydWxlLmdldEJhc2VWYWx1ZSgpID09IE5GUnVsZS5QUk9QRVJfRlJBQ1RJT05fUlVMRQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHJ1bGUuZ2V0QmFzZVZhbHVlKCkgPT0gTkZSdWxlLk1BU1RFUl9SVUxFKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRnJhY3Rpb25hbFBhcnRTdWJzdGl0dXRpb24ocG9zLCBydWxlU2V0LCBmb3JtYXR0ZXIsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBpZiB0aGUgcnVsZSBzZXQgb3duaW5nIHRoZSBydWxlIGlzIGEgZnJhY3Rpb24gcnVsZSBzZXQsCisgICAgICAgICAgICAgICAgLy8gdGhyb3cgYW4gZXhjZXB0aW9uCisgICAgICAgICAgICAgICAgZWxzZSBpZiAocnVsZVNldC5pc0ZyYWN0aW9uU2V0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiPj4gbm90IGFsbG93ZWQgaW4gZnJhY3Rpb24gcnVsZSBzZXQiKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBvdGhlcndpc2UsIHJldHVybiBhIE1vZHVsdXNTdWJzdGl0dXRpb24KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBNb2R1bHVzU3Vic3RpdHV0aW9uKHBvcywgcnVsZS5nZXREaXZpc29yKCksIHJ1bGVQcmVkZWNlc3NvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGVTZXQsIGZvcm1hdHRlciwgZGVzY3JpcHRpb24pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gaWYgdGhlIGRlc2NyaXB0aW9uIGJlZ2lucyB3aXRoICc9JywgYWx3YXlzIHJldHVybiBhCisgICAgICAgICAgICAvLyBTYW1lVmFsdWVTdWJzdGl0dXRpb24KKyAgICAgICAgICAgIGNhc2UgJz0nOgorICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU2FtZVZhbHVlU3Vic3RpdHV0aW9uKHBvcywgcnVsZVNldCwgZm9ybWF0dGVyLCBkZXNjcmlwdGlvbik7CisKKyAgICAgICAgICAgIC8vIGFuZCBpZiBpdCdzIGFueXRoaW5nIGVsc2UsIHRocm93IGFuIGV4Y2VwdGlvbgorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbGxlZ2FsIHN1YnN0aXR1dGlvbiBjaGFyYWN0ZXIiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEJhc2UgY29uc3RydWN0b3IgZm9yIHN1YnN0aXR1dGlvbnMuICBUaGlzIGNvbnN0cnVjdG9yIHNldHMgdXAgdGhlCisgICAgICogZmllbGRzIHdoaWNoIGFyZSBjb21tb24gdG8gYWxsIHN1YnN0aXR1dGlvbnMuCisgICAgICogQHBhcmFtIHBvcyBUaGUgc3Vic3RpdHV0aW9uJ3MgcG9zaXRpb24gaW4gdGhlIG93bmluZyBydWxlJ3MgcnVsZQorICAgICAqIHRleHQKKyAgICAgKiBAcGFyYW0gcnVsZVNldCBUaGUgcnVsZSBzZXQgdGhhdCBvd25zIHRoaXMgc3Vic3RpdHV0aW9uCisgICAgICogQHBhcmFtIGZvcm1hdHRlciBUaGUgUnVsZUJhc2VkTnVtYmVyRm9ybWF0IHRoYXQgb3ducyB0aGlzIHN1YnN0aXR1dGlvbgorICAgICAqIEBwYXJhbSBkZXNjcmlwdGlvbiBUaGUgc3Vic3RpdHV0aW9uIGRlc2NyaXB0b3IgKGkuZS4sIHRoZSB0ZXh0CisgICAgICogaW5zaWRlIHRoZSB0b2tlbiBjaGFyYWN0ZXJzKQorICAgICAqLworICAgIE5GU3Vic3RpdHV0aW9uKGludCBwb3MsCisgICAgICAgICAgICAgICAgICAgTkZSdWxlU2V0IHJ1bGVTZXQsCisgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkTnVtYmVyRm9ybWF0IGZvcm1hdHRlciwKKyAgICAgICAgICAgICAgICAgICBTdHJpbmcgZGVzY3JpcHRpb24pIHsKKyAgICAgICAgLy8gaW5pdGlhbGl6ZSB0aGUgc3Vic3RpdHV0aW9uJ3MgcG9zaXRpb24gaW4gaXRzIHBhcmVudCBydWxlCisgICAgICAgIHRoaXMucG9zID0gcG9zOworCisgICAgICAgIC8vIHRoZSBkZXNjcmlwdGlvbiBzaG91bGQgYmVnaW4gYW5kIGVuZCB3aXRoIHRoZSBzYW1lIGNoYXJhY3Rlci4KKyAgICAgICAgLy8gSWYgaXQgZG9lc24ndCB0aGF0J3MgYSBzeW50YXggZXJyb3IuICBPdGhlcndpc2UsCisgICAgICAgIC8vIG1ha2VTdWJzdGl0dXRpb24oKSB3YXMgdGhlIG9ubHkgdGhpbmcgdGhhdCBuZWVkZWQgdG8ga25vdworICAgICAgICAvLyBhYm91dCB0aGVzZSBjaGFyYWN0ZXJzLCBzbyBzdHJpcCB0aGVtIG9mZgorICAgICAgICBpZiAoZGVzY3JpcHRpb24ubGVuZ3RoKCkgPj0gMiAmJiBkZXNjcmlwdGlvbi5jaGFyQXQoMCkgPT0gZGVzY3JpcHRpb24uY2hhckF0KAorICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24ubGVuZ3RoKCkgLSAxKSkgeworICAgICAgICAgICAgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbi5zdWJzdHJpbmcoMSwgZGVzY3JpcHRpb24ubGVuZ3RoKCkgLSAxKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChkZXNjcmlwdGlvbi5sZW5ndGgoKSAhPSAwKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbGxlZ2FsIHN1YnN0aXR1dGlvbiBzeW50YXgiKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGlmIHRoZSBkZXNjcmlwdGlvbiB3YXMganVzdCB0d28gcGFpcmVkIHRva2VuIGNoYXJhY3RlcnMKKyAgICAgICAgLy8gKGkuZS4sICI8PCIgb3IgIj4+IiksIGl0IHVzZXMgdGhlIHJ1bGUgc2V0IGl0IGJlbG9uZ3MgdG8gdG8KKyAgICAgICAgLy8gZm9ybWF0IGl0cyByZXN1bHQKKyAgICAgICAgaWYgKGRlc2NyaXB0aW9uLmxlbmd0aCgpID09IDApIHsKKyAgICAgICAgICAgIHRoaXMucnVsZVNldCA9IHJ1bGVTZXQ7CisgICAgICAgIH0KKworICAgICAgICAvLyBpZiB0aGUgZGVzY3JpcHRpb24gY29udGFpbnMgYSBydWxlIHNldCBuYW1lLCB0aGF0J3MgdGhlIHJ1bGUKKyAgICAgICAgLy8gc2V0IHdlIHVzZSB0byBmb3JtYXQgdGhlIHJlc3VsdDogZ2V0IGEgcmVmZXJlbmNlIHRvIHRoZQorICAgICAgICAvLyBuYW1lcyBydWxlIHNldAorICAgICAgICBlbHNlIGlmIChkZXNjcmlwdGlvbi5jaGFyQXQoMCkgPT0gJyUnKSB7CisgICAgICAgICAgICB0aGlzLnJ1bGVTZXQgPSBmb3JtYXR0ZXIuZmluZFJ1bGVTZXQoZGVzY3JpcHRpb24pOworICAgICAgICB9CisKKyAgICAgICAgLy8gaWYgdGhlIGRlc2NyaXB0aW9uIGJlZ2lucyB3aXRoIDAgb3IgIywgdHJlYXQgaXQgYXMgYQorICAgICAgICAvLyBEZWNpbWFsRm9ybWF0IHBhdHRlcm4sIGFuZCBpbml0aWFsaXplIGEgRGVjaW1hbEZvcm1hdCB3aXRoCisgICAgICAgIC8vIHRoYXQgcGF0dGVybiAodGhlbiBzZXQgaXQgdG8gdXNlIHRoZSBEZWNpbWFsRm9ybWF0U3ltYm9scworICAgICAgICAvLyBiZWxvbmdpbmcgdG8gb3VyIGZvcm1hdHRlcikKKyAgICAgICAgZWxzZSBpZiAoZGVzY3JpcHRpb24uY2hhckF0KDApID09ICcjJyB8fCBkZXNjcmlwdGlvbi5jaGFyQXQoMCkgPT0gJzAnKSB7CisgICAgICAgICAgICB0aGlzLm51bWJlckZvcm1hdCA9IG5ldyBEZWNpbWFsRm9ybWF0KGRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgIHRoaXMubnVtYmVyRm9ybWF0LnNldERlY2ltYWxGb3JtYXRTeW1ib2xzKGZvcm1hdHRlci5nZXREZWNpbWFsRm9ybWF0U3ltYm9scygpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGlmIHRoZSBkZXNjcmlwdGlvbiBpcyAiPj4+IiwgdGhpcyBzdWJzdGl0dXRpb24gYnlwYXNzZXMgdGhlCisgICAgICAgIC8vIHVzdWFsIHJ1bGUtc2VhcmNoIHByb2Nlc3MgYW5kIGFsd2F5cyB1c2VzIHRoZSBydWxlIHRoYXQgcHJlY2VkZXMKKyAgICAgICAgLy8gaXQgaW4gaXRzIG93biBydWxlIHNldCdzIHJ1bGUgbGlzdCAodGhpcyBpcyB1c2VkIGZvciBwbGFjZS12YWx1ZQorICAgICAgICAvLyBub3RhdGlvbnM6IGZvcm1hdHMgd2hlcmUgeW91IHdhbnQgdG8gc2VlIGEgcGFydGljdWxhciBwYXJ0IG9mCisgICAgICAgIC8vIGEgbnVtYmVyIGV2ZW4gd2hlbiBpdCdzIDApCisgICAgICAgIGVsc2UgaWYgKGRlc2NyaXB0aW9uLmNoYXJBdCgwKSA9PSAnPicpIHsKKyAgICAgICAgICAgIHRoaXMucnVsZVNldCA9IHJ1bGVTZXQ7IC8vIHdhcyBudWxsLCB0aGFpIHJ1bGVzIGFkZGVkIHRvIGNvbnRyb2wgc3BhY2UKKyAgICAgICAgICAgIHRoaXMubnVtYmVyRm9ybWF0ID0gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGFuZCBvZiB0aGUgZGVzY3JpcHRpb24gaXMgbm9uZSBvZiB0aGVzZSB0aGluZ3MsIGl0J3MgYSBzeW50YXggZXJyb3IKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbGxlZ2FsIHN1YnN0aXR1dGlvbiBzeW50YXgiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCdzIHRoZSBzdWJzdGl0dXRpb24ncyBkaXZpc29yLiAgVXNlZCBieSBORlJ1bGUuc2V0QmFzZVZhbHVlKCkuCisgICAgICogQSBuby1vcCBmb3IgYWxsIHN1YnN0aXR1dGlvbnMgZXhjZXB0IG11bHRpcGxpZXIgYW5kIG1vZHVsdXMKKyAgICAgKiBzdWJzdGl0dXRpb25zLgorICAgICAqIEBwYXJhbSByYWRpeCBUaGUgcmFkaXggb2YgdGhlIGRpdmlzb3IKKyAgICAgKiBAcGFyYW0gZXhwb25lbnQgVGhlIGV4cG9uZW50IG9mIHRoZSBkaXZpc29yCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0RGl2aXNvcihpbnQgcmFkaXgsIGludCBleHBvbmVudCkgeworICAgICAgICAvLyBhIG5vLW9wIGZvciBhbGwgc3Vic3RpdHV0aW9ucyBleGNlcHQgbXVsdGlwbGllciBhbmQgbW9kdWx1cyBzdWJzdGl0dXRpb25zCisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIGJvaWxlcnBsYXRlCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogQ29tcGFyZXMgdHdvIHN1YnN0aXR1dGlvbnMgZm9yIGVxdWFsaXR5CisgICAgICogQHBhcmFtIFRoZSBzdWJzdGl0dXRpb24gdG8gY29tcGFyZSB0aGlzIG9uZSB0bworICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgdHdvIHN1YnN0aXR1dGlvbnMgYXJlIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50CisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCB0aGF0KSB7CisgICAgICAgIC8vIGNvbXBhcmUgY2xhc3MgYW5kIGFsbCBvZiB0aGUgZmllbGRzIGFsbCBzdWJzdGl0dXRpb25zIGhhdmUKKyAgICAgICAgLy8gaW4gY29tbW9uCisgICAgICAgIGlmICh0aGlzLmdldENsYXNzKCkgPT0gdGhhdC5nZXRDbGFzcygpKSB7CisgICAgICAgICAgICBORlN1YnN0aXR1dGlvbiB0aGF0MiA9IChORlN1YnN0aXR1dGlvbil0aGF0OworCisgICAgICAgICAgICAgcmV0dXJuIHBvcyA9PSB0aGF0Mi5wb3MKKwkJICYmIChydWxlU2V0ID09IG51bGwgPyB0aGF0Mi5ydWxlU2V0ID09IG51bGwgOiB0cnVlKSAvLyBjYW4ndCBjb21wYXJlIHRyZWUgc3RydWN0dXJlLCBubyAuZXF1YWxzIG9yIHJlY3Vyc2UKKwkJICYmIChudW1iZXJGb3JtYXQgPT0gbnVsbCA/ICh0aGF0Mi5udW1iZXJGb3JtYXQgPT0gbnVsbCkgOiBudW1iZXJGb3JtYXQuZXF1YWxzKHRoYXQyLm51bWJlckZvcm1hdCkpOworICAgICAgICB9CisJcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSB0ZXh0dWFsIGRlc2NyaXB0aW9uIG9mIHRoZSBzdWJzdGl0dXRpb24KKyAgICAgKiBAcmV0dXJuIEEgdGV4dHVhbCBkZXNjcmlwdGlvbiBvZiB0aGUgc3Vic3RpdHV0aW9uLiAgVGhpcyBtaWdodAorICAgICAqIG5vdCBiZSBpZGVudGljYWwgdG8gdGhlIGRlc2NyaXB0aW9uIGl0IHdhcyBjcmVhdGVkIGZyb20sIGJ1dAorICAgICAqIGl0J2xsIHByb2R1Y2UgdGhlIHNhbWUgcmVzdWx0LgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgIC8vIHVzZSB0b2tlbkNoYXIoKSB0byBnZXQgdGhlIGNoYXJhY3RlciBhdCB0aGUgYmVnaW5uaW5nIGFuZAorICAgICAgICAvLyBlbmQgb2YgdGhlIHN1YnN0aXR1dGlvbiB0b2tlbi4gIEluIGJldHdlZW4gdGhlbSB3aWxsIGdvCisgICAgICAgIC8vIGVpdGhlciB0aGUgbmFtZSBvZiB0aGUgcnVsZSBzZXQgaXQgdXNlcywgb3IgdGhlIHBhdHRlcm4gb2YKKyAgICAgICAgLy8gdGhlIERlY2ltYWxGb3JtYXQgaXQgdXNlcworICAgICAgICBpZiAocnVsZVNldCAhPSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gdG9rZW5DaGFyKCkgKyBydWxlU2V0LmdldE5hbWUoKSArIHRva2VuQ2hhcigpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHRva2VuQ2hhcigpICsgbnVtYmVyRm9ybWF0LnRvUGF0dGVybigpICsgdG9rZW5DaGFyKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gZm9ybWF0dGluZworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIFBlcmZvcm1zIGEgbWF0aGVtYXRpY2FsIG9wZXJhdGlvbiBvbiB0aGUgbnVtYmVyLCBmb3JtYXRzIGl0IHVzaW5nCisgICAgICogZWl0aGVyIHJ1bGVTZXQgb3IgZGVjaW1hbEZvcm1hdCwgYW5kIGluc2VydHMgdGhlIHJlc3VsdCBpbnRvCisgICAgICogdG9JbnNlcnRJbnRvLgorICAgICAqIEBwYXJhbSBudW1iZXIgVGhlIG51bWJlciBiZWluZyBmb3JtYXR0ZWQuCisgICAgICogQHBhcmFtIHRvSW5zZXJ0SW50byBUaGUgc3RyaW5nIHdlIGluc2VydCB0aGUgcmVzdWx0IGludG8KKyAgICAgKiBAcGFyYW0gcG9zIFRoZSBwb3NpdGlvbiBpbiB0b0luc2VydEludG8gd2hlcmUgdGhlIG93bmluZyBydWxlJ3MKKyAgICAgKiBydWxlIHRleHQgYmVnaW5zICh0aGlzIHZhbHVlIGlzIGFkZGVkIHRvIHRoaXMgc3Vic3RpdHV0aW9uJ3MKKyAgICAgKiBwb3NpdGlvbiB0byBkZXRlcm1pbmUgZXhhY3RseSB3aGVyZSB0byBpbnNlcnQgdGhlIG5ldyB0ZXh0KQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGRvU3Vic3RpdHV0aW9uKGxvbmcgbnVtYmVyLCBTdHJpbmdCdWZmZXIgdG9JbnNlcnRJbnRvLCBpbnQgcG9zKSB7CisgICAgICAgIGlmIChydWxlU2V0ICE9IG51bGwpIHsKKyAgICAgICAgICAgLy8gcGVyZm9ybSBhIHRyYW5zZm9ybWF0aW9uIG9uIHRoZSBudW1iZXIgdGhhdCBpcyBkZXBlbmRlbnQKKyAgICAgICAgICAgLy8gb24gdGhlIHR5cGUgb2Ygc3Vic3RpdHV0aW9uIHRoaXMgaXMsIHRoZW4ganVzdCBjYWxsIGl0cworICAgICAgICAgICAvLyBydWxlIHNldCdzIGZvcm1hdCgpIG1ldGhvZCB0byBmb3JtYXQgdGhlIHJlc3VsdAorICAgICAgICAgICBsb25nIG51bWJlclRvRm9ybWF0ID0gdHJhbnNmb3JtTnVtYmVyKG51bWJlcik7CisKKyAgICAgICAgICAgIHJ1bGVTZXQuZm9ybWF0KG51bWJlclRvRm9ybWF0LCB0b0luc2VydEludG8sIHBvcyArIHRoaXMucG9zKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIG9yIHBlcmZvcm0gdGhlIHRyYW5zZm9ybWF0aW9uIG9uIHRoZSBudW1iZXIgKHByZXNlcnZpbmcKKyAgICAgICAgICAgIC8vIHRoZSByZXN1bHQncyBmcmFjdGlvbmFsIHBhcnQgaWYgdGhlIGZvcm1hdHRlciBpdCBzZXQKKyAgICAgICAgICAgIC8vIHRvIHNob3cgaXQpLCB0aGVuIHVzZSB0aGF0IGZvcm1hdHRlcidzIGZvcm1hdCgpIG1ldGhvZAorICAgICAgICAgICAgLy8gdG8gZm9ybWF0IHRoZSByZXN1bHQKKyAgICAgICAgICAgIGRvdWJsZSBudW1iZXJUb0Zvcm1hdCA9IHRyYW5zZm9ybU51bWJlcigoZG91YmxlKW51bWJlcik7CisgICAgICAgICAgICBpZiAobnVtYmVyRm9ybWF0LmdldE1heGltdW1GcmFjdGlvbkRpZ2l0cygpID09IDApIHsKKyAgICAgICAgICAgICAgICBudW1iZXJUb0Zvcm1hdCA9IE1hdGguZmxvb3IobnVtYmVyVG9Gb3JtYXQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0b0luc2VydEludG8uaW5zZXJ0KHBvcyArIHRoaXMucG9zLCBudW1iZXJGb3JtYXQuZm9ybWF0KG51bWJlclRvRm9ybWF0KSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQZXJmb3JtcyBhIG1hdGhlbWF0aWNhbCBvcGVyYXRpb24gb24gdGhlIG51bWJlciwgZm9ybWF0cyBpdCB1c2luZworICAgICAqIGVpdGhlciBydWxlU2V0IG9yIGRlY2ltYWxGb3JtYXQsIGFuZCBpbnNlcnRzIHRoZSByZXN1bHQgaW50bworICAgICAqIHRvSW5zZXJ0SW50by4KKyAgICAgKiBAcGFyYW0gbnVtYmVyIFRoZSBudW1iZXIgYmVpbmcgZm9ybWF0dGVkLgorICAgICAqIEBwYXJhbSB0b0luc2VydEludG8gVGhlIHN0cmluZyB3ZSBpbnNlcnQgdGhlIHJlc3VsdCBpbnRvCisgICAgICogQHBhcmFtIHBvcyBUaGUgcG9zaXRpb24gaW4gdG9JbnNlcnRJbnRvIHdoZXJlIHRoZSBvd25pbmcgcnVsZSdzCisgICAgICogcnVsZSB0ZXh0IGJlZ2lucyAodGhpcyB2YWx1ZSBpcyBhZGRlZCB0byB0aGlzIHN1YnN0aXR1dGlvbidzCisgICAgICogcG9zaXRpb24gdG8gZGV0ZXJtaW5lIGV4YWN0bHkgd2hlcmUgdG8gaW5zZXJ0IHRoZSBuZXcgdGV4dCkKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBkb1N1YnN0aXR1dGlvbihkb3VibGUgbnVtYmVyLCBTdHJpbmdCdWZmZXIgdG9JbnNlcnRJbnRvLCBpbnQgcG9zKSB7CisgICAgICAgIC8vIHBlcmZvcm0gYSB0cmFuc2Zvcm1hdGlvbiBvbiB0aGUgbnVtYmVyIGJlaW5nIGZvcm1hdHRlZCB0aGF0CisgICAgICAgIC8vIGlzIGRlcGVuZGVudCBvbiB0aGUgdHlwZSBvZiBzdWJzdGl0dXRpb24gdGhpcyBpcworICAgICAgICBkb3VibGUgbnVtYmVyVG9Gb3JtYXQgPSB0cmFuc2Zvcm1OdW1iZXIobnVtYmVyKTsKKworICAgICAgICAvLyBpZiB0aGUgcmVzdWx0IGlzIGFuIGludGVnZXIsIGZyb20gaGVyZSBvbiBvdXQgd2Ugd29yayBpbiBpbnRlZ2VyCisgICAgICAgIC8vIHNwYWNlIChzYXZpbmcgdGltZSBhbmQgbWVtb3J5IGFuZCBwcmVzZXJ2aW5nIGFjY3VyYWN5KQorICAgICAgICBpZiAobnVtYmVyVG9Gb3JtYXQgPT0gTWF0aC5mbG9vcihudW1iZXJUb0Zvcm1hdCkgJiYgcnVsZVNldCAhPSBudWxsKSB7CisgICAgICAgICAgICBydWxlU2V0LmZvcm1hdCgobG9uZyludW1iZXJUb0Zvcm1hdCwgdG9JbnNlcnRJbnRvLCBwb3MgKyB0aGlzLnBvcyk7CisKKyAgICAgICAgLy8gaWYgdGhlIHJlc3VsdCBpc24ndCBhbiBpbnRlZ2VyLCB0aGVuIGNhbGwgZWl0aGVyIG91ciBydWxlIHNldCdzCisgICAgICAgIC8vIGZvcm1hdCgpIG1ldGhvZCBvciBvdXIgRGVjaW1hbEZvcm1hdCdzIGZvcm1hdCgpIG1ldGhvZCB0bworICAgICAgICAvLyBmb3JtYXQgdGhlIHJlc3VsdAorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKHJ1bGVTZXQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJ1bGVTZXQuZm9ybWF0KG51bWJlclRvRm9ybWF0LCB0b0luc2VydEludG8sIHBvcyArIHRoaXMucG9zKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdG9JbnNlcnRJbnRvLmluc2VydChwb3MgKyB0aGlzLnBvcywgbnVtYmVyRm9ybWF0LmZvcm1hdChudW1iZXJUb0Zvcm1hdCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogU3ViY2xhc3NlcyBvdmVycmlkZSB0aGlzIGZ1bmN0aW9uIHRvIHBlcmZvcm0gc29tZSBraW5kIG9mCisgICAgICogbWF0aGVtYXRpY2FsIG9wZXJhdGlvbiBvbiB0aGUgbnVtYmVyLiAgVGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbgorICAgICAqIGlzIGZvcm1hdHRlZCB1c2luZyB0aGUgcnVsZSBzZXQgb3IgRGVjaW1hbEZvcm1hdCB0aGF0IHRoaXMKKyAgICAgKiBzdWJzdGl0dXRpb24gcmVmZXJzIHRvLCBhbmQgdGhlIHJlc3VsdCBpcyBpbnNlcnRlZCBpbnRvIHRoZSByZXN1bHQKKyAgICAgKiBzdHJpbmcuCisgICAgICogQHBhcmFtIFRoZSBudW1iZXIgYmVpbmcgZm9ybWF0dGVkCisgICAgICogQHJldHVybiBUaGUgcmVzdWx0IG9mIHBlcmZvcm1pbmcgdGhlIG9wcmVyYXRpb24gb24gdGhlIG51bWJlcgorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBsb25nIHRyYW5zZm9ybU51bWJlcihsb25nIG51bWJlcik7CisKKyAgICAvKioKKyAgICAgKiBTdWJjbGFzc2VzIG92ZXJyaWRlIHRoaXMgZnVuY3Rpb24gdG8gcGVyZm9ybSBzb21lIGtpbmQgb2YKKyAgICAgKiBtYXRoZW1hdGljYWwgb3BlcmF0aW9uIG9uIHRoZSBudW1iZXIuICBUaGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uCisgICAgICogaXMgZm9ybWF0dGVkIHVzaW5nIHRoZSBydWxlIHNldCBvciBEZWNpbWFsRm9ybWF0IHRoYXQgdGhpcworICAgICAqIHN1YnN0aXR1dGlvbiByZWZlcnMgdG8sIGFuZCB0aGUgcmVzdWx0IGlzIGluc2VydGVkIGludG8gdGhlIHJlc3VsdAorICAgICAqIHN0cmluZy4KKyAgICAgKiBAcGFyYW0gVGhlIG51bWJlciBiZWluZyBmb3JtYXR0ZWQKKyAgICAgKiBAcmV0dXJuIFRoZSByZXN1bHQgb2YgcGVyZm9ybWluZyB0aGUgb3ByZXJhdGlvbiBvbiB0aGUgbnVtYmVyCisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IGRvdWJsZSB0cmFuc2Zvcm1OdW1iZXIoZG91YmxlIG51bWJlcik7CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gcGFyc2luZworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIFBhcnNlcyBhIHN0cmluZyB1c2luZyB0aGUgcnVsZSBzZXQgb3IgRGVjaW1hbEZvcm1hdCBiZWxvbmdpbmcKKyAgICAgKiB0byB0aGlzIHN1YnN0aXR1dGlvbi4gIElmIHRoZXJlJ3MgYSBtYXRjaCwgYSBtYXRoZW1hdGljYWwKKyAgICAgKiBvcGVyYXRpb24gKHRoZSBpbnZlcnNlIG9mIHRoZSBvbmUgdXNlZCBpbiBmb3JtYXR0aW5nKSBpcworICAgICAqIHBlcmZvcm1lZCBvbiB0aGUgcmVzdWx0IG9mIHRoZSBwYXJzZSBhbmQgdGhlIHZhbHVlIHBhc3NlZCBpbgorICAgICAqIGFuZCByZXR1cm5lZCBhcyB0aGUgcmVzdWx0LiAgVGhlIHBhcnNlIHBvc2l0aW9uIGlzIHVwZGF0ZWQgdG8KKyAgICAgKiBwb2ludCB0byB0aGUgZmlyc3QgdW5tYXRjaGVkIGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nLgorICAgICAqIEBwYXJhbSB0ZXh0IFRoZSBzdHJpbmcgdG8gcGFyc2UKKyAgICAgKiBAcGFyYW0gcGFyc2VQb3NpdGlvbiBPbiBlbnRyeSwgaWdub3JlZCwgYnV0IGFzc3VtZWQgdG8gYmUgMC4KKyAgICAgKiBPbiBleGl0LCB0aGlzIGlzIHVwZGF0ZWQgdG8gcG9pbnQgdG8gdGhlIGZpcnN0IHVubWF0Y2hlZAorICAgICAqIGNoYXJhY3RlciAob3IgMCBpZiB0aGUgc3Vic3RpdHV0aW9uIGRpZG4ndCBtYXRjaCkKKyAgICAgKiBAcGFyYW0gYmFzZVZhbHVlIEEgcGFydGlhbCBwYXJzZSByZXN1bHQgdGhhdCBzaG91bGQgYmUKKyAgICAgKiBjb21iaW5lZCB3aXRoIHRoZSByZXN1bHQgb2YgdGhpcyBwYXJzZQorICAgICAqIEBwYXJhbSB1cHBlckJvdW5kIFdoZW4gc2VhcmNoaW5nIHRoZSBydWxlIHNldCBmb3IgYSBydWxlCisgICAgICogbWF0Y2hpbmcgdGhlIHN0cmluZyBwYXNzZWQgaW4sIG9ubHkgcnVsZXMgd2l0aCBiYXNlIHZhbHVlcworICAgICAqIGxvd2VyIHRoYW4gdGhpcyBhcmUgY29uc2lkZXJlZAorICAgICAqIEBwYXJhbSBsZW5pZW50UGFyc2UgSWYgdHJ1ZSBhbmQgbWF0Y2hpbmcgYWdhaW5zdCBydWxlcyBmYWlscywKKyAgICAgKiB0aGUgc3Vic3RpdHV0aW9uIHdpbGwgYWxzbyB0cnkgbWF0Y2hpbmcgdGhlIHRleHQgYWdhaW5zdAorICAgICAqIG51bWVyYWxzIHVzaW5nIGEgZGVmYXVsdC1jb3N0cnVjdGVkIE51bWJlckZvcm1hdC4gIElmIGZhbHNlLAorICAgICAqIG5vIGV4dHJhIHdvcmsgaXMgZG9uZS4gIChUaGlzIHZhbHVlIGlzIGZhbHNlIHdoZW5ldmVyIHRoZQorICAgICAqIGZvcm1hdHRlciBpc24ndCBpbiBsZW5pZW50LXBhcnNlIG1vZGUsIGJ1dCBpcyBhbHNvIGZhbHNlCisgICAgICogdW5kZXIgc29tZSBjb25kaXRpb25zIGV2ZW4gd2hlbiB0aGUgZm9ybWF0dGVyIF9pc18gaW4KKyAgICAgKiBsZW5pZW50LXBhcnNlIG1vZGUuKQorICAgICAqIEByZXR1cm4gSWYgdGhlcmUncyBhIG1hdGNoLCB0aGlzIGlzIHRoZSByZXN1bHQgb2YgY29tcG9zaW5nCisgICAgICogYmFzZVZhbHVlIHdpdGggd2hhdGV2ZXIgd2FzIHJldHVybmVkIGZyb20gbWF0Y2hpbmcgdGhlCisgICAgICogY2hhcmFjdGVycy4gIFRoaXMgd2lsbCBiZSBlaXRoZXIgYSBMb25nIG9yIGEgRG91YmxlLiAgSWYgdGhlcmUncworICAgICAqIG5vIG1hdGNoIHRoaXMgaXMgbmV3IExvbmcoMCkgKG5vdCBudWxsKSwgYW5kIHBhcnNlUG9zaXRpb24KKyAgICAgKiBpcyBsZWZ0IHVuY2hhbmdlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgTnVtYmVyIGRvUGFyc2UoU3RyaW5nIHRleHQsIFBhcnNlUG9zaXRpb24gcGFyc2VQb3NpdGlvbiwgZG91YmxlIGJhc2VWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgZG91YmxlIHVwcGVyQm91bmQsIGJvb2xlYW4gbGVuaWVudFBhcnNlKSB7CisgICAgICAgIE51bWJlciB0ZW1wUmVzdWx0OworCisgICAgICAgIC8vIGZpZ3VyZSBvdXQgdGhlIGhpZ2hlc3QgYmFzZSB2YWx1ZSBhIHJ1bGUgY2FuIGhhdmUgYW5kIG1hdGNoCisgICAgICAgIC8vIHRoZSB0ZXh0IGJlaW5nIHBhcnNlZCAodGhpcyB2YXJpZXMgYWNjb3JkaW5nIHRvIHRoZSB0eXBlIG9mCisgICAgICAgIC8vIHN1YnN0aXR1dGlvbnM6IG11bHRpcGxpZXIsIG1vZHVsdXMsIGFuZCBudW1lcmF0b3Igc3Vic3RpdHV0aW9ucworICAgICAgICAvLyByZXN0cmljdCB0aGUgc2VhcmNoIHRvIHJ1bGVzIHdpdGggYmFzZSB2YWx1ZXMgbG93ZXIgdGhhbiB0aGVpcgorICAgICAgICAvLyBvd247IHNhbWUtdmFsdWUgc3Vic3RpdHV0aW9ucyBsZWF2ZSB0aGUgdXBwZXIgYm91bmQgd2hlcmV2ZXIKKyAgICAgICAgLy8gaXQgd2FzLCBhbmQgdGhlIG90aGVycyBhbGxvdyBhbnkgcnVsZSB0byBtYXRjaAorICAgICAgICB1cHBlckJvdW5kID0gY2FsY1VwcGVyQm91bmQodXBwZXJCb3VuZCk7CisKKyAgICAgICAgLy8gdXNlIG91ciBydWxlIHNldCB0byBwYXJzZSB0aGUgdGV4dC4gIElmIHRoYXQgZmFpbHMgYW5kCisgICAgICAgIC8vIGxlbmllbnQgcGFyc2luZyBpcyBlbmFibGVkICh0aGlzIGlzIGFsd2F5cyBmYWxzZSBpZiB0aGUKKyAgICAgICAgLy8gZm9ybWF0dGVyJ3MgbGVuaWVudC1wYXJzaW5nIG1vZGUgaXMgb2ZmLCBidXQgaXQgbWF5IGFsc28KKyAgICAgICAgLy8gYmUgZmFsc2UgZXZlbiB3aGVuIHRoZSBmb3JtYXR0ZXIncyBsZW5pZW50LXBhcnNlIG1vZGUgaXMKKyAgICAgICAgLy8gb24pLCB0aGVuIGFsc28gdHJ5IHBhcnNpbmcgdGhlIHRleHQgdXNpbmcgYSBkZWZhdWx0LQorICAgICAgICAvLyBjb25zdHJ1Y3RlZCBOdW1iZXJGb3JtYXQKKyAgICAgICAgaWYgKHJ1bGVTZXQgIT0gbnVsbCkgeworICAgICAgICAgICAgdGVtcFJlc3VsdCA9IHJ1bGVTZXQucGFyc2UodGV4dCwgcGFyc2VQb3NpdGlvbiwgdXBwZXJCb3VuZCk7CisgICAgICAgICAgICBpZiAobGVuaWVudFBhcnNlICYmICFydWxlU2V0LmlzRnJhY3Rpb25TZXQoKSAmJiBwYXJzZVBvc2l0aW9uLmdldEluZGV4KCkgPT0gMCkgeworICAgICAgICAgICAgICAgIHRlbXBSZXN1bHQgPSBOdW1iZXJGb3JtYXQuZ2V0SW5zdGFuY2UoKS5wYXJzZSh0ZXh0LCBwYXJzZVBvc2l0aW9uKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAvLyAuLi5vciB1c2Ugb3VyIERlY2ltYWxGb3JtYXQgdG8gcGFyc2UgdGhlIHRleHQKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRlbXBSZXN1bHQgPSBudW1iZXJGb3JtYXQucGFyc2UodGV4dCwgcGFyc2VQb3NpdGlvbik7CisgICAgICAgIH0KKworICAgICAgICAvLyBpZiB0aGUgcGFyc2Ugd2FzIHN1Y2Nlc3NmdWwsIHdlJ3ZlIGFscmVhZHkgYWR2YW5jZWQgdGhlIGNhbGxlcidzCisgICAgICAgIC8vIHBhcnNlIHBvc2l0aW9uICh0aGlzIGlzIHRoZSBvbmUgZnVuY3Rpb24gdGhhdCBkb2Vzbid0IGhhdmUgb25lCisgICAgICAgIC8vIG9mIGl0cyBvd24pLiAgRGVyaXZlIGEgcGFyc2UgcmVzdWx0IGFuZCByZXR1cm4gaXQgYXMgYSBMb25nLAorICAgICAgICAvLyBpZiBwb3NzaWJsZSwgb3IgYSBEb3VibGUKKyAgICAgICAgaWYgKHBhcnNlUG9zaXRpb24uZ2V0SW5kZXgoKSAhPSAwKSB7CisgICAgICAgICAgICBkb3VibGUgcmVzdWx0ID0gdGVtcFJlc3VsdC5kb3VibGVWYWx1ZSgpOworCisgICAgICAgICAgICAvLyBjb21wb3NlUnVsZVZhbHVlKCkgcHJvZHVjZXMgYSBmdWxsIHBhcnNlIHJlc3VsdCBmcm9tCisgICAgICAgICAgICAvLyB0aGUgcGFydGlhbCBwYXJzZSByZXN1bHQgcGFzc2VkIHRvIHRoaXMgZnVuY3Rpb24gZnJvbQorICAgICAgICAgICAgLy8gdGhlIGNhbGxlciAodGhpcyBpcyBlaXRoZXIgdGhlIG93bmluZyBydWxlJ3MgYmFzZSB2YWx1ZQorICAgICAgICAgICAgLy8gb3IgdGhlIHBhcnRpYWwgcmVzdWx0IG9idGFpbmVkIGZyb20gY29tcG9zaW5nIHRoZQorICAgICAgICAgICAgLy8gb3duaW5nIHJ1bGUncyBiYXNlIHZhbHVlIHdpdGggaXRzIG90aGVyIHN1YnN0aXR1dGlvbidzCisgICAgICAgICAgICAvLyBwYXJzZSByZXN1bHQpIGFuZCB0aGUgcGFydGlhbCBwYXJzZSByZXN1bHQgb2J0YWluZWQgYnkKKyAgICAgICAgICAgIC8vIG1hdGNoaW5nIHRoZSBzdWJzdGl0dXRpb24gKHdoaWNoIHdpbGwgYmUgdGhlIHNhbWUgdmFsdWUKKyAgICAgICAgICAgIC8vIHRoZSBjYWxsZXIgd291bGQgZ2V0IGJ5IHBhcnNpbmcganVzdCB0aGlzIHBhcnQgb2YgdGhlCisgICAgICAgICAgICAvLyB0ZXh0IHdpdGggUnVsZUJhc2VkTnVtYmVyRm9ybWF0LnBhcnNlKCkgKS4gIEhvdyB0aGUgdHdvCisgICAgICAgICAgICAvLyB2YWx1ZXMgYXJlIHVzZWQgdG8gZGVyaXZlIHRoZSBmdWxsIHBhcnNlIHJlc3VsdCBkZXBlbmRzCisgICAgICAgICAgICAvLyBvbiB0aGUgdHlwZXMgb2Ygc3Vic3RpdHV0aW9uczogRm9yIGEgcmVndWxhciBydWxlLCB0aGUKKyAgICAgICAgICAgIC8vIHVsdGltYXRlIHJlc3VsdCBpcyBpdHMgbXVsdGlwbGllciBzdWJzdGl0dXRpb24ncyByZXN1bHQKKyAgICAgICAgICAgIC8vIHRpbWVzIHRoZSBydWxlJ3MgZGl2aXNvciAob3IgdGhlIHJ1bGUncyBiYXNlIHZhbHVlKSBwbHVzCisgICAgICAgICAgICAvLyB0aGUgbW9kdWx1cyBzdWJzdGl0dXRpb24ncyByZXN1bHQgKHdoaWNoIHdpbGwgYWN0dWFsbHkKKyAgICAgICAgICAgIC8vIHN1cGVyc2VkZSBwYXJ0IG9mIHRoZSBydWxlJ3MgYmFzZSB2YWx1ZSkuICBGb3IgYSBuZWdhdGl2ZS0KKyAgICAgICAgICAgIC8vIG51bWJlciBydWxlLCB0aGUgcmVzdWx0IGlzIHRoZSBuZWdhdGl2ZSBvZiBpdHMgc3Vic3RpdHV0aW9uJ3MKKyAgICAgICAgICAgIC8vIHJlc3VsdC4gIEZvciBhIGZyYWN0aW9uIHJ1bGUsIGl0J3MgdGhlIHN1bSBvZiBpdHMgdHdvCisgICAgICAgICAgICAvLyBzdWJzdGl0dXRpb24gcmVzdWx0cy4gIEZvciBhIHJ1bGUgaW4gYSBmcmFjdGlvbiBydWxlIHNldCwKKyAgICAgICAgICAgIC8vIGl0J3MgdGhlIG51bWVyYXRvciBzdWJzdGl0dXRpb24ncyByZXN1bHQgZGl2aWRlZCBieQorICAgICAgICAgICAgLy8gdGhlIHJ1bGUncyBiYXNlIHZhbHVlLiAgUmVzdWx0cyBmcm9tIHNhbWUtdmFsdWUgc3Vic3RpdHV0aW9ucworICAgICAgICAgICAgLy8gcHJvcGFnYXRlIGJhY2sgdXBhcmQsIGFuZCBudWxsIHN1YnN0aXR1dGlvbnMgZG9uJ3QgYWZmZWN0CisgICAgICAgICAgICAvLyB0aGUgcmVzdWx0LgorICAgICAgICAgICAgcmVzdWx0ID0gY29tcG9zZVJ1bGVWYWx1ZShyZXN1bHQsIGJhc2VWYWx1ZSk7CisgICAgICAgICAgICBpZiAocmVzdWx0ID09IChsb25nKXJlc3VsdCkgeworICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTG9uZygobG9uZylyZXN1bHQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERvdWJsZShyZXN1bHQpOworICAgICAgICAgICAgfQorCisgICAgICAgIC8vIGlmIHRoZSBwYXJzZSB3YXMgVU5zdWNjZXNzZnVsLCByZXR1cm4gMAorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHRlbXBSZXN1bHQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEZXJpdmVzIGEgbmV3IHZhbHVlIGZyb20gdGhlIHR3byB2YWx1ZXMgcGFzc2VkIGluLiAgVGhlIHR3byB2YWx1ZXMKKyAgICAgKiBhcmUgdHlwaWNhbGx5IGVpdGhlciB0aGUgYmFzZSB2YWx1ZXMgb2YgdHdvIHJ1bGVzICh0aGUgb25lIGNvbnRhaW5pbmcKKyAgICAgKiB0aGUgc3Vic3RpdHV0aW9uIGFuZCB0aGUgb25lIG1hdGNoaW5nIHRoZSBzdWJzdGl0dXRpb24pIG9yIHBhcnRpYWwKKyAgICAgKiBwYXJzZSByZXN1bHRzIGRlcml2ZWQgaW4gc29tZSBvdGhlciB3YXkuICBUaGUgb3BlcmF0aW9uIGlzIGdlbmVyYWxseQorICAgICAqIHRoZSBpbnZlcnNlIG9mIHRoZSBvcGVyYXRpb24gcGVyZm9ybWVkIGJ5IHRyYW5zZm9ybU51bWJlcigpLgorICAgICAqIEBwYXJhbSBuZXdSdWxlVmFsdWUgVGhlIHZhbHVlIHByb2R1Y2VkIGJ5IG1hdGNoaW5nIHRoaXMgc3Vic3RpdHV0aW9uCisgICAgICogQHBhcmFtIG9sZFJ1bGVWYWx1ZSBUaGUgdmFsdWUgdGhhdCB3YXMgcGFzc2VkIHRvIHRoZSBzdWJzdGl0dXRpb24KKyAgICAgKiBieSB0aGUgcnVsZSB0aGF0IG93bnMgaXQKKyAgICAgKiBAcmV0dXJuIEEgdGhpcmQgdmFsdWUgZGVyaXZlZCBmcm9tIHRoZSBvdGhlciB0d28sIHJlcHJlc2VudGluZyBhCisgICAgICogcGFydGlhbCBwYXJzZSByZXN1bHQKKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgZG91YmxlIGNvbXBvc2VSdWxlVmFsdWUoZG91YmxlIG5ld1J1bGVWYWx1ZSwgZG91YmxlIG9sZFJ1bGVWYWx1ZSk7CisKKyAgICAvKioKKyAgICAgKiBDYWxjdWxhdGVzIGFuIHVwcGVyIGJvdW5kIHdoZW4gc2VhcmNoaW5nIGZvciBhIHJ1bGUgdGhhdCBtYXRjaGVzCisgICAgICogdGhpcyBzdWJzdGl0dXRpb24uICBSdWxlcyB3aXRoIGJhc2UgdmFsdWVzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbAorICAgICAqIHRvIHVwcGVyQm91bmQgYXJlIG5vdCBjb25zaWRlcmVkLgorICAgICAqIEBwYXJhbSBvbGRVcHBlckJvdW5kIFRoZSBjdXJyZW50IHVwcGVyLWJvdW5kIHNldHRpbmcuICBUaGUgbmV3CisgICAgICogdXBwZXIgYm91bmQgY2FuJ3QgYmUgYW55IGhpZ2hlci4KKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgZG91YmxlIGNhbGNVcHBlckJvdW5kKGRvdWJsZSBvbGRVcHBlckJvdW5kKTsKKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBzaW1wbGUgYWNjZXNzb3JzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgc3Vic3RpdHV0aW9uJ3MgcG9zaXRpb24gaW4gdGhlIHJ1bGUgdGhhdCBvd25zIGl0LgorICAgICAqIEByZXR1cm4gVGhlIHN1YnN0aXR1dGlvbidzIHBvc2l0aW9uIGluIHRoZSBydWxlIHRoYXQgb3ducyBpdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgaW50IGdldFBvcygpIHsKKyAgICAgICAgcmV0dXJuIHBvczsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBjaGFyYWN0ZXIgdXNlZCBpbiB0aGUgdGV4dHVhbCByZXByZXNlbnRhdGlvbiBvZgorICAgICAqIHN1YnN0aXR1dGlvbnMgb2YgdGhpcyB0eXBlLiAgVXNlZCBieSB0b1N0cmluZygpLgorICAgICAqIEByZXR1cm4gVGhpcyBzdWJzdGl0dXRpb24ncyB0b2tlbiBjaGFyYWN0ZXIuCisgICAgICovCisgICAgYWJzdHJhY3QgY2hhciB0b2tlbkNoYXIoKTsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGlzIGEgbnVsbCBzdWJzdGl0dXRpb24uICAoV2UgZGlkbid0IGRvIHRoaXMKKyAgICAgKiB3aXRoIGluc3RhbmNlb2YgcGFydGlhbGx5IGJlY2F1c2UgaXQgY2F1c2VzIHNvdXJjZSBmaWxlcyB0bworICAgICAqIHByb2xpZmVyYXRlIGFuZCBwYXJ0aWFsbHkgYmVjYXVzZSB3ZSBoYXZlIHRvIHBvcnQgdGhpcyB0byBDKysuKQorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGlzIG9iamVjdCBpcyBhbiBpbnN0YW5jZSBvZiBOdWxsU3Vic3RpdHV0aW9uCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNOdWxsU3Vic3RpdHV0aW9uKCkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0cnVlIGlmIHRoaXMgaXMgYSBtb2R1bHVzIHN1YnN0aXR1dGlvbi4gIChXZSBkaWRuJ3QgZG8gdGhpcworICAgICAqIHdpdGggaW5zdGFuY2VvZiBwYXJ0aWFsbHkgYmVjYXVzZSBpdCBjYXVzZXMgc291cmNlIGZpbGVzIHRvCisgICAgICogcHJvbGlmZXJhdGUgYW5kIHBhcnRpYWxseSBiZWNhdXNlIHdlIGhhdmUgdG8gcG9ydCB0aGlzIHRvIEMrKy4pCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoaXMgb2JqZWN0IGlzIGFuIGluc3RhbmNlIG9mIE1vZHVsdXNTdWJzdGl0dXRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc01vZHVsdXNTdWJzdGl0dXRpb24oKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gU2FtZVZhbHVlU3Vic3RpdHV0aW9uCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLyoqCisgKiBBIHN1YnN0aXR1dGlvbiB0aGF0IHBhc3NlcyB0aGUgdmFsdWUgcGFzc2VkIHRvIGl0IHRocm91Z2ggdW5jaGFuZ2VkLgorICogUmVwcmVzZW50ZWQgYnkgPT0gaW4gcnVsZSBkZXNjcmlwdGlvbnMuCisgKi8KK2NsYXNzIFNhbWVWYWx1ZVN1YnN0aXR1dGlvbiBleHRlbmRzIE5GU3Vic3RpdHV0aW9uIHsKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gY29uc3RhbnRzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogUHV0cyBhIGNvcHlyaWdodCBpbiB0aGUgLmNsYXNzIGZpbGUKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0Tm90aWNlCisgICAgICAgID0gIkNvcHlyaWdodCBcdTAwYTkxOTk3LTE5OTggSUJNIENvcnAuICBBbGwgcmlnaHRzIHJlc2VydmVkLiI7CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gY29uc3RydWN0aW9uCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIFNhbWVWYWx1ZVN1YnN0dXRpb24uICBUaGlzIGZ1bmN0aW9uIGp1c3QgdXNlcyB0aGUKKyAgICAgKiBzdXBlcmNsYXNzIGNvbnN0cnVjdG9yLCBidXQgaXQgcGVyZm9ybXMgYSBjaGVjayB0aGF0IHRoaXMKKyAgICAgKiBzdWJzdGl0dXRpb24gZG9lc24ndCBjYWxsIHRoZSBydWxlIHNldCB0aGF0IG93bnMgaXQsIHNpbmNlIHRoYXQKKyAgICAgKiB3b3VsZCBsZWFkIHRvIGluZmluaXRlIHJlY3Vyc2lvbi4KKyAgICAgKi8KKyAgICBTYW1lVmFsdWVTdWJzdGl0dXRpb24oaW50IHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTkZSdWxlU2V0IHJ1bGVTZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZE51bWJlckZvcm1hdCBmb3JtYXR0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBkZXNjcmlwdGlvbikgeworICAgICAgICBzdXBlcihwb3MsIHJ1bGVTZXQsIGZvcm1hdHRlciwgZGVzY3JpcHRpb24pOworICAgICAgICBpZiAoZGVzY3JpcHRpb24uZXF1YWxzKCI9PSIpKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCI9PSBpcyBub3QgYSBsZWdhbCB0b2tlbiIpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIGZvcm1hdHRpbmcKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zICJudW1iZXIiIHVuY2hhbmdlZC4KKyAgICAgKiBAcmV0dXJuICJudW1iZXIiCisgICAgICovCisgICAgcHVibGljIGxvbmcgdHJhbnNmb3JtTnVtYmVyKGxvbmcgbnVtYmVyKSB7CisgICAgICAgIHJldHVybiBudW1iZXI7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyAibnVtYmVyIiB1bmNoYW5nZWQuCisgICAgICogQHJldHVybiAibnVtYmVyIgorICAgICAqLworICAgIHB1YmxpYyBkb3VibGUgdHJhbnNmb3JtTnVtYmVyKGRvdWJsZSBudW1iZXIpIHsKKyAgICAgICAgcmV0dXJuIG51bWJlcjsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gcGFyc2luZworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgbmV3UnVsZVZhbHVlIGFuZCBpZ25vcmVzIG9sZFJ1bGVWYWx1ZS4gKFRoZSB2YWx1ZSB3ZSBnb3QKKyAgICAgKiBtYXRjaGluZyB0aGUgc3Vic3RpdHV0aW9uIHN1cGVyc2VkZXMgdGhlIHZhbHVlIG9mIHRoZSBydWxlCisgICAgICogdGhhdCBvd25zIHRoZSBzdWJzdGl0dXRpb24uKQorICAgICAqIEBwYXJhbSBuZXdSdWxlVmFsdWUgVGhlIHZhbHVlIHJlc3VsdGluZyBmcm9tIG1hdGNoaW5nIHRoZSBzdWJzdGl0dWlvbgorICAgICAqIEBwYXJhbSBvbGRSdWxlVmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBydWxlIGNvbnRhaW5pbmcgdGhlCisgICAgICogc3Vic3RpdHV0aW9uLgorICAgICAqIEByZXR1cm4gbmV3UnVsZVZhbHVlCisgICAgICovCisgICAgcHVibGljIGRvdWJsZSBjb21wb3NlUnVsZVZhbHVlKGRvdWJsZSBuZXdSdWxlVmFsdWUsIGRvdWJsZSBvbGRSdWxlVmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIG5ld1J1bGVWYWx1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTYW1lVmFsdWVTdWJzdGl0dXRpb24gZG9lc24ndCBjaGFuZ2UgdGhlIHVwcGVyIGJvdW5kLgorICAgICAqIEBwYXJhbSBvbGRVcHBlckJvdW5kIFRoZSBjdXJyZW50IHVwcGVyIGJvdW5kLgorICAgICAqIEByZXR1cm4gb2xkVXBwZXJCb3VuZAorICAgICAqLworICAgIHB1YmxpYyBkb3VibGUgY2FsY1VwcGVyQm91bmQoZG91YmxlIG9sZFVwcGVyQm91bmQpIHsKKyAgICAgICAgcmV0dXJuIG9sZFVwcGVyQm91bmQ7CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIHNpbXBsZSBhY2Nlc3NvcgorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIFRoZSB0b2tlbiBjaGFyYWN0ZXIgZm9yIGEgU2FtZVZhbHVlU3Vic3RpdHV0aW9uIGlzID0uCisgICAgICogQHJldHVybiAnPScKKyAgICAgKi8KKyAgICBjaGFyIHRva2VuQ2hhcigpIHsKKyAgICAgICAgcmV0dXJuICc9JzsKKyAgICB9Cit9CisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gTXVsdGlwbGllclN1YnN0aXR1dGlvbgorLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy8qKgorICogQSBzdWJzdGl0dXRpb24gdGhhdCBkaXZpZGVzIHRoZSBudW1iZXIgYmVpbmcgZm9ybWF0dGVkIGJ5IHRoZSBydWxlJ3MKKyAqIGRpdmlzb3IgYW5kIGZvcm1hdHMgdGhlIHF1b3RpZW50LiAgUmVwcmVzZW50ZWQgYnkgJmx0OyZsdDsgaW4gbm9ybWFsCisgKiBydWxlcy4KKyAqLworY2xhc3MgTXVsdGlwbGllclN1YnN0aXR1dGlvbiBleHRlbmRzIE5GU3Vic3RpdHV0aW9uIHsKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gY29uc3RhbnRzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogUHV0cyBhIGNvcHlyaWdodCBpbiB0aGUgLmNsYXNzIGZpbGUKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0Tm90aWNlCisgICAgICAgID0gIkNvcHlyaWdodCBcdTAwYTkxOTk3LTE5OTggSUJNIENvcnAuICBBbGwgcmlnaHRzIHJlc2VydmVkLiI7CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gZGF0YSBtZW1iZXJzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogVGhlIGRpdmlzb3Igb2YgdGhlIHJ1bGUgdGhhdCBvd25zIHRoaXMgc3Vic3RpdHV0aW9uLgorICAgICAqLworICAgIGRvdWJsZSBkaXZpc29yOworCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIGNvbnN0cnVjdGlvbgorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSBNdWx0aXBsaWVyU3Vic3RpdHV0aW9uLiAgVGhpcyB1c2VzIHRoZSBzdXBlcmNsYXNzCisgICAgICogY29uc3RydWN0b3IgdG8gaW5pdGlhbGl6ZSBtb3N0IG1lbWJlcnMsIGJ1dCB0aGlzIHN1YnN0aXR1dGlvbgorICAgICAqIGFsc28gbWFpbnRhaW5zIGl0cyBvd24gY29weSBvZiBpdHMgcnVsZSdzIGRpdmlzb3IuCisgICAgICogQHBhcmFtIHBvcyBUaGUgc3Vic3RpdHV0aW9uJ3MgcG9zaXRpb24gaW4gaXRzIHJ1bGUncyBydWxlIHRleHQKKyAgICAgKiBAcGFyYW0gZGl2aXNvciBUaGUgb3duaW5nIHJ1bGUncyBkaXZpc29yCisgICAgICogQHJ1bGVTZXQgVGhlIHJ1bGVTZXQgdGhpcyBzdWJzdGl0dXRpb24gdXNlcyB0byBmb3JtYXQgaXRzIHJlc3VsdAorICAgICAqIEBmb3JtYXR0ZXIgVGhlIGZvcm1hdHRlciB0aGF0IG93bnMgdGhpcyBzdWJzdGl0dXRpb24KKyAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGRlc2NyaXB0aW9uIGRlc2NyaWJpbmcgdGhpcyBzdWJzdGl0dXRpb24KKyAgICAgKi8KKyAgICBNdWx0aXBsaWVyU3Vic3RpdHV0aW9uKGludCBwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZGl2aXNvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE5GUnVsZVNldCBydWxlU2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkTnVtYmVyRm9ybWF0IGZvcm1hdHRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBkZXNjcmlwdGlvbikgeworICAgICAgICBzdXBlcihwb3MsIHJ1bGVTZXQsIGZvcm1hdHRlciwgZGVzY3JpcHRpb24pOworCisgICAgICAgIC8vIHRoZSBvd25pbmcgcnVsZSdzIGRpdmlzb3IgYWZmZWN0cyB0aGUgYmVoYXZpb3Igb2YgdGhpcworICAgICAgICAvLyBzdWJzdGl0dXRpb24uICBSYXRoZXIgdGhhbiBrZWVwaW5nIGEgYmFjay1wb2ludGVyIHRvIHRoZQorICAgICAgICAvLyBydWxlLCB3ZSBrZWVwIGEgY29weSBvZiB0aGUgZGl2aXNvcgorICAgICAgICB0aGlzLmRpdmlzb3IgPSBkaXZpc29yOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIHN1YnN0aXR1dGlvbidzIGRpdmlzb3IgYmFzZWQgb24gdGhlIHZhbHVlcyBwYXNzZWQgaW4uCisgICAgICogQHBhcmFtIHJhZGl4IFRoZSByYWRpeCBvZiB0aGUgZGl2aXNvci4KKyAgICAgKiBAcGFyYW0gZXhwb25lbnQgVGhlIGV4cG9uZW50IG9mIHRoZSBkaXZpc29yLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldERpdmlzb3IoaW50IHJhZGl4LCBpbnQgZXhwb25lbnQpIHsKKyAgICAgICAgZGl2aXNvciA9IE1hdGgucG93KHJhZGl4LCBleHBvbmVudCk7CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIGJvaWxlcnBsYXRlCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogQXVnbWVudHMgdGhlIHN1cGVyY2xhc3MncyBlcXVhbHMoKSBmdW5jdGlvbiBieSBjb21wYXJpbmcgZGl2aXNvcnMuCisgICAgICogQHBhcmFtIHRoYXQgVGhlIG90aGVyIHN1YnN0aXR1dGlvbgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgdHdvIHN1YnN0aXR1dGlvbnMgYXJlIGZ1bmN0aW9uYWxseSBlcXVhbAorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3QgdGhhdCkgeworICAgICAgICBpZiAoc3VwZXIuZXF1YWxzKHRoYXQpKSB7CisgICAgICAgICAgICBNdWx0aXBsaWVyU3Vic3RpdHV0aW9uIHRoYXQyID0gKE11bHRpcGxpZXJTdWJzdGl0dXRpb24pdGhhdDsKKworICAgICAgICAgICAgcmV0dXJuIGRpdmlzb3IgPT0gdGhhdDIuZGl2aXNvcjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBmb3JtYXR0aW5nCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogRGl2aWRlcyB0aGUgbnVtYmVyIGJ5IHRoZSBydWxlJ3MgZGl2aXNvciBhbmQgcmV0dXJucyB0aGUgcXVvdGllbnQuCisgICAgICogQHBhcmFtIG51bWJlciBUaGUgbnVtYmVyIGJlaW5nIGZvcm1hdHRlZC4KKyAgICAgKiBAcmV0dXJuICJudW1iZXIiIGRpdmlkZWQgYnkgdGhlIHJ1bGUncyBkaXZpc29yCisgICAgICovCisgICAgcHVibGljIGxvbmcgdHJhbnNmb3JtTnVtYmVyKGxvbmcgbnVtYmVyKSB7CisgICAgICAgIHJldHVybiAobG9uZylNYXRoLmZsb29yKG51bWJlciAvIGRpdmlzb3IpOworICAgIH0KKworICAgIC8qKgorICAgICAqIERpdmlkZXMgdGhlIG51bWJlciBieSB0aGUgcnVsZSdzIGRpdmlzb3IgYW5kIHJldHVybnMgdGhlIHF1b3RpZW50LgorICAgICAqIFRoaXMgaXMgYW4gaW50ZWdyYWwgcXVvdGllbnQgaWYgd2UncmUgZmlsbGluZyBpbiB0aGUgc3Vic3RpdHV0aW9uCisgICAgICogdXNpbmcgYW5vdGhlciBydWxlIHNldCwgYnV0IGl0J3MgdGhlIGZ1bGwgcXVvdGllbnQgKGludGVncmFsIGFuZAorICAgICAqIGZyYWN0aW9uYWwgcGFydHMpIGlmIHdlJ3JlIGZpbGxpbmcgaW4gdGhlIHN1YnN0aXR1dGlvbiB1c2luZworICAgICAqIGEgRGVjaW1hbEZvcm1hdC4gIChUaGlzIGFsbG93cyB0aGluZ3Mgc3VjaCBhcyAiMS4yIG1pbGxpb24iLikKKyAgICAgKiBAcGFyYW0gbnVtYmVyIFRoZSBudW1iZXIgYmVpbmcgZm9ybWF0dGVkCisgICAgICogQHJldHVybiAibnVtYmVyIiBkaXZpZGVkIGJ5IHRoZSBydWxlJ3MgZGl2aXNvcgorICAgICAqLworICAgIHB1YmxpYyBkb3VibGUgdHJhbnNmb3JtTnVtYmVyKGRvdWJsZSBudW1iZXIpIHsKKyAgICAgICAgaWYgKHJ1bGVTZXQgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIG51bWJlciAvIGRpdmlzb3I7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihudW1iZXIgLyBkaXZpc29yKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBwYXJzaW5nCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBuZXdSdWxlVmFsdWUgdGltZXMgdGhlIGRpdmlzb3IuICBJZ25vcmVzIG9sZFJ1bGVWYWx1ZS4KKyAgICAgKiAoVGhlIHJlc3VsdCBvZiBtYXRjaGluZyBhIDw8IHN1YnN0aXR1dGlvbiBzdXBlcnNlZGVzIHRoZSBiYXNlCisgICAgICogdmFsdWUgb2YgdGhlIHJ1bGUgdGhhdCBjb250YWlucyBpdC4pCisgICAgICogQHBhcmFtIG5ld1J1bGVWYWx1ZSBUaGUgcmVzdWx0IG9mIG1hdGNoaW5nIHRoZSBzdWJzdGl0dXRpb24KKyAgICAgKiBAcGFyYW0gb2xkUnVsZVZhbHVlIFRoZSBiYXNlIHZhbHVlIG9mIHRoZSBydWxlIGNvbnRhaW5pbmcgdGhlCisgICAgICogc3Vic3RpdHV0aW9uCisgICAgICogQHJldHVybiBuZXdSdWxlVmFsdWUgKiBkaXZpc29yCisgICAgICovCisgICAgcHVibGljIGRvdWJsZSBjb21wb3NlUnVsZVZhbHVlKGRvdWJsZSBuZXdSdWxlVmFsdWUsIGRvdWJsZSBvbGRSdWxlVmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIG5ld1J1bGVWYWx1ZSAqIGRpdmlzb3I7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgdXBwZXIgYm91bmQgZG93biB0byB0aGUgcnVsZSdzIGRpdmlzb3IuCisgICAgICogQHBhcmFtIG9sZFVwcGVyQm91bmQgSWdub3JlZC4KKyAgICAgKiBAcmV0dXJuIFRoZSBydWxlJ3MgZGl2aXNvci4KKyAgICAgKi8KKyAgICBwdWJsaWMgZG91YmxlIGNhbGNVcHBlckJvdW5kKGRvdWJsZSBvbGRVcHBlckJvdW5kKSB7CisgICAgICAgIHJldHVybiBkaXZpc29yOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBzaW1wbGUgYWNjZXNzb3IKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBUaGUgdG9rZW4gY2hhcmFjdGVyIGZvciBhIG11bHRpcGxpZXIgc3Vic3RpdHV0aW9uIGlzICZsdDsuCisgICAgICogQHJldHVybiAnJmx0OycKKyAgICAgKi8KKyAgICBjaGFyIHRva2VuQ2hhcigpIHsKKyAgICAgICAgcmV0dXJuICc8JzsKKyAgICB9Cit9CisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gTW9kdWx1c1N1YnN0aXR1dGlvbgorLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy8qKgorICogQSBzdWJzdGl0dXRpb24gdGhhdCBkaXZpZGVzIHRoZSBudW1iZXIgYmVpbmcgZm9ybWF0dGVkIGJ5IHRoZSBpdHMgcnVsZSdzCisgKiBkaXZpc29yIGFuZCBmb3JtYXRzIHRoZSByZW1haW5kZXIuICBSZXByZXNlbnRlZCBieSAiJmd0OyZndDsiIGluIGEKKyAqIHJlZ3VsYXIgcnVsZS4KKyAqLworY2xhc3MgTW9kdWx1c1N1YnN0aXR1dGlvbiBleHRlbmRzIE5GU3Vic3RpdHV0aW9uIHsKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gY29uc3RhbnRzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogUHV0cyBhIGNvcHlyaWdodCBpbiB0aGUgLmNsYXNzIGZpbGUKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0Tm90aWNlCisgICAgICAgID0gIkNvcHlyaWdodCBcdTAwYTkxOTk3LTE5OTggSUJNIENvcnAuICBBbGwgcmlnaHRzIHJlc2VydmVkLiI7CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gZGF0YSBtZW1iZXJzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogVGhlIGRpdmlzb3Igb2YgdGhlIHJ1bGUgb3duaW5nIHRoaXMgc3Vic3RpdHV0aW9uCisgICAgICovCisgICAgZG91YmxlIGRpdmlzb3I7CisKKyAgICAvKioKKyAgICAgKiBJZiB0aGlzIGlzIGEgJmd0OyZndDsmZ3Q7IHN1YnN0aXR1dGlvbiwgdGhlIHJ1bGUgdG8gdXNlIHRvIGZvcm1hdAorICAgICAqIHRoZSBzdWJzdGl0dXRpb24gdmFsdWUuICBPdGhlcndpc2UsIG51bGwuCisgICAgICovCisgICAgTkZSdWxlIHJ1bGVUb1VzZTsKKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBjb25zdHJ1Y3Rpb24KKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgTW9kdWx1c1N1YnN0dXRpb24uICBJbiBhZGRpdGlvbiB0byB0aGUgaW5oZXJpdGVkCisgICAgICogbWVtYmVycywgYSBNb2R1bHVzU3Vic3RpdHV0aW9uIGtlZXBzIHRyYWNrIG9mIHRoZSBkaXZpc29yIG9mIHRoZQorICAgICAqIHJ1bGUgdGhhdCBvd25zIGl0LCBhbmQgbWF5IGFsc28ga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgcnVsZQorICAgICAqIHRoYXQgcHJlY2VkZXMgdGhlIHJ1bGUgY29udGFpbmluZyB0aGlzIHN1YnN0aXR1dGlvbiBpbiB0aGUgcnVsZQorICAgICAqIHNldCdzIHJ1bGUgbGlzdC4KKyAgICAgKiBAcGFyYW0gcG9zIFRoZSBzdWJzdGl0dXRpb24ncyBwb3NpdGlvbiBpbiBpdHMgcnVsZSdzIHJ1bGUgdGV4dAorICAgICAqIEBwYXJhbSBkaXZpc29yIFRoZSBkaXZpc29yIG9mIHRoZSBydWxlIHRoYXQgb3ducyB0aGlzIHN1YnN0aXR1dGlvbgorICAgICAqIEBwYXJhbSBydWxlUHJlZGVjZXNzb3IgVGhlIHJ1bGUgdGhhdCBwcmVjZWRlcyB0aGlzIHN1YnN0aXR1dGlvbidzCisgICAgICogcnVsZSBpbiBpdHMgcnVsZSBzZXQncyBydWxlIGxpc3QKKyAgICAgKiBAcGFyYW0gZm9ybWF0dGVyIFRoZSBSdWxlQmFzZWROdW1iZXJGb3JtYXQgb3duaW5nIHRoaXMgc3Vic3RpdHV0aW9uCisgICAgICogQHBhcmFtIGRlc2NyaXB0aW9uIFRoZSBkZXNjcmlwdGlvbiBmb3IgdGhpcyBzdWJzdGl0dXRpb24KKyAgICAgKi8KKyAgICBNb2R1bHVzU3Vic3RpdHV0aW9uKGludCBwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZGl2aXNvciwKKyAgICAgICAgICAgICAgICAgICAgICAgIE5GUnVsZSBydWxlUHJlZGVjZXNzb3IsCisgICAgICAgICAgICAgICAgICAgICAgICBORlJ1bGVTZXQgcnVsZVNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZE51bWJlckZvcm1hdCBmb3JtYXR0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZGVzY3JpcHRpb24pIHsKKyAgICAgICAgc3VwZXIocG9zLCBydWxlU2V0LCBmb3JtYXR0ZXIsIGRlc2NyaXB0aW9uKTsKKworICAgICAgICAvLyB0aGUgb3duaW5nIHJ1bGUncyBkaXZpc29yIGNvbnRyb2xzIHRoZSBiZWhhdmlvciBvZiB0aGlzCisgICAgICAgIC8vIHN1YnN0aXR1dGlvbjogcmF0aGVyIHRoYW4ga2VlcGluZyBhIGJhY2twb2ludGVyIHRvIHRoZSBydWxlLAorICAgICAgICAvLyB3ZSBrZWVwIGEgY29weSBvZiB0aGUgZGl2aXNvcgorICAgICAgICB0aGlzLmRpdmlzb3IgPSBkaXZpc29yOworCisgICAgICAgIC8vIHRoZSA+Pj4gdG9rZW4gZG9lc24ndCBhbHRlciBob3cgdGhpcyBzdWJzdGl0dWlvbiBjYWxjdWxhdGVzIHRoZQorICAgICAgICAvLyB2YWx1ZXMgaXQgdXNlcyBmb3IgZm9ybWF0dGluZyBhbmQgcGFyc2luZywgYnV0IGl0IGNoYW5nZXMKKyAgICAgICAgLy8gd2hhdCdzIGRvbmUgd2l0aCB0aGF0IHZhbHVlIGFmdGVyIGl0J3Mgb2J0YWluZWQ6ID4+PiBzaG9ydC0KKyAgICAgICAgLy8gY2lyY3VpdHMgdGhlIHJ1bGUtc2VhcmNoIHByb2Nlc3MgYW5kIGdvZXMgc3RyYWlnaHQgdG8gdGhlCisgICAgICAgIC8vIHNwZWNpZmllZCBydWxlIHRvIGZvcm1hdCB0aGUgc3Vic3RpdHV0aW9uIHZhbHVlCisgICAgICAgIGlmIChkZXNjcmlwdGlvbi5lcXVhbHMoIj4+PiIpKSB7CisgICAgICAgICAgICBydWxlVG9Vc2UgPSBydWxlUHJlZGVjZXNzb3I7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBydWxlVG9Vc2UgPSBudWxsOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogTWFrZXMgdGhlIHN1YnN0aXR1dGlvbidzIGRpdmlzb3IgY29uZm9ybSB0byB0aGF0IG9mIHRoZSBydWxlCisgICAgICogdGhhdCBvd25zIGl0LiAgVXNlZCB3aGVuIHRoZSBkaXZpc29yIGlzIGRldGVybWluZWQgYWZ0ZXIgY3JlYXRpb24uCisgICAgICogQHBhcmFtIHJhZGl4IFRoZSByYWRpeCBvZiB0aGUgZGl2c29yLgorICAgICAqIEBwYXJhbSBleHBvbmVudCBUaGUgZXhwb25lbnQgb2YgdGhlIGRpdmlzb3IuCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0RGl2aXNvcihpbnQgcmFkaXgsIGludCBleHBvbmVudCkgeworICAgICAgICBkaXZpc29yID0gTWF0aC5wb3cocmFkaXgsIGV4cG9uZW50KTsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gYm9pbGVycGxhdGUKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBBdWdtZW50cyB0aGUgaW5oZXJpdGVkIGVxdWFscygpIGZ1bmN0aW9uIGJ5IGNvbXBhcmluZyBkaXZpc29ycyBhbmQKKyAgICAgKiBydWxlVG9Vc2UuCisgICAgICogQHBhcmFtIHRoYXQgVGhlIG90aGVyIHN1YnN0aXR1dGlvbgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgdHdvIHN1YnN0aXR1dGlvbnMgYXJlIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50CisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCB0aGF0KSB7CisgICAgICAgIGlmIChzdXBlci5lcXVhbHModGhhdCkpIHsKKyAgICAgICAgICAgIE1vZHVsdXNTdWJzdGl0dXRpb24gdGhhdDIgPSAoTW9kdWx1c1N1YnN0aXR1dGlvbil0aGF0OworCisgICAgICAgICAgICByZXR1cm4gZGl2aXNvciA9PSB0aGF0Mi5kaXZpc29yOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIGZvcm1hdHRpbmcKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBJZiB0aGlzIGlzIGEgJmd0OyZndDsmZ3Q7IHN1YnN0aXR1dGlvbiwgdXNlIHJ1bGVUb1VzZSB0byBmaWxsIGluCisgICAgICogdGhlIHN1YnN0aXR1dGlvbi4gIE90aGVyd2lzZSwganVzdCB1c2UgdGhlIHN1cGVyY2xhc3MgZnVuY3Rpb24uCisgICAgICogQHBhcmFtIG51bWJlciBUaGUgbnVtYmVyIGJlaW5nIGZvcm1hdHRlZAorICAgICAqIEB0b0luc2VydEludG8gVGhlIHN0cmluZyB0byBpbnNlcnQgdGhlIHJlc3VsdCBvZiB0aGlzIHN1YnN0aXR1dGlvbgorICAgICAqIGludG8KKyAgICAgKiBAcGFyYW0gcG9zIFRoZSBwb3NpdGlvbiBvZiB0aGUgcnVsZSB0ZXh0IGluIHRvSW5zZXJ0SW50bworICAgICAqLworICAgIHB1YmxpYyB2b2lkIGRvU3Vic3RpdHV0aW9uKGxvbmcgbnVtYmVyLCBTdHJpbmdCdWZmZXIgdG9JbnNlcnRJbnRvLCBpbnQgcG9zKSB7CisgICAgICAgIC8vIGlmIHRoaXMgaXNuJ3QgYSA+Pj4gc3Vic3RpdHV0aW9uLCBqdXN0IHVzZSB0aGUgaW5oZXJpdGVkIHZlcnNpb24KKyAgICAgICAgLy8gb2YgdGhpcyBmdW5jdGlvbiAod2hpY2ggdXNlcyBlaXRoZXIgYSBydWxlIHNldCBvciBhIERlY2ltYWxGb3JtYXQKKyAgICAgICAgLy8gdG8gZm9ybWF0IGl0cyBzdWJzdGl0dXRpb24gdmFsdWUpCisgICAgICAgIGlmIChydWxlVG9Vc2UgPT0gbnVsbCkgeworICAgICAgICAgICAgc3VwZXIuZG9TdWJzdGl0dXRpb24obnVtYmVyLCB0b0luc2VydEludG8sIHBvcyk7CisKKyAgICAgICAgLy8gYSA+Pj4gc3Vic3RpdHV0aW9uIGdvZXMgc3RyYWlnaHQgdG8gYSBwYXJ0aWN1bGFyIHJ1bGUgdG8KKyAgICAgICAgLy8gZm9ybWF0IHRoZSBzdWJzdGl0dXRpb24gdmFsdWUKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvbmcgbnVtYmVyVG9Gb3JtYXQgPSB0cmFuc2Zvcm1OdW1iZXIobnVtYmVyKTsKKyAgICAgICAgICAgIHJ1bGVUb1VzZS5kb0Zvcm1hdChudW1iZXJUb0Zvcm1hdCwgdG9JbnNlcnRJbnRvLCBwb3MgKyB0aGlzLnBvcyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJZiB0aGlzIGlzIGEgJmd0OyZndDsmZ3Q7IHN1YnN0aXR1dGlvbiwgdXNlIHJ1bGVUb1VzZSB0byBmaWxsIGluCisgICAgICogdGhlIHN1YnN0aXR1dGlvbi4gIE90aGVyd2lzZSwganVzdCB1c2UgdGhlIHN1cGVyY2xhc3MgZnVuY3Rpb24uCisgICAgICogQHBhcmFtIG51bWJlciBUaGUgbnVtYmVyIGJlaW5nIGZvcm1hdHRlZAorICAgICAqIEB0b0luc2VydEludG8gVGhlIHN0cmluZyB0byBpbnNlcnQgdGhlIHJlc3VsdCBvZiB0aGlzIHN1YnN0aXR1dGlvbgorICAgICAqIGludG8KKyAgICAgKiBAcGFyYW0gcG9zIFRoZSBwb3NpdGlvbiBvZiB0aGUgcnVsZSB0ZXh0IGluIHRvSW5zZXJ0SW50bworICAgICAqLworICAgIHB1YmxpYyB2b2lkIGRvU3Vic3RpdHV0aW9uKGRvdWJsZSBudW1iZXIsIFN0cmluZ0J1ZmZlciB0b0luc2VydEludG8sIGludCBwb3MpIHsKKyAgICAgICAgLy8gaWYgdGhpcyBpc24ndCBhID4+PiBzdWJzdGl0dXRpb24sIGp1c3QgdXNlIHRoZSBpbmhlcml0ZWQgdmVyc2lvbgorICAgICAgICAvLyBvZiB0aGlzIGZ1bmN0aW9uICh3aGljaCB1c2VzIGVpdGhlciBhIHJ1bGUgc2V0IG9yIGEgRGVjaW1hbEZvcm1hdAorICAgICAgICAvLyB0byBmb3JtYXQgaXRzIHN1YnN0aXR1dGlvbiB2YWx1ZSkKKyAgICAgICAgaWYgKHJ1bGVUb1VzZSA9PSBudWxsKSB7CisgICAgICAgICAgICBzdXBlci5kb1N1YnN0aXR1dGlvbihudW1iZXIsIHRvSW5zZXJ0SW50bywgcG9zKTsKKworICAgICAgICAvLyBhID4+PiBzdWJzdGl0dXRpb24gZ29lcyBzdHJhaWdodCB0byBhIHBhcnRpY3VsYXIgcnVsZSB0bworICAgICAgICAvLyBmb3JtYXQgdGhlIHN1YnN0aXR1dGlvbiB2YWx1ZQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZG91YmxlIG51bWJlclRvRm9ybWF0ID0gdHJhbnNmb3JtTnVtYmVyKG51bWJlcik7CisKKyAgICAgICAgICAgIHJ1bGVUb1VzZS5kb0Zvcm1hdChudW1iZXJUb0Zvcm1hdCwgdG9JbnNlcnRJbnRvLCBwb3MgKyB0aGlzLnBvcyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEaXZpZGVzIHRoZSBudW1iZXIgYmVpbmcgZm9ybWF0dGVkIGJ5IHRoZSBydWxlJ3MgZGl2aXNvciBhbmQKKyAgICAgKiByZXR1cm5zIHRoZSByZW1haW5kZXIuCisgICAgICogQHBhcmFtIG51bWJlciBUaGUgbnVtYmVyIGJlaW5nIGZvcm1hdHRlZAorICAgICAqIEByZXR1cm4gIm51bWJlciIgbW9kIGRpdmlzb3IKKyAgICAgKi8KKyAgICBwdWJsaWMgbG9uZyB0cmFuc2Zvcm1OdW1iZXIobG9uZyBudW1iZXIpIHsKKyAgICAgICAgcmV0dXJuIChsb25nKU1hdGguZmxvb3IobnVtYmVyICUgZGl2aXNvcik7CisgICAgfQorCisgICAgLyoqCisgICAgICogRGl2aWRlcyB0aGUgbnVtYmVyIGJlaW5nIGZvcm1hdHRlZCBieSB0aGUgcnVsZSdzIGRpdmlzb3IgYW5kCisgICAgICogcmV0dXJucyB0aGUgcmVtYWluZGVyLgorICAgICAqIEBwYXJhbSBudW1iZXIgVGhlIG51bWJlciBiZWluZyBmb3JtYXR0ZWQKKyAgICAgKiBAcmV0dXJuICJudW1iZXIiIG1vZCBkaXZpc29yCisgICAgICovCisgICAgcHVibGljIGRvdWJsZSB0cmFuc2Zvcm1OdW1iZXIoZG91YmxlIG51bWJlcikgeworICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihudW1iZXIgJSBkaXZpc29yKTsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gcGFyc2luZworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIElmIHRoaXMgaXMgYSAmZ3Q7Jmd0OyZndDsgc3Vic3RpdHV0aW9uLCBtYXRjaCBvbmx5IGFnYWluc3QgcnVsZVRvVXNlLgorICAgICAqIE90aGVyd2lzZSwgdXNlIHRoZSBzdXBlcmNsYXNzIGZ1bmN0aW9uLgorICAgICAqIEBwYXJhbSB0ZXh0IFRoZSBzdHJpbmcgdG8gcGFyc2UKKyAgICAgKiBAcGFyYW0gcGFyc2VQb3NpdGlvbiBJZ25vcmVkIG9uIGVudHJ5LCB1cGRhdGVkIG9uIGV4aXQgdG8gcG9pbnQgdG8KKyAgICAgKiB0aGUgZmlyc3QgdW5tYXRjaGVkIGNoYXJhY3Rlci4KKyAgICAgKiBAcGFyYW0gYmFzZVZhbHVlIFRoZSBwYXJ0aWFsIHBhcnNlIHJlc3VsdCBwcmlvciB0byBjYWxsaW5nIHRoaXMKKyAgICAgKiByb3V0aW5lLgorICAgICAqLworICAgIHB1YmxpYyBOdW1iZXIgZG9QYXJzZShTdHJpbmcgdGV4dCwgUGFyc2VQb3NpdGlvbiBwYXJzZVBvc2l0aW9uLCBkb3VibGUgYmFzZVZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIHVwcGVyQm91bmQsIGJvb2xlYW4gbGVuaWVudFBhcnNlKSB7CisgICAgICAgIC8vIGlmIHRoaXMgaXNuJ3QgYSA+Pj4gc3Vic3RpdHV0aW9uLCB3ZSBjYW4ganVzdCB1c2UgdGhlCisgICAgICAgIC8vIGluaGVyaXRlZCBwYXJzZSgpIHJvdXRpbmUgdG8gZG8gdGhlIHBhcnNpbmcKKyAgICAgICAgaWYgKHJ1bGVUb1VzZSA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gc3VwZXIuZG9QYXJzZSh0ZXh0LCBwYXJzZVBvc2l0aW9uLCBiYXNlVmFsdWUsIHVwcGVyQm91bmQsIGxlbmllbnRQYXJzZSk7CisKKyAgICAgICAgLy8gYnV0IGlmIGl0IElTIGEgPj4+IHN1YnN0aXR1dGlvbiwgd2UgaGF2ZSB0byBkbyBpdCBoZXJlOiB3ZQorICAgICAgICAvLyB1c2UgdGhlIHNwZWNpZmljIHJ1bGUncyBkb1BhcnNlKCkgbWV0aG9kLCBhbmQgdGhlbiB3ZSBoYXZlIHRvCisgICAgICAgIC8vIGRvIHNvbWUgb2YgdGhlIG90aGVyIHdvcmsgb2YgTkZSdWxlU2V0LnBhcnNlKCkKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIE51bWJlciB0ZW1wUmVzdWx0ID0gcnVsZVRvVXNlLmRvUGFyc2UodGV4dCwgcGFyc2VQb3NpdGlvbiwgZmFsc2UsIHVwcGVyQm91bmQpOworCisgICAgICAgICAgICBpZiAocGFyc2VQb3NpdGlvbi5nZXRJbmRleCgpICE9IDApIHsKKyAgICAgICAgICAgICAgICBkb3VibGUgcmVzdWx0ID0gdGVtcFJlc3VsdC5kb3VibGVWYWx1ZSgpOworCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gY29tcG9zZVJ1bGVWYWx1ZShyZXN1bHQsIGJhc2VWYWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSAobG9uZylyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBMb25nKChsb25nKXJlc3VsdCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEb3VibGUocmVzdWx0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiB0ZW1wUmVzdWx0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgaGlnaGVzdCBtdWx0aXBsZSBvZiB0aGUgcnVsZSdzIGRpdmlzb3IgdGhhdCBpdHMgbGVzcworICAgICAqIHRoYW4gb3IgZXF1YWwgdG8gb2xkUnVsZVZhbHVlLCBwbHVzIG5ld1J1bGVWYWx1ZS4gIChUaGUgcmVzdWx0CisgICAgICogaXMgdGhlIHN1bSBvZiB0aGUgcmVzdWx0IG9mIHBhcnNpbmcgdGhlIHN1YnN0aXR1dGlvbiBwbHVzIHRoZQorICAgICAqIGJhc2UgdmFsdWVvZiB0aGUgcnVsZSBjb250YWluaW5nIHRoZSBzdWJzdGl0dXRpb24sIGJ1dCBpZiB0aGUKKyAgICAgKiBvd25pbmcgcnVsZSdzIGJhc2UgdmFsdWUgaXNuJ3QgYW4gZXZlbiBtdWx0aXBsZSBvZiBpdHMgZGl2aXNvciwKKyAgICAgKiB3ZSBoYXZlIHRvIHJvdW5kIGl0IGRvd24gdG8gYSBtdWx0aXBsZSBvZiB0aGUgZGl2aXNvciwgb3Igd2UKKyAgICAgKiBnZXQgdW53YW50ZWQgZGlnaXRzIGluIHRoZSByZXN1bHQuKQorICAgICAqIEBwYXJhbSBuZXdSdWxlVmFsdWUgVGhlIHJlc3VsdCBvZiBwYXJzaW5nIHRoZSBzdWJzdGl0dXRpb24KKyAgICAgKiBAcGFyYW0gb2xkUnVsZVZhbHVlIFRoZSBiYXNlIHZhbHVlIG9mIHRoZSBydWxlIGNvbnRhaW5pbmcgdGhlCisgICAgICogc3Vic3RpdHV0aW9uCisgICAgICogQHJldHVybiAob2xkUnVsZVZhbHVlIC0gKG9sZFJ1bGVWYWx1ZSAlIGRpdmlzb3IpKSArIG5ld1J1bGVWYWx1ZQorICAgICAqLworICAgIHB1YmxpYyBkb3VibGUgY29tcG9zZVJ1bGVWYWx1ZShkb3VibGUgbmV3UnVsZVZhbHVlLCBkb3VibGUgb2xkUnVsZVZhbHVlKSB7CisgICAgICAgIHJldHVybiAob2xkUnVsZVZhbHVlIC0gKG9sZFJ1bGVWYWx1ZSAlIGRpdmlzb3IpKSArIG5ld1J1bGVWYWx1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSB1cHBlciBib3VuZCBkb3duIHRvIHRoZSBvd25pbmcgcnVsZSdzIGRpdmlzb3IKKyAgICAgKiBAcGFyYW0gb2xkVXBwZXJCb3VuZCBJZ25vcmVkCisgICAgICogQHJldHVybiBUaGUgb3duaW5nIHJ1bGUncyBkdmlzb3IKKyAgICAgKi8KKyAgICBwdWJsaWMgZG91YmxlIGNhbGNVcHBlckJvdW5kKGRvdWJsZSBvbGRVcHBlckJvdW5kKSB7CisgICAgICAgIHJldHVybiBkaXZpc29yOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBzaW1wbGUgYWNjZXNzb3JzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0cnVlLiAgVGhpcyBfaXNfIGEgTW9kdWx1c1N1YnN0aXR1dGlvbi4KKyAgICAgKiBAcmV0dXJuIHRydWUKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc01vZHVsdXNTdWJzdGl0dXRpb24oKSB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRoZSB0b2tlbiBjaGFyYWN0ZXIgb2YgYSBNb2R1bHVzU3Vic3RpdHV0aW9uIGlzICZndDsuCisgICAgICogQHJldHVybiAnJmd0OycKKyAgICAgKi8KKyAgICBjaGFyIHRva2VuQ2hhcigpIHsKKyAgICAgICAgcmV0dXJuICc+JzsKKyAgICB9Cit9CisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gSW50ZWdyYWxQYXJ0U3Vic3RpdHV0aW9uCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLyoqCisgKiBBIHN1YnN0aXR1dGlvbiB0aGF0IGZvcm1hdHMgdGhlIG51bWJlcidzIGludGVncmFsIHBhcnQuICBUaGlzIGlzCisgKiByZXByZXNlbnRlZCBieSAmbHQ7Jmx0OyBpbiBhIGZyYWN0aW9uIHJ1bGUuCisgKi8KK2NsYXNzIEludGVncmFsUGFydFN1YnN0aXR1dGlvbiBleHRlbmRzIE5GU3Vic3RpdHV0aW9uIHsKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gY29uc3RhbnRzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogUHV0cyBhIGNvcHlyaWdodCBpbiB0aGUgLmNsYXNzIGZpbGUKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0Tm90aWNlCisgICAgICAgID0gIkNvcHlyaWdodCBcdTAwYTkxOTk3LTE5OTggSUJNIENvcnAuICBBbGwgcmlnaHRzIHJlc2VydmVkLiI7CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gY29uc3RydWN0aW9uCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhbiBJbnRlZ3JhbFBhcnRTdWJzdGl0dXRpb24uICBUaGlzIGp1c3QgY2FsbHMKKyAgICAgKiB0aGUgc3VwZXJjbGFzcyBjb25zdHJ1Y3Rvci4KKyAgICAgKi8KKyAgICBJbnRlZ3JhbFBhcnRTdWJzdGl0dXRpb24oaW50IHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkZSdWxlU2V0IHJ1bGVTZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZE51bWJlckZvcm1hdCBmb3JtYXR0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBkZXNjcmlwdGlvbikgeworICAgICAgICBzdXBlcihwb3MsIHJ1bGVTZXQsIGZvcm1hdHRlciwgZGVzY3JpcHRpb24pOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBmb3JtYXR0aW5nCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgbnVtYmVyJ3MgaW50ZWdyYWwgcGFydC4gKEZvciBhIGxvbmcsIHRoYXQncyBqdXN0IHRoZQorICAgICAqIG51bWJlciB1bmNoYW5nZWQuKQorICAgICAqIEBwYXJhbSBudW1iZXIgVGhlIG51bWJlciBiZWluZyBmb3JtYXR0ZWQKKyAgICAgKiBAcmV0dXJuICJudW1iZXIiIHVuY2hhbmdlZAorICAgICAqLworICAgIHB1YmxpYyBsb25nIHRyYW5zZm9ybU51bWJlcihsb25nIG51bWJlcikgeworICAgICAgICByZXR1cm4gbnVtYmVyOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIG51bWJlcidzIGludGVncmFsIHBhcnQuCisgICAgICogQHBhcmFtIG51bWJlciBUaGUgaW50ZWdyYWwgcGFydCBvZiB0aGUgbnVtYmVyIGJlaW5nIGZvcm1hdHRlZAorICAgICAqIEByZXR1cm4gZmxvb3IobnVtYmVyKQorICAgICAqLworICAgIHB1YmxpYyBkb3VibGUgdHJhbnNmb3JtTnVtYmVyKGRvdWJsZSBudW1iZXIpIHsKKyAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IobnVtYmVyKTsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gcGFyc2luZworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIHN1bSBvZiB0aGUgcmVzdWx0IG9mIHBhcnNpbmcgdGhlIHN1YnN0aXR1dGlvbiBhbmQgdGhlCisgICAgICogb3duaW5nIHJ1bGUncyBiYXNlIHZhbHVlLiAgKFRoZSBvd25pbmcgcnVsZSwgYXQgYmVzdCwgaGFzIGFuCisgICAgICogaW50ZWdyYWwtcGFydCBzdWJzdGl0dXRpb24gYW5kIGEgZnJhY3Rpb25hbC1wYXJ0IHN1YnN0aXR1dGlvbiwKKyAgICAgKiBzbyB3ZSBjYW4gc2FmZWx5IGp1c3QgYWRkIHRoZW0uKQorICAgICAqIEBwYXJhbSBuZXdSdWxlVmFsdWUgVGhlIHJlc3VsdCBvZiBtYXRjaGluZyB0aGUgc3Vic3RpdHV0aW9uCisgICAgICogQHBhcmFtIG9sZFJ1bGVWYWx1ZSBUaGUgcGFydGlhbCByZXN1bHQgb2YgdGhlIHBhcnNlIHByaW9yIHRvCisgICAgICogY2FsbGluZyB0aGlzIGZ1bmN0aW9uCisgICAgICogQHJldHVybiBvbGRSdWxlVmFsdWUgKyBuZXdSdWxlVmFsdWUKKyAgICAgKi8KKyAgICBwdWJsaWMgZG91YmxlIGNvbXBvc2VSdWxlVmFsdWUoZG91YmxlIG5ld1J1bGVWYWx1ZSwgZG91YmxlIG9sZFJ1bGVWYWx1ZSkgeworICAgICAgICByZXR1cm4gbmV3UnVsZVZhbHVlICsgb2xkUnVsZVZhbHVlOworICAgIH0KKworICAgIC8qKgorICAgICAqIEFuIEludGVncmFsUGFydFN1YnN0aXR1dGlvbiBzZXRzIHRoZSB1cHBlciBib3VuZCBiYWNrIHVwIHNvIGFsbAorICAgICAqIHBvdGVudGlhbGx5IG1hdGNoaW5nIHJ1bGVzIGFyZSBjb25zaWRlcmVkLgorICAgICAqIEBwYXJhbSBvbGRVcHBlckJvdW5kIElnbm9yZWQKKyAgICAgKiBAcmV0dXJuIERvdWJsZS5NQVhfVkFMVUUKKyAgICAgKi8KKyAgICBwdWJsaWMgZG91YmxlIGNhbGNVcHBlckJvdW5kKGRvdWJsZSBvbGRVcHBlckJvdW5kKSB7CisgICAgICAgIHJldHVybiBEb3VibGUuTUFYX1ZBTFVFOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBzaW1wbGUgYWNjZXNzb3IKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBBbiBJbnRlZ3JhbFBhcnRTdWJzdGl0dXRpb24ncyB0b2tlbiBjaGFyYWN0ZXIgaXMgJmx0OworICAgICAqIEByZXR1cm4gJyZsdDsnCisgICAgICovCisgICAgY2hhciB0b2tlbkNoYXIoKSB7CisgICAgICAgIHJldHVybiAnPCc7CisgICAgfQorfQorCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIEZyYWN0aW9uYWxQYXJ0U3Vic3RpdHV0aW9uCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLyoqCisgKiBBIHN1YnN0aXR1dGlvbiB0aGF0IGZvcm1hdHMgdGhlIGZyYWN0aW9uYWwgcGFydCBvZiBhIG51bWJlci4gIFRoaXMgaXMKKyAqIHJlcHJlc2VudGVkIGJ5ICZndDsmZ3Q7IGluIGEgZnJhY3Rpb24gcnVsZS4KKyAqLworY2xhc3MgRnJhY3Rpb25hbFBhcnRTdWJzdGl0dXRpb24gZXh0ZW5kcyBORlN1YnN0aXR1dGlvbiB7CisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIGNvbnN0YW50cworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIFB1dHMgYSBjb3B5cmlnaHQgaW4gdGhlIC5jbGFzcyBmaWxlCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodE5vdGljZQorICAgICAgICA9ICJDb3B5cmlnaHQgXHUwMGE5MTk5Ny0xOTk4IElCTSBDb3JwLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4iOworCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIGRhdGEgbWVtYmVycworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIHRydWUgaWYgdGhpcyBzdWJzdGl0dXRpb24gc2hvdWxkIGhhdmUgdGhlIGRlZmF1bHQgImJ5IGRpZ2l0cyIKKyAgICAgKiBiZWhhdmlvciwgZmFsc2Ugb3RoZXJ3aXNlCisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIGJ5RGlnaXRzID0gZmFsc2U7CisKKyAgICAvKioKKyAgICAgKiB0cnVlIGlmIHdlIGF1dG9tYXRpY2FsbHkgaW5zZXJ0IHNwYWNlcyB0byBzZXBhcmF0ZSBuYW1lcyBvZiBkaWdpdHMKKyAgICAgKiBzZXQgdG8gZmFsc2UgYnkgJz4+PicgaW4gZnJhY3Rpb24gcnVsZXMsIHVzZWQgYnkgVGhhaS4KKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gdXNlU3BhY2VzID0gdHJ1ZTsKKworICAgIC8qKgorICAgICAqIFRoZSBsYXJnZXN0IG51bWJlciBvZiBkaWdpdHMgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQgdGhhdCB0aGlzCisgICAgICogb2JqZWN0IHdpbGwgc2hvdyBpbiAiYnkgZGlnaXRzIiBtb2RlCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1BWERFQ0lNQUxESUdJVFMgPSA4OworCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIGNvbnN0cnVjdGlvbgorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSBGcmFjdGlvbmFsUGFydFN1YnN0aXR1dGlvbi4gIFRoaXMgb2JqZWN0IGtlZXBzIGEgZmxhZworICAgICAqIHRlbGxpbmcgd2hldGhlciBpdCBzaG91bGQgZm9ybWF0IGJ5IGRpZ2l0cyBvciBub3QuICBJbiBhZGRpdGlvbiwKKyAgICAgKiBpdCBtYXJrcyB0aGUgcnVsZSBzZXQgaXQgY2FsbHMgKGlmIGFueSkgYXMgYSBmcmFjdGlvbiBydWxlIHNldC4KKyAgICAgKi8KKyAgICBGcmFjdGlvbmFsUGFydFN1YnN0aXR1dGlvbihpbnQgcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5GUnVsZVNldCBydWxlU2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZE51bWJlckZvcm1hdCBmb3JtYXR0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGRlc2NyaXB0aW9uKSB7CisgICAgICAgIHN1cGVyKHBvcywgcnVsZVNldCwgZm9ybWF0dGVyLCBkZXNjcmlwdGlvbik7CisgICAgICAgIGlmIChkZXNjcmlwdGlvbi5lcXVhbHMoIj4+IikgfHwgZGVzY3JpcHRpb24uZXF1YWxzKCI+Pj4iKSB8fCBydWxlU2V0ID09IHRoaXMucnVsZVNldCkgeworICAgICAgICAgICAgYnlEaWdpdHMgPSB0cnVlOworICAgICAgICAgICAgaWYgKGRlc2NyaXB0aW9uLmVxdWFscygiPj4+IikpIHsKKyAgICAgICAgICAgICAgdXNlU3BhY2VzID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aGlzLnJ1bGVTZXQubWFrZUludG9GcmFjdGlvblJ1bGVTZXQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBmb3JtYXR0aW5nCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogSWYgaW4gImJ5IGRpZ2l0cyIgbW9kZSwgZmlsbHMgaW4gdGhlIHN1YnN0aXR1dGlvbiBvbmUgZGVjaW1hbCBkaWdpdAorICAgICAqIGF0IGEgdGltZSB1c2luZyB0aGUgcnVsZSBzZXQgY29udGFpbmluZyB0aGlzIHN1YnN0aXR1dGlvbi4KKyAgICAgKiBPdGhlcndpc2UsIHVzZXMgdGhlIHN1cGVyY2xhc3MgZnVuY3Rpb24uCisgICAgICogQHBhcmFtIG51bWJlciBUaGUgbnVtYmVyIGJlaW5nIGZvcm1hdHRlZAorICAgICAqIEBwYXJhbSB0b0luc2VydEludG8gVGhlIHN0cmluZyB0byBpbnNlcnQgdGhlIHJlc3VsdCBvZiBmb3JtYXR0aW5nCisgICAgICogdGhlIHN1YnN0aXR1dGlvbiBpbnRvCisgICAgICogQHBhcmFtIHBvcyBUaGUgcG9zaXRpb24gb2YgdGhlIG93bmluZyBydWxlJ3MgcnVsZSB0ZXh0IGluCisgICAgICogdG9JbnNlcnRJbnRvCisgICAgICovCisgICAgcHVibGljIHZvaWQgZG9TdWJzdGl0dXRpb24oZG91YmxlIG51bWJlciwgU3RyaW5nQnVmZmVyIHRvSW5zZXJ0SW50bywgaW50IHBvcykgeworICAgICAgICAvLyBpZiB3ZSdyZSBub3QgaW4gImJ5RGlnaXRzIiBtb2RlLCBqdXN0IHVzZSB0aGUgaW5oZXJpdGVkCisgICAgICAgIC8vIGRvU3Vic3RpdHV0aW9uKCkgcm91dGluZQorICAgICAgICBpZiAoIWJ5RGlnaXRzKSB7CisgICAgICAgICAgICBzdXBlci5kb1N1YnN0aXR1dGlvbihudW1iZXIsIHRvSW5zZXJ0SW50bywgcG9zKTsKKworICAgICAgICAvLyBpZiB3ZSdyZSBpbiAiYnlEaWdpdHMiIG1vZGUsIHRyYW5zZm9ybSB0aGUgdmFsdWUgaW50byBhbiBpbnRlZ2VyCisgICAgICAgIC8vIGJ5IG1vdmluZyB0aGUgZGVjaW1hbCBwb2ludCBlaWdodCBwbGFjZXMgdG8gdGhlIHJpZ2h0IGFuZAorICAgICAgICAvLyBwdWxsaW5nIGRpZ2l0cyBvZmYgdGhlIHJpZ2h0IG9uZSBhdCBhIHRpbWUsIGZvcm1hdHRpbmcgZWFjaCBkaWdpdAorICAgICAgICAvLyBhcyBhbiBpbnRlZ2VyIHVzaW5nIHRoaXMgc3Vic3RpdHV0aW9uJ3Mgb3duaW5nIHJ1bGUgc2V0CisgICAgICAgIC8vICh0aGlzIGlzIHNsb3dlciwgYnV0IG1vcmUgYWNjdXJhdGUsIHRoYW4gZG9pbmcgaXQgZnJvbSB0aGUKKyAgICAgICAgLy8gb3RoZXIgZW5kKQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaW50IG51bWJlclRvRm9ybWF0ID0gKGludClNYXRoLnJvdW5kKHRyYW5zZm9ybU51bWJlcihudW1iZXIpICogTWF0aC5wb3coCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAsIE1BWERFQ0lNQUxESUdJVFMpKTsKKyAgICAgICAgICAgIC8vIHRoaXMgZmxhZyBrZWVwcyB1cyBmcm9tIGZvcm1hdHRpbmcgdHJhaWxpbmcgemVyb3MuICBJdCBzdGFydHMKKyAgICAgICAgICAgIC8vIG91dCBmYWxzZSBiZWNhdXNlIHdlJ3JlIHB1bGxpbmcgZnJvbSB0aGUgcmlnaHQsIGFuZCBzd2l0Y2hlcworICAgICAgICAgICAgLy8gdG8gdHJ1ZSB0aGUgZmlyc3QgdGltZSB3ZSBlbmNvdW50ZXIgYSBub24temVybyBkaWdpdAorICAgICAgICAgICAgYm9vbGVhbiBkb1plcm9zID0gZmFsc2U7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE1BWERFQ0lNQUxESUdJVFM7IGkrKykgeworICAgICAgICAgICAgICAgIGludCBkaWdpdCA9IG51bWJlclRvRm9ybWF0ICUgMTA7CisgICAgICAgICAgICAgICAgaWYgKGRpZ2l0ICE9IDAgfHwgZG9aZXJvcykgeworICAgICAgICAgICAgICAgICAgICBpZiAoZG9aZXJvcyAmJiB1c2VTcGFjZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvSW5zZXJ0SW50by5pbnNlcnQocG9zICsgdGhpcy5wb3MsICcgJyk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZG9aZXJvcyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIHJ1bGVTZXQuZm9ybWF0KGRpZ2l0LCB0b0luc2VydEludG8sIHBvcyArIHRoaXMucG9zKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbnVtYmVyVG9Gb3JtYXQgLz0gMTA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBmcmFjdGlvbmFsIHBhcnQgb2YgdGhlIG51bWJlciwgd2hpY2ggd2lsbCBhbHdheXMgYmUKKyAgICAgKiB6ZXJvIGlmIGl0J3MgYSBsb25nLgorICAgICAqIEBwYXJhbSBudW1iZXIgVGhlIG51bWJlciBiZWluZyBmb3JtYXR0ZWQKKyAgICAgKiBAcmV0dXJuIDAKKyAgICAgKi8KKyAgICBwdWJsaWMgbG9uZyB0cmFuc2Zvcm1OdW1iZXIobG9uZyBudW1iZXIpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgZnJhY3Rpb25hbCBwYXJ0IG9mIHRoZSBudW1iZXIuCisgICAgICogQHBhcmFtIG51bWJlciBUaGUgbnVtYmVyIGJlaW5nIGZvcm1hdHRlZC4KKyAgICAgKiBAcmV0dXJuIG51bWJlciAtIGZsb29yKG51bWJlcikKKyAgICAgKi8KKyAgICBwdWJsaWMgZG91YmxlIHRyYW5zZm9ybU51bWJlcihkb3VibGUgbnVtYmVyKSB7CisgICAgICAgIHJldHVybiBudW1iZXIgLSBNYXRoLmZsb29yKG51bWJlcik7CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIHBhcnNpbmcKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBJZiBpbiAiYnkgZGlnaXRzIiBtb2RlLCBwYXJzZXMgdGhlIHN0cmluZyBhcyBpZiBpdCB3ZXJlIGEgc3RyaW5nCisgICAgICogb2YgaW5kaXZpZHVhbCBkaWdpdHM7IG90aGVyd2lzZSwgdXNlcyB0aGUgc3VwZXJjbGFzcyBmdW5jdGlvbi4KKyAgICAgKiBAcGFyYW0gdGV4dCBUaGUgc3RyaW5nIHRvIHBhcnNlCisgICAgICogQHBhcmFtIHBhcnNlUG9zaXRpb24gSWdub3JlZCBvbiBlbnRyeSwgYnV0IHVwZGF0ZWQgb24gZXhpdCB0byBwb2ludAorICAgICAqIHRvIHRoZSBmaXJzdCB1bm1hdGNoZWQgY2hhcmFjdGVyCisgICAgICogQHBhcmFtIGJhc2VWYWx1ZSBUaGUgcGFydGlhbCBwYXJzZSByZXN1bHQgcHJpb3IgdG8gZW50ZXJpbmcgdGhpcworICAgICAqIGZ1bmN0aW9uCisgICAgICogQHBhcmFtIHVwcGVyQm91bmQgT25seSBjb25zaWRlciBydWxlcyB3aXRoIGJhc2UgdmFsdWVzIGxvd2VyIHRoYW4KKyAgICAgKiB0aGlzIHdoZW4gZmlsbGluZyBpbiB0aGUgc3Vic3RpdHV0aW9uCisgICAgICogQHBhcmFtIGxlbmllbnRQYXJzZSBJZiB0cnVlLCB0cnkgbWF0Y2hpbmcgdGhlIHRleHQgYXMgbnVtZXJhbHMgaWYKKyAgICAgKiBtYXRjaGluZyBhcyB3b3JkcyBkb2Vzbid0IHdvcmsKKyAgICAgKiBAcmV0dXJuIElmIHRoZSBtYXRjaCB3YXMgc3VjY2Vzc2Z1bCwgdGhlIGN1cnJlbnQgcGFydGlhbCBwYXJzZQorICAgICAqIHJlc3VsdDsgb3RoZXJ3aXNlIG5ldyBMb25nKDApLiAgVGhlIHJlc3VsdCBpcyBlaXRoZXIgYSBMb25nIG9yCisgICAgICogYSBEb3VibGUuCisgICAgICovCisgICAgcHVibGljIE51bWJlciBkb1BhcnNlKFN0cmluZyB0ZXh0LCBQYXJzZVBvc2l0aW9uIHBhcnNlUG9zaXRpb24sIGRvdWJsZSBiYXNlVmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgdXBwZXJCb3VuZCwgYm9vbGVhbiBsZW5pZW50UGFyc2UpIHsKKyAgICAgICAgLy8gaWYgd2UncmUgbm90IGluIGJ5RGlnaXRzIG1vZGUsIHdlIGNhbiBqdXN0IHVzZSB0aGUgaW5oZXJpdGVkCisgICAgICAgIC8vIGRvUGFyc2UoKQorICAgICAgICBpZiAoIWJ5RGlnaXRzKSB7CisgICAgICAgICAgICByZXR1cm4gc3VwZXIuZG9QYXJzZSh0ZXh0LCBwYXJzZVBvc2l0aW9uLCBiYXNlVmFsdWUsIDAsIGxlbmllbnRQYXJzZSk7CisKKyAgICAgICAgLy8gaWYgd2UgQVJFIGluIGJ5RGlnaXRzIG1vZGUsIHBhcnNlIHRoZSB0ZXh0IG9uZSBkaWdpdCBhdCBhIHRpbWUKKyAgICAgICAgLy8gdXNpbmcgdGhpcyBzdWJzdGl0dXRpb24ncyBvd25pbmcgcnVsZSBzZXQgKHdlIGRvIHRoaXMgYnkgc2V0dGluZworICAgICAgICAvLyB1cHBlckJvdW5kIHRvIDEwIHdoZW4gY2FsbGluZyBkb1BhcnNlKCkgKSB1bnRpbCB3ZSByZWFjaAorICAgICAgICAvLyBub25tYXRjaGluZyB0ZXh0CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBTdHJpbmcgd29ya1RleHQgPSBuZXcgU3RyaW5nKHRleHQpOworICAgICAgICAgICAgUGFyc2VQb3NpdGlvbiB3b3JrUG9zID0gbmV3IFBhcnNlUG9zaXRpb24oMSk7CisgICAgICAgICAgICBkb3VibGUgcmVzdWx0ID0gMDsKKyAgICAgICAgICAgIGludCBkaWdpdDsKKyAgICAgICAgICAgIGRvdWJsZSBwMTAgPSAwLjE7CisKKyAgICAgICAgICAgIHdoaWxlICh3b3JrVGV4dC5sZW5ndGgoKSA+IDAgJiYgd29ya1Bvcy5nZXRJbmRleCgpICE9IDApIHsKKyAgICAgICAgICAgICAgICB3b3JrUG9zLnNldEluZGV4KDApOworICAgICAgICAgICAgICAgIGRpZ2l0ID0gcnVsZVNldC5wYXJzZSh3b3JrVGV4dCwgd29ya1BvcywgMTApLmludFZhbHVlKCk7CisgICAgICAgICAgICAgICAgaWYgKGxlbmllbnRQYXJzZSAmJiB3b3JrUG9zLmdldEluZGV4KCkgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICBkaWdpdCA9IE51bWJlckZvcm1hdC5nZXRJbnN0YW5jZSgpLnBhcnNlKHdvcmtUZXh0LCB3b3JrUG9zKS5pbnRWYWx1ZSgpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmICh3b3JrUG9zLmdldEluZGV4KCkgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gZGlnaXQgKiBwMTA7CisgICAgICAgICAgICAgICAgICAgIHAxMCAvPSAxMDsKKyAgICAgICAgICAgICAgICAgICAgcGFyc2VQb3NpdGlvbi5zZXRJbmRleChwYXJzZVBvc2l0aW9uLmdldEluZGV4KCkgKyB3b3JrUG9zLmdldEluZGV4KCkpOworICAgICAgICAgICAgICAgICAgICB3b3JrVGV4dCA9IHdvcmtUZXh0LnN1YnN0cmluZyh3b3JrUG9zLmdldEluZGV4KCkpOworICAgICAgICAgICAgICAgICAgICB3aGlsZSAod29ya1RleHQubGVuZ3RoKCkgPiAwICYmIHdvcmtUZXh0LmNoYXJBdCgwKSA9PSAnICcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtUZXh0ID0gd29ya1RleHQuc3Vic3RyaW5nKDEpOworICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VQb3NpdGlvbi5zZXRJbmRleChwYXJzZVBvc2l0aW9uLmdldEluZGV4KCkgKyAxKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJlc3VsdCA9IGNvbXBvc2VSdWxlVmFsdWUocmVzdWx0LCBiYXNlVmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIG5ldyBEb3VibGUocmVzdWx0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIHN1bSBvZiB0aGUgdHdvIHBhcnRpYWwgcGFyc2UgcmVzdWx0cy4KKyAgICAgKiBAcGFyYW0gbmV3UnVsZVZhbHVlIFRoZSByZXN1bHQgb2YgcGFyc2luZyB0aGUgc3Vic3RpdHV0aW9uCisgICAgICogQHBhcmFtIG9sZFJ1bGVWYWx1ZSBUaGUgcGFydGlhbCBwYXJzZSByZXN1bHQgcHJpb3IgdG8gY2FsbGluZworICAgICAqIHRoaXMgZnVuY3Rpb24KKyAgICAgKiBAcmV0dXJuIG5ld1J1bGVWYWx1ZSArIG9sZFJ1bGVWYWx1ZQorICAgICAqLworICAgIHB1YmxpYyBkb3VibGUgY29tcG9zZVJ1bGVWYWx1ZShkb3VibGUgbmV3UnVsZVZhbHVlLCBkb3VibGUgb2xkUnVsZVZhbHVlKSB7CisgICAgICAgIHJldHVybiBuZXdSdWxlVmFsdWUgKyBvbGRSdWxlVmFsdWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogTm90IHVzZWQuCisgICAgICovCisgICAgcHVibGljIGRvdWJsZSBjYWxjVXBwZXJCb3VuZChkb3VibGUgb2xkVXBwZXJCb3VuZCkgeworICAgICAgICByZXR1cm4gMDsgICAvLyB0aGlzIHZhbHVlIGlzIGlnbm9yZWQKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gc2ltcGxlIGFjY2Vzc29yCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogVGhlIHRva2VuIGNoYXJhY3RlciBmb3IgYSBGcmFjdGlvbmFsUGFydFN1YnN0aXR1dGlvbiBpcyAmZ3Q7LgorICAgICAqIEByZXR1cm4gJyZndDsnCisgICAgICovCisgICAgY2hhciB0b2tlbkNoYXIoKSB7CisgICAgICAgIHJldHVybiAnPic7CisgICAgfQorfQorCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIEFic29sdXRlVmFsdWVTdWJzdGl0dXRpb24KKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgLyoqCisgICogQSBzdWJzdGl0dXRpb24gdGhhdCBmb3JtYXRzIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgbnVtYmVyLgorICAqIFRoaXMgc3Vic3RpdGlvbiBpcyByZXByZXNlbnRlZCBieSAmZ3Q7Jmd0OyBpbiBhIG5lZ2F0aXZlLW51bWJlciBydWxlLgorICAqLworY2xhc3MgQWJzb2x1dGVWYWx1ZVN1YnN0aXR1dGlvbiBleHRlbmRzIE5GU3Vic3RpdHV0aW9uIHsKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gY29uc3RhbnRzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogUHV0cyBhIGNvcHlyaWdodCBpbiB0aGUgLmNsYXNzIGZpbGUKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0Tm90aWNlCisgICAgICAgID0gIkNvcHlyaWdodCBcdTAwYTkxOTk3LTE5OTggSUJNIENvcnAuICBBbGwgcmlnaHRzIHJlc2VydmVkLiI7CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gY29uc3RydWN0aW9uCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhbiBBYnNvbHV0ZVZhbHVlU3Vic3RpdHV0aW9uLiAgVGhpcyBqdXN0IHVzZXMgdGhlCisgICAgICogc3VwZXJjbGFzcyBjb25zdHJ1Y3Rvci4KKyAgICAgKi8KKyAgICBBYnNvbHV0ZVZhbHVlU3Vic3RpdHV0aW9uKGludCBwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORlJ1bGVTZXQgcnVsZVNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZE51bWJlckZvcm1hdCBmb3JtYXR0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZGVzY3JpcHRpb24pIHsKKyAgICAgICAgc3VwZXIocG9zLCBydWxlU2V0LCBmb3JtYXR0ZXIsIGRlc2NyaXB0aW9uKTsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gZm9ybWF0dGluZworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBudW1iZXIuCisgICAgICogQHBhcmFtIG51bWJlciBUaGUgbnVtYmVyIGJlaW5nIGZvcm1hdHRlZC4KKyAgICAgKiBAcmV0dXJuIGFicyhudW1iZXIpCisgICAgICovCisgICAgcHVibGljIGxvbmcgdHJhbnNmb3JtTnVtYmVyKGxvbmcgbnVtYmVyKSB7CisgICAgICAgIHJldHVybiBNYXRoLmFicyhudW1iZXIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBudW1iZXIuCisgICAgICogQHBhcmFtIG51bWJlciBUaGUgbnVtYmVyIGJlaW5nIGZvcm1hdHRlZC4KKyAgICAgKiBAcmV0dXJuIGFicyhudW1iZXIpCisgICAgICovCisgICAgcHVibGljIGRvdWJsZSB0cmFuc2Zvcm1OdW1iZXIoZG91YmxlIG51bWJlcikgeworICAgICAgICByZXR1cm4gTWF0aC5hYnMobnVtYmVyKTsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gcGFyc2luZworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGFkZHRpdmUgaW52ZXJzZSBvZiB0aGUgcmVzdWx0IG9mIHBhcnNpbmcgdGhlCisgICAgICogc3Vic3RpdHV0aW9uICh0aGlzIHN1cGVyc2VkZXMgdGhlIGVhcmxpZXIgcGFydGlhbCByZXN1bHQpCisgICAgICogQHBhcmFtIG5ld1J1bGVWYWx1ZSBUaGUgcmVzdWx0IG9mIHBhcnNpbmcgdGhlIHN1YnN0aXR1dGlvbgorICAgICAqIEBwYXJhbSBvbGRSdWxlVmFsdWUgVGhlIHBhcnRpYWwgcGFyc2UgcmVzdWx0IHByaW9yIHRvIGNhbGxpbmcKKyAgICAgKiB0aGlzIGZ1bmN0aW9uCisgICAgICogQHJldHVybiAtbmV3UnVsZVZhbHVlCisgICAgICovCisgICAgcHVibGljIGRvdWJsZSBjb21wb3NlUnVsZVZhbHVlKGRvdWJsZSBuZXdSdWxlVmFsdWUsIGRvdWJsZSBvbGRSdWxlVmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIC1uZXdSdWxlVmFsdWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgdXBwZXIgYm91bmQgYmVjayB1cCB0byBjb25zaWRlciBhbGwgcnVsZXMKKyAgICAgKiBAcGFyYW0gb2xkVXBwZXJCb3VuZCBJZ25vcmVkLgorICAgICAqIEByZXR1cm4gRG91YmxlLk1BWF9WQUxVRQorICAgICAqLworICAgIHB1YmxpYyBkb3VibGUgY2FsY1VwcGVyQm91bmQoZG91YmxlIG9sZFVwcGVyQm91bmQpIHsKKyAgICAgICAgcmV0dXJuIERvdWJsZS5NQVhfVkFMVUU7CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIHNpbXBsZSBhY2Nlc3NvcgorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIFRoZSB0b2tlbiBjaGFyYWN0ZXIgZm9yIGFuIEFic29sdXRlVmFsdWVTdWJzdGl0dXRpb24gaXMgJmd0OworICAgICAqIEByZXR1cm4gJyZndDsnCisgICAgICovCisgICAgY2hhciB0b2tlbkNoYXIoKSB7CisgICAgICAgIHJldHVybiAnPic7CisgICAgfQorfQorCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIE51bWVyYXRvclN1YnN0aXR1dGlvbgorLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy8qKgorICogQSBzdWJzdGl0dXRpb24gdGhhdCBtdWx0aXBsaWVzIHRoZSBudW1iZXIgYmVpbmcgZm9ybWF0dGVkICh3aGljaCBpcworICogYmV0d2VlbiAwIGFuZCAxKSBieSB0aGUgYmFzZSB2YWx1ZSBvZiB0aGUgcnVsZSB0aGF0IG93bnMgaXQgYW5kCisgKiBmb3JtYXRzIHRoZSByZXN1bHQuICBJdCBpcyByZXByZXNlbnRlZCBieSAmbHQ7Jmx0OyBpbiB0aGUgcnVsZXMKKyAqIGluIGEgZnJhY3Rpb24gcnVsZSBzZXQuCisgKi8KK2NsYXNzIE51bWVyYXRvclN1YnN0aXR1dGlvbiBleHRlbmRzIE5GU3Vic3RpdHV0aW9uIHsKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gY29uc3RhbnRzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogUHV0cyBhIGNvcHlyaWdodCBpbiB0aGUgLmNsYXNzIGZpbGUKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0Tm90aWNlCisgICAgICAgID0gIkNvcHlyaWdodCBcdTAwYTkxOTk3LTE5OTggSUJNIENvcnAuICBBbGwgcmlnaHRzIHJlc2VydmVkLiI7CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gZGF0YSBtZW1iZXJzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogVGhlIGRlbm9taW5hdG9yIG9mIHRoZSBmcmFjdGlvbiB3ZSdyZSBmaW5kaW5nIHRoZSBudW1lcmF0b3IgZm9yLgorICAgICAqIChUaGUgYmFzZSB2YWx1ZSBvZiB0aGUgcnVsZSB0aGF0IG93bnMgdGhpcyBzdWJzdGl0dXRpb24uKQorICAgICAqLworICAgIGRvdWJsZSBkZW5vbWluYXRvcjsKKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBjb25zdHJ1Y3Rpb24KKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgTnVtYmVyYXRvclN1YnN0aXR1dGlvbi4gIEluIGFkZGl0aW9uIHRvIHRoZSBpbmhlcml0ZWQKKyAgICAgKiBmaWVsZHMsIGEgTnVtZXJhdG9yU3Vic3RpdHV0aW9uIGtlZXBzIHRyYWNrIG9mIGEgZGVub21pbmF0b3IsIHdoaWNoCisgICAgICogaXMgbWVyZWx5IHRoZSBiYXNlIHZhbHVlIG9mIHRoZSBydWxlIHRoYXQgb3ducyBpdC4KKyAgICAgKi8KKyAgICBOdW1lcmF0b3JTdWJzdGl0dXRpb24oaW50IHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRlbm9taW5hdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBORlJ1bGVTZXQgcnVsZVNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkTnVtYmVyRm9ybWF0IGZvcm1hdHRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGRlc2NyaXB0aW9uKSB7CisgICAgICAgIHN1cGVyKHBvcywgcnVsZVNldCwgZm9ybWF0dGVyLCBkZXNjcmlwdGlvbik7CisKKyAgICAgICAgLy8gdGhpcyBzdWJzdGl0dXRpb24ncyBiZWhhdmlvciBkZXBlbmRzIG9uIHRoZSBydWxlJ3MgYmFzZSB2YWx1ZQorICAgICAgICAvLyBSYXRoZXIgdGhhbiBrZWVwaW5nIGEgYmFja3BvaW50ZXIgdG8gdGhlIHJ1bGUsIHdlIGNvcHkgaXRzCisgICAgICAgIC8vIGJhc2UgdmFsdWUgaGVyZQorICAgICAgICB0aGlzLmRlbm9taW5hdG9yID0gZGVub21pbmF0b3I7CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIGJvaWxlcnBsYXRlCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogVGVzdHMgdHdvIE51bWVyYXRvclN1YnN0aXR1dGlvbnMgZm9yIGVxdWFsaXR5CisgICAgICogQHBhcmFtIHRoYXQgVGhlIG90aGVyIE51bWVyYXRvclN1YnN0aXR1dGlvbgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgdHdvIG9iamVjdHMgYXJlIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50CisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCB0aGF0KSB7CisgICAgICAgIGlmIChzdXBlci5lcXVhbHModGhhdCkpIHsKKyAgICAgICAgICAgIE51bWVyYXRvclN1YnN0aXR1dGlvbiB0aGF0MiA9IChOdW1lcmF0b3JTdWJzdGl0dXRpb24pdGhhdDsKKyAgICAgICAgICAgIHJldHVybiBkZW5vbWluYXRvciA9PSB0aGF0Mi5kZW5vbWluYXRvcjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBmb3JtYXR0aW5nCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgbnVtYmVyIGJlaW5nIGZvcm1hdHRlZCB0aW1lcyB0aGUgZGVub21pbmF0b3IuCisgICAgICogQHBhcmFtIG51bWJlciBUaGUgbnVtYmVyIGJlaW5nIGZvcm1hdHRlZAorICAgICAqIEByZXR1cm4gbnVtYmVyICogZGVub21pbmF0b3IKKyAgICAgKi8KKyAgICBwdWJsaWMgbG9uZyB0cmFuc2Zvcm1OdW1iZXIobG9uZyBudW1iZXIpIHsKKyAgICAgICAgcmV0dXJuIE1hdGgucm91bmQobnVtYmVyICogZGVub21pbmF0b3IpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIG51bWJlciBiZWluZyBmb3JtYXR0ZWQgdGltZXMgdGhlIGRlbm9taW5hdG9yLgorICAgICAqIEBwYXJhbSBudW1iZXIgVGhlIG51bWJlciBiZWluZyBmb3JtYXR0ZWQKKyAgICAgKiBAcmV0dXJuIG51bWJlciAqIGRlbm9taW5hdG9yCisgICAgICovCisgICAgcHVibGljIGRvdWJsZSB0cmFuc2Zvcm1OdW1iZXIoZG91YmxlIG51bWJlcikgeworICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChudW1iZXIgKiBkZW5vbWluYXRvcik7CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIHBhcnNpbmcKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBEaXNwYXRjaGVzIHRvIHRoZSBpbmhlcml0ZWQgdmVyc2lvbiBvZiB0aGlzIGZ1bmN0aW9uLCBidXQgbWFrZXMKKyAgICAgKiBzdXJlIHRoYXQgbGVuaWVudFBhcnNlIGlzIG9mZi4KKyAgICAgKi8KKyAgICBwdWJsaWMgTnVtYmVyIGRvUGFyc2UoU3RyaW5nIHRleHQsIFBhcnNlUG9zaXRpb24gcGFyc2VQb3NpdGlvbiwgZG91YmxlIGJhc2VWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSB1cHBlckJvdW5kLCBib29sZWFuIGxlbmllbnRQYXJzZSkgeworICAgICAgICAvLyB3ZSBkb24ndCBoYXZlIHRvIGRvIGFueXRoaW5nIHNwZWNpYWwgdG8gZG8gdGhlIHBhcnNpbmcgaGVyZSwKKyAgICAgICAgLy8gYnV0IHdlIGhhdmUgdG8gdHVybiBsZW5pZW50IHBhcnNpbmcgb2ZmLS0gaWYgd2UgbGVhdmUgaXQgb24sCisgICAgICAgIC8vIGl0IFNFUklPVVNMWSBtZXNzZXMgdXAgdGhlIGFsZ29yaXRobQorICAgICAgICByZXR1cm4gc3VwZXIuZG9QYXJzZSh0ZXh0LCBwYXJzZVBvc2l0aW9uLCBiYXNlVmFsdWUsIHVwcGVyQm91bmQsIGZhbHNlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEaXZpZGVzIHRoZSByZXN1bHQgb2YgcGFyc2luZyB0aGUgc3Vic3RpdHV0aW9uIGJ5IHRoZSBwYXJ0aWFsCisgICAgICogcGFyc2UgcmVzdWx0LgorICAgICAqIEBwYXJhbSBuZXdSdWxlVmFsdWUgVGhlIHJlc3VsdCBvZiBwYXJzaW5nIHRoZSBzdWJzdGl0dXRpb24KKyAgICAgKiBAcGFyYW0gb2xkUnVsZVZhbHVlIFRoZSBvd25pbmcgcnVsZSdzIGJhc2UgdmFsdWUKKyAgICAgKiBAcmV0dXJuIG5ld1J1bGVWYWx1ZSAvIG9sZFJ1bGVWYWx1ZQorICAgICAqLworICAgIHB1YmxpYyBkb3VibGUgY29tcG9zZVJ1bGVWYWx1ZShkb3VibGUgbmV3UnVsZVZhbHVlLCBkb3VibGUgb2xkUnVsZVZhbHVlKSB7CisgICAgICAgIHJldHVybiBuZXdSdWxlVmFsdWUgLyBvbGRSdWxlVmFsdWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgdXBlciBib3VuZCBkb3duIHRvIHRoaXMgcnVsZSdzIGJhc2UgdmFsdWUKKyAgICAgKiBAcGFyYW0gb2xkVXBwZXJCb3VuZCBJZ25vcmVkCisgICAgICogQHJldHVybiBUaGUgYmFzZSB2YWx1ZSBvZiB0aGUgcnVsZSBvd25pbmcgdGhpcyBzdWJzdGl0dXRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgZG91YmxlIGNhbGNVcHBlckJvdW5kKGRvdWJsZSBvbGRVcHBlckJvdW5kKSB7CisgICAgICAgIHJldHVybiBkZW5vbWluYXRvcjsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gc2ltcGxlIGFjY2Vzc29yCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogVGhlIHRva2VuIGNoYXJhY3RlciBmb3IgYSBOdW1lcmF0b3JTdWJzdGl0dXRpb24gaXMgJmx0OworICAgICAqIEByZXR1cm4gJyZsdDsnCisgICAgICovCisgICAgY2hhciB0b2tlbkNoYXIoKSB7CisgICAgICAgIHJldHVybiAnPCc7CisgICAgfQorfQorCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIE51bGxTdWJzdGl0dXRpb24KKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisvKioKKyAqIEEgc3Vic3RpdHV0aW9uIHdoaWNoIGRvZXMgbm90aGluZy4gIFRoaXMgY2xhc3MgZXhpc3RzIGp1c3QgdG8gc2ltcGxpZnkKKyAqIHRoZSBsb2dpYyBpbiBzb21lIG90aGVyIHJvdXRpbmVzIHNvIHRoYXQgdGhleSBkb24ndCBoYXZlIHRvIHdvcnJ5CisgKiBhYm91dCBob3cgbWFueSBzdWJzdGl0dXRpb25zIGEgcnVsZSBoYXMuCisgKi8KK2NsYXNzIE51bGxTdWJzdGl0dXRpb24gZXh0ZW5kcyBORlN1YnN0aXR1dGlvbiB7CisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIGNvbnN0YW50cworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIFB1dHMgYSBjb3B5cmlnaHQgaW4gdGhlIC5jbGFzcyBmaWxlCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodE5vdGljZQorICAgICAgICA9ICJDb3B5cmlnaHQgXHUwMGE5MTk5Ny0xOTk4IElCTSBDb3JwLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4iOworCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIGNvbnN0cnVjdGlvbgorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSBOdWxsU3Vic3RpdHV0aW9uLiAgVGhpcyBqdXN0IGRlbGVnYXRlcyB0byB0aGUgc3VwZXJjbGFzcworICAgICAqIGNvbnN0cnVjdG9yLCBidXQgdGhlIG9ubHkgdmFsdWUgd2UgcmVhbGx5IGNhcmUgYWJvdXQgaXMgdGhlIHBvc2l0aW9uLgorICAgICAqLworICAgIE51bGxTdWJzdGl0dXRpb24oaW50IHBvcywKKyAgICAgICAgICAgICAgICAgICAgIE5GUnVsZVNldCBydWxlU2V0LAorICAgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkTnVtYmVyRm9ybWF0IGZvcm1hdHRlciwKKyAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBkZXNjcmlwdGlvbikgeworICAgICAgICBzdXBlcihwb3MsIHJ1bGVTZXQsIGZvcm1hdHRlciwgZGVzY3JpcHRpb24pOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBib2lsZXJwbGF0ZQorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIE9ubHkgY2hlY2tzIGZvciBjbGFzcyBlcXVhbGl0eQorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3QgdGhhdCkgeworICAgICAgICByZXR1cm4gc3VwZXIuZXF1YWxzKHRoYXQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIE51bGxTdWJzdGl0dXRpb25zIGRvbid0IHNob3cgdXAgaW4gdGhlIHRleHR1YWwgcmVwcmVzZW50YXRpb24KKyAgICAgKiBvZiBhIFJ1bGVCYXNlZE51bWJlckZvcm1hdAorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgIHJldHVybiAiIjsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gZm9ybWF0dGluZworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIERvZXMgbm90aGluZy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBkb1N1YnN0aXR1dGlvbihsb25nIG51bWJlciwgU3RyaW5nQnVmZmVyIHRvSW5zZXJ0SW50bywgaW50IHBvcykgeworICAgIH0KKworICAgIC8qKgorICAgICAqIERvZXMgbm90aGluZy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBkb1N1YnN0aXR1dGlvbihkb3VibGUgbnVtYmVyLCBTdHJpbmdCdWZmZXIgdG9JbnNlcnRJbnRvLCBpbnQgcG9zKSB7CisgICAgfQorCisgICAgLyoqCisgICAgICogTmV2ZXIgY2FsbGVkLgorICAgICAqLworICAgIC8vL0NMT1ZFUjpPRkYKKyAgICBwdWJsaWMgbG9uZyB0cmFuc2Zvcm1OdW1iZXIobG9uZyBudW1iZXIpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIC8vL0NMT1ZFUjpPTgorCisgICAgLyoqCisgICAgICogTmV2ZXIgY2FsbGVkLgorICAgICAqLworICAgIC8vL0NMT1ZFUjpPRkYKKyAgICBwdWJsaWMgZG91YmxlIHRyYW5zZm9ybU51bWJlcihkb3VibGUgbnVtYmVyKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICAvLy9DTE9WRVI6T04KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBwYXJzaW5nCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgcGFydGlhbCBwYXJzZSByZXN1bHQgdW5jaGFuZ2VkCisgICAgICovCisgICAgcHVibGljIE51bWJlciBkb1BhcnNlKFN0cmluZyB0ZXh0LCBQYXJzZVBvc2l0aW9uIHBhcnNlUG9zaXRpb24sIGRvdWJsZSBiYXNlVmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgdXBwZXJCb3VuZCwgYm9vbGVhbiBsZW5pZW50UGFyc2UpIHsKKyAgICAgICAgaWYgKGJhc2VWYWx1ZSA9PSAobG9uZyliYXNlVmFsdWUpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgTG9uZygobG9uZyliYXNlVmFsdWUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBEb3VibGUoYmFzZVZhbHVlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIE5ldmVyIGNhbGxlZC4KKyAgICAgKi8KKyAgICAvLy9DTE9WRVI6T0ZGCisgICAgcHVibGljIGRvdWJsZSBjb21wb3NlUnVsZVZhbHVlKGRvdWJsZSBuZXdSdWxlVmFsdWUsIGRvdWJsZSBvbGRSdWxlVmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIC8vL0NMT1ZFUjpPTgorCisgICAgLyoqCisgICAgICogTmV2ZXIgY2FsbGVkLgorICAgICAqLworICAgIC8vL0NMT1ZFUjpPRkYKKyAgICBwdWJsaWMgZG91YmxlIGNhbGNVcHBlckJvdW5kKGRvdWJsZSBvbGRVcHBlckJvdW5kKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICAvLy9DTE9WRVI6T04KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBzaW1wbGUgYWNjZXNzb3JzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0cnVlICh0aGlzIF9pc18gYSBOdWxsU3Vic3RpdHV0aW9uKS4KKyAgICAgKiBAcmV0dXJuIHRydWUKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc051bGxTdWJzdGl0dXRpb24oKSB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8qKgorICAgICAqIE5ldmVyIGNhbGxlZC4KKyAgICAgKi8KKyAgICAvLy9DTE9WRVI6T0ZGCisgICAgY2hhciB0b2tlbkNoYXIoKSB7CisgICAgICAgIHJldHVybiAnICc7CisgICAgfQorICAgIC8vL0NMT1ZFUjpPTgorfQorCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvdGV4dC9OYW1lVW5pY29kZVRyYW5zbGl0ZXJhdG9yLmphdmEgYi9zcmMvY29tL2libS9pY3UvdGV4dC9OYW1lVW5pY29kZVRyYW5zbGl0ZXJhdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYWRjZTk4MAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L05hbWVVbmljb2RlVHJhbnNsaXRlcmF0b3IuamF2YQpAQCAtMCwwICsxLDE3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZAorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS90ZXh0L05hbWVVbmljb2RlVHJhbnNsaXRlcmF0b3IuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wOS8xOSAyMzoxNzowMiAkIAorICogJFJldmlzaW9uOiAxLjEzICQKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS50ZXh0OworaW1wb3J0IGphdmEudXRpbC4qOworaW1wb3J0IGNvbS5pYm0uaWN1LmxhbmcuKjsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLlV0aWxpdHk7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5VQ2hhcmFjdGVyUHJvcGVydHk7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5VQ2hhcmFjdGVyTmFtZTsKKworLyoqCisgKiBBIHRyYW5zbGl0ZXJhdG9yIHRoYXQgcGVyZm9ybXMgbmFtZSB0byBjaGFyYWN0ZXIgbWFwcGluZy4KKyAqIEBhdXRob3IgQWxhbiBMaXUKKyAqLworY2xhc3MgTmFtZVVuaWNvZGVUcmFuc2xpdGVyYXRvciBleHRlbmRzIFRyYW5zbGl0ZXJhdG9yIHsKKworICAgIGNoYXIgb3BlbkRlbGltaXRlcjsKKyAgICBjaGFyIGNsb3NlRGVsaW1pdGVyOworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBfSUQgPSAiTmFtZS1BbnkiOworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBPUEVOX1BBVCAgICA9ICJcXE5+e34iOworICAgIHN0YXRpYyBmaW5hbCBjaGFyICAgT1BFTl9ERUxJTSAgPSAnXFwnOyAvLyBmaXJzdCBjaGFyIG9mIE9QRU5fUEFUCisgICAgc3RhdGljIGZpbmFsIGNoYXIgICBDTE9TRV9ERUxJTSA9ICd9JzsKKyAgICBzdGF0aWMgZmluYWwgY2hhciAgIFNQQUNFICAgICAgID0gJyAnOworCisKKyAgICAvKioKKyAgICAgKiBTeXN0ZW0gcmVnaXN0cmF0aW9uIGhvb2suCisgICAgICovCisgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXIoKSB7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yLnJlZ2lzdGVyRmFjdG9yeShfSUQsIG5ldyBUcmFuc2xpdGVyYXRvci5GYWN0b3J5KCkgeworICAgICAgICAgICAgcHVibGljIFRyYW5zbGl0ZXJhdG9yIGdldEluc3RhbmNlKFN0cmluZyBJRCkgeworICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTmFtZVVuaWNvZGVUcmFuc2xpdGVyYXRvcihudWxsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIHRyYW5zbGl0ZXJhdG9yLgorICAgICAqLworICAgIHB1YmxpYyBOYW1lVW5pY29kZVRyYW5zbGl0ZXJhdG9yKFVuaWNvZGVGaWx0ZXIgZmlsdGVyKSB7CisgICAgICAgIHN1cGVyKF9JRCwgZmlsdGVyKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbXBsZW1lbnRzIHtAbGluayBUcmFuc2xpdGVyYXRvciNoYW5kbGVUcmFuc2xpdGVyYXRlfS4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVUcmFuc2xpdGVyYXRlKFJlcGxhY2VhYmxlIHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb3NpdGlvbiBvZmZzZXRzLCBib29sZWFuIGlzSW5jcmVtZW50YWwpIHsKKworICAgICAgICBpbnQgbWF4TGVuID0gVUNoYXJhY3Rlck5hbWUuZ2V0SW5zdGFuY2UoKS5nZXRNYXhDaGFyTmFtZUxlbmd0aCgpICsgMTsgLy8gYWxsb3cgZm9yIHRlbXBvcmFyeSB0cmFpbGluZyBzcGFjZQorCisgICAgICAgIFN0cmluZ0J1ZmZlciBuYW1lID0gbmV3IFN0cmluZ0J1ZmZlcihtYXhMZW4pOworCisgICAgICAgIC8vIEdldCB0aGUgbGVnYWwgY2hhcmFjdGVyIHNldAorICAgICAgICBVbmljb2RlU2V0IGxlZ2FsID0gbmV3IFVuaWNvZGVTZXQoKTsKKyAgICAgICAgVUNoYXJhY3Rlck5hbWUuZ2V0SW5zdGFuY2UoKS5nZXRDaGFyTmFtZUNoYXJhY3RlcnMobGVnYWwpOworCisgICAgICAgIGludCBjdXJzb3IgPSBvZmZzZXRzLnN0YXJ0OworICAgICAgICBpbnQgbGltaXQgPSBvZmZzZXRzLmxpbWl0OworCisgICAgICAgIC8vIE1vZGVzOgorICAgICAgICAvLyAwIC0gbG9va2luZyBmb3Igb3BlbiBkZWxpbWl0ZXIKKyAgICAgICAgLy8gMSAtIGFmdGVyIG9wZW4gZGVsaW1pdGVyCisgICAgICAgIGludCBtb2RlID0gMDsKKyAgICAgICAgaW50IG9wZW5Qb3MgPSAtMTsgLy8gb3BlbiBkZWxpbSBjYW5kaWRhdGUgcG9zCisgICAgICAgIAorICAgICAgICBpbnQgYzsKKyAgICAgICAgd2hpbGUgKGN1cnNvciA8IGxpbWl0KSB7CisgICAgICAgICAgICBjID0gdGV4dC5jaGFyMzJBdChjdXJzb3IpOworCisgICAgICAgICAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICAgICAgICAgIGNhc2UgMDogLy8gbG9va2luZyBmb3Igb3BlbiBkZWxpbWl0ZXIKKyAgICAgICAgICAgICAgICBpZiAoYyA9PSBPUEVOX0RFTElNKSB7IC8vIHF1aWNrIGNoZWNrIGZpcnN0CisgICAgICAgICAgICAgICAgICAgIG9wZW5Qb3MgPSBjdXJzb3I7CisgICAgICAgICAgICAgICAgICAgIGludCBpID0gVXRpbGl0eS5wYXJzZVBhdHRlcm4oT1BFTl9QQVQsIHRleHQsIGN1cnNvciwgbGltaXQpOworICAgICAgICAgICAgICAgICAgICBpZiAoaSA+PSAwICYmIGkgPCBsaW1pdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbW9kZSA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLnNldExlbmd0aCgwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvciA9IGk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8gKioqIHJlcHJvY2VzcyBjaGFyMzJBdChjdXJzb3IpCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgMTogLy8gYWZ0ZXIgb3BlbiBkZWxpbWl0ZXIKKyAgICAgICAgICAgICAgICAvLyBMb29rIGZvciBsZWdhbCBjaGFycy4gIElmIFxzKyBpcyBmb3VuZCwgY29udmVydCBpdAorICAgICAgICAgICAgICAgIC8vIHRvIGEgc2luZ2xlIHNwYWNlLiAgSWYgY2xvc2VEZWxpbWl0ZXIgaXMgZm91bmQsIGV4aXQKKyAgICAgICAgICAgICAgICAvLyB0aGUgbG9vcC4gIElmIGFueSBvdGhlciBjaGFyYWN0ZXIgaXMgZm91bmQsIGV4aXQgdGhlCisgICAgICAgICAgICAgICAgLy8gbG9vcC4gIElmIHRoZSBsaW1pdCBpcyByZWFjaGVkLCBleGl0IHRoZSBsb29wLgorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgXHMrID0+IFNQQUNFLiAgVGhpcyBhc3N1bWVzIHRoZXJlIGFyZSBubworICAgICAgICAgICAgICAgIC8vIHJ1bnMgb2YgPjEgc3BhY2UgY2hhcmFjdGVycyBpbiBuYW1lcy4KKyAgICAgICAgICAgICAgICBpZiAoVUNoYXJhY3RlclByb3BlcnR5LmlzUnVsZVdoaXRlU3BhY2UoYykpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWdub3JlIGxlYWRpbmcgd2hpdGVzcGFjZQorICAgICAgICAgICAgICAgICAgICBpZiAobmFtZS5sZW5ndGgoKSA+IDAgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUuY2hhckF0KG5hbWUubGVuZ3RoKCktMSkgIT0gU1BBQ0UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUuYXBwZW5kKFNQQUNFKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHdlIGFyZSB0b28gbG9uZyB0aGVuIGFib3J0LiAgbWF4TGVuIGluY2x1ZGVzCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0ZW1wb3JhcnkgdHJhaWxpbmcgc3BhY2UsIHNvIHVzZSAnPicuCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmFtZS5sZW5ndGgoKSA+IG1heExlbikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGUgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChjID09IENMT1NFX0RFTElNKSB7CisKKyAgICAgICAgICAgICAgICAgICAgaW50IGxlbiA9IG5hbWUubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAvLyBEZWxldGUgdHJhaWxpbmcgc3BhY2UsIGlmIGFueQorICAgICAgICAgICAgICAgICAgICBpZiAobGVuID4gMCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZS5jaGFyQXQobGVuLTEpID09IFNQQUNFKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLnNldExlbmd0aCgtLWxlbik7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBjID0gVUNoYXJhY3Rlci5nZXRDaGFyRnJvbUV4dGVuZGVkTmFtZShuYW1lLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAgICBpZiAoYyAhPSAtMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gTG9va3VwIHN1Y2NlZWRlZAorCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3NlcnQoVVRGMTYuZ2V0Q2hhckNvdW50KENMT1NFX0RFTElNKSA9PSAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcisrOyAvLyBhZHZhbmNlIG92ZXIgQ0xPU0VfREVMSU0KKworICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHN0ciA9IFVURjE2LnZhbHVlT2YoYyk7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LnJlcGxhY2Uob3BlblBvcywgY3Vyc29yLCBzdHIpOworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBBZGp1c3QgaW5kaWNlcyBmb3IgdGhlIGNoYW5nZSBpbiB0aGUgbGVuZ3RoIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgc3RyaW5nLiAgRG8gbm90IGFzc3VtZSB0aGF0IHN0ci5sZW5ndGgoKSA9PQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gMSwgaW4gY2FzZSBvZiBzdXJyb2dhdGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlbHRhID0gY3Vyc29yIC0gb3BlblBvcyAtIHN0ci5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvciAtPSBkZWx0YTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0IC09IGRlbHRhOworICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzZXJ0KGN1cnNvciA9PSBvcGVuUG9zICsgc3RyLmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgbG9va3VwIGZhaWxlZCwgd2UgbGVhdmUgdGhpbmdzIGFzLWlzIGFuZAorICAgICAgICAgICAgICAgICAgICAvLyBzdGlsbCBzd2l0Y2ggdG8gbW9kZSAwIGFuZCBjb250aW51ZS4KKyAgICAgICAgICAgICAgICAgICAgbW9kZSA9IDA7CisgICAgICAgICAgICAgICAgICAgIG9wZW5Qb3MgPSAtMTsgLy8gY2xvc2Ugb2ZmIGNhbmRpZGF0ZQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8gKioqIHJlcHJvY2VzcyBjaGFyMzJBdChjdXJzb3IpCisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGxlZ2FsLmNvbnRhaW5zKGMpKSB7CisgICAgICAgICAgICAgICAgICAgIFVURjE2LmFwcGVuZChuYW1lLCBjKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgd2UgZ28gcGFzdCB0aGUgbG9uZ2VzdCBwb3NzaWJsZSBuYW1lIHRoZW4gYWJvcnQuCisgICAgICAgICAgICAgICAgICAgIC8vIG1heExlbiBpbmNsdWRlcyB0ZW1wb3JhcnkgdHJhaWxpbmcgc3BhY2UsIHNvIHVzZSAnPj0nLgorICAgICAgICAgICAgICAgICAgICBpZiAobmFtZS5sZW5ndGgoKSA+PSBtYXhMZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vZGUgPSAwOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gSW52YWxpZCBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLS1jdXJzb3I7IC8vIEJhY2t1cCBhbmQgcmVwcm9jZXNzIHRoaXMgY2hhcmFjdGVyCisgICAgICAgICAgICAgICAgICAgIG1vZGUgPSAwOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjdXJzb3IgKz0gVVRGMTYuZ2V0Q2hhckNvdW50KGMpOworICAgICAgICB9CisKKyAgICAgICAgb2Zmc2V0cy5jb250ZXh0TGltaXQgKz0gbGltaXQgLSBvZmZzZXRzLmxpbWl0OworICAgICAgICBvZmZzZXRzLmxpbWl0ID0gbGltaXQ7CisgICAgICAgIC8vIEluIGluY3JlbWVudGFsIG1vZGUsIG9ubHkgYWR2YW5jZSB0aGUgY3Vyc29yIHVwIHRvIHRoZSBsYXN0CisgICAgICAgIC8vIG9wZW4gZGVsaW1pdGVyIGNhbmRpZGF0ZS4KKyAgICAgICAgb2Zmc2V0cy5zdGFydCA9IChpc0luY3JlbWVudGFsICYmIG9wZW5Qb3MgPj0gMCkgPyBvcGVuUG9zIDogY3Vyc29yOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS90ZXh0L05vcm1hbGl6YXRpb25UcmFuc2xpdGVyYXRvci5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvTm9ybWFsaXphdGlvblRyYW5zbGl0ZXJhdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYmJkMGZkMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L05vcm1hbGl6YXRpb25UcmFuc2xpdGVyYXRvci5qYXZhCkBAIC0wLDAgKzEsNjcxIEBACisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgIENvcHlyaWdodCAoQykgMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworKiAgIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgIERhdGUgICAgICAgIE5hbWUgICAgICAgIERlc2NyaXB0aW9uCisqICAgMDYvMDgvMDEgICAgYWxpdSAgICAgICAgQ3JlYXRpb24uCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LnRleHQ7CitpbXBvcnQgY29tLmlibS5pY3UubGFuZy4qOworCisvKioKKyAqIEBhdXRob3IgQWxhbiBMaXUKKyAqIEB2ZXJzaW9uICRSQ1NmaWxlOiBOb3JtYWxpemF0aW9uVHJhbnNsaXRlcmF0b3IuamF2YSx2ICQgJFJldmlzaW9uOiAxLjE5ICQgJERhdGU6IDIwMDIvMDcvMjcgMDE6MDQ6NTQgJAorICovCitmaW5hbCBjbGFzcyBOb3JtYWxpemF0aW9uVHJhbnNsaXRlcmF0b3IgZXh0ZW5kcyBUcmFuc2xpdGVyYXRvciB7CisgICAgCisgICAgc3RhdGljIGZpbmFsIGJvb2xlYW4gREVCVUcgPSBmYWxzZTsKKworICAgIC8qKgorICAgICAqIFRoZSBub3JtYWxpemF0aW9uIG1vZGUgb2YgdGhpcyB0cmFuc2xpdGVyYXRvci4KKyAgICAgKi8KKyAgICBwcml2YXRlIE5vcm1hbGl6ZXIuTW9kZSBtb2RlOworCisgICAgLyoqCisgICAgICogTm9ybWFsaXphdGlvbiBvcHRpb25zIGZvciB0aGlzIHRyYW5zbGl0ZXJhdG9yLgorICAgICAqLworICAgIHByaXZhdGUgaW50IG9wdGlvbnM7CisKKyAgICAvKioKKyAgICAgKiBUaGUgc2V0IG9mICJ1bnNhZmUgc3RhcnQiIGNoYXJhY3RlcnMuICBUaGVzZSBhcmUgY2hhcmFjdGVycworICAgICAqIHdpdGggY2M9PTAgYnV0IHdoaWNoIG1heSBpbnRlcmFjdCB3aXRoIHByZXZpb3VzIGNoYXJhY3RlcnMuICBXZQorICAgICAqIGVmZmVjdGl2ZWx5IGNvbnNpZGVyIHRoZXNlIHRvIGJlIGNjIT0wLCBmb3Igb3VyIHB1cnBvc2VzLgorICAgICAqCisgICAgICogRnJvbSBodHRwOi8vd3d3Lm1hY2NoaWF0by5jb20vdXRjL05GVW5zYWZlU3RhcnQtMy4xLjFkWC50eHQKKyAgICAgKiBHZW5lcmF0ZWQgaW4gdW5pY29kZXRvb2xzLCBORlNraXBwYWJsZQorICAgICAqCisgICAgICovCisgICAgIAorICAgIHN0YXRpYyBmaW5hbCBVbmljb2RlU2V0W10gVU5TQUZFX1NUQVJUUyA9IG5ldyBVbmljb2RlU2V0WzRdOworICAgIHN0YXRpYyBmaW5hbCBVbmljb2RlU2V0W10gU0tJUFBBQkxFUyA9IG5ldyBVbmljb2RlU2V0WzRdOworICAgIAorICAgIHN0YXRpYyBmaW5hbCBpbnQKKyAgICAgICAgRCA9IDAsIEMgPSAxLCBLRD0gMiwgS0MgPSAzOworICAgIAorICAgIC8vIEluc3RhbmNlIGRhdGEsIHNpbXBseSBwb2ludGVyIHRvIG9uZSBvZiB0aGUgc2V0cyBiZWxvdworICAgIGZpbmFsIFVuaWNvZGVTZXQgVU5TQUZFX1NUQVJUOworICAgIGZpbmFsIFVuaWNvZGVTZXQgU0tJUFBBQkxFOworICAgIAorICAgIC8qKgorICAgICAqIFN5c3RlbSByZWdpc3RyYXRpb24gaG9vay4KKyAgICAgKi8KKyAgICBzdGF0aWMgdm9pZCByZWdpc3RlcigpIHsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IucmVnaXN0ZXJGYWN0b3J5KCJBbnktTkZDIiwgbmV3IFRyYW5zbGl0ZXJhdG9yLkZhY3RvcnkoKSB7CisgICAgICAgICAgICBwdWJsaWMgVHJhbnNsaXRlcmF0b3IgZ2V0SW5zdGFuY2UoU3RyaW5nIElEKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vcm1hbGl6YXRpb25UcmFuc2xpdGVyYXRvci4KKyAgICAgICAgICAgICAgICAgICAgZ2V0SW5zdGFuY2UoTm9ybWFsaXplci5ORkMpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IucmVnaXN0ZXJGYWN0b3J5KCJBbnktTkZEIiwgbmV3IFRyYW5zbGl0ZXJhdG9yLkZhY3RvcnkoKSB7CisgICAgICAgICAgICBwdWJsaWMgVHJhbnNsaXRlcmF0b3IgZ2V0SW5zdGFuY2UoU3RyaW5nIElEKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vcm1hbGl6YXRpb25UcmFuc2xpdGVyYXRvci4KKyAgICAgICAgICAgICAgICAgICAgZ2V0SW5zdGFuY2UoTm9ybWFsaXplci5ORkQpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IucmVnaXN0ZXJGYWN0b3J5KCJBbnktTkZLQyIsIG5ldyBUcmFuc2xpdGVyYXRvci5GYWN0b3J5KCkgeworICAgICAgICAgICAgcHVibGljIFRyYW5zbGl0ZXJhdG9yIGdldEluc3RhbmNlKFN0cmluZyBJRCkgeworICAgICAgICAgICAgICAgIHJldHVybiBOb3JtYWxpemF0aW9uVHJhbnNsaXRlcmF0b3IuCisgICAgICAgICAgICAgICAgICAgIGdldEluc3RhbmNlKE5vcm1hbGl6ZXIuTkZLQyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgICBUcmFuc2xpdGVyYXRvci5yZWdpc3RlckZhY3RvcnkoIkFueS1ORktEIiwgbmV3IFRyYW5zbGl0ZXJhdG9yLkZhY3RvcnkoKSB7CisgICAgICAgICAgICBwdWJsaWMgVHJhbnNsaXRlcmF0b3IgZ2V0SW5zdGFuY2UoU3RyaW5nIElEKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vcm1hbGl6YXRpb25UcmFuc2xpdGVyYXRvci4KKyAgICAgICAgICAgICAgICAgICAgZ2V0SW5zdGFuY2UoTm9ybWFsaXplci5ORktEKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yLnJlZ2lzdGVyU3BlY2lhbEludmVyc2UoIk5GQyIsICJORkQiLCB0cnVlKTsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IucmVnaXN0ZXJTcGVjaWFsSW52ZXJzZSgiTkZLQyIsICJORktEIiwgdHJ1ZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogRmFjdG9yeSBtZXRob2QuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBOb3JtYWxpemF0aW9uVHJhbnNsaXRlcmF0b3IgZ2V0SW5zdGFuY2UoTm9ybWFsaXplci5Nb2RlIG0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9wdCkgeworICAgICAgICBTdHJpbmdCdWZmZXIgaWQgPSBuZXcgU3RyaW5nQnVmZmVyKCJORiIpOworICAgICAgICBpbnQgY2hvaWNlID0gMDsKKyAgICAgICAgaWYobT09Tm9ybWFsaXplci5ORkMpeworICAgICAgICAgICAgaWQuYXBwZW5kKCJDIik7CisgICAgICAgICAgICBjaG9pY2UgfD0gQzsKKyAgICAgICAgfWVsc2UgaWYobT09Tm9ybWFsaXplci5ORktDKXsKKyAgICAgICAgICAgIGlkLmFwcGVuZCgiS0MiKTsKKyAgICAgICAgICAgIGNob2ljZSB8PSBLQzsKKyAgICAgICAgfWVsc2UgaWYobT09Tm9ybWFsaXplci5ORkQpeworICAgICAgICAgICAgaWQuYXBwZW5kKCJEIik7CisgICAgICAgICAgICBjaG9pY2UgfD0gRDsKKyAgICAgICAgfWVsc2UgaWYobT09Tm9ybWFsaXplci5ORktEKXsKKyAgICAgICAgICAgIGlkLmFwcGVuZCgiS0QiKTsKKyAgICAgICAgICAgIGNob2ljZSB8PSBLRDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLyppZiAobS5jb21wYXQoKSkgeworICAgICAgICAgICAgaWQuYXBwZW5kKCdLJyk7CisgICAgICAgICAgICBjaG9pY2UgfD0gS0Q7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG0uY29tcG9zZSgpKSB7CisgICAgICAgICAgICBpZC5hcHBlbmQoJ0MnKTsKKyAgICAgICAgICAgIGNob2ljZSB8PSBDOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWQuYXBwZW5kKCdEJyk7CisgICAgICAgIH0qLworICAgICAgICByZXR1cm4gbmV3IE5vcm1hbGl6YXRpb25UcmFuc2xpdGVyYXRvcihpZC50b1N0cmluZygpLCBtLCBjaG9pY2UsIG9wdCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogRmFjdG9yeSBtZXRob2QuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBOb3JtYWxpemF0aW9uVHJhbnNsaXRlcmF0b3IgZ2V0SW5zdGFuY2UoTm9ybWFsaXplci5Nb2RlIG0pIHsKKyAgICAgICAgcmV0dXJuIGdldEluc3RhbmNlKG0sIDApOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSB0cmFuc2xpdGVyYXRvci4KKyAgICAgKi8KKyAgICBwcml2YXRlIE5vcm1hbGl6YXRpb25UcmFuc2xpdGVyYXRvcihTdHJpbmcgaWQsIE5vcm1hbGl6ZXIuTW9kZSBtLCBpbnQgc3RhcnRDaG9pY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9wdCkgeworICAgICAgICBzdXBlcihpZCwgbnVsbCk7CisgICAgICAgIG1vZGUgPSBtOworICAgICAgICBvcHRpb25zID0gb3B0OworICAgICAgICBVTlNBRkVfU1RBUlQgPSBVTlNBRkVfU1RBUlRTW3N0YXJ0Q2hvaWNlXTsKKyAgICAgICAgU0tJUFBBQkxFID0gU0tJUFBBQkxFU1tzdGFydENob2ljZV07CisgICAgfQorCisgICAgLyoqCisgICAgICogSW1wbGVtZW50cyB7QGxpbmsgVHJhbnNsaXRlcmF0b3IjaGFuZGxlVHJhbnNsaXRlcmF0ZX0uCisgICAgICovCisgICAgcHJvdGVjdGVkIHZvaWQgaGFuZGxlVHJhbnNsaXRlcmF0ZShSZXBsYWNlYWJsZSB0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zaXRpb24gb2Zmc2V0cywgYm9vbGVhbiBpc0luY3JlbWVudGFsKSB7CisgICAgICAgIGludCBzdGFydCA9IG9mZnNldHMuc3RhcnQ7CisgICAgICAgIGludCBsaW1pdCA9IG9mZnNldHMubGltaXQ7CisgICAgICAgIGlmIChzdGFydCA+PSBsaW1pdCkgcmV0dXJuOworCisgICAgICAgIGludCBvdmVyYWxsRGVsdGEgPSAwOworICAgICAgICAgICAgCisgICAgICAgIC8vIFdhbGsgdGhyb3VnaCB0aGUgc3RyaW5nIGxvb2tpbmcgZm9yIHNhZmUgY2hhcmFjdGVycy4KKyAgICAgICAgLy8gV2hlbmV2ZXIgeW91IGhpdCBvbmUgbm9ybWFsaXplIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBsYXN0CisgICAgICAgIC8vIHNhZmUgY2hhcmFjdGVyIHVwIHRvIGp1c3QgYmVmb3JlIHRoZSBuZXh0IHNhZmUgY2hhcmFjdGVyCisgICAgICAgIC8vIEFsc28sIGlmIHlvdSBoaXQgdGhlIGVuZCBhbmQgd2UgYXJlIG5vdCBpbiBpbmNyZW1lbnRhbCBtb2RlLAorICAgICAgICAvLyBkbyB0byBlbmQuCisgICAgICAgICAgICAKKyAgICAgICAgLy8gVE9ETzogZml4IGZvciBzdXJyb2dhdGVzCisgICAgICAgIC8vIFRPRE86IGFkZCBRdWlja0NoZWNrLCBzbyB3ZSByYXJlbHkgY29udmVydCBPSyBzdHVmZgorICAgICAgICAgICAgCisgICAgICAgIGludCBsYXN0U2FmZSA9IHN0YXJ0OyAvLyBnbyBiYWNrIHRvIHN0YXJ0IGluIGFueSBldmVudAorICAgICAgICBpbnQgY3A7CisgICAgICAgIGZvciAoaW50IGkgPSBzdGFydCsxOyBpIDwgbGltaXQ7IGkgKz0gVVRGMTYuZ2V0Q2hhckNvdW50KGNwKSkgeworICAgICAgICAgICAgY3AgPSB0ZXh0LmNoYXIzMkF0KGkpOworICAgICAgICAgICAgaWYgKFVDaGFyYWN0ZXIuZ2V0Q29tYmluaW5nQ2xhc3MoY3ApID09IDAgJiYgIVVOU0FGRV9TVEFSVC5jb250YWlucyhjcCkpIHsKKyAgICAgICAgICAgICAgICBpbnQgZGVsdGEgPSBjb252ZXJ0KHRleHQsIGxhc3RTYWZlLCBpLCBudWxsKTsKKyAgICAgICAgICAgICAgICBpICs9IGRlbHRhOworICAgICAgICAgICAgICAgIGxpbWl0ICs9IGRlbHRhOworICAgICAgICAgICAgICAgIG92ZXJhbGxEZWx0YSArPSBkZWx0YTsKKyAgICAgICAgICAgICAgICBsYXN0U2FmZSA9IGk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFpc0luY3JlbWVudGFsKSB7CisgICAgICAgICAgICBpbnQgZGVsdGEgPSBjb252ZXJ0KHRleHQsIGxhc3RTYWZlLCBsaW1pdCwgbnVsbCk7CisgICAgICAgICAgICBvdmVyYWxsRGVsdGEgKz0gZGVsdGE7CisgICAgICAgICAgICBsYXN0U2FmZSA9IGxpbWl0ICsgZGVsdGE7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBXZSBhcmUgaW5jcmVtZW50YWwsIHNvIGFjY2VwdCB0aGUgbGFzdCBjaGFyYWN0ZXJzIElGIHRoZXkgdHVybiBpbnRvIFNLSVBQQUJMRXMKKyAgICAgICAgICAgIGludCBkZWx0YSA9IGNvbnZlcnQodGV4dCwgbGFzdFNhZmUsIGxpbWl0LCBTS0lQUEFCTEUpOworICAgICAgICAgICAgaWYgKGRlbHRhICE9IEludGVnZXIuTUlOX1ZBTFVFKSB7CisgICAgICAgICAgICAgICAgb3ZlcmFsbERlbHRhICs9IGRlbHRhOworICAgICAgICAgICAgICAgIGxhc3RTYWZlID0gbGltaXQgKyBkZWx0YTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBvZmZzZXRzLmNvbnRleHRMaW1pdCArPSBvdmVyYWxsRGVsdGE7CisgICAgICAgIG9mZnNldHMubGltaXQgKz0gb3ZlcmFsbERlbHRhOworICAgICAgICBvZmZzZXRzLnN0YXJ0ID0gbGFzdFNhZmU7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIENvbnZlcnRzIHRoZSByYW5nZSBmcm9tIGxhc3RTYWZlIHRvIGxpbWl0LgorICAgICAqIEBwYXJhbSB2ZXJpZnkgSWYgbm9uLW51bGwsIGNoZWNrIHRvIHNlZSB0aGF0IGFsbCByZXBsYWNlbWVudCBjaGFyYWN0ZXJzIGFyZSBpbiBpdC4gSWYgbm90LAorICAgICAqIGFib3J0IHRoZSBjb252ZXJzaW9uIGFuZCByZXR1cm4gSW50ZWdlci5NSU5fVkFMVUUuCisgICAgICogQHJldHVybiByZXR1cm4gdGhlIGRlbHRhIGluIGxlbmd0aCAobmV3IC0gb2xkKSwgb3IgSW50ZWdlci5NSU5fVkFMVUUgaWYgdGhlIHZlcmlmeSBhYm9ydGVkLgorICAgICAqLworICAgIGludCBjb252ZXJ0KFJlcGxhY2VhYmxlIHRleHQsIGludCBsYXN0U2FmZSwgaW50IGxpbWl0LCBVbmljb2RlU2V0IHZlcmlmeSkgeyAgICAgICAgCisgICAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCJ0OiAiICsgY29tLmlibS5pY3UuaW1wbC5VdGlsaXR5LmhleCh0ZXh0LnRvU3RyaW5nKCkpICsgIiwgczogIiArIGxhc3RTYWZlICsgIiwgbDogIiArIGxpbWl0KTsKKworICAgICAgICBpbnQgbGVuID0gbGltaXQgLSBsYXN0U2FmZTsKKyAgICAgICAgaWYgKGJ1ZmZlci5sZW5ndGggPCBsZW4pIHsKKyAgICAgICAgICAgIGJ1ZmZlciA9IG5ldyBjaGFyW2xlbl07IC8vIHJhcmUsIGFuZCB3ZSBkb24ndCBjYXJlIGlmIHdlIGdyb3cgdG9vIGxhcmdlCisgICAgICAgIH0KKyAgICAgICAgdGV4dC5nZXRDaGFycyhsYXN0U2FmZSwgbGltaXQsIGJ1ZmZlciwgMCk7CisgICAgICAgIFN0cmluZyBpbnB1dCA9IG5ldyBTdHJpbmcoYnVmZmVyLCAwLCBsZW4pOyAvLyBUT0RPOiBmaXggbm9ybWFsaXplciB0byB0YWtlIGNoYXJbXQorICAgICAgICBTdHJpbmcgb3V0cHV0ID0gTm9ybWFsaXplci5ub3JtYWxpemUoaW5wdXQsIG1vZGUpOworICAgICAgICAKKyAgICAgICAgLy8gdmVyaWZ5IE9LLCBpZiBzcGVjaWZpZWQKKyAgICAgICAgaWYgKHZlcmlmeSAhPSBudWxsKSB7CisgICAgICAgICAgICBib29sZWFuIHNraXAgPSAhU0tJUFBBQkxFLmNvbnRhaW5zQWxsKG91dHB1dCk7CisgICAgICAgICAgICBpZiAoREVCVUcpIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKHNraXAgPyAiICBTS0lQOiAiIDogIk5PU0tJUDogIikgCisgICAgICAgICAgICAgICAgICAgICsgY29tLmlibS5pY3UuaW1wbC5VdGlsaXR5LmVzY2FwZShpbnB1dCkgCisgICAgICAgICAgICAgICAgICAgICsgIiA9PiAiICsgY29tLmlibS5pY3UuaW1wbC5VdGlsaXR5LmVzY2FwZShvdXRwdXQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChza2lwKSByZXR1cm4gSW50ZWdlci5NSU5fVkFMVUU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChvdXRwdXQuZXF1YWxzKGlucHV0KSkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgdGV4dC5yZXBsYWNlKGxhc3RTYWZlLCBsaW1pdCwgb3V0cHV0KTsKKyAgICAgICAgcmV0dXJuIG91dHB1dC5sZW5ndGgoKSAtIGxlbjsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBjaGFyIGJ1ZmZlcltdID0gbmV3IGNoYXJbMzBdOworICAgIAorICAgIHN0YXRpYyB7CisgICAgICAgIFVOU0FGRV9TVEFSVFNbRF0gPSBuZXcgVW5pY29kZVNldCgiW1x1MEY3M1x1MEY3NVx1MEY4MV0iLCBmYWxzZSk7CisgICAgICAgIFVOU0FGRV9TVEFSVFNbQ10gPSBuZXcgVW5pY29kZVNldCgiW1x1MDlCRVx1MDlEN1x1MEIzRVx1MEI1Ni1cdTBCNTdcdTBCQkVcdTBCRDdcdTBDQzJcdTBDRDUtXHUwQ0Q2IgorICAgICAgICAgICAgKyAiXHUwRDNFXHUwRDU3XHUwRENGXHUwRERGXHUwRjczXHUwRjc1XHUwRjgxXHUxMDJFXHUxMTYxLVx1MTE3NVx1MTFBOC1cdTExQzJdIiwgZmFsc2UpOworICAgICAgICBVTlNBRkVfU1RBUlRTW0tEXSA9IG5ldyBVbmljb2RlU2V0KCJbXHUwRjczXHUwRjc1XHUwRjgxXHVGRjlFLVx1RkY5Rl0iLCBmYWxzZSk7CisgICAgICAgIFVOU0FGRV9TVEFSVFNbS0NdID0gbmV3IFVuaWNvZGVTZXQoIltcdTA5QkVcdTA5RDdcdTBCM0VcdTBCNTYtXHUwQjU3XHUwQkJFXHUwQkQ3XHUwQ0MyXHUwQ0Q1LVx1MENENiIKKyAgICAgICAgICAgICsgIlx1MEQzRVx1MEQ1N1x1MERDRlx1MERERlx1MEY3M1x1MEY3NVx1MEY4MVx1MTAyRVx1MTE2MS1cdTExNzVcdTExQTgtXHUxMUMyXHUzMTMzXHUzMTM1LVx1MzEzNiIKKyAgICAgICAgICAgICsgIlx1MzEzQS1cdTMxM0ZcdTMxNEYtXHUzMTYzXHVGRjlFLVx1RkY5Rlx1RkZBM1x1RkZBNS1cdUZGQTZcdUZGQUEtXHVGRkFGXHVGRkMyLVx1RkZDN1x1RkZDQS1cdUZGQ0YiCisgICAgICAgICAgICArICJcdUZGRDItXHVGRkQ3XHVGRkRBLVx1RkZEQ10iLCBmYWxzZSk7CisgICAgICAgICAgICAKKyAgICAgICAgU0tJUFBBQkxFU1tEXSA9IG5ldyBVbmljb2RlU2V0KAorCSAgICAgICAgIlteXFx1MDBDMC1cXHUwMEM1XFx1MDBDNy1cXHUwMENGXFx1MDBEMS1cXHUwMEQ2XFx1MDBEOS1cXHUwMEREIgorICAgICAgICAgICAgKyAiXFx1MDBFMC1cXHUwMEU1XFx1MDBFNy1cXHUwMEVGXFx1MDBGMS1cXHUwMEY2XFx1MDBGOS1cXHUwMEZEIgorICAgICAgICAgICAgKyAiXFx1MDBGRi1cXHUwMTBGXFx1MDExMi1cXHUwMTI1XFx1MDEyOC1cXHUwMTMwXFx1MDEzNC1cXHUwMTM3IgorICAgICAgICAgICAgKyAiXFx1MDEzOS1cXHUwMTNFXFx1MDE0My1cXHUwMTQ4XFx1MDE0Qy1cXHUwMTUxXFx1MDE1NC1cXHUwMTY1IgorICAgICAgICAgICAgKyAiXFx1MDE2OC1cXHUwMTdFXFx1MDFBMC1cXHUwMUExXFx1MDFBRi1cXHUwMUIwXFx1MDFDRC1cXHUwMURDIgorICAgICAgICAgICAgKyAiXFx1MDFERS1cXHUwMUUzXFx1MDFFNi1cXHUwMUYwXFx1MDFGNC1cXHUwMUY1XFx1MDFGOC1cXHUwMjFCIgorICAgICAgICAgICAgKyAiXFx1MDIxRS1cXHUwMjFGXFx1MDIyNi1cXHUwMjMzXFx1MDMwMC1cXHUwMzRFXFx1MDM2MC1cXHUwMzZGIgorICAgICAgICAgICAgKyAiXFx1MDM3NFxcdTAzN0VcXHUwMzg1LVxcdTAzOEFcXHUwMzhDXFx1MDM4RS1cXHUwMzkwXFx1MDNBQS0iCisgICAgICAgICAgICArICJcXHUwM0IwXFx1MDNDQS1cXHUwM0NFXFx1MDNEMy1cXHUwM0Q0XFx1MDQwMC1cXHUwNDAxXFx1MDQwMyIKKyAgICAgICAgICAgICsgIlxcdTA0MDdcXHUwNDBDLVxcdTA0MEVcXHUwNDE5XFx1MDQzOVxcdTA0NTAtXFx1MDQ1MVxcdTA0NTMiCisgICAgICAgICAgICArICJcXHUwNDU3XFx1MDQ1Qy1cXHUwNDVFXFx1MDQ3Ni1cXHUwNDc3XFx1MDQ4My1cXHUwNDg2XFx1MDRDMS0iCisgICAgICAgICAgICArICJcXHUwNEMyXFx1MDREMC1cXHUwNEQzXFx1MDRENi1cXHUwNEQ3XFx1MDREQS1cXHUwNERGXFx1MDRFMi0iCisgICAgICAgICAgICArICJcXHUwNEU3XFx1MDRFQS1cXHUwNEY1XFx1MDRGOC1cXHUwNEY5XFx1MDU5MS1cXHUwNUExXFx1MDVBMy0iCisgICAgICAgICAgICArICJcXHUwNUI5XFx1MDVCQi1cXHUwNUJEXFx1MDVCRlxcdTA1QzEtXFx1MDVDMlxcdTA1QzRcXHUwNjIyLSIKKyAgICAgICAgICAgICsgIlxcdTA2MjZcXHUwNjRCLVxcdTA2NTVcXHUwNjcwXFx1MDZDMFxcdTA2QzJcXHUwNkQzXFx1MDZENi0iCisgICAgICAgICAgICArICJcXHUwNkRDXFx1MDZERi1cXHUwNkU0XFx1MDZFNy1cXHUwNkU4XFx1MDZFQS1cXHUwNkVEXFx1MDcxMSIKKyAgICAgICAgICAgICsgIlxcdTA3MzAtXFx1MDc0QVxcdTA5MjlcXHUwOTMxXFx1MDkzNFxcdTA5M0NcXHUwOTREXFx1MDk1MS0iCisgICAgICAgICAgICArICJcXHUwOTU0XFx1MDk1OC1cXHUwOTVGXFx1MDlCQ1xcdTA5Q0ItXFx1MDlDRFxcdTA5REMtXFx1MDlERCIKKyAgICAgICAgICAgICsgIlxcdTA5REZcXHUwQTMzXFx1MEEzNlxcdTBBM0NcXHUwQTREXFx1MEE1OS1cXHUwQTVCXFx1MEE1RVxcdTBBQkMiCisgICAgICAgICAgICArICJcXHUwQUNEXFx1MEIzQ1xcdTBCNDhcXHUwQjRCLVxcdTBCNERcXHUwQjVDLVxcdTBCNURcXHUwQjk0IgorICAgICAgICAgICAgKyAiXFx1MEJDQS1cXHUwQkNEXFx1MEM0OFxcdTBDNERcXHUwQzU1LVxcdTBDNTZcXHUwQ0MwXFx1MENDNy0iCisgICAgICAgICAgICArICJcXHUwQ0M4XFx1MENDQS1cXHUwQ0NCXFx1MENDRFxcdTBENEEtXFx1MEQ0RFxcdTBEQ0FcXHUwRERBIgorICAgICAgICAgICAgKyAiXFx1MEREQy1cXHUwRERFXFx1MEUzOC1cXHUwRTNBXFx1MEU0OC1cXHUwRTRCXFx1MEVCOC1cXHUwRUI5IgorICAgICAgICAgICAgKyAiXFx1MEVDOC1cXHUwRUNCXFx1MEYxOC1cXHUwRjE5XFx1MEYzNVxcdTBGMzdcXHUwRjM5XFx1MEY0MyIKKyAgICAgICAgICAgICsgIlxcdTBGNERcXHUwRjUyXFx1MEY1N1xcdTBGNUNcXHUwRjY5XFx1MEY3MS1cXHUwRjc2XFx1MEY3OFxcdTBGN0EiCisgICAgICAgICAgICArICItXFx1MEY3RFxcdTBGODAtXFx1MEY4NFxcdTBGODYtXFx1MEY4N1xcdTBGOTNcXHUwRjlEXFx1MEZBMiIKKyAgICAgICAgICAgICsgIlxcdTBGQTdcXHUwRkFDXFx1MEZCOVxcdTBGQzZcXHUxMDI2XFx1MTAzN1xcdTEwMzlcXHUxNzE0XFx1MTczNCIKKyAgICAgICAgICAgICsgIlxcdTE3RDJcXHUxOEE5XFx1MUUwMC1cXHUxRTk5XFx1MUU5QlxcdTFFQTAtXFx1MUVGOVxcdTFGMDAtIgorICAgICAgICAgICAgKyAiXFx1MUYxNVxcdTFGMTgtXFx1MUYxRFxcdTFGMjAtXFx1MUY0NVxcdTFGNDgtXFx1MUY0RFxcdTFGNTAtIgorICAgICAgICAgICAgKyAiXFx1MUY1N1xcdTFGNTlcXHUxRjVCXFx1MUY1RFxcdTFGNUYtXFx1MUY3RFxcdTFGODAtXFx1MUZCNCIKKyAgICAgICAgICAgICsgIlxcdTFGQjYtXFx1MUZCQ1xcdTFGQkVcXHUxRkMxLVxcdTFGQzRcXHUxRkM2LVxcdTFGRDNcXHUxRkQ2LSIKKyAgICAgICAgICAgICsgIlxcdTFGREJcXHUxRkRELVxcdTFGRUZcXHUxRkYyLVxcdTFGRjRcXHUxRkY2LVxcdTFGRkRcXHUyMDAwLSIKKyAgICAgICAgICAgICsgIlxcdTIwMDFcXHUyMEQwLVxcdTIwRENcXHUyMEUxXFx1MjBFNS1cXHUyMEVBXFx1MjEyNlxcdTIxMkEtIgorICAgICAgICAgICAgKyAiXFx1MjEyQlxcdTIxOUEtXFx1MjE5QlxcdTIxQUVcXHUyMUNELVxcdTIxQ0ZcXHUyMjA0XFx1MjIwOSIKKyAgICAgICAgICAgICsgIlxcdTIyMENcXHUyMjI0XFx1MjIyNlxcdTIyNDFcXHUyMjQ0XFx1MjI0N1xcdTIyNDlcXHUyMjYwXFx1MjI2MiIKKyAgICAgICAgICAgICsgIlxcdTIyNkQtXFx1MjI3MVxcdTIyNzQtXFx1MjI3NVxcdTIyNzgtXFx1MjI3OVxcdTIyODAtXFx1MjI4MSIKKyAgICAgICAgICAgICsgIlxcdTIyODQtXFx1MjI4NVxcdTIyODgtXFx1MjI4OVxcdTIyQUMtXFx1MjJBRlxcdTIyRTAtXFx1MjJFMyIKKyAgICAgICAgICAgICsgIlxcdTIyRUEtXFx1MjJFRFxcdTIzMjktXFx1MjMyQVxcdTJBRENcXHUzMDJBLVxcdTMwMkZcXHUzMDRDIgorICAgICAgICAgICAgKyAiXFx1MzA0RVxcdTMwNTBcXHUzMDUyXFx1MzA1NFxcdTMwNTZcXHUzMDU4XFx1MzA1QVxcdTMwNUNcXHUzMDVFIgorICAgICAgICAgICAgKyAiXFx1MzA2MFxcdTMwNjJcXHUzMDY1XFx1MzA2N1xcdTMwNjlcXHUzMDcwLVxcdTMwNzFcXHUzMDczLSIKKyAgICAgICAgICAgICsgIlxcdTMwNzRcXHUzMDc2LVxcdTMwNzdcXHUzMDc5LVxcdTMwN0FcXHUzMDdDLVxcdTMwN0RcXHUzMDk0IgorICAgICAgICAgICAgKyAiXFx1MzA5OS1cXHUzMDlBXFx1MzA5RVxcdTMwQUNcXHUzMEFFXFx1MzBCMFxcdTMwQjJcXHUzMEI0XFx1MzBCNiIKKyAgICAgICAgICAgICsgIlxcdTMwQjhcXHUzMEJBXFx1MzBCQ1xcdTMwQkVcXHUzMEMwXFx1MzBDMlxcdTMwQzVcXHUzMEM3XFx1MzBDOSIKKyAgICAgICAgICAgICsgIlxcdTMwRDAtXFx1MzBEMVxcdTMwRDMtXFx1MzBENFxcdTMwRDYtXFx1MzBEN1xcdTMwRDktXFx1MzBEQSIKKyAgICAgICAgICAgICsgIlxcdTMwREMtXFx1MzBERFxcdTMwRjRcXHUzMEY3LVxcdTMwRkFcXHUzMEZFXFx1QUMwMC1cXHVEN0EzIgorICAgICAgICAgICAgKyAiXFx1RjkwMC1cXHVGQTBEXFx1RkExMFxcdUZBMTJcXHVGQTE1LVxcdUZBMUVcXHVGQTIwXFx1RkEyMiIKKyAgICAgICAgICAgICsgIlxcdUZBMjUtXFx1RkEyNlxcdUZBMkEtXFx1RkEyRFxcdUZBMzAtXFx1RkE2QVxcdUZCMUQtXFx1RkIxRiIKKyAgICAgICAgICAgICsgIlxcdUZCMkEtXFx1RkIzNlxcdUZCMzgtXFx1RkIzQ1xcdUZCM0VcXHVGQjQwLVxcdUZCNDFcXHVGQjQzLSIKKyAgICAgICAgICAgICsgIlxcdUZCNDRcXHVGQjQ2LVxcdUZCNEVcXHVGRTIwLVxcdUZFMjNcXFUwMDAxRDE1RS1cXFUwMDAxRDE2OSIKKyAgICAgICAgICAgICsgIlxcVTAwMDFEMTZELVxcVTAwMDFEMTcyXFxVMDAwMUQxN0ItXFxVMDAwMUQxODJcXFUwMDAxRDE4NS0iCisgICAgICAgICAgICArICJcXFUwMDAxRDE4QlxcVTAwMDFEMUFBLVxcVTAwMDFEMUFEXFxVMDAwMUQxQkItXFxVMDAwMUQxQzBcXFUwMDAyIgorICAgICAgICAgICAgKyAiRjgwMC1cXFUwMDAyRkExRF0iLCBmYWxzZSk7CisvKlVuaWNvZGU6IAorICAgICAgIltewC3Fxy3P0S3W2S3d4C3l5y3v8S32+S39/y0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py2ePy0/Py0/Py0/Py0iCisgICAgKyAiPz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8/Py0/Pz8tPz8tPz8tPz8tPz8tPz8/Py0/Pz8/LT8/Pz8tPz8tPz8tPyIKKyAgICArICI/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/Py0/Pz8tPz8tPz8/Pz8/LT8/LT8/LT8/LT8/Py0/Pz8/IgorICAgICsgIj8/Py0/Py0/Pz8tPz8tPz8/Pz8/Py0/Pz8/Pz8/LT8/LT8/Py0/Pz8/LT8/Py0/Py0/Pz8tPz8/Py0/Py0/Py0iCisgICAgKyAiPz8tPz8tPz8tPz8/Pz8/Pz8/Pz8tPz8/LT8/LT8/LT8/Pz8/Pz8/Pz8/Pz8/Pz8tPz8/LT8/LT8/LT8/LT8/LSIKKyAgICArICI/Py0/Pz8/Py0/Py0/Py0/Pz8tPz8tPz8tPz8tPz8tPz8tP1w/LVw/Py0/Pz8tPz8/LT8/LT8/Py0/Pz8/Pz8/IgorICAgICsgIj8/Pz8/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Pz8tPz8/Pz8/Pz8/Pz8/Pz8/Pz8tPz8tPz8tPz8iCisgICAgKyAiLT8/LT8/Py0/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8tPz8tPz8tPz8tPz8tPz8/LT8/Py0/Py0/Pz8/LT8/Pz8tPz8tPyIKKyAgICArICI/LT8/LT8/LT8/LT8/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/XSIqLworCisgICAgICAgIFNLSVBQQUJMRVNbQ10gPSBuZXcgVW5pY29kZVNldCgKKwkgICAgICAgICJbXjwtPkEtUFItWmEtcHItelxcdTAwQThcXHUwMEMwLVxcdTAwQ0ZcXHUwMEQxLVxcdTAwRDZcXHUwMEQ4LSIKKyAgICAgICAgICAgICsgIlxcdTAwRERcXHUwMEUwLVxcdTAwRUZcXHUwMEYxLVxcdTAwRjZcXHUwMEY4LVxcdTAwRkRcXHUwMEZGLSIKKyAgICAgICAgICAgICsgIlxcdTAxMDNcXHUwMTA2LVxcdTAxMEZcXHUwMTEyLVxcdTAxMTdcXHUwMTFBLVxcdTAxMjFcXHUwMTI0LSIKKyAgICAgICAgICAgICsgIlxcdTAxMjVcXHUwMTI4LVxcdTAxMkRcXHUwMTMwXFx1MDEzOS1cXHUwMTNBXFx1MDEzRC1cXHUwMTNFIgorICAgICAgICAgICAgKyAiXFx1MDE0My1cXHUwMTQ0XFx1MDE0Ny1cXHUwMTQ4XFx1MDE0Qy1cXHUwMTUxXFx1MDE1NC1cXHUwMTU1IgorICAgICAgICAgICAgKyAiXFx1MDE1OC1cXHUwMTVEXFx1MDE2MC1cXHUwMTYxXFx1MDE2NC1cXHUwMTY1XFx1MDE2OC1cXHUwMTcxIgorICAgICAgICAgICAgKyAiXFx1MDE3NC1cXHUwMTdGXFx1MDFBMC1cXHUwMUExXFx1MDFBRi1cXHUwMUIwXFx1MDFCN1xcdTAxQ0QtIgorICAgICAgICAgICAgKyAiXFx1MDFEQ1xcdTAxREUtXFx1MDFFMVxcdTAxRTYtXFx1MDFFQlxcdTAxRjQtXFx1MDFGNVxcdTAxRjgtIgorICAgICAgICAgICAgKyAiXFx1MDFGQlxcdTAyMDAtXFx1MDIxQlxcdTAyMUUtXFx1MDIxRlxcdTAyMjYtXFx1MDIzM1xcdTAyOTIiCisgICAgICAgICAgICArICJcXHUwMzAwLVxcdTAzNEVcXHUwMzYwLVxcdTAzNkZcXHUwMzc0XFx1MDM3RVxcdTAzODdcXHUwMzkxIgorICAgICAgICAgICAgKyAiXFx1MDM5NVxcdTAzOTdcXHUwMzk5XFx1MDM5RlxcdTAzQTFcXHUwM0E1XFx1MDNBOVxcdTAzQUNcXHUwM0FFIgorICAgICAgICAgICAgKyAiXFx1MDNCMVxcdTAzQjVcXHUwM0I3XFx1MDNCOVxcdTAzQkZcXHUwM0MxXFx1MDNDNVxcdTAzQzktXFx1MDNDQiIKKyAgICAgICAgICAgICsgIlxcdTAzQ0VcXHUwM0QyXFx1MDQwNlxcdTA0MTBcXHUwNDEzXFx1MDQxNS1cXHUwNDE4XFx1MDQxQVxcdTA0MUUiCisgICAgICAgICAgICArICJcXHUwNDIzXFx1MDQyN1xcdTA0MkJcXHUwNDJEXFx1MDQzMFxcdTA0MzNcXHUwNDM1LVxcdTA0MzhcXHUwNDNBIgorICAgICAgICAgICAgKyAiXFx1MDQzRVxcdTA0NDNcXHUwNDQ3XFx1MDQ0QlxcdTA0NERcXHUwNDU2XFx1MDQ3NC1cXHUwNDc1XFx1MDQ4MyIKKyAgICAgICAgICAgICsgIi1cXHUwNDg2XFx1MDREOC1cXHUwNEQ5XFx1MDRFOC1cXHUwNEU5XFx1MDU5MS1cXHUwNUExXFx1MDVBMy0iCisgICAgICAgICAgICArICJcXHUwNUI5XFx1MDVCQi1cXHUwNUJEXFx1MDVCRlxcdTA1QzEtXFx1MDVDMlxcdTA1QzRcXHUwNjIyLSIKKyAgICAgICAgICAgICsgIlxcdTA2MjNcXHUwNjI3XFx1MDY0OFxcdTA2NEEtXFx1MDY1NVxcdTA2NzBcXHUwNkMxXFx1MDZEMlxcdTA2RDUiCisgICAgICAgICAgICArICItXFx1MDZEQ1xcdTA2REYtXFx1MDZFNFxcdTA2RTctXFx1MDZFOFxcdTA2RUEtXFx1MDZFRFxcdTA3MTEiCisgICAgICAgICAgICArICJcXHUwNzMwLVxcdTA3NEFcXHUwOTI4XFx1MDkzMFxcdTA5MzNcXHUwOTNDXFx1MDk0RFxcdTA5NTEtIgorICAgICAgICAgICAgKyAiXFx1MDk1NFxcdTA5NTgtXFx1MDk1RlxcdTA5QkNcXHUwOUJFXFx1MDlDN1xcdTA5Q0RcXHUwOUQ3XFx1MDlEQyIKKyAgICAgICAgICAgICsgIi1cXHUwOUREXFx1MDlERlxcdTBBMzNcXHUwQTM2XFx1MEEzQ1xcdTBBNERcXHUwQTU5LVxcdTBBNUIiCisgICAgICAgICAgICArICJcXHUwQTVFXFx1MEFCQ1xcdTBBQ0RcXHUwQjNDXFx1MEIzRVxcdTBCNDdcXHUwQjREXFx1MEI1Ni1cXHUwQjU3IgorICAgICAgICAgICAgKyAiXFx1MEI1Qy1cXHUwQjVEXFx1MEI5MlxcdTBCQkVcXHUwQkM2LVxcdTBCQzdcXHUwQkNEXFx1MEJENyIKKyAgICAgICAgICAgICsgIlxcdTBDNDZcXHUwQzREXFx1MEM1NS1cXHUwQzU2XFx1MENCRlxcdTBDQzJcXHUwQ0M2XFx1MENDQVxcdTBDQ0QiCisgICAgICAgICAgICArICJcXHUwQ0Q1LVxcdTBDRDZcXHUwRDNFXFx1MEQ0Ni1cXHUwRDQ3XFx1MEQ0RFxcdTBENTdcXHUwRENBIgorICAgICAgICAgICAgKyAiXFx1MERDRlxcdTBERDlcXHUwRERDXFx1MERERlxcdTBFMzgtXFx1MEUzQVxcdTBFNDgtXFx1MEU0QiIKKyAgICAgICAgICAgICsgIlxcdTBFQjgtXFx1MEVCOVxcdTBFQzgtXFx1MEVDQlxcdTBGMTgtXFx1MEYxOVxcdTBGMzVcXHUwRjM3IgorICAgICAgICAgICAgKyAiXFx1MEYzOVxcdTBGNDNcXHUwRjREXFx1MEY1MlxcdTBGNTdcXHUwRjVDXFx1MEY2OVxcdTBGNzEtXFx1MEY3NiIKKyAgICAgICAgICAgICsgIlxcdTBGNzhcXHUwRjdBLVxcdTBGN0RcXHUwRjgwLVxcdTBGODRcXHUwRjg2LVxcdTBGODdcXHUwRjkzIgorICAgICAgICAgICAgKyAiXFx1MEY5RFxcdTBGQTJcXHUwRkE3XFx1MEZBQ1xcdTBGQjlcXHUwRkM2XFx1MTAyNVxcdTEwMkVcXHUxMDM3IgorICAgICAgICAgICAgKyAiXFx1MTAzOVxcdTExMDAtXFx1MTExMlxcdTExNjEtXFx1MTE3NVxcdTExQTgtXFx1MTFDMlxcdTE3MTQiCisgICAgICAgICAgICArICJcXHUxNzM0XFx1MTdEMlxcdTE4QTlcXHUxRTAwLVxcdTFFMDNcXHUxRTBBLVxcdTFFMEZcXHUxRTEyLSIKKyAgICAgICAgICAgICsgIlxcdTFFMUJcXHUxRTIwLVxcdTFFMjdcXHUxRTJBLVxcdTFFNDFcXHUxRTQ0LVxcdTFFNTNcXHUxRTU4LSIKKyAgICAgICAgICAgICsgIlxcdTFFN0RcXHUxRTgwLVxcdTFFODdcXHUxRThFLVxcdTFFOTFcXHUxRTk2LVxcdTFFOTlcXHUxRUEwLSIKKyAgICAgICAgICAgICsgIlxcdTFFRjNcXHUxRUY2LVxcdTFFRjlcXHUxRjAwLVxcdTFGMTFcXHUxRjE4LVxcdTFGMTlcXHUxRjIwLSIKKyAgICAgICAgICAgICsgIlxcdTFGMzFcXHUxRjM4LVxcdTFGMzlcXHUxRjQwLVxcdTFGNDFcXHUxRjQ4LVxcdTFGNDlcXHUxRjUwLSIKKyAgICAgICAgICAgICsgIlxcdTFGNTFcXHUxRjU5XFx1MUY2MC1cXHUxRjcxXFx1MUY3My1cXHUxRjc1XFx1MUY3N1xcdTFGNzkiCisgICAgICAgICAgICArICJcXHUxRjdCLVxcdTFGN0RcXHUxRjgwLVxcdTFGODFcXHUxRjg4LVxcdTFGODlcXHUxRjkwLVxcdTFGOTEiCisgICAgICAgICAgICArICJcXHUxRjk4LVxcdTFGOTlcXHUxRkEwLVxcdTFGQTFcXHUxRkE4LVxcdTFGQTlcXHUxRkIzXFx1MUZCNiIKKyAgICAgICAgICAgICsgIlxcdTFGQkItXFx1MUZCQ1xcdTFGQkUtXFx1MUZCRlxcdTFGQzNcXHUxRkM2XFx1MUZDOVxcdTFGQ0ItIgorICAgICAgICAgICAgKyAiXFx1MUZDQ1xcdTFGRDNcXHUxRkRCXFx1MUZFM1xcdTFGRUJcXHUxRkVFLVxcdTFGRUZcXHUxRkYzXFx1MUZGNiIKKyAgICAgICAgICAgICsgIlxcdTFGRjlcXHUxRkZCLVxcdTFGRkVcXHUyMDAwLVxcdTIwMDFcXHUyMEQwLVxcdTIwRENcXHUyMEUxIgorICAgICAgICAgICAgKyAiXFx1MjBFNS1cXHUyMEVBXFx1MjEyNlxcdTIxMkEtXFx1MjEyQlxcdTIxOTBcXHUyMTkyXFx1MjE5NCIKKyAgICAgICAgICAgICsgIlxcdTIxRDBcXHUyMUQyXFx1MjFENFxcdTIyMDNcXHUyMjA4XFx1MjIwQlxcdTIyMjNcXHUyMjI1XFx1MjIzQyIKKyAgICAgICAgICAgICsgIlxcdTIyNDNcXHUyMjQ1XFx1MjI0OFxcdTIyNERcXHUyMjYxXFx1MjI2NC1cXHUyMjY1XFx1MjI3Mi0iCisgICAgICAgICAgICArICJcXHUyMjczXFx1MjI3Ni1cXHUyMjc3XFx1MjI3QS1cXHUyMjdEXFx1MjI4Mi1cXHUyMjgzXFx1MjI4Ni0iCisgICAgICAgICAgICArICJcXHUyMjg3XFx1MjI5MS1cXHUyMjkyXFx1MjJBMlxcdTIyQTgtXFx1MjJBOVxcdTIyQUJcXHUyMkIyLSIKKyAgICAgICAgICAgICsgIlxcdTIyQjVcXHUyMzI5LVxcdTIzMkFcXHUyQURDXFx1MzAyQS1cXHUzMDJGXFx1MzA0NlxcdTMwNEIiCisgICAgICAgICAgICArICJcXHUzMDREXFx1MzA0RlxcdTMwNTFcXHUzMDUzXFx1MzA1NVxcdTMwNTdcXHUzMDU5XFx1MzA1QlxcdTMwNUQiCisgICAgICAgICAgICArICJcXHUzMDVGXFx1MzA2MVxcdTMwNjRcXHUzMDY2XFx1MzA2OFxcdTMwNkZcXHUzMDcyXFx1MzA3NVxcdTMwNzgiCisgICAgICAgICAgICArICJcXHUzMDdCXFx1MzA5OS1cXHUzMDlBXFx1MzA5RFxcdTMwQTZcXHUzMEFCXFx1MzBBRFxcdTMwQUZcXHUzMEIxIgorICAgICAgICAgICAgKyAiXFx1MzBCM1xcdTMwQjVcXHUzMEI3XFx1MzBCOVxcdTMwQkJcXHUzMEJEXFx1MzBCRlxcdTMwQzFcXHUzMEM0IgorICAgICAgICAgICAgKyAiXFx1MzBDNlxcdTMwQzhcXHUzMENGXFx1MzBEMlxcdTMwRDVcXHUzMEQ4XFx1MzBEQlxcdTMwRUYtXFx1MzBGMiIKKyAgICAgICAgICAgICsgIlxcdTMwRkRcXHVBQzAwXFx1QUMxQ1xcdUFDMzhcXHVBQzU0XFx1QUM3MFxcdUFDOENcXHVBQ0E4XFx1QUNDNCIKKyAgICAgICAgICAgICsgIlxcdUFDRTBcXHVBQ0ZDXFx1QUQxOFxcdUFEMzRcXHVBRDUwXFx1QUQ2Q1xcdUFEODhcXHVBREE0XFx1QURDMCIKKyAgICAgICAgICAgICsgIlxcdUFERENcXHVBREY4XFx1QUUxNFxcdUFFMzBcXHVBRTRDXFx1QUU2OFxcdUFFODRcXHVBRUEwXFx1QUVCQyIKKyAgICAgICAgICAgICsgIlxcdUFFRDhcXHVBRUY0XFx1QUYxMFxcdUFGMkNcXHVBRjQ4XFx1QUY2NFxcdUFGODBcXHVBRjlDXFx1QUZCOCIKKyAgICAgICAgICAgICsgIlxcdUFGRDRcXHVBRkYwXFx1QjAwQ1xcdUIwMjhcXHVCMDQ0XFx1QjA2MFxcdUIwN0NcXHVCMDk4XFx1QjBCNCIKKyAgICAgICAgICAgICsgIlxcdUIwRDBcXHVCMEVDXFx1QjEwOFxcdUIxMjRcXHVCMTQwXFx1QjE1Q1xcdUIxNzhcXHVCMTk0XFx1QjFCMCIKKyAgICAgICAgICAgICsgIlxcdUIxQ0NcXHVCMUU4XFx1QjIwNFxcdUIyMjBcXHVCMjNDXFx1QjI1OFxcdUIyNzRcXHVCMjkwXFx1QjJBQyIKKyAgICAgICAgICAgICsgIlxcdUIyQzhcXHVCMkU0XFx1QjMwMFxcdUIzMUNcXHVCMzM4XFx1QjM1NFxcdUIzNzBcXHVCMzhDXFx1QjNBOCIKKyAgICAgICAgICAgICsgIlxcdUIzQzRcXHVCM0UwXFx1QjNGQ1xcdUI0MThcXHVCNDM0XFx1QjQ1MFxcdUI0NkNcXHVCNDg4XFx1QjRBNCIKKyAgICAgICAgICAgICsgIlxcdUI0QzBcXHVCNERDXFx1QjRGOFxcdUI1MTRcXHVCNTMwXFx1QjU0Q1xcdUI1NjhcXHVCNTg0XFx1QjVBMCIKKyAgICAgICAgICAgICsgIlxcdUI1QkNcXHVCNUQ4XFx1QjVGNFxcdUI2MTBcXHVCNjJDXFx1QjY0OFxcdUI2NjRcXHVCNjgwXFx1QjY5QyIKKyAgICAgICAgICAgICsgIlxcdUI2QjhcXHVCNkQ0XFx1QjZGMFxcdUI3MENcXHVCNzI4XFx1Qjc0NFxcdUI3NjBcXHVCNzdDXFx1Qjc5OCIKKyAgICAgICAgICAgICsgIlxcdUI3QjRcXHVCN0QwXFx1QjdFQ1xcdUI4MDhcXHVCODI0XFx1Qjg0MFxcdUI4NUNcXHVCODc4XFx1Qjg5NCIKKyAgICAgICAgICAgICsgIlxcdUI4QjBcXHVCOENDXFx1QjhFOFxcdUI5MDRcXHVCOTIwXFx1QjkzQ1xcdUI5NThcXHVCOTc0XFx1Qjk5MCIKKyAgICAgICAgICAgICsgIlxcdUI5QUNcXHVCOUM4XFx1QjlFNFxcdUJBMDBcXHVCQTFDXFx1QkEzOFxcdUJBNTRcXHVCQTcwXFx1QkE4QyIKKyAgICAgICAgICAgICsgIlxcdUJBQThcXHVCQUM0XFx1QkFFMFxcdUJBRkNcXHVCQjE4XFx1QkIzNFxcdUJCNTBcXHVCQjZDXFx1QkI4OCIKKyAgICAgICAgICAgICsgIlxcdUJCQTRcXHVCQkMwXFx1QkJEQ1xcdUJCRjhcXHVCQzE0XFx1QkMzMFxcdUJDNENcXHVCQzY4XFx1QkM4NCIKKyAgICAgICAgICAgICsgIlxcdUJDQTBcXHVCQ0JDXFx1QkNEOFxcdUJDRjRcXHVCRDEwXFx1QkQyQ1xcdUJENDhcXHVCRDY0XFx1QkQ4MCIKKyAgICAgICAgICAgICsgIlxcdUJEOUNcXHVCREI4XFx1QkRENFxcdUJERjBcXHVCRTBDXFx1QkUyOFxcdUJFNDRcXHVCRTYwXFx1QkU3QyIKKyAgICAgICAgICAgICsgIlxcdUJFOThcXHVCRUI0XFx1QkVEMFxcdUJFRUNcXHVCRjA4XFx1QkYyNFxcdUJGNDBcXHVCRjVDXFx1QkY3OCIKKyAgICAgICAgICAgICsgIlxcdUJGOTRcXHVCRkIwXFx1QkZDQ1xcdUJGRThcXHVDMDA0XFx1QzAyMFxcdUMwM0NcXHVDMDU4XFx1QzA3NCIKKyAgICAgICAgICAgICsgIlxcdUMwOTBcXHVDMEFDXFx1QzBDOFxcdUMwRTRcXHVDMTAwXFx1QzExQ1xcdUMxMzhcXHVDMTU0XFx1QzE3MCIKKyAgICAgICAgICAgICsgIlxcdUMxOENcXHVDMUE4XFx1QzFDNFxcdUMxRTBcXHVDMUZDXFx1QzIxOFxcdUMyMzRcXHVDMjUwXFx1QzI2QyIKKyAgICAgICAgICAgICsgIlxcdUMyODhcXHVDMkE0XFx1QzJDMFxcdUMyRENcXHVDMkY4XFx1QzMxNFxcdUMzMzBcXHVDMzRDXFx1QzM2OCIKKyAgICAgICAgICAgICsgIlxcdUMzODRcXHVDM0EwXFx1QzNCQ1xcdUMzRDhcXHVDM0Y0XFx1QzQxMFxcdUM0MkNcXHVDNDQ4XFx1QzQ2NCIKKyAgICAgICAgICAgICsgIlxcdUM0ODBcXHVDNDlDXFx1QzRCOFxcdUM0RDRcXHVDNEYwXFx1QzUwQ1xcdUM1MjhcXHVDNTQ0XFx1QzU2MCIKKyAgICAgICAgICAgICsgIlxcdUM1N0NcXHVDNTk4XFx1QzVCNFxcdUM1RDBcXHVDNUVDXFx1QzYwOFxcdUM2MjRcXHVDNjQwXFx1QzY1QyIKKyAgICAgICAgICAgICsgIlxcdUM2NzhcXHVDNjk0XFx1QzZCMFxcdUM2Q0NcXHVDNkU4XFx1QzcwNFxcdUM3MjBcXHVDNzNDXFx1Qzc1OCIKKyAgICAgICAgICAgICsgIlxcdUM3NzRcXHVDNzkwXFx1QzdBQ1xcdUM3QzhcXHVDN0U0XFx1QzgwMFxcdUM4MUNcXHVDODM4XFx1Qzg1NCIKKyAgICAgICAgICAgICsgIlxcdUM4NzBcXHVDODhDXFx1QzhBOFxcdUM4QzRcXHVDOEUwXFx1QzhGQ1xcdUM5MThcXHVDOTM0XFx1Qzk1MCIKKyAgICAgICAgICAgICsgIlxcdUM5NkNcXHVDOTg4XFx1QzlBNFxcdUM5QzBcXHVDOURDXFx1QzlGOFxcdUNBMTRcXHVDQTMwXFx1Q0E0QyIKKyAgICAgICAgICAgICsgIlxcdUNBNjhcXHVDQTg0XFx1Q0FBMFxcdUNBQkNcXHVDQUQ4XFx1Q0FGNFxcdUNCMTBcXHVDQjJDXFx1Q0I0OCIKKyAgICAgICAgICAgICsgIlxcdUNCNjRcXHVDQjgwXFx1Q0I5Q1xcdUNCQjhcXHVDQkQ0XFx1Q0JGMFxcdUNDMENcXHVDQzI4XFx1Q0M0NCIKKyAgICAgICAgICAgICsgIlxcdUNDNjBcXHVDQzdDXFx1Q0M5OFxcdUNDQjRcXHVDQ0QwXFx1Q0NFQ1xcdUNEMDhcXHVDRDI0XFx1Q0Q0MCIKKyAgICAgICAgICAgICsgIlxcdUNENUNcXHVDRDc4XFx1Q0Q5NFxcdUNEQjBcXHVDRENDXFx1Q0RFOFxcdUNFMDRcXHVDRTIwXFx1Q0UzQyIKKyAgICAgICAgICAgICsgIlxcdUNFNThcXHVDRTc0XFx1Q0U5MFxcdUNFQUNcXHVDRUM4XFx1Q0VFNFxcdUNGMDBcXHVDRjFDXFx1Q0YzOCIKKyAgICAgICAgICAgICsgIlxcdUNGNTRcXHVDRjcwXFx1Q0Y4Q1xcdUNGQThcXHVDRkM0XFx1Q0ZFMFxcdUNGRkNcXHVEMDE4XFx1RDAzNCIKKyAgICAgICAgICAgICsgIlxcdUQwNTBcXHVEMDZDXFx1RDA4OFxcdUQwQTRcXHVEMEMwXFx1RDBEQ1xcdUQwRjhcXHVEMTE0XFx1RDEzMCIKKyAgICAgICAgICAgICsgIlxcdUQxNENcXHVEMTY4XFx1RDE4NFxcdUQxQTBcXHVEMUJDXFx1RDFEOFxcdUQxRjRcXHVEMjEwXFx1RDIyQyIKKyAgICAgICAgICAgICsgIlxcdUQyNDhcXHVEMjY0XFx1RDI4MFxcdUQyOUNcXHVEMkI4XFx1RDJENFxcdUQyRjBcXHVEMzBDXFx1RDMyOCIKKyAgICAgICAgICAgICsgIlxcdUQzNDRcXHVEMzYwXFx1RDM3Q1xcdUQzOThcXHVEM0I0XFx1RDNEMFxcdUQzRUNcXHVENDA4XFx1RDQyNCIKKyAgICAgICAgICAgICsgIlxcdUQ0NDBcXHVENDVDXFx1RDQ3OFxcdUQ0OTRcXHVENEIwXFx1RDRDQ1xcdUQ0RThcXHVENTA0XFx1RDUyMCIKKyAgICAgICAgICAgICsgIlxcdUQ1M0NcXHVENTU4XFx1RDU3NFxcdUQ1OTBcXHVENUFDXFx1RDVDOFxcdUQ1RTRcXHVENjAwXFx1RDYxQyIKKyAgICAgICAgICAgICsgIlxcdUQ2MzhcXHVENjU0XFx1RDY3MFxcdUQ2OENcXHVENkE4XFx1RDZDNFxcdUQ2RTBcXHVENkZDXFx1RDcxOCIKKyAgICAgICAgICAgICsgIlxcdUQ3MzRcXHVENzUwXFx1RDc2Q1xcdUQ3ODhcXHVGOTAwLVxcdUZBMERcXHVGQTEwXFx1RkExMlxcdUZBMTUiCisgICAgICAgICAgICArICItXFx1RkExRVxcdUZBMjBcXHVGQTIyXFx1RkEyNS1cXHVGQTI2XFx1RkEyQS1cXHVGQTJEXFx1RkEzMC0iCisgICAgICAgICAgICArICJcXHVGQTZBXFx1RkIxRC1cXHVGQjFGXFx1RkIyQS1cXHVGQjM2XFx1RkIzOC1cXHVGQjNDXFx1RkIzRSIKKyAgICAgICAgICAgICsgIlxcdUZCNDAtXFx1RkI0MVxcdUZCNDMtXFx1RkI0NFxcdUZCNDYtXFx1RkI0RVxcdUZFMjAtXFx1RkUyMyIKKyAgICAgICAgICAgICsgIlxcVTAwMDFEMTVFLVxcVTAwMDFEMTY5XFxVMDAwMUQxNkQtXFxVMDAwMUQxNzJcXFUwMDAxRDE3Qi0iCisgICAgICAgICAgICArICJcXFUwMDAxRDE4MlxcVTAwMDFEMTg1LVxcVTAwMDFEMThCXFxVMDAwMUQxQUEtXFxVMDAwMUQxQURcXFUwMDAxIgorICAgICAgICAgICAgKyAiRDFCQi1cXFUwMDAxRDFDMFxcVTAwMDJGODAwLVxcVTAwMDJGQTFEXSIsIGZhbHNlKTsKKy8qVW5pY29kZTogCisgICAgICAiW148LT5BLVBSLVphLXByLXqowC3P0S3W2C3d4C3v8S32+C39/y0/Py0/Py0/Py0/Py0/Py0/Pz8tPz8tPz8tPyIKKyAgICArICI/LT8/LT8/LT8/LT+KLZo/LT8/LT8/LT8/LT8/LT8/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Pz8tPz8tPz8/IgorICAgICsgIj8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8tPz8/Pz8/Py0/Pz8/Pz8/Pz8/LT8/Pz8/Pz8/Py0/Py0/Py0/Py0/Py0/Py0iCisgICAgKyAiPz8tPz8/LT8/Py0/Pz8/LT8/Pz8/LT8/LT8/LT8/LT8/Py0/Pz8/Pz8/LT8/LT8/Pz8/Pz8tPz8/Pz8/Py0/PyIKKyAgICArICI/Pz8/Pz8/LT8/LT8/Pz8tPz8/Pz8/LT8/Pz8/Pz8tPz8/LT8/Pz8/Pz8/Py0/Py0/Py0/Py0/Py0/Pz8/Pz8/IgorICAgICsgIj8/Pz8tPz8/LT8/LT8/LT8/Pz8/Pz8/Pz8/Pz8tPz8tPz8tPz8/Pz8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LT8iCisgICAgKyAiPy0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Pz8tPz8tPz8/Py0/Py0/Py0/Py0/Py0/Py0/Py0/PyIKKyAgICArICI/Py0/Py0/Pz8/Py0/Pz8/Pz8tPz8/Pz8tP1w/LVw/Py0/Pz8tPz8/LT8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8tPz8tIgorICAgICsgIj8/LT8/LT8/LT8/LT8/LT8/Py0/Pz8tPz8tPz8/LT8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/LT8/Pz8/Pz8/Pz8iCisgICAgKyAiPz8/Pz8/Pz8/Pz8/Pz8tPz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/PyIKKyAgICArICI/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/IgorICAgICsgIj8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8iCisgICAgKyAiPz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/PyIKKyAgICArICI/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/IgorICAgICsgIj8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8iCisgICAgKyAiPz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/LT8/Pz8tPz8/Py0/Py0/Py0/Py0/Py0/Py0/Pz8tPyIKKyAgICArICI/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LT9dIiovCisgICAgICAgIFNLSVBQQUJMRVNbS0RdID0gbmV3IFVuaWNvZGVTZXQoCisJICAgICAgICAiW15cXHUwMEEwXFx1MDBBOFxcdTAwQUFcXHUwMEFGXFx1MDBCMi1cXHUwMEI1XFx1MDBCOC1cXHUwMEJBIgorICAgICAgICAgICAgKyAiXFx1MDBCQy1cXHUwMEJFXFx1MDBDMC1cXHUwMEM1XFx1MDBDNy1cXHUwMENGXFx1MDBEMS1cXHUwMEQ2IgorICAgICAgICAgICAgKyAiXFx1MDBEOS1cXHUwMEREXFx1MDBFMC1cXHUwMEU1XFx1MDBFNy1cXHUwMEVGXFx1MDBGMS1cXHUwMEY2IgorICAgICAgICAgICAgKyAiXFx1MDBGOS1cXHUwMEZEXFx1MDBGRi1cXHUwMTBGXFx1MDExMi1cXHUwMTI1XFx1MDEyOC1cXHUwMTMwIgorICAgICAgICAgICAgKyAiXFx1MDEzMi1cXHUwMTM3XFx1MDEzOS1cXHUwMTQwXFx1MDE0My1cXHUwMTQ5XFx1MDE0Qy1cXHUwMTUxIgorICAgICAgICAgICAgKyAiXFx1MDE1NC1cXHUwMTY1XFx1MDE2OC1cXHUwMTdGXFx1MDFBMC1cXHUwMUExXFx1MDFBRi1cXHUwMUIwIgorICAgICAgICAgICAgKyAiXFx1MDFDNC1cXHUwMURDXFx1MDFERS1cXHUwMUUzXFx1MDFFNi1cXHUwMUY1XFx1MDFGOC1cXHUwMjFCIgorICAgICAgICAgICAgKyAiXFx1MDIxRS1cXHUwMjFGXFx1MDIyNi1cXHUwMjMzXFx1MDJCMC1cXHUwMkI4XFx1MDJEOC1cXHUwMkREIgorICAgICAgICAgICAgKyAiXFx1MDJFMC1cXHUwMkU0XFx1MDMwMC1cXHUwMzRFXFx1MDM2MC1cXHUwMzZGXFx1MDM3NFxcdTAzN0EiCisgICAgICAgICAgICArICJcXHUwMzdFXFx1MDM4NC1cXHUwMzhBXFx1MDM4Q1xcdTAzOEUtXFx1MDM5MFxcdTAzQUEtXFx1MDNCMCIKKyAgICAgICAgICAgICsgIlxcdTAzQ0EtXFx1MDNDRVxcdTAzRDAtXFx1MDNENlxcdTAzRjAtXFx1MDNGMlxcdTAzRjQtXFx1MDNGNSIKKyAgICAgICAgICAgICsgIlxcdTA0MDAtXFx1MDQwMVxcdTA0MDNcXHUwNDA3XFx1MDQwQy1cXHUwNDBFXFx1MDQxOVxcdTA0MzkiCisgICAgICAgICAgICArICJcXHUwNDUwLVxcdTA0NTFcXHUwNDUzXFx1MDQ1N1xcdTA0NUMtXFx1MDQ1RVxcdTA0NzYtXFx1MDQ3NyIKKyAgICAgICAgICAgICsgIlxcdTA0ODMtXFx1MDQ4NlxcdTA0QzEtXFx1MDRDMlxcdTA0RDAtXFx1MDREM1xcdTA0RDYtXFx1MDRENyIKKyAgICAgICAgICAgICsgIlxcdTA0REEtXFx1MDRERlxcdTA0RTItXFx1MDRFN1xcdTA0RUEtXFx1MDRGNVxcdTA0RjgtXFx1MDRGOSIKKyAgICAgICAgICAgICsgIlxcdTA1ODdcXHUwNTkxLVxcdTA1QTFcXHUwNUEzLVxcdTA1QjlcXHUwNUJCLVxcdTA1QkRcXHUwNUJGIgorICAgICAgICAgICAgKyAiXFx1MDVDMS1cXHUwNUMyXFx1MDVDNFxcdTA2MjItXFx1MDYyNlxcdTA2NEItXFx1MDY1NVxcdTA2NzAiCisgICAgICAgICAgICArICJcXHUwNjc1LVxcdTA2NzhcXHUwNkMwXFx1MDZDMlxcdTA2RDNcXHUwNkQ2LVxcdTA2RENcXHUwNkRGLSIKKyAgICAgICAgICAgICsgIlxcdTA2RTRcXHUwNkU3LVxcdTA2RThcXHUwNkVBLVxcdTA2RURcXHUwNzExXFx1MDczMC1cXHUwNzRBIgorICAgICAgICAgICAgKyAiXFx1MDkyOVxcdTA5MzFcXHUwOTM0XFx1MDkzQ1xcdTA5NERcXHUwOTUxLVxcdTA5NTRcXHUwOTU4LSIKKyAgICAgICAgICAgICsgIlxcdTA5NUZcXHUwOUJDXFx1MDlDQi1cXHUwOUNEXFx1MDlEQy1cXHUwOUREXFx1MDlERlxcdTBBMzMiCisgICAgICAgICAgICArICJcXHUwQTM2XFx1MEEzQ1xcdTBBNERcXHUwQTU5LVxcdTBBNUJcXHUwQTVFXFx1MEFCQ1xcdTBBQ0RcXHUwQjNDIgorICAgICAgICAgICAgKyAiXFx1MEI0OFxcdTBCNEItXFx1MEI0RFxcdTBCNUMtXFx1MEI1RFxcdTBCOTRcXHUwQkNBLVxcdTBCQ0QiCisgICAgICAgICAgICArICJcXHUwQzQ4XFx1MEM0RFxcdTBDNTUtXFx1MEM1NlxcdTBDQzBcXHUwQ0M3LVxcdTBDQzhcXHUwQ0NBLSIKKyAgICAgICAgICAgICsgIlxcdTBDQ0JcXHUwQ0NEXFx1MEQ0QS1cXHUwRDREXFx1MERDQVxcdTBEREFcXHUwRERDLVxcdTBEREUiCisgICAgICAgICAgICArICJcXHUwRTMzXFx1MEUzOC1cXHUwRTNBXFx1MEU0OC1cXHUwRTRCXFx1MEVCM1xcdTBFQjgtXFx1MEVCOSIKKyAgICAgICAgICAgICsgIlxcdTBFQzgtXFx1MEVDQlxcdTBFREMtXFx1MEVERFxcdTBGMENcXHUwRjE4LVxcdTBGMTlcXHUwRjM1IgorICAgICAgICAgICAgKyAiXFx1MEYzN1xcdTBGMzlcXHUwRjQzXFx1MEY0RFxcdTBGNTJcXHUwRjU3XFx1MEY1Q1xcdTBGNjlcXHUwRjcxLSIKKyAgICAgICAgICAgICsgIlxcdTBGN0RcXHUwRjgwLVxcdTBGODRcXHUwRjg2LVxcdTBGODdcXHUwRjkzXFx1MEY5RFxcdTBGQTIiCisgICAgICAgICAgICArICJcXHUwRkE3XFx1MEZBQ1xcdTBGQjlcXHUwRkM2XFx1MTAyNlxcdTEwMzdcXHUxMDM5XFx1MTcxNFxcdTE3MzQiCisgICAgICAgICAgICArICJcXHUxN0QyXFx1MThBOVxcdTFFMDAtXFx1MUU5QlxcdTFFQTAtXFx1MUVGOVxcdTFGMDAtXFx1MUYxNSIKKyAgICAgICAgICAgICsgIlxcdTFGMTgtXFx1MUYxRFxcdTFGMjAtXFx1MUY0NVxcdTFGNDgtXFx1MUY0RFxcdTFGNTAtXFx1MUY1NyIKKyAgICAgICAgICAgICsgIlxcdTFGNTlcXHUxRjVCXFx1MUY1RFxcdTFGNUYtXFx1MUY3RFxcdTFGODAtXFx1MUZCNFxcdTFGQjYtIgorICAgICAgICAgICAgKyAiXFx1MUZDNFxcdTFGQzYtXFx1MUZEM1xcdTFGRDYtXFx1MUZEQlxcdTFGREQtXFx1MUZFRlxcdTFGRjItIgorICAgICAgICAgICAgKyAiXFx1MUZGNFxcdTFGRjYtXFx1MUZGRVxcdTIwMDAtXFx1MjAwQVxcdTIwMTFcXHUyMDE3XFx1MjAyNC0iCisgICAgICAgICAgICArICJcXHUyMDI2XFx1MjAyRlxcdTIwMzMtXFx1MjAzNFxcdTIwMzYtXFx1MjAzN1xcdTIwM0NcXHUyMDNFIgorICAgICAgICAgICAgKyAiXFx1MjA0Ny1cXHUyMDQ5XFx1MjA1N1xcdTIwNUZcXHUyMDcwLVxcdTIwNzFcXHUyMDc0LVxcdTIwOEUiCisgICAgICAgICAgICArICJcXHUyMEE4XFx1MjBEMC1cXHUyMERDXFx1MjBFMVxcdTIwRTUtXFx1MjBFQVxcdTIxMDAtXFx1MjEwMyIKKyAgICAgICAgICAgICsgIlxcdTIxMDUtXFx1MjEwN1xcdTIxMDktXFx1MjExM1xcdTIxMTUtXFx1MjExNlxcdTIxMTktXFx1MjExRCIKKyAgICAgICAgICAgICsgIlxcdTIxMjAtXFx1MjEyMlxcdTIxMjRcXHUyMTI2XFx1MjEyOFxcdTIxMkEtXFx1MjEyRFxcdTIxMkYtIgorICAgICAgICAgICAgKyAiXFx1MjEzMVxcdTIxMzMtXFx1MjEzOVxcdTIxM0QtXFx1MjE0MFxcdTIxNDUtXFx1MjE0OVxcdTIxNTMtIgorICAgICAgICAgICAgKyAiXFx1MjE3RlxcdTIxOUEtXFx1MjE5QlxcdTIxQUVcXHUyMUNELVxcdTIxQ0ZcXHUyMjA0XFx1MjIwOSIKKyAgICAgICAgICAgICsgIlxcdTIyMENcXHUyMjI0XFx1MjIyNlxcdTIyMkMtXFx1MjIyRFxcdTIyMkYtXFx1MjIzMFxcdTIyNDEiCisgICAgICAgICAgICArICJcXHUyMjQ0XFx1MjI0N1xcdTIyNDlcXHUyMjYwXFx1MjI2MlxcdTIyNkQtXFx1MjI3MVxcdTIyNzQtIgorICAgICAgICAgICAgKyAiXFx1MjI3NVxcdTIyNzgtXFx1MjI3OVxcdTIyODAtXFx1MjI4MVxcdTIyODQtXFx1MjI4NVxcdTIyODgtIgorICAgICAgICAgICAgKyAiXFx1MjI4OVxcdTIyQUMtXFx1MjJBRlxcdTIyRTAtXFx1MjJFM1xcdTIyRUEtXFx1MjJFRFxcdTIzMjktIgorICAgICAgICAgICAgKyAiXFx1MjMyQVxcdTI0NjAtXFx1MjRFQVxcdTJBMENcXHUyQTc0LVxcdTJBNzZcXHUyQURDXFx1MkU5RiIKKyAgICAgICAgICAgICsgIlxcdTJFRjNcXHUyRjAwLVxcdTJGRDVcXHUzMDAwXFx1MzAyQS1cXHUzMDJGXFx1MzAzNlxcdTMwMzgtIgorICAgICAgICAgICAgKyAiXFx1MzAzQVxcdTMwNENcXHUzMDRFXFx1MzA1MFxcdTMwNTJcXHUzMDU0XFx1MzA1NlxcdTMwNThcXHUzMDVBIgorICAgICAgICAgICAgKyAiXFx1MzA1Q1xcdTMwNUVcXHUzMDYwXFx1MzA2MlxcdTMwNjVcXHUzMDY3XFx1MzA2OVxcdTMwNzAtXFx1MzA3MSIKKyAgICAgICAgICAgICsgIlxcdTMwNzMtXFx1MzA3NFxcdTMwNzYtXFx1MzA3N1xcdTMwNzktXFx1MzA3QVxcdTMwN0MtXFx1MzA3RCIKKyAgICAgICAgICAgICsgIlxcdTMwOTRcXHUzMDk5LVxcdTMwOUNcXHUzMDlFLVxcdTMwOUZcXHUzMEFDXFx1MzBBRVxcdTMwQjAiCisgICAgICAgICAgICArICJcXHUzMEIyXFx1MzBCNFxcdTMwQjZcXHUzMEI4XFx1MzBCQVxcdTMwQkNcXHUzMEJFXFx1MzBDMFxcdTMwQzIiCisgICAgICAgICAgICArICJcXHUzMEM1XFx1MzBDN1xcdTMwQzlcXHUzMEQwLVxcdTMwRDFcXHUzMEQzLVxcdTMwRDRcXHUzMEQ2LSIKKyAgICAgICAgICAgICsgIlxcdTMwRDdcXHUzMEQ5LVxcdTMwREFcXHUzMERDLVxcdTMwRERcXHUzMEY0XFx1MzBGNy1cXHUzMEZBIgorICAgICAgICAgICAgKyAiXFx1MzBGRS1cXHUzMEZGXFx1MzEzMS1cXHUzMThFXFx1MzE5Mi1cXHUzMTlGXFx1MzIwMC1cXHUzMjFDIgorICAgICAgICAgICAgKyAiXFx1MzIyMC1cXHUzMjQzXFx1MzI1MS1cXHUzMjdCXFx1MzI4MC1cXHUzMkNCXFx1MzJEMC1cXHUzMkZFIgorICAgICAgICAgICAgKyAiXFx1MzMwMC1cXHUzMzc2XFx1MzM3Qi1cXHUzM0REXFx1MzNFMC1cXHUzM0ZFXFx1QUMwMC1cXHVEN0EzIgorICAgICAgICAgICAgKyAiXFx1RjkwMC1cXHVGQTBEXFx1RkExMFxcdUZBMTJcXHVGQTE1LVxcdUZBMUVcXHVGQTIwXFx1RkEyMiIKKyAgICAgICAgICAgICsgIlxcdUZBMjUtXFx1RkEyNlxcdUZBMkEtXFx1RkEyRFxcdUZBMzAtXFx1RkE2QVxcdUZCMDAtXFx1RkIwNiIKKyAgICAgICAgICAgICsgIlxcdUZCMTMtXFx1RkIxN1xcdUZCMUQtXFx1RkIzNlxcdUZCMzgtXFx1RkIzQ1xcdUZCM0VcXHVGQjQwLSIKKyAgICAgICAgICAgICsgIlxcdUZCNDFcXHVGQjQzLVxcdUZCNDRcXHVGQjQ2LVxcdUZCQjFcXHVGQkQzLVxcdUZEM0RcXHVGRDUwLSIKKyAgICAgICAgICAgICsgIlxcdUZEOEZcXHVGRDkyLVxcdUZEQzdcXHVGREYwLVxcdUZERkNcXHVGRTIwLVxcdUZFMjNcXHVGRTMwLSIKKyAgICAgICAgICAgICsgIlxcdUZFNDRcXHVGRTQ5LVxcdUZFNTJcXHVGRTU0LVxcdUZFNjZcXHVGRTY4LVxcdUZFNkJcXHVGRTcwLSIKKyAgICAgICAgICAgICsgIlxcdUZFNzJcXHVGRTc0XFx1RkU3Ni1cXHVGRUZDXFx1RkYwMS1cXHVGRkJFXFx1RkZDMi1cXHVGRkM3IgorICAgICAgICAgICAgKyAiXFx1RkZDQS1cXHVGRkNGXFx1RkZEMi1cXHVGRkQ3XFx1RkZEQS1cXHVGRkRDXFx1RkZFMC1cXHVGRkU2IgorICAgICAgICAgICAgKyAiXFx1RkZFOC1cXHVGRkVFXFxVMDAwMUQxNUUtXFxVMDAwMUQxNjlcXFUwMDAxRDE2RC1cXFUwMDAxRDE3MiIKKyAgICAgICAgICAgICsgIlxcVTAwMDFEMTdCLVxcVTAwMDFEMTgyXFxVMDAwMUQxODUtXFxVMDAwMUQxOEJcXFUwMDAxRDFBQS0iCisgICAgICAgICAgICArICJcXFUwMDAxRDFBRFxcVTAwMDFEMUJCLVxcVTAwMDFEMUMwXFxVMDAwMUQ0MDAtXFxVMDAwMUQ0NTRcXFUwMDAxIgorICAgICAgICAgICAgKyAiRDQ1Ni1cXFUwMDAxRDQ5Q1xcVTAwMDFENDlFLVxcVTAwMDFENDlGXFxVMDAwMUQ0QTJcXFUwMDAxRDRBNS0iCisgICAgICAgICAgICArICJcXFUwMDAxRDRBNlxcVTAwMDFENEE5LVxcVTAwMDFENEFDXFxVMDAwMUQ0QUUtXFxVMDAwMUQ0QjlcXFUwMDAxIgorICAgICAgICAgICAgKyAiRDRCQlxcVTAwMDFENEJELVxcVTAwMDFENEMwXFxVMDAwMUQ0QzItXFxVMDAwMUQ0QzNcXFUwMDAxRDRDNS0iCisgICAgICAgICAgICArICJcXFUwMDAxRDUwNVxcVTAwMDFENTA3LVxcVTAwMDFENTBBXFxVMDAwMUQ1MEQtXFxVMDAwMUQ1MTRcXFUwMDAxIgorICAgICAgICAgICAgKyAiRDUxNi1cXFUwMDAxRDUxQ1xcVTAwMDFENTFFLVxcVTAwMDFENTM5XFxVMDAwMUQ1M0ItXFxVMDAwMUQ1M0UiCisgICAgICAgICAgICArICJcXFUwMDAxRDU0MC1cXFUwMDAxRDU0NFxcVTAwMDFENTQ2XFxVMDAwMUQ1NEEtXFxVMDAwMUQ1NTBcXFUwMDAxIgorICAgICAgICAgICAgKyAiRDU1Mi1cXFUwMDAxRDZBM1xcVTAwMDFENkE4LVxcVTAwMDFEN0M5XFxVMDAwMUQ3Q0UtXFxVMDAwMUQ3RkYiCisgICAgICAgICAgICArICJcXFUwMDAyRjgwMC1cXFUwMDAyRkExRF0iLCBmYWxzZSk7CisvKlVuaWNvZGU6IAorICAgICAgIlteoKiqr7IttbgturwtvsAtxcctz9Et1tkt3eAt5ect7/Et9vkt/f8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8iCisgICAgKyAiLT8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/Pz8/LT8/Py0/Py0/Py0/Py0/Py0/PyIKKyAgICArICItPz8tPz8/Py0/Pz8/LT8/Pz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8/LT8/LT8/LT8/Py0/Pz8tIgorICAgICsgIj8/LT8/Py0/Pz8/Py0/Py0/Py0/Py0/Pz8tPz8/Pz8/Py0/Py0/Pz8tPz8tPz8/Pz8/Py0/Pz8/Pz8/LT8/LT8iCisgICAgKyAiPz8tPz8/Py0/Pz8tPz8tPz8/LT8/Pz8tPz8/LT8/LT8/Py0/Py0/Py0/Pz8tPz8/Pz8/Pz8/Pz8tPz8tPz8tPyIKKyAgICArICI/Pz8/Pz8/Pz8/Pz8/Pz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8/Pz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPyIKKyAgICArICJcPy1cPz8/Py2FPz8tPz8tPz8/Py0/P1w/Py0/Py0/Pz8tPz8/LT8/LT8/LT8/LT8/LT8/LT8/LZk/Pz8/LT8/IgorICAgICsgIi0/Py0/Py0/Py0/Py0/Py0/Pz8tPz8/Pz8/Py0/Py0/Pz8/Pz8/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0iCisgICAgKyAiPz8tPz8tPz8/LT8/Pz8/LT9cPz8tPz8/LT8/Pz8/Pz8/Pz8/Pz8/Pz8/LT8/LT8/LT8/LT8/LT8/Py0/Py0/PyIKKyAgICArICI/Pz8/Pz8/Pz8/Pz8/Pz8tPz8tPz8tPz8tPz8tPz8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/IgorICAgICsgIi0/Py0/Py0/Pz8/LT8/Pz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LT8iCisgICAgKyAiPy0/Py0/Py0/Py0/Pz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8iCisgICAgKyAiLT8/LT8/LT8/LT8/Py0/Py0/Py0/Pz8tPz8tPz8tPz8tPz8tPz8iCisgICAgKyAiLT8/LT8/LT8/LT8/Py0/Py0/Py0/Py0/Py0/XSIqLworCisgICAgICAgIFNLSVBQQUJMRVNbS0NdID0gbmV3IFVuaWNvZGVTZXQoCisJICAgICAgICAiW148LT5BLVBSLVphLXByLXpcXHUwMEEwXFx1MDBBOFxcdTAwQUFcXHUwMEFGXFx1MDBCMi1cXHUwMEI1IgorICAgICAgICAgICAgKyAiXFx1MDBCOC1cXHUwMEJBXFx1MDBCQy1cXHUwMEJFXFx1MDBDMC1cXHUwMENGXFx1MDBEMS1cXHUwMEQ2IgorICAgICAgICAgICAgKyAiXFx1MDBEOC1cXHUwMEREXFx1MDBFMC1cXHUwMEVGXFx1MDBGMS1cXHUwMEY2XFx1MDBGOC1cXHUwMEZEIgorICAgICAgICAgICAgKyAiXFx1MDBGRi1cXHUwMTAzXFx1MDEwNi1cXHUwMTBGXFx1MDExMi1cXHUwMTE3XFx1MDExQS1cXHUwMTIxIgorICAgICAgICAgICAgKyAiXFx1MDEyNC1cXHUwMTI1XFx1MDEyOC1cXHUwMTJEXFx1MDEzMFxcdTAxMzItXFx1MDEzM1xcdTAxMzktIgorICAgICAgICAgICAgKyAiXFx1MDEzQVxcdTAxM0QtXFx1MDE0MFxcdTAxNDMtXFx1MDE0NFxcdTAxNDctXFx1MDE0OVxcdTAxNEMtIgorICAgICAgICAgICAgKyAiXFx1MDE1MVxcdTAxNTQtXFx1MDE1NVxcdTAxNTgtXFx1MDE1RFxcdTAxNjAtXFx1MDE2MVxcdTAxNjQtIgorICAgICAgICAgICAgKyAiXFx1MDE2NVxcdTAxNjgtXFx1MDE3MVxcdTAxNzQtXFx1MDE3RlxcdTAxQTAtXFx1MDFBMVxcdTAxQUYtIgorICAgICAgICAgICAgKyAiXFx1MDFCMFxcdTAxQjdcXHUwMUM0LVxcdTAxRENcXHUwMURFLVxcdTAxRTFcXHUwMUU2LVxcdTAxRUIiCisgICAgICAgICAgICArICJcXHUwMUYxLVxcdTAxRjVcXHUwMUY4LVxcdTAxRkJcXHUwMjAwLVxcdTAyMUJcXHUwMjFFLVxcdTAyMUYiCisgICAgICAgICAgICArICJcXHUwMjI2LVxcdTAyMzNcXHUwMjkyXFx1MDJCMC1cXHUwMkI4XFx1MDJEOC1cXHUwMkREXFx1MDJFMC0iCisgICAgICAgICAgICArICJcXHUwMkU0XFx1MDMwMC1cXHUwMzRFXFx1MDM2MC1cXHUwMzZGXFx1MDM3NFxcdTAzN0FcXHUwMzdFIgorICAgICAgICAgICAgKyAiXFx1MDM4NC1cXHUwMzg1XFx1MDM4N1xcdTAzOTFcXHUwMzk1XFx1MDM5N1xcdTAzOTlcXHUwMzlGXFx1MDNBMSIKKyAgICAgICAgICAgICsgIlxcdTAzQTVcXHUwM0E5XFx1MDNBQ1xcdTAzQUVcXHUwM0IxXFx1MDNCNVxcdTAzQjdcXHUwM0I5XFx1MDNCRiIKKyAgICAgICAgICAgICsgIlxcdTAzQzFcXHUwM0M1XFx1MDNDOS1cXHUwM0NCXFx1MDNDRVxcdTAzRDAtXFx1MDNENlxcdTAzRjAtIgorICAgICAgICAgICAgKyAiXFx1MDNGMlxcdTAzRjQtXFx1MDNGNVxcdTA0MDZcXHUwNDEwXFx1MDQxM1xcdTA0MTUtXFx1MDQxOCIKKyAgICAgICAgICAgICsgIlxcdTA0MUFcXHUwNDFFXFx1MDQyM1xcdTA0MjdcXHUwNDJCXFx1MDQyRFxcdTA0MzBcXHUwNDMzXFx1MDQzNS0iCisgICAgICAgICAgICArICJcXHUwNDM4XFx1MDQzQVxcdTA0M0VcXHUwNDQzXFx1MDQ0N1xcdTA0NEJcXHUwNDREXFx1MDQ1NlxcdTA0NzQtIgorICAgICAgICAgICAgKyAiXFx1MDQ3NVxcdTA0ODMtXFx1MDQ4NlxcdTA0RDgtXFx1MDREOVxcdTA0RTgtXFx1MDRFOVxcdTA1ODciCisgICAgICAgICAgICArICJcXHUwNTkxLVxcdTA1QTFcXHUwNUEzLVxcdTA1QjlcXHUwNUJCLVxcdTA1QkRcXHUwNUJGXFx1MDVDMS0iCisgICAgICAgICAgICArICJcXHUwNUMyXFx1MDVDNFxcdTA2MjItXFx1MDYyM1xcdTA2MjdcXHUwNjQ4XFx1MDY0QS1cXHUwNjU1IgorICAgICAgICAgICAgKyAiXFx1MDY3MFxcdTA2NzUtXFx1MDY3OFxcdTA2QzFcXHUwNkQyXFx1MDZENS1cXHUwNkRDXFx1MDZERi0iCisgICAgICAgICAgICArICJcXHUwNkU0XFx1MDZFNy1cXHUwNkU4XFx1MDZFQS1cXHUwNkVEXFx1MDcxMVxcdTA3MzAtXFx1MDc0QSIKKyAgICAgICAgICAgICsgIlxcdTA5MjhcXHUwOTMwXFx1MDkzM1xcdTA5M0NcXHUwOTREXFx1MDk1MS1cXHUwOTU0XFx1MDk1OC0iCisgICAgICAgICAgICArICJcXHUwOTVGXFx1MDlCQ1xcdTA5QkVcXHUwOUM3XFx1MDlDRFxcdTA5RDdcXHUwOURDLVxcdTA5RERcXHUwOURGIgorICAgICAgICAgICAgKyAiXFx1MEEzM1xcdTBBMzZcXHUwQTNDXFx1MEE0RFxcdTBBNTktXFx1MEE1QlxcdTBBNUVcXHUwQUJDXFx1MEFDRCIKKyAgICAgICAgICAgICsgIlxcdTBCM0NcXHUwQjNFXFx1MEI0N1xcdTBCNERcXHUwQjU2LVxcdTBCNTdcXHUwQjVDLVxcdTBCNUQiCisgICAgICAgICAgICArICJcXHUwQjkyXFx1MEJCRVxcdTBCQzYtXFx1MEJDN1xcdTBCQ0RcXHUwQkQ3XFx1MEM0NlxcdTBDNERcXHUwQzU1IgorICAgICAgICAgICAgKyAiLVxcdTBDNTZcXHUwQ0JGXFx1MENDMlxcdTBDQzZcXHUwQ0NBXFx1MENDRFxcdTBDRDUtXFx1MENENiIKKyAgICAgICAgICAgICsgIlxcdTBEM0VcXHUwRDQ2LVxcdTBENDdcXHUwRDREXFx1MEQ1N1xcdTBEQ0FcXHUwRENGXFx1MEREOVxcdTBEREMiCisgICAgICAgICAgICArICJcXHUwRERGXFx1MEUzM1xcdTBFMzgtXFx1MEUzQVxcdTBFNDgtXFx1MEU0QlxcdTBFQjNcXHUwRUI4LSIKKyAgICAgICAgICAgICsgIlxcdTBFQjlcXHUwRUM4LVxcdTBFQ0JcXHUwRURDLVxcdTBFRERcXHUwRjBDXFx1MEYxOC1cXHUwRjE5IgorICAgICAgICAgICAgKyAiXFx1MEYzNVxcdTBGMzdcXHUwRjM5XFx1MEY0M1xcdTBGNERcXHUwRjUyXFx1MEY1N1xcdTBGNUNcXHUwRjY5IgorICAgICAgICAgICAgKyAiXFx1MEY3MS1cXHUwRjdEXFx1MEY4MC1cXHUwRjg0XFx1MEY4Ni1cXHUwRjg3XFx1MEY5M1xcdTBGOUQiCisgICAgICAgICAgICArICJcXHUwRkEyXFx1MEZBN1xcdTBGQUNcXHUwRkI5XFx1MEZDNlxcdTEwMjVcXHUxMDJFXFx1MTAzN1xcdTEwMzkiCisgICAgICAgICAgICArICJcXHUxMTAwLVxcdTExMTJcXHUxMTYxLVxcdTExNzVcXHUxMUE4LVxcdTExQzJcXHUxNzE0XFx1MTczNCIKKyAgICAgICAgICAgICsgIlxcdTE3RDJcXHUxOEE5XFx1MUUwMC1cXHUxRTAzXFx1MUUwQS1cXHUxRTBGXFx1MUUxMi1cXHUxRTFCIgorICAgICAgICAgICAgKyAiXFx1MUUyMC1cXHUxRTI3XFx1MUUyQS1cXHUxRTQxXFx1MUU0NC1cXHUxRTUzXFx1MUU1OC1cXHUxRTdEIgorICAgICAgICAgICAgKyAiXFx1MUU4MC1cXHUxRTg3XFx1MUU4RS1cXHUxRTkxXFx1MUU5Ni1cXHUxRTlCXFx1MUVBMC1cXHUxRUYzIgorICAgICAgICAgICAgKyAiXFx1MUVGNi1cXHUxRUY5XFx1MUYwMC1cXHUxRjExXFx1MUYxOC1cXHUxRjE5XFx1MUYyMC1cXHUxRjMxIgorICAgICAgICAgICAgKyAiXFx1MUYzOC1cXHUxRjM5XFx1MUY0MC1cXHUxRjQxXFx1MUY0OC1cXHUxRjQ5XFx1MUY1MC1cXHUxRjUxIgorICAgICAgICAgICAgKyAiXFx1MUY1OVxcdTFGNjAtXFx1MUY3MVxcdTFGNzMtXFx1MUY3NVxcdTFGNzdcXHUxRjc5XFx1MUY3Qi0iCisgICAgICAgICAgICArICJcXHUxRjdEXFx1MUY4MC1cXHUxRjgxXFx1MUY4OC1cXHUxRjg5XFx1MUY5MC1cXHUxRjkxXFx1MUY5OC0iCisgICAgICAgICAgICArICJcXHUxRjk5XFx1MUZBMC1cXHUxRkExXFx1MUZBOC1cXHUxRkE5XFx1MUZCM1xcdTFGQjZcXHUxRkJCLSIKKyAgICAgICAgICAgICsgIlxcdTFGQzFcXHUxRkMzXFx1MUZDNlxcdTFGQzlcXHUxRkNCLVxcdTFGQ0ZcXHUxRkQzXFx1MUZEQlxcdTFGREQiCisgICAgICAgICAgICArICItXFx1MUZERlxcdTFGRTNcXHUxRkVCXFx1MUZFRC1cXHUxRkVGXFx1MUZGM1xcdTFGRjZcXHUxRkY5IgorICAgICAgICAgICAgKyAiXFx1MUZGQi1cXHUxRkZFXFx1MjAwMC1cXHUyMDBBXFx1MjAxMVxcdTIwMTdcXHUyMDI0LVxcdTIwMjYiCisgICAgICAgICAgICArICJcXHUyMDJGXFx1MjAzMy1cXHUyMDM0XFx1MjAzNi1cXHUyMDM3XFx1MjAzQ1xcdTIwM0VcXHUyMDQ3LSIKKyAgICAgICAgICAgICsgIlxcdTIwNDlcXHUyMDU3XFx1MjA1RlxcdTIwNzAtXFx1MjA3MVxcdTIwNzQtXFx1MjA4RVxcdTIwQTgiCisgICAgICAgICAgICArICJcXHUyMEQwLVxcdTIwRENcXHUyMEUxXFx1MjBFNS1cXHUyMEVBXFx1MjEwMC1cXHUyMTAzXFx1MjEwNS0iCisgICAgICAgICAgICArICJcXHUyMTA3XFx1MjEwOS1cXHUyMTEzXFx1MjExNS1cXHUyMTE2XFx1MjExOS1cXHUyMTFEXFx1MjEyMC0iCisgICAgICAgICAgICArICJcXHUyMTIyXFx1MjEyNFxcdTIxMjZcXHUyMTI4XFx1MjEyQS1cXHUyMTJEXFx1MjEyRi1cXHUyMTMxIgorICAgICAgICAgICAgKyAiXFx1MjEzMy1cXHUyMTM5XFx1MjEzRC1cXHUyMTQwXFx1MjE0NS1cXHUyMTQ5XFx1MjE1My1cXHUyMTdGIgorICAgICAgICAgICAgKyAiXFx1MjE5MFxcdTIxOTJcXHUyMTk0XFx1MjFEMFxcdTIxRDJcXHUyMUQ0XFx1MjIwM1xcdTIyMDhcXHUyMjBCIgorICAgICAgICAgICAgKyAiXFx1MjIyM1xcdTIyMjVcXHUyMjJDLVxcdTIyMkRcXHUyMjJGLVxcdTIyMzBcXHUyMjNDXFx1MjI0MyIKKyAgICAgICAgICAgICsgIlxcdTIyNDVcXHUyMjQ4XFx1MjI0RFxcdTIyNjFcXHUyMjY0LVxcdTIyNjVcXHUyMjcyLVxcdTIyNzMiCisgICAgICAgICAgICArICJcXHUyMjc2LVxcdTIyNzdcXHUyMjdBLVxcdTIyN0RcXHUyMjgyLVxcdTIyODNcXHUyMjg2LVxcdTIyODciCisgICAgICAgICAgICArICJcXHUyMjkxLVxcdTIyOTJcXHUyMkEyXFx1MjJBOC1cXHUyMkE5XFx1MjJBQlxcdTIyQjItXFx1MjJCNSIKKyAgICAgICAgICAgICsgIlxcdTIzMjktXFx1MjMyQVxcdTI0NjAtXFx1MjRFQVxcdTJBMENcXHUyQTc0LVxcdTJBNzZcXHUyQURDIgorICAgICAgICAgICAgKyAiXFx1MkU5RlxcdTJFRjNcXHUyRjAwLVxcdTJGRDVcXHUzMDAwXFx1MzAyQS1cXHUzMDJGXFx1MzAzNiIKKyAgICAgICAgICAgICsgIlxcdTMwMzgtXFx1MzAzQVxcdTMwNDZcXHUzMDRCXFx1MzA0RFxcdTMwNEZcXHUzMDUxXFx1MzA1M1xcdTMwNTUiCisgICAgICAgICAgICArICJcXHUzMDU3XFx1MzA1OVxcdTMwNUJcXHUzMDVEXFx1MzA1RlxcdTMwNjFcXHUzMDY0XFx1MzA2NlxcdTMwNjgiCisgICAgICAgICAgICArICJcXHUzMDZGXFx1MzA3MlxcdTMwNzVcXHUzMDc4XFx1MzA3QlxcdTMwOTktXFx1MzA5RFxcdTMwOUZcXHUzMEE2IgorICAgICAgICAgICAgKyAiXFx1MzBBQlxcdTMwQURcXHUzMEFGXFx1MzBCMVxcdTMwQjNcXHUzMEI1XFx1MzBCN1xcdTMwQjlcXHUzMEJCIgorICAgICAgICAgICAgKyAiXFx1MzBCRFxcdTMwQkZcXHUzMEMxXFx1MzBDNFxcdTMwQzZcXHUzMEM4XFx1MzBDRlxcdTMwRDJcXHUzMEQ1IgorICAgICAgICAgICAgKyAiXFx1MzBEOFxcdTMwREJcXHUzMEVGLVxcdTMwRjJcXHUzMEZEXFx1MzBGRlxcdTMxMzEtXFx1MzE4RSIKKyAgICAgICAgICAgICsgIlxcdTMxOTItXFx1MzE5RlxcdTMyMDAtXFx1MzIxQ1xcdTMyMjAtXFx1MzI0M1xcdTMyNTEtXFx1MzI3QiIKKyAgICAgICAgICAgICsgIlxcdTMyODAtXFx1MzJDQlxcdTMyRDAtXFx1MzJGRVxcdTMzMDAtXFx1MzM3NlxcdTMzN0ItXFx1MzNERCIKKyAgICAgICAgICAgICsgIlxcdTMzRTAtXFx1MzNGRVxcdUFDMDBcXHVBQzFDXFx1QUMzOFxcdUFDNTRcXHVBQzcwXFx1QUM4Q1xcdUFDQTgiCisgICAgICAgICAgICArICJcXHVBQ0M0XFx1QUNFMFxcdUFDRkNcXHVBRDE4XFx1QUQzNFxcdUFENTBcXHVBRDZDXFx1QUQ4OFxcdUFEQTQiCisgICAgICAgICAgICArICJcXHVBREMwXFx1QUREQ1xcdUFERjhcXHVBRTE0XFx1QUUzMFxcdUFFNENcXHVBRTY4XFx1QUU4NFxcdUFFQTAiCisgICAgICAgICAgICArICJcXHVBRUJDXFx1QUVEOFxcdUFFRjRcXHVBRjEwXFx1QUYyQ1xcdUFGNDhcXHVBRjY0XFx1QUY4MFxcdUFGOUMiCisgICAgICAgICAgICArICJcXHVBRkI4XFx1QUZENFxcdUFGRjBcXHVCMDBDXFx1QjAyOFxcdUIwNDRcXHVCMDYwXFx1QjA3Q1xcdUIwOTgiCisgICAgICAgICAgICArICJcXHVCMEI0XFx1QjBEMFxcdUIwRUNcXHVCMTA4XFx1QjEyNFxcdUIxNDBcXHVCMTVDXFx1QjE3OFxcdUIxOTQiCisgICAgICAgICAgICArICJcXHVCMUIwXFx1QjFDQ1xcdUIxRThcXHVCMjA0XFx1QjIyMFxcdUIyM0NcXHVCMjU4XFx1QjI3NFxcdUIyOTAiCisgICAgICAgICAgICArICJcXHVCMkFDXFx1QjJDOFxcdUIyRTRcXHVCMzAwXFx1QjMxQ1xcdUIzMzhcXHVCMzU0XFx1QjM3MFxcdUIzOEMiCisgICAgICAgICAgICArICJcXHVCM0E4XFx1QjNDNFxcdUIzRTBcXHVCM0ZDXFx1QjQxOFxcdUI0MzRcXHVCNDUwXFx1QjQ2Q1xcdUI0ODgiCisgICAgICAgICAgICArICJcXHVCNEE0XFx1QjRDMFxcdUI0RENcXHVCNEY4XFx1QjUxNFxcdUI1MzBcXHVCNTRDXFx1QjU2OFxcdUI1ODQiCisgICAgICAgICAgICArICJcXHVCNUEwXFx1QjVCQ1xcdUI1RDhcXHVCNUY0XFx1QjYxMFxcdUI2MkNcXHVCNjQ4XFx1QjY2NFxcdUI2ODAiCisgICAgICAgICAgICArICJcXHVCNjlDXFx1QjZCOFxcdUI2RDRcXHVCNkYwXFx1QjcwQ1xcdUI3MjhcXHVCNzQ0XFx1Qjc2MFxcdUI3N0MiCisgICAgICAgICAgICArICJcXHVCNzk4XFx1QjdCNFxcdUI3RDBcXHVCN0VDXFx1QjgwOFxcdUI4MjRcXHVCODQwXFx1Qjg1Q1xcdUI4NzgiCisgICAgICAgICAgICArICJcXHVCODk0XFx1QjhCMFxcdUI4Q0NcXHVCOEU4XFx1QjkwNFxcdUI5MjBcXHVCOTNDXFx1Qjk1OFxcdUI5NzQiCisgICAgICAgICAgICArICJcXHVCOTkwXFx1QjlBQ1xcdUI5QzhcXHVCOUU0XFx1QkEwMFxcdUJBMUNcXHVCQTM4XFx1QkE1NFxcdUJBNzAiCisgICAgICAgICAgICArICJcXHVCQThDXFx1QkFBOFxcdUJBQzRcXHVCQUUwXFx1QkFGQ1xcdUJCMThcXHVCQjM0XFx1QkI1MFxcdUJCNkMiCisgICAgICAgICAgICArICJcXHVCQjg4XFx1QkJBNFxcdUJCQzBcXHVCQkRDXFx1QkJGOFxcdUJDMTRcXHVCQzMwXFx1QkM0Q1xcdUJDNjgiCisgICAgICAgICAgICArICJcXHVCQzg0XFx1QkNBMFxcdUJDQkNcXHVCQ0Q4XFx1QkNGNFxcdUJEMTBcXHVCRDJDXFx1QkQ0OFxcdUJENjQiCisgICAgICAgICAgICArICJcXHVCRDgwXFx1QkQ5Q1xcdUJEQjhcXHVCREQ0XFx1QkRGMFxcdUJFMENcXHVCRTI4XFx1QkU0NFxcdUJFNjAiCisgICAgICAgICAgICArICJcXHVCRTdDXFx1QkU5OFxcdUJFQjRcXHVCRUQwXFx1QkVFQ1xcdUJGMDhcXHVCRjI0XFx1QkY0MFxcdUJGNUMiCisgICAgICAgICAgICArICJcXHVCRjc4XFx1QkY5NFxcdUJGQjBcXHVCRkNDXFx1QkZFOFxcdUMwMDRcXHVDMDIwXFx1QzAzQ1xcdUMwNTgiCisgICAgICAgICAgICArICJcXHVDMDc0XFx1QzA5MFxcdUMwQUNcXHVDMEM4XFx1QzBFNFxcdUMxMDBcXHVDMTFDXFx1QzEzOFxcdUMxNTQiCisgICAgICAgICAgICArICJcXHVDMTcwXFx1QzE4Q1xcdUMxQThcXHVDMUM0XFx1QzFFMFxcdUMxRkNcXHVDMjE4XFx1QzIzNFxcdUMyNTAiCisgICAgICAgICAgICArICJcXHVDMjZDXFx1QzI4OFxcdUMyQTRcXHVDMkMwXFx1QzJEQ1xcdUMyRjhcXHVDMzE0XFx1QzMzMFxcdUMzNEMiCisgICAgICAgICAgICArICJcXHVDMzY4XFx1QzM4NFxcdUMzQTBcXHVDM0JDXFx1QzNEOFxcdUMzRjRcXHVDNDEwXFx1QzQyQ1xcdUM0NDgiCisgICAgICAgICAgICArICJcXHVDNDY0XFx1QzQ4MFxcdUM0OUNcXHVDNEI4XFx1QzRENFxcdUM0RjBcXHVDNTBDXFx1QzUyOFxcdUM1NDQiCisgICAgICAgICAgICArICJcXHVDNTYwXFx1QzU3Q1xcdUM1OThcXHVDNUI0XFx1QzVEMFxcdUM1RUNcXHVDNjA4XFx1QzYyNFxcdUM2NDAiCisgICAgICAgICAgICArICJcXHVDNjVDXFx1QzY3OFxcdUM2OTRcXHVDNkIwXFx1QzZDQ1xcdUM2RThcXHVDNzA0XFx1QzcyMFxcdUM3M0MiCisgICAgICAgICAgICArICJcXHVDNzU4XFx1Qzc3NFxcdUM3OTBcXHVDN0FDXFx1QzdDOFxcdUM3RTRcXHVDODAwXFx1QzgxQ1xcdUM4MzgiCisgICAgICAgICAgICArICJcXHVDODU0XFx1Qzg3MFxcdUM4OENcXHVDOEE4XFx1QzhDNFxcdUM4RTBcXHVDOEZDXFx1QzkxOFxcdUM5MzQiCisgICAgICAgICAgICArICJcXHVDOTUwXFx1Qzk2Q1xcdUM5ODhcXHVDOUE0XFx1QzlDMFxcdUM5RENcXHVDOUY4XFx1Q0ExNFxcdUNBMzAiCisgICAgICAgICAgICArICJcXHVDQTRDXFx1Q0E2OFxcdUNBODRcXHVDQUEwXFx1Q0FCQ1xcdUNBRDhcXHVDQUY0XFx1Q0IxMFxcdUNCMkMiCisgICAgICAgICAgICArICJcXHVDQjQ4XFx1Q0I2NFxcdUNCODBcXHVDQjlDXFx1Q0JCOFxcdUNCRDRcXHVDQkYwXFx1Q0MwQ1xcdUNDMjgiCisgICAgICAgICAgICArICJcXHVDQzQ0XFx1Q0M2MFxcdUNDN0NcXHVDQzk4XFx1Q0NCNFxcdUNDRDBcXHVDQ0VDXFx1Q0QwOFxcdUNEMjQiCisgICAgICAgICAgICArICJcXHVDRDQwXFx1Q0Q1Q1xcdUNENzhcXHVDRDk0XFx1Q0RCMFxcdUNEQ0NcXHVDREU4XFx1Q0UwNFxcdUNFMjAiCisgICAgICAgICAgICArICJcXHVDRTNDXFx1Q0U1OFxcdUNFNzRcXHVDRTkwXFx1Q0VBQ1xcdUNFQzhcXHVDRUU0XFx1Q0YwMFxcdUNGMUMiCisgICAgICAgICAgICArICJcXHVDRjM4XFx1Q0Y1NFxcdUNGNzBcXHVDRjhDXFx1Q0ZBOFxcdUNGQzRcXHVDRkUwXFx1Q0ZGQ1xcdUQwMTgiCisgICAgICAgICAgICArICJcXHVEMDM0XFx1RDA1MFxcdUQwNkNcXHVEMDg4XFx1RDBBNFxcdUQwQzBcXHVEMERDXFx1RDBGOFxcdUQxMTQiCisgICAgICAgICAgICArICJcXHVEMTMwXFx1RDE0Q1xcdUQxNjhcXHVEMTg0XFx1RDFBMFxcdUQxQkNcXHVEMUQ4XFx1RDFGNFxcdUQyMTAiCisgICAgICAgICAgICArICJcXHVEMjJDXFx1RDI0OFxcdUQyNjRcXHVEMjgwXFx1RDI5Q1xcdUQyQjhcXHVEMkQ0XFx1RDJGMFxcdUQzMEMiCisgICAgICAgICAgICArICJcXHVEMzI4XFx1RDM0NFxcdUQzNjBcXHVEMzdDXFx1RDM5OFxcdUQzQjRcXHVEM0QwXFx1RDNFQ1xcdUQ0MDgiCisgICAgICAgICAgICArICJcXHVENDI0XFx1RDQ0MFxcdUQ0NUNcXHVENDc4XFx1RDQ5NFxcdUQ0QjBcXHVENENDXFx1RDRFOFxcdUQ1MDQiCisgICAgICAgICAgICArICJcXHVENTIwXFx1RDUzQ1xcdUQ1NThcXHVENTc0XFx1RDU5MFxcdUQ1QUNcXHVENUM4XFx1RDVFNFxcdUQ2MDAiCisgICAgICAgICAgICArICJcXHVENjFDXFx1RDYzOFxcdUQ2NTRcXHVENjcwXFx1RDY4Q1xcdUQ2QThcXHVENkM0XFx1RDZFMFxcdUQ2RkMiCisgICAgICAgICAgICArICJcXHVENzE4XFx1RDczNFxcdUQ3NTBcXHVENzZDXFx1RDc4OFxcdUY5MDAtXFx1RkEwRFxcdUZBMTBcXHVGQTEyIgorICAgICAgICAgICAgKyAiXFx1RkExNS1cXHVGQTFFXFx1RkEyMFxcdUZBMjJcXHVGQTI1LVxcdUZBMjZcXHVGQTJBLVxcdUZBMkQiCisgICAgICAgICAgICArICJcXHVGQTMwLVxcdUZBNkFcXHVGQjAwLVxcdUZCMDZcXHVGQjEzLVxcdUZCMTdcXHVGQjFELVxcdUZCMzYiCisgICAgICAgICAgICArICJcXHVGQjM4LVxcdUZCM0NcXHVGQjNFXFx1RkI0MC1cXHVGQjQxXFx1RkI0My1cXHVGQjQ0XFx1RkI0Ni0iCisgICAgICAgICAgICArICJcXHVGQkIxXFx1RkJEMy1cXHVGRDNEXFx1RkQ1MC1cXHVGRDhGXFx1RkQ5Mi1cXHVGREM3XFx1RkRGMC0iCisgICAgICAgICAgICArICJcXHVGREZDXFx1RkUyMC1cXHVGRTIzXFx1RkUzMC1cXHVGRTQ0XFx1RkU0OS1cXHVGRTUyXFx1RkU1NC0iCisgICAgICAgICAgICArICJcXHVGRTY2XFx1RkU2OC1cXHVGRTZCXFx1RkU3MC1cXHVGRTcyXFx1RkU3NFxcdUZFNzYtXFx1RkVGQyIKKyAgICAgICAgICAgICsgIlxcdUZGMDEtXFx1RkZCRVxcdUZGQzItXFx1RkZDN1xcdUZGQ0EtXFx1RkZDRlxcdUZGRDItXFx1RkZENyIKKyAgICAgICAgICAgICsgIlxcdUZGREEtXFx1RkZEQ1xcdUZGRTAtXFx1RkZFNlxcdUZGRTgtXFx1RkZFRVxcVTAwMDFEMTVFLVxcVTAwMDEiCisgICAgICAgICAgICArICJEMTY5XFxVMDAwMUQxNkQtXFxVMDAwMUQxNzJcXFUwMDAxRDE3Qi1cXFUwMDAxRDE4MlxcVTAwMDFEMTg1LSIKKyAgICAgICAgICAgICsgIlxcVTAwMDFEMThCXFxVMDAwMUQxQUEtXFxVMDAwMUQxQURcXFUwMDAxRDFCQi1cXFUwMDAxRDFDMFxcVTAwMDEiCisgICAgICAgICAgICArICJENDAwLVxcVTAwMDFENDU0XFxVMDAwMUQ0NTYtXFxVMDAwMUQ0OUNcXFUwMDAxRDQ5RS1cXFUwMDAxRDQ5RiIKKyAgICAgICAgICAgICsgIlxcVTAwMDFENEEyXFxVMDAwMUQ0QTUtXFxVMDAwMUQ0QTZcXFUwMDAxRDRBOS1cXFUwMDAxRDRBQ1xcVTAwMDEiCisgICAgICAgICAgICArICJENEFFLVxcVTAwMDFENEI5XFxVMDAwMUQ0QkJcXFUwMDAxRDRCRC1cXFUwMDAxRDRDMFxcVTAwMDFENEMyLSIKKyAgICAgICAgICAgICsgIlxcVTAwMDFENEMzXFxVMDAwMUQ0QzUtXFxVMDAwMUQ1MDVcXFUwMDAxRDUwNy1cXFUwMDAxRDUwQVxcVTAwMDEiCisgICAgICAgICAgICArICJENTBELVxcVTAwMDFENTE0XFxVMDAwMUQ1MTYtXFxVMDAwMUQ1MUNcXFUwMDAxRDUxRS1cXFUwMDAxRDUzOSIKKyAgICAgICAgICAgICsgIlxcVTAwMDFENTNCLVxcVTAwMDFENTNFXFxVMDAwMUQ1NDAtXFxVMDAwMUQ1NDRcXFUwMDAxRDU0NlxcVTAwMDEiCisgICAgICAgICAgICArICJENTRBLVxcVTAwMDFENTUwXFxVMDAwMUQ1NTItXFxVMDAwMUQ2QTNcXFUwMDAxRDZBOC1cXFUwMDAxRDdDOSIKKyAgICAgICAgICAgICsgIlxcVTAwMDFEN0NFLVxcVTAwMDFEN0ZGXFxVMDAwMkY4MDAtXFxVMDAwMkZBMURdIiwgZmFsc2UpOworLypVbmljb2RlOiAKKyAgICAgICJbXjwtPkEtUFItWmEtcHIteqCoqq+yLbW4Lbq8Lb7ALc/RLdbYLd3gLe/xLfb4Lf3/LT8/LT8/LT8/LT8/LT8/IgorICAgICsgIi0/Pz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8tP4otmj8tPz8tPz8tPz8tPz8tPz8/LT8/LT8/LT8/LT8/LT8/LT8iCisgICAgKyAiPy0/Py0/Pz8tPz8tPz8tPz8tPz8tPz8/Pz8tPz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8tPz8/LT8/LT8/LT8/Pz8/LSIKKyAgICArICI/Pz8/Pz8/Pz8/LT8/Pz8/Pz8/Py0/Py0/Py0/Py0/Pz8tPz8tPz8tPz8/LT8/Py0/Pz8/LT8/Py0/Pz8/LT8/IgorICAgICsgIi0/Py0/Py0/Pz8tPz8/Pz8/Py0/Py0/Pz8/Pz8/LT8/Pz8/Pz8tPz8/Pz8/Pz8/LT8/LT8/Pz8tPz8/Pz8/LT8iCisgICAgKyAiPz8/Pz8/LT8/Py0/Pz8/Pz8/Pz8/LT8/LT8/Py0/Py0/Py0/Pz8tPz8/Pz8/Pz8/Pz8tPz8tPz8tPz8/Pz8/PyIKKyAgICArICI/Pz8/Pz8tPz8tPz8tPz8/Pz8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/IgorICAgICsgIi0/Py0/Py0/Py0/Pz8tPz8tPz8/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Pz8/LT8/Pz8/LT8/Pz8tPz8/Py0/Pz8iCisgICAgKyAiPz8tP1w/LVw/Pz8/LYU/Py0/Py0/Pz8/LT8/XD8/LT8/LT8/Py0/Pz8tPz8tPz8tPz8tPz8tPz8tPz8tmT8/PyIKKyAgICArICI/LT8/LT8/LT8/LT8/LT8/LT8/Pz8/Pz8/Pz8/Pz8tPz8tPz8/Pz8/Pz8tPz8tPz8tPz8tPz8tPz8tPz8tPz8/IgorICAgICsgIi0/Pz8tPz8tPz8tPz8/LT8/Pz8/LT9cPz8tPz8/LT8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/LT8/Pz8/Pz8/Pz8iCisgICAgKyAiPz8/Pz8/Pz8/Pz8/Pz8tPz8/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Pz8/Pz8/Pz8/Pz8/Pz8/PyIKKyAgICArICI/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/IgorICAgICsgIj8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8iCisgICAgKyAiPz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/PyIKKyAgICArICI/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/IgorICAgICsgIj8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8iCisgICAgKyAiPz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/PyIKKyAgICArICItPz8/Py0/Pz8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/Py0/IgorICAgICsgIj8tPz8tPz8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LT8/LSIKKyAgICArICI/Py0/Py0/Pz8tPz8tPz8tPz8/LT8/LT8/LT8/LT8/LT8/LT8/LSIKKyAgICArICI/Py0/Py0/Pz8tPz8tPz8tPz8tPz8tP10iKi8KKyAgICB9ICAgIAorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3RleHQvTm9ybWFsaXplci5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvTm9ybWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjY4YTQxMGEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdGV4dC9Ob3JtYWxpemVyLmphdmEKQEAgLTAsMCArMSwyNTczIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgICAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvdGV4dC9Ob3JtYWxpemVyLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMTIvMDMgMjI6MDM6NTkgJCAKKyAqICRSZXZpc2lvbjogMS4yOCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS50ZXh0OworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuKjsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLk5vcm1hbGl6ZXJJbXBsOworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuVUNoYXJhY3RlclByb3BlcnR5OworaW1wb3J0IGphdmEudGV4dC5DaGFyYWN0ZXJJdGVyYXRvcjsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLlV0aWxpdHk7CisKKy8qKgorICogVW5pY29kZSBOb3JtYWxpemF0aW9uIAorICoKKyAqIDxoMj5Vbmljb2RlIG5vcm1hbGl6YXRpb24gQVBJPC9oMj4KKyAqCisgKiA8Y29kZT5ub3JtYWxpemU8L2NvZGU+IHRyYW5zZm9ybXMgVW5pY29kZSB0ZXh0IGludG8gYW4gZXF1aXZhbGVudCBjb21wb3NlZCBvcgorICogZGVjb21wb3NlZCBmb3JtLCBhbGxvd2luZyBmb3IgZWFzaWVyIHNvcnRpbmcgYW5kIHNlYXJjaGluZyBvZiB0ZXh0LgorICogPGNvZGU+bm9ybWFsaXplPC9jb2RlPiBzdXBwb3J0cyB0aGUgc3RhbmRhcmQgbm9ybWFsaXphdGlvbiBmb3JtcyBkZXNjcmliZWQgaW4KKyAqIDxhIGhyZWY9Imh0dHA6Ly93d3cudW5pY29kZS5vcmcvdW5pY29kZS9yZXBvcnRzL3RyMTUvIiB0YXJnZXQ9InVuaWNvZGUiPgorICogVW5pY29kZSBTdGFuZGFyZCBBbm5leCAjMTUgJm1kYXNoOyBVbmljb2RlIE5vcm1hbGl6YXRpb24gRm9ybXM8L2E+LgorICoKKyAqIENoYXJhY3RlcnMgd2l0aCBhY2NlbnRzIG9yIG90aGVyIGFkb3JubWVudHMgY2FuIGJlIGVuY29kZWQgaW4KKyAqIHNldmVyYWwgZGlmZmVyZW50IHdheXMgaW4gVW5pY29kZS4gIEZvciBleGFtcGxlLCB0YWtlIHRoZSBjaGFyYWN0ZXIgQS1hY3V0ZS4KKyAqIEluIFVuaWNvZGUsIHRoaXMgY2FuIGJlIGVuY29kZWQgYXMgYSBzaW5nbGUgY2hhcmFjdGVyICh0aGUKKyAqICJjb21wb3NlZCIgZm9ybSk6CisgKgorICogPHA+CisgKiAgICAgIDAwQzEgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEFDVVRFCisgKiA8L3A+CisgKgorICogb3IgYXMgdHdvIHNlcGFyYXRlIGNoYXJhY3RlcnMgKHRoZSAiZGVjb21wb3NlZCIgZm9ybSk6CisgKgorICogPHA+CisgKiAgICAgIDAwNDEgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQorICogICAgICAwMzAxICAgIENPTUJJTklORyBBQ1VURSBBQ0NFTlQKKyAqIDwvcD4KKyAqCisgKiBUbyBhIHVzZXIgb2YgeW91ciBwcm9ncmFtLCBob3dldmVyLCBib3RoIG9mIHRoZXNlIHNlcXVlbmNlcyBzaG91bGQgYmUKKyAqIHRyZWF0ZWQgYXMgdGhlIHNhbWUgInVzZXItbGV2ZWwiIGNoYXJhY3RlciAiQSB3aXRoIGFjdXRlIGFjY2VudCIuICBXaGVuIHlvdSAKKyAqIGFyZSBzZWFyY2hpbmcgb3IgY29tcGFyaW5nIHRleHQsIHlvdSBtdXN0IGVuc3VyZSB0aGF0IHRoZXNlIHR3byBzZXF1ZW5jZXMgYXJlIAorICogdHJlYXRlZCBlcXVpdmFsZW50bHkuICBJbiBhZGRpdGlvbiwgeW91IG11c3QgaGFuZGxlIGNoYXJhY3RlcnMgd2l0aCBtb3JlIHRoYW4KKyAqIG9uZSBhY2NlbnQuICBTb21ldGltZXMgdGhlIG9yZGVyIG9mIGEgY2hhcmFjdGVyJ3MgY29tYmluaW5nIGFjY2VudHMgaXMKKyAqIHNpZ25pZmljYW50LCB3aGlsZSBpbiBvdGhlciBjYXNlcyBhY2NlbnQgc2VxdWVuY2VzIGluIGRpZmZlcmVudCBvcmRlcnMgYXJlCisgKiByZWFsbHkgZXF1aXZhbGVudC4KKyAqCisgKiBTaW1pbGFybHksIHRoZSBzdHJpbmcgImZmaSIgY2FuIGJlIGVuY29kZWQgYXMgdGhyZWUgc2VwYXJhdGUgbGV0dGVyczoKKyAqCisgKiA8cD4KKyAqICAgICAgMDA2NiAgICBMQVRJTiBTTUFMTCBMRVRURVIgRgorICogICAgICAwMDY2ICAgIExBVElOIFNNQUxMIExFVFRFUiBGCisgKiAgICAgIDAwNjkgICAgTEFUSU4gU01BTEwgTEVUVEVSIEkKKyAqIDxccD4KKyAqCisgKiBvciBhcyB0aGUgc2luZ2xlIGNoYXJhY3RlcgorICoKKyAqIDxwPgorICogICAgICBGQjAzICAgIExBVElOIFNNQUxMIExJR0FUVVJFIEZGSQorICogPFxwPgorICoKKyAqIFRoZSBmZmkgbGlnYXR1cmUgaXMgbm90IGEgZGlzdGluY3Qgc2VtYW50aWMgY2hhcmFjdGVyLCBhbmQgc3RyaWN0bHkgc3BlYWtpbmcKKyAqIGl0IHNob3VsZG4ndCBiZSBpbiBVbmljb2RlIGF0IGFsbCwgYnV0IGl0IHdhcyBpbmNsdWRlZCBmb3IgY29tcGF0aWJpbGl0eQorICogd2l0aCBleGlzdGluZyBjaGFyYWN0ZXIgc2V0cyB0aGF0IGFscmVhZHkgcHJvdmlkZWQgaXQuICBUaGUgVW5pY29kZSBzdGFuZGFyZAorICogaWRlbnRpZmllcyBzdWNoIGNoYXJhY3RlcnMgYnkgZ2l2aW5nIHRoZW0gImNvbXBhdGliaWxpdHkiIGRlY29tcG9zaXRpb25zCisgKiBpbnRvIHRoZSBjb3JyZXNwb25kaW5nIHNlbWFudGljIGNoYXJhY3RlcnMuICBXaGVuIHNvcnRpbmcgYW5kIHNlYXJjaGluZywgeW91CisgKiB3aWxsIG9mdGVuIHdhbnQgdG8gdXNlIHRoZXNlIG1hcHBpbmdzLgorICoKKyAqIDxjb2RlPm5vcm1hbGl6ZTwvY29kZT4gaGVscHMgc29sdmUgdGhlc2UgcHJvYmxlbXMgYnkgdHJhbnNmb3JtaW5nIHRleHQgaW50byAKKyAqIHRoZSBjYW5vbmljYWwgY29tcG9zZWQgYW5kIGRlY29tcG9zZWQgZm9ybXMgYXMgc2hvd24gaW4gdGhlIGZpcnN0IGV4YW1wbGUgCisgKiBhYm92ZS4gSW4gYWRkaXRpb24sIHlvdSBjYW4gaGF2ZSBpdCBwZXJmb3JtIGNvbXBhdGliaWxpdHkgZGVjb21wb3NpdGlvbnMgc28gCisgKiB0aGF0IHlvdSBjYW4gdHJlYXQgY29tcGF0aWJpbGl0eSBjaGFyYWN0ZXJzIHRoZSBzYW1lIGFzIHRoZWlyIGVxdWl2YWxlbnRzLgorICogRmluYWxseSwgPGNvZGU+bm9ybWFsaXplPC9jb2RlPiByZWFycmFuZ2VzIGFjY2VudHMgaW50byB0aGUgcHJvcGVyIGNhbm9uaWNhbAorICogb3JkZXIsIHNvIHRoYXQgeW91IGRvIG5vdCBoYXZlIHRvIHdvcnJ5IGFib3V0IGFjY2VudCByZWFycmFuZ2VtZW50IG9uIHlvdXIKKyAqIG93bi4KKyAqCisgKiBGb3JtIEZDRCwgIkZhc3QgQyBvciBEIiwgaXMgYWxzbyBkZXNpZ25lZCBmb3IgY29sbGF0aW9uLgorICogSXQgYWxsb3dzIHRvIHdvcmsgb24gc3RyaW5ncyB0aGF0IGFyZSBub3QgbmVjZXNzYXJpbHkgbm9ybWFsaXplZAorICogd2l0aCBhbiBhbGdvcml0aG0gKGxpa2UgaW4gY29sbGF0aW9uKSB0aGF0IHdvcmtzIHVuZGVyICJjYW5vbmljYWwgY2xvc3VyZSIsIAorICogaS5lLiwgaXQgdHJlYXRzIHByZWNvbXBvc2VkIGNoYXJhY3RlcnMgYW5kIHRoZWlyIGRlY29tcG9zZWQgZXF1aXZhbGVudHMgdGhlIAorICogc2FtZS4KKyAqCisgKiBJdCBpcyBub3QgYSBub3JtYWxpemF0aW9uIGZvcm0gYmVjYXVzZSBpdCBkb2VzIG5vdCBwcm92aWRlIGZvciB1bmlxdWVuZXNzIG9mIAorICogcmVwcmVzZW50YXRpb24uIE11bHRpcGxlIHN0cmluZ3MgbWF5IGJlIGNhbm9uaWNhbGx5IGVxdWl2YWxlbnQgKHRoZWlyIE5GRHMgCisgKiBhcmUgaWRlbnRpY2FsKSBhbmQgbWF5IGFsbCBjb25mb3JtIHRvIEZDRCB3aXRob3V0IGJlaW5nIGlkZW50aWNhbCB0aGVtc2VsdmVzLgorICoKKyAqIFRoZSBmb3JtIGlzIGRlZmluZWQgc3VjaCB0aGF0IHRoZSAicmF3IGRlY29tcG9zaXRpb24iLCB0aGUgcmVjdXJzaXZlIAorICogY2Fub25pY2FsIGRlY29tcG9zaXRpb24gb2YgZWFjaCBjaGFyYWN0ZXIsIHJlc3VsdHMgaW4gYSBzdHJpbmcgdGhhdCBpcyAKKyAqIGNhbm9uaWNhbGx5IG9yZGVyZWQuIFRoaXMgbWVhbnMgdGhhdCBwcmVjb21wb3NlZCBjaGFyYWN0ZXJzIGFyZSBhbGxvd2VkIGZvciAKKyAqIGFzIGxvbmcgYXMgdGhlaXIgZGVjb21wb3NpdGlvbnMgZG8gbm90IG5lZWQgY2Fub25pY2FsIHJlb3JkZXJpbmcuCisgKgorICogSXRzIGFkdmFudGFnZSBmb3IgYSBwcm9jZXNzIGxpa2UgY29sbGF0aW9uIGlzIHRoYXQgYWxsIE5GRCBhbmQgbW9zdCBORkMgdGV4dHMKKyAqIC0gYW5kIG1hbnkgdW5ub3JtYWxpemVkIHRleHRzIC0gYWxyZWFkeSBjb25mb3JtIHRvIEZDRCBhbmQgZG8gbm90IG5lZWQgdG8gYmUgCisgKiBub3JtYWxpemVkIChORkQpIGZvciBzdWNoIGEgcHJvY2Vzcy4gVGhlIEZDRCBxdWljayBjaGVjayB3aWxsIHJldHVybiBZRVMgZm9yIAorICogbW9zdCBzdHJpbmdzIGluIHByYWN0aWNlLgorICoKKyAqIG5vcm1hbGl6ZShGQ0QpIG1heSBiZSBpbXBsZW1lbnRlZCB3aXRoIE5GRC4KKyAqCisgKiBGb3IgbW9yZSBkZXRhaWxzIG9uIEZDRCBzZWUgdGhlIGNvbGxhdGlvbiBkZXNpZ24gZG9jdW1lbnQ6CisgKiBodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vY3ZzL2ljdS9+Y2hlY2tvdXR+L2ljdWh0bWwvZGVzaWduL2NvbGxhdGlvbi9JQ1VfY29sbGF0aW9uX2Rlc2lnbi5odG0KKyAqCisgKiBJQ1UgY29sbGF0aW9uIHBlcmZvcm1zIGVpdGhlciBORkQgb3IgRkNEIG5vcm1hbGl6YXRpb24gYXV0b21hdGljYWxseSBpZiAKKyAqIG5vcm1hbGl6YXRpb24gaXMgdHVybmVkIG9uIGZvciB0aGUgY29sbGF0b3Igb2JqZWN0LiBCZXlvbmQgY29sbGF0aW9uIGFuZCAKKyAqIHN0cmluZyBzZWFyY2gsIG5vcm1hbGl6ZWQgc3RyaW5ncyBtYXkgYmUgdXNlZnVsIGZvciBzdHJpbmcgZXF1aXZhbGVuY2UgCisgKiBjb21wYXJpc29ucywgdHJhbnNsaXRlcmF0aW9uL3RyYW5zY3JpcHRpb24sIHVuaXF1ZSByZXByZXNlbnRhdGlvbnMsIGV0Yy4KKyAqCisgKiBUaGUgVzNDIGdlbmVyYWxseSByZWNvbW1lbmRzIHRvIGV4Y2hhbmdlIHRleHRzIGluIE5GQy4KKyAqIE5vdGUgYWxzbyB0aGF0IG1vc3QgbGVnYWN5IGNoYXJhY3RlciBlbmNvZGluZ3MgdXNlIG9ubHkgcHJlY29tcG9zZWQgZm9ybXMgYW5kCisgKiBvZnRlbiBkbyBub3QgZW5jb2RlIGFueSBjb21iaW5pbmcgbWFya3MgYnkgdGhlbXNlbHZlcy4gRm9yIGNvbnZlcnNpb24gdG8gc3VjaAorICogY2hhcmFjdGVyIGVuY29kaW5ncyB0aGUgVW5pY29kZSB0ZXh0IG5lZWRzIHRvIGJlIG5vcm1hbGl6ZWQgdG8gTkZDLgorICogRm9yIG1vcmUgdXNhZ2UgZXhhbXBsZXMsIHNlZSB0aGUgVW5pY29kZSBTdGFuZGFyZCBBbm5leC4KKyAqIEBkcmFmdCBJQ1UgMi4yCisgKi8KKworcHVibGljIGZpbmFsIGNsYXNzIE5vcm1hbGl6ZXIgaW1wbGVtZW50cyBDbG9uZWFibGV7CisgICAgCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gUHJpdmF0ZSBkYXRhCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAKKyAgICBwcml2YXRlIGNoYXJbXSBidWZmZXIgPSBuZXcgY2hhclsxMDBdOworICAgIHByaXZhdGUgaW50IGJ1ZmZlclN0YXJ0ID0gMDsKKyAgICBwcml2YXRlIGludCBidWZmZXJQb3MgICA9IDA7CisgICAgcHJpdmF0ZSBpbnQgYnVmZmVyTGltaXQgPSAwOworICAgIAorICAgIC8vIFRoaXMgdGVsbHMgdXMgd2hhdCB0aGUgYml0cyBpbiB0aGUgIm1vZGUiIG9iamVjdCBtZWFuLgorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDT01QQVRfQklUID0gMTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgREVDT01QX0JJVCA9IDI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENPTVBPU0VfQklUID0gNDsKKyAgICAKKyAgICAvLyBUaGUgaW5wdXQgdGV4dCBhbmQgb3VyIHBvc2l0aW9uIGluIGl0CisgICAgcHJpdmF0ZSBVQ2hhcmFjdGVySXRlcmF0b3IgIHRleHQ7CisgICAgcHJpdmF0ZSBNb2RlICAgICAgICAgICAgICAgIG1vZGUgPSBORkM7CisgICAgcHJpdmF0ZSBpbnQgICAgICAgICAgICAgICAgIG9wdGlvbnMgPSAwOworICAgIHByaXZhdGUgaW50ICAgICAgICAgICAgICAgICBjdXJyZW50SW5kZXg7CisgICAgcHJpdmF0ZSBpbnQgICAgICAgICAgICAgICAgIG5leHRJbmRleDsKKyAgICAKKyAgICAvKioKKyAgICAgKiBDb25zdGFudCBpbmRpY2F0aW5nIHRoYXQgdGhlIGVuZCBvZiB0aGUgaXRlcmF0aW9uIGhhcyBiZWVuIHJlYWNoZWQuCisgICAgICogVGhpcyBpcyBndWFyYW50ZWVkIHRvIGhhdmUgdGhlIHNhbWUgdmFsdWUgYXMge0BsaW5rIFVDaGFyYWN0ZXJJdGVyYXRvciNET05FfS4KKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERPTkUgPSBVQ2hhcmFjdGVySXRlcmF0b3IuRE9ORTsKKworICAgIC8qKgorICAgICAqIENvbnN0YW50cyBmb3Igbm9ybWFsaXphdGlvbiBtb2Rlcy4KKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgTW9kZSB7CisJCXByaXZhdGUgaW50IG1vZGVWYWx1ZTsKKwkJcHJpdmF0ZSBNb2RlKGludCB2YWx1ZSl7CisJCSAgICBtb2RlVmFsdWUgPSB2YWx1ZTsKKwkJfQorICAgICAgICAvKioKKyAgICAgICAgICogVGhpcyBtZXRob2QgaXMgdXNlZCBmb3IgbWV0aG9kIGRpc3BhdGNoCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICAgICAqLworICAgICAgICBwcm90ZWN0ZWQgaW50IG5vcm1hbGl6ZShjaGFyW10gc3JjLCBpbnQgc3JjU3RhcnQsIGludCBzcmNMaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgIGNoYXJbXSBkZXN0LCBpbnQgZGVzdFN0YXJ0LCBpbnQgZGVzdExpbWl0KXsKKyAgICAgICAgICAgIGludCBzcmNMZW4gPSAoc3JjTGltaXQgLSBzcmNTdGFydCk7CisgICAgICAgICAgICBpbnQgZGVzdExlbiA9IChkZXN0TGltaXQgLSBkZXN0U3RhcnQpOworICAgICAgICAgICAgaWYoIHNyY0xlbiA+IGRlc3RMZW4gKXsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3JjTGVuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShzcmMsc3JjU3RhcnQsZGVzdCxkZXN0U3RhcnQsc3JjTGVuKTsKKyAgICAgICAgICAgIHJldHVybiBzcmNMZW47CisgICAgICAgIH0KKyAgICAgICAgLyoqCisgICAgICAgICAqIFRoaXMgbWV0aG9kIGlzIHVzZWQgZm9yIG1ldGhvZCBkaXNwYXRjaAorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAgICAgKi8KKyAgICAgICAgcHJvdGVjdGVkIFN0cmluZyBub3JtYWxpemUoU3RyaW5nIHNyYyl7CisgICAgICAgICAgICByZXR1cm4gc3JjOworICAgICAgICB9CisgICAgICAgIC8qKgorICAgICAgICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VkIGZvciBtZXRob2QgZGlzcGF0Y2gKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgICAgICovCisgICAgICAgIHByb3RlY3RlZCBpbnQgZ2V0TWluQygpeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIC8qKgorICAgICAgICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VkIGZvciBtZXRob2QgZGlzcGF0Y2gKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgICAgICovCisgICAgICAgIHByb3RlY3RlZCBpbnQgZ2V0TWFzaygpeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIC8qKgorICAgICAgICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VkIGZvciBtZXRob2QgZGlzcGF0Y2gKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgICAgICovCisgICAgICAgIHByb3RlY3RlZCBJc1ByZXZCb3VuZGFyeSBnZXRQcmV2Qm91bmRhcnkoKXsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgICAgIC8qKgorICAgICAgICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VkIGZvciBtZXRob2QgZGlzcGF0Y2gKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgICAgICovCisgICAgICAgIHByb3RlY3RlZCBJc05leHRCb3VuZGFyeSBnZXROZXh0Qm91bmRhcnkoKXsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgICAgIC8qKgorICAgICAgICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VkIGZvciBtZXRob2QgZGlzcGF0Y2gKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgICAgICovCisgICAgICAgIHByb3RlY3RlZCBRdWlja0NoZWNrUmVzdWx0IHF1aWNrQ2hlY2soY2hhcltdIHNyYyxpbnQgc3RhcnQsIGludCBsaW1pdCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBhbGxvd01heWJlKXsKKyAgICAgICAgICAgIGlmKGFsbG93TWF5YmUpeworICAgICAgICAgICAgICAgIHJldHVybiBNQVlCRTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBOTzsKKyAgICAgICAgfQorICAgICAgICAvKioKKyAgICAgICAgICogVGhpcyBtZXRob2QgaXMgdXNlZCBmb3IgbWV0aG9kIGRpc3BhdGNoCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICAgICAqLworICAgICAgICBwcm90ZWN0ZWQgYm9vbGVhbiBpc05GU2tpcHBhYmxlKGludCBjKXsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIAorICAgIH0KKyAgICAKKyAgICAvKiogCisgICAgICogTm8gZGVjb21wb3NpdGlvbi9jb21wb3NpdGlvbi4gIAorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBNb2RlIE5PTkUgPSBuZXcgTW9kZSgxKTsKKworICAgIC8qKiAKKyAgICAgKiBDYW5vbmljYWwgZGVjb21wb3NpdGlvbi4gIAorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBNb2RlIE5GRCA9IG5ldyBORkRNb2RlKDIpOworICAgIAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNsYXNzIE5GRE1vZGUgZXh0ZW5kcyBNb2RleworICAgICAgICBwcml2YXRlIE5GRE1vZGUoaW50IHZhbHVlKXsKKyAgICAgICAgICAgIHN1cGVyKHZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICBwcm90ZWN0ZWQgaW50IG5vcm1hbGl6ZSggY2hhcltdIHNyYywgaW50IHNyY1N0YXJ0LCBpbnQgc3JjTGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgY2hhcltdIGRlc3QsaW50IGRlc3RTdGFydCxpbnQgZGVzdExpbWl0KXsKKyAgICAgICAgICByZXR1cm4gZGVjb21wb3NlKHNyYywgIHNyY1N0YXJ0LHNyY0xpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCwgZGVzdFN0YXJ0LGRlc3RMaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHJvdGVjdGVkIFN0cmluZyBub3JtYWxpemUoIFN0cmluZyBzcmMpeworICAgICAgICAgICAgcmV0dXJuIGRlY29tcG9zZShzcmMsZmFsc2UpOworICAgICAgICB9CisgICAgICAgIHByb3RlY3RlZCBpbnQgZ2V0TWluQygpeworICAgICAgICAgICAgcmV0dXJuIE5vcm1hbGl6ZXJJbXBsLk1JTl9XSVRIX0xFQURfQ0M7CisgICAgICAgIH0KKyAgICAgICAgcHJvdGVjdGVkIElzUHJldkJvdW5kYXJ5IGdldFByZXZCb3VuZGFyeSgpeworICAgICAgICAgICAgcmV0dXJuIG5ldyBJc1ByZXZORkRTYWZlKCk7CisgICAgICAgIH0KKyAgICAgICAgcHJvdGVjdGVkIElzTmV4dEJvdW5kYXJ5IGdldE5leHRCb3VuZGFyeSgpeworICAgICAgICAgICAgcmV0dXJuIG5ldyBJc05leHRORkRTYWZlKCk7CisgICAgICAgIH0KKyAgICAgICAgcHJvdGVjdGVkIGludCBnZXRNYXNrKCl7CisgICAgICAgICAgICByZXR1cm4gKE5vcm1hbGl6ZXJJbXBsLkNDX01BU0t8Tm9ybWFsaXplckltcGwuUUNfTkZEKTsKKyAgICAgICAgfQorICAgICAgICBwcm90ZWN0ZWQgUXVpY2tDaGVja1Jlc3VsdCBxdWlja0NoZWNrKGNoYXJbXSBzcmMsaW50IHN0YXJ0LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGltaXQsYm9vbGVhbiBhbGxvd01heWJlKXsKKyAgICAgICAgICAgIHJldHVybiBOb3JtYWxpemVySW1wbC5xdWlja0NoZWNrKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYywgc3RhcnQsbGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9ybWFsaXplckltcGwuZ2V0RnJvbUluZGV4ZXNBcnIoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3JtYWxpemVySW1wbC5JTkRFWF9NSU5fTkZEX05PX01BWUJFCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3JtYWxpemVySW1wbC5RQ19ORkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dNYXliZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgICAgICB9CisgICAgICAgIHByb3RlY3RlZCBib29sZWFuIGlzTkZTa2lwcGFibGUoaW50IGMpeworICAgICAgICAgICAgcmV0dXJuIE5vcm1hbGl6ZXJJbXBsLmlzTkZTa2lwcGFibGUoYyx0aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChOb3JtYWxpemVySW1wbC5DQ19NQVNLfE5vcm1hbGl6ZXJJbXBsLlFDX05GRCkKKyAgICAgICAgICAgICAgICAgICApOworICAgICAgICB9ICAgICAgICAgICAKKyAgICB9OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAvKiogCisgICAgICogQ29tcGF0aWJpbGl0eSBkZWNvbXBvc2l0aW9uLiAgCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIE1vZGUgTkZLRCA9IG5ldyBORktETW9kZSgzKTsKKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjbGFzcyBORktETW9kZSBleHRlbmRzIE1vZGV7CisgICAgICAgIHByaXZhdGUgTkZLRE1vZGUoaW50IHZhbHVlKXsKKyAgICAgICAgICAgIHN1cGVyKHZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICBwcm90ZWN0ZWQgaW50IG5vcm1hbGl6ZSggY2hhcltdIHNyYywgaW50IHNyY1N0YXJ0LCBpbnQgc3JjTGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgIGNoYXJbXSBkZXN0LGludCBkZXN0U3RhcnQsaW50IGRlc3RMaW1pdCl7CisgICAgICAgICAgcmV0dXJuIGRlY29tcG9zZShzcmMsICBzcmNTdGFydCxzcmNMaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3QsIGRlc3RTdGFydCxkZXN0TGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKTsKKyAgICAgICAgfQorICAgICAgICBwcm90ZWN0ZWQgU3RyaW5nIG5vcm1hbGl6ZSggU3RyaW5nIHNyYyl7CisgICAgICAgICAgICByZXR1cm4gZGVjb21wb3NlKHNyYyx0cnVlKTsKKyAgICAgICAgfQorICAgICAgICBwcm90ZWN0ZWQgaW50IGdldE1pbkMoKXsKKyAgICAgICAgICAgIHJldHVybiBOb3JtYWxpemVySW1wbC5NSU5fV0lUSF9MRUFEX0NDOworICAgICAgICB9CisgICAgICAgIHByb3RlY3RlZCBJc1ByZXZCb3VuZGFyeSBnZXRQcmV2Qm91bmRhcnkoKXsKKyAgICAgICAgICAgIHJldHVybiBuZXcgSXNQcmV2TkZEU2FmZSgpOworICAgICAgICB9CisgICAgICAgIHByb3RlY3RlZCBJc05leHRCb3VuZGFyeSBnZXROZXh0Qm91bmRhcnkoKXsKKyAgICAgICAgICAgIHJldHVybiBuZXcgSXNOZXh0TkZEU2FmZSgpOworICAgICAgICB9CisgICAgICAgIHByb3RlY3RlZCBpbnQgZ2V0TWFzaygpeworICAgICAgICAgICAgcmV0dXJuIChOb3JtYWxpemVySW1wbC5DQ19NQVNLfE5vcm1hbGl6ZXJJbXBsLlFDX05GS0QpOworICAgICAgICB9CisgICAgICAgIHByb3RlY3RlZCBRdWlja0NoZWNrUmVzdWx0IHF1aWNrQ2hlY2soY2hhcltdIHNyYyxpbnQgc3RhcnQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW1pdCxib29sZWFuIGFsbG93TWF5YmUpeworICAgICAgICAgICAgcmV0dXJuIE5vcm1hbGl6ZXJJbXBsLnF1aWNrQ2hlY2soCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjLHN0YXJ0LGxpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vcm1hbGl6ZXJJbXBsLmdldEZyb21JbmRleGVzQXJyKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3JtYWxpemVySW1wbC5JTkRFWF9NSU5fTkZLRF9OT19NQVlCRQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9ybWFsaXplckltcGwuUUNfTkZLRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd01heWJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgfQorICAgICAgICBwcm90ZWN0ZWQgYm9vbGVhbiBpc05GU2tpcHBhYmxlKGludCBjKXsKKyAgICAgICAgICAgIHJldHVybiBOb3JtYWxpemVySW1wbC5pc05GU2tpcHBhYmxlKGMsIHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE5vcm1hbGl6ZXJJbXBsLkNDX01BU0t8Tm9ybWFsaXplckltcGwuUUNfTkZLRCkKKyAgICAgICAgICAgICAgICAgICApOworICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICB9OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAvKiogCisgICAgICogQ2Fub25pY2FsIGRlY29tcG9zaXRpb24gZm9sbG93ZWQgYnkgY2Fub25pY2FsIGNvbXBvc2l0aW9uLiAgCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIE1vZGUgTkZDID0gbmV3IE5GQ01vZGUoNCk7CisgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2xhc3MgTkZDTW9kZSBleHRlbmRzIE1vZGV7CisgICAgICAgIHByaXZhdGUgTkZDTW9kZShpbnQgdmFsdWUpeworICAgICAgICAgICAgc3VwZXIodmFsdWUpOworICAgICAgICB9CisgICAgICAgIHByb3RlY3RlZCBpbnQgbm9ybWFsaXplKCBjaGFyW10gc3JjLCBpbnQgc3JjU3RhcnQsIGludCBzcmNMaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICBjaGFyW10gZGVzdCxpbnQgZGVzdFN0YXJ0LGludCBkZXN0TGltaXQpeworICAgICAgICAgIHJldHVybiBjb21wb3NlKHNyYywgIHNyY1N0YXJ0LHNyY0xpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3QsIGRlc3RTdGFydCxkZXN0TGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwcm90ZWN0ZWQgU3RyaW5nIG5vcm1hbGl6ZSggU3RyaW5nIHNyYyl7CisgICAgICAgICAgICByZXR1cm4gY29tcG9zZShzcmMsZmFsc2UpOworICAgICAgICB9CisgICAgICAgCisgICAgICAgIHByb3RlY3RlZCBpbnQgZ2V0TWluQygpeworICAgICAgICAgICAgcmV0dXJuIE5vcm1hbGl6ZXJJbXBsLmdldEZyb21JbmRleGVzQXJyKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9ybWFsaXplckltcGwuSU5ERVhfTUlOX05GQ19OT19NQVlCRQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgICAgICB9CisgICAgICAgIHByb3RlY3RlZCBJc1ByZXZCb3VuZGFyeSBnZXRQcmV2Qm91bmRhcnkoKXsKKyAgICAgICAgICAgIHJldHVybiBuZXcgSXNQcmV2VHJ1ZVN0YXJ0ZXIoKTsKKyAgICAgICAgfQorICAgICAgICBwcm90ZWN0ZWQgSXNOZXh0Qm91bmRhcnkgZ2V0TmV4dEJvdW5kYXJ5KCl7CisgICAgICAgICAgICByZXR1cm4gbmV3IElzTmV4dFRydWVTdGFydGVyKCk7CisgICAgICAgIH0KKyAgICAgICAgcHJvdGVjdGVkIGludCBnZXRNYXNrKCl7CisgICAgICAgICAgICByZXR1cm4gKE5vcm1hbGl6ZXJJbXBsLkNDX01BU0t8Tm9ybWFsaXplckltcGwuUUNfTkZDKTsKKyAgICAgICAgfQorICAgICAgICBwcm90ZWN0ZWQgUXVpY2tDaGVja1Jlc3VsdCBxdWlja0NoZWNrKGNoYXJbXSBzcmMsaW50IHN0YXJ0LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGltaXQsYm9vbGVhbiBhbGxvd01heWJlKXsKKyAgICAgICAgICAgIHJldHVybiBOb3JtYWxpemVySW1wbC5xdWlja0NoZWNrKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMsc3RhcnQsbGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vcm1hbGl6ZXJJbXBsLmdldEZyb21JbmRleGVzQXJyKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9ybWFsaXplckltcGwuSU5ERVhfTUlOX05GQ19OT19NQVlCRQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3JtYWxpemVySW1wbC5RQ19ORkMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93TWF5YmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgICAgICB9CisgICAgICAgIHByb3RlY3RlZCBib29sZWFuIGlzTkZTa2lwcGFibGUoaW50IGMpeworICAgICAgICAgICAgcmV0dXJuIE5vcm1hbGl6ZXJJbXBsLmlzTkZTa2lwcGFibGUoYyx0aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBOb3JtYWxpemVySW1wbC5DQ19NQVNLfE5vcm1hbGl6ZXJJbXBsLkNPTUJJTkVTX0FOWXwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE5vcm1hbGl6ZXJJbXBsLlFDX05GQyAmIE5vcm1hbGl6ZXJJbXBsLlFDX0FOWV9OTykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICApOworICAgICAgICB9IAorICAgIH07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIC8qKiAKKyAgICAgKiBEZWZhdWx0IG5vcm1hbGl6YXRpb24uICAKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgTW9kZSBERUZBVUxUID0gTkZDOyAKKyAgICAKKyAgICAvKiogCisgICAgICogQ29tcGF0aWJpbGl0eSBkZWNvbXBvc2l0aW9uIGZvbGxvd2VkIGJ5IGNhbm9uaWNhbCBjb21wb3NpdGlvbi4gCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIE1vZGUgTkZLQyA9bmV3IE5GS0NNb2RlKDUpOworICAgIAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNsYXNzIE5GS0NNb2RlIGV4dGVuZHMgTW9kZXsKKyAgICAgICAgcHJpdmF0ZSBORktDTW9kZShpbnQgdmFsdWUpeworICAgICAgICAgICAgc3VwZXIodmFsdWUpOworICAgICAgICB9CisgICAgICAgIHByb3RlY3RlZCBpbnQgbm9ybWFsaXplKCBjaGFyW10gc3JjLCBpbnQgc3JjU3RhcnQsIGludCBzcmNMaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICBjaGFyW10gZGVzdCxpbnQgZGVzdFN0YXJ0LGludCBkZXN0TGltaXQpeworICAgICAgICAgIHJldHVybiBjb21wb3NlKHNyYywgIHNyY1N0YXJ0LHNyY0xpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3QsIGRlc3RTdGFydCxkZXN0TGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSk7CisgICAgICAgIH0KKyAgICAgICAgcHJvdGVjdGVkIFN0cmluZyBub3JtYWxpemUoIFN0cmluZyBzcmMpeworICAgICAgICAgICAgcmV0dXJuIGNvbXBvc2Uoc3JjLHRydWUpOworICAgICAgICB9CisgICAgICAgIHByb3RlY3RlZCBpbnQgZ2V0TWluQygpeworICAgICAgICAgICAgcmV0dXJuIE5vcm1hbGl6ZXJJbXBsLmdldEZyb21JbmRleGVzQXJyKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9ybWFsaXplckltcGwuSU5ERVhfTUlOX05GS0NfTk9fTUFZQkUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgfQorICAgICAgICBwcm90ZWN0ZWQgSXNQcmV2Qm91bmRhcnkgZ2V0UHJldkJvdW5kYXJ5KCl7CisgICAgICAgICAgICByZXR1cm4gbmV3IElzUHJldlRydWVTdGFydGVyKCk7CisgICAgICAgIH0KKyAgICAgICAgcHJvdGVjdGVkIElzTmV4dEJvdW5kYXJ5IGdldE5leHRCb3VuZGFyeSgpeworICAgICAgICAgICAgcmV0dXJuIG5ldyBJc05leHRUcnVlU3RhcnRlcigpOworICAgICAgICB9CisgICAgICAgIHByb3RlY3RlZCBpbnQgZ2V0TWFzaygpeworICAgICAgICAgICAgcmV0dXJuIChOb3JtYWxpemVySW1wbC5DQ19NQVNLfE5vcm1hbGl6ZXJJbXBsLlFDX05GS0MpOworICAgICAgICB9CisgICAgICAgIHByb3RlY3RlZCBRdWlja0NoZWNrUmVzdWx0IHF1aWNrQ2hlY2soY2hhcltdIHNyYyxpbnQgc3RhcnQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW1pdCxib29sZWFuIGFsbG93TWF5YmUpeworICAgICAgICAgICAgcmV0dXJuIE5vcm1hbGl6ZXJJbXBsLnF1aWNrQ2hlY2soCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYyxzdGFydCxsaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9ybWFsaXplckltcGwuZ2V0RnJvbUluZGV4ZXNBcnIoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vcm1hbGl6ZXJJbXBsLklOREVYX01JTl9ORktDX05PX01BWUJFCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vcm1hbGl6ZXJJbXBsLlFDX05GS0MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93TWF5YmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgIH0KKyAgICAgICAgcHJvdGVjdGVkIGJvb2xlYW4gaXNORlNraXBwYWJsZShpbnQgYyl7CisgICAgICAgICAgICByZXR1cm4gTm9ybWFsaXplckltcGwuaXNORlNraXBwYWJsZShjLCB0aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoIE5vcm1hbGl6ZXJJbXBsLkNDX01BU0t8Tm9ybWFsaXplckltcGwuQ09NQklORVNfQU5ZfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChOb3JtYWxpemVySW1wbC5RQ19ORktDICYgTm9ybWFsaXplckltcGwuUUNfQU5ZX05PKQorICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgfSAKKyAgICB9OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIC8qKiAKKyAgICAgKiAiRmFzdCBDIG9yIEQiIGZvcm0uIAorICAgICAqIEBkcmFmdCBJQ1UgMi4yIAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgTW9kZSBGQ0QgPSBuZXcgRkNETW9kZSg2KTsKKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjbGFzcyBGQ0RNb2RlIGV4dGVuZHMgTW9kZXsKKyAgICAgICAgcHJpdmF0ZSBGQ0RNb2RlKGludCB2YWx1ZSl7CisgICAgICAgICAgICBzdXBlcih2YWx1ZSk7CisgICAgICAgIH0KKyAgICAgICAgcHJvdGVjdGVkIGludCBub3JtYWxpemUoIGNoYXJbXSBzcmMsIGludCBzcmNTdGFydCwgaW50IHNyY0xpbWl0LAorICAgICAgICAgICAgICAgICAgICAgIGNoYXJbXSBkZXN0LGludCBkZXN0U3RhcnQsaW50IGRlc3RMaW1pdCl7CisgICAgICAgICAgcmV0dXJuIE5vcm1hbGl6ZXJJbXBsLm1ha2VGQ0Qoc3JjLCBzcmNTdGFydCxzcmNMaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0LCBkZXN0U3RhcnQsZGVzdExpbWl0KTsKKyAgICAgICAgfQorICAgICAgICBwcm90ZWN0ZWQgU3RyaW5nIG5vcm1hbGl6ZSggU3RyaW5nIHNyYyl7CisgICAgICAgICAgICByZXR1cm4gbWFrZUZDRChzcmMpOworICAgICAgICB9CisgICAgICAgIHByb3RlY3RlZCBpbnQgZ2V0TWluQygpeworICAgICAgICAgICAgcmV0dXJuIE5vcm1hbGl6ZXJJbXBsLk1JTl9XSVRIX0xFQURfQ0M7CisgICAgICAgIH0KKyAgICAgICAgcHJvdGVjdGVkIElzUHJldkJvdW5kYXJ5IGdldFByZXZCb3VuZGFyeSgpeworICAgICAgICAgICAgcmV0dXJuIG5ldyBJc1ByZXZORkRTYWZlKCk7CisgICAgICAgIH0KKyAgICAgICAgcHJvdGVjdGVkIElzTmV4dEJvdW5kYXJ5IGdldE5leHRCb3VuZGFyeSgpeworICAgICAgICAgICAgcmV0dXJuIG5ldyBJc05leHRORkRTYWZlKCk7CisgICAgICAgIH0KKyAgICAgICAgcHJvdGVjdGVkIGludCBnZXRNYXNrKCl7CisgICAgICAgICAgICByZXR1cm4gTm9ybWFsaXplckltcGwuQ0NfTUFTS3xOb3JtYWxpemVySW1wbC5RQ19ORkQ7CisgICAgICAgIH0KKyAgICAgICAgcHJvdGVjdGVkIFF1aWNrQ2hlY2tSZXN1bHQgcXVpY2tDaGVjayhjaGFyW10gc3JjLGludCBzdGFydCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbWl0LGJvb2xlYW4gYWxsb3dNYXliZSl7CisgICAgICAgICAgICByZXR1cm4gTm9ybWFsaXplckltcGwuY2hlY2tGQ0Qoc3JjLHN0YXJ0LGxpbWl0KSA/IFlFUyA6IE5POworICAgICAgICB9CisgICAgICAgIHByb3RlY3RlZCBib29sZWFuIGlzTkZTa2lwcGFibGUoaW50IGMpeworICAgICAgICAgICAgLyogRkNEOiBza2lwcGFibGUgaWYgbGVhZCBjYz09MCBhbmQgdHJhaWwgY2M8PTEgKi8KKyAgICAgICAgICAgcmV0dXJuIChOb3JtYWxpemVySW1wbC5nZXRGQ0QxNihjKT4xKTsKKyAgICAgICAgfSAgIAorICAgIH07CisKKyAgICAKKyAgICAvKioKKyAgICAgKiBOdWxsIG9wZXJhdGlvbiBmb3IgdXNlIHdpdGggdGhlIHtAbGluayAjTm9ybWFsaXplciBjb25zdHJ1Y3RvcnN9CisgICAgICogYW5kIHRoZSBzdGF0aWMge0BsaW5rICNub3JtYWxpemUgbm9ybWFsaXplfSBtZXRob2QuICBUaGlzIHZhbHVlIHRlbGxzCisgICAgICogdGhlIDx0dD5Ob3JtYWxpemVyPC90dD4gdG8gZG8gbm90aGluZyBidXQgcmV0dXJuIHVucHJvY2Vzc2VkIGNoYXJhY3RlcnMKKyAgICAgKiBmcm9tIHRoZSB1bmRlcmx5aW5nIFN0cmluZyBvciBDaGFyYWN0ZXJJdGVyYXRvci4gIElmIHlvdSBoYXZlIGNvZGUgd2hpY2gKKyAgICAgKiByZXF1aXJlcyByYXcgdGV4dCBhdCBzb21lIHRpbWVzIGFuZCBub3JtYWxpemVkIHRleHQgYXQgb3RoZXJzLCB5b3UgY2FuCisgICAgICogdXNlIDx0dD5OT19PUDwvdHQ+IGZvciB0aGUgY2FzZXMgd2hlcmUgeW91IHdhbnQgcmF3IHRleHQsIHJhdGhlcgorICAgICAqIHRoYW4gaGF2aW5nIGEgc2VwYXJhdGUgY29kZSBwYXRoIHRoYXQgYnlwYXNzZXMgPHR0Pk5vcm1hbGl6ZXI8L3R0PgorICAgICAqIGFsdG9nZXRoZXIuCisgICAgICogPHA+CisgICAgICogQHNlZSAjc2V0TW9kZQorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjIuIFRvIGJlIHJlbW92ZWQgYWZ0ZXIgMjAwMy1BdWctMzEuIFVzZSBOb21hbGl6ZXIuTk9ORQorICAgICAqIEBzZWUgI05PTkUKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIE1vZGUgTk9fT1AgPSBOT05FOworCisgICAgLyoqCisgICAgICogQ2Fub25pY2FsIGRlY29tcG9zaXRpb24gZm9sbG93ZWQgYnkgY2Fub25pY2FsIGNvbXBvc2l0aW9uLiAgVXNlZCB3aXRoIHRoZQorICAgICAqIHtAbGluayAjTm9ybWFsaXplciBjb25zdHJ1Y3RvcnN9IGFuZCB0aGUgc3RhdGljIAorICAgICAqIHtAbGluayAjbm9ybWFsaXplIG5vcm1hbGl6ZX0gbWV0aG9kIHRvIGRldGVybWluZSB0aGUgb3BlcmF0aW9uIHRvIGJlIAorICAgICAqIHBlcmZvcm1lZC4KKyAgICAgKiA8cD4KKyAgICAgKiBJZiBhbGwgb3B0aW9uYWwgZmVhdHVyZXMgKDxpPmUuZy48L2k+IHtAbGluayAjSUdOT1JFX0hBTkdVTH0pIGFyZSB0dXJuZWQKKyAgICAgKiBvZmYsIHRoaXMgb3BlcmF0aW9uIHByb2R1Y2VzIG91dHB1dCB0aGF0IGlzIGluCisgICAgICogPGEgaHJlZj1odHRwOi8vd3d3LnVuaWNvZGUub3JnL3VuaWNvZGUvcmVwb3J0cy90cjE1Lz5Vbmljb2RlIENhbm9uaWNhbCAKKyAgICAgKiBGb3JtPC9hPgorICAgICAqIDxiPkM8L2I+LgorICAgICAqIDxwPgorICAgICAqIEBzZWUgI3NldE1vZGUKKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi4yLiBUbyBiZSByZW1vdmVkIGFmdGVyIDIwMDMtQXVnLTMxLiBVc2UgTm9ybWFsaWVyLk5GQworICAgICAqIEBzZWUgI05GQworICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgTW9kZSBDT01QT1NFID0gTkZDOworCisgICAgLyoqCisgICAgICogQ29tcGF0aWJpbGl0eSBkZWNvbXBvc2l0aW9uIGZvbGxvd2VkIGJ5IGNhbm9uaWNhbCBjb21wb3NpdGlvbi4KKyAgICAgKiBVc2VkIHdpdGggdGhlIHtAbGluayAjTm9ybWFsaXplciBjb25zdHJ1Y3RvcnN9IGFuZCB0aGUgc3RhdGljCisgICAgICoge0BsaW5rICNub3JtYWxpemUgbm9ybWFsaXplfSBtZXRob2QgdG8gZGV0ZXJtaW5lIHRoZSBvcGVyYXRpb24gdG8gYmUgCisgICAgICogcGVyZm9ybWVkLgorICAgICAqIDxwPgorICAgICAqIElmIGFsbCBvcHRpb25hbCBmZWF0dXJlcyAoPGk+ZS5nLjwvaT4ge0BsaW5rICNJR05PUkVfSEFOR1VMfSkgYXJlIHR1cm5lZAorICAgICAqIG9mZiwgdGhpcyBvcGVyYXRpb24gcHJvZHVjZXMgb3V0cHV0IHRoYXQgaXMgaW4KKyAgICAgKiA8YSBocmVmPWh0dHA6Ly93d3cudW5pY29kZS5vcmcvdW5pY29kZS9yZXBvcnRzL3RyMTUvPlVuaWNvZGUgQ2Fub25pY2FsIAorICAgICAqIEZvcm08L2E+CisgICAgICogPGI+S0M8L2I+LgorICAgICAqIDxwPgorICAgICAqIEBzZWUgI3NldE1vZGUKKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi4yLiBUbyBiZSByZW1vdmVkIGFmdGVyIDIwMDMtQXVnLTMxLiBVc2UgTm9ybWFsaXplci5ORktDCisgICAgICogQHNlZSAjTkZLQworICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgTW9kZSBDT01QT1NFX0NPTVBBVCA9IE5GS0M7CisKKyAgICAvKioKKyAgICAgKiBDYW5vbmljYWwgZGVjb21wb3NpdGlvbi4gIFRoaXMgdmFsdWUgaXMgcGFzc2VkIHRvIHRoZQorICAgICAqIHtAbGluayAjTm9ybWFsaXplciBjb25zdHJ1Y3RvcnN9IGFuZCB0aGUgc3RhdGljCisgICAgICoge0BsaW5rICNub3JtYWxpemUgbm9ybWFsaXplfQorICAgICAqIG1ldGhvZCB0byBkZXRlcm1pbmUgdGhlIG9wZXJhdGlvbiB0byBiZSBwZXJmb3JtZWQuCisgICAgICogPHA+CisgICAgICogSWYgYWxsIG9wdGlvbmFsIGZlYXR1cmVzICg8aT5lLmcuPC9pPiB7QGxpbmsgI0lHTk9SRV9IQU5HVUx9KSBhcmUgdHVybmVkCisgICAgICogb2ZmLCB0aGlzIG9wZXJhdGlvbiBwcm9kdWNlcyBvdXRwdXQgdGhhdCBpcyBpbgorICAgICAqIDxhIGhyZWY9aHR0cDovL3d3dy51bmljb2RlLm9yZy91bmljb2RlL3JlcG9ydHMvdHIxNS8+VW5pY29kZSBDYW5vbmljYWwgCisgICAgICogRm9ybTwvYT4KKyAgICAgKiA8Yj5EPC9iPi4KKyAgICAgKiA8cD4KKyAgICAgKiBAc2VlICNzZXRNb2RlCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuMi4gVG8gYmUgcmVtb3ZlZCBhZnRlciAyMDAzLUF1Zy0zMS5Vc2UgTm9ybWFsaXplci5ORkQKKyAgICAgKiBAc2VlICNORkQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIE1vZGUgREVDT01QID0gTkZEOworCisgICAgLyoqCisgICAgICogQ29tcGF0aWJpbGl0eSBkZWNvbXBvc2l0aW9uLiAgVGhpcyB2YWx1ZSBpcyBwYXNzZWQgdG8gdGhlCisgICAgICoge0BsaW5rICNOb3JtYWxpemVyIGNvbnN0cnVjdG9yc30gYW5kIHRoZSBzdGF0aWMgCisgICAgICoge0BsaW5rICNub3JtYWxpemUgbm9ybWFsaXplfQorICAgICAqIG1ldGhvZCB0byBkZXRlcm1pbmUgdGhlIG9wZXJhdGlvbiB0byBiZSBwZXJmb3JtZWQuCisgICAgICogPHA+CisgICAgICogSWYgYWxsIG9wdGlvbmFsIGZlYXR1cmVzICg8aT5lLmcuPC9pPiB7QGxpbmsgI0lHTk9SRV9IQU5HVUx9KSBhcmUgdHVybmVkCisgICAgICogb2ZmLCB0aGlzIG9wZXJhdGlvbiBwcm9kdWNlcyBvdXRwdXQgdGhhdCBpcyBpbgorICAgICAqIDxhIGhyZWY9aHR0cDovL3d3dy51bmljb2RlLm9yZy91bmljb2RlL3JlcG9ydHMvdHIxNS8+VW5pY29kZSBDYW5vbmljYWwgCisgICAgICogRm9ybTwvYT4KKyAgICAgKiA8Yj5LRDwvYj4uCisgICAgICogPHA+CisgICAgICogQHNlZSAjc2V0TW9kZQorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjIuIFRvIGJlIHJlbW92ZWQgYWZ0ZXIgMjAwMy1BdWctMzEuIFVzZSBOb3JtYWxpemVyLk5GS0QKKyAgICAgKiBAc2VlICNORktECisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBNb2RlIERFQ09NUF9DT01QQVQgPSBORktEOworCisgICAgLyoqCisgICAgICogT3B0aW9uIHRvIGRpc2FibGUgSGFuZ3VsL0phbW8gY29tcG9zaXRpb24gYW5kIGRlY29tcG9zaXRpb24uCisgICAgICogVGhpcyBvcHRpb24gYXBwbGllcyB0byBLb3JlYW4gdGV4dCwKKyAgICAgKiB3aGljaCBjYW4gYmUgcmVwcmVzZW50ZWQgZWl0aGVyIGluIHRoZSBKYW1vIGFscGhhYmV0IG9yIGluIEhhbmd1bAorICAgICAqIGNoYXJhY3RlcnMsIHdoaWNoIGFyZSByZWFsbHkganVzdCB0d28gb3IgdGhyZWUgSmFtbyBjb21iaW5lZAorICAgICAqIGludG8gb25lIHZpc3VhbCBnbHlwaC4gIFNpbmNlIEphbW8gdGFrZXMgdXAgbW9yZSBzdG9yYWdlIHNwYWNlIHRoYW4KKyAgICAgKiBIYW5ndWwsIGFwcGxpY2F0aW9ucyB0aGF0IHByb2Nlc3Mgb25seSBIYW5ndWwgdGV4dCBtYXkgd2lzaCB0byB0dXJuCisgICAgICogdGhpcyBvcHRpb24gb24gd2hlbiBkZWNvbXBvc2luZyB0ZXh0LgorICAgICAqIDxwPgorICAgICAqIFRoZSBVbmljb2RlIHN0YW5kYXJkIHRyZWF0ZXMgSGFuZ3VsIHRvIEphbW8gY29udmVyc2lvbiBhcyBhCisgICAgICogY2Fub25pY2FsIGRlY29tcG9zaXRpb24sIHNvIHRoaXMgb3B0aW9uIG11c3QgYmUgdHVybmVkIDxiPm9mZjwvYj4gaWYgeW91CisgICAgICogd2lzaCB0byB0cmFuc2Zvcm0gc3RyaW5ncyBpbnRvIG9uZSBvZiB0aGUgc3RhbmRhcmQKKyAgICAgKiA8YSBocmVmPSJodHRwOi8vd3d3LnVuaWNvZGUub3JnL3VuaWNvZGUvcmVwb3J0cy90cjE1LyIgdGFyZ2V0PSJ1bmljb2RlIj4KKyAgICAgKiBVbmljb2RlIE5vcm1hbGl6YXRpb24gRm9ybXM8L2E+LgorICAgICAqIDxwPgorICAgICAqIEBzZWUgI3NldE9wdGlvbgorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjIuIFRvIGJlIHJlbW92ZWQgYWZ0ZXIgMjAwMy1BdWctMzEuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSUdOT1JFX0hBTkdVTCA9IDB4MDAwMTsKKyAgICAgICAgICAKKyAgICAvKioKKyAgICAgKiBSZXN1bHQgdmFsdWVzIGZvciBxdWlja0NoZWNrKCkuCisgICAgICogRm9yIGRldGFpbHMgc2VlIFVuaWNvZGUgVGVjaG5pY2FsIFJlcG9ydCAxNS4KKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgY2xhc3MgUXVpY2tDaGVja1Jlc3VsdHsKKwkJcHJpdmF0ZSBpbnQgcmVzdWx0VmFsdWU7CisJCXByaXZhdGUgUXVpY2tDaGVja1Jlc3VsdChpbnQgdmFsdWUpeworCQkgICAgcmVzdWx0VmFsdWU9dmFsdWU7CisJCX0KKyAgICB9CisgICAgLyoqIAorICAgICAqIEluZGljYXRlcyB0aGF0IHN0cmluZyBpcyBub3QgaW4gdGhlIG5vcm1hbGl6ZWQgZm9ybWF0CisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFF1aWNrQ2hlY2tSZXN1bHQgTk8gPSBuZXcgUXVpY2tDaGVja1Jlc3VsdCgwKTsKKwkKKyAgICAvKiogCisgICAgICogSW5kaWNhdGVzIHRoYXQgc3RyaW5nIGlzIGluIHRoZSBub3JtYWxpemVkIGZvcm1hdAorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBRdWlja0NoZWNrUmVzdWx0IFlFUyA9IG5ldyBRdWlja0NoZWNrUmVzdWx0KDEpOworCisgICAgLyoqIAorICAgICAqIEluZGljYXRlcyBpdCBjYW5ub3QgYmUgZGV0ZXJtaW5lZCBpZiBzdHJpbmcgaXMgaW4gdGhlIG5vcm1hbGl6ZWQgCisgICAgICogZm9ybWF0IHdpdGhvdXQgZnVydGhlciB0aG9yb3VnaCBjaGVja3MuCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFF1aWNrQ2hlY2tSZXN1bHQgTUFZQkUgPSBuZXcgUXVpY2tDaGVja1Jlc3VsdCgyKTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBPcHRpb24gYml0IGZvciBjb21wYXJlOgorICAgICAqIENhc2Ugc2Vuc2l0aXZlbHkgY29tcGFyZSB0aGUgc3RyaW5ncworICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRk9MRF9DQVNFX0RFRkFVTFQgICAgPSAgICAgIDB4MDAwMDsKKyAgICAKKyAgICAvKioKKyAgICAgKiBPcHRpb24gYml0IGZvciBjb21wYXJlOgorICAgICAqIEJvdGggaW5wdXQgc3RyaW5ncyBhcmUgYXNzdW1lZCB0byBmdWxmaWxsIEZDRCBjb25kaXRpb25zLgorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSU5QVVRfSVNfRkNEICAgID0gICAgICAweDIwMDAwOworCQorICAgIC8qKgorICAgICAqIE9wdGlvbiBiaXQgZm9yIGNvbXBhcmU6CisgICAgICogUGVyZm9ybSBjYXNlLWluc2Vuc2l0aXZlIGNvbXBhcmlzb24uCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDT01QQVJFX0lHTk9SRV9DQVNFICA9ICAgICAweDEwMDAwOworCQorICAgIC8qKgorICAgICAqIE9wdGlvbiBiaXQgZm9yIGNvbXBhcmU6CisgICAgICogQ29tcGFyZSBzdHJpbmdzIGluIGNvZGUgcG9pbnQgb3JkZXIgaW5zdGVhZCBvZiBjb2RlIHVuaXQgb3JkZXIuCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDT01QQVJFX0NPREVfUE9JTlRfT1JERVIgPSAweDgwMDA7CisgICAgCisgICAgLyoqIE9wdGlvbiB2YWx1ZSBmb3IgY2FzZSBmb2xkaW5nOiBleGNsdWRlIHRoZSBtYXBwaW5ncyBmb3IgZG90dGVkIEkgCisgICAgICogYW5kIGRvdGxlc3MgaSBtYXJrZWQgd2l0aCAnSScgaW4gQ2FzZUZvbGRpbmcudHh0LiAKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZPTERfQ0FTRV9FWENMVURFX1NQRUNJQUxfSSA9IDB4MDAwMTsKKwkKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBDb25zdHJ1Y3RvcnMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSBuZXcgPHR0Pk5vcm1hbGl6ZXI8L3R0PiBvYmplY3QgZm9yIGl0ZXJhdGluZyBvdmVyIHRoZQorICAgICAqIG5vcm1hbGl6ZWQgZm9ybSBvZiBhIGdpdmVuIHN0cmluZy4KKyAgICAgKiA8cD4KKyAgICAgKiBAcGFyYW0gc3RyICAgVGhlIHN0cmluZyB0byBiZSBub3JtYWxpemVkLiAgVGhlIG5vcm1hbGl6YXRpb24KKyAgICAgKiAgICAgICAgICAgICAgd2lsbCBzdGFydCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcuCisgICAgICoKKyAgICAgKiBAcGFyYW0gbW9kZSAgVGhlIG5vcm1hbGl6YXRpb24gbW9kZS4KKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBOb3JtYWxpemVyKFN0cmluZyBzdHIsIE1vZGUgbW9kZSkgeworICAgICAgICB0aGlzLnRleHQgPSBVQ2hhcmFjdGVySXRlcmF0b3IuZ2V0SW5zdGFuY2Uoc3RyKTsKKyAgICAgICAgdGhpcy5tb2RlID0gbW9kZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgbmV3IDx0dD5Ob3JtYWxpemVyPC90dD4gb2JqZWN0IGZvciBpdGVyYXRpbmcgb3ZlciB0aGUKKyAgICAgKiBub3JtYWxpemVkIGZvcm0gb2YgYSBnaXZlbiBzdHJpbmcuCisgICAgICogPHA+CisgICAgICogVGhlIDx0dD5vcHRpb25zPC90dD4gcGFyYW1ldGVyIHNwZWNpZmllcyB3aGljaCBvcHRpb25hbAorICAgICAqIDx0dD5Ob3JtYWxpemVyPC90dD4gZmVhdHVyZXMgYXJlIHRvIGJlIGVuYWJsZWQgZm9yIHRoaXMgb2JqZWN0LgorICAgICAqIDxwPgorICAgICAqIEBwYXJhbSBzdHIgIFRoZSBzdHJpbmcgdG8gYmUgbm9ybWFsaXplZC4gIFRoZSBub3JtYWxpemF0aW9uCisgICAgICogICAgICAgICAgICAgIHdpbGwgc3RhcnQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nLgorICAgICAqCisgICAgICogQHBhcmFtIG1vZGUgVGhlIG5vcm1hbGl6YXRpb24gbW9kZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBvcHQgQW55IG9wdGlvbmFsIGZlYXR1cmVzIHRvIGJlIGVuYWJsZWQuCisgICAgICogICAgICAgICAgICBDdXJyZW50bHkgdGhlIG9ubHkgYXZhaWxhYmxlIG9wdGlvbiBpcyB7QGxpbmsgI0lHTk9SRV9IQU5HVUx9LgorICAgICAqICAgICAgICAgICAgSWYgeW91IHdhbnQgdGhlIGRlZmF1bHQgYmVoYXZpb3IgY29ycmVzcG9uZGluZyB0byBvbmUgb2YgdGhlCisgICAgICogICAgICAgICAgICBzdGFuZGFyZCBVbmljb2RlIE5vcm1hbGl6YXRpb24gRm9ybXMsIHVzZSAwIGZvciB0aGlzIGFyZ3VtZW50LgorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjIuIFRvIGJlIHJlbW92ZWQgYWZ0ZXIgMjAwMy1BdWctMzEuIAorICAgICAqICAgICAgICAgICAgICBVc2UgTm9ybWFsaXplciggU3RyaW5nIHN0ciwgTW9kZSBtb2RlKS4KKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBOb3JtYWxpemVyKFN0cmluZyBzdHIsIE1vZGUgbW9kZSwgaW50IG9wdCkgeworICAgICAgICB0aGlzLnRleHQgPSBVQ2hhcmFjdGVySXRlcmF0b3IuZ2V0SW5zdGFuY2Uoc3RyKTsKKyAgICAgICAgdGhpcy5tb2RlID0gbW9kZTsgCisgICAgICAgIHRoaXMub3B0aW9ucz1vcHQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIG5ldyA8dHQ+Tm9ybWFsaXplcjwvdHQ+IG9iamVjdCBmb3IgaXRlcmF0aW5nIG92ZXIgdGhlCisgICAgICogbm9ybWFsaXplZCBmb3JtIG9mIHRoZSBnaXZlbiB0ZXh0LgorICAgICAqIDxwPgorICAgICAqIEBwYXJhbSBpdGVyICBUaGUgaW5wdXQgdGV4dCB0byBiZSBub3JtYWxpemVkLiAgVGhlIG5vcm1hbGl6YXRpb24KKyAgICAgKiAgICAgICAgICAgICAgd2lsbCBzdGFydCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcuCisgICAgICoKKyAgICAgKiBAcGFyYW0gbW9kZSAgVGhlIG5vcm1hbGl6YXRpb24gbW9kZS4KKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBOb3JtYWxpemVyKENoYXJhY3Rlckl0ZXJhdG9yIGl0ZXIsIE1vZGUgbW9kZSkgeworICAgICAgICB0aGlzLnRleHQgPSBVQ2hhcmFjdGVySXRlcmF0b3IuZ2V0SW5zdGFuY2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENoYXJhY3Rlckl0ZXJhdG9yKWl0ZXIuY2xvbmUoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgdGhpcy5tb2RlID0gbW9kZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgbmV3IDx0dD5Ob3JtYWxpemVyPC90dD4gb2JqZWN0IGZvciBpdGVyYXRpbmcgb3ZlciB0aGUKKyAgICAgKiBub3JtYWxpemVkIGZvcm0gb2YgdGhlIGdpdmVuIHRleHQuCisgICAgICogPHA+CisgICAgICogQHBhcmFtIGl0ZXIgIFRoZSBpbnB1dCB0ZXh0IHRvIGJlIG5vcm1hbGl6ZWQuICBUaGUgbm9ybWFsaXphdGlvbgorICAgICAqICAgICAgICAgICAgICB3aWxsIHN0YXJ0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBtb2RlICBUaGUgbm9ybWFsaXphdGlvbiBtb2RlLgorICAgICAqCisgICAgICogQHBhcmFtIG9wdCBBbnkgb3B0aW9uYWwgZmVhdHVyZXMgdG8gYmUgZW5hYmxlZC4KKyAgICAgKiAgICAgICAgICAgIEN1cnJlbnRseSB0aGUgb25seSBhdmFpbGFibGUgb3B0aW9uIGlzIHtAbGluayAjSUdOT1JFX0hBTkdVTH0uCisgICAgICogICAgICAgICAgICBJZiB5b3Ugd2FudCB0aGUgZGVmYXVsdCBiZWhhdmlvciBjb3JyZXNwb25kaW5nIHRvIG9uZSBvZiB0aGUKKyAgICAgKiAgICAgICAgICAgIHN0YW5kYXJkIFVuaWNvZGUgTm9ybWFsaXphdGlvbiBGb3JtcywgdXNlIDAgZm9yIHRoaXMgYXJndW1lbnQuCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuMi4gVG8gYmUgcmVtb3ZlZCBhZnRlciAyMDAzLUF1Zy0zMS4gCisgICAgICogICAgICAgICAgICAgIFVzZSBOb3JtYWxpemVyKENoYXJhY3Rlckl0ZXJhdG9yIGl0ZXIsIE1vZGUgbW9kZSkuCisgICAgICovCisgICAgcHVibGljIE5vcm1hbGl6ZXIoQ2hhcmFjdGVySXRlcmF0b3IgaXRlciwgTW9kZSBtb2RlLCBpbnQgb3B0KXsKKyAgICAgICAgdGhpcy50ZXh0ID0gVUNoYXJhY3Rlckl0ZXJhdG9yLmdldEluc3RhbmNlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDaGFyYWN0ZXJJdGVyYXRvcilpdGVyLmNsb25lKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgIHRoaXMubW9kZSA9IG1vZGU7CisgICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdDsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIG5ldyA8dHQ+Tm9ybWFsaXplcjwvdHQ+IG9iamVjdCBmb3IgaXRlcmF0aW5nIG92ZXIgdGhlCisgICAgICogbm9ybWFsaXplZCBmb3JtIG9mIHRoZSBnaXZlbiB0ZXh0LgorICAgICAqIDxwPgorICAgICAqIEBwYXJhbSBpdGVyICBUaGUgaW5wdXQgdGV4dCB0byBiZSBub3JtYWxpemVkLiAgVGhlIG5vcm1hbGl6YXRpb24KKyAgICAgKiAgICAgICAgICAgICAgd2lsbCBzdGFydCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcuCisgICAgICoKKyAgICAgKiBAcGFyYW0gbW9kZSAgVGhlIG5vcm1hbGl6YXRpb24gbW9kZS4KKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIC8vaW50ZXJuYWwgY29uc3RydWN0b3IgZm9yIG5vdworICAgIHB1YmxpYyBOb3JtYWxpemVyKFVDaGFyYWN0ZXJJdGVyYXRvciBpdGVyLCBNb2RlIG1vZGUpeworICAgICAgICB0cnl7CisgICAgICAgICAgICB0aGlzLnRleHQgICAgID0gKFVDaGFyYWN0ZXJJdGVyYXRvcilpdGVyLmNsb25lKCk7CisgICAgICAgICAgICB0aGlzLm1vZGUgICAgID0gbW9kZTsKKyAgICAgICAgfWNhdGNoIChDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihlLnRvU3RyaW5nKCkpOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDbG9uZXMgdGhpcyA8dHQ+Tm9ybWFsaXplcjwvdHQ+IG9iamVjdC4gIEFsbCBwcm9wZXJ0aWVzIG9mIHRoaXMKKyAgICAgKiBvYmplY3QgYXJlIGR1cGxpY2F0ZWQgaW4gdGhlIG5ldyBvYmplY3QsIGluY2x1ZGluZyB0aGUgY2xvbmluZyBvZiBhbnkKKyAgICAgKiB7QGxpbmsgQ2hhcmFjdGVySXRlcmF0b3J9IHRoYXQgd2FzIHBhc3NlZCBpbiB0byB0aGUgY29uc3RydWN0b3IKKyAgICAgKiBvciB0byB7QGxpbmsgI3NldFRleHQoQ2hhcmFjdGVySXRlcmF0b3IpIHNldFRleHR9LgorICAgICAqIEhvd2V2ZXIsIHRoZSB0ZXh0IHN0b3JhZ2UgdW5kZXJseWluZworICAgICAqIHRoZSA8dHQ+Q2hhcmFjdGVySXRlcmF0b3I8L3R0PiBpcyBub3QgZHVwbGljYXRlZCB1bmxlc3MgdGhlCisgICAgICogaXRlcmF0b3IncyA8dHQ+Y2xvbmU8L3R0PiBtZXRob2QgZG9lcyBzby4KKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBPYmplY3QgY2xvbmUoKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBOb3JtYWxpemVyIGNvcHkgPSAoTm9ybWFsaXplcikgc3VwZXIuY2xvbmUoKTsKKyAgICAgICAgICAgIGNvcHkudGV4dCA9IChVQ2hhcmFjdGVySXRlcmF0b3IpIHRleHQuY2xvbmUoKTsKKyAgICAgICAgICAgIC8vY2xvbmUgdGhlIGludGVybmFsIGJ1ZmZlcgorICAgICAgICAgICAgaWYgKGJ1ZmZlciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgY29weS5idWZmZXIgPSBuZXcgY2hhcltidWZmZXIubGVuZ3RoXTsKKyAgICAgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KGJ1ZmZlciwwLGNvcHkuYnVmZmVyLDAsYnVmZmVyLmxlbmd0aCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gY29weTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoZS50b1N0cmluZygpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gU3RhdGljIFV0aWxpdHkgbWV0aG9kcworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvKioKKyAgICAgKiBDb21wb3NlIGEgc3RyaW5nLgorICAgICAqIFRoZSBzdHJpbmcgd2lsbCBiZSBjb21wb3NlZCB0byBhY2NvcmRpbmcgdGhlIHRoZSBzcGVjaWZpZWQgbW9kZS4KKyAgICAgKiBAcGFyYW0gc3RyICAgICAgICBUaGUgc3RyaW5nIHRvIGNvbXBvc2UuCisgICAgICogQHBhcmFtIGNvbXBhdCAgICAgSWYgdHJ1ZSB0aGUgc3RyaW5nIHdpbGwgYmUgY29tcG9zZWQgYWNjb2RpbmcgdG8gCisgICAgICogICAgICAgICAgICAgICAgICAgIE5GS0MgcnVsZXMgYW5kIGlmIGZhbHNlIHdpbGwgYmUgY29tcG9zZWQgYWNjb3JkaW5nIHRvIAorICAgICAqICAgICAgICAgICAgICAgICAgICBORkMgcnVsZXMuCisgICAgICogQHJldHVybiBTdHJpbmcgICAgVGhlIGNvbXBvc2VkIHN0cmluZyAgIAorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovICAgICAgICAgICAgCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgY29tcG9zZShTdHJpbmcgc3RyLCBib29sZWFuIGNvbXBhdCl7CisgICAgICAgIGNoYXJbXSBkZXN0ID0gbmV3IGNoYXJbc3RyLmxlbmd0aCgpKk1BWF9CVUZfU0laRV9DT01QT1NFXTsKKyAgICAgICAgaW50IGRlc3RTaXplPTA7CisgICAgICAgIGNoYXJbXSBzcmMgPSBzdHIudG9DaGFyQXJyYXkoKTsKKyAgICAgICAgZm9yKDs7KXsKKyAgICAgICAgICAgIGRlc3RTaXplPU5vcm1hbGl6ZXJJbXBsLmNvbXBvc2Uoc3JjLDAsc3JjLmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCwwLGRlc3QubGVuZ3RoLGNvbXBhdCk7CisgICAgICAgICAgICBpZihkZXN0U2l6ZTw9ZGVzdC5sZW5ndGgpeworCQkgICAgICAgIHJldHVybiBuZXcgU3RyaW5nKGRlc3QsMCxkZXN0U2l6ZSk7ICAKKyAgICAgICAgICAgIH1lbHNleworICAgICAgICAgICAgICAgIGRlc3QgPSBuZXcgY2hhcltkZXN0U2l6ZV07CisgICAgICAgICAgICB9CisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogIENvbXBvc2UgYSBzdHJpbmcuCisgICAgICogVGhlIHN0cmluZyB3aWxsIGJlIGNvbXBvc2VkIHRvIGFjY29yZGluZyB0aGUgdGhlIHNwZWNpZmllZCBtb2RlLgorICAgICAqIEBwYXJhbSBzdHIgICAgICAgIFRoZSBzdHJpbmcgdG8gY29tcG9zZS4KKyAgICAgKiBAcGFyYW0gY29tcGF0ICAgICBJZiB0cnVlIHRoZSBzdHJpbmcgd2lsbCBiZSBjb21wb3NlZCBhY2NvZGluZyB0byAKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgTkZLQyBydWxlcyBhbmQgaWYgZmFsc2Ugd2lsbCBiZSBjb21wb3NlZCBhY2NvcmRpbmcgdG8gCisgICAgICogICAgICAgICAgICAgICAgICAgIE5GQyBydWxlcy4KKyAgICAgKiBAcGFyYW0gb3B0aW9ucyAgICBUaGUgb25seSByZWNvZ25pemVkIG9wdGlvbiBpcyBJR05PUkVfSEFOR1VMCisgICAgICogQHJldHVybiBTdHJpbmcgICAgVGhlIGNvbXBvc2VkIHN0cmluZyAgIAorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjIuIFRvIGJlIHJlbW92ZWQgYWZ0ZXIgMjAwMy1BdWctMzEuIAorICAgICAqICAgICAgICAgICAgICBVc2UgY29tcG9zZShTdHJpbmcgc3RyLCBib29sZWFuIGNvbXBhdCkuCisgICAgICovICAgICAgICAgICAgCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgY29tcG9zZShTdHJpbmcgc3RyLCBib29sZWFuIGNvbXBhdCwgaW50IG9wdGlvbnMpeworICAgICAgICByZXR1cm4gY29tcG9zZShzdHIsY29tcGF0KTsgICAgICAgICAgICAgICAgICAgICAKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQ29tcG9zZSBhIHN0cmluZy4KKyAgICAgKiBUaGUgc3RyaW5nIHdpbGwgYmUgY29tcG9zZWQgdG8gYWNjb3JkaW5nIHRoZSB0aGUgc3BlY2lmaWVkIG1vZGUuCisgICAgICogQHBhcmFtIHNvdXJjZSBUaGUgY2hhciBhcnJheSB0byBjb21wb3NlLgorICAgICAqIEBwYXJhbSB0YXJnZXQgQSBjaGFyIGJ1ZmZlciB0byByZWNlaXZlIHRoZSBub3JtYWxpemVkIHRleHQuCisgICAgICogQHBhcmFtIGNvbXBhdCBJZiB0cnVlIHRoZSBjaGFyIGFycmF5IHdpbGwgYmUgY29tcG9zZWQgYWNjb2RpbmcgdG8gCisgICAgICogICAgICAgICAgICAgICAgTkZLQyBydWxlcyBhbmQgaWYgZmFsc2Ugd2lsbCBiZSBjb21wb3NlZCBhY2NvcmRpbmcgdG8gCisgICAgICogICAgICAgICAgICAgICAgTkZDIHJ1bGVzLgorICAgICAqIEByZXR1cm4gaW50ICAgVGhlIHRvdGFsIGJ1ZmZlciBzaXplIG5lZWRlZDtpZiBncmVhdGVyIHRoYW4gbGVuZ3RoIG9mIAorICAgICAqICAgICAgICAgICAgICAgIHJlc3VsdCwgdGhlIG91dHB1dCB3YXMgdHJ1bmNhdGVkLgorICAgICAqIEBleGNlcHRpb24gSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiBpZiB0YXJnZXQubGVuZ3RoIGlzIGxlc3MgdGhhbiB0aGUgCisgICAgICogICAgICAgICAgICAgcmVxdWlyZWQgbGVuZ3RoCisgICAgICogQGRyYWZ0IElDVSAyLjIgIAorICAgICAqLyAgICAgICAgIAorICAgIHB1YmxpYyBzdGF0aWMgaW50IGNvbXBvc2UoY2hhcltdIHNvdXJjZSxjaGFyW10gdGFyZ2V0LCBib29sZWFuIGNvbXBhdCl7CisgICAgICAgIGludCBsZW5ndGggPSBOb3JtYWxpemVySW1wbC5jb21wb3NlKHNvdXJjZSwwLHNvdXJjZS5sZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldCwwLHRhcmdldC5sZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhdCk7CisJCWlmKGxlbmd0aDw9dGFyZ2V0Lmxlbmd0aCl7CisJCSAgICByZXR1cm4gbGVuZ3RoOworCQl9ZWxzZXsKKwkJICAgIHRocm93IG5ldyBJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uKEludGVnZXIudG9TdHJpbmcobGVuZ3RoKSk7CisJCX0gCisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIENvbXBvc2UgYSBzdHJpbmcuCisgICAgICogVGhlIHN0cmluZyB3aWxsIGJlIGNvbXBvc2VkIHRvIGFjY29yZGluZyB0aGUgdGhlIHNwZWNpZmllZCBtb2RlLgorICAgICAqIEBwYXJhbSBzcmMgICAgICAgVGhlIGNoYXIgYXJyYXkgdG8gY29tcG9zZS4KKyAgICAgKiBAcGFyYW0gc3JjU3RhcnQgIFN0YXJ0IGluZGV4IG9mIHRoZSBzb3VyY2UKKyAgICAgKiBAcGFyYW0gc3JjTGltaXQgIExpbWl0IGluZGV4IG9mIHRoZSBzb3VyY2UKKyAgICAgKiBAcGFyYW0gZGVzdCAgICAgIFRoZSBjaGFyIGJ1ZmZlciB0byBmaWxsIGluCisgICAgICogQHBhcmFtIGRlc3RTdGFydCBTdGFydCBpbmRleCBvZiB0aGUgZGVzdGluYXRpb24gYnVmZmVyICAKKyAgICAgKiBAcGFyYW0gZGVzdExpbWl0IEVuZCBpbmRleCBvZiB0aGUgZGVzdGluYXRpb24gYnVmZmVyCisgICAgICogQHBhcmFtIGNvbXBhdCBJZiB0cnVlIHRoZSBjaGFyIGFycmF5IHdpbGwgYmUgY29tcG9zZWQgYWNjb2RpbmcgdG8gCisgICAgICogICAgICAgICAgICAgICAgTkZLQyBydWxlcyBhbmQgaWYgZmFsc2Ugd2lsbCBiZSBjb21wb3NlZCBhY2NvcmRpbmcgdG8gCisgICAgICogICAgICAgICAgICAgICAgTkZDIHJ1bGVzLgorICAgICAqIEByZXR1cm4gaW50ICAgVGhlIHRvdGFsIGJ1ZmZlciBzaXplIG5lZWRlZDtpZiBncmVhdGVyIHRoYW4gbGVuZ3RoIG9mIAorICAgICAqICAgICAgICAgICAgICAgIHJlc3VsdCwgdGhlIG91dHB1dCB3YXMgdHJ1bmNhdGVkLgorICAgICAqIEBleGNlcHRpb24gSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiBpZiB0YXJnZXQubGVuZ3RoIGlzIGxlc3MgdGhhbiB0aGUgCisgICAgICogICAgICAgICAgICAgcmVxdWlyZWQgbGVuZ3RoIAorICAgICAqIEBkcmFmdCBJQ1UgMi4yIAorICAgICAqLyAgICAgICAgIAorICAgIHB1YmxpYyBzdGF0aWMgaW50IGNvbXBvc2UoY2hhcltdIHNyYyxpbnQgc3JjU3RhcnQsIGludCBzcmNMaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJbXSBkZXN0LGludCBkZXN0U3RhcnQsIGludCBkZXN0TGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGNvbXBhdCl7CisgICAgICAgIGludCBsZW5ndGggPSBOb3JtYWxpemVySW1wbC5jb21wb3NlKHNyYyxzcmNTdGFydCxzcmNMaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCxkZXN0U3RhcnQsZGVzdExpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wYXQpOworICAgICAgICBpZihsZW5ndGg8PShkZXN0TGltaXQtZGVzdFN0YXJ0KSl7CisgICAgICAgICAgICByZXR1cm4gbGVuZ3RoOworICAgICAgICB9ZWxzZXsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uKEludGVnZXIudG9TdHJpbmcobGVuZ3RoKSk7CisgICAgICAgIH0gCisgICAgfQorICAgIAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNQVhfQlVGX1NJWkVfQ09NUE9TRSA9IDI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1BWF9CVUZfU0laRV9ERUNPTVBPU0UgPSAzOworICAgIAorICAgIC8qKgorICAgICAqIERlY29tcG9zZSBhIHN0cmluZy4KKyAgICAgKiBUaGUgc3RyaW5nIHdpbGwgYmUgZGVjb21wb3NlZCB0byBhY2NvcmRpbmcgdGhlIHRoZSBzcGVjaWZpZWQgbW9kZS4KKyAgICAgKiBAcGFyYW0gc3RyICAgICAgIFRoZSBzdHJpbmcgdG8gZGVjb21wb3NlLgorICAgICAqIEBwYXJhbSBjb21wYXQgICAgSWYgdHJ1ZSB0aGUgc3RyaW5nIHdpbGwgYmUgZGVjb21wb3NlZCBhY2NvZGluZyB0byBORktEIAorICAgICAqICAgICAgICAgICAgICAgICAgIHJ1bGVzIGFuZCBpZiBmYWxzZSB3aWxsIGJlIGRlY29tcG9zZWQgYWNjb3JkaW5nIHRvIE5GRCAKKyAgICAgKiAgICAgICAgICAgICAgICAgICBydWxlcy4KKyAgICAgKiBAcmV0dXJuIFN0cmluZyAgIFRoZSBkZWNvbXBvc2VkIHN0cmluZyAgCisgICAgICogQGRyYWZ0IElDVSAyLjIgCisgICAgICovICAgICAgICAgCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgZGVjb21wb3NlKFN0cmluZyBzdHIsIGJvb2xlYW4gY29tcGF0KXsKKyAgICAgICAgY2hhcltdIGRlc3QgPSBuZXcgY2hhcltzdHIubGVuZ3RoKCkqTUFYX0JVRl9TSVpFX0RFQ09NUE9TRV07CisgICAgICAgIGludFtdIHRyYWlsQ0MgPSBuZXcgaW50WzFdOworICAgICAgICBpbnQgZGVzdFNpemU9MDsKKyAgICAgICAgZm9yKDs7KXsKKyAgICAgICAgICAgIGRlc3RTaXplPU5vcm1hbGl6ZXJJbXBsLmRlY29tcG9zZShzdHIudG9DaGFyQXJyYXkoKSwwLHN0ci5sZW5ndGgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0LDAsZGVzdC5sZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGF0LHRyYWlsQ0MpOworICAgICAgICAgICAgaWYoZGVzdFNpemU8PWRlc3QubGVuZ3RoKXsKKwkJICAgICAgICByZXR1cm4gbmV3IFN0cmluZyhkZXN0LDAsZGVzdFNpemUpOyAKKyAgICAgICAgICAgIH1lbHNleworICAgICAgICAgICAgICAgIGRlc3QgPSBuZXcgY2hhcltkZXN0U2l6ZV07CisgICAgICAgICAgICB9CisgICAgICAgIH0gCisJICAgICAgICAgICAgICAgICAgICAgCisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIERlY29tcG9zZSBhIHN0cmluZy4KKyAgICAgKiBUaGUgc3RyaW5nIHdpbGwgYmUgZGVjb21wb3NlZCB0byBhY2NvcmRpbmcgdGhlIHRoZSBzcGVjaWZpZWQgbW9kZS4KKyAgICAgKiBAcGFyYW0gc3RyICAgICBUaGUgc3RyaW5nIHRvIGRlY29tcG9zZS4KKyAgICAgKiBAcGFyYW0gY29tcGF0ICBJZiB0cnVlIHRoZSBzdHJpbmcgd2lsbCBiZSBkZWNvbXBvc2VkIGFjY29kaW5nIHRvIE5GS0QgCisgICAgICogICAgICAgICAgICAgICAgIHJ1bGVzIGFuZCBpZiBmYWxzZSB3aWxsIGJlIGRlY29tcG9zZWQgYWNjb3JkaW5nIHRvIE5GRCAKKyAgICAgKiAgICAgICAgICAgICAgICAgcnVsZXMuCisgICAgICogQHJldHVybiBTdHJpbmcgVGhlIGRlY29tcG9zZWQgc3RyaW5nIAorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjIuIFRvIGJlIHJlbW92ZWQgYWZ0ZXIgMjAwMy1BdWctMzEuIAorICAgICAqICAgICAgICAgICAgICBVc2UgZGVjb21wb3NlKFN0cmluZyBzdHIsIGJvb2xlYW4gY29tcGF0KS4KKyAgICAgKi8gICAgICAgICAKKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBkZWNvbXBvc2UoU3RyaW5nIHN0ciwgYm9vbGVhbiBjb21wYXQsIGludCBvcHRpb25zKXsKKyAgICAgICAgcmV0dXJuIGRlY29tcG9zZShzdHIsY29tcGF0KTsgICAgICAgICAgICAgICAgIAorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBEZWNvbXBvc2UgYSBzdHJpbmcuCisgICAgICogVGhlIHN0cmluZyB3aWxsIGJlIGRlY29tcG9zZWQgdG8gYWNjb3JkaW5nIHRoZSB0aGUgc3BlY2lmaWVkIG1vZGUuCisgICAgICogQHBhcmFtIHNvdXJjZSBUaGUgY2hhciBhcnJheSB0byBkZWNvbXBvc2UuCisgICAgICogQHBhcmFtIHRhcmdldCBBIGNoYXIgYnVmZmVyIHRvIHJlY2VpdmUgdGhlIG5vcm1hbGl6ZWQgdGV4dC4KKyAgICAgKiBAcGFyYW0gY29tcGF0IElmIHRydWUgdGhlIGNoYXIgYXJyYXkgd2lsbCBiZSBkZWNvbXBvc2VkIGFjY29kaW5nIHRvIE5GS0QgCisgICAgICogICAgICAgICAgICAgICAgcnVsZXMgYW5kIGlmIGZhbHNlIHdpbGwgYmUgZGVjb21wb3NlZCBhY2NvcmRpbmcgdG8gCisgICAgICogICAgICAgICAgICAgICAgTkZEIHJ1bGVzLgorICAgICAqIEByZXR1cm4gaW50ICAgVGhlIHRvdGFsIGJ1ZmZlciBzaXplIG5lZWRlZDtpZiBncmVhdGVyIHRoYW4gbGVuZ3RoIG9mIAorICAgICAqICAgICAgICAgICAgICAgIHJlc3VsdCx0aGUgb3V0cHV0IHdhcyB0cnVuY2F0ZWQuCisgICAgICogQGV4Y2VwdGlvbiBJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIGlmIHRoZSB0YXJnZXQgY2FwYWNpdHkgaXMgbGVzcyB0aGFuCisgICAgICogICAgICAgICAgICAgdGhlIHJlcXVpcmVkIGxlbmd0aCAgIAorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnQgZGVjb21wb3NlKGNoYXJbXSBzb3VyY2UsY2hhcltdIHRhcmdldCwgYm9vbGVhbiBjb21wYXQpeworICAgICAgICBpbnRbXSB0cmFpbENDID0gbmV3IGludFsxXTsKKyAgICAgICAgaW50IGxlbmd0aCA9IE5vcm1hbGl6ZXJJbXBsLmRlY29tcG9zZShzb3VyY2UsMCxzb3VyY2UubGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldCwwLHRhcmdldC5sZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGF0LHRyYWlsQ0MpOworCQlpZihsZW5ndGg8PXRhcmdldC5sZW5ndGgpeworCQkgICAgcmV0dXJuIGxlbmd0aDsKKwkJfWVsc2V7CisJCSAgICB0aHJvdyBuZXcgSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbihJbnRlZ2VyLnRvU3RyaW5nKGxlbmd0aCkpOworCQl9IAorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBEZWNvbXBvc2UgYSBzdHJpbmcuCisgICAgICogVGhlIHN0cmluZyB3aWxsIGJlIGRlY29tcG9zZWQgdG8gYWNjb3JkaW5nIHRoZSB0aGUgc3BlY2lmaWVkIG1vZGUuCisgICAgICogQHBhcmFtIHNyYyAgICAgICBUaGUgY2hhciBhcnJheSB0byBjb21wb3NlLgorICAgICAqIEBwYXJhbSBzcmNTdGFydCAgU3RhcnQgaW5kZXggb2YgdGhlIHNvdXJjZQorICAgICAqIEBwYXJhbSBzcmNMaW1pdCAgTGltaXQgaW5kZXggb2YgdGhlIHNvdXJjZQorICAgICAqIEBwYXJhbSBkZXN0ICAgICAgVGhlIGNoYXIgYnVmZmVyIHRvIGZpbGwgaW4KKyAgICAgKiBAcGFyYW0gZGVzdFN0YXJ0IFN0YXJ0IGluZGV4IG9mIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIgIAorICAgICAqIEBwYXJhbSBkZXN0TGltaXQgRW5kIGluZGV4IG9mIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIKKyAgICAgKiBAcGFyYW0gY29tcGF0IElmIHRydWUgdGhlIGNoYXIgYXJyYXkgd2lsbCBiZSBkZWNvbXBvc2VkIGFjY29kaW5nIHRvIE5GS0QgCisgICAgICogICAgICAgICAgICAgICAgcnVsZXMgYW5kIGlmIGZhbHNlIHdpbGwgYmUgZGVjb21wb3NlZCBhY2NvcmRpbmcgdG8gCisgICAgICogICAgICAgICAgICAgICAgTkZEIHJ1bGVzLgorICAgICAqIEByZXR1cm4gaW50ICAgVGhlIHRvdGFsIGJ1ZmZlciBzaXplIG5lZWRlZDtpZiBncmVhdGVyIHRoYW4gbGVuZ3RoIG9mIAorICAgICAqICAgICAgICAgICAgICAgIHJlc3VsdCx0aGUgb3V0cHV0IHdhcyB0cnVuY2F0ZWQuCisgICAgICogQGV4Y2VwdGlvbiBJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIGlmIHRoZSB0YXJnZXQgY2FwYWNpdHkgaXMgbGVzcyB0aGFuCisgICAgICogICAgICAgICAgICAgdGhlIHJlcXVpcmVkIGxlbmd0aCAgCisgICAgICogQGRyYWZ0IElDVSAyLjIgCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnQgZGVjb21wb3NlKGNoYXJbXSBzcmMsaW50IHNyY1N0YXJ0LCBpbnQgc3JjTGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJbXSBkZXN0LGludCBkZXN0U3RhcnQsIGludCBkZXN0TGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gY29tcGF0KXsKKyAgICAgICAgaW50W10gdHJhaWxDQyA9IG5ldyBpbnRbMV07CisgICAgICAgIGludCBsZW5ndGggPSBOb3JtYWxpemVySW1wbC5kZWNvbXBvc2Uoc3JjLHNyY1N0YXJ0LHNyY0xpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3QsZGVzdFN0YXJ0LGRlc3RMaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wYXQsdHJhaWxDQyk7CisgICAgICAgIGlmKGxlbmd0aDw9KGRlc3RMaW1pdC1kZXN0U3RhcnQpKXsKKyAgICAgICAgICAgIHJldHVybiBsZW5ndGg7CisgICAgICAgIH1lbHNleworICAgICAgICAgICAgdGhyb3cgbmV3IEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24oSW50ZWdlci50b1N0cmluZyhsZW5ndGgpKTsKKyAgICAgICAgfSAKKyAgICB9CisgICAgICAgIAorICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBtYWtlRkNEKFN0cmluZyBzcmMpeworICAgICAgICBpbnQgc3JjTGVuID0gc3JjLmxlbmd0aCgpOworICAgICAgICBjaGFyW10gZGVzdCA9IG5ldyBjaGFyW01BWF9CVUZfU0laRV9ERUNPTVBPU0Uqc3JjTGVuXTsKKyAgICAgICAgaW50IGxlbmd0aCA9IDA7CisgICAgICAgIGZvcig7Oyl7CisgICAgICAgICAgICBsZW5ndGggPSBOb3JtYWxpemVySW1wbC5tYWtlRkNEKHNyYy50b0NoYXJBcnJheSgpLDAsc3JjTGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0LDAsZGVzdC5sZW5ndGgpOworICAgICAgICAgICAgaWYobGVuZ3RoIDw9IGRlc3QubGVuZ3RoKXsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFN0cmluZyhkZXN0LDAsbGVuZ3RoKTsKKyAgICAgICAgICAgIH1lbHNleworICAgICAgICAgICAgICAgIGRlc3QgPSBuZXcgY2hhcltsZW5ndGhdOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIE5vcm1hbGl6ZXMgYSA8dHQ+U3RyaW5nPC90dD4gdXNpbmcgdGhlIGdpdmVuIG5vcm1hbGl6YXRpb24gb3BlcmF0aW9uLgorICAgICAqIDxwPgorICAgICAqIFRoZSA8dHQ+b3B0aW9uczwvdHQ+IHBhcmFtZXRlciBzcGVjaWZpZXMgd2hpY2ggb3B0aW9uYWwKKyAgICAgKiA8dHQ+Tm9ybWFsaXplcjwvdHQ+IGZlYXR1cmVzIGFyZSB0byBiZSBlbmFibGVkIGZvciB0aGlzIG9wZXJhdGlvbi4KKyAgICAgKiBDdXJyZW50bHkgdGhlIG9ubHkgYXZhaWxhYmxlIG9wdGlvbiBpcyB7QGxpbmsgI0lHTk9SRV9IQU5HVUx9LgorICAgICAqIElmIHlvdSB3YW50IHRoZSBkZWZhdWx0IGJlaGF2aW9yIGNvcnJlc3BvbmRpbmcgdG8gb25lIG9mIHRoZSBzdGFuZGFyZAorICAgICAqIFVuaWNvZGUgTm9ybWFsaXphdGlvbiBGb3JtcywgdXNlIDAgZm9yIHRoaXMgYXJndW1lbnQuCisgICAgICogPHA+CisgICAgICogQHBhcmFtIHN0ciAgICAgICB0aGUgaW5wdXQgc3RyaW5nIHRvIGJlIG5vcm1hbGl6ZWQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gYU1vZGUgICAgIHRoZSBub3JtYWxpemF0aW9uIG1vZGUKKyAgICAgKgorICAgICAqIEBwYXJhbSBvcHRpb25zICAgdGhlIG9wdGlvbmFsIGZlYXR1cmVzIHRvIGJlIGVuYWJsZWQuCisgICAgICogQGRlcHJlY2F0ZWQgICAgIElDVSAyLjIuIFRvIGJlIHJlbW92ZWQgYWZ0ZXIgMjAwMy1BdWctMzEuIAorICAgICAqICAgICAgICAgICAgICAgICAgVXNlIG5vcm1hbGl6ZShTdHJpbmcgc3RyLCBNb2RlIG1vZGUpLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIG5vcm1hbGl6ZShTdHJpbmcgc3RyLCBNb2RlIG1vZGUsIGludCBvcHRpb25zKXsKKyAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZShzdHIsbW9kZSk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIE5vcm1hbGl6ZSBhIHN0cmluZy4KKyAgICAgKiBUaGUgc3RyaW5nIHdpbGwgYmUgbm9ybWFsaXplZCBhY2NvcmRpbmcgdGhlIHRoZSBzcGVjaWZpZWQgbm9ybWFsaXphdGlvbiAKKyAgICAgKiBtb2RlIGFuZCBvcHRpb25zLgorICAgICAqIEBwYXJhbSBzb3VyY2UgICAgIFRoZSBzdHJpbmcgdG8gbm9ybWFsaXplLgorICAgICAqIEBwYXJhbSBtb2RlICAgICAgIFRoZSBub3JtYWxpemF0aW9uIG1vZGU7IG9uZSBvZiBOb3JtYWxpemVyLk5PTkUsIAorICAgICAqICAgICAgICAgICAgICAgICAgICBOb3JtYWxpemVyLk5GRCwgTm9ybWFsaXplci5ORkMsIE5vcm1hbGl6ZXIuTkZLQywgCisgICAgICogICAgICAgICAgICAgICAgICAgIE5vcm1hbGl6ZXIuTkZLRCwgTm9ybWFsaXplci5ERUZBVUxUCisgICAgICogQHJldHVybiBTdHJpbmcgICAgVGhlIG5vcm1hbGl6ZWQgc3RyaW5nCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKiAgIAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIG5vcm1hbGl6ZSggU3RyaW5nIHNyYyxNb2RlIG1vZGUpeworICAgICAgICByZXR1cm4gbW9kZS5ub3JtYWxpemUoc3JjKTsgICAgCisgICAgfQorICAgIC8qKgorICAgICAqIE5vcm1hbGl6ZSBhIHN0cmluZy4KKyAgICAgKiBUaGUgc3RyaW5nIHdpbGwgYmUgbm9ybWFsaXplZCBhY2NvcmRpbmcgdGhlIHRoZSBzcGVjaWZpZWQgbm9ybWFsaXphdGlvbiAKKyAgICAgKiBtb2RlIGFuZCBvcHRpb25zLgorICAgICAqIEBwYXJhbSBzb3VyY2UgVGhlIGNoYXIgYXJyYXkgdG8gbm9ybWFsaXplLgorICAgICAqIEBwYXJhbSB0YXJnZXQgQSBjaGFyIGJ1ZmZlciB0byByZWNlaXZlIHRoZSBub3JtYWxpemVkIHRleHQuCisgICAgICogQHBhcmFtIG1vZGUgICBUaGUgbm9ybWFsaXphdGlvbiBtb2RlOyBvbmUgb2YgTm9ybWFsaXplci5OT05FLCAKKyAgICAgKiAgICAgICAgICAgICAgICBOb3JtYWxpemVyLk5GRCwgTm9ybWFsaXplci5ORkMsIE5vcm1hbGl6ZXIuTkZLQywgCisgICAgICogICAgICAgICAgICAgICAgTm9ybWFsaXplci5ORktELCBOb3JtYWxpemVyLkRFRkFVTFQKKyAgICAgKiBAcmV0dXJuIGludCAgIFRoZSB0b3RhbCBidWZmZXIgc2l6ZSBuZWVkZWQ7aWYgZ3JlYXRlciB0aGFuIGxlbmd0aCBvZiAKKyAgICAgKiAgICAgICAgICAgICAgICByZXN1bHQsIHRoZSBvdXRwdXQgd2FzIHRydW5jYXRlZC4KKyAgICAgKiBAZXhjZXB0aW9uICAgIEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gaWYgdGhlIHRhcmdldCBjYXBhY2l0eSBpcyBsZXNzIAorICAgICAqICAgICAgICAgICAgICAgIHRoYW4gdGhlIHJlcXVpcmVkIGxlbmd0aAorICAgICAqIEBkcmFmdCBJQ1UgMi4yICAgICAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludCBub3JtYWxpemUoY2hhcltdIHNvdXJjZSxjaGFyW10gdGFyZ2V0LCBNb2RlICBtb2RlKXsKKwkJaW50IGxlbmd0aCA9IG5vcm1hbGl6ZShzb3VyY2UsMCxzb3VyY2UubGVuZ3RoLHRhcmdldCwwLHRhcmdldC5sZW5ndGgsbW9kZSk7CisJCWlmKGxlbmd0aDw9dGFyZ2V0Lmxlbmd0aCl7CisJCSAgICByZXR1cm4gbGVuZ3RoOworCQl9ZWxzZXsKKwkJICAgIHRocm93IG5ldyBJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uKEludGVnZXIudG9TdHJpbmcobGVuZ3RoKSk7CisJCX0gCisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIE5vcm1hbGl6ZSBhIHN0cmluZy4KKyAgICAgKiBUaGUgc3RyaW5nIHdpbGwgYmUgbm9ybWFsaXplZCBhY2NvcmRpbmcgdGhlIHRoZSBzcGVjaWZpZWQgbm9ybWFsaXphdGlvbgorICAgICAqIG1vZGUgYW5kIG9wdGlvbnMuCisgICAgICogQHBhcmFtIHNyYyAgICAgICBUaGUgY2hhciBhcnJheSB0byBjb21wb3NlLgorICAgICAqIEBwYXJhbSBzcmNTdGFydCAgU3RhcnQgaW5kZXggb2YgdGhlIHNvdXJjZQorICAgICAqIEBwYXJhbSBzcmNMaW1pdCAgTGltaXQgaW5kZXggb2YgdGhlIHNvdXJjZQorICAgICAqIEBwYXJhbSBkZXN0ICAgICAgVGhlIGNoYXIgYnVmZmVyIHRvIGZpbGwgaW4KKyAgICAgKiBAcGFyYW0gZGVzdFN0YXJ0IFN0YXJ0IGluZGV4IG9mIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIgIAorICAgICAqIEBwYXJhbSBkZXN0TGltaXQgRW5kIGluZGV4IG9mIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIKKyAgICAgKiBAcGFyYW0gbW9kZSAgICAgIFRoZSBub3JtYWxpemF0aW9uIG1vZGU7IG9uZSBvZiBOb3JtYWxpemVyLk5PTkUsIAorICAgICAqICAgICAgICAgICAgICAgICAgIE5vcm1hbGl6ZXIuTkZELCBOb3JtYWxpemVyLk5GQywgTm9ybWFsaXplci5ORktDLCAKKyAgICAgKiAgICAgICAgICAgICAgICAgICBOb3JtYWxpemVyLk5GS0QsIE5vcm1hbGl6ZXIuREVGQVVMVAorICAgICAqIEByZXR1cm4gaW50ICAgICAgVGhlIHRvdGFsIGJ1ZmZlciBzaXplIG5lZWRlZDtpZiBncmVhdGVyIHRoYW4gbGVuZ3RoIG9mIAorICAgICAqICAgICAgICAgICAgICAgICAgIHJlc3VsdCwgdGhlIG91dHB1dCB3YXMgdHJ1bmNhdGVkLgorICAgICAqIEBleGNlcHRpb24gICAgICAgSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiBpZiB0aGUgdGFyZ2V0IGNhcGFjaXR5IGlzIAorICAgICAqICAgICAgICAgICAgICAgICAgIGxlc3MgdGhhbiB0aGUgcmVxdWlyZWQgbGVuZ3RoCisgICAgICogQGRyYWZ0IElDVSAyLjIgICAgIAorICAgICAqLyAgICAgICAKKyAgICBwdWJsaWMgc3RhdGljIGludCBub3JtYWxpemUoY2hhcltdIHNyYyxpbnQgc3JjU3RhcnQsIGludCBzcmNMaW1pdCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJbXSBkZXN0LGludCBkZXN0U3RhcnQsIGludCBkZXN0TGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vZGUgIG1vZGUpeworICAgICAgICBpbnQgbGVuZ3RoID0gbW9kZS5ub3JtYWxpemUoc3JjLHNyY1N0YXJ0LHNyY0xpbWl0LGRlc3QsZGVzdFN0YXJ0LGRlc3RMaW1pdCk7CisgICAgICAgCisgICAgICAgIGlmKGxlbmd0aDw9KGRlc3RMaW1pdC1kZXN0U3RhcnQpKXsKKyAgICAgICAgICAgIHJldHVybiBsZW5ndGg7CisgICAgICAgIH1lbHNleworICAgICAgICAgICAgdGhyb3cgbmV3IEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24oSW50ZWdlci50b1N0cmluZyhsZW5ndGgpKTsKKyAgICAgICAgfSAKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogTm9ybWFsaXplIGEgY29kZXBvaW50IGFjY29kaW5nIHRvIHRoZSBnaXZlbiBtb2RlCisgICAgICogQHBhcmFtIGNoYXIzMiAgICBUaGUgaW5wdXQgc3RyaW5nIHRvIGJlIG5vcm1hbGl6ZWQuCisgICAgICogQHBhcmFtIGFNb2RlICAgICBUaGUgbm9ybWFsaXphdGlvbiBtb2RlCisgICAgICogQHJldHVybiBTdHJpbmcgICBUaGUgbm9ybWFsaXplZCBzdHJpbmcKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIC8vIFRPRE86IGFjdHVhbGx5IGRvIHRoZSBvcHRpbWl6YXRpb24gd2hlbiB0aGUgZ3V0cyBvZiBOb3JtYWxpemVyIGFyZSAKKyAgICAvLyB1cGdyYWRlZCAtLWhhcyBqdXN0IGR1bWIgaW1wbGVtZW50YXRpb24gZm9yIG5vdworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIG5vcm1hbGl6ZShpbnQgY2hhcjMyLCBNb2RlIG1vZGUpIHsKKyAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZShVVEYxNi52YWx1ZU9mKGNoYXIzMiksIG1vZGUpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBDb252ZW5pZW5jZSBtZXRob2QuCisgICAgICoKKyAgICAgKiBAcGFyYW0gc291cmNlICAgc3RyaW5nIGZvciBkZXRlcm1pbmluZyBpZiBpdCBpcyBpbiBhIG5vcm1hbGl6ZWQgZm9ybWF0CisgICAgICogQHBhcmFtIG1vZGUgICAgIG5vcm1hbGl6YXRpb24gZm9ybWF0IChOb3JtYWxpemVyLk5GQyxOb3JtYWxpemVyLk5GRCwgIAorICAgICAqICAgICAgICAgICAgICAgICAgTm9ybWFsaXplci5ORktDLE5vcm1hbGl6ZXIuTkZLRCkKKyAgICAgKiBAcmV0dXJuICAgICAgICAgUmV0dXJuIGNvZGUgdG8gc3BlY2lmeSBpZiB0aGUgdGV4dCBpcyBub3JtYWxpemVkIG9yIG5vdCAKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgIChOb3JtYWxpemVyLllFUywgTm9ybWFsaXplci5OTyBvciBOb3JtYWxpemVyLk1BWUJFKQorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBRdWlja0NoZWNrUmVzdWx0IHF1aWNrQ2hlY2soIFN0cmluZyBzb3VyY2UsIE1vZGUgbW9kZSl7CisJICAgIHJldHVybiBtb2RlLnF1aWNrQ2hlY2soc291cmNlLnRvQ2hhckFycmF5KCksMCxzb3VyY2UubGVuZ3RoKCksdHJ1ZSk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIENvbnZlbmllbmNlIG1ldGhvZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzb3VyY2UgQXJyYXkgb2YgY2hhcmFjdGVycyBmb3IgZGV0ZXJtaW5pbmcgaWYgaXQgaXMgaW4gYSAKKyAgICAgKiAgICAgICAgICAgICAgICBub3JtYWxpemVkIGZvcm1hdAorICAgICAqIEBwYXJhbSBtb2RlICAgbm9ybWFsaXphdGlvbiBmb3JtYXQgKE5vcm1hbGl6ZXIuTkZDLE5vcm1hbGl6ZXIuTkZELCAgCisgICAgICogICAgICAgICAgICAgICAgTm9ybWFsaXplci5ORktDLE5vcm1hbGl6ZXIuTkZLRCkKKyAgICAgKiBAcmV0dXJuICAgICAgIFJldHVybiBjb2RlIHRvIHNwZWNpZnkgaWYgdGhlIHRleHQgaXMgbm9ybWFsaXplZCBvciBub3QgCisgICAgICogICAgICAgICAgICAgICAgKE5vcm1hbGl6ZXIuWUVTLCBOb3JtYWxpemVyLk5PIG9yIE5vcm1hbGl6ZXIuTUFZQkUpCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFF1aWNrQ2hlY2tSZXN1bHQgcXVpY2tDaGVjayhjaGFyW10gc291cmNlLCBNb2RlIG1vZGUpeworICAgICAgICByZXR1cm4gbW9kZS5xdWlja0NoZWNrKHNvdXJjZSwwLHNvdXJjZS5sZW5ndGgsdHJ1ZSk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFBlcmZvcm1pbmcgcXVpY2sgY2hlY2sgb24gYSBzdHJpbmcsIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIHRoZSBzdHJpbmcgaXMgCisgICAgICogaW4gYSBwYXJ0aWN1bGFyIG5vcm1hbGl6YXRpb24gZm9ybWF0LgorICAgICAqIFRocmVlIHR5cGVzIG9mIHJlc3VsdCBjYW4gYmUgcmV0dXJuZWQgTm9ybWFsaXplci5ZRVMsIE5vcm1hbGl6ZXIuTk8gb3IKKyAgICAgKiBOb3JtYWxpemVyLk1BWUJFLiBSZXN1bHQgTm9ybWFsaXplci5ZRVMgaW5kaWNhdGVzIHRoYXQgdGhlIGFyZ3VtZW50CisgICAgICogc3RyaW5nIGlzIGluIHRoZSBkZXNpcmVkIG5vcm1hbGl6ZWQgZm9ybWF0LCBOb3JtYWxpemVyLk5PIGRldGVybWluZXMgdGhhdAorICAgICAqIGFyZ3VtZW50IHN0cmluZyBpcyBub3QgaW4gdGhlIGRlc2lyZWQgbm9ybWFsaXplZCBmb3JtYXQuIEEgCisgICAgICogTm9ybWFsaXplci5NQVlCRSByZXN1bHQgaW5kaWNhdGVzIHRoYXQgYSBtb3JlIHRob3JvdWdoIGNoZWNrIGlzIHJlcXVpcmVkLCAKKyAgICAgKiB0aGUgdXNlciBtYXkgaGF2ZSB0byBwdXQgdGhlIHN0cmluZyBpbiBpdHMgbm9ybWFsaXplZCBmb3JtIGFuZCBjb21wYXJlIAorICAgICAqIHRoZSByZXN1bHRzLgorICAgICAqCisgICAgICogQHBhcmFtIHNvdXJjZSAgICBzdHJpbmcgZm9yIGRldGVybWluaW5nIGlmIGl0IGlzIGluIGEgbm9ybWFsaXplZCBmb3JtYXQKKyAgICAgKiBAcGFyYW0gc3RhcnQgICAgIHRoZSBzdGFydCBpbmRleCBvZiB0aGUgc291cmNlCisgICAgICogQHBhcmFtIGxpbWl0ICAgICB0aGUgbGltaXQgaW5kZXggb2YgdGhlIHNvdXJjZSBpdCBpcyBlcXVhbCB0byB0aGUgbGVuZ3RoCisgICAgICogQHBhcmFtIG1vZGUgICAgICBub3JtYWxpemF0aW9uIGZvcm1hdCAoTm9ybWFsaXplci5ORkMsTm9ybWFsaXplci5ORkQsICAKKyAgICAgKiAgICAgICAgICAgICAgICAgICBOb3JtYWxpemVyLk5GS0MsTm9ybWFsaXplci5ORktEKQorICAgICAqIEByZXR1cm4gICAgICAgICAgUmV0dXJuIGNvZGUgdG8gc3BlY2lmeSBpZiB0aGUgdGV4dCBpcyBub3JtYWxpemVkIG9yIG5vdCAKKyAgICAgKiAgICAgICAgICAgICAgICAgICAoTm9ybWFsaXplci5ZRVMsIE5vcm1hbGl6ZXIuTk8gb3IKKyAgICAgKiAgICAgICAgICAgICAgICAgICBOb3JtYWxpemVyLk1BWUJFKQorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisKKyAgICBwdWJsaWMgc3RhdGljIFF1aWNrQ2hlY2tSZXN1bHQgcXVpY2tDaGVjayhjaGFyW10gc291cmNlLGludCBzdGFydCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbWl0LCBNb2RlIG1vZGUpeyAgICAJCisJICAgIHJldHVybiBtb2RlLnF1aWNrQ2hlY2soc291cmNlLHN0YXJ0LGxpbWl0LHRydWUpOworICAgIH0KKyAgICAKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBJbnRlcm5hbCBtZXRob2RzIChmb3Igbm93KQorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKKyAgICAvKioKKwkgKiBUZXN0IGlmIGEgc3RyaW5nIGlzIGluIGEgZ2l2ZW4gbm9ybWFsaXphdGlvbiBmb3JtLgorCSAqIFRoaXMgaXMgc2VtYW50aWNhbGx5IGVxdWl2YWxlbnQgdG8gc291cmNlLmVxdWFscyhub3JtYWxpemUoc291cmNlLCBtb2RlKSkuCisJICoKKwkgKiBVbmxpa2UgcXVpY2tDaGVjaygpLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYSBkZWZpbml0aXZlIHJlc3VsdCwKKwkgKiBuZXZlciBhICJtYXliZSIuCisJICogRm9yIE5GRCwgTkZLRCwgYW5kIEZDRCwgYm90aCBmdW5jdGlvbnMgd29yayBleGFjdGx5IHRoZSBzYW1lLgorCSAqIEZvciBORkMgYW5kIE5GS0Mgd2hlcmUgcXVpY2tDaGVjayBtYXkgcmV0dXJuICJtYXliZSIsIHRoaXMgZnVuY3Rpb24gd2lsbAorCSAqIHBlcmZvcm0gZnVydGhlciB0ZXN0cyB0byBhcnJpdmUgYXQgYSB0cnVlL2ZhbHNlIHJlc3VsdC4KKyAgICAgKiBAcGFyYW0gc3JjICAgICAgIFRoZSBpbnB1dCBhcnJheSBvZiBjaGFyYWN0ZXJzIHRvIGJlIGNoZWNrZWQgdG8gc2VlIGlmIAorICAgICAqICAgICAgICAgICAgICAgICAgIGl0IGlzIG5vcm1hbGl6ZWQKKyAgICAgKiBAcGFyYW0gc3RhcnQgICAgIFRoZSBzdHJhcnQgaW5kZXggaW4gdGhlIHNvdXJjZQorICAgICAqIEBwYXJhbSBsaW1pdCAgICAgVGhlIGxpbWl0IGluZGV4IGluIHRoZSBzb3VyY2UKKyAgICAgKiBAcGFyYW0gYU1vZGUgICAgIHRoZSBub3JtYWxpemF0aW9uIG1vZGUKKyAgICAgKiBAcmV0dXJuIEJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBzb3VyY2Ugc3RyaW5nIGlzIGluIHRoZQorICAgICAqICAgICAgICAgIm1vZGUiIG5vcm1hbGl6YXRpb24gZm9ybQorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzTm9ybWFsaXplZChjaGFyW10gc3JjLGludCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW1pdCwgTW9kZSBtb2RlKSB7CisgICAgICAgIHJldHVybiAobW9kZS5xdWlja0NoZWNrKHNyYyxzdGFydCxsaW1pdCxmYWxzZSk9PVlFUyk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIENvbnZlbmllbmNlIE1ldGhvZAorICAgICAqIEBwYXJhbSBzdHIgICAgICAgdGhlIGlucHV0IHN0cmluZyB0byBiZSBjaGVja2VkIHRvIHNlZSBpZiBpdCBpcyAKKyAgICAgKiAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkCisgICAgICogQHBhcmFtIGFNb2RlICAgICB0aGUgbm9ybWFsaXphdGlvbiBtb2RlCisgICAgICogQHNlZSAjaXNOb3JtYWxpemVkCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNOb3JtYWxpemVkKFN0cmluZyBzdHIsIE1vZGUgbW9kZSkgeworICAgICAgICByZXR1cm4gKG1vZGUucXVpY2tDaGVjayhzdHIudG9DaGFyQXJyYXkoKSwwLHN0ci5sZW5ndGgoKSxmYWxzZSk9PVlFUyk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIENvbnZlbmllbmNlIE1ldGhvZAorICAgICAqIEBwYXJhbSBjaGFyMzIgICAgdGhlIGlucHV0IGNvZGUgcG9pbnQgdG8gYmUgY2hlY2tlZCB0byBzZWUgaWYgaXQgaXMgCisgICAgICogICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZAorICAgICAqIEBwYXJhbSBhTW9kZSAgICAgdGhlIG5vcm1hbGl6YXRpb24gbW9kZQorICAgICAqIEBzZWUgI2lzTm9ybWFsaXplZAorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgLy8gVE9ETzogYWN0dWFsbHkgZG8gdGhlIG9wdGltaXphdGlvbiB3aGVuIHRoZSBndXRzIG9mIE5vcm1hbGl6ZXIgYXJlIAorICAgIC8vIHVwZ3JhZGVkIC0taGFzIGp1c3QgZHVtYiBpbXBsZW1lbnRhdGlvbiBmb3Igbm93CisgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzTm9ybWFsaXplZChpbnQgY2hhcjMyLCBNb2RlIG1vZGUpIHsKKyAgICAgICAgcmV0dXJuIGlzTm9ybWFsaXplZChVVEYxNi52YWx1ZU9mKGNoYXIzMiksIG1vZGUpOworICAgIH0KKyAgICAgCisgICAgLyoqCisgICAgICogQ29tcGFyZSB0d28gc3RyaW5ncyBmb3IgY2Fub25pY2FsIGVxdWl2YWxlbmNlLgorICAgICAqIEZ1cnRoZXIgb3B0aW9ucyBpbmNsdWRlIGNhc2UtaW5zZW5zaXRpdmUgY29tcGFyaXNvbiBhbmQKKyAgICAgKiBjb2RlIHBvaW50IG9yZGVyIChhcyBvcHBvc2VkIHRvIGNvZGUgdW5pdCBvcmRlcikuCisgICAgICoKKyAgICAgKiBDYW5vbmljYWwgZXF1aXZhbGVuY2UgYmV0d2VlbiB0d28gc3RyaW5ncyBpcyBkZWZpbmVkIGFzIHRoZWlyIG5vcm1hbGl6ZWQKKyAgICAgKiBmb3JtcyAoTkZEIG9yIE5GQykgYmVpbmcgaWRlbnRpY2FsLgorICAgICAqIFRoaXMgZnVuY3Rpb24gY29tcGFyZXMgc3RyaW5ncyBpbmNyZW1lbnRhbGx5IGluc3RlYWQgb2Ygbm9ybWFsaXppbmcKKyAgICAgKiAoYW5kIG9wdGlvbmFsbHkgY2FzZS1mb2xkaW5nKSBib3RoIHN0cmluZ3MgZW50aXJlbHksCisgICAgICogaW1wcm92aW5nIHBlcmZvcm1hbmNlIHNpZ25pZmljYW50bHkuCisgICAgICoKKyAgICAgKiBCdWxrIG5vcm1hbGl6YXRpb24gaXMgb25seSBuZWNlc3NhcnkgaWYgdGhlIHN0cmluZ3MgZG8gbm90IGZ1bGZpbGwgdGhlIAorICAgICAqIEZDRCBjb25kaXRpb25zLiBPbmx5IGluIHRoaXMgY2FzZSwgYW5kIG9ubHkgaWYgdGhlIHN0cmluZ3MgYXJlIHJlbGF0aXZlbHkgCisgICAgICogbG9uZywgaXMgbWVtb3J5IGFsbG9jYXRlZCB0ZW1wb3JhcmlseS4KKyAgICAgKiBGb3IgRkNEIHN0cmluZ3MgYW5kIHNob3J0IG5vbi1GQ0Qgc3RyaW5ncyB0aGVyZSBpcyBubyBtZW1vcnkgYWxsb2NhdGlvbi4KKyAgICAgKgorICAgICAqIFNlbWFudGljYWxseSwgdGhpcyBpcyBlcXVpdmFsZW50IHRvCisgICAgICogICBzdHJjbXBbQ29kZVBvaW50T3JkZXJdKGZvbGRDYXNlKE5GRChzMSkpLCBmb2xkQ2FzZShORkQoczIpKSkKKyAgICAgKiB3aGVyZSBjb2RlIHBvaW50IG9yZGVyIGFuZCBmb2xkQ2FzZSBhcmUgYWxsIG9wdGlvbmFsLgorICAgICAqCisgICAgICogQHBhcmFtIHMxICAgICAgICBGaXJzdCBzb3VyY2UgY2hhcmFjdGVyIGFycmF5LgorICAgICAqIEBwYXJhbSBzMVN0YXJ0ICAgc3RhcnQgaW5kZXggb2Ygc291cmNlCisgICAgICogQHBhcmFtIHMxTGltaXQgICBsaW1pdCBvZiB0aGUgc291cmNlCisgICAgICoKKyAgICAgKiBAcGFyYW0gczIgICAgICAgIFNlY29uZCBzb3VyY2UgY2hhcmFjdGVyIGFycmF5LgorICAgICAqIEBwYXJhbSBzMlN0YXJ0ICAgc3RhcnQgaW5kZXggb2YgdGhlIHNvdXJjZQorICAgICAqIEBwYXJhbSBzMkxpbWl0ICAgbGltaXQgb2YgdGhlIHNvdXJjZQorICAgICAqIAorICAgICAqIEBwYXJhbSBvcHRpb25zIEEgYml0IHNldCBvZiBvcHRpb25zOgorICAgICAqICAgLSBGT0xEX0NBU0VfREVGQVVMVCBvciAwIGlzIHVzZWQgZm9yIGRlZmF1bHQgb3B0aW9uczoKKyAgICAgKiAgICAgQ2FzZS1zZW5zaXRpdmUgY29tcGFyaXNvbiBpbiBjb2RlIHVuaXQgb3JkZXIsIGFuZCB0aGUgaW5wdXQgc3RyaW5ncworICAgICAqICAgICBhcmUgcXVpY2stY2hlY2tlZCBmb3IgRkNELgorICAgICAqCisgICAgICogICAtIElOUFVUX0lTX0ZDRAorICAgICAqICAgICBTZXQgaWYgdGhlIGNhbGxlciBrbm93cyB0aGF0IGJvdGggczEgYW5kIHMyIGZ1bGZpbGwgdGhlIEZDRCAKKyAgICAgKiAgICAgY29uZGl0aW9ucy5JZiBub3Qgc2V0LCB0aGUgZnVuY3Rpb24gd2lsbCBxdWlja0NoZWNrIGZvciBGQ0QKKyAgICAgKiAgICAgYW5kIG5vcm1hbGl6ZSBpZiBuZWNlc3NhcnkuCisgICAgICoKKyAgICAgKiAgIC0gQ09NUEFSRV9DT0RFX1BPSU5UX09SREVSCisgICAgICogICAgIFNldCB0byBjaG9vc2UgY29kZSBwb2ludCBvcmRlciBpbnN0ZWFkIG9mIGNvZGUgdW5pdCBvcmRlcgorICAgICAqCisgICAgICogICAtIENPTVBBUkVfSUdOT1JFX0NBU0UKKyAgICAgKiAgICAgU2V0IHRvIGNvbXBhcmUgc3RyaW5ncyBjYXNlLWluc2Vuc2l0aXZlbHkgdXNpbmcgY2FzZSBmb2xkaW5nLAorICAgICAqICAgICBpbnN0ZWFkIG9mIGNhc2Utc2Vuc2l0aXZlbHkuCisgICAgICogICAgIElmIHNldCwgdGhlbiB0aGUgZm9sbG93aW5nIGNhc2UgZm9sZGluZyBvcHRpb25zIGFyZSB1c2VkLgorICAgICAqCisgICAgICoKKyAgICAgKiBAcmV0dXJuIDwwIG9yIDAgb3IgPjAgYXMgdXN1YWwgZm9yIHN0cmluZyBjb21wYXJpc29ucworICAgICAqCisgICAgICogQHNlZSAjbm9ybWFsaXplCisgICAgICogQHNlZSAjRkNECisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICAgcHVibGljIHN0YXRpYyBpbnQgY29tcGFyZShjaGFyW10gczEsIGludCBzMVN0YXJ0LCBpbnQgczFMaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyW10gczIsIGludCBzMlN0YXJ0LCBpbnQgczJMaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb3B0aW9ucyl7CisgICAgICAgICByZXR1cm4gTm9ybWFsaXplckltcGwuY29tcGFyZShzMSwgczFTdGFydCwgczFMaW1pdCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMiwgczJTdGFydCwgczJMaW1pdCwgb3B0aW9ucyk7CisgICAgIH0gCisgICAgICAgCisgICAgLyoqCisgICAgICogQ29tcGFyZSB0d28gc3RyaW5ncyBmb3IgY2Fub25pY2FsIGVxdWl2YWxlbmNlLgorICAgICAqIEZ1cnRoZXIgb3B0aW9ucyBpbmNsdWRlIGNhc2UtaW5zZW5zaXRpdmUgY29tcGFyaXNvbiBhbmQKKyAgICAgKiBjb2RlIHBvaW50IG9yZGVyIChhcyBvcHBvc2VkIHRvIGNvZGUgdW5pdCBvcmRlcikuCisgICAgICogQ29udmVuaWVuY2UgbWV0aG9kLgorICAgICAqCisgICAgICogQHBhcmFtIHMxIEZpcnN0IHNvdXJjZSBzdHJpbmcuCisgICAgICogQHBhcmFtIHMyIFNlY29uZCBzb3VyY2Ugc3RyaW5nLgorICAgICAqCisgICAgICogQHBhcmFtIG9wdGlvbnMgQSBiaXQgc2V0IG9mIG9wdGlvbnM6CisgICAgICogICAtIEZPTERfQ0FTRV9ERUZBVUxUIG9yIDAgaXMgdXNlZCBmb3IgZGVmYXVsdCBvcHRpb25zOgorICAgICAqICAgICBDYXNlLXNlbnNpdGl2ZSBjb21wYXJpc29uIGluIGNvZGUgdW5pdCBvcmRlciwgYW5kIHRoZSBpbnB1dCBzdHJpbmdzCisgICAgICogICAgIGFyZSBxdWljay1jaGVja2VkIGZvciBGQ0QuCisgICAgICoKKyAgICAgKiAgIC0gSU5QVVRfSVNfRkNECisgICAgICogICAgIFNldCBpZiB0aGUgY2FsbGVyIGtub3dzIHRoYXQgYm90aCBzMSBhbmQgczIgZnVsZmlsbCB0aGUgRkNEIAorICAgICAqICAgICBjb25kaXRpb25zLiBJZiBub3Qgc2V0LCB0aGUgZnVuY3Rpb24gd2lsbCBxdWlja0NoZWNrIGZvciBGQ0QKKyAgICAgKiAgICAgYW5kIG5vcm1hbGl6ZSBpZiBuZWNlc3NhcnkuCisgICAgICoKKyAgICAgKiAgIC0gQ09NUEFSRV9DT0RFX1BPSU5UX09SREVSCisgICAgICogICAgIFNldCB0byBjaG9vc2UgY29kZSBwb2ludCBvcmRlciBpbnN0ZWFkIG9mIGNvZGUgdW5pdCBvcmRlcgorICAgICAqCisgICAgICogICAtIENPTVBBUkVfSUdOT1JFX0NBU0UKKyAgICAgKiAgICAgU2V0IHRvIGNvbXBhcmUgc3RyaW5ncyBjYXNlLWluc2Vuc2l0aXZlbHkgdXNpbmcgY2FzZSBmb2xkaW5nLAorICAgICAqICAgICBpbnN0ZWFkIG9mIGNhc2Utc2Vuc2l0aXZlbHkuCisgICAgICogICAgIElmIHNldCwgdGhlbiB0aGUgZm9sbG93aW5nIGNhc2UgZm9sZGluZyBvcHRpb25zIGFyZSB1c2VkLgorICAgICAqCisgICAgICoKKyAgICAgKiBAcmV0dXJuIDwwIG9yIDAgb3IgPjAgYXMgdXN1YWwgZm9yIHN0cmluZyBjb21wYXJpc29ucworICAgICAqCisgICAgICogQHNlZSAjbm9ybWFsaXplCisgICAgICogQHNlZSAjRkNECisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICAgcHVibGljIHN0YXRpYyBpbnQgY29tcGFyZShTdHJpbmcgczEsIFN0cmluZyBzMiwgaW50IG9wdGlvbnMpeworICAgICAgICAgCisgICAgICAgICByZXR1cm4gY29tcGFyZShzMS50b0NoYXJBcnJheSgpLDAsczEubGVuZ3RoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMi50b0NoYXJBcnJheSgpLDAsczIubGVuZ3RoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zKTsKKyAgICAgfQorICAgICAKKyAgICAvKioKKyAgICAgKiBDb21wYXJlIHR3byBzdHJpbmdzIGZvciBjYW5vbmljYWwgZXF1aXZhbGVuY2UuCisgICAgICogRnVydGhlciBvcHRpb25zIGluY2x1ZGUgY2FzZS1pbnNlbnNpdGl2ZSBjb21wYXJpc29uIGFuZAorICAgICAqIGNvZGUgcG9pbnQgb3JkZXIgKGFzIG9wcG9zZWQgdG8gY29kZSB1bml0IG9yZGVyKS4KKyAgICAgKiBDb252ZW5pZW5jZSBtZXRob2QuCisgICAgICoKKyAgICAgKiBAcGFyYW0gczEgRmlyc3Qgc291cmNlIHN0cmluZy4KKyAgICAgKiBAcGFyYW0gczIgU2Vjb25kIHNvdXJjZSBzdHJpbmcuCisgICAgICoKKyAgICAgKiBAcGFyYW0gb3B0aW9ucyBBIGJpdCBzZXQgb2Ygb3B0aW9uczoKKyAgICAgKiAgIC0gRk9MRF9DQVNFX0RFRkFVTFQgb3IgMCBpcyB1c2VkIGZvciBkZWZhdWx0IG9wdGlvbnM6CisgICAgICogICAgIENhc2Utc2Vuc2l0aXZlIGNvbXBhcmlzb24gaW4gY29kZSB1bml0IG9yZGVyLCBhbmQgdGhlIGlucHV0IHN0cmluZ3MKKyAgICAgKiAgICAgYXJlIHF1aWNrLWNoZWNrZWQgZm9yIEZDRC4KKyAgICAgKgorICAgICAqICAgLSBJTlBVVF9JU19GQ0QKKyAgICAgKiAgICAgU2V0IGlmIHRoZSBjYWxsZXIga25vd3MgdGhhdCBib3RoIHMxIGFuZCBzMiBmdWxmaWxsIHRoZSBGQ0QgCisgICAgICogICAgIGNvbmRpdGlvbnMuIElmIG5vdCBzZXQsIHRoZSBmdW5jdGlvbiB3aWxsIHF1aWNrQ2hlY2sgZm9yIEZDRAorICAgICAqICAgICBhbmQgbm9ybWFsaXplIGlmIG5lY2Vzc2FyeS4KKyAgICAgKgorICAgICAqICAgLSBDT01QQVJFX0NPREVfUE9JTlRfT1JERVIKKyAgICAgKiAgICAgU2V0IHRvIGNob29zZSBjb2RlIHBvaW50IG9yZGVyIGluc3RlYWQgb2YgY29kZSB1bml0IG9yZGVyCisgICAgICoKKyAgICAgKiAgIC0gQ09NUEFSRV9JR05PUkVfQ0FTRQorICAgICAqICAgICBTZXQgdG8gY29tcGFyZSBzdHJpbmdzIGNhc2UtaW5zZW5zaXRpdmVseSB1c2luZyBjYXNlIGZvbGRpbmcsCisgICAgICogICAgIGluc3RlYWQgb2YgY2FzZS1zZW5zaXRpdmVseS4KKyAgICAgKiAgICAgSWYgc2V0LCB0aGVuIHRoZSBmb2xsb3dpbmcgY2FzZSBmb2xkaW5nIG9wdGlvbnMgYXJlIHVzZWQuCisgICAgICoKKyAgICAgKgorICAgICAqIEByZXR1cm4gPDAgb3IgMCBvciA+MCBhcyB1c3VhbCBmb3Igc3RyaW5nIGNvbXBhcmlzb25zCisgICAgICoKKyAgICAgKiBAc2VlICNub3JtYWxpemUKKyAgICAgKiBAc2VlICNGQ0QKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgICBwdWJsaWMgc3RhdGljIGludCBjb21wYXJlKGNoYXJbXSBzMSwgY2hhcltdIHMyLCBpbnQgb3B0aW9ucyl7CisgICAgICAgICAKKyAgICAgICAgIHJldHVybiBjb21wYXJlKHMxLDAsczEubGVuZ3RoLHMyLDAsczIubGVuZ3RoLG9wdGlvbnMpOworICAgICB9IAorICAgICAgICAKKyAgICAvKioKKyAgICAgKiBDb252ZW5pZW5jZSBtZXRob2QgdGhhdCBjYW4gaGF2ZSBmYXN0ZXIgaW1wbGVtZW50YXRpb24KKyAgICAgKiBieSBub3QgYWxsb2NhdGluZyBidWZmZXJzLgorICAgICAqIEBwYXJhbSBjaGFyMzJhICAgIHRoZSBmaXJzdCBjb2RlIHBvaW50IHRvIGJlIGNoZWNrZWQgYWdhaW5zdCB0aGUKKyAgICAgKiBAcGFyYW0gY2hhcjMyYiAgICB0aGUgc2Vjb25kIGNvZGUgcG9pbnQKKyAgICAgKgorICAgICAqIEBwYXJhbSBhTW9kZSAgICAgdGhlIG5vcm1hbGl6YXRpb24gbW9kZQorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgLy8gVE9ETzogYWN0dWFsbHkgZG8gdGhlIG9wdGltaXphdGlvbiB3aGVuIHRoZSBndXRzIG9mIE5vcm1hbGl6ZXIgYXJlIAorICAgIC8vIHVwZ3JhZGVkIC0taGFzIGp1c3QgZHVtYiBpbXBsZW1lbnRhdGlvbiBmb3Igbm93CisgICAgcHVibGljIHN0YXRpYyBpbnQgY29tcGFyZShpbnQgY2hhcjMyYSwgaW50IGNoYXIzMmIsaW50IG9wdGlvbnMpIHsKKyAgICAgICAgcmV0dXJuIGNvbXBhcmUoVVRGMTYudmFsdWVPZihjaGFyMzJhKSwgVVRGMTYudmFsdWVPZihjaGFyMzJiKSwgb3B0aW9ucyk7CisgICAgfQorICAgIAorICAgIAorICAgIC8qKgorICAgICAqIENvbnZlbmllbmNlIG1ldGhvZCB0aGF0IGNhbiBoYXZlIGZhc3RlciBpbXBsZW1lbnRhdGlvbgorICAgICAqIGJ5IG5vdCBhbGxvY2F0aW5nIGJ1ZmZlcnMuCisgICAgICogQGludGVybmFsCisgICAgICogQHBhcmFtIGNoYXIzMmEgICAgdGhlIGZpcnN0IGNvZGUgcG9pbnQgdG8gYmUgY2hlY2tlZCBhZ2FpbnN0IHRoZQorICAgICAqIEBwYXJhbSBzdHIyICAgIHRoZSBzZWNvbmQgc3RyaW5nCisgICAgICoKKyAgICAgKiBAcGFyYW0gYU1vZGUgICAgIHRoZSBub3JtYWxpemF0aW9uIG1vZGUKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqCisgICAgICovCisgICAgLy8gVE9ETzogYWN0dWFsbHkgZG8gdGhlIG9wdGltaXphdGlvbiB3aGVuIHRoZSBndXRzIG9mIE5vcm1hbGl6ZXIgYXJlIAorICAgIC8vIHVwZ3JhZGVkIC0taGFzIGp1c3QgZHVtYiBpbXBsZW1lbnRhdGlvbiBmb3Igbm93CisgICAgcHVibGljIHN0YXRpYyBpbnQgY29tcGFyZShpbnQgY2hhckEsIFN0cmluZyBzdHIyLCBpbnQgb3B0aW9ucykgeworICAgICAgICByZXR1cm4gY29tcGFyZShVVEYxNi52YWx1ZU9mKGNoYXJBKSwgc3RyMiwgb3B0aW9ucyk7CisgICAgfQorICAgCisgICAgLyoqCisgICAgICogQ29uY2F0ZW5hdGUgbm9ybWFsaXplZCBzdHJpbmdzLCBtYWtpbmcgc3VyZSB0aGF0IHRoZSByZXN1bHQgaXMgbm9ybWFsaXplZAorICAgICAqIGFzIHdlbGwuCisgICAgICoKKyAgICAgKiBJZiBib3RoIHRoZSBsZWZ0IGFuZCB0aGUgcmlnaHQgc3RyaW5ncyBhcmUgaW4KKyAgICAgKiB0aGUgbm9ybWFsaXphdGlvbiBmb3JtIGFjY29yZGluZyB0byAibW9kZSIsCisgICAgICogdGhlbiB0aGUgcmVzdWx0IHdpbGwgYmUKKyAgICAgKgorICAgICAqIFxjb2RlCisgICAgICogICAgIGRlc3Q9bm9ybWFsaXplKGxlZnQrcmlnaHQsIG1vZGUpCisgICAgICogXGVuZGNvZGUKKyAgICAgKgorICAgICAqIFdpdGggdGhlIGlucHV0IHN0cmluZ3MgYWxyZWFkeSBiZWluZyBub3JtYWxpemVkLAorICAgICAqIHRoaXMgZnVuY3Rpb24gd2lsbCB1c2UgbmV4dCgpIGFuZCBwcmV2aW91cygpCisgICAgICogdG8gZmluZCB0aGUgYWRqYWNlbnQgZW5kIHBpZWNlcyBvZiB0aGUgaW5wdXQgc3RyaW5ncy4KKyAgICAgKiBPbmx5IHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZXNlIGVuZCBwaWVjZXMgd2lsbCBiZSBub3JtYWxpemVkIGFuZAorICAgICAqIHRoZW4gY29uY2F0ZW5hdGVkIHdpdGggdGhlIHJlbWFpbmluZyBwYXJ0cyBvZiB0aGUgaW5wdXQgc3RyaW5ncy4KKyAgICAgKgorICAgICAqIEl0IGlzIGFsbG93ZWQgdG8gaGF2ZSBkZXN0PT1sZWZ0IHRvIGF2b2lkIGNvcHlpbmcgdGhlIGVudGlyZSBsZWZ0IHN0cmluZy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBsZWZ0IExlZnQgc291cmNlIGFycmF5LCBtYXkgYmUgc2FtZSBhcyBkZXN0LgorICAgICAqIEBwYXJhbSBsZWZ0U3RhcnQgc3RhcnQgaW5kZXggb2YgdGhlIGxlZnQgYXJyYXkuCisgICAgICogQHBhcmFtIGxlZnRMaW1pdCBlbmQgaW5kZXggb2YgdGhlIGxlZnQgYXJyYXkgKD09bGVuZ3RoKQorICAgICAqIEBwYXJhbSByaWdodCBSaWdodCBzb3VyY2UgYXJyYXkuCisgICAgICogQHBhcmFtIHJpZ2h0U3RhcnQgc3RhcnQgaW5kZXggb2YgdGhlIHJpZ2h0IGFycmF5LgorICAgICAqIEBwYXJhbSBsZWZ0TGltaXQgZW5kIGluZGV4IG9mIHRoZSByaWdodCBhcnJheSAoPT1sZW5ndGgpCisgICAgICogQHBhcmFtIGRlc3QgVGhlIG91dHB1dCBidWZmZXI7IGNhbiBiZSBudWxsIGlmIGRlc3RTdGFydD09ZGVzdExpbWl0PT0wIAorICAgICAqICAgICAgICAgICAgICBmb3IgcHVyZSBwcmVmbGlnaHRpbmcuCisgICAgICogQHBhcmFtIGRlc3RTdGFydCBzdGFydCBpbmRleCBvZiB0aGUgZGVzdGluYXRpb24gYXJyYXkKKyAgICAgKiBAcGFyYW0gbW9kZSBUaGUgbm9ybWFsaXphdGlvbiBtb2RlLgorICAgICAqIEByZXR1cm4gTGVuZ3RoIG9mIG91dHB1dCAobnVtYmVyIG9mIGNoYXJzKSB3aGVuIHN1Y2Nlc3NmdWwgb3IgCisgICAgICogICAgICAgICAgSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbgorICAgICAqIEBleGNlcHRpb24gSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiB3aG9zZSBtZXNzYWdlIGhhcyB0aGUgc3RyaW5nIAorICAgICAqICAgICAgICAgICAgIHJlcHJlc2VudGF0aW9uIG9mIGRlc3RpbmF0aW9uIGNhcGFjaXR5IHJlcXVpcmVkLiAKKyAgICAgKiBAc2VlICNub3JtYWxpemUKKyAgICAgKiBAc2VlICNuZXh0CisgICAgICogQHNlZSAjcHJldmlvdXMKKyAgICAgKiBAZXhjZXB0aW9uIEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gaWYgdGFyZ2V0IGNhcGFjaXR5IGlzIGxlc3MgdGhhbiB0aGUKKyAgICAgKiAgICAgICAgICAgICByZXF1aXJlZCBsZW5ndGgKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgICAvKiBDb25jYXRlbmF0aW9uIG9mIG5vcm1hbGl6ZWQgc3RyaW5ncyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIGludCBjb25jYXRlbmF0ZShjaGFyW10gbGVmdCwgIGludCBsZWZ0U3RhcnQsICBpbnQgbGVmdExpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJbXSByaWdodCwgaW50IHJpZ2h0U3RhcnQsIGludCByaWdodExpbWl0LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyW10gZGVzdCwgIGludCBkZXN0U3RhcnQsICBpbnQgZGVzdExpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vcm1hbGl6ZXIuTW9kZSBtb2RlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIGNoYXJbXSBidWZmZXI9bmV3IGNoYXJbMTAwXTsKKyAgICAgICAgaW50IGJ1ZmZlckxlbmd0aDsKKyAgICAKKyAgICAgICAgVUNoYXJhY3Rlckl0ZXJhdG9yIGl0ZXI7CisgICAgICAgIAorICAgICAgICBpbnQgbGVmdEJvdW5kYXJ5LCByaWdodEJvdW5kYXJ5LCBkZXN0TGVuZ3RoOworICAgIAorICAgICAgICBpZihkZXN0ID09IG51bGwpeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigpOworICAgICAgICB9CisgICAgCisgICAgICAgIC8qIGNoZWNrIGZvciBvdmVybGFwcGluZyByaWdodCBhbmQgZGVzdGluYXRpb24gKi8KKyAgICAgICAgaWYgKHJpZ2h0ID09IGRlc3QgJiYgcmlnaHRTdGFydCA8IGRlc3RMaW1pdCAmJiBkZXN0U3RhcnQgPCByaWdodExpbWl0KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJvdmVybGFwcGluZyByaWdodCBhbmQgZHN0IHJhbmdlcyIpOworICAgICAgICB9CisgICAgCisgICAgICAgIC8qIGFsbG93IGxlZnQ9PWRlc3QgKi8KKyAgICAKKyAgICAKKyAgICAgICAgLyoKKyAgICAgICAgICogSW5wdXQ6IGxlZnRbMC4ubGVmdExlbmd0aFsgKyByaWdodFswLi5yaWdodExlbmd0aFsKKyAgICAgICAgICoKKyAgICAgICAgICogRmluZCBub3JtYWxpemF0aW9uLXNhZmUgYm91bmRhcmllcyBsZWZ0Qm91bmRhcnkgYW5kIHJpZ2h0Qm91bmRhcnkKKyAgICAgICAgICogYW5kIGNvcHkgdGhlIGVuZCBwYXJ0cyB0b2dldGhlcjoKKyAgICAgICAgICogYnVmZmVyPWxlZnRbbGVmdEJvdW5kYXJ5Li5sZWZ0TGVuZ3RoWyArIHJpZ2h0WzAuLnJpZ2h0Qm91bmRhcnlbCisgICAgICAgICAqCisgICAgICAgICAqIGRlc3Q9bGVmdFswLi5sZWZ0Qm91bmRhcnlbICsKKyAgICAgICAgICogICAgICBub3JtYWxpemUoYnVmZmVyKSArCisgICAgICAgICAqICAgICAgcmlnaHRbcmlnaHRCb3VuZGFyeS4ucmlnaHRMZW5ndGhbCisgICAgICAgICAqLworICAgIAorICAgICAgICAvKgorICAgICAgICAgKiBmaW5kIGEgbm9ybWFsaXphdGlvbiBib3VuZGFyeSBhdCB0aGUgZW5kIG9mIHRoZSBsZWZ0IHN0cmluZworICAgICAgICAgKiBhbmQgY29weSB0aGUgZW5kIHBhcnQgaW50byB0aGUgYnVmZmVyCisgICAgICAgICAqLworCisgICAgICAgIGl0ZXIgPSBVQ2hhcmFjdGVySXRlcmF0b3IuZ2V0SW5zdGFuY2UobGVmdCwgbGVmdFN0YXJ0LCBsZWZ0TGltaXQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIGl0ZXIuc2V0SW5kZXgoaXRlci5nZXRMZW5ndGgoKSk7IC8qIGVuZCBvZiBsZWZ0IHN0cmluZyAqLworICAgIAorICAgICAgICBidWZmZXJMZW5ndGg9cHJldmlvdXMoaXRlciwgYnVmZmVyLDAsYnVmZmVyLmxlbmd0aCxtb2RlLGZhbHNlLG51bGwpOworICAgICAgICAKKyAgICAgICAgbGVmdEJvdW5kYXJ5PWl0ZXIuZ2V0SW5kZXgoKTsKKyAgICAgICAgCisgICAgICAgIGlmKGJ1ZmZlckxlbmd0aD5idWZmZXIubGVuZ3RoKSB7CisgICAgICAgICAgICBjaGFyW10gbmV3QnVmID0gbmV3IGNoYXJbYnVmZmVyLmxlbmd0aCoyXTsKKyAgICAgICAgICAgIGJ1ZmZlciA9IG5ld0J1ZjsKKyAgICAgICAgICAgIG5ld0J1ZiA9IG51bGw7IC8vIG51bGwgdGhlIHJlZmVyZW5jZSBmb3IgR0MKKyAgICAgICAgICAgIC8qIGp1c3QgY29weSBmcm9tIHRoZSBsZWZ0IHN0cmluZzogd2Uga25vdyB0aGUgYm91bmRhcnkgYWxyZWFkeSAqLworICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShsZWZ0LGxlZnRCb3VuZGFyeSxidWZmZXIsMCxidWZmZXJMZW5ndGgpOworICAgICAgICB9CisgICAgCisgICAgICAgIC8qCisgICAgICAgICAqIGZpbmQgYSBub3JtYWxpemF0aW9uIGJvdW5kYXJ5IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHJpZ2h0IHN0cmluZworICAgICAgICAgKiBhbmQgY29uY2F0ZW5hdGUgdGhlIGJlZ2lubmluZyBwYXJ0IHRvIHRoZSBidWZmZXIKKyAgICAgICAgICovCisKKyAgICAgICAgaXRlciA9IFVDaGFyYWN0ZXJJdGVyYXRvci5nZXRJbnN0YW5jZShyaWdodCwgcmlnaHRTdGFydCwgcmlnaHRMaW1pdCk7CisgICAgICAgIAorICAgICAgICByaWdodEJvdW5kYXJ5PW5leHQoaXRlcixidWZmZXIsYnVmZmVyTGVuZ3RoLCBidWZmZXIubGVuZ3RoLWJ1ZmZlckxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGUsIGZhbHNlLG51bGwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIGlmKGJ1ZmZlckxlbmd0aD5idWZmZXIubGVuZ3RoKSB7CisgICAgICAgICAgICBjaGFyW10gbmV3QnVmID0gbmV3IGNoYXJbYnVmZmVyLmxlbmd0aCoyXTsKKyAgICAgICAgICAgIGJ1ZmZlciA9IG5ld0J1ZjsKKyAgICAgICAgICAgIG5ld0J1ZiA9IG51bGw7IC8vIG51bGwgdGhlIHJlZmVyZW5jZSBmb3IgR0MKKyAgICAgICAgICAgIC8qIGp1c3QgY29weSBmcm9tIHRoZSByaWdodCBzdHJpbmc6IHdlIGtub3cgdGhlIGJvdW5kYXJ5IGFscmVhZHkgKi8KKyAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkocmlnaHQscmlnaHRCb3VuZGFyeSxidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlckxlbmd0aCxyaWdodEJvdW5kYXJ5KTsKKyAgICAgICAgfQorCisgICAgICAgIGJ1ZmZlckxlbmd0aCs9cmlnaHRCb3VuZGFyeTsKKyAgICAKKyAgICAgICAgLyogY29weSBsZWZ0WzAuLmxlZnRCb3VuZGFyeVsgdG8gZGVzdCAqLworICAgICAgICBpZihsZWZ0IT1kZXN0ICYmIGxlZnRCb3VuZGFyeT4wICYmIChkZXN0TGltaXQpPjApIHsKKyAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkobGVmdCwwLGRlc3QsMCwgTWF0aC5taW4obGVmdEJvdW5kYXJ5LGRlc3RMaW1pdCkpOyAKKyAgICAgICAgfQorICAgICAgICBkZXN0TGVuZ3RoPWxlZnRCb3VuZGFyeTsKKyAgICAKKyAgICAgICAgLyogY29uY2F0ZW5hdGUgdGhlIG5vcm1hbGl6YXRpb24gb2YgdGhlIGJ1ZmZlciB0byBkZXN0ICovCisgICAgICAgIGlmKGRlc3RMaW1pdD5kZXN0TGVuZ3RoKSB7CisgICAgICAgICAgICBkZXN0TGVuZ3RoKz1Ob3JtYWxpemVyLm5vcm1hbGl6ZShidWZmZXIsMCxidWZmZXJMZW5ndGgsZGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdExlbmd0aCxkZXN0TGltaXQsbW9kZSk7CisgICAgICAgICAgICAKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRlc3RMZW5ndGgrPU5vcm1hbGl6ZXIubm9ybWFsaXplKGJ1ZmZlciwgMCwgYnVmZmVyTGVuZ3RoLG51bGwsMCwwLG1vZGUpOworICAgICAgICB9CisgICAgCisgICAgICAgIC8qIGNvbmNhdGVuYXRlIHJpZ2h0W3JpZ2h0Qm91bmRhcnkuLnJpZ2h0TGVuZ3RoWyB0byBkZXN0ICovCisgICAgICAgIHJpZ2h0U3RhcnQrPXJpZ2h0Qm91bmRhcnk7CisgICAgICAgIGludCByaWdodExlbmd0aD0ocmlnaHRMaW1pdC1yaWdodFN0YXJ0KTsKKyAgICAgICAgaWYocmlnaHRMZW5ndGg+MCAmJiBkZXN0TGltaXQ+ZGVzdExlbmd0aCkgeworICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShyaWdodCxyaWdodFN0YXJ0LGRlc3QsZGVzdExlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5taW4ocmlnaHRMZW5ndGgsZGVzdExlbmd0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgICAgICB9CisgICAgICAgIGRlc3RMZW5ndGgrPXJpZ2h0TGVuZ3RoOworICAgICAgICAKKyAgICAgICAgaWYoZGVzdExlbmd0aDw9KGRlc3RMaW1pdC1kZXN0U3RhcnQpKXsKKyAgICAgICAgICAgIHJldHVybiBkZXN0TGVuZ3RoOworICAgICAgICB9ZWxzZXsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uKEludGVnZXIudG9TdHJpbmcoZGVzdExlbmd0aCkpOworICAgICAgICB9ICAKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQ29uY2F0ZW5hdGUgbm9ybWFsaXplZCBzdHJpbmdzLCBtYWtpbmcgc3VyZSB0aGF0IHRoZSByZXN1bHQgaXMgbm9ybWFsaXplZAorICAgICAqIGFzIHdlbGwuCisgICAgICoKKyAgICAgKiBJZiBib3RoIHRoZSBsZWZ0IGFuZCB0aGUgcmlnaHQgc3RyaW5ncyBhcmUgaW4KKyAgICAgKiB0aGUgbm9ybWFsaXphdGlvbiBmb3JtIGFjY29yZGluZyB0byAibW9kZSIsCisgICAgICogdGhlbiB0aGUgcmVzdWx0IHdpbGwgYmUKKyAgICAgKgorICAgICAqIDxjb2RlPgorICAgICAqICAgICBkZXN0PW5vcm1hbGl6ZShsZWZ0K3JpZ2h0LCBtb2RlKQorICAgICAqIDwvY29kZT4KKyAgICAgKgorICAgICAqIEZvciBkZXRhaWxzIHNlZSBjb25jYXRlbmF0ZSAKKyAgICAgKgorICAgICAqIEBwYXJhbSBsZWZ0IExlZnQgc291cmNlIHN0cmluZy4KKyAgICAgKiBAcGFyYW0gcmlnaHQgUmlnaHQgc291cmNlIHN0cmluZy4KKyAgICAgKiBAcGFyYW0gbW9kZSBUaGUgbm9ybWFsaXphdGlvbiBtb2RlLgorICAgICAqIEByZXR1cm4gcmVzdWx0CisgICAgICoKKyAgICAgKiBAc2VlICNjb25jYXRlbmF0ZQorICAgICAqIEBzZWUgI25vcm1hbGl6ZQorICAgICAqIEBzZWUgI25leHQKKyAgICAgKiBAc2VlICNwcmV2aW91cworICAgICAqIEBzZWUgI2NvbmNhdGVuYXRlCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBjb25jYXRlbmF0ZShjaGFyW10gbGVmdCwgY2hhcltdIHJpZ2h0LE1vZGUgbW9kZSl7CisgICAgICAgIGNoYXJbXSByZXN1bHQgPSBuZXcgY2hhclsobGVmdC5sZW5ndGgrcmlnaHQubGVuZ3RoKSogTUFYX0JVRl9TSVpFX0RFQ09NUE9TRV07CisgICAgICAgIGZvcig7Oyl7CisgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGludCBsZW5ndGggPSBjb25jYXRlbmF0ZShsZWZ0LCAgMCwgbGVmdC5sZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQsIDAsIHJpZ2h0Lmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQsMCwgcmVzdWx0Lmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlKTsKKyAgICAgICAgICAgIGlmKGxlbmd0aDw9cmVzdWx0Lmxlbmd0aCl7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTdHJpbmcocmVzdWx0LDAsbGVuZ3RoKTsKKyAgICAgICAgICAgIH1lbHNleworICAgICAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBjaGFyW2xlbmd0aF07CisgICAgICAgICAgICB9CisgICAgICAgIH0gICAgICAgICAgICAKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQ29uY2F0ZW5hdGUgbm9ybWFsaXplZCBzdHJpbmdzLCBtYWtpbmcgc3VyZSB0aGF0IHRoZSByZXN1bHQgaXMgbm9ybWFsaXplZAorICAgICAqIGFzIHdlbGwuCisgICAgICoKKyAgICAgKiBJZiBib3RoIHRoZSBsZWZ0IGFuZCB0aGUgcmlnaHQgc3RyaW5ncyBhcmUgaW4KKyAgICAgKiB0aGUgbm9ybWFsaXphdGlvbiBmb3JtIGFjY29yZGluZyB0byAibW9kZSIsCisgICAgICogdGhlbiB0aGUgcmVzdWx0IHdpbGwgYmUKKyAgICAgKgorICAgICAqIDxjb2RlPgorICAgICAqICAgICBkZXN0PW5vcm1hbGl6ZShsZWZ0K3JpZ2h0LCBtb2RlKQorICAgICAqIDwvY29kZT4KKyAgICAgKgorICAgICAqIEZvciBkZXRhaWxzIHNlZSBjb25jYXRlbmF0ZQorICAgICAqCisgICAgICogQHBhcmFtIGxlZnQgTGVmdCBzb3VyY2Ugc3RyaW5nLgorICAgICAqIEBwYXJhbSByaWdodCBSaWdodCBzb3VyY2Ugc3RyaW5nLgorICAgICAqIEBwYXJhbSBtb2RlIFRoZSBub3JtYWxpemF0aW9uIG1vZGUuCisgICAgICogQHJldHVybiByZXN1bHQKKyAgICAgKgorICAgICAqIEBzZWUgI2NvbmNhdGVuYXRlCisgICAgICogQHNlZSAjbm9ybWFsaXplCisgICAgICogQHNlZSAjbmV4dAorICAgICAqIEBzZWUgI3ByZXZpb3VzCisgICAgICogQHNlZSAjY29uY2F0ZW5hdGUKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGNvbmNhdGVuYXRlKFN0cmluZyBsZWZ0LCBTdHJpbmcgcmlnaHQsTW9kZSBtb2RlKXsKKyAgICAgICAgY2hhcltdIHJlc3VsdCA9IG5ldyBjaGFyWyhsZWZ0Lmxlbmd0aCgpK3JpZ2h0Lmxlbmd0aCgpKSogTUFYX0JVRl9TSVpFX0RFQ09NUE9TRV07CisgICAgICAgIGZvcig7Oyl7CisgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGludCBsZW5ndGggPSBjb25jYXRlbmF0ZShsZWZ0LnRvQ2hhckFycmF5KCksIDAsIGxlZnQubGVuZ3RoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQudG9DaGFyQXJyYXkoKSwwLCByaWdodC5sZW5ndGgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQsICAgICAgICAgICAgIDAsIHJlc3VsdC5sZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZSk7CisgICAgICAgICAgICBpZihsZW5ndGg8PXJlc3VsdC5sZW5ndGgpeworICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU3RyaW5nKHJlc3VsdCwwLGxlbmd0aCk7CisgICAgICAgICAgICB9ZWxzZXsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBuZXcgY2hhcltsZW5ndGhdOworICAgICAgICAgICAgfQorICAgICAgICB9ICAgICAgICAgICAgCisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEdldHMgdGhlIEZDX05GS0MgY2xvc3VyZSBzZXQgZnJvbSB0aGUgbm9ybWFsaXphdGlvbiBkYXRhCisgICAgICogQHBhcmFtIGMgVGhlIGNvZGUgcG9pbnQgd2hvc2UgY2xvc3VyZSBzZXQgaXMgdG8gYmUgcmV0cmlldmVkCisgICAgICogQHBhcmFtIGRlc3QgVGhlIGNoYXIgYXJyYXkgdG8gcmVjaXZlIHRoZSBjbG9zdXJlIHNldAorICAgICAqIEBpbnRlcm5hbAorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnQgZ2V0RkNfTkZLQ19DbG9zdXJlKGludCBjLGNoYXJbXSBkZXN0KXsKKyAgICAgICAgcmV0dXJuIE5vcm1hbGl6ZXJJbXBsLmdldEZDX05GS0NfQ2xvc3VyZShjLGRlc3QpOworICAgIH0KKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBGQ19ORktDIGNsb3N1cmUgc2V0IGZyb20gdGhlIG5vcm1hbGl6YXRpb24gZGF0YQorICAgICAqIEBwYXJhbSBjIFRoZSB0aGUgY29kZSBwb2ludCB3aG9zZSBjbG9zdXJlIHNldCBpcyB0byBiZSByZXRyaWV2ZWQKKyAgICAgKiBAcmV0dXJuIFN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgY2xvc3VyZSBzZXQKKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLyAKKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRGQ19ORktDX0Nsb3N1cmUoaW50IGMpeworICAgICAgICBjaGFyW10gZGVzdCA9IG5ldyBjaGFyWzEwXTsKKyAgICAgICAgZm9yKDs7KXsKKyAgICAgICAgICAgIGludCBsZW5ndGggPSBnZXRGQ19ORktDX0Nsb3N1cmUoYyxkZXN0KTsKKyAgICAgICAgICAgIGlmKGxlbmd0aDw9ZGVzdC5sZW5ndGgpeworICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU3RyaW5nKGRlc3QsMCxsZW5ndGgpOworICAgICAgICAgICAgfWVsc2V7CisgICAgICAgICAgICAgICAgZGVzdCA9IG5ldyBjaGFyW2xlbmd0aF07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gSXRlcmF0aW9uIEFQSQorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCQorICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgY3VycmVudCBjaGFyYWN0ZXIgaW4gdGhlIG5vcm1hbGl6ZWQgdGV4dC0+CisgICAgICogQHJldHVybiBUaGUgY29kZXBvaW50IGFzIGFuIGludAorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIGludCBjdXJyZW50KCkgeworCQlpZihidWZmZXJQb3M8YnVmZmVyTGltaXQgfHwgbmV4dE5vcm1hbGl6ZSgpKSB7CisJCSAgICByZXR1cm4gZ2V0Q29kZVBvaW50QXQoYnVmZmVyUG9zKTsKKwkJfSBlbHNlIHsKKwkJICAgIHJldHVybiBET05FOworCQl9CisgICAgfQorCQorICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgbmV4dCBjaGFyYWN0ZXIgaW4gdGhlIG5vcm1hbGl6ZWQgdGV4dCBhbmQgYWR2YW5jZQorICAgICAqIHRoZSBpdGVyYXRpb24gcG9zaXRpb24gYnkgb25lLiAgSWYgdGhlIGVuZAorICAgICAqIG9mIHRoZSB0ZXh0IGhhcyBhbHJlYWR5IGJlZW4gcmVhY2hlZCwge0BsaW5rICNET05FfSBpcyByZXR1cm5lZC4KKyAgICAgKiBAcmV0dXJuIFRoZSBjb2RlcG9pbnQgYXMgYW4gaW50CisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IG5leHQoKSB7CisJCWlmKGJ1ZmZlclBvczxidWZmZXJMaW1pdCB8fCAgbmV4dE5vcm1hbGl6ZSgpKSB7CisJCSAgICBpbnQgYz1nZXRDb2RlUG9pbnRBdChidWZmZXJQb3MpOworCQkgICAgYnVmZmVyUG9zKz0oYz4weEZGRkYpID8gMiA6IDE7CisJCSAgICByZXR1cm4gYzsKKwkJfSBlbHNlIHsKKwkJICAgIHJldHVybiBET05FOworCQl9CisgICAgfQorCQorICAgICAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIHByZXZpb3VzIGNoYXJhY3RlciBpbiB0aGUgbm9ybWFsaXplZCB0ZXh0IGFuZCBkZWNyZW1lbnQKKyAgICAgKiB0aGUgaXRlcmF0aW9uIHBvc2l0aW9uIGJ5IG9uZS4gIElmIHRoZSBiZWdpbm5pbmcKKyAgICAgKiBvZiB0aGUgdGV4dCBoYXMgYWxyZWFkeSBiZWVuIHJlYWNoZWQsIHtAbGluayAjRE9ORX0gaXMgcmV0dXJuZWQuCisgICAgICogQHJldHVybiBUaGUgY29kZXBvaW50IGFzIGFuIGludAorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIGludCBwcmV2aW91cygpIHsKKwkJaWYoYnVmZmVyUG9zPjAgfHwgcHJldmlvdXNOb3JtYWxpemUoKSkgeworCQkgICAgaW50IGM9Z2V0Q29kZVBvaW50QXQoYnVmZmVyUG9zLTEpOworCQkgICAgYnVmZmVyUG9zLT0oYz4weEZGRkYpID8gMiA6IDE7CisJCSAgICByZXR1cm4gYzsKKwkJfSBlbHNlIHsKKwkJICAgIHJldHVybiBET05FOworCQl9CisgICAgfQorCQorICAgLyoqCisgICAgKiBSZXNldCB0aGUgaW5kZXggdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgdGV4dC4KKyAgICAqIFRoaXMgaXMgZXF1aXZhbGVudCB0byBzZXRJbmRleE9ubHkoc3RhcnRJbmRleCkpLgorICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAqLworICAgIHB1YmxpYyB2b2lkIHJlc2V0KCkgeworICAgICAgICB0ZXh0LnNldEluZGV4KDApOworCQljdXJyZW50SW5kZXg9bmV4dEluZGV4PTA7CisJCWNsZWFyQnVmZmVyKCk7CisgICAgfQorICAgIAorICAgLyoqCisgICAgKiBTZXQgdGhlIGl0ZXJhdGlvbiBwb3NpdGlvbiBpbiB0aGUgaW5wdXQgdGV4dCB0aGF0IGlzIGJlaW5nIG5vcm1hbGl6ZWQsCisgICAgKiB3aXRob3V0IGFueSBpbW1lZGlhdGUgbm9ybWFsaXphdGlvbi4KKyAgICAqIEFmdGVyIHNldEluZGV4T25seSgpLCBnZXRJbmRleCgpIHdpbGwgcmV0dXJuIHRoZSBzYW1lIGluZGV4IHRoYXQgaXMKKyAgICAqIHNwZWNpZmllZCBoZXJlLgorICAgICoKKyAgICAqIEBwYXJhbSBpbmRleCB0aGUgZGVzaXJlZCBpbmRleCBpbiB0aGUgaW5wdXQgdGV4dC4KKyAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRJbmRleE9ubHkoaW50IGluZGV4KSB7CisgICAgICAgIHRleHQuc2V0SW5kZXgoaW5kZXgpOworCQljdXJyZW50SW5kZXg9bmV4dEluZGV4PWluZGV4OyAvLyB2YWxpZGF0ZXMgaW5kZXgKKwkJY2xlYXJCdWZmZXIoKTsKKyAgICB9CisJCisgICAgLyoqCisgICAgICogU2V0IHRoZSBpdGVyYXRpb24gcG9zaXRpb24gaW4gdGhlIGlucHV0IHRleHQgdGhhdCBpcyBiZWluZyBub3JtYWxpemVkCisgICAgICogYW5kIHJldHVybiB0aGUgZmlyc3Qgbm9ybWFsaXplZCBjaGFyYWN0ZXIgYXQgdGhhdCBwb3NpdGlvbi4KKyAgICAgKiA8cD4KKyAgICAgKiA8Yj5Ob3RlOjwvYj4gVGhpcyBtZXRob2Qgc2V0cyB0aGUgcG9zaXRpb24gaW4gdGhlIDxlbT5pbnB1dDwvZW0+IHRleHQsCisgICAgICogd2hpbGUge0BsaW5rICNuZXh0fSBhbmQge0BsaW5rICNwcmV2aW91c30gaXRlcmF0ZSB0aHJvdWdoIGNoYXJhY3RlcnMKKyAgICAgKiBpbiB0aGUgbm9ybWFsaXplZCA8ZW0+b3V0cHV0PC9lbT4uICBUaGlzIG1lYW5zIHRoYXQgdGhlcmUgaXMgbm90CisgICAgICogbmVjZXNzYXJpbHkgYSBvbmUtdG8tb25lIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gY2hhcmFjdGVycyByZXR1cm5lZAorICAgICAqIGJ5IDx0dD5uZXh0PC90dD4gYW5kIDx0dD5wcmV2aW91czwvdHQ+IGFuZCB0aGUgaW5kaWNlcyBwYXNzZWQgdG8gYW5kCisgICAgICogcmV0dXJuZWQgZnJvbSA8dHQ+c2V0SW5kZXg8L3R0PiBhbmQge0BsaW5rICNnZXRJbmRleH0uCisgICAgICogPHA+CisgICAgICogQHBhcmFtIGluZGV4IHRoZSBkZXNpcmVkIGluZGV4IGluIHRoZSBpbnB1dCB0ZXh0LT4KKyAgICAgKgorICAgICAqIEByZXR1cm4gICB0aGUgZmlyc3Qgbm9ybWFsaXplZCBjaGFyYWN0ZXIgdGhhdCBpcyB0aGUgcmVzdWx0IG9mIGl0ZXJhdGluZworICAgICAqICAgICAgICAgICAgZm9yd2FyZCBzdGFydGluZyBhdCB0aGUgZ2l2ZW4gaW5kZXguCisgICAgICoKKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgZ2l2ZW4gaW5kZXggaXMgbGVzcyB0aGFuCisgICAgICogICAgICAgICAge0BsaW5rICNnZXRCZWdpbkluZGV4fSBvciBncmVhdGVyIHRoYW4ge0BsaW5rICNnZXRFbmRJbmRleH0uCisgICAgICogQHJldHVybiBUaGUgY29kZXBvaW50IGFzIGFuIGludAorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIGludCBzZXRJbmRleChpbnQgaW5kZXgpIHsKKwkJc2V0SW5kZXhPbmx5KGluZGV4KTsKKwkJcmV0dXJuIGN1cnJlbnQoKTsKKyAgICB9CisgCisgICAgLyoqCisgICAgICogUmV0cmlldmUgdGhlIGluZGV4IG9mIHRoZSBzdGFydCBvZiB0aGUgaW5wdXQgdGV4dC4gVGhpcyBpcyB0aGUgYmVnaW4gCisgICAgICogaW5kZXggb2YgdGhlIDx0dD5DaGFyYWN0ZXJJdGVyYXRvcjwvdHQ+IG9yIHRoZSBzdGFydCAoaS5lLiAwKSBvZiB0aGUgCisgICAgICogPHR0PlN0cmluZzwvdHQ+IG92ZXIgd2hpY2ggdGhpcyA8dHQ+Tm9ybWFsaXplcjwvdHQ+IGlzIGl0ZXJhdGluZworICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjIuIFRvIGJlIHJlbW92ZWQgYWZ0ZXIgMjAwMy1hdWctMzEuIFVzZSBzdGFydEluZGV4KCkgaW5zdGVhZC4KKyAgICAgKiBAcmV0dXJuIFRoZSBjb2RlcG9pbnQgYXMgYW4gaW50CisgICAgICogQHNlZSAjc3RhcnRJbmRleAorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0QmVnaW5JbmRleCgpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0cmlldmUgdGhlIGluZGV4IG9mIHRoZSBlbmQgb2YgdGhlIGlucHV0IHRleHQuICBUaGlzIGlzIHRoZSBlbmQgaW5kZXgKKyAgICAgKiBvZiB0aGUgPHR0PkNoYXJhY3Rlckl0ZXJhdG9yPC90dD4gb3IgdGhlIGxlbmd0aCBvZiB0aGUgPHR0PlN0cmluZzwvdHQ+CisgICAgICogb3ZlciB3aGljaCB0aGlzIDx0dD5Ob3JtYWxpemVyPC90dD4gaXMgaXRlcmF0aW5nCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuMi4gVG8gYmUgcmVtb3ZlZCBhZnRlciAyMDAzLWF1Zy0zMS4gVXNlIGVuZEluZGV4KCkgaW5zdGVhZC4KKyAgICAgKiBAcmV0dXJuIFRoZSBjb2RlcG9pbnQgYXMgYW4gaW50CisgICAgICogQHNlZSAjZW5kSW5kZXgKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0RW5kSW5kZXgoKSB7CisgICAgICAgIHJldHVybiB0ZXh0LmdldExlbmd0aCgpLTE7CisgICAgfQorICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgZmlyc3QgY2hhcmFjdGVyIGluIHRoZSBub3JtYWxpemVkIHRleHQtPiAgVGhpcyByZXNldHMKKyAgICAgKiB0aGUgPHR0Pk5vcm1hbGl6ZXInczwvdHQ+IHBvc2l0aW9uIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHRleHQtPgorICAgICAqIEByZXR1cm4gVGhlIGNvZGVwb2ludCBhcyBhbiBpbnQKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZmlyc3QoKSB7CisJCXJlc2V0KCk7CisJCXJldHVybiBuZXh0KCk7CisgICAgfQorCQorICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgbGFzdCBjaGFyYWN0ZXIgaW4gdGhlIG5vcm1hbGl6ZWQgdGV4dC0+ICBUaGlzIHJlc2V0cworICAgICAqIHRoZSA8dHQ+Tm9ybWFsaXplcidzPC90dD4gcG9zaXRpb24gdG8gYmUganVzdCBiZWZvcmUgdGhlCisgICAgICogdGhlIGlucHV0IHRleHQgY29ycmVzcG9uZGluZyB0byB0aGF0IG5vcm1hbGl6ZWQgY2hhcmFjdGVyLgorICAgICAqIEByZXR1cm4gVGhlIGNvZGVwb2ludCBhcyBhbiBpbnQKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBpbnQgbGFzdCgpIHsKKyAgICAgICAgdGV4dC5zZXRUb0xpbWl0KCk7CisJCWN1cnJlbnRJbmRleD1uZXh0SW5kZXg9dGV4dC5nZXRJbmRleCgpOworCQljbGVhckJ1ZmZlcigpOworCQlyZXR1cm4gcHJldmlvdXMoKTsKKyAgICB9CisJCisgICAgLyoqCisgICAgICogUmV0cmlldmUgdGhlIGN1cnJlbnQgaXRlcmF0aW9uIHBvc2l0aW9uIGluIHRoZSBpbnB1dCB0ZXh0IHRoYXQgaXMKKyAgICAgKiBiZWluZyBub3JtYWxpemVkLiAgVGhpcyBtZXRob2QgaXMgdXNlZnVsIGluIGFwcGxpY2F0aW9ucyBzdWNoIGFzCisgICAgICogc2VhcmNoaW5nLCB3aGVyZSB5b3UgbmVlZCB0byBiZSBhYmxlIHRvIGRldGVybWluZSB0aGUgcG9zaXRpb24gaW4KKyAgICAgKiB0aGUgaW5wdXQgdGV4dCB0aGF0IGNvcnJlc3BvbmRzIHRvIGEgZ2l2ZW4gbm9ybWFsaXplZCBvdXRwdXQgY2hhcmFjdGVyLgorICAgICAqIDxwPgorICAgICAqIDxiPk5vdGU6PC9iPiBUaGlzIG1ldGhvZCBzZXRzIHRoZSBwb3NpdGlvbiBpbiB0aGUgPGVtPmlucHV0PC9lbT4sIHdoaWxlCisgICAgICoge0BsaW5rICNuZXh0fSBhbmQge0BsaW5rICNwcmV2aW91c30gaXRlcmF0ZSB0aHJvdWdoIGNoYXJhY3RlcnMgaW4gdGhlCisgICAgICogPGVtPm91dHB1dDwvZW0+LiAgVGhpcyBtZWFucyB0aGF0IHRoZXJlIGlzIG5vdCBuZWNlc3NhcmlseSBhIG9uZS10by1vbmUKKyAgICAgKiBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuIGNoYXJhY3RlcnMgcmV0dXJuZWQgYnkgPHR0Pm5leHQ8L3R0PiBhbmQKKyAgICAgKiA8dHQ+cHJldmlvdXM8L3R0PiBhbmQgdGhlIGluZGljZXMgcGFzc2VkIHRvIGFuZCByZXR1cm5lZCBmcm9tCisgICAgICogPHR0PnNldEluZGV4PC90dD4gYW5kIHtAbGluayAjZ2V0SW5kZXh9LgorICAgICAqIEByZXR1cm4gVGhlIGN1cnJlbnQgaXRlcmF0aW9uIHBvc2l0aW9uCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldEluZGV4KCl7CisJCWlmKGJ1ZmZlclBvczxidWZmZXJMaW1pdCkgeworCQkgICAgcmV0dXJuIGN1cnJlbnRJbmRleDsKKwkJfSBlbHNlIHsKKwkJICAgIHJldHVybiBuZXh0SW5kZXg7CisJCX0KKyAgICB9CisJCisgICAgLyoqCisgICAgICogUmV0cmlldmUgdGhlIGluZGV4IG9mIHRoZSBzdGFydCBvZiB0aGUgaW5wdXQgdGV4dC4gVGhpcyBpcyB0aGUgYmVnaW4gCisgICAgICogaW5kZXggb2YgdGhlIDx0dD5DaGFyYWN0ZXJJdGVyYXRvcjwvdHQ+IG9yIHRoZSBzdGFydCAoaS5lLiAwKSBvZiB0aGUgCisgICAgICogPHR0PlN0cmluZzwvdHQ+IG92ZXIgd2hpY2ggdGhpcyA8dHQ+Tm9ybWFsaXplcjwvdHQ+IGlzIGl0ZXJhdGluZworICAgICAqIEByZXR1cm4gVGhlIGN1cnJlbnQgaXRlcmF0aW9uIHBvc2l0aW9uCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IHN0YXJ0SW5kZXgoKXsKKwkJcmV0dXJuIDA7CisgICAgfQorCQorICAgIC8qKgorICAgICAqIFJldHJpZXZlIHRoZSBpbmRleCBvZiB0aGUgZW5kIG9mIHRoZSBpbnB1dCB0ZXh0LT4gIFRoaXMgaXMgdGhlIGVuZCBpbmRleAorICAgICAqIG9mIHRoZSA8dHQ+Q2hhcmFjdGVySXRlcmF0b3I8L3R0PiBvciB0aGUgbGVuZ3RoIG9mIHRoZSA8dHQ+U3RyaW5nPC90dD4KKyAgICAgKiBvdmVyIHdoaWNoIHRoaXMgPHR0Pk5vcm1hbGl6ZXI8L3R0PiBpcyBpdGVyYXRpbmcKKyAgICAgKiBAcmV0dXJuIFRoZSBjdXJyZW50IGl0ZXJhdGlvbiBwb3NpdGlvbgorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIGludCBlbmRJbmRleCgpeworCQlyZXR1cm4gdGV4dC5nZXRMZW5ndGgoKTsKKyAgICB9CisgICAgCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gUHJvcGVydHkgYWNjZXNzIG1ldGhvZHMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkvKioKKyAgICAgKiBTZXQgdGhlIG5vcm1hbGl6YXRpb24gbW9kZSBmb3IgdGhpcyBvYmplY3QuCisgICAgICogPHA+CisgICAgICogPGI+Tm90ZTo8L2I+SWYgdGhlIG5vcm1hbGl6YXRpb24gbW9kZSBpcyBjaGFuZ2VkIHdoaWxlIGl0ZXJhdGluZworICAgICAqIG92ZXIgYSBzdHJpbmcsIGNhbGxzIHRvIHtAbGluayAjbmV4dH0gYW5kIHtAbGluayAjcHJldmlvdXN9IG1heQorICAgICAqIHJldHVybiBwcmV2aW91c2x5IGJ1ZmZlcnMgY2hhcmFjdGVycyBpbiB0aGUgb2xkIG5vcm1hbGl6YXRpb24gbW9kZQorICAgICAqIHVudGlsIHRoZSBpdGVyYXRpb24gaXMgYWJsZSB0byByZS1zeW5jIGF0IHRoZSBuZXh0IGJhc2UgY2hhcmFjdGVyLgorICAgICAqIEl0IGlzIHNhZmVzdCB0byBjYWxsIHtAbGluayAjc2V0VGV4dCBzZXRUZXh0KCl9LCB7QGxpbmsgI2ZpcnN0fSwKKyAgICAgKiB7QGxpbmsgI2xhc3R9LCBldGMuIGFmdGVyIGNhbGxpbmcgPHR0PnNldE1vZGU8L3R0Pi4KKyAgICAgKiA8cD4KKyAgICAgKiBAcGFyYW0gbmV3TW9kZSB0aGUgbmV3IG1vZGUgZm9yIHRoaXMgPHR0Pk5vcm1hbGl6ZXI8L3R0Pi4KKyAgICAgKiBUaGUgc3VwcG9ydGVkIG1vZGVzIGFyZToKKyAgICAgKiA8dWw+CisgICAgICogIDxsaT57QGxpbmsgI0NPTVBPU0V9ICAgICAgICAtIFVuaWNvZGUgY2Fub25pY2FsIGRlY29tcG9zaXRpaW9uCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93ZWQgYnkgY2Fub25pY2FsIGNvbXBvc2l0aW9uLgorICAgICAqICA8bGk+e0BsaW5rICNDT01QT1NFX0NPTVBBVH0gLSBVbmljb2RlIGNvbXBhdGliaWxpdHkgZGVjb21wb3NpdGlpb24KKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsd2VkIGJ5IGNhbm9uaWNhbCBjb21wb3NpdGlvbi4KKyAgICAgKiAgPGxpPntAbGluayAjREVDT01QfSAgICAgICAgIC0gVW5pY29kZSBjYW5vbmljYWwgZGVjb21wb3NpdGlvbgorICAgICAqICA8bGk+e0BsaW5rICNERUNPTVBfQ09NUEFUfSAgLSBVbmljb2RlIGNvbXBhdGliaWxpdHkgZGVjb21wb3NpdGlvbi4KKyAgICAgKiAgPGxpPntAbGluayAjTk9fT1B9ICAgICAgICAgIC0gRG8gbm90aGluZyBidXQgcmV0dXJuIGNoYXJhY3RlcnMKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSB1bmRlcmx5aW5nIGlucHV0IHRleHQuCisgICAgICogPC91bD4KKyAgICAgKgorICAgICAqIEBzZWUgI2dldE1vZGUKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldE1vZGUoTW9kZSBuZXdNb2RlKXsKKwkJbW9kZSA9IG5ld01vZGU7CisgICAgfQorCS8qKgorICAgICAqIFJldHVybiB0aGUgYmFzaWMgb3BlcmF0aW9uIHBlcmZvcm1lZCBieSB0aGlzIDx0dD5Ob3JtYWxpemVyPC90dD4KKyAgICAgKgorICAgICAqIEBzZWUgI3NldE1vZGUKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBNb2RlIGdldE1vZGUoKSB7CisJCXJldHVybiBtb2RlOworICAgIH0KKwkvKioKKyAgICAgKiBTZXQgb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGlzIDx0dD5Ob3JtYWxpemVyPC90dD4ncyBvcGVyYXRpb24uCisgICAgICogT3B0aW9ucyBkbyBub3QgY2hhbmdlIHRoZSBiYXNpYyBjb21wb3NpdGlvbiBvciBkZWNvbXBvc2l0aW9uIG9wZXJhdGlvbgorICAgICAqIHRoYXQgaXMgYmVpbmcgcGVyZm9ybWVkICwgYnV0IHRoZXkgY29udHJvbCB3aGV0aGVyCisgICAgICogY2VydGFpbiBvcHRpb25hbCBwb3J0aW9ucyBvZiB0aGUgb3BlcmF0aW9uIGFyZSBkb25lLgorICAgICAqIEN1cnJlbnRseSB0aGUgb25seSBhdmFpbGFibGUgb3B0aW9uIGlzOgorICAgICAqIDxwPgorICAgICAqIDx1bD4KKyAgICAgKiAgIDxsaT57QGxpbmsgI0lHTk9SRV9IQU5HVUx9IC0gRG8gbm90IGRlY29tcG9zZSBIYW5ndWwgc3lsbGFibGVzIGludG8gdGhlCisgICAgICogICAgICAgICAgSmFtbyBhbHBoYWJldCBhbmQgdmljZS12ZXJzYS4gIFRoaXMgb3B0aW9uIGlzIG9mZiBieSBkZWZhdWx0IAorICAgICAqICAgICAgICAgICg8aT5pLmUuPC9pPiBIYW5ndWwgcHJvY2Vzc2luZyBpcyBlbmFibGVkKSBzaW5jZSB0aGUgVW5pY29kZSAKKyAgICAgKiAgICAgICAgICBzdGFuZGFyZCBzcGVjaWZpZXMgdGhhdCBIYW5ndWwgdG8gSmFtbyBpcyBhIGNhbm9uaWNhbCAKKyAgICAgKiAgICAgICAgICBkZWNvbXBvc2l0aW9uLiAgRm9yIGFueSBvZiB0aGUgc3RhbmRhcmQgVW5pY29kZSBOb3JtYWxpemF0aW9uIAorICAgICAqICAgICAgICAgIEZvcm1zLCB5b3Ugc2hvdWxkIGxlYXZlIHRoaXMgb3B0aW9uIG9mZi4KKyAgICAgKiA8L3VsPgorICAgICAqIDxwPgorICAgICAqIEBwYXJhbSAgIG9wdGlvbiAgdGhlIG9wdGlvbiB3aG9zZSB2YWx1ZSBpcyB0byBiZSBzZXQuCisgICAgICogQHBhcmFtICAgdmFsdWUgICB0aGUgbmV3IHNldHRpbmcgZm9yIHRoZSBvcHRpb24uICBVc2UgPHR0PnRydWU8L3R0PiB0bworICAgICAqICAgICAgICAgICAgICAgICAgdHVybiB0aGUgb3B0aW9uIG9uIGFuZCA8dHQ+ZmFsc2U8L3R0PiB0byB0dXJuIGl0IG9mZi4KKyAgICAgKgorICAgICAqIEBzZWUgI2dldE9wdGlvbgorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjIuIFRvIGJlIHJlbW92ZWQgYWZ0ZXIgMjAwMy1BdWctMzEuCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0T3B0aW9uKGludCBvcHRpb24sYm9vbGVhbiB2YWx1ZSkgeworCQlpZiAodmFsdWUpIHsKKwkJICAgIG9wdGlvbnMgfD0gb3B0aW9uOworCQl9IGVsc2UgeworCQkgICAgb3B0aW9ucyAmPSAofm9wdGlvbik7CisJCX0KKyAgICB9CisJCisgICAgLyoqCisgICAgICogRGV0ZXJtaW5lIHdoZXRoZXIgYW4gb3B0aW9uIGlzIHR1cm5lZCBvbiBvciBvZmYuCisgICAgICogPHA+CisgICAgICogQHNlZSAjc2V0T3B0aW9uCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuMi4gVG8gYmUgcmVtb3ZlZCBhZnRlciAyMDAzLUF1Zy0zMS4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldE9wdGlvbihpbnQgb3B0aW9uKXsKKwkgICAgaWYoKG9wdGlvbnMgJiBvcHRpb24pIT0wKXsKKyAgICAgICAgICAgIHJldHVybiAxIDsKKyAgICAgICAgfWVsc2V7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSB1bmRlcmx5aW5nIHRleHQgc3RvcmFnZQorICAgICAqIEBwYXJhbSBmaWxsSW4gdGhlIGNoYXIgYnVmZmVyIHRvIGZpbGwgdGhlIFVURi0xNiB1bml0cy4KKyAgICAgKiAgICAgICAgIFRoZSBsZW5ndGggb2YgdGhlIGJ1ZmZlciBzaG91bGQgYmUgZXF1YWwgdG8gdGhlIGxlbmd0aCBvZiB0aGUKKyAgICAgKiAgICAgICAgIHVuZGVybHlpbmcgdGV4dCBzdG9yYWdlCisgICAgICogQHRocm93cyBJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uCisgICAgICogQHNlZSAgICNnZXRMZW5ndGgKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0VGV4dChjaGFyW10gZmlsbEluKXsKKyAgICAgICAgcmV0dXJuIHRleHQuZ2V0VGV4dChmaWxsSW4pOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBsZW5ndGggb2YgdW5kZXJseWluZyB0ZXh0IHN0b3JhZ2UKKyAgICAgKiBAcmV0dXJuIHRoZSBsZW5ndGgKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLyAKKyAgICBwdWJsaWMgaW50IGdldExlbmd0aCgpeworICAgICAgICByZXR1cm4gdGV4dC5nZXRMZW5ndGgoKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgdGV4dCB1bmRlciBpdGVyYXRpb24gYXMgYSBzdHJpbmcKKyAgICAgKiBAcGFyYW0gcmVzdWx0IGEgY29weSBvZiB0aGUgdGV4dCB1bmRlciBpdGVyYXRpb24uCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIGdldFRleHQoKXsKKyAgICAgICAgcmV0dXJuIHRleHQuZ2V0VGV4dCgpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIGlucHV0IHRleHQgb3ZlciB3aGljaCB0aGlzIDx0dD5Ob3JtYWxpemVyPC90dD4gd2lsbCBpdGVyYXRlLgorICAgICAqIFRoZSBpdGVyYXRpb24gcG9zaXRpb24gaXMgc2V0IHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGlucHV0IHRleHQtPgorICAgICAqIEBwYXJhbSBuZXdUZXh0ICAgVGhlIG5ldyBzdHJpbmcgdG8gYmUgbm9ybWFsaXplZC4KKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFRleHQoU3RyaW5nQnVmZmVyIG5ld1RleHQpeworICAgICAgICAKKyAgICAgICAgVUNoYXJhY3Rlckl0ZXJhdG9yIG5ld0l0ZXIgPSBVQ2hhcmFjdGVySXRlcmF0b3IuZ2V0SW5zdGFuY2UobmV3VGV4dCk7CisgICAgICAgIGlmIChuZXdJdGVyID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcigiQ291bGQgbm90IGNyZWF0ZSBhIG5ldyBVQ2hhcmFjdGVySXRlcmF0b3IiKTsKKyAgICAgICAgfSAgCisgICAgICAgIHRleHQgPSBuZXdJdGVyOworICAgICAgICByZXNldCgpOworICAgIH0KKwkKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIGlucHV0IHRleHQgb3ZlciB3aGljaCB0aGlzIDx0dD5Ob3JtYWxpemVyPC90dD4gd2lsbCBpdGVyYXRlLgorICAgICAqIFRoZSBpdGVyYXRpb24gcG9zaXRpb24gaXMgc2V0IHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGlucHV0IHRleHQtPgorICAgICAqIEBwYXJhbSBuZXdUZXh0ICAgVGhlIG5ldyBzdHJpbmcgdG8gYmUgbm9ybWFsaXplZC4KKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFRleHQoY2hhcltdIG5ld1RleHQpeworICAgICAgICAKKyAgICAgICAgVUNoYXJhY3Rlckl0ZXJhdG9yIG5ld0l0ZXIgPSBVQ2hhcmFjdGVySXRlcmF0b3IuZ2V0SW5zdGFuY2UobmV3VGV4dCk7CisgICAgICAgIGlmIChuZXdJdGVyID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcigiQ291bGQgbm90IGNyZWF0ZSBhIG5ldyBVQ2hhcmFjdGVySXRlcmF0b3IiKTsKKyAgICAgICAgfSAgCisgICAgICAgIHRleHQgPSBuZXdJdGVyOworICAgICAgICByZXNldCgpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIGlucHV0IHRleHQgb3ZlciB3aGljaCB0aGlzIDx0dD5Ob3JtYWxpemVyPC90dD4gd2lsbCBpdGVyYXRlLgorICAgICAqIFRoZSBpdGVyYXRpb24gcG9zaXRpb24gaXMgc2V0IHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGlucHV0IHRleHQtPgorICAgICAqIEBwYXJhbSBuZXdUZXh0ICAgVGhlIG5ldyBzdHJpbmcgdG8gYmUgbm9ybWFsaXplZC4KKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFRleHQoU3RyaW5nIG5ld1RleHQpeworCSAgICAKKwkJVUNoYXJhY3Rlckl0ZXJhdG9yIG5ld0l0ZXIgPSBVQ2hhcmFjdGVySXRlcmF0b3IuZ2V0SW5zdGFuY2UobmV3VGV4dCk7CisJCWlmIChuZXdJdGVyID09IG51bGwpIHsKKwkgICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcigiQ291bGQgbm90IGNyZWF0ZSBhIG5ldyBVQ2hhcmFjdGVySXRlcmF0b3IiKTsKKwkJfSAgCisJCXRleHQgPSBuZXdJdGVyOworCQlyZXNldCgpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIGlucHV0IHRleHQgb3ZlciB3aGljaCB0aGlzIDx0dD5Ob3JtYWxpemVyPC90dD4gd2lsbCBpdGVyYXRlLgorICAgICAqIFRoZSBpdGVyYXRpb24gcG9zaXRpb24gaXMgc2V0IHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGlucHV0IHRleHQtPgorICAgICAqIEBwYXJhbSBuZXdUZXh0ICAgVGhlIG5ldyBzdHJpbmcgdG8gYmUgbm9ybWFsaXplZC4KKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFRleHQoQ2hhcmFjdGVySXRlcmF0b3IgbmV3VGV4dCl7CisgICAgICAgIAorICAgICAgICBVQ2hhcmFjdGVySXRlcmF0b3IgbmV3SXRlciA9IFVDaGFyYWN0ZXJJdGVyYXRvci5nZXRJbnN0YW5jZShuZXdUZXh0KTsKKyAgICAgICAgaWYgKG5ld0l0ZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoIkNvdWxkIG5vdCBjcmVhdGUgYSBuZXcgVUNoYXJhY3Rlckl0ZXJhdG9yIik7CisgICAgICAgIH0gIAorICAgICAgICB0ZXh0ID0gbmV3SXRlcjsKKyAgICAgICAgcmVzZXQoKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogU2V0IHRoZSBpbnB1dCB0ZXh0IG92ZXIgd2hpY2ggdGhpcyA8dHQ+Tm9ybWFsaXplcjwvdHQ+IHdpbGwgaXRlcmF0ZS4KKyAgICAgKiBUaGUgaXRlcmF0aW9uIHBvc2l0aW9uIGlzIHNldCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcuCisgICAgICogQHBhcmFtIG5ld1RleHQgICBUaGUgbmV3IHN0cmluZyB0byBiZSBub3JtYWxpemVkLgorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgLy9JbnRlcm5hbCBtZXRob2QgZm9yIG5vdworICAgIHB1YmxpYyB2b2lkIHNldFRleHQoVUNoYXJhY3Rlckl0ZXJhdG9yIG5ld1RleHQpeyAKKyAgICAgICAgdHJ5eworCSAgICAgICAgVUNoYXJhY3Rlckl0ZXJhdG9yIG5ld0l0ZXIgPSAoVUNoYXJhY3Rlckl0ZXJhdG9yKW5ld1RleHQuY2xvbmUoKTsKKwkJICAgIGlmIChuZXdJdGVyID09IG51bGwpIHsKKwkJCSAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcigiQ291bGQgbm90IGNyZWF0ZSBhIG5ldyBVQ2hhcmFjdGVySXRlcmF0b3IiKTsKKwkJICAgIH0KKwkJICAgIHRleHQgPSBuZXdJdGVyOworCQkgICAgcmVzZXQoKTsKKyAgICAgICAgfWNhdGNoKENsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIGUpeworICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoIkNvdWxkIG5vdCBjbG9uZSB0aGUgVUNoYXJhY3Rlckl0ZXJhdG9yIik7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gUHJpdmF0ZSB1dGlsaXR5IG1ldGhvZHMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKworICAgIC8qIGJhY2t3YXJkIGl0ZXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAgICAgICAgICAgICAgIAorICAgIC8qCisgICAgICogcmVhZCBiYWNrd2FyZHMgYW5kIGdldCBub3JtMzIKKyAgICAgKiByZXR1cm4gMCBpZiB0aGUgY2hhcmFjdGVyIGlzIDxtaW5DCisgICAgICogaWYgYzIhPTAgdGhlbiAoYzIsIGMpIGlzIGEgc3Vycm9nYXRlIHBhaXIgKHJldmVyc2VkIC0gYzIgaXMgZmlyc3QgCisgICAgICogc3Vycm9nYXRlIGJ1dCByZWFkIHNlY29uZCEpCisgICAgICovCisKKyAgICBwcml2YXRlIHN0YXRpYyAgbG9uZyBnZXRQcmV2Tm9ybTMyKFVDaGFyYWN0ZXJJdGVyYXRvciBzcmMsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQvKnVuc2lnbmVkKi8gbWluQywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludC8qdW5zaWduZWQqLyBtYXNrLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcltdIGNoYXJzKSB7CisgICAgICAgIGxvbmcgbm9ybTMyOworICAgICAgICBpbnQgY2g9MDsKKyAgICAgICAgLyogbmVlZCBzcmMuaGFzUHJldmlvdXMoKSAqLworICAgICAgICBpZigoY2g9c3JjLnByZXZpb3VzKCkpID09IFVDaGFyYWN0ZXJJdGVyYXRvci5ET05FKXsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGNoYXJzWzBdPShjaGFyKWNoOworICAgICAgICBjaGFyc1sxXT0wOworICAgIAorICAgICAgICAvKiBjaGVjayBmb3IgYSBzdXJyb2dhdGUgYmVmb3JlIGdldHRpbmcgbm9ybTMyIHRvIHNlZSBpZiB3ZSBuZWVkIHRvIAorICAgICAgICAgKiBwcmVkZWNyZW1lbnQgZnVydGhlciAqLworICAgICAgICBpZihjaGFyc1swXTxtaW5DKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfSBlbHNlIGlmKCFVVEYxNi5pc1N1cnJvZ2F0ZShjaGFyc1swXSkpIHsKKyAgICAgICAgICAgIHJldHVybiBOb3JtYWxpemVySW1wbC5nZXROb3JtMzIoY2hhcnNbMF0pOworICAgICAgICB9IGVsc2UgaWYoVVRGMTYuaXNMZWFkU3Vycm9nYXRlKGNoYXJzWzBdKSB8fCAoc3JjLmdldEluZGV4KCk9PTApKSB7CisgICAgICAgICAgICAvKiB1bnBhaXJlZCBzdXJyb2dhdGUgKi8KKyAgICAgICAgICAgIGNoYXJzWzFdPShjaGFyKXNyYy5jdXJyZW50KCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfSBlbHNlIGlmKFVURjE2LmlzTGVhZFN1cnJvZ2F0ZShjaGFyc1sxXT0oY2hhcilzcmMucHJldmlvdXMoKSkpIHsKKyAgICAgICAgICAgIG5vcm0zMj1Ob3JtYWxpemVySW1wbC5nZXROb3JtMzIoY2hhcnNbMV0pOworICAgICAgICAgICAgaWYoKG5vcm0zMiZtYXNrKT09MCkgeworICAgICAgICAgICAgICAgIC8qIGFsbCBzdXJyb2dhdGUgcGFpcnMgd2l0aCB0aGlzIGxlYWQgc3Vycm9nYXRlIGhhdmUgaXJyZWxldmFudCAKKyAgICAgICAgICAgICAgICAgKiBkYXRhICovCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8qIG5vcm0zMiBtdXN0IGJlIGEgc3Vycm9nYXRlIHNwZWNpYWwgKi8KKyAgICAgICAgICAgICAgICByZXR1cm4gTm9ybWFsaXplckltcGwuZ2V0Tm9ybTMyRnJvbVN1cnJvZ2F0ZVBhaXIobm9ybTMyLGNoYXJzWzBdKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qIHVucGFpcmVkIHNlY29uZCBzdXJyb2dhdGUsIHVuZG8gdGhlIGMyPXNyYy5wcmV2aW91cygpIG1vdmVtZW50ICovCisgICAgICAgICAgICBzcmMubW92ZUluZGV4KCAxKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorIAorICAgIHByaXZhdGUgaW50ZXJmYWNlIElzUHJldkJvdW5kYXJ5eworICAgICAgICBwdWJsaWMgYm9vbGVhbiBpc1ByZXZCb3VuZGFyeShVQ2hhcmFjdGVySXRlcmF0b3Igc3JjLAorICAgICAgICAgICAgICAgICAgICAgICBpbnQvKnVuc2lnbmVkKi8gbWluQywgCisgICAgICAgICAgICAgICAgICAgICAgIGludC8qdW5zaWduZWQqLyBtYXNrLCAKKyAgICAgICAgICAgICAgICAgICAgICAgY2hhcltdIGNoYXJzKTsKKyAgICB9CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2xhc3MgSXNQcmV2TkZEU2FmZSBpbXBsZW1lbnRzIElzUHJldkJvdW5kYXJ5eworICAgICAgICAvKgorICAgICAgICAgKiBmb3IgTkYqRDoKKyAgICAgICAgICogcmVhZCBiYWNrd2FyZHMgYW5kIGNoZWNrIGlmIHRoZSBsZWFkIGNvbWJpbmluZyBjbGFzcyBpcyAwCisgICAgICAgICAqIGlmIGMyIT0wIHRoZW4gKGMyLCBjKSBpcyBhIHN1cnJvZ2F0ZSBwYWlyIChyZXZlcnNlZCAtIGMyIGlzIGZpcnN0IAorICAgICAgICAgKiBzdXJyb2dhdGUgYnV0IHJlYWQgc2Vjb25kISkKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBib29sZWFuIGlzUHJldkJvdW5kYXJ5KFVDaGFyYWN0ZXJJdGVyYXRvciBzcmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludC8qdW5zaWduZWQqLyBtaW5DLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50Lyp1bnNpZ25lZCovIGNjT3JRQ01hc2ssIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyW10gY2hhcnMpIHsKKyAgICAKKyAgICAgICAgICAgIHJldHVybiBOb3JtYWxpemVySW1wbC5pc05GRFNhZmUoZ2V0UHJldk5vcm0zMihzcmMsIG1pbkMsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjT3JRQ01hc2ssIGNoYXJzKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjT3JRQ01hc2ssIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjY09yUUNNYXNrJiBOb3JtYWxpemVySW1wbC5RQ19NQVNLKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjbGFzcyBJc1ByZXZUcnVlU3RhcnRlciBpbXBsZW1lbnRzIElzUHJldkJvdW5kYXJ5eworICAgICAgICAvKgorICAgICAgICAgKiByZWFkIGJhY2t3YXJkcyBhbmQgY2hlY2sgaWYgdGhlIGNoYXJhY3RlciBpcyAob3IgaXRzIGRlY29tcG9zaXRpb24gCisgICAgICAgICAqIGJlZ2lucyB3aXRoKSBhICJ0cnVlIHN0YXJ0ZXIiIChjYz09MCBhbmQgTkYqQ19ZRVMpCisgICAgICAgICAqIGlmIGMyIT0wIHRoZW4gKGMyLCBjKSBpcyBhIHN1cnJvZ2F0ZSBwYWlyIChyZXZlcnNlZCAtIGMyIGlzIGZpcnN0IAorICAgICAgICAgKiBzdXJyb2dhdGUgYnV0IHJlYWQgc2Vjb25kISkKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBib29sZWFuIGlzUHJldkJvdW5kYXJ5KFVDaGFyYWN0ZXJJdGVyYXRvciBzcmMsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQvKnVuc2lnbmVkKi8gbWluQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50Lyp1bnNpZ25lZCovIGNjT3JRQ01hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJbXSBjaGFycykgeworICAgICAgICAgICAgbG9uZyBub3JtMzI7IAorICAgICAgICAgICAgaW50Lyp1bnNpZ25lZCovIGRlY29tcFFDTWFzazsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZGVjb21wUUNNYXNrPShjY09yUUNNYXNrPDwyKSYweGY7IC8qZGVjb21wb3NpdGlvbiBxdWljayBjaGVjayBtYXNrKi8KKyAgICAgICAgICAgIG5vcm0zMj1nZXRQcmV2Tm9ybTMyKHNyYywgbWluQywgY2NPclFDTWFza3xkZWNvbXBRQ01hc2ssIGNoYXJzKTsKKyAgICAgICAgICAgIHJldHVybiBOb3JtYWxpemVySW1wbC5pc1RydWVTdGFydGVyKG5vcm0zMixjY09yUUNNYXNrLGRlY29tcFFDTWFzayk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgaW50IGZpbmRQcmV2aW91c0l0ZXJhdGlvbkJvdW5kYXJ5KFVDaGFyYWN0ZXJJdGVyYXRvciBzcmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElzUHJldkJvdW5kYXJ5IG9iaiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludC8qdW5zaWduZWQqLyBtaW5DLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQvKm1hc2sqLyBtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyW10gYnVmZmVyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50W10gc3RhcnRJbmRleCkgeworICAgICAgICBjaGFyW10gY2hhcnM9bmV3IGNoYXJbMl07CisgICAgICAgIGJvb2xlYW4gaXNCb3VuZGFyeTsKKyAgICAKKyAgICAgICAgIC8qIGZpbGwgdGhlIGJ1ZmZlciBmcm9tIHRoZSBlbmQgYmFja3dhcmRzICovCisgICAgICAgIHN0YXJ0SW5kZXhbMF0gPSBidWZmZXIubGVuZ3RoOworICAgICAgICBjaGFyc1swXT0wOworICAgICAgICB3aGlsZShzcmMuZ2V0SW5kZXgoKT4wICYmIGNoYXJzWzBdIT1VQ2hhcmFjdGVySXRlcmF0b3IuRE9ORSkgeworICAgICAgICAgICAgaXNCb3VuZGFyeT1vYmouaXNQcmV2Qm91bmRhcnkoc3JjLCBtaW5DLCBtYXNrLCBjaGFycyk7CisgICAgCisgICAgICAgICAgICAvKiBhbHdheXMgd3JpdGUgdGhpcyBjaGFyYWN0ZXIgdG8gdGhlIGZyb250IG9mIHRoZSBidWZmZXIgKi8KKyAgICAgICAgICAgIC8qIG1ha2Ugc3VyZSB0aGVyZSBpcyBlbm91Z2ggc3BhY2UgaW4gdGhlIGJ1ZmZlciAqLworICAgICAgICAgICAgaWYoc3RhcnRJbmRleFswXSA8IChjaGFyc1sxXT09MCA/IDEgOiAyKSkgeworCisgICAgICAgICAgICAgICAgLy8gZ3JvdyB0aGUgYnVmZmVyCisgICAgICAgICAgICAgICAgY2hhcltdIG5ld0J1ZiA9IG5ldyBjaGFyW2J1ZmZlci5sZW5ndGgqMl07CisgICAgICAgICAgICAgICAgLyogbW92ZSB0aGUgY3VycmVudCBidWZmZXIgY29udGVudHMgdXAgKi8KKyAgICAgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KGJ1ZmZlcixzdGFydEluZGV4WzBdLG5ld0J1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0J1Zi5sZW5ndGgtKGJ1ZmZlci5sZW5ndGgtc3RhcnRJbmRleFswXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIubGVuZ3RoLXN0YXJ0SW5kZXhbMF0pOworICAgICAgICAgICAgICAgIC8vYWRqdXN0IHRoZSBzdGFydEluZGV4CisgICAgICAgICAgICAgICAgc3RhcnRJbmRleFswXSs9bmV3QnVmLmxlbmd0aC1idWZmZXIubGVuZ3RoOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGJ1ZmZlcj1uZXdCdWY7CisgICAgICAgICAgICAgICAgbmV3QnVmPW51bGw7ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgYnVmZmVyWy0tc3RhcnRJbmRleFswXV09Y2hhcnNbMF07CisgICAgICAgICAgICBpZihjaGFyc1sxXSE9MCkgeworICAgICAgICAgICAgICAgIGJ1ZmZlclstLXN0YXJ0SW5kZXhbMF1dPWNoYXJzWzFdOworICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgLyogc3RvcCBpZiB0aGlzIGp1c3QtY29waWVkIGNoYXJhY3RlciBpcyBhIGJvdW5kYXJ5ICovCisgICAgICAgICAgICBpZihpc0JvdW5kYXJ5KSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgLyogcmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIGJ1ZmZlciBjb250ZW50cyAqLworICAgICAgICByZXR1cm4gYnVmZmVyLmxlbmd0aC1zdGFydEluZGV4WzBdOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBpbnQgcHJldmlvdXMoVUNoYXJhY3Rlckl0ZXJhdG9yIHNyYywKKyAgICAgICAgICAgICAgICAgICBjaGFyW10gZGVzdCwgaW50IGRlc3RTdGFydCwgaW50IGRlc3RMaW1pdCwgCisgICAgICAgICAgICAgICAgICAgTW9kZSBtb2RlLCAKKyAgICAgICAgICAgICAgICAgICAvKmludCBvcHRpb25zLCovCisgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBkb05vcm1hbGl6ZSwgCisgICAgICAgICAgICAgICAgICAgYm9vbGVhbltdIHBOZWVkZWRUb05vcm1hbGl6ZSkgeworCisgICAgICAgIElzUHJldkJvdW5kYXJ5IGlzUHJldmlvdXNCb3VuZGFyeTsKKyAgICAgICAgaW50IGRlc3RMZW5ndGgsIGJ1ZmZlckxlbmd0aDsKKyAgICAgICAgaW50Lyp1bnNpZ25lZCovIG1hc2s7CisgICAgICAgIGludFtdIHN0YXJ0SW5kZXg9IG5ldyBpbnRbMV07CisgICAgICAgIGludCBjLGMyOworICAgICAgICAKKyAgICAgICAgY2hhciBtaW5DOworICAgICAgICBpbnQgZGVzdENhcGFjaXR5ID0gZGVzdExpbWl0LWRlc3RTdGFydDsKKyAgICAgICAgZGVzdExlbmd0aD0wOworICAgICAgICBjaGFyW10gYnVmZmVyID0gbmV3IGNoYXJbMTAwXTsKKyAgICAgICAgCisgICAgICAgIGlmKHBOZWVkZWRUb05vcm1hbGl6ZSE9bnVsbCkgeworICAgICAgICAgICAgcE5lZWRlZFRvTm9ybWFsaXplWzBdPWZhbHNlOworICAgICAgICB9CisgICAgICAgIG1pbkMgPSAoY2hhciltb2RlLmdldE1pbkMoKTsKKyAgICAgICAgbWFzayA9IG1vZGUuZ2V0TWFzaygpOworICAgICAgICBpc1ByZXZpb3VzQm91bmRhcnkgPSBtb2RlLmdldFByZXZCb3VuZGFyeSgpOworCisgICAgICAgIGlmKGlzUHJldmlvdXNCb3VuZGFyeT09bnVsbCl7CisgICAgICAgICAgICBkZXN0TGVuZ3RoPTA7CisgICAgICAgICAgICBpZigoYz1zcmMucHJldmlvdXMoKSk+PTApIHsKKyAgICAgICAgICAgICAgICBkZXN0TGVuZ3RoPTE7CisgICAgICAgICAgICAgICAgaWYoVVRGMTYuaXNUcmFpbFN1cnJvZ2F0ZSgoY2hhciljKSl7CisgICAgICAgICAgICAgICAgICAgIGMyPSBzcmMucHJldmlvdXMoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYoYzIhPSBVQ2hhcmFjdGVySXRlcmF0b3IuRE9ORSl7CisgICAgICAgICAgICAgICAgICAgICAgICBpZihVVEYxNi5pc0xlYWRTdXJyb2dhdGUoKGNoYXIpYzIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoZGVzdENhcGFjaXR5Pj0yKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RbMV09KGNoYXIpYzsgLy8gdHJhaWwgc3Vycm9nYXRlIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0TGVuZ3RoPTI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxlYWQgc3Vycm9nYXRlIHRvIGJlIHdyaXR0ZW4gYmVsb3cgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYz1jMjsgCisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYy5tb3ZlSW5kZXgoMSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgCisgICAgICAgICAgICAgICAgaWYoZGVzdENhcGFjaXR5PjApIHsKKyAgICAgICAgICAgICAgICAgICAgZGVzdFswXT0oY2hhciljOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBkZXN0TGVuZ3RoOworICAgICAgICAgfQorICAgIAorICAgICAgICBidWZmZXJMZW5ndGg9ZmluZFByZXZpb3VzSXRlcmF0aW9uQm91bmRhcnkoc3JjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNQcmV2aW91c0JvdW5kYXJ5LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbkMsIG1hc2ssYnVmZmVyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXgpOworICAgICAgICBpZihidWZmZXJMZW5ndGg+MCkgeworICAgICAgICAgICAgaWYoZG9Ob3JtYWxpemUpIHsKKyAgICAgICAgICAgICAgICBkZXN0TGVuZ3RoPU5vcm1hbGl6ZXIubm9ybWFsaXplKGJ1ZmZlcixzdGFydEluZGV4WzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXhbMF0rYnVmZmVyTGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3QsIGRlc3RTdGFydCxkZXN0TGltaXQsbW9kZSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYocE5lZWRlZFRvTm9ybWFsaXplIT1udWxsKSB7CisgICAgICAgICAgICAgICAgICAgIHBOZWVkZWRUb05vcm1hbGl6ZVswXT0oYm9vbGVhbikoZGVzdExlbmd0aCE9YnVmZmVyTGVuZ3RoIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXRpbGl0eS5hcnJheVJlZ2lvbk1hdGNoZXMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIsMCxkZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFN0YXJ0LGRlc3RMaW1pdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKiBqdXN0IGNvcHkgdGhlIHNvdXJjZSBjaGFyYWN0ZXJzICovCisgICAgICAgICAgICAgICAgaWYoZGVzdENhcGFjaXR5PjApIHsKKyAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShidWZmZXIsc3RhcnRJbmRleFswXSxkZXN0LDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ1ZmZlckxlbmd0aDxkZXN0Q2FwYWNpdHkpID8gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyTGVuZ3RoIDogZGVzdENhcGFjaXR5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSAKKworICAgIAorICAgICAgICByZXR1cm4gZGVzdExlbmd0aDsKKyAgICB9CisKKyAKKyAgICAKKyAgICAvKiBmb3J3YXJkIGl0ZXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgICAgLyoKKyAgICAgKiByZWFkIGZvcndhcmQgYW5kIGNoZWNrIGlmIHRoZSBjaGFyYWN0ZXIgaXMgYSBuZXh0LWl0ZXJhdGlvbiBib3VuZGFyeQorICAgICAqIGlmIGMyIT0wIHRoZW4gKGMsIGMyKSBpcyBhIHN1cnJvZ2F0ZSBwYWlyCisgICAgICovCisgICAgcHJpdmF0ZSBpbnRlcmZhY2UgSXNOZXh0Qm91bmRhcnl7CisgICAgICAgIGJvb2xlYW4gaXNOZXh0Qm91bmRhcnkoVUNoYXJhY3Rlckl0ZXJhdG9yIHNyYywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50Lyp1bnNpZ25lZCovIG1pbkMsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludC8qdW5zaWduZWQqLyBtYXNrLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRbXSBjaGFycyk7CisgICAgfSAgIAorICAgIC8qCisgICAgICogcmVhZCBmb3J3YXJkIGFuZCBnZXQgbm9ybTMyCisgICAgICogcmV0dXJuIDAgaWYgdGhlIGNoYXJhY3RlciBpcyA8bWluQworICAgICAqIGlmIGMyIT0wIHRoZW4gKGMyLCBjKSBpcyBhIHN1cnJvZ2F0ZSBwYWlyCisgICAgICogYWx3YXlzIHJlYWRzIGNvbXBsZXRlIGNoYXJhY3RlcnMKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBsb25nIC8qdW5zaWduZWQqLyBnZXROZXh0Tm9ybTMyKFVDaGFyYWN0ZXJJdGVyYXRvciBzcmMsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQvKnVuc2lnbmVkKi8gbWluQywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludC8qdW5zaWduZWQqLyBtYXNrLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50W10gY2hhcnMpIHsKKyAgICAgICAgbG9uZyBub3JtMzI7CisgICAgCisgICAgICAgIC8qIG5lZWQgc3JjLmhhc05leHQoKSB0byBiZSB0cnVlICovCisgICAgICAgIGNoYXJzWzBdPXNyYy5uZXh0KCk7CisgICAgICAgIGNoYXJzWzFdPTA7CisgICAgCisgICAgICAgIGlmKGNoYXJzWzBdPG1pbkMpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgCisgICAgICAgIG5vcm0zMj1Ob3JtYWxpemVySW1wbC5nZXROb3JtMzIoKGNoYXIpY2hhcnNbMF0pOworICAgICAgICBpZihVVEYxNi5pc0xlYWRTdXJyb2dhdGUoKGNoYXIpY2hhcnNbMF0pKSB7CisgICAgICAgICAgICBpZihzcmMuY3VycmVudCgpIT1VQ2hhcmFjdGVySXRlcmF0b3IuRE9ORSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgVVRGMTYuaXNUcmFpbFN1cnJvZ2F0ZSgoY2hhcikoY2hhcnNbMV09c3JjLmN1cnJlbnQoKSkpKXsKKyAgICAgICAgICAgICAgICBzcmMubW92ZUluZGV4KDEpOyAvKiBza2lwIHRoZSBjMiBzdXJyb2dhdGUgKi8KKyAgICAgICAgICAgICAgICBpZigobm9ybTMyJm1hc2spPT0wKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIGlycmVsZXZhbnQgZGF0YSAqLworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvKiBub3JtMzIgbXVzdCBiZSBhIHN1cnJvZ2F0ZSBzcGVjaWFsICovCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb3JtYWxpemVySW1wbC5nZXROb3JtMzJGcm9tU3Vycm9nYXRlUGFpcihub3JtMzIsKGNoYXIpY2hhcnNbMV0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLyogdW5tYXRjaGVkIHN1cnJvZ2F0ZSAqLworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBub3JtMzI7CisgICAgfQorCisKKyAgICAvKgorICAgICAqIGZvciBORipEOgorICAgICAqIHJlYWQgZm9yd2FyZCBhbmQgY2hlY2sgaWYgdGhlIGxlYWQgY29tYmluaW5nIGNsYXNzIGlzIDAKKyAgICAgKiBpZiBjMiE9MCB0aGVuIChjLCBjMikgaXMgYSBzdXJyb2dhdGUgcGFpcgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNsYXNzIElzTmV4dE5GRFNhZmUgaW1wbGVtZW50cyBJc05leHRCb3VuZGFyeXsKKyAgICAgICAgcHVibGljIGJvb2xlYW4gaXNOZXh0Qm91bmRhcnkoVUNoYXJhY3Rlckl0ZXJhdG9yIHNyYywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50Lyp1bnNpZ25lZCovIG1pbkMsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludC8qdW5zaWduZWQqLyBjY09yUUNNYXNrLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRbXSBjaGFycykgeworICAgICAgICAgICAgcmV0dXJuIE5vcm1hbGl6ZXJJbXBsLmlzTkZEU2FmZShnZXROZXh0Tm9ybTMyKHNyYyxtaW5DLGNjT3JRQ01hc2ssY2hhcnMpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2NPclFDTWFzaywgY2NPclFDTWFzayZOb3JtYWxpemVySW1wbC5RQ19NQVNLKTsKKyAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qCisgICAgICogZm9yIE5GKkM6CisgICAgICogcmVhZCBmb3J3YXJkIGFuZCBjaGVjayBpZiB0aGUgY2hhcmFjdGVyIGlzIChvciBpdHMgZGVjb21wb3NpdGlvbiBiZWdpbnMgCisgICAgICogd2l0aCkgYSAidHJ1ZSBzdGFydGVyIiAoY2M9PTAgYW5kIE5GKkNfWUVTKQorICAgICAqIGlmIGMyIT0wIHRoZW4gKGMsIGMyKSBpcyBhIHN1cnJvZ2F0ZSBwYWlyCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2xhc3MgSXNOZXh0VHJ1ZVN0YXJ0ZXIgaW1wbGVtZW50cyBJc05leHRCb3VuZGFyeXsKKyAgICAgICAgcHVibGljIGJvb2xlYW4gaXNOZXh0Qm91bmRhcnkoVUNoYXJhY3Rlckl0ZXJhdG9yIHNyYywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50Lyp1bnNpZ25lZCovIG1pbkMsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludC8qdW5zaWduZWQqLyBjY09yUUNNYXNrLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRbXSBjaGFycykgeworICAgICAgICAgICAgbG9uZyBub3JtMzI7CisgICAgICAgICAgICBpbnQvKnVuc2lnbmVkKi8gZGVjb21wUUNNYXNrOworICAgICAgICAgICAgCisgICAgICAgICAgICBkZWNvbXBRQ01hc2s9KGNjT3JRQ01hc2s8PDIpJjB4ZjsgLypkZWNvbXBvc2l0aW9uIHF1aWNrIGNoZWNrIG1hc2sqLworICAgICAgICAgICAgbm9ybTMyPWdldE5leHROb3JtMzIoc3JjLCBtaW5DLCBjY09yUUNNYXNrfGRlY29tcFFDTWFzaywgY2hhcnMpOworICAgICAgICAgICAgcmV0dXJuIE5vcm1hbGl6ZXJJbXBsLmlzVHJ1ZVN0YXJ0ZXIobm9ybTMyLCBjY09yUUNNYXNrLCBkZWNvbXBRQ01hc2spOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHByaXZhdGUgc3RhdGljIGludCBmaW5kTmV4dEl0ZXJhdGlvbkJvdW5kYXJ5KFVDaGFyYWN0ZXJJdGVyYXRvciBzcmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXNOZXh0Qm91bmRhcnkgb2JqLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQvKnVuc2lnbmVkKi8gbWluQywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50Lyp1bnNpZ25lZCovIG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcltdIGJ1ZmZlcikgeworICAgICAgICBpbnRbXSBjaGFycyA9IG5ldyBpbnRbMl07CisgICAgICAgIGludCBidWZmZXJJbmRleCA9MDsKKyAgICAgICAgCisgICAgICAgIGlmKHNyYy5jdXJyZW50KCk9PVVDaGFyYWN0ZXJJdGVyYXRvci5ET05FKXsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIC8qIGdldCBvbmUgY2hhcmFjdGVyIGFuZCBpZ25vcmUgaXRzIHByb3BlcnRpZXMgKi8KKyAgICAgICAgY2hhcnNbMF09c3JjLm5leHQoKTsKKyAgICAgICAgYnVmZmVyWzBdPShjaGFyKWNoYXJzWzBdOworICAgICAgICBidWZmZXJJbmRleD0xOworICAgICAgICAKKyAgICAgICAgaWYoVVRGMTYuaXNMZWFkU3Vycm9nYXRlKChjaGFyKWNoYXJzWzBdKSYmIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYy5jdXJyZW50KCkhPVVDaGFyYWN0ZXJJdGVyYXRvci5ET05FKXsKKyAgICAgICAgICAgIGlmKFVURjE2LmlzVHJhaWxTdXJyb2dhdGUoKGNoYXIpKGNoYXJzWzFdPXNyYy5uZXh0KCkpKSl7CisgICAgICAgICAgICAgICAgYnVmZmVyW2J1ZmZlckluZGV4KytdPShjaGFyKWNoYXJzWzFdOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzcmMubW92ZUluZGV4KC0xKTsgLyogYmFjayBvdXQgdGhlIG5vbi10cmFpbC1zdXJyb2dhdGUgKi8KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIAorICAgICAgICAvKiBnZXQgYWxsIGZvbGxvd2luZyBjaGFyYWN0ZXJzIHVudGlsIHdlIHNlZSBhIGJvdW5kYXJ5ICovCisgICAgICAgIC8qIGNoZWNraW5nIGhhc05leHQoKSBpbnN0ZWFkIG9mIGMhPURPTkUgb24gdGhlIG9mZi1jaGFuY2UgdGhhdCBVK2ZmZmYgCisgICAgICAgICAqIGlzIHBhcnQgb2YgdGhlIHN0cmluZyAqLworICAgICAgICB3aGlsZSggc3JjLmN1cnJlbnQoKSE9VUNoYXJhY3Rlckl0ZXJhdG9yLkRPTkUpIHsKKyAgICAgICAgICAgIGlmKG9iai5pc05leHRCb3VuZGFyeShzcmMsIG1pbkMsIG1hc2ssIGNoYXJzKSkgeworICAgICAgICAgICAgICAgIC8qIGJhY2sgb3V0IHRoZSBsYXRlc3QgbW92ZW1lbnQgdG8gc3RvcCBhdCB0aGUgYm91bmRhcnkgKi8KKyAgICAgICAgICAgICAgICBzcmMubW92ZUluZGV4KGNoYXJzWzFdPT0wID8gLTEgOiAtMik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmKGJ1ZmZlckluZGV4KyhjaGFyc1sxXT09MCA/IDEgOiAyKTw9YnVmZmVyLmxlbmd0aCkgeworICAgICAgICAgICAgICAgICAgICBidWZmZXJbYnVmZmVySW5kZXgrK109KGNoYXIpY2hhcnNbMF07CisgICAgICAgICAgICAgICAgICAgIGlmKGNoYXJzWzFdIT0wKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJbYnVmZmVySW5kZXgrK109KGNoYXIpY2hhcnNbMV07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9ZWxzZXsKKyAgICAgICAgICAgICAgICAgICAgY2hhcltdIG5ld0J1ZiA9IG5ldyBjaGFyW2J1ZmZlci5sZW5ndGggICAgKjJdOworICAgICAgICAgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KGJ1ZmZlciwwLG5ld0J1ZiwwLGJ1ZmZlckluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgYnVmZmVyID0gbmV3QnVmOworICAgICAgICAgICAgICAgICAgICBidWZmZXJbYnVmZmVySW5kZXgrK109KGNoYXIpY2hhcnNbMF07CisgICAgICAgICAgICAgICAgICAgIGlmKGNoYXJzWzFdIT0wKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJbYnVmZmVySW5kZXgrK109KGNoYXIpY2hhcnNbMV07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgLyogcmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIGJ1ZmZlciBjb250ZW50cyAqLworICAgICAgICByZXR1cm4gYnVmZmVySW5kZXg7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgc3RhdGljIGludCBuZXh0KFVDaGFyYWN0ZXJJdGVyYXRvciBzcmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyW10gZGVzdCwgaW50IGRlc3RTdGFydCwgaW50IGRlc3RMaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vcm1hbGl6ZXIuTW9kZSBtb2RlLCAvKmludCBvcHRpb25zLCovCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGRvTm9ybWFsaXplLCBib29sZWFuW10gcE5lZWRlZFRvTm9ybWFsaXplKXsKKyAgICAgICAgY2hhcltdIGJ1ZmZlcj1uZXcgY2hhclsxMDBdOworICAgICAgICBJc05leHRCb3VuZGFyeSBpc05leHRCb3VuZGFyeTsKKyAgICAgICAgaW50IC8qdW5zaWduZWQqLyBtYXNrOworICAgICAgICBpbnQgLyp1bnNpZ25lZCovIGJ1ZmZlckxlbmd0aDsKKyAgICAgICAgaW50IGMsYzI7CisgICAgICAgIGNoYXIgbWluQzsKKyAgICAgICAgaW50IGRlc3RDYXBhY2l0eSA9IGRlc3RMaW1pdCAtIGRlc3RTdGFydDsKKyAgICAgICAgaW50IGRlc3RMZW5ndGggPSAwOworICAgICAgICBpbnRbXSBzdGFydEluZGV4ID0gbmV3IGludFsxXTsKKyAgICAgICAgaWYocE5lZWRlZFRvTm9ybWFsaXplIT1udWxsKSB7CisgICAgICAgICAgICBwTmVlZGVkVG9Ob3JtYWxpemVbMF09ZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBtaW5DID0gKGNoYXIpbW9kZS5nZXRNaW5DKCk7CisgICAgICAgIG1hc2sgPSBtb2RlLmdldE1hc2soKTsKKyAgICAgICAgaXNOZXh0Qm91bmRhcnkgPSBtb2RlLmdldE5leHRCb3VuZGFyeSgpOworICAgICAgICAKKyAgICAgICAgaWYoaXNOZXh0Qm91bmRhcnk9PW51bGwpeworICAgICAgICAgICAgZGVzdExlbmd0aD0wOworICAgICAgICAgICAgYz1zcmMubmV4dCgpOworICAgICAgICAgICAgaWYoYyE9VUNoYXJhY3Rlckl0ZXJhdG9yLkRPTkUpIHsKKyAgICAgICAgICAgICAgICBkZXN0TGVuZ3RoPTE7CisgICAgICAgICAgICAgICAgaWYoVVRGMTYuaXNMZWFkU3Vycm9nYXRlKChjaGFyKWMpKXsKKyAgICAgICAgICAgICAgICAgICAgYzI9IHNyYy5uZXh0KCk7CisgICAgICAgICAgICAgICAgICAgIGlmKGMyIT0gVUNoYXJhY3Rlckl0ZXJhdG9yLkRPTkUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKFVURjE2LmlzVHJhaWxTdXJyb2dhdGUoKGNoYXIpYzIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoZGVzdENhcGFjaXR5Pj0yKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RbMV09KGNoYXIpYzI7IC8vIHRyYWlsIHN1cnJvZ2F0ZSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdExlbmd0aD0yOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsZWFkIHN1cnJvZ2F0ZSB0byBiZSB3cml0dGVuIGJlbG93IAorICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMubW92ZUluZGV4KC0xKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgICAgICBpZihkZXN0Q2FwYWNpdHk+MCkgeworICAgICAgICAgICAgICAgICAgICBkZXN0WzBdPShjaGFyKWM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGRlc3RMZW5ndGg7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGJ1ZmZlckxlbmd0aD1maW5kTmV4dEl0ZXJhdGlvbkJvdW5kYXJ5KHNyYyxpc05leHRCb3VuZGFyeSwgbWluQywgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyKTsKKyAgICAgICAgaWYoYnVmZmVyTGVuZ3RoPjApIHsKKyAgICAgICAgICAgIGlmKGRvTm9ybWFsaXplKSB7CisgICAgICAgICAgICAgICAgZGVzdExlbmd0aD1tb2RlLm5vcm1hbGl6ZShidWZmZXIsc3RhcnRJbmRleFswXSxidWZmZXJMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0LGRlc3RTdGFydCxkZXN0TGltaXQpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmKHBOZWVkZWRUb05vcm1hbGl6ZSE9bnVsbCkgeworICAgICAgICAgICAgICAgICAgICBwTmVlZGVkVG9Ob3JtYWxpemVbMF09KGJvb2xlYW4pKGRlc3RMZW5ndGghPWJ1ZmZlckxlbmd0aCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVdGlsaXR5LmFycmF5UmVnaW9uTWF0Y2hlcyhidWZmZXIsc3RhcnRJbmRleFswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCxkZXN0U3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RMZW5ndGgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8qIGp1c3QgY29weSB0aGUgc291cmNlIGNoYXJhY3RlcnMgKi8KKyAgICAgICAgICAgICAgICBpZihkZXN0Q2FwYWNpdHk+MCkgeworICAgICAgICAgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KGJ1ZmZlciwwLGRlc3QsZGVzdFN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGgubWluKGJ1ZmZlckxlbmd0aCxkZXN0Q2FwYWNpdHkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGRlc3RMZW5ndGg7CisgICAgfSAKKworICAgIHByaXZhdGUgdm9pZCBjbGVhckJ1ZmZlcigpIHsKKyAgICAgICAgYnVmZmVyTGltaXQ9YnVmZmVyU3RhcnQ9YnVmZmVyUG9zPTA7CisgICAgfQorCQorICAgIHByaXZhdGUgYm9vbGVhbiBuZXh0Tm9ybWFsaXplKCkgeworICAgICAgICAKKwkJY2xlYXJCdWZmZXIoKTsKKwkJY3VycmVudEluZGV4PW5leHRJbmRleDsKKwkJdGV4dC5zZXRJbmRleChuZXh0SW5kZXgpOworCSAgICAgICAgCisJCWJ1ZmZlckxpbWl0PW5leHQodGV4dCxidWZmZXIsYnVmZmVyU3RhcnQsYnVmZmVyLmxlbmd0aCxtb2RlLHRydWUsbnVsbCk7CisJICAgICAgICAgICAgICAgIAorCQluZXh0SW5kZXg9dGV4dC5nZXRJbmRleCgpOworCQlyZXR1cm4gKGJ1ZmZlckxpbWl0PjApOworICAgIH0KKwkKKyAgICBwcml2YXRlIGJvb2xlYW4JcHJldmlvdXNOb3JtYWxpemUoKSB7CisKKwkJY2xlYXJCdWZmZXIoKTsKKwkJbmV4dEluZGV4PWN1cnJlbnRJbmRleDsKKwkJdGV4dC5zZXRJbmRleChjdXJyZW50SW5kZXgpOworCQlidWZmZXJMaW1pdD1wcmV2aW91cyh0ZXh0LGJ1ZmZlcixidWZmZXJTdGFydCxidWZmZXIubGVuZ3RoLG1vZGUsdHJ1ZSxudWxsKTsKKwkJCisJCWN1cnJlbnRJbmRleD10ZXh0LmdldEluZGV4KCk7CisJICAgIGJ1ZmZlclBvcyA9IGJ1ZmZlckxpbWl0OworCQlyZXR1cm4gYnVmZmVyTGltaXQ+MDsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBpbnQgZ2V0Q29kZVBvaW50QXQoaW50IGluZGV4KXsKKyAgICAgICAgaWYoIFVURjE2LmlzU3Vycm9nYXRlKGJ1ZmZlcltpbmRleF0pKXsKKyAgICAgICAgICAgIGlmKFVURjE2LmlzTGVhZFN1cnJvZ2F0ZShidWZmZXJbaW5kZXhdKSl7CisgICAgICAgICAgICAgICAgaWYoKGluZGV4KzEpPGJ1ZmZlckxpbWl0ICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVVEYxNi5pc1RyYWlsU3Vycm9nYXRlKGJ1ZmZlcltpbmRleCsxXSkpeworCQkgICAgICAgICAgICAgICByZXR1cm4gVUNoYXJhY3RlclByb3BlcnR5LmdldFJhd1N1cHBsZW1lbnRhcnkoCisJCQkJICAgICAgICAJICAgICAgICAgIGJ1ZmZlcltpbmRleF0sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJbaW5kZXgrMV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH1lbHNlIGlmKFVURjE2LmlzVHJhaWxTdXJyb2dhdGUoYnVmZmVyW2luZGV4XSkpeworICAgICAgICAgICAgICAgIGlmKGluZGV4PjAgJiYgVVRGMTYuaXNMZWFkU3Vycm9nYXRlKGJ1ZmZlcltpbmRleC0xXSkpeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gVUNoYXJhY3RlclByb3BlcnR5LmdldFJhd1N1cHBsZW1lbnRhcnkoCisJCQkJCQkJCSAgICAgYnVmZmVyW2luZGV4LTFdLAorCQkJCQkJCQkgICAgIGJ1ZmZlcltpbmRleF0KKwkJCQkJCQkJICApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gICAKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYnVmZmVyW2luZGV4XTsKKyAgICAgICAgCisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEludGVybmFsIEFQSQorICAgICAqIEBpbnRlcm5hbAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc05GU2tpcHBhYmxlKGludCBjLCBNb2RlIG1vZGUpeworICAgICAgICByZXR1cm4gbW9kZS5pc05GU2tpcHBhYmxlKGMpOworICAgIH0gICAgICAgICAgICAgIAorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3RleHQvTnVsbFRyYW5zbGl0ZXJhdG9yLmphdmEgYi9zcmMvY29tL2libS9pY3UvdGV4dC9OdWxsVHJhbnNsaXRlcmF0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4yMzZmMTY1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvTnVsbFRyYW5zbGl0ZXJhdG9yLmphdmEKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L3RleHQvTnVsbFRyYW5zbGl0ZXJhdG9yLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMTIvMDMgMTg6NTc6MzYgJCAKKyAqICRSZXZpc2lvbjogMS4xMSAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UudGV4dDsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworLyoqCisgKiBBIHRyYW5zbGl0ZXJhdG9yIHRoYXQgbGVhdmVzIHRleHQgdW5jaGFuZ2VkLgorICogQGRlcHJlY2F0ZWQgSUNVIDIuNCBUaGlzIGNsYXNzIHRvIGJlY29tZSBwcml2YXRlIGFmdGVyIDIwMDMtMTItMDEuIFVzZSB0aGUgVHJhbnNsaXRlcmF0b3IgZmFjdG9yeSBtZXRob2RzLgorICovCitwdWJsaWMgY2xhc3MgTnVsbFRyYW5zbGl0ZXJhdG9yIGV4dGVuZHMgVHJhbnNsaXRlcmF0b3IgeworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAiXHUwMEE5IElCTSBDb3Jwb3JhdGlvbiAyMDAwLiBBbGwgcmlnaHRzIHJlc2VydmVkLiI7CisKKyAgICAvKioKKyAgICAgKiBQYWNrYWdlIGFjY2Vzc2libGUgSURzIGZvciB0aGlzIHRyYW5zbGl0ZXJhdG9yLgorICAgICAqLworICAgIHN0YXRpYyBTdHJpbmcgU0hPUlRfSUQgPSAiTnVsbCI7CisgICAgc3RhdGljIFN0cmluZyBfSUQgICAgICA9ICJBbnktTnVsbCI7CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgdHJhbnNsaXRlcmF0b3IuCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNCBUaGlzIGNsYXNzIHRvIGJlY29tZSBwcml2YXRlIGFmdGVyIDIwMDMtMTItMDEuIFVzZSB0aGUgVHJhbnNsaXRlcmF0b3IgZmFjdG9yeSBtZXRob2RzLgorICAgICAqLworICAgIHB1YmxpYyBOdWxsVHJhbnNsaXRlcmF0b3IoKSB7CisgICAgICAgIHN1cGVyKF9JRCwgbnVsbCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogSW1wbGVtZW50cyB7QGxpbmsgVHJhbnNsaXRlcmF0b3IjaGFuZGxlVHJhbnNsaXRlcmF0ZX0uCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNCBUaGlzIGNsYXNzIHRvIGJlY29tZSBwcml2YXRlIGFmdGVyIDIwMDMtMTItMDEuIFVzZSB0aGUgVHJhbnNsaXRlcmF0b3IgZmFjdG9yeSBtZXRob2RzLgorICAgICAqLworICAgIHByb3RlY3RlZCB2b2lkIGhhbmRsZVRyYW5zbGl0ZXJhdGUoUmVwbGFjZWFibGUgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uIG9mZnNldHMsIGJvb2xlYW4gaW5jcmVtZW50YWwpIHsKKyAgICAgICAgb2Zmc2V0cy5zdGFydCA9IG9mZnNldHMubGltaXQ7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3RleHQvTnVtYmVyRm9ybWF0LmphdmEgYi9zcmMvY29tL2libS9pY3UvdGV4dC9OdW1iZXJGb3JtYXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5iNjJjOWUyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvTnVtYmVyRm9ybWF0LmphdmEKQEAgLTAsMCArMSwxMTM1IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvdGV4dC9OdW1iZXJGb3JtYXQuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8xMi8xMSAyMzozNjo1OCAkIAorICogJFJldmlzaW9uOiAxLjIyICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS50ZXh0OworCitpbXBvcnQgamF2YS5pby5JbnZhbGlkT2JqZWN0RXhjZXB0aW9uOyAvL0J1ZyA0MTg1NzYxIFtSaWNoYXJkL0dDTF0KK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uT2JqZWN0SW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5PYmplY3RPdXRwdXRTdHJlYW07CitpbXBvcnQgamF2YS5tYXRoLkJpZ0ludGVnZXI7CitpbXBvcnQgamF2YS50ZXh0LkZpZWxkUG9zaXRpb247CitpbXBvcnQgamF2YS50ZXh0LkZvcm1hdDsKK2ltcG9ydCBqYXZhLnRleHQuUGFyc2VFeGNlcHRpb247CitpbXBvcnQgamF2YS50ZXh0LlBhcnNlUG9zaXRpb247CitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOworaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKK2ltcG9ydCBqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGU7CitpbXBvcnQgamF2YS51dGlsLlNldDsKKworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuSUNVTG9jYWxlRGF0YTsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLklDVVNlcnZpY2U7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5JQ1VTZXJ2aWNlLkZhY3Rvcnk7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5JQ1VMb2NhbGVTZXJ2aWNlOworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuSUNVTG9jYWxlU2VydmljZS5JQ1VSZXNvdXJjZUJ1bmRsZUZhY3Rvcnk7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5JQ1VMb2NhbGVTZXJ2aWNlLkxvY2FsZUtleUZhY3Rvcnk7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5Mb2NhbGVVdGlsaXR5OworCisvKioKKyAqIDxjb2RlPk51bWJlckZvcm1hdDwvY29kZT4gaXMgdGhlIGFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGFsbCBudW1iZXIKKyAqIGZvcm1hdHMuIFRoaXMgY2xhc3MgcHJvdmlkZXMgdGhlIGludGVyZmFjZSBmb3IgZm9ybWF0dGluZyBhbmQgcGFyc2luZworICogbnVtYmVycy4gPGNvZGU+TnVtYmVyRm9ybWF0PC9jb2RlPiBhbHNvIHByb3ZpZGVzIG1ldGhvZHMgZm9yIGRldGVybWluaW5nCisgKiB3aGljaCBsb2NhbGVzIGhhdmUgbnVtYmVyIGZvcm1hdHMsIGFuZCB3aGF0IHRoZWlyIG5hbWVzIGFyZS4KKyAqCisgKiA8cD48c3Ryb25nPlRoaXMgaXMgYW4gZW5oYW5jZWQgdmVyc2lvbiBvZiA8Y29kZT5OdW1iZXJGb3JtYXQ8L2NvZGU+IHRoYXQKKyAqIGlzIGJhc2VkIG9uIHRoZSBzdGFuZGFyZCB2ZXJzaW9uIGluIHRoZSBKREsuICBOZXcgb3IgY2hhbmdlZCBmdW5jdGlvbmFsaXR5CisgKiBpcyBsYWJlbGVkCisgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+IG9yCisgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5DSEFOR0VEPC9mb250Pjwvc3Ryb25nPi48L3N0cm9uZz4KKyAqCisgKiA8cD4KKyAqIDxjb2RlPk51bWJlckZvcm1hdDwvY29kZT4gaGVscHMgeW91IHRvIGZvcm1hdCBhbmQgcGFyc2UgbnVtYmVycyBmb3IgYW55IGxvY2FsZS4KKyAqIFlvdXIgY29kZSBjYW4gYmUgY29tcGxldGVseSBpbmRlcGVuZGVudCBvZiB0aGUgbG9jYWxlIGNvbnZlbnRpb25zIGZvcgorICogZGVjaW1hbCBwb2ludHMsIHRob3VzYW5kcy1zZXBhcmF0b3JzLCBvciBldmVuIHRoZSBwYXJ0aWN1bGFyIGRlY2ltYWwKKyAqIGRpZ2l0cyB1c2VkLCBvciB3aGV0aGVyIHRoZSBudW1iZXIgZm9ybWF0IGlzIGV2ZW4gZGVjaW1hbC4KKyAqCisgKiA8cD4KKyAqIFRvIGZvcm1hdCBhIG51bWJlciBmb3IgdGhlIGN1cnJlbnQgTG9jYWxlLCB1c2Ugb25lIG9mIHRoZSBmYWN0b3J5CisgKiBjbGFzcyBtZXRob2RzOgorICogPGJsb2NrcXVvdGU+CisgKiA8cHJlPgorICogIG15U3RyaW5nID0gTnVtYmVyRm9ybWF0LmdldEluc3RhbmNlKCkuZm9ybWF0KG15TnVtYmVyKTsKKyAqIDwvcHJlPgorICogPC9ibG9ja3F1b3RlPgorICogSWYgeW91IGFyZSBmb3JtYXR0aW5nIG11bHRpcGxlIG51bWJlcnMsIGl0IGlzCisgKiBtb3JlIGVmZmljaWVudCB0byBnZXQgdGhlIGZvcm1hdCBhbmQgdXNlIGl0IG11bHRpcGxlIHRpbWVzIHNvIHRoYXQKKyAqIHRoZSBzeXN0ZW0gZG9lc24ndCBoYXZlIHRvIGZldGNoIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbG9jYWwKKyAqIGxhbmd1YWdlIGFuZCBjb3VudHJ5IGNvbnZlbnRpb25zIG11bHRpcGxlIHRpbWVzLgorICogPGJsb2NrcXVvdGU+CisgKiA8cHJlPgorICogTnVtYmVyRm9ybWF0IG5mID0gTnVtYmVyRm9ybWF0LmdldEluc3RhbmNlKCk7CisgKiBmb3IgKGludCBpID0gMDsgaSA8IGEubGVuZ3RoOyArK2kpIHsKKyAqICAgICBvdXRwdXQucHJpbnRsbihuZi5mb3JtYXQobXlOdW1iZXJbaV0pICsgIjsgIik7CisgKiB9CisgKiA8L3ByZT4KKyAqIDwvYmxvY2txdW90ZT4KKyAqIFRvIGZvcm1hdCBhIG51bWJlciBmb3IgYSBkaWZmZXJlbnQgTG9jYWxlLCBzcGVjaWZ5IGl0IGluIHRoZQorICogY2FsbCB0byA8Y29kZT5nZXRJbnN0YW5jZTwvY29kZT4uCisgKiA8YmxvY2txdW90ZT4KKyAqIDxwcmU+CisgKiBOdW1iZXJGb3JtYXQgbmYgPSBOdW1iZXJGb3JtYXQuZ2V0SW5zdGFuY2UoTG9jYWxlLkZSRU5DSCk7CisgKiA8L3ByZT4KKyAqIDwvYmxvY2txdW90ZT4KKyAqIFlvdSBjYW4gYWxzbyB1c2UgYSA8Y29kZT5OdW1iZXJGb3JtYXQ8L2NvZGU+IHRvIHBhcnNlIG51bWJlcnM6CisgKiA8YmxvY2txdW90ZT4KKyAqIDxwcmU+CisgKiBteU51bWJlciA9IG5mLnBhcnNlKG15U3RyaW5nKTsKKyAqIDwvcHJlPgorICogPC9ibG9ja3F1b3RlPgorICogVXNlIDxjb2RlPmdldEluc3RhbmNlPC9jb2RlPiBvciA8Y29kZT5nZXROdW1iZXJJbnN0YW5jZTwvY29kZT4gdG8gZ2V0IHRoZQorICogbm9ybWFsIG51bWJlciBmb3JtYXQuIFVzZSA8Y29kZT5nZXRJbnRlZ2VySW5zdGFuY2U8L2NvZGU+IHRvIGdldCBhbgorICogaW50ZWdlciBudW1iZXIgZm9ybWF0LiBVc2UgPGNvZGU+Z2V0Q3VycmVuY3lJbnN0YW5jZTwvY29kZT4gdG8gZ2V0IHRoZQorICogY3VycmVuY3kgbnVtYmVyIGZvcm1hdC4gQW5kIHVzZSA8Y29kZT5nZXRQZXJjZW50SW5zdGFuY2U8L2NvZGU+IHRvIGdldCBhCisgKiBmb3JtYXQgZm9yIGRpc3BsYXlpbmcgcGVyY2VudGFnZXMuIFdpdGggdGhpcyBmb3JtYXQsIGEgZnJhY3Rpb24gbGlrZQorICogMC41MyBpcyBkaXNwbGF5ZWQgYXMgNTMlLgorICoKKyAqIDxwPgorICogWW91IGNhbiBhbHNvIGNvbnRyb2wgdGhlIGRpc3BsYXkgb2YgbnVtYmVycyB3aXRoIHN1Y2ggbWV0aG9kcyBhcworICogPGNvZGU+c2V0TWluaW11bUZyYWN0aW9uRGlnaXRzPC9jb2RlPi4KKyAqIElmIHlvdSB3YW50IGV2ZW4gbW9yZSBjb250cm9sIG92ZXIgdGhlIGZvcm1hdCBvciBwYXJzaW5nLAorICogb3Igd2FudCB0byBnaXZlIHlvdXIgdXNlcnMgbW9yZSBjb250cm9sLAorICogeW91IGNhbiB0cnkgY2FzdGluZyB0aGUgPGNvZGU+TnVtYmVyRm9ybWF0PC9jb2RlPiB5b3UgZ2V0IGZyb20gdGhlIGZhY3RvcnkgbWV0aG9kcworICogdG8gYSA8Y29kZT5EZWNpbWFsRm9ybWF0PC9jb2RlPi4gVGhpcyB3aWxsIHdvcmsgZm9yIHRoZSB2YXN0IG1ham9yaXR5CisgKiBvZiBsb2NhbGVzOyBqdXN0IHJlbWVtYmVyIHRvIHB1dCBpdCBpbiBhIDxjb2RlPnRyeTwvY29kZT4gYmxvY2sgaW4gY2FzZSB5b3UKKyAqIGVuY291bnRlciBhbiB1bnVzdWFsIG9uZS4KKyAqCisgKiA8cD4KKyAqIE51bWJlckZvcm1hdCBhbmQgRGVjaW1hbEZvcm1hdCBhcmUgZGVzaWduZWQgc3VjaCB0aGF0IHNvbWUgY29udHJvbHMKKyAqIHdvcmsgZm9yIGZvcm1hdHRpbmcgYW5kIG90aGVycyB3b3JrIGZvciBwYXJzaW5nLiAgVGhlIGZvbGxvd2luZyBpcworICogdGhlIGRldGFpbGVkIGRlc2NyaXB0aW9uIGZvciBlYWNoIHRoZXNlIGNvbnRyb2wgbWV0aG9kcywKKyAqIDxwPgorICogc2V0UGFyc2VJbnRlZ2VyT25seSA6IG9ubHkgYWZmZWN0cyBwYXJzaW5nLCBlLmcuCisgKiBpZiB0cnVlLCAgIjM0NTYuNzgiIC0+IDM0NTYgKGFuZCBsZWF2ZXMgdGhlIHBhcnNlIHBvc2l0aW9uIGp1c3QgYWZ0ZXIgaW5kZXggNikKKyAqIGlmIGZhbHNlLCAiMzQ1Ni43OCIgLT4gMzQ1Ni43OCAoYW5kIGxlYXZlcyB0aGUgcGFyc2UgcG9zaXRpb24ganVzdCBhZnRlciBpbmRleCA4KQorICogVGhpcyBpcyBpbmRlcGVuZGVudCBvZiBmb3JtYXR0aW5nLiAgSWYgeW91IHdhbnQgdG8gbm90IHNob3cgYSBkZWNpbWFsIHBvaW50CisgKiB3aGVyZSB0aGVyZSBtaWdodCBiZSBubyBkaWdpdHMgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQsIHVzZQorICogc2V0RGVjaW1hbFNlcGFyYXRvckFsd2F5c1Nob3duLgorICogPHA+CisgKiBzZXREZWNpbWFsU2VwYXJhdG9yQWx3YXlzU2hvd24gOiBvbmx5IGFmZmVjdHMgZm9ybWF0dGluZywgYW5kIG9ubHkgd2hlcmUKKyAqIHRoZXJlIG1pZ2h0IGJlIG5vIGRpZ2l0cyBhZnRlciB0aGUgZGVjaW1hbCBwb2ludCwgc3VjaCBhcyB3aXRoIGEgcGF0dGVybgorICogbGlrZSAiIywjIzAuIyMiLCBlLmcuLAorICogaWYgdHJ1ZSwgIDM0NTYuMDAgLT4gIjMsNDU2LiIKKyAqIGlmIGZhbHNlLCAzNDU2LjAwIC0+ICIzNDU2IgorICogVGhpcyBpcyBpbmRlcGVuZGVudCBvZiBwYXJzaW5nLiAgSWYgeW91IHdhbnQgcGFyc2luZyB0byBzdG9wIGF0IHRoZSBkZWNpbWFsCisgKiBwb2ludCwgdXNlIHNldFBhcnNlSW50ZWdlck9ubHkuCisgKgorICogPHA+CisgKiBZb3UgY2FuIGFsc28gdXNlIGZvcm1zIG9mIHRoZSA8Y29kZT5wYXJzZTwvY29kZT4gYW5kIDxjb2RlPmZvcm1hdDwvY29kZT4KKyAqIG1ldGhvZHMgd2l0aCA8Y29kZT5QYXJzZVBvc2l0aW9uPC9jb2RlPiBhbmQgPGNvZGU+RmllbGRQb3NpdGlvbjwvY29kZT4gdG8KKyAqIGFsbG93IHlvdSB0bzoKKyAqIDx1bD4KKyAqIDxsaT4gcHJvZ3Jlc3NpdmVseSBwYXJzZSB0aHJvdWdoIHBpZWNlcyBvZiBhIHN0cmluZworICogPGxpPiBhbGlnbiB0aGUgZGVjaW1hbCBwb2ludCBhbmQgb3RoZXIgYXJlYXMKKyAqIDwvdWw+CisgKiBGb3IgZXhhbXBsZSwgeW91IGNhbiBhbGlnbiBudW1iZXJzIGluIHR3byB3YXlzOgorICogPG9sPgorICogPGxpPiBJZiB5b3UgYXJlIHVzaW5nIGEgbW9ub3NwYWNlZCBmb250IHdpdGggc3BhY2luZyBmb3IgYWxpZ25tZW50LAorICogICAgICB5b3UgY2FuIHBhc3MgdGhlIDxjb2RlPkZpZWxkUG9zaXRpb248L2NvZGU+IGluIHlvdXIgZm9ybWF0IGNhbGwsIHdpdGgKKyAqICAgICAgPGNvZGU+ZmllbGQ8L2NvZGU+ID0gPGNvZGU+SU5URUdFUl9GSUVMRDwvY29kZT4uIE9uIG91dHB1dCwKKyAqICAgICAgPGNvZGU+Z2V0RW5kSW5kZXg8L2NvZGU+IHdpbGwgYmUgc2V0IHRvIHRoZSBvZmZzZXQgYmV0d2VlbiB0aGUKKyAqICAgICAgbGFzdCBjaGFyYWN0ZXIgb2YgdGhlIGludGVnZXIgYW5kIHRoZSBkZWNpbWFsLiBBZGQKKyAqICAgICAgKGRlc2lyZWRTcGFjZUNvdW50IC0gZ2V0RW5kSW5kZXgpIHNwYWNlcyBhdCB0aGUgZnJvbnQgb2YgdGhlIHN0cmluZy4KKyAqCisgKiA8bGk+IElmIHlvdSBhcmUgdXNpbmcgcHJvcG9ydGlvbmFsIGZvbnRzLAorICogICAgICBpbnN0ZWFkIG9mIHBhZGRpbmcgd2l0aCBzcGFjZXMsIG1lYXN1cmUgdGhlIHdpZHRoCisgKiAgICAgIG9mIHRoZSBzdHJpbmcgaW4gcGl4ZWxzIGZyb20gdGhlIHN0YXJ0IHRvIDxjb2RlPmdldEVuZEluZGV4PC9jb2RlPi4KKyAqICAgICAgVGhlbiBtb3ZlIHRoZSBwZW4gYnkKKyAqICAgICAgKGRlc2lyZWRQaXhlbFdpZHRoIC0gd2lkdGhUb0FsaWdubWVudFBvaW50KSBiZWZvcmUgZHJhd2luZyB0aGUgdGV4dC4KKyAqICAgICAgSXQgYWxzbyB3b3JrcyB3aGVyZSB0aGVyZSBpcyBubyBkZWNpbWFsLCBidXQgcG9zc2libHkgYWRkaXRpb25hbAorICogICAgICBjaGFyYWN0ZXJzIGF0IHRoZSBlbmQsIGUuZy4sIHdpdGggcGFyZW50aGVzZXMgaW4gbmVnYXRpdmUKKyAqICAgICAgbnVtYmVyczogIigxMikiIGZvciAtMTIuCisgKiA8L29sPgorICoKKyAqIDxoND5TeW5jaHJvbml6YXRpb248L2g0PgorICogPHA+CisgKiBOdW1iZXIgZm9ybWF0cyBhcmUgZ2VuZXJhbGx5IG5vdCBzeW5jaHJvbml6ZWQuIEl0IGlzIHJlY29tbWVuZGVkIHRvIGNyZWF0ZSAKKyAqIHNlcGFyYXRlIGZvcm1hdCBpbnN0YW5jZXMgZm9yIGVhY2ggdGhyZWFkLiBJZiBtdWx0aXBsZSB0aHJlYWRzIGFjY2VzcyBhIGZvcm1hdAorICogY29uY3VycmVudGx5LCBpdCBtdXN0IGJlIHN5bmNocm9uaXplZCBleHRlcm5hbGx5LiAKKyAqIDxwPgorICoKKyAqIHNlZSAgICAgICAgICBEZWNpbWFsRm9ybWF0CisgKiBzZWUgICAgICAgICAgamF2YS50ZXh0LkNob2ljZUZvcm1hdAorICogQGF1dGhvciAgICAgICBNYXJrIERhdmlzCisgKiBAYXV0aG9yICAgICAgIEhlbGVuYSBTaGloCisgKiBAYXV0aG9yICAgICAgIEFsYW4gTGl1CisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworcHVibGljIGFic3RyYWN0IGNsYXNzIE51bWJlckZvcm1hdCBleHRlbmRzIEZvcm1hdHsKKworICAgIC8vIENvbnN0YW50cyB1c2VkIGJ5IGZhY3RvcnkgbWV0aG9kcyB0byBzcGVjaWZ5IGEgc3R5bGUgb2YgZm9ybWF0LgorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBOVU1CRVJTVFlMRSA9IDA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENVUlJFTkNZU1RZTEUgPSAxOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBQRVJDRU5UU1RZTEUgPSAyOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTQ0lFTlRJRklDU1RZTEUgPSAzOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBJTlRFR0VSU1RZTEUgPSA0OworCisgICAgLyoqCisgICAgICogRmllbGQgY29uc3RhbnQgdXNlZCB0byBjb25zdHJ1Y3QgYSBGaWVsZFBvc2l0aW9uIG9iamVjdC4gU2lnbmlmaWVzIHRoYXQKKyAgICAgKiB0aGUgcG9zaXRpb24gb2YgdGhlIGludGVnZXIgcGFydCBvZiBhIGZvcm1hdHRlZCBudW1iZXIgc2hvdWxkIGJlIHJldHVybmVkLgorICAgICAqIEBzZWUgamF2YS50ZXh0LkZpZWxkUG9zaXRpb24KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBJTlRFR0VSX0ZJRUxEID0gMDsKKworICAgIC8qKgorICAgICAqIEZpZWxkIGNvbnN0YW50IHVzZWQgdG8gY29uc3RydWN0IGEgRmllbGRQb3NpdGlvbiBvYmplY3QuIFNpZ25pZmllcyB0aGF0CisgICAgICogdGhlIHBvc2l0aW9uIG9mIHRoZSBmcmFjdGlvbiBwYXJ0IG9mIGEgZm9ybWF0dGVkIG51bWJlciBzaG91bGQgYmUgcmV0dXJuZWQuCisgICAgICogQHNlZSBqYXZhLnRleHQuRmllbGRQb3NpdGlvbgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZSQUNUSU9OX0ZJRUxEID0gMTsKKworICAgIC8qKgorICAgICAqIDxzdHJvbmc+PGZvbnQgZmFjZT1oZWx2ZXRpY2EgY29sb3I9cmVkPkNIQU5HRUQ8L2ZvbnQ+PC9zdHJvbmc+CisgICAgICogRm9ybWF0IGFuIG9iamVjdC4gIENoYW5nZTogcmVjb2duaXplcyA8Y29kZT5CaWdJbnRlZ2VyPC9jb2RlPgorICAgICAqIGFuZCA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBvYmplY3RzIG5vdy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgU3RyaW5nQnVmZmVyIGZvcm1hdChPYmplY3QgbnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ0J1ZmZlciB0b0FwcGVuZFRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkUG9zaXRpb24gcG9zKQorICAgIHsKKyAgICAgICAgaWYgKG51bWJlciBpbnN0YW5jZW9mIExvbmcpIHsKKyAgICAgICAgICAgIHJldHVybiBmb3JtYXQoKChMb25nKW51bWJlcikubG9uZ1ZhbHVlKCksIHRvQXBwZW5kVG8sIHBvcyk7CisgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyIGluc3RhbmNlb2YgQmlnSW50ZWdlcikgeworICAgICAgICAgICAgcmV0dXJuIGZvcm1hdCgoQmlnSW50ZWdlcikgbnVtYmVyLCB0b0FwcGVuZFRvLCBwb3MpOworICAgICAgICB9IGVsc2UgaWYgKG51bWJlciBpbnN0YW5jZW9mIGphdmEubWF0aC5CaWdEZWNpbWFsKSB7CisgICAgICAgICAgICByZXR1cm4gZm9ybWF0KChqYXZhLm1hdGguQmlnRGVjaW1hbCkgbnVtYmVyLCB0b0FwcGVuZFRvLCBwb3MpOworICAgICAgICB9IGVsc2UgaWYgKG51bWJlciBpbnN0YW5jZW9mIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCkgeworICAgICAgICAgICAgcmV0dXJuIGZvcm1hdCgoY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKSBudW1iZXIsIHRvQXBwZW5kVG8sIHBvcyk7CisgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyIGluc3RhbmNlb2YgTnVtYmVyKSB7CisgICAgICAgICAgICByZXR1cm4gZm9ybWF0KCgoTnVtYmVyKW51bWJlcikuZG91YmxlVmFsdWUoKSwgdG9BcHBlbmRUbywgcG9zKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkNhbm5vdCBmb3JtYXQgZ2l2ZW4gT2JqZWN0IGFzIGEgTnVtYmVyIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgT2JqZWN0IHBhcnNlT2JqZWN0KFN0cmluZyBzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJzZVBvc2l0aW9uIHBhcnNlUG9zaXRpb24pCisgICAgeworICAgICAgICByZXR1cm4gcGFyc2Uoc291cmNlLCBwYXJzZVBvc2l0aW9uKTsKKyAgICB9CisKKyAgIC8qKgorICAgICAqIFNwZWNpYWxpemF0aW9uIG9mIGZvcm1hdC4KKyAgICAgKiBAc2VlIGphdmEudGV4dC5Gb3JtYXQjZm9ybWF0KE9iamVjdCkKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgU3RyaW5nIGZvcm1hdCAoZG91YmxlIG51bWJlcikgeworICAgICAgICByZXR1cm4gZm9ybWF0KG51bWJlcixuZXcgU3RyaW5nQnVmZmVyKCksCisgICAgICAgICAgICAgICAgICAgICAgbmV3IEZpZWxkUG9zaXRpb24oMCkpLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAvKioKKyAgICAgKiBTcGVjaWFsaXphdGlvbiBvZiBmb3JtYXQuCisgICAgICogQHNlZSBqYXZhLnRleHQuRm9ybWF0I2Zvcm1hdChPYmplY3QpCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGZpbmFsIFN0cmluZyBmb3JtYXQgKGxvbmcgbnVtYmVyKSB7CisgICAgICAgIHJldHVybiBmb3JtYXQobnVtYmVyLG5ldyBTdHJpbmdCdWZmZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICBuZXcgRmllbGRQb3NpdGlvbigwKSkudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+CisgICAgICogQ29udmVuaWVuY2UgbWV0aG9kIHRvIGZvcm1hdCBhIEJpZ0ludGVnZXIuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGZpbmFsIFN0cmluZyBmb3JtYXQoQmlnSW50ZWdlciBudW1iZXIpIHsKKyAgICAgICAgcmV0dXJuIGZvcm1hdChudW1iZXIsIG5ldyBTdHJpbmdCdWZmZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICBuZXcgRmllbGRQb3NpdGlvbigwKSkudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+CisgICAgICogQ29udmVuaWVuY2UgbWV0aG9kIHRvIGZvcm1hdCBhIEJpZ0RlY2ltYWwuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGZpbmFsIFN0cmluZyBmb3JtYXQoamF2YS5tYXRoLkJpZ0RlY2ltYWwgbnVtYmVyKSB7CisgICAgICAgIHJldHVybiBmb3JtYXQobnVtYmVyLCBuZXcgU3RyaW5nQnVmZmVyKCksCisgICAgICAgICAgICAgICAgICAgICAgbmV3IEZpZWxkUG9zaXRpb24oMCkpLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICAgICAqIENvbnZlbmllbmNlIG1ldGhvZCB0byBmb3JtYXQgYSBCaWdEZWNpbWFsLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgZm9ybWF0KGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCBudW1iZXIpIHsKKyAgICAgICAgcmV0dXJuIGZvcm1hdChudW1iZXIsIG5ldyBTdHJpbmdCdWZmZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICBuZXcgRmllbGRQb3NpdGlvbigwKSkudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgIC8qKgorICAgICAqIFNwZWNpYWxpemF0aW9uIG9mIGZvcm1hdC4KKyAgICAgKiBAc2VlIGphdmEudGV4dC5Gb3JtYXQjZm9ybWF0KE9iamVjdCwgU3RyaW5nQnVmZmVyLCBGaWVsZFBvc2l0aW9uKQorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBTdHJpbmdCdWZmZXIgZm9ybWF0KGRvdWJsZSBudW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nQnVmZmVyIHRvQXBwZW5kVG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRQb3NpdGlvbiBwb3MpOworCisgICAvKioKKyAgICAgKiBTcGVjaWFsaXphdGlvbiBvZiBmb3JtYXQuCisgICAgICogQHNlZSBqYXZhLnRleHQuRm9ybWF0I2Zvcm1hdChPYmplY3QsIFN0cmluZ0J1ZmZlciwgRmllbGRQb3NpdGlvbikKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgU3RyaW5nQnVmZmVyIGZvcm1hdChsb25nIG51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdCdWZmZXIgdG9BcHBlbmRUbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFBvc2l0aW9uIHBvcyk7CisKKyAgICAvKioKKyAgICAgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+CisgICAgICogRm9ybWF0IGEgQmlnSW50ZWdlci4KKyAgICAgKiBAc2VlIGphdmEudGV4dC5Gb3JtYXQjZm9ybWF0KE9iamVjdCwgU3RyaW5nQnVmZmVyLCBGaWVsZFBvc2l0aW9uKQorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBTdHJpbmdCdWZmZXIgZm9ybWF0KEJpZ0ludGVnZXIgbnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ0J1ZmZlciB0b0FwcGVuZFRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkUG9zaXRpb24gcG9zKTsgCisKKyAgICAvKioKKyAgICAgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+CisgICAgICogRm9ybWF0IGEgQmlnRGVjaW1hbC4KKyAgICAgKiBAc2VlIGphdmEudGV4dC5Gb3JtYXQjZm9ybWF0KE9iamVjdCwgU3RyaW5nQnVmZmVyLCBGaWVsZFBvc2l0aW9uKQorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBTdHJpbmdCdWZmZXIgZm9ybWF0KGphdmEubWF0aC5CaWdEZWNpbWFsIG51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdCdWZmZXIgdG9BcHBlbmRUbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFBvc2l0aW9uIHBvcyk7CisKKyAgICAvKioKKyAgICAgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+CisgICAgICogRm9ybWF0IGEgQmlnRGVjaW1hbC4KKyAgICAgKiBAc2VlIGphdmEudGV4dC5Gb3JtYXQjZm9ybWF0KE9iamVjdCwgU3RyaW5nQnVmZmVyLCBGaWVsZFBvc2l0aW9uKQorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBTdHJpbmdCdWZmZXIgZm9ybWF0KGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCBudW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nQnVmZmVyIHRvQXBwZW5kVG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRQb3NpdGlvbiBwb3MpOworICAgCisgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgTG9uZyBpZiBwb3NzaWJsZSAoZS5nLiwgd2l0aGluIHRoZSByYW5nZSBbTG9uZy5NSU5fVkFMVUUsCisgICAgICogTG9uZy5NQVhfVkFMVUVdIGFuZCB3aXRoIG5vIGRlY2ltYWxzKSwgb3RoZXJ3aXNlIGEgRG91YmxlLgorICAgICAqIElmIEludGVnZXJPbmx5IGlzIHNldCwgd2lsbCBzdG9wIGF0IGEgZGVjaW1hbAorICAgICAqIHBvaW50IChvciBlcXVpdmFsZW50OyBlLmcuLCBmb3IgcmF0aW9uYWwgbnVtYmVycyAiMSAyLzMiLCB3aWxsIHN0b3AKKyAgICAgKiBhZnRlciB0aGUgMSkuCisgICAgICogRG9lcyBub3QgdGhyb3cgYW4gZXhjZXB0aW9uOyBpZiBubyBvYmplY3QgY2FuIGJlIHBhcnNlZCwgaW5kZXggaXMKKyAgICAgKiB1bmNoYW5nZWQhCisgICAgICogQHNlZSAjaXNQYXJzZUludGVnZXJPbmx5CisgICAgICogQHNlZSBqYXZhLnRleHQuRm9ybWF0I3BhcnNlT2JqZWN0KFN0cmluZywgUGFyc2VQb3NpdGlvbikKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgTnVtYmVyIHBhcnNlKFN0cmluZyB0ZXh0LCBQYXJzZVBvc2l0aW9uIHBhcnNlUG9zaXRpb24pOworCisgICAgLyoqCisgICAgICogUGFyc2VzIHRleHQgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBnaXZlbiBzdHJpbmcgdG8gcHJvZHVjZSBhIG51bWJlci4KKyAgICAgKiBUaGUgbWV0aG9kIG1heSBub3QgdXNlIHRoZSBlbnRpcmUgdGV4dCBvZiB0aGUgZ2l2ZW4gc3RyaW5nLgorICAgICAqCisgICAgICogQHBhcmFtIHRleHQgQSBTdHJpbmcgd2hvc2UgYmVnaW5uaW5nIHNob3VsZCBiZSBwYXJzZWQuCisgICAgICogQHJldHVybiBBIE51bWJlciBwYXJzZWQgZnJvbSB0aGUgc3RyaW5nLgorICAgICAqIEBleGNlcHRpb24gUGFyc2VFeGNlcHRpb24gaWYgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3BlY2lmaWVkIHN0cmluZyAKKyAgICAgKiBjYW5ub3QgYmUgcGFyc2VkLgorICAgICAqIEBzZWUgI2Zvcm1hdAorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIC8vQnVnIDQzNzUzOTkgW1JpY2hhcmQvR0NMXQorICAgIHB1YmxpYyBOdW1iZXIgcGFyc2UoU3RyaW5nIHRleHQpIHRocm93cyBQYXJzZUV4Y2VwdGlvbiB7CisgICAgICAgIFBhcnNlUG9zaXRpb24gcGFyc2VQb3NpdGlvbiA9IG5ldyBQYXJzZVBvc2l0aW9uKDApOworICAgICAgICBOdW1iZXIgcmVzdWx0ID0gcGFyc2UodGV4dCwgcGFyc2VQb3NpdGlvbik7CisgICAgICAgIGlmIChwYXJzZVBvc2l0aW9uLmdldEluZGV4KCkgPT0gMCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnNlRXhjZXB0aW9uKCJVbnBhcnNlYWJsZSBudW1iZXI6IFwiIiArIHRleHQgKyAiXCIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vUFA6cGFyc2VQb3NpdGlvbi5lcnJvckluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGZvcm1hdCB3aWxsIHBhcnNlIG51bWJlcnMgYXMgaW50ZWdlcnMgb25seS4KKyAgICAgKiBGb3IgZXhhbXBsZSBpbiB0aGUgRW5nbGlzaCBsb2NhbGUsIHdpdGggUGFyc2VJbnRlZ2VyT25seSB0cnVlLCB0aGUKKyAgICAgKiBzdHJpbmcgIjEyMzQuIiB3b3VsZCBiZSBwYXJzZWQgYXMgdGhlIGludGVnZXIgdmFsdWUgMTIzNCBhbmQgcGFyc2luZworICAgICAqIHdvdWxkIHN0b3AgYXQgdGhlICIuIiBjaGFyYWN0ZXIuICBPZiBjb3Vyc2UsIHRoZSBleGFjdCBmb3JtYXQgYWNjZXB0ZWQKKyAgICAgKiBieSB0aGUgcGFyc2Ugb3BlcmF0aW9uIGlzIGxvY2FsZSBkZXBlbmRhbnQgYW5kIGRldGVybWluZWQgYnkgc3ViLWNsYXNzZXMKKyAgICAgKiBvZiBOdW1iZXJGb3JtYXQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNQYXJzZUludGVnZXJPbmx5KCkgeworICAgICAgICByZXR1cm4gcGFyc2VJbnRlZ2VyT25seTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHdoZXRoZXIgb3Igbm90IG51bWJlcnMgc2hvdWxkIGJlIHBhcnNlZCBhcyBpbnRlZ2VycyBvbmx5LgorICAgICAqIEBzZWUgI2lzUGFyc2VJbnRlZ2VyT25seQorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFBhcnNlSW50ZWdlck9ubHkoYm9vbGVhbiB2YWx1ZSkgeworICAgICAgICBwYXJzZUludGVnZXJPbmx5ID0gdmFsdWU7CisgICAgfQorCisgICAgLy89PT09PT09PT09PT09PSBMb2NhbGUgU3R1ZmYgPT09PT09PT09PT09PT09PT09PT09CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBkZWZhdWx0IG51bWJlciBmb3JtYXQgZm9yIHRoZSBjdXJyZW50IGRlZmF1bHQgbG9jYWxlLgorICAgICAqIFRoZSBkZWZhdWx0IGZvcm1hdCBpcyBvbmUgb2YgdGhlIHN0eWxlcyBwcm92aWRlZCBieSB0aGUgb3RoZXIKKyAgICAgKiBmYWN0b3J5IG1ldGhvZHM6IGdldE51bWJlckluc3RhbmNlLCBnZXRJbnRlZ2VySW5zdGFuY2UsCisgICAgICogZ2V0Q3VycmVuY3lJbnN0YW5jZSBvciBnZXRQZXJjZW50SW5zdGFuY2UuCisgICAgICogRXhhY3RseSB3aGljaCBvbmUgaXMgbG9jYWxlIGRlcGVuZGFudC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICAvL0J1ZyA0NDA4MDY2IFtSaWNoYXJkL0dDTF0KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIE51bWJlckZvcm1hdCBnZXRJbnN0YW5jZSgpIHsKKyAgICAgICAgcmV0dXJuIGdldEluc3RhbmNlKExvY2FsZS5nZXREZWZhdWx0KCksIE5VTUJFUlNUWUxFKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBkZWZhdWx0IG51bWJlciBmb3JtYXQgZm9yIHRoZSBzcGVjaWZpZWQgbG9jYWxlLgorICAgICAqIFRoZSBkZWZhdWx0IGZvcm1hdCBpcyBvbmUgb2YgdGhlIHN0eWxlcyBwcm92aWRlZCBieSB0aGUgb3RoZXIKKyAgICAgKiBmYWN0b3J5IG1ldGhvZHM6IGdldE51bWJlckluc3RhbmNlLCBnZXRDdXJyZW5jeUluc3RhbmNlIG9yIGdldFBlcmNlbnRJbnN0YW5jZS4KKyAgICAgKiBFeGFjdGx5IHdoaWNoIG9uZSBpcyBsb2NhbGUgZGVwZW5kYW50LgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgTnVtYmVyRm9ybWF0IGdldEluc3RhbmNlKExvY2FsZSBpbkxvY2FsZSkgeworICAgICAgICByZXR1cm4gZ2V0SW5zdGFuY2UoaW5Mb2NhbGUsIE5VTUJFUlNUWUxFKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgZ2VuZXJhbC1wdXJwb3NlIG51bWJlciBmb3JtYXQgZm9yIHRoZSBjdXJyZW50IGRlZmF1bHQgbG9jYWxlLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgTnVtYmVyRm9ybWF0IGdldE51bWJlckluc3RhbmNlKCkgeworICAgICAgICByZXR1cm4gZ2V0SW5zdGFuY2UoTG9jYWxlLmdldERlZmF1bHQoKSwgTlVNQkVSU1RZTEUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSBnZW5lcmFsLXB1cnBvc2UgbnVtYmVyIGZvcm1hdCBmb3IgdGhlIHNwZWNpZmllZCBsb2NhbGUuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBOdW1iZXJGb3JtYXQgZ2V0TnVtYmVySW5zdGFuY2UoTG9jYWxlIGluTG9jYWxlKSB7CisgICAgICAgIHJldHVybiBnZXRJbnN0YW5jZShpbkxvY2FsZSwgTlVNQkVSU1RZTEUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYW4gaW50ZWdlciBudW1iZXIgZm9ybWF0IGZvciB0aGUgY3VycmVudCBkZWZhdWx0IGxvY2FsZS4gVGhlCisgICAgICogcmV0dXJuZWQgbnVtYmVyIGZvcm1hdCBpcyBjb25maWd1cmVkIHRvIHJvdW5kIGZsb2F0aW5nIHBvaW50IG51bWJlcnMKKyAgICAgKiB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyIHVzaW5nIElFRUUgaGFsZi1ldmVuIHJvdW5kaW5nIChzZWUge0BsaW5rIAorICAgICAqIGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCNST1VORF9IQUxGX0VWRU4gUk9VTkRfSEFMRl9FVkVOfSkgZm9yIGZvcm1hdHRpbmcsCisgICAgICogYW5kIHRvIHBhcnNlIG9ubHkgdGhlIGludGVnZXIgcGFydCBvZiBhbiBpbnB1dCBzdHJpbmcgKHNlZSB7QGxpbmsKKyAgICAgKiAjaXNQYXJzZUludGVnZXJPbmx5IGlzUGFyc2VJbnRlZ2VyT25seX0pLgorICAgICAqCisgICAgICogQHJldHVybiBhIG51bWJlciBmb3JtYXQgZm9yIGludGVnZXIgdmFsdWVzCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgLy9CdWcgNDQwODA2NiBbUmljaGFyZC9HQ0xdCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBOdW1iZXJGb3JtYXQgZ2V0SW50ZWdlckluc3RhbmNlKCkgeworICAgICAgICByZXR1cm4gZ2V0SW5zdGFuY2UoTG9jYWxlLmdldERlZmF1bHQoKSwgSU5URUdFUlNUWUxFKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGFuIGludGVnZXIgbnVtYmVyIGZvcm1hdCBmb3IgdGhlIHNwZWNpZmllZCBsb2NhbGUuIFRoZQorICAgICAqIHJldHVybmVkIG51bWJlciBmb3JtYXQgaXMgY29uZmlndXJlZCB0byByb3VuZCBmbG9hdGluZyBwb2ludCBudW1iZXJzCisgICAgICogdG8gdGhlIG5lYXJlc3QgaW50ZWdlciB1c2luZyBJRUVFIGhhbGYtZXZlbiByb3VuZGluZyAoc2VlIHtAbGluayAKKyAgICAgKiBjb20uaWJtLmljdS5tYXRoLkJpZ0RlY2ltYWwjUk9VTkRfSEFMRl9FVkVOIFJPVU5EX0hBTEZfRVZFTn0pIGZvciBmb3JtYXR0aW5nLAorICAgICAqIGFuZCB0byBwYXJzZSBvbmx5IHRoZSBpbnRlZ2VyIHBhcnQgb2YgYW4gaW5wdXQgc3RyaW5nIChzZWUge0BsaW5rCisgICAgICogI2lzUGFyc2VJbnRlZ2VyT25seSBpc1BhcnNlSW50ZWdlck9ubHl9KS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBpbkxvY2FsZSB0aGUgbG9jYWxlIGZvciB3aGljaCBhIG51bWJlciBmb3JtYXQgaXMgbmVlZGVkCisgICAgICogQHJldHVybiBhIG51bWJlciBmb3JtYXQgZm9yIGludGVnZXIgdmFsdWVzCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgLy9CdWcgNDQwODA2NiBbUmljaGFyZC9HQ0xdCisgICAgcHVibGljIHN0YXRpYyBOdW1iZXJGb3JtYXQgZ2V0SW50ZWdlckluc3RhbmNlKExvY2FsZSBpbkxvY2FsZSkgeworICAgICAgICByZXR1cm4gZ2V0SW5zdGFuY2UoaW5Mb2NhbGUsIElOVEVHRVJTVFlMRSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIGN1cnJlbmN5IGZvcm1hdCBmb3IgdGhlIGN1cnJlbnQgZGVmYXVsdCBsb2NhbGUuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBOdW1iZXJGb3JtYXQgZ2V0Q3VycmVuY3lJbnN0YW5jZSgpIHsKKyAgICAgICAgcmV0dXJuIGdldEluc3RhbmNlKExvY2FsZS5nZXREZWZhdWx0KCksIENVUlJFTkNZU1RZTEUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSBjdXJyZW5jeSBmb3JtYXQgZm9yIHRoZSBzcGVjaWZpZWQgbG9jYWxlLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgTnVtYmVyRm9ybWF0IGdldEN1cnJlbmN5SW5zdGFuY2UoTG9jYWxlIGluTG9jYWxlKSB7CisgICAgICAgIHJldHVybiBnZXRJbnN0YW5jZShpbkxvY2FsZSwgQ1VSUkVOQ1lTVFlMRSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIHBlcmNlbnRhZ2UgZm9ybWF0IGZvciB0aGUgY3VycmVudCBkZWZhdWx0IGxvY2FsZS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIE51bWJlckZvcm1hdCBnZXRQZXJjZW50SW5zdGFuY2UoKSB7CisgICAgICAgIHJldHVybiBnZXRJbnN0YW5jZShMb2NhbGUuZ2V0RGVmYXVsdCgpLCBQRVJDRU5UU1RZTEUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSBwZXJjZW50YWdlIGZvcm1hdCBmb3IgdGhlIHNwZWNpZmllZCBsb2NhbGUuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBOdW1iZXJGb3JtYXQgZ2V0UGVyY2VudEluc3RhbmNlKExvY2FsZSBpbkxvY2FsZSkgeworICAgICAgICByZXR1cm4gZ2V0SW5zdGFuY2UoaW5Mb2NhbGUsIFBFUkNFTlRTVFlMRSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICAgICAqIFJldHVybnMgYSBzY2llbnRpZmljIGZvcm1hdCBmb3IgdGhlIGN1cnJlbnQgZGVmYXVsdCBsb2NhbGUuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBOdW1iZXJGb3JtYXQgZ2V0U2NpZW50aWZpY0luc3RhbmNlKCkgeworICAgICAgICByZXR1cm4gZ2V0SW5zdGFuY2UoTG9jYWxlLmdldERlZmF1bHQoKSwgU0NJRU5USUZJQ1NUWUxFKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+CisgICAgICogUmV0dXJucyBhIHNjaWVudGlmaWMgZm9ybWF0IGZvciB0aGUgc3BlY2lmaWVkIGxvY2FsZS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIE51bWJlckZvcm1hdCBnZXRTY2llbnRpZmljSW5zdGFuY2UoTG9jYWxlIGluTG9jYWxlKSB7CisgICAgICAgIHJldHVybiBnZXRJbnN0YW5jZShpbkxvY2FsZSwgU0NJRU5USUZJQ1NUWUxFKTsKKyAgICB9CisKKyAgICAvLyA9PT09PSBGYWN0b3J5IHN0dWZmID09PT09CisgICAgLy8vQ0xPVkVSOk9GRgorICAgIC8qIEBwcm90b3R5cGUgKi8KKyAgICAvKiBwdWJsaWMgKi8gc3RhdGljIGFic3RyYWN0IGNsYXNzIE51bWJlckZvcm1hdEZhY3RvcnkgeworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGT1JNQVRfTlVNQkVSID0gTlVNQkVSU1RZTEU7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZPUk1BVF9DVVJSRU5DWSA9IENVUlJFTkNZU1RZTEU7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZPUk1BVF9QRVJDRU5UID0gUEVSQ0VOVFNUWUxFOworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGT1JNQVRfU0NJRU5USUZJQyA9IFNDSUVOVElGSUNTVFlMRTsKKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRk9STUFUX0lOVEVHRVIgPSBJTlRFR0VSU1RZTEU7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFJldHVybiB0cnVlIGlmIHRoaXMgZmFjdG9yeSB3aWxsIGJlIHZpc2libGUuICBEZWZhdWx0IGlzIHRydWUuICAqLworICAgICAgICBwdWJsaWMgYm9vbGVhbiB2aXNpYmxlKCkgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogUmV0dXJuIGFuIHVubW9kaWZpYWJsZSBjb2xsZWN0aW9uIG9mIHRoZSBsb2NhbGUgbmFtZXMgZGlyZWN0bHkgCisgICAgICAgICAqIHN1cHBvcnRlZCBieSB0aGlzIGZhY3RvcnkuCisgICAgICAgICAqLworICAgICAgICAgcHVibGljIGFic3RyYWN0IFNldCBnZXRTdXBwb3J0ZWRMb2NhbGVOYW1lcygpOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBSZXR1cm4gYSBudW1iZXIgZm9ybWF0IG9mIHRoZSBhcHByb3ByaWF0ZSB0eXBlLiAgSWYgdGhlIGxvY2FsZQorICAgICAgICAgKiBpcyBub3Qgc3VwcG9ydGVkLCByZXR1cm4gbnVsbC4gIEFsbCB0aGUgZGVmaW5lZCB0eXBlcyBtdXN0IGJlCisgICAgICAgICAqIHN1cHBvcnRlZC4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBhYnN0cmFjdCBOdW1iZXJGb3JtYXQgY3JlYXRlRm9ybWF0KExvY2FsZSBsb2MsIGludCBmb3JtYXRUeXBlKTsKKyAgICB9CisKKyAgICAvKiBAcHJvdG90eXBlICovCisgICAgLyogcHVibGljICovIHN0YXRpYyBhYnN0cmFjdCBjbGFzcyBTaW1wbGVOdW1iZXJGb3JtYXRGYWN0b3J5IGV4dGVuZHMgTnVtYmVyRm9ybWF0RmFjdG9yeSB7CisgICAgICAgIGZpbmFsIFNldCBsb2NhbGVOYW1lczsKKyAgICAgICAgZmluYWwgYm9vbGVhbiB2aXNpYmxlOworCisgICAgICAgIHB1YmxpYyBTaW1wbGVOdW1iZXJGb3JtYXRGYWN0b3J5KExvY2FsZSBsb2NhbGUpIHsKKyAgICAgICAgICAgIHRoaXMobG9jYWxlLCB0cnVlKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHVibGljIFNpbXBsZU51bWJlckZvcm1hdEZhY3RvcnkoTG9jYWxlIGxvY2FsZSwgYm9vbGVhbiB2aXNpYmxlKSB7CisgICAgICAgICAgICBsb2NhbGVOYW1lcyA9IENvbGxlY3Rpb25zLnNpbmdsZXRvbihMb2NhbGVVdGlsaXR5LmNhbm9uaWNhbExvY2FsZVN0cmluZyhsb2NhbGUpKTsKKyAgICAgICAgICAgIHRoaXMudmlzaWJsZSA9IHZpc2libGU7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgZmluYWwgYm9vbGVhbiB2aXNpYmxlKCkgeworICAgICAgICAgICAgcmV0dXJuIHZpc2libGU7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgZmluYWwgU2V0IGdldFN1cHBvcnRlZExvY2FsZU5hbWVzKCkgeworICAgICAgICAgICAgcmV0dXJuIGxvY2FsZU5hbWVzOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2xhc3MgTkZGYWN0b3J5IGV4dGVuZHMgTG9jYWxlS2V5RmFjdG9yeSB7CisgICAgICAgIHByaXZhdGUgTnVtYmVyRm9ybWF0RmFjdG9yeSBkZWxlZ2F0ZTsKKworICAgICAgICBORkZhY3RvcnkoTnVtYmVyRm9ybWF0RmFjdG9yeSBkZWxlZ2F0ZSkgeworICAgICAgICAgICAgc3VwZXIoZGVsZWdhdGUudmlzaWJsZSgpID8gVklTSUJMRSA6IElOVklTSUJMRSk7CisKKyAgICAgICAgICAgIHRoaXMuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgfQorCisgICAgICAgIHByb3RlY3RlZCBPYmplY3QgaGFuZGxlQ3JlYXRlKExvY2FsZSBsb2MsIGludCBraW5kLCBJQ1VTZXJ2aWNlIHNlcnZpY2UpIHsKKyAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVGb3JtYXQobG9jLCBraW5kKTsKKyAgICAgICAgfQorCisgICAgICAgIHByb3RlY3RlZCBTZXQgZ2V0U3VwcG9ydGVkSURzKCkgeworICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmdldFN1cHBvcnRlZExvY2FsZU5hbWVzKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgLy8vQ0xPVkVSOk9OCisgICAgLyoqCisgICAgICogR2V0IHRoZSBzZXQgb2YgTG9jYWxlcyBmb3Igd2hpY2ggTnVtYmVyRm9ybWF0cyBhcmUgaW5zdGFsbGVkCisgICAgICogQHJldHVybiBhdmFpbGFibGUgbG9jYWxlcworICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgTG9jYWxlW10gZ2V0QXZhaWxhYmxlTG9jYWxlcygpIHsKKyAgICAgICAgaWYgKHNlcnZpY2UgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIElDVUxvY2FsZURhdGEuZ2V0QXZhaWxhYmxlTG9jYWxlcygpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHNlcnZpY2UuZ2V0QXZhaWxhYmxlTG9jYWxlcygpOworICAgICAgICB9CisgICAgfQorICAgIC8vL0NMT1ZFUjpPRkYKKyAgICAvKioKKyAgICAgKiBSZWdpc3RlcnMgYSBuZXcgTnVtYmVyRm9ybWF0IGZvciB0aGUgcHJvdmlkZWQgbG9jYWxlIG9mIHRoZSBkZWZpbmVkCisgICAgICogdHlwZS4gIFRoZSByZXR1cm5lZCBvYmplY3QgaXMgYSBrZXkgdGhhdCBjYW4gYmUgdXNlZCB0byB1bnJlZ2lzdGVyIHRoaXMKKyAgICAgKiBOdW1iZXJGb3JtYXQgb2JqZWN0LgorICAgICAqIEBwcm90b3R5cGUKKyAgICAgKi8KKyAgICAvKiBwdWJsaWMgKi8gc3RhdGljIE9iamVjdCByZWdpc3RlcihOdW1iZXJGb3JtYXRGYWN0b3J5IGZhY3RvcnkpIHsKKyAgICAgICAgaWYgKGZhY3RvcnkgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiZmFjdG9yeSBtdXN0IG5vdCBiZSBudWxsIik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGdldFNlcnZpY2UoKS5yZWdpc3RlckZhY3RvcnkobmV3IE5GRmFjdG9yeShmYWN0b3J5KSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVW5yZWdpc3RlciB0aGUgY3VycmVuY3kgYXNzb2NpYXRlZCB3aXRoIHRoaXMga2V5IChvYnRhaW5lZCBmcm9tCisgICAgICogcmVnaXN0ZXJJbnN0YW5jZSkuCisgICAgICogQHByb3RvdHlwZQorICAgICAqLworICAgIC8qIHB1YmxpYyAqLyBzdGF0aWMgYm9vbGVhbiB1bnJlZ2lzdGVyKE9iamVjdCByZWdpc3RyeUtleSkgeworICAgICAgICBpZiAoc2VydmljZSA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gc2VydmljZS51bnJlZ2lzdGVyRmFjdG9yeSgoRmFjdG9yeSlyZWdpc3RyeUtleSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBJQ1VMb2NhbGVTZXJ2aWNlIHNlcnZpY2UgPSBudWxsOworICAgIHByaXZhdGUgc3RhdGljIElDVUxvY2FsZVNlcnZpY2UgZ2V0U2VydmljZSgpIHsKKyAgICAgICAgaWYgKHNlcnZpY2UgPT0gbnVsbCkgeworICAgICAgICAgICAgY2xhc3MgUkJOdW1iZXJGb3JtYXRGYWN0b3J5IGV4dGVuZHMgSUNVUmVzb3VyY2VCdW5kbGVGYWN0b3J5IHsKKyAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgT2JqZWN0IGhhbmRsZUNyZWF0ZShMb2NhbGUgbG9jLCBpbnQga2luZCwgSUNVU2VydmljZSBzZXJ2aWNlKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVJbnN0YW5jZShsb2MsIGtpbmQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIElDVUxvY2FsZVNlcnZpY2UgbmV3U2VydmljZSA9IG5ldyBJQ1VMb2NhbGVTZXJ2aWNlKCJOdW1iZXJGb3JtYXQiKTsKKyAgICAgICAgICAgIG5ld1NlcnZpY2UucmVnaXN0ZXJGYWN0b3J5KG5ldyBSQk51bWJlckZvcm1hdEZhY3RvcnkoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHN5bmNocm9uaXplZCAoTnVtYmVyRm9ybWF0LmNsYXNzKSB7CisgICAgICAgICAgICAgICAgaWYgKHNlcnZpY2UgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlID0gbmV3U2VydmljZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHNlcnZpY2U7CisgICAgfQorICAgIC8vL0NMT1ZFUjpPRkYKKyAgICAvLyA9PT09PSBFbmQgb2YgZmFjdG9yeSBzdHVmZiA9PT09PQorCisgICAgLyoqCisgICAgICogT3ZlcnJpZGVzIGhhc2hDb2RlCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKKyAgICAgICAgcmV0dXJuIG1heGltdW1JbnRlZ2VyRGlnaXRzICogMzcgKyBtYXhGcmFjdGlvbkRpZ2l0czsKKyAgICAgICAgLy8ganVzdCBlbm91Z2ggZmllbGRzIGZvciBhIHJlYXNvbmFibGUgZGlzdHJpYnV0aW9uCisgICAgfQorCisgICAgLyoqCisgICAgICogT3ZlcnJpZGVzIGVxdWFscworICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb2JqKSB7CisgICAgICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAodGhpcyA9PSBvYmopCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKGdldENsYXNzKCkgIT0gb2JqLmdldENsYXNzKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIE51bWJlckZvcm1hdCBvdGhlciA9IChOdW1iZXJGb3JtYXQpIG9iajsKKyAgICAgICAgcmV0dXJuIChtYXhpbXVtSW50ZWdlckRpZ2l0cyA9PSBvdGhlci5tYXhpbXVtSW50ZWdlckRpZ2l0cworICAgICAgICAgICAgJiYgbWluaW11bUludGVnZXJEaWdpdHMgPT0gb3RoZXIubWluaW11bUludGVnZXJEaWdpdHMKKyAgICAgICAgICAgICYmIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9PSBvdGhlci5tYXhpbXVtRnJhY3Rpb25EaWdpdHMKKyAgICAgICAgICAgICYmIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9PSBvdGhlci5taW5pbXVtRnJhY3Rpb25EaWdpdHMKKyAgICAgICAgICAgICYmIGdyb3VwaW5nVXNlZCA9PSBvdGhlci5ncm91cGluZ1VzZWQKKyAgICAgICAgICAgICYmIHBhcnNlSW50ZWdlck9ubHkgPT0gb3RoZXIucGFyc2VJbnRlZ2VyT25seSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogT3ZlcnJpZGVzIENsb25lYWJsZQorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBPYmplY3QgY2xvbmUoKQorICAgIHsKKyAgICAgICAgTnVtYmVyRm9ybWF0IG90aGVyID0gKE51bWJlckZvcm1hdCkgc3VwZXIuY2xvbmUoKTsKKyAgICAgICAgcmV0dXJuIG90aGVyOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdHJ1ZSBpZiBncm91cGluZyBpcyB1c2VkIGluIHRoaXMgZm9ybWF0LiBGb3IgZXhhbXBsZSwgaW4gdGhlCisgICAgICogRW5nbGlzaCBsb2NhbGUsIHdpdGggZ3JvdXBpbmcgb24sIHRoZSBudW1iZXIgMTIzNDU2NyBtaWdodCBiZSBmb3JtYXR0ZWQKKyAgICAgKiBhcyAiMSwyMzQsNTY3Ii4gVGhlIGdyb3VwaW5nIHNlcGFyYXRvciBhcyB3ZWxsIGFzIHRoZSBzaXplIG9mIGVhY2ggZ3JvdXAKKyAgICAgKiBpcyBsb2NhbGUgZGVwZW5kYW50IGFuZCBpcyBkZXRlcm1pbmVkIGJ5IHN1Yi1jbGFzc2VzIG9mIE51bWJlckZvcm1hdC4KKyAgICAgKiBAc2VlICNzZXRHcm91cGluZ1VzZWQKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc0dyb3VwaW5nVXNlZCgpIHsKKyAgICAgICAgcmV0dXJuIGdyb3VwaW5nVXNlZDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgd2hldGhlciBvciBub3QgZ3JvdXBpbmcgd2lsbCBiZSB1c2VkIGluIHRoaXMgZm9ybWF0LgorICAgICAqIEBzZWUgI2lzR3JvdXBpbmdVc2VkCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0R3JvdXBpbmdVc2VkKGJvb2xlYW4gbmV3VmFsdWUpIHsKKyAgICAgICAgZ3JvdXBpbmdVc2VkID0gbmV3VmFsdWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgbWF4aW11bSBudW1iZXIgb2YgZGlnaXRzIGFsbG93ZWQgaW4gdGhlIGludGVnZXIgcG9ydGlvbiBvZiBhCisgICAgICogbnVtYmVyLgorICAgICAqIEBzZWUgI3NldE1heGltdW1JbnRlZ2VyRGlnaXRzCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGludCBnZXRNYXhpbXVtSW50ZWdlckRpZ2l0cygpIHsKKyAgICAgICAgcmV0dXJuIG1heGltdW1JbnRlZ2VyRGlnaXRzOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGRpZ2l0cyBhbGxvd2VkIGluIHRoZSBpbnRlZ2VyIHBvcnRpb24gb2YgYQorICAgICAqIG51bWJlci4gTWF4aW11bUludGVnZXJEaWdpdHMgbXVzdCBiZSA+PSBtaW5pbXVtSW50ZWdlckRpZ2l0cy4gIElmIHRoZQorICAgICAqIG5ldyB2YWx1ZSBmb3IgbWF4aW11bUludGVnZXJEaWdpdHMgaXMgbGVzcyB0aGFuIHRoZSBjdXJyZW50IHZhbHVlCisgICAgICogb2YgbWluaW11bUludGVnZXJEaWdpdHMsIHRoZW4gbWluaW11bUludGVnZXJEaWdpdHMgd2lsbCBhbHNvIGJlIHNldCB0bworICAgICAqIHRoZSBuZXcgdmFsdWUuCisgICAgICogQHBhcmFtIG5ld1ZhbHVlIHRoZSBtYXhpbXVtIG51bWJlciBvZiBpbnRlZ2VyIGRpZ2l0cyB0byBiZSBzaG93bjsgaWYKKyAgICAgKiBsZXNzIHRoYW4gemVybywgdGhlbiB6ZXJvIGlzIHVzZWQuIFRoZSBjb25jcmV0ZSBzdWJjbGFzcyBtYXkgZW5mb3JjZSBhbgorICAgICAqIHVwcGVyIGxpbWl0IHRvIHRoaXMgdmFsdWUgYXBwcm9wcmlhdGUgdG8gdGhlIG51bWVyaWMgdHlwZSBiZWluZyBmb3JtYXR0ZWQuCisgICAgICogQHNlZSAjZ2V0TWF4aW11bUludGVnZXJEaWdpdHMKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRNYXhpbXVtSW50ZWdlckRpZ2l0cyhpbnQgbmV3VmFsdWUpIHsKKyAgICAgICAgbWF4aW11bUludGVnZXJEaWdpdHMgPSBNYXRoLm1heCgwLG5ld1ZhbHVlKTsKKyAgICAgICAgaWYgKG1pbmltdW1JbnRlZ2VyRGlnaXRzID4gbWF4aW11bUludGVnZXJEaWdpdHMpCisgICAgICAgICAgICBtaW5pbXVtSW50ZWdlckRpZ2l0cyA9IG1heGltdW1JbnRlZ2VyRGlnaXRzOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIG1pbmltdW0gbnVtYmVyIG9mIGRpZ2l0cyBhbGxvd2VkIGluIHRoZSBpbnRlZ2VyIHBvcnRpb24gb2YgYQorICAgICAqIG51bWJlci4KKyAgICAgKiBAc2VlICNzZXRNaW5pbXVtSW50ZWdlckRpZ2l0cworICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0TWluaW11bUludGVnZXJEaWdpdHMoKSB7CisgICAgICAgIHJldHVybiBtaW5pbXVtSW50ZWdlckRpZ2l0czsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBtaW5pbXVtIG51bWJlciBvZiBkaWdpdHMgYWxsb3dlZCBpbiB0aGUgaW50ZWdlciBwb3J0aW9uIG9mIGEKKyAgICAgKiBudW1iZXIuICBNaW5pbXVtSW50ZWdlckRpZ2l0cyBtdXN0IGJlIDw9IG1heGltdW1JbnRlZ2VyRGlnaXRzLiAgSWYgdGhlCisgICAgICogbmV3IHZhbHVlIGZvciBtaW5pbXVtSW50ZWdlckRpZ2l0cyBleGNlZWRzIHRoZSBjdXJyZW50IHZhbHVlCisgICAgICogb2YgbWF4aW11bUludGVnZXJEaWdpdHMsIHRoZW4gbWF4aW11bUludGVnZXJEaWdpdHMgd2lsbCBhbHNvIGJlIHNldCB0bworICAgICAqIHRoZSBuZXcgdmFsdWUKKyAgICAgKiBAcGFyYW0gbmV3VmFsdWUgdGhlIG1pbmltdW0gbnVtYmVyIG9mIGludGVnZXIgZGlnaXRzIHRvIGJlIHNob3duOyBpZgorICAgICAqIGxlc3MgdGhhbiB6ZXJvLCB0aGVuIHplcm8gaXMgdXNlZC4gVGhlIGNvbmNyZXRlIHN1YmNsYXNzIG1heSBlbmZvcmNlIGFuCisgICAgICogdXBwZXIgbGltaXQgdG8gdGhpcyB2YWx1ZSBhcHByb3ByaWF0ZSB0byB0aGUgbnVtZXJpYyB0eXBlIGJlaW5nIGZvcm1hdHRlZC4KKyAgICAgKiBAc2VlICNnZXRNaW5pbXVtSW50ZWdlckRpZ2l0cworICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldE1pbmltdW1JbnRlZ2VyRGlnaXRzKGludCBuZXdWYWx1ZSkgeworICAgICAgICBtaW5pbXVtSW50ZWdlckRpZ2l0cyA9IE1hdGgubWF4KDAsbmV3VmFsdWUpOworICAgICAgICBpZiAobWluaW11bUludGVnZXJEaWdpdHMgPiBtYXhpbXVtSW50ZWdlckRpZ2l0cykKKyAgICAgICAgICAgIG1heGltdW1JbnRlZ2VyRGlnaXRzID0gbWluaW11bUludGVnZXJEaWdpdHM7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgbWF4aW11bSBudW1iZXIgb2YgZGlnaXRzIGFsbG93ZWQgaW4gdGhlIGZyYWN0aW9uIHBvcnRpb24gb2YgYQorICAgICAqIG51bWJlci4KKyAgICAgKiBAc2VlICNzZXRNYXhpbXVtRnJhY3Rpb25EaWdpdHMKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldE1heGltdW1GcmFjdGlvbkRpZ2l0cygpIHsKKyAgICAgICAgcmV0dXJuIG1heGltdW1GcmFjdGlvbkRpZ2l0czsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBkaWdpdHMgYWxsb3dlZCBpbiB0aGUgZnJhY3Rpb24gcG9ydGlvbiBvZiBhCisgICAgICogbnVtYmVyLiBNYXhpbXVtRnJhY3Rpb25EaWdpdHMgbXVzdCBiZSA+PSBtaW5pbXVtRnJhY3Rpb25EaWdpdHMuICBJZiB0aGUKKyAgICAgKiBuZXcgdmFsdWUgZm9yIG1heGltdW1GcmFjdGlvbkRpZ2l0cyBpcyBsZXNzIHRoYW4gdGhlIGN1cnJlbnQgdmFsdWUKKyAgICAgKiBvZiBtaW5pbXVtRnJhY3Rpb25EaWdpdHMsIHRoZW4gbWluaW11bUZyYWN0aW9uRGlnaXRzIHdpbGwgYWxzbyBiZSBzZXQgdG8KKyAgICAgKiB0aGUgbmV3IHZhbHVlLgorICAgICAqIEBwYXJhbSBuZXdWYWx1ZSB0aGUgbWF4aW11bSBudW1iZXIgb2YgZnJhY3Rpb24gZGlnaXRzIHRvIGJlIHNob3duOyBpZgorICAgICAqIGxlc3MgdGhhbiB6ZXJvLCB0aGVuIHplcm8gaXMgdXNlZC4gVGhlIGNvbmNyZXRlIHN1YmNsYXNzIG1heSBlbmZvcmNlIGFuCisgICAgICogdXBwZXIgbGltaXQgdG8gdGhpcyB2YWx1ZSBhcHByb3ByaWF0ZSB0byB0aGUgbnVtZXJpYyB0eXBlIGJlaW5nIGZvcm1hdHRlZC4KKyAgICAgKiBAc2VlICNnZXRNYXhpbXVtRnJhY3Rpb25EaWdpdHMKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRNYXhpbXVtRnJhY3Rpb25EaWdpdHMoaW50IG5ld1ZhbHVlKSB7CisgICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IE1hdGgubWF4KDAsbmV3VmFsdWUpOworICAgICAgICBpZiAobWF4aW11bUZyYWN0aW9uRGlnaXRzIDwgbWluaW11bUZyYWN0aW9uRGlnaXRzKQorICAgICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzID0gbWF4aW11bUZyYWN0aW9uRGlnaXRzOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIG1pbmltdW0gbnVtYmVyIG9mIGRpZ2l0cyBhbGxvd2VkIGluIHRoZSBmcmFjdGlvbiBwb3J0aW9uIG9mIGEKKyAgICAgKiBudW1iZXIuCisgICAgICogQHNlZSAjc2V0TWluaW11bUZyYWN0aW9uRGlnaXRzCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGludCBnZXRNaW5pbXVtRnJhY3Rpb25EaWdpdHMoKSB7CisgICAgICAgIHJldHVybiBtaW5pbXVtRnJhY3Rpb25EaWdpdHM7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgbWluaW11bSBudW1iZXIgb2YgZGlnaXRzIGFsbG93ZWQgaW4gdGhlIGZyYWN0aW9uIHBvcnRpb24gb2YgYQorICAgICAqIG51bWJlci4gTWluaW11bUZyYWN0aW9uRGlnaXRzIG11c3QgYmUgPD0gbWF4aW11bUZyYWN0aW9uRGlnaXRzLiAgSWYgdGhlCisgICAgICogbmV3IHZhbHVlIGZvciBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgZXhjZWVkcyB0aGUgY3VycmVudCB2YWx1ZQorICAgICAqIG9mIG1heGltdW1GcmFjdGlvbkRpZ2l0cywgdGhlbiBtYXhpbXVtSW50ZWdlckRpZ2l0cyB3aWxsIGFsc28gYmUgc2V0IHRvCisgICAgICogdGhlIG5ldyB2YWx1ZS4KKyAgICAgKiBAcGFyYW0gbmV3VmFsdWUgdGhlIG1pbmltdW0gbnVtYmVyIG9mIGZyYWN0aW9uIGRpZ2l0cyB0byBiZSBzaG93bjsgaWYKKyAgICAgKiBsZXNzIHRoYW4gemVybywgdGhlbiB6ZXJvIGlzIHVzZWQuIFRoZSBjb25jcmV0ZSBzdWJjbGFzcyBtYXkgZW5mb3JjZSBhbgorICAgICAqIHVwcGVyIGxpbWl0IHRvIHRoaXMgdmFsdWUgYXBwcm9wcmlhdGUgdG8gdGhlIG51bWVyaWMgdHlwZSBiZWluZyBmb3JtYXR0ZWQuCisgICAgICogQHNlZSAjZ2V0TWluaW11bUZyYWN0aW9uRGlnaXRzCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0TWluaW11bUZyYWN0aW9uRGlnaXRzKGludCBuZXdWYWx1ZSkgeworICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBNYXRoLm1heCgwLG5ld1ZhbHVlKTsKKyAgICAgICAgaWYgKG1heGltdW1GcmFjdGlvbkRpZ2l0cyA8IG1pbmltdW1GcmFjdGlvbkRpZ2l0cykKKyAgICAgICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IG1pbmltdW1GcmFjdGlvbkRpZ2l0czsKKyAgICB9CisKKyAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PXByaXZhdGVzPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgLy8gSG9vayBmb3Igc2VydmljZQorICAgIHByaXZhdGUgc3RhdGljIE51bWJlckZvcm1hdCBnZXRJbnN0YW5jZShMb2NhbGUgZGVzaXJlZExvY2FsZSwgaW50IGNob2ljZSkgeworICAgICAgICBpZiAoc2VydmljZSA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gY3JlYXRlSW5zdGFuY2UoZGVzaXJlZExvY2FsZSwgY2hvaWNlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIE51bWJlckZvcm1hdCByZXN1bHQgPSAoTnVtYmVyRm9ybWF0KXNlcnZpY2UuZ2V0KGRlc2lyZWRMb2NhbGUsIGNob2ljZSk7CisgICAgICAgICAgICByZXR1cm4gKE51bWJlckZvcm1hdClyZXN1bHQuY2xvbmUoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFtORVddCisgICAgcHJpdmF0ZSBzdGF0aWMgTnVtYmVyRm9ybWF0IGNyZWF0ZUluc3RhbmNlKExvY2FsZSBkZXNpcmVkTG9jYWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2hvaWNlKSB7CisgICAgICAgIFN0cmluZyBwYXR0ZXJuID0gZ2V0UGF0dGVybihkZXNpcmVkTG9jYWxlLCBjaG9pY2UpOworICAgICAgICBEZWNpbWFsRm9ybWF0U3ltYm9scyBzeW1ib2xzID0gbmV3IERlY2ltYWxGb3JtYXRTeW1ib2xzKGRlc2lyZWRMb2NhbGUpOworICAgICAgICBEZWNpbWFsRm9ybWF0IGZvcm1hdCA9IG5ldyBEZWNpbWFsRm9ybWF0KHBhdHRlcm4sIHN5bWJvbHMpOworICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oImxvYzogIiArIGRlc2lyZWRMb2NhbGUgKyAiIGNob2ljZTogIiArIGNob2ljZSArICIgcGF0OiAiICsgcGF0dGVybiArICIgc3ltOiAiICsgc3ltYm9scyArICIgcmVzdWx0OiAiICsgZm9ybWF0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAvKkJ1ZyA0NDA4MDY2CisgICAgICAgICBBZGQgY29kZXMgZm9yIHRoZSBuZXcgbWV0aG9kIGdldEludGVnZXJJbnN0YW5jZSgpIFtSaWNoYXJkL0dDTF0KKyAgICAgICAgKi8KKyAgICAgICAgaWYgKGNob2ljZSA9PSBJTlRFR0VSU1RZTEUpIHsKKyAgICAgICAgICAgIGZvcm1hdC5zZXRNYXhpbXVtRnJhY3Rpb25EaWdpdHMoMCk7CisgICAgICAgICAgICBmb3JtYXQuc2V0RGVjaW1hbFNlcGFyYXRvckFsd2F5c1Nob3duKGZhbHNlKTsKKyAgICAgICAgICAgIGZvcm1hdC5zZXRQYXJzZUludGVnZXJPbmx5KHRydWUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmb3JtYXQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBwYXR0ZXJuIGZvciB0aGUgcHJvdmlkZWQgbG9jYWxlIGFuZCBjaG9pY2UuCisgICAgICogQHBhcmFtIGZvckxvY2FsZSB0aGUgbG9jYWxlIG9mIHRoZSBkYXRhLgorICAgICAqIEBwYXJhbSBjaG9pY2UgdGhlIHBhdHRlcm4gZm9ybWF0LgorICAgICAqIEByZXR1cm4gdGhlIHBhdHRlcm4KKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIC8vIFtORVddCisgICAgcHJvdGVjdGVkIHN0YXRpYyBTdHJpbmcgZ2V0UGF0dGVybihMb2NhbGUgZm9yTG9jYWxlLCBpbnQgY2hvaWNlKSB7CisKKyAgICAgICAgLyogVGhlIGZvbGxvd2luZyBjb2RlIHRha2VzIGNhcmUgb2YgYSBmZXcgY2FzZXMgd2hlcmUgdGhlCisgICAgICAgICAqIHJlc291cmNlIGRhdGEgaW4gdGhlIHVuZGVybHlpbmcgSkRLIGxhZ3MgdGhlIG5ldyBmZWF0dXJlcworICAgICAgICAgKiB3ZSBoYXZlIGFkZGVkIHRvIElDVTRKOiBzY2llbnRpZmljIG5vdGF0aW9uLCByb3VuZGluZywgYW5kCisgICAgICAgICAqIHNlY29uZGFyeSBncm91cGluZy4KKyAgICAgICAgICoKKyAgICAgICAgICogV2UgZGV0ZWN0IHRoZXNlIGNhc2VzIGhlcmUgYW5kIHJldHVybiB2YXJpb3VzIGhhcmQtY29kZWQKKyAgICAgICAgICogcmVzb3VyY2UgZGF0YS4gIFRoaXMgaXMgdGhlIHNpbXBsZXN0IHNvbHV0aW9uIGZvciBub3csIGJ1dAorICAgICAgICAgKiBpdCBpcyBub3QgYSBnb29kIGxvbmctdGVybSBtZWNoYW5pc20uCisgICAgICAgICAqIAorICAgICAgICAgKiBXZSBzaG91bGQgcmVwbGFjZSB0aGlzIGNvZGUgd2l0aCBhIGRhdGEtZHJpdmVuIG1lY2hhbmlzbQorICAgICAgICAgKiB0aGF0IHJlYWRzIHRoZSBidW5kbGUgY29tLmlibS5pY3UuaW1wbC5kYXRhLkxvY2FsZUVsZW1lbnRzCisgICAgICAgICAqIGFuZCBwYXJzZXMgYW4gZXhjZXB0aW9uIHRhYmxlIHRoYXQgb3ZlcnJpZGVzIHRoZSBzdGFuZGFyZAorICAgICAgICAgKiBkYXRhIGF0IGphdmEudGV4dC5yZXNvdXJjZS5Mb2NhbGVFbGVtZW50cyouamF2YS4KKyAgICAgICAgICogQWx0ZXJuYXRpdmVseSwgd2Ugc2hvdWxkIGNyZWF0ZSBvdXIgb3duIGNvcHkgb2YgdGhlCisgICAgICAgICAqIHJlc291cmNlIGRhdGEsIGFuZCB1c2UgdGhhdCBleGNsdXNpdmVseS4KKyAgICAgICAgICovCisKKyAgICAgICAgLy8gVEVNUE9SQVJZLCB1bnRpbCB3ZSBnZXQgc2NpZW50aWZpYyBwYXR0ZXJucyBpbnRvIHRoZSBtYWluCisgICAgICAgIC8vIHJlc291cmNlczogIFJldHJpZXZlIHNjaWVudGlmaWMgcGF0dGVybnMgZnJvbSBvdXIgcmVzb3VyY2VzLgorICAgICAgICBpZiAoY2hvaWNlID09IFNDSUVOVElGSUNTVFlMRSkgeworICAgICAgICAgICAgLy8gVGVtcG9yYXJpbHkgaGFyZCBjb2RlOyByZXRyaWV2ZSBmcm9tIHJlc291cmNlIGxhdGVyCisgICAgICAgICAgICAvKkZvciBJQ1UgY29tcGF0aWJpbGl0eSBbUmljaGFyZC9HQ0xdKi8KKyAgICAgICAgICAgIHJldHVybiAiI0UwIjsKKyAgICAgICAgICAgIC8vIHJldHVybiBOdW1iZXJGb3JtYXQuZ2V0QmFzZVN0cmluZ0FycmF5KCJOdW1iZXJQYXR0ZXJucyIpW1NDSUVOVElGSUNTVFlMRV07CisgICAgICAgIH0KKyAgICAgICAgLy8gVEVNUE9SQVJZOiBVc2Ugcm91bmRpbmcgZm9yIFN3aXNzIGN1cnJlbmN5CisgICAgICAgIC8vaWYgKGNob2ljZSA9PSBDVVJSRU5DWVNUWUxFICYmCisgICAgICAgIC8vICAgIGZvckxvY2FsZS5nZXRDb3VudHJ5KCkuZXF1YWxzKCJDSCIpKSB7CisgICAgICAgIC8vICAgIHJldHVybiAiJ0ZyLiAnIywjIzAuMDU7J0ZyLi0nIywjIzAuMDUiOworICAgICAgICAvL30KKyAgICAgICAgLy8gVEVNUE9SQVJZOiBTcGVjaWFsIGNhc2UgSU4gbnVtYmVyIGZvcm1hdAorICAgICAgICAvL2lmIChjaG9pY2UgPT0gTlVNQkVSU1RZTEUgJiYKKyAgICAgICAgLy8gICAgZm9yTG9jYWxlLmdldENvdW50cnkoKS5lcXVhbHMoIklOIikpIHsKKyAgICAgICAgLy8gICAgcmV0dXJuICIjLCMjLCMjMC4jIyMiOworICAgICAgICAvL30KKworCQkvLyB7ZGxmfQorCQlSZXNvdXJjZUJ1bmRsZSByYiA9IElDVUxvY2FsZURhdGEuZ2V0TG9jYWxlRWxlbWVudHMoZm9yTG9jYWxlKTsKKwkJU3RyaW5nW10gbnVtYmVyUGF0dGVybnMgPSByYi5nZXRTdHJpbmdBcnJheSgiTnVtYmVyUGF0dGVybnMiKTsKKworCQkvKiB7ZGxmfQorICAgICAgICAvLyBUcnkgdGhlIGNhY2hlIGZpcnN0CisgICAgICAgIFN0cmluZ1tdIG51bWJlclBhdHRlcm5zID0gKFN0cmluZ1tdKSBjYWNoZWRMb2NhbGVEYXRhLmdldChmb3JMb2NhbGUpOworICAgICAgICBpZiAobnVtYmVyUGF0dGVybnMgPT0gbnVsbCkgeworICAgICAgICAgICAgT3ZlcmxheUJ1bmRsZSByZXNvdXJjZSA9IG5ldyBPdmVybGF5QnVuZGxlKG5ldyBTdHJpbmdbXQorICAgICAgICAgICAgICAgIHsgImNvbS5pYm0uaWN1LmltcGwuZGF0YS5Mb2NhbGVFbGVtZW50cyIsIFJFU09VUkNFX0JBU0UgfSwgZm9yTG9jYWxlKTsKKyAgICAgICAgICAgIG51bWJlclBhdHRlcm5zID0gcmVzb3VyY2UuZ2V0U3RyaW5nQXJyYXkoIk51bWJlclBhdHRlcm5zIik7CisgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGNhY2hlCisgICAgICAgICAgICBjYWNoZWRMb2NhbGVEYXRhLnB1dChmb3JMb2NhbGUsIG51bWJlclBhdHRlcm5zKTsgCisgICAgICAgIH0KKwkJKi8KKworICAgICAgICAvKkJ1ZyA0NDA4MDY2CisgICAgICAgICBBZGQgY29kZXMgZm9yIHRoZSBuZXcgbWV0aG9kIGdldEludGVnZXJJbnN0YW5jZSgpIFtSaWNoYXJkL0dDTF0KKyAgICAgICAgKi8KKyAgICAgICAgaW50IGVudHJ5ID0gKGNob2ljZSA9PSBJTlRFR0VSU1RZTEUpID8gTlVNQkVSU1RZTEUgOiBjaG9pY2U7IC8vW1JpY2hhcmQvR0NMXQorICAgICAgICByZXR1cm4gbnVtYmVyUGF0dGVybnNbZW50cnldOyAvL1tSaWNoYXJkL0dDTF0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBGaXJzdCwgcmVhZCBpbiB0aGUgZGVmYXVsdCBzZXJpYWxpemFibGUgZGF0YS4KKyAgICAgKgorICAgICAqIFRoZW4sIGlmIDxjb2RlPnNlcmlhbFZlcnNpb25PblN0cmVhbTwvY29kZT4gaXMgbGVzcyB0aGFuIDEsIGluZGljYXRpbmcgdGhhdAorICAgICAqIHRoZSBzdHJlYW0gd2FzIHdyaXR0ZW4gYnkgSkRLIDEuMSwKKyAgICAgKiBzZXQgdGhlIDxjb2RlPmludDwvY29kZT4gZmllbGRzIHN1Y2ggYXMgPGNvZGU+bWF4aW11bUludGVnZXJEaWdpdHM8L2NvZGU+CisgICAgICogdG8gYmUgZXF1YWwgdG8gdGhlIDxjb2RlPmJ5dGU8L2NvZGU+IGZpZWxkcyBzdWNoIGFzIDxjb2RlPm1heEludGVnZXJEaWdpdHM8L2NvZGU+LAorICAgICAqIHNpbmNlIHRoZSA8Y29kZT5pbnQ8L2NvZGU+IGZpZWxkcyB3ZXJlIG5vdCBwcmVzZW50IGluIEpESyAxLjEuCisgICAgICogRmluYWxseSwgc2V0IHNlcmlhbFZlcnNpb25PblN0cmVhbSBiYWNrIHRvIHRoZSBtYXhpbXVtIGFsbG93ZWQgdmFsdWUgc28gdGhhdAorICAgICAqIGRlZmF1bHQgc2VyaWFsaXphdGlvbiB3aWxsIHdvcmsgcHJvcGVybHkgaWYgdGhpcyBvYmplY3QgaXMgc3RyZWFtZWQgb3V0IGFnYWluLgorICAgICAqCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIHJlYWRPYmplY3QoT2JqZWN0SW5wdXRTdHJlYW0gc3RyZWFtKQorICAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uLCBDbGFzc05vdEZvdW5kRXhjZXB0aW9uCisgICAgeworICAgICAgICBzdHJlYW0uZGVmYXVsdFJlYWRPYmplY3QoKTsKKyAgICAgICAgaWYgKHNlcmlhbFZlcnNpb25PblN0cmVhbSA8IDEpIHsKKyAgICAgICAgICAgIC8vIERpZG4ndCBoYXZlIGFkZGl0aW9uYWwgaW50IGZpZWxkcywgcmVhc3NpZ24gdG8gdXNlIHRoZW0uCisgICAgICAgICAgICBtYXhpbXVtSW50ZWdlckRpZ2l0cyA9IG1heEludGVnZXJEaWdpdHM7CisgICAgICAgICAgICBtaW5pbXVtSW50ZWdlckRpZ2l0cyA9IG1pbkludGVnZXJEaWdpdHM7CisgICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBtYXhGcmFjdGlvbkRpZ2l0czsKKyAgICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IG1pbkZyYWN0aW9uRGlnaXRzOworICAgICAgICB9CisgICAgICAgIC8qQnVnIDQxODU3NjEKKyAgICAgICAgICBWYWxpZGF0ZSB0aGUgbWluIGFuZCBtYXggZmllbGRzIFtSaWNoYXJkL0dDTF0KKyAgICAgICAgKi8KKyAgICAgICAgaWYgKG1pbmltdW1JbnRlZ2VyRGlnaXRzID4gbWF4aW11bUludGVnZXJEaWdpdHMgfHwKKyAgICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA+IG1heGltdW1GcmFjdGlvbkRpZ2l0cyB8fAorICAgICAgICAgICAgbWluaW11bUludGVnZXJEaWdpdHMgPCAwIHx8IG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA8IDApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT2JqZWN0RXhjZXB0aW9uKCJEaWdpdCBjb3VudCByYW5nZSBpbnZhbGlkIik7CisgICAgICAgIH0KKyAgICAgICAgc2VyaWFsVmVyc2lvbk9uU3RyZWFtID0gY3VycmVudFNlcmlhbFZlcnNpb247CisgICAgfQorCisgICAgLyoqCisgICAgICogV3JpdGUgb3V0IHRoZSBkZWZhdWx0IHNlcmlhbGl6YWJsZSBkYXRhLCBhZnRlciBmaXJzdCBzZXR0aW5nCisgICAgICogdGhlIDxjb2RlPmJ5dGU8L2NvZGU+IGZpZWxkcyBzdWNoIGFzIDxjb2RlPm1heEludGVnZXJEaWdpdHM8L2NvZGU+IHRvIGJlCisgICAgICogZXF1YWwgdG8gdGhlIDxjb2RlPmludDwvY29kZT4gZmllbGRzIHN1Y2ggYXMgPGNvZGU+bWF4aW11bUludGVnZXJEaWdpdHM8L2NvZGU+CisgICAgICogKG9yIHRvIDxjb2RlPkJ5dGUuTUFYX1ZBTFVFPC9jb2RlPiwgd2hpY2hldmVyIGlzIHNtYWxsZXIpLCBmb3IgY29tcGF0aWJpbGl0eQorICAgICAqIHdpdGggdGhlIEpESyAxLjEgdmVyc2lvbiBvZiB0aGUgc3RyZWFtIGZvcm1hdC4KKyAgICAgKgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCB3cml0ZU9iamVjdChPYmplY3RPdXRwdXRTdHJlYW0gc3RyZWFtKQorICAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uCisgICAgeworICAgICAgICBtYXhJbnRlZ2VyRGlnaXRzID0gKG1heGltdW1JbnRlZ2VyRGlnaXRzID4gQnl0ZS5NQVhfVkFMVUUpID8gQnl0ZS5NQVhfVkFMVUUgOgorICAgICAgICAgICAgKGJ5dGUpbWF4aW11bUludGVnZXJEaWdpdHM7CisgICAgICAgIG1pbkludGVnZXJEaWdpdHMgPSAobWluaW11bUludGVnZXJEaWdpdHMgPiBCeXRlLk1BWF9WQUxVRSkgPyBCeXRlLk1BWF9WQUxVRSA6CisgICAgICAgICAgICAoYnl0ZSltaW5pbXVtSW50ZWdlckRpZ2l0czsKKyAgICAgICAgbWF4RnJhY3Rpb25EaWdpdHMgPSAobWF4aW11bUZyYWN0aW9uRGlnaXRzID4gQnl0ZS5NQVhfVkFMVUUpID8gQnl0ZS5NQVhfVkFMVUUgOgorICAgICAgICAgICAgKGJ5dGUpbWF4aW11bUZyYWN0aW9uRGlnaXRzOworICAgICAgICBtaW5GcmFjdGlvbkRpZ2l0cyA9IChtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPiBCeXRlLk1BWF9WQUxVRSkgPyBCeXRlLk1BWF9WQUxVRSA6CisgICAgICAgICAgICAoYnl0ZSltaW5pbXVtRnJhY3Rpb25EaWdpdHM7CisgICAgICAgIHN0cmVhbS5kZWZhdWx0V3JpdGVPYmplY3QoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDYWNoZSB0byBob2xkIHRoZSBOdW1iZXJQYXR0ZXJucyBvZiBhIExvY2FsZS4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBIYXNodGFibGUgY2FjaGVkTG9jYWxlRGF0YSA9IG5ldyBIYXNodGFibGUoMyk7CisKKyAgICAvKkJ1ZyA0NDA4MDY2CisgICAgICBBZGQgRmllbGQgZm9yIHRoZSBuZXcgbWV0aG9kIGdldEludGVnZXJJbnN0YW5jZSgpIFtSaWNoYXJkL0dDTF0KKyAgICAqLworCisgICAgLyoqCisgICAgICogVHJ1ZSBpZiB0aGUgdGhlIGdyb3VwaW5nIChpLmUuIHRob3VzYW5kcykgc2VwYXJhdG9yIGlzIHVzZWQgd2hlbgorICAgICAqIGZvcm1hdHRpbmcgYW5kIHBhcnNpbmcgbnVtYmVycy4KKyAgICAgKgorICAgICAqIEBzZXJpYWwKKyAgICAgKiBAc2VlICNpc0dyb3VwaW5nVXNlZAorICAgICAqLworICAgIHByaXZhdGUgYm9vbGVhbiBncm91cGluZ1VzZWQgPSB0cnVlOworCisgICAgLyoqCisgICAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIGRpZ2l0cyBhbGxvd2VkIGluIHRoZSBpbnRlZ2VyIHBvcnRpb24gb2YgYQorICAgICAqIG51bWJlci4gIDxjb2RlPm1heEludGVnZXJEaWdpdHM8L2NvZGU+IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvCisgICAgICogPGNvZGU+bWluSW50ZWdlckRpZ2l0czwvY29kZT4uCisgICAgICogPHA+CisgICAgICogPHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBUaGlzIGZpZWxkIGV4aXN0cyBvbmx5IGZvciBzZXJpYWxpemF0aW9uCisgICAgICogY29tcGF0aWJpbGl0eSB3aXRoIEpESyAxLjEuICBJbiBKREsgMS4yIGFuZCBoaWdoZXIsIHRoZSBuZXcKKyAgICAgKiA8Y29kZT5pbnQ8L2NvZGU+IGZpZWxkIDxjb2RlPm1heGltdW1JbnRlZ2VyRGlnaXRzPC9jb2RlPiBpcyB1c2VkIGluc3RlYWQuCisgICAgICogV2hlbiB3cml0aW5nIHRvIGEgc3RyZWFtLCA8Y29kZT5tYXhJbnRlZ2VyRGlnaXRzPC9jb2RlPiBpcyBzZXQgdG8KKyAgICAgKiA8Y29kZT5tYXhpbXVtSW50ZWdlckRpZ2l0czwvY29kZT4gb3IgPGNvZGU+Qnl0ZS5NQVhfVkFMVUU8L2NvZGU+LAorICAgICAqIHdoaWNoZXZlciBpcyBzbWFsbGVyLiAgV2hlbiByZWFkaW5nIGZyb20gYSBzdHJlYW0sIHRoaXMgZmllbGQgaXMgdXNlZAorICAgICAqIG9ubHkgaWYgPGNvZGU+c2VyaWFsVmVyc2lvbk9uU3RyZWFtPC9jb2RlPiBpcyBsZXNzIHRoYW4gMS4gCisgICAgICoKKyAgICAgKiBAc2VyaWFsCisgICAgICogQHNlZSAjZ2V0TWF4aW11bUludGVnZXJEaWdpdHMKKyAgICAgKi8KKyAgICBwcml2YXRlIGJ5dGUgICAgbWF4SW50ZWdlckRpZ2l0cyA9IDQwOworCisgICAgLyoqCisgICAgICogVGhlIG1pbmltdW0gbnVtYmVyIG9mIGRpZ2l0cyBhbGxvd2VkIGluIHRoZSBpbnRlZ2VyIHBvcnRpb24gb2YgYQorICAgICAqIG51bWJlci4gIDxjb2RlPm1pbmltdW1JbnRlZ2VyRGlnaXRzPC9jb2RlPiBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0bworICAgICAqIDxjb2RlPm1heGltdW1JbnRlZ2VyRGlnaXRzPC9jb2RlPi4KKyAgICAgKiA8cD4KKyAgICAgKiA8c3Ryb25nPk5vdGU6PC9zdHJvbmc+IFRoaXMgZmllbGQgZXhpc3RzIG9ubHkgZm9yIHNlcmlhbGl6YXRpb24KKyAgICAgKiBjb21wYXRpYmlsaXR5IHdpdGggSkRLIDEuMS4gIEluIEpESyAxLjIgYW5kIGhpZ2hlciwgdGhlIG5ldworICAgICAqIDxjb2RlPmludDwvY29kZT4gZmllbGQgPGNvZGU+bWluaW11bUludGVnZXJEaWdpdHM8L2NvZGU+IGlzIHVzZWQgaW5zdGVhZC4KKyAgICAgKiBXaGVuIHdyaXRpbmcgdG8gYSBzdHJlYW0sIDxjb2RlPm1pbkludGVnZXJEaWdpdHM8L2NvZGU+IGlzIHNldCB0bworICAgICAqIDxjb2RlPm1pbmltdW1JbnRlZ2VyRGlnaXRzPC9jb2RlPiBvciA8Y29kZT5CeXRlLk1BWF9WQUxVRTwvY29kZT4sCisgICAgICogd2hpY2hldmVyIGlzIHNtYWxsZXIuICBXaGVuIHJlYWRpbmcgZnJvbSBhIHN0cmVhbSwgdGhpcyBmaWVsZCBpcyB1c2VkCisgICAgICogb25seSBpZiA8Y29kZT5zZXJpYWxWZXJzaW9uT25TdHJlYW08L2NvZGU+IGlzIGxlc3MgdGhhbiAxLiAKKyAgICAgKgorICAgICAqIEBzZXJpYWwKKyAgICAgKiBAc2VlICNnZXRNaW5pbXVtSW50ZWdlckRpZ2l0cworICAgICAqLworICAgIHByaXZhdGUgYnl0ZSAgICBtaW5JbnRlZ2VyRGlnaXRzID0gMTsKKworICAgIC8qKgorICAgICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBkaWdpdHMgYWxsb3dlZCBpbiB0aGUgZnJhY3Rpb25hbCBwb3J0aW9uIG9mIGEKKyAgICAgKiBudW1iZXIuICA8Y29kZT5tYXhpbXVtRnJhY3Rpb25EaWdpdHM8L2NvZGU+IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvCisgICAgICogPGNvZGU+bWluaW11bUZyYWN0aW9uRGlnaXRzPC9jb2RlPi4KKyAgICAgKiA8cD4KKyAgICAgKiA8c3Ryb25nPk5vdGU6PC9zdHJvbmc+IFRoaXMgZmllbGQgZXhpc3RzIG9ubHkgZm9yIHNlcmlhbGl6YXRpb24KKyAgICAgKiBjb21wYXRpYmlsaXR5IHdpdGggSkRLIDEuMS4gIEluIEpESyAxLjIgYW5kIGhpZ2hlciwgdGhlIG5ldworICAgICAqIDxjb2RlPmludDwvY29kZT4gZmllbGQgPGNvZGU+bWF4aW11bUZyYWN0aW9uRGlnaXRzPC9jb2RlPiBpcyB1c2VkIGluc3RlYWQuCisgICAgICogV2hlbiB3cml0aW5nIHRvIGEgc3RyZWFtLCA8Y29kZT5tYXhGcmFjdGlvbkRpZ2l0czwvY29kZT4gaXMgc2V0IHRvCisgICAgICogPGNvZGU+bWF4aW11bUZyYWN0aW9uRGlnaXRzPC9jb2RlPiBvciA8Y29kZT5CeXRlLk1BWF9WQUxVRTwvY29kZT4sCisgICAgICogd2hpY2hldmVyIGlzIHNtYWxsZXIuICBXaGVuIHJlYWRpbmcgZnJvbSBhIHN0cmVhbSwgdGhpcyBmaWVsZCBpcyB1c2VkCisgICAgICogb25seSBpZiA8Y29kZT5zZXJpYWxWZXJzaW9uT25TdHJlYW08L2NvZGU+IGlzIGxlc3MgdGhhbiAxLiAKKyAgICAgKgorICAgICAqIEBzZXJpYWwKKyAgICAgKiBAc2VlICNnZXRNYXhpbXVtRnJhY3Rpb25EaWdpdHMKKyAgICAgKi8KKyAgICBwcml2YXRlIGJ5dGUgICAgbWF4RnJhY3Rpb25EaWdpdHMgPSAzOyAgICAvLyBpbnZhcmlhbnQsID49IG1pbkZyYWN0aW9uRGlnaXRzCisKKyAgICAvKioKKyAgICAgKiBUaGUgbWluaW11bSBudW1iZXIgb2YgZGlnaXRzIGFsbG93ZWQgaW4gdGhlIGZyYWN0aW9uYWwgcG9ydGlvbiBvZiBhCisgICAgICogbnVtYmVyLiAgPGNvZGU+bWluaW11bUZyYWN0aW9uRGlnaXRzPC9jb2RlPiBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0bworICAgICAqIDxjb2RlPm1heGltdW1GcmFjdGlvbkRpZ2l0czwvY29kZT4uCisgICAgICogPHA+CisgICAgICogPHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBUaGlzIGZpZWxkIGV4aXN0cyBvbmx5IGZvciBzZXJpYWxpemF0aW9uCisgICAgICogY29tcGF0aWJpbGl0eSB3aXRoIEpESyAxLjEuICBJbiBKREsgMS4yIGFuZCBoaWdoZXIsIHRoZSBuZXcKKyAgICAgKiA8Y29kZT5pbnQ8L2NvZGU+IGZpZWxkIDxjb2RlPm1pbmltdW1GcmFjdGlvbkRpZ2l0czwvY29kZT4gaXMgdXNlZCBpbnN0ZWFkLgorICAgICAqIFdoZW4gd3JpdGluZyB0byBhIHN0cmVhbSwgPGNvZGU+bWluRnJhY3Rpb25EaWdpdHM8L2NvZGU+IGlzIHNldCB0bworICAgICAqIDxjb2RlPm1pbmltdW1GcmFjdGlvbkRpZ2l0czwvY29kZT4gb3IgPGNvZGU+Qnl0ZS5NQVhfVkFMVUU8L2NvZGU+LAorICAgICAqIHdoaWNoZXZlciBpcyBzbWFsbGVyLiAgV2hlbiByZWFkaW5nIGZyb20gYSBzdHJlYW0sIHRoaXMgZmllbGQgaXMgdXNlZAorICAgICAqIG9ubHkgaWYgPGNvZGU+c2VyaWFsVmVyc2lvbk9uU3RyZWFtPC9jb2RlPiBpcyBsZXNzIHRoYW4gMS4gCisgICAgICoKKyAgICAgKiBAc2VyaWFsCisgICAgICogQHNlZSAjZ2V0TWluaW11bUZyYWN0aW9uRGlnaXRzCisgICAgICovCisgICAgcHJpdmF0ZSBieXRlICAgIG1pbkZyYWN0aW9uRGlnaXRzID0gMDsKKworICAgIC8qKgorICAgICAqIFRydWUgaWYgdGhpcyBmb3JtYXQgd2lsbCBwYXJzZSBudW1iZXJzIGFzIGludGVnZXJzIG9ubHkuCisgICAgICoKKyAgICAgKiBAc2VyaWFsCisgICAgICogQHNlZSAjaXNQYXJzZUludGVnZXJPbmx5CisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIHBhcnNlSW50ZWdlck9ubHkgPSBmYWxzZTsKKworICAgIC8vIG5ldyBmaWVsZHMgZm9yIDEuMi4gIGJ5dGUgaXMgdG9vIHNtYWxsIGZvciBpbnRlZ2VyIGRpZ2l0cy4KKworICAgIC8qKgorICAgICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBkaWdpdHMgYWxsb3dlZCBpbiB0aGUgaW50ZWdlciBwb3J0aW9uIG9mIGEKKyAgICAgKiBudW1iZXIuICA8Y29kZT5tYXhpbXVtSW50ZWdlckRpZ2l0czwvY29kZT4gbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8KKyAgICAgKiA8Y29kZT5taW5pbXVtSW50ZWdlckRpZ2l0czwvY29kZT4uCisgICAgICoKKyAgICAgKiBAc2VyaWFsCisgICAgICogQHNlZSAjZ2V0TWF4aW11bUludGVnZXJEaWdpdHMKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCAgICBtYXhpbXVtSW50ZWdlckRpZ2l0cyA9IDQwOworCisgICAgLyoqCisgICAgICogVGhlIG1pbmltdW0gbnVtYmVyIG9mIGRpZ2l0cyBhbGxvd2VkIGluIHRoZSBpbnRlZ2VyIHBvcnRpb24gb2YgYQorICAgICAqIG51bWJlci4gIDxjb2RlPm1pbmltdW1JbnRlZ2VyRGlnaXRzPC9jb2RlPiBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0bworICAgICAqIDxjb2RlPm1heGltdW1JbnRlZ2VyRGlnaXRzPC9jb2RlPi4KKyAgICAgKgorICAgICAqIEBzZXJpYWwKKyAgICAgKiBAc2VlICNnZXRNaW5pbXVtSW50ZWdlckRpZ2l0cworICAgICAqLworICAgIHByaXZhdGUgaW50ICAgIG1pbmltdW1JbnRlZ2VyRGlnaXRzID0gMTsKKworICAgIC8qKgorICAgICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBkaWdpdHMgYWxsb3dlZCBpbiB0aGUgZnJhY3Rpb25hbCBwb3J0aW9uIG9mIGEKKyAgICAgKiBudW1iZXIuICA8Y29kZT5tYXhpbXVtRnJhY3Rpb25EaWdpdHM8L2NvZGU+IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvCisgICAgICogPGNvZGU+bWluaW11bUZyYWN0aW9uRGlnaXRzPC9jb2RlPi4KKyAgICAgKgorICAgICAqIEBzZXJpYWwKKyAgICAgKiBAc2VlICNnZXRNYXhpbXVtRnJhY3Rpb25EaWdpdHMKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSAzOyAgICAvLyBpbnZhcmlhbnQsID49IG1pbkZyYWN0aW9uRGlnaXRzCisKKyAgICAvKioKKyAgICAgKiBUaGUgbWluaW11bSBudW1iZXIgb2YgZGlnaXRzIGFsbG93ZWQgaW4gdGhlIGZyYWN0aW9uYWwgcG9ydGlvbiBvZiBhCisgICAgICogbnVtYmVyLiAgPGNvZGU+bWluaW11bUZyYWN0aW9uRGlnaXRzPC9jb2RlPiBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0bworICAgICAqIDxjb2RlPm1heGltdW1GcmFjdGlvbkRpZ2l0czwvY29kZT4uCisgICAgICoKKyAgICAgKiBAc2VyaWFsCisgICAgICogQHNlZSAjZ2V0TWluaW11bUZyYWN0aW9uRGlnaXRzCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzID0gMDsKKworICAgIHN0YXRpYyBmaW5hbCBpbnQgY3VycmVudFNlcmlhbFZlcnNpb24gPSAxOworCisgICAgLyoqCisgICAgICogRGVzY3JpYmVzIHRoZSB2ZXJzaW9uIG9mIDxjb2RlPk51bWJlckZvcm1hdDwvY29kZT4gcHJlc2VudCBvbiB0aGUgc3RyZWFtLgorICAgICAqIFBvc3NpYmxlIHZhbHVlcyBhcmU6CisgICAgICogPHVsPgorICAgICAqIDxsaT48Yj4wPC9iPiAob3IgdW5pbml0aWFsaXplZCk6IHRoZSBKREsgMS4xIHZlcnNpb24gb2YgdGhlIHN0cmVhbSBmb3JtYXQuCisgICAgICogICAgIEluIHRoaXMgdmVyc2lvbiwgdGhlIDxjb2RlPmludDwvY29kZT4gZmllbGRzIHN1Y2ggYXMKKyAgICAgKiAgICAgPGNvZGU+bWF4aW11bUludGVnZXJEaWdpdHM8L2NvZGU+IHdlcmUgbm90IHByZXNlbnQsIGFuZCB0aGUgPGNvZGU+Ynl0ZTwvY29kZT4KKyAgICAgKiAgICAgZmllbGRzIHN1Y2ggYXMgPGNvZGU+bWF4SW50ZWdlckRpZ2l0czwvY29kZT4gYXJlIHVzZWQgaW5zdGVhZC4KKyAgICAgKgorICAgICAqIDxsaT48Yj4xPC9iPjogdGhlIEpESyAxLjIgdmVyc2lvbiBvZiB0aGUgc3RyZWFtIGZvcm1hdC4gIFRoZSB2YWx1ZXMgb2YgdGhlCisgICAgICogICAgIDxjb2RlPmJ5dGU8L2NvZGU+IGZpZWxkcyBzdWNoIGFzIDxjb2RlPm1heEludGVnZXJEaWdpdHM8L2NvZGU+IGFyZSBpZ25vcmVkLAorICAgICAqICAgICBhbmQgdGhlIDxjb2RlPmludDwvY29kZT4gZmllbGRzIHN1Y2ggYXMgPGNvZGU+bWF4aW11bUludGVnZXJEaWdpdHM8L2NvZGU+CisgICAgICogICAgIGFyZSB1c2VkIGluc3RlYWQuCisgICAgICogPC91bD4KKyAgICAgKiBXaGVuIHN0cmVhbWluZyBvdXQgYSA8Y29kZT5OdW1iZXJGb3JtYXQ8L2NvZGU+LCB0aGUgbW9zdCByZWNlbnQgZm9ybWF0CisgICAgICogKGNvcnJlc3BvbmRpbmcgdG8gdGhlIGhpZ2hlc3QgYWxsb3dhYmxlIDxjb2RlPnNlcmlhbFZlcnNpb25PblN0cmVhbTwvY29kZT4pCisgICAgICogaXMgYWx3YXlzIHdyaXR0ZW4uCisgICAgICoKKyAgICAgKiBAc2VyaWFsCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgc2VyaWFsVmVyc2lvbk9uU3RyZWFtID0gY3VycmVudFNlcmlhbFZlcnNpb247CisKKyAgICAvLyBSZW1vdmVkICJpbXBsZW1lbnRzIENsb25lYWJsZSIgY2xhdXNlLiAgTmVlZHMgdG8gdXBkYXRlIHNlcmlhbGl6YXRpb24KKyAgICAvLyBJRCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KKyAgICBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gLTIzMDg0NjAxMjU3MzM3MTM5NDRMOworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3RleHQvUXVhbnRpZmllci5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvUXVhbnRpZmllci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjU0YzExNWUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdGV4dC9RdWFudGlmaWVyLmphdmEKQEAgLTAsMCArMSwxMjEgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvdGV4dC9RdWFudGlmaWVyLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDYvMjggMTk6MTU6NTIgJCAKKyAqICRSZXZpc2lvbjogMS44ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS50ZXh0OworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuVXRpbGl0eTsKKworY2xhc3MgUXVhbnRpZmllciBpbXBsZW1lbnRzIFVuaWNvZGVNYXRjaGVyIHsKKworICAgIHByaXZhdGUgVW5pY29kZU1hdGNoZXIgbWF0Y2hlcjsKKworICAgIHByaXZhdGUgaW50IG1pbkNvdW50OworCisgICAgcHJpdmF0ZSBpbnQgbWF4Q291bnQ7CisKKyAgICAvKioKKyAgICAgKiBNYXhpbXVtIGNvdW50IGEgcXVhbnRpZmllciBjYW4gaGF2ZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNQVggPSBJbnRlZ2VyLk1BWF9WQUxVRTsKKworICAgIHB1YmxpYyBRdWFudGlmaWVyKFVuaWNvZGVNYXRjaGVyIHRoZU1hdGNoZXIsCisgICAgICAgICAgICAgICAgICAgICAgaW50IHRoZU1pbkNvdW50LCBpbnQgdGhlTWF4Q291bnQpIHsKKyAgICAgICAgaWYgKHRoZU1hdGNoZXIgPT0gbnVsbCB8fCBtaW5Db3VudCA8IDAgfHwgbWF4Q291bnQgPCAwIHx8IG1pbkNvdW50ID4gbWF4Q291bnQpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oKTsKKyAgICAgICAgfQorICAgICAgICBtYXRjaGVyID0gdGhlTWF0Y2hlcjsKKyAgICAgICAgbWluQ291bnQgPSB0aGVNaW5Db3VudDsKKyAgICAgICAgbWF4Q291bnQgPSB0aGVNYXhDb3VudDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbXBsZW1lbnQgVW5pY29kZU1hdGNoZXIgQVBJLgorICAgICAqLworICAgIHB1YmxpYyBpbnQgbWF0Y2hlcyhSZXBsYWNlYWJsZSB0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICBpbnRbXSBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBpbmNyZW1lbnRhbCkgeworICAgICAgICBpbnQgc3RhcnQgPSBvZmZzZXRbMF07CisgICAgICAgIGludCBjb3VudCA9IDA7CisgICAgICAgIHdoaWxlIChjb3VudCA8IG1heENvdW50KSB7CisgICAgICAgICAgICBpbnQgcG9zID0gb2Zmc2V0WzBdOworICAgICAgICAgICAgaW50IG0gPSBtYXRjaGVyLm1hdGNoZXModGV4dCwgb2Zmc2V0LCBsaW1pdCwgaW5jcmVtZW50YWwpOworICAgICAgICAgICAgaWYgKG0gPT0gVV9NQVRDSCkgeworICAgICAgICAgICAgICAgICsrY291bnQ7CisgICAgICAgICAgICAgICAgaWYgKHBvcyA9PSBvZmZzZXRbMF0pIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgb2Zmc2V0IGhhcyBub3QgbW92ZWQgd2UgaGF2ZSBhIHplcm8td2lkdGggbWF0Y2guCisgICAgICAgICAgICAgICAgICAgIC8vIERvbid0IGtlZXAgbWF0Y2hpbmcgaXQgaW5maW5pdGVseS4KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChpbmNyZW1lbnRhbCAmJiBtID09IFVfUEFSVElBTF9NQVRDSCkgeworICAgICAgICAgICAgICAgIHJldHVybiBVX1BBUlRJQUxfTUFUQ0g7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChpbmNyZW1lbnRhbCAmJiBvZmZzZXRbMF0gPT0gbGltaXQpIHsKKyAgICAgICAgICAgIHJldHVybiBVX1BBUlRJQUxfTUFUQ0g7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvdW50ID49IG1pbkNvdW50KSB7CisgICAgICAgICAgICByZXR1cm4gVV9NQVRDSDsKKyAgICAgICAgfQorICAgICAgICBvZmZzZXRbMF0gPSBzdGFydDsKKyAgICAgICAgcmV0dXJuIFVfTUlTTUFUQ0g7CisgICAgfQorCisgICAgLyoqCisgICAgICogSW1wbGVtZW50IFVuaWNvZGVNYXRjaGVyIEFQSQorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgdG9QYXR0ZXJuKGJvb2xlYW4gZXNjYXBlVW5wcmludGFibGUpIHsKKyAgICAgICAgU3RyaW5nQnVmZmVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChtYXRjaGVyLnRvUGF0dGVybihlc2NhcGVVbnByaW50YWJsZSkpOworICAgICAgICBpZiAobWluQ291bnQgPT0gMCkgeworICAgICAgICAgICAgaWYgKG1heENvdW50ID09IDEpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LmFwcGVuZCgnPycpLnRvU3RyaW5nKCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG1heENvdW50ID09IE1BWCkgeworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQuYXBwZW5kKCcqJykudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIGVsc2UgZmFsbCB0aHJvdWdoCisgICAgICAgIH0gZWxzZSBpZiAobWluQ291bnQgPT0gMSAmJiBtYXhDb3VudCA9PSBNQVgpIHsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQuYXBwZW5kKCcrJykudG9TdHJpbmcoKTsKKyAgICAgICAgfQorICAgICAgICByZXN1bHQuYXBwZW5kKCd7Jyk7CisgICAgICAgIFV0aWxpdHkuYXBwZW5kTnVtYmVyKHJlc3VsdCwgbWluQ291bnQpOworICAgICAgICByZXN1bHQuYXBwZW5kKCcsJyk7CisgICAgICAgIGlmIChtYXhDb3VudCAhPSBNQVgpIHsKKyAgICAgICAgICAgIFV0aWxpdHkuYXBwZW5kTnVtYmVyKHJlc3VsdCwgbWF4Q291bnQpOworICAgICAgICB9CisgICAgICAgIHJlc3VsdC5hcHBlbmQoJ30nKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEltcGxlbWVudCBVbmljb2RlTWF0Y2hlciBBUEkKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBtYXRjaGVzSW5kZXhWYWx1ZShpbnQgdikgeworICAgICAgICByZXR1cm4gKG1pbkNvdW50ID09IDApIHx8IG1hdGNoZXIubWF0Y2hlc0luZGV4VmFsdWUodik7CisgICAgfQorCisgICAgLyoqCisgICAgICogSW1wbGVtZW50YXRpb24gb2YgVW5pY29kZU1hdGNoZXIgQVBJLiAgVW5pb24gdGhlIHNldCBvZiBhbGwKKyAgICAgKiBjaGFyYWN0ZXJzIHRoYXQgbWF5IGJlIG1hdGNoZWQgYnkgdGhpcyBvYmplY3QgaW50byB0aGUgZ2l2ZW4KKyAgICAgKiBzZXQuCisgICAgICogQHBhcmFtIHRvVW5pb25UbyB0aGUgc2V0IGludG8gd2hpY2ggdG8gdW5pb24gdGhlIHNvdXJjZSBjaGFyYWN0ZXJzCisgICAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byB0b1VuaW9uVG8KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBhZGRNYXRjaFNldFRvKFVuaWNvZGVTZXQgdG9VbmlvblRvKSB7CisgICAgICAgIGlmIChtYXhDb3VudCA+IDApIHsKKyAgICAgICAgICAgIG1hdGNoZXIuYWRkTWF0Y2hTZXRUbyh0b1VuaW9uVG8pOworICAgICAgICB9CisgICAgfQorfQorCisvL2VvZgpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3RleHQvUmVtb3ZlVHJhbnNsaXRlcmF0b3IuamF2YSBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L1JlbW92ZVRyYW5zbGl0ZXJhdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uODI1Zjk5NgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L1JlbW92ZVRyYW5zbGl0ZXJhdG9yLmphdmEKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L3RleHQvUmVtb3ZlVHJhbnNsaXRlcmF0b3IuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNjoxMiAkIAorICogJFJldmlzaW9uOiAxLjYgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LnRleHQ7CitpbXBvcnQgamF2YS51dGlsLio7CisKKy8qKgorICogQSB0cmFuc2xpdGVyYXRvciB0aGF0IHJlbW92ZXMgY2hhcmFjdGVycy4gIFRoaXMgaXMgdXNlZnVsIGluIGNvbmp1bmN0aW9uCisgKiB3aXRoIGEgZmlsdGVyLgorICovCitjbGFzcyBSZW1vdmVUcmFuc2xpdGVyYXRvciBleHRlbmRzIFRyYW5zbGl0ZXJhdG9yIHsKKworICAgIC8qKgorICAgICAqIElEIGZvciB0aGlzIHRyYW5zbGl0ZXJhdG9yLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBfSUQgPSAiQW55LVJlbW92ZSI7CisKKyAgICAvKioKKyAgICAgKiBTeXN0ZW0gcmVnaXN0cmF0aW9uIGhvb2suCisgICAgICovCisgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXIoKSB7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yLnJlZ2lzdGVyRmFjdG9yeShfSUQsIG5ldyBUcmFuc2xpdGVyYXRvci5GYWN0b3J5KCkgeworICAgICAgICAgICAgcHVibGljIFRyYW5zbGl0ZXJhdG9yIGdldEluc3RhbmNlKFN0cmluZyBJRCkgeworICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVtb3ZlVHJhbnNsaXRlcmF0b3IoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yLnJlZ2lzdGVyU3BlY2lhbEludmVyc2UoIlJlbW92ZSIsICJOdWxsIiwgZmFsc2UpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSB0cmFuc2xpdGVyYXRvci4KKyAgICAgKi8KKyAgICBwdWJsaWMgUmVtb3ZlVHJhbnNsaXRlcmF0b3IoKSB7CisgICAgICAgIHN1cGVyKF9JRCwgbnVsbCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogSW1wbGVtZW50cyB7QGxpbmsgVHJhbnNsaXRlcmF0b3IjaGFuZGxlVHJhbnNsaXRlcmF0ZX0uCisgICAgICovCisgICAgcHJvdGVjdGVkIHZvaWQgaGFuZGxlVHJhbnNsaXRlcmF0ZShSZXBsYWNlYWJsZSB0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zaXRpb24gaW5kZXgsIGJvb2xlYW4gaW5jcmVtZW50YWwpIHsKKyAgICAgICAgLy8gT3VyIGNhbGxlciAoZmlsdGVyZWRUcmFuc2xpdGVyYXRlKSBoYXMgYWxyZWFkeSBuYXJyb3dlZCB1cworICAgICAgICAvLyB0byBhbiB1bmZpbHRlcmVkIHJ1bi4gIERlbGV0ZSBpdC4KKyAgICAgICAgdGV4dC5yZXBsYWNlKGluZGV4LnN0YXJ0LCBpbmRleC5saW1pdCwgIiIpOworICAgICAgICBpbnQgbGVuID0gaW5kZXgubGltaXQgLSBpbmRleC5zdGFydDsKKyAgICAgICAgaW5kZXguY29udGV4dExpbWl0IC09IGxlbjsKKyAgICAgICAgaW5kZXgubGltaXQgLT0gbGVuOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS90ZXh0L1JlcGxhY2VhYmxlLmphdmEgYi9zcmMvY29tL2libS9pY3UvdGV4dC9SZXBsYWNlYWJsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmVmOWVkNjQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdGV4dC9SZXBsYWNlYWJsZS5qYXZhCkBAIC0wLDAgKzEsMTkyIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvdGV4dC9SZXBsYWNlYWJsZS5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzEyLzA1IDAxOjIyOjAwICQgCisgKiAkUmV2aXNpb246IDEuMTEgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LnRleHQ7CisKKy8qKgorICogPGNvZGU+UmVwbGFjZWFibGU8L2NvZGU+IGlzIGFuIGludGVyZmFjZSByZXByZXNlbnRpbmcgYQorICogc3RyaW5nIG9mIGNoYXJhY3RlcnMgdGhhdCBzdXBwb3J0cyB0aGUgcmVwbGFjZW1lbnQgb2YgYSByYW5nZSBvZgorICogaXRzZWxmIHdpdGggYSBuZXcgc3RyaW5nIG9mIGNoYXJhY3RlcnMuICBJdCBpcyB1c2VkIGJ5IEFQSXMgdGhhdAorICogY2hhbmdlIGEgcGllY2Ugb2YgdGV4dCB3aGlsZSByZXRhaW5pbmcgbWV0YWRhdGEuICBNZXRhZGF0YSBpcyBkYXRhCisgKiBvdGhlciB0aGFuIHRoZSBVbmljb2RlIGNoYXJhY3RlcnMgcmV0dXJuZWQgYnkgY2hhcjMyQXQoKS4gIE9uZQorICogZXhhbXBsZSBvZiBtZXRhZGF0YSBpcyBzdHlsZSBhdHRyaWJ1dGVzOyBhbm90aGVyIGlzIGFuIGVkaXQKKyAqIGhpc3RvcnksIG1hcmtpbmcgZWFjaCBjaGFyYWN0ZXIgd2l0aCBhbiBhdXRob3IgYW5kIHJldmlzaW9uIG51bWJlci4KKyAqCisgKiA8cD5BbiBpbXBsaWNpdCBhc3BlY3Qgb2YgdGhlIDxjb2RlPlJlcGxhY2VhYmxlPC9jb2RlPiBBUEkgaXMgdGhhdAorICogZHVyaW5nIGEgcmVwbGFjZSBvcGVyYXRpb24sIG5ldyBjaGFyYWN0ZXJzIHRha2Ugb24gdGhlIG1ldGFkYXRhIG9mCisgKiB0aGUgb2xkIGNoYXJhY3RlcnMuICBGb3IgZXhhbXBsZSwgaWYgdGhlIHN0cmluZyAidGhlIDxiPmJvbGQ8L2I+CisgKiBmb250IiBoYXMgcmFuZ2UgKDQsIDgpIHJlcGxhY2VkIHdpdGggInN0cm9uZyIsIHRoZW4gaXQgYmVjb21lcyAidGhlCisgKiA8Yj5zdHJvbmc8L2I+IGZvbnQiLgorICoKKyAqIDxwPjxjb2RlPlJlcGxhY2VhYmxlPC9jb2RlPiBzcGVjaWZpZXMgcmFuZ2VzIHVzaW5nIGEgc3RhcnQKKyAqIG9mZnNldCBhbmQgYSBsaW1pdCBvZmZzZXQuICBUaGUgcmFuZ2Ugb2YgY2hhcmFjdGVycyB0aHVzIHNwZWNpZmllZAorICogaW5jbHVkZXMgdGhlIGNoYXJhY3RlcnMgYXQgb2Zmc2V0IHN0YXJ0Li5saW1pdC0xLiAgVGhhdCBpcywgdGhlCisgKiBzdGFydCBvZmZzZXQgaXMgaW5jbHVzaXZlLCBhbmQgdGhlIGxpbWl0IG9mZnNldCBpcyBleGNsdXNpdmUuCisgKgorICogPHA+PGNvZGU+UmVwbGFjZWFibGU8L2NvZGU+IGFsc28gaW5jbHVkZXMgQVBJIHRvIGFjY2VzcyBjaGFyYWN0ZXJzCisgKiBpbiB0aGUgc3RyaW5nOiA8Y29kZT5sZW5ndGgoKTwvY29kZT4sIDxjb2RlPmNoYXJBdCgpPC9jb2RlPiwKKyAqIDxjb2RlPmNoYXIzMkF0KCk8L2NvZGU+LCBhbmQgPGNvZGU+ZXh0cmFjdEJldHdlZW4oKTwvY29kZT4uCisgKgorICogPHA+Rm9yIGEgc3ViY2xhc3MgdG8gc3VwcG9ydCBtZXRhZGF0YSwgdHlwaWNhbCBiZWhhdmlvciBvZgorICogPGNvZGU+cmVwbGFjZSgpPC9jb2RlPiBpcyB0aGUgZm9sbG93aW5nOgorICogPHVsPgorICogICA8bGk+U2V0IHRoZSBtZXRhZGF0YSBvZiB0aGUgbmV3IHRleHQgdG8gdGhlIG1ldGFkYXRhIG9mIHRoZSBmaXJzdAorICogICBjaGFyYWN0ZXIgcmVwbGFjZWQ8L2xpPgorICogICA8bGk+SWYgbm8gY2hhcmFjdGVycyBhcmUgcmVwbGFjZWQsIHVzZSB0aGUgbWV0YWRhdGEgb2YgdGhlCisgKiAgIHByZXZpb3VzIGNoYXJhY3RlcjwvbGk+CisgKiAgIDxsaT5JZiB0aGVyZSBpcyBubyBwcmV2aW91cyBjaGFyYWN0ZXIgKGkuZS4gc3RhcnQgPT0gMCksIHVzZSB0aGUKKyAqICAgZm9sbG93aW5nIGNoYXJhY3RlcjwvbGk+CisgKiAgIDxsaT5JZiB0aGVyZSBpcyBubyBmb2xsb3dpbmcgY2hhcmFjdGVyIChpLmUuIHRoZSByZXBsYWNlYWJsZSB3YXMKKyAqICAgZW1wdHkpLCB1c2UgZGVmYXVsdCBtZXRhZGF0YTxicj4KKyAqICAgPGxpPklmIHRoZSBjb2RlIHBvaW50IFUrRkZGRiBpcyBzZWVuLCBpdCBzaG91bGQgYmUgaW50ZXJwcmV0ZWQgYXMKKyAqICAgYSBzcGVjaWFsIG1hcmtlciBoYXZpbmcgbm8gbWV0YWRhdGE8bGk+CisgKiAgIDwvbGk+CisgKiA8L3VsPgorICogSWYgdGhpcyBpcyBub3QgdGhlIGJlaGF2aW9yLCB0aGUgc3ViY2xhc3Mgc2hvdWxkIGRvY3VtZW50IGFueSBkaWZmZXJlbmNlcy4KKyAqIAorICogPHA+Q29weXJpZ2h0ICZjb3B5OyBJQk0gQ29ycG9yYXRpb24gMTk5OS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogQGF1dGhvciBBbGFuIExpdQorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK3B1YmxpYyBpbnRlcmZhY2UgUmVwbGFjZWFibGUgeworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiAxNi1iaXQgY29kZSB1bml0cyBpbiB0aGUgdGV4dC4KKyAgICAgKiBAcmV0dXJuIG51bWJlciBvZiAxNi1iaXQgY29kZSB1bml0cyBpbiB0ZXh0CisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovIAorICAgIGludCBsZW5ndGgoKTsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIDE2LWJpdCBjb2RlIHVuaXQgYXQgdGhlIGdpdmVuIG9mZnNldCBpbnRvIHRoZSB0ZXh0LgorICAgICAqIEBwYXJhbSBvZmZzZXQgYW4gaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDxjb2RlPmxlbmd0aCgpPC9jb2RlPi0xCisgICAgICogaW5jbHVzaXZlCisgICAgICogQHJldHVybiAxNi1iaXQgY29kZSB1bml0IG9mIHRleHQgYXQgZ2l2ZW4gb2Zmc2V0CisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgY2hhciBjaGFyQXQoaW50IG9mZnNldCk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSAzMi1iaXQgY29kZSBwb2ludCBhdCB0aGUgZ2l2ZW4gMTYtYml0IG9mZnNldCBpbnRvCisgICAgICogdGhlIHRleHQuICBUaGlzIGFzc3VtZXMgdGhlIHRleHQgaXMgc3RvcmVkIGFzIDE2LWJpdCBjb2RlIHVuaXRzCisgICAgICogd2l0aCBzdXJyb2dhdGUgcGFpcnMgaW50ZXJtaXhlZC4gIElmIHRoZSBvZmZzZXQgb2YgYSBsZWFkaW5nIG9yCisgICAgICogdHJhaWxpbmcgY29kZSB1bml0IG9mIGEgc3Vycm9nYXRlIHBhaXIgaXMgZ2l2ZW4sIHJldHVybiB0aGUKKyAgICAgKiBjb2RlIHBvaW50IG9mIHRoZSBzdXJyb2dhdGUgcGFpci4KKyAgICAgKgorICAgICAqIDxwPk1vc3Qgc3ViY2xhc3NlcyBjYW4gcmV0dXJuCisgICAgICogPGNvZGU+Y29tLmlibS5pY3UudGV4dC5VVEYxNi5jaGFyQXQodGhpcywgb2Zmc2V0KTwvY29kZT4uCisgICAgICogQHBhcmFtIG9mZnNldCBhbiBpbnRlZ2VyIGJldHdlZW4gMCBhbmQgPGNvZGU+bGVuZ3RoKCk8L2NvZGU+LTEKKyAgICAgKiBpbmNsdXNpdmUKKyAgICAgKiBAcmV0dXJuIDMyLWJpdCBjb2RlIHBvaW50IG9mIHRleHQgYXQgZ2l2ZW4gb2Zmc2V0CisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgaW50IGNoYXIzMkF0KGludCBvZmZzZXQpOworCisgICAgLyoqCisgICAgICogQ29waWVzIGNoYXJhY3RlcnMgZnJvbSB0aGlzIG9iamVjdCBpbnRvIHRoZSBkZXN0aW5hdGlvbgorICAgICAqIGNoYXJhY3RlciBhcnJheS4gIFRoZSBmaXJzdCBjaGFyYWN0ZXIgdG8gYmUgY29waWVkIGlzIGF0IGluZGV4CisgICAgICogPGNvZGU+c3JjU3RhcnQ8L2NvZGU+OyB0aGUgbGFzdCBjaGFyYWN0ZXIgdG8gYmUgY29waWVkIGlzIGF0CisgICAgICogaW5kZXggPGNvZGU+c3JjTGltaXQtMTwvY29kZT4gKHRodXMgdGhlIHRvdGFsIG51bWJlciBvZgorICAgICAqIGNoYXJhY3RlcnMgdG8gYmUgY29waWVkIGlzIDxjb2RlPnNyY0xpbWl0LXNyY1N0YXJ0PC9jb2RlPikuIFRoZQorICAgICAqIGNoYXJhY3RlcnMgYXJlIGNvcGllZCBpbnRvIHRoZSBzdWJhcnJheSBvZiA8Y29kZT5kc3Q8L2NvZGU+CisgICAgICogc3RhcnRpbmcgYXQgaW5kZXggPGNvZGU+ZHN0U3RhcnQ8L2NvZGU+IGFuZCBlbmRpbmcgYXQgaW5kZXgKKyAgICAgKiA8Y29kZT5kc3RTdGFydCArIChzcmNMaW1pdC1zcmNTdGFydCkgLSAxPC9jb2RlPi4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzcmNTdGFydCB0aGUgYmVnaW5uaW5nIGluZGV4IHRvIGNvcHksIGluY2x1c2l2ZTsgPGNvZGU+MAorICAgICAqIDw9IHN0YXJ0IDw9IGxpbWl0PC9jb2RlPi4KKyAgICAgKiBAcGFyYW0gc3JjTGltaXQgdGhlIGVuZGluZyBpbmRleCB0byBjb3B5LCBleGNsdXNpdmU7CisgICAgICogPGNvZGU+c3RhcnQgPD0gbGltaXQgPD0gbGVuZ3RoKCk8L2NvZGU+LgorICAgICAqIEBwYXJhbSBkc3QgdGhlIGRlc3RpbmF0aW9uIGFycmF5LgorICAgICAqIEBwYXJhbSBkc3RTdGFydCB0aGUgc3RhcnQgb2Zmc2V0IGluIHRoZSBkZXN0aW5hdGlvbiBhcnJheS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICB2b2lkIGdldENoYXJzKGludCBzcmNTdGFydCwgaW50IHNyY0xpbWl0LCBjaGFyIGRzdFtdLCBpbnQgZHN0U3RhcnQpOworCisgICAgLyoqCisgICAgICogUmVwbGFjZXMgYSBzdWJzdHJpbmcgb2YgdGhpcyBvYmplY3Qgd2l0aCB0aGUgZ2l2ZW4gdGV4dC4KKyAgICAgKgorICAgICAqIDxwPlN1YmNsYXNzZXMgbXVzdCBlbnN1cmUgdGhhdCBpZiB0aGUgdGV4dCBiZXR3ZWVuIHN0YXJ0IGFuZAorICAgICAqIGxpbWl0IGlzIGVxdWFsIHRvIHRoZSByZXBsYWNlbWVudCB0ZXh0LCB0aGF0IHJlcGxhY2UgaGFzIG5vCisgICAgICogZWZmZWN0LiBUaGF0IGlzLCBhbnkgbWV0YWRhdGEKKyAgICAgKiBzaG91bGQgYmUgdW5hZmZlY3RlZC4gSW4gYWRkaXRpb24sIHN1YmNsYXNzZXMgYXJlIGVuY291cmFnZWQgdG8KKyAgICAgKiBjaGVjayBmb3IgaW5pdGlhbCBhbmQgdHJhaWxpbmcgaWRlbnRpY2FsIGNoYXJhY3RlcnMsIGFuZCBtYWtlIGEKKyAgICAgKiBzbWFsbGVyIHJlcGxhY2VtZW50IGlmIHBvc3NpYmxlLiBUaGlzIHdpbGwgcHJlc2VydmUgYXMgbXVjaAorICAgICAqIG1ldGFkYXRhIGFzIHBvc3NpYmxlLgorICAgICAqIEBwYXJhbSBzdGFydCB0aGUgYmVnaW5uaW5nIGluZGV4LCBpbmNsdXNpdmU7IDxjb2RlPjAgPD0gc3RhcnQKKyAgICAgKiA8PSBsaW1pdDwvY29kZT4uCisgICAgICogQHBhcmFtIGxpbWl0IHRoZSBlbmRpbmcgaW5kZXgsIGV4Y2x1c2l2ZTsgPGNvZGU+c3RhcnQgPD0gbGltaXQKKyAgICAgKiA8PSBsZW5ndGgoKTwvY29kZT4uCisgICAgICogQHBhcmFtIHRleHQgdGhlIHRleHQgdG8gcmVwbGFjZSBjaGFyYWN0ZXJzIDxjb2RlPnN0YXJ0PC9jb2RlPgorICAgICAqIHRvIDxjb2RlPmxpbWl0IC0gMTwvY29kZT4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICB2b2lkIHJlcGxhY2UoaW50IHN0YXJ0LCBpbnQgbGltaXQsIFN0cmluZyB0ZXh0KTsKKworICAgIC8qKgorICAgICAqIFJlcGxhY2VzIGEgc3Vic3RyaW5nIG9mIHRoaXMgb2JqZWN0IHdpdGggdGhlIGdpdmVuIHRleHQuCisgICAgICoKKyAgICAgKiA8cD5TdWJjbGFzc2VzIG11c3QgZW5zdXJlIHRoYXQgaWYgdGhlIHRleHQgYmV0d2VlbiBzdGFydCBhbmQKKyAgICAgKiBsaW1pdCBpcyBlcXVhbCB0byB0aGUgcmVwbGFjZW1lbnQgdGV4dCwgdGhhdCByZXBsYWNlIGhhcyBubworICAgICAqIGVmZmVjdC4gVGhhdCBpcywgYW55IG1ldGFkYXRhCisgICAgICogc2hvdWxkIGJlIHVuYWZmZWN0ZWQuIEluIGFkZGl0aW9uLCBzdWJjbGFzc2VzIGFyZSBlbmNvdXJhZ2VkIHRvCisgICAgICogY2hlY2sgZm9yIGluaXRpYWwgYW5kIHRyYWlsaW5nIGlkZW50aWNhbCBjaGFyYWN0ZXJzLCBhbmQgbWFrZSBhCisgICAgICogc21hbGxlciByZXBsYWNlbWVudCBpZiBwb3NzaWJsZS4gVGhpcyB3aWxsIHByZXNlcnZlIGFzIG11Y2gKKyAgICAgKiBtZXRhZGF0YSBhcyBwb3NzaWJsZS4KKyAgICAgKiBAcGFyYW0gc3RhcnQgdGhlIGJlZ2lubmluZyBpbmRleCwgaW5jbHVzaXZlOyA8Y29kZT4wIDw9IHN0YXJ0CisgICAgICogPD0gbGltaXQ8L2NvZGU+LgorICAgICAqIEBwYXJhbSBsaW1pdCB0aGUgZW5kaW5nIGluZGV4LCBleGNsdXNpdmU7IDxjb2RlPnN0YXJ0IDw9IGxpbWl0CisgICAgICogPD0gbGVuZ3RoKCk8L2NvZGU+LgorICAgICAqIEBwYXJhbSBjaGFycyB0aGUgdGV4dCB0byByZXBsYWNlIGNoYXJhY3RlcnMgPGNvZGU+c3RhcnQ8L2NvZGU+CisgICAgICogdG8gPGNvZGU+bGltaXQgLSAxPC9jb2RlPgorICAgICAqIEBwYXJhbSBjaGFyc1N0YXJ0IHRoZSBiZWdpbm5pbmcgaW5kZXggaW50byA8Y29kZT5jaGFyczwvY29kZT4sCisgICAgICogaW5jbHVzaXZlOyA8Y29kZT4wIDw9IHN0YXJ0IDw9IGxpbWl0PC9jb2RlPi4KKyAgICAgKiBAcGFyYW0gY2hhcnNMZW4gdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIG9mIDxjb2RlPmNoYXJzPC9jb2RlPi4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICB2b2lkIHJlcGxhY2UoaW50IHN0YXJ0LCBpbnQgbGltaXQsIGNoYXJbXSBjaGFycywKKyAgICAgICAgICAgICAgICAgaW50IGNoYXJzU3RhcnQsIGludCBjaGFyc0xlbik7CisgICAgLy8gTm90ZTogV2UgdXNlIGxlbmd0aCByYXRoZXIgdGhhbiBsaW1pdCB0byBjb25mb3JtIHRvIFN0cmluZ0J1ZmZlcgorICAgIC8vIGFuZCBTeXN0ZW0uYXJyYXljb3B5LgorCisgICAgLyoqCisgICAgICogQ29waWVzIGEgc3Vic3RyaW5nIG9mIHRoaXMgb2JqZWN0LCByZXRhaW5pbmcgbWV0YWRhdGEuCisgICAgICogVGhpcyBtZXRob2QgaXMgdXNlZCB0byBkdXBsaWNhdGUgb3IgcmVvcmRlciBzdWJzdHJpbmdzLgorICAgICAqIFRoZSBkZXN0aW5hdGlvbiBpbmRleCBtdXN0IG5vdCBvdmVybGFwIHRoZSBzb3VyY2UgcmFuZ2UuCisgICAgICogSWYgPGNvZGU+aGFzTWV0YURhdGEoKTwvY29kZT4gcmV0dXJucyBmYWxzZSwgc3ViY2xhc3NlcworICAgICAqIG1heSB1c2UgdGhlIG5haXZlIGltcGxlbWVudGF0aW9uOgorICAgICAqCisgICAgICogPHByZT4gY2hhcltdIHRleHQgPSBuZXcgY2hhcltsaW1pdCAtIHN0YXJ0XTsKKyAgICAgKiBnZXRDaGFycyhzdGFydCwgbGltaXQsIHRleHQsIDApOworICAgICAqIHJlcGxhY2UoZGVzdCwgZGVzdCwgdGV4dCwgMCwgbGltaXQgLSBzdGFydCk7PC9wcmU+CisgICAgICogCisgICAgICogQHBhcmFtIHN0YXJ0IHRoZSBiZWdpbm5pbmcgaW5kZXgsIGluY2x1c2l2ZTsgPGNvZGU+MCA8PSBzdGFydCA8PQorICAgICAqIGxpbWl0PC9jb2RlPi4KKyAgICAgKiBAcGFyYW0gbGltaXQgdGhlIGVuZGluZyBpbmRleCwgZXhjbHVzaXZlOyA8Y29kZT5zdGFydCA8PSBsaW1pdCA8PQorICAgICAqIGxlbmd0aCgpPC9jb2RlPi4KKyAgICAgKiBAcGFyYW0gZGVzdCB0aGUgZGVzdGluYXRpb24gaW5kZXguICBUaGUgY2hhcmFjdGVycyBmcm9tCisgICAgICogPGNvZGU+c3RhcnQuLmxpbWl0LTE8L2NvZGU+IHdpbGwgYmUgY29waWVkIHRvIDxjb2RlPmRlc3Q8L2NvZGU+LgorICAgICAqIEltcGxlbWVudGF0aW9ucyBvZiB0aGlzIG1ldGhvZCBtYXkgYXNzdW1lIHRoYXQgPGNvZGU+ZGVzdCA8PSBzdGFydCB8fAorICAgICAqIGRlc3QgPj0gbGltaXQ8L2NvZGU+LgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHZvaWQgY29weShpbnQgc3RhcnQsIGludCBsaW1pdCwgaW50IGRlc3QpOworICAgIAorICAgIC8qKgorICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGlzIG9iamVjdCBjb250YWlucyBtZXRhZGF0YS4gIElmIGEKKyAgICAgKiBSZXBsYWNlYWJsZSBvYmplY3QgaGFzIG1ldGFkYXRhLCBjYWxscyB0byB0aGUgUmVwbGFjZWFibGUgQVBJCisgICAgICogbXVzdCBiZSBtYWRlIHNvIGFzIHRvIHByZXNlcnZlIG1ldGFkYXRhLiAgSWYgaXQgZG9lcyBub3QsIGNhbGxzCisgICAgICogdG8gdGhlIFJlcGxhY2VhYmxlIEFQSSBtYXkgYmUgb3B0aW1pemVkIHRvIGltcHJvdmUgcGVyZm9ybWFuY2UuCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoaXMgb2JqZWN0IGNvbnRhaW5zIG1ldGFkYXRhCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBib29sZWFuIGhhc01ldGFEYXRhKCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvdGV4dC9SZXBsYWNlYWJsZVN0cmluZy5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvUmVwbGFjZWFibGVTdHJpbmcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi40Y2ZiMWI0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvUmVwbGFjZWFibGVTdHJpbmcuamF2YQpAQCAtMCwwICsxLDIwNiBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L3RleHQvUmVwbGFjZWFibGVTdHJpbmcuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8xMi8wNSAwMToyMjowNCAkIAorICogJFJldmlzaW9uOiAxLjEzICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS50ZXh0OworCitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5VdGlsaXR5OworCisvKioKKyAqIDxjb2RlPlJlcGxhY2VhYmxlU3RyaW5nPC9jb2RlPiBpcyBhbiBhZGFwdGVyIGNsYXNzIHRoYXQgaW1wbGVtZW50cyB0aGUKKyAqIDxjb2RlPlJlcGxhY2VhYmxlPC9jb2RlPiBBUEkgYXJvdW5kIGFuIG9yZGluYXJ5IDxjb2RlPlN0cmluZ0J1ZmZlcjwvY29kZT4uCisgKgorICogPHA+PGVtPk5vdGU6PC9lbT4gVGhpcyBjbGFzcyBkb2VzIG5vdCBzdXBwb3J0IGF0dHJpYnV0ZXMgYW5kIGlzIG5vdAorICogaW50ZW5kZWQgZm9yIGdlbmVyYWwgdXNlLiAgTW9zdCBjbGllbnRzIHdpbGwgbmVlZCB0byBpbXBsZW1lbnQKKyAqIHtAbGluayBSZXBsYWNlYWJsZX0gaW4gdGhlaXIgdGV4dCByZXByZXNlbnRhdGlvbiBjbGFzcy4KKyAqCisgKiA8cD5Db3B5cmlnaHQgJmNvcHk7IElCTSBDb3Jwb3JhdGlvbiAxOTk5LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBAc2VlIFJlcGxhY2VhYmxlCisgKiBAYXV0aG9yIEFsYW4gTGl1CisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworcHVibGljIGNsYXNzIFJlcGxhY2VhYmxlU3RyaW5nIGltcGxlbWVudHMgUmVwbGFjZWFibGUgeworICAgIHByaXZhdGUgU3RyaW5nQnVmZmVyIGJ1ZjsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAiXHUwMEE5IElCTSBDb3Jwb3JhdGlvbiAxOTk5LiBBbGwgcmlnaHRzIHJlc2VydmVkLiI7CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgYSBuZXcgb2JqZWN0IHdpdGggdGhlIGdpdmVuIGluaXRpYWwgY29udGVudHMuCisgICAgICogQHBhcmFtIHN0ciBpbml0aWFsIGNvbnRlbnRzCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIFJlcGxhY2VhYmxlU3RyaW5nKFN0cmluZyBzdHIpIHsKKyAgICAgICAgYnVmID0gbmV3IFN0cmluZ0J1ZmZlcihzdHIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdCBhIG5ldyBvYmplY3QgdXNpbmcgPGNvZGU+YnVmPC9jb2RlPiBmb3IgaW50ZXJuYWwKKyAgICAgKiBzdG9yYWdlLiAgVGhlIGNvbnRlbnRzIG9mIDxjb2RlPmJ1ZjwvY29kZT4gYXQgdGhlIHRpbWUgb2YKKyAgICAgKiBjb25zdHJ1Y3Rpb24gYXJlIHVzZWQgYXMgdGhlIGluaXRpYWwgY29udGVudHMuICA8ZW0+Tm90ZSEKKyAgICAgKiBNb2RpZmljYXRpb25zIHRvIDxjb2RlPmJ1ZjwvY29kZT4gd2lsbCBtb2RpZnkgdGhpcyBvYmplY3QsIGFuZAorICAgICAqIHZpY2UgdmVyc2EuPC9lbT4KKyAgICAgKiBAcGFyYW0gYnVmIG9iamVjdCB0byBiZSB1c2VkIGFzIGludGVybmFsIHN0b3JhZ2UKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgUmVwbGFjZWFibGVTdHJpbmcoU3RyaW5nQnVmZmVyIGJ1ZikgeworICAgICAgICB0aGlzLmJ1ZiA9IGJ1ZjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgYSBuZXcgZW1wdHkgb2JqZWN0LgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBSZXBsYWNlYWJsZVN0cmluZygpIHsKKyAgICAgICAgYnVmID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgY29udGVudHMgb2YgdGhpcyBvYmplY3QgYXMgYSA8Y29kZT5TdHJpbmc8L2NvZGU+LgorICAgICAqIEByZXR1cm4gc3RyaW5nIGNvbnRlbnRzIG9mIHRoaXMgb2JqZWN0CisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgcmV0dXJuIGJ1Zi50b1N0cmluZygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhIHN1YnN0cmluZyBvZiB0aGUgZ2l2ZW4gc3RyaW5nLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgc3Vic3RyaW5nKGludCBzdGFydCwgaW50IGxpbWl0KSB7CisgICAgICAgIHJldHVybiBidWYuc3Vic3RyaW5nKHN0YXJ0LCBsaW1pdCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBjb250YWluZWQgaW4gdGhpcyBvYmplY3QuCisgICAgICogPGNvZGU+UmVwbGFjZWFibGU8L2NvZGU+IEFQSS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8gCisgICAgcHVibGljIGludCBsZW5ndGgoKSB7CisgICAgICAgIHJldHVybiBidWYubGVuZ3RoKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBjaGFyYWN0ZXIgYXQgdGhlIGdpdmVuIHBvc2l0aW9uIGluIHRoaXMgb2JqZWN0LgorICAgICAqIDxjb2RlPlJlcGxhY2VhYmxlPC9jb2RlPiBBUEkuCisgICAgICogQHBhcmFtIG9mZnNldCBvZmZzZXQgaW50byB0aGUgY29udGVudHMsIGZyb20gMCB0bworICAgICAqIDxjb2RlPmxlbmd0aCgpPC9jb2RlPiAtIDEKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgY2hhciBjaGFyQXQoaW50IG9mZnNldCkgeworICAgICAgICByZXR1cm4gYnVmLmNoYXJBdChvZmZzZXQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgMzItYml0IGNvZGUgcG9pbnQgYXQgdGhlIGdpdmVuIDE2LWJpdCBvZmZzZXQgaW50bworICAgICAqIHRoZSB0ZXh0LiAgVGhpcyBhc3N1bWVzIHRoZSB0ZXh0IGlzIHN0b3JlZCBhcyAxNi1iaXQgY29kZSB1bml0cworICAgICAqIHdpdGggc3Vycm9nYXRlIHBhaXJzIGludGVybWl4ZWQuICBJZiB0aGUgb2Zmc2V0IG9mIGEgbGVhZGluZyBvcgorICAgICAqIHRyYWlsaW5nIGNvZGUgdW5pdCBvZiBhIHN1cnJvZ2F0ZSBwYWlyIGlzIGdpdmVuLCByZXR1cm4gdGhlCisgICAgICogY29kZSBwb2ludCBvZiB0aGUgc3Vycm9nYXRlIHBhaXIuCisgICAgICogQHBhcmFtIG9mZnNldCBhbiBpbnRlZ2VyIGJldHdlZW4gMCBhbmQgPGNvZGU+bGVuZ3RoKCk8L2NvZGU+LTEKKyAgICAgKiBpbmNsdXNpdmUKKyAgICAgKiBAcmV0dXJuIDMyLWJpdCBjb2RlIHBvaW50IG9mIHRleHQgYXQgZ2l2ZW4gb2Zmc2V0CisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGludCBjaGFyMzJBdChpbnQgb2Zmc2V0KSB7CisgICAgICAgIHJldHVybiBVVEYxNi5jaGFyQXQoYnVmLCBvZmZzZXQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvcGllcyBjaGFyYWN0ZXJzIGZyb20gdGhpcyBvYmplY3QgaW50byB0aGUgZGVzdGluYXRpb24KKyAgICAgKiBjaGFyYWN0ZXIgYXJyYXkuICBUaGUgZmlyc3QgY2hhcmFjdGVyIHRvIGJlIGNvcGllZCBpcyBhdCBpbmRleAorICAgICAqIDxjb2RlPnNyY1N0YXJ0PC9jb2RlPjsgdGhlIGxhc3QgY2hhcmFjdGVyIHRvIGJlIGNvcGllZCBpcyBhdAorICAgICAqIGluZGV4IDxjb2RlPnNyY0xpbWl0LTE8L2NvZGU+ICh0aHVzIHRoZSB0b3RhbCBudW1iZXIgb2YKKyAgICAgKiBjaGFyYWN0ZXJzIHRvIGJlIGNvcGllZCBpcyA8Y29kZT5zcmNMaW1pdC1zcmNTdGFydDwvY29kZT4pLiBUaGUKKyAgICAgKiBjaGFyYWN0ZXJzIGFyZSBjb3BpZWQgaW50byB0aGUgc3ViYXJyYXkgb2YgPGNvZGU+ZHN0PC9jb2RlPgorICAgICAqIHN0YXJ0aW5nIGF0IGluZGV4IDxjb2RlPmRzdFN0YXJ0PC9jb2RlPiBhbmQgZW5kaW5nIGF0IGluZGV4CisgICAgICogPGNvZGU+ZHN0U3RhcnQgKyAoc3JjTGltaXQtc3JjU3RhcnQpIC0gMTwvY29kZT4uCisgICAgICoKKyAgICAgKiBAcGFyYW0gc3JjU3RhcnQgdGhlIGJlZ2lubmluZyBpbmRleCB0byBjb3B5LCBpbmNsdXNpdmU7IDxjb2RlPjAKKyAgICAgKiA8PSBzdGFydCA8PSBsaW1pdDwvY29kZT4uCisgICAgICogQHBhcmFtIHNyY0xpbWl0IHRoZSBlbmRpbmcgaW5kZXggdG8gY29weSwgZXhjbHVzaXZlOworICAgICAqIDxjb2RlPnN0YXJ0IDw9IGxpbWl0IDw9IGxlbmd0aCgpPC9jb2RlPi4KKyAgICAgKiBAcGFyYW0gZHN0IHRoZSBkZXN0aW5hdGlvbiBhcnJheS4KKyAgICAgKiBAcGFyYW0gZHN0U3RhcnQgdGhlIHN0YXJ0IG9mZnNldCBpbiB0aGUgZGVzdGluYXRpb24gYXJyYXkuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHZvaWQgZ2V0Q2hhcnMoaW50IHNyY1N0YXJ0LCBpbnQgc3JjTGltaXQsIGNoYXIgZHN0W10sIGludCBkc3RTdGFydCkgeworICAgICAgICBVdGlsaXR5LmdldENoYXJzKGJ1Ziwgc3JjU3RhcnQsIHNyY0xpbWl0LCBkc3QsIGRzdFN0YXJ0KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXBsYWNlIHplcm8gb3IgbW9yZSBjaGFyYWN0ZXJzIHdpdGggbmV3IGNoYXJhY3RlcnMuCisgICAgICogPGNvZGU+UmVwbGFjZWFibGU8L2NvZGU+IEFQSS4KKyAgICAgKiBAcGFyYW0gc3RhcnQgdGhlIGJlZ2lubmluZyBpbmRleCwgaW5jbHVzaXZlOyA8Y29kZT4wIDw9IHN0YXJ0CisgICAgICogPD0gbGltaXQ8L2NvZGU+LgorICAgICAqIEBwYXJhbSBsaW1pdCB0aGUgZW5kaW5nIGluZGV4LCBleGNsdXNpdmU7IDxjb2RlPnN0YXJ0IDw9IGxpbWl0CisgICAgICogPD0gbGVuZ3RoKCk8L2NvZGU+LgorICAgICAqIEBwYXJhbSB0ZXh0IG5ldyB0ZXh0IHRvIHJlcGxhY2UgY2hhcmFjdGVycyA8Y29kZT5zdGFydDwvY29kZT4gdG8KKyAgICAgKiA8Y29kZT5saW1pdCAtIDE8L2NvZGU+CisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHZvaWQgcmVwbGFjZShpbnQgc3RhcnQsIGludCBsaW1pdCwgU3RyaW5nIHRleHQpIHsKKyAgICAgICAgYnVmLnJlcGxhY2Uoc3RhcnQsIGxpbWl0LCB0ZXh0KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXBsYWNlIGEgc3Vic3RyaW5nIG9mIHRoaXMgb2JqZWN0IHdpdGggdGhlIGdpdmVuIHRleHQuCisgICAgICogQHBhcmFtIHN0YXJ0IHRoZSBiZWdpbm5pbmcgaW5kZXgsIGluY2x1c2l2ZTsgPGNvZGU+MCA8PSBzdGFydAorICAgICAqIDw9IGxpbWl0PC9jb2RlPi4KKyAgICAgKiBAcGFyYW0gbGltaXQgdGhlIGVuZGluZyBpbmRleCwgZXhjbHVzaXZlOyA8Y29kZT5zdGFydCA8PSBsaW1pdAorICAgICAqIDw9IGxlbmd0aCgpPC9jb2RlPi4KKyAgICAgKiBAcGFyYW0gY2hhcnMgdGhlIHRleHQgdG8gcmVwbGFjZSBjaGFyYWN0ZXJzIDxjb2RlPnN0YXJ0PC9jb2RlPgorICAgICAqIHRvIDxjb2RlPmxpbWl0IC0gMTwvY29kZT4KKyAgICAgKiBAcGFyYW0gY2hhcnNTdGFydCB0aGUgYmVnaW5uaW5nIGluZGV4IGludG8gPGNvZGU+Y2hhcnM8L2NvZGU+LAorICAgICAqIGluY2x1c2l2ZTsgPGNvZGU+MCA8PSBzdGFydCA8PSBsaW1pdDwvY29kZT4uCisgICAgICogQHBhcmFtIGNoYXJzTGVuIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBvZiA8Y29kZT5jaGFyczwvY29kZT4uCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHZvaWQgcmVwbGFjZShpbnQgc3RhcnQsIGludCBsaW1pdCwgY2hhcltdIGNoYXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNoYXJzU3RhcnQsIGludCBjaGFyc0xlbikgeworICAgICAgICBidWYuZGVsZXRlKHN0YXJ0LCBsaW1pdCk7CisgICAgICAgIGJ1Zi5pbnNlcnQoc3RhcnQsIGNoYXJzLCBjaGFyc1N0YXJ0LCBjaGFyc0xlbik7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29weSBhIHN1YnN0cmluZyBvZiB0aGlzIG9iamVjdCwgcmV0YWluaW5nIGF0dHJpYnV0ZSAob3V0LW9mLWJhbmQpCisgICAgICogaW5mb3JtYXRpb24uICBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGR1cGxpY2F0ZSBvciByZW9yZGVyIHN1YnN0cmluZ3MuCisgICAgICogVGhlIGRlc3RpbmF0aW9uIGluZGV4IG11c3Qgbm90IG92ZXJsYXAgdGhlIHNvdXJjZSByYW5nZS4KKyAgICAgKiAKKyAgICAgKiBAcGFyYW0gc3RhcnQgdGhlIGJlZ2lubmluZyBpbmRleCwgaW5jbHVzaXZlOyA8Y29kZT4wIDw9IHN0YXJ0IDw9CisgICAgICogbGltaXQ8L2NvZGU+LgorICAgICAqIEBwYXJhbSBsaW1pdCB0aGUgZW5kaW5nIGluZGV4LCBleGNsdXNpdmU7IDxjb2RlPnN0YXJ0IDw9IGxpbWl0IDw9CisgICAgICogbGVuZ3RoKCk8L2NvZGU+LgorICAgICAqIEBwYXJhbSBkZXN0IHRoZSBkZXN0aW5hdGlvbiBpbmRleC4gIFRoZSBjaGFyYWN0ZXJzIGZyb20KKyAgICAgKiA8Y29kZT5zdGFydC4ubGltaXQtMTwvY29kZT4gd2lsbCBiZSBjb3BpZWQgdG8gPGNvZGU+ZGVzdDwvY29kZT4uCisgICAgICogSW1wbGVtZW50YXRpb25zIG9mIHRoaXMgbWV0aG9kIG1heSBhc3N1bWUgdGhhdCA8Y29kZT5kZXN0IDw9IHN0YXJ0IHx8CisgICAgICogZGVzdCA+PSBsaW1pdDwvY29kZT4uCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHZvaWQgY29weShpbnQgc3RhcnQsIGludCBsaW1pdCwgaW50IGRlc3QpIHsKKyAgICAgICAgaWYgKHN0YXJ0ID09IGxpbWl0ICYmIHN0YXJ0ID49IDAgJiYgc3RhcnQgPD0gYnVmLmxlbmd0aCgpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgY2hhcltdIHRleHQgPSBuZXcgY2hhcltsaW1pdCAtIHN0YXJ0XTsKKyAgICAgICAgZ2V0Q2hhcnMoc3RhcnQsIGxpbWl0LCB0ZXh0LCAwKTsKKyAgICAgICAgcmVwbGFjZShkZXN0LCBkZXN0LCB0ZXh0LCAwLCBsaW1pdCAtIHN0YXJ0KTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogSW1wbGVtZW50cyBSZXBsYWNlYWJsZQorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGhhc01ldGFEYXRhKCkgeworICAgIAlyZXR1cm4gZmFsc2U7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3RleHQvUnVsZUJhc2VkQnJlYWtJdGVyYXRvci5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvUnVsZUJhc2VkQnJlYWtJdGVyYXRvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmFjNWIzMmMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdGV4dC9SdWxlQmFzZWRCcmVha0l0ZXJhdG9yLmphdmEKQEAgLTAsMCArMSwzMTkyIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvdGV4dC9SdWxlQmFzZWRCcmVha0l0ZXJhdG9yLmphdmEsdiAkCisgKiAkRGF0ZTogMjAwMi8xMi8wNSAwMToyMjoxMSAkCisgKiAkUmV2aXNpb246IDEuMjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKKworLyoKKyAqIEAoIylSdWxlQmFzZWRCcmVha0l0ZXJhdG9yLmphdmEJMS4zIDk5LzA0LzA3CisgKgorICovCisKK3BhY2thZ2UgY29tLmlibS5pY3UudGV4dDsKKworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuQ29tcGFjdEJ5dGVBcnJheTsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLlV0aWxpdHk7CitpbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKK2ltcG9ydCBqYXZhLnV0aWwuU3RhY2s7CitpbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKK2ltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247CitpbXBvcnQgamF2YS50ZXh0LkNoYXJhY3Rlckl0ZXJhdG9yOworaW1wb3J0IGphdmEudGV4dC5TdHJpbmdDaGFyYWN0ZXJJdGVyYXRvcjsKKworaW1wb3J0IGphdmEuaW8uKjsKKworLyoqCisgKiA8cD5BIHN1YmNsYXNzIG9mIEJyZWFrSXRlcmF0b3Igd2hvc2UgYmVoYXZpb3IgaXMgc3BlY2lmaWVkIHVzaW5nIGEgbGlzdCBvZiBydWxlcy48L3A+CisgKgorICogPHA+VGhlcmUgYXJlIHR3byBraW5kcyBvZiBydWxlcywgd2hpY2ggYXJlIHNlcGFyYXRlZCBieSBzZW1pY29sb25zOiA8aT5zdWJzdGl0dXRpb25zPC9pPgorICogYW5kIDxpPnJlZ3VsYXIgZXhwcmVzc2lvbnMuPC9pPjwvcD4KKyAqCisgKiA8cD5BIHN1YnN0aXR1dGlvbiBydWxlIGRlZmluZXMgYSBuYW1lIHRoYXQgY2FuIGJlIHVzZWQgaW4gcGxhY2Ugb2YgYW4gZXhwcmVzc2lvbi4gSXQKKyAqIGNvbnNpc3RzIG9mIGEgbmFtZSwgYW4gZXF1YWxzIHNpZ24sIGFuZCBhbiBleHByZXNzaW9uLiAoVGhlcmUgY2FuIGJlIG5vIHdoaXRlc3BhY2Ugb24KKyAqIGVpdGhlciBzaWRlIG9mIHRoZSBlcXVhbHMgc2lnbi4pICBUbyBrZWVwIGl0cyBzeW50YWN0aWMgbWVhbmluZyBpbnRhY3QsIHRoZSBleHByZXNzaW9uCisgKiBtdXN0IGJlIGVuY2xvc2VkIGluIHBhcmVudGhlc2VzIG9yIHNxdWFyZSBicmFja2V0cy4gQSBzdWJzdGl0dXRpb24gaXMgdmlzaWJsZSBhZnRlciBpdHMKKyAqIGRlZmluaXRpb24sIGFuZCBpcyBmaWxsZWQgaW4gdXNpbmcgc2ltcGxlIHRleHR1YWwgc3Vic3RpdHV0aW9uICh3aGVuIGEgc3Vic3RpdHV0aW9uIGlzCisgKiB1c2VkLCBpdHMgbmFtZSBpcyBlbmNsb3NlZCBpbiBjdXJseSBicmFjZXMuICBUaGUgY3VybHkgYnJhY2VzIGFyZSBvcHRpb25hbCBpbiB0aGUKKyAqIHN1YnN0aXRpb24ncyBkZWZpbml0aW9uKS4gU3Vic3RpdHV0aW9uIGRlZmluaXRpb25zIGNhbiBjb250YWluIG90aGVyIHN1YnN0aXR1dGlvbnMsIGFzCisgKiBsb25nIGFzIHRob3NlIHN1YnN0aXR1dGlvbnMgaGF2ZSBiZWVuIGRlZmluZWQgZmlyc3QuIFN1YnN0aXR1dGlvbnMgYXJlIGdlbmVyYWxseSB1c2VkIHRvCisgKiBtYWtlIHRoZSByZWd1bGFyIGV4cHJlc3Npb25zICh3aGljaCBjYW4gZ2V0IHF1aXRlIGNvbXBsZXgpIHNob3J0ZXIgYW5kIGVhc2llciB0byByZWFkLgorICogVGhleSB0eXBpY2FsbHkgZGVmaW5lIGVpdGhlciBjaGFyYWN0ZXIgY2F0ZWdvcmllcyBvciBjb21tb25seS11c2VkIHN1YmV4cHJlc3Npb25zLjwvcD4KKyAqCisgKiA8cD5UaGVyZSBpcyBvbmUgc3BlY2lhbCBzdWJzdGl0dXRpb24uJm5ic3A7IElmIHRoZSBkZXNjcmlwdGlvbiBkZWZpbmVzIGEgc3Vic3RpdHV0aW9uCisgKiBjYWxsZWQgJnF1b3Q7X2lnbm9yZV8mcXVvdDssIHRoZSBleHByZXNzaW9uIG11c3QgYmUgYSBbXSBleHByZXNzaW9uLCBhbmQgdGhlCisgKiBleHByZXNzaW9uIGRlZmluZXMgYSBzZXQgb2YgY2hhcmFjdGVycyAodGhlICZxdW90OzxlbT5pZ25vcmUgY2hhcmFjdGVyczwvZW0+JnF1b3Q7KSB0aGF0CisgKiB3aWxsIGJlIHRyYW5zcGFyZW50IHRvIHRoZSBCcmVha0l0ZXJhdG9yLiZuYnNwOyBBIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgd2lsbCBicmVhayB0aGUKKyAqIHNhbWUgd2F5IGl0IHdvdWxkIGlmIGFueSBpZ25vcmUgY2hhcmFjdGVycyBpdCBjb250YWlucyBhcmUgdGFrZW4gb3V0LiZuYnNwOyBCcmVhaworICogcG9zaXRpb25zIG5ldmVyIG9jY3VyIGJlZm9yZSBpZ25vcmUgY2hhcmFjdGVycywgZXhjZXB0IHdoZW4gdGhlIGNoYXJhY3RlciBiZWZvcmUgdGhlCisgKiBpZ25vcmUgY2hhcmFjdGVycyBpcyBhIGxpbmUgb3IgcGFyYWdyYXBoIHRlcm1pbmF0b3IuPC9wPgorICoKKyAqIDxwPkEgcmVndWxhciBleHByZXNzaW9uIHVzZXMgYSBzeW50YXggc2ltaWxhciB0byB0aGUgbm9ybWFsIFVuaXggcmVndWxhci1leHByZXNzaW9uCisgKiBzeW50YXgsIGFuZCBkZWZpbmVzIGEgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyB0byBiZSBrZXB0IHRvZ2V0aGVyLiBXaXRoIG9uZSBzaWduaWZpY2FudAorICogZXhjZXB0aW9uLCB0aGUgaXRlcmF0b3IgdXNlcyBhIGxvbmdlc3QtcG9zc2libGUtbWF0Y2ggYWxnb3JpdGhtIHdoZW4gbWF0Y2hpbmcgdGV4dCB0byByZWd1bGFyCisgKiBleHByZXNzaW9ucy4gVGhlIGl0ZXJhdG9yIGFsc28gdHJlYXRzIGRlc2NyaXB0aW9ucyBjb250YWluaW5nIG11bHRpcGxlIHJlZ3VsYXIgZXhwcmVzc2lvbnMKKyAqIGFzIGlmIHRoZXkgd2VyZSBPUmVkIHRvZ2V0aGVyIChpLmUuLCBhcyBpZiB0aGV5IHdlcmUgc2VwYXJhdGVkIGJ5IHwpLjwvcD4KKyAqCisgKiA8cD5UaGUgc3BlY2lhbCBjaGFyYWN0ZXJzIHJlY29nbml6ZWQgYnkgdGhlIHJlZ3VsYXItZXhwcmVzc2lvbiBwYXJzZXIgYXJlIGFzIGZvbGxvd3M6PC9wPgorICoKKyAqIDxibG9ja3F1b3RlPgorICogICA8dGFibGUgYm9yZGVyPSIxIiB3aWR0aD0iMTAwJSI+CisgKiAgICAgPHRyPgorICogICAgICAgPHRkIHdpZHRoPSI2JSI+KjwvdGQ+CisgKiAgICAgICA8dGQgd2lkdGg9Ijk0JSI+U3BlY2lmaWVzIHRoYXQgdGhlIGV4cHJlc3Npb24gcHJlY2VkaW5nIHRoZSBhc3RlcmlzayBtYXkgb2NjdXIgYW55IG51bWJlcgorICogICAgICAgb2YgdGltZXMgKGluY2x1ZGluZyBub3QgYXQgYWxsKS48L3RkPgorICogICAgIDwvdHI+CisgKiAgICAgPHRyPgorICogICAgICAgPHRkIHdpZHRoPSI2JSI+KzwvdGQ+CisgKiAgICAgICA8dGQgd2lkdGg9Ijk0JSI+U3BlY2lmaWVzIHRoYXQgdGhlIGV4cHJlc3Npb24gcHJlY2VkaW5nIHRoZSBhc3RlcmlzayBtYXkgb2NjdXIgb25lIG9yCisgKiAgICAgICBtb3JlIHRpbWVzLCBidXQgbXVzdCBvY2N1ciBhdCBsZWFzdCBvbmNlLjwvdGQ+CisgKiAgICAgPC90cj4KKyAqICAgICA8dHI+CisgKiAgICAgICA8dGQgd2lkdGg9IjYlIj4/PC90ZD4KKyAqICAgICAgIDx0ZCB3aWR0aD0iOTQlIj5TcGVjaWZpZXMgdGhhdCB0aGUgZXhwcmVzc2lvbiBwcmVjZWRpbmcgdGhlIGFzdGVyaXNrIG1heSBvY2N1ciBvbmNlCisgKiAgICAgICBvciBub3QgYXQgYWxsIChpLmUuLCBpdCBtYWtlcyB0aGUgcHJlY2VkaW5nIGV4cHJlc3Npb24gb3B0aW9uYWwpLjwvdGQ+CisgKiAgICAgPC90cj4KKyAqICAgICA8dHI+CisgKiAgICAgICA8dGQgd2lkdGg9IjYlIj4oKTwvdGQ+CisgKiAgICAgICA8dGQgd2lkdGg9Ijk0JSI+RW5jbG9zZXMgYSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzLiAgSWYgZm9sbG93ZWQgYnkgKiBvciArLCB0aGUKKyAqICAgICAgIHNlcXVlbmNlIHJlcGVhdHMuICBJZiBmb2xsb3dlZCBieSA/LCB0aGUgc2VxdWVuY2UgaXMgb3B0aW9uYWwuICBPdGhlcndpc2UsIHRoZQorICogICAgICAgcGFyZW50aGVzZXMgYXJlIGp1c3QgYSBncm91cGluZyBkZXZpY2UgYW5kIGEgd2F5IHRvIGRlbGltaXQgdGhlIGVuZHMgb2YgZXhwcmVzc2lvbnMKKyAqICAgICAgIGNvbnRhaW5pbmcgfC48L3RkPgorICogICAgIDwvdHI+CisgKiAgICAgPHRyPgorICogICAgICAgPHRkIHdpZHRoPSI2JSI+fDwvdGQ+CisgKiAgICAgICA8dGQgd2lkdGg9Ijk0JSI+U2VwYXJhdGVzIHR3byBhbHRlcm5hdGl2ZSBzZXF1ZW5jZXMgb2YgY2hhcmFjdGVycy4mbmJzcDsgRWl0aGVyIG9uZQorICogICAgICAgc2VxdWVuY2Ugb3IgdGhlIG90aGVyLCBidXQgbm90IGJvdGgsIG1hdGNoZXMgdGhpcyBleHByZXNzaW9uLiZuYnNwOyBUaGUgfCBjaGFyYWN0ZXIgY2FuCisgKiAgICAgICBvbmx5IG9jY3VyIGluc2lkZSAoKS48L3RkPgorICogICAgIDwvdHI+CisgKiAgICAgPHRyPgorICogICAgICAgPHRkIHdpZHRoPSI2JSI+LjwvdGQ+CisgKiAgICAgICA8dGQgd2lkdGg9Ijk0JSI+TWF0Y2hlcyBhbnkgY2hhcmFjdGVyLjwvdGQ+CisgKiAgICAgPC90cj4KKyAqICAgICA8dHI+CisgKiAgICAgICA8dGQgd2lkdGg9IjYlIj4qPzwvdGQ+CisgKiAgICAgICA8dGQgd2lkdGg9Ijk0JSI+U3BlY2lmaWVzIGEgbm9uLWdyZWVkeSBhc3Rlcmlzay4mbmJzcDsgKj8gd29ya3MgdGhlIHNhbWUgd2F5IGFzICosIGV4Y2VwdAorICogICAgICAgd2hlbiB0aGVyZSBpcyBvdmVybGFwIGJldHdlZW4gdGhlIGxhc3QgZ3JvdXAgb2YgY2hhcmFjdGVycyBpbiB0aGUgZXhwcmVzc2lvbiBwcmVjZWRpbmcgdGhlCisgKiAgICAgICAqIGFuZCB0aGUgZmlyc3QgZ3JvdXAgb2YgY2hhcmFjdGVycyBmb2xsb3dpbmcgdGhlICouJm5ic3A7IFdoZW4gdGhlcmUgaXMgdGhpcyBraW5kIG9mCisgKiAgICAgICBvdmVybGFwLCAqIHdpbGwgbWF0Y2ggdGhlIGxvbmdlc3Qgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyB0aGF0IG1hdGNoIHRoZSBleHByZXNzaW9uIGJlZm9yZQorICogICAgICAgdGhlICosIGFuZCAqPyB3aWxsIG1hdGNoIHRoZSBzaG9ydGVzdCBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIG1hdGNoaW5nIHRoZSBleHByZXNzaW9uCisgKiAgICAgICBiZWZvcmUgdGhlICo/LiZuYnNwOyBGb3IgZXhhbXBsZSwgaWYgeW91IGhhdmUgJnF1b3Q7eHh5eHl5eXh5eHl4eHl4eXh5eSZxdW90OyBpbiB0aGUgdGV4dCwKKyAqICAgICAgICZxdW90O3hbeHldKngmcXVvdDsgd2lsbCBtYXRjaCB0aHJvdWdoIHRvIHRoZSBsYXN0IHggKGkuZS4sICZxdW90OzxzdHJvbmc+eHh5eHl5eXh5eHl4eHl4eXg8L3N0cm9uZz55eSZxdW90OywKKyAqICAgICAgIGJ1dCAmcXVvdDt4W3h5XSo/eCZxdW90OyB3aWxsIG9ubHkgbWF0Y2ggdGhlIGZpcnN0IHR3byB4ZXMgKCZxdW90OzxzdHJvbmc+eHg8L3N0cm9uZz55eHl5eXh5eHl4eHl4eXh5eSZxdW90OykuPC90ZD4KKyAqICAgICA8L3RyPgorICogICAgIDx0cj4KKyAqICAgICAgIDx0ZCB3aWR0aD0iNiUiPltdPC90ZD4KKyAqICAgICAgIDx0ZCB3aWR0aD0iOTQlIj5TcGVjaWZpZXMgYSBncm91cCBvZiBhbHRlcm5hdGl2ZSBjaGFyYWN0ZXJzLiZuYnNwOyBBIFtdIGV4cHJlc3Npb24gd2lsbAorICogICAgICAgbWF0Y2ggYW55IHNpbmdsZSBjaGFyYWN0ZXIgdGhhdCBpcyBzcGVjaWZpZWQgaW4gdGhlIFtdIGV4cHJlc3Npb24uJm5ic3A7IEZvciBtb3JlIG9uIHRoZQorICogICAgICAgc3ludGF4IG9mIFtdIGV4cHJlc3Npb25zLCBzZWUgYmVsb3cuPC90ZD4KKyAqICAgICA8L3RyPgorICogICAgIDx0cj4KKyAqICAgICAgIDx0ZCB3aWR0aD0iNiUiPi88L3RkPgorICogICAgICAgPHRkIHdpZHRoPSI5NCUiPlNwZWNpZmllcyB3aGVyZSB0aGUgYnJlYWsgcG9zaXRpb24gc2hvdWxkIGdvIGlmIHRleHQgbWF0Y2hlcyB0aGlzCisgKiAgICAgICBleHByZXNzaW9uLiZuYnNwOyAoZS5nLiwgJnF1b3Q7W2Etel0mIzQyOy9bOlpzOl0qWzEtMF0mcXVvdDsgd2lsbCBtYXRjaCBpZiB0aGUgaXRlcmF0b3Igc2VlcyBhIHJ1bgorICogICAgICAgb2YgbGV0dGVycywgZm9sbG93ZWQgYnkgYSBydW4gb2Ygd2hpdGVzcGFjZSwgZm9sbG93ZWQgYnkgYSBkaWdpdCwgYnV0IHRoZSBicmVhayBwb3NpdGlvbgorICogICAgICAgd2lsbCBhY3R1YWxseSBnbyBiZWZvcmUgdGhlIHdoaXRlc3BhY2UpLiZuYnNwOyBFeHByZXNzaW9ucyB0aGF0IGRvbid0IGNvbnRhaW4gLyBwdXQgdGhlCisgKiAgICAgICBicmVhayBwb3NpdGlvbiBhdCB0aGUgZW5kIG9mIHRoZSBtYXRjaGluZyB0ZXh0LjwvdGQ+CisgKiAgICAgPC90cj4KKyAqICAgICA8dHI+CisgKiAgICAgICA8dGQgd2lkdGg9IjYlIj5cPC90ZD4KKyAqICAgICAgIDx0ZCB3aWR0aD0iOTQlIj5Fc2NhcGUgY2hhcmFjdGVyLiZuYnNwOyBUaGUgXCBpdHNlbGYgaXMgaWdub3JlZCwgYnV0IGNhdXNlcyB0aGUgbmV4dAorICogICAgICAgY2hhcmFjdGVyIHRvIGJlIHRyZWF0ZWQgYXMgbGl0ZXJhbCBjaGFyYWN0ZXIuJm5ic3A7IFRoaXMgaGFzIG5vIGVmZmVjdCBmb3IgbWFueQorICogICAgICAgY2hhcmFjdGVycywgYnV0IGZvciB0aGUgY2hhcmFjdGVycyBsaXN0ZWQgYWJvdmUsIHRoaXMgZGVwcml2ZXMgdGhlbSBvZiB0aGVpciBzcGVjaWFsCisgKiAgICAgICBtZWFuaW5nLiZuYnNwOyAoVGhlcmUgYXJlIG5vIHNwZWNpYWwgZXNjYXBlIHNlcXVlbmNlcyBmb3IgVW5pY29kZSBjaGFyYWN0ZXJzLCBvciB0YWJzIGFuZAorICogICAgICAgbmV3bGluZXM7IHRoZXNlIGFyZSBhbGwgaGFuZGxlZCBieSBhIGhpZ2hlci1sZXZlbCBwcm90b2NvbC4mbmJzcDsgSW4gYSBKYXZhIHN0cmluZywKKyAqICAgICAgICZxdW90O1xuJnF1b3Q7IHdpbGwgYmUgY29udmVydGVkIHRvIGEgbGl0ZXJhbCBuZXdsaW5lIGNoYXJhY3RlciBieSB0aGUgdGltZSB0aGUKKyAqICAgICAgIHJlZ3VsYXItZXhwcmVzc2lvbiBwYXJzZXIgc2VlcyBpdC4mbmJzcDsgT2YgY291cnNlLCB0aGlzIG1lYW5zIHRoYXQgXCBzZXF1ZW5jZXMgdGhhdCBhcmUKKyAqICAgICAgIHZpc2libGUgdG8gdGhlIHJlZ2V4cCBwYXJzZXIgbXVzdCBiZSB3cml0dGVuIGFzIFxcIHdoZW4gaW5zaWRlIGEgSmF2YSBzdHJpbmcuKSZuYnNwOyBBbGwKKyAqICAgICAgIGNoYXJhY3RlcnMgaW4gdGhlIEFTQ0lJIHJhbmdlIGV4Y2VwdCBmb3IgbGV0dGVycywgZGlnaXRzLCBhbmQgY29udHJvbCBjaGFyYWN0ZXJzIGFyZQorICogICAgICAgcmVzZXJ2ZWQgY2hhcmFjdGVycyB0byB0aGUgcGFyc2VyIGFuZCBtdXN0IGJlIHByZWNlZGVkIGJ5IFwgZXZlbiBpZiB0aGV5IGN1cnJlbnRseSBkb24ndAorICogICAgICAgbWVhbiBhbnl0aGluZy48L3RkPgorICogICAgIDwvdHI+CisgKiAgICAgPHRyPgorICogICAgICAgPHRkIHdpZHRoPSI2JSI+ITwvdGQ+CisgKiAgICAgICA8dGQgd2lkdGg9Ijk0JSI+SWYgISBhcHBlYXJzIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSByZWd1bGFyIGV4cHJlc3Npb24sIGl0IHRlbGxzIHRoZSByZWdleHAKKyAqICAgICAgIHBhcnNlciB0aGF0IHRoaXMgZXhwcmVzc2lvbiBzcGVjaWZpZXMgdGhlIGJhY2t3YXJkcy1pdGVyYXRpb24gYmVoYXZpb3Igb2YgdGhlIGl0ZXJhdG9yLAorICogICAgICAgYW5kIG5vdCBpdHMgbm9ybWFsIGl0ZXJhdGlvbiBiZWhhdmlvci4mbmJzcDsgVGhpcyBpcyBnZW5lcmFsbHkgb25seSB1c2VkIGluIHNpdHVhdGlvbnMKKyAqICAgICAgIHdoZXJlIHRoZSBhdXRvbWF0aWNhbGx5LWdlbmVyYXRlZCBiYWNrd2FyZHMtaXRlcmF0aW9uIGJlaGF2aW9yIGRvZXNuJ3QgcHJvZHVjZQorICogICAgICAgc2F0aXNmYWN0b3J5IHJlc3VsdHMgYW5kIG11c3QgYmUgc3VwcGxlbWVudGVkIHdpdGggZXh0cmEgY2xpZW50LXNwZWNpZmllZCBydWxlcy48L3RkPgorICogICAgIDwvdHI+CisgKiAgICAgPHRyPgorICogICAgICAgPHRkIHdpZHRoPSI2JSI+PGVtPihhbGwgb3RoZXJzKTwvZW0+PC90ZD4KKyAqICAgICAgIDx0ZCB3aWR0aD0iOTQlIj5BbGwgb3RoZXIgY2hhcmFjdGVycyBhcmUgdHJlYXRlZCBhcyBsaXRlcmFsIGNoYXJhY3RlcnMsIHdoaWNoIG11c3QgbWF0Y2gKKyAqICAgICAgIHRoZSBjb3JyZXNwb25kaW5nIGNoYXJhY3RlcihzKSBpbiB0aGUgdGV4dCBleGFjdGx5LjwvdGQ+CisgKiAgICAgPC90cj4KKyAqICAgPC90YWJsZT4KKyAqIDwvYmxvY2txdW90ZT4KKyAqCisgKiA8cD5XaXRoaW4gYSBbXSBleHByZXNzaW9uLCBhIG51bWJlciBvZiBvdGhlciBzcGVjaWFsIGNoYXJhY3RlcnMgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeQorICogZ3JvdXBzIG9mIGNoYXJhY3RlcnM6PC9wPgorICoKKyAqIDxibG9ja3F1b3RlPgorICogICA8dGFibGUgYm9yZGVyPSIxIiB3aWR0aD0iMTAwJSI+CisgKiAgICAgPHRyPgorICogICAgICAgPHRkIHdpZHRoPSI2JSI+LTwvdGQ+CisgKiAgICAgICA8dGQgd2lkdGg9Ijk0JSI+U3BlY2lmaWVzIGEgcmFuZ2Ugb2YgbWF0Y2hpbmcgY2hhcmFjdGVycy4mbmJzcDsgRm9yIGV4YW1wbGUKKyAqICAgICAgICZxdW90O1thLXBdJnF1b3Q7IG1hdGNoZXMgYWxsIGxvd2VyY2FzZSBMYXRpbiBsZXR0ZXJzIGZyb20gYSB0byBwIChpbmNsdXNpdmUpLiZuYnNwOyBUaGUgLQorICogICAgICAgc2lnbiBzcGVjaWZpZXMgcmFuZ2VzIG9mIGNvbnRpbnVvdXMgVW5pY29kZSBudW1lcmljIHZhbHVlcywgbm90IHJhbmdlcyBvZiBjaGFyYWN0ZXJzIGluIGEKKyAqICAgICAgIGxhbmd1YWdlJ3MgYWxwaGFiZXRpY2FsIG9yZGVyOiAmcXVvdDtbYS16XSZxdW90OyBkb2Vzbid0IGluY2x1ZGUgY2FwaXRhbCBsZXR0ZXJzLCBub3IgZG9lcworICogICAgICAgaXQgaW5jbHVkZSBhY2NlbnRlZCBsZXR0ZXJzIHN1Y2ggYXMgYS11bWxhdXQuPC90ZD4KKyAqICAgICA8L3RyPgorICogICAgIDx0cj4KKyAqICAgICAgIDx0ZCB3aWR0aD0iNiUiPl48L3RkPgorICogICAgICAgPHRkIHdpZHRoPSI5NCUiPkludmVydHMgdGhlIGV4cHJlc3Npb24uICBBbGwgY2hhcmFjdGVycyB0aGUgZXhwcmVzc2lvbiBpbmNsdWRlcyBhcmUKKyAqICAgICAgIGV4Y2x1ZGVkLCBhbmQgdmljZSB2ZXJzYS4gIChpLmUuLCBpdCBoYXMgdGhlIGVmZmVjdCBvZiBzYXlpbmcgImFsbCBVbmljb2RlIGNoYXJhY3RlcnMKKyAqICAgICAgIGV4Y2VwdC4uLiIpICBUaGlzIGNoYXJhY3RlciBvbmx5IGhhcyBpdHMgc3BlY2lhbCBtZWFuaW5nIHdoZW4gaXQncyB0aGUgZmlyc3QgY2hhcmFjdGVyCisgKiAgICAgICBpbiB0aGUgW10gZXhwcmVzc2lvbi4gIChHZW5lcmFsbHksIHlvdSBvbmx5IHNlZSB0aGUgXiBjaGFyYWN0ZXIgaW5zaWRlIGEgbmVzdGVkIFtdCisgKiAgICAgICBleHByZXNzaW9uIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgc3ludGF4IGJlbG93Lik8L3RkPgorICogICAgIDwvdHI+CisgKiAgICAgPHRyPgorICogICAgICAgPHRkIHdpZHRoPSI2JSI+PGVtPihhbGwgb3RoZXJzKTwvZW0+PC90ZD4KKyAqICAgICAgIDx0ZCB3aWR0aD0iOTQlIj5BbGwgb3RoZXIgY2hhcmFjdGVycyBhcmUgdHJlYXRlZCBhcyBsaXRlcmFsIGNoYXJhY3RlcnMuJm5ic3A7IChGb3IKKyAqICAgICAgIGV4YW1wbGUsICZxdW90O1thZWlvdV0mcXVvdDsgc3BlY2lmaWVzIGp1c3QgdGhlIGxldHRlcnMgYSwgZSwgaSwgbywgYW5kIHUuKTwvdGQ+CisgKiAgICAgPC90cj4KKyAqICAgPC90YWJsZT4KKyAqIDwvYmxvY2txdW90ZT4KKyAqCisgKiA8cD5bXSBleHByZXNzaW9ucyBjYW4gbmVzdC4gIFRoZXJlIGFyZSBzb21lIG90aGVyIGNoYXJhY3RlcnMgdGhhdCBoYXZlIHNwZWNpYWwgbWVhbmluZyBvbmx5CisgKiB3aGVuIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBuZXN0ZXIgW10gZXhwcmVzc2lvbnM6PC9wPgorICoKKyAqIDxibG9ja3F1b3RlPgorICogICA8dGFibGUgYm9yZGVyPSIxIiB3aWR0aD0iMTAwJSI+CisgKiAgICAgPHRyPgorICogICAgICAgPHRkIHdpZHRoPSI2JSI+Ojo8L3RkPgorICogICAgICAgPHRkIHdpZHRoPSI5NCUiPldpdGhpbiBhIG5lc3RlZCBbXSBleHByZXNzaW9uLCBhIHBhaXIgb2YgY29sb25zIGNvbnRhaW5pbmcgYSBvbmUtIG9yCisgKiAgICAgICB0d28tbGV0dGVyIGNvZGUgbWF0Y2hlcyBhbGwgY2hhcmFjdGVycyBpbiB0aGUgY29ycmVzcG9uZGluZyBVbmljb2RlIGNhdGVnb3J5LiZuYnNwOworICogICAgICAgVGhlIDo6IGV4cHJlc3Npb24gaGFzIHRvIGJlIHRoZSBvbmx5IHRoaW5nIGluc2lkZSB0aGUgW10gZXhwcmVzc2lvbi4gVGhlIHR3by1sZXR0ZXIgY29kZXMKKyAqICAgICAgIGFyZSB0aGUgc2FtZSBhcyB0aGUgdHdvLWxldHRlciBjb2RlcyBpbiB0aGUgVW5pY29kZSBkYXRhYmFzZSAoZm9yIGV4YW1wbGUsCisgKiAgICAgICAmcXVvdDtbWzpTYzpdWzpTbTpdXSZxdW90OyBtYXRjaGVzIGFsbCBjdXJyZW5jeSBzeW1ib2xzIGFuZCBhbGwgbWF0aCBzeW1ib2xzKS4mbmJzcDsKKyAqICAgICAgIFNwZWNpZnlpbmcgYSBvbmUtbGV0dGVyIGNvZGUgaXMgdGhlIHNhbWUgYXMgc3BlY2lmeWluZyBhbGwgdHdvLWxldHRlciBjb2RlcyB0aGF0IGJlZ2luCisgKiAgICAgICB3aXRoIHRoYXQgbGV0dGVyIChmb3IgZXhhbXBsZSwgJnF1b3Q7W1s6TDpdXSZxdW90OyBtYXRjaGVzIGFsbCBsZXR0ZXJzLCBhbmQgaXMgZXF1aXZhbGVudAorICogICAgICAgdG8gJnF1b3Q7W1s6THU6XVs6TGw6XVs6TG86XVs6TG06XVs6THQ6XV0mcXVvdDspLiZuYnNwOyBBbnl0aGluZyBvdGhlciB0aGFuIGEgdmFsaWQKKyAqICAgICAgIHR3by1sZXR0ZXIgVW5pY29kZSBjYXRlZ29yeSBjb2RlIG9yIGEgc2luZ2xlIGxldHRlciB0aGF0IGJlZ2lucyBhIHZhbGlkZSBVbmljb2RlIGNhdGVnb3J5CisgKiAgICAgICBjb2RlIGlzIGlsbGVnYWwgd2l0aGluIHRoZSBjb2xvbnMuPC90ZD4KKyAqICAgICA8L3RyPgorICogICAgIDx0cj4KKyAqICAgICAgIDx0ZCB3aWR0aD0iNiUiPnw8L3RkPgorICogICAgICAgPHRkIHdpZHRoPSI5NCUiPlR3byBuZXN0ZWQgW10gZXhwcmVzc2lvbnMganV4dGFwb3NlZCBvciBzZXBhcmF0ZWQgb25seSBieSBhIHwgY2hhcmFjdGVyCisgKiAgICAgICBhcmUgbWVyZ2VkIHRvZ2V0aGVyIGludG8gYSBzaW5nbGUgW10gZXhwcmVzc2lvbiBtYXRjaGluZyBhbGwgdGhlIGNoYXJhY3RlcnMgaW4gZWl0aGVyCisgKiAgICAgICBvZiB0aGUgb3JpZ2luYWwgW10gZXhwcmVzc2lvbnMuICAoZS5nLiwgIltbYWJdW2JjXV0iIGlzIGVxdWl2YWxlbnQgdG8gIlthYmNdIiwgYW5kIHNvCisgKiAgICAgICBpcyAiW1thYl18W2JjXV0iLiA8Yj5OT1RFOjwvYj4gICJbYWJdW2JjXSIgaXMgTk9UIHRoZSBzYW1lIHRoaW5nIGFzICJbW2FiXVtiY11dIi4KKyAqICAgICAgIFRoZSBmaXJzdCBleHByZXNzaW9uIHdpbGwgbWF0Y2ggdHdvIGNoYXJhY3RlcnM6IGFuIGEgb3IgYiBmb2xsb3dlZCBieSBlaXRoZXIgYW5vdGhlcgorICogICAgICAgYiBvciBhIGMuICBUaGUgc2Vjb25kIGV4cHJlc3Npb24gd2lsbCBtYXRjaCBhIHNpbmdsZSBjaGFyYWN0ZXIsIHdoaWNoIG1heSBiZSBhLCBiLCBvciBjLgorICogICAgICAgVGhlIG5lc3RpbmcgaXMgPGVtPnJlcXVpcmVkPC9lbT4gZm9yIHRoZSBleHByZXNzaW9ucyB0byBtZXJnZSB0b2dldGhlci48L3RkPgorICogICAgIDwvdHI+CisgKiAgICAgPHRyPgorICogICAgICAgPHRkIHdpZHRoPSI2JSI+JjwvdGQ+CisgKiAgICAgICA8dGQgd2lkdGg9Ijk0JSI+VHdvIG5lc3RlZCBbXSBleHByZXNzaW9ucyB3aXRoIG9ubHkgJiBiZXR3ZWVuIHRoZW0gd2lsbCBtYXRjaCBhbnkKKyAqICAgICAgIGNoYXJhY3RlciB0aGF0IGFwcGVhcnMgaW4gYm90aCBuZXN0ZWQgW10gZXhwcmVzc2lvbnMgKHRoaXMgaXMgYSBzZXQgaW50ZXJzZWN0aW9uKS4KKyAqICAgICAgIChlLmcuLCAiW1thYl0mW2JjXV0iIHdpbGwgb25seSBtYXRjaCB0aGUgbGV0dGVyIGIuKTwvdGQ+CisgKiAgICAgPC90cj4KKyAqICAgICA8dHI+CisgKiAgICAgICA8dGQgd2lkdGg9IjYlIj4tPC90ZD4KKyAqICAgICAgIDx0ZCB3aWR0aD0iOTQlIj5Ud28gbmVzdGVkIFtdIGV4cHJlc3Npb25zIHdpdGggLSBiZXR3ZWVuIHRoZW0gd2lsbCBtYXRjaCBhbnkKKyAqICAgICAgIGNoYXJhY3RlciB0aGF0IGFwcGVhcnMgaW4gdGhlIGZpcnN0IG5lc3RlZCBbXSBleHByZXNzaW9uIDxlbT5idXQgbm90PC9lbT4gdGhlCisgKiAgICAgICBzZWNvbmQgb25lICh0aGlzIGlzIGFuIGFzeW1tZXRyaWNhbCBzZXQgZGlmZmVyZW5jZSkuICAoZS5nLiwgIltbOlNjOl0tWyRdXSIKKyAqICAgICAgIG1hdGNoZXMgYW55IGN1cnJlbmN5IHN5bWJvbCBleGNlcHQgdGhlIGRvbGxhciBzaWduLiAgIltbYWJdLVtiY11dIHdpbGwgbWF0Y2gKKyAqICAgICAgIG9ubHkgdGhlIGxldHRlciBhLiAgVGhpcyBoYXMgZXhhY3RseSB0aGUgc2FtZSBlZmZlY3QgYXMgIltbYWJdJlteYmNdXSIuKTwvdGQ+CisgKiAgICAgPC90cj4KKyAqCisgKiA8cD5Gb3IgYSBtb3JlIGNvbXBsZXRlIGV4cGxhbmF0aW9uLCBzZWUgPGEKKyAqIGhyZWY9Imh0dHA6Ly93d3cuaWJtLmNvbS9kZXZlbG9wZXJ3b3Jrcy91bmljb2RlL2xpYnJhcnkvYm91bmRhcmllcy9ib3VuZGFyaWVzLmh0bWwiPmh0dHA6Ly93d3cuaWJtLmNvbS9kZXZlbG9wZXJ3b3Jrcy91bmljb2RlL2xpYnJhcnkvYm91bmRhcmllcy9ib3VuZGFyaWVzLmh0bWw8L2E+LgorICogJm5ic3A7IEZvciBleGFtcGxlcywgc2VlIHRoZSByZXNvdXJjZSBkYXRhICh3aGljaCBpcyBhbm5vdGF0ZWQpLjwvcD4KKyAqCisgKiBAYXV0aG9yIFJpY2hhcmQgR2lsbGFtCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqICRSQ1NmaWxlOiBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yLmphdmEsdiAkICRSZXZpc2lvbjogMS4yMyAkICREYXRlOiAyMDAyLzEyLzA1IDAxOjIyOjExICQKKyAqLworcHVibGljIGNsYXNzIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IgZXh0ZW5kcyBCcmVha0l0ZXJhdG9yIHsKKworICAgIC8qKgorICAgICAqIEEgdG9rZW4gdXNlZCBhcyBhIGNoYXJhY3Rlci1jYXRlZ29yeSB2YWx1ZSB0byBpZGVudGlmeSBpZ25vcmUgY2hhcmFjdGVycworICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgYnl0ZSBJR05PUkUgPSAtMTsKKworICAgIC8qKgorICAgICAqIFNwZWNpYWwgdmFyaWFibGUgdXNlZCB0byBkZWZpbmUgaWdub3JlIGNoYXJhY3RlcnMKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgSUdOT1JFX1ZBUiA9ICJfaWdub3JlXyI7CisKKyAgICAvKioKKyAgICAgKiBUaGUgc3RhdGUgbnVtYmVyIG9mIHRoZSBzdGFydGluZyBzdGF0ZQorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIHNob3J0IFNUQVJUX1NUQVRFID0gMTsKKworICAgIC8qKgorICAgICAqIFRoZSBzdGF0ZS10cmFuc2l0aW9uIHZhbHVlIGluZGljYXRpbmcgInN0b3AiCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgc2hvcnQgU1RPUF9TVEFURSA9IDA7CisKKyAgICAvKioKKyAgICAgKiBUaGUgdGV4dHVhbCBkZXNjcmlwdGlvbiB0aGlzIGl0ZXJhdG9yIHdhcyBjcmVhdGVkIGZyb20KKyAgICAgKi8KKyAgICBwcml2YXRlIFN0cmluZyBkZXNjcmlwdGlvbjsKKworICAgIC8qKgorICAgICAqIEEgdGFibGUgdGhhdCBpbmRleGVzIGZyb20gY2hhcmFjdGVyIHZhbHVlcyB0byBjaGFyYWN0ZXIgY2F0ZWdvcnkgbnVtYmVycworICAgICAqLworICAgIHByaXZhdGUgQ29tcGFjdEJ5dGVBcnJheSBjaGFyQ2F0ZWdvcnlUYWJsZSA9IG51bGw7CisKKyAgICAvKioKKyAgICAgKiBUaGUgdGFibGUgb2Ygc3RhdGUgdHJhbnNpdGlvbnMgdXNlZCBmb3IgZm9yd2FyZCBpdGVyYXRpb24KKyAgICAgKi8KKyAgICBwcml2YXRlIHNob3J0W10gc3RhdGVUYWJsZSA9IG51bGw7CisKKyAgICAvKioKKyAgICAgKiBUaGUgdGFibGUgb2Ygc3RhdGUgdHJhbnNpdGlvbnMgdXNlZCB0byBzeW5jIHVwIHRoZSBpdGVyYXRvciB3aXRoIHRoZQorICAgICAqIHRleHQgaW4gYmFja3dhcmRzIGFuZCByYW5kb20tYWNjZXNzIGl0ZXJhdGlvbgorICAgICAqLworICAgIHByaXZhdGUgc2hvcnRbXSBiYWNrd2FyZHNTdGF0ZVRhYmxlID0gbnVsbDsKKworICAgIC8qKgorICAgICAqIEEgbGlzdCBvZiBmbGFncyBpbmRpY2F0aW5nIHdoaWNoIHN0YXRlcyBpbiB0aGUgc3RhdGUgdGFibGUgYXJlIGFjY2VwdGluZworICAgICAqICgiZW5kIikgc3RhdGVzCisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuW10gZW5kU3RhdGVzID0gbnVsbDsKKworICAgIC8qKgorICAgICAqIEEgbGlzdCBvZiBmbGFncyBpbmRpY2F0aW5nIHdoaWNoIHN0YXRlcyBpbiB0aGUgc3RhdGUgdGFibGUgYXJlCisgICAgICogbG9va2FoZWFkIHN0YXRlcyAoc3RhdGVzIHdoaWNoIHR1cm4gbG9va2FoZWFkIG9uIGFuZCBvZmYpCisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuW10gbG9va2FoZWFkU3RhdGVzID0gbnVsbDsKKworICAgIC8qKgorICAgICAqIFRoZSBudW1iZXIgb2YgY2hhcmFjdGVyIGNhdGVnb3JpZXMgKGFuZCwgdGh1cywgdGhlIG51bWJlciBvZiBjb2x1bW5zIGluCisgICAgICogdGhlIHN0YXRlIHRhYmxlcykKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBudW1DYXRlZ29yaWVzOworCisgICAgLyoqCisgICAgICogVGhlIGNoYXJhY3RlciBpdGVyYXRvciB0aHJvdWdoIHdoaWNoIHRoaXMgQnJlYWtJdGVyYXRvciBhY2Nlc3NlcyB0aGUgdGV4dAorICAgICAqLworICAgIHByaXZhdGUgQ2hhcmFjdGVySXRlcmF0b3IgdGV4dCA9IG51bGw7CisKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gY29uc3RydWN0b3JzCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IgYWNjb3JkaW5nIHRvIHRoZSBkZXNjcmlwdGlvbgorICAgICAqIHByb3ZpZGVkLiAgSWYgdGhlIGRlc2NyaXB0aW9uIGlzIG1hbGZvcm1lZCwgdGhyb3dzIGFuCisgICAgICogSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uLiAgTm9ybWFsbHksIGluc3RlYWQgb2YgY29uc3RydWN0aW5nIGEKKyAgICAgKiBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIGRpcmVjdG9yeSwgeW91J2xsIHVzZSB0aGUgZmFjdG9yeSBtZXRob2RzCisgICAgICogb24gQnJlYWtJdGVyYXRvciB0byBjcmVhdGUgb25lIGluZGlyZWN0bHkgZnJvbSBhIGRlc2NyaXB0aW9uCisgICAgICogaW4gdGhlIGZyYW1ld29yaydzIHJlc291cmNlIGZpbGVzLiAgWW91J2QgdXNlIHRoaXMgd2hlbiB5b3Ugd2FudAorICAgICAqIHNwZWNpYWwgYmVoYXZpb3Igbm90IHByb3ZpZGVkIGJ5IHRoZSBidWlsdC1pbiBpdGVyYXRvcnMuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IoU3RyaW5nIGRlc2NyaXB0aW9uKSB7CisvL1N5c3RlbS5vdXQucHJpbnRsbigiPj4+UkJCSSBjb25zdHJ1Y3RvciIpOworICAgICAgICB0aGlzLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247CisKKyAgICAgICAgLy8gdGhlIGFjdHVhbCB3b3JrIGlzIGRvbmUgYnkgdGhlIEJ1aWxkZXIgY2xhc3MKKyAgICAgICAgQnVpbGRlciBidWlsZGVyID0gbWFrZUJ1aWxkZXIoKTsKKyAgICAgICAgYnVpbGRlci5idWlsZEJyZWFrSXRlcmF0b3IoKTsKKy8vU3lzdGVtLm91dC5wcmludGxuKCI8PDxSQkJJIGNvbnN0cnVjdG9yIik7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIEJ1aWxkZXIuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHJvdGVjdGVkIEJ1aWxkZXIgbWFrZUJ1aWxkZXIoKSB7CisgICAgICAgIHJldHVybiBuZXcgQnVpbGRlcigpOworICAgIH0KKworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBib2lsZXJwbGF0ZQorICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvKioKKyAgICAgKiBDbG9uZXMgdGhpcyBpdGVyYXRvci4KKyAgICAgKiBAcmV0dXJuIEEgbmV3bHktY29uc3RydWN0ZWQgUnVsZUJhc2VkQnJlYWtJdGVyYXRvciB3aXRoIHRoZSBzYW1lCisgICAgICogYmVoYXZpb3IgYXMgdGhpcyBvbmUuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIE9iamVjdCBjbG9uZSgpCisgICAgeworICAgICAgICBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIHJlc3VsdCA9IChSdWxlQmFzZWRCcmVha0l0ZXJhdG9yKSBzdXBlci5jbG9uZSgpOworICAgICAgICBpZiAodGV4dCAhPSBudWxsKSB7CisgICAgICAgICAgICByZXN1bHQudGV4dCA9IChDaGFyYWN0ZXJJdGVyYXRvcikgdGV4dC5jbG9uZSgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0cnVlIGlmIGJvdGggQnJlYWtJdGVyYXRvcnMgYXJlIG9mIHRoZSBzYW1lIGNsYXNzLCBoYXZlIHRoZSBzYW1lCisgICAgICogcnVsZXMsIGFuZCBpdGVyYXRlIG92ZXIgdGhlIHNhbWUgdGV4dC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IHRoYXQpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3Igb3RoZXIgPSAoUnVsZUJhc2VkQnJlYWtJdGVyYXRvcikgdGhhdDsKKyAgICAgICAgICAgIGlmICghZGVzY3JpcHRpb24uZXF1YWxzKG90aGVyLmRlc2NyaXB0aW9uKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh0ZXh0ID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXIudGV4dCA9PSBudWxsOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRleHQuZXF1YWxzKG90aGVyLnRleHQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhdGNoKENsYXNzQ2FzdEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBkZXNjcmlwdGlvbiB1c2VkIHRvIGNyZWF0ZSB0aGlzIGl0ZXJhdG9yCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgcmV0dXJuIGRlc2NyaXB0aW9uOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbXB1dGUgYSBoYXNoY29kZSBmb3IgdGhpcyBCcmVha0l0ZXJhdG9yCisgICAgICogQHJldHVybiBBIGhhc2ggY29kZQorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGRlc2NyaXB0aW9uLmhhc2hDb2RlKCk7CisgICAgfQorCisvLworLy8gICBEdW1wIG91dCBhIG1vcmUtb3ItbGVzcyBodW1hbiByZWFkYWJsZSBmb3JtIG9mIHRoZQorLy8gICBjb21wbGV0ZSBzdGF0ZSB0YWJsZSBhbmQgY2hhcmFjdGVyIGNsYXNzIGRlZmluaXRpb25zCisvLworICAgIC8vL0NMT1ZFUjpPRkYKK3B1YmxpYyB2b2lkIGRlYnVnRHVtcFRhYmxlcygpIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkNoYXJhY3RlciBDbGFzc2VzOiIpOworICAgIGludCBjdXJyZW50Q2hhckNsYXNzID0gMjU3OworICAgIGludCBzdGFydEN1cnJlbnRSYW5nZSA9IDA7CisgICAgaW50IGluaXRpYWxTdHJpbmdMZW5ndGggPSAwOworCisgICAgU3RyaW5nQnVmZmVyW10gY2hhckNsYXNzUmFuZ2VzID0gbmV3IFN0cmluZ0J1ZmZlcltudW1DYXRlZ29yaWVzXTsKKyAgICBmb3IgKGludCBpPTA7IGk8bnVtQ2F0ZWdvcmllczsgaSsrKSB7CisgICAgICAgIGNoYXJDbGFzc1Jhbmdlc1tpXSA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICB9CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDB4ZmZmZjsgaSsrKSB7CisgICAgICAgIGlmICgoaW50KWNoYXJDYXRlZ29yeVRhYmxlLmVsZW1lbnRBdCgoY2hhcilpKSAhPSBjdXJyZW50Q2hhckNsYXNzKSB7CisgICAgICAgICAgICBpZiAoY3VycmVudENoYXJDbGFzcyAhPSAyNTcpIHsKKyAgICAgICAgICAgICAgICAvLyBDb21wbGV0ZSB0aGUgb3V0cHV0IG9mIHRoZSBwcmV2aW91cyByYW5nZS4KKyAgICAgICAgICAgICAgICBpZiAoaSAhPSBzdGFydEN1cnJlbnRSYW5nZSsxKSB7CisgICAgICAgICAgICAgICAgICAgIGNoYXJDbGFzc1Jhbmdlc1tjdXJyZW50Q2hhckNsYXNzXS5hcHBlbmQoIi0iKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKGktMSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoY2hhckNsYXNzUmFuZ2VzW2N1cnJlbnRDaGFyQ2xhc3NdLmxlbmd0aCgpICUgNzIgPCBpbml0aWFsU3RyaW5nTGVuZ3RoICUgNzIpIHsKKyAgICAgICAgICAgICAgICAgICAgY2hhckNsYXNzUmFuZ2VzW2N1cnJlbnRDaGFyQ2xhc3NdLmFwcGVuZCgiXG4gICAgICIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gT3V0cHV0IHRoZSBzdGFydCBvZiB0aGUgbmV3IHJhbmdlLgorICAgICAgICAgICAgY3VycmVudENoYXJDbGFzcyA9IChpbnQpY2hhckNhdGVnb3J5VGFibGUuZWxlbWVudEF0KChjaGFyKWkpOworICAgICAgICAgICAgc3RhcnRDdXJyZW50UmFuZ2UgPSBpOworICAgICAgICAgICAgaW5pdGlhbFN0cmluZ0xlbmd0aCA9IGNoYXJDbGFzc1Jhbmdlc1tjdXJyZW50Q2hhckNsYXNzXS5sZW5ndGgoKTsKKyAgICAgICAgICAgIGlmIChjaGFyQ2xhc3NSYW5nZXNbY3VycmVudENoYXJDbGFzc10ubGVuZ3RoKCkgPiAwKQorICAgICAgICAgICAgICAgIGNoYXJDbGFzc1Jhbmdlc1tjdXJyZW50Q2hhckNsYXNzXS5hcHBlbmQoIiwgIik7CisgICAgICAgICAgICBjaGFyQ2xhc3NSYW5nZXNbY3VycmVudENoYXJDbGFzc10uYXBwZW5kKEludGVnZXIudG9IZXhTdHJpbmcoaSkpOworICAgICAgICB9CisgICAgfQorCisgICAgZm9yIChpbnQgaT0wOyBpPG51bUNhdGVnb3JpZXM7IGkrKykgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oaSArICI6ICAgICAiICsgY2hhckNsYXNzUmFuZ2VzW2ldKTsKKyAgICB9CisKKworICAgIFN5c3RlbS5vdXQucHJpbnRsbigiXG5cblN0YXRlIFRhYmxlLiAgICo6IGVuZCBzdGF0ZSAgICAgJTogbG9vayBhaGVhZCBzdGF0ZSIpOworICAgIFN5c3RlbS5vdXQucHJpbnQoIkM6XHQiKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUNhdGVnb3JpZXM7IGkrKykKKyAgICAgICAgU3lzdGVtLm91dC5wcmludChJbnRlZ2VyLnRvU3RyaW5nKGkpICsgIlx0Iik7CisgICAgU3lzdGVtLm91dC5wcmludGxuKCk7IFN5c3RlbS5vdXQucHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHN0YXRlVGFibGUubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKGkgJSBudW1DYXRlZ29yaWVzID09IDApIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOworICAgICAgICAgICAgaWYgKGVuZFN0YXRlc1tpIC8gbnVtQ2F0ZWdvcmllc10pCisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludCgiKiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIiAiKTsKKyAgICAgICAgICAgIGlmIChsb29rYWhlYWRTdGF0ZXNbaSAvIG51bUNhdGVnb3JpZXNdKSB7CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludCgiJSIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIiAiKTsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoSW50ZWdlci50b1N0cmluZyhpIC8gbnVtQ2F0ZWdvcmllcykgKyAiOlx0Iik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHN0YXRlVGFibGVbaV0gPT0gMCkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludCgiLlx0Iik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KEludGVnZXIudG9TdHJpbmcoc3RhdGVUYWJsZVtpXSkgKyAiXHQiKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKK30KKyAgICAvLy9DTE9WRVI6T04KKworICAgIC8vL0NMT1ZFUjpPRkYKKy8vIERFTEVURSBNRSBCRUZPUkUgUkVMRUFTRSEhIQorcHVibGljIHZvaWQgd3JpdGVUYWJsZXNUb0ZpbGUoRmlsZU91dHB1dFN0cmVhbSBmaWxlLCBib29sZWFuIGxpdHRsZUVuZGlhbikgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAvLyBOT1RFOiBUaGUgZm9ybWF0IGJlaW5nIHdyaXR0ZW4gaGVyZSBpcyBkZXNpZ25lZCB0byBiZSBjb21wYXRpYmxlIHdpdGgKKyAgICAvLyB0aGUgSUNVIHVkYXRhIGludGVyZmFjZXMgYW5kIG1heSBub3QgYmUgdXNlZnVsIGZvciBtdWNoIGVsc2UKKyAgICBEYXRhT3V0cHV0U3RyZWFtIG91dCA9IG5ldyBEYXRhT3V0cHV0U3RyZWFtKGZpbGUpOworCisvLyAtLS0gd3JpdGUgdGhlIGZpbGUgaGVhZGVyIC0tLQorYnl0ZVtdIGNvbW1lbnQgPSAiQ29weXJpZ2h0IChDKSAxOTk5LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnAuIGFuZCBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuIi5nZXRCeXRlcygiVVMtQVNDSUkiKTsKKy8vIHdyaXRlIHRoZSBzaXplIG9mIHRoZSBoZWFkZXIgKHJvdW5kZWQgdXAgdG8gdGhlIG5leHQgMTYtYnl0ZSBib3VuZGFyeSkKK3Nob3J0IGhlYWRlclNpemUgPSAoc2hvcnQpKGNvbW1lbnQubGVuZ3RoICsgMSAvLyBsZW5ndGggb2YgY29tbWVudAorICAgICAgICAgICAgICAgICAgICsgMjQpOyAvLyBzaXplIG9mIHN0YXRpYyBoZWFkZXIgZGF0YQorc2hvcnQgcmVhbEhlYWRlclNpemUgPSAoc2hvcnQpKGhlYWRlclNpemUgKyAoKGhlYWRlclNpemUgJSAxNiA9PSAwKSA/IDAgOiAxNiAtIChoZWFkZXJTaXplICUgMTYpKSk7Cit3cml0ZVN3YXBwZWRTaG9ydChyZWFsSGVhZGVyU2l6ZSwgb3V0LCBsaXR0bGVFbmRpYW4pOworLy8gd3JpdGUgbWFnaWMgYnl0ZSB2YWx1ZXMKK291dC53cml0ZSgweGRhKTsKK291dC53cml0ZSgweDI3KTsKKy8vIHdyaXRlIHNpemUgb2YgY29yZSBoZWFkZXIgZGF0YQord3JpdGVTd2FwcGVkU2hvcnQoKHNob3J0KTIwLCBvdXQsIGxpdHRsZUVuZGlhbik7CisvLyB3cml0ZSByZXNlcnZlZCBieXRlcword3JpdGVTd2FwcGVkU2hvcnQoKHNob3J0KTAsIG91dCwgbGl0dGxlRW5kaWFuKTsKKworLy8gd3JpdGUgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgd2UncmUgYmlnLWVuZGlhbgoraWYgKGxpdHRsZUVuZGlhbikgeworICAgIG91dC53cml0ZSgwKTsKK30gZWxzZSB7CisgICAgb3V0LndyaXRlKDEpOworfQorCisvLyB3cml0ZSBjaGFyYWN0ZXIgc2V0IGZhbWlseSBjb2RlICgwIG1lYW5zIEFTQ0lJKQorb3V0LndyaXRlKDApOworLy8gd3JpdGUgc2l6ZSBvZiBVQ2hhciBpbiB0aGlzIGZpbGUKK291dC53cml0ZSgyKTsKKy8vIHdyaXRlIHJlc2VydmVkIGJ5dGUKK291dC53cml0ZSgwKTsKKy8vIHdyaXRlIGRhdGEgZm9ybWF0IGlkZW50aWZpZXIgKHRoaXMgaXMgYW4gYXJyYXkgb2YgYnl0ZXMgaW4gSUNVLCBzbyB0aGUgdmFsdWUgaXMgTk9UIHN3YXBwZWQhKQorb3V0LndyaXRlSW50KDB4NDI1MjRiNTMpOyAgIC8vICgiQlJLUyIpCisvLyB3cml0ZSBmaWxlIGZvcm1hdCB2ZXJzaW9uIG51bWJlciAoTk9UIHN3YXBwZWQhKQorb3V0LndyaXRlSW50KDApOworLy8gd3JpdGUgZGF0YSB2ZXJzaW9uIG51bWJlciAoTk9UIHN3YXBwZWQhKQorb3V0LndyaXRlSW50KDApOworLy8gd3JpdGUgY29weXJpZ2h0IG5vdGljZQorb3V0LndyaXRlKGNvbW1lbnQpOworb3V0LndyaXRlKDApOworLy8gZmlsbCBpbiBwYWRkaW5nIGJ5dGVzCit3aGlsZSAoaGVhZGVyU2l6ZSA8IHJlYWxIZWFkZXJTaXplKSB7CisgICAgb3V0LndyaXRlKDApOworICAgICsraGVhZGVyU2l6ZTsKK30KKworLy8gLS0tIHdyaXRlIGluZGV4IHRvIHRoZSBmaWxlIC0tLQorLy8gd3JpdGUgdGhlIG51bWJlciBvZiBjb2x1bW5zIGluIHRoZSBzdGF0ZSB0YWJsZQord3JpdGVTd2FwcGVkSW50KG51bUNhdGVnb3JpZXMsIG91dCwgbGl0dGxlRW5kaWFuKTsKK2ludCBmaWxlRW5kID0gMzY7CisvLyB3cml0ZSB0aGUgbG9jYXRpb24gaW4gdGhlIGZpbGUgb2YgdGhlIEJyZWFrSXRlcmF0b3IgZGVzY3JpcHRpb24gc3RyaW5nCit3cml0ZVN3YXBwZWRJbnQoZmlsZUVuZCwgb3V0LCBsaXR0bGVFbmRpYW4pOworZmlsZUVuZCArPSAoZGVzY3JpcHRpb24ubGVuZ3RoKCkgKyAxKSAqIDI7CitmaWxlRW5kICs9IChmaWxlRW5kICUgNCA9PSAwKSA/IDAgOiA0IC0gKGZpbGVFbmQgJSA0KTsKKy8vIHdyaXRlIHRoZSBsb2NhdGlvbiBvZiB0aGUgY2hhcmFjdGVyIGNhdGVnb3J5IHRhYmxlJ3MgaW5kZXgKK3dyaXRlU3dhcHBlZEludChmaWxlRW5kLCBvdXQsIGxpdHRsZUVuZGlhbik7CitmaWxlRW5kICs9IGNoYXJDYXRlZ29yeVRhYmxlLmdldEluZGV4QXJyYXkoKS5sZW5ndGggKiAyOworZmlsZUVuZCArPSAoZmlsZUVuZCAlIDQgPT0gMCkgPyAwIDogNCAtIChmaWxlRW5kICUgNCk7CisvLyB3cml0ZSB0aGUgbG9jYXRpb24gb2YgdGhlIGNoYXJhY3RlciBjYXRlZ29yeSB0YWJsZSdzIHZhbHVlcyBhcnJheQord3JpdGVTd2FwcGVkSW50KGZpbGVFbmQsIG91dCwgbGl0dGxlRW5kaWFuKTsKK2ZpbGVFbmQgKz0gY2hhckNhdGVnb3J5VGFibGUuZ2V0VmFsdWVBcnJheSgpLmxlbmd0aDsKK2ZpbGVFbmQgKz0gKGZpbGVFbmQgJSA0ID09IDApID8gMCA6IDQgLSAoZmlsZUVuZCAlIDQpOworLy8gd3JpdGUgdGhlIGxvY2F0aW9uIG9mIHRoZSBmb3J3YXJkIHN0YXRlIHRhYmxlCit3cml0ZVN3YXBwZWRJbnQoZmlsZUVuZCwgb3V0LCBsaXR0bGVFbmRpYW4pOworZmlsZUVuZCArPSBzdGF0ZVRhYmxlLmxlbmd0aCAqIDI7CitmaWxlRW5kICs9IChmaWxlRW5kICUgNCA9PSAwKSA/IDAgOiA0IC0gKGZpbGVFbmQgJSA0KTsKKy8vIHdyaXRlIHRoZSBsb2NhdGlvbiBvZiB0aGUgYmFja3dhcmQgc3RhdGUgdGFibGUKK3dyaXRlU3dhcHBlZEludChmaWxlRW5kLCBvdXQsIGxpdHRsZUVuZGlhbik7CitmaWxlRW5kICs9IGJhY2t3YXJkc1N0YXRlVGFibGUubGVuZ3RoICogMjsKK2ZpbGVFbmQgKz0gKGZpbGVFbmQgJSA0ID09IDApID8gMCA6IDQgLSAoZmlsZUVuZCAlIDQpOworLy8gd3JpdGUgdGhlIGxvY2F0aW9uIG9mIHRoZSBlbmRTdGF0ZXMgZmxhZ3MKK3dyaXRlU3dhcHBlZEludChmaWxlRW5kLCBvdXQsIGxpdHRsZUVuZGlhbik7CitmaWxlRW5kICs9IGVuZFN0YXRlcy5sZW5ndGg7CitmaWxlRW5kICs9IChmaWxlRW5kICUgNCA9PSAwKSA/IDAgOiA0IC0gKGZpbGVFbmQgJSA0KTsKKy8vIHdyaXRlIHRoZSBsb2NhdGlvbiBvZiB0aGUgbG9va2FoZWFkU3RhdGVzIGZsYWdzCit3cml0ZVN3YXBwZWRJbnQoZmlsZUVuZCwgb3V0LCBsaXR0bGVFbmRpYW4pOworZmlsZUVuZCArPSBsb29rYWhlYWRTdGF0ZXMubGVuZ3RoOworZmlsZUVuZCArPSAoZmlsZUVuZCAlIDQgPT0gMCkgPyAwIDogNCAtIChmaWxlRW5kICUgNCk7CisvLyB3cml0ZSB0aGUgbGVuZ3RoIG9mIHRoZSBmaWxlCit3cml0ZVN3YXBwZWRJbnQoZmlsZUVuZCwgb3V0LCBsaXR0bGVFbmRpYW4pOworCisvLyAtLS0gd3JpdGUgdGhlIGFjdHVhbCBkYXRhIC0tLQorLy8gd3JpdGUgZGVzY3JpcHRpb24gc3RyaW5nCitmb3IgKGludCBpID0gMDsgaSA8IGRlc2NyaXB0aW9uLmxlbmd0aCgpOyBpKyspCisgICAgd3JpdGVTd2FwcGVkU2hvcnQoKHNob3J0KWRlc2NyaXB0aW9uLmNoYXJBdChpKSwgb3V0LCBsaXR0bGVFbmRpYW4pOworb3V0LndyaXRlU2hvcnQoMCk7CitpZiAoKGRlc2NyaXB0aW9uLmxlbmd0aCgpICsgMSkgJSAyID09IDEpCisgICAgb3V0LndyaXRlU2hvcnQoMCk7CisvLyB3cml0ZSBjaGFyYWN0ZXIgY2F0ZWdvcnkgdGFibGUKK2NoYXJbXSB0ZW1wMSA9IGNoYXJDYXRlZ29yeVRhYmxlLmdldEluZGV4QXJyYXkoKTsKK2ZvciAoaW50IGkgPSAwOyBpIDwgdGVtcDEubGVuZ3RoOyBpKyspCisgICAgd3JpdGVTd2FwcGVkU2hvcnQoKHNob3J0KXRlbXAxW2ldLCBvdXQsIGxpdHRsZUVuZGlhbik7CitpZiAodGVtcDEubGVuZ3RoICUgMiA9PSAxKQorICAgIG91dC53cml0ZVNob3J0KDApOworYnl0ZVtdIHRlbXAyID0gY2hhckNhdGVnb3J5VGFibGUuZ2V0VmFsdWVBcnJheSgpOworb3V0LndyaXRlKHRlbXAyKTsKK3N3aXRjaCAodGVtcDIubGVuZ3RoICUgNCkgeworICAgIGNhc2UgMTogb3V0LndyaXRlKDApOworICAgIGNhc2UgMjogb3V0LndyaXRlKDApOworICAgIGNhc2UgMzogb3V0LndyaXRlKDApOworICAgIGRlZmF1bHQ6IGJyZWFrOworfQorLy8gd3JpdGUgdGhlIHN0YXRlIHRyYW5zaXRpb24gdGFibGVzCitmb3IgKGludCBpID0gMDsgaSA8IHN0YXRlVGFibGUubGVuZ3RoOyBpKyspCisgICAgd3JpdGVTd2FwcGVkU2hvcnQoc3RhdGVUYWJsZVtpXSwgb3V0LCBsaXR0bGVFbmRpYW4pOworaWYgKHN0YXRlVGFibGUubGVuZ3RoICUgMiA9PSAxKQorICAgIG91dC53cml0ZVNob3J0KDApOworZm9yIChpbnQgaSA9IDA7IGkgPCBiYWNrd2FyZHNTdGF0ZVRhYmxlLmxlbmd0aDsgaSsrKQorICAgIHdyaXRlU3dhcHBlZFNob3J0KGJhY2t3YXJkc1N0YXRlVGFibGVbaV0sIG91dCwgbGl0dGxlRW5kaWFuKTsKK2lmIChiYWNrd2FyZHNTdGF0ZVRhYmxlLmxlbmd0aCAlIDIgPT0gMSkKKyAgICBvdXQud3JpdGVTaG9ydCgwKTsKKy8vIHdyaXRlIHRoZSBmbGFnIGFycmF5cworZm9yIChpbnQgaSA9IDA7IGkgPCBlbmRTdGF0ZXMubGVuZ3RoOyBpKyspCisgICAgb3V0LndyaXRlQm9vbGVhbihlbmRTdGF0ZXNbaV0pOworc3dpdGNoIChlbmRTdGF0ZXMubGVuZ3RoICUgNCkgeworICAgIGNhc2UgMTogb3V0LndyaXRlKDApOworICAgIGNhc2UgMjogb3V0LndyaXRlKDApOworICAgIGNhc2UgMzogb3V0LndyaXRlKDApOworICAgIGRlZmF1bHQ6IGJyZWFrOworfQorZm9yIChpbnQgaSA9IDA7IGkgPCBsb29rYWhlYWRTdGF0ZXMubGVuZ3RoOyBpKyspCisgICAgb3V0LndyaXRlQm9vbGVhbihsb29rYWhlYWRTdGF0ZXNbaV0pOworc3dpdGNoIChsb29rYWhlYWRTdGF0ZXMubGVuZ3RoICUgNCkgeworICAgIGNhc2UgMTogb3V0LndyaXRlKDApOworICAgIGNhc2UgMjogb3V0LndyaXRlKDApOworICAgIGNhc2UgMzogb3V0LndyaXRlKDApOworICAgIGRlZmF1bHQ6IGJyZWFrOworfQorfQorCitwcm90ZWN0ZWQgdm9pZCB3cml0ZVN3YXBwZWRTaG9ydChzaG9ydCB4LCBEYXRhT3V0cHV0U3RyZWFtIG91dCwgYm9vbGVhbiBsaXR0bGVFbmRpYW4pCit0aHJvd3MgSU9FeGNlcHRpb257CisgICAgaWYgKGxpdHRsZUVuZGlhbikgeworICAgICAgICBvdXQud3JpdGUoKGJ5dGUpKHggJiAweGZmKSk7CisgICAgICAgIG91dC53cml0ZSgoYnl0ZSkoKHggPj4gOCkgJiAweGZmKSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBvdXQud3JpdGUoKGJ5dGUpKCh4ID4+IDgpICYgMHhmZikpOworICAgICAgICBvdXQud3JpdGUoKGJ5dGUpKHggJiAweGZmKSk7CisgICAgfQorfQorCitwcm90ZWN0ZWQgdm9pZCB3cml0ZVN3YXBwZWRJbnQoaW50IHgsIERhdGFPdXRwdXRTdHJlYW0gb3V0LCBib29sZWFuIGxpdHRsZUVuZGlhbikKK3Rocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgaWYgKGxpdHRsZUVuZGlhbikgeworICAgICAgICBvdXQud3JpdGUoKGJ5dGUpKHggJiAweGZmKSk7CisgICAgICAgIG91dC53cml0ZSgoYnl0ZSkoKHggPj4gOCkgJiAweGZmKSk7CisgICAgICAgIG91dC53cml0ZSgoYnl0ZSkoKHggPj4gMTYpICYgMHhmZikpOworICAgICAgICBvdXQud3JpdGUoKGJ5dGUpKCh4ID4+IDI0KSAmIDB4ZmYpKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG91dC53cml0ZSgoYnl0ZSkoKHggPj4gMjQpICYgMHhmZikpOworICAgICAgICBvdXQud3JpdGUoKGJ5dGUpKCh4ID4+IDE2KSAmIDB4ZmYpKTsKKyAgICAgICAgb3V0LndyaXRlKChieXRlKSgoeCA+PiA4KSAmIDB4ZmYpKTsKKyAgICAgICAgb3V0LndyaXRlKChieXRlKSh4ICYgMHhmZikpOworICAgIH0KK30KKyAgICAvLy9DTE9WRVI6T04KKworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBCcmVha0l0ZXJhdG9yIG92ZXJyaWRlcworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIGN1cnJlbnQgaXRlcmF0aW9uIHBvc2l0aW9uIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHRleHQuCisgICAgICogKGkuZS4sIHRoZSBDaGFyYWN0ZXJJdGVyYXRvcidzIHN0YXJ0aW5nIG9mZnNldCkuCisgICAgICogQHJldHVybiBUaGUgb2Zmc2V0IG9mIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHRleHQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGludCBmaXJzdCgpIHsKKyAgICAgICAgQ2hhcmFjdGVySXRlcmF0b3IgdCA9IGdldFRleHQoKTsKKworICAgICAgICB0LmZpcnN0KCk7CisgICAgICAgIHJldHVybiB0LmdldEluZGV4KCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgY3VycmVudCBpdGVyYXRpb24gcG9zaXRpb24gdG8gdGhlIGVuZCBvZiB0aGUgdGV4dC4KKyAgICAgKiAoaS5lLiwgdGhlIENoYXJhY3Rlckl0ZXJhdG9yJ3MgZW5kaW5nIG9mZnNldCkuCisgICAgICogQHJldHVybiBUaGUgdGV4dCdzIHBhc3QtdGhlLWVuZCBvZmZzZXQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGludCBsYXN0KCkgeworICAgICAgICBDaGFyYWN0ZXJJdGVyYXRvciB0ID0gZ2V0VGV4dCgpOworCisgICAgICAgIC8vIEknbSBub3Qgc3VyZSB3aHksIGJ1dCB0Lmxhc3QoKSByZXR1cm5zIHRoZSBvZmZzZXQgb2YgdGhlIGxhc3QgY2hhcmFjdGVyLAorICAgICAgICAvLyByYXRoZXIgdGhhbiB0aGUgcGFzdC10aGUtZW5kIG9mZnNldAorICAgICAgICB0LnNldEluZGV4KHQuZ2V0RW5kSW5kZXgoKSk7CisgICAgICAgIHJldHVybiB0LmdldEluZGV4KCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQWR2YW5jZXMgdGhlIGl0ZXJhdG9yIGVpdGhlciBmb3J3YXJkIG9yIGJhY2t3YXJkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHN0ZXBzLgorICAgICAqIE5lZ2F0aXZlIHZhbHVlcyBtb3ZlIGJhY2t3YXJkLCBhbmQgcG9zaXRpdmUgdmFsdWVzIG1vdmUgZm9yd2FyZC4gIFRoaXMgaXMKKyAgICAgKiBlcXVpdmFsZW50IHRvIHJlcGVhdGVkbHkgY2FsbGluZyBuZXh0KCkgb3IgcHJldmlvdXMoKS4KKyAgICAgKiBAcGFyYW0gbiBUaGUgbnVtYmVyIG9mIHN0ZXBzIHRvIG1vdmUuICBUaGUgc2lnbiBpbmRpY2F0ZXMgdGhlIGRpcmVjdGlvbgorICAgICAqIChuZWdhdGl2ZSBpcyBiYWNrd2FyZHMsIGFuZCBwb3NpdGl2ZSBpcyBmb3J3YXJkcykuCisgICAgICogQHJldHVybiBUaGUgY2hhcmFjdGVyIG9mZnNldCBvZiB0aGUgYm91bmRhcnkgcG9zaXRpb24gbiBib3VuZGFyaWVzIGF3YXkgZnJvbQorICAgICAqIHRoZSBjdXJyZW50IG9uZS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IG5leHQoaW50IG4pIHsKKyAgICAgICAgaW50IHJlc3VsdCA9IGN1cnJlbnQoKTsKKyAgICAgICAgd2hpbGUgKG4gPiAwKSB7CisgICAgICAgICAgICByZXN1bHQgPSBoYW5kbGVOZXh0KCk7CisgICAgICAgICAgICAtLW47CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKG4gPCAwKSB7CisgICAgICAgICAgICByZXN1bHQgPSBwcmV2aW91cygpOworICAgICAgICAgICAgKytuOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogQWR2YW5jZXMgdGhlIGl0ZXJhdG9yIHRvIHRoZSBuZXh0IGJvdW5kYXJ5IHBvc2l0aW9uLgorICAgICAqIEByZXR1cm4gVGhlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCBib3VuZGFyeSBhZnRlciB0aGlzIG9uZS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IG5leHQoKSB7CisgICAgICAgIHJldHVybiBoYW5kbGVOZXh0KCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQWR2YW5jZXMgdGhlIGl0ZXJhdG9yIGJhY2t3YXJkcywgdG8gdGhlIGxhc3QgYm91bmRhcnkgcHJlY2VkaW5nIHRoaXMgb25lLgorICAgICAqIEByZXR1cm4gVGhlIHBvc2l0aW9uIG9mIHRoZSBsYXN0IGJvdW5kYXJ5IHBvc2l0aW9uIHByZWNlZGluZyB0aGlzIG9uZS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IHByZXZpb3VzKCkgeworICAgICAgICAvLyBpZiB3ZSdyZSBhbHJlYWR5IHNpdHRpbmcgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgdGV4dCwgcmV0dXJuIERPTkUKKyAgICAgICAgQ2hhcmFjdGVySXRlcmF0b3IgdGV4dCA9IGdldFRleHQoKTsKKyAgICAgICAgaWYgKGN1cnJlbnQoKSA9PSB0ZXh0LmdldEJlZ2luSW5kZXgoKSkgeworICAgICAgICAgICAgcmV0dXJuIEJyZWFrSXRlcmF0b3IuRE9ORTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIHNldCB0aGluZ3MgdXAuICBoYW5kbGVQcmV2aW91cygpIHdpbGwgYmFjayB1cyB1cCB0byBzb21lIHZhbGlkCisgICAgICAgIC8vIGJyZWFrIHBvc2l0aW9uIGJlZm9yZSB0aGUgY3VycmVudCBwb3NpdGlvbiAod2UgYmFjayBvdXIgaW50ZXJuYWwKKyAgICAgICAgLy8gaXRlcmF0b3IgdXAgb25lIHN0ZXAgdG8gcHJldmVudCBoYW5kbGVQcmV2aW91cygpIGZyb20gcmV0dXJuaW5nCisgICAgICAgIC8vIHRoZSBjdXJyZW50IHBvc2l0aW9uKSwgYnV0IG5vdCBuZWNlc3NhcmlseSB0aGUgbGFzdCBvbmUgYmVmb3JlCisgICAgICAgIC8vIHdoZXJlIHdlIHN0YXJ0ZWQKKyAgICAgICAgaW50IHN0YXJ0ID0gY3VycmVudCgpOworICAgICAgICB0ZXh0LnByZXZpb3VzKCk7CisgICAgICAgIGludCBsYXN0UmVzdWx0ID0gaGFuZGxlUHJldmlvdXMoKTsKKyAgICAgICAgaW50IHJlc3VsdCA9IGxhc3RSZXN1bHQ7CisKKyAgICAgICAgLy8gaXRlcmF0ZSBmb3J3YXJkIGZyb20gdGhlIGtub3duIGJyZWFrIHBvc2l0aW9uIHVudGlsIHdlIHBhc3Mgb3VyCisgICAgICAgIC8vIHN0YXJ0aW5nIHBvaW50LiAgVGhlIGxhc3QgYnJlYWsgcG9zaXRpb24gYmVmb3JlIHRoZSBzdGFydGluZworICAgICAgICAvLyBwb2ludCBpcyBvdXIgcmV0dXJuIHZhbHVlCisgICAgICAgIHdoaWxlIChyZXN1bHQgIT0gQnJlYWtJdGVyYXRvci5ET05FICYmIHJlc3VsdCA8IHN0YXJ0KSB7CisgICAgICAgICAgICBsYXN0UmVzdWx0ID0gcmVzdWx0OworICAgICAgICAgICAgcmVzdWx0ID0gaGFuZGxlTmV4dCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gc2V0IHRoZSBjdXJyZW50IGl0ZXJhdGlvbiBwb3NpdGlvbiB0byBiZSB0aGUgbGFzdCBicmVhayBwb3NpdGlvbgorICAgICAgICAvLyBiZWZvcmUgd2hlcmUgd2Ugc3RhcnRlZCwgYW5kIHRoZW4gcmV0dXJuIHRoYXQgdmFsdWUKKyAgICAgICAgdGV4dC5zZXRJbmRleChsYXN0UmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGxhc3RSZXN1bHQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhyb3cgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHVubGVzcyBiZWdpbiA8PSBvZmZzZXQgPCBlbmQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCB2b2lkIGNoZWNrT2Zmc2V0KGludCBvZmZzZXQsIENoYXJhY3Rlckl0ZXJhdG9yIHRleHQpIHsKKyAgICAgICAgaWYgKG9mZnNldCA8IHRleHQuZ2V0QmVnaW5JbmRleCgpIHx8IG9mZnNldCA+IHRleHQuZ2V0RW5kSW5kZXgoKSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigib2Zmc2V0IG91dCBvZiBib3VuZHMiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIGl0ZXJhdG9yIHRvIHJlZmVyIHRvIHRoZSBmaXJzdCBib3VuZGFyeSBwb3NpdGlvbiBmb2xsb3dpbmcKKyAgICAgKiB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLgorICAgICAqIEBwYXJhbSBvZmZzZXQgVGhlIHBvc2l0aW9uIGZyb20gd2hpY2ggdG8gYmVnaW4gc2VhcmNoaW5nIGZvciBhIGJyZWFrIHBvc2l0aW9uLgorICAgICAqIEByZXR1cm4gVGhlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCBicmVhayBhZnRlciB0aGUgY3VycmVudCBwb3NpdGlvbi4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGZvbGxvd2luZyhpbnQgb2Zmc2V0KSB7CisgICAgICAgIC8vIGlmIHRoZSBvZmZzZXQgcGFzc2VkIGluIGlzIGFscmVhZHkgcGFzdCB0aGUgZW5kIG9mIHRoZSB0ZXh0LAorICAgICAgICAvLyBqdXN0IHJldHVybiBET05FCisgICAgICAgIENoYXJhY3Rlckl0ZXJhdG9yIHRleHQgPSBnZXRUZXh0KCk7CisgICAgICAgIGlmIChvZmZzZXQgPT0gdGV4dC5nZXRFbmRJbmRleCgpKSB7CisgICAgICAgICAgICByZXR1cm4gQnJlYWtJdGVyYXRvci5ET05FOworICAgICAgICB9CisgICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgdGV4dCk7CisKKyAgICAgICAgLy8gb3RoZXJ3aXNlLCBzZXQgb3VyIGludGVybmFsIGl0ZXJhdGlvbiBwb3NpdGlvbiAodGVtcG9yYXJpbHkpCisgICAgICAgIC8vIHRvIHRoZSBwb3NpdGlvbiBwYXNzZWQgaW4uICBJZiB0aGlzIGlzIHRoZSBfYmVnaW5uaW5nXyBwb3NpdGlvbiwKKyAgICAgICAgLy8gdGhlbiB3ZSBjYW4ganVzdCB1c2UgbmV4dCgpIHRvIGdldCBvdXIgcmV0dXJuIHZhbHVlCisgICAgICAgIHRleHQuc2V0SW5kZXgob2Zmc2V0KTsKKyAgICAgICAgaWYgKG9mZnNldCA9PSB0ZXh0LmdldEJlZ2luSW5kZXgoKSkgeworICAgICAgICAgICAgcmV0dXJuIGhhbmRsZU5leHQoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIG90aGVyd2lzZSwgd2UgaGF2ZSB0byBzeW5jIHVwIGZpcnN0LiAgVXNlIGhhbmRsZVByZXZpb3VzKCkgdG8gYmFjaworICAgICAgICAvLyB1cyB1cCB0byBhIGtub3duIGJyZWFrIHBvc2l0aW9uIGJlZm9yZSB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uIChpZgorICAgICAgICAvLyB3ZSBjYW4gZGV0ZXJtaW5lIHRoYXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbiBpcyBhIGJyZWFrIHBvc2l0aW9uLAorICAgICAgICAvLyB3ZSBkb24ndCBiYWNrIHVwIGF0IGFsbCkuICBUaGlzIG1heSBvciBtYXkgbm90IGJlIHRoZSBsYXN0IGJyZWFrCisgICAgICAgIC8vIHBvc2l0aW9uIGF0IG9yIGJlZm9yZSBvdXIgc3RhcnRpbmcgcG9zaXRpb24uICBBZHZhbmNlIGZvcndhcmQKKyAgICAgICAgLy8gZnJvbSBoZXJlIHVudGlsIHdlJ3ZlIHBhc3NlZCB0aGUgc3RhcnRpbmcgcG9zaXRpb24uICBUaGUgcG9zaXRpb24KKyAgICAgICAgLy8gd2Ugc3RvcCBvbiB3aWxsIGJlIHRoZSBmaXJzdCBicmVhayBwb3NpdGlvbiBhZnRlciB0aGUgc3BlY2lmaWVkIG9uZS4KKyAgICAgICAgaW50IHJlc3VsdCA9IGhhbmRsZVByZXZpb3VzKCk7CisgICAgICAgIHdoaWxlIChyZXN1bHQgIT0gQnJlYWtJdGVyYXRvci5ET05FICYmIHJlc3VsdCA8PSBvZmZzZXQpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IGhhbmRsZU5leHQoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIGl0ZXJhdG9yIHRvIHJlZmVyIHRvIHRoZSBsYXN0IGJvdW5kYXJ5IHBvc2l0aW9uIGJlZm9yZSB0aGUKKyAgICAgKiBzcGVjaWZpZWQgcG9zaXRpb24uCisgICAgICogQHBhcmFtIG9mZnNldCBUaGUgcG9zaXRpb24gdG8gYmVnaW4gc2VhcmNoaW5nIGZvciBhIGJyZWFrIGZyb20uCisgICAgICogQHJldHVybiBUaGUgcG9zaXRpb24gb2YgdGhlIGxhc3QgYm91bmRhcnkgYmVmb3JlIHRoZSBzdGFydGluZyBwb3NpdGlvbi4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IHByZWNlZGluZyhpbnQgb2Zmc2V0KSB7CisgICAgICAgIC8vIGlmIHdlIHN0YXJ0IGJ5IHVwZGF0aW5nIHRoZSBjdXJyZW50IGl0ZXJhdGlvbiBwb3NpdGlvbiB0byB0aGUKKyAgICAgICAgLy8gcG9zaXRpb24gc3BlY2lmaWVkIGJ5IHRoZSBjYWxsZXIsIHdlIGNhbiBqdXN0IHVzZSBwcmV2aW91cygpCisgICAgICAgIC8vIHRvIGNhcnJ5IG91dCB0aGlzIG9wZXJhdGlvbgorICAgICAgICBDaGFyYWN0ZXJJdGVyYXRvciB0ZXh0ID0gZ2V0VGV4dCgpOworICAgICAgICBjaGVja09mZnNldChvZmZzZXQsIHRleHQpOworICAgICAgICB0ZXh0LnNldEluZGV4KG9mZnNldCk7CisgICAgICAgIHJldHVybiBwcmV2aW91cygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgc3BlY2ZpZWQgcG9zaXRpb24gaXMgYSBib3VuZGFyeSBwb3NpdGlvbi4gIEFzIGEgc2lkZQorICAgICAqIGVmZmVjdCwgbGVhdmVzIHRoZSBpdGVyYXRvciBwb2ludGluZyB0byB0aGUgZmlyc3QgYm91bmRhcnkgcG9zaXRpb24gYXQKKyAgICAgKiBvciBhZnRlciAib2Zmc2V0Ii4KKyAgICAgKiBAcGFyYW0gb2Zmc2V0IHRoZSBvZmZzZXQgdG8gY2hlY2suCisgICAgICogQHJldHVybiBUcnVlIGlmICJvZmZzZXQiIGlzIGEgYm91bmRhcnkgcG9zaXRpb24uCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNCb3VuZGFyeShpbnQgb2Zmc2V0KSB7CisgICAgICAgIENoYXJhY3Rlckl0ZXJhdG9yIHRleHQgPSBnZXRUZXh0KCk7CisgICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgdGV4dCk7CisgICAgICAgIGlmIChvZmZzZXQgPT0gdGV4dC5nZXRCZWdpbkluZGV4KCkpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgLy8gdG8gY2hlY2sgd2hldGhlciB0aGlzIGlzIGEgYm91bmRhcnksIHdlIGNhbiB1c2UgZm9sbG93aW5nKCkgb24gdGhlCisgICAgICAgIC8vIHBvc2l0aW9uIGJlZm9yZSB0aGUgc3BlY2lmaWVkIG9uZSBhbmQgcmV0dXJuIHRydWUgaWYgdGhlIHBvc2l0aW9uIHdlCisgICAgICAgIC8vIGdldCBiYWNrIGlzIHRoZSBvbmUgdGhlIHVzZXIgc3BlY2lmaWVkCisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGZvbGxvd2luZyhvZmZzZXQgLSAxKSA9PSBvZmZzZXQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IGl0ZXJhdGlvbiBwb3NpdGlvbi4KKyAgICAgKiBAcmV0dXJuIFRoZSBjdXJyZW50IGl0ZXJhdGlvbiBwb3NpdGlvbi4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGN1cnJlbnQoKSB7CisgICAgICAgIHJldHVybiBnZXRUZXh0KCkuZ2V0SW5kZXgoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSBDaGFyYWN0ZXJJdGVyYXRvciBvdmVyIHRoZSB0ZXh0IGJlaW5nIGFuYWx5emVkLiAgVGhpcyB2ZXJzaW9uCisgICAgICogb2YgdGhpcyBtZXRob2QgcmV0dXJucyB0aGUgYWN0dWFsIENoYXJhY3Rlckl0ZXJhdG9yIHdlJ3JlIHVzaW5nIGludGVybmFsbHkuCisgICAgICogQ2hhbmdpbmcgdGhlIHN0YXRlIG9mIHRoaXMgaXRlcmF0b3IgY2FuIGhhdmUgdW5kZWZpbmVkIGNvbnNlcXVlbmNlcy4gIElmCisgICAgICogeW91IG5lZWQgdG8gY2hhbmdlIGl0LCBjbG9uZSBpdCBmaXJzdC4KKyAgICAgKiBAcmV0dXJuIEFuIGl0ZXJhdG9yIG92ZXIgdGhlIHRleHQgYmVpbmcgYW5hbHl6ZWQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIENoYXJhY3Rlckl0ZXJhdG9yIGdldFRleHQoKSB7CisgICAgICAgIC8vIFRoZSBpdGVyYXRvciBpcyBpbml0aWFsaXplZCBwb2ludGluZyB0byBubyB0ZXh0IGF0IGFsbCwgc28gaWYgdGhpcworICAgICAgICAvLyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hpbGUgd2UncmUgaW4gdGhhdCBzdGF0ZSwgd2UgaGF2ZSB0byBmdWRnZSBhbgorICAgICAgICAvLyBhbiBpdGVyYXRvciB0byByZXR1cm4uCisgICAgICAgIGlmICh0ZXh0ID09IG51bGwpIHsKKyAgICAgICAgICAgIHRleHQgPSBuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IoIiIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0ZXh0OworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCB0aGUgaXRlcmF0b3IgdG8gYW5hbHl6ZSBhIG5ldyBwaWVjZSBvZiB0ZXh0LiAgVGhpcyBmdW5jdGlvbiByZXNldHMKKyAgICAgKiB0aGUgY3VycmVudCBpdGVyYXRpb24gcG9zaXRpb24gdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgdGV4dC4KKyAgICAgKiBAcGFyYW0gbmV3VGV4dCBBbiBpdGVyYXRvciBvdmVyIHRoZSB0ZXh0IHRvIGFuYWx5emUuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0VGV4dChDaGFyYWN0ZXJJdGVyYXRvciBuZXdUZXh0KSB7CisgICAgICAgIC8vIFRlc3QgdGV4dCB0byBzZWUgaWYgd2UgbmVlZCB0byB3cmFwIGl0IGluIGEgU2FmZUNoYXJJdGVyYXRvcjoKKyAgICAgICAgaW50IGVuZCA9IG5ld1RleHQuZ2V0RW5kSW5kZXgoKTsKKyAgICAgICAgbmV3VGV4dC5zZXRJbmRleChlbmQpOworICAgICAgICBpZiAobmV3VGV4dC5nZXRJbmRleCgpICE9IGVuZCkgeworICAgICAgICAgICAgLy8gZmFpbGVkIC0gd3JhcCBpbiBjb3JyZWN0IGltcGxlbWVudGF0aW9uCisgICAgICAgICAgICB0ZXh0ID0gbmV3IFNhZmVDaGFySXRlcmF0b3IobmV3VGV4dCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0ZXh0ID0gbmV3VGV4dDsKKyAgICAgICAgfQorICAgICAgICB0ZXh0LmZpcnN0KCk7CisgICAgfQorCisKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gaW1wbGVtZW50YXRpb24KKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAvKioKKyAgICAgKiBUaGlzIG1ldGhvZCBpcyB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBuZXh0KCkgbWV0aG9kLiAgQWxsIGl0ZXJhdGlvbgorICAgICAqIHZlY3RvcnMgdGhyb3VnaCBoZXJlLiAgVGhpcyBtZXRob2QgaW5pdGlhbGl6ZXMgdGhlIHN0YXRlIG1hY2hpbmUgdG8gc3RhdGUgMQorICAgICAqIGFuZCBhZHZhbmNlcyB0aHJvdWdoIHRoZSB0ZXh0IGNoYXJhY3RlciBieSBjaGFyYWN0ZXIgdW50aWwgd2UgcmVhY2ggdGhlIGVuZAorICAgICAqIG9mIHRoZSB0ZXh0IG9yIHRoZSBzdGF0ZSBtYWNoaW5lIHRyYW5zaXRpb25zIHRvIHN0YXRlIDAuICBXZSB1cGRhdGUgb3VyIHJldHVybgorICAgICAqIHZhbHVlIGV2ZXJ5IHRpbWUgdGhlIHN0YXRlIG1hY2hpbmUgcGFzc2VzIHRocm91Z2ggYSBwb3NzaWJsZSBlbmQgc3RhdGUuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHJvdGVjdGVkIGludCBoYW5kbGVOZXh0KCkgeworICAgICAgICAvLyBpZiB3ZSdyZSBhbHJlYWR5IGF0IHRoZSBlbmQgb2YgdGhlIHRleHQsIHJldHVybiBET05FLgorICAgICAgICBDaGFyYWN0ZXJJdGVyYXRvciB0ZXh0ID0gZ2V0VGV4dCgpOworICAgICAgICBpZiAodGV4dC5nZXRJbmRleCgpID09IHRleHQuZ2V0RW5kSW5kZXgoKSkgeworICAgICAgICAgICAgcmV0dXJuIEJyZWFrSXRlcmF0b3IuRE9ORTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIG5vIG1hdHRlciB3aGF0LCB3ZSBhbHdheXMgYWR2YW5jZSBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyIGZvcndhcmQKKyAgICAgICAgaW50IHJlc3VsdCA9IHRleHQuZ2V0SW5kZXgoKSArIDE7CisgICAgICAgIGludCBsb29rYWhlYWRSZXN1bHQgPSAwOworCisgICAgICAgIC8vIGJlZ2luIGluIHN0YXRlIDEKKyAgICAgICAgaW50IHN0YXRlID0gU1RBUlRfU1RBVEU7CisgICAgICAgIGludCBjYXRlZ29yeTsKKyAgICAgICAgY2hhciBjID0gdGV4dC5jdXJyZW50KCk7CisgICAgICAgIGNoYXIgbGFzdEMgPSBjOworICAgICAgICBpbnQgbGFzdENQb3MgPSAwOworCisgICAgICAgIC8vIGlmIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhpcyBzZWdtZW50IGlzIGFuIGlnbm9yZSBjaGFyYWN0ZXIgKHdoaWNoIGNhbiBoYXBwZW4KKyAgICAgICAgLy8gd2hlbiBpdCdzIGVpdGhlciB0aGUgZmlyc3QgY2hhcmFjdGVyIGluIHRoZSBmaWxlIG9yIGZvbGxvd3MgYSBtYW5kYXRvcnkgYnJlYWsKKyAgICAgICAgLy8gY2hhcmFjdGVyKSwgYW5kIHRoZSBmaXJzdCBub24taWdub3JlIGNoYXJhY3RlciBpc24ndCBhIGdsdWUgY2hhcmFjdGVyLCBhbHdheXMKKyAgICAgICAgLy8gcHV0IGEgYnJlYWsgYmV0d2VlbiB0aGUgaWdub3JlIGNoYXJhY3RlcnMgYW5kIHRoZSByZXN0IG9mIHRoZSB0ZXh0CisgICAgICAgIGlmIChsb29rdXBDYXRlZ29yeShjKSA9PSBJR05PUkUpIHsKKyAgICAgICAgICAgIHdoaWxlIChsb29rdXBDYXRlZ29yeShjKSA9PSBJR05PUkUpCisgICAgICAgICAgICAgICAgYyA9IHRleHQubmV4dCgpOworCisgICAgICAgICAgICBpZiAoQ2hhcmFjdGVyLmdldFR5cGUoYykgPT0gQ2hhcmFjdGVyLk5PTl9TUEFDSU5HX01BUksgfHwgQ2hhcmFjdGVyLmdldFR5cGUoYykKKyAgICAgICAgICAgICAgICAgICAgPT0gQ2hhcmFjdGVyLkVOQ0xPU0lOR19NQVJLKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRleHQuZ2V0SW5kZXgoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIGxvb3AgdW50aWwgd2UgcmVhY2ggdGhlIGVuZCBvZiB0aGUgdGV4dCBvciB0cmFuc2l0aW9uIHRvIHN0YXRlIDAKKyAgICAgICAgd2hpbGUgKGMgIT0gQ2hhcmFjdGVySXRlcmF0b3IuRE9ORSAmJiBzdGF0ZSAhPSBTVE9QX1NUQVRFKSB7CisKKyAgICAgICAgICAgIC8vIGxvb2sgdXAgdGhlIGN1cnJlbnQgY2hhcmFjdGVyJ3MgY2hhcmFjdGVyIGNhdGVnb3J5ICh3aGljaCB0ZWxscyB1cworICAgICAgICAgICAgLy8gd2hpY2ggY29sdW1uIGluIHRoZSBzdGF0ZSB0YWJsZSB0byBsb29rIGF0KQorICAgICAgICAgICAgY2F0ZWdvcnkgPSBsb29rdXBDYXRlZ29yeShjKTsKKworICAgICAgICAgICAgLy8gaWYgdGhlIGNoYXJhY3RlciBpc24ndCBhbiBpZ25vcmUgY2hhcmFjdGVyLCBsb29rIHVwIGEgc3RhdGUKKyAgICAgICAgICAgIC8vIHRyYW5zaXRpb24gaW4gdGhlIHN0YXRlIHRhYmxlCisgICAgICAgICAgICBpZiAoY2F0ZWdvcnkgIT0gSUdOT1JFKSB7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBsb29rdXBTdGF0ZShzdGF0ZSwgY2F0ZWdvcnkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBpZiB0aGUgc3RhdGUgd2UndmUganVzdCB0cmFuc2l0aW9uZWQgdG8gaXMgYSBsb29rYWhlYWQgc3RhdGUsCisgICAgICAgICAgICAvLyAoYnV0IG5vdCBhbHNvIGFuIGVuZCBzdGF0ZSksIHNhdmUgaXRzIHBvc2l0aW9uLiAgSWYgaXQncworICAgICAgICAgICAgLy8gYm90aCBhIGxvb2thaGVhZCBzdGF0ZSBhbmQgYW4gZW5kIHN0YXRlLCB1cGRhdGUgdGhlIGJyZWFrIHBvc2l0aW9uCisgICAgICAgICAgICAvLyB0byB0aGUgbGFzdCBzYXZlZCBsb29rdXAtc3RhdGUgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChsb29rYWhlYWRTdGF0ZXNbc3RhdGVdKSB7CisgICAgICAgICAgICAgICAgaWYgKGVuZFN0YXRlc1tzdGF0ZV0pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxvb2thaGVhZFJlc3VsdCA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGxvb2thaGVhZFJlc3VsdDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRleHQuZ2V0SW5kZXgoKSArIDE7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGxvb2thaGVhZFJlc3VsdCA9IHRleHQuZ2V0SW5kZXgoKSArIDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBvdGhlcndpc2UsIGlmIHRoZSBzdGF0ZSB3ZSd2ZSBqdXN0IHRyYW5zaXRpb25lZCB0byBpcyBhbiBhY2NlcHRpbmcKKyAgICAgICAgICAgIC8vIHN0YXRlLCB1cGRhdGUgdGhlIGJyZWFrIHBvc2l0aW9uIHRvIGJlIHRoZSBjdXJyZW50IGl0ZXJhdGlvbiBwb3NpdGlvbgorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGVuZFN0YXRlc1tzdGF0ZV0pIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdGV4dC5nZXRJbmRleCgpICsgMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIGtlZXAgdHJhY2sgb2YgdGhlIGxhc3QgInJlYWwiIGNoYXJhY3RlciB3ZSBzYXcuICBJZiB0aGlzIGNoYXJhY3RlciBpc24ndCBhbgorICAgICAgICAgICAgLy8gaWdub3JlIGNoYXJhY3RlciwgdGFrZSBub3RlIG9mIGl0IGFuZCBpdHMgcG9zaXRpb24gaW4gdGhlIHRleHQKKyAgICAgICAgICAgIGlmIChjYXRlZ29yeSAhPSBJR05PUkUgJiYgc3RhdGUgIT0gU1RPUF9TVEFURSkgeworICAgICAgICAgICAgICAgIGxhc3RDID0gYzsKKyAgICAgICAgICAgICAgICBsYXN0Q1BvcyA9IHRleHQuZ2V0SW5kZXgoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGMgPSB0ZXh0Lm5leHQoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGlmIHdlJ3ZlIHJ1biBvZmYgdGhlIGVuZCBvZiB0aGUgdGV4dCwgYW5kIHRoZSB2ZXJ5IGxhc3QgY2hhcmFjdGVyIHRvb2sgdXMgaW50bworICAgICAgICAvLyBhIGxvb2thaGVhZCBzdGF0ZSwgYWR2YW5jZSB0aGUgYnJlYWsgcG9zaXRpb24gdG8gdGhlIGxvb2thaGVhZCBwb3NpdGlvbgorICAgICAgICAvLyAodGhlIHRoZW9yeSBoZXJlIGlzIHRoYXQgaWYgdGhlcmUgYXJlIG5vIGNoYXJhY3RlcnMgYXQgYWxsIGFmdGVyIHRoZSBsb29rYWhlYWQKKyAgICAgICAgLy8gcG9zaXRpb24sIHRoYXQgYWx3YXlzIG1hdGNoZXMgdGhlIGxvb2thaGVhZCBjcml0ZXJpYSkKKyAgICAgICAgaWYgKGMgPT0gQ2hhcmFjdGVySXRlcmF0b3IuRE9ORSAmJiBsb29rYWhlYWRSZXN1bHQgPT0gdGV4dC5nZXRFbmRJbmRleCgpKSB7CisgICAgICAgICAgICByZXN1bHQgPSBsb29rYWhlYWRSZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICAvLyBpZiB0aGUgbGFzdCBjaGFyYWN0ZXIgd2Ugc2F3IGJlZm9yZSB0aGUgb25lIHRoYXQgdG9vayB1cyBpbnRvIHRoZSBzdG9wIHN0YXRlCisgICAgICAgIC8vIHdhcyBhIG1hbmRhdG9yeSBicmVha2luZyBjaGFyYWN0ZXIsIHRoZW4gdGhlIGJyZWFrIHBvc2l0aW9uIGdvZXMgcmlnaHQgYWZ0ZXIgaXQKKyAgICAgICAgLy8gKHRoaXMgaXMgaGVyZSBzbyB0aGF0IGJyZWFrcyBjb21lIGJlZm9yZSwgcmF0aGVyIHRoYW4gYWZ0ZXIsIGEgc3RyaW5nIG9mCisgICAgICAgIC8vIGlnbm9yZSBjaGFyYWN0ZXJzIHdoZW4gdGhleSBmb2xsb3cgYSBtYW5kYXRvcnkgYnJlYWsgY2hhcmFjdGVyKQorICAgICAgICBlbHNlIGlmICgiXG5cclxmXHUyMDI4XHUyMDI5Ii5pbmRleE9mKGxhc3RDKSAhPSAtMSkgeworICAgICAgICAgICAgcmVzdWx0ID0gbGFzdENQb3MgKyAxOworICAgICAgICB9CisKKyAgICAgICAgdGV4dC5zZXRJbmRleChyZXN1bHQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8qKgorICAgICAqIFRoaXMgbWV0aG9kIGJhY2tzIHRoZSBpdGVyYXRvciBiYWNrIHVwIHRvIGEgInNhZmUgcG9zaXRpb24iIGluIHRoZSB0ZXh0LgorICAgICAqIFRoaXMgaXMgYSBwb3NpdGlvbiB0aGF0IHdlIGtub3csIHdpdGhvdXQgYW55IGNvbnRleHQsIG11c3QgYmUgYSBicmVhayBwb3NpdGlvbi4KKyAgICAgKiBUaGUgdmFyaW91cyBjYWxsaW5nIG1ldGhvZHMgdGhlbiBpdGVyYXRlIGZvcndhcmQgZnJvbSB0aGlzIHNhZmUgcG9zaXRpb24gdG8KKyAgICAgKiB0aGUgYXBwcm9wcmlhdGUgcG9zaXRpb24gdG8gcmV0dXJuLiAgKEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIGRlc2NyaXB0aW9uCisgICAgICogb2YgYnVpbGRCYWNrd2FyZHNTdGF0ZVRhYmxlKCkgaW4gUnVsZUJhc2VkQnJlYWtJdGVyYXRvci5CdWlsZGVyLikKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgaW50IGhhbmRsZVByZXZpb3VzKCkgeworICAgICAgICBDaGFyYWN0ZXJJdGVyYXRvciB0ZXh0ID0gZ2V0VGV4dCgpOworICAgICAgICBpbnQgc3RhdGUgPSBTVEFSVF9TVEFURTsKKyAgICAgICAgaW50IGNhdGVnb3J5ID0gMDsKKyAgICAgICAgaW50IGxhc3RDYXRlZ29yeSA9IDA7CisgICAgICAgIGNoYXIgYyA9IHRleHQuY3VycmVudCgpOworCisgICAgICAgIC8vIGxvb3AgdW50aWwgd2UgcmVhY2ggdGhlIGJlZ2lubmluZyBvZiB0aGUgdGV4dCBvciB0cmFuc2l0aW9uIHRvIHN0YXRlIDAKKyAgICAgICAgd2hpbGUgKGMgIT0gQ2hhcmFjdGVySXRlcmF0b3IuRE9ORSAmJiBzdGF0ZSAhPSBTVE9QX1NUQVRFKSB7CisvL1N5c3RlbS5vdXQucHJpbnQoIiAiICsgdGV4dC5nZXRJbmRleCgpKTsKKworICAgICAgICAgICAgLy8gc2F2ZSB0aGUgbGFzdCBjaGFyYWN0ZXIncyBjYXRlZ29yeSBhbmQgbG9vayB1cCB0aGUgY3VycmVudAorICAgICAgICAgICAgLy8gY2hhcmFjdGVyJ3MgY2F0ZWdvcnkKKyAgICAgICAgICAgIGxhc3RDYXRlZ29yeSA9IGNhdGVnb3J5OworICAgICAgICAgICAgY2F0ZWdvcnkgPSBsb29rdXBDYXRlZ29yeShjKTsKKworICAgICAgICAgICAgLy8gaWYgdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGlzbid0IGFuIGlnbm9yZSBjaGFyYWN0ZXIsIGxvb2sgdXAgYQorICAgICAgICAgICAgLy8gc3RhdGUgdHJhbnNpdGlvbiBpbiB0aGUgYmFja3dhcmRzIHN0YXRlIHRhYmxlCisgICAgICAgICAgICBpZiAoY2F0ZWdvcnkgIT0gSUdOT1JFKSB7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBsb29rdXBCYWNrd2FyZFN0YXRlKHN0YXRlLCBjYXRlZ29yeSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIHRoZW4gYWR2YW5jZSBvbmUgY2hhcmFjdGVyIGJhY2t3YXJkcworICAgICAgICAgICAgYyA9IHRleHQucHJldmlvdXMoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGlmIHdlIGRpZG4ndCBtYXJjaCBvZmYgdGhlIGJlZ2lubmluZyBvZiB0aGUgdGV4dCwgd2UncmUgZWl0aGVyIG9uZSBvciB0d28KKyAgICAgICAgLy8gcG9zaXRpb25zIGF3YXkgZnJvbSB0aGUgcmVhbCBicmVhayBwb3NpdGlvbi4gIChPbmUgYmVjYXVzZSBvZiB0aGUgY2FsbCB0bworICAgICAgICAvLyBwcmV2aW91cygpIGF0IHRoZSBlbmQgb2YgdGhlIGxvb3AgYWJvdmUsIGFuZCBhbm90aGVyIGJlY2F1c2UgdGhlIGNoYXJhY3RlcgorICAgICAgICAvLyB0aGF0IHRha2VzIHVzIGludG8gdGhlIHN0b3Agc3RhdGUgd2lsbCBhbHdheXMgYmUgdGhlIGNoYXJhY3RlciBCRUZPUkUKKyAgICAgICAgLy8gdGhlIGJyZWFrIHBvc2l0aW9uLikKKyAgICAgICAgaWYgKGMgIT0gQ2hhcmFjdGVySXRlcmF0b3IuRE9ORSkgeworICAgICAgICAgICAgaWYgKGxhc3RDYXRlZ29yeSAhPSBJR05PUkUpIHsKKyAgICAgICAgICAgICAgICB0ZXh0LnNldEluZGV4KHRleHQuZ2V0SW5kZXgoKSArIDIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgdGV4dC5uZXh0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKy8vU3lzdGVtLm91dC5wcmludCgiLCIpOworICAgICAgICByZXR1cm4gdGV4dC5nZXRJbmRleCgpOworICAgIH0KKworLy9zdGF0aWMgaW50IHZpc2l0ZWRDaGFycyA9IDA7CisgICAgLyoqCisgICAgICogTG9va3MgdXAgYSBjaGFyYWN0ZXIncyBjYXRlZ29yeSAoaS5lLiwgaXRzIGNhdGVnb3J5IGZvciBicmVha2luZyBwdXJwb3NlcywKKyAgICAgKiBub3QgaXRzIFVuaWNvZGUgY2F0ZWdvcnkpCisgICAgICovCisgICAgcHJvdGVjdGVkIGludCBsb29rdXBDYXRlZ29yeShjaGFyIGMpIHsKKy8vKyt2aXNpdGVkQ2hhcnM7CisgICAgICAgIHJldHVybiBjaGFyQ2F0ZWdvcnlUYWJsZS5lbGVtZW50QXQoYyk7CisgICAgfQorCisvKgorc3RhdGljIHZvaWQgcHJpbnRWaXNpdGVkQ2hhckNvdW50KCkgeworU3lzdGVtLm91dC5wcmludGxuKCJUb3RhbCBudW1iZXIgb2YgY2hhcmFjdGVycyB2aXNpdGVkID0gIiArIHZpc2l0ZWRDaGFycyk7Cit2aXNpdGVkQ2hhcnMgPSAwOworfQorKi8KKworICAgIC8qKgorICAgICAqIEdpdmVuIGEgY3VycmVudCBzdGF0ZSBhbmQgYSBjaGFyYWN0ZXIgY2F0ZWdvcnksIGxvb2tzIHVwIHRoZQorICAgICAqIG5leHQgc3RhdGUgdG8gdHJhbnNpdGlvbiB0byBpbiB0aGUgc3RhdGUgdGFibGUuCisgICAgICovCisgICAgcHJvdGVjdGVkIGludCBsb29rdXBTdGF0ZShpbnQgc3RhdGUsIGludCBjYXRlZ29yeSkgeworICAgICAgICByZXR1cm4gc3RhdGVUYWJsZVtzdGF0ZSAqIG51bUNhdGVnb3JpZXMgKyBjYXRlZ29yeV07CisgICAgfQorCisgICAgLyoqCisgICAgICogR2l2ZW4gYSBjdXJyZW50IHN0YXRlIGFuZCBhIGNoYXJhY3RlciBjYXRlZ29yeSwgbG9va3MgdXAgdGhlCisgICAgICogbmV4dCBzdGF0ZSB0byB0cmFuc2l0aW9uIHRvIGluIHRoZSBiYWNrd2FyZHMgc3RhdGUgdGFibGUuCisgICAgICovCisgICAgcHJvdGVjdGVkIGludCBsb29rdXBCYWNrd2FyZFN0YXRlKGludCBzdGF0ZSwgaW50IGNhdGVnb3J5KSB7CisgICAgICAgIHJldHVybiBiYWNrd2FyZHNTdGF0ZVRhYmxlW3N0YXRlICogbnVtQ2F0ZWdvcmllcyArIGNhdGVnb3J5XTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0aW9uIGZvciBjb21wdXRpbmcgdGhlIGludGVyc2VjdGlvbiBvZgorICAgICAqIHR3byA8Y29kZT5Vbmljb2RlU2V0PC9jb2RlPiBvYmplY3RzLgorICAgICAqIEBwYXJhbSBhLCBiIHRoZSB0d28gPGNvZGU+VW5pY29kZVNldDwvY29kZT5zIHRvIGludGVyc2VjdAorICAgICAqIEByZXR1cm4gYSBuZXcgPGNvZGU+VW5pY29kZVNldDwvY29kZT4gd2hpY2ggaXMgdGhlIGludGVyc2VjdGlvbiBvZiBhIGFuZCBiCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgVW5pY29kZVNldCBpbnRlcnNlY3Rpb24oVW5pY29kZVNldCBhLCBVbmljb2RlU2V0IGIpCisgICAgeworICAgICAgICBVbmljb2RlU2V0IHJlc3VsdCA9IG5ldyBVbmljb2RlU2V0KGEpOworCisgICAgICAgIHJlc3VsdC5yZXRhaW5BbGwoYik7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gUnVsZUJhc2VkQnJlYWtJdGVyYXRvci5CdWlsZGVyCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8qKgorICAgICAqIFRoZSBCdWlsZGVyIGNsYXNzIGhhcyB0aGUgam9iIG9mIGNvbnN0cnVjdGluZyBhIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IgZnJvbSBhCisgICAgICogdGV4dHVhbCBkZXNjcmlwdGlvbi4gIEEgQnVpbGRlciBpcyBjb25zdHJ1Y3RlZCBieSBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yJ3MKKyAgICAgKiBjb25zdHJ1Y3Rvciwgd2hpY2ggdXNlcyBpdCB0byBjb25zdHJ1Y3QgdGhlIGl0ZXJhdG9yIGl0c2VsZiBhbmQgdGhlbiB0aHJvd3MgaXQKKyAgICAgKiBhd2F5LgorICAgICAqIDxwPlRoZSBjb25zdHJ1Y3Rpb24gbG9naWMgaXMgc2VwYXJhdGVkIG91dCBpbnRvIGl0cyBvd24gY2xhc3MgZm9yIHR3byBwcmltYXJ5CisgICAgICogcmVhc29uczoKKyAgICAgKiA8dWw+PGxpPlRoZSBjb25zdHJ1Y3Rpb24gbG9naWMgaXMgcXVpdGUgc29waGlzdGljYXRlZCBhbmQgbGFyZ2UuICBTZXBhcmF0aW5nIGl0CisgICAgICogb3V0IGludG8gaXRzIG93biBjbGFzcyBtZWFucyB0aGUgY29kZSBtdXN0IG9ubHkgYmUgbG9hZGVkIGludG8gbWVtb3J5IHdoaWxlIGEKKyAgICAgKiBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIGlzIGJlaW5nIGNvbnN0cnVjdGVkLCBhbmQgY2FuIGJlIHB1cmdlZCBhZnRlciB0aGF0LgorICAgICAqIDxsaT5UaGVyZSBpcyBhIGZhaXIgYW1vdW50IG9mIHN0YXRlIHRoYXQgbXVzdCBiZSBtYWludGFpbmVkIHRocm91Z2hvdXQgdGhlCisgICAgICogY29uc3RydWN0aW9uIHByb2Nlc3MgdGhhdCBpcyBub3QgbmVlZGVkIGJ5IHRoZSBpdGVyYXRvciBhZnRlciBjb25zdHJ1Y3Rpb24uCisgICAgICogU2VwYXJhdGluZyB0aGlzIHN0YXRlIG91dCBpbnRvIGFub3RoZXIgY2xhc3MgcHJldmVudHMgYWxsIG9mIHRoZSBmdW5jdGlvbnMgdGhhdAorICAgICAqIGNvbnN0cnVjdCB0aGUgaXRlcmF0b3IgZnJvbSBoYXZpbmcgdG8gaGF2ZSByZWFsbHkgbG9uZyBwYXJhbWV0ZXIgbGlzdHMsCisgICAgICogKGhvcGVmdWxseSkgY29udHJpYnV0aW5nIHRvIHJlYWRhYmlsaXR5IGFuZCBtYWludGFpbmFiaWxpdHkuPC91bD4KKyAgICAgKiA8cD5JdCdkIGJlIHJlYWxseSBuaWNlIGlmIHRoaXMgY291bGQgYmUgYW4gaW5kZXBlbmRlbnQgY2xhc3MgcmF0aGVyIHRoYW4gYW4KKyAgICAgKiBpbm5lciBjbGFzcywgYmVjYXVzZSB0aGF0IHdvdWxkIHNob3J0ZW4gdGhlIHNvdXJjZSBmaWxlIGNvbnNpZGVyYWJseSwgYnV0CisgICAgICogbWFraW5nIEJ1aWxkZXIgYW4gaW5uZXIgY2xhc3Mgb2YgUnVsZUJhc2VkQnJlYWtJdGVyYXRvciBhbGxvd3MgaXQgZGlyZWN0IGFjY2VzcworICAgICAqIHRvIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IncyBwcml2YXRlIG1lbWJlcnMsIHdoaWNoIHNhdmVzIHVzIGZyb20gaGF2aW5nIHRvCisgICAgICogcHJvdmlkZSBzb21lIGtpbmQgb2YgImJhY2sgZG9vciIgdG8gdGhlIEJ1aWxkZXIgY2xhc3MgdGhhdCBjb3VsZCB0aGVuIGFsc28gYmUKKyAgICAgKiB1c2VkIGJ5IG90aGVyIGNsYXNzZXMuCisgICAgICogQGludGVybmFsCisgICAgICovCisgICAgcHJvdGVjdGVkIGNsYXNzIEJ1aWxkZXIgeworICAgICAgICAvKioKKyAgICAgICAgICogQSB0ZW1wb3JhcnkgaG9sZGluZyBwbGFjZSB1c2VkIGZvciBjYWxjdWxhdGluZyB0aGUgY2hhcmFjdGVyIGNhdGVnb3JpZXMuCisgICAgICAgICAqIFRoaXMgb2JqZWN0IGNvbnRhaW5zIFVuaWNvZGVTZXQgb2JqZWN0cy4KKyAgICAgICAgICogQGludGVybmFsCisgICAgICAgICAqLworICAgICAgICBwcm90ZWN0ZWQgVmVjdG9yIGNhdGVnb3JpZXMgPSBudWxsOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBBIHRhYmxlIHVzZWQgdG8gbWFwIHBhcnRzIG9mIHJlZ2V4cCB0ZXh0IHRvIGxpc3RzIG9mIGNoYXJhY3RlciBjYXRlZ29yaWVzLAorICAgICAgICAgKiByYXRoZXIgdGhhbiBoYXZpbmcgdG8gZmlndXJlIHRoZW0gb3V0IGZyb20gc2NyYXRjaCBlYWNoIHRpbWUKKyAgICAgICAgICogQGludGVybmFsCisgICAgICAgICAqLworICAgICAgICBwcm90ZWN0ZWQgSGFzaHRhYmxlIGV4cHJlc3Npb25zID0gbnVsbDsKKworICAgICAgICAvKioKKyAgICAgICAgICogQSB0ZW1wb3JhcnkgaG9sZGluZyBwbGFjZSBmb3IgdGhlIGxpc3Qgb2YgaWdub3JlIGNoYXJhY3RlcnMKKyAgICAgICAgICogQGludGVybmFsCisgICAgICAgICAqLworICAgICAgICBwcm90ZWN0ZWQgVW5pY29kZVNldCBpZ25vcmVDaGFycyA9IG51bGw7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEEgdGVtcG9yYXJ5IGhvbGRpbmcgcGxhY2Ugd2hlcmUgdGhlIGZvcndhcmQgc3RhdGUgdGFibGUgaXMgYnVpbHQKKyAgICAgICAgICogQGludGVybmFsCisgICAgICAgICAqLworICAgICAgICBwcm90ZWN0ZWQgVmVjdG9yIHRlbXBTdGF0ZVRhYmxlID0gbnVsbDsKKworICAgICAgICAvKioKKyAgICAgICAgICogQSBsaXN0IG9mIGFsbCB0aGUgc3RhdGVzIHRoYXQgaGF2ZSB0byBiZSBmaWxsZWQgaW4gd2l0aCB0cmFuc2l0aW9ucyB0byB0aGUKKyAgICAgICAgICogbmV4dCBzdGF0ZSB0aGF0IGlzIGNyZWF0ZWQuICBVc2VkIHdoZW4gYnVpbGRpbmcgdGhlIHN0YXRlIHRhYmxlIGZyb20gdGhlCisgICAgICAgICAqIHJlZ3VsYXIgZXhwcmVzc2lvbnMuCisgICAgICAgICAqIEBpbnRlcm5hbAorICAgICAgICAgKi8KKyAgICAgICAgcHJvdGVjdGVkIFZlY3RvciBkZWNpc2lvblBvaW50TGlzdCA9IG51bGw7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEEgc3RhY2sgZm9yIGhvbGRpbmcgZGVjaXNpb24gcG9pbnQgbGlzdHMuICBUaGlzIGlzIHVzZWQgdG8gaGFuZGxlIG5lc3RlZAorICAgICAgICAgKiBwYXJlbnRoZXNlcyBhbmQgYnJhY2VzIGluIHJlZ2V4cHMuCisgICAgICAgICAqIEBpbnRlcm5hbAorICAgICAgICAgKi8KKyAgICAgICAgcHJvdGVjdGVkIFN0YWNrIGRlY2lzaW9uUG9pbnRTdGFjayA9IG51bGw7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEEgbGlzdCBvZiBzdGF0ZXMgdGhhdCBsb29wIGJhY2sgb24gdGhlbXNlbHZlcy4gIFVzZWQgdG8gaGFuZGxlIC4qPworICAgICAgICAgKiBAaW50ZXJuYWwKKyAgICAgICAgICovCisgICAgICAgIHByb3RlY3RlZCBWZWN0b3IgbG9vcGluZ1N0YXRlcyA9IG51bGw7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIExvb3Bpbmcgc3RhdGVzIGFjdHVhbGx5IGhhdmUgdG8gYmUgYmFja2ZpbGxlZCBsYXRlciBpbiB0aGUgcHJvY2VzcworICAgICAgICAgKiB0aGFuIGV2ZXJ5dGhpbmcgZWxzZS4gIFRoaXMgaXMgd2hlcmUgYSB0aGUgbGlzdCBvZiBzdGF0ZXMgdG8gYmFja2ZpbGwKKyAgICAgICAgICogaXMgYWNjdW11bGF0ZWQuICBUaGlzIGlzIGFsc28gdXNlZCB0byBoYW5kbGUgLio/CisgICAgICAgICAqIEBpbnRlcm5hbAorICAgICAgICAgKi8KKyAgICAgICAgcHJvdGVjdGVkIFZlY3RvciBzdGF0ZXNUb0JhY2tmaWxsID0gbnVsbDsKKworICAgICAgICAvKioKKyAgICAgICAgICogQSBsaXN0IG1hcHBpbmcgcGFpcnMgb2Ygc3RhdGUgbnVtYmVycyBmb3Igc3RhdGVzIHRoYXQgYXJlIHRvIGJlIGNvbWJpbmVkCisgICAgICAgICAqIHRvIHRoZSBzdGF0ZSBudW1iZXIgb2YgdGhlIHN0YXRlIHJlcHJlc2VudGluZyB0aGVpciBjb21iaW5hdGlvbi4gIFVzZWQKKyAgICAgICAgICogaW4gdGhlIHByb2Nlc3Mgb2YgbWFraW5nIHRoZSBzdGF0ZSB0YWJsZSBkZXRlcm1pbmlzdGljIHRvIHByZXZlbnQKKyAgICAgICAgICogaW5maW5pdGUgcmVjdXJzaW9uLgorICAgICAgICAgKiBAaW50ZXJuYWwKKyAgICAgICAgICovCisgICAgICAgIHByb3RlY3RlZCBWZWN0b3IgbWVyZ2VMaXN0ID0gbnVsbDsKKworICAgICAgICAvKioKKyAgICAgICAgICogQSBmbGFnIHRoYXQgaXMgdXNlZCB0byBpbmRpY2F0ZSB3aGVuIHRoZSBsaXN0IG9mIGxvb3Bpbmcgc3RhdGVzIGNhbgorICAgICAgICAgKiBiZSByZXNldC4KKyAgICAgICAgICogQGludGVybmFsCisgICAgICAgICAqLworICAgICAgICBwcm90ZWN0ZWQgYm9vbGVhbiBjbGVhckxvb3BpbmdTdGF0ZXMgPSBmYWxzZTsKKworICAgICAgICAvKioKKyAgICAgICAgICogQSBiaXQgbWFzayB1c2VkIHRvIGluZGljYXRlIGEgYml0IGluIHRoZSB0YWJsZSdzIGZsYWdzIGNvbHVtbiB0aGF0IG1hcmtzIGEKKyAgICAgICAgICogc3RhdGUgYXMgYW4gYWNjZXB0aW5nIHN0YXRlLgorICAgICAgICAgKiBAaW50ZXJuYWwKKyAgICAgICAgICovCisgICAgICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IEVORF9TVEFURV9GTEFHID0gMHg4MDAwOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBBIGJpdCBtYXNrIHVzZWQgdG8gaW5kaWNhdGUgYSBiaXQgaW4gdGhlIHRhYmxlJ3MgZmxhZ3MgY29sdW1uIHRoYXQgbWFya3MgYQorICAgICAgICAgKiBzdGF0ZSBhcyBvbmUgdGhlIGJ1aWxkZXIgc2hvdWxkbid0IGxvb3AgdG8gYW55IGxvb3Bpbmcgc3RhdGVzCisgICAgICAgICAqIEBpbnRlcm5hbAorICAgICAgICAgKi8KKyAgICAgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgRE9OVF9MT09QX0ZMQUcgPSAweDQwMDA7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEEgYml0IG1hc2sgdXNlZCB0byBpbmRpY2F0ZSBhIGJpdCBpbiB0aGUgdGFibGUncyBmbGFncyBjb2x1bW4gdGhhdCBtYXJrcyBhCisgICAgICAgICAqIHN0YXRlIGFzIGEgbG9va2FoZWFkIHN0YXRlLgorICAgICAgICAgKiBAaW50ZXJuYWwKKyAgICAgICAgICovCisgICAgICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IExPT0tBSEVBRF9TVEFURV9GTEFHID0gMHgyMDAwOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBBIGJpdCBtYXNrIHJlcHJlc2VudGluZyB0aGUgdW5pb24gb2YgdGhlIG1hc2sgdmFsdWVzIGxpc3RlZCBhYm92ZS4KKyAgICAgICAgICogVXNlZCBmb3IgY2xlYXJpbmcgb3IgbWFza2luZyBvZmYgdGhlIGZsYWcgYml0cy4KKyAgICAgICAgICogQGludGVybmFsCisgICAgICAgICAqLworICAgICAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBBTExfRkxBR1MgPSBFTkRfU1RBVEVfRkxBRyB8IExPT0tBSEVBRF9TVEFURV9GTEFHCisgICAgICAgICAgICAgICAgfCBET05UX0xPT1BfRkxBRzsKKworICAgICAgICAvKioKKyAgICAgICAgICogTm8gc3BlY2lhbCBjb25zdHJ1Y3Rpb24gaXMgcmVxdWlyZWQgZm9yIHRoZSBCdWlsZGVyLgorICAgICAgICAgKiBAaW50ZXJuYWwKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBCdWlsZGVyKCkgeworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRoaXMgaXMgdGhlIG1haW4gZnVuY3Rpb24gZm9yIHNldHRpbmcgdXAgdGhlIEJyZWFrSXRlcmF0b3IncyB0YWJsZXMuICBJdAorICAgICAgICAgKiBqdXN0IHZlY3RvcnMgZGlmZmVyZW50IHBhcnRzIG9mIHRoZSBqb2Igb2ZmIHRvIG90aGVyIGZ1bmN0aW9ucy4KKyAgICAgICAgICogQGludGVybmFsCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgdm9pZCBidWlsZEJyZWFrSXRlcmF0b3IoKSB7CisgICAgICAgICAgICBWZWN0b3IgdGVtcFJ1bGVMaXN0ID0gYnVpbGRSdWxlTGlzdChkZXNjcmlwdGlvbik7CisgICAgICAgICAgICBidWlsZENoYXJDYXRlZ29yaWVzKHRlbXBSdWxlTGlzdCk7CisgICAgICAgICAgICBidWlsZFN0YXRlVGFibGUodGVtcFJ1bGVMaXN0KTsKKyAgICAgICAgICAgIGJ1aWxkQmFja3dhcmRzU3RhdGVUYWJsZSh0ZW1wUnVsZUxpc3QpOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRodXMgZnVuY3Rpb24gaGFzIHRocmVlIG1haW4gcHVycG9zZXM6CisgICAgICAgICAqIDx1bD48bGk+UGVyZm9ybSBnZW5lcmFsIHN5bnRheCBjaGVja2luZyBvbiB0aGUgZGVzY3JpcHRpb24sIHNvIHRoZSByZXN0IG9mIHRoZQorICAgICAgICAgKiBidWlsZCBjb2RlIGNhbiBhc3N1bWUgdGhhdCBpdCdzIHBhcnNpbmcgYSBsZWdhbCBkZXNjcmlwdGlvbi4KKyAgICAgICAgICogPGxpPlNwbGl0IHRoZSBkZXNjcmlwdGlvbiBpbnRvIHNlcGFyYXRlIHJ1bGVzCisgICAgICAgICAqIDxsaT5QZXJmb3JtIHZhcmlhYmxlLW5hbWUgc3Vic3RpdHV0aW9ucyAoc28gdGhhdCBubyBvbmUgZWxzZSBzZWVzIHZhcmlhYmxlIG5hbWVzKQorICAgICAgICAgKiA8L3VsPgorICAgICAgICAgKi8KKyAgICAgICAgcHJpdmF0ZSBWZWN0b3IgYnVpbGRSdWxlTGlzdChTdHJpbmcgZGVzY3JpcHRpb24pIHsKKyAgICAgICAgICAgIC8vIGludmFyaWFudHM6CisgICAgICAgICAgICAvLyAtIHBhcmVudGhlc2VzIG11c3QgYmUgYmFsYW5jZWQ6ICgpW117fTw+CisgICAgICAgICAgICAvLyAtIG5vdGhpbmcgY2FuIGJlIG5lc3RlZCBpbnNpZGUge30KKyAgICAgICAgICAgIC8vIC0gbm90aGluZyBjYW4gYmUgbmVzdGVkIGluc2lkZSBbXSBleGNlcHQgbW9yZSBbXXMKKyAgICAgICAgICAgIC8vIC0gcGFpcnMgb2YgKClbXXt9PD4gbXVzdCBub3QgYmUgZW1wdHkKKyAgICAgICAgICAgIC8vIC0gOyBjYW4gb25seSBvY2N1ciBhdCB0aGUgb3V0ZXIgbGV2ZWwKKyAgICAgICAgICAgIC8vIC0gfCBjYW4gb25seSBhcHBlYXIgaW5zaWRlICgpCisgICAgICAgICAgICAvLyAtIG9ubHkgb25lID0gb3IgLyBjYW4gb2NjdXIgaW4gYSBzaW5nbGUgcnVsZQorICAgICAgICAgICAgLy8gLSA9IGFuZCAvIGNhbm5vdCBib3RoIG9jY3VyIGluIHRoZSBzYW1lIHJ1bGUKKyAgICAgICAgICAgIC8vIC0gdGhlIHJpZ2h0LWhhbmQgc2lkZSBvZiBhID0gZXhwcmVzc2lvbiBtdXN0IGJlIGVuY2xvc2VkIGluIFtdIG9yICgpCisgICAgICAgICAgICAvLyAtICogbWF5IG5vdCBvY2N1ciBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgcnVsZSwgbm9yIG1heSBpdCBmb2xsb3cKKyAgICAgICAgICAgIC8vICAgPSwgLywgKCwgKCwgfCwgfSwgOywgb3IgKgorICAgICAgICAgICAgLy8gLSA/IG1heSBvbmx5IGZvbGxvdyAqCisgICAgICAgICAgICAvLyAtIHRoZSBydWxlIGxpc3QgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSAvIHJ1bGUKKyAgICAgICAgICAgIC8vIC0gbm8gcnVsZSBtYXkgYmUgZW1wdHkKKyAgICAgICAgICAgIC8vIC0gYWxsIHByaW50aW5nIGNoYXJhY3RlcnMgaW4gdGhlIEFTQ0lJIHJhbmdlIGV4Y2VwdCBsZXR0ZXJzIGFuZCBkaWdpdHMKKyAgICAgICAgICAgIC8vICAgYXJlIHJlc2VydmVkIGFuZCBtdXN0IGJlIHByZWNlZGVkIGJ5IFwKKyAgICAgICAgICAgIC8vIC0gISBtYXkgb25seSBvY2N1ciBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgcnVsZQorCisgICAgICAgICAgICAvLyBzZXQgdXAgYSB2ZWN0b3IgdG8gY29udGFpbiB0aGUgYnJva2VuLXVwIGRlc2NyaXB0aW9uIChlYWNoIGVudHJ5IGluIHRoZQorICAgICAgICAgICAgLy8gdmVjdG9yIGlzIGEgc2VwYXJhdGUgcnVsZSkgYW5kIGEgc3RhY2sgZm9yIGtlZXBpbmcgdHJhY2sgb2Ygb3BlbmluZworICAgICAgICAgICAgLy8gcHVuY3R1YXRpb24KKyAgICAgICAgICAgIFZlY3RvciB0ZW1wUnVsZUxpc3QgPSBuZXcgVmVjdG9yKCk7CisgICAgICAgICAgICBTdGFjayBwYXJlblN0YWNrID0gbmV3IFN0YWNrKCk7CisKKyAgICAgICAgICAgIGludCBwID0gMDsKKyAgICAgICAgICAgIGludCBydWxlU3RhcnQgPSAwOworICAgICAgICAgICAgY2hhciBjID0gJ1x1MDAwMCc7CisgICAgICAgICAgICBjaGFyIGxhc3RDID0gJ1x1MDAwMCc7CisgICAgICAgICAgICBjaGFyIGxhc3RPcGVuID0gJ1x1MDAwMCc7CisgICAgICAgICAgICBib29sZWFuIGhhdmVFcXVhbHMgPSBmYWxzZTsKKyAgICAgICAgICAgIGJvb2xlYW4gaGF2ZVBpcGUgPSBmYWxzZTsKKyAgICAgICAgICAgIGJvb2xlYW4gc2F3VmFyTmFtZSA9IGZhbHNlOworICAgICAgICAgICAgYm9vbGVhbiBzYXdJbGxlZ2FsQ2hhciA9IGZhbHNlOworICAgICAgICAgICAgaW50IGlsbGVnYWxDaGFyUG9zID0gMDsKKyAgICAgICAgICAgIGZpbmFsIFN0cmluZyBjaGFyc1RoYXRDYW50UHJlY2VkZUFzdGVyaXNrID0gIj0vPCh8PiorPztcdTAwMDAiOworCisgICAgICAgICAgICAvLyBpZiB0aGUgZGVzY3JpcHRpb24gZG9lc24ndCBlbmQgd2l0aCBhIHNlbWljb2xvbiwgdGFjayBhIHNlbWljb2xvbiBvbnRvIHRoZSBlbmQKKyAgICAgICAgICAgIGlmIChkZXNjcmlwdGlvbi5sZW5ndGgoKSAhPSAwICYmIGRlc2NyaXB0aW9uLmNoYXJBdChkZXNjcmlwdGlvbi5sZW5ndGgoKSAtIDEpICE9ICc7JykgeworICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24gKyAiOyI7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIGZvciBlYWNoIGNoYXJhY3RlciwgZG8uLi4KKyAgICAgICAgICAgIHdoaWxlIChwIDwgZGVzY3JpcHRpb24ubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICBjID0gZGVzY3JpcHRpb24uY2hhckF0KHApOworICAgICAgICAgICAgICAgIHN3aXRjaCAoYykgeworICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgY2hhcmFjdGVyIGlzIG9wZW5pbmcgcHVuY3R1YXRpb24sIHZlcmlmeSB0aGF0IG5vIG5lc3RpbmcKKyAgICAgICAgICAgICAgICAgICAgLy8gcnVsZXMgYXJlIGJyb2tlbiwgYW5kIHB1c2ggdGhlIGNoYXJhY3RlciBvbnRvIHRoZSBzdGFjaworICAgICAgICAgICAgICAgICAgICBjYXNlICd7JzoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAnWyc6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgJygnOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3RPcGVuID09ICd7JykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKCJDYW4ndCBuZXN0IGJyYWNrZXRzIGluc2lkZSB7fSIsIHAsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsYXN0T3BlbiA9PSAnWycgJiYgYyAhPSAnWycpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcigiQ2FuJ3QgbmVzdCBhbnl0aGluZyBpbiBbXSBidXQgW10iLCBwLCBkZXNjcmlwdGlvbik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHdlIHNlZSB7IGFueXdoZXJlIGV4Y2VwdCBvbiB0aGUgbGVmdC1oYW5kIHNpZGUgb2YgPSwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdlIG11c3QgYmUgc2VlaW5nIGEgdmFyaWFibGUgbmFtZSB0aGF0IHdhcyBuZXZlciBkZWZpbmVkCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PSAneycgJiYgKGhhdmVFcXVhbHMgfHwgaGF2ZVBpcGUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoIlVua25vd24gdmFyaWFibGUgbmFtZSIsIHAsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgbGFzdE9wZW4gPSBjOworICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW5TdGFjay5wdXNoKG5ldyBDaGFyYWN0ZXIoYykpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ3snKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F3VmFyTmFtZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgY2hhcmFjdGVyIGlzIGNsb3NpbmcgcHVuY3R1YXRpb24sIHZlcmlmeSB0aGF0IGl0IG1hdGNoZXMgdGhlCisgICAgICAgICAgICAgICAgICAgIC8vIGxhc3Qgb3BlbmluZyBwdW5jdHVhdGlvbiB3ZSBzYXcsIGFuZCB0aGF0IHRoZSBicmFja2V0cyBjb250YWluCisgICAgICAgICAgICAgICAgICAgIC8vIHNvbWV0aGluZywgdGhlbiBwb3AgdGhlIHN0YWNrCisgICAgICAgICAgICAgICAgICAgIGNhc2UgJ30nOgorICAgICAgICAgICAgICAgICAgICBjYXNlICddJzoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAnKSc6CisgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGV4cGVjdGVkQ2xvc2UgPSAnXHUwMDAwJzsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobGFzdE9wZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd7JzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRDbG9zZSA9ICd9JzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnWyc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkQ2xvc2UgPSAnXSc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJygnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZENsb3NlID0gJyknOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjICE9IGV4cGVjdGVkQ2xvc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcigiVW5iYWxhbmNlZCBwYXJlbnRoZXNlcyIsIHAsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsYXN0QyA9PSBsYXN0T3BlbikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKCJQYXJlbnMgZG9uJ3QgY29udGFpbiBhbnl0aGluZyIsIHAsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVuU3RhY2sucG9wKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcmVuU3RhY2suZW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RPcGVuID0gKChDaGFyYWN0ZXIpKHBhcmVuU3RhY2sucGVlaygpKSkuY2hhclZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0T3BlbiA9ICdcdTAwMDAnOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgY2hhcmFjdGVyIGlzIGFuIGFzdGVyaXNrLCBtYWtlIHN1cmUgaXQgb2NjdXJzIGluIGEgcGxhY2UKKyAgICAgICAgICAgICAgICAgICAgLy8gd2hlcmUgYW4gYXN0ZXJpc2sgY2FuIGxlZ2FsbHkgZ28KKyAgICAgICAgICAgICAgICAgICAgY2FzZSAnKic6IGNhc2UgJysnOiBjYXNlICc/JzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGFyc1RoYXRDYW50UHJlY2VkZUFzdGVyaXNrLmluZGV4T2YobGFzdEMpICE9IC0xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIChjICE9ICc/JyB8fCBsYXN0QyAhPSAnKicpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoIk1pc3BsYWNlZCAqLCArLCBvciA/IiwgcCwgZGVzY3JpcHRpb24pOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIGNoYXJhY3RlciBpcyBhbiBlcXVhbHMgc2lnbiwgbWFrZSBzdXJlIHdlIGhhdmVuJ3Qgc2VlbiBhbm90aGVyCisgICAgICAgICAgICAgICAgICAgIC8vIGVxdWFscyBzaWduIG9yIGEgc2xhc2ggeWV0CisgICAgICAgICAgICAgICAgICAgIGNhc2UgJz0nOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhdmVFcXVhbHMgfHwgaGF2ZVBpcGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcigiTW9yZSB0aGFuIG9uZSA9IG9yIC8gaW4gcnVsZSIsIHAsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVFcXVhbHMgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgc2F3SWxsZWdhbENoYXIgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBjaGFyYWN0ZXIgaXMgYSBzbGFzaCwgbWFrZSBzdXJlIHdlIGhhdmVuJ3Qgc2VlbiBhbm90aGVyIHNsYXNoCisgICAgICAgICAgICAgICAgICAgIC8vIG9yIGFuIGVxdWFscyBzaWduIHlldAorICAgICAgICAgICAgICAgICAgICBjYXNlICcvJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXZlRXF1YWxzIHx8IGhhdmVQaXBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoIk1vcmUgdGhhbiBvbmUgPSBvciAvIGluIHJ1bGUiLCBwLCBkZXNjcmlwdGlvbik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2F3VmFyTmFtZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKCJVbmtub3duIHZhcmlhYmxlIG5hbWUiLCBwLCBkZXNjcmlwdGlvbik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBoYXZlUGlwZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgY2hhcmFjdGVyIGlzIGFuIGV4Y2xhbWF0aW9uIHBvaW50LCBtYWtlIHN1cmUgaXQgb2NjdXJzIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgLy8gYXQgdGhlIGJlZ2lubmluZyBvZiBhIHJ1bGUKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAnISc6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGFzdEMgIT0gJzsnICYmIGxhc3RDICE9ICdcdTAwMDAnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoIiEgY2FuIG9ubHkgb2NjdXIgYXQgdGhlIGJlZ2lubmluZyBvZiBhIHJ1bGUiLCBwLCBkZXNjcmlwdGlvbik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgY2hhcmFjdGVyIGlzIGEgYmFja3NsYXNoLCBza2lwIHRoZSBjaGFyYWN0ZXIgdGhhdCBmb2xsb3dzIGl0CisgICAgICAgICAgICAgICAgICAgIC8vIChpdCdsbCBnZXQgdHJlYXRlZCBhcyBhIGxpdGVyYWwgY2hhcmFjdGVyKQorICAgICAgICAgICAgICAgICAgICBjYXNlICdcXCc6CisgICAgICAgICAgICAgICAgICAgICAgICArK3A7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICAvLyB3ZSBkb24ndCBoYXZlIHRvIGRvIGFueXRoaW5nIHNwZWNpYWwgb24gYSBwZXJpb2QKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAnLic6CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgY2hhcmFjdGVyIGlzIGEgc3ludGF4IGNoYXJhY3RlciB0aGF0IGNhbiBvbmx5IG9jY3VyCisgICAgICAgICAgICAgICAgICAgIC8vIGluc2lkZSBbXSwgbWFrZSBzdXJlIHRoYXQgaXQgZG9lcyBpbiBmYWN0IG9ubHkgb2NjdXIgaW5zaWRlIFtdCisgICAgICAgICAgICAgICAgICAgIC8vIChvciBpbiBhIHZhcmlhYmxlIG5hbWUpCisgICAgICAgICAgICAgICAgICAgIGNhc2UgJ14nOgorICAgICAgICAgICAgICAgICAgICBjYXNlICctJzoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAnOic6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgJyYnOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3RPcGVuICE9ICdbJyAmJiBsYXN0T3BlbiAhPSAneycgJiYgIXNhd0lsbGVnYWxDaGFyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F3SWxsZWdhbENoYXIgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlsbGVnYWxDaGFyUG9zID0gcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBjaGFyYWN0ZXIgaXMgYSBzZW1pY29sb24sIGRvIHRoZSBmb2xsb3dpbmcuLi4KKyAgICAgICAgICAgICAgICAgICAgY2FzZSAnOyc6CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB3ZSBzYXcgYW55IGlsbGVnYWwgY2hhcmFjdGVycyBhbG9uZyB0aGUgd2F5LCB0aHJvdworICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW4gZXJyb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzYXdJbGxlZ2FsQ2hhcikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKCJJbGxlZ2FsIGNoYXJhY3RlciIsIGlsbGVnYWxDaGFyUG9zLCBkZXNjcmlwdGlvbik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB0aGUgcnVsZSBjb250YWlucyBzb21ldGhpbmcgYW5kIHRoYXQgdGhlcmUgYXJlIG5vCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB1bmJhbGFuY2VkIHBhcmVudGhlc2VzIG9yIGJyYWNrZXRzCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGFzdEMgPT0gJzsnIHx8IGxhc3RDID09ICdcdTAwMDAnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoIkVtcHR5IHJ1bGUiLCBwLCBkZXNjcmlwdGlvbik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcmVuU3RhY2suZW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKCJVbmJhbGFuY2VkIHBhcmVuaGVzZXMiLCBwLCBkZXNjcmlwdGlvbik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlblN0YWNrLmVtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgcnVsZSBjb250YWluZWQgYW4gPSBzaWduLCBjYWxsIHByb2Nlc3NTdWJzdGl0dXRpb24oKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIHJlcGxhY2UgdGhlIHN1YnN0aXR1dGlvbiBuYW1lIHdpdGggdGhlIHN1YnN0aXR1dGlvbiB0ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlcmV2ZXIgaXQgYXBwZWFycyBpbiB0aGUgZGVzY3JpcHRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGF2ZUVxdWFscykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiA9IHByb2Nlc3NTdWJzdGl0dXRpb24oZGVzY3JpcHRpb24uc3Vic3RyaW5nKHJ1bGVTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHApLCBkZXNjcmlwdGlvbiwgcCArIDEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlLCBjaGVjayB0byBtYWtlIHN1cmUgdGhlIHJ1bGUgZG9lc24ndCByZWZlcmVuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW55IHVuZGVmaW5lZCBzdWJzdGl0dXRpb25zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzYXdWYXJOYW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcigiVW5rbm93biB2YXJpYWJsZSBuYW1lIiwgcCwgZGVzY3JpcHRpb24pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlbiBhZGQgaXQgdG8gdGVtcFJ1bGVMaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBSdWxlTGlzdC5hZGRFbGVtZW50KGRlc2NyaXB0aW9uLnN1YnN0cmluZyhydWxlU3RhcnQsIHApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgcmVzZXQgZXZlcnl0aGluZyB0byBwcm9jZXNzIHRoZSBuZXh0IHJ1bGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBydWxlU3RhcnQgPSBwICsgMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlRXF1YWxzID0gaGF2ZVBpcGUgPSBzYXdWYXJOYW1lID0gc2F3SWxsZWdhbENoYXIgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBjaGFyYWN0ZXIgaXMgYSB2ZXJ0aWNhbCBiYXIsIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IGl0CisgICAgICAgICAgICAgICAgICAgIC8vIG9jY3VycyBpbnNpZGUgYSAoKSBleHByZXNzaW9uIGFuZCB0aGF0IHRoZSBjaGFyYWN0ZXIgdGhhdCBwcmVjZWRlcworICAgICAgICAgICAgICAgICAgICAvLyBpdCBpc24ndCBhbHNvIGEgdmVydGljYWwgYmFyCisgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3wnOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3RDID09ICd8JykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKCJFbXB0eSBhbHRlcm5hdGl2ZSIsIHAsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlblN0YWNrLmVtcHR5KCkgfHwgbGFzdE9wZW4gIT0gJygnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoIk1pc3BsYWNlZCB8IiwgcCwgZGVzY3JpcHRpb24pOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIGNoYXJhY3RlciBpcyBhbnl0aGluZyBlbHNlIChlc2NhcGVkIGNoYXJhY3RlcnMgYXJlCisgICAgICAgICAgICAgICAgICAgIC8vIHNraXBwZWQgYW5kIGRvbid0IG1ha2UgaXQgaGVyZSksIGl0J3MgYW4gZXJyb3IKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID49ICcgJyAmJiBjIDwgJ1x1MDA3ZicgJiYgIUNoYXJhY3Rlci5pc0xldHRlcihjKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhQ2hhcmFjdGVyLmlzRGlnaXQoYykgJiYgIXNhd0lsbGVnYWxDaGFyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F3SWxsZWdhbENoYXIgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlsbGVnYWxDaGFyUG9zID0gcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBsYXN0QyA9IGM7CisgICAgICAgICAgICAgICAgKytwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHRlbXBSdWxlTGlzdC5zaXplKCkgPT0gMCkgeworICAgICAgICAgICAgICAgIGVycm9yKCJObyB2YWxpZCBydWxlcyBpbiBkZXNjcmlwdGlvbiIsIHAsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0ZW1wUnVsZUxpc3Q7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogVGhpcyBmdW5jdGlvbiBwZXJmb3JtcyB2YXJpYWJsZS1uYW1lIHN1YnN0aXR1dGlvbnMuICBGaXJzdCBpdCBkb2VzIHN5bnRheAorICAgICAgICAgKiBjaGVja2luZyBvbiB0aGUgdmFyaWFibGUtbmFtZSBkZWZpbml0aW9uLiAgSWYgaXQncyBzeW50YWN0aWNhbGx5IHZhbGlkLCBpdAorICAgICAgICAgKiB0aGVuIGdvZXMgdGhyb3VnaCB0aGUgcmVtYWluZGVyIG9mIHRoZSBkZXNjcmlwdGlvbiBhbmQgZG9lcyBhIHNpbXBsZQorICAgICAgICAgKiBmaW5kLWFuZC1yZXBsYWNlIG9mIHRoZSB2YXJpYWJsZSBuYW1lIHdpdGggaXRzIHRleHQuICAoVGhlIHZhcmlhYmxlIHRleHQKKyAgICAgICAgICogbXVzdCBiZSBlbmNsb3NlZCBpbiBlaXRoZXIgW10gb3IgKCkgZm9yIHRoaXMgdG8gd29yay4pCisgICAgICAgICAqIEBpbnRlcm5hbAorICAgICAgICAgKi8KKyAgICAgICAgcHJvdGVjdGVkIFN0cmluZyBwcm9jZXNzU3Vic3RpdHV0aW9uKFN0cmluZyBzdWJzdGl0dXRpb25SdWxlLCBTdHJpbmcgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnRQb3MpIHsKKyAgICAgICAgICAgIC8vIGlzb2xhdGUgb3V0IHRoZSB0ZXh0IG9uIGVpdGhlciBzaWRlIG9mIHRoZSBlcXVhbHMgc2lnbgorICAgICAgICAgICAgU3RyaW5nIHJlcGxhY2U7CisgICAgICAgICAgICBTdHJpbmcgcmVwbGFjZVdpdGg7CisgICAgICAgICAgICBpbnQgZXF1YWxQb3MgPSBzdWJzdGl0dXRpb25SdWxlLmluZGV4T2YoJz0nKTsKKyAgICAgICAgICAgIGlmIChzdWJzdGl0dXRpb25SdWxlLmNoYXJBdCgwKSAhPSAnJCcpIHsKKyAgICAgICAgICAgICAgICBlcnJvcigiTWlzc2luZyAnJCcgb24gbGVmdC1oYW5kIHNpZGUgb2YgPSIsIHN0YXJ0UG9zLCBkZXNjcmlwdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXBsYWNlID0gc3Vic3RpdHV0aW9uUnVsZS5zdWJzdHJpbmcoMSwgZXF1YWxQb3MpOworICAgICAgICAgICAgcmVwbGFjZVdpdGggPSBzdWJzdGl0dXRpb25SdWxlLnN1YnN0cmluZyhlcXVhbFBvcyArIDEpOworCisgICAgICAgICAgICAvLyBjaGVjayB0byBzZWUgd2hldGhlciB0aGUgc3Vic3RpdHV0aW9uIG5hbWUgaXMgc29tZXRoaW5nIHdlJ3ZlIGRlY2xhcmVkCisgICAgICAgICAgICAvLyB0byBiZSAic3BlY2lhbCIuICBGb3IgUnVsZUJhc2VkQnJlYWtJdGVyYXRvciBpdHNlbGYsIHRoaXMgaXMgSUdOT1JFX1ZBUi4KKyAgICAgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gdGFrZXMgY2FyZSBvZiBhbnkgZXh0cmEgcHJvY2Vzc2luZyB0aGF0IGhhcyB0byBiZSBkb25lCisgICAgICAgICAgICAvLyB3aXRoICJzcGVjaWFsIiBzdWJzdGl0dXRpb24gbmFtZXMuCisgICAgICAgICAgICBoYW5kbGVTcGVjaWFsU3Vic3RpdHV0aW9uKHJlcGxhY2UsIHJlcGxhY2VXaXRoLCBzdGFydFBvcywgZGVzY3JpcHRpb24pOworCisgICAgICAgICAgICAvLyBwZXJmb3JtIHZhcmlvdXMgb3RoZXIgc3ludGF4IGNoZWNrcyBvbiB0aGUgcnVsZQorICAgICAgICAgICAgaWYgKHJlcGxhY2VXaXRoLmxlbmd0aCgpID09IDApIHsKKyAgICAgICAgICAgICAgICBlcnJvcigiTm90aGluZyBvbiByaWdodC1oYW5kIHNpZGUgb2YgPSIsIHN0YXJ0UG9zLCBkZXNjcmlwdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocmVwbGFjZS5sZW5ndGgoKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgZXJyb3IoIk5vdGhpbmcgb24gbGVmdC1oYW5kIHNpZGUgb2YgPSIsIHN0YXJ0UG9zLCBkZXNjcmlwdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIShyZXBsYWNlV2l0aC5jaGFyQXQoMCkgPT0gJ1snICYmIHJlcGxhY2VXaXRoLmNoYXJBdChyZXBsYWNlV2l0aC5sZW5ndGgoKSAtIDEpCisgICAgICAgICAgICAgICAgICAgID09ICddJykgJiYgIShyZXBsYWNlV2l0aC5jaGFyQXQoMCkgPT0gJygnICYmIHJlcGxhY2VXaXRoLmNoYXJBdCgKKyAgICAgICAgICAgICAgICAgICAgcmVwbGFjZVdpdGgubGVuZ3RoKCkgLSAxKSA9PSAnKScpKSB7CisgICAgICAgICAgICAgICAgZXJyb3IoIklsbGVnYWwgcmlnaHQtaGFuZCBzaWRlIGZvciA9Iiwgc3RhcnRQb3MsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gbm93IGdvIHRocm91Z2ggdGhlIHJlc3Qgb2YgdGhlIGRlc2NyaXB0aW9uICh3aGljaCBoYXNuJ3QgYmVlbiBicm9rZW4gdXAKKyAgICAgICAgICAgIC8vIGludG8gc2VwYXJhdGUgcnVsZXMgeWV0KSBhbmQgcmVwbGFjZSBldmVyeSBvY2N1cnJlbmNlIG9mIHRoZQorICAgICAgICAgICAgLy8gc3Vic3RpdHV0aW9uIG5hbWUgd2l0aCB0aGUgc3Vic3RpdHV0aW9uIGJvZHkKKyAgICAgICAgICAgIHJlcGxhY2UgPSAiJCIgKyByZXBsYWNlOworICAgICAgICAgICAgU3RyaW5nQnVmZmVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZGVzY3JpcHRpb24uc3Vic3RyaW5nKDAsIHN0YXJ0UG9zKSk7CisgICAgICAgICAgICBpbnQgbGFzdFBvcyA9IHN0YXJ0UG9zOworICAgICAgICAgICAgaW50IHBvcyA9IGRlc2NyaXB0aW9uLmluZGV4T2YocmVwbGFjZSwgc3RhcnRQb3MpOworICAgICAgICAgICAgd2hpbGUgKHBvcyAhPSAtMSkgeworICAgICAgICAgICAgICAgIC8vIFtsaXVdIENoZWNrIHRoYXQgdGhlIHN0cmluZyB3ZSd2ZSBmb3VuZCBpc24ndCBhIHJlZGVmaW5pdGlvbgorICAgICAgICAgICAgICAgIC8vIG9mIHRoZSB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRpb24uY2hhckF0KHBvcy0xKSA9PSAnOycgJiYKKyAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24uY2hhckF0KHBvcyArIHJlcGxhY2UubGVuZ3RoKCkpID09ICc9JykgeworICAgICAgICAgICAgICAgICAgICBlcnJvcigiQXR0ZW1wdCB0byByZWRlZmluZSAiICsgcmVwbGFjZSwgcG9zLCBkZXNjcmlwdGlvbik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZGVzY3JpcHRpb24uc3Vic3RyaW5nKGxhc3RQb3MsIHBvcykpOworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocmVwbGFjZVdpdGgpOworICAgICAgICAgICAgICAgIGxhc3RQb3MgPSBwb3MgKyByZXBsYWNlLmxlbmd0aCgpOworICAgICAgICAgICAgICAgIHBvcyA9IGRlc2NyaXB0aW9uLmluZGV4T2YocmVwbGFjZSwgbGFzdFBvcyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGRlc2NyaXB0aW9uLnN1YnN0cmluZyhsYXN0UG9zKSk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogVGhpcyBmdW5jdGlvbiBkZWZpbmVzIGEgcHJvdG9jb2wgZm9yIGhhbmRsaW5nIHN1YnN0aXR1dGlvbiBuYW1lcyB0aGF0CisgICAgICAgICAqIGFyZSAic3BlY2lhbCwiIGkuZS4sIHRoYXQgaGF2ZSBzb21lIHByb3BlcnR5IGJleW9uZCBqdXN0IGJlaW5nCisgICAgICAgICAqIHN1YnN0aXR1dGlvbnMuICBBdCB0aGUgUnVsZUJhc2VkQnJlYWtJdGVyYXRvciBsZXZlbCwgd2UgaGF2ZSBvbmUKKyAgICAgICAgICogc3BlY2lhbCBzdWJzdGl0dXRpb24gbmFtZSwgSUdOT1JFX1ZBUi4gIFN1YmNsYXNzZXMgY2FuIG92ZXJyaWRlIHRoaXMKKyAgICAgICAgICogZnVuY3Rpb24gdG8gYWRkIG1vcmUuICBBbnkgc3BlY2lhbCBwcm9jZXNzaW5nIHRoYXQgaGFzIHRvIGdvIG9uIGJleW9uZAorICAgICAgICAgKiB0aGF0IHdoaWNoIGlzIGRvbmUgYnkgdGhlIG5vcm1hbCBzdWJzdGl0dXRpb24tcHJvY2Vzc2luZyBjb2RlIGlzIGRvbmUKKyAgICAgICAgICogaGVyZS4KKyAgICAgICAgICogQGludGVybmFsCisgICAgICAgICAqLworICAgICAgICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVTcGVjaWFsU3Vic3RpdHV0aW9uKFN0cmluZyByZXBsYWNlLCBTdHJpbmcgcmVwbGFjZVdpdGgsCisgICAgICAgICAgICAgICAgICAgIGludCBzdGFydFBvcywgU3RyaW5nIGRlc2NyaXB0aW9uKSB7CisgICAgICAgICAgICAvLyBpZiB3ZSBnZXQgYSBkZWZpbml0aW9uIGZvciBhIHN1YnN0aXR1dGlvbiBjYWxsZWQgSUdOT1JFX1ZBUiwgaXQgZGVmaW5lcworICAgICAgICAgICAgLy8gdGhlIGlnbm9yZSBjaGFyYWN0ZXJzIGZvciB0aGUgaXRlcmF0b3IuICBDaGVjayB0byBtYWtlIHN1cmUgdGhlIGV4cHJlc3Npb24KKyAgICAgICAgICAgIC8vIGlzIGEgW10gZXhwcmVzc2lvbiwgYW5kIGlmIGl0IGlzLCBwYXJzZSBpdCBhbmQgc3RvcmUgdGhlIGNoYXJhY3RlcnMgb2ZmCisgICAgICAgICAgICAvLyB0byB0aGUgc2lkZS4KKyAgICAgICAgICAgIGlmIChyZXBsYWNlLmVxdWFscyhJR05PUkVfVkFSKSkgeworICAgICAgICAgICAgICAgIGlmIChyZXBsYWNlV2l0aC5jaGFyQXQoMCkgPT0gJygnKSB7CisgICAgICAgICAgICAgICAgICAgIGVycm9yKCJJZ25vcmUgZ3JvdXAgY2FuJ3QgYmUgZW5jbG9zZWQgaW4gKCIsIHN0YXJ0UG9zLCBkZXNjcmlwdGlvbik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlnbm9yZUNoYXJzID0gbmV3IFVuaWNvZGVTZXQocmVwbGFjZVdpdGgsIGZhbHNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBUaGlzIGZ1bmN0aW9uIGJ1aWxkcyB0aGUgY2hhcmFjdGVyIGNhdGVnb3J5IHRhYmxlLiAgT24gZW50cnksCisgICAgICAgICAqIHRlbXBSdWxlTGlzdCBpcyBhIHZlY3RvciBvZiBicmVhayBydWxlcyB0aGF0IGhhcyBoYWQgdmFyaWFibGUgbmFtZXMgc3Vic3RpdHV0ZWQuCisgICAgICAgICAqIE9uIGV4aXQsIHRoZSBjaGFyQ2F0ZWdvcnlUYWJsZSBkYXRhIG1lbWJlciBoYXMgYmVlbiBpbml0aWFsaXplZCB0byBob2xkIHRoZQorICAgICAgICAgKiBjaGFyYWN0ZXIgY2F0ZWdvcnkgdGFibGUsIGFuZCB0ZW1wUnVsZUxpc3QncyBydWxlcyBoYXZlIGJlZW4gbXVuZ2VkIHRvIGNvbnRhaW4KKyAgICAgICAgICogY2hhcmFjdGVyIGNhdGVnb3J5IG51bWJlcnMgZXZlcnl3aGVyZSBhIGxpdGVyYWwgY2hhcmFjdGVyIG9yIGEgW10gZXhwcmVzc2lvbgorICAgICAgICAgKiBvcmlnaW5hbGx5IG9jY3VycmVkLgorICAgICAgICAgKiBAaW50ZXJuYWwKKyAgICAgICAgICovCisgICAgICAgIHByb3RlY3RlZCB2b2lkIGJ1aWxkQ2hhckNhdGVnb3JpZXMoVmVjdG9yIHRlbXBSdWxlTGlzdCkgeworICAgICAgICAgICAgaW50IGJyYWNrZXRMZXZlbCA9IDA7CisgICAgICAgICAgICBpbnQgcCA9IDA7CisgICAgICAgICAgICBpbnQgbGluZU51bSA9IDA7CisKKyAgICAgICAgICAgIC8vIGJ1aWxkIGhhc2ggdGFibGUgb2YgZXZlcnkgbGl0ZXJhbCBjaGFyYWN0ZXIgb3IgW10gZXhwcmVzc2lvbiBpbiB0aGUgcnVsZSBsaXN0CisgICAgICAgICAgICAvLyBhbmQgZGVyaXZlIGEgVW5pY29kZVNldCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBjaGFyYWN0ZXJzIGVhY2ggcmVmZXJzIHRvCisgICAgICAgICAgICBleHByZXNzaW9ucyA9IG5ldyBIYXNodGFibGUoKTsKKyAgICAgICAgICAgIHdoaWxlIChsaW5lTnVtIDwgdGVtcFJ1bGVMaXN0LnNpemUoKSkgeworICAgICAgICAgICAgICAgIFN0cmluZyBsaW5lID0gKFN0cmluZykodGVtcFJ1bGVMaXN0LmVsZW1lbnRBdChsaW5lTnVtKSk7CisgICAgICAgICAgICAgICAgcCA9IDA7CisgICAgICAgICAgICAgICAgd2hpbGUgKHAgPCBsaW5lLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGNoYXIgYyA9IGxpbmUuY2hhckF0KHApOworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNraXAgb3ZlciBhbGwgc3ludGF4IGNoYXJhY3RlcnMgZXhjZXB0IFsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJygnOiBjYXNlICcpJzogY2FzZSAnKic6IGNhc2UgJy4nOiBjYXNlICcvJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3wnOiBjYXNlICc7JzogY2FzZSAnPyc6IGNhc2UgJyEnOiBjYXNlICcrJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIFssIGZpbmQgdGhlIG1hdGNoaW5nIF0gKHRha2luZyBuZXN0ZWQgW10gcGFpcnMgaW50byBhY2NvdW50KQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIGFkZCB0aGUgd2hvbGUgZXhwcmVzc2lvbiB0byB0aGUgZXhwcmVzc2lvbiBsaXN0CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdbJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcSA9IHAgKyAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrYnJhY2tldExldmVsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChxIDwgbGluZS5sZW5ndGgoKSAmJiBicmFja2V0TGV2ZWwgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gbGluZS5jaGFyQXQocSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID09ICdbJykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyticmFja2V0TGV2ZWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnXScpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tYnJhY2tldExldmVsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrcTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4cHJlc3Npb25zLmdldChsaW5lLnN1YnN0cmluZyhwLCBxKSkgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9ucy5wdXQobGluZS5zdWJzdHJpbmcocCwgcSksIG5ldyBVbmljb2RlU2V0KGxpbmUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzdHJpbmcocCwgcSksIGZhbHNlKSk7CisvL1Rlc3QuZGVidWdQcmludGxuKCIxLiBBZGRpbmcgZXhwcmVzc2lvbjogIiArIGxpbmUuc3Vic3RyaW5nKHAsIHEpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHEgLSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgXCBzZXF1ZW5jZXMsIGp1c3QgbW92ZSB0byB0aGUgbmV4dCBjaGFyYWN0ZXIgYW5kIHRyZWF0CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBpdCBhcyBhIHNpbmdsZSBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1xcJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArK3A7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGxpbmUuY2hhckF0KHApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERPTidUIGJyZWFrOyBmYWxsIHRocm91Z2ggaW50byAiZGVmYXVsdCIgY2xhdXNlCisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBhbiBpc29sYXRlZCBzaW5nbGUgY2hhcmFjdGVyLCBhZGQgaXQgdG8gdGhlIGV4cHJlc3Npb24gbGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmljb2RlU2V0IHMgPSBuZXcgVW5pY29kZVNldCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuYWRkKGxpbmUuY2hhckF0KHApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9ucy5wdXQobGluZS5zdWJzdHJpbmcocCwgcCArIDEpLCBzKTsKKy8vVGVzdC5kZWJ1Z1ByaW50bG4oIjIuIEFkZGluZyBleHByZXNzaW9uOiAiICsgbGluZS5zdWJzdHJpbmcocCwgcCArIDEpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICArK3A7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICsrbGluZU51bTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gY3JlYXRlIHRoZSB0ZW1wb3JhcnkgY2F0ZWdvcnkgdGFibGUgKHdoaWNoIGlzIGEgdmVjdG9yIG9mIFVuaWNvZGVTZXQgb2JqZWN0cykKKyAgICAgICAgICAgIGNhdGVnb3JpZXMgPSBuZXcgVmVjdG9yKCk7CisgICAgICAgICAgICBpZiAoaWdub3JlQ2hhcnMgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGNhdGVnb3JpZXMuYWRkRWxlbWVudChpZ25vcmVDaGFycyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBjYXRlZ29yaWVzLmFkZEVsZW1lbnQobmV3IFVuaWNvZGVTZXQoKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZ25vcmVDaGFycyA9IG51bGw7CisKKyAgICAgICAgICAgIC8vIHRoaXMgaXMgYSBob29rIHRvIGFsbG93IHN1YmNsYXNzZXMgdG8gYWRkIGNhdGVnb3JpZXMgb24gdGhlaXIgb3duCisgICAgICAgICAgICBtdW5nZUV4cHJlc3Npb25MaXN0KGV4cHJlc3Npb25zKTsKKworICAgICAgICAgICAgLy8gRGVyaXZlIHRoZSBjaGFyYWN0ZXIgY2F0ZWdvcmllcy4gIEdvIHRocm91Z2ggdGhlIGV4aXN0aW5nIGNoYXJhY3RlciBjYXRlZ29yaWVzCisgICAgICAgICAgICAvLyBsb29raW5nIGZvciBvdmVybGFwLiAgQW55IHRpbWUgdGhlcmUncyBvdmVybGFwLCB3ZSBjcmVhdGUgYSBuZXcgY2hhcmFjdGVyCisgICAgICAgICAgICAvLyBjYXRlZ29yeSBmb3IgdGhlIGNoYXJhY3RlcnMgdGhhdCBvdmVybGFwcGVkIGFuZCByZW1vdmUgdGhlbSBmcm9tIHRoZWlyIG9yaWdpbmFsCisgICAgICAgICAgICAvLyBjYXRlZ29yeS4gIEF0IHRoZSBlbmQsIGFueSBjaGFyYWN0ZXJzIHRoYXQgYXJlIGxlZnQgaW4gdGhlIGV4cHJlc3Npb24gaGF2ZW4ndAorICAgICAgICAgICAgLy8gYmVlbiBtZW50aW9uZWQgaW4gYW55IGNhdGVnb3J5LCBzbyBhbm90aGVyIG5ldyBjYXRlZ29yeSBpcyBjcmVhdGVkIGZvciB0aGVtLgorICAgICAgICAgICAgLy8gRm9yIGV4YW1wbGUsIGlmIHRoZSBmaXJzdCBleHByZXNzaW9uIGlzIFthYmNdLCB0aGVuIGEsIGIsIGFuZCBjIHdpbGwgYmUgcGxhY2VkCisgICAgICAgICAgICAvLyBpbnRvIGEgc2luZ2xlIGNoYXJhY3RlciBjYXRlZ29yeS4gIElmIHRoZSBuZXh0IGV4cHJlc3Npb24gaXMgW2JjZF0sIHdlIHdpbGwgZmlyc3QKKyAgICAgICAgICAgIC8vIHJlbW92ZSBiIGFuZCBjIGZyb20gdGhlaXIgZXhpc3RpbmcgY2F0ZWdvcnkgKGxlYXZpbmcgYSBiZWhpbmQpLCBjcmVhdGUgYSBuZXcKKyAgICAgICAgICAgIC8vIGNhdGVnb3J5IGZvciBiIGFuZCBjLCBhbmQgdGhlbiBjcmVhdGUgYW5vdGhlciBuZXcgY2F0ZWdvcnkgZm9yIGQgKHdoaWNoIGhhZG4ndAorICAgICAgICAgICAgLy8gYmVlbiBtZW50aW9uZWQgaW4gdGhlIHByZXZpb3VzIGV4cHJlc3Npb24pLgorICAgICAgICAgICAgLy8gQXQgbm8gdGltZSBzaG91bGQgYSBjaGFyYWN0ZXIgZXZlciBvY2N1ciBpbiBtb3JlIHRoYW4gb25lIGNoYXJhY3RlciBjYXRlZ29yeS4KKworICAgICAgICAgICAgLy8gZm9yIGVhY2ggZXhwcmVzc2lvbiBpbiB0aGUgZXhwcmVzc2lvbnMgbGlzdCwgZG8uLi4KKyAgICAgICAgICAgIEVudW1lcmF0aW9uIGl0ZXIgPSBleHByZXNzaW9ucy5lbGVtZW50cygpOworICAgICAgICAgICAgd2hpbGUgKGl0ZXIuaGFzTW9yZUVsZW1lbnRzKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBpbml0aWFsaXplIHRoZSB3b3JraW5nIGNoYXIgc2V0IHRvIHRoZSBjaGFycyBpbiB0aGUgY3VycmVudCBleHByZXNzaW9uCisgICAgICAgICAgICAgICAgVW5pY29kZVNldCB3b3JrID0gbmV3IFVuaWNvZGVTZXQoKFVuaWNvZGVTZXQpaXRlci5uZXh0RWxlbWVudCgpKTsKKworICAgICAgICAgICAgICAgIC8vIGZvciBlYWNoIGNhdGVnb3J5IGluIHRoZSBjYXRlZ29yeSBsaXN0LCBkby4uLgorICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSBjYXRlZ29yaWVzLnNpemUoKSAtIDE7ICF3b3JrLmlzRW1wdHkoKSAmJiBqID4gMDsgai0tKSB7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlcmUncyBvdmVybGFwIGJldHdlZW4gdGhlIGN1cnJlbnQgd29ya2luZyBzZXQgb2YgY2hhcnMKKyAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHRoZSBjdXJyZW50IGNhdGVnb3J5Li4uCisgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVTZXQgY2F0ID0gKFVuaWNvZGVTZXQpKGNhdGVnb3JpZXMuZWxlbWVudEF0KGopKTsKKyAgICAgICAgICAgICAgICAgICAgVW5pY29kZVNldCBvdmVybGFwID0gaW50ZXJzZWN0aW9uKHdvcmssIGNhdCk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFvdmVybGFwLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIGN1cnJlbnQgY2F0ZWdvcnkgaXMgbm90IGEgc3Vic2V0IG9mIHRoZSBjdXJyZW50CisgICAgICAgICAgICAgICAgICAgICAgICAvLyB3b3JraW5nIHNldCBvZiBjaGFyYWN0ZXJzLCB0aGVuIHJlbW92ZSB0aGUgb3ZlcmxhcHBpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoYXJhY3RlcnMgZnJvbSB0aGUgY3VycmVudCBjYXRlZ29yeSBhbmQgY3JlYXRlIGEgbmV3CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXRlZ29yeSBmb3IgdGhlbQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvdmVybGFwLmVxdWFscyhjYXQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0LnJlbW92ZUFsbChvdmVybGFwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yaWVzLmFkZEVsZW1lbnQob3ZlcmxhcCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBhbHdheXMgcmVtb3ZlIHRoZSBvdmVybGFwcGluZyBjaGFyYWN0ZXJzIGZyb20gdGhlIGN1cnJlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdvcmtpbmcgc2V0IG9mIGNoYXJhY3RlcnMKKyAgICAgICAgICAgICAgICAgICAgICAgIHdvcmsucmVtb3ZlQWxsKG92ZXJsYXApOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gaWYgdGhlcmUgYXJlIHN0aWxsIGNoYXJhY3RlcnMgbGVmdCBpbiB0aGUgd29ya2luZyBjaGFyIHNldCwKKyAgICAgICAgICAgICAgICAvLyBhZGQgYSBuZXcgY2F0ZWdvcnkgY29udGFpbmluZyB0aGVtCisgICAgICAgICAgICAgICAgaWYgKCF3b3JrLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAgICBjYXRlZ29yaWVzLmFkZEVsZW1lbnQod29yayk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyB3ZSBoYXZlIHRoZSBpZ25vcmUgY2hhcmFjdGVycyBzdG9yZWQgaW4gcG9zaXRpb24gMC4gIE1ha2UgYW4gZXh0cmEgcGFzcyB0aHJvdWdoCisgICAgICAgICAgICAvLyB0aGUgY2hhcmFjdGVyIGNhdGVnb3J5IGxpc3QgYW5kIHJlbW92ZSBhbnl0aGluZyBmcm9tIHRoZSBpZ25vcmUgbGlzdCB0aGF0IHNob3dzCisgICAgICAgICAgICAvLyB1cCBpbiBzb21lIG90aGVyIGNhdGVnb3J5CisgICAgICAgICAgICBVbmljb2RlU2V0IGFsbENoYXJzID0gbmV3IFVuaWNvZGVTZXQoKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgY2F0ZWdvcmllcy5zaXplKCk7IGkrKykKKyAgICAgICAgICAgICAgICBhbGxDaGFycy5hZGRBbGwoKFVuaWNvZGVTZXQpKGNhdGVnb3JpZXMuZWxlbWVudEF0KGkpKSk7CisgICAgICAgICAgICBVbmljb2RlU2V0IGlnbm9yZUNoYXJzID0gKFVuaWNvZGVTZXQpKGNhdGVnb3JpZXMuZWxlbWVudEF0KDApKTsKKyAgICAgICAgICAgIGlnbm9yZUNoYXJzLnJlbW92ZUFsbChhbGxDaGFycyk7CisKKyAgICAgICAgICAgIC8vIG5vdyB0aGF0IHdlJ3ZlIGRlcml2ZWQgdGhlIGNoYXJhY3RlciBjYXRlZ29yaWVzLCBnbyBiYWNrIHRocm91Z2ggdGhlIGV4cHJlc3Npb24KKyAgICAgICAgICAgIC8vIGxpc3QgYW5kIHJlcGxhY2UgZWFjaCBVbmljb2RlU2V0IG9iamVjdCB3aXRoIGEgU3RyaW5nIHRoYXQgcmVwcmVzZW50cyB0aGUKKyAgICAgICAgICAgIC8vIGNoYXJhY3RlciBjYXRlZ29yaWVzIHRoYXQgZXhwcmVzc2lvbiByZWZlcnMgdG8uICBUaGUgU3RyaW5nIGlzIGVuY29kZWQ6IGVhY2gKKyAgICAgICAgICAgIC8vIGNoYXJhY3RlciBpcyBhIGNoYXJhY3RlciBjYXRlZ29yeSBudW1iZXIgKHBsdXMgMHgxMDAgdG8gYXZvaWQgY29uZnVzaW5nIHRoZW0KKyAgICAgICAgICAgIC8vIHdpdGggc3ludGF4IGNoYXJhY3RlcnMgaW4gdGhlIHJ1bGUgZ3JhbW1hcikKKyAgICAgICAgICAgIGl0ZXIgPSBleHByZXNzaW9ucy5rZXlzKCk7CisgICAgICAgICAgICB3aGlsZSAoaXRlci5oYXNNb3JlRWxlbWVudHMoKSkgeworICAgICAgICAgICAgICAgIFN0cmluZyBrZXkgPSAoU3RyaW5nKWl0ZXIubmV4dEVsZW1lbnQoKTsKKyAgICAgICAgICAgICAgICBVbmljb2RlU2V0IGNzID0gKFVuaWNvZGVTZXQpZXhwcmVzc2lvbnMuZ2V0KGtleSk7CisgICAgICAgICAgICAgICAgU3RyaW5nQnVmZmVyIGNhdHMgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisKKyAgICAgICAgICAgICAgICAvLyBmb3IgZWFjaCBjYXRlZ29yeS4uLgorICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAxOyBqIDwgY2F0ZWdvcmllcy5zaXplKCk7IGorKykgeworICAgICAgICAgICAgICAgICAgICBVbmljb2RlU2V0IGNhdCA9IG5ldyBVbmljb2RlU2V0KChVbmljb2RlU2V0KSBjYXRlZ29yaWVzLmVsZW1lbnRBdChqKSk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIGN1cnJlbnQgZXhwcmVzc2lvbiBjb250YWlucyBjaGFyYWN0ZXJzIGluIHRoYXQgY2F0ZWdvcnkuLi4KKyAgICAgICAgICAgICAgICAgICAgaWYgKGNzLmNvbnRhaW5zQWxsKGNhdCkpIHsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlbiBhZGQgdGhlIGVuY29kZWQgY2F0ZWdvcnkgbnVtYmVyIHRvIHRoZSBTdHJpbmcgZm9yIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGV4cHJlc3Npb24KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhdHMuYXBwZW5kKChjaGFyKSgweDEwMCArIGopKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjcy5lcXVhbHMoY2F0KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gb25jZSB3ZSd2ZSBmaW5pc2hlZCBidWlsZGluZyB0aGUgZW5jb2RlZCBTdHJpbmcgZm9yIHRoaXMgZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAvLyByZXBsYWNlIHRoZSBVbmljb2RlU2V0IG9iamVjdCB3aXRoIGl0CisgICAgICAgICAgICAgICAgZXhwcmVzc2lvbnMucHV0KGtleSwgY2F0cy50b1N0cmluZygpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gYW5kIGZpbmFsbHksIHdlIHR1cm4gdGhlIHRlbXBvcmFyeSBjYXRlZ29yeSB0YWJsZSBpbnRvIGEgcGVybWFuZW50IGNhdGVnb3J5CisgICAgICAgICAgICAvLyB0YWJsZSwgd2hpY2ggaXMgYSBDb21wYWN0Qnl0ZUFycmF5LiAod2Ugc2tpcCBjYXRlZ29yeSAwLCB3aGljaCBieSBkZWZpbml0aW9uCisgICAgICAgICAgICAvLyByZWZlcnMgdG8gYWxsIGNoYXJhY3RlcnMgbm90IG1lbnRpb25lZCBzcGVjaWZpY2FsbHkgaW4gdGhlIHJ1bGVzKQorICAgICAgICAgICAgY2hhckNhdGVnb3J5VGFibGUgPSBuZXcgQ29tcGFjdEJ5dGVBcnJheSgoYnl0ZSkwKTsKKworICAgICAgICAgICAgLy8gZm9yIGVhY2ggY2F0ZWdvcnkuLi4KKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2F0ZWdvcmllcy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgIFVuaWNvZGVTZXQgY2hhcnMgPSAoVW5pY29kZVNldCkoY2F0ZWdvcmllcy5lbGVtZW50QXQoaSkpOworICAgICAgICAgICAgICAgIGludCBuID0gY2hhcnMuZ2V0UmFuZ2VDb3VudCgpOworCisgICAgICAgICAgICAgICAgLy8gZ28gdGhyb3VnaCB0aGUgY2hhcmFjdGVyIHJhbmdlcyBpbiB0aGUgY2F0ZWdvcnkgb25lIGJ5IG9uZS4uLgorICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbjsgKytqKSB7CisgICAgICAgICAgICAgICAgICAgIGludCByYW5nZVN0YXJ0ID0gY2hhcnMuZ2V0UmFuZ2VTdGFydChqKTsKKworICAgICAgICAgICAgICAgICAgICAvLyAoaWdub3JlIGFueXRoaW5nIGFib3ZlIHRoZSBCTVAgZm9yIG5vdy4uLikKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJhbmdlU3RhcnQgPj0gMHgxMDAwMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAvLyBhbmQgc2V0IHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIGluIHRoZSBDb21wYWN0QXJyYXkgYWNjb3JkaW5nbHkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGkgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2hhckNhdGVnb3J5VGFibGUuc2V0RWxlbWVudEF0KChjaGFyKXJhbmdlU3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIpY2hhcnMuZ2V0UmFuZ2VFbmQoaiksIChieXRlKWkpOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgLy8gKGNhdGVnb3J5IDAgaXMgc3BlY2lhbC0tIGl0J3MgdGhlIGhpZGluZyBwbGFjZSBmb3IgdGhlIGlnbm9yZQorICAgICAgICAgICAgICAgICAgICAvLyBjaGFyYWN0ZXJzLCB3aG9zZSByZWFsIGNhdGVnb3J5IG51bWJlciBpbiB0aGUgQ29tcGFjdEFycmF5IGlzCisgICAgICAgICAgICAgICAgICAgIC8vIC0xIFt0aGlzIGlzIGJlY2F1c2UgY2F0ZWdvcnkgMCBjb250YWlucyBhbGwgY2hhcmFjdGVycyBub3QKKyAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lmaWNhbGx5IG1lbnRpb25lZCBhbnl3aGVyZSBpbiB0aGUgcnVsZXNdICkKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGFyQ2F0ZWdvcnlUYWJsZS5zZXRFbGVtZW50QXQoKGNoYXIpcmFuZ2VTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciljaGFycy5nZXRSYW5nZUVuZChqKSwgSUdOT1JFKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gb25jZSB3ZSd2ZSBwb3B1bGF0ZWQgdGhlIENvbXBhY3RBcnJheSwgY29tcGFjdCBpdAorICAgICAgICAgICAgY2hhckNhdGVnb3J5VGFibGUuY29tcGFjdCgpOworCisgICAgICAgICAgICAvLyBpbml0aWFsaXplIG51bUNhdGVnb3JpZXMKKyAgICAgICAgICAgIG51bUNhdGVnb3JpZXMgPSBjYXRlZ29yaWVzLnNpemUoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qKiAgIEBpbnRlcm5hbCAqLworICAgICAgICBwcm90ZWN0ZWQgdm9pZCBtdW5nZUV4cHJlc3Npb25MaXN0KEhhc2h0YWJsZSBleHByZXNzaW9ucykgeworICAgICAgICAgICAgLy8gZW1wdHkgaW4gdGhlIHBhcmVudCBjbGFzcy4gIFRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgYSBob29rIGZvciBzdWJjbGFzc2VzCisgICAgICAgICAgICAvLyB0byBtZXNzIHdpdGggdGhlIGNoYXJhY3RlciBjYXRlZ29yeSB0YWJsZS4KKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBUaGlzIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGJ1aWxkcyB0aGUgZm9yd2FyZCBzdGF0ZSB0YWJsZS4gIE1vc3Qgb2YgdGhlIHJlYWwKKyAgICAgICAgICogd29yayBpcyBkb25lIGluIHBhcnNlUnVsZSgpLCB3aGljaCBpcyBjYWxsZWQgb25jZSBmb3IgZWFjaCBydWxlIGluIHRoZQorICAgICAgICAgKiBkZXNjcmlwdGlvbi4KKyAgICAgICAgICovCisgICAgICAgIHByaXZhdGUgdm9pZCBidWlsZFN0YXRlVGFibGUoVmVjdG9yIHRlbXBSdWxlTGlzdCkgeworICAgICAgICAgICAgLy8gaW5pdGlhbGl6ZSBvdXIgdGVtcG9yYXJ5IHN0YXRlIHRhYmxlLCBhbmQgZmlsbCBpdCB3aXRoIHR3byBzdGF0ZXM6CisgICAgICAgICAgICAvLyBzdGF0ZSAwIGlzIGEgZHVtbXkgc3RhdGUgdGhhdCBhbGxvd3Mgc3RhdGUgMSB0byBiZSB0aGUgc3RhcnRpbmcgc3RhdGUKKyAgICAgICAgICAgIC8vIGFuZCAwIHRvIHJlcHJlc2VudCAic3RvcCIuICBTdGF0ZSAxIGlzIGFkZGVkIGhlcmUgdG8gc2VlZCB0aGluZ3MKKyAgICAgICAgICAgIC8vIGJlZm9yZSB3ZSBzdGFydCBwYXJzaW5nCisgICAgICAgICAgICB0ZW1wU3RhdGVUYWJsZSA9IG5ldyBWZWN0b3IoKTsKKyAgICAgICAgICAgIHRlbXBTdGF0ZVRhYmxlLmFkZEVsZW1lbnQobmV3IHNob3J0W251bUNhdGVnb3JpZXMgKyAxXSk7CisgICAgICAgICAgICB0ZW1wU3RhdGVUYWJsZS5hZGRFbGVtZW50KG5ldyBzaG9ydFtudW1DYXRlZ29yaWVzICsgMV0pOworCisgICAgICAgICAgICAvLyBjYWxsIHBhcnNlUnVsZSgpIGZvciBldmVyeSBydWxlIGluIHRoZSBydWxlIGxpc3QgKGV4Y2VwdCB0aG9zZSB3aGljaAorICAgICAgICAgICAgLy8gc3RhcnQgd2l0aCAhLCB3aGljaCBhcmUgYWN0dWFsbHkgYmFja3dhcmRzLWl0ZXJhdGlvbiBydWxlcykKKyAgICAgICAgICAgIC8vIHZhcmlhYmxlIG5vdCB1c2VkIGludCBuID0gdGVtcFJ1bGVMaXN0LnNpemUoKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGVtcFJ1bGVMaXN0LnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHJ1bGUgPSAoU3RyaW5nKXRlbXBSdWxlTGlzdC5lbGVtZW50QXQoaSk7CisgICAgICAgICAgICAgICAgaWYgKHJ1bGUuY2hhckF0KDApICE9ICchJykgeworICAgICAgICAgICAgICAgICAgICBwYXJzZVJ1bGUocnVsZSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBmaW5hbGx5LCB1c2UgZmluaXNoQnVpbGRpbmdTdGF0ZVRhYmxlKCkgdG8gbWluaW1pemUgdGhlIG51bWJlciBvZgorICAgICAgICAgICAgLy8gc3RhdGVzIGluIHRoZSB0YWJsZSBhbmQgcGVyZm9ybSBzb21lIG90aGVyIGNsZWFudXAgd29yaworICAgICAgICAgICAgZmluaXNoQnVpbGRpbmdTdGF0ZVRhYmxlKHRydWUpOworLyoKK1N5c3RlbS5vdXQucHJpbnQoIkM6XHQiKTsKK2ZvciAoaW50IGkgPSAwOyBpIDwgbnVtQ2F0ZWdvcmllczsgaSsrKQorU3lzdGVtLm91dC5wcmludChJbnRlZ2VyLnRvU3RyaW5nKGkpICsgIlx0Iik7CitTeXN0ZW0ub3V0LnByaW50bG4oKTsgU3lzdGVtLm91dC5wcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpOworZm9yIChpbnQgaSA9IDA7IGkgPCBzdGF0ZVRhYmxlLmxlbmd0aDsgaSsrKSB7CitpZiAoaSAlIG51bUNhdGVnb3JpZXMgPT0gMCkgeworU3lzdGVtLm91dC5wcmludGxuKCk7CitpZiAoZW5kU3RhdGVzW2kgLyBudW1DYXRlZ29yaWVzXSkKK1N5c3RlbS5vdXQucHJpbnQoIioiKTsKK2Vsc2UKK1N5c3RlbS5vdXQucHJpbnQoIiAiKTsKK2lmIChsb29rYWhlYWRTdGF0ZXNbaSAvIG51bUNhdGVnb3JpZXNdKSB7CitTeXN0ZW0ub3V0LnByaW50KCIlIik7Cit9CitlbHNlCitTeXN0ZW0ub3V0LnByaW50KCIgIik7CitTeXN0ZW0ub3V0LnByaW50KEludGVnZXIudG9TdHJpbmcoaSAvIG51bUNhdGVnb3JpZXMpICsgIjpcdCIpOworfQoraWYgKHN0YXRlVGFibGVbaV0gPT0gMCkgU3lzdGVtLm91dC5wcmludCgiLlx0Iik7IGVsc2UgU3lzdGVtLm91dC5wcmludChJbnRlZ2VyLnRvU3RyaW5nKHN0YXRlVGFibGVbaV0pICsgIlx0Iik7Cit9CitTeXN0ZW0ub3V0LnByaW50bG4oKTsKKyovCisgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBUaGlzIGlzIHdoZXJlIG1vc3Qgb2YgdGhlIHdvcmsgcmVhbGx5IGhhcHBlbnMuICBUaGlzIHJvdXRpbmUgcGFyc2VzIGEgc2luZ2xlCisgICAgICAgICAqIHJ1bGUgaW4gdGhlIHJ1bGUgZGVzY3JpcHRpb24sIGFkZGluZyBhbmQgbW9kaWZ5aW5nIHN0YXRlcyBpbiB0aGUgc3RhdGUKKyAgICAgICAgICogdGFibGUgYWNjb3JkaW5nIHRvIHRoZSBuZXcgZXhwcmVzc2lvbi4gIFRoZSBzdGF0ZSB0YWJsZSBpcyBrZXB0IGRldGVybWluaXN0aWMKKyAgICAgICAgICogdGhyb3VnaG91dCB0aGUgd2hvbGUgb3BlcmF0aW9uLCBhbHRob3VnaCBzb21lIHVnbHkgcG9zdHByb2Nlc3NpbmcgaXMgbmVlZGVkCisgICAgICAgICAqIHRvIGhhbmRsZSB0aGUgKj8gdG9rZW4uCisgICAgICAgICAqLworICAgICAgICBwcml2YXRlIHZvaWQgcGFyc2VSdWxlKFN0cmluZyBydWxlLCBib29sZWFuIGZvcndhcmQpIHsKKyAgICAgICAgICAgIC8vIGFsZ29yaXRobSBub3RlczoKKyAgICAgICAgICAgIC8vICAgLSBUaGUgYmFzaWMgaWRlYSBoZXJlIGlzIHRvIHJlYWQgc3VjY2Vzc2l2ZSBjaGFyYWN0ZXItY2F0ZWdvcnkgZ3JvdXBzCisgICAgICAgICAgICAvLyAgIGZyb20gdGhlIGlucHV0IHN0cmluZy4gIEZvciBlYWNoIGdyb3VwLCB5b3UgY3JlYXRlIGEgc3RhdGUgYW5kIHBvaW50CisgICAgICAgICAgICAvLyAgIHRoZSBhcHByb3ByaWF0ZSBlbnRyaWVzIGluIHRoZSBwcmV2aW91cyBzdGF0ZSB0byBpdC4gIFRoaXMgcHJvZHVjZXMgYQorICAgICAgICAgICAgLy8gICBzdHJhaWdodCBsaW5lIGZyb20gdGhlIHN0YXJ0IHN0YXRlIHRvIHRoZSBlbmQgc3RhdGUuICBUaGUgPywgKywgKiwgYW5kICh8KQorICAgICAgICAgICAgLy8gICBpZGlvbXMgcHJvZHVjZSBicmFuY2hlcyBpbiB0aGlzIHN0cmFpZ2h0IGxpbmUuICBUaGVzZSBicmFuY2hlcyAoc3RhdGVzCisgICAgICAgICAgICAvLyAgIHRoYXQgY2FuIHRyYW5zaXRpb24gdG8gbW9yZSB0aGFuIG9uZSBvdGhlciBzdGF0ZSkgYXJlIGNhbGxlZCAiZGVjaXNpb24KKyAgICAgICAgICAgIC8vICAgcG9pbnRzLiIgIEEgbGlzdCBvZiBkZWNpc2lvbiBwb2ludHMgaXMga2VwdC4gIFRoaXMgY29udGFpbnMgYSBsaXN0IG9mCisgICAgICAgICAgICAvLyAgIGFsbCBzdGF0ZXMgdGhhdCBjYW4gdHJhbnNpdGlvbiB0byB0aGUgbmV4dCBzdGF0ZSB0byBiZSBjcmVhdGVkLiAgRm9yIGEKKyAgICAgICAgICAgIC8vICAgc3RyYWlnaHQgbGluZSBwcm9ncmVzc2lvbiwgdGhlIG9ubHkgdGhpbmcgaW4gdGhlIGRlY2lzaW9uLXBvaW50IGxpc3QgaXMKKyAgICAgICAgICAgIC8vICAgdGhlIGN1cnJlbnQgc3RhdGUuICBCdXQgaWYgdGhlcmUncyBhIGJyYW5jaCwgdGhlIGRlY2lzaW9uLXBvaW50IGxpc3QKKyAgICAgICAgICAgIC8vICAgd2lsbCBjb250YWluIGFsbCBvZiB0aGUgYmVnaW5uaW5nIHBvaW50cyBvZiB0aGUgYnJhbmNoIHdoZW4gdGhlIG5leHQKKyAgICAgICAgICAgIC8vICAgc3RhdGUgdG8gYmUgY3JlYXRlZCByZXByZXNlbnRzIHRoZSBlbmQgcG9pbnQgb2YgdGhlIGJyYW5jaC4gIEEgc3RhY2sgaXMKKyAgICAgICAgICAgIC8vICAgdXNlZCB0byBzYXZlIGRlY2lzaW9uIHBvaW50IGxpc3RzIGluIHRoZSBwcmVzZW5jZSBvZiBuZXN0ZWQgcGFyZW50aGVzZXMKKyAgICAgICAgICAgIC8vICAgYW5kIHRoZSBsaWtlLiAgRm9yIGV4YW1wbGUsIHdoZW4gYSB7IGlzIGVuY291bnRlcmVkLCB0aGUgY3VycmVudCBkZWNpc2lvbgorICAgICAgICAgICAgLy8gICBwb2ludCBsaXN0IGlzIHNhdmVkIG9uIHRoZSBzdGFjayBhbmQgcmVzdG9yZWQgd2hlbiB0aGUgY29ycmVzcG9uZGluZyB9CisgICAgICAgICAgICAvLyAgIGlzIGVuY291bnRlcmVkLiAgVGhpcyB3YXksIGFmdGVyIHRoZSB9IGlzIHJlYWQsIHRoZSBkZWNpc2lvbiBwb2ludCBsaXN0CisgICAgICAgICAgICAvLyAgIHdpbGwgY29udGFpbiBib3RoIHRoZSBzdGF0ZSByaWdodCBiZWZvcmUgdGhlIH0gX2FuZF8gdGhlIHN0YXRlIGJlZm9yZQorICAgICAgICAgICAgLy8gICB0aGUgd2hvbGUge30gZXhwcmVzc2lvbi4gIEJvdGggb2YgdGhlc2Ugc3RhdGVzIGNhbiB0cmFuc2l0aW9uIHRvIHRoZSBuZXh0CisgICAgICAgICAgICAvLyAgIHN0YXRlIGFmdGVyIHRoZSB7fSBleHByZXNzaW9uLgorICAgICAgICAgICAgLy8gICAtIG9uZSBjb21wbGljYXRpb24gYXJpc2VzIHdoZW4gd2UgaGF2ZSB0byBzdGFtcCBhIHRyYW5zaXRpb24gdmFsdWUgaW50bworICAgICAgICAgICAgLy8gICBhbiBhcnJheSBjZWxsIHRoYXQgYWxyZWFkeSBjb250YWlucyBvbmUuICBUaGUgdXBkYXRlU3RhdGVUYWJsZSgpIGFuZAorICAgICAgICAgICAgLy8gICBtZXJnZVN0YXRlcygpIGZ1bmN0aW9ucyBoYW5kbGUgdGhpcyBjYXNlLiAgVGhlaXIgYmFzaWMgYXBwcm9hY2ggaXMgdG8KKyAgICAgICAgICAgIC8vICAgY3JlYXRlIGEgbmV3IHN0YXRlIHRoYXQgY29tYmluZXMgdGhlIHR3byBzdGF0ZXMgdGhhdCBjb25mbGljdCBhbmQgcG9pbnQKKyAgICAgICAgICAgIC8vICAgYXQgaXQgd2hlbiBuZWNlc3NhcnkuICBUaGlzIGhhcHBlbnMgcmVjdXJzaXZlbHksIHNvIGlmIHRoZSBtZXJnZWQgc3RhdGVzCisgICAgICAgICAgICAvLyAgIGFsc28gY29uZmxpY3QsIHRoZXkncmUgcmVzb2x2ZWQgaW4gdGhlIHNhbWUgd2F5LCBhbmQgc28gb24uICBUaGVyZSBhcmUKKyAgICAgICAgICAgIC8vICAgYSBudW1iZXIgb2YgdGVzdHMgYWltZWQgYXQgcHJldmVudGluZyBpbmZpbml0ZSByZWN1cnNpb24uCisgICAgICAgICAgICAvLyAgIC0gYW5vdGhlciBjb21wbGljYXRpb24gYXJpc2VzIHdpdGggcmVwZWF0aW5nIGNoYXJhY3RlcnMuICBJdCdzIHNvbWV3aGF0CisgICAgICAgICAgICAvLyAgIGFtYmlndW91cyB3aGV0aGVyIHRoZSB1c2VyIHdhbnRzIGEgZ3JlZWR5IG9yIG5vbi1ncmVlZHkgbWF0Y2ggaW4gdGhlc2UgY2FzZXMuCisgICAgICAgICAgICAvLyAgIChlLmcuLCB3aGV0aGVyICJbYS16XSphYmMiIG1lYW5zIHRoZSBTSE9SVEVTVCBzZXF1ZW5jZSBvZiBsZXR0ZXJzIGVuZGluZyBpbgorICAgICAgICAgICAgLy8gICAiYWJjIiBvciB0aGUgTE9OR0VTVCBzZXF1ZW5jZSBvZiBsZXR0ZXJzIGVuZGluZyBpbiAiYWJjIi4gIFdlJ3ZlIGFkb3B0ZWQKKyAgICAgICAgICAgIC8vICAgdGhlICo/IHRvIG1lYW4gInNob3J0ZXN0IiBhbmQgKiBieSBpdHNlbGYgdG8gbWVhbiAibG9uZ2VzdCIuICAoWW91IGdldCB0aGUKKyAgICAgICAgICAgIC8vICAgc2FtZSByZXN1bHQgd2l0aCBib3RoIGlmIHRoZXJlJ3Mgbm8gb3ZlcmxhcCBiZXR3ZWVuIHRoZSByZXBlYXRpbmcgY2hhcmFjdGVyCisgICAgICAgICAgICAvLyAgIGdyb3VwIGFuZCB0aGUgZ3JvdXAgaW1tZWRpYXRlbHkgZm9sbG93aW5nIGl0LikgIEhhbmRsaW5nIHRoZSAqPyB0b2tlbiBpcworICAgICAgICAgICAgLy8gICByYXRoZXIgY29tcGxpY2F0ZWQgYW5kIGludm9sdmVzIGtlZXBpbmcgdHJhY2sgb2Ygd2hldGhlciBhIHN0YXRlIG5lZWRzIHRvCisgICAgICAgICAgICAvLyAgIGJlIG1lcmdlZCAoYXMgZGVzY3JpYmVkIGFib3ZlKSBvciBtZXJlbHkgb3ZlcndyaXR0ZW4gd2hlbiB5b3UgdXBkYXRlIG9uZSBvZgorICAgICAgICAgICAgLy8gICBpdHMgY2VsbHMsIGFuZCBjb3B5aW5nIHRoZSBjb250ZW50cyBvZiBhIHN0YXRlIHRoYXQgbG9vcHMgd2l0aCBhICo/IHRva2VuCisgICAgICAgICAgICAvLyAgIGludG8gc29tZSBvZiB0aGUgc3RhdGVzIHRoYXQgZm9sbG93IGl0IGFmdGVyIHRoZSByZXN0IG9mIHRoZSB0YWJsZS1idWlsZGluZworICAgICAgICAgICAgLy8gICBwcm9jZXNzIGlzIGNvbXBsZXRlICgiYmFja2ZpbGxpbmciKS4KKyAgICAgICAgICAgIC8vIGltcGxlbWVudGF0aW9uIG5vdGVzOgorICAgICAgICAgICAgLy8gICAtIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyBzeW50YXggY2hlY2tpbmcgaGFzIGJlZW4gcGVyZm9ybWVkIG9uIHRoZSBpbnB1dCBzdHJpbmcKKyAgICAgICAgICAgIC8vICAgcHJpb3IgdG8gaXRzIGJlaW5nIHBhc3NlZCBpbiBoZXJlLiAgSXQgYXNzdW1lcyB0aGF0IHBhcmVudGhlc2VzIGFyZQorICAgICAgICAgICAgLy8gICBiYWxhbmNlZCwgYWxsIGxpdGVyYWwgY2hhcmFjdGVycyBhcmUgZW5jbG9zZWQgaW4gW10gYW5kIHR1cm5lZCBpbnRvIGNhdGVnb3J5CisgICAgICAgICAgICAvLyAgIG51bWJlcnMsIHRoYXQgdGhlcmUgYXJlIG5vIGlsbGVnYWwgY2hhcmFjdGVycyBvciBjaGFyYWN0ZXIgc2VxdWVuY2VzLCBhbmQgc28KKyAgICAgICAgICAgIC8vICAgb24uICBWaW9sYXRpb24gb2YgdGhlc2UgaW52YXJpYW50cyB3aWxsIGxlYWQgdG8gdW5kZWZpbmVkIGJlaGF2aW9yLgorICAgICAgICAgICAgLy8gICAtIEl0J2QgcHJvYmFibHkgYmUgYmV0dGVyIHRvIHVzZSBsaW5rZWQgbGlzdHMgcmF0aGVyIHRoYW4gVmVjdG9yIGFuZCBTdGFjaworICAgICAgICAgICAgLy8gICB0byBtYWludGFpbiB0aGUgZGVjaXNpb24gcG9pbnQgbGlzdCBhbmQgc3RhY2suICBJIHdlbnQgZm9yIHNpbXBsaWNpdHkgaW4KKyAgICAgICAgICAgIC8vICAgdGhpcyBpbml0aWFsIGltcGxlbWVudGF0aW9uLiAgSWYgcGVyZm9ybWFuY2UgaXMgY3JpdGljYWwgZW5vdWdoLCB3ZSBjYW4gZ28KKyAgICAgICAgICAgIC8vICAgYmFjayBhbmQgZml4IHRoaXMgbGF0ZXIuCisgICAgICAgICAgICAvLyAgIC1UaGVyZSBhcmUgYSBudW1iZXIgb2YgaW1wb3J0YW50IGxpbWl0YXRpb25zIG9uIHRoZSAqPyB0b2tlbi4gIEl0IGRvZXMgbm90IHdvcmsKKyAgICAgICAgICAgIC8vICAgcmlnaHQgd2hlbiBmb2xsb3dlZCBieSBhIHJlcGVhdGluZyBjaGFyYWN0ZXIgc2VxdWVuY2UgKGUuZy4sICIuKj8oYWJjKSoiKQorICAgICAgICAgICAgLy8gICAoYWx0aG91Z2ggaXQgZG9lcyB3b3JrIHJpZ2h0IHdoZW4gZm9sbG93ZWQgYnkgYSBzaW5nbGUgcmVwZWF0aW5nIGNoYXJhY3RlcikuCisgICAgICAgICAgICAvLyAgIEl0IHdpbGwgbm90IGFsd2F5cyB3b3JrIHJpZ2h0IHdoZW4gbmVzdGVkIGluIHBhcmVudGhlc2VzIG9yIGJyYWNlcyAoYWx0aG91Z2gKKyAgICAgICAgICAgIC8vICAgc29tZXRpbWVzIGl0IHdpbGwpLiAgSXQgYWxzbyB3aWxsIG5vdCB3b3JrIHJpZ2h0IGlmIHRoZSBncm91cCBvZiByZXBlYXRpbmcKKyAgICAgICAgICAgIC8vICAgY2hhcmFjdGVycyBhbmQgdGhlIGdyb3VwIG9mIGNoYXJhY3RlcnMgdGhhdCBmb2xsb3dzIG92ZXJsYXAgcGFydGlhbGx5CisgICAgICAgICAgICAvLyAgIChlLmcuLCAiW2EtZ10qP1tlLWpdIikuICBOb25lIG9mIHRoZXNlIGNhcGFiaWxpdGVzIHdhcyBkZWVtZWQgbmVjZXNzYXJ5IGZvcgorICAgICAgICAgICAgLy8gICBkZXNjcmliaW5nIGJyZWFraW5nIHJ1bGVzIHdlIGtub3cgYWJvdXQsIHNvIHdlIGxlZnQgdGhlbSBvdXQgZm9yCisgICAgICAgICAgICAvLyAgIGV4cGVkaXRpb3VzbmVzcy4KKyAgICAgICAgICAgIC8vICAgLSBSdWxlcyBzdWNoIGFzICJbYS16XSo/YWJjOyIgd2lsbCBiZSB0cmVhdGVkIHRoZSBzYW1lIGFzICJbYS16XSo/YWEqYmM7Ii0tCisgICAgICAgICAgICAvLyAgIHRoYXQgaXMsIGlmIHRoZSBzdHJpbmcgZW5kcyBpbiAiYWFhYWJjIiwgdGhlIGJyZWFrIHdpbGwgZ28gYmVmb3JlIHRoZSBmaXJzdAorICAgICAgICAgICAgLy8gICAiYSIgcmF0aGVyIHRoYW4gdGhlIGxhc3Qgb25lLiAgQm90aCBvZiB0aGVzZSBhcmUgbGltaXRhdGlvbnMgaW4gdGhlIGRlc2lnbgorICAgICAgICAgICAgLy8gICBvZiBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIGFuZCBub3QgbGltaXRhdGlvbnMgb2YgdGhlIHJ1bGUgcGFyc2VyLgorCisgICAgICAgICAgICBpbnQgcCA9IDA7CisgICAgICAgICAgICBpbnQgY3VycmVudFN0YXRlID0gMTsgICAvLyBkb24ndCB1c2Ugc3RhdGUgbnVtYmVyIDA7IDAgbWVhbnMgInN0b3AiCisgICAgICAgICAgICBpbnQgbGFzdFN0YXRlID0gY3VycmVudFN0YXRlOworICAgICAgICAgICAgU3RyaW5nIHBlbmRpbmdDaGFycyA9ICIiOworCisgICAgICAgICAgICBkZWNpc2lvblBvaW50U3RhY2sgPSBuZXcgU3RhY2soKTsKKyAgICAgICAgICAgIGRlY2lzaW9uUG9pbnRMaXN0ID0gbmV3IFZlY3RvcigpOworICAgICAgICAgICAgbG9vcGluZ1N0YXRlcyA9IG5ldyBWZWN0b3IoKTsKKyAgICAgICAgICAgIHN0YXRlc1RvQmFja2ZpbGwgPSBuZXcgVmVjdG9yKCk7CisKKyAgICAgICAgICAgIHNob3J0W10gc3RhdGU7CisgICAgICAgICAgICBib29sZWFuIHNhd0Vhcmx5QnJlYWsgPSBmYWxzZTsKKworICAgICAgICAgICAgLy8gaWYgd2UncmUgYWRkaW5nIHJ1bGVzIHRvIHRoZSBiYWNrd2FyZCBzdGF0ZSB0YWJsZSwgbWFyayB0aGUgaW5pdGlhbCBzdGF0ZQorICAgICAgICAgICAgLy8gYXMgYSBsb29waW5nIHN0YXRlCisgICAgICAgICAgICBpZiAoIWZvcndhcmQpIHsKKyAgICAgICAgICAgICAgICBsb29waW5nU3RhdGVzLmFkZEVsZW1lbnQobmV3IEludGVnZXIoMSkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBwdXQgdGhlIGN1cnJlbnQgc3RhdGUgb24gdGhlIGRlY2lzaW9uIHBvaW50IGxpc3QgYmVmb3JlIHdlIHN0YXJ0CisgICAgICAgICAgICBkZWNpc2lvblBvaW50TGlzdC5hZGRFbGVtZW50KG5ldyBJbnRlZ2VyKGN1cnJlbnRTdGF0ZSkpOyAvLyB3ZSB3YW50IGN1cnJlbnRTdGF0ZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmUgMSBoZXJlLi4uCisgICAgICAgICAgICBjdXJyZW50U3RhdGUgPSB0ZW1wU3RhdGVUYWJsZS5zaXplKCkgLSAxOyAgIC8vIGJ1dCBhZnRlciB0aGF0LCB3ZSB3YW50IGl0IHRvIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDEgbGVzcyB0aGFuIHRoZSBzdGF0ZSBudW1iZXIgb2YgdGhlIG5leHQgc3RhdGUKKyAgICAgICAgICAgIHdoaWxlIChwIDwgcnVsZS5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIGNoYXIgYyA9IHJ1bGUuY2hhckF0KHApOworICAgICAgICAgICAgICAgIGNsZWFyTG9vcGluZ1N0YXRlcyA9IGZhbHNlOworCisgICAgICAgICAgICAgICAgLy8gdGhpcyBzZWN0aW9uIGhhbmRsZXMgbGl0ZXJhbCBjaGFyYWN0ZXJzLCBlc2NhcGVkIGNoYXJhY3RlcnMgKHdoaWNoIGFyZQorICAgICAgICAgICAgICAgIC8vIGVmZmVjdGl2ZWx5IGxpdGVyYWwgY2hhcmFjdGVycyB0b28pLCB0aGUgLiB0b2tlbiwgYW5kIFtdIGV4cHJlc3Npb25zCisgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ1snCisgICAgICAgICAgICAgICAgICAgIHx8IGMgPT0gJ1xcJworICAgICAgICAgICAgICAgICAgICB8fCBDaGFyYWN0ZXIuaXNMZXR0ZXIoYykKKyAgICAgICAgICAgICAgICAgICAgfHwgQ2hhcmFjdGVyLmlzRGlnaXQoYykKKyAgICAgICAgICAgICAgICAgICAgfHwgYyA8ICcgJworICAgICAgICAgICAgICAgICAgICB8fCBjID09ICcuJworICAgICAgICAgICAgICAgICAgICB8fCBjID49ICdcdTAwN2YnKSB7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gaWYgd2UncmUgbm90IG9uIGEgcGVyaW9kLCBpc29sYXRlIHRoZSBleHByZXNzaW9uIGFuZCBsb29rIHVwCisgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBjb3JyZXNwb25kaW5nIGNhdGVnb3J5IGxpc3QKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgIT0gJy4nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcSA9IHA7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHdlJ3JlIG9uIGEgYmFja3NsYXNoLCB0aGUgZXhwcmVzc2lvbiBpcyB0aGUgY2hhcmFjdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBhZnRlciB0aGUgYmFja3NsYXNoCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PSAnXFwnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcSA9IHAgKyAyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgd2UncmUgb24gYW4gb3BlbmluZyBicmFja2V0LCBzY2FuIHRvIHRoZSBjbG9zaW5nIGJyYWNrZXQKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIGlzb2xhdGUgdGhlIGV4cHJlc3Npb24KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ1snKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJyYWNrZXRMZXZlbCA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGJyYWNrZXRMZXZlbCA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gcnVsZS5jaGFyQXQocSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID09ICdbJykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyticmFja2V0TGV2ZWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnXScpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tYnJhY2tldExldmVsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ1xcJykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrcTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlLCB0aGUgZXhwcmVzc2lvbiBpcyBqdXN0IHRoZSBjaGFyYWN0ZXIgaXRzZWxmCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBxID0gcCArIDE7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvb2sgdXAgdGhlIGNhdGVnb3J5IGxpc3QgZm9yIHRoZSBleHByZXNzaW9uIGFuZCBzdG9yZSBpdAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW4gcGVuZGluZ0NoYXJzCisgICAgICAgICAgICAgICAgICAgICAgICBwZW5kaW5nQ2hhcnMgPSAoU3RyaW5nKWV4cHJlc3Npb25zLmdldChydWxlLnN1YnN0cmluZyhwLCBxKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFkdmFuY2UgdGhlIGN1cnJlbnQgcG9zaXRpb24gcGFzdCB0aGUgZXhwcmVzc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHEgLSAxOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIGNoYXJhY3RlciB3ZSdyZSBvbiBpcyBhIHBlcmlvZCwgd2UgZW5kIHVwIGRvd24gaGVyZQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCByb3dOdW0gPSAoKEludGVnZXIpZGVjaXNpb25Qb2ludExpc3QubGFzdEVsZW1lbnQoKSkuaW50VmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gKHNob3J0W10pdGVtcFN0YXRlVGFibGUuZWxlbWVudEF0KHJvd051bSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBwZXJpb2QgaXMgZm9sbG93ZWQgYnkgYW4gYXN0ZXJpc2ssIHRoZW4ganVzdCBzZXQgdGhlIGN1cnJlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YXRlIHRvIGxvb3AgYmFjayBvbiBpdHNlbGYKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwICsgMSA8IHJ1bGUubGVuZ3RoKCkgJiYgcnVsZS5jaGFyQXQocCArIDEpID09ICcqJyAmJiBzdGF0ZVswXSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaXNpb25Qb2ludExpc3QuYWRkRWxlbWVudChuZXcgSW50ZWdlcihzdGF0ZVswXSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlbmRpbmdDaGFycyA9ICIiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocCArIDEgPCBydWxlLmxlbmd0aCgpICYmIHJ1bGUuY2hhckF0KHAgKyAxKSA9PSAnPycpIHsKKy8vU3lzdGVtLm91dC5wcmludGxuKCJTYXcgKj8iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TG9vcGluZ1N0YXRlcyhkZWNpc2lvblBvaW50TGlzdCwgZGVjaXNpb25Qb2ludExpc3QpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArK3A7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorLy9TeXN0ZW0ub3V0LnByaW50bG4oIlNhdyAuKiIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdGhlcndpc2UsIGZhYnJpY2F0ZSBhIGNhdGVnb3J5IGxpc3QgKCJwZW5kaW5nQ2hhcnMiKSB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBldmVyeSBjYXRlZ29yeSBpbiBpdAorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nQnVmZmVyIHRlbXAgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1DYXRlZ29yaWVzOyBpKyspCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAuYXBwZW5kKChjaGFyKShpICsgMHgxMDApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZW5kaW5nQ2hhcnMgPSB0ZW1wLnRvU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAvLyB3ZSdsbCBlbmQgdXAgaW4gaGVyZSBmb3IgYWxsIGV4cHJlc3Npb25zIGV4Y2VwdCBmb3IgLiosIHdoaWNoIGlzCisgICAgICAgICAgICAgICAgICAgIC8vIHNwZWNpYWwtY2FzZWQgYWJvdmUKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBlbmRpbmdDaGFycy5sZW5ndGgoKSAhPSAwKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBleHByZXNzaW9uIGlzIGZvbGxvd2VkIGJ5IGFuIGFzdGVyaXNrIG9yIGEgcXVlc3Rpb24gbWFyaywKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vICB0aGVuIHB1c2ggYSBjb3B5IG9mIHRoZSBjdXJyZW50IGRlY2lzaW9uIHBvaW50IGxpc3Qgb250byB0aGUgc3RhY2sKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwICsgMSA8IHJ1bGUubGVuZ3RoKCkgJiYgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGUuY2hhckF0KHAgKyAxKSA9PSAnKicgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBydWxlLmNoYXJBdChwICsgMSkgPT0gJz8nCisgICAgICAgICAgICAgICAgICAgICAgICApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaXNpb25Qb2ludFN0YWNrLnB1c2goZGVjaXNpb25Qb2ludExpc3QuY2xvbmUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNyZWF0ZSBhIG5ldyBzdGF0ZSwgYWRkIGl0IHRvIHRoZSBsaXN0IG9mIHN0YXRlcyB0byBiYWNrZmlsbAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgd2UgaGF2ZSBsb29waW5nIHN0YXRlcyB0byB3b3JyeSBhYm91dCwgc2V0IGl0cyAiZG9uJ3QgbWFrZQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWUgYW4gYWNjZXB0aW5nIHN0YXRlIiBmbGFnIGlmIHdlJ3ZlIHNlZW4gYSBzbGFzaCwgYW5kIGFkZAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXQgdG8gdGhlIGVuZCBvZiB0aGUgc3RhdGUgdGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBuZXdTdGF0ZSA9IHRlbXBTdGF0ZVRhYmxlLnNpemUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsb29waW5nU3RhdGVzLnNpemUoKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVzVG9CYWNrZmlsbC5hZGRFbGVtZW50KG5ldyBJbnRlZ2VyKG5ld1N0YXRlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IG5ldyBzaG9ydFtudW1DYXRlZ29yaWVzICsgMV07CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2F3RWFybHlCcmVhaykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlW251bUNhdGVnb3JpZXNdID0gRE9OVF9MT09QX0ZMQUc7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wU3RhdGVUYWJsZS5hZGRFbGVtZW50KHN0YXRlKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXBkYXRlIGV2ZXJ5Ym9keSBpbiB0aGUgZGVjaXNpb24gcG9pbnQgbGlzdCB0byBwb2ludCB0bworICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIG5ldyBzdGF0ZSAodGhpcyBhbHNvIHBlcmZvcm1zIGFsbCB0aGUgcmVjb25jaWxpYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5lZWRlZCB0byBtYWtlIHRoZSB0YWJsZSBkZXRlcm1pbmlzdGljKSwgdGhlbiBjbGVhciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlY2lzaW9uIHBvaW50IGxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0YXRlVGFibGUoZGVjaXNpb25Qb2ludExpc3QsIHBlbmRpbmdDaGFycywgKHNob3J0KW5ld1N0YXRlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlY2lzaW9uUG9pbnRMaXN0LnJlbW92ZUFsbEVsZW1lbnRzKCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFkZCBhbGwgc3RhdGVzIGNyZWF0ZWQgc2luY2UgdGhlIGxhc3QgbGl0ZXJhbCBjaGFyYWN0ZXIgd2UndmUKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNlZW4gdG8gdGhlIGRlY2lzaW9uIHBvaW50IGxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RTdGF0ZSA9IGN1cnJlbnRTdGF0ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArK2N1cnJlbnRTdGF0ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpc2lvblBvaW50TGlzdC5hZGRFbGVtZW50KG5ldyBJbnRlZ2VyKGN1cnJlbnRTdGF0ZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoY3VycmVudFN0YXRlICsgMSA8IHRlbXBTdGF0ZVRhYmxlLnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBhICogb3IgYSArIGRlbm90ZXMgYSByZXBlYXRpbmcgY2hhcmFjdGVyIG9yIGdyb3VwLCBhbmQgYSA/IGRlbm90ZXMgYW4KKyAgICAgICAgICAgICAgICAvLyBvcHRpb25hbCBjaGFyYWN0ZXIgZ3JvdXAuICgqLCArIGFuZCA/IGFmdGVyICgpIGFyZSBoYW5kbGVkIHNlcGFyYXRlbHkgYmVsb3cuKQorICAgICAgICAgICAgICAgIGlmIChjID09ICcrJyB8fCBjID09ICcqJyB8fCBjID09ICc/JykgeworICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIHRoZXJlJ3MgYSAqIG9yIGEgKywgdXBkYXRlIHRoZSBjdXJyZW50IHN0YXRlIHRvIGxvb3AgYmFjayBvbiBpdHNlbGYKKyAgICAgICAgICAgICAgICAgICAgLy8gb24gdGhlIGNoYXJhY3RlciBjYXRlZ29yaWVzIHRoYXQgY2F1c2VkIHVzIHRvIGVudGVyIHRoaXMgc3RhdGUKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJyonIHx8IGMgPT0gJysnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3RlOiB3ZSBwcm9jZXNzIG9uZSBzdGF0ZSBhdCBhIHRpbWUgYmVjYXVzZSB1cGRhdGVTdGF0ZVRhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYXkgYWRkIG5ldyBzdGF0ZXMsIGFuZCB3ZSB3YW50IHRvIHByb2Nlc3MgdGhlbSBhcyB3ZWxsLgorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IGxhc3RTdGF0ZSArIDE7IGkgPCB0ZW1wU3RhdGVUYWJsZS5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlY3RvciB0ZW1wID0gbmV3IFZlY3RvcigpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAuYWRkRWxlbWVudChuZXcgSW50ZWdlcihpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RhdGVUYWJsZSh0ZW1wLCBwZW5kaW5nQ2hhcnMsIChzaG9ydCkobGFzdFN0YXRlICsgMSkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBqdXN0IGFkZGVkIGFueSBuZXcgc3RhdGVzLCBhZGQgdGhlbSB0byB0aGUgZGVjaXNvbiBwb2ludCBsaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3RlOiBpdCBtaWdodCBiZSBhIGdvb2QgaWRlYSB0byBhdm9pZCBhZGRpbmcgbmV3IHN0YXRlcyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlY2lzaW9uIHBvaW50IGxpc3QgaW4gbW9yZSB0aGFuIG9uZSBwbGFjZS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGN1cnJlbnRTdGF0ZSArIDEgPCB0ZW1wU3RhdGVUYWJsZS5zaXplKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpc2lvblBvaW50TGlzdC5hZGRFbGVtZW50KG5ldyBJbnRlZ2VyKCsrY3VycmVudFN0YXRlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAvLyBmb3IgKiBhbmQgPyBwb3AgdGhlIHRvcCBlbGVtZW50IG9mZiB0aGUgZGVjaXNpb24gcG9pbnQgc3RhY2sgYW5kIG1lcmdlCisgICAgICAgICAgICAgICAgICAgIC8vIGl0IHdpdGggdGhlIGN1cnJlbnQgZGVjaXNpb24gcG9pbnQgbGlzdCAodGhpcyBjYXVzZXMgdGhlIGRpdmVyZ2VudAorICAgICAgICAgICAgICAgICAgICAvLyBwYXRocyB0aHJvdWdoIHRoZSBzdGF0ZSB0YWJsZSB0byBjb21lIHRvZ2V0aGVyIGFnYWluIG9uIHRoZSBuZXh0CisgICAgICAgICAgICAgICAgICAgIC8vIG5ldyBzdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJyonIHx8IGMgPT0gJz8nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBWZWN0b3IgdGVtcCA9IChWZWN0b3IpZGVjaXNpb25Qb2ludFN0YWNrLnBvcCgpOworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBkZWNpc2lvblBvaW50TGlzdC5zaXplKCk7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLmFkZEVsZW1lbnQoZGVjaXNpb25Qb2ludExpc3QuZWxlbWVudEF0KGkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlY2lzaW9uUG9pbnRMaXN0ID0gdGVtcDsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSA/IGFmdGVyIGEgKiBtb2RpZmllcyB0aGUgYmVoYXZpb3Igb2YgKiBpbiBjYXNlcyB3aGVyZSB0aGVyZSBpcyBvdmVybGFwCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZXR3ZWVuIHRoZSBzZXQgb2YgY2hhcmFjdGVycyB0aGF0IHJlcGVhdCBhbmQgdGhlIGNoYXJhY3RlcnMgd2hpY2ggZm9sbG93LgorICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2l0aG91dCB0aGUgPywgYWxsIHN0YXRlcyBmb2xsb3dpbmcgdGhlIHJlcGVhdGluZyBzdGF0ZSwgdXAgdG8gYSBzdGF0ZSB3aGljaAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgcmVhY2hlZCBieSBhIGNoYXJhY3RlciB0aGF0IGRvZXNuJ3Qgb3ZlcmxhcCwgd2lsbCBsb29wIGJhY2sgaW50byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlcGVhdGluZyBzdGF0ZS4gIFdpdGggdGhlID8sIHRoZSBtYXJrIHN0YXRlcyBmb2xsb3dpbmcgdGhlICo/IERPTidUIGxvb3AKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJhY2sgaW50byB0aGUgcmVwZWF0aW5nIHN0YXRlLiAgVGh1cywgIlthLXpdKnh5eiIgd2lsbCBtYXRjaCB0aGUgbG9uZ2VzdAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2VxdWVuY2Ugb2YgbGV0dGVycyB0aGF0IGVuZHMgaW4gInh5eiwiIHdoaWxlICJbYS16XSo/IHdpbGwgbWF0Y2ggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBfc2hvcnRlc3RfIHNlcXVlbmNlIG9mIGxldHRlcnMgdGhhdCBlbmRzIGluICJ4eXoiLgorICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgdXNlIGV4dHJhIGJvb2trZWVwaW5nIHRvIGFjaGlldmUgdGhpcyBlZmZlY3QsIHNpbmNlIGV2ZXJ5dGhpbmcgZWxzZSB3b3JrcworICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWNjb3JkaW5nIHRvIHRoZSAibG9uZ2VzdCBwb3NzaWJsZSBtYXRjaCIgcHJpbmNpcGxlLiAgVGhlIGJhc2ljIHByaW5jaXBsZQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgdGhhdCB0cmFuc2l0aW9ucyBvdXQgb2YgYSBsb29waW5nIHN0YXRlIGFyZSB3cml0dGVuIGluIG92ZXIgdGhlIGxvb3BpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlIGluc3RlYWQgb2YgYmVpbmcgcmVjb25jaWxlZCwgYW5kIHRoYXQgd2UgY29weSB0aGUgY29udGVudHMgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb29waW5nIHN0YXRlIGludG8gZW1wdHkgY2VsbHMgb2YgYWxsIG5vbi10ZXJtaW5hbCBzdGF0ZXMgdGhhdCBmb2xsb3cgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb29waW5nIHN0YXRlLgorLy9TeXN0ZW0ub3V0LnByaW50bG4oImMgPSAiICsgYyArICIsIHAgPSAiICsgcCArICIsIHJ1bGUubGVuZ3RoKCkgPSAiICsgcnVsZS5sZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PSAnKicgJiYgcCArIDEgPCBydWxlLmxlbmd0aCgpICYmIHJ1bGUuY2hhckF0KHAgKyAxKSA9PSAnPycpIHsKKy8vU3lzdGVtLm91dC5wcmludGxuKCJTYXcgKj8iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRMb29waW5nU3RhdGVzKGRlY2lzaW9uUG9pbnRMaXN0LCBkZWNpc2lvblBvaW50TGlzdCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytwOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gYSAoIG1hcmtzIHRoZSBiZWdpbm5pbmcgb2YgYSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzLiAgUGFyZW50aGVzZXMgY2FuIGVpdGhlcgorICAgICAgICAgICAgICAgIC8vIGNvbnRhaW4gc2V2ZXJhbCBhbHRlcm5hdGl2ZSBjaGFyYWN0ZXIgc2VxdWVuY2VzIChpLmUuLCAiKGFifGNkfGVmKSIpLCBvcgorICAgICAgICAgICAgICAgIC8vIHRoZXkgY2FuIGNvbnRhaW4gYSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIHRoYXQgY2FuIHJlcGVhdCAoaS5lLiwgIihhYmMpKiIpLiAgVGh1cywKKyAgICAgICAgICAgICAgICAvLyBBICgpIGdyb3VwIGNhbiBoYXZlIG11bHRpcGxlIGVudHJ5IGFuZCBleGl0IHBvaW50cy4gIFRvIGtlZXAgdHJhY2sgb2YgdGhpcywKKyAgICAgICAgICAgICAgICAvLyB3ZSByZXNlcnZlIFRXTyBzcG90cyBvbiB0aGUgZGVjaXNpb24tcG9pbnQgc3RhY2suICBUaGUgdG9wIG9mIHRoZSBzdGFjayBpcworICAgICAgICAgICAgICAgIC8vIHRoZSBsaXN0IG9mIGV4aXQgcG9pbnRzLCB3aGljaCBiZWNvbWVzIHRoZSBjdXJyZW50IGRlY2lzaW9uIHBvaW50IGxpc3Qgd2hlbgorICAgICAgICAgICAgICAgIC8vIHRoZSApIGlzIHJlYWNoZWQuICBUaGUgbmV4dCBlbnRyeSBkb3duIGlzIHRoZSBkZWNpc2lvbiBwb2ludCBsaXN0IGF0IHRoZQorICAgICAgICAgICAgICAgIC8vIGJlZ2lubmluZyBvZiB0aGUgKCksIHdoaWNoIGJlY29tZXMgdGhlIGN1cnJlbnQgZGVjaXNpb24gcG9pbnQgbGlzdCBhdCBldmVyeQorICAgICAgICAgICAgICAgIC8vIGVudHJ5IHBvaW50LgorICAgICAgICAgICAgICAgIC8vIEluIGFkZGl0aW9uIHRvIGtlZXBpbmcgdHJhY2sgb2YgdGhlIGV4aXQgcG9pbnRzIGFuZCB0aGUgYWN0aXZlIGRlY2lzaW9uCisgICAgICAgICAgICAgICAgLy8gcG9pbnRzIGJlZm9yZSB0aGUgKCAoaS5lLiwgdGhlIHBsYWNlcyBmcm9tIHdoaWNoIHRoZSAoKSBjYW4gYmUgZW50ZXJlZCksCisgICAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBrZWVwIHRyYWNrIG9mIHRoZSBlbnRyeSBwb2ludHMgaW4gY2FzZSB0aGUgZXhwcmVzc2lvbiBsb29wcworICAgICAgICAgICAgICAgIC8vIChpLmUuLCBpcyBmb2xsb3dlZCBieSAqKS4gIFdlIGRvIHRoYXQgYnkgY3JlYXRpbmcgYSBkdW1teSBzdGF0ZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAvLyBzdGF0ZSB0YWJsZSBhbmQgYWRkaW5nIGl0IHRvIHRoZSBkZWNpc2lvbiBwb2ludCBsaXN0IChCRUZPUkUgaXQncyBkdXBsaWNhdGVkCisgICAgICAgICAgICAgICAgLy8gb24gdGhlIHN0YWNrKS4gIE5vYm9keSBwb2ludHMgdG8gdGhpcyBzdGF0ZSwgc28gaXQnbGwgZ2V0IG9wdGltaXplZCBvdXQKKyAgICAgICAgICAgICAgICAvLyBhdCB0aGUgZW5kLiAgSXQgZXhpc3RzIG9ubHkgdG8gaG9sZCB0aGUgZW50cnkgcG9pbnRzIGluIGNhc2UgdGhlICgpCisgICAgICAgICAgICAgICAgLy8gZXhwcmVzc2lvbiBsb29wcy4KKyAgICAgICAgICAgICAgICBpZiAoYyA9PSAnKCcpIHsKKworICAgICAgICAgICAgICAgICAgICAvLyBhZGQgYSBuZXcgc3RhdGUgdG8gdGhlIHN0YXRlIHRhYmxlIHRvIGhvbGQgdGhlIGVudHJ5IHBvaW50cyBpbnRvCisgICAgICAgICAgICAgICAgICAgIC8vIHRoZSAoKSBleHByZXNzaW9uCisgICAgICAgICAgICAgICAgICAgIHRlbXBTdGF0ZVRhYmxlLmFkZEVsZW1lbnQobmV3IHNob3J0W251bUNhdGVnb3JpZXMgKyAxXSk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gd2UgaGF2ZSB0byBhZGp1c3QgbGFzdFN0YXRlIGFuZCBjdXJyZW50U3RhdGUgdG8gYWNjb3VudCBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgIC8vIG5ldyBkdW1teSBzdGF0ZQorICAgICAgICAgICAgICAgICAgICBsYXN0U3RhdGUgPSBjdXJyZW50U3RhdGU7CisgICAgICAgICAgICAgICAgICAgICsrY3VycmVudFN0YXRlOworCisgICAgICAgICAgICAgICAgICAgIC8vIGFkZCB0aGUgY3VycmVudCBzdGF0ZSB0byB0aGUgZGVjaXNpb24gcG9pbnQgbGlzdCAoYWRkIGl0IGF0IHRoZQorICAgICAgICAgICAgICAgICAgICAvLyBCRUdJTk5JTkcgc28gd2UgY2FuIGZpbmQgaXQgbGF0ZXIpCisgICAgICAgICAgICAgICAgICAgIGRlY2lzaW9uUG9pbnRMaXN0Lmluc2VydEVsZW1lbnRBdChuZXcgSW50ZWdlcihjdXJyZW50U3RhdGUpLCAwKTsKKworICAgICAgICAgICAgICAgICAgICAvLyBmaW5hbGx5LCBwdXNoIGEgY29weSBvZiB0aGUgY3VycmVudCBkZWNpc2lvbiBwb2ludCBsaXN0IG9udG8gdGhlCisgICAgICAgICAgICAgICAgICAgIC8vIHN0YWNrICh0aGlzIGtlZXBzIHRyYWNrIG9mIHRoZSBhY3RpdmUgZGVjaXNpb24gcG9pbnQgbGlzdCBiZWZvcmUKKyAgICAgICAgICAgICAgICAgICAgLy8gdGhlICgpIGV4cHJlc3Npb24pLCBmb2xsb3dlZCBieSBhbiBlbXB0eSBkZWNpc2lvbiBwb2ludCBsaXN0CisgICAgICAgICAgICAgICAgICAgIC8vICh0aGlzIHdpbGwgaG9sZCB0aGUgZXhpdCBwb2ludHMpCisgICAgICAgICAgICAgICAgICAgIGRlY2lzaW9uUG9pbnRTdGFjay5wdXNoKGRlY2lzaW9uUG9pbnRMaXN0LmNsb25lKCkpOworICAgICAgICAgICAgICAgICAgICBkZWNpc2lvblBvaW50U3RhY2sucHVzaChuZXcgVmVjdG9yKCkpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIGEgfCBzZXBhcmF0ZXMgYWx0ZXJuYXRpdmUgY2hhcmFjdGVyIHNlcXVlbmNlcyBpbiBhICgpIGV4cHJlc3Npb24uICBXaGVuCisgICAgICAgICAgICAgICAgLy8gYSB8IGlzIGVuY291bnRlcmVkLCB3ZSBhZGQgdGhlIGN1cnJlbnQgZGVjaXNpb24gcG9pbnQgbGlzdCB0byB0aGUgZXhpdC1wb2ludAorICAgICAgICAgICAgICAgIC8vIGxpc3QsIGFuZCByZXN0b3JlIHRoZSBkZWNpc2lvbiBwb2ludCBsaXN0IHRvIGl0cyBzdGF0ZSBwcmlvciB0byB0aGUgKC4KKyAgICAgICAgICAgICAgICBpZiAoYyA9PSAnfCcpIHsKKworICAgICAgICAgICAgICAgICAgICAvLyBwaWNrIG91dCB0aGUgdG9wIHR3byBkZWNpc2lvbiBwb2ludCBsaXN0cyBvbiB0aGUgc3RhY2sKKyAgICAgICAgICAgICAgICAgICAgVmVjdG9yIG9uZURvd24gPSAoVmVjdG9yKWRlY2lzaW9uUG9pbnRTdGFjay5wb3AoKTsKKyAgICAgICAgICAgICAgICAgICAgVmVjdG9yIHR3b0Rvd24gPSAoVmVjdG9yKWRlY2lzaW9uUG9pbnRTdGFjay5wZWVrKCk7CisgICAgICAgICAgICAgICAgICAgIGRlY2lzaW9uUG9pbnRTdGFjay5wdXNoKG9uZURvd24pOworCisgICAgICAgICAgICAgICAgICAgIC8vIGFwcGVuZCB0aGUgY3VycmVudCBkZWNpc2lvbiBwb2ludCBsaXN0IHRvIHRoZSBsaXN0IGJlbG93IGl0CisgICAgICAgICAgICAgICAgICAgIC8vIG9uIHRoZSBzdGFjayAodGhlIGxpc3Qgb2YgZXhpdCBwb2ludHMpLCBhbmQgcmVzdG9yZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgLy8gY3VycmVudCBkZWNpc2lvbiBwb2ludCBsaXN0IHRvIGl0cyBzdGF0ZSBiZWZvcmUgdGhlICgpIGV4cHJlc3Npb24KKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBkZWNpc2lvblBvaW50TGlzdC5zaXplKCk7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgICAgIG9uZURvd24uYWRkRWxlbWVudChkZWNpc2lvblBvaW50TGlzdC5lbGVtZW50QXQoaSkpOworICAgICAgICAgICAgICAgICAgICBkZWNpc2lvblBvaW50TGlzdCA9IChWZWN0b3IpdHdvRG93bi5jbG9uZSgpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIGEgKSBtYXJrcyB0aGUgZW5kIG9mIGEgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycy4gIFdlIGRvIG9uZSBvZiB0d28gdGhpbmdzCisgICAgICAgICAgICAgICAgLy8gZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIHNlcXVlbmNlIHJlcGVhdHMgKGkuZS4sIHdoZXRoZXIgdGhlICkgaXMgZm9sbG93ZWQKKyAgICAgICAgICAgICAgICAvLyBieSAqKTogIElmIHRoZSBzZXF1ZW5jZSBkb2Vzbid0IHJlcGVhdCwgdGhlbiB0aGUgZXhpdC1wb2ludCBsaXN0IGlzIG1lcmdlZAorICAgICAgICAgICAgICAgIC8vIHdpdGggdGhlIGN1cnJlbnQgZGVjaXNpb24gcG9pbnQgbGlzdCBhbmQgdGhlIGRlY2lzaW9uIHBvaW50IGxpc3QgZnJvbSBiZWZvcmUKKyAgICAgICAgICAgICAgICAvLyB0aGUgKCkgaXMgdGhyb3duIGF3YXkuICBJZiB0aGUgc2VxdWVuY2UgZG9lcyByZXBlYXQsIHRoZW4gd2UgZmlzaCBvdXQgdGhlCisgICAgICAgICAgICAgICAgLy8gc3RhdGUgd2Ugd2VyZSBpbiBiZWZvcmUgdGhlICggYW5kIGNvcHkgYWxsIG9mIGl0cyBmb3J3YXJkIHRyYW5zaXRpb25zCisgICAgICAgICAgICAgICAgLy8gKGkuZS4sIGV2ZXJ5IHRyYW5zaXRpb24gYWRkZWQgYnkgdGhlICgpIGV4cHJlc3Npb24pIGludG8gZXZlcnkgc3RhdGUgaW4gdGhlCisgICAgICAgICAgICAgICAgLy8gZXhpdC1wb2ludCBsaXN0IGFuZCB0aGUgY3VycmVudCBkZWNpc2lvbiBwb2ludCBsaXN0LiAgVGhlIGN1cnJlbnQgZGVjaXNpb24KKyAgICAgICAgICAgICAgICAvLyBwb2ludCBsaXN0IGlzIHRoZW4gbWVyZ2VkIHdpdGggYm90aCB0aGUgZXhpdC1wb2ludCBsaXN0IEFORCB0aGUgc2F2ZWQgdmVyc2lvbgorICAgICAgICAgICAgICAgIC8vIG9mIHRoZSBkZWNpc2lvbiBwb2ludCBsaXN0IGZyb20gYmVmb3JlIHRoZSAoKS4gIFRoZW4gd2UgdGhyb3cgb3V0IHRoZSAqLgorICAgICAgICAgICAgICAgIGlmIChjID09ICcpJykgeworCisgICAgICAgICAgICAgICAgICAgIC8vIHB1bGwgdGhlIGV4aXQgcG9pbnQgbGlzdCBvZmYgdGhlIHN0YWNrLCBtZXJnZSBpdCB3aXRoIHRoZSBjdXJyZW50CisgICAgICAgICAgICAgICAgICAgIC8vIGRlY2lzaW9uIHBvaW50IGxpc3QsIGFuZCBtYWtlIHRoZSBtZXJnZWQgdmVyc2lvbiB0aGUgY3VycmVudAorICAgICAgICAgICAgICAgICAgICAvLyBkZWNpc2lvbiBwb2ludCBsaXN0CisgICAgICAgICAgICAgICAgICAgIFZlY3RvciBleGl0UG9pbnRzID0gKFZlY3RvcilkZWNpc2lvblBvaW50U3RhY2sucG9wKCk7CisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZGVjaXNpb25Qb2ludExpc3Quc2l6ZSgpOyBpKyspCisgICAgICAgICAgICAgICAgICAgICAgICBleGl0UG9pbnRzLmFkZEVsZW1lbnQoZGVjaXNpb25Qb2ludExpc3QuZWxlbWVudEF0KGkpKTsKKyAgICAgICAgICAgICAgICAgICAgZGVjaXNpb25Qb2ludExpc3QgPSBleGl0UG9pbnRzOworCisgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSApIGlzbid0IGZvbGxvd2VkIGJ5IGEgKiwgKyBvciA/LCB0aGVuIGFsbCB3ZSBoYXZlIHRvIGRvIGlzIHRocm93CisgICAgICAgICAgICAgICAgICAgIC8vIGF3YXkgdGhlIG90aGVyIGxpc3Qgb24gdGhlIGRlY2lzaW9uIHBvaW50IHN0YWNrLCBhbmQgd2UncmUgZG9uZQorICAgICAgICAgICAgICAgICAgICBpZiAocCArIDEgPj0gcnVsZS5sZW5ndGgoKSB8fCAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVsZS5jaGFyQXQocCArIDEpICE9ICcqJyAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGUuY2hhckF0KHAgKyAxKSAhPSAnKycgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBydWxlLmNoYXJBdChwICsgMSkgIT0gJz8nKQorICAgICAgICAgICAgICAgICAgICApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlY2lzaW9uUG9pbnRTdGFjay5wb3AoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIC8vIGJ1dCBpZiB0aGUgc2VxdWVuY2UgaXMgY29uZGl0aW9uYWwgb3IgaXQgcmVwZWF0cywKKyAgICAgICAgICAgICAgICAgICAgLy8gd2UgaGF2ZSBhIGxvdCBtb3JlIHdvcmsgdG8gZG8uLi4KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vdyBleGl0UG9pbnRzIGFuZCBkZWNpc2lvblBvaW50TGlzdCBoYXZlIHRvIHBvaW50IHRvIGVxdWl2YWxlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZlY3RvcnMsIGJ1dCBub3QgdGhlIFNBTUUgdmVjdG9yCisgICAgICAgICAgICAgICAgICAgICAgICBleGl0UG9pbnRzID0gKFZlY3RvcilkZWNpc2lvblBvaW50TGlzdC5jbG9uZSgpOworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBwb3AgdGhlIG9yaWdpbmFsIGRlY2lzaW9uIHBvaW50IGxpc3Qgb2ZmIHRoZSBzdGFjaworICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yIHRlbXAgPSAoVmVjdG9yKWRlY2lzaW9uUG9pbnRTdGFjay5wb3AoKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2Ugc3F1aXJyZWxlZCBhd2F5IHRoZSByb3cgbnVtYmVyIG9mIG91ciBlbnRyeSBwb2ludCBsaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBvcmlnaW5hbCBkZWNpc2lvbiBwb2ludCBsaXN0LiAgRmlzaAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdCBzdGF0ZSBudW1iZXIgb3V0IGFuZCByZXRyaWV2ZSB0aGUgZW50cnkgcG9pbnQgbGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRlbXBTdGF0ZU51bSA9ICgoSW50ZWdlcil0ZW1wLmZpcnN0RWxlbWVudCgpKS5pbnRWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnRbXSB0ZW1wU3RhdGUgPSAoc2hvcnRbXSl0ZW1wU3RhdGVUYWJsZS5lbGVtZW50QXQodGVtcFN0YXRlTnVtKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWVyZ2UgdGhlIG9yaWdpbmFsIGRlY2lzaW9uIHBvaW50IGxpc3Qgd2l0aCB0aGUgY3VycmVudAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVjaXNpb24gcG9pbnQgbGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJ1bGUuY2hhckF0KHAgKyAxKSA9PSAnPycgfHwgcnVsZS5jaGFyQXQocCArIDEpID09ICcqJykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZGVjaXNpb25Qb2ludExpc3Quc2l6ZSgpOyBpKyspCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAuYWRkRWxlbWVudChkZWNpc2lvblBvaW50TGlzdC5lbGVtZW50QXQoaSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2lzaW9uUG9pbnRMaXN0ID0gdGVtcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmluYWxseSwgZm9yICogYW5kICsgY29weSBldmVyeSBmb3J3YXJkIHJlZmVyZW5jZSBmcm9tIHRoZSBlbnRyeSBwb2ludAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGlzdCBpbnRvIGV2ZXJ5IHN0YXRlIGluIHRoZSBuZXcgZGVjaXNpb24gcG9pbnQgbGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJ1bGUuY2hhckF0KHAgKyAxKSA9PSAnKycgfHwgcnVsZS5jaGFyQXQocCArIDEpID09ICcqJykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGVtcFN0YXRlLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZW1wU3RhdGVbaV0gPiB0ZW1wU3RhdGVOdW0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0YXRlVGFibGUoZXhpdFBvaW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IENoYXJhY3RlcigoY2hhcikoaSArIDB4MTAwKSkudG9TdHJpbmcoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcFN0YXRlW2ldKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXBkYXRlIGxhc3RTdGF0ZSBhbmQgY3VycmVudFN0YXRlLCBhbmQgdGhyb3cgYXdheSB0aGUgKiwgKywgb3IgPworICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFN0YXRlID0gY3VycmVudFN0YXRlOworICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0YXRlID0gdGVtcFN0YXRlVGFibGUuc2l6ZSgpIC0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIGEgLyBtYXJrcyB0aGUgcG9zaXRpb24gd2hlcmUgdGhlIGJyZWFrIGlzIHRvIGdvIGlmIHRoZSBjaGFyYWN0ZXIgc2VxdWVuY2UKKyAgICAgICAgICAgICAgICAvLyBtYXRjaGVzIHRoaXMgcnVsZS4gIFdlIHVwZGF0ZSB0aGUgZmxhZyB3b3JkIG9mIGV2ZXJ5IHN0YXRlIG9uIHRoZSBkZWNpc2lvbgorICAgICAgICAgICAgICAgIC8vIHBvaW50IGxpc3QgdG8gbWFyayB0aGVtIGFzIGVuZGluZyBzdGF0ZXMsIGFuZCB0YWtlIG5vdGUgb2YgdGhlIGZhY3QgdGhhdAorICAgICAgICAgICAgICAgIC8vIHdlJ3ZlIHNlZW4gdGhlIHNsYXNoCisgICAgICAgICAgICAgICAgaWYgKGMgPT0gJy8nKSB7CisgICAgICAgICAgICAgICAgICAgIHNhd0Vhcmx5QnJlYWsgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGRlY2lzaW9uUG9pbnRMaXN0LnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IChzaG9ydFtdKXRlbXBTdGF0ZVRhYmxlLmVsZW1lbnRBdCgoKEludGVnZXIpZGVjaXNpb25Qb2ludExpc3QuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudEF0KGkpKS5pbnRWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlW251bUNhdGVnb3JpZXNdIHw9IExPT0tBSEVBRF9TVEFURV9GTEFHOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gaWYgd2UgZ2V0IGhlcmUgd2l0aG91dCBleGVjdXRpbmcgYW55IG9mIHRoZSBhYm92ZSBjbGF1c2VzLCB3ZSBoYXZlIGEKKyAgICAgICAgICAgICAgICAvLyBzeW50YXggZXJyb3IuICBIb3dldmVyLCBmb3Igbm93IHdlIGp1c3QgaWdub3JlIHRoZSBvZmZlbmRpbmcgY2hhcmFjdGVyCisgICAgICAgICAgICAgICAgLy8gYW5kIG1vdmUgb24KKy8qCitkZWJ1Z1ByaW50bG4oIj09PT1QYXJzZWQgXCIiICsgcnVsZS5zdWJzdHJpbmcoMCwgcCArIDEpICsgIlwiLi4uIik7CitTeXN0ZW0ub3V0LnByaW50bG4oIiAgICAgIGN1cnJlbnRTdGF0ZSA9ICIgKyBjdXJyZW50U3RhdGUpOworZGVidWdQcmludFZlY3Rvck9mVmVjdG9ycygiICAgICAgZGVjaXNpb25Qb2ludFN0YWNrOiIsICIgICAgICAgICIsIGRlY2lzaW9uUG9pbnRTdGFjayk7CitkZWJ1Z1ByaW50VmVjdG9yKCIgICAgICAgICIsIGRlY2lzaW9uUG9pbnRMaXN0KTsKK2RlYnVnUHJpbnRWZWN0b3IoIiAgICAgIGxvb3BpbmdTdGF0ZXMgPSAiLCBsb29waW5nU3RhdGVzKTsKK2RlYnVnUHJpbnRWZWN0b3IoIiAgICAgIHN0YXRlc1RvQmFja2ZpbGwgPSAiLCBzdGF0ZXNUb0JhY2tmaWxsKTsKK1N5c3RlbS5vdXQucHJpbnRsbigiICAgICAgc2F3RWFybHlCcmVhayA9ICIgKyBzYXdFYXJseUJyZWFrKTsKK2RlYnVnUHJpbnRUZW1wU3RhdGVUYWJsZSgpOworKi8KKworICAgICAgICAgICAgICAgIC8vIGNsZWFyTG9vcGluZ1N0YXRlcyBpcyBhIHNpZ25hbCBiYWNrIGZyb20gdXBkYXRlU3RhdGVUYWJsZSgpIHRoYXQgd2UndmUKKyAgICAgICAgICAgICAgICAvLyB0cmFuc2l0aW9uZWQgdG8gYSBzdGF0ZSB0aGF0IHdvbid0IGxvb3AgYmFjayB0byB0aGUgY3VycmVudCBsb29waW5nCisgICAgICAgICAgICAgICAgLy8gc3RhdGUuICAoSW4gb3RoZXIgd29yZHMsIHdlJ3ZlIGdvdHRlbiB0byBhIHBvaW50IHdoZXJlIHdlIGNhbiBubyBsb25nZXIKKyAgICAgICAgICAgICAgICAvLyBnbyBiYWNrIGludG8gYSAqPyB3ZSBzYXcgZWFybGllci4pICBDbGVhciBvdXQgdGhlIGxpc3Qgb2YgbG9vcGluZyBzdGF0ZXMKKyAgICAgICAgICAgICAgICAvLyBhbmQgYmFja2ZpbGwgYW55IHN0YXRlcyB0aGF0IG5lZWQgdG8gYmUgYmFja2ZpbGxlZC4KKyAgICAgICAgICAgICAgICBpZiAoY2xlYXJMb29waW5nU3RhdGVzKSB7CisgICAgICAgICAgICAgICAgICAgIHNldExvb3BpbmdTdGF0ZXMobnVsbCwgZGVjaXNpb25Qb2ludExpc3QpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIGFkdmFuY2UgdG8gdGhlIG5leHQgY2hhcmFjdGVyLCBub3cgdGhhdCB3ZSd2ZSBwcm9jZXNzZWQgdGhlIGN1cnJlbnQKKyAgICAgICAgICAgICAgICAvLyBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICArK3A7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIHRoaXMgdGFrZXMgY2FyZSBvZiBiYWNrZmlsbGluZyBhbnkgc3RhdGVzIHRoYXQgc3RpbGwgbmVlZCB0byBiZSBiYWNrZmlsbGVkCisgICAgICAgICAgICBzZXRMb29waW5nU3RhdGVzKG51bGwsIGRlY2lzaW9uUG9pbnRMaXN0KTsKKworICAgICAgICAgICAgLy8gd2hlbiB3ZSByZWFjaCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHdlIGRvIGEgcG9zdHByb2Nlc3Npbmcgc3RlcCB0byBtYXJrIHRoZQorICAgICAgICAgICAgLy8gZW5kIHN0YXRlcy4gIFRoZSBkZWNpc2lvbiBwb2ludCBsaXN0IGNvbnRhaW5zIGV2ZXJ5IHN0YXRlIHRoYXQgY2FuIHRyYW5zaXRpb24KKyAgICAgICAgICAgIC8vIHRvIHRoZSBlbmQgc3RhdGUtLSB0aGF0IGlzLCBldmVyeSBzdGF0ZSB0aGF0IGlzIHRoZSBsYXN0IHN0YXRlIGluIGEgc2VxdWVuY2UKKyAgICAgICAgICAgIC8vIHRoYXQgbWF0Y2hlcyB0aGUgcnVsZS4gIEFsbCBvZiB0aGVzZSBzdGF0ZXMgYXJlIGNvbnNpZGVyZWQgIm1hcmsgc3RhdGVzIgorICAgICAgICAgICAgLy8gb3IgImFjY2VwdGluZyBzdGF0ZXMiLS0gdGhhdCBpcywgc3RhdGVzIHRoYXQgY2F1c2UgdGhlIHBvc2l0aW9uIHJldHVybmVkIGZyb20KKyAgICAgICAgICAgIC8vIG5leHQoKSB0byBiZSB1cGRhdGVkLiAgQSBtYXJrIHN0YXRlIHJlcHJlc2VudHMgYSBwb3NzaWJsZSBicmVhayBwb3NpdGlvbi4KKyAgICAgICAgICAgIC8vIFRoaXMgYWxsb3dzIHVzIHRvIGxvb2sgYWhlYWQgYW5kIHJlbWVtYmVyIGhvdyBmYXIgdGhlIHJ1bGUgbWF0Y2hlZAorICAgICAgICAgICAgLy8gYmVmb3JlIGZvbGxvd2luZyB0aGUgbmV3IGJyYW5jaCAoc2VlIG5leHQoKSBmb3IgbW9yZSBpbmZvcm1hdGlvbikuCisgICAgICAgICAgICAvLyBUaGUgdGVtcG9yYXJ5IHN0YXRlIHRhYmxlIGhhcyBhbiBleHRyYSAiZmxhZyBjb2x1bW4iIGF0IHRoZSBlbmQgd2hlcmUgdGhpcworICAgICAgICAgICAgLy8gaW5mb3JtYXRpb24gaXMgc3RvcmVkLiAgV2UgbWFyayB0aGUgZW5kIHN0YXRlcyBieSBzZXR0aW5nIGEgZmxhZyBpbiB0aGVpcgorICAgICAgICAgICAgLy8gZmxhZyBjb2x1bW4uCisgICAgICAgICAgICAvLyBOb3cgaWYgd2Ugc2F3IHRoZSAvIGluIHRoZSBydWxlLCB0aGVuIGV2ZXJ5dGhpbmcgYWZ0ZXIgaXQgaXMgbG9va2FoZWFkCisgICAgICAgICAgICAvLyBtYXRlcmlhbCBhbmQgdGhlIGJyZWFrIHJlYWxseSBnb2VzIHdoZXJlIHRoZSBzbGFzaCBpcy4gIEluIHRoaXMgY2FzZSwKKyAgICAgICAgICAgIC8vIHdlIG1hcmsgdGhlc2Ugc3RhdGVzIGFzIEJPVEggYWNjZXB0aW5nIHN0YXRlcyBhbmQgbG9va2FoZWFkIHN0YXRlcy4gIFRoaXMKKyAgICAgICAgICAgIC8vIHNpZ25hbHMgdGhhdCB0aGVzZSBzdGF0ZXMgY2F1c2UgdGhlIGJyZWFrIHBvc2l0aW9uIHRvIGJlIHVwZGF0ZWQgdG8gdGhlCisgICAgICAgICAgICAvLyBwb3NpdGlvbiBvZiB0aGUgc2xhc2ggcmF0aGVyIHRoYW4gdGhlIGN1cnJlbnQgYnJlYWsgcG9zaXRpb24uCisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGRlY2lzaW9uUG9pbnRMaXN0LnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgaW50IHJvd051bSA9ICgoSW50ZWdlcilkZWNpc2lvblBvaW50TGlzdC5lbGVtZW50QXQoaSkpLmludFZhbHVlKCk7CisgICAgICAgICAgICAgICAgc3RhdGUgPSAoc2hvcnRbXSl0ZW1wU3RhdGVUYWJsZS5lbGVtZW50QXQocm93TnVtKTsKKyAgICAgICAgICAgICAgICBzdGF0ZVtudW1DYXRlZ29yaWVzXSB8PSBFTkRfU1RBVEVfRkxBRzsKKyAgICAgICAgICAgICAgICBpZiAoc2F3RWFybHlCcmVhaykgeworICAgICAgICAgICAgICAgICAgICBzdGF0ZVtudW1DYXRlZ29yaWVzXSB8PSBMT09LQUhFQURfU1RBVEVfRkxBRzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisvKgorZGVidWdQcmludGxuKCI9PT09UGFyc2VkIFwiIiArIHJ1bGUgKyAiOyIpOworU3lzdGVtLm91dC5wcmludGxuKCk7CitTeXN0ZW0ub3V0LnByaW50bG4oIiAgICAgIGN1cnJlbnRTdGF0ZSA9ICIgKyBjdXJyZW50U3RhdGUpOworZGVidWdQcmludFZlY3Rvck9mVmVjdG9ycygiICAgICAgZGVjaXNpb25Qb2ludFN0YWNrOiIsICIgICAgICAgICIsIGRlY2lzaW9uUG9pbnRTdGFjayk7CitkZWJ1Z1ByaW50VmVjdG9yKCIgICAgICAgICIsIGRlY2lzaW9uUG9pbnRMaXN0KTsKK2RlYnVnUHJpbnRWZWN0b3IoIiAgICAgIGxvb3BpbmdTdGF0ZXMgPSAiLCBsb29waW5nU3RhdGVzKTsKK2RlYnVnUHJpbnRWZWN0b3IoIiAgICAgIHN0YXRlc1RvQmFja2ZpbGwgPSAiLCBzdGF0ZXNUb0JhY2tmaWxsKTsKK1N5c3RlbS5vdXQucHJpbnRsbigiICAgICAgc2F3RWFybHlCcmVhayA9ICIgKyBzYXdFYXJseUJyZWFrKTsKK2RlYnVnUHJpbnRUZW1wU3RhdGVUYWJsZSgpOworKi8KKyAgICAgICAgfQorCisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFVwZGF0ZSBlbnRyaWVzIGluIHRoZSBzdGF0ZSB0YWJsZSwgYW5kIG1lcmdlIHN0YXRlcyB3aGVuIG5lY2Vzc2FyeSB0byBrZWVwCisgICAgICAgICAqIHRoZSB0YWJsZSBkZXRlcm1pbmlzdGljLgorICAgICAgICAgKiBAcGFyYW0gcm93cyBUaGUgbGlzdCBvZiByb3dzIHRoYXQgbmVlZCB1cGRhdGluZyAodGhlIGRlY2lzaW9uIHBvaW50IGxpc3QpCisgICAgICAgICAqIEBwYXJhbSBwZW5kaW5nQ2hhcnMgQSBjaGFyYWN0ZXIgY2F0ZWdvcnkgbGlzdCwgZW5jb2RlZCBpbiBhIFN0cmluZy4gIFRoaXMgaXMgdGhlCisgICAgICAgICAqIGxpc3Qgb2YgdGhlIGNvbHVtbnMgdGhhdCBuZWVkIHVwZGF0aW5nLgorICAgICAgICAgKiBAcGFyYW0gbmV3VmFsdWUgVXBkYXRlIHRoZSBjZWxscyBzcGVjZmllZCBhYm92ZSB0byBjb250YWluIHRoaXMgdmFsdWUKKyAgICAgICAgICovCisgICAgICAgIHByaXZhdGUgdm9pZCB1cGRhdGVTdGF0ZVRhYmxlKFZlY3RvciByb3dzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgcGVuZGluZ0NoYXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG9ydCBuZXdWYWx1ZSkgeworICAgICAgICAgICAgLy8gY3JlYXRlIGEgZHVtbXkgc3RhdGUgdGhhdCBoYXMgdGhlIHNwZWNpZmllZCByb3cgbnVtYmVyIChuZXdWYWx1ZSkgaW4KKyAgICAgICAgICAgIC8vIHRoZSBjZWxscyB0aGF0IG5lZWQgdG8gYmUgdXBkYXRlZCAodGhvc2Ugc3BlY2lmaWVkIGJ5IHBlbmRpbmdDaGFycykKKyAgICAgICAgICAgIC8vIGFuZCAwIGluIHRoZSBvdGhlciBjZWxscworICAgICAgICAgICAgc2hvcnRbXSBuZXdWYWx1ZXMgPSBuZXcgc2hvcnRbbnVtQ2F0ZWdvcmllcyArIDFdOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwZW5kaW5nQ2hhcnMubGVuZ3RoKCk7IGkrKykKKyAgICAgICAgICAgICAgICBuZXdWYWx1ZXNbKGludCkocGVuZGluZ0NoYXJzLmNoYXJBdChpKSkgLSAweDEwMF0gPSBuZXdWYWx1ZTsKKworICAgICAgICAgICAgLy8gZ28gdGhyb3VnaCB0aGUgbGlzdCBvZiByb3dzIHRvIHVwZGF0ZSwgYW5kIHVwZGF0ZSB0aGVtIGJ5IGNhbGxpbmcKKyAgICAgICAgICAgIC8vIG1lcmdlU3RhdGVzKCkgdG8gbWVyZ2UgdGhlbSB0aGUgdGhlIGR1bW15IHN0YXRlIHdlIGNyZWF0ZWQKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcm93cy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgIG1lcmdlU3RhdGVzKCgoSW50ZWdlcilyb3dzLmVsZW1lbnRBdChpKSkuaW50VmFsdWUoKSwgbmV3VmFsdWVzLCByb3dzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBUaGUgcmVhbCB3b3JrIG9mIG1ha2luZyB0aGUgc3RhdGUgdGFibGUgZGV0ZXJtaW5pc3RpYyBoYXBwZW5zIGhlcmUuICBUaGlzIGZ1bmN0aW9uCisgICAgICAgICAqIG1lcmdlcyBhIHN0YXRlIGluIHRoZSBzdGF0ZSB0YWJsZSAoc3BlY2lmaWVkIGJ5IHJvd051bSkgd2l0aCBhIHN0YXRlIHRoYXQgaXMKKyAgICAgICAgICogcGFzc2VkIGluIChuZXdWYWx1ZXMpLiAgVGhlIGJhc2ljIHByb2Nlc3MgaXMgdG8gY29weSB0aGUgbm9uemVybyBjZWxscyBpbiBuZXdTdGF0ZXMKKyAgICAgICAgICogaW50byB0aGUgc3RhdGUgaW4gdGhlIHN0YXRlIHRhYmxlICh3ZSdsbCBjYWxsIHRoYXQgb2xkVmFsdWVzKS4gIElmIHRoZXJlJ3MgYQorICAgICAgICAgKiBjb2xsaXNpb24gKGkuZS4sIGlmIHRoZSBzYW1lIGNlbGwgaGFzIGEgbm9uemVybyB2YWx1ZSBpbiBib3RoIHN0YXRlcywgYW5kIGl0J3MKKyAgICAgICAgICogbm90IHRoZSBTQU1FIHZhbHVlKSwgdGhlbiB3ZSBoYXZlIHRvIHJlY29uY2lsZSB0aGUgY29sbGlzaW9uLiAgV2UgZG8gdGhpcyBieQorICAgICAgICAgKiBjcmVhdGluZyBhIG5ldyBzdGF0ZSwgYWRkaW5nIGl0IHRvIHRoZSBlbmQgb2YgdGhlIHN0YXRlIHRhYmxlLCBhbmQgdXNpbmcgdGhpcworICAgICAgICAgKiBmdW5jdGlvbiByZWN1cnNpdmVseSB0byBtZXJnZSB0aGUgb3JpZ2luYWwgdHdvIHN0YXRlcyBpbnRvIGEgc2luZ2xlLCBjb21iaW5lZAorICAgICAgICAgKiBzdGF0ZS4gIFRoaXMgcHJvY2VzcyBtYXkgaGFwcGVuIHJlY3Vyc2l2ZWx5IChpLmUuLCBlYWNoIHN1Y2Nlc3NpdmUgbGV2ZWwgbWF5CisgICAgICAgICAqIGludm9sdmUgY29sbGlzaW9ucykuICBUbyBwcmV2ZW50IGluZmluaXRlIHJlY3Vyc2lvbiwgd2Uga2VlcCBhIGxvZyBvZiBtZXJnZQorICAgICAgICAgKiBvcGVyYXRpb25zLiAgQW55IHRpbWUgd2UncmUgbWVyZ2luZyB0d28gc3RhdGVzIHdlJ3ZlIG1lcmdlZCBiZWZvcmUsIHdlIGNhbiBqdXN0CisgICAgICAgICAqIHN1cHBseSB0aGUgcm93IG51bWJlciBmb3IgdGhlIHJlc3VsdCBvZiB0aGF0IG1lcmdlIG9wZXJhdGlvbiByYXRoZXIgdGhhbiBjcmVhdGluZworICAgICAgICAgKiBhIG5ldyBzdGF0ZSBqdXN0IGxpa2UgaXQuCisgICAgICAgICAqIEBwYXJhbSByb3dOdW0gVGhlIHJvdyBudW1iZXIgaW4gdGhlIHN0YXRlIHRhYmxlIG9mIHRoZSBzdGF0ZSB0byBiZSB1cGRhdGVkCisgICAgICAgICAqIEBwYXJhbSBuZXdWYWx1ZXMgVGhlIHN0YXRlIHRvIG1lcmdlIGl0IHdpdGguCisgICAgICAgICAqIEBwYXJhbSByb3dzQmVpbmdVcGRhdGVkIEEgY29weSBvZiB0aGUgbGlzdCBvZiByb3dzIHBhc3NlZCB0byB1cGRhdGVTdGF0ZVRhYmxlKCkKKyAgICAgICAgICogKGl0c2VsZiBhIGNvcHkgb2YgdGhlIGRlY2lzaW9uIHBvaW50IGxpc3QgZnJvbSBwYXJzZVJ1bGUoKSkuICBOZXdseS1jcmVhdGVkCisgICAgICAgICAqIHN0YXRlcyBnZXQgYWRkZWQgdG8gdGhlIGRlY2lzaW9uIHBvaW50IGxpc3QgaWYgdGhlaXIgInBhcmVudHMiIHdlcmUgb24gaXQuCisgICAgICAgICAqLworICAgICAgICBwcml2YXRlIHZvaWQgbWVyZ2VTdGF0ZXMoaW50IHJvd051bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0W10gbmV3VmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yIHJvd3NCZWluZ1VwZGF0ZWQpIHsKKyAgICAgICAgICAgIHNob3J0W10gb2xkVmFsdWVzID0gKHNob3J0W10pKHRlbXBTdGF0ZVRhYmxlLmVsZW1lbnRBdChyb3dOdW0pKTsKKy8qCitTeXN0ZW0ub3V0LnByaW50KCIqKipNZXJnaW5nICIgKyByb3dOdW0gKyAiOiIpOworZm9yIChpbnQgaSA9IDA7IGkgPCBvbGRWYWx1ZXMubGVuZ3RoOyBpKyspIFN5c3RlbS5vdXQucHJpbnQoIlx0IiArIG9sZFZhbHVlc1tpXSk7CitTeXN0ZW0ub3V0LnByaW50bG4oKTsKK1N5c3RlbS5vdXQucHJpbnQoIiAgICB3aXRoICAgXHQiKTsKK2ZvciAoaW50IGkgPSAwOyBpIDwgbmV3VmFsdWVzLmxlbmd0aDsgaSsrKSBTeXN0ZW0ub3V0LnByaW50KCJcdCIgKyBuZXdWYWx1ZXNbaV0pOworU3lzdGVtLm91dC5wcmludGxuKCk7CisqLworCisgICAgICAgICAgICBib29sZWFuIGlzTG9vcGluZ1N0YXRlID0gbG9vcGluZ1N0YXRlcy5jb250YWlucyhuZXcgSW50ZWdlcihyb3dOdW0pKTsKKworICAgICAgICAgICAgLy8gZm9yIGVhY2ggb2YgdGhlIGNlbGxzIGluIHRoZSByb3dzIHdlJ3JlIHJlY29uY2lsaW5nLCBkby4uLgorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvbGRWYWx1ZXMubGVuZ3RoOyBpKyspIHsKKworICAgICAgICAgICAgICAgIC8vIGlmIHRoZXkgY29udGFpbiB0aGUgc2FtZSB2YWx1ZSwgd2UgZG9uJ3QgaGF2ZSB0byBkbyBhbnl0aGluZworICAgICAgICAgICAgICAgIGlmIChvbGRWYWx1ZXNbaV0gPT0gbmV3VmFsdWVzW2ldKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIGlmIG9sZFZhbHVlcyBpcyBhIGxvb3Bpbmcgc3RhdGUgYW5kIHRoZSBzdGF0ZSB0aGUgY3VycmVudCBjZWxsIHBvaW50cyB0bworICAgICAgICAgICAgICAgIC8vIGlzIHRvbywgdGhlbiB3ZSBjYW4ganVzdCBzdG9tcCBvdmVyIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoYXQgY2VsbCAoYW5kCisgICAgICAgICAgICAgICAgLy8gc2V0IHRoZSBjbGVhci1sb29waW5nLXN0YXRlcyBmbGFnIGlmIG5lY2Vzc2FyeSkKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChpc0xvb3BpbmdTdGF0ZSAmJiBsb29waW5nU3RhdGVzLmNvbnRhaW5zKG5ldyBJbnRlZ2VyKG9sZFZhbHVlc1tpXSkpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChuZXdWYWx1ZXNbaV0gIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9sZFZhbHVlc1tpXSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJMb29waW5nU3RhdGVzID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIG9sZFZhbHVlc1tpXSA9IG5ld1ZhbHVlc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBjdXJyZW50IGNlbGwgaW4gb2xkVmFsdWVzIGlzIDAsIGNvcHkgaW4gdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUKKyAgICAgICAgICAgICAgICAvLyBmcm9tIG5ld1ZhbHVlcworICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9sZFZhbHVlc1tpXSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIG9sZFZhbHVlc1tpXSA9IG5ld1ZhbHVlc1tpXTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyB0aGUgbGFzdCBjb2x1bW4gb2YgZWFjaCByb3cgaXMgdGhlIGZsYWcgY29sdW1uLiAgVGFrZSBjYXJlIHRvIG1lcmdlIHRoZQorICAgICAgICAgICAgICAgIC8vIGZsYWcgd29yZHMgY29ycmVjdGx5CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoaSA9PSBudW1DYXRlZ29yaWVzKSB7CisgICAgICAgICAgICAgICAgICAgIG9sZFZhbHVlc1tpXSA9IChzaG9ydCkoKG5ld1ZhbHVlc1tpXSAmIEFMTF9GTEFHUykgfCBvbGRWYWx1ZXNbaV0pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIGlmIGJvdGggbmV3VmFsdWVzIGFuZCBvbGRWYWx1ZXMgaGF2ZSBhIG5vbnplcm8gdmFsdWUgaW4gdGhlIGN1cnJlbnQKKyAgICAgICAgICAgICAgICAvLyBjZWxsLCBhbmQgaXQgaXNuJ3QgdGhlIHNhbWUgdmFsdWUgYm90aCBwbGFjZXMuLi4KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChvbGRWYWx1ZXNbaV0gIT0gMCAmJiBuZXdWYWx1ZXNbaV0gIT0gMCkgeworCisgICAgICAgICAgICAgICAgICAgIC8vIGxvb2sgdXAgdGhpcyBwYWlyIG9mIGNlbGwgdmFsdWVzIGluIHRoZSBtZXJnZSBsaXN0LiAgSWYgaXQncworICAgICAgICAgICAgICAgICAgICAvLyBmb3VuZCwgdXBkYXRlIHRoZSBjZWxsIGluIG9sZFZhbHVlcyB0byBwb2ludCB0byB0aGUgbWVyZ2VkIHN0YXRlCisgICAgICAgICAgICAgICAgICAgIGludCBjb21iaW5lZFJvd051bSA9IHNlYXJjaE1lcmdlTGlzdChvbGRWYWx1ZXNbaV0sIG5ld1ZhbHVlc1tpXSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjb21iaW5lZFJvd051bSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvbGRWYWx1ZXNbaV0gPSAoc2hvcnQpY29tYmluZWRSb3dOdW07CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAvLyBvdGhlcndpc2UsIHdlIGhhdmUgdG8gcmVjb25jaWxlIHRoZW0uLi4KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb3B5IG91ciByb3cgbnVtYmVycyBpbnRvIHZhcmlhYmxlcyB0byBtYWtlIHRoaW5ncyBlYXNpZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBvbGRSb3dOdW0gPSBvbGRWYWx1ZXNbaV07CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbmV3Um93TnVtID0gbmV3VmFsdWVzW2ldOworICAgICAgICAgICAgICAgICAgICAgICAgY29tYmluZWRSb3dOdW0gPSB0ZW1wU3RhdGVUYWJsZS5zaXplKCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFkZCB0aGlzIHBhaXIgb2Ygcm93IG51bWJlcnMgdG8gdGhlIG1lcmdlIGxpc3QgKGNyZWF0ZSBpdCBmaXJzdAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgd2UgaGF2ZW4ndCBjcmVhdGVkIHRoZSBtZXJnZSBsaXN0IHlldCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZXJnZUxpc3QgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlTGlzdCA9IG5ldyBWZWN0b3IoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlTGlzdC5hZGRFbGVtZW50KG5ldyBpbnRbXSB7IG9sZFJvd051bSwgbmV3Um93TnVtLCBjb21iaW5lZFJvd051bSB9KTsKKworLy9TeXN0ZW0ub3V0LnByaW50bG4oIioqKkF0ICIgKyByb3dOdW0gKyAiLCBtZXJnaW5nICIgKyBvbGRSb3dOdW0gKyAiIGFuZCAiICsgbmV3Um93TnVtICsgIiBpbnRvICIgKyBjb21iaW5lZFJvd051bSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNyZWF0ZSBhIG5ldyByb3cgdG8gcmVwcmVzZW50IHRoZSBtZXJnZWQgc3RhdGUsIGFuZCBjb3B5IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udGVudHMgb2Ygb2xkUm93IGludG8gaXQsIHRoZW4gYWRkIGl0IHRvIHRoZSBlbmQgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGF0ZSB0YWJsZSBhbmQgdXBkYXRlIHRoZSBvcmlnaW5hbCByb3cgKG9sZFZhbHVlcykgdG8gcG9pbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIHRoZSBuZXcsIG1lcmdlZCwgc3RhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0W10gbmV3Um93ID0gbmV3IHNob3J0W251bUNhdGVnb3JpZXMgKyAxXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0W10gb2xkUm93ID0gKHNob3J0W10pKHRlbXBTdGF0ZVRhYmxlLmVsZW1lbnRBdChvbGRSb3dOdW0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkob2xkUm93LCAwLCBuZXdSb3csIDAsIG51bUNhdGVnb3JpZXMgKyAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBTdGF0ZVRhYmxlLmFkZEVsZW1lbnQobmV3Um93KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9sZFZhbHVlc1tpXSA9IChzaG9ydCljb21iaW5lZFJvd051bTsKKworCisvL1N5c3RlbS5vdXQucHJpbnRsbigibGFzdE9sZFJvd051bSA9ICIgKyBsYXN0T2xkUm93TnVtKTsKKy8vU3lzdGVtLm91dC5wcmludGxuKCJsYXN0Q29tYmluZWRSb3dOdW0gPSAiICsgbGFzdENvbWJpbmVkUm93TnVtKTsKKy8vU3lzdGVtLm91dC5wcmludGxuKCJkZWNpc2lvblBvaW50TGlzdC5jb250YWlucyhsYXN0T2xkUm93TnVtKSA9ICIgKyBkZWNpc2lvblBvaW50TGlzdC5jb250YWlucyhuZXcgSW50ZWdlcihsYXN0T2xkUm93TnVtKSkpOworLy9TeXN0ZW0ub3V0LnByaW50bG4oImRlY2lzaW9uUG9pbnRMaXN0LmNvbnRhaW5zKGxhc3RDb21iaW5lZFJvd051bSkgPSAiICsgZGVjaXNpb25Qb2ludExpc3QuY29udGFpbnMobmV3IEludGVnZXIobGFzdENvbWJpbmVkUm93TnVtKSkpOworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgZGVjaXNpb24gcG9pbnQgbGlzdCBjb250YWlucyBlaXRoZXIgb2YgdGhlIHBhcmVudCByb3dzLAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXBkYXRlIGl0IHRvIGluY2x1ZGUgdGhlIG5ldyByb3cgYXMgd2VsbAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChkZWNpc2lvblBvaW50TGlzdC5jb250YWlucyhuZXcgSW50ZWdlcihvbGRSb3dOdW0pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBkZWNpc2lvblBvaW50TGlzdC5jb250YWlucyhuZXcgSW50ZWdlcihuZXdSb3dOdW0pKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhZGVjaXNpb25Qb2ludExpc3QuY29udGFpbnMobmV3IEludGVnZXIoY29tYmluZWRSb3dOdW0pKQorICAgICAgICAgICAgICAgICAgICAgICAgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaXNpb25Qb2ludExpc3QuYWRkRWxlbWVudChuZXcgSW50ZWdlcihjb21iaW5lZFJvd051bSkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBkbyB0aGUgc2FtZSB0aGluZyB3aXRoIHRoZSBsaXN0IG9mIHJvd3MgYmVpbmcgdXBkYXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChyb3dzQmVpbmdVcGRhdGVkLmNvbnRhaW5zKG5ldyBJbnRlZ2VyKG9sZFJvd051bSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHJvd3NCZWluZ1VwZGF0ZWQuY29udGFpbnMobmV3IEludGVnZXIobmV3Um93TnVtKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgIXJvd3NCZWluZ1VwZGF0ZWQuY29udGFpbnMobmV3IEludGVnZXIoY29tYmluZWRSb3dOdW0pKQorICAgICAgICAgICAgICAgICAgICAgICAgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaXNpb25Qb2ludExpc3QuYWRkRWxlbWVudChuZXcgSW50ZWdlcihjb21iaW5lZFJvd051bSkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm93IChncm9hbikgZG8gdGhlIHNhbWUgdGhpbmcgZm9yIGFsbCB0aGUgZW50cmllcyBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlY2lzaW9uIHBvaW50IHN0YWNrCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBrID0gMDsgayA8IGRlY2lzaW9uUG9pbnRTdGFjay5zaXplKCk7IGsrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlY3RvciBkcGwgPSAoVmVjdG9yKWRlY2lzaW9uUG9pbnRTdGFjay5lbGVtZW50QXQoayk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChkcGwuY29udGFpbnMobmV3IEludGVnZXIob2xkUm93TnVtKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGRwbC5jb250YWlucyhuZXcgSW50ZWdlcihuZXdSb3dOdW0pKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgIWRwbC5jb250YWlucyhuZXcgSW50ZWdlcihjb21iaW5lZFJvd051bSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRwbC5hZGRFbGVtZW50KG5ldyBJbnRlZ2VyKGNvbWJpbmVkUm93TnVtKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBGSU5BTExZIChwdWZmIHB1ZmYgcHVmZiksIGNhbGwgbWVyZ2VTdGF0ZXMoKSByZWN1cnNpdmVseSB0byBjb3B5CisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgcm93IHJlZmVycmVkIHRvIGJ5IG5ld1ZhbHVlcyBpbnRvIHRoZSBuZXcgcm93IGFuZCByZXNvbHZlIGFueQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uZmxpY3RzIHRoYXQgY29tZSB1cCBhdCB0aGF0IGxldmVsCisgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZVN0YXRlcyhjb21iaW5lZFJvd051bSwgKHNob3J0W10pKHRlbXBTdGF0ZVRhYmxlLmVsZW1lbnRBdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZXNbaV0pKSwgcm93c0JlaW5nVXBkYXRlZCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogVGhlIG1lcmdlIGxpc3QgaXMgYSBsaXN0IG9mIHBhaXJzIG9mIHJvd3MgdGhhdCBoYXZlIGJlZW4gbWVyZ2VkIHNvbWV3aGVyZSBpbgorICAgICAgICAgKiB0aGUgcHJvY2VzcyBvZiBidWlsZGluZyB0aGlzIHN0YXRlIHRhYmxlLCBhbG9uZyB3aXRoIHRoZSByb3cgbnVtYmVyIG9mIHRoZQorICAgICAgICAgKiByb3cgY29udGFpbmluZyB0aGUgbWVyZ2VkIHN0YXRlLiAgVGhpcyBmdW5jdGlvbiBsb29rcyB1cCBhIHBhaXIgb2Ygcm93IG51bWJlcnMKKyAgICAgICAgICogYW5kIHJldHVybnMgdGhlIHJvdyBudW1iZXIgb2YgdGhlIHJvdyB0aGV5IGNvbWJpbmUgaW50by4gIChJdCByZXR1cm5zIDAgaWYKKyAgICAgICAgICogdGhpcyBwYWlyIG9mIHJvd3MgaXNuJ3QgaW4gdGhlIG1lcmdlIGxpc3QuKQorICAgICAgICAgKi8KKyAgICAgICAgcHJpdmF0ZSBpbnQgc2VhcmNoTWVyZ2VMaXN0KGludCBhLCBpbnQgYikgeworICAgICAgICAgICAgLy8gaWYgdGhlcmUgaXMgbm8gbWVyZ2UgbGlzdCwgdGhlcmUgb2J2aW91c2x5IGlzbid0IGFueXRoaW5nIGluIGl0CisgICAgICAgICAgICBpZiAobWVyZ2VMaXN0ID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gb3RoZXJ3aXNlLCBmb3IgZWFjaCBlbGVtZW50IGluIHRoZSBtZXJnZSBsaXN0Li4uCisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpbnRbXSBlbnRyeTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1lcmdlTGlzdC5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBlbnRyeSA9IChpbnRbXSkobWVyZ2VMaXN0LmVsZW1lbnRBdChpKSk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gd2UgaGF2ZSBhIGhpdCBpZiB0aGUgdHdvIHJvdyBudW1iZXJzIG1hdGNoIHRoZSB0d28gcm93IG51bWJlcnMKKyAgICAgICAgICAgICAgICAgICAgLy8gaW4gdGhlIGJlZ2lubmluZyBvZiB0aGUgZW50cnkgKHRoZSB0d28gdGhhdCBjb21iaW5lKSwgaW4gZWl0aGVyCisgICAgICAgICAgICAgICAgICAgIC8vIG9yZGVyCisgICAgICAgICAgICAgICAgICAgIGlmICgoZW50cnlbMF0gPT0gYSAmJiBlbnRyeVsxXSA9PSBiKSB8fCAoZW50cnlbMF0gPT0gYiAmJiBlbnRyeVsxXSA9PSBhKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5WzJdOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgLy8gd2UgYWxzbyBoYXZlIGEgaGl0IGlmIG9uZSBvZiB0aGUgdHdvIHJvdyBudW1iZXJzIG1hdGNoZXMgdGhlIG1hcmdlZAorICAgICAgICAgICAgICAgICAgICAvLyByb3cgbnVtYmVyIGFuZCB0aGUgb3RoZXIgb25lIG1hdGNoZXMgb25lIG9mIHRoZSBvcmlnaW5hbCByb3cgbnVtYmVycworICAgICAgICAgICAgICAgICAgICBpZiAoKGVudHJ5WzJdID09IGEgJiYgKGVudHJ5WzBdID09IGIgfHwgZW50cnlbMV0gPT0gYikpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW50cnlbMl07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKChlbnRyeVsyXSA9PSBiICYmIChlbnRyeVswXSA9PSBhIHx8IGVudHJ5WzFdID09IGEpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5WzJdOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byB1cGRhdGUgdGhlIGxpc3Qgb2YgY3VycmVudCBsb29vcGluZyBzdGF0ZXMgKGkuZS4sCisgICAgICAgICAqIHN0YXRlcyB0aGF0IGFyZSBjb250cm9sbGVkIGJ5IGEgKj8gY29uc3RydWN0KS4gIEl0IGJhY2tmaWxscyB2YWx1ZXMgZnJvbQorICAgICAgICAgKiB0aGUgbG9vcGluZyBzdGF0ZXMgaW50byB1bnBvcHVsYXRlZCBjZWxscyBvZiB0aGUgc3RhdGVzIHRoYXQgYXJlIGN1cnJlbnRseQorICAgICAgICAgKiBtYXJrZWQgZm9yIGJhY2tmaWxsaW5nLCBhbmQgdGhlbiB1cGRhdGVzIHRoZSBsaXN0IG9mIGxvb3Bpbmcgc3RhdGVzIHRvIGJlCisgICAgICAgICAqIHRoZSBuZXcgbGlzdAorICAgICAgICAgKiBAcGFyYW0gbmV3TG9vcGluZ1N0YXRlcyBUaGUgbGlzdCBvZiBuZXcgbG9vcGluZyBzdGF0ZXMKKyAgICAgICAgICogQHBhcmFtIGVuZFN0YXRlcyBUaGUgbGlzdCBvZiBzdGF0ZXMgdG8gdHJlYXQgYXMgZW5kIHN0YXRlcyAoc3RhdGVzIHRoYXQKKyAgICAgICAgICogY2FuIGV4aXQgdGhlIGxvb3ApLgorICAgICAgICAgKi8KKyAgICAgICAgcHJpdmF0ZSB2b2lkIHNldExvb3BpbmdTdGF0ZXMoVmVjdG9yIG5ld0xvb3BpbmdTdGF0ZXMsIFZlY3RvciBlbmRTdGF0ZXMpIHsKKworICAgICAgICAgICAgLy8gaWYgdGhlIGN1cnJlbnQgbGlzdCBvZiBsb29waW5nIHN0YXRlcyBpc24ndCBlbXB0eSwgd2UgaGF2ZSB0byBiYWNrZmlsbAorICAgICAgICAgICAgLy8gdmFsdWVzIGZyb20gdGhlIGxvb3Bpbmcgc3RhdGVzIGludG8gdGhlIHN0YXRlcyB0aGF0IGFyZSB3YWl0aW5nIHRvIGJlCisgICAgICAgICAgICAvLyBiYWNrZmlsbGVkCisgICAgICAgICAgICBpZiAoIWxvb3BpbmdTdGF0ZXMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgaW50IGxvb3BpbmdTdGF0ZSA9ICgoSW50ZWdlcilsb29waW5nU3RhdGVzLmxhc3RFbGVtZW50KCkpLmludFZhbHVlKCk7CisgICAgICAgICAgICAgICAgaW50IHJvd051bTsKKworICAgICAgICAgICAgICAgIC8vIGRvbid0IGJhY2tmaWxsIGludG8gYW4gZW5kIHN0YXRlIE9SIGFueSBzdGF0ZSByZWFjaGFibGUgZnJvbSBhbiBlbmQgc3RhdGUKKyAgICAgICAgICAgICAgICAvLyAoc2luY2UgdGhlIHNlYXJjaCBmb3IgcmVhY2hhYmxlIHN0YXRlcyBpcyByZWN1cnNpdmUsIGl0J3Mgc3BsaXQgb3V0IGludG8KKyAgICAgICAgICAgICAgICAvLyBhIHNlcGFyYXRlIGZ1bmN0aW9uLCBlbGltaW5hdGVCYWNrZmlsbFN0YXRlcygpLCBiZWxvdykKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGVuZFN0YXRlcy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBlbGltaW5hdGVCYWNrZmlsbFN0YXRlcygoKEludGVnZXIpZW5kU3RhdGVzLmVsZW1lbnRBdChpKSkuaW50VmFsdWUoKSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gd2UgRE9OJ1QgYWN0dWFsbHkgYmFja2ZpbGwgdGhlIHN0YXRlcyB0aGF0IG5lZWQgdG8gYmUgYmFja2ZpbGxlZCBoZXJlLgorICAgICAgICAgICAgICAgIC8vIEluc3RlYWQsIHdlIE1BUksgdGhlbSBmb3IgYmFja2ZpbGxpbmcuICBUaGUgcmVhc29uIGZvciB0aGlzIGlzIHRoYXQgaWYKKyAgICAgICAgICAgICAgICAvLyB0aGVyZSBhcmUgbXVsdGlwbGUgcnVsZXMgaW4gdGhlIHN0YXRlLXRhYmxlIGRlc2NyaXB0aW9uLCB0aGUgbG9vcGluZworICAgICAgICAgICAgICAgIC8vIHN0YXRlcyBtYXkgaGF2ZSBzb21lIG9mIHRoZWlyIHZhbHVlcyBjaGFuZ2VkIGJ5IGEgc3VjY2VlZGluZyBydWxlLCBhbmQKKyAgICAgICAgICAgICAgICAvLyB0aGlzIHdvdWxkbid0IGJlIHJlZmxlY3RlZCBpbiB0aGUgYmFja2ZpbGxlZCBzdGF0ZXMuICBXZSBtYXJrIGEgc3RhdGUKKyAgICAgICAgICAgICAgICAvLyBmb3IgYmFja2ZpbGxpbmcgYnkgcHV0dGluZyB0aGUgcm93IG51bWJlciBvZiB0aGUgc3RhdGUgdG8gY29weSBmcm9tCisgICAgICAgICAgICAgICAgLy8gaW50byB0aGUgZmxhZyBjZWxsIGF0IHRoZSBlbmQgb2YgdGhlIHJvdworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc3RhdGVzVG9CYWNrZmlsbC5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgICAgICByb3dOdW0gPSAoKEludGVnZXIpc3RhdGVzVG9CYWNrZmlsbC5lbGVtZW50QXQoaSkpLmludFZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIHNob3J0W10gc3RhdGUgPSAoc2hvcnRbXSl0ZW1wU3RhdGVUYWJsZS5lbGVtZW50QXQocm93TnVtKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbbnVtQ2F0ZWdvcmllc10gPQorICAgICAgICAgICAgICAgICAgICAgICAgKHNob3J0KSgoc3RhdGVbbnVtQ2F0ZWdvcmllc10gJiBBTExfRkxBR1MpIHwgbG9vcGluZ1N0YXRlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc3RhdGVzVG9CYWNrZmlsbC5yZW1vdmVBbGxFbGVtZW50cygpOworICAgICAgICAgICAgICAgIGxvb3BpbmdTdGF0ZXMucmVtb3ZlQWxsRWxlbWVudHMoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG5ld0xvb3BpbmdTdGF0ZXMgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGxvb3BpbmdTdGF0ZXMgPSAoVmVjdG9yKW5ld0xvb3BpbmdTdGF0ZXMuY2xvbmUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBUaGlzIHJlbW92ZXMgImVuZGluZyBzdGF0ZXMiIGFuZCBzdGF0ZXMgcmVhY2hhYmxlIGZyb20gdGhlbSBmcm9tIHRoZQorICAgICAgICAgKiBsaXN0IG9mIHN0YXRlcyB0byBiYWNrZmlsbC4KKyAgICAgICAgICogQHBhcmFtIFRoZSByb3cgbnVtYmVyIG9mIHRoZSBzdGF0ZSB0byByZW1vdmUgZnJvbSB0aGUgYmFja2ZpbGwgbGlzdAorICAgICAgICAgKi8KKyAgICAgICAgcHJpdmF0ZSB2b2lkIGVsaW1pbmF0ZUJhY2tmaWxsU3RhdGVzKGludCBiYXNlU3RhdGUpIHsKKworICAgICAgICAgICAgLy8gZG9uJ3QgZG8gYW55dGhpbmcgdW5sZXNzIHRoaXMgc3RhdGUgaXMgYWN0dWFsbHkgaW4gdGhlIGJhY2tmaWxsIGxpc3QuLi4KKyAgICAgICAgICAgIGlmIChzdGF0ZXNUb0JhY2tmaWxsLmNvbnRhaW5zKG5ldyBJbnRlZ2VyKGJhc2VTdGF0ZSkpKSB7CisKKyAgICAgICAgICAgICAgICAvLyBpZiBpdCBpcywgdGFrZSBpdCBvdXQKKyAgICAgICAgICAgICAgICBzdGF0ZXNUb0JhY2tmaWxsLnJlbW92ZUVsZW1lbnQobmV3IEludGVnZXIoYmFzZVN0YXRlKSk7CisKKyAgICAgICAgICAgICAgICAvLyB0aGVuIGdvIHRocm91Z2ggYW5kIHJlY3Vyc2l2ZWx5IGNhbGwgdGhpcyBmdW5jdGlvbiBmb3IgZXZlcnkKKyAgICAgICAgICAgICAgICAvLyBzdGF0ZSB0aGF0IHRoZSBiYXNlIHN0YXRlIHBvaW50cyB0bworICAgICAgICAgICAgICAgIHNob3J0W10gc3RhdGUgPSAoc2hvcnRbXSl0ZW1wU3RhdGVUYWJsZS5lbGVtZW50QXQoYmFzZVN0YXRlKTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUNhdGVnb3JpZXM7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGVbaV0gIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZWxpbWluYXRlQmFja2ZpbGxTdGF0ZXMoc3RhdGVbaV0pOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRoaXMgZnVuY3Rpb24gY29tcGxldGVzIHRoZSBiYWNrZmlsbGluZyBwcm9jZXNzIGJ5IGFjdHVhbGx5IGRvaW5nIHRoZQorICAgICAgICAgKiBiYWNrZmlsbGluZyBvbiB0aGUgc3RhdGVzIHRoYXQgYXJlIG1hcmtlZCBmb3IgaXQKKyAgICAgICAgICovCisgICAgICAgIHByaXZhdGUgdm9pZCBiYWNrZmlsbExvb3BpbmdTdGF0ZXMoKSB7CisgICAgICAgICAgICBzaG9ydFtdIHN0YXRlOworICAgICAgICAgICAgc2hvcnRbXSBsb29waW5nU3RhdGUgPSBudWxsOworICAgICAgICAgICAgaW50IGxvb3BpbmdTdGF0ZVJvd051bSA9IDA7CisgICAgICAgICAgICBpbnQgZnJvbVN0YXRlOworCisgICAgICAgICAgICAvLyBmb3IgZWFjaCBzdGF0ZSBpbiB0aGUgc3RhdGUgdGFibGUuLi4KKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGVtcFN0YXRlVGFibGUuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IChzaG9ydFtdKXRlbXBTdGF0ZVRhYmxlLmVsZW1lbnRBdChpKTsKKworICAgICAgICAgICAgICAgIC8vIGNoZWNrIHRoZSBzdGF0ZSdzIGZsYWcgd29yZCB0byBzZWUgaWYgaXQncyBtYXJrZWQgZm9yIGJhY2tmaWxsaW5nCisgICAgICAgICAgICAgICAgLy8gKGl0J3MgbWFya2VkIGZvciBiYWNrZmlsbGluZyBpZiBhbnkgYml0cyBvdGhlciB0aGFuIHRoZSB0d28gaGlnaC1vcmRlcgorICAgICAgICAgICAgICAgIC8vIGJpdHMgYXJlIHNldC0tIGlmIHRoZXkgYXJlLCB0aGVuIHRoZSBmbGFnIHdvcmQsIG1pbnVzIHRoZSB0d28gaGlnaCBiaXRzLAorICAgICAgICAgICAgICAgIC8vIGlzIHRoZSByb3cgbnVtYmVyIHRvIGNvcHkgZnJvbSkKKyAgICAgICAgICAgICAgICBmcm9tU3RhdGUgPSBzdGF0ZVtudW1DYXRlZ29yaWVzXSAmIH5BTExfRkxBR1M7CisgICAgICAgICAgICAgICAgaWYgKGZyb21TdGF0ZSA+IDApIHsKKworICAgICAgICAgICAgICAgICAgICAvLyBsb2FkIHVwIHRoZSBzdGF0ZSB0byBjb3B5IGZyb20gKGlmIHdlIGhhdmVuJ3QgYWxyZWFkeSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZyb21TdGF0ZSAhPSBsb29waW5nU3RhdGVSb3dOdW0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvb3BpbmdTdGF0ZVJvd051bSA9IGZyb21TdGF0ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvb3BpbmdTdGF0ZSA9IChzaG9ydFtdKXRlbXBTdGF0ZVRhYmxlLmVsZW1lbnRBdChsb29waW5nU3RhdGVSb3dOdW0pOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgLy8gY2xlYXIgb3V0IHRoZSBiYWNrZmlsbCBwYXJ0IG9mIHRoZSBmbGFnIHdvcmQKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbbnVtQ2F0ZWdvcmllc10gJj0gQUxMX0ZMQUdTOworCisgICAgICAgICAgICAgICAgICAgIC8vIHRoZW4gZmlsbCBhbGwgemVybyBjZWxscyBpbiB0aGUgY3VycmVudCBzdGF0ZSB3aXRoIHZhbHVlcworICAgICAgICAgICAgICAgICAgICAvLyBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIGNlbGxzIG9mIHRoZSBmcm9tU3RhdGUKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBzdGF0ZS5sZW5ndGg7IGorKykgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlW2pdID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZVtqXSA9IGxvb3BpbmdTdGF0ZVtqXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN0YXRlW2pdID09IERPTlRfTE9PUF9GTEFHKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVbal0gPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRoaXMgZnVuY3Rpb24gY29tcGxldGVzIHRoZSBzdGF0ZS10YWJsZS1idWlsZGluZyBwcm9jZXNzIGJ5IGRvaW5nIHNldmVyYWwKKyAgICAgICAgICogcG9zdHByb2Nlc3Npbmcgc3RlcHMgYW5kIGNvcHlpbmcgZXZlcnl0aGluZyBpbnRvIGl0cyBmaW5hbCByZXN0aW5nIHBsYWNlCisgICAgICAgICAqIGluIHRoZSBpdGVyYXRvciBpdHNlbGYKKyAgICAgICAgICogQHBhcmFtIGZvcndhcmQgVHJ1ZSBpZiB3ZSdyZSB3b3JraW5nIG9uIHRoZSBmb3J3YXJkIHN0YXRlIHRhYmxlCisgICAgICAgICAqLworICAgICAgICBwcml2YXRlIHZvaWQgZmluaXNoQnVpbGRpbmdTdGF0ZVRhYmxlKGJvb2xlYW4gZm9yd2FyZCkgeworLy9kZWJ1Z1ByaW50VGVtcFN0YXRlVGFibGUoKTsKKyAgICAgICAgICAgIC8vIHN0YXJ0IGJ5IGJhY2tmaWxsaW5nIHRoZSBsb29waW5nIHN0YXRlcworICAgICAgICAgICAgYmFja2ZpbGxMb29waW5nU3RhdGVzKCk7CisvL2RlYnVnUHJpbnRUZW1wU3RhdGVUYWJsZSgpOworCisgICAgICAgICAgICBpbnRbXSByb3dOdW1NYXAgPSBuZXcgaW50W3RlbXBTdGF0ZVRhYmxlLnNpemUoKV07CisgICAgICAgICAgICBTdGFjayByb3dzVG9Gb2xsb3cgPSBuZXcgU3RhY2soKTsKKyAgICAgICAgICAgIHJvd3NUb0ZvbGxvdy5wdXNoKG5ldyBJbnRlZ2VyKDEpKTsKKyAgICAgICAgICAgIHJvd051bU1hcFsxXSA9IDE7CisKKyAgICAgICAgICAgIC8vIGRldGVybWluZSB3aGljaCBzdGF0ZXMgYXJlIG5vIGxvbmdlciByZWFjaGFibGUgZnJvbSB0aGUgc3RhcnQgc3RhdGUKKyAgICAgICAgICAgIC8vICh0aGUgcmVhY2hhYmxlIHN0YXRlcyB3aWxsIGhhdmUgdGhlaXIgcm93IG51bWJlcnMgaW4gdGhlIHJvdyBudW1iZXIKKyAgICAgICAgICAgIC8vIG1hcCwgYW5kIHRoZSBub25yZWFjaGFibGUgc3RhdGVzIHdpbGwgaGF2ZSB6ZXJvIGluIHRoZSByb3cgbnVtYmVyIG1hcCkKKyAgICAgICAgICAgIHdoaWxlIChyb3dzVG9Gb2xsb3cuc2l6ZSgpICE9IDApIHsKKyAgICAgICAgICAgICAgICBpbnQgcm93TnVtID0gKChJbnRlZ2VyKXJvd3NUb0ZvbGxvdy5wb3AoKSkuaW50VmFsdWUoKTsKKyAgICAgICAgICAgICAgICBzaG9ydFtdIHJvdyA9IChzaG9ydFtdKSh0ZW1wU3RhdGVUYWJsZS5lbGVtZW50QXQocm93TnVtKSk7CisKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUNhdGVnb3JpZXM7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBpZiAocm93W2ldICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyb3dOdW1NYXBbcm93W2ldXSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93TnVtTWFwW3Jvd1tpXV0gPSByb3dbaV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93c1RvRm9sbG93LnB1c2gobmV3IEludGVnZXIocm93W2ldKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisvKgorU3lzdGVtLm91dC5wcmludGxuKCJUaGUgZm9sbG93aW5nIHJvd3MgYXJlIG5vdCByZWFjaGFibGU6Iik7Citmb3IgKGludCBpID0gMTsgaSA8IHJvd051bU1hcC5sZW5ndGg7IGkrKykKK2lmIChyb3dOdW1NYXBbaV0gPT0gMCkgU3lzdGVtLm91dC5wcmludCgiXHQiICsgaSk7CitTeXN0ZW0ub3V0LnByaW50bG4oKTsKKyovCisKKyAgICAgICAgICAgIC8vIHZhcmlhYmxlIG5vdCB1c2VkIGJvb2xlYW4gbWFkZUNoYW5nZTsKKyAgICAgICAgICAgIGludCBuZXdSb3dOdW07CisKKyAgICAgICAgICAgIC8vIGFsZ29yaXRobSBmb3IgbWluaW1pemluZyB0aGUgbnVtYmVyIG9mIHN0YXRlcyBpbiB0aGUgdGFibGUgYWRhcHRlZCBmcm9tCisgICAgICAgICAgICAvLyBBaG8gJiBVbGxtYW4sICJQcmluY2lwbGVzIG9mIENvbXBpbGVyIERlc2lnbiIKKyAgICAgICAgICAgIC8vIFRoZSBiYXNpYyBpZGVhIGhlcmUgaXMgdG8gb3JnYW5pemUgdGhlIHN0YXRlcyBpbnRvIGNsYXNzZXMuICBXaGVuIHdlJ3JlIGRvbmUsCisgICAgICAgICAgICAvLyBhbGwgc3RhdGVzIGluIHRoZSBzYW1lIGNsYXNzIGNhbiBiZSBjb25zaWRlcmVkIGlkZW50aWNhbCBhbmQgYWxsIGJ1dCBvbmUgZWxpbWluYXRlZC4KKworICAgICAgICAgICAgLy8gaW5pdGlhbGx5IGFzc2lnbiBzdGF0ZXMgdG8gY2xhc3NlcyBiYXNlZCBvbiB0aGUgbnVtYmVyIG9mIHBvcHVsYXRlZCBjZWxscyB0aGV5CisgICAgICAgICAgICAvLyBjb250YWluICh0aGUgY2xhc3MgbnVtYmVyIGlzIHRoZSBudW1iZXIgb2YgcG9wdWxhdGVkIGNlbGxzKQorICAgICAgICAgICAgaW50W10gc3RhdGVDbGFzc2VzID0gbmV3IGludFt0ZW1wU3RhdGVUYWJsZS5zaXplKCldOworICAgICAgICAgICAgaW50IG5leHRDbGFzcyA9IG51bUNhdGVnb3JpZXMgKyAxOworICAgICAgICAgICAgc2hvcnRbXSBzdGF0ZTEsIHN0YXRlMjsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgc3RhdGVDbGFzc2VzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKHJvd051bU1hcFtpXSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzdGF0ZTEgPSAoc2hvcnRbXSl0ZW1wU3RhdGVUYWJsZS5lbGVtZW50QXQoaSk7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBudW1DYXRlZ29yaWVzOyBqKyspIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlMVtqXSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICArK3N0YXRlQ2xhc3Nlc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoc3RhdGVDbGFzc2VzW2ldID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVDbGFzc2VzW2ldID0gbmV4dENsYXNzOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICsrbmV4dENsYXNzOworCisgICAgICAgICAgICAvLyB0aGVuLCBmb3IgZWFjaCBjbGFzcywgZWxlY3QgdGhlIGZpcnN0IG1lbWJlciBvZiB0aGF0IGNsYXNzIGFzIHRoYXQgY2xhc3MncworICAgICAgICAgICAgLy8gInJlcHJlc2VudGF0aXZlIi4gIEZvciBlYWNoIG1lbWJlciBvZiB0aGUgY2xhc3MsIGNvbXBhcmUgaXQgdG8gdGhlICJyZXByZXNlbnRhdGl2ZS4iCisgICAgICAgICAgICAvLyBJZiB0aGVyZSdzIGEgY29sdW1uIHBvc2l0aW9uIHdoZXJlIHRoZSBzdGF0ZSBiZWluZyB0ZXN0ZWQgdHJhbnNpdGlvbnMgdG8gYQorICAgICAgICAgICAgLy8gc3RhdGUgaW4gYSBESUZGRVJFTlQgY2xhc3MgZnJvbSB0aGUgY2xhc3Mgd2hlcmUgdGhlICJyZXByZXNlbnRhdGl2ZSIgdHJhbnNpdGlvbnMsCisgICAgICAgICAgICAvLyB0aGVuIG1vdmUgdGhlIHN0YXRlIGludG8gYSBuZXcgY2xhc3MuICBSZXBlYXQgdGhpcyBwcm9jZXNzIHVudGlsIG5vIG5ldyBjbGFzc2VzCisgICAgICAgICAgICAvLyBhcmUgY3JlYXRlZC4KKyAgICAgICAgICAgIGludCBjdXJyZW50Q2xhc3M7CisgICAgICAgICAgICBpbnQgbGFzdENsYXNzOworICAgICAgICAgICAgYm9vbGVhbiBzcGxpdDsKKworICAgICAgICAgICAgZG8geworLy9TeXN0ZW0ub3V0LnByaW50bG4oIk1ha2luZyBhIHBhc3MuLi4iKTsKKyAgICAgICAgICAgICAgICBjdXJyZW50Q2xhc3MgPSAxOworICAgICAgICAgICAgICAgIGxhc3RDbGFzcyA9IG5leHRDbGFzczsKKyAgICAgICAgICAgICAgICB3aGlsZSAoY3VycmVudENsYXNzIDwgbmV4dENsYXNzKSB7CisvL1N5c3RlbS5vdXQucHJpbnQoIlN0YXRlcyBpbiBjbGFzcyAjIiArIGN1cnJlbnRDbGFzcyArIjoiKTsKKyAgICAgICAgICAgICAgICAgICAgc3BsaXQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUxID0gc3RhdGUyID0gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzdGF0ZUNsYXNzZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZUNsYXNzZXNbaV0gPT0gY3VycmVudENsYXNzKSB7CisvL1N5c3RlbS5vdXQucHJpbnQoIlx0IiArIGkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZTEgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTEgPSAoc2hvcnRbXSl0ZW1wU3RhdGVUYWJsZS5lbGVtZW50QXQoaSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTIgPSAoc2hvcnRbXSl0ZW1wU3RhdGVUYWJsZS5lbGVtZW50QXQoaSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgc3RhdGUyLmxlbmd0aDsgaisrKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChqID09IG51bUNhdGVnb3JpZXMgJiYgc3RhdGUxW2pdICE9IHN0YXRlMltqXSAmJiBmb3J3YXJkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoaiAhPSBudW1DYXRlZ29yaWVzICYmIHN0YXRlQ2xhc3Nlc1tzdGF0ZTFbal1dCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE9IHN0YXRlQ2xhc3Nlc1tzdGF0ZTJbal1dKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlQ2xhc3Nlc1tpXSA9IG5leHRDbGFzczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGxpdCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChzcGxpdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgKytuZXh0Q2xhc3M7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgKytjdXJyZW50Q2xhc3M7CisvL1N5c3RlbS5vdXQucHJpbnRsbigpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gd2hpbGUgKGxhc3RDbGFzcyAhPSBuZXh0Q2xhc3MpOworCisgICAgICAgICAgICAvLyBhdCB0aGlzIHBvaW50LCBhbGwgb2YgdGhlIHN0YXRlcyBpbiBhIGNsYXNzIGV4Y2VwdCB0aGUgZmlyc3Qgb25lICh0aGUKKyAgICAgICAgICAgIC8vInJlcHJlc2VudGF0aXZlIikgY2FuIGJlIGVsaW1pbmF0ZWQsIHNvIHVwZGF0ZSB0aGUgcm93LW51bWJlciBtYXAgYWNjb3JkaW5nbHkKKyAgICAgICAgICAgIGludFtdIHJlcHJlc2VudGF0aXZlcyA9IG5ldyBpbnRbbmV4dENsYXNzXTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgc3RhdGVDbGFzc2VzLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgICAgIGlmIChyZXByZXNlbnRhdGl2ZXNbc3RhdGVDbGFzc2VzW2ldXSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIHJlcHJlc2VudGF0aXZlc1tzdGF0ZUNsYXNzZXNbaV1dID0gaTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJvd051bU1hcFtpXSA9IHJlcHJlc2VudGF0aXZlc1tzdGF0ZUNsYXNzZXNbaV1dOworICAgICAgICAgICAgICAgIH0KKy8vU3lzdGVtLm91dC5wcmludGxuKCJSZW51bWJlcmluZy4uLiIpOworCisgICAgICAgICAgICAvLyByZW51bWJlciBhbGwgcmVtYWluaW5nIHJvd3MuLi4KKyAgICAgICAgICAgIC8vIGZpcnN0IGRyb3AgYWxsIHRoYXQgYXJlIGVpdGhlciB1bnJlZmVyZW5jZWQgb3Igbm90IGEgY2xhc3MgcmVwcmVzZW50YXRpdmUKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgcm93TnVtTWFwLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKHJvd051bU1hcFtpXSAhPSBpKSB7CisgICAgICAgICAgICAgICAgICAgIHRlbXBTdGF0ZVRhYmxlLnNldEVsZW1lbnRBdChudWxsLCBpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIHRoZW4gY2FsY3VsYXRlIGV2ZXJ5Ym9keSdzIG5ldyByb3cgbnVtYmVyIGFuZCB1cGRhdGUgdGhlIHJvdworICAgICAgICAgICAgLy8gbnVtYmVyIG1hcCBhcHByb3ByaWF0ZWx5ICh0aGUgZmlyc3QgcGFzcyB1cGRhdGVzIHRoZSByb3cgbnVtYmVycworICAgICAgICAgICAgLy8gb2YgYWxsIHRoZSBjbGFzcyByZXByZXNlbnRhdGl2ZXMgW3RoZSByb3dzIHdlJ3JlIGtlZXBpbmddLCBhbmQgdGhlCisgICAgICAgICAgICAvLyBzZWNvbmQgcGFzcyB1cGRhdGVzIHRoZSBjcm9zcyByZWZlcmVuY2VzIGZvciBhbGwgdGhlIHJvd3MgdGhhdAorICAgICAgICAgICAgLy8gYXJlIGJlaW5nIGRlbGV0ZWQpCisgICAgICAgICAgICBuZXdSb3dOdW0gPSAxOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCByb3dOdW1NYXAubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAodGVtcFN0YXRlVGFibGUuZWxlbWVudEF0KGkpICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgcm93TnVtTWFwW2ldID0gbmV3Um93TnVtKys7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCByb3dOdW1NYXAubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAodGVtcFN0YXRlVGFibGUuZWxlbWVudEF0KGkpID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgcm93TnVtTWFwW2ldID0gcm93TnVtTWFwW3Jvd051bU1hcFtpXV07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorLy9mb3IgKGludCBpID0gMTsgaSA8IHJvd051bU1hcC5sZW5ndGg7IGkrKykgcm93TnVtTWFwW2ldID0gaTsgaW50IG5ld1Jvd051bSA9IHJvd051bU1hcC5sZW5ndGg7CisKKyAgICAgICAgICAgIC8vIGFsbG9jYXRlIHRoZSBwZXJtYW5lbnQgc3RhdGUgdGFibGUsIGFuZCBjb3B5IHRoZSByZW1haW5pbmcgcm93cyBpbnRvIGl0CisgICAgICAgICAgICAvLyAoYWRqdXN0aW5nIGFsbCB0aGUgY2VsbCB2YWx1ZXMsIG9mIGNvdXJzZSkKKworICAgICAgICAgICAgLy8gdGhpcyBzZWN0aW9uIGRvZXMgdGhhdCBmb3IgdGhlIGZvcndhcmQgc3RhdGUgdGFibGUKKyAgICAgICAgICAgIGlmIChmb3J3YXJkKSB7CisgICAgICAgICAgICAgICAgZW5kU3RhdGVzID0gbmV3IGJvb2xlYW5bbmV3Um93TnVtXTsKKyAgICAgICAgICAgICAgICBsb29rYWhlYWRTdGF0ZXMgPSBuZXcgYm9vbGVhbltuZXdSb3dOdW1dOworICAgICAgICAgICAgICAgIHN0YXRlVGFibGUgPSBuZXcgc2hvcnRbbmV3Um93TnVtICogbnVtQ2F0ZWdvcmllc107CisgICAgICAgICAgICAgICAgaW50IHAgPSAwOworICAgICAgICAgICAgICAgIGludCBwMiA9IDA7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0ZW1wU3RhdGVUYWJsZS5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBzaG9ydFtdIHJvdyA9IChzaG9ydFtdKSh0ZW1wU3RhdGVUYWJsZS5lbGVtZW50QXQoaSkpOworICAgICAgICAgICAgICAgICAgICBpZiAocm93ID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbnVtQ2F0ZWdvcmllczsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZVRhYmxlW3BdID0gKHNob3J0KShyb3dOdW1NYXBbcm93W2pdXSk7CisgICAgICAgICAgICAgICAgICAgICAgICArK3A7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZW5kU3RhdGVzW3AyXSA9ICgocm93W251bUNhdGVnb3JpZXNdICYgRU5EX1NUQVRFX0ZMQUcpICE9IDApOworICAgICAgICAgICAgICAgICAgICBsb29rYWhlYWRTdGF0ZXNbcDJdID0gKChyb3dbbnVtQ2F0ZWdvcmllc10gJiBMT09LQUhFQURfU1RBVEVfRkxBRykgIT0gMCk7CisgICAgICAgICAgICAgICAgICAgICsrcDI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBhbmQgdGhpcyBzZWN0aW9uIGRvZXMgaXQgZm9yIHRoZSBiYWNrd2FyZCBzdGF0ZSB0YWJsZQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYmFja3dhcmRzU3RhdGVUYWJsZSA9IG5ldyBzaG9ydFtuZXdSb3dOdW0gKiBudW1DYXRlZ29yaWVzXTsKKyAgICAgICAgICAgICAgICBpbnQgcCA9IDA7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0ZW1wU3RhdGVUYWJsZS5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBzaG9ydFtdIHJvdyA9IChzaG9ydFtdKSh0ZW1wU3RhdGVUYWJsZS5lbGVtZW50QXQoaSkpOworICAgICAgICAgICAgICAgICAgICBpZiAocm93ID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbnVtQ2F0ZWdvcmllczsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBiYWNrd2FyZHNTdGF0ZVRhYmxlW3BdID0gKHNob3J0KShyb3dOdW1NYXBbcm93W2pdXSk7CisgICAgICAgICAgICAgICAgICAgICAgICArK3A7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogVGhpcyBmdW5jdGlvbiBidWlsZHMgdGhlIGJhY2t3YXJkIHN0YXRlIHRhYmxlIGZyb20gdGhlIGZvcndhcmQgc3RhdGUKKyAgICAgICAgICogdGFibGUgYW5kIGFueSBhZGRpdGlvbmFsIHJ1bGVzIChpZGVudGlmaWVkIGJ5IHRoZSAhIG9uIHRoZSBmcm9udCkKKyAgICAgICAgICogc3VwcGxpZWQgaW4gdGhlIGRlc2NyaXB0aW9uCisgICAgICAgICAqLworICAgICAgICBwcml2YXRlIHZvaWQgYnVpbGRCYWNrd2FyZHNTdGF0ZVRhYmxlKFZlY3RvciB0ZW1wUnVsZUxpc3QpIHsKKworICAgICAgICAgICAgLy8gY3JlYXRlIHRoZSB0ZW1wb3Jhcnkgc3RhdGUgdGFibGUgYW5kIHNlZWQgaXQgd2l0aCB0d28gcm93cyAocm93IDAKKyAgICAgICAgICAgIC8vIGlzbid0IHVzZWQgZm9yIGFueXRoaW5nLCBhbmQgd2UgaGF2ZSB0byBjcmVhdGUgcm93IDEgKHRoZSBpbml0aWFsCisgICAgICAgICAgICAvLyBzdGF0ZSkgYmVmb3JlIHdlIGNhbiBkbyBhbnl0aGluZyBlbHNlCisgICAgICAgICAgICB0ZW1wU3RhdGVUYWJsZSA9IG5ldyBWZWN0b3IoKTsKKyAgICAgICAgICAgIHRlbXBTdGF0ZVRhYmxlLmFkZEVsZW1lbnQobmV3IHNob3J0W251bUNhdGVnb3JpZXMgKyAxXSk7CisgICAgICAgICAgICB0ZW1wU3RhdGVUYWJsZS5hZGRFbGVtZW50KG5ldyBzaG9ydFtudW1DYXRlZ29yaWVzICsgMV0pOworCisgICAgICAgICAgICAvLyBhbHRob3VnaCB0aGUgYmFja3dhcmRzIHN0YXRlIHRhYmxlIGlzIGJ1aWx0IGF1dG9tYXRpY2FsbHkgZnJvbSB0aGUgZm9yd2FyZAorICAgICAgICAgICAgLy8gc3RhdGUgdGFibGUsIHRoZXJlIGFyZSBzb21lIHNpdHVhdGlvbnMgKHRoZSBkZWZhdWx0IHNlbnRlbmNlLWJyZWFrIHJ1bGVzLAorICAgICAgICAgICAgLy8gZm9yIGV4YW1wbGUpIHdoZXJlIHRoaXMgZG9lc24ndCB5aWVsZCBlbm91Z2ggc3RvcCBzdGF0ZXMsIGNhdXNpbmcgYSBkcmFtYXRpYworICAgICAgICAgICAgLy8gZHJvcCBpbiBwZXJmb3JtYW5jZS4gIFRvIGhlbHAgd2l0aCB0aGVzZSBjYXNlcywgdGhlIHVzZXIgbWF5IHN1cHBseQorICAgICAgICAgICAgLy8gc3VwcGxlbWVudGFsIHJ1bGVzIHRoYXQgYXJlIGFkZGVkIHRvIHRoZSBiYWNrd2FyZCBzdGF0ZSB0YWJsZS4gIFRoZXNlIGhhdmUKKyAgICAgICAgICAgIC8vIHRoZSBzYW1lIHN5bnRheCBhcyB0aGUgbm9ybWFsIGJyZWFrIHJ1bGVzLCBidXQgYmVnaW4gd2l0aCAnIScgdG8gZGlzdGluZ3Vpc2gKKyAgICAgICAgICAgIC8vIHRoZW0gZnJvbSBub3JtYWwgYnJlYWsgcnVsZXMKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGVtcFJ1bGVMaXN0LnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHJ1bGUgPSAoU3RyaW5nKXRlbXBSdWxlTGlzdC5lbGVtZW50QXQoaSk7CisgICAgICAgICAgICAgICAgaWYgKHJ1bGUuY2hhckF0KDApID09ICchJykgeworICAgICAgICAgICAgICAgICAgICBwYXJzZVJ1bGUocnVsZS5zdWJzdHJpbmcoMSksIGZhbHNlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBiYWNrZmlsbExvb3BpbmdTdGF0ZXMoKTsKKworICAgICAgICAgICAgLy8gQmFja3dhcmRzIGl0ZXJhdGlvbiBpcyBxdWFsaXRhdGl2ZWx5IGRpZmZlcmVudCBmcm9tIGZvcndhcmRzIGl0ZXJhdGlvbi4KKyAgICAgICAgICAgIC8vIFRoaXMgaXMgYmVjYXVzZSBiYWNrd2FyZHMgaXRlcmF0aW9uIGhhcyB0byBiZSBtYWRlIHRvIG9wZXJhdGUgZnJvbSBubyBjb250ZXh0CisgICAgICAgICAgICAvLyBhdCBhbGwtLSB0aGUgdXNlciBzaG91bGQgYmUgYWJsZSB0byBhc2sgQnJlYWtJdGVyYXRvciBmb3IgdGhlIGJyZWFrIHBvc2l0aW9uCisgICAgICAgICAgICAvLyBpbW1lZGlhdGVseSBvbiBlaXRoZXIgc2lkZSBvZiBzb21lIGFyYml0cmFyeSBvZmZzZXQgaW4gdGhlIHRleHQuICBUaGUKKyAgICAgICAgICAgIC8vIGZvcndhcmQgaXRlcmF0aW9uIHRhYmxlIGRvZXNuJ3QgbGV0IHVzIGRvIHRoYXQtLSBpdCBhc3N1bWVzIGNvbXBsZXRlCisgICAgICAgICAgICAvLyBpbmZvcm1hdGlvbiBvbiB0aGUgY29udGV4dCwgd2hpY2ggbWVhbnMgc3RhcnRpbmcgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZQorICAgICAgICAgICAgLy8gZG9jdW1lbnQuCisgICAgICAgICAgICAvLyBUaGUgd2F5IHdlIGRvIGJhY2t3YXJkIGFuZCByYW5kb20tYWNjZXNzIGl0ZXJhdGlvbiBpcyB0byBiYWNrIHVwIGZyb20gdGhlCisgICAgICAgICAgICAvLyBjdXJyZW50IChvciB1c2VyLXNwZWNpZmllZCkgcG9zaXRpb24gdW50aWwgd2Ugc2VlIHNvbWV0aGluZyB3ZSdyZSBzdXJlIGlzCisgICAgICAgICAgICAvLyBhIGJyZWFrIHBvc2l0aW9uIChpdCBtYXkgbm90IGJlIHRoZSBsYXN0IGJyZWFrIHBvc2l0aW9uIGltbWVkaWF0ZWx5CisgICAgICAgICAgICAvLyBwcmVjZWRpbmcgb3VyIHN0YXJ0aW5nIHBvaW50LCBob3dldmVyKS4gIFRoZW4gd2Ugcm9sbCBmb3J3YXJkIGZyb20gdGhlcmUgdG8KKyAgICAgICAgICAgIC8vIGxvY2F0ZSB0aGUgYWN0dWFsIGJyZWFrIHBvc2l0aW9uIHdlJ3JlIGFmdGVyLgorICAgICAgICAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHRoZSBiYWNrd2FyZHMgc3RhdGUgdGFibGUgZG9lc24ndCBoYXZlIHRvIGlkZW50aWZ5IGV2ZXJ5CisgICAgICAgICAgICAvLyBicmVhayBwb3NpdGlvbiwgYWxsb3dpbmcgdGhlIGJ1aWxkaW5nIGFsZ29yaXRobSB0byBiZSBtdWNoIHNpbXBsZXIuICBIZXJlLAorICAgICAgICAgICAgLy8gd2UgdXNlIGEgInBhaXJzIiBhcHByb2FjaCwgc2Nhbm5pbmcgdGhlIGZvcndhcmQtaXRlcmF0aW9uIHN0YXRlIHRhYmxlIGZvcgorICAgICAgICAgICAgLy8gcGFpcnMgb2YgY2hhcmFjdGVyIGNhdGVnb3JpZXMgd2UgQUxXQVlTIGJyZWFrIGJldHdlZW4sIGFuZCBidWlsZGluZyBhIHN0YXRlCisgICAgICAgICAgICAvLyB0YWJsZSBmcm9tIHRoYXQgaW5mb3JtYXRpb24uICBObyBjb250ZXh0IGlzIHJlcXVpcmVkLS0gYWxsIHRoaXMgc3RhdGUgdGFibGUKKyAgICAgICAgICAgIC8vIGxvb2tzIGF0IGlzIGEgcGFpciBvZiBhZGphY2VudCBjaGFyYWN0ZXJzLgorCisgICAgICAgICAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgdGhlIHVzZXIgaGFzIHN1cHBsaWVkIHN1cHBsZW1lbnRhcnkgcnVsZXMgKHNlZSBhYm92ZSkuCisgICAgICAgICAgICAvLyBUaGlzIGhhcyB0byBiZSBkb25lIGZpcnN0IHRvIGtlZXAgcGFyc2VSdWxlKCkgYW5kIGZyaWVuZHMgZnJvbSBiZWNvbWluZworICAgICAgICAgICAgLy8gRVZFTiBNT1JFIGNvbXBsaWNhdGVkLiAgVGhlIGF1dG9tYXRpY2FsbHktZ2VuZXJhdGVkIHN0YXRlcyBhcmUgYXBwZW5kZWQKKyAgICAgICAgICAgIC8vIG9udG8gdGhlIGVuZCBvZiB0aGUgc3RhdGUgdGFibGUsIGFuZCB0aGVuIHRoZSB0d28gc2V0cyBvZiBydWxlcyBhcmUKKyAgICAgICAgICAgIC8vIHN0aXRjaGVkIHRvZ2V0aGVyIGF0IHRoZSBlbmQuICBUYWtlIG5vdGUgb2YgdGhlIHJvdyBudW1iZXIgb2YgdGhlCisgICAgICAgICAgICAvLyBmaXJzdCByb3cgb2YgdGhlIGF1cm9tYXRpY2FsbHktZ2VuZXJhdGVkIHBhcnQuCisgICAgICAgICAgICBpbnQgYmFja1RhYmxlT2Zmc2V0ID0gdGVtcFN0YXRlVGFibGUuc2l6ZSgpOworICAgICAgICAgICAgaWYgKGJhY2tUYWJsZU9mZnNldCA+IDIpIHsKKyAgICAgICAgICAgICAgICArK2JhY2tUYWJsZU9mZnNldDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gdGhlIGF1dG9tYXRpY2FsbHktZ2VuZXJhdGVkIHBhcnQgb2YgdGhlIHRhYmxlIG1vZGVscyBhIHR3by1kaW1lbnNpb25hbAorICAgICAgICAgICAgLy8gYXJyYXkgd2hlcmUgdGhlIHR3byBkaW1lbnNpb25zIHJlcHJlc2VudCB0aGUgdHdvIGNoYXJhY3RlcnMgd2UncmUgY3VycmVudGx5CisgICAgICAgICAgICAvLyBsb29raW5nIGF0LiAgVG8gbW9kZWwgdGhpcyBhcyBhIHN0YXRlIHRhYmxlLCB3ZSBhY3R1YWxseSBuZWVkIG9uZSBhZGRpdGlvbmFsCisgICAgICAgICAgICAvLyByb3cgdG8gcmVwcmVzZW50IHRoZSBpbml0aWFsIHN0YXRlLiAgSXQgZ2V0cyBwb3B1bGF0ZWQgd2l0aCB0aGUgcm93IG51bWJlcnMKKyAgICAgICAgICAgIC8vIG9mIHRoZSBvdGhlciByb3dzIChpbiBvcmRlcikuCisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUNhdGVnb3JpZXMgKyAxOyBpKyspCisgICAgICAgICAgICAgICAgdGVtcFN0YXRlVGFibGUuYWRkRWxlbWVudChuZXcgc2hvcnRbbnVtQ2F0ZWdvcmllcyArIDFdKTsKKworICAgICAgICAgICAgc2hvcnRbXSBzdGF0ZSA9IChzaG9ydFtdKXRlbXBTdGF0ZVRhYmxlLmVsZW1lbnRBdChiYWNrVGFibGVPZmZzZXQgLSAxKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQ2F0ZWdvcmllczsgaSsrKQorICAgICAgICAgICAgICAgIHN0YXRlW2ldID0gKHNob3J0KShpICsgYmFja1RhYmxlT2Zmc2V0KTsKKworICAgICAgICAgICAgLy8gc2NhdmVuZ2UgdGhlIGZvcndhcmQgc3RhdGUgdGFibGUgZm9yIHBhaXJzIG9mIGNoYXJhY3RlciBjYXRlZ29yaWVzCisgICAgICAgICAgICAvLyB0aGF0IGFsd2F5cyBoYXZlIGEgYnJlYWsgYmV0d2VlbiB0aGVtLiAgVGhlIGFsZ29yaXRobSBpcyBhcyBmb2xsb3dzOgorICAgICAgICAgICAgLy8gTG9vayBkb3duIGVhY2ggY29sdW1uIGluIHRoZSBzdGF0ZSB0YWJsZS4gIEZvciBlYWNoIG5vbnplcm8gY2VsbCBpbgorICAgICAgICAgICAgLy8gdGhhdCBjb2x1bW4sIGxvb2sgdXAgdGhlIHJvdyBpdCBwb2ludHMgdG8uICBGb3IgZWFjaCBub256ZXJvIGNlbGwgaW4KKyAgICAgICAgICAgIC8vIHRoYXQgcm93LCBwb3B1bGF0ZSBhIGNlbGwgaW4gdGhlIGJhY2t3YXJkcyBzdGF0ZSB0YWJsZTogdGhlIHJvdyBudW1iZXIKKyAgICAgICAgICAgIC8vIG9mIHRoYXQgY2VsbCBpcyB0aGUgbnVtYmVyIG9mIHRoZSBjb2x1bW4gd2Ugd2VyZSBzY2FubmluZyAocGx1cyB0aGUKKyAgICAgICAgICAgIC8vIG9mZnNldCB0aGF0IGxvY2F0ZXMgdGhpcyBzdWItdGFibGUpLCBhbmQgdGhlIGNvbHVtbiBudW1iZXIgb2YgdGhhdCBjZWxsCisgICAgICAgICAgICAvLyBpcyB0aGUgY29sdW1uIG51bWJlciBvZiB0aGUgbm9uemVybyBjZWxsIHdlIGp1c3QgZm91bmQuICBUaGlzIGNlbGwgaXMKKyAgICAgICAgICAgIC8vIHBvcHVsYXRlZCB3aXRoIGl0cyBvd24gY29sdW1uIG51bWJlciAoYWRqdXN0ZWQgYWNjb3JkaW5nIHRvIHRoZSBhY3R1YWwKKyAgICAgICAgICAgIC8vIGxvY2F0aW9uIG9mIHRoZSBzdWItdGFibGUpLiAgVGhpcyBwcm9jZXNzIHdpbGwgcHJvZHVjZSBhIHN0YXRlIHRhYmxlCisgICAgICAgICAgICAvLyB3aG9zZSBiZWhhdmlvciBpcyB0aGUgc2FtZSBhcyBsb29raW5nIHVwIHN1Y2Nlc3NpdmUgcGFpcnMgb2YgY2hhcmFjdGVycworICAgICAgICAgICAgLy8gaW4gYW4gYXJyYXkgb2YgQm9vbGVhbnMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlcmUgaXMgYSBicmVhay4KKyAgICAgICAgICAgIGludCBudW1Sb3dzID0gc3RhdGVUYWJsZS5sZW5ndGggLyBudW1DYXRlZ29yaWVzOworICAgICAgICAgICAgZm9yIChpbnQgY29sdW1uID0gMDsgY29sdW1uIDwgbnVtQ2F0ZWdvcmllczsgY29sdW1uKyspIHsKKyAgICAgICAgICAgICAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBudW1Sb3dzOyByb3crKykgeworICAgICAgICAgICAgICAgICAgICBpbnQgbmV4dFJvdyA9IGxvb2t1cFN0YXRlKHJvdywgY29sdW1uKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRSb3cgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgbmV4dENvbHVtbiA9IDA7IG5leHRDb2x1bW4gPCBudW1DYXRlZ29yaWVzOyBuZXh0Q29sdW1uKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2VsbFZhbHVlID0gbG9va3VwU3RhdGUobmV4dFJvdywgbmV4dENvbHVtbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGxWYWx1ZSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gKHNob3J0W10pdGVtcFN0YXRlVGFibGUuZWxlbWVudEF0KG5leHRDb2x1bW4gKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja1RhYmxlT2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVbY29sdW1uXSA9IChzaG9ydCkoY29sdW1uICsgYmFja1RhYmxlT2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKy8vZGVidWdQcmludFRlbXBTdGF0ZVRhYmxlKCk7CisgICAgICAgICAgICAvLyBpZiB0aGUgdXNlciBzcGVjaWZpZWQgc29tZSBiYWNrd2FyZC1pdGVyYXRpb24gcnVsZXMgd2l0aCB0aGUgISB0b2tlbiwKKyAgICAgICAgICAgIC8vIHdlIGhhdmUgdG8gbWVyZ2UgdGhlIHJlc3VsdGluZyBzdGF0ZSB0YWJsZSB3aXRoIHRoZSBhdXRvLWdlbmVyYXRlZCBvbmUKKyAgICAgICAgICAgIC8vIGFib3ZlLiAgRmlyc3QgY29weSB0aGUgcG9wdWxhdGVkIGNlbGxzIGZyb20gcm93IDEgb3ZlciB0aGUgcG9wdWxhdGVkCisgICAgICAgICAgICAvLyBjZWxscyBpbiB0aGUgYXV0by1nZW5lcmF0ZWQgdGFibGUuICBUaGVuIGNvcHkgdmFsdWVzIGZyb20gcm93IDEgb2YgdGhlCisgICAgICAgICAgICAvLyBhdXRvLWdlbmVyYXRlZCB0YWJsZSBpbnRvIGFsbCBvZiB0aGUgdGhlIHVucG9wdWxhdGVkIGNlbGxzIG9mIHRoZQorICAgICAgICAgICAgLy8gcnVsZS1iYXNlZCB0YWJsZS4KKyAgICAgICAgICAgIGlmIChiYWNrVGFibGVPZmZzZXQgPiAxKSB7CisKKyAgICAgICAgICAgICAgICAvLyBmb3IgZXZlcnkgcm93IGluIHRoZSBhdXRvLWdlbmVyYXRlZCBzdWItdGFibGUsIGlmIGEgY2VsbCBpcworICAgICAgICAgICAgICAgIC8vIHBvcHVsYXRlZCB0aGF0IGlzIGFsc28gcG9wdWxhdGVkIGluIHJvdyAxIG9mIHRoZSBydWxlLWJhc2VkCisgICAgICAgICAgICAgICAgLy8gc3ViLXRhYmxlLCBjb3B5IHRoZSB2YWx1ZSBmcm9tIHJvdyAxIG92ZXIgdGhlIHZhbHVlIGluIHRoZQorICAgICAgICAgICAgICAgIC8vIGF1dG8tZ2VuZXJhdGVkIHN1Yi10YWJsZQorICAgICAgICAgICAgICAgIHN0YXRlID0gKHNob3J0W10pdGVtcFN0YXRlVGFibGUuZWxlbWVudEF0KDEpOworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSBiYWNrVGFibGVPZmZzZXQgLSAxOyBpIDwgdGVtcFN0YXRlVGFibGUuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgc2hvcnRbXSBzdGF0ZTIgPSAoc2hvcnRbXSl0ZW1wU3RhdGVUYWJsZS5lbGVtZW50QXQoaSk7CisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbnVtQ2F0ZWdvcmllczsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGVbal0gIT0gMCAmJiBzdGF0ZTJbal0gIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlMltqXSA9IHN0YXRlW2pdOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gbm93LCBmb3IgZXZlcnkgcm93IGluIHRoZSBydWxlLWJhc2VkIHN1Yi10YWJsZSB0aGF0IGlzIG5vdAorICAgICAgICAgICAgICAgIC8vIGFuIGVuZCBzdGF0ZSwgZmlsbCBpbiBhbGwgdW5wb3B1bGF0ZWQgY2VsbHMgd2l0aCB0aGUgdmFsdWVzCisgICAgICAgICAgICAgICAgLy8gb2YgdGhlIGNvcnJlc3BvbmRpbmcgY2VsbHMgaW4gdGhlIGZpcnN0IHJvdyBvZiB0aGUgYXV0by0KKyAgICAgICAgICAgICAgICAvLyBnZW5lcmF0ZWQgc3ViLXRhYmxlLgorICAgICAgICAgICAgICAgIHN0YXRlID0gKHNob3J0W10pdGVtcFN0YXRlVGFibGUuZWxlbWVudEF0KGJhY2tUYWJsZU9mZnNldCAtIDEpOworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgYmFja1RhYmxlT2Zmc2V0IC0gMTsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIHNob3J0W10gc3RhdGUyID0gKHNob3J0W10pdGVtcFN0YXRlVGFibGUuZWxlbWVudEF0KGkpOworICAgICAgICAgICAgICAgICAgICBpZiAoKHN0YXRlMltudW1DYXRlZ29yaWVzXSAmIEVORF9TVEFURV9GTEFHKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG51bUNhdGVnb3JpZXM7IGorKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZTJbal0gPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTJbal0gPSBzdGF0ZVtqXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKy8vZGVidWdQcmludFRlbXBTdGF0ZVRhYmxlKCk7CisKKyAgICAgICAgICAgIC8vIGZpbmFsbHksIGNsZWFuIGV2ZXJ5dGhpbmcgdXAgYW5kIGNvcHkgaXQgaW50byB0aGUgYWN0dWFsIEJyZWFrSXRlcmF0b3IKKyAgICAgICAgICAgIC8vIGJ5IGNhbGxpbmcgZmluaXNoQnVpbGRpbmdTdGF0ZVRhYmxlKCkKKyAgICAgICAgICAgIGZpbmlzaEJ1aWxkaW5nU3RhdGVUYWJsZShmYWxzZSk7CisvKgorU3lzdGVtLm91dC5wcmludCgiQzpcdCIpOworZm9yIChpbnQgaSA9IDA7IGkgPCBudW1DYXRlZ29yaWVzOyBpKyspCitTeXN0ZW0ub3V0LnByaW50KEludGVnZXIudG9TdHJpbmcoaSkgKyAiXHQiKTsKK1N5c3RlbS5vdXQucHJpbnRsbigpOyBTeXN0ZW0ub3V0LnByaW50KCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Iik7Citmb3IgKGludCBpID0gMDsgaSA8IGJhY2t3YXJkc1N0YXRlVGFibGUubGVuZ3RoOyBpKyspIHsKK2lmIChpICUgbnVtQ2F0ZWdvcmllcyA9PSAwKSB7CitTeXN0ZW0ub3V0LnByaW50bG4oKTsKK1N5c3RlbS5vdXQucHJpbnQoSW50ZWdlci50b1N0cmluZyhpIC8gbnVtQ2F0ZWdvcmllcykgKyAiOlx0Iik7Cit9CitpZiAoYmFja3dhcmRzU3RhdGVUYWJsZVtpXSA9PSAwKSBTeXN0ZW0ub3V0LnByaW50KCIuXHQiKTsgZWxzZSBTeXN0ZW0ub3V0LnByaW50KEludGVnZXIudG9TdHJpbmcoYmFja3dhcmRzU3RhdGVUYWJsZVtpXSkgKyAiXHQiKTsKK30KK1N5c3RlbS5vdXQucHJpbnRsbigpOworKi8KKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBUaHJvd3MgYW4gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHJlcHJlc2VudGluZyBhIHN5bnRheCBlcnJvciBpbiB0aGUgcnVsZQorICAgICAgICAgKiBkZXNjcmlwdGlvbi4gIFRoZSBleGNlcHRpb24ncyBtZXNzYWdlIGNvbnRhaW5zIHNvbWUgZGVidWdnaW5nIGluZm9ybWF0aW9uLgorICAgICAgICAgKiBAcGFyYW0gbWVzc2FnZSBBIG1lc3NhZ2UgZGVzY3JpYmluZyB0aGUgcHJvYmxlbQorICAgICAgICAgKiBAcGFyYW0gcG9zaXRpb24gVGhlIHBvc2l0aW9uIGluIHRoZSBkZXNjcmlwdGlvbiB3aGVyZSB0aGUgcHJvYmxlbSB3YXMKKyAgICAgICAgICogZGlzY292ZXJlZAorICAgICAgICAgKiBAcGFyYW0gY29udGV4dCBUaGUgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGVycm9yCisgICAgICAgICAqIEBpbnRlcm5hbAorICAgICAgICAgKi8KKyAgICAgICAgcHJvdGVjdGVkIHZvaWQgZXJyb3IoU3RyaW5nIG1lc3NhZ2UsIGludCBwb3NpdGlvbiwgU3RyaW5nIGNvbnRleHQpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlBhcnNlIGVycm9yOiAiICsgbWVzc2FnZSArICJcbiIgKworICAgICAgICAgICAgICAgICAgICBVdGlsaXR5LmVzY2FwZShjb250ZXh0LnN1YnN0cmluZygwLCBwb3NpdGlvbikpICsgIlxuXG4iICsKKyAgICAgICAgICAgICAgICAgICAgVXRpbGl0eS5lc2NhcGUoY29udGV4dC5zdWJzdHJpbmcocG9zaXRpb24pKSk7CisgICAgICAgIH0KKworCS8vL0NMT1ZFUjpPRkYKKyAgICAgICAgcHJvdGVjdGVkIHZvaWQgZGVidWdQcmludFZlY3RvcihTdHJpbmcgbGFiZWwsIFZlY3RvciB2KSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KGxhYmVsKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdi5zaXplKCk7IGkrKykKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KHYuZWxlbWVudEF0KGkpLnRvU3RyaW5nKCkgKyAiXHQiKTsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOworICAgICAgICB9CisKKyAgICAgICAgcHJvdGVjdGVkIHZvaWQgZGVidWdQcmludFZlY3Rvck9mVmVjdG9ycyhTdHJpbmcgbGFiZWwxLCBTdHJpbmcgbGFiZWwyLCBWZWN0b3IgdikgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGxhYmVsMSk7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHYuc2l6ZSgpOyBpKyspCisgICAgICAgICAgICAgICAgZGVidWdQcmludFZlY3RvcihsYWJlbDIsIChWZWN0b3Ipdi5lbGVtZW50QXQoaSkpOworICAgICAgICB9CisKKyAgICAgICAgcHJvdGVjdGVkIHZvaWQgZGVidWdQcmludFRlbXBTdGF0ZVRhYmxlKCkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIgICAgICB0ZW1wU3RhdGVUYWJsZToiKTsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIiAgICAgICAgQzpcdCIpOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gbnVtQ2F0ZWdvcmllczsgaSsrKQorICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoSW50ZWdlci50b1N0cmluZyhpKSArICJcdCIpOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IHRlbXBTdGF0ZVRhYmxlLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgc2hvcnRbXSByb3cgPSAoc2hvcnRbXSkodGVtcFN0YXRlVGFibGUuZWxlbWVudEF0KGkpKTsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCIgICAgICAgICIgKyBpICsgIjpcdCIpOworICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgcm93Lmxlbmd0aDsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChyb3dbal0gPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludCgiLlx0Iik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KEludGVnZXIudG9TdHJpbmcocm93W2pdKSArICJcdCIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICB9CisgICAgLy8vQ0xPVkVSOk9OCisKKyAgICAvKgorICAgICAqIFRoaXMgY2xhc3MgZXhpc3RzIHRvIHdvcmsgYXJvdW5kIGEgYnVnIGluIEhvdEphdmEncyBpbXBsZW1lbnRhdGlvbgorICAgICAqIG9mIENoYXJhY3Rlckl0ZXJhdG9yLCB3aGljaCBpbmNvcnJlY3RseSBoYW5kbGVzIHNldEluZGV4KGVuZEluZGV4KS4KKyAgICAgKiBUaGlzIGl0ZXJhdG9yIHJlbGllcyBvbmx5IG9uIGJhc2Uuc2V0SW5kZXgobikgd2hlcmUgbiBpcyBsZXNzIHRoYW4KKyAgICAgKiBlbmRJbmRleC4KKyAgICAgKgorICAgICAqIE9uZSBjYXZlYXQ6ICBpZiB0aGUgYmFzZSBpdGVyYXRvcidzIGJlZ2luIGFuZCBlbmQgaW5kaWNlcyBjaGFuZ2UKKyAgICAgKiB0aGUgY2hhbmdlIHdpbGwgbm90IGJlIHJlZmxlY3RlZCBieSB0aGlzIHdyYXBwZXIuICBEb2VzIHRoYXQgbWF0dGVyPworICAgICAqLworICAgIC8vL0NMT1ZFUjpPRkYKKyAgICAvLyBPbmx5IHVzZWQgZm9yIEhvdEphdmEsIHNvIGNsb3ZlciB3b24ndCBlbmNvdW50ZXIgaXQKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjbGFzcyBTYWZlQ2hhckl0ZXJhdG9yIGltcGxlbWVudHMgQ2hhcmFjdGVySXRlcmF0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsb25lYWJsZSB7CisKKyAgICAgICAgcHJpdmF0ZSBDaGFyYWN0ZXJJdGVyYXRvciBiYXNlOworICAgICAgICBwcml2YXRlIGludCByYW5nZVN0YXJ0OworICAgICAgICBwcml2YXRlIGludCByYW5nZUxpbWl0OworICAgICAgICBwcml2YXRlIGludCBjdXJyZW50SW5kZXg7CisKKyAgICAgICAgU2FmZUNoYXJJdGVyYXRvcihDaGFyYWN0ZXJJdGVyYXRvciBiYXNlKSB7CisgICAgICAgICAgICB0aGlzLmJhc2UgPSBiYXNlOworICAgICAgICAgICAgdGhpcy5yYW5nZVN0YXJ0ID0gYmFzZS5nZXRCZWdpbkluZGV4KCk7CisgICAgICAgICAgICB0aGlzLnJhbmdlTGltaXQgPSBiYXNlLmdldEVuZEluZGV4KCk7CisgICAgICAgICAgICB0aGlzLmN1cnJlbnRJbmRleCA9IGJhc2UuZ2V0SW5kZXgoKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBjaGFyIGZpcnN0KCkgeworICAgICAgICAgICAgcmV0dXJuIHNldEluZGV4KHJhbmdlU3RhcnQpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGNoYXIgbGFzdCgpIHsKKyAgICAgICAgICAgIHJldHVybiBzZXRJbmRleChyYW5nZUxpbWl0IC0gMSk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgY2hhciBjdXJyZW50KCkgeworICAgICAgICAgICAgaWYgKGN1cnJlbnRJbmRleCA8IHJhbmdlU3RhcnQgfHwgY3VycmVudEluZGV4ID49IHJhbmdlTGltaXQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gRE9ORTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiBiYXNlLnNldEluZGV4KGN1cnJlbnRJbmRleCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgY2hhciBuZXh0KCkgeworCisgICAgICAgICAgICBjdXJyZW50SW5kZXgrKzsKKyAgICAgICAgICAgIGlmIChjdXJyZW50SW5kZXggPj0gcmFuZ2VMaW1pdCkgeworICAgICAgICAgICAgICAgIGN1cnJlbnRJbmRleCA9IHJhbmdlTGltaXQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIERPTkU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gYmFzZS5zZXRJbmRleChjdXJyZW50SW5kZXgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGNoYXIgcHJldmlvdXMoKSB7CisKKyAgICAgICAgICAgIGN1cnJlbnRJbmRleC0tOworICAgICAgICAgICAgaWYgKGN1cnJlbnRJbmRleCA8IHJhbmdlU3RhcnQpIHsKKyAgICAgICAgICAgICAgICBjdXJyZW50SW5kZXggPSByYW5nZVN0YXJ0OworICAgICAgICAgICAgICAgIHJldHVybiBET05FOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGJhc2Uuc2V0SW5kZXgoY3VycmVudEluZGV4KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBjaGFyIHNldEluZGV4KGludCBpKSB7CisKKyAgICAgICAgICAgIGlmIChpIDwgcmFuZ2VTdGFydCB8fCBpID4gcmFuZ2VMaW1pdCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgcG9zaXRpb24iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGN1cnJlbnRJbmRleCA9IGk7CisgICAgICAgICAgICByZXR1cm4gY3VycmVudCgpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGludCBnZXRCZWdpbkluZGV4KCkgeworICAgICAgICAgICAgcmV0dXJuIHJhbmdlU3RhcnQ7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgaW50IGdldEVuZEluZGV4KCkgeworICAgICAgICAgICAgcmV0dXJuIHJhbmdlTGltaXQ7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgaW50IGdldEluZGV4KCkgeworICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRJbmRleDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBPYmplY3QgY2xvbmUoKSB7CisKKyAgICAgICAgICAgIFNhZmVDaGFySXRlcmF0b3IgY29weSA9IG51bGw7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGNvcHkgPSAoU2FmZUNoYXJJdGVyYXRvcikgc3VwZXIuY2xvbmUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhdGNoKENsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkNsb25lIG5vdCBzdXBwb3J0ZWQ6ICIgKyBlKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgQ2hhcmFjdGVySXRlcmF0b3IgY29weU9mQmFzZSA9IChDaGFyYWN0ZXJJdGVyYXRvcikgYmFzZS5jbG9uZSgpOworICAgICAgICAgICAgY29weS5iYXNlID0gY29weU9mQmFzZTsKKyAgICAgICAgICAgIHJldHVybiBjb3B5OworICAgICAgICB9CisgICAgfQorICAgIC8vL0NMT1ZFUjpPTgorCisgICAgLy8vQ0xPVkVSOk9GRgorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBkZWJ1Z1ByaW50bG4oU3RyaW5nIHMpIHsKKyAgICAgICAgZmluYWwgU3RyaW5nIHplcm9zID0gIjAwMDAiOworICAgICAgICBTdHJpbmcgdGVtcDsKKyAgICAgICAgU3RyaW5nQnVmZmVyIG91dCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzLmxlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgICAgIGNoYXIgYyA9IHMuY2hhckF0KGkpOworICAgICAgICAgICAgaWYgKGMgPj0gJyAnICYmIGMgPCAnXHUwMDdmJykgeworICAgICAgICAgICAgICAgIG91dC5hcHBlbmQoYyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBvdXQuYXBwZW5kKCJcXHUiKTsKKyAgICAgICAgICAgICAgICB0ZW1wID0gSW50ZWdlci50b0hleFN0cmluZygoaW50KWMpOworICAgICAgICAgICAgICAgIG91dC5hcHBlbmQoemVyb3Muc3Vic3RyaW5nKDAsIDQgLSB0ZW1wLmxlbmd0aCgpKSk7CisgICAgICAgICAgICAgICAgb3V0LmFwcGVuZCh0ZW1wKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ob3V0KTsKKyAgICB9CisgICAgLy8vQ0xPVkVSOk9OCit9CisKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS90ZXh0L1J1bGVCYXNlZENvbGxhdG9yLmphdmEgYi9zcmMvY29tL2libS9pY3UvdGV4dC9SdWxlQmFzZWRDb2xsYXRvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmM1OTAyNDEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdGV4dC9SdWxlQmFzZWRDb2xsYXRvci5qYXZhCkBAIC0wLDAgKzEsNDEwNyBAQAorLyoqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS90ZXh0L1J1bGVCYXNlZENvbGxhdG9yLmphdmEsdiAkIAorKiAkRGF0ZTogMjAwMi8xMi8xMyAyMDoyMDowMSAkIAorKiAkUmV2aXNpb246IDEuMjkgJAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KK3BhY2thZ2UgY29tLmlibS5pY3UudGV4dDsKKworaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5CdWZmZXJlZElucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKK2ltcG9ydCBqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGU7CitpbXBvcnQgamF2YS51dGlsLkFycmF5czsKK2ltcG9ydCBqYXZhLnRleHQuQ2hhcmFjdGVySXRlcmF0b3I7CitpbXBvcnQgamF2YS50ZXh0LlN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yOworaW1wb3J0IGNvbS5pYm0uaWN1LmxhbmcuVUNoYXJhY3RlcjsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLkludFRyaWU7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5UcmllOworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuSUNVTG9jYWxlRGF0YTsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLkJPQ1U7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5VdGlsaXR5OworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuSUNVRGVidWc7CisKKy8qKgorICogPHA+UnVsZUJhc2VkQ29sbGF0b3IgaXMgYSBjb25jcmV0ZSBzdWJjbGFzcyBvZiBDb2xsYXRvci4gSXQgYWxsb3dzCisgKiBjdXN0b21pemF0aW9uIG9mIHRoZSBDb2xsYXRvciB2aWEgdXNlci1zcGVjaWZpZWQgcnVsZSBzZXRzLgorICogUnVsZUJhc2VkQ29sbGF0b3IgaXMgZGVzaWduZWQgdG8gYmUgZnVsbHkgY29tcGxpYW50IHRvIHRoZSA8YQorICogaHJlZj0iaHR0cDovL3d3dy51bmljb2RlLm9yZy91bmljb2RlL3JlcG9ydHMvdHIxMC8iPiBVbmljb2RlCisgKiBDb2xsYXRpb24gQWxnb3JpdGhtIChVQ0EpPC9hPiBhbmQgY29uZm9ybXMgdG8gSVNPIDE0NjUxLjwvcD4KKyAqCisgKiA8cD5Vc2VycyBhcmUgc3Ryb25nbHkgZW5jb3VyYWdlZCB0byByZWFkIDxhCisgKiBocmVmPSJodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vaWN1L3VzZXJndWlkZS9Db2xsYXRlX0ludHJvLmh0bWwiPgorICogdGhlIHVzZXJzIGd1aWRlPC9hPiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29sbGF0aW9uCisgKiBzZXJ2aWNlIGJlZm9yZSB1c2luZyB0aGlzIGNsYXNzLjwvcD4KKyAqCisgKiA8cD5DcmVhdGUgYSBSdWxlQmFzZWRDb2xsYXRvciBmcm9tIGEgbG9jYWxlIGJ5IGNhbGxpbmcgdGhlCisgKiBnZXRJbnN0YW5jZShMb2NhbGUpIGZhY3RvcnkgbWV0aG9kIGluIHRoZSBiYXNlIGNsYXNzIENvbGxhdG9yLgorICogQ29sbGF0b3IuZ2V0SW5zdGFuY2UoTG9jYWxlKSBjcmVhdGVzIGEgUnVsZUJhc2VkQ29sbGF0b3Igb2JqZWN0CisgKiBiYXNlZCBvbiB0aGUgY29sbGF0aW9uIHJ1bGVzIGRlZmluZWQgYnkgdGhlIGFyZ3VtZW50IGxvY2FsZS4gIElmIGEKKyAqIGN1c3RvbWl6ZWQgY29sbGF0aW9uIG9yZGVyaW5nIGFyIGF0dHJpYnV0ZXMgaXMgcmVxdWlyZWQsIHVzZSB0aGUKKyAqIFJ1bGVCYXNlZENvbGxhdG9yKFN0cmluZykgY29uc3RydWN0b3Igd2l0aCB0aGUgYXBwcm9wcmlhdGUKKyAqIHJ1bGVzLiBUaGUgY3VzdG9taXplZCBSdWxlQmFzZWRDb2xsYXRvciB3aWxsIGJhc2UgaXRzIG9yZGVyaW5nIG9uCisgKiBVQ0EsIHdoaWxlIHJlLWFkanVzdGluZyB0aGUgYXR0cmlidXRlcyBhbmQgb3JkZXJzIG9mIHRoZSBjaGFyYWN0ZXJzCisgKiBpbiB0aGUgc3BlY2lmaWVkIHJ1bGUgYWNjb3JkaW5nbHkuPC9wPgorICoKKyAqIDxwPlJ1bGVCYXNlZENvbGxhdG9yIHByb3ZpZGVzIGNvcnJlY3QgY29sbGF0aW9uIG9yZGVycyBmb3IgbW9zdAorICogbG9jYWxlcyBzdXBwb3J0ZWQgaW4gSUNVLiBJZiBzcGVjaWZpYyBkYXRhIGZvciBhIGxvY2FsZSBpcyBub3QKKyAqIGF2YWlsYWJsZSwgdGhlIG9yZGVycyBldmVudHVhbGx5IGZhbGxzIGJhY2sgdG8gdGhlIDxhCisgKiBocmVmPSJodHRwOi8vd3d3LnVuaWNvZGUub3JnL3VuaWNvZGUvcmVwb3J0cy90cjEwLyI+VUNBIGNvbGxhdGlvbgorICogb3JkZXIgPC9hPi48L3A+CisgKgorICogPHA+Rm9yIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb2xsYXRpb24gcnVsZSBzeW50YXggYW5kIGRldGFpbHMKKyAqIGFib3V0IGN1c3RvbWl6YXRpb24sIHBsZWFzZSByZWZlciB0byB0aGUKKyAqIDxhIGhyZWY9Imh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3UvdXNlcmd1aWRlL0NvbGxhdGVfQ3VzdG9taXphdGlvbi5odG1sIj4KKyAqIENvbGxhdGlvbiBjdXN0b21pemF0aW9uPC9hPiBzZWN0aW9uIG9mIHRoZSB1c2VyJ3MgZ3VpZGUuPC9wPgorICoKKyAqIDxwPjxzdHJvbmc+Tm90ZTwvc3Ryb25nPiB0aGF0IHRoZXJlIGFyZSBzb21lIGRpZmZlcmVuY2VzIGJldHdlZW4KKyAqIHRoZSBDb2xsYXRpb24gcnVsZSBzeW50YXggdXNlZCBpbiBKYXZhIGFuZCBJQ1U0SjoKKyAqCisgKiA8dWw+CisgKiA8bGk+QWNjb3JkaW5nIHRvIHRoZSBKREsgZG9jdW1lbnRhdGlvbjoKKyAqIDxpPgorICogPHA+CisgKiBNb2RpZmllciAnIScgOiBUdXJucyBvbiBUaGFpL0xhbyB2b3dlbC1jb25zb25hbnQgc3dhcHBpbmcuIElmIHRoaXMgcnVsZSAKKyAqIGlzIGluIGZvcmNlIHdoZW4gYSBUaGFpIHZvd2VsIG9mIHRoZSByYW5nZSAmIzkyO1UwRTQwLSYjOTI7VTBFNDQgcHJlY2VkZXMgYSAKKyAqIFRoYWkgY29uc29uYW50IG9mIHRoZSByYW5nZSAmIzkyO1UwRTAxLSYjOTI7VTBFMkUgT1IgYSBMYW8gdm93ZWwgb2YgdGhlIAorICogcmFuZ2UgJiM5MjtVMEVDMC0mIzkyO1UwRUM0IHByZWNlZGVzIGEgTGFvIGNvbnNvbmFudCBvZiB0aGUgcmFuZ2UgCisgKiAmIzkyO1UwRTgxLSYjOTI7VTBFQUUgdGhlbiB0aGUgCisgKiB2b3dlbCBpcyBwbGFjZWQgYWZ0ZXIgdGhlIGNvbnNvbmFudCBmb3IgY29sbGF0aW9uIHB1cnBvc2VzLiAKKyAqIDwvcD4KKyAqIDxwPgorICogSWYgYSBydWxlIGlzIHdpdGhvdXQgdGhlIG1vZGlmaWVyICchJywgdGhlIFRoYWkvTGFvIHZvd2VsLWNvbnNvbmFudCAKKyAqIHN3YXBwaW5nIGlzIG5vdCB0dXJuZWQgb24uCisgKiA8L3A+CisgKiA8L2k+CisgKiA8cD4KKyAqIElDVTRKJ3MgUnVsZUJhc2VkQ29sbGF0b3IgZG9lcyBub3Qgc3VwcG9ydCB0dXJuaW5nIG9mZiB0aGUgVGhhaS9MYW8gCisgKiB2b3dlbC1jb25zb25hbnQgc3dhcHBpbmcsIHNpbmNlIHRoZSBVQ0EgY2xlYXJseSBzdGF0ZXMgdGhhdCBpdCBoYXMgdG8gYmUgCisgKiBzdXBwb3J0ZWQgdG8gZW5zdXJlIGEgY29ycmVjdCBzb3J0aW5nIG9yZGVyLiBJZiBhICchJyBpcyBlbmNvdW50ZXJlZCwgaXQgaXMKKyAqIGlnbm9yZWQuCisgKiA8L3A+CisgKiA8bGk+QXMgbWVudGlvbmVkIGluIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSBiYXNlIGNsYXNzIENvbGxhdG9yLCAKKyAqICAgICBjb21wYXRpYmlsaXR5IGRlY29tcG9zaXRpb24gbW9kZSBpcyBub3Qgc3VwcG9ydGVkLgorICogPC91bD4KKyAqIDxwPgorICogPHN0cm9uZz5FeGFtcGxlczwvc3Ryb25nPgorICogPC9wPgorICogPHA+CisgKiBDcmVhdGluZyBDdXN0b21pemVkIFJ1bGVCYXNlZENvbGxhdG9yczoKKyAqIDxibG9ja3F1b3RlPgorICogPHByZT4KKyAqIFN0cmluZyBzaW1wbGUgPSAiJmFtcDsgYSAmbHQ7IGIgJmx0OyBjICZsdDsgZCI7CisgKiBSdWxlQmFzZWRDb2xsYXRvciBzaW1wbGVDb2xsYXRvciA9IG5ldyBSdWxlQmFzZWRDb2xsYXRvcihzaW1wbGUpOworICogCisgKiBTdHJpbmcgbm9yd2VnaWFuID0gIiZhbXA7IGEgLCBBICZsdDsgYiAsIEIgJmx0OyBjICwgQyAmbHQ7IGQgLCBEICZsdDsgZSAsIEUgIgorICogICAgICAgICAgICAgICAgICAgICsgIiZsdDsgZiAsIEYgJmx0OyBnICwgRyAmbHQ7IGggLCBIICZsdDsgaSAsIEkgJmx0OyBqICwgIgorICogICAgICAgICAgICAgICAgICAgICsgIkogJmx0OyBrICwgSyAmbHQ7IGwgLCBMICZsdDsgbSAsIE0gJmx0OyBuICwgTiAmbHQ7ICIKKyAqICAgICAgICAgICAgICAgICAgICArICJvICwgTyAmbHQ7IHAgLCBQICZsdDsgcSAsIFEgJmx0IHIgLCBSICZsdCBzICwgUyAmbHQ7ICIKKyAqICAgICAgICAgICAgICAgICAgICArICJ0ICwgVCAmbHQ7IHUgLCBVICZsdDsgdiAsIFYgJmx0OyB3ICwgVyAmbHQ7IHggLCBYICIKKyAqICAgICAgICAgICAgICAgICAgICArICImbHQ7IHkgLCBZICZsdDsgeiAsIFogJmx0OyAmIzkyO3UwMEU1ID0gYSYjOTI7dTAzMEEgIgorICogICAgICAgICAgICAgICAgICAgICsgIiwgJiM5Mjt1MDBDNSA9IEEmIzkyO3UwMzBBIDsgYWEgLCBBQSAmbHQ7ICYjOTI7dTAwRTYgIgorICogICAgICAgICAgICAgICAgICAgICsgIiwgJiM5Mjt1MDBDNiAmbHQ7ICYjOTI7dTAwRjggLCAmIzkyO3UwMEQ4IjsKKyAqIFJ1bGVCYXNlZENvbGxhdG9yIG5vcndlZ2lhbkNvbGxhdG9yID0gbmV3IFJ1bGVCYXNlZENvbGxhdG9yKG5vcndlZ2lhbik7CisgKiA8L3ByZT4KKyAqIDwvYmxvY2txdW90ZT4KKyAqCisgKiBDb25jYXRlbmF0aW5nIHJ1bGVzIHRvIGNvbWJpbmUgPGNvZGU+Q29sbGF0b3I8L2NvZGU+czoKKyAqIDxibG9ja3F1b3RlPgorICogPHByZT4KKyAqIC8vIENyZWF0ZSBhbiBlbl9VUyBDb2xsYXRvciBvYmplY3QKKyAqIFJ1bGVCYXNlZENvbGxhdG9yIGVuX1VTQ29sbGF0b3IgPSAoUnVsZUJhc2VkQ29sbGF0b3IpCisgKiAgICAgQ29sbGF0b3IuZ2V0SW5zdGFuY2UobmV3IExvY2FsZSgiZW4iLCAiVVMiLCAiIikpOworICogLy8gQ3JlYXRlIGEgZGFfREsgQ29sbGF0b3Igb2JqZWN0CisgKiBSdWxlQmFzZWRDb2xsYXRvciBkYV9ES0NvbGxhdG9yID0gKFJ1bGVCYXNlZENvbGxhdG9yKQorICogICAgIENvbGxhdG9yLmdldEluc3RhbmNlKG5ldyBMb2NhbGUoImRhIiwgIkRLIiwgIiIpKTsKKyAqIC8vIENvbWJpbmUgdGhlIHR3bworICogLy8gRmlyc3QsIGdldCB0aGUgY29sbGF0aW9uIHJ1bGVzIGZyb20gZW5fVVNDb2xsYXRvcgorICogU3RyaW5nIGVuX1VTUnVsZXMgPSBlbl9VU0NvbGxhdG9yLmdldFJ1bGVzKCk7CisgKiAvLyBTZWNvbmQsIGdldCB0aGUgY29sbGF0aW9uIHJ1bGVzIGZyb20gZGFfREtDb2xsYXRvcgorICogU3RyaW5nIGRhX0RLUnVsZXMgPSBkYV9ES0NvbGxhdG9yLmdldFJ1bGVzKCk7CisgKiBSdWxlQmFzZWRDb2xsYXRvciBuZXdDb2xsYXRvciA9CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFJ1bGVCYXNlZENvbGxhdG9yKGVuX1VTUnVsZXMgKyBkYV9ES1J1bGVzKTsKKyAqIC8vIG5ld0NvbGxhdG9yIGhhcyB0aGUgY29tYmluZWQgcnVsZXMKKyAqIDwvcHJlPgorICogPC9ibG9ja3F1b3RlPgorICoKKyAqIE1ha2luZyBjaGFuZ2VzIHRvIGFuIGV4aXN0aW5nIFJ1bGVCYXNlZENvbGxhdG9yIHRvIGNyZWF0ZSBhIG5ldyAKKyAqIDxjb2RlPkNvbGxhdG9yPC9jb2RlPiBvYmplY3QsIGJ5IGFwcGVuZGluZyBjaGFuZ2VzIHRvIHRoZSBleGlzdGluZyBydWxlOgorICogPGJsb2NrcXVvdGU+CisgKiA8cHJlPgorICogLy8gQ3JlYXRlIGEgbmV3IENvbGxhdG9yIG9iamVjdCB3aXRoIGFkZGl0aW9uYWwgcnVsZXMKKyAqIFN0cmluZyBhZGRSdWxlcyA9ICImYW1wOyBDICZsdDsgY2gsIGNILCBDaCwgQ0giOworICogUnVsZUJhc2VkQ29sbGF0b3IgbXlDb2xsYXRvciA9CisgKiAgICAgbmV3IFJ1bGVCYXNlZENvbGxhdG9yKGVuX1VTQ29sbGF0b3IgKyBhZGRSdWxlcyk7CisgKiAvLyBteUNvbGxhdG9yIGNvbnRhaW5zIHRoZSBuZXcgcnVsZXMKKyAqIDwvcHJlPgorICogPC9ibG9ja3F1b3RlPgorICoKKyAqIEhvdyB0byBjaGFuZ2UgdGhlIG9yZGVyIG9mIG5vbi1zcGFjaW5nIGFjY2VudHM6CisgKiA8YmxvY2txdW90ZT4KKyAqIDxwcmU+CisgKiAvLyBvbGQgcnVsZSB3aXRoIG1haW4gYWNjZW50cworICogU3RyaW5nIG9sZFJ1bGVzID0gIj0gJiM5Mjt1MDMwMSA7ICYjOTI7dTAzMDAgOyAmIzkyO3UwMzAyIDsgJiM5Mjt1MDMwOCAiICAgIAorICogICAgICAgICAgICAgICAgICsgIjsgJiM5Mjt1MDMyNyA7ICYjOTI7dTAzMDMgOyAmIzkyO3UwMzA0IDsgJiM5Mjt1MDMwNSAiCisgKiAgICAgICAgICAgICAgICAgKyAiOyAmIzkyO3UwMzA2IDsgJiM5Mjt1MDMwNyA7ICYjOTI7dTAzMDkgOyAmIzkyO3UwMzBBICIgCisgKiAgICAgICAgICAgICAgICAgKyAiOyAmIzkyO3UwMzBCIDsgJiM5Mjt1MDMwQyA7ICYjOTI7dTAzMEQgOyAmIzkyO3UwMzBFICIKKyAqICAgICAgICAgICAgICAgICArICI7ICYjOTI7dTAzMEYgOyAmIzkyO3UwMzEwIDsgJiM5Mjt1MDMxMSA7ICYjOTI7dTAzMTIgIgorICogICAgICAgICAgICAgICAgICsgIiZsdDsgYSAsIEEgOyBhZSwgQUUgOyAmIzkyO3UwMGU2ICwgJiM5Mjt1MDBjNiAiCisgKiAgICAgICAgICAgICAgICAgKyAiJmx0OyBiICwgQiAmbHQ7IGMsIEMgJmx0OyBlLCBFICZhbXA7IEMgJmx0OyBkICwgRCI7CisgKiAvLyBjaGFuZ2UgdGhlIG9yZGVyIG9mIGFjY2VudCBjaGFyYWN0ZXJzCisgKiBTdHJpbmcgYWRkT24gPSAiJmFtcDsgJiM5Mjt1MDMwMCA7ICYjOTI7dTAzMDggOyAmIzkyO3UwMzAyIjsKKyAqIFJ1bGVCYXNlZENvbGxhdG9yIG15Q29sbGF0b3IgPSBuZXcgUnVsZUJhc2VkQ29sbGF0b3Iob2xkUnVsZXMgKyBhZGRPbik7CisgKiA8L3ByZT4KKyAqIDwvYmxvY2txdW90ZT4KKyAqCisgKiBQdXR0aW5nIGluIGEgbmV3IHByaW1hcnkgb3JkZXJpbmcgYmVmb3JlIHRoZSBkZWZhdWx0IHNldHRpbmcsIAorICogZS5nLiBzb3J0IEVuZ2xpc2ggY2hhcmFjdGVycyBiZWZvcmUgb3IgYWZ0ZXIgSmFwYW5lc2UgY2hhcmFjdGVycyBpbiB0aGUgSmFwYW5lc2UgCisgKiA8Y29kZT5Db2xsYXRvcjwvY29kZT46CisgKiA8YmxvY2txdW90ZT4KKyAqIDxwcmU+CisgKiAvLyBnZXQgZW5fVVMgQ29sbGF0b3IgcnVsZXMKKyAqIFJ1bGVCYXNlZENvbGxhdG9yIGVuX1VTQ29sbGF0b3IgCisgKiAgICAgICAgICAgICAgICAgICAgICAgID0gKFJ1bGVCYXNlZENvbGxhdG9yKUNvbGxhdG9yLmdldEluc3RhbmNlKExvY2FsZS5VUyk7CisgKiAvLyBhZGQgYSBmZXcgSmFwYW5lc2UgY2hhcmFjdGVycyB0byBzb3J0IGJlZm9yZSBFbmdsaXNoIGNoYXJhY3RlcnMKKyAqIC8vIHN1cHBvc2UgdGhlIGxhc3QgY2hhcmFjdGVyIGJlZm9yZSB0aGUgZmlyc3QgYmFzZSBsZXR0ZXIgJ2EnIGluCisgKiAvLyB0aGUgRW5nbGlzaCBjb2xsYXRpb24gcnVsZSBpcyAmIzkyO3UyMjEyCisgKiBTdHJpbmcgamFTdHJpbmcgPSAiJiAmIzkyO3UyMjEyICZsdCAmIzkyO3UzMDQxLCAmIzkyO3UzMDQyICZsdCAmIzkyO3UzMDQzLCAiCisgKiAgICAgICAgICAgICAgICAgICArICImIzkyO3UzMDQ0IjsKKyAqIFJ1bGVCYXNlZENvbGxhdG9yIG15SmFwYW5lc2VDb2xsYXRvciAKKyAqICAgICAgICAgICAgICA9IG5ldyBSdWxlQmFzZWRDb2xsYXRvcihlbl9VU0NvbGxhdG9yLmdldFJ1bGVzKCkgKyBqYVN0cmluZyk7CisgKiA8L3ByZT4KKyAqIDwvYmxvY2txdW90ZT4KKyAqIDwvcD4KKyAqIDxwPgorICogVGhpcyBjbGFzcyBpcyBub3Qgc3ViY2xhc3NhYmxlCisgKiA8L3A+CisgKiBAYXV0aG9yIFN5biBXZWUgUXVlaworICogQGRyYWZ0IElDVSAyLjIKKyAqLworcHVibGljIGZpbmFsIGNsYXNzIFJ1bGVCYXNlZENvbGxhdG9yIGV4dGVuZHMgQ29sbGF0b3IgCit7ICAgCisJLy8gcHVibGljIGRhdGEgbWVtYmVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkKKwkvLyBwdWJsaWMgY29uc3RydWN0b3JzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCQorCS8qKgorICAgICAqIDxwPgorICAgICAqIENvbnN0cnVjdG9yIHRoYXQgdGFrZXMgdGhlIGFyZ3VtZW50IHJ1bGVzIGZvciAKKyAgICAgKiBjdXN0b21pemF0aW9uLiBUaGUgY29sbGF0b3Igd2lsbCBiZSBiYXNlZCBvbiBVQ0EsIAorICAgICAqIHdpdGggdGhlIGF0dHJpYnV0ZXMgYW5kIHJlLW9yZGVyaW5nIG9mIHRoZSBjaGFyYWN0ZXJzIHNwZWNpZmllZCBpbiB0aGUgCisgICAgICogYXJndW1lbnQgcnVsZXMuCisgICAgICogPC9wPgorICAgICAqIDxwPlNlZSB0aGUgdXNlciBndWlkZSdzIHNlY3Rpb24gb24gCisgICAgICogPGEgaHJlZj1odHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vaWN1L3VzZXJndWlkZS9Db2xsYXRlX0N1c3RvbWl6YXRpb24uaHRtbD4KKyAgICAgKiBDb2xsYXRpb24gQ3VzdG9taXphdGlvbjwvYT4gZm9yIGRldGFpbHMgb24gdGhlIHJ1bGUgc3ludGF4LgorICAgICAqIDwvcD4KKyAgICAgKiBAcGFyYW0gcnVsZXMgdGhlIGNvbGxhdGlvbiBydWxlcyB0byBidWlsZCB0aGUgY29sbGF0aW9uIHRhYmxlIGZyb20uCisgICAgICogQGV4Y2VwdGlvbiBQYXJzZUV4Y2VwdGlvbiBhbmQgSU9FeGNlcHRpb24gdGhyb3duLiBQYXJzZUV4Y2VwdGlvbiB0aHJvd24gCisgICAgICogICAgICAgICAgICB3aGVuIGFyZ3VtZW50IHJ1bGVzIGhhdmUgYW4gaW52YWxpZCBzeW50YXguIElPRXhjZXB0aW9uIAorICAgICAqICAgICAgICAgICAgdGhyb3duIHdoZW4gYW4gZXJyb3Igb2NjdXJlZCB3aGlsZSByZWFkaW5nIGludGVybmFsIGRhdGEuCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgUnVsZUJhc2VkQ29sbGF0b3IoU3RyaW5nIHJ1bGVzKSB0aHJvd3MgRXhjZXB0aW9uCisgICAgeworICAgICAgICBpZiAocnVsZXMgPT0gbnVsbCB8fCBydWxlcy5sZW5ndGgoKSA9PSAwKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29sbGF0aW9uIHJ1bGVzIGNhbiBub3QgYmUgbnVsbCIpOworICAgICAgICB9CisgICAgCXNldFdpdGhVQ0FEYXRhKCk7CisgICAgICAgIENvbGxhdGlvblBhcnNlZFJ1bGVCdWlsZGVyIGJ1aWxkZXIgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBDb2xsYXRpb25QYXJzZWRSdWxlQnVpbGRlcihydWxlcyk7CisJICAgIAorCQlidWlsZGVyLnNldFJ1bGVzKHRoaXMpOworICAgICAgICBtX3J1bGVzXyA9IHJ1bGVzOworICAgICAgICBpbml0KCk7CisgICAgICAgIGluaXRVdGlsaXR5KCk7CisgICAgfQorICAgIAorICAgIC8vIHB1YmxpYyBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgICogQ2xvbmVzIHRoZSBSdWxlQmFzZWRDb2xsYXRvcgorICAgICAqIEByZXR1cm4gYSBuZXcgaW5zdGFuY2Ugb2YgdGhpcyBSdWxlQmFzZWRDb2xsYXRvciBvYmplY3QKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBPYmplY3QgY2xvbmUoKSB0aHJvd3MgQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24KKyAgICB7CisgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yIHJlc3VsdCA9IChSdWxlQmFzZWRDb2xsYXRvcilzdXBlci5jbG9uZSgpOworICAgICAgICAvLyBzaW5jZSBhbGwgY29sbGF0aW9uIGRhdGEgaW4gdGhlIFJ1bGVCYXNlZENvbGxhdG9yIGRvIG5vdCBjaGFuZ2UKKyAgICAgICAgLy8gd2UgY2FuIHNhZmVseSBhc3NpZ24gdGhlIHJlc3VsdC5maWVsZHMgdG8gdGhpcyBjb2xsYXRvcgorICAgICAgICByZXN1bHQuaW5pdFV0aWxpdHkoKTsgLy8gbGV0IHRoZSBuZXcgY2xvbmUgaGF2ZSB0aGVpciBvd24gdXRpbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXRlcmF0b3JzCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybiBhIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvciBmb3IgdGhlIGdpdmVuIFN0cmluZy4KKyAgICAgKiBAc2VlIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvcgorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvciBnZXRDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IoU3RyaW5nIHNvdXJjZSkgCisgICAgeworICAgICAgICByZXR1cm4gbmV3IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvcihzb3VyY2UsIHRoaXMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvciBmb3IgdGhlIGdpdmVuIENoYXJhY3Rlckl0ZXJhdG9yLgorICAgICAqIFRoZSBzb3VyY2UgaXRlcmF0b3IncyBpbnRlZ3JpdHkgd2lsbCBiZSBwcmVzZXJ2ZWQgc2luY2UgYSBuZXcgY29weSAKKyAgICAgKiB3aWxsIGJlIGNyZWF0ZWQgZm9yIHVzZS4KKyAgICAgKiBAc2VlIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvcgorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvciBnZXRDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXJJdGVyYXRvciBzb3VyY2UpIAorICAgIHsJCisgICAgIAlDaGFyYWN0ZXJJdGVyYXRvciBuZXdzb3VyY2UgPSAoQ2hhcmFjdGVySXRlcmF0b3Ipc291cmNlLmNsb25lKCk7ICAgCisgICAgICAgIHJldHVybiBuZXcgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yKG5ld3NvdXJjZSwgdGhpcyk7CisgICAgfQorICAgIAorICAgIC8vIHB1YmxpYyBzZXR0ZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgSGlyYWdhbmEgUXVhdGVybmFyeSBtb2RlIHRvIGJlIG9uIG9yIG9mZi4KKyAgICAgKiBXaGVuIHRoZSBIaXJhZ2FuYSBRdWF0ZXJuYXJ5IG1vZGUgaXMgdHVybmVkIG9uLCB0aGUgY29sbGF0b3IgCisgICAgICogcG9zaXRpb25zIEhpcmFnYW5hIGNoYXJhY3RlcnMgYmVmb3JlIGFsbCBub24taWdub3JhYmxlIGNoYXJhY3RlcnMgaW4gCisgICAgICogUVVBVEVSTkFSWSBzdHJlbmd0aC4gVGhpcyBpcyB0byBwcm9kdWNlIGEgY29ycmVjdCBKSVMgY29sbGF0aW9uIG9yZGVyLAorICAgICAqIGRpc3Rpbmd1aXNoaW5nIGJldHdlZW4gS2F0YWthbmEgIGFuZCBIaXJhZ2FuYSBjaGFyYWN0ZXJzLiAKKyAgICAgKiBAcGFyYW0gZmxhZyB0cnVlIGlmIEhpcmFnYW5hIFF1YXRlcm5hcnkgbW9kZSBpcyB0byBiZSBvbiwgZmFsc2UgCisgICAgICogICAgICAgIG90aGVyd2lzZQorICAgICAqIEBzZWUgI3NldEhpcmFnYW5hUXVhdGVybmFyeURlZmF1bHQKKyAgICAgKiBAc2VlICNpc0hpcmFnYW5hUXVhdGVybmFyeQorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0SGlyYWdhbmFRdWF0ZXJuYXJ5KGJvb2xlYW4gZmxhZykKKyAgICB7CisJbV9pc0hpcmFnYW5hNF8gPSBmbGFnOwkKKyAgICB9CisJCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgSGlyYWdhbmEgUXVhdGVybmFyeSBtb2RlIHRvIHRoZSBpbml0aWFsIG1vZGUgc2V0IGR1cmluZyAKKyAgICAgKiBjb25zdHJ1Y3Rpb24gb2YgdGhlIFJ1bGVCYXNlZENvbGxhdG9yLgorICAgICAqIFNlZSBzZXRIaXJhZ2FuYVF1YXRlcm5hcnkoYm9vbGVhbikgZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgKiBAc2VlICNzZXRIaXJhZ2FuYVF1YXRlcm5hcnkoYm9vbGVhbikKKyAgICAgKiBAc2VlICNpc0hpcmFnYW5hUXVhdGVybmFyeQorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0SGlyYWdhbmFRdWF0ZXJuYXJ5RGVmYXVsdCgpCisgICAgeworCW1faXNIaXJhZ2FuYTRfID0gbV9kZWZhdWx0SXNIaXJhZ2FuYTRfOwkKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogU2V0cyB3aGV0aGVyIHVwcGVyY2FzZSBjaGFyYWN0ZXJzIHNvcnQgYmVmb3JlIGxvd2VyY2FzZQorICAgICAqIGNoYXJhY3RlcnMgb3IgdmljZSB2ZXJzYSwgaW4gc3RyZW5ndGggVEVSVElBUlkuIFRoZSBkZWZhdWx0IAorICAgICAqIG1vZGUgaXMgZmFsc2UsIGFuZCBzbyBsb3dlcmNhc2UgY2hhcmFjdGVycyBzb3J0IGJlZm9yZSB1cHBlcmNhc2UKKyAgICAgKiBjaGFyYWN0ZXJzLiAKKyAgICAgKiBJZiB0cnVlLCBzb3J0IHVwcGVyIGNhc2UgY2hhcmFjdGVycyBmaXJzdC4KKyAgICAgKiBAcGFyYW0gdXBwZXJmaXJzdCB0cnVlIHRvIHNvcnQgdXBwZXJjYXNlIGNoYXJhY3RlcnMgYmVmb3JlIAorICAgICAqICAgICAgICAgICAgICAgICAgIGxvd2VyY2FzZSBjaGFyYWN0ZXJzLCBmYWxzZSB0byBzb3J0IGxvd2VyY2FzZSAKKyAgICAgKiAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzIGJlZm9yZSB1cHBlcmNhc2UgY2hhcmFjdGVycyAKKyAgICAgKiBAc2VlICNpc0xvd2VyQ2FzZUZpcnN0CisgICAgICogQHNlZSAjaXNVcHBlckNhc2VGaXJzdAorICAgICAqIEBzZWUgI3NldExvd2VyQ2FzZUZpcnN0CisgICAgICogQHNlZSAjc2V0Q2FzZUZpcnN0RGVmYXVsdAorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0VXBwZXJDYXNlRmlyc3QoYm9vbGVhbiB1cHBlcmZpcnN0KQorICAgIHsKKyAgICAgICAgaWYgKHVwcGVyZmlyc3QpIHsKKyAgICAgICAgICAgIGlmKG1fY2FzZUZpcnN0XyAhPSBBdHRyaWJ1dGVWYWx1ZS5VUFBFUl9GSVJTVF8pIHsKKyAgICAgICAgICAgICAgICBsYXRpbk9uZVJlZ2VuVGFibGVfID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fY2FzZUZpcnN0XyA9IEF0dHJpYnV0ZVZhbHVlLlVQUEVSX0ZJUlNUXzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmKG1fY2FzZUZpcnN0XyAhPSBBdHRyaWJ1dGVWYWx1ZS5PRkZfKSB7CisgICAgICAgICAgICAgICAgbGF0aW5PbmVSZWdlblRhYmxlXyA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX2Nhc2VGaXJzdF8gPSBBdHRyaWJ1dGVWYWx1ZS5PRkZfOworICAgICAgICB9CisgICAgICAgIHVwZGF0ZUludGVybmFsU3RhdGUoKTsKKyAgICB9CisJCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgb3JkZXJzIG9mIGxvd2VyIGNhc2VkIGNoYXJhY3RlcnMgdG8gc29ydCBiZWZvcmUgdXBwZXIgY2FzZWQgCisgICAgICogY2hhcmFjdGVycywgaW4gc3RyZW5ndGggVEVSVElBUlkuIFRoZSBkZWZhdWx0IAorICAgICAqIG1vZGUgaXMgZmFsc2UuCisgICAgICogSWYgdHJ1ZSBpcyBzZXQsIHRoZSBSdWxlQmFzZWRDb2xsYXRvciB3aWxsIHNvcnQgbG93ZXIgY2FzZWQgY2hhcmFjdGVycyAKKyAgICAgKiBiZWZvcmUgdGhlIHVwcGVyIGNhc2VkIG9uZXMuCisgICAgICogT3RoZXJ3aXNlLCBpZiBmYWxzZSBpcyBzZXQsIHRoZSBSdWxlQmFzZWRDb2xsYXRvciB3aWxsIGlnbm9yZSBjYXNlIAorICAgICAqIHByZWZlcmVuY2VzLgorICAgICAqIEBwYXJhbSBsb3dlcmZpcnN0IHRydWUgZm9yIHNvcnRpbmcgbG93ZXIgY2FzZWQgY2hhcmFjdGVycyBiZWZvcmUgCisgICAgICogICAgICAgICAgICAgICAgICAgdXBwZXIgY2FzZWQgY2hhcmFjdGVycywgZmFsc2UgdG8gaWdub3JlIGNhc2UgCisgICAgICogICAgICAgICAgICAgICAgICAgcHJlZmVyZW5jZXMuIAorICAgICAqIEBzZWUgI2lzTG93ZXJDYXNlRmlyc3QKKyAgICAgKiBAc2VlICNpc1VwcGVyQ2FzZUZpcnN0CisgICAgICogQHNlZSAjc2V0VXBwZXJDYXNlRmlyc3QKKyAgICAgKiBAc2VlICNzZXRDYXNlRmlyc3REZWZhdWx0CisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRMb3dlckNhc2VGaXJzdChib29sZWFuIGxvd2VyZmlyc3QpCisgICAgeworICAJaWYgKGxvd2VyZmlyc3QpIHsKKyAgICAgICAgICAgIGlmKG1fY2FzZUZpcnN0XyAhPSBBdHRyaWJ1dGVWYWx1ZS5MT1dFUl9GSVJTVF8pIHsKKyAgICAgICAgICAgICAgICBsYXRpbk9uZVJlZ2VuVGFibGVfID0gdHJ1ZTsKKyAgICAgICAgICAgIH0gICAgICAgICAgICAKKyAgIAkJCW1fY2FzZUZpcnN0XyA9IEF0dHJpYnV0ZVZhbHVlLkxPV0VSX0ZJUlNUXzsKKyAgIAl9CisgICAJZWxzZSB7CisgICAgICAgICAgICBpZihtX2Nhc2VGaXJzdF8gIT0gQXR0cmlidXRlVmFsdWUuT0ZGXykgeworICAgICAgICAgICAgICAgIGxhdGluT25lUmVnZW5UYWJsZV8gPSB0cnVlOworICAgICAgICAgICAgfSAgICAgICAgICAgIAorICAgCSAgICBtX2Nhc2VGaXJzdF8gPSBBdHRyaWJ1dGVWYWx1ZS5PRkZfOworICAgIAl9CisgICAJdXBkYXRlSW50ZXJuYWxTdGF0ZSgpOworICAgIH0KKyAgIAkKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBjYXNlIGZpcnN0IG1vZGUgdG8gdGhlIGluaXRpYWwgbW9kZSBzZXQgZHVyaW5nIAorICAgICAqIGNvbnN0cnVjdGlvbiBvZiB0aGUgUnVsZUJhc2VkQ29sbGF0b3IuCisgICAgICogU2VlIHNldFVwcGVyQ2FzZUZpcnN0KGJvb2xlYW4pIGFuZCBzZXRMb3dlckNhc2VGaXJzdChib29sZWFuKSBmb3IgbW9yZSAKKyAgICAgKiBkZXRhaWxzLgorICAgICAqIEBzZWUgI2lzTG93ZXJDYXNlRmlyc3QKKyAgICAgKiBAc2VlICNpc1VwcGVyQ2FzZUZpcnN0CisgICAgICogQHNlZSAjc2V0TG93ZXJDYXNlRmlyc3QoYm9vbGVhbikKKyAgICAgKiBAc2VlICNzZXRVcHBlckNhc2VGaXJzdChib29sZWFuKQorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHZvaWQgc2V0Q2FzZUZpcnN0RGVmYXVsdCgpCisgICAgeworICAgICAgICBpZihtX2Nhc2VGaXJzdF8gIT0gbV9kZWZhdWx0Q2FzZUZpcnN0XykgeworICAgICAgICAgICAgbGF0aW5PbmVSZWdlblRhYmxlXyA9IHRydWU7CisgICAgICAgIH0gICAgICAgICAgICAKKwltX2Nhc2VGaXJzdF8gPSBtX2RlZmF1bHRDYXNlRmlyc3RfOworCXVwZGF0ZUludGVybmFsU3RhdGUoKTsKKyAgICB9CisgICAKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBhbHRlcm5hdGUgaGFuZGxpbmcgbW9kZSB0byB0aGUgaW5pdGlhbCBtb2RlIHNldCBkdXJpbmcgCisgICAgICogY29uc3RydWN0aW9uIG9mIHRoZSBSdWxlQmFzZWRDb2xsYXRvci4KKyAgICAgKiBTZWUgc2V0QWx0ZXJuYXRlSGFuZGxpbmcoYm9vbGVhbikgZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgKiBAc2VlICNzZXRBbHRlcm5hdGVIYW5kbGluZ1NoaWZ0ZWQoYm9vbGVhbikKKyAgICAgKiBAc2VlICNpc0FsdGVybmF0ZUhhbmRsaW5nU2hpZnRlZCgpCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRBbHRlcm5hdGVIYW5kbGluZ0RlZmF1bHQoKQorICAgIHsKKyAgICAJbV9pc0FsdGVybmF0ZUhhbmRsaW5nU2hpZnRlZF8gPSBtX2RlZmF1bHRJc0FsdGVybmF0ZUhhbmRsaW5nU2hpZnRlZF87CisgICAgCXVwZGF0ZUludGVybmFsU3RhdGUoKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgY2FzZSBsZXZlbCBtb2RlIHRvIHRoZSBpbml0aWFsIG1vZGUgc2V0IGR1cmluZyAKKyAgICAgKiBjb25zdHJ1Y3Rpb24gb2YgdGhlIFJ1bGVCYXNlZENvbGxhdG9yLgorICAgICAqIFNlZSBzZXRDYXNlTGV2ZWwoYm9vbGVhbikgZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgKiBAc2VlICNzZXRDYXNlTGV2ZWwoYm9vbGVhbikKKyAgICAgKiBAc2VlICNpc0Nhc2VMZXZlbAorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0Q2FzZUxldmVsRGVmYXVsdCgpCisgICAgeworICAgIAltX2lzQ2FzZUxldmVsXyA9IG1fZGVmYXVsdElzQ2FzZUxldmVsXzsKKyAgICAJdXBkYXRlSW50ZXJuYWxTdGF0ZSgpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBkZWNvbXBvc2l0aW9uIG1vZGUgdG8gdGhlIGluaXRpYWwgbW9kZSBzZXQgZHVyaW5nIGNvbnN0cnVjdGlvbgorICAgICAqIG9mIHRoZSBSdWxlQmFzZWRDb2xsYXRvci4KKyAgICAgKiBTZWUgc2V0RGVjb21wb3NpdGlvbihpbnQpIGZvciBtb3JlIGRldGFpbHMuCisgICAgICogQHNlZSAjZ2V0RGVjb21wb3NpdGlvbgorICAgICAqIEBzZWUgI3NldERlY29tcG9zaXRpb24oaW50KQorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0RGVjb21wb3NpdGlvbkRlZmF1bHQoKQorICAgIHsKKyAgICAJc2V0RGVjb21wb3NpdGlvbihtX2RlZmF1bHREZWNvbXBvc2l0aW9uXyk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFNldHMgdGhlIEZyZW5jaCBjb2xsYXRpb24gbW9kZSB0byB0aGUgaW5pdGlhbCBtb2RlIHNldCBkdXJpbmcgCisgICAgICogY29uc3RydWN0aW9uIG9mIHRoZSBSdWxlQmFzZWRDb2xsYXRvci4KKyAgICAgKiBTZWUgc2V0RnJlbmNoQ29sbGF0aW9uKGJvb2xlYW4pIGZvciBtb3JlIGRldGFpbHMuCisgICAgICogQHNlZSAjaXNGcmVuY2hDb2xsYXRpb24KKyAgICAgKiBAc2VlICNzZXRGcmVuY2hDb2xsYXRpb24oYm9vbGVhbikKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldEZyZW5jaENvbGxhdGlvbkRlZmF1bHQoKQorICAgIHsKKyAgICAgICAgaWYobV9pc0ZyZW5jaENvbGxhdGlvbl8gIT0gbV9kZWZhdWx0SXNGcmVuY2hDb2xsYXRpb25fKSB7CisgICAgICAgICAgICBsYXRpbk9uZVJlZ2VuVGFibGVfID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIAltX2lzRnJlbmNoQ29sbGF0aW9uXyA9IG1fZGVmYXVsdElzRnJlbmNoQ29sbGF0aW9uXzsKKyAgICAJdXBkYXRlSW50ZXJuYWxTdGF0ZSgpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBjb2xsYXRpb24gc3RyZW5ndGggdG8gdGhlIGluaXRpYWwgbW9kZSBzZXQgZHVyaW5nIHRoZSAKKyAgICAgKiBjb25zdHJ1Y3Rpb24gb2YgdGhlIFJ1bGVCYXNlZENvbGxhdG9yLgorICAgICAqIFNlZSBzZXRTdHJlbmd0aChpbnQpIGZvciBtb3JlIGRldGFpbHMuCisgICAgICogQHNlZSAjc2V0U3RyZW5ndGgoaW50KQorICAgICAqIEBzZWUgI2dldFN0cmVuZ3RoCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRTdHJlbmd0aERlZmF1bHQoKQorICAgIHsKKyAgICAJc2V0U3RyZW5ndGgobV9kZWZhdWx0U3RyZW5ndGhfKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgbW9kZSBmb3IgdGhlIGRpcmVjdGlvbiBvZiBTRUNPTkRBUlkgd2VpZ2h0cyB0byBiZSB1c2VkIGluIAorICAgICAqIEZyZW5jaCBjb2xsYXRpb24uCisgICAgICogVGhlIGRlZmF1bHQgdmFsdWUgaXMgZmFsc2UsIHdoaWNoIHRyZWF0cyBTRUNPTkRBUlkgd2VpZ2h0cyBpbiB0aGUgb3JkZXIgCisgICAgICogdGhleSBhcHBlYXIuCisgICAgICogSWYgc2V0IHRvIHRydWUsIHRoZSBTRUNPTkRBUlkgd2VpZ2h0cyB3aWxsIGJlIHNvcnRlZCBiYWNrd2FyZHMuCisgICAgICogU2VlIHRoZSBzZWN0aW9uIG9uIAorICAgICAqIDxhIGhyZWY9aHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2ljdS91c2VyZ3VpZGUvQ29sbGF0ZV9TZXJ2aWNlQXJjaGl0ZWN0dXJlLmh0bWw+CisgICAgICogRnJlbmNoIGNvbGxhdGlvbjwvYT4gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICogQHBhcmFtIGZsYWcgdHJ1ZSB0byBzZXQgdGhlIEZyZW5jaCBjb2xsYXRpb24gb24sIGZhbHNlIHRvIHNldCBpdCBvZmYKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqIEBzZWUgI2lzRnJlbmNoQ29sbGF0aW9uCisgICAgICogQHNlZSAjc2V0RnJlbmNoQ29sbGF0aW9uRGVmYXVsdAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldEZyZW5jaENvbGxhdGlvbihib29sZWFuIGZsYWcpIAorICAgIHsKKyAgICAgICAgaWYobV9pc0ZyZW5jaENvbGxhdGlvbl8gIT0gZmxhZykgeworICAgICAgICAgICAgbGF0aW5PbmVSZWdlblRhYmxlXyA9IHRydWU7CisgICAgICAgIH0KKyAgICAJbV9pc0ZyZW5jaENvbGxhdGlvbl8gPSBmbGFnOworICAgIAl1cGRhdGVJbnRlcm5hbFN0YXRlKCk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFNldHMgdGhlIGFsdGVybmF0ZSBoYW5kbGluZyBmb3IgUVVBVEVSTkFSWSBzdHJlbmd0aCB0byBiZSBlaXRoZXIgCisgICAgICogc2hpZnRlZCBvciBub24taWdub3JhYmxlLiAKKyAgICAgKiBTZWUgdGhlIFVDQSBkZWZpbml0aW9uIG9uIAorICAgICAqIDxhIGhyZWY9Imh0dHA6Ly93d3cudW5pY29kZS5vcmcvdW5pY29kZS9yZXBvcnRzL3RyMTAvI6czLjIuMiBWYXJpYWJsZSBDb2xsYXRpb24gRWxlbWVudHMiPgorICAgICAqIEFsdGVybmF0ZSBXZWlnaHRpbmc8L2E+LgorICAgICAqIFRoaXMgYXR0cmlidXRlIHdpbGwgb25seSBiZSBlZmZlY3RpdmUgd2hlbiBRVUFURVJOQVJZIHN0cmVuZ3RoIGlzIHNldC4KKyAgICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhpcyBtb2RlIGlzIGZhbHNlLCBjb3JyZXNwb25kaW5nIHRvIHRoZSAKKyAgICAgKiBOT05fSUdOT1JBQkxFIG1vZGUgaW4gVUNBLiBJbiB0aGUgTk9OLUlHTk9SQUJMRSBtb2RlLCB0aGUgCisgICAgICogUnVsZUJhc2VkQ29sbGF0b3Igd2lsbCB0cmVhdHMgYWxsIHRoZSBjb2RlcG9pbnRzIHdpdGggbm9uLWlnbm9yYWJsZSAKKyAgICAgKiBwcmltYXJ5IHdlaWdodHMgaW4gdGhlIHNhbWUgd2F5LiAKKyAgICAgKiBJZiB0aGUgbW9kZSBpcyBzZXQgdG8gdHJ1ZSwgdGhlIGJlaGF2aW91ciBjb3JyZXNwb25kcyB0byBTSElGVEVEIGRlZmluZWQKKyAgICAgKiBpbiBVQ0EsIHRoaXMgY2F1c2VzIGNvZGVwb2ludHMgd2l0aCBQUklNQVJZIG9yZGVycyB0aGF0IGFyZSBlcXVhbCBvciAKKyAgICAgKiBiZWxvdyB0aGUgdmFyaWFibGUgdG9wIHZhbHVlIHRvIGJlIGlnbm9yZWQgaW4gUFJJTUFSWSBvcmRlciBhbmQgCisgICAgICogbW92ZWQgdG8gdGhlIFFVQVRFUk5BUlkgb3JkZXIuCisgICAgICogQHBhcmFtIHNoaWZ0ZWQgdHJ1ZSBpZiBTSElGVEVEIGJlaGF2aW91ciBmb3IgYWx0ZXJuYXRlIGhhbmRsaW5nIGlzIAorICAgICAqICAgICAgICBkZXNpcmVkLCBmYWxzZSBmb3IgdGhlIE5PTl9JR05PUkFCTEUgYmVoYXZpb3VyLgorICAgICAqIEBzZWUgI2lzQWx0ZXJuYXRlSGFuZGxpbmdTaGlmdGVkCisgICAgICogQHNlZSAjc2V0QWx0ZXJuYXRlSGFuZGxpbmdEZWZhdWx0CisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRBbHRlcm5hdGVIYW5kbGluZ1NoaWZ0ZWQoYm9vbGVhbiBzaGlmdGVkKQorICAgIHsKKyAgICAJbV9pc0FsdGVybmF0ZUhhbmRsaW5nU2hpZnRlZF8gPSBzaGlmdGVkOworICAgIAl1cGRhdGVJbnRlcm5hbFN0YXRlKCk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIDxwPgorICAgICAqIFdoZW4gY2FzZSBsZXZlbCBpcyBzZXQgdG8gdHJ1ZSwgYW4gYWRkaXRpb25hbCB3ZWlnaHQgaXMgZm9ybWVkIAorICAgICAqIGJldHdlZW4gdGhlIFNFQ09OREFSWSBhbmQgVEVSVElBUlkgd2VpZ2h0LCBrbm93biBhcyB0aGUgY2FzZSBsZXZlbC4gCisgICAgICogVGhlIGNhc2UgbGV2ZWwgaXMgdXNlZCB0byBkaXN0aW5ndWlzaCBsYXJnZSBhbmQgc21hbGwgSmFwYW5lc2UgS2FuYSAKKyAgICAgKiBjaGFyYWN0ZXJzLiBDYXNlIGxldmVsIGNvdWxkIGFsc28gYmUgdXNlZCBpbiBvdGhlciBzaXR1YXRpb25zLiAKKyAgICAgKiBGb3IgZXhhbXBsZSB0byBkaXN0aW5ndWlzaCBjZXJ0YWluIFBpbnlpbiBjaGFyYWN0ZXJzLiAKKyAgICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBmYWxzZSwgd2hpY2ggbWVhbnMgdGhlIGNhc2UgbGV2ZWwgaXMgbm90IGdlbmVyYXRlZC4KKyAgICAgKiBUaGUgY29udGVudHMgb2YgdGhlIGNhc2UgbGV2ZWwgYXJlIGFmZmVjdGVkIGJ5IHRoZSBjYXNlIGZpcnN0CisgICAgICogbW9kZS4gQSBzaW1wbGUgd2F5IHRvIGlnbm9yZSBhY2NlbnQgZGlmZmVyZW5jZXMgaW4gYSBzdHJpbmcgaXMgdG8gc2V0IAorICAgICAqIHRoZSBzdHJlbmd0aCB0byBQUklNQVJZIGFuZCBlbmFibGUgY2FzZSBsZXZlbC4KKyAgICAgKiA8L3A+CisgICAgICogPHA+CisgICAgICogU2VlIHRoZSBzZWN0aW9uIG9uIAorICAgICAqIDxhIGhyZWY9aHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2ljdS91c2VyZ3VpZGUvQ29sbGF0ZV9TZXJ2aWNlQXJjaGl0ZWN0dXJlLmh0bWw+CisgICAgICogY2FzZSBsZXZlbDwvYT4gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICogPC9wPgorICAgICAqIEBwYXJhbSBmbGFnIHRydWUgaWYgY2FzZSBsZXZlbCBzb3J0aW5nIGlzIHJlcXVpcmVkLCBmYWxzZSBvdGhlcndpc2UKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqIEBzZWUgI3NldENhc2VMZXZlbERlZmF1bHQKKyAgICAgKiBAc2VlICNpc0Nhc2VMZXZlbAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldENhc2VMZXZlbChib29sZWFuIGZsYWcpIAorICAgIHsKKyAgICAJbV9pc0Nhc2VMZXZlbF8gPSBmbGFnOworICAgIAl1cGRhdGVJbnRlcm5hbFN0YXRlKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogPHA+CisgICAgICogU2V0cyB0aGlzIENvbGxhdG9yJ3Mgc3RyZW5ndGggcHJvcGVydHkuIFRoZSBzdHJlbmd0aCBwcm9wZXJ0eSAKKyAgICAgKiBkZXRlcm1pbmVzIHRoZSBtaW5pbXVtIGxldmVsIG9mIGRpZmZlcmVuY2UgY29uc2lkZXJlZCBzaWduaWZpY2FudCAKKyAgICAgKiBkdXJpbmcgY29tcGFyaXNvbi4KKyAgICAgKiA8L3A+CisgICAgICogPHA+U2VlIHRoZSBDb2xsYXRvciBjbGFzcyBkZXNjcmlwdGlvbiBmb3IgYW4gZXhhbXBsZSBvZiB1c2UuPC9wPgorICAgICAqIEBwYXJhbSB0aGUgbmV3IHN0cmVuZ3RoIHZhbHVlLgorICAgICAqIEBzZWUgI2dldFN0cmVuZ3RoCisgICAgICogQHNlZSAjc2V0U3RyZW5ndGhEZWZhdWx0CisgICAgICogQHNlZSAjUFJJTUFSWQorICAgICAqIEBzZWUgI1NFQ09OREFSWQorICAgICAqIEBzZWUgI1RFUlRJQVJZCisgICAgICogQHNlZSAjUVVBVEVSTkFSWQorICAgICAqIEBzZWUgI0lERU5USUNBTAorICAgICAqIEBleGNlcHRpb24gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIElmIHRoZSBuZXcgc3RyZW5ndGggdmFsdWUgaXMgbm90IG9uZSAKKyAgICAgKiAJCQkJb2YgUFJJTUFSWSwgU0VDT05EQVJZLCBURVJUSUFSWSwgUVVBVEVSTkFSWSBvciBJREVOVElDQUwuCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRTdHJlbmd0aChpbnQgbmV3U3RyZW5ndGgpIAorICAgIHsKKyAgICAgICAgc3VwZXIuc2V0U3RyZW5ndGgobmV3U3RyZW5ndGgpOworICAgICAgICB1cGRhdGVJbnRlcm5hbFN0YXRlKCk7CisgICAgfQorCisgICAgLy8gcHVibGljIGdldHRlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBjb2xsYXRpb24gcnVsZXMgZm9yIHRoaXMgUnVsZUJhc2VkQ29sbGF0b3IuICAgICAKKyAgICAgKiBAcmV0dXJuIHJldHVybnMgdGhlIGNvbGxhdGlvbiBydWxlcworICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIFN0cmluZyBnZXRSdWxlcygpCisgICAgeworICAgIAlyZXR1cm4gbV9ydWxlc187CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0IGFuIFVuaWNvZGVTZXQgdGhhdCBjb250YWlucyBhbGwgdGhlIGNoYXJhY3RlcnMgYW5kIHNlcXVlbmNlcyAKKyAgICAgKiB0YWlsb3JlZCBpbiB0aGlzIGNvbGxhdG9yLgorICAgICAqIEByZXR1cm4gYSBwb2ludGVyIHRvIGEgVW5pY29kZVNldCBvYmplY3QgY29udGFpbmluZyBhbGwgdGhlIAorICAgICAqICAgICAgICAgY29kZSBwb2ludHMgYW5kIHNlcXVlbmNlcyB0aGF0IG1heSBzb3J0IGRpZmZlcmVudGx5IHRoYW4KKyAgICAgKiAgICAgICAgIGluIHRoZSBVQ0EuIAorICAgICAqIEBleGNlcHRpb24gUGFyc2VFeGNlcHRpb24gdGhyb3duIHdoZW4gYXJndW1lbnQgcnVsZXMgaGF2ZSBhbiAKKyAgICAgKiAgICAgICAgICAgIGludmFsaWQgc3ludGF4LiBJT0V4Y2VwdGlvbiAKKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBVbmljb2RlU2V0IGdldFRhaWxvcmVkU2V0KCkKKyAgICB7CisgICAgICAgIHRyeSB7CisJICAgICAgIENvbGxhdGlvblJ1bGVQYXJzZXIgc3JjID0gbmV3IENvbGxhdGlvblJ1bGVQYXJzZXIoZ2V0UnVsZXMoKSk7CisJICAgICAgIHJldHVybiBzcmMuZ2V0VGFpbG9yZWRTZXQoKTsKKyAgICAgICAgfSBjYXRjaChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoIkEgdGFpbG9yaW5nIHJ1bGUgc2hvdWxkIG5vdCBoYXZlIGVycm9ycy4gU29tZXRoaW5nIGlzIHF1aXRlIHdyb25nISIpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogPHA+CisgICAgICogR2V0IGEgQ29sbGF0aW9uIGtleSBmb3IgdGhlIGFyZ3VtZW50IFN0cmluZyBzb3VyY2UgZnJvbSB0aGlzIAorICAgICAqIFJ1bGVCYXNlZENvbGxhdG9yLiAKKyAgICAgKiA8L3A+CisgICAgICogPHA+CisgICAgICogR2VuZXJhbCByZWNvbW1lbmRhdGlvbjogPGJyPgorICAgICAqIElmIGNvbXBhcmlzb24gYXJlIHRvIGJlIGRvbmUgdG8gdGhlIHNhbWUgU3RyaW5nIG11bHRpcGxlIHRpbWVzLCBpdCB3b3VsZAorICAgICAqIGJlIG1vcmUgZWZmaWNpZW50IHRvIGdlbmVyYXRlIENvbGxhdGlvbktleXMgZm9yIHRoZSBTdHJpbmdzIGFuZCB1c2UgCisgICAgICogQ29sbGF0aW9uS2V5LmNvbXBhcmVUbyhDb2xsYXRpb25LZXkpIGZvciB0aGUgY29tcGFyaXNvbnMuCisgICAgICogSWYgdGhlIGVhY2ggU3RyaW5ncyBhcmUgY29tcGFyZWQgdG8gb25seSBvbmNlLCB1c2luZyB0aGUgbWV0aG9kCisgICAgICogUnVsZUJhc2VkQ29sbGF0b3IuY29tcGFyZShTdHJpbmcsIFN0cmluZykgd2lsbCBoYXZlIGEgYmV0dGVyIHBlcmZvcm1hbmNlLgorICAgICAqIDwvcD4KKyAgICAgKiA8cD4KKyAgICAgKiBTZWUgdGhlIGNsYXNzIGRvY3VtZW50YXRpb24gZm9yIGFuIGV4cGxhbmF0aW9uIGFib3V0IENvbGxhdGlvbktleXMuCisgICAgICogPC9wPgorICAgICAqIEBwYXJhbSBzb3VyY2UgdGhlIHRleHQgU3RyaW5nIHRvIGJlIHRyYW5zZm9ybWVkIGludG8gYSBjb2xsYXRpb24ga2V5LgorICAgICAqIEByZXR1cm4gdGhlIENvbGxhdGlvbktleSBmb3IgdGhlIGdpdmVuIFN0cmluZyBiYXNlZCBvbiB0aGlzIAorICAgICAqICAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IncyBjb2xsYXRpb24gcnVsZXMuIElmIHRoZSBzb3VyY2UgU3RyaW5nIGlzIAorICAgICAqICAgICAgICAgbnVsbCwgYSBudWxsIENvbGxhdGlvbktleSBpcyByZXR1cm5lZC4KKyAgICAgKiBAc2VlIENvbGxhdGlvbktleQorICAgICAqIEBzZWUgI2NvbXBhcmUoU3RyaW5nLCBTdHJpbmcpCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgQ29sbGF0aW9uS2V5IGdldENvbGxhdGlvbktleShTdHJpbmcgc291cmNlKQorICAgIHsKKyAgICAJaWYgKHNvdXJjZSA9PSBudWxsKSB7CisgICAgCQlyZXR1cm4gbnVsbDsKKyAgICAJfQorICAgIAlpbnQgc3RyZW5ndGggPSBnZXRTdHJlbmd0aCgpOworICAgIAltX3V0aWxDb21wYXJlMF8gPSBtX2lzQ2FzZUxldmVsXzsKKyAgICAgICAgbV91dGlsQ29tcGFyZTFfID0gdHJ1ZTsKKyAgICAJbV91dGlsQ29tcGFyZTJfID0gc3RyZW5ndGggPj0gU0VDT05EQVJZOworICAgIAltX3V0aWxDb21wYXJlM18gPSBzdHJlbmd0aCA+PSBURVJUSUFSWTsKKyAgICAJbV91dGlsQ29tcGFyZTRfID0gc3RyZW5ndGggPj0gUVVBVEVSTkFSWTsKKwkJbV91dGlsQ29tcGFyZTVfID0gc3RyZW5ndGggPT0gSURFTlRJQ0FMOworCisJCW1fdXRpbEJ5dGVzQ291bnQwXyA9IDA7CisgICAgICAgIG1fdXRpbEJ5dGVzQ291bnQxXyA9IDA7CisgICAgICAgIG1fdXRpbEJ5dGVzQ291bnQyXyA9IDA7CisgICAgICAgIG1fdXRpbEJ5dGVzQ291bnQzXyA9IDA7CisgICAgICAgIG1fdXRpbEJ5dGVzQ291bnQ0XyA9IDA7CisgICAgICAgIG1fdXRpbEJ5dGVzQ291bnQ1XyA9IDA7CisgICAgCW1fdXRpbENvdW50MF8gPSAwOworICAgICAgICBtX3V0aWxDb3VudDFfID0gMDsKKyAgICAgICAgbV91dGlsQ291bnQyXyA9IDA7CisgICAgICAgIG1fdXRpbENvdW50M18gPSAwOworICAgICAgICBtX3V0aWxDb3VudDRfID0gMDsKKyAgICAgICAgbV91dGlsQ291bnQ1XyA9IDA7CisgICAgCWJvb2xlYW4gZG9GcmVuY2ggPSBtX2lzRnJlbmNoQ29sbGF0aW9uXyAmJiBtX3V0aWxDb21wYXJlMl87CisgICAgCS8vIFRPRE86IFVDT0xfQ09NTU9OX0JPVDQgc2hvdWxkIGJlIGEgZnVuY3Rpb24gb2YgcVNoaWZ0ZWQuIAorCSAgICAvLyBJZiB3ZSBoYXZlIG5vIHFTaGlmdGVkLCB3ZSBkb24ndCBuZWVkIHRvIHNldCBVQ09MX0NPTU1PTl9CT1Q0IHNvIAorCSAgICAvLyBoaWdoLgorICAgCQlpbnQgY29tbW9uQm90dG9tNCA9ICgobV92YXJpYWJsZVRvcFZhbHVlXyA+Pj4gOCkgKyAxKSAmIExBU1RfQllURV9NQVNLXzsKKyAgICAJYnl0ZSBoaXJhZ2FuYTQgPSAwOworICAgIAlpZiAobV9pc0hpcmFnYW5hNF8gJiYgbV91dGlsQ29tcGFyZTRfKSB7CisgICAgCQkvLyBhbGxvY2F0ZSBvbmUgbW9yZSBzcGFjZSBmb3IgaGlyYWdhbmEsIHZhbHVlIGZvciBoaXJhZ2FuYQorICAgICAgCQloaXJhZ2FuYTQgPSAoYnl0ZSljb21tb25Cb3R0b200OworICAgICAgCQljb21tb25Cb3R0b200ICsrOworICAgIAl9CisgICAgCQorICAgIAlpbnQgYm90dG9tQ291bnQ0ID0gMHhGRiAtIGNvbW1vbkJvdHRvbTQ7CisgICAgCS8vIElmIHdlIG5lZWQgdG8gbm9ybWFsaXplLCB3ZSdsbCBkbyBpdCBhbGwgYXQgb25jZSBhdCB0aGUgYmVnaW5uaW5nIQorICAgIAlpZiAobV91dGlsQ29tcGFyZTVfICYmIE5vcm1hbGl6ZXIucXVpY2tDaGVjayhzb3VyY2UsIE5vcm1hbGl6ZXIuTkZEKSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPSBOb3JtYWxpemVyLllFUykgeworICAgICAgICAgICAgLy8gaWYgaXQgaXMgaWRlbnRpY2FsIHN0cmVuZ3RoLCB3ZSBoYXZlIHRvIG5vcm1hbGl6ZSB0aGUgc3RyaW5nIHRvCisgICAgICAgICAgICAvLyBORkQgc28gdGhhdCBpdCB3aWxsIGJlIGFwcGVuZGVkIGNvcnJlY3RseSB0byB0aGUgZW5kIG9mIHRoZSBzb3J0CisgICAgICAgICAgICAvLyBrZXkKKyAgICAgICAgICAgIHNvdXJjZSA9IE5vcm1hbGl6ZXIuZGVjb21wb3NlKHNvdXJjZSwgZmFsc2UpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGdldERlY29tcG9zaXRpb24oKSAhPSBOT19ERUNPTVBPU0lUSU9OCisgICAgCQkmJiBOb3JtYWxpemVyLnF1aWNrQ2hlY2soc291cmNlLCBOb3JtYWxpemVyLkZDRCkgCisgICAgCQkJCQkJCQkJCQkJIT0gTm9ybWFsaXplci5ZRVMpIHsKKyAgICAgICAgICAgIC8vIGZvciB0aGUgcmVzdCBvZiB0aGUgc3RyZW5ndGgsIGlmIGRlY29tcG9zaXRpb24gaXMgb24sIEZDRCBpcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBlbm91Z2ggZm9yIHVzIHRvIHdvcmsgb24uCisgICAgICAgIAlzb3VyY2UgPSBOb3JtYWxpemVyLm5vcm1hbGl6ZShzb3VyY2UsTm9ybWFsaXplci5GQ0QpOworICAgIAl9CisJCWdldFNvcnRLZXlCeXRlcyhzb3VyY2UsIGRvRnJlbmNoLCBoaXJhZ2FuYTQsIGNvbW1vbkJvdHRvbTQsIAorICAgICAgICAgICAgICAgICAgICAgICAgYm90dG9tQ291bnQ0KTsKKwkJYnl0ZSBzb3J0a2V5W10gPSBnZXRTb3J0S2V5KHNvdXJjZSwgZG9GcmVuY2gsIGNvbW1vbkJvdHRvbTQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90dG9tQ291bnQ0KTsKKwkJcmV0dXJuIG5ldyBDb2xsYXRpb25LZXkoc291cmNlLCBzb3J0a2V5KTsKKyAgICB9CisgICAgCQkgICAgCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgYW4gdXBwZXJjYXNlIGNoYXJhY3RlciBpcyBzb3J0ZWQgYmVmb3JlIHRoZSBjb3JyZXNwb25kaW5nIGxvd2VyY2FzZSBjaGFyYWN0ZXIuCisgICAgICogU2VlIHNldENhc2VGaXJzdChib29sZWFuKSBmb3IgZGV0YWlscy4KKyAgICAgKiBAc2VlICNzZXRVcHBlckNhc2VGaXJzdAorICAgICAqIEBzZWUgI3NldExvd2VyQ2FzZUZpcnN0CisgICAgICogQHNlZSAjaXNMb3dlckNhc2VGaXJzdAorICAgICAqIEBzZWUgI3NldENhc2VGaXJzdERlZmF1bHQKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdXBwZXIgY2FzZWQgY2hhcmFjdGVycyBhcmUgc29ydGVkIGJlZm9yZSBsb3dlciBjYXNlZCAKKyAgICAgKiAgICAgICAgIGNoYXJhY3RlcnMsIGZhbHNlIG90aGVyd2lzZQorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgIHB1YmxpYyBib29sZWFuIGlzVXBwZXJDYXNlRmlyc3QoKQorICAgICB7CisgICAgICAgIHJldHVybiAobV9jYXNlRmlyc3RfID09IEF0dHJpYnV0ZVZhbHVlLlVQUEVSX0ZJUlNUXyk7CisgICAgIH0KKwkKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdHJ1ZSBpZiBhIGxvd2VyY2FzZSBjaGFyYWN0ZXIgaXMgc29ydGVkIGJlZm9yZSB0aGUgY29ycmVzcG9uZGluZyB1cHBlcmNhc2UgY2hhcmFjdGVyLgorICAgICAqIFNlZSBzZXRDYXNlRmlyc3QoYm9vbGVhbikgZm9yIGRldGFpbHMuCisgICAgICogQHNlZSAjc2V0VXBwZXJDYXNlRmlyc3QKKyAgICAgKiBAc2VlICNzZXRMb3dlckNhc2VGaXJzdAorICAgICAqIEBzZWUgI2lzVXBwZXJDYXNlRmlyc3QKKyAgICAgKiBAc2VlICNzZXRDYXNlRmlyc3REZWZhdWx0CisgICAgICogQHJldHVybiB0cnVlIGxvd2VyIGNhc2VkIGNoYXJhY3RlcnMgYXJlIHNvcnRlZCBiZWZvcmUgdXBwZXIgY2FzZWQgCisgICAgICogICAgICAgICBjaGFyYWN0ZXJzLCBmYWxzZSBvdGhlcndpc2UKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGlzTG93ZXJDYXNlRmlyc3QoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIChtX2Nhc2VGaXJzdF8gPT0gQXR0cmlidXRlVmFsdWUuTE9XRVJfRklSU1RfKTsJCisgICAgfQorCQorICAgIC8qKgorICAgICAqIENoZWNrcyBpZiB0aGUgYWx0ZXJuYXRlIGhhbmRsaW5nIGJlaGF2aW91ciBpcyB0aGUgVUNBIGRlZmluZWQgU0hJRlRFRCBvciAKKyAgICAgKiBOT05fSUdOT1JBQkxFLgorICAgICAqIElmIHJldHVybiB2YWx1ZSBpcyB0cnVlLCB0aGVuIHRoZSBhbHRlcm5hdGUgaGFuZGxpbmcgYXR0cmlidXRlIGZvciB0aGUgCisgICAgICogQ29sbGF0b3IgaXMgU0hJRlRFRC4gT3RoZXJ3aXNlIGlmIHJldHVybiB2YWx1ZSBpcyBmYWxzZSwgdGhlbiB0aGUgCisgICAgICogYWx0ZXJuYXRlIGhhbmRsaW5nIGF0dHJpYnV0ZSBmb3IgdGhlIENvbGxhdG9yIGlzIE5PTl9JR05PUkFCTEUKKyAgICAgKiBTZWUgc2V0QWx0ZXJuYXRlSGFuZGxpbmdTaGlmdGVkKGJvb2xlYW4pIGZvciBtb3JlIGRldGFpbHMuCisgICAgICogQHJldHVybiB0cnVlIG9yIGZhbHNlIAorICAgICAqIEBzZWUgI3NldEFsdGVybmF0ZUhhbmRsaW5nU2hpZnRlZChib29sZWFuKQorICAgICAqIEBzZWUgI3NldEFsdGVybmF0ZUhhbmRsaW5nRGVmYXVsdAorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNBbHRlcm5hdGVIYW5kbGluZ1NoaWZ0ZWQoKQorICAgIHsKKwlyZXR1cm4gbV9pc0FsdGVybmF0ZUhhbmRsaW5nU2hpZnRlZF87CisgICAgfQorCQorICAgIC8qKgorICAgICAqIENoZWNrcyBpZiBjYXNlIGxldmVsIGlzIHNldCB0byB0cnVlLgorICAgICAqIFNlZSBzZXRDYXNlTGV2ZWwoYm9vbGVhbikgZm9yIGRldGFpbHMuCisgICAgICogQHJldHVybiB0aGUgY2FzZSBsZXZlbCBtb2RlCisgICAgICogQHNlZSAjc2V0Q2FzZUxldmVsRGVmYXVsdAorICAgICAqIEBzZWUgI2lzQ2FzZUxldmVsCisgICAgICogQHNlZSAjc2V0Q2FzZUxldmVsKGJvb2xlYW4pCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc0Nhc2VMZXZlbCgpCisgICAgeworICAgICAgICByZXR1cm4gbV9pc0Nhc2VMZXZlbF87CQorICAgIH0KKwkKKyAgICAvKioKKyAgICAgKiBDaGVja3MgaWYgRnJlbmNoIENvbGxhdGlvbiBpcyBzZXQgdG8gdHJ1ZS4KKyAgICAgKiBTZWUgc2V0RnJlbmNoQ29sbGF0aW9uKGJvb2xlYW4pIGZvciBkZXRhaWxzLgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiBGcmVuY2ggQ29sbGF0aW9uIGlzIHNldCB0byB0cnVlLCBmYWxzZSBvdGhlcndpc2UKKyAgICAgKiBAc2VlICNzZXRGcmVuY2hDb2xsYXRpb24oYm9vbGVhbikKKyAgICAgKiBAc2VlICNzZXRGcmVuY2hDb2xsYXRpb25EZWZhdWx0CisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICAgcHVibGljIGJvb2xlYW4gaXNGcmVuY2hDb2xsYXRpb24oKQorICAgICB7CisgICAgICAgICByZXR1cm4gbV9pc0ZyZW5jaENvbGxhdGlvbl87CisgICAgIH0KKwkKKwkvKioKKwkgKiBDaGVja3MgaWYgdGhlIEhpcmFnYW5hIFF1YXRlcm5hcnkgbW9kZSBpcyBzZXQgb24uCisJICogU2VlIHNldEhpcmFnYW5hUXVhdGVybmFyeShib29sZWFuKSBmb3IgbW9yZSBkZXRhaWxzLgorCSAqIEByZXR1cm4gZmxhZyB0cnVlIGlmIEhpcmFnYW5hIFF1YXRlcm5hcnkgbW9kZSBpcyBvbiwgZmFsc2Ugb3RoZXJ3aXNlCisJICogQHNlZSAjc2V0SGlyYWdhbmFRdWF0ZXJuYXJ5RGVmYXVsdAorCSAqIEBzZWUgI3NldEhpcmFnYW5hUXVhdGVybmFyeShib29sZWFuKQorCSAqIEBkcmFmdCBJQ1UgMi4yCisJICovCisJcHVibGljIGJvb2xlYW4gaXNIaXJhZ2FuYVF1YXRlcm5hcnkoKQorCXsKKwkJcmV0dXJuIG1faXNIaXJhZ2FuYTRfOworCX0KKwkJCisJLy8gcHVibGljIG90aGVyIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogQ29tcGFyZXMgdGhlIGVxdWFsaXR5IG9mIHR3byBSdWxlQmFzZWRDb2xsYXRvciBvYmplY3RzLgorICAgICAqIFJ1bGVCYXNlZENvbGxhdG9yIG9iamVjdHMgYXJlIGVxdWFsIGlmIHRoZXkgaGF2ZSB0aGUgc2FtZSBjb2xsYXRpb24KKyAgICAgKiBydWxlcyBhbmQgdGhlIHNhbWUgYXR0cmlidXRlcy4KKyAgICAgKiBAcGFyYW0gb2JqIHRoZSBSdWxlQmFzZWRDb2xsYXRvciB0byBiZSBjb21wYXJlZCB0by4KKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhpcyBSdWxlQmFzZWRDb2xsYXRvciBoYXMgZXhhY3RseSB0aGUgc2FtZSAKKyAgICAgKiAgICAgICAgIGNvbGxhdGlvbiBiZWhhdmlvdXIgYXMgb2JqLCBmYWxzZSBvdGhlcndpc2UuCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG9iaikgCisgICAgeworICAgICAgICBpZiAob2JqID09IG51bGwpIHsKKyAgICAgICAgCXJldHVybiBmYWxzZTsgIC8vIHN1cGVyIGRvZXMgY2xhc3MgY2hlY2sKKyAgICAgICAgfQorICAgICAgICBpZiAodGhpcyA9PSBvYmopIHsKKyAgICAgICAgCXJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGlmIChnZXRDbGFzcygpICE9IG9iai5nZXRDbGFzcygpKSB7CisgICAgICAgIAlyZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3Igb3RoZXIgPSAoUnVsZUJhc2VkQ29sbGF0b3Ipb2JqOworICAgICAgICAvLyBhbGwgb3RoZXIgbm9uLXRyYW5zaWVudCBpbmZvcm1hdGlvbiBpcyBhbHNvIGNvbnRhaW5lZCBpbiBydWxlcy4KKyAgICAgICAgaWYgKGdldFN0cmVuZ3RoKCkgIT0gb3RoZXIuZ2V0U3RyZW5ndGgoKSAKKyAgICAgICAgICAgICAgIHx8IGdldERlY29tcG9zaXRpb24oKSAhPSBvdGhlci5nZXREZWNvbXBvc2l0aW9uKCkgCisgICAgICAgICAgICAgICB8fCBvdGhlci5tX2Nhc2VGaXJzdF8gIT0gbV9jYXNlRmlyc3RfCisgICAgICAgICAgICAgICB8fCBvdGhlci5tX2Nhc2VTd2l0Y2hfICE9IG1fY2FzZVN3aXRjaF8KKyAgICAgICAgICAgICAgIHx8IG90aGVyLm1faXNBbHRlcm5hdGVIYW5kbGluZ1NoaWZ0ZWRfIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIT0gbV9pc0FsdGVybmF0ZUhhbmRsaW5nU2hpZnRlZF8KKyAgICAgICAgICAgICAgIHx8IG90aGVyLm1faXNDYXNlTGV2ZWxfICE9IG1faXNDYXNlTGV2ZWxfCisgICAgICAgICAgICAgICB8fCBvdGhlci5tX2lzRnJlbmNoQ29sbGF0aW9uXyAhPSBtX2lzRnJlbmNoQ29sbGF0aW9uXworICAgICAgICAgICAgICAgfHwgb3RoZXIubV9pc0hpcmFnYW5hNF8gIT0gbV9pc0hpcmFnYW5hNF8pIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBib29sZWFuIHJ1bGVzID0gbV9ydWxlc18gPT0gb3RoZXIubV9ydWxlc187CisgICAgICAgIGlmICghcnVsZXMgJiYgKG1fcnVsZXNfICE9IG51bGwgJiYgb3RoZXIubV9ydWxlc18gIT0gbnVsbCkpIHsKKyAgICAgICAgICAgIHJ1bGVzID0gbV9ydWxlc18uZXF1YWxzKG90aGVyLm1fcnVsZXNfKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIXJ1bGVzIHx8ICFJQ1VEZWJ1Zy5lbmFibGVkKCJjb2xsYXRpb24iKSkgeworICAgICAgICAgICAgcmV0dXJuIHJ1bGVzOworICAgICAgICB9CisgICAgICAgIGlmIChtX2FkZGl0aW9uM18gIT0gb3RoZXIubV9hZGRpdGlvbjNfIAorICAgICAgICAgICAgICAgICAgfHwgbV9ib3R0b20zXyAhPSBvdGhlci5tX2JvdHRvbTNfIAorICAgICAgICAgICAgICAgICAgfHwgbV9ib3R0b21Db3VudDNfICE9IG90aGVyLm1fYm90dG9tQ291bnQzXyAKKyAgICAgICAgICAgICAgICAgIHx8IG1fY29tbW9uM18gIT0gb3RoZXIubV9jb21tb24zXyAKKyAgICAgICAgICAgICAgICAgIHx8IG1faXNTaW1wbGUzXyAhPSBvdGhlci5tX2lzU2ltcGxlM18KKyAgICAgICAgICAgICAgICAgIHx8IG1fbWFzazNfICE9IG90aGVyLm1fbWFzazNfCisgICAgICAgICAgICAgICAgICB8fCBtX21pbkNvbnRyYWN0aW9uRW5kXyAhPSBvdGhlci5tX21pbkNvbnRyYWN0aW9uRW5kXworICAgICAgICAgICAgICAgICAgfHwgbV9taW5VbnNhZmVfICE9IG90aGVyLm1fbWluVW5zYWZlXworICAgICAgICAgICAgICAgICAgfHwgbV90b3AzXyAhPSBvdGhlci5tX3RvcDNfCisgICAgICAgICAgICAgICAgICB8fCBtX3RvcENvdW50M18gIT0gb3RoZXIubV90b3BDb3VudDNfCisgICAgICAgICAgICAgICAgICB8fCAhQXJyYXlzLmVxdWFscyhtX3Vuc2FmZV8sIG90aGVyLm1fdW5zYWZlXykpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIW1fdHJpZV8uZXF1YWxzKG90aGVyLm1fdHJpZV8pKSB7CisgICAgICAgICAgICAvLyB3ZSBzaG91bGQgdXNlIHRoZSB0cmllIGl0ZXJhdG9yIGhlcmUsIGJ1dCB0aGVuIHRoaXMgcGFydCBpcyAKKyAgICAgICAgICAgIC8vIG9ubHkgdXNlZCBpbiB0aGUgdGVzdC4KKyAgICAgICAgICAgIGZvciAoaW50IGkgPSBVQ2hhcmFjdGVyLk1BWF9WQUxVRTsgaSA+PSBVQ2hhcmFjdGVyLk1JTl9WQUxVRTsgaSAtLSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpbnQgdiA9IG1fdHJpZV8uZ2V0Q29kZVBvaW50VmFsdWUoaSk7CisgICAgICAgICAgICAgICAgaW50IG90aGVydiA9IG90aGVyLm1fdHJpZV8uZ2V0Q29kZVBvaW50VmFsdWUoaSk7CisgICAgICAgICAgICAgICAgaWYgKHYgIT0gb3RoZXJ2KSB7CisgICAgICAgICAgICAgICAgICAgIGludCBtYXNrID0gdiAmIChDRV9UQUdfTUFTS18gfCBDRV9TUEVDSUFMX0ZMQUdfKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1hc2sgPT0gKG90aGVydiAmIDB4ZmYwMDAwMDApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2ICY9IDB4ZmZmZmZmOyAKKyAgICAgICAgICAgICAgICAgICAgICAgIG90aGVydiAmPSAweGZmZmZmZjsgCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWFzayA9PSAweGYxMDAwMDAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiAtPSAobV9leHBhbnNpb25PZmZzZXRfIDw8IDQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVydiAtPSAob3RoZXIubV9leHBhbnNpb25PZmZzZXRfIDw8IDQpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobWFzayA9PSAweGYyMDAwMDAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiAtPSBtX2NvbnRyYWN0aW9uT2Zmc2V0XzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlcnYgLT0gb3RoZXIubV9jb250cmFjdGlvbk9mZnNldF87CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodiA9PSBvdGhlcnYpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChBcnJheXMuZXF1YWxzKG1fY29udHJhY3Rpb25DRV8sIG90aGVyLm1fY29udHJhY3Rpb25DRV8pCisgICAgICAgICAgICAmJiBBcnJheXMuZXF1YWxzKG1fY29udHJhY3Rpb25FbmRfLCBvdGhlci5tX2NvbnRyYWN0aW9uRW5kXykKKyAgICAgICAgICAgICYmIEFycmF5cy5lcXVhbHMobV9jb250cmFjdGlvbkluZGV4Xywgb3RoZXIubV9jb250cmFjdGlvbkluZGV4XykKKyAgICAgICAgICAgICYmIEFycmF5cy5lcXVhbHMobV9leHBhbnNpb25fLCBvdGhlci5tX2V4cGFuc2lvbl8pCisgICAgICAgICAgICAmJiBBcnJheXMuZXF1YWxzKG1fZXhwYW5zaW9uRW5kQ0VfLCBvdGhlci5tX2V4cGFuc2lvbkVuZENFXykpIHsKKyAgICAgICAgICAgIC8vIG5vdCBjb21wYXJpbmcgcGFkZGluZ3MKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9leHBhbnNpb25FbmRDRV8ubGVuZ3RoOyBpICsrKSB7CisgICAgICAgICAgICAgICAgIGlmIChtX2V4cGFuc2lvbkVuZENFTWF4U2l6ZV9baV0gCisgICAgICAgICAgICAgICAgICAgICAhPSBvdGhlci5tX2V4cGFuc2lvbkVuZENFTWF4U2l6ZV9baV0pIHsKKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorCS8qKgorICAgICAqIEdlbmVyYXRlcyBhIHVuaXF1ZSBoYXNoIGNvZGUgZm9yIHRoaXMgUnVsZUJhc2VkQ29sbGF0b3IuCisgICAgICogQHJldHVybiB0aGUgdW5pcXVlIGhhc2ggY29kZSBmb3IgdGhpcyBDb2xsYXRvcgorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIGludCBoYXNoQ29kZSgpIAorICAgIHsKKyAgICAgICAgU3RyaW5nIHJ1bGVzID0gZ2V0UnVsZXMoKTsKKyAgICAgICAgaWYgKHJ1bGVzID09IG51bGwpIHsKKyAgICAgICAgICAgIHJ1bGVzID0gIiI7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJ1bGVzLmhhc2hDb2RlKCk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIENvbXBhcmVzIHRoZSBzb3VyY2UgdGV4dCBTdHJpbmcgdG8gdGhlIHRhcmdldCB0ZXh0IFN0cmluZyBhY2NvcmRpbmcgdG8gCisgICAgICogdGhlIGNvbGxhdGlvbiBydWxlcywgc3RyZW5ndGggYW5kIGRlY29tcG9zaXRpb24gbW9kZSBmb3IgdGhpcyAKKyAgICAgKiBSdWxlQmFzZWRDb2xsYXRvci4gCisgICAgICogUmV0dXJucyBhbiBpbnRlZ2VyIGxlc3MgdGhhbiwgCisgICAgICogZXF1YWwgdG8gb3IgZ3JlYXRlciB0aGFuIHplcm8gZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIHNvdXJjZSBTdHJpbmcgaXMgCisgICAgICogbGVzcyB0aGFuLCBlcXVhbCB0byBvciBncmVhdGVyIHRoYW4gdGhlIHRhcmdldCBTdHJpbmcuIFNlZSB0aGUgQ29sbGF0b3IKKyAgICAgKiBjbGFzcyBkZXNjcmlwdGlvbiBmb3IgYW4gZXhhbXBsZSBvZiB1c2UuCisgICAgICogPC9wPgorICAgICAqIDxwPgorICAgICAqIEdlbmVyYWwgcmVjb21tZW5kYXRpb246IDxicj4KKyAgICAgKiBJZiBjb21wYXJpc29uIGFyZSB0byBiZSBkb25lIHRvIHRoZSBzYW1lIFN0cmluZyBtdWx0aXBsZSB0aW1lcywgaXQgd291bGQKKyAgICAgKiBiZSBtb3JlIGVmZmljaWVudCB0byBnZW5lcmF0ZSBDb2xsYXRpb25LZXlzIGZvciB0aGUgU3RyaW5ncyBhbmQgdXNlIAorICAgICAqIENvbGxhdGlvbktleS5jb21wYXJlVG8oQ29sbGF0aW9uS2V5KSBmb3IgdGhlIGNvbXBhcmlzb25zLgorICAgICAqIElmIHRoZSBlYWNoIFN0cmluZ3MgYXJlIGNvbXBhcmVkIHRvIG9ubHkgb25jZSwgdXNpbmcgdGhlIG1ldGhvZAorICAgICAqIFJ1bGVCYXNlZENvbGxhdG9yLmNvbXBhcmUoU3RyaW5nLCBTdHJpbmcpIHdpbGwgaGF2ZSBhIGJldHRlciBwZXJmb3JtYW5jZS4KKyAgICAgKiA8L3A+CisgICAgICogQHBhcmFtIHNvdXJjZSB0aGUgc291cmNlIHRleHQgU3RyaW5nLgorICAgICAqIEBwYXJhbSB0YXJnZXQgdGhlIHRhcmdldCB0ZXh0IFN0cmluZy4KKyAgICAgKiBAcmV0dXJuIFJldHVybnMgYW4gaW50ZWdlciB2YWx1ZS4gVmFsdWUgaXMgbGVzcyB0aGFuIHplcm8gaWYgc291cmNlIGlzIAorICAgICAqICAgICAgICAgbGVzcyB0aGFuIHRhcmdldCwgdmFsdWUgaXMgemVybyBpZiBzb3VyY2UgYW5kIHRhcmdldCBhcmUgZXF1YWwsIAorICAgICAqICAgICAgICAgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIHplcm8gaWYgc291cmNlIGlzIGdyZWF0ZXIgdGhhbiB0YXJnZXQuCisgICAgICogQHNlZSBDb2xsYXRpb25LZXkKKyAgICAgKiBAc2VlICNnZXRDb2xsYXRpb25LZXkKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBpbnQgY29tcGFyZShTdHJpbmcgc291cmNlLCBTdHJpbmcgdGFyZ2V0KQorICAgIHsKKyAgICAJaWYgKHNvdXJjZSA9PSB0YXJnZXQpIHsKKwkgICAgICAgIHJldHVybiAwOworCSAgICB9CisJCisJCS8vIEZpbmQgdGhlIGxlbmd0aCBvZiBhbnkgbGVhZGluZyBwb3J0aW9uIHRoYXQgaXMgZXF1YWwKKwkJaW50IG9mZnNldCA9IGdldEZpcnN0VW5tYXRjaGVkT2Zmc2V0KHNvdXJjZSwgdGFyZ2V0KTsKKwkJaWYgKG9mZnNldCA9PSBzb3VyY2UubGVuZ3RoKCkpIHsKKwkJCWlmIChvZmZzZXQgPT0gdGFyZ2V0Lmxlbmd0aCgpIHx8IGNoZWNrSWdub3JhYmxlKHRhcmdldCwgb2Zmc2V0KSkgeworCQkJCXJldHVybiAwOworCQkJfQorCQkJcmV0dXJuIC0xOworCSAgICB9CisJICAgIGVsc2UgaWYgKHRhcmdldC5sZW5ndGgoKSA9PSBvZmZzZXQpIHsKKwkgICAgCWlmIChjaGVja0lnbm9yYWJsZShzb3VyY2UsIG9mZnNldCkpIHsKKwkgICAgCQlyZXR1cm4gMDsKKwkgICAgCX0KKwkgICAgCXJldHVybiAxOworCSAgICB9CisgICAgICAgIAorICAgICAgICAvL3JldHVybiBjb21wYXJlUmVndWxhcihzb3VyY2UsIHRhcmdldCwgb2Zmc2V0KTsKKyAgICAgICAgaWYobGF0aW5PbmVVc2VfKSB7CisgICAgICAgICAgaWYgKHNvdXJjZS5jaGFyQXQob2Zmc2V0KSA+IEVORE9GTEFUSU5PTkVSQU5HRV8gfHwgdGFyZ2V0LmNoYXJBdChvZmZzZXQpID4gRU5ET0ZMQVRJTk9ORVJBTkdFXykgeyAvLyBzb3VyY2Ugb3IgdGFyZ2V0IHN0YXJ0IHdpdGggbm9uLWxhdGluLTEKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlUmVndWxhcihzb3VyY2UsIHRhcmdldCwgb2Zmc2V0KTsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVVc2VMYXRpbjEoc291cmNlLCB0YXJnZXQsIG9mZnNldCk7CisgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHJldHVybiBjb21wYXJlUmVndWxhcihzb3VyY2UsIHRhcmdldCwgb2Zmc2V0KTsKKyAgICAgICAgfSAgICAgICAgCisgICAgfQorCisgICAgLy8gcGFja2FnZSBwcml2YXRlIGlubmVyIGludGVyZmFjZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvKioKKwkgKiBBdHRyaWJ1dGUgdmFsdWVzIHRvIGJlIHVzZWQgd2hlbiBzZXR0aW5nIHRoZSBDb2xsYXRvciBvcHRpb25zCisJICovCisJc3RhdGljIGludGVyZmFjZSBBdHRyaWJ1dGVWYWx1ZQorCXsKKwkJLyoqCisJCSAqIEluZGljYXRlcyB0aGF0IHRoZSBkZWZhdWx0IGF0dHJpYnV0ZSB2YWx1ZSB3aWxsIGJlIHVzZWQuIAorCQkgKiBTZWUgaW5kaXZpZHVhbCBhdHRyaWJ1dGUgZm9yIGRldGFpbHMgb24gaXRzIGRlZmF1bHQgdmFsdWUuIAorCQkgKi8KKwkJc3RhdGljIGZpbmFsIGludCBERUZBVUxUXyA9IC0xOworCQkvKiogCisJCSAqIFByaW1hcnkgY29sbGF0aW9uIHN0cmVuZ3RoIAorCQkgKi8KKwkJc3RhdGljIGZpbmFsIGludCBQUklNQVJZXyA9IENvbGxhdG9yLlBSSU1BUlk7CisJCS8qKiAKKwkJICogU2Vjb25kYXJ5IGNvbGxhdGlvbiBzdHJlbmd0aCAKKwkJICovCisJCXN0YXRpYyBmaW5hbCBpbnQgU0VDT05EQVJZXyA9IENvbGxhdG9yLlNFQ09OREFSWTsKKwkJLyoqIAorCQkgKiBUZXJ0aWFyeSBjb2xsYXRpb24gc3RyZW5ndGggCisJCSAqLworCQlzdGF0aWMgZmluYWwgaW50IFRFUlRJQVJZXyA9IENvbGxhdG9yLlRFUlRJQVJZOworCQkvKiogCisJCSAqIERlZmF1bHQgY29sbGF0aW9uIHN0cmVuZ3RoIAorCQkgKi8KKwkJc3RhdGljIGZpbmFsIGludCBERUZBVUxUX1NUUkVOR1RIXyA9IENvbGxhdG9yLlRFUlRJQVJZOworCQkvKioKKwkJICogSW50ZXJuYWwgdXNlIGZvciBzdHJlbmd0aCBjaGVja3MgaW4gQ29sbGF0aW9uIGVsZW1lbnRzCisJCSAqLworCQlzdGF0aWMgZmluYWwgaW50IENFX1NUUkVOR1RIX0xJTUlUXyA9IENvbGxhdG9yLlRFUlRJQVJZICsgMTsKKwkJLyoqIAorCQkgKiBRdWF0ZXJuYXJ5IGNvbGxhdGlvbiBzdHJlbmd0aCAKKwkJICovCisJCXN0YXRpYyBmaW5hbCBpbnQgUVVBVEVSTkFSWV8gPSAzOworCQkvKiogCisJCSAqIElkZW50aWNhbCBjb2xsYXRpb24gc3RyZW5ndGggCisJCSAqLworCQlzdGF0aWMgZmluYWwgaW50IElERU5USUNBTF8gPSBDb2xsYXRvci5JREVOVElDQUw7CisJCS8qKgorCQkgKiBJbnRlcm5hbCB1c2UgZm9yIHN0cmVuZ3RoIGNoZWNrcworCQkgKi8KKwkJc3RhdGljIGZpbmFsIGludCBTVFJFTkdUSF9MSU1JVF8gPSBDb2xsYXRvci5JREVOVElDQUwgKyAxOworCQkvKiogCisJCSAqIFR1cm4gdGhlIGZlYXR1cmUgb2ZmIC0gd29ya3MgZm9yIEZSRU5DSF9DT0xMQVRJT04sIENBU0VfTEVWRUwsIAorCQkgKiBISVJBR0FOQV9RVUFURVJOQVJZX01PREUgYW5kIERFQ09NUE9TSVRJT05fTU9ERQorCQkgKi8KKwkJc3RhdGljIGZpbmFsIGludCBPRkZfID0gMTY7CisJCS8qKiAKKwkJICogVHVybiB0aGUgZmVhdHVyZSBvbiAtIHdvcmtzIGZvciBGUkVOQ0hfQ09MTEFUSU9OLCBDQVNFX0xFVkVMLCAKKwkJICogSElSQUdBTkFfUVVBVEVSTkFSWV9NT0RFIGFuZCBERUNPTVBPU0lUSU9OX01PREUKKwkJICovCisJCXN0YXRpYyBmaW5hbCBpbnQgT05fID0gMTc7CisJCS8qKiAKKwkJICogVmFsaWQgZm9yIEFMVEVSTkFURV9IQU5ETElORy4gQWx0ZXJuYXRlIGhhbmRsaW5nIHdpbGwgYmUgc2hpZnRlZCAKKwkJICovCisJCXN0YXRpYyBmaW5hbCBpbnQgU0hJRlRFRF8gPSAyMDsKKwkJLyoqIAorCQkgKiBWYWxpZCBmb3IgQUxURVJOQVRFX0hBTkRMSU5HLiBBbHRlcm5hdGUgaGFuZGxpbmcgd2lsbCBiZSBub24gCisJCSAqIGlnbm9yYWJsZSAKKwkJICovCisJCXN0YXRpYyBmaW5hbCBpbnQgTk9OX0lHTk9SQUJMRV8gPSAyMTsKKwkJLyoqIAorCQkgKiBWYWxpZCBmb3IgQ0FTRV9GSVJTVCAtIGxvd2VyIGNhc2Ugc29ydHMgYmVmb3JlIHVwcGVyIGNhc2UgCisJCSAqLworCQlzdGF0aWMgZmluYWwgaW50IExPV0VSX0ZJUlNUXyA9IDI0OworCQkvKiogCisJCSAqIFVwcGVyIGNhc2Ugc29ydHMgYmVmb3JlIGxvd2VyIGNhc2UgCisJCSAqLworCQlzdGF0aWMgZmluYWwgaW50IFVQUEVSX0ZJUlNUXyA9IDI1OworCSAgICAvKioKKwkJICogTnVtYmVyIG9mIGF0dHJpYnV0ZSB2YWx1ZXMKKwkJICovCisJICAgIHN0YXRpYyBmaW5hbCBpbnQgTElNSVRfID0gMjk7CisJfTsKKwkgICAgCisJLyoqIAorCSAqIEF0dHJpYnV0ZXMgdGhhdCBjb2xsYXRpb24gc2VydmljZSB1bmRlcnN0YW5kcy4gQWxsIHRoZSBhdHRyaWJ1dGVzIGNhbiAKKwkgKiB0YWtlIERFRkFVTFQgdmFsdWUsIGFzIHdlbGwgYXMgdGhlIHZhbHVlcyBzcGVjaWZpYyB0byBlYWNoIG9uZS4gCisJICovCisJc3RhdGljIGludGVyZmFjZSBBdHRyaWJ1dGUgCisJeworCSAgICAvKiogCisJICAgICAqIEF0dHJpYnV0ZSBmb3IgZGlyZWN0aW9uIG9mIHNlY29uZGFyeSB3ZWlnaHRzIC0gdXNlZCBpbiBGcmVuY2guCisJICAgICAqIEFjY2VwdGFibGUgdmFsdWVzIGFyZSBPTiwgd2hpY2ggcmVzdWx0cyBpbiBzZWNvbmRhcnkgd2VpZ2h0cyBiZWluZyAKKwkgICAgICogY29uc2lkZXJlZCBiYWNrd2FyZHMgYW5kIE9GRiB3aGljaCB0cmVhdHMgc2Vjb25kYXJ5IHdlaWdodHMgaW4gdGhlIAorCSAgICAgKiBvcmRlciB0aGV5IGFwcGVhci4KKwkgICAgICovCisgICAgCXN0YXRpYyBmaW5hbCBpbnQgRlJFTkNIX0NPTExBVElPTl8gPSAwOyAKKwkgICAgLyoqIAorCSAgICAgKiBBdHRyaWJ1dGUgZm9yIGhhbmRsaW5nIHZhcmlhYmxlIGVsZW1lbnRzLiBBY2NlcHRhYmxlIHZhbHVlcyBhcmUgCisJICAgICAqIE5PTl9JR05PUkFCTEUgKGRlZmF1bHQpIHdoaWNoIHRyZWF0cyBhbGwgdGhlIGNvZGVwb2ludHMgd2l0aCAKKwkgICAgICogbm9uLWlnbm9yYWJsZSBwcmltYXJ5IHdlaWdodHMgaW4gdGhlIHNhbWUgd2F5LCBhbmQgU0hJRlRFRCB3aGljaCAKKwkgICAgICogY2F1c2VzIGNvZGVwb2ludHMgd2l0aCBwcmltYXJ5IHdlaWdodHMgdGhhdCBhcmUgZXF1YWwgb3IgYmVsb3cgdGhlIAorCSAgICAgKiB2YXJpYWJsZSB0b3AgdmFsdWUgdG8gYmUgaWdub3JlZCBvbiBwcmltYXJ5IGxldmVsIGFuZCBtb3ZlZCB0byB0aGUgCisJICAgICAqIHF1YXRlcm5hcnkgbGV2ZWwuCisJICAgICAqLworCSAgICBzdGF0aWMgZmluYWwgaW50IEFMVEVSTkFURV9IQU5ETElOR18gPSAxOworCSAgICAvKiogCisJICAgICAqIENvbnRyb2xzIHRoZSBvcmRlcmluZyBvZiB1cHBlciBhbmQgbG93ZXIgY2FzZSBsZXR0ZXJzLiBBY2NlcHRhYmxlIAorCSAgICAgKiB2YWx1ZXMgYXJlIE9GRiAoZGVmYXVsdCksIHdoaWNoIG9yZGVycyB1cHBlciBhbmQgbG93ZXIgY2FzZSBsZXR0ZXJzIAorCSAgICAgKiBpbiBhY2NvcmRhbmNlIHRvIHRoZWlyIHRlcnRpYXJ5IHdlaWdodHMsIFVQUEVSX0ZJUlNUIHdoaWNoIGZvcmNlcyAKKwkgICAgICogdXBwZXIgY2FzZSBsZXR0ZXJzIHRvIHNvcnQgYmVmb3JlIGxvd2VyIGNhc2UgbGV0dGVycywgYW5kIAorCSAgICAgKiBMT1dFUl9GSVJTVCB3aGljaCBkb2VzIHRoZSBvcHBvc2l0ZS4gCisJICAgICAqLworCSAgICBzdGF0aWMgZmluYWwgaW50IENBU0VfRklSU1RfID0gMjsKKwkgICAgLyoqIAorCSAgICAgKiBDb250cm9scyB3aGV0aGVyIGFuIGV4dHJhIGNhc2UgbGV2ZWwgKHBvc2l0aW9uZWQgYmVmb3JlIHRoZSB0aGlyZCAKKwkgICAgICogbGV2ZWwpIGlzIGdlbmVyYXRlZCBvciBub3QuIEFjY2VwdGFibGUgdmFsdWVzIGFyZSBPRkYgKGRlZmF1bHQpLAorCSAgICAgKiB3aGVuIGNhc2UgbGV2ZWwgaXMgbm90IGdlbmVyYXRlZCwgYW5kIE9OIHdoaWNoIGNhdXNlcyB0aGUgY2FzZQorCSAgICAgKiBsZXZlbCB0byBiZSBnZW5lcmF0ZWQuIENvbnRlbnRzIG9mIHRoZSBjYXNlIGxldmVsIGFyZSBhZmZlY3RlZCBieQorCSAgICAgKiB0aGUgdmFsdWUgb2YgQ0FTRV9GSVJTVCBhdHRyaWJ1dGUuIEEgc2ltcGxlIHdheSB0byBpZ25vcmUgYWNjZW50IAorCSAgICAgKiBkaWZmZXJlbmNlcyBpbiBhIHN0cmluZyBpcyB0byBzZXQgdGhlIHN0cmVuZ3RoIHRvIFBSSU1BUlkgYW5kIAorCSAgICAgKiBlbmFibGUgY2FzZSBsZXZlbC4gCisJICAgICAqLworCSAgICBzdGF0aWMgZmluYWwgaW50IENBU0VfTEVWRUxfID0gMzsKKwkgICAgLyoqIAorCSAgICAgKiBDb250cm9scyB3aGV0aGVyIHRoZSBub3JtYWxpemF0aW9uIGNoZWNrIGFuZCBuZWNlc3NhcnkgCisJICAgICAqIG5vcm1hbGl6YXRpb25zIGFyZSBwZXJmb3JtZWQuIFdoZW4gc2V0IHRvIE9GRiAoZGVmYXVsdCkgbm8gCisJICAgICAqIG5vcm1hbGl6YXRpb24gY2hlY2sgaXMgcGVyZm9ybWVkLiBUaGUgY29ycmVjdG5lc3Mgb2YgdGhlIHJlc3VsdCBpcyAKKwkgICAgICogZ3VhcmFudGVlZCBvbmx5IGlmIHRoZSBpbnB1dCBkYXRhIGlzIGluIHNvLWNhbGxlZCBGQ0QgZm9ybSAoc2VlIAorCSAgICAgKiB1c2VycyBtYW51YWwgZm9yIG1vcmUgaW5mbykuIFdoZW4gc2V0IHRvIE9OLCBhbiBpbmNyZW1lbnRhbCBjaGVjayAKKwkgICAgICogaXMgcGVyZm9ybWVkIHRvIHNlZSB3aGV0aGVyIHRoZSBpbnB1dCBkYXRhIGlzIGluIHRoZSBGQ0QgZm9ybS4gSWYgCisJICAgICAqIHRoZSBkYXRhIGlzIG5vdCBpbiB0aGUgRkNEIGZvcm0sIGluY3JlbWVudGFsIE5GRCBub3JtYWxpemF0aW9uIGlzIAorCSAgICAgKiBwZXJmb3JtZWQuIAorCSAgICAgKi8KKwkgICAgc3RhdGljIGZpbmFsIGludCBOT1JNQUxJWkFUSU9OX01PREVfID0gNDsgCisJICAgIC8qKiAKKwkgICAgICogVGhlIHN0cmVuZ3RoIGF0dHJpYnV0ZS4gQ2FuIGJlIGVpdGhlciBQUklNQVJZLCBTRUNPTkRBUlksIFRFUlRJQVJZLCAKKwkgICAgICogUVVBVEVSTkFSWSBvciBJREVOVElDQUwuIFRoZSB1c3VhbCBzdHJlbmd0aCBmb3IgbW9zdCBsb2NhbGVzIAorCSAgICAgKiAoZXhjZXB0IEphcGFuZXNlKSBpcyB0ZXJ0aWFyeS4gUXVhdGVybmFyeSBzdHJlbmd0aCBpcyB1c2VmdWwgd2hlbiAKKwkgICAgICogY29tYmluZWQgd2l0aCBzaGlmdGVkIHNldHRpbmcgZm9yIGFsdGVybmF0ZSBoYW5kbGluZyBhdHRyaWJ1dGUgYW5kIAorCSAgICAgKiBmb3IgSklTIHggNDA2MSBjb2xsYXRpb24sIHdoZW4gaXQgaXMgdXNlZCB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIAorCSAgICAgKiBLYXRha2FuYSAgYW5kIEhpcmFnYW5hICh0aGlzIGlzIGFjaGlldmVkIGJ5IHNldHRpbmcgdGhlIAorCSAgICAgKiBISVJBR0FOQV9RVUFURVJOQVJZIG1vZGUgdG8gb24uIE90aGVyd2lzZSwgcXVhdGVybmFyeSBsZXZlbCBpcyAKKyAgICAgICAgICogYWZmZWN0ZWQgb25seSBieSB0aGUgbnVtYmVyIG9mIG5vbiBpZ25vcmFibGUgY29kZSBwb2ludHMgaW4gdGhlIAorCSAgICAgKiBzdHJpbmcuIElkZW50aWNhbCBzdHJlbmd0aCBpcyByYXJlbHkgdXNlZnVsLCBhcyBpdCBhbW91bnRzIHRvIAorCSAgICAgKiBjb2RlcG9pbnRzIG9mIHRoZSBORkQgZm9ybSBvZiB0aGUgc3RyaW5nLiAKKwkgICAgICovCisJICAgIHN0YXRpYyBmaW5hbCBpbnQgU1RSRU5HVEhfID0gNTsKKwkgICAgLyoqIAorCSAgICAgKiBXaGVuIHR1cm5lZCBvbiwgdGhpcyBhdHRyaWJ1dGUgcG9zaXRpb25zIEhpcmFnYW5hIGJlZm9yZSBhbGwgIAorCSAgICAgKiBub24taWdub3JhYmxlcyBvbiBxdWF0ZXJuYXJ5IGxldmVsLiBUaGlzIGlzIGEgc25lYWt5IHdheSB0byBwcm9kdWNlIAorCSAgICAgKiBKSVMgc29ydCBvcmRlci4gCisJICAgICAqLyAgICAgCisJICAgIHN0YXRpYyBmaW5hbCBpbnQgSElSQUdBTkFfUVVBVEVSTkFSWV9NT0RFXyA9IDY7CisgICAgICAgIC8qKgorCSAgICAgKiBBdHRyaWJ1dGUgY291bnQKKwkgICAgICovCisJICAgIHN0YXRpYyBmaW5hbCBpbnQgTElNSVRfID0gNzsKKwl9OworCQorCS8qKgorICAgICAqIERhdGFNYW5pcHVsYXRlIHNpbmdsZXRvbgorICAgICAqLworICAgIHN0YXRpYyBjbGFzcyBEYXRhTWFuaXB1bGF0ZSBpbXBsZW1lbnRzIFRyaWUuRGF0YU1hbmlwdWxhdGUKKyAgICB7CisgICAgCS8vIHB1YmxpYyBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAJCisgICAgCS8qKgorCSAgICAgKiBJbnRlcm5hbCBtZXRob2QgY2FsbGVkIHRvIHBhcnNlIGEgbGVhZCBzdXJyb2dhdGUncyBjZSBmb3IgdGhlIG9mZnNldAorCSAgICAgKiB0byB0aGUgbmV4dCB0cmFpbCBzdXJyb2dhdGUgZGF0YS4KKwkgICAgICogQHBhcmFtIGNlIGNvbGxhdGlvbiBlbGVtZW50IG9mIHRoZSBsZWFkIHN1cnJvZ2F0ZQorCSAgICAgKiBAcmV0dXJuIGRhdGEgb2Zmc2V0IG9yIDAgZm9yIHRoZSBuZXh0IHRyYWlsIHN1cnJvZ2F0ZQorCSAgICAgKiBAZHJhZnQgMi4yCisJICAgICAqLworCSAgICBwdWJsaWMgZmluYWwgaW50IGdldEZvbGRpbmdPZmZzZXQoaW50IGNlKQorCSAgICB7CisJICAgIAlpZiAoaXNTcGVjaWFsKGNlKSAmJiBnZXRUYWcoY2UpID09IENFX1NVUlJPR0FURV9UQUdfKSB7CisJICAgIAkJcmV0dXJuIChjZSAmIDB4RkZGRkZGKTsKKwkgICAgCX0KKwkgICAgCXJldHVybiAwOworCSAgICB9IAorCSAgICAKKwkgICAgLyoqCisJICAgICAqIEdldCBzaW5nbGV0b24gb2JqZWN0CisJICAgICAqLworCSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIERhdGFNYW5pcHVsYXRlIGdldEluc3RhbmNlKCkKKwkgICAgeworCSAgICAJaWYgKG1faW5zdGFuY2VfID09IG51bGwpIHsKKwkgICAgCQltX2luc3RhbmNlXyA9ICBuZXcgRGF0YU1hbmlwdWxhdGUoKTsKKwkgICAgCX0KKwkgICAgCXJldHVybiBtX2luc3RhbmNlXzsKKwkgICAgfQorCSAgICAKKwkgICAgLy8gcHJpdmF0ZSBkYXRhIG1lbWJlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJICAgIAorCSAgICAvKioKKwkgICAgICogU2luZ2xldG9uIGluc3RhbmNlCisJICAgICAqLworCSAgICBwcml2YXRlIHN0YXRpYyBEYXRhTWFuaXB1bGF0ZSBtX2luc3RhbmNlXzsKKwkgICAgCisJICAgIC8vIHByaXZhdGUgY29uc3RydWN0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCSAgICAKKwkgICAgLyoqCisJICAgICAqIHByaXZhdGUgdG8gcHJldmVudCBpbml0aWFsaXphdGlvbgorCSAgICAgKi8KKwkgICAgcHJpdmF0ZSBEYXRhTWFuaXB1bGF0ZSgpCisJICAgIHsKKwkgICAgfQorICAgIH07CisgICAgCisgICAgLyoqCisgICAgICogVUNBQ29uc3RhbnRzCisgICAgICovCisgICAgc3RhdGljIGZpbmFsIGNsYXNzIFVDQUNvbnN0YW50cworICAgIHsKKyAgICAgICAgIGludCBGSVJTVF9URVJUSUFSWV9JR05PUkFCTEVfW10gPSBuZXcgaW50WzJdOyAgICAgICAvLyAweDAwMDAwMDAwIAorICAgICAgICAgaW50IExBU1RfVEVSVElBUllfSUdOT1JBQkxFX1tdID0gbmV3IGludFsyXTsgICAgICAgIC8vIDB4MDAwMDAwMDAgCisgICAgICAgICBpbnQgRklSU1RfUFJJTUFSWV9JR05PUkFCTEVfW10gPSBuZXcgaW50WzJdOyAgICAgICAgLy8gMHgwMDAwODcwNSAKKyAgICAgICAgIGludCBGSVJTVF9TRUNPTkRBUllfSUdOT1JBQkxFX1tdID0gbmV3IGludFsyXTsgICAgICAvLyAweDAwMDAwMDAwIAorICAgICAgICAgaW50IExBU1RfU0VDT05EQVJZX0lHTk9SQUJMRV9bXSA9IG5ldyBpbnRbMl07ICAgICAgIC8vIDB4MDAwMDA1MDAgCisgICAgICAgICBpbnQgTEFTVF9QUklNQVJZX0lHTk9SQUJMRV9bXSA9IG5ldyBpbnRbMl07ICAgICAgICAgLy8gMHgwMDAwREQwNSAKKyAgICAgICAgIGludCBGSVJTVF9WQVJJQUJMRV9bXSA9IG5ldyBpbnRbMl07ICAgICAgICAgICAgICAgICAvLyAweDA1MDcwNTA1IAorICAgICAgICAgaW50IExBU1RfVkFSSUFCTEVfW10gPSBuZXcgaW50WzJdOyAgICAgICAgICAgICAgICAgIC8vIDB4MTNDRjA1MDUgCisgICAgICAgICBpbnQgRklSU1RfTk9OX1ZBUklBQkxFX1tdID0gbmV3IGludFsyXTsgICAgICAgICAgICAgLy8gMHgxNjIwMDUwNSAKKyAgICAgICAgIGludCBMQVNUX05PTl9WQVJJQUJMRV9bXSA9IG5ldyBpbnRbMl07ICAgICAgICAgICAgICAvLyAweDc2N0MwNTA1IAorICAgICAgICAgaW50IFJFU0VUX1RPUF9WQUxVRV9bXSA9IG5ldyBpbnRbMl07ICAgICAgICAgICAgICAgIC8vIDB4OUYwMDAzMDMgCisgICAgICAgICBpbnQgRklSU1RfSU1QTElDSVRfW10gPSBuZXcgaW50WzJdOyAKKyAgICAgICAgIGludCBMQVNUX0lNUExJQ0lUX1tdID0gbmV3IGludFsyXTsgIAorICAgICAgICAgaW50IEZJUlNUX1RSQUlMSU5HX1tdID0gbmV3IGludFsyXTsgCisgICAgICAgICBpbnQgTEFTVF9UUkFJTElOR19bXSA9IG5ldyBpbnRbMl07ICAKKyAgICAgICAgIGludCBQUklNQVJZX1RPUF9NSU5fOyAKKyAgICAgICAgIGludCBQUklNQVJZX0lNUExJQ0lUX01JTl87IC8vIDB4RTgwMDAwMDAgCisgICAgICAgICBpbnQgUFJJTUFSWV9JTVBMSUNJVF9NQVhfOyAvLyAweEYwMDAwMDAwIAorICAgICAgICAgaW50IFBSSU1BUllfVFJBSUxJTkdfTUlOXzsgLy8gMHhFODAwMDAwMCAKKyAgICAgICAgIGludCBQUklNQVJZX1RSQUlMSU5HX01BWF87IC8vIDB4RjAwMDAwMDAgCisgICAgICAgICBpbnQgUFJJTUFSWV9TUEVDSUFMX01JTl87IC8vIDB4RTgwMDAwMDAgCisgICAgICAgICBpbnQgUFJJTUFSWV9TUEVDSUFMX01BWF87IC8vIDB4RjAwMDAwMDAgCisgICAgfQorICAgIAorICAgIC8vIHBhY2thZ2UgcHJpdmF0ZSBkYXRhIG1lbWJlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgc3RhdGljIGZpbmFsIGJ5dGUgQllURV9GSVJTVF9UQUlMT1JFRF8gPSAoYnl0ZSkweDA0OworICAgIHN0YXRpYyBmaW5hbCBieXRlIEJZVEVfQ09NTU9OXyA9IChieXRlKTB4MDU7CisgICAgc3RhdGljIGZpbmFsIGludCBDT01NT05fVE9QXzJfID0gMHg4NjsgLy8gaW50IGZvciB1bnNpZ25lc3MKKyAgICBzdGF0aWMgZmluYWwgaW50IENPTU1PTl9CT1RUT01fMl8gPSBCWVRFX0NPTU1PTl87CisgICAgLyoqCisJICogQ2FzZSBzdHJlbmd0aCBtYXNrCisJICovCisJc3RhdGljIGZpbmFsIGludCBDRV9DQVNFX0JJVF9NQVNLXyA9IDB4QzA7CisJc3RhdGljIGZpbmFsIGludCBDRV9UQUdfU0hJRlRfID0gMjQ7CisJc3RhdGljIGZpbmFsIGludCBDRV9UQUdfTUFTS18gPSAweDBGMDAwMDAwOworCQorCXN0YXRpYyBmaW5hbCBpbnQgQ0VfU1BFQ0lBTF9GTEFHXyA9IDB4RjAwMDAwMDA7CisgICAgLyoqIAorICAgICAqIExlYWQgc3Vycm9nYXRlIHRoYXQgaXMgdGFpbG9yZWQgYW5kIGRvZXNuJ3Qgc3RhcnQgYSBjb250cmFjdGlvbiAKKyAgICAgKi8KKyAgICBzdGF0aWMgZmluYWwgaW50IENFX1NVUlJPR0FURV9UQUdfID0gNTsgIAorCS8qKgorICAJICogTWFzayB0byBnZXQgdGhlIHByaW1hcnkgc3RyZW5ndGggb2YgdGhlIGNvbGxhdGlvbiBlbGVtZW50CisgIAkgKi8KKyAgCXN0YXRpYyBmaW5hbCBpbnQgQ0VfUFJJTUFSWV9NQVNLXyA9IDB4RkZGRjAwMDA7CisgIAkvKioKKyAgCSAqIE1hc2sgdG8gZ2V0IHRoZSBzZWNvbmRhcnkgc3RyZW5ndGggb2YgdGhlIGNvbGxhdGlvbiBlbGVtZW50CisgIAkgKi8KKyAgIAlzdGF0aWMgZmluYWwgaW50IENFX1NFQ09OREFSWV9NQVNLXyA9IDB4RkYwMDsKKyAgIAkvKioKKyAgCSAqIE1hc2sgdG8gZ2V0IHRoZSB0ZXJ0aWFyeSBzdHJlbmd0aCBvZiB0aGUgY29sbGF0aW9uIGVsZW1lbnQKKyAgCSAqLworICAgCXN0YXRpYyBmaW5hbCBpbnQgQ0VfVEVSVElBUllfTUFTS18gPSAweEZGOworICAgCS8qKgorICAgCSAqIFByaW1hcnkgc3RyZW5ndGggc2hpZnQgCisgICAJICovCisJc3RhdGljIGZpbmFsIGludCBDRV9QUklNQVJZX1NISUZUXyA9IDE2OworCS8qKiAKKwkgKiBTZWNvbmRhcnkgc3RyZW5ndGggc2hpZnQgCisJICovCisJc3RhdGljIGZpbmFsIGludCBDRV9TRUNPTkRBUllfU0hJRlRfID0gODsKKyAgIAkvKioKKyAgIAkgKiBDb250aW51YXRpb24gbWFya2VyCisgICAJICovCisgICAJc3RhdGljIGZpbmFsIGludCBDRV9DT05USU5VQVRJT05fTUFSS0VSXyA9IDB4QzA7CisgICAJCisgICAJLyoqCisJICogU2l6ZSBvZiBjb2xsYXRvciByYXcgZGF0YSBoZWFkZXJzIGFuZCBvcHRpb25zIGJlZm9yZSB0aGUgZXhwYW5zaW9uCisJICogZGF0YS4gVGhpcyBpcyB1c2VkIHdoZW4gZXhwYW5zaW9uIGNlcyBhcmUgdG8gYmUgcmV0cmlldmVkLiBJQ1U0QyB1c2VzCisJICogdGhlIGV4cGFuc2lvbiBvZmZzZXQgc3RhcnRpbmcgZnJvbSBVQ29sbGF0b3IuVUNvbEhlYWRlciwgaGVuY2UgSUNVNEoKKwkgKiB3aWxsIGhhdmUgdG8gbWludXMgdGhhdCBvZmYgdG8gZ2V0IHRoZSByaWdodCBleHBhbnNpb24gY2Ugb2Zmc2V0LiBJbgorCSAqIG51bWJlciBvZiBpbnRzLgorCSAqLworCWludCBtX2V4cGFuc2lvbk9mZnNldF87CisJLyoqCisJICogU2l6ZSBvZiBjb2xsYXRvciByYXcgZGF0YSBoZWFkZXJzLCBvcHRpb25zIGFuZCBleHBhbnNpb25zIGJlZm9yZQorCSAqIGNvbnRyYWN0aW9uIGRhdGEuIFRoaXMgaXMgdXNlZCB3aGVuIGNvbnRyYWN0aW9uIGNlcyBhcmUgdG8gYmUgcmV0cmlldmVkLiAKKwkgKiBJQ1U0QyB1c2VzIGNvbnRyYWN0aW9uIG9mZnNldCBzdGFydGluZyBmcm9tIFVDb2xsYXRvci5VQ29sSGVhZGVyLCBoZW5jZQorCSAqIElDVTRKIHdpbGwgaGF2ZSB0byBtaW51cyB0aGF0IG9mZiB0byBnZXQgdGhlIHJpZ2h0IGNvbnRyYWN0aW9uIGNlIAorCSAqIG9mZnNldC4gSW4gbnVtYmVyIG9mIGNoYXJzLgorCSAqLworCWludCBtX2NvbnRyYWN0aW9uT2Zmc2V0XzsKKyAgICAvKioKKyAgICAgKiBGbGFnIGluZGljYXRvciBpZiBKYW1vIGlzIHNwZWNpYWwKKyAgICAgKi8KKyAgICBib29sZWFuIG1faXNKYW1vU3BlY2lhbF87CisgCisgCS8vIENvbGxhdG9yIG9wdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAgCisgCWludCBtX2RlZmF1bHRWYXJpYWJsZVRvcFZhbHVlXzsKKwlib29sZWFuIG1fZGVmYXVsdElzRnJlbmNoQ29sbGF0aW9uXzsKKwlib29sZWFuIG1fZGVmYXVsdElzQWx0ZXJuYXRlSGFuZGxpbmdTaGlmdGVkXzsgCisgICAgaW50IG1fZGVmYXVsdENhc2VGaXJzdF87CisgICAgYm9vbGVhbiBtX2RlZmF1bHRJc0Nhc2VMZXZlbF87CisgICAgaW50IG1fZGVmYXVsdERlY29tcG9zaXRpb25fOworICAgIGludCBtX2RlZmF1bHRTdHJlbmd0aF87CisgICAgYm9vbGVhbiBtX2RlZmF1bHRJc0hpcmFnYW5hNF87CisgCS8qKgorIAkgKiBWYWx1ZSBvZiB0aGUgdmFyaWFibGUgdG9wCisgCSAqLworICAgIGludCBtX3ZhcmlhYmxlVG9wVmFsdWVfOworICAgIC8qKiAKKyAgICAgKiBBdHRyaWJ1dGUgZm9yIHNwZWNpYWwgSGlyYWdhbmEgCisgICAgICovCisgICAgYm9vbGVhbiBtX2lzSGlyYWdhbmE0XzsgICAgICAgICAKKwkvKioKKyAgICAgKiBDYXNlIHNvcnRpbmcgY3VzdG9taXphdGlvbgorICAgICAqLworICAgIGludCBtX2Nhc2VGaXJzdF87CisgICAgCisgICAgLy8gZW5kIENvbGxhdG9yIG9wdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAKKyAgICAvKioKKyAgICAgKiBFeHBhbnNpb24gdGFibGUKKyAgICAgKi8KKyAgICBpbnQgbV9leHBhbnNpb25fW107CisgICAgLyoqCisgICAgICogQ29udHJhY3Rpb24gaW5kZXggdGFibGUKKyAgICAgKi8KKyAgICBjaGFyIG1fY29udHJhY3Rpb25JbmRleF9bXTsKKyAgICAvKioKKyAgICAgKiBDb250cmFjdGlvbiBDRSB0YWJsZQorICAgICAqLworICAgIGludCBtX2NvbnRyYWN0aW9uQ0VfW107CisgICAgLyoqCisgICAgICogRGF0YSB0cmllCisgICAgICovCisgICAgSW50VHJpZSBtX3RyaWVfOworICAgIC8qKgorICAgICAqIFRhYmxlIHRvIHN0b3JlIGFsbCBjb2xsYXRpb24gZWxlbWVudHMgdGhhdCBhcmUgdGhlIGxhc3QgZWxlbWVudCBvZiBhbgorICAgICAqIGV4cGFuc2lvbi4gVGhpcyBpcyBmb3IgdXNlIGluIFN0cmluZ1NlYXJjaC4KKyAgICAgKi8KKyAgICBpbnQgbV9leHBhbnNpb25FbmRDRV9bXTsKKyAgICAvKioKKyAgICAgKiBUYWJsZSB0byBzdG9yZSB0aGUgbWF4aW11bSBzaXplIG9mIGFueSBleHBhbnNpb25zIHRoYXQgZW5kIHdpdGggdGhlIAorICAgICAqIGNvcnJlc3BvbmRpbmcgY29sbGF0aW9uIGVsZW1lbnQgaW4gbV9leHBhbnNpb25FbmRDRV8uIEZvciB1c2UgaW4KKyAgICAgKiBTdHJpbmdTZWFyY2ggdG9vCisgICAgICovCisgICAgYnl0ZSBtX2V4cGFuc2lvbkVuZENFTWF4U2l6ZV9bXTsKKyAgICAvKioKKyAgICAgKiBIZXVyaXN0aWMgdGFibGUgdG8gc3RvcmUgaW5mb3JtYXRpb24gb24gd2hldGhlciBhIGNoYXIgY2hhcmFjdGVyIGlzIAorICAgICAqIGNvbnNpZGVyZWQgInVuc2FmZSIuICJVbnNhZmUiIGNoYXJhY3RlciBhcmUgY29tYmluaW5nIG1hcmtzIG9yIHRob3NlIAorICAgICAqIGJlbG9uZ2luZyB0byBzb21lIGNvbnRyYWN0aW9uIHNlcXVlbmNlIGZyb20gdGhlIG9mZnNldCAxIG9ud2FyZHMuIAorICAgICAqIEUuZy4gaWYgIkFCQyIgaXMgdGhlIG9ubHkgY29udHJhY3Rpb24sIHRoZW4gJ0InIGFuZCAnQycgYXJlIGNvbnNpZGVyZWQgCisgICAgICogdW5zYWZlLiBJZiB3ZSBoYXZlIGFub3RoZXIgY29udHJhY3Rpb24gIlpBIiB3aXRoIHRoZSBvbmUgYWJvdmUsIHRoZW4gCisgICAgICogJ0EnLCAnQicsICdDJyBhcmUgInVuc2FmZSIgYnV0ICdaJyBpcyBub3QuIAorICAgICAqLworICAgIGJ5dGUgbV91bnNhZmVfW107CisgICAgLyoqCisgICAgICogVGFibGUgdG8gc3RvcmUgaW5mb3JtYXRpb24gb24gd2hldGhlciBhIGNvZGVwb2ludCBjYW4gb2NjdXIgYXMgdGhlIGxhc3QKKyAgICAgKiBjaGFyYWN0ZXIgaW4gYSBjb250cmFjdGlvbgorICAgICAqLworICAgIGJ5dGUgbV9jb250cmFjdGlvbkVuZF9bXTsKKyAgICAvKioKKwkgKiBPcmlnaW5hbCBjb2xsYXRpb24gcnVsZXMKKwkgKi8KKwlTdHJpbmcgbV9ydWxlc187CisJLyoqCisgICAgICogVGhlIHNtYWxsZXN0ICJ1bnNhZmUiIGNvZGVwb2ludAorICAgICAqLworICAgIGNoYXIgbV9taW5VbnNhZmVfOworICAgIC8qKgorCSAqIFRoZSBzbWFsbGVzdCBjb2RlcG9pbnQgdGhhdCBjb3VsZCBiZSB0aGUgZW5kIG9mIGEgY29udHJhY3Rpb24KKwkgKi8KKwljaGFyIG1fbWluQ29udHJhY3Rpb25FbmRfOworCQorCS8qKgorICAgICAqIFVuaWNvZGVEYXRhLnR4dCBwcm9wZXJ0eSBvYmplY3QKKyAgICAgKi8KKyAgICBzdGF0aWMgZmluYWwgUnVsZUJhc2VkQ29sbGF0b3IgVUNBXzsgIAorICAgIC8qKgorICAgICAqIFVDQSBDb25zdGFudHMKKyAgICAgKi8KKyAgICBzdGF0aWMgZmluYWwgVUNBQ29uc3RhbnRzIFVDQV9DT05TVEFOVFNfOworICAgIC8qKgorICAgICAqIFRhYmxlIGZvciBVQ0EgYW5kIGJ1aWxkZXIgdXNlCisgICAgICovCisgICAgc3RhdGljIGZpbmFsIGNoYXIgVUNBX0NPTlRSQUNUSU9OU19bXTsKKyAgICAvKioKKyAgICAgKiBJbXBsaWNpdCBjb25zdGFudHMKKyAgICAgKi8KKyAgICBzdGF0aWMgZmluYWwgaW50IElNUExJQ0lUX0JBU0VfQllURV87CisgICAgc3RhdGljIGZpbmFsIGludCBJTVBMSUNJVF9MSU1JVF9CWVRFXzsKKyAgICBzdGF0aWMgZmluYWwgaW50IElNUExJQ0lUXzRCWVRFX0JPVU5EQVJZXzsKKyAgICBzdGF0aWMgZmluYWwgaW50IExBU1RfTVVMVElQTElFUl87CisgICAgc3RhdGljIGZpbmFsIGludCBMQVNUMl9NVUxUSVBMSUVSXzsKKyAgICBzdGF0aWMgZmluYWwgaW50IElNUExJQ0lUX0JBU0VfM0JZVEVfOworICAgIHN0YXRpYyBmaW5hbCBpbnQgSU1QTElDSVRfQkFTRV80QllURV87CisgICAgc3RhdGljIGZpbmFsIGludCBCWVRFU19UT19BVk9JRF8gPSAzOworICAgIHN0YXRpYyBmaW5hbCBpbnQgT1RIRVJfQ09VTlRfID0gMjU2IC0gQllURVNfVE9fQVZPSURfOworICAgIHN0YXRpYyBmaW5hbCBpbnQgTEFTVF9DT1VOVF8gPSBPVEhFUl9DT1VOVF8gLyAyOworICAgIC8qKgorICAgICAqIFJvb20gZm9yIGludGVydmVuaW5nLCB3aXRob3V0IGV4cGFuZGluZyB0byA1IGJ5dGVzCisgICAgICovCisgICAgc3RhdGljIGZpbmFsIGludCBMQVNUX0NPVU5UMl8gPSBPVEhFUl9DT1VOVF8gLyAyMTsgCisgICAgc3RhdGljIGZpbmFsIGludCBJTVBMSUNJVF8zQllURV9DT1VOVF8gPSAxOworICAgIAorICAgIC8vIGJsb2NrIHRvIGluaXRpYWxpc2UgY2hhcmFjdGVyIHByb3BlcnR5IGRhdGFiYXNlCisgICAgc3RhdGljCisgICAgeworICAgICAgICB0cnkKKyAgICAgICAgeworICAgICAgICAJVUNBXyA9IG5ldyBSdWxlQmFzZWRDb2xsYXRvcigpOworICAgICAgICAgICAgVUNBX0NPTlNUQU5UU18gPSBuZXcgVUNBQ29uc3RhbnRzKCk7CisgICAgICAgIAlJbnB1dFN0cmVhbSBpID0gVUNBXy5nZXRDbGFzcygpLmdldFJlc291cmNlQXNTdHJlYW0oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi9jb20vaWJtL2ljdS9pbXBsL2RhdGEvdWNhZGF0YS5pY3UiKTsKKyAgICAgICAgCQorICAgICAgIAkJQnVmZmVyZWRJbnB1dFN0cmVhbSBiID0gbmV3IEJ1ZmZlcmVkSW5wdXRTdHJlYW0oaSwgOTAwMDApOworICAgICAgICAJQ29sbGF0b3JSZWFkZXIgcmVhZGVyID0gbmV3IENvbGxhdG9yUmVhZGVyKGIpOworICAgICAgICAJVUNBX0NPTlRSQUNUSU9OU18gPSByZWFkZXIucmVhZChVQ0FfLCBVQ0FfQ09OU1RBTlRTXyk7CisgICAgICAgICAgICBiLmNsb3NlKCk7CisgICAgICAgIAlpLmNsb3NlKCk7CisgICAgICAgICAgICAvLyBjYWxsZWQgYmVmb3JlIGRvaW5nIGNhbm9uaWNhbCBjbG9zdXJlIGZvciB0aGUgVUNBLgorICAgICAgICAgICAgSU1QTElDSVRfQkFTRV9CWVRFXyA9IFVDQV9DT05TVEFOVFNfLlBSSU1BUllfSU1QTElDSVRfTUlOXzsKKyAgICAgICAgICAgIC8vIGxlYXZlIHJvb20gZm9yIDEgMy1ieXRlIGFuZCAyIDQtYnl0ZSBmb3JtcworICAgICAgICAgICAgSU1QTElDSVRfTElNSVRfQllURV8gPSBJTVBMSUNJVF9CQVNFX0JZVEVfICsgNDsgCisgICAgICAgICAgICBJTVBMSUNJVF80QllURV9CT1VOREFSWV8gPSBJTVBMSUNJVF8zQllURV9DT1VOVF8gKiBPVEhFUl9DT1VOVF8gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIExBU1RfQ09VTlRfOworICAgICAgICAgICAgTEFTVF9NVUxUSVBMSUVSXyA9IE9USEVSX0NPVU5UXyAvIExBU1RfQ09VTlRfOworICAgICAgICAgICAgTEFTVDJfTVVMVElQTElFUl8gPSBPVEhFUl9DT1VOVF8gLyBMQVNUX0NPVU5UMl87CisgICAgICAgICAgICBJTVBMSUNJVF9CQVNFXzNCWVRFXyA9IChJTVBMSUNJVF9CQVNFX0JZVEVfIDw8IDI0KSArIDB4MDMwMzAwOworICAgICAgICAgICAgSU1QTElDSVRfQkFTRV80QllURV8gPSAoKElNUExJQ0lUX0JBU0VfQllURV8gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBJTVBMSUNJVF8zQllURV9DT1VOVF8pIDw8IDI0KSArIDB4MDMwMzAzOworICAgICAgICAJVUNBXy5tX3J1bGVzXyA9IG51bGw7CisgICAgICAgIAlVQ0FfLmluaXQoKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCisgICAgICAgIHsKKyAgICAgICAgCWUucHJpbnRTdGFja1RyYWNlKCk7CisgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbihlLmdldE1lc3NhZ2UoKSk7CisgICAgICAgIH0KKyAgICB9IAorICAgIAorICAgIC8vIHBhY2thZ2UgcHJpdmF0ZSBjb25zdHJ1Y3RvcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgKiA8cD5Qcml2YXRlIGNvbnRydWN0b3IgZm9yIHVzZSBieSBzdWJjbGFzc2VzLiAKKyAgICAqIFB1YmxpYyBhY2Nlc3MgdG8gY3JlYXRpbmcgQ29sbGF0b3JzIGlzIGhhbmRsZWQgYnkgdGhlIEFQSSAKKyAgICAqIENvbGxhdG9yLmdldEluc3RhbmNlKCkgb3IgUnVsZUJhc2VkQ29sbGF0b3IoU3RyaW5nIHJ1bGVzKS4KKyAgICAqIDwvcD4KKyAgICAqIDxwPgorICAgICogVGhpcyBjb25zdHJ1Y3RvciBjb25zdHJ1Y3RzIHRoZSBVQ0EgY29sbGF0b3IgaW50ZXJuYWxseQorICAgICogPC9wPgorICAgICovCisgICAgUnVsZUJhc2VkQ29sbGF0b3IoKSAKKyAgICB7CisgICAgICAgIGluaXRVdGlsaXR5KCk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIENvbnN0cnVjdG9ycyBhIFJ1bGVCYXNlZENvbGxhdG9yIGZyb20gdGhlIGFyZ3VtZW50IGxvY2FsZS4KKyAgICAgKiBJZiBubyByZXNvdXJjZSBidW5kbGUgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBsb2NhbGUsIFVDQSBpcyB1c2VkIAorICAgICAqIGluc3RlYWQuCisgICAgICogQHBhcmFtIGxvY2FsZQorICAgICAqLworICAgIFJ1bGVCYXNlZENvbGxhdG9yKExvY2FsZSBsb2NhbGUpCisgICAgeworICAgICAgICBSZXNvdXJjZUJ1bmRsZSByYiA9IElDVUxvY2FsZURhdGEuZ2V0TG9jYWxlRWxlbWVudHMobG9jYWxlKTsKKyAgICAgICAgaW5pdFV0aWxpdHkoKTsKKyAgICAgICAgaWYgKHJiICE9IG51bGwpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgT2JqZWN0IGVsZW1lbnRzID0gcmIuZ2V0T2JqZWN0KCJDb2xsYXRpb25FbGVtZW50cyIpOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50cyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIE9iamVjdFtdW10gcnVsZXMgPSAoT2JqZWN0W11bXSllbGVtZW50czsKKyAgICAgICAgICAgICAgICAgICAgbV9ydWxlc18gPSAoU3RyaW5nKXJ1bGVzWzFdWzFdOworICAgICAgICAgICAgICAgICAgICAvLyAlJUNvbGxhdGlvbkJpbgorICAgICAgICAgICAgICAgICAgICBieXRlIG1hcFtdID0gKGJ5dGUgW10pcnVsZXNbMF1bMV07CisgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcmVkSW5wdXRTdHJlYW0gaW5wdXQgPSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBCdWZmZXJlZElucHV0U3RyZWFtKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKG1hcCkpOworICAgICAgICAgICAgICAgICAgICBDb2xsYXRvclJlYWRlciByZWFkZXIgPSBuZXcgQ29sbGF0b3JSZWFkZXIoaW5wdXQsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1hcC5sZW5ndGggPiBNSU5fQklOQVJZX0RBVEFfU0laRV8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRlci5yZWFkKHRoaXMsIG51bGwpOworICAgICAgICAgICAgICAgICAgICB9IAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRlci5yZWFkSGVhZGVyKHRoaXMpOworICAgICAgICAgICAgICAgICAgICAgICAgcmVhZGVyLnJlYWRPcHRpb25zKHRoaXMpOworICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHVwbGljYXRpbmcgVUNBXydzIGRhdGEKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldFdpdGhVQ0FUYWJsZXMoKTsKKyAgICAgICAgICAgICAgICAgICAgfSAKKyAgICAgICAgICAgICAgICAgICAgaW5pdCgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgICAgICAgICAvLyBpZiBmYWlsZWQgdXNlIFVDQS4KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBzZXRXaXRoVUNBRGF0YSgpOworICAgIH0gCisgICAgCisgICAgLy8gcGFja2FnZSBwcml2YXRlIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoaXMgY29sbGF0b3IgdG8gdXNlIHRoZSB0YWJsZXMgaW4gVUNBLiBOb3RlIG9wdGlvbnMgbm90IHRha2VuCisgICAgICogY2FyZSBvZiBoZXJlLgorICAgICAqLworICAgIGZpbmFsIHZvaWQgc2V0V2l0aFVDQVRhYmxlcygpCisgICAgeworICAgICAgICBtX2NvbnRyYWN0aW9uT2Zmc2V0XyA9IFVDQV8ubV9jb250cmFjdGlvbk9mZnNldF87CisgICAgICAgIG1fZXhwYW5zaW9uT2Zmc2V0XyA9IFVDQV8ubV9leHBhbnNpb25PZmZzZXRfOworICAgICAgICBtX2V4cGFuc2lvbl8gPSBVQ0FfLm1fZXhwYW5zaW9uXzsKKyAgICAgICAgbV9jb250cmFjdGlvbkluZGV4XyA9IFVDQV8ubV9jb250cmFjdGlvbkluZGV4XzsKKyAgICAgICAgbV9jb250cmFjdGlvbkNFXyA9IFVDQV8ubV9jb250cmFjdGlvbkNFXzsKKyAgICAgICAgbV90cmllXyA9IFVDQV8ubV90cmllXzsKKyAgICAgICAgbV9leHBhbnNpb25FbmRDRV8gPSBVQ0FfLm1fZXhwYW5zaW9uRW5kQ0VfOworCSAgICBtX2V4cGFuc2lvbkVuZENFTWF4U2l6ZV8gPSBVQ0FfLm1fZXhwYW5zaW9uRW5kQ0VNYXhTaXplXzsKKwkgICAgbV91bnNhZmVfID0gVUNBXy5tX3Vuc2FmZV87CisJICAgIG1fY29udHJhY3Rpb25FbmRfID0gVUNBXy5tX2NvbnRyYWN0aW9uRW5kXzsKKwkgICAgbV9taW5VbnNhZmVfID0gVUNBXy5tX21pblVuc2FmZV87IAorICAgICAgICBtX21pbkNvbnRyYWN0aW9uRW5kXyA9IFVDQV8ubV9taW5Db250cmFjdGlvbkVuZF87CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFNldHMgdGhpcyBjb2xsYXRvciB0byB1c2UgdGhlIGFsbCBvcHRpb25zIGFuZCB0YWJsZXMgaW4gVUNBLiAKKyAgICAgKi8KKyAgICBmaW5hbCB2b2lkIHNldFdpdGhVQ0FEYXRhKCkKKyAgICB7CisgICAgICAgIGxhdGluT25lRmFpbGVkXyA9IHRydWU7CisgICAgICAgIAorICAgIAltX2FkZGl0aW9uM18gPSBVQ0FfLm1fYWRkaXRpb24zXzsKKyAgICAJbV9ib3R0b20zXyA9IFVDQV8ubV9ib3R0b20zXzsKKyAgICAJbV9ib3R0b21Db3VudDNfID0gVUNBXy5tX2JvdHRvbUNvdW50M187CisgICAgCW1fY2FzZUZpcnN0XyA9IFVDQV8ubV9jYXNlRmlyc3RfOworICAgIAltX2Nhc2VTd2l0Y2hfID0gVUNBXy5tX2Nhc2VTd2l0Y2hfOworICAgIAltX2NvbW1vbjNfID0gVUNBXy5tX2NvbW1vbjNfOworICAgIAltX2NvbnRyYWN0aW9uT2Zmc2V0XyA9IFVDQV8ubV9jb250cmFjdGlvbk9mZnNldF87CisgICAgCXNldERlY29tcG9zaXRpb24oVUNBXy5nZXREZWNvbXBvc2l0aW9uKCkpOworICAgIAltX2RlZmF1bHRDYXNlRmlyc3RfID0gVUNBXy5tX2RlZmF1bHRDYXNlRmlyc3RfOworICAgIAltX2RlZmF1bHREZWNvbXBvc2l0aW9uXyA9IFVDQV8ubV9kZWZhdWx0RGVjb21wb3NpdGlvbl87CisgICAgCW1fZGVmYXVsdElzQWx0ZXJuYXRlSGFuZGxpbmdTaGlmdGVkXyAKKyAgICAJICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBVQ0FfLm1fZGVmYXVsdElzQWx0ZXJuYXRlSGFuZGxpbmdTaGlmdGVkXzsKKyAgICAJbV9kZWZhdWx0SXNDYXNlTGV2ZWxfID0gVUNBXy5tX2RlZmF1bHRJc0Nhc2VMZXZlbF87CisgICAgCW1fZGVmYXVsdElzRnJlbmNoQ29sbGF0aW9uXyA9IFVDQV8ubV9kZWZhdWx0SXNGcmVuY2hDb2xsYXRpb25fOworICAgIAltX2RlZmF1bHRJc0hpcmFnYW5hNF8gPSBVQ0FfLm1fZGVmYXVsdElzSGlyYWdhbmE0XzsKKyAgICAJbV9kZWZhdWx0U3RyZW5ndGhfID0gVUNBXy5tX2RlZmF1bHRTdHJlbmd0aF87CisgICAgCW1fZGVmYXVsdFZhcmlhYmxlVG9wVmFsdWVfID0gVUNBXy5tX2RlZmF1bHRWYXJpYWJsZVRvcFZhbHVlXzsKKyAgICAJbV9leHBhbnNpb25PZmZzZXRfID0gVUNBXy5tX2V4cGFuc2lvbk9mZnNldF87CisgICAgCW1faXNBbHRlcm5hdGVIYW5kbGluZ1NoaWZ0ZWRfID0gVUNBXy5tX2lzQWx0ZXJuYXRlSGFuZGxpbmdTaGlmdGVkXzsKKyAgICAJbV9pc0Nhc2VMZXZlbF8gPSBVQ0FfLm1faXNDYXNlTGV2ZWxfOworICAgIAltX2lzRnJlbmNoQ29sbGF0aW9uXyA9IFVDQV8ubV9pc0ZyZW5jaENvbGxhdGlvbl87CisgICAgCW1faXNIaXJhZ2FuYTRfID0gVUNBXy5tX2lzSGlyYWdhbmE0XzsKKyAgICAJbV9pc0phbW9TcGVjaWFsXyA9IFVDQV8ubV9pc0phbW9TcGVjaWFsXzsKKyAgICAJbV9pc1NpbXBsZTNfID0gVUNBXy5tX2lzU2ltcGxlM187CisgICAgCW1fbWFzazNfID0gVUNBXy5tX21hc2szXzsKKyAgICAJbV9taW5Db250cmFjdGlvbkVuZF8gPSBVQ0FfLm1fbWluQ29udHJhY3Rpb25FbmRfOworICAgIAltX21pblVuc2FmZV8gPSBVQ0FfLm1fbWluVW5zYWZlXzsKKyAgICAJbV9ydWxlc18gPSBVQ0FfLm1fcnVsZXNfOworICAgIAlzZXRTdHJlbmd0aChVQ0FfLmdldFN0cmVuZ3RoKCkpOworICAgIAltX3RvcDNfID0gVUNBXy5tX3RvcDNfOworICAgIAltX3RvcENvdW50M18gPSBVQ0FfLm1fdG9wQ291bnQzXzsKKyAgICAJbV92YXJpYWJsZVRvcFZhbHVlXyA9IFVDQV8ubV92YXJpYWJsZVRvcFZhbHVlXzsKKyAgICAJc2V0V2l0aFVDQVRhYmxlcygpOworICAgICAgICBsYXRpbk9uZUZhaWxlZF8gPSBmYWxzZTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogVGVzdCB3aGV0aGVyIGEgY2hhciBjaGFyYWN0ZXIgaXMgcG90ZW50aWFsbHkgInVuc2FmZSIgZm9yIHVzZSBhcyBhIAorICAgICAqIGNvbGxhdGlvbiBzdGFydGluZyBwb2ludC4gIlVuc2FmZSIgY2hhcmFjdGVycyBhcmUgY29tYmluaW5nIG1hcmtzIG9yIAorICAgICAqIHRob3NlIGJlbG9uZ2luZyB0byBzb21lIGNvbnRyYWN0aW9uIHNlcXVlbmNlIGZyb20gdGhlIG9mZnNldCAxIG9ud2FyZHMuCisgICAgICogRS5nLiBpZiAiQUJDIiBpcyB0aGUgb25seSBjb250cmFjdGlvbiwgdGhlbiAnQicgYW5kIAorICAgICAqICdDJyBhcmUgY29uc2lkZXJlZCB1bnNhZmUuIElmIHdlIGhhdmUgYW5vdGhlciBjb250cmFjdGlvbiAiWkEiIHdpdGggCisgICAgICogdGhlIG9uZSBhYm92ZSwgdGhlbiAnQScsICdCJywgJ0MnIGFyZSAidW5zYWZlIiBidXQgJ1onIGlzIG5vdC4gCisgICAgICogQHBhcmFtIGNoIGNoYXJhY3RlciB0byBkZXRlcm1pbgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiBjaCBpcyB1bnNhZmUsIGZhbHNlIG90aGVyd2lzZQorICAgICAqLworCWZpbmFsIGJvb2xlYW4gaXNVbnNhZmUoY2hhciBjaCkgCisJeworICAgIAlpZiAoY2ggPCBtX21pblVuc2FmZV8pIHsKKwkgICAgICAgIHJldHVybiBmYWxzZTsKKwkgICAgfQorCQorCSAgICBpZiAoY2ggPj0gKEhFVVJJU1RJQ19TSVpFXyA8PCBIRVVSSVNUSUNfU0hJRlRfKSkgeworCSAgICAgIAlpZiAoVVRGMTYuaXNMZWFkU3Vycm9nYXRlKGNoKSB8fCBVVEYxNi5pc1RyYWlsU3Vycm9nYXRlKGNoKSkgeworCSAgICAgICAgICAgIC8vICBUcmFpbCBzdXJyb2dhdGUgYXJlIGFsd2F5cyBjb25zaWRlcmVkIHVuc2FmZS4KKwkgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKwkgICAgICAgIH0KKwkgICAgICAgIGNoICY9IEhFVVJJU1RJQ19PVkVSRkxPV19NQVNLXzsKKwkgICAgICAgIGNoICs9IEhFVVJJU1RJQ19PVkVSRkxPV19PRkZTRVRfOworCSAgICB9CisJICAgIGludCB2YWx1ZSA9IG1fdW5zYWZlX1tjaCA+PiBIRVVSSVNUSUNfU0hJRlRfXTsKKwkgICAgcmV0dXJuICgodmFsdWUgPj4gKGNoICYgSEVVUklTVElDX01BU0tfKSkgJiAxKSAhPSAwOworCX0KKwkKKwkvKioKKwkgKiBBcHByb3hpbWF0ZSBkZXRlcm1pbmF0aW9uIGlmIGEgY2hhciBjaGFyYWN0ZXIgaXMgYXQgYSBjb250cmFjdGlvbiBlbmQuCisJICogR3VhcmFudGVlZCB0byBiZSB0cnVlIGlmIGEgY2hhcmFjdGVyIGlzIGF0IHRoZSBlbmQgb2YgYSBjb250cmFjdGlvbiwKKwkgKiBvdGhlcndpc2UgaXQgaXMgbm90IGRldGVybWluaXN0aWMuCisJICogQHBhcmFtIGNoIGNoYXJhY3RlciB0byBiZSBkZXRlcm1pbmVkCisJICovCisJZmluYWwgYm9vbGVhbiBpc0NvbnRyYWN0aW9uRW5kKGNoYXIgY2gpIAorCXsKKwkJaWYgKFVURjE2LmlzVHJhaWxTdXJyb2dhdGUoY2gpKSB7CisgICAgICAJCXJldHVybiB0cnVlOworCQl9CisKKyAgICAJaWYgKGNoIDwgbV9taW5Db250cmFjdGlvbkVuZF8pIHsKKyAgICAgICAgCXJldHVybiBmYWxzZTsKKyAgICAJfQorCisgICAJCWlmIChjaCA+PSAoSEVVUklTVElDX1NJWkVfIDw8IEhFVVJJU1RJQ19TSElGVF8pKSB7CisgICAgICAgIAljaCAmPSBIRVVSSVNUSUNfT1ZFUkZMT1dfTUFTS187CisgICAgICAgIAljaCArPSBIRVVSSVNUSUNfT1ZFUkZMT1dfT0ZGU0VUXzsKKyAgICAJfQorICAgIAlpbnQgdmFsdWUgPSBtX2NvbnRyYWN0aW9uRW5kX1tjaCA+PiBIRVVSSVNUSUNfU0hJRlRfXTsKKwkgICAgcmV0dXJuICgodmFsdWUgPj4gKGNoICYgSEVVUklTVElDX01BU0tfKSkgJiAxKSAhPSAwOworCX0KKwkKKwkvKioKKwkgKiBSZXRyaWV2ZSB0aGUgdGFnIG9mIGEgc3BlY2lhbCBjZQorCSAqIEBwYXJhbSBjZSBjZSB0byB0ZXN0CisJICogQHJldHVybiB0YWcgb2YgY2UKKwkgKi8KKwlzdGF0aWMgaW50IGdldFRhZyhpbnQgY2UpIAorCXsKKwkJcmV0dXJuIChjZSAmIENFX1RBR19NQVNLXykgPj4gQ0VfVEFHX1NISUZUXzsKKwl9CisgICAgCisgICAgLyoqIAorCSAqIENoZWNraW5nIGlmIGNlIGlzIHNwZWNpYWwKKwkgKiBAcGFyYW0gY2UgdG8gY2hlY2sKKwkgKiBAcmV0dXJuIHRydWUgaWYgY2UgaXMgc3BlY2lhbAorCSAqLworCXN0YXRpYyBib29sZWFuIGlzU3BlY2lhbChpbnQgY2UpCisJeworCQlyZXR1cm4gKGNlICYgQ0VfU1BFQ0lBTF9GTEFHXykgPT0gQ0VfU1BFQ0lBTF9GTEFHXzsgCisJfQorCisgICAgLyoqCisgICAgICogQ2hlY2tzIGlmIHRoZSBhcmd1bWVudCBjZSBpcyBhIGNvbnRpbnVhdGlvbgorICAgICAqIEBwYXJhbSBjZSBjb2xsYXRpb24gZWxlbWVudCB0byB0ZXN0CisgICAgICogQHJldHVybiB0cnVlIGlmIGNlIGlzIGEgY29udGludWF0aW9uCisgICAgICovCisgICAgc3RhdGljIGZpbmFsIGJvb2xlYW4gaXNDb250aW51YXRpb24oaW50IGNlKSAKKyAgICB7CisgICAgICAgIHJldHVybiBjZSAhPSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuTlVMTE9SREVSIAorICAgICAgICAgICAgICAgICAgICAgICAmJiAoY2UgJiBDRV9DT05USU5VQVRJT05fVEFHXykgPT0gQ0VfQ09OVElOVUFUSU9OX1RBR187CisgICAgfQorICAgIAorICAgIC8vIHByaXZhdGUgaW5uZXIgY2xhc3NlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvLyBwcml2YXRlIHZhcmlhYmxlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogVGhlIHNtYWxsZXN0IG5hdHVyYWwgdW5zYWZlIG9yIGNvbnRyYWN0aW9uIGVuZCBjaGFyIGNoYXJhY3RlciBiZWZvcmUgCisgICAgICogdGFpbG9yaW5nLgorICAgICAqIFRoaXMgaXMgYSBjb21iaW5pbmcgbWFyay4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgREVGQVVMVF9NSU5fSEVVUklTVElDXyA9IDB4MzAwOworICAgIC8qKiAKKyAgICAgKiBIZXVyaXN0aWMgdGFibGUgdGFibGUgc2l6ZS4gU2l6ZSBpcyAzMiBieXRlcywgMSBiaXQgZm9yIGVhY2ggCisgICAgICogbGF0aW4gMSBjaGFyLCBhbmQgc29tZSBwb3dlciBvZiB0d28gZm9yIGhhc2hpbmcgdGhlIHJlc3Qgb2YgdGhlIGNoYXJzLiAgIAorICAgICAqIFNpemUgaW4gYnl0ZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAqLworCXByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgSEVVUklTVElDX1NJWkVfID0gMTA1NjsKKyAgICAvKiogCisgICAgICogTWFzayB2YWx1ZSBkb3duIHRvICJzb21lIHBvd2VyIG9mIHR3byIgLSAxLAorICAgICAqIG51bWJlciBvZiBiaXRzLCBub3QgbnVtIG9mIGJ5dGVzLgorICAgICAqLworCXByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgSEVVUklTVElDX09WRVJGTE9XX01BU0tfID0gMHgxZmZmOworCS8qKgorCSAqIFVuc2FmZSBjaGFyYWN0ZXIgc2hpZnQKKwkgKi8KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSEVVUklTVElDX1NISUZUXyA9IDM7CisJLyoqCisJICogVW5zYWZlIGNoYXJhY3RlciBhZGRpdGlvbiBmb3IgY2hhcmFjdGVyIHRvbyBsYXJnZSwgaXQgaGFzIHRvIGJlIGZvbGRlZAorCSAqIHRoZW4gaW5jcmVtZW50ZWQuCisJICovCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciBIRVVSSVNUSUNfT1ZFUkZMT1dfT0ZGU0VUXyA9IDI1NjsKKwkvKiogCisgICAgICogTWFzayB2YWx1ZSB0byBnZXQgb2Zmc2V0IGluIGhldXJpc3RpYyB0YWJsZS4KKyAgICAgKi8KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBjaGFyIEhFVVJJU1RJQ19NQVNLXyA9IDc7CisJCisJcHJpdmF0ZSBpbnQgbV9jYXNlU3dpdGNoXzsgCisgICAgcHJpdmF0ZSBpbnQgbV9jb21tb24zXzsKKyAgICBwcml2YXRlIGludCBtX21hc2szXzsgCisgICAgLyoqIAorICAgICAqIFdoZW4gc3dpdGNoaW5nIGNhc2UsIHdlIG5lZWQgdG8gYWRkIG9yIHN1YnRyYWN0IGRpZmZlcmVudCB2YWx1ZXMuCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgbV9hZGRpdGlvbjNfOyAKKyAgICAvKiogCisgICAgICogVXBwZXIgcmFuZ2Ugd2hlbiBjb21wcmVzc2luZyAKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBtX3RvcDNfOworICAgIC8qKiAKKyAgICAgKiBVcHBlciByYW5nZSB3aGVuIGNvbXByZXNzaW5nIAorICAgICAqLyAKKyAgICBwcml2YXRlIGludCBtX2JvdHRvbTNfOyAKKyAgICBwcml2YXRlIGludCBtX3RvcENvdW50M187CisgICAgcHJpdmF0ZSBpbnQgbV9ib3R0b21Db3VudDNfOwkKKwkvKioKKwkgKiBDYXNlIGZpcnN0IGNvbnN0YW50cworCSAqLworCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDQVNFX1NXSVRDSF8gPSAweEMwOworCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBOT19DQVNFX1NXSVRDSF8gPSAwOworCS8qKgorCSAqIENhc2UgbGV2ZWwgY29uc3RhbnRzCisJICovCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENFX1JFTU9WRV9DQVNFXyA9IDB4M0Y7IAorCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDRV9LRUVQX0NBU0VfID0gMHhGRjsKKwkvKioKKwkgKiBDYXNlIHN0cmVuZ3RoIG1hc2sKKwkgKi8KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ0VfQ0FTRV9NQVNLXzNfID0gMHhGRjsKKwkvKiogCisJICogU29ydGtleSBzaXplIGZhY3Rvci4gVmFsdWVzIGNhbiBiZSBjaGFuZ2VkLgorCSAqLworCXByaXZhdGUgc3RhdGljIGZpbmFsIGRvdWJsZSBQUk9QT1JUSU9OXzJfID0gMC41OworCXByaXZhdGUgc3RhdGljIGZpbmFsIGRvdWJsZSBQUk9QT1JUSU9OXzNfID0gMC42Njc7CisKKwkvLyBUaGVzZSB2YWx1ZXMgY29tZSBmcm9tIHRoZSBVQ0EgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCQorCS8qKiAKKwkgKiBUaGlzIGlzIGFuIGVudW0gdGhhdCBsaXN0cyBtYWdpYyBzcGVjaWFsIGJ5dGUgdmFsdWVzIGZyb20gdGhlIAorCSAqIGZyYWN0aW9uYWwgVUNBIAorCSAqLworCXByaXZhdGUgc3RhdGljIGZpbmFsIGJ5dGUgQllURV9aRVJPXyA9IDB4MDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIEJZVEVfTEVWRUxfU0VQQVJBVE9SXyA9IChieXRlKTB4MDE7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYnl0ZSBCWVRFX1NPUlRLRVlfR0xVRV8gPSAoYnl0ZSkweDAyOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJ5dGUgQllURV9TSElGVF9QUkVGSVhfID0gKGJ5dGUpMHgwMzsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIEJZVEVfVU5TSElGVEVEX01JTl8gPSBCWVRFX1NISUZUX1BSRUZJWF87CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYnl0ZSBCWVRFX0ZJUlNUX1VDQV8gPSBCWVRFX0NPTU1PTl87CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYnl0ZSBCWVRFX0xBU1RfTEFUSU5fUFJJTUFSWV8gPSAoYnl0ZSkweDRDOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJ5dGUgQllURV9GSVJTVF9OT05fTEFUSU5fUFJJTUFSWV8gPSAoYnl0ZSkweDREOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJ5dGUgQllURV9VTlNISUZURURfTUFYXyA9IChieXRlKTB4RkY7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFRPVEFMXzJfID0gQ09NTU9OX1RPUF8yXyAtIENPTU1PTl9CT1RUT01fMl8gLSAxOyAKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRkxBR19CSVRfTUFTS19DQVNFX1NXSVRDSF9PRkZfID0gMHg4MDsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRkxBR19CSVRfTUFTS19DQVNFX1NXSVRDSF9PTl8gPSAweDQwOworCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDT01NT05fVE9QX0NBU0VfU1dJVENIX09GRl8zXyA9IDB4ODU7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENPTU1PTl9UT1BfQ0FTRV9TV0lUQ0hfTE9XRVJfM18gPSAweDQ1OworCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDT01NT05fVE9QX0NBU0VfU1dJVENIX1VQUEVSXzNfID0gMHhDNTsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ09NTU9OX0JPVFRPTV8zXyA9IDB4MDU7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENPTU1PTl9CT1RUT01fQ0FTRV9TV0lUQ0hfVVBQRVJfM18gPSAweDg2OworCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDT01NT05fQk9UVE9NX0NBU0VfU1dJVENIX0xPV0VSXzNfID0gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTU1PTl9CT1RUT01fM187CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFRPUF9DT1VOVF8yXyA9IChpbnQpKFBST1BPUlRJT05fMl8gKiBUT1RBTF8yXyk7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEJPVFRPTV9DT1VOVF8yXyA9IFRPVEFMXzJfIC0gVE9QX0NPVU5UXzJfOworCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDT01NT05fMl8gPSBDT01NT05fQk9UVE9NXzJfOworCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDT01NT05fVVBQRVJfRklSU1RfM18gPSAweEM1OworCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDT01NT05fTk9STUFMXzNfID0gQ09NTU9OX0JPVFRPTV8zXzsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ09NTU9OXzRfID0gKGJ5dGUpMHhGRjsKKyAgICAKKyAgICAKKwkKKwkvKioKKwkgKiBNaW5pbXVtIHNpemUgcmVxdWlyZWQgZm9yIHRoZSBiaW5hcnkgY29sbGF0aW9uIGRhdGEgaW4gYnl0ZXMuCisJICogU2l6ZSBvZiBVQ0EgaGVhZGVyICsgc2l6ZSBvZiBvcHRpb25zIHRvIDQgYnl0ZXMKKwkgKi8KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTUlOX0JJTkFSWV9EQVRBX1NJWkVfID0gKDQyICsgMjQpIDw8IDI7ICAgICAKKwkKKwkvKioKKwkgKiBJZiB0aGlzIGNvbGxhdG9yIGlzIHRvIGdlbmVyYXRlIG9ubHkgc2ltcGxlIHRlcnRpYXJpZXMgZm9yIGZhc3QgcGF0aAorCSAqLworCXByaXZhdGUgYm9vbGVhbiBtX2lzU2ltcGxlM187CisJCisJLyoqCisgICAgICogRnJlbmNoIGNvbGxhdGlvbiBzb3J0aW5nIGZsYWcKKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gbV9pc0ZyZW5jaENvbGxhdGlvbl87IAorICAgIC8qKgorICAgICAqIEZsYWcgaW5kaWNhdGluZyBpZiBzaGlmdGVkIGlzIHJlcXVlc3RlZCBmb3IgUXVhdGVybmFyeSBhbHRlcm5hdGUKKyAgICAgKiBoYW5kbGluZy4gSWYgdGhpcyBpcyBub3QgdHJ1ZSwgdGhlIGRlZmF1bHQgZm9yIGFsdGVybmF0ZSBoYW5kbGluZyB3aWxsCisgICAgICogYmUgbm9uLWlnbm9yYWJsZS4KKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gbV9pc0FsdGVybmF0ZUhhbmRsaW5nU2hpZnRlZF87IAorICAgIC8qKiAKKyAgICAgKiBFeHRyYSBjYXNlIGxldmVsIGZvciBzb3J0aW5nCisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIG1faXNDYXNlTGV2ZWxfOworCQorCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTT1JUX0JVRkZFUl9JTklUX1NJWkVfID0gMTI4OworCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTT1JUX0JVRkZFUl9JTklUX1NJWkVfMV8gPSAKKwkJCQkJCQkJCQkJCQlTT1JUX0JVRkZFUl9JTklUX1NJWkVfIDw8IDM7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNPUlRfQlVGRkVSX0lOSVRfU0laRV8yXyA9IFNPUlRfQlVGRkVSX0lOSVRfU0laRV87CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNPUlRfQlVGRkVSX0lOSVRfU0laRV8zXyA9IFNPUlRfQlVGRkVSX0lOSVRfU0laRV87CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNPUlRfQlVGRkVSX0lOSVRfU0laRV9DQVNFXyA9IAorCQkJCQkJCQkJCQkJU09SVF9CVUZGRVJfSU5JVF9TSVpFXyA+PiAyOworCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTT1JUX0JVRkZFUl9JTklUX1NJWkVfNF8gPSBTT1JUX0JVRkZFUl9JTklUX1NJWkVfOworICAgIAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDRV9DT05USU5VQVRJT05fVEFHXyA9IDB4QzA7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENFX1JFTU9WRV9DT05USU5VQVRJT05fTUFTS18gPSAweEZGRkZGRjNGOyAKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBMQVNUX0JZVEVfTUFTS18gPSAweEZGOworCQorCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDRV9SRVNFVF9UT1BfVkFMVUVfID0gMHg5RjAwMDMwMzsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ0VfTkVYVF9UT1BfVkFMVUVfID0gMHhFODk2MDMwMzsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIGJ5dGUgU09SVF9DQVNFX0JZVEVfU1RBUlRfID0gKGJ5dGUpMHg4MDsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIFNPUlRfQ0FTRV9TSElGVF9TVEFSVF8gPSAoYnl0ZSk3OworCQorCXByaXZhdGUgc3RhdGljIGZpbmFsIGJ5dGUgU09SVF9MRVZFTF9URVJNSU5BVE9SXyA9IDE7CisJCisJLyoqCisJICogQ0UgYnVmZmVyIHNpemUKKwkgKi8KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ0VfQlVGRkVSX1NJWkVfID0gNTEyOworICAgICAgIAorICAgIC8vIHZhcmlhYmxlcyBmb3IgTGF0aW4tMSBwcm9jZXNzaW5nCisgICAgYm9vbGVhbiBsYXRpbk9uZVVzZV8gICAgICAgID0gZmFsc2U7CisgICAgYm9vbGVhbiBsYXRpbk9uZVJlZ2VuVGFibGVfID0gZmFsc2U7CisgICAgYm9vbGVhbiBsYXRpbk9uZUZhaWxlZF8gICAgID0gZmFsc2U7CisKKyAgICBpbnQgbGF0aW5PbmVUYWJsZUxlbl8gPSAwOyAgICAgICAKKyAgICBpbnQgbGF0aW5PbmVDRXNfW10gPSBudWxsOworICAgIC8qKgorICAgICAqIEJ1bmNoIG9mIHV0aWxpdHkgaXRlcmF0b3JzCisgICAgICovCisgICAgcHJpdmF0ZSBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvciBtX3NyY1V0aWxJdGVyXzsKKyAgICBwcml2YXRlIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvciBtX3NyY1V0aWxDb2xFSXRlcl87ICAgCisgICAgcHJpdmF0ZSBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvciBtX3RndFV0aWxJdGVyXzsKKyAgICBwcml2YXRlIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvciBtX3RndFV0aWxDb2xFSXRlcl87CisgICAgLyoqCisgICAgICogVXRpbGl0eSBjb21wYXJpc29uIGZsYWdzCisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIG1fdXRpbENvbXBhcmUwXzsKKyAgICBwcml2YXRlIGJvb2xlYW4gbV91dGlsQ29tcGFyZTFfOworICAgIHByaXZhdGUgYm9vbGVhbiBtX3V0aWxDb21wYXJlMl87CisgICAgcHJpdmF0ZSBib29sZWFuIG1fdXRpbENvbXBhcmUzXzsKKyAgICBwcml2YXRlIGJvb2xlYW4gbV91dGlsQ29tcGFyZTRfOworICAgIHByaXZhdGUgYm9vbGVhbiBtX3V0aWxDb21wYXJlNV87IAorICAgIC8qKgorICAgICAqIFV0aWxpdHkgYnl0ZSBidWZmZXIKKyAgICAgKi8KKyAgICBwcml2YXRlIGJ5dGUgbV91dGlsQnl0ZXMwX1tdOworICAgIHByaXZhdGUgYnl0ZSBtX3V0aWxCeXRlczFfW107CisgICAgcHJpdmF0ZSBieXRlIG1fdXRpbEJ5dGVzMl9bXTsKKyAgICBwcml2YXRlIGJ5dGUgbV91dGlsQnl0ZXMzX1tdOworICAgIHByaXZhdGUgYnl0ZSBtX3V0aWxCeXRlczRfW107CisgICAgcHJpdmF0ZSBieXRlIG1fdXRpbEJ5dGVzNV9bXTsKKyAgICAKKyAgICBwcml2YXRlIGludCBtX3V0aWxCeXRlc0NvdW50MF87CisgICAgcHJpdmF0ZSBpbnQgbV91dGlsQnl0ZXNDb3VudDFfOworICAgIHByaXZhdGUgaW50IG1fdXRpbEJ5dGVzQ291bnQyXzsKKyAgICBwcml2YXRlIGludCBtX3V0aWxCeXRlc0NvdW50M187CisgICAgcHJpdmF0ZSBpbnQgbV91dGlsQnl0ZXNDb3VudDRfOworICAgIHByaXZhdGUgaW50IG1fdXRpbEJ5dGVzQ291bnQ1XzsKKyAgICBwcml2YXRlIGludCBtX3V0aWxDb3VudDBfOworICAgIHByaXZhdGUgaW50IG1fdXRpbENvdW50MV87CisgICAgcHJpdmF0ZSBpbnQgbV91dGlsQ291bnQyXzsKKyAgICBwcml2YXRlIGludCBtX3V0aWxDb3VudDNfOworICAgIHByaXZhdGUgaW50IG1fdXRpbENvdW50NF87CisgICAgcHJpdmF0ZSBpbnQgbV91dGlsQ291bnQ1XzsKKyAgICAKKyAgICBwcml2YXRlIGludCBtX3V0aWxGcmVuY2hTdGFydF87IAorICAgIHByaXZhdGUgaW50IG1fdXRpbEZyZW5jaEVuZF87CisgICAgCisgICAgLyoqIAorICAgICAqIFByZXBhcmluZyB0aGUgQ0UgYnVmZmVycy4gd2lsbCBiZSBmaWxsZWQgZHVyaW5nIHRoZSBwcmltYXJ5IHBoYXNlCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgbV9zcmNVdGlsQ0VCdWZmZXJfW107IAorICAgIHByaXZhdGUgaW50IG1fdGd0VXRpbENFQnVmZmVyX1tdOworICAgIHByaXZhdGUgaW50IG1fc3JjVXRpbENFQnVmZmVyU2l6ZV87CisgICAgcHJpdmF0ZSBpbnQgbV90Z3RVdGlsQ0VCdWZmZXJTaXplXzsKKyAgICAKKyAgICBwcml2YXRlIGludCBtX3NyY1V0aWxDb250T2Zmc2V0XzsKKyAgICBwcml2YXRlIGludCBtX3RndFV0aWxDb250T2Zmc2V0XzsKKyAgICAKKyAgICBwcml2YXRlIGludCBtX3NyY1V0aWxPZmZzZXRfOworICAgIHByaXZhdGUgaW50IG1fdGd0VXRpbE9mZnNldF87CisgICAgCisgICAgLy8gcHJpdmF0ZSBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICBwcml2YXRlIGZpbmFsIGludCBjb21wYXJlUmVndWxhcihTdHJpbmcgc291cmNlLCBTdHJpbmcgdGFyZ2V0LCBpbnQgb2Zmc2V0KSB7CisgICAgICAgIGludCBzdHJlbmd0aCA9IGdldFN0cmVuZ3RoKCk7CisgICAgICAgIC8vIHNldHRpbmcgdXAgdGhlIGNvbGxhdG9yIHBhcmFtZXRlcnMgICAKKyAgICAgICAgbV91dGlsQ29tcGFyZTBfID0gbV9pc0Nhc2VMZXZlbF87CisgICAgICAgIG1fdXRpbENvbXBhcmUxXyA9IHRydWU7CisgICAgICAgIG1fdXRpbENvbXBhcmUyXyA9IHN0cmVuZ3RoID49IFNFQ09OREFSWTsKKyAgICAgICAgbV91dGlsQ29tcGFyZTNfID0gc3RyZW5ndGggPj0gVEVSVElBUlk7CisgICAgICAgIG1fdXRpbENvbXBhcmU0XyA9IHN0cmVuZ3RoID49IFFVQVRFUk5BUlk7CisgICAgICAgIG1fdXRpbENvbXBhcmU1XyA9IHN0cmVuZ3RoID09IElERU5USUNBTDsKKyAgICAgICAgYm9vbGVhbiBkb0ZyZW5jaCA9IG1faXNGcmVuY2hDb2xsYXRpb25fICYmIG1fdXRpbENvbXBhcmUyXzsKKyAgICAgICAgYm9vbGVhbiBkb1NoaWZ0NCA9IG1faXNBbHRlcm5hdGVIYW5kbGluZ1NoaWZ0ZWRfICYmIG1fdXRpbENvbXBhcmU0XzsKKyAgICAgICAgYm9vbGVhbiBkb0hpcmFnYW5hNCA9IG1faXNIaXJhZ2FuYTRfICYmIG1fdXRpbENvbXBhcmU0XzsKKyAgICAKKyAgICAgICAgaWYgKGRvSGlyYWdhbmE0ICYmIGRvU2hpZnQ0KSB7CisgICAgICAgICAgICBTdHJpbmcgc291cmNlc3ViID0gc291cmNlLnN1YnN0cmluZyhvZmZzZXQpOworICAgICAgICAgICAgU3RyaW5nIHRhcmdldHN1YiA9IHRhcmdldC5zdWJzdHJpbmcob2Zmc2V0KTsKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQnlTb3J0S2V5cyhzb3VyY2VzdWIsIHRhcmdldHN1Yik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIFRoaXMgaXMgdGhlIGxvd2VzdCBwcmltYXJ5IHZhbHVlIHRoYXQgd2lsbCBub3QgYmUgaWdub3JlZCBpZiBzaGlmdGVkCisgICAgICAgIGludCBsb3dlc3RwdmFsdWUgPSBtX2lzQWx0ZXJuYXRlSGFuZGxpbmdTaGlmdGVkXyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBtX3ZhcmlhYmxlVG9wVmFsdWVfIDw8IDE2IDogMDsKKyAgICAgICAgbV9zcmNVdGlsQ0VCdWZmZXJTaXplXyA9IDA7CisgICAgICAgIG1fdGd0VXRpbENFQnVmZmVyU2l6ZV8gPSAwOworICAgICAgICBpbnQgcmVzdWx0ID0gZG9QcmltYXJ5Q29tcGFyZShkb0hpcmFnYW5hNCwgbG93ZXN0cHZhbHVlLCBzb3VyY2UsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQsIG9mZnNldCk7CisgICAgICAgIGlmIChtX3NyY1V0aWxDRUJ1ZmZlclNpemVfID09IC0xIAorICAgICAgICAgICAgJiYgbV90Z3RVdGlsQ0VCdWZmZXJTaXplXyA9PSAtMSkgeworICAgICAgICAgICAgLy8gc2luY2UgdGhlIGNlYnVmZmVyIGlzIGNsZWFyZWQgd2hlbiB3ZSBoYXZlIGRldGVybWluZWQgdGhhdAorICAgICAgICAgICAgLy8gZWl0aGVyIHNvdXJjZSBpcyBncmVhdGVyIHRoYW4gdGFyZ2V0IG9yIHZpY2UgdmVyc2EsIHRoZSByZXR1cm4KKyAgICAgICAgICAgIC8vIHJlc3VsdCBpcyB0aGUgY29tcGFyaXNvbiByZXN1bHQgYW5kIG5vdCB0aGUgaGlyYWdhbmEgcmVzdWx0CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9IAorICAgICAgICAKKyAgICAgICAgaW50IGhpcmFnYW5hcmVzdWx0ID0gcmVzdWx0OworICAgICAgICAKKyAgICAgICAgaWYgKG1fdXRpbENvbXBhcmUyXykgeworICAgICAgICAgICAgcmVzdWx0ID0gZG9TZWNvbmRhcnlDb21wYXJlKGRvRnJlbmNoKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLy8gZG9pbmcgdGhlIGNhc2UgYml0CisgICAgICAgIGlmIChtX3V0aWxDb21wYXJlMF8pIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IGRvQ2FzZUNvbXBhcmUoKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICB9ICAgCisgICAgICAgIH0KKyAgICAgICAgLy8gVGVydGlhcnkgbGV2ZWwKKyAgICAgICAgaWYgKG1fdXRpbENvbXBhcmUzXykgeworICAgICAgICAgICAgcmVzdWx0ID0gZG9UZXJ0aWFyeUNvbXBhcmUoKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgaWYgKGRvU2hpZnQ0KSB7ICAvLyBjaGVja1F1YWQKKyAgICAgICAgICAgIHJlc3VsdCA9IGRvUXVhdGVybmFyeUNvbXBhcmUobG93ZXN0cHZhbHVlKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0gCisgICAgICAgIGVsc2UgaWYgKGRvSGlyYWdhbmE0ICYmIGhpcmFnYW5hcmVzdWx0ICE9IDApIHsKKyAgICAgICAgICAgIC8vIElmIHdlJ3JlIGZpbmUgb24gcXVhdGVybmFyaWVzLCB3ZSBtaWdodCBiZSBkaWZmZXJlbnQKKyAgICAgICAgICAgIC8vIG9uIEhpcmFnYW5hLiBUaGlzLCBob3dldmVyLCBtaWdodCBmYWlsIHVzIGluIHNoaWZ0ZWQuCisgICAgICAgICAgICByZXR1cm4gaGlyYWdhbmFyZXN1bHQ7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgLy8gRm9yIElERU5USUNBTCBjb21wYXJpc29ucywgd2UgdXNlIGEgYml0d2lzZSBjaGFyYWN0ZXIgY29tcGFyaXNvbiAKKyAgICAgICAgLy8gYXMgYSB0aWVicmVha2VyIGlmIGFsbCBlbHNlIGlzIGVxdWFsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIC8vIEdldHRpbmcgaGVyZSAgc2hvdWxkIGJlIHF1aXRlIHJhcmUgLSBzdHJpbmdzIGFyZSBub3QgaWRlbnRpY2FsIC0gICAgIAorICAgICAgICAvLyB0aGF0IGlzIGNoZWNrZWQgZmlyc3QsIGJ1dCBjb21wYXJlZCA9PSB0aHJvdWdoIGFsbCBvdGhlciBjaGVja3MuICAKKyAgICAgICAgaWYgKG1fdXRpbENvbXBhcmU1XykgeworICAgICAgICAgICAgcmV0dXJuIGRvSWRlbnRpY2FsQ29tcGFyZShzb3VyY2UsIHRhcmdldCwgb2Zmc2V0LCB0cnVlKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgMiBieXRlcyBvZiBwcmltYXJ5IG9yZGVyIGFuZCBhZGRzIGl0IHRvIHRoZSBwcmltYXJ5IGJ5dGUgYXJyYXkKKyAgICAgKiBAcGFyYW0gY2UgY3VycmVudCBjZQorICAgICAqIEBwYXJhbSBub3RJc0NvbnRpbnVhdGlvbiBmbGFnIGluZGljYXRpbmcgaWYgdGhlIGN1cnJlbnQgYnl0ZXMgYmVsb25nIHRvIAorICAgICAqIAkJCWEgY29udGludWF0aW9uIGNlCisgICAgICogQHBhcmFtIGRvU2hpZnQgZmxhZyBpbmRpY2F0aW5nIGlmIGNlIGlzIHRvIGJlIHNoaWZ0ZWQKKyAgICAgKiBAcGFyYW0gbGVhZFByaW1hcnkgbGVhZCBwcmltYXJ5IHVzZWQgZm9yIGNvbXByZXNzaW9uCisgICAgICogQHBhcmFtIGNvbW1vbkJvdHRvbTQgY29tbW9uIGJ5dGUgdmFsdWUgZm9yIFF1YXRlcm5hcnkKKyAgICAgKiBAcGFyYW0gYm90dG9tQ291bnQ0IHNtYWxsZXN0IGJ5dGUgdmFsdWUgZm9yIFF1YXRlcm5hcnkKKyAgICAgKiBAcmV0dXJuIHRoZSBuZXcgbGVhZCBwcmltYXJ5IGZvciBjb21wcmVzc2lvbgorICAgICAqLworICAgIHByaXZhdGUgZmluYWwgaW50IGRvUHJpbWFyeUJ5dGVzKGludCBjZSwgYm9vbGVhbiBub3RJc0NvbnRpbnVhdGlvbiwgCisgICAgCQkJCQkJICAgICAgYm9vbGVhbiBkb1NoaWZ0LCBpbnQgbGVhZFByaW1hcnksCisgICAgCQkJCQkJICAgICAgaW50IGNvbW1vbkJvdHRvbTQsIGludCBib3R0b21Db3VudDQpCisgICAgeworICAgIAkKKyAgICAJaW50IHAyID0gKGNlID4+PSAxNikgJiBMQVNUX0JZVEVfTUFTS187IC8vIGluIGludHMgZm9yIHVuc2lnbmVkIAorICAgICAgICBpbnQgcDEgPSBjZSA+Pj4gODsgIC8vIGNvbXBhcmlzb24KKyAgICAJaWYgKGRvU2hpZnQpIHsKKyAgICAJCWlmIChtX3V0aWxDb3VudDRfID4gMCkgeworICAgICAgICAgICAgCXdoaWxlIChtX3V0aWxDb3VudDRfID4gYm90dG9tQ291bnQ0KSB7CisgICAgICAgICAgICAJCW1fdXRpbEJ5dGVzNF8gPSBhcHBlbmQobV91dGlsQnl0ZXM0XywgbV91dGlsQnl0ZXNDb3VudDRfLAorICAgICAgICAgICAgCQkJCSAgICAgICAgICAgICAoYnl0ZSkoY29tbW9uQm90dG9tNCArIGJvdHRvbUNvdW50NCkpOworICAgICAgICAgICAgICAgICAgICBtX3V0aWxCeXRlc0NvdW50NF8gKys7CisgICAgICAgICAgIAkJCW1fdXRpbENvdW50NF8gLT0gYm90dG9tQ291bnQ0OworICAgICAgICAgICAJCX0KKyAgICAgICAgICAgCQltX3V0aWxCeXRlczRfID0gYXBwZW5kKG1fdXRpbEJ5dGVzNF8sIG1fdXRpbEJ5dGVzQ291bnQ0XywKKwkJCQkJCQkgICAgICAgICAgIChieXRlKShjb21tb25Cb3R0b200IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgKG1fdXRpbENvdW50NF8gLSAxKSkpOworICAgICAgICAgICAgICAgIG1fdXRpbEJ5dGVzQ291bnQ0XyArKzsKKyAgICAgICAgICAgCQltX3V0aWxDb3VudDRfID0gMDsKKyAgICAgICAgCX0KKyAgICAgICAgCS8vIGRlYWxpbmcgd2l0aCBhIHZhcmlhYmxlIGFuZCB3ZSdyZSB0cmVhdGluZyB0aGVtIGFzIHNoaWZ0ZWQKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBzaGlmdGVkIGlnbm9yYWJsZQorICAgICAgICAgICAgaWYgKHAxICE9IDApIHsgCisgICAgICAgICAgICAgCS8vIHdlIG5lZWQgdG8gY2hlY2sgdGhpcyBzaW5jZSB3ZSBjb3VsZCBiZSBpbiBjb250aW51YXRpb24KKyAgICAgICAgICAgICAJbV91dGlsQnl0ZXM0XyA9IGFwcGVuZChtX3V0aWxCeXRlczRfLCBtX3V0aWxCeXRlc0NvdW50NF8sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ5dGUpcDEpOworICAgICAgICAgICAgICAgIG1fdXRpbEJ5dGVzQ291bnQ0XyArKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChwMiAhPSAwKSB7CisgICAgICAgICAgICAJbV91dGlsQnl0ZXM0XyA9IGFwcGVuZChtX3V0aWxCeXRlczRfLCBtX3V0aWxCeXRlc0NvdW50NF8sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ5dGUpcDIpOworICAgICAgICAgICAgICAgIG1fdXRpbEJ5dGVzQ291bnQ0XyArKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSAKKyAgICAgICAgZWxzZSB7CisgICAgICAgIAkvLyBOb3RlOiBUaGlzIGNvZGUgYXNzdW1lcyB0aGF0IHRoZSB0YWJsZSBpcyB3ZWxsIGJ1aWx0IAorICAgICAgICAJLy8gaS5lLiBub3QgaGF2aW5nIDAgYnl0ZXMgd2hlcmUgdGhleSBhcmUgbm90IHN1cHBvc2VkIHRvIGJlLgorICAgICAgIAkJLy8gVXN1YWxseSwgd2UnbGwgaGF2ZSBub24temVybyBwcmltYXJ5MSAmIHByaW1hcnkyLCBleGNlcHQgCisgICAgICAJCS8vIGluIGNhc2VzIG9mIExhdGluT25lIGFuZCBmcmllbmRzLCB3aGVuIHByaW1hcnkyIHdpbGwgYmUKKyAgICAgICAJCS8vIHJlZ3VsYXIgYW5kIHNpbXBsZSBzb3J0a2V5IGNhbGMgCisgICAgICAgCQlpZiAocDEgIT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLklHTk9SQUJMRSkgeworICAgICAgICAgICAJCWlmIChub3RJc0NvbnRpbnVhdGlvbikgeworICAgICAgICAgICAJCQlpZiAobGVhZFByaW1hcnkgPT0gcDEpIHsKKyAgICAgICAgICAgICAgIAkJCW1fdXRpbEJ5dGVzMV8gPSBhcHBlbmQobV91dGlsQnl0ZXMxXywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXRpbEJ5dGVzQ291bnQxXywgKGJ5dGUpcDIpOworICAgICAgICAgICAgICAgICAgICAgICAgbV91dGlsQnl0ZXNDb3VudDFfICsrOworICAgICAgICAgICAJCQl9IAorICAgICAgICAgICAgICAgICAgCWVsc2UgeworICAgICAgICAgICAgICAgICAgICAJaWYgKGxlYWRQcmltYXJ5ICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgCQltX3V0aWxCeXRlczFfID0gYXBwZW5kKG1fdXRpbEJ5dGVzMV8sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91dGlsQnl0ZXNDb3VudDFfLCAKKyAgICAgICAgICAgICAgICAgICAgCQkJCShieXRlKSgocDEgPiBsZWFkUHJpbWFyeSkgCisgICAgICAgICAgICAgICAgICAgIAkJCQkJCT8gQllURV9VTlNISUZURURfTUFYXyAKKyAgICAgICAgICAgICAgICAgICAgICAJCQkJCQk6IEJZVEVfVU5TSElGVEVEX01JTl8pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3V0aWxCeXRlc0NvdW50MV8gKys7CisgICAgICAgICAgICAgICAgICAgIAl9CisgICAgICAgICAgICAgICAgICAgIAlpZiAocDIgPT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLklHTk9SQUJMRSkgeworICAgICAgICAgICAgICAgICAgICAJCS8vIG9uZSBieXRlciwgbm90IGNvbXByZXNzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIAltX3V0aWxCeXRlczFfID0gYXBwZW5kKG1fdXRpbEJ5dGVzMV8sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91dGlsQnl0ZXNDb3VudDFfLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChieXRlKXAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3V0aWxCeXRlc0NvdW50MV8gKys7CisgICAgICAgICAgICAgICAgICAgICAgICAJbGVhZFByaW1hcnkgPSAwOworICAgICAgICAgICAgICAgICAgICAJfSAKKyAgICAgICAgICAgICAgICAgICAgCWVsc2UgaWYgKHAxIDwgQllURV9GSVJTVF9OT05fTEFUSU5fUFJJTUFSWV8KKyAgICAgICAgICAgICAgICAgICAgCQkgIHx8IChwMSAKKyAgICAgICAgICAgICAgICAgICAgPiAoUnVsZUJhc2VkQ29sbGF0b3IuVUNBX0NPTlNUQU5UU18uTEFTVF9OT05fVkFSSUFCTEVfWzBdIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+Pj4gMjQpCisgICAgICAgICAgICAgICAgICAgIAkJCSYmIHAxIAorICAgICAgICAgICAgICAgICAgICA8IChSdWxlQmFzZWRDb2xsYXRvci5VQ0FfQ09OU1RBTlRTXy5GSVJTVF9JTVBMSUNJVF9bMF0gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4+PiAyNCkpKSB7CisgICAgICAgICAgICAgICAgICAgIAkJCS8vIG5vdCBjb21wcmVzc2libGUKKyAgICAgICAgICAgICAgICAgICAgICAgIAkJbGVhZFByaW1hcnkgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgCQltX3V0aWxCeXRlczFfID0gYXBwZW5kKG1fdXRpbEJ5dGVzMV8sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXRpbEJ5dGVzQ291bnQxXywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ5dGUpcDEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3V0aWxCeXRlc0NvdW50MV8gKys7CisgICAgICAgICAgICAgICAgICAgICAgICAJCW1fdXRpbEJ5dGVzMV8gPSBhcHBlbmQobV91dGlsQnl0ZXMxXywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91dGlsQnl0ZXNDb3VudDFfLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnl0ZSlwMik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXRpbEJ5dGVzQ291bnQxXyArKzsKKyAgICAgICAgICAgICAgICAgICAgCX0gCisgICAgICAgICAgICAgICAgICAgIAllbHNlIHsgLy8gY29tcHJlc3MKKyAgICAgICAgICAgICAgICAgICAgCQlsZWFkUHJpbWFyeSA9IHAxOworICAgICAgICAgICAgICAgICAgICAgICAgCW1fdXRpbEJ5dGVzMV8gPSBhcHBlbmQobV91dGlsQnl0ZXMxXywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3V0aWxCeXRlc0NvdW50MV8sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ5dGUpcDEpOworICAgICAgICAgICAgICAgICAgICAgICAgCW1fdXRpbEJ5dGVzQ291bnQxXyArKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3V0aWxCeXRlczFfID0gYXBwZW5kKG1fdXRpbEJ5dGVzMV8sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3V0aWxCeXRlc0NvdW50MV8sIChieXRlKXAyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3V0aWxCeXRlc0NvdW50MV8gKys7CisgICAgICAgICAgICAgICAgICAgIAl9CisgICAgICAgICAgICAgICAgICAJfQorICAgICAgICAgICAgICAgIH0gCisgICAgICAgICAgICAgICAgZWxzZSB7IAorICAgICAgICAgICAgICAgIAkvLyBjb250aW51YXRpb24sIGFkZCBwcmltYXJ5IHRvIHRoZSBrZXksIG5vIGNvbXByZXNzaW9uCisgICAgICAgICAgICAgICAgICAJbV91dGlsQnl0ZXMxXyA9IGFwcGVuZChtX3V0aWxCeXRlczFfLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3V0aWxCeXRlc0NvdW50MV8sIChieXRlKXAxKTsKKyAgICAgICAgICAgICAgICAgICAgbV91dGlsQnl0ZXNDb3VudDFfICsrOworICAgICAgICAgICAgICAgICAgCWlmIChwMiAhPSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuSUdOT1JBQkxFKSB7CisgICAgICAgICAgICAgICAgICAgIAltX3V0aWxCeXRlczFfID0gYXBwZW5kKG1fdXRpbEJ5dGVzMV8sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXRpbEJ5dGVzQ291bnQxXywgKGJ5dGUpcDIpOyAKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNlY29uZCBwYXJ0CisgICAgICAgICAgICAgICAgICAgICAgICBtX3V0aWxCeXRlc0NvdW50MV8gKys7CisgICAgICAgICAgICAgICAgICAJfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAJfQorICAgICAgIAlyZXR1cm4gbGVhZFByaW1hcnk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEdldHMgdGhlIHNlY29uZGFyeSBieXRlIGFuZCBhZGRzIGl0IHRvIHRoZSBzZWNvbmRhcnkgYnl0ZSBhcnJheQorICAgICAqIEBwYXJhbSBjZSBjdXJyZW50IGNlCisgICAgICogQHBhcmFtIG5vdElzQ29udGludWF0aW9uIGZsYWcgaW5kaWNhdGluZyBpZiB0aGUgY3VycmVudCBieXRlcyBiZWxvbmcgdG8gCisgICAgICogCQkJYSBjb250aW51YXRpb24gY2UKKyAgICAgKiBAcGFyYW0gZG9GcmVuY2ggZmxhZyBpbmRpY2F0b3IgaWYgZnJlbmNoIHNvcnQgaXMgdG8gYmUgcGVyZm9ybWVkCisgICAgICovCisgICAgcHJpdmF0ZSBmaW5hbCB2b2lkIGRvU2Vjb25kYXJ5Qnl0ZXMoaW50IGNlLCBib29sZWFuIG5vdElzQ29udGludWF0aW9uLAorICAgIAkJCQkJCSAJCSAgICBib29sZWFuIGRvRnJlbmNoKQorICAgIHsKKyAgICAJaW50IHMgPSAoY2UgPj49IDgpICYgTEFTVF9CWVRFX01BU0tfOyAvLyBpbnQgZm9yIGNvbXBhcmlzb24KKyAgICAJaWYgKHMgIT0gMCkgeworICAgIAkJaWYgKCFkb0ZyZW5jaCkgeworICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgY29tcHJlc3Npb24gY29kZS4KKyAgICAgICAgICAgICAgICBpZiAocyA9PSBDT01NT05fMl8gJiYgbm90SXNDb250aW51YXRpb24pIHsKKyAgICAgICAgICAgICAgICAgICBtX3V0aWxDb3VudDJfICsrOworICAgICAgICAgICAgICAgIH0gCisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAJaWYgKG1fdXRpbENvdW50Ml8gPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIAlpZiAocyA+IENPTU1PTl8yXykgeyAvLyBub3QgbmVjZXNzYXJ5IGZvciA0dGggbGV2ZWwuCisgICAgICAgICAgICAgICAgICAgIAkJd2hpbGUgKG1fdXRpbENvdW50Ml8gPiBUT1BfQ09VTlRfMl8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIAkJbV91dGlsQnl0ZXMyXyA9IGFwcGVuZChtX3V0aWxCeXRlczJfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXRpbEJ5dGVzQ291bnQyXywKKyAgICAgICAgICAgICAgICAgICAgICAgIAkJCQkoYnl0ZSkoQ09NTU9OX1RPUF8yXyAtIFRPUF9DT1VOVF8yXykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3V0aWxCeXRlc0NvdW50Ml8gKys7CisgICAgICAgICAgICAgICAgICAgICAgICAJCW1fdXRpbENvdW50Ml8gLT0gVE9QX0NPVU5UXzJfOworICAgICAgICAgICAgICAgICAgICAgIAkJfQorICAgICAgICAgICAgICAgICAgICAgIAkJbV91dGlsQnl0ZXMyXyA9IGFwcGVuZChtX3V0aWxCeXRlczJfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91dGlsQnl0ZXNDb3VudDJfLAorICAgICAgICAgICAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAgICAoYnl0ZSkoQ09NTU9OX1RPUF8yXyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIChtX3V0aWxDb3VudDJfIC0gMSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3V0aWxCeXRlc0NvdW50Ml8gKys7CisgICAgICAgICAgICAgICAgICAgIAl9IAorICAgICAgICAgICAgICAgICAgICAJZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIAkJd2hpbGUgKG1fdXRpbENvdW50Ml8gPiBCT1RUT01fQ09VTlRfMl8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIAkJbV91dGlsQnl0ZXMyXyA9IGFwcGVuZChtX3V0aWxCeXRlczJfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXRpbEJ5dGVzQ291bnQyXywKKyAgICAgICAgICAgICAgICAgICAgICAgIAkJCShieXRlKShDT01NT05fQk9UVE9NXzJfICsgQk9UVE9NX0NPVU5UXzJfKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXRpbEJ5dGVzQ291bnQyXyArKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIAkJbV91dGlsQ291bnQyXyAtPSBCT1RUT01fQ09VTlRfMl87CisgICAgICAgICAgICAgICAgICAgICAgCQl9CisgICAgICAgICAgICAgICAgICAgICAgCQltX3V0aWxCeXRlczJfID0gYXBwZW5kKG1fdXRpbEJ5dGVzMl8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3V0aWxCeXRlc0NvdW50Ml8sCisgICAgICAgICAgICAgICAgICAgICAgCQkJCSAgICAgICAgICAgICAgIChieXRlKShDT01NT05fQk9UVE9NXzJfIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgKG1fdXRpbENvdW50Ml8gLSAxKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXRpbEJ5dGVzQ291bnQyXyArKzsKKyAgICAgICAgICAgICAgICAgICAgCX0KKyAgICAgICAgICAgICAgICAgICAgCW1fdXRpbENvdW50Ml8gPSAwOworICAgICAgICAgICAgICAgICAgCX0KKyAgICAgICAgICAgICAgICAgIAltX3V0aWxCeXRlczJfID0gYXBwZW5kKG1fdXRpbEJ5dGVzMl8sIG1fdXRpbEJ5dGVzQ291bnQyXywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ5dGUpcyk7CisgICAgICAgICAgICAgICAgICAgIG1fdXRpbEJ5dGVzQ291bnQyXyArKzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IAorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICBtX3V0aWxCeXRlczJfID0gYXBwZW5kKG1fdXRpbEJ5dGVzMl8sIG1fdXRpbEJ5dGVzQ291bnQyXywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChieXRlKXMpOworICAgICAgICAgICAgICAgICAgbV91dGlsQnl0ZXNDb3VudDJfICsrOworICAgICAgICAgICAgICAgICAgLy8gRG8gdGhlIHNwZWNpYWwgaGFuZGxpbmcgZm9yIEZyZW5jaCBzZWNvbmRhcmllcworICAgICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBnZXQgY29udGludWF0aW9uIGVsZW1lbnRzIGFuZCBkbyBpbnRlcm1lZGlhdGUgCisgICAgICAgICAgICAgICAgICAvLyByZXN0b3JlIAorICAgICAgICAgICAgICAgICAgLy8gYWJjMWMyYzNkZSB3aXRoIGZyZW5jaCBzZWNvbmRhcmllcyBuZWVkIHRvIGJlIGVkYzFjMmMzYmEgCisgICAgICAgICAgICAgICAgICAvLyBOT1QgZWRjM2MyYzFiYQorICAgICAgICAgICAgICAgICAgaWYgKG5vdElzQ29udGludWF0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIAlpZiAobV91dGlsRnJlbmNoU3RhcnRfICE9IC0xKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAJLy8gcmV2ZXJzZSBzZWNvbmRhcmllcyBmcm9tIGZyZW5jaFN0YXJ0UHRyIHVwIHRvIAorICAgICAgICAgICAgICAgICAgICAgICAgCS8vIGZyZW5jaEVuZFB0cgorICAgICAgICAgICAgICAgICAgICAgIAkJcmV2ZXJzZUJ1ZmZlcihtX3V0aWxCeXRlczJfKTsKKyAgICAgICAgICAgICAgICAgICAgICAJCW1fdXRpbEZyZW5jaFN0YXJ0XyA9IC0xOyAKKyAgICAgICAgICAgICAgICAgICAgCX0KKyAgICAgICAgICAgICAgICAgIH0gCisgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgCWlmIChtX3V0aWxGcmVuY2hTdGFydF8gPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAJCW1fdXRpbEZyZW5jaFN0YXJ0XyAgPSBtX3V0aWxCeXRlc0NvdW50Ml8gLSAyOworICAgICAgICAgICAgICAgICAgICAJfQorICAgICAgICAgICAgICAgICAgICAJbV91dGlsRnJlbmNoRW5kXyA9IG1fdXRpbEJ5dGVzQ291bnQyXyAtIDE7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgIAl9CisgICAgCX0KKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmV2ZXJzZSB0aGUgYXJndW1lbnQgYnVmZmVyIAorICAgICAqIEBwYXJhbSBidWZmZXIgdG8gcmV2ZXJzZQorICAgICAqLworICAgIHByaXZhdGUgdm9pZCByZXZlcnNlQnVmZmVyKGJ5dGUgYnVmZmVyW10pIAorICAgIHsgCisgICAgCWludCBzdGFydCA9IG1fdXRpbEZyZW5jaFN0YXJ0XzsKKyAgICAJaW50IGVuZCA9IG1fdXRpbEZyZW5jaEVuZF87CisgICAgCXdoaWxlIChzdGFydCA8IGVuZCkgeyAKKyAgICAJCWJ5dGUgYiA9IGJ1ZmZlcltzdGFydF07IAorICAgIAkJYnVmZmVyW3N0YXJ0ICsrXSA9IGJ1ZmZlcltlbmRdOyAKKyAgICAJCWJ1ZmZlcltlbmQgLS1dID0gYjsgCisgICAgCX0KKwl9CisKKwkvKioKKwkgKiBJbnNlcnQgdGhlIGNhc2Ugc2hpZnRpbmcgYnl0ZSBpZiByZXF1aXJlZAorCSAqIEBwYXJhbSBjYXNlc2hpZnQgdmFsdWUKKwkgKiBAcmV0dXJuIG5ldyBjYXNlc2hpZnQgdmFsdWUKKwkgKi8KKwlwcml2YXRlIGZpbmFsIGludCBkb0Nhc2VTaGlmdChpbnQgY2FzZXNoaWZ0KSAKKwl7CisgIAkJaWYgKGNhc2VzaGlmdCAgPT0gMCkgeworICAgIAkJbV91dGlsQnl0ZXMwXyA9IGFwcGVuZChtX3V0aWxCeXRlczBfLCBtX3V0aWxCeXRlc0NvdW50MF8sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTT1JUX0NBU0VfQllURV9TVEFSVF8pOworICAgICAgICAgICAgbV91dGlsQnl0ZXNDb3VudDBfICsrOworICAgIAkJY2FzZXNoaWZ0ID0gU09SVF9DQVNFX1NISUZUX1NUQVJUXzsKKyAgCQl9CisgIAkJcmV0dXJuIGNhc2VzaGlmdDsKKwl9CisKKwkvKioKKwkgKiBQZXJmb3JtcyB0aGUgY2FzaW5nIHNvcnQKKwkgKiBAcGFyYW0gdGVydGlhcnkgYnl0ZSBpbiBpbnRzIGZvciBlYXN5IGNvbXBhcmlzb24KKwkgKiBAcGFyYW0gbm90SXNDb250aW51YXRpb24gZmxhZyBpbmRpY2F0aW5nIGlmIHRoZSBjdXJyZW50IGJ5dGVzIGJlbG9uZyB0byAKKyAgICAgKiAJCQlhIGNvbnRpbnVhdGlvbiBjZQorCSAqIEBwYXJhbSBjYXNlc2hpZnQKKwkgKiBAcmV0dXJuIHRoZSBuZXcgdmFsdWUgb2YgY2FzZSBzaGlmdAorCSAqLworCXByaXZhdGUgZmluYWwgaW50IGRvQ2FzZUJ5dGVzKGludCB0ZXJ0aWFyeSwgYm9vbGVhbiBub3RJc0NvbnRpbnVhdGlvbiwgCisJCQkJCQkJICAgICAgaW50IGNhc2VzaGlmdCkKKwl7CisJCWNhc2VzaGlmdCA9IGRvQ2FzZVNoaWZ0KGNhc2VzaGlmdCk7CisgICAgICAgICAgICAgIAkJCisgICAgICAgIGlmIChub3RJc0NvbnRpbnVhdGlvbiAmJiB0ZXJ0aWFyeSAhPSAwKSB7CisgICAgICAgIAlieXRlIGNhc2ViaXRzID0gKGJ5dGUpKHRlcnRpYXJ5ICYgMHhDMCk7CisgICAgICAgICAgICBpZiAobV9jYXNlRmlyc3RfID09IEF0dHJpYnV0ZVZhbHVlLlVQUEVSX0ZJUlNUXykgeworICAgICAgICAgICAgICAgIGlmIChjYXNlYml0cyA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIG1fdXRpbEJ5dGVzMF9bbV91dGlsQnl0ZXNDb3VudDBfIC0gMV0gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8PSAoMSA8PCAoLS0gY2FzZXNoaWZ0KSk7CisgICAgICAgICAgICAgICAgfSAKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgIC8vIHNlY29uZCBiaXQKKyAgICAgICAgICAgICAgICAgICAgIGNhc2VzaGlmdCA9IGRvQ2FzZVNoaWZ0KGNhc2VzaGlmdCAtIDEpOworICAgICAgICAgICAgICAgICAgICAgbV91dGlsQnl0ZXMwX1ttX3V0aWxCeXRlc0NvdW50MF8gLSAxXSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHw9ICgoY2FzZWJpdHMgPj4gNikgJiAxKSA8PCAoLS0gY2FzZXNoaWZ0KTsKKyAgICAgICAgICAgICAgICB9IAorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGNhc2ViaXRzICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgbV91dGlsQnl0ZXMwX1ttX3V0aWxCeXRlc0NvdW50MF8gLSAxXSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfD0gMSA8PCAoLS0gY2FzZXNoaWZ0KTsKKyAgICAgICAgICAgICAgICAgICAgLy8gc2Vjb25kIGJpdAorICAgICAgICAgICAgICAgICAgICBjYXNlc2hpZnQgPSBkb0Nhc2VTaGlmdChjYXNlc2hpZnQpOworICAgICAgICAgICAgICAgICAgICBtX3V0aWxCeXRlczBfW21fdXRpbEJ5dGVzQ291bnQwXyAtIDFdIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHw9ICgoY2FzZWJpdHMgPj4gNykgJiAxKSA8PCAoLS0gY2FzZXNoaWZ0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2VzaGlmdCAtLTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgICAgICAKKwkJcmV0dXJuIGNhc2VzaGlmdDsKKwl9CisJCisJLyoqCisJICogR2V0cyB0aGUgdGVydGlhcnkgYnl0ZSBhbmQgYWRkcyBpdCB0byB0aGUgdGVydGlhcnkgYnl0ZSBhcnJheQorICAgICAqIEBwYXJhbSB0ZXJ0aWFyeSBieXRlIGluIGludCBmb3IgZWFzeSBjb21wYXJpc29uCisgICAgICogQHBhcmFtIG5vdElzQ29udGludWF0aW9uIGZsYWcgaW5kaWNhdGluZyBpZiB0aGUgY3VycmVudCBieXRlcyBiZWxvbmcgdG8gCisgICAgICogCQkJYSBjb250aW51YXRpb24gY2UKKwkgKi8KKwlwcml2YXRlIGZpbmFsIHZvaWQgZG9UZXJ0aWFyeUJ5dGVzKGludCB0ZXJ0aWFyeSwgYm9vbGVhbiBub3RJc0NvbnRpbnVhdGlvbikKKwl7CisJCWlmICh0ZXJ0aWFyeSAhPSAwKSB7CisJCQkvLyBUaGlzIGlzIGNvbXByZXNzaW9uIGNvZGUuCisgICAgICAgICAgICAvLyBzZXF1ZW5jZSBzaXplIGNoZWNrIGlzIGluY2x1ZGVkIGluIHRoZSBpZiBjbGF1c2UKKyAgICAgICAgICAgIGlmICh0ZXJ0aWFyeSA9PSBtX2NvbW1vbjNfICYmIG5vdElzQ29udGludWF0aW9uKSB7CisgICAgICAgICAgICAgICAgIG1fdXRpbENvdW50M18gKys7CisgICAgICAgICAgICB9IAorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAJaW50IGNvbW1vbjMgPSBtX2NvbW1vbjNfICYgTEFTVF9CWVRFX01BU0tfOworICAgICAgICAgICAgICAgIGlmICh0ZXJ0aWFyeSA+IGNvbW1vbjMgJiYgbV9jb21tb24zXyA9PSBDT01NT05fTk9STUFMXzNfKSB7CisgICAgICAgICAgICAgICAgICAgIHRlcnRpYXJ5ICs9IG1fYWRkaXRpb24zXzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAodGVydGlhcnkgPD0gY29tbW9uMyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAmJiBtX2NvbW1vbjNfID09IENPTU1PTl9VUFBFUl9GSVJTVF8zXykgeworICAgICAgICAgICAgICAgICAgICB0ZXJ0aWFyeSAtPSBtX2FkZGl0aW9uM187CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChtX3V0aWxDb3VudDNfID4gMCkgeworICAgICAgICAgICAgICAgIAlpZiAodGVydGlhcnkgPiBjb21tb24zKSB7CisgICAgICAgICAgICAgICAgCQl3aGlsZSAobV91dGlsQ291bnQzXyA+IG1fdG9wQ291bnQzXykgeworICAgICAgICAgICAgICAgICAgICAgICAgCW1fdXRpbEJ5dGVzM18gPSBhcHBlbmQobV91dGlsQnl0ZXMzXywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3V0aWxCeXRlc0NvdW50M18sCisgICAgICAgICAgICAgICAgICAgICAgICAJCQkJCShieXRlKShtX3RvcDNfIC0gbV90b3BDb3VudDNfKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91dGlsQnl0ZXNDb3VudDNfICsrOworICAgICAgICAgICAgICAgICAgICAgICAgCW1fdXRpbENvdW50M18gLT0gbV90b3BDb3VudDNfOworICAgICAgICAgICAgICAgICAgICAgIAl9CisgICAgICAgICAgICAgICAgICAgICAgCW1fdXRpbEJ5dGVzM18gPSBhcHBlbmQobV91dGlsQnl0ZXMzXywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXRpbEJ5dGVzQ291bnQzXywKKyAgICAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgKGJ5dGUpKG1fdG9wM18gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIChtX3V0aWxDb3VudDNfIC0gMSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXRpbEJ5dGVzQ291bnQzXyArKzsKKyAgICAgICAgICAgICAgICAgCX0gCisgICAgICAgICAgICAgICAgIAllbHNlIHsKKyAgICAgICAgICAgICAgICAgCQl3aGlsZSAobV91dGlsQ291bnQzXyA+IG1fYm90dG9tQ291bnQzXykgeworICAgICAgICAgICAgICAgICAgICAgICAgCW1fdXRpbEJ5dGVzM18gPSBhcHBlbmQobV91dGlsQnl0ZXMzXywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3V0aWxCeXRlc0NvdW50M18sCisgICAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgIChieXRlKShtX2JvdHRvbTNfICsgbV9ib3R0b21Db3VudDNfKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91dGlsQnl0ZXNDb3VudDNfICsrOworICAgICAgICAgICAgICAgICAgICAgICAgCW1fdXRpbENvdW50M18gLT0gbV9ib3R0b21Db3VudDNfOworICAgICAgICAgICAgICAgICAgICAgIAl9CisgICAgICAgICAgICAgICAgICAgICAgCW1fdXRpbEJ5dGVzM18gPSBhcHBlbmQobV91dGlsQnl0ZXMzXywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXRpbEJ5dGVzQ291bnQzXywKKyAgICAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgKGJ5dGUpKG1fYm90dG9tM18gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIChtX3V0aWxDb3VudDNfIC0gMSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fdXRpbEJ5dGVzQ291bnQzXyArKzsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBtX3V0aWxDb3VudDNfID0gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbV91dGlsQnl0ZXMzXyA9IGFwcGVuZChtX3V0aWxCeXRlczNfLCBtX3V0aWxCeXRlc0NvdW50M18sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ5dGUpdGVydGlhcnkpOworICAgICAgICAgICAgICAgIG1fdXRpbEJ5dGVzQ291bnQzXyArKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCX0KKwkKKwkvKioKKwkgKiBHZXRzIHRoZSBRdWF0ZXJuYXJ5IGJ5dGUgYW5kIGFkZHMgaXQgdG8gdGhlIFF1YXRlcm5hcnkgYnl0ZSBhcnJheQorICAgICAqIEBwYXJhbSBpc0NvZGVQb2ludEhpcmFnYW5hIGZsYWcgaW5kaWNhdG9yIGlmIHRoZSBwcmV2aW91cyBjb2RlcG9pbnQgCisgICAgICogCQkJd2UgZGVhbHQgd2l0aCB3YXMgSGlyYWdhbmEKKyAgICAgKiBAcGFyYW0gY29tbW9uQm90dG9tNCBzbWFsbGVzdCBjb21tb24gUXVhdGVybmFyeSBieXRlIAorICAgICAqIEBwYXJhbSBib3R0b21Db3VudDQgc21hbGxlc3QgUXVhdGVybmFyeSBieXRlIAorICAgICAqIEBwYXJhbSBoaXJhZ2FuYTQgaGlyYWdhbmEgUXVhdGVybmFyeSBieXRlCisJICovCisJcHJpdmF0ZSBmaW5hbCB2b2lkIGRvUXVhdGVybmFyeUJ5dGVzKGJvb2xlYW4gaXNDb2RlUG9pbnRIaXJhZ2FuYSwKKwkJCQkJCQkJCSAgaW50IGNvbW1vbkJvdHRvbTQsIGludCBib3R0b21Db3VudDQsCisJCQkJCQkJCQkgIGJ5dGUgaGlyYWdhbmE0KQorCXsKKwkJaWYgKGlzQ29kZVBvaW50SGlyYWdhbmEpIHsgLy8gVGhpcyB3YXMgSGlyYWdhbmEsIG5lZWQgdG8gbm90ZSBpdAorCQkJaWYgKG1fdXRpbENvdW50NF8gPiAwKSB7IC8vIENsb3NlIHRoaXMgcGFydAorICAgICAgICAgICAgCXdoaWxlIChtX3V0aWxDb3VudDRfID4gYm90dG9tQ291bnQ0KSB7CisgICAgICAgICAgICAgICAgICAgIG1fdXRpbEJ5dGVzNF8gPSBhcHBlbmQobV91dGlsQnl0ZXM0XywgbV91dGlsQnl0ZXNDb3VudDRfLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnl0ZSkoY29tbW9uQm90dG9tNCAKKyAgICAgICAgICAgICAgICAgICAgCQkJCQkJCQkJKyBib3R0b21Db3VudDQpKTsKKyAgICAgICAgICAgICAgICAgICAgbV91dGlsQnl0ZXNDb3VudDRfICsrOworICAgICAgICAgICAgICAgICAgICBtX3V0aWxDb3VudDRfIC09IGJvdHRvbUNvdW50NDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbV91dGlsQnl0ZXM0XyA9IGFwcGVuZChtX3V0aWxCeXRlczRfLCBtX3V0aWxCeXRlc0NvdW50NF8sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnl0ZSkoY29tbW9uQm90dG9tNCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgKG1fdXRpbENvdW50NF8gLSAxKSkpOworICAgICAgICAgICAgICAgIG1fdXRpbEJ5dGVzQ291bnQ0XyArKzsKKyAgICAgICAgICAgICAgICBtX3V0aWxDb3VudDRfID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fdXRpbEJ5dGVzNF8gPSBhcHBlbmQobV91dGlsQnl0ZXM0XywgbV91dGlsQnl0ZXNDb3VudDRfLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlyYWdhbmE0KTsgLy8gQWRkIHRoZSBIaXJhZ2FuYQorICAgICAgICAgICAgbV91dGlsQnl0ZXNDb3VudDRfICsrOworICAgICAgICB9IAorICAgICAgICBlbHNlIHsgLy8gVGhpcyB3YXNuJ3QgSGlyYWdhbmEsIHNvIHdlIGNhbiBjb250aW51ZSBhZGRpbmcgc3R1ZmYKKyAgICAgICAgICAgIG1fdXRpbENvdW50NF8gKys7CisgICAgICAgIH0KKwl9CisJCisJLyoqCisJICogSXRlcmF0ZXMgdGhyb3VnaCB0aGUgYXJndW1lbnQgc3RyaW5nIGZvciBhbGwgY2VzLgorCSAqIFNwbGl0IHRoZSBjZXMgaW50byB0aGVpciByZWxldmFudCBwcmltYXJpZXMsIHNlY29uZGFyaWVzIGV0Yy4KKwkgKiBAcGFyYW0gc291cmNlIG5vcm1hbGl6ZWQgc3RyaW5nCisJICogQHBhcmFtIGRvRnJlbmNoIGZsYWcgaW5kaWNhdG9yIGlmIHNwZWNpYWwgaGFuZGxpbmcgb2YgRnJlbmNoIGhhcyB0byBiZQorCSAqIAkJCQkJZG9uZQorCSAqIEBwYXJhbSBoaXJhZ2FuYTQgb2Zmc2V0IGZvciBIaXJhZ2FuYSBxdWF0ZXJuYXJ5CisJICogQHBhcmFtIGNvbW1vbkJvdHRvbTQgc21hbGxlc3QgY29tbW9uIHF1YXRlcm5hcnkgYnl0ZQorCSAqIEBwYXJhbSBib3R0b21Db3VudDQgc21hbGxlc3QgcXVhdGVybmFyeSBieXRlCisJICovCisJcHJpdmF0ZSBmaW5hbCB2b2lkIGdldFNvcnRLZXlCeXRlcyhTdHJpbmcgc291cmNlLCBib29sZWFuIGRvRnJlbmNoLAorCQkJCQkJCQkJICAgYnl0ZSBoaXJhZ2FuYTQsIGludCBjb21tb25Cb3R0b200LCAKKwkJCQkJCQkJCSAgIGludCBib3R0b21Db3VudDQpCisJCQkJCQkJCQkgICAKKwl7CisJCWludCBiYWNrdXBEZWNvbXBvc2l0aW9uID0gZ2V0RGVjb21wb3NpdGlvbigpOworCQlzZXREZWNvbXBvc2l0aW9uKE5PX0RFQ09NUE9TSVRJT04pOyAvLyBoYXZlIHRvIHJldmVydCB0byBiYWNrdXAgbGF0ZXIKKyAgICAJbV9zcmNVdGlsSXRlcl8uc2V0VGV4dChzb3VyY2UpOworICAgICAgICBtX3NyY1V0aWxDb2xFSXRlcl8uc2V0VGV4dChtX3NyY1V0aWxJdGVyXyk7CisgICAgCW1fdXRpbEZyZW5jaFN0YXJ0XyA9IC0xOyAKKyAgICAgICAgbV91dGlsRnJlbmNoRW5kXyA9IC0xOworICAgIAkKKyAgICAJLy8gc2NyaXB0b3JkZXIgbm90IGltcGxlbWVudGVkIHlldCAKKyAgICAJLy8gY29uc3QgdWludDhfdCAqc2NyaXB0T3JkZXIgPSBjb2xsLT5zY3JpcHRPcmRlcjsKKworCQlib29sZWFuIGRvU2hpZnQgPSBmYWxzZTsKKyAgICAJYm9vbGVhbiBub3RJc0NvbnRpbnVhdGlvbiA9IGZhbHNlOworCisgICAgCWludCBsZWFkUHJpbWFyeSA9IDA7IC8vIGludCBmb3IgZWFzaWVyIGNvbXBhcmlzb24KKyAgICAJaW50IGNhc2VTaGlmdCA9IDA7CisJICAgIAorICAgIAl3aGlsZSAodHJ1ZSkgeworICAgICAgICAJaW50IGNlID0gbV9zcmNVdGlsQ29sRUl0ZXJfLm5leHQoKTsKKyAgICAgICAgICAgIGlmIChjZSA9PSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuTlVMTE9SREVSKSB7CisgICAgICAgICAgICAJYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChjZSA9PSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuSUdOT1JBQkxFKSB7CisgICAgICAgICAgICAJY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG5vdElzQ29udGludWF0aW9uID0gIWlzQ29udGludWF0aW9uKGNlKTsKKworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIGlmIChub3RJc0NvbnRpbnVhdGlvbikgeworICAgICAgICAgICAgCQlpZiAoc2NyaXB0T3JkZXIgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIAkJcHJpbWFyeTEgPSBzY3JpcHRPcmRlcltwcmltYXJ5MV07CisgICAgICAgICAgICAgIAkJfQorICAgICAgICAgICAgCX0qLworICAgICAgICAgICAgYm9vbGVhbiBpc1ByaW1hcnlCeXRlSWdub3JhYmxlID0gKGNlICYgQ0VfUFJJTUFSWV9NQVNLXykgPT0gMDsKKyAgICAgICAgICAgIC8vIGFjdHVhbGx5IHdlIGNhbiBqdXN0IGNoZWNrIHRoYXQgdGhlIGZpcnN0IGJ5dGUgaXMgMAorICAgICAgICAgICAgLy8gZ2VuZXJhdGlvbiBzdHVmZnMgdGhlIG9yZGVyIGxlZnQgZmlyc3QKKyAgICAgICAgICAgIGJvb2xlYW4gaXNTbWFsbGVyVGhhblZhcmlhYmxlVG9wID0gKGNlID4+PiBDRV9QUklNQVJZX1NISUZUXykgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw9IG1fdmFyaWFibGVUb3BWYWx1ZV87CisgICAgICAgICAgICBkb1NoaWZ0ID0gKG1faXNBbHRlcm5hdGVIYW5kbGluZ1NoaWZ0ZWRfIAorICAgICAgICAgICAgCQkJJiYgKChub3RJc0NvbnRpbnVhdGlvbiAmJiBpc1NtYWxsZXJUaGFuVmFyaWFibGVUb3AgCisgICAgCQkJCQkJJiYgIWlzUHJpbWFyeUJ5dGVJZ25vcmFibGUpIC8vIHByaW1hcnkgYnl0ZSBub3QgMAorICAgIAkJCQkJfHwgKCFub3RJc0NvbnRpbnVhdGlvbiAmJiBkb1NoaWZ0KSkgCisgICAgCQkJCQl8fCAoZG9TaGlmdCAmJiBpc1ByaW1hcnlCeXRlSWdub3JhYmxlKSk7CisgICAgICAgICAgICBpZiAoZG9TaGlmdCAmJiBpc1ByaW1hcnlCeXRlSWdub3JhYmxlKSB7CisgICAgCQkJLy8gYW1lbmRtZW50IHRvIHRoZSBVQ0Egc2F5cyB0aGF0IHByaW1hcnkgaWdub3JhYmxlcyBhbmQgb3RoZXIgCisgICAgCQkJLy8gaWdub3JhYmxlcyBzaG91bGQgYmUgcmVtb3ZlZCBpZiBmb2xsb3dpbmcgYSBzaGlmdGVkIGNvZGUgCisgICAgCQkJLy8gcG9pbnQKKyAgICAgICAgICAgICAgICAvLyBpZiB3ZSB3ZXJlIHNoaWZ0ZWQgYW5kIHdlIGdvdCBhbiBpZ25vcmFibGUgY29kZSBwb2ludAorICAgICAgICAgICAgICAgIC8vIHdlIHNob3VsZCBqdXN0IGNvbXBsZXRlbHkgaWdub3JlIGl0CisgICAgICAgICAgICAgICAgY29udGludWU7IAorICAgICAgICAgICAgfSAKKwkJCWxlYWRQcmltYXJ5ID0gZG9QcmltYXJ5Qnl0ZXMoY2UsIG5vdElzQ29udGludWF0aW9uLCBkb1NoaWZ0LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVhZFByaW1hcnksIGNvbW1vbkJvdHRvbTQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3R0b21Db3VudDQpOworICAgICAgICAgICAgaWYgKGRvU2hpZnQpIHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKwkJCWlmIChtX3V0aWxDb21wYXJlMl8pIHsKKyAgICAgICAgCQlkb1NlY29uZGFyeUJ5dGVzKGNlLCBub3RJc0NvbnRpbnVhdGlvbiwJZG9GcmVuY2gpOworCQkJfQorCisJCQlpbnQgdCA9IGNlICYgTEFTVF9CWVRFX01BU0tfOworCQkJaWYgKCFub3RJc0NvbnRpbnVhdGlvbikgeworICAgICAgICAgICAgICAJdCA9IGNlICYgQ0VfUkVNT1ZFX0NPTlRJTlVBVElPTl9NQVNLXzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAkKKyAgICAgICAgICAgIGlmIChtX3V0aWxDb21wYXJlMF8pIHsKKyAgICAgICAgICAgICAgCWNhc2VTaGlmdCA9IGRvQ2FzZUJ5dGVzKHQsIG5vdElzQ29udGludWF0aW9uLCBjYXNlU2hpZnQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobm90SXNDb250aW51YXRpb24pIHsKKyAgICAgICAgICAgICAgICAgdCBePSBtX2Nhc2VTd2l0Y2hfOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0ICY9IG1fbWFzazNfOworICAgICAgICAgICAgICAJCisgICAgICAgICAgICBpZiAobV91dGlsQ29tcGFyZTNfKSB7CisgICAgICAgICAgICAJZG9UZXJ0aWFyeUJ5dGVzKHQsIG5vdElzQ29udGludWF0aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChtX3V0aWxDb21wYXJlNF8gJiYgbm90SXNDb250aW51YXRpb24pIHsgLy8gY29tcGFyZSBxdWFkCisgICAgICAgICAgICAgICAgZG9RdWF0ZXJuYXJ5Qnl0ZXMobV9zcmNVdGlsQ29sRUl0ZXJfLm1faXNDb2RlUG9pbnRIaXJhZ2FuYV8sIAorICAgICAgICAgICAgICAgIAkJCSAJICBjb21tb25Cb3R0b200LCBib3R0b21Db3VudDQsIGhpcmFnYW5hNCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgc2V0RGVjb21wb3NpdGlvbihiYWNrdXBEZWNvbXBvc2l0aW9uKTsgLy8gcmV2ZXJ0cyB0byBvcmlnaW5hbAkKKyAgICAgICAgaWYgKG1fdXRpbEZyZW5jaFN0YXJ0XyAhPSAtMSkgeworICAgICAgICAJLy8gb25lIGxhc3Qgcm91bmQgb2YgY2hlY2tzCisgICAgCQlyZXZlcnNlQnVmZmVyKG1fdXRpbEJ5dGVzMl8pOworICAJCX0KKwl9CisJCisJLyoqCisJICogRnJvbSB0aGUgaW5kaXZpZHVhbCBzdHJlbmd0aCBieXRlIHJlc3VsdHMgdGhlIGZpbmFsIGNvbXBhY3Qgc29ydGtleSAKKwkgKiB3aWxsIGJlIGNhbGN1bGF0ZWQuCisJICogQHBhcmFtIHNvdXJjZSB0ZXh0IHN0cmluZworCSAqIEBwYXJhbSBkb0ZyZW5jaCBmbGFnIGluZGljYXRpbmcgdGhhdCBzcGVjaWFsIGhhbmRsaW5nIG9mIEZyZW5jaCBoYXMgdG8gCisJICogCQkJCQliZSBkb25lCisJICogQHBhcmFtIGNvbW1vbkJvdHRvbTQgc21hbGxlc3QgY29tbW9uIHF1YXRlcm5hcnkgYnl0ZQorCSAqIEBwYXJhbSBib3R0b21Db3VudDQgc21hbGxlc3QgcXVhdGVybmFyeSBieXRlCisJICogQHJldHVybiB0aGUgY29tcGFjdCBzb3J0a2V5CisJICovCisJcHJpdmF0ZSBmaW5hbCBieXRlW10gZ2V0U29ydEtleShTdHJpbmcgc291cmNlLCBib29sZWFuIGRvRnJlbmNoLCAKKwkJCQkJCQkJCWludCBjb21tb25Cb3R0b200LCBpbnQgYm90dG9tQ291bnQ0KQorCXsKKwkJLy8gd2UgaGF2ZSBkb25lIGFsbCB0aGUgQ0Uncywgbm93IGxldCdzIHB1dCB0aGVtIHRvZ2V0aGVyIHRvIGZvcm0gCisgICAgICAJLy8gYSBrZXkgCisgICAgICAJaWYgKG1fdXRpbENvbXBhcmUyXykgeworICAgICAgICAJZG9TZWNvbmRhcnkoZG9GcmVuY2gpOworICAgICAgCQlpZiAobV91dGlsQ29tcGFyZTBfKSB7CisJCQkJZG9DYXNlKCk7ICAgICAgICAKKyAgICAgIAkJfQorICAgICAgCQlpZiAobV91dGlsQ29tcGFyZTNfKSB7CisgICAgICAJCQlkb1RlcnRpYXJ5KCk7CisgICAgICAJCQlpZiAobV91dGlsQ29tcGFyZTRfKSB7CisgICAgICAJCQkJZG9RdWF0ZXJuYXJ5KGNvbW1vbkJvdHRvbTQsIGJvdHRvbUNvdW50NCk7CisgICAgICAgIAkJCWlmIChtX3V0aWxDb21wYXJlNV8pIHsKKyAgICAgICAgICAJCQkJZG9JZGVudGljYWwoc291cmNlKTsKKyAgICAgICAgCQkJfQorCisgICAgICAJCQl9CisgICAgICAJCX0KKyAgICAgIAl9CisgICAgICAJbV91dGlsQnl0ZXMxXyA9IGFwcGVuZChtX3V0aWxCeXRlczFfLCBtX3V0aWxCeXRlc0NvdW50MV8sIChieXRlKTApOworICAgICAgICBtX3V0aWxCeXRlc0NvdW50MV8gKys7CisgICAgICAgIGJ5dGUgcmVzdWx0W10gPSAoYnl0ZSBbXSltX3V0aWxCeXRlczFfLmNsb25lKCk7CisgICAgCXJldHVybiByZXN1bHQ7CisJfQorCQorCS8qKgorCSAqIFBhY2tzIHRoZSBGcmVuY2ggYnl0ZXMKKwkgKiBAcGFyYW0gY291bnQgYXJyYXkgb2YgY29tcHJlc3Npb24gY291bnRzCisJICovCisJcHJpdmF0ZSBmaW5hbCB2b2lkIGRvRnJlbmNoKCkgCisJeworCQlmb3IgKGludCBpID0gMDsgaSA8IG1fdXRpbEJ5dGVzQ291bnQyXzsgaSArKykgeworCQkJYnl0ZSBzID0gbV91dGlsQnl0ZXMyX1ttX3V0aWxCeXRlc0NvdW50Ml8gLSBpIC0gMV07CisJCSAgICAvLyBUaGlzIGlzIGNvbXByZXNzaW9uIGNvZGUuCisJCSAgICBpZiAocyA9PSBDT01NT05fMl8pIHsKKwkJICAgICAgICArKyBtX3V0aWxDb3VudDJfOworCQkgICAgfSAKKwkJICAgIGVsc2UgeworCQkgICAgICAJaWYgKG1fdXRpbENvdW50Ml8gPiAwKSB7CisJCSAgICAgIAkJLy8gZ2V0dGluZyB0aGUgdW5zaWduZWQgdmFsdWUKKwkJICAgICAgICAJaWYgKChzICYgTEFTVF9CWVRFX01BU0tfKSA+IENPTU1PTl8yXykgeyAKKwkJICAgICAgICAJCS8vIG5vdCBuZWNlc3NhcnkgZm9yIDR0aCBsZXZlbC4KKwkJICAgICAgICAgIAkJd2hpbGUgKG1fdXRpbENvdW50Ml8gPiBUT1BfQ09VTlRfMl8pIHsKKwkJICAgICAgICAgICAgCQltX3V0aWxCeXRlczFfID0gYXBwZW5kKG1fdXRpbEJ5dGVzMV8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3V0aWxCeXRlc0NvdW50MV8sIAorCQkgICAgICAgICAgICAJCQkJCShieXRlKShDT01NT05fVE9QXzJfIC0gVE9QX0NPVU5UXzJfKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91dGlsQnl0ZXNDb3VudDFfICsrOworCQkgICAgICAgICAgICAJCW1fdXRpbENvdW50Ml8gLT0gVE9QX0NPVU5UXzJfOworCQkgICAgICAgICAgCQl9CisJCSAgICAgICAgICAJCW1fdXRpbEJ5dGVzMV8gPSBhcHBlbmQobV91dGlsQnl0ZXMxXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91dGlsQnl0ZXNDb3VudDFfLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ5dGUpKENPTU1PTl9UT1BfMl8gCisJCSAgICAgICAgICAJCQkJCQkJCQkgIC0gKG1fdXRpbENvdW50Ml8gLSAxKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgbV91dGlsQnl0ZXNDb3VudDFfICsrOworCQkgICAgICAgIAl9IAorCQkgICAgICAgIAllbHNlIHsKKwkJICAgICAgICAgIAkJd2hpbGUgKG1fdXRpbENvdW50Ml8gPiBCT1RUT01fQ09VTlRfMl8pIHsKKwkJICAgICAgICAgICAgCQltX3V0aWxCeXRlczFfID0gYXBwZW5kKG1fdXRpbEJ5dGVzMV8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3V0aWxCeXRlc0NvdW50MV8sIAorCQkgICAgICAgICAgICAJCQkoYnl0ZSkoQ09NTU9OX0JPVFRPTV8yXyArIEJPVFRPTV9DT1VOVF8yXykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXRpbEJ5dGVzQ291bnQxXyArKzsKKwkJICAgICAgICAgICAgCQltX3V0aWxDb3VudDJfIC09IEJPVFRPTV9DT1VOVF8yXzsKKwkJICAgICAgICAgIAkJfQorCQkgICAgICAgICAgCQltX3V0aWxCeXRlczFfID0gYXBwZW5kKG1fdXRpbEJ5dGVzMV8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXRpbEJ5dGVzQ291bnQxXywgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnl0ZSkoQ09NTU9OX0JPVFRPTV8yXyAKKwkJICAgICAgICAgIAkJCQkJCQkJCSAgKyAobV91dGlsQ291bnQyXyAtIDEpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3V0aWxCeXRlc0NvdW50MV8gKys7CisJCSAgICAgICAgCX0KKwkJICAgICAgICAJbV91dGlsQ291bnQyXyA9IDA7CisJCSAgICAgIAl9CisJCSAgICAgIAltX3V0aWxCeXRlczFfID0gYXBwZW5kKG1fdXRpbEJ5dGVzMV8sIG1fdXRpbEJ5dGVzQ291bnQxXywgcyk7CisgICAgICAgICAgICAgICAgbV91dGlsQnl0ZXNDb3VudDFfICsrOworCQkgICAgfQorCQl9CisJCWlmIChtX3V0aWxDb3VudDJfID4gMCkgeworCQkgICAgd2hpbGUgKG1fdXRpbENvdW50Ml8gPiBCT1RUT01fQ09VTlRfMl8pIHsKKwkJICAgICAgCW1fdXRpbEJ5dGVzMV8gPSBhcHBlbmQobV91dGlsQnl0ZXMxXywgbV91dGlsQnl0ZXNDb3VudDFfLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChieXRlKShDT01NT05fQk9UVE9NXzJfIAorCQkgICAgICAJCQkJCQkJCQkJKyBCT1RUT01fQ09VTlRfMl8pKTsKKyAgICAgICAgICAgICAgICBtX3V0aWxCeXRlc0NvdW50MV8gKys7CisJCSAgICAgIAltX3V0aWxDb3VudDJfIC09IEJPVFRPTV9DT1VOVF8yXzsKKwkJICAgIH0KKwkJICAgIG1fdXRpbEJ5dGVzMV8gPSBhcHBlbmQobV91dGlsQnl0ZXMxXywgbV91dGlsQnl0ZXNDb3VudDFfLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ5dGUpKENPTU1PTl9CT1RUT01fMl8gCisJCSAgICAJCQkJCQkJCQkJKyAobV91dGlsQ291bnQyXyAtIDEpKSk7CisgICAgICAgICAgICBtX3V0aWxCeXRlc0NvdW50MV8gKys7CisJCX0KKwl9CisKKwkvKioKKwkgKiBDb21wYWN0cyB0aGUgc2Vjb25kYXJ5IGJ5dGVzIGFuZCBzdG9yZXMgdGhlbSBpbnRvIHRoZSBwcmltYXJ5IGFycmF5CisJICogQHBhcmFtIGRvRnJlbmNoIGZsYWcgaW5kaWNhdG9yIHRoYXQgRnJlbmNoIGhhcyB0byBiZSBoYW5kbGVkIHNwZWNpYWxseQorCSAqLworCXByaXZhdGUgZmluYWwgdm9pZCBkb1NlY29uZGFyeShib29sZWFuIGRvRnJlbmNoKQorCXsKKwkJaWYgKG1fdXRpbENvdW50Ml8gPiAwKSB7CisgICAgICAgICAgCXdoaWxlIChtX3V0aWxDb3VudDJfID4gQk9UVE9NX0NPVU5UXzJfKSB7CisgICAgICAgICAgICAJbV91dGlsQnl0ZXMyXyA9IGFwcGVuZChtX3V0aWxCeXRlczJfLCBtX3V0aWxCeXRlc0NvdW50Ml8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnl0ZSkoQ09NTU9OX0JPVFRPTV8yXyAKKyAgICAgICAgICAgIAkJCQkJIAkJCQkJCSsgQk9UVE9NX0NPVU5UXzJfKSk7CisgICAgICAgICAgICAgICAgbV91dGlsQnl0ZXNDb3VudDJfICsrOworICAgICAgICAgICAgCW1fdXRpbENvdW50Ml8gLT0gQk9UVE9NX0NPVU5UXzJfOworICAgICAgICAgIAl9CisgICAgICAgICAgCW1fdXRpbEJ5dGVzMl8gPSBhcHBlbmQobV91dGlsQnl0ZXMyXywgbV91dGlsQnl0ZXNDb3VudDJfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnl0ZSkoQ09NTU9OX0JPVFRPTV8yXyArIAorICAgICAgICAgIAkJCQkJCQkJCQkJKG1fdXRpbENvdW50Ml8gLSAxKSkpOworICAgICAgICAgICAgbV91dGlsQnl0ZXNDb3VudDJfICsrOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBtX3V0aWxCeXRlczFfID0gYXBwZW5kKG1fdXRpbEJ5dGVzMV8sIG1fdXRpbEJ5dGVzQ291bnQxXywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU09SVF9MRVZFTF9URVJNSU5BVE9SXyk7CisgICAgICAgIG1fdXRpbEJ5dGVzQ291bnQxXyArKzsKKyAgICAgICAgCisgICAgICAgIGlmIChkb0ZyZW5jaCkgeyAvLyBkbyB0aGUgcmV2ZXJzZSBjb3B5CisgICAgICAgICAgIAlkb0ZyZW5jaCgpOworICAgICAgICB9IAorICAgICAgICBlbHNlIHsKKyAgICAgICAgCWlmIChtX3V0aWxCeXRlczFfLmxlbmd0aCA8PSBtX3V0aWxCeXRlc0NvdW50MV8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIG1fdXRpbEJ5dGVzQ291bnQyXykgeworICAgICAgICAJCW1fdXRpbEJ5dGVzMV8gPSBpbmNyZWFzZShtX3V0aWxCeXRlczFfLCBtX3V0aWxCeXRlc0NvdW50MV8sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3V0aWxCeXRlc0NvdW50Ml8pOworICAgICAgICAJfQorICAgICAgICAgICAJU3lzdGVtLmFycmF5Y29weShtX3V0aWxCeXRlczJfLCAwLCBtX3V0aWxCeXRlczFfLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91dGlsQnl0ZXNDb3VudDFfLCBtX3V0aWxCeXRlc0NvdW50Ml8pOworICAgICAgICAgICAgbV91dGlsQnl0ZXNDb3VudDFfICs9IG1fdXRpbEJ5dGVzQ291bnQyXzsKKyAgICAgICAgfSAKKwl9CisJCisJLyoqCisJICogSW5jcmVhc2UgYnVmZmVyIHNpemUKKwkgKiBAcGFyYW0gYXJyYXkgYXJyYXkgb2YgYnl0ZXMKKwkgKiBAcGFyYW0gc2l6ZSBvZiB0aGUgYnl0ZSBhcnJheQorCSAqIEBwYXJhbSBpbmNyZW1lbnRzaXplIHNpemUgdG8gaW5jcmVhc2UKKwkgKiBAcmV0dXJuIHRoZSBuZXcgYnVmZmVyCisJICovCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgYnl0ZVtdIGluY3JlYXNlKGJ5dGUgYnVmZmVyW10sIGludCBzaXplLCAKKwkJCQkJCQkJCQkgaW50IGluY3JlbWVudHNpemUpCisJeworCQlieXRlIHJlc3VsdFtdID0gbmV3IGJ5dGVbYnVmZmVyLmxlbmd0aCArIGluY3JlbWVudHNpemVdOworCQlTeXN0ZW0uYXJyYXljb3B5KGJ1ZmZlciwgMCwgcmVzdWx0LCAwLCBzaXplKTsKKwkJcmV0dXJuIHJlc3VsdDsKKwl9CisJCisJLyoqCisJICogSW5jcmVhc2UgYnVmZmVyIHNpemUKKwkgKiBAcGFyYW0gYXJyYXkgYXJyYXkgb2YgYnl0ZXMKKwkgKiBAcGFyYW0gc2l6ZSBvZiB0aGUgYnl0ZSBhcnJheQorCSAqIEBwYXJhbSBpbmNyZW1lbnRzaXplIHNpemUgdG8gaW5jcmVhc2UKKwkgKiBAcmV0dXJuIHRoZSBuZXcgYnVmZmVyCisJICovCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50W10gaW5jcmVhc2UoaW50IGJ1ZmZlcltdLCBpbnQgc2l6ZSwgCisJCQkJCQkJCQkJaW50IGluY3JlbWVudHNpemUpCisJeworCQlpbnQgcmVzdWx0W10gPSBuZXcgaW50W2J1ZmZlci5sZW5ndGggKyBpbmNyZW1lbnRzaXplXTsKKwkJU3lzdGVtLmFycmF5Y29weShidWZmZXIsIDAsIHJlc3VsdCwgMCwgc2l6ZSk7CisJCXJldHVybiByZXN1bHQ7CisJfQorCQorCS8qKgorCSAqIENvbXBhY3RzIHRoZSBjYXNlIGJ5dGVzIGFuZCBzdG9yZXMgdGhlbSBpbnRvIHRoZSBwcmltYXJ5IGFycmF5CisJICovCisJcHJpdmF0ZSBmaW5hbCB2b2lkIGRvQ2FzZSgpCisJeworCQltX3V0aWxCeXRlczFfID0gYXBwZW5kKG1fdXRpbEJ5dGVzMV8sIG1fdXRpbEJ5dGVzQ291bnQxXywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU09SVF9MRVZFTF9URVJNSU5BVE9SXyk7CisgICAgICAgIG1fdXRpbEJ5dGVzQ291bnQxXyArKzsKKwkJaWYgKG1fdXRpbEJ5dGVzMV8ubGVuZ3RoIDw9IG1fdXRpbEJ5dGVzQ291bnQxXyArIG1fdXRpbEJ5dGVzQ291bnQwXykgeworCQkJbV91dGlsQnl0ZXMxXyA9IGluY3JlYXNlKG1fdXRpbEJ5dGVzMV8sIG1fdXRpbEJ5dGVzQ291bnQxXywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91dGlsQnl0ZXNDb3VudDBfKTsKKwkJfQorCQlTeXN0ZW0uYXJyYXljb3B5KG1fdXRpbEJ5dGVzMF8sIDAsIG1fdXRpbEJ5dGVzMV8sIG1fdXRpbEJ5dGVzQ291bnQxXywgCisgICAgICAgICAgICAgICAgICAgICAgICAgbV91dGlsQnl0ZXNDb3VudDBfKTsKKyAgICAgICAgbV91dGlsQnl0ZXNDb3VudDFfICs9IG1fdXRpbEJ5dGVzQ291bnQwXzsKKwl9CisJCisJLyoqCisJICogQ29tcGFjdHMgdGhlIHRlcnRpYXJ5IGJ5dGVzIGFuZCBzdG9yZXMgdGhlbSBpbnRvIHRoZSBwcmltYXJ5IGFycmF5CisJICovCisJcHJpdmF0ZSBmaW5hbCB2b2lkIGRvVGVydGlhcnkoKQorCXsKKwkJaWYgKG1fdXRpbENvdW50M18gPiAwKSB7CisgICAgICAgICAgCWlmIChtX2NvbW1vbjNfICE9IENPTU1PTl9CT1RUT01fM18pIHsKKyAgICAgICAgICAJCXdoaWxlIChtX3V0aWxDb3VudDNfID49IG1fdG9wQ291bnQzXykgeworICAgICAgICAgICAgICAJCW1fdXRpbEJ5dGVzM18gPSBhcHBlbmQobV91dGlsQnl0ZXMzXywgbV91dGlsQnl0ZXNDb3VudDNfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChieXRlKShtX3RvcDNfIC0gbV90b3BDb3VudDNfKSk7CisgICAgICAgICAgICAgICAgICAgIG1fdXRpbEJ5dGVzQ291bnQzXyArKzsKKyAgICAgICAgICAgICAgCQltX3V0aWxDb3VudDNfIC09IG1fdG9wQ291bnQzXzsKKyAgICAgICAgICAgIAl9CisgICAgICAgICAgICAJbV91dGlsQnl0ZXMzXyA9IGFwcGVuZChtX3V0aWxCeXRlczNfLCBtX3V0aWxCeXRlc0NvdW50M18sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ5dGUpKG1fdG9wM18gLSBtX3V0aWxDb3VudDNfKSk7CisgICAgICAgICAgICAgICAgbV91dGlsQnl0ZXNDb3VudDNfICsrOworICAgICAgICAgIAl9IAorICAgICAgICAgIAllbHNlIHsKKyAgICAgICAgICAJCXdoaWxlIChtX3V0aWxDb3VudDNfID4gbV9ib3R0b21Db3VudDNfKSB7CisgICAgICAgICAgICAgIAkJbV91dGlsQnl0ZXMzXyA9IGFwcGVuZChtX3V0aWxCeXRlczNfLCBtX3V0aWxCeXRlc0NvdW50M18sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChieXRlKShtX2JvdHRvbTNfIAorICAgICAgICAgICAgICAJCQkJCQkJCQkJCSsgbV9ib3R0b21Db3VudDNfKSk7CisgICAgICAgICAgICAgICAgICAgIG1fdXRpbEJ5dGVzQ291bnQzXyArKzsKKyAgICAgICAgICAgICAgCQltX3V0aWxDb3VudDNfIC09IG1fYm90dG9tQ291bnQzXzsKKyAgICAgICAgICAgIAl9CisgICAgICAgICAgICAJbV91dGlsQnl0ZXMzXyA9IGFwcGVuZChtX3V0aWxCeXRlczNfLCBtX3V0aWxCeXRlc0NvdW50M18sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ5dGUpKG1fYm90dG9tM18gCisgICAgICAgICAgICAJCQkJCQkJCSAgKyAobV91dGlsQ291bnQzXyAtIDEpKSk7CisgICAgICAgICAgICAgICAgbV91dGlsQnl0ZXNDb3VudDNfICsrOworICAgICAgICAgIAl9CisgICAgICAgIH0KKyAgICAgICAgbV91dGlsQnl0ZXMxXyA9IGFwcGVuZChtX3V0aWxCeXRlczFfLCBtX3V0aWxCeXRlc0NvdW50MV8sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNPUlRfTEVWRUxfVEVSTUlOQVRPUl8pOworICAgICAgICBtX3V0aWxCeXRlc0NvdW50MV8gKys7CisgICAgICAgIGlmIChtX3V0aWxCeXRlczFfLmxlbmd0aCA8PSBtX3V0aWxCeXRlc0NvdW50MV8gKyBtX3V0aWxCeXRlc0NvdW50M18pIHsKKyAgICAgICAgCW1fdXRpbEJ5dGVzMV8gPSBpbmNyZWFzZShtX3V0aWxCeXRlczFfLCBtX3V0aWxCeXRlc0NvdW50MV8sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXRpbEJ5dGVzQ291bnQzXyk7CisgICAgICAgIH0KKyAgICAgICAgU3lzdGVtLmFycmF5Y29weShtX3V0aWxCeXRlczNfLCAwLCBtX3V0aWxCeXRlczFfLCBtX3V0aWxCeXRlc0NvdW50MV8sIAorICAgICAgICAgICAgICAgICAgICAgICAgIG1fdXRpbEJ5dGVzQ291bnQzXyk7CisgICAgICAgIG1fdXRpbEJ5dGVzQ291bnQxXyArPSBtX3V0aWxCeXRlc0NvdW50M187CisJfQorCQorCS8qKgorCSAqIENvbXBhY3RzIHRoZSBxdWF0ZXJuYXJ5IGJ5dGVzIGFuZCBzdG9yZXMgdGhlbSBpbnRvIHRoZSBwcmltYXJ5IGFycmF5CisJICovCisJcHJpdmF0ZSBmaW5hbCB2b2lkIGRvUXVhdGVybmFyeShpbnQgY29tbW9uYm90dG9tNCwgaW50IGJvdHRvbWNvdW50NCkKKwl7CisJCWlmIChtX3V0aWxDb3VudDRfID4gMCkgeworICAgICAgICAgICAgd2hpbGUgKG1fdXRpbENvdW50NF8gPiBib3R0b21jb3VudDQpIHsKKyAgICAgICAgICAgICAgICBtX3V0aWxCeXRlczRfID0gYXBwZW5kKG1fdXRpbEJ5dGVzNF8sIG1fdXRpbEJ5dGVzQ291bnQ0XywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnl0ZSkoY29tbW9uYm90dG9tNCArIGJvdHRvbWNvdW50NCkpOworICAgICAgICAgICAgICAgIG1fdXRpbEJ5dGVzQ291bnQ0XyArKzsKKyAgICAgICAgICAgICAgICBtX3V0aWxDb3VudDRfIC09IGJvdHRvbWNvdW50NDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fdXRpbEJ5dGVzNF8gPSBhcHBlbmQobV91dGlsQnl0ZXM0XywgbV91dGlsQnl0ZXNDb3VudDRfLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ5dGUpKGNvbW1vbmJvdHRvbTQKKyAgICAgICAgICAgIAkJCQkJCQkJCSsgKG1fdXRpbENvdW50NF8gLSAxKSkpOworICAgICAgICAgICAgbV91dGlsQnl0ZXNDb3VudDRfICsrOworICAgICAgICB9CisgICAgICAgIG1fdXRpbEJ5dGVzMV8gPSBhcHBlbmQobV91dGlsQnl0ZXMxXywgbV91dGlsQnl0ZXNDb3VudDFfLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTT1JUX0xFVkVMX1RFUk1JTkFUT1JfKTsKKyAgICAgICAgbV91dGlsQnl0ZXNDb3VudDFfICsrOworICAgICAgICBpZiAobV91dGlsQnl0ZXMxXy5sZW5ndGggPD0gbV91dGlsQnl0ZXNDb3VudDFfICsgbV91dGlsQnl0ZXNDb3VudDRfKSB7CisgICAgICAgIAltX3V0aWxCeXRlczFfID0gaW5jcmVhc2UobV91dGlsQnl0ZXMxXywgbV91dGlsQnl0ZXNDb3VudDFfLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3V0aWxCeXRlc0NvdW50NF8pOworICAgICAgICB9CisgICAgICAgIFN5c3RlbS5hcnJheWNvcHkobV91dGlsQnl0ZXM0XywgMCwgbV91dGlsQnl0ZXMxXywgbV91dGlsQnl0ZXNDb3VudDFfLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICBtX3V0aWxCeXRlc0NvdW50NF8pOworICAgICAgICBtX3V0aWxCeXRlc0NvdW50MV8gKz0gbV91dGlsQnl0ZXNDb3VudDRfOworCX0KKwkKKwkvKioKKwkgKiBEZWFscyB3aXRoIHRoZSBpZGVudGljYWwgc29ydC4KKwkgKiBBcHBlbmRzIHRoZSBCT0NTVSB2ZXJzaW9uIG9mIHRoZSBzb3VyY2Ugc3RyaW5nIHRvIHRoZSBlbmRzIG9mIHRoZQorCSAqIGJ5dGUgYnVmZmVyLgorCSAqIEBwYXJhbSBzb3VyY2UgdGV4dCBzdHJpbmcKKwkgKi8KKwlwcml2YXRlIGZpbmFsIHZvaWQgZG9JZGVudGljYWwoU3RyaW5nIHNvdXJjZSkKKwl7CisJCWludCBpc2l6ZSA9IEJPQ1UuZ2V0Q29tcHJlc3Npb25MZW5ndGgoc291cmNlKTsKKwkJbV91dGlsQnl0ZXMxXyA9IGFwcGVuZChtX3V0aWxCeXRlczFfLCBtX3V0aWxCeXRlc0NvdW50MV8sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNPUlRfTEVWRUxfVEVSTUlOQVRPUl8pOworICAgICAgICBtX3V0aWxCeXRlc0NvdW50MV8gKys7CisJCWlmIChtX3V0aWxCeXRlczFfLmxlbmd0aCA8PSBtX3V0aWxCeXRlc0NvdW50MV8gKyBpc2l6ZSkgeworICAgICAgICAJbV91dGlsQnl0ZXMxXyA9IGluY3JlYXNlKG1fdXRpbEJ5dGVzMV8sIG1fdXRpbEJ5dGVzQ291bnQxXywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSArIGlzaXplKTsKKyAgICAgICAgfQorICAgICAgICBtX3V0aWxCeXRlc0NvdW50MV8gPSBCT0NVLmNvbXByZXNzKHNvdXJjZSwgbV91dGlsQnl0ZXMxXywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91dGlsQnl0ZXNDb3VudDFfKTsgCisJfQorCQorCS8qKgorCSAqIEdldHMgdGhlIG9mZnNldCBvZiB0aGUgZmlyc3QgdW5tYXRjaGVkIGNoYXJhY3RlcnMgaW4gc291cmNlIGFuZCB0YXJnZXQuCisJICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgb2Zmc2V0IG9mIHRoZSBzdGFydCBvZiBhIGNvbnRyYWN0aW9uIG9yIGEgCisJICogY29tYmluaW5nIHNlcXVlbmNlLCBpZiB0aGUgZmlyc3QgZGlmZmVyZW5jZSBpcyBpbiB0aGUgbWlkZGxlIG9mIHN1Y2ggYSAKKwkgKiBzZXF1ZW5jZS4KKwkgKiBAcGFyYW0gc291cmNlIHN0cmluZworCSAqIEBwYXJhbSB0YXJnZXQgc3RyaW5nCisJICogQHJldHVybiBvZmZzZXQgb2YgdGhlIGZpcnN0IHVubWF0Y2hlZCBjaGFyYWN0ZXJzIGluIHNvdXJjZSBhbmQgdGFyZ2V0LgorCSAqLworCXByaXZhdGUgZmluYWwgaW50IGdldEZpcnN0VW5tYXRjaGVkT2Zmc2V0KFN0cmluZyBzb3VyY2UsIFN0cmluZyB0YXJnZXQpCisJeworCQlpbnQgcmVzdWx0ID0gMDsKKwkJaW50IHNsZW5ndGggPSBzb3VyY2UubGVuZ3RoKCk7CisJCWludCB0bGVuZ3RoID0gdGFyZ2V0Lmxlbmd0aCgpOworCQlpbnQgbWlubGVuZ3RoID0gc2xlbmd0aDsKKwkJaWYgKG1pbmxlbmd0aCA+IHRsZW5ndGgpIHsKKwkJCW1pbmxlbmd0aCA9IHRsZW5ndGg7CisJCX0KKwkJd2hpbGUgKHJlc3VsdCA8IG1pbmxlbmd0aCAKKwkJCQkmJiBzb3VyY2UuY2hhckF0KHJlc3VsdCkgPT0gdGFyZ2V0LmNoYXJBdChyZXN1bHQpKSB7CisJCQlyZXN1bHQgKys7CisJICAgIH0KKwkgICAgaWYgKHJlc3VsdCA+IDApIHsKKwkgICAgICAgIC8vIFRoZXJlIGlzIGFuIGlkZW50aWNhbCBwb3J0aW9uIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHR3byAKKwkgICAgICAgIC8vIHN0cmluZ3MuIElmIHRoZSBpZGVudGljYWwgcG9ydGlvbiBlbmRzIHdpdGhpbiBhIGNvbnRyYWN0aW9uIG9yIGEgCisJICAgICAgICAvLyBjb21iaW5pbmcgY2hhcmFjdGVyIHNlcXVlbmNlLCBiYWNrIHVwIHRvIHRoZSBzdGFydCBvZiB0aGF0IAorCSAgICAgICAgLy8gc2VxdWVuY2UuCisJICAgICAgICBjaGFyIHNjaGFyID0gMDsKKwkgICAgICAgIGNoYXIgdGNoYXIgPSAwOworCSAgICAgICAgaWYgKHJlc3VsdCA8IG1pbmxlbmd0aCkgeyAgICAgICAgICAgICAgCisJICAgICAgICAJc2NoYXIgPSBzb3VyY2UuY2hhckF0KHJlc3VsdCk7IC8vIGZpcnN0IGRpZmZlcmluZyBjaGFycyAgIAorCSAgICAgICAgCXRjaGFyID0gdGFyZ2V0LmNoYXJBdChyZXN1bHQpOworCSAgICAgICAgfQorCSAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgc2NoYXIgPSBzb3VyY2UuY2hhckF0KG1pbmxlbmd0aCAtIDEpOyAKKyAgICAgICAgICAgICAgICBpZiAoaXNVbnNhZmUoc2NoYXIpKSB7CisgICAgICAgICAgICAgICAgICAgIHRjaGFyID0gc2NoYXI7CisgICAgICAgICAgICAgICAgfQorICAgIAkgICAgICAgIGVsc2UgaWYgKHNsZW5ndGggPT0gdGxlbmd0aCkgeworICAgIAkgICAgICAgIAkJcmV0dXJuIHJlc3VsdDsKKyAgICAJICAgICAgICB9CisgICAgCSAgICAgICAgZWxzZSBpZiAoc2xlbmd0aCA8IHRsZW5ndGgpIHsKKyAgICAJICAgICAgICAJdGNoYXIgPSB0YXJnZXQuY2hhckF0KHJlc3VsdCk7CisgICAgCSAgICAgICAgfQorICAgIAkgICAgICAgIGVsc2UgeworICAgIAkgICAgICAgIAlzY2hhciA9IHNvdXJjZS5jaGFyQXQocmVzdWx0KTsKKyAgICAJICAgICAgICB9CisJICAgICAgICB9CisJICAgICAgICBpZiAoaXNVbnNhZmUoc2NoYXIpIHx8IGlzVW5zYWZlKHRjaGFyKSkKKwkgICAgICAgIHsKKwkgICAgICAgICAgICAvLyBXZSBhcmUgc3RvcHBlZCBpbiB0aGUgbWlkZGxlIG9mIGEgY29udHJhY3Rpb24gb3IgY29tYmluaW5nCisJICAgICAgICAgICAgLy8gc2VxdWVuY2UuCisJICAgICAgICAgICAgLy8gTG9vayBiYWNrd2FyZHMgZm9yIHRoZSBwYXJ0IG9mIHRoZSBzdHJpbmcgZm9yIHRoZSBzdGFydCBvZiAKKwkgICAgICAgICAgICAvLyB0aGUgc2VxdWVuY2UKKwkgICAgICAgICAgICAvLyBJdCBkb2Vzbid0IG1hdHRlciB3aGljaCBzdHJpbmcgd2Ugc2Nhbiwgc2luY2UgdGhleSBhcmUgdGhlIAorCSAgICAgICAgICAgIC8vIHNhbWUgaW4gdGhpcyByZWdpb24uCisJICAgICAgICAgICAgZG8geworCSAgICAgICAgICAgICAgICByZXN1bHQgLS07CisJICAgICAgICAgICAgfQorCSAgICAgICAgICAgIHdoaWxlIChyZXN1bHQgPiAwICYmIGlzVW5zYWZlKHNvdXJjZS5jaGFyQXQocmVzdWx0KSkpOworCSAgICAgICAgfQorCSAgICB9CisJICAgIHJldHVybiByZXN1bHQ7CisJfQorCQorCS8qKgorCSAqIEFwcGVuZGluZyBhbiBieXRlIHRvIGFuIGFycmF5IG9mIGJ5dGVzIGFuZCBpbmNyZWFzZXMgaXQgaWYgd2UgcnVuIG91dCBvZiAKKwkgKiBzcGFjZQorCSAqIEBwYXJhbSBhcnJheSBvZiBieXRlIGFycmF5cworCSAqIEBwYXJhbSBhcHBlbmRpbmRleCBpbmRleCBpbiB0aGUgYnl0ZSBhcnJheSB0byBhcHBlbmQKKwkgKiBAcGFyYW0gdmFsdWUgdG8gYXBwZW5kCisgICAgICogQHJldHVybiBhcnJheSBpZiBhcnJheSBzaXplIGNhbiBhY2NvbW9kYXRlIHRoZSBuZXcgdmFsdWUsIG90aGVyd2lzZQorICAgICAqICAgICAgICAgYSBiaWdnZXIgYXJyYXkgd2lsbCBiZSBjcmVhdGVkIGFuZCByZXR1cm5lZAorCSAqLworCXByaXZhdGUgc3RhdGljIGZpbmFsIGJ5dGVbXSBhcHBlbmQoYnl0ZSBhcnJheVtdLCBpbnQgYXBwZW5kaW5kZXgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZSB2YWx1ZSkKKwl7CisJCWlmIChhcHBlbmRpbmRleCArIDEgPj0gYXJyYXkubGVuZ3RoKSB7CisJCQlhcnJheSA9IGluY3JlYXNlKGFycmF5LAlhcHBlbmRpbmRleCwgU09SVF9CVUZGRVJfSU5JVF9TSVpFXyk7CisJCX0JCQkKKwkJYXJyYXlbYXBwZW5kaW5kZXhdID0gdmFsdWU7CisgICAgICAgIHJldHVybiBhcnJheTsKKwl9CisJCisJLyoqIAorCSAqIFRoaXMgaXMgYSB0cmljayBzdHJpbmcgY29tcGFyZSBmdW5jdGlvbiB0aGF0IGdvZXMgaW4gYW5kIHVzZXMgc29ydGtleXMgCisJICogdG8gY29tcGFyZS4gSXQgaXMgdXNlZCB3aGVuIGNvbXBhcmUgZ2V0cyBpbiB0cm91YmxlIGFuZCBuZWVkcyB0byBiYWlsIAorCSAqIG91dC4KKwkgKiBAcGFyYW0gc291cmNlIHRleHQgc3RyaW5nCisJICogQHBhcmFtIHRhcmdldCB0ZXh0IHN0cmluZworCSAqLworCXByaXZhdGUgZmluYWwgaW50IGNvbXBhcmVCeVNvcnRLZXlzKFN0cmluZyBzb3VyY2UsIFN0cmluZyB0YXJnZXQpCisJCQkJCQkJCQkJCQkJCQorCXsKKwkgICAgQ29sbGF0aW9uS2V5IHNvdXJjZWtleSA9IGdldENvbGxhdGlvbktleShzb3VyY2UpOworCSAgICBDb2xsYXRpb25LZXkgdGFyZ2V0a2V5ID0gZ2V0Q29sbGF0aW9uS2V5KHRhcmdldCk7CQorCSAgICByZXR1cm4gc291cmNla2V5LmNvbXBhcmVUbyh0YXJnZXRrZXkpOworCX0KKwkKKwkvKioKKwkgKiBQZXJmb3JtcyB0aGUgcHJpbWFyeSBjb21wYXJpc29ucywgYW5kIGZpbGxzIHVwIHRoZSBDRSBidWZmZXIgYXQgdGhlCisJICogc2FtZSB0aW1lLiAKKwkgKiBUaGUgcmV0dXJuIHZhbHVlIHRvZ2dsZXMgYmV0d2VlbiB0aGUgY29tcGFyaXNvbiByZXN1bHQgYW5kIHRoZSBoaXJhZ2FuYQorCSAqIHJlc3VsdC4gSWYgZWl0aGVyIHRoZSBzb3VyY2UgaXMgZ3JlYXRlciB0aGFuIHRhcmdldCBvciB2aWNlIHZlcnNhLCB0aGUgCisJICogcmV0dXJuIHJlc3VsdCBpcyB0aGUgY29tcGFyaXNvbiByZXN1bHQsIGllIDEgb3IgLTEsIGZ1cnRoZXJtb3JlIHRoZQorCSAqIGNlYnVmZmVycyB3aWxsIGJlIGNsZWFyZWQgd2hlbiB0aGF0IGhhcHBlbnMuIElmIHRoZSBwcmltYXJ5IGNvbXBhcmlzb25zCisJICogYXJlIGVxdWFsLCB3ZSdsbCBoYXZlIHRvIGNvbnRpbnVlIHdpdGggc2Vjb25kYXJ5IGNvbXBhcmlzb24uIEluIHRoaXMgY2FzZQorCSAqIHRoZSBjZWJ1ZmZlciB3aWxsIG5vdCBiZSBjbGVhcmVkIGFuZCB0aGUgcmV0dXJuIHJlc3VsdCB3aWxsIGJlIHRoZSAKKwkgKiBoaXJhZ2FuYSByZXN1bHQuCisJICogQHBhcmFtIGRvSGlyYWdhbmE0IGZsYWcgaW5kaWNhdG9yIHRoYXQgSGlyYWdhbmEgUXVhdGVybmFyeSBoYXMgdG8gYmUgCisJICogCQkJCQlvYnNlcnZlZAorCSAqIEBwYXJhbSBsb3dlc3RwdmFsdWUgdGhlIGxvd2VzdCBwcmltYXJ5IHZhbHVlIHRoYXQgd2lsbCBub3QgYmUgaWdub3JlZCBpZiAKKwkgKiAJCQkJCQlhbHRlcm5hdGUgaGFuZGxpbmcgaXMgc2hpZnRlZAorCSAqIEBwYXJhbSBzb3VyY2UgdGV4dCBzdHJpbmcKKwkgKiBAcGFyYW0gdGFyZ2V0IHRleHQgc3RyaW5nCisJICogQHBhcmFtIHRleHRvZmZzZXQgb2Zmc2V0IGluIHRleHQgdG8gc3RhcnQgdGhlIGNvbXBhcmlzb24KKwkgKiBAcmV0dXJuIGNvbXBhcmlvbiByZXN1bHQgaWYgYSBwcmltYXJ5IGRpZmZlcmVuY2UgaXMgZm91bmQsIG90aGVyd2lzZQorCSAqIAkJCQkJCWhpcmFnYW5hIHJlc3VsdAorCSAqLworCXByaXZhdGUgZmluYWwgaW50IGRvUHJpbWFyeUNvbXBhcmUoYm9vbGVhbiBkb0hpcmFnYW5hNCwgaW50IGxvd2VzdHB2YWx1ZSwKKwkJCQkJCQkJCQlTdHJpbmcgc291cmNlLCBTdHJpbmcgdGFyZ2V0LCAKKwkJCQkJCQkJCQlpbnQgdGV4dG9mZnNldCkKKwkJCQkJCQkJCSAgIAkKKwl7CisJCS8vIFByZXBhcmluZyB0aGUgY29udGV4dCBvYmplY3RzIGZvciBpdGVyYXRpbmcgb3ZlciBzdHJpbmdzCisgICAgICAgIG1fc3JjVXRpbEl0ZXJfLnNldFRleHQoc291cmNlKTsKKyAgICAgICAgbV9zcmNVdGlsQ29sRUl0ZXJfLnNldFRleHQobV9zcmNVdGlsSXRlcl8sIHRleHRvZmZzZXQpOworICAgICAgICBtX3RndFV0aWxJdGVyXy5zZXRUZXh0KHRhcmdldCk7CisgICAgICAgIG1fdGd0VXRpbENvbEVJdGVyXy5zZXRUZXh0KG1fdGd0VXRpbEl0ZXJfLCB0ZXh0b2Zmc2V0KTsKKwkJCisJCS8vIE5vbiBzaGlmdGVkIHByaW1hcnkgcHJvY2Vzc2luZyBpcyBxdWl0ZSBzaW1wbGUKKwkgICAgaWYgKCFtX2lzQWx0ZXJuYXRlSGFuZGxpbmdTaGlmdGVkXykgeworCSAgICAJaW50IGhpcmFnYW5hcmVzdWx0ID0gMDsgICAgCQkJCQkJCQkJCQkJCQkKKwkgICAgICAJd2hpbGUgKHRydWUpIHsKKwkgICAgICAJCWludCBzb3JkZXIgPSAwOworCQkJCS8vIFdlIGZldGNoIENFcyB1bnRpbCB3ZSBoaXQgYSBub24gaWdub3JhYmxlIHByaW1hcnkgb3IgZW5kLgorCSAgICAgICAgCWRvIHsKKwkgICAgICAgICAgCQlzb3JkZXIgPSBtX3NyY1V0aWxDb2xFSXRlcl8ubmV4dCgpOworCSAgICAgICAgICAJCW1fc3JjVXRpbENFQnVmZmVyXyA9IGFwcGVuZChtX3NyY1V0aWxDRUJ1ZmZlcl8sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zcmNVdGlsQ0VCdWZmZXJTaXplXywgc29yZGVyKTsKKyAgICAgICAgICAgICAgICAgICAgbV9zcmNVdGlsQ0VCdWZmZXJTaXplXyArKzsKKwkgICAgICAgICAgCQlzb3JkZXIgJj0gQ0VfUFJJTUFSWV9NQVNLXzsKKwkgICAgICAgIAl9IHdoaWxlIChzb3JkZXIgPT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLklHTk9SQUJMRSk7CisJCisJCQkJaW50IHRvcmRlciA9IDA7CisJICAgICAgICAJZG8geworCSAgICAgICAgICAJCXRvcmRlciA9IG1fdGd0VXRpbENvbEVJdGVyXy5uZXh0KCk7CisJICAgICAgICAgIAkJbV90Z3RVdGlsQ0VCdWZmZXJfID0gYXBwZW5kKG1fdGd0VXRpbENFQnVmZmVyXywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3RndFV0aWxDRUJ1ZmZlclNpemVfLCB0b3JkZXIpOworICAgICAgICAgICAgICAgICAgICBtX3RndFV0aWxDRUJ1ZmZlclNpemVfICsrOworCSAgICAgICAgICAJCXRvcmRlciAmPSBDRV9QUklNQVJZX01BU0tfOworCSAgICAgICAgCX0gd2hpbGUgKHRvcmRlciA9PSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuSUdOT1JBQkxFKTsKKwkKKwkgICAgICAgIAkvLyBpZiBib3RoIHByaW1hcmllcyBhcmUgdGhlIHNhbWUKKwkgICAgICAgIAlpZiAoc29yZGVyID09IHRvcmRlcikgeworCSAgICAgICAgICAgIAkvLyBhbmQgdGhlcmUgYXJlIG5vIG1vcmUgQ0VzLCB3ZSBhZHZhbmNlIHRvIHRoZSBuZXh0IGxldmVsCisJICAgICAgICAgICAgCWlmIChtX3NyY1V0aWxDRUJ1ZmZlcl9bbV9zcmNVdGlsQ0VCdWZmZXJTaXplXyAtIDFdIAorCSAgICAgICAgICAgIAkJCQkJPT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUikgeworCSAgICAgICAgICAgICAgCQlicmVhazsKKwkgICAgICAgICAgICAJfQorCSAgICAgICAgICAgIAlpZiAoZG9IaXJhZ2FuYTQgJiYgaGlyYWdhbmFyZXN1bHQgPT0gMCAKKwkgICAgICAgICAgICAJCSYmIG1fc3JjVXRpbENvbEVJdGVyXy5tX2lzQ29kZVBvaW50SGlyYWdhbmFfICE9CisJICAgICAgICAgICAgICAJCQkJCQltX3RndFV0aWxDb2xFSXRlcl8ubV9pc0NvZGVQb2ludEhpcmFnYW5hXykgeworCSAgICAgICAgICAgICAgCQlpZiAobV9zcmNVdGlsQ29sRUl0ZXJfLm1faXNDb2RlUG9pbnRIaXJhZ2FuYV8pIHsKKwkgICAgICAgICAgICAgICAgCQloaXJhZ2FuYXJlc3VsdCA9IC0xOworCSAgICAgICAgICAgICAgCQl9CisJICAgICAgICAgICAgICAJCWVsc2UgeworCSAgICAgICAgICAgICAgCQkJaGlyYWdhbmFyZXN1bHQgPSAxOworCSAgICAgICAgICAgICAgCQl9CisJICAgICAgICAgICAgCX0KKwkgICAgICAgIAl9IAorCSAgICAgICAgCWVsc2UgeworCSAgICAgICAgICAgIAkvLyBpZiB0d28gcHJpbWFyaWVzIGFyZSBkaWZmZXJlbnQsIHdlIGFyZSBkb25lCisJICAgICAgICAgICAgCXJldHVybiBlbmRQcmltYXJ5Q29tcGFyZShzb3JkZXIsIHRvcmRlcik7CisJICAgICAgICAJfQorCSAgICAgIAl9IAorCSAgICAgIAkvLyBubyBwcmltYXJ5IGRpZmZlcmVuY2UuLi4gZG8gdGhlIHJlc3QgZnJvbSB0aGUgYnVmZmVycworCSAgICAgIAlyZXR1cm4gaGlyYWdhbmFyZXN1bHQ7CisJICAgIH0gCisJICAgIGVsc2UgeyAvLyBzaGlmdGVkIC0gZG8gYSBzbGlnaHRseSBtb3JlIGNvbXBsaWNhdGVkIHByb2Nlc3NpbmcgOikKKwkgICAgICAJd2hpbGUgKHRydWUpIHsKKwkgICAgICAgIAlpbnQgc29yZGVyID0gZ2V0UHJpbWFyeVNoaWZ0ZWRDb21wYXJlQ0UobV9zcmNVdGlsQ29sRUl0ZXJfLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG93ZXN0cHZhbHVlLCB0cnVlKTsKKwkJCQlpbnQgdG9yZGVyID0gZ2V0UHJpbWFyeVNoaWZ0ZWRDb21wYXJlQ0UobV90Z3RVdGlsQ29sRUl0ZXJfLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG93ZXN0cHZhbHVlLCBmYWxzZSk7CisJICAgICAgICAJaWYgKHNvcmRlciA9PSB0b3JkZXIpIHsKKwkgICAgICAgICAgICAJaWYgKG1fc3JjVXRpbENFQnVmZmVyX1ttX3NyY1V0aWxDRUJ1ZmZlclNpemVfIC0gMV0gCisJICAgICAgICAgICAgCQkJPT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUikgeworCSAgICAgICAgICAgICAgCQlicmVhazsKKwkgICAgICAgICAgICAJfSAKKwkgICAgICAgICAgICAJZWxzZSB7CisJICAgICAgICAgICAgICAJCWNvbnRpbnVlOworCSAgICAgICAgICAgIAl9CisJICAgICAgICAJfSAKKwkgICAgICAgIAllbHNlIHsKKwkgICAgCQkJcmV0dXJuIGVuZFByaW1hcnlDb21wYXJlKHNvcmRlciwgdG9yZGVyKTsKKwkgICAgICAgIAl9CisJICAgICAgCX0gLy8gbm8gcHJpbWFyeSBkaWZmZXJlbmNlLi4uIGRvIHRoZSByZXN0IGZyb20gdGhlIGJ1ZmZlcnMKKwkgICAgfQorCQlyZXR1cm4gMDsKKwl9CisJCisJLyoqCisJICogVGhpcyBpcyB1c2VkIG9ubHkgZm9yIHByaW1hcnkgc3RyZW5ndGggd2hlbiB3ZSBrbm93IHRoYXQgc29yZGVyIGlzIAorCSAqIGFscmVhZHkgZGlmZmVyZW50IGZyb20gdG9yZGVyLgorCSAqIENvbXBhcmVzIHNvcmRlciBhbmQgdG9yZGVyLCByZXR1cm5zIC0xIGlmIHNvcmRlciBpcyBsZXNzIHRoYW4gdG9yZGVyLgorCSAqIENsZWFycyB0aGUgY2VidWZmZXIgYXQgdGhlIHNhbWUgdGltZS4KKwkgKiBAcGFyYW0gc29yZGVyIHNvdXJjZSBzdHJlbmd0aCBvcmRlcgorCSAqIEBwYXJhbSB0b3JkZXIgdGFyZ2V0IHN0cmVuZ3RoIG9yZGVyCisJICogQHJldHVybiB0aGUgY29tcGFyaXNvbiByZXN1bHQgb2Ygc29yZGVyIGFuZCB0b3JkZXIKKwkgKi8KKwlwcml2YXRlIGZpbmFsIGludCBlbmRQcmltYXJ5Q29tcGFyZShpbnQgc29yZGVyLCBpbnQgdG9yZGVyKQorCXsKKwkJLy8gaWYgd2UgcmVhY2ggaGVyZSwgdGhlIGNlIG9mZnNldCBhY2Nlc3NlZCBpcyB0aGUgbGFzdCBjZQorCQkvLyBhcHBlbmRlZCB0byB0aGUgYnVmZmVyCisJCWJvb2xlYW4gaXNTb3VyY2VOdWxsT3JkZXIgPSAobV9zcmNVdGlsQ0VCdWZmZXJfWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc3JjVXRpbENFQnVmZmVyU2l6ZV8gLSAxXSAKKwkJCSAJCQkJCQkJPT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUik7CisJCWJvb2xlYW4gaXNUYXJnZXROdWxsT3JkZXIgPSAobV90Z3RVdGlsQ0VCdWZmZXJfWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdGd0VXRpbENFQnVmZmVyU2l6ZV8gLSAxXSAKKwkJCSAJCQkJCQkJPT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUik7CSAJCQkJCQorCQltX3NyY1V0aWxDRUJ1ZmZlclNpemVfID0gLTE7CisJICAgIG1fdGd0VXRpbENFQnVmZmVyU2l6ZV8gPSAtMTsKKwkgICAgaWYgKGlzU291cmNlTnVsbE9yZGVyKSB7CisJICAgIAlyZXR1cm4gLTE7CisJICAgIH0KKwkgICAgaWYgKGlzVGFyZ2V0TnVsbE9yZGVyKSB7CisJICAgIAlyZXR1cm4gMTsKKwkgICAgfQorCSAgICAvLyBnZXR0aW5nIHJpZCBvZiB0aGUgc2lnbgorCSAgICBzb3JkZXIgPj4+PSBDRV9QUklNQVJZX1NISUZUXzsKKwkgICAgdG9yZGVyID4+Pj0gQ0VfUFJJTUFSWV9TSElGVF87CisJICAgIGlmIChzb3JkZXIgPCB0b3JkZXIpIHsKKwkgICAgCXJldHVybiAtMTsKKwkgICAgfQorCSAgICByZXR1cm4gMTsKKwl9CisJCisJLyoqCisJICogQ2FsY3VsYXRlcyB0aGUgbmV4dCBwcmltYXJ5IHNoaWZ0ZWQgdmFsdWUgYW5kIGZpbGxzIHVwIGNlYnVmZmVyIHdpdGggdGhlIAorCSAqIG5leHQgbm9uLWlnbm9yYWJsZSBjZS4KKwkgKiBAcGFyYW0gY29sZWl0ZXIgY29sbGF0aW9uIGVsZW1lbnQgaXRlcmF0b3IKKwkgKiBAcGFyYW0gZG9IaXJhZ2FuYTQgZmxhZyBpbmRpY2F0b3IgaWYgaGlyYWdhbmEgcXVhdGVybmFyeSBpcyB0byBiZSAKKwkgKiAJCQkJCQloYW5kbGVkCisJICogQHBhcmFtIGxvd2VzdHB2YWx1ZSBsb3dlc3QgcHJpbWFyeSBzaGlmdGVkIHZhbHVlIHRoYXQgd2lsbCBub3QgYmUgCisJICogCQkJCQkJaWdub3JlZAorCSAqIEByZXR1cm4gcmVzdWx0IG5leHQgbW9kaWZpZWQgY2UgCisJICovCisJcHJpdmF0ZSBmaW5hbCBpbnQgZ2V0UHJpbWFyeVNoaWZ0ZWRDb21wYXJlQ0UoCisJCQkJCQkJCQkJQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yIGNvbGVpdGVyLAorCQkJCQkJCQkJCWludCBsb3dlc3RwdmFsdWUsIGJvb2xlYW4gaXNTcmMpCisJCQkJCQkJCQkJCisJeworCQlib29sZWFuIHNoaWZ0ZWQgPSBmYWxzZTsKKwkJaW50IHJlc3VsdCA9IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5JR05PUkFCTEU7CisgICAgICAgIGludCBjZWJ1ZmZlcltdID0gbV9zcmNVdGlsQ0VCdWZmZXJfOworICAgICAgICBpbnQgY2VidWZmZXJzaXplID0gbV9zcmNVdGlsQ0VCdWZmZXJTaXplXzsKKyAgICAgICAgaWYgKCFpc1NyYykgeworICAgICAgICAgICAgY2VidWZmZXIgPSBtX3RndFV0aWxDRUJ1ZmZlcl87CisgICAgICAgICAgICBjZWJ1ZmZlcnNpemUgPSBtX3RndFV0aWxDRUJ1ZmZlclNpemVfOworICAgICAgICB9CisJICAgIHdoaWxlICh0cnVlKSB7CisJICAgICAgICByZXN1bHQgPSBjb2xlaXRlci5uZXh0KCk7CisJICAgICAgICBpZiAocmVzdWx0ID09IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5OVUxMT1JERVIpIHsKKwkgICAgICAgICAgICBjZWJ1ZmZlciA9IGFwcGVuZChjZWJ1ZmZlciwgY2VidWZmZXJzaXplLCByZXN1bHQpOworICAgICAgICAgICAgICAgIGNlYnVmZmVyc2l6ZSArKzsKKwkgICAgICAgICAgICBicmVhazsKKwkgICAgICAgIH0gCisJICAgICAgICBlbHNlIGlmIChyZXN1bHQgPT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLklHTk9SQUJMRQorCSAgICAgICAgICAgICAgICAgfHwgKHNoaWZ0ZWQgCisJICAgICAgICAgICAgICAgICAgICAgJiYgKHJlc3VsdCAmIENFX1BSSU1BUllfTUFTS18pIAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuSUdOT1JBQkxFKSkgeyAKKyAgICAgICAgICAgICAgICAvLyBVQ0EgYW1lbmRtZW50IC0gaWdub3JlIGlnbm9yYWJsZXMgdGhhdCBmb2xsb3cgc2hpZnRlZCBjb2RlIAorICAgICAgICAgICAgICAgIC8vIHBvaW50cworCSAgICAgICAgICAgIGNvbnRpbnVlOworCSAgICAgICAgfSAKKwkgICAgICAgIGVsc2UgaWYgKGlzQ29udGludWF0aW9uKHJlc3VsdCkpIHsKKwkgICAgICAgIAlpZiAoKHJlc3VsdCAmIENFX1BSSU1BUllfTUFTS18pIAorCSAgICAgICAgICAgIAkJCQkJIT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLklHTk9SQUJMRSkgeyAKKwkgICAgICAgICAgICAJLy8gVGhlcmUgaXMgcHJpbWFyeSB2YWx1ZQorCSAgICAgICAgICAgICAgCWlmIChzaGlmdGVkKSB7CisJICAgICAgICAgICAgICAgIAlyZXN1bHQgPSAocmVzdWx0ICYgQ0VfUFJJTUFSWV9NQVNLXykgCisJICAgICAgICAgICAgICAgIAkJCQkJCXwgQ0VfQ09OVElOVUFUSU9OX01BUktFUl87IAorCSAgICAgICAgICAgICAgICAJLy8gcHJlc2VydmUgaW50ZXJlc3RpbmcgY29udGludWF0aW9uCisJICAgICAgICAgICAgICAgIAljZWJ1ZmZlciA9IGFwcGVuZChjZWJ1ZmZlciwgY2VidWZmZXJzaXplLCByZXN1bHQpOworICAgICAgICAgICAgICAgICAgICAgICAgY2VidWZmZXJzaXplICsrOworCSAgICAgICAgICAgCQkJY29udGludWU7CisJICAgICAgICAJCX0gCisJICAgICAgICAJCWVsc2UgeworCSAgICAgICAgICAgCQkJY2VidWZmZXIgPSBhcHBlbmQoY2VidWZmZXIsIGNlYnVmZmVyc2l6ZSwgcmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNlYnVmZmVyc2l6ZSArKzsKKwkgICAgICAgICAgICAgICAgCWJyZWFrOworCSAgICAgICAgICAgICAgCX0KKwkgICAgICAgICAgICB9IAorCSAgICAgICAgICAgIGVsc2UgeyAvLyBKdXN0IGxvd2VyIGxldmVsIHZhbHVlcworCSAgICAgICAgICAgIAlpZiAoIXNoaWZ0ZWQpIHsKKwkgICAgICAgICAgICAJCWNlYnVmZmVyID0gYXBwZW5kKGNlYnVmZmVyLCBjZWJ1ZmZlcnNpemUsIHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjZWJ1ZmZlcnNpemUgKys7CisJICAgICAgICAgICAgICAJfQorCSAgICAgICAgICAgIH0KKwkgICAgICAgIH0gCisJICAgICAgICBlbHNlIHsgLy8gcmVndWxhcgorICAgICAgICAgICAgICAgIGlmIChVdGlsaXR5LmNvbXBhcmVVbnNpZ25lZChyZXN1bHQgJiBDRV9QUklNQVJZX01BU0tfLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG93ZXN0cHZhbHVlKSA+IDApIHsKKwkgICAgICAgICAgICAgCWNlYnVmZmVyID0gYXBwZW5kKGNlYnVmZmVyLCBjZWJ1ZmZlcnNpemUsIHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIGNlYnVmZmVyc2l6ZSArKzsKKwkgICAgICAgICAgICAgCWJyZWFrOworCSAgICAgICAgICAgIH0gCisJICAgICAgICAgICAgZWxzZSB7CisJICAgICAgICAgICAgCWlmICgocmVzdWx0ICYgQ0VfUFJJTUFSWV9NQVNLXykgIT0gMCkgeworCSAgICAgICAgICAgICAgICAJc2hpZnRlZCA9IHRydWU7CisJICAgICAgICAgICAgICAgIAlyZXN1bHQgJj0gQ0VfUFJJTUFSWV9NQVNLXzsKKwkgICAgICAgICAgICAgICAgCWNlYnVmZmVyID0gYXBwZW5kKGNlYnVmZmVyLCBjZWJ1ZmZlcnNpemUsIHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjZWJ1ZmZlcnNpemUgKys7CisJICAgICAgICAgICAgICAgIAljb250aW51ZTsKKwkgICAgICAgICAgICAgIAl9IAorCSAgICAgICAgICAgICAgCWVsc2UgeworCSAgICAgICAgICAgICAgICAJY2VidWZmZXIgPSBhcHBlbmQoY2VidWZmZXIsIGNlYnVmZmVyc2l6ZSwgcmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNlYnVmZmVyc2l6ZSArKzsKKwkgICAgICAgICAgICAgICAgCXNoaWZ0ZWQgPSBmYWxzZTsKKwkgICAgICAgICAgICAgICAgCWNvbnRpbnVlOworCSAgICAgICAgICAgICAgCX0KKwkgICAgICAgICAgICB9CisJICAgICAgICB9CisJICAgIH0KKyAgICAgICAgaWYgKGlzU3JjKSB7CisgICAgICAgICAgICBtX3NyY1V0aWxDRUJ1ZmZlcl8gPSBjZWJ1ZmZlcjsKKyAgICAgICAgICAgIG1fc3JjVXRpbENFQnVmZmVyU2l6ZV8gPSBjZWJ1ZmZlcnNpemU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtX3RndFV0aWxDRUJ1ZmZlcl8gPSBjZWJ1ZmZlcjsKKyAgICAgICAgICAgIG1fdGd0VXRpbENFQnVmZmVyU2l6ZV8gPSBjZWJ1ZmZlcnNpemU7CisgICAgICAgIH0KKwkgICAgcmVzdWx0ICY9IENFX1BSSU1BUllfTUFTS187CisJICAgIHJldHVybiByZXN1bHQ7CisJfQorCQkJCQkJCQorCS8qKgorCSAqIEFwcGVuZGluZyBhbiBpbnQgdG8gYW4gYXJyYXkgb2YgaW50cyBhbmQgaW5jcmVhc2VzIGl0IGlmIHdlIHJ1biBvdXQgb2YgCisJICogc3BhY2UKKwkgKiBAcGFyYW0gYXJyYXkgb2YgaW50IGFycmF5cworCSAqIEBwYXJhbSBhcHBlbmRpbmRleCBpbmRleCBhdCB3aGljaCB2YWx1ZSB3aWxsIGJlIGFwcGVuZGVkCisJICogQHBhcmFtIHZhbHVlIHRvIGFwcGVuZAorICAgICAqIEByZXR1cm4gYXJyYXkgaWYgc2l6ZSBpcyBub3QgaW5jcmVhc2VkLCBvdGhlcndpc2UgYSBuZXcgYXJyYXkgd2lsbCBiZSAKKyAgICAgKiAgICAgICAgIHJldHVybmVkCisJICovCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50W10gYXBwZW5kKGludCBhcnJheVtdLCBpbnQgYXBwZW5kaW5kZXgsIGludCB2YWx1ZSkKKwl7CisJCWlmIChhcHBlbmRpbmRleCArIDEgPj0gYXJyYXkubGVuZ3RoKSB7CisJCQlhcnJheSA9IGluY3JlYXNlKGFycmF5LCBhcHBlbmRpbmRleCwgQ0VfQlVGRkVSX1NJWkVfKTsKKwkJfQkJCQorCQlhcnJheVthcHBlbmRpbmRleF0gPSB2YWx1ZTsKKyAgICAgICAgcmV0dXJuIGFycmF5OworCX0KKwkKKwkvKioKKwkgKiBEb2VzIHNlY29uZGFyeSBzdHJlbmd0aCBjb21wYXJpc29uIGJhc2VkIG9uIHRoZSBjb2xsZWN0ZWQgY2VzLgorCSAqIEBwYXJhbSBkb0ZyZW5jaCBmbGFnIGluZGljYXRlcyBpZiBGcmVuY2ggb3JkZXJpbmcgaXMgdG8gYmUgZG9uZQorCSAqIEByZXR1cm4gdGhlIHNlY29uZGFyeSBzdHJlbmd0aCBjb21wYXJpc29uIHJlc3VsdAorCSAqLworCXByaXZhdGUgZmluYWwgaW50IGRvU2Vjb25kYXJ5Q29tcGFyZShib29sZWFuIGRvRnJlbmNoKQorCXsKKwkJLy8gbm93LCB3ZSdyZSBnb25uYSByZWV4YW1pbmUgY29sbGVjdGVkIENFcworCSAgICBpZiAoIWRvRnJlbmNoKSB7IC8vIG5vcm1hbAorCSAgICAJaW50IHNvZmZzZXQgPSAwOworCSAgICAJaW50IHRvZmZzZXQgPSAwOworCSAgICAgICAgd2hpbGUgKHRydWUpIHsKKwkgICAgICAgIAlpbnQgc29yZGVyID0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLklHTk9SQUJMRTsKKwkgICAgICAgICAgCXdoaWxlIChzb3JkZXIgPT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLklHTk9SQUJMRSkgeworCSAgICAgICAgICAgIAlzb3JkZXIgPSBtX3NyY1V0aWxDRUJ1ZmZlcl9bc29mZnNldCArK10gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYgQ0VfU0VDT05EQVJZX01BU0tfOworCSAgICAgICAgICAJfQorCQkJCWludCB0b3JkZXIgPSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuSUdOT1JBQkxFOworCSAgICAgICAgICAJd2hpbGUgKHRvcmRlciA9PSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuSUdOT1JBQkxFKSB7CisJICAgICAgICAgIAkJdG9yZGVyID0gbV90Z3RVdGlsQ0VCdWZmZXJfW3RvZmZzZXQgKytdIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIENFX1NFQ09OREFSWV9NQVNLXzsKKwkgICAgICAgICAgCX0KKwkKKwkgICAgICAgICAgCWlmIChzb3JkZXIgPT0gdG9yZGVyKSB7CisJICAgICAgICAgICAgCWlmIChtX3NyY1V0aWxDRUJ1ZmZlcl9bc29mZnNldCAtIDFdICAKKwkgICAgICAgICAgICAJCQkJCT09IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5OVUxMT1JERVIpIHsKKwkgICAgICAgICAgICAgIAkJYnJlYWs7CisJICAgICAgICAgICAgCX0KKwkgICAgICAgICAgCX0gCisJICAgICAgICAgIAllbHNlIHsKKwkgICAgICAgICAgCQlpZiAobV9zcmNVdGlsQ0VCdWZmZXJfW3NvZmZzZXQgLSAxXSA9PSAKKwkgICAgICAgICAgCQkJCUNvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5OVUxMT1JERVIpIHsKKwkgICAgICAgICAgCQkJcmV0dXJuIC0xOworCSAgICAgICAgICAJCX0KKwkgICAgICAgICAgCQlpZiAobV90Z3RVdGlsQ0VCdWZmZXJfW3RvZmZzZXQgLSAxXSA9PSAKKwkgICAgICAgICAgCQkJCUNvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5OVUxMT1JERVIpIHsKKwkgICAgICAgICAgCQkJcmV0dXJuIDE7CisJICAgICAgICAgIAkJfQorCSAgICAgICAgICAgICAgIAlyZXR1cm4gKHNvcmRlciA8IHRvcmRlcikgPyAtMSA6IDE7CisJICAgICAgICAgIAl9CisJICAgICAgICB9CisJICAgIH0gCisJICAgIGVsc2UgeyAvLyBkbyB0aGUgRnJlbmNoIAorCSAgICAJbV9zcmNVdGlsQ29udE9mZnNldF8gPSAwOworICAgICAgICAgICAgbV90Z3RVdGlsQ29udE9mZnNldF8gPSAwOworICAgICAgICAgICAgbV9zcmNVdGlsT2Zmc2V0XyA9IG1fc3JjVXRpbENFQnVmZmVyU2l6ZV8gLSAyOyAKKyAgICAgICAgICAgIG1fdGd0VXRpbE9mZnNldF8gPSBtX3RndFV0aWxDRUJ1ZmZlclNpemVfIC0gMjsgCisJICAgICAgICB3aGlsZSAodHJ1ZSkgeworCSAgICAgICAgCWludCBzb3JkZXIgPSBnZXRTZWNvbmRhcnlGcmVuY2hDRSh0cnVlKTsKKwkgICAgICAgIAlpbnQgdG9yZGVyID0gZ2V0U2Vjb25kYXJ5RnJlbmNoQ0UoZmFsc2UpOworCSAgICAgICAgICAJaWYgKHNvcmRlciA9PSB0b3JkZXIpIHsKKwkgICAgICAgICAgICAJaWYgKChtX3NyY1V0aWxPZmZzZXRfIDwgMCAmJiBtX3RndFV0aWxPZmZzZXRfIDwgMCkgCisJICAgICAgICAgICAgCQl8fCBtX3NyY1V0aWxDRUJ1ZmZlcl9bbV9zcmNVdGlsT2Zmc2V0X10gCisJICAgICAgICAgICAgCQkJCQk9PSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuTlVMTE9SREVSKSB7CisJICAgICAgICAgICAgICAJCWJyZWFrOworCSAgICAgICAgICAgIAl9IAorCSAgICAgICAgICAJfSAKKwkgICAgICAgICAgCWVsc2UgeworCSAgICAgICAgICAgICAgCXJldHVybiAoc29yZGVyIDwgdG9yZGVyKSA/IC0xIDogMTsKKwkgICAgICAgICAgCX0KKwkgICAgICAgIH0KKwkgICAgfQorCSAgICByZXR1cm4gMDsKKwl9CisJCisJLyoqCisJICogQ2FsY3VsYXRlcyB0aGUgbmV4dCBzZWNvbmRhcnkgZnJlbmNoIENFLgorCSAqIEBwYXJhbSBpc1NyYyBmbGFnIGluZGljYXRvciBpZiB3ZSBhcmUgY2FsY3VsYXRpbmcgdGhlIHNyYyBjZXMKKwkgKiBAcmV0dXJuIHJlc3VsdCBuZXh0IG1vZGlmaWVkIGNlCisJICovCisJcHJpdmF0ZSBmaW5hbCBpbnQgZ2V0U2Vjb25kYXJ5RnJlbmNoQ0UoYm9vbGVhbiBpc1NyYykKKwl7CisJCWludCByZXN1bHQgPSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuSUdOT1JBQkxFOworICAgICAgICBpbnQgb2Zmc2V0ID0gbV9zcmNVdGlsT2Zmc2V0XzsKKyAgICAgICAgaW50IGNvbnRpbnVhdGlvbm9mZnNldCA9IG1fc3JjVXRpbENvbnRPZmZzZXRfOworICAgICAgICBpbnQgY2VidWZmZXJbXSA9IG1fc3JjVXRpbENFQnVmZmVyXzsKKyAgICAgICAgaWYgKCFpc1NyYykgeworICAgICAgICAgICAgb2Zmc2V0ID0gbV90Z3RVdGlsT2Zmc2V0XzsKKyAgICAgICAgICAgIGNvbnRpbnVhdGlvbm9mZnNldCA9IG1fdGd0VXRpbENvbnRPZmZzZXRfOworICAgICAgICAgICAgY2VidWZmZXIgPSBtX3RndFV0aWxDRUJ1ZmZlcl87CisgICAgICAgIH0KKyAgICAgICAgCisJICAgIHdoaWxlIChyZXN1bHQgPT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLklHTk9SQUJMRSAKKwkgICAgCQkmJiBvZmZzZXQgPj0gMCkgeworCSAgICAgICAgaWYgKGNvbnRpbnVhdGlvbm9mZnNldCA9PSAwKSB7CisJICAgICAgICAJcmVzdWx0ID0gY2VidWZmZXJbb2Zmc2V0XTsKKwkJICAgICAgICB3aGlsZSAoaXNDb250aW51YXRpb24oY2VidWZmZXJbb2Zmc2V0IC0tXSkpOworCQkgICAgICAgIC8vIGFmdGVyIHRoaXMsIHNvcmRlciBpcyBhdCB0aGUgc3RhcnQgb2YgY29udGludWF0aW9uLCAKKwkJICAgICAgICAvLyBhbmQgb2Zmc2V0IHBvaW50cyBiZWZvcmUgdGhhdCAKKwkJICAgICAgICBpZiAoaXNDb250aW51YXRpb24oY2VidWZmZXJbb2Zmc2V0ICsgMV0pKSB7CisJCSAgICAgICAgCS8vIHNhdmUgb2Zmc2V0IGZvciBsYXRlcgorCQkgICAgICAgIAljb250aW51YXRpb25vZmZzZXQgPSBvZmZzZXQ7IAorCQkgICAgICAgIAlvZmZzZXQgKz0gMjsgIAorCQkgICAgICAgIH0KKwkgICAgICAgIH0KKwkgICAgICAgIGVsc2UgeworCSAgICAgICAgCXJlc3VsdCA9IGNlYnVmZmVyW29mZnNldCArK107CisJICAgICAgICAJaWYgKCFpc0NvbnRpbnVhdGlvbihyZXN1bHQpKSB7IAorCSAgICAgICAgCQkvLyB3ZSBoYXZlIGZpbmlzaGVkIHdpdGggdGhpcyBjb250aW51YXRpb24KKwkgICAgICAgICAgIAkJb2Zmc2V0ID0gY29udGludWF0aW9ub2Zmc2V0OworCSAgICAgICAgICAgCQkvLyByZXNldCB0aGUgcG9pbnRlciB0byBiZWZvcmUgY29udGludWF0aW9uIAorCSAgICAgICAgICAgCQljb250aW51YXRpb25vZmZzZXQgPSAwOworCSAgICAgICAgICAgCQljb250aW51ZTsKKwkgICAgICAgIAl9CisJICAgICAgICB9CisJICAgICAgICByZXN1bHQgJj0gQ0VfU0VDT05EQVJZX01BU0tfOyAvLyByZW1vdmUgY29udGludWF0aW9uIGJpdCAgICAgICAgCisJICAgIH0gIAorICAgICAgICBpZiAoaXNTcmMpIHsKKyAgICAgICAgICAgIG1fc3JjVXRpbE9mZnNldF8gPSBvZmZzZXQ7CisgICAgICAgICAgICBtX3NyY1V0aWxDb250T2Zmc2V0XyA9IGNvbnRpbnVhdGlvbm9mZnNldDsKKyAgICAgICAgfSAgCisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbV90Z3RVdGlsT2Zmc2V0XyA9IG9mZnNldDsKKyAgICAgICAgICAgIG1fdGd0VXRpbENvbnRPZmZzZXRfID0gY29udGludWF0aW9ub2Zmc2V0OworICAgICAgICB9CisJICAgIHJldHVybiByZXN1bHQ7CisJfQorCQorCS8qKgorCSAqIERvZXMgY2FzZSBzdHJlbmd0aCBjb21wYXJpc29uIGJhc2VkIG9uIHRoZSBjb2xsZWN0ZWQgY2VzLgorCSAqIEByZXR1cm4gdGhlIGNhc2Ugc3RyZW5ndGggY29tcGFyaXNvbiByZXN1bHQKKwkgKi8KKwlwcml2YXRlIGZpbmFsIGludCBkb0Nhc2VDb21wYXJlKCkKKwl7CisJCWludCBzb2Zmc2V0ID0gMDsKKwkJaW50IHRvZmZzZXQgPSAwOworCSAgICB3aGlsZSAodHJ1ZSkgeworCSAgICAJaW50IHNvcmRlciA9IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5JR05PUkFCTEU7CisJICAgICAgICBpbnQgdG9yZGVyID0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLklHTk9SQUJMRTsKKwkgICAgICAgIHdoaWxlICgoc29yZGVyICYgQ0VfUkVNT1ZFX0NBU0VfKSAKKwkgICAgICAgIAkJCQkJCT09IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5JR05PUkFCTEUpIHsKKwkgICAgICAgIAlzb3JkZXIgPSBtX3NyY1V0aWxDRUJ1ZmZlcl9bc29mZnNldCArK107CisJICAgICAgICAgIAlpZiAoIWlzQ29udGludWF0aW9uKHNvcmRlcikpIHsKKwkgICAgICAgICAgICAJc29yZGVyICY9IENFX0NBU0VfTUFTS18zXzsKKwkgICAgICAgICAgICAJc29yZGVyIF49IG1fY2FzZVN3aXRjaF87CisJICAgICAgICAgIAl9IAorCSAgICAgICAgICAJZWxzZSB7CisJICAgICAgICAgICAgCXNvcmRlciA9IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5JR05PUkFCTEU7CisJICAgICAgICAgIAl9CisJICAgICAgICB9CisJCisJICAgICAgICB3aGlsZSAoKHRvcmRlciAmIENFX1JFTU9WRV9DQVNFXykgCisJICAgICAgICAJCQkJCQk9PSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuSUdOT1JBQkxFKSB7CisJICAgICAgICAJdG9yZGVyID0gbV90Z3RVdGlsQ0VCdWZmZXJfW3RvZmZzZXQgKytdOworCSAgICAgICAgICAJaWYgKCFpc0NvbnRpbnVhdGlvbih0b3JkZXIpKSB7CisJICAgICAgICAgICAgCXRvcmRlciAmPSBDRV9DQVNFX01BU0tfM187CisJICAgICAgICAgICAgCXRvcmRlciBePSBtX2Nhc2VTd2l0Y2hfOworCSAgICAgICAgICAJfSAKKwkgICAgICAgICAgCWVsc2UgeworCSAgICAgICAgICAgIAl0b3JkZXIgPSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuSUdOT1JBQkxFOworCSAgICAgICAgICAJfQorCSAgICAgICAgfQorCQorICAgICAgICAgICAgc29yZGVyICY9IENFX0NBU0VfQklUX01BU0tfOworICAgICAgICAgICAgdG9yZGVyICY9IENFX0NBU0VfQklUX01BU0tfOworCQkJaWYgKHNvcmRlciA9PSB0b3JkZXIpIHsKKwkJCQlpZiAobV9zcmNVdGlsQ0VCdWZmZXJfW3NvZmZzZXQgLSAxXSAKKwkJCQkJCQkJCQk9PSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuTlVMTE9SREVSKSB7CisJICAgICAgICAgIAkJYnJlYWs7CisJICAgICAgICAJfSAKKwkJCX0KKwkJCWVsc2UgeworCSAgICAgICAgCWlmIChtX3NyY1V0aWxDRUJ1ZmZlcl9bc29mZnNldCAtIDFdIAorCSAgICAgICAgCQkJCQkJPT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUikgeworCSAgICAgICAgICAJCXJldHVybiAtMTsKKwkgICAgICAgIAl9CisgICAgICAgICAgICAgICAgaWYgKG1fdGd0VXRpbENFQnVmZmVyX1tzb2Zmc2V0IC0gMV0gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuTlVMTE9SREVSKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgICAgIH0KKwkgICAgICAgIAlyZXR1cm4gKHNvcmRlciA8IHRvcmRlcikgPyAtMSA6IDE7CisJCQl9CisJICAgIH0KKwkgICAgcmV0dXJuIDA7CisJfQorCQorCS8qKgorCSAqIERvZXMgdGVydGlhcnkgc3RyZW5ndGggY29tcGFyaXNvbiBiYXNlZCBvbiB0aGUgY29sbGVjdGVkIGNlcy4KKwkgKiBAcmV0dXJuIHRoZSB0ZXJ0aWFyeSBzdHJlbmd0aCBjb21wYXJpc29uIHJlc3VsdAorCSAqLworCXByaXZhdGUgZmluYWwgaW50IGRvVGVydGlhcnlDb21wYXJlKCkKKwl7CisJCWludCBzb2Zmc2V0ID0gMDsKKwkgICAgaW50IHRvZmZzZXQgPSAwOworCSAgICB3aGlsZSAodHJ1ZSkgeworCSAgICAJaW50IHNvcmRlciA9IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5JR05PUkFCTEU7CisJICAgIAlpbnQgdG9yZGVyID0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLklHTk9SQUJMRTsKKwkgICAgICAgIHdoaWxlICgoc29yZGVyICYgQ0VfUkVNT1ZFX0NBU0VfKSAKKwkgICAgICAgIAkJCQkJPT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLklHTk9SQUJMRSkgeworCSAgICAgICAgICAJc29yZGVyID0gbV9zcmNVdGlsQ0VCdWZmZXJfW3NvZmZzZXQgKytdICYgbV9tYXNrM187CisJICAgICAgICAgIAlpZiAoIWlzQ29udGludWF0aW9uKHNvcmRlcikpIHsKKwkgICAgICAgICAgICAJc29yZGVyIF49IG1fY2FzZVN3aXRjaF87CisJICAgICAgICAgIAl9IAorCSAgICAgICAgICAJZWxzZSB7CisJICAgICAgICAgICAgCXNvcmRlciAmPSBDRV9SRU1PVkVfQ0FTRV87CisJICAgICAgICAgIAl9CisJICAgICAgICB9CisJCisJCQl3aGlsZSAoKHRvcmRlciAmIENFX1JFTU9WRV9DQVNFXykgCisJICAgICAgICAJCQkJCT09IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5JR05PUkFCTEUpIHsKKwkgICAgICAgICAgCXRvcmRlciA9IG1fdGd0VXRpbENFQnVmZmVyX1t0b2Zmc2V0ICsrXSAmIG1fbWFzazNfOworCSAgICAgICAgICAJaWYgKCFpc0NvbnRpbnVhdGlvbih0b3JkZXIpKSB7CisJICAgICAgICAgICAgCXRvcmRlciBePSBtX2Nhc2VTd2l0Y2hfOworCSAgICAgICAgICAJfSAKKwkgICAgICAgICAgCWVsc2UgeworCSAgICAgICAgICAgIAl0b3JkZXIgJj0gQ0VfUkVNT1ZFX0NBU0VfOworCSAgICAgICAgICAJfQorCSAgICAgICAgfSAgICAgICAgCisJCisJICAgICAgICBpZiAoc29yZGVyID09IHRvcmRlcikgeworCSAgICAgICAgICAJaWYgKG1fc3JjVXRpbENFQnVmZmVyX1tzb2Zmc2V0IC0gMV0gCisJICAgICAgICAgIAkJCQkJCT09IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5OVUxMT1JERVIpIHsKKwkgICAgICAgICAgICAJYnJlYWs7CisJICAgICAgICAgIAl9IAorCSAgICAgICAgfSAKKwkgICAgICAgIGVsc2UgeworCSAgICAgICAgCWlmIChtX3NyY1V0aWxDRUJ1ZmZlcl9bc29mZnNldCAtIDFdID09IAorCSAgICAgICAgICAJCQkJCQkJQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUikgeworCSAgICAgICAgICAJCXJldHVybiAtMTsKKwkgICAgICAgICAgCX0KKwkgICAgICAgICAgCWlmIChtX3RndFV0aWxDRUJ1ZmZlcl9bdG9mZnNldCAtIDFdID09IAorCSAgICAgICAgICAJCQkJQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUikgeworCSAgICAgICAgICAJCXJldHVybiAxOworCSAgICAgICAgICAJfQorCSAgICAgICAgICAgIHJldHVybiAoc29yZGVyIDwgdG9yZGVyKSA/IC0xIDogMTsKKwkgICAgICAgIH0KKwkgICAgfQorCSAgICByZXR1cm4gMDsKKwl9CisJCisJLyoqCisJICogRG9lcyBxdWF0ZXJuYXJ5IHN0cmVuZ3RoIGNvbXBhcmlzb24gYmFzZWQgb24gdGhlIGNvbGxlY3RlZCBjZXMuCisJICogQHBhcmFtIGxvd2VzdHB2YWx1ZSB0aGUgbG93ZXN0IHByaW1hcnkgdmFsdWUgdGhhdCB3aWxsIG5vdCBiZSBpZ25vcmVkIGlmIAorCSAqIAkJCQkJCWFsdGVybmF0ZSBoYW5kbGluZyBpcyBzaGlmdGVkCisJICogQHJldHVybiB0aGUgcXVhdGVybmFyeSBzdHJlbmd0aCBjb21wYXJpc29uIHJlc3VsdAorCSAqLworCXByaXZhdGUgZmluYWwgaW50IGRvUXVhdGVybmFyeUNvbXBhcmUoaW50IGxvd2VzdHB2YWx1ZSkKKwl7CisJCWJvb2xlYW4gc1NoaWZ0ZWQgPSB0cnVlOworCSAgICBib29sZWFuIHRTaGlmdGVkID0gdHJ1ZTsKKwkgICAgaW50IHNvZmZzZXQgPSAwOworCSAgICBpbnQgdG9mZnNldCA9IDA7CisJICAgIHdoaWxlICh0cnVlKSB7CisJICAgIAlpbnQgc29yZGVyID0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLklHTk9SQUJMRTsKKwkgICAgCWludCB0b3JkZXIgPSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuSUdOT1JBQkxFOworCSAgICAgICAgd2hpbGUgKHNvcmRlciA9PSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuSUdOT1JBQkxFCisJICAgICAgICAJCXx8IChpc0NvbnRpbnVhdGlvbihzb3JkZXIpICYmICFzU2hpZnRlZCkpIHsKKwkgICAgICAgICAgCXNvcmRlciA9IG1fc3JjVXRpbENFQnVmZmVyX1tzb2Zmc2V0ICsrXTsKKwkgICAgICAgICAgCWlmIChpc0NvbnRpbnVhdGlvbihzb3JkZXIpKSB7CisJICAgICAgICAgICAgCWlmICghc1NoaWZ0ZWQpIHsKKwkgICAgICAgICAgICAgIAkJY29udGludWU7CisJICAgICAgICAgICAgCX0KKwkgICAgICAgICAgCX0gCisJICAgICAgICAgIAllbHNlIGlmIChVdGlsaXR5LmNvbXBhcmVVbnNpZ25lZChzb3JkZXIsIGxvd2VzdHB2YWx1ZSkgPiAwIAorCSAgICAgICAgICAJCQkJfHwgKHNvcmRlciAmIENFX1BSSU1BUllfTUFTS18pIAorCSAgICAgICAgICAJCQkJCQk9PSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuSUdOT1JBQkxFKSB7IAorCSAgICAgICAgICAJCS8vIG5vbiBjb250aW51YXRpb24KKwkgICAgICAgICAgICAJc29yZGVyID0gQ0VfUFJJTUFSWV9NQVNLXzsKKwkgICAgICAgICAgICAJc1NoaWZ0ZWQgPSBmYWxzZTsKKwkgICAgICAgICAgCX0gCisJICAgICAgICAgIAllbHNlIHsKKwkgICAgICAgICAgICAJc1NoaWZ0ZWQgPSB0cnVlOworCSAgICAgICAgICAJfQorCSAgICAgICAgfQorCSAgICAgICAgc29yZGVyID4+Pj0gQ0VfUFJJTUFSWV9TSElGVF87CisJCQl3aGlsZSAodG9yZGVyID09IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5JR05PUkFCTEUgCisJICAgICAgICAJCXx8IChpc0NvbnRpbnVhdGlvbih0b3JkZXIpICYmICF0U2hpZnRlZCkpIHsKKwkgICAgICAgICAgCXRvcmRlciA9IG1fdGd0VXRpbENFQnVmZmVyX1t0b2Zmc2V0ICsrXTsKKwkgICAgICAgICAgCWlmIChpc0NvbnRpbnVhdGlvbih0b3JkZXIpKSB7CisJICAgICAgICAgICAgCWlmICghdFNoaWZ0ZWQpIHsKKwkgICAgICAgICAgICAgIAkJY29udGludWU7CisJICAgICAgICAgICAgCX0KKwkgICAgICAgICAgCX0gCisJICAgICAgICAgIAllbHNlIGlmIChVdGlsaXR5LmNvbXBhcmVVbnNpZ25lZCh0b3JkZXIsIGxvd2VzdHB2YWx1ZSkgPiAwIAorCSAgICAgICAgICAJCQkJfHwgKHRvcmRlciAmIENFX1BSSU1BUllfTUFTS18pIAorCSAgICAgICAgICAJCQkJCQk9PSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuSUdOT1JBQkxFKSB7IAorCSAgICAgICAgICAJCS8vIG5vbiBjb250aW51YXRpb24KKwkgICAgICAgICAgICAJdG9yZGVyID0gQ0VfUFJJTUFSWV9NQVNLXzsKKwkgICAgICAgICAgICAJdFNoaWZ0ZWQgPSBmYWxzZTsKKwkgICAgICAgICAgCX0gCisJICAgICAgICAgIAllbHNlIHsKKwkgICAgICAgICAgICAJdFNoaWZ0ZWQgPSB0cnVlOworCSAgICAgICAgICAJfQorCSAgICAgICAgfQorCSAgICAgICAgdG9yZGVyID4+Pj0gQ0VfUFJJTUFSWV9TSElGVF87CisJCisJICAgICAgICBpZiAoc29yZGVyID09IHRvcmRlcikgeworCSAgICAgICAgICAJaWYgKG1fc3JjVXRpbENFQnVmZmVyX1tzb2Zmc2V0IC0gMV0gCisJICAgICAgICAgIAkJPT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUikgeworCSAgICAgICAgICAgIAlicmVhazsKKwkgICAgICAgICAgCX0KKwkgICAgICAgIH0gCisJICAgICAgICBlbHNlIHsKKwkgICAgICAgIAlpZiAobV9zcmNVdGlsQ0VCdWZmZXJfW3NvZmZzZXQgLSAxXSA9PSAKKwkgICAgICAgICAgCQlDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuTlVMTE9SREVSKSB7CisJICAgICAgICAgIAkJcmV0dXJuIC0xOworCSAgICAgICAgICAJfQorCSAgICAgICAgICAJaWYgKG1fdGd0VXRpbENFQnVmZmVyX1t0b2Zmc2V0IC0gMV0gPT0gCisJICAgICAgICAgIAkJQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUikgeworCSAgICAgICAgICAJCXJldHVybiAxOworCSAgICAgICAgICAJfQorCSAgICAgICAgICAgIHJldHVybiAoc29yZGVyIDwgdG9yZGVyKSA/IC0xIDogMTsKKwkgICAgICAgIH0KKwkgICAgfQorCSAgICByZXR1cm4gMDsKKwl9CisJCisJLyoqICAKKwkgKiBJbnRlcm5hbCBmdW5jdGlvbi4gRG9lcyBieXRlIGxldmVsIHN0cmluZyBjb21wYXJlLiBVc2VkIGJ5IHN0cmNvbGwgaWYgCisJICogc3RyZW5ndGggPT0gaWRlbnRpY2FsIGFuZCBzdHJpbmdzIGFyZSBvdGhlcndpc2UgZXF1YWwuIFRoaXMgaXMgYSByYXJlIAorCSAqIGNhc2UuIENvbXBhcmlzb24gbXVzdCBiZSBkb25lIG9uIE5GRCBub3JtYWxpemVkIHN0cmluZ3MuIEZDRCBpcyBub3QgZ29vZCAKKwkgKiBlbm91Z2guCisJICogQHBhcmFtIHNvdXJjZSB0ZXh0CisJICogQHBhcmFtIHRhcmdldCB0ZXh0CisJICogQHBhcmFtIG9mZnNldCBvZiB0aGUgZmlyc3QgZGlmZmVyZW5jZSBpbiB0aGUgdGV4dCBzdHJpbmdzCisJICogQHBhcmFtIG5vcm1hbGl6ZSBmbGFnIGluZGljYXRpbmcgaWYgd2UgYXJlIHRvIG5vcm1hbGl6ZSB0aGUgdGV4dCBiZWZvcmUKKwkgKiAJCQkJY29tcGFyaXNvbgorCSAqIEByZXR1cm4gMSBpZiBzb3VyY2UgaXMgZ3JlYXRlciB0aGFuIHRhcmdldCwgLTEgbGVzcyB0aGFuIGFuZCAwIGlmIGVxdWFscworCSAqLworCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBkb0lkZW50aWNhbENvbXBhcmUoU3RyaW5nIHNvdXJjZSwgU3RyaW5nIHRhcmdldCwgCisJCQkJCQkJCQkJCQlpbnQgb2Zmc2V0LCBib29sZWFuIG5vcm1hbGl6ZSkKKwkJCQkJCQkJCQkJCQorCXsKKwkgICAgaWYgKG5vcm1hbGl6ZSkgeworCSAgICAgICAgaWYgKE5vcm1hbGl6ZXIucXVpY2tDaGVjayhzb3VyY2UsIE5vcm1hbGl6ZXIuTkZEKSAKKwkgICAgICAgIAkJCQkJCQkJCQkhPSBOb3JtYWxpemVyLllFUykgeworCSAgICAgICAgICAgIHNvdXJjZSA9IE5vcm1hbGl6ZXIuZGVjb21wb3NlKHNvdXJjZSwgZmFsc2UpOworCSAgICAgICAgfQorCQorCSAgICAgICAgaWYgKE5vcm1hbGl6ZXIucXVpY2tDaGVjayh0YXJnZXQsIE5vcm1hbGl6ZXIuTkZEKSAKKwkgICAgICAgIAkJCQkJCQkJCQkJIT0gTm9ybWFsaXplci5ZRVMpIHsKKwkgICAgICAgICAgICB0YXJnZXQgPSBOb3JtYWxpemVyLmRlY29tcG9zZSh0YXJnZXQsIGZhbHNlKTsKKwkgICAgICAgIH0KKwkgICAgICAgIG9mZnNldCA9IDA7CisJICAgIH0KKwkKKwkgICAgcmV0dXJuIGRvU3RyaW5nQ29tcGFyZShzb3VyY2UsIHRhcmdldCwgb2Zmc2V0KTsKKwl9CisJCisJLyoqCisJICogQ29tcGFyZXMgc3RyaW5nIGZvciB0aGVpciBjb2RlcG9pbnQgb3JkZXIuCisJICogVGhpcyBjb21wYXJpc29uIGhhbmRsZXMgc3Vycm9nYXRlIGNoYXJhY3RlcnMgYW5kIHBsYWNlIHRoZW0gYWZ0ZXIgdGhlIAorCSAqIGFsbCBub24gc3Vycm9nYXRlIGNoYXJhY3RlcnMuCisJICogQHBhcmFtIHNvdXJjZSB0ZXh0CisJICogQHBhcmFtIHRhcmdldCB0ZXh0CisJICogQHBhcmFtIG9mZnNldCBzdGFydCBvZmZzZXQgZm9yIGNvbXBhcmlzb24KKwkgKiBAcmV0dXJuIDEgaWYgc291cmNlIGlzIGdyZWF0ZXIgdGhhbiB0YXJnZXQsIC0xIGxlc3MgdGhhbiBhbmQgMCBpZiBlcXVhbHMKKwkgKi8KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgZG9TdHJpbmdDb21wYXJlKFN0cmluZyBzb3VyY2UsIAorCQkJCQkJCQkJCQkgU3RyaW5nIHRhcmdldCwKKwkJCQkJCQkJCQkJIGludCBvZmZzZXQpIAorCXsKKyAgICAJLy8gY29tcGFyZSBpZGVudGljYWwgcHJlZml4ZXMgLSB0aGV5IGRvIG5vdCBuZWVkIHRvIGJlIGZpeGVkIHVwCisgICAgCWNoYXIgc2NoYXIgPSAwOworICAgIAljaGFyIHRjaGFyID0gMDsKKyAgICAJaW50IHNsZW5ndGggPSBzb3VyY2UubGVuZ3RoKCk7CisgICAgCWludCB0bGVuZ3RoID0gdGFyZ2V0Lmxlbmd0aCgpOworICAgIAlpbnQgbWlubGVuZ3RoID0gTWF0aC5taW4oc2xlbmd0aCwgdGxlbmd0aCk7CisgICAgCXdoaWxlIChvZmZzZXQgPCBtaW5sZW5ndGgpIHsKKyAgICAgICAgCXNjaGFyID0gc291cmNlLmNoYXJBdChvZmZzZXQpOworICAgICAgICAJdGNoYXIgPSB0YXJnZXQuY2hhckF0KG9mZnNldCArKyk7CisgICAgICAgIAlpZiAoc2NoYXIgIT0gdGNoYXIpIHsKKyAgICAgICAgICAgIAlicmVhazsKKyAgICAgICAgCX0KKyAgICAJfQorICAgIAkKKyAgICAJaWYgKHNjaGFyID09IHRjaGFyICYmIG9mZnNldCA9PSBtaW5sZW5ndGgpIHsKKyAgICAJCWlmIChzbGVuZ3RoID4gbWlubGVuZ3RoKSB7CisgICAgCQkJcmV0dXJuIDE7CisgICAgCQl9CisgICAgCQlpZiAodGxlbmd0aCA+IG1pbmxlbmd0aCkgeworICAgIAkJCXJldHVybiAtMTsKKyAgICAJCX0KKyAgICAJCXJldHVybiAwOworICAgIAl9CisKKyAgIAkJLy8gIGlmIGJvdGggdmFsdWVzIGFyZSBpbiBvciBhYm92ZSB0aGUgc3Vycm9nYXRlIHJhbmdlLCBGaXggdGhlbSB1cC4KKyAgIAkJaWYgKHNjaGFyID49IFVURjE2LkxFQURfU1VSUk9HQVRFX01JTl9WQUxVRSAKKyAgIAkJCSYmIHRjaGFyID49IFVURjE2LkxFQURfU1VSUk9HQVRFX01JTl9WQUxVRSkgeworICAgICAgICAJc2NoYXIgPSBmaXh1cFVURjE2KHNjaGFyKTsKKyAgICAgICAgCXRjaGFyID0gZml4dXBVVEYxNih0Y2hhcik7CisgICAgCX0KKworICAgIAkvLyBub3cgYzEgYW5kIGMyIGFyZSBpbiBVVEYtMzItY29tcGF0aWJsZSBvcmRlcgorICAgIAlyZXR1cm4gKHNjaGFyIDwgdGNoYXIpID8gLTEgOiAxOyAvLyBzY2hhciBhbmQgdGNoYXIgaGFzIHRvIGJlIGRpZmZlcmVudAorCX0KKwkKKwkvKiogCisJICogUm90YXRlIHN1cnJvZ2F0ZXMgdG8gdGhlIHRvcCB0byBnZXQgY29kZSBwb2ludCBvcmRlcgorCSAqLworCXByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgZml4dXBVVEYxNihjaGFyIGNoKSAKKwl7ICAgICAgICAgICAgICAgICAgCisgICAgCWlmIChjaCA+PSAweGUwMDApIHsgICAgICAgICAgICAgICAgIAorICAgICAgICAJY2ggLT0gMHg4MDA7ICAgICAgICAgICAgICAgICAgICAKKyAgICAJfSAKKyAgICAJZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgCWNoICs9IDB4MjAwMDsgICAgICAgICAgICAgICAgIAorICAgIAl9ICAgICAKKyAgICAJcmV0dXJuIGNoOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJfQorCQorCS8qKgorCSAqIENoZWNrcyB0aGF0IHRoZSBzb3VyY2UgYWZ0ZXIgb2Zmc2V0IGlzIGlnbm9yYWJsZQorCSAqIEBwYXJhbSBzb3VyY2UgdGV4dCBzdHJpbmcgdG8gY2hlY2sKKwkgKiBAcGFyYW0gb2Zmc2V0IAorCSAqIEByZXR1cm4gdHJ1ZSBpZiBzb3VyY2UgYWZ0ZXIgb2Zmc2V0IGlzIGlnbm9yYWJsZS4gZmFsc2Ugb3RoZXJ3aXNlCisJICovCisJcHJpdmF0ZSBmaW5hbCBib29sZWFuIGNoZWNrSWdub3JhYmxlKFN0cmluZyBzb3VyY2UsIGludCBvZmZzZXQpCisJCQkJCQkJCQkJCQkJCisJeworICAgICAgICBtX3NyY1V0aWxJdGVyXy5zZXRUZXh0KHNvdXJjZSk7CisgICAgICAgIG1fc3JjVXRpbENvbEVJdGVyXy5zZXRUZXh0KG1fc3JjVXRpbEl0ZXJfLCBvZmZzZXQpOworCSAgICBpbnQgY2UgPSBtX3NyY1V0aWxDb2xFSXRlcl8ubmV4dCgpOworCSAgICB3aGlsZSAoY2UgIT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUikgeworCSAgICAJaWYgKGNlICE9IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5JR05PUkFCTEUpIHsKKwkgICAgCQlyZXR1cm4gZmFsc2U7CisJICAgIAl9CisJICAgIAljZSA9IG1fc3JjVXRpbENvbEVJdGVyXy5uZXh0KCk7CisJICAgIH0KKwkgICAgcmV0dXJuIHRydWU7IAorCX0KKwkKKwkvKioKKwkgKiBSZXNldHMgdGhlIGludGVybmFsIGNhc2UgZGF0YSBtZW1iZXJzIGFuZCBjb21wcmVzc2lvbiB2YWx1ZXMuCisJICovCisJcHJpdmF0ZSB2b2lkIHVwZGF0ZUludGVybmFsU3RhdGUoKSAKKwl7CisgICAgICAJaWYgKG1fY2FzZUZpcnN0XyA9PSBBdHRyaWJ1dGVWYWx1ZS5VUFBFUl9GSVJTVF8pIHsKKyAgICAgICAgCW1fY2FzZVN3aXRjaF8gPSBDQVNFX1NXSVRDSF87CisgICAgICAJfSAKKyAgICAgIAllbHNlIHsKKyAgICAgICAgCW1fY2FzZVN3aXRjaF8gPSBOT19DQVNFX1NXSVRDSF87CisgICAgICAJfQorCisgICAgICAJaWYgKG1faXNDYXNlTGV2ZWxfIHx8IG1fY2FzZUZpcnN0XyA9PSBBdHRyaWJ1dGVWYWx1ZS5PRkZfKSB7CisgICAgICAgIAltX21hc2szXyA9IENFX1JFTU9WRV9DQVNFXzsKKyAgICAgICAgCW1fY29tbW9uM18gPSBDT01NT05fTk9STUFMXzNfOworICAgICAgICAJbV9hZGRpdGlvbjNfID0gRkxBR19CSVRfTUFTS19DQVNFX1NXSVRDSF9PRkZfOworICAgICAgICAJbV90b3AzXyA9IENPTU1PTl9UT1BfQ0FTRV9TV0lUQ0hfT0ZGXzNfOworICAgICAgICAJbV9ib3R0b20zXyA9IENPTU1PTl9CT1RUT01fM187CisgICAgICAJfSAKKyAgICAgIAllbHNlIHsKKyAgICAgICAgCW1fbWFzazNfID0gQ0VfS0VFUF9DQVNFXzsKKyAgICAgICAgCW1fYWRkaXRpb24zXyA9IEZMQUdfQklUX01BU0tfQ0FTRV9TV0lUQ0hfT05fOworICAgICAgICAJaWYgKG1fY2FzZUZpcnN0XyA9PSBBdHRyaWJ1dGVWYWx1ZS5VUFBFUl9GSVJTVF8pIHsKKyAgICAgICAgICAJCW1fY29tbW9uM18gPSBDT01NT05fVVBQRVJfRklSU1RfM187CisgICAgICAgICAgCQltX3RvcDNfID0gQ09NTU9OX1RPUF9DQVNFX1NXSVRDSF9VUFBFUl8zXzsKKyAgICAgICAgICAJCW1fYm90dG9tM18gPSBDT01NT05fQk9UVE9NX0NBU0VfU1dJVENIX1VQUEVSXzNfOworICAgICAgICAJfSBlbHNlIHsKKyAgICAgICAgICAJCW1fY29tbW9uM18gPSBDT01NT05fTk9STUFMXzNfOworICAgICAgICAgIAkJbV90b3AzXyA9IENPTU1PTl9UT1BfQ0FTRV9TV0lUQ0hfTE9XRVJfM187CisgICAgICAgICAgCQltX2JvdHRvbTNfID0gQ09NTU9OX0JPVFRPTV9DQVNFX1NXSVRDSF9MT1dFUl8zXzsKKyAgICAgICAgCX0KKyAgICAgIAl9CisKKyAgICAgIAkvLyBTZXQgdGhlIGNvbXByZXNzaW9uIHZhbHVlcworICAgICAgCWludCB0b3RhbDMgPSBtX3RvcDNfIC0gQ09NTU9OX0JPVFRPTV8zXyAtIDE7CisgICAgICAJLy8gd2UgbXVsdGlscGx5IGRvdWJsZSB3aXRoIGludCwgYnV0IG5lZWQgb25seSBpbnQKKyAgICAgIAltX3RvcENvdW50M18gPSAoaW50KShQUk9QT1JUSU9OXzNfICogdG90YWwzKTsgCisgICAgICAJbV9ib3R0b21Db3VudDNfID0gdG90YWwzIC0gbV90b3BDb3VudDNfOworCisgICAgICAJaWYgKCFtX2lzQ2FzZUxldmVsXyAmJiBnZXRTdHJlbmd0aCgpID09IEF0dHJpYnV0ZVZhbHVlLlRFUlRJQVJZXyAKKyAgICAgICAgICAJJiYgIW1faXNGcmVuY2hDb2xsYXRpb25fICYmICFtX2lzQWx0ZXJuYXRlSGFuZGxpbmdTaGlmdGVkXykgeworICAgICAgICAJbV9pc1NpbXBsZTNfID0gdHJ1ZTsKKyAgICAgIAl9IAorICAgICAgCWVsc2UgeworICAgICAgICAJbV9pc1NpbXBsZTNfID0gZmFsc2U7CisgICAgICAJfQorICAgICAgICBpZighbV9pc0Nhc2VMZXZlbF8gJiYgZ2V0U3RyZW5ndGgoKSA8PSBBdHRyaWJ1dGVWYWx1ZS5URVJUSUFSWV8gCisgICAgICAgICAgJiYgIW1faXNBbHRlcm5hdGVIYW5kbGluZ1NoaWZ0ZWRfICYmICFsYXRpbk9uZUZhaWxlZF8pIHsKKyAgICAgICAgICBpZihsYXRpbk9uZUNFc18gPT0gbnVsbCB8fCBsYXRpbk9uZVJlZ2VuVGFibGVfKSB7CisgICAgICAgICAgICBpZihzZXRVcExhdGluT25lKCkpIHsgLy8gaWYgd2Ugc3VjY2VlZCBpbiBidWlsZGluZyBsYXRpbjEgdGFibGUsIHdlJ2xsIHVzZSBpdAorICAgICAgICAgICAgICBsYXRpbk9uZVVzZV8gPSB0cnVlOyAKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIGxhdGluT25lVXNlXyA9IGZhbHNlOworICAgICAgICAgICAgICBsYXRpbk9uZUZhaWxlZF8gPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbGF0aW5PbmVSZWdlblRhYmxlXyA9IGZhbHNlOworICAgICAgICAgIH0gZWxzZSB7IC8vIGxhdGluMVRhYmxlIGV4aXN0cyBhbmQgaXQgZG9lc24ndCBuZWVkIHRvIGJlIHJlZ2VuZXJhdGVkLCBqdXN0IHVzZSBpdAorICAgICAgICAgICAgbGF0aW5PbmVVc2VfID0gdHJ1ZTsKKyAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgbGF0aW5PbmVVc2VfID0gZmFsc2U7CisgICAgICAgIH0gICAgIAorICAgICAgICAKKwl9CisJCisJLyoqCisgICAgICogSW5pdGlhbGl6ZXMgdGhlIFJ1bGVCYXNlZENvbGxhdG9yCisgICAgICovCisgICAgcHJpdmF0ZSBmaW5hbCB2b2lkIGluaXQoKQorICAgIHsKKyAgICAJZm9yIChtX21pblVuc2FmZV8gPSAwOyBtX21pblVuc2FmZV8gPCBERUZBVUxUX01JTl9IRVVSSVNUSUNfOyAKKyAgICAJICAgICBtX21pblVuc2FmZV8gKyspIHsgIAorICAgIAkJLy8gRmluZCB0aGUgc21hbGxlc3QgdW5zYWZlIGNoYXIuCisgICAgICAgIAlpZiAoaXNVbnNhZmUobV9taW5VbnNhZmVfKSkgeworICAgICAgICAJCWJyZWFrOworICAgICAgICAJfQorICAgIAl9CisgICAgCQorICAgIAlmb3IgKG1fbWluQ29udHJhY3Rpb25FbmRfID0gMDsgCisgICAgCSAgICAgbV9taW5Db250cmFjdGlvbkVuZF8gPCBERUZBVUxUX01JTl9IRVVSSVNUSUNfOyAKKyAgICAJICAgICBtX21pbkNvbnRyYWN0aW9uRW5kXyArKykgeyAgCisgICAgCSAgICAvLyBGaW5kIHRoZSBzbWFsbGVzdCBjb250cmFjdGlvbi1lbmRpbmcgY2hhci4KKyAgICAgICAgCWlmIChpc0NvbnRyYWN0aW9uRW5kKG1fbWluQ29udHJhY3Rpb25FbmRfKSkgeworICAgICAgICAJCWJyZWFrOworICAgICAgICAJfQorICAgIAl9CisgICAgICAgIGxhdGluT25lRmFpbGVkXyA9IHRydWU7CisgICAgCXNldFN0cmVuZ3RoKG1fZGVmYXVsdFN0cmVuZ3RoXyk7CisgICAgCXNldERlY29tcG9zaXRpb24obV9kZWZhdWx0RGVjb21wb3NpdGlvbl8pOworICAgICAgICBtX3ZhcmlhYmxlVG9wVmFsdWVfID0gbV9kZWZhdWx0VmFyaWFibGVUb3BWYWx1ZV87CisgICAgCW1faXNGcmVuY2hDb2xsYXRpb25fID0gbV9kZWZhdWx0SXNGcmVuY2hDb2xsYXRpb25fOworICAgIAltX2lzQWx0ZXJuYXRlSGFuZGxpbmdTaGlmdGVkXyA9IG1fZGVmYXVsdElzQWx0ZXJuYXRlSGFuZGxpbmdTaGlmdGVkXzsKKyAgICAJbV9pc0Nhc2VMZXZlbF8gPSBtX2RlZmF1bHRJc0Nhc2VMZXZlbF87CisgICAgCW1fY2FzZUZpcnN0XyA9IG1fZGVmYXVsdENhc2VGaXJzdF87CisgICAgCW1faXNIaXJhZ2FuYTRfID0gbV9kZWZhdWx0SXNIaXJhZ2FuYTRfOworICAgICAgICBsYXRpbk9uZUZhaWxlZF8gPSBmYWxzZTsKKyAgICAJdXBkYXRlSW50ZXJuYWxTdGF0ZSgpOworICAgIH0KKyAgICAKKyAgICAvKiogCisgICAgICogIEluaXRpYWxpemVzIHV0aWxpdHkgaXRlcmF0b3JzIGFuZCBieXRlIGJ1ZmZlciB1c2VkIGJ5IGNvbXBhcmUKKyAgICAgKi8KKyAgICBwcml2YXRlIGZpbmFsIHZvaWQgaW5pdFV0aWxpdHkoKSB7CisgICAgICAgbV9zcmNVdGlsSXRlcl8gPSBuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IobmV3IFN0cmluZygiIikpOworICAgICAgIG1fc3JjVXRpbENvbEVJdGVyXyA9IG5ldyBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IobV9zcmNVdGlsSXRlcl8sIHRoaXMpOworICAgICAgIG1fdGd0VXRpbEl0ZXJfID0gbmV3IFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yKG5ldyBTdHJpbmcoIiIpKTsKKyAgICAgICBtX3RndFV0aWxDb2xFSXRlcl8gPSBuZXcgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yKG1fdGd0VXRpbEl0ZXJfLCB0aGlzKTsKKyAgICAgICBtX3V0aWxCeXRlczBfID0gbmV3IGJ5dGVbU09SVF9CVUZGRVJfSU5JVF9TSVpFX0NBU0VfXTsgLy8gY2FzZQorICAgICAgIG1fdXRpbEJ5dGVzMV8gPSBuZXcgYnl0ZVtTT1JUX0JVRkZFUl9JTklUX1NJWkVfMV9dOyAvLyBwcmltYXJ5IAorICAgICAgIG1fdXRpbEJ5dGVzMl8gPSBuZXcgYnl0ZVtTT1JUX0JVRkZFUl9JTklUX1NJWkVfMl9dOyAvLyBzZWNvbmRhcnkKKyAgICAgICBtX3V0aWxCeXRlczNfID0gbmV3IGJ5dGVbU09SVF9CVUZGRVJfSU5JVF9TSVpFXzNfXTsgLy8gdGVydGlhcnkgCisgICAgICAgbV91dGlsQnl0ZXM0XyA9IG5ldyBieXRlW1NPUlRfQlVGRkVSX0lOSVRfU0laRV80X107ICAvLyBRdWF0ZXJuYXJ5CisgICAgICAgbV9zcmNVdGlsQ0VCdWZmZXJfID0gbmV3IGludFtDRV9CVUZGRVJfU0laRV9dOworICAgICAgIG1fdGd0VXRpbENFQnVmZmVyXyA9IG5ldyBpbnRbQ0VfQlVGRkVSX1NJWkVfXTsKKyAgICB9CisgICAgCisgICAgCisgICAgCisgICAgLy8gQ29uc3RzIGZvciBMYXRpbi0xIHNwZWNpYWwgcHJvY2Vzc2luZworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBFTkRPRkxBVElOT05FUkFOR0VfID0gMHhGRjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTEFUSU5PTkVUQUJMRUxFTl8gICA9IChFTkRPRkxBVElOT05FUkFOR0VfKzUwKTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQkFJTF9PVVRfQ0VfICAgICAgICA9IDB4RkYwMDAwMDA7CisgICAgCisgICAgIC8qKiAKKyAgICAgKiBHZW5lcmF0ZSBsYXRpbi0xIHRhYmxlcworICAgICAqLworICAgIAorICAgIHByaXZhdGUgY2xhc3Mgc2hpZnRWYWx1ZXMgeworICAgICAgICBpbnQgcHJpbVNoaWZ0ID0gMjQ7CisgICAgICAgIGludCBzZWNTaGlmdCA9IDI0OworICAgICAgICBpbnQgdGVyU2hpZnQgPSAyNDsKKyAgICB9OworICAgIAorICAgIHByaXZhdGUgZmluYWwgdm9pZCAKKyAgICBhZGRMYXRpbk9uZUVudHJ5KGNoYXIgY2gsIGludCBDRSwgc2hpZnRWYWx1ZXMgc2gpIHsKKyAgICAgIGludCBwcmltYXJ5MSA9IDAsIHByaW1hcnkyID0gMCwgc2Vjb25kYXJ5ID0gMCwgdGVydGlhcnkgPSAwOworICAgICAgYm9vbGVhbiByZXZlcnNlU2Vjb25kYXJ5ID0gZmFsc2U7CisgICAgICBpZighaXNDb250aW51YXRpb24oQ0UpKSB7CisgICAgICAgIHRlcnRpYXJ5ID0gKChDRSAmIG1fbWFzazNfKSk7CisgICAgICAgIHRlcnRpYXJ5IF49IG1fY2FzZVN3aXRjaF87CisgICAgICAgIHJldmVyc2VTZWNvbmRhcnkgPSB0cnVlOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdGVydGlhcnkgPSAoYnl0ZSkoKENFICYgQ0VfUkVNT1ZFX0NPTlRJTlVBVElPTl9NQVNLXykpOworICAgICAgICB0ZXJ0aWFyeSAmPSBDRV9SRU1PVkVfQ0FTRV87CisgICAgICAgIHJldmVyc2VTZWNvbmRhcnkgPSBmYWxzZTsKKyAgICAgIH0KKyAgICAKKyAgICAgIHNlY29uZGFyeSA9ICgoQ0UgPj4+PSA4KSAmIExBU1RfQllURV9NQVNLXyk7CisgICAgICBwcmltYXJ5MiA9ICAoKENFID4+Pj0gOCkgJiBMQVNUX0JZVEVfTUFTS18pOworICAgICAgcHJpbWFyeTEgPSAgKENFID4+PiA4KTsKKyAgICAKKyAgICAgIGlmKHByaW1hcnkxICE9IDApIHsKKyAgICAgICAgbGF0aW5PbmVDRXNfW2NoXSB8PSAocHJpbWFyeTEgPDwgc2gucHJpbVNoaWZ0KTsKKyAgICAgICAgc2gucHJpbVNoaWZ0IC09IDg7CisgICAgICB9CisgICAgICBpZihwcmltYXJ5MiAhPSAwKSB7CisgICAgICAgIGlmKHNoLnByaW1TaGlmdCA8IDApIHsKKyAgICAgICAgICBsYXRpbk9uZUNFc19bY2hdID0gQkFJTF9PVVRfQ0VfOworICAgICAgICAgIGxhdGluT25lQ0VzX1tsYXRpbk9uZVRhYmxlTGVuXytjaF0gPSBCQUlMX09VVF9DRV87CisgICAgICAgICAgbGF0aW5PbmVDRXNfWzIqbGF0aW5PbmVUYWJsZUxlbl8rY2hdID0gQkFJTF9PVVRfQ0VfOworICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBsYXRpbk9uZUNFc19bY2hdIHw9IChwcmltYXJ5MiA8PCBzaC5wcmltU2hpZnQpOworICAgICAgICBzaC5wcmltU2hpZnQgLT0gODsKKyAgICAgIH0KKyAgICAgIGlmKHNlY29uZGFyeSAhPSAwKSB7CisgICAgICAgIGlmKHJldmVyc2VTZWNvbmRhcnkgJiYgbV9pc0ZyZW5jaENvbGxhdGlvbl8pIHsgLy8gcmV2ZXJzZSBzZWNvbmRhcnkKKyAgICAgICAgICBsYXRpbk9uZUNFc19bbGF0aW5PbmVUYWJsZUxlbl8rY2hdID4+Pj0gODsgLy8gbWFrZSBzcGFjZSBmb3Igc2Vjb25kYXJ5CisgICAgICAgICAgbGF0aW5PbmVDRXNfW2xhdGluT25lVGFibGVMZW5fK2NoXSB8PSAoc2Vjb25kYXJ5IDw8IDI0KTsKKyAgICAgICAgfSBlbHNlIHsgLy8gbm9ybWFsIGNhc2UgCisgICAgICAgICAgbGF0aW5PbmVDRXNfW2xhdGluT25lVGFibGVMZW5fK2NoXSB8PSAoc2Vjb25kYXJ5IDw8IHNoLnNlY1NoaWZ0KTsKKyAgICAgICAgfQorICAgICAgICBzaC5zZWNTaGlmdCAtPSA4OworICAgICAgfQorICAgICAgaWYodGVydGlhcnkgIT0gMCkgeworICAgICAgICBsYXRpbk9uZUNFc19bMipsYXRpbk9uZVRhYmxlTGVuXytjaF0gfD0gKHRlcnRpYXJ5IDw8IHNoLnRlclNoaWZ0KTsKKyAgICAgICAgc2gudGVyU2hpZnQgLT0gODsKKyAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBmaW5hbCB2b2lkCisgICAgcmVzaXplTGF0aW5PbmVUYWJsZShpbnQgbmV3U2l6ZSkgeworICAgICAgICBpbnQgbmV3VGFibGVbXSA9IG5ldyBpbnRbMypuZXdTaXplXTsKKyAgICAgICAgaW50IHNpemVUb0NvcHkgPSAoKG5ld1NpemU8bGF0aW5PbmVUYWJsZUxlbl8pP25ld1NpemU6bGF0aW5PbmVUYWJsZUxlbl8pOworICAgICAgICAvL3VwcnZfbWVtc2V0KG5ld1RhYmxlLCAwLCBuZXdTaXplKnNpemVvZih1aW50MzJfdCkqMyk7IC8vIGF1dG9tYXRpY2FsbHkgY2xlYXJlZC4KKyAgICAgICAgU3lzdGVtLmFycmF5Y29weShsYXRpbk9uZUNFc18sIDAsIG5ld1RhYmxlLCAwLCBzaXplVG9Db3B5KTsKKyAgICAgICAgU3lzdGVtLmFycmF5Y29weShsYXRpbk9uZUNFc18sIGxhdGluT25lVGFibGVMZW5fLCBuZXdUYWJsZSwgbmV3U2l6ZSwgc2l6ZVRvQ29weSk7CisgICAgICAgIFN5c3RlbS5hcnJheWNvcHkobGF0aW5PbmVDRXNfLCAyKmxhdGluT25lVGFibGVMZW5fLCBuZXdUYWJsZSwgMipuZXdTaXplLCBzaXplVG9Db3B5KTsKKyAgICAgICAgbGF0aW5PbmVUYWJsZUxlbl8gPSBuZXdTaXplOworICAgICAgICBsYXRpbk9uZUNFc18gPSBuZXdUYWJsZTsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIHNldFVwTGF0aW5PbmUoKSB7CisgICAgICBpZihsYXRpbk9uZUNFc18gPT0gbnVsbCkgeworICAgICAgICBsYXRpbk9uZUNFc18gPSBuZXcgaW50WzMqTEFUSU5PTkVUQUJMRUxFTl9dOyAKKyAgICAgICAgbGF0aW5PbmVUYWJsZUxlbl8gPSBMQVRJTk9ORVRBQkxFTEVOXzsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIEFycmF5cy5maWxsKGxhdGluT25lQ0VzXywgMCk7CisgICAgICB9CisgICAgICBpZihtX0NvbnRJbmZvXyA9PSBudWxsKSB7CisgICAgICAgIG1fQ29udEluZm9fID0gbmV3IENvbnRyYWN0aW9uSW5mbygpOworICAgICAgfQorICAgICAgY2hhciBjaCA9IDA7CisgICAgICAvL1N0cmluZ0J1ZmZlciBzQ2ggPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAvL0NvbGxhdGlvbkVsZW1lbnRJdGVyYXRvciBpdCA9IGdldENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvcihzQ2gudG9TdHJpbmcoKSk7CisgICAgICBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IgaXQgPSBnZXRDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IoIiIpOworICAgIAorICAgICAgc2hpZnRWYWx1ZXMgcyA9IG5ldyBzaGlmdFZhbHVlcygpOworICAgICAgaW50IENFID0gMDsKKyAgICAgIGNoYXIgY29udHJhY3Rpb25PZmZzZXQgPSBFTkRPRkxBVElOT05FUkFOR0VfKzE7CisgICAgCisgICAgICBmb3IoY2ggPSAwOyBjaCA8PSBFTkRPRkxBVElOT05FUkFOR0VfOyBjaCsrKSB7CisgICAgICAgIHMucHJpbVNoaWZ0ID0gMjQ7IHMuc2VjU2hpZnQgPSAyNDsgcy50ZXJTaGlmdCA9IDI0OworICAgICAgICBpZihjaCA8IDB4MTAwKSB7CisgICAgICAgICAgQ0UgPSBtX3RyaWVfLmdldExhdGluMUxpbmVhclZhbHVlKGNoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBDRSA9IG1fdHJpZV8uZ2V0TGVhZFZhbHVlKGNoKTsKKyAgICAgICAgICBpZihDRSA9PSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuQ0VfTk9UX0ZPVU5EXykgeworICAgICAgICAgICAgQ0UgPSBVQ0FfLm1fdHJpZV8uZ2V0TGVhZFZhbHVlKGNoKTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYoIWlzU3BlY2lhbChDRSkpIHsgCisgICAgICAgICAgYWRkTGF0aW5PbmVFbnRyeShjaCwgQ0UsIHMpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHN3aXRjaCAoUnVsZUJhc2VkQ29sbGF0b3IuZ2V0VGFnKENFKSkgeworICAgICAgICAgIGNhc2UgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLkNFX0VYUEFOU0lPTl9UQUdfOgorICAgICAgICAgICAgLy9zQ2guZGVsZXRlKDAsIHNDaC5sZW5ndGgoKSk7CisgICAgICAgICAgICAvL3NDaC5hcHBlbmQoY2gpOworICAgICAgICAgICAgLy9pdC5zZXRUZXh0KHNDaC50b1N0cmluZygpKTsKKyAgICAgICAgICAgIGl0LnNldFRleHQoVUNoYXJhY3Rlci50b1N0cmluZyhjaCkpOworICAgICAgICAgICAgd2hpbGUoKENFID0gaXQubmV4dCgpKSAhPSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuTlVMTE9SREVSKSB7CisgICAgICAgICAgICAgIGlmKHMucHJpbVNoaWZ0IDwgMCB8fCBzLnNlY1NoaWZ0IDwgMCB8fCBzLnRlclNoaWZ0IDwgMCkgeworICAgICAgICAgICAgICAgIGxhdGluT25lQ0VzX1tjaF0gPSBCQUlMX09VVF9DRV87CisgICAgICAgICAgICAgICAgbGF0aW5PbmVDRXNfW2xhdGluT25lVGFibGVMZW5fK2NoXSA9IEJBSUxfT1VUX0NFXzsKKyAgICAgICAgICAgICAgICBsYXRpbk9uZUNFc19bMipsYXRpbk9uZVRhYmxlTGVuXytjaF0gPSBCQUlMX09VVF9DRV87CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgYWRkTGF0aW5PbmVFbnRyeShjaCwgQ0UsIHMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuQ0VfQ09OVFJBQ1RJT05fVEFHXzoKKyAgICAgICAgICAgIC8vIGhlcmUgaXMgdGhlIHRyaWNrCisgICAgICAgICAgICAvLyBGMiBpcyBjb250cmFjdGlvbi4gV2UgZG8gc29tZXRoaW5nIHZlcnkgc2ltaWxhciB0byBjb250cmFjdGlvbnMKKyAgICAgICAgICAgIC8vIGJ1dCBoYXZlIHR3byBpbmRpY2VzLCBvbmUgaW4gdGhlIHJlYWwgY29udHJhY3Rpb24gdGFibGUgYW5kIHRoZQorICAgICAgICAgICAgLy8gb3RoZXIgdG8gd2hlcmUgd2Ugc3R1ZmZlZCB0aGluZ3MuIFRoaXMgaG9wZXMgdGhhdCB3ZSBkb24ndCBoYXZlCisgICAgICAgICAgICAvLyBtYW55IGNvbnRyYWN0aW9ucyAodGhpcyBzaG91bGQgd29yayBmb3IgbGF0aW4tMSB0YWJsZXMpLgorICAgICAgICAgICAgeworICAgICAgICAgICAgICBpZigoQ0UgJiAweDAwRkZGMDAwKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICB9CisgICAgCisgICAgICAgICAgICAgIGludCBVQ2hhck9mZnNldCA9IChDRSAmIDB4RkZGRkZGKSAtIG1fY29udHJhY3Rpb25PZmZzZXRfOyAvL2dldENvbnRyYWN0aW9uT2Zmc2V0KENFKV0KKyAgICAKKyAgICAgICAgICAgICAgQ0UgfD0gKGNvbnRyYWN0aW9uT2Zmc2V0ICYgMHhGRkYpIDw8IDEyOyAvLyBpbnNlcnQgdGhlIG9mZnNldCBpbiBsYXRpbi0xIHRhYmxlCisgICAgICAgIAorICAgICAgICAgICAgICBsYXRpbk9uZUNFc19bY2hdID0gQ0U7CisgICAgICAgICAgICAgIGxhdGluT25lQ0VzX1tsYXRpbk9uZVRhYmxlTGVuXytjaF0gPSBDRTsKKyAgICAgICAgICAgICAgbGF0aW5PbmVDRXNfWzIqbGF0aW5PbmVUYWJsZUxlbl8rY2hdID0gQ0U7CisgICAgCisgICAgICAgICAgICAgIC8vIFdlJ3JlIGdvaW5nIHRvIGp1bXAgaW50byBjb250cmFjdGlvbiB0YWJsZSwgcGljayB0aGUgZWxlbWVudHMKKyAgICAgICAgICAgICAgLy8gYW5kIHVzZSB0aGVtCisgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgIC8vQ0UgPSAqKGNvbnRyYWN0aW9uQ0VzICsgKFVDaGFyT2Zmc2V0IC0gY29udHJhY3Rpb25JbmRleCkpOworICAgICAgICAgICAgICAgICAgQ0UgPSBtX2NvbnRyYWN0aW9uQ0VfW1VDaGFyT2Zmc2V0XTsKKyAgICAgICAgICAgICAgICAgIGlmKGdldFRhZyhDRSkgPT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLkNFX0VYUEFOU0lPTl9UQUdfKSB7CisgICAgICAgICAgICAgICAgICAgIGludCBpOyAgICAvKiBnZW5lcmFsIGNvdW50ZXIgKi8KKyAgICAgICAgICAgICAgICAgICAgLy91aW50MzJfdCAqQ0VPZmZzZXQgPSAodWludDMyX3QgKilpbWFnZStnZXRFeHBhbnNpb25PZmZzZXQoQ0UpOyAvKiBmaW5kIHRoZSBvZmZzZXQgdG8gZXhwYW5zaW9uIHRhYmxlICovCisgICAgICAgICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKENFICYgMHhGRkZGRjApID4+IDQpIC0gbV9leHBhbnNpb25PZmZzZXRfOyAvL2l0LmdldEV4cGFuc2lvbk9mZnNldCh0aGlzLCBDRSk7CisgICAgICAgICAgICAgICAgICAgIGludCBzaXplID0gQ0UgJiAweEY7IC8vIGdldEV4cGFuc2lvbkNvdW50KENFKTsKKyAgICAgICAgICAgICAgICAgICAgLy9DRSA9ICpDRU9mZnNldCsrOworICAgICAgICAgICAgICAgICAgICBpZihzaXplICE9IDApIHsgLyogaWYgdGhlcmUgYXJlIGxlc3MgdGhhbiAxNiBlbGVtZW50cyBpbiBleHBhbnNpb24sIHdlIGRvbid0IHRlcm1pbmF0ZSAqLworICAgICAgICAgICAgICAgICAgICAgIGZvcihpID0gMDsgaTxzaXplOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKHMucHJpbVNoaWZ0IDwgMCB8fCBzLnNlY1NoaWZ0IDwgMCB8fCBzLnRlclNoaWZ0IDwgMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICBsYXRpbk9uZUNFc19bY29udHJhY3Rpb25PZmZzZXRdID0gQkFJTF9PVVRfQ0VfOworICAgICAgICAgICAgICAgICAgICAgICAgICBsYXRpbk9uZUNFc19bbGF0aW5PbmVUYWJsZUxlbl8rY29udHJhY3Rpb25PZmZzZXRdID0gQkFJTF9PVVRfQ0VfOworICAgICAgICAgICAgICAgICAgICAgICAgICBsYXRpbk9uZUNFc19bMipsYXRpbk9uZVRhYmxlTGVuXytjb250cmFjdGlvbk9mZnNldF0gPSBCQUlMX09VVF9DRV87CisgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYWRkTGF0aW5PbmVFbnRyeShjb250cmFjdGlvbk9mZnNldCwgbV9leHBhbnNpb25fW29mZnNldCtpXSwgcyk7CisgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeyAvKiBlbHNlLCB3ZSBkbyAqLworICAgICAgICAgICAgICAgICAgICAgIHdoaWxlKG1fZXhwYW5zaW9uX1tvZmZzZXRdICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKHMucHJpbVNoaWZ0IDwgMCB8fCBzLnNlY1NoaWZ0IDwgMCB8fCBzLnRlclNoaWZ0IDwgMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICBsYXRpbk9uZUNFc19bY29udHJhY3Rpb25PZmZzZXRdID0gQkFJTF9PVVRfQ0VfOworICAgICAgICAgICAgICAgICAgICAgICAgICBsYXRpbk9uZUNFc19bbGF0aW5PbmVUYWJsZUxlbl8rY29udHJhY3Rpb25PZmZzZXRdID0gQkFJTF9PVVRfQ0VfOworICAgICAgICAgICAgICAgICAgICAgICAgICBsYXRpbk9uZUNFc19bMipsYXRpbk9uZVRhYmxlTGVuXytjb250cmFjdGlvbk9mZnNldF0gPSBCQUlMX09VVF9DRV87CisgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYWRkTGF0aW5PbmVFbnRyeShjb250cmFjdGlvbk9mZnNldCwgbV9leHBhbnNpb25fW29mZnNldCsrXSwgcyk7CisgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGNvbnRyYWN0aW9uT2Zmc2V0Kys7CisgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYoIWlzU3BlY2lhbChDRSkpIHsKKyAgICAgICAgICAgICAgICAgICAgYWRkTGF0aW5PbmVFbnRyeShjb250cmFjdGlvbk9mZnNldCsrLCBDRSwgcyk7CisgICAgICAgICAgICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgbGF0aW5PbmVDRXNfW2NvbnRyYWN0aW9uT2Zmc2V0XSA9IEJBSUxfT1VUX0NFXzsKKyAgICAgICAgICAgICAgICAgICAgICBsYXRpbk9uZUNFc19bbGF0aW5PbmVUYWJsZUxlbl8rY29udHJhY3Rpb25PZmZzZXRdID0gQkFJTF9PVVRfQ0VfOworICAgICAgICAgICAgICAgICAgICAgIGxhdGluT25lQ0VzX1syKmxhdGluT25lVGFibGVMZW5fK2NvbnRyYWN0aW9uT2Zmc2V0XSA9IEJBSUxfT1VUX0NFXzsKKyAgICAgICAgICAgICAgICAgICAgICBjb250cmFjdGlvbk9mZnNldCsrOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgVUNoYXJPZmZzZXQrKzsKKyAgICAgICAgICAgICAgICAgIHMucHJpbVNoaWZ0ID0gMjQ7IHMuc2VjU2hpZnQgPSAyNDsgcy50ZXJTaGlmdCA9IDI0OworICAgICAgICAgICAgICAgICAgaWYoY29udHJhY3Rpb25PZmZzZXQgPT0gbGF0aW5PbmVUYWJsZUxlbl8pIHsgLy8gd2UgbmVlZCB0byByZWFsbG9jYXRlCisgICAgICAgICAgICAgICAgICAgcmVzaXplTGF0aW5PbmVUYWJsZSgyKmxhdGluT25lVGFibGVMZW5fKTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfSB3aGlsZShtX2NvbnRyYWN0aW9uSW5kZXhfW1VDaGFyT2Zmc2V0XSAhPSAweEZGRkYpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGxhdGluT25lRmFpbGVkXyA9IHRydWU7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgICAvLyBjb21wYWN0IHRhYmxlCisgICAgICBpZihjb250cmFjdGlvbk9mZnNldCA8IGxhdGluT25lVGFibGVMZW5fKSB7CisgICAgICAgIHJlc2l6ZUxhdGluT25lVGFibGUoY29udHJhY3Rpb25PZmZzZXQpOworICAgICAgfQorICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcHJpdmF0ZSBjbGFzcworICAgIENvbnRyYWN0aW9uSW5mbyB7CisgICAgICAgIGludCBpbmRleDsKKyAgICB9OworICAgIAorICAgIENvbnRyYWN0aW9uSW5mbyBtX0NvbnRJbmZvXzsKKworICAgIHByaXZhdGUgaW50IAorICAgIGdldExhdGluT25lQ29udHJhY3Rpb24oaW50IHN0cmVuZ3RoLCBpbnQgQ0UsIFN0cmluZyBzKSB7CisgICAgLy9pbnQgc3RyZW5ndGgsIGludCBDRSwgU3RyaW5nIHMsIEludGVnZXIgaW5kKSB7CisgICAgICBpbnQgbGVuID0gcy5sZW5ndGgoKTsgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgLy9jb25zdCBVQ2hhciAqVUNoYXJPZmZzZXQgPSAoVUNoYXIgKiljb2xsLT5pbWFnZStnZXRDb250cmFjdE9mZnNldChDRSYweEZGRik7CisgICAgICBpbnQgVUNoYXJPZmZzZXQgPSAoQ0UgJiAweEZGRikgLSBtX2NvbnRyYWN0aW9uT2Zmc2V0XzsKKyAgICAgIGludCBvZmZzZXQgPSAxOworICAgICAgaW50IGxhdGluT25lT2Zmc2V0ID0gKENFICYgMHgwMEZGRjAwMCkgPj4+IDEyOworICAgICAgY2hhciBzY2hhciA9IDAsIHRjaGFyID0gMDsKKyAgICAKKyAgICAgIGZvcig7OykgeworICAgICAgICAvKgorICAgICAgICBpZihsZW4gPT0gLTEpIHsKKyAgICAgICAgICBpZihzWyppbmRleF0gPT0gMCkgeyAvLyBlbmQgb2Ygc3RyaW5nCisgICAgICAgICAgICByZXR1cm4oY29sbC0+bGF0aW5PbmVDRXNbc3RyZW5ndGgqY29sbC0+bGF0aW5PbmVUYWJsZUxlbitsYXRpbk9uZU9mZnNldF0pOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzY2hhciA9IHNbKmluZGV4XTsKKyAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICovCisgICAgICAgICAgaWYobV9Db250SW5mb18uaW5kZXggPT0gbGVuKSB7CisgICAgICAgICAgICByZXR1cm4obGF0aW5PbmVDRXNfW3N0cmVuZ3RoKmxhdGluT25lVGFibGVMZW5fK2xhdGluT25lT2Zmc2V0XSk7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNjaGFyID0gcy5jaGFyQXQobV9Db250SW5mb18uaW5kZXgpOworICAgICAgICAgIH0KKyAgICAgICAgLy99CisgICAgCisgICAgICAgIHdoaWxlKHNjaGFyID4gKHRjaGFyID0gbV9jb250cmFjdGlvbkluZGV4X1tVQ2hhck9mZnNldCtvZmZzZXRdLyoqKFVDaGFyT2Zmc2V0K29mZnNldCkqLykpIHsgLyogc2luY2UgdGhlIGNvbnRyYWN0aW9uIGNvZGVwb2ludHMgc2hvdWxkIGJlIG9yZGVyZWQsIHdlIHNraXAgYWxsIHRoYXQgYXJlIHNtYWxsZXIgKi8KKyAgICAgICAgICBvZmZzZXQrKzsKKyAgICAgICAgfQorICAgIAorICAgICAgICBpZiAoc2NoYXIgPT0gdGNoYXIpIHsKKyAgICAgICAgICBtX0NvbnRJbmZvXy5pbmRleCsrOworICAgICAgICAgIHJldHVybihsYXRpbk9uZUNFc19bc3RyZW5ndGgqbGF0aW5PbmVUYWJsZUxlbl8rbGF0aW5PbmVPZmZzZXQrb2Zmc2V0XSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgaWYoc2NoYXIgID4gRU5ET0ZMQVRJTk9ORVJBTkdFXyAvKiYgMHhGRjAwKi8pIHsKKyAgICAgICAgICAgIHJldHVybiBCQUlMX09VVF9DRV87CisgICAgICAgICAgfQorICAgICAgICAgIC8vIHNraXAgY29tcGxldGVseSBpZ25vcmFibGVzCisgICAgICAgICAgaW50IGlzWmVyb0NFID0gbV90cmllXy5nZXRMZWFkVmFsdWUoc2NoYXIpOyAvL1VUUklFX0dFVDMyX0ZST01fTEVBRChjb2xsLT5tYXBwaW5nLCBzY2hhcik7CisgICAgICAgICAgaWYoaXNaZXJvQ0UgPT0gMCkgeyAvLyB3ZSBoYXZlIHRvIGlnbm9yZSBjb21wbGV0ZWx5IGlnbm9yYWJsZXMKKyAgICAgICAgICAgIG1fQ29udEluZm9fLmluZGV4Kys7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICB9CisgICAgCisgICAgICAgICAgcmV0dXJuKGxhdGluT25lQ0VzX1tzdHJlbmd0aCpsYXRpbk9uZVRhYmxlTGVuXytsYXRpbk9uZU9mZnNldF0pOworICAgICAgICB9CisgICAgICB9CisgICAgfQorCisgICAgCisgICAgLyoqIAorICAgICAqIFRoaXMgaXMgYSBmYXN0IHN0cmNvbGwsIGdlYXJlZCB0b3dhcmRzIHRleHQgaW4gTGF0aW4tMS4gCisgICAgICogSXQgc3VwcG9ydHMgY29udHJhY3Rpb25zIG9mIHNpemUgdHdvLCBGcmVuY2ggc2Vjb25kYXJpZXMKKyAgICAgKiBhbmQgY2FzZSBzd2l0Y2hpbmcuIFlvdSBjYW4gdXNlIGl0IHdpdGggc3RyZW5ndGhzIHByaW1hcnkKKyAgICAgKiB0byB0ZXJ0aWFyeS4gSXQgZG9lcyBub3Qgc3VwcG9ydCBzaGlmdGVkIGFuZCBjYXNlIGxldmVsLgorICAgICAqIEl0IHJlbGllcyBvbiB0aGUgdGFibGUgYnVpbGQgYnkgc2V0dXBMYXRpbjFUYWJsZS4gSWYgaXQKKyAgICAgKiBkb2Vzbid0IHVuZGVyc3RhbmQgc29tZXRoaW5nLCBpdCB3aWxsIGdvIHRvIHRoZSByZWd1bGFyCisgICAgICogc3RyY29sbC4gCisgICAgICovCisgICAgcHJpdmF0ZSBmaW5hbCBpbnQgCisgICAgY29tcGFyZVVzZUxhdGluMShTdHJpbmcgc291cmNlLCBTdHJpbmcgdGFyZ2V0LCBpbnQgc3RhcnRPZmZzZXQpCisgICAgeworICAgICAgICBpbnQgc0xlbiA9IHNvdXJjZS5sZW5ndGgoKTsKKyAgICAgICAgaW50IHRMZW4gPSB0YXJnZXQubGVuZ3RoKCk7CisgICAgICAgIAorICAgICAgICBpbnQgc3RyZW5ndGggPSBnZXRTdHJlbmd0aCgpOworICAgIAorICAgICAgICBpbnQgc0luZGV4ID0gc3RhcnRPZmZzZXQsIHRJbmRleCA9IHN0YXJ0T2Zmc2V0OworICAgICAgICBjaGFyIHNDaGFyID0gMCwgdENoYXIgPSAwOworICAgICAgICBpbnQgc09yZGVyPTAsIHRPcmRlcj0wOworICAgIAorICAgICAgICBib29sZWFuIGVuZE9mU291cmNlID0gZmFsc2U7CisgICAgCisgICAgICAgIC8vdWludDMyX3QgKmVsZW1lbnRzID0gY29sbC0+bGF0aW5PbmVDRXM7CisgICAgCisgICAgICAgIGJvb2xlYW4gaGF2ZUNvbnRyYWN0aW9ucyA9IGZhbHNlOyAvLyBpZiB3ZSBoYXZlIGNvbnRyYWN0aW9ucyBpbiBvdXIgc3RyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgY2Fubm90IGRvIEZyZW5jaCBzZWNvbmRhcnkKKyAgICAKKyAgICAgICAgaW50IG9mZnNldCA9IGxhdGluT25lVGFibGVMZW5fOworICAgICAgICAKKyAgICAgICAgLy8gRG8gdGhlIHByaW1hcnkgbGV2ZWwKKyAgICBwcmltTG9vcDoKKyAgICAgICAgZm9yKDs7KSB7CisgICAgICAgICAgd2hpbGUoc09yZGVyPT0wKSB7IC8vIHRoaXMgbG9vcCBza2lwcyBwcmltYXJ5IGlnbm9yYWJsZXMKKyAgICAgICAgICAgIC8vIHNPcmRlcj1nZXROZXh0bGF0aW5PbmVDRShzb3VyY2UpOworICAgICAgICAgICAgICBpZihzSW5kZXg9PXNMZW4pIHsKKyAgICAgICAgICAgICAgICBlbmRPZlNvdXJjZSA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgc0NoYXI9c291cmNlLmNoYXJBdChzSW5kZXgrKyk7IC8vW3NJbmRleCsrXTsgICAgICAgICAgICAgIAorICAgICAgICAgICAgLy99CisgICAgICAgICAgICBpZihzQ2hhciA+IEVORE9GTEFUSU5PTkVSQU5HRV8pIHsgLy8gaWYgd2UgZW5jb3VudGVyIG5vbi1sYXRpbi0xLCB3ZSBiYWlsIG91dCAKKyAgICAgICAgICAgICAgLy9mcHJpbnRmKHN0ZGVyciwgIlIiKTsKKyAgICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVSZWd1bGFyKHNvdXJjZSwgdGFyZ2V0LCBzdGFydE9mZnNldCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzT3JkZXIgPSBsYXRpbk9uZUNFc19bc0NoYXJdOworICAgICAgICAgICAgaWYoaXNTcGVjaWFsKHNPcmRlcikpIHsgLy8gaWYgd2UgZ290IGEgc3BlY2lhbAorICAgICAgICAgICAgICAvLyBzcGVjaWFscyBjYW4gYmFzaWNhbGx5IGJlIGVpdGhlciBjb250cmFjdGlvbnMgb3IgYmFpbC1vdXQgc2lnbnMuIElmIHdlIGdldCBhbnl0aGluZworICAgICAgICAgICAgICAvLyBlbHNlLCB3ZSdsbCBiYWlsIG91dCBhbnl3YXN5CisgICAgICAgICAgICAgIGlmKGdldFRhZyhzT3JkZXIpID09IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5DRV9DT05UUkFDVElPTl9UQUdfKSB7CisgICAgICAgICAgICAgICAgbV9Db250SW5mb18uaW5kZXggPSBzSW5kZXg7CisgICAgICAgICAgICAgICAgc09yZGVyID0gZ2V0TGF0aW5PbmVDb250cmFjdGlvbigwLCBzT3JkZXIsIHNvdXJjZSk7CisgICAgICAgICAgICAgICAgc0luZGV4ID0gbV9Db250SW5mb18uaW5kZXg7CisgICAgICAgICAgICAgICAgaGF2ZUNvbnRyYWN0aW9ucyA9IHRydWU7IC8vIGlmIHRoZXJlIGFyZSBjb250cmFjdGlvbnMsIHdlIGNhbm5vdCBkbyBGcmVuY2ggc2Vjb25kYXJ5CisgICAgICAgICAgICAgICAgLy8gSG93ZXZlciwgaWYgdGhlcmUgYXJlIGNvbnRyYWN0aW9ucyBpbiB0aGUgdGFibGUsIGJ1dCB3ZSBhbHdheXMgdXNlIGp1c3Qgb25lIGNoYXIsCisgICAgICAgICAgICAgICAgLy8gd2UgbWlnaHQgYmUgYWJsZSB0byBkbyBGcmVuY2guIFRoaXMgc2hvdWxkIGJlIGNoZWNrZWQgb3V0LgorICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGlmKGlzU3BlY2lhbChzT3JkZXIpIC8qPT0gVUNPTF9CQUlMX09VVF9DRSovKSB7CisgICAgICAgICAgICAgICAgLy9mcHJpbnRmKHN0ZGVyciwgIlMiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY29tcGFyZVJlZ3VsYXIoc291cmNlLCB0YXJnZXQsIHN0YXJ0T2Zmc2V0KTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICB3aGlsZSh0T3JkZXI9PTApIHsgIC8vIHRoaXMgbG9vcCBza2lwcyBwcmltYXJ5IGlnbm9yYWJsZXMKKyAgICAgICAgICAgIC8vIHRPcmRlcj1nZXROZXh0bGF0aW5PbmVDRSh0YXJnZXQpOworICAgICAgICAgICAgaWYodEluZGV4PT10TGVuKSB7CisgICAgICAgICAgICAgIGlmKGVuZE9mU291cmNlKSB7CisgICAgICAgICAgICAgICAgYnJlYWsgcHJpbUxvb3A7CisgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRDaGFyPXRhcmdldC5jaGFyQXQodEluZGV4KyspOyAvL1t0SW5kZXgrK107CisgICAgICAgICAgICBpZih0Q2hhciA+IEVORE9GTEFUSU5PTkVSQU5HRV8pIHsgLy8gaWYgd2UgZW5jb3VudGVyIG5vbi1sYXRpbi0xLCB3ZSBiYWlsIG91dCAKKyAgICAgICAgICAgICAgLy9mcHJpbnRmKHN0ZGVyciwgIlIiKTsKKyAgICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVSZWd1bGFyKHNvdXJjZSwgdGFyZ2V0LCBzdGFydE9mZnNldCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0T3JkZXIgPSBsYXRpbk9uZUNFc19bdENoYXJdOworICAgICAgICAgICAgaWYoaXNTcGVjaWFsKHRPcmRlcikpIHsKKyAgICAgICAgICAgICAgLy8gSGFuZGxpbmcgc3BlY2lhbHMsIHNlZSB0aGUgY29tbWVudHMgZm9yIHNvdXJjZQorICAgICAgICAgICAgICBpZihnZXRUYWcodE9yZGVyKSA9PSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuQ0VfQ09OVFJBQ1RJT05fVEFHXykgeworICAgICAgICAgICAgICAgIG1fQ29udEluZm9fLmluZGV4ID0gdEluZGV4OworICAgICAgICAgICAgICAgIHRPcmRlciA9IGdldExhdGluT25lQ29udHJhY3Rpb24oMCwgdE9yZGVyLCB0YXJnZXQpOworICAgICAgICAgICAgICAgIHRJbmRleCA9IG1fQ29udEluZm9fLmluZGV4OworICAgICAgICAgICAgICAgIGhhdmVDb250cmFjdGlvbnMgPSB0cnVlOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGlmKGlzU3BlY2lhbCh0T3JkZXIpLyo9PSBVQ09MX0JBSUxfT1VUX0NFKi8pIHsKKyAgICAgICAgICAgICAgICAvL2ZwcmludGYoc3RkZXJyLCAiUyIpOworICAgICAgICAgICAgICAgIHJldHVybiBjb21wYXJlUmVndWxhcihzb3VyY2UsIHRhcmdldCwgc3RhcnRPZmZzZXQpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGlmKGVuZE9mU291cmNlKSB7IC8vIHNvdXJjZSBpcyBmaW5pc2hlZCwgYnV0IHRhcmdldCBpcyBub3QsIHNheSB0aGUgcmVzdWx0LgorICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgfQorICAgIAorICAgICAgICAgIGlmKHNPcmRlciA9PSB0T3JkZXIpIHsgLy8gaWYgd2UgaGF2ZSBzYW1lIENFcywgd2UgY29udGludWUgdGhlIGxvb3AKKyAgICAgICAgICAgIHNPcmRlciA9IDA7IHRPcmRlciA9IDA7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gY29tcGFyZSBjdXJyZW50IHRvcCBieXRlcworICAgICAgICAgICAgaWYoKChzT3JkZXJedE9yZGVyKSYweEZGMDAwMDAwKSE9MCkgeworICAgICAgICAgICAgICAvLyB0b3AgYnl0ZXMgZGlmZmVyLCByZXR1cm4gZGlmZmVyZW5jZQorICAgICAgICAgICAgICBpZihzT3JkZXIgPj4+IDggPCB0T3JkZXIgPj4+IDgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgLy8gaW5zdGVhZCBvZiByZXR1cm4gKGludDMyX3QpKHNPcmRlcj4+MjQpLShpbnQzMl90KSh0T3JkZXI+PjI0KTsKKyAgICAgICAgICAgICAgLy8gc2luY2Ugd2UgbXVzdCByZXR1cm4gZW51bSB2YWx1ZQorICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgLy8gdG9wIGJ5dGVzIG1hdGNoLCBjb250aW51ZSB3aXRoIGZvbGxvd2luZyBieXRlcworICAgICAgICAgICAgc09yZGVyPDw9ODsKKyAgICAgICAgICAgIHRPcmRlcjw8PTg7CisgICAgICAgICAgfSAKKyAgICAgICAgfQorICAgIAorICAgICAgICAvLyBhZnRlciBwcmltYXJ5IGxvb3AsIHdlIGRlZmluaXRlbHkga25vdyB0aGUgc2l6ZXMgb2Ygc3RyaW5ncywgCisgICAgICAgIC8vIHNvIHdlIHNldCBpdCBhbmQgdXNlIHNpbXBsZXIgbG9vcCBmb3Igc2Vjb25kYXJpZXMgYW5kIHRlcnRpYXJpZXMKKyAgICAgICAgLy9zTGVuID0gc0luZGV4OyB0TGVuID0gdEluZGV4OworICAgICAgICBpZihzdHJlbmd0aCA+PSBTRUNPTkRBUlkpIHsKKyAgICAgICAgICAvLyBhZGp1c3QgdGhlIHRhYmxlIGJlZ2dpbmluZworICAgICAgICAgIC8vbGF0aW5PbmVDRXNfICs9IGNvbGwtPmxhdGluT25lVGFibGVMZW47CisgICAgICAgICAgZW5kT2ZTb3VyY2UgPSBmYWxzZTsgCisgICAgCisgICAgICAgICAgaWYoIW1faXNGcmVuY2hDb2xsYXRpb25fKSB7IC8vIG5vbiBGcmVuY2gKKyAgICAgICAgICAgIC8vIFRoaXMgbG9vcCBpcyBhIHNpbXBsaWZpZWQgY29weSBvZiBwcmltYXJ5IGxvb3AKKyAgICAgICAgICAgIC8vIGF0IHRoaXMgcG9pbnQgd2Uga25vdyB0aGF0IHdob2xlIHN0cmluZ3MgYXJlIGxhdGluLTEsIHNvIHdlIGRvbid0IAorICAgICAgICAgICAgLy8gY2hlY2sgZm9yIHRoYXQuIFdlIGFsc28ga25vdyB0aGF0IHdlIG9ubHkgaGF2ZSBjb250cmFjdGlvbnMgYXMgCisgICAgICAgICAgICAvLyBzcGVjaWFscy4KKyAgICAgICAgICAgIC8vc0luZGV4ID0gMDsgdEluZGV4ID0gMDsKKyAgICAgICAgICAgIHNJbmRleCA9IHN0YXJ0T2Zmc2V0OyB0SW5kZXggPSBzdGFydE9mZnNldDsKKyAgICBzZWNMb29wOgorICAgICAgICAgICAgZm9yKDs7KSB7CisgICAgICAgICAgICAgIHdoaWxlKHNPcmRlcj09MCkgeworICAgICAgICAgICAgICAgIGlmKHNJbmRleD09c0xlbikgeworICAgICAgICAgICAgICAgICAgZW5kT2ZTb3VyY2UgPSB0cnVlOworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHNDaGFyPXNvdXJjZS5jaGFyQXQoc0luZGV4KyspOyAvL1tzSW5kZXgrK107CisgICAgICAgICAgICAgICAgc09yZGVyID0gbGF0aW5PbmVDRXNfW29mZnNldCtzQ2hhcl07CisgICAgICAgICAgICAgICAgaWYoaXNTcGVjaWFsKHNPcmRlcikpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9Db250SW5mb18uaW5kZXggPSBzSW5kZXg7CisgICAgICAgICAgICAgICAgICAgIHNPcmRlciA9IGdldExhdGluT25lQ29udHJhY3Rpb24oMSwgc09yZGVyLCBzb3VyY2UpOworICAgICAgICAgICAgICAgICAgICBzSW5kZXggPSBtX0NvbnRJbmZvXy5pbmRleDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgICAgd2hpbGUodE9yZGVyPT0wKSB7CisgICAgICAgICAgICAgICAgaWYodEluZGV4PT10TGVuKSB7CisgICAgICAgICAgICAgICAgICBpZihlbmRPZlNvdXJjZSkgeworICAgICAgICAgICAgICAgICAgICBicmVhayBzZWNMb29wOworICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRDaGFyPXRhcmdldC5jaGFyQXQodEluZGV4KyspOyAvL1t0SW5kZXgrK107CisgICAgICAgICAgICAgICAgdE9yZGVyID0gbGF0aW5PbmVDRXNfW29mZnNldCt0Q2hhcl07CisgICAgICAgICAgICAgICAgaWYoaXNTcGVjaWFsKHRPcmRlcikpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9Db250SW5mb18uaW5kZXggPSB0SW5kZXg7CisgICAgICAgICAgICAgICAgICAgIHRPcmRlciA9IGdldExhdGluT25lQ29udHJhY3Rpb24oMSwgdE9yZGVyLCB0YXJnZXQpOworICAgICAgICAgICAgICAgICAgICB0SW5kZXggPSBtX0NvbnRJbmZvXy5pbmRleDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgaWYoZW5kT2ZTb3VyY2UpIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgICBpZihzT3JkZXIgPT0gdE9yZGVyKSB7CisgICAgICAgICAgICAgICAgc09yZGVyID0gMDsgdE9yZGVyID0gMDsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBzZWUgcHJpbWFyeSBsb29wIGZvciBjb21tZW50cyBvbiB0aGlzCisgICAgICAgICAgICAgICAgaWYoKChzT3JkZXJedE9yZGVyKSYweEZGMDAwMDAwKSE9MCkgeworICAgICAgICAgICAgICAgICAgaWYoc09yZGVyID4+PiA4IDwgdE9yZGVyID4+PiA4KSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzT3JkZXI8PD04OworICAgICAgICAgICAgICAgIHRPcmRlcjw8PTg7CisgICAgICAgICAgICAgIH0gCisgICAgICAgICAgICB9CisgICAgICAgICAgfSBlbHNlIHsgLy8gRnJlbmNoCisgICAgICAgICAgICBpZihoYXZlQ29udHJhY3Rpb25zKSB7IC8vIGlmIHdlIGhhdmUgY29udHJhY3Rpb25zLCB3ZSBoYXZlIHRvIGJhaWwgb3V0CisgICAgICAgICAgICAgIC8vIHNpbmNlIHdlIGRvbid0IHJlYWxseSBrbm93IGhvdyB0byBoYW5kbGUgdGhlbSBoZXJlCisgICAgICAgICAgICAgIHJldHVybiBjb21wYXJlUmVndWxhcihzb3VyY2UsIHRhcmdldCwgc3RhcnRPZmZzZXQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gRm9yIEZyZW5jaCwgd2UgZ28gYmFja3dhcmRzCisgICAgICAgICAgICBzSW5kZXggPSBzTGVuOyB0SW5kZXggPSB0TGVuOworICAgIHNlY0ZMb29wOgorICAgICAgICAgICAgZm9yKDs7KSB7CisgICAgICAgICAgICAgIHdoaWxlKHNPcmRlcj09MCkgeworICAgICAgICAgICAgICAgIGlmKHNJbmRleD09c3RhcnRPZmZzZXQpIHsKKyAgICAgICAgICAgICAgICAgIGVuZE9mU291cmNlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzQ2hhcj1zb3VyY2UuY2hhckF0KC0tc0luZGV4KTsgLy9bLS1zSW5kZXhdOworICAgICAgICAgICAgICAgIHNPcmRlciA9IGxhdGluT25lQ0VzX1tvZmZzZXQrc0NoYXJdOworICAgICAgICAgICAgICAgIC8vIGRvbid0IGV2ZW4gbG9vayBmb3IgY29udHJhY3Rpb25zCisgICAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgICAgd2hpbGUodE9yZGVyPT0wKSB7CisgICAgICAgICAgICAgICAgaWYodEluZGV4PT1zdGFydE9mZnNldCkgeworICAgICAgICAgICAgICAgICAgaWYoZW5kT2ZTb3VyY2UpIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsgc2VjRkxvb3A7CisgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdENoYXI9dGFyZ2V0LmNoYXJBdCgtLXRJbmRleCk7IC8vWy0tdEluZGV4XTsKKyAgICAgICAgICAgICAgICB0T3JkZXIgPSBsYXRpbk9uZUNFc19bb2Zmc2V0K3RDaGFyXTsKKyAgICAgICAgICAgICAgICAvLyBkb24ndCBldmVuIGxvb2sgZm9yIGNvbnRyYWN0aW9ucworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGlmKGVuZE9mU291cmNlKSB7CisgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgICAgaWYoc09yZGVyID09IHRPcmRlcikgeworICAgICAgICAgICAgICAgIHNPcmRlciA9IDA7IHRPcmRlciA9IDA7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gc2VlIHRoZSBwcmltYXJ5IGxvb3AgZm9yIGNvbW1lbnRzCisgICAgICAgICAgICAgICAgaWYoKChzT3JkZXJedE9yZGVyKSYweEZGMDAwMDAwKSE9MCkgeworICAgICAgICAgICAgICAgICAgaWYoc09yZGVyID4+PiA4IDwgdE9yZGVyID4+PiA4KSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzT3JkZXI8PD04OworICAgICAgICAgICAgICAgIHRPcmRlcjw8PTg7CisgICAgICAgICAgICAgIH0gICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9IAorICAgIAorICAgICAgICBpZihzdHJlbmd0aCA+PSBURVJUSUFSWSkgeworICAgICAgICAgIC8vIHRlcnRpYXJ5IGxvb3AgaXMgdGhlIHNhbWUgYXMgc2Vjb25kYXJ5IChleGNlcHQgbm8gRnJlbmNoKQorICAgICAgICAgIG9mZnNldCArPSBsYXRpbk9uZVRhYmxlTGVuXzsKKyAgICAgICAgICAvL3NJbmRleCA9IDA7IHRJbmRleCA9IDA7CisgICAgICAgICAgc0luZGV4ID0gc3RhcnRPZmZzZXQ7IHRJbmRleCA9IHN0YXJ0T2Zmc2V0OworICAgICAgICAgIGVuZE9mU291cmNlID0gZmFsc2U7CisgICAgICAgICAgZm9yKDs7KSB7CisgICAgICAgICAgICB3aGlsZShzT3JkZXI9PTApIHsKKyAgICAgICAgICAgICAgaWYoc0luZGV4PT1zTGVuKSB7CisgICAgICAgICAgICAgICAgZW5kT2ZTb3VyY2UgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIHNDaGFyPXNvdXJjZS5jaGFyQXQoc0luZGV4KyspOyAvL1tzSW5kZXgrK107CisgICAgICAgICAgICAgIHNPcmRlciA9IGxhdGluT25lQ0VzX1tvZmZzZXQrc0NoYXJdOworICAgICAgICAgICAgICBpZihpc1NwZWNpYWwoc09yZGVyKSkgeworICAgICAgICAgICAgICAgIG1fQ29udEluZm9fLmluZGV4ID0gc0luZGV4OworICAgICAgICAgICAgICAgIHNPcmRlciA9IGdldExhdGluT25lQ29udHJhY3Rpb24oMiwgc09yZGVyLCBzb3VyY2UpOworICAgICAgICAgICAgICAgIHNJbmRleCA9IG1fQ29udEluZm9fLmluZGV4OworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICB3aGlsZSh0T3JkZXI9PTApIHsKKyAgICAgICAgICAgICAgaWYodEluZGV4PT10TGVuKSB7CisgICAgICAgICAgICAgICAgaWYoZW5kT2ZTb3VyY2UpIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiAwOyAvLyBpZiBib3RoIHN0cmluZ3MgYXJlIGF0IHRoZSBlbmQsIHRoZXkgYXJlIGVxdWFsCisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB0Q2hhcj10YXJnZXQuY2hhckF0KHRJbmRleCsrKTsgLy9bdEluZGV4KytdOworICAgICAgICAgICAgICB0T3JkZXIgPSBsYXRpbk9uZUNFc19bb2Zmc2V0K3RDaGFyXTsKKyAgICAgICAgICAgICAgaWYoaXNTcGVjaWFsKHRPcmRlcikpIHsKKyAgICAgICAgICAgICAgICBtX0NvbnRJbmZvXy5pbmRleCA9IHRJbmRleDsKKyAgICAgICAgICAgICAgICB0T3JkZXIgPSBnZXRMYXRpbk9uZUNvbnRyYWN0aW9uKDIsIHRPcmRlciwgdGFyZ2V0KTsKKyAgICAgICAgICAgICAgICB0SW5kZXggPSBtX0NvbnRJbmZvXy5pbmRleDsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYoZW5kT2ZTb3VyY2UpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZihzT3JkZXIgPT0gdE9yZGVyKSB7CisgICAgICAgICAgICAgIHNPcmRlciA9IDA7IHRPcmRlciA9IDA7CisgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgaWYoKChzT3JkZXJedE9yZGVyKSYweGZmMDAwMDAwKSE9MCkgeworICAgICAgICAgICAgICAgIGlmKHNPcmRlciA+Pj4gOCA8IHRPcmRlciA+Pj4gOCkgeworICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgc09yZGVyPDw9ODsKKyAgICAgICAgICAgICAgdE9yZGVyPDw9ODsKKyAgICAgICAgICAgIH0gCisgICAgICAgICAgfQorICAgICAgICB9IAorICAgICAgICByZXR1cm4gMDsKKyAgICB9ICAgIAorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3RleHQvUnVsZUJhc2VkTnVtYmVyRm9ybWF0LmphdmEgYi9zcmMvY29tL2libS9pY3UvdGV4dC9SdWxlQmFzZWROdW1iZXJGb3JtYXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42MThmZDU2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvUnVsZUJhc2VkTnVtYmVyRm9ybWF0LmphdmEKQEAgLTAsMCArMSwxMzMwIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvdGV4dC9SdWxlQmFzZWROdW1iZXJGb3JtYXQuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8xMi8wNSAwMToyMjoyMCAkIAorICogJFJldmlzaW9uOiAxLjExICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LnRleHQ7CisKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLklDVUxvY2FsZURhdGE7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5VQ2hhcmFjdGVyUHJvcGVydHk7CisKK2ltcG9ydCBqYXZhLm1hdGguQmlnSW50ZWdlcjsKK2ltcG9ydCBqYXZhLnRleHQuRmllbGRQb3NpdGlvbjsKK2ltcG9ydCBqYXZhLnRleHQuUGFyc2VQb3NpdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworaW1wb3J0IGphdmEudXRpbC5SZXNvdXJjZUJ1bmRsZTsKK2ltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOworCisvKioKKyAqIDxwPkEgY2xhc3MgdGhhdCBmb3JtYXRzIG51bWJlcnMgYWNjb3JkaW5nIHRvIGEgc2V0IG9mIHJ1bGVzLiBUaGlzIG51bWJlciBmb3JtYXR0ZXIgaXMKKyAqIHR5cGljYWxseSB1c2VkIGZvciBzcGVsbGluZyBvdXQgbnVtZXJpYyB2YWx1ZXMgaW4gd29yZHMgKGUuZy4sIDI1LDM0NzYgYXMKKyAqICZxdW90O3R3ZW50eS1maXZlIHRob3VzYW5kIHRocmVlIGh1bmRyZWQgc2V2ZW50eS1zaXgmcXVvdDsgb3IgJnF1b3Q7dmluZ3QtY2lucSBtaWxsZSB0cm9pcworICogY2VudHMgc29peGFudGUtc2VpemUmcXVvdDsgb3IKKyAqICZxdW90O2Z1bmZ1bmR6d2FuemlndGF1c2VuZGRyZWlodW5kZXJ0c2VjaHN1bmRzaWViemlnJnF1b3Q7KSwgYnV0IGNhbiBhbHNvIGJlIHVzZWQgZm9yCisgKiBvdGhlciBjb21wbGljYXRlZCBmb3JtYXR0aW5nIHRhc2tzLCBzdWNoIGFzIGZvcm1hdHRpbmcgYSBudW1iZXIgb2Ygc2Vjb25kcyBhcyBob3VycywKKyAqIG1pbnV0ZXMgYW5kIHNlY29uZHMgKGUuZy4sIDMsNzMwIGFzICZxdW90OzE6MDI6MTAmcXVvdDspLjwvcD4KKyAqCisgKiA8cD5UaGUgcmVzb3VyY2VzIGNvbnRhaW4gdGhyZWUgcHJlZGVmaW5lZCBmb3JtYXR0ZXJzIGZvciBlYWNoIGxvY2FsZTogc3BlbGxvdXQsIHdoaWNoCisgKiBzcGVsbHMgb3V0IGEgdmFsdWUgaW4gd29yZHMgKDEyMyBpcyAmcXVvdDtvbmUgaHVuZHJlZCB0d2VudHktdGhyZWUmcXVvdDspOyBvcmRpbmFsLCB3aGljaAorICogYXBwZW5kcyBhbiBvcmRpbmFsIHN1ZmZpeCB0byB0aGUgZW5kIG9mIGEgbnVtZXJhbCAoMTIzIGlzICZxdW90OzEyM3JkJnF1b3Q7KTsgYW5kCisgKiBkdXJhdGlvbiwgd2hpY2ggc2hvd3MgYSBkdXJhdGlvbiBpbiBzZWNvbmRzIGFzIGhvdXJzLCBtaW51dGVzLCBhbmQgc2Vjb25kcyAoMTIzIGlzCisgKiAmcXVvdDsyOjAzJnF1b3Q7KS4mbmJzcDsgVGhlIGNsaWVudCBjYW4gYWxzbyBkZWZpbmUgbW9yZSBzcGVjaWFsaXplZCA8dHQ+UnVsZUJhc2VkTnVtYmVyRm9ybWF0PC90dD5zCisgKiBieSBzdXBwbHlpbmcgcHJvZ3JhbW1lci1kZWZpbmVkIHJ1bGUgc2V0cy48L3A+CisgKgorICogPHA+VGhlIGJlaGF2aW9yIG9mIGEgPHR0PlJ1bGVCYXNlZE51bWJlckZvcm1hdDwvdHQ+IGlzIHNwZWNpZmllZCBieSBhIHRleHR1YWwgZGVzY3JpcHRpb24KKyAqIHRoYXQgaXMgZWl0aGVyIHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3IgYXMgYSA8dHQ+U3RyaW5nPC90dD4gb3IgbG9hZGVkIGZyb20gYSByZXNvdXJjZQorICogYnVuZGxlLiBJbiBpdHMgc2ltcGxlc3QgZm9ybSwgdGhlIGRlc2NyaXB0aW9uIGNvbnNpc3RzIG9mIGEgc2VtaWNvbG9uLWRlbGltaXRlZCBsaXN0IG9mIDxlbT5ydWxlcy48L2VtPgorICogRWFjaCBydWxlIGhhcyBhIHN0cmluZyBvZiBvdXRwdXQgdGV4dCBhbmQgYSB2YWx1ZSBvciByYW5nZSBvZiB2YWx1ZXMgaXQgaXMgYXBwbGljYWJsZSB0by4KKyAqIEluIGEgdHlwaWNhbCBzcGVsbG91dCBydWxlIHNldCwgdGhlIGZpcnN0IHR3ZW50eSBydWxlcyBhcmUgdGhlIHdvcmRzIGZvciB0aGUgbnVtYmVycyBmcm9tCisgKiAwIHRvIDE5OjwvcD4KKyAqCisgKiA8cHJlPnplcm87IG9uZTsgdHdvOyB0aHJlZTsgZm91cjsgZml2ZTsgc2l4OyBzZXZlbjsgZWlnaHQ7IG5pbmU7CisgKiB0ZW47IGVsZXZlbjsgdHdlbHZlOyB0aGlydGVlbjsgZm91cnRlZW47IGZpZnRlZW47IHNpeHRlZW47IHNldmVudGVlbjsgZWlnaHRlZW47IG5pbmV0ZWVuOzwvcHJlPgorICoKKyAqIDxwPkZvciBsYXJnZXIgbnVtYmVycywgd2UgY2FuIHVzZSB0aGUgcHJlY2VkaW5nIHNldCBvZiBydWxlcyB0byBmb3JtYXQgdGhlIG9uZXMgcGxhY2UsIGFuZAorICogd2Ugb25seSBoYXZlIHRvIHN1cHBseSB0aGUgd29yZHMgZm9yIHRoZSBtdWx0aXBsZXMgb2YgMTA6PC9wPgorICoKKyAqIDxwcmU+MjA6IHR3ZW50eVstJmd0OyZndDtdOworICogMzA6IHRoaXJ0eXstJmd0OyZndDtdOworICogNDA6IGZvcnR5Wy0mZ3Q7Jmd0O107CisgKiA1MDogZmlmdHlbLSZndDsmZ3Q7XTsKKyAqIDYwOiBzaXh0eVstJmd0OyZndDtdOworICogNzA6IHNldmVudHlbLSZndDsmZ3Q7XTsKKyAqIDgwOiBlaWdodHlbLSZndDsmZ3Q7XTsKKyAqIDkwOiBuaW5ldHlbLSZndDsmZ3Q7XTs8L3ByZT4KKyAqCisgKiA8cD5JbiB0aGVzZSBydWxlcywgdGhlIDxlbT5iYXNlIHZhbHVlPC9lbT4gaXMgc3BlbGxlZCBvdXQgZXhwbGljaXRseSBhbmQgc2V0IG9mZiBmcm9tIHRoZQorICogcnVsZSdzIG91dHB1dCB0ZXh0IHdpdGggYSBjb2xvbi4gVGhlIHJ1bGVzIGFyZSBpbiBhIHNvcnRlZCBsaXN0LCBhbmQgYSBydWxlIGlzIGFwcGxpY2FibGUKKyAqIHRvIGFsbCBudW1iZXJzIGZyb20gaXRzIG93biBiYXNlIHZhbHVlIHRvIG9uZSBsZXNzIHRoYW4gdGhlIG5leHQgcnVsZSdzIGJhc2UgdmFsdWUuIFRoZQorICogJnF1b3Q7Jmd0OyZndDsmcXVvdDsgdG9rZW4gaXMgY2FsbGVkIGEgPGVtPnN1YnN0aXR1dGlvbjwvZW0+IGFuZCB0ZWxscyB0aGUgZm9tYXR0ZXIgdG8KKyAqIGlzb2xhdGUgdGhlIG51bWJlcidzIG9uZXMgZGlnaXQsIGZvcm1hdCBpdCB1c2luZyB0aGlzIHNhbWUgc2V0IG9mIHJ1bGVzLCBhbmQgcGxhY2UgdGhlCisgKiByZXN1bHQgYXQgdGhlIHBvc2l0aW9uIG9mIHRoZSAmcXVvdDsmZ3Q7Jmd0OyZxdW90OyB0b2tlbi4gVGV4dCBpbiBicmFja2V0cyBpcyBvbWl0dGVkIGlmCisgKiB0aGUgbnVtYmVyIGJlaW5nIGZvcm1hdHRlZCBpcyBhbiBldmVuIG11bHRpcGxlIG9mIDEwICh0aGUgaHlwaGVuIGlzIGEgbGl0ZXJhbCBoeXBoZW47IDI0CisgKiBpcyAmcXVvdDt0d2VudHktZm91ciwmcXVvdDsgbm90ICZxdW90O3R3ZW50eSBmb3VyJnF1b3Q7KS48L3A+CisgKgorICogPHA+Rm9yIGV2ZW4gbGFyZ2VyIG51bWJlcnMsIHdlIGNhbiBhY3R1YWxseSBsb29rIHVwIHNldmVyYWwgcGFydHMgb2YgdGhlIG51bWJlciBpbiB0aGUKKyAqIGxpc3Q6PC9wPgorICoKKyAqIDxwcmU+MTAwOiAmbHQ7Jmx0OyBodW5kcmVkWyAmZ3Q7Jmd0O107PC9wcmU+CisgKgorICogPHA+VGhlICZxdW90OyZsdDsmbHQ7JnF1b3Q7IHJlcHJlc2VudHMgYSBuZXcga2luZCBvZiBzdWJzdGl0dXRpb24uIFRoZSAmbHQ7Jmx0OyBpc29sYXRlcworICogdGhlIGh1bmRyZWRzIGRpZ2l0IChhbmQgYW55IGRpZ2l0cyB0byBpdHMgbGVmdCksIGZvcm1hdHMgaXQgdXNpbmcgdGhpcyBzYW1lIHJ1bGUgc2V0LCBhbmQKKyAqIHBsYWNlcyB0aGUgcmVzdWx0IHdoZXJlIHRoZSAmcXVvdDsmbHQ7Jmx0OyZxdW90OyB3YXMuIE5vdGljZSBhbHNvIHRoYXQgdGhlIG1lYW5pbmcgb2YKKyAqICZndDsmZ3Q7IGhhcyBjaGFuZ2VkOiBpdCBub3cgcmVmZXJzIHRvIGJvdGggdGhlIHRlbnMgYW5kIHRoZSBvbmVzIGRpZ2l0cy4gVGhlIG1lYW5pbmcgb2YKKyAqIGJvdGggc3Vic3RpdHV0aW9ucyBkZXBlbmRzIG9uIHRoZSBydWxlJ3MgYmFzZSB2YWx1ZS4gVGhlIGJhc2UgdmFsdWUgZGV0ZXJtaW5lcyB0aGUgcnVsZSdzIDxlbT5kaXZpc29yLDwvZW0+CisgKiB3aGljaCBpcyB0aGUgaGlnaGVzdCBwb3dlciBvZiAxMCB0aGF0IGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgYmFzZSB2YWx1ZSAodGhlIHVzZXIKKyAqIGNhbiBjaGFuZ2UgdGhpcykuIFRvIGZpbGwgaW4gdGhlIHN1YnN0aXR1dGlvbnMsIHRoZSBmb3JtYXR0ZXIgZGl2aWRlcyB0aGUgbnVtYmVyIGJlaW5nCisgKiBmb3JtYXR0ZWQgYnkgdGhlIGRpdmlzb3IuIFRoZSBpbnRlZ3JhbCBxdW90aWVudCBpcyB1c2VkIHRvIGZpbGwgaW4gdGhlICZsdDsmbHQ7CisgKiBzdWJzdGl0dXRpb24sIGFuZCB0aGUgcmVtYWluZGVyIGlzIHVzZWQgdG8gZmlsbCBpbiB0aGUgJmd0OyZndDsgc3Vic3RpdHV0aW9uLiBUaGUgbWVhbmluZworICogb2YgdGhlIGJyYWNrZXRzIGNoYW5nZXMgc2ltaWxhcmx5OiB0ZXh0IGluIGJyYWNrZXRzIGlzIG9taXR0ZWQgaWYgdGhlIHZhbHVlIGJlaW5nCisgKiBmb3JtYXR0ZWQgaXMgYW4gZXZlbiBtdWx0aXBsZSBvZiB0aGUgcnVsZSdzIGRpdmlzb3IuIFRoZSBydWxlcyBhcmUgYXBwbGllZCByZWN1cnNpdmVseSwgc28KKyAqIGlmIGEgc3Vic3RpdHV0aW9uIGlzIGZpbGxlZCBpbiB3aXRoIHRleHQgdGhhdCBpbmNsdWRlcyBhbm90aGVyIHN1YnN0aXR1dGlvbiwgdGhhdAorICogc3Vic3RpdHV0aW9uIGlzIGFsc28gZmlsbGVkIGluLjwvcD4KKyAqCisgKiA8cD5UaGlzIHJ1bGUgY292ZXJzIHZhbHVlcyB1cCB0byA5OTksIGF0IHdoaWNoIHBvaW50IHdlIGFkZCBhbm90aGVyIHJ1bGU6PC9wPgorICoKKyAqIDxwcmU+MTAwMDogJmx0OyZsdDsgdGhvdXNhbmRbICZndDsmZ3Q7XTs8L3ByZT4KKyAqCisgKiA8cD5BZ2FpbiwgdGhlIG1lYW5pbmdzIG9mIHRoZSBicmFja2V0cyBhbmQgc3Vic3RpdHV0aW9uIHRva2VucyBzaGlmdCBiZWNhdXNlIHRoZSBydWxlJ3MKKyAqIGJhc2UgdmFsdWUgaXMgYSBoaWdoZXIgcG93ZXIgb2YgMTAsIGNoYW5naW5nIHRoZSBydWxlJ3MgZGl2aXNvci4gVGhpcyBydWxlIGNhbiBhY3R1YWxseSBiZQorICogdXNlZCBhbGwgdGhlIHdheSB1cCB0byA5OTksOTk5LiBUaGlzIGFsbG93cyB1cyB0byBmaW5pc2ggb3V0IHRoZSBydWxlcyBhcyBmb2xsb3dzOjwvcD4KKyAqCisgKiA8cHJlPjEsMDAwLDAwMDogJmx0OyZsdDsgbWlsbGlvblsgJmd0OyZndDtdOworICogMSwwMDAsMDAwLDAwMDogJmx0OyZsdDsgYmlsbGlvblsgJmd0OyZndDtdOworICogMSwwMDAsMDAwLDAwMCwwMDA6ICZsdDsmbHQ7IHRyaWxsaW9uWyAmZ3Q7Jmd0O107CisgKiAxLDAwMCwwMDAsMDAwLDAwMCwwMDA6IE9VVCBPRiBSQU5HRSE7PC9wcmU+CisgKgorICogPHA+Q29tbWFzLCBwZXJpb2RzLCBhbmQgc3BhY2VzIGNhbiBiZSB1c2VkIGluIHRoZSBiYXNlIHZhbHVlcyB0byBpbXByb3ZlIGxlZ2liaWxpdHkgYW5kCisgKiBhcmUgaWdub3JlZCBieSB0aGUgcnVsZSBwYXJzZXIuIFRoZSBsYXN0IHJ1bGUgaW4gdGhlIGxpc3QgaXMgY3VzdG9tYXJpbHkgdHJlYXRlZCBhcyBhbgorICogJnF1b3Q7b3ZlcmZsb3cgcnVsZSwmcXVvdDsgYXBwbHlpbmcgdG8gZXZlcnl0aGluZyBmcm9tIGl0cyBiYXNlIHZhbHVlIG9uIHVwLCBhbmQgb2Z0ZW4gKGFzCisgKiBpbiB0aGlzIGV4YW1wbGUpIGJlaW5nIHVzZWQgdG8gcHJpbnQgb3V0IGFuIGVycm9yIG1lc3NhZ2Ugb3IgZGVmYXVsdCByZXByZXNlbnRhdGlvbi4KKyAqIE5vdGljZSBhbHNvIHRoYXQgdGhlIHNpemUgb2YgdGhlIG1ham9yIGdyb3VwaW5ncyBpbiBsYXJnZSBudW1iZXJzIGlzIGNvbnRyb2xsZWQgYnkgdGhlCisgKiBzcGFjaW5nIG9mIHRoZSBydWxlczogYmVjYXVzZSBpbiBFbmdsaXNoIHdlIGdyb3VwIG51bWJlcnMgYnkgdGhvdXNhbmQsIHRoZSBoaWdoZXIgcnVsZXMKKyAqIGFyZSBzZXBhcmF0ZWQgZnJvbSBlYWNoIG90aGVyIGJ5IGEgZmFjdG9yIG9mIDEsMDAwLjwvcD4KKyAqCisgKiA8cD5UbyBzZWUgaG93IHRoZXNlIHJ1bGVzIGFjdHVhbGx5IHdvcmsgaW4gcHJhY3RpY2UsIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgZXhhbXBsZToKKyAqIEZvcm1hdHRpbmcgMjUsNDMwIHdpdGggdGhpcyBydWxlIHNldCB3b3VsZCB3b3JrIGxpa2UgdGhpczo8L3A+CisgKgorICogPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjYzMCI+CisgKiAgIDx0cj4KKyAqICAgICA8dGQgd2lkdGg9IjIxIj48L3RkPgorICogICAgIDx0ZCB3aWR0aD0iMjU3IiB2YWxpZ249InRvcCI+PHN0cm9uZz4mbHQ7Jmx0OyB0aG91c2FuZCAmZ3Q7Jmd0Ozwvc3Ryb25nPjwvdGQ+CisgKiAgICAgPHRkIHdpZHRoPSIzNDAiIHZhbGlnbj0idG9wIj5bdGhlIHJ1bGUgd2hvc2UgYmFzZSB2YWx1ZSBpcyAxLDAwMCBpcyBhcHBsaWNhYmxlIHRvIDI1LDM0MF08L3RkPgorICogICA8L3RyPgorICogICA8dHI+CisgKiAgICAgPHRkIHdpZHRoPSIyMSI+PC90ZD4KKyAqICAgICA8dGQgd2lkdGg9IjI1NyIgdmFsaWduPSJ0b3AiPjxzdHJvbmc+dHdlbnR5LSZndDsmZ3Q7PC9zdHJvbmc+IHRob3VzYW5kICZndDsmZ3Q7PC90ZD4KKyAqICAgICA8dGQgd2lkdGg9IjM0MCIgdmFsaWduPSJ0b3AiPlsyNSwzNDAgb3ZlciAxLDAwMCBpcyAyNS4gVGhlIHJ1bGUgZm9yIDIwIGFwcGxpZXMuXTwvdGQ+CisgKiAgIDwvdHI+CisgKiAgIDx0cj4KKyAqICAgICA8dGQgd2lkdGg9IjIxIj48L3RkPgorICogICAgIDx0ZCB3aWR0aD0iMjU3IiB2YWxpZ249InRvcCI+dHdlbnR5LTxzdHJvbmc+Zml2ZTwvc3Ryb25nPiB0aG91c2FuZCAmZ3Q7Jmd0OzwvdGQ+CisgKiAgICAgPHRkIHdpZHRoPSIzNDAiIHZhbGlnbj0idG9wIj5bMjUgbW9kIDEwIGlzIDUuIFRoZSBydWxlIGZvciA1IGlzICZxdW90O2ZpdmUuJnF1b3Q7PC90ZD4KKyAqICAgPC90cj4KKyAqICAgPHRyPgorICogICAgIDx0ZCB3aWR0aD0iMjEiPjwvdGQ+CisgKiAgICAgPHRkIHdpZHRoPSIyNTciIHZhbGlnbj0idG9wIj50d2VudHktZml2ZSB0aG91c2FuZCA8c3Ryb25nPiZsdDsmbHQ7IGh1bmRyZWQgJmd0OyZndDs8L3N0cm9uZz48L3RkPgorICogICAgIDx0ZCB3aWR0aD0iMzQwIiB2YWxpZ249InRvcCI+WzI1LDM0MCBtb2QgMSwwMDAgaXMgMzQwLiBUaGUgcnVsZSBmb3IgMTAwIGFwcGxpZXMuXTwvdGQ+CisgKiAgIDwvdHI+CisgKiAgIDx0cj4KKyAqICAgICA8dGQgd2lkdGg9IjIxIj48L3RkPgorICogICAgIDx0ZCB3aWR0aD0iMjU3IiB2YWxpZ249InRvcCI+dHdlbnR5LWZpdmUgdGhvdXNhbmQgPHN0cm9uZz50aHJlZTwvc3Ryb25nPiBodW5kcmVkICZndDsmZ3Q7PC90ZD4KKyAqICAgICA8dGQgd2lkdGg9IjM0MCIgdmFsaWduPSJ0b3AiPlszNDAgb3ZlciAxMDAgaXMgMy4gVGhlIHJ1bGUgZm9yIDMgaXMgJnF1b3Q7dGhyZWUuJnF1b3Q7XTwvdGQ+CisgKiAgIDwvdHI+CisgKiAgIDx0cj4KKyAqICAgICA8dGQgd2lkdGg9IjIxIj48L3RkPgorICogICAgIDx0ZCB3aWR0aD0iMjU3IiB2YWxpZ249InRvcCI+dHdlbnR5LWZpdmUgdGhvdXNhbmQgdGhyZWUgaHVuZHJlZCA8c3Ryb25nPmZvcnR5PC9zdHJvbmc+PC90ZD4KKyAqICAgICA8dGQgd2lkdGg9IjM0MCIgdmFsaWduPSJ0b3AiPlszNDAgbW9kIDEwMCBpcyA0MC4gVGhlIHJ1bGUgZm9yIDQwIGFwcGxpZXMuIFNpbmNlIDQwIGRpdmlkZXMKKyAqICAgICBldmVubHkgYnkgMTAsIHRoZSBoeXBoZW4gYW5kIHN1YnN0aXR1dGlvbiBpbiB0aGUgYnJhY2tldHMgYXJlIG9taXR0ZWQuXTwvdGQ+CisgKiAgIDwvdHI+CisgKiA8L3RhYmxlPgorICoKKyAqIDxwPlRoZSBhYm92ZSBzeW50YXggc3VmZmljZXMgb25seSB0byBmb3JtYXQgcG9zaXRpdmUgaW50ZWdlcnMuIFRvIGZvcm1hdCBuZWdhdGl2ZSBudW1iZXJzLAorICogd2UgYWRkIGEgc3BlY2lhbCBydWxlOjwvcD4KKyAqCisgKiA8cHJlPi14OiBtaW51cyAmZ3Q7Jmd0Ozs8L3ByZT4KKyAqCisgKiA8cD5UaGlzIGlzIGNhbGxlZCBhIDxlbT5uZWdhdGl2ZS1udW1iZXIgcnVsZSw8L2VtPiBhbmQgaXMgaWRlbnRpZmllZCBieSAmcXVvdDsteCZxdW90OworICogd2hlcmUgdGhlIGJhc2UgdmFsdWUgd291bGQgYmUuIFRoaXMgcnVsZSBpcyB1c2VkIHRvIGZvcm1hdCBhbGwgbmVnYXRpdmUgbnVtYmVycy4gdGhlCisgKiAmZ3Q7Jmd0OyB0b2tlbiBoZXJlIG1lYW5zICZxdW90O2ZpbmQgdGhlIG51bWJlcidzIGFic29sdXRlIHZhbHVlLCBmb3JtYXQgaXQgd2l0aCB0aGVzZQorICogcnVsZXMsIGFuZCBwdXQgdGhlIHJlc3VsdCBoZXJlLiZxdW90OzwvcD4KKyAqCisgKiA8cD5XZSBhbHNvIGFkZCBhIHNwZWNpYWwgcnVsZSBjYWxsZWQgYSA8ZW0+ZnJhY3Rpb24gcnVsZSA8L2VtPmZvciBudW1iZXJzIHdpdGggZnJhY3Rpb25hbAorICogcGFydHM6PC9wPgorICoKKyAqIDxwcmU+eC54OiAmbHQ7Jmx0OyBwb2ludCAmZ3Q7Jmd0Ozs8L3ByZT4KKyAqCisgKiA8cD5UaGlzIHJ1bGUgaXMgdXNlZCBmb3IgYWxsIHBvc2l0aXZlIG5vbi1pbnRlZ2VycyAobmVnYXRpdmUgbm9uLWludGVnZXJzIHBhc3MgdGhyb3VnaCB0aGUKKyAqIG5lZ2F0aXZlLW51bWJlciBydWxlIGZpcnN0IGFuZCB0aGVuIHRocm91Z2ggdGhpcyBydWxlKS4gSGVyZSwgdGhlICZsdDsmbHQ7IHRva2VuIHJlZmVycyB0bworICogdGhlIG51bWJlcidzIGludGVncmFsIHBhcnQsIGFuZCB0aGUgJmd0OyZndDsgdG8gdGhlIG51bWJlcidzIGZyYWN0aW9uYWwgcGFydC4gVGhlCisgKiBmcmFjdGlvbmFsIHBhcnQgaXMgZm9ybWF0dGVkIGFzIGEgc2VyaWVzIG9mIHNpbmdsZS1kaWdpdCBudW1iZXJzIChlLmcuLCAxMjMuNDU2IHdvdWxkIGJlCisgKiBmb3JtYXR0ZWQgYXMgJnF1b3Q7b25lIGh1bmRyZWQgdHdlbnR5LXRocmVlIHBvaW50IGZvdXIgZml2ZSBzaXgmcXVvdDspLjwvcD4KKyAqCisgKiA8cD5UbyBzZWUgaG93IHRoaXMgcnVsZSBzeW50YXggaXMgYXBwbGllZCB0byB2YXJpb3VzIGxhbmd1YWdlcywgZXhhbWluZSB0aGUgcmVzb3VyY2UgZGF0YS48L3A+CisgKgorICogPHA+VGhlcmUgaXMgYWN0dWFsbHkgbXVjaCBtb3JlIGZsZXhpYmlsaXR5IGJ1aWx0IGludG8gdGhlIHJ1bGUgbGFuZ3VhZ2UgdGhhbiB0aGUKKyAqIGRlc2NyaXB0aW9uIGFib3ZlIHNob3dzLiBBIGZvcm1hdHRlciBtYXkgb3duIG11bHRpcGxlIHJ1bGUgc2V0cywgd2hpY2ggY2FuIGJlIHNlbGVjdGVkIGJ5CisgKiB0aGUgY2FsbGVyLCBhbmQgd2hpY2ggY2FuIHVzZSBlYWNoIG90aGVyIHRvIGZpbGwgaW4gdGhlaXIgc3Vic3RpdHV0aW9ucy4gU3Vic3RpdHV0aW9ucyBjYW4KKyAqIGFsc28gYmUgZmlsbGVkIGluIHdpdGggZGlnaXRzLCB1c2luZyBhIERlY2ltYWxGb3JtYXQgb2JqZWN0LiBUaGVyZSBpcyBzeW50YXggdGhhdCBjYW4gYmUKKyAqIHVzZWQgdG8gYWx0ZXIgYSBydWxlJ3MgZGl2aXNvciBpbiB2YXJpb3VzIHdheXMuIEFuZCB0aGVyZSBpcyBwcm92aXNpb24gZm9yIG11Y2ggbW9yZQorICogZmxleGlibGUgZnJhY3Rpb24gaGFuZGxpbmcuIEEgY29tcGxldGUgZGVzY3JpcHRpb24gb2YgdGhlIHJ1bGUgc3ludGF4IGZvbGxvd3M6PC9wPgorICoKKyAqIDxocj4KKyAqCisgKiA8cD5UaGUgZGVzY3JpcHRpb24gb2YgYSA8dHQ+UnVsZUJhc2VkTnVtYmVyRm9ybWF0PC90dD4ncyBiZWhhdmlvciBjb25zaXN0cyBvZiBvbmUgb3IgbW9yZSA8ZW0+cnVsZQorICogc2V0cy48L2VtPiBFYWNoIHJ1bGUgc2V0IGNvbnNpc3RzIG9mIGEgbmFtZSwgYSBjb2xvbiwgYW5kIGEgbGlzdCBvZiA8ZW0+cnVsZXMuPC9lbT4gQSBydWxlCisgKiBzZXQgbmFtZSBtdXN0IGJlZ2luIHdpdGggYSAlIHNpZ24uIFJ1bGUgc2V0cyB3aXRoIG5hbWVzIHRoYXQgYmVnaW4gd2l0aCBhIHNpbmdsZSAlIHNpZ24KKyAqIGFyZSA8ZW0+cHVibGljOjwvZW0+IHRoZSBjYWxsZXIgY2FuIHNwZWNpZnkgdGhhdCB0aGV5IGJlIHVzZWQgdG8gZm9ybWF0IGFuZCBwYXJzZSBudW1iZXJzLgorICogUnVsZSBzZXRzIHdpdGggbmFtZXMgdGhhdCBiZWdpbiB3aXRoICUlIGFyZSA8ZW0+cHJpdmF0ZTo8L2VtPiB0aGV5IGV4aXN0IG9ubHkgZm9yIHRoZSB1c2UKKyAqIG9mIG90aGVyIHJ1bGUgc2V0cy4gSWYgYSBmb3JtYXR0ZXIgb25seSBoYXMgb25lIHJ1bGUgc2V0LCB0aGUgbmFtZSBtYXkgYmUgb21pdHRlZC48L3A+CisgKgorICogPHA+VGhlIHVzZXIgY2FuIGFsc28gc3BlY2lmeSBhIHNwZWNpYWwgJnF1b3Q7cnVsZSBzZXQmcXVvdDsgbmFtZWQgPHR0PiUlbGVuaWVudC1wYXJzZTwvdHQ+LgorICogVGhlIGJvZHkgb2YgPHR0PiUlbGVuaWVudC1wYXJzZTwvdHQ+IGlzbid0IGEgc2V0IG9mIG51bWJlci1mb3JtYXR0aW5nIHJ1bGVzLCBidXQgYSA8dHQ+UnVsZUJhc2VkQ29sbGF0b3I8L3R0PgorICogZGVzY3JpcHRpb24gd2hpY2ggaXMgdXNlZCB0byBkZWZpbmUgZXF1aXZhbGVuY2VzIGZvciBsZW5pZW50IHBhcnNpbmcuIEZvciBtb3JlIGluZm9ybWF0aW9uCisgKiBvbiB0aGUgc3ludGF4LCBzZWUgPHR0PlJ1bGVCYXNlZENvbGxhdG9yPC90dD4uIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGxlbmllbnQgcGFyc2luZywKKyAqIHNlZSA8dHQ+c2V0TGVuaWVudFBhcnNlKCk8L3R0Pi48L3A+CisgKgorICogPHA+VGhlIGJvZHkgb2YgYSBydWxlIHNldCBjb25zaXN0cyBvZiBhbiBvcmRlcmVkLCBzZW1pY29sb24tZGVsaW1pdGVkIGxpc3Qgb2YgPGVtPnJ1bGVzLjwvZW0+CisgKiBJbnRlcm5hbGx5LCBldmVyeSBydWxlIGhhcyBhIGJhc2UgdmFsdWUsIGEgZGl2aXNvciwgcnVsZSB0ZXh0LCBhbmQgemVybywgb25lLCBvciB0d28gPGVtPnN1YnN0dHV0aW9ucy48L2VtPgorICogVGhlc2UgcGFyYW1ldGVycyBhcmUgY29udHJvbGxlZCBieSB0aGUgZGVzY3JpcHRpb24gc3ludGF4LCB3aGljaCBjb25zaXN0cyBvZiBhIDxlbT5ydWxlCisgKiBkZXNjcmlwdG9yLDwvZW0+IGEgY29sb24sIGFuZCBhIDxlbT5ydWxlIGJvZHkuPC9lbT48L3A+CisgKgorICogPHA+QSBydWxlIGRlc2NyaXB0b3IgY2FuIHRha2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcgZm9ybXMgKHRleHQgaW4gPGVtPml0YWxpY3M8L2VtPiBpcyB0aGUKKyAqIG5hbWUgb2YgYSB0b2tlbik6PC9wPgorICoKKyAqIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIj4KKyAqICAgPHRyPgorICogICAgIDx0ZCB3aWR0aD0iNSUiIHZhbGlnbj0idG9wIj48L3RkPgorICogICAgIDx0ZCB3aWR0aD0iOCUiIHZhbGlnbj0idG9wIj48ZW0+YnY8L2VtPjo8L3RkPgorICogICAgIDx0ZCB2YWxpZ249InRvcCI+PGVtPmJ2PC9lbT4gc3BlY2lmaWVzIHRoZSBydWxlJ3MgYmFzZSB2YWx1ZS4gPGVtPmJ2PC9lbT4gaXMgYSBkZWNpbWFsCisgKiAgICAgbnVtYmVyIGV4cHJlc3NlZCB1c2luZyBBU0NJSSBkaWdpdHMuIDxlbT5idjwvZW0+IG1heSBjb250YWluIHNwYWNlcywgcGVyaW9kLCBhbmQgY29tbWFzLAorICogICAgIHdoaWNoIGFyZSBpcmdub3JlZC4gVGhlIHJ1bGUncyBkaXZpc29yIGlzIHRoZSBoaWdoZXN0IHBvd2VyIG9mIDEwIGxlc3MgdGhhbiBvciBlcXVhbCB0bworICogICAgIHRoZSBiYXNlIHZhbHVlLjwvdGQ+CisgKiAgIDwvdHI+CisgKiAgIDx0cj4KKyAqICAgICA8dGQgd2lkdGg9IjUlIiB2YWxpZ249InRvcCI+PC90ZD4KKyAqICAgICA8dGQgd2lkdGg9IjglIiB2YWxpZ249InRvcCI+PGVtPmJ2PC9lbT4vPGVtPnJhZDwvZW0+OjwvdGQ+CisgKiAgICAgPHRkIHZhbGlnbj0idG9wIj48ZW0+YnY8L2VtPiBzcGVjaWZpZXMgdGhlIHJ1bGUncyBiYXNlIHZhbHVlLiBUaGUgcnVsZSdzIGRpdmlzb3IgaXMgdGhlCisgKiAgICAgaGlnaGVzdCBwb3dlciBvZiA8ZW0+cmFkPC9lbT4gbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBiYXNlIHZhbHVlLjwvdGQ+CisgKiAgIDwvdHI+CisgKiAgIDx0cj4KKyAqICAgICA8dGQgd2lkdGg9IjUlIiB2YWxpZ249InRvcCI+PC90ZD4KKyAqICAgICA8dGQgd2lkdGg9IjglIiB2YWxpZ249InRvcCI+PGVtPmJ2PC9lbT4mZ3Q7OjwvdGQ+CisgKiAgICAgPHRkIHZhbGlnbj0idG9wIj48ZW0+YnY8L2VtPiBzcGVjaWZpZXMgdGhlIHJ1bGUncyBiYXNlIHZhbHVlLiBUbyBjYWxjdWxhdGUgdGhlIGRpdmlzb3IsCisgKiAgICAgbGV0IHRoZSByYWRpeCBiZSAxMCwgYW5kIHRoZSBleHBvbmVudCBiZSB0aGUgaGlnaGVzdCBleHBvbmVudCBvZiB0aGUgcmFkaXggdGhhdCB5aWVsZHMgYQorICogICAgIHJlc3VsdCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGJhc2UgdmFsdWUuIEV2ZXJ5ICZndDsgY2hhcmFjdGVyIGFmdGVyIHRoZSBiYXNlIHZhbHVlCisgKiAgICAgZGVjcmVhc2VzIHRoZSBleHBvbmVudCBieSAxLiBJZiB0aGUgZXhwb25lbnQgaXMgcG9zaXRpdmUgb3IgMCwgdGhlIGRpdmlzb3IgaXMgdGhlIHJhZGl4CisgKiAgICAgcmFpc2VkIHRvIHRoZSBwb3dlciBvZiB0aGUgZXhwb25lbnQ7IG90aGVyd2lzZSwgdGhlIGRpdmlzb3IgaXMgMS48L3RkPgorICogICA8L3RyPgorICogICA8dHI+CisgKiAgICAgPHRkIHdpZHRoPSI1JSIgdmFsaWduPSJ0b3AiPjwvdGQ+CisgKiAgICAgPHRkIHdpZHRoPSI4JSIgdmFsaWduPSJ0b3AiPjxlbT5idjwvZW0+LzxlbT5yYWQ8L2VtPiZndDs6PC90ZD4KKyAqICAgICA8dGQgdmFsaWduPSJ0b3AiPjxlbT5idjwvZW0+IHNwZWNpZmllcyB0aGUgcnVsZSdzIGJhc2UgdmFsdWUuIFRvIGNhbGN1bGF0ZSB0aGUgZGl2aXNvciwKKyAqICAgICBsZXQgdGhlIHJhZGl4IGJlIDxlbT5yYWQ8L2VtPiwgYW5kIHRoZSBleHBvbmVudCBiZSB0aGUgaGlnaGVzdCBleHBvbmVudCBvZiB0aGUgcmFkaXggdGhhdAorICogICAgIHlpZWxkcyBhIHJlc3VsdCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGJhc2UgdmFsdWUuIEV2ZXJ5ICZndDsgY2hhcmFjdGVyIGFmdGVyIHRoZSByYWRpeAorICogICAgIGRlY3JlYXNlcyB0aGUgZXhwb25lbnQgYnkgMS4gSWYgdGhlIGV4cG9uZW50IGlzIHBvc2l0aXZlIG9yIDAsIHRoZSBkaXZpc29yIGlzIHRoZSByYWRpeAorICogICAgIHJhaXNlZCB0byB0aGUgcG93ZXIgb2YgdGhlIGV4cG9uZW50OyBvdGhlcndpc2UsIHRoZSBkaXZpc29yIGlzIDEuPC90ZD4KKyAqICAgPC90cj4KKyAqICAgPHRyPgorICogICAgIDx0ZCB3aWR0aD0iNSUiIHZhbGlnbj0idG9wIj48L3RkPgorICogICAgIDx0ZCB3aWR0aD0iOCUiIHZhbGlnbj0idG9wIj4teDo8L3RkPgorICogICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIHJ1bGUgaXMgYSBuZWdhdGl2ZS1udW1iZXIgcnVsZS48L3RkPgorICogICA8L3RyPgorICogICA8dHI+CisgKiAgICAgPHRkIHdpZHRoPSI1JSIgdmFsaWduPSJ0b3AiPjwvdGQ+CisgKiAgICAgPHRkIHdpZHRoPSI4JSIgdmFsaWduPSJ0b3AiPngueDo8L3RkPgorICogICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIHJ1bGUgaXMgYW4gPGVtPmltcHJvcGVyIGZyYWN0aW9uIHJ1bGUuPC9lbT48L3RkPgorICogICA8L3RyPgorICogICA8dHI+CisgKiAgICAgPHRkIHdpZHRoPSI1JSIgdmFsaWduPSJ0b3AiPjwvdGQ+CisgKiAgICAgPHRkIHdpZHRoPSI4JSIgdmFsaWduPSJ0b3AiPjAueDo8L3RkPgorICogICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIHJ1bGUgaXMgYSA8ZW0+cHJvcGVyIGZyYWN0aW9uIHJ1bGUuPC9lbT48L3RkPgorICogICA8L3RyPgorICogICA8dHI+CisgKiAgICAgPHRkIHdpZHRoPSI1JSIgdmFsaWduPSJ0b3AiPjwvdGQ+CisgKiAgICAgPHRkIHdpZHRoPSI4JSIgdmFsaWduPSJ0b3AiPnguMDo8L3RkPgorICogICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIHJ1bGUgaXMgYSA8ZW0+bWFzdGVyIHJ1bGUuPC9lbT48L3RkPgorICogICA8L3RyPgorICogICA8dHI+CisgKiAgICAgPHRkIHdpZHRoPSI1JSIgdmFsaWduPSJ0b3AiPjwvdGQ+CisgKiAgICAgPHRkIHdpZHRoPSI4JSIgdmFsaWduPSJ0b3AiPjxlbT5ub3RoaW5nPC9lbT48L3RkPgorICogICAgIDx0ZCB2YWxpZ249InRvcCI+SWYgdGhlIHJ1bGUncyBydWxlIGRlc2NyaXB0b3IgaXMgbGVmdCBvdXQsIHRoZSBiYXNlIHZhbHVlIGlzIG9uZSBwbHVzIHRoZQorICogICAgIHByZWNlZGluZyBydWxlJ3MgYmFzZSB2YWx1ZSAob3IgemVybyBpZiB0aGlzIGlzIHRoZSBmaXJzdCBydWxlIGluIHRoZSBsaXN0KSBpbiBhIG5vcm1hbAorICogICAgIHJ1bGUgc2V0LiZuYnNwOyBJbiBhIGZyYWN0aW9uIHJ1bGUgc2V0LCB0aGUgYmFzZSB2YWx1ZSBpcyB0aGUgc2FtZSBhcyB0aGUgcHJlY2VkaW5nIHJ1bGUncworICogICAgIGJhc2UgdmFsdWUuPC90ZD4KKyAqICAgPC90cj4KKyAqIDwvdGFibGU+CisgKgorICogPHA+QSBydWxlIHNldCBtYXkgYmUgZWl0aGVyIGEgcmVndWxhciBydWxlIHNldCBvciBhIDxlbT5mcmFjdGlvbiBydWxlIHNldCw8L2VtPiBkZXBlbmRpbmcKKyAqIG9uIHdoZXRoZXIgaXQgaXMgdXNlZCB0byBmb3JtYXQgYSBudW1iZXIncyBpbnRlZ3JhbCBwYXJ0IChvciB0aGUgd2hvbGUgbnVtYmVyKSBvciBhCisgKiBudW1iZXIncyBmcmFjdGlvbmFsIHBhcnQuIFVzaW5nIGEgcnVsZSBzZXQgdG8gZm9ybWF0IGEgcnVsZSdzIGZyYWN0aW9uYWwgcGFydCBtYWtlcyBpdCBhCisgKiBmcmFjdGlvbiBydWxlIHNldC48L3A+CisgKgorICogPHA+V2hpY2ggcnVsZSBpcyB1c2VkIHRvIGZvcm1hdCBhIG51bWJlciBpcyBkZWZpbmVkIGFjY29yZGluZyB0byBvbmUgb2YgdGhlIGZvbGxvd2luZworICogYWxnb3JpdGhtczogSWYgdGhlIHJ1bGUgc2V0IGlzIGEgcmVndWxhciBydWxlIHNldCwgZG8gdGhlIGZvbGxvd2luZzoKKyAqCisgKiA8dWw+CisgKiAgIDxsaT5JZiB0aGUgcnVsZSBzZXQgaW5jbHVkZXMgYSBtYXN0ZXIgcnVsZSAoYW5kIHRoZSBudW1iZXIgd2FzIHBhc3NlZCBpbiBhcyBhIDx0dD5kb3VibGU8L3R0PiksCisgKiAgICAgdXNlIHRoZSBtYXN0ZXIgcnVsZS4mbmJzcDsgKElmIHRoZSBudW1iZXIgYmVpbmcgZm9ybWF0dGVkIHdhcyBwYXNzZWQgaW4gYXMgYSA8dHQ+bG9uZzwvdHQ+LAorICogICAgIHRoZSBtYXN0ZXIgcnVsZSBpcyBpZ25vcmVkLik8L2xpPgorICogICA8bGk+SWYgdGhlIG51bWJlciBpcyBuZWdhdGl2ZSwgdXNlIHRoZSBuZWdhdGl2ZS1udW1iZXIgcnVsZS48L2xpPgorICogICA8bGk+SWYgdGhlIG51bWJlciBoYXMgYSBmcmFjdGlvbmFsIHBhcnQgYW5kIGlzIGdyZWF0ZXIgdGhhbiAxLCB1c2UgdGhlIGltcHJvcGVyIGZyYWN0aW9uCisgKiAgICAgcnVsZS48L2xpPgorICogICA8bGk+SWYgdGhlIG51bWJlciBoYXMgYSBmcmFjdGlvbmFsIHBhcnQgYW5kIGlzIGJldHdlZW4gMCBhbmQgMSwgdXNlIHRoZSBwcm9wZXIgZnJhY3Rpb24KKyAqICAgICBydWxlLjwvbGk+CisgKiAgIDxsaT5CaW5hcnktc2VhcmNoIHRoZSBydWxlIGxpc3QgZm9yIHRoZSBydWxlIHdpdGggdGhlIGhpZ2hlc3QgYmFzZSB2YWx1ZSBsZXNzIHRoYW4gb3IgZXF1YWwKKyAqICAgICB0byB0aGUgbnVtYmVyLiBJZiB0aGF0IHJ1bGUgaGFzIHR3byBzdWJzdGl0dXRpb25zLCBpdHMgYmFzZSB2YWx1ZSBpcyBub3QgYW4gZXZlbiBtdWx0aXBsZQorICogICAgIG9mIGl0cyBkaXZpc29yLCBhbmQgdGhlIG51bWJlciA8ZW0+aXM8L2VtPiBhbiBldmVuIG11bHRpcGxlIG9mIHRoZSBydWxlJ3MgZGl2aXNvciwgdXNlIHRoZQorICogICAgIHJ1bGUgdGhhdCBwcmVjZWRlcyBpdCBpbiB0aGUgcnVsZSBsaXN0LiBPdGhlcndpc2UsIHVzZSB0aGUgcnVsZSBpdHNlbGYuPC9saT4KKyAqIDwvdWw+CisgKgorICogPHA+SWYgdGhlIHJ1bGUgc2V0IGlzIGEgZnJhY3Rpb24gcnVsZSBzZXQsIGRvIHRoZSBmb2xsb3dpbmc6CisgKgorICogPHVsPgorICogICA8bGk+SWdub3JlIG5lZ2F0aXZlLW51bWJlciBhbmQgZnJhY3Rpb24gcnVsZXMuPC9saT4KKyAqICAgPGxpPkZvciBlYWNoIHJ1bGUgaW4gdGhlIGxpc3QsIG11bHRpcGx5IHRoZSBudW1iZXIgYmVpbmcgZm9ybWF0dGVkICh3aGljaCB3aWxsIGFsd2F5cyBiZQorICogICAgIGJldHdlZW4gMCBhbmQgMSkgYnkgdGhlIHJ1bGUncyBiYXNlIHZhbHVlLiBLZWVwIHRyYWNrIG9mIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSByZXN1bHQKKyAqICAgICB0aGUgbmVhcmVzdCBpbnRlZ2VyLjwvbGk+CisgKiAgIDxsaT5Vc2UgdGhlIHJ1bGUgdGhhdCBwcm9kdWNlZCB0aGUgcmVzdWx0IGNsb3Nlc3QgdG8gemVybyBpbiB0aGUgYWJvdmUgY2FsY3VsYXRpb24uIEluIHRoZQorICogICAgIGV2ZW50IG9mIGEgdGllIG9yIGEgZGlyZWN0IGhpdCwgdXNlIHRoZSBmaXJzdCBtYXRjaGluZyBydWxlIGVuY291bnRlcmVkLiAoVGhlIGlkZWEgaGVyZSBpcworICogICAgIHRvIHRyeSBlYWNoIHJ1bGUncyBiYXNlIHZhbHVlIGFzIGEgcG9zc2libGUgZGVub21pbmF0b3Igb2YgYSBmcmFjdGlvbi4gV2hpY2hldmVyCisgKiAgICAgZGVub21pbmF0b3IgcHJvZHVjZXMgdGhlIGZyYWN0aW9uIGNsb3Nlc3QgaW4gdmFsdWUgdG8gdGhlIG51bWJlciBiZWluZyBmb3JtYXR0ZWQgd2lucy4pIElmCisgKiAgICAgdGhlIHJ1bGUgZm9sbG93aW5nIHRoZSBtYXRjaGluZyBydWxlIGhhcyB0aGUgc2FtZSBiYXNlIHZhbHVlLCB1c2UgaXQgaWYgdGhlIG51bWVyYXRvciBvZgorICogICAgIHRoZSBmcmFjdGlvbiBpcyBhbnl0aGluZyBvdGhlciB0aGFuIDE7IGlmIHRoZSBudW1lcmF0b3IgaXMgMSwgdXNlIHRoZSBvcmlnaW5hbCBtYXRjaGluZworICogICAgIHJ1bGUuIChUaGlzIGlzIHRvIGFsbG93IHNpbmd1bGFyIGFuZCBwbHVyYWwgZm9ybXMgb2YgdGhlIHJ1bGUgdGV4dCB3aXRob3V0IGEgbG90IG9mIGV4dHJhCisgKiAgICAgaGFzc2xlLik8L2xpPgorICogPC91bD4KKyAqCisgKiA8cD5BIHJ1bGUncyBib2R5IGNvbnNpc3RzIG9mIGEgc3RyaW5nIG9mIGNoYXJhY3RlcnMgdGVybWluYXRlZCBieSBhIHNlbWljb2xvbi4gVGhlIHJ1bGUKKyAqIG1heSBpbmNsdWRlIHplcm8sIG9uZSwgb3IgdHdvIDxlbT5zdWJzdGl0dXRpb24gdG9rZW5zLDwvZW0+IGFuZCBhIHJhbmdlIG9mIHRleHQgaW4KKyAqIGJyYWNrZXRzLiBUaGUgYnJhY2tldHMgZGVub3RlIG9wdGlvbmFsIHRleHQgKGFuZCBtYXkgYWxzbyBpbmNsdWRlIG9uZSBvciBib3RoCisgKiBzdWJzdGl0dXRpb25zKS4gVGhlIGV4YWN0IG1lYW5pbmdzIG9mIHRoZSBzdWJzdGl0dXRpb24gdG9rZW5zLCBhbmQgdW5kZXIgd2hhdCBjb25kaXRpb25zCisgKiBvcHRpb25hbCB0ZXh0IGlzIG9taXR0ZWQsIGRlcGVuZCBvbiB0aGUgc3ludGF4IG9mIHRoZSBzdWJzdGl0dXRpb24gdG9rZW4gYW5kIHRoZSBjb250ZXh0LgorICogVGhlIHJlc3Qgb2YgdGhlIHRleHQgaW4gYSBydWxlIGJvZHkgaXMgbGl0ZXJhbCB0ZXh0IHRoYXQgaXMgb3V0cHV0IHdoZW4gdGhlIHJ1bGUgbWF0Y2hlcworICogdGhlIG51bWJlciBiZWluZyBmb3JtYXR0ZWQuPC9wPgorICoKKyAqIDxwPkEgc3Vic3RpdHV0aW9uIHRva2VuIGJlZ2lucyBhbmQgZW5kcyB3aXRoIGEgPGVtPnRva2VuIGNoYXJhY3Rlci48L2VtPiBUaGUgdG9rZW4KKyAqIGNoYXJhY3RlciBhbmQgdGhlIGNvbnRleHQgdG9nZXRoZXIgc3BlY2lmeSBhIG1hdGhlbWF0aWNhbCBvcGVyYXRpb24gdG8gYmUgcGVyZm9ybWVkIG9uIHRoZQorICogbnVtYmVyIGJlaW5nIGZvcm1hdHRlZC4gQW4gb3B0aW9uYWwgPGVtPnN1YnN0aXR1dGlvbiBkZXNjcmlwdG9yIDwvZW0+c3BlY2lmaWVzIGhvdyB0aGUKKyAqIHZhbHVlIHJlc3VsdGluZyBmcm9tIHRoYXQgb3BlcmF0aW9uIGlzIHVzZWQgdG8gZmlsbCBpbiB0aGUgc3Vic3RpdHV0aW9uLiBUaGUgcG9zaXRpb24gb2YKKyAqIHRoZSBzdWJzdGl0dXRpb24gdG9rZW4gaW4gdGhlIHJ1bGUgYm9keSBzcGVjaWZpZXMgdGhlIGxvY2F0aW9uIG9mIHRoZSByZXN1bHRhbnQgdGV4dCBpbgorICogdGhlIG9yaWdpbmFsIHJ1bGUgdGV4dC48L3A+CisgKgorICogPHA+VGhlIG1lYW5pbmdzIG9mIHRoZSBzdWJzdGl0dXRpb24gdG9rZW4gY2hhcmFjdGVycyBhcmUgYXMgZm9sbG93czo8L3A+CisgKgorICogPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiPgorICogICA8dHI+CisgKiAgICAgPHRkIHdpZHRoPSIzNyI+PC90ZD4KKyAqICAgICA8dGQgd2lkdGg9IjIzIj4mZ3Q7Jmd0OzwvdGQ+CisgKiAgICAgPHRkIHdpZHRoPSIxNjUiIHZhbGlnbj0idG9wIj5pbiBub3JtYWwgcnVsZTwvdGQ+CisgKiAgICAgPHRkPkRpdmlkZSB0aGUgbnVtYmVyIGJ5IHRoZSBydWxlJ3MgZGl2aXNvciBhbmQgZm9ybWF0IHRoZSByZW1haW5kZXI8L3RkPgorICogICA8L3RyPgorICogICA8dHI+CisgKiAgICAgPHRkIHdpZHRoPSIzNyI+PC90ZD4KKyAqICAgICA8dGQgd2lkdGg9IjIzIj48L3RkPgorICogICAgIDx0ZCB3aWR0aD0iMTY1IiB2YWxpZ249InRvcCI+aW4gbmVnYXRpdmUtbnVtYmVyIHJ1bGU8L3RkPgorICogICAgIDx0ZD5GaW5kIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgbnVtYmVyIGFuZCBmb3JtYXQgdGhlIHJlc3VsdDwvdGQ+CisgKiAgIDwvdHI+CisgKiAgIDx0cj4KKyAqICAgICA8dGQgd2lkdGg9IjM3Ij48L3RkPgorICogICAgIDx0ZCB3aWR0aD0iMjMiPjwvdGQ+CisgKiAgICAgPHRkIHdpZHRoPSIxNjUiIHZhbGlnbj0idG9wIj5pbiBmcmFjdGlvbiBvciBtYXN0ZXIgcnVsZTwvdGQ+CisgKiAgICAgPHRkPklzb2xhdGUgdGhlIG51bWJlcidzIGZyYWN0aW9uYWwgcGFydCBhbmQgZm9ybWF0IGl0LjwvdGQ+CisgKiAgIDwvdHI+CisgKiAgIDx0cj4KKyAqICAgICA8dGQgd2lkdGg9IjM3Ij48L3RkPgorICogICAgIDx0ZCB3aWR0aD0iMjMiPjwvdGQ+CisgKiAgICAgPHRkIHdpZHRoPSIxNjUiIHZhbGlnbj0idG9wIj5pbiBydWxlIGluIGZyYWN0aW9uIHJ1bGUgc2V0PC90ZD4KKyAqICAgICA8dGQ+Tm90IGFsbG93ZWQuPC90ZD4KKyAqICAgPC90cj4KKyAqICAgPHRyPgorICogICAgIDx0ZCB3aWR0aD0iMzciPjwvdGQ+CisgKiAgICAgPHRkIHdpZHRoPSIyMyI+Jmd0OyZndDsmZ3Q7PC90ZD4KKyAqICAgICA8dGQgd2lkdGg9IjE2NSIgdmFsaWduPSJ0b3AiPmluIG5vcm1hbCBydWxlPC90ZD4KKyAqICAgICA8dGQ+RGl2aWRlIHRoZSBudW1iZXIgYnkgdGhlIHJ1bGUncyBkaXZpc29yIGFuZCBmb3JtYXQgdGhlIHJlbWFpbmRlciwKKyAqICAgICAgIGJ1dCBieXBhc3MgdGhlIG5vcm1hbCBydWxlLXNlbGVjdGlvbiBwcm9jZXNzIGFuZCBqdXN0IHVzZSB0aGUKKyAqICAgICAgIHJ1bGUgdGhhdCBwcmVjZWRlcyB0aGlzIG9uZSBpbiB0aGlzIHJ1bGUgbGlzdC48L3RkPgorICogICA8L3RyPgorICogICA8dHI+CisgKiAgICAgPHRkIHdpZHRoPSIzNyI+PC90ZD4KKyAqICAgICA8dGQgd2lkdGg9IjIzIj48L3RkPgorICogICAgIDx0ZCB3aWR0aD0iMTY1IiB2YWxpZ249InRvcCI+aW4gYWxsIG90aGVyIHJ1bGVzPC90ZD4KKyAqICAgICA8dGQ+Tm90IGFsbG93ZWQuPC90ZD4KKyAqICAgPC90cj4KKyAqICAgPHRyPgorICogICAgIDx0ZCB3aWR0aD0iMzciPjwvdGQ+CisgKiAgICAgPHRkIHdpZHRoPSIyMyI+Jmx0OyZsdDs8L3RkPgorICogICAgIDx0ZCB3aWR0aD0iMTY1IiB2YWxpZ249InRvcCI+aW4gbm9ybWFsIHJ1bGU8L3RkPgorICogICAgIDx0ZD5EaXZpZGUgdGhlIG51bWJlciBieSB0aGUgcnVsZSdzIGRpdmlzb3IgYW5kIGZvcm1hdCB0aGUgcXVvdGllbnQ8L3RkPgorICogICA8L3RyPgorICogICA8dHI+CisgKiAgICAgPHRkIHdpZHRoPSIzNyI+PC90ZD4KKyAqICAgICA8dGQgd2lkdGg9IjIzIj48L3RkPgorICogICAgIDx0ZCB3aWR0aD0iMTY1IiB2YWxpZ249InRvcCI+aW4gbmVnYXRpdmUtbnVtYmVyIHJ1bGU8L3RkPgorICogICAgIDx0ZD5Ob3QgYWxsb3dlZC48L3RkPgorICogICA8L3RyPgorICogICA8dHI+CisgKiAgICAgPHRkIHdpZHRoPSIzNyI+PC90ZD4KKyAqICAgICA8dGQgd2lkdGg9IjIzIj48L3RkPgorICogICAgIDx0ZCB3aWR0aD0iMTY1IiB2YWxpZ249InRvcCI+aW4gZnJhY3Rpb24gb3IgbWFzdGVyIHJ1bGU8L3RkPgorICogICAgIDx0ZD5Jc29sYXRlIHRoZSBudW1iZXIncyBpbnRlZ3JhbCBwYXJ0IGFuZCBmb3JtYXQgaXQuPC90ZD4KKyAqICAgPC90cj4KKyAqICAgPHRyPgorICogICAgIDx0ZCB3aWR0aD0iMzciPjwvdGQ+CisgKiAgICAgPHRkIHdpZHRoPSIyMyI+PC90ZD4KKyAqICAgICA8dGQgd2lkdGg9IjE2NSIgdmFsaWduPSJ0b3AiPmluIHJ1bGUgaW4gZnJhY3Rpb24gcnVsZSBzZXQ8L3RkPgorICogICAgIDx0ZD5NdWx0aXBseSB0aGUgbnVtYmVyIGJ5IHRoZSBydWxlJ3MgYmFzZSB2YWx1ZSBhbmQgZm9ybWF0IHRoZSByZXN1bHQuPC90ZD4KKyAqICAgPC90cj4KKyAqICAgPHRyPgorICogICAgIDx0ZCB3aWR0aD0iMzciPjwvdGQ+CisgKiAgICAgPHRkIHdpZHRoPSIyMyI+PT08L3RkPgorICogICAgIDx0ZCB3aWR0aD0iMTY1IiB2YWxpZ249InRvcCI+aW4gYWxsIHJ1bGUgc2V0czwvdGQ+CisgKiAgICAgPHRkPkZvcm1hdCB0aGUgbnVtYmVyIHVuY2hhbmdlZDwvdGQ+CisgKiAgIDwvdHI+CisgKiAgIDx0cj4KKyAqICAgICA8dGQgd2lkdGg9IjM3Ij48L3RkPgorICogICAgIDx0ZCB3aWR0aD0iMjMiPltdPC90ZD4KKyAqICAgICA8dGQgd2lkdGg9IjE2NSIgdmFsaWduPSJ0b3AiPmluIG5vcm1hbCBydWxlPC90ZD4KKyAqICAgICA8dGQ+T21pdCB0aGUgb3B0aW9uYWwgdGV4dCBpZiB0aGUgbnVtYmVyIGlzIGFuIGV2ZW4gbXVsdGlwbGUgb2YgdGhlIHJ1bGUncyBkaXZpc29yPC90ZD4KKyAqICAgPC90cj4KKyAqICAgPHRyPgorICogICAgIDx0ZCB3aWR0aD0iMzciPjwvdGQ+CisgKiAgICAgPHRkIHdpZHRoPSIyMyI+PC90ZD4KKyAqICAgICA8dGQgd2lkdGg9IjE2NSIgdmFsaWduPSJ0b3AiPmluIG5lZ2F0aXZlLW51bWJlciBydWxlPC90ZD4KKyAqICAgICA8dGQ+Tm90IGFsbG93ZWQuPC90ZD4KKyAqICAgPC90cj4KKyAqICAgPHRyPgorICogICAgIDx0ZCB3aWR0aD0iMzciPjwvdGQ+CisgKiAgICAgPHRkIHdpZHRoPSIyMyI+PC90ZD4KKyAqICAgICA8dGQgd2lkdGg9IjE2NSIgdmFsaWduPSJ0b3AiPmluIGltcHJvcGVyLWZyYWN0aW9uIHJ1bGU8L3RkPgorICogICAgIDx0ZD5PbWl0IHRoZSBvcHRpb25hbCB0ZXh0IGlmIHRoZSBudW1iZXIgaXMgYmV0d2VlbiAwIGFuZCAxIChzYW1lIGFzIHNwZWNpZnlpbmcgYm90aCBhbgorICogICAgIHgueCBydWxlIGFuZCBhIDAueCBydWxlKTwvdGQ+CisgKiAgIDwvdHI+CisgKiAgIDx0cj4KKyAqICAgICA8dGQgd2lkdGg9IjM3Ij48L3RkPgorICogICAgIDx0ZCB3aWR0aD0iMjMiPjwvdGQ+CisgKiAgICAgPHRkIHdpZHRoPSIxNjUiIHZhbGlnbj0idG9wIj5pbiBtYXN0ZXIgcnVsZTwvdGQ+CisgKiAgICAgPHRkPk9taXQgdGhlIG9wdGlvbmFsIHRleHQgaWYgdGhlIG51bWJlciBpcyBhbiBpbnRlZ2VyIChzYW1lIGFzIHNwZWNpZnlpbmcgYm90aCBhbiB4LngKKyAqICAgICBydWxlIGFuZCBhbiB4LjAgcnVsZSk8L3RkPgorICogICA8L3RyPgorICogICA8dHI+CisgKiAgICAgPHRkIHdpZHRoPSIzNyI+PC90ZD4KKyAqICAgICA8dGQgd2lkdGg9IjIzIj48L3RkPgorICogICAgIDx0ZCB3aWR0aD0iMTY1IiB2YWxpZ249InRvcCI+aW4gcHJvcGVyLWZyYWN0aW9uIHJ1bGU8L3RkPgorICogICAgIDx0ZD5Ob3QgYWxsb3dlZC48L3RkPgorICogICA8L3RyPgorICogICA8dHI+CisgKiAgICAgPHRkIHdpZHRoPSIzNyI+PC90ZD4KKyAqICAgICA8dGQgd2lkdGg9IjIzIj48L3RkPgorICogICAgIDx0ZCB3aWR0aD0iMTY1IiB2YWxpZ249InRvcCI+aW4gcnVsZSBpbiBmcmFjdGlvbiBydWxlIHNldDwvdGQ+CisgKiAgICAgPHRkPk9taXQgdGhlIG9wdGlvbmFsIHRleHQgaWYgbXVsdGlwbHlpbmcgdGhlIG51bWJlciBieSB0aGUgcnVsZSdzIGJhc2UgdmFsdWUgeWllbGRzIDEuPC90ZD4KKyAqICAgPC90cj4KKyAqIDwvdGFibGU+CisgKgorICogPHA+VGhlIHN1YnN0aXR1dGlvbiBkZXNjcmlwdG9yIChpLmUuLCB0aGUgdGV4dCBiZXR3ZWVuIHRoZSB0b2tlbiBjaGFyYWN0ZXJzKSBtYXkgdGFrZSBvbmUKKyAqIG9mIHRocmVlIGZvcm1zOjwvcD4KKyAqCisgKiA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSI+CisgKiAgIDx0cj4KKyAqICAgICA8dGQgd2lkdGg9IjQyIj48L3RkPgorICogICAgIDx0ZCB3aWR0aD0iMTY2IiB2YWxpZ249InRvcCI+YSBydWxlIHNldCBuYW1lPC90ZD4KKyAqICAgICA8dGQ+UGVyZm9ybSB0aGUgbWF0aGVtYXRpY2FsIG9wZXJhdGlvbiBvbiB0aGUgbnVtYmVyLCBhbmQgZm9ybWF0IHRoZSByZXN1bHQgdXNpbmcgdGhlCisgKiAgICAgbmFtZWQgcnVsZSBzZXQuPC90ZD4KKyAqICAgPC90cj4KKyAqICAgPHRyPgorICogICAgIDx0ZCB3aWR0aD0iNDIiPjwvdGQ+CisgKiAgICAgPHRkIHdpZHRoPSIxNjYiIHZhbGlnbj0idG9wIj5hIERlY2ltYWxGb3JtYXQgcGF0dGVybjwvdGQ+CisgKiAgICAgPHRkPlBlcmZvcm0gdGhlIG1hdGhlbWF0aWNhbCBvcGVyYXRpb24gb24gdGhlIG51bWJlciwgYW5kIGZvcm1hdCB0aGUgcmVzdWx0IHVzaW5nIGEKKyAqICAgICBEZWNpbWFsRm9ybWF0IHdpdGggdGhlIHNwZWNpZmllZCBwYXR0ZXJuLiZuYnNwOyBUaGUgcGF0dGVybiBtdXN0IGJlZ2luIHdpdGggMCBvciAjLjwvdGQ+CisgKiAgIDwvdHI+CisgKiAgIDx0cj4KKyAqICAgICA8dGQgd2lkdGg9IjQyIj48L3RkPgorICogICAgIDx0ZCB3aWR0aD0iMTY2IiB2YWxpZ249InRvcCI+bm90aGluZzwvdGQ+CisgKiAgICAgPHRkPlBlcmZvcm0gdGhlIG1hdGhlbWF0aWNhbCBvcGVyYXRpb24gb24gdGhlIG51bWJlciwgYW5kIGZvcm1hdCB0aGUgcmVzdWx0IHVzaW5nIHRoZSBydWxlCisgKiAgICAgc2V0IGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgcnVsZSwgZXhjZXB0Ojx1bD4KKyAqICAgICAgIDxsaT5Zb3UgY2FuJ3QgaGF2ZSBhbiBlbXB0eSBzdWJzdGl0dXRpb24gZGVzY3JpcHRvciB3aXRoIGEgPT0gc3Vic3RpdHV0aW9uLjwvbGk+CisgKiAgICAgICA8bGk+SWYgeW91IG9taXQgdGhlIHN1YnN0aXR1dGlvbiBkZXNjcmlwdG9yIGluIGEgJmd0OyZndDsgc3Vic3RpdHV0aW9uIGluIGEgZnJhY3Rpb24gcnVsZSwKKyAqICAgICAgICAgZm9ybWF0IHRoZSByZXN1bHQgb25lIGRpZ2l0IGF0IGEgdGltZSB1c2luZyB0aGUgcnVsZSBzZXQgY29udGFpbmluZyB0aGUgY3VycmVudCBydWxlLjwvbGk+CisgKiAgICAgICA8bGk+SWYgeW91IG9taXQgdGhlIHN1YnN0aXR1dGlvbiBkZXNjcmlwdG9yIGluIGEgJmx0OyZsdDsgc3Vic3RpdHV0aW9uIGluIGEgcnVsZSBpbiBhCisgKiAgICAgICAgIGZyYWN0aW9uIHJ1bGUgc2V0LCBmb3JtYXQgdGhlIHJlc3VsdCB1c2luZyB0aGUgZGVmYXVsdCBydWxlIHNldCBmb3IgdGhpcyBmb3JtYXR0ZXIuPC9saT4KKyAqICAgICA8L3VsPgorICogICAgIDwvdGQ+CisgKiAgIDwvdHI+CisgKiA8L3RhYmxlPgorICoKKyAqIDxwPldoaXRlc3BhY2UgaXMgaWdub3JlZCBiZXR3ZWVuIGEgcnVsZSBzZXQgbmFtZSBhbmQgYSBydWxlIHNldCBib2R5LCBiZXR3ZWVuIGEgcnVsZQorICogZGVzY3JpcHRvciBhbmQgYSBydWxlIGJvZHksIG9yIGJldHdlZW4gcnVsZXMuIElmIGEgcnVsZSBib2R5IGJlZ2lucyB3aXRoIGFuIGFwb3N0cm9waGUsCisgKiB0aGUgYXBvc3Ryb3BoZSBpcyBpZ25vcmVkLCBidXQgYWxsIHRleHQgYWZ0ZXIgaXQgYmVjb21lcyBzaWduaWZpY2FudCAodGhpcyBpcyBob3cgeW91IGNhbgorICogaGF2ZSBhIHJ1bGUncyBydWxlIHRleHQgYmVnaW4gd2l0aCB3aGl0ZXNwYWNlKS4gVGhlcmUgaXMgbm8gZXNjYXBlIGZ1bmN0aW9uOiB0aGUgc2VtaWNvbG9uCisgKiBpcyBub3QgYWxsb3dlZCBpbiBydWxlIHNldCBuYW1lcyBvciBpbiBydWxlIHRleHQsIGFuZCB0aGUgY29sb24gaXMgbm90IGFsbG93ZWQgaW4gcnVsZSBzZXQKKyAqIG5hbWVzLiBUaGUgY2hhcmFjdGVycyBiZWdpbm5pbmcgYSBzdWJzdGl0dXRpb24gdG9rZW4gYXJlIGFsd2F5cyB0cmVhdGVkIGFzIHRoZSBiZWdpbm5pbmcKKyAqIG9mIGEgc3Vic3RpdHV0aW9uIHRva2VuLjwvcD4KKyAqCisgKiA8cD5TZWUgdGhlIHJlc291cmNlIGRhdGEgYW5kIHRoZSBkZW1vIHByb2dyYW0gZm9yIGFubm90YXRlZCBleGFtcGxlcyBvZiByZWFsIHJ1bGUgc2V0cworICogdXNpbmcgdGhlc2UgZmVhdHVyZXMuPC9wPgorICoKKyAqIEBhdXRob3IgUmljaGFyZCBHaWxsYW0KKyAqICRSQ1NmaWxlOiBSdWxlQmFzZWROdW1iZXJGb3JtYXQuamF2YSx2ICQgJFJldmlzaW9uOiAxLjExICQgJERhdGU6IDIwMDIvMTIvMDUgMDE6MjI6MjAgJAorICogQHNlZSBOdW1iZXJGb3JtYXQKKyAqIEBzZWUgRGVjaW1hbEZvcm1hdAorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBSdWxlQmFzZWROdW1iZXJGb3JtYXQgZXh0ZW5kcyBOdW1iZXJGb3JtYXQgeworCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIGNvbnN0YW50cworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIFB1dHMgYSBjb3B5cmlnaHQgaW4gdGhlIC5jbGFzcyBmaWxlCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodE5vdGljZQorICAgICAgICA9ICJDb3B5cmlnaHQgXHUwMGE5MTk5Ny0xOTk4IElCTSBDb3JwLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4iOworCisgICAgLyoqCisgICAgICogU2VsZWN0b3IgY29kZSB0aGF0IHRlbGxzIHRoZSBjb25zdHJ1Y3RvciB0byBjcmVhdGUgYSBzcGVsbG91dCBmb3JtYXR0ZXIKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTUEVMTE9VVCA9IDE7CisKKyAgICAvKioKKyAgICAgKiBTZWxlY3RvciBjb2RlIHRoYXQgdGVsbHMgdGhlIGNvbnN0cnVjdG9yIHRvIGNyZWF0ZSBhbiBvcmRpbmFsIGZvcm1hdHRlcgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE9SRElOQUwgPSAyOworCisgICAgLyoqCisgICAgICogU2VsZWN0b3IgY29kZSB0aGF0IHRlbGxzIHRoZSBjb25zdHJ1Y3RvciB0byBjcmVhdGUgYSBkdXJhdGlvbiBmb3JtYXR0ZXIKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBEVVJBVElPTiA9IDM7CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gZGF0YSBtZW1iZXJzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogVGhlIGZvcm1hdHRlcidzIHJ1bGUgc2V0cy4KKyAgICAgKi8KKyAgICBwcml2YXRlIE5GUnVsZVNldFtdIHJ1bGVTZXRzID0gbnVsbDsKKworICAgIC8qKgorICAgICAqIEEgcG9pbnRlciB0byB0aGUgZm9ybWF0dGVyJ3MgZGVmYXVsdCBydWxlIHNldC4gIFRoaXMgaXMgYWx3YXlzIGluY2x1ZGVkCisgICAgICogaW4gcnVsZVNldHMuCisgICAgICovCisgICAgcHJpdmF0ZSBORlJ1bGVTZXQgZGVmYXVsdFJ1bGVTZXQgPSBudWxsOworCisgICAgLyoqCisgICAgICogVGhlIGZvcm1hdHRlcidzIGxvY2FsZS4gIFRoaXMgaXMgdXNlZCB0byBjcmVhdGUgRGVjaW1hbEZvcm1hdFN5bWJvbHMgYW5kCisgICAgICogQ29sbGF0b3Igb2JqZWN0cy4KKyAgICAgKi8KKyAgICBwcml2YXRlIExvY2FsZSBsb2NhbGUgPSBudWxsOworCisgICAgLyoqCisgICAgICogQ29sbGF0b3IgdG8gYmUgdXNlZCBpbiBsZW5pZW50IHBhcnNpbmcuICBUaGlzIHZhcmlhYmxlIGlzIGxhenktZXZhbHVhdGVkOgorICAgICAqIHRoZSBjb2xsYXRvciBpcyBhY3R1YWxseSBjcmVhdGVkIHRoZSBmaXJzdCB0aW1lIHRoZSBjbGllbnQgZG9lcyBhIHBhcnNlCisgICAgICogd2l0aCBsZW5pZW50LXBhcnNlIG1vZGUgdHVybmVkIG9uLgorICAgICAqLworICAgIHByaXZhdGUgQ29sbGF0b3IgY29sbGF0b3IgPSBudWxsOworCisgICAgLyoqCisgICAgICogVGhlIERlY2ltYWxGb3JtYXRTeW1ib2xzIG9iamVjdCB0aGF0IGFueSBEZWNpbWFsRm9ybWF0IG9iamVjdHMgdGhpcworICAgICAqIGZvcm1hdHRlciB1c2VzIHNob3VsZCB1c2UuICBUaGlzIHZhcmlhYmxlIGlzIGxhenktZXZhbHVhdGVkOiBpdCBpc24ndAorICAgICAqIGZpbGxlZCBpbiBpZiB0aGUgcnVsZSBzZXQgbmV2ZXIgdXNlcyBhIERlY2ltYWxGb3JtYXQgcGF0dGVybi4KKyAgICAgKi8KKyAgICBwcml2YXRlIERlY2ltYWxGb3JtYXRTeW1ib2xzIGRlY2ltYWxGb3JtYXRTeW1ib2xzID0gbnVsbDsKKworICAgIC8qKgorICAgICAqIEZsYWcgc3BlY2lmeWluZyB3aGV0aGVyIGxlbmllbnQgcGFyc2UgbW9kZSBpcyBvbiBvciBvZmYuICBPZmYgYnkgZGVmYXVsdC4KKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gbGVuaWVudFBhcnNlID0gZmFsc2U7CisKKyAgICAvKioKKyAgICAgKiBJZiB0aGUgZGVzY3JpcHRpb24gc3BlY2lmaWVzIGxlbmllbnQtcGFyc2UgcnVsZXMsIHRoZXkncmUgc3RvcmVkIGhlcmUgdW50aWwKKyAgICAgKiB0aGUgY29sbGF0b3IgaXMgY3JlYXRlZC4KKyAgICAgKi8KKyAgICBwcml2YXRlIFN0cmluZyBsZW5pZW50UGFyc2VSdWxlcyA9IG51bGw7CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gY29uc3RydWN0b3JzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIFJ1bGVCYXNlZE51bWJlckZvcm1hdCB0aGF0IGJlaGF2ZXMgYWNjb3JkaW5nIHRvIHRoZSBkZXNjcmlwdGlvbgorICAgICAqIHBhc3NlZCBpbi4gIFRoZSBmb3JtYXR0ZXIgdXNlcyB0aGUgZGVmYXVsdCBsb2NhbGUuCisgICAgICogQHBhcmFtIGRlc2NyaXB0aW9uIEEgZGVzY3JpcHRpb24gb2YgdGhlIGZvcm1hdHRlcidzIGRlc2lyZWQgYmVoYXZpb3IuCisgICAgICogU2VlIHRoZSBjbGFzcyBkb2N1bWVudGF0aW9uIGZvciBhIGNvbXBsZXRlIGV4cGxhbmF0aW9uIG9mIHRoZSBkZXNjcmlwdGlvbgorICAgICAqIHN5bnRheC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgUnVsZUJhc2VkTnVtYmVyRm9ybWF0KFN0cmluZyBkZXNjcmlwdGlvbikgeworICAgICAgICBsb2NhbGUgPSBMb2NhbGUuZ2V0RGVmYXVsdCgpOworICAgICAgICBpbml0KGRlc2NyaXB0aW9uKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgUnVsZUJhc2VkTnVtYmVyRm9ybWF0IHRoYXQgYmVoYXZlcyBhY2NvcmRpbmcgdG8gdGhlIGRlc2NyaXB0aW9uCisgICAgICogcGFzc2VkIGluLiAgVGhlIGZvcm1hdHRlciB1c2VzIHRoZSBzcGVjaWZpZWQgbG9jYWxlIHRvIGRldGVybWluZSB0aGUKKyAgICAgKiBjaGFyYWN0ZXJzIHRvIHVzZSB3aGVuIGZvcm1hdHRpbmcgaW4gbnVtZXJhbHMsIGFuZCB0byBkZWZpbmUgZXF1aXZhbGVuY2VzCisgICAgICogZm9yIGxlbmllbnQgcGFyc2luZy4KKyAgICAgKiBAcGFyYW0gZGVzY3JpcHRpb24gQSBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybWF0dGVyJ3MgZGVzaXJlZCBiZWhhdmlvci4KKyAgICAgKiBTZWUgdGhlIGNsYXNzIGRvY3VtZW50YXRpb24gZm9yIGEgY29tcGxldGUgZXhwbGFuYXRpb24gb2YgdGhlIGRlc2NyaXB0aW9uCisgICAgICogc3ludGF4LgorICAgICAqIEBwYXJhbSBsb2NhbGUgQSBsb2NhbGUsIHdoaWNoIGdvdmVybnMgd2hpY2ggY2hhcmFjdGVycyBhcmUgdXNlZCBmb3IKKyAgICAgKiBmb3JtYXR0aW5nIHZhbHVlcyBpbiBudW1lcmFscywgYW5kIHdoaWNoIGNoYXJhY3RlcnMgYXJlIGVxdWl2YWxlbnQgaW4KKyAgICAgKiBsZW5pZW50IHBhcnNpbmcuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIFJ1bGVCYXNlZE51bWJlckZvcm1hdChTdHJpbmcgZGVzY3JpcHRpb24sIExvY2FsZSBsb2NhbGUpIHsKKyAgICAgICAgdGhpcy5sb2NhbGUgPSBsb2NhbGU7CisgICAgICAgIGluaXQoZGVzY3JpcHRpb24pOworICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSBSdWxlQmFzZWROdW1iZXJGb3JtYXQgZnJvbSBhIHByZWRlZmluZWQgZGVzY3JpcHRpb24uICBUaGUgc2VsZWN0b3IKKyAgICAgKiBjb2RlIGNob29zZWQgYW1vbmcgdGhyZWUgcG9zc2libGUgcHJlZGVmaW5lZCBmb3JtYXRzOiBzcGVsbG91dCwgb3JkaW5hbCwKKyAgICAgKiBhbmQgZHVyYXRpb24uCisgICAgICogQHBhcmFtIGxvY2FsZSBUaGUgbG9jYWxlIGZvciB0aGUgZm9ybWF0dGVyLgorICAgICAqIEBwYXJhbSBmb3JtYXQgQSBzZWxlY3RvciBjb2RlIHNwZWNpZnlpbmcgd2hpY2gga2luZCBvZiBmb3JtYXR0ZXIgdG8gY3JlYXRlIGZvciB0aGF0CisgICAgICogbG9jYWxlLiAgVGhlcmUgYXJlIHRocmVlIGxlZ2FsIHZhbHVlczogU1BFTExPVVQsIHdoaWNoIGNyZWF0ZXMgYSBmb3JtYXR0ZXIgdGhhdAorICAgICAqIHNwZWxscyBvdXQgYSB2YWx1ZSBpbiB3b3JkcyBpbiB0aGUgZGVzaXJlZCBsYW5ndWFnZSwgT1JESU5BTCwgd2hpY2ggYXR0YWNoZXMKKyAgICAgKiBhbiBvcmRpbmFsIHN1ZmZpeCBmcm9tIHRoZSBkZXNpcmVkIGxhbmd1YWdlIHRvIHRoZSBlbmQgb2YgYSBudW1iZXIgKGUuZy4gIjEyM3JkIiksCisgICAgICogYW5kIERVUkFUSU9OLCB3aGljaCBmb3JtYXRzIGEgZHVyYXRpb24gaW4gc2Vjb25kcyBhcyBob3VycywgbWludXRlcywgYW5kIHNlY29uZHMuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIFJ1bGVCYXNlZE51bWJlckZvcm1hdChMb2NhbGUgbG9jYWxlLCBpbnQgZm9ybWF0KSB7CisgICAgICAgIHRoaXMubG9jYWxlID0gbG9jYWxlOworCisgICAgICAgIC8vIGxvYWQgdXAgdGhlIHJlc291cmNlIGJ1bmRsZSBjb250YWluaW5nIHRoZSBkZXNjcmlwdGlvbgorICAgICAgICAvLyBmcm9tIHRoZSBzcGVjaWZpZWQgbG9jYWxlCisJLy8gICAgICAgIFJlc291cmNlQnVuZGxlIGJ1bmRsZSA9IElDVUxvY2FsZURhdGEuZ2V0UmVzb3VyY2VCdW5kbGUoIk51bWJlckZvcm1hdFJ1bGVzIiwgbG9jYWxlKTsKKyAgICAgICAgUmVzb3VyY2VCdW5kbGUgYnVuZGxlID0gSUNVTG9jYWxlRGF0YS5nZXRSZXNvdXJjZUJ1bmRsZSgiTG9jYWxlRWxlbWVudHMiLCBsb2NhbGUpOworICAgICAgICBTdHJpbmcgZGVzY3JpcHRpb24gPSAiIjsKKworICAgICAgICAvLyBwaWNrIGEgZGVzY3JpcHRpb24gZnJvbSB0aGUgcmVzb3VyY2UgYnVuZGxlIGJhc2VkIG9uIHRoZQorICAgICAgICAvLyBraW5kIG9mIGZvcm1hdHRlciB0aGUgdXNlciBhc2tlZCBmb3IKKyAgICAgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICAgICAgICAgIGNhc2UgU1BFTExPVVQ6CisgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPSBidW5kbGUuZ2V0U3RyaW5nKCJTcGVsbG91dFJ1bGVzIik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgT1JESU5BTDoKKyAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiA9IGJ1bmRsZS5nZXRTdHJpbmcoIk9yZGluYWxSdWxlcyIpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIERVUkFUSU9OOgorICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gYnVuZGxlLmdldFN0cmluZygiRHVyYXRpb25SdWxlcyIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgLy8gY29uc3RydWN0IHRoZSBmb3JtYXR0ZXIgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9uCisgICAgICAgIGluaXQoZGVzY3JpcHRpb24pOworICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSBSdWxlQmFzZWROdW1iZXJGb3JtYXQgZnJvbSBhIHByZWRlZmluZWQgZGVzY3JpcHRpb24uICBVc2VzIHRoZQorICAgICAqIGRlZmF1bHQgbG9jYWxlLgorICAgICAqIEBwYXJhbSBmb3JtYXQgQSBzZWxlY3RvciBjb2RlIHNwZWNpZnlpbmcgd2hpY2gga2luZCBvZiBmb3JtYXR0ZXIgdG8gY3JlYXRlLgorICAgICAqIFRoZXJlIGFyZSB0aHJlZSBsZWdhbCB2YWx1ZXM6IFNQRUxMT1VULCB3aGljaCBjcmVhdGVzIGEgZm9ybWF0dGVyIHRoYXQgc3BlbGxzCisgICAgICogb3V0IGEgdmFsdWUgaW4gd29yZHMgaW4gdGhlIGRlZmF1bHQgbG9jYWxlJ3MgbGFuZ3lhZ2UsIE9SRElOQUwsIHdoaWNoIGF0dGFjaGVzCisgICAgICogYW4gb3JkaW5hbCBzdWZmaXggZnJvbSB0aGUgZGVmYXVsdCBsb2NhbGUncyBsYW5ndWFnZSB0byBhIG51bWVyYWwsIGFuZAorICAgICAqIERVUkFUSU9OLCB3aGljaCBmb3JtYXRzIGEgZHVyYXRpb24gaW4gc2Vjb25kcyBhcyBob3VycywgbWludXRlcywgYW5kIHNlY29uZHMuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIFJ1bGVCYXNlZE51bWJlckZvcm1hdChpbnQgZm9ybWF0KSB7CisgICAgICAgIHRoaXMoTG9jYWxlLmdldERlZmF1bHQoKSwgZm9ybWF0KTsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gYm9pbGVycGxhdGUKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBEdXBsaWNhdGVzIHRoaXMgZm9ybWF0dGVyLgorICAgICAqIEByZXR1cm4gQSBSdWxlQmFzZWROdW1iZXJGb3JtYXQgdGhhdCBpcyBlcXVhbCB0byB0aGlzIG9uZS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0IGNsb25lKCkgeworICAgICAgICByZXR1cm4gc3VwZXIuY2xvbmUoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXN0cyB0d28gUnVsZUJhc2VkTnVtYmVyRm9ybWF0cyBmb3IgZXF1YWxpdHkuCisgICAgICogQHBhcmFtIHRoYXQgVGhlIGZvcm1hdHRlciB0byBjb21wYXJlIGFnYWluc3QgdGhpcyBvbmUuCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSB0d28gZm9ybWF0dGVycyBoYXZlIGlkZW50aWNhbCBiZWhhdmlvci4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IHRoYXQpIHsKKyAgICAgICAgLy8gaWYgdGhlIG90aGVyIG9iamVjdCBpc24ndCBhIFJ1bGVCYXNlZE51bWJlckZvcm1hdCwgdGhhdCdzCisgICAgICAgIC8vIGFsbCB3ZSBuZWVkIHRvIGtub3cKKyAgICAgICAgaWYgKCEodGhhdCBpbnN0YW5jZW9mIFJ1bGVCYXNlZE51bWJlckZvcm1hdCkpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIGNhc3QgdGhlIG90aGVyIG9iamVjdCdzIHBvaW50ZXIgdG8gYSBwb2ludGVyIHRvIGEKKyAgICAgICAgICAgIC8vIFJ1bGVCYXNlZE51bWJlckZvcm1hdAorICAgICAgICAgICAgUnVsZUJhc2VkTnVtYmVyRm9ybWF0IHRoYXQyID0gKFJ1bGVCYXNlZE51bWJlckZvcm1hdCl0aGF0OworCisgICAgICAgICAgICAvLyBjb21wYXJlIHRoZWlyIGxvY2FsZXMgYW5kIGxlbmllbnQtcGFyc2UgbW9kZXMKKyAgICAgICAgICAgIGlmICghbG9jYWxlLmVxdWFscyh0aGF0Mi5sb2NhbGUpIHx8IGxlbmllbnRQYXJzZSAhPSB0aGF0Mi5sZW5pZW50UGFyc2UpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIGlmIHRoYXQgc3VjY2VlZHMsIHRoZW4gY29tcGFyZSB0aGVpciBydWxlIHNldCBsaXN0cworICAgICAgICAgICAgaWYgKHJ1bGVTZXRzLmxlbmd0aCAhPSB0aGF0Mi5ydWxlU2V0cy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJ1bGVTZXRzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKCFydWxlU2V0c1tpXS5lcXVhbHModGhhdDIucnVsZVNldHNbaV0pKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogR2VuZXJhdGVzIGEgdGV4dHVhbCBkZXNjcmlwdGlvbiBvZiB0aGlzIGZvcm1hdHRlci4KKyAgICAgKiBAcmV0dXJuIGEgU3RyaW5nIGNvbnRhaW5pbmcgYSBydWxlIHNldCB0aGF0IHdpbGwgcHJvZHVjZSBhIFJ1bGVCYXNlZE51bWJlckZvcm1hdAorICAgICAqIHdpdGggaWRlbnRpY2FsIGJlaGF2aW9yIHRvIHRoaXMgb25lLiAgVGhpcyB3b24ndCBuZWNlc3NhcmlseSBiZSBpZGVudGljYWwKKyAgICAgKiB0byB0aGUgcnVsZSBzZXQgZGVzY3JpcHRpb24gdGhhdCB3YXMgb3JpZ2luYWxseSBwYXNzZWQgaW4sIGJ1dCB3aWxsIHByb2R1Y2UKKyAgICAgKiB0aGUgc2FtZSByZXN1bHQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKworICAgICAgICAvLyBhY2N1bXVsYXRlIHRoZSBkZXNjcmlwdGlvbnMgb2YgYWxsIHRoZSBydWxlIHNldHMgaW4gYQorICAgICAgICAvLyBTdHJpbmdCdWZmZXIsIHRoZW4gY2FzdCBpdCB0byBhIFN0cmluZyBhbmQgcmV0dXJuIGl0CisgICAgICAgIFN0cmluZ0J1ZmZlciByZXN1bHQgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcnVsZVNldHMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocnVsZVNldHNbaV0udG9TdHJpbmcoKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFdyaXRlcyB0aGlzIG9iamVjdCB0byBhIHN0cmVhbS4KKyAgICAgKiBAcGFyYW0gb3V0IFRoZSBzdHJlYW0gdG8gd3JpdGUgdG8uCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIHdyaXRlT2JqZWN0KGphdmEuaW8uT2JqZWN0T3V0cHV0U3RyZWFtIG91dCkKKyAgICAgICAgICAgICAgICAgICAgdGhyb3dzIGphdmEuaW8uSU9FeGNlcHRpb24geworICAgICAgICAvLyB3ZSBqdXN0IHdyaXRlIHRoZSB0ZXh0dWFsIGRlc2NyaXB0aW9uIHRvIHRoZSBzdHJlYW0sIHNvIHdlCisgICAgICAgIC8vIGhhdmUgYW4gaW1wbGVtZW50YXRpb24taW5kZXBlbmRlbnQgc3RyZWFtaW5nIGZvcm1hdAorICAgICAgICBvdXQud3JpdGVVVEYodGhpcy50b1N0cmluZygpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZWFkcyB0aGlzIG9iamVjdCBpbiBmcm9tIGEgc3RyZWFtLgorICAgICAqIEBwYXJhbSBpbiBUaGUgc3RyZWFtIHRvIHJlYWQgZnJvbS4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgcmVhZE9iamVjdChqYXZhLmlvLk9iamVjdElucHV0U3RyZWFtIGluKQorICAgICAgICAgICAgICAgICAgICB0aHJvd3MgamF2YS5pby5JT0V4Y2VwdGlvbiB7CisKKyAgICAgICAgLy8gcmVhZCB0aGUgZGVzY3JpcHRpb24gaW4gZnJvbSB0aGUgc3RyZWFtCisgICAgICAgIFN0cmluZyBkZXNjcmlwdGlvbiA9IGluLnJlYWRVVEYoKTsKKworICAgICAgICAvLyBidWlsZCBhIGJyYW5kLW5ldyBSdWxlQmFzZWROdW1iZXJGb3JtYXQgZnJvbSB0aGUgZGVzY3JpcHRpb24sCisgICAgICAgIC8vIHRoZW4gc3RlYWwgaXRzIHN1YnN0cnVjdHVyZS4gIFRoaXMgb2JqZWN0J3Mgc3Vic3RydWN0dXJlIGFuZAorICAgICAgICAvLyB0aGUgdGVtcG9yYXJ5IFJ1bGVCYXNlZE51bWJlckZvcm1hdCBkcm9wIG9uIHRoZSBmbG9vciBhbmQKKyAgICAgICAgLy8gZ2V0IHN3ZXB0IHVwIGJ5IHRoZSBnYXJiYWdlIGNvbGxlY3RvcgorICAgICAgICBSdWxlQmFzZWROdW1iZXJGb3JtYXQgdGVtcCA9IG5ldyBSdWxlQmFzZWROdW1iZXJGb3JtYXQoZGVzY3JpcHRpb24pOworICAgICAgICBydWxlU2V0cyA9IHRlbXAucnVsZVNldHM7CisgICAgICAgIGRlZmF1bHRSdWxlU2V0ID0gdGVtcC5kZWZhdWx0UnVsZVNldDsKKyAgICB9CisKKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBwdWJsaWMgQVBJIGZ1bmN0aW9ucworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSBsaXN0IG9mIHRoZSBuYW1lcyBvZiBhbGwgb2YgdGhpcyBmb3JtYXR0ZXIncyBwdWJsaWMgcnVsZSBzZXRzLgorICAgICAqIEByZXR1cm4gQSBsaXN0IG9mIHRoZSBuYW1lcyBvZiBhbGwgb2YgdGhpcyBmb3JtYXR0ZXIncyBwdWJsaWMgcnVsZSBzZXRzLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmdbXSBnZXRSdWxlU2V0TmFtZXMoKSB7CisgICAgICAgIC8vIHByZWZsaWdodCB0aGUgaXRlcmF0aW9uLCBjb3VudGluZyB0aGUgbnVtYmVyIG9mIHB1YmxpYyBydWxlIHNldHMKKyAgICAgICAgLy8gKHB1YmxpYyBydWxlIHNldHMgaGF2ZSBuYW1lcyB0aGF0IGJlZ2luIHdpdGggJSBpbnN0ZWFkIG9mICUlKQorICAgICAgICBpbnQgY291bnQgPSAwOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJ1bGVTZXRzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBpZiAoIXJ1bGVTZXRzW2ldLmdldE5hbWUoKS5zdGFydHNXaXRoKCIlJSIpKSB7CisgICAgICAgICAgICAgICAgKytjb3VudDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIHRoZW4gbmV3IHVwIGFuIGFycmF5IG9mIHRoZSBwcm9wZXIgc2l6ZSBhbmQgY29weSB0aGUgbmFtZXMgaW50byBpdAorICAgICAgICBTdHJpbmdbXSByZXN1bHQgPSBuZXcgU3RyaW5nW2NvdW50XTsKKyAgICAgICAgY291bnQgPSAwOworICAgICAgICBmb3IgKGludCBpID0gcnVsZVNldHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsKKyAgICAgICAgICAgIGlmICghcnVsZVNldHNbaV0uZ2V0TmFtZSgpLnN0YXJ0c1dpdGgoIiUlIikpIHsKKyAgICAgICAgICAgICAgICByZXN1bHRbY291bnQrK10gPSBydWxlU2V0c1tpXS5nZXROYW1lKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8qKgorICAgICAqIEZvcm1hdHMgdGhlIHNwZWNpZmllZCBudW1iZXIgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgcnVsZSBzZXQuCisgICAgICogQHBhcmFtIG51bWJlciBUaGUgbnVtYmVyIHRvIGZvcm1hdC4KKyAgICAgKiBAcGFyYW0gcnVsZVNldCBUaGUgbmFtZSBvZiB0aGUgcnVsZSBzZXQgdG8gZm9ybWF0IHRoZSBudW1iZXIgd2l0aC4KKyAgICAgKiBUaGlzIG11c3QgYmUgdGhlIG5hbWUgb2YgYSB2YWxpZCBwdWJsaWMgcnVsZSBzZXQgZm9yIHRoaXMgZm9ybWF0dGVyLgorICAgICAqIEByZXR1cm4gQSB0ZXh0dWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBudW1iZXIuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIFN0cmluZyBmb3JtYXQoZG91YmxlIG51bWJlciwgU3RyaW5nIHJ1bGVTZXQpIHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24geworICAgICAgICBpZiAocnVsZVNldC5zdGFydHNXaXRoKCIlJSIpKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJDYW4ndCB1c2UgaW50ZXJuYWwgcnVsZSBzZXQiKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZm9ybWF0KG51bWJlciwgZmluZFJ1bGVTZXQocnVsZVNldCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEZvcm1hdHMgdGhlIHNwZWNpZmllZCBudW1iZXIgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgcnVsZSBzZXQuCisgICAgICogKElmIHRoZSBzcGVjaWZpZWQgcnVsZSBzZXQgc3BlY2lmaWVzIGEgbWFzdGVyIFsieC4wIl0gcnVsZSwgdGhpcyBmdW5jdGlvbgorICAgICAqIGlnbm9yZXMgaXQuICBDb252ZXJ0IHRoZSBudW1iZXIgdG8gYSBkb3VibGUgZmlyc3QgaWYgeW91IG5lZCBpdC4pICBUaGlzCisgICAgICogZnVuY3Rpb24gcHJlc2VydmVzIGFsbCB0aGUgcHJlY2lzaW9uIGluIHRoZSBsb25nLS0gaXQgZG9lc24ndCBjb252ZXJ0IGl0CisgICAgICogdG8gYSBkb3VibGUuCisgICAgICogQHBhcmFtIG51bWJlciBUaGUgbnVtYmVyIHRvIGZvcm1hdC4KKyAgICAgKiBAcGFyYW0gcnVsZVNldCBUaGUgbmFtZSBvZiB0aGUgcnVsZSBzZXQgdG8gZm9ybWF0IHRoZSBudW1iZXIgd2l0aC4KKyAgICAgKiBUaGlzIG11c3QgYmUgdGhlIG5hbWUgb2YgYSB2YWxpZCBwdWJsaWMgcnVsZSBzZXQgZm9yIHRoaXMgZm9ybWF0dGVyLgorICAgICAqIEByZXR1cm4gQSB0ZXh0dWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBudW1iZXIuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIFN0cmluZyBmb3JtYXQobG9uZyBudW1iZXIsIFN0cmluZyBydWxlU2V0KSB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHsKKyAgICAgICAgaWYgKHJ1bGVTZXQuc3RhcnRzV2l0aCgiJSUiKSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiQ2FuJ3QgdXNlIGludGVybmFsIHJ1bGUgc2V0Iik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZvcm1hdChudW1iZXIsIGZpbmRSdWxlU2V0KHJ1bGVTZXQpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBGb3JtYXRzIHRoZSBzcGVjaWZpZWQgbnVtYmVyIHVzaW5nIHRoZSBmb3JtYXR0ZXIncyBkZWZhdWx0IHJ1bGUgc2V0LgorICAgICAqIChUaGUgZGVmYXVsdCBydWxlIHNldCBpcyB0aGUgbGFzdCBwdWJsaWMgcnVsZSBzZXQgZGVmaW5lZCBpbiB0aGUgZGVzY3JpcHRpb24uKQorICAgICAqIEBwYXJhbSBudW1iZXIgVGhlIG51bWJlciB0byBmb3JtYXQuCisgICAgICogQHBhcmFtIHRvQXBwZW5kVG8gQSBTdHJpbmdCdWZmZXIgdGhhdCB0aGUgcmVzdWx0IHNob3VsZCBiZSBhcHBlbmRlZCB0by4KKyAgICAgKiBAcGFyYW0gaWdub3JlIFRoaXMgZnVuY3Rpb24gZG9lc24ndCBleGFtaW5lIG9yIHVwZGF0ZSB0aGUgZmllbGQgcG9zaXRpb24uCisgICAgICogQHJldHVybiB0b0FwcGVuZFRvCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIFN0cmluZ0J1ZmZlciBmb3JtYXQoZG91YmxlIG51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdCdWZmZXIgdG9BcHBlbmRUbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFBvc2l0aW9uIGlnbm9yZSkgeworICAgICAgICAvLyB0aGlzIGlzIG9uZSBvZiB0aGUgaW5oZXJpdGVkIGZvcm1hdCgpIG1ldGhvZHMuICBTaW5jZSBpdCBkb2Vzbid0CisgICAgICAgIC8vIGhhdmUgYSB3YXkgdG8gc2VsZWN0IHRoZSBydWxlIHNldCB0byB1c2UsIGl0IGp1c3QgdXNlcyB0aGUKKyAgICAgICAgLy8gZGVmYXVsdCBvbmUKKyAgICAgICAgdG9BcHBlbmRUby5hcHBlbmQoZm9ybWF0KG51bWJlciwgZGVmYXVsdFJ1bGVTZXQpKTsKKyAgICAgICAgcmV0dXJuIHRvQXBwZW5kVG87CisgICAgfQorCisgICAgLyoqCisgICAgICogRm9ybWF0cyB0aGUgc3BlY2lmaWVkIG51bWJlciB1c2luZyB0aGUgZm9ybWF0dGVyJ3MgZGVmYXVsdCBydWxlIHNldC4KKyAgICAgKiAoVGhlIGRlZmF1bHQgcnVsZSBzZXQgaXMgdGhlIGxhc3QgcHVibGljIHJ1bGUgc2V0IGRlZmluZWQgaW4gdGhlIGRlc2NyaXB0aW9uLikKKyAgICAgKiAoSWYgdGhlIHNwZWNpZmllZCBydWxlIHNldCBzcGVjaWZpZXMgYSBtYXN0ZXIgWyJ4LjAiXSBydWxlLCB0aGlzIGZ1bmN0aW9uCisgICAgICogaWdub3JlcyBpdC4gIENvbnZlcnQgdGhlIG51bWJlciB0byBhIGRvdWJsZSBmaXJzdCBpZiB5b3UgbmVkIGl0LikgIFRoaXMKKyAgICAgKiBmdW5jdGlvbiBwcmVzZXJ2ZXMgYWxsIHRoZSBwcmVjaXNpb24gaW4gdGhlIGxvbmctLSBpdCBkb2Vzbid0IGNvbnZlcnQgaXQKKyAgICAgKiB0byBhIGRvdWJsZS4KKyAgICAgKiBAcGFyYW0gbnVtYmVyIFRoZSBudW1iZXIgdG8gZm9ybWF0LgorICAgICAqIEBwYXJhbSB0b0FwcGVuZFRvIEEgU3RyaW5nQnVmZmVyIHRoYXQgdGhlIHJlc3VsdCBzaG91bGQgYmUgYXBwZW5kZWQgdG8uCisgICAgICogQHBhcmFtIGlnbm9yZSBUaGlzIGZ1bmN0aW9uIGRvZXNuJ3QgZXhhbWluZSBvciB1cGRhdGUgdGhlIGZpZWxkIHBvc2l0aW9uLgorICAgICAqIEByZXR1cm4gdG9BcHBlbmRUbworICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmdCdWZmZXIgZm9ybWF0KGxvbmcgbnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ0J1ZmZlciB0b0FwcGVuZFRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkUG9zaXRpb24gaWdub3JlKSB7CisgICAgICAgIC8vIHRoaXMgaXMgb25lIG9mIHRoZSBpbmhlcml0ZWQgZm9ybWF0KCkgbWV0aG9kcy4gIFNpbmNlIGl0IGRvZXNuJ3QKKyAgICAgICAgLy8gaGF2ZSBhIHdheSB0byBzZWxlY3QgdGhlIHJ1bGUgc2V0IHRvIHVzZSwgaXQganVzdCB1c2VzIHRoZQorICAgICAgICAvLyBkZWZhdWx0IG9uZQorICAgICAgICB0b0FwcGVuZFRvLmFwcGVuZChmb3JtYXQobnVtYmVyLCBkZWZhdWx0UnVsZVNldCkpOworICAgICAgICByZXR1cm4gdG9BcHBlbmRUbzsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+CisgICAgICogSW1wbGVtZW50IGNvbS5pYm0uaWN1LnRleHQuTnVtYmVyRm9ybWF0OgorICAgICAqIEZvcm1hdCBhIEJpZ0ludGVnZXIuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIFN0cmluZ0J1ZmZlciBmb3JtYXQoQmlnSW50ZWdlciBudW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nQnVmZmVyIHRvQXBwZW5kVG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRQb3NpdGlvbiBwb3MpIHsKKyAgICAgICAgcmV0dXJuIGZvcm1hdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKG51bWJlciksIHRvQXBwZW5kVG8sIHBvcyk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIDxzdHJvbmc+PGZvbnQgZmFjZT1oZWx2ZXRpY2EgY29sb3I9cmVkPk5FVzwvZm9udD48L3N0cm9uZz4KKyAgICAgKiBJbXBsZW1lbnQgY29tLmlibS5pY3UudGV4dC5OdW1iZXJGb3JtYXQ6CisgICAgICogRm9ybWF0IGEgQmlnRGVjaW1hbC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nQnVmZmVyIGZvcm1hdChqYXZhLm1hdGguQmlnRGVjaW1hbCBudW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nQnVmZmVyIHRvQXBwZW5kVG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRQb3NpdGlvbiBwb3MpIHsKKyAgICAgICAgcmV0dXJuIGZvcm1hdChuZXcgY29tLmlibS5pY3UubWF0aC5CaWdEZWNpbWFsKG51bWJlciksIHRvQXBwZW5kVG8sIHBvcyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICAgICAqIEltcGxlbWVudCBjb20uaWJtLmljdS50ZXh0Lk51bWJlckZvcm1hdDoKKyAgICAgKiBGb3JtYXQgYSBCaWdEZWNpbWFsLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmdCdWZmZXIgZm9ybWF0KGNvbS5pYm0uaWN1Lm1hdGguQmlnRGVjaW1hbCBudW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nQnVmZmVyIHRvQXBwZW5kVG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRQb3NpdGlvbiBwb3MpIHsKKyAgICAgICAgLy8gVEVNUE9SQVJZOgorICAgICAgICByZXR1cm4gZm9ybWF0KG51bWJlci5kb3VibGVWYWx1ZSgpLCB0b0FwcGVuZFRvLCBwb3MpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFBhcnNlcyB0aGUgc3BlY2ZpZWQgc3RyaW5nLCBiZWdpbm5pbmcgYXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbiwgYWNjb3JkaW5nCisgICAgICogdG8gdGhpcyBmb3JtYXR0ZXIncyBydWxlcy4gIFRoaXMgd2lsbCBtYXRjaCB0aGUgc3RyaW5nIGFnYWluc3QgYWxsIG9mIHRoZQorICAgICAqIGZvcm1hdHRlcidzIHB1YmxpYyBydWxlIHNldHMgYW5kIHJldHVybiB0aGUgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGUgbG9uZ2VzdAorICAgICAqIHBhcnNlYWJsZSBzdWJzdHJpbmcuICBUaGlzIGZ1bmN0aW9uJ3MgYmVoYXZpb3IgaXMgYWZmZWN0ZWQgYnkgdGhlIGxlbmllbnQKKyAgICAgKiBwYXJzZSBtb2RlLgorICAgICAqIEBwYXJhbSB0ZXh0IFRoZSBzdHJpbmcgdG8gcGFyc2UKKyAgICAgKiBAcGFyYW0gcGFyc2VQb3NpdGlvbiBPbiBlbnRyeSwgY29udGFpbnMgdGhlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIKKyAgICAgKiBpbiAidGV4dCIgdG8gZXhhbWluZS4gIE9uIGV4aXQsIGhhcyBiZWVuIHVwZGF0ZWQgdG8gY29udGFpbiB0aGUgcG9zaXRpb24KKyAgICAgKiBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIGluICJ0ZXh0IiB0aGF0IHdhc24ndCBjb25zdW1lZCBieSB0aGUgcGFyc2UuCisgICAgICogQHJldHVybiBUaGUgbnVtYmVyIHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIHBhcnNlZCB0ZXh0LiAgVGhpcyB3aWxsIGJlIGFuCisgICAgICogaW5zdGFuY2Ugb2YgZWl0aGVyIExvbmcgb3IgRG91YmxlLCBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgcmVzdWx0IGhhcyBhCisgICAgICogZnJhY3Rpb25hbCBwYXJ0LgorICAgICAqIEBzZWUgI3NldExlbmllbnRQYXJzZU1vZGUKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgTnVtYmVyIHBhcnNlKFN0cmluZyB0ZXh0LCBQYXJzZVBvc2l0aW9uIHBhcnNlUG9zaXRpb24pIHsKKworICAgICAgICAvLyBwYXJzZVBvc2l0aW9uIHRlbGxzIHVzIHdoZXJlIHRvIHN0YXJ0IHBhcnNpbmcuICBXZSBjb3B5IHRoZQorICAgICAgICAvLyB0ZXh0IGluIHRoZSBzdHJpbmcgZnJvbSBoZXJlIHRvIHRoZSBlbmQgaW5ybyBhIG5ldyBzdHJpbmcsCisgICAgICAgIC8vIGFuZCBjcmVhdGUgYSBuZXcgUGFyc2VQb3NpdGlvbiBhbmQgcmVzdWx0IHZhcmlhYmxlIHRvIHVzZQorICAgICAgICAvLyBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSBwYXJzZSBvcGVyYXRpb24KKyAgICAgICAgU3RyaW5nIHdvcmtpbmdUZXh0ID0gdGV4dC5zdWJzdHJpbmcocGFyc2VQb3NpdGlvbi5nZXRJbmRleCgpKTsKKyAgICAgICAgUGFyc2VQb3NpdGlvbiB3b3JraW5nUG9zID0gbmV3IFBhcnNlUG9zaXRpb24oMCk7CisgICAgICAgIE51bWJlciB0ZW1wUmVzdWx0ID0gbnVsbDsKKworICAgICAgICAvLyBrZWVwIHRyYWNrIG9mIHRoZSBsYXJnZXN0IG51bWJlciBvZiBjaGFyYWN0ZXJzIGNvbnN1bWVkIGluCisgICAgICAgIC8vIHRoZSB2YXJpb3VzIHRyaWFscywgYW5kIHRoZSByZXN1bHQgdGhhdCBjb3JyZXNwb25kcyB0byBpdAorICAgICAgICBOdW1iZXIgcmVzdWx0ID0gbmV3IExvbmcoMCk7CisgICAgICAgIFBhcnNlUG9zaXRpb24gaGlnaFdhdGVyTWFyayA9IG5ldyBQYXJzZVBvc2l0aW9uKHdvcmtpbmdQb3MuZ2V0SW5kZXgoKSk7CisKKyAgICAgICAgLy8gaXRlcmF0ZSBvdmVyIHRoZSBwdWJsaWMgcnVsZSBzZXRzIChiZWdpbm5pbmcgd2l0aCB0aGUgZGVmYXVsdCBvbmUpCisgICAgICAgIC8vIGFuZCB0cnkgcGFyc2luZyB0aGUgdGV4dCB3aXRoIGVhY2ggb2YgdGhlbS4gIEtlZXAgdHJhY2sgb2Ygd2hpY2gKKyAgICAgICAgLy8gb25lIGNvbnN1bWVzIHRoZSBtb3N0IGNoYXJhY3RlcnM6IHRoYXQncyB0aGUgb25lIHRoYXQgZGV0ZXJtaW5lcworICAgICAgICAvLyB0aGUgcmVzdWx0IHdlIHJldHVybgorICAgICAgICBmb3IgKGludCBpID0gcnVsZVNldHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsKKyAgICAgICAgICAgIC8vIHNraXAgcHJpdmF0ZSBydWxlIHNldHMKKyAgICAgICAgICAgIGlmIChydWxlU2V0c1tpXS5nZXROYW1lKCkuc3RhcnRzV2l0aCgiJSUiKSkgeworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyB0cnkgcGFyc2luZyB0aGUgc3RyaW5nIHdpdGggdGhlIHJ1bGUgc2V0LiAgSWYgaXQgZ2V0cyBwYXN0IHRoZQorICAgICAgICAgICAgLy8gaGlnaC13YXRlciBtYXJrLCB1cGRhdGUgdGhlIGhpZ2gtd2F0ZXIgbWFyayBhbmQgdGhlIHJlc3VsdAorICAgICAgICAgICAgdGVtcFJlc3VsdCA9IHJ1bGVTZXRzW2ldLnBhcnNlKHdvcmtpbmdUZXh0LCB3b3JraW5nUG9zLCBEb3VibGUuTUFYX1ZBTFVFKTsKKyAgICAgICAgICAgIGlmICh3b3JraW5nUG9zLmdldEluZGV4KCkgPiBoaWdoV2F0ZXJNYXJrLmdldEluZGV4KCkpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSB0ZW1wUmVzdWx0OworICAgICAgICAgICAgICAgIGhpZ2hXYXRlck1hcmsuc2V0SW5kZXgod29ya2luZ1Bvcy5nZXRJbmRleCgpKTsKKyAgICAgICAgICAgIH0KKy8vIGNvbW1lbnRlZCBvdXQgYmVjYXVzZSB0aGlzIEFQSSBvbiBQYXJzZVBvc2l0aW9uIGRvZXNuJ3QgZXhpc3QgaW4gMS4xLngKKy8vICAgICAgICAgICAgaWYgKHdvcmtpbmdQb3MuZ2V0RXJyb3JJbmRleCgpID4gaGlnaFdhdGVyTWFyay5nZXRFcnJvckluZGV4KCkpIHsKKy8vICAgICAgICAgICAgICAgIGhpZ2hXYXRlck1hcmsuc2V0RXJyb3JJbmRleCh3b3JraW5nUG9zLmdldEVycm9ySW5kZXgoKSk7CisvLyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gaWYgd2UgbWFuYWdlIHRvIHVzZSB1cCBhbGwgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZywKKyAgICAgICAgICAgIC8vIHdlIGRvbid0IGhhdmUgdG8gdHJ5IGFueSBtb3JlIHJ1bGUgc2V0cworICAgICAgICAgICAgaWYgKGhpZ2hXYXRlck1hcmsuZ2V0SW5kZXgoKSA9PSB3b3JraW5nVGV4dC5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBvdGhlcndpc2UsIHJlc2V0IG91ciBpbnRlcm5hbCBwYXJzZSBwb3NpdGlvbiB0byB0aGUKKyAgICAgICAgICAgIC8vIGJlZ2lubmluZyBhbmQgdHJ5IGFnYWluIHdpdGggdGhlIG5leHQgcnVsZSBzZXQKKyAgICAgICAgICAgIHdvcmtpbmdQb3Muc2V0SW5kZXgoMCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBhZGQgdGhlIGhpZ2ggd2F0ZXIgbWFyayB0byBvdXIgb3JpZ2luYWwgcGFyc2UgcG9zaXRpb24gYW5kCisgICAgICAgIC8vIHJldHVybiB0aGUgcmVzdWx0CisgICAgICAgIHBhcnNlUG9zaXRpb24uc2V0SW5kZXgocGFyc2VQb3NpdGlvbi5nZXRJbmRleCgpICsgaGlnaFdhdGVyTWFyay5nZXRJbmRleCgpKTsKKy8vIGNvbW1lbnRlZCBvdXQgYmVjYXVzZSB0aGlzIEFQSSBvbiBQYXJzZVBvc2l0aW9uIGRvZXNuJ3QgZXhpc3QgaW4gMS4xLngKKy8vICAgICAgICBpZiAoaGlnaFdhdGVyTWFyay5nZXRJbmRleCgpID09IDApIHsKKy8vICAgICAgICAgICAgcGFyc2VQb3NpdGlvbi5zZXRFcnJvckluZGV4KHBhcnNlUG9zaXRpb24uZ2V0SW5kZXgoKSArIGhpZ2hXYXRlck1hcmsuZ2V0RXJyb3JJbmRleCgpKTsKKy8vICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogVHVybnMgbGVuaWVudCBwYXJzZSBtb2RlIG9uIGFuZCBvZmYuCisgICAgICoKKyAgICAgKiBXaGVuIGluIGxlbmllbnQgcGFyc2UgbW9kZSwgdGhlIGZvcm1hdHRlciB1c2VzIGEgQ29sbGF0b3IgZm9yIHBhcnNpbmcgdGhlIHRleHQuCisgICAgICogT25seSBwcmltYXJ5IGRpZmZlcmVuY2VzIGFyZSB0cmVhdGVkIGFzIHNpZ25pZmljYW50LiAgVGhpcyBtZWFucyB0aGF0IGNhc2UKKyAgICAgKiBkaWZmZXJlbmNlcywgYWNjZW50IGRpZmZlcmVuY2VzLCBhbHRlcm5hdGUgc3BlbGxpbmdzIG9mIHRoZSBzYW1lIGxldHRlcgorICAgICAqIChlLmcuLCBhZSBhbmQgYS11bWxhdXQgaW4gR2VybWFuKSwgaWdub3JhYmxlIGNoYXJhY3RlcnMsIGV0Yy4gYXJlIGlnbm9yZWQgaW4KKyAgICAgKiBtYXRjaGluZyB0aGUgdGV4dC4gIEluIG1hbnkgY2FzZXMsIG51bWVyYWxzIHdpbGwgYmUgYWNjZXB0ZWQgaW4gcGxhY2Ugb2Ygd29yZHMKKyAgICAgKiBvciBwaHJhc2VzIGFzIHdlbGwuCisgICAgICoKKyAgICAgKiBGb3IgZXhhbXBsZSwgYWxsIG9mIHRoZSBmb2xsb3dpbmcgd2lsbCBjb3JyZWN0bHkgcGFyc2UgYXMgMjU1IGluIEVuZ2xpc2ggaW4KKyAgICAgKiBsZW5pZW50LXBhcnNlIG1vZGU6CisgICAgICogPGJyPiJ0d28gaHVuZHJlZCBmaWZ0eS1maXZlIgorICAgICAqIDxicj4idHdvIGh1bmRyZWQgZmlmdHkgZml2ZSIKKyAgICAgKiA8YnI+IlRXTyBIVU5EUkVEIEZJRlRZLUZJVkUiCisgICAgICogPGJyPiJ0d29odW5kcmVkZmlmdHlmaXZlIgorICAgICAqIDxicj4iMiBodW5kcmVkIGZpZnR5LTUiCisgICAgICoKKyAgICAgKiBUaGUgQ29sbGF0b3IgdXNlZCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBsb2NhbGUgdGhhdCB3YXMKKyAgICAgKiBwYXNzZWQgdG8gdGhpcyBvYmplY3Qgb24gY29uc3RydWN0aW9uLiAgVGhlIGRlc2NyaXB0aW9uIHBhc3NlZCB0byB0aGlzIG9iamVjdAorICAgICAqIG9uIGNvbnN0cnVjdGlvbiBtYXkgc3VwcGx5IGFkZGl0aW9uYWwgY29sbGF0aW9uIHJ1bGVzIHRoYXQgYXJlIGFwcGVuZGVkIHRvIHRoZQorICAgICAqIGVuZCBvZiB0aGUgZGVmYXVsdCBjb2xsYXRvciBmb3IgdGhlIGxvY2FsZSwgZW5hYmxpbmcgYWRkaXRpb25hbCBlcXVpdmFsZW5jZXMKKyAgICAgKiAoc3VjaCBhcyBhZGRpbmcgbW9yZSBpZ25vcmFibGUgY2hhcmFjdGVycyBvciBwZXJtaXR0aW5nIHNwZWxsZWQtb3V0IHZlcnNpb24gb2YKKyAgICAgKiBzeW1ib2xzOyBzZWUgdGhlIGRlbW8gcHJvZ3JhbSBmb3IgZXhhbXBsZXMpLgorICAgICAqCisgICAgICogSXQncyBpbXBvcnRhbnQgdG8gZW1waGFzaXplIHRoYXQgZXZlbiBzdHJpY3QgcGFyc2luZyBpcyByZWxhdGl2ZWx5IGxlbmllbnQ6IGl0CisgICAgICogd2lsbCBhY2NlcHQgc29tZSB0ZXh0IHRoYXQgaXQgd29uJ3QgcHJvZHVjZSBhcyBvdXRwdXQuICBJbiBFbmdsaXNoLCBmb3IgZXhhbXBsZSwKKyAgICAgKiBpdCB3aWxsIGNvcnJlY3RseSBwYXJzZSAidHdvIGh1bmRyZWQgemVybyIgYW5kICJmaWZ0ZWVuIGh1bmRyZWQiLgorICAgICAqCisgICAgICogQHBhcmFtIGVuYWJsZWQgSWYgdHJ1ZSwgdHVybnMgbGVuaWVudC1wYXJzZSBtb2RlIG9uOyBpZiBmYWxzZSwgdHVybnMgaXQgb2ZmLgorICAgICAqIEBzZWUgamF2YS50ZXh0LlJ1bGVCYXNlZENvbGxhdG9yCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0TGVuaWVudFBhcnNlTW9kZShib29sZWFuIGVuYWJsZWQpIHsKKyAgICAgICAgbGVuaWVudFBhcnNlID0gZW5hYmxlZDsKKworICAgICAgICAvLyBpZiB3ZSdyZSBsZWF2aW5nIGxlbmllbnQtcGFyc2UgbW9kZSwgdGhyb3cgYXdheSB0aGUgY29sbGF0b3IKKyAgICAgICAgLy8gd2UndmUgYmVlbiB1c2luZworICAgICAgICBpZiAoIWVuYWJsZWQpIHsKKyAgICAgICAgICAgIGNvbGxhdG9yID0gbnVsbDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdHJ1ZSBpZiBsZW5pZW50LXBhcnNlIG1vZGUgaXMgdHVybmVkIG9uLiAgTGVuaWVudCBwYXJzaW5nIGlzIG9mZgorICAgICAqIGJ5IGRlZmF1bHQuCisgICAgICogQHJldHVybiB0cnVlIGlmIGxlbmllbnQtcGFyc2UgbW9kZSBpcyB0dXJuZWQgb24uCisgICAgICogQHNlZSAjc2V0TGVuaWVudFBhcnNlTW9kZQorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGxlbmllbnRQYXJzZUVuYWJsZWQoKSB7CisgICAgICAgIHJldHVybiBsZW5pZW50UGFyc2U7CisgICAgfQorCisgICAgLyoqCisgICAgICogT3ZlcnJpZGUgdGhlIGRlZmF1bHQgcnVsZSBzZXQgdG8gdXNlLiAgSWYgcnVsZVNldE5hbWUgaXMgbnVsbCwgcmVzZXQKKyAgICAgKiB0byB0aGUgaW5pdGlhbCBkZWZhdWx0IHJ1bGUgc2V0LgorICAgICAqIEBwYXJhbSBydWxlU2V0TmFtZSB0aGUgbmFtZSBvZiB0aGUgcnVsZSBzZXQsIG9yIG51bGwgdG8gcmVzZXQgdGhlIGluaXRpYWwgZGVmYXVsdC4KKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiBydWxlU2V0TmFtZSBpcyBub3QgdGhlIG5hbWUgb2YgYSBwdWJsaWMgcnVsZXNldC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXREZWZhdWx0UnVsZVNldChTdHJpbmcgcnVsZVNldE5hbWUpIHsKKyAgICAgICAgaWYgKHJ1bGVTZXROYW1lID09IG51bGwpIHsKKyAgICAgICAgICAgIGluaXREZWZhdWx0UnVsZVNldCgpOworICAgICAgICB9IGVsc2UgaWYgKHJ1bGVTZXROYW1lLnN0YXJ0c1dpdGgoIiUlIikpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImNhbm5vdCB1c2UgcHJpdmF0ZSBydWxlIHNldDogIiArIHJ1bGVTZXROYW1lKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRlZmF1bHRSdWxlU2V0ID0gZmluZFJ1bGVTZXQocnVsZVNldE5hbWUpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIHBhY2thZ2UtaW50ZXJuYWwgQVBJCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgZm9ybWF0dGVyJ3MgZGVmYXVsdCBydWxlIHNldC4gIFRoZSBkZWZhdWx0CisgICAgICogcnVsZSBzZXQgaXMgdGhlIGxhc3QgcHVibGljIHJ1bGUgc2V0IGluIHRoZSBkZXNjcmlwdGlvbiwgb3IgdGhlIG9uZQorICAgICAqIG1vc3QgcmVjZW50bHkgc2V0IGJ5IHNldERlZmF1bHRSdWxlU2V0LgorICAgICAqIEByZXR1cm4gVGhlIGZvcm1hdHRlcidzIGRlZmF1bHQgcnVsZSBzZXQuCisgICAgICovCisgICAgTkZSdWxlU2V0IGdldERlZmF1bHRSdWxlU2V0KCkgeworICAgICAgICByZXR1cm4gZGVmYXVsdFJ1bGVTZXQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgY29sbGF0b3IgdG8gdXNlIGZvciBsZW5pZW50IHBhcnNpbmcuICBUaGUgY29sbGF0b3IgaXMgbGF6aWx5IGNyZWF0ZWQ6CisgICAgICogdGhpcyBmdW5jdGlvbiBjcmVhdGVzIGl0IHRoZSBmaXJzdCB0aW1lIGl0J3MgY2FsbGVkLgorICAgICAqIEByZXR1cm4gVGhlIGNvbGxhdG9yIHRvIHVzZSBmb3IgbGVuaWVudCBwYXJzaW5nLCBvciBudWxsIGlmIGxlbmllbnQgcGFyc2luZworICAgICAqIGlzIHR1cm5lZCBvZmYuCisgICAgICovCisgICAgQ29sbGF0b3IgZ2V0Q29sbGF0b3IoKSB7CisgICAgICAgIC8vIGxhenktZXZhdWxhdGUgdGhlIGNvbGxhdG9yCisgICAgICAgIGlmIChjb2xsYXRvciA9PSBudWxsICYmIGxlbmllbnRQYXJzZSkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAvLyBjcmVhdGUgYSBkZWZhdWx0IGNvbGxhdG9yIGJhc2VkIG9uIHRoZSBmb3JtYXR0ZXIncyBsb2NhbGUsCisgICAgICAgICAgICAgICAgLy8gdGhlbiBwdWxsIG91dCB0aGF0IGNvbGxhdG9yJ3MgcnVsZXMsIGFwcGVuZCBhbnkgYWRkaXRpb25hbAorICAgICAgICAgICAgICAgIC8vIHJ1bGVzIHNwZWNpZmllZCBpbiB0aGUgZGVzY3JpcHRpb24sIGFuZCBjcmVhdGUgYSBfbmV3XworICAgICAgICAgICAgICAgIC8vIGNvbGxhdG9yIGJhc2VkIG9uIHRoZSBjb21iaW5haXRvbiBvZiB0aG9zZSBydWxlcworICAgICAgICAgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yIHRlbXAgPSAoUnVsZUJhc2VkQ29sbGF0b3IpY29sbGF0b3IuZ2V0SW5zdGFuY2UobG9jYWxlKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgcnVsZXMgPSB0ZW1wLmdldFJ1bGVzKCkgKyBsZW5pZW50UGFyc2VSdWxlczsKKworICAgICAgICAgICAgICAgIGNvbGxhdG9yID0gbmV3IFJ1bGVCYXNlZENvbGxhdG9yKHJ1bGVzKTsKKyAgICAgICAgICAgICAgICBjb2xsYXRvci5zZXREZWNvbXBvc2l0aW9uKENvbGxhdG9yLkNBTk9OSUNBTF9ERUNPTVBPU0lUSU9OKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIC8vIElmIHdlIGdldCBoZXJlLCBpdCBtZWFucyB3ZSBoYXZlIGEgbWFsZm9ybWVkIHNldCBvZgorICAgICAgICAgICAgICAgIC8vIGNvbGxhdGlvbiBydWxlcywgd2hpY2ggaG9wZWZ1bGx5IHdvbid0IGhhcHBlbgorICAgICAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CisgICAgICAgICAgICAgICAgY29sbGF0b3IgPSBudWxsOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gaWYgbGVuaWVudC1wYXJzZSBtb2RlIGlzIG9mZiwgdGhpcyB3aWxsIGJlIG51bGwKKyAgICAgICAgLy8gKHNlZSBzZXRMZW5pZW50UGFyc2VNb2RlKCkpCisgICAgICAgIHJldHVybiBjb2xsYXRvcjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBEZWNpbWFsRm9ybWF0U3ltYm9scyBvYmplY3QgdGhhdCBzaG91bGQgYmUgdXNlZCBieSBhbGwgRGVjaW1hbEZvcm1hdAorICAgICAqIGluc3RhbmNlcyBvd25lZCBieSB0aGlzIGZvcm1hdHRlci4gIFRoaXMgb2JqZWN0IGlzIGxhemlseSBjcmVhdGVkOiB0aGlzIGZ1bmN0aW9uCisgICAgICogY3JlYXRlcyBpdCB0aGUgZmlyc3QgdGltZSBpdCdzIGNhbGxlZC4KKyAgICAgKiBAcmV0dXJuIFRoZSBEZWNpbWFsRm9ybWF0U3ltYm9scyBvYmplY3QgdGhhdCBzaG91bGQgYmUgdXNlZCBieSBhbGwgRGVjaW1hbEZvcm1hdAorICAgICAqIGluc3RhbmNlcyBvd25lZCBieSB0aGlzIGZvcm1hdHRlci4KKyAgICAgKi8KKyAgICBEZWNpbWFsRm9ybWF0U3ltYm9scyBnZXREZWNpbWFsRm9ybWF0U3ltYm9scygpIHsKKyAgICAgICAgLy8gbGF6eS1ldmFsdWF0ZSB0aGUgRGVjaW1hbEZvcm1hdFN5bWJvbHMgb2JqZWN0LiAgVGhpcyBvYmplY3QKKyAgICAgICAgLy8gaXMgc2hhcmVkIGJ5IGFsbCBEZWNpbWFsRm9ybWF0IGluc3RhbmNlcyBiZWxvbmdpbmcgdG8gdGhpcworICAgICAgICAvLyBmb3JtYXR0ZXIKKyAgICAgICAgaWYgKGRlY2ltYWxGb3JtYXRTeW1ib2xzID09IG51bGwpIHsKKyAgICAgICAgICAgIGRlY2ltYWxGb3JtYXRTeW1ib2xzID0gbmV3IERlY2ltYWxGb3JtYXRTeW1ib2xzKGxvY2FsZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGRlY2ltYWxGb3JtYXRTeW1ib2xzOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBjb25zdHJ1Y3Rpb24gaW1wbGVtZW50YXRpb24KKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgZGVzY3JpcHRpb24gYW5kIHVzZXMgaXQgdG8gYnVpbGQgYWxsIG9mCisgICAgICogaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgdGhlIGZvcm1hdHRlciB1c2VzIHRvIGRvIGZvcm1hdHRpbmcKKyAgICAgKiBAcGFyYW0gZGVzY3JpcHRpb24gVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBmb3JtYXR0ZXIncyBkZXNpcmVkIGJlaGF2aW9yLgorICAgICAqIFRoaXMgaXMgZWl0aGVyIHBhc3NlZCBpbiBieSB0aGUgY2FsbGVyIG9yIGxvYWRlZCBvdXQgb2YgYSByZXNvdXJjZQorICAgICAqIGJ5IG9uZSBvZiB0aGUgY29uc3RydWN0b3JzLCBhbmQgaXMgaW4gdGhlIGRlc2NyaXB0aW9uIGZvcm1hdCBzcGVjaWZpZWQKKyAgICAgKiBpbiB0aGUgY2xhc3MgZG9jcy4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgaW5pdChTdHJpbmcgZGVzY3JpcHRpb24pIHsKKyAgICAgICAgLy8gc3RhcnQgYnkgc3RyaXBwaW5nIHRoZSB0cmFpbGluZyB3aGl0ZXNwYWNlIGZyb20gYWxsIHRoZSBydWxlcworICAgICAgICAvLyAodGhpcyBpcyBhbGwgdGhlIHdoaXRlc3BhY2UgZm9sbHdpbmcgZWFjaCBzZW1pY29sb24gaW4gdGhlCisgICAgICAgIC8vIGRlc2NyaXB0aW9uKS4gIFRoaXMgYWxsb3dzIHVzIHRvIGxvb2sgZm9yIHJ1bGUtc2V0IGJvdW5kYXJpZXMKKyAgICAgICAgLy8gYnkgc2VhcmNoaW5nIGZvciAiOyUiIHdpdGhvdXQgaGF2aW5nIHRvIHdvcnJ5IGFib3V0IHdoaXRlc3BhY2UKKyAgICAgICAgLy8gYmV0d2VlbiB0aGUgOyBhbmQgdGhlICUKKyAgICAgICAgZGVzY3JpcHRpb24gPSBzdHJpcFdoaXRlc3BhY2UoZGVzY3JpcHRpb24pOworCisgICAgICAgIC8vIGNoZWNrIHRvIHNlZSBpZiB0aGVyZSdzIGEgc2V0IG9mIGxlbmllbnQtcGFyc2UgcnVsZXMuICBJZiB0aGVyZQorICAgICAgICAvLyBpcywgcHVsbCB0aGVtIG91dCBpbnRvIG91ciB0ZW1wb3JhcnkgaG9sZGluZyBwbGFjZSBmb3IgdGhlbSwKKyAgICAgICAgLy8gYW5kIGRlbGV0ZSB0aGVtIGZyb20gdGhlIGRlc2NyaXB0aW9uIGJlZm9yZSB0aGUgcmVhbCBkZXNjaXB0aW9uLQorICAgICAgICAvLyBwYXJzaW5nIGNvZGUgc2VlcyB0aGVtCisgICAgICAgIGludCBscCA9IGRlc2NyaXB0aW9uLmluZGV4T2YoIiUlbGVuaWVudC1wYXJzZToiKTsKKyAgICAgICAgaWYgKGxwICE9IC0xKSB7CisgICAgICAgICAgICAvLyB3ZSd2ZSBnb3QgdG8gbWFrZSBzdXJlIHdlJ3JlIG5vdCBpbiB0aGUgbWlkZGxlIG9mIGEgcnVsZQorICAgICAgICAgICAgLy8gKHdoZXJlICIlJWxlbmllbnQtcGFyc2UiIHdvdWxkIGFjdHVhbGx5IGdldCB0cmVhdGVkIGFzCisgICAgICAgICAgICAvLyBydWxlIHRleHQpCisgICAgICAgICAgICBpZiAobHAgPT0gMCB8fCBkZXNjcmlwdGlvbi5jaGFyQXQobHAgLSAxKSA9PSAnOycpIHsKKyAgICAgICAgICAgICAgICAvLyBsb2NhdGUgdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIHRoZSBhY3R1YWwgY29sbGF0aW9uCisgICAgICAgICAgICAgICAgLy8gcnVsZXMgKHRoZXJlIG1heSBiZSB3aGl0ZXNwYWNlIGJldHdlZW4gdGhlIG5hbWUgYW5kCisgICAgICAgICAgICAgICAgLy8gdGhlIGZpcnN0IHRva2VuIGluIHRoZSBkZXNjcmlwdGlvbikKKyAgICAgICAgICAgICAgICBpbnQgbHBFbmQgPSBkZXNjcmlwdGlvbi5pbmRleE9mKCI7JSIsIGxwKTsKKworICAgICAgICAgICAgICAgIGlmIChscEVuZCA9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICBscEVuZCA9IGRlc2NyaXB0aW9uLmxlbmd0aCgpIC0gMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaW50IGxwU3RhcnQgPSBscCArICIlJWxlbmllbnQtcGFyc2U6Ii5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICB3aGlsZSAoVUNoYXJhY3RlclByb3BlcnR5LmlzUnVsZVdoaXRlU3BhY2UoZGVzY3JpcHRpb24uY2hhckF0KGxwU3RhcnQpKSkgeworICAgICAgICAgICAgICAgICAgICArK2xwU3RhcnQ7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gY29weSBvdXQgdGhlIGxlbmllbnQtcGFyc2UgcnVsZXMgYW5kIGRlbGV0ZSB0aGVtCisgICAgICAgICAgICAgICAgLy8gZnJvbSB0aGUgZGVzY3JpcHRpb24KKyAgICAgICAgICAgICAgICBsZW5pZW50UGFyc2VSdWxlcyA9IGRlc2NyaXB0aW9uLnN1YnN0cmluZyhscFN0YXJ0LCBscEVuZCk7CisKKyAgICAgICAgICAgICAgICBTdHJpbmdCdWZmZXIgdGVtcCA9IG5ldyBTdHJpbmdCdWZmZXIoZGVzY3JpcHRpb24uc3Vic3RyaW5nKDAsIGxwKSk7CisgICAgICAgICAgICAgICAgaWYgKGxwRW5kICsgMSA8IGRlc2NyaXB0aW9uLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgIHRlbXAuYXBwZW5kKGRlc2NyaXB0aW9uLnN1YnN0cmluZyhscEVuZCArIDEpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPSB0ZW1wLnRvU3RyaW5nKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBwcmUtZmxpZ2h0IHBhcnNpbmcgdGhlIGRlc2NyaXB0aW9uIGFuZCBjb3VudCB0aGUgbnVtYmVyIG9mCisgICAgICAgIC8vIHJ1bGUgc2V0cyAoIjslIiBtYXJrcyB0aGUgZW5kIG9mIG9uZSBydWxlIHNldCBhbmQgdGhlIGJlZ2lubmluZworICAgICAgICAvLyBvZiB0aGUgbmV4dCkKKyAgICAgICAgaW50IG51bVJ1bGVTZXRzID0gMDsKKyAgICAgICAgZm9yIChpbnQgcCA9IGRlc2NyaXB0aW9uLmluZGV4T2YoIjslIik7IHAgIT0gLTE7IHAgPSBkZXNjcmlwdGlvbi5pbmRleE9mKCI7JSIsIHApKSB7CisgICAgICAgICAgICArK251bVJ1bGVTZXRzOworICAgICAgICAgICAgKytwOworICAgICAgICB9CisgICAgICAgICsrbnVtUnVsZVNldHM7CisKKyAgICAgICAgLy8gb3VyIHJ1bGUgbGlzdCBpcyBhbiBhcnJheSBvZiB0aGUgYXBwcnByaWF0ZSBzaXplCisgICAgICAgIHJ1bGVTZXRzID0gbmV3IE5GUnVsZVNldFtudW1SdWxlU2V0c107CisKKyAgICAgICAgLy8gZGl2aWRlIHVwIHRoZSBkZXNjcmlwdGlvbnMgaW50byBpbmRpdmlkdWFsIHJ1bGUtc2V0IGRlc2NyaXB0aW9ucworICAgICAgICAvLyBhbmQgc3RvcmUgdGhlbSBpbiBhIHRlbXBvcmFyeSBhcnJheS4gIEF0IGVhY2ggc3RlcCwgd2UgYWxzbworICAgICAgICAvLyBuZXcgdXAgYSBydWxlIHNldCwgYnV0IGFsbCB0aGlzIGRvZXMgaXMgaW5pdGlhbGl6ZSBpdHMgbmFtZQorICAgICAgICAvLyBhbmQgcmVtb3ZlIGl0IGZyb20gaXRzIGRlc2NyaXB0aW9uLiAgV2UgY2FuJ3QgYWN0dWFsbHkgcGFyc2UKKyAgICAgICAgLy8gdGhlIHJlc3Qgb2YgdGhlIGRlc2NyaXB0aW9ucyBhbmQgZmluaXNoIGluaXRpYWxpemluZyBldmVyeXRoaW5nCisgICAgICAgIC8vIGJlY2F1c2Ugd2UgaGF2ZSB0byBrbm93IHRoZSBuYW1lcyBhbmQgbG9jYXRpb25zIG9mIGFsbCB0aGUgcnVsZQorICAgICAgICAvLyBzZXRzIGJlZm9yZSB3ZSBjYW4gYWN0dWFsbHkgc2V0IGV2ZXJ5dGhpbmcgdXAKKyAgICAgICAgU3RyaW5nW10gcnVsZVNldERlc2NyaXB0aW9ucyA9IG5ldyBTdHJpbmdbbnVtUnVsZVNldHNdOworCisgICAgICAgIGludCBjdXJSdWxlU2V0ID0gMDsKKyAgICAgICAgaW50IHN0YXJ0ID0gMDsKKyAgICAgICAgZm9yIChpbnQgcCA9IGRlc2NyaXB0aW9uLmluZGV4T2YoIjslIik7IHAgIT0gLTE7IHAgPSBkZXNjcmlwdGlvbi5pbmRleE9mKCI7JSIsIHN0YXJ0KSkgeworICAgICAgICAgICAgcnVsZVNldERlc2NyaXB0aW9uc1tjdXJSdWxlU2V0XSA9IGRlc2NyaXB0aW9uLnN1YnN0cmluZyhzdGFydCwgcCArIDEpOworICAgICAgICAgICAgcnVsZVNldHNbY3VyUnVsZVNldF0gPSBuZXcgTkZSdWxlU2V0KHJ1bGVTZXREZXNjcmlwdGlvbnMsIGN1clJ1bGVTZXQpOworICAgICAgICAgICAgKytjdXJSdWxlU2V0OworICAgICAgICAgICAgc3RhcnQgPSBwICsgMTsKKyAgICAgICAgfQorICAgICAgICBydWxlU2V0RGVzY3JpcHRpb25zW2N1clJ1bGVTZXRdID0gZGVzY3JpcHRpb24uc3Vic3RyaW5nKHN0YXJ0KTsKKyAgICAgICAgcnVsZVNldHNbY3VyUnVsZVNldF0gPSBuZXcgTkZSdWxlU2V0KHJ1bGVTZXREZXNjcmlwdGlvbnMsIGN1clJ1bGVTZXQpOworCisgICAgICAgIC8vIG5vdyB3ZSBjYW4gdGFrZSBub3RlIG9mIHRoZSBmb3JtYXR0ZXIncyBkZWZhdWx0IHJ1bGUgc2V0LCB3aGljaAorICAgICAgICAvLyBpcyB0aGUgbGFzdCBwdWJsaWMgcnVsZSBzZXQgaW4gdGhlIGRlc2NyaXB0aW9uIChpdCdzIHRoZSBsYXN0CisgICAgICAgIC8vIHJhdGhlciB0aGFuIHRoZSBmaXJzdCBzbyB0aGF0IGEgdXNlciBjYW4gY3JlYXRlIGEgbmV3IGZvcm1hdHRlcgorICAgICAgICAvLyBmcm9tIGFuIGV4aXN0aW5nIGZvcm1hdHRlciBhbmQgY2hhbmdlIGl0cyBkZWZhdWx0IGJldmhhaW9yIGp1c3QKKyAgICAgICAgLy8gYnkgYXBwZW5kaW5nIG1vcmUgcnVsZSBzZXRzIHRvIHRoZSBlbmQpCisgICAgICAgIGluaXREZWZhdWx0UnVsZVNldCgpOworCisgICAgICAgIC8vIGZpbmFsbHksIHdlIGNhbiBnbyBiYWNrIHRocm91Z2ggdGhlIHRlbXBvcmFyeSBkZXNjcmlwdGlvbnMKKyAgICAgICAgLy8gbGlzdCBhbmQgZmluaXNoIHNldGluZyB1cCB0aGUgc3Vic3RydWN0dXJlIChhbmQgd2UgdGhyb3cKKyAgICAgICAgLy8gYXdheSB0aGUgdGVtcG9yYXJ5IGRlc2NyaXB0aW9ucyBhcyB3ZSBnbykKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBydWxlU2V0cy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgcnVsZVNldHNbaV0ucGFyc2VSdWxlcyhydWxlU2V0RGVzY3JpcHRpb25zW2ldLCB0aGlzKTsKKyAgICAgICAgICAgIHJ1bGVTZXREZXNjcmlwdGlvbnNbaV0gPSBudWxsOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIGJ5IGluaXQoKSB0byBzdHJpcCB3aGl0ZXNwYWNlIGJldHdlZW4gcnVsZXMgKGkuZS4sCisgICAgICogYWZ0ZXIgc2VtaWNvbG9ucykuCisgICAgICogQHBhcmFtIGRlc2NyaXB0aW9uIFRoZSBmb3JtYXR0ZXIgZGVzY3JpcHRpb24KKyAgICAgKiBAcmV0dXJuIFRoZSBkZXNjcmlwdGlvbiB3aXRoIGFsbCB0aGUgd2hpdGVzcGFjZSB0aGF0IGZvbGxvd3Mgc2VtaWNvbG9ucworICAgICAqIHRha2VuIG91dC4KKyAgICAgKi8KKyAgICBwcml2YXRlIFN0cmluZyBzdHJpcFdoaXRlc3BhY2UoU3RyaW5nIGRlc2NyaXB0aW9uKSB7CisgICAgICAgIC8vIHNpbmNlIHdlIGRvbid0IGhhdmUgYSBtZXRob2QgdGhhdCBkZWxldGVzIGNoYXJhY3RlcnMgKHdoeT8hISkKKyAgICAgICAgLy8gY3JlYXRlIGEgbndlIFN0cmluZ0J1ZmZlciB0byBjb3B5IHRoZSB0ZXh0IGludG8KKyAgICAgICAgU3RyaW5nQnVmZmVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKworICAgICAgICAvLyBpdGVyYXRlIHRocm91Z2ggdGhlIGNoYXJhY3RlcnMuLi4KKyAgICAgICAgaW50IHN0YXJ0ID0gMDsKKyAgICAgICAgd2hpbGUgKHN0YXJ0ICE9IC0xICYmIHN0YXJ0IDwgZGVzY3JpcHRpb24ubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIC8vIHNlZWsgdG8gdGhlIGZpcnN0IG5vbi13aGl0ZXNwYWNlIGNoYXJhY3Rlci4uLgorICAgICAgICAgICAgd2hpbGUgKHN0YXJ0IDwgZGVzY3JpcHRpb24ubGVuZ3RoKCkKKyAgICAgICAgICAgICAgICAgICAmJiBVQ2hhcmFjdGVyUHJvcGVydHkuaXNSdWxlV2hpdGVTcGFjZShkZXNjcmlwdGlvbi5jaGFyQXQoc3RhcnQpKSkgeworICAgICAgICAgICAgICAgICsrc3RhcnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIGxvY2F0ZSB0aGUgbmV4dCBzZW1pY29sb24gaW4gdGhlIHRleHQgYW5kIGNvcHl0IGhlIHRleHQgZnJvbQorICAgICAgICAgICAgLy8gb3VyIGN1cnJlbnQgcG9zaXRpb24gdXAgdG8gdGhhdCBzZW1pY29sb24gaW50byB0aGUgcmVzdWx0CisgICAgICAgICAgICBpbnQgcDsKKyAgICAgICAgICAgIHAgPSBkZXNjcmlwdGlvbi5pbmRleE9mKCc7Jywgc3RhcnQpOworICAgICAgICAgICAgaWYgKHAgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAvLyBvciBpZiB3ZSBkb24ndCBmaW5kIGEgc2VtaWNvbG9uLCBqdXN0IGNvcHkgdGhlIHJlc3Qgb2YKKyAgICAgICAgICAgICAgICAvLyB0aGUgc3RyaW5nIGludG8gdGhlIHJlc3VsdAorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZGVzY3JpcHRpb24uc3Vic3RyaW5nKHN0YXJ0KSk7CisgICAgICAgICAgICAgICAgc3RhcnQgPSAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKHAgPCBkZXNjcmlwdGlvbi5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZGVzY3JpcHRpb24uc3Vic3RyaW5nKHN0YXJ0LCBwICsgMSkpOworICAgICAgICAgICAgICAgIHN0YXJ0ID0gcCArIDE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIHdoZW4gd2UgZ2V0IGhlcmUsIHdlJ3ZlIHNlZWtlZCBvZmYgdGhlIGVuZCBvZiB0aGUgc3JpbmcsIGFuZAorICAgICAgICAgICAgLy8gd2UgdGVybWluYXRlIHRoZSBsb29wICh3ZSBjb250aW51ZSB1bnRpbCAqc3RhcnQqIGlzIC0xIHJhdGhlcgorICAgICAgICAgICAgLy8gdGhhbiB1bnRpbCAqcCogaXMgLTEsIGJlY2F1c2Ugb3RoZXJ3aXNlIHdlJ2QgbWlzcyB0aGUgbGFzdAorICAgICAgICAgICAgLy8gcnVsZSBpbiB0aGUgZGVzY3JpcHRpb24pCisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBzdGFydCA9IC0xOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBPTkxZIERVUklORyBDT05TVFJVQ1RJT04gdG8gZmlsbCBpbiB0aGUKKyAgICAgKiBkZWZhdWx0UnVsZVNldCB2YXJpYWJsZSBvbmNlIHdlJ3ZlIHNldCB1cCBhbGwgdGhlIHJ1bGUgc2V0cy4KKyAgICAgKiBUaGUgZGVmYXVsdCBydWxlIHNldCBpcyB0aGUgbGFzdCBwdWJsaWMgcnVsZSBzZXQgaW4gdGhlIGRlc2NyaXB0aW9uLgorICAgICAqIChJdCdzIHRoZSBsYXN0IHJhdGhlciB0aGFuIHRoZSBmaXJzdCBzbyB0aGF0IGEgY2FsbGVyIGNhbiBhcHBlbmQKKyAgICAgKiB0ZXh0IHRvIHRoZSBlbmQgb2YgYW4gZXhpc3RpbmcgZm9ybWF0dGVyIGRlc2NyaXB0aW9uIHRvIGNoYW5nZSBpdHMKKyAgICAgKiBiZWhhdmlvci4pCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIGluaXREZWZhdWx0UnVsZVNldCgpIHsKKyAgICAgICAgLy8gc2VlayBiYWNrd2FyZCBmcm9tIHRoZSBlbmQgb2YgdGhlIGxpc3QgdW50aWwgd2UgcmVhY2ggYSBydWxlIHNldAorICAgICAgICAvLyB3aG9zZSBuYW1lIERPRVNOJ1QgYmVnaW4gd2l0aCAlJS4gIFRoYXQncyB0aGUgZGVmYXVsdCBydWxlIHNldAorICAgICAgICBmb3IgKGludCBpID0gcnVsZVNldHMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgICAgIGlmICghcnVsZVNldHNbaV0uZ2V0TmFtZSgpLnN0YXJ0c1dpdGgoIiUlIikpIHsKKyAgICAgICAgICAgICAgICBkZWZhdWx0UnVsZVNldCA9IHJ1bGVTZXRzW2ldOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0UnVsZVNldCA9IHJ1bGVTZXRzW3J1bGVTZXRzLmxlbmd0aCAtIDFdOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBmb3JtYXR0aW5nIGltcGxlbWVudGF0aW9uCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogQm90dGxlbmVjayB0aHJvdWdoIHdoaWNoIGFsbCB0aGUgcHVibGljIGZvcm1hdCgpIG1ldGhvZHMKKyAgICAgKiB0aGF0IHRha2UgYSBkb3VibGUgcGFzcy4gQnkgdGhlIHRpbWUgd2UgZ2V0IGhlcmUsIHdlIGtub3cKKyAgICAgKiB3aGljaCBydWxlIHNldCB3ZSdyZSB1c2luZyB0byBkbyB0aGUgZm9ybWF0dGluZy4KKyAgICAgKiBAcGFyYW0gbnVtYmVyIFRoZSBudW1iZXIgdG8gZm9ybWF0CisgICAgICogQHBhcmFtIHJ1bGVTZXQgVGhlIHJ1bGUgc2V0IHRvIHVzZSB0byBmb3JtYXQgdGhlIG51bWJlcgorICAgICAqIEByZXR1cm4gVGhlIHRleHQgdGhhdCByZXN1bHRlZCBmcm9tIGZvcm1hdHRpbmcgdGhlIG51bWJlcgorICAgICAqLworICAgIFN0cmluZyBmb3JtYXQoZG91YmxlIG51bWJlciwgTkZSdWxlU2V0IHJ1bGVTZXQpIHsKKyAgICAgICAgLy8gYWxsIEFQSSBmb3JtYXQoKSByb3V0aW5lcyB0aGF0IHRha2UgYSBkb3VibGUgdmVjdG9yIHRocm91Z2gKKyAgICAgICAgLy8gaGVyZS4gIENyZWF0ZSBhbiBlbXB0eSBzdHJpbmcgYnVmZmVyIHdoZXJlIHRoZSByZXN1bHQgd2lsbAorICAgICAgICAvLyBiZSBidWlsdCwgYW5kIHBhc3MgaXQgdG8gdGhlIHJ1bGUgc2V0IChhbG9uZyB3aXRoIGFuIGluc2VydGlvbgorICAgICAgICAvLyBwb3NpdGlvbiBvZiAwIGFuZCB0aGUgbnVtYmVyIGJlaW5nIGZvcm1hdHRlZCkgdG8gdGhlIHJ1bGUgc2V0CisgICAgICAgIC8vIGZvciBmb3JtYXR0aW5nCisgICAgICAgIFN0cmluZ0J1ZmZlciByZXN1bHQgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIHJ1bGVTZXQuZm9ybWF0KG51bWJlciwgcmVzdWx0LCAwKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEJvdHRsZW5lY2sgdGhyb3VnaCB3aGljaCBhbGwgdGhlIHB1YmxpYyBmb3JtYXQoKSBtZXRob2RzCisgICAgICogdGhhdCB0YWtlIGEgbG9uZyBwYXNzLiBCeSB0aGUgdGltZSB3ZSBnZXQgaGVyZSwgd2Uga25vdworICAgICAqIHdoaWNoIHJ1bGUgc2V0IHdlJ3JlIHVzaW5nIHRvIGRvIHRoZSBmb3JtYXR0aW5nLgorICAgICAqIEBwYXJhbSBudW1iZXIgVGhlIG51bWJlciB0byBmb3JtYXQKKyAgICAgKiBAcGFyYW0gcnVsZVNldCBUaGUgcnVsZSBzZXQgdG8gdXNlIHRvIGZvcm1hdCB0aGUgbnVtYmVyCisgICAgICogQHJldHVybiBUaGUgdGV4dCB0aGF0IHJlc3VsdGVkIGZyb20gZm9ybWF0dGluZyB0aGUgbnVtYmVyCisgICAgICovCisgICAgU3RyaW5nIGZvcm1hdChsb25nIG51bWJlciwgTkZSdWxlU2V0IHJ1bGVTZXQpIHsKKyAgICAgICAgLy8gYWxsIEFQSSBmb3JtYXQoKSByb3V0aW5lcyB0aGF0IHRha2UgYSBkb3VibGUgdmVjdG9yIHRocm91Z2gKKyAgICAgICAgLy8gaGVyZS4gIFdlIGhhdmUgdGhlc2UgdHdvIGlkZW50aWNhbCBmdW5jdGlvbnMtLSBvbmUgdGFraW5nIGEKKyAgICAgICAgLy8gZG91YmxlIGFuZCBvbmUgdGFraW5nIGEgbG9uZy0tIHRoZSBjb3VwbGUgZGlnaXRzIG9mIHByZWNpc2lvbgorICAgICAgICAvLyB0aGF0IGxvbmcgaGFzIGJ1dCBkb3VibGUgZG9lc24ndCAoYm90aCB0eXBlcyBhcmUgOCBieXRlcyBsb25nLAorICAgICAgICAvLyBidXQgZG91YmxlIGhhcyB0byBib3Jyb3cgc29tZSBvZiB0aGUgbWFudGlzc2EgYml0cyB0byBob2xkCisgICAgICAgIC8vIHRoZSBleHBvbmVudCkuCisgICAgICAgIC8vIENyZWF0ZSBhbiBlbXB0eSBzdHJpbmcgYnVmZmVyIHdoZXJlIHRoZSByZXN1bHQgd2lsbAorICAgICAgICAvLyBiZSBidWlsdCwgYW5kIHBhc3MgaXQgdG8gdGhlIHJ1bGUgc2V0IChhbG9uZyB3aXRoIGFuIGluc2VydGlvbgorICAgICAgICAvLyBwb3NpdGlvbiBvZiAwIGFuZCB0aGUgbnVtYmVyIGJlaW5nIGZvcm1hdHRlZCkgdG8gdGhlIHJ1bGUgc2V0CisgICAgICAgIC8vIGZvciBmb3JtYXR0aW5nCisgICAgICAgIFN0cmluZ0J1ZmZlciByZXN1bHQgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIHJ1bGVTZXQuZm9ybWF0KG51bWJlciwgcmVzdWx0LCAwKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIG5hbWVkIHJ1bGUgc2V0LiAgVGhyb3dzIGFuIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbgorICAgICAqIGlmIHRoaXMgZm9ybWF0dGVyIGRvZXNuJ3QgaGF2ZSBhIHJ1bGUgc2V0IHdpdGggdGhhdCBuYW1lLgorICAgICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBkZXNpcmVkIHJ1bGUgc2V0CisgICAgICogQHJldHVybiBUaGUgcnVsZSBzZXQgd2l0aCB0aGF0IG5hbWUKKyAgICAgKi8KKyAgICBORlJ1bGVTZXQgZmluZFJ1bGVTZXQoU3RyaW5nIG5hbWUpIHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24geworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJ1bGVTZXRzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBpZiAocnVsZVNldHNbaV0uZ2V0TmFtZSgpLmVxdWFscyhuYW1lKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBydWxlU2V0c1tpXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJObyBydWxlIHNldCBuYW1lZCAiICsgbmFtZSk7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvdGV4dC9SdWxlQmFzZWRUcmFuc2xpdGVyYXRvci5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45OTEyMzMwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3IuamF2YQpAQCAtMCwwICsxLDY0MSBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L3RleHQvUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3IuamF2YSx2ICQKKyAqICREYXRlOiAyMDAyLzEyLzAzIDE4OjU3OjM2ICQKKyAqICRSZXZpc2lvbjogMS41OCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UudGV4dDsKKworaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7CitpbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKK2ltcG9ydCBqYXZhLnRleHQuUGFyc2VQb3NpdGlvbjsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLlV0aWxpdHk7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5kYXRhLlJlc291cmNlUmVhZGVyOworCisvKioKKyAqIDxjb2RlPlJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yPC9jb2RlPiBpcyBhIHRyYW5zbGl0ZXJhdG9yCisgKiB0aGF0IHJlYWRzIGEgc2V0IG9mIHJ1bGVzIGluIG9yZGVyIHRvIGRldGVybWluZSBob3cgdG8gcGVyZm9ybQorICogdHJhbnNsYXRpb25zLiBSdWxlIHNldHMgYXJlIHN0b3JlZCBpbiByZXNvdXJjZSBidW5kbGVzIGluZGV4ZWQgYnkKKyAqIG5hbWUuIFJ1bGVzIHdpdGhpbiBhIHJ1bGUgc2V0IGFyZSBzZXBhcmF0ZWQgYnkgc2VtaWNvbG9ucyAoJzsnKS4KKyAqIFRvIGluY2x1ZGUgYSBsaXRlcmFsIHNlbWljb2xvbiwgcHJlZml4IGl0IHdpdGggYSBiYWNrc2xhc2ggKCdcJykuCisgKiBXaGl0ZXNwYWNlLCBhcyBkZWZpbmVkIGJ5IDxjb2RlPlVDaGFyYWN0ZXJQcm9wZXJ0eS5pc1J1bGVXaGl0ZVNwYWNlKCk8L2NvZGU+LAorICogaXMgaWdub3JlZC4gSWYgdGhlIGZpcnN0IG5vbi1ibGFuayBjaGFyYWN0ZXIgb24gYSBsaW5lIGlzICcjJywKKyAqIHRoZSBlbnRpcmUgbGluZSBpcyBpZ25vcmVkIGFzIGEgY29tbWVudC4gPC9wPgorICoKKyAqIDxwPkVhY2ggc2V0IG9mIHJ1bGVzIGNvbnNpc3RzIG9mIHR3byBncm91cHMsIG9uZSBmb3J3YXJkLCBhbmQgb25lCisgKiByZXZlcnNlLiBUaGlzIGlzIGEgY29udmVudGlvbiB0aGF0IGlzIG5vdCBlbmZvcmNlZDsgcnVsZXMgZm9yIG9uZQorICogZGlyZWN0aW9uIG1heSBiZSBvbWl0dGVkLCB3aXRoIHRoZSByZXN1bHQgdGhhdCB0cmFuc2xhdGlvbnMgaW4KKyAqIHRoYXQgZGlyZWN0aW9uIHdpbGwgbm90IG1vZGlmeSB0aGUgc291cmNlIHRleHQuIEluIGFkZGl0aW9uLAorICogYmlkaXJlY3Rpb25hbCBmb3J3YXJkLXJldmVyc2UgcnVsZXMgbWF5IGJlIHNwZWNpZmllZCBmb3IKKyAqIHN5bW1ldHJpY2FsIHRyYW5zZm9ybWF0aW9ucy48L3A+CisgKgorICogPHA+PGI+UnVsZSBzeW50YXg8L2I+IDwvcD4KKyAqCisgKiA8cD5SdWxlIHN0YXRlbWVudHMgdGFrZSBvbmUgb2YgdGhlIGZvbGxvd2luZyBmb3JtczogPC9wPgorICoKKyAqIDxkbD4KKyAqICAgICA8ZHQ+PGNvZGU+JGFsZWZtYWRkYT1cdTA2MjI7PC9jb2RlPjwvZHQ+CisgKiAgICAgPGRkPjxzdHJvbmc+VmFyaWFibGUgZGVmaW5pdGlvbi48L3N0cm9uZz4gVGhlIG5hbWUgb24gdGhlCisgKiAgICAgICAgIGxlZnQgaXMgYXNzaWduZWQgdGhlIHRleHQgb24gdGhlIHJpZ2h0LiBJbiB0aGlzIGV4YW1wbGUsCisgKiAgICAgICAgIGFmdGVyIHRoaXMgc3RhdGVtZW50LCBpbnN0YW5jZXMgb2YgdGhlIGxlZnQgaGFuZCBuYW1lLAorICogICAgICAgICAmcXVvdDs8Y29kZT4kYWxlZm1hZGRhPC9jb2RlPiZxdW90Oywgd2lsbCBiZSByZXBsYWNlZCBieQorICogICAgICAgICB0aGUgVW5pY29kZSBjaGFyYWN0ZXIgVSswNjIyLiBWYXJpYWJsZSBuYW1lcyBtdXN0IGJlZ2luCisgKiAgICAgICAgIHdpdGggYSBsZXR0ZXIgYW5kIGNvbnNpc3Qgb25seSBvZiBsZXR0ZXJzLCBkaWdpdHMsIGFuZAorICogICAgICAgICB1bmRlcnNjb3Jlcy4gQ2FzZSBpcyBzaWduaWZpY2FudC4gRHVwbGljYXRlIG5hbWVzIGNhdXNlCisgKiAgICAgICAgIGFuIGV4Y2VwdGlvbiB0byBiZSB0aHJvd24sIHRoYXQgaXMsIHZhcmlhYmxlcyBjYW5ub3QgYmUKKyAqICAgICAgICAgcmVkZWZpbmVkLiBUaGUgcmlnaHQgaGFuZCBzaWRlIG1heSBjb250YWluIHdlbGwtZm9ybWVkCisgKiAgICAgICAgIHRleHQgb2YgYW55IGxlbmd0aCwgaW5jbHVkaW5nIG5vIHRleHQgYXQgYWxsICgmcXVvdDs8Y29kZT4kZW1wdHk9OzwvY29kZT4mcXVvdDspLgorICogICAgICAgICBUaGUgcmlnaHQgaGFuZCBzaWRlIG1heSBjb250YWluIGVtYmVkZGVkIDxjb2RlPlVuaWNvZGVTZXQ8L2NvZGU+CisgKiAgICAgICAgIHBhdHRlcm5zLCBmb3IgZXhhbXBsZSwgJnF1b3Q7PGNvZGU+JHNvZnR2b3dlbD1bZWl5RUlZXTwvY29kZT4mcXVvdDsuPC9kZD4KKyAqICAgICA8ZGQ+Jm5ic3A7PC9kZD4KKyAqICAgICA8ZHQ+PGNvZGU+YWkmZ3Q7JGFsZWZtYWRkYTs8L2NvZGU+PC9kdD4KKyAqICAgICA8ZGQ+PHN0cm9uZz5Gb3J3YXJkIHRyYW5zbGF0aW9uIHJ1bGUuPC9zdHJvbmc+IFRoaXMgcnVsZQorICogICAgICAgICBzdGF0ZXMgdGhhdCB0aGUgc3RyaW5nIG9uIHRoZSBsZWZ0IHdpbGwgYmUgY2hhbmdlZCB0byB0aGUKKyAqICAgICAgICAgc3RyaW5nIG9uIHRoZSByaWdodCB3aGVuIHBlcmZvcm1pbmcgZm9yd2FyZAorICogICAgICAgICB0cmFuc2xpdGVyYXRpb24uPC9kZD4KKyAqICAgICA8ZHQ+Jm5ic3A7PC9kdD4KKyAqICAgICA8ZHQ+PGNvZGU+YWkmbHQ7JGFsZWZtYWRkYTs8L2NvZGU+PC9kdD4KKyAqICAgICA8ZGQ+PHN0cm9uZz5SZXZlcnNlIHRyYW5zbGF0aW9uIHJ1bGUuPC9zdHJvbmc+IFRoaXMgcnVsZQorICogICAgICAgICBzdGF0ZXMgdGhhdCB0aGUgc3RyaW5nIG9uIHRoZSByaWdodCB3aWxsIGJlIGNoYW5nZWQgdG8KKyAqICAgICAgICAgdGhlIHN0cmluZyBvbiB0aGUgbGVmdCB3aGVuIHBlcmZvcm1pbmcgcmV2ZXJzZQorICogICAgICAgICB0cmFuc2xpdGVyYXRpb24uPC9kZD4KKyAqIDwvZGw+CisgKgorICogPGRsPgorICogICAgIDxkdD48Y29kZT5haSZsdDsmZ3Q7JGFsZWZtYWRkYTs8L2NvZGU+PC9kdD4KKyAqICAgICA8ZGQ+PHN0cm9uZz5CaWRpcmVjdGlvbmFsIHRyYW5zbGF0aW9uIHJ1bGUuPC9zdHJvbmc+IFRoaXMKKyAqICAgICAgICAgcnVsZSBzdGF0ZXMgdGhhdCB0aGUgc3RyaW5nIG9uIHRoZSByaWdodCB3aWxsIGJlIGNoYW5nZWQKKyAqICAgICAgICAgdG8gdGhlIHN0cmluZyBvbiB0aGUgbGVmdCB3aGVuIHBlcmZvcm1pbmcgZm9yd2FyZAorICogICAgICAgICB0cmFuc2xpdGVyYXRpb24sIGFuZCB2aWNlIHZlcnNhIHdoZW4gcGVyZm9ybWluZyByZXZlcnNlCisgKiAgICAgICAgIHRyYW5zbGl0ZXJhdGlvbi48L2RkPgorICogPC9kbD4KKyAqCisgKiA8cD5UcmFuc2xhdGlvbiBydWxlcyBjb25zaXN0IG9mIGEgPGVtPm1hdGNoIHBhdHRlcm48L2VtPiBhbmQgYW4gPGVtPm91dHB1dAorICogc3RyaW5nPC9lbT4uIFRoZSBtYXRjaCBwYXR0ZXJuIGNvbnNpc3RzIG9mIGxpdGVyYWwgY2hhcmFjdGVycywKKyAqIG9wdGlvbmFsbHkgcHJlY2VkZWQgYnkgY29udGV4dCwgYW5kIG9wdGlvbmFsbHkgZm9sbG93ZWQgYnkKKyAqIGNvbnRleHQuIENvbnRleHQgY2hhcmFjdGVycywgbGlrZSBsaXRlcmFsIHBhdHRlcm4gY2hhcmFjdGVycywKKyAqIG11c3QgYmUgbWF0Y2hlZCBpbiB0aGUgdGV4dCBiZWluZyB0cmFuc2xpdGVyYXRlZC4gSG93ZXZlciwgdW5saWtlCisgKiBsaXRlcmFsIHBhdHRlcm4gY2hhcmFjdGVycywgdGhleSBhcmUgbm90IHJlcGxhY2VkIGJ5IHRoZSBvdXRwdXQKKyAqIHRleHQuIEZvciBleGFtcGxlLCB0aGUgcGF0dGVybiAmcXVvdDs8Y29kZT5hYmN7ZGVmfTwvY29kZT4mcXVvdDsKKyAqIGluZGljYXRlcyB0aGUgY2hhcmFjdGVycyAmcXVvdDs8Y29kZT5kZWY8L2NvZGU+JnF1b3Q7IG11c3QgYmUKKyAqIHByZWNlZGVkIGJ5ICZxdW90Ozxjb2RlPmFiYzwvY29kZT4mcXVvdDsgZm9yIGEgc3VjY2Vzc2Z1bCBtYXRjaC4KKyAqIElmIHRoZXJlIGlzIGEgc3VjY2Vzc2Z1bCBtYXRjaCwgJnF1b3Q7PGNvZGU+ZGVmPC9jb2RlPiZxdW90OyB3aWxsCisgKiBiZSByZXBsYWNlZCwgYnV0IG5vdCAmcXVvdDs8Y29kZT5hYmM8L2NvZGU+JnF1b3Q7LiBUaGUgZmluYWwgJzxjb2RlPn08L2NvZGU+JworICogaXMgb3B0aW9uYWwsIHNvICZxdW90Ozxjb2RlPmFiY3tkZWY8L2NvZGU+JnF1b3Q7IGlzIGVxdWl2YWxlbnQgdG8KKyAqICZxdW90Ozxjb2RlPmFiY3tkZWZ9PC9jb2RlPiZxdW90Oy4gQW5vdGhlciBleGFtcGxlIGlzICZxdW90Ozxjb2RlPnsxMjN9NDU2PC9jb2RlPiZxdW90OworICogKG9yICZxdW90Ozxjb2RlPjEyM300NTY8L2NvZGU+JnF1b3Q7KSBpbiB3aGljaCB0aGUgbGl0ZXJhbAorICogcGF0dGVybiAmcXVvdDs8Y29kZT4xMjM8L2NvZGU+JnF1b3Q7IG11c3QgYmUgZm9sbG93ZWQgYnkgJnF1b3Q7PGNvZGU+NDU2PC9jb2RlPiZxdW90Oy4KKyAqIDwvcD4KKyAqCisgKiA8cD5UaGUgb3V0cHV0IHN0cmluZyBvZiBhIGZvcndhcmQgb3IgcmV2ZXJzZSBydWxlIGNvbnNpc3RzIG9mCisgKiBjaGFyYWN0ZXJzIHRvIHJlcGxhY2UgdGhlIGxpdGVyYWwgcGF0dGVybiBjaGFyYWN0ZXJzLiBJZiB0aGUKKyAqIG91dHB1dCBzdHJpbmcgY29udGFpbnMgdGhlIGNoYXJhY3RlciAnPGNvZGU+fDwvY29kZT4nLCB0aGlzIGlzCisgKiB0YWtlbiB0byBpbmRpY2F0ZSB0aGUgbG9jYXRpb24gb2YgdGhlIDxlbT5jdXJzb3I8L2VtPiBhZnRlcgorICogcmVwbGFjZW1lbnQuIFRoZSBjdXJzb3IgaXMgdGhlIHBvaW50IGluIHRoZSB0ZXh0IGF0IHdoaWNoIHRoZQorICogbmV4dCByZXBsYWNlbWVudCwgaWYgYW55LCB3aWxsIGJlIGFwcGxpZWQuIFRoZSBjdXJzb3IgaXMgdXN1YWxseQorICogcGxhY2VkIHdpdGhpbiB0aGUgcmVwbGFjZW1lbnQgdGV4dDsgaG93ZXZlciwgaXQgY2FuIGFjdHVhbGx5IGJlCisgKiBwbGFjZWQgaW50byB0aGUgcHJlY2VuZGluZyBvciBmb2xsb3dpbmcgY29udGV4dCBieSB1c2luZyB0aGUKKyAqIHNwZWNpYWwgY2hhcmFjdGVyICc8Y29kZT5APC9jb2RlPicuIEV4YW1wbGVzOjwvcD4KKyAqCisgKiA8YmxvY2txdW90ZT4KKyAqICAgICA8cD48Y29kZT5hIHtmb299IHogJmd0OyB8IEAgYmFyOyAjIGZvbyAtJmd0OyBiYXIsIG1vdmUgY3Vyc29yCisgKiAgICAgYmVmb3JlIGE8YnI+CisgKiAgICAge2Zvb30geHl6ICZndDsgYmFyIEBAfDsgIyZuYnNwO2ZvbyAtJmd0OyBiYXIsIGN1cnNvciBiZXR3ZWVuCisgKiAgICAgeSBhbmQgejwvY29kZT48L3A+CisgKiA8L2Jsb2NrcXVvdGU+CisgKgorICogPHA+PGI+VW5pY29kZVNldDwvYj48L3A+CisgKgorICogPHA+PGNvZGU+VW5pY29kZVNldDwvY29kZT4gcGF0dGVybnMgbWF5IGFwcGVhciBhbnl3aGVyZSB0aGF0CisgKiBtYWtlcyBzZW5zZS4gVGhleSBtYXkgYXBwZWFyIGluIHZhcmlhYmxlIGRlZmluaXRpb25zLgorICogQ29udHJhcml3aXNlLCA8Y29kZT5Vbmljb2RlU2V0PC9jb2RlPiBwYXR0ZXJucyBtYXkgdGhlbXNlbHZlcworICogY29udGFpbiB2YXJpYWJsZSByZWZlcmVuY2VzLCBzdWNoIGFzICZxdW90Ozxjb2RlPiRhPVthLXpdOyRub3RfYT1bXiRhXTwvY29kZT4mcXVvdDssCisgKiBvciAmcXVvdDs8Y29kZT4kcmFuZ2U9YS16OyRsbD1bJHJhbmdlXTwvY29kZT4mcXVvdDsuPC9wPgorICoKKyAqIDxwPjxjb2RlPlVuaWNvZGVTZXQ8L2NvZGU+IHBhdHRlcm5zIG1heSBhbHNvIGJlIGVtYmVkZGVkIGRpcmVjdGx5CisgKiBpbnRvIHJ1bGUgc3RyaW5ncy4gVGh1cywgdGhlIGZvbGxvd2luZyB0d28gcnVsZXMgYXJlIGVxdWl2YWxlbnQ6PC9wPgorICoKKyAqIDxibG9ja3F1b3RlPgorICogICAgIDxwPjxjb2RlPiR2b3dlbD1bYWVpb3VdOyAkdm93ZWwmZ3Q7JyonOyAjIE9uZSB3YXkgdG8gZG8gdGhpczxicj4KKyAqICAgICBbYWVpb3VdJmd0OycqJzsKKyAqICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsjCisgKiAgICAgQW5vdGhlciB3YXk8L2NvZGU+PC9wPgorICogPC9ibG9ja3F1b3RlPgorICoKKyAqIDxwPlNlZSB7QGxpbmsgVW5pY29kZVNldH0gZm9yIG1vcmUgZG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZXMuPC9wPgorICoKKyAqIDxwPjxiPlNlZ21lbnRzPC9iPjwvcD4KKyAqCisgKiA8cD5TZWdtZW50cyBvZiB0aGUgaW5wdXQgc3RyaW5nIGNhbiBiZSBtYXRjaGVkIGFuZCBjb3BpZWQgdG8gdGhlCisgKiBvdXRwdXQgc3RyaW5nLiBUaGlzIG1ha2VzIGNlcnRhaW4gc2V0cyBvZiBydWxlcyBzaW1wbGVyIGFuZCBtb3JlCisgKiBnZW5lcmFsLCBhbmQgbWFrZXMgcmVvcmRlcmluZyBwb3NzaWJsZS4gRm9yIGV4YW1wbGU6PC9wPgorICoKKyAqIDxibG9ja3F1b3RlPgorICogICAgIDxwPjxjb2RlPihbYS16XSkgJmd0OyAkMSAkMTsKKyAqICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsjCisgKiAgICAgZG91YmxlIGxvd2VyY2FzZSBsZXR0ZXJzPGJyPgorICogICAgIChbOkx1Ol0pIChbOkxsOl0pICZndDsgJDIgJDE7ICMgcmV2ZXJzZSBvcmRlciBvZiBMdS1MbCBwYWlyczwvY29kZT48L3A+CisgKiA8L2Jsb2NrcXVvdGU+CisgKgorICogPHA+VGhlIHNlZ21lbnQgb2YgdGhlIGlucHV0IHN0cmluZyB0byBiZSBjb3BpZWQgaXMgZGVsaW1pdGVkIGJ5CisgKiAmcXVvdDs8Y29kZT4oPC9jb2RlPiZxdW90OyBhbmQgJnF1b3Q7PGNvZGU+KTwvY29kZT4mcXVvdDsuIFVwIHRvCisgKiBuaW5lIHNlZ21lbnRzIG1heSBiZSBkZWZpbmVkLiBTZWdtZW50cyBtYXkgbm90IG92ZXJsYXAuIEluIHRoZQorICogb3V0cHV0IHN0cmluZywgJnF1b3Q7PGNvZGU+JDE8L2NvZGU+JnF1b3Q7IHRocm91Z2ggJnF1b3Q7PGNvZGU+JDk8L2NvZGU+JnF1b3Q7CisgKiByZXByZXNlbnQgdGhlIGlucHV0IHN0cmluZyBzZWdtZW50cywgaW4gbGVmdC10by1yaWdodCBvcmRlciBvZgorICogZGVmaW5pdGlvbi48L3A+CisgKgorICogPHA+PGI+QW5jaG9yczwvYj48L3A+CisgKgorICogPHA+UGF0dGVybnMgY2FuIGJlIGFuY2hvcmVkIHRvIHRoZSBiZWdpbm5pbmcgb3IgdGhlIGVuZCBvZiB0aGUgdGV4dC4gVGhpcyBpcyBkb25lIHdpdGggdGhlCisgKiBzcGVjaWFsIGNoYXJhY3RlcnMgJzxjb2RlPl48L2NvZGU+JyBhbmQgJzxjb2RlPiQ8L2NvZGU+Jy4gRm9yIGV4YW1wbGU6PC9wPgorICoKKyAqIDxibG9ja3F1b3RlPgorICogICA8cD48Y29kZT5eIGEmbmJzcDsmbmJzcDsgJmd0OyAnQkVHX0EnOyAmbmJzcDsmbmJzcDsjIG1hdGNoICdhJyBhdCBzdGFydCBvZiB0ZXh0PGJyPgorICogICAmbmJzcDsgYSZuYnNwOyZuYnNwOyAmZ3Q7ICdBJzsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgIyBtYXRjaCBvdGhlciBpbnN0YW5jZXMKKyAqICAgb2YgJ2EnPGJyPgorICogICAmbmJzcDsgeiAkICZndDsgJ0VORF9aJzsgJm5ic3A7Jm5ic3A7IyBtYXRjaCAneicgYXQgZW5kIG9mIHRleHQ8YnI+CisgKiAgICZuYnNwOyB6Jm5ic3A7Jm5ic3A7ICZndDsgJ1onOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAjIG1hdGNoIG90aGVyIGluc3RhbmNlcworICogICBvZiAneic8L2NvZGU+PC9wPgorICogPC9ibG9ja3F1b3RlPgorICoKKyAqIDxwPkl0IGlzIGFsc28gcG9zc2libGUgdG8gbWF0Y2ggdGhlIGJlZ2lubmluZyBvciB0aGUgZW5kIG9mIHRoZSB0ZXh0IHVzaW5nIGEgPGNvZGU+VW5pY29kZVNldDwvY29kZT4uCisgKiBUaGlzIGlzIGRvbmUgYnkgaW5jbHVkaW5nIGEgdmlydHVhbCBhbmNob3IgY2hhcmFjdGVyICc8Y29kZT4kPC9jb2RlPicgYXQgdGhlIGVuZCBvZiB0aGUKKyAqIHNldCBwYXR0ZXJuLiBBbHRob3VnaCB0aGlzIGlzIHVzdWFsbHkgdGhlIG1hdGNoIGNoYWZhY3RlciBmb3IgdGhlIGVuZCBhbmNob3IsIHRoZSBzZXQgd2lsbAorICogbWF0Y2ggZWl0aGVyIHRoZSBiZWdpbm5pbmcgb3IgdGhlIGVuZCBvZiB0aGUgdGV4dCwgZGVwZW5kaW5nIG9uIGl0cyBwbGFjZW1lbnQuIEZvcgorICogZXhhbXBsZTo8L3A+CisgKgorICogPGJsb2NrcXVvdGU+CisgKiAgIDxwPjxjb2RlPiR4ID0gW2EteiRdOyAmbmJzcDsmbmJzcDsjIG1hdGNoICdhJyB0aHJvdWdoICd6JyBPUiBhbmNob3I8YnI+CisgKiAgICR4IDEmbmJzcDsmbmJzcDsmbmJzcDsgJmd0OyAyOyZuYnNwOyZuYnNwOyAjIG1hdGNoICcxJyBhZnRlciBhLXogb3IgYXQgdGhlIHN0YXJ0PGJyPgorICogICAmbmJzcDsmbmJzcDsgMyAkeCAmZ3Q7IDQ7ICZuYnNwOyZuYnNwOyMgbWF0Y2ggJzMnIGJlZm9yZSBhLXogb3IgYXQgdGhlIGVuZDwvY29kZT48L3A+CisgKiA8L2Jsb2NrcXVvdGU+CisgKgorICogPHA+PGI+RXhhbXBsZTwvYj4gPC9wPgorICoKKyAqIDxwPlRoZSBmb2xsb3dpbmcgZXhhbXBsZSBydWxlcyBpbGx1c3RyYXRlIG1hbnkgb2YgdGhlIGZlYXR1cmVzIG9mCisgKiB0aGUgcnVsZSBsYW5ndWFnZS4gPC9wPgorICoKKyAqIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSI0Ij4KKyAqICAgICA8dHI+CisgKiAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+UnVsZSAxLjwvdGQ+CisgKiAgICAgICAgIDx0ZCB2YWxpZ249InRvcCIgbm93cmFwPjxjb2RlPmFiY3tkZWZ9Jmd0O3h8eTwvY29kZT48L3RkPgorICogICAgIDwvdHI+CisgKiAgICAgPHRyPgorICogICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlJ1bGUgMi48L3RkPgorICogICAgICAgICA8dGQgdmFsaWduPSJ0b3AiIG5vd3JhcD48Y29kZT54eXomZ3Q7cjwvY29kZT48L3RkPgorICogICAgIDwvdHI+CisgKiAgICAgPHRyPgorICogICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlJ1bGUgMy48L3RkPgorICogICAgICAgICA8dGQgdmFsaWduPSJ0b3AiIG5vd3JhcD48Y29kZT55eiZndDtxPC9jb2RlPjwvdGQ+CisgKiAgICAgPC90cj4KKyAqIDwvdGFibGU+CisgKgorICogPHA+QXBwbHlpbmcgdGhlc2UgcnVsZXMgdG8gdGhlIHN0cmluZyAmcXVvdDs8Y29kZT5hZGVmYWJjZGVmejwvY29kZT4mcXVvdDsKKyAqIHlpZWxkcyB0aGUgZm9sbG93aW5nIHJlc3VsdHM6IDwvcD4KKyAqCisgKiA8dGFibGUgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iNCI+CisgKiAgICAgPHRyPgorICogICAgICAgICA8dGQgdmFsaWduPSJ0b3AiIG5vd3JhcD48Y29kZT58YWRlZmFiY2RlZno8L2NvZGU+PC90ZD4KKyAqICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5Jbml0aWFsIHN0YXRlLCBubyBydWxlcyBtYXRjaC4gQWR2YW5jZQorICogICAgICAgICBjdXJzb3IuPC90ZD4KKyAqICAgICA8L3RyPgorICogICAgIDx0cj4KKyAqICAgICAgICAgPHRkIHZhbGlnbj0idG9wIiBub3dyYXA+PGNvZGU+YXxkZWZhYmNkZWZ6PC9jb2RlPjwvdGQ+CisgKiAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+U3RpbGwgbm8gbWF0Y2guIFJ1bGUgMSBkb2VzIG5vdCBtYXRjaAorICogICAgICAgICBiZWNhdXNlIHRoZSBwcmVjZWRpbmcgY29udGV4dCBpcyBub3QgcHJlc2VudC48L3RkPgorICogICAgIDwvdHI+CisgKiAgICAgPHRyPgorICogICAgICAgICA8dGQgdmFsaWduPSJ0b3AiIG5vd3JhcD48Y29kZT5hZHxlZmFiY2RlZno8L2NvZGU+PC90ZD4KKyAqICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5TdGlsbCBubyBtYXRjaC4gS2VlcCBhZHZhbmNpbmcgdW50aWwKKyAqICAgICAgICAgdGhlcmUgaXMgYSBtYXRjaC4uLjwvdGQ+CisgKiAgICAgPC90cj4KKyAqICAgICA8dHI+CisgKiAgICAgICAgIDx0ZCB2YWxpZ249InRvcCIgbm93cmFwPjxjb2RlPmFkZXxmYWJjZGVmejwvY29kZT48L3RkPgorICogICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPi4uLjwvdGQ+CisgKiAgICAgPC90cj4KKyAqICAgICA8dHI+CisgKiAgICAgICAgIDx0ZCB2YWxpZ249InRvcCIgbm93cmFwPjxjb2RlPmFkZWZ8YWJjZGVmejwvY29kZT48L3RkPgorICogICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPi4uLjwvdGQ+CisgKiAgICAgPC90cj4KKyAqICAgICA8dHI+CisgKiAgICAgICAgIDx0ZCB2YWxpZ249InRvcCIgbm93cmFwPjxjb2RlPmFkZWZhfGJjZGVmejwvY29kZT48L3RkPgorICogICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPi4uLjwvdGQ+CisgKiAgICAgPC90cj4KKyAqICAgICA8dHI+CisgKiAgICAgICAgIDx0ZCB2YWxpZ249InRvcCIgbm93cmFwPjxjb2RlPmFkZWZhYnxjZGVmejwvY29kZT48L3RkPgorICogICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPi4uLjwvdGQ+CisgKiAgICAgPC90cj4KKyAqICAgICA8dHI+CisgKiAgICAgICAgIDx0ZCB2YWxpZ249InRvcCIgbm93cmFwPjxjb2RlPmFkZWZhYmN8ZGVmejwvY29kZT48L3RkPgorICogICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlJ1bGUgMSBtYXRjaGVzOyByZXBsYWNlICZxdW90Ozxjb2RlPmRlZjwvY29kZT4mcXVvdDsKKyAqICAgICAgICAgd2l0aCAmcXVvdDs8Y29kZT54eTwvY29kZT4mcXVvdDsgYW5kIGJhY2sgdXAgdGhlIGN1cnNvcgorICogICAgICAgICB0byBiZWZvcmUgdGhlICc8Y29kZT55PC9jb2RlPicuPC90ZD4KKyAqICAgICA8L3RyPgorICogICAgIDx0cj4KKyAqICAgICAgICAgPHRkIHZhbGlnbj0idG9wIiBub3dyYXA+PGNvZGU+YWRlZmFiY3h8eXo8L2NvZGU+PC90ZD4KKyAqICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5BbHRob3VnaCAmcXVvdDs8Y29kZT54eXo8L2NvZGU+JnF1b3Q7IGlzCisgKiAgICAgICAgIHByZXNlbnQsIHJ1bGUgMiBkb2VzIG5vdCBtYXRjaCBiZWNhdXNlIHRoZSBjdXJzb3IgaXMKKyAqICAgICAgICAgYmVmb3JlIHRoZSAnPGNvZGU+eTwvY29kZT4nLCBub3QgYmVmb3JlIHRoZSAnPGNvZGU+eDwvY29kZT4nLgorICogICAgICAgICBSdWxlIDMgZG9lcyBtYXRjaC4gUmVwbGFjZSAmcXVvdDs8Y29kZT55ejwvY29kZT4mcXVvdDsKKyAqICAgICAgICAgd2l0aCAmcXVvdDs8Y29kZT5xPC9jb2RlPiZxdW90Oy48L3RkPgorICogICAgIDwvdHI+CisgKiAgICAgPHRyPgorICogICAgICAgICA8dGQgdmFsaWduPSJ0b3AiIG5vd3JhcD48Y29kZT5hZGVmYWJjeHF8PC9jb2RlPjwvdGQ+CisgKiAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIGN1cnNvciBpcyBhdCB0aGUgZW5kOworICogICAgICAgICB0cmFuc2xpdGVyYXRpb24gaXMgY29tcGxldGUuPC90ZD4KKyAqICAgICA8L3RyPgorICogPC90YWJsZT4KKyAqCisgKiA8cD5UaGUgb3JkZXIgb2YgcnVsZXMgaXMgc2lnbmlmaWNhbnQuIElmIG11bHRpcGxlIHJ1bGVzIG1heSBtYXRjaAorICogYXQgc29tZSBwb2ludCwgdGhlIGZpcnN0IG1hdGNoaW5nIHJ1bGUgaXMgYXBwbGllZC4gPC9wPgorICoKKyAqIDxwPkZvcndhcmQgYW5kIHJldmVyc2UgcnVsZXMgbWF5IGhhdmUgYW4gZW1wdHkgb3V0cHV0IHN0cmluZy4KKyAqIE90aGVyd2lzZSwgYW4gZW1wdHkgbGVmdCBvciByaWdodCBoYW5kIHNpZGUgb2YgYW55IHN0YXRlbWVudCBpcyBhCisgKiBzeW50YXggZXJyb3IuIDwvcD4KKyAqCisgKiA8cD5TaW5nbGUgcXVvdGVzIGFyZSB1c2VkIHRvIHF1b3RlIGFueSBjaGFyYWN0ZXIgb3RoZXIgdGhhbiBhCisgKiBkaWdpdCBvciBsZXR0ZXIuIFRvIHNwZWNpZnkgYSBzaW5nbGUgcXVvdGUgaXRzZWxmLCBpbnNpZGUgb3IKKyAqIG91dHNpZGUgb2YgcXVvdGVzLCB1c2UgdHdvIHNpbmdsZSBxdW90ZXMgaW4gYSByb3cuIEZvciBleGFtcGxlLAorICogdGhlIHJ1bGUgJnF1b3Q7PGNvZGU+JyZndDsnJmd0O28nJ2Nsb2NrPC9jb2RlPiZxdW90OyBjaGFuZ2VzIHRoZQorICogc3RyaW5nICZxdW90Ozxjb2RlPiZndDs8L2NvZGU+JnF1b3Q7IHRvIHRoZSBzdHJpbmcgJnF1b3Q7PGNvZGU+bydjbG9jazwvY29kZT4mcXVvdDsuCisgKiA8L3A+CisgKgorICogPHA+PGI+Tm90ZXM8L2I+IDwvcD4KKyAqCisgKiA8cD5XaGlsZSBhIFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yIGlzIGJlaW5nIGJ1aWx0LCBpdCBjaGVja3MgdGhhdAorICogdGhlIHJ1bGVzIGFyZSBhZGRlZCBpbiBwcm9wZXIgb3JkZXIuIEZvciBleGFtcGxlLCBpZiB0aGUgcnVsZQorICogJnF1b3Q7YSZndDt4JnF1b3Q7IGlzIGZvbGxvd2VkIGJ5IHRoZSBydWxlICZxdW90O2FiJmd0O3kmcXVvdDssCisgKiB0aGVuIHRoZSBzZWNvbmQgcnVsZSB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbi4gVGhlIHJlYXNvbiBpcyB0aGF0CisgKiB0aGUgc2Vjb25kIHJ1bGUgY2FuIG5ldmVyIGJlIHRyaWdnZXJlZCwgc2luY2UgdGhlIGZpcnN0IHJ1bGUKKyAqIGFsd2F5cyBtYXRjaGVzIGFueXRoaW5nIGl0IG1hdGNoZXMuIEluIG90aGVyIHdvcmRzLCB0aGUgZmlyc3QKKyAqIHJ1bGUgPGVtPm1hc2tzPC9lbT4gdGhlIHNlY29uZCBydWxlLiA8L3A+CisgKgorICogPHA+Q29weXJpZ2h0IChjKSBJQk0gQ29ycG9yYXRpb24gMTk5OS0yMDAwLiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvcD4KKyAqCisgKiBAYXV0aG9yIEFsYW4gTGl1CisgKiBAZGVwcmVjYXRlZCBJQ1UgMi40IFRoaXMgY2xhc3MgdG8gYmVjb21lIHByaXZhdGUgYWZ0ZXIgMjAwMy0xMi0wMS4gVXNlIHRoZSBUcmFuc2xpdGVyYXRvciBmYWN0b3J5IG1ldGhvZHMuCisgKi8KK3B1YmxpYyBjbGFzcyBSdWxlQmFzZWRUcmFuc2xpdGVyYXRvciBleHRlbmRzIFRyYW5zbGl0ZXJhdG9yIHsKKworICAgIHByaXZhdGUgRGF0YSBkYXRhOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICJcdTAwQTkgSUJNIENvcnBvcmF0aW9uIDE5OTkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIjsKKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSBuZXcgdHJhbnNsaXRlcmF0b3IgZnJvbSB0aGUgZ2l2ZW4gcnVsZXMuCisgICAgICogQHBhcmFtIHJ1bGVzIHJ1bGVzLCBzZXBhcmF0ZWQgYnkgJzsnCisgICAgICogQHBhcmFtIGRpcmVjdGlvbiBlaXRoZXIgRk9SV0FSRCBvciBSRVZFUlNFLgorICAgICAqIEBleGNlcHRpb24gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIHJ1bGVzIGFyZSBtYWxmb3JtZWQKKyAgICAgKiBvciBkaXJlY3Rpb24gaXMgaW52YWxpZC4KKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40IFRoaXMgY2xhc3MgdG8gYmVjb21lIHByaXZhdGUgYWZ0ZXIgMjAwMy0xMi0wMS4gVXNlIHRoZSBUcmFuc2xpdGVyYXRvciBmYWN0b3J5IG1ldGhvZHMuCisgICAgICovCisgICAgcHVibGljIFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yKFN0cmluZyBJRCwgU3RyaW5nIHJ1bGVzLCBpbnQgZGlyZWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmljb2RlRmlsdGVyIGZpbHRlcikgeworICAgICAgICBzdXBlcihJRCwgZmlsdGVyKTsKKyAgICAgICAgaWYgKGRpcmVjdGlvbiAhPSBGT1JXQVJEICYmIGRpcmVjdGlvbiAhPSBSRVZFUlNFKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIGRpcmVjdGlvbiIpOworICAgICAgICB9CisKKyAgICAgICAgVHJhbnNsaXRlcmF0b3JQYXJzZXIgcGFyc2VyID0gbmV3IFRyYW5zbGl0ZXJhdG9yUGFyc2VyKCk7CisgICAgICAgIHBhcnNlci5wYXJzZShydWxlcywgZGlyZWN0aW9uKTsKKyAgICAgICAgaWYgKHBhcnNlci5pZEJsb2NrLmxlbmd0aCgpICE9IDAgfHwKKyAgICAgICAgICAgIHBhcnNlci5jb21wb3VuZEZpbHRlciAhPSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCI6OklEIGJsb2NrcyBpbGxlZ2FsIGluIFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yIGNvbnN0cnVjdG9yIik7CisgICAgICAgIH0KKworICAgICAgICBkYXRhID0gcGFyc2VyLmRhdGE7CisgICAgICAgIHNldE1heGltdW1Db250ZXh0TGVuZ3RoKGRhdGEucnVsZVNldC5nZXRNYXhpbXVtQ29udGV4dExlbmd0aCgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IHRyYW5zbGl0ZXJhdG9yIGZyb20gdGhlIGdpdmVuIHJ1bGVzIGluIHRoZQorICAgICAqIDxjb2RlPkZPUldBUkQ8L2NvZGU+IGRpcmVjdGlvbi4KKyAgICAgKiBAcGFyYW0gcnVsZXMgcnVsZXMsIHNlcGFyYXRlZCBieSAnOycKKyAgICAgKiBAZXhjZXB0aW9uIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiBydWxlcyBhcmUgbWFsZm9ybWVkCisgICAgICogb3IgZGlyZWN0aW9uIGlzIGludmFsaWQuCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNCBUaGlzIGNsYXNzIHRvIGJlY29tZSBwcml2YXRlIGFmdGVyIDIwMDMtMTItMDEuIFVzZSB0aGUgVHJhbnNsaXRlcmF0b3IgZmFjdG9yeSBtZXRob2RzLgorICAgICAqLworICAgIHB1YmxpYyBSdWxlQmFzZWRUcmFuc2xpdGVyYXRvcihTdHJpbmcgSUQsIFN0cmluZyBydWxlcykgeworICAgICAgICB0aGlzKElELCBydWxlcywgRk9SV0FSRCwgbnVsbCk7CisgICAgfQorCisgICAgUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3IoU3RyaW5nIElELCBEYXRhIGRhdGEsIFVuaWNvZGVGaWx0ZXIgZmlsdGVyKSB7CisgICAgICAgIHN1cGVyKElELCBmaWx0ZXIpOworICAgICAgICB0aGlzLmRhdGEgPSBkYXRhOworICAgICAgICBzZXRNYXhpbXVtQ29udGV4dExlbmd0aChkYXRhLnJ1bGVTZXQuZ2V0TWF4aW11bUNvbnRleHRMZW5ndGgoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogSW1wbGVtZW50cyB7QGxpbmsgVHJhbnNsaXRlcmF0b3IjaGFuZGxlVHJhbnNsaXRlcmF0ZX0uCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNCBUaGlzIGNsYXNzIHRvIGJlY29tZSBwcml2YXRlIGFmdGVyIDIwMDMtMTItMDEuIFVzZSB0aGUgVHJhbnNsaXRlcmF0b3IgZmFjdG9yeSBtZXRob2RzLgorICAgICAqLworICAgIHByb3RlY3RlZCB2b2lkIGhhbmRsZVRyYW5zbGl0ZXJhdGUoUmVwbGFjZWFibGUgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uIGluZGV4LCBib29sZWFuIGluY3JlbWVudGFsKSB7CisgICAgICAgIC8qIFdlIGtlZXAgc3RhcnQgYW5kIGxpbWl0IGZpeGVkIHRoZSBlbnRpcmUgdGltZSwKKyAgICAgICAgICogcmVsYXRpdmUgdG8gdGhlIHRleHQgLS0gbGltaXQgbWF5IG1vdmUgbnVtZXJpY2FsbHkgaWYgdGV4dCBpcworICAgICAgICAgKiBpbnNlcnRlZCBvciByZW1vdmVkLiAgVGhlIGN1cnNvciBtb3ZlcyBmcm9tIHN0YXJ0IHRvIGxpbWl0LCB3aXRoCisgICAgICAgICAqIHJlcGxhY2VtZW50cyBoYXBwZW5pbmcgdW5kZXIgaXQuCisgICAgICAgICAqCisgICAgICAgICAqIEV4YW1wbGU6IHJ1bGVzIDEuIGFiPnh8eQorICAgICAgICAgKiAgICAgICAgICAgICAgICAyLiB5Yz56CisgICAgICAgICAqCisgICAgICAgICAqIHxlYWJjZCAgIHN0YXJ0IC0gbm8gbWF0Y2gsIGFkdmFuY2UgY3Vyc29yCisgICAgICAgICAqIGV8YWJjZCAgIG1hdGNoIHJ1bGUgMSAtIGNoYW5nZSB0ZXh0ICYgYWRqdXN0IGN1cnNvcgorICAgICAgICAgKiBleHx5Y2QgICBtYXRjaCBydWxlIDIgLSBjaGFuZ2UgdGV4dCAmIGFkanVzdCBjdXJzb3IKKyAgICAgICAgICogZXh6fGQgICAgbm8gbWF0Y2gsIGFkdmFuY2UgY3Vyc29yCisgICAgICAgICAqIGV4emR8ICAgIGRvbmUKKyAgICAgICAgICovCisKKyAgICAgICAgLyogQSBydWxlIGxpa2UKKyAgICAgICAgICogICBhPmJ8YQorICAgICAgICAgKiBjcmVhdGVzIGFuIGluZmluaXRlIGxvb3AuIFRvIHByZXZlbnQgdGhhdCwgd2UgcHV0IGFuIGFyYml0cmFyeQorICAgICAgICAgKiBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIGl0ZXJhdGlvbnMgdGhhdCB3ZSB0YWtlLCBvbmUgdGhhdCBpcworICAgICAgICAgKiBoaWdoIGVub3VnaCB0aGF0IGFueSByZWFzb25hYmxlIHJ1bGVzIGFyZSBvaywgYnV0IGxvdyBlbm91Z2ggdG8KKyAgICAgICAgICogcHJldmVudCBhIHNlcnZlciBmcm9tIGhhbmdpbmcuICBUaGUgbGltaXQgaXMgMTYgdGltZXMgdGhlCisgICAgICAgICAqIG51bWJlciBvZiBjaGFyYWN0ZXJzIG4sIHVubGVzcyBuIGlzIHNvIGxhcmdlIHRoYXQgMTZuIGV4Y2VlZHMgYQorICAgICAgICAgKiB1aW50MzJfdC4KKyAgICAgICAgICovCisgICAgICAgIGludCBsb29wQ291bnQgPSAwOworICAgICAgICBpbnQgbG9vcExpbWl0ID0gKGluZGV4LmxpbWl0IC0gaW5kZXguc3RhcnQpIDw8IDQ7CisgICAgICAgIGlmIChsb29wTGltaXQgPCAwKSB7CisgICAgICAgICAgICBsb29wTGltaXQgPSAweDdGRkZGRkZGOworICAgICAgICB9CisKKyAgICAgICAgd2hpbGUgKGluZGV4LnN0YXJ0IDwgaW5kZXgubGltaXQgJiYKKyAgICAgICAgICAgICAgIGxvb3BDb3VudCA8PSBsb29wTGltaXQgJiYKKyAgICAgICAgICAgICAgIGRhdGEucnVsZVNldC50cmFuc2xpdGVyYXRlKHRleHQsIGluZGV4LCBpbmNyZW1lbnRhbCkpIHsKKyAgICAgICAgICAgICsrbG9vcENvdW50OworICAgICAgICB9CisgICAgfQorCisKKyAgICBzdGF0aWMgY2xhc3MgRGF0YSB7CisgICAgICAgIHB1YmxpYyBEYXRhKCkgeworICAgICAgICAgICAgdmFyaWFibGVOYW1lcyA9IG5ldyBIYXNodGFibGUoKTsKKyAgICAgICAgICAgIHJ1bGVTZXQgPSBuZXcgVHJhbnNsaXRlcmF0aW9uUnVsZVNldCgpOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFJ1bGUgdGFibGUuICBNYXkgYmUgZW1wdHkuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgVHJhbnNsaXRlcmF0aW9uUnVsZVNldCBydWxlU2V0OworCisgICAgICAgIC8qKgorICAgICAgICAgKiBNYXAgdmFyaWFibGUgbmFtZSAoU3RyaW5nKSB0byB2YXJpYWJsZSAoY2hhcltdKS4gIEEgdmFyaWFibGUgbmFtZQorICAgICAgICAgKiBjb3JyZXNwb25kcyB0byB6ZXJvIG9yIG1vcmUgY2hhcmFjdGVycywgc3RvcmVkIGluIGEgY2hhcltdIGFycmF5IGluCisgICAgICAgICAqIHRoaXMgaGFzaC4gIE9uZSBvciBtb3JlIG9mIHRoZXNlIGNoYXJzIG1heSBhbHNvIGNvcnJlc3BvbmQgdG8gYQorICAgICAgICAgKiBVbmljb2RlU2V0LCBpbiB3aGljaCBjYXNlIHRoZSBjaGFyYWN0ZXIgaW4gdGhlIGNoYXJbXSBpbiB0aGlzIGhhc2ggaXMKKyAgICAgICAgICogYSBzdGFuZC1pbjogaXQgaXMgYW4gaW5kZXggZm9yIGEgc2Vjb25kYXJ5IGxvb2t1cCBpbgorICAgICAgICAgKiBkYXRhLnZhcmlhYmxlcy4gIFRoZSBzdGFuZC1pbiBhbHNvIHJlcHJlc2VudHMgdGhlIFVuaWNvZGVTZXQgaW4KKyAgICAgICAgICogdGhlIHN0b3JlZCBydWxlcy4KKyAgICAgICAgICovCisgICAgICAgIEhhc2h0YWJsZSB2YXJpYWJsZU5hbWVzOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBNYXAgY2F0ZWdvcnkgdmFyaWFibGUgKENoYXJhY3RlcikgdG8gVW5pY29kZU1hdGNoZXIgb3IgVW5pY29kZVJlcGxhY2VyLgorICAgICAgICAgKiBWYXJpYWJsZXMgdGhhdCBjb3JyZXNwb25kIHRvIGEgc2V0IG9mIGNoYXJhY3RlcnMgYXJlIG1hcHBlZAorICAgICAgICAgKiBmcm9tIHZhcmlhYmxlIG5hbWUgdG8gYSBzdGFuZC1pbiBjaGFyYWN0ZXIgaW4gZGF0YS52YXJpYWJsZU5hbWVzLgorICAgICAgICAgKiBUaGUgc3RhbmQtaW4gdGhlbiBzZXJ2ZXMgYXMgYSBrZXkgaW4gdGhpcyBoYXNoIHRvIGxvb2t1cCB0aGUKKyAgICAgICAgICogYWN0dWFsIFVuaWNvZGVTZXQgb2JqZWN0LiAgSW4gYWRkaXRpb24sIHRoZSBzdGFuZC1pbiBpcworICAgICAgICAgKiBzdG9yZWQgaW4gdGhlIHJ1bGUgdGV4dCB0byByZXByZXNlbnQgdGhlIHNldCBvZiBjaGFyYWN0ZXJzLgorICAgICAgICAgKiB2YXJpYWJsZXNbaV0gcmVwcmVzZW50cyBjaGFyYWN0ZXIgKHZhcmlhYmxlc0Jhc2UgKyBpKS4KKyAgICAgICAgICovCisgICAgICAgIE9iamVjdFtdIHZhcmlhYmxlczsKKworICAgICAgICAvKioKKyAgICAgICAgICogVGhlIGNoYXJhY3RlciB0aGF0IHJlcHJlc2VudHMgdmFyaWFibGVzWzBdLiAgQ2hhcmFjdGVycworICAgICAgICAgKiB2YXJpYWJsZXNCYXNlIHRocm91Z2ggdmFyaWFibGVzQmFzZSArCisgICAgICAgICAqIHZhcmlhYmxlcy5sZW5ndGggLSAxIHJlcHJlc2VudCBVbmljb2RlU2V0IG9iamVjdHMuCisgICAgICAgICAqLworICAgICAgICBjaGFyIHZhcmlhYmxlc0Jhc2U7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFJldHVybiB0aGUgVW5pY29kZU1hdGNoZXIgcmVwcmVzZW50ZWQgYnkgdGhlIGdpdmVuIGNoYXJhY3Rlciwgb3IKKyAgICAgICAgICogbnVsbCBpZiBub25lLgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIFVuaWNvZGVNYXRjaGVyIGxvb2t1cE1hdGNoZXIoaW50IHN0YW5kSW4pIHsKKyAgICAgICAgICAgIGludCBpID0gc3RhbmRJbiAtIHZhcmlhYmxlc0Jhc2U7CisgICAgICAgICAgICByZXR1cm4gKGkgPj0gMCAmJiBpIDwgdmFyaWFibGVzLmxlbmd0aCkKKyAgICAgICAgICAgICAgICA/IChVbmljb2RlTWF0Y2hlcikgdmFyaWFibGVzW2ldIDogbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBSZXR1cm4gdGhlIFVuaWNvZGVSZXBsYWNlciByZXByZXNlbnRlZCBieSB0aGUgZ2l2ZW4gY2hhcmFjdGVyLCBvcgorICAgICAgICAgKiBudWxsIGlmIG5vbmUuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgVW5pY29kZVJlcGxhY2VyIGxvb2t1cFJlcGxhY2VyKGludCBzdGFuZEluKSB7CisgICAgICAgICAgICBpbnQgaSA9IHN0YW5kSW4gLSB2YXJpYWJsZXNCYXNlOworICAgICAgICAgICAgcmV0dXJuIChpID49IDAgJiYgaSA8IHZhcmlhYmxlcy5sZW5ndGgpCisgICAgICAgICAgICAgICAgPyAoVW5pY29kZVJlcGxhY2VyKSB2YXJpYWJsZXNbaV0gOiBudWxsOworICAgICAgICB9CisgICAgfQorCisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHRyYW5zbGl0ZXJhdG9yIGFzIHNvdXJjZSBydWxlcy4KKyAgICAgKiBUaGVzZSBydWxlcyB3aWxsIHByb2R1Y2UgYW4gZXF1aXZhbGVudCB0cmFuc2xpdGVyYXRvciBpZiB1c2VkCisgICAgICogdG8gY29uc3RydWN0IGEgbmV3IHRyYW5zbGl0ZXJhdG9yLgorICAgICAqIEBwYXJhbSBlc2NhcGVVbnByaW50YWJsZSBpZiBUUlVFIHRoZW4gY29udmVydCB1bnByaW50YWJsZQorICAgICAqIGNoYXJhY3RlciB0byB0aGVpciBoZXggZXNjYXBlIHJlcHJlc2VudGF0aW9ucywgXFx1eHh4eCBvcgorICAgICAqIFxcVXh4eHh4eHh4LiAgVW5wcmludGFibGUgY2hhcmFjdGVycyBhcmUgdGhvc2Ugb3RoZXIgdGhhbgorICAgICAqIFUrMDAwQSwgVSswMDIwLi5VKzAwN0UuCisgICAgICogQHJldHVybiBydWxlcyBzdHJpbmcKKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40IFRoaXMgY2xhc3MgdG8gYmVjb21lIHByaXZhdGUgYWZ0ZXIgMjAwMy0xMi0wMS4gVXNlIHRoZSBUcmFuc2xpdGVyYXRvciBmYWN0b3J5IG1ldGhvZHMuCisgICAgICovCisgICAgcHVibGljIFN0cmluZyB0b1J1bGVzKGJvb2xlYW4gZXNjYXBlVW5wcmludGFibGUpIHsKKyAgICAgICAgcmV0dXJuIGRhdGEucnVsZVNldC50b1J1bGVzKGVzY2FwZVVucHJpbnRhYmxlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIHNldCBvZiBhbGwgY2hhcmFjdGVycyB0aGF0IG1heSBiZSBtb2RpZmllZCBieSB0aGlzCisgICAgICogVHJhbnNsaXRlcmF0b3IsIGlnbm9yaW5nIHRoZSBlZmZlY3Qgb2Ygb3VyIGZpbHRlci4KKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40IFRoaXMgY2xhc3MgdG8gYmVjb21lIHByaXZhdGUgYWZ0ZXIgMjAwMy0xMi0wMS4gVXNlIHRoZSBUcmFuc2xpdGVyYXRvciBmYWN0b3J5IG1ldGhvZHMuCisgICAgICovCisgICAgcHJvdGVjdGVkIFVuaWNvZGVTZXQgaGFuZGxlR2V0U291cmNlU2V0KCkgeworICAgICAgICByZXR1cm4gZGF0YS5ydWxlU2V0LmdldFNvdXJjZVRhcmdldFNldChmYWxzZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgc2V0IG9mIGFsbCBjaGFyYWN0ZXJzIHRoYXQgbWF5IGJlIGdlbmVyYXRlZCBhcworICAgICAqIHJlcGxhY2VtZW50IHRleHQgYnkgdGhpcyB0cmFuc2xpdGVyYXRvci4KKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40IFRoaXMgY2xhc3MgdG8gYmVjb21lIHByaXZhdGUgYWZ0ZXIgMjAwMy0xMi0wMS4gVXNlIHRoZSBUcmFuc2xpdGVyYXRvciBmYWN0b3J5IG1ldGhvZHMuCisgICAgICovCisgICAgcHVibGljIFVuaWNvZGVTZXQgZ2V0VGFyZ2V0U2V0KCkgeworICAgICAgICByZXR1cm4gZGF0YS5ydWxlU2V0LmdldFNvdXJjZVRhcmdldFNldCh0cnVlKTsKKyAgICB9Cit9CisKKy8qKgorICogJExvZzogUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3IuamF2YSx2ICQKKyAqIFJldmlzaW9uIDEuNTggIDIwMDIvMTIvMDMgMTg6NTc6MzYgIGFsYW4KKyAqIGppdHRlcmJ1ZyAyMDg3OiBmaXggQCB0YWdzCisgKgorICogUmV2aXNpb24gMS41NyAgMjAwMi8wNy8yNiAyMToxMjozNiAgYWxhbgorICogaml0dGVyYnVnIDE5OTc6IHVzZSBVQ2hhcmFjdGVyUHJvcGVydHkuaXNSdWxlV2hpdGVTcGFjZSgpIGluIHBhcnNlcnMKKyAqCisgKiBSZXZpc2lvbiAxLjU2ICAyMDAyLzA2LzI4IDE5OjE1OjUyICBhbGFuCisgKiBqaXR0ZXJidWcgMTQzNDogaW1wcm92ZSBtZXRob2QgbmFtZXM7IG1pbm9yIGNsZWFudXAKKyAqCisgKiBSZXZpc2lvbiAxLjU1ICAyMDAyLzA2LzI2IDE4OjEyOjM5ICBhbGFuCisgKiBqaXR0ZXJidWcgMTQzNDogaW5pdGlhbCBwdWJsaWMgaW1wbGVtZW50YXRpb24gb2YgZ2V0U291cmNlU2V0IGFuZCBnZXRUYXJnZXRTZXQKKyAqCisgKiBSZXZpc2lvbiAxLjU0ICAyMDAyLzAyLzI1IDIyOjQzOjU4ICByYW0KKyAqIE1vdmUgVXRpbGl0eSBjbGFzcyB0byBpY3UuaW1wbAorICoKKyAqIFJldmlzaW9uIDEuNTMgIDIwMDIvMDIvMTYgMDM6MDY6MTMgIE1vaGFuCisgKiBJQ1U0SiByZW9yZ2FuaXphdGlvbgorICoKKyAqIFJldmlzaW9uIDEuNTIgIDIwMDIvMDIvMDcgMDA6NTM6NTQgIGFsYW4KKyAqIGppdHRlcmJ1ZyAxMjM0OiBtYWtlIG91dHB1dCBzaWRlIG9mIFJCVHMgb2JqZWN0LW9yaWVudGVkOyByZXdyaXRlIElEIHBhcnNlcnMgYW5kIG1vZHVsYXJpemUgdGhlbTsgaW1wbGVtZW50ICZBbnktTG93ZXIoKSBzdXBwb3J0CisgKgorICogUmV2aXNpb24gMS41MSAgMjAwMS8xMS8yOSAyMjozMToxOCAgYWxhbgorICogaml0dGVyYnVnIDE1NjA6IGFkZCBzb3VyY2Utc2V0IG1ldGhvZHMgYW5kIFRyYW5zbGl0ZXJhdG9yVXRpbGl0eSBjbGFzcworICoKKyAqIFJldmlzaW9uIDEuNTAgIDIwMDEvMTEvMjcgMjI6MDc6MzMgIGFsYW4KKyAqIGppdHRlcmJ1ZyAxMzg5OiBpbmNvcnBvcmF0ZSBNYXJrJ3MgcmV2aWV3IGNvbW1lbnRzIC0gY29tbWVudHMgb25seQorICoKKyAqIFJldmlzaW9uIDEuNDkgIDIwMDEvMTAvMTAgMjA6MjY6MjcgIGFsYW4KKyAqIGppdHRlcmJ1ZyA4MTogaW5pdGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBjb21wb3VuZCBmaWx0ZXJzIGluIElEcyBhbmQgOjpJRCBibG9ja3MKKyAqCisgKiBSZXZpc2lvbiAxLjQ4ICAyMDAxLzEwLzA1IDE4OjE1OjU0ICBhbGFuCisgKiBqaXR0ZXJidWcgNzQ6IGZpbmlzaCBwb3J0IG9mIFNvdXJjZS1UYXJnZXQvVmFyaWFudCBjb2RlIGluY2wuIFRyYW5zbGl0ZXJhdG9yUmVnaXN0cnkgYW5kIHRlc3RzCisgKgorICogUmV2aXNpb24gMS40NyAgMjAwMS8xMC8wMyAwMDoxNDoyMiAgYWxhbgorICogaml0dGVyYnVnIDczOiBmaW5pc2ggcXVhbnRpZmllciBhbmQgc3VwcGxlbWVudGFsIGNoYXIgc3VwcG9ydAorICoKKyAqIFJldmlzaW9uIDEuNDYgIDIwMDEvMDkvMjYgMTg6MDA6MDYgIGFsYW4KKyAqIGppdHRlcmJ1ZyA2Nzogc3luYyBwYXJzZXIgd2l0aCBpY3U0YywgYWxsb3cgdW5saW1pdGVkLCBuZXN0ZWQgc2VnbWVudHMKKyAqCisgKiBSZXZpc2lvbiAxLjQ1ICAyMDAxLzA5LzI0IDE5OjU3OjE3ICBhbGFuCisgKiBqaXR0ZXJidWcgNjA6IGltcGxlbWVudCB0b1BhdHRlcm4gaW4gVW5pY29kZVNldDsgdXBkYXRlIFVuaWNvZGVGaWx0ZXIuY29udGFpbnMgdG8gdGFrZSBhbiBpbnQ7IHVwZGF0ZSBVbmljb2RlU2V0IHRvIHN1cHBvcnQgY29kZSBwb2ludHMgdG8gVSsxMEZGRkYKKyAqCisgKiBSZXZpc2lvbiAxLjQ0ICAyMDAxLzA5LzIxIDIxOjI0OjA0ICBhbGFuCisgKiBqaXR0ZXJidWcgNjQ6IGFsbG93IDo6SUQgYmxvY2tzIGluIHJ1bGVzCisgKgorICogUmV2aXNpb24gMS40MyAgMjAwMS8wOS8xOSAxNzo0MzozNyAgYWxhbgorICogaml0dGVyYnVnIDYwOiBpbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRvUnVsZXMoKQorICoKKyAqIFJldmlzaW9uIDEuNDIgIDIwMDEvMDIvMjAgMTc6NTk6NDAgIGFsYW40agorICogUmVtb3ZlIGJhY2tzbGFzaC11IGZyb20gbG9nCisgKgorICogUmV2aXNpb24gMS40MSAgMjAwMS8wMi8xNiAxODo1Mzo1NSAgYWxhbjRqCisgKiBIYW5kbGUgYmFja3NsYXNoLXUgZXNjYXBlcworICoKKyAqIFJldmlzaW9uIDEuNDAgIDIwMDEvMDIvMDMgMDA6NDY6MjEgIGFsYW40agorICogTG9hZCBSdWxlQmFzZWRUcmFuc2xpdGVyYXRvciBmaWxlcyBmcm9tIFVURjggZmlsZXMgaW5zdGVhZCBvZiBSZXNvdXJjZUJ1bmRsZXMKKyAqCisgKiBSZXZpc2lvbiAxLjM5ICAyMDAwLzA4LzMxIDE3OjExOjQyICBhbGFuNGoKKyAqIEltcGxlbWVudCBhbmNob3JzLgorICoKKyAqIFJldmlzaW9uIDEuMzggIDIwMDAvMDgvMzAgMjA6NDA6MzAgIGFsYW40agorICogSW1wbGVtZW50IGFuY2hvcnMuCisgKgorICogUmV2aXNpb24gMS4zNyAgMjAwMC8wNy8xMiAxNjozMTozNiAgYWxhbjRqCisgKiBTaW1wbGlmeSBsb29wIGxpbWl0IGxvZ2ljCisgKgorICogUmV2aXNpb24gMS4zNiAgMjAwMC8wNi8yOSAyMTo1OToyMyAgYWxhbjRqCisgKiBGaXggaGFuZGxpbmcgb2YgVHJhbnNsaXRlcmF0b3IuUG9zaXRpb24gZmllbGRzCisgKgorICogUmV2aXNpb24gMS4zNSAgMjAwMC8wNi8yOCAyMDo0OTo1NCAgYWxhbjRqCisgKiBGaXggaGFuZGxpbmcgb2YgUG9zaXRpb25zIGZpZWxkcworICoKKyAqIFJldmlzaW9uIDEuMzQgIDIwMDAvMDYvMjggMjA6MzY6MzIgIGFsYW40agorICogQ2xlYW4gdXAgVHJhbnNsaXRlcmF0b3I6OlBvc2l0aW9uIC0gcmVuYW1lIHRlbXBvcmFyeSBuYW1lcworICoKKyAqIFJldmlzaW9uIDEuMzMgIDIwMDAvMDYvMjggMjA6MzE6NDMgIGFsYW40agorICogQ2xlYW4gdXAgVHJhbnNsaXRlcmF0b3I6OlBvc2l0aW9uIGFuZCByZW5hbWUgZmllbGRzIChyZWxhdGVkIHRvIGppdHRlcmJ1ZyA0NTApCisgKgorICogUmV2aXNpb24gMS4zMiAgMjAwMC8wNS8yNCAyMjoyMTowMCAgYWxhbjRqCisgKiBDb21wYWN0IFVuaWNvZGVTZXRzCisgKgorICogUmV2aXNpb24gMS4zMSAgMjAwMC8wNS8yMyAxNjo0ODoyNyAgYWxhbjRqCisgKiBGaXggZG9jOyByZW1vdmUgdW51c2VkIGF1dG8KKyAqCisgKiBSZXZpc2lvbiAxLjMwICAyMDAwLzA1LzE4IDIyOjQ5OjUxICBhbGFuCisgKiBVcGRhdGUgZG9jcworICoKKyAqIFJldmlzaW9uIDEuMjkgIDIwMDAvMDQvMjggMDA6MjU6NDIgIGFsYW4KKyAqIEltcHJvdmUgZXJyb3IgcmVwb3J0aW5nCisgKgorICogUmV2aXNpb24gMS4yOCAgMjAwMC8wNC8yNSAxNzozODowMCAgYWxhbgorICogTWlub3IgcGFyc2VyIGNsZWFudXAuCisgKgorICogUmV2aXNpb24gMS4yNyAgMjAwMC8wNC8yNSAwMTo0Mjo1OCAgYWxhbgorICogQWxsb3cgYXJiaXRyYXJ5IGxlbmd0aCB2YXJpYWJsZSB2YWx1ZXMuIENsZWFuIHVwIERhdGEgQVBJLiBVcGRhdGUgamF2YWRvY3MuCisgKgorICogUmV2aXNpb24gMS4yNiAgMjAwMC8wNC8yMiAwMToyNToxMCAgYWxhbgorICogQWRkIHN1cHBvcnQgZm9yIGN1cnNvciBwb3NpdGlvbmVyICdAJzsgdXBkYXRlIGphdmFkb2MKKyAqCisgKiBSZXZpc2lvbiAxLjI1ICAyMDAwLzA0LzIyIDAwOjA4OjQzICBhbGFuCisgKiBOYXJyb3cgcmFuZ2UgdG8gMjEgLSA3RSBmb3IgbWFuZGF0b3J5IHF1b3RpbmcuCisgKgorICogUmV2aXNpb24gMS4yNCAgMjAwMC8wNC8yMiAwMDowMzo1NCAgYWxhbgorICogRGlzYWxsb3cgdW5xdW90ZWQgc3BlY2lhbCBjaGFycy4gUmVwb3J0IG11bHRpcGxlIGVycm9ycyBhdCBvbmNlLgorICoKKyAqIFJldmlzaW9uIDEuMjMgIDIwMDAvMDQvMjEgMjI6MjM6NDAgIGFsYW4KKyAqIENsZWFuIHVwIHBhcnNlUmVmZXJlbmNlLiBQcmV2aW91cyBsb2cgc2hvdWxkIHJlYWQgJ2RlbGVnYXRlJywgbm90ICdkZWxldGUnLgorICoKKyAqIFJldmlzaW9uIDEuMjIgIDIwMDAvMDQvMjEgMjI6MTY6MjkgIGFsYW4KKyAqIERlbGV0ZSB2YXJpYWJsZSBuYW1lIHBhcnNpbmcgdG8gU3ltYm9sVGFibGUgaW50ZXJmYWNlIHRvIGNvbnNvbGlkYXRlIHBhcnNpbmcgY29kZS4KKyAqCisgKiBSZXZpc2lvbiAxLjIxICAyMDAwLzA0LzIxIDIxOjE2OjQwICBhbGFuCisgKiBNb2RpZnkgcnVsZSBzeW50YXgKKyAqCisgKiBSZXZpc2lvbiAxLjIwICAyMDAwLzA0LzE5IDE3OjM1OjIzICBhbGFuCisgKiBVcGRhdGUgamF2YWRvYzsgZml4IGNvbXBpbGUgZXJyb3IKKyAqCisgKiBSZXZpc2lvbiAxLjE5ICAyMDAwLzA0LzE5IDE2OjM0OjE4ICBhbGFuCisgKiBBZGQgc2VnbWVudCBzdXBwb3J0LgorICoKKyAqIFJldmlzaW9uIDEuMTggIDIwMDAvMDQvMTIgMjA6MTc6NDUgIGFsYW4KKyAqIERlbGVnYXRlIHJlcGxhY2Ugb3BlcmF0aW9uIHRvIHJ1bGUgb2JqZWN0CisgKgorICogUmV2aXNpb24gMS4xNyAgMjAwMC8wMy8xMCAwNDowNzoyMyAgam9obmYKKyAqIENvcHlyaWdodCB1cGRhdGUKKyAqCisgKiBSZXZpc2lvbiAxLjE2ICAyMDAwLzAyLzI0IDIwOjQ2OjQ5ICBsaXUKKyAqIEFkZCBpbmZpbml0ZSBsb29wIGNoZWNrCisgKgorICogUmV2aXNpb24gMS4xNSAgMjAwMC8wMi8xMCAwNzozNjoyNSAgam9obmYKKyAqIGZpeGVkIGltcG9ydHMgZm9yIGNvbS5pYm0uaWN1LmltcGwuVXRpbGl0eQorICoKKyAqIFJldmlzaW9uIDEuMTQgIDIwMDAvMDIvMDMgMTg6MTg6NDIgIEFsYW4KKyAqIFVzZSBhcnJheSByYXRoZXIgdGhhbiBoYXNodGFibGUgZm9yIGNoYXItdG8tc2V0IG1hcAorICoKKyAqIFJldmlzaW9uIDEuMTMgIDIwMDAvMDEvMjcgMTg6NTk6MTkgIEFsYW4KKyAqIFVzZSBQb3NpdGlvbiByYXRoZXIgdGhhbiBpbnRbXSBhbmQgbW92ZSBhbGwgc3ViY2xhc3Mgb3ZlcnJpZGVzIHRvIG9uZSBtZXRob2QgKGhhbmRsZVRyYW5zbGl0ZXJhdGUpCisgKgorICogUmV2aXNpb24gMS4xMiAgMjAwMC8wMS8xOCAxNzo1MTowOSAgQWxhbgorICogUmVtb3ZlICJrZXlib2FyZCIgZnJvbSBtZXRob2QgbmFtZXMuIE1ha2UgbWF4aW11bSBjb250ZXh0IGEgZmllbGQgb2YgVHJhbnNsaXRlcmF0b3IsIGFuZCBoYXZlIHN1YmNsYXNzZXMgc2V0IGl0LgorICoKKyAqIFJldmlzaW9uIDEuMTEgIDIwMDAvMDEvMTggMDI6MzA6NDkgIEFsYW4KKyAqIEFkZCBKYW1vLUhhbmd1bCwgSGFuZ3VsLUphbW8sIGZpeCBydWxlcywgYWRkIGNvbXBvdW5kIElEIHN1cHBvcnQKKyAqCisgKiBSZXZpc2lvbiAxLjEwICAyMDAwLzAxLzEzIDIzOjUzOjIzICBBbGFuCisgKiBGaXggYnVncyBmb3VuZCBkdXJpbmcgSUNVIHBvcnQKKyAqCisgKiBSZXZpc2lvbiAxLjkgIDIwMDAvMDEvMTEgMDQ6MTI6MDYgIEFsYW4KKyAqIENsZWFudXAsIGVtYmVsbGlzaCBjb21tZW50cworICoKKyAqIFJldmlzaW9uIDEuOCAgMjAwMC8wMS8xMSAwMjoyNTowMyAgQWxhbgorICogUmV3cml0ZSBVbmljb2RlU2V0IGFuZCBSQlQgcGFyc2VycyBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlIGFuZCBuZXcgc3ludGF4CisgKgorICogUmV2aXNpb24gMS43ICAyMDAwLzAxLzA2IDAxOjM2OjM2ICBBbGFuCisgKiBBbGxvdyBzdHJpbmcgYXJyYXlzIGluIHJ1bGUgcmVzb3VyY2UgYnVuZGxlcworICoKKyAqIFJldmlzaW9uIDEuNiAgMjAwMC8wMS8wNCAyMTo0Mzo1NyAgQWxhbgorICogQWRkIHJ1bGUgaW5kZXhpbmcsIGFuZCBtb3ZlIG1hc2tpbmcgY2hlY2sgdG8gVHJhbnNsaXRlcmF0aW9uUnVsZVNldC4KKyAqCisgKiBSZXZpc2lvbiAxLjUgIDE5OTkvMTIvMjIgMDE6NDA6NTQgIEFsYW4KKyAqIENvbnNvbGlkYXRlIHJ1bGUgcGF0dGVybiBhbnRlQ29udGV4dCwga2V5LCBhbmQgcG9zdENvbnRleHQgaW50byBvbmUgc3RyaW5nLgorICoKKyAqIFJldmlzaW9uIDEuNCAgMTk5OS8xMi8yMiAwMTowNTo1NCAgQWxhbgorICogSW1wcm92ZSBtYXNraW5nIGNoZWNraW5nOyB0dXJuIGl0IG9mZiBieSBkZWZhdWx0LCBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlCisgKi8KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS90ZXh0L1NDU1UuamF2YSBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L1NDU1UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45MzFkNDAyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvU0NTVS5qYXZhCkBAIC0wLDAgKzEsMTkwIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvdGV4dC9TQ1NVLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDIvMTYgMDM6MDY6MTQgJCAKKyAqICRSZXZpc2lvbjogMS4zICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LnRleHQ7CisKKy8qKgorICogQW4gaW50ZXJmYWNlIGRlZmluaW5nICBjb25zdGFudHMgZm9yIHRoZSBTdGFuZGFyZCBDb21wcmVzc2lvbiBTY2hlbWUKKyAqIGZvciBVbmljb2RlIChTQ1NVKSBhcyBvdXRsaW5lZCBpbiA8QQorICogSFJFRj0iaHR0cDovL3d3dy51bmljb2RlLm9yZy91bmljb2RlL3JlcG9ydHMvdHI2Ij5Vbmljb2RlIFRlY2huaWNhbAorICogUmVwb3J0ICM2PC9BPi4KKyAqCisgKiBAYXV0aG9yIFN0ZXBoZW4gRi4gQm9vdGgKKyAqIEB2ZXJzaW9uIDEuMSAwNSBBdWcgOTkKKyAqIEB2ZXJzaW9uIDEuMCAyNiBKdWwgOTkKKyAqLworaW50ZXJmYWNlIFNDU1UKK3sKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gR2VuZXJpYyB3aW5kb3cgc2hpZnQKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgZmluYWwgc3RhdGljIGludCBDT01QUkVTU0lPTk9GRlNFVCAgICAgICAgICAgPSAweDgwOworCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIE51bWJlciBvZiB3aW5kb3dzCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIGZpbmFsIHN0YXRpYyBpbnQgTlVNV0lORE9XUyAgICAgICAgICAgICAgICAgID0gODsKKyAgICBmaW5hbCBzdGF0aWMgaW50IE5VTVNUQVRJQ1dJTkRPV1MgICAgICAgICAgICA9IDg7CisKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gSW5kaWNhdGVzIGEgd2luZG93IGluZGV4IGlzIGludmFsaWQKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgZmluYWwgc3RhdGljIGludCBJTlZBTElEV0lORE9XICAgICAgICAgICAgICAgPSAtMTsKKworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBJbmRpY2F0ZXMgYSBjaGFyYWN0ZXIgZG9lc24ndCBleGlzdCBpbiBpbnB1dCAocGFzdCBlbmQgb2YgYnVmZmVyKQorICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBmaW5hbCBzdGF0aWMgaW50IElOVkFMSURDSEFSICAgICAgICAgICAgICAgICA9IC0xOworCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIENvbXByZXNzaW9uIG1vZGVzCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIGZpbmFsIHN0YXRpYyBpbnQgU0lOR0xFQllURU1PREUgICAgICAgICAgICAgID0gMDsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFVOSUNPREVNT0RFICAgICAgICAgICAgICAgICA9IDE7CisKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gTWF4aW11bSB2YWx1ZSBmb3IgYSB3aW5kb3cncyBpbmRleAorICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBmaW5hbCBzdGF0aWMgaW50IE1BWElOREVYICAgICAgICAgICAgICAgICAgICA9IDB4RkY7CisKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gUmVzZXJ2ZWQgaW5kZXggdmFsdWUgKGNoYXJhY3RlcnMgYmVsb25ncyB0byBmaXJzdCBibG9jaykKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgZmluYWwgc3RhdGljIGludCBSRVNFUlZFRElOREVYICAgICAgICAgICAgICAgPSAweDAwOworCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIEluZGljZXMgZm9yIHNjcmlwdHMgd2hpY2ggY3Jvc3MgYSBoYWxmLWJsb2NrIGJvdW5kYXJ5CisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIGZpbmFsIHN0YXRpYyBpbnQgTEFUSU5JTkRFWCAgICAgICAgICAgICAgICAgID0gMHhGOTsKKyAgICBmaW5hbCBzdGF0aWMgaW50IElQQUVYVEVOU0lPTklOREVYICAgICAgICAgICA9IDB4RkE7CisgICAgZmluYWwgc3RhdGljIGludCBHUkVFS0lOREVYICAgICAgICAgICAgICAgICAgPSAweEZCOworICAgIGZpbmFsIHN0YXRpYyBpbnQgQVJNRU5JQU5JTkRFWCAgICAgICAgICAgICAgID0gMHhGQzsKKyAgICBmaW5hbCBzdGF0aWMgaW50IEhJUkFHQU5BSU5ERVggICAgICAgICAgICAgICA9IDB4RkQ7CisgICAgZmluYWwgc3RhdGljIGludCBLQVRBS0FOQUlOREVYICAgICAgICAgICAgICAgPSAweEZFOworICAgIGZpbmFsIHN0YXRpYyBpbnQgSEFMRldJRFRIS0FUQUtBTkFJTkRFWCAgICAgID0gMHhGRjsKKworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBTaW5nbGUtYnl0ZSBtb2RlIHRhZ3MKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgZmluYWwgc3RhdGljIGludCBTREVGSU5FWCAgICAgICAgICAgICAgICAgICAgPSAweDBCOworICAgIGZpbmFsIHN0YXRpYyBpbnQgU1JFU0VSVkVEICAgICAgICAgICAgICAgICAgID0gMHgwQzsgIC8vIHJlc2VydmVkIHZhbHVlCisgICAgZmluYWwgc3RhdGljIGludCBTUVVPVEVVICAgICAgICAgICAgICAgICAgICAgPSAweDBFOworICAgIGZpbmFsIHN0YXRpYyBpbnQgU0NIQU5HRVUgICAgICAgICAgICAgICAgICAgID0gMHgwRjsKKworICAgIGZpbmFsIHN0YXRpYyBpbnQgU1FVT1RFMCAgICAgICAgICAgICAgICAgICAgID0gMHgwMTsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFNRVU9URTEgICAgICAgICAgICAgICAgICAgICA9IDB4MDI7CisgICAgZmluYWwgc3RhdGljIGludCBTUVVPVEUyICAgICAgICAgICAgICAgICAgICAgPSAweDAzOworICAgIGZpbmFsIHN0YXRpYyBpbnQgU1FVT1RFMyAgICAgICAgICAgICAgICAgICAgID0gMHgwNDsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFNRVU9URTQgICAgICAgICAgICAgICAgICAgICA9IDB4MDU7CisgICAgZmluYWwgc3RhdGljIGludCBTUVVPVEU1ICAgICAgICAgICAgICAgICAgICAgPSAweDA2OworICAgIGZpbmFsIHN0YXRpYyBpbnQgU1FVT1RFNiAgICAgICAgICAgICAgICAgICAgID0gMHgwNzsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFNRVU9URTcgICAgICAgICAgICAgICAgICAgICA9IDB4MDg7CisKKyAgICBmaW5hbCBzdGF0aWMgaW50IFNDSEFOR0UwICAgICAgICAgICAgICAgICAgICA9IDB4MTA7CisgICAgZmluYWwgc3RhdGljIGludCBTQ0hBTkdFMSAgICAgICAgICAgICAgICAgICAgPSAweDExOworICAgIGZpbmFsIHN0YXRpYyBpbnQgU0NIQU5HRTIgICAgICAgICAgICAgICAgICAgID0gMHgxMjsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFNDSEFOR0UzICAgICAgICAgICAgICAgICAgICA9IDB4MTM7CisgICAgZmluYWwgc3RhdGljIGludCBTQ0hBTkdFNCAgICAgICAgICAgICAgICAgICAgPSAweDE0OworICAgIGZpbmFsIHN0YXRpYyBpbnQgU0NIQU5HRTUgICAgICAgICAgICAgICAgICAgID0gMHgxNTsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFNDSEFOR0U2ICAgICAgICAgICAgICAgICAgICA9IDB4MTY7CisgICAgZmluYWwgc3RhdGljIGludCBTQ0hBTkdFNyAgICAgICAgICAgICAgICAgICAgPSAweDE3OworCisgICAgZmluYWwgc3RhdGljIGludCBTREVGSU5FMCAgICAgICAgICAgICAgICAgICAgPSAweDE4OworICAgIGZpbmFsIHN0YXRpYyBpbnQgU0RFRklORTEgICAgICAgICAgICAgICAgICAgID0gMHgxOTsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFNERUZJTkUyICAgICAgICAgICAgICAgICAgICA9IDB4MUE7CisgICAgZmluYWwgc3RhdGljIGludCBTREVGSU5FMyAgICAgICAgICAgICAgICAgICAgPSAweDFCOworICAgIGZpbmFsIHN0YXRpYyBpbnQgU0RFRklORTQgICAgICAgICAgICAgICAgICAgID0gMHgxQzsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFNERUZJTkU1ICAgICAgICAgICAgICAgICAgICA9IDB4MUQ7CisgICAgZmluYWwgc3RhdGljIGludCBTREVGSU5FNiAgICAgICAgICAgICAgICAgICAgPSAweDFFOworICAgIGZpbmFsIHN0YXRpYyBpbnQgU0RFRklORTcgICAgICAgICAgICAgICAgICAgID0gMHgxRjsKKworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBVbmljb2RlIG1vZGUgdGFncworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBmaW5hbCBzdGF0aWMgaW50IFVDSEFOR0UwICAgICAgICAgICAgICAgICAgICA9IDB4RTA7CisgICAgZmluYWwgc3RhdGljIGludCBVQ0hBTkdFMSAgICAgICAgICAgICAgICAgICAgPSAweEUxOworICAgIGZpbmFsIHN0YXRpYyBpbnQgVUNIQU5HRTIgICAgICAgICAgICAgICAgICAgID0gMHhFMjsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFVDSEFOR0UzICAgICAgICAgICAgICAgICAgICA9IDB4RTM7CisgICAgZmluYWwgc3RhdGljIGludCBVQ0hBTkdFNCAgICAgICAgICAgICAgICAgICAgPSAweEU0OworICAgIGZpbmFsIHN0YXRpYyBpbnQgVUNIQU5HRTUgICAgICAgICAgICAgICAgICAgID0gMHhFNTsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFVDSEFOR0U2ICAgICAgICAgICAgICAgICAgICA9IDB4RTY7CisgICAgZmluYWwgc3RhdGljIGludCBVQ0hBTkdFNyAgICAgICAgICAgICAgICAgICAgPSAweEU3OworCisgICAgZmluYWwgc3RhdGljIGludCBVREVGSU5FMCAgICAgICAgICAgICAgICAgICAgPSAweEU4OworICAgIGZpbmFsIHN0YXRpYyBpbnQgVURFRklORTEgICAgICAgICAgICAgICAgICAgID0gMHhFOTsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFVERUZJTkUyICAgICAgICAgICAgICAgICAgICA9IDB4RUE7CisgICAgZmluYWwgc3RhdGljIGludCBVREVGSU5FMyAgICAgICAgICAgICAgICAgICAgPSAweEVCOworICAgIGZpbmFsIHN0YXRpYyBpbnQgVURFRklORTQgICAgICAgICAgICAgICAgICAgID0gMHhFQzsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFVERUZJTkU1ICAgICAgICAgICAgICAgICAgICA9IDB4RUQ7CisgICAgZmluYWwgc3RhdGljIGludCBVREVGSU5FNiAgICAgICAgICAgICAgICAgICAgPSAweEVFOworICAgIGZpbmFsIHN0YXRpYyBpbnQgVURFRklORTcgICAgICAgICAgICAgICAgICAgID0gMHhFRjsKKworICAgIGZpbmFsIHN0YXRpYyBpbnQgVVFVT1RFVSAgICAgICAgICAgICAgICAgICAgID0gMHhGMDsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFVERUZJTkVYICAgICAgICAgICAgICAgICAgICA9IDB4RjE7CisgICAgZmluYWwgc3RhdGljIGludCBVUkVTRVJWRUQgICAgICAgICAgICAgICAgICAgPSAweEYyOyAgLy8gcmVzZXJ2ZWQgdmFsdWUKKworCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIENsYXNzIHZhcmlhYmxlcworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgIC8qKiBGb3Igd2luZG93IG9mZnNldCBtYXBwaW5nICovCisgICAgZmluYWwgc3RhdGljIGludCBbXSBzT2Zmc2V0VGFibGUgPSB7IAorICAgICAgICAvLyB0YWJsZSBnZW5lcmF0ZWQgYnkgQ29tcHJlc3Npb25UYWJsZUdlbmVyYXRvcgorICAgICAgICAweDAsIDB4ODAsIDB4MTAwLCAweDE4MCwgMHgyMDAsIDB4MjgwLCAweDMwMCwgMHgzODAsIDB4NDAwLAorCTB4NDgwLCAweDUwMCwgMHg1ODAsIDB4NjAwLCAweDY4MCwgMHg3MDAsIDB4NzgwLCAweDgwMCwgMHg4ODAsCisJMHg5MDAsIDB4OTgwLCAweGEwMCwgMHhhODAsIDB4YjAwLCAweGI4MCwgMHhjMDAsIDB4YzgwLCAweGQwMCwKKwkweGQ4MCwgMHhlMDAsIDB4ZTgwLCAweGYwMCwgMHhmODAsIDB4MTAwMCwgMHgxMDgwLCAweDExMDAsCisJMHgxMTgwLCAweDEyMDAsIDB4MTI4MCwgMHgxMzAwLCAweDEzODAsIDB4MTQwMCwgMHgxNDgwLAorCTB4MTUwMCwgMHgxNTgwLCAweDE2MDAsIDB4MTY4MCwgMHgxNzAwLCAweDE3ODAsIDB4MTgwMCwKKwkweDE4ODAsIDB4MTkwMCwgMHgxOTgwLCAweDFhMDAsIDB4MWE4MCwgMHgxYjAwLCAweDFiODAsCisJMHgxYzAwLCAweDFjODAsIDB4MWQwMCwgMHgxZDgwLCAweDFlMDAsIDB4MWU4MCwgMHgxZjAwLAorCTB4MWY4MCwgMHgyMDAwLCAweDIwODAsIDB4MjEwMCwgMHgyMTgwLCAweDIyMDAsIDB4MjI4MCwKKwkweDIzMDAsIDB4MjM4MCwgMHgyNDAwLCAweDI0ODAsIDB4MjUwMCwgMHgyNTgwLCAweDI2MDAsCisJMHgyNjgwLCAweDI3MDAsIDB4Mjc4MCwgMHgyODAwLCAweDI4ODAsIDB4MjkwMCwgMHgyOTgwLAorCTB4MmEwMCwgMHgyYTgwLCAweDJiMDAsIDB4MmI4MCwgMHgyYzAwLCAweDJjODAsIDB4MmQwMCwKKwkweDJkODAsIDB4MmUwMCwgMHgyZTgwLCAweDJmMDAsIDB4MmY4MCwgMHgzMDAwLCAweDMwODAsCisJMHgzMTAwLCAweDMxODAsIDB4MzIwMCwgMHgzMjgwLCAweDMzMDAsIDB4MzM4MCwgMHhlMDAwLAorCTB4ZTA4MCwgMHhlMTAwLCAweGUxODAsIDB4ZTIwMCwgMHhlMjgwLCAweGUzMDAsIDB4ZTM4MCwKKwkweGU0MDAsIDB4ZTQ4MCwgMHhlNTAwLCAweGU1ODAsIDB4ZTYwMCwgMHhlNjgwLCAweGU3MDAsCisJMHhlNzgwLCAweGU4MDAsIDB4ZTg4MCwgMHhlOTAwLCAweGU5ODAsIDB4ZWEwMCwgMHhlYTgwLAorCTB4ZWIwMCwgMHhlYjgwLCAweGVjMDAsIDB4ZWM4MCwgMHhlZDAwLCAweGVkODAsIDB4ZWUwMCwKKwkweGVlODAsIDB4ZWYwMCwgMHhlZjgwLCAweGYwMDAsIDB4ZjA4MCwgMHhmMTAwLCAweGYxODAsCisJMHhmMjAwLCAweGYyODAsIDB4ZjMwMCwgMHhmMzgwLCAweGY0MDAsIDB4ZjQ4MCwgMHhmNTAwLAorCTB4ZjU4MCwgMHhmNjAwLCAweGY2ODAsIDB4ZjcwMCwgMHhmNzgwLCAweGY4MDAsIDB4Zjg4MCwKKwkweGY5MDAsIDB4Zjk4MCwgMHhmYTAwLCAweGZhODAsIDB4ZmIwMCwgMHhmYjgwLCAweGZjMDAsCisJMHhmYzgwLCAweGZkMDAsIDB4ZmQ4MCwgMHhmZTAwLCAweGZlODAsIDB4ZmYwMCwgMHhmZjgwLCAweDAsCisJMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwKKwkweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLAorCTB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsCisJMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwKKwkweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLAorCTB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsCisJMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4YzAsIDB4MjUwLCAweDM3MCwKKwkweDUzMCwgMHgzMDQwLCAweDMwYTAsIDB4ZmY2MCAgCisgICAgfTsKKworICAgIC8qKiBTdGF0aWMgY29tcHJlc3Npb24gd2luZG93IG9mZnNldHMgKi8KKyAgICBmaW5hbCBzdGF0aWMgaW50IFtdIHNPZmZzZXRzID0geworICAgICAgICAweDAwMDAsICAvLyBmb3IgcXVvdGluZyBzaW5nbGUtYnl0ZSBtb2RlIHRhZ3MKKyAgICAgICAgMHgwMDgwLCAgLy8gTGF0aW4tMSBTdXBwbGVtZW50CisgICAgICAgIDB4MDEwMCwgIC8vIExhdGluIEV4dGVuZGVkLUEKKyAgICAgICAgMHgwMzAwLCAgLy8gQ29tYmluaW5nIERpYWNyaXRpY2FsIE1hcmtzCisgICAgICAgIDB4MjAwMCwgIC8vIEdlbmVyYWwgUHVuY3R1YXRpb24KKyAgICAgICAgMHgyMDgwLCAgLy8gQ3VyZW5jeSBTeW1ib2xzCisgICAgICAgIDB4MjEwMCwgIC8vIExldHRlcmxpa2UgU3ltYm9scyBhbmQgTnVtYmVyIEZvcm1zCisgICAgICAgIDB4MzAwMCAgIC8vIENKSyBTeW1ib2xzIGFuZCBQdW5jdHVhdGlvbgorICAgIH07CisKK307CisKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS90ZXh0L1NlYXJjaEl0ZXJhdG9yLmphdmEgYi9zcmMvY29tL2libS9pY3UvdGV4dC9TZWFyY2hJdGVyYXRvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjE4ZjRkNmEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdGV4dC9TZWFyY2hJdGVyYXRvci5qYXZhCkBAIC0wLDAgKzEsNzk0IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvdGV4dC9TZWFyY2hJdGVyYXRvci5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzEyLzA1IDIyOjI3OjQzICQgCisgKiAkUmV2aXNpb246IDEuMTUgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS5pY3UudGV4dDsKKworaW1wb3J0IGphdmEudGV4dC5DaGFyYWN0ZXJJdGVyYXRvcjsKKworLyoqCisgKiA8cD5TZWFyY2hJdGVyYXRvciBpcyBhbiBhYnN0cmFjdCBiYXNlIGNsYXNzIHRoYXQgZGVmaW5lcyBhIHByb3RvY29sCisgKiBmb3IgdGV4dCBzZWFyY2hpbmcuIFN1YmNsYXNzZXMgcHJvdmlkZSBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbnMgb2YKKyAqIHZhcmlvdXMgc2VhcmNoIGFsZ29yaXRobXMuICBBIGNvbmNyZXRlIHN1YmNsYXNzLCBTdHJpbmdTZWFyY2gsIGlzCisgKiBwcm92aWRlZCB0aGF0IGltcGxlbWVudHMgbGFuZ3VhZ2Utc2Vuc2l0aXZlIHBhdHRlcm4gbWF0Y2hpbmcgYmFzZWQKKyAqIG9uIHRoZSBjb21wYXJpc29uIHJ1bGVzIGRlZmluZWQgaW4gYSBSdWxlQmFzZWRDb2xsYXRvcgorICogb2JqZWN0LiBJbnN0YW5jZXMgb2YgU2VhcmNoSXRlcmF0b3IgbWFpbnRhaW4gYSBjdXJyZW50IHBvc2l0aW9uIGFuZAorICogc2NhbiBvdmVyIHRoZSB0YXJnZXQgdGV4dCwgcmV0dXJuaW5nIHRoZSBpbmRpY2VzIHdoZXJlIGEgbWF0Y2ggaXMKKyAqIGZvdW5kIGFuZCB0aGUgbGVuZ3RoIG9mIGVhY2ggbWF0Y2guIEdlbmVyYWxseSwgdGhlIHNlcXVlbmNlIG9mIGZvcndhcmQgCisgKiBtYXRjaGVzIHdpbGwgYmUgZXF1aXZhbGVudCB0byB0aGUgc2VxdWVuY2Ugb2YgYmFja3dhcmQgbWF0Y2hlcy5PbmUKKyAqIGNhc2Ugd2hlcmUgdGhpcyBzdGF0ZW1lbnQgbWF5IG5vdCBob2xkIGlzIHdoZW4gbm9uLW92ZXJsYXBwaW5nIG1vZGUgCisgKiBpcyBzZXQgb24gYW5kIHRoZXJlIGFyZSBjb250aW51b3VzIHJlcGV0aXRpdmUgcGF0dGVybnMgaW4gdGhlIHRleHQuIAorICogQ29uc2lkZXIgdGhlIGNhc2Ugc2VhcmNoaW5nIGZvciBwYXR0ZXJuICJhYmEiIGluIHRoZSB0ZXh0IAorICogImFiYWJhYmFiYSIsIHNldHRpbmcgb3ZlcmxhcHBpbmcgbW9kZSBvZmYgd2lsbCBwcm9kdWNlIGZvcndhcmQgbWF0Y2hlcworICogYXQgb2Zmc2V0cyAwLCA0LiBIb3dldmVyIHdoZW4gYSBiYWNrd2FyZHMgc2VhcmNoIGlzIGRvbmUsIHRoZQorICogcmVzdWx0cyB3aWxsIGJlIGF0IG9mZnNldHMgNiBhbmQgMi48L3A+CisgKiAKKyAqIDxwPklmIG1hdGNoZXMgc2VhcmNoZWQgZm9yIGhhdmUgYm91bmRhcnkgcmVzdHJpY3Rpb25zLiBCcmVha0l0ZXJhdG9ycyAKKyAqIGNhbiBiZSB1c2VkIHRvIGRlZmluZSB0aGUgdmFsaWQgYm91bmRhcmllcyBvZiBzdWNoIGEgbWF0Y2guIE9uY2UgYSAKKyAqIEJyZWFrSXRlcmF0b3IgaXMgc2V0LCBwb3RlbnRpYWwgbWF0Y2hlcyB3aWxsIGJlIHRlc3RlZCBhZ2FpbnN0IHRoZQorICogQnJlYWtJdGVyYXRvciB0byBkZXRlcm1pbmUgaWYgdGhlIGJvdW5kYXJpZXMgYXJlIHZhbGlkIGFuZCB0aGF0IGFsbAorICogY2hhcmFjdGVycyBpbiB0aGUgcG90ZW50aWFsIG1hdGNoIGFyZSBlcXVpdmFsZW50IHRvIHRoZSBwYXR0ZXJuIAorICogc2VhcmNoZWQgZm9yLiBGb3IgZXhhbXBsZSwgbG9va2luZyBmb3IgdGhlIHBhdHRlcm4gImZveCIgaW4gdGhlIHRleHQKKyAqICJmb3h5IGZveCIgd2lsbCBwcm9kdWNlIG1hdGNoIHJlc3VsdHMgYXQgb2Zmc2V0IDAgYW5kIDUgd2l0aCBsZW5ndGggMworICogaWYgbm8gQnJlYWtJdGVyYXRvcnMgd2VyZSBzZXQuIEhvd2V2ZXIgaWYgYSBXb3JkQnJlYWtJdGVyYXRvciBpcyBzZXQsCisgKiB0aGUgb25seSBtYXRjaCB0aGF0IHdvdWxkIGJlIGZvdW5kIHdpbGwgYmUgYXQgdGhlIG9mZnNldCA1LiBTaW5jZSwKKyAqIHRoZSBTZWFyY2hJdGVyYXRvciBndWFyYW50ZWVzIHRoYXQgaWYgYSBCcmVha0l0ZXJhdG9yIGlzIHNldCwgYWxsIGl0cworICogbWF0Y2hlcyB3aWxsIG1hdGNoIHRoZSBnaXZlbiBwYXR0ZXJuIGV4YWN0bHksIGEgcG90ZW50aWFsIG1hdGNoIHRoYXQgCisgKiBwYXNzZXMgdGhlIEJyZWFrSXRlcmF0b3IgbWlnaHQgc3RpbGwgbm90IHByb2R1Y2UgYSB2YWxpZCBtYXRjaC4gRm9yIAorICogaW5zdGFuY2UgdGhlIHBhdHRlcm4gImUiIHdpbGwgbm90IGJlIGZvdW5kIGluIHRoZSBzdHJpbmcgCisgKiAiJiM5Mjt1MDBlOSIgKGxhdGluIHNtYWxsIGxldHRlciBlIHdpdGggYWN1dGUpIGlmIGEgCisgKiBDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yIGlzIHVzZWQuIEV2ZW4gdGhvdWdoICJlIiBpcworICogYSBwYXJ0IG9mIHRoZSBjaGFyYWN0ZXIgIiYjOTI7dTAwZTkiIGFuZCB0aGUgcG90ZW50aWFsIG1hdGNoIGF0CisgKiBvZmZzZXQgMCBsZW5ndGggMSBwYXNzZXMgdGhlIENoYXJhY3RlckJyZWFrSXRlcmF0b3IgdGVzdCwgIiYjOTI7dTAwZTkiCisgKiBpcyBub3QgZXF1aXZhbGVudCB0byAiZSIsIGhlbmNlIHRoZSBTZWFyY2hJdGVyYXRvciByZWplY3RzIHRoZSBwb3RlbnRpYWwKKyAqIG1hdGNoLiBCeSBkZWZhdWx0LCB0aGUgU2VhcmNoSXRlcmF0b3IKKyAqIGRvZXMgbm90IGltcG9zZSBhbnkgYm91bmRhcnkgcmVzdHJpY3Rpb24gb24gdGhlIG1hdGNoZXMsIGl0IHdpbGwgCisgKiByZXR1cm4gYWxsIHJlc3VsdHMgdGhhdCBtYXRjaCB0aGUgcGF0dGVybi4gSWxsdXN0cmF0aW5nIHdpdGggdGhlIAorICogYWJvdmUgZXhhbXBsZSwgImUiIHdpbGwKKyAqIGJlIGZvdW5kIGluIHRoZSBzdHJpbmcgIiYjOTI7dTAwZTkiIGlmIG5vIEJyZWFrSXRlcmF0b3IgaXMKKyAqIHNwZWNpZmllZC48L3A+CisgKiAKKyAqIDxwPlNlYXJjaEl0ZXJhdG9yIGFsc28gcHJvdmlkZXMgYSBtZWFucyB0byBoYW5kbGUgb3ZlcmxhcHBpbmcKKyAqIG1hdGNoZXMgdmlhIHRoZSBBUEkgc2V0T3ZlcmxhcHBpbmcoYm9vbGVhbikuIEZvciBleGFtcGxlLCBpZgorICogb3ZlcmxhcHBpbmcgbW9kZSBpcyBzZXQsIHNlYXJjaGluZyBmb3IgdGhlIHBhdHRlcm4gImFiYWIiIGluIHRoZQorICogdGV4dCAiYWJhYmFiIiB3aWxsIG1hdGNoIGF0IHBvc2l0aW9ucyAwIGFuZCAyLCB3aGVyZWFzIGlmCisgKiBvdmVybGFwcGluZyBpcyBub3Qgc2V0LCBTZWFyY2hJdGVyYXRvciB3aWxsIG9ubHkgbWF0Y2ggYXQgcG9zaXRpb24KKyAqIDAuIEJ5IGRlZmF1bHQsIG92ZXJsYXBwaW5nIG1vZGUgaXMgbm90IHNldC48L3A+CisgKiAKKyAqIDxwPlRoZSBBUElzIGluIFNlYXJjaEl0ZXJhdG9yIGFyZSBzaW1pbGFyIHRvIHRoYXQgb2Ygb3RoZXIgdGV4dAorICogaXRlcmF0aW9uIGNsYXNzZXMgc3VjaCBhcyBCcmVha0l0ZXJhdG9yLiBVc2luZyB0aGlzIGNsYXNzLCBpdCBpcworICogZWFzeSB0byBzY2FuIHRocm91Z2ggdGV4dCBsb29raW5nIGZvciBhbGwgb2NjdXJhbmNlcyBvZiBhCisgKiBtYXRjaC48L3A+CisgKiA8cD4KKyAqIEV4YW1wbGUgb2YgdXNlOjxicj4KKyAqIDxwcmU+CisgKiBTdHJpbmcgdGFyZ2V0ID0gIlRoZSBxdWljayBicm93biBmb3gganVtcGVkIG92ZXIgdGhlIGxhenkgZm94IjsKKyAqIFN0cmluZyBwYXR0ZXJuID0gImZveCI7CisgKiBTZWFyY2hJdGVyYXRvciBpdGVyID0gbmV3IFN0cmluZ1NlYXJjaChwYXR0ZXJuLCB0YXJnZXQpOworICogZm9yIChpbnQgcG9zID0gaXRlci5maXJzdCgpOyBwb3MgIT0gU2VhcmNoSXRlcmF0b3IuRE9ORTsgCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgPSBpdGVyLm5leHQoKSkgeworICogICAgIC8vIHByaW50bG4gbWF0Y2hlcyBhdCBvZmZzZXQgMTYgYW5kIDQxIHdpdGggbGVuZ3RoIDMKKyAqICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkZvdW5kIG1hdGNoIGF0ICIgKyBwb3MgKyAiLCBsZW5ndGggaXMgIiAKKyAqICAgICAgICAgICAgICAgICAgICAgICAgKyBpdGVyLmdldE1hdGNoTGVuZ3RoKCkpOworICogfQorICogdGFyZ2V0ID0gImFiYWJhYmFiYSI7CisgKiBwYXR0ZXJuID0gImFiYSI7CisgKiBpdGVyLnNldFRhcmdldChuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IocGF0dGVybikpOworICogaXRlci5zZXRPdmVybGFwcGluZyhmYWxzZSk7CisgKiBTeXN0ZW0ub3V0LnByaW50bG4oIk92ZXJsYXBwaW5nIG1vZGUgc2V0IHRvIGZhbHNlIik7CisgKiBTeXN0ZW0ub3V0LnByaW50bG4oIkZvcndhcmQgbWF0Y2hlcyBvZiBwYXR0ZXJuICIgKyBwYXR0ZXJuICsgIiBpbiB0ZXh0ICIKKyAqICAgICAgICAgICAgICAgICAgICArIHRleHQgKyAiOiAiKTsKKyAqIGZvciAoaW50IHBvcyA9IGl0ZXIuZmlyc3QoKTsgcG9zICE9IFNlYXJjaEl0ZXJhdG9yLkRPTkU7IAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gaXRlci5uZXh0KCkpIHsKKyAqICAgICAvLyBwcmludGxuIG1hdGNoZXMgYXQgb2Zmc2V0IDAgYW5kIDQgd2l0aCBsZW5ndGggMworICogICAgIFN5c3RlbS5vdXQucHJpbnRsbigib2Zmc2V0ICIgKyBwb3MgKyAiLCBsZW5ndGggIiAKKyAqICAgICAgICAgICAgICAgICAgICAgICAgKyBpdGVyLmdldE1hdGNoTGVuZ3RoKCkpOworICogfQorICogU3lzdGVtLm91dC5wcmludGxuKCJCYWNrd2FyZCBtYXRjaGVzIG9mIHBhdHRlcm4gIiArIHBhdHRlcm4gKyAiIGluIHRleHQgIgorICogICAgICAgICAgICAgICAgICAgICsgdGV4dCArICI6ICIpOworICogZm9yIChpbnQgcG9zID0gaXRlci5sYXN0KCk7IHBvcyAhPSBTZWFyY2hJdGVyYXRvci5ET05FOyAKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcyA9IGl0ZXIucHJldmlvdXMoKSkgeworICogICAgIC8vIHByaW50bG4gbWF0Y2hlcyBhdCBvZmZzZXQgNiBhbmQgMiB3aXRoIGxlbmd0aCAzCisgKiAgICAgU3lzdGVtLm91dC5wcmludGxuKCJvZmZzZXQgIiArIHBvcyArICIsIGxlbmd0aCAiIAorICogICAgICAgICAgICAgICAgICAgICAgICArIGl0ZXIuZ2V0TWF0Y2hMZW5ndGgoKSk7CisgKiB9CisgKiBTeXN0ZW0ub3V0LnByaW50bG4oIk92ZXJsYXBwaW5nIG1vZGUgc2V0IHRvIHRydWUiKTsKKyAqIFN5c3RlbS5vdXQucHJpbnRsbigiSW5kZXggc2V0IHRvIDIiKTsKKyAqIGl0ZXIuc2V0SW5kZXgoMik7CisgKiBpdGVyLnNldE92ZXJsYXBwaW5nKHRydWUpOworICogU3lzdGVtLm91dC5wcmludGxuKCJGb3J3YXJkIG1hdGNoZXMgb2YgcGF0dGVybiAiICsgcGF0dGVybiArICIgaW4gdGV4dCAiCisgKiAgICAgICAgICAgICAgICAgICAgKyB0ZXh0ICsgIjogIik7CisgKiBmb3IgKGludCBwb3MgPSBpdGVyLmZpcnN0KCk7IHBvcyAhPSBTZWFyY2hJdGVyYXRvci5ET05FOyAKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcyA9IGl0ZXIubmV4dCgpKSB7CisgKiAgICAgLy8gcHJpbnRsbiBtYXRjaGVzIGF0IG9mZnNldCAyLCA0IGFuZCA2IHdpdGggbGVuZ3RoIDMKKyAqICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIm9mZnNldCAiICsgcG9zICsgIiwgbGVuZ3RoICIgCisgKiAgICAgICAgICAgICAgICAgICAgICAgICsgaXRlci5nZXRNYXRjaExlbmd0aCgpKTsKKyAqIH0KKyAqIFN5c3RlbS5vdXQucHJpbnRsbigiSW5kZXggc2V0IHRvIDIiKTsKKyAqIGl0ZXIuc2V0SW5kZXgoMik7CisgKiBTeXN0ZW0ub3V0LnByaW50bG4oIkJhY2t3YXJkIG1hdGNoZXMgb2YgcGF0dGVybiAiICsgcGF0dGVybiArICIgaW4gdGV4dCAiCisgKiAgICAgICAgICAgICAgICAgICAgKyB0ZXh0ICsgIjogIik7CisgKiBmb3IgKGludCBwb3MgPSBpdGVyLmxhc3QoKTsgcG9zICE9IFNlYXJjaEl0ZXJhdG9yLkRPTkU7IAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gaXRlci5wcmV2aW91cygpKSB7CisgKiAgICAgLy8gcHJpbnRsbiBtYXRjaGVzIGF0IG9mZnNldCAwIHdpdGggbGVuZ3RoIDMKKyAqICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIm9mZnNldCAiICsgcG9zICsgIiwgbGVuZ3RoICIgCisgKiAgICAgICAgICAgICAgICAgICAgICAgICsgaXRlci5nZXRNYXRjaExlbmd0aCgpKTsKKyAqIH0KKyAqIDwvcHJlPgorICogPC9wPgorICogQGF1dGhvciBMYXVyYSBXZXJuZXIsIHN5bndlZQorICogQHN0YWJsZSBJQ1UgMi4wCisgKiBAc2VlIEJyZWFrSXRlcmF0b3IKKyAqLworcHVibGljIGFic3RyYWN0IGNsYXNzIFNlYXJjaEl0ZXJhdG9yIAoreworCQorCS8vIHB1YmxpYyBkYXRhIG1lbWJlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCQorICAgIC8qKgorICAgICAqIERPTkUgaXMgcmV0dXJuZWQgYnkgcHJldmlvdXMoKSBhbmQgbmV4dCgpIGFmdGVyIGFsbCB2YWxpZCBtYXRjaGVzIGhhdmUgCisgICAgICogYmVlbiByZXR1cm5lZCwgYW5kIGJ5IGZpcnN0KCkgYW5kIGxhc3QoKSBpZiB0aGVyZSBhcmUgbm8gbWF0Y2hlcyBhdCBhbGwuCisgICAgICogQHNlZSAjcHJldmlvdXMKKyAgICAgKiBAc2VlICNuZXh0CisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRE9ORSA9IC0xOworICAgIAorICAgIC8vIHB1YmxpYyBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLy8gcHVibGljIHNldHRlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvKioKKyAgICAgKiA8cD4KKyAgICAgKiBTZXRzIHRoZSBwb3NpdGlvbiBpbiB0aGUgdGFyZ2V0IHRleHQgYXQgd2hpY2ggdGhlIG5leHQgc2VhcmNoIHdpbGwgc3RhcnQuCisgICAgICogVGhpcyBtZXRob2QgY2xlYXJzIGFueSBwcmV2aW91cyBtYXRjaC4KKyAgICAgKiA8L3A+CisgICAgICogQHBhcmFtIHBvc2l0aW9uIHBvc2l0aW9uIGZyb20gd2hpY2ggdG8gc3RhcnQgdGhlIG5leHQgc2VhcmNoCisgICAgICogQGV4Y2VwdGlvbiBJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIHRocm93biBpZiBhcmd1bWVudCBwb3NpdGlvbiBpcyBvdXQKKyAgICAgKiAgICAgICAgICAgIG9mIHRoZSB0YXJnZXQgdGV4dCByYW5nZS4KKyAgICAgKiBAc2VlICNnZXRJbmRleAorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0SW5kZXgoaW50IHBvc2l0aW9uKSB7CisgICAgICAgIGlmIChwb3NpdGlvbiA8IHRhcmdldFRleHQuZ2V0QmVnaW5JbmRleCgpIAorICAgICAgICAgICAgfHwgcG9zaXRpb24gPiB0YXJnZXRUZXh0LmdldEVuZEluZGV4KCkpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICJzZXRJbmRleChpbnQpIGV4cGVjdGVkIHBvc2l0aW9uIHRvIGJlIGJldHdlZW4gIiArCisgICAgICAgICAgICAgICAgdGFyZ2V0VGV4dC5nZXRCZWdpbkluZGV4KCkgKyAiIGFuZCAiICsgdGFyZ2V0VGV4dC5nZXRFbmRJbmRleCgpKTsKKyAgICAgICAgfQorICAgICAgICBtX3NldE9mZnNldF8gPSBwb3NpdGlvbjsKKyAgICAgICAgbV9yZXNldF8gPSBmYWxzZTsKKyAgICAgICAgbWF0Y2hMZW5ndGggPSAwOworICAgIH0KKwkKKwkvKioKKwkgKiA8cD4KKyAgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgb3ZlcmxhcHBpbmcgbWF0Y2hlcyBhcmUgcmV0dXJuZWQuIFNlZSB0aGUgY2xhc3MgCisgICAgICogZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBvdmVybGFwcGluZyBtYXRjaGVzLgorICAgICAqIDwvcD4KKwkgKiA8cD4KKyAgICAgKiBUaGUgZGVmYXVsdCBzZXR0aW5nIG9mIHRoaXMgcHJvcGVydHkgaXMgZmFsc2UKKyAgICAgKiA8L3A+CisJICogQHBhcmFtIGFsbG93T3ZlcmxhcCBmbGFnIGluZGljYXRvciBpZiBvdmVybGFwcGluZyBtYXRjaGVzIGFyZSBhbGxvd2VkCisgICAgICogQHNlZSAjaXNPdmVybGFwcGluZworCSAqIEBkcmFmdCBJQ1UgMi4yCisJICovCisJcHVibGljIHZvaWQgc2V0T3ZlcmxhcHBpbmcoYm9vbGVhbiBhbGxvd092ZXJsYXApCisJeworCQltX2lzT3ZlcmxhcF8gPSBhbGxvd092ZXJsYXA7CisJfQorCQorCS8qKgorICAgICAqIFNldCB0aGUgQnJlYWtJdGVyYXRvciB0aGF0IGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIHBvaW50cyBhdCB3aGljaCAKKyAgICAgKiBtYXRjaGVzIGFyZSBkZXRlY3RlZC4KKyAgICAgKiBVc2luZyA8dHQ+bnVsbDwvdHQ+IGFzIHRoZSBwYXJhbWV0ZXIgaXMgbGVnYWw7IGl0IG1lYW5zIHRoYXQgYnJlYWsgCisgICAgICogZGV0ZWN0aW9uIHNob3VsZCBub3QgYmUgYXR0ZW1wdGVkLgorICAgICAqIFNlZSBjbGFzcyBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAqIEBwYXJhbSBicmVha2l0ZXIgQSBCcmVha0l0ZXJhdG9yIHRoYXQgd2lsbCBiZSB1c2VkIHRvIHJlc3RyaWN0IHRoZSAKKyAgICAgKiAJCQkJCXBvaW50cyBhdCB3aGljaCBtYXRjaGVzIGFyZSBkZXRlY3RlZC4KKyAgICAgKiBAc2VlICNnZXRCcmVha0l0ZXJhdG9yCisgICAgICogQHNlZSBCcmVha0l0ZXJhdG9yCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0QnJlYWtJdGVyYXRvcihCcmVha0l0ZXJhdG9yIGJyZWFraXRlcikgCisgICAgeworICAgICAgICBicmVha0l0ZXJhdG9yID0gYnJlYWtpdGVyOworICAgICAgICBpZiAoYnJlYWtJdGVyYXRvciAhPSBudWxsKSB7CisgICAgICAgIAlicmVha0l0ZXJhdG9yLnNldFRleHQodGFyZ2V0VGV4dCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogU2V0IHRoZSB0YXJnZXQgdGV4dCB0byBiZSBzZWFyY2hlZC4gVGV4dCBpdGVyYXRpb24gd2lsbCB0aGVuIGJlZ2luIGF0IAorIAkgKiB0aGUgc3RhcnQgb2YgdGhlIHRleHQgc3RyaW5nLiBUaGlzIG1ldGhvZCBpcyB1c2VmdWwgaWYgeW91IHdhbnQgdG8gCisgICAgICogcmV1c2UgYW4gaXRlcmF0b3IgdG8gc2VhcmNoIHdpdGhpbiBhIGRpZmZlcmVudCBib2R5IG9mIHRleHQuCisJICogQHBhcmFtIHRleHQgbmV3IHRleHQgaXRlcmF0b3IgdG8gbG9vayBmb3IgbWF0Y2gsIAorCSAqIEBleGNlcHRpb24gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHRocm93biB3aGVuIHRleHQgaXMgbnVsbCBvciBoYXMKKwkgKiAJCQkgIDAgbGVuZ3RoCisJICogQHNlZSAjZ2V0VGFyZ2V0CisJICogQHN0YWJsZSBJQ1UgMi40CisJICovCisJcHVibGljIHZvaWQgc2V0VGFyZ2V0KENoYXJhY3Rlckl0ZXJhdG9yIHRleHQpCisJeworCQlpZiAodGV4dCA9PSBudWxsIHx8IHRleHQuZ2V0RW5kSW5kZXgoKSA9PSB0ZXh0LmdldEluZGV4KCkpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIklsbGVnYWwgbnVsbCBvciBlbXB0eSB0ZXh0Iik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHRhcmdldFRleHQgPSB0ZXh0OworICAgICAgICB0YXJnZXRUZXh0LnNldEluZGV4KHRhcmdldFRleHQuZ2V0QmVnaW5JbmRleCgpKTsKKyAgICAgICAgbWF0Y2hMZW5ndGggPSAwOworICAgICAgICBtX3Jlc2V0XyA9IHRydWU7CisgICAgICAgIG1faXNGb3J3YXJkU2VhcmNoaW5nXyA9IHRydWU7CisgICAgICAgIGlmIChicmVha0l0ZXJhdG9yICE9IG51bGwpIHsKKyAgICAgICAgCWJyZWFrSXRlcmF0b3Iuc2V0VGV4dCh0YXJnZXRUZXh0KTsKKyAgICAgICAgfQorCX0KKworCS8vIHB1YmxpYyBnZXR0ZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkKKwkvKioKKyAgICAgKiA8cD4KKyAgICAgKiBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbW9zdCByZWNlbnQgbWF0Y2ggaW4gdGhlIHRhcmdldCB0ZXh0LgorCSAqIFRoaXMgY2FsbCByZXR1cm5zIGEgdmFsaWQgcmVzdWx0IG9ubHkgYWZ0ZXIgYSBzdWNjZXNzZnVsIGNhbGwgdG8gCisJICoge0BsaW5rICNmaXJzdH0sIHtAbGluayAjbmV4dH0sIHtAbGluayAjcHJldmlvdXN9LCBvciB7QGxpbmsgI2xhc3R9LgorCSAqIEp1c3QgYWZ0ZXIgY29uc3RydWN0aW9uLCBvciBhZnRlciBhIHNlYXJjaGluZyBtZXRob2QgcmV0dXJucyAKKwkgKiA8dHQ+RE9ORTwvdHQ+LCB0aGlzIG1ldGhvZCB3aWxsIHJldHVybiA8dHQ+RE9ORTwvdHQ+LgorICAgICAqIDwvcD4KKwkgKiA8cD4KKyAgICAgKiBVc2UgPHR0PmdldE1hdGNoTGVuZ3RoPC90dD4gdG8gZ2V0IHRoZSBsZW5ndGggb2YgdGhlIG1hdGNoZWQgdGV4dC4KKyAgICAgKiA8dHQ+Z2V0TWF0Y2hlZFRleHQ8L3R0PiB3aWxsIHJldHVybiB0aGUgc3VidGV4dCBpbiB0aGUgc2VhcmNoZWQgCisgICAgICogdGFyZ2V0IHRleHQgZnJvbSBpbmRleCBnZXRNYXRjaFN0YXJ0KCkgd2l0aCBsZW5ndGggZ2V0TWF0Y2hMZW5ndGgoKS4gCisgICAgICogPC9wPgorCSAqIEByZXR1cm4gaW5kZXggdG8gYSBzdWJzdHJpbmcgd2l0aGluIHRoZSB0ZXh0IHN0cmluZyB0aGF0IGlzIGJlaW5nIAorCSAqICAgICAgICAgc2VhcmNoZWQuCisgICAgICogQHNlZSAjZ2V0TWF0Y2hMZW5ndGgKKyAgICAgKiBAc2VlICNnZXRNYXRjaGVkVGV4dAorICAgICAqIEBzZWUgI2ZpcnN0CisgICAgICogQHNlZSAjbmV4dAorICAgICAqIEBzZWUgI3ByZXZpb3VzCisgICAgICogQHNlZSAjbGFzdAorICAgICAqIEBzZWUgI0RPTkUKKwkgKiBAZHJhZnQgSUNVIDIuMgorCSAqLworCXB1YmxpYyBpbnQgZ2V0TWF0Y2hTdGFydCgpCisJeworICAgICAgICByZXR1cm4gbV9sYXN0TWF0Y2hTdGFydF87CisJfQorCisJLyoqCisgICAgICogUmV0dXJuIHRoZSBpbmRleCBpbiB0aGUgdGFyZ2V0IHRleHQgYXQgd2hpY2ggdGhlIGl0ZXJhdG9yIGlzIGN1cnJlbnRseQorICAgICAqIHBvc2l0aW9uZWQuIAorICAgICAqIElmIHRoZSBpdGVyYXRpb24gaGFzIGdvbmUgcGFzdCB0aGUgZW5kIG9mIHRoZSB0YXJnZXQgdGV4dCwgb3IgcGFzdCAKKyAgICAgKiB0aGUgYmVnaW5uaW5nIGZvciBhIGJhY2t3YXJkcyBzZWFyY2gsIHtAbGluayAjRE9ORX0gaXMgcmV0dXJuZWQuCisgICAgICogQHJldHVybiBpbmRleCBpbiB0aGUgdGFyZ2V0IHRleHQgYXQgd2hpY2ggdGhlIGl0ZXJhdG9yIGlzIGN1cnJlbnRseSAKKyAgICAgKiAgICAgICAgIHBvc2l0aW9uZWQuCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKiBAc2VlICNmaXJzdAorICAgICAqIEBzZWUgI25leHQKKyAgICAgKiBAc2VlICNwcmV2aW91cworICAgICAqIEBzZWUgI2xhc3QKKyAgICAgKiBAc2VlICNET05FCisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IGludCBnZXRJbmRleCgpOworICAgIAorICAgIC8qKgorICAgICAqIDxwPgorICAgICAqIFJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUgbW9zdCByZWNlbnQgbWF0Y2ggaW4gdGhlIHRhcmdldCB0ZXh0LiAKKyAgICAgKiBUaGlzIGNhbGwgcmV0dXJucyBhIHZhbGlkIHJlc3VsdCBvbmx5IGFmdGVyIGEgc3VjY2Vzc2Z1bAorICAgICAqIGNhbGwgdG8ge0BsaW5rICNmaXJzdH0sIHtAbGluayAjbmV4dH0sIHtAbGluayAjcHJldmlvdXN9LCBvciAKKyAgICAgKiB7QGxpbmsgI2xhc3R9LgorICAgICAqIEp1c3QgYWZ0ZXIgY29uc3RydWN0aW9uLCBvciBhZnRlciBhIHNlYXJjaGluZyBtZXRob2QgcmV0dXJucworICAgICAqIDx0dD5ET05FPC90dD4sIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIDAuIFNlZSBnZXRNYXRjaFN0YXJ0KCkgZm9yIAorICAgICAqIG1vcmUgZGV0YWlscy4KKyAgICAgKiA8L3A+CisgICAgICogQHJldHVybiBUaGUgbGVuZ3RoIG9mIHRoZSBtb3N0IHJlY2VudCBtYXRjaCBpbiB0aGUgdGFyZ2V0IHRleHQsIG9yIDAgaWYgCisgICAgICogICAgICAgICB0aGVyZSBpcyBubyBtYXRjaC4KKyAgICAgKiBAc2VlICNnZXRNYXRjaFN0YXJ0CisgICAgICogQHNlZSAjZ2V0TWF0Y2hlZFRleHQKKyAgICAgKiBAc2VlICNmaXJzdAorICAgICAqIEBzZWUgI25leHQKKyAgICAgKiBAc2VlICNwcmV2aW91cworICAgICAqIEBzZWUgI2xhc3QKKyAgICAgKiBAc2VlICNET05FCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGludCBnZXRNYXRjaExlbmd0aCgpIAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1hdGNoTGVuZ3RoOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBCcmVha0l0ZXJhdG9yIHRoYXQgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgaW5kZXhlcyBhdCB3aGljaCAKKyAgICAgKiBtYXRjaGVzIGFyZSBkZXRlY3RlZC4gVGhpcyB3aWxsIGJlIHRoZSBzYW1lIG9iamVjdCB0aGF0IHdhcyBwYXNzZWQgdG8gCisgICAgICogdGhlIGNvbnN0cnVjdG9yIG9yIHRvIDxjb2RlPnNldEJyZWFrSXRlcmF0b3I8L2NvZGU+LgorICAgICAqIElmIHRoZSBCcmVha0l0ZXJhdG9yIGhhcyBub3QgYmVlbiBzZXQsIDx0dD5udWxsPC90dD4gd2lsbCBiZSByZXR1cm5lZC4KKyAgICAgKiBTZWUgc2V0QnJlYWtJdGVyYXRvciBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgKiBAcmV0dXJuIHRoZSBCcmVha0l0ZXJhdG9yIHNldCB0byByZXN0cmljdCBsb2dpYyBtYXRjaGVzCisgICAgICogQHNlZSAjc2V0QnJlYWtJdGVyYXRvcgorICAgICAqIEBzZWUgQnJlYWtJdGVyYXRvcgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBCcmVha0l0ZXJhdG9yIGdldEJyZWFrSXRlcmF0b3IoKSAKKyAgICB7CisgICAgICAgIHJldHVybiBicmVha0l0ZXJhdG9yOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIHRhcmdldCB0ZXh0IHRoYXQgaXMgYmVpbmcgc2VhcmNoZWQuCisgICAgICogQHJldHVybiB0YXJnZXQgdGV4dCBiZWluZyBzZWFyY2hlZC4KKyAgICAgKiBAc2VlICNzZXRUYXJnZXQKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgQ2hhcmFjdGVySXRlcmF0b3IgZ2V0VGFyZ2V0KCkgCisgICAgeworICAgICAgICByZXR1cm4gdGFyZ2V0VGV4dDsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgdGV4dCB0aGF0IHdhcyBtYXRjaGVkIGJ5IHRoZSBtb3N0IHJlY2VudCBjYWxsIHRvIAorICAgICAqIHtAbGluayAjZmlyc3R9LCB7QGxpbmsgI25leHR9LCB7QGxpbmsgI3ByZXZpb3VzfSwgb3Ige0BsaW5rICNsYXN0fS4gCisgICAgICogSWYgdGhlIGl0ZXJhdG9yIGlzIG5vdCBwb2ludGluZyBhdCBhIHZhbGlkIG1hdGNoLCBmb3IgaW5zdGFuY2UganVzdCAKKyAgICAgKiBhZnRlciBjb25zdHJ1Y3Rpb24gb3IgYWZ0ZXIgPHR0PkRPTkU8L3R0PiBoYXMgYmVlbiByZXR1cm5lZCwgYW4gZW1wdHkgCisgICAgICogU3RyaW5nIHdpbGwgYmUgcmV0dXJuZWQuIFNlZSBnZXRNYXRjaFN0YXJ0IGZvciBtb3JlIGluZm9ybWF0aW9uCisgICAgICogQHNlZSAjZ2V0TWF0Y2hTdGFydAorICAgICAqIEBzZWUgI2dldE1hdGNoTGVuZ3RoCisgICAgICogQHNlZSAjZmlyc3QKKyAgICAgKiBAc2VlICNuZXh0CisgICAgICogQHNlZSAjcHJldmlvdXMKKyAgICAgKiBAc2VlICNsYXN0CisgICAgICogQHNlZSAjRE9ORQorICAgICAqIEByZXR1cm4gdGhlIHN1YnN0cmluZyBpbiB0aGUgdGFyZ2V0IHRleHQgb2YgdGhlIG1vc3QgcmVjZW50IG1hdGNoIAorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgZ2V0TWF0Y2hlZFRleHQoKSAKKyAgICB7CisgICAgICAgIGlmIChtYXRjaExlbmd0aCA+IDApIHsKKyAgICAgICAgICAgIGludCBsaW1pdCA9IG1fbGFzdE1hdGNoU3RhcnRfICsgbWF0Y2hMZW5ndGg7CisgICAgCQlTdHJpbmdCdWZmZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcihtYXRjaExlbmd0aCk7CisgICAgCQlyZXN1bHQuYXBwZW5kKHRhcmdldFRleHQuY3VycmVudCgpKTsKKyAgICAJCXRhcmdldFRleHQubmV4dCgpOworICAgIAkJd2hpbGUgKHRhcmdldFRleHQuZ2V0SW5kZXgoKSA8IGxpbWl0KSB7CisgICAgCQkJcmVzdWx0LmFwcGVuZCh0YXJnZXRUZXh0LmN1cnJlbnQoKSk7CisgICAgCQkJdGFyZ2V0VGV4dC5uZXh0KCk7CisgICAgCQl9CisgICAgICAgICAgICB0YXJnZXRUZXh0LnNldEluZGV4KG1fbGFzdE1hdGNoU3RhcnRfKTsKKyAgICAJCXJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKKyAgICAJfQorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKwkvLyBtaXNjZWxsYW5lb3VzIHB1YmxpYyBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJCQorCS8qKgorICAgICAqIFNlYXJjaCA8Yj5mb3J3YXJkczwvYj4gaW4gdGhlIHRhcmdldCB0ZXh0IGZvciB0aGUgbmV4dCB2YWxpZCBtYXRjaCwKKyAgICAgKiBzdGFydGluZyB0aGUgc2VhcmNoIGZyb20gdGhlIGN1cnJlbnQgaXRlcmF0b3IgcG9zaXRpb24uIFRoZSBpdGVyYXRvciBpcyAKKwkgKiBhZGp1c3RlZCBzbyB0aGF0IGl0cyBjdXJyZW50IGluZGV4LCBhcyByZXR1cm5lZCBieSB7QGxpbmsgI2dldEluZGV4fSwKKwkgKiBpcyB0aGUgc3RhcnRpbmcgcG9zaXRpb24gb2YgdGhlIG1hdGNoIGlmIG9uZSB3YXMgZm91bmQuIElmIGEgbWF0Y2ggaXMgCisgICAgICogZm91bmQsIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2ggaXMgcmV0dXJuZWQsIG90aGVyd2lzZSA8dHQ+RE9ORTwvdHQ+IGlzCisgICAgICogcmV0dXJuZWQuICBJZiBvdmVybGFwcGluZyBtb2RlIGlzIHNldCwgdGhlIGJlZ2lubmluZyBvZiB0aGUgZm91bmQgbWF0Y2gKKyAgICAgKiBjYW4gYmUgYmVmb3JlIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgbWF0Y2gsIGlmIGFueS4KKwkgKiBAcmV0dXJuIFRoZSBzdGFydGluZyBpbmRleCBvZiB0aGUgbmV4dCBmb3J3YXJkIG1hdGNoIGFmdGVyIHRoZSBjdXJyZW50IAorICAgICAqICAgICAgICAgaXRlcmF0b3IgcG9zaXRpb24sIG9yIAorCSAqICAgICAgICAgPHR0PkRPTkU8L3R0PiBpZiB0aGVyZSBhcmUgbm8gbW9yZSBtYXRjaGVzLgorCSAqIEBzZWUgI2dldE1hdGNoU3RhcnQKKyAgICAgKiBAc2VlICNnZXRNYXRjaExlbmd0aAorICAgICAqIEBzZWUgI2dldE1hdGNoZWRUZXh0CisgICAgICogQHNlZSAjZm9sbG93aW5nCisgICAgICogQHNlZSAjcHJlY2VkaW5nCisgICAgICogQHNlZSAjcHJldmlvdXMKKyAgICAgKiBAc2VlICNmaXJzdAorICAgICAqIEBzZWUgI2xhc3QKKyAgICAgKiBAc2VlICNET05FCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGludCBuZXh0KCkKKyAgICB7CisgICAgCWludCBzdGFydCA9IHRhcmdldFRleHQuZ2V0SW5kZXgoKTsKKyAgICAJaWYgKG1fc2V0T2Zmc2V0XyAhPSBET05FKSB7CisJICAgIAlzdGFydCA9IG1fc2V0T2Zmc2V0XzsJCisJICAgIAltX3NldE9mZnNldF8gPSBET05FOwkKKwkgICAgfQorCSAgICBpZiAobV9pc0ZvcndhcmRTZWFyY2hpbmdfKSB7CisJICAgIAlpZiAoIW1fcmVzZXRfICYmIAorCSAgICAgICAgCXN0YXJ0ICsgbWF0Y2hMZW5ndGggPj0gdGFyZ2V0VGV4dC5nZXRFbmRJbmRleCgpKSB7CisJICAgICAgICAgICAgLy8gbm90IGVub3VnaCBjaGFyYWN0ZXJzIHRvIG1hdGNoCisgICAgICAgICAgICAgICAgbWF0Y2hMZW5ndGggPSAwOworICAgICAgICAgICAgICAgIHRhcmdldFRleHQuc2V0SW5kZXgodGFyZ2V0VGV4dC5nZXRFbmRJbmRleCgpKTsKKyAgICAgICAgICAgICAgICBtX2xhc3RNYXRjaFN0YXJ0XyA9IERPTkU7CisJICAgICAgICAgICAgcmV0dXJuIERPTkU7IAorCSAgICAgICAgfQorCSAgICAgICAgbV9yZXNldF8gPSBmYWxzZTsKKwkgICAgfQorCSAgICBlbHNlIHsKKwkgICAgICAgIC8vIHN3aXRjaGluZyBkaXJlY3Rpb24uIAorCSAgICAgICAgLy8gaWYgbWF0Y2hlZEluZGV4ID09IFVTRUFSQ0hfRE9ORSwgaXQgbWVhbnMgdGhhdCBlaXRoZXIgYSAKKwkgICAgICAgIC8vIHNldEluZGV4IGhhcyBiZWVuIGNhbGxlZCBvciB0aGF0IHByZXZpb3VzIHJhbiBvZmYgdGhlIHRleHQKKwkgICAgICAgIC8vIHN0cmluZy4gdGhlIGl0ZXJhdG9yIHdvdWxkIGhhdmUgYmVlbiBzZXQgdG8gb2Zmc2V0IDAgaWYgYSAKKwkgICAgICAgIC8vIG1hdGNoIGlzIG5vdCBmb3VuZC4KKwkgICAgICAgIG1faXNGb3J3YXJkU2VhcmNoaW5nXyA9IHRydWU7CisJICAgICAgICBpZiAoc3RhcnQgIT0gRE9ORSkgeworCSAgICAgICAgICAgIC8vIHRoZXJlJ3Mgbm8gbmVlZCB0byBzZXQgdGhlIGNvbGxhdGlvbiBlbGVtZW50IGl0ZXJhdG9yCisJICAgICAgICAgICAgLy8gdGhlIG5leHQgY2FsbCB0byBuZXh0IHdpbGwgc2V0IHRoZSBvZmZzZXQuCisJICAgICAgICAgICAgcmV0dXJuIHN0YXJ0OworCSAgICAgICAgfQorCSAgICB9CisJICAgIAorICAgICAgICBpZiAoc3RhcnQgPT0gRE9ORSkgeworICAgICAgICAgICAgc3RhcnQgPSB0YXJnZXRUZXh0LmdldEJlZ2luSW5kZXgoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAobWF0Y2hMZW5ndGggPiAwKSB7CisgICAgICAgICAgICAvLyBpZiBtYXRjaCBsZW5ndGggaXMgMCB3ZSBhcmUgYXQgdGhlIHN0YXJ0IG9mIHRoZSBpdGVyYXRpb24KKyAgICAgICAgICAgIGlmIChtX2lzT3ZlcmxhcF8pIHsKKyAgICAgICAgICAgICAgICBzdGFydCArKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHN0YXJ0ICs9IG1hdGNoTGVuZ3RoOworICAgICAgICAgICAgfQorICAgICAgICB9CisJICAgIG1fbGFzdE1hdGNoU3RhcnRfID0gaGFuZGxlTmV4dChzdGFydCk7CisgICAgICAgIHJldHVybiBtX2xhc3RNYXRjaFN0YXJ0XzsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZWFyY2ggPGI+YmFja3dhcmRzPC9iPiBpbiB0aGUgdGFyZ2V0IHRleHQgZm9yIHRoZSBuZXh0IHZhbGlkIG1hdGNoLAorICAgICAqIHN0YXJ0aW5nIHRoZSBzZWFyY2ggZnJvbSB0aGUgY3VycmVudCBpdGVyYXRvciBwb3NpdGlvbi4gVGhlIGl0ZXJhdG9yIGlzIAorICAgICAqIGFkanVzdGVkIHNvIHRoYXQgaXRzIGN1cnJlbnQgaW5kZXgsIGFzIHJldHVybmVkIGJ5IHtAbGluayAjZ2V0SW5kZXh9LAorICAgICAqIGlzIHRoZSBzdGFydGluZyBwb3NpdGlvbiBvZiB0aGUgbWF0Y2ggaWYgb25lIHdhcyBmb3VuZC4gSWYgYSBtYXRjaCBpcyAKKyAgICAgKiBmb3VuZCwgdGhlIGluZGV4IGlzIHJldHVybmVkLCBvdGhlcndpc2UgPHR0PkRPTkU8L3R0PiBpcyByZXR1cm5lZC4gIElmCisgICAgICogb3ZlcmxhcHBpbmcgbW9kZSBpcyBzZXQsIHRoZSBlbmQgb2YgdGhlIGZvdW5kIG1hdGNoIGNhbiBiZSBhZnRlciB0aGUKKyAgICAgKiBiZWdpbm5pbmcgb2YgdGhlIHByZXZpb3VzIG1hdGNoLCBpZiBhbnkuCisgICAgICogQHJldHVybiBUaGUgc3RhcnRpbmcgaW5kZXggb2YgdGhlIG5leHQgYmFja3dhcmRzIG1hdGNoIGFmdGVyIHRoZSBjdXJyZW50IAorICAgICAqICAgICAgICAgaXRlcmF0b3IgcG9zaXRpb24sIG9yIAorICAgICAqICAgICAgICAgPHR0PkRPTkU8L3R0PiBpZiB0aGVyZSBhcmUgbm8gbW9yZSBtYXRjaGVzLgorICAgICAqIEBzZWUgI2dldE1hdGNoU3RhcnQKKyAgICAgKiBAc2VlICNnZXRNYXRjaExlbmd0aAorICAgICAqIEBzZWUgI2dldE1hdGNoZWRUZXh0CisgICAgICogQHNlZSAjZm9sbG93aW5nCisgICAgICogQHNlZSAjcHJlY2VkaW5nCisgICAgICogQHNlZSAjbmV4dAorICAgICAqIEBzZWUgI2ZpcnN0CisgICAgICogQHNlZSAjbGFzdAorICAgICAqIEBzZWUgI0RPTkUKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IHByZXZpb3VzKCkKKyAgICB7CisgICAgCWludCBzdGFydCA9IHRhcmdldFRleHQuZ2V0SW5kZXgoKTsKKyAgICAJaWYgKG1fc2V0T2Zmc2V0XyAhPSBET05FKSB7CisJICAgIAlzdGFydCA9IG1fc2V0T2Zmc2V0XzsJCisJICAgIAltX3NldE9mZnNldF8gPSBET05FOwkKKwkgICAgfQorICAgIAlpZiAobV9yZXNldF8pIHsKKyAgICAgICAgICAgIG1faXNGb3J3YXJkU2VhcmNoaW5nXyA9IGZhbHNlOworICAgICAgICAgICAgbV9yZXNldF8gPSBmYWxzZTsKKyAgICAgICAgICAgIHN0YXJ0ID0gdGFyZ2V0VGV4dC5nZXRFbmRJbmRleCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAobV9pc0ZvcndhcmRTZWFyY2hpbmdfID09IHRydWUpIHsKKyAgICAgICAgICAgIC8vIHN3aXRjaGluZyBkaXJlY3Rpb24uIAorICAgICAgICAgICAgLy8gaWYgbWF0Y2hlZEluZGV4ID09IFVTRUFSQ0hfRE9ORSwgaXQgbWVhbnMgdGhhdCBlaXRoZXIgYSAKKyAgICAgICAgICAgIC8vIHNldEluZGV4IGhhcyBiZWVuIGNhbGxlZCBvciB0aGF0IG5leHQgcmFuIG9mZiB0aGUgdGV4dAorICAgICAgICAgICAgLy8gc3RyaW5nLiB0aGUgaXRlcmF0b3Igd291bGQgaGF2ZSBiZWVuIHNldCB0byBvZmZzZXQgdGV4dExlbmd0aCBpZiAKKyAgICAgICAgICAgIC8vIGEgbWF0Y2ggaXMgbm90IGZvdW5kLgorICAgICAgICAgICAgbV9pc0ZvcndhcmRTZWFyY2hpbmdfID0gZmFsc2U7CisgICAgICAgICAgICBpZiAoc3RhcnQgIT0gdGFyZ2V0VGV4dC5nZXRFbmRJbmRleCgpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXJ0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAJaWYgKHN0YXJ0ID09IHRhcmdldFRleHQuZ2V0QmVnaW5JbmRleCgpKSB7CisgICAgICAgICAgICAgICAgLy8gbm90IGVub3VnaCBjaGFyYWN0ZXJzIHRvIG1hdGNoCisgICAgICAgICAgICAgICAgbWF0Y2hMZW5ndGggPSAwOworICAgICAgICAgICAgICAgIHRhcmdldFRleHQuc2V0SW5kZXgodGFyZ2V0VGV4dC5nZXRCZWdpbkluZGV4KCkpOworICAgICAgICAgICAgICAgIG1fbGFzdE1hdGNoU3RhcnRfID0gRE9ORTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRE9ORTsgCisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBtX2xhc3RNYXRjaFN0YXJ0XyA9IGhhbmRsZVByZXZpb3VzKHN0YXJ0KTsKKyAgICAgICAgcmV0dXJuIG1fbGFzdE1hdGNoU3RhcnRfOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSBvdmVybGFwcGluZyBwcm9wZXJ0eSBoYXMgYmVlbiBzZXQuCisgICAgICogU2VlIHNldE92ZXJsYXBwaW5nKGJvb2xlYW4pIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAqIEBzZWUgI3NldE92ZXJsYXBwaW5nCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSBvdmVybGFwcGluZyBwcm9wZXJ0eSBoYXMgYmVlbiBzZXQsIGZhbHNlIG90aGVyd2lzZQorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNPdmVybGFwcGluZygpIAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faXNPdmVybGFwXzsKKyAgICB9CisgICAgCisgICAgLyoqIAorCSAqIDxwPgorICAgICAqIFJlc2V0cyB0aGUgc2VhcmNoIGl0ZXJhdGlvbi4gQWxsIHByb3BlcnRpZXMgd2lsbCBiZSByZXNldCB0byB0aGVpcgorICAgICAqIGRlZmF1bHQgdmFsdWVzLgorICAgICAqIDwvcD4KKwkgKiA8cD4KKyAgICAgKiBJZiBhIGZvcndhcmQgaXRlcmF0aW9uIGlzIGluaXRpYXRlZCwgdGhlIG5leHQgc2VhcmNoIHdpbGwgYmVnaW4gYXQgdGhlCisgICAgICogc3RhcnQgb2YgdGhlIHRhcmdldCB0ZXh0LiBPdGhlcndpc2UsIGlmIGEgYmFja3dhcmRzIGl0ZXJhdGlvbiBpcyBpbml0aWF0ZWQsCisgICAgICogdGhlIG5leHQgc2VhcmNoIHdpbGwgYmVnaW4gYXQgdGhlIGVuZCBvZiB0aGUgdGFyZ2V0IHRleHQuCisgICAgICogPC9wPgorCSAqIEBkcmFmdCBJQ1UgMi4yCisJICovCisJcHVibGljIHZvaWQgcmVzZXQoKQorCXsKKwkJLy8gcmVzZXQgaXMgc2V0dGluZyB0aGUgYXR0cmlidXRlcyB0aGF0IGFyZSBhbHJlYWR5IGluIHN0cmluZyBzZWFyY2gKKyAgICAgICAgbWF0Y2hMZW5ndGggPSAwOworICAgICAgICBzZXRJbmRleCh0YXJnZXRUZXh0LmdldEJlZ2luSW5kZXgoKSk7CisgICAgICAgIG1faXNPdmVybGFwXyA9IGZhbHNlOworICAgICAgICBtX2lzRm9yd2FyZFNlYXJjaGluZ18gPSB0cnVlOworICAgICAgICBtX3Jlc2V0XyA9IHRydWU7CisgICAgICAgIG1fc2V0T2Zmc2V0XyA9IERPTkU7CisJfQorCQorCS8qKgorICAgICAqIFJldHVybiB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IDxiPmZvcndhcmQ8L2I+IG1hdGNoIGluIHRoZSB0YXJnZXQgdGV4dC4gCisgICAgICogVGhpcyBtZXRob2Qgc2V0cyB0aGUgaXRlcmF0aW9uIHRvIGJlZ2luIGF0IHRoZSBzdGFydCBvZiB0aGUgCisgICAgICogdGFyZ2V0IHRleHQgYW5kIHNlYXJjaGVzIGZvcndhcmQgZnJvbSB0aGVyZS4KKyAgICAgKiBAcmV0dXJuIFRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZm9yd2FyZCBtYXRjaCwgb3IgPGNvZGU+RE9ORTwvY29kZT4gCisgICAgICogCQkgICBpZiB0aGVyZSBhcmUgbm8gbWF0Y2hlcy4KKyAgICAgKiBAc2VlICNnZXRNYXRjaFN0YXJ0CisgICAgICogQHNlZSAjZ2V0TWF0Y2hMZW5ndGgKKyAgICAgKiBAc2VlICNnZXRNYXRjaGVkVGV4dAorICAgICAqIEBzZWUgI2ZvbGxvd2luZworICAgICAqIEBzZWUgI3ByZWNlZGluZworICAgICAqIEBzZWUgI25leHQKKyAgICAgKiBAc2VlICNwcmV2aW91cworICAgICAqIEBzZWUgI2xhc3QKKyAgICAgKiBAc2VlICNET05FCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGZpbmFsIGludCBmaXJzdCgpIAorICAgIHsKKyAgICAgICAgbV9pc0ZvcndhcmRTZWFyY2hpbmdfID0gdHJ1ZTsKKyAgICAgICAgc2V0SW5kZXgodGFyZ2V0VGV4dC5nZXRCZWdpbkluZGV4KCkpOworICAgICAgICByZXR1cm4gbmV4dCgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IDxiPmZvcndhcmQ8L2I+IG1hdGNoIGluIHRhcmdldCB0ZXh0IHRoYXQgCisgICAgICogaXMgYXQgb3IgYWZ0ZXIgYXJndW1lbnQgPHR0PnBvc2l0aW9uPC90dD4uIAorICAgICAqIFRoaXMgbWV0aG9kIHNldHMgdGhlIGl0ZXJhdGlvbiB0byBiZWdpbiBhdCB0aGUgc3BlY2lmaWVkCisgICAgICogcG9zaXRpb24gaW4gdGhlIHRoZSB0YXJnZXQgdGV4dCBhbmQgc2VhcmNoZXMgZm9yd2FyZCBmcm9tIHRoZXJlLgorICAgICAqIEByZXR1cm4gVGhlIGluZGV4IG9mIHRoZSBmaXJzdCBmb3J3YXJkIG1hdGNoLCBvciA8Y29kZT5ET05FPC9jb2RlPiAKKyAgICAgKiAgICAgICAgIGlmIHRoZXJlIGFyZSBubyBtYXRjaGVzLgorICAgICAqIEBzZWUgI2dldE1hdGNoU3RhcnQKKyAgICAgKiBAc2VlICNnZXRNYXRjaExlbmd0aAorICAgICAqIEBzZWUgI2dldE1hdGNoZWRUZXh0CisgICAgICogQHNlZSAjZmlyc3QKKyAgICAgKiBAc2VlICNwcmVjZWRpbmcKKyAgICAgKiBAc2VlICNuZXh0CisgICAgICogQHNlZSAjcHJldmlvdXMKKyAgICAgKiBAc2VlICNsYXN0CisgICAgICogQHNlZSAjRE9ORQorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBpbnQgZm9sbG93aW5nKGludCBwb3NpdGlvbikgCisgICAgeworICAgIAltX2lzRm9yd2FyZFNlYXJjaGluZ18gPSB0cnVlOworICAgIAkvLyBwb3NpdGlvbiBjaGVja2VkIGluIHVzZWFyY2hfc2V0T2Zmc2V0CisgICAgICAgIHNldEluZGV4KHBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIG5leHQoKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgPGI+YmFja3dhcmQ8L2I+IG1hdGNoIGluIHRhcmdldCB0ZXh0LiAKKyAgICAgKiBUaGlzIG1ldGhvZCBzZXRzIHRoZSBpdGVyYXRpb24gdG8gYmVnaW4gYXQgdGhlIGVuZCBvZiB0aGUgCisgICAgICogdGFyZ2V0IHRleHQgYW5kIHNlYXJjaGVzIGJhY2t3YXJkcyBmcm9tIHRoZXJlLgorICAgICAqIEByZXR1cm4gVGhlIHN0YXJ0aW5nIGluZGV4IG9mIHRoZSBmaXJzdCBiYWNrd2FyZCBtYXRjaCwgb3IgCisgICAgICogICAgICAgICA8Y29kZT5ET05FPC9jb2RlPiBpZiB0aGVyZSBhcmUgbm8gbWF0Y2hlcy4KKyAgICAgKiBAc2VlICNnZXRNYXRjaFN0YXJ0CisgICAgICogQHNlZSAjZ2V0TWF0Y2hMZW5ndGgKKyAgICAgKiBAc2VlICNnZXRNYXRjaGVkVGV4dAorICAgICAqIEBzZWUgI2ZpcnN0CisgICAgICogQHNlZSAjcHJlY2VkaW5nCisgICAgICogQHNlZSAjbmV4dAorICAgICAqIEBzZWUgI3ByZXZpb3VzCisgICAgICogQHNlZSAjZm9sbG93aW5nCisgICAgICogQHNlZSAjRE9ORQorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBpbnQgbGFzdCgpIAorICAgIHsKKyAgICAgICAgbV9pc0ZvcndhcmRTZWFyY2hpbmdfID0gZmFsc2U7CisgICAgICAgIHNldEluZGV4KHRhcmdldFRleHQuZ2V0RW5kSW5kZXgoKSk7CisgICAgICAgIHJldHVybiBwcmV2aW91cygpOworICAgIH0KKyAgICAgCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgPGI+YmFja3dhcmRzPC9iPiBtYXRjaCBpbiB0YXJnZXQgCisgICAgICogdGV4dCB0aGF0IGVuZHMgYXQgb3IgYmVmb3JlIGFyZ3VtZW50IDx0dD5wb3NpdGlvbjwvdHQ+LiAKKyAgICAgKiBUaGlzIG1ldGhvZCBzZXRzIHRoZSBpdGVyYXRpb24gdG8gYmVnaW4gYXQgdGhlIGFyZ3VtZW50CisgICAgICogcG9zaXRpb24gaW5kZXggb2YgdGhlIHRhcmdldCB0ZXh0IGFuZCBzZWFyY2hlcyBiYWNrd2FyZHMgZnJvbSB0aGVyZS4KKyAgICAgKiBAcmV0dXJuIFRoZSBzdGFydGluZyBpbmRleCBvZiB0aGUgZmlyc3QgYmFja3dhcmRzIG1hdGNoLCBvciAKKyAgICAgKiAgICAgICAgIDxjb2RlPkRPTkU8L2NvZGU+IAorICAgICAqICAgICAgICAgaWYgdGhlcmUgYXJlIG5vIG1hdGNoZXMuCisgICAgICogQHNlZSAjZ2V0TWF0Y2hTdGFydAorICAgICAqIEBzZWUgI2dldE1hdGNoTGVuZ3RoCisgICAgICogQHNlZSAjZ2V0TWF0Y2hlZFRleHQKKyAgICAgKiBAc2VlICNmaXJzdAorICAgICAqIEBzZWUgI2ZvbGxvd2luZworICAgICAqIEBzZWUgI25leHQKKyAgICAgKiBAc2VlICNwcmV2aW91cworICAgICAqIEBzZWUgI2xhc3QKKyAgICAgKiBAc2VlICNET05FCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGZpbmFsIGludCBwcmVjZWRpbmcoaW50IHBvc2l0aW9uKSAKKyAgICB7CisgICAgICAgIG1faXNGb3J3YXJkU2VhcmNoaW5nXyA9IGZhbHNlOworICAgICAgICAvLyBwb3NpdGlvbiBjaGVja2VkIGluIHVzZWFyY2hfc2V0T2Zmc2V0CisgICAgICAgIHNldEluZGV4KHBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIHByZXZpb3VzKCk7ICAgCisgICAgfQorICAgIAorICAgIC8vIHByb3RlY3RlZCBkYXRhIG1lbWJlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgICogVGhlIEJyZWFrSXRlcmF0b3IgdG8gZGVmaW5lIHRoZSBib3VuZGFyaWVzIG9mIGEgbG9naWNhbCBtYXRjaC4KKyAgICAgKiBUaGlzIHZhbHVlIGNhbiBiZSBhIG51bGwuCisgICAgICogU2VlIGNsYXNzIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICogQHNlZSAjc2V0QnJlYWtJdGVyYXRvcihCcmVha0l0ZXJhdG9yKQorICAgICAqIEBzZWUgI2dldEJyZWFrSXRlcmF0b3IKKyAgICAgKiBAc2VlIEJyZWFrSXRlcmF0b3IKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgQnJlYWtJdGVyYXRvciBicmVha0l0ZXJhdG9yOyAKKworICAgIC8qKgorICAgICAqIFRhcmdldCB0ZXh0IGZvciBzZWFyY2hpbmcuCisgICAgICogQHNlZSAjc2V0VGFyZ2V0KENoYXJhY3Rlckl0ZXJhdG9yKQorICAgICAqIEBzZWUgI2dldFRhcmdldAorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHByb3RlY3RlZCBDaGFyYWN0ZXJJdGVyYXRvciB0YXJnZXRUZXh0OworICAgIC8qKgorICAgICAqIExlbmd0aCBvZiB0aGUgbW9zdCBjdXJyZW50IG1hdGNoIGluIHRhcmdldCB0ZXh0LiAKKyAgICAgKiBWYWx1ZSAwIGlzIHRoZSBkZWZhdWx0IHZhbHVlLgorICAgICAqIEBzZWUgI3NldE1hdGNoTGVuZ3RoCisgICAgICogQHNlZSAjZ2V0TWF0Y2hMZW5ndGgKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgaW50IG1hdGNoTGVuZ3RoOworICAgIAorICAgIC8vIHByb3RlY3RlZCBjb25zdHJ1Y3RvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisJLyoqCisgICAgICogUHJvdGVjdGVkIGNvbnN0cnVjdG9yIGZvciB1c2UgYnkgc3ViY2xhc3Nlcy4KKyAgICAgKiBJbml0aWFsaXplcyB0aGUgaXRlcmF0b3Igd2l0aCB0aGUgYXJndW1lbnQgdGFyZ2V0IHRleHQgZm9yIHNlYXJjaGluZyAKKyAgICAgKiBhbmQgc2V0cyB0aGUgQnJlYWtJdGVyYXRvci4KKyAgICAgKiBTZWUgY2xhc3MgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBkZXRhaWxzIG9uIHRoZSB1c2Ugb2YgdGhlIHRhcmdldCB0ZXh0CisgICAgICogYW5kIEJyZWFrSXRlcmF0b3IuCisgICAgICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IHRleHQgdG8gYmUgc2VhcmNoZWQuCisgICAgICogQHBhcmFtIGJyZWFrZXIgQSB7QGxpbmsgQnJlYWtJdGVyYXRvcn0gdGhhdCBpcyB1c2VkIHRvIGRldGVybWluZSB0aGUgCisgICAgICogICAgICAgICAgICAgICAgYm91bmRhcmllcyBvZiBhIGxvZ2ljYWwgbWF0Y2guIFRoaXMgYXJndW1lbnQgY2FuIGJlIG51bGwuCisgICAgICogQGV4Y2VwdGlvbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gdGhyb3duIHdoZW4gYXJndW1lbnQgdGFyZ2V0IGlzIG51bGwsCisgICAgICogICAgICAgICAgICBvciBvZiBsZW5ndGggMAorICAgICAqIEBzZWUgQnJlYWtJdGVyYXRvciAgCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHJvdGVjdGVkIFNlYXJjaEl0ZXJhdG9yKENoYXJhY3Rlckl0ZXJhdG9yIHRhcmdldCwgQnJlYWtJdGVyYXRvciBicmVha2VyKQorICAgIHsKKyAgICAgICAgaWYgKHRhcmdldCA9PSBudWxsIAorICAgICAgICAgICAgfHwgKHRhcmdldC5nZXRFbmRJbmRleCgpIC0gdGFyZ2V0LmdldEJlZ2luSW5kZXgoKSkgPT0gMCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbGxlZ2FsIGFyZ3VtZW50IHRhcmdldC4gIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgQXJndW1lbnQgY2FuIG5vdCBiZSBudWxsIG9yIG9mIGxlbmd0aCAwIik7CisgICAgICAgIH0KKyAgICAJdGFyZ2V0VGV4dCA9IHRhcmdldDsKKyAgICAJYnJlYWtJdGVyYXRvciA9IGJyZWFrZXI7CisgICAgCWlmIChicmVha0l0ZXJhdG9yICE9IG51bGwpIHsKKyAgICAJCWJyZWFrSXRlcmF0b3Iuc2V0VGV4dCh0YXJnZXQpOworICAgIAl9CisgICAgCW1hdGNoTGVuZ3RoID0gMDsKKyAgICAgICAgbV9sYXN0TWF0Y2hTdGFydF8gPSBET05FOworICAgICAgICBtX2lzT3ZlcmxhcF8gPSBmYWxzZTsKKyAgICAgICAgbV9pc0ZvcndhcmRTZWFyY2hpbmdfID0gdHJ1ZTsKKyAgICAgICAgbV9yZXNldF8gPSB0cnVlOworICAgICAgICBtX3NldE9mZnNldF8gPSBET05FOworICAgIH0gICAgCisgICAgCisgICAgLy8gcHJvdGVjdGVkIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgCisgICAgLyoqCisJICogU2V0cyB0aGUgbGVuZ3RoIG9mIHRoZSBtb3N0IHJlY2VudCBtYXRjaCBpbiB0aGUgdGFyZ2V0IHRleHQuIAorCSAqIFN1YmNsYXNzZXMnIGhhbmRsZU5leHQoKSBhbmQgaGFuZGxlUHJldmlvdXMoKSBtZXRob2RzIHNob3VsZCBjYWxsIHRoaXMgCisgICAgICogYWZ0ZXIgdGhleSBmaW5kIGEgbWF0Y2ggaW4gdGhlIHRhcmdldCB0ZXh0LiAgICAKKwkgKiBAcGFyYW0gbGVuZ3RoIG5ldyBsZW5ndGggdG8gc2V0CisgICAgICogQHNlZSAjaGFuZGxlTmV4dAorICAgICAqIEBzZWUgI2hhbmRsZVByZXZpb3VzCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisJICovCisgICAgcHJvdGVjdGVkIHZvaWQgc2V0TWF0Y2hMZW5ndGgoaW50IGxlbmd0aCkKKyAgICB7CisgICAgCW1hdGNoTGVuZ3RoID0gbGVuZ3RoOworICAgIH0KKworCS8qKgorCSAqIDxwPgorICAgICAqIEFic3RyYWN0IG1ldGhvZCB0aGF0IHN1YmNsYXNzZXMgb3ZlcnJpZGUgdG8gcHJvdmlkZSB0aGUgbWVjaGFuaXNtIAorCSAqIGZvciBmaW5kaW5nIHRoZSBuZXh0IDxiPmZvcndhcmRzPC9iPiBtYXRjaCBpbiB0aGUgdGFyZ2V0IHRleHQuIFRoaXMgCisgICAgICogYWxsb3dzIGRpZmZlcmVudCBzdWJjbGFzc2VzIHRvIHByb3ZpZGUgZGlmZmVyZW50IHNlYXJjaCBhbGdvcml0aG1zLgorICAgICAqIDwvcD4gCisJICogPHA+CisgICAgICogSWYgYSBtYXRjaCBpcyBmb3VuZCwgdGhpcyBmdW5jdGlvbiBtdXN0IGNhbGwgc2V0TWF0Y2hMZW5ndGgoaW50KSB0bworICAgICAqIHNldCB0aGUgbGVuZ3RoIG9mIHRoZSByZXN1bHQgbWF0Y2guCisgICAgICogVGhlIGl0ZXJhdG9yIGlzIGFkanVzdGVkIHNvIHRoYXQgaXRzIGN1cnJlbnQgaW5kZXgsIGFzIHJldHVybmVkIGJ5IAorICAgICAqIHtAbGluayAjZ2V0SW5kZXh9LCBpcyB0aGUgc3RhcnRpbmcgcG9zaXRpb24gb2YgdGhlIG1hdGNoIGlmIG9uZSB3YXMgCisgICAgICogZm91bmQuIElmIGEgbWF0Y2ggaXMgbm90IGZvdW5kLCA8dHQ+RE9ORTwvdHQ+IHdpbGwgYmUgcmV0dXJuZWQuCisgICAgICogPC9wPiAKKwkgKiBAcGFyYW0gc3RhcnQgaW5kZXggaW4gdGhlIHRhcmdldCB0ZXh0IGF0IHdoaWNoIHRoZSBmb3J3YXJkcyBzZWFyY2ggCisgICAgICogICAgICAgIHNob3VsZCBiZWdpbi4KKwkgKiBAcmV0dXJuIHRoZSBzdGFydGluZyBpbmRleCBvZiB0aGUgbmV4dCBmb3J3YXJkcyBtYXRjaCBpZiBmb3VuZCwgRE9ORSAKKyAgICAgKiAgICAgICAgIG90aGVyd2lzZQorCSAqIEBzZWUgI3NldE1hdGNoTGVuZ3RoKGludCkKKyAgICAgKiBAc2VlICNoYW5kbGVQcmV2aW91cyhpbnQpCisgICAgICogQHNlZSAjRE9ORQorICAgICAqIEBzdGFibGUgSUNVIDIuMAorCSAqLworICAgIHByb3RlY3RlZCBhYnN0cmFjdCBpbnQgaGFuZGxlTmV4dChpbnQgc3RhcnQpOworICAgIAorICAgIC8qKgorCSAqIDxwPgorICAgICAqIEFic3RyYWN0IG1ldGhvZCB3aGljaCBzdWJjbGFzc2VzIG92ZXJyaWRlIHRvIHByb3ZpZGUgdGhlIG1lY2hhbmlzbSAKKwkgKiBmb3IgZmluZGluZyB0aGUgbmV4dCA8Yj5iYWNrd2FyZHM8L2I+IG1hdGNoIGluIHRoZSB0YXJnZXQgdGV4dC4gCisgICAgICogVGhpcyBhbGxvd3MgZGlmZmVyZW50IAorCSAqIHN1YmNsYXNzZXMgdG8gcHJvdmlkZSBkaWZmZXJlbnQgc2VhcmNoIGFsZ29yaXRobXMuIAorICAgICAqIDwvcD4gCisJICogPHA+CisgICAgICogSWYgYSBtYXRjaCBpcyBmb3VuZCwgdGhpcyBmdW5jdGlvbiBtdXN0IGNhbGwgc2V0TWF0Y2hMZW5ndGgoaW50KSB0bworICAgICAqIHNldCB0aGUgbGVuZ3RoIG9mIHRoZSByZXN1bHQgbWF0Y2guCisgICAgICogVGhlIGl0ZXJhdG9yIGlzIGFkanVzdGVkIHNvIHRoYXQgaXRzIGN1cnJlbnQgaW5kZXgsIGFzIHJldHVybmVkIGJ5IAorICAgICAqIHtAbGluayAjZ2V0SW5kZXh9LCBpcyB0aGUgc3RhcnRpbmcgcG9zaXRpb24gb2YgdGhlIG1hdGNoIGlmIG9uZSB3YXMgCisgICAgICogZm91bmQuIElmIGEgbWF0Y2ggaXMgbm90IGZvdW5kLCA8dHQ+RE9ORTwvdHQ+IHdpbGwgYmUgcmV0dXJuZWQuCisgICAgICogPC9wPiAKKwkgKiBAcGFyYW0gc3RhcnQgaW5kZXggaW4gdGhlIHRhcmdldCB0ZXh0IGF0IHdoaWNoIHRoZSBiYWNrd2FyZHMgc2VhcmNoIAorICAgICAqICAgICAgICBzaG91bGQgYmVnaW4uCisJICogQHJldHVybiB0aGUgc3RhcnRpbmcgaW5kZXggb2YgdGhlIG5leHQgYmFja3dhcmRzIG1hdGNoIGlmIGZvdW5kLCAKKyAgICAgKiAgICAgICAgIERPTkUgb3RoZXJ3aXNlCisJICogQHNlZSAjc2V0TWF0Y2hMZW5ndGgoaW50KQorICAgICAqIEBzZWUgI2hhbmRsZU5leHQoaW50KQorICAgICAqIEBzZWUgI0RPTkUKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKwkgKi8KKyAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgaW50IGhhbmRsZVByZXZpb3VzKGludCBzdGFydEF0KTsKKyAgICAKKyAgICAvLyBwcml2YXRlIGRhdGEgbWVtYmVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvKioKKyAgICAgKiBGbGFnIGluZGljYXRlcyBpZiB3ZSBhcmUgZG9pbmcgYSBmb3J3YXJkcyBzZWFyY2gKKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gbV9pc0ZvcndhcmRTZWFyY2hpbmdfOworICAgIC8qKgorICAgICAqIEZsYWcgdG8gaW5kaWNhdGUgaWYgb3ZlcmxhcHBpbmcgc2VhcmNoIGlzIHRvIGJlIGRvbmUuCisgICAgICogRS5nLiBsb29raW5nIGZvciAiYWEiIGluICJhYWEiIHdpbGwgeWllbGQgbWF0Y2hlcyBhdCBvZmZzZXQgMCBhbmQgMS4KKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gbV9pc092ZXJsYXBfOworICAgIC8qKgorICAgICAqIEZsYWcgaW5kaWNhdGVzIGlmIHdlIGFyZSBhdCB0aGUgc3RhcnQgb2YgYSBzdHJpbmcgc2VhcmNoLgorICAgICAqIFRoaXMgaW5kaWNhdGVzIHRoYXQgd2UgYXJlIGluIGZvcndhcmQgc2VhcmNoIGFuZCBhdCB0aGUgc3RhcnQgb2YgbV90ZXh0LgorICAgICAqLyAKKyAgICBwcml2YXRlIGJvb2xlYW4gbV9yZXNldF87CisgICAgLyoqCisgICAgICogRGF0YSBtZW1iZXIgdG8gc3RvcmUgdXNlciBkZWZpbmVkIHBvc2l0aW9uIGluIHNldEluZGV4KCkuCisgICAgICogSWYgc2V0SW5kZXgoKSBpcyBub3QgY2FsbGVkLCB0aGlzIHZhbHVlIHdpbGwgYmUgRE9ORS4KKyAgICAgKi8gCisgICAgcHJpdmF0ZSBpbnQgbV9zZXRPZmZzZXRfOworICAgIC8qKgorICAgICAqIE9mZnNldCBvZiB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsYXN0IG1hdGNoCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgbV9sYXN0TWF0Y2hTdGFydF87Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvdGV4dC9TaW1wbGVEYXRlRm9ybWF0LmphdmEgYi9zcmMvY29tL2libS9pY3UvdGV4dC9TaW1wbGVEYXRlRm9ybWF0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMmMxNmVlNwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L1NpbXBsZURhdGVGb3JtYXQuamF2YQpAQCAtMCwwICsxLDE0MjQgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS90ZXh0L1NpbXBsZURhdGVGb3JtYXQuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8xMi8wNSAwMToyMjoyOCAkIAorICogJFJldmlzaW9uOiAxLjE3ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LnRleHQ7CisKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLklDVUxvY2FsZURhdGE7CitpbXBvcnQgY29tLmlibS5pY3UudXRpbC5DYWxlbmRhcjsKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLlNpbXBsZVRpbWVab25lOworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuVGltZVpvbmU7CitpbXBvcnQgY29tLmlibS5pY3UubGFuZy5VQ2hhcmFjdGVyOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmlvLk9iamVjdElucHV0U3RyZWFtOworaW1wb3J0IGphdmEubGFuZy5DbGFzc05vdEZvdW5kRXhjZXB0aW9uOworaW1wb3J0IGphdmEubGFuZy5TdHJpbmdJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uOworaW1wb3J0IGphdmEudGV4dC5GaWVsZFBvc2l0aW9uOworaW1wb3J0IGphdmEudGV4dC5NZXNzYWdlRm9ybWF0OworaW1wb3J0IGphdmEudGV4dC5QYXJzZVBvc2l0aW9uOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKK2ltcG9ydCBqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGU7CisKKy8qKgorICogPGNvZGU+U2ltcGxlRGF0ZUZvcm1hdDwvY29kZT4gaXMgYSBjb25jcmV0ZSBjbGFzcyBmb3IgZm9ybWF0dGluZyBhbmQKKyAqIHBhcnNpbmcgZGF0ZXMgaW4gYSBsb2NhbGUtc2Vuc2l0aXZlIG1hbm5lci4gSXQgYWxsb3dzIGZvciBmb3JtYXR0aW5nCisgKiAoZGF0ZSAtPiB0ZXh0KSwgcGFyc2luZyAodGV4dCAtPiBkYXRlKSwgYW5kIG5vcm1hbGl6YXRpb24uCisgKgorICogPHA+CisgKiA8Y29kZT5TaW1wbGVEYXRlRm9ybWF0PC9jb2RlPiBhbGxvd3MgeW91IHRvIHN0YXJ0IGJ5IGNob29zaW5nCisgKiBhbnkgdXNlci1kZWZpbmVkIHBhdHRlcm5zIGZvciBkYXRlLXRpbWUgZm9ybWF0dGluZy4gSG93ZXZlciwgeW91CisgKiBhcmUgZW5jb3VyYWdlZCB0byBjcmVhdGUgYSBkYXRlLXRpbWUgZm9ybWF0dGVyIHdpdGggZWl0aGVyCisgKiA8Y29kZT5nZXRUaW1lSW5zdGFuY2U8L2NvZGU+LCA8Y29kZT5nZXREYXRlSW5zdGFuY2U8L2NvZGU+LCBvcgorICogPGNvZGU+Z2V0RGF0ZVRpbWVJbnN0YW5jZTwvY29kZT4gaW4gPGNvZGU+RGF0ZUZvcm1hdDwvY29kZT4uIEVhY2gKKyAqIG9mIHRoZXNlIGNsYXNzIG1ldGhvZHMgY2FuIHJldHVybiBhIGRhdGUvdGltZSBmb3JtYXR0ZXIgaW5pdGlhbGl6ZWQKKyAqIHdpdGggYSBkZWZhdWx0IGZvcm1hdCBwYXR0ZXJuLiBZb3UgbWF5IG1vZGlmeSB0aGUgZm9ybWF0IHBhdHRlcm4KKyAqIHVzaW5nIHRoZSA8Y29kZT5hcHBseVBhdHRlcm48L2NvZGU+IG1ldGhvZHMgYXMgZGVzaXJlZC4KKyAqIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHVzaW5nIHRoZXNlIG1ldGhvZHMsIHNlZQorICoge0BsaW5rIERhdGVGb3JtYXR9LgorICoKKyAqIDxwPgorICogPHN0cm9uZz5UaW1lIEZvcm1hdCBTeW50YXg6PC9zdHJvbmc+CisgKiA8cD4KKyAqIFRvIHNwZWNpZnkgdGhlIHRpbWUgZm9ybWF0IHVzZSBhIDxlbT50aW1lIHBhdHRlcm48L2VtPiBzdHJpbmcuCisgKiBJbiB0aGlzIHBhdHRlcm4sIGFsbCBBU0NJSSBsZXR0ZXJzIGFyZSByZXNlcnZlZCBhcyBwYXR0ZXJuIGxldHRlcnMsCisgKiB3aGljaCBhcmUgZGVmaW5lZCBhcyB0aGUgZm9sbG93aW5nOgorICogPGJsb2NrcXVvdGU+CisgKiA8cHJlPgorICogU3ltYm9sICAgTWVhbmluZyAgICAgICAgICAgICAgICAgUHJlc2VudGF0aW9uICAgICAgICBFeGFtcGxlCisgKiAtLS0tLS0gICAtLS0tLS0tICAgICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0gICAgICAgIC0tLS0tLS0KKyAqIEcgICAgICAgIGVyYSBkZXNpZ25hdG9yICAgICAgICAgIChUZXh0KSAgICAgICAgICAgICAgQUQKKyAqIHkgICAgICAgIHllYXIgICAgICAgICAgICAgICAgICAgIChOdW1iZXIpICAgICAgICAgICAgMTk5NgorICogdSAgICAgICAgZXh0ZW5kZWQgeWVhciAgICAgICAgICAgKE51bWJlcikgICAgICAgICAgICA0NjAxCisgKiBNICAgICAgICBtb250aCBpbiB5ZWFyICAgICAgICAgICAoVGV4dCAmIE51bWJlcikgICAgIEp1bHkgJiAwNworICogZCAgICAgICAgZGF5IGluIG1vbnRoICAgICAgICAgICAgKE51bWJlcikgICAgICAgICAgICAxMAorICogaCAgICAgICAgaG91ciBpbiBhbS9wbSAoMX4xMikgICAgKE51bWJlcikgICAgICAgICAgICAxMgorICogSCAgICAgICAgaG91ciBpbiBkYXkgKDB+MjMpICAgICAgKE51bWJlcikgICAgICAgICAgICAwCisgKiBtICAgICAgICBtaW51dGUgaW4gaG91ciAgICAgICAgICAoTnVtYmVyKSAgICAgICAgICAgIDMwCisgKiBzICAgICAgICBzZWNvbmQgaW4gbWludXRlICAgICAgICAoTnVtYmVyKSAgICAgICAgICAgIDU1CisgKiBTICAgICAgICBtaWxsaXNlY29uZCAgICAgICAgICAgICAoTnVtYmVyKSAgICAgICAgICAgIDk3OAorICogRSAgICAgICAgZGF5IGluIHdlZWsgICAgICAgICAgICAgKFRleHQpICAgICAgICAgICAgICBUdWVzZGF5CisgKiBEICAgICAgICBkYXkgaW4geWVhciAgICAgICAgICAgICAoTnVtYmVyKSAgICAgICAgICAgIDE4OQorICogRiAgICAgICAgZGF5IG9mIHdlZWsgaW4gbW9udGggICAgKE51bWJlcikgICAgICAgICAgICAyICgybmQgV2VkIGluIEp1bHkpCisgKiB3ICAgICAgICB3ZWVrIGluIHllYXIgICAgICAgICAgICAoTnVtYmVyKSAgICAgICAgICAgIDI3CisgKiBXICAgICAgICB3ZWVrIGluIG1vbnRoICAgICAgICAgICAoTnVtYmVyKSAgICAgICAgICAgIDIKKyAqIGEgICAgICAgIGFtL3BtIG1hcmtlciAgICAgICAgICAgIChUZXh0KSAgICAgICAgICAgICAgUE0KKyAqIGsgICAgICAgIGhvdXIgaW4gZGF5ICgxfjI0KSAgICAgIChOdW1iZXIpICAgICAgICAgICAgMjQKKyAqIEsgICAgICAgIGhvdXIgaW4gYW0vcG0gKDB+MTEpICAgIChOdW1iZXIpICAgICAgICAgICAgMAorICogeiAgICAgICAgdGltZSB6b25lICAgICAgICAgICAgICAgKFRleHQpICAgICAgICAgICAgICBQYWNpZmljIFN0YW5kYXJkIFRpbWUKKyAqICcgICAgICAgIGVzY2FwZSBmb3IgdGV4dCAgICAgICAgIChEZWxpbWl0ZXIpCisgKiAnJyAgICAgICBzaW5nbGUgcXVvdGUgICAgICAgICAgICAoTGl0ZXJhbCkgICAgICAgICAgICcKKyAqIDwvcHJlPgorICogPC9ibG9ja3F1b3RlPgorICogVGhlIGNvdW50IG9mIHBhdHRlcm4gbGV0dGVycyBkZXRlcm1pbmUgdGhlIGZvcm1hdC4KKyAqIDxwPgorICogPHN0cm9uZz4oVGV4dCk8L3N0cm9uZz46IDQgb3IgbW9yZSBwYXR0ZXJuIGxldHRlcnMtLXVzZSBmdWxsIGZvcm0sCisgKiAmbHQ7IDQtLXVzZSBzaG9ydCBvciBhYmJyZXZpYXRlZCBmb3JtIGlmIG9uZSBleGlzdHMuCisgKiA8cD4KKyAqIDxzdHJvbmc+KE51bWJlcik8L3N0cm9uZz46IHRoZSBtaW5pbXVtIG51bWJlciBvZiBkaWdpdHMuIFNob3J0ZXIKKyAqIG51bWJlcnMgYXJlIHplcm8tcGFkZGVkIHRvIHRoaXMgYW1vdW50LiBZZWFyIGlzIGhhbmRsZWQgc3BlY2lhbGx5OworICogdGhhdCBpcywgaWYgdGhlIGNvdW50IG9mICd5JyBpcyAyLCB0aGUgWWVhciB3aWxsIGJlIHRydW5jYXRlZCB0byAyIGRpZ2l0cy4KKyAqIDxwPgorICogPHN0cm9uZz4oVGV4dCAmIE51bWJlcik8L3N0cm9uZz46IDMgb3Igb3ZlciwgdXNlIHRleHQsIG90aGVyd2lzZSB1c2UgbnVtYmVyLgorICogPHA+CisgKiBBbnkgY2hhcmFjdGVycyBpbiB0aGUgcGF0dGVybiB0aGF0IGFyZSBub3QgaW4gdGhlIHJhbmdlcyBvZiBbJ2EnLi4neiddCisgKiBhbmQgWydBJy4uJ1onXSB3aWxsIGJlIHRyZWF0ZWQgYXMgcXVvdGVkIHRleHQuIEZvciBpbnN0YW5jZSwgY2hhcmFjdGVycworICogbGlrZSAnOicsICcuJywgJyAnLCAnIycgYW5kICdAJyB3aWxsIGFwcGVhciBpbiB0aGUgcmVzdWx0aW5nIHRpbWUgdGV4dAorICogZXZlbiB0aGV5IGFyZSBub3QgZW1icmFjZWQgd2l0aGluIHNpbmdsZSBxdW90ZXMuCisgKiA8cD4KKyAqIEEgcGF0dGVybiBjb250YWluaW5nIGFueSBpbnZhbGlkIHBhdHRlcm4gbGV0dGVyIHdpbGwgcmVzdWx0IGluIGEgdGhyb3duCisgKiBleGNlcHRpb24gZHVyaW5nIGZvcm1hdHRpbmcgb3IgcGFyc2luZy4KKyAqCisgKiA8cD4KKyAqIDxzdHJvbmc+RXhhbXBsZXMgVXNpbmcgdGhlIFVTIExvY2FsZTo8L3N0cm9uZz4KKyAqIDxibG9ja3F1b3RlPgorICogPHByZT4KKyAqIEZvcm1hdCBQYXR0ZXJuICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdAorICogLS0tLS0tLS0tLS0tLS0gICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLQorICogInl5eXkuTU0uZGQgRyAnYXQnIEhIOm1tOnNzIHoiICAgIC0+PiAgMTk5Ni4wNy4xMCBBRCBhdCAxNTowODo1NiBQRFQKKyAqICJFRUUsIE1NTSBkLCAnJ3l5IiAgICAgICAgICAgICAgICAtPj4gIFdlZCwgSnVseSAxMCwgJzk2CisgKiAiaDptbSBhIiAgICAgICAgICAgICAgICAgICAgICAgICAgLT4+ICAxMjowOCBQTQorICogImhoICdvJydjbG9jaycgYSwgenp6eiIgICAgICAgICAgIC0+PiAgMTIgbydjbG9jayBQTSwgUGFjaWZpYyBEYXlsaWdodCBUaW1lCisgKiAiSzptbSBhLCB6IiAgICAgICAgICAgICAgICAgICAgICAgLT4+ICAwOjAwIFBNLCBQU1QKKyAqICJ5eXl5eS5NTU1NTS5kZCBHR0cgaGg6bW0gYWFhIiAgICAtPj4gIDAxOTk2Lkp1bHkuMTAgQUQgMTI6MDggUE0KKyAqIDwvcHJlPgorICogPC9ibG9ja3F1b3RlPgorICogPHN0cm9uZz5Db2RlIFNhbXBsZTo8L3N0cm9uZz4KKyAqIDxibG9ja3F1b3RlPgorICogPHByZT4KKyAqIFNpbXBsZVRpbWVab25lIHBkdCA9IG5ldyBTaW1wbGVUaW1lWm9uZSgtOCAqIDYwICogNjAgKiAxMDAwLCAiUFNUIik7CisgKiBwZHQuc2V0U3RhcnRSdWxlKENhbGVuZGFyLkFQUklMLCAxLCBDYWxlbmRhci5TVU5EQVksIDIqNjAqNjAqMTAwMCk7CisgKiBwZHQuc2V0RW5kUnVsZShDYWxlbmRhci5PQ1RPQkVSLCAtMSwgQ2FsZW5kYXIuU1VOREFZLCAyKjYwKjYwKjEwMDApOworICogPGJyPgorICogLy8gRm9ybWF0IHRoZSBjdXJyZW50IHRpbWUuCisgKiBTaW1wbGVEYXRlRm9ybWF0IGZvcm1hdHRlcgorICogICAgID0gbmV3IFNpbXBsZURhdGVGb3JtYXQgKCJ5eXl5Lk1NLmRkIEcgJ2F0JyBoaDptbTpzcyBhIHp6eiIpOworICogRGF0ZSBjdXJyZW50VGltZV8xID0gbmV3IERhdGUoKTsKKyAqIFN0cmluZyBkYXRlU3RyaW5nID0gZm9ybWF0dGVyLmZvcm1hdChjdXJyZW50VGltZV8xKTsKKyAqIDxicj4KKyAqIC8vIFBhcnNlIHRoZSBwcmV2aW91cyBzdHJpbmcgYmFjayBpbnRvIGEgRGF0ZS4KKyAqIFBhcnNlUG9zaXRpb24gcG9zID0gbmV3IFBhcnNlUG9zaXRpb24oMCk7CisgKiBEYXRlIGN1cnJlbnRUaW1lXzIgPSBmb3JtYXR0ZXIucGFyc2UoZGF0ZVN0cmluZywgcG9zKTsKKyAqIDwvcHJlPgorICogPC9ibG9ja3F1b3RlPgorICogSW4gdGhlIGV4YW1wbGUsIHRoZSB0aW1lIHZhbHVlIDxjb2RlPmN1cnJlbnRUaW1lXzI8L2NvZGU+IG9idGFpbmVkIGZyb20KKyAqIHBhcnNpbmcgd2lsbCBiZSBlcXVhbCB0byA8Y29kZT5jdXJyZW50VGltZV8xPC9jb2RlPi4gSG93ZXZlciwgdGhleSBtYXkgbm90IGJlCisgKiBlcXVhbCBpZiB0aGUgYW0vcG0gbWFya2VyICdhJyBpcyBsZWZ0IG91dCBmcm9tIHRoZSBmb3JtYXQgcGF0dGVybiB3aGlsZQorICogdGhlICJob3VyIGluIGFtL3BtIiBwYXR0ZXJuIHN5bWJvbCBpcyB1c2VkLiBUaGlzIGluZm9ybWF0aW9uIGxvc3MgY2FuCisgKiBoYXBwZW4gd2hlbiBmb3JtYXR0aW5nIHRoZSB0aW1lIGluIFBNLgorICoKKyAqIDxwPgorICogV2hlbiBwYXJzaW5nIGEgZGF0ZSBzdHJpbmcgdXNpbmcgdGhlIGFiYnJldmlhdGVkIHllYXIgcGF0dGVybiAoInl5IiksCisgKiBTaW1wbGVEYXRlRm9ybWF0IG11c3QgaW50ZXJwcmV0IHRoZSBhYmJyZXZpYXRlZCB5ZWFyCisgKiByZWxhdGl2ZSB0byBzb21lIGNlbnR1cnkuICBJdCBkb2VzIHRoaXMgYnkgYWRqdXN0aW5nIGRhdGVzIHRvIGJlCisgKiB3aXRoaW4gODAgeWVhcnMgYmVmb3JlIGFuZCAyMCB5ZWFycyBhZnRlciB0aGUgdGltZSB0aGUgU2ltcGxlRGF0ZUZvcm1hdAorICogaW5zdGFuY2UgaXMgY3JlYXRlZC4gRm9yIGV4YW1wbGUsIHVzaW5nIGEgcGF0dGVybiBvZiAiTU0vZGQveXkiIGFuZCBhCisgKiBTaW1wbGVEYXRlRm9ybWF0IGluc3RhbmNlIGNyZWF0ZWQgb24gSmFuIDEsIDE5OTcsICB0aGUgc3RyaW5nCisgKiAiMDEvMTEvMTIiIHdvdWxkIGJlIGludGVycHJldGVkIGFzIEphbiAxMSwgMjAxMiB3aGlsZSB0aGUgc3RyaW5nICIwNS8wNC82NCIKKyAqIHdvdWxkIGJlIGludGVycHJldGVkIGFzIE1heSA0LCAxOTY0LgorICogRHVyaW5nIHBhcnNpbmcsIG9ubHkgc3RyaW5ncyBjb25zaXN0aW5nIG9mIGV4YWN0bHkgdHdvIGRpZ2l0cywgYXMgZGVmaW5lZCBieQorICoge0BsaW5rIGphdmEubGFuZy5DaGFyYWN0ZXIjaXNEaWdpdChjaGFyKX0sIHdpbGwgYmUgcGFyc2VkIGludG8gdGhlIGRlZmF1bHQKKyAqIGNlbnR1cnkuCisgKiBBbnkgb3RoZXIgbnVtZXJpYyBzdHJpbmcsIHN1Y2ggYXMgYSBvbmUgZGlnaXQgc3RyaW5nLCBhIHRocmVlIG9yIG1vcmUgZGlnaXQKKyAqIHN0cmluZywgb3IgYSB0d28gZGlnaXQgc3RyaW5nIHRoYXQgaXNuJ3QgYWxsIGRpZ2l0cyAoZm9yIGV4YW1wbGUsICItMSIpLCBpcworICogaW50ZXJwcmV0ZWQgbGl0ZXJhbGx5LiAgU28gIjAxLzAyLzMiIG9yICIwMS8wMi8wMDMiIGFyZSBwYXJzZWQsIHVzaW5nIHRoZQorICogc2FtZSBwYXR0ZXJuLCBhcyBKYW4gMiwgMyBBRC4gIExpa2V3aXNlLCAiMDEvMDIvLTMiIGlzIHBhcnNlZCBhcyBKYW4gMiwgNCBCQy4KKyAqCisgKiA8cD4KKyAqIElmIHRoZSB5ZWFyIHBhdHRlcm4gZG9lcyBub3QgaGF2ZSBleGFjdGx5IHR3byAneScgY2hhcmFjdGVycywgdGhlIHllYXIgaXMKKyAqIGludGVycHJldGVkIGxpdGVyYWxseSwgcmVnYXJkbGVzcyBvZiB0aGUgbnVtYmVyIG9mIGRpZ2l0cy4gIFNvIHVzaW5nIHRoZQorICogcGF0dGVybiAiTU0vZGQveXl5eSIsICIwMS8xMS8xMiIgcGFyc2VzIHRvIEphbiAxMSwgMTIgQS5ELgorICoKKyAqIDxwPgorICogRm9yIHRpbWUgem9uZXMgdGhhdCBoYXZlIG5vIG5hbWVzLCB1c2Ugc3RyaW5ncyBHTVQraG91cnM6bWludXRlcyBvcgorICogR01ULWhvdXJzOm1pbnV0ZXMuCisgKgorICogPHA+CisgKiBUaGUgY2FsZW5kYXIgZGVmaW5lcyB3aGF0IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWssIHRoZSBmaXJzdCB3ZWVrCisgKiBvZiB0aGUgeWVhciwgd2hldGhlciBob3VycyBhcmUgemVybyBiYXNlZCBvciBub3QgKDAgdnMgMTIgb3IgMjQpLCBhbmQgdGhlCisgKiB0aW1lIHpvbmUuIFRoZXJlIGlzIG9uZSBjb21tb24gZGVjaW1hbCBmb3JtYXQgdG8gaGFuZGxlIGFsbCB0aGUgbnVtYmVyczsKKyAqIHRoZSBkaWdpdCBjb3VudCBpcyBoYW5kbGVkIHByb2dyYW1tYXRpY2FsbHkgYWNjb3JkaW5nIHRvIHRoZSBwYXR0ZXJuLgorICoKKyAqIDxoND5TeW5jaHJvbml6YXRpb248L2g0PgorICoKKyAqIERhdGUgZm9ybWF0cyBhcmUgbm90IHN5bmNocm9uaXplZC4gSXQgaXMgcmVjb21tZW5kZWQgdG8gY3JlYXRlIHNlcGFyYXRlIAorICogZm9ybWF0IGluc3RhbmNlcyBmb3IgZWFjaCB0aHJlYWQuIElmIG11bHRpcGxlIHRocmVhZHMgYWNjZXNzIGEgZm9ybWF0IAorICogY29uY3VycmVudGx5LCBpdCBtdXN0IGJlIHN5bmNocm9uaXplZCBleHRlcm5hbGx5LiAKKyAqCisgKiBAc2VlICAgICAgICAgIGNvbS5pYm0uaWN1LnV0aWwuQ2FsZW5kYXIKKyAqIEBzZWUgICAgICAgICAgY29tLmlibS5pY3UudXRpbC5HcmVnb3JpYW5DYWxlbmRhcgorICogQHNlZSAgICAgICAgICBjb20uaWJtLmljdS51dGlsLlRpbWVab25lCisgKiBAc2VlICAgICAgICAgIERhdGVGb3JtYXQKKyAqIEBzZWUgICAgICAgICAgRGF0ZUZvcm1hdFN5bWJvbHMKKyAqIEBzZWUgICAgICAgICAgRGVjaW1hbEZvcm1hdAorICogQGF1dGhvciAgICAgICBNYXJrIERhdmlzLCBDaGVuLUxpZWggSHVhbmcsIEFsYW4gTGl1CisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworcHVibGljIGNsYXNzIFNpbXBsZURhdGVGb3JtYXQgZXh0ZW5kcyBEYXRlRm9ybWF0IHsKKworICAgIC8vIHRoZSBvZmZpY2lhbCBzZXJpYWwgdmVyc2lvbiBJRCB3aGljaCBzYXlzIGNyeXB0aWNhbGx5CisgICAgLy8gd2hpY2ggdmVyc2lvbiB3ZSdyZSBjb21wYXRpYmxlIHdpdGgKKyAgICBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gNDc3NDg4MTk3MDU1ODg3NTAyNEw7CisKKyAgICAvLyB0aGUgaW50ZXJuYWwgc2VyaWFsIHZlcnNpb24gd2hpY2ggc2F5cyB3aGljaCB2ZXJzaW9uIHdhcyB3cml0dGVuCisgICAgLy8gLSAwIChkZWZhdWx0KSBmb3IgdmVyc2lvbiB1cCB0byBKREsgMS4xLjMKKyAgICAvLyAtIDEgZm9yIHZlcnNpb24gZnJvbSBKREsgMS4xLjQsIHdoaWNoIGluY2x1ZGVzIGEgbmV3IGZpZWxkCisgICAgc3RhdGljIGZpbmFsIGludCBjdXJyZW50U2VyaWFsVmVyc2lvbiA9IDE7CisKKyAgICAvKioKKyAgICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgc2VyaWFsaXplZCBkYXRhIG9uIHRoZSBzdHJlYW0uICBQb3NzaWJsZSB2YWx1ZXM6CisgICAgICogPHVsPgorICAgICAqIDxsaT48Yj4wPC9iPiBvciBub3QgcHJlc2VudCBvbiBzdHJlYW06IEpESyAxLjEuMy4gIFRoaXMgdmVyc2lvbgorICAgICAqIGhhcyBubyA8Y29kZT5kZWZhdWx0Q2VudHVyeVN0YXJ0PC9jb2RlPiBvbiBzdHJlYW0uCisgICAgICogPGxpPjxiPjE8L2I+IEpESyAxLjEuNCBvciBsYXRlci4gIFRoaXMgdmVyc2lvbiBhZGRzCisgICAgICogPGNvZGU+ZGVmYXVsdENlbnR1cnlTdGFydDwvY29kZT4uCisgICAgICogPC91bD4KKyAgICAgKiBXaGVuIHN0cmVhbWluZyBvdXQgdGhpcyBjbGFzcywgdGhlIG1vc3QgcmVjZW50IGZvcm1hdAorICAgICAqIGFuZCB0aGUgaGlnaGVzdCBhbGxvd2FibGUgPGNvZGU+c2VyaWFsVmVyc2lvbk9uU3RyZWFtPC9jb2RlPgorICAgICAqIGlzIHdyaXR0ZW4uCisgICAgICogQHNlcmlhbAorICAgICAqLworICAgIHByaXZhdGUgaW50IHNlcmlhbFZlcnNpb25PblN0cmVhbSA9IGN1cnJlbnRTZXJpYWxWZXJzaW9uOworCisgICAgLyoqCisgICAgICogVGhlIHBhdHRlcm4gc3RyaW5nIG9mIHRoaXMgZm9ybWF0dGVyLiAgVGhpcyBpcyBhbHdheXMgYSBub24tbG9jYWxpemVkCisgICAgICogcGF0dGVybi4gIE1heSBub3QgYmUgbnVsbC4gIFNlZSBjbGFzcyBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLgorICAgICAqIEBzZXJpYWwKKyAgICAgKi8KKyAgICBwcml2YXRlIFN0cmluZyBwYXR0ZXJuOworCisgICAgLyoqCisgICAgICogVGhlIHN5bWJvbHMgdXNlZCBieSB0aGlzIGZvcm1hdHRlciBmb3Igd2VlayBuYW1lcywgbW9udGggbmFtZXMsCisgICAgICogZXRjLiAgTWF5IG5vdCBiZSBudWxsLgorICAgICAqIEBzZXJpYWwKKyAgICAgKiBAc2VlIERhdGVGb3JtYXRTeW1ib2xzCisgICAgICovCisgICAgcHJpdmF0ZSBEYXRlRm9ybWF0U3ltYm9scyBmb3JtYXREYXRhOworCisgICAgLyoqCisgICAgICogV2UgbWFwIGRhdGVzIHdpdGggdHdvLWRpZ2l0IHllYXJzIGludG8gdGhlIGNlbnR1cnkgc3RhcnRpbmcgYXQKKyAgICAgKiA8Y29kZT5kZWZhdWx0Q2VudHVyeVN0YXJ0PC9jb2RlPiwgd2hpY2ggbWF5IGJlIGFueSBkYXRlLiAgTWF5CisgICAgICogbm90IGJlIG51bGwuCisgICAgICogQHNlcmlhbAorICAgICAqIEBzaW5jZSBKREsxLjEuNAorICAgICAqLworICAgIHByaXZhdGUgRGF0ZSBkZWZhdWx0Q2VudHVyeVN0YXJ0OworCisgICAgdHJhbnNpZW50IHByaXZhdGUgaW50IGRlZmF1bHRDZW50dXJ5U3RhcnRZZWFyOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IG1pbGxpc1BlckhvdXIgPSA2MCAqIDYwICogMTAwMDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgbWlsbGlzUGVyTWludXRlID0gNjAgKiAxMDAwOworCisgICAgLy8gRm9yIHRpbWUgem9uZXMgdGhhdCBoYXZlIG5vIG5hbWVzLCB1c2Ugc3RyaW5ncyBHTVQrbWludXRlcyBhbmQKKyAgICAvLyBHTVQtbWludXRlcy4gRm9yIGluc3RhbmNlLCBpbiBGcmFuY2UgdGhlIHRpbWUgem9uZSBpcyBHTVQrNjAuCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEdNVF9QTFVTID0gIkdNVCsiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBHTVRfTUlOVVMgPSAiR01ULSI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEdNVCA9ICJHTVQiOworCisgICAgLyoqCisgICAgICogQ2FjaGUgdG8gaG9sZCB0aGUgRGF0ZVRpbWVQYXR0ZXJucyBvZiBhIExvY2FsZS4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBIYXNodGFibGUgY2FjaGVkTG9jYWxlRGF0YSA9IG5ldyBIYXNodGFibGUoMyk7CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgYSBTaW1wbGVEYXRlRm9ybWF0IHVzaW5nIHRoZSBkZWZhdWx0IHBhdHRlcm4gZm9yIHRoZSBkZWZhdWx0CisgICAgICogbG9jYWxlLiAgPGI+Tm90ZTo8L2I+IE5vdCBhbGwgbG9jYWxlcyBzdXBwb3J0IFNpbXBsZURhdGVGb3JtYXQ7IGZvciBmdWxsCisgICAgICogZ2VuZXJhbGl0eSwgdXNlIHRoZSBmYWN0b3J5IG1ldGhvZHMgaW4gdGhlIERhdGVGb3JtYXQgY2xhc3MuCisgICAgICoKKyAgICAgKiBAc2VlIERhdGVGb3JtYXQKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgU2ltcGxlRGF0ZUZvcm1hdCgpIHsKKyAgICAgICAgdGhpcyhTSE9SVCwgU0hPUlQsIExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdCBhIFNpbXBsZURhdGVGb3JtYXQgdXNpbmcgdGhlIGdpdmVuIHBhdHRlcm4gaW4gdGhlIGRlZmF1bHQKKyAgICAgKiBsb2NhbGUuICA8Yj5Ob3RlOjwvYj4gTm90IGFsbCBsb2NhbGVzIHN1cHBvcnQgU2ltcGxlRGF0ZUZvcm1hdDsgZm9yIGZ1bGwKKyAgICAgKiBnZW5lcmFsaXR5LCB1c2UgdGhlIGZhY3RvcnkgbWV0aG9kcyBpbiB0aGUgRGF0ZUZvcm1hdCBjbGFzcy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgU2ltcGxlRGF0ZUZvcm1hdChTdHJpbmcgcGF0dGVybikKKyAgICB7CisgICAgICAgIHRoaXMocGF0dGVybiwgTG9jYWxlLmdldERlZmF1bHQoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGEgU2ltcGxlRGF0ZUZvcm1hdCB1c2luZyB0aGUgZ2l2ZW4gcGF0dGVybiBhbmQgbG9jYWxlLgorICAgICAqIDxiPk5vdGU6PC9iPiBOb3QgYWxsIGxvY2FsZXMgc3VwcG9ydCBTaW1wbGVEYXRlRm9ybWF0OyBmb3IgZnVsbAorICAgICAqIGdlbmVyYWxpdHksIHVzZSB0aGUgZmFjdG9yeSBtZXRob2RzIGluIHRoZSBEYXRlRm9ybWF0IGNsYXNzLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBTaW1wbGVEYXRlRm9ybWF0KFN0cmluZyBwYXR0ZXJuLCBMb2NhbGUgbG9jKQorICAgIHsKKyAgICAgICAgdGhpcy5wYXR0ZXJuID0gcGF0dGVybjsKKyAgICAgICAgdGhpcy5mb3JtYXREYXRhID0gbmV3IERhdGVGb3JtYXRTeW1ib2xzKGxvYyk7CisgICAgICAgIGluaXRpYWxpemUobG9jKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgYSBTaW1wbGVEYXRlRm9ybWF0IHVzaW5nIHRoZSBnaXZlbiBwYXR0ZXJuIGFuZAorICAgICAqIGxvY2FsZS1zcGVjaWZpYyBzeW1ib2wgZGF0YS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgU2ltcGxlRGF0ZUZvcm1hdChTdHJpbmcgcGF0dGVybiwgRGF0ZUZvcm1hdFN5bWJvbHMgZm9ybWF0RGF0YSkKKyAgICB7CisgICAgICAgIHRoaXMucGF0dGVybiA9IHBhdHRlcm47CisgICAgICAgIHRoaXMuZm9ybWF0RGF0YSA9IChEYXRlRm9ybWF0U3ltYm9scykgZm9ybWF0RGF0YS5jbG9uZSgpOworICAgICAgICBpbml0aWFsaXplKExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgIH0KKworICAgIC8qIFBhY2thZ2UtcHJpdmF0ZSwgY2FsbGVkIGJ5IERhdGVGb3JtYXQgZmFjdG9yeSBtZXRob2RzICovCisgICAgU2ltcGxlRGF0ZUZvcm1hdChpbnQgdGltZVN0eWxlLCBpbnQgZGF0ZVN0eWxlLCBMb2NhbGUgbG9jKSB7CisgICAgICAgIC8qIHRyeSB0aGUgY2FjaGUgZmlyc3QgKi8KKyAgICAgICAgU3RyaW5nW10gZGF0ZVRpbWVQYXR0ZXJucyA9IChTdHJpbmdbXSkgY2FjaGVkTG9jYWxlRGF0YS5nZXQobG9jKTsKKyAgICAgICAgaWYgKGRhdGVUaW1lUGF0dGVybnMgPT0gbnVsbCkgeyAvKiBjYWNoZSBtaXNzICovCisgICAgICAgICAgICBSZXNvdXJjZUJ1bmRsZSByID0gSUNVTG9jYWxlRGF0YS5nZXRMb2NhbGVFbGVtZW50cyhsb2MpOworICAgICAgICAgICAgZGF0ZVRpbWVQYXR0ZXJucyA9IHIuZ2V0U3RyaW5nQXJyYXkoIkRhdGVUaW1lUGF0dGVybnMiKTsKKyAgICAgICAgICAgIC8qIHVwZGF0ZSBjYWNoZSAqLworICAgICAgICAgICAgY2FjaGVkTG9jYWxlRGF0YS5wdXQobG9jLCBkYXRlVGltZVBhdHRlcm5zKTsKKyAgICAgICAgfQorICAgICAgICBmb3JtYXREYXRhID0gbmV3IERhdGVGb3JtYXRTeW1ib2xzKGxvYyk7CisgICAgICAgIGlmICgodGltZVN0eWxlID49IDApICYmIChkYXRlU3R5bGUgPj0gMCkpIHsKKyAgICAgICAgICAgIE9iamVjdFtdIGRhdGVUaW1lQXJncyA9IHtkYXRlVGltZVBhdHRlcm5zW3RpbWVTdHlsZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZVRpbWVQYXR0ZXJuc1tkYXRlU3R5bGUgKyA0XX07CisgICAgICAgICAgICBwYXR0ZXJuID0gTWVzc2FnZUZvcm1hdC5mb3JtYXQoZGF0ZVRpbWVQYXR0ZXJuc1s4XSwgZGF0ZVRpbWVBcmdzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICh0aW1lU3R5bGUgPj0gMCkgeworICAgICAgICAgICAgcGF0dGVybiA9IGRhdGVUaW1lUGF0dGVybnNbdGltZVN0eWxlXTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChkYXRlU3R5bGUgPj0gMCkgeworICAgICAgICAgICAgcGF0dGVybiA9IGRhdGVUaW1lUGF0dGVybnNbZGF0ZVN0eWxlICsgNF07CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJObyBkYXRlIG9yIHRpbWUgc3R5bGUgc3BlY2lmaWVkIik7CisgICAgICAgIH0KKworICAgICAgICBpbml0aWFsaXplKGxvYyk7CisgICAgfQorCisgICAgLyogSW5pdGlhbGl6ZSBjYWxlbmRhciBhbmQgbnVtYmVyRm9ybWF0IGZpZWxkcyAqLworICAgIHByaXZhdGUgdm9pZCBpbml0aWFsaXplKExvY2FsZSBsb2MpIHsKKyAgICAgICAgLy8gVGhlIGZvcm1hdCBvYmplY3QgbXVzdCBiZSBjb25zdHJ1Y3RlZCB1c2luZyB0aGUgc3ltYm9scyBmb3IgdGhpcyB6b25lLgorICAgICAgICAvLyBIb3dldmVyLCB0aGUgY2FsZW5kYXIgc2hvdWxkIHVzZSB0aGUgY3VycmVudCBkZWZhdWx0IFRpbWVab25lLgorICAgICAgICAvLyBJZiB0aGlzIGlzIG5vdCBjb250YWluZWQgaW4gdGhlIGxvY2FsZSB6b25lIHN0cmluZ3MsIHRoZW4gdGhlIHpvbmUKKyAgICAgICAgLy8gd2lsbCBiZSBmb3JtYXR0ZWQgdXNpbmcgZ2VuZXJpYyBHTVQrLy1IOk1NIG5vbWVuY2xhdHVyZS4KKyAgICAgICAgY2FsZW5kYXIgPSBDYWxlbmRhci5nZXRJbnN0YW5jZShUaW1lWm9uZS5nZXREZWZhdWx0KCksIGxvYyk7CisgICAgICAgIG51bWJlckZvcm1hdCA9IE51bWJlckZvcm1hdC5nZXRJbnN0YW5jZShsb2MpOworICAgICAgICBudW1iZXJGb3JtYXQuc2V0R3JvdXBpbmdVc2VkKGZhbHNlKTsKKyAgICAgICAgaWYgKG51bWJlckZvcm1hdCBpbnN0YW5jZW9mIERlY2ltYWxGb3JtYXQpCisgICAgICAgICAgICAoKERlY2ltYWxGb3JtYXQpbnVtYmVyRm9ybWF0KS5zZXREZWNpbWFsU2VwYXJhdG9yQWx3YXlzU2hvd24oZmFsc2UpOworICAgICAgICBudW1iZXJGb3JtYXQuc2V0UGFyc2VJbnRlZ2VyT25seSh0cnVlKTsgLyogU28gdGhhdCBkZC5NTS55eSBjYW4gYmUgcGFyc2VkICovCisgICAgICAgIG51bWJlckZvcm1hdC5zZXRNaW5pbXVtRnJhY3Rpb25EaWdpdHMoMCk7IC8vIFRvIHByZXZlbnQgIkphbiAxLjAwLCAxOTk3LjAwIgorCisgICAgICAgIGluaXRpYWxpemVEZWZhdWx0Q2VudHVyeSgpOworICAgIH0KKworICAgIC8qIEluaXRpYWxpemUgdGhlIGZpZWxkcyB3ZSB1c2UgdG8gZGlzYW1iaWd1YXRlIGFtYmlndW91cyB5ZWFycy4gU2VwYXJhdGUKKyAgICAgKiBzbyB3ZSBjYW4gY2FsbCBpdCBmcm9tIHJlYWRPYmplY3QoKS4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgaW5pdGlhbGl6ZURlZmF1bHRDZW50dXJ5KCkgeworICAgICAgICBjYWxlbmRhci5zZXRUaW1lKCBuZXcgRGF0ZSgpICk7CisgICAgICAgIGNhbGVuZGFyLmFkZCggQ2FsZW5kYXIuWUVBUiwgLTgwICk7CisgICAgICAgIHBhcnNlQW1iaWd1b3VzRGF0ZXNBc0FmdGVyKGNhbGVuZGFyLmdldFRpbWUoKSk7CisgICAgfQorCisgICAgLyogRGVmaW5lIG9uZS1jZW50dXJ5IHdpbmRvdyBpbnRvIHdoaWNoIHRvIGRpc2FtYmlndWF0ZSBkYXRlcyB1c2luZworICAgICAqIHR3by1kaWdpdCB5ZWFycy4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgcGFyc2VBbWJpZ3VvdXNEYXRlc0FzQWZ0ZXIoRGF0ZSBzdGFydERhdGUpIHsKKyAgICAgICAgZGVmYXVsdENlbnR1cnlTdGFydCA9IHN0YXJ0RGF0ZTsKKyAgICAgICAgY2FsZW5kYXIuc2V0VGltZShzdGFydERhdGUpOworICAgICAgICBkZWZhdWx0Q2VudHVyeVN0YXJ0WWVhciA9IGNhbGVuZGFyLmdldChDYWxlbmRhci5ZRUFSKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSAxMDAteWVhciBwZXJpb2QgMi1kaWdpdCB5ZWFycyB3aWxsIGJlIGludGVycHJldGVkIGFzIGJlaW5nIGluCisgICAgICogdG8gYmVnaW4gb24gdGhlIGRhdGUgdGhlIHVzZXIgc3BlY2lmaWVzLgorICAgICAqIEBwYXJhbSBzdGFydERhdGUgRHVyaW5nIHBhcnNpbmcsIHR3byBkaWdpdCB5ZWFycyB3aWxsIGJlIHBsYWNlZCBpbiB0aGUgcmFuZ2UKKyAgICAgKiA8Y29kZT5zdGFydERhdGU8L2NvZGU+IHRvIDxjb2RlPnN0YXJ0RGF0ZSArIDEwMCB5ZWFyczwvY29kZT4uCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0MkRpZ2l0WWVhclN0YXJ0KERhdGUgc3RhcnREYXRlKSB7CisgICAgICAgIHBhcnNlQW1iaWd1b3VzRGF0ZXNBc0FmdGVyKHN0YXJ0RGF0ZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgYmVnaW5uaW5nIGRhdGUgb2YgdGhlIDEwMC15ZWFyIHBlcmlvZCAyLWRpZ2l0IHllYXJzIGFyZSBpbnRlcnByZXRlZAorICAgICAqIGFzIGJlaW5nIHdpdGhpbi4KKyAgICAgKiBAcmV0dXJuIHRoZSBzdGFydCBvZiB0aGUgMTAwLXllYXIgcGVyaW9kIGludG8gd2hpY2ggdHdvIGRpZ2l0IHllYXJzIGFyZQorICAgICAqIHBhcnNlZAorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBEYXRlIGdldDJEaWdpdFllYXJTdGFydCgpIHsKKyAgICAgICAgcmV0dXJuIGRlZmF1bHRDZW50dXJ5U3RhcnQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogT3ZlcnJpZGVzIERhdGVGb3JtYXQuCisgICAgICogPHA+Rm9ybWF0cyBhIGRhdGUgb3IgdGltZSwgd2hpY2ggaXMgdGhlIHN0YW5kYXJkIG1pbGxpcworICAgICAqIHNpbmNlIEphbnVhcnkgMSwgMTk3MCwgMDA6MDA6MDAgR01ULgorICAgICAqIDxwPkV4YW1wbGU6IHVzaW5nIHRoZSBVUyBsb2NhbGU6CisgICAgICogInl5eXkuTU0uZGQgRyAnYXQnIEhIOm1tOnNzIHp6eiIgLT4+IDE5OTYuMDcuMTAgQUQgYXQgMTU6MDg6NTYgUERUCisgICAgICogQHBhcmFtIGRhdGUgdGhlIGRhdGUtdGltZSB2YWx1ZSB0byBiZSBmb3JtYXR0ZWQgaW50byBhIGRhdGUtdGltZSBzdHJpbmcuCisgICAgICogQHBhcmFtIHRvQXBwZW5kVG8gd2hlcmUgdGhlIG5ldyBkYXRlLXRpbWUgdGV4dCBpcyB0byBiZSBhcHBlbmRlZC4KKyAgICAgKiBAcGFyYW0gcG9zIHRoZSBmb3JtYXR0aW5nIHBvc2l0aW9uLiBPbiBpbnB1dDogYW4gYWxpZ25tZW50IGZpZWxkLAorICAgICAqIGlmIGRlc2lyZWQuIE9uIG91dHB1dDogdGhlIG9mZnNldHMgb2YgdGhlIGFsaWdubWVudCBmaWVsZC4KKyAgICAgKiBAcmV0dXJuIHRoZSBmb3JtYXR0ZWQgZGF0ZS10aW1lIHN0cmluZy4KKyAgICAgKiBAc2VlIERhdGVGb3JtYXQKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nQnVmZmVyIGZvcm1hdChDYWxlbmRhciBjYWwsIFN0cmluZ0J1ZmZlciB0b0FwcGVuZFRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkUG9zaXRpb24gcG9zKQorICAgIHsKKyAgICAgICAgLy8gSW5pdGlhbGl6ZQorICAgICAgICBwb3Muc2V0QmVnaW5JbmRleCgwKTsKKyAgICAgICAgcG9zLnNldEVuZEluZGV4KDApOworCisgICAgICAgIGJvb2xlYW4gaW5RdW90ZSA9IGZhbHNlOyAvLyB0cnVlIHdoZW4gYmV0d2VlbiBzaW5nbGUgcXVvdGVzCisgICAgICAgIGNoYXIgcHJldkNoID0gMDsgLy8gcHJldmlvdXMgcGF0dGVybiBjaGFyYWN0ZXIKKyAgICAgICAgaW50IGNvdW50ID0gMDsgIC8vIG51bWJlciBvZiB0aW1lIHByZXZDaCByZXBlYXRlZAorICAgICAgICBmb3IgKGludCBpPTA7IGk8cGF0dGVybi5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBjaGFyIGNoID0gcGF0dGVybi5jaGFyQXQoaSk7CisgICAgICAgICAgICAvLyBVc2Ugc3ViRm9ybWF0KCkgdG8gZm9ybWF0IGEgcmVwZWF0ZWQgcGF0dGVybiBjaGFyYWN0ZXIKKyAgICAgICAgICAgIC8vIHdoZW4gYSBkaWZmZXJlbnQgcGF0dGVybiBvciBub24tcGF0dGVybiBjaGFyYWN0ZXIgaXMgc2VlbgorICAgICAgICAgICAgaWYgKGNoICE9IHByZXZDaCAmJiBjb3VudCA+IDApIHsKKyAgICAgICAgICAgICAgICB0b0FwcGVuZFRvLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1YkZvcm1hdChwcmV2Q2gsIGNvdW50LCB0b0FwcGVuZFRvLmxlbmd0aCgpLCBwb3MsIGZvcm1hdERhdGEsIGNhbCkpOworICAgICAgICAgICAgICAgIGNvdW50ID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjaCA9PSAnXCcnKSB7CisgICAgICAgICAgICAgICAgLy8gQ29uc2VjdXRpdmUgc2luZ2xlIHF1b3RlcyBhcmUgYSBzaW5nbGUgcXVvdGUgbGl0ZXJhbCwKKyAgICAgICAgICAgICAgICAvLyBlaXRoZXIgb3V0c2lkZSBvZiBxdW90ZXMgb3IgYmV0d2VlbiBxdW90ZXMKKyAgICAgICAgICAgICAgICBpZiAoKGkrMSk8cGF0dGVybi5sZW5ndGgoKSAmJiBwYXR0ZXJuLmNoYXJBdChpKzEpID09ICdcJycpIHsKKyAgICAgICAgICAgICAgICAgICAgdG9BcHBlbmRUby5hcHBlbmQoJ1wnJyk7CisgICAgICAgICAgICAgICAgICAgICsraTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpblF1b3RlID0gIWluUXVvdGU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmICghaW5RdW90ZQorICAgICAgICAgICAgICAgICAgICAgICAmJiAoY2ggPj0gJ2EnICYmIGNoIDw9ICd6JyB8fCBjaCA+PSAnQScgJiYgY2ggPD0gJ1onKSkgeworICAgICAgICAgICAgICAgIC8vIGNoIGlzIGEgZGF0ZS10aW1lIHBhdHRlcm4gY2hhcmFjdGVyIHRvIGJlIGludGVycHJldGVkCisgICAgICAgICAgICAgICAgLy8gYnkgc3ViRm9ybWF0KCk7IGNvdW50IHRoZSBudW1iZXIgb2YgdGltZXMgaXQgaXMgcmVwZWF0ZWQKKyAgICAgICAgICAgICAgICBwcmV2Q2ggPSBjaDsKKyAgICAgICAgICAgICAgICArK2NvdW50OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gQXBwZW5kIHF1b3RlZCBjaGFyYWN0ZXJzIGFuZCB1bnF1b3RlZCBub24tcGF0dGVybiBjaGFyYWN0ZXJzCisgICAgICAgICAgICAgICAgdG9BcHBlbmRUby5hcHBlbmQoY2gpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIC8vIEZvcm1hdCB0aGUgbGFzdCBpdGVtIGluIHRoZSBwYXR0ZXJuLCBpZiBhbnkKKyAgICAgICAgaWYgKGNvdW50ID4gMCkgeworICAgICAgICAgICAgdG9BcHBlbmRUby5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIHN1YkZvcm1hdChwcmV2Q2gsIGNvdW50LCB0b0FwcGVuZFRvLmxlbmd0aCgpLCBwb3MsIGZvcm1hdERhdGEsIGNhbCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0b0FwcGVuZFRvOworICAgIH0KKworICAgIC8vIE1hcCBpbmRleCBpbnRvIHBhdHRlcm4gY2hhcmFjdGVyIHN0cmluZyB0byBDYWxlbmRhciBmaWVsZCBudW1iZXIKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnRbXSBQQVRURVJOX0lOREVYX1RPX0NBTEVOREFSX0ZJRUxEID0KKyAgICB7CisgICAgICAgIENhbGVuZGFyLkVSQSwgQ2FsZW5kYXIuWUVBUiwgQ2FsZW5kYXIuTU9OVEgsIENhbGVuZGFyLkRBVEUsCisgICAgICAgIENhbGVuZGFyLkhPVVJfT0ZfREFZLCBDYWxlbmRhci5IT1VSX09GX0RBWSwgQ2FsZW5kYXIuTUlOVVRFLAorICAgICAgICBDYWxlbmRhci5TRUNPTkQsIENhbGVuZGFyLk1JTExJU0VDT05ELCBDYWxlbmRhci5EQVlfT0ZfV0VFSywKKyAgICAgICAgQ2FsZW5kYXIuREFZX09GX1lFQVIsIENhbGVuZGFyLkRBWV9PRl9XRUVLX0lOX01PTlRILAorICAgICAgICBDYWxlbmRhci5XRUVLX09GX1lFQVIsIENhbGVuZGFyLldFRUtfT0ZfTU9OVEgsCisgICAgICAgIENhbGVuZGFyLkFNX1BNLCBDYWxlbmRhci5IT1VSLCBDYWxlbmRhci5IT1VSLCBDYWxlbmRhci5aT05FX09GRlNFVAorICAgIH07CisKKyAgICAvLyBNYXAgaW5kZXggaW50byBwYXR0ZXJuIGNoYXJhY3RlciBzdHJpbmcgdG8gRGF0ZUZvcm1hdCBmaWVsZCBudW1iZXIKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnRbXSBQQVRURVJOX0lOREVYX1RPX0RBVEVfRk9STUFUX0ZJRUxEID0geworICAgICAgICBEYXRlRm9ybWF0LkVSQV9GSUVMRCwgRGF0ZUZvcm1hdC5ZRUFSX0ZJRUxELCBEYXRlRm9ybWF0Lk1PTlRIX0ZJRUxELAorICAgICAgICBEYXRlRm9ybWF0LkRBVEVfRklFTEQsIERhdGVGb3JtYXQuSE9VUl9PRl9EQVkxX0ZJRUxELAorICAgICAgICBEYXRlRm9ybWF0LkhPVVJfT0ZfREFZMF9GSUVMRCwgRGF0ZUZvcm1hdC5NSU5VVEVfRklFTEQsCisgICAgICAgIERhdGVGb3JtYXQuU0VDT05EX0ZJRUxELCBEYXRlRm9ybWF0Lk1JTExJU0VDT05EX0ZJRUxELAorICAgICAgICBEYXRlRm9ybWF0LkRBWV9PRl9XRUVLX0ZJRUxELCBEYXRlRm9ybWF0LkRBWV9PRl9ZRUFSX0ZJRUxELAorICAgICAgICBEYXRlRm9ybWF0LkRBWV9PRl9XRUVLX0lOX01PTlRIX0ZJRUxELCBEYXRlRm9ybWF0LldFRUtfT0ZfWUVBUl9GSUVMRCwKKyAgICAgICAgRGF0ZUZvcm1hdC5XRUVLX09GX01PTlRIX0ZJRUxELCBEYXRlRm9ybWF0LkFNX1BNX0ZJRUxELAorICAgICAgICBEYXRlRm9ybWF0LkhPVVIxX0ZJRUxELCBEYXRlRm9ybWF0LkhPVVIwX0ZJRUxELAorICAgICAgICBEYXRlRm9ybWF0LlRJTUVaT05FX0ZJRUxELAorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBGb3JtYXQgYSBzaW5nbGUgZmllbGQsIGdpdmVuIGl0cyBwYXR0ZXJuIGNoYXJhY3Rlci4gIFN1YmNsYXNzZXMgbWF5CisgICAgICogb3ZlcnJpZGUgdGhpcyBtZXRob2QgaW4gb3JkZXIgdG8gbW9kaWZ5IG9yIGFkZCBmb3JtYXR0aW5nCisgICAgICogY2FwYWJpbGl0aWVzLgorICAgICAqIEBwYXJhbSBjaCB0aGUgcGF0dGVybiBjaGFyYWN0ZXIKKyAgICAgKiBAcGFyYW0gY291bnQgdGhlIG51bWJlciBvZiB0aW1lcyBjaCBpcyByZXBlYXRlZCBpbiB0aGUgcGF0dGVybgorICAgICAqIEBwYXJhbSBiZWdpbk9mZnNldCB0aGUgb2Zmc2V0IG9mIHRoZSBvdXRwdXQgc3RyaW5nIGF0IHRoZSBzdGFydCBvZgorICAgICAqIHRoaXMgZmllbGQ7IHVzZWQgdG8gc2V0IHBvcyB3aGVuIGFwcHJvcHJpYXRlCisgICAgICogQHBhcmFtIHBvcyByZWNlaXZlcyB0aGUgcG9zaXRpb24gb2YgYSBmaWVsZCwgd2hlbiBhcHByb3ByaWF0ZQorICAgICAqIEBwYXJhbSBmb3JtYXREYXRhIHRoZSBzeW1ib2xzIGZvciB0aGlzIGZvcm1hdHRlcgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHByb3RlY3RlZCBTdHJpbmcgc3ViRm9ybWF0KGNoYXIgY2gsIGludCBjb3VudCwgaW50IGJlZ2luT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkUG9zaXRpb24gcG9zLCBEYXRlRm9ybWF0U3ltYm9scyBmb3JtYXREYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGVuZGFyIGNhbCkKKyAgICAgICAgIHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24KKyAgICB7CisgICAgICAgIGludCAgICAgcGF0dGVybkNoYXJJbmRleCA9IC0xOworICAgICAgICBpbnQgICAgIG1heEludENvdW50ID0gSW50ZWdlci5NQVhfVkFMVUU7CisgICAgICAgIFN0cmluZyAgY3VycmVudCA9ICIiOworCisgICAgICAgIC8vIFRFTVBPUkFSWSBIQUNLIFRPRE8gZml4IHRoaXMKKyAgICAgICAgaWYgKGNoID09ICd1JykgeyAvLyAndScgLSBFWFRFTkRFRF9ZRUFSCisgICAgICAgICAgICByZXR1cm4gemVyb1BhZGRpbmdOdW1iZXIoY2FsLmdldChDYWxlbmRhci5FWFRFTkRFRF9ZRUFSKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCBtYXhJbnRDb3VudCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoKHBhdHRlcm5DaGFySW5kZXg9Zm9ybWF0RGF0YS5wYXR0ZXJuQ2hhcnMuaW5kZXhPZihjaCkpID09IC0xKQorICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSWxsZWdhbCBwYXR0ZXJuIGNoYXJhY3RlciAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiciICsgY2ggKyAiJyIpOworCisgICAgICAgIGludCBmaWVsZCA9IFBBVFRFUk5fSU5ERVhfVE9fQ0FMRU5EQVJfRklFTERbcGF0dGVybkNoYXJJbmRleF07CisgICAgICAgIGludCB2YWx1ZSA9IGNhbC5nZXQoZmllbGQpOworCisgICAgICAgIHN3aXRjaCAocGF0dGVybkNoYXJJbmRleCkgeworICAgICAgICBjYXNlIDA6IC8vICdHJyAtIEVSQQorICAgICAgICAgICAgY3VycmVudCA9IGZvcm1hdERhdGEuZXJhc1t2YWx1ZV07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxOiAvLyAneScgLSBZRUFSCisgICAgICAgICAgICAvKiBBY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmljYXRpb24sIGlmIHRoZSBudW1iZXIgb2YgcGF0dGVybiBsZXR0ZXJzICgneScpIGlzIDIsIAorICAgICAgICAgICAgICogdGhlIHllYXIgaXMgdHJ1bmNhdGVkIHRvIDIgZGlnaXRzOyBvdGhlcndpc2UgaXQgaXMgaW50ZXJwcmV0ZWQgYXMgYSBudW1iZXIuIAorICAgICAgICAgICAgICogQnV0IHRoZSBvcmlnaW5hbCBjb2RlIHByb2Nlc3MgJ3knLCAneXknLCAneXl5JyBpbiB0aGUgc2FtZSB3YXkuIGFuZCBwcm9jZXNzIAorICAgICAgICAgICAgICogcGF0dGVybnMgd2l0aCA0IG9yIG1vcmUgdGhhbiA0ICd5JyBjaGFyYWN0ZXJzIGluIHRoZSBzYW1lIHdheS4gCisgICAgICAgICAgICAgKiBTbyBJIGNoYW5nZSB0aGUgY29kZXMgdG8gbWVldCB0aGUgc3BlY2lmaWNhdGlvbi4gW1JpY2hhcmQvR0NsXQorICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoY291bnQgPT0gMikKKyAgICAgICAgICAgICAgICBjdXJyZW50ID0gemVyb1BhZGRpbmdOdW1iZXIodmFsdWUsIDIsIDIpOyAvLyBjbGlwIDE5OTYgdG8gOTYKKyAgICAgICAgICAgIGVsc2UgLy9jb3VudCA9IDEgb3IgY291bnQgPiAyCisgICAgICAgICAgICAgICAgY3VycmVudCA9IHplcm9QYWRkaW5nTnVtYmVyKHZhbHVlLCBjb3VudCwgbWF4SW50Q291bnQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjogLy8gJ00nIC0gTU9OVEgKKyAgICAgICAgICAgIGlmIChjb3VudCA+PSA0KQorICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBmb3JtYXREYXRhLm1vbnRoc1t2YWx1ZV07CisgICAgICAgICAgICBlbHNlIGlmIChjb3VudCA9PSAzKQorICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBmb3JtYXREYXRhLnNob3J0TW9udGhzW3ZhbHVlXTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjdXJyZW50ID0gemVyb1BhZGRpbmdOdW1iZXIodmFsdWUrMSwgY291bnQsIG1heEludENvdW50KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDQ6IC8vICdrJyAtIEhPVVJfT0ZfREFZOiAxLWJhc2VkLiAgZWcsIDIzOjU5ICsgMSBob3VyID0+PiAyNDo1OQorICAgICAgICAgICAgaWYgKHZhbHVlID09IDApCisgICAgICAgICAgICAgICAgY3VycmVudCA9IHplcm9QYWRkaW5nTnVtYmVyKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWwuZ2V0TWF4aW11bShDYWxlbmRhci5IT1VSX09GX0RBWSkrMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQsIG1heEludENvdW50KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjdXJyZW50ID0gemVyb1BhZGRpbmdOdW1iZXIodmFsdWUsIGNvdW50LCBtYXhJbnRDb3VudCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSA5OiAvLyAnRScgLSBEQVlfT0ZfV0VFSworICAgICAgICAgICAgaWYgKGNvdW50ID49IDQpCisgICAgICAgICAgICAgICAgY3VycmVudCA9IGZvcm1hdERhdGEud2Vla2RheXNbdmFsdWVdOworICAgICAgICAgICAgZWxzZSAvLyBjb3VudCA8IDQsIHVzZSBhYmJyZXZpYXRlZCBmb3JtIGlmIGV4aXN0cworICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBmb3JtYXREYXRhLnNob3J0V2Vla2RheXNbdmFsdWVdOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMTQ6ICAgIC8vICdhJyAtIEFNX1BNCisgICAgICAgICAgICBjdXJyZW50ID0gZm9ybWF0RGF0YS5hbXBtc1t2YWx1ZV07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxNTogLy8gJ2gnIC0gSE9VUjoxLWJhc2VkLiAgZWcsIDExUE0gKyAxIGhvdXIgPT4+IDEyIEFNCisgICAgICAgICAgICBpZiAodmFsdWUgPT0gMCkKKyAgICAgICAgICAgICAgICBjdXJyZW50ID0gemVyb1BhZGRpbmdOdW1iZXIoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbC5nZXRMZWFzdE1heGltdW0oQ2FsZW5kYXIuSE9VUikrMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQsIG1heEludENvdW50KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjdXJyZW50ID0gemVyb1BhZGRpbmdOdW1iZXIodmFsdWUsIGNvdW50LCBtYXhJbnRDb3VudCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxNzogLy8gJ3onIC0gWk9ORV9PRkZTRVQKKyAgICAgICAgICAgIGludCB6b25lSW5kZXgKKyAgICAgICAgICAgICAgICA9IGZvcm1hdERhdGEuZ2V0Wm9uZUluZGV4IChjYWwuZ2V0VGltZVpvbmUoKS5nZXRJRCgpKTsKKyAgICAgICAgICAgIGlmICh6b25lSW5kZXggPT0gLTEpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gRm9yIHRpbWUgem9uZXMgdGhhdCBoYXZlIG5vIG5hbWVzLCB1c2Ugc3RyaW5ncworICAgICAgICAgICAgICAgIC8vIEdNVCtob3VyczptaW51dGVzIGFuZCBHTVQtaG91cnM6bWludXRlcy4KKyAgICAgICAgICAgICAgICAvLyBGb3IgaW5zdGFuY2UsIEZyYW5jZSB0aW1lIHpvbmUgdXNlcyBHTVQrMDE6MDAuCisgICAgICAgICAgICAgICAgU3RyaW5nQnVmZmVyIHpvbmVTdHJpbmcgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGNhbC5nZXQoQ2FsZW5kYXIuWk9ORV9PRkZTRVQpICsKKyAgICAgICAgICAgICAgICAgICAgY2FsLmdldChDYWxlbmRhci5EU1RfT0ZGU0VUKTsKKworICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA8IDApCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB6b25lU3RyaW5nLmFwcGVuZChHTVRfTUlOVVMpOworICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IC12YWx1ZTsgLy8gc3VwcHJlc3MgdGhlICctJyBzaWduIGZvciB0ZXh0IGRpc3BsYXkuCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgem9uZVN0cmluZy5hcHBlbmQoR01UX1BMVVMpOworICAgICAgICAgICAgICAgIHpvbmVTdHJpbmcuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHplcm9QYWRkaW5nTnVtYmVyKChpbnQpKHZhbHVlL21pbGxpc1BlckhvdXIpLCAyLCAyKSk7CisgICAgICAgICAgICAgICAgem9uZVN0cmluZy5hcHBlbmQoJzonKTsKKyAgICAgICAgICAgICAgICB6b25lU3RyaW5nLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6ZXJvUGFkZGluZ051bWJlcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KSgodmFsdWUlbWlsbGlzUGVySG91cikvbWlsbGlzUGVyTWludXRlKSwgMiwgMikpOworICAgICAgICAgICAgICAgIGN1cnJlbnQgPSB6b25lU3RyaW5nLnRvU3RyaW5nKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChjYWwuZ2V0KENhbGVuZGFyLkRTVF9PRkZTRVQpICE9IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGNvdW50ID49IDQpCisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBmb3JtYXREYXRhLnpvbmVTdHJpbmdzW3pvbmVJbmRleF1bM107CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAvLyBjb3VudCA8IDQsIHVzZSBhYmJyZXZpYXRlZCBmb3JtIGlmIGV4aXN0cworICAgICAgICAgICAgICAgICAgICBjdXJyZW50ID0gZm9ybWF0RGF0YS56b25lU3RyaW5nc1t6b25lSW5kZXhdWzRdOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChjb3VudCA+PSA0KQorICAgICAgICAgICAgICAgICAgICBjdXJyZW50ID0gZm9ybWF0RGF0YS56b25lU3RyaW5nc1t6b25lSW5kZXhdWzFdOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudCA9IGZvcm1hdERhdGEuem9uZVN0cmluZ3Nbem9uZUluZGV4XVsyXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgLy8gY2FzZSAzOiAvLyAnZCcgLSBEQVRFCisgICAgICAgICAgICAvLyBjYXNlIDU6IC8vICdIJyAtIEhPVVJfT0ZfREFZOjAtYmFzZWQuICBlZywgMjM6NTkgKyAxIGhvdXIgPT4+IDAwOjU5CisgICAgICAgICAgICAvLyBjYXNlIDY6IC8vICdtJyAtIE1JTlVURQorICAgICAgICAgICAgLy8gY2FzZSA3OiAvLyAncycgLSBTRUNPTkQKKyAgICAgICAgICAgIC8vIGNhc2UgODogLy8gJ1MnIC0gTUlMTElTRUNPTkQKKyAgICAgICAgICAgIC8vIGNhc2UgMTA6IC8vICdEJyAtIERBWV9PRl9ZRUFSCisgICAgICAgICAgICAvLyBjYXNlIDExOiAvLyAnRicgLSBEQVlfT0ZfV0VFS19JTl9NT05USAorICAgICAgICAgICAgLy8gY2FzZSAxMjogLy8gJ3cnIC0gV0VFS19PRl9ZRUFSCisgICAgICAgICAgICAvLyBjYXNlIDEzOiAvLyAnVycgLSBXRUVLX09GX01PTlRICisgICAgICAgICAgICAvLyBjYXNlIDE2OiAvLyAnSycgLSBIT1VSOiAwLWJhc2VkLiAgZWcsIDExUE0gKyAxIGhvdXIgPT4+IDAgQU0KKyAgICAgICAgICAgIGN1cnJlbnQgPSB6ZXJvUGFkZGluZ051bWJlcih2YWx1ZSwgY291bnQsIG1heEludENvdW50KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9IC8vIHN3aXRjaCAocGF0dGVybkNoYXJJbmRleCkKKworICAgICAgICBpZiAocG9zLmdldEZpZWxkKCkgPT0gUEFUVEVSTl9JTkRFWF9UT19EQVRFX0ZPUk1BVF9GSUVMRFtwYXR0ZXJuQ2hhckluZGV4XSkgeworICAgICAgICAgICAgLy8gc2V0IGZvciB0aGUgZmlyc3Qgb2NjdXJlbmNlIG9ubHkuCisgICAgICAgICAgICBpZiAocG9zLmdldEJlZ2luSW5kZXgoKSA9PSAwICYmIHBvcy5nZXRFbmRJbmRleCgpID09IDApIHsKKyAgICAgICAgICAgICAgICBwb3Muc2V0QmVnaW5JbmRleChiZWdpbk9mZnNldCk7CisgICAgICAgICAgICAgICAgcG9zLnNldEVuZEluZGV4KGJlZ2luT2Zmc2V0ICsgY3VycmVudC5sZW5ndGgoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gY3VycmVudDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBGb3JtYXRzIGEgbnVtYmVyIHdpdGggdGhlIHNwZWNpZmllZCBtaW5pbXVtIGFuZCBtYXhpbXVtIG51bWJlciBvZiBkaWdpdHMuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHJvdGVjdGVkIFN0cmluZyB6ZXJvUGFkZGluZ051bWJlcihsb25nIHZhbHVlLCBpbnQgbWluRGlnaXRzLCBpbnQgbWF4RGlnaXRzKQorICAgIHsKKyAgICAgICAgbnVtYmVyRm9ybWF0LnNldE1pbmltdW1JbnRlZ2VyRGlnaXRzKG1pbkRpZ2l0cyk7CisgICAgICAgIG51bWJlckZvcm1hdC5zZXRNYXhpbXVtSW50ZWdlckRpZ2l0cyhtYXhEaWdpdHMpOworICAgICAgICByZXR1cm4gbnVtYmVyRm9ybWF0LmZvcm1hdCh2YWx1ZSk7CisgICAgfQorCisKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZXMgRGF0ZUZvcm1hdAorICAgICAqIEBzZWUgRGF0ZUZvcm1hdAorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHBhcnNlKFN0cmluZyB0ZXh0LCBDYWxlbmRhciBjYWwsIFBhcnNlUG9zaXRpb24gcG9zKQorICAgIHsKKyAgICAgICAgaW50IHN0YXJ0ID0gcG9zLmdldEluZGV4KCk7CisgICAgICAgIGludCBvbGRTdGFydCA9IHN0YXJ0OworICAgICAgICBib29sZWFuW10gYW1iaWd1b3VzWWVhciA9IHtmYWxzZX07CisKKyAgICAgICAgYm9vbGVhbiBpblF1b3RlID0gZmFsc2U7IC8vIGluUXVvdGUgc2V0IHRydWUgd2hlbiBoaXRzIDFzdCBzaW5nbGUgcXVvdGUKKyAgICAgICAgY2hhciBwcmV2Q2ggPSAwOworICAgICAgICBpbnQgY291bnQgPSAwOworICAgICAgICBpbnQgaW50ZXJRdW90ZUNvdW50ID0gMTsgLy8gTnVtYmVyIG9mIGNoYXJzIGJldHdlZW4gcXVvdGVzCisKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPHBhdHRlcm4ubGVuZ3RoKCk7ICsraSkKKyAgICAgICAgeworICAgICAgICAgICAgY2hhciBjaCA9IHBhdHRlcm4uY2hhckF0KGkpOworCisgICAgICAgICAgICBpZiAoaW5RdW90ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoY2ggPT0gJ1wnJykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8vIGVuZHMgd2l0aCAybmQgc2luZ2xlIHF1b3RlCisgICAgICAgICAgICAgICAgICAgIGluUXVvdGUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgLy8gdHdvIGNvbnNlY3V0aXZlIHF1b3RlcyBvdXRzaWRlIGEgcXVvdGUgbWVhbnMgd2UgaGF2ZQorICAgICAgICAgICAgICAgICAgICAvLyBhIHF1b3RlIGxpdGVyYWwgd2UgbmVlZCB0byBtYXRjaC4KKyAgICAgICAgICAgICAgICAgICAgaWYgKGNvdW50ID09IDApCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGFydCA+PSB0ZXh0Lmxlbmd0aCgpIHx8IGNoICE9IHRleHQuY2hhckF0KHN0YXJ0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3Muc2V0SW5kZXgob2xkU3RhcnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcy5zZXRFcnJvckluZGV4KHN0YXJ0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICArK3N0YXJ0OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGNvdW50ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJRdW90ZUNvdW50ID0gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gcGF0dGVybiB1c2VzIHRleHQgZm9sbG93aW5nIGZyb20gMXN0IHNpbmdsZSBxdW90ZS4KKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0ID49IHRleHQubGVuZ3RoKCkgfHwgY2ggIT0gdGV4dC5jaGFyQXQoc3RhcnQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBmb3IgY2FzZXMgbGlrZTogJ2F0JyBpbiBwYXR0ZXJuIHZzICJ4dCIKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluIHRpbWUgdGV4dCwgd2hlcmUgJ2EnIGRvZXNuJ3QgbWF0Y2ggd2l0aCAneCcuCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBmYWlsIHRvIG1hdGNoLCByZXR1cm4uCisgICAgICAgICAgICAgICAgICAgICAgICBwb3Muc2V0SW5kZXgob2xkU3RhcnQpOyAvLyBsZWZ0IHVuY2hhbmdlZAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zLnNldEVycm9ySW5kZXgoc3RhcnQpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICsrY291bnQ7CisgICAgICAgICAgICAgICAgICAgICsrc3RhcnQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSAgICAvLyAhaW5RdW90ZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChjaCA9PSAnXCcnKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaW5RdW90ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChjb3VudCA+IDApIC8vIGhhbmRsZSBjYXNlcyBsaWtlOiBlJ2F0JworICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnRPZmZzZXQgPSBzdGFydDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0PXN1YlBhcnNlKHRleHQsIHN0YXJ0LCBwcmV2Q2gsIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIGFtYmlndW91c1llYXIsIGNhbCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHN0YXJ0PDAgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zLnNldEVycm9ySW5kZXgoc3RhcnRPZmZzZXQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcy5zZXRJbmRleChvbGRTdGFydCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgY291bnQgPSAwOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGludGVyUXVvdGVDb3VudCA9PSAwKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGluZGljYXRlcyB0d28gY29uc2VjdXRpdmUgcXVvdGVzIGluc2lkZSBhIHF1b3RlLAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIGV4YW1wbGUsICdvJydjbG9jaycuICBXZSBuZWVkIHRvIHBhcnNlIHRoaXMgYXMKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlcHJlc2VudGluZyBhIHNpbmdsZSBxdW90ZSB3aXRoaW4gdGhlIHF1b3RlLgorICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0T2Zmc2V0ID0gc3RhcnQ7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnQgPj0gdGV4dC5sZW5ndGgoKSB8fCAgY2ggIT0gdGV4dC5jaGFyQXQoc3RhcnQpKQorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcy5zZXRFcnJvckluZGV4KHN0YXJ0T2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3Muc2V0SW5kZXgob2xkU3RhcnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICsrc3RhcnQ7CisgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCA9IDE7IC8vIE1ha2UgaXQgbG9vayBsaWtlIHdlIG5ldmVyIGxlZnQKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChjaCA+PSAnYScgJiYgY2ggPD0gJ3onIHx8IGNoID49ICdBJyAmJiBjaCA8PSAnWicpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAvLyBjaCBpcyBhIGRhdGUtdGltZSBwYXR0ZXJuCisgICAgICAgICAgICAgICAgICAgIGlmIChjaCAhPSBwcmV2Q2ggJiYgY291bnQgPiAwKSAvLyBlLmcuLCB5eXl5TU1kZAorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnRPZmZzZXQgPSBzdGFydDsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIG9ubHkgY2FzZSB3aGVyZSB3ZSBwYXNzIGluICd0cnVlJyBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9iZXlDb3VudC4gIFRoYXQncyBiZWNhdXNlIHRoZSBuZXh0IGZpZWxkIGRpcmVjdGx5CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBhYnV0cyB0aGlzIG9uZSwgc28gd2UgaGF2ZSB0byB1c2UgdGhlIGNvdW50IHRvIGtub3cgd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gc3RvcCBwYXJzaW5nLiBbTElVXQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSBzdWJQYXJzZSh0ZXh0LCBzdGFydCwgcHJldkNoLCBjb3VudCwgdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW1iaWd1b3VzWWVhciwgY2FsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGFydCA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3Muc2V0RXJyb3JJbmRleChzdGFydE9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zLnNldEluZGV4KG9sZFN0YXJ0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBwcmV2Q2ggPSBjaDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaCAhPSBwcmV2Q2gpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldkNoID0gY2g7CisgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCsrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNvdW50ID4gMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBjYXNlcyBsaWtlOiBNTS1kZC15eSwgSEg6bW06c3MsIG9yIHl5eXkgTU0gZGQsCisgICAgICAgICAgICAgICAgICAgIC8vIHdoZXJlIGNoID0gJy0nLCAnOicsIG9yICcgJywgcmVwZWN0aXZlbHkuCisgICAgICAgICAgICAgICAgICAgIGludCBzdGFydE9mZnNldCA9IHN0YXJ0OworICAgICAgICAgICAgICAgICAgICBzdGFydD1zdWJQYXJzZSh0ZXh0LCBzdGFydCwgcHJldkNoLCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIGFtYmlndW91c1llYXIsIGNhbCk7CisgICAgICAgICAgICAgICAgICAgIGlmICggc3RhcnQgPCAwICkgeworICAgICAgICAgICAgICAgICAgICAgICAgcG9zLnNldEVycm9ySW5kZXgoc3RhcnRPZmZzZXQpOworICAgICAgICAgICAgICAgICAgICAgICAgcG9zLnNldEluZGV4KG9sZFN0YXJ0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnQgPj0gdGV4dC5sZW5ndGgoKSB8fCBjaCAhPSB0ZXh0LmNoYXJBdChzdGFydCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBjYXNlcyBsaWtlOiAnTU1NTSBkZCcgaW4gcGF0dGVybiB2cy4gImphbngyMCIKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluIHRpbWUgdGV4dCwgd2hlcmUgJyAnIGRvZXNuJ3QgbWF0Y2ggd2l0aCAneCcuCisgICAgICAgICAgICAgICAgICAgICAgICBwb3Muc2V0RXJyb3JJbmRleChzdGFydCk7CisgICAgICAgICAgICAgICAgICAgICAgICBwb3Muc2V0SW5kZXgob2xkU3RhcnQpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHN0YXJ0Kys7CisgICAgICAgICAgICAgICAgICAgIGNvdW50ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgcHJldkNoID0gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSAvLyBhbnkgb3RoZXIgdW5xdW90ZWQgY2hhcmFjdGVycworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0ID49IHRleHQubGVuZ3RoKCkgfHwgY2ggIT0gdGV4dC5jaGFyQXQoc3RhcnQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBoYW5kbGUgY2FzZXMgbGlrZTogJ01NTU0gICBkZCcgaW4gcGF0dGVybiB2cy4KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vICJqYW4sLCwyMCIgaW4gdGltZSB0ZXh0LCB3aGVyZSAiICAgIiBkb2Vzbid0CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYXRjaCB3aXRoICIsLCwiLgorICAgICAgICAgICAgICAgICAgICAgICAgcG9zLnNldEVycm9ySW5kZXgoc3RhcnQpOworICAgICAgICAgICAgICAgICAgICAgICAgcG9zLnNldEluZGV4KG9sZFN0YXJ0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBzdGFydCsrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICsraW50ZXJRdW90ZUNvdW50OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIC8vIFBhcnNlIHRoZSBsYXN0IGl0ZW0gaW4gdGhlIHBhdHRlcm4KKyAgICAgICAgaWYgKGNvdW50ID4gMCkKKyAgICAgICAgeworICAgICAgICAgICAgaW50IHN0YXJ0T2Zmc2V0ID0gc3RhcnQ7CisgICAgICAgICAgICBzdGFydD1zdWJQYXJzZSh0ZXh0LCBzdGFydCwgcHJldkNoLCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLCBhbWJpZ3VvdXNZZWFyLCBjYWwpOworICAgICAgICAgICAgaWYgKCBzdGFydCA8IDAgKSB7CisgICAgICAgICAgICAgICAgcG9zLnNldEluZGV4KG9sZFN0YXJ0KTsKKyAgICAgICAgICAgICAgICBwb3Muc2V0RXJyb3JJbmRleChzdGFydE9mZnNldCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gQXQgdGhpcyBwb2ludCB0aGUgZmllbGRzIG9mIENhbGVuZGFyIGhhdmUgYmVlbiBzZXQuICBDYWxlbmRhcgorICAgICAgICAvLyB3aWxsIGZpbGwgaW4gZGVmYXVsdCB2YWx1ZXMgZm9yIG1pc3NpbmcgZmllbGRzIHdoZW4gdGhlIHRpbWUKKyAgICAgICAgLy8gaXMgY29tcHV0ZWQuCisKKyAgICAgICAgcG9zLnNldEluZGV4KHN0YXJ0KTsKKworICAgICAgICAvLyBUaGlzIHBhcnQgaXMgYSBwcm9ibGVtOiAgV2hlbiB3ZSBjYWxsIHBhcnNlZERhdGUuYWZ0ZXIsIHdlIGNvbXB1dGUgdGhlIHRpbWUuCisgICAgICAgIC8vIFRha2UgdGhlIGRhdGUgQXByaWwgMyAyMDA0IGF0IDI6MzAgYW0uICBXaGVuIHRoaXMgaXMgZmlyc3Qgc2V0IHVwLCB0aGUgeWVhcgorICAgICAgICAvLyB3aWxsIGJlIHdyb25nIGlmIHdlJ3JlIHBhcnNpbmcgYSAyLWRpZ2l0IHllYXIgcGF0dGVybi4gIEl0IHdpbGwgYmUgMTkwNC4KKyAgICAgICAgLy8gQXByaWwgMyAxOTA0IGlzIGEgU3VuZGF5ICh1bmxpa2UgMjAwNCkgc28gaXQgaXMgdGhlIERTVCBvbnNldCBkYXkuICAyOjMwIGFtCisgICAgICAgIC8vIGlzIHRoZXJlZm9yZSBhbiAiaW1wb3NzaWJsZSIgdGltZSwgc2luY2UgdGhlIHRpbWUgZ29lcyBmcm9tIDE6NTkgdG8gMzowMCBhbQorICAgICAgICAvLyBvbiB0aGF0IGRheS4gIEl0IGlzIHRoZXJlZm9yZSBwYXJzZWQgb3V0IHRvIGZpZWxkcyBhcyAzOjMwIGFtLiAgVGhlbiB3ZQorICAgICAgICAvLyBhZGQgMTAwIHllYXJzLCBhbmQgZ2V0IEFwcmlsIDMgMjAwNCBhdCAzOjMwIGFtLiAgTm90ZSB0aGF0IEFwcmlsIDMgMjAwNCBpcworICAgICAgICAvLyBhIFNhdHVyZGF5LCBzbyBpdCBjYW4gaGF2ZSBhIDI6MzAgYW0gLS0gYW5kIGl0IHNob3VsZC4gW0xJVV0KKyAgICAgICAgLyoKKyAgICAgICAgRGF0ZSBwYXJzZWREYXRlID0gY2FsLmdldFRpbWUoKTsKKyAgICAgICAgaWYoIGFtYmlndW91c1llYXJbMF0gJiYgIXBhcnNlZERhdGUuYWZ0ZXIoZGVmYXVsdENlbnR1cnlTdGFydCkgKSB7CisgICAgICAgICAgICBjYWwuYWRkKENhbGVuZGFyLllFQVIsIDEwMCk7CisgICAgICAgICAgICBwYXJzZWREYXRlID0gY2FsLmdldFRpbWUoKTsKKyAgICAgICAgfQorICAgICAgICAqLworICAgICAgICAvLyBCZWNhdXNlIG9mIHRoZSBhYm92ZSBjb25kaXRpb24sIHNhdmUgb2ZmIHRoZSBmaWVsZHMgaW4gY2FzZSB3ZSBuZWVkIHRvIHJlYWRqdXN0LgorICAgICAgICAvLyBUaGUgcHJvY2VkdXJlIHdlIHVzZSBoZXJlIGlzIG5vdCBwYXJ0aWN1bGFybHkgZWZmaWNpZW50LCBidXQgdGhlcmUgaXMgbm8gb3RoZXIKKyAgICAgICAgLy8gd2F5IHRvIGRvIHRoaXMgZ2l2ZW4gdGhlIEFQSSByZXN0cmljdGlvbnMgcHJlc2VudCBpbiBDYWxlbmRhci4gIFdlIG1pbmltaXplCisgICAgICAgIC8vIGluZWZmaWNpZW5jeSBieSBvbmx5IHBlcmZvcm1pbmcgdGhpcyBjb21wdXRhdGlvbiB3aGVuIGl0IG1pZ2h0IGFwcGx5LCB0aGF0IGlzLAorICAgICAgICAvLyB3aGVuIHRoZSB0d28tZGlnaXQgeWVhciBpcyBlcXVhbCB0byB0aGUgc3RhcnQgeWVhciwgYW5kIHRodXMgbWlnaHQgZmFsbCBhdCB0aGUKKyAgICAgICAgLy8gZnJvbnQgb3IgdGhlIGJhY2sgb2YgdGhlIGRlZmF1bHQgY2VudHVyeS4gIFRoaXMgb25seSB3b3JrcyBiZWNhdXNlIHdlIGFkanVzdAorICAgICAgICAvLyB0aGUgeWVhciBjb3JyZWN0bHkgdG8gc3RhcnQgd2l0aCBpbiBvdGhlciBjYXNlcyAtLSBzZWUgc3ViUGFyc2UoKS4KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGlmIChhbWJpZ3VvdXNZZWFyWzBdKSAvLyBJZiB0aGlzIGlzIHRydWUgdGhlbiB0aGUgdHdvLWRpZ2l0IHllYXIgPT0gdGhlIGRlZmF1bHQgc3RhcnQgeWVhcgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgYSBjb3B5IG9mIHRoZSBmaWVsZHMsIGFuZCB3ZSBuZWVkIHRvIGF2b2lkIHRyaWdnZXJpbmcgYSBjYWxsIHRvCisgICAgICAgICAgICAgICAgLy8gY29tcGxldGUoKSwgd2hpY2ggd2lsbCByZWNhbGN1bGF0ZSB0aGUgZmllbGRzLiAgU2luY2Ugd2UgY2FuJ3QgYWNjZXNzCisgICAgICAgICAgICAgICAgLy8gdGhlIGZpZWxkc1tdIGFycmF5IGluIENhbGVuZGFyLCB3ZSBjbG9uZSB0aGUgZW50aXJlIG9iamVjdC4gIFRoaXMgd2lsbAorICAgICAgICAgICAgICAgIC8vIHN0b3Agd29ya2luZyBpZiBDYWxlbmRhci5jbG9uZSgpIGlzIGV2ZXIgcmV3cml0dGVuIHRvIGNhbGwgY29tcGxldGUoKS4KKyAgICAgICAgICAgICAgICBDYWxlbmRhciBjb3B5ID0gKENhbGVuZGFyKWNhbC5jbG9uZSgpOworICAgICAgICAgICAgICAgIERhdGUgcGFyc2VkRGF0ZSA9IGNvcHkuZ2V0VGltZSgpOworICAgICAgICAgICAgICAgIGlmIChwYXJzZWREYXRlLmJlZm9yZShkZWZhdWx0Q2VudHVyeVN0YXJ0KSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8vIFdlIGNhbid0IHVzZSBhZGQgaGVyZSBiZWNhdXNlIHRoYXQgZG9lcyBhIGNvbXBsZXRlKCkgZmlyc3QuCisgICAgICAgICAgICAgICAgICAgIGNhbC5zZXQoQ2FsZW5kYXIuWUVBUiwgZGVmYXVsdENlbnR1cnlTdGFydFllYXIgKyAxMDApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAvLyBBbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gd2lsbCBiZSB0aHJvd24gYnkgQ2FsZW5kYXIuZ2V0VGltZSgpCisgICAgICAgIC8vIGlmIGFueSBmaWVsZHMgYXJlIG91dCBvZiByYW5nZSwgZS5nLiwgTU9OVEggPT0gMTcuCisgICAgICAgIGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgcG9zLnNldEVycm9ySW5kZXgoc3RhcnQpOworICAgICAgICAgICAgcG9zLnNldEluZGV4KG9sZFN0YXJ0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEF0dGVtcHQgdG8gbWF0Y2ggdGhlIHRleHQgYXQgYSBnaXZlbiBwb3NpdGlvbiBhZ2FpbnN0IGFuIGFycmF5IG9mCisgICAgICogc3RyaW5ncy4gIFNpbmNlIG11bHRpcGxlIHN0cmluZ3MgaW4gdGhlIGFycmF5IG1heSBtYXRjaCAoZm9yCisgICAgICogZXhhbXBsZSwgaWYgdGhlIGFycmF5IGNvbnRhaW5zICJhIiwgImFiIiwgYW5kICJhYmMiLCBhbGwgd2lsbCBtYXRjaAorICAgICAqIHRoZSBpbnB1dCBzdHJpbmcgImFiY2QiKSB0aGUgbG9uZ2VzdCBtYXRjaCBpcyByZXR1cm5lZC4gIEFzIGEgc2lkZQorICAgICAqIGVmZmVjdCwgdGhlIGdpdmVuIGZpZWxkIG9mIDxjb2RlPmNhbDwvY29kZT4gaXMgc2V0IHRvIHRoZSBpbmRleAorICAgICAqIG9mIHRoZSBiZXN0IG1hdGNoLCBpZiB0aGVyZSBpcyBvbmUuCisgICAgICogQHBhcmFtIHRleHQgdGhlIHRpbWUgdGV4dCBiZWluZyBwYXJzZWQuCisgICAgICogQHBhcmFtIHN0YXJ0IHdoZXJlIHRvIHN0YXJ0IHBhcnNpbmcuCisgICAgICogQHBhcmFtIGZpZWxkIHRoZSBkYXRlIGZpZWxkIGJlaW5nIHBhcnNlZC4KKyAgICAgKiBAcGFyYW0gZGF0YSB0aGUgc3RyaW5nIGFycmF5IHRvIHBhcnNlZC4KKyAgICAgKiBAcmV0dXJuIHRoZSBuZXcgc3RhcnQgcG9zaXRpb24gaWYgbWF0Y2hpbmcgc3VjY2VlZGVkOyBhIG5lZ2F0aXZlCisgICAgICogbnVtYmVyIGluZGljYXRpbmcgbWF0Y2hpbmcgZmFpbHVyZSwgb3RoZXJ3aXNlLiAgQXMgYSBzaWRlIGVmZmVjdCwKKyAgICAgKiBzZXRzIHRoZSA8Y29kZT5jYWw8L2NvZGU+IGZpZWxkIDxjb2RlPmZpZWxkPC9jb2RlPiB0byB0aGUgaW5kZXgKKyAgICAgKiBvZiB0aGUgYmVzdCBtYXRjaCwgaWYgbWF0Y2hpbmcgc3VjY2VlZGVkLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHByb3RlY3RlZCBpbnQgbWF0Y2hTdHJpbmcoU3RyaW5nIHRleHQsIGludCBzdGFydCwgaW50IGZpZWxkLCBTdHJpbmdbXSBkYXRhLCBDYWxlbmRhciBjYWwpCisgICAgeworICAgICAgICBpbnQgaSA9IDA7CisgICAgICAgIGludCBjb3VudCA9IGRhdGEubGVuZ3RoOworCisgICAgICAgIGlmIChmaWVsZCA9PSBDYWxlbmRhci5EQVlfT0ZfV0VFSykgaSA9IDE7CisKKyAgICAgICAgLy8gVGhlcmUgbWF5IGJlIG11bHRpcGxlIHN0cmluZ3MgaW4gdGhlIGRhdGFbXSBhcnJheSB3aGljaCBiZWdpbiB3aXRoCisgICAgICAgIC8vIHRoZSBzYW1lIHByZWZpeCAoZS5nLiwgQ2VydmVuIGFuZCBDZXJ2ZW5lYyAoSnVuZSBhbmQgSnVseSkgaW4gQ3plY2gpLgorICAgICAgICAvLyBXZSBrZWVwIHRyYWNrIG9mIHRoZSBsb25nZXN0IG1hdGNoLCBhbmQgcmV0dXJuIHRoYXQuICBOb3RlIHRoYXQgdGhpcworICAgICAgICAvLyB1bmZvcnR1bmF0ZWx5IHJlcXVpcmVzIHVzIHRvIHRlc3QgYWxsIGFycmF5IGVsZW1lbnRzLgorICAgICAgICBpbnQgYmVzdE1hdGNoTGVuZ3RoID0gMCwgYmVzdE1hdGNoID0gLTE7CisgICAgICAgIGZvciAoOyBpPGNvdW50OyArK2kpCisgICAgICAgIHsKKyAgICAgICAgICAgIGludCBsZW5ndGggPSBkYXRhW2ldLmxlbmd0aCgpOworICAgICAgICAgICAgLy8gQWx3YXlzIGNvbXBhcmUgaWYgd2UgaGF2ZSBubyBtYXRjaCB5ZXQ7IG90aGVyd2lzZSBvbmx5IGNvbXBhcmUKKyAgICAgICAgICAgIC8vIGFnYWluc3QgcG90ZW50aWFsbHkgYmV0dGVyIG1hdGNoZXMgKGxvbmdlciBzdHJpbmdzKS4KKyAgICAgICAgICAgIGlmIChsZW5ndGggPiBiZXN0TWF0Y2hMZW5ndGggJiYKKyAgICAgICAgICAgICAgICB0ZXh0LnJlZ2lvbk1hdGNoZXModHJ1ZSwgc3RhcnQsIGRhdGFbaV0sIDAsIGxlbmd0aCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYmVzdE1hdGNoID0gaTsKKyAgICAgICAgICAgICAgICBiZXN0TWF0Y2hMZW5ndGggPSBsZW5ndGg7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKGJlc3RNYXRjaCA+PSAwKQorICAgICAgICB7CisgICAgICAgICAgICBjYWwuc2V0KGZpZWxkLCBiZXN0TWF0Y2gpOworICAgICAgICAgICAgcmV0dXJuIHN0YXJ0ICsgYmVzdE1hdGNoTGVuZ3RoOworICAgICAgICB9CisgICAgICAgIHJldHVybiAtc3RhcnQ7CisgICAgfQorCisgICAgcHJpdmF0ZSBpbnQgbWF0Y2hab25lU3RyaW5nKFN0cmluZyB0ZXh0LCBpbnQgc3RhcnQsIGludCB6b25lSW5kZXgpIHsKKyAgICBpbnQgajsKKyAgICBmb3IgKGogPSAxOyBqIDw9IDQ7ICsraikgeworICAgICAgICAvLyBDaGVja2luZyBsb25nIGFuZCBzaG9ydCB6b25lcyBbMSAmIDJdLAorICAgICAgICAvLyBhbmQgbG9uZyBhbmQgc2hvcnQgZGF5bGlnaHQgWzMgJiA0XS4KKyAgICAgICAgaWYgKHRleHQucmVnaW9uTWF0Y2hlcyh0cnVlLCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICBmb3JtYXREYXRhLnpvbmVTdHJpbmdzW3pvbmVJbmRleF1bal0sIDAsCisgICAgICAgICAgICAgICAgICAgZm9ybWF0RGF0YS56b25lU3RyaW5nc1t6b25lSW5kZXhdW2pdLmxlbmd0aCgpKSkgeworICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gKGogPiA0KSA/IC0xIDogajsKKyAgICB9ICAgCisKKyAgICAvKioKKyAgICAgKiBmaW5kIHRpbWUgem9uZSAndGV4dCcgbWF0Y2hlZCB6b25lU3RyaW5ncyBhbmQgc2V0IGNhbAorICAgICAqLworICAgIHByaXZhdGUgaW50IHN1YlBhcnNlWm9uZVN0cmluZyhTdHJpbmcgdGV4dCwgaW50IHN0YXJ0LCBDYWxlbmRhciBjYWwpIHsKKyAgICAvLyBBdCB0aGlzIHBvaW50LCBjaGVjayBmb3IgbmFtZWQgdGltZSB6b25lcyBieSBsb29raW5nIHRocm91Z2gKKyAgICAvLyB0aGUgbG9jYWxlIGRhdGEgZnJvbSB0aGUgRGF0ZUZvcm1hdFpvbmVEYXRhIHN0cmluZ3MuCisgICAgLy8gV2FudCB0byBiZSBhYmxlIHRvIHBhcnNlIGJvdGggc2hvcnQgYW5kIGxvbmcgZm9ybXMuCisgICAgaW50IHpvbmVJbmRleCA9IAorICAgICAgICBmb3JtYXREYXRhLmdldFpvbmVJbmRleCAoZ2V0VGltZVpvbmUoKS5nZXRJRCgpKTsKKyAgICBUaW1lWm9uZSB0eiA9IG51bGw7CisgICAgaW50IGogPSAwLCBpID0gMDsKKyAgICBpZiAoKHpvbmVJbmRleCAhPSAtMSkgJiYgKChqID0gbWF0Y2hab25lU3RyaW5nKHRleHQsIHN0YXJ0LCB6b25lSW5kZXgpKSA+IDApKSB7CisgICAgICAgIHR6ID0gVGltZVpvbmUuZ2V0VGltZVpvbmUoZm9ybWF0RGF0YS56b25lU3RyaW5nc1t6b25lSW5kZXhdWzBdKTsKKyAgICAgICAgaSA9IHpvbmVJbmRleDsKKyAgICB9CisgICAgaWYgKHR6ID09IG51bGwpIHsKKyAgICAgICAgem9uZUluZGV4ID0gCisgICAgICAgIGZvcm1hdERhdGEuZ2V0Wm9uZUluZGV4IChUaW1lWm9uZS5nZXREZWZhdWx0KCkuZ2V0SUQoKSk7CisgICAgICAgIGlmICgoem9uZUluZGV4ICE9IC0xKSAmJiAoKGogPSBtYXRjaFpvbmVTdHJpbmcodGV4dCwgc3RhcnQsIHpvbmVJbmRleCkpID4gMCkpIHsKKyAgICAgICAgdHogPSBUaW1lWm9uZS5nZXRUaW1lWm9uZShmb3JtYXREYXRhLnpvbmVTdHJpbmdzW3pvbmVJbmRleF1bMF0pOworICAgICAgICBpID0gem9uZUluZGV4OworICAgICAgICB9CisgICAgfSAgICAgICAKKworICAgIGlmICh0eiA9PSBudWxsKSB7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBmb3JtYXREYXRhLnpvbmVTdHJpbmdzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmICgoaiA9IG1hdGNoWm9uZVN0cmluZyh0ZXh0LCBzdGFydCwgaSkpID4gMCkgeworICAgICAgICAgICAgdHogPSBUaW1lWm9uZS5nZXRUaW1lWm9uZShmb3JtYXREYXRhLnpvbmVTdHJpbmdzW2ldWzBdKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHR6ICE9IG51bGwpIHsgLy8gTWF0Y2hlZCBhbnkgPworICAgICAgICBjYWwuc2V0KENhbGVuZGFyLlpPTkVfT0ZGU0VULCB0ei5nZXRSYXdPZmZzZXQoKSk7CisgICAgICAgIC8vIFRoZSBjb2RlIGJlbG93IHRpbWUgem9uZSBpcyBhc3N1bWVkIHRvIGJlIGluc3RhbmNlIG9mCisgICAgICAgIC8vIFNpbXBsZVRpbWVab25lLgorICAgICAgICBjYWwuc2V0KENhbGVuZGFyLkRTVF9PRkZTRVQsIAorICAgICAgICAgICAgIGogPj0gMyA/ICgoU2ltcGxlVGltZVpvbmUpdHopLmdldERTVFNhdmluZ3MoKSA6IDApOworICAgICAgICByZXR1cm4gKHN0YXJ0ICsgZm9ybWF0RGF0YS56b25lU3RyaW5nc1tpXVtqXS5sZW5ndGgoKSk7CisgICAgfQorICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qKgorICAgICAqIFByb3RlY3RlZCBtZXRob2QgdGhhdCBjb252ZXJ0cyBvbmUgZmllbGQgb2YgdGhlIGlucHV0IHN0cmluZyBpbnRvIGEKKyAgICAgKiBudW1lcmljIGZpZWxkIHZhbHVlIGluIDxjb2RlPmNhbDwvY29kZT4uICBSZXR1cm5zIC1zdGFydCAoZm9yCisgICAgICogUGFyc2VQb3NpdGlvbikgaWYgZmFpbGVkLiAgU3ViY2xhc3NlcyBtYXkgb3ZlcnJpZGUgdGhpcyBtZXRob2QgdG8KKyAgICAgKiBtb2RpZnkgb3IgYWRkIHBhcnNpbmcgY2FwYWJpbGl0aWVzLgorICAgICAqIEBwYXJhbSB0ZXh0IHRoZSB0aW1lIHRleHQgdG8gYmUgcGFyc2VkLgorICAgICAqIEBwYXJhbSBzdGFydCB3aGVyZSB0byBzdGFydCBwYXJzaW5nLgorICAgICAqIEBwYXJhbSBjaCB0aGUgcGF0dGVybiBjaGFyYWN0ZXIgZm9yIHRoZSBkYXRlIGZpZWxkIHRleHQgdG8gYmUgcGFyc2VkLgorICAgICAqIEBwYXJhbSBjb3VudCB0aGUgY291bnQgb2YgYSBwYXR0ZXJuIGNoYXJhY3Rlci4KKyAgICAgKiBAcGFyYW0gb2JleUNvdW50IGlmIHRydWUsIHRoZW4gdGhlIG5leHQgZmllbGQgZGlyZWN0bHkgYWJ1dHMgdGhpcyBvbmUsCisgICAgICogYW5kIHdlIHNob3VsZCB1c2UgdGhlIGNvdW50IHRvIGtub3cgd2hlbiB0byBzdG9wIHBhcnNpbmcuCisgICAgICogQHBhcmFtIGFtYmlndW91c1llYXIgcmV0dXJuIHBhcmFtZXRlcjsgdXBvbiByZXR1cm4sIGlmIGFtYmlndW91c1llYXJbMF0KKyAgICAgKiBpcyB0cnVlLCB0aGVuIGEgdHdvLWRpZ2l0IHllYXIgd2FzIHBhcnNlZCBhbmQgbWF5IG5lZWQgdG8gYmUgcmVhZGp1c3RlZC4KKyAgICAgKiBAcmV0dXJuIHRoZSBuZXcgc3RhcnQgcG9zaXRpb24gaWYgbWF0Y2hpbmcgc3VjY2VlZGVkOyBhIG5lZ2F0aXZlCisgICAgICogbnVtYmVyIGluZGljYXRpbmcgbWF0Y2hpbmcgZmFpbHVyZSwgb3RoZXJ3aXNlLiAgQXMgYSBzaWRlIGVmZmVjdCwKKyAgICAgKiBzZXQgdGhlIGFwcHJvcHJpYXRlIGZpZWxkIG9mIDxjb2RlPmNhbDwvY29kZT4gd2l0aCB0aGUgcGFyc2VkCisgICAgICogdmFsdWUuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHJvdGVjdGVkIGludCBzdWJQYXJzZShTdHJpbmcgdGV4dCwgaW50IHN0YXJ0LCBjaGFyIGNoLCBpbnQgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIG9iZXlDb3VudCwgYm9vbGVhbltdIGFtYmlndW91c1llYXIsIENhbGVuZGFyIGNhbCkKKyAgICB7CisgICAgICAgIE51bWJlciBudW1iZXIgPSBudWxsOworICAgICAgICBpbnQgdmFsdWUgPSAwOworICAgICAgICBpbnQgaTsKKyAgICAgICAgUGFyc2VQb3NpdGlvbiBwb3MgPSBuZXcgUGFyc2VQb3NpdGlvbigwKTsKKyAgICAgICAgaW50IHBhdHRlcm5DaGFySW5kZXggPSAtMTsKKworICAgICAgICAvLyBURU1QT1JBUlkgSEFDSyBUT0RPIGZpeCB0aGlzCisgICAgICAgIGlmIChjaCA9PSAndScpIHsgLy8gJ3UnIC0gRVhURU5ERURfWUVBUgorICAgICAgICAgICAgcG9zLnNldEluZGV4KHN0YXJ0KTsKKyAgICAgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgICAgICBpZiAocG9zLmdldEluZGV4KCkgPj0gdGV4dC5sZW5ndGgoKSkgcmV0dXJuIC1zdGFydDsKKyAgICAgICAgICAgICAgICBjaGFyIGMgPSB0ZXh0LmNoYXJBdChwb3MuZ2V0SW5kZXgoKSk7CisgICAgICAgICAgICAgICAgaWYgKGMgIT0gJyAnICYmIGMgIT0gJ1x0JykgYnJlYWs7CisgICAgICAgICAgICAgICAgcG9zLnNldEluZGV4KHBvcy5nZXRJbmRleCgpKzEpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG9iZXlDb3VudCkgeworICAgICAgICAgICAgICAgIGlmICgoc3RhcnQrY291bnQpID4gdGV4dC5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLXN0YXJ0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBudW1iZXIgPSBudW1iZXJGb3JtYXQucGFyc2UodGV4dC5zdWJzdHJpbmcoMCwgc3RhcnQrY291bnQpLCBwb3MpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBudW1iZXIgPSBudW1iZXJGb3JtYXQucGFyc2UodGV4dCwgcG9zKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChudW1iZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJldHVybiAtc3RhcnQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2YWx1ZSA9IG51bWJlci5pbnRWYWx1ZSgpOworICAgICAgICAgICAgY2FsLnNldChDYWxlbmRhci5FWFRFTkRFRF9ZRUFSLCB2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gcG9zLmdldEluZGV4KCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoKHBhdHRlcm5DaGFySW5kZXg9Zm9ybWF0RGF0YS5wYXR0ZXJuQ2hhcnMuaW5kZXhPZihjaCkpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIC1zdGFydDsKKworICAgICAgICBpbnQgZmllbGQgPSBQQVRURVJOX0lOREVYX1RPX0NBTEVOREFSX0ZJRUxEW3BhdHRlcm5DaGFySW5kZXhdOworCisgICAgICAgIC8vIElmIHRoZXJlIGFyZSBhbnkgc3BhY2VzIGhlcmUsIHNraXAgb3ZlciB0aGVtLiAgSWYgd2UgaGl0IHRoZSBlbmQKKyAgICAgICAgLy8gb2YgdGhlIHN0cmluZywgdGhlbiBmYWlsLgorICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICBpZiAoc3RhcnQgPj0gdGV4dC5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIHJldHVybiAtc3RhcnQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbnQgYyA9IFVURjE2LmNoYXJBdCh0ZXh0LCBzdGFydCk7CisgICAgICAgICAgICBpZiAoIVVDaGFyYWN0ZXIuaXNVV2hpdGVTcGFjZShjKSkgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RhcnQgKz0gVVRGMTYuZ2V0Q2hhckNvdW50KGMpOworICAgICAgICB9CisgICAgICAgIHBvcy5zZXRJbmRleChzdGFydCk7CisKKyAgICAgICAgLy8gV2UgaGFuZGxlIGEgZmV3IHNwZWNpYWwgY2FzZXMgaGVyZSB3aGVyZSB3ZSBuZWVkIHRvIHBhcnNlCisgICAgICAgIC8vIGEgbnVtYmVyIHZhbHVlLiAgV2UgaGFuZGxlIGZ1cnRoZXIsIG1vcmUgZ2VuZXJpYyBjYXNlcyBiZWxvdy4gIFdlIG5lZWQKKyAgICAgICAgLy8gdG8gaGFuZGxlIHNvbWUgb2YgdGhlbSBoZXJlIGJlY2F1c2Ugc29tZSBmaWVsZHMgcmVxdWlyZSBleHRyYSBwcm9jZXNzaW5nIG9uCisgICAgICAgIC8vIHRoZSBwYXJzZWQgdmFsdWUuCisgICAgICAgIGlmIChwYXR0ZXJuQ2hhckluZGV4ID09IDQgLypIT1VSX09GX0RBWTFfRklFTEQqLyB8fAorICAgICAgICAgICAgcGF0dGVybkNoYXJJbmRleCA9PSAxNSAvKkhPVVIxX0ZJRUxEKi8gfHwKKyAgICAgICAgICAgIChwYXR0ZXJuQ2hhckluZGV4ID09IDIgLypNT05USF9GSUVMRCovICYmIGNvdW50IDw9IDIpIHx8CisgICAgICAgICAgICBwYXR0ZXJuQ2hhckluZGV4ID09IDEpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIEl0IHdvdWxkIGJlIGdvb2QgdG8gdW5pZnkgdGhpcyB3aXRoIHRoZSBvYmV5Q291bnQgbG9naWMgYmVsb3csCisgICAgICAgICAgICAvLyBidXQgdGhhdCdzIGdvaW5nIHRvIGJlIGRpZmZpY3VsdC4KKyAgICAgICAgICAgIGlmIChvYmV5Q291bnQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKChzdGFydCtjb3VudCkgPiB0ZXh0Lmxlbmd0aCgpKSByZXR1cm4gLXN0YXJ0OworICAgICAgICAgICAgICAgIG51bWJlciA9IG51bWJlckZvcm1hdC5wYXJzZSh0ZXh0LnN1YnN0cmluZygwLCBzdGFydCtjb3VudCksIHBvcyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIG51bWJlciA9IG51bWJlckZvcm1hdC5wYXJzZSh0ZXh0LCBwb3MpOworICAgICAgICAgICAgaWYgKG51bWJlciA9PSBudWxsKQorICAgICAgICAgICAgICAgIHJldHVybiAtc3RhcnQ7CisgICAgICAgICAgICB2YWx1ZSA9IG51bWJlci5pbnRWYWx1ZSgpOworICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoIChwYXR0ZXJuQ2hhckluZGV4KQorICAgICAgICB7CisgICAgICAgIGNhc2UgMDogLy8gJ0cnIC0gRVJBCisgICAgICAgICAgICByZXR1cm4gbWF0Y2hTdHJpbmcodGV4dCwgc3RhcnQsIENhbGVuZGFyLkVSQSwgZm9ybWF0RGF0YS5lcmFzLCBjYWwpOworICAgICAgICBjYXNlIDE6IC8vICd5JyAtIFlFQVIKKyAgICAgICAgICAgIC8vIElmIHRoZXJlIGFyZSAzIG9yIG1vcmUgWUVBUiBwYXR0ZXJuIGNoYXJhY3RlcnMsIHRoaXMgaW5kaWNhdGVzCisgICAgICAgICAgICAvLyB0aGF0IHRoZSB5ZWFyIHZhbHVlIGlzIHRvIGJlIHRyZWF0ZWQgbGl0ZXJhbGx5LCB3aXRob3V0IGFueQorICAgICAgICAgICAgLy8gdHdvLWRpZ2l0IHllYXIgYWRqdXN0bWVudHMgKGUuZy4sIGZyb20gIjAxIiB0byAyMDAxKS4gIE90aGVyd2lzZQorICAgICAgICAgICAgLy8gd2UgbWFkZSBhZGp1c3RtZW50cyB0byBwbGFjZSB0aGUgMi1kaWdpdCB5ZWFyIGluIHRoZSBwcm9wZXIKKyAgICAgICAgICAgIC8vIGNlbnR1cnksIGZvciBwYXJzZWQgc3RyaW5ncyBmcm9tICIwMCIgdG8gIjk5Ii4gIEFueSBvdGhlciBzdHJpbmcKKyAgICAgICAgICAgIC8vIGlzIHRyZWF0ZWQgbGl0ZXJhbGx5OiAgIjIyNTAiLCAiLTEiLCAiMSIsICIwMDIiLgorICAgICAgICAgICAgLyogJ3l5JyBpcyB0aGUgb25seSBzcGVjaWFsIGNhc2UsICd5JyBpcyBpbnRlcnByZXRlZCBhcyBudW1iZXIuIFtSaWNoYXJkL0dDTF0qLworICAgICAgICAgICAgaWYgKGNvdW50ID09IDIgJiYgKHBvcy5nZXRJbmRleCgpIC0gc3RhcnQpID09IDIKKyAgICAgICAgICAgICAgICAmJiBDaGFyYWN0ZXIuaXNEaWdpdCh0ZXh0LmNoYXJBdChzdGFydCkpCisgICAgICAgICAgICAgICAgJiYgQ2hhcmFjdGVyLmlzRGlnaXQodGV4dC5jaGFyQXQoc3RhcnQrMSkpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIEFzc3VtZSBmb3IgZXhhbXBsZSB0aGF0IHRoZSBkZWZhdWx0Q2VudHVyeVN0YXJ0IGlzIDYvMTgvMTkwMy4KKyAgICAgICAgICAgICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgdHdvLWRpZ2l0IHllYXJzIHdpbGwgYmUgZm9yY2VkIGludG8gdGhlIHJhbmdlCisgICAgICAgICAgICAgICAgLy8gNi8xOC8xOTAzIHRvIDYvMTcvMjAwMy4gIEFzIGEgcmVzdWx0LCB5ZWFycyAwMCwgMDEsIGFuZCAwMgorICAgICAgICAgICAgICAgIC8vIGNvcnJlc3BvbmQgdG8gMjAwMCwgMjAwMSwgYW5kIDIwMDIuICBZZWFycyAwNCwgMDUsIGV0Yy4gY29ycmVzcG9uZAorICAgICAgICAgICAgICAgIC8vIHRvIDE5MDQsIDE5MDUsIGV0Yy4gIElmIHRoZSB5ZWFyIGlzIDAzLCB0aGVuIGl0IGlzIDIwMDMgaWYgdGhlCisgICAgICAgICAgICAgICAgLy8gb3RoZXIgZmllbGRzIHNwZWNpZnkgYSBkYXRlIGJlZm9yZSA2LzE4LCBvciAxOTAzIGlmIHRoZXkgc3BlY2lmeSBhCisgICAgICAgICAgICAgICAgLy8gZGF0ZSBhZnRlcndhcmRzLiAgQXMgYSByZXN1bHQsIDAzIGlzIGFuIGFtYmlndW91cyB5ZWFyLiAgQWxsIG90aGVyCisgICAgICAgICAgICAgICAgLy8gdHdvLWRpZ2l0IHllYXJzIGFyZSB1bmFtYmlndW91cy4KKyAgICAgICAgICAgICAgICBpbnQgYW1iaWd1b3VzVHdvRGlnaXRZZWFyID0gZGVmYXVsdENlbnR1cnlTdGFydFllYXIgJSAxMDA7CisgICAgICAgICAgICAgICAgYW1iaWd1b3VzWWVhclswXSA9IHZhbHVlID09IGFtYmlndW91c1R3b0RpZ2l0WWVhcjsKKyAgICAgICAgICAgICAgICB2YWx1ZSArPSAoZGVmYXVsdENlbnR1cnlTdGFydFllYXIvMTAwKSoxMDAgKworICAgICAgICAgICAgICAgICAgICAodmFsdWUgPCBhbWJpZ3VvdXNUd29EaWdpdFllYXIgPyAxMDAgOiAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhbC5zZXQoQ2FsZW5kYXIuWUVBUiwgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIHBvcy5nZXRJbmRleCgpOworICAgICAgICBjYXNlIDI6IC8vICdNJyAtIE1PTlRICisgICAgICAgICAgICBpZiAoY291bnQgPD0gMikgLy8gaS5lLiwgTSBvciBNTS4KKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBEb24ndCB3YW50IHRvIHBhcnNlIHRoZSBtb250aCBpZiBpdCBpcyBhIHN0cmluZworICAgICAgICAgICAgICAgIC8vIHdoaWxlIHBhdHRlcm4gdXNlcyBudW1lcmljIHN0eWxlOiBNIG9yIE1NLgorICAgICAgICAgICAgICAgIC8vIFtXZSBjb21wdXRlZCAndmFsdWUnIGFib3ZlLl0KKyAgICAgICAgICAgICAgICBjYWwuc2V0KENhbGVuZGFyLk1PTlRILCB2YWx1ZSAtIDEpOworICAgICAgICAgICAgICAgIHJldHVybiBwb3MuZ2V0SW5kZXgoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBjb3VudCA+PSAzIC8vIGkuZS4sIE1NTSBvciBNTU1NCisgICAgICAgICAgICAgICAgLy8gV2FudCB0byBiZSBhYmxlIHRvIHBhcnNlIGJvdGggc2hvcnQgYW5kIGxvbmcgZm9ybXMuCisgICAgICAgICAgICAgICAgLy8gVHJ5IGNvdW50ID09IDQgZmlyc3Q6CisgICAgICAgICAgICAgICAgaW50IG5ld1N0YXJ0ID0gMDsKKyAgICAgICAgICAgICAgICBpZiAoKG5ld1N0YXJ0PW1hdGNoU3RyaW5nKHRleHQsIHN0YXJ0LCBDYWxlbmRhci5NT05USCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdERhdGEubW9udGhzLCBjYWwpKSA+IDApCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXdTdGFydDsKKyAgICAgICAgICAgICAgICBlbHNlIC8vIGNvdW50ID09IDQgZmFpbGVkLCBub3cgdHJ5IGNvdW50ID09IDMKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoU3RyaW5nKHRleHQsIHN0YXJ0LCBDYWxlbmRhci5NT05USCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdERhdGEuc2hvcnRNb250aHMsIGNhbCk7CisgICAgICAgICAgICB9CisgICAgICAgIGNhc2UgNDogLy8gJ2snIC0gSE9VUl9PRl9EQVk6IDEtYmFzZWQuICBlZywgMjM6NTkgKyAxIGhvdXIgPT4+IDI0OjU5CisgICAgICAgICAgICAvLyBbV2UgY29tcHV0ZWQgJ3ZhbHVlJyBhYm92ZS5dCisgICAgICAgICAgICBpZiAodmFsdWUgPT0gY2FsLmdldE1heGltdW0oQ2FsZW5kYXIuSE9VUl9PRl9EQVkpKzEpIHZhbHVlID0gMDsKKyAgICAgICAgICAgIGNhbC5zZXQoQ2FsZW5kYXIuSE9VUl9PRl9EQVksIHZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiBwb3MuZ2V0SW5kZXgoKTsKKyAgICAgICAgY2FzZSA5OiB7IC8vICdFJyAtIERBWV9PRl9XRUVLCisgICAgICAgICAgICAvLyBXYW50IHRvIGJlIGFibGUgdG8gcGFyc2UgYm90aCBzaG9ydCBhbmQgbG9uZyBmb3Jtcy4KKyAgICAgICAgICAgIC8vIFRyeSBjb3VudCA9PSA0IChEREREKSBmaXJzdDoKKyAgICAgICAgICAgIGludCBuZXdTdGFydCA9IDA7CisgICAgICAgICAgICBpZiAoKG5ld1N0YXJ0PW1hdGNoU3RyaW5nKHRleHQsIHN0YXJ0LCBDYWxlbmRhci5EQVlfT0ZfV0VFSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0RGF0YS53ZWVrZGF5cywgY2FsKSkgPiAwKQorICAgICAgICAgICAgICAgIHJldHVybiBuZXdTdGFydDsKKyAgICAgICAgICAgIGVsc2UgLy8gRERERCBmYWlsZWQsIG5vdyB0cnkgRERECisgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoU3RyaW5nKHRleHQsIHN0YXJ0LCBDYWxlbmRhci5EQVlfT0ZfV0VFSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0RGF0YS5zaG9ydFdlZWtkYXlzLCBjYWwpOworICAgICAgICB9CisgICAgICAgIGNhc2UgMTQ6ICAgIC8vICdhJyAtIEFNX1BNCisgICAgICAgICAgICByZXR1cm4gbWF0Y2hTdHJpbmcodGV4dCwgc3RhcnQsIENhbGVuZGFyLkFNX1BNLCBmb3JtYXREYXRhLmFtcG1zLCBjYWwpOworICAgICAgICBjYXNlIDE1OiAvLyAnaCcgLSBIT1VSOjEtYmFzZWQuICBlZywgMTFQTSArIDEgaG91ciA9Pj4gMTIgQU0KKyAgICAgICAgICAgIC8vIFtXZSBjb21wdXRlZCAndmFsdWUnIGFib3ZlLl0KKyAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBjYWwuZ2V0TGVhc3RNYXhpbXVtKENhbGVuZGFyLkhPVVIpKzEpIHZhbHVlID0gMDsKKyAgICAgICAgICAgIGNhbC5zZXQoQ2FsZW5kYXIuSE9VUiwgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIHBvcy5nZXRJbmRleCgpOworICAgICAgICBjYXNlIDE3OiAvLyAneicgLSBaT05FX09GRlNFVAorICAgICAgICAgICAgLy8gRmlyc3QgdHJ5IHRvIHBhcnNlIGdlbmVyaWMgZm9ybXMgc3VjaCBhcyBHTVQtMDc6MDAuIERvIHRoaXMgZmlyc3QKKyAgICAgICAgICAgIC8vIGluIGNhc2UgbG9jYWxpemVkIERhdGVGb3JtYXRab25lRGF0YSBjb250YWlucyB0aGUgc3RyaW5nICJHTVQiCisgICAgICAgICAgICAvLyBmb3IgYSB6b25lOyBpbiB0aGF0IGNhc2UsIHdlIGRvbid0IHdhbnQgdG8gbWF0Y2ggdGhlIGZpcnN0IHRocmVlCisgICAgICAgICAgICAvLyBjaGFyYWN0ZXJzIG9mIEdNVCsvLUhIOk1NIGV0Yy4KKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpbnQgc2lnbiA9IDA7CisgICAgICAgICAgICAgICAgaW50IG9mZnNldDsKKworICAgICAgICAgICAgICAgIC8vIEZvciB0aW1lIHpvbmVzIHRoYXQgaGF2ZSBubyBrbm93biBuYW1lcywgbG9vayBmb3Igc3RyaW5ncworICAgICAgICAgICAgICAgIC8vIG9mIHRoZSBmb3JtOgorICAgICAgICAgICAgICAgIC8vICAgIEdNVFsrLV1ob3VyczptaW51dGVzIG9yCisgICAgICAgICAgICAgICAgLy8gICAgR01UWystXWhobW0gb3IKKyAgICAgICAgICAgICAgICAvLyAgICBHTVQuCisgICAgICAgICAgICAgICAgaWYgKCh0ZXh0Lmxlbmd0aCgpIC0gc3RhcnQpID49IEdNVC5sZW5ndGgoKSAmJgorICAgICAgICAgICAgICAgICAgICB0ZXh0LnJlZ2lvbk1hdGNoZXModHJ1ZSwgc3RhcnQsIEdNVCwgMCwgR01ULmxlbmd0aCgpKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNhbC5zZXQoQ2FsZW5kYXIuRFNUX09GRlNFVCwgMCk7CisKKyAgICAgICAgICAgICAgICAgICAgcG9zLnNldEluZGV4KHN0YXJ0ICsgR01ULmxlbmd0aCgpKTsKKworICAgICAgICAgICAgdHJ5IHsgLy8gdHJ5LWNhdGNoIGZvciAiR01UIiBvbmx5IHRpbWUgem9uZSBzdHJpbmcKKyAgICAgICAgICAgIGlmKCB0ZXh0LmNoYXJBdChwb3MuZ2V0SW5kZXgoKSkgPT0gJysnICkgeworICAgICAgICAgICAgICAgIHNpZ24gPSAxOworICAgICAgICAgICAgfSBlbHNlIGlmKCB0ZXh0LmNoYXJBdChwb3MuZ2V0SW5kZXgoKSkgPT0gJy0nICkgeworICAgICAgICAgICAgICAgIHNpZ24gPSAtMTsKKyAgICAgICAgICAgIH0gCisgICAgICAgICAgICB9IGNhdGNoKFN0cmluZ0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc2lnbiA9PSAwKSB7CisgICAgICAgICAgICBjYWwuc2V0KENhbGVuZGFyLlpPTkVfT0ZGU0VULCAwICk7CisgICAgICAgICAgICByZXR1cm4gcG9zLmdldEluZGV4KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgLy8gTG9vayBmb3IgaG91cnM6bWludXRlcyBvciBoaG1tLgorICAgICAgICAgICAgICAgICAgICBwb3Muc2V0SW5kZXgocG9zLmdldEluZGV4KCkgKyAxKTsKKyAgICAgICAgICAgICAgICAgICAgTnVtYmVyIHR6TnVtYmVyID0gbnVtYmVyRm9ybWF0LnBhcnNlKHRleHQsIHBvcyk7CisgICAgICAgICAgICAgICAgICAgIGlmKCB0ek51bWJlciA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLXN0YXJ0OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmKCB0ZXh0LmNoYXJBdChwb3MuZ2V0SW5kZXgoKSkgPT0gJzonICkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgaG91cnM6bWludXRlcyBjYXNlCisgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSB0ek51bWJlci5pbnRWYWx1ZSgpICogNjA7CisgICAgICAgICAgICAgICAgICAgICAgICBwb3Muc2V0SW5kZXgocG9zLmdldEluZGV4KCkgKyAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHR6TnVtYmVyID0gbnVtYmVyRm9ybWF0LnBhcnNlKHRleHQsIHBvcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiggdHpOdW1iZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtc3RhcnQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gdHpOdW1iZXIuaW50VmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGhobW0gY2FzZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IHR6TnVtYmVyLmludFZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiggb2Zmc2V0IDwgMjQgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCAqPSA2MDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSBvZmZzZXQgJSAxMDAgKyBvZmZzZXQgLyAxMDAgKiA2MDsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIC8vIEZhbGwgdGhyb3VnaCBmb3IgZmluYWwgcHJvY2Vzc2luZyBiZWxvdyBvZiAnb2Zmc2V0JyBhbmQgJ3NpZ24nLgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCwgY2hlY2sgZm9yIG5hbWVkIHRpbWUgem9uZXMgYnkgbG9va2luZyB0aHJvdWdoCisgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBsb2NhbGUgZGF0YSBmcm9tIHRoZSBEYXRlRm9ybWF0Wm9uZURhdGEgc3RyaW5ncy4KKyAgICAgICAgICAgICAgICAgICAgLy8gV2FudCB0byBiZSBhYmxlIHRvIHBhcnNlIGJvdGggc2hvcnQgYW5kIGxvbmcgZm9ybXMuCisgICAgICAgICAgICBpID0gc3ViUGFyc2Vab25lU3RyaW5nKHRleHQsIHN0YXJ0LCBjYWwpOworICAgICAgICAgICAgaWYgKGkgIT0gMCkKKyAgICAgICAgICAgIHJldHVybiBpOworCisgICAgICAgICAgICAgICAgICAgIC8vIEFzIGEgbGFzdCByZXNvcnQsIGxvb2sgZm9yIG51bWVyaWMgdGltZXpvbmVzIG9mIHRoZSBmb3JtCisgICAgICAgICAgICAgICAgICAgIC8vIFsrLV1oaG1tIGFzIHNwZWNpZmllZCBieSBSRkMgODIyLiAgVGhpcyBjb2RlIGlzIGFjdHVhbGx5CisgICAgICAgICAgICAgICAgICAgIC8vIGEgbGl0dGxlIG1vcmUgcGVybWlzc2l2ZSB0aGFuIFJGQyA4MjIuICBJdCB3aWxsIHRyeSB0byBkbworICAgICAgICAgICAgICAgICAgICAvLyBpdHMgYmVzdCB3aXRoIG51bWJlcnMgdGhhdCBhcmVuJ3Qgc3RyaWN0bHkgNCBkaWdpdHMgbG9uZy4KKyAgICAgICAgICAgICAgICAgICAgRGVjaW1hbEZvcm1hdCBmbXQgPSBuZXcgRGVjaW1hbEZvcm1hdCgiKyMjIyM7LSMjIyMiKTsKKyAgICAgICAgICAgICAgICAgICAgZm10LnNldFBhcnNlSW50ZWdlck9ubHkodHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIE51bWJlciB0ek51bWJlciA9IGZtdC5wYXJzZSggdGV4dCwgcG9zICk7CisgICAgICAgICAgICAgICAgICAgIGlmKCB0ek51bWJlciA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLXN0YXJ0OyAgIC8vIFdhc24ndCBhY3R1YWxseSBhIG51bWJlci4KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSB0ek51bWJlci5pbnRWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBzaWduID0gMTsKKyAgICAgICAgICAgICAgICAgICAgaWYoIG9mZnNldCA8IDAgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzaWduID0gLTE7CisgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSAtb2Zmc2V0OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmKCBvZmZzZXQgPCAyNCApCisgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSBvZmZzZXQgKiA2MDsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gb2Zmc2V0ICUgMTAwICsgb2Zmc2V0IC8gMTAwICogNjA7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gRmFsbCB0aHJvdWdoIGZvciBmaW5hbCBwcm9jZXNzaW5nIGJlbG93IG9mICdvZmZzZXQnIGFuZCAnc2lnbicuCisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gRG8gdGhlIGZpbmFsIHByb2Nlc3NpbmcgZm9yIGJvdGggb2YgdGhlIGFib3ZlIGNhc2VzLiAgV2Ugb25seQorICAgICAgICAgICAgICAgIC8vIGFycml2ZSBoZXJlIGlmIHRoZSBmb3JtIEdNVCsvLS4uLiBvciBhbiBSRkMgODIyIGZvcm0gd2FzIHNlZW4uCisgICAgICAgICAgICAgICAgaWYgKHNpZ24gIT0gMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG9mZnNldCAqPSBtaWxsaXNQZXJNaW51dGUgKiBzaWduOworCisgICAgICAgICAgICAgICAgICAgIGlmIChjYWwuZ2V0VGltZVpvbmUoKS51c2VEYXlsaWdodFRpbWUoKSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FsLnNldChDYWxlbmRhci5EU1RfT0ZGU0VULCBtaWxsaXNQZXJIb3VyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCAtPSBtaWxsaXNQZXJIb3VyOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGNhbC5zZXQoQ2FsZW5kYXIuWk9ORV9PRkZTRVQsIG9mZnNldCk7CisKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBvcy5nZXRJbmRleCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gQWxsIGVmZm9ydHMgdG8gcGFyc2UgYSB6b25lIGZhaWxlZC4KKyAgICAgICAgICAgIHJldHVybiAtc3RhcnQ7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC8vIGNhc2UgMzogLy8gJ2QnIC0gREFURQorICAgICAgICAgICAgLy8gY2FzZSA1OiAvLyAnSCcgLSBIT1VSX09GX0RBWTowLWJhc2VkLiAgZWcsIDIzOjU5ICsgMSBob3VyID0+PiAwMDo1OQorICAgICAgICAgICAgLy8gY2FzZSA2OiAvLyAnbScgLSBNSU5VVEUKKyAgICAgICAgICAgIC8vIGNhc2UgNzogLy8gJ3MnIC0gU0VDT05ECisgICAgICAgICAgICAvLyBjYXNlIDg6IC8vICdTJyAtIE1JTExJU0VDT05ECisgICAgICAgICAgICAvLyBjYXNlIDEwOiAvLyAnRCcgLSBEQVlfT0ZfWUVBUgorICAgICAgICAgICAgLy8gY2FzZSAxMTogLy8gJ0YnIC0gREFZX09GX1dFRUtfSU5fTU9OVEgKKyAgICAgICAgICAgIC8vIGNhc2UgMTI6IC8vICd3JyAtIFdFRUtfT0ZfWUVBUgorICAgICAgICAgICAgLy8gY2FzZSAxMzogLy8gJ1cnIC0gV0VFS19PRl9NT05USAorICAgICAgICAgICAgLy8gY2FzZSAxNjogLy8gJ0snIC0gSE9VUjogMC1iYXNlZC4gIGVnLCAxMVBNICsgMSBob3VyID0+PiAwIEFNCisKKyAgICAgICAgICAgIC8vIEhhbmRsZSAiZ2VuZXJpYyIgZmllbGRzCisgICAgICAgICAgICBpZiAob2JleUNvdW50KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICgoc3RhcnQrY291bnQpID4gdGV4dC5sZW5ndGgoKSkgcmV0dXJuIC1zdGFydDsKKyAgICAgICAgICAgICAgICBudW1iZXIgPSBudW1iZXJGb3JtYXQucGFyc2UodGV4dC5zdWJzdHJpbmcoMCwgc3RhcnQrY291bnQpLCBwb3MpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBudW1iZXIgPSBudW1iZXJGb3JtYXQucGFyc2UodGV4dCwgcG9zKTsKKyAgICAgICAgICAgIGlmIChudW1iZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGNhbC5zZXQoZmllbGQsIG51bWJlci5pbnRWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcG9zLmdldEluZGV4KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gLXN0YXJ0OworICAgICAgICB9CisgICAgfQorCisKKyAgICAvKioKKyAgICAgKiBUcmFuc2xhdGUgYSBwYXR0ZXJuLCBtYXBwaW5nIGVhY2ggY2hhcmFjdGVyIGluIHRoZSBmcm9tIHN0cmluZyB0byB0aGUKKyAgICAgKiBjb3JyZXNwb25kaW5nIGNoYXJhY3RlciBpbiB0aGUgdG8gc3RyaW5nLgorICAgICAqLworICAgIHByaXZhdGUgU3RyaW5nIHRyYW5zbGF0ZVBhdHRlcm4oU3RyaW5nIHBhdHRlcm4sIFN0cmluZyBmcm9tLCBTdHJpbmcgdG8pIHsKKyAgICAgICAgU3RyaW5nQnVmZmVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgYm9vbGVhbiBpblF1b3RlID0gZmFsc2U7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGF0dGVybi5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBjaGFyIGMgPSBwYXR0ZXJuLmNoYXJBdChpKTsKKyAgICAgICAgICAgIGlmIChpblF1b3RlKSB7CisgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ1wnJykKKyAgICAgICAgICAgICAgICAgICAgaW5RdW90ZSA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ1wnJykKKyAgICAgICAgICAgICAgICAgICAgaW5RdW90ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoKGMgPj0gJ2EnICYmIGMgPD0gJ3onKSB8fCAoYyA+PSAnQScgJiYgYyA8PSAnWicpKSB7CisgICAgICAgICAgICAgICAgICAgIGludCBjaSA9IGZyb20uaW5kZXhPZihjKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNpID09IC0xKQorICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSWxsZWdhbCBwYXR0ZXJuICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGNoYXJhY3RlciAnIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgKyAiJyIpOworICAgICAgICAgICAgICAgICAgICBjID0gdG8uY2hhckF0KGNpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGMpOworICAgICAgICB9CisgICAgICAgIGlmIChpblF1b3RlKQorICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiVW5maW5pc2hlZCBxdW90ZSBpbiBwYXR0ZXJuIik7CisgICAgICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSBwYXR0ZXJuIHN0cmluZyBkZXNjcmliaW5nIHRoaXMgZGF0ZSBmb3JtYXQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIFN0cmluZyB0b1BhdHRlcm4oKSB7CisgICAgICAgIHJldHVybiBwYXR0ZXJuOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhIGxvY2FsaXplZCBwYXR0ZXJuIHN0cmluZyBkZXNjcmliaW5nIHRoaXMgZGF0ZSBmb3JtYXQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIFN0cmluZyB0b0xvY2FsaXplZFBhdHRlcm4oKSB7CisgICAgICAgIHJldHVybiB0cmFuc2xhdGVQYXR0ZXJuKHBhdHRlcm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdERhdGEucGF0dGVybkNoYXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXREYXRhLmxvY2FsUGF0dGVybkNoYXJzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBcHBseSB0aGUgZ2l2ZW4gdW5sb2NhbGl6ZWQgcGF0dGVybiBzdHJpbmcgdG8gdGhpcyBkYXRlIGZvcm1hdC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBhcHBseVBhdHRlcm4gKFN0cmluZyBwYXR0ZXJuKQorICAgIHsKKyAgICAgICAgdGhpcy5wYXR0ZXJuID0gcGF0dGVybjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBcHBseSB0aGUgZ2l2ZW4gbG9jYWxpemVkIHBhdHRlcm4gc3RyaW5nIHRvIHRoaXMgZGF0ZSBmb3JtYXQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHZvaWQgYXBwbHlMb2NhbGl6ZWRQYXR0ZXJuKFN0cmluZyBwYXR0ZXJuKSB7CisgICAgICAgIHRoaXMucGF0dGVybiA9IHRyYW5zbGF0ZVBhdHRlcm4ocGF0dGVybiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXREYXRhLmxvY2FsUGF0dGVybkNoYXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdERhdGEucGF0dGVybkNoYXJzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBkYXRlL3RpbWUgZm9ybWF0dGluZyBkYXRhLgorICAgICAqIEByZXR1cm4gYSBjb3B5IG9mIHRoZSBkYXRlLXRpbWUgZm9ybWF0dGluZyBkYXRhIGFzc29jaWF0ZWQKKyAgICAgKiB3aXRoIHRoaXMgZGF0ZS10aW1lIGZvcm1hdHRlci4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgRGF0ZUZvcm1hdFN5bWJvbHMgZ2V0RGF0ZUZvcm1hdFN5bWJvbHMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIChEYXRlRm9ybWF0U3ltYm9scylmb3JtYXREYXRhLmNsb25lKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQWxsb3dzIHlvdSB0byBzZXQgdGhlIGRhdGUvdGltZSBmb3JtYXR0aW5nIGRhdGEuCisgICAgICogQHBhcmFtIG5ld0Zvcm1hdERhdGEgdGhlIGdpdmVuIGRhdGUtdGltZSBmb3JtYXR0aW5nIGRhdGEuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0RGF0ZUZvcm1hdFN5bWJvbHMoRGF0ZUZvcm1hdFN5bWJvbHMgbmV3Rm9ybWF0U3ltYm9scykKKyAgICB7CisgICAgICAgIHRoaXMuZm9ybWF0RGF0YSA9IChEYXRlRm9ybWF0U3ltYm9scyluZXdGb3JtYXRTeW1ib2xzLmNsb25lKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogTWV0aG9kIGZvciBzdWJjbGFzc2VzIHRvIGFjY2VzcyB0aGUgRGF0ZUZvcm1hdFN5bWJvbHMuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHJvdGVjdGVkIERhdGVGb3JtYXRTeW1ib2xzIGdldFN5bWJvbHMoKSB7CisgICAgICAgIHJldHVybiBmb3JtYXREYXRhOworICAgIH0KKworICAgIC8qKgorICAgICAqIE92ZXJyaWRlcyBDbG9uZWFibGUKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0IGNsb25lKCkgeworICAgICAgICBTaW1wbGVEYXRlRm9ybWF0IG90aGVyID0gKFNpbXBsZURhdGVGb3JtYXQpIHN1cGVyLmNsb25lKCk7CisgICAgICAgIG90aGVyLmZvcm1hdERhdGEgPSAoRGF0ZUZvcm1hdFN5bWJvbHMpIGZvcm1hdERhdGEuY2xvbmUoKTsKKyAgICAgICAgcmV0dXJuIG90aGVyOworICAgIH0KKworICAgIC8qKgorICAgICAqIE92ZXJyaWRlIGhhc2hDb2RlLgorICAgICAqIEdlbmVyYXRlcyB0aGUgaGFzaCBjb2RlIGZvciB0aGUgU2ltcGxlRGF0ZUZvcm1hdCBvYmplY3QKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBwYXR0ZXJuLmhhc2hDb2RlKCk7CisgICAgICAgIC8vIGp1c3QgZW5vdWdoIGZpZWxkcyBmb3IgYSByZWFzb25hYmxlIGRpc3RyaWJ1dGlvbgorICAgIH0KKworICAgIC8qKgorICAgICAqIE92ZXJyaWRlIGVxdWFscy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG9iaikKKyAgICB7CisgICAgICAgIGlmICghc3VwZXIuZXF1YWxzKG9iaikpIHJldHVybiBmYWxzZTsgLy8gc3VwZXIgZG9lcyBjbGFzcyBjaGVjaworICAgICAgICBTaW1wbGVEYXRlRm9ybWF0IHRoYXQgPSAoU2ltcGxlRGF0ZUZvcm1hdCkgb2JqOworICAgICAgICByZXR1cm4gKHBhdHRlcm4uZXF1YWxzKHRoYXQucGF0dGVybikKKyAgICAgICAgICAgICAgICAmJiBmb3JtYXREYXRhLmVxdWFscyh0aGF0LmZvcm1hdERhdGEpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZSByZWFkT2JqZWN0LgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCByZWFkT2JqZWN0KE9iamVjdElucHV0U3RyZWFtIHN0cmVhbSkKKyAgICAgICAgIHRocm93cyBJT0V4Y2VwdGlvbiwgQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiB7CisgICAgICAgICAgICAgc3RyZWFtLmRlZmF1bHRSZWFkT2JqZWN0KCk7CisgICAgICAgICAgICAgaWYgKHNlcmlhbFZlcnNpb25PblN0cmVhbSA8IDEpIHsKKyAgICAgICAgICAgICAgICAgLy8gZGlkbid0IGhhdmUgZGVmYXVsdENlbnR1cnlTdGFydCBmaWVsZAorICAgICAgICAgICAgICAgICBpbml0aWFsaXplRGVmYXVsdENlbnR1cnkoKTsKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgIC8vIGZpbGwgaW4gZGVwZW5kZW50IHRyYW5zaWVudCBmaWVsZAorICAgICAgICAgICAgICAgICBwYXJzZUFtYmlndW91c0RhdGVzQXNBZnRlcihkZWZhdWx0Q2VudHVyeVN0YXJ0KTsKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgc2VyaWFsVmVyc2lvbk9uU3RyZWFtID0gY3VycmVudFNlcmlhbFZlcnNpb247CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3RleHQvU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IuamF2YSBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L1N0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYjMzMjRjMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L1N0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yLmphdmEKQEAgLTAsMCArMSwyODcgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS90ZXh0L1N0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMTIvMTEgMjM6MzY6NTcgJCAKKyAqICRSZXZpc2lvbjogMS42ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCisKKy8vIE5PVEU6ICBUaGlzIGNsYXNzIGlzIGlkZW50aWNhbCB0byBqYXZhLnRleHQuU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IKKy8vIGluIEpESyAxLjIuICBJdCdzIGNvcGllZCBoZXJlIGJlY2F1c2UgdGhlIEpESyAxLjEgdmVyc2lvbiBvZgorLy8gU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IgaGFzIGEgYnVnIHRoYXQgcHJldmVudHMgaXQgZnJvbSB3b3JraW5nCisvLyByaWdodCB3aXRoIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IuICBUaGlzIGNsYXNzIGlzIHVubmVjZXNzYXJ5CisvLyB3aGVuIHVzaW5nIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3Igd2l0aCBKREsgMS4yLgorCitwYWNrYWdlIGNvbS5pYm0uaWN1LnRleHQ7CitpbXBvcnQgamF2YS50ZXh0LkNoYXJhY3Rlckl0ZXJhdG9yOworCisvKioKKyAqIDxjb2RlPlN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yPC9jb2RlPiBpbXBsZW1lbnRzIHRoZQorICogPGNvZGU+Q2hhcmFjdGVySXRlcmF0ZXI8L2NvZGU+IHByb3RvY29sIGZvciBhIDxjb2RlPlN0cmluZzwvY29kZT4uCisgKiBUaGUgPGNvZGU+U3RyaW5nQ2hhcmFjdGVySXRlcmF0b3I8L2NvZGU+IGNsYXNzIGl0ZXJhdGVzIG92ZXIgdGhlCisgKiBlbnRpcmUgPGNvZGU+U3RyaW5nPC9jb2RlPi4KKyAqCisgKiBAc2VlIENoYXJhY3Rlckl0ZXJhdG9yCisgKiBAZGVwcmVjYXRlZCBJQ1UgMi40LiBVc2UgamF2YS50ZXh0LlN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yIGluc3RlYWQuCisgKi8KKy8vL0NMT1ZFUjpPRkYKK3B1YmxpYyBmaW5hbCBjbGFzcyBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvciBpbXBsZW1lbnRzIENoYXJhY3Rlckl0ZXJhdG9yCit7CisgICAgcHJpdmF0ZSBTdHJpbmcgdGV4dDsKKyAgICBwcml2YXRlIGludCBiZWdpbjsKKyAgICBwcml2YXRlIGludCBlbmQ7CisgICAgLy8gaW52YXJpYW50OiBiZWdpbiA8PSBwb3MgPD0gZW5kCisgICAgcHJpdmF0ZSBpbnQgcG9zOworCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhbiBpdGVyYXRvciB3aXRoIGFuIGluaXRpYWwgaW5kZXggb2YgMC4KKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40LiBVc2UgamF2YS50ZXh0LlN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yIGluc3RlYWQuCisgICAgICovCisgICAgcHVibGljIFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yKFN0cmluZyB0ZXh0KQorICAgIHsKKyAgICAgICAgdGhpcyh0ZXh0LCAwKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGFuIGl0ZXJhdG9yIHdpdGggdGhlIHNwZWNpZmllZCBpbml0aWFsIGluZGV4LgorICAgICAqCisgICAgICogQHBhcmFtICB0ZXh0ICAgVGhlIFN0cmluZyB0byBiZSBpdGVyYXRlZCBvdmVyCisgICAgICogQHBhcmFtICBwb3MgICAgSW5pdGlhbCBpdGVyYXRvciBwb3NpdGlvbiAgICAgCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNC4gVXNlIGphdmEudGV4dC5TdHJpbmdDaGFyYWN0ZXJJdGVyYXRvciBpbnN0ZWFkLgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvcihTdHJpbmcgdGV4dCwgaW50IHBvcykKKyAgICB7CisgICAgdGhpcyh0ZXh0LCAwLCB0ZXh0Lmxlbmd0aCgpLCBwb3MpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYW4gaXRlcmF0b3Igb3ZlciB0aGUgZ2l2ZW4gcmFuZ2Ugb2YgdGhlIGdpdmVuIHN0cmluZywgd2l0aCB0aGUKKyAgICAgKiBpbmRleCBzZXQgYXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbi4KKyAgICAgKgorICAgICAqIEBwYXJhbSAgdGV4dCAgIFRoZSBTdHJpbmcgdG8gYmUgaXRlcmF0ZWQgb3ZlcgorICAgICAqIEBwYXJhbSAgYmVnaW4gIEluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIKKyAgICAgKiBAcGFyYW0gIGVuZCAgICBJbmRleCBvZiB0aGUgY2hhcmFjdGVyIGZvbGxvd2luZyB0aGUgbGFzdCBjaGFyYWN0ZXIKKyAgICAgKiBAcGFyYW0gIHBvcyAgICBJbml0aWFsIGl0ZXJhdG9yIHBvc2l0aW9uIAorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjQuIFVzZSBqYXZhLnRleHQuU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IgaW5zdGVhZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IoU3RyaW5nIHRleHQsIGludCBiZWdpbiwgaW50IGVuZCwgaW50IHBvcykgeworICAgICAgICBpZiAodGV4dCA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oKTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLnRleHQgPSB0ZXh0OworCisgICAgICAgIGlmIChiZWdpbiA8IDAgfHwgYmVnaW4gPiBlbmQgfHwgZW5kID4gdGV4dC5sZW5ndGgoKSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBzdWJzdHJpbmcgcmFuZ2UiKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChwb3MgPCBiZWdpbiB8fCBwb3MgPiBlbmQpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgcG9zaXRpb24iKTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuYmVnaW4gPSBiZWdpbjsKKyAgICAgICAgdGhpcy5lbmQgPSBlbmQ7CisgICAgICAgIHRoaXMucG9zID0gcG9zOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlc2V0IHRoaXMgaXRlcmF0b3IgdG8gcG9pbnQgdG8gYSBuZXcgc3RyaW5nLiAgVGhpcyBwYWNrYWdlLXZpc2libGUKKyAgICAgKiBtZXRob2QgaXMgdXNlZCBieSBvdGhlciBqYXZhLnRleHQgY2xhc3NlcyB0aGF0IHdhbnQgdG8gYXZvaWQgYWxsb2NhdGluZworICAgICAqIG5ldyBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvciBvYmplY3RzIGV2ZXJ5IHRpbWUgdGhlaXIgc2V0VGV4dCBtZXRob2QKKyAgICAgKiBpcyBjYWxsZWQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gIHRleHQgICBUaGUgU3RyaW5nIHRvIGJlIGl0ZXJhdGVkIG92ZXIgCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNC4gVXNlIGphdmEudGV4dC5TdHJpbmdDaGFyYWN0ZXJJdGVyYXRvciBpbnN0ZWFkLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFRleHQoU3RyaW5nIHRleHQpIHsKKyAgICAgICAgaWYgKHRleHQgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCk7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy50ZXh0ID0gdGV4dDsKKyAgICAgICAgdGhpcy5iZWdpbiA9IDA7CisgICAgICAgIHRoaXMuZW5kID0gdGV4dC5sZW5ndGgoKTsKKyAgICAgICAgdGhpcy5wb3MgPSAwOworICAgIH0KKworICAgIC8qKgorICAgICAqIEltcGxlbWVudHMgQ2hhcmFjdGVySXRlcmF0b3IuZmlyc3QoKSBmb3IgU3RyaW5nLgorICAgICAqIEBzZWUgQ2hhcmFjdGVySXRlcmF0b3IjZmlyc3QgCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNC4gVXNlIGphdmEudGV4dC5TdHJpbmdDaGFyYWN0ZXJJdGVyYXRvciBpbnN0ZWFkLgorICAgICAqLworICAgIHB1YmxpYyBjaGFyIGZpcnN0KCkKKyAgICB7CisgICAgICAgIHBvcyA9IGJlZ2luOworICAgICAgICByZXR1cm4gY3VycmVudCgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEltcGxlbWVudHMgQ2hhcmFjdGVySXRlcmF0b3IubGFzdCgpIGZvciBTdHJpbmcuCisgICAgICogQHNlZSBDaGFyYWN0ZXJJdGVyYXRvciNsYXN0IAorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjQuIFVzZSBqYXZhLnRleHQuU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IgaW5zdGVhZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgY2hhciBsYXN0KCkKKyAgICB7CisgICAgICAgIGlmIChlbmQgIT0gYmVnaW4pIHsKKyAgICAgICAgICAgIHBvcyA9IGVuZCAtIDE7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwb3MgPSBlbmQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGN1cnJlbnQoKTsKKyAgICAgfQorCisgICAgLyoqCisgICAgICogSW1wbGVtZW50cyBDaGFyYWN0ZXJJdGVyYXRvci5zZXRJbmRleCgpIGZvciBTdHJpbmcuCisgICAgICogQHNlZSBDaGFyYWN0ZXJJdGVyYXRvciNzZXRJbmRleCAKKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40LiBVc2UgamF2YS50ZXh0LlN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yIGluc3RlYWQuCisgICAgICovCisgICAgcHVibGljIGNoYXIgc2V0SW5kZXgoaW50IHApCisgICAgeworICAgIGlmIChwIDwgYmVnaW4gfHwgcCA+IGVuZCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBpbmRleCIpOworICAgIH0KKyAgICAgICAgcG9zID0gcDsKKyAgICAgICAgcmV0dXJuIGN1cnJlbnQoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbXBsZW1lbnRzIENoYXJhY3Rlckl0ZXJhdG9yLmN1cnJlbnQoKSBmb3IgU3RyaW5nLgorICAgICAqIEBzZWUgQ2hhcmFjdGVySXRlcmF0b3IjY3VycmVudCAKKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40LiBVc2UgamF2YS50ZXh0LlN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yIGluc3RlYWQuCisgICAgICovCisgICAgcHVibGljIGNoYXIgY3VycmVudCgpCisgICAgeworICAgICAgICBpZiAocG9zID49IGJlZ2luICYmIHBvcyA8IGVuZCkgeworICAgICAgICAgICAgcmV0dXJuIHRleHQuY2hhckF0KHBvcyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gRE9ORTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEltcGxlbWVudHMgQ2hhcmFjdGVySXRlcmF0b3IubmV4dCgpIGZvciBTdHJpbmcuCisgICAgICogQHNlZSBDaGFyYWN0ZXJJdGVyYXRvciNuZXh0IAorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjQuIFVzZSBqYXZhLnRleHQuU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IgaW5zdGVhZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgY2hhciBuZXh0KCkKKyAgICB7CisgICAgICAgIGlmIChwb3MgPCBlbmQgLSAxKSB7CisgICAgICAgICAgICBwb3MrKzsKKyAgICAgICAgICAgIHJldHVybiB0ZXh0LmNoYXJBdChwb3MpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcG9zID0gZW5kOworICAgICAgICAgICAgcmV0dXJuIERPTkU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbXBsZW1lbnRzIENoYXJhY3Rlckl0ZXJhdG9yLnByZXZpb3VzKCkgZm9yIFN0cmluZy4KKyAgICAgKiBAc2VlIENoYXJhY3Rlckl0ZXJhdG9yI3ByZXZpb3VzIAorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjQuIFVzZSBqYXZhLnRleHQuU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IgaW5zdGVhZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgY2hhciBwcmV2aW91cygpCisgICAgeworICAgICAgICBpZiAocG9zID4gYmVnaW4pIHsKKyAgICAgICAgICAgIHBvcy0tOworICAgICAgICAgICAgcmV0dXJuIHRleHQuY2hhckF0KHBvcyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gRE9ORTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEltcGxlbWVudHMgQ2hhcmFjdGVySXRlcmF0b3IuZ2V0QmVnaW5JbmRleCgpIGZvciBTdHJpbmcuCisgICAgICogQHNlZSBDaGFyYWN0ZXJJdGVyYXRvciNnZXRCZWdpbkluZGV4IAorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjQuIFVzZSBqYXZhLnRleHQuU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IgaW5zdGVhZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldEJlZ2luSW5kZXgoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJlZ2luOworICAgIH0KKworICAgIC8qKgorICAgICAqIEltcGxlbWVudHMgQ2hhcmFjdGVySXRlcmF0b3IuZ2V0RW5kSW5kZXgoKSBmb3IgU3RyaW5nLgorICAgICAqIEBzZWUgQ2hhcmFjdGVySXRlcmF0b3IjZ2V0RW5kSW5kZXggCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNC4gVXNlIGphdmEudGV4dC5TdHJpbmdDaGFyYWN0ZXJJdGVyYXRvciBpbnN0ZWFkLgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0RW5kSW5kZXgoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVuZDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbXBsZW1lbnRzIENoYXJhY3Rlckl0ZXJhdG9yLmdldEluZGV4KCkgZm9yIFN0cmluZy4KKyAgICAgKiBAc2VlIENoYXJhY3Rlckl0ZXJhdG9yI2dldEluZGV4IAorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjQuIFVzZSBqYXZhLnRleHQuU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IgaW5zdGVhZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldEluZGV4KCkKKyAgICB7CisgICAgICAgIHJldHVybiBwb3M7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29tcGFyZXMgdGhlIGVxdWFsaXR5IG9mIHR3byBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvciBvYmplY3RzLgorICAgICAqIEBwYXJhbSBvYmogdGhlIFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yIG9iamVjdCB0byBiZSBjb21wYXJlZCB3aXRoLgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgZ2l2ZW4gb2JqIGlzIHRoZSBzYW1lIGFzIHRoaXMKKyAgICAgKiBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvciBvYmplY3Q7IGZhbHNlIG90aGVyd2lzZS4gCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNC4gVXNlIGphdmEudGV4dC5TdHJpbmdDaGFyYWN0ZXJJdGVyYXRvciBpbnN0ZWFkLgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb2JqKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMgPT0gb2JqKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIShvYmogaW5zdGFuY2VvZiBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvcikpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yIHRoYXQgPSAoU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IpIG9iajsKKworICAgICAgICBpZiAoaGFzaENvZGUoKSAhPSB0aGF0Lmhhc2hDb2RlKCkpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIXRleHQuZXF1YWxzKHRoYXQudGV4dCkpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBpZiAocG9zICE9IHRoYXQucG9zIHx8IGJlZ2luICE9IHRoYXQuYmVnaW4gfHwgZW5kICE9IHRoYXQuZW5kKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29tcHV0ZXMgYSBoYXNoY29kZSBmb3IgdGhpcyBpdGVyYXRvci4KKyAgICAgKiBAcmV0dXJuIEEgaGFzaCBjb2RlIAorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjQuIFVzZSBqYXZhLnRleHQuU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IgaW5zdGVhZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0ZXh0Lmhhc2hDb2RlKCkgXiBwb3MgXiBiZWdpbiBeIGVuZDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgY29weSBvZiB0aGlzIGl0ZXJhdG9yLgorICAgICAqIEByZXR1cm4gQSBjb3B5IG9mIHRoaXMgCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNC4gVXNlIGphdmEudGV4dC5TdHJpbmdDaGFyYWN0ZXJJdGVyYXRvciBpbnN0ZWFkLgorICAgICAqLworICAgIHB1YmxpYyBPYmplY3QgY2xvbmUoKQorICAgIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yIG90aGVyCisgICAgICAgICAgICA9IChTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvcikgc3VwZXIuY2xvbmUoKTsKKyAgICAgICAgICAgIHJldHVybiBvdGhlcjsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoKTsKKyAgICAgICAgfQorICAgIH0KKworfQorLy8vQ0xPVkVSOk9OCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvdGV4dC9TdHJpbmdNYXRjaGVyLmphdmEgYi9zcmMvY29tL2libS9pY3UvdGV4dC9TdHJpbmdNYXRjaGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYWRkYzk1OAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L1N0cmluZ01hdGNoZXIuamF2YQpAQCAtMCwwICsxLDI5NSBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS90ZXh0L1N0cmluZ01hdGNoZXIuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wNi8yOCAxOToxODowNSAkIAorICogJFJldmlzaW9uOiAxLjEyICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS50ZXh0OworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuVXRpbGl0eTsKKworLyoqCisgKiBBbiBvYmplY3QgdGhhdCBtYXRjaGVzIGEgZml4ZWQgaW5wdXQgc3RyaW5nLCBpbXBsZW1lbnRpbmcgdGhlCisgKiBVbmljb2RlTWF0Y2hlciBBUEkuICBUaGlzIG9iamVjdCBhbHNvIGltcGxlbWVudHMgdGhlCisgKiBVbmljb2RlUmVwbGFjZXIgQVBJLCBhbGxvd2luZyBpdCB0byBlbWl0IHRoZSBtYXRjaGVkIHRleHQgYXMKKyAqIG91dHB1dC4gIFNpbmNlIHRoZSBtYXRjaCB0ZXh0IG1heSBjb250YWluIGZsZXhpYmxlIG1hdGNoIGVsZW1lbnRzLAorICogc3VjaCBhcyBVbmljb2RlU2V0cywgdGhlIGVtaXR0ZWQgdGV4dCBpcyBub3QgdGhlIG1hdGNoIHBhdHRlcm4sIGJ1dAorICogaW5zdGVhZCBhIHN1YnN0cmluZyBvZiB0aGUgYWN0dWFsIG1hdGNoZWQgdGV4dC4gIEZvbGxvd2luZworICogY29udmVudGlvbiwgdGhlIG91dHB1dCB0ZXh0IGlzIHRoZSBsZWZ0bW9zdCBtYXRjaCBzZWVuIHVwIHRvIHRoaXMKKyAqIHBvaW50LgorICoKKyAqIEEgU3RyaW5nTWF0Y2hlciBtYXkgcmVwcmVzZW50IGEgc2VnbWVudCwgaW4gd2hpY2ggY2FzZSBpdCBoYXMgYQorICogcG9zaXRpdmUgc2VnbWVudCBudW1iZXIuICBUaGlzIGFmZmVjdHMgaG93IHRoZSBtYXRjaGVyIGNvbnZlcnRzCisgKiBpdHNlbGYgdG8gYSBwYXR0ZXJuIGJ1dCBkb2VzIG5vdCBvdGhlcndpc2UgYWZmZWN0IGl0cyBmdW5jdGlvbi4KKyAqCisgKiBBIFN0cmluZ01hdGNoZXIgdGhhdCBpcyBub3QgYSBzZWdtZW50IHNob3VsZCBub3QgYmUgdXNlZCBhcyBhCisgKiBVbmljb2RlUmVwbGFjZXIuCisgKi8KK2NsYXNzIFN0cmluZ01hdGNoZXIgaW1wbGVtZW50cyBVbmljb2RlTWF0Y2hlciwgVW5pY29kZVJlcGxhY2VyIHsKKworICAgIC8qKgorICAgICAqIFRoZSB0ZXh0IHRvIGJlIG1hdGNoZWQuCisgICAgICovCisgICAgcHJpdmF0ZSBTdHJpbmcgcGF0dGVybjsKKworICAgIC8qKgorICAgICAqIFN0YXJ0IG9mZnNldCwgaW4gdGhlIG1hdGNoIHRleHQsIG9mIHRoZSA8ZW0+cmlnaHRtb3N0PC9lbT4KKyAgICAgKiBtYXRjaC4KKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBtYXRjaFN0YXJ0OworICAgIAorICAgIC8qKgorICAgICAqIExpbWl0IG9mZnNldCwgaW4gdGhlIG1hdGNoIHRleHQsIG9mIHRoZSA8ZW0+cmlnaHRtb3N0PC9lbT4KKyAgICAgKiBtYXRjaC4KKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBtYXRjaExpbWl0OworCisgICAgLyoqCisgICAgICogVGhlIHNlZ21lbnQgbnVtYmVyLCAxLWJhc2VkLCBvciAwIGlmIG5vdCBhIHNlZ21lbnQuCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgc2VnbWVudE51bWJlcjsKKworICAgIC8qKgorICAgICAqIENvbnRleHQgb2JqZWN0IHRoYXQgbWFwcyBzdGFuZC1pbnMgdG8gbWF0Y2hlciBhbmQgcmVwbGFjZXIKKyAgICAgKiBvYmplY3RzLgorICAgICAqLworICAgIHByaXZhdGUgZmluYWwgUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3IuRGF0YSBkYXRhOworCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGEgbWF0Y2hlciB0aGF0IG1hdGNoZXMgdGhlIGdpdmVuIHBhdHRlcm4gc3RyaW5nLgorICAgICAqIEBwYXJhbSB0aGVTdHJpbmcgdGhlIHBhdHRlcm4gdG8gYmUgbWF0Y2hlZCwgcG9zc2libHkgY29udGFpbmluZworICAgICAqIHN0YW5kLWlucyB0aGF0IHJlcHJlc2VudCBuZXN0ZWQgVW5pY29kZU1hdGNoZXIgb2JqZWN0cy4KKyAgICAgKiBAcGFyYW0gc2VnbWVudE51bSB0aGUgc2VnbWVudCBudW1iZXIgZnJvbSAxLi5uLCBvciAwIGlmIHRoaXMgaXMKKyAgICAgKiBub3QgYSBzZWdtZW50LgorICAgICAqIEBwYXJhbSB0aGVEYXRhIGNvbnRleHQgb2JqZWN0IG1hcHBpbmcgc3RhbmQtaW5zIHRvCisgICAgICogVW5pY29kZU1hdGNoZXIgb2JqZWN0cy4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nTWF0Y2hlcihTdHJpbmcgdGhlU3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZWdtZW50TnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yLkRhdGEgdGhlRGF0YSkgeworICAgICAgICBkYXRhID0gdGhlRGF0YTsKKyAgICAgICAgcGF0dGVybiA9IHRoZVN0cmluZzsKKyAgICAgICAgbWF0Y2hTdGFydCA9IG1hdGNoTGltaXQgPSAtMTsKKyAgICAgICAgc2VnbWVudE51bWJlciA9IHNlZ21lbnROdW07CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGEgbWF0Y2hlciB0aGF0IG1hdGNoZXMgYSBzdWJzdHJpbmcgb2YgdGhlIGdpdmVuCisgICAgICogcGF0dGVybiBzdHJpbmcuCisgICAgICogQHBhcmFtIHRoZVN0cmluZyB0aGUgcGF0dGVybiB0byBiZSBtYXRjaGVkLCBwb3NzaWJseSBjb250YWluaW5nCisgICAgICogc3RhbmQtaW5zIHRoYXQgcmVwcmVzZW50IG5lc3RlZCBVbmljb2RlTWF0Y2hlciBvYmplY3RzLgorICAgICAqIEBwYXJhbSBzdGFydCBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlU3RyaW5nIHRvIGJlIG1hdGNoZWQKKyAgICAgKiBAcGFyYW0gbGltaXQgaW5kZXggYWZ0ZXIgdGhlIGxhc3QgY2hhcmFjdGVyIG9mIHRoZVN0cmluZyB0byBiZQorICAgICAqIG1hdGNoZWQuCisgICAgICogQHBhcmFtIHNlZ21lbnROdW0gdGhlIHNlZ21lbnQgbnVtYmVyIGZyb20gMS4ubiwgb3IgMCBpZiB0aGlzIGlzCisgICAgICogbm90IGEgc2VnbWVudC4KKyAgICAgKiBAcGFyYW0gdGhlRGF0YSBjb250ZXh0IG9iamVjdCBtYXBwaW5nIHN0YW5kLWlucyB0bworICAgICAqIFVuaWNvZGVNYXRjaGVyIG9iamVjdHMuCisgICAgICovCisgICAgcHVibGljIFN0cmluZ01hdGNoZXIoU3RyaW5nIHRoZVN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZWdtZW50TnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yLkRhdGEgdGhlRGF0YSkgeworICAgICAgICB0aGlzKHRoZVN0cmluZy5zdWJzdHJpbmcoc3RhcnQsIGxpbWl0KSwgc2VnbWVudE51bSwgdGhlRGF0YSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogSW1wbGVtZW50IFVuaWNvZGVNYXRjaGVyCisgICAgICovCisgICAgcHVibGljIGludCBtYXRjaGVzKFJlcGxhY2VhYmxlIHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgIGludFtdIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGluY3JlbWVudGFsKSB7CisgICAgICAgIC8vIE5vdGUgKDEpOiBXZSBwcm9jZXNzIHRleHQgaW4gMTYtYml0IGNvZGUgdW5pdHMsIHJhdGhlciB0aGFuCisgICAgICAgIC8vIDMyLWJpdCBjb2RlIHBvaW50cy4gIFRoaXMgd29ya3MgYmVjYXVzZSBzdGFuZC1pbnMgYXJlCisgICAgICAgIC8vIGFsd2F5cyBpbiB0aGUgQk1QIGFuZCBiZWNhdXNlIHdlIGFyZSBkb2luZyBhIGxpdGVyYWwgbWF0Y2gKKyAgICAgICAgLy8gb3BlcmF0aW9uLCB3aGljaCBjYW4gYmUgZG9uZSAxNi1iaXRzIGF0IGEgdGltZS4KKyAgICAgICAgaW50IGk7CisgICAgICAgIGludFtdIGN1cnNvciA9IG5ldyBpbnRbXSB7IG9mZnNldFswXSB9OworICAgICAgICBpZiAobGltaXQgPCBjdXJzb3JbMF0pIHsKKyAgICAgICAgICAgIC8vIE1hdGNoIGluIHRoZSByZXZlcnNlIGRpcmVjdGlvbgorICAgICAgICAgICAgZm9yIChpPXBhdHRlcm4ubGVuZ3RoKCktMTsgaT49MDsgLS1pKSB7CisgICAgICAgICAgICAgICAgY2hhciBrZXlDaGFyID0gcGF0dGVybi5jaGFyQXQoaSk7IC8vIE9LOyBzZWUgbm90ZSAoMSkgYWJvdmUKKyAgICAgICAgICAgICAgICBVbmljb2RlTWF0Y2hlciBzdWJtID0gZGF0YS5sb29rdXBNYXRjaGVyKGtleUNoYXIpOworICAgICAgICAgICAgICAgIGlmIChzdWJtID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnNvclswXSA+IGxpbWl0ICYmCisgICAgICAgICAgICAgICAgICAgICAgICBrZXlDaGFyID09IHRleHQuY2hhckF0KGN1cnNvclswXSkpIHsgLy8gT0s7IHNlZSBub3RlICgxKSBhYm92ZQorICAgICAgICAgICAgICAgICAgICAgICAgLS1jdXJzb3JbMF07CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVV9NSVNNQVRDSDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGludCBtID0KKyAgICAgICAgICAgICAgICAgICAgICAgIHN1Ym0ubWF0Y2hlcyh0ZXh0LCBjdXJzb3IsIGxpbWl0LCBpbmNyZW1lbnRhbCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChtICE9IFVfTUFUQ0gpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gUmVjb3JkIHRoZSBtYXRjaCBwb3NpdGlvbiwgYnV0IGFkanVzdCBmb3IgYSBub3JtYWwKKyAgICAgICAgICAgIC8vIGZvcndhcmQgc3RhcnQsIGxpbWl0LCBhbmQgb25seSBpZiBhIHByaW9yIG1hdGNoIGRvZXMgbm90CisgICAgICAgICAgICAvLyBleGlzdCAtLSB3ZSB3YW50IHRoZSByaWdodG1vc3QgbWF0Y2guCisgICAgICAgICAgICBpZiAobWF0Y2hTdGFydCA8IDApIHsKKyAgICAgICAgICAgICAgICBtYXRjaFN0YXJ0ID0gY3Vyc29yWzBdKzE7CisgICAgICAgICAgICAgICAgbWF0Y2hMaW1pdCA9IG9mZnNldFswXSsxOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZm9yIChpPTA7IGk8cGF0dGVybi5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKGluY3JlbWVudGFsICYmIGN1cnNvclswXSA9PSBsaW1pdCkgeworICAgICAgICAgICAgICAgICAgICAvLyBXZSd2ZSByZWFjaGVkIHRoZSBjb250ZXh0IGxpbWl0IHdpdGhvdXQgYSBtaXNtYXRjaCBhbmQKKyAgICAgICAgICAgICAgICAgICAgLy8gd2l0aG91dCBjb21wbGV0aW5nIG91ciBtYXRjaC4KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFVfUEFSVElBTF9NQVRDSDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2hhciBrZXlDaGFyID0gcGF0dGVybi5jaGFyQXQoaSk7IC8vIE9LOyBzZWUgbm90ZSAoMSkgYWJvdmUKKyAgICAgICAgICAgICAgICBVbmljb2RlTWF0Y2hlciBzdWJtID0gZGF0YS5sb29rdXBNYXRjaGVyKGtleUNoYXIpOworICAgICAgICAgICAgICAgIGlmIChzdWJtID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgbmVlZCB0aGUgY3Vyc29yIDwgbGltaXQgY2hlY2sgaWYKKyAgICAgICAgICAgICAgICAgICAgLy8gaW5jcmVtZW50YWwgaXMgdHJ1ZSAoYmVjYXVzZSBpdCdzIGRvbmUgYWJvdmUpOyBkbyBuZWVkCisgICAgICAgICAgICAgICAgICAgIC8vIGl0IG90aGVyd2lzZS4KKyAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnNvclswXSA8IGxpbWl0ICYmCisgICAgICAgICAgICAgICAgICAgICAgICBrZXlDaGFyID09IHRleHQuY2hhckF0KGN1cnNvclswXSkpIHsgLy8gT0s7IHNlZSBub3RlICgxKSBhYm92ZQorICAgICAgICAgICAgICAgICAgICAgICAgKytjdXJzb3JbMF07CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVV9NSVNNQVRDSDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGludCBtID0KKyAgICAgICAgICAgICAgICAgICAgICAgIHN1Ym0ubWF0Y2hlcyh0ZXh0LCBjdXJzb3IsIGxpbWl0LCBpbmNyZW1lbnRhbCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChtICE9IFVfTUFUQ0gpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gUmVjb3JkIHRoZSBtYXRjaCBwb3NpdGlvbgorICAgICAgICAgICAgbWF0Y2hTdGFydCA9IG9mZnNldFswXTsKKyAgICAgICAgICAgIG1hdGNoTGltaXQgPSBjdXJzb3JbMF07CisgICAgICAgIH0KKworICAgICAgICBvZmZzZXRbMF0gPSBjdXJzb3JbMF07CisgICAgICAgIHJldHVybiBVX01BVENIOworICAgIH0KKworICAgIC8qKgorICAgICAqIEltcGxlbWVudCBVbmljb2RlTWF0Y2hlcgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgdG9QYXR0ZXJuKGJvb2xlYW4gZXNjYXBlVW5wcmludGFibGUpIHsKKyAgICAgICAgU3RyaW5nQnVmZmVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgU3RyaW5nQnVmZmVyIHF1b3RlQnVmID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBpZiAoc2VnbWVudE51bWJlciA+IDApIHsgLy8gaS5lLiwgaWYgdGhpcyBpcyBhIHNlZ21lbnQKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJygnKTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGludCBpPTA7IGk8cGF0dGVybi5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBjaGFyIGtleUNoYXIgPSBwYXR0ZXJuLmNoYXJBdChpKTsgLy8gT0s7IHNlZSBub3RlICgxKSBhYm92ZQorICAgICAgICAgICAgVW5pY29kZU1hdGNoZXIgbSA9IGRhdGEubG9va3VwTWF0Y2hlcihrZXlDaGFyKTsKKyAgICAgICAgICAgIGlmIChtID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBVdGlsaXR5LmFwcGVuZFRvUnVsZShyZXN1bHQsIGtleUNoYXIsIGZhbHNlLCBlc2NhcGVVbnByaW50YWJsZSwgcXVvdGVCdWYpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBVdGlsaXR5LmFwcGVuZFRvUnVsZShyZXN1bHQsIG0udG9QYXR0ZXJuKGVzY2FwZVVucHJpbnRhYmxlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlLCBlc2NhcGVVbnByaW50YWJsZSwgcXVvdGVCdWYpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChzZWdtZW50TnVtYmVyID4gMCkgeyAvLyBpLmUuLCBpZiB0aGlzIGlzIGEgc2VnbWVudAorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKScpOworICAgICAgICB9CisgICAgICAgIC8vIEZsdXNoIHF1b3RlQnVmIG91dCB0byByZXN1bHQKKyAgICAgICAgVXRpbGl0eS5hcHBlbmRUb1J1bGUocmVzdWx0LCAtMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSwgZXNjYXBlVW5wcmludGFibGUsIHF1b3RlQnVmKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEltcGxlbWVudCBVbmljb2RlTWF0Y2hlcgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIG1hdGNoZXNJbmRleFZhbHVlKGludCB2KSB7CisgICAgICAgIGlmIChwYXR0ZXJuLmxlbmd0aCgpID09IDApIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGludCBjID0gVVRGMTYuY2hhckF0KHBhdHRlcm4sIDApOworICAgICAgICBVbmljb2RlTWF0Y2hlciBtID0gZGF0YS5sb29rdXBNYXRjaGVyKGMpOworICAgICAgICByZXR1cm4gKG0gPT0gbnVsbCkgPyAoKGMgJiAweEZGKSA9PSB2KSA6IG0ubWF0Y2hlc0luZGV4VmFsdWUodik7CisgICAgfQorCisgICAgLyoqCisgICAgICogSW1wbGVtZW50YXRpb24gb2YgVW5pY29kZU1hdGNoZXIgQVBJLiAgVW5pb24gdGhlIHNldCBvZiBhbGwKKyAgICAgKiBjaGFyYWN0ZXJzIHRoYXQgbWF5IGJlIG1hdGNoZWQgYnkgdGhpcyBvYmplY3QgaW50byB0aGUgZ2l2ZW4KKyAgICAgKiBzZXQuCisgICAgICogQHBhcmFtIHRvVW5pb25UbyB0aGUgc2V0IGludG8gd2hpY2ggdG8gdW5pb24gdGhlIHNvdXJjZSBjaGFyYWN0ZXJzCisgICAgICovCisgICAgcHVibGljIHZvaWQgYWRkTWF0Y2hTZXRUbyhVbmljb2RlU2V0IHRvVW5pb25UbykgeworICAgICAgICBpbnQgY2g7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxwYXR0ZXJuLmxlbmd0aCgpOyBpKz1VVEYxNi5nZXRDaGFyQ291bnQoY2gpKSB7CisgICAgICAgICAgICBjaCA9IFVURjE2LmNoYXJBdChwYXR0ZXJuLCBpKTsKKyAgICAgICAgICAgIFVuaWNvZGVNYXRjaGVyIG1hdGNoZXIgPSBkYXRhLmxvb2t1cE1hdGNoZXIoY2gpOworICAgICAgICAgICAgaWYgKG1hdGNoZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHRvVW5pb25Uby5hZGQoY2gpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtYXRjaGVyLmFkZE1hdGNoU2V0VG8odG9VbmlvblRvKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFVuaWNvZGVSZXBsYWNlciBBUEkKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IHJlcGxhY2UoUmVwbGFjZWFibGUgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgIGludFtdIGN1cnNvcikgeworCisgICAgICAgIGludCBvdXRMZW4gPSAwOworCisgICAgICAgIC8vIENvcHkgc2VnbWVudCB3aXRoIG91dC1vZi1iYW5kIGRhdGEKKyAgICAgICAgaW50IGRlc3QgPSBsaW1pdDsKKyAgICAgICAgLy8gSWYgdGhlcmUgd2FzIG5vIG1hdGNoLCB0aGF0IG1lYW5zIHRoYXQgYSBxdWFudGlmaWVyCisgICAgICAgIC8vIG1hdGNoZWQgemVyby1sZW5ndGguICBFLmcuLCB4IChhKSogeSBtYXRjaGVkICJ4eSIuCisgICAgICAgIGlmIChtYXRjaFN0YXJ0ID49IDApIHsKKyAgICAgICAgICAgIGlmIChtYXRjaFN0YXJ0ICE9IG1hdGNoTGltaXQpIHsKKyAgICAgICAgICAgICAgICB0ZXh0LmNvcHkobWF0Y2hTdGFydCwgbWF0Y2hMaW1pdCwgZGVzdCk7CisgICAgICAgICAgICAgICAgb3V0TGVuID0gbWF0Y2hMaW1pdCAtIG1hdGNoU3RhcnQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB0ZXh0LnJlcGxhY2Uoc3RhcnQsIGxpbWl0LCAiIik7IC8vIGRlbGV0ZSBvcmlnaW5hbCB0ZXh0CisKKyAgICAgICAgcmV0dXJuIG91dExlbjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBVbmljb2RlUmVwbGFjZXIgQVBJCisgICAgICovCisgICAgcHVibGljIFN0cmluZyB0b1JlcGxhY2VyUGF0dGVybihib29sZWFuIGVzY2FwZVVucHJpbnRhYmxlKSB7CisgICAgICAgIC8vIGFzc2VydChzZWdtZW50TnVtYmVyID4gMCk7CisgICAgICAgIFN0cmluZ0J1ZmZlciBydWxlID0gbmV3IFN0cmluZ0J1ZmZlcigiJCIpOworICAgICAgICBVdGlsaXR5LmFwcGVuZE51bWJlcihydWxlLCBzZWdtZW50TnVtYmVyLCAxMCwgMSk7CisgICAgICAgIHJldHVybiBydWxlLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVtb3ZlIGFueSBtYXRjaCBkYXRhLiAgVGhpcyBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgcGVyZm9ybWluZyBhCisgICAgICogc2V0IG9mIG1hdGNoZXMgd2l0aCB0aGlzIHNlZ21lbnQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgcmVzZXRNYXRjaCgpIHsKKyAgICAgICAgbWF0Y2hTdGFydCA9IG1hdGNoTGltaXQgPSAtMTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBVbmlvbiB0aGUgc2V0IG9mIGFsbCBjaGFyYWN0ZXJzIHRoYXQgbWF5IG91dHB1dCBieSB0aGlzIG9iamVjdAorICAgICAqIGludG8gdGhlIGdpdmVuIHNldC4KKyAgICAgKiBAcGFyYW0gdG9VbmlvblRvIHRoZSBzZXQgaW50byB3aGljaCB0byB1bmlvbiB0aGUgb3V0cHV0IGNoYXJhY3RlcnMKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBhZGRSZXBsYWNlbWVudFNldFRvKFVuaWNvZGVTZXQgdG9VbmlvblRvKSB7CisgICAgICAgIC8vIFRoZSBvdXRwdXQgb2YgdGhpcyByZXBsYWNlciB2YXJpZXM7IGl0IGlzIHRoZSBzb3VyY2UgdGV4dCBiZXR3ZWVuCisgICAgICAgIC8vIG1hdGNoU3RhcnQgYW5kIG1hdGNoTGltaXQuICBTaW5jZSB0aGlzIHZhcmllcyBkZXBlbmRpbmcgb24gdGhlCisgICAgICAgIC8vIGlucHV0IHRleHQsIHdlIGNhbid0IGNvbXB1dGUgaXQgaGVyZS4gIFdlIGNhbiBlaXRoZXIgZG8gbm90aGluZworICAgICAgICAvLyBvciB3ZSBjYW4gYWRkIEFMTCBjaGFyYWN0ZXJzIHRvIHRoZSBzZXQuICBJdCdzIHByb2JhYmx5IG1vcmUgdXNlZnVsCisgICAgICAgIC8vIHRvIGRvIG5vdGhpbmcuCisgICAgfQorfQorCisvL2VvZgpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3RleHQvU3RyaW5nUmVwbGFjZXIuamF2YSBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L1N0cmluZ1JlcGxhY2VyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOGY4YWRlNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L1N0cmluZ1JlcGxhY2VyLmphdmEKQEAgLTAsMCArMSwzMjggQEAKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgQ29weXJpZ2h0IChjKSAyMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uCisqICAgYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgRGF0ZSAgICAgICAgTmFtZSAgICAgICAgRGVzY3JpcHRpb24KKyogICAwMS8xNC8yMDAyICBhbGl1ICAgICAgICBDcmVhdGlvbi4KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKK3BhY2thZ2UgY29tLmlibS5pY3UudGV4dDsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLlV0aWxpdHk7CisKKy8qKgorICogQSByZXBsYWNlciB0aGF0IHByb2R1Y2VzIHN0YXRpYyB0ZXh0IGFzIGl0cyBvdXRwdXQuICBUaGUgdGV4dCBtYXkKKyAqIGNvbnRhaW4gdHJhbnNsaXRlcmF0b3Igc3RhbmQtaW4gY2hhcmFjdGVycyB0aGF0IHJlcHJlc2VudCBuZXN0ZWQKKyAqIFVuaWNvZGVSZXBsYWNlciBvYmplY3RzLCBtYWtpbmcgaXQgcG9zc2libGUgdG8gZW5jb2RlIGEgdHJlZSBvZgorICogcmVwbGFjZXJzIGluIGEgU3RyaW5nUmVwbGFjZXIuICBBIFN0cmluZ1JlcGxhY2VyIHRoYXQgY29udGFpbnMgc3VjaAorICogc3RhbmQtaW5zIGlzIGNhbGxlZCBhIDxlbT5jb21wbGV4PC9lbT4gU3RyaW5nUmVwbGFjZXIuICBBIGNvbXBsZXgKKyAqIFN0cmluZ1JlcGxhY2VyIGhhcyBhIHNsb3dlciBwcm9jZXNzaW5nIGxvb3AgdGhhbiBhIG5vbi1jb21wbGV4IG9uZS4KKyAqIEBhdXRob3IgQWxhbiBMaXUKKyAqLworY2xhc3MgU3RyaW5nUmVwbGFjZXIgaW1wbGVtZW50cyBVbmljb2RlUmVwbGFjZXIgeworCisgICAgLyoqCisgICAgICogT3V0cHV0IHRleHQsIHBvc3NpYmx5IGNvbnRhaW5pbmcgc3RhbmQtaW4gY2hhcmFjdGVycyB0aGF0CisgICAgICogcmVwcmVzZW50IG5lc3RlZCBVbmljb2RlUmVwbGFjZXJzLgorICAgICAqLworICAgIHByaXZhdGUgU3RyaW5nIG91dHB1dDsKKworICAgIC8qKgorICAgICAqIEN1cnNvciBwb3NpdGlvbi4gIFZhbHVlIGlzIGlnbm9yZWQgaWYgaGFzQ3Vyc29yIGlzIGZhbHNlLgorICAgICAqLworICAgIHByaXZhdGUgaW50IGN1cnNvclBvczsKKworICAgIC8qKgorICAgICAqIFRydWUgaWYgdGhpcyBvYmplY3Qgb3V0cHV0cyBhIGN1cnNvciBwb3NpdGlvbi4KKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gaGFzQ3Vyc29yOworCisgICAgLyoqCisgICAgICogQSBjb21wbGV4IG9iamVjdCBjb250YWlucyBuZXN0ZWQgcmVwbGFjZXJzIGFuZCByZXF1aXJlcyBtb3JlCisgICAgICogY29tcGxleCBwcm9jZXNzaW5nLiAgU3RyaW5nUmVwbGFjZXJzIGFyZSBpbml0aWFsbHkgYXNzdW1lZCB0bworICAgICAqIGJlIGNvbXBsZXguICBJZiBubyBuZXN0ZWQgcmVwbGFjZXJzIGFyZSBzZWVuIGR1cmluZyBwcm9jZXNzaW5nLAorICAgICAqIHRoZW4gaXNDb21wbGV4IGlzIHNldCB0byBmYWxzZSwgYW5kIGZ1dHVyZSByZXBsYWNlbWVudHMgYXJlCisgICAgICogc2hvcnQgY2lyY3VpdGVkIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UuCisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIGlzQ29tcGxleDsKKworICAgIC8qKgorICAgICAqIE9iamVjdCB0aGF0IHRyYW5zbGF0ZXMgc3RhbmQtaW4gY2hhcmFjdGVycyBpbiAnb3V0cHV0JyB0bworICAgICAqIFVuaWNvZGVSZXBsYWNlciBvYmplY3RzLgorICAgICAqLworICAgIHByaXZhdGUgZmluYWwgUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3IuRGF0YSBkYXRhOworCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGEgU3RyaW5nUmVwbGFjZXIgdGhhdCBzZXRzIHRoZSBlbWl0cyB0aGUgZ2l2ZW4gb3V0cHV0CisgICAgICogdGV4dCBhbmQgc2V0cyB0aGUgY3Vyc29yIHRvIHRoZSBnaXZlbiBwb3NpdGlvbi4KKyAgICAgKiBAcGFyYW0gdGhlT3V0cHV0IHRleHQgdGhhdCB3aWxsIHJlcGxhY2UgaW5wdXQgdGV4dCB3aGVuIHRoZQorICAgICAqIHJlcGxhY2UoKSBtZXRob2QgaXMgY2FsbGVkLiAgTWF5IGNvbnRhaW4gc3RhbmQtaW4gY2hhcmFjdGVycworICAgICAqIHRoYXQgcmVwcmVzZW50IG5lc3RlZCByZXBsYWNlcnMuCisgICAgICogQHBhcmFtIHRoZUN1cnNvclBvcyBjdXJzb3IgcG9zaXRpb24gdGhhdCB3aWxsIGJlIHJldHVybmVkIGJ5CisgICAgICogdGhlIHJlcGxhY2UoKSBtZXRob2QKKyAgICAgKiBAcGFyYW0gdGhlRGF0YSB0cmFuc2xpdGVyYXRvciBjb250ZXh0IG9iamVjdCB0aGF0IHRyYW5zbGF0ZXMKKyAgICAgKiBzdGFuZC1pbiBjaGFyYWN0ZXJzIHRvIFVuaWNvZGVSZXBsYWNlciBvYmplY3RzCisgICAgICovCisgICAgcHVibGljIFN0cmluZ1JlcGxhY2VyKFN0cmluZyB0aGVPdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0aGVDdXJzb3JQb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yLkRhdGEgdGhlRGF0YSkgeworICAgICAgICBvdXRwdXQgPSB0aGVPdXRwdXQ7CisgICAgICAgIGN1cnNvclBvcyA9IHRoZUN1cnNvclBvczsKKyAgICAgICAgaGFzQ3Vyc29yID0gdHJ1ZTsKKyAgICAgICAgZGF0YSA9IHRoZURhdGE7CisgICAgICAgIGlzQ29tcGxleCA9IHRydWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGEgU3RyaW5nUmVwbGFjZXIgdGhhdCBzZXRzIHRoZSBlbWl0cyB0aGUgZ2l2ZW4gb3V0cHV0CisgICAgICogdGV4dCBhbmQgZG9lcyBub3QgbW9kaWZ5IHRoZSBjdXJzb3IuCisgICAgICogQHBhcmFtIHRoZU91dHB1dCB0ZXh0IHRoYXQgd2lsbCByZXBsYWNlIGlucHV0IHRleHQgd2hlbiB0aGUKKyAgICAgKiByZXBsYWNlKCkgbWV0aG9kIGlzIGNhbGxlZC4gIE1heSBjb250YWluIHN0YW5kLWluIGNoYXJhY3RlcnMKKyAgICAgKiB0aGF0IHJlcHJlc2VudCBuZXN0ZWQgcmVwbGFjZXJzLgorICAgICAqIEBwYXJhbSB0aGVEYXRhIHRyYW5zbGl0ZXJhdG9yIGNvbnRleHQgb2JqZWN0IHRoYXQgdHJhbnNsYXRlcworICAgICAqIHN0YW5kLWluIGNoYXJhY3RlcnMgdG8gVW5pY29kZVJlcGxhY2VyIG9iamVjdHMKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nUmVwbGFjZXIoU3RyaW5nIHRoZU91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3IuRGF0YSB0aGVEYXRhKSB7CisgICAgICAgIG91dHB1dCA9IHRoZU91dHB1dDsKKyAgICAgICAgY3Vyc29yUG9zID0gMDsKKyAgICAgICAgaGFzQ3Vyc29yID0gZmFsc2U7CisgICAgICAgIGRhdGEgPSB0aGVEYXRhOworICAgICAgICBpc0NvbXBsZXggPSB0cnVlOworICAgIH0KKworLy89ICAgIHB1YmxpYyBzdGF0aWMgVW5pY29kZVJlcGxhY2VyIHZhbHVlT2YoU3RyaW5nIG91dHB1dCwKKy8vPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjdXJzb3JQb3MsCisvLz0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdWxlQmFzZWRUcmFuc2xpdGVyYXRvci5EYXRhIGRhdGEpIHsKKy8vPSAgICAgICAgaWYgKG91dHB1dC5sZW5ndGgoKSA9PSAxKSB7CisvLz0gICAgICAgICAgICBjaGFyIGMgPSBvdXRwdXQuY2hhckF0KDApOworLy89ICAgICAgICAgICAgVW5pY29kZVJlcGxhY2VyIHIgPSBkYXRhLmxvb2t1cFJlcGxhY2VyKGMpOworLy89ICAgICAgICAgICAgaWYgKHIgIT0gbnVsbCkgeworLy89ICAgICAgICAgICAgICAgIHJldHVybiByOworLy89ICAgICAgICAgICAgfQorLy89ICAgICAgICB9CisvLz0gICAgICAgIHJldHVybiBuZXcgU3RyaW5nUmVwbGFjZXIob3V0cHV0LCBjdXJzb3JQb3MsIGRhdGEpOworLy89ICAgIH0KKworICAgIC8qKgorICAgICAqIFVuaWNvZGVSZXBsYWNlciBBUEkKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IHJlcGxhY2UoUmVwbGFjZWFibGUgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgIGludFtdIGN1cnNvcikgeworICAgICAgICBpbnQgb3V0TGVuOworICAgICAgICBpbnQgbmV3U3RhcnQgPSAwOworCisgICAgICAgIC8vIE5PVEU6IEl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBfYWx3YXlzXyBydW4gdGhlIGNvbXBsZXgKKyAgICAgICAgLy8gcHJvY2Vzc2luZyBjb2RlOyBqdXN0IHNsb3dlci4gIElmIG5vdCwgdGhlbiB0aGVyZSBpcyBhIGJ1ZworICAgICAgICAvLyBpbiB0aGUgY29tcGxleCBwcm9jZXNzaW5nIGNvZGUuCisKKyAgICAgICAgLy8gU2ltcGxlIChubyBuZXN0ZWQgcmVwbGFjZXJzKSBQcm9jZXNzaW5nIENvZGUgOgorICAgICAgICBpZiAoIWlzQ29tcGxleCkgeworICAgICAgICAgICAgdGV4dC5yZXBsYWNlKHN0YXJ0LCBsaW1pdCwgb3V0cHV0KTsKKyAgICAgICAgICAgIG91dExlbiA9IG91dHB1dC5sZW5ndGgoKTsKKworICAgICAgICAgICAgLy8gU2V0dXAgZGVmYXVsdCBjdXJzb3IgcG9zaXRpb24gKGZvciBjdXJzb3JQb3Mgd2l0aGluIG91dHB1dCkKKyAgICAgICAgICAgIG5ld1N0YXJ0ID0gY3Vyc29yUG9zOworICAgICAgICB9CisKKyAgICAgICAgLy8gQ29tcGxleCAobmVzdGVkIHJlcGxhY2VycykgUHJvY2Vzc2luZyBDb2RlIDoKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBXaGVuIHRoZXJlIGFyZSBzZWdtZW50cyB0byBiZSBjb3BpZWQsIHVzZSB0aGUgUmVwbGFjZWFibGUuY29weSgpCisgICAgICAgICAgICAgKiBBUEkgaW4gb3JkZXIgdG8gcmV0YWluIG91dC1vZi1iYW5kIGRhdGEuICBDb3B5IGV2ZXJ5dGhpbmcgdG8gdGhlCisgICAgICAgICAgICAgKiBlbmQgb2YgdGhlIHN0cmluZywgdGhlbiBjb3B5IHRoZW0gYmFjayBvdmVyIHRoZSBrZXkuICBUaGlzIHByZXNlcnZlcworICAgICAgICAgICAgICogdGhlIGludGVncml0eSBvZiBpbmRpY2VzIGludG8gdGhlIGtleSBhbmQgc3Vycm91bmRpbmcgY29udGV4dCB3aGlsZQorICAgICAgICAgICAgICogZ2VuZXJhdGluZyB0aGUgb3V0cHV0IHRleHQuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIFN0cmluZ0J1ZmZlciBidWYgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgICAgICBpbnQgb091dHB1dDsgLy8gb2Zmc2V0IGludG8gJ291dHB1dCcKKyAgICAgICAgICAgIGlzQ29tcGxleCA9IGZhbHNlOworCisgICAgICAgICAgICAvLyBUaGUgdGVtcG9yYXJ5IGJ1ZmZlciBzdGFydHMgYXQgdGVtcFN0YXJ0LCBhbmQgZXh0ZW5kcworICAgICAgICAgICAgLy8gdG8gZGVzdExpbWl0ICsgdGVtcEV4dHJhLiAgVGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIgaGFzIGEgc2luZ2xlCisgICAgICAgICAgICAvLyBjaGFyYWN0ZXIgZnJvbSBiZWZvcmUgdGhlIGtleS4gIFRoaXMgcHJvdmlkZXMgc3R5bGUKKyAgICAgICAgICAgIC8vIGRhdGEgd2hlbiBhZGRpdGlvbiBjaGFyYWN0ZXJzIGFyZSBmaWxsZWQgaW50byB0aGUKKyAgICAgICAgICAgIC8vIHRlbXBvcmFyeSBidWZmZXIuICBJZiB0aGVyZSBpcyBub3RoaW5nIHRvIHRoZSBsZWZ0LCB1c2UKKyAgICAgICAgICAgIC8vIHRoZSBub24tY2hhcmFjdGVyIFUrRkZGRiwgd2hpY2ggUmVwbGFjZWFibGUgc3ViY2xhc3NlcworICAgICAgICAgICAgLy8gc2hvdWxkIHRyZWF0IHNwZWNpYWxseSBhcyBhICJuby1zdHlsZSBjaGFyYWN0ZXIuIgorICAgICAgICAgICAgLy8gZGVzdFN0YXJ0IHBvaW50cyB0byB0aGUgcG9pbnQgYWZ0ZXIgdGhlIHN0eWxlIGNvbnRleHQKKyAgICAgICAgICAgIC8vIGNoYXJhY3Rlciwgc28gaXQgaXMgdGVtcFN0YXJ0KzEgb3IgdGVtcFN0YXJ0KzIuCisgICAgICAgICAgICBpbnQgdGVtcFN0YXJ0ID0gdGV4dC5sZW5ndGgoKTsgLy8gc3RhcnQgb2YgdGVtcCBidWZmZXIKKyAgICAgICAgICAgIGludCBkZXN0U3RhcnQgPSB0ZW1wU3RhcnQ7IC8vIGNvcHkgbmV3IHRleHQgdG8gaGVyZQorICAgICAgICAgICAgaWYgKHN0YXJ0ID4gMCkgeworICAgICAgICAgICAgICAgIGludCBsZW4gPSBVVEYxNi5nZXRDaGFyQ291bnQodGV4dC5jaGFyMzJBdChzdGFydC0xKSk7CisgICAgICAgICAgICAgICAgdGV4dC5jb3B5KHN0YXJ0LWxlbiwgc3RhcnQsIHRlbXBTdGFydCk7CisgICAgICAgICAgICAgICAgZGVzdFN0YXJ0ICs9IGxlbjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGV4dC5yZXBsYWNlKHRlbXBTdGFydCwgdGVtcFN0YXJ0LCAiXHVGRkZGIik7CisgICAgICAgICAgICAgICAgZGVzdFN0YXJ0Kys7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbnQgZGVzdExpbWl0ID0gZGVzdFN0YXJ0OworICAgICAgICAgICAgaW50IHRlbXBFeHRyYSA9IDA7IC8vIHRlbXAgY2hhcnMgYWZ0ZXIgZGVzdExpbWl0CisKKyAgICAgICAgICAgIGZvciAob091dHB1dD0wOyBvT3V0cHV0PG91dHB1dC5sZW5ndGgoKTsgKSB7CisgICAgICAgICAgICAgICAgaWYgKG9PdXRwdXQgPT0gY3Vyc29yUG9zKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFJlY29yZCB0aGUgcG9zaXRpb24gb2YgdGhlIGN1cnNvcgorICAgICAgICAgICAgICAgICAgICBuZXdTdGFydCA9IGRlc3RMaW1pdCAtIGRlc3RTdGFydDsgLy8gcmVsYXRpdmUgdG8gc3RhcnQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaW50IGMgPSBVVEYxNi5jaGFyQXQob3V0cHV0LCBvT3V0cHV0KTsKKworICAgICAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJlIGF0IHRoZSBsYXN0IHBvc2l0aW9uIGNvcHkgdGhlIHJpZ2h0IHN0eWxlCisgICAgICAgICAgICAgICAgLy8gY29udGV4dCBjaGFyYWN0ZXIgaW50byB0aGUgdGVtcG9yYXJ5IGJ1ZmZlci4gIFdlIGRvbid0CisgICAgICAgICAgICAgICAgLy8gZG8gdGhpcyBiZWZvcmUgYmVjYXVzZSBpdCB3aWxsIHByb3ZpZGUgYW4gaW5jb3JyZWN0CisgICAgICAgICAgICAgICAgLy8gcmlnaHQgY29udGV4dCBmb3IgcHJldmlvdXMgcmVwbGFjZSgpIG9wZXJhdGlvbnMuCisgICAgICAgICAgICAgICAgaW50IG5leHRJbmRleCA9IG9PdXRwdXQgKyBVVEYxNi5nZXRDaGFyQ291bnQoYyk7CisgICAgICAgICAgICAgICAgaWYgKG5leHRJbmRleCA9PSBvdXRwdXQubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVtcEV4dHJhID0gVVRGMTYuZ2V0Q2hhckNvdW50KHRleHQuY2hhcjMyQXQobGltaXQpKTsKKyAgICAgICAgICAgICAgICAgICAgdGV4dC5jb3B5KGxpbWl0LCBsaW1pdCt0ZW1wRXh0cmEsIGRlc3RMaW1pdCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgVW5pY29kZVJlcGxhY2VyIHIgPSBkYXRhLmxvb2t1cFJlcGxhY2VyKGMpOworICAgICAgICAgICAgICAgIGlmIChyID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQWNjdW11bGF0ZSBzdHJhaWdodCAobm9uLXNlZ21lbnQpIHRleHQuCisgICAgICAgICAgICAgICAgICAgIFVURjE2LmFwcGVuZChidWYsIGMpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlzQ29tcGxleCA9IHRydWU7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gSW5zZXJ0IGFueSBhY2N1bXVsYXRlZCBzdHJhaWdodCB0ZXh0LgorICAgICAgICAgICAgICAgICAgICBpZiAoYnVmLmxlbmd0aCgpID4gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC5yZXBsYWNlKGRlc3RMaW1pdCwgZGVzdExpbWl0LCBidWYudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0TGltaXQgKz0gYnVmLmxlbmd0aCgpOworICAgICAgICAgICAgICAgICAgICAgICAgYnVmLnNldExlbmd0aCgwKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIC8vIERlbGVnYXRlIG91dHB1dCBnZW5lcmF0aW9uIHRvIHJlcGxhY2VyIG9iamVjdAorICAgICAgICAgICAgICAgICAgICBpbnQgbGVuID0gci5yZXBsYWNlKHRleHQsIGRlc3RMaW1pdCwgZGVzdExpbWl0LCBjdXJzb3IpOworICAgICAgICAgICAgICAgICAgICBkZXN0TGltaXQgKz0gbGVuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBvT3V0cHV0ID0gbmV4dEluZGV4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gSW5zZXJ0IGFueSBhY2N1bXVsYXRlZCBzdHJhaWdodCB0ZXh0LgorICAgICAgICAgICAgaWYgKGJ1Zi5sZW5ndGgoKSA+IDApIHsKKyAgICAgICAgICAgICAgICB0ZXh0LnJlcGxhY2UoZGVzdExpbWl0LCBkZXN0TGltaXQsIGJ1Zi50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICBkZXN0TGltaXQgKz0gYnVmLmxlbmd0aCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG9PdXRwdXQgPT0gY3Vyc29yUG9zKSB7CisgICAgICAgICAgICAgICAgLy8gUmVjb3JkIHRoZSBwb3NpdGlvbiBvZiB0aGUgY3Vyc29yCisgICAgICAgICAgICAgICAgbmV3U3RhcnQgPSBkZXN0TGltaXQgLSBkZXN0U3RhcnQ7IC8vIHJlbGF0aXZlIHRvIHN0YXJ0CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG91dExlbiA9IGRlc3RMaW1pdCAtIGRlc3RTdGFydDsKKworICAgICAgICAgICAgLy8gQ29weSBuZXcgdGV4dCB0byBzdGFydCwgYW5kIGRlbGV0ZSBpdAorICAgICAgICAgICAgdGV4dC5jb3B5KGRlc3RTdGFydCwgZGVzdExpbWl0LCBzdGFydCk7CisgICAgICAgICAgICB0ZXh0LnJlcGxhY2UodGVtcFN0YXJ0ICsgb3V0TGVuLCBkZXN0TGltaXQgKyB0ZW1wRXh0cmEgKyBvdXRMZW4sICIiKTsKKworICAgICAgICAgICAgLy8gRGVsZXRlIHRoZSBvbGQgdGV4dCAodGhlIGtleSkKKyAgICAgICAgICAgIHRleHQucmVwbGFjZShzdGFydCArIG91dExlbiwgbGltaXQgKyBvdXRMZW4sICIiKTsKKyAgICAgICAgfSAgICAgICAgCisKKyAgICAgICAgaWYgKGhhc0N1cnNvcikgeworICAgICAgICAgICAgLy8gQWRqdXN0IHRoZSBjdXJzb3IgZm9yIHBvc2l0aW9ucyBvdXRzaWRlIHRoZSBrZXkuICBUaGVzZQorICAgICAgICAgICAgLy8gcmVmZXIgdG8gY29kZSBwb2ludHMgcmF0aGVyIHRoYW4gY29kZSB1bml0cy4gIElmIGN1cnNvclBvcworICAgICAgICAgICAgLy8gaXMgd2l0aGluIHRoZSBvdXRwdXQgc3RyaW5nLCB0aGVuIHVzZSBuZXdTdGFydCwgd2hpY2ggaGFzCisgICAgICAgICAgICAvLyBhbHJlYWR5IGJlZW4gc2V0IGFib3ZlLgorICAgICAgICAgICAgaWYgKGN1cnNvclBvcyA8IDApIHsKKyAgICAgICAgICAgICAgICBuZXdTdGFydCA9IHN0YXJ0OworICAgICAgICAgICAgICAgIGludCBuID0gY3Vyc29yUG9zOworICAgICAgICAgICAgICAgIC8vIE91dHNpZGUgdGhlIG91dHB1dCBzdHJpbmcsIGN1cnNvclBvcyBjb3VudHMgY29kZSBwb2ludHMKKyAgICAgICAgICAgICAgICB3aGlsZSAobiA8IDAgJiYgbmV3U3RhcnQgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIG5ld1N0YXJ0IC09IFVURjE2LmdldENoYXJDb3VudCh0ZXh0LmNoYXIzMkF0KG5ld1N0YXJ0LTEpKTsKKyAgICAgICAgICAgICAgICAgICAgKytuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBuZXdTdGFydCArPSBuOworICAgICAgICAgICAgfSBlbHNlIGlmIChjdXJzb3JQb3MgPiBvdXRwdXQubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICBuZXdTdGFydCA9IHN0YXJ0ICsgb3V0TGVuOworICAgICAgICAgICAgICAgIGludCBuID0gY3Vyc29yUG9zIC0gb3V0cHV0Lmxlbmd0aCgpOworICAgICAgICAgICAgICAgIC8vIE91dHNpZGUgdGhlIG91dHB1dCBzdHJpbmcsIGN1cnNvclBvcyBjb3VudHMgY29kZSBwb2ludHMKKyAgICAgICAgICAgICAgICB3aGlsZSAobiA+IDAgJiYgbmV3U3RhcnQgPCB0ZXh0Lmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgIG5ld1N0YXJ0ICs9IFVURjE2LmdldENoYXJDb3VudCh0ZXh0LmNoYXIzMkF0KG5ld1N0YXJ0KSk7CisgICAgICAgICAgICAgICAgICAgIC0tbjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbmV3U3RhcnQgKz0gbjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gQ3Vyc29yIGlzIHdpdGhpbiBvdXRwdXQgc3RyaW5nLiAgSXQgaGFzIGJlZW4gc2V0IHVwIGFib3ZlCisgICAgICAgICAgICAgICAgLy8gdG8gYmUgcmVsYXRpdmUgdG8gc3RhcnQuCisgICAgICAgICAgICAgICAgbmV3U3RhcnQgKz0gc3RhcnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGN1cnNvclswXSA9IG5ld1N0YXJ0OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG91dExlbjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBVbmljb2RlUmVwbGFjZXIgQVBJCisgICAgICovCisgICAgcHVibGljIFN0cmluZyB0b1JlcGxhY2VyUGF0dGVybihib29sZWFuIGVzY2FwZVVucHJpbnRhYmxlKSB7CisgICAgICAgIFN0cmluZ0J1ZmZlciBydWxlID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBTdHJpbmdCdWZmZXIgcXVvdGVCdWYgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisKKyAgICAgICAgaW50IGN1cnNvciA9IGN1cnNvclBvczsKKworICAgICAgICAvLyBIYW5kbGUgYSBjdXJzb3IgcHJlY2VkaW5nIHRoZSBvdXRwdXQKKyAgICAgICAgaWYgKGhhc0N1cnNvciAmJiBjdXJzb3IgPCAwKSB7CisgICAgICAgICAgICB3aGlsZSAoY3Vyc29yKysgPCAwKSB7CisgICAgICAgICAgICAgICAgVXRpbGl0eS5hcHBlbmRUb1J1bGUocnVsZSwgJ0AnLCB0cnVlLCBlc2NhcGVVbnByaW50YWJsZSwgcXVvdGVCdWYpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gRmFsbCB0aHJvdWdoIGFuZCBhcHBlbmQgJ3wnIGJlbG93CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGludCBpPTA7IGk8b3V0cHV0Lmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChoYXNDdXJzb3IgJiYgaSA9PSBjdXJzb3IpIHsKKyAgICAgICAgICAgICAgICBVdGlsaXR5LmFwcGVuZFRvUnVsZShydWxlLCAnfCcsIHRydWUsIGVzY2FwZVVucHJpbnRhYmxlLCBxdW90ZUJ1Zik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjaGFyIGMgPSBvdXRwdXQuY2hhckF0KGkpOyAvLyBPayB0byB1c2UgMTYtYml0cyBoZXJlCisKKyAgICAgICAgICAgIFVuaWNvZGVSZXBsYWNlciByID0gZGF0YS5sb29rdXBSZXBsYWNlcihjKTsKKyAgICAgICAgICAgIGlmIChyID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBVdGlsaXR5LmFwcGVuZFRvUnVsZShydWxlLCBjLCBmYWxzZSwgZXNjYXBlVW5wcmludGFibGUsIHF1b3RlQnVmKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZiA9IG5ldyBTdHJpbmdCdWZmZXIoIiAiKTsKKyAgICAgICAgICAgICAgICBidWYuYXBwZW5kKHIudG9SZXBsYWNlclBhdHRlcm4oZXNjYXBlVW5wcmludGFibGUpKTsKKyAgICAgICAgICAgICAgICBidWYuYXBwZW5kKCcgJyk7CisgICAgICAgICAgICAgICAgVXRpbGl0eS5hcHBlbmRUb1J1bGUocnVsZSwgYnVmLnRvU3RyaW5nKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSwgZXNjYXBlVW5wcmludGFibGUsIHF1b3RlQnVmKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIEhhbmRsZSBhIGN1cnNvciBhZnRlciB0aGUgb3V0cHV0LiAgVXNlID4gcmF0aGVyIHRoYW4gPj0gYmVjYXVzZQorICAgICAgICAvLyBpZiBjdXJzb3IgPT0gb3V0cHV0Lmxlbmd0aCgpIGl0IGlzIGF0IHRoZSBlbmQgb2YgdGhlIG91dHB1dCwKKyAgICAgICAgLy8gd2hpY2ggaXMgdGhlIGRlZmF1bHQgcG9zaXRpb24sIHNvIHdlIG5lZWQgbm90IGVtaXQgaXQuCisgICAgICAgIGlmIChoYXNDdXJzb3IgJiYgY3Vyc29yID4gb3V0cHV0Lmxlbmd0aCgpKSB7CisgICAgICAgICAgICBjdXJzb3IgLT0gb3V0cHV0Lmxlbmd0aCgpOworICAgICAgICAgICAgd2hpbGUgKGN1cnNvci0tID4gMCkgeworICAgICAgICAgICAgICAgIFV0aWxpdHkuYXBwZW5kVG9SdWxlKHJ1bGUsICdAJywgdHJ1ZSwgZXNjYXBlVW5wcmludGFibGUsIHF1b3RlQnVmKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFV0aWxpdHkuYXBwZW5kVG9SdWxlKHJ1bGUsICd8JywgdHJ1ZSwgZXNjYXBlVW5wcmludGFibGUsIHF1b3RlQnVmKTsKKyAgICAgICAgfQorICAgICAgICAvLyBGbHVzaCBxdW90ZUJ1ZiBvdXQgdG8gcmVzdWx0CisgICAgICAgIFV0aWxpdHkuYXBwZW5kVG9SdWxlKHJ1bGUsIC0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlLCBlc2NhcGVVbnByaW50YWJsZSwgcXVvdGVCdWYpOworCisgICAgICAgIHJldHVybiBydWxlLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVW5pb24gdGhlIHNldCBvZiBhbGwgY2hhcmFjdGVycyB0aGF0IG1heSBvdXRwdXQgYnkgdGhpcyBvYmplY3QKKyAgICAgKiBpbnRvIHRoZSBnaXZlbiBzZXQuCisgICAgICogQHBhcmFtIHRvVW5pb25UbyB0aGUgc2V0IGludG8gd2hpY2ggdG8gdW5pb24gdGhlIG91dHB1dCBjaGFyYWN0ZXJzCisgICAgICovCisgICAgcHVibGljIHZvaWQgYWRkUmVwbGFjZW1lbnRTZXRUbyhVbmljb2RlU2V0IHRvVW5pb25UbykgeworICAgICAgICBpbnQgY2g7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxvdXRwdXQubGVuZ3RoKCk7IGkrPVVURjE2LmdldENoYXJDb3VudChjaCkpIHsKKyAgICAgICAgICAgIGNoID0gVVRGMTYuY2hhckF0KG91dHB1dCwgaSk7CisgICAgICAgICAgICBVbmljb2RlUmVwbGFjZXIgciA9IGRhdGEubG9va3VwUmVwbGFjZXIoY2gpOworICAgICAgICAgICAgaWYgKHIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHRvVW5pb25Uby5hZGQoY2gpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByLmFkZFJlcGxhY2VtZW50U2V0VG8odG9VbmlvblRvKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworLy9lb2YKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS90ZXh0L1N0cmluZ1NlYXJjaC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvU3RyaW5nU2VhcmNoLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNmIzMjdhYwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L1N0cmluZ1NlYXJjaC5qYXZhCkBAIC0wLDAgKzEsMzEzMiBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L3RleHQvU3RyaW5nU2VhcmNoLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMTIvMTggMDE6Mjg6MDUgJCAKKyAqICRSZXZpc2lvbjogMS4xOSAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworcGFja2FnZSBjb20uaWJtLmljdS50ZXh0OworCitpbXBvcnQgamF2YS50ZXh0LkNoYXJhY3Rlckl0ZXJhdG9yOworaW1wb3J0IGphdmEudGV4dC5TdHJpbmdDaGFyYWN0ZXJJdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworaW1wb3J0IGNvbS5pYm0uaWN1LmxhbmcuVUNoYXJhY3RlcjsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLk5vcm1hbGl6ZXJJbXBsOworCisvKioKKyAqIDxwPgorICogPGNvZGU+U3RyaW5nU2VhcmNoPC9jb2RlPiBpcyB0aGUgY29uY3JldGUgc3ViY2xhc3Mgb2YgCisgKiA8Y29kZT5TZWFyY2hJdGVyYXRvcjwvY29kZT4gdGhhdCBwcm92aWRlcyBsYW5ndWFnZS1zZW5zaXRpdmUgdGV4dCBzZWFyY2hpbmcgCisgKiBiYXNlZCBvbiB0aGUgY29tcGFyaXNvbiBydWxlcyBkZWZpbmVkIGluIGEge0BsaW5rIFJ1bGVCYXNlZENvbGxhdG9yfSBvYmplY3QuCisgKiA8L3A+CisgKiA8cD4KKyAqIDxjb2RlPlN0cmluZ1NlYXJjaDwvY29kZT4gdXNlcyBhIHZlcnNpb24gb2YgdGhlIGZhc3QgQm95ZXItTW9vcmUgc2VhcmNoCisgKiBhbGdvcml0aG0gdGhhdCBoYXMgYmVlbiBhZGFwdGVkIHRvIHdvcmsgd2l0aCB0aGUgbGFyZ2UgY2hhcmFjdGVyIHNldCBvZgorICogVW5pY29kZS4gUmVmZXIgdG8gCisgKiA8YSBocmVmPWh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3UvZG9jcy9wYXBlcnMvZWZmaWNpZW50X3RleHRfc2VhcmNoaW5nX2luX2phdmEuaHRtbD4KKyAqICJFZmZpY2llbnQgVGV4dCBTZWFyY2hpbmcgaW4gSmF2YSI8L2E+LCBwdWJsaXNoZWQgaW4gdGhlIAorICogPGk+SmF2YSBSZXBvcnQ8L2k+IG9uIEZlYnJ1YXJ5LCAxOTk5LCBmb3IgZnVydGhlciBpbmZvcm1hdGlvbiBvbiB0aGUgCisgKiBhbGdvcml0aG0uCisgKiA8L3A+CisgKiA8cD4KKyAqIFVzZXJzIGFyZSBhbHNvIHN0cm9uZ2x5IGVuY291cmFnZWQgdG8gcmVhZCB0aGUgc2VjdGlvbiBvbiAKKyAqIDxhIGhyZWY9aHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2ljdS91c2VyZ3VpZGUvc2VhcmNoU3RyaW5nLmh0bWw+CisgKiBTdHJpbmcgU2VhcmNoPC9hPiBhbmQgCisgKiA8YSBocmVmPWh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3UvdXNlcmd1aWRlL0NvbGxhdGVfSW50cm8uaHRtbD4KKyAqIENvbGxhdGlvbjwvYT4gaW4gdGhlIHVzZXIgZ3VpZGUgYmVmb3JlIGF0dGVtcHRpbmcgdG8gdXNlIHRoaXMgY2xhc3MuCisgKiA8L3A+CisgKiA8cD4KKyAqIFN0cmluZyBzZWFyY2hpbmcgZ2V0cyBhbGl0dGxlIGNvbXBsaWNhdGVkIHdoZW4gYWNjZW50cyBhcmUgZW5jb3VudGVyZWQgYXQKKyAqIG1hdGNoIGJvdW5kYXJpZXMuIElmIGEgbWF0Y2ggaXMgZm91bmQgYW5kIGl0IGhhcyBwcmVjZWRpbmcgb3IgdHJhaWxpbmcgCisgKiBhY2NlbnRzIG5vdCBwYXJ0IG9mIHRoZSBtYXRjaCwgdGhlIHJlc3VsdCByZXR1cm5lZCB3aWxsIGluY2x1ZGUgdGhlIAorICogcHJlY2VkaW5nIGFjY2VudHMgdXAgdG8gdGhlIGZpcnN0IGJhc2UgY2hhcmFjdGVyLCBpZiB0aGUgcGF0dGVybiBzZWFyY2hlZCAKKyAqIGZvciBzdGFydHMgYW4gYWNjZW50LiBMaWtld2lzZSwgCisgKiBpZiB0aGUgcGF0dGVybiBlbmRzIHdpdGggYW4gYWNjZW50LCBhbGwgdHJhaWxpbmcgYWNjZW50cyB1cCB0byB0aGUgZmlyc3QKKyAqIGJhc2UgY2hhcmFjdGVyIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdC4KKyAqIDwvcD4KKyAqIDxwPgorICogRm9yIGV4YW1wbGUsIGlmIGEgbWF0Y2ggaXMgZm91bmQgaW4gdGFyZ2V0IHRleHQgImEmIzkyO3UwMzI1JiM5Mjt1MDMwMCIgZm9yIAorICogdGhlIHBhdHRlcm4KKyAqICJhJiM5Mjt1MDMyNSIsIHRoZSByZXN1bHQgcmV0dXJuZWQgYnkgU3RyaW5nU2VhcmNoIHdpbGwgYmUgdGhlIGluZGV4IDAgYW5kCisgKiBsZW5ndGggMyAmbHQ7MCwgMyZndDsuIElmIGEgbWF0Y2ggaXMgZm91bmQgaW4gdGhlIHRhcmdldCAKKyAqICJhJiM5Mjt1MDMyNSYjOTI7dTAzMDAiIAorICogZm9yIHRoZSBwYXR0ZXJuICImIzkyO3UwMzAwIiwgdGhlbiB0aGUgcmVzdWx0IHdpbGwgYmUgaW5kZXggMSBhbmQgbGVuZ3RoIDIgCisgKiA8MSwgMj4uCisgKiA8L3A+CisgKiA8cD4KKyAqIEluIHRoZSBjYXNlIHdoZXJlIHRoZSBkZWNvbXBvc2l0aW9uIG1vZGUgaXMgb24gZm9yIHRoZSBSdWxlQmFzZWRDb2xsYXRvciwKKyAqIGFsbCBtYXRjaGVzIHRoYXQgc3RhcnRzIG9yIGVuZHMgd2l0aCBhbiBhY2NlbnQgd2lsbCBoYXZlIGl0cyByZXN1bHRzIGluY2x1ZGUgCisgKiBwcmVjZWRpbmcgb3IgZm9sbG93aW5nIGFjY2VudHMgcmVzcGVjdGl2ZWx5LiBGb3IgZXhhbXBsZSwgaWYgcGF0dGVybiAiYSIgaXMKKyAqIGxvb2tlZCBmb3IgaW4gdGhlIHRhcmdldCB0ZXh0ICImYWFjdXRlOyYjOTI7dTAzMjUiLCB0aGUgcmVzdWx0IHdpbGwgYmUKKyAqIGluZGV4IDAgYW5kIGxlbmd0aCAyICZsdDswLCAyJmd0Oy4KKyAqIDwvcD4KKyAqIDxwPgorICogVGhlIFN0cmluZ1NlYXJjaCBjbGFzcyBwcm92aWRlcyB0d28gb3B0aW9ucyB0byBoYW5kbGUgYWNjZW50IG1hdGNoaW5nIAorICogZGVzY3JpYmVkIGJlbG93OgorICogPC9wPgorICogPHA+CisgKiBMZXQgUycgYmUgdGhlIHN1Yi1zdHJpbmcgb2YgYSB0ZXh0IHN0cmluZyBTIGJldHdlZW4gdGhlIG9mZnNldHMgc3RhcnQgYW5kIAorICogZW5kICZsdDtzdGFydCwgZW5kJmd0Oy4KKyAqIDxicj4KKyAqIEEgcGF0dGVybiBzdHJpbmcgUCBtYXRjaGVzIGEgdGV4dCBzdHJpbmcgUyBhdCB0aGUgb2Zmc2V0cyAmbHQ7c3RhcnQsIAorICogbGVuZ3RoJmd0OyAKKyAqIDxicj4KKyAqIGlmCisgKiA8cHJlPiAKKyAqIG9wdGlvbiAxLiBQIG1hdGNoZXMgc29tZSBjYW5vbmljYWwgZXF1aXZhbGVudCBzdHJpbmcgb2YgUycuIFN1cHBvc2UgdGhlIAorICogICAgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yIHVzZWQgZm9yIHNlYXJjaGluZyBoYXMgYSBjb2xsYXRpb24gc3RyZW5ndGggb2YgCisgKiAgICAgICAgICAgVEVSVElBUlksIGFsbCBhY2NlbnRzIGFyZSBub24taWdub3JhYmxlLiBJZiB0aGUgcGF0dGVybiAKKyAqICAgICAgICAgICAiYSYjOTI7dTAzMDAiIGlzIHNlYXJjaGVkIGluIHRoZSB0YXJnZXQgdGV4dCAKKyAqICAgICAgICAgICAiYSYjOTI7dTAzMjUmIzkyO3UwMzAwIiwgCisgKiAgICAgICAgICAgYSBtYXRjaCB3aWxsIGJlIGZvdW5kLCBzaW5jZSB0aGUgdGFyZ2V0IHRleHQgaXMgY2Fub25pY2FsbHkgCisgKiAgICAgICAgICAgZXF1aXZhbGVudCB0byAiYSYjOTI7dTAzMDAmIzkyO3UwMzI1IgorICogb3B0aW9uIDIuIFAgbWF0Y2hlcyBTJyBhbmQgaWYgUCBzdGFydHMgb3IgZW5kcyB3aXRoIGEgY29tYmluaW5nIG1hcmssIAorICogICAgICAgICAgIHRoZXJlIGV4aXN0cyBubyBub24taWdub3JhYmxlIGNvbWJpbmluZyBtYXJrIGJlZm9yZSBvciBhZnRlciBTkiAKKyAqICAgICAgICAgICBpbiBTIHJlc3BlY3RpdmVseS4gRm9sbG93aW5nIHRoZSBleGFtcGxlIGFib3ZlLCB0aGUgcGF0dGVybiAKKyAqICAgICAgICAgICAiYSYjOTI7dTAzMDAiIHdpbGwgbm90IGZpbmQgYSBtYXRjaCBpbiAiYSYjOTI7dTAzMjUmIzkyO3UwMzAwIiwgCisgKiAgICAgICAgICAgc2luY2UKKyAqICAgICAgICAgICB0aGVyZSBleGlzdHMgYSBub24taWdub3JhYmxlIGFjY2VudCAnJiM5Mjt1MDMyNScgaW4gdGhlIG1pZGRsZSBvZiAKKyAqICAgICAgICAgICAnYScgYW5kICcmIzkyO3UwMzAwJy4gRXZlbiB3aXRoIGEgdGFyZ2V0IHRleHQgb2YgCisgKiAgICAgICAgICAgImEmIzkyO3UwMzAwJiM5Mjt1MDMyNSIgYSBtYXRjaCB3aWxsIG5vdCBiZSBmb3VuZCBiZWNhdXNlIG9mIHRoZSAKKyAqICAgICAgICAgICBub24taWdub3JhYmxlIHRyYWlsaW5nIGFjY2VudCAmIzkyO3UwMzI1LgorICogPC9wcmU+CisgKiBPcHRpb24gMi4gd2lsbCBiZSB0aGUgZGVmYXVsdCBtb2RlIGZvciBkZWFsaW5nIHdpdGggYm91bmRhcnkgYWNjZW50cyB1bmxlc3MKKyAqIHNwZWNpZmllZCB2aWEgdGhlIEFQSSBzZXRDYW5vbmljYWwoYm9vbGVhbikuCisgKiBPbmUgcmVzdHJpY3Rpb24gaXMgdG8gYmUgbm90ZWQgZm9yIG9wdGlvbiAxLiBDdXJyZW50bHkgdGhlcmUgYXJlIG5vIAorICogY29tcG9zaXRlIGNoYXJhY3RlcnMgdGhhdCBjb25zaXN0cyBvZiBhIGNoYXJhY3RlciB3aXRoIGNvbWJpbmluZyBjbGFzcyA+IDAgCisgKiBiZWZvcmUgYSBjaGFyYWN0ZXIgd2l0aCBjb21iaW5pbmcgY2xhc3MgPT0gMC4gSG93ZXZlciwgaWYgc3VjaCBhIGNoYXJhY3RlciAKKyAqIGV4aXN0cyBpbiB0aGUgZnV0dXJlLCB0aGUgU3RyaW5nU2VhcmNoIG1heSBub3Qgd29yayBjb3JyZWN0bHkgd2l0aCBvcHRpb24gMQorICogd2hlbiBzdWNoIGNoYXJhY3RlcnMgYXJlIGVuY291bnRlcmVkLgorICogPC9wPgorICogPHA+CisgKiA8dHQ+U2VhcmNoSXRlcmF0b3I8L3R0PiBwcm92aWRlcyBBUElzIHRvIHNwZWNpZnkgdGhlIHN0YXJ0aW5nIHBvc2l0aW9uIAorICogd2l0aGluIHRoZSB0ZXh0IHN0cmluZyB0byBiZSBzZWFyY2hlZCwgZS5nLiA8dHQ+c2V0SW5kZXg8L3R0PiwKKyAqIDx0dD5wcmVjZWRpbmc8L3R0PiBhbmQgPHR0PmZvbGxvd2luZzwvdHQ+LiBTaW5jZSB0aGUgc3RhcnRpbmcgcG9zaXRpb24gd2lsbCAKKyAqIGJlIHNldCBhcyBpdCBpcyBzcGVjaWZpZWQsIHBsZWFzZSB0YWtlIG5vdGUgdGhhdCB0aGVyZSBhcmUgc29tZSBkYW5nZXJvdXMgCisgKiBwb3NpdGlvbnMgd2hpY2ggdGhlIHNlYXJjaCBtYXkgcmVuZGVyIGluY29ycmVjdCByZXN1bHRzOgorICogPHVsPgorICogPGxpPiBUaGUgbWlkc3Qgb2YgYSBzdWJzdHJpbmcgdGhhdCByZXF1aXJlcyBkZWNvbXBvc2l0aW9uLgorICogPGxpPiBJZiB0aGUgZm9sbG93aW5nIG1hdGNoIGlzIHRvIGJlIGZvdW5kLCB0aGUgcG9zaXRpb24gc2hvdWxkIG5vdCBiZSB0aGUKKyAqICAgICAgc2Vjb25kIGNoYXJhY3RlciB3aGljaCByZXF1aXJlcyB0byBiZSBzd2FwcGVkIHdpdGggdGhlIHByZWNlZGluZyAKKyAqICAgICAgY2hhcmFjdGVyLiBWaWNlIHZlcnNhLCBpZiB0aGUgcHJlY2VkaW5nIG1hdGNoIGlzIHRvIGJlIGZvdW5kLCAKKyAqICAgICAgcG9zaXRpb24gdG8gc2VhcmNoIGZyb20gc2hvdWxkIG5vdCBiZSB0aGUgZmlyc3QgY2hhcmFjdGVyIHdoaWNoIAorICogICAgICByZXF1aXJlcyB0byBiZSBzd2FwcGVkIHdpdGggdGhlIG5leHQgY2hhcmFjdGVyLiBFLmcgY2VydGFpbiBUaGFpIGFuZAorICogICAgICBMYW8gY2hhcmFjdGVycyByZXF1aXJlIHN3YXBwaW5nLgorICogPGxpPiBJZiBhIGZvbGxvd2luZyBwYXR0ZXJuIG1hdGNoIGlzIHRvIGJlIGZvdW5kLCBhbnkgcG9zaXRpb24gd2l0aGluIGEgCisgKiAgICAgIGNvbnRyYWN0aW5nIHNlcXVlbmNlIGV4Y2VwdCB0aGUgZmlyc3Qgd2lsbCBmYWlsLiBWaWNlIHZlcnNhIGlmIGEgCisgKiAgICAgIHByZWNlZGluZyBwYXR0ZXJuIG1hdGNoIGlzIHRvIGJlIGZvdW5kLCBhIGludmFsaWQgc3RhcnRpbmcgcG9pbnQgCisgKiAgICAgIHdvdWxkIGJlIGFueSBjaGFyYWN0ZXIgd2l0aGluIGEgY29udHJhY3Rpbmcgc2VxdWVuY2UgZXhjZXB0IHRoZSBsYXN0LgorICogPC91bD4KKyAqIDwvcD4KKyAqIDxwPgorICogVGhvdWdoIGNvbGxhdG9yIGF0dHJpYnV0ZXMgd2lsbCBiZSB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb24gd2hpbGUgCisgKiBwZXJmb3JtaW5nIG1hdGNoZXMsIHRoZXJlIGFyZSBubyBBUElzIHByb3ZpZGVkIGluIFN0cmluZ1NlYXJjaCBmb3Igc2V0dGluZyAKKyAqIGFuZCBnZXR0aW5nIHRoZSBhdHRyaWJ1dGVzLiBUaGVzZSBhdHRyaWJ1dGVzIGNhbiBiZSBzZXQgYnkgZ2V0dGluZyB0aGUgCisgKiBjb2xsYXRvciBmcm9tIDx0dD5nZXRDb2xsYXRvcjwvdHQ+IGFuZCB1c2luZyB0aGUgQVBJcyBpbiAKKyAqIDx0dD5jb20uaWJtLmljdS50ZXh0LkNvbGxhdG9yPC90dD4uIFRvIHVwZGF0ZSBTdHJpbmdTZWFyY2ggdG8gdGhlIG5ldyAKKyAqIGNvbGxhdG9yIGF0dHJpYnV0ZXMsIDx0dD5yZXNldCgpPC90dD4gb3IgCisgKiA8dHQ+c2V0Q29sbGF0b3IoUnVsZUJhc2VkQ29sbGF0b3IpPC90dD4gaGFzIHRvIGJlIGNhbGxlZC4KKyAqIDwvcD4KKyAqIDxwPgorICogQ29uc3VsdCB0aGUgCisgKiA8YSBocmVmPWh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3UvdXNlcmd1aWRlL3NlYXJjaFN0cmluZy5odG1sPgorICogU3RyaW5nIFNlYXJjaDwvYT4gdXNlciBndWlkZSBhbmQgdGhlIDxjb2RlPlNlYXJjaEl0ZXJhdG9yPC9jb2RlPiAKKyAqIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kIGV4YW1wbGVzIG9mIHVzZS4KKyAqIDwvcD4KKyAqIDxwPgorICogVGhpcyBjbGFzcyBpcyBub3Qgc3ViY2xhc3NhYmxlCisgKiA8L3A+CisgKiBAc2VlIFNlYXJjaEl0ZXJhdG9yCisgKiBAc2VlIFJ1bGVCYXNlZENvbGxhdG9yCisgKiBAYXV0aG9yIExhdXJhIFdlcm5lciwgc3lud2VlCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworLy8gaW50ZXJuYWwgbm90ZXM6IGFsbCBtZXRob2RzIGRvIG5vdCBndWFyYW50ZWUgdGhlIGNvcnJlY3Qgc3RhdHVzIG9mIHRoZSAKKy8vIGNoYXJhY3Rlcml0ZXJhdG9yLiB0aGUgY2FsbGVyIGhhcyB0byBtYWludGFpbiB0aGUgb3JpZ2luYWwgaW5kZXggcG9zaXRpb24KKy8vIGlmIG5lY2Vzc2FyeS4gbWV0aG9kcyBjb3VsZCBjaGFuZ2UgdGhlIGluZGV4IHBvc2l0aW9uIGFzIGl0IGRlZW1zIGZpdAorcHVibGljIGZpbmFsIGNsYXNzIFN0cmluZ1NlYXJjaCBleHRlbmRzIFNlYXJjaEl0ZXJhdG9yCit7CisJCisJLy8gcHVibGljIGNvbnN0cnVjdG9ycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCQorICAgIC8qKgorICAgICAqIEluaXRpYWxpemVzIHRoZSBpdGVyYXRvciB0byB1c2UgdGhlIGxhbmd1YWdlLXNwZWNpZmljIHJ1bGVzIGRlZmluZWQgaW4gCisgICAgICogdGhlIGFyZ3VtZW50IGNvbGxhdG9yIHRvIHNlYXJjaCBmb3IgYXJndW1lbnQgcGF0dGVybiBpbiB0aGUgYXJndW1lbnQgCisgICAgICogdGFyZ2V0IHRleHQuIFRoZSBhcmd1bWVudCBicmVha2l0ZXIgaXMgdXNlZCB0byBkZWZpbmUgbG9naWNhbCBtYXRjaGVzLgorICAgICAqIFNlZSBzdXBlciBjbGFzcyBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGRldGFpbHMgb24gdGhlIHVzZSBvZiB0aGUgdGFyZ2V0IAorICAgICAqIHRleHQgYW5kIEJyZWFrSXRlcmF0b3IuCisgICAgICogQHBhcmFtIHBhdHRlcm4gdGV4dCB0byBsb29rIGZvci4KKyAgICAgKiBAcGFyYW0gdGFyZ2V0IHRhcmdldCB0ZXh0IHRvIHNlYXJjaCBmb3IgcGF0dGVybi4gCisgICAgICogQHBhcmFtIGNvbGxhdG9yIFJ1bGVCYXNlZENvbGxhdG9yIHRoYXQgZGVmaW5lcyB0aGUgbGFuZ3VhZ2UgcnVsZXMKKyAgICAgKiBAcGFyYW0gYnJlYWtlciBBIHtAbGluayBCcmVha0l0ZXJhdG9yfSB0aGF0IGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSAKKyAgICAgKiAgICAgICAgICAgICAgICBib3VuZGFyaWVzIG9mIGEgbG9naWNhbCBtYXRjaC4gVGhpcyBhcmd1bWVudCBjYW4gYmUgbnVsbC4KKyAgICAgKiBAZXhjZXB0aW9uIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiB0aHJvd24gd2hlbiBhcmd1bWVudCB0YXJnZXQgaXMgbnVsbCwKKyAgICAgKiAgICAgICAgICAgIG9yIG9mIGxlbmd0aCAwCisgICAgICogQHNlZSBCcmVha0l0ZXJhdG9yCisgICAgICogQHNlZSBSdWxlQmFzZWRDb2xsYXRvcgorICAgICAqIEBzZWUgU2VhcmNoSXRlcmF0b3IKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nU2VhcmNoKFN0cmluZyBwYXR0ZXJuLCBDaGFyYWN0ZXJJdGVyYXRvciB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICBSdWxlQmFzZWRDb2xsYXRvciBjb2xsYXRvciwgQnJlYWtJdGVyYXRvciBicmVha2l0ZXIpIAorICAgIHsKKyAgICAgICAgc3VwZXIodGFyZ2V0LCBicmVha2l0ZXIpOworICAgICAgICBtX3RleHRCZWdpbk9mZnNldF8gPSB0YXJnZXRUZXh0LmdldEJlZ2luSW5kZXgoKTsKKyAgICAgICAgbV90ZXh0TGltaXRPZmZzZXRfID0gdGFyZ2V0VGV4dC5nZXRFbmRJbmRleCgpOworICAgICAgICBtX2NvbGxhdG9yXyA9IGNvbGxhdG9yOworICAgICAgICBtX2NvbEVJdGVyXyA9IG1fY29sbGF0b3JfLmdldENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvcih0YXJnZXQpOworICAgICAgICBtX3V0aWxDb2xFSXRlcl8gPSBjb2xsYXRvci5nZXRDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IoIiIpOworICAgICAgICBtX2NlTWFza18gPSBnZXRNYXNrKG1fY29sbGF0b3JfLmdldFN0cmVuZ3RoKCkpOworICAgICAgICBtX2lzQ2Fub25pY2FsTWF0Y2hfID0gZmFsc2U7CisgICAgICAgIG1fcGF0dGVybl8gPSBuZXcgUGF0dGVybihwYXR0ZXJuKTsKKyAgICAgICAgbV9tYXRjaGVkSW5kZXhfID0gRE9ORTsKKyAgICAgICAgCisgICAgICAgIGluaXRpYWxpemUoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbml0aWFsaXplcyB0aGUgaXRlcmF0b3IgdG8gdXNlIHRoZSBsYW5ndWFnZS1zcGVjaWZpYyBydWxlcyBkZWZpbmVkIGluIAorICAgICAqIHRoZSBhcmd1bWVudCBjb2xsYXRvciB0byBzZWFyY2ggZm9yIGFyZ3VtZW50IHBhdHRlcm4gaW4gdGhlIGFyZ3VtZW50IAorICAgICAqIHRhcmdldCB0ZXh0LiBObyBCcmVha0l0ZXJhdG9ycyBhcmUgc2V0IHRvIHRlc3QgZm9yIGxvZ2ljYWwgbWF0Y2hlcy4KKyAgICAgKiBAcGFyYW0gcGF0dGVybiB0ZXh0IHRvIGxvb2sgZm9yLgorICAgICAqIEBwYXJhbSB0YXJnZXQgdGFyZ2V0IHRleHQgdG8gc2VhcmNoIGZvciBwYXR0ZXJuLiAKKyAgICAgKiBAcGFyYW0gY29sbGF0b3IgUnVsZUJhc2VkQ29sbGF0b3IgdGhhdCBkZWZpbmVzIHRoZSBsYW5ndWFnZSBydWxlcworICAgICAqIEBleGNlcHRpb24gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHRocm93biB3aGVuIGFyZ3VtZW50IHRhcmdldCBpcyBudWxsLAorICAgICAqICAgICAgICAgICAgb3Igb2YgbGVuZ3RoIDAKKyAgICAgKiBAc2VlIFJ1bGVCYXNlZENvbGxhdG9yCisgICAgICogQHNlZSBTZWFyY2hJdGVyYXRvcgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmdTZWFyY2goU3RyaW5nIHBhdHRlcm4sIENoYXJhY3Rlckl0ZXJhdG9yIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yIGNvbGxhdG9yKSAKKyAgICB7CisgICAgICAgIHRoaXMocGF0dGVybiwgdGFyZ2V0LCBjb2xsYXRvciwgQnJlYWtJdGVyYXRvci5nZXRDaGFyYWN0ZXJJbnN0YW5jZSgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbml0aWFsaXplcyB0aGUgaXRlcmF0b3IgdG8gdXNlIHRoZSBsYW5ndWFnZS1zcGVjaWZpYyBydWxlcyBhbmQgCisgICAgICogYnJlYWsgaXRlcmF0b3IgcnVsZXMgZGVmaW5lZCBpbiB0aGUgYXJndW1lbnQgbG9jYWxlIHRvIHNlYXJjaCBmb3IgCisgICAgICogYXJndW1lbnQgcGF0dGVybiBpbiB0aGUgYXJndW1lbnQgdGFyZ2V0IHRleHQuIAorICAgICAqIFNlZSBzdXBlciBjbGFzcyBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGRldGFpbHMgb24gdGhlIHVzZSBvZiB0aGUgdGFyZ2V0IAorICAgICAqIHRleHQgYW5kIEJyZWFrSXRlcmF0b3IuCisgICAgICogQHBhcmFtIHBhdHRlcm4gdGV4dCB0byBsb29rIGZvci4KKyAgICAgKiBAcGFyYW0gdGFyZ2V0IHRhcmdldCB0ZXh0IHRvIHNlYXJjaCBmb3IgcGF0dGVybi4gCisgICAgICogQHBhcmFtIGxvY2FsZSBsb2NhbGUgdG8gdXNlIGZvciBsYW5ndWFnZSBhbmQgYnJlYWsgaXRlcmF0b3IgcnVsZXMKKyAgICAgKiBAZXhjZXB0aW9uIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiB0aHJvd24gd2hlbiBhcmd1bWVudCB0YXJnZXQgaXMgbnVsbCwKKyAgICAgKiAgICAgICAgICAgIG9yIG9mIGxlbmd0aCAwLiBDbGFzc0Nhc3RFeGNlcHRpb24gdGhyb3duIGlmIHRoZSBjb2xsYXRvciBmb3IgCisgICAgICogICAgICAgICAgICB0aGUgc3BlY2lmaWVkIGxvY2FsZSBpcyBub3QgYSBSdWxlQmFzZWRDb2xsYXRvci4KKyAgICAgKiBAc2VlIEJyZWFrSXRlcmF0b3IKKyAgICAgKiBAc2VlIFJ1bGVCYXNlZENvbGxhdG9yCisgICAgICogQHNlZSBTZWFyY2hJdGVyYXRvcgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmdTZWFyY2goU3RyaW5nIHBhdHRlcm4sIENoYXJhY3Rlckl0ZXJhdG9yIHRhcmdldCwgTG9jYWxlIGxvY2FsZSkKKyAgICB7CisgICAgICAgIHRoaXMocGF0dGVybiwgdGFyZ2V0LCAoUnVsZUJhc2VkQ29sbGF0b3IpQ29sbGF0b3IuZ2V0SW5zdGFuY2UobG9jYWxlKSwKKyAgICAgICAgICAgICBCcmVha0l0ZXJhdG9yLmdldENoYXJhY3Rlckluc3RhbmNlKGxvY2FsZSkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEluaXRpYWxpemVzIHRoZSBpdGVyYXRvciB0byB1c2UgdGhlIGxhbmd1YWdlLXNwZWNpZmljIHJ1bGVzIGFuZCAKKyAgICAgKiBicmVhayBpdGVyYXRvciBydWxlcyBkZWZpbmVkIGluIHRoZSBkZWZhdWx0IGxvY2FsZSB0byBzZWFyY2ggZm9yIAorICAgICAqIGFyZ3VtZW50IHBhdHRlcm4gaW4gdGhlIGFyZ3VtZW50IHRhcmdldCB0ZXh0LiAKKyAgICAgKiBTZWUgc3VwZXIgY2xhc3MgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBkZXRhaWxzIG9uIHRoZSB1c2Ugb2YgdGhlIHRhcmdldCAKKyAgICAgKiB0ZXh0IGFuZCBCcmVha0l0ZXJhdG9yLgorICAgICAqIEBwYXJhbSBwYXR0ZXJuIHRleHQgdG8gbG9vayBmb3IuCisgICAgICogQHBhcmFtIHRhcmdldCB0YXJnZXQgdGV4dCB0byBzZWFyY2ggZm9yIHBhdHRlcm4uIAorICAgICAqIEBleGNlcHRpb24gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHRocm93biB3aGVuIGFyZ3VtZW50IHRhcmdldCBpcyBudWxsLAorICAgICAqICAgICAgICAgICAgb3Igb2YgbGVuZ3RoIDAuIENsYXNzQ2FzdEV4Y2VwdGlvbiB0aHJvd24gaWYgdGhlIGNvbGxhdG9yIGZvciAKKyAgICAgKiAgICAgICAgICAgIHRoZSBkZWZhdWx0IGxvY2FsZSBpcyBub3QgYSBSdWxlQmFzZWRDb2xsYXRvci4KKyAgICAgKiBAc2VlIEJyZWFrSXRlcmF0b3IKKyAgICAgKiBAc2VlIFJ1bGVCYXNlZENvbGxhdG9yCisgICAgICogQHNlZSBTZWFyY2hJdGVyYXRvcgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmdTZWFyY2goU3RyaW5nIHBhdHRlcm4sIFN0cmluZyB0YXJnZXQpIAorICAgIHsKKyAgICAgICAgdGhpcyhwYXR0ZXJuLCBuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IodGFyZ2V0KSwKKyAgICAgICAgICAgICAoUnVsZUJhc2VkQ29sbGF0b3IpQ29sbGF0b3IuZ2V0SW5zdGFuY2UoKSwKKyAgICAgICAgICAgICBCcmVha0l0ZXJhdG9yLmdldENoYXJhY3Rlckluc3RhbmNlKCkpOworICAgIH0KKworICAgIC8vIHB1YmxpYyBnZXR0ZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgc3RyZW5ndGggcHJvcGVydHkgb2YgdGhlIFJ1bGVCYXNlZENvbGxhdG9yIHVzZWQgaW4gc2VhcmNoaW5nLiAKKyAgICAgKiBTZWUgdGhlIFJ1bGVCYXNlZENvbGxhdG9yIGNsYXNzIGRvY3VtZW50YXRpb24gZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlCisgICAgICogc3RyZW5ndGggcHJvcGVydHkuCisgICAgICogQHJldHVybiB0aGUgc3RyZW5ndGggcHJvcGVydHkgb2YgdGhlIFJ1bGVCYXNlZENvbGxhdG9yIHVzZWQgaW4gc2VhcmNoaW5nCisgICAgICogQHNlZSBSdWxlQmFzZWRDb2xsYXRvcgorICAgICAqIEBzZWUgI3NldFN0cmVuZ3RoCisgICAgICogQHNlZSAjZ2V0Q29sbGF0b3IKKyAgICAgKiBAb2Jzb2xldGUgSUNVIDIuMi4gVXNlIHRoaXMuZ2V0Q29sbGF0b3IoKS5nZXRTdHJlbmd0aCgpIGluc3RlYWQgc2luY2UgaXQKKyAgICAgKiAgICAgICAgICAgd2lsbCBiZSByZW1vdmVkIGluIHRoYXQgcmVsZWFzZS4KKyAgICAgKi8KKyAgICAvLy9DTE9WRVI6T0ZGCisgICAgcHVibGljIGludCBnZXRTdHJlbmd0aCgpIHsKKyAgICAgICAgcmV0dXJuIG1fY29sbGF0b3JfLmdldFN0cmVuZ3RoKCk7CisgICAgfQorICAgIC8vL0NMT1ZFUjpPTgorICAgIAorICAgIC8qKgorCSAqIDxwPgorICAgICAqIEdldHMgdGhlIFJ1bGVCYXNlZENvbGxhdG9yIHVzZWQgZm9yIHRoZSBsYW5ndWFnZSBydWxlcy4KKyAgICAgKiA8L3A+CisJICogPHA+CisgICAgICogU2luY2UgU3RyaW5nU2VhcmNoIGRlcGVuZHMgb24gdGhlIHJldHVybmVkIFJ1bGVCYXNlZENvbGxhdG9yLCBhbnkgCisJICogY2hhbmdlcyB0byB0aGUgUnVsZUJhc2VkQ29sbGF0b3IgcmVzdWx0IHNob3VsZCBmb2xsb3cgd2l0aCBhIGNhbGwgdG8gCisJICogZWl0aGVyIFN0cmluZ1NlYXJjaC5yZXNldCgpIG9yIAorCSAqIFN0cmluZ1NlYXJjaC5zZXRDb2xsYXRvcihSdWxlQmFzZWRDb2xsYXRvcikgdG8gZW5zdXJlIHRoZSBjb3JyZWN0IAorCSAqIHNlYXJjaCBiZWhhdmlvdXIuCisgICAgICogPC9wPgorCSAqIEByZXR1cm4gUnVsZUJhc2VkQ29sbGF0b3IgdXNlZCBieSB0aGlzIFN0cmluZ1NlYXJjaAorICAgICAqIEBzZWUgUnVsZUJhc2VkQ29sbGF0b3IKKyAgICAgKiBAc2VlICNzZXRDb2xsYXRvcgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorCSAqLworICAgIHB1YmxpYyBSdWxlQmFzZWRDb2xsYXRvciBnZXRDb2xsYXRvcigpIAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY29sbGF0b3JfOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBwYXR0ZXJuIGZvciB3aGljaCBTdHJpbmdTZWFyY2ggaXMgc2VhcmNoaW5nIGZvci4KKyAgICAgKiBAcmV0dXJuIHRoZSBwYXR0ZXJuIHNlYXJjaGVkIGZvcgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgZ2V0UGF0dGVybigpIAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcGF0dGVybl8udGFyZ2V0VGV4dDsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBpbmRleCBpbiB0aGUgdGFyZ2V0IHRleHQgd2hlcmUgdGhlIGl0ZXJhdG9yIGlzIGN1cnJlbnRseSAKKyAgICAgKiBwb3NpdGlvbmVkIGF0LiAKKyAgICAgKiBJZiB0aGUgaXRlcmF0aW9uIGhhcyBnb25lIHBhc3QgdGhlIGVuZCBvZiB0aGUgdGFyZ2V0IHRleHQgb3IgcGFzdCAKKyAgICAgKiB0aGUgYmVnaW5uaW5nIGZvciBhIGJhY2t3YXJkcyBzZWFyY2gsIHtAbGluayAjRE9ORX0gaXMgcmV0dXJuZWQuCisgICAgICogQHJldHVybiBpbmRleCBpbiB0aGUgdGFyZ2V0IHRleHQgd2hlcmUgdGhlIGl0ZXJhdG9yIGlzIGN1cnJlbnRseSAKKyAgICAgKiAgICAgICAgIHBvc2l0aW9uZWQgYXQKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0SW5kZXgoKSAKKyAgICB7CisgICAgICAgIGludCByZXN1bHQgPSBtX2NvbEVJdGVyXy5nZXRPZmZzZXQoKTsKKyAgICAgICAgaWYgKGlzT3V0T2ZCb3VuZHMobV90ZXh0QmVnaW5PZmZzZXRfLCBtX3RleHRMaW1pdE9mZnNldF8sIHJlc3VsdCkpIHsKKyAgICAgICAgICAgIHJldHVybiBET05FOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIERldGVybWluZXMgd2hldGhlciBjYW5vbmljYWwgbWF0Y2hlcyAob3B0aW9uIDEsIGFzIGRlc2NyaWJlZCBpbiB0aGUgCisgICAgICogY2xhc3MgZG9jdW1lbnRhdGlvbikgaXMgc2V0LgorICAgICAqIFNlZSBzZXRDYW5vbmljYWwoYm9vbGVhbikgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICogQHNlZSAjc2V0Q2Fub25pY2FsCisgICAgICogQHJldHVybiB0cnVlIGlmIGNhbm9uaWNhbCBtYXRjaGVzIGlzIHNldCwgZmFsc2Ugb3RoZXJ3aXNlCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc0Nhbm9uaWNhbCgpIAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faXNDYW5vbmljYWxNYXRjaF87CisgICAgfQorICAgIAorICAgIC8vIHB1YmxpYyBzZXR0ZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgICogPHA+CisgICAgICogU2V0cyB0aGUgc3RyZW5ndGggcHJvcGVydHkgb2YgdGhlIFJ1bGVCYXNlZENvbGxhdG9yIHVzZWQgZm9yIHNlYXJjaGluZy4KKyAgICAgKiBTZWUgdGhlIENvbGxhdG9yIGRvY3VtZW50YXRpb24gZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIHN0cmVuZ3Rocy4KKyAgICAgKiA8L3A+CisgICAgICogQG9ic29sZXRlIElDVSAyLjIuIFVzZSB0aGlzLmdldENvbGxhdG9yKCkuc2V0U3RyZW5ndGgoaW50KSBpbnN0ZWFkIHNpbmNlCisgICAgICogICAgICAgICAgIGl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGF0IHJlbGVhc2UuCisgICAgICogICAgICAgICAgICAgQWZ0ZXIgd2hpY2ggU3RyaW5nU2VhcmNoLnJlc2V0KCkgCisgICAgICogICAgICAgICAgICAgb3IgU3RyaW5nU2VhcmNoLnNldENvbGxhdG9yKHRoaXMuZ2V0Q29sbGF0b3IoKSkgc2hvdWxkIGJlCisgICAgICogICAgICAgICAgICAgY2FsbGVkIHRvIHVwZGF0ZSBTdHJpbmdTZWFyY2guXQorICAgICAqIEBzZWUgQ29sbGF0b3IKKyAgICAgKiBAc2VlIENvbGxhdG9yI1BSSU1BUlkKKyAgICAgKiBAc2VlIENvbGxhdG9yI1NFQ09OREFSWQorICAgICAqIEBzZWUgQ29sbGF0b3IjVEVSVElBUlkKKyAgICAgKiBAc2VlIENvbGxhdG9yI1FVQVRFUk5BUlkKKyAgICAgKiBAc2VlIENvbGxhdG9yI0lERU5USUNBTAorICAgICAqIEBzZWUgI3NldENvbGxhdG9yCisgICAgICogQHNlZSAjZ2V0Q29sbGF0b3IKKyAgICAgKi8KKyAgICAvLy9DTE9WRVI6T0ZGCisgICAgcHVibGljIHZvaWQgc2V0U3RyZW5ndGgoaW50IG5ld1N0cmVuZ3RoKSAKKyAgICB7CisgICAgICAgIC8vIER1ZSB0byBhIGJ1ZyAoPykgaW4gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLCB3ZSBtdXN0IHNldCB0aGUKKyAgICAgICAgLy8gY29sbGF0b3IncyBzdHJlbmd0aCBhcyB3ZWxsLCBzaW5jZSB0aGUgaXRlcmF0b3IgaXMgZ29pbmcgdG8KKyAgICAgICAgLy8gbWFzayBvdXQgdGhlIHBvcnRpb25zIG9mIHRoZSBjb2xsYXRpb24gZWxlbWVudCB0aGF0IGFyZSBub3QKKyAgICAgICAgLy8gcmVsZXZhbnQgZm9yIHRoZSBjb2xsYXRvcidzIGN1cnJlbnQgc3RyZW5ndGggc2V0dGluZworICAgICAgICAvLyBOb3RlIHRoYXQgdGhpcyBtYWtlcyBpdCBpbXBvc3NpYmxlIHRvIHNoYXJlIGEgQ29sbGF0b3IgYW1vbmcKKyAgICAgICAgLy8gbXVsdGlwbGUgU3RyaW5nU2VhcmNoIG9iamVjdHMgaWYgeW91IGFkanVzdCBTdHJlbmd0aCBzZXR0aW5ncy4KKyAgICAgICAgbV9jb2xsYXRvcl8uc2V0U3RyZW5ndGgobmV3U3RyZW5ndGgpOworICAgICAgICBpbml0aWFsaXplKCk7CisgICAgfQorICAgIC8vL0NMT1ZFUjpPTgorICAgIAorICAgIC8qKgorICAgICAqIDxwPgorICAgICAqIFNldHMgdGhlIFJ1bGVCYXNlZENvbGxhdG9yIHRvIGJlIHVzZWQgZm9yIGxhbmd1YWdlLXNwZWNpZmljIHNlYXJjaGluZy4KKyAgICAgKiA8L3A+CisgICAgICogPHA+CisgICAgICogVGhpcyBtZXRob2QgY2F1c2VzIGludGVybmFsIGRhdGEgc3VjaCBhcyBCb3llci1Nb29yZSBzaGlmdCB0YWJsZXMKKyAgICAgKiB0byBiZSByZWNhbGN1bGF0ZWQsIGJ1dCB0aGUgaXRlcmF0b3IncyBwb3NpdGlvbiBpcyB1bmNoYW5nZWQuCisgICAgICogPC9wPgorICAgICAqIEBwYXJhbSBjb2xsYXRvciB0byB1c2UgZm9yIHRoaXMgU3RyaW5nU2VhcmNoCisgICAgICogQGV4Y2VwdGlvbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gdGhyb3duIHdoZW4gY29sbGF0b3IgaXMgbnVsbAorICAgICAqIEBzZWUgI2dldENvbGxhdG9yCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0Q29sbGF0b3IoUnVsZUJhc2VkQ29sbGF0b3IgY29sbGF0b3IpIAorICAgIHsKKyAgICAJaWYgKGNvbGxhdG9yID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkNvbGxhdG9yIGNhbiBub3QgYmUgbnVsbCIpOworICAgICAgICB9CisgICAgICAgIG1fY29sbGF0b3JfID0gY29sbGF0b3I7CisgICAgICAgIG1fY2VNYXNrXyA9IGdldE1hc2sobV9jb2xsYXRvcl8uZ2V0U3RyZW5ndGgoKSk7CisgICAgICAgIC8vIGlmIHN0YXR1cyBpcyBhIGZhaWx1cmUsIHVjb2xfZ2V0QXR0cmlidXRlIHJldHVybnMgVUNPTF9ERUZBVUxUCisgICAgICAgIGluaXRpYWxpemUoKTsKKyAgICAgICAgbV9jb2xFSXRlcl8uc2V0Q29sbGF0b3IobV9jb2xsYXRvcl8pOworICAgICAgICBtX3V0aWxDb2xFSXRlcl8uc2V0Q29sbGF0b3IobV9jb2xsYXRvcl8pOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiA8cD4KKyAgICAgKiBTZXQgdGhlIHBhdHRlcm4gdG8gc2VhcmNoIGZvci4gIAorICAgICAqIDwvcD4KKyAgICAgKiA8cD4KKyAgICAgKiBUaGlzIG1ldGhvZCBjYXVzZXMgaW50ZXJuYWwgZGF0YSBzdWNoIGFzIEJveWVyLU1vb3JlIHNoaWZ0IHRhYmxlcworICAgICAqIHRvIGJlIHJlY2FsY3VsYXRlZCwgYnV0IHRoZSBpdGVyYXRvcidzIHBvc2l0aW9uIGlzIHVuY2hhbmdlZC4KKyAgICAgKiA8L3A+CisgICAgICogQHBhcmFtIHBhdHRlcm4gZm9yIHNlYXJjaGluZworICAgICAqIEBzZWUgI2dldFBhdHRlcm4KKyAgICAgKiBAZXhjZXB0aW9uIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiB0aHJvd24gaWYgcGF0dGVybiBpcyBudWxsIG9yIG9mCisgICAgICogCQkJICBsZW5ndGggMAorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFBhdHRlcm4oU3RyaW5nIHBhdHRlcm4pIAorICAgIHsKKyAgICAJaWYgKHBhdHRlcm4gPT0gbnVsbCB8fCBwYXR0ZXJuLmxlbmd0aCgpIDw9IDApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCisgICAgICAgICAgICAJCSJQYXR0ZXJuIHRvIHNlYXJjaCBmb3IgY2FuIG5vdCBiZSBudWxsIG9yIG9mIGxlbmd0aCAwIik7CisgICAgICAgIH0KKyAgICAgICAgbV9wYXR0ZXJuXy50YXJnZXRUZXh0ID0gcGF0dGVybjsKKyAgICAgICAgaW5pdGlhbGl6ZSgpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAJICogU2V0IHRoZSB0YXJnZXQgdGV4dCB0byBiZSBzZWFyY2hlZC4gVGV4dCBpdGVyYXRpb24gd2lsbCBoZW5jZSBiZWdpbiBhdCAKKyAgICAgKiB0aGUgc3RhcnQgb2YgdGhlIHRleHQgc3RyaW5nLiBUaGlzIG1ldGhvZCBpcyB1c2VmdWwgaWYgeW91IHdhbnQgdG8gCisgICAgICogcmUtdXNlIGFuIGl0ZXJhdG9yIHRvIHNlYXJjaCB3aXRoaW4gYSBkaWZmZXJlbnQgYm9keSBvZiB0ZXh0LgorICAgICAqIEBwYXJhbSB0ZXh0IG5ldyB0ZXh0IGl0ZXJhdG9yIHRvIGxvb2sgZm9yIG1hdGNoLCAKKyAgICAgKiBAZXhjZXB0aW9uIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiB0aHJvd24gd2hlbiB0ZXh0IGlzIG51bGwgb3IgaGFzCisgICAgICogICAgICAgICAgICAwIGxlbmd0aAorICAgICAqIEBzZWUgI2dldFRhcmdldAorCSAqIEBkcmFmdCBJQ1UgMi4yCisJICovCisJcHVibGljIHZvaWQgc2V0VGFyZ2V0KENoYXJhY3Rlckl0ZXJhdG9yIHRleHQpCisJeworCQlzdXBlci5zZXRUYXJnZXQodGV4dCk7CisgICAgICAgIG1fdGV4dEJlZ2luT2Zmc2V0XyA9IHRhcmdldFRleHQuZ2V0QmVnaW5JbmRleCgpOworICAgICAgICBtX3RleHRMaW1pdE9mZnNldF8gPSB0YXJnZXRUZXh0LmdldEVuZEluZGV4KCk7CisgICAgICAgIG1fY29sRUl0ZXJfLnNldFRleHQodGFyZ2V0VGV4dCk7CisJfQorICAgIAorICAgIC8qKgorCSAqIDxwPgorICAgICAqIFNldHMgdGhlIHBvc2l0aW9uIGluIHRoZSB0YXJnZXQgdGV4dCB3aGljaCB0aGUgbmV4dCBzZWFyY2ggd2lsbCBzdGFydCAKKyAgICAgKiBmcm9tIHRvIHRoZSBhcmd1bWVudC4gVGhpcyBtZXRob2QgY2xlYXJzIGFsbCBwcmV2aW91cyBzdGF0ZXMuCisgICAgICogPC9wPgorICAgICAqIDxwPgorICAgICAqIFRoaXMgbWV0aG9kIHRha2VzIHRoZSBhcmd1bWVudCBwb3NpdGlvbiBhbmQgc2V0cyB0aGUgcG9zaXRpb24gaW4gdGhlIAorICAgICAqIHRhcmdldCB0ZXh0IGFjY29yZGluZ2x5LCB3aXRob3V0IGNoZWNraW5nIGlmIHBvc2l0aW9uIGlzIHBvaW50aW5nIHRvIGEgCisgICAgICogdmFsaWQgc3RhcnRpbmcgcG9pbnQgdG8gYmVnaW4gc2VhcmNoaW5nLgorICAgICAqIDwvcD4KKyAgICAgKiA8cD4KKyAgICAgKiBTZWFyY2ggcG9zaXRpb25zIHRoYXQgbWF5IHJlbmRlciBpbmNvcnJlY3QgcmVzdWx0cyBhcmUgaGlnaGxpZ2h0ZWQgaW4gCisgICAgICogdGhlIGNsYXNzIGRvY3VtZW50YXRpb24uCisgICAgICogPC9wPgorICAgICAqIEBwYXJhbSBwb3NpdGlvbiBpbmRleCB0byBzdGFydCBuZXh0IHNlYXJjaCBmcm9tLgorICAgICAqIEBleGNlcHRpb24gSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiB0aHJvd24gaWYgYXJndW1lbnQgcG9zaXRpb24gaXMgb3V0CisgICAgICogICAgICAgICAgICBvZiB0aGUgdGFyZ2V0IHRleHQgcmFuZ2UuCisgICAgICogQHNlZSAjZ2V0SW5kZXgKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorCSAqLworCXB1YmxpYyB2b2lkIHNldEluZGV4KGludCBwb3NpdGlvbikKKwl7CisJCXN1cGVyLnNldEluZGV4KHBvc2l0aW9uKTsKKyAgICAgICAgbV9tYXRjaGVkSW5kZXhfID0gRE9ORTsKKyAgICAgICAgbV9jb2xFSXRlcl8uc2V0RXhhY3RPZmZzZXQocG9zaXRpb24pOworCX0KKwkKKwkvKioKKwkgKiA8cD4KKyAgICAgKiBTZXQgdGhlIGNhbm9uaWNhbCBtYXRjaCBtb2RlLiBTZWUgY2xhc3MgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4KKyAgICAgKiBUaGUgZGVmYXVsdCBzZXR0aW5nIGZvciB0aGlzIHByb3BlcnR5IGlzIGZhbHNlLgorICAgICAqIDwvcD4KKwkgKiBAcGFyYW0gYWxsb3dDYW5vbmljYWwgZmxhZyBpbmRpY2F0b3IgaWYgY2Fub25pY2FsIG1hdGNoZXMgYXJlIGFsbG93ZWQKKyAgICAgKiBAc2VlICNpc0Nhbm9uaWNhbAorCSAqIEBkcmFmdCBJQ1UgMi4yCisJICovCisJcHVibGljIHZvaWQgc2V0Q2Fub25pY2FsKGJvb2xlYW4gYWxsb3dDYW5vbmljYWwpCisJeworCQltX2lzQ2Fub25pY2FsTWF0Y2hfID0gYWxsb3dDYW5vbmljYWw7CisJCWlmIChtX2lzQ2Fub25pY2FsTWF0Y2hfID09IHRydWUpIHsKKwkJCWlmIChtX2Nhbm9uaWNhbFByZWZpeEFjY2VudHNfID09IG51bGwpIHsKKwkJCQltX2Nhbm9uaWNhbFByZWZpeEFjY2VudHNfID0gbmV3IFN0cmluZ0J1ZmZlcigpOworCQkJfQorCQkJZWxzZSB7CisJCQkJbV9jYW5vbmljYWxQcmVmaXhBY2NlbnRzXy5kZWxldGUoMCwgCisJCQkJCQkJCQkJCW1fY2Fub25pY2FsUHJlZml4QWNjZW50c18ubGVuZ3RoKCkpOworCQkJfQorCQkJaWYgKG1fY2Fub25pY2FsU3VmZml4QWNjZW50c18gPT0gbnVsbCkgeworCQkJCW1fY2Fub25pY2FsU3VmZml4QWNjZW50c18gPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisJCQl9CisJCQllbHNlIHsKKwkJCQltX2Nhbm9uaWNhbFN1ZmZpeEFjY2VudHNfLmRlbGV0ZSgwLCAKKwkJCQkJCQkJCQkJbV9jYW5vbmljYWxTdWZmaXhBY2NlbnRzXy5sZW5ndGgoKSk7CisJCQl9CisJCX0KKwl9CisJCisJLy8gcHVibGljIG1pc2NlbGxhbmVvdXMgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCQorCS8qKiAKKwkgKiA8cD4KKyAgICAgKiBSZXNldHMgdGhlIHNlYXJjaCBpdGVyYXRpb24uIEFsbCBwcm9wZXJ0aWVzIHdpbGwgYmUgcmVzZXQgdG8gdGhlIAorICAgICAqIGRlZmF1bHQgdmFsdWUuCisgICAgICogPC9wPgorICAgICAqIDxwPgorICAgICAqIFNlYXJjaCB3aWxsIGJlZ2luIGF0IHRoZSBzdGFydCBvZiB0aGUgdGFyZ2V0IHRleHQgaWYgYSBmb3J3YXJkIGl0ZXJhdGlvbiAKKyAgICAgKiBpcyBpbml0aWF0ZWQgYmVmb3JlIGEgYmFja3dhcmRzIGl0ZXJhdGlvbi4gT3RoZXJ3aXNlIGlmIGEgCisgICAgICogYmFja3dhcmRzIGl0ZXJhdGlvbiBpcyBpbml0aWF0ZWQgYmVmb3JlIGEgZm9yd2FyZHMgaXRlcmF0aW9uLCB0aGUgc2VhcmNoIAorICAgICAqIHdpbGwgYmVnaW4gYXQgdGhlIGVuZCBvZiB0aGUgdGFyZ2V0IHRleHQuCisgICAgICogPC9wPgorICAgICAqIDxwPgorICAgICAqIENhbm9uaWNhbCBtYXRjaCBvcHRpb24gd2lsbCBiZSByZXNldCB0byBmYWxzZSwgaWUgYW4gZXhhY3QgbWF0Y2guCisgICAgICogPC9wPgorCSAqIEBkcmFmdCBJQ1UgMi4yCisJICovCisJcHVibGljIHZvaWQgcmVzZXQoKQorCXsKKwkJLy8gcmVzZXQgaXMgc2V0dGluZyB0aGUgYXR0cmlidXRlcyB0aGF0IGFyZSBhbHJlYWR5IGluIHN0cmluZyBzZWFyY2gsIAorCQkvLyBoZW5jZSBhbGwgYXR0cmlidXRlcyBpbiB0aGUgY29sbGF0b3Igc2hvdWxkIGJlIHJldHJpZXZlZCB3aXRob3V0IGFueSAKKwkJLy8gcHJvYmxlbXMKKwkJc3VwZXIucmVzZXQoKTsKKyAgICAgICAgbV9pc0Nhbm9uaWNhbE1hdGNoXyA9IGZhbHNlOworICAgICAgICBtX2NlTWFza18gPSBnZXRNYXNrKG1fY29sbGF0b3JfLmdldFN0cmVuZ3RoKCkpOworICAgICAgICAvLyBpZiBzdGF0dXMgaXMgYSBmYWlsdXJlLCB1Y29sX2dldEF0dHJpYnV0ZSByZXR1cm5zIFVDT0xfREVGQVVMVAorICAgICAgICBpbml0aWFsaXplKCk7CisgICAgICAgIG1fY29sRUl0ZXJfLnNldENvbGxhdG9yKG1fY29sbGF0b3JfKTsKKyAgICAgICAgbV9jb2xFSXRlcl8ucmVzZXQoKTsKKyAgICAgICAgbV91dGlsQ29sRUl0ZXJfLnNldENvbGxhdG9yKG1fY29sbGF0b3JfKTsKKwl9CisKKyAgICAvLyBwcm90ZWN0ZWQgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIC8qKgorICAgICAqIDxwPgorICAgICAqIENvbmNyZXRlIG1ldGhvZCB0byBwcm92aWRlIHRoZSBtZWNoYW5pc20gCisgICAgICogZm9yIGZpbmRpbmcgdGhlIG5leHQgPGI+Zm9yd2FyZHM8L2I+IG1hdGNoIGluIHRoZSB0YXJnZXQgdGV4dC4KKyAgICAgKiBTZWUgc3VwZXIgY2xhc3MgZG9jdW1lbnRhdGlvbiBmb3IgaXRzIHVzZS4KKyAgICAgKiA8L3A+ICAKKyAgICAgKiBAcGFyYW0gc3RhcnQgaW5kZXggaW4gdGhlIHRhcmdldCB0ZXh0IGF0IHdoaWNoIHRoZSBmb3J3YXJkcyBzZWFyY2ggCisgICAgICogICAgICAgIHNob3VsZCBiZWdpbi4KKyAgICAgKiBAcmV0dXJuIHRoZSBzdGFydGluZyBpbmRleCBvZiB0aGUgbmV4dCBmb3J3YXJkcyBtYXRjaCBpZiBmb3VuZCwgRE9ORSAKKyAgICAgKiAgICAgICAgIG90aGVyd2lzZQorICAgICAqIEBzZWUgI2hhbmRsZVByZXZpb3VzKGludCkKKyAgICAgKiBAc2VlICNET05FCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgaW50IGhhbmRsZU5leHQoaW50IHN0YXJ0KQorICAgIHsKKyAgICAJaWYgKG1fcGF0dGVybl8ubV9DRUxlbmd0aF8gPT0gMCkgeworICAgICAgICAgICAgbWF0Y2hMZW5ndGggPSAwOworICAgICAgICAgICAgaWYgKG1fbWF0Y2hlZEluZGV4XyA9PSBET05FICYmIHN0YXJ0ID09IG1fdGV4dEJlZ2luT2Zmc2V0XykgeworICAgICAgICAgICAgICAgIG1fbWF0Y2hlZEluZGV4XyA9IHN0YXJ0OworICAgICAgICAgICAgICAgIHJldHVybiBtX21hdGNoZWRJbmRleF87CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAJCXRhcmdldFRleHQuc2V0SW5kZXgoc3RhcnQpOworCSAgICAgICAgY2hhciBjaCA9IHRhcmdldFRleHQuY3VycmVudCgpOworCSAgICAgICAgLy8gY2ggY2FuIG5ldmVyIGJlIGRvbmUsIGl0IGlzIGhhbmRsZWQgYnkgbmV4dCgpCisJICAgICAgICBjaGFyIGNoMiA9IHRhcmdldFRleHQubmV4dCgpOworCSAgICAgICAgaWYgKGNoMiA9PSBDaGFyYWN0ZXJJdGVyYXRvci5ET05FKSB7CisJICAgICAgICAgICAgbV9tYXRjaGVkSW5kZXhfID0gRE9ORTsJCisJICAgICAgICB9CisJICAgICAgICBlbHNlIHsKKwkgICAgICAgICAgICBtX21hdGNoZWRJbmRleF8gPSB0YXJnZXRUZXh0LmdldEluZGV4KCk7CisJICAgICAgICB9CisJICAgICAgICBpZiAoVVRGMTYuaXNMZWFkU3Vycm9nYXRlKGNoKSAmJiBVVEYxNi5pc1RyYWlsU3Vycm9nYXRlKGNoMikpIHsKKwkgICAgICAgICAgICB0YXJnZXRUZXh0Lm5leHQoKTsKKwkgICAgICAgICAgICBtX21hdGNoZWRJbmRleF8gPSB0YXJnZXRUZXh0LmdldEluZGV4KCk7CisJICAgICAgICB9CisJICAgIH0KKwkgICAgZWxzZSB7CisJICAgIAlpZiAobWF0Y2hMZW5ndGggPD0gMCkgeworICAgICAgICAgICAgICAgIC8vIHdlIG11c3QgaGF2ZSByZXZlcnNlZCBkaXJlY3Rpb24gYWZ0ZXIgd2UgcmVhY2hlZCB0aGUgc3RhcnQKKyAgICAgICAgICAgICAgICAvLyBvZiB0aGUgdGFyZ2V0IHRleHQKKyAgICAgICAgICAgICAgICAvLyBzZWUgU2VhcmNoSXRlcmF0b3IgbmV4dCgpLCBpdCBjaGVja3MgdGhlIGJvdW5kcyBhbmQgcmV0dXJucworICAgICAgICAgICAgICAgIC8vIGlmIGl0IGV4Y2VlZHMgdGhlIHJhbmdlLiBJdCBkb2VzIG5vdCBhbGxvdyBzZXR0aW5nIG9mCisgICAgICAgICAgICAgICAgLy8gbV9tYXRjaGVkSW5kZXgKKyAgICAgICAgICAgICAgICBtX21hdGNoZWRJbmRleF8gPSBET05FOworICAgICAgICAgICAgfQorICAgIAorCSAgICAgICAgLy8gc3RhdHVzIGNoZWNrZWQgYmVsb3cKKwkgICAgICAgIGlmIChtX2lzQ2Fub25pY2FsTWF0Y2hfKSB7CisJICAgICAgICAgICAgLy8gY2FuJ3QgdXNlIGV4YWN0IGhlcmUgc2luY2UgZXh0cmEgYWNjZW50cyBhcmUgYWxsb3dlZC4KKwkgICAgICAgICAgICBoYW5kbGVOZXh0Q2Fub25pY2FsKHN0YXJ0KTsKKwkgICAgICAgIH0KKwkgICAgICAgIGVsc2UgeworCSAgICAgICAgICAgIGhhbmRsZU5leHRFeGFjdChzdGFydCk7CisJICAgICAgICB9CisJICAgIH0KKyAgICAgICAgaWYgKG1fbWF0Y2hlZEluZGV4XyA9PSBET05FKSB7CisgICAgICAgICAgICB0YXJnZXRUZXh0LnNldEluZGV4KG1fdGV4dExpbWl0T2Zmc2V0Xyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0YXJnZXRUZXh0LnNldEluZGV4KG1fbWF0Y2hlZEluZGV4Xyk7CisgICAgICAgIH0KKyAgICAJcmV0dXJuIG1fbWF0Y2hlZEluZGV4XzsKKyAgICB9CisgICAgCisgICAgLyoqCisJICogPHA+CisgICAgICogQ29uY3JldGUgbWV0aG9kIHRvIHByb3ZpZGUgdGhlIG1lY2hhbmlzbSAKKyAgICAgKiBmb3IgZmluZGluZyB0aGUgbmV4dCA8Yj5iYWNrd2FyZHM8L2I+IG1hdGNoIGluIHRoZSB0YXJnZXQgdGV4dC4KKyAgICAgKiBTZWUgc3VwZXIgY2xhc3MgZG9jdW1lbnRhdGlvbiBmb3IgaXRzIHVzZS4KKyAgICAgKiA8L3A+ICAKKyAgICAgKiBAcGFyYW0gc3RhcnQgaW5kZXggaW4gdGhlIHRhcmdldCB0ZXh0IGF0IHdoaWNoIHRoZSBiYWNrd2FyZHMgc2VhcmNoIAorICAgICAqICAgICAgICBzaG91bGQgYmVnaW4uCisgICAgICogQHJldHVybiB0aGUgc3RhcnRpbmcgaW5kZXggb2YgdGhlIG5leHQgYmFja3dhcmRzIG1hdGNoIGlmIGZvdW5kLCBET05FIAorICAgICAqICAgICAgICAgb3RoZXJ3aXNlCisgICAgICogQHNlZSAjaGFuZGxlTmV4dChpbnQpCisgICAgICogQHNlZSAjRE9ORQorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisJICovCisgICAgcHJvdGVjdGVkIGludCBoYW5kbGVQcmV2aW91cyhpbnQgc3RhcnQpCisgICAgeworICAgIAlpZiAobV9wYXR0ZXJuXy5tX0NFTGVuZ3RoXyA9PSAwKSB7CisgICAgICAgICAgICBtYXRjaExlbmd0aCA9IDA7CisJICAgICAgICAvLyBzdGFydCBjYW4gbmV2ZXIgYmUgRE9ORSBvciAwLCBpdCBpcyBoYW5kbGVkIGluIHByZXZpb3VzCisgICAgICAgICAgICB0YXJnZXRUZXh0LnNldEluZGV4KHN0YXJ0KTsKKyAgICAgICAgICAgIGNoYXIgY2ggPSB0YXJnZXRUZXh0LnByZXZpb3VzKCk7CisgICAgICAgICAgICBpZiAoY2ggPT0gQ2hhcmFjdGVySXRlcmF0b3IuRE9ORSkgeworICAgICAgICAgICAgCW1fbWF0Y2hlZEluZGV4XyA9IERPTkU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIAltX21hdGNoZWRJbmRleF8gPSB0YXJnZXRUZXh0LmdldEluZGV4KCk7CisJICAgICAgICAgICAgaWYgKFVURjE2LmlzVHJhaWxTdXJyb2dhdGUoY2gpKSB7CisJICAgICAgICAgICAgCWlmIChVVEYxNi5pc0xlYWRTdXJyb2dhdGUodGFyZ2V0VGV4dC5wcmV2aW91cygpKSkgeworCSAgICAgICAgICAgICAgICAgICAgbV9tYXRjaGVkSW5kZXhfID0gdGFyZ2V0VGV4dC5nZXRJbmRleCgpOworCSAgICAgICAgICAgIAl9CisJICAgICAgICAgICAgfQorICAgICAgICAgICAgfSAgICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKG1hdGNoTGVuZ3RoID09IDApIHsKKyAgICAgICAgICAgICAgICAvLyB3ZSBtdXN0IGhhdmUgcmV2ZXJzZWQgZGlyZWN0aW9uIGFmdGVyIHdlIHJlYWNoZWQgdGhlIGVuZAorICAgICAgICAgICAgICAgIC8vIG9mIHRoZSB0YXJnZXQgdGV4dAorICAgICAgICAgICAgICAgIC8vIHNlZSBTZWFyY2hJdGVyYXRvciBuZXh0KCksIGl0IGNoZWNrcyB0aGUgYm91bmRzIGFuZCByZXR1cm5zCisgICAgICAgICAgICAgICAgLy8gaWYgaXQgZXhjZWVkcyB0aGUgcmFuZ2UuIEl0IGRvZXMgbm90IGFsbG93IHNldHRpbmcgb2YKKyAgICAgICAgICAgICAgICAvLyBtX21hdGNoZWRJbmRleAorICAgICAgICAgICAgICAgIG1fbWF0Y2hlZEluZGV4XyA9IERPTkU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobV9pc0Nhbm9uaWNhbE1hdGNoXykgeworICAgICAgICAgICAgICAgIC8vIGNhbid0IHVzZSBleGFjdCBoZXJlIHNpbmNlIGV4dHJhIGFjY2VudHMgYXJlIGFsbG93ZWQuCisgICAgICAgICAgICAgICAgaGFuZGxlUHJldmlvdXNDYW5vbmljYWwoc3RhcnQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaGFuZGxlUHJldmlvdXNFeGFjdChzdGFydCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAobV9tYXRjaGVkSW5kZXhfID09IERPTkUpIHsKKyAgICAgICAgICAgIHRhcmdldFRleHQuc2V0SW5kZXgobV90ZXh0QmVnaW5PZmZzZXRfKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRhcmdldFRleHQuc2V0SW5kZXgobV9tYXRjaGVkSW5kZXhfKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbV9tYXRjaGVkSW5kZXhfOworICAgIH0KKworICAgIC8vIHByaXZhdGUgc3RhdGljIGlubmVyIGNsYXNzZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIFBhdHRlcm4gCisgICAgeworICAgIAkvLyBwcm90ZWN0ZWQgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAkKKyAgICAJLyoqCisgICAgCSAqIFBhdHRlcm4gc3RyaW5nCisgICAgCSAqLworICAgIAlwcm90ZWN0ZWQgU3RyaW5nIHRhcmdldFRleHQ7CisgICAgICAgIC8qKgorICAgICAgICAgKiBBcnJheSBjb250YWluaW5nIHRoZSBjb2xsYXRpb24gZWxlbWVudHMgb2YgdGFyZ2V0VGV4dAorICAgICAgICAgKi8KKyAgICAgICAgcHJvdGVjdGVkIGludCBtX0NFX1tdOworICAgICAgICAvKioKKyAgICAgICAgICogTnVtYmVyIG9mIGNvbGxhdGlvbiBlbGVtZW50cyBpbiBtX0NFXworICAgICAgICAgKi8KKyAgICAgICAgcHJvdGVjdGVkIGludCBtX0NFTGVuZ3RoXzsgCisgICAgICAgIC8qKgorICAgICAgICAgKiBGbGFnIGluZGljYXRvciBpZiB0YXJnZXRUZXh0IHN0YXJ0cyB3aXRoIGFuIGFjY2VudAorICAgICAgICAgKi8KKyAgICAgICAgcHJvdGVjdGVkIGJvb2xlYW4gbV9oYXNQcmVmaXhBY2NlbnRzXzsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEZsYWcgaW5kaWNhdG9yIGlmIHRhcmdldFRleHQgZW5kcyB3aXRoIGFuIGFjY2VudAorICAgICAgICAgKi8KKyAgICAgICAgcHJvdGVjdGVkIGJvb2xlYW4gbV9oYXNTdWZmaXhBY2NlbnRzXzsKKyAgICAgICAgLyoqCisgICAgICAgICAqIERlZmF1bHQgbnVtYmVyIG9mIGNoYXJhY3RlcnMgdG8gc2hpZnQgZm9yIEJveWVyIE1vb3JlCisgICAgICAgICAqLworICAgICAgICBwcm90ZWN0ZWQgaW50IG1fZGVmYXVsdFNoaWZ0U2l6ZV87CisgICAgICAgIC8qKgorICAgICAgICAgKiBOdW1iZXIgb2YgY2hhcmFjdGVycyB0byBzaGlmdCBmb3IgQm95ZXIgTW9vcmUsIGRlcGVuZGluZyBvbiB0aGUKKyAgICAgICAgICogc291cmNlIHRleHQgdG8gc2VhcmNoCisgICAgICAgICAqLworICAgICAgICBwcm90ZWN0ZWQgY2hhciBtX3NoaWZ0X1tdOworICAgICAgICAvKioKKyAgICAgICAgICogTnVtYmVyIG9mIGNoYXJhY3RlcnMgdG8gc2hpZnQgYmFja3dhcmRzIGZvciBCb3llciBNb29yZSwgZGVwZW5kaW5nIAorICAgICAgICAgKiBvbiB0aGUgc291cmNlIHRleHQgdG8gc2VhcmNoCisgICAgICAgICAqLworICAgICAgICBwcm90ZWN0ZWQgY2hhciBtX2JhY2tTaGlmdF9bXTsKKyAgICAgICAgCisgICAgICAgIC8vIHByb3RlY3RlZCBjb25zdHJ1Y3RvcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgIAorICAgICAgICAvKioKKyAgICAgICAgICogRW1wdHkgY29uc3RydWN0b3IgCisgICAgICAgICAqLworICAgICAgICBwcm90ZWN0ZWQgUGF0dGVybihTdHJpbmcgcGF0dGVybikgCisgICAgICAgIHsKKyAgICAgICAgCXRhcmdldFRleHQgPSBwYXR0ZXJuOworICAgICAgICAJbV9DRV8gPSBuZXcgaW50W0lOSVRJQUxfQVJSQVlfU0laRV9dOwkKKyAgICAgICAgCW1fQ0VMZW5ndGhfID0gMDsKKyAgICAgICAgCW1faGFzUHJlZml4QWNjZW50c18gPSBmYWxzZTsKKyAgICAgICAgCW1faGFzU3VmZml4QWNjZW50c18gPSBmYWxzZTsKKyAgICAgICAgCW1fZGVmYXVsdFNoaWZ0U2l6ZV8gPSAxOwkJCisgICAgICAgIAltX3NoaWZ0XyA9IG5ldyBjaGFyW01BWF9UQUJMRV9TSVpFX107CisgICAgICAgIAltX2JhY2tTaGlmdF8gPSBuZXcgY2hhcltNQVhfVEFCTEVfU0laRV9dOworICAgICAgICB9CisgICAgfTsKKworCisgICAgLy8gcHJpdmF0ZSBkYXRhIG1lbWJlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgICogdGFyZ2V0IHRleHQgYmVnaW4gb2Zmc2V0LiBFYWNoIHRhcmdldFRleHQgaGFzIGEgdmFsaWQgY29udGlndW91cyByZWdpb24gCisgICAgICogdG8gaXRlcmF0ZSBhbmQgdGhpcyBkYXRhIG1lbWJlciBpcyB0aGUgb2Zmc2V0IHRvIHRoZSBmaXJzdCBzdWNoCisgICAgICogY2hhcmFjdGVyIGluIHRoZSByZWdpb24uCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgbV90ZXh0QmVnaW5PZmZzZXRfOworICAgIC8qKgorICAgICAqIHRhcmdldCB0ZXh0IGxpbWl0IG9mZnNldC4gRWFjaCB0YXJnZXRUZXh0IGhhcyBhIHZhbGlkIGNvbnRpZ3VvdXMgcmVnaW9uIAorICAgICAqIHRvIGl0ZXJhdGUgYW5kIHRoaXMgZGF0YSBtZW1iZXIgaXMgdGhlIG9mZnNldCB0byAxIGFmdGVyIHRoZSBsYXN0IHN1Y2gKKyAgICAgKiBjaGFyYWN0ZXIgaW4gdGhlIHJlZ2lvbi4KKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBtX3RleHRMaW1pdE9mZnNldF87CisgICAgLyoqCisgICAgICogVXBvbiBjb21wbGV0aW9uIG9mIGEgc2VhcmNoLCBtX21hdGNoSW5kZXhfIHdpbGwgc3RvcmUgc3RhcnRpbmcgb2Zmc2V0IGluCisgICAgICogbV90ZXh0IGZvciB0aGUgbWF0Y2guIFRoZSBWYWx1ZSBET05FIGlzIHRoZSBkZWZhdWx0IHZhbHVlLiAKKyAgICAgKiBJZiB3ZSBhcmUgbm90IGF0IHRoZSBzdGFydCBvZiB0aGUgdGV4dCBvciB0aGUgZW5kIG9mIHRoZSB0ZXh0IGFuZCAKKyAgICAgKiBtX21hdGNoZWRJbmRleF8gaXMgRE9ORSBpdCBtZWFucyB0aGF0IHdlIGNhbiBmaW5kIGFueSBtb3JlIG1hdGNoZXMgaW4gCisgICAgICogdGhhdCBwYXJ0aWN1bGFyIGRpcmVjdGlvbgorICAgICAqLworICAgIHByaXZhdGUgaW50IG1fbWF0Y2hlZEluZGV4XzsgCisgICAgLyoqCisgICAgICogQ3VycmVudCBwYXR0ZXJuIHRvIHNlYXJjaCBmb3IKKyAgICAgKi8KKyAgICBwcml2YXRlIFBhdHRlcm4gbV9wYXR0ZXJuXzsKKyAgICAvKioKKyAgICAgKiBDb2xsYXRvciB3aG9zZSBydWxlcyBhcmUgdXNlZCB0byBwZXJmb3JtIHRoZSBzZWFyY2gKKyAgICAgKi8KKyAgICBwcml2YXRlIFJ1bGVCYXNlZENvbGxhdG9yIG1fY29sbGF0b3JfOworICAgIC8qKiAKKyAgICAgKiBUaGUgY29sbGF0aW9uIGVsZW1lbnQgaXRlcmF0b3IgZm9yIHRoZSB0ZXh0IHNvdXJjZS4KKyAgICAgKi8KKyAgICBwcml2YXRlIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvciBtX2NvbEVJdGVyXzsKKyAgICAvKiogCisgICAgICogVXRpbGl0eSBjb2xsYXRpb24gZWxlbWVudCwgdXNlZCB0aHJvdWdob3V0IHByb2dyYW0gZm9yIHRlbXBvcmFyeSAKKyAgICAgKiBpdGVyYXRpb24uCisgICAgICovCisgICAgcHJpdmF0ZSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IgbV91dGlsQ29sRUl0ZXJfOworICAgIC8qKgorICAgICAqIFRoZSBtYXNrIHVzZWQgb24gdGhlIGNvbGxhdGlvbiBlbGVtZW50cyB0byByZXRyaWV2ZSB0aGUgdmFsaWQgc3RyZW5ndGgKKyAgICAgKiB3ZWlnaHQgCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgbV9jZU1hc2tfOworICAgIC8qKgorICAgICAqIEJ1ZmZlciBzdG9yaW5nIGFjY2VudHMgZHVyaW5nIGEgY2Fub25pY2FsIHNlYXJjaAorICAgICAqLworICAgIHByaXZhdGUgU3RyaW5nQnVmZmVyIG1fY2Fub25pY2FsUHJlZml4QWNjZW50c187CisgICAgLyoqCisgICAgICogQnVmZmVyIHN0b3JpbmcgYWNjZW50cyBkdXJpbmcgYSBjYW5vbmljYWwgc2VhcmNoCisgICAgICovCisgICAgcHJpdmF0ZSBTdHJpbmdCdWZmZXIgbV9jYW5vbmljYWxTdWZmaXhBY2NlbnRzXzsKKyAgICAvKioKKyAgICAgKiBGbGFnIHRvIGluZGljYXRlIGlmIGNhbm9uaWNhbCBzZWFyY2ggaXMgdG8gYmUgZG9uZS4KKyAgICAgKiBFLmcgbG9va2luZyBmb3IgImFcdTAzMDAiIGluICJhXHUwMzE4XHUwMzAwIiB3aWxsIHlpZWxkIHRoZSBtYXRjaCBhdCAwLgorICAgICAqLworICAgIHByaXZhdGUgYm9vbGVhbiBtX2lzQ2Fub25pY2FsTWF0Y2hfOworICAgIC8qKgorICAgICAqIFNpemUgb2YgdGhlIHNoaWZ0IHRhYmxlcworICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNQVhfVEFCTEVfU0laRV8gPSAyNTc7IAorICAgIC8qKgorICAgICAqIEluaXRpYWwgYXJyYXkgc2l6ZQorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBJTklUSUFMX0FSUkFZX1NJWkVfID0gMjU2OworICAgIC8qKgorICAgICAqIFV0aWxpdHkgbWFzaworICAgICAqLworCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTRUNPTkRfTEFTVF9CWVRFX1NISUZUXyA9IDg7CisJLyoqCisgICAgICogVXRpbGl0eSBtYXNrCisgICAgICovCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExBU1RfQllURV9NQVNLXyA9IDB4ZmY7CisJLyoqCisJICogVXRpbGl0eSBidWZmZXIgZm9yIHJldHVybiB2YWx1ZXMgYW5kIHRlbXBvcmFyeSBzdG9yYWdlCisJICovCisJcHJpdmF0ZSBpbnQgbV91dGlsQnVmZmVyX1tdID0gbmV3IGludFsyXTsKKworCS8vIHByaXZhdGUgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBIYXNoIGEgY29sbGF0aW9uIGVsZW1lbnQgZnJvbSBpdHMgZnVsbCBzaXplICgzMiBiaXRzKSBkb3duIGludG8gYQorICAgICAqIHZhbHVlIHRoYXQgY2FuIGJlIHVzZWQgYXMgYW4gaW5kZXggaW50byB0aGUgc2hpZnQgdGFibGVzLiAgUmlnaHQKKyAgICAgKiBub3cgd2UgZG8gYSBtb2R1bHVzIGJ5IHRoZSBzaXplIG9mIHRoZSBoYXNoIHRhYmxlLgorICAgICAqIEBwYXJhbSBjZSBjb2xsYXRpb24gZWxlbWVudAorCSAqIEByZXR1cm4gY29sbGFwc2VkIHZlcnNpb24gb2YgdGhlIGNvbGxhdGlvbiBlbGVtZW50CisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IGhhc2goaW50IGNlKSAKKyAgICB7CisgICAgICAgIC8vIHRoZSBvbGQgdmFsdWUgVUNPTF9QUklNQVJZT1JERVIoY2UpICUgTUFYX1RBQkxFX1NJWkVfIGRvZXMgbm90IHdvcmsKKyAgICAJLy8gd2VsbCB3aXRoIHRoZSBuZXcgY29sbGF0aW9uIHdoZXJlIG1vc3Qgb2YgdGhlIGxhdGluIDEgY2hhcmFjdGVycworICAgIAkvLyBhcmUgb2YgdGhlIHZhbHVlIHh4MDAweHh4LiB0aGVpciBoYXNoZXMgd2lsbCBtb3N0IG9mIHRoZSB0aW1lIGJlIDAKKyAgICAJLy8gdG8gYmUgZGlzY3Vzc2VkIG9uIHRoZSBoYXNoIGFsZ28uCisgICAgCXJldHVybiBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IucHJpbWFyeU9yZGVyKGNlKSAlIE1BWF9UQUJMRV9TSVpFXzsKKyAgICB9CisgICAgCisgICAgLyoqCisJICogR2V0cyB0aGUgZmNkIHZhbHVlIGZvciBhIGNoYXJhY3RlciBhdCB0aGUgYXJndW1lbnQgaW5kZXguCisJICogVGhpcyBtZXRob2QgdGFrZXMgaW50byBhY2NvdW50cyBvZiB0aGUgc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXJzLgorCSAqIE5vdGUgdGhpcyBtZXRob2QgY2hhbmdlcyB0aGUgb2Zmc2V0IGluIHRoZSBjaGFyYWN0ZXIgaXRlcmF0b3IuCisJICogQHBhcmFtIHN0ciBVVEYxNiBzdHJpbmcgd2hlcmUgY2hhcmFjdGVyIGZvciBmY2QgcmV0cmlldmFsIHJlc2lkZXMKKwkgKiBAcGFyYW0gb2Zmc2V0IHBvc2l0aW9uIG9mIHRoZSBjaGFyYWN0ZXIgd2hvc2UgZmNkIGlzIHRvIGJlIHJldHJpZXZlZAorCSAqIEByZXR1cm4gZmNkIHZhbHVlCisJICovCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciBnZXRGQ0QoQ2hhcmFjdGVySXRlcmF0b3Igc3RyLCBpbnQgb2Zmc2V0KQorCXsKKwkgICAgc3RyLnNldEluZGV4KG9mZnNldCk7CisJICAgIGNoYXIgY2ggPSBzdHIuY3VycmVudCgpOworCSAgICBjaGFyIHJlc3VsdCA9IE5vcm1hbGl6ZXJJbXBsLmdldEZDRDE2KGNoKTsKKwkgICAgCisJICAgIGlmICgocmVzdWx0ICE9IDApICYmIChzdHIuZ2V0RW5kSW5kZXgoKSAhPSBvZmZzZXQgKyAxKSAmJiAKKwkgICAgCVVURjE2LmlzTGVhZFN1cnJvZ2F0ZShjaCkpIHsKKwkgICAgICAgIGNoID0gc3RyLm5leHQoKTsKKwkgICAgICAgIGlmIChVVEYxNi5pc1RyYWlsU3Vycm9nYXRlKGNoKSkgeworCSAgICAgICAgICAgIHJlc3VsdCA9IE5vcm1hbGl6ZXJJbXBsLmdldEZDRDE2RnJvbVN1cnJvZ2F0ZVBhaXIocmVzdWx0LCBjaCk7CisJICAgICAgICB9IGVsc2UgeworCSAgICAgICAgICAgIHJlc3VsdCA9IDA7CisJICAgICAgICB9CisJICAgIH0KKwkgICAgcmV0dXJuIHJlc3VsdDsKKwl9CisJCisJLyoqCisJICogR2V0cyB0aGUgZmNkIHZhbHVlIGZvciBhIGNoYXJhY3RlciBhdCB0aGUgYXJndW1lbnQgaW5kZXguCisJICogVGhpcyBtZXRob2QgdGFrZXMgaW50byBhY2NvdW50cyBvZiB0aGUgc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXJzLgorCSAqIEBwYXJhbSBzdHIgVVRGMTYgc3RyaW5nIHdoZXJlIGNoYXJhY3RlciBmb3IgZmNkIHJldHJpZXZhbCByZXNpZGVzCisJICogQHBhcmFtIG9mZnNldCBwb3NpdGlvbiBvZiB0aGUgY2hhcmFjdGVyIHdob3NlIGZjZCBpcyB0byBiZSByZXRyaWV2ZWQKKwkgKiBAcmV0dXJuIGZjZCB2YWx1ZQorCSAqLworCXByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgZ2V0RkNEKFN0cmluZyBzdHIsIGludCBvZmZzZXQpCisJeworCSAgICBjaGFyIGNoID0gc3RyLmNoYXJBdChvZmZzZXQpOworCSAgICBjaGFyIHJlc3VsdCA9IE5vcm1hbGl6ZXJJbXBsLmdldEZDRDE2KGNoKTsKKwkgICAgCisJICAgIGlmICgocmVzdWx0ICE9IDApICYmIChzdHIubGVuZ3RoKCkgIT0gb2Zmc2V0ICsgMSkgJiYgCisJICAgIAlVVEYxNi5pc0xlYWRTdXJyb2dhdGUoY2gpKSB7CisJICAgICAgICBjaCA9IHN0ci5jaGFyQXQob2Zmc2V0ICsgMSk7CisJICAgICAgICBpZiAoVVRGMTYuaXNUcmFpbFN1cnJvZ2F0ZShjaCkpIHsKKwkgICAgICAgICAgICByZXN1bHQgPSBOb3JtYWxpemVySW1wbC5nZXRGQ0QxNkZyb21TdXJyb2dhdGVQYWlyKHJlc3VsdCwgY2gpOworCSAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAgICByZXN1bHQgPSAwOworCSAgICAgICAgfQorCSAgICB9CisJICAgIHJldHVybiByZXN1bHQ7CisJfQorCQorCS8qKgorCSogR2V0dGluZyB0aGUgbW9kaWZpZWQgY29sbGF0aW9uIGVsZW1lbnRzIHRha2luZyBpbnRvIGFjY291bnQgdGhlIGNvbGxhdGlvbiAKKwkqIGF0dHJpYnV0ZXMKKwkqIEBwYXJhbSBjZSAKKwkqIEByZXR1cm4gdGhlIG1vZGlmaWVkIGNvbGxhdGlvbiBlbGVtZW50CisJKi8KKwlwcml2YXRlIGZpbmFsIGludCBnZXRDRShpbnQgY2UpCisJeworCSAgICAvLyBub3RlIGZvciB0ZXJ0aWFyeSB3ZSBjYW4ndCB1c2UgdGhlIGNvbGxhdG9yLT50ZXJ0aWFyeU1hc2ssIHRoYXQKKwkgICAgLy8gaXMgYSBwcmVwcm9jZXNzZWQgbWFzayB0aGF0IHRha2VzIGludG8gYWNjb3VudCBjYXNlIG9wdGlvbnMuIHNpbmNlCisJICAgIC8vIHdlIGFyZSBvbmx5IGNvbmNlcm5lZCB3aXRoIGV4YWN0IG1hdGNoZXMsIHdlIGRvbid0IG5lZWQgdGhhdC4KKwkgICAgY2UgJj0gbV9jZU1hc2tfOworCSAgICAKKwkgICAgaWYgKG1fY29sbGF0b3JfLmlzQWx0ZXJuYXRlSGFuZGxpbmdTaGlmdGVkKCkpIHsKKwkgICAgICAgIC8vIGFsdGVybmF0ZSBoYW5kbGluZyBoZXJlLCBzaW5jZSBvbmx5IHRoZSAxNiBtb3N0IHNpZ25pZmljYW50IAorCSAgICAgICAgLy8gZGlnaXRzIGlzIG9ubHkgdXNlZCwgd2UgY2FuIHNhZmVseSBkbyBhIGNvbXBhcmUgd2l0aG91dCBtYXNraW5nCisJICAgICAgICAvLyBpZiB0aGUgY2UgaXMgYSB2YXJpYWJsZSwgd2UgbWFzayBhbmQgZ2V0IG9ubHkgdGhlIHByaW1hcnkgdmFsdWVzCisJICAgICAgICAvLyBubyBzaGlmdGluZyB0byBxdWFydGVuYXJ5IGlzIHJlcXVpcmVkIHNpbmNlIGFsbCBwcmltYXJ5IHZhbHVlcworCSAgICAgICAgLy8gbGVzcyB0aGFuIHZhcmlhYmxldG9wIHdpbGwgbmVlZCB0byBiZSBtYXNrZWQgb2ZmIGFueXdheS4KKwkgICAgICAgIGlmICgobV9jb2xsYXRvcl8ubV92YXJpYWJsZVRvcFZhbHVlXyAgPDwgMTYpID4gY2UpIHsKKwkgICAgICAgICAgICBpZiAobV9jb2xsYXRvcl8uZ2V0U3RyZW5ndGgoKSA9PSBDb2xsYXRvci5RVUFURVJOQVJZKSB7CisJICAgICAgICAgICAgICAgIGNlID0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLnByaW1hcnlPcmRlcihjZSk7CisJICAgICAgICAgICAgfQorCSAgICAgICAgICAgIGVsc2UgeyAKKwkgICAgICAgICAgICAgICAgY2UgPSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuSUdOT1JBQkxFOworCSAgICAgICAgICAgIH0KKwkgICAgICAgIH0KKwkgICAgfQorCQorCSAgICByZXR1cm4gY2U7CisJfQorCQorCS8qKgorCSAqIEFwcGVuZHMgYSBpbnQgdG8gYSBpbnQgYXJyYXksIGluY3JlYXNpbmcgdGhlIHNpemUgb2YgdGhlIGFycmF5IHdoZW4gCisJICogd2UgYXJlIG91dCBvZiBzcGFjZS4KKwkgKiBAcGFyYW0gb2Zmc2V0IGluIGFycmF5IHRvIGFwcGVuZCB0bworCSAqIEBwYXJhbSB2YWx1ZSB0byBhcHBlbmQKKwkgKiBAcGFyYW0gYXJyYXkgdG8gYXBwZW5kIHRvCisJICogQHJldHVybiB0aGUgYXJyYXkgYXBwZW5kZWQgdG8sIHRoaXMgY291bGQgYmUgYSBuZXcgYW5kIGJpZ2dlciBhcnJheQorCSAqLworCXByaXZhdGUgc3RhdGljIGZpbmFsIGludFtdIGFwcGVuZChpbnQgb2Zmc2V0LCBpbnQgdmFsdWUsIGludCBhcnJheVtdKQorCXsKKwkJaWYgKG9mZnNldCA+PSBhcnJheS5sZW5ndGgpIHsKKwkJCWludCB0ZW1wW10gPSBuZXcgaW50W29mZnNldCArIElOSVRJQUxfQVJSQVlfU0laRV9dOworCQkJU3lzdGVtLmFycmF5Y29weShhcnJheSwgMCwgdGVtcCwgMCwgYXJyYXkubGVuZ3RoKTsKKwkJCWFycmF5ID0gdGVtcDsKKwkJfQorCQlhcnJheVtvZmZzZXRdID0gdmFsdWU7CisJCXJldHVybiBhcnJheTsKKwl9CisJCisJLyoqCisJICogSW5pdGlhbGl6aW5nIHRoZSBjZSB0YWJsZSBmb3IgYSBwYXR0ZXJuLiBTdG9yZXMgbm9uLWlnbm9yYWJsZSBjb2xsYXRpb24gCisJICoga2V5cy4gVGFibGUgc2l6ZSB3aWxsIGJlIGVzdGltYXRlZCBieSB0aGUgc2l6ZSBvZiB0aGUgcGF0dGVybiB0ZXh0LiAKKwkgKiBUYWJsZSBleHBhbnNpb24gd2lsbCBiZSBwZXJmb3JtIGFzIHdlIGdvIGFsb25nLiBBZGRpbmcgMSB0byBlbnN1cmUgdGhhdCAKKwkgKiB0aGUgdGFibGUgc2l6ZSBkZWZpbml0ZWx5IGluY3JlYXNlcy4KKwkgKiBJbnRlcm5hbCBtZXRob2QsIHN0YXR1cyBhc3N1bWVkIHRvIGJlIGEgc3VjY2Vzcy4KKwkgKiBAcmV0dXJuIHRvdGFsIG51bWJlciBvZiBleHBhbnNpb25zIAorCSAqLworCXByaXZhdGUgZmluYWwgaW50IGluaXRpYWxpemVQYXR0ZXJuQ0VUYWJsZSgpCisJeworCSAgICBtX3V0aWxDb2xFSXRlcl8uc2V0VGV4dChtX3BhdHRlcm5fLnRhcmdldFRleHQpOworCSAgICAKKwkgICAgaW50IG9mZnNldCA9IDA7CisJICAgIGludCByZXN1bHQgPSAwOworCSAgICBpbnQgY2UgPSBtX3V0aWxDb2xFSXRlcl8ubmV4dCgpOworCQorCSAgICB3aGlsZSAoY2UgIT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUikgeworCSAgICAgICAgaW50IG5ld2NlID0gZ2V0Q0UoY2UpOworCSAgICAgICAgaWYgKG5ld2NlICE9IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5JR05PUkFCTEUpIHsKKwkgICAgICAgICAgICBtX3BhdHRlcm5fLm1fQ0VfID0gYXBwZW5kKG9mZnNldCwgbmV3Y2UsIG1fcGF0dGVybl8ubV9DRV8pOworCSAgICAgICAgICAgIG9mZnNldCArKzsJICAgICAgICAKKwkgICAgICAgIH0KKwkgICAgICAgIHJlc3VsdCArPSBtX3V0aWxDb2xFSXRlcl8uZ2V0TWF4RXhwYW5zaW9uKGNlKSAtIDE7CisJICAgICAgICBjZSA9IG1fdXRpbENvbEVJdGVyXy5uZXh0KCk7CisJICAgIH0KKwkKKwkgICAgbV9wYXR0ZXJuXy5tX0NFXyA9IGFwcGVuZChvZmZzZXQsIDAsIG1fcGF0dGVybl8ubV9DRV8pOworCSAgICBtX3BhdHRlcm5fLm1fQ0VMZW5ndGhfID0gb2Zmc2V0OworCQorCSAgICByZXR1cm4gcmVzdWx0OworCX0KKwkKKwkvKioKKwkgKiBJbml0aWFsaXplcyB0aGUgcGF0dGVybiBzdHJ1Y3QuCisJICogSW50ZXJuYWwgbWV0aG9kLCBzdGF0dXMgYXNzdW1lZCB0byBiZSBzdWNjZXNzLgorCSAqIEByZXR1cm4gZXhwYW5zaW9uc2l6ZSB0aGUgdG90YWwgZXhwYW5zaW9uIHNpemUgb2YgdGhlIHBhdHRlcm4KKwkgKi8gCisJcHJpdmF0ZSBmaW5hbCBpbnQgaW5pdGlhbGl6ZVBhdHRlcm4oKQorCXsKKwkgICAgbV9wYXR0ZXJuXy5tX2hhc1ByZWZpeEFjY2VudHNfID0gKGdldEZDRChtX3BhdHRlcm5fLnRhcmdldFRleHQsIDApIAorCSAgICAJCQkJCQkJCQkgPj4gU0VDT05EX0xBU1RfQllURV9TSElGVF8pICE9IDA7CisJICAgIG1fcGF0dGVybl8ubV9oYXNTdWZmaXhBY2NlbnRzXyA9IChnZXRGQ0QobV9wYXR0ZXJuXy50YXJnZXRUZXh0LCAKKwkgICAgCQkJCQkJCQkJCSBtX3BhdHRlcm5fLnRhcmdldFRleHQubGVuZ3RoKCkgCisJICAgIAkJCQkJCQkJCQkgLSAxKSAKKwkgICAgCQkJCQkJCQkJJiBMQVNUX0JZVEVfTUFTS18pICE9IDA7CisJICAgIC8vIHNpbmNlIGludGlhbGl6ZVBhdHRlcm4gaXMgYW4gaW50ZXJuYWwgbWV0aG9kIHN0YXR1cyBpcyBhIHN1Y2Nlc3MuCisJICAgIHJldHVybiBpbml0aWFsaXplUGF0dGVybkNFVGFibGUoKTsgICAKKwl9CisJCisJLyoqCisJICogSW5pdGlhbGl6aW5nIHNoaWZ0IHRhYmxlcywgd2l0aCB0aGUgZGVmYXVsdCB2YWx1ZXMuCisJICogSWYgYSBjb3JyZXNwb25kaW5nIGRlZmF1bHQgdmFsdWUgaXMgMCwgdGhlIHNoaWZ0IHRhYmxlIGlzIG5vdCBzZXQuCisJICogQHBhcmFtIHNoaWZ0IHRhYmxlIGZvciBmb3J3YXJkcyBzaGlmdCAKKwkgKiBAcGFyYW0gYmFja3NoaWZ0IHRhYmxlIGZvciBiYWNrd2FyZHMgc2hpZnQKKwkgKiBAcGFyYW0gY2V0YWJsZSB0YWJsZSBjb250YWluaW5nIHBhdHRlcm4gY2UKKwkgKiBAcGFyYW0gY2VzaXplIHNpemUgb2YgdGhlIHBhdHRlcm4gY2VzCisJICogQHBhcmFtIGV4cGFuc2lvbnNpemUgdG90YWwgc2l6ZSBvZiB0aGUgZXhwYW5zaW9ucworCSAqIEBwYXJhbSBkZWZhdWx0Zm9yd2FyZCB0aGUgZGVmYXVsdCBmb3J3YXJkIHZhbHVlCisJICogQHBhcmFtIGRlZmF1bHRiYWNrd2FyZCB0aGUgZGVmYXVsdCBiYWNrd2FyZCB2YWx1ZQorCSAqLworCSBwcml2YXRlIGZpbmFsIHZvaWQgc2V0U2hpZnRUYWJsZShjaGFyIHNoaWZ0W10sIAorCSAJCQkJCQkJCQkJCSAgIGNoYXIgYmFja3NoaWZ0W10sIAorCQkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgCSAgIGludCBjZXRhYmxlW10sIGludCBjZXNpemUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAJCQkJCSAJICAgaW50IGV4cGFuc2lvbnNpemUsCisJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAJICAgY2hhciBkZWZhdWx0Zm9yd2FyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgCQkJCQkgCSAgIGNoYXIgZGVmYXVsdGJhY2t3YXJkKQorCXsKKwkgICAgLy8gZXN0aW1hdGUgdGhlIHZhbHVlIHRvIHNoaWZ0LiB0byBkbyB0aGF0IHdlIGVzdGltYXRlIHRoZSBzbWFsbGVzdCAKKwkgICAgLy8gbnVtYmVyIG9mIGNoYXJhY3RlcnMgdG8gZ2l2ZSB0aGUgcmVsZXZhbnQgY2VzLCBpZSBhcHByb3hpbWF0ZWx5CisJICAgIC8vIHRoZSBudW1iZXIgb2YgY2VzIG1pbnVzIHRoZWlyIGV4cGFuc2lvbiwgc2luY2UgZXhwYW5zaW9ucyBjYW4gY29tZSAKKwkgICAgLy8gZnJvbSBhIGNoYXJhY3Rlci4KKwkgICAgZm9yIChpbnQgY291bnQgPSAwOyBjb3VudCA8IE1BWF9UQUJMRV9TSVpFXzsgY291bnQgKyspIHsKKwkgICAgICAgIHNoaWZ0W2NvdW50XSA9IGRlZmF1bHRmb3J3YXJkOworCSAgICB9CisJICAgIGNlc2l6ZSAtLTsgLy8gZG93biB0byB0aGUgbGFzdCBpbmRleAorCSAgICBmb3IgKGludCBjb3VudCA9IDA7IGNvdW50IDwgY2VzaXplOyBjb3VudCArKykgeworCSAgICAgICAgLy8gbnVtYmVyIG9mIGNlcyBmcm9tIHJpZ2h0IG9mIGFycmF5IHRvIHRoZSBjb3VudAorCSAgICAgICAgaW50IHRlbXAgPSBkZWZhdWx0Zm9yd2FyZCAtIGNvdW50IC0gMTsKKwkgICAgICAgIHNoaWZ0W2hhc2goY2V0YWJsZVtjb3VudF0pXSA9IHRlbXAgPiAxID8gKChjaGFyKXRlbXApIDogMTsKKwkgICAgfQorCSAgICBzaGlmdFtoYXNoKGNldGFibGVbY2VzaXplXSldID0gMTsKKwkgICAgLy8gZm9yIGlnbm9yYWJsZXMgd2UganVzdCBzaGlmdCBieSBvbmUuIHNlZSB0ZXN0IGV4YW1wbGVzLgorCSAgICBzaGlmdFtoYXNoKDApXSA9IDE7CisJICAgIAorCSAgICBmb3IgKGludCBjb3VudCA9IDA7IGNvdW50IDwgTUFYX1RBQkxFX1NJWkVfOyBjb3VudCArKykgeworCSAgICAgICAgYmFja3NoaWZ0W2NvdW50XSA9IGRlZmF1bHRiYWNrd2FyZDsKKwkgICAgfQorCSAgICBmb3IgKGludCBjb3VudCA9IGNlc2l6ZTsgY291bnQgPiAwOyBjb3VudCAtLSkgeworCSAgICAgICAgLy8gdGhlIG9yaWdpbmFsIHZhbHVlIGNvdW50IGRvZXMgbm90IHNlZW0gdG8gd29yaworCSAgICAgICAgYmFja3NoaWZ0W2hhc2goY2V0YWJsZVtjb3VudF0pXSA9IChjaGFyKShjb3VudCA+IGV4cGFuc2lvbnNpemUgPyAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJCWNvdW50IC0gZXhwYW5zaW9uc2l6ZSA6IDEpOworCSAgICB9CisJICAgIGJhY2tzaGlmdFtoYXNoKGNldGFibGVbMF0pXSA9IDE7CisJICAgIGJhY2tzaGlmdFtoYXNoKDApXSA9IDE7CisJfQorCQorCS8qKgorCSAqIDxwPkJ1aWxkaW5nIG9mIHRoZSBwYXR0ZXJuIGNvbGxhdGlvbiBlbGVtZW50IGxpc3QgYW5kIHRoZSBCb3llciBNb29yZSAKKwkgKiBTdHJpbmdTZWFyY2ggdGFibGUuPC9wPgorCSAqIDxwPlRoZSBjYW5vbmljYWwgbWF0Y2ggd2lsbCBvbmx5IGJlIHBlcmZvcm1lZCBhZnRlciB0aGUgZGVmYXVsdCBtYXRjaCAKKwkgKiBmYWlscy48L3A+CisJICogPHA+Rm9yIGJvdGggY2FzZXMgd2UgbmVlZCB0byByZW1lbWJlciB0aGUgc2l6ZSBvZiB0aGUgY29tcG9zZWQgYW5kIAorCSAqIGRlY29tcG9zZWQgdmVyc2lvbnMgb2YgdGhlIHN0cmluZy4gU2luY2UgdGhlIEJveWVyLU1vb3JlIHNoaWZ0IAorCSAqIGNhbGN1bGF0aW9ucyBzaGlmdHMgYnkgYSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiB0aGUgdGV4dCBhbmQgdHJpZXMgdG8gCisJICogbWF0Y2ggdGhlIHBhdHRlcm4gZnJvbSB0aGF0IG9mZnNldCwgdGhlIHNoaWZ0IHZhbHVlIGNhbiBub3QgYmUgdG9vIGxhcmdlIAorCSAqIGluIGNhc2Ugd2UgbWlzcyBzb21lIGNoYXJhY3RlcnMuIFRvIGNob29zZSBhIHJpZ2h0IHNoaWZ0IHNpemUsIHdlIAorCSAqIGVzdGltYXRlIHRoZSBORkMgZm9ybSBvZiB0aGUgYW5kIHVzZSBpdHMgc2l6ZSBhcyBhIHNoaWZ0IGd1aWRlLiBUaGUgTkZDIAorCSAqIGZvcm0gc2hvdWxkIGJlIHRoZSBzbWFsbCBwb3NzaWJsZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgcGF0dGVybi4gQW55d2F5cywgCisJICogd2UnbGwgZXJyIG9uIHRoZSBzbWFsbGVyIHNoaWZ0IHNpemUuIEhlbmNlIHRoZSBjYWxjdWxhdGlvbiBmb3IgCisJICogbWlubGVuZ3RoLiBDYW5vbmljYWwgbWF0Y2ggd2lsbCBiZSBwZXJmb3JtZWQgc2xpZ2h0bHkgZGlmZmVyZW50bHkuIFdlJ2xsIAorCSAqIHNwbGl0IHRoZSBwYXR0ZXJuIGludG8gMyBwYXJ0cywgdGhlIHByZWZpeCBhY2NlbnRzIChQQSksIHRoZSBtaWRkbGUgCisJICogc3RyaW5nIGJvdW5kZWQgYnkgdGhlIGZpcnN0IGFuZCBsYXN0IGJhc2UgY2hhcmFjdGVyIChNUyksIHRoZSBlbmRpbmcgCisJICogYWNjZW50cyAoRUEpLiBNYXRjaGVzIHdpbGwgYmUgZG9uZSBvbiBNUyBmaXJzdCwgYW5kIG9ubHkgd2hlbiB3ZSBtYXRjaCAKKwkgKiBNUyB0aGVuIHNvbWUgcHJvY2Vzc2luZyB3aWxsIGJlIHJlcXVpcmVkIGZvciB0aGUgcHJlZml4IGFuZCBlbmQgYWNjZW50cyAKKwkgKiBpbiBvcmRlciB0byBkZXRlcm1pbmUgaWYgdGhleSBtYXRjaCBQQSBhbmQgRUEuIEhlbmNlIHRoZSBkZWZhdWx0IHNoaWZ0IAorCSAqIHZhbHVlcyBmb3IgdGhlIGNhbm9uaWNhbCBtYXRjaCB3aWxsIHRha2UgdGhlIHNpemUgb2YgZWl0aGVyIGVuZCdzIGFjY2VudCAKKwkgKiBpbnRvIGNvbnNpZGVyYXRpb24uIEZvcndhcmRzIHNlYXJjaCB3aWxsIHRha2UgdGhlIGVuZCBhY2NlbnRzIGludG8gCisJICogY29uc2lkZXJhdGlvbiBmb3IgdGhlIGRlZmF1bHQgc2hpZnQgdmFsdWVzIGFuZCB0aGUgYmFja3dhcmRzIHNlYXJjaCB3aWxsIAorCSAqIHRha2UgdGhlIHByZWZpeCBhY2NlbnRzIGludG8gY29uc2lkZXJhdGlvbi48L3A+CisJICogPHA+SWYgcGF0dGVybiBoYXMgbm8gbm9uLWlnbm9yYWJsZSBjZSwgd2UgcmV0dXJuIGEgaWxsZWdhbCBhcmd1bWVudCAKKwkgKiBlcnJvci48L3A+CisJICovIAorCXByaXZhdGUgZmluYWwgdm9pZCBpbml0aWFsaXplKCkKKwl7CisJICAgIGludCBleHBhbmRsZW5ndGggID0gaW5pdGlhbGl6ZVBhdHRlcm4oKTsgICAKKwkgICAgaWYgKG1fcGF0dGVybl8ubV9DRUxlbmd0aF8gPiAwKSB7CisJICAgICAgICBjaGFyIG1pbmxlbmd0aCA9IChjaGFyKShtX3BhdHRlcm5fLm1fQ0VMZW5ndGhfID4gZXhwYW5kbGVuZ3RoIAorCSAgICAgICAgCQkJCQk/IG1fcGF0dGVybl8ubV9DRUxlbmd0aF8gLSBleHBhbmRsZW5ndGggOiAxKTsKKwkgICAgICAgIG1fcGF0dGVybl8ubV9kZWZhdWx0U2hpZnRTaXplXyA9IG1pbmxlbmd0aDsKKyAgICAgICAgICAgIHNldFNoaWZ0VGFibGUobV9wYXR0ZXJuXy5tX3NoaWZ0XywgbV9wYXR0ZXJuXy5tX2JhY2tTaGlmdF8sIAorCSAgICAgICAgCQkJICBtX3BhdHRlcm5fLm1fQ0VfLCBtX3BhdHRlcm5fLm1fQ0VMZW5ndGhfLCAKKwkgICAgICAgIAkJCSAgZXhwYW5kbGVuZ3RoLCBtaW5sZW5ndGgsIG1pbmxlbmd0aCk7CisJICAgIH0KKwkgICAgZWxzZSB7CisJICAgIAltX3BhdHRlcm5fLm1fZGVmYXVsdFNoaWZ0U2l6ZV8gPSAwOworCSAgICB9CisJfQorCQorCS8qKgorCSAqIERldGVybWluZSB3aGV0aGVyIHRoZSBzZWFyY2ggdGV4dCBib3VuZGVkIGJ5IHRoZSBvZmZzZXQgc3RhcnQgYW5kIGVuZCBpcyAKKwkgKiBvbmUgb3IgbW9yZSB3aG9sZSB1bml0cyBvZiB0ZXh0IGFzIGRldGVybWluZWQgYnkgdGhlIGJyZWFraXRlcmF0b3IgaW4gCisJICogU3RyaW5nU2VhcmNoLgorCSAqIEBwYXJhbSBzdGFydCB0YXJnZXQgdGV4dCBzdGFydCBvZmZzZXQKKwkgKiBAcGFyYW0gZW5kIHRhcmdldCB0ZXh0IGVuZCBvZmZzZXQKKwkgKi8KKwlwcml2YXRlIGZpbmFsIGJvb2xlYW4gaXNCcmVha1VuaXQoaW50IHN0YXJ0LCBpbnQgZW5kKSAKKwl7CisJICAgIGlmIChicmVha0l0ZXJhdG9yICE9IG51bGwpIHsKKwkgICAgICAgIGludCBzdGFydGluZGV4ID0gYnJlYWtJdGVyYXRvci5maXJzdCgpOworCSAgICAgICAgaW50IGVuZGluZGV4ICAgPSBicmVha0l0ZXJhdG9yLmxhc3QoKTsKKwkgICAgICAgIAorCSAgICAgICAgLy8gb3V0LW9mLXJhbmdlIGluZGV4ZXMgYXJlIG5ldmVyIGJvdW5kYXJ5IHBvc2l0aW9ucworCSAgICAgICAgaWYgKHN0YXJ0IDwgc3RhcnRpbmRleCB8fCBzdGFydCA+IGVuZGluZGV4IHx8IGVuZCA8IHN0YXJ0aW5kZXggCisJICAgICAgICAJfHwgZW5kID4gZW5kaW5kZXgpIHsKKwkgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisJICAgICAgICB9CisJICAgICAgICAvLyBvdGhlcndpc2UsIHdlIGNhbiB1c2UgZm9sbG93aW5nKCkgb24gdGhlIHBvc2l0aW9uIGJlZm9yZSB0aGUgCisJICAgICAgICAvLyBzcGVjaWZpZWQgb25lIGFuZCByZXR1cm4gdHJ1ZSBvZiB0aGUgcG9zaXRpb24gd2UgZ2V0IGJhY2sgaXMgdGhlIAorCSAgICAgICAgLy8gb25lIHRoZSB1c2VyIHNwZWNpZmllZAorCSAgICAgICAgYm9vbGVhbiByZXN1bHQgPSAoc3RhcnQgPT0gc3RhcnRpbmRleCAKKwkgICAgICAgIAkJCQkgIHx8IGJyZWFrSXRlcmF0b3IuZm9sbG93aW5nKHN0YXJ0IC0gMSkgPT0gc3RhcnQpIAorCSAgICAgICAgCQkJCSAmJiAoZW5kID09IGVuZGluZGV4IAorCSAgICAgICAgCQkJCSAJIHx8IGJyZWFrSXRlcmF0b3IuZm9sbG93aW5nKGVuZCAtIDEpID09IGVuZCk7CisJICAgICAgICBpZiAocmVzdWx0KSB7CisJICAgICAgICAgICAgLy8gaXRlcmF0ZXMgdGhlIGluZGl2aWR1YWwgY2VzCisJICAgICAgICAgICAgbV91dGlsQ29sRUl0ZXJfLnNldFRleHQodGFyZ2V0VGV4dCwgc3RhcnQpOworCSAgICAgICAgICAgIGZvciAoaW50IGNvdW50ID0gMDsgY291bnQgPCBtX3BhdHRlcm5fLm1fQ0VMZW5ndGhfOworCSAgICAgICAgICAgICAgICAgY291bnQgKyspIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IGNlID0gZ2V0Q0UobV91dGlsQ29sRUl0ZXJfLm5leHQoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjZSA9PSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuSUdOT1JBQkxFKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCAtLTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgICAgIGlmIChjZSAhPSBtX3BhdHRlcm5fLm1fQ0VfW2NvdW50XSkgeworCSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCSAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGludCBuZXh0Y2UgPSBtX3V0aWxDb2xFSXRlcl8ubmV4dCgpOworICAgICAgICAgICAgICAgIHdoaWxlIChtX3V0aWxDb2xFSXRlcl8uZ2V0T2Zmc2V0KCkgPT0gZW5kIAorICAgICAgICAgICAgICAgICAgICAgICAmJiBnZXRDRShuZXh0Y2UpID09IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5JR05PUkFCTEUpIHsKKyAgICAgICAgICAgICAgICAgICAgbmV4dGNlID0gbV91dGlsQ29sRUl0ZXJfLm5leHQoKTsgICAgICAgCisgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgIGlmIChuZXh0Y2UgIT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUiAKKwkgICAgICAgICAgICAJJiYgbV91dGlsQ29sRUl0ZXJfLmdldE9mZnNldCgpID09IGVuZCkgeworCSAgICAgICAgICAgICAgICAvLyBleHRyYSBjb2xsYXRpb24gZWxlbWVudHMgYXQgdGhlIGVuZCBvZiB0aGUgbWF0Y2gKKwkgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCSAgICAgICAgICAgIH0KKwkgICAgICAgIH0KKwkgICAgICAgIHJldHVybiByZXN1bHQ7CisJICAgIH0KKwkgICAgcmV0dXJuIHRydWU7CisJfQorCQorCS8qKgorCSAqIEdldHRpbmcgdGhlIG5leHQgYmFzZSBjaGFyYWN0ZXIgb2Zmc2V0IGlmIGN1cnJlbnQgb2Zmc2V0IGlzIGFuIGFjY2VudCwgCisJICogb3IgdGhlIGN1cnJlbnQgb2Zmc2V0IGlmIHRoZSBjdXJyZW50IGNoYXJhY3RlciBjb250YWlucyBhIGJhc2UgY2hhcmFjdGVyLiAKKwkgKiBhY2NlbnRzIHRoZSBmb2xsb3dpbmcgYmFzZSBjaGFyYWN0ZXIgd2lsbCBiZSByZXR1cm5lZAorCSAqIEBwYXJhbSB0ZXh0IHN0cmluZworCSAqIEBwYXJhbSB0ZXh0b2Zmc2V0IGN1cnJlbnQgb2Zmc2V0CisJICogQHBhcmFtIHRleHRsZW5ndGggbGVuZ3RoIG9mIHRleHQgc3RyaW5nCisJICogQHJldHVybiB0aGUgbmV4dCBiYXNlIGNoYXJhY3RlciBvciB0aGUgY3VycmVudCBvZmZzZXQKKwkgKiAgICAgICAgIGlmIHRoZSBjdXJyZW50IGNoYXJhY3RlciBpcyBjb250YWlucyBhIGJhc2UgY2hhcmFjdGVyLgorCSAqLworCXByaXZhdGUgZmluYWwgaW50IGdldE5leHRCYXNlT2Zmc2V0KENoYXJhY3Rlckl0ZXJhdG9yIHRleHQsIAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJCSBpbnQgdGV4dG9mZnNldCkKKwl7CisJICAgIGlmICh0ZXh0b2Zmc2V0IDwgdGV4dC5nZXRFbmRJbmRleCgpKSB7CisJICAgICAgICB3aGlsZSAodGV4dC5nZXRJbmRleCgpIDwgdGV4dC5nZXRFbmRJbmRleCgpKSB7IAorCSAgICAgICAgICAgIGludCByZXN1bHQgPSB0ZXh0b2Zmc2V0OworCSAgICAgICAgICAgIGlmICgoZ2V0RkNEKHRleHQsIHRleHRvZmZzZXQgKyspIAorCSAgICAgICAgICAgICAgICAJCT4+IFNFQ09ORF9MQVNUX0JZVEVfU0hJRlRfKSA9PSAwKSB7CisJICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworCSAgICAgICAgICAgIH0KKwkgICAgICAgIH0KKwkgICAgICAgIHJldHVybiB0ZXh0LmdldEVuZEluZGV4KCk7CisJICAgIH0KKwkgICAgcmV0dXJuIHRleHRvZmZzZXQ7CisJfQorCQorCS8qKgorCSAqIEdldHMgdGhlIG5leHQgYmFzZSBjaGFyYWN0ZXIgb2Zmc2V0IGRlcGVuZGluZyBvbiB0aGUgc3RyaW5nIHNlYXJjaCAKKwkgKiBwYXR0ZXJuIGRhdGEKKwkgKiBAcGFyYW0gdGV4dG9mZnNldCBvbmUgb2Zmc2V0IGF3YXkgZnJvbSB0aGUgbGFzdCBjaGFyYWN0ZXIKKwkgKiAgICAgICAgICAgICAgICAgICB0byBzZWFyY2ggZm9yLgorCSAqIEByZXR1cm4gc3RhcnQgaW5kZXggb2YgdGhlIG5leHQgYmFzZSBjaGFyYWN0ZXIgb3IgdGhlIGN1cnJlbnQgb2Zmc2V0CisJICogICAgICAgICBpZiB0aGUgY3VycmVudCBjaGFyYWN0ZXIgaXMgY29udGFpbnMgYSBiYXNlIGNoYXJhY3Rlci4KKwkgKi8KKwlwcml2YXRlIGZpbmFsIGludCBnZXROZXh0QmFzZU9mZnNldChpbnQgdGV4dG9mZnNldCkKKwl7CisJICAgIGlmIChtX3BhdHRlcm5fLm1faGFzU3VmZml4QWNjZW50c18gCisJICAgIAkmJiB0ZXh0b2Zmc2V0IDwgbV90ZXh0TGltaXRPZmZzZXRfKSB7CisgICAgICAgICAgICB0YXJnZXRUZXh0LnNldEluZGV4KHRleHRvZmZzZXQpOworICAgICAgICAgICAgdGFyZ2V0VGV4dC5wcmV2aW91cygpOworICAgICAgICAgICAgaWYgKChnZXRGQ0QodGFyZ2V0VGV4dCwgdGFyZ2V0VGV4dC5nZXRJbmRleCgpKSAmIExBU1RfQllURV9NQVNLXykgIT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBnZXROZXh0QmFzZU9mZnNldCh0YXJnZXRUZXh0LCB0ZXh0b2Zmc2V0KTsKKyAgICAgICAgICAgIH0KKwkgICAgfQorCSAgICByZXR1cm4gdGV4dG9mZnNldDsKKwl9CisJCisJLyoqCisJICogU2hpZnRpbmcgdGhlIGNvbGxhdGlvbiBlbGVtZW50IGl0ZXJhdG9yIHBvc2l0aW9uIGZvcndhcmQgdG8gcHJlcGFyZSBmb3IKKwkgKiBhIGZvbGxvd2luZyBtYXRjaC4gSWYgdGhlIGxhc3QgY2hhcmFjdGVyIGlzIGEgdW5zYWZlIGNoYXJhY3Rlciwgd2UnbGwgCisJICogb25seSBzaGlmdCBieSAxIHRvIGNhcHR1cmUgY29udHJhY3Rpb25zLCBub3JtYWxpemF0aW9uIGV0Yy4KKwkgKiBJbnRlcm5hbCBtZXRob2QsIHN0YXR1cyBhc3N1bWVkIHRvIGJlIHN1Y2Nlc3MuCisJICogQHBhcmFtIHRleHRvZmZzZXQgc3RhcnQgdGV4dCBwb3NpdGlvbiB0byBkbyBzZWFyY2gKKwkgKiBAcGFyYW0gY2UgdGhlIHRleHQgY2Ugd2hpY2ggZmFpbGVkIHRoZSBtYXRjaC4KKwkgKiBAcGFyYW0gcGF0dGVybmNlaW5kZXggaW5kZXggb2YgdGhlIGNlIHdpdGhpbiB0aGUgcGF0dGVybiBjZSBidWZmZXIgd2hpY2gKKwkgKiAgICAgICAgZmFpbGVkIHRoZSBtYXRjaAorCSAqIEByZXR1cm4gZmluYWwgb2Zmc2V0CisJICovCisJcHJpdmF0ZSBpbnQgc2hpZnRGb3J3YXJkKGludCB0ZXh0b2Zmc2V0LCBpbnQgY2UsIGludCBwYXR0ZXJuY2VpbmRleCkKKwkJCQkJCQkJCQorCXsKKwkgICAgaWYgKGNlICE9IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5OVUxMT1JERVIpIHsKKwkgICAgICAgIGludCBzaGlmdCA9IG1fcGF0dGVybl8ubV9zaGlmdF9baGFzaChjZSldOworCSAgICAgICAgLy8gdGhpcyBpcyB0byBhZGp1c3QgZm9yIGNoYXJhY3RlcnMgaW4gdGhlIG1pZGRsZSBvZiB0aGUgCisJICAgICAgICAvLyBzdWJzdHJpbmcgZm9yIG1hdGNoaW5nIHRoYXQgZmFpbGVkLgorCSAgICAgICAgaW50IGFkanVzdCA9IG1fcGF0dGVybl8ubV9DRUxlbmd0aF8gLSBwYXR0ZXJuY2VpbmRleDsKKwkgICAgICAgIGlmIChhZGp1c3QgPiAxICYmIHNoaWZ0ID49IGFkanVzdCkgeworCSAgICAgICAgICAgIHNoaWZ0IC09IGFkanVzdCAtIDE7CisJICAgICAgICB9CisJICAgICAgICB0ZXh0b2Zmc2V0ICs9IHNoaWZ0OworCSAgICB9CisJICAgIGVsc2UgeworCSAgICAgICAgdGV4dG9mZnNldCArPSBtX3BhdHRlcm5fLm1fZGVmYXVsdFNoaWZ0U2l6ZV87CisJICAgIH0KKwkgICAgIAorICAgICAgICB0ZXh0b2Zmc2V0ID0gZ2V0TmV4dEJhc2VPZmZzZXQodGV4dG9mZnNldCk7CisJICAgIC8vIGNoZWNrIGZvciB1bnNhZmUgY2hhcmFjdGVycworCSAgICAvLyAqIGlmIGl0IGlzIHRoZSBzdGFydCBvciBtaWRkbGUgb2YgYSBjb250cmFjdGlvbjogdG8gYmUgZG9uZSBhZnRlciAKKwkgICAgLy8gICBhIGluaXRpYWwgbWF0Y2ggaXMgZm91bmQKKwkgICAgLy8gKiB0aGFpIG9yIGxhbyBiYXNlIGNvbnNvbmFudCBjaGFyYWN0ZXI6IHNpbWlsYXIgdG8gY29udHJhY3Rpb24KKwkgICAgLy8gKiBoaWdoIHN1cnJvZ2F0ZSBjaGFyYWN0ZXI6IHNpbWlsYXIgdG8gY29udHJhY3Rpb24KKwkgICAgLy8gKiBuZXh0IGNoYXJhY3RlciBpcyBhIGFjY2VudDogc2hpZnQgdG8gdGhlIG5leHQgYmFzZSBjaGFyYWN0ZXIKKwkgICAgcmV0dXJuIHRleHRvZmZzZXQ7CisJfQorCQorCS8qKgorCSAqIEdldHMgdGhlIG9mZnNldCB0byB0aGUgbmV4dCBzYWZlIHBvaW50IGluIHRleHQuCisJICogaWUuIG5vdCB0aGUgbWlkZGxlIG9mIGEgY29udHJhY3Rpb24sIHN3YXBwYWJsZSBjaGFyYWN0ZXJzIG9yIAorCSAqIHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVycy4KKwkgKiBAcGFyYW0gdGV4dG9mZnNldCBvZmZzZXQgaW4gc3RyaW5nCisJICogQHBhcmFtIGVuZCBvZmZzZXQgaW4gc3RyaW5nCisJICogQHJldHVybiBvZmZzZXQgdG8gdGhlIG5leHQgc2FmZSBjaGFyYWN0ZXIKKwkgKi8KKwlwcml2YXRlIGZpbmFsIGludCBnZXROZXh0U2FmZU9mZnNldChpbnQgdGV4dG9mZnNldCwgaW50IGVuZCkKKwl7CisJICAgIGludCByZXN1bHQgPSB0ZXh0b2Zmc2V0OyAvLyBmaXJzdCBjb250cmFjdGlvbiBjaGFyYWN0ZXIKKwkgICAgdGFyZ2V0VGV4dC5zZXRJbmRleChyZXN1bHQpOworCSAgICB3aGlsZSAocmVzdWx0ICE9IGVuZCAmJiAKKwkgICAgCW1fY29sbGF0b3JfLmlzVW5zYWZlKHRhcmdldFRleHQuY3VycmVudCgpKSkgeworCSAgICAgICAJcmVzdWx0ICsrOworCSAgICAgICAJdGFyZ2V0VGV4dC5zZXRJbmRleChyZXN1bHQpOworCSAgICB9CisJICAgIHJldHVybiByZXN1bHQ7IAorCX0KKwkKKwkvKiogCisJICogVGhpcyBjaGVja3MgZm9yIGFjY2VudHMgaW4gdGhlIHBvdGVudGlhbCBtYXRjaCBzdGFydGVkIHdpdGggYSBjb21wb3NpdGUgCisJICogY2hhcmFjdGVyLgorCSAqIFRoaXMgaXMgcmVhbGx5IHBhaW5mdWwuLi4gd2UgaGF2ZSB0byBjaGVjayB0aGF0IGNvbXBvc2l0ZSBjaGFyYWN0ZXIgZG8gCisJICogbm90IGhhdmUgYW55IGV4dHJhIGFjY2VudHMuIFdlIGhhdmUgdG8gbm9ybWFsaXplIHRoZSBwb3RlbnRpYWwgbWF0Y2ggYW5kIAorCSAqIGZpbmQgdGhlIGltbWVkaWF0ZSBkZWNvbXBvc2VkIGNoYXJhY3RlciBiZWZvcmUgdGhlIG1hdGNoLgorCSAqIFRoZSBmaXJzdCBjb21wb3NpdGUgY2hhcmFjdGVyIHdvdWxkIGhhdmUgYmVlbiB0YWtlbiBjYXJlIG9mIGJ5IHRoZSBmY2QgCisJICogY2hlY2tzIGluIGNoZWNrRm9yd2FyZEV4YWN0TWF0Y2guCisJICogVGhpcyBpcyB0aGUgc2xvdyBwYXRoIGFmdGVyIHRoZSBmY2Qgb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBhbmQgCisJICogdGhlIGxhc3QgY2hhcmFjdGVyIGhhcyBiZWVuIGNoZWNrZWQgYnkgY2hlY2tGb3J3YXJkRXhhY3RNYXRjaCBhbmQgd2UgCisJICogZGV0ZXJtaW5lIHRoYXQgdGhlIHBvdGVudGlhbCBtYXRjaCBoYXMgZXh0cmEgbm9uLWlnbm9yYWJsZSBwcmVjZWRpbmcKKwkgKiBjZXMuCisJICogRS5nLiBsb29raW5nIGZvciBcdTAzMDEgYWN1dGUgaW4gXHUwMUZBIEEgcmluZyBhYm92ZSBhbmQgYWN1dGUsIAorCSAqIGNoZWNrRXh0cmFNYXRjaEFjY2VudCBzaG91bGQgZmFpbCBzaW5jZSB0aGVyZSBpcyBhIG1pZGRsZSByaW5nIGluIAorCSAqIFx1MDFGQSBOb3RlIGhlcmUgdGhhdCBhY2NlbnRzIGNoZWNraW5nIGFyZSBzbG93IGFuZCBjYXV0aW9uZWQgaW4gdGhlIEFQSSAKKwkgKiBkb2NzLgorCSAqIEludGVybmFsIG1ldGhvZCwgc3RhdHVzIGFzc3VtZWQgdG8gYmUgYSBzdWNjZXNzLCBjYWxsZXIgc2hvdWxkIGNoZWNrIAorCSAqIHN0YXR1cyBiZWZvcmUgY2FsbGluZyB0aGlzIG1ldGhvZAorCSAqIEBwYXJhbSBzdGFydCBpbmRleCBvZiB0aGUgcG90ZW50aWFsIHVuZnJpZW5kbHkgY29tcG9zaXRlIGNoYXJhY3RlcgorCSAqIEBwYXJhbSBlbmQgaW5kZXggb2YgdGhlIHBvdGVudGlhbCB1bmZyaWVuZGx5IGNvbXBvc2l0ZSBjaGFyYWN0ZXIKKwkgKiBAcmV0dXJuIHRydWUgaWYgdGhlcmUgaXMgbm9uLWlnbm9yYWJsZSBhY2NlbnRzIGJlZm9yZSBhdCB0aGUgYmVnaW5uaW5nCisJICogICAgICAgICAgICAgIG9mIHRoZSBtYXRjaCwgZmFsc2Ugb3RoZXJ3aXNlLgorCSAqLworCXByaXZhdGUgZmluYWwgYm9vbGVhbiBjaGVja0V4dHJhTWF0Y2hBY2NlbnRzKGludCBzdGFydCwgaW50IGVuZCkKKwl7CisJICAgIGJvb2xlYW4gcmVzdWx0ID0gZmFsc2U7CisJICAgIGlmIChtX3BhdHRlcm5fLm1faGFzUHJlZml4QWNjZW50c18pIHsKKwkgICAgICAgIHRhcmdldFRleHQuc2V0SW5kZXgoc3RhcnQpOworCSAgICAgICAgCisJICAgICAgICBpZiAoVVRGMTYuaXNMZWFkU3Vycm9nYXRlKHRhcmdldFRleHQubmV4dCgpKSkgeworCSAgICAgICAgCWlmICghVVRGMTYuaXNUcmFpbFN1cnJvZ2F0ZSh0YXJnZXRUZXh0Lm5leHQoKSkpIHsKKwkgICAgICAgIAkJdGFyZ2V0VGV4dC5wcmV2aW91cygpOworCSAgICAgICAgCX0KKwkgICAgICAgIH0KKwkgICAgICAgIC8vIHdlIGFyZSBvbmx5IGNvbmNlcm5lZCB3aXRoIHRoZSBmaXJzdCBjb21wb3NpdGUgY2hhcmFjdGVyCisJICAgICAgICBTdHJpbmcgc3RyID0gZ2V0U3RyaW5nKHRhcmdldFRleHQsIHN0YXJ0LCBlbmQpOworCSAgICAgICAgaWYgKE5vcm1hbGl6ZXIucXVpY2tDaGVjayhzdHIsIE5vcm1hbGl6ZXIuTkZEKSAKKwkgICAgICAgIAkJCQkJCQkJCQk9PSBOb3JtYWxpemVyLk5PKSB7CisJICAgICAgICAgICAgaW50IHNhZmVvZmZzZXQgPSBnZXROZXh0U2FmZU9mZnNldChzdGFydCwgZW5kKTsKKwkgICAgICAgICAgICBpZiAoc2FmZW9mZnNldCAhPSBlbmQpIHsKKwkgICAgICAgICAgICAgICAgc2FmZW9mZnNldCArKzsKKwkgICAgICAgICAgICB9CisJICAgICAgICAgICAgU3RyaW5nIGRlY29tcCA9IE5vcm1hbGl6ZXIuZGVjb21wb3NlKAorCSAgICAgICAgICAgIAkJCQlzdHIuc3Vic3RyaW5nKDAsIHNhZmVvZmZzZXQgLSBzdGFydCksIGZhbHNlKTsKKwkgICAgICAgICAgICBtX3V0aWxDb2xFSXRlcl8uc2V0VGV4dChkZWNvbXApOworCSAgICAgICAgICAgIGludCBmaXJzdGNlID0gbV9wYXR0ZXJuXy5tX0NFX1swXTsKKwkgICAgICAgICAgICBib29sZWFuIGlnbm9yYWJsZSA9IHRydWU7CisJICAgICAgICAgICAgaW50IGNlID0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLklHTk9SQUJMRTsKKwkgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gMDsKKwkgICAgICAgICAgICB3aGlsZSAoY2UgIT0gZmlyc3RjZSkgeworCSAgICAgICAgICAgIAlvZmZzZXQgPSBtX3V0aWxDb2xFSXRlcl8uZ2V0T2Zmc2V0KCk7CisJICAgICAgICAgICAgICAgIGlmIChjZSAhPSBmaXJzdGNlIAorCSAgICAgICAgICAgICAgICAJJiYgY2UgIT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLklHTk9SQUJMRSkgeworCSAgICAgICAgICAgICAgICAgICAgaWdub3JhYmxlID0gZmFsc2U7CisJICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAgICAgY2UgPSBtX3V0aWxDb2xFSXRlcl8ubmV4dCgpOworCSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtX3V0aWxDb2xFSXRlcl8uc2V0RXhhY3RPZmZzZXQob2Zmc2V0KTsgLy8gYmFjayB1cCAxIHRvIHRoZSAKKyAgICAgICAgICAgICAgICBtX3V0aWxDb2xFSXRlcl8ucHJldmlvdXMoKTsgICAgICAgICAgICAgLy8gcmlnaHQgb2Zmc2V0CisgICAgICAgICAgICAgICAgb2Zmc2V0ID0gbV91dGlsQ29sRUl0ZXJfLmdldE9mZnNldCgpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9ICFpZ25vcmFibGUgJiYgKFVDaGFyYWN0ZXIuZ2V0Q29tYmluaW5nQ2xhc3MoCisJICAgICAgICAgICAgCQkJCQkJCVVURjE2LmNoYXJBdChkZWNvbXAsIG9mZnNldCkpICE9IDApOworCSAgICAgICAgfQorCSAgICB9CisJCisJICAgIHJldHVybiByZXN1bHQ7CisJfQorCQorCS8qKgorCSogVXNlZCBieSBleGFjdCBtYXRjaGVzLCBjaGVja3MgaWYgdGhlcmUgYXJlIGFjY2VudHMgYmVmb3JlIHRoZSBtYXRjaC4gCisJKiBUaGlzIGlzIHJlYWxseSBwYWluZnVsLi4uIHdlIGhhdmUgdG8gY2hlY2sgdGhhdCBjb21wb3NpdGUgY2hhcmFjdGVycyBhdAorCSogdGhlIHN0YXJ0IG9mIHRoZSBtYXRjaGVzIGhhdmUgdG8gbm90IGhhdmUgYW55IGV4dHJhIGFjY2VudHMuIAorCSogV2UgY2hlY2sgdGhlIEZDRCBvZiB0aGUgY2hhcmFjdGVyIGZpcnN0LCBpZiBpdCBzdGFydHMgd2l0aCBhbiBhY2NlbnQgYW5kIAorCSogdGhlIGZpcnN0IHBhdHRlcm4gY2UgZG9lcyBub3QgbWF0Y2ggdGhlIGZpcnN0IGNlIG9mIHRoZSBjaGFyYWN0ZXIsIHdlIAorCSogYmFpbC4KKwkqIE90aGVyd2lzZSB3ZSB0cnkgbm9ybWFsaXppbmcgdGhlIGZpcnN0IGNvbXBvc2l0ZSAKKwkqIGNoYXJhY3RlciBhbmQgZmluZCB0aGUgaW1tZWRpYXRlIGRlY29tcG9zZWQgY2hhcmFjdGVyIGJlZm9yZSB0aGUgbWF0Y2ggdG8gCisJKiBzZWUgaWYgaXQgaXMgYW4gbm9uLWlnbm9yYWJsZSBhY2NlbnQuCisJKiBOb3cgbm9ybWFsaXppbmcgdGhlIGZpcnN0IGNvbXBvc2l0ZSBjaGFyYWN0ZXIgaXMgZW5vdWdoIGJlY2F1c2Ugd2UgZW5zdXJlIAorCSogdGhhdCB3aGVuIHRoZSBtYXRjaCBpcyBwYXNzZWQgaW4gaGVyZSB3aXRoIGV4dHJhIGJlZ2lubmluZyBjZXMsIHRoZSAKKwkqIGZpcnN0IG9yIGxhc3QgY2UgdGhhdCBtYXRjaCBoYXMgdG8gb2NjdXIgd2l0aGluIHRoZSBmaXJzdCBjaGFyYWN0ZXIuCisJKiBFLmcuIGxvb2tpbmcgZm9yIFx1MDMwMSBhY3V0ZSBpbiBcdTAxRkEgQSByaW5nIGFib3ZlIGFuZCBhY3V0ZSwgCisJKiBjaGVja0V4dHJhTWF0Y2hBY2NlbnQgc2hvdWxkIGZhaWwgc2luY2UgdGhlcmUgaXMgYSBtaWRkbGUgcmluZyBpbiBcdTAxRkEKKwkqIE5vdGUgaGVyZSB0aGF0IGFjY2VudHMgY2hlY2tpbmcgYXJlIHNsb3cgYW5kIGNhdXRpb25lZCBpbiB0aGUgQVBJIGRvY3MuCisJKiBAcGFyYW0gc3RhcnQgb2Zmc2V0IAorCSogQHBhcmFtIGVuZCBvZmZzZXQKKwkqIEByZXR1cm4gdHJ1ZSBpZiB0aGVyZSBhcmUgYWNjZW50cyBvbiBlaXRoZXIgc2lkZSBvZiB0aGUgbWF0Y2gsIAorCSogICAgICAgICBmYWxzZSBvdGhlcndpc2UKKwkqLworCXByaXZhdGUgZmluYWwgYm9vbGVhbiBoYXNBY2NlbnRzQmVmb3JlTWF0Y2goaW50IHN0YXJ0LCBpbnQgZW5kKSAKKwl7CisJICAgIGlmIChtX3BhdHRlcm5fLm1faGFzUHJlZml4QWNjZW50c18pIHsKKwkgICAgICAgIC8vIHdlIGhhdmUgYmVlbiBpdGVyYXRpbmcgZm9yd2FyZHMgcHJldmlvdXNseQorCSAgICAgICAgYm9vbGVhbiBpZ25vcmFibGUgPSB0cnVlOworCSAgICAgICAgaW50IGZpcnN0Y2UgPSBtX3BhdHRlcm5fLm1fQ0VfWzBdOworCQkJbV9jb2xFSXRlcl8uc2V0RXhhY3RPZmZzZXQoc3RhcnQpOworCSAgICAgICAgaW50IGNlICA9IGdldENFKG1fY29sRUl0ZXJfLm5leHQoKSk7CisJICAgICAgICB3aGlsZSAoY2UgIT0gZmlyc3RjZSkgeworCSAgICAgICAgICAgIGlmIChjZSAhPSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuSUdOT1JBQkxFKSB7CisJICAgICAgICAgICAgICAgIGlnbm9yYWJsZSA9IGZhbHNlOworCSAgICAgICAgICAgIH0KKwkgICAgICAgICAgICBjZSA9IGdldENFKG1fY29sRUl0ZXJfLm5leHQoKSk7CisJICAgICAgICB9CisJICAgICAgICBpZiAoIWlnbm9yYWJsZSAmJiBtX2NvbEVJdGVyXy5pc0luQnVmZmVyKCkpIHsKKwkgICAgICAgICAgICAvLyB3aXRoaW4gbm9ybWFsaXphdGlvbiBidWZmZXIsIGRpc2NvbnRpZ3VvdXMgaGFuZGxlZCBoZXJlCisJICAgICAgICAgICAgcmV0dXJuIHRydWU7CisJICAgICAgICB9CisJCisJICAgICAgICAvLyB3aXRoaW4gdGV4dAorCSAgICAgICAgYm9vbGVhbiBhY2NlbnQgPSAoZ2V0RkNEKHRhcmdldFRleHQsIHN0YXJ0KSA+PiBTRUNPTkRfTEFTVF9CWVRFX1NISUZUXykKKwkgICAgICAgIAkJCQkJCQkJCQkJIT0gMDsgCisJICAgICAgICBpZiAoIWFjY2VudCkgeworCSAgICAgICAgICAgIHJldHVybiBjaGVja0V4dHJhTWF0Y2hBY2NlbnRzKHN0YXJ0LCBlbmQpOworCSAgICAgICAgfQorCSAgICAgICAgaWYgKCFpZ25vcmFibGUpIHsKKwkgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKwkgICAgICAgIH0KKwkgICAgICAgIGlmIChzdGFydCA+IG1fdGV4dEJlZ2luT2Zmc2V0XykgeworCSAgICAgICAgCXRhcmdldFRleHQuc2V0SW5kZXgoc3RhcnQpOworCSAgICAgICAgCXRhcmdldFRleHQucHJldmlvdXMoKTsKKwkgICAgICAgICAgICBpZiAoKGdldEZDRCh0YXJnZXRUZXh0LCB0YXJnZXRUZXh0LmdldEluZGV4KCkpICYgTEFTVF9CWVRFX01BU0tfKSAKKwkgICAgICAgICAgICAJCQkJCQkJCQkJCQkJCSE9IDApIHsKKwkgICAgICAgICAgICAgICAgbV9jb2xFSXRlcl8uc2V0RXhhY3RPZmZzZXQoc3RhcnQpOworCSAgICAgICAgICAgICAgICBjZSA9IG1fY29sRUl0ZXJfLnByZXZpb3VzKCk7CisJICAgICAgICAgICAgICAgIGlmIChjZSAhPSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuTlVMTE9SREVSIAorCSAgICAgICAgICAgICAgICAJJiYgY2UgIT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLklHTk9SQUJMRSkgeworCSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisJICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICB9CisJICAgICAgICB9CisJICAgIH0KKwkgIAorCSAgICByZXR1cm4gZmFsc2U7CisJfQorCQorCS8qKgorCSAqIFVzZWQgYnkgZXhhY3QgbWF0Y2hlcywgY2hlY2tzIGlmIHRoZXJlIGFyZSBhY2NlbnRzIGJvdW5kaW5nIHRoZSBtYXRjaC4KKwkgKiBOb3RlIHRoaXMgaXMgdGhlIGluaXRpYWwgYm91bmRhcnkgY2hlY2suIElmIHRoZSBwb3RlbnRpYWwgbWF0Y2gKKwkgKiBzdGFydHMgb3IgZW5kcyB3aXRoIGNvbXBvc2l0ZSBjaGFyYWN0ZXJzLCB0aGUgYWNjZW50cyBpbiB0aG9zZQorCSAqIGNoYXJhY3RlcnMgd2lsbCBiZSBkZXRlcm1pbmVkIGxhdGVyLgorCSAqIE5vdCBkb2luZyBiYWNrd2FyZHMgaXRlcmF0aW9uIGhlcmUsIHNpbmNlIGRpc2NvbnRpZ3VvcyBjb250cmFjdGlvbiBmb3IgCisJICogYmFja3dhcmRzIGNvbGxhdGlvbiBlbGVtZW50IGl0ZXJhdG9yLCB1c2UgdXAgdG9vIG1hbnkgY2hhcmFjdGVycy4KKwkgKiBFLmcuIGxvb2tpbmcgZm9yIFx1MDMwQSByaW5nIGluIFx1MDFGQSBBIHJpbmcgYWJvdmUgYW5kIGFjdXRlLCAKKwkgKiBzaG91bGQgZmFpbCBzaW5jZSB0aGVyZSBpcyBhIGFjdXRlIGF0IHRoZSBlbmQgb2YgXHUwMUZBCisJICogTm90ZSBoZXJlIHRoYXQgYWNjZW50cyBjaGVja2luZyBhcmUgc2xvdyBhbmQgY2F1dGlvbmVkIGluIHRoZSBBUEkgZG9jcy4KKwkgKiBAcGFyYW0gc3RhcnQgb2Zmc2V0IG9mIG1hdGNoCisJICogQHBhcmFtIGVuZCBlbmQgb2Zmc2V0IG9mIHRoZSBtYXRjaAorCSAqIEByZXR1cm4gdHJ1ZSBpZiB0aGVyZSBhcmUgYWNjZW50cyBvbiBlaXRoZXIgc2lkZSBvZiB0aGUgbWF0Y2gsIAorCSAqICAgICAgICAgZmFsc2Ugb3RoZXJ3aXNlCisJICovCisJcHJpdmF0ZSBmaW5hbCBib29sZWFuIGhhc0FjY2VudHNBZnRlck1hdGNoKGludCBzdGFydCwgaW50IGVuZCkgCisJeworCSAgICBpZiAobV9wYXR0ZXJuXy5tX2hhc1N1ZmZpeEFjY2VudHNfKSB7CisJICAgIAl0YXJnZXRUZXh0LnNldEluZGV4KGVuZCk7CisJICAgICAgICBpZiAoZW5kID4gbV90ZXh0QmVnaW5PZmZzZXRfIAorCSAgICAgICAgCSYmIFVURjE2LmlzVHJhaWxTdXJyb2dhdGUodGFyZ2V0VGV4dC5wcmV2aW91cygpKSkgeworCSAgICAgICAgCWlmICh0YXJnZXRUZXh0LmdldEluZGV4KCkgPiBtX3RleHRCZWdpbk9mZnNldF8gJiYKKwkgICAgICAgIAkJIVVURjE2LmlzTGVhZFN1cnJvZ2F0ZSh0YXJnZXRUZXh0LnByZXZpb3VzKCkpKSB7CisJICAgICAgICAJCXRhcmdldFRleHQubmV4dCgpOworCSAgICAgICAgCX0KKwkgICAgICAgIH0KKwkgICAgICAgIGlmICgoZ2V0RkNEKHRhcmdldFRleHQsIHRhcmdldFRleHQuZ2V0SW5kZXgoKSkgJiBMQVNUX0JZVEVfTUFTS18pICE9IDApIHsKKwkgICAgICAgICAgICBpbnQgZmlyc3RjZSAgPSBtX3BhdHRlcm5fLm1fQ0VfWzBdOworCSAgICAgICAgICAgIG1fY29sRUl0ZXJfLnNldEV4YWN0T2Zmc2V0KHN0YXJ0KTsKKwkgICAgICAgICAgICB3aGlsZSAoZ2V0Q0UobV9jb2xFSXRlcl8ubmV4dCgpKSAhPSBmaXJzdGNlKSB7CisJICAgICAgICAgICAgfQorCSAgICAgICAgICAgIGludCBjb3VudCA9IDE7CisJICAgICAgICAgICAgd2hpbGUgKGNvdW50IDwgbV9wYXR0ZXJuXy5tX0NFTGVuZ3RoXykgeworCSAgICAgICAgICAgICAgICBpZiAoZ2V0Q0UobV9jb2xFSXRlcl8ubmV4dCgpKSAKKwkgICAgICAgICAgICAgICAgCT09IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5JR05PUkFCTEUpIHsKKwkgICAgICAgICAgICAgICAgCWNvdW50IC0tOworCSAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgICAgIGNvdW50ICsrOworCSAgICAgICAgICAgIH0KKwkgICAgICAgICAgICBpbnQgY2UgPSBnZXRDRShtX2NvbEVJdGVyXy5uZXh0KCkpOworCSAgICAgICAgICAgIGlmIChjZSAhPSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuTlVMTE9SREVSIAorCSAgICAgICAgICAgIAkJCSYmIGNlICE9IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5JR05PUkFCTEUpIHsKKwkgICAgICAgICAgICAgICAgaWYgKG1fY29sRUl0ZXJfLmdldE9mZnNldCgpIDw9IGVuZCkgeworCSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisJICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAgICAgaWYgKChnZXRGQ0QodGFyZ2V0VGV4dCwgZW5kKSA+PiBTRUNPTkRfTEFTVF9CWVRFX1NISUZUXykgCisJICAgICAgICAgICAgICAgIAkhPSAwKSB7CisJICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKwkgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgIH0KKwkgICAgICAgIH0KKwkgICAgfQorCSAgICByZXR1cm4gZmFsc2U7CisJfQorCQorCS8qKgorCSogQ2hlY2tzIGlmIHRoZSBvZmZzZXQgcnVucyBvdXQgb2YgdGhlIHRleHQgc3RyaW5nIHJhbmdlCisJKiBAcGFyYW0gdGV4dHN0YXJ0IG9mZnNldCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIGluIHRoZSByYW5nZQorCSogQHBhcmFtIHRleHRsaW1pdCBsaW1pdCBvZmZzZXQgb2YgdGhlIHRleHQgc3RyaW5nIHJhbmdlCisJKiBAcGFyYW0gb2Zmc2V0IHRvIHRlc3QKKwkqIEByZXR1cm4gdHJ1ZSBpZiBvZmZzZXQgaXMgb3V0IG9mIGJvdW5kcywgZmFsc2Ugb3RoZXJ3aXNlCisJKi8KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIGlzT3V0T2ZCb3VuZHMoaW50IHRleHRzdGFydCwgaW50IHRleHRsaW1pdCwgCisJCQkJCQkJCQkJCQlpbnQgb2Zmc2V0KQorCXsKKwkgICAgcmV0dXJuIG9mZnNldCA8IHRleHRzdGFydCB8fCBvZmZzZXQgPiB0ZXh0bGltaXQ7CisJfQorCQorCS8qKgorCSAqIENoZWNrcyBmb3IgaWRlbnRpY2FsIG1hdGNoCisJICogQHBhcmFtIHN0cnNyY2ggc3RyaW5nIHNlYXJjaCBkYXRhCisJICogQHBhcmFtIHN0YXJ0IG9mZnNldCBvZiBwb3NzaWJsZSBtYXRjaAorCSAqIEBwYXJhbSBlbmQgb2Zmc2V0IG9mIHBvc3NpYmxlIG1hdGNoCisJICogQHJldHVybiB0cnVlIGlmIGlkZW50aWNhbCBtYXRjaCBpcyBmb3VuZAorCSAqLworCXByaXZhdGUgZmluYWwgYm9vbGVhbiBjaGVja0lkZW50aWNhbChpbnQgc3RhcnQsIGludCBlbmQpIAorCXsKKwkgICAgaWYgKG1fY29sbGF0b3JfLmdldFN0cmVuZ3RoKCkgIT0gQ29sbGF0b3IuSURFTlRJQ0FMKSB7CisJICAgICAgICByZXR1cm4gdHJ1ZTsKKwkgICAgfQorCQorCQlTdHJpbmcgdGV4dHN0ciA9IGdldFN0cmluZyh0YXJnZXRUZXh0LCBzdGFydCwgZW5kIC0gc3RhcnQpOworCQlpZiAoTm9ybWFsaXplci5xdWlja0NoZWNrKHRleHRzdHIsIE5vcm1hbGl6ZXIuTkZEKSAKKwkgICAgICAgIAkJCQkJCQkJCQk9PSBOb3JtYWxpemVyLk5PKSB7CisJICAgICAgICB0ZXh0c3RyID0gTm9ybWFsaXplci5kZWNvbXBvc2UodGV4dHN0ciwgZmFsc2UpOworCSAgICB9CisJICAgIFN0cmluZyBwYXR0ZXJuc3RyID0gbV9wYXR0ZXJuXy50YXJnZXRUZXh0OworCSAgICBpZiAoTm9ybWFsaXplci5xdWlja0NoZWNrKHBhdHRlcm5zdHIsIE5vcm1hbGl6ZXIuTkZEKSAKKwkgICAgICAgIAkJCQkJCQkJCQk9PSBOb3JtYWxpemVyLk5PKSB7CisJICAgICAgICBwYXR0ZXJuc3RyID0gTm9ybWFsaXplci5kZWNvbXBvc2UocGF0dGVybnN0ciwgZmFsc2UpOworCSAgICB9CisJICAgIHJldHVybiB0ZXh0c3RyLmVxdWFscyhwYXR0ZXJuc3RyKTsKKwl9CisJCisJLyoqCisJICogQ2hlY2tzIHRvIHNlZSBpZiB0aGUgbWF0Y2ggaXMgcmVwZWF0ZWQKKwkgKiBAcGFyYW0gc3RhcnQgbmV3IG1hdGNoIHN0YXJ0IGluZGV4CisJICogQHBhcmFtIGxpbWl0IG5ldyBtYXRjaCBsaW1pdCBpbmRleAorCSAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgdGhlIG1hdGNoIGlzIHJlcGVhdGVkLCBmYWxzZSBvdGhlcndpc2UKKwkgKi8KKwlwcml2YXRlIGZpbmFsIGJvb2xlYW4gY2hlY2tSZXBlYXRlZE1hdGNoKGludCBzdGFydCwgaW50IGxpbWl0KQorCXsKKwkgICAgaWYgKG1fbWF0Y2hlZEluZGV4XyA9PSBET05FKSB7CisJICAgICAgICByZXR1cm4gZmFsc2U7CisJICAgIH0KKyAgICAgICAgaW50IGVuZCA9IGxpbWl0IC0gMTsgLy8gbGFzdCBjaGFyYWN0ZXIgaW4gdGhlIG1hdGNoCisJICAgIGludCBsYXN0bWF0Y2hlbmQgPSBtX21hdGNoZWRJbmRleF8gKyBtYXRjaExlbmd0aCAtIDE7IAorCSAgICBpZiAoIWlzT3ZlcmxhcHBpbmcoKSkgeworICAgICAgICAgICAgcmV0dXJuIChzdGFydCA+PSBtX21hdGNoZWRJbmRleF8gJiYgc3RhcnQgPD0gbGFzdG1hdGNoZW5kKSAKKyAgICAgICAgICAgICAgICAgICAgfHwgKGVuZCA+PSBtX21hdGNoZWRJbmRleF8gJiYgZW5kIDw9IGxhc3RtYXRjaGVuZCk7CisgICAgICAgICAgICAgICAgICAgICAgCisJICAgIH0KKwkgICAgcmV0dXJuIHN0YXJ0ID09IG1fbWF0Y2hlZEluZGV4XzsKKwl9CisJCisJLyoqCisJICogQ2hlY2tzIG1hdGNoIGZvciBjb250cmFjdGlvbi4gCisJICogSWYgdGhlIG1hdGNoIGVuZHMgd2l0aCBhIHBhcnRpYWwgY29udHJhY3Rpb24gd2UgZmFpbC4KKwkgKiBJZiB0aGUgbWF0Y2ggc3RhcnRzIHRvbyBmYXIgb2ZmIChiZWNhdXNlIG9mIGJhY2t3YXJkcyBpdGVyYXRpb24pIHdlIHRyeSAKKwkgKiB0byBjaGlwIG9mZiB0aGUgZXh0cmEgY2hhcmFjdGVycyBkZXBlbmRpbmcgb24gd2hldGhlciBhIGJyZWFraXRlcmF0b3IgCisJICogaGFzIGJlZW4gdXNlZC4KKwkgKiBUZW1wb3JhcnkgdXRpbGl0eSBidWZmZXIgdXNlZCB0byByZXR1cm4gbW9kaWZpZWQgc3RhcnQgYW5kIGVuZC4KKwkgKiBAcGFyYW0gc3RhcnQgb2Zmc2V0IG9mIHBvdGVudGlhbCBtYXRjaCwgdG8gYmUgbW9kaWZpZWQgaWYgbmVjZXNzYXJ5CisJICogQHBhcmFtIGVuZCBvZmZzZXQgb2YgcG90ZW50aWFsIG1hdGNoLCB0byBiZSBtb2RpZmllZCBpZiBuZWNlc3NhcnkKKwkgKiBAcmV0dXJuIHRydWUgaWYgbWF0Y2ggcGFzc2VzIHRoZSBjb250cmFjdGlvbiB0ZXN0LCBmYWxzZSBvdGhlcndpc2UuCisJICovCisJcHJpdmF0ZSBmaW5hbCBib29sZWFuIGNoZWNrTmV4dEV4YWN0Q29udHJhY3Rpb25NYXRjaChpbnQgc3RhcnQsIGludCBlbmQpIAorCXsKKwkgICAgLy8gVGhpcyBwYXJ0IGNoZWNrcyBpZiBlaXRoZXIgZW5kcyBvZiB0aGUgbWF0Y2ggY29udGFpbnMgcG90ZW50aWFsIAorCSAgICAvLyBjb250cmFjdGlvbi4gSWYgc28gd2UnbGwgaGF2ZSB0byBpdGVyYXRlIHRocm91Z2ggdGhlbQorCSAgICBjaGFyIGVuZGNoYXIgPSAwOworCSAgICBpZiAoZW5kIDwgbV90ZXh0TGltaXRPZmZzZXRfKSB7CisJICAgIAl0YXJnZXRUZXh0LnNldEluZGV4KGVuZCk7CisJICAgIAllbmRjaGFyID0gdGFyZ2V0VGV4dC5jdXJyZW50KCk7CisJICAgIH0KKwkgICAgY2hhciBwb3N0c3RhcnRjaGFyID0gMDsKKwkgICAgaWYgKHN0YXJ0ICsgMSA8IG1fdGV4dExpbWl0T2Zmc2V0XykgeworCSAgICAJdGFyZ2V0VGV4dC5zZXRJbmRleChzdGFydCArIDEpOworCSAgICAJcG9zdHN0YXJ0Y2hhciA9IHRhcmdldFRleHQuY3VycmVudCgpOworCSAgICB9CisJICAgIGlmIChtX2NvbGxhdG9yXy5pc1Vuc2FmZShlbmRjaGFyKSAKKwkgICAgCXx8IG1fY29sbGF0b3JfLmlzVW5zYWZlKHBvc3RzdGFydGNoYXIpKSB7CisJICAgICAgICAvLyBleHBhbnNpb24gcHJlZml4LCB3aGF0J3MgbGVmdCB0byBpdGVyYXRlCisJICAgICAgICBpbnQgYnVmZmVyZWRDRU9mZnNldCA9IG1fY29sRUl0ZXJfLm1fQ0VCdWZmZXJPZmZzZXRfOworCSAgICAgICAgYm9vbGVhbiBoYXNCdWZmZXJlZENFID0gYnVmZmVyZWRDRU9mZnNldCA+IDA7CisJICAgICAgICBtX2NvbEVJdGVyXy5zZXRFeGFjdE9mZnNldChzdGFydCk7CisJICAgICAgICBpbnQgdGVtcCA9IHN0YXJ0OworCSAgICAgICAgd2hpbGUgKGJ1ZmZlcmVkQ0VPZmZzZXQgPiAwKSB7CisJICAgICAgICAgICAgLy8gZ2V0dGluZyByaWQgb2YgdGhlIHJlZHVuZGFudCBjZSwgY2F1c2VkIGJ5IHNldE9mZnNldC4KKwkgICAgICAgICAgICAvLyBzaW5jZSBiYWNrd2FyZCBjb250cmFjdGlvbi9leHBhbnNpb24gbWF5IGhhdmUgZXh0cmEgY2VzIGlmIAorCSAgICAgICAgICAgIC8vIHdlIGFyZSBpbiB0aGUgbm9ybWFsaXphdGlvbiBidWZmZXIsIGhhc0FjY2VudHNCZWZvcmVNYXRjaCAKKwkgICAgICAgICAgICAvLyB3b3VsZCBoYXZlIHRha2VuIGNhcmUgb2YgaXQuCisJICAgICAgICAgICAgLy8gRS5nLiB0aGUgY2hhcmFjdGVyIFx1MDFGQSB3aWxsIGhhdmUgYW4gZXhwYW5zaW9uIG9mIDMsIGJ1dCAKKwkgICAgICAgICAgICAvLyBpZiB3ZSBhcmUgb25seSBsb29raW5nIGZvciBhY3V0ZSBhbmQgcmluZyBcdTAzMEEgYW5kIFx1MDMwMSwgCisJICAgICAgICAgICAgLy8gd2UnbGwgaGF2ZSB0byBza2lwIHRoZSBmaXJzdCBjZSBpbiB0aGUgZXhwYW5zaW9uIGJ1ZmZlci4KKwkgICAgICAgICAgICBtX2NvbEVJdGVyXy5uZXh0KCk7CisJICAgICAgICAgICAgaWYgKG1fY29sRUl0ZXJfLmdldE9mZnNldCgpICE9IHRlbXApIHsKKwkgICAgICAgICAgICAgICAgc3RhcnQgPSB0ZW1wOworCSAgICAgICAgICAgICAgICB0ZW1wICA9IG1fY29sRUl0ZXJfLmdldE9mZnNldCgpOworCSAgICAgICAgICAgIH0KKwkgICAgICAgICAgICBidWZmZXJlZENFT2Zmc2V0IC0tOworCSAgICAgICAgfQorCQorCSAgICAgICAgaW50IGNvdW50ID0gMDsKKwkgICAgICAgIHdoaWxlIChjb3VudCA8IG1fcGF0dGVybl8ubV9DRUxlbmd0aF8pIHsKKwkgICAgICAgICAgICBpbnQgY2UgPSBnZXRDRShtX2NvbEVJdGVyXy5uZXh0KCkpOworCSAgICAgICAgICAgIGlmIChjZSA9PSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuSUdOT1JBQkxFKSB7CisJICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCSAgICAgICAgICAgIH0KKwkgICAgICAgICAgICBpZiAoaGFzQnVmZmVyZWRDRSAmJiBjb3VudCA9PSAwIAorCSAgICAgICAgICAgIAkmJiBtX2NvbEVJdGVyXy5nZXRPZmZzZXQoKSAhPSB0ZW1wKSB7CisJICAgICAgICAgICAgICAgIHN0YXJ0ID0gdGVtcDsKKwkgICAgICAgICAgICAgICAgdGVtcCAgID0gbV9jb2xFSXRlcl8uZ2V0T2Zmc2V0KCk7CisJICAgICAgICAgICAgfQorCSAgICAgICAgICAgIGlmIChjZSAhPSBtX3BhdHRlcm5fLm1fQ0VfW2NvdW50XSkgeworCSAgICAgICAgICAgICAgICBlbmQgKys7CisJICAgICAgICAgICAgICAgIGVuZCA9IGdldE5leHRCYXNlT2Zmc2V0KGVuZCk7ICAKKwkgICAgICAgICAgICAgICAgbV91dGlsQnVmZmVyX1swXSA9IHN0YXJ0OworCSAgICAgICAgICAgICAgICBtX3V0aWxCdWZmZXJfWzFdID0gZW5kOworCSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisJICAgICAgICAgICAgfQorCSAgICAgICAgICAgIGNvdW50ICsrOworCSAgICAgICAgfQorCSAgICB9IAorCSAgICBtX3V0aWxCdWZmZXJfWzBdID0gc3RhcnQ7CisJICAgIG1fdXRpbEJ1ZmZlcl9bMV0gPSBlbmQ7CisJICAgIHJldHVybiB0cnVlOworCX0KKwkKKwkKKwkvKioKKwkgKiBDaGVja3MgYW5kIHNldHMgdGhlIG1hdGNoIGluZm9ybWF0aW9uIGlmIGZvdW5kLgorCSAqIENoZWNrcyAKKwkgKiA8dWw+CisJICogPGxpPiB0aGUgcG90ZW50aWFsIG1hdGNoIGRvZXMgbm90IHJlcGVhdCB0aGUgcHJldmlvdXMgbWF0Y2gKKwkgKiA8bGk+IGJvdW5kYXJpZXMgYXJlIGNvcnJlY3QKKwkgKiA8bGk+IGV4YWN0IG1hdGNoZXMgaGFzIG5vIGV4dHJhIGFjY2VudHMKKwkgKiA8bGk+IGlkZW50aWNhbCBtYXRjaGVzYgorCSAqIDxsaT4gcG90ZW50aWFsIG1hdGNoIGRvZXMgbm90IGVuZCBpbiB0aGUgbWlkZGxlIG9mIGEgY29udHJhY3Rpb24KKwkgKiA8L3VsPgorCSAqIE90aGVyd2lzZSB0aGUgb2Zmc2V0IHdpbGwgYmUgc2hpZnRlZCB0byB0aGUgbmV4dCBjaGFyYWN0ZXIuCisJICogVGhlIHJlc3VsdCBtX21hdGNoSW5kZXhfIGFuZCBtX21hdGNoTGVuZ3RoXyB3aWxsIGJlIHNldCB0byB0aGUgdHJ1bmNhdGVkCisJICogbW9yZSBmaXR0aW5nIHJlc3VsdCB2YWx1ZS4KKwkgKiBVc2VzIHRoZSB0ZW1wb3JhcnkgdXRpbGl0eSBidWZmZXIgZm9yIHN0b3JpbmcgdGhlIG1vZGlmaWVkIHRleHRvZmZzZXQuCisJICogQHBhcmFtIHRleHRvZmZzZXQgb2Zmc2V0IGluIHRoZSBjb2xsYXRpb24gZWxlbWVudCB0ZXh0LgorCSAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgbWF0Y2ggaXMgdmFsaWQsIGZhbHNlIG90aGVyd2lzZQorCSAqLworCXByaXZhdGUgZmluYWwgYm9vbGVhbiBjaGVja05leHRFeGFjdE1hdGNoKGludCB0ZXh0b2Zmc2V0KQorCXsKKwkgICAgaW50IHN0YXJ0ID0gbV9jb2xFSXRlcl8uZ2V0T2Zmc2V0KCk7ICAgICAgICAKKwkgICAgaWYgKCFjaGVja05leHRFeGFjdENvbnRyYWN0aW9uTWF0Y2goc3RhcnQsIHRleHRvZmZzZXQpKSB7CisJICAgIAkvLyByZXR1cm5zIHRoZSBtb2RpZmllZCB0ZXh0b2Zmc2V0CisJICAgIAltX3V0aWxCdWZmZXJfWzBdID0gbV91dGlsQnVmZmVyX1sxXTsKKwkgICAgICAgIHJldHVybiBmYWxzZTsKKwkgICAgfQorCQorCQlzdGFydCA9IG1fdXRpbEJ1ZmZlcl9bMF07CisJCXRleHRvZmZzZXQgPSBtX3V0aWxCdWZmZXJfWzFdOworCSAgICAvLyB0aGlzIHRvdGFsbHkgbWF0Y2hlcywgaG93ZXZlciB3ZSBuZWVkIHRvIGNoZWNrIGlmIGl0IGlzIHJlcGVhdGluZworCSAgICBpZiAoIWlzQnJlYWtVbml0KHN0YXJ0LCB0ZXh0b2Zmc2V0KSAKKwkgICAgCXx8IGNoZWNrUmVwZWF0ZWRNYXRjaChzdGFydCwgdGV4dG9mZnNldCkgCisJICAgIAl8fCBoYXNBY2NlbnRzQmVmb3JlTWF0Y2goc3RhcnQsIHRleHRvZmZzZXQpIAorCSAgICAJfHwgIWNoZWNrSWRlbnRpY2FsKHN0YXJ0LCB0ZXh0b2Zmc2V0KSAKKwkgICAgCXx8IGhhc0FjY2VudHNBZnRlck1hdGNoKHN0YXJ0LCB0ZXh0b2Zmc2V0KSkgeworCSAgICAgICAgdGV4dG9mZnNldCArKzsKKwkgICAgICAgIHRleHRvZmZzZXQgPSBnZXROZXh0QmFzZU9mZnNldCh0ZXh0b2Zmc2V0KTsgIAorCSAgICAgICAgbV91dGlsQnVmZmVyX1swXSA9IHRleHRvZmZzZXQ7CisJICAgICAgICByZXR1cm4gZmFsc2U7CisJICAgIH0KKwkgICAgICAgIAorCSAgICAvLyB0b3RhbGx5IG1hdGNoLCB3ZSB3aWxsIGdldCByaWQgb2YgdGhlIGVuZGluZyBpZ25vcmFibGVzLgorCSAgICBtX21hdGNoZWRJbmRleF8gID0gc3RhcnQ7CisJICAgIG1hdGNoTGVuZ3RoID0gdGV4dG9mZnNldCAtIHN0YXJ0OworCSAgICByZXR1cm4gdHJ1ZTsKKwl9CisJCisJLyoqCisJKiBHZXR0aW5nIHRoZSBwcmV2aW91cyBiYXNlIGNoYXJhY3RlciBvZmZzZXQsIG9yIHRoZSBjdXJyZW50IG9mZnNldCBpZiB0aGUgCisJKiBjdXJyZW50IGNoYXJhY3RlciBpcyBhIGJhc2UgY2hhcmFjdGVyCisJKiBAcGFyYW0gdGV4dCB0aGUgc291cmNlIHRleHQgdG8gd29yayBvbgorCSogQHBhcmFtIHRleHRvZmZzZXQgb25lIG9mZnNldCBhZnRlciB0aGUgY3VycmVudCBjaGFyYWN0ZXIKKwkqIEByZXR1cm4gdGhlIG9mZnNldCBvZiB0aGUgbmV4dCBjaGFyYWN0ZXIgYWZ0ZXIgdGhlIGJhc2UgY2hhcmFjdGVyIG9yIHRoZSAKKwkqIAkJCWZpcnN0IGNvbXBvc2VkIGNoYXJhY3RlciB3aXRoIGFjY2VudHMKKwkqLworCXByaXZhdGUgZmluYWwgaW50IGdldFByZXZpb3VzQmFzZU9mZnNldChDaGFyYWN0ZXJJdGVyYXRvciB0ZXh0LCAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRleHRvZmZzZXQpCisJeworCSAgICBpZiAodGV4dG9mZnNldCA+IG1fdGV4dEJlZ2luT2Zmc2V0XykgeworCSAgICAgICAgd2hpbGUgKHRydWUpIHsKKwkgICAgICAgICAgICBpbnQgcmVzdWx0ID0gdGV4dG9mZnNldDsKKwkgICAgICAgICAgICB0ZXh0LnNldEluZGV4KHJlc3VsdCk7CisJICAgICAgICAgICAgaWYgKFVURjE2LmlzVHJhaWxTdXJyb2dhdGUodGV4dC5wcmV2aW91cygpKSkgeworCSAgICAgICAgICAgIAlpZiAodGV4dC5nZXRJbmRleCgpICE9IHRleHQuZ2V0QmVnaW5JbmRleCgpICYmCisJICAgICAgICAgICAgCQkhVVRGMTYuaXNMZWFkU3Vycm9nYXRlKHRleHQucHJldmlvdXMoKSkpIHsKKwkgICAgICAgICAgICAJCXRleHQubmV4dCgpOworCSAgICAgICAgICAgIAl9CisJICAgICAgICAgICAgfQorCSAgICAgICAgICAgIHRleHRvZmZzZXQgPSB0ZXh0LmdldEluZGV4KCk7CisJICAgICAgICAgICAgY2hhciBmY2QgPSBnZXRGQ0QodGV4dCwgdGV4dG9mZnNldCk7CisJICAgICAgICAgICAgaWYgKChmY2QgPj4gU0VDT05EX0xBU1RfQllURV9TSElGVF8pID09IDApIHsKKwkgICAgICAgICAgICAgICAgaWYgKChmY2QgJiBMQVNUX0JZVEVfTUFTS18pICE9IDApIHsKKwkgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0b2Zmc2V0OworCSAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisJICAgICAgICAgICAgfQorCSAgICAgICAgICAgIGlmICh0ZXh0b2Zmc2V0ID09IG1fdGV4dEJlZ2luT2Zmc2V0XykgeworCSAgICAgICAgICAgICAgICByZXR1cm4gbV90ZXh0QmVnaW5PZmZzZXRfOworCSAgICAgICAgICAgIH0KKwkgICAgICAgIH0KKwkgICAgfQorCSAgICByZXR1cm4gdGV4dG9mZnNldDsKKwl9CisJCisJLyoqCisJKiBHZXR0aW5nIHRoZSBpbmRleGVzIG9mIHRoZSBhY2NlbnRzIHRoYXQgYXJlIG5vdCBibG9ja2VkIGluIHRoZSBhcmd1bWVudAorCSogYWNjZW50IGFycmF5CisJKiBAcGFyYW0gYWNjZW50cyBhY2NlbnRzIGluIG5mZC4KKwkqIEBwYXJhbSBhY2NlbnRzaW5kZXggYXJyYXkgdG8gc3RvcmUgdGhlIGluZGV4ZXMgb2YgYWNjZW50cyBpbiBhY2NlbnRzIHRoYXQgCisJKiAJCWFyZSBub3QgYmxvY2tlZAorCSogQHJldHVybiB0aGUgbGVuZ3RoIG9mIHBvcHVsYXRlZCBhY2NlbnRzaW5kZXgKKwkqLworCXByaXZhdGUgaW50IGdldFVuYmxvY2tlZEFjY2VudEluZGV4KFN0cmluZ0J1ZmZlciBhY2NlbnRzLCAKKwkJCQkJCQkJCQlpbnQgYWNjZW50c2luZGV4W10pCisJeworCSAgICBpbnQgaW5kZXggPSAwOworCSAgICBpbnQgbGVuZ3RoID0gYWNjZW50cy5sZW5ndGgoKTsKKwkgICAgaW50IGNjbGFzcyA9IDA7CisJICAgIGludCByZXN1bHQgPSAwOworCSAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHsKKwkgICAgICAgIGludCBjb2RlcG9pbnQgPSBVVEYxNi5jaGFyQXQoYWNjZW50cywgaW5kZXgpOworCSAgICAgICAgaW50IHRlbXBjbGFzcyA9IFVDaGFyYWN0ZXIuZ2V0Q29tYmluaW5nQ2xhc3MoY29kZXBvaW50KTsKKwkgICAgICAgIGlmICh0ZW1wY2xhc3MgIT0gY2NsYXNzKSB7CisJICAgICAgICAgICAgY2NsYXNzID0gdGVtcGNsYXNzOworCSAgICAgICAgICAgIGFjY2VudHNpbmRleFtyZXN1bHRdID0gaW5kZXg7CisJICAgICAgICAgICAgcmVzdWx0ICsrOworCSAgICAgICAgfQorCSAgICAgICAgaWYgKFVDaGFyYWN0ZXIuaXNTdXBwbGVtZW50YXJ5KGNvZGVwb2ludCkpIHsKKwkgICAgICAgIAlpbmRleCArPSAyOworCSAgICAgICAgfQorCSAgICAgICAgZWxzZSB7CisJICAgICAgICAJaW5kZXggKys7CisJICAgICAgICB9CisJICAgIH0KKwkgICAgYWNjZW50c2luZGV4W3Jlc3VsdF0gPSBsZW5ndGg7CisJICAgIHJldHVybiByZXN1bHQ7CisJfQorCisJLyoqCisJICogQXBwZW5kcyAzIFN0cmluZ0J1ZmZlci9DaGFyYWN0ZXJJdGVyYXRvciB0b2dldGhlciBpbnRvIGEgZGVzdGluYXRpb24gCisJICogc3RyaW5nIGJ1ZmZlci4KKwkgKiBAcGFyYW0gc291cmNlMSBzdHJpbmcgYnVmZmVyCisJICogQHBhcmFtIHNvdXJjZTIgY2hhcmFjdGVyIGl0ZXJhdG9yCisJICogQHBhcmFtIHN0YXJ0MiBzdGFydCBvZiB0aGUgY2hhcmFjdGVyIGl0ZXJhdG9yIHRvIG1lcmdlCisJICogQHBhcmFtIGVuZDIgZW5kIG9mIHRoZSBjaGFyYWN0ZXIgaXRlcmF0b3IgdG8gbWVyZ2UKKwkgKiBAcGFyYW0gc291cmNlMyBzdHJpbmcgYnVmZmVyCisJICogQHJldHVybiBhcHBlbmRlZCBzdHJpbmcgYnVmZmVyCisJICovCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nQnVmZmVyIG1lcmdlKFN0cmluZ0J1ZmZlciBzb3VyY2UxLCAKKwkJCQkJCQkJCSAJCUNoYXJhY3Rlckl0ZXJhdG9yIHNvdXJjZTIsCisJCQkJCQkJCQkgCQlpbnQgc3RhcnQyLCBpbnQgZW5kMiwKKwkJCQkJCQkJCSAJCVN0cmluZ0J1ZmZlciBzb3VyY2UzKSAKKwl7CisJCVN0cmluZ0J1ZmZlciByZXN1bHQgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CQorCQlpZiAoc291cmNlMSAhPSBudWxsICYmIHNvdXJjZTEubGVuZ3RoKCkgIT0gMCkgeworICAgICAgICAgICAgLy8gamRrIDEuMy4xIGRvZXMgbm90IGhhdmUgYXBwZW5kKFN0cmluZ0J1ZmZlcikgeWV0CisgICAgICAgICAgICBpZihjb20uaWJtLmljdS5pbXBsLklDVURlYnVnLmlzSkRLMTRPckhpZ2hlcil7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChzb3VyY2UxKTsKKyAgICAgICAgICAgIH1lbHNleworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc291cmNlMS50b1N0cmluZygpKTsKKyAgICAgICAgICAgIH0KKwkJfQorCQlzb3VyY2UyLnNldEluZGV4KHN0YXJ0Mik7CisJCXdoaWxlIChzb3VyY2UyLmdldEluZGV4KCkgPCBlbmQyKSB7CisJCQlyZXN1bHQuYXBwZW5kKHNvdXJjZTIuY3VycmVudCgpKTsKKwkJCXNvdXJjZTIubmV4dCgpOworCQl9CisJCWlmIChzb3VyY2UzICE9IG51bGwgJiYgc291cmNlMy5sZW5ndGgoKSAhPSAwKSB7CisJCQkvLyBqZGsgMS4zLjEgZG9lcyBub3QgaGF2ZSBhcHBlbmQoU3RyaW5nQnVmZmVyKSB5ZXQKKyAgICAgICAgICAgIGlmKGNvbS5pYm0uaWN1LmltcGwuSUNVRGVidWcuaXNKREsxNE9ySGlnaGVyKXsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHNvdXJjZTMpOworICAgICAgICAgICAgfWVsc2V7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChzb3VyY2UzLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgfQorCQl9CisJICAgIHJldHVybiByZXN1bHQ7CisJfQorCQorCS8qKgorCSogUnVubmluZyB0aHJvdWdoIGEgY29sbGF0aW9uIGVsZW1lbnQgaXRlcmF0b3IgdG8gc2VlIGlmIHRoZSBjb250ZW50cyAKKwkqIG1hdGNoZXMgcGF0dGVybiBpbiBzdHJpbmcgc2VhcmNoIGRhdGEKKwkqIEBwYXJhbSBjb2xlaXRlciBjb2xsYXRpb24gZWxlbWVudCBpdGVyYXRvciB0byB0ZXN0CisJKiBAcmV0dXJuIHRydWUgaWYgYSBtYXRjaCBpZiBmb3VuZCwgZmFsc2Ugb3RoZXJ3aXNlCisJKi8KKwlwcml2YXRlIGZpbmFsIGJvb2xlYW4gY2hlY2tDb2xsYXRpb25NYXRjaChDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IgY29sZWl0ZXIpCisJeworCSAgICBpbnQgcGF0dGVybmNlaW5kZXggPSBtX3BhdHRlcm5fLm1fQ0VMZW5ndGhfOworCSAgICBpbnQgb2Zmc2V0ID0gMDsKKwkgICAgd2hpbGUgKHBhdHRlcm5jZWluZGV4ID4gMCkgeworCSAgICAgICAgaW50IGNlID0gZ2V0Q0UoY29sZWl0ZXIubmV4dCgpKTsKKwkgICAgICAgIGlmIChjZSA9PSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuSUdOT1JBQkxFKSB7CisJICAgICAgICAgICAgY29udGludWU7CisJICAgICAgICB9CisJICAgICAgICBpZiAoY2UgIT0gbV9wYXR0ZXJuXy5tX0NFX1tvZmZzZXRdKSB7CisJICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCSAgICAgICAgfQorCSAgICAgICAgb2Zmc2V0ICsrOworCSAgICAgICAgcGF0dGVybmNlaW5kZXggLS07CisJICAgIH0KKwkgICAgcmV0dXJuIHRydWU7CisJfQorCQorCS8qKgorCSAqIFJlYXJyYW5nZXMgdGhlIGZyb250IGFjY2VudHMgdG8gdHJ5IG1hdGNoaW5nLgorCSAqIFByZWZpeCBhY2NlbnRzIGluIHRoZSB0ZXh0IHdpbGwgYmUgZ3JvdXBlZCBhY2NvcmRpbmcgdG8gdGhlaXIgY29tYmluaW5nIAorCSAqIGNsYXNzIGFuZCB0aGUgZ3JvdXBzIHdpbGwgYmUgbWl4ZWQgYW5kIG1hdGNoZWQgdG8gdHJ5IGZpbmQgdGhlIHBlcmZlY3QgCisJICogbWF0Y2ggd2l0aCB0aGUgcGF0dGVybi4KKwkgKiBTbyBmb3IgaW5zdGFuY2UgbG9va2luZyBmb3IgIlx1MDMwMSIgaW4gIlx1MDMwQVx1MDMwMVx1MDMyNSIKKwkgKiBzdGVwIDE6IHNwbGl0ICJcdTAzMEFcdTAzMDEiIGludG8gNiBvdGhlciB0eXBlIG9mIHBvdGVudGlhbCBhY2NlbnQgCisJICogCQkgICBzdWJzdHJpbmdzICJcdTAzMEEiLCAiXHUwMzAxIiwgIlx1MDMyNSIsICJcdTAzMEFcdTAzMDEiLCAKKwkgKiAJCSAgICJcdTAzMEFcdTAzMjUiLCAiXHUwMzAxXHUwMzI1Ii4KKwkgKiBzdGVwIDI6IGNoZWNrIGlmIGFueSBvZiB0aGUgZ2VuZXJhdGVkIHN1YnN0cmluZ3MgbWF0Y2hlcyB0aGUgcGF0dGVybi4KKwkgKiBJbnRlcm5hbCBtZXRob2QsIHN0YXR1cyBpcyBhc3N1bWVkIHRvIGJlIHN1Y2Nlc3MsIGNhbGxlciBoYXMgdG8gY2hlY2sgCisJICogc3RhdHVzIGJlZm9yZSBjYWxsaW5nIHRoaXMgbWV0aG9kLgorCSAqIEBwYXJhbSBzdGFydCBmaXJzdCBvZmZzZXQgb2YgdGhlIGFjY2VudHMgdG8gc3RhcnQgc2VhcmNoaW5nCisJICogQHBhcmFtIGVuZCBzdGFydCBvZiB0aGUgbGFzdCBhY2NlbnQgc2V0CisJICogQHJldHVybiBET05FIGlmIGEgbWF0Y2ggaXMgbm90IGZvdW5kLCBvdGhlcndpc2UgcmV0dXJuIHRoZSBzdGFydGluZworCSAqICAgICAgICAgb2Zmc2V0IG9mIHRoZSBtYXRjaC4gTm90ZSB0aGlzIHN0YXJ0IGluY2x1ZGVzIGFsbCBwcmVjZWRpbmcgCisJICogCQkgICBhY2NlbnRzLgorCSAqLworCXByaXZhdGUgaW50IGRvTmV4dENhbm9uaWNhbFByZWZpeE1hdGNoKGludCBzdGFydCwgaW50IGVuZCkKKwl7CisJICAgIGlmICgoZ2V0RkNEKHRhcmdldFRleHQsIHN0YXJ0KSAmIExBU1RfQllURV9NQVNLXykgPT0gMCkgeworCSAgICAgICAgLy8gZGllLi4uIGZhaWxlZCBhdCBhIGJhc2UgY2hhcmFjdGVyCisJICAgICAgICByZXR1cm4gRE9ORTsKKwkgICAgfQorCQorCQlzdGFydCA9IHRhcmdldFRleHQuZ2V0SW5kZXgoKTsgLy8gaW5kZXggY2hhbmdlZCBieSBmY2QKKwkgICAgaW50IG9mZnNldCA9IGdldE5leHRCYXNlT2Zmc2V0KHRhcmdldFRleHQsIHN0YXJ0KTsKKwkgICAgc3RhcnQgPSBnZXRQcmV2aW91c0Jhc2VPZmZzZXQoc3RhcnQpOworCQorCSAgICBTdHJpbmdCdWZmZXIgYWNjZW50cyA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKwkgICAgU3RyaW5nIGFjY2VudHN0ciA9IGdldFN0cmluZyh0YXJnZXRUZXh0LCBzdGFydCwgb2Zmc2V0IC0gc3RhcnQpOworCSAgICAvLyBub3JtYWxpemluZyB0aGUgb2ZmZW5zaXZlIHN0cmluZworCSAgICBpZiAoTm9ybWFsaXplci5xdWlja0NoZWNrKGFjY2VudHN0ciwgTm9ybWFsaXplci5ORkQpIAorCSAgICAgICAgCQkJCQkJCQkJCT09IE5vcm1hbGl6ZXIuTk8pIHsKKwkgICAgICAgIGFjY2VudHN0ciA9IE5vcm1hbGl6ZXIuZGVjb21wb3NlKGFjY2VudHN0ciwgZmFsc2UpOworCSAgICB9CisJICAgIGFjY2VudHMuYXBwZW5kKGFjY2VudHN0cik7CisJICAgICAgICAKKwkgICAgaW50IGFjY2VudHNpbmRleFtdID0gbmV3IGludFtJTklUSUFMX0FSUkFZX1NJWkVfXTsgICAgICAKKwkgICAgaW50IGFjY2VudHNpemUgPSBnZXRVbmJsb2NrZWRBY2NlbnRJbmRleChhY2NlbnRzLCBhY2NlbnRzaW5kZXgpOworCSAgICBpbnQgY291bnQgPSAoMiA8PCAoYWNjZW50c2l6ZSAtIDEpKSAtIDI7ICAKKwkgICAgd2hpbGUgKGNvdW50ID4gMCkgeworCSAgICAJLy8gY29weSB0aGUgYmFzZSBjaGFyYWN0ZXJzCisJICAgIAltX2Nhbm9uaWNhbFByZWZpeEFjY2VudHNfLmRlbGV0ZSgwLCAKKwkgICAgCQkJCQkJCQltX2Nhbm9uaWNhbFByZWZpeEFjY2VudHNfLmxlbmd0aCgpKTsKKwkgICAgCWludCBrID0gMDsKKwkgICAgICAgIGZvciAoOyBrIDwgYWNjZW50c2luZGV4WzBdOyBrICsrKSB7CisJICAgICAgICAgICAgbV9jYW5vbmljYWxQcmVmaXhBY2NlbnRzXy5hcHBlbmQoYWNjZW50cy5jaGFyQXQoaykpOworCSAgICAgICAgfQorCSAgICAgICAgLy8gZm9ybWluZyBhbGwgcG9zc2libGUgY2Fub25pY2FsIHJlYXJyYW5nZW1lbnQgYnkgZHJvcHBpbmcKKwkgICAgICAgIC8vIHNldHMgb2YgYWNjZW50cworCSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gYWNjZW50c2l6ZSAtIDE7IGkgKyspIHsKKwkgICAgICAgICAgICBpbnQgbWFzayA9IDEgPDwgKGFjY2VudHNpemUgLSBpIC0gMSk7CisJICAgICAgICAgICAgaWYgKChjb3VudCAmIG1hc2spICE9IDApIHsKKwkgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IGFjY2VudHNpbmRleFtpXTsgaiA8IGFjY2VudHNpbmRleFtpICsgMV07IAorCSAgICAgICAgICAgICAgICAJCQkJCQkJCQkJCQkJaiArKykgeworCSAgICAgICAgICAgICAgICAgICAgbV9jYW5vbmljYWxQcmVmaXhBY2NlbnRzXy5hcHBlbmQoYWNjZW50cy5jaGFyQXQoaikpOworCSAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgfQorCSAgICAgICAgfQorCSAgICAgICAgU3RyaW5nQnVmZmVyIG1hdGNoID0gbWVyZ2UobV9jYW5vbmljYWxQcmVmaXhBY2NlbnRzXywKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFRleHQsIG9mZnNldCwgZW5kLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jYW5vbmljYWxTdWZmaXhBY2NlbnRzXyk7CisJICAgICAgICAgICAgCisJICAgICAgICAvLyBpZiBzdGF0dXMgaXMgYSBmYWlsdXJlLCB1Y29sX3NldFRleHQgZG9lcyBub3RoaW5nLgorCSAgICAgICAgLy8gcnVuIHRoZSBjb2xsYXRvciBpdGVyYXRvciB0aHJvdWdoIHRoaXMgbWF0Y2gKKwkgICAgICAgIG1fdXRpbENvbEVJdGVyXy5zZXRUZXh0KG1hdGNoLnRvU3RyaW5nKCkpOworCSAgICAgICAgaWYgKGNoZWNrQ29sbGF0aW9uTWF0Y2gobV91dGlsQ29sRUl0ZXJfKSkgeworCSAgICAgICAgIAlyZXR1cm4gc3RhcnQ7CisJICAgICAgICB9CisJICAgICAgICBjb3VudCAtLTsKKwkgICAgfQorCSAgICByZXR1cm4gRE9ORTsKKwl9CisKKwkvKioKKwkqIEdldHMgdGhlIG9mZnNldCB0byB0aGUgc2FmZSBwb2ludCBpbiB0ZXh0IGJlZm9yZSB0ZXh0b2Zmc2V0LgorCSogaWUuIG5vdCB0aGUgbWlkZGxlIG9mIGEgY29udHJhY3Rpb24sIHN3YXBwYWJsZSBjaGFyYWN0ZXJzIG9yIAorCSogc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXJzLgorCSogQHBhcmFtIHN0YXJ0IG9mZnNldCBpbiBzdHJpbmcKKwkqIEBwYXJhbSB0ZXh0b2Zmc2V0IG9mZnNldCBpbiBzdHJpbmcKKwkqIEByZXR1cm4gb2Zmc2V0IHRvIHRoZSBwcmV2aW91cyBzYWZlIGNoYXJhY3RlcgorCSovCisJcHJpdmF0ZSBmaW5hbCBpbnQgZ2V0UHJldmlvdXNTYWZlT2Zmc2V0KGludCBzdGFydCwgaW50IHRleHRvZmZzZXQpCisJeworCSAgICBpbnQgcmVzdWx0ID0gdGV4dG9mZnNldDsgLy8gZmlyc3QgY29udHJhY3Rpb24gY2hhcmFjdGVyCisJICAgIHRhcmdldFRleHQuc2V0SW5kZXgodGV4dG9mZnNldCk7CisJICAgIHdoaWxlIChyZXN1bHQgPj0gc3RhcnQgJiYgbV9jb2xsYXRvcl8uaXNVbnNhZmUodGFyZ2V0VGV4dC5wcmV2aW91cygpKSkgeworCSAgICAgICAgcmVzdWx0ID0gdGFyZ2V0VGV4dC5nZXRJbmRleCgpOworCSAgICB9CisJICAgIGlmIChyZXN1bHQgIT0gc3RhcnQpIHsKKwkgICAgICAgIC8vIHRoZSBmaXJzdCBjb250cmFjdGlvbiBjaGFyYWN0ZXIgaXMgY29uc2lkZXIgdW5zYWZlIGhlcmUKKwkgICAgICAgIHJlc3VsdCA9IHRhcmdldFRleHQuZ2V0SW5kZXgoKTsgLy8gb3JpZ2luYWxseSByZXN1bHQgLS07CisJICAgIH0KKwkgICAgcmV0dXJuIHJlc3VsdDsgCisJfQorCisJLyoqCisJICogVGFrZSB0aGUgcmVhcnJhbmdlZCBlbmQgYWNjZW50cyBhbmQgdHJpZXMgbWF0Y2hpbmcuIElmIG1hdGNoIGZhaWxlZCBhdAorCSAqIGEgc2VwZXJhdGUgcHJlY2VkaW5nIHNldCBvZiBhY2NlbnRzIChzZXBlcmF0ZWQgZnJvbSB0aGUgcmVhcnJhbmdlZCBvbiBieQorCSAqIGF0IGxlYXN0IGEgYmFzZSBjaGFyYWN0ZXIpIHRoZW4gd2UgcmVhcnJhbmdlIHRoZSBwcmVjZWRpbmcgYWNjZW50cyBhbmQgCisJICogdHJpZXMgbWF0Y2hpbmcgYWdhaW4uCisJICogV2UgYWxsb3cgc2tpcHBpbmcgb2YgdGhlIGVuZHMgb2YgdGhlIGFjY2VudCBzZXQgaWYgdGhlIGNlcyBkbyBub3QgbWF0Y2guIAorCSAqIEhvd2V2ZXIgaWYgdGhlIGZhaWx1cmUgaXMgZm91bmQgYmVmb3JlIHRoZSBhY2NlbnQgc2V0LCBpdCBmYWlscy4KKwkgKiBJbnRlcm5hbCBtZXRob2QsIHN0YXR1cyBhc3N1bWVkIHRvIGJlIHN1Y2Nlc3MsIGNhbGxlciBoYXMgdG8gY2hlY2sgCisJICogc3RhdHVzIGJlZm9yZSBjYWxsaW5nIHRoaXMgbWV0aG9kLgorCSAqIEBwYXJhbSB0ZXh0b2Zmc2V0IG9mIHRoZSBzdGFydCBvZiB0aGUgcmVhcnJhbmdlZCBhY2NlbnQKKwkgKiBAcmV0dXJuIERPTkUgaWYgYSBtYXRjaCBpcyBub3QgZm91bmQsIG90aGVyd2lzZSByZXR1cm4gdGhlIHN0YXJ0aW5nCisJICogICAgICAgICBvZmZzZXQgb2YgdGhlIG1hdGNoLiBOb3RlIHRoaXMgc3RhcnQgaW5jbHVkZXMgYWxsIHByZWNlZGluZyAKKwkgKiAgICAgICAgIGFjY2VudHMuCisJICovCisJcHJpdmF0ZSBpbnQgZG9OZXh0Q2Fub25pY2FsU3VmZml4TWF0Y2goaW50IHRleHRvZmZzZXQpCisJeworCSAgICBpbnQgc2FmZWxlbmd0aCA9IDA7CisJICAgIFN0cmluZ0J1ZmZlciBzYWZldGV4dDsKKwkJaW50IHNhZmVvZmZzZXQgPSBtX3RleHRCZWdpbk9mZnNldF87IAorCQkKKwkgICAgaWYgKHRleHRvZmZzZXQgIT0gbV90ZXh0QmVnaW5PZmZzZXRfIAorCSAgICAJJiYgbV9jYW5vbmljYWxTdWZmaXhBY2NlbnRzXy5sZW5ndGgoKSA+IDAKKwkgICAgCSYmIG1fY29sbGF0b3JfLmlzVW5zYWZlKG1fY2Fub25pY2FsU3VmZml4QWNjZW50c18uY2hhckF0KDApKSkgeworCSAgICAgICAgc2FmZW9mZnNldCAgICAgPSBnZXRQcmV2aW91c1NhZmVPZmZzZXQobV90ZXh0QmVnaW5PZmZzZXRfLCAKKwkgICAgICAgIAkJCQkJCQkJCQl0ZXh0b2Zmc2V0KTsKKwkgICAgICAgIHNhZmVsZW5ndGggICAgID0gdGV4dG9mZnNldCAtIHNhZmVvZmZzZXQ7CisJICAgICAgICBzYWZldGV4dCAgICAgICA9IG1lcmdlKG51bGwsIHRhcmdldFRleHQsIHNhZmVvZmZzZXQsIHRleHRvZmZzZXQsIAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2Nhbm9uaWNhbFN1ZmZpeEFjY2VudHNfKTsKKwkgICAgfQorCSAgICBlbHNlIHsKKwkgICAgICAgIHNhZmV0ZXh0ID0gbV9jYW5vbmljYWxTdWZmaXhBY2NlbnRzXzsKKwkgICAgfQorCQorCSAgICAvLyBpZiBzdGF0dXMgaXMgYSBmYWlsdXJlLCB1Y29sX3NldFRleHQgZG9lcyBub3RoaW5nCisJICAgIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvciBjb2xlaXRlciA9IG1fdXRpbENvbEVJdGVyXzsKKwkgICAgY29sZWl0ZXIuc2V0VGV4dChzYWZldGV4dC50b1N0cmluZygpKTsKKwkgICAgLy8gc3RhdHVzIGNoZWNrZWQgaW4gbG9vcCBiZWxvdworCQorCSAgICBpbnQgY2VpbmRleCA9IG1fcGF0dGVybl8ubV9DRUxlbmd0aF8gLSAxOworCSAgICBib29sZWFuIGlzU2FmZSA9IHRydWU7IC8vIGluZGljYXRpb24gZmxhZyBmb3IgcG9zaXRpb24gaW4gc2FmZSB6b25lCisJICAgIAorCSAgICB3aGlsZSAoY2VpbmRleCA+PSAwKSB7CisJICAgICAgICBpbnQgdGV4dGNlID0gY29sZWl0ZXIucHJldmlvdXMoKTsKKwkgICAgICAgIGlmICh0ZXh0Y2UgPT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUikgeworCSAgICAgICAgICAgIC8vIGNoZWNrIGlmIHdlIGhhdmUgcGFzc2VkIHRoZSBzYWZlIGJ1ZmZlcgorCSAgICAgICAgICAgIGlmIChjb2xlaXRlciA9PSBtX2NvbEVJdGVyXykgeworCSAgICAgICAgICAgICAgICByZXR1cm4gRE9ORTsKKwkgICAgICAgICAgICB9CisJICAgICAgICAgICAgY29sZWl0ZXIgPSBtX2NvbEVJdGVyXzsKKwkgICAgICAgICAgICBpZiAoc2FmZXRleHQgIT0gbV9jYW5vbmljYWxTdWZmaXhBY2NlbnRzXykgeworCSAgICAgICAgICAgIAlzYWZldGV4dC5kZWxldGUoMCwgc2FmZXRleHQubGVuZ3RoKCkpOworCSAgICAgICAgICAgIH0KKwkgICAgICAgICAgICBjb2xlaXRlci5zZXRFeGFjdE9mZnNldChzYWZlb2Zmc2V0KTsKKwkgICAgICAgICAgICAvLyBzdGF0dXMgY2hlY2tlZCBhdCB0aGUgc3RhcnQgb2YgdGhlIGxvb3AKKwkgICAgICAgICAgICBpc1NhZmUgPSBmYWxzZTsKKwkgICAgICAgICAgICBjb250aW51ZTsKKwkgICAgICAgIH0KKwkgICAgICAgIHRleHRjZSA9IGdldENFKHRleHRjZSk7CisJICAgICAgICBpZiAodGV4dGNlICE9IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5JR05PUkFCTEUgCisJICAgICAgICAJJiYgdGV4dGNlICE9IG1fcGF0dGVybl8ubV9DRV9bY2VpbmRleF0pIHsKKwkgICAgICAgICAgICAvLyBkbyB0aGUgYmVnaW5uaW5nIHN0dWZmCisJICAgICAgICAgICAgaW50IGZhaWxlZG9mZnNldCA9IGNvbGVpdGVyLmdldE9mZnNldCgpOworCSAgICAgICAgICAgIGlmIChpc1NhZmUgJiYgZmFpbGVkb2Zmc2V0ID49IHNhZmVsZW5ndGgpIHsKKwkgICAgICAgICAgICAgICAgLy8gYWxhcy4uLiBubyBob3BlLiBmYWlsZWQgYXQgcmVhcnJhbmdlZCBhY2NlbnQgc2V0CisJICAgICAgICAgICAgICAgIHJldHVybiBET05FOworCSAgICAgICAgICAgIH0KKwkgICAgICAgICAgICBlbHNlIHsKKwkgICAgICAgICAgICAgICAgaWYgKGlzU2FmZSkgeworCSAgICAgICAgICAgICAgICAgICAgZmFpbGVkb2Zmc2V0ICs9IHNhZmVvZmZzZXQ7CisJICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgIC8vIHRyeSByZWFycmFuZ2luZyB0aGUgZnJvbnQgYWNjZW50cworCSAgICAgICAgICAgICAgICBpbnQgcmVzdWx0ID0gZG9OZXh0Q2Fub25pY2FsUHJlZml4TWF0Y2goZmFpbGVkb2Zmc2V0LCAKKwkgICAgICAgICAgICAgICAgCQkJCQkJCQkJCXRleHRvZmZzZXQpOworCSAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IERPTkUpIHsKKwkgICAgICAgICAgICAgICAgICAgIC8vIGlmIHN0YXR1cyBpcyBhIGZhaWx1cmUsIHVjb2xfc2V0T2Zmc2V0IGRvZXMgbm90aGluZworCSAgICAgICAgICAgICAgICAgICAgbV9jb2xFSXRlcl8uc2V0RXhhY3RPZmZzZXQocmVzdWx0KTsKKwkgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworCSAgICAgICAgICAgIH0KKwkgICAgICAgIH0KKwkgICAgICAgIGlmICh0ZXh0Y2UgPT0gbV9wYXR0ZXJuXy5tX0NFX1tjZWluZGV4XSkgeworCSAgICAgICAgICAgIGNlaW5kZXggLS07CisJICAgICAgICB9CisJICAgIH0KKwkgICAgLy8gc2V0IG9mZnNldCBoZXJlCisJICAgIGlmIChpc1NhZmUpIHsKKwkgICAgICAgIGludCByZXN1bHQgPSBjb2xlaXRlci5nZXRPZmZzZXQoKTsKKwkgICAgICAgIC8vIHNldHMgdGhlIHRleHQgaXRlcmF0b3Igd2l0aCB0aGUgY29ycmVjdCBleHBhbnNpb24gYW5kIG9mZnNldAorCSAgICAgICAgaW50IGxlZnRvdmVyY2VzID0gY29sZWl0ZXIubV9DRUJ1ZmZlck9mZnNldF87CisJICAgICAgICBpZiAocmVzdWx0ID49IHNhZmVsZW5ndGgpIHsgCisJICAgICAgICAgICAgcmVzdWx0ID0gdGV4dG9mZnNldDsKKwkgICAgICAgIH0KKwkgICAgICAgIGVsc2UgeworCSAgICAgICAgICAgIHJlc3VsdCArPSBzYWZlb2Zmc2V0OworCSAgICAgICAgfQorCSAgICAgICAgbV9jb2xFSXRlcl8uc2V0RXhhY3RPZmZzZXQocmVzdWx0KTsKKwkgICAgICAgIG1fY29sRUl0ZXJfLm1fQ0VCdWZmZXJPZmZzZXRfID0gbGVmdG92ZXJjZXM7CisJICAgICAgICByZXR1cm4gcmVzdWx0OworCSAgICB9CisJICAgIAorCSAgICByZXR1cm4gY29sZWl0ZXIuZ2V0T2Zmc2V0KCk7ICAgICAgICAgICAgICAKKwl9CisJCisJLyoqCisJICogVHJ5aW5nIG91dCB0aGUgc3Vic3RyaW5nIGFuZCBzZWVzIGlmIGl0IGNhbiBiZSBhIGNhbm9uaWNhbCBtYXRjaC4KKwkgKiBUaGlzIHdpbGwgdHJ5IG5vcm1hbGl6aW5nIHRoZSBlbmQgYWNjZW50cyBhbmQgYXJyYW5naW5nIHRoZW0gaW50byAKKwkgKiBjYW5vbmljYWwgZXF1aXZhbGVudHMgYW5kIGNoZWNrIHRoZWlyIGNvcnJlc3BvbmRpbmcgY2VzIHdpdGggdGhlIHBhdHRlcm4gCisJICogY2UuCisJICogU3VmZml4IGFjY2VudHMgaW4gdGhlIHRleHQgd2lsbCBiZSBncm91cGVkIGFjY29yZGluZyB0byB0aGVpciBjb21iaW5pbmcgCisJICogY2xhc3MgYW5kIHRoZSBncm91cHMgd2lsbCBiZSBtaXhlZCBhbmQgbWF0Y2hlZCB0byB0cnkgZmluZCB0aGUgcGVyZmVjdCAKKwkgKiBtYXRjaCB3aXRoIHRoZSBwYXR0ZXJuLgorCSAqIFNvIGZvciBpbnN0YW5jZSBsb29raW5nIGZvciAiXHUwMzAxIiBpbiAiXHUwMzBBXHUwMzAxXHUwMzI1IgorCSAqIHN0ZXAgMTogc3BsaXQgIlx1MDMwQVx1MDMwMSIgaW50byA2IG90aGVyIHR5cGUgb2YgcG90ZW50aWFsIGFjY2VudCAKKwkgKiAgICAgICAgIHN1YnN0cmluZ3MKKwkgKiAgICAgICAgICJcdTAzMEEiLCAiXHUwMzAxIiwgIlx1MDMyNSIsICJcdTAzMEFcdTAzMDEiLCAiXHUwMzBBXHUwMzI1IiwgCisJICogICAgICAgICAiXHUwMzAxXHUwMzI1Ii4KKwkgKiBzdGVwIDI6IGNoZWNrIGlmIGFueSBvZiB0aGUgZ2VuZXJhdGVkIHN1YnN0cmluZ3MgbWF0Y2hlcyB0aGUgcGF0dGVybi4KKwkgKiBAcGFyYW0gdGV4dG9mZnNldCBlbmQgb2Zmc2V0IGluIHRoZSBjb2xsYXRpb24gZWxlbWVudCB0ZXh0IHRoYXQgZW5kcyB3aXRoIAorCSAqICAgICAgICAgICAgICAgICAgIHRoZSBhY2NlbnRzIHRvIGJlIHJlYXJyYW5nZWQKKwkgKiBAcmV0dXJuIHRydWUgaWYgdGhlIG1hdGNoIGlzIHZhbGlkLCBmYWxzZSBvdGhlcndpc2UKKwkgKi8KKwlwcml2YXRlIGJvb2xlYW4gZG9OZXh0Q2Fub25pY2FsTWF0Y2goaW50IHRleHRvZmZzZXQpCisJeworCQlpbnQgb2Zmc2V0ID0gbV9jb2xFSXRlcl8uZ2V0T2Zmc2V0KCk7CisJCXRhcmdldFRleHQuc2V0SW5kZXgodGV4dG9mZnNldCk7CisJCWlmIChVVEYxNi5pc1RyYWlsU3Vycm9nYXRlKHRhcmdldFRleHQucHJldmlvdXMoKSkgCisJCQkmJiB0YXJnZXRUZXh0LmdldEluZGV4KCkgPiBtX3RleHRCZWdpbk9mZnNldF8pIHsgCisJCQlpZiAoIVVURjE2LmlzTGVhZFN1cnJvZ2F0ZSh0YXJnZXRUZXh0LnByZXZpb3VzKCkpKSB7CisJCQkJdGFyZ2V0VGV4dC5uZXh0KCk7CisJCQl9CisJCX0KKwkgICAgaWYgKChnZXRGQ0QodGFyZ2V0VGV4dCwgdGFyZ2V0VGV4dC5nZXRJbmRleCgpKSAmIExBU1RfQllURV9NQVNLXykgPT0gMCkgeworCSAgICAgICAgaWYgKG1fcGF0dGVybl8ubV9oYXNQcmVmaXhBY2NlbnRzXykgeworCSAgICAgICAgICAgIG9mZnNldCA9IGRvTmV4dENhbm9uaWNhbFByZWZpeE1hdGNoKG9mZnNldCwgdGV4dG9mZnNldCk7CisJICAgICAgICAgICAgaWYgKG9mZnNldCAhPSBET05FKSB7CisJICAgICAgICAgICAgICAgIG1fY29sRUl0ZXJfLnNldEV4YWN0T2Zmc2V0KG9mZnNldCk7CisJICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCSAgICAgICAgICAgIH0KKwkgICAgICAgIH0KKwkgICAgICAgIHJldHVybiBmYWxzZTsKKwkgICAgfQorCQorCSAgICBpZiAoIW1fcGF0dGVybl8ubV9oYXNTdWZmaXhBY2NlbnRzXykgeworCSAgICAgICAgcmV0dXJuIGZhbHNlOworCSAgICB9CisJCisJICAgIFN0cmluZ0J1ZmZlciBhY2NlbnRzID0gbmV3IFN0cmluZ0J1ZmZlcigpOworCSAgICAvLyBvZmZzZXQgdG8gdGhlIGxhc3QgYmFzZSBjaGFyYWN0ZXIgaW4gc3Vic3RyaW5nIHRvIHNlYXJjaAorCSAgICBpbnQgYmFzZW9mZnNldCA9IGdldFByZXZpb3VzQmFzZU9mZnNldCh0YXJnZXRUZXh0LCB0ZXh0b2Zmc2V0KTsKKwkgICAgLy8gbm9ybWFsaXppbmcgdGhlIG9mZmVuc2l2ZSBzdHJpbmcKKwkgICAgU3RyaW5nIGFjY2VudHN0ciA9IGdldFN0cmluZyh0YXJnZXRUZXh0LCBiYXNlb2Zmc2V0LCAKKwkgICAgCQkJCQkJCSB0ZXh0b2Zmc2V0IC0gYmFzZW9mZnNldCk7CisJICAgIGlmIChOb3JtYWxpemVyLnF1aWNrQ2hlY2soYWNjZW50c3RyLCBOb3JtYWxpemVyLk5GRCkgCisJICAgICAgICAJCQkJCQkJCQkJPT0gTm9ybWFsaXplci5OTykgeworCSAgICAgICAgYWNjZW50c3RyID0gTm9ybWFsaXplci5kZWNvbXBvc2UoYWNjZW50c3RyLCBmYWxzZSk7CisJICAgIH0KKwkgICAgYWNjZW50cy5hcHBlbmQoYWNjZW50c3RyKTsKKwkgICAgLy8gc3RhdHVzIGNoZWNrZWQgaW4gbG9vcCBiZWxvdworCSAgICAgICAgCisJICAgIGludCBhY2NlbnRzaW5kZXhbXSA9IG5ldyBpbnRbSU5JVElBTF9BUlJBWV9TSVpFX107CisJICAgIGludCBzaXplID0gZ2V0VW5ibG9ja2VkQWNjZW50SW5kZXgoYWNjZW50cywgYWNjZW50c2luZGV4KTsKKwkKKwkgICAgLy8gMiBwb3dlciBuIC0gMSBtaW51cyB0aGUgZnVsbCBzZXQgb2YgYWNjZW50cworCSAgICBpbnQgIGNvdW50ID0gKDIgPDwgKHNpemUgLSAxKSkgLSAyOyAgCisJICAgIHdoaWxlIChjb3VudCA+IDApIHsKKyAgICAgICAgICAgIG1fY2Fub25pY2FsU3VmZml4QWNjZW50c18uZGVsZXRlKDAsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY2Fub25pY2FsU3VmZml4QWNjZW50c18ubGVuZ3RoKCkpOworCSAgICAgICAgLy8gY29weSB0aGUgYmFzZSBjaGFyYWN0ZXJzCisJICAgICAgICBmb3IgKGludCBrID0gMDsgayA8IGFjY2VudHNpbmRleFswXTsgayArKykgeworCSAgICAgICAgICAgIG1fY2Fub25pY2FsU3VmZml4QWNjZW50c18uYXBwZW5kKGFjY2VudHMuY2hhckF0KGspKTsKKwkgICAgICAgIH0KKwkgICAgICAgIC8vIGZvcm1pbmcgYWxsIHBvc3NpYmxlIGNhbm9uaWNhbCByZWFycmFuZ2VtZW50IGJ5IGRyb3BwaW5nCisJICAgICAgICAvLyBzZXRzIG9mIGFjY2VudHMKKwkgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IHNpemUgLSAxOyBpICsrKSB7CisJICAgICAgICAgICAgaW50IG1hc2sgPSAxIDw8IChzaXplIC0gaSAtIDEpOworCSAgICAgICAgICAgIGlmICgoY291bnQgJiBtYXNrKSAhPSAwKSB7CisJICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSBhY2NlbnRzaW5kZXhbaV07IGogPCBhY2NlbnRzaW5kZXhbaSArIDFdOyAKKwkgICAgICAgICAgICAgICAgCWogKyspIHsKKwkgICAgICAgICAgICAgICAgICAgIG1fY2Fub25pY2FsU3VmZml4QWNjZW50c18uYXBwZW5kKGFjY2VudHMuY2hhckF0KGopKTsKKwkgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgIH0KKwkgICAgICAgIH0KKwkgICAgICAgIG9mZnNldCA9IGRvTmV4dENhbm9uaWNhbFN1ZmZpeE1hdGNoKGJhc2VvZmZzZXQpOworCSAgICAgICAgaWYgKG9mZnNldCAhPSBET05FKSB7CisJICAgICAgICAgICAgcmV0dXJuIHRydWU7IC8vIG1hdGNoIGZvdW5kCisJICAgICAgICB9CisJICAgICAgICBjb3VudCAtLTsKKwkgICAgfQorCSAgICByZXR1cm4gZmFsc2U7CisJfQorCQorCS8qKgorCSAqIEdldHMgdGhlIHByZXZpb3VzIGJhc2UgY2hhcmFjdGVyIG9mZnNldCBkZXBlbmRpbmcgb24gdGhlIHN0cmluZyBzZWFyY2ggCisJICogcGF0dGVybiBkYXRhCisJICogQHBhcmFtIHN0cnNyY2ggc3RyaW5nIHNlYXJjaCBkYXRhCisJICogQHBhcmFtIHRleHRvZmZzZXQgY3VycmVudCBvZmZzZXQsIGN1cnJlbnQgY2hhcmFjdGVyCisJICogQHJldHVybiB0aGUgb2Zmc2V0IG9mIHRoZSBuZXh0IGNoYXJhY3RlciBhZnRlciB0aGlzIGJhc2UgY2hhcmFjdGVyIG9yIAorCSAqIAkJCWl0c2VsZiBpZiBpdCBpcyBhIGNvbXBvc2VkIGNoYXJhY3RlciB3aXRoIGFjY2VudHMKKwkgKi8KKwlwcml2YXRlIGZpbmFsIGludCBnZXRQcmV2aW91c0Jhc2VPZmZzZXQoaW50IHRleHRvZmZzZXQpCisJeworCSAgICBpZiAobV9wYXR0ZXJuXy5tX2hhc1ByZWZpeEFjY2VudHNfICYmIHRleHRvZmZzZXQgPiBtX3RleHRCZWdpbk9mZnNldF8pIHsKKwkgICAgICAgIGludCBvZmZzZXQgPSB0ZXh0b2Zmc2V0OworCSAgICAgICAgaWYgKChnZXRGQ0QodGFyZ2V0VGV4dCwgb2Zmc2V0KSA+PiBTRUNPTkRfTEFTVF9CWVRFX1NISUZUXykgIT0gMCkgeworCSAgICAgICAgICAgIHJldHVybiBnZXRQcmV2aW91c0Jhc2VPZmZzZXQodGFyZ2V0VGV4dCwgdGV4dG9mZnNldCk7CisJICAgICAgICB9CisJICAgIH0KKwkgICAgcmV0dXJuIHRleHRvZmZzZXQ7CisJfQorCQorCS8qKgorCSAqIENoZWNrcyBtYXRjaCBmb3IgY29udHJhY3Rpb24uIAorCSAqIElmIHRoZSBtYXRjaCBlbmRzIHdpdGggYSBwYXJ0aWFsIGNvbnRyYWN0aW9uIHdlIGZhaWwuCisJICogSWYgdGhlIG1hdGNoIHN0YXJ0cyB0b28gZmFyIG9mZiAoYmVjYXVzZSBvZiBiYWNrd2FyZHMgaXRlcmF0aW9uKSB3ZSB0cnkgCisJICogdG8gY2hpcCBvZmYgdGhlIGV4dHJhIGNoYXJhY3RlcnMuCisJICogVXNlcyB0aGUgdGVtcG9yYXJ5IHV0aWwgYnVmZmVyIGZvciByZXR1cm4gdmFsdWVzIG9mIHRoZSBtb2RpZmllZCBzdGFydAorCSAqIGFuZCBlbmQuCisJICogQHBhcmFtIHN0YXJ0IG9mZnNldCBvZiBwb3RlbnRpYWwgbWF0Y2gsIHRvIGJlIG1vZGlmaWVkIGlmIG5lY2Vzc2FyeQorCSAqIEBwYXJhbSBlbmQgb2Zmc2V0IG9mIHBvdGVudGlhbCBtYXRjaCwgdG8gYmUgbW9kaWZpZWQgaWYgbmVjZXNzYXJ5CisJICogQHJldHVybiB0cnVlIGlmIG1hdGNoIHBhc3NlcyB0aGUgY29udHJhY3Rpb24gdGVzdCwgZmFsc2Ugb3RoZXJ3aXNlLiAKKwkgKi8KKwlwcml2YXRlIGJvb2xlYW4gY2hlY2tOZXh0Q2Fub25pY2FsQ29udHJhY3Rpb25NYXRjaChpbnQgc3RhcnQsIGludCBlbmQpIAorCXsKKwkgICAgLy8gVGhpcyBwYXJ0IGNoZWNrcyBpZiBlaXRoZXIgZW5kcyBvZiB0aGUgbWF0Y2ggY29udGFpbnMgcG90ZW50aWFsIAorCSAgICAvLyBjb250cmFjdGlvbi4gSWYgc28gd2UnbGwgaGF2ZSB0byBpdGVyYXRlIHRocm91Z2ggdGhlbQorCSAgICBjaGFyIHNjaGFyID0gMDsKKwkgICAgY2hhciBlY2hhciA9IDA7CisJICAgIGlmIChlbmQgPCBtX3RleHRMaW1pdE9mZnNldF8pIHsKKwkgICAgCXRhcmdldFRleHQuc2V0SW5kZXgoZW5kKTsKKwkgICAgCWVjaGFyID0gdGFyZ2V0VGV4dC5jdXJyZW50KCk7CisJICAgIH0KKwkgICAgaWYgKHN0YXJ0IDwgbV90ZXh0TGltaXRPZmZzZXRfKSB7CisJICAgIAl0YXJnZXRUZXh0LnNldEluZGV4KHN0YXJ0ICsgMSk7CisJICAgIAlzY2hhciA9IHRhcmdldFRleHQuY3VycmVudCgpOworCSAgICB9CisJICAgIGlmIChtX2NvbGxhdG9yXy5pc1Vuc2FmZShlY2hhcikgfHwgbV9jb2xsYXRvcl8uaXNVbnNhZmUoc2NoYXIpKSB7CisJICAgICAgICBpbnQgZXhwYW5zaW9uICA9IG1fY29sRUl0ZXJfLm1fQ0VCdWZmZXJPZmZzZXRfOworCSAgICAgICAgYm9vbGVhbiBoYXNFeHBhbnNpb24gPSBleHBhbnNpb24gPiAwOworCSAgICAgICAgbV9jb2xFSXRlcl8uc2V0RXhhY3RPZmZzZXQoc3RhcnQpOworCSAgICAgICAgaW50IHRlbXAgPSBzdGFydDsKKwkgICAgICAgIHdoaWxlIChleHBhbnNpb24gPiAwKSB7CisJICAgICAgICAgICAgLy8gZ2V0dGluZyByaWQgb2YgdGhlIHJlZHVuZGFudCBjZSwgY2F1c2VkIGJ5IHNldE9mZnNldC4KKwkgICAgICAgICAgICAvLyBzaW5jZSBiYWNrd2FyZCBjb250cmFjdGlvbi9leHBhbnNpb24gbWF5IGhhdmUgZXh0cmEgY2VzIGlmIAorCSAgICAgICAgICAgIC8vIHdlIGFyZSBpbiB0aGUgbm9ybWFsaXphdGlvbiBidWZmZXIsIGhhc0FjY2VudHNCZWZvcmVNYXRjaCAKKwkgICAgICAgICAgICAvLyB3b3VsZCBoYXZlIHRha2VuIGNhcmUgb2YgaXQuCisJICAgICAgICAgICAgLy8gRS5nLiB0aGUgY2hhcmFjdGVyIFx1MDFGQSB3aWxsIGhhdmUgYW4gZXhwYW5zaW9uIG9mIDMsIGJ1dCAKKwkgICAgICAgICAgICAvLyBpZiB3ZSBhcmUgb25seSBsb29raW5nIGZvciBhY3V0ZSBhbmQgcmluZyBcdTAzMEEgYW5kIFx1MDMwMSwgCisJICAgICAgICAgICAgLy8gd2UnbGwgaGF2ZSB0byBza2lwIHRoZSBmaXJzdCBjZSBpbiB0aGUgZXhwYW5zaW9uIGJ1ZmZlci4KKwkgICAgICAgICAgICBtX2NvbEVJdGVyXy5uZXh0KCk7CisJICAgICAgICAgICAgaWYgKG1fY29sRUl0ZXJfLmdldE9mZnNldCgpICE9IHRlbXApIHsKKwkgICAgICAgICAgICAgICAgc3RhcnQgPSB0ZW1wOworCSAgICAgICAgICAgICAgICB0ZW1wICA9IG1fY29sRUl0ZXJfLmdldE9mZnNldCgpOworCSAgICAgICAgICAgIH0KKwkgICAgICAgICAgICBleHBhbnNpb24gLS07CisJICAgICAgICB9CisJCisJICAgICAgICBpbnQgY291bnQgPSAwOworCSAgICAgICAgd2hpbGUgKGNvdW50IDwgbV9wYXR0ZXJuXy5tX0NFTGVuZ3RoXykgeworCSAgICAgICAgICAgIGludCBjZSA9IGdldENFKG1fY29sRUl0ZXJfLm5leHQoKSk7CisJICAgICAgICAgICAgLy8gc3RhdHVzIGNoZWNrZWQgYmVsb3csIG5vdGUgdGhhdCBpZiBzdGF0dXMgaXMgYSBmYWlsdXJlCisJICAgICAgICAgICAgLy8gdWNvbF9uZXh0IHJldHVybnMgVUNPTF9OVUxMT1JERVIKKwkgICAgICAgICAgICBpZiAoY2UgPT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLklHTk9SQUJMRSkgeworCSAgICAgICAgICAgICAgICBjb250aW51ZTsKKwkgICAgICAgICAgICB9CisJICAgICAgICAgICAgaWYgKGhhc0V4cGFuc2lvbiAmJiBjb3VudCA9PSAwIAorCSAgICAgICAgICAgIAkmJiBtX2NvbEVJdGVyXy5nZXRPZmZzZXQoKSAhPSB0ZW1wKSB7CisJICAgICAgICAgICAgICAgIHN0YXJ0ID0gdGVtcDsKKwkgICAgICAgICAgICAgICAgdGVtcCA9IG1fY29sRUl0ZXJfLmdldE9mZnNldCgpOworCSAgICAgICAgICAgIH0KKwkKKwkgICAgICAgICAgICBpZiAoY291bnQgPT0gMCAmJiBjZSAhPSBtX3BhdHRlcm5fLm1fQ0VfWzBdKSB7CisJICAgICAgICAgICAgICAgIC8vIGFjY2VudHMgbWF5IGhhdmUgZXh0cmEgc3RhcnRpbmcgY2VzLCB0aGlzIG9jY3VycyB3aGVuIGEgCisJICAgICAgICAgICAgICAgIC8vIHB1cmUgYWNjZW50IHBhdHRlcm4gaXMgbWF0Y2hlZCB3aXRob3V0IHJlYXJyYW5nZW1lbnQKKwkgICAgICAgICAgICAgICAgLy8gdGV4dCBcdTAzMjVcdTAzMDAgYW5kIGxvb2tpbmcgZm9yIFx1MDMwMAorCSAgICAgICAgICAgICAgICBpbnQgZXhwZWN0ZWQgPSBtX3BhdHRlcm5fLm1fQ0VfWzBdOyAKKwkgICAgICAgICAgICAgICAgaWYgKChnZXRGQ0QodGFyZ2V0VGV4dCwgc3RhcnQpICYgTEFTVF9CWVRFX01BU0tfKSAhPSAwKSB7CisJICAgICAgICAgICAgICAgICAgICBjZSA9IGdldENFKG1fY29sRUl0ZXJfLm5leHQoKSk7CisJICAgICAgICAgICAgICAgICAgICB3aGlsZSAoY2UgIT0gZXhwZWN0ZWQgCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgY2UgIT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUiAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBtX2NvbEVJdGVyXy5nZXRPZmZzZXQoKSA8PSBlbmQpIHsKKwkgICAgICAgICAgICAgICAgICAgICAgICBjZSA9IGdldENFKG1fY29sRUl0ZXJfLm5leHQoKSk7CisJICAgICAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICB9CisJICAgICAgICAgICAgaWYgKGNlICE9IG1fcGF0dGVybl8ubV9DRV9bY291bnRdKSB7CisJICAgICAgICAgICAgICAgIGVuZCArKzsKKwkgICAgICAgICAgICAgICAgZW5kID0gZ2V0TmV4dEJhc2VPZmZzZXQoZW5kKTsgIAorCSAgICAgICAgICAgICAgICBtX3V0aWxCdWZmZXJfWzBdID0gc3RhcnQ7CisJICAgICAgICAgICAgICAgIG1fdXRpbEJ1ZmZlcl9bMV0gPSBlbmQ7CisJICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwkgICAgICAgICAgICB9CisJICAgICAgICAgICAgY291bnQgKys7CisJICAgICAgICB9CisJICAgIH0gCisJICAgIG1fdXRpbEJ1ZmZlcl9bMF0gPSBzdGFydDsKKwkgICAgbV91dGlsQnVmZmVyX1sxXSA9IGVuZDsKKwkgICAgcmV0dXJuIHRydWU7CisJfQorCisJLyoqCisJICogQ2hlY2tzIGFuZCBzZXRzIHRoZSBtYXRjaCBpbmZvcm1hdGlvbiBpZiBmb3VuZC4KKwkgKiBDaGVja3MgCisJICogPHVsPgorCSAqIDxsaT4gdGhlIHBvdGVudGlhbCBtYXRjaCBkb2VzIG5vdCByZXBlYXQgdGhlIHByZXZpb3VzIG1hdGNoCisJICogPGxpPiBib3VuZGFyaWVzIGFyZSBjb3JyZWN0CisJICogPGxpPiBwb3RlbnRpYWwgbWF0Y2ggZG9lcyBub3QgZW5kIGluIHRoZSBtaWRkbGUgb2YgYSBjb250cmFjdGlvbgorCSAqIDxsaT4gaWRlbnRpY2FsIG1hdGNoZXMKKwkgKiA8L3VsPgorCSAqIE90aGVyd2lzZSB0aGUgb2Zmc2V0IHdpbGwgYmUgc2hpZnRlZCB0byB0aGUgbmV4dCBjaGFyYWN0ZXIuCisJICogVGhlIHJlc3VsdCBtX21hdGNoSW5kZXhfIGFuZCBtX21hdGNoTGVuZ3RoXyB3aWxsIGJlIHNldCB0byB0aGUgdHJ1bmNhdGVkCisJICogbW9yZSBmaXR0aW5nIHJlc3VsdCB2YWx1ZS4KKwkgKiBVc2VzIHRoZSB0ZW1wb3JhcnkgdXRpbGl0eSBidWZmZXIgZm9yIHN0b3JpbmcgdGhlIG1vZGlmaWVkIHRleHRvZmZzZXQuCisJICogQHBhcmFtIHRleHRvZmZzZXQgb2Zmc2V0IGluIHRoZSBjb2xsYXRpb24gZWxlbWVudCB0ZXh0LgorCSAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgbWF0Y2ggaXMgdmFsaWQsIGZhbHNlIG90aGVyd2lzZQorCSAqLworCXByaXZhdGUgYm9vbGVhbiBjaGVja05leHRDYW5vbmljYWxNYXRjaChpbnQgdGV4dG9mZnNldCkKKwl7CisJICAgIC8vIHRvIGVuc3VyZSB0aGF0IHRoZSBzdGFydCBhbmQgZW5kcyBhcmUgbm90IGNvbXBvc2l0ZSBjaGFyYWN0ZXJzCisJICAgIC8vIGlmIHdlIGhhdmUgYSBjYW5vbmljYWwgYWNjZW50IG1hdGNoCisJICAgIGlmICgobV9wYXR0ZXJuXy5tX2hhc1N1ZmZpeEFjY2VudHNfIAorCSAgICAJCSYmIG1fY2Fub25pY2FsU3VmZml4QWNjZW50c18ubGVuZ3RoKCkgIT0gMCkgfHwgCisJICAgICAgICAobV9wYXR0ZXJuXy5tX2hhc1ByZWZpeEFjY2VudHNfIAorCSAgICAgICAgCSYmIG1fY2Fub25pY2FsUHJlZml4QWNjZW50c18ubGVuZ3RoKCkgIT0gMCkpIHsKKwkgICAgICAgIG1fbWF0Y2hlZEluZGV4XyA9IGdldFByZXZpb3VzQmFzZU9mZnNldChtX2NvbEVJdGVyXy5nZXRPZmZzZXQoKSk7CisJICAgICAgICBtYXRjaExlbmd0aCA9IHRleHRvZmZzZXQgLSBtX21hdGNoZWRJbmRleF87CisJICAgICAgICByZXR1cm4gdHJ1ZTsKKwkgICAgfQorCQorCSAgICBpbnQgc3RhcnQgPSBtX2NvbEVJdGVyXy5nZXRPZmZzZXQoKTsKKwkgICAgaWYgKCFjaGVja05leHRDYW5vbmljYWxDb250cmFjdGlvbk1hdGNoKHN0YXJ0LCB0ZXh0b2Zmc2V0KSkgeworCSAgICAJLy8gcmV0dXJuIHRoZSBtb2RpZmllZCB0ZXh0b2Zmc2V0CisJICAgIAltX3V0aWxCdWZmZXJfWzBdID0gbV91dGlsQnVmZmVyX1sxXTsgCisJICAgICAgICByZXR1cm4gZmFsc2U7CisJICAgIH0KKwkgICAgc3RhcnQgPSBtX3V0aWxCdWZmZXJfWzBdOworCSAgICB0ZXh0b2Zmc2V0ID0gbV91dGlsQnVmZmVyX1sxXTsKKwkgICAgc3RhcnQgPSBnZXRQcmV2aW91c0Jhc2VPZmZzZXQoc3RhcnQpOworCSAgICAvLyB0aGlzIHRvdGFsbHkgbWF0Y2hlcywgaG93ZXZlciB3ZSBuZWVkIHRvIGNoZWNrIGlmIGl0IGlzIHJlcGVhdGluZworCSAgICBpZiAoY2hlY2tSZXBlYXRlZE1hdGNoKHN0YXJ0LCB0ZXh0b2Zmc2V0KSAKKwkgICAgCXx8ICFpc0JyZWFrVW5pdChzdGFydCwgdGV4dG9mZnNldCkgCisJICAgIAl8fCAhY2hlY2tJZGVudGljYWwoc3RhcnQsIHRleHRvZmZzZXQpKSB7CisJICAgICAgICB0ZXh0b2Zmc2V0ICsrOworCSAgICAgICAgdGV4dG9mZnNldCA9IGdldE5leHRCYXNlT2Zmc2V0KHRhcmdldFRleHQsIHRleHRvZmZzZXQpOworCSAgICAgICAgbV91dGlsQnVmZmVyX1swXSA9IHRleHRvZmZzZXQ7CisJICAgICAgICByZXR1cm4gZmFsc2U7CisJICAgIH0KKwkgICAgCisJICAgIG1fbWF0Y2hlZEluZGV4XyAgPSBzdGFydDsKKwkgICAgbWF0Y2hMZW5ndGggPSB0ZXh0b2Zmc2V0IC0gc3RhcnQ7CisJICAgIHJldHVybiB0cnVlOworCX0KKwkKKwkvKioKKwkgKiBTaGlmdGluZyB0aGUgY29sbGF0aW9uIGVsZW1lbnQgaXRlcmF0b3IgcG9zaXRpb24gZm9yd2FyZCB0byBwcmVwYXJlIGZvcgorCSAqIGEgcHJlY2VkaW5nIG1hdGNoLiBJZiB0aGUgZmlyc3QgY2hhcmFjdGVyIGlzIGEgdW5zYWZlIGNoYXJhY3Rlciwgd2UnbGwgCisJICogb25seSBzaGlmdCBieSAxIHRvIGNhcHR1cmUgY29udHJhY3Rpb25zLCBub3JtYWxpemF0aW9uIGV0Yy4KKwkgKiBAcGFyYW0gdGV4dG9mZnNldCBzdGFydCB0ZXh0IHBvc2l0aW9uIHRvIGRvIHNlYXJjaAorCSAqIEBwYXJhbSBjZSB0aGUgdGV4dCBjZSB3aGljaCBmYWlsZWQgdGhlIG1hdGNoLgorCSAqIEBwYXJhbSBwYXR0ZXJuY2VpbmRleCBpbmRleCBvZiB0aGUgY2Ugd2l0aGluIHRoZSBwYXR0ZXJuIGNlIGJ1ZmZlciB3aGljaAorCSAqICAgICAgICBmYWlsZWQgdGhlIG1hdGNoCisJICogQHJldHVybiBmaW5hbCBvZmZzZXQKKwkgKi8KKwlwcml2YXRlIGludCByZXZlcnNlU2hpZnQoaW50IHRleHRvZmZzZXQsIGludCBjZSwgaW50IHBhdHRlcm5jZWluZGV4KQorCXsgICAgICAgICAKKwkgICAgaWYgKGlzT3ZlcmxhcHBpbmcoKSkgeworCSAgICAgICAgaWYgKHRleHRvZmZzZXQgIT0gbV90ZXh0TGltaXRPZmZzZXRfKSB7CisJICAgICAgICAgICAgdGV4dG9mZnNldCAtLTsKKwkgICAgICAgIH0KKwkgICAgICAgIGVsc2UgeworCSAgICAgICAgICAgIHRleHRvZmZzZXQgLT0gbV9wYXR0ZXJuXy5tX2RlZmF1bHRTaGlmdFNpemVfOworCSAgICAgICAgfQorCSAgICB9CisJICAgIGVsc2UgeworCSAgICAgICAgaWYgKGNlICE9IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5OVUxMT1JERVIpIHsKKwkgICAgICAgICAgICBpbnQgc2hpZnQgPSBtX3BhdHRlcm5fLm1fYmFja1NoaWZ0X1toYXNoKGNlKV07CisJICAgICAgICAgICAgCisJICAgICAgICAgICAgLy8gdGhpcyBpcyB0byBhZGp1c3QgZm9yIGNoYXJhY3RlcnMgaW4gdGhlIG1pZGRsZSBvZiB0aGUgc3Vic3RyaW5nIAorCSAgICAgICAgICAgIC8vIGZvciBtYXRjaGluZyB0aGF0IGZhaWxlZC4KKwkgICAgICAgICAgICBpbnQgYWRqdXN0ID0gcGF0dGVybmNlaW5kZXg7CisJICAgICAgICAgICAgaWYgKGFkanVzdCA+IDEgJiYgc2hpZnQgPiBhZGp1c3QpIHsKKwkgICAgICAgICAgICAgICAgc2hpZnQgLT0gYWRqdXN0IC0gMTsKKwkgICAgICAgICAgICB9CisJICAgICAgICAgICAgdGV4dG9mZnNldCAtPSBzaGlmdDsKKwkgICAgICAgIH0KKwkgICAgICAgIGVsc2UgeworCSAgICAgICAgICAgIHRleHRvZmZzZXQgLT0gbV9wYXR0ZXJuXy5tX2RlZmF1bHRTaGlmdFNpemVfOworCSAgICAgICAgfQorCSAgICB9ICAgIAorICAgICAgICAKKwkgICAgdGV4dG9mZnNldCA9IGdldFByZXZpb3VzQmFzZU9mZnNldCh0ZXh0b2Zmc2V0KTsKKwkgICAgcmV0dXJuIHRleHRvZmZzZXQ7CisJfQorCisJLyoqCisJICogQ2hlY2tzIG1hdGNoIGZvciBjb250cmFjdGlvbi4gCisJICogSWYgdGhlIG1hdGNoIHN0YXJ0cyB3aXRoIGEgcGFydGlhbCBjb250cmFjdGlvbiB3ZSBmYWlsLgorCSAqIFVzZXMgdGhlIHRlbXBvcmFyeSB1dGlsaXR5IGJ1ZmZlciB0byByZXR1cm4gdGhlIG1vZGlmaWVkIHN0YXJ0IGFuZCBlbmQuCisJICogQHBhcmFtIHN0YXJ0IG9mZnNldCBvZiBwb3RlbnRpYWwgbWF0Y2gsIHRvIGJlIG1vZGlmaWVkIGlmIG5lY2Vzc2FyeQorCSAqIEBwYXJhbSBlbmQgb2Zmc2V0IG9mIHBvdGVudGlhbCBtYXRjaCwgdG8gYmUgbW9kaWZpZWQgaWYgbmVjZXNzYXJ5CisJICogQHJldHVybiB0cnVlIGlmIG1hdGNoIHBhc3NlcyB0aGUgY29udHJhY3Rpb24gdGVzdCwgZmFsc2Ugb3RoZXJ3aXNlLgorCSAqLworCXByaXZhdGUgYm9vbGVhbiBjaGVja1ByZXZpb3VzRXhhY3RDb250cmFjdGlvbk1hdGNoKGludCBzdGFydCwgaW50IGVuZCkgCisJeworCSAgICAvLyBUaGlzIHBhcnQgY2hlY2tzIGlmIGVpdGhlciBlbmRzIG9mIHRoZSBtYXRjaCBjb250YWlucyBwb3RlbnRpYWwgCisJICAgIC8vIGNvbnRyYWN0aW9uLiBJZiBzbyB3ZSdsbCBoYXZlIHRvIGl0ZXJhdGUgdGhyb3VnaCB0aGVtCisJICAgIGNoYXIgZWNoYXIgPSAwOworCSAgICBpZiAoZW5kIDwgbV90ZXh0TGltaXRPZmZzZXRfKSB7CisJICAgIAl0YXJnZXRUZXh0LnNldEluZGV4KGVuZCk7CisJICAgIAllY2hhciA9IHRhcmdldFRleHQuY3VycmVudCgpOworCSAgICB9CisJICAgIGNoYXIgc2NoYXIgPSAwOworCSAgICBpZiAoc3RhcnQgKyAxIDwgbV90ZXh0TGltaXRPZmZzZXRfKSB7CisJICAgIAl0YXJnZXRUZXh0LnNldEluZGV4KHN0YXJ0ICsgMSk7CisJICAgIAlzY2hhciA9IHRhcmdldFRleHQuY3VycmVudCgpOworCSAgICB9CisJICAgIGlmIChtX2NvbGxhdG9yXy5pc1Vuc2FmZShlY2hhcikgfHwgbV9jb2xsYXRvcl8uaXNVbnNhZmUoc2NoYXIpKSB7CisJICAgIAkvLyBleHBhbnNpb24gc3VmZml4LCB3aGF0J3MgbGVmdCB0byBpdGVyYXRlCisJICAgICAgICBpbnQgZXhwYW5zaW9uID0gbV9jb2xFSXRlcl8ubV9DRUJ1ZmZlclNpemVfIAorCSAgICAgICAgCQkJCQkJCQktIG1fY29sRUl0ZXJfLm1fQ0VCdWZmZXJPZmZzZXRfOworCSAgICAgICAgYm9vbGVhbiBoYXNFeHBhbnNpb24gPSBleHBhbnNpb24gPiAwOworCSAgICAgICAgbV9jb2xFSXRlcl8uc2V0RXhhY3RPZmZzZXQoZW5kKTsKKwkgICAgICAgIGludCB0ZW1wID0gZW5kOworCSAgICAgICAgd2hpbGUgKGV4cGFuc2lvbiA+IDApIHsKKwkgICAgICAgICAgICAvLyBnZXR0aW5nIHJpZCBvZiB0aGUgcmVkdW5kYW50IGNlCisJICAgICAgICAgICAgLy8gc2luY2UgZm9yd2FyZCBjb250cmFjdGlvbi9leHBhbnNpb24gbWF5IGhhdmUgZXh0cmEgY2VzCisJICAgICAgICAgICAgLy8gaWYgd2UgYXJlIGluIHRoZSBub3JtYWxpemF0aW9uIGJ1ZmZlciwgaGFzQWNjZW50c0JlZm9yZU1hdGNoCisJICAgICAgICAgICAgLy8gd291bGQgaGF2ZSB0YWtlbiBjYXJlIG9mIGl0LgorCSAgICAgICAgICAgIC8vIEUuZy4gdGhlIGNoYXJhY3RlciBcdTAxRkEgd2lsbCBoYXZlIGFuIGV4cGFuc2lvbiBvZiAzLCBidXQgaWYKKwkgICAgICAgICAgICAvLyB3ZSBhcmUgb25seSBsb29raW5nIGZvciBBIHJpbmcgQVx1MDMwQSwgd2UnbGwgaGF2ZSB0byBza2lwIHRoZSAKKwkgICAgICAgICAgICAvLyBsYXN0IGNlIGluIHRoZSBleHBhbnNpb24gYnVmZmVyCisJICAgICAgICAgICAgbV9jb2xFSXRlcl8ucHJldmlvdXMoKTsKKwkgICAgICAgICAgICBpZiAobV9jb2xFSXRlcl8uZ2V0T2Zmc2V0KCkgIT0gdGVtcCkgeworCSAgICAgICAgICAgICAgICBlbmQgPSB0ZW1wOworCSAgICAgICAgICAgICAgICB0ZW1wID0gbV9jb2xFSXRlcl8uZ2V0T2Zmc2V0KCk7CisJICAgICAgICAgICAgfQorCSAgICAgICAgICAgIGV4cGFuc2lvbiAtLTsKKwkgICAgICAgIH0KKwkKKwkgICAgICAgIGludCBjb3VudCA9IG1fcGF0dGVybl8ubV9DRUxlbmd0aF87CisJICAgICAgICB3aGlsZSAoY291bnQgPiAwKSB7CisJICAgICAgICAgICAgaW50IGNlID0gZ2V0Q0UobV9jb2xFSXRlcl8ucHJldmlvdXMoKSk7CisJICAgICAgICAgICAgLy8gc3RhdHVzIGNoZWNrZWQgYmVsb3csIG5vdGUgdGhhdCBpZiBzdGF0dXMgaXMgYSBmYWlsdXJlCisJICAgICAgICAgICAgLy8gdWNvbF9wcmV2aW91cyByZXR1cm5zIFVDT0xfTlVMTE9SREVSCisJICAgICAgICAgICAgaWYgKGNlID09IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5JR05PUkFCTEUpIHsKKwkgICAgICAgICAgICAgICAgY29udGludWU7CisJICAgICAgICAgICAgfQorCSAgICAgICAgICAgIGlmIChoYXNFeHBhbnNpb24gJiYgY291bnQgPT0gMCAKKwkgICAgICAgICAgICAJJiYgbV9jb2xFSXRlcl8uZ2V0T2Zmc2V0KCkgIT0gdGVtcCkgeworCSAgICAgICAgICAgICAgICBlbmQgPSB0ZW1wOworCSAgICAgICAgICAgICAgICB0ZW1wID0gbV9jb2xFSXRlcl8uZ2V0T2Zmc2V0KCk7CisJICAgICAgICAgICAgfQorCSAgICAgICAgICAgIGlmIChjZSAhPSBtX3BhdHRlcm5fLm1fQ0VfW2NvdW50IC0gMV0pIHsKKwkgICAgICAgICAgICAgICAgc3RhcnQgLS07CisJICAgICAgICAgICAgICAgIHN0YXJ0ID0gZ2V0UHJldmlvdXNCYXNlT2Zmc2V0KHRhcmdldFRleHQsIHN0YXJ0KTsKKwkgICAgICAgICAgICAgICAgbV91dGlsQnVmZmVyX1swXSA9IHN0YXJ0OworCSAgICAgICAgICAgICAgICBtX3V0aWxCdWZmZXJfWzFdID0gZW5kOworCSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisJICAgICAgICAgICAgfQorCSAgICAgICAgICAgIGNvdW50IC0tOworCSAgICAgICAgfQorCSAgICB9IAorCSAgICBtX3V0aWxCdWZmZXJfWzBdID0gc3RhcnQ7CisJICAgIG1fdXRpbEJ1ZmZlcl9bMV0gPSBlbmQ7CisJICAgIHJldHVybiB0cnVlOworCX0KKwkKKwkvKioKKwkgKiBDaGVja3MgYW5kIHNldHMgdGhlIG1hdGNoIGluZm9ybWF0aW9uIGlmIGZvdW5kLgorCSAqIENoZWNrcyAKKwkgKiA8dWw+CisJICogPGxpPiB0aGUgY3VycmVudCBtYXRjaCBkb2VzIG5vdCByZXBlYXQgdGhlIGxhc3QgbWF0Y2gKKwkgKiA8bGk+IGJvdW5kYXJpZXMgYXJlIGNvcnJlY3QKKwkgKiA8bGk+IGV4YWN0IG1hdGNoZXMgaGFzIG5vIGV4dHJhIGFjY2VudHMKKwkgKiA8bGk+IGlkZW50aWNhbCBtYXRjaGVzCisJICogPC91bD4KKwkgKiBPdGhlcndpc2UgdGhlIG9mZnNldCB3aWxsIGJlIHNoaWZ0ZWQgdG8gdGhlIHByZWNlZGluZyBjaGFyYWN0ZXIuCisJICogVXNlcyB0aGUgdGVtcG9yYXJ5IHV0aWxpdHkgYnVmZmVyIHRvIHN0b3JlIHRoZSBtb2RpZmllZCB0ZXh0b2Zmc2V0LgorCSAqIEBwYXJhbSB0ZXh0b2Zmc2V0IG9mZnNldCBpbiB0aGUgY29sbGF0aW9uIGVsZW1lbnQgdGV4dC4gdGhlIHJldHVybmVkIHZhbHVlCisJICogICAgICAgIHdpbGwgYmUgdGhlIHRydW5jYXRlZCBzdGFydCBvZmZzZXQgb2YgdGhlIG1hdGNoIG9yIHRoZSBuZXcgc3RhcnQgCisJICogICAgICAgIHNlYXJjaCBvZmZzZXQuCisJICogQHJldHVybiB0cnVlIGlmIHRoZSBtYXRjaCBpcyB2YWxpZCwgZmFsc2Ugb3RoZXJ3aXNlCisJICovCisJcHJpdmF0ZSBmaW5hbCBib29sZWFuIGNoZWNrUHJldmlvdXNFeGFjdE1hdGNoKGludCB0ZXh0b2Zmc2V0KQorCXsKKwkgICAgLy8gdG8gZW5zdXJlIHRoYXQgdGhlIHN0YXJ0IGFuZCBlbmRzIGFyZSBub3QgY29tcG9zaXRlIGNoYXJhY3RlcnMKKwkgICAgaW50IGVuZCA9IG1fY29sRUl0ZXJfLmdldE9mZnNldCgpOyAgICAgICAgCisJICAgIGlmICghY2hlY2tQcmV2aW91c0V4YWN0Q29udHJhY3Rpb25NYXRjaCh0ZXh0b2Zmc2V0LCBlbmQpKSB7CisJICAgICAgICByZXR1cm4gZmFsc2U7CisJICAgIH0KKwkgICAgdGV4dG9mZnNldCA9IG1fdXRpbEJ1ZmZlcl9bMF07CisJICAgIGVuZCA9IG1fdXRpbEJ1ZmZlcl9bMV07CisJICAgICAgICAKKwkgICAgLy8gdGhpcyB0b3RhbGx5IG1hdGNoZXMsIGhvd2V2ZXIgd2UgbmVlZCB0byBjaGVjayBpZiBpdCBpcyByZXBlYXRpbmcKKwkgICAgLy8gdGhlIG9sZCBtYXRjaAorCSAgICBpZiAoY2hlY2tSZXBlYXRlZE1hdGNoKHRleHRvZmZzZXQsIGVuZCkgCisJICAgIAl8fCAhaXNCcmVha1VuaXQodGV4dG9mZnNldCwgZW5kKSAKKwkgICAgCXx8IGhhc0FjY2VudHNCZWZvcmVNYXRjaCh0ZXh0b2Zmc2V0LCBlbmQpIAorCSAgICAJfHwgIWNoZWNrSWRlbnRpY2FsKHRleHRvZmZzZXQsIGVuZCkgCisJICAgIAl8fCBoYXNBY2NlbnRzQWZ0ZXJNYXRjaCh0ZXh0b2Zmc2V0LCBlbmQpKSB7CisJICAgICAgICB0ZXh0b2Zmc2V0IC0tOworCSAgICAgICAgdGV4dG9mZnNldCA9IGdldFByZXZpb3VzQmFzZU9mZnNldCh0YXJnZXRUZXh0LCB0ZXh0b2Zmc2V0KTsKKwkgICAgICAgIG1fdXRpbEJ1ZmZlcl9bMF0gPSB0ZXh0b2Zmc2V0OworCSAgICAgICAgcmV0dXJuIGZhbHNlOworCSAgICB9CisJICAgIG1fbWF0Y2hlZEluZGV4XyA9IHRleHRvZmZzZXQ7CisJICAgIG1hdGNoTGVuZ3RoID0gZW5kIC0gdGV4dG9mZnNldDsKKwkgICAgcmV0dXJuIHRydWU7CisJfQorCisJLyoqCisJICogUmVhcnJhbmdlcyB0aGUgZW5kIGFjY2VudHMgdG8gdHJ5IG1hdGNoaW5nLgorCSAqIFN1ZmZpeCBhY2NlbnRzIGluIHRoZSB0ZXh0IHdpbGwgYmUgZ3JvdXBlZCBhY2NvcmRpbmcgdG8gdGhlaXIgY29tYmluaW5nIAorCSAqIGNsYXNzIGFuZCB0aGUgZ3JvdXBzIHdpbGwgYmUgbWl4ZWQgYW5kIG1hdGNoZWQgdG8gdHJ5IGZpbmQgdGhlIHBlcmZlY3QgCisJICogbWF0Y2ggd2l0aCB0aGUgcGF0dGVybi4KKwkgKiBTbyBmb3IgaW5zdGFuY2UgbG9va2luZyBmb3IgIlx1MDMwMSIgaW4gIlx1MDMwQVx1MDMwMVx1MDMyNSIKKwkgKiBzdGVwIDE6IHNwbGl0ICJcdTAzMEFcdTAzMDEiIGludG8gNiBvdGhlciB0eXBlIG9mIHBvdGVudGlhbCBhY2NlbnQgCisJICogCQkJc3Vic3RyaW5ncworCSAqICAgICAgICAgIlx1MDMwQSIsICJcdTAzMDEiLCAiXHUwMzI1IiwgIlx1MDMwQVx1MDMwMSIsICJcdTAzMEFcdTAzMjUiLCAKKwkgKiAgICAgICAgICJcdTAzMDFcdTAzMjUiLgorCSAqIHN0ZXAgMjogY2hlY2sgaWYgYW55IG9mIHRoZSBnZW5lcmF0ZWQgc3Vic3RyaW5ncyBtYXRjaGVzIHRoZSBwYXR0ZXJuLgorCSAqIEBwYXJhbSBzdGFydCBvZmZzZXQgb2YgdGhlIGZpcnN0IGJhc2UgY2hhcmFjdGVyCisJICogQHBhcmFtIGVuZCBzdGFydCBvZiB0aGUgbGFzdCBhY2NlbnQgc2V0CisJICogQHJldHVybiBET05FIGlmIGEgbWF0Y2ggaXMgbm90IGZvdW5kLCBvdGhlcndpc2UgcmV0dXJuIHRoZSBlbmRpbmcKKwkgKiAgICAgICAgIG9mZnNldCBvZiB0aGUgbWF0Y2guIE5vdGUgdGhpcyBzdGFydCBpbmNsdWRlcyBhbGwgZm9sbG93aW5nIAorCSAqICAgICAgICAgYWNjZW50cy4KKwkgKi8KKwlwcml2YXRlIGludCBkb1ByZXZpb3VzQ2Fub25pY2FsU3VmZml4TWF0Y2goaW50IHN0YXJ0LCBpbnQgZW5kKQorCXsKKwkgICAgdGFyZ2V0VGV4dC5zZXRJbmRleChlbmQpOworCQlpZiAoVVRGMTYuaXNUcmFpbFN1cnJvZ2F0ZSh0YXJnZXRUZXh0LnByZXZpb3VzKCkpIAorCQkJJiYgdGFyZ2V0VGV4dC5nZXRJbmRleCgpID4gbV90ZXh0QmVnaW5PZmZzZXRfKSB7CisJCQlpZiAoIVVURjE2LmlzTGVhZFN1cnJvZ2F0ZSh0YXJnZXRUZXh0LnByZXZpb3VzKCkpKSB7CisJCQkJdGFyZ2V0VGV4dC5uZXh0KCk7CisJCQl9IAorCQl9CisJICAgIGlmICgoZ2V0RkNEKHRhcmdldFRleHQsIHRhcmdldFRleHQuZ2V0SW5kZXgoKSkgJiBMQVNUX0JZVEVfTUFTS18pID09IDApIHsKKwkgICAgICAgIC8vIGRpZS4uLiBmYWlsZWQgYXQgYSBiYXNlIGNoYXJhY3RlcgorCSAgICAgICAgcmV0dXJuIERPTkU7CisJICAgIH0KKwkgICAgZW5kID0gZ2V0TmV4dEJhc2VPZmZzZXQodGFyZ2V0VGV4dCwgZW5kKTsKKwkKKwkgICAgU3RyaW5nQnVmZmVyIGFjY2VudHMgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisJICAgIGludCBvZmZzZXQgPSBnZXRQcmV2aW91c0Jhc2VPZmZzZXQodGFyZ2V0VGV4dCwgZW5kKTsKKwkgICAgLy8gbm9ybWFsaXppbmcgdGhlIG9mZmVuc2l2ZSBzdHJpbmcKKwkgICAgU3RyaW5nIGFjY2VudHN0ciA9IGdldFN0cmluZyh0YXJnZXRUZXh0LCBvZmZzZXQsIGVuZCAtIG9mZnNldCk7CisJICAgIGlmIChOb3JtYWxpemVyLnF1aWNrQ2hlY2soYWNjZW50c3RyLCBOb3JtYWxpemVyLk5GRCkgCisJICAgICAgICAJCQkJCQkJCQkJPT0gTm9ybWFsaXplci5OTykgeworCSAgICAgICAgYWNjZW50c3RyID0gTm9ybWFsaXplci5kZWNvbXBvc2UoYWNjZW50c3RyLCBmYWxzZSk7CisJICAgIH0KKwkgICAgYWNjZW50cy5hcHBlbmQoYWNjZW50c3RyKTsgICAgCisJICAgICAgICAKKwkgICAgaW50IGFjY2VudHNpbmRleFtdID0gbmV3IGludFtJTklUSUFMX0FSUkFZX1NJWkVfXTsgICAgICAKKwkgICAgaW50IGFjY2VudHNpemUgPSBnZXRVbmJsb2NrZWRBY2NlbnRJbmRleChhY2NlbnRzLCBhY2NlbnRzaW5kZXgpOworCSAgICBpbnQgY291bnQgPSAoMiA8PCAoYWNjZW50c2l6ZSAtIDEpKSAtIDI7ICAKKwkgICAgd2hpbGUgKGNvdW50ID4gMCkgeworICAgICAgICAgICAgbV9jYW5vbmljYWxTdWZmaXhBY2NlbnRzXy5kZWxldGUoMCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jYW5vbmljYWxTdWZmaXhBY2NlbnRzXy5sZW5ndGgoKSk7CisJICAgICAgICAvLyBjb3B5IHRoZSBiYXNlIGNoYXJhY3RlcnMKKwkgICAgICAgIGZvciAoaW50IGsgPSAwOyBrIDwgYWNjZW50c2luZGV4WzBdOyBrICsrKSB7CisJICAgICAgICAgICAgIG1fY2Fub25pY2FsU3VmZml4QWNjZW50c18uYXBwZW5kKGFjY2VudHMuY2hhckF0KGspKTsKKwkgICAgICAgIH0KKwkgICAgICAgIC8vIGZvcm1pbmcgYWxsIHBvc3NpYmxlIGNhbm9uaWNhbCByZWFycmFuZ2VtZW50IGJ5IGRyb3BwaW5nCisJICAgICAgICAvLyBzZXRzIG9mIGFjY2VudHMKKwkgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IGFjY2VudHNpemUgLSAxOyBpICsrKSB7CisJICAgICAgICAgICAgaW50IG1hc2sgPSAxIDw8IChhY2NlbnRzaXplIC0gaSAtIDEpOworCSAgICAgICAgICAgIGlmICgoY291bnQgJiBtYXNrKSAhPSAwKSB7CisJICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSBhY2NlbnRzaW5kZXhbaV07IGogPCBhY2NlbnRzaW5kZXhbaSArIDFdOyAKKwkgICAgICAgICAgICAgICAgCQkJCQkJCQkJCQkJCWogKyspIHsKKwkgICAgICAgICAgICAgICAgICAgIG1fY2Fub25pY2FsU3VmZml4QWNjZW50c18uYXBwZW5kKGFjY2VudHMuY2hhckF0KGopKTsKKwkgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgIH0KKwkgICAgICAgIH0KKwkgICAgICAgIFN0cmluZ0J1ZmZlciBtYXRjaCA9IG1lcmdlKG1fY2Fub25pY2FsUHJlZml4QWNjZW50c18sIHRhcmdldFRleHQsCisJICAgICAgICAJCQkJCQkJc3RhcnQsIG9mZnNldCwgCisJICAgICAgICAJCQkJCQkJbV9jYW5vbmljYWxTdWZmaXhBY2NlbnRzXyk7CisJICAgICAgICAvLyBydW4gdGhlIGNvbGxhdG9yIGl0ZXJhdG9yIHRocm91Z2ggdGhpcyBtYXRjaAorCSAgICAgICAgLy8gaWYgc3RhdHVzIGlzIGEgZmFpbHVyZSB1Y29sX3NldFRleHQgZG9lcyBub3RoaW5nCisJICAgICAgICBtX3V0aWxDb2xFSXRlcl8uc2V0VGV4dChtYXRjaC50b1N0cmluZygpKTsKKwkgICAgICAgIGlmIChjaGVja0NvbGxhdGlvbk1hdGNoKG1fdXRpbENvbEVJdGVyXykpIHsKKwkgICAgICAgICAgICByZXR1cm4gZW5kOworCSAgICAgICAgfQorCSAgICAgICAgY291bnQgLS07CisJICAgIH0KKwkgICAgcmV0dXJuIERPTkU7CisJfQorCQorCS8qKgorCSAqIFRha2UgdGhlIHJlYXJyYW5nZWQgc3RhcnQgYWNjZW50cyBhbmQgdHJpZXMgbWF0Y2hpbmcuIElmIG1hdGNoIGZhaWxlZCBhdAorCSAqIGEgc2VwZXJhdGUgZm9sbG93aW5nIHNldCBvZiBhY2NlbnRzIChzZXBlcmF0ZWQgZnJvbSB0aGUgcmVhcnJhbmdlZCBvbiBieQorCSAqIGF0IGxlYXN0IGEgYmFzZSBjaGFyYWN0ZXIpIHRoZW4gd2UgcmVhcnJhbmdlIHRoZSBwcmVjZWRpbmcgYWNjZW50cyBhbmQgCisJICogdHJpZXMgbWF0Y2hpbmcgYWdhaW4uCisJICogV2UgYWxsb3cgc2tpcHBpbmcgb2YgdGhlIGVuZHMgb2YgdGhlIGFjY2VudCBzZXQgaWYgdGhlIGNlcyBkbyBub3QgbWF0Y2guIAorCSAqIEhvd2V2ZXIgaWYgdGhlIGZhaWx1cmUgaXMgZm91bmQgYmVmb3JlIHRoZSBhY2NlbnQgc2V0LCBpdCBmYWlscy4KKwkgKiBJbnRlcm5hbCBtZXRob2QsIHN0YXR1cyBhc3N1bWVkIHRvIGJlIHN1Y2Nlc3MsIGNhbGxlciBoYXMgdG8gY2hlY2sgCisJICogc3RhdHVzIGJlZm9yZSBjYWxsaW5nIHRoaXMgbWV0aG9kLgorCSAqIEBwYXJhbSB0ZXh0b2Zmc2V0IG9mIHRoZSBlbmRzIG9mIHRoZSByZWFycmFuZ2VkIGFjY2VudAorCSAqIEByZXR1cm4gRE9ORSBpZiBhIG1hdGNoIGlzIG5vdCBmb3VuZCwgb3RoZXJ3aXNlIHJldHVybiB0aGUgZW5kaW5nIG9mZnNldCAKKwkgKiAJCQlvZiB0aGUgbWF0Y2guIE5vdGUgdGhpcyBzdGFydCBpbmNsdWRlcyBhbGwgZm9sbG93aW5nIGFjY2VudHMuCisJICovCisJcHJpdmF0ZSBpbnQgZG9QcmV2aW91c0Nhbm9uaWNhbFByZWZpeE1hdGNoKGludCB0ZXh0b2Zmc2V0KQorCXsKKwkgICAgaW50IHNhZmVsZW5ndGggPSAwOworCSAgICBTdHJpbmdCdWZmZXIgc2FmZXRleHQ7CisJICAgIGludCBzYWZlb2Zmc2V0ID0gdGV4dG9mZnNldDsKKwkKKwkgICAgaWYgKHRleHRvZmZzZXQgPiBtX3RleHRCZWdpbk9mZnNldF8KKwkgICAgCSYmIG1fY29sbGF0b3JfLmlzVW5zYWZlKG1fY2Fub25pY2FsUHJlZml4QWNjZW50c18uY2hhckF0KAorCSAgICAJCQkJCQkJbV9jYW5vbmljYWxQcmVmaXhBY2NlbnRzXy5sZW5ndGgoKSAtIDEpKSkgeworCSAgICAgICAgc2FmZW9mZnNldCA9IGdldE5leHRTYWZlT2Zmc2V0KHRleHRvZmZzZXQsIG1fdGV4dExpbWl0T2Zmc2V0Xyk7CisJICAgICAgICBzYWZlbGVuZ3RoID0gc2FmZW9mZnNldCAtIHRleHRvZmZzZXQ7CisJICAgICAgICBzYWZldGV4dCA9IG1lcmdlKG1fY2Fub25pY2FsUHJlZml4QWNjZW50c18sIHRhcmdldFRleHQsIHRleHRvZmZzZXQsIAorCSAgICAgICAgCQkJCSBzYWZlb2Zmc2V0LCBudWxsKTsKKwkgICAgfQorCSAgICBlbHNlIHsKKwkgICAgICAgIHNhZmV0ZXh0ID0gbV9jYW5vbmljYWxQcmVmaXhBY2NlbnRzXzsKKwkgICAgfQorCQorCSAgICAvLyBpZiBzdGF0dXMgaXMgYSBmYWlsdXJlLCB1Y29sX3NldFRleHQgZG9lcyBub3RoaW5nCisJICAgIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvciBjb2xlaXRlciA9IG1fdXRpbENvbEVJdGVyXzsKKwkgICAgY29sZWl0ZXIuc2V0VGV4dChzYWZldGV4dC50b1N0cmluZygpKTsKKwkgICAgLy8gc3RhdHVzIGNoZWNrZWQgaW4gbG9vcCBiZWxvdworCSAgICAKKwkgICAgaW50IGNlaW5kZXggPSAwOworCSAgICBib29sZWFuIGlzU2FmZSA9IHRydWU7IC8vIHNhZmUgem9uZSBpbmRpY2F0aW9uIGZsYWcgZm9yIHBvc2l0aW9uCisJICAgIGludCBwcmVmaXhsZW5ndGggPSBtX2Nhbm9uaWNhbFByZWZpeEFjY2VudHNfLmxlbmd0aCgpOworCSAgICAKKwkgICAgd2hpbGUgKGNlaW5kZXggPCBtX3BhdHRlcm5fLm1fQ0VMZW5ndGhfKSB7CisJICAgICAgICBpbnQgdGV4dGNlID0gY29sZWl0ZXIubmV4dCgpOworCSAgICAgICAgaWYgKHRleHRjZSA9PSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuTlVMTE9SREVSKSB7CisJICAgICAgICAgICAgLy8gY2hlY2sgaWYgd2UgaGF2ZSBwYXNzZWQgdGhlIHNhZmUgYnVmZmVyCisJICAgICAgICAgICAgaWYgKGNvbGVpdGVyID09IG1fY29sRUl0ZXJfKSB7CisJICAgICAgICAgICAgICAgIHJldHVybiBET05FOworCSAgICAgICAgICAgIH0KKwkgICAgICAgICAgICBpZiAoc2FmZXRleHQgIT0gbV9jYW5vbmljYWxQcmVmaXhBY2NlbnRzXykgeworCSAgICAgICAgICAgIAlzYWZldGV4dC5kZWxldGUoMCwgc2FmZXRleHQubGVuZ3RoKCkpOworCSAgICAgICAgICAgIH0KKwkgICAgICAgICAgICBjb2xlaXRlciA9IG1fY29sRUl0ZXJfOworCSAgICAgICAgICAgIGNvbGVpdGVyLnNldEV4YWN0T2Zmc2V0KHNhZmVvZmZzZXQpOworCSAgICAgICAgICAgIC8vIHN0YXR1cyBjaGVja2VkIGF0IHRoZSBzdGFydCBvZiB0aGUgbG9vcAorCSAgICAgICAgICAgIGlzU2FmZSA9IGZhbHNlOworCSAgICAgICAgICAgIGNvbnRpbnVlOworCSAgICAgICAgfQorCSAgICAgICAgdGV4dGNlID0gZ2V0Q0UodGV4dGNlKTsKKwkgICAgICAgIGlmICh0ZXh0Y2UgIT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLklHTk9SQUJMRSAKKwkgICAgICAgIAkmJiB0ZXh0Y2UgIT0gbV9wYXR0ZXJuXy5tX0NFX1tjZWluZGV4XSkgeworCSAgICAgICAgICAgIC8vIGRvIHRoZSBiZWdpbm5pbmcgc3R1ZmYKKwkgICAgICAgICAgICBpbnQgZmFpbGVkb2Zmc2V0ID0gY29sZWl0ZXIuZ2V0T2Zmc2V0KCk7CisJICAgICAgICAgICAgaWYgKGlzU2FmZSAmJiBmYWlsZWRvZmZzZXQgPD0gcHJlZml4bGVuZ3RoKSB7CisJICAgICAgICAgICAgICAgIC8vIGFsYXMuLi4gbm8gaG9wZS4gZmFpbGVkIGF0IHJlYXJyYW5nZWQgYWNjZW50IHNldAorCSAgICAgICAgICAgICAgICByZXR1cm4gRE9ORTsKKwkgICAgICAgICAgICB9CisJICAgICAgICAgICAgZWxzZSB7CisJICAgICAgICAgICAgICAgIGlmIChpc1NhZmUpIHsKKwkgICAgICAgICAgICAgICAgICAgIGZhaWxlZG9mZnNldCA9IHNhZmVvZmZzZXQgLSBmYWlsZWRvZmZzZXQ7CisJICAgICAgICAgICAgICAgICAgICBpZiAoc2FmZXRleHQgIT0gbV9jYW5vbmljYWxQcmVmaXhBY2NlbnRzXykgeworCSAgICAgICAgICAgIAkJCXNhZmV0ZXh0LmRlbGV0ZSgwLCBzYWZldGV4dC5sZW5ndGgoKSk7CisJICAgICAgICAgICAgCQl9CisJICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgIC8vIHRyeSByZWFycmFuZ2luZyB0aGUgZW5kIGFjY2VudHMKKwkgICAgICAgICAgICAgICAgaW50IHJlc3VsdCA9IGRvUHJldmlvdXNDYW5vbmljYWxTdWZmaXhNYXRjaCh0ZXh0b2Zmc2V0LCAKKwkgICAgICAgICAgICAgICAgCQkJCQkJCQkJCQlmYWlsZWRvZmZzZXQpOworCSAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IERPTkUpIHsKKwkgICAgICAgICAgICAgICAgICAgIC8vIGlmIHN0YXR1cyBpcyBhIGZhaWx1cmUsIHVjb2xfc2V0T2Zmc2V0IGRvZXMgbm90aGluZworCSAgICAgICAgICAgICAgICAgICAgbV9jb2xFSXRlcl8uc2V0RXhhY3RPZmZzZXQocmVzdWx0KTsKKwkgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworCSAgICAgICAgICAgIH0KKwkgICAgICAgIH0KKwkgICAgICAgIGlmICh0ZXh0Y2UgPT0gbV9wYXR0ZXJuXy5tX0NFX1tjZWluZGV4XSkgeworCSAgICAgICAgICAgIGNlaW5kZXggKys7CisJICAgICAgICB9CisJICAgIH0KKwkgICAgLy8gc2V0IG9mZnNldCBoZXJlCisJICAgIGlmIChpc1NhZmUpIHsKKwkgICAgICAgIGludCByZXN1bHQgPSBjb2xlaXRlci5nZXRPZmZzZXQoKTsKKwkgICAgICAgIC8vIHNldHMgdGhlIHRleHQgaXRlcmF0b3IgaGVyZSB3aXRoIHRoZSBjb3JyZWN0IGV4cGFuc2lvbiBhbmQgb2Zmc2V0CisJICAgICAgICBpbnQgbGVmdG92ZXJjZXMgPSBjb2xlaXRlci5tX0NFQnVmZmVyU2l6ZV8gCisJICAgICAgICAJCQkJCQkJCQktIGNvbGVpdGVyLm1fQ0VCdWZmZXJPZmZzZXRfOworCSAgICAgICAgaWYgKHJlc3VsdCA8PSBwcmVmaXhsZW5ndGgpIHsgCisJICAgICAgICAgICAgcmVzdWx0ID0gdGV4dG9mZnNldDsKKwkgICAgICAgIH0KKwkgICAgICAgIGVsc2UgeworCSAgICAgICAgICAgIHJlc3VsdCA9IHRleHRvZmZzZXQgKyAoc2FmZW9mZnNldCAtIHJlc3VsdCk7CisJICAgICAgICB9CisJICAgICAgICBtX2NvbEVJdGVyXy5zZXRFeGFjdE9mZnNldChyZXN1bHQpOworCSAgICAgICAgbV9jb2xFSXRlcl8ubV9DRUJ1ZmZlck9mZnNldF8gPSBtX2NvbEVJdGVyXy5tX0NFQnVmZmVyU2l6ZV8gCisJICAgICAgICAJCQkJCQkJCQkJCQkJLSBsZWZ0b3ZlcmNlczsKKwkgICAgICAgIHJldHVybiByZXN1bHQ7CisJICAgIH0KKwkgICAgCisJICAgIHJldHVybiBjb2xlaXRlci5nZXRPZmZzZXQoKTsgICAgICAgICAgICAgIAorCX0KKwkKKwkvKioKKwkgKiBUcnlpbmcgb3V0IHRoZSBzdWJzdHJpbmcgYW5kIHNlZXMgaWYgaXQgY2FuIGJlIGEgY2Fub25pY2FsIG1hdGNoLgorCSAqIFRoaXMgd2lsbCB0cnkgbm9ybWFsaXppbmcgdGhlIHN0YXJ0aW5nIGFjY2VudHMgYW5kIGFycmFuZ2luZyB0aGVtIGludG8gCisJICogY2Fub25pY2FsIGVxdWl2YWxlbnRzIGFuZCBjaGVjayB0aGVpciBjb3JyZXNwb25kaW5nIGNlcyB3aXRoIHRoZSBwYXR0ZXJuIAorCSAqIGNlLgorCSAqIFByZWZpeCBhY2NlbnRzIGluIHRoZSB0ZXh0IHdpbGwgYmUgZ3JvdXBlZCBhY2NvcmRpbmcgdG8gdGhlaXIgY29tYmluaW5nIAorCSAqIGNsYXNzIGFuZCB0aGUgZ3JvdXBzIHdpbGwgYmUgbWl4ZWQgYW5kIG1hdGNoZWQgdG8gdHJ5IGZpbmQgdGhlIHBlcmZlY3QgCisJICogbWF0Y2ggd2l0aCB0aGUgcGF0dGVybi4KKwkgKiBTbyBmb3IgaW5zdGFuY2UgbG9va2luZyBmb3IgIlx1MDMwMSIgaW4gIlx1MDMwQVx1MDMwMVx1MDMyNSIKKwkgKiBzdGVwIDE6IHNwbGl0ICJcdTAzMEFcdTAzMDEiIGludG8gNiBvdGhlciB0eXBlIG9mIHBvdGVudGlhbCBhY2NlbnQgCisJICogCQkgICBzdWJzdHJpbmdzCisJICogICAgICAgICAiXHUwMzBBIiwgIlx1MDMwMSIsICJcdTAzMjUiLCAiXHUwMzBBXHUwMzAxIiwgIlx1MDMwQVx1MDMyNSIsIAorCSAqICAgICAgICAgIlx1MDMwMVx1MDMyNSIuCisJICogc3RlcCAyOiBjaGVjayBpZiBhbnkgb2YgdGhlIGdlbmVyYXRlZCBzdWJzdHJpbmdzIG1hdGNoZXMgdGhlIHBhdHRlcm4uCisJICogQHBhcmFtIHRleHRvZmZzZXQgc3RhcnQgb2Zmc2V0IGluIHRoZSBjb2xsYXRpb24gZWxlbWVudCB0ZXh0IHRoYXQgc3RhcnRzIAorCSAqICAgICAgICAgICAgICAgICAgIHdpdGggdGhlIGFjY2VudHMgdG8gYmUgcmVhcnJhbmdlZAorCSAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgbWF0Y2ggaXMgdmFsaWQsIGZhbHNlIG90aGVyd2lzZQorCSAqLworCXByaXZhdGUgYm9vbGVhbiBkb1ByZXZpb3VzQ2Fub25pY2FsTWF0Y2goaW50IHRleHRvZmZzZXQpCisJeworICAgICAgICBpbnQgb2Zmc2V0ID0gbV9jb2xFSXRlcl8uZ2V0T2Zmc2V0KCk7CisJICAgIGlmICgoZ2V0RkNEKHRhcmdldFRleHQsIHRleHRvZmZzZXQpID4+IFNFQ09ORF9MQVNUX0JZVEVfU0hJRlRfKSA9PSAwKSB7CisJICAgICAgICBpZiAobV9wYXR0ZXJuXy5tX2hhc1N1ZmZpeEFjY2VudHNfKSB7CisJICAgICAgICAgICAgb2Zmc2V0ID0gZG9QcmV2aW91c0Nhbm9uaWNhbFN1ZmZpeE1hdGNoKHRleHRvZmZzZXQsIG9mZnNldCk7CisJICAgICAgICAgICAgaWYgKG9mZnNldCAhPSBET05FKSB7CisJICAgICAgICAgICAgICAgIG1fY29sRUl0ZXJfLnNldEV4YWN0T2Zmc2V0KG9mZnNldCk7CisJICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCSAgICAgICAgICAgIH0KKwkgICAgICAgIH0KKwkgICAgICAgIHJldHVybiBmYWxzZTsKKwkgICAgfQorCQorCSAgICBpZiAoIW1fcGF0dGVybl8ubV9oYXNQcmVmaXhBY2NlbnRzXykgeworCSAgICAgICAgcmV0dXJuIGZhbHNlOworCSAgICB9CisJCisJICAgIFN0cmluZ0J1ZmZlciBhY2NlbnRzID0gbmV3IFN0cmluZ0J1ZmZlcigpOworCSAgICAvLyBvZmZzZXQgdG8gdGhlIGxhc3QgYmFzZSBjaGFyYWN0ZXIgaW4gc3Vic3RyaW5nIHRvIHNlYXJjaAorCSAgICBpbnQgYmFzZW9mZnNldCA9IGdldE5leHRCYXNlT2Zmc2V0KHRhcmdldFRleHQsIHRleHRvZmZzZXQpOworCSAgICAvLyBub3JtYWxpemluZyB0aGUgb2ZmZW5zaXZlIHN0cmluZworCSAgICBTdHJpbmcgdGV4dHN0ciA9IGdldFN0cmluZyh0YXJnZXRUZXh0LCB0ZXh0b2Zmc2V0LCAKKwkgICAgCQkJCQkJCQkJCQliYXNlb2Zmc2V0IC0gdGV4dG9mZnNldCk7CisJICAgIGlmIChOb3JtYWxpemVyLnF1aWNrQ2hlY2sodGV4dHN0ciwgTm9ybWFsaXplci5ORkQpIAorCSAgICAgICAgCQkJCQkJCQkJCT09IE5vcm1hbGl6ZXIuTk8pIHsKKwkgICAgICAgIHRleHRzdHIgPSBOb3JtYWxpemVyLmRlY29tcG9zZSh0ZXh0c3RyLCBmYWxzZSk7CisJICAgIH0KKwkgICAgYWNjZW50cy5hcHBlbmQodGV4dHN0cik7CisJICAgIC8vIHN0YXR1cyBjaGVja2VkIGluIGxvb3AKKwkgICAgICAgIAorCSAgICBpbnQgYWNjZW50c2luZGV4W10gPSBuZXcgaW50W0lOSVRJQUxfQVJSQVlfU0laRV9dOworCSAgICBpbnQgc2l6ZSA9IGdldFVuYmxvY2tlZEFjY2VudEluZGV4KGFjY2VudHMsIGFjY2VudHNpbmRleCk7CisJCisJICAgIC8vIDIgcG93ZXIgbiAtIDEgbWludXMgdGhlIGZ1bGwgc2V0IG9mIGFjY2VudHMKKwkgICAgaW50IGNvdW50ID0gKDIgPDwgKHNpemUgLSAxKSkgLSAyOyAgCisJICAgIHdoaWxlIChjb3VudCA+IDApIHsKKwkgICAgCW1fY2Fub25pY2FsUHJlZml4QWNjZW50c18uZGVsZXRlKDAsIAorCSAgICAJCQkJCQkJCW1fY2Fub25pY2FsUHJlZml4QWNjZW50c18ubGVuZ3RoKCkpOworCSAgICAgICAgLy8gY29weSB0aGUgYmFzZSBjaGFyYWN0ZXJzCisJICAgICAgICBmb3IgKGludCBrID0gMDsgayA8IGFjY2VudHNpbmRleFswXTsgayArKykgeworCSAgICAgICAgICAgIG1fY2Fub25pY2FsUHJlZml4QWNjZW50c18uYXBwZW5kKGFjY2VudHMuY2hhckF0KGspKTsKKwkgICAgICAgIH0KKwkgICAgICAgIC8vIGZvcm1pbmcgYWxsIHBvc3NpYmxlIGNhbm9uaWNhbCByZWFycmFuZ2VtZW50IGJ5IGRyb3BwaW5nCisJICAgICAgICAvLyBzZXRzIG9mIGFjY2VudHMKKwkgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IHNpemUgLSAxOyBpICsrKSB7CisJICAgICAgICAgICAgaW50IG1hc2sgPSAxIDw8IChzaXplIC0gaSAtIDEpOworCSAgICAgICAgICAgIGlmICgoY291bnQgJiBtYXNrKSAhPSAwKSB7CisJICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSBhY2NlbnRzaW5kZXhbaV07IGogPCBhY2NlbnRzaW5kZXhbaSArIDFdOyAKKwkgICAgICAgICAgICAgICAgCSBqICsrKSB7CisJICAgICAgICAgICAgICAgICAgICBtX2Nhbm9uaWNhbFByZWZpeEFjY2VudHNfLmFwcGVuZChhY2NlbnRzLmNoYXJBdChqKSk7CisJICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICB9CisJICAgICAgICB9CisJICAgICAgICBvZmZzZXQgPSBkb1ByZXZpb3VzQ2Fub25pY2FsUHJlZml4TWF0Y2goYmFzZW9mZnNldCk7CisJICAgICAgICBpZiAob2Zmc2V0ICE9IERPTkUpIHsKKwkgICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gbWF0Y2ggZm91bmQKKwkgICAgICAgIH0KKwkgICAgICAgIGNvdW50IC0tOworCSAgICB9CisJICAgIHJldHVybiBmYWxzZTsKKwl9CisJCisJLyoqCisJICogQ2hlY2tzIG1hdGNoIGZvciBjb250cmFjdGlvbi4gCisJICogSWYgdGhlIG1hdGNoIHN0YXJ0cyB3aXRoIGEgcGFydGlhbCBjb250cmFjdGlvbiB3ZSBmYWlsLgorCSAqIFVzZXMgdGhlIHRlbXBvcmFyeSB1dGlsaXR5IGJ1ZmZlciB0byByZXR1cm4gdGhlIG1vZGlmaWVkIHN0YXJ0IGFuZCBlbmQuCisJICogQHBhcmFtIHN0YXJ0IG9mZnNldCBvZiBwb3RlbnRpYWwgbWF0Y2gsIHRvIGJlIG1vZGlmaWVkIGlmIG5lY2Vzc2FyeQorCSAqIEBwYXJhbSBlbmQgb2Zmc2V0IG9mIHBvdGVudGlhbCBtYXRjaCwgdG8gYmUgbW9kaWZpZWQgaWYgbmVjZXNzYXJ5CisJICogQHJldHVybiB0cnVlIGlmIG1hdGNoIHBhc3NlcyB0aGUgY29udHJhY3Rpb24gdGVzdCwgZmFsc2Ugb3RoZXJ3aXNlLgorCSAqLworCXByaXZhdGUgYm9vbGVhbiBjaGVja1ByZXZpb3VzQ2Fub25pY2FsQ29udHJhY3Rpb25NYXRjaChpbnQgc3RhcnQsIGludCBlbmQpIAorCXsKKwkgICAgaW50IHRlbXAgPSBlbmQ7CisJICAgIC8vIFRoaXMgcGFydCBjaGVja3MgaWYgZWl0aGVyIGVuZHMgb2YgdGhlIG1hdGNoIGNvbnRhaW5zIHBvdGVudGlhbCAKKwkgICAgLy8gY29udHJhY3Rpb24uIElmIHNvIHdlJ2xsIGhhdmUgdG8gaXRlcmF0ZSB0aHJvdWdoIHRoZW0KKwkgICAgY2hhciBlY2hhciA9IDA7CisJICAgIGNoYXIgc2NoYXIgPSAwOworCSAgICBpZiAoZW5kIDwgbV90ZXh0TGltaXRPZmZzZXRfKSB7CisJICAgIAl0YXJnZXRUZXh0LnNldEluZGV4KGVuZCk7CisJICAgIAllY2hhciA9IHRhcmdldFRleHQuY3VycmVudCgpOworCSAgICB9CisJICAgIGlmIChzdGFydCArIDEgPCBtX3RleHRMaW1pdE9mZnNldF8pIHsKKwkgICAgCXRhcmdldFRleHQuc2V0SW5kZXgoc3RhcnQgKyAxKTsKKwkgICAgCXNjaGFyID0gdGFyZ2V0VGV4dC5jdXJyZW50KCk7CisJICAgIH0KKwkgICAgaWYgKG1fY29sbGF0b3JfLmlzVW5zYWZlKGVjaGFyKSB8fCBtX2NvbGxhdG9yXy5pc1Vuc2FmZShzY2hhcikpIHsKKwkgICAgICAgIGludCBleHBhbnNpb24gPSBtX2NvbEVJdGVyXy5tX0NFQnVmZmVyU2l6ZV8gCisJICAgICAgICAJCQkJCQkJCS0gbV9jb2xFSXRlcl8ubV9DRUJ1ZmZlck9mZnNldF87CisJICAgICAgICBib29sZWFuIGhhc0V4cGFuc2lvbiA9IGV4cGFuc2lvbiA+IDA7CisJICAgICAgICBtX2NvbEVJdGVyXy5zZXRFeGFjdE9mZnNldChlbmQpOworCSAgICAgICAgd2hpbGUgKGV4cGFuc2lvbiA+IDApIHsKKwkgICAgICAgICAgICAvLyBnZXR0aW5nIHJpZCBvZiB0aGUgcmVkdW5kYW50IGNlCisJICAgICAgICAgICAgLy8gc2luY2UgZm9yd2FyZCBjb250cmFjdGlvbi9leHBhbnNpb24gbWF5IGhhdmUgZXh0cmEgY2VzCisJICAgICAgICAgICAgLy8gaWYgd2UgYXJlIGluIHRoZSBub3JtYWxpemF0aW9uIGJ1ZmZlciwgaGFzQWNjZW50c0JlZm9yZU1hdGNoCisJICAgICAgICAgICAgLy8gd291bGQgaGF2ZSB0YWtlbiBjYXJlIG9mIGl0LgorCSAgICAgICAgICAgIC8vIEUuZy4gdGhlIGNoYXJhY3RlciBcdTAxRkEgd2lsbCBoYXZlIGFuIGV4cGFuc2lvbiBvZiAzLCBidXQgCisJICAgICAgICAgICAgLy8gaWYgd2UgYXJlIG9ubHkgbG9va2luZyBmb3IgQSByaW5nIEFcdTAzMEEsIHdlJ2xsIGhhdmUgdG8gCisJICAgICAgICAgICAgLy8gc2tpcCB0aGUgbGFzdCBjZSBpbiB0aGUgZXhwYW5zaW9uIGJ1ZmZlcgorCSAgICAgICAgICAgIG1fY29sRUl0ZXJfLnByZXZpb3VzKCk7CisJICAgICAgICAgICAgaWYgKG1fY29sRUl0ZXJfLmdldE9mZnNldCgpICE9IHRlbXApIHsKKwkgICAgICAgICAgICAgICAgZW5kID0gdGVtcDsKKwkgICAgICAgICAgICAgICAgdGVtcCA9IG1fY29sRUl0ZXJfLmdldE9mZnNldCgpOworCSAgICAgICAgICAgIH0KKwkgICAgICAgICAgICBleHBhbnNpb24gLS07CisJICAgICAgICB9CisJCisJICAgICAgICBpbnQgY291bnQgPSBtX3BhdHRlcm5fLm1fQ0VMZW5ndGhfOworCSAgICAgICAgd2hpbGUgKGNvdW50ID4gMCkgeworCSAgICAgICAgICAgIGludCBjZSA9IGdldENFKG1fY29sRUl0ZXJfLnByZXZpb3VzKCkpOworCSAgICAgICAgICAgIC8vIHN0YXR1cyBjaGVja2VkIGJlbG93LCBub3RlIHRoYXQgaWYgc3RhdHVzIGlzIGEgZmFpbHVyZQorCSAgICAgICAgICAgIC8vIHByZXZpb3VzKCkgcmV0dXJucyBOVUxMT1JERVIKKwkgICAgICAgICAgICBpZiAoY2UgPT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLklHTk9SQUJMRSkgeworCSAgICAgICAgICAgICAgICBjb250aW51ZTsKKwkgICAgICAgICAgICB9CisJICAgICAgICAgICAgaWYgKGhhc0V4cGFuc2lvbiAmJiBjb3VudCA9PSAwIAorCSAgICAgICAgICAgIAkmJiBtX2NvbEVJdGVyXy5nZXRPZmZzZXQoKSAhPSB0ZW1wKSB7CisJICAgICAgICAgICAgICAgIGVuZCA9IHRlbXA7CisJICAgICAgICAgICAgICAgIHRlbXAgPSBtX2NvbEVJdGVyXy5nZXRPZmZzZXQoKTsKKwkgICAgICAgICAgICB9CisJICAgICAgICAgICAgaWYgKGNvdW50ID09IG1fcGF0dGVybl8ubV9DRUxlbmd0aF8gCisJICAgICAgICAgICAgCSYmIGNlICE9IG1fcGF0dGVybl8ubV9DRV9bbV9wYXR0ZXJuXy5tX0NFTGVuZ3RoXyAtIDFdKSB7CisJICAgICAgICAgICAgICAgIC8vIGFjY2VudHMgbWF5IGhhdmUgZXh0cmEgc3RhcnRpbmcgY2VzLCB0aGlzIG9jY3VycyB3aGVuIGEgCisJICAgICAgICAgICAgICAgIC8vIHB1cmUgYWNjZW50IHBhdHRlcm4gaXMgbWF0Y2hlZCB3aXRob3V0IHJlYXJyYW5nZW1lbnQKKwkgICAgICAgICAgICAgICAgaW50IGV4cGVjdGVkID0gbV9wYXR0ZXJuXy5tX0NFX1ttX3BhdHRlcm5fLm1fQ0VMZW5ndGhfIC0gMV07CisJICAgICAgICAgICAgICAgIHRhcmdldFRleHQuc2V0SW5kZXgoZW5kKTsKKwkgICAgICAgICAgICAgICAgaWYgKFVURjE2LmlzVHJhaWxTdXJyb2dhdGUodGFyZ2V0VGV4dC5wcmV2aW91cygpKSkgeworCSAgICAgICAgICAgICAgICAJaWYgKHRhcmdldFRleHQuZ2V0SW5kZXgoKSA+IG1fdGV4dEJlZ2luT2Zmc2V0XyAmJgorCSAgICAgICAgICAgICAgICAJCSFVVEYxNi5pc0xlYWRTdXJyb2dhdGUodGFyZ2V0VGV4dC5wcmV2aW91cygpKSkgeworCSAgICAgICAgICAgICAgICAJCXRhcmdldFRleHQubmV4dCgpOworCSAgICAgICAgICAgICAgICAJfQorCSAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgICAgIGVuZCA9IHRhcmdldFRleHQuZ2V0SW5kZXgoKTsKKwkgICAgICAgICAgICAgICAgaWYgKChnZXRGQ0QodGFyZ2V0VGV4dCwgZW5kKSAmIExBU1RfQllURV9NQVNLXykgIT0gMCkgeworCSAgICAgICAgICAgICAgICAgICAgY2UgPSBnZXRDRShtX2NvbEVJdGVyXy5wcmV2aW91cygpKTsKKwkgICAgICAgICAgICAgICAgICAgIHdoaWxlIChjZSAhPSBleHBlY3RlZCAKKwkgICAgICAgICAgICAgICAgICAgIAkJJiYgY2UgIT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUiAKKwkgICAgICAgICAgICAgICAgICAgIAkJJiYgbV9jb2xFSXRlcl8uZ2V0T2Zmc2V0KCkgPD0gc3RhcnQpIHsKKwkgICAgICAgICAgICAgICAgICAgICAgICBjZSA9IGdldENFKG1fY29sRUl0ZXJfLnByZXZpb3VzKCkpOworCSAgICAgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgfQorCSAgICAgICAgICAgIGlmIChjZSAhPSBtX3BhdHRlcm5fLm1fQ0VfW2NvdW50IC0gMV0pIHsKKwkgICAgICAgICAgICAgICAgc3RhcnQgLS07CisJICAgICAgICAgICAgICAgIHN0YXJ0ID0gZ2V0UHJldmlvdXNCYXNlT2Zmc2V0KHN0YXJ0KTsKKwkgICAgICAgICAgICAgICAgbV91dGlsQnVmZmVyX1swXSA9IHN0YXJ0OworCSAgICAgICAgICAgICAgICBtX3V0aWxCdWZmZXJfWzFdID0gZW5kOworCSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisJICAgICAgICAgICAgfQorCSAgICAgICAgICAgIGNvdW50IC0tOworCSAgICAgICAgfQorCSAgICB9IAorCSAgICBtX3V0aWxCdWZmZXJfWzBdID0gc3RhcnQ7CisJICAgIG1fdXRpbEJ1ZmZlcl9bMV0gPSBlbmQ7CisJICAgIHJldHVybiB0cnVlOworCX0KKwkKKwkvKioKKwkgKiBDaGVja3MgYW5kIHNldHMgdGhlIG1hdGNoIGluZm9ybWF0aW9uIGlmIGZvdW5kLgorCSAqIENoZWNrcyAKKwkgKiA8dWw+CisJICogPGxpPiB0aGUgcG90ZW50aWFsIG1hdGNoIGRvZXMgbm90IHJlcGVhdCB0aGUgcHJldmlvdXMgbWF0Y2gKKwkgKiA8bGk+IGJvdW5kYXJpZXMgYXJlIGNvcnJlY3QKKwkgKiA8bGk+IHBvdGVudGlhbCBtYXRjaCBkb2VzIG5vdCBlbmQgaW4gdGhlIG1pZGRsZSBvZiBhIGNvbnRyYWN0aW9uCisJICogPGxpPiBpZGVudGljYWwgbWF0Y2hlcworCSAqIDwvdWw+CisJICogT3RoZXJ3aXNlIHRoZSBvZmZzZXQgd2lsbCBiZSBzaGlmdGVkIHRvIHRoZSBuZXh0IGNoYXJhY3Rlci4KKwkgKiBVc2VzIHRoZSB0ZW1wb3JhcnkgdXRpbGl0eSBidWZmZXIgZm9yIHN0b3JpbmcgdGhlIG1vZGlmaWVkIHRleHRvZmZzZXQuCisJICogQHBhcmFtIHRleHRvZmZzZXQgb2Zmc2V0IGluIHRoZSBjb2xsYXRpb24gZWxlbWVudCB0ZXh0LiB0aGUgcmV0dXJuZWQgCisJICogCQkJdmFsdWUgd2lsbCBiZSB0aGUgdHJ1bmNhdGVkIHN0YXJ0IG9mZnNldCBvZiB0aGUgbWF0Y2ggb3IgdGhlIAorCSAqIAkJCW5ldyBzdGFydCBzZWFyY2ggb2Zmc2V0LgorCSAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgbWF0Y2ggaXMgdmFsaWQsIGZhbHNlIG90aGVyd2lzZQorCSAqLworCXByaXZhdGUgYm9vbGVhbiBjaGVja1ByZXZpb3VzQ2Fub25pY2FsTWF0Y2goaW50IHRleHRvZmZzZXQpCisJeworCSAgICAvLyB0byBlbnN1cmUgdGhhdCB0aGUgc3RhcnQgYW5kIGVuZHMgYXJlIG5vdCBjb21wb3NpdGUgY2hhcmFjdGVycworCSAgICAvLyBpZiB3ZSBoYXZlIGEgY2Fub25pY2FsIGFjY2VudCBtYXRjaAorCSAgICBpZiAobV9wYXR0ZXJuXy5tX2hhc1N1ZmZpeEFjY2VudHNfIAorCSAgICAJJiYgbV9jYW5vbmljYWxTdWZmaXhBY2NlbnRzXy5sZW5ndGgoKSAhPSAwIAorCSAgICAJfHwgbV9wYXR0ZXJuXy5tX2hhc1ByZWZpeEFjY2VudHNfIAorCSAgICAJJiYgbV9jYW5vbmljYWxQcmVmaXhBY2NlbnRzXy5sZW5ndGgoKSAhPSAwKSB7CisJICAgICAgICBtX21hdGNoZWRJbmRleF8gPSB0ZXh0b2Zmc2V0OworCSAgICAgICAgbWF0Y2hMZW5ndGggPSBnZXROZXh0QmFzZU9mZnNldChtX2NvbEVJdGVyXy5nZXRPZmZzZXQoKSkgCisJICAgICAgICAgICAgCQkJCQkJCQkJCQkJLSB0ZXh0b2Zmc2V0OworCSAgICAgICAgcmV0dXJuIHRydWU7CisJICAgIH0KKwkKKwkgICAgaW50IGVuZCA9IG1fY29sRUl0ZXJfLmdldE9mZnNldCgpOworCSAgICBpZiAoIWNoZWNrUHJldmlvdXNDYW5vbmljYWxDb250cmFjdGlvbk1hdGNoKHRleHRvZmZzZXQsIGVuZCkpIHsKKwkgICAgCS8vIHN0b3JpbmcgdGhlIG1vZGlmaWVkIHRleHRvZmZzZXQKKwkgICAgCXJldHVybiBmYWxzZTsKKwkgICAgfQorCSAgICB0ZXh0b2Zmc2V0ID0gbV91dGlsQnVmZmVyX1swXTsKKwkJZW5kID0gbV91dGlsQnVmZmVyX1sxXTsKKwkgICAgZW5kID0gZ2V0TmV4dEJhc2VPZmZzZXQoZW5kKTsKKwkgICAgLy8gdGhpcyB0b3RhbGx5IG1hdGNoZXMsIGhvd2V2ZXIgd2UgbmVlZCB0byBjaGVjayBpZiBpdCBpcyByZXBlYXRpbmcKKwkgICAgaWYgKGNoZWNrUmVwZWF0ZWRNYXRjaCh0ZXh0b2Zmc2V0LCBlbmQpIAorCSAgICAJfHwgIWlzQnJlYWtVbml0KHRleHRvZmZzZXQsIGVuZCkgCisJICAgIAl8fCAhY2hlY2tJZGVudGljYWwodGV4dG9mZnNldCwgZW5kKSkgeworCSAgICAgICAgdGV4dG9mZnNldCAtLTsKKwkgICAgICAgIHRleHRvZmZzZXQgPSBnZXRQcmV2aW91c0Jhc2VPZmZzZXQodGV4dG9mZnNldCk7CisJICAgICAgICBtX3V0aWxCdWZmZXJfWzBdID0gdGV4dG9mZnNldDsKKwkgICAgICAgIHJldHVybiBmYWxzZTsKKwkgICAgfQorCSAgICAKKwkgICAgbV9tYXRjaGVkSW5kZXhfID0gdGV4dG9mZnNldDsKKwkgICAgbWF0Y2hMZW5ndGggPSBlbmQgLSB0ZXh0b2Zmc2V0OworCSAgICByZXR1cm4gdHJ1ZTsKKwl9CisJCisJLyoqCisJICogTWV0aG9kIHRoYXQgZG9lcyB0aGUgbmV4dCBleGFjdCBtYXRjaAorCSAqIEBwYXJhbSBzdGFydCB0aGUgb2Zmc2V0IHRvIHN0YXJ0IHNoaWZ0aW5nIGZyb20gYW5kIHBlcmZvcm1pbmcgdGhlIAorCSAqICAgICAgICBuZXh0IGV4YWN0IG1hdGNoCisJICovCisJcHJpdmF0ZSB2b2lkIGhhbmRsZU5leHRFeGFjdChpbnQgc3RhcnQpCisJeworCSAgIAlpbnQgdGV4dG9mZnNldCA9IHNoaWZ0Rm9yd2FyZChzdGFydCwgCisJICAgCQkJCQkJCQkgIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5OVUxMT1JERVIsCisJICAgCQkJCQkJCQkgIG1fcGF0dGVybl8ubV9DRUxlbmd0aF8pOworCQlpbnQgdGFyZ2V0Y2UgPSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuSUdOT1JBQkxFOworCSAgICB3aGlsZSAodGV4dG9mZnNldCA8PSBtX3RleHRMaW1pdE9mZnNldF8pIHsKKyAgICAgICAgICAgIG1fY29sRUl0ZXJfLnNldEV4YWN0T2Zmc2V0KHRleHRvZmZzZXQpOworCSAgICAgICAgaW50IHBhdHRlcm5jZWluZGV4ID0gbV9wYXR0ZXJuXy5tX0NFTGVuZ3RoXyAtIDE7CisJICAgICAgICBib29sZWFuIGZvdW5kID0gZmFsc2U7CisJICAgICAgICBpbnQgbGFzdGNlID0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUjsKKwkgICAgICAgIAorCSAgICAgICAgd2hpbGUgKHRydWUpIHsKKwkgICAgICAgICAgICAvLyBmaW5kaW5nIHRoZSBsYXN0IHBhdHRlcm4gY2UgbWF0Y2gsIGltYWdpbmUgY29tcG9zaXRlIAorCSAgICAgICAgICAgIC8vIGNoYXJhY3RlcnMuIGZvciBleGFtcGxlOiBzZWFyY2ggZm9yIHBhdHRlcm4gQSBpbiB0ZXh0IFx1MDBDMAorCSAgICAgICAgICAgIC8vIHdlJ2xsIGhhdmUgdG8gc2tpcCBcdTAzMDAgdGhlIGdyYXZlIGZpcnN0IGJlZm9yZSB3ZSBnZXQgdG8gQQorCSAgICAgICAgICAgIHRhcmdldGNlID0gbV9jb2xFSXRlcl8ucHJldmlvdXMoKTsKKwkgICAgICAgICAgICBpZiAodGFyZ2V0Y2UgPT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUikgeworCSAgICAgICAgICAgICAgICBmb3VuZCA9IGZhbHNlOworCSAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICB9CisJICAgICAgICAgICAgdGFyZ2V0Y2UgPSBnZXRDRSh0YXJnZXRjZSk7CisJICAgICAgICAgICAgaWYgKHRhcmdldGNlID09IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5JR05PUkFCTEUgJiYgCisJICAgICAgICAgICAgCW1fY29sRUl0ZXJfLmlzSW5CdWZmZXIoKSkgeyAKKwkgICAgICAgICAgICAgICAgLy8gdGhpcyBpcyBmb3IgdGhlIHRleHQgXHUwMzE1XHUwMzAwIHRoYXQgcmVxdWlyZXMgCisJICAgICAgICAgICAgICAgIC8vIG5vcm1hbGl6YXRpb24gYW5kIHBhdHRlcm4gXHUwMzAwLCB3aGVyZSBcdTAzMTUgaXMgaWdub3JhYmxlCisJICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCSAgICAgICAgICAgIH0KKwkgICAgICAgICAgICBpZiAobGFzdGNlID09IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5OVUxMT1JERVIgCisJICAgICAgICAgICAgCXx8IGxhc3RjZSA9PSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuSUdOT1JBQkxFKSB7CisJICAgICAgICAgICAgICAgIGxhc3RjZSA9IHRhcmdldGNlOworCSAgICAgICAgICAgIH0KKwkgICAgICAgICAgICBpZiAodGFyZ2V0Y2UgPT0gbV9wYXR0ZXJuXy5tX0NFX1twYXR0ZXJuY2VpbmRleF0pIHsKKwkgICAgICAgICAgICAgICAgLy8gdGhlIGZpcnN0IGNlIGNhbiBiZSBhIGNvbnRyYWN0aW9uCisJICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKKwkgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgfQorCSAgICAgICAgICAgIGlmIChtX2NvbEVJdGVyXy5tX0NFQnVmZmVyT2Zmc2V0XyA8PSAwKSB7CisJICAgICAgICAgICAgICAgIGZvdW5kID0gZmFsc2U7CisJICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgIH0KKwkgICAgICAgIH0KKwkKKwkgICAgICAgIHRhcmdldGNlID0gbGFzdGNlOworCSAgICAgICAgCisJICAgICAgICB3aGlsZSAoZm91bmQgJiYgcGF0dGVybmNlaW5kZXggPiAwKSB7CisJICAgICAgICAgICAgdGFyZ2V0Y2UgPSBtX2NvbEVJdGVyXy5wcmV2aW91cygpOworCSAgICAgICAgICAgIGlmICh0YXJnZXRjZSA9PSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuTlVMTE9SREVSKSB7CisJICAgICAgICAgICAgICAgIGZvdW5kID0gZmFsc2U7CisJICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgIH0KKwkgICAgICAgICAgICB0YXJnZXRjZSA9IGdldENFKHRhcmdldGNlKTsKKwkgICAgICAgICAgICBpZiAodGFyZ2V0Y2UgPT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLklHTk9SQUJMRSkgeworCSAgICAgICAgICAgICAgICBjb250aW51ZTsKKwkgICAgICAgICAgICB9CisJCisJICAgICAgICAgICAgcGF0dGVybmNlaW5kZXggLS07CisJICAgICAgICAgICAgZm91bmQgPSBmb3VuZCAmJiB0YXJnZXRjZSA9PSBtX3BhdHRlcm5fLm1fQ0VfW3BhdHRlcm5jZWluZGV4XTsgCisJICAgICAgICB9CisJCisJICAgICAgICBpZiAoIWZvdW5kKSB7CisJICAgICAgICAgICAgdGV4dG9mZnNldCA9IHNoaWZ0Rm9yd2FyZCh0ZXh0b2Zmc2V0LCB0YXJnZXRjZSwgCisJICAgICAgICAgICAgCQkJCQkJCQkJCQlwYXR0ZXJuY2VpbmRleCk7CisJICAgICAgICAgICAgLy8gc3RhdHVzIGNoZWNrZWQgYXQgbG9vcC4KKwkgICAgICAgICAgICBwYXR0ZXJuY2VpbmRleCA9IG1fcGF0dGVybl8ubV9DRUxlbmd0aF87CisJICAgICAgICAgICAgY29udGludWU7CisJICAgICAgICB9CisJICAgICAgICAKKwkgICAgICAgIGlmIChjaGVja05leHRFeGFjdE1hdGNoKHRleHRvZmZzZXQpKSB7CisJICAgICAgICAgICAgLy8gc3RhdHVzIGNoZWNrZWQgaW4gdWNvbF9zZXRPZmZzZXQKKwkgICAgICAgICAgICByZXR1cm47CisJICAgICAgICB9CisJICAgICAgICB0ZXh0b2Zmc2V0ID0gbV91dGlsQnVmZmVyX1swXTsKKwkgICAgfQorCSAgICBzZXRNYXRjaE5vdEZvdW5kKCk7CisJfQorCisJLyoqCisJICogTWV0aG9kIHRoYXQgZG9lcyB0aGUgbmV4dCBjYW5vbmljYWwgbWF0Y2gKKwkgKiBAcGFyYW0gc3RhcnQgdGhlIG9mZnNldCB0byBzdGFydCBzaGlmdGluZyBmcm9tIGFuZCBwZXJmb3JtaW5nIHRoZSAKKwkgKiAgICAgICAgbmV4dCBjYW5vbmljYWwgbWF0Y2gKKwkgKi8KKwlwcml2YXRlIHZvaWQgaGFuZGxlTmV4dENhbm9uaWNhbChpbnQgc3RhcnQpCisJeworCSAgICBib29sZWFuIGhhc1BhdHRlcm5BY2NlbnRzID0gCisJICAgICAgIG1fcGF0dGVybl8ubV9oYXNTdWZmaXhBY2NlbnRzXyB8fCBtX3BhdHRlcm5fLm1faGFzUHJlZml4QWNjZW50c187CisJICAgICAgICAgIAorCSAgICAvLyBzaGlmdGluZyBpdCBjaGVjayBmb3Igc2V0dGluZyBvZmZzZXQKKwkgICAgLy8gaWYgc2V0T2Zmc2V0IGlzIGNhbGxlZCBwcmV2aW91c2x5IG9yIHRoZXJlIHdhcyBubyBwcmV2aW91cyBtYXRjaCwgd2UKKwkgICAgLy8gbGVhdmUgdGhlIG9mZnNldCBhcyBpdCBpcy4KKwkgICAgaW50IHRleHRvZmZzZXQgPSBzaGlmdEZvcndhcmQoc3RhcnQsIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5OVUxMT1JERVIsIAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkgIG1fcGF0dGVybl8ubV9DRUxlbmd0aF8pOworCSAgICBtX2Nhbm9uaWNhbFByZWZpeEFjY2VudHNfLmRlbGV0ZSgwLCBtX2Nhbm9uaWNhbFByZWZpeEFjY2VudHNfLmxlbmd0aCgpKTsKKwkgICAgbV9jYW5vbmljYWxTdWZmaXhBY2NlbnRzXy5kZWxldGUoMCwgbV9jYW5vbmljYWxTdWZmaXhBY2NlbnRzXy5sZW5ndGgoKSk7CisJCWludCB0YXJnZXRjZSA9IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5JR05PUkFCTEU7CisJICAgIAorCSAgICB3aGlsZSAodGV4dG9mZnNldCA8PSBtX3RleHRMaW1pdE9mZnNldF8pCisJICAgIHsKKwkgICAgCW1fY29sRUl0ZXJfLnNldEV4YWN0T2Zmc2V0KHRleHRvZmZzZXQpOworCSAgICAgICAgaW50IHBhdHRlcm5jZWluZGV4ID0gbV9wYXR0ZXJuXy5tX0NFTGVuZ3RoXyAtIDE7CisJICAgICAgICBib29sZWFuIGZvdW5kID0gZmFsc2U7CisJICAgICAgICBpbnQgbGFzdGNlID0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUjsKKwkgICAgICAgIAorCSAgICAgICAgd2hpbGUgKHRydWUpIHsKKwkgICAgICAgICAgICAvLyBmaW5kaW5nIHRoZSBsYXN0IHBhdHRlcm4gY2UgbWF0Y2gsIGltYWdpbmUgY29tcG9zaXRlIGNoYXJhY3RlcnMKKwkgICAgICAgICAgICAvLyBmb3IgZXhhbXBsZTogc2VhcmNoIGZvciBwYXR0ZXJuIEEgaW4gdGV4dCBcdTAwQzAKKwkgICAgICAgICAgICAvLyB3ZSdsbCBoYXZlIHRvIHNraXAgXHUwMzAwIHRoZSBncmF2ZSBmaXJzdCBiZWZvcmUgd2UgZ2V0IHRvIEEKKwkgICAgICAgICAgICB0YXJnZXRjZSA9IG1fY29sRUl0ZXJfLnByZXZpb3VzKCk7CisJICAgICAgICAgICAgaWYgKHRhcmdldGNlID09IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5OVUxMT1JERVIpIHsKKwkgICAgICAgICAgICAgICAgZm91bmQgPSBmYWxzZTsKKwkgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgfQorCSAgICAgICAgICAgIHRhcmdldGNlID0gZ2V0Q0UodGFyZ2V0Y2UpOworCSAgICAgICAgICAgIGlmIChsYXN0Y2UgPT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUiAKKwkgICAgICAgICAgICAJCQl8fCBsYXN0Y2UgPT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLklHTk9SQUJMRSkgeworCSAgICAgICAgICAgICAgICBsYXN0Y2UgPSB0YXJnZXRjZTsKKwkgICAgICAgICAgICB9CisJICAgICAgICAgICAgaWYgKHRhcmdldGNlID09IG1fcGF0dGVybl8ubV9DRV9bcGF0dGVybmNlaW5kZXhdKSB7CisJICAgICAgICAgICAgICAgIC8vIHRoZSBmaXJzdCBjZSBjYW4gYmUgYSBjb250cmFjdGlvbgorCSAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CisJICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgIH0KKwkgICAgICAgICAgICBpZiAobV9jb2xFSXRlcl8ubV9DRUJ1ZmZlck9mZnNldF8gPD0gMCkgeworCSAgICAgICAgICAgICAgICBmb3VuZCA9IGZhbHNlOworCSAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICB9CisJICAgICAgICB9CisJICAgICAgICB0YXJnZXRjZSA9IGxhc3RjZTsKKwkgICAgICAgIAorCSAgICAgICAgd2hpbGUgKGZvdW5kICYmIHBhdHRlcm5jZWluZGV4ID4gMCkgeworCSAgICAgICAgICAgIHRhcmdldGNlICAgID0gbV9jb2xFSXRlcl8ucHJldmlvdXMoKTsKKwkgICAgICAgICAgICBpZiAodGFyZ2V0Y2UgPT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUikgeworCSAgICAgICAgICAgICAgICBmb3VuZCA9IGZhbHNlOworCSAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICB9CisJICAgICAgICAgICAgdGFyZ2V0Y2UgICAgPSBnZXRDRSh0YXJnZXRjZSk7CisJICAgICAgICAgICAgaWYgKHRhcmdldGNlID09IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5JR05PUkFCTEUpIHsKKwkgICAgICAgICAgICAgICAgY29udGludWU7CisJICAgICAgICAgICAgfQorCQorCSAgICAgICAgICAgIHBhdHRlcm5jZWluZGV4IC0tOworCSAgICAgICAgICAgIGZvdW5kID0gZm91bmQgJiYgdGFyZ2V0Y2UgPT0gbV9wYXR0ZXJuXy5tX0NFX1twYXR0ZXJuY2VpbmRleF07IAorCSAgICAgICAgfQorCQorCSAgICAgICAgLy8gaW5pdGlhbGl6aW5nIHRoZSByZWFycmFuZ2VkIGFjY2VudCBhcnJheQorCSAgICAgICAgaWYgKGhhc1BhdHRlcm5BY2NlbnRzICYmICFmb3VuZCkgeworCSAgICAgICAgICAgIGZvdW5kID0gZG9OZXh0Q2Fub25pY2FsTWF0Y2godGV4dG9mZnNldCk7CisJICAgICAgICB9CisJCisJICAgICAgICBpZiAoIWZvdW5kKSB7CisJICAgICAgICAgICAgdGV4dG9mZnNldCA9IHNoaWZ0Rm9yd2FyZCh0ZXh0b2Zmc2V0LCB0YXJnZXRjZSwgcGF0dGVybmNlaW5kZXgpOworCSAgICAgICAgICAgIC8vIHN0YXR1cyBjaGVja2VkIGF0IGxvb3AKKwkgICAgICAgICAgICBwYXR0ZXJuY2VpbmRleCA9IG1fcGF0dGVybl8ubV9DRUxlbmd0aF87CisJICAgICAgICAgICAgY29udGludWU7CisJICAgICAgICB9CisJICAgICAgICAKKwkgICAgICAgIGlmIChjaGVja05leHRDYW5vbmljYWxNYXRjaCh0ZXh0b2Zmc2V0KSkgeworCSAgICAgICAgICAgIHJldHVybjsKKwkgICAgICAgIH0KKwkgICAgICAgIHRleHRvZmZzZXQgPSBtX3V0aWxCdWZmZXJfWzBdOworCSAgICB9CisJICAgIHNldE1hdGNoTm90Rm91bmQoKTsKKwl9CisJCisJLyoqCisJICogTWV0aG9kIHRoYXQgZG9lcyB0aGUgcHJldmlvdXMgZXhhY3QgbWF0Y2gKKwkgKiBAcGFyYW0gc3RhcnQgdGhlIG9mZnNldCB0byBzdGFydCBzaGlmdGluZyBmcm9tIGFuZCBwZXJmb3JtaW5nIHRoZSAKKwkgKiAgICAgICAgcHJldmlvdXMgZXhhY3QgbWF0Y2gKKwkgKi8KKwlwcml2YXRlIHZvaWQgaGFuZGxlUHJldmlvdXNFeGFjdChpbnQgc3RhcnQpCisJeworCSAgICBpbnQgdGV4dG9mZnNldCA9IHJldmVyc2VTaGlmdChzdGFydCwgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUiwgCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGF0dGVybl8ubV9DRUxlbmd0aF8pOworCSAgICB3aGlsZSAodGV4dG9mZnNldCA+PSBtX3RleHRCZWdpbk9mZnNldF8pCisJICAgIHsKKwkgICAgCW1fY29sRUl0ZXJfLnNldEV4YWN0T2Zmc2V0KHRleHRvZmZzZXQpOworCSAgICAgICAgaW50IHBhdHRlcm5jZWluZGV4ID0gMTsKKwkgICAgICAgIGludCB0YXJnZXRjZSA9IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5JR05PUkFCTEU7CisJICAgICAgICBib29sZWFuIGZvdW5kID0gZmFsc2U7CisJICAgICAgICBpbnQgZmlyc3RjZSA9IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5OVUxMT1JERVI7CisJICAgICAgICAKKwkgICAgICAgIHdoaWxlICh0cnVlKSB7CisJICAgICAgICAgICAgLy8gZmluZGluZyB0aGUgZmlyc3QgcGF0dGVybiBjZSBtYXRjaCwgaW1hZ2luZSBjb21wb3NpdGUgCisJICAgICAgICAgICAgLy8gY2hhcmFjdGVycy4gZm9yIGV4YW1wbGU6IHNlYXJjaCBmb3IgcGF0dGVybiBcdTAzMDAgaW4gdGV4dCAKKwkgICAgICAgICAgICAvLyBcdTAwQzAsIHdlJ2xsIGhhdmUgdG8gc2tpcCBBIGZpcnN0IGJlZm9yZSB3ZSBnZXQgdG8gCisJICAgICAgICAgICAgLy8gXHUwMzAwIHRoZSBncmF2ZSBhY2NlbnQKKwkgICAgICAgICAgICB0YXJnZXRjZSA9IG1fY29sRUl0ZXJfLm5leHQoKTsKKwkgICAgICAgICAgICBpZiAodGFyZ2V0Y2UgPT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUikgeworCSAgICAgICAgICAgICAgICBmb3VuZCA9IGZhbHNlOworCSAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICB9CisJICAgICAgICAgICAgdGFyZ2V0Y2UgPSBnZXRDRSh0YXJnZXRjZSk7CisJICAgICAgICAgICAgaWYgKGZpcnN0Y2UgPT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUiAKKwkgICAgICAgICAgICAJfHwgZmlyc3RjZSA9PSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuSUdOT1JBQkxFKSB7CisJICAgICAgICAgICAgICAgIGZpcnN0Y2UgPSB0YXJnZXRjZTsKKwkgICAgICAgICAgICB9CisJICAgICAgICAgICAgaWYgKHRhcmdldGNlID09IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5JR05PUkFCTEUpIHsKKwkgICAgICAgICAgICAgICAgY29udGludWU7CisJICAgICAgICAgICAgfSAgICAgICAgIAorCSAgICAgICAgICAgIGlmICh0YXJnZXRjZSA9PSBtX3BhdHRlcm5fLm1fQ0VfWzBdKSB7CisJICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKKwkgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgfQorCSAgICAgICAgICAgIGlmIChtX2NvbEVJdGVyXy5tX0NFQnVmZmVyT2Zmc2V0XyA9PSAtMSAKKwkgICAgICAgICAgICAJfHwgbV9jb2xFSXRlcl8ubV9DRUJ1ZmZlck9mZnNldF8gCisJICAgICAgICAgICAgCQkJCQkJCT09IG1fY29sRUl0ZXJfLm1fQ0VCdWZmZXJTaXplXykgeworCSAgICAgICAgICAgICAgICAvLyBjaGVja2luZyBmb3IgYWNjZW50cyBpbiBjb21wb3NpdGUgY2hhcmFjdGVyCisJICAgICAgICAgICAgICAgIGZvdW5kID0gZmFsc2U7CisJICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgIH0KKwkgICAgICAgIH0KKwkKKwkgICAgICAgIHRhcmdldGNlID0gZmlyc3RjZTsKKwkgICAgICAgIAorCSAgICAgICAgd2hpbGUgKGZvdW5kICYmIHBhdHRlcm5jZWluZGV4IDwgbV9wYXR0ZXJuXy5tX0NFTGVuZ3RoXykgeworCSAgICAgICAgICAgIHRhcmdldGNlID0gbV9jb2xFSXRlcl8ubmV4dCgpOworCSAgICAgICAgICAgIGlmICh0YXJnZXRjZSA9PSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuTlVMTE9SREVSKSB7CisJICAgICAgICAgICAgICAgIGZvdW5kID0gZmFsc2U7CisJICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgIH0KKwkgICAgICAgICAgICB0YXJnZXRjZSA9IGdldENFKHRhcmdldGNlKTsKKwkgICAgICAgICAgICBpZiAodGFyZ2V0Y2UgPT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLklHTk9SQUJMRSkgeworCSAgICAgICAgICAgICAgICBjb250aW51ZTsKKwkgICAgICAgICAgICB9CisJCisJICAgICAgICAgICAgZm91bmQgPSBmb3VuZCAmJiB0YXJnZXRjZSA9PSBtX3BhdHRlcm5fLm1fQ0VfW3BhdHRlcm5jZWluZGV4XTsgCisJICAgICAgICAgICAgcGF0dGVybmNlaW5kZXggKys7CisJICAgICAgICB9CisJCisJICAgICAgICBpZiAoIWZvdW5kKSB7CisJICAgICAgICAgICAgdGV4dG9mZnNldCA9IHJldmVyc2VTaGlmdCh0ZXh0b2Zmc2V0LCB0YXJnZXRjZSwgcGF0dGVybmNlaW5kZXgpOworCSAgICAgICAgICAgIHBhdHRlcm5jZWluZGV4ID0gMDsKKwkgICAgICAgICAgICBjb250aW51ZTsKKwkgICAgICAgIH0KKwkgICAgICAgIAorCSAgICAgICAgaWYgKGNoZWNrUHJldmlvdXNFeGFjdE1hdGNoKHRleHRvZmZzZXQpKSB7CisJICAgICAgICAgICAgcmV0dXJuOworCSAgICAgICAgfQorCSAgICAgICAgdGV4dG9mZnNldCA9IG1fdXRpbEJ1ZmZlcl9bMF07CisJICAgIH0KKwkgICAgc2V0TWF0Y2hOb3RGb3VuZCgpOworCX0KKwkKKwkvKioKKwkgKiBNZXRob2QgdGhhdCBkb2VzIHRoZSBwcmV2aW91cyBjYW5vbmljYWwgbWF0Y2gKKwkgKiBAcGFyYW0gc3RhcnQgdGhlIG9mZnNldCB0byBzdGFydCBzaGlmdGluZyBmcm9tIGFuZCBwZXJmb3JtaW5nIHRoZSAKKwkgKiAgICAgICAgcHJldmlvdXMgY2Fub25pY2FsIG1hdGNoCisJICovCisJcHJpdmF0ZSB2b2lkIGhhbmRsZVByZXZpb3VzQ2Fub25pY2FsKGludCBzdGFydCkKKwl7CisJICAgIGJvb2xlYW4gaGFzUGF0dGVybkFjY2VudHMgPSAKKwkgICAgICAgbV9wYXR0ZXJuXy5tX2hhc1N1ZmZpeEFjY2VudHNfIHx8IG1fcGF0dGVybl8ubV9oYXNQcmVmaXhBY2NlbnRzXzsKKwkgICAgICAgICAgCisJICAgIC8vIHNoaWZ0aW5nIGl0IGNoZWNrIGZvciBzZXR0aW5nIG9mZnNldAorCSAgICAvLyBpZiBzZXRPZmZzZXQgaXMgY2FsbGVkIHByZXZpb3VzbHkgb3IgdGhlcmUgd2FzIG5vIHByZXZpb3VzIG1hdGNoLCB3ZQorCSAgICAvLyBsZWF2ZSB0aGUgb2Zmc2V0IGFzIGl0IGlzLgorCSAgICBpbnQgdGV4dG9mZnNldCA9IHJldmVyc2VTaGlmdChzdGFydCwgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUiwgCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCQltX3BhdHRlcm5fLm1fQ0VMZW5ndGhfKTsKKwkgICAgbV9jYW5vbmljYWxQcmVmaXhBY2NlbnRzXy5kZWxldGUoMCwgbV9jYW5vbmljYWxQcmVmaXhBY2NlbnRzXy5sZW5ndGgoKSk7CisJICAgIG1fY2Fub25pY2FsU3VmZml4QWNjZW50c18uZGVsZXRlKDAsIG1fY2Fub25pY2FsU3VmZml4QWNjZW50c18ubGVuZ3RoKCkpOworCSAgICAKKwkgICAgd2hpbGUgKHRleHRvZmZzZXQgPj0gbV90ZXh0QmVnaW5PZmZzZXRfKQorCSAgICB7CisJICAgIAltX2NvbEVJdGVyXy5zZXRFeGFjdE9mZnNldCh0ZXh0b2Zmc2V0KTsKKwkgICAgICAgIGludCBwYXR0ZXJuY2VpbmRleCA9IDE7CisJICAgICAgICBpbnQgdGFyZ2V0Y2UgPSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuSUdOT1JBQkxFOworCSAgICAgICAgYm9vbGVhbiBmb3VuZCA9IGZhbHNlOworCSAgICAgICAgaW50IGZpcnN0Y2UgPSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuTlVMTE9SREVSOworCSAgICAgICAgCisJICAgICAgICB3aGlsZSAodHJ1ZSkgeworCSAgICAgICAgICAgIC8vIGZpbmRpbmcgdGhlIGZpcnN0IHBhdHRlcm4gY2UgbWF0Y2gsIGltYWdpbmUgY29tcG9zaXRlIAorCSAgICAgICAgICAgIC8vIGNoYXJhY3RlcnMuIGZvciBleGFtcGxlOiBzZWFyY2ggZm9yIHBhdHRlcm4gXHUwMzAwIGluIHRleHQgCisJICAgICAgICAgICAgLy8gXHUwMEMwLCB3ZSdsbCBoYXZlIHRvIHNraXAgQSBmaXJzdCBiZWZvcmUgd2UgZ2V0IHRvIAorCSAgICAgICAgICAgIC8vIFx1MDMwMCB0aGUgZ3JhdmUgYWNjZW50CisJICAgICAgICAgICAgdGFyZ2V0Y2UgPSBtX2NvbEVJdGVyXy5uZXh0KCk7CisJICAgICAgICAgICAgaWYgKHRhcmdldGNlID09IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5OVUxMT1JERVIpIHsKKwkgICAgICAgICAgICAgICAgZm91bmQgPSBmYWxzZTsKKwkgICAgICAgICAgICAgICAgYnJlYWs7CisJICAgICAgICAgICAgfQorCSAgICAgICAgICAgIHRhcmdldGNlID0gZ2V0Q0UodGFyZ2V0Y2UpOworCSAgICAgICAgICAgIGlmIChmaXJzdGNlID09IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5OVUxMT1JERVIgCisJICAgICAgICAgICAgCXx8IGZpcnN0Y2UgPT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLklHTk9SQUJMRSkgeworCSAgICAgICAgICAgICAgICBmaXJzdGNlID0gdGFyZ2V0Y2U7CisJICAgICAgICAgICAgfQorCSAgICAgICAgICAgIAorCSAgICAgICAgICAgIGlmICh0YXJnZXRjZSA9PSBtX3BhdHRlcm5fLm1fQ0VfWzBdKSB7CisJICAgICAgICAgICAgICAgIC8vIHRoZSBmaXJzdCBjZSBjYW4gYmUgYSBjb250cmFjdGlvbgorCSAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CisJICAgICAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgIH0KKwkgICAgICAgICAgICBpZiAobV9jb2xFSXRlcl8ubV9DRUJ1ZmZlck9mZnNldF8gPT0gLTEgCisJICAgICAgICAgICAgCXx8IG1fY29sRUl0ZXJfLm1fQ0VCdWZmZXJPZmZzZXRfIAorCSAgICAgICAgICAgIAkJCQkJCQk9PSBtX2NvbEVJdGVyXy5tX0NFQnVmZmVyU2l6ZV8pIHsKKwkgICAgICAgICAgICAgICAgLy8gY2hlY2tpbmcgZm9yIGFjY2VudHMgaW4gY29tcG9zaXRlIGNoYXJhY3RlcgorCSAgICAgICAgICAgICAgICBmb3VuZCA9IGZhbHNlOworCSAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICB9CisJICAgICAgICB9CisJCisJICAgICAgICB0YXJnZXRjZSA9IGZpcnN0Y2U7CisJICAgICAgICAKKwkgICAgICAgIHdoaWxlIChmb3VuZCAmJiBwYXR0ZXJuY2VpbmRleCA8IG1fcGF0dGVybl8ubV9DRUxlbmd0aF8pIHsKKwkgICAgICAgICAgICB0YXJnZXRjZSA9IG1fY29sRUl0ZXJfLm5leHQoKTsKKwkgICAgICAgICAgICBpZiAodGFyZ2V0Y2UgPT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUikgeworCSAgICAgICAgICAgICAgICBmb3VuZCA9IGZhbHNlOworCSAgICAgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICB9CisJICAgICAgICAgICAgdGFyZ2V0Y2UgPSBnZXRDRSh0YXJnZXRjZSk7CisJICAgICAgICAgICAgaWYgKHRhcmdldGNlID09IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5JR05PUkFCTEUpIHsKKwkgICAgICAgICAgICAgICAgY29udGludWU7CisJICAgICAgICAgICAgfQorCQorCSAgICAgICAgICAgIGZvdW5kID0gZm91bmQgJiYgdGFyZ2V0Y2UgPT0gbV9wYXR0ZXJuXy5tX0NFX1twYXR0ZXJuY2VpbmRleF07IAorCSAgICAgICAgICAgIHBhdHRlcm5jZWluZGV4ICsrOworCSAgICAgICAgfQorCQorCSAgICAgICAgLy8gaW5pdGlhbGl6aW5nIHRoZSByZWFycmFuZ2VkIGFjY2VudCBhcnJheQorCSAgICAgICAgaWYgKGhhc1BhdHRlcm5BY2NlbnRzICYmICFmb3VuZCkgeworCSAgICAgICAgICAgIGZvdW5kID0gZG9QcmV2aW91c0Nhbm9uaWNhbE1hdGNoKHRleHRvZmZzZXQpOworCSAgICAgICAgfQorCQorCSAgICAgICAgaWYgKCFmb3VuZCkgeworCSAgICAgICAgICAgIHRleHRvZmZzZXQgPSByZXZlcnNlU2hpZnQodGV4dG9mZnNldCwgdGFyZ2V0Y2UsIHBhdHRlcm5jZWluZGV4KTsKKwkgICAgICAgICAgICBwYXR0ZXJuY2VpbmRleCA9IDA7CisJICAgICAgICAgICAgY29udGludWU7CisJICAgICAgICB9CisJCisJICAgICAgICBpZiAoY2hlY2tQcmV2aW91c0Nhbm9uaWNhbE1hdGNoKHRleHRvZmZzZXQpKSB7CisJICAgICAgICAgICAgcmV0dXJuOworCSAgICAgICAgfQorCSAgICAgICAgdGV4dG9mZnNldCA9IG1fdXRpbEJ1ZmZlcl9bMF07CisJICAgIH0KKwkgICAgc2V0TWF0Y2hOb3RGb3VuZCgpOworCX0KKwkKKwkvKioKKwkgKiBHZXRzIGEgc3Vic3RyaW5nIG91dCBvZiBhIENoYXJhY3Rlckl0ZXJhdG9yCisJICogQHBhcmFtIHRleHQgQ2hhcmFjdGVySXRlcmF0b3IKKwkgKiBAcGFyYW0gc3RhcnQgc3RhcnQgb2Zmc2V0CisJICogQHBhcmFtIGxlbmd0aCBvZiBzdWJzdHJpbmcKKwkgKiBAcmV0dXJuIHN1YnN0cmluZyBmcm9tIHRleHQgc3RhcnRpbmcgYXQgc3RhcnQgYW5kIGxlbmd0aCBsZW5ndGgKKwkgKi8KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgZ2V0U3RyaW5nKENoYXJhY3Rlckl0ZXJhdG9yIHRleHQsIGludCBzdGFydCwKKwkJCQkJCQkJCQkJaW50IGxlbmd0aCkKKwl7CisJCVN0cmluZ0J1ZmZlciByZXN1bHQgPSBuZXcgU3RyaW5nQnVmZmVyKGxlbmd0aCk7CisJCWludCBvZmZzZXQgPSB0ZXh0LmdldEluZGV4KCk7CisJCXRleHQuc2V0SW5kZXgoc3RhcnQpOworCQlmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSArKykgeworCQkJcmVzdWx0LmFwcGVuZCh0ZXh0LmN1cnJlbnQoKSk7CisJCQl0ZXh0Lm5leHQoKTsKKwkJfQorCQl0ZXh0LnNldEluZGV4KG9mZnNldCk7CisJCXJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKKwl9CisJCisJLyoqCisJICogR2V0dGluZyB0aGUgbWFzayBmb3IgY29sbGF0aW9uIHN0cmVuZ3RoCisJICogQHBhcmFtIHN0cmVuZ3RoIGNvbGxhdGlvbiBzdHJlbmd0aAorIAkgKiBAcmV0dXJuIGNvbGxhdGlvbiBlbGVtZW50IG1hc2sKKwkgKi8KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgZ2V0TWFzayhpbnQgc3RyZW5ndGgpIAorCXsKKwkgICAgc3dpdGNoIChzdHJlbmd0aCkgCisJICAgIHsKKwkgICAgCWNhc2UgQ29sbGF0b3IuUFJJTUFSWToKKwkgICAgICAgIAlyZXR1cm4gUnVsZUJhc2VkQ29sbGF0b3IuQ0VfUFJJTUFSWV9NQVNLXzsKKwkgICAgCWNhc2UgQ29sbGF0b3IuU0VDT05EQVJZOgorCSAgICAgICAgCXJldHVybiBSdWxlQmFzZWRDb2xsYXRvci5DRV9TRUNPTkRBUllfTUFTS18gCisJICAgICAgICAJICAgICAgIHwgUnVsZUJhc2VkQ29sbGF0b3IuQ0VfUFJJTUFSWV9NQVNLXzsKKwkgICAgCWRlZmF1bHQ6CisJICAgICAgICAJcmV0dXJuIFJ1bGVCYXNlZENvbGxhdG9yLkNFX1RFUlRJQVJZX01BU0tfIAorCSAgICAgICAgCSAgICAgICB8IFJ1bGVCYXNlZENvbGxhdG9yLkNFX1NFQ09OREFSWV9NQVNLXyAKKwkgICAgICAgICAgICAgICAgICAgfCBSdWxlQmFzZWRDb2xsYXRvci5DRV9QUklNQVJZX01BU0tfOworCSAgICB9CisJfQorICAgIAorICAgIC8qKgorICAgICAqIFNldHMgbWF0Y2ggbm90IGZvdW5kIAorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBzZXRNYXRjaE5vdEZvdW5kKCkgCisgICAgeworICAgICAgICAvLyB0aGlzIG1ldGhvZCByZXNldHMgdGhlIG1hdGNoIHJlc3VsdCByZWdhcmRsZXNzIG9mIHRoZSBlcnJvciBzdGF0dXMuCisgICAgICAgIG1fbWF0Y2hlZEluZGV4XyA9IERPTkU7CisgICAgICAgIHNldE1hdGNoTGVuZ3RoKDApOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS90ZXh0L1N5bWJvbFRhYmxlLmphdmEgYi9zcmMvY29tL2libS9pY3UvdGV4dC9TeW1ib2xUYWJsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjFiZjliZGEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdGV4dC9TeW1ib2xUYWJsZS5qYXZhCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS90ZXh0L1N5bWJvbFRhYmxlLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMTIvMDQgMDA6MDM6NDAgJCAKKyAqICRSZXZpc2lvbjogMS4xMCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UudGV4dDsKK2ltcG9ydCBqYXZhLnRleHQuUGFyc2VQb3NpdGlvbjsKKworLyoqCisgKiBBbiBpbnRlcmZhY2UgdGhhdCBtYXBzIHN0cmluZ3MgdG8gb2JqZWN0cy4gIFRoaXMgaW50ZXJmYWNlIGRlZmluZXMKKyAqIGJvdGggbG9va3VwIHByb3RvY29sIGFuZCBwYXJzaW5nLiAgVGhpcyBhbGxvd3MgZGlmZmVyZW50IGNvbXBvbmVudHMKKyAqIHRvIHNoYXJlIGEgc3ltYm9sIHRhYmxlIGFuZCB0byBoYW5kbGUgbmFtZSBwYXJzaW5nIHVuaWZvcm1seS4gIEl0CisgKiBpcyBleHBlY3RlZCB0aGF0IGNsaWVudCBwYXJzZSBjb2RlIGxvb2sgZm9yIHRoZSBTWU1CT0xfUkVGCisgKiBjaGFyYWN0ZXIgYW5kLCB3aGVuIHNlZW4sIGF0dGVtcHQgdG8gcGFyc2UgdGhlIGNoYXJhY3RlcnMgYWZ0ZXIgaXQKKyAqIHVzaW5nIHBhcnNlUmVmZXJlbmNlKCkuCisgKgorICogPHA+Q3VycmVudGx5LCBSdWxlQmFzZWRUcmFuc2xpdGVyYXRvciBhbmQgVW5pY29kZVNldCB1c2UgdGhpcworICogaW50ZXJmYWNlIHRvIHNoYXJlIHZhcmlhYmxlIGRlZmluaXRpb25zLgorICovCitpbnRlcmZhY2UgU3ltYm9sVGFibGUgeworCisgICAgLyoqCisgICAgICogVGhlIGNoYXJhY3RlciBwcmVjZWRpbmcgYSBzeW1ib2wgcmVmZXJlbmNlIG5hbWUuCisgICAgICovCisgICAgc3RhdGljIGZpbmFsIGNoYXIgU1lNQk9MX1JFRiA9ICckJzsKKworICAgIC8qKgorICAgICAqIExvb2t1cCB0aGUgY2hhcmFjdGVycyBhc3NvY2lhdGVkIHdpdGggdGhpcyBzdHJpbmcgYW5kIHJldHVybiBpdC4KKyAgICAgKiBSZXR1cm4gPHR0Pm51bGw8L3R0PiBpZiBubyBzdWNoIG5hbWUgZXhpc3RzLiAgVGhlIHJlc3VsdGFudAorICAgICAqIGFycmF5IG1heSBoYXZlIGxlbmd0aCB6ZXJvLgorICAgICAqLworICAgIGNoYXJbXSBsb29rdXAoU3RyaW5nIHMpOworCisgICAgLyoqCisgICAgICogTG9va3VwIHRoZSBVbmljb2RlTWF0Y2hlciBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIGNoYXJhY3RlciwgYW5kCisgICAgICogcmV0dXJuIGl0LiAgUmV0dXJuIDx0dD5udWxsPC90dD4gaWYgbm90IGZvdW5kLgorICAgICAqIEBwYXJhbSBjaCBhIDMyLWJpdCBjb2RlIHBvaW50IGZyb20gMCB0byAweDEwRkZGRi4KKyAgICAgKi8KKyAgICBVbmljb2RlTWF0Y2hlciBsb29rdXBNYXRjaGVyKGludCBjaCk7CisKKyAgICAvKioKKyAgICAgKiBQYXJzZSBhIHN5bWJvbCByZWZlcmVuY2UgbmFtZSBmcm9tIHRoZSBnaXZlbiBzdHJpbmcsIHN0YXJ0aW5nCisgICAgICogYXQgdGhlIGdpdmVuIHBvc2l0aW9uLiAgSWYgbm8gdmFsaWQgc3ltYm9sIHJlZmVyZW5jZSBuYW1lIGlzCisgICAgICogZm91bmQsIHJldHVybiBudWxsIGFuZCBsZWF2ZSBwb3MgdW5jaGFuZ2VkLgorICAgICAqIEBwYXJhbSB0ZXh0IHRoZSB0ZXh0IHRvIHBhcnNlIGZvciB0aGUgbmFtZQorICAgICAqIEBwYXJhbSBwb3Mgb24gZW50cnksIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIHRvIHBhcnNlLgorICAgICAqIFRoaXMgaXMgdGhlIGNoYXJhY3RlciBmb2xsb3dpbmcgdGhlIFNZTUJPTF9SRUYgY2hhcmFjdGVyLiAgT24KKyAgICAgKiBleGl0LCB0aGUgaW5kZXggYWZ0ZXIgdGhlIGxhc3QgcGFyc2VkIGNoYXJhY3Rlci4KKyAgICAgKiBAcGFyYW0gbGltaXQgdGhlIGluZGV4IGFmdGVyIHRoZSBsYXN0IGNoYXJhY3RlciB0byBiZSBwYXJzZWQuCisgICAgICogQHJldHVybiB0aGUgcGFyc2VkIG5hbWUuCisgICAgICovCisgICAgU3RyaW5nIHBhcnNlUmVmZXJlbmNlKFN0cmluZyB0ZXh0LCBQYXJzZVBvc2l0aW9uIHBvcywgaW50IGxpbWl0KTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS90ZXh0L1RpdGxlY2FzZVRyYW5zbGl0ZXJhdG9yLmphdmEgYi9zcmMvY29tL2libS9pY3UvdGV4dC9UaXRsZWNhc2VUcmFuc2xpdGVyYXRvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmY4N2VmMTEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdGV4dC9UaXRsZWNhc2VUcmFuc2xpdGVyYXRvci5qYXZhCkBAIC0wLDAgKzEsMTM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L3RleHQvVGl0bGVjYXNlVHJhbnNsaXRlcmF0b3IuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8xMC8zMSAyMjozNjo0OCAkIAorICogJFJldmlzaW9uOiAxLjE4ICQKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS50ZXh0OworaW1wb3J0IGphdmEudXRpbC4qOworCitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5VQ2hhcmFjdGVyUHJvcGVydHk7CisKKy8qKgorICogQSB0cmFuc2xpdGVyYXRvciB0aGF0IGNvbnZlcnRzIGFsbCBsZXR0ZXJzIChhcyBkZWZpbmVkIGJ5CisgKiA8Y29kZT5VQ2hhcmFjdGVyLmlzTGV0dGVyKCk8L2NvZGU+KSB0byBsb3dlciBjYXNlLCBleGNlcHQgZm9yIHRob3NlCisgKiBsZXR0ZXJzIHByZWNlZGVkIGJ5IG5vbi1sZXR0ZXJzLiAgVGhlIGxhdHRlciBhcmUgY29udmVydGVkIHRvIHRpdGxlCisgKiBjYXNlIHVzaW5nIDxjb2RlPlVDaGFyYWN0ZXIudG9UaXRsZUNhc2UoKTwvY29kZT4uCisgKiBAYXV0aG9yIEFsYW4gTGl1CisgKi8KK2NsYXNzIFRpdGxlY2FzZVRyYW5zbGl0ZXJhdG9yIGV4dGVuZHMgVHJhbnNsaXRlcmF0b3IgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBfSUQgPSAiQW55LVRpdGxlIjsKKyAgICBwcml2YXRlIExvY2FsZSBsb2M7CisKKyAgICAvKioKKyAgICAgKiBUaGUgc2V0IG9mIGNoYXJhY3RlcnMgd2Ugc2tpcC4gIFRoZXNlIGFyZSBuZWl0aGVyIGNhc2VkIG5vcgorICAgICAqIG5vbi1jYXNlZCwgdG8gdXM7IHdlIGNvcHkgdGhlbSB2ZXJiYXRpbS4KKyAgICAgKi8KKyAgICBzdGF0aWMgZmluYWwgVW5pY29kZVNldCBTS0lQID0gbmV3IFVuaWNvZGVTZXQoIltcdTAwQUQgXHUyMDE5IFxcJyBbOk1uOl0gWzpNZTpdIFs6Q2Y6XSBbOkxtOl0gWzpTazpdXSIpOworCisgICAgLyoqCisgICAgICogVGhlIHNldCBvZiBjaGFyYWN0ZXJzIHRoYXQgY2F1c2UgdGhlIG5leHQgbm9uLVNLSVAgY2hhcmFjdGVyCisgICAgICogdG8gYmUgbG93ZXJjYXNlZC4KKyAgICAgKi8KKyAgICBzdGF0aWMgZmluYWwgVW5pY29kZVNldCBDQVNFRCA9IG5ldyBVbmljb2RlU2V0KCJbWzpMdTpdIFs6TGw6XSBbOkx0Ol1dIik7CisKKyAgICAvKioKKyAgICAgKiBTeXN0ZW0gcmVnaXN0cmF0aW9uIGhvb2suCisgICAgICovCisgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXIoKSB7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yLnJlZ2lzdGVyRmFjdG9yeShfSUQsIG5ldyBUcmFuc2xpdGVyYXRvci5GYWN0b3J5KCkgeworICAgICAgICAgICAgcHVibGljIFRyYW5zbGl0ZXJhdG9yIGdldEluc3RhbmNlKFN0cmluZyBJRCkgeworICAgICAgICAgICAgICAgIHJldHVybiBuZXcgVGl0bGVjYXNlVHJhbnNsaXRlcmF0b3IoTG9jYWxlLlVTKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisKKyAgICAgICAgcmVnaXN0ZXJTcGVjaWFsSW52ZXJzZSgiVGl0bGUiLCAiTG93ZXIiLCBmYWxzZSk7CisgICAgfQorCisgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgdHJhbnNsaXRlcmF0b3IuCisgICAgICovCisgICAgcHVibGljIFRpdGxlY2FzZVRyYW5zbGl0ZXJhdG9yKExvY2FsZSBsb2MpIHsKKyAgICAgICAgc3VwZXIoX0lELCBudWxsKTsKKyAgICAgICAgdGhpcy5sb2MgPSBsb2M7CisgICAgICAgIC8vIE5lZWQgdG8gbG9vayBiYWNrIDIgY2hhcmFjdGVycyBpbiB0aGUgY2FzZSBvZiAiY2FuJ3QiCisgICAgICAgIHNldE1heGltdW1Db250ZXh0TGVuZ3RoKDIpOworICAgIH0KKyAgICAgCisgICAgLyoqCisgICAgICogSW1wbGVtZW50cyB7QGxpbmsgVHJhbnNsaXRlcmF0b3IjaGFuZGxlVHJhbnNsaXRlcmF0ZX0uCisgICAgICovCisgICAgcHJvdGVjdGVkIHZvaWQgaGFuZGxlVHJhbnNsaXRlcmF0ZShSZXBsYWNlYWJsZSB0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zaXRpb24gb2Zmc2V0cywgYm9vbGVhbiBpbmNyZW1lbnRhbCkgeworCisgICAgICAgIC8vIE91ciBtb2RlOyB3ZSBhcmUgZWl0aGVyIGNvbnZlcnRpbmcgbGV0dGVyIHRvVGl0bGUgb3IKKyAgICAgICAgLy8gdG9Mb3dlci4KKyAgICAgICAgYm9vbGVhbiBkb1RpdGxlID0gdHJ1ZTsKKworICAgICAgICAvLyBEZXRlcm1pbmUgaWYgdGhlcmUgaXMgYSBwcmVjZWRpbmcgY29udGV4dCBvZiBDQVNFRCBTS0lQKiwKKyAgICAgICAgLy8gaW4gd2hpY2ggY2FzZSB3ZSB3YW50IHRvIHN0YXJ0IGluIHRvTG93ZXIgbW9kZS4gIElmIHRoZQorICAgICAgICAvLyBwcmlvciBjb250ZXh0IGlzIGFueXRoaW5nIGVsc2UgKGluY2x1ZGluZyBlbXB0eSkgdGhlbiBzdGFydAorICAgICAgICAvLyBpbiB0b1RpdGxlIG1vZGUuCisgICAgICAgIGludCBjOworICAgICAgICBmb3IgKGludCBzdGFydCA9IG9mZnNldHMuc3RhcnQgLSAxOyBzdGFydCA+PSBvZmZzZXRzLmNvbnRleHRTdGFydDsgc3RhcnQgLT0gVVRGMTYuZ2V0Q2hhckNvdW50KGMpKSB7CisgICAgICAgICAgICBjID0gdGV4dC5jaGFyMzJBdChzdGFydCk7CisgICAgICAgICAgICBpZiAoU0tJUC5jb250YWlucyhjKSkgeworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZG9UaXRsZSA9ICFDQVNFRC5jb250YWlucyhjKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgLy8gQ29udmVydCB0aGluZ3MgYWZ0ZXIgYSBDQVNFRCBjaGFyYWN0ZXIgdG9Mb3dlcjsgdGhpbmdzCisgICAgICAgIC8vIGFmdGVyIGEgbm9uLUNBU0VELCBub24tU0tJUCBjaGFyYWN0ZXIgdG9UaXRsZS4gIFNLSVAKKyAgICAgICAgLy8gY2hhcmFjdGVycyBhcmUgY29waWVkIGRpcmVjdGx5IGFuZCBkbyBub3QgY2hhbmdlIHRoZSBtb2RlLgorCisgICAgICAgIGludCB0ZXh0UG9zID0gb2Zmc2V0cy5zdGFydDsKKyAgICAgICAgaWYgKHRleHRQb3MgPj0gb2Zmc2V0cy5saW1pdCkgcmV0dXJuOworCisgICAgICAgIC8vIGdldCBzdHJpbmcgZm9yIGNvbnRleHQKKyAgICAgICAgLy8gVE9ETzogYWRkIGNvbnZlbmllbmNlIG1ldGhvZCB0byBkbyB0aGlzLCBzaW5jZSB3ZSBkbyBpdCBhbGwgb3ZlcgorICAgICAgICAKKyAgICAgICAgVUNoYXJhY3Rlckl0ZXJhdG9yIG9yaWdpbmFsID0gVUNoYXJhY3Rlckl0ZXJhdG9yLmdldEluc3RhbmNlKHRleHQpOworICAgICAgICAKKyAgICAgICAgLy8gV2FsayB0aHJvdWdoIG9yaWdpbmFsIHN0cmluZworICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIGNhc2UgY2hhbmdlLCBtb2RpZnkgY29ycmVzcG9uZGluZyBwb3NpdGlvbiBpbiByZXBsYWNlYWJsZQorICAgICAgICAKKyAgICAgICAgaW50IGxpbWl0ID0gb2Zmc2V0cy5saW1pdDsKKyAgICAgICAgaW50IGNwOworICAgICAgICBpbnQgb2xkTGVuOworICAgICAgICBpbnQgbmV3TGVuOworICAgICAgICAKKyAgICAgICAgd2hpbGUgKHRleHRQb3MgPCBsaW1pdCkgeworICAgICAgICAJb3JpZ2luYWwuc2V0SW5kZXgodGV4dFBvcyk7CisgICAgICAgICAgICBjcCA9IG9yaWdpbmFsLmN1cnJlbnRDb2RlUG9pbnQoKTsKKyAgICAgICAgICAgIG9sZExlbiA9IFVURjE2LmdldENoYXJDb3VudChjcCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICghU0tJUC5jb250YWlucyhjcCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoZG9UaXRsZSkgeworICAgICAgICAgICAgICAgICAgICBuZXdMZW4gPSBtX2NoYXJwcHR5Xy50b1VwcGVyT3JUaXRsZUNhc2UobG9jLCBjcCwgb3JpZ2luYWwsIGZhbHNlLCBidWZmZXIpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG5ld0xlbiA9IG1fY2hhcnBwdHlfLnRvTG93ZXJDYXNlKGxvYywgY3AsIG9yaWdpbmFsLCBidWZmZXIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkb1RpdGxlID0gIUNBU0VELmNvbnRhaW5zKGNwKTsKKyAgICAgICAgICAgICAgICBpZiAobmV3TGVuID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgdGV4dC5yZXBsYWNlKHRleHRQb3MsIHRleHRQb3MgKyBvbGRMZW4sIGJ1ZmZlciwgMCwgbmV3TGVuKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5ld0xlbiAhPSBvbGRMZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRleHRQb3MgKz0gbmV3TGVuOworICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0cy5saW1pdCArPSBuZXdMZW4gLSBvbGRMZW47CisgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRzLmNvbnRleHRMaW1pdCArPSBuZXdMZW4gLSBvbGRMZW47CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRleHRQb3MgKz0gb2xkTGVuOworICAgICAgICB9CisgICAgICAgIG9mZnNldHMuc3RhcnQgPSBvZmZzZXRzLmxpbWl0OworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIGNoYXIgYnVmZmVyW10gPSBuZXcgY2hhcltVQ2hhcmFjdGVyUHJvcGVydHkuTUFYX0NBU0VfTUFQX1NJWkVdOworICAgIC8qKgorICAgICAqIENoYXJhY3RlciBwcm9wZXJ0eSBkYXRhYmFzZQorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFVDaGFyYWN0ZXJQcm9wZXJ0eSBtX2NoYXJwcHR5XyA9IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyUHJvcGVydHkuZ2V0SW5zdGFuY2UoKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS90ZXh0L1RyYW5zZm9ybVRyYW5zbGl0ZXJhdG9yLmphdmEgYi9zcmMvY29tL2libS9pY3UvdGV4dC9UcmFuc2Zvcm1UcmFuc2xpdGVyYXRvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmUwOWRkMWEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdGV4dC9UcmFuc2Zvcm1UcmFuc2xpdGVyYXRvci5qYXZhCkBAIC0wLDAgKzEsMTMwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L3RleHQvVHJhbnNmb3JtVHJhbnNsaXRlcmF0b3IuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNjoxNiAkIAorICogJFJldmlzaW9uOiAxLjUgJAorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LnRleHQ7CitpbXBvcnQgamF2YS51dGlsLio7CisKK2Fic3RyYWN0IGNsYXNzIFRyYW5zZm9ybVRyYW5zbGl0ZXJhdG9yIHsKKyAgICAvLyBDdXJyZW50bHkgdW51c2VkCit9CisKKy8vLyoqCisvLyAqIEFuIGFic3RyYWN0IGNsYXNzIGZvciB0cmFuc2xpdGVyYXRvcnMgYmFzZWQgb24gYSB0cmFuc2Zvcm0KKy8vICogb3BlcmF0aW9uLiAgVG8gY3JlYXRlIGEgdHJhbnNsaXRlcmF0b3IgdGhhdCBpbXBsZW1lbnRzIGEKKy8vICogdHJhbnNmb3JtYXRpb24sIGNyZWF0ZSBhIHN1YmNsYXNzIG9mIHRoaXMgY2xhc3MgYW5kIGltcGxlbWVudCB0aGUKKy8vICogYWJzdHJhY3QgPGNvZGU+dHJhbnNmb3JtKCk8L2NvZGU+IGFuZCA8Y29kZT5oYXNUcmFuc2Zvcm0oKTwvY29kZT4KKy8vICogbWV0aG9kcy4KKy8vICogQGF1dGhvciBBbGFuIExpdQorLy8gKi8KKy8vYWJzdHJhY3QgY2xhc3MgVHJhbnNmb3JtVHJhbnNsaXRlcmF0b3IgZXh0ZW5kcyBUcmFuc2xpdGVyYXRvciB7CisvLworLy8gICAgLyoqCisvLyAgICAgKiBDb25zdHJ1Y3RzIGEgdHJhbnNsaXRlcmF0b3IuICBGb3IgdXNlIGJ5IHN1YmNsYXNzZXMuCisvLyAgICAgKi8KKy8vICAgIHByb3RlY3RlZCBUcmFuc2Zvcm1UcmFuc2xpdGVyYXRvcihTdHJpbmcgaWQsIFVuaWNvZGVGaWx0ZXIgZikgeworLy8gICAgICAgIHN1cGVyKGlkLCBmKTsKKy8vICAgIH0KKy8vCisvLyAgICAvKioKKy8vICAgICAqIEltcGxlbWVudHMge0BsaW5rIFRyYW5zbGl0ZXJhdG9yI2hhbmRsZVRyYW5zbGl0ZXJhdGV9LgorLy8gICAgICovCisvLyAgICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVUcmFuc2xpdGVyYXRlKFJlcGxhY2VhYmxlIHRleHQsCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uIG9mZnNldHMsIGJvb2xlYW4gaW5jcmVtZW50YWwpIHsKKy8vCisvLyAgICAgICAgaW50IHN0YXJ0OworLy8gICAgICAgIGZvciAoc3RhcnQgPSBvZmZzZXRzLnN0YXJ0OyBzdGFydCA8IG9mZnNldHMubGltaXQ7ICsrc3RhcnQpIHsKKy8vICAgICAgICAgICAgLy8gU2NhbiBmb3IgdGhlIGZpcnN0IGNoYXJhY3RlciB0aGF0IGlzICE9IGl0cyB0cmFuc2Zvcm0uCisvLyAgICAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBub25lLCB3ZSBmYWxsIG91dCB3aXRob3V0IGRvaW5nIGFueXRoaW5nLgorLy8gICAgICAgICAgICBjaGFyIGMgPSB0ZXh0LmNoYXJBdChzdGFydCk7CisvLyAgICAgICAgICAgIGlmIChoYXNUcmFuc2Zvcm0oYykpIHsKKy8vICAgICAgICAgICAgICAgIC8vIFRoZXJlIGlzIGEgdHJhbnNmb3JtaW5nIGNoYXJhY3RlciBhdCBzdGFydC4gIEJyZWFrCisvLyAgICAgICAgICAgICAgICAvLyB1cCB0aGUgcmVtYWluaW5nIHN0cmluZywgZnJvbSBzdGFydCB0bworLy8gICAgICAgICAgICAgICAgLy8gb2Zmc2V0cy5saW1pdCwgaW50byBzZWdtZW50cyBvZiB1bmZpbHRlcmVkIGFuZAorLy8gICAgICAgICAgICAgICAgLy8gZmlsdGVyZWQgY2hhcmFjdGVycy4gIE9ubHkgdHJhbnNmb3JtIHRoZSB1bmZpbHRlcmVkCisvLyAgICAgICAgICAgICAgICAvLyBjaGFyYWN0ZXJzLiAgQXMgYWx3YXlzLCBtaW5pbWl6ZSB0aGUgbnVtYmVyIG9mCisvLyAgICAgICAgICAgICAgICAvLyBjYWxscyB0byBSZXBsYWNlYWJsZS5yZXBsYWNlKCkuCisvLworLy8gICAgICAgICAgICAgICAgaW50IGxlbiA9IG9mZnNldHMubGltaXQgLSBzdGFydDsKKy8vICAgICAgICAgICAgICAgIC8vIGFzc2VydChsZW4gPj0gMSk7CisvLyAgICAgICAgICAgICAgICAKKy8vICAgICAgICAgICAgICAgIGNoYXJbXSBidWYgPSBuZXcgY2hhcltsZW5dOworLy8gICAgICAgICAgICAgICAgdGV4dC5nZXRDaGFycyhzdGFydCwgb2Zmc2V0cy5saW1pdCwgYnVmLCAwKTsKKy8vCisvLyAgICAgICAgICAgICAgICBpbnQgc2VnU3RhcnQgPSAwOworLy8gICAgICAgICAgICAgICAgaW50IHNlZ0xpbWl0OworLy8gICAgICAgICAgICAgICAgVW5pY29kZUZpbHRlciBmaWx0ID0gZ2V0RmlsdGVyKCk7CisvLworLy8gICAgICAgICAgICAgICAgLy8gbGVuRGVsdGEgaXMgdGhlIGFjY3VtdWxhdGVkIGxlbmd0aCBkaWZmZXJlbmNlIGZvcgorLy8gICAgICAgICAgICAgICAgLy8gYWxsIHRyYW5zZm9ybWVkIHNlZ21lbnRzLiAgSXQgaXMgbmV3IGxlbmd0aCAtIG9sZAorLy8gICAgICAgICAgICAgICAgLy8gbGVuZ3RoLgorLy8gICAgICAgICAgICAgICAgaW50IGxlbkRlbHRhID0gMDsKKy8vCisvLyAgICAgICAgICAgICAgICAvLyBTZXQgc2VnU3RhcnQsIHNlZ0xpbWl0IHRvIHRoZSB1bmZpbHRlcmVkIHNlZ21lbnQKKy8vICAgICAgICAgICAgICAgIC8vIHN0YXJ0aW5nIHdpdGggc3RhcnQuICBJZiB0aGUgZmlsdGVyIGlzIG51bGwsIHRoZW4KKy8vICAgICAgICAgICAgICAgIC8vIHNlZ1N0YXJ0L0xpbWl0IHdpbGwgYmUgc2V0IHRvIHRoZSB3aG9sZSBzdHJpbmcsCisvLyAgICAgICAgICAgICAgICAvLyB0aGF0IGlzLCAwL2xlbi4KKy8vICAgICAgICAgICAgICAgIGRvIHsKKy8vICAgICAgICAgICAgICAgICAgICAvLyBTZXQgc2VnTGltaXQgdG8gdGhlIGZpcnN0IGZpbHRlcmVkIGNoYXIgYXQgb3IKKy8vICAgICAgICAgICAgICAgICAgICAvLyBhZnRlciBzZWdTdGFydC4KKy8vICAgICAgICAgICAgICAgICAgICBzZWdMaW1pdCA9IGxlbjsKKy8vICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdCAhPSBudWxsKSB7CisvLyAgICAgICAgICAgICAgICAgICAgICAgIHNlZ0xpbWl0ID0gc2VnU3RhcnQ7CisvLyAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChzZWdMaW1pdCA8IGxlbiAmJiBmaWx0LmNvbnRhaW5zKGJ1ZltzZWdMaW1pdF0pKSB7CisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytzZWdMaW1pdDsKKy8vICAgICAgICAgICAgICAgICAgICAgICAgfQorLy8gICAgICAgICAgICAgICAgICAgIH0KKy8vCisvLyAgICAgICAgICAgICAgICAgICAgLy8gVHJhbnNmb3JtIHRoZSB1bmZpbHRlcmVkIGNoYXJzIGJldHdlZW4gc2VnU3RhcnQKKy8vICAgICAgICAgICAgICAgICAgICAvLyBhbmQgc2VnTGltaXQuCisvLyAgICAgICAgICAgICAgICAgICAgaW50IHNlZ0xlbiA9IHNlZ0xpbWl0IC0gc2VnU3RhcnQ7CisvLyAgICAgICAgICAgICAgICAgICAgaWYgKHNlZ0xlbiAhPSAwKSB7CisvLyAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBuZXdTdHIgPSB0cmFuc2Zvcm0oCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgU3RyaW5nKGJ1Ziwgc2VnU3RhcnQsIHNlZ0xlbikpOworLy8gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LnJlcGxhY2Uoc3RhcnQsIHN0YXJ0ICsgc2VnTGVuLCBuZXdTdHIpOworLy8gICAgICAgICAgICAgICAgICAgICAgICBzdGFydCArPSBuZXdTdHIubGVuZ3RoKCk7CisvLyAgICAgICAgICAgICAgICAgICAgICAgIGxlbkRlbHRhICs9IG5ld1N0ci5sZW5ndGgoKSAtIHNlZ0xlbjsKKy8vICAgICAgICAgICAgICAgICAgICB9CisvLworLy8gICAgICAgICAgICAgICAgICAgIC8vIFNldCBzZWdTdGFydCB0byB0aGUgZmlyc3QgdW5maWx0ZXJlZCBjaGFyIGF0IG9yCisvLyAgICAgICAgICAgICAgICAgICAgLy8gYWZ0ZXIgc2VnTGltaXQuCisvLyAgICAgICAgICAgICAgICAgICAgc2VnU3RhcnQgPSBzZWdMaW1pdDsKKy8vICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdCAhPSBudWxsKSB7CisvLyAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChzZWdTdGFydCA8IGxlbiAmJiAhZmlsdC5jb250YWlucyhidWZbc2VnU3RhcnRdKSkgeworLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgKytzZWdTdGFydDsKKy8vICAgICAgICAgICAgICAgICAgICAgICAgfQorLy8gICAgICAgICAgICAgICAgICAgIH0KKy8vICAgICAgICAgICAgICAgICAgICBzdGFydCArPSBzZWdTdGFydCAtIHNlZ0xpbWl0OworLy8KKy8vICAgICAgICAgICAgICAgIH0gd2hpbGUgKHNlZ1N0YXJ0IDwgbGVuKTsKKy8vICAgICAgICAgICAgICAgIAorLy8gICAgICAgICAgICAgICAgb2Zmc2V0cy5saW1pdCArPSBsZW5EZWx0YTsKKy8vICAgICAgICAgICAgICAgIG9mZnNldHMuY29udGV4dExpbWl0ICs9IGxlbkRlbHRhOworLy8gICAgICAgICAgICAgICAgb2Zmc2V0cy5zdGFydCA9IG9mZnNldHMubGltaXQ7CisvLyAgICAgICAgICAgICAgICByZXR1cm47CisvLyAgICAgICAgICAgIH0KKy8vICAgICAgICB9CisvLyAgICAgICAgLy8gYXNzZXJ0KHN0YXJ0ID09IG9mZnNldHMubGltaXQpOworLy8gICAgICAgIG9mZnNldHMuc3RhcnQgPSBzdGFydDsKKy8vICAgIH0KKy8vCisvLyAgICAvKioKKy8vICAgICAqIFN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQgdGhpcyBtZXRob2QgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYQorLy8gICAgICogZ2l2ZW4gY2hhcmFjdGVyIGhhcyBhIHRyYW5zZm9ybSB0aGF0IGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCisvLyAgICAgKiBUaGlzIGlzIGFwcHJveGltYXRlbHkgZXF1aXZhbGVudCB0byA8Y29kZT5jICE9CisvLyAgICAgKiB0cmFuc2Zvcm0oU3RyaW5nLnZhbHVlT2YoYykpPC9jb2RlPiwgd2hlcmUKKy8vICAgICAqIDxjb2RlPlN0cmluZy52YWx1ZU9mKGMpPC9jb2RlPiByZXR1cm5zIGEgU3RyaW5nIGNvbnRhaW5pbmcgdGhlCisvLyAgICAgKiBzaW5nbGUgY2hhcmFjdGVyIChub3QgaW50ZWdlcikgPGNvZGU+YzwvY29kZT4uICBTdWJjbGFzc2VzIHRoYXQKKy8vICAgICAqIHRyYW5zZm9ybSBhbGwgdGhlaXIgaW5wdXQgY2FuIHNpbXBseSByZXR1cm4gPGNvZGU+dHJ1ZTwvY29kZT4uCisvLyAgICAgKi8KKy8vICAgIHByb3RlY3RlZCBhYnN0cmFjdCBib29sZWFuIGhhc1RyYW5zZm9ybShpbnQgYyk7CisvLworLy8gICAgLyoqCisvLyAgICAgKiBTdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IHRoaXMgbWV0aG9kIHRvIHRyYW5zZm9ybSBhIHN0cmluZy4KKy8vICAgICAqLworLy8gICAgcHJvdGVjdGVkIGFic3RyYWN0IFN0cmluZyB0cmFuc2Zvcm0oU3RyaW5nIHMpOworLy99CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvdGV4dC9UcmFuc2xpdGVyYXRpb25SdWxlLmphdmEgYi9zcmMvY29tL2libS9pY3UvdGV4dC9UcmFuc2xpdGVyYXRpb25SdWxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uODk4ZGI5YgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L1RyYW5zbGl0ZXJhdGlvblJ1bGUuamF2YQpAQCAtMCwwICsxLDczMCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L3RleHQvVHJhbnNsaXRlcmF0aW9uUnVsZS5qYXZhLHYgJAorICogJERhdGU6IDIwMDIvMDYvMjggMTk6MTU6NTMgJAorICogJFJldmlzaW9uOiAxLjQ3ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS50ZXh0OworCitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5VdGlsaXR5OworCisvKioKKyAqIEEgdHJhbnNsaXRlcmF0aW9uIHJ1bGUgdXNlZCBieQorICogPGNvZGU+UnVsZUJhc2VkVHJhbnNsaXRlcmF0b3I8L2NvZGU+LgorICogPGNvZGU+VHJhbnNsaXRlcmF0aW9uUnVsZTwvY29kZT4gaXMgYW4gaW1tdXRhYmxlIG9iamVjdC4KKyAqCisgKiA8cD5BIHJ1bGUgY29uc2lzdHMgb2YgYW4gaW5wdXQgcGF0dGVybiBhbmQgYW4gb3V0cHV0IHN0cmluZy4gIFdoZW4KKyAqIHRoZSBpbnB1dCBwYXR0ZXJuIGlzIG1hdGNoZWQsIHRoZSBvdXRwdXQgc3RyaW5nIGlzIGVtaXR0ZWQuICBUaGUKKyAqIGlucHV0IHBhdHRlcm4gY29uc2lzdHMgb2YgemVybyBvciBtb3JlIGNoYXJhY3RlcnMgd2hpY2ggYXJlIG1hdGNoZWQKKyAqIGV4YWN0bHkgKHRoZSBrZXkpIGFuZCBvcHRpb25hbCBjb250ZXh0LiAgQ29udGV4dCBtdXN0IG1hdGNoIGlmIGl0CisgKiBpcyBzcGVjaWZpZWQuICBDb250ZXh0IG1heSBiZSBzcGVjaWZpZWQgYmVmb3JlIHRoZSBrZXksIGFmdGVyIHRoZQorICoga2V5LCBvciBib3RoLiAgVGhlIGtleSwgcHJlY2VkaW5nIGNvbnRleHQsIGFuZCBmb2xsb3dpbmcgY29udGV4dAorICogbWF5IGNvbnRhaW4gdmFyaWFibGVzLiAgVmFyaWFibGVzIHJlcHJlc2VudCBhIHNldCBvZiBVbmljb2RlCisgKiBjaGFyYWN0ZXJzLCBzdWNoIGFzIHRoZSBsZXR0ZXJzIDxpPmE8L2k+IHRocm91Z2ggPGk+ejwvaT4uCisgKiBWYXJpYWJsZXMgYXJlIGRldGVjdGVkIGJ5IGxvb2tpbmcgdXAgZWFjaCBjaGFyYWN0ZXIgaW4gYSBzdXBwbGllZAorICogdmFyaWFibGUgbGlzdCB0byBzZWUgaWYgaXQgaGFzIGJlZW4gc28gZGVmaW5lZC4KKyAqCisgKiA8cD5BIHJ1bGUgbWF5IGNvbnRhaW4gc2VnbWVudHMgaW4gaXRzIGlucHV0IHN0cmluZyBhbmQgc2VnbWVudAorICogcmVmZXJlbmNlcyBpbiBpdHMgb3V0cHV0IHN0cmluZy4gIEEgc2VnbWVudCBpcyBhIHN1YnN0cmluZyBvZiB0aGUKKyAqIGlucHV0IHBhdHRlcm4sIGluZGljYXRlZCBieSBhbiBvZmZzZXQgYW5kIGxpbWl0LiAgVGhlIHNlZ21lbnQgbWF5CisgKiBiZSBpbiB0aGUgcHJlY2VkaW5nIG9yIGZvbGxvd2luZyBjb250ZXh0LiAgSXQgbWF5IG5vdCBzcGFuIGEKKyAqIGNvbnRleHQgYm91bmRhcnkuICBBIHNlZ21lbnQgcmVmZXJlbmNlIGlzIGEgc3BlY2lhbCBjaGFyYWN0ZXIgaW4KKyAqIHRoZSBvdXRwdXQgc3RyaW5nIHRoYXQgY2F1c2VzIGEgc2VnbWVudCBvZiB0aGUgaW5wdXQgc3RyaW5nIChub3QKKyAqIHRoZSBpbnB1dCBwYXR0ZXJuKSB0byBiZSBjb3BpZWQgdG8gdGhlIG91dHB1dCBzdHJpbmcuICBUaGUgcmFuZ2Ugb2YKKyAqIHNwZWNpYWwgY2hhcmFjdGVycyB0aGF0IHJlcHJlc2VudCBzZWdtZW50IHJlZmVyZW5jZXMgaXMgZGVmaW5lZCBieQorICogUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3IuRGF0YS4KKyAqCisgKiA8cD5FeGFtcGxlOiBUaGUgcnVsZSAiKFthLXpdKSAuIChbMC05XSkgPiAkMiAuICQxIiB3aWxsIGNoYW5nZSB0aGUgaW5wdXQKKyAqIHN0cmluZyAiYWJjLjEyMyIgdG8gImFiMS5jMjMiLgorICoKKyAqIDxwPkNvcHlyaWdodCAmY29weTsgSUJNIENvcnBvcmF0aW9uIDE5OTkuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIEBhdXRob3IgQWxhbiBMaXUKKyAqIEB2ZXJzaW9uICRSQ1NmaWxlOiBUcmFuc2xpdGVyYXRpb25SdWxlLmphdmEsdiAkICRSZXZpc2lvbjogMS40NyAkICREYXRlOiAyMDAyLzA2LzI4IDE5OjE1OjUzICQKKyAqLworY2xhc3MgVHJhbnNsaXRlcmF0aW9uUnVsZSB7CisKKyAgICAvLyBUT0RPIEVsaW1pbmF0ZSB0aGUgcGF0dGVybiBhbmQga2V5TGVuZ3RoIGRhdGEgbWVtYmVycy4gIFRoZXkKKyAgICAvLyBhcmUgdXNlZCBvbmx5IGJ5IG1hc2tzKCkgYW5kIGdldEluZGV4VmFsdWUoKSB3aGljaCBhcmUgY2FsbGVkCisgICAgLy8gb25seSBkdXJpbmcgYnVpbGQgdGltZSwgbm90IGR1cmluZyBydW4tdGltZS4gIFBlcmhhcHMgdGhlc2UKKyAgICAvLyBtZXRob2RzIGFuZCBwYXR0ZXJuL2tleUxlbmd0aCBjYW4gYmUgaXNvbGF0ZWQgaW50byBhIHNlcGFyYXRlCisgICAgLy8gb2JqZWN0LgorCisgICAgLyoqCisgICAgICogVGhlIG1hdGNoIHRoYXQgbXVzdCBvY2N1ciBiZWZvcmUgdGhlIGtleSwgb3IgbnVsbCBpZiB0aGVyZSBpcyBubworICAgICAqIHByZWNlZGluZyBjb250ZXh0LgorICAgICAqLworICAgIHByaXZhdGUgU3RyaW5nTWF0Y2hlciBhbnRlQ29udGV4dDsKKworICAgIC8qKgorICAgICAqIFRoZSBtYXRjaGVyIG9iamVjdCBmb3IgdGhlIGtleS4gIElmIG51bGwsIHRoZW4gdGhlIGtleSBpcyBlbXB0eS4KKyAgICAgKi8KKyAgICBwcml2YXRlIFN0cmluZ01hdGNoZXIga2V5OworCisgICAgLyoqCisgICAgICogVGhlIG1hdGNoIHRoYXQgbXVzdCBvY2N1ciBhZnRlciB0aGUga2V5LCBvciBudWxsIGlmIHRoZXJlIGlzIG5vCisgICAgICogZm9sbG93aW5nIGNvbnRleHQuCisgICAgICovCisgICAgcHJpdmF0ZSBTdHJpbmdNYXRjaGVyIHBvc3RDb250ZXh0OworCisgICAgLyoqCisgICAgICogVGhlIG9iamVjdCB0aGF0IHBlcmZvcm1zIHRoZSByZXBsYWNlbWVudCBpZiB0aGUga2V5LAorICAgICAqIGFudGVDb250ZXh0LCBhbmQgcG9zdENvbnRleHQgYXJlIG1hdGNoZWQuICBOZXZlciBudWxsLgorICAgICAqLworICAgIHByaXZhdGUgVW5pY29kZVJlcGxhY2VyIG91dHB1dDsKKworICAgIC8qKgorICAgICAqIFRoZSBzdHJpbmcgdGhhdCBtdXN0IGJlIG1hdGNoZWQsIGNvbnNpc3Rpbmcgb2YgdGhlIGFudGVDb250ZXh0LCBrZXksCisgICAgICogYW5kIHBvc3RDb250ZXh0LCBjb25jYXRlbmF0ZWQgdG9nZXRoZXIsIGluIHRoYXQgb3JkZXIuICBTb21lIGNvbXBvbmVudHMKKyAgICAgKiBtYXkgYmUgZW1wdHkgKHplcm8gbGVuZ3RoKS4KKyAgICAgKiBAc2VlIGFudGVDb250ZXh0TGVuZ3RoCisgICAgICogQHNlZSBrZXlMZW5ndGgKKyAgICAgKi8KKyAgICBwcml2YXRlIFN0cmluZyBwYXR0ZXJuOworCisgICAgLyoqCisgICAgICogQW4gYXJyYXkgb2YgbWF0Y2hlciBvYmplY3RzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGlucHV0IHBhdHRlcm4KKyAgICAgKiBzZWdtZW50cy4gIElmIHRoZXJlIGFyZSBubyBzZWdtZW50cyB0aGlzIGlzIG51bGwuICBOLkIuIFRoaXMgaXMKKyAgICAgKiBhIFVuaWNvZGVNYXRjaGVyIGZvciBnZW5lcmFsaXR5LCBidXQgaW4gcHJhY3RpY2UgaXQgaXMgYWx3YXlzIGEKKyAgICAgKiBTdHJpbmdNYXRjaGVyLiAgSW4gdGhlIGZ1dHVyZSB3ZSBtYXkgZ2VuZXJhbGl6ZSB0aGlzLCBidXQgZm9yCisgICAgICogbm93IHdlIHNvbWV0aW1lcyBjYXN0IGRvd24gdG8gU3RyaW5nTWF0Y2hlci4KKyAgICAgKi8KKyAgICBVbmljb2RlTWF0Y2hlcltdIHNlZ21lbnRzOworCisgICAgLyoqCisgICAgICogVGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIHRoYXQgbXVzdCBtYXRjaCBiZWZvcmUgdGhlIGtleS4gIElmCisgICAgICogemVybywgdGhlbiB0aGVyZSBpcyBubyBtYXRjaGluZyByZXF1aXJlbWVudCBiZWZvcmUgdGhlIGtleS4KKyAgICAgKiBTdWJzdHJpbmcgWzAsYW50ZUNvbnRleHRMZW5ndGgpIG9mIHBhdHRlcm4gaXMgdGhlIGFudGVDb250ZXh0LgorICAgICAqLworICAgIHByaXZhdGUgaW50IGFudGVDb250ZXh0TGVuZ3RoOworCisgICAgLyoqCisgICAgICogVGhlIGxlbmd0aCBvZiB0aGUga2V5LiAgU3Vic3RyaW5nIFthbnRlQ29udGV4dExlbmd0aCwKKyAgICAgKiBhbnRlQ29udGV4dExlbmd0aCArIGtleUxlbmd0aCkgaXMgdGhlIGtleS4KKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBrZXlMZW5ndGg7CisKKyAgICAvKioKKyAgICAgKiBNaXNjZWxsYW5lb3VzIGF0dHJpYnV0ZXMuCisgICAgICovCisgICAgYnl0ZSBmbGFnczsKKworICAgIC8qKgorICAgICAqIEZsYWcgYXR0cmlidXRlcy4KKyAgICAgKi8KKyAgICBzdGF0aWMgZmluYWwgaW50IEFOQ0hPUl9TVEFSVCA9IDE7CisgICAgc3RhdGljIGZpbmFsIGludCBBTkNIT1JfRU5EICAgPSAyOworCisgICAgLyoqCisgICAgICogQW4gYWxpYXMgcG9pbnRlciB0byB0aGUgZGF0YSBmb3IgdGhpcyBydWxlLiAgVGhlIGRhdGEgcHJvdmlkZXMKKyAgICAgKiBsb29rdXAgc2VydmljZXMgZm9yIG1hdGNoZXJzIGFuZCBzZWdtZW50cy4KKyAgICAgKi8KKyAgICBwcml2YXRlIGZpbmFsIFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yLkRhdGEgZGF0YTsKKworICAgIC8qKgorICAgICAqIFRoZSBjaGFyYWN0ZXIgYXQgaW5kZXggaSwgd2hlcmUgaSA8IGNvbnRleHRTdGFydCB8fCBpID49IGNvbnRleHRMaW1pdCwKKyAgICAgKiBpcyBFVEhFUi4gIFRoaXMgYWxsb3dzIGV4cGxpY2l0IG1hdGNoaW5nIGJ5IHJ1bGVzIGFuZCBVbmljb2RlU2V0cworICAgICAqIG9mIHRleHQgb3V0c2lkZSB0aGUgY29udGV4dC4gIEluIHRyYWRpdGlvbmFsIHRlcm1zLCB0aGlzIGFsbG93cyBhbmNob3JpbmcKKyAgICAgKiBhdCB0aGUgc3RhcnQgYW5kL29yIGVuZC4KKyAgICAgKi8KKyAgICBzdGF0aWMgZmluYWwgY2hhciBFVEhFUiA9ICdcdUZGRkYnOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICJcdTAwQTkgSUJNIENvcnBvcmF0aW9uIDE5OTktMjAwMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4iOworCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGEgbmV3IHJ1bGUgd2l0aCB0aGUgZ2l2ZW4gaW5wdXQsIG91dHB1dCB0ZXh0LCBhbmQgb3RoZXIKKyAgICAgKiBhdHRyaWJ1dGVzLiAgQSBjdXJzb3IgcG9zaXRpb24gbWF5IGJlIHNwZWNpZmllZCBmb3IgdGhlIG91dHB1dCB0ZXh0LgorICAgICAqIEBwYXJhbSBpbnB1dCBpbnB1dCBzdHJpbmcsIGluY2x1ZGluZyBrZXkgYW5kIG9wdGlvbmFsIGFudGUgYW5kCisgICAgICogcG9zdCBjb250ZXh0CisgICAgICogQHBhcmFtIGFudGVDb250ZXh0UG9zIG9mZnNldCBpbnRvIGlucHV0IHRvIGVuZCBvZiBhbnRlIGNvbnRleHQsIG9yIC0xIGlmCisgICAgICogbm9uZS4gIE11c3QgYmUgPD0gaW5wdXQubGVuZ3RoKCkgaWYgbm90IC0xLgorICAgICAqIEBwYXJhbSBwb3N0Q29udGV4dFBvcyBvZmZzZXQgaW50byBpbnB1dCB0byBzdGFydCBvZiBwb3N0IGNvbnRleHQsIG9yIC0xCisgICAgICogaWYgbm9uZS4gIE11c3QgYmUgPD0gaW5wdXQubGVuZ3RoKCkgaWYgbm90IC0xLCBhbmQgbXVzdCBiZSA+PQorICAgICAqIGFudGVDb250ZXh0UG9zLgorICAgICAqIEBwYXJhbSBvdXRwdXQgb3V0cHV0IHN0cmluZworICAgICAqIEBwYXJhbSBjdXJzb3JQb3Mgb2Zmc2V0IGludG8gb3V0cHV0IGF0IHdoaWNoIGN1cnNvciBpcyBsb2NhdGVkLCBvciAtMSBpZgorICAgICAqIG5vbmUuICBJZiBsZXNzIHRoYW4gemVybywgdGhlbiB0aGUgY3Vyc29yIGlzIHBsYWNlZCBhZnRlciB0aGUKKyAgICAgKiA8Y29kZT5vdXRwdXQ8L2NvZGU+OyB0aGF0IGlzLCAtMSBpcyBlcXVpdmFsZW50IHRvCisgICAgICogPGNvZGU+b3V0cHV0Lmxlbmd0aCgpPC9jb2RlPi4gIElmIGdyZWF0ZXIgdGhhbgorICAgICAqIDxjb2RlPm91dHB1dC5sZW5ndGgoKTwvY29kZT4gdGhlbiBhbiBleGNlcHRpb24gaXMgdGhyb3duLgorICAgICAqIEBwYXJhbSBjdXJzb3JPZmZzZXQgYW4gb2Zmc2V0IHRvIGJlIGFkZGVkIHRvIGN1cnNvclBvcyB0byBwb3NpdGlvbiB0aGUKKyAgICAgKiBjdXJzb3IgZWl0aGVyIGluIHRoZSBhbnRlIGNvbnRleHQsIGlmIDwgMCwgb3IgaW4gdGhlIHBvc3QgY29udGV4dCwgaWYgPgorICAgICAqIDAuICBGb3IgZXhhbXBsZSwgdGhlIHJ1bGUgImFiY3tkZWZ9ID4gfCBAQEAgeHl6OyIgY2hhbmdlcyAiZGVmIiB0bworICAgICAqICJ4eXoiIGFuZCBtb3ZlcyB0aGUgY3Vyc29yIHRvIGJlZm9yZSAiYSIuICBJdCB3b3VsZCBoYXZlIGEgY3Vyc29yT2Zmc2V0CisgICAgICogb2YgLTMuCisgICAgICogQHBhcmFtIHNlZ3MgYXJyYXkgb2YgVW5pY29kZU1hdGNoZXIgY29ycmVzcG9uZGluZyB0byBpbnB1dCBwYXR0ZXJuCisgICAgICogc2VnbWVudHMsIG9yIG51bGwgaWYgdGhlcmUgYXJlIG5vbmUKKyAgICAgKiBAcGFyYW0gYW5jaG9yU3RhcnQgdHJ1ZSBpZiB0aGUgdGhlIHJ1bGUgaXMgYW5jaG9yZWQgb24gdGhlIGxlZnQgdG8KKyAgICAgKiB0aGUgY29udGV4dCBzdGFydAorICAgICAqIEBwYXJhbSBhbmNob3JFbmQgdHJ1ZSBpZiB0aGUgcnVsZSBpcyBhbmNob3JlZCBvbiB0aGUgcmlnaHQgdG8gdGhlCisgICAgICogY29udGV4dCBsaW1pdAorICAgICAqLworICAgIHB1YmxpYyBUcmFuc2xpdGVyYXRpb25SdWxlKFN0cmluZyBpbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYW50ZUNvbnRleHRQb3MsIGludCBwb3N0Q29udGV4dFBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjdXJzb3JQb3MsIGludCBjdXJzb3JPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pY29kZU1hdGNoZXJbXSBzZWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gYW5jaG9yU3RhcnQsIGJvb2xlYW4gYW5jaG9yRW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yLkRhdGEgdGhlRGF0YSkgeworICAgICAgICBkYXRhID0gdGhlRGF0YTsKKworICAgICAgICAvLyBEbyByYW5nZSBjaGVja3Mgb25seSB3aGVuIHdhcnJhbnRlZCB0byBzYXZlIHRpbWUKKyAgICAgICAgaWYgKGFudGVDb250ZXh0UG9zIDwgMCkgeworICAgICAgICAgICAgYW50ZUNvbnRleHRMZW5ndGggPSAwOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGFudGVDb250ZXh0UG9zID4gaW5wdXQubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIGFudGUgY29udGV4dCIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYW50ZUNvbnRleHRMZW5ndGggPSBhbnRlQ29udGV4dFBvczsKKyAgICAgICAgfQorICAgICAgICBpZiAocG9zdENvbnRleHRQb3MgPCAwKSB7CisgICAgICAgICAgICBrZXlMZW5ndGggPSBpbnB1dC5sZW5ndGgoKSAtIGFudGVDb250ZXh0TGVuZ3RoOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKHBvc3RDb250ZXh0UG9zIDwgYW50ZUNvbnRleHRMZW5ndGggfHwKKyAgICAgICAgICAgICAgICBwb3N0Q29udGV4dFBvcyA+IGlucHV0Lmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBwb3N0IGNvbnRleHQiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGtleUxlbmd0aCA9IHBvc3RDb250ZXh0UG9zIC0gYW50ZUNvbnRleHRMZW5ndGg7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGN1cnNvclBvcyA8IDApIHsKKyAgICAgICAgICAgIGN1cnNvclBvcyA9IG91dHB1dC5sZW5ndGgoKTsKKyAgICAgICAgfSBlbHNlIGlmIChjdXJzb3JQb3MgPiBvdXRwdXQubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgY3Vyc29yIHBvc2l0aW9uIik7CisgICAgICAgIH0KKworICAgICAgICAvLyBXZSBkb24ndCB2YWxpZGF0ZSB0aGUgc2VnbWVudHMgYXJyYXkuICBUaGUgY2FsbGVyIG11c3QKKyAgICAgICAgLy8gZ3VhcmFudGVlIHRoYXQgdGhlIHNlZ21lbnRzIGFyZSB3ZWxsLWZvcm1lZCAodGhhdCBpcywgdGhhdAorICAgICAgICAvLyBhbGwgJG4gcmVmZXJlbmNlcyBpbiB0aGUgb3V0cHV0IHJlZmVyIHRvIGluZGljZXMgb2YgdGhpcworICAgICAgICAvLyBhcnJheSwgYW5kIHRoYXQgbm8gYXJyYXkgZWxlbWVudHMgYXJlIG51bGwpLgorICAgICAgICB0aGlzLnNlZ21lbnRzID0gc2VnczsKKworICAgICAgICBwYXR0ZXJuID0gaW5wdXQ7CisgICAgICAgIGZsYWdzID0gMDsKKyAgICAgICAgaWYgKGFuY2hvclN0YXJ0KSB7CisgICAgICAgICAgICBmbGFncyB8PSBBTkNIT1JfU1RBUlQ7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGFuY2hvckVuZCkgeworICAgICAgICAgICAgZmxhZ3MgfD0gQU5DSE9SX0VORDsKKyAgICAgICAgfQorCisgICAgICAgIGFudGVDb250ZXh0ID0gbnVsbDsKKyAgICAgICAgaWYgKGFudGVDb250ZXh0TGVuZ3RoID4gMCkgeworICAgICAgICAgICAgYW50ZUNvbnRleHQgPSBuZXcgU3RyaW5nTWF0Y2hlcihwYXR0ZXJuLnN1YnN0cmluZygwLCBhbnRlQ29udGV4dExlbmd0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIGRhdGEpOworICAgICAgICB9CisKKyAgICAgICAga2V5ID0gbnVsbDsKKyAgICAgICAgaWYgKGtleUxlbmd0aCA+IDApIHsKKyAgICAgICAgICAgIGtleSA9IG5ldyBTdHJpbmdNYXRjaGVyKHBhdHRlcm4uc3Vic3RyaW5nKGFudGVDb250ZXh0TGVuZ3RoLCBhbnRlQ29udGV4dExlbmd0aCArIGtleUxlbmd0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBkYXRhKTsKKyAgICAgICAgfQorCisgICAgICAgIGludCBwb3N0Q29udGV4dExlbmd0aCA9IHBhdHRlcm4ubGVuZ3RoKCkgLSBrZXlMZW5ndGggLSBhbnRlQ29udGV4dExlbmd0aDsKKyAgICAgICAgcG9zdENvbnRleHQgPSBudWxsOworICAgICAgICBpZiAocG9zdENvbnRleHRMZW5ndGggPiAwKSB7CisgICAgICAgICAgICBwb3N0Q29udGV4dCA9IG5ldyBTdHJpbmdNYXRjaGVyKHBhdHRlcm4uc3Vic3RyaW5nKGFudGVDb250ZXh0TGVuZ3RoICsga2V5TGVuZ3RoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgZGF0YSk7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLm91dHB1dCA9IG5ldyBTdHJpbmdSZXBsYWNlcihvdXRwdXQsIGN1cnNvclBvcyArIGN1cnNvck9mZnNldCwgZGF0YSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBwcmVjZWRpbmcgY29udGV4dCBsZW5ndGguICBUaGlzIG1ldGhvZCBpcyBuZWVkZWQgdG8KKyAgICAgKiBzdXBwb3J0IHRoZSA8Y29kZT5UcmFuc2xpdGVyYXRvcjwvY29kZT4gbWV0aG9kCisgICAgICogPGNvZGU+Z2V0TWF4aW11bUNvbnRleHRMZW5ndGgoKTwvY29kZT4uCisgICAgICovCisgICAgcHVibGljIGludCBnZXRBbnRlQ29udGV4dExlbmd0aCgpIHsKKyAgICAgICAgcmV0dXJuIGFudGVDb250ZXh0TGVuZ3RoICsgKCgoZmxhZ3MgJiBBTkNIT1JfU1RBUlQpICE9IDApID8gMSA6IDApOworICAgIH0KKworICAgIC8qKgorICAgICAqIEludGVybmFsIG1ldGhvZC4gIFJldHVybnMgOC1iaXQgaW5kZXggdmFsdWUgZm9yIHRoaXMgcnVsZS4KKyAgICAgKiBUaGlzIGlzIHRoZSBsb3cgYnl0ZSBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBrZXksCisgICAgICogdW5sZXNzIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIGtleSBpcyBhIHNldC4gIElmIGl0J3MgYQorICAgICAqIHNldCwgb3Igb3RoZXJ3aXNlIGNhbiBtYXRjaCBtdWx0aXBsZSBrZXlzLCB0aGUgaW5kZXggdmFsdWUgaXMgLTEuCisgICAgICovCisgICAgZmluYWwgaW50IGdldEluZGV4VmFsdWUoKSB7CisgICAgICAgIGlmIChhbnRlQ29udGV4dExlbmd0aCA9PSBwYXR0ZXJuLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAvLyBBIHBhdHRlcm4gd2l0aCBqdXN0IGFudGUgY29udGV4dCB7c3VjaCBhcyBmb28pPmJhcn0gY2FuCisgICAgICAgICAgICAvLyBtYXRjaCBhbnkga2V5LgorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGludCBjID0gVVRGMTYuY2hhckF0KHBhdHRlcm4sIGFudGVDb250ZXh0TGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIGRhdGEubG9va3VwTWF0Y2hlcihjKSA9PSBudWxsID8gKGMgJiAweEZGKSA6IC0xOworICAgIH0KKworICAgIC8qKgorICAgICAqIEludGVybmFsIG1ldGhvZC4gIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHJ1bGUgbWF0Y2hlcyB0aGUgZ2l2ZW4KKyAgICAgKiBpbmRleCB2YWx1ZS4gIFRoZSBpbmRleCB2YWx1ZSBpcyBhbiA4LWJpdCBpbnRlZ2VyLCAwLi4yNTUsCisgICAgICogcmVwcmVzZW50aW5nIHRoZSBsb3cgYnl0ZSBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBrZXkuCisgICAgICogSXQgbWF0Y2hlcyB0aGlzIHJ1bGUgaWYgaXQgbWF0Y2hlcyB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZQorICAgICAqIGtleSwgb3IgaWYgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUga2V5IGlzIGEgc2V0LCBhbmQgdGhlIHNldAorICAgICAqIGNvbnRhaW5zIGFueSBjaGFyYWN0ZXIgd2l0aCBhIGxvdyBieXRlIGVxdWFsIHRvIHRoZSBpbmRleAorICAgICAqIHZhbHVlLiAgSWYgdGhlIHJ1bGUgY29udGFpbnMgb25seSBhbnRlIGNvbnRleHQsIGFzIGluIGZvbyk+YmFyLAorICAgICAqIHRoZW4gaXQgd2lsbCBtYXRjaCBhbnkga2V5LgorICAgICAqLworICAgIGZpbmFsIGJvb2xlYW4gbWF0Y2hlc0luZGV4VmFsdWUoaW50IHYpIHsKKyAgICAgICAgLy8gRGVsZWdhdGUgdG8gdGhlIGtleSwgb3IgaWYgdGhlcmUgaXMgbm9uZSwgdG8gdGhlIHBvc3RDb250ZXh0LgorICAgICAgICAvLyBJZiB0aGVyZSBpcyBuZWl0aGVyIHRoZW4gd2UgbWF0Y2ggYW55IGtleTsgcmV0dXJuIHRydWUuCisgICAgICAgIFVuaWNvZGVNYXRjaGVyIG0gPSAoa2V5ICE9IG51bGwpID8ga2V5IDogcG9zdENvbnRleHQ7CisgICAgICAgIHJldHVybiAobSAhPSBudWxsKSA/IG0ubWF0Y2hlc0luZGV4VmFsdWUodikgOiB0cnVlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0cnVlIGlmIHRoaXMgcnVsZSBtYXNrcyBhbm90aGVyIHJ1bGUuICBJZiByMSBtYXNrcyByMiB0aGVuCisgICAgICogcjEgbWF0Y2hlcyBhbnkgaW5wdXQgc3RyaW5nIHRoYXQgcjIgbWF0Y2hlcy4gIElmIHIxIG1hc2tzIHIyIGFuZCByMiBtYXNrcworICAgICAqIHIxIHRoZW4gcjEgPT0gcjIuICBFeGFtcGxlczogImE+eCIgbWFza3MgImFiPnkiLiAgImE+eCIgbWFza3MgImFbYl0+eSIuCisgICAgICogIltjXWE+eCIgbWFza3MgIltkY11hPnkiLgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIG1hc2tzKFRyYW5zbGl0ZXJhdGlvblJ1bGUgcjIpIHsKKyAgICAgICAgLyogUnVsZSByMSBtYXNrcyBydWxlIHIyIGlmIHRoZSBzdHJpbmcgZm9ybWVkIG9mIHRoZQorICAgICAgICAgKiBhbnRlY29udGV4dCwga2V5LCBhbmQgcG9zdGNvbnRleHQgb3ZlcmxhcHMgaW4gdGhlIGZvbGxvd2luZworICAgICAgICAgKiB3YXk6CisgICAgICAgICAqCisgICAgICAgICAqIHIxOiAgICAgIGFha2trcHBwcAorICAgICAgICAgKiByMjogICAgIGFhYWtra2trcHBwcAorICAgICAgICAgKiAgICAgICAgICAgIF4KKyAgICAgICAgICoKKyAgICAgICAgICogVGhlIHN0cmluZ3MgbXVzdCBiZSBhbGlnbmVkIGF0IHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlCisgICAgICAgICAqIGtleS4gIFRoZSBsZW5ndGggb2YgcjEgdG8gdGhlIGxlZnQgb2YgdGhlIGFsaWdubWVudCBwb2ludAorICAgICAgICAgKiBtdXN0IGJlIDw9IHRoZSBsZW5ndGggb2YgcjIgdG8gdGhlIGxlZnQ7IGRpdHRvIGZvciB0aGUKKyAgICAgICAgICogcmlnaHQuICBUaGUgY2hhcmFjdGVycyBvZiByMSBtdXN0IGVxdWFsIChvciBiZSBhIHN1cGVyc2V0CisgICAgICAgICAqIG9mKSB0aGUgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXJzIG9mIHIyLiAgVGhlIHN1cGVyc2V0CisgICAgICAgICAqIG9wZXJhdGlvbiBzaG91bGQgYmUgcGVyZm9ybWVkIHRvIGNoZWNrIGZvciBVbmljb2RlU2V0CisgICAgICAgICAqIG1hc2tpbmcuCisgICAgICAgICAqCisgICAgICAgICAqIEFuY2hvcnM6ICBUd28gcGF0dGVybnMgdGhhdCBkaWZmZXIgb25seSBpbiBhbmNob3JzIG9ubHkKKyAgICAgICAgICogbWFzayBvbmUgYW5vdGhlciBpZiB0aGV5IGFyZSBleGFjdGx5IGVxdWFsLCBhbmQgcjIgaGFzCisgICAgICAgICAqIGFsbCB0aGUgYW5jaG9ycyByMSBoYXMgKG9wdGlvbmFsbHksIHBsdXMgc29tZSkuICBIZXJlIFkKKyAgICAgICAgICogbWVhbnMgdGhlIHJvdyBtYXNrcyB0aGUgY29sdW1uLCBOIG1lYW5zIGl0IGRvZXNuJ3QuCisgICAgICAgICAqCisgICAgICAgICAqICAgICAgICAgYWIgICBeYWIgICAgYWIkICBeYWIkCisgICAgICAgICAqICAgYWIgICAgWSAgICAgWSAgICAgWSAgICAgWQorICAgICAgICAgKiAgXmFiICAgIE4gICAgIFkgICAgIE4gICAgIFkKKyAgICAgICAgICogICBhYiQgICBOICAgICBOICAgICBZICAgICBZCisgICAgICAgICAqICBeYWIkICAgTiAgICAgTiAgICAgTiAgICAgWQorICAgICAgICAgKgorICAgICAgICAgKiBQb3N0IGNvbnRleHQ6IHthfWIgbWFza3MgYWIsIGJ1dCBub3QgdmljZSB2ZXJzYSwgc2luY2Uge2F9YgorICAgICAgICAgKiBtYXRjaGVzIGV2ZXJ5dGhpbmcgYWIgbWF0Y2hlcywgYW5kIHthfWIgbWF0Y2hlcyB7fGF8fWIgYnV0IGFiCisgICAgICAgICAqIGRvZXMgbm90LiAgUHJlIGNvbnRleHQgaXMgZGlmZmVyZW50IChhe2J9IGRvZXMgbm90IGFsaWduIHdpdGgKKyAgICAgICAgICogYWIpLgorICAgICAgICAgKi8KKworICAgICAgICAvKiBMSU1JVEFUSU9OIG9mIHRoZSBjdXJyZW50IG1hc2sgYWxnb3JpdGhtOiBTb21lIHJ1bGUKKyAgICAgICAgICogbWFza2luZ3MgYXJlIGN1cnJlbnRseSBub3QgZGV0ZWN0ZWQuICBGb3IgZXhhbXBsZSwKKyAgICAgICAgICogIntMdX1dYT54IiBtYXNrcyAiQV1hPnkiLiAgVGhpcyBjYW4gYmUgYWRkZWQgbGF0ZXIuIFRPRE8KKyAgICAgICAgICovCisKKyAgICAgICAgaW50IGxlbiA9IHBhdHRlcm4ubGVuZ3RoKCk7CisgICAgICAgIGludCBsZWZ0ID0gYW50ZUNvbnRleHRMZW5ndGg7CisgICAgICAgIGludCBsZWZ0MiA9IHIyLmFudGVDb250ZXh0TGVuZ3RoOworICAgICAgICBpbnQgcmlnaHQgPSBwYXR0ZXJuLmxlbmd0aCgpIC0gbGVmdDsKKyAgICAgICAgaW50IHJpZ2h0MiA9IHIyLnBhdHRlcm4ubGVuZ3RoKCkgLSBsZWZ0MjsKKworICAgICAgICAvLyBUT0RPIENsZWFuIHRoaXMgdXAgLS0gc29tZSBsb2dpYyBtaWdodCBiZSBjb21iaW5hYmxlIHdpdGggdGhlCisgICAgICAgIC8vIG5leHQgc3RhdGVtZW50LgorCisgICAgICAgIC8vIFRlc3QgZm9yIGFuY2hvciBtYXNraW5nCisgICAgICAgIGlmIChsZWZ0ID09IGxlZnQyICYmIHJpZ2h0ID09IHJpZ2h0MiAmJgorICAgICAgICAgICAga2V5TGVuZ3RoIDw9IHIyLmtleUxlbmd0aCAmJgorICAgICAgICAgICAgcjIucGF0dGVybi5yZWdpb25NYXRjaGVzKDAsIHBhdHRlcm4sIDAsIGxlbikpIHsKKyAgICAgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgYm9vbGVhbiBsb2dpYyBpbXBsZW1lbnRzIHRoZSB0YWJsZSBhYm92ZQorICAgICAgICAgICAgcmV0dXJuIChmbGFncyA9PSByMi5mbGFncykgfHwKKyAgICAgICAgICAgICAgICAoISgoZmxhZ3MgJiBBTkNIT1JfU1RBUlQpICE9IDApICYmICEoKGZsYWdzICYgQU5DSE9SX0VORCkgIT0gMCkpIHx8CisgICAgICAgICAgICAgICAgKCgocjIuZmxhZ3MgJiBBTkNIT1JfU1RBUlQpICE9IDApICYmICgocjIuZmxhZ3MgJiBBTkNIT1JfRU5EKSAhPSAwKSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbGVmdCA8PSBsZWZ0MiAmJgorICAgICAgICAgICAgKHJpZ2h0IDwgcmlnaHQyIHx8CisgICAgICAgICAgICAgKHJpZ2h0ID09IHJpZ2h0MiAmJiBrZXlMZW5ndGggPD0gcjIua2V5TGVuZ3RoKSkgJiYKKyAgICAgICAgICAgIHIyLnBhdHRlcm4ucmVnaW9uTWF0Y2hlcyhsZWZ0MiAtIGxlZnQsIHBhdHRlcm4sIDAsIGxlbik7CisgICAgfQorCisgICAgc3RhdGljIGZpbmFsIGludCBwb3NCZWZvcmUoUmVwbGFjZWFibGUgc3RyLCBpbnQgcG9zKSB7CisgICAgICAgIHJldHVybiAocG9zID4gMCkgPworICAgICAgICAgICAgcG9zIC0gVVRGMTYuZ2V0Q2hhckNvdW50KHN0ci5jaGFyMzJBdChwb3MtMSkpIDoKKyAgICAgICAgICAgIHBvcyAtIDE7CisgICAgfQorCisgICAgc3RhdGljIGZpbmFsIGludCBwb3NBZnRlcihSZXBsYWNlYWJsZSBzdHIsIGludCBwb3MpIHsKKyAgICAgICAgcmV0dXJuIChwb3MgPj0gMCAmJiBwb3MgPCBzdHIubGVuZ3RoKCkpID8KKyAgICAgICAgICAgIHBvcyArIFVURjE2LmdldENoYXJDb3VudChzdHIuY2hhcjMyQXQocG9zKSkgOgorICAgICAgICAgICAgcG9zICsgMTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBdHRlbXB0IGEgbWF0Y2ggYW5kIHJlcGxhY2VtZW50IGF0IHRoZSBnaXZlbiBwb3NpdGlvbi4gIFJldHVybgorICAgICAqIHRoZSBkZWdyZWUgb2YgbWF0Y2ggYmV0d2VlbiB0aGlzIHJ1bGUgYW5kIHRoZSBnaXZlbiB0ZXh0LiAgVGhlCisgICAgICogZGVncmVlIG9mIG1hdGNoIG1heSBiZSBtaXNtYXRjaCwgYSBwYXJ0aWFsIG1hdGNoLCBvciBhIGZ1bGwKKyAgICAgKiBtYXRjaC4gIEEgbWlzbWF0Y2ggbWVhbnMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBvZiB0aGUgdGV4dAorICAgICAqIGRvZXMgbm90IG1hdGNoIHRoZSBjb250ZXh0IG9yIGtleS4gIEEgcGFydGlhbCBtYXRjaCBtZWFucyBzb21lCisgICAgICogY29udGV4dCBhbmQga2V5IGNoYXJhY3RlcnMgbWF0Y2gsIGJ1dCB0aGUgdGV4dCBpcyBub3QgbG9uZworICAgICAqIGVub3VnaCB0byBtYXRjaCBhbGwgb2YgdGhlbS4gIEEgZnVsbCBtYXRjaCBtZWFucyBhbGwgY29udGV4dAorICAgICAqIGFuZCBrZXkgY2hhcmFjdGVycyBtYXRjaC4KKyAgICAgKgorICAgICAqIElmIGEgZnVsbCBtYXRjaCBpcyBvYnRhaW5lZCwgcGVyZm9ybSBhIHJlcGxhY2VtZW50LCB1cGRhdGUgcG9zLAorICAgICAqIGFuZCByZXR1cm4gVV9NQVRDSC4gIE90aGVyd2lzZSBib3RoIHRleHQgYW5kIHBvcyBhcmUgdW5jaGFuZ2VkLgorICAgICAqCisgICAgICogQHBhcmFtIHRleHQgdGhlIHRleHQKKyAgICAgKiBAcGFyYW0gcG9zIHRoZSBwb3NpdGlvbiBpbmRpY2VzCisgICAgICogQHBhcmFtIGluY3JlbWVudGFsIGlmIFRSVUUsIHRlc3QgZm9yIHBhcnRpYWwgbWF0Y2hlcyB0aGF0IG1heQorICAgICAqIGJlIGNvbXBsZXRlZCBieSBhZGRpdGlvbmFsIHRleHQgaW5zZXJ0ZWQgYXQgcG9zLmxpbWl0LgorICAgICAqIEByZXR1cm4gb25lIG9mIDxjb2RlPlVfTUlTTUFUQ0g8L2NvZGU+LAorICAgICAqIDxjb2RlPlVfUEFSVElBTF9NQVRDSDwvY29kZT4sIG9yIDxjb2RlPlVfTUFUQ0g8L2NvZGU+LiAgSWYKKyAgICAgKiBpbmNyZW1lbnRhbCBpcyBGQUxTRSB0aGVuIFVfUEFSVElBTF9NQVRDSCB3aWxsIG5vdCBiZSByZXR1cm5lZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IG1hdGNoQW5kUmVwbGFjZShSZXBsYWNlYWJsZSB0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yLlBvc2l0aW9uIHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGluY3JlbWVudGFsKSB7CisgICAgICAgIC8vIE1hdGNoaW5nIGFuZCByZXBsYWNpbmcgYXJlIGRvbmUgaW4gb25lIG1ldGhvZCBiZWNhdXNlIHRoZQorICAgICAgICAvLyByZXBsYWNlbWVudCBvcGVyYXRpb24gbmVlZHMgaW5mb3JtYXRpb24gb2J0YWluZWQgZHVyaW5nIHRoZQorICAgICAgICAvLyBtYXRjaC4gIEFub3RoZXIgd2F5IHRvIGRvIHRoaXMgaXMgdG8gaGF2ZSB0aGUgbWF0Y2ggbWV0aG9kCisgICAgICAgIC8vIGNyZWF0ZSBhIG1hdGNoIHJlc3VsdCBzdHJ1Y3Qgd2l0aCByZWxldmFudCBvZmZzZXRzLCBhbmQgdG8gcGFzcworICAgICAgICAvLyB0aGlzIGludG8gdGhlIHJlcGxhY2UgbWV0aG9kLgorCisgICAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gTUFUQ0ggPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAgICAgLy8gUmVzZXQgc2VnbWVudCBtYXRjaCBkYXRhCisgICAgICAgIGlmIChzZWdtZW50cyAhPSBudWxsKSB7CisgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8c2VnbWVudHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICAoKFN0cmluZ01hdGNoZXIpIHNlZ21lbnRzW2ldKS5yZXNldE1hdGNoKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpbnQga2V5TGltaXQ7CisgICAgICAgIGludFtdIGludFJlZiA9IG5ldyBpbnRbMV07CisKKyAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFudGUgQ29udGV4dCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgICAgICAvLyBBIG1pc21hdGNoIGluIHRoZSBhbnRlIGNvbnRleHQsIG9yIHdpdGggdGhlIHN0YXJ0IGFuY2hvciwKKyAgICAgICAgLy8gaXMgYW4gb3V0cmlnaHQgVV9NSVNNQVRDSCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgd2UgYXJlCisgICAgICAgIC8vIGluY3JlbWVudGFsIG9yIG5vdC4KKyAgICAgICAgaW50IG9UZXh0OyAvLyBvZmZzZXQgaW50byAndGV4dCcKKyAgICAgICAgaW50IG1pbk9UZXh0OworCisgICAgICAgIC8vIE5vdGUgKDEpOiBXZSBwcm9jZXNzIHRleHQgaW4gMTYtYml0IGNvZGUgdW5pdHMsIHJhdGhlciB0aGFuCisgICAgICAgIC8vIDMyLWJpdCBjb2RlIHBvaW50cy4gIFRoaXMgd29ya3MgYmVjYXVzZSBzdGFuZC1pbnMgYXJlCisgICAgICAgIC8vIGFsd2F5cyBpbiB0aGUgQk1QIGFuZCBiZWNhdXNlIHdlIGFyZSBkb2luZyBhIGxpdGVyYWwgbWF0Y2gKKyAgICAgICAgLy8gb3BlcmF0aW9uLCB3aGljaCBjYW4gYmUgZG9uZSAxNi1iaXRzIGF0IGEgdGltZS4KKworICAgICAgICBpbnQgYW50ZUxpbWl0ID0gcG9zQmVmb3JlKHRleHQsIHBvcy5jb250ZXh0U3RhcnQpOworCisgICAgICAgIGludCBtYXRjaDsKKworICAgICAgICAvLyBTdGFydCByZXZlcnNlIG1hdGNoIGF0IGNoYXIgYmVmb3JlIHBvcy5zdGFydAorICAgICAgICBpbnRSZWZbMF0gPSBwb3NCZWZvcmUodGV4dCwgcG9zLnN0YXJ0KTsKKworICAgICAgICBpZiAoYW50ZUNvbnRleHQgIT0gbnVsbCkgeworICAgICAgICAgICAgbWF0Y2ggPSBhbnRlQ29udGV4dC5tYXRjaGVzKHRleHQsIGludFJlZiwgYW50ZUxpbWl0LCBmYWxzZSk7CisgICAgICAgICAgICBpZiAobWF0Y2ggIT0gVW5pY29kZU1hdGNoZXIuVV9NQVRDSCkgeworICAgICAgICAgICAgICAgIHJldHVybiBVbmljb2RlTWF0Y2hlci5VX01JU01BVENIOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgb1RleHQgPSBpbnRSZWZbMF07CisgICAgICAgIAorICAgICAgICBtaW5PVGV4dCA9IHBvc0FmdGVyKHRleHQsIG9UZXh0KTsKKworICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU3RhcnQgQW5jaG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgICAgIGlmICgoKGZsYWdzICYgQU5DSE9SX1NUQVJUKSAhPSAwKSAmJiBvVGV4dCAhPSBhbnRlTGltaXQpIHsKKyAgICAgICAgICAgIHJldHVybiBVbmljb2RlTWF0Y2hlci5VX01JU01BVENIOworICAgICAgICB9CisKKyAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gS2V5IGFuZCBQb3N0IENvbnRleHQgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgICAgICBpbnRSZWZbMF0gPSBwb3Muc3RhcnQ7CisKKyAgICAgICAgaWYgKGtleSAhPSBudWxsKSB7CisgICAgICAgICAgICBtYXRjaCA9IGtleS5tYXRjaGVzKHRleHQsIGludFJlZiwgcG9zLmxpbWl0LCBpbmNyZW1lbnRhbCk7CisgICAgICAgICAgICBpZiAobWF0Y2ggIT0gVW5pY29kZU1hdGNoZXIuVV9NQVRDSCkgeworICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGtleUxpbWl0ID0gaW50UmVmWzBdOworCisgICAgICAgIGlmIChwb3N0Q29udGV4dCAhPSBudWxsKSB7CisgICAgICAgICAgICBpZiAoaW5jcmVtZW50YWwgJiYga2V5TGltaXQgPT0gcG9zLmxpbWl0KSB7CisgICAgICAgICAgICAgICAgLy8gVGhlIGtleSBtYXRjaGVzIGp1c3QgYmVmb3JlIHBvcy5saW1pdCwgYW5kIHRoZXJlIGlzCisgICAgICAgICAgICAgICAgLy8gYSBwb3N0Q29udGV4dC4gIFNpbmNlIHdlIGFyZSBpbiBpbmNyZW1lbnRhbCBtb2RlLAorICAgICAgICAgICAgICAgIC8vIHdlIG11c3QgYXNzdW1lIG1vcmUgY2hhcmFjdGVycyBtYXkgYmUgaW5zZXJ0ZWQgYXQKKyAgICAgICAgICAgICAgICAvLyBwb3MubGltaXQgLS0gdGhpcyBpcyBhIHBhcnRpYWwgbWF0Y2guCisgICAgICAgICAgICAgICAgcmV0dXJuIFVuaWNvZGVNYXRjaGVyLlVfUEFSVElBTF9NQVRDSDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbWF0Y2ggPSBwb3N0Q29udGV4dC5tYXRjaGVzKHRleHQsIGludFJlZiwgcG9zLmNvbnRleHRMaW1pdCwgaW5jcmVtZW50YWwpOworICAgICAgICAgICAgaWYgKG1hdGNoICE9IFVuaWNvZGVNYXRjaGVyLlVfTUFUQ0gpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2g7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBvVGV4dCA9IGludFJlZlswXTsKKworICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFN0b3AgQW5jaG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgICAgIGlmICgoKGZsYWdzICYgQU5DSE9SX0VORCkpICE9IDApIHsKKyAgICAgICAgICAgIGlmIChvVGV4dCAhPSBwb3MuY29udGV4dExpbWl0KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFVuaWNvZGVNYXRjaGVyLlVfTUlTTUFUQ0g7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaW5jcmVtZW50YWwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gVW5pY29kZU1hdGNoZXIuVV9QQVJUSUFMX01BVENIOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09IFJFUExBQ0UgPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgICAgICAvLyBXZSBoYXZlIGEgZnVsbCBtYXRjaC4gIFRoZSBrZXkgaXMgYmV0d2VlbiBwb3Muc3RhcnQgYW5kCisgICAgICAgIC8vIGtleUxpbWl0LgorCisgICAgICAgIGludCBuZXdMZW5ndGggPSBvdXRwdXQucmVwbGFjZSh0ZXh0LCBwb3Muc3RhcnQsIGtleUxpbWl0LCBpbnRSZWYpOworICAgICAgICBpbnQgbGVuRGVsdGEgPSBuZXdMZW5ndGggLSAoa2V5TGltaXQgLSBwb3Muc3RhcnQpOworICAgICAgICBpbnQgbmV3U3RhcnQgPSBpbnRSZWZbMF07CisKKyAgICAgICAgb1RleHQgKz0gbGVuRGVsdGE7CisgICAgICAgIHBvcy5saW1pdCArPSBsZW5EZWx0YTsKKyAgICAgICAgcG9zLmNvbnRleHRMaW1pdCArPSBsZW5EZWx0YTsKKyAgICAgICAgLy8gUmVzdHJpY3QgbmV3IHZhbHVlIG9mIHN0YXJ0IHRvIFttaW5PVGV4dCwgbWluKG9UZXh0LCBwb3MubGltaXQpXS4KKyAgICAgICAgcG9zLnN0YXJ0ID0gTWF0aC5tYXgobWluT1RleHQsIE1hdGgubWluKE1hdGgubWluKG9UZXh0LCBwb3MubGltaXQpLCBuZXdTdGFydCkpOworICAgICAgICByZXR1cm4gVW5pY29kZU1hdGNoZXIuVV9NQVRDSDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSBzb3VyY2Ugc3RyaW5nIHRoYXQgcmVwcmVzZW50cyB0aGlzIHJ1bGUuICBBcHBlbmQgaXQgdG8gdGhlCisgICAgICogZ2l2ZW4gc3RyaW5nLgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgdG9SdWxlKGJvb2xlYW4gZXNjYXBlVW5wcmludGFibGUpIHsKKyAgICAgICAgaW50IGk7CisKKyAgICAgICAgU3RyaW5nQnVmZmVyIHJ1bGUgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisKKyAgICAgICAgLy8gQWNjdW11bGF0ZSBzcGVjaWFsIGNoYXJhY3RlcnMgKGFuZCBub24tc3BlY2lhbHMgZm9sbG93aW5nIHRoZW0pCisgICAgICAgIC8vIGludG8gcXVvdGVCdWYuICBBcHBlbmQgcXVvdGVCdWYsIHdpdGhpbiBzaW5nbGUgcXVvdGVzLCB3aGVuCisgICAgICAgIC8vIGEgbm9uLXF1b3RlZCBlbGVtZW50IG11c3QgYmUgaW5zZXJ0ZWQuCisgICAgICAgIFN0cmluZ0J1ZmZlciBxdW90ZUJ1ZiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKworICAgICAgICAvLyBEbyBub3QgZW1pdCB0aGUgYnJhY2VzICd7JyAnfScgYXJvdW5kIHRoZSBwYXR0ZXJuIGlmIHRoZXJlCisgICAgICAgIC8vIGlzIG5laXRoZXIgYW50ZUNvbnRleHQgbm9yIHBvc3RDb250ZXh0LgorICAgICAgICBib29sZWFuIGVtaXRCcmFjZXMgPQorICAgICAgICAgICAgKGFudGVDb250ZXh0ICE9IG51bGwpIHx8IChwb3N0Q29udGV4dCAhPSBudWxsKTsKKworICAgICAgICAvLyBFbWl0IHN0YXJ0IGFuY2hvcgorICAgICAgICBpZiAoKGZsYWdzICYgQU5DSE9SX1NUQVJUKSAhPSAwKSB7CisgICAgICAgICAgICBydWxlLmFwcGVuZCgnXicpOworICAgICAgICB9CisKKyAgICAgICAgLy8gRW1pdCB0aGUgaW5wdXQgcGF0dGVybgorICAgICAgICBVdGlsaXR5LmFwcGVuZFRvUnVsZShydWxlLCBhbnRlQ29udGV4dCwgZXNjYXBlVW5wcmludGFibGUsIHF1b3RlQnVmKTsKKworICAgICAgICBpZiAoZW1pdEJyYWNlcykgeworICAgICAgICAgICAgVXRpbGl0eS5hcHBlbmRUb1J1bGUocnVsZSwgJ3snLCB0cnVlLCBlc2NhcGVVbnByaW50YWJsZSwgcXVvdGVCdWYpOworICAgICAgICB9CisKKyAgICAgICAgVXRpbGl0eS5hcHBlbmRUb1J1bGUocnVsZSwga2V5LCBlc2NhcGVVbnByaW50YWJsZSwgcXVvdGVCdWYpOworCisgICAgICAgIGlmIChlbWl0QnJhY2VzKSB7CisgICAgICAgICAgICBVdGlsaXR5LmFwcGVuZFRvUnVsZShydWxlLCAnfScsIHRydWUsIGVzY2FwZVVucHJpbnRhYmxlLCBxdW90ZUJ1Zik7CisgICAgICAgIH0KKworICAgICAgICBVdGlsaXR5LmFwcGVuZFRvUnVsZShydWxlLCBwb3N0Q29udGV4dCwgZXNjYXBlVW5wcmludGFibGUsIHF1b3RlQnVmKTsKKworICAgICAgICAvLyBFbWl0IGVuZCBhbmNob3IKKyAgICAgICAgaWYgKChmbGFncyAmIEFOQ0hPUl9FTkQpICE9IDApIHsKKyAgICAgICAgICAgIHJ1bGUuYXBwZW5kKCckJyk7CisgICAgICAgIH0KKworICAgICAgICBVdGlsaXR5LmFwcGVuZFRvUnVsZShydWxlLCAiID4gIiwgdHJ1ZSwgZXNjYXBlVW5wcmludGFibGUsIHF1b3RlQnVmKTsKKworICAgICAgICAvLyBFbWl0IHRoZSBvdXRwdXQgcGF0dGVybgorCisgICAgICAgIFV0aWxpdHkuYXBwZW5kVG9SdWxlKHJ1bGUsIG91dHB1dC50b1JlcGxhY2VyUGF0dGVybihlc2NhcGVVbnByaW50YWJsZSksCisgICAgICAgICAgICAgICAgICAgICB0cnVlLCBlc2NhcGVVbnByaW50YWJsZSwgcXVvdGVCdWYpOworCisgICAgICAgIFV0aWxpdHkuYXBwZW5kVG9SdWxlKHJ1bGUsICc7JywgdHJ1ZSwgZXNjYXBlVW5wcmludGFibGUsIHF1b3RlQnVmKTsKKworICAgICAgICByZXR1cm4gcnVsZS50b1N0cmluZygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIG9iamVjdC4KKyAgICAgKiBAcmV0dXJuIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIG9iamVjdAorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgIHJldHVybiBnZXRDbGFzcygpLmdldE5hbWUoKSArICd7JyArIHRvUnVsZSh0cnVlKSArICd9JzsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBVbmlvbiB0aGUgc2V0IG9mIGFsbCBjaGFyYWN0ZXJzIHRoYXQgbWF5IGJlIG1vZGlmaWVkIGJ5IHRoaXMgcnVsZQorICAgICAqIGludG8gdGhlIGdpdmVuIHNldC4KKyAgICAgKi8KKyAgICB2b2lkIGFkZFNvdXJjZVNldFRvKFVuaWNvZGVTZXQgdG9VbmlvblRvKSB7CisgICAgICAgIGludCBsaW1pdCA9IGFudGVDb250ZXh0TGVuZ3RoICsga2V5TGVuZ3RoOworICAgICAgICBmb3IgKGludCBpPWFudGVDb250ZXh0TGVuZ3RoOyBpPGxpbWl0OyApIHsKKyAgICAgICAgICAgIGludCBjaCA9IFVURjE2LmNoYXJBdChwYXR0ZXJuLCBpKTsKKyAgICAgICAgICAgIGkgKz0gVVRGMTYuZ2V0Q2hhckNvdW50KGNoKTsKKyAgICAgICAgICAgIFVuaWNvZGVNYXRjaGVyIG1hdGNoZXIgPSBkYXRhLmxvb2t1cE1hdGNoZXIoY2gpOworICAgICAgICAgICAgaWYgKG1hdGNoZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHRvVW5pb25Uby5hZGQoY2gpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtYXRjaGVyLmFkZE1hdGNoU2V0VG8odG9VbmlvblRvKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFVuaW9uIHRoZSBzZXQgb2YgYWxsIGNoYXJhY3RlcnMgdGhhdCBtYXkgYmUgZW1pdHRlZCBieSB0aGlzIHJ1bGUKKyAgICAgKiBpbnRvIHRoZSBnaXZlbiBzZXQuCisgICAgICovCisgICAgdm9pZCBhZGRUYXJnZXRTZXRUbyhVbmljb2RlU2V0IHRvVW5pb25UbykgeworICAgICAgICBvdXRwdXQuYWRkUmVwbGFjZW1lbnRTZXRUbyh0b1VuaW9uVG8pOworICAgIH0KK30KKworLyoqCisgKiAkTG9nOiBUcmFuc2xpdGVyYXRpb25SdWxlLmphdmEsdiAkCisgKiBSZXZpc2lvbiAxLjQ3ICAyMDAyLzA2LzI4IDE5OjE1OjUzICBhbGFuCisgKiBqaXR0ZXJidWcgMTQzNDogaW1wcm92ZSBtZXRob2QgbmFtZXM7IG1pbm9yIGNsZWFudXAKKyAqCisgKiBSZXZpc2lvbiAxLjQ2ICAyMDAyLzA2LzI2IDE4OjEyOjM5ICBhbGFuCisgKiBqaXR0ZXJidWcgMTQzNDogaW5pdGlhbCBwdWJsaWMgaW1wbGVtZW50YXRpb24gb2YgZ2V0U291cmNlU2V0IGFuZCBnZXRUYXJnZXRTZXQKKyAqCisgKiBSZXZpc2lvbiAxLjQ1ICAyMDAyLzAyLzI1IDIyOjQzOjU3ICByYW0KKyAqIE1vdmUgVXRpbGl0eSBjbGFzcyB0byBpY3UuaW1wbAorICoKKyAqIFJldmlzaW9uIDEuNDQgIDIwMDIvMDIvMTYgMDM6MDY6MTYgIE1vaGFuCisgKiBJQ1U0SiByZW9yZ2FuaXphdGlvbgorICoKKyAqIFJldmlzaW9uIDEuNDMgIDIwMDIvMDIvMDkgMDE6MDE6NDcgIGFsYW4KKyAqIGppdHRlcmJ1ZyAxNTQ0OiBhZGQgY2hhcjMyQXQoKSB0byBSZXBsYWNlYWJsZQorICoKKyAqIFJldmlzaW9uIDEuNDIgIDIwMDIvMDIvMDcgMDA6NTM6NTQgIGFsYW4KKyAqIGppdHRlcmJ1ZyAxMjM0OiBtYWtlIG91dHB1dCBzaWRlIG9mIFJCVHMgb2JqZWN0LW9yaWVudGVkOyByZXdyaXRlIElEIHBhcnNlcnMgYW5kIG1vZHVsYXJpemUgdGhlbTsgaW1wbGVtZW50ICZBbnktTG93ZXIoKSBzdXBwb3J0CisgKgorICogUmV2aXNpb24gMS40MSAgMjAwMS8xMi8xMSAyMjoxMTowNCAgYWxhbgorICogaml0dGVyYnVnIDE1OTE6IGVkaXQgY29tbWVudHMKKyAqCisgKiBSZXZpc2lvbiAxLjQwICAyMDAxLzEyLzExIDE3OjQzOjU3ICBhbGFuCisgKiBqaXR0ZXJidWcgMTU5MTogY2xlYW4gdXAgVHJhbnNsaXRlcmF0aW9uUnVsZQorICoKKyAqIFJldmlzaW9uIDEuMzkgIDIwMDEvMTIvMDMgMjE6MzM6NTggIGFsYW4KKyAqIGppdHRlcmJ1ZyAxMzczOiBtb3JlIGZpeGVzIHRvIHN1cHBvcnQgc3VwcGxlbWVudGFscworICoKKyAqIFJldmlzaW9uIDEuMzggIDIwMDEvMTEvMzAgMjI6Mjc6MjkgIGFsYW4KKyAqIGppdHRlcmJ1ZyAxNTYwOiBmaXggZG91YmxlIGluY3JlbWVudCBidWcgaW4gZ2V0U291cmNlU2V0CisgKgorICogUmV2aXNpb24gMS4zNyAgMjAwMS8xMS8yOSAyMjozMToxOCAgYWxhbgorICogaml0dGVyYnVnIDE1NjA6IGFkZCBzb3VyY2Utc2V0IG1ldGhvZHMgYW5kIFRyYW5zbGl0ZXJhdG9yVXRpbGl0eSBjbGFzcworICoKKyAqIFJldmlzaW9uIDEuMzYgIDIwMDEvMTEvMjEgMjI6MjE6NDUgIGFsYW4KKyAqIGppdHRlcmJ1ZyAxNTMzOiBpbmNvcnBvcmF0ZSBNYXJrJ3MgcmV2aWV3IGNvbW1lbnRzOyBtb3ZlIGVzY2FwZSBoYW5kbGluZyBtZXRob2RzIHRvIFV0aWxpdHkKKyAqCisgKiBSZXZpc2lvbiAxLjM1ICAyMDAxLzExLzAyIDE3OjQ2OjA1ICBhbGFuCisgKiBqaXR0ZXJidWcgMTQyNjogZWxpbWluYXRlIE5PUCBjYWxsIHRvIGNvcHkoKQorICoKKyAqIFJldmlzaW9uIDEuMzQgIDIwMDEvMTAvMzAgMTg6MDQ6MDggIGFsYW4KKyAqIGppdHRlcmJ1ZyAxNDA2OiBtYWtlIHF1YW50aWZpZWQgc2VnbWVudHMgYmVoYXZlIGxpa2UgcGVybCBjb3VudGVycGFydHMKKyAqCisgKiBSZXZpc2lvbiAxLjMzICAyMDAxLzEwLzI1IDIzOjIyOjE1ICBhbGFuCisgKiBqaXR0ZXJidWcgNzM6IGNoYW5nZXMgdG8gc3VwcG9ydCB6ZXJvLWxlbmd0aCBtYXRjaGVycyBhdCBlbmQgb2Yga2V5CisgKgorICogUmV2aXNpb24gMS4zMiAgMjAwMS8xMC8yNSAyMjo0MjoyNCAgYWxhbgorICogaml0dGVyYnVnIDczOiB1c2UgaW50IGZvciBpbmRleCB2YWx1ZXMgdG8gYXZvaWQgc2lnbmVkbmVzcyBwcm9ibGVtcworICoKKyAqIFJldmlzaW9uIDEuMzEgIDIwMDEvMTAvMTggMjM6MDI6MzIgIGFsYW4KKyAqIGppdHRlcmJ1ZyA2MDogZml4IGhhbmRsaW5nIG9mIGFuY2hvcnMgaW4gdG9SdWxlCisgKgorICogUmV2aXNpb24gMS4zMCAgMjAwMS8xMC8wNCAyMjozMzo1MyAgYWxhbgorICogaml0dGVyYnVnIDY5OiBtaW5vciBmaXggdG8gaW5jcmVtZW50YWwgUkJUIGNvZGUKKyAqCisgKiBSZXZpc2lvbiAxLjI5ICAyMDAxLzEwLzAzIDAwOjE0OjIzICBhbGFuCisgKiBqaXR0ZXJidWcgNzM6IGZpbmlzaCBxdWFudGlmaWVyIGFuZCBzdXBwbGVtZW50YWwgY2hhciBzdXBwb3J0CisgKgorICogUmV2aXNpb24gMS4yOCAgMjAwMS8wOS8yNiAxODowMDowNiAgYWxhbgorICogaml0dGVyYnVnIDY3OiBzeW5jIHBhcnNlciB3aXRoIGljdTRjLCBhbGxvdyB1bmxpbWl0ZWQsIG5lc3RlZCBzZWdtZW50cworICoKKyAqIFJldmlzaW9uIDEuMjcgIDIwMDEvMDkvMTkgMTc6NDM6MzggIGFsYW4KKyAqIGppdHRlcmJ1ZyA2MDogaW5pdGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0b1J1bGVzKCkKKyAqCisgKiBSZXZpc2lvbiAxLjI2ICAyMDAxLzA2LzI5IDIyOjM1OjQxICBhbGFuNGoKKyAqIEltcGxlbWVudCBBbnktVXBwZXIgQW55LUxvd2VyIGFuZCBBbnktVGl0bGUgdHJhbnNsaXRlcmF0b3JzCisgKgorICogUmV2aXNpb24gMS4yNSAgMjAwMC8xMS8yOSAxOToxMjozMiAgYWxhbjRqCisgKiBVcGRhdGUgZG9jcworICoKKyAqIFJldmlzaW9uIDEuMjQgIDIwMDAvMDgvMzAgMjA6NDA6MzAgIGFsYW40agorICogSW1wbGVtZW50IGFuY2hvcnMuCisgKgorICogUmV2aXNpb24gMS4yMyAgMjAwMC8wNi8yOSAyMTo1OToyMyAgYWxhbjRqCisgKiBGaXggaGFuZGxpbmcgb2YgVHJhbnNsaXRlcmF0b3IuUG9zaXRpb24gZmllbGRzCisgKgorICogUmV2aXNpb24gMS4yMiAgMjAwMC8wNS8xOCAyMTozNzoxOSAgYWxhbgorICogVXBkYXRlIGRvY3MKKyAqCisgKiBSZXZpc2lvbiAxLjIxICAyMDAwLzA0LzI4IDAxOjIyOjAxICBhbGFuCisgKiBVcGRhdGUgc3ludGF4IGRpc3BsYXllZCBieSB0b1N0cmluZworICoKKyAqIFJldmlzaW9uIDEuMjAgIDIwMDAvMDQvMjUgMTc6MTc6MzcgIGFsYW4KKyAqIEFkZCBSZXBsYWNlYWJsZS5jb3B5IHRvIHJldGFpbiBvdXQtb2YtYmFuZCBpbmZvIGR1cmluZyByZW9yZGVyaW5nLgorICoKKyAqIFJldmlzaW9uIDEuMTkgIDIwMDAvMDQvMjUgMDE6NDI6NTggIGFsYW4KKyAqIEFsbG93IGFyYml0cmFyeSBsZW5ndGggdmFyaWFibGUgdmFsdWVzLiBDbGVhbiB1cCBEYXRhIEFQSS4gVXBkYXRlIGphdmFkb2NzLgorICoKKyAqIFJldmlzaW9uIDEuMTggIDIwMDAvMDQvMjIgMDE6MjU6MTAgIGFsYW4KKyAqIEFkZCBzdXBwb3J0IGZvciBjdXJzb3IgcG9zaXRpb25lciAnQCc7IHVwZGF0ZSBqYXZhZG9jCisgKgorICogUmV2aXNpb24gMS4xNyAgMjAwMC8wNC8yMSAyMToxNjo0MCAgYWxhbgorICogTW9kaWZ5IHJ1bGUgc3ludGF4CisgKgorICogUmV2aXNpb24gMS4xNiAgMjAwMC8wNC8xOSAxNjozNDoxOCAgYWxhbgorICogQWRkIHNlZ21lbnQgc3VwcG9ydC4KKyAqCisgKiBSZXZpc2lvbiAxLjE1ICAyMDAwLzA0LzEyIDIwOjE3OjQ1ICBhbGFuCisgKiBEZWxlZ2F0ZSByZXBsYWNlIG9wZXJhdGlvbiB0byBydWxlIG9iamVjdAorICoKKyAqIFJldmlzaW9uIDEuMTQgIDIwMDAvMDMvMTAgMDQ6MDc6MjQgIGpvaG5mCisgKiBDb3B5cmlnaHQgdXBkYXRlCisgKgorICogUmV2aXNpb24gMS4xMyAgMjAwMC8wMi8xMCAwNzozNjoyNSAgam9obmYKKyAqIGZpeGVkIGltcG9ydHMgZm9yIGNvbS5pYm0uaWN1LmltcGwuVXRpbGl0eQorICoKKyAqIFJldmlzaW9uIDEuMTIgIDIwMDAvMDIvMDMgMTg6MTE6MTkgIEFsYW4KKyAqIFVzZSBhcnJheSByYXRoZXIgdGhhbiBoYXNodGFibGUgZm9yIGNoYXItdG8tc2V0IG1hcAorICoKKyAqIFJldmlzaW9uIDEuMTEgIDIwMDAvMDEvMjcgMTg6NTk6MTkgIEFsYW4KKyAqIFVzZSBQb3NpdGlvbiByYXRoZXIgdGhhbiBpbnRbXSBhbmQgbW92ZSBhbGwgc3ViY2xhc3Mgb3ZlcnJpZGVzIHRvIG9uZSBtZXRob2QgKGhhbmRsZVRyYW5zbGl0ZXJhdGUpCisgKgorICogUmV2aXNpb24gMS4xMCAgMjAwMC8wMS8xOCAyMDozNjoxNyAgQWxhbgorICogTWFrZSBVbmljb2RlU2V0IGluaGVyaXQgZnJvbSBVbmljb2RlRmlsdGVyCisgKgorICogUmV2aXNpb24gMS45ICAyMDAwLzAxLzE4IDAyOjM4OjU1ICBBbGFuCisgKiBGaXggZmlsdGVyaW5nIGJ1Zy4KKyAqCisgKiBSZXZpc2lvbiAxLjggIDIwMDAvMDEvMTMgMjM6NTM6MjMgIEFsYW4KKyAqIEZpeCBidWdzIGZvdW5kIGR1cmluZyBJQ1UgcG9ydAorICoKKyAqIFJldmlzaW9uIDEuNyAgMjAwMC8wMS8xMSAwNDoxMjowNiAgQWxhbgorICogQ2xlYW51cCwgZW1iZWxsaXNoIGNvbW1lbnRzCisgKgorICogUmV2aXNpb24gMS42ICAyMDAwLzAxLzExIDAyOjI1OjAzICBBbGFuCisgKiBSZXdyaXRlIFVuaWNvZGVTZXQgYW5kIFJCVCBwYXJzZXJzIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UgYW5kIG5ldyBzeW50YXgKKyAqCisgKiBSZXZpc2lvbiAxLjUgIDIwMDAvMDEvMDQgMjE6NDM6NTcgIEFsYW4KKyAqIEFkZCBydWxlIGluZGV4aW5nLCBhbmQgbW92ZSBtYXNraW5nIGNoZWNrIHRvIFRyYW5zbGl0ZXJhdGlvblJ1bGVTZXQuCisgKgorICogUmV2aXNpb24gMS40ICAxOTk5LzEyLzIyIDAxOjQwOjU0ICBBbGFuCisgKiBDb25zb2xpZGF0ZSBydWxlIHBhdHRlcm4gYW50ZUNvbnRleHQsIGtleSwgYW5kIHBvc3RDb250ZXh0IGludG8gb25lIHN0cmluZy4KKyAqCisgKiBSZXZpc2lvbiAxLjMgIDE5OTkvMTIvMjIgMDE6MDU6NTQgIEFsYW4KKyAqIEltcHJvdmUgbWFza2luZyBjaGVja2luZzsgdHVybiBpdCBvZmYgYnkgZGVmYXVsdCwgZm9yIGJldHRlciBwZXJmb3JtYW5jZQorICoKKyAqIFJldmlzaW9uIDEuMiAgMTk5OS8xMi8yMSAyMzo1ODo0NCAgQWxhbgorICogRGV0ZWN0IGE+eCBtYXNraW5nIGE+eQorICovCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvdGV4dC9UcmFuc2xpdGVyYXRpb25SdWxlU2V0LmphdmEgYi9zcmMvY29tL2libS9pY3UvdGV4dC9UcmFuc2xpdGVyYXRpb25SdWxlU2V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOTI4ZWRjYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L1RyYW5zbGl0ZXJhdGlvblJ1bGVTZXQuamF2YQpAQCAtMCwwICsxLDMzOCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L3RleHQvVHJhbnNsaXRlcmF0aW9uUnVsZVNldC5qYXZhLHYgJAorICogJERhdGU6IDIwMDIvMDYvMjggMTk6MTU6NTMgJAorICogJFJldmlzaW9uOiAxLjI1ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS50ZXh0OworCitpbXBvcnQgamF2YS51dGlsLio7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5VdGlsaXR5OworCisvKioKKyAqIEEgc2V0IG9mIHJ1bGVzIGZvciBhIDxjb2RlPlJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yPC9jb2RlPi4gIFRoaXMgc2V0IGVuY29kZXMKKyAqIHRoZSB0cmFuc2xpdGVyYXRpb24gaW4gb25lIGRpcmVjdGlvbiBmcm9tIG9uZSBzZXQgb2YgY2hhcmFjdGVycyBvciBzaG9ydAorICogc3RyaW5ncyB0byBhbm90aGVyLiAgQSA8Y29kZT5SdWxlQmFzZWRUcmFuc2xpdGVyYXRvcjwvY29kZT4gY29uc2lzdHMgb2YgdXAgdG8KKyAqIHR3byBzdWNoIHNldHMsIG9uZSBmb3IgdGhlIGZvcndhcmQgZGlyZWN0aW9uLCBhbmQgb25lIGZvciB0aGUgcmV2ZXJzZS4KKyAqCisgKiA8cD5BIDxjb2RlPlRyYW5zbGl0ZXJhdGlvblJ1bGVTZXQ8L2NvZGU+IGhhcyBvbmUgaW1wb3J0YW50IG9wZXJhdGlvbiwgdGhhdCBvZgorICogZmluZGluZyBhIG1hdGNoaW5nIHJ1bGUgYXQgYSBnaXZlbiBwb2ludCBpbiB0aGUgdGV4dC4gIFRoaXMgaXMgYWNjb21wbGlzaGVkCisgKiBieSB0aGUgPGNvZGU+ZmluZE1hdGNoKCk8L2NvZGU+IG1ldGhvZC4KKyAqCisgKiA8cD5Db3B5cmlnaHQgJmNvcHk7IElCTSBDb3Jwb3JhdGlvbiAxOTk5LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBAYXV0aG9yIEFsYW4gTGl1CisgKiBAdmVyc2lvbiAkUkNTZmlsZTogVHJhbnNsaXRlcmF0aW9uUnVsZVNldC5qYXZhLHYgJCAkUmV2aXNpb246IDEuMjUgJCAkRGF0ZTogMjAwMi8wNi8yOCAxOToxNTo1MyAkCisgKi8KK2NsYXNzIFRyYW5zbGl0ZXJhdGlvblJ1bGVTZXQgeworICAgIC8qKgorICAgICAqIFZlY3RvciBvZiBydWxlcywgaW4gdGhlIG9yZGVyIGFkZGVkLgorICAgICAqLworICAgIHByaXZhdGUgVmVjdG9yIHJ1bGVWZWN0b3I7CisKKyAgICAvKioKKyAgICAgKiBMZW5ndGggb2YgdGhlIGxvbmdlc3QgcHJlY2VkaW5nIGNvbnRleHQKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBtYXhDb250ZXh0TGVuZ3RoOworCisgICAgLyoqCisgICAgICogU29ydGVkIGFuZCBpbmRleGVkIHRhYmxlIG9mIHJ1bGVzLiAgVGhpcyBpcyBjcmVhdGVkIGJ5IGZyZWV6ZSgpIGZyb20KKyAgICAgKiB0aGUgcnVsZXMgaW4gcnVsZVZlY3Rvci4gIHJ1bGVzLmxlbmd0aCA+PSBydWxlVmVjdG9yLnNpemUoKSwgYW5kIHRoZQorICAgICAqIHJlZmVyZW5jZXMgaW4gcnVsZXNbXSBhcmUgYWxpYXNlcyBvZiB0aGUgcmVmZXJlbmNlcyBpbiBydWxlVmVjdG9yLgorICAgICAqIEEgc2luZ2xlIHJ1bGUgaW4gcnVsZVZlY3RvciBpcyBsaXN0ZWQgb25lIG9yIG1vcmUgdGltZXMgaW4gcnVsZXNbXS4KKyAgICAgKi8KKyAgICBwcml2YXRlIFRyYW5zbGl0ZXJhdGlvblJ1bGVbXSBydWxlczsKKworICAgIC8qKgorICAgICAqIEluZGV4IHRhYmxlLiAgRm9yIHRleHQgaGF2aW5nIGEgZmlyc3QgY2hhcmFjdGVyIGMsIGNvbXB1dGUgeCA9IGMmMHhGRi4KKyAgICAgKiBOb3cgdXNlIHJ1bGVzW2luZGV4W3hdLi5pbmRleFt4KzFdLTFdLiAgVGhpcyBpbmRleCB0YWJsZSBpcyBjcmVhdGVkIGJ5CisgICAgICogZnJlZXplKCkuCisgICAgICovCisgICAgcHJpdmF0ZSBpbnRbXSBpbmRleDsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAiXHUwMEE5IElCTSBDb3Jwb3JhdGlvbiAxOTk5LTIwMDEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIjsKKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdCBhIG5ldyBlbXB0eSBydWxlIHNldC4KKyAgICAgKi8KKyAgICBwdWJsaWMgVHJhbnNsaXRlcmF0aW9uUnVsZVNldCgpIHsKKyAgICAgICAgcnVsZVZlY3RvciA9IG5ldyBWZWN0b3IoKTsKKyAgICAgICAgbWF4Q29udGV4dExlbmd0aCA9IDA7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBtYXhpbXVtIGNvbnRleHQgbGVuZ3RoLgorICAgICAqIEByZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgbG9uZ2VzdCBwcmVjZWRpbmcgY29udGV4dC4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldE1heGltdW1Db250ZXh0TGVuZ3RoKCkgeworICAgICAgICByZXR1cm4gbWF4Q29udGV4dExlbmd0aDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBZGQgYSBydWxlIHRvIHRoaXMgc2V0LiAgUnVsZXMgYXJlIGFkZGVkIGluIG9yZGVyLCBhbmQgb3JkZXIgaXMKKyAgICAgKiBzaWduaWZpY2FudC4KKyAgICAgKiBAcGFyYW0gcnVsZSB0aGUgcnVsZSB0byBhZGQKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBhZGRSdWxlKFRyYW5zbGl0ZXJhdGlvblJ1bGUgcnVsZSkgeworICAgICAgICBydWxlVmVjdG9yLmFkZEVsZW1lbnQocnVsZSk7CisgICAgICAgIGludCBsZW47CisgICAgICAgIGlmICgobGVuID0gcnVsZS5nZXRBbnRlQ29udGV4dExlbmd0aCgpKSA+IG1heENvbnRleHRMZW5ndGgpIHsKKyAgICAgICAgICAgIG1heENvbnRleHRMZW5ndGggPSBsZW47CisgICAgICAgIH0KKworICAgICAgICBydWxlcyA9IG51bGw7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ2xvc2UgdGhpcyBydWxlIHNldCB0byBmdXJ0aGVyIGFkZGl0aW9ucywgY2hlY2sgaXQgZm9yIG1hc2tlZCBydWxlcywKKyAgICAgKiBhbmQgaW5kZXggaXQgdG8gb3B0aW1pemUgcGVyZm9ybWFuY2UuCisgICAgICogQGV4Y2VwdGlvbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgc29tZSBydWxlcyBhcmUgbWFza2VkCisgICAgICovCisgICAgcHVibGljIHZvaWQgZnJlZXplKCkgeworICAgICAgICAvKiBDb25zdHJ1Y3QgdGhlIHJ1bGUgYXJyYXkgYW5kIGluZGV4IHRhYmxlLiAgV2UgcmVvcmRlciB0aGUKKyAgICAgICAgICogcnVsZXMgYnkgc29ydGluZyB0aGVtIGludG8gMjU2IGJpbnMuICBFYWNoIGJpbiBjb250YWlucyBhbGwKKyAgICAgICAgICogcnVsZXMgbWF0Y2hpbmcgdGhlIGluZGV4IHZhbHVlIGZvciB0aGF0IGJpbi4gIEEgcnVsZQorICAgICAgICAgKiBtYXRjaGVzIGFuIGluZGV4IHZhbHVlIGlmIHN0cmluZyB3aG9zZSBmaXJzdCBrZXkgY2hhcmFjdGVyCisgICAgICAgICAqIGhhcyBhIGxvdyBieXRlIGVxdWFsIHRvIHRoZSBpbmRleCB2YWx1ZSBjYW4gbWF0Y2ggdGhlIHJ1bGUuCisgICAgICAgICAqCisgICAgICAgICAqIEVhY2ggYmluIGNvbnRhaW5zIHplcm8gb3IgbW9yZSBydWxlcywgaW4gdGhlIHNhbWUgb3JkZXIKKyAgICAgICAgICogdGhleSB3ZXJlIGZvdW5kIG9yaWdpbmFsbHkuICBIb3dldmVyLCB0aGUgdG90YWwgcnVsZXMgaW4KKyAgICAgICAgICogdGhlIGJpbnMgbWF5IGV4Y2VlZCB0aGUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCB2ZWN0b3IsCisgICAgICAgICAqIHNpbmNlIHJ1bGVzIHRoYXQgaGF2ZSBhIHZhcmlhYmxlIGFzIHRoZWlyIGZpcnN0IGtleQorICAgICAgICAgKiBjaGFyYWN0ZXIgd2lsbCBnZW5lcmFsbHkgZmFsbCBpbnRvIG1vcmUgdGhhbiBvbmUgYmluLgorICAgICAgICAgKgorICAgICAgICAgKiBUaGF0IGlzLCBlYWNoIGJpbiBjb250YWlucyBhbGwgcnVsZXMgdGhhdCBlaXRoZXIgaGF2ZSB0aGF0CisgICAgICAgICAqIGZpcnN0IGluZGV4IHZhbHVlIGFzIHRoZWlyIGZpcnN0IGtleSBjaGFyYWN0ZXIsIG9yIGhhdmUKKyAgICAgICAgICogYSBzZXQgY29udGFpbmluZyB0aGUgaW5kZXggdmFsdWUgYXMgdGhlaXIgZmlyc3QgY2hhcmFjdGVyLgorICAgICAgICAgKi8KKyAgICAgICAgaW50IG4gPSBydWxlVmVjdG9yLnNpemUoKTsKKyAgICAgICAgaW5kZXggPSBuZXcgaW50WzI1N107IC8vIFtzaWNdCisgICAgICAgIFZlY3RvciB2ID0gbmV3IFZlY3RvcigyKm4pOyAvLyBoZXVyaXN0aWM7IGFkanVzdCBhcyBuZWVkZWQKKworICAgICAgICAvKiBQcmVjb21wdXRlIHRoZSBpbmRleCB2YWx1ZXMuICBUaGlzIHNhdmVzIGEgTE9UIG9mIHRpbWUuCisgICAgICAgICAqLworICAgICAgICBpbnRbXSBpbmRleFZhbHVlID0gbmV3IGludFtuXTsKKyAgICAgICAgZm9yIChpbnQgaj0wOyBqPG47ICsraikgeworICAgICAgICAgICAgVHJhbnNsaXRlcmF0aW9uUnVsZSByID0gKFRyYW5zbGl0ZXJhdGlvblJ1bGUpIHJ1bGVWZWN0b3IuZWxlbWVudEF0KGopOworICAgICAgICAgICAgaW5kZXhWYWx1ZVtqXSA9IHIuZ2V0SW5kZXhWYWx1ZSgpOworICAgICAgICB9CisgICAgICAgIGZvciAoaW50IHg9MDsgeDwyNTY7ICsreCkgeworICAgICAgICAgICAgaW5kZXhbeF0gPSB2LnNpemUoKTsKKyAgICAgICAgICAgIGZvciAoaW50IGo9MDsgajxuOyArK2opIHsKKyAgICAgICAgICAgICAgICBpZiAoaW5kZXhWYWx1ZVtqXSA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleFZhbHVlW2pdID09IHgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHYuYWRkRWxlbWVudChydWxlVmVjdG9yLmVsZW1lbnRBdChqKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgaW5kZXhWYWx1ZSBpcyA8IDAsIHRoZW4gdGhlIGZpcnN0IGtleSBjaGFyYWN0ZXIgaXMKKyAgICAgICAgICAgICAgICAgICAgLy8gYSBzZXQsIGFuZCB3ZSBtdXN0IHVzZSB0aGUgbW9yZSB0aW1lLWNvbnN1bWluZworICAgICAgICAgICAgICAgICAgICAvLyBtYXRjaGVzSW5kZXhWYWx1ZSBjaGVjay4gIEluIHByYWN0aWNlIHRoaXMgaGFwcGVucworICAgICAgICAgICAgICAgICAgICAvLyByYXJlbHksIHNvIHdlIHNlbGRvbSB0cmVhZCB0aGlzIGNvZGUgcGF0aC4KKyAgICAgICAgICAgICAgICAgICAgVHJhbnNsaXRlcmF0aW9uUnVsZSByID0gKFRyYW5zbGl0ZXJhdGlvblJ1bGUpIHJ1bGVWZWN0b3IuZWxlbWVudEF0KGopOworICAgICAgICAgICAgICAgICAgICBpZiAoci5tYXRjaGVzSW5kZXhWYWx1ZSh4KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdi5hZGRFbGVtZW50KHIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGluZGV4WzI1Nl0gPSB2LnNpemUoKTsKKworICAgICAgICAvKiBGcmVlemUgdGhpbmdzIGludG8gYW4gYXJyYXkuCisgICAgICAgICAqLworICAgICAgICBydWxlcyA9IG5ldyBUcmFuc2xpdGVyYXRpb25SdWxlW3Yuc2l6ZSgpXTsKKyAgICAgICAgdi5jb3B5SW50byhydWxlcyk7CisKKyAgICAgICAgU3RyaW5nQnVmZmVyIGVycm9ycyA9IG51bGw7CisKKyAgICAgICAgLyogQ2hlY2sgZm9yIG1hc2tpbmcuICBUaGlzIGlzIE1VQ0ggZmFzdGVyIHRoYW4gb3VyIG9sZCBjaGVjaywKKyAgICAgICAgICogd2hpY2ggd2FzIGVhY2ggcnVsZSBhZ2FpbnN0IGVhY2ggZm9sbG93aW5nIHJ1bGUsIHNpbmNlIHdlCisgICAgICAgICAqIG9ubHkgaGF2ZSB0byBjaGVjayBmb3IgbWFza2luZyB3aXRoaW4gZWFjaCBiaW4gbm93LiAgSXQncworICAgICAgICAgKiAyNTYqTyhuMl4yKSBpbnN0ZWFkIG9mIE8objFeMiksIHdoZXJlIG4xIGlzIHRoZSB0b3RhbCBydWxlCisgICAgICAgICAqIGNvdW50LCBhbmQgbjIgaXMgdGhlIHBlci1iaW4gcnVsZSBjb3VudC4gIEJ1dCBuMjw8bjEsIHNvCisgICAgICAgICAqIGl0J3MgYSBiaWcgd2luLgorICAgICAgICAgKi8KKyAgICAgICAgZm9yIChpbnQgeD0wOyB4PDI1NjsgKyt4KSB7CisgICAgICAgICAgICBmb3IgKGludCBqPWluZGV4W3hdOyBqPGluZGV4W3grMV0tMTsgKytqKSB7CisgICAgICAgICAgICAgICAgVHJhbnNsaXRlcmF0aW9uUnVsZSByMSA9IHJ1bGVzW2pdOworICAgICAgICAgICAgICAgIGZvciAoaW50IGs9aisxOyBrPGluZGV4W3grMV07ICsraykgeworICAgICAgICAgICAgICAgICAgICBUcmFuc2xpdGVyYXRpb25SdWxlIHIyID0gcnVsZXNba107CisgICAgICAgICAgICAgICAgICAgIGlmIChyMS5tYXNrcyhyMikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnJvcnMgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLmFwcGVuZCgiXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoIlJ1bGUgIiArIHIxICsgIiBtYXNrcyAiICsgcjIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKGVycm9ycyAhPSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKGVycm9ycy50b1N0cmluZygpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFRyYW5zbGl0ZXJhdGUgdGhlIGdpdmVuIHRleHQgd2l0aCB0aGUgZ2l2ZW4gVVRyYW5zUG9zaXRpb24KKyAgICAgKiBpbmRpY2VzLiAgUmV0dXJuIFRSVUUgaWYgdGhlIHRyYW5zbGl0ZXJhdGlvbiBzaG91bGQgY29udGludWUKKyAgICAgKiBvciBGQUxTRSBpZiBpdCBzaG91bGQgaGFsdCAoYmVjYXVzZSBvZiBhIFVfUEFSVElBTF9NQVRDSCBtYXRjaCkuCisgICAgICogTm90ZSB0aGF0IEZBTFNFIGlzIG9ubHkgZXZlciByZXR1cm5lZCBpZiBpc0luY3JlbWVudGFsIGlzIFRSVUUuCisgICAgICogQHBhcmFtIHRleHQgdGhlIHRleHQgdG8gYmUgdHJhbnNsaXRlcmF0ZWQKKyAgICAgKiBAcGFyYW0gcG9zIHRoZSBwb3NpdGlvbiBpbmRpY2VzLCB3aGljaCB3aWxsIGJlIHVwZGF0ZWQKKyAgICAgKiBAcGFyYW0gaW5jcmVtZW50YWwgaWYgVFJVRSwgYXNzdW1lIG5ldyB0ZXh0IG1heSBiZSBpbnNlcnRlZAorICAgICAqIGF0IGluZGV4LmxpbWl0LCBhbmQgcmV0dXJuIEZBTFNFIGlmIHRocmUgaXMgYSBwYXJ0aWFsIG1hdGNoLgorICAgICAqIEByZXR1cm4gVFJVRSB1bmxlc3MgYSBVX1BBUlRJQUxfTUFUQ0ggaGFzIGJlZW4gb2J0YWluZWQsCisgICAgICogaW5kaWNhdGluZyB0aGF0IHRyYW5zbGl0ZXJhdGlvbiBzaG91bGQgc3RvcCB1bnRpbCBtb3JlIHRleHQKKyAgICAgKiBhcnJpdmVzLgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIHRyYW5zbGl0ZXJhdGUoUmVwbGFjZWFibGUgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yLlBvc2l0aW9uIHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gaW5jcmVtZW50YWwpIHsKKyAgICAgICAgaW50IGluZGV4Qnl0ZSA9IHRleHQuY2hhcjMyQXQocG9zLnN0YXJ0KSAmIDB4RkY7CisgICAgICAgIGZvciAoaW50IGk9aW5kZXhbaW5kZXhCeXRlXTsgaTxpbmRleFtpbmRleEJ5dGUrMV07ICsraSkgeworICAgICAgICAgICAgaW50IG0gPSBydWxlc1tpXS5tYXRjaEFuZFJlcGxhY2UodGV4dCwgcG9zLCBpbmNyZW1lbnRhbCk7CisgICAgICAgICAgICBzd2l0Y2ggKG0pIHsKKyAgICAgICAgICAgIGNhc2UgVW5pY29kZU1hdGNoZXIuVV9NQVRDSDoKKyAgICAgICAgICAgICAgICBpZiAoVHJhbnNsaXRlcmF0b3IuREVCVUcpIHsKKyAgICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKChpbmNyZW1lbnRhbCA/ICJSdWxlLmk6IG1hdGNoICI6IlJ1bGU6IG1hdGNoICIpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGVzW2ldLnRvUnVsZSh0cnVlKSArICIgPT4gIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVdGlsaXR5LmZvcm1hdElucHV0KHRleHQsIHBvcykpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGNhc2UgVW5pY29kZU1hdGNoZXIuVV9QQVJUSUFMX01BVENIOgorICAgICAgICAgICAgICAgIGlmIChUcmFuc2xpdGVyYXRvci5ERUJVRykgeworICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKGluY3JlbWVudGFsID8gIlJ1bGUuaTogcGFydGlhbCBtYXRjaCAiOiJSdWxlOiBwYXJ0aWFsIG1hdGNoICIpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGVzW2ldLnRvUnVsZSh0cnVlKSArICIgPT4gIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVdGlsaXR5LmZvcm1hdElucHV0KHRleHQsIHBvcykpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLy8gTm8gbWF0Y2ggb3IgcGFydGlhbCBtYXRjaCBmcm9tIGFueSBydWxlCisgICAgICAgIHBvcy5zdGFydCArPSBVVEYxNi5nZXRDaGFyQ291bnQodGV4dC5jaGFyMzJBdChwb3Muc3RhcnQpKTsKKyAgICAgICAgaWYgKFRyYW5zbGl0ZXJhdG9yLkRFQlVHKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKGluY3JlbWVudGFsID8gIlJ1bGUuaTogbm8gbWF0Y2ggPT4gIjoiUnVsZTogbm8gbWF0Y2ggPT4gIikgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxpdHkuZm9ybWF0SW5wdXQodGV4dCwgcG9zKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlIHJ1bGUgc3RyaW5ncyB0aGF0IHJlcHJlc2VudHMgdGhpcyBydWxlIHNldC4KKyAgICAgKi8KKyAgICBTdHJpbmcgdG9SdWxlcyhib29sZWFuIGVzY2FwZVVucHJpbnRhYmxlKSB7CisgICAgICAgIGludCBpOworICAgICAgICBpbnQgY291bnQgPSBydWxlVmVjdG9yLnNpemUoKTsKKyAgICAgICAgU3RyaW5nQnVmZmVyIHJ1bGVTb3VyY2UgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIGZvciAoaT0wOyBpPGNvdW50OyArK2kpIHsKKyAgICAgICAgICAgIGlmIChpICE9IDApIHsKKyAgICAgICAgICAgICAgICBydWxlU291cmNlLmFwcGVuZCgnXG4nKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFRyYW5zbGl0ZXJhdGlvblJ1bGUgciA9CisgICAgICAgICAgICAgICAgKFRyYW5zbGl0ZXJhdGlvblJ1bGUpIHJ1bGVWZWN0b3IuZWxlbWVudEF0KGkpOworICAgICAgICAgICAgcnVsZVNvdXJjZS5hcHBlbmQoci50b1J1bGUoZXNjYXBlVW5wcmludGFibGUpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcnVsZVNvdXJjZS50b1N0cmluZygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgc2V0IG9mIGFsbCBjaGFyYWN0ZXJzIHRoYXQgbWF5IGJlIG1vZGlmaWVkIChnZXRUYXJnZXQ9ZmFsc2UpCisgICAgICogb3IgZW1pdHRlZCAoZ2V0VGFyZ2V0PXRydWUpIGJ5IHRoaXMgc2V0LgorICAgICAqLworICAgIFVuaWNvZGVTZXQgZ2V0U291cmNlVGFyZ2V0U2V0KGJvb2xlYW4gZ2V0VGFyZ2V0KSB7CisgICAgICAgIFVuaWNvZGVTZXQgc2V0ID0gbmV3IFVuaWNvZGVTZXQoKTsKKyAgICAgICAgaW50IGNvdW50ID0gcnVsZVZlY3Rvci5zaXplKCk7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxjb3VudDsgKytpKSB7CisgICAgICAgICAgICBUcmFuc2xpdGVyYXRpb25SdWxlIHIgPQorICAgICAgICAgICAgICAgIChUcmFuc2xpdGVyYXRpb25SdWxlKSBydWxlVmVjdG9yLmVsZW1lbnRBdChpKTsKKyAgICAgICAgICAgIGlmIChnZXRUYXJnZXQpIHsKKyAgICAgICAgICAgIAlyLmFkZFRhcmdldFNldFRvKHNldCk7CisgICAgICAgICAgICB9IGVsc2UgeworCSAgICAgICAgICAgIHIuYWRkU291cmNlU2V0VG8oc2V0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc2V0OworICAgIH0KK30KKworLyogJExvZzogVHJhbnNsaXRlcmF0aW9uUnVsZVNldC5qYXZhLHYgJAorICogUmV2aXNpb24gMS4yNSAgMjAwMi8wNi8yOCAxOToxNTo1MyAgYWxhbgorICogaml0dGVyYnVnIDE0MzQ6IGltcHJvdmUgbWV0aG9kIG5hbWVzOyBtaW5vciBjbGVhbnVwCisgKgorLyogUmV2aXNpb24gMS4yNCAgMjAwMi8wNi8yNiAxODoxMjo0MCAgYWxhbgorLyogaml0dGVyYnVnIDE0MzQ6IGluaXRpYWwgcHVibGljIGltcGxlbWVudGF0aW9uIG9mIGdldFNvdXJjZVNldCBhbmQgZ2V0VGFyZ2V0U2V0CisvKgorLyogUmV2aXNpb24gMS4yMyAgMjAwMi8wMi8yNSAyMjo0Mzo1OCAgcmFtCisvKiBNb3ZlIFV0aWxpdHkgY2xhc3MgdG8gaWN1LmltcGwKKy8qCisvKiBSZXZpc2lvbiAxLjIyICAyMDAyLzAyLzE2IDAzOjA2OjE3ICBNb2hhbgorLyogSUNVNEogcmVvcmdhbml6YXRpb24KKy8qCisvKiBSZXZpc2lvbiAxLjIxICAyMDAyLzAyLzA5IDAxOjAxOjQ3ICBhbGFuCisvKiBqaXR0ZXJidWcgMTU0NDogYWRkIGNoYXIzMkF0KCkgdG8gUmVwbGFjZWFibGUKKy8qCisvKiBSZXZpc2lvbiAxLjIwICAyMDAxLzExLzI5IDIyOjMxOjE4ICBhbGFuCisvKiBqaXR0ZXJidWcgMTU2MDogYWRkIHNvdXJjZS1zZXQgbWV0aG9kcyBhbmQgVHJhbnNsaXRlcmF0b3JVdGlsaXR5IGNsYXNzCisvKgorLyogUmV2aXNpb24gMS4xOSAgMjAwMS8xMS8yOSAxNjoxMTo0NiAgYWxhbgorLyogaml0dGVyYnVnIDE1NjA6IGFkZCBkZWJ1Z2dpbmcgY29kZTsgZml4IGhhbmRsaW5nIG9mIHJ1bnM7IGRldGVjdCBpbmNvbXBsZXRlIG5vbi1pbmNyZW1lbnRhbCBwcm9jZXNzaW5nCisvKgorLyogUmV2aXNpb24gMS4xOCAgMjAwMS8xMS8yNyAyMTo1NzowNSAgYWxhbgorLyogaml0dGVyYnVnIDEzODk6IGluY29ycG9yYXRlIE1hcmsncyByZXZpZXcgY29tbWVudHMgLSBjb21tZW50cyBvbmx5CisvKgorLyogUmV2aXNpb24gMS4xNyAgMjAwMS8xMS8wNiAwNTowNjoyNiAgYWxhbgorLyogaml0dGVyYnVnIDYwOiBtYWtlIHRvUnVsZXMoKSByZWFkIGZyb20gb3JpZ2luYWwgdmVjdG9yCisvKgorLyogUmV2aXNpb24gMS4xNiAgMjAwMS8xMS8wNSAxODo1NTo1NCAgYWxhbgorLyogaml0dGVyYnVnIDYwOiBlbGlkZSBkdXBsaWNhdGUgcnVsZXMgaW4gdG9SdWxlcygpCisvKgorLyogUmV2aXNpb24gMS4xNSAgMjAwMS8xMC8yNiAyMjo0ODo0MSAgYWxhbgorLyogaml0dGVyYnVnIDY4OiBhZGQgREVCVUcgc3VwcG9ydCB0byBkdW1wIHJ1bGUtYmFzZWQgbWF0Y2ggcHJvZ3Jlc3Npb24KKy8qCisgKiBSZXZpc2lvbiAxLjE0ICAyMDAxLzEwLzI1IDIyOjMzOjE5ICBhbGFuCisgKiBqaXR0ZXJidWcgNzM6IHVzZSBpbnQgZm9yIGluZGV4IHZhbHVlcyB0byBhdm9pZCBzaWduZWRuZXNzIHByb2JsZW1zCisgKgorICogUmV2aXNpb24gMS4xMyAgMjAwMS8wOS8yNiAxODoxNzo0MiAgYWxhbgorICogaml0dGVyYnVnIDY3OiBkZWxldGUgb2Jzb2xldGUgY29kZQorICoKKyAqIFJldmlzaW9uIDEuMTIgIDIwMDEvMDkvMjYgMTg6MDA6MDYgIGFsYW4KKyAqIGppdHRlcmJ1ZyA2Nzogc3luYyBwYXJzZXIgd2l0aCBpY3U0YywgYWxsb3cgdW5saW1pdGVkLCBuZXN0ZWQgc2VnbWVudHMKKyAqCisgKiBSZXZpc2lvbiAxLjExICAyMDAxLzA5LzE5IDE3OjQzOjM4ICBhbGFuCisgKiBqaXR0ZXJidWcgNjA6IGluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgdG9SdWxlcygpCisgKgorICogUmV2aXNpb24gMS4xMCAgMjAwMC8wNi8yOSAyMTo1OToyMyAgYWxhbjRqCisgKiBGaXggaGFuZGxpbmcgb2YgVHJhbnNsaXRlcmF0b3IuUG9zaXRpb24gZmllbGRzCisgKgorICogUmV2aXNpb24gMS45ICAyMDAwLzAzLzEwIDA0OjA3OjI0ICBqb2huZgorICogQ29weXJpZ2h0IHVwZGF0ZQorICoKKyAqIFJldmlzaW9uIDEuOCAgMjAwMC8wMi8wMyAxODoxMToxOSAgQWxhbgorICogVXNlIGFycmF5IHJhdGhlciB0aGFuIGhhc2h0YWJsZSBmb3IgY2hhci10by1zZXQgbWFwCisgKgorICogUmV2aXNpb24gMS43ICAyMDAwLzAxLzI3IDE4OjU5OjE5ICBBbGFuCisgKiBVc2UgUG9zaXRpb24gcmF0aGVyIHRoYW4gaW50W10gYW5kIG1vdmUgYWxsIHN1YmNsYXNzIG92ZXJyaWRlcyB0byBvbmUgbWV0aG9kIChoYW5kbGVUcmFuc2xpdGVyYXRlKQorICoKKyAqIFJldmlzaW9uIDEuNiAgMjAwMC8wMS8xOCAyMDozNjoxNyAgQWxhbgorICogTWFrZSBVbmljb2RlU2V0IGluaGVyaXQgZnJvbSBVbmljb2RlRmlsdGVyCisgKgorICogUmV2aXNpb24gMS41ICAyMDAwLzAxLzA0IDIxOjQzOjU3ICBBbGFuCisgKiBBZGQgcnVsZSBpbmRleGluZywgYW5kIG1vdmUgbWFza2luZyBjaGVjayB0byBUcmFuc2xpdGVyYXRpb25SdWxlU2V0LgorICoKKyAqIFJldmlzaW9uIDEuNCAgMTk5OS8xMi8yMiAwMTo0MDo1NCAgQWxhbgorICogQ29uc29saWRhdGUgcnVsZSBwYXR0ZXJuIGFudGVDb250ZXh0LCBrZXksIGFuZCBwb3N0Q29udGV4dCBpbnRvIG9uZSBzdHJpbmcuCisgKgorICogUmV2aXNpb24gMS4zICAxOTk5LzEyLzIyIDAxOjA1OjU0ICBBbGFuCisgKiBJbXByb3ZlIG1hc2tpbmcgY2hlY2tpbmc7IHR1cm4gaXQgb2ZmIGJ5IGRlZmF1bHQsIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UKKyAqCisgKiBSZXZpc2lvbiAxLjIgIDE5OTkvMTIvMjIgMDA6MDE6MzYgIEFsYW4KKyAqIERldGVjdCBhPnggbWFza2luZyBhPnkKKyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3RleHQvVHJhbnNsaXRlcmF0b3IuamF2YSBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L1RyYW5zbGl0ZXJhdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZDYzM2I0MgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L1RyYW5zbGl0ZXJhdG9yLmphdmEKQEAgLTAsMCArMSwxODAwIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvdGV4dC9UcmFuc2xpdGVyYXRvci5qYXZhLHYgJAorICogJERhdGU6IDIwMDIvMTIvMDUgMDE6MjI6MzUgJAorICogJFJldmlzaW9uOiAxLjg2ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS50ZXh0OworCitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5JQ1VMb2NhbGVEYXRhOworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuZGF0YS5SZXNvdXJjZVJlYWRlcjsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLlV0aWxpdHk7CitpbXBvcnQgY29tLmlibS5pY3UudXRpbC5DYXNlSW5zZW5zaXRpdmVTdHJpbmc7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5VQ2hhcmFjdGVyUHJvcGVydHk7CisKK2ltcG9ydCBqYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb247CitpbXBvcnQgamF2YS50ZXh0Lk1lc3NhZ2VGb3JtYXQ7CitpbXBvcnQgamF2YS50ZXh0LlBhcnNlUG9zaXRpb247CitpbXBvcnQgamF2YS50ZXh0LlJ1bGVCYXNlZENvbGxhdG9yOworaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CitpbXBvcnQgamF2YS51dGlsLlJlc291cmNlQnVuZGxlOworaW1wb3J0IGphdmEudXRpbC5NaXNzaW5nUmVzb3VyY2VFeGNlcHRpb247CitpbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKKworLyoqCisgKiA8Y29kZT5UcmFuc2xpdGVyYXRvcjwvY29kZT4gaXMgYW4gYWJzdHJhY3QgY2xhc3MgdGhhdAorICogdHJhbnNsaXRlcmF0ZXMgdGV4dCBmcm9tIG9uZSBmb3JtYXQgdG8gYW5vdGhlci4gIFRoZSBtb3N0IGNvbW1vbgorICoga2luZCBvZiB0cmFuc2xpdGVyYXRvciBpcyBhIHNjcmlwdCwgb3IgYWxwaGFiZXQsIHRyYW5zbGl0ZXJhdG9yLgorICogRm9yIGV4YW1wbGUsIGEgUnVzc2lhbiB0byBMYXRpbiB0cmFuc2xpdGVyYXRvciBjaGFuZ2VzIFJ1c3NpYW4gdGV4dAorICogd3JpdHRlbiBpbiBDeXJpbGxpYyBjaGFyYWN0ZXJzIHRvIHBob25ldGljYWxseSBlcXVpdmFsZW50IExhdGluCisgKiBjaGFyYWN0ZXJzLiAgSXQgZG9lcyBub3QgPGVtPnRyYW5zbGF0ZTwvZW0+IFJ1c3NpYW4gdG8gRW5nbGlzaCEKKyAqIFRyYW5zbGl0ZXJhdGlvbiwgdW5saWtlIHRyYW5zbGF0aW9uLCBvcGVyYXRlcyBvbiBjaGFyYWN0ZXJzLCB3aXRob3V0CisgKiByZWZlcmVuY2UgdG8gdGhlIG1lYW5pbmdzIG9mIHdvcmRzIGFuZCBzZW50ZW5jZXMuCisgKgorICogPHA+QWx0aG91Z2ggc2NyaXB0IGNvbnZlcnNpb24gaXMgaXRzIG1vc3QgY29tbW9uIHVzZSwgYQorICogdHJhbnNsaXRlcmF0b3IgY2FuIGFjdHVhbGx5IHBlcmZvcm0gYSBtb3JlIGdlbmVyYWwgY2xhc3Mgb2YgdGFza3MuCisgKiBJbiBmYWN0LCA8Y29kZT5UcmFuc2xpdGVyYXRvcjwvY29kZT4gZGVmaW5lcyBhIHZlcnkgZ2VuZXJhbCBBUEkKKyAqIHdoaWNoIHNwZWNpZmllcyBvbmx5IHRoYXQgYSBzZWdtZW50IG9mIHRoZSBpbnB1dCB0ZXh0IGlzIHJlcGxhY2VkCisgKiBieSBuZXcgdGV4dC4gIFRoZSBwYXJ0aWN1bGFycyBvZiB0aGlzIGNvbnZlcnNpb24gYXJlIGRldGVybWluZWQKKyAqIGVudGlyZWx5IGJ5IHN1YmNsYXNzZXMgb2YgPGNvZGU+VHJhbnNsaXRlcmF0b3I8L2NvZGU+LgorICoKKyAqIDxwPjxiPlRyYW5zbGl0ZXJhdG9ycyBhcmUgc3RhdGVsZXNzPC9iPgorICoKKyAqIDxwPjxjb2RlPlRyYW5zbGl0ZXJhdG9yPC9jb2RlPiBvYmplY3RzIGFyZSA8ZW0+c3RhdGVsZXNzPC9lbT47IHRoZXkKKyAqIHJldGFpbiBubyBpbmZvcm1hdGlvbiBiZXR3ZWVuIGNhbGxzIHRvCisgKiA8Y29kZT50cmFuc2xpdGVyYXRlKCk8L2NvZGU+LiAgQXMgYSByZXN1bHQsIHRocmVhZHMgbWF5IHNoYXJlCisgKiB0cmFuc2xpdGVyYXRvcnMgd2l0aG91dCBzeW5jaHJvbml6aW5nIHRoZW0uICBUaGlzIG1pZ2h0IHNlZW0gdG8KKyAqIGxpbWl0IHRoZSBjb21wbGV4aXR5IG9mIHRoZSB0cmFuc2xpdGVyYXRpb24gb3BlcmF0aW9uLiAgSW4KKyAqIHByYWN0aWNlLCBzdWJjbGFzc2VzIHBlcmZvcm0gY29tcGxleCB0cmFuc2xpdGVyYXRpb25zIGJ5IGRlbGF5aW5nCisgKiB0aGUgcmVwbGFjZW1lbnQgb2YgdGV4dCB1bnRpbCBpdCBpcyBrbm93biB0aGF0IG5vIG90aGVyCisgKiByZXBsYWNlbWVudHMgYXJlIHBvc3NpYmxlLiAgSW4gb3RoZXIgd29yZHMsIGFsdGhvdWdoIHRoZQorICogPGNvZGU+VHJhbnNsaXRlcmF0b3I8L2NvZGU+IG9iamVjdHMgYXJlIHN0YXRlbGVzcywgdGhlIHNvdXJjZSB0ZXh0CisgKiBpdHNlbGYgZW1ib2RpZXMgYWxsIHRoZSBuZWVkZWQgaW5mb3JtYXRpb24sIGFuZCBkZWxheWVkIG9wZXJhdGlvbgorICogYWxsb3dzIGFyYml0cmFyeSBjb21wbGV4aXR5LgorICoKKyAqIDxwPjxiPkJhdGNoIHRyYW5zbGl0ZXJhdGlvbjwvYj4KKyAqCisgKiA8cD5UaGUgc2ltcGxlc3Qgd2F5IHRvIHBlcmZvcm0gdHJhbnNsaXRlcmF0aW9uIGlzIGFsbCBhdCBvbmNlLCBvbiBhCisgKiBzdHJpbmcgb2YgZXhpc3RpbmcgdGV4dC4gIFRoaXMgaXMgcmVmZXJyZWQgdG8gYXMgPGVtPmJhdGNoPC9lbT4KKyAqIHRyYW5zbGl0ZXJhdGlvbi4gIEZvciBleGFtcGxlLCBnaXZlbiBhIHN0cmluZyA8Y29kZT5pbnB1dDwvY29kZT4KKyAqIGFuZCBhIHRyYW5zbGl0ZXJhdG9yIDxjb2RlPnQ8L2NvZGU+LCB0aGUgY2FsbAorICoKKyAqIDxibG9ja3F1b3RlPjxjb2RlPlN0cmluZyByZXN1bHQgPSB0LnRyYW5zbGl0ZXJhdGUoaW5wdXQpOworICogPC9jb2RlPjwvYmxvY2txdW90ZT4KKyAqCisgKiB3aWxsIHRyYW5zbGl0ZXJhdGUgaXQgYW5kIHJldHVybiB0aGUgcmVzdWx0LiAgT3RoZXIgbWV0aG9kcyBhbGxvdworICogdGhlIGNsaWVudCB0byBzcGVjaWZ5IGEgc3Vic3RyaW5nIHRvIGJlIHRyYW5zbGl0ZXJhdGVkIGFuZCB0byB1c2UKKyAqIHtAbGluayBSZXBsYWNlYWJsZX0gb2JqZWN0cyBpbnN0ZWFkIG9mIHN0cmluZ3MsIGluIG9yZGVyIHRvCisgKiBwcmVzZXJ2ZSBvdXQtb2YtYmFuZCBpbmZvcm1hdGlvbiAoc3VjaCBhcyB0ZXh0IHN0eWxlcykuCisgKgorICogPHA+PGI+S2V5Ym9hcmQgdHJhbnNsaXRlcmF0aW9uPC9iPgorICoKKyAqIDxwPlNvbWV3aGF0IG1vcmUgaW52b2x2ZWQgaXMgPGVtPmtleWJvYXJkPC9lbT4sIG9yIGluY3JlbWVudGFsCisgKiB0cmFuc2xpdGVyYXRpb24uICBUaGlzIGlzIHRoZSB0cmFuc2xpdGVyYXRpb24gb2YgdGV4dCB0aGF0IGlzCisgKiBhcnJpdmluZyBmcm9tIHNvbWUgc291cmNlICh0eXBpY2FsbHkgdGhlIHVzZXIncyBrZXlib2FyZCkgb25lCisgKiBjaGFyYWN0ZXIgYXQgYSB0aW1lLCBvciBpbiBzb21lIG90aGVyIHBpZWNlbWVhbCBmYXNoaW9uLgorICoKKyAqIDxwPkluIGtleWJvYXJkIHRyYW5zbGl0ZXJhdGlvbiwgYSA8Y29kZT5SZXBsYWNlYWJsZTwvY29kZT4gYnVmZmVyCisgKiBzdG9yZXMgdGhlIHRleHQuICBBcyB0ZXh0IGlzIGluc2VydGVkLCBhcyBtdWNoIGFzIHBvc3NpYmxlIGlzCisgKiB0cmFuc2xpdGVyYXRlZCBvbiB0aGUgZmx5LiAgVGhpcyBtZWFucyBhIEdVSSB0aGF0IGRpc3BsYXlzIHRoZQorICogY29udGVudHMgb2YgdGhlIGJ1ZmZlciBtYXkgc2hvdyB0ZXh0IGJlaW5nIG1vZGlmaWVkIGFzIGVhY2ggbmV3CisgKiBjaGFyYWN0ZXIgYXJyaXZlcy4KKyAqCisgKiA8cD5Db25zaWRlciB0aGUgc2ltcGxlIDxjb2RlPlJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yPC9jb2RlPjoKKyAqCisgKiA8YmxvY2txdW90ZT48Y29kZT4KKyAqIHRoJmd0O3t0aGV0YX08YnI+CisgKiB0Jmd0O3t0YXV9CisgKiA8L2NvZGU+PC9ibG9ja3F1b3RlPgorICoKKyAqIFdoZW4gdGhlIHVzZXIgdHlwZXMgJ3QnLCBub3RoaW5nIHdpbGwgaGFwcGVuLCBzaW5jZSB0aGUKKyAqIHRyYW5zbGl0ZXJhdG9yIGlzIHdhaXRpbmcgdG8gc2VlIGlmIHRoZSBuZXh0IGNoYXJhY3RlciBpcyAnaCcuICBUbworICogcmVtZWR5IHRoaXMsIHdlIGludHJvZHVjZSB0aGUgbm90aW9uIG9mIGEgY3Vyc29yLCBtYXJrZWQgYnkgYSAnfCcKKyAqIGluIHRoZSBvdXRwdXQgc3RyaW5nOgorICoKKyAqIDxibG9ja3F1b3RlPjxjb2RlPgorICogdCZndDt8e3RhdX08YnI+CisgKiB7dGF1fWgmZ3Q7e3RoZXRhfQorICogPC9jb2RlPjwvYmxvY2txdW90ZT4KKyAqCisgKiBOb3cgd2hlbiB0aGUgdXNlciB0eXBlcyAndCcsIHRhdSBhcHBlYXJzLCBhbmQgaWYgdGhlIG5leHQgY2hhcmFjdGVyCisgKiBpcyAnaCcsIHRoZSB0YXUgY2hhbmdlcyB0byBhIHRoZXRhLiAgVGhpcyBpcyBhY2NvbXBsaXNoZWQgYnkKKyAqIG1haW50YWluaW5nIGEgY3Vyc29yIHBvc2l0aW9uIChpbmRlcGVuZGVudCBvZiB0aGUgaW5zZXJ0aW9uIHBvaW50LAorICogYW5kIGludmlzaWJsZSBpbiB0aGUgR1VJKSBhY3Jvc3MgY2FsbHMgdG8KKyAqIDxjb2RlPnRyYW5zbGl0ZXJhdGUoKTwvY29kZT4uICBUeXBpY2FsbHksIHRoZSBjdXJzb3Igd2lsbAorICogYmUgY29pbmNpZGVudCB3aXRoIHRoZSBpbnNlcnRpb24gcG9pbnQsIGJ1dCBpbiBhIGNhc2UgbGlrZSB0aGUgb25lCisgKiBhYm92ZSwgaXQgd2lsbCBwcmVjZWRlIHRoZSBpbnNlcnRpb24gcG9pbnQuCisgKgorICogPHA+S2V5Ym9hcmQgdHJhbnNsaXRlcmF0aW9uIG1ldGhvZHMgbWFpbnRhaW4gYSBzZXQgb2YgdGhyZWUgaW5kaWNlcworICogdGhhdCBhcmUgdXBkYXRlZCB3aXRoIGVhY2ggY2FsbCB0bworICogPGNvZGU+dHJhbnNsaXRlcmF0ZSgpPC9jb2RlPiwgaW5jbHVkaW5nIHRoZSBjdXJzb3IsIHN0YXJ0LAorICogYW5kIGxpbWl0LiAgVGhlc2UgaW5kaWNlcyBhcmUgY2hhbmdlZCBieSB0aGUgbWV0aG9kLCBhbmQgdGhleSBhcmUKKyAqIHBhc3NlZCBpbiBhbmQgb3V0IHZpYSBhIFBvc2l0aW9uIG9iamVjdC4gVGhlIDxjb2RlPnN0YXJ0PC9jb2RlPiBpbmRleAorICogbWFya3MgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3Vic3RyaW5nIHRoYXQgdGhlIHRyYW5zbGl0ZXJhdG9yIHdpbGwKKyAqIGxvb2sgYXQuICBJdCBpcyBhZHZhbmNlZCBhcyB0ZXh0IGJlY29tZXMgY29tbWl0dGVkIChidXQgaXQgaXMgbm90CisgKiB0aGUgY29tbWl0dGVkIGluZGV4OyB0aGF0J3MgdGhlIDxjb2RlPmN1cnNvcjwvY29kZT4pLiAgVGhlCisgKiA8Y29kZT5jdXJzb3I8L2NvZGU+IGluZGV4LCBkZXNjcmliZWQgYWJvdmUsIG1hcmtzIHRoZSBwb2ludCBhdAorICogd2hpY2ggdGhlIHRyYW5zbGl0ZXJhdG9yIGxhc3Qgc3RvcHBlZCwgZWl0aGVyIGJlY2F1c2UgaXQgcmVhY2hlZAorICogdGhlIGVuZCwgb3IgYmVjYXVzZSBpdCByZXF1aXJlZCBtb3JlIGNoYXJhY3RlcnMgdG8gZGlzYW1iaWd1YXRlCisgKiBiZXR3ZWVuIHBvc3NpYmxlIGlucHV0cy4gIFRoZSA8Y29kZT5jdXJzb3I8L2NvZGU+IGNhbiBhbHNvIGJlCisgKiBleHBsaWNpdGx5IHNldCBieSBydWxlcyBpbiBhIDxjb2RlPlJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yPC9jb2RlPi4KKyAqIEFueSBjaGFyYWN0ZXJzIGJlZm9yZSB0aGUgPGNvZGU+Y3Vyc29yPC9jb2RlPiBpbmRleCBhcmUgZnJvemVuOworICogZnV0dXJlIGtleWJvYXJkIHRyYW5zbGl0ZXJhdGlvbiBjYWxscyB3aXRoaW4gdGhpcyBpbnB1dCBzZXF1ZW5jZQorICogd2lsbCBub3QgY2hhbmdlIHRoZW0uICBOZXcgdGV4dCBpcyBpbnNlcnRlZCBhdCB0aGUKKyAqIDxjb2RlPmxpbWl0PC9jb2RlPiBpbmRleCwgd2hpY2ggbWFya3MgdGhlIGVuZCBvZiB0aGUgc3Vic3RyaW5nIHRoYXQKKyAqIHRoZSB0cmFuc2xpdGVyYXRvciBsb29rcyBhdC4KKyAqCisgKiA8cD5CZWNhdXNlIGtleWJvYXJkIHRyYW5zbGl0ZXJhdGlvbiBhc3N1bWVzIHRoYXQgbW9yZSBjaGFyYWN0ZXJzCisgKiBhcmUgdG8gYXJyaXZlLCBpdCBpcyBjb25zZXJ2YXRpdmUgaW4gaXRzIG9wZXJhdGlvbi4gIEl0IG9ubHkKKyAqIHRyYW5zbGl0ZXJhdGVzIHdoZW4gaXQgY2FuIGRvIHNvIHVuYW1iaWd1b3VzbHkuICBPdGhlcndpc2UgaXQgd2FpdHMKKyAqIGZvciBtb3JlIGNoYXJhY3RlcnMgdG8gYXJyaXZlLiAgV2hlbiB0aGUgY2xpZW50IGNvZGUga25vd3MgdGhhdCBubworICogbW9yZSBjaGFyYWN0ZXJzIGFyZSBmb3J0aGNvbWluZywgcGVyaGFwcyBiZWNhdXNlIHRoZSB1c2VyIGhhcworICogcGVyZm9ybWVkIHNvbWUgaW5wdXQgdGVybWluYXRpb24gb3BlcmF0aW9uLCB0aGVuIGl0IHNob3VsZCBjYWxsCisgKiA8Y29kZT5maW5pc2hUcmFuc2xpdGVyYXRpb24oKTwvY29kZT4gdG8gY29tcGxldGUgYW55CisgKiBwZW5kaW5nIHRyYW5zbGl0ZXJhdGlvbnMuCisgKgorICogPHA+PGI+SW52ZXJzZXM8L2I+CisgKgorICogPHA+UGFpcnMgb2YgdHJhbnNsaXRlcmF0b3JzIG1heSBiZSBpbnZlcnNlcyBvZiBvbmUgYW5vdGhlci4gIEZvcgorICogZXhhbXBsZSwgaWYgdHJhbnNsaXRlcmF0b3IgPGI+QTwvYj4gdHJhbnNsaXRlcmF0ZXMgY2hhcmFjdGVycyBieQorICogaW5jcmVtZW50aW5nIHRoZWlyIFVuaWNvZGUgdmFsdWUgKHNvICJhYmMiIC0+ICJkZWYiKSwgYW5kCisgKiB0cmFuc2xpdGVyYXRvciA8Yj5CPC9iPiBkZWNyZW1lbnRzIGNoYXJhY3RlciB2YWx1ZXMsIHRoZW4gPGI+QTwvYj4KKyAqIGlzIGFuIGludmVyc2Ugb2YgPGI+QjwvYj4gYW5kIHZpY2UgdmVyc2EuICBJZiB3ZSBjb21wb3NlIDxiPkE8L2I+CisgKiB3aXRoIDxiPkI8L2I+IGluIGEgY29tcG91bmQgdHJhbnNsaXRlcmF0b3IsIHRoZSByZXN1bHQgaXMgdGhlCisgKiBpbmRlbnRpdHkgdHJhbnNsaXRlcmF0b3IsIHRoYXQgaXMsIGEgdHJhbnNsaXRlcmF0b3IgdGhhdCBkb2VzIG5vdAorICogY2hhbmdlIGl0cyBpbnB1dCB0ZXh0LgorICoKKyAqIFRoZSA8Y29kZT5UcmFuc2xpdGVyYXRvcjwvY29kZT4gbWV0aG9kIDxjb2RlPmdldEludmVyc2UoKTwvY29kZT4KKyAqIHJldHVybnMgYSB0cmFuc2xpdGVyYXRvcidzIGludmVyc2UsIGlmIG9uZSBleGlzdHMsIG9yCisgKiA8Y29kZT5udWxsPC9jb2RlPiBvdGhlcndpc2UuICBIb3dldmVyLCB0aGUgcmVzdWx0IG9mCisgKiA8Y29kZT5nZXRJbnZlcnNlKCk8L2NvZGU+IHVzdWFsbHkgd2lsbCA8ZW0+bm90PC9lbT4gYmUgYSB0cnVlCisgKiBtYXRoZW1hdGljYWwgaW52ZXJzZS4gIFRoaXMgaXMgYmVjYXVzZSB0cnVlIGludmVyc2UgdHJhbnNsaXRlcmF0b3JzCisgKiBhcmUgZGlmZmljdWx0IHRvIGZvcm11bGF0ZS4gIEZvciBleGFtcGxlLCBjb25zaWRlciB0d28KKyAqIHRyYW5zbGl0ZXJhdG9yczogPGI+QUI8L2I+LCB3aGljaCB0cmFuc2xpdGVyYXRlcyB0aGUgY2hhcmFjdGVyICdBJworICogdG8gJ0InLCBhbmQgPGI+QkE8L2I+LCB3aGljaCB0cmFuc2xpdGVyYXRlcyAnQicgdG8gJ0EnLiAgSXQgbWlnaHQKKyAqIHNlZW0gdGhhdCB0aGVzZSBhcmUgZXhhY3QgaW52ZXJzZXMsIHNpbmNlCisgKgorICogPGJsb2NrcXVvdGU+IkEiIHggPGI+QUI8L2I+IC0+ICJCIjxicj4KKyAqICJCIiB4IDxiPkJBPC9iPiAtPiAiQSI8L2Jsb2NrcXVvdGU+CisgKgorICogd2hlcmUgJ3gnIHJlcHJlc2VudHMgdHJhbnNsaXRlcmF0aW9uLiAgSG93ZXZlciwKKyAqCisgKiA8YmxvY2txdW90ZT4iQUJDRCIgeCA8Yj5BQjwvYj4gLT4gIkJCQ0QiPGJyPgorICogIkJCQ0QiIHggPGI+QkE8L2I+IC0+ICJBQUNEIjwvYmxvY2txdW90ZT4KKyAqCisgKiBzbyA8Yj5BQjwvYj4gY29tcG9zZWQgd2l0aCA8Yj5CQTwvYj4gaXMgbm90IHRoZQorICogaWRlbnRpdHkuIE5vbmV0aGVsZXNzLCA8Yj5CQTwvYj4gbWF5IGJlIHVzZWZ1bGx5IGNvbnNpZGVyZWQgdG8gYmUKKyAqIDxiPkFCPC9iPidzIGludmVyc2UsIGFuZCBpdCBpcyBvbiB0aGlzIGJhc2lzIHRoYXQKKyAqIDxiPkFCPC9iPjxjb2RlPi5nZXRJbnZlcnNlKCk8L2NvZGU+IGNvdWxkIGxlZ2l0aW1hdGVseSByZXR1cm4KKyAqIDxiPkJBPC9iPi4KKyAqCisgKiA8cD48Yj5JRHMgYW5kIGRpc3BsYXkgbmFtZXM8L2I+CisgKgorICogPHA+QSB0cmFuc2xpdGVyYXRvciBpcyBkZXNpZ25hdGVkIGJ5IGEgc2hvcnQgaWRlbnRpZmllciBzdHJpbmcgb3IKKyAqIDxlbT5JRDwvZW0+LiAgSURzIGZvbGxvdyB0aGUgZm9ybWF0IDxlbT5zb3VyY2UtZGVzdGluYXRpb248L2VtPiwKKyAqIHdoZXJlIDxlbT5zb3VyY2U8L2VtPiBkZXNjcmliZXMgdGhlIGVudGl0eSBiZWluZyByZXBsYWNlZCwgYW5kCisgKiA8ZW0+ZGVzdGluYXRpb248L2VtPiBkZXNjcmliZXMgdGhlIGVudGl0eSByZXBsYWNpbmcKKyAqIDxlbT5zb3VyY2U8L2VtPi4gIFRoZSBlbnRpdGllcyBtYXkgYmUgdGhlIG5hbWVzIG9mIHNjcmlwdHMsCisgKiBwYXJ0aWN1bGFyIHNlcXVlbmNlcyBvZiBjaGFyYWN0ZXJzLCBvciB3aGF0ZXZlciBlbHNlIGl0IGlzIHRoYXQgdGhlCisgKiB0cmFuc2xpdGVyYXRvciBjb252ZXJ0cyB0byBvciBmcm9tLiAgRm9yIGV4YW1wbGUsIGEgdHJhbnNsaXRlcmF0b3IKKyAqIGZyb20gUnVzc2lhbiB0byBMYXRpbiBtaWdodCBiZSBuYW1lZCAiUnVzc2lhbi1MYXRpbiIuICBBCisgKiB0cmFuc2xpdGVyYXRvciBmcm9tIGtleWJvYXJkIGVzY2FwZSBzZXF1ZW5jZXMgdG8gTGF0aW4tMSBjaGFyYWN0ZXJzCisgKiBtaWdodCBiZSBuYW1lZCAiS2V5Ym9hcmRFc2NhcGUtTGF0aW4xIi4gIEJ5IGNvbnZlbnRpb24sIHN5c3RlbQorICogZW50aXR5IG5hbWVzIGFyZSBpbiBFbmdsaXNoLCB3aXRoIHRoZSBpbml0aWFsIGxldHRlcnMgb2Ygd29yZHMKKyAqIGNhcGl0YWxpemVkOyB1c2VyIGVudGl0eSBuYW1lcyBtYXkgZm9sbG93IGFueSBmb3JtYXQgc28gbG9uZyBhcworICogdGhleSBkbyBub3QgY29udGFpbiBkYXNoZXMuCisgKgorICogPHA+SW4gYWRkaXRpb24gdG8gcHJvZ3JhbW1hdGljIElEcywgdHJhbnNsaXRlcmF0b3Igb2JqZWN0cyBoYXZlCisgKiBkaXNwbGF5IG5hbWVzIGZvciBwcmVzZW50YXRpb24gaW4gdXNlciBpbnRlcmZhY2VzLCByZXR1cm5lZCBieQorICoge0BsaW5rICNnZXREaXNwbGF5TmFtZX0uCisgKgorICogPHA+PGI+RmFjdG9yeSBtZXRob2RzIGFuZCByZWdpc3RyYXRpb248L2I+CisgKgorICogPHA+SW4gZ2VuZXJhbCwgY2xpZW50IGNvZGUgc2hvdWxkIHVzZSB0aGUgZmFjdG9yeSBtZXRob2QKKyAqIDxjb2RlPmdldEluc3RhbmNlKCk8L2NvZGU+IHRvIG9idGFpbiBhbiBpbnN0YW5jZSBvZiBhCisgKiB0cmFuc2xpdGVyYXRvciBnaXZlbiBpdHMgSUQuICBWYWxpZCBJRHMgbWF5IGJlIGVudW1lcmF0ZWQgdXNpbmcKKyAqIDxjb2RlPmdldEF2YWlsYWJsZUlEcygpPC9jb2RlPi4gIFNpbmNlIHRyYW5zbGl0ZXJhdG9ycyBhcmUKKyAqIHN0YXRlbGVzcywgbXVsdGlwbGUgY2FsbHMgdG8gPGNvZGU+Z2V0SW5zdGFuY2UoKTwvY29kZT4gd2l0aCB0aGUKKyAqIHNhbWUgSUQgd2lsbCByZXR1cm4gdGhlIHNhbWUgb2JqZWN0LgorICoKKyAqIDxwPkluIGFkZGl0aW9uIHRvIHRoZSBzeXN0ZW0gdHJhbnNsaXRlcmF0b3JzIHJlZ2lzdGVyZWQgYXQgc3RhcnR1cCwKKyAqIHVzZXIgdHJhbnNsaXRlcmF0b3JzIG1heSBiZSByZWdpc3RlcmVkIGJ5IGNhbGxpbmcKKyAqIDxjb2RlPnJlZ2lzdGVySW5zdGFuY2UoKTwvY29kZT4gYXQgcnVuIHRpbWUuICBUbyByZWdpc3RlciBhCisgKiB0cmFuc2xpdGVyYXRvciBzdWJjbGFzcyB3aXRob3V0IGluc3RhbnRpYXRpbmcgaXQgKHVudGlsIGl0IGlzCisgKiBuZWVkZWQpLCB1c2VycyBtYXkgY2FsbCA8Y29kZT5yZWdpc3RlckNsYXNzKCk8L2NvZGU+LgorICoKKyAqIDxwPjxiPkNvbXBvc2VkIHRyYW5zbGl0ZXJhdG9yczwvYj4KKyAqCisgKiA8cD5JbiBhZGRpdGlvbiB0byBidWlsdC1pbiBzeXN0ZW0gdHJhbnNsaXRlcmF0b3JzIGxpa2UKKyAqICJMYXRpbi1HcmVlayIsIHRoZXJlIGFyZSBhbHNvIGJ1aWx0LWluIDxlbT5jb21wb3NlZDwvZW0+CisgKiB0cmFuc2xpdGVyYXRvcnMuICBUaGVzZSBhcmUgaW1wbGVtZW50ZWQgYnkgY29tcG9zaW5nIHR3byBvciBtb3JlCisgKiBjb21wb25lbnQgdHJhbnNsaXRlcmF0b3JzLiAgRm9yIGV4YW1wbGUsIGlmIHdlIGhhdmUgc2NyaXB0cyAiQSIsCisgKiAiQiIsICJDIiwgYW5kICJEIiwgYW5kIHdlIHdhbnQgdG8gdHJhbnNsaXRlcmF0ZSBiZXR3ZWVuIGFsbCBwYWlycworICogb2YgdGhlbSwgdGhlbiB3ZSBuZWVkIHRvIHdyaXRlIDEyIHRyYW5zbGl0ZXJhdG9yczogIkEtQiIsICJBLUMiLAorICogIkEtRCIsICJCLUEiLC4uLiwgIkQtQSIsICJELUIiLCAiRC1DIi4gIElmIGl0IGlzIHBvc3NpYmxlIHRvCisgKiBjb252ZXJ0IGFsbCBzY3JpcHRzIHRvIGFuIGludGVybWVkaWF0ZSBzY3JpcHQgIk0iLCB0aGVuIGluc3RlYWQgb2YKKyAqIHdyaXRpbmcgMTIgcnVsZSBzZXRzLCB3ZSBvbmx5IG5lZWQgdG8gd3JpdGUgODogIkF+TSIsICJCfk0iLCAiQ35NIiwKKyAqICJEfk0iLCAiTX5BIiwgIk1+QiIsICJNfkMiLCAiTX5EIi4gIChUaGlzIG1pZ2h0IG5vdCBzZWVtIGxpa2UgYSBiaWcKKyAqIHdpbiwgYnV0IGl0J3MgcmVhbGx5IDI8ZW0+bjwvZW0+IHZzLiA8ZW0+bjwvZW0+PHN1cD4yPC9zdXA+IC0KKyAqIDxlbT5uPC9lbT4sIHNvIGFzIDxlbT5uPC9lbT4gZ2V0cyBsYXJnZXIgdGhlIGdhaW4gYmVjb21lcworICogc2lnbmlmaWNhbnQuICBXaXRoIDkgc2NyaXB0cywgaXQncyAxOCB2cy4gNzIgcnVsZSBzZXRzLCBhIGJpZworICogZGlmZmVyZW5jZS4pICBOb3RlIHRoZSB1c2Ugb2YgIn4iIHJhdGhlciB0aGFuICItIiBmb3IgdGhlIHNjcmlwdAorICogc2VwYXJhdG9yIGhlcmU7IHRoaXMgaW5kaWNhdGVzIHRoYXQgdGhlIGdpdmVuIHRyYW5zbGl0ZXJhdG9yIGlzCisgKiBpbnRlbmRlZCB0byBiZSBjb21wb3NlZCB3aXRoIG90aGVycywgcmF0aGVyIHRoYW4gYmUgdXNlZCBhcyBpcy4KKyAqCisgKiA8cD5Db21wb3NlZCB0cmFuc2xpdGVyYXRvcnMgY2FuIGJlIGluc3RhbnRpYXRlZCBhcyB1c3VhbC4gIEZvcgorICogZXhhbXBsZSwgdGhlIHN5c3RlbSB0cmFuc2xpdGVyYXRvciAiRGV2YW5hZ2FyaS1HdWphcmF0aSIgaXMgYQorICogY29tcG9zZWQgdHJhbnNsaXRlcmF0b3IgYnVpbHQgaW50ZXJuYWxseSBhcworICogIkRldmFuYWdhcml+SW50ZXJJbmRpYztJbnRlckluZGljfkd1amFyYXRpIi4gIFdoZW4gdGhpcworICogdHJhbnNsaXRlcmF0b3IgaXMgaW5zdGFudGlhdGVkLCBpdCBhcHBlYXJzIGV4dGVybmFsbHkgdG8gYmUgYQorICogc3RhbmRhcmQgdHJhbnNsaXRlcmF0b3IgKGUuZy4sIGdldElEKCkgcmV0dXJucworICogIkRldmFuYWdhcmktR3VqYXJhdGkiKS4KKyAqCisgKiA8cD48Yj5TdWJjbGFzc2luZzwvYj4KKyAqCisgKiA8cD5TdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IHRoZSBhYnN0cmFjdCBtZXRob2QKKyAqIDxjb2RlPmhhbmRsZVRyYW5zbGl0ZXJhdGUoKTwvY29kZT4uICA8cD5TdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZQorICogdGhlIDxjb2RlPnRyYW5zbGl0ZXJhdGUoKTwvY29kZT4gbWV0aG9kIHRha2luZyBhCisgKiA8Y29kZT5SZXBsYWNlYWJsZTwvY29kZT4gYW5kIHRoZSA8Y29kZT50cmFuc2xpdGVyYXRlKCk8L2NvZGU+CisgKiBtZXRob2QgdGFraW5nIGEgPGNvZGU+U3RyaW5nPC9jb2RlPiBhbmQgPGNvZGU+U3RyaW5nQnVmZmVyPC9jb2RlPgorICogaWYgdGhlIHBlcmZvcm1hbmNlIG9mIHRoZXNlIG1ldGhvZHMgY2FuIGJlIGltcHJvdmVkIG92ZXIgdGhlCisgKiBwZXJmb3JtYW5jZSBvYnRhaW5lZCBieSB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbnMgaW4gdGhpcyBjbGFzcy4KKyAqCisgKiA8cD5Db3B5cmlnaHQgJmNvcHk7IElCTSBDb3Jwb3JhdGlvbiAxOTk5LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBAYXV0aG9yIEFsYW4gTGl1CisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworcHVibGljIGFic3RyYWN0IGNsYXNzIFRyYW5zbGl0ZXJhdG9yIHsKKyAgICAvKioKKyAgICAgKiBEaXJlY3Rpb24gY29uc3RhbnQgaW5kaWNhdGluZyB0aGUgZm9yd2FyZCBkaXJlY3Rpb24gaW4gYSB0cmFuc2xpdGVyYXRvciwKKyAgICAgKiBlLmcuLCB0aGUgZm9yd2FyZCBydWxlcyBvZiBhIFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yLiAgQW4gIkEtQiIKKyAgICAgKiB0cmFuc2xpdGVyYXRvciB0cmFuc2xpdGVyYXRlcyBBIHRvIEIgd2hlbiBvcGVyYXRpbmcgaW4gdGhlIGZvcndhcmQKKyAgICAgKiBkaXJlY3Rpb24sIGFuZCBCIHRvIEEgd2hlbiBvcGVyYXRpbmcgaW4gdGhlIHJldmVyc2UgZGlyZWN0aW9uLgorICAgICAqIEBzZWUgUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3IKKyAgICAgKiBAc2VlIENvbXBvdW5kVHJhbnNsaXRlcmF0b3IKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGT1JXQVJEID0gMDsKKworICAgIC8qKgorICAgICAqIERpcmVjdGlvbiBjb25zdGFudCBpbmRpY2F0aW5nIHRoZSByZXZlcnNlIGRpcmVjdGlvbiBpbiBhIHRyYW5zbGl0ZXJhdG9yLAorICAgICAqIGUuZy4sIHRoZSByZXZlcnNlIHJ1bGVzIG9mIGEgUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3IuICBBbiAiQS1CIgorICAgICAqIHRyYW5zbGl0ZXJhdG9yIHRyYW5zbGl0ZXJhdGVzIEEgdG8gQiB3aGVuIG9wZXJhdGluZyBpbiB0aGUgZm9yd2FyZAorICAgICAqIGRpcmVjdGlvbiwgYW5kIEIgdG8gQSB3aGVuIG9wZXJhdGluZyBpbiB0aGUgcmV2ZXJzZSBkaXJlY3Rpb24uCisgICAgICogQHNlZSBSdWxlQmFzZWRUcmFuc2xpdGVyYXRvcgorICAgICAqIEBzZWUgQ29tcG91bmRUcmFuc2xpdGVyYXRvcgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFJFVkVSU0UgPSAxOworCisgICAgLyoqCisgICAgICogUG9zaXRpb24gc3RydWN0dXJlIGZvciBpbmNyZW1lbnRhbCB0cmFuc2xpdGVyYXRpb24uICBUaGlzIGRhdGEKKyAgICAgKiBzdHJ1Y3R1cmUgZGVmaW5lcyB0d28gc3Vic3RyaW5ncyBvZiB0aGUgdGV4dCBiZWluZworICAgICAqIHRyYW5zbGl0ZXJhdGVkLiAgVGhlIGZpcnN0IHJlZ2lvbiwgW2NvbnRleHRTdGFydCwKKyAgICAgKiBjb250ZXh0TGltaXQpLCBkZWZpbmVzIHdoYXQgY2hhcmFjdGVycyB0aGUgdHJhbnNsaXRlcmF0b3Igd2lsbAorICAgICAqIHJlYWQgYXMgY29udGV4dC4gIFRoZSBzZWNvbmQgcmVnaW9uLCBbc3RhcnQsIGxpbWl0KSwgZGVmaW5lcworICAgICAqIHdoYXQgY2hhcmFjdGVycyB3aWxsIGFjdHVhbGx5IGJlIHRyYW5zbGl0ZXJhdGVkLiAgVGhlIHNlY29uZAorICAgICAqIHJlZ2lvbiBzaG91bGQgYmUgYSBzdWJzZXQgb2YgdGhlIGZpcnN0LgorICAgICAqCisgICAgICogPHA+QWZ0ZXIgYSB0cmFuc2xpdGVyYXRpb24gb3BlcmF0aW9uLCBzb21lIG9mIHRoZSBpbmRpY2VzIGluIHRoaXMKKyAgICAgKiBzdHJ1Y3R1cmUgd2lsbCBiZSBtb2RpZmllZC4gIFNlZSB0aGUgZmllbGQgZGVzY3JpcHRpb25zIGZvcgorICAgICAqIGRldGFpbHMuCisgICAgICoKKyAgICAgKiA8cD5jb250ZXh0U3RhcnQgPD0gc3RhcnQgPD0gbGltaXQgPD0gY29udGV4dExpbWl0CisgICAgICoKKyAgICAgKiA8cD5Ob3RlOiBBbGwgaW5kZXggdmFsdWVzIGluIHRoaXMgc3RydWN0dXJlIG11c3QgYmUgYXQgY29kZSBwb2ludAorICAgICAqIGJvdW5kYXJpZXMuICBUaGF0IGlzLCBub25lIG9mIHRoZW0gbWF5IG9jY3VyIGJldHdlZW4gdHdvIGNvZGUgdW5pdHMKKyAgICAgKiBvZiBhIHN1cnJvZ2F0ZSBwYWlyLiAgSWYgYW55IGluZGV4IGRvZXMgc3BsaXQgYSBzdXJyb2dhdGUgcGFpciwKKyAgICAgKiByZXN1bHRzIGFyZSB1bnNwZWNpZmllZC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGNsYXNzIFBvc2l0aW9uIHsKKworICAgICAgICAvKioKKyAgICAgICAgICogQmVnaW5uaW5nIGluZGV4LCBpbmNsdXNpdmUsIG9mIHRoZSBjb250ZXh0IHRvIGJlIGNvbnNpZGVyZWQgZm9yCisgICAgICAgICAqIGEgdHJhbnNsaXRlcmF0aW9uIG9wZXJhdGlvbi4gIFRoZSB0cmFuc2xpdGVyYXRvciB3aWxsIGlnbm9yZQorICAgICAgICAgKiBhbnl0aGluZyBiZWZvcmUgdGhpcyBpbmRleC4gIElOUFVUL09VVFBVVCBwYXJhbWV0ZXI6IFRoaXMgcGFyYW1ldGVyCisgICAgICAgICAqIGlzIHVwZGF0ZWQgYnkgYSB0cmFuc2xpdGVyYXRpb24gb3BlcmF0aW9uIHRvIHJlZmxlY3QgdGhlIG1heGltdW0KKyAgICAgICAgICogYW1vdW50IG9mIGFudGVjb250ZXh0IG5lZWRlZCBieSBhIHRyYW5zbGl0ZXJhdG9yLgorICAgICAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBpbnQgY29udGV4dFN0YXJ0OworCisgICAgICAgIC8qKgorICAgICAgICAgKiBFbmRpbmcgaW5kZXgsIGV4Y2x1c2l2ZSwgb2YgdGhlIGNvbnRleHQgdG8gYmUgY29uc2lkZXJlZCBmb3IgYQorICAgICAgICAgKiB0cmFuc2xpdGVyYXRpb24gb3BlcmF0aW9uLiAgVGhlIHRyYW5zbGl0ZXJhdG9yIHdpbGwgaWdub3JlCisgICAgICAgICAqIGFueXRoaW5nIGF0IG9yIGFmdGVyIHRoaXMgaW5kZXguICBJTlBVVC9PVVRQVVQgcGFyYW1ldGVyOiBUaGlzCisgICAgICAgICAqIHBhcmFtZXRlciBpcyB1cGRhdGVkIHRvIHJlZmxlY3QgY2hhbmdlcyBpbiB0aGUgbGVuZ3RoIG9mIHRoZQorICAgICAgICAgKiB0ZXh0LCBidXQgcG9pbnRzIHRvIHRoZSBzYW1lIGxvZ2ljYWwgcG9zaXRpb24gaW4gdGhlIHRleHQuCisgICAgICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIGludCBjb250ZXh0TGltaXQ7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEJlZ2lubmluZyBpbmRleCwgaW5jbHVzaXZlLCBvZiB0aGUgdGV4dCB0byBiZSB0cmFuc2xpdGVyYXRkLgorICAgICAgICAgKiBJTlBVVC9PVVRQVVQgcGFyYW1ldGVyOiBUaGlzIHBhcmFtZXRlciBpcyBhZHZhbmNlZCBwYXN0CisgICAgICAgICAqIGNoYXJhY3RlcnMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiB0cmFuc2xpdGVyYXRlZCBieSBhCisgICAgICAgICAqIHRyYW5zbGl0ZXJhdGlvbiBvcGVyYXRpb24uCisgICAgICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIGludCBzdGFydDsKKworICAgICAgICAvKioKKyAgICAgICAgICogRW5kaW5nIGluZGV4LCBleGNsdXNpdmUsIG9mIHRoZSB0ZXh0IHRvIGJlIHRyYW5zbGl0ZXJhdGQuCisgICAgICAgICAqIElOUFVUL09VVFBVVCBwYXJhbWV0ZXI6IFRoaXMgcGFyYW1ldGVyIGlzIHVwZGF0ZWQgdG8gcmVmbGVjdAorICAgICAgICAgKiBjaGFuZ2VzIGluIHRoZSBsZW5ndGggb2YgdGhlIHRleHQsIGJ1dCBwb2ludHMgdG8gdGhlIHNhbWUKKyAgICAgICAgICogbG9naWNhbCBwb3NpdGlvbiBpbiB0aGUgdGV4dC4KKyAgICAgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgaW50IGxpbWl0OworCisgICAgICAgIC8qKgorICAgICAgICAgKiBDb25zdHJ1Y3RzIGEgUG9zaXRpb24gb2JqZWN0IHdpdGggc3RhcnQsIGxpbWl0LAorICAgICAgICAgKiBjb250ZXh0U3RhcnQsIGFuZCBjb250ZXh0TGltaXQgYWxsIGVxdWFsIHRvIHplcm8uCisgICAgICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIFBvc2l0aW9uKCkgeworICAgICAgICAgICAgdGhpcygwLCAwLCAwLCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBDb25zdHJ1Y3RzIGEgUG9zaXRpb24gb2JqZWN0IHdpdGggdGhlIGdpdmVuIHN0YXJ0LAorICAgICAgICAgKiBjb250ZXh0U3RhcnQsIGFuZCBjb250ZXh0TGltaXQuICBUaGUgbGltaXQgaXMgc2V0IHRvIHRoZQorICAgICAgICAgKiBjb250ZXh0TGltaXQuCisgICAgICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIFBvc2l0aW9uKGludCBjb250ZXh0U3RhcnQsIGludCBjb250ZXh0TGltaXQsIGludCBzdGFydCkgeworICAgICAgICAgICAgdGhpcyhjb250ZXh0U3RhcnQsIGNvbnRleHRMaW1pdCwgc3RhcnQsIGNvbnRleHRMaW1pdCk7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogQ29uc3RydWN0cyBhIFBvc2l0aW9uIG9iamVjdCB3aXRoIHRoZSBnaXZlbiBzdGFydCwgbGltaXQsCisgICAgICAgICAqIGNvbnRleHRTdGFydCwgYW5kIGNvbnRleHRMaW1pdC4KKyAgICAgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgUG9zaXRpb24oaW50IGNvbnRleHRTdGFydCwgaW50IGNvbnRleHRMaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGFydCwgaW50IGxpbWl0KSB7CisgICAgICAgICAgICB0aGlzLmNvbnRleHRTdGFydCA9IGNvbnRleHRTdGFydDsKKyAgICAgICAgICAgIHRoaXMuY29udGV4dExpbWl0ID0gY29udGV4dExpbWl0OworICAgICAgICAgICAgdGhpcy5zdGFydCA9IHN0YXJ0OworICAgICAgICAgICAgdGhpcy5saW1pdCA9IGxpbWl0OworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIENoZWNrIGFsbCBib3VuZHMuICBJZiB0aGV5IGFyZSBpbnZhbGlkLCB0aHJvdyBhbiBleGNlcHRpb24uCisgICAgICAgICAqIEBwYXJhbSBsZW5ndGggdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIHRoaXMgb2JqZWN0IGFwcGxpZXMgdG8KKyAgICAgICAgICogQGV4Y2VwdGlvbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgYW55IGluZGljZXMgYXJlIG91dAorICAgICAgICAgKiBvZiBib3VuZHMKKyAgICAgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgZmluYWwgdm9pZCB2YWxpZGF0ZShpbnQgbGVuZ3RoKSB7CisgICAgICAgICAgICBpZiAoY29udGV4dFN0YXJ0IDwgMCB8fAorICAgICAgICAgICAgICAgIHN0YXJ0IDwgY29udGV4dFN0YXJ0IHx8CisgICAgICAgICAgICAgICAgbGltaXQgPCBzdGFydCB8fAorICAgICAgICAgICAgICAgIGNvbnRleHRMaW1pdCA8IGxpbWl0IHx8CisgICAgICAgICAgICAgICAgbGVuZ3RoIDwgY29udGV4dExpbWl0KSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBQb3NpdGlvbiB7Y3M9IiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0U3RhcnQgKyAiLCBzPSIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgKyAiLCBsPSIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXQgKyAiLCBjbD0iICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHRMaW1pdCArICJ9LCBsZW49IiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUHJvZ3JhbW1hdGljIG5hbWUsIGUuZy4sICJMYXRpbi1BcmFiaWMiLgorICAgICAqLworICAgIHByaXZhdGUgU3RyaW5nIElEOworCisgICAgLyoqCisgICAgICogVGhpcyB0cmFuc2xpdGVyYXRvcidzIGZpbHRlci4gIEFueSBjaGFyYWN0ZXIgZm9yIHdoaWNoCisgICAgICogPHR0PmZpbHRlci5jb250YWlucygpPC90dD4gcmV0dXJucyA8dHQ+ZmFsc2U8L3R0PiB3aWxsIG5vdCBiZQorICAgICAqIGFsdGVyZWQgYnkgdGhpcyB0cmFuc2xpdGVyYXRvci4gIElmIDx0dD5maWx0ZXI8L3R0PiBpcworICAgICAqIDx0dD5udWxsPC90dD4gdGhlbiBubyBmaWx0ZXJpbmcgaXMgYXBwbGllZC4KKyAgICAgKi8KKyAgICBwcml2YXRlIFVuaWNvZGVGaWx0ZXIgZmlsdGVyOworCisgICAgcHJpdmF0ZSBpbnQgbWF4aW11bUNvbnRleHRMZW5ndGggPSAwOworCisgICAgLyoqCisgICAgICogU3lzdGVtIHRyYW5zbGl0ZXJhdG9yIHJlZ2lzdHJ5LgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIFRyYW5zbGl0ZXJhdG9yUmVnaXN0cnkgcmVnaXN0cnk7CisKKyAgICBwcml2YXRlIHN0YXRpYyBIYXNodGFibGUgZGlzcGxheU5hbWVDYWNoZTsKKworICAgIC8qKgorICAgICAqIFByZWZpeCBmb3IgcmVzb3VyY2UgYnVuZGxlIGtleSBmb3IgdGhlIGRpc3BsYXkgbmFtZSBmb3IgYQorICAgICAqIHRyYW5zbGl0ZXJhdG9yLiAgVGhlIElEIGlzIGFwcGVuZGVkIHRvIHRoaXMgdG8gZm9ybSB0aGUga2V5LgorICAgICAqIFRoZSByZXNvdXJjZSBidW5kbGUgdmFsdWUgc2hvdWxkIGJlIGEgU3RyaW5nLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBSQl9ESVNQTEFZX05BTUVfUFJFRklYID0gIiVUcmFuc2xpdCUlIjsKKworICAgIC8qKgorICAgICAqIFByZWZpeCBmb3IgcmVzb3VyY2UgYnVuZGxlIGtleSBmb3IgdGhlIGRpc3BsYXkgbmFtZSBmb3IgYQorICAgICAqIHRyYW5zbGl0ZXJhdG9yIFNDUklQVC4gIFRoZSBJRCBpcyBhcHBlbmRlZCB0byB0aGlzIHRvIGZvcm0gdGhlIGtleS4KKyAgICAgKiBUaGUgcmVzb3VyY2UgYnVuZGxlIHZhbHVlIHNob3VsZCBiZSBhIFN0cmluZy4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgUkJfU0NSSVBUX0RJU1BMQVlfTkFNRV9QUkVGSVggPSAiJVRyYW5zbGl0JSI7CisKKyAgICAvKioKKyAgICAgKiBSZXNvdXJjZSBidW5kbGUga2V5IGZvciBkaXNwbGF5IG5hbWUgcGF0dGVybi4KKyAgICAgKiBUaGUgcmVzb3VyY2UgYnVuZGxlIHZhbHVlIHNob3VsZCBiZSBhIFN0cmluZyBmb3JtaW5nIGEKKyAgICAgKiBNZXNzYWdlRm9ybWF0IHBhdHRlcm4sIGUuZy46CisgICAgICogInswLGNob2ljZSwwI3wxI3sxfSBUcmFuc2xpdGVyYXRvcnwyI3sxfSB0byB7Mn0gVHJhbnNsaXRlcmF0b3J9Ii4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgUkJfRElTUExBWV9OQU1FX1BBVFRFUk4gPSAiVHJhbnNsaXRlcmF0b3JOYW1lUGF0dGVybiI7CisKKyAgICAvKioKKyAgICAgKiBEZWxpbWl0ZXIgYmV0d2VlbiBlbGVtZW50cyBpbiBhIGNvbXBvdW5kIElELgorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjQgVG8gYmUgbWFkZSBwYWNrYWdlIHByaXZhdGUgYWZ0ZXIgMjAwMy0xMi0wMS4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGNoYXIgSURfREVMSU0gPSAnOyc7CisKKyAgICAvKioKKyAgICAgKiBEZWxpbWl0ZXIgYmVmb3JlIHRhcmdldCBpbiBhbiBJRC4KKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40IFRvIGJlIG1hZGUgcGFja2FnZSBwcml2YXRlIGFmdGVyIDIwMDMtMTItMDEuCisgICAgICovCisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBjaGFyIElEX1NFUCA9ICctJzsKKworICAgIC8qKgorICAgICAqIERlbGltaXRlciBiZWZvcmUgdmFyaWFudCBpbiBhbiBJRC4KKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40IFRvIGJlIG1hZGUgcGFja2FnZSBwcml2YXRlIGFmdGVyIDIwMDMtMTItMDEuCisgICAgICovCisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBjaGFyIFZBUklBTlRfU0VQID0gJy8nOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEFOWSA9ICJBbnkiOworCisgICAgLyoqCisgICAgICogVG8gZW5hYmxlIGRlYnVnZ2luZyBvdXRwdXQgaW4gdGhlIFRyYW5zbGl0ZXJhdG9yIGNvbXBvbmVudCwgc2V0CisgICAgICogREVCVUcgdG8gdHJ1ZS4KKyAgICAgKgorICAgICAqIE4uQi4gTWFrZSBzdXJlIHRvIHJlY29tcGlsZSBhbGwgb2YgdGhlIGNvbS5pYm0uaWN1LnRleHQgcGFja2FnZQorICAgICAqIGFmdGVyIGNoYW5naW5nIHRoaXMuICBFYXNpZXN0IHdheSB0byBkbyB0aGlzIGlzICdhbnQgY2xlYW4KKyAgICAgKiBjb3JlJyAoJ2FudCcgd2lsbCBOT1QgcGljayB1cCB0aGUgZGVwZW5kZW5jeSBhdXRvbWF0aWNhbGx5KS4KKyAgICAgKgorICAgICAqIDw8VGhpcyBnZW5lcmF0ZXMgYSBsb3Qgb2Ygb3V0cHV0Lj4+CisgICAgICovCisgICAgc3RhdGljIGZpbmFsIGJvb2xlYW4gREVCVUcgPSBmYWxzZTsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAiXHUwMEE5IElCTSBDb3Jwb3JhdGlvbiAxOTk5LiBBbGwgcmlnaHRzIHJlc2VydmVkLiI7CisKKyAgICAvKioKKyAgICAgKiBEZWZhdWx0IGNvbnN0cnVjdG9yLgorICAgICAqIEBwYXJhbSBJRCB0aGUgc3RyaW5nIGlkZW50aWZpZXIgZm9yIHRoaXMgdHJhbnNsaXRlcmF0b3IKKyAgICAgKiBAcGFyYW0gZmlsdGVyIHRoZSBmaWx0ZXIuICBBbnkgY2hhcmFjdGVyIGZvciB3aGljaAorICAgICAqIDx0dD5maWx0ZXIuY29udGFpbnMoKTwvdHQ+IHJldHVybnMgPHR0PmZhbHNlPC90dD4gd2lsbCBub3QgYmUKKyAgICAgKiBhbHRlcmVkIGJ5IHRoaXMgdHJhbnNsaXRlcmF0b3IuICBJZiA8dHQ+ZmlsdGVyPC90dD4gaXMKKyAgICAgKiA8dHQ+bnVsbDwvdHQ+IHRoZW4gbm8gZmlsdGVyaW5nIGlzIGFwcGxpZWQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHJvdGVjdGVkIFRyYW5zbGl0ZXJhdG9yKFN0cmluZyBJRCwgVW5pY29kZUZpbHRlciBmaWx0ZXIpIHsKKyAgICAgICAgaWYgKElEID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigpOworICAgICAgICB9CisgICAgICAgIHRoaXMuSUQgPSBJRDsKKyAgICAgICAgdGhpcy5maWx0ZXIgPSBmaWx0ZXI7CisgICAgfQorCisgICAgLyoqCisgICAgICogVHJhbnNsaXRlcmF0ZXMgYSBzZWdtZW50IG9mIGEgc3RyaW5nLCB3aXRoIG9wdGlvbmFsIGZpbHRlcmluZy4KKyAgICAgKgorICAgICAqIEBwYXJhbSB0ZXh0IHRoZSBzdHJpbmcgdG8gYmUgdHJhbnNsaXRlcmF0ZWQKKyAgICAgKiBAcGFyYW0gc3RhcnQgdGhlIGJlZ2lubmluZyBpbmRleCwgaW5jbHVzaXZlOyA8Y29kZT4wIDw9IHN0YXJ0CisgICAgICogPD0gbGltaXQ8L2NvZGU+LgorICAgICAqIEBwYXJhbSBsaW1pdCB0aGUgZW5kaW5nIGluZGV4LCBleGNsdXNpdmU7IDxjb2RlPnN0YXJ0IDw9IGxpbWl0CisgICAgICogPD0gdGV4dC5sZW5ndGgoKTwvY29kZT4uCisgICAgICogQHJldHVybiBUaGUgbmV3IGxpbWl0IGluZGV4LiAgVGhlIHRleHQgcHJldmlvdXNseSBvY2N1cHlpbmcgPGNvZGU+W3N0YXJ0LAorICAgICAqIGxpbWl0KTwvY29kZT4gaGFzIGJlZW4gdHJhbnNsaXRlcmF0ZWQsIHBvc3NpYmx5IHRvIGEgc3RyaW5nIG9mIGEgZGlmZmVyZW50CisgICAgICogbGVuZ3RoLCBhdCA8Y29kZT5bc3RhcnQsIDwvY29kZT48ZW0+bmV3LWxpbWl0PC9lbT48Y29kZT4pPC9jb2RlPiwgd2hlcmUKKyAgICAgKiA8ZW0+bmV3LWxpbWl0PC9lbT4gaXMgdGhlIHJldHVybiB2YWx1ZS4gSWYgdGhlIGlucHV0IG9mZnNldHMgYXJlIG91dCBvZiBib3VuZHMsCisgICAgICogdGhlIHJldHVybmVkIHZhbHVlIGlzIC0xIGFuZCB0aGUgaW5wdXQgc3RyaW5nIHJlbWFpbnMgdW5jaGFuZ2VkLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBpbnQgdHJhbnNsaXRlcmF0ZShSZXBsYWNlYWJsZSB0ZXh0LCBpbnQgc3RhcnQsIGludCBsaW1pdCkgeworICAgICAgICBpZiAoc3RhcnQgPCAwIHx8CisgICAgICAgICAgICBsaW1pdCA8IHN0YXJ0IHx8CisgICAgICAgICAgICB0ZXh0Lmxlbmd0aCgpIDwgbGltaXQpIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIFBvc2l0aW9uIHBvcyA9IG5ldyBQb3NpdGlvbihzdGFydCwgbGltaXQsIHN0YXJ0KTsKKyAgICAgICAgZmlsdGVyZWRUcmFuc2xpdGVyYXRlKHRleHQsIHBvcywgZmFsc2UsIHRydWUpOworICAgICAgICByZXR1cm4gcG9zLmxpbWl0OworICAgIH0KKworICAgIC8qKgorICAgICAqIFRyYW5zbGl0ZXJhdGVzIGFuIGVudGlyZSBzdHJpbmcgaW4gcGxhY2UuIENvbnZlbmllbmNlIG1ldGhvZC4KKyAgICAgKiBAcGFyYW0gdGV4dCB0aGUgc3RyaW5nIHRvIGJlIHRyYW5zbGl0ZXJhdGVkCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHZvaWQgdHJhbnNsaXRlcmF0ZShSZXBsYWNlYWJsZSB0ZXh0KSB7CisgICAgICAgIHRyYW5zbGl0ZXJhdGUodGV4dCwgMCwgdGV4dC5sZW5ndGgoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVHJhbnNsaXRlcmF0ZSBhbiBlbnRpcmUgc3RyaW5nIGFuZCByZXR1cm5zIHRoZSByZXN1bHQuIENvbnZlbmllbmNlIG1ldGhvZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSB0ZXh0IHRoZSBzdHJpbmcgdG8gYmUgdHJhbnNsaXRlcmF0ZWQKKyAgICAgKiBAcmV0dXJuIFRoZSB0cmFuc2xpdGVyYXRlZCB0ZXh0CisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGZpbmFsIFN0cmluZyB0cmFuc2xpdGVyYXRlKFN0cmluZyB0ZXh0KSB7CisgICAgICAgIFJlcGxhY2VhYmxlU3RyaW5nIHJlc3VsdCA9IG5ldyBSZXBsYWNlYWJsZVN0cmluZyh0ZXh0KTsKKyAgICAgICAgdHJhbnNsaXRlcmF0ZShyZXN1bHQpOworICAgICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVHJhbnNsaXRlcmF0ZXMgdGhlIHBvcnRpb24gb2YgdGhlIHRleHQgYnVmZmVyIHRoYXQgY2FuIGJlCisgICAgICogdHJhbnNsaXRlcmF0ZWQgdW5hbWJpZ3Vvc2x5IGFmdGVyIG5ldyB0ZXh0IGhhcyBiZWVuIGluc2VydGVkLAorICAgICAqIHR5cGljYWxseSBhcyBhIHJlc3VsdCBvZiBhIGtleWJvYXJkIGV2ZW50LiAgVGhlIG5ldyB0ZXh0IGluCisgICAgICogPGNvZGU+aW5zZXJ0aW9uPC9jb2RlPiB3aWxsIGJlIGluc2VydGVkIGludG8gPGNvZGU+dGV4dDwvY29kZT4KKyAgICAgKiBhdCA8Y29kZT5pbmRleC5jb250ZXh0TGltaXQ8L2NvZGU+LCBhZHZhbmNpbmcKKyAgICAgKiA8Y29kZT5pbmRleC5jb250ZXh0TGltaXQ8L2NvZGU+IGJ5IDxjb2RlPmluc2VydGlvbi5sZW5ndGgoKTwvY29kZT4uCisgICAgICogVGhlbiB0aGUgdHJhbnNsaXRlcmF0b3Igd2lsbCB0cnkgdG8gdHJhbnNsaXRlcmF0ZSBjaGFyYWN0ZXJzIG9mCisgICAgICogPGNvZGU+dGV4dDwvY29kZT4gYmV0d2VlbiA8Y29kZT5pbmRleC5zdGFydDwvY29kZT4gYW5kCisgICAgICogPGNvZGU+aW5kZXguY29udGV4dExpbWl0PC9jb2RlPi4gIENoYXJhY3RlcnMgYmVmb3JlCisgICAgICogPGNvZGU+aW5kZXguc3RhcnQ8L2NvZGU+IHdpbGwgbm90IGJlIGNoYW5nZWQuCisgICAgICoKKyAgICAgKiA8cD5VcG9uIHJldHVybiwgdmFsdWVzIGluIDxjb2RlPmluZGV4PC9jb2RlPiB3aWxsIGJlIHVwZGF0ZWQuCisgICAgICogPGNvZGU+aW5kZXguY29udGV4dFN0YXJ0PC9jb2RlPiB3aWxsIGJlIGFkdmFuY2VkIHRvIHRoZSBmaXJzdAorICAgICAqIGNoYXJhY3RlciB0aGF0IGZ1dHVyZSBjYWxscyB0byB0aGlzIG1ldGhvZCB3aWxsIHJlYWQuCisgICAgICogPGNvZGU+aW5kZXguc3RhcnQ8L2NvZGU+IGFuZCA8Y29kZT5pbmRleC5jb250ZXh0TGltaXQ8L2NvZGU+IHdpbGwKKyAgICAgKiBiZSBhZGp1c3RlZCB0byBkZWxpbWl0IHRoZSByYW5nZSBvZiB0ZXh0IHRoYXQgZnV0dXJlIGNhbGxzIHRvCisgICAgICogdGhpcyBtZXRob2QgbWF5IGNoYW5nZS4KKyAgICAgKgorICAgICAqIDxwPlR5cGljYWwgdXNhZ2Ugb2YgdGhpcyBtZXRob2QgYmVnaW5zIHdpdGggYW4gaW5pdGlhbCBjYWxsCisgICAgICogd2l0aCA8Y29kZT5pbmRleC5jb250ZXh0U3RhcnQ8L2NvZGU+IGFuZCA8Y29kZT5pbmRleC5jb250ZXh0TGltaXQ8L2NvZGU+CisgICAgICogc2V0IHRvIGluZGljYXRlIHRoZSBwb3J0aW9uIG9mIDxjb2RlPnRleHQ8L2NvZGU+IHRvIGJlCisgICAgICogdHJhbnNsaXRlcmF0ZWQsIGFuZCA8Y29kZT5pbmRleC5zdGFydCA9PSBpbmRleC5jb250ZXh0U3RhcnQ8L2NvZGU+LgorICAgICAqIFRoZXJlYWZ0ZXIsIDxjb2RlPmluZGV4PC9jb2RlPiBjYW4gYmUgdXNlZCB3aXRob3V0CisgICAgICogbW9kaWZpY2F0aW9uIGluIGZ1dHVyZSBjYWxscywgcHJvdmlkZWQgdGhhdCBhbGwgY2hhbmdlcyB0bworICAgICAqIDxjb2RlPnRleHQ8L2NvZGU+IGFyZSBtYWRlIHZpYSB0aGlzIG1ldGhvZC4KKyAgICAgKgorICAgICAqIDxwPlRoaXMgbWV0aG9kIGFzc3VtZXMgdGhhdCBmdXR1cmUgY2FsbHMgbWF5IGJlIG1hZGUgdGhhdCB3aWxsCisgICAgICogaW5zZXJ0IG5ldyB0ZXh0IGludG8gdGhlIGJ1ZmZlci4gIEFzIGEgcmVzdWx0LCBpdCBvbmx5IHBlcmZvcm1zCisgICAgICogdW5hbWJpZ3VvdXMgdHJhbnNsaXRlcmF0aW9ucy4gIEFmdGVyIHRoZSBsYXN0IGNhbGwgdG8gdGhpcworICAgICAqIG1ldGhvZCwgdGhlcmUgbWF5IGJlIHVudHJhbnNsaXRlcmF0ZWQgdGV4dCB0aGF0IGlzIHdhaXRpbmcgZm9yCisgICAgICogbW9yZSBpbnB1dCB0byByZXNvbHZlIGFuIGFtYmlndWl0eS4gIEluIG9yZGVyIHRvIHBlcmZvcm0gdGhlc2UKKyAgICAgKiBwZW5kaW5nIHRyYW5zbGl0ZXJhdGlvbnMsIGNsaWVudHMgc2hvdWxkIGNhbGwge0BsaW5rCisgICAgICogI2ZpbmlzaFRyYW5zbGl0ZXJhdGlvbn0gYWZ0ZXIgdGhlIGxhc3QgY2FsbCB0byB0aGlzCisgICAgICogbWV0aG9kIGhhcyBiZWVuIG1hZGUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gdGV4dCB0aGUgYnVmZmVyIGhvbGRpbmcgdHJhbnNsaXRlcmF0ZWQgYW5kIHVudHJhbnNsaXRlcmF0ZWQgdGV4dAorICAgICAqIEBwYXJhbSBpbmRleCB0aGUgc3RhcnQgYW5kIGxpbWl0IG9mIHRoZSB0ZXh0LCB0aGUgcG9zaXRpb24KKyAgICAgKiBvZiB0aGUgY3Vyc29yLCBhbmQgdGhlIHN0YXJ0IGFuZCBsaW1pdCBvZiB0cmFuc2xpdGVyYXRpb24uCisgICAgICogQHBhcmFtIGluc2VydGlvbiB0ZXh0IHRvIGJlIGluc2VydGVkIGFuZCBwb3NzaWJseQorICAgICAqIHRyYW5zbGl0ZXJhdGVkIGludG8gdGhlIHRyYW5zbGF0aW9uIGJ1ZmZlciBhdAorICAgICAqIDxjb2RlPmluZGV4LmNvbnRleHRMaW1pdDwvY29kZT4uICBJZiA8Y29kZT5udWxsPC9jb2RlPiB0aGVuIG5vIHRleHQKKyAgICAgKiBpcyBpbnNlcnRlZC4KKyAgICAgKiBAc2VlICNoYW5kbGVUcmFuc2xpdGVyYXRlCisgICAgICogQGV4Y2VwdGlvbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgPGNvZGU+aW5kZXg8L2NvZGU+CisgICAgICogaXMgaW52YWxpZAorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCB2b2lkIHRyYW5zbGl0ZXJhdGUoUmVwbGFjZWFibGUgdGV4dCwgUG9zaXRpb24gaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgaW5zZXJ0aW9uKSB7CisgICAgICAgIGluZGV4LnZhbGlkYXRlKHRleHQubGVuZ3RoKCkpOworCisvLyAgICAgICAgaW50IG9yaWdpbmFsU3RhcnQgPSBpbmRleC5jb250ZXh0U3RhcnQ7CisgICAgICAgIGlmIChpbnNlcnRpb24gIT0gbnVsbCkgeworICAgICAgICAgICAgdGV4dC5yZXBsYWNlKGluZGV4LmxpbWl0LCBpbmRleC5saW1pdCwgaW5zZXJ0aW9uKTsKKyAgICAgICAgICAgIGluZGV4LmxpbWl0ICs9IGluc2VydGlvbi5sZW5ndGgoKTsKKyAgICAgICAgICAgIGluZGV4LmNvbnRleHRMaW1pdCArPSBpbnNlcnRpb24ubGVuZ3RoKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaW5kZXgubGltaXQgPiAwICYmCisgICAgICAgICAgICBVVEYxNi5pc0xlYWRTdXJyb2dhdGUodGV4dC5jaGFyQXQoaW5kZXgubGltaXQgLSAxKSkpIHsKKyAgICAgICAgICAgIC8vIE9vcHMsIHRoZXJlIGlzIGEgZGFuZ2xpbmcgbGVhZCBzdXJyb2dhdGUgaW4gdGhlIGJ1ZmZlci4KKyAgICAgICAgICAgIC8vIFRoaXMgd2lsbCBicmVhayBtb3N0IHRyYW5zbGl0ZXJhdG9ycywgc2luY2UgdGhleSB3aWxsCisgICAgICAgICAgICAvLyBhc3N1bWUgaXQgaXMgcGFydCBvZiBhIHBhaXIuICBEb24ndCB0cmFuc2xpdGVyYXRlIHVudGlsCisgICAgICAgICAgICAvLyBtb3JlIHRleHQgY29tZXMgaW4uCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBmaWx0ZXJlZFRyYW5zbGl0ZXJhdGUodGV4dCwgaW5kZXgsIHRydWUsIHRydWUpOworCisvLyBUT0RPCisvLyBUaGlzIGRvZXNuJ3Qgd29yayBvbmNlIHdlIGFkZCBxdWFudGlmaWVyIHN1cHBvcnQuICBOZWVkIHRvIHJld3JpdGUKKy8vIHRoaXMgY29kZSB0byBzdXBwb3J0IHF1YW50aWZpZXJzIGFuZCAndXNlIG1heGltdW0gYmFja3VwIDxuPjsnLgorLy8KKy8vICAgICAgICBpbmRleC5jb250ZXh0U3RhcnQgPSBNYXRoLm1heChpbmRleC5zdGFydCAtIGdldE1heGltdW1Db250ZXh0TGVuZ3RoKCksCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxTdGFydCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVHJhbnNsaXRlcmF0ZXMgdGhlIHBvcnRpb24gb2YgdGhlIHRleHQgYnVmZmVyIHRoYXQgY2FuIGJlCisgICAgICogdHJhbnNsaXRlcmF0ZWQgdW5hbWJpZ3Vvc2x5IGFmdGVyIGEgbmV3IGNoYXJhY3RlciBoYXMgYmVlbgorICAgICAqIGluc2VydGVkLCB0eXBpY2FsbHkgYXMgYSByZXN1bHQgb2YgYSBrZXlib2FyZCBldmVudC4gIFRoaXMgaXMgYQorICAgICAqIGNvbnZlbmllbmNlIG1ldGhvZDsgc2VlIHtAbGluayAjdHJhbnNsaXRlcmF0ZShSZXBsYWNlYWJsZSwKKyAgICAgKiBUcmFuc2xpdGVyYXRvci5Qb3NpdGlvbiwgU3RyaW5nKX0gZm9yIGRldGFpbHMuCisgICAgICogQHBhcmFtIHRleHQgdGhlIGJ1ZmZlciBob2xkaW5nIHRyYW5zbGl0ZXJhdGVkIGFuZAorICAgICAqIHVudHJhbnNsaXRlcmF0ZWQgdGV4dAorICAgICAqIEBwYXJhbSBpbmRleCB0aGUgc3RhcnQgYW5kIGxpbWl0IG9mIHRoZSB0ZXh0LCB0aGUgcG9zaXRpb24KKyAgICAgKiBvZiB0aGUgY3Vyc29yLCBhbmQgdGhlIHN0YXJ0IGFuZCBsaW1pdCBvZiB0cmFuc2xpdGVyYXRpb24uCisgICAgICogQHBhcmFtIGluc2VydGlvbiB0ZXh0IHRvIGJlIGluc2VydGVkIGFuZCBwb3NzaWJseQorICAgICAqIHRyYW5zbGl0ZXJhdGVkIGludG8gdGhlIHRyYW5zbGF0aW9uIGJ1ZmZlciBhdAorICAgICAqIDxjb2RlPmluZGV4LmNvbnRleHRMaW1pdDwvY29kZT4uCisgICAgICogQHNlZSAjdHJhbnNsaXRlcmF0ZShSZXBsYWNlYWJsZSwgVHJhbnNsaXRlcmF0b3IuUG9zaXRpb24sIFN0cmluZykKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgdm9pZCB0cmFuc2xpdGVyYXRlKFJlcGxhY2VhYmxlIHRleHQsIFBvc2l0aW9uIGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluc2VydGlvbikgeworICAgICAgICB0cmFuc2xpdGVyYXRlKHRleHQsIGluZGV4LCBVVEYxNi52YWx1ZU9mKGluc2VydGlvbikpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRyYW5zbGl0ZXJhdGVzIHRoZSBwb3J0aW9uIG9mIHRoZSB0ZXh0IGJ1ZmZlciB0aGF0IGNhbiBiZQorICAgICAqIHRyYW5zbGl0ZXJhdGVkIHVuYW1iaWd1b3NseS4gIFRoaXMgaXMgYSBjb252ZW5pZW5jZSBtZXRob2Q7IHNlZQorICAgICAqIHtAbGluayAjdHJhbnNsaXRlcmF0ZShSZXBsYWNlYWJsZSwgVHJhbnNsaXRlcmF0b3IuUG9zaXRpb24sCisgICAgICogU3RyaW5nKX0gZm9yIGRldGFpbHMuCisgICAgICogQHBhcmFtIHRleHQgdGhlIGJ1ZmZlciBob2xkaW5nIHRyYW5zbGl0ZXJhdGVkIGFuZAorICAgICAqIHVudHJhbnNsaXRlcmF0ZWQgdGV4dAorICAgICAqIEBwYXJhbSBpbmRleCB0aGUgc3RhcnQgYW5kIGxpbWl0IG9mIHRoZSB0ZXh0LCB0aGUgcG9zaXRpb24KKyAgICAgKiBvZiB0aGUgY3Vyc29yLCBhbmQgdGhlIHN0YXJ0IGFuZCBsaW1pdCBvZiB0cmFuc2xpdGVyYXRpb24uCisgICAgICogQHNlZSAjdHJhbnNsaXRlcmF0ZShSZXBsYWNlYWJsZSwgVHJhbnNsaXRlcmF0b3IuUG9zaXRpb24sIFN0cmluZykKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgdm9pZCB0cmFuc2xpdGVyYXRlKFJlcGxhY2VhYmxlIHRleHQsIFBvc2l0aW9uIGluZGV4KSB7CisgICAgICAgIHRyYW5zbGl0ZXJhdGUodGV4dCwgaW5kZXgsIG51bGwpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEZpbmlzaGVzIGFueSBwZW5kaW5nIHRyYW5zbGl0ZXJhdGlvbnMgdGhhdCB3ZXJlIHdhaXRpbmcgZm9yCisgICAgICogbW9yZSBjaGFyYWN0ZXJzLiAgQ2xpZW50cyBzaG91bGQgY2FsbCB0aGlzIG1ldGhvZCBhcyB0aGUgbGFzdAorICAgICAqIGNhbGwgYWZ0ZXIgYSBzZXF1ZW5jZSBvZiBvbmUgb3IgbW9yZSBjYWxscyB0bworICAgICAqIDxjb2RlPnRyYW5zbGl0ZXJhdGUoKTwvY29kZT4uCisgICAgICogQHBhcmFtIHRleHQgdGhlIGJ1ZmZlciBob2xkaW5nIHRyYW5zbGl0ZXJhdGVkIGFuZAorICAgICAqIHVudHJhbnNsaXRlcmF0ZWQgdGV4dC4KKyAgICAgKiBAcGFyYW0gaW5kZXggdGhlIGFycmF5IG9mIGluZGljZXMgcHJldmlvdXNseSBwYXNzZWQgdG8ge0BsaW5rCisgICAgICogI3RyYW5zbGl0ZXJhdGV9CisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHZvaWQgZmluaXNoVHJhbnNsaXRlcmF0aW9uKFJlcGxhY2VhYmxlIHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uIGluZGV4KSB7CisgICAgICAgIGluZGV4LnZhbGlkYXRlKHRleHQubGVuZ3RoKCkpOworICAgICAgICBmaWx0ZXJlZFRyYW5zbGl0ZXJhdGUodGV4dCwgaW5kZXgsIGZhbHNlLCB0cnVlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBYnN0cmFjdCBtZXRob2QgdGhhdCBjb25jcmV0ZSBzdWJjbGFzc2VzIGRlZmluZSB0byBpbXBsZW1lbnQKKyAgICAgKiB0aGVpciB0cmFuc2xpdGVyYXRpb24gYWxnb3JpdGhtLiAgVGhpcyBtZXRob2QgaGFuZGxlcyBib3RoCisgICAgICogaW5jcmVtZW50YWwgYW5kIG5vbi1pbmNyZW1lbnRhbCB0cmFuc2xpdGVyYXRpb24uICBMZXQKKyAgICAgKiA8Y29kZT5vcmlnaW5hbFN0YXJ0PC9jb2RlPiByZWZlciB0byB0aGUgdmFsdWUgb2YKKyAgICAgKiA8Y29kZT5wb3Muc3RhcnQ8L2NvZGU+IHVwb24gZW50cnkuCisgICAgICogCisgICAgICogPHVsPgorICAgICAqICA8bGk+SWYgPGNvZGU+aW5jcmVtZW50YWw8L2NvZGU+IGlzIGZhbHNlLCB0aGVuIHRoaXMgbWV0aG9kCisgICAgICogIHNob3VsZCB0cmFuc2xpdGVyYXRlIGFsbCBjaGFyYWN0ZXJzIGJldHdlZW4KKyAgICAgKiAgPGNvZGU+cG9zLnN0YXJ0PC9jb2RlPiBhbmQgPGNvZGU+cG9zLmxpbWl0PC9jb2RlPi4gVXBvbiByZXR1cm4KKyAgICAgKiAgPGNvZGU+cG9zLnN0YXJ0PC9jb2RlPiBtdXN0ID09IDxjb2RlPiBwb3MubGltaXQ8L2NvZGU+LjwvbGk+CisgICAgICoKKyAgICAgKiAgPGxpPklmIDxjb2RlPmluY3JlbWVudGFsPC9jb2RlPiBpcyB0cnVlLCB0aGVuIHRoaXMgbWV0aG9kCisgICAgICogIHNob3VsZCB0cmFuc2xpdGVyYXRlIGFsbCBjaGFyYWN0ZXJzIGJldHdlZW4KKyAgICAgKiAgPGNvZGU+cG9zLnN0YXJ0PC9jb2RlPiBhbmQgPGNvZGU+cG9zLmxpbWl0PC9jb2RlPiB0aGF0IGNhbiBiZQorICAgICAqICB1bmFtYmlndW91c2x5IHRyYW5zbGl0ZXJhdGVkLCByZWdhcmRsZXNzIG9mIGZ1dHVyZSBpbnNlcnRpb25zCisgICAgICogIG9mIHRleHQgYXQgPGNvZGU+cG9zLmxpbWl0PC9jb2RlPi4gIFVwb24gcmV0dXJuLAorICAgICAqICA8Y29kZT5wb3Muc3RhcnQ8L2NvZGU+IHNob3VsZCBiZSBpbiB0aGUgcmFuZ2UKKyAgICAgKiAgWzxjb2RlPm9yaWdpbmFsU3RhcnQ8L2NvZGU+LCA8Y29kZT5wb3MubGltaXQ8L2NvZGU+KS4KKyAgICAgKiAgPGNvZGU+cG9zLnN0YXJ0PC9jb2RlPiBzaG91bGQgYmUgcG9zaXRpb25lZCBzdWNoIHRoYXQKKyAgICAgKiAgY2hhcmFjdGVycyBbPGNvZGU+b3JpZ2luYWxTdGFydDwvY29kZT4sIDxjb2RlPgorICAgICAqICBwb3Muc3RhcnQ8L2NvZGU+KSB3aWxsIG5vdCBiZSBjaGFuZ2VkIGluIHRoZSBmdXR1cmUgYnkgdGhpcworICAgICAqICB0cmFuc2xpdGVyYXRvciBhbmQgY2hhcmFjdGVycyBbPGNvZGU+cG9zLnN0YXJ0PC9jb2RlPiwKKyAgICAgKiAgPGNvZGU+cG9zLmxpbWl0PC9jb2RlPikgYXJlIHVuY2hhbmdlZC48L2xpPgorICAgICAqIDwvdWw+CisgICAgICogCisgICAgICogPHA+SW1wbGVtZW50YXRpb25zIG9mIHRoaXMgbWV0aG9kIHNob3VsZCBhbHNvIG9iZXkgdGhlCisgICAgICogZm9sbG93aW5nIGludmFyaWFudHM6PC9wPgorICAgICAqCisgICAgICogPHVsPgorICAgICAqICA8bGk+IDxjb2RlPnBvcy5saW1pdDwvY29kZT4gYW5kIDxjb2RlPnBvcy5jb250ZXh0TGltaXQ8L2NvZGU+CisgICAgICogIHNob3VsZCBiZSB1cGRhdGVkIHRvIHJlZmxlY3QgY2hhbmdlcyBpbiBsZW5ndGggb2YgdGhlIHRleHQKKyAgICAgKiAgYmV0d2VlbiA8Y29kZT5wb3Muc3RhcnQ8L2NvZGU+IGFuZCA8Y29kZT5wb3MubGltaXQ8L2NvZGU+LiBUaGUKKyAgICAgKiAgZGlmZmVyZW5jZSA8Y29kZT4gcG9zLmNvbnRleHRMaW1pdCAtIHBvcy5saW1pdDwvY29kZT4gc2hvdWxkCisgICAgICogIG5vdCBjaGFuZ2UuPC9saT4KKyAgICAgKgorICAgICAqICA8bGk+PGNvZGU+cG9zLmNvbnRleHRTdGFydDwvY29kZT4gc2hvdWxkIG5vdCBjaGFuZ2UuPC9saT4KKyAgICAgKgorICAgICAqICA8bGk+VXBvbiByZXR1cm4sIG5laXRoZXIgPGNvZGU+cG9zLnN0YXJ0PC9jb2RlPiBub3IKKyAgICAgKiAgPGNvZGU+cG9zLmxpbWl0PC9jb2RlPiBzaG91bGQgYmUgbGVzcyB0aGFuCisgICAgICogIDxjb2RlPm9yaWdpbmFsU3RhcnQ8L2NvZGU+LjwvbGk+CisgICAgICoKKyAgICAgKiAgPGxpPlRleHQgYmVmb3JlIDxjb2RlPm9yaWdpbmFsU3RhcnQ8L2NvZGU+IGFuZCB0ZXh0IGFmdGVyCisgICAgICogIDxjb2RlPnBvcy5saW1pdDwvY29kZT4gc2hvdWxkIG5vdCBjaGFuZ2UuPC9saT4KKyAgICAgKgorICAgICAqICA8bGk+VGV4dCBiZWZvcmUgPGNvZGU+cG9zLmNvbnRleHRTdGFydDwvY29kZT4gYW5kIHRleHQgYWZ0ZXIKKyAgICAgKiAgPGNvZGU+IHBvcy5jb250ZXh0TGltaXQ8L2NvZGU+IHNob3VsZCBiZSBpZ25vcmVkLjwvbGk+CisgICAgICogPC91bD4KKyAgICAgKiAgICAKKyAgICAgKiA8cD5TdWJjbGFzc2VzIG1heSBzYWZlbHkgYXNzdW1lIHRoYXQgYWxsIGNoYXJhY3RlcnMgaW4KKyAgICAgKiBbPGNvZGU+cG9zLnN0YXJ0PC9jb2RlPiwgPGNvZGU+cG9zLmxpbWl0PC9jb2RlPikgYXJlIGZpbHRlcmVkLgorICAgICAqIEluIG90aGVyIHdvcmRzLCB0aGUgZmlsdGVyIGhhcyBhbHJlYWR5IGJlZW4gYXBwbGllZCBieSB0aGUgdGltZQorICAgICAqIHRoaXMgbWV0aG9kIGlzIGNhbGxlZC4gIFNlZQorICAgICAqIDxjb2RlPmZpbHRlcmVkVHJhbnNsaXRlcmF0ZSgpPC9jb2RlPi4KKyAgICAgKiAgICAKKyAgICAgKiA8cD5UaGlzIG1ldGhvZCBpcyA8Yj5ub3Q8L2I+IGZvciBwdWJsaWMgY29uc3VtcHRpb24uICBDYWxsaW5nCisgICAgICogdGhpcyBtZXRob2QgZGlyZWN0bHkgd2lsbCB0cmFuc2xpdGVyYXRlCisgICAgICogWzxjb2RlPnBvcy5zdGFydDwvY29kZT4sIDxjb2RlPnBvcy5saW1pdDwvY29kZT4pIHdpdGhvdXQKKyAgICAgKiBhcHBseWluZyB0aGUgZmlsdGVyLiBFbmQgdXNlciBjb2RlIHNob3VsZCBjYWxsIDxjb2RlPgorICAgICAqIHRyYW5zbGl0ZXJhdGUoKTwvY29kZT4gaW5zdGVhZCBvZiB0aGlzIG1ldGhvZC4gU3ViY2xhc3MgY29kZQorICAgICAqIHNob3VsZCBjYWxsIDxjb2RlPmZpbHRlcmVkVHJhbnNsaXRlcmF0ZSgpPC9jb2RlPiBpbnN0ZWFkIG9mCisgICAgICogdGhpcyBtZXRob2QuPHA+CisgICAgICogCisgICAgICogQHBhcmFtIHRleHQgdGhlIGJ1ZmZlciBob2xkaW5nIHRyYW5zbGl0ZXJhdGVkIGFuZAorICAgICAqIHVudHJhbnNsaXRlcmF0ZWQgdGV4dAorICAgICAqIAorICAgICAqIEBwYXJhbSBwb3MgdGhlIGluZGljZXMgaW5kaWNhdGluZyB0aGUgc3RhcnQsIGxpbWl0LCBjb250ZXh0CisgICAgICogc3RhcnQsIGFuZCBjb250ZXh0IGxpbWl0IG9mIHRoZSB0ZXh0LgorICAgICAqIAorICAgICAqIEBwYXJhbSBpbmNyZW1lbnRhbCBpZiB0cnVlLCBhc3N1bWUgbW9yZSB0ZXh0IG1heSBiZSBpbnNlcnRlZCBhdAorICAgICAqIDxjb2RlPnBvcy5saW1pdDwvY29kZT4gYW5kIGFjdCBhY2NvcmRpbmdseS4gIE90aGVyd2lzZSwKKyAgICAgKiB0cmFuc2xpdGVyYXRlIGFsbCB0ZXh0IGJldHdlZW4gPGNvZGU+cG9zLnN0YXJ0PC9jb2RlPiBhbmQKKyAgICAgKiA8Y29kZT5wb3MubGltaXQ8L2NvZGU+IGFuZCBtb3ZlIDxjb2RlPnBvcy5zdGFydDwvY29kZT4gdXAgdG8KKyAgICAgKiA8Y29kZT5wb3MubGltaXQ8L2NvZGU+LgorICAgICAqIAorICAgICAqIEBzZWUgI3RyYW5zbGl0ZXJhdGUKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgYWJzdHJhY3Qgdm9pZCBoYW5kbGVUcmFuc2xpdGVyYXRlKFJlcGxhY2VhYmxlIHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb3NpdGlvbiBwb3MsIGJvb2xlYW4gaW5jcmVtZW50YWwpOworCisgICAgLyoqCisgICAgICogVG9wLWxldmVsIHRyYW5zbGl0ZXJhdGlvbiBtZXRob2QsIGhhbmRsaW5nIGZpbHRlcmluZywgaW5jcmVtZW50YWwgYW5kCisgICAgICogbm9uLWluY3JlbWVudGFsIHRyYW5zbGl0ZXJhdGlvbiwgYW5kIHJvbGxiYWNrLiAgQWxsIHRyYW5zbGl0ZXJhdGlvbgorICAgICAqIHB1YmxpYyBBUEkgbWV0aG9kcyBldmVudHVhbGx5IGNhbGwgdGhpcyBtZXRob2Qgd2l0aCBhIHJvbGxiYWNrIGFyZ3VtZW50CisgICAgICogb2YgVFJVRS4gIE90aGVyIGVudGl0aWVzIG1heSBjYWxsIHRoaXMgbWV0aG9kIGJ1dCByb2xsYmFjayBzaG91bGQgYmUKKyAgICAgKiBGQUxTRS4KKyAgICAgKiAKKyAgICAgKiA8cD5JZiB0aGlzIHRyYW5zbGl0ZXJhdG9yIGhhcyBhIGZpbHRlciwgYnJlYWsgdXAgdGhlIGlucHV0IHRleHQgaW50byBydW5zCisgICAgICogb2YgdW5maWx0ZXJlZCBjaGFyYWN0ZXJzLiAgUGFzcyBlYWNoIHJ1biB0bworICAgICAqIDxzdWJjbGFzcz4uaGFuZGxlVHJhbnNsaXRlcmF0ZSgpLgorICAgICAqCisgICAgICogPHA+SW4gaW5jcmVtZW50YWwgbW9kZSwgaWYgcm9sbGJhY2sgaXMgVFJVRSwgcGVyZm9ybSBhIHNwZWNpYWwKKyAgICAgKiBpbmNyZW1lbnRhbCBwcm9jZWR1cmUgaW4gd2hpY2ggc2V2ZXJhbCBwYXNzZXMgYXJlIG1hZGUgb3ZlciB0aGUgaW5wdXQKKyAgICAgKiB0ZXh0LCBhZGRpbmcgb25lIGNoYXJhY3RlciBhdCBhIHRpbWUsIGFuZCBjb21taXR0aW5nIHN1Y2Nlc3NmdWwKKyAgICAgKiB0cmFuc2xpdGVyYXRpb25zIGFzIHRoZXkgb2NjdXIuICBVbnN1Y2Nlc3NmdWwgdHJhbnNsaXRlcmF0aW9ucyBhcmUgcm9sbGVkCisgICAgICogYmFjayBhbmQgcmV0cmllZCB3aXRoIGFkZGl0aW9uYWwgY2hhcmFjdGVycyB0byBnaXZlIGNvcnJlY3QgcmVzdWx0cy4KKyAgICAgKgorICAgICAqIEBwYXJhbSB0ZXh0IHRoZSB0ZXh0IHRvIGJlIHRyYW5zbGl0ZXJhdGVkCisgICAgICogQHBhcmFtIGluZGV4IHRoZSBwb3NpdGlvbiBpbmRpY2VzCisgICAgICogQHBhcmFtIGluY3JlbWVudGFsIGlmIFRSVUUsIHRoZW4gYXNzdW1lIG1vcmUgY2hhcmFjdGVycyBtYXkgYmUgaW5zZXJ0ZWQKKyAgICAgKiBhdCBpbmRleC5saW1pdCwgYW5kIHBvc3Rwb25lIHByb2Nlc3NpbmcgdG8gYWNjb21vZGF0ZSBmdXR1cmUgaW5jb21pbmcKKyAgICAgKiBjaGFyYWN0ZXJzCisgICAgICogQHBhcmFtIHJvbGxiYWNrIGlmIFRSVUUgYW5kIGlmIGluY3JlbWVudGFsIGlzIFRSVUUsIHRoZW4gcGVyZm9ybSBzcGVjaWFsCisgICAgICogaW5jcmVtZW50YWwgcHJvY2Vzc2luZywgYXMgZGVzY3JpYmVkIGFib3ZlLCBhbmQgdW5kbyBwYXJ0aWFsCisgICAgICogdHJhbnNsaXRlcmF0aW9ucyB3aGVyZSBuZWNlc3NhcnkuICBJZiBpbmNyZW1lbnRhbCBpcyBGQUxTRSB0aGVuIHRoaXMKKyAgICAgKiBwYXJhbWV0ZXIgaXMgaWdub3JlZC4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgZmlsdGVyZWRUcmFuc2xpdGVyYXRlKFJlcGxhY2VhYmxlIHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb3NpdGlvbiBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gaW5jcmVtZW50YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIHJvbGxiYWNrKSB7CisgICAgICAgIC8vIFNob3J0IGNpcmN1aXQgcGF0aCBmb3IgdHJhbnNsaXRlcmF0b3JzIHdpdGggbm8gZmlsdGVyIGluCisgICAgICAgIC8vIG5vbi1pbmNyZW1lbnRhbCBtb2RlLgorICAgICAgICBpZiAoZmlsdGVyID09IG51bGwgJiYgIXJvbGxiYWNrKSB7CisgICAgICAgICAgICBoYW5kbGVUcmFuc2xpdGVyYXRlKHRleHQsIGluZGV4LCBpbmNyZW1lbnRhbCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgLy8gVGhpcyBtZXRob2QgcHJvY2Vzc2VzIHRleHQgaW4gdHdvIGdyb3VwaW5nczoKKyAgICAgICAgLy8KKyAgICAgICAgLy8gUlVOUyAtLSBBIHJ1biBpcyBhIGNvbnRpZ3VvdXMgZ3JvdXAgb2YgY2hhcmFjdGVycyB3aGljaCBhcmUgY29udGFpbmVkCisgICAgICAgIC8vIGluIHRoZSBmaWx0ZXIgZm9yIHRoaXMgdHJhbnNsaXRlcmF0b3IgKGZpbHRlci5jb250YWlucyhjaCkgPT0gdHJ1ZSkuCisgICAgICAgIC8vIFRleHQgb3V0c2lkZSBvZiBydW5zIG1heSBhcHBlYXIgYXMgY29udGV4dCBidXQgaXQgaXMgbm90IG1vZGlmaWVkLgorICAgICAgICAvLyBUaGUgc3RhcnQgYW5kIGxpbWl0IFBvc2l0aW9uIHZhbHVlcyBhcmUgbmFycm93ZWQgdG8gZWFjaCBydW4uCisgICAgICAgIC8vCisgICAgICAgIC8vIFBBU1NFUyAoaW5jcmVtZW50YWwgb25seSkgLS0gVG8gbWFrZSBpbmNyZW1lbnRhbCBtb2RlIHdvcmsgY29ycmVjdGx5LAorICAgICAgICAvLyBlYWNoIHJ1biBpcyBicm9rZW4gdXAgaW50byBuIHBhc3Nlcywgd2hlcmUgbiBpcyB0aGUgbGVuZ3RoIChpbiBjb2RlCisgICAgICAgIC8vIHBvaW50cykgb2YgdGhlIHJ1bi4gIEVhY2ggcGFzcyBjb250YWlucyB0aGUgZmlyc3QgbiBjaGFyYWN0ZXJzLiAgSWYgYQorICAgICAgICAvLyBwYXNzIGlzIGNvbXBsZXRlbHkgdHJhbnNsaXRlcmF0ZWQsIGl0IGlzIGNvbW1pdHRlZCwgYW5kIGZ1cnRoZXIgcGFzc2VzCisgICAgICAgIC8vIGluY2x1ZGUgY2hhcmFjdGVycyBhZnRlciB0aGUgY29tbWl0dGVkIHRleHQuICBJZiBhIHBhc3MgaXMgYmxvY2tlZCwKKyAgICAgICAgLy8gYW5kIGRvZXMgbm90IHRyYW5zbGl0ZXJhdGUgY29tcGxldGVseSwgdGhlbiB0aGlzIG1ldGhvZCByb2xscyBiYWNrCisgICAgICAgIC8vIHRoZSBjaGFuZ2VzIG1hZGUgZHVyaW5nIHRoZSBwYXNzLCBleHRlbmRzIHRoZSBwYXNzIGJ5IG9uZSBjb2RlIHBvaW50LAorICAgICAgICAvLyBhbmQgdHJpZXMgYWdhaW4uCisgICAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgICAgIC8vIGdsb2JhbExpbWl0IGlzIHRoZSBsaW1pdCB2YWx1ZSBmb3IgdGhlIGVudGlyZSBvcGVyYXRpb24uICBXZQorICAgICAgICAvLyBzZXQgaW5kZXgubGltaXQgdG8gdGhlIGVuZCBvZiBlYWNoIHVuZmlsdGVyZWQgcnVuIGJlZm9yZQorICAgICAgICAvLyBjYWxsaW5nIGhhbmRsZVRyYW5zbGl0ZXJhdGUoKSwgc28gd2UgbmVlZCB0byBtYWludGFpbiB0aGUgcmVhbAorICAgICAgICAvLyB2YWx1ZSBvZiBpbmRleC5saW1pdCBoZXJlLiAgQWZ0ZXIgZWFjaCB0cmFuc2xpdGVyYXRpb24sIHdlCisgICAgICAgIC8vIHVwZGF0ZSBnbG9iYWxMaW1pdCBmb3IgaW5zZXJ0aW9ucyBvciBkZWxldGlvbnMgdGhhdCBoYXZlCisgICAgICAgIC8vIGhhcHBlbmVkLgorICAgICAgICBpbnQgZ2xvYmFsTGltaXQgPSBpbmRleC5saW1pdDsKKworICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIG5vbi1udWxsIGZpbHRlciwgdGhlbiBicmVhayB0aGUgaW5wdXQgdGV4dCB1cC4gIFNheSB0aGUKKyAgICAgICAgLy8gaW5wdXQgdGV4dCBoYXMgdGhlIGZvcm06CisgICAgICAgIC8vICAgeHh4YWJjeHhkZWZ4eAorICAgICAgICAvLyB3aGVyZSAneCcgcmVwcmVzZW50cyBhIGZpbHRlcmVkIGNoYXJhY3RlciAoZmlsdGVyLmNvbnRhaW5zKCd4JykgPT0KKyAgICAgICAgLy8gZmFsc2UpLiAgVGhlbiB3ZSBicmVhayB0aGlzIHVwIGludG86CisgICAgICAgIC8vICAgeHh4YWJjIHh4ZGVmIHh4CisgICAgICAgIC8vIEVhY2ggcGFzcyB0aHJvdWdoIHRoZSBsb29wIGNvbnN1bWVzIGEgcnVuIG9mIGZpbHRlcmVkCisgICAgICAgIC8vIGNoYXJhY3RlcnMgKHdoaWNoIGFyZSBpZ25vcmVkKSBhbmQgYSBzdWJzZXF1ZW50IHJ1biBvZgorICAgICAgICAvLyB1bmZpbHRlcmVkIGNoYXJhY3RlcnMgKHdoaWNoIGFyZSB0cmFuc2xpdGVyYXRlZCkuCisKKyAgICAgICAgU3RyaW5nQnVmZmVyIGxvZyA9IG51bGw7CisgICAgICAgIGlmIChERUJVRykgeworICAgICAgICAgICAgbG9nID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICB9CisKKyAgICAgICAgZm9yICg7OykgeworCisgICAgICAgICAgICBpZiAoZmlsdGVyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAvLyBOYXJyb3cgdGhlIHJhbmdlIHRvIGJlIHRyYW5zbGl0ZXJhdGVkIHRvIHRoZSBmaXJzdCBydW4KKyAgICAgICAgICAgICAgICAvLyBvZiB1bmZpbHRlcmVkIGNoYXJhY3RlcnMgYXQgb3IgYWZ0ZXIgaW5kZXguc3RhcnQuCisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gQWR2YW5jZSBwYXN0IGZpbHRlcmVkIGNoYXJzCisgICAgICAgICAgICAgICAgaW50IGM7CisgICAgICAgICAgICAgICAgd2hpbGUgKGluZGV4LnN0YXJ0IDwgZ2xvYmFsTGltaXQgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgIWZpbHRlci5jb250YWlucyhjPXRleHQuY2hhcjMyQXQoaW5kZXguc3RhcnQpKSkgeworICAgICAgICAgICAgICAgICAgICBpbmRleC5zdGFydCArPSBVVEYxNi5nZXRDaGFyQ291bnQoYyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIEZpbmQgdGhlIGVuZCBvZiB0aGlzIHJ1biBvZiB1bmZpbHRlcmVkIGNoYXJzCisgICAgICAgICAgICAgICAgaW5kZXgubGltaXQgPSBpbmRleC5zdGFydDsKKyAgICAgICAgICAgICAgICB3aGlsZSAoaW5kZXgubGltaXQgPCBnbG9iYWxMaW1pdCAmJgorICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIuY29udGFpbnMoYz10ZXh0LmNoYXIzMkF0KGluZGV4LmxpbWl0KSkpIHsKKyAgICAgICAgICAgICAgICAgICAgaW5kZXgubGltaXQgKz0gVVRGMTYuZ2V0Q2hhckNvdW50KGMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSB1bmZpbHRlcmVkIHJ1biBpcyBlbXB0eS4gIFRoaXMgb25seQorICAgICAgICAgICAgLy8gaGFwcGVucyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgd2hlbiBhbGwgdGhlIHJlbWFpbmluZworICAgICAgICAgICAgLy8gY2hhcmFjdGVycyBhcmUgZmlsdGVyZWQuCisgICAgICAgICAgICBpZiAoaW5kZXguc3RhcnQgPT0gaW5kZXgubGltaXQpIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gSXMgdGhpcyBydW4gaW5jcmVtZW50YWw/ICBJZiB0aGVyZSBpcyBhZGRpdGlvbmFsCisgICAgICAgICAgICAvLyBmaWx0ZXJlZCB0ZXh0IChpZiBsaW1pdCA8IGdsb2JhbExpbWl0KSB0aGVuIHdlIHBhc3MgaW4KKyAgICAgICAgICAgIC8vIGFuIGluY3JlbWVudGFsIHZhbHVlIG9mIEZBTFNFIHRvIGZvcmNlIHRoZSBzdWJjbGFzcyB0bworICAgICAgICAgICAgLy8gY29tcGxldGUgdGhlIHRyYW5zbGl0ZXJhdGlvbiBmb3IgdGhpcyBydW4uCisgICAgICAgICAgICBib29sZWFuIGlzSW5jcmVtZW50YWxSdW4gPQorICAgICAgICAgICAgICAgIChpbmRleC5saW1pdCA8IGdsb2JhbExpbWl0ID8gZmFsc2UgOiBpbmNyZW1lbnRhbCk7CisKKyAgICAgICAgICAgIGludCBkZWx0YTsKKworICAgICAgICAgICAgLy8gSW1wbGVtZW50IHJvbGxiYWNrLiAgVG8gdW5kZXJzdGFuZCB0aGUgbmVlZCBmb3Igcm9sbGJhY2ssCisgICAgICAgICAgICAvLyBjb25zaWRlciB0aGUgZm9sbG93aW5nIHRyYW5zbGl0ZXJhdG9yOgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vICAidCIgaXMgImEgPiBBOyIKKyAgICAgICAgICAgIC8vICAidSIgaXMgIkEgPiBiOyIKKyAgICAgICAgICAgIC8vICAidiIgaXMgYSBjb21wb3VuZCBvZiAidDsgTkZEOyB1IiB3aXRoIGEgZmlsdGVyIFs6TGw6XQorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIE5vdyBhcHBseSAidiIgdG8gdGhlIGlucHV0IHRleHQgImEiLiAgVGhlIHJlc3VsdCBpcyAiYiIuICBCdXQgaWYKKyAgICAgICAgICAgIC8vIHRoZSB0cmFuc2xpdGVyYXRpb24gaXMgZG9uZSBpbmNyZW1lbnRhbGx5LCB0aGVuIHRoZSBORkQgaG9sZHMKKyAgICAgICAgICAgIC8vIHRoaW5ncyB1cCBhZnRlciAidCIgaGFzIGFscmVhZHkgdHJhbnNmb3JtZWQgImEiIHRvICJBIi4gIFdoZW4KKyAgICAgICAgICAgIC8vIGZpbmlzaFRyYW5zbGl0ZXJhdGUoKSBpcyBjYWxsZWQsICJBIiBpcyBfbm90XyBwcm9jZXNzZWQgYmVjYXVzZQorICAgICAgICAgICAgLy8gaXQgZ2V0cyBleGNsdWRlZCBieSB0aGUgWzpMbDpdIGZpbHRlciwgYW5kIHRoZSBlbmQgcmVzdWx0IGlzICJBIgorICAgICAgICAgICAgLy8gLS0gaW5jb3JyZWN0LiAgVGhlIHByb2JsZW0gaXMgdGhhdCB0aGUgZmlsdGVyIGlzIGFwcGxpZWQgdG8gYQorICAgICAgICAgICAgLy8gcGFydGlhbGx5LXRyYW5zbGl0ZXJhdGVkIHJlc3VsdCwgd2hlbiB3ZSBvbmx5IHdhbnQgaXQgdG8gYXBwbHkgdG8KKyAgICAgICAgICAgIC8vIGlucHV0IHRleHQuICBBbHRob3VnaCB0aGlzIGV4YW1wbGUgZGVzY3JpYmVzIGEgY29tcG91bmQKKyAgICAgICAgICAgIC8vIHRyYW5zbGl0ZXJhdG9yIGNvbnRhaW5pbmcgTkZEIGFuZCBhIHNwZWNpZmljIGZpbHRlciwgaXQgY2FuCisgICAgICAgICAgICAvLyBoYXBwZW4gd2l0aCBhbnkgdHJhbnNsaXRlcmF0b3Igd2hpY2ggZG9lcyBhIHBhcnRpYWwKKyAgICAgICAgICAgIC8vIHRyYW5zZm9ybWF0aW9uIGluIGluY3JlbWVudGFsIG1vZGUgaW50byBjaGFyYWN0ZXJzIG91dHNpZGUgaXRzCisgICAgICAgICAgICAvLyBmaWx0ZXIuCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gVG8gaGFuZGxlIHRoaXMsIHdoZW4gaW4gaW5jcmVtZW50YWwgbW9kZSB3ZSBzdXBwbHkgY2hhcmFjdGVycyB0bworICAgICAgICAgICAgLy8gaGFuZGxlVHJhbnNsaXRlcmF0ZSgpIGluIHNldmVyYWwgcGFzc2VzLiAgRWFjaCBwYXNzIGFkZHMgb25lIG1vcmUKKyAgICAgICAgICAgIC8vIGlucHV0IGNoYXJhY3RlciB0byB0aGUgaW5wdXQgdGV4dC4gIFRoYXQgaXMsIGZvciBpbnB1dCAiQUJDRCIsIHdlCisgICAgICAgICAgICAvLyBmaXJzdCB0cnkgIkEiLCB0aGVuICJBQiIsIHRoZW4gIkFCQyIsIGFuZCBmaW5hbGx5ICJBQkNEIi4gIElmIGF0CisgICAgICAgICAgICAvLyBhbnkgcG9pbnQgd2UgYmxvY2sgKHVwb24gcmV0dXJuLCBzdGFydCA8IGxpbWl0KSB0aGVuIHdlIHJvbGwKKyAgICAgICAgICAgIC8vIGJhY2suICBJZiBhdCBhbnkgcG9pbnQgd2UgY29tcGxldGUgdGhlIHJ1biAodXBvbiByZXR1cm4gc3RhcnQgPT0KKyAgICAgICAgICAgIC8vIGxpbWl0KSB0aGVuIHdlIGNvbW1pdCB0aGF0IHJ1bi4KKworICAgICAgICAgICAgaWYgKHJvbGxiYWNrICYmIGlzSW5jcmVtZW50YWxSdW4pIHsKKworICAgICAgICAgICAgICAgIGlmIChERUJVRykgeworICAgICAgICAgICAgICAgICAgICBsb2cuc2V0TGVuZ3RoKDApOworICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImZpbHRlcmVkVHJhbnNsaXRlcmF0ZXsiK2dldElEKCkrIn1pOiBJTj0iICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxpdHkuZm9ybWF0SW5wdXQodGV4dCwgaW5kZXgpKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpbnQgcnVuU3RhcnQgPSBpbmRleC5zdGFydDsKKyAgICAgICAgICAgICAgICBpbnQgcnVuTGltaXQgPSBpbmRleC5saW1pdDsKKyAgICAgICAgICAgICAgICBpbnQgcnVuTGVuZ3RoID0gIHJ1bkxpbWl0IC0gcnVuU3RhcnQ7CisKKyAgICAgICAgICAgICAgICAvLyBNYWtlIGEgcm9sbGJhY2sgY29weSBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcKKyAgICAgICAgICAgICAgICBpbnQgcm9sbGJhY2tPcmlnaW4gPSB0ZXh0Lmxlbmd0aCgpOworICAgICAgICAgICAgICAgIHRleHQuY29weShydW5TdGFydCwgcnVuTGltaXQsIHJvbGxiYWNrT3JpZ2luKTsKKworICAgICAgICAgICAgICAgIC8vIFZhcmlhYmxlcyByZWZsZWN0aW5nIHRoZSBjb21taXRtZW50IG9mIGNvbXBsZXRlbHkKKyAgICAgICAgICAgICAgICAvLyB0cmFuc2xpdGVyYXRlZCB0ZXh0LiAgcGFzc1N0YXJ0IGlzIHRoZSBydW5TdGFydCwgYWR2YW5jZWQKKyAgICAgICAgICAgICAgICAvLyBwYXN0IGNvbW1pdHRlZCB0ZXh0LiAgcm9sbGJhY2tTdGFydCBpcyB0aGUgcm9sbGJhY2tPcmlnaW4sCisgICAgICAgICAgICAgICAgLy8gYWR2YW5jZWQgcGFzdCByb2xsYmFjayB0ZXh0IHRoYXQgY29ycmVzcG9uZHMgdG8gY29tbWl0dGVkCisgICAgICAgICAgICAgICAgLy8gdGV4dC4KKyAgICAgICAgICAgICAgICBpbnQgcGFzc1N0YXJ0ID0gcnVuU3RhcnQ7CisgICAgICAgICAgICAgICAgaW50IHJvbGxiYWNrU3RhcnQgPSByb2xsYmFja09yaWdpbjsKKworICAgICAgICAgICAgICAgIC8vIFRoZSBsaW1pdCBmb3IgZWFjaCBwYXNzOyB3ZSBhZHZhbmNlIGJ5IG9uZSBjb2RlIHBvaW50IHdpdGgKKyAgICAgICAgICAgICAgICAvLyBlYWNoIGl0ZXJhdGlvbi4KKyAgICAgICAgICAgICAgICBpbnQgcGFzc0xpbWl0ID0gaW5kZXguc3RhcnQ7CisKKyAgICAgICAgICAgICAgICAvLyBUb3RhbCBsZW5ndGgsIGluIDE2LWJpdCBjb2RlIHVuaXRzLCBvZiB1bmNvbW1pdHRlZCB0ZXh0LgorICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGxlbmd0aCB0byBiZSByb2xsZWQgYmFjay4KKyAgICAgICAgICAgICAgICBpbnQgdW5jb21taXR0ZWRMZW5ndGggPSAwOworCisgICAgICAgICAgICAgICAgLy8gVG90YWwgZGVsdGEgKGNoYW5nZSBpbiBsZW5ndGgpIGZvciBhbGwgcGFzc2VzCisgICAgICAgICAgICAgICAgaW50IHRvdGFsRGVsdGEgPSAwOworCisgICAgICAgICAgICAgICAgLy8gUEFTUyBNQUlOIExPT1AgLS0gU3RhcnQgd2l0aCBhIHNpbmdsZSBjaGFyYWN0ZXIsIGFuZCBleHRlbmQKKyAgICAgICAgICAgICAgICAvLyB0aGUgdGV4dCBieSBvbmUgY2hhcmFjdGVyIGF0IGEgdGltZS4gIFJvbGwgYmFjayBwYXJ0aWFsCisgICAgICAgICAgICAgICAgLy8gdHJhbnNsaXRlcmF0aW9ucyBhbmQgY29tbWl0IGNvbXBsZXRlIHRyYW5zbGl0ZXJhdGlvbnMuCisgICAgICAgICAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgICAgICAgICAvLyBMZW5ndGggb2YgYWRkaXRpb25hbCBjb2RlIHBvaW50LCBlaXRoZXIgb25lIG9yIHR3bworICAgICAgICAgICAgICAgICAgICBpbnQgY2hhckxlbmd0aCA9CisgICAgICAgICAgICAgICAgICAgICAgICBVVEYxNi5nZXRDaGFyQ291bnQodGV4dC5jaGFyMzJBdChwYXNzTGltaXQpKTsKKyAgICAgICAgICAgICAgICAgICAgcGFzc0xpbWl0ICs9IGNoYXJMZW5ndGg7CisgICAgICAgICAgICAgICAgICAgIGlmIChwYXNzTGltaXQgPiBydW5MaW1pdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgdW5jb21taXR0ZWRMZW5ndGggKz0gY2hhckxlbmd0aDsKKworICAgICAgICAgICAgICAgICAgICBpbmRleC5saW1pdCA9IHBhc3NMaW1pdDsKKworICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZy5zZXRMZW5ndGgoMCk7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2cuYXBwZW5kKCJmaWx0ZXJlZFRyYW5zbGl0ZXJhdGV7IitnZXRJRCgpKyJ9aTogIik7CisgICAgICAgICAgICAgICAgICAgICAgICBVdGlsaXR5LmZvcm1hdElucHV0KGxvZywgdGV4dCwgaW5kZXgpOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgLy8gRGVsZWdhdGUgdG8gc3ViY2xhc3MgZm9yIGFjdHVhbCB0cmFuc2xpdGVyYXRpb24uICBVcG9uCisgICAgICAgICAgICAgICAgICAgIC8vIHJldHVybiwgc3RhcnQgd2lsbCBiZSB1cGRhdGVkIHRvIHBvaW50IGFmdGVyIHRoZQorICAgICAgICAgICAgICAgICAgICAvLyB0cmFuc2xpdGVyYXRlZCB0ZXh0LCBhbmQgbGltaXQgYW5kIGNvbnRleHRMaW1pdCB3aWxsIGJlCisgICAgICAgICAgICAgICAgICAgIC8vIGFkanVzdGVkIGZvciBsZW5ndGggY2hhbmdlcy4KKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlVHJhbnNsaXRlcmF0ZSh0ZXh0LCBpbmRleCwgdHJ1ZSk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2cuYXBwZW5kKCIgPT4gIik7CisgICAgICAgICAgICAgICAgICAgICAgICBVdGlsaXR5LmZvcm1hdElucHV0KGxvZywgdGV4dCwgaW5kZXgpOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgZGVsdGEgPSBpbmRleC5saW1pdCAtIHBhc3NMaW1pdDsgLy8gY2hhbmdlIGluIGxlbmd0aAorICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC8vIFdlIGZhaWxlZCB0byBjb21wbGV0ZWx5IHRyYW5zbGl0ZXJhdGUgdGhpcyBwYXNzLgorICAgICAgICAgICAgICAgICAgICAvLyBSb2xsIGJhY2sgdGhlIHRleHQuICBJbmRpY2VzIHJlbWFpbiB1bmNoYW5nZWQ7IHJlc2V0CisgICAgICAgICAgICAgICAgICAgIC8vIHRoZW0gd2hlcmUgbmVjZXNzYXJ5LgorICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXguc3RhcnQgIT0gaW5kZXgubGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpbmQgdGhlIHJvbGxiYWNrU3RhcnQsIGFkanVzdGVkIGZvciBsZW5ndGggY2hhbmdlcworICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHRoZSBkZWxldGlvbiBvZiBwYXJ0aWFsbHkgdHJhbnNsaXRlcmF0ZWQgdGV4dC4KKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBycyA9IHJvbGxiYWNrU3RhcnQgKyBkZWx0YSAtIChpbmRleC5saW1pdCAtIHBhc3NTdGFydCk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVsZXRlIHRoZSBwYXJ0aWFsbHkgdHJhbnNsaXRlcmF0ZWQgdGV4dAorICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC5yZXBsYWNlKHBhc3NTdGFydCwgaW5kZXgubGltaXQsICIiKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb3B5IHRoZSByb2xsYmFjayB0ZXh0IGJhY2sKKyAgICAgICAgICAgICAgICAgICAgICAgIHRleHQuY29weShycywgcnMgKyB1bmNvbW1pdHRlZExlbmd0aCwgcGFzc1N0YXJ0KTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXN0b3JlIGluZGljZXMgdG8gdGhlaXIgb3JpZ2luYWwgdmFsdWVzCisgICAgICAgICAgICAgICAgICAgICAgICBpbmRleC5zdGFydCA9IHBhc3NTdGFydDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4LmxpbWl0ID0gcGFzc0xpbWl0OworICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXguY29udGV4dExpbWl0IC09IGRlbHRhOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2cuYXBwZW5kKCIgKFJPTExCQUNLKSIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgLy8gV2UgZGlkIGNvbXBsZXRlbHkgdHJhbnNsaXRlcmF0ZSB0aGlzIHBhc3MuICBVcGRhdGUgdGhlCisgICAgICAgICAgICAgICAgICAgIC8vIGNvbW1pdCBpbmRpY2VzIHRvIHJlY29yZCBob3cgZmFyIHdlIGdvdC4gIEFkanVzdCBpbmRpY2VzCisgICAgICAgICAgICAgICAgICAgIC8vIGZvciBsZW5ndGggY2hhbmdlLgorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1vdmUgdGhlIHBhc3MgaW5kaWNlcyBwYXN0IHRoZSBjb21taXR0ZWQgdGV4dC4KKyAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NTdGFydCA9IHBhc3NMaW1pdCA9IGluZGV4LnN0YXJ0OworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBBZGp1c3QgdGhlIHJvbGxiYWNrU3RhcnQgZm9yIGxlbmd0aCBjaGFuZ2VzIGFuZCBtb3ZlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBpdCBwYXN0IHRoZSBjb21taXR0ZWQgdGV4dC4gIEFsbCBjaGFyYWN0ZXJzIHdlJ3ZlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcm9jZXNzZWQgdG8gdGhpcyBwb2ludCBhcmUgY29tbWl0dGVkIG5vdywgc28gemVybworICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0IHRoZSB1bmNvbW1pdHRlZExlbmd0aC4KKyAgICAgICAgICAgICAgICAgICAgICAgIHJvbGxiYWNrU3RhcnQgKz0gZGVsdGEgKyB1bmNvbW1pdHRlZExlbmd0aDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuY29tbWl0dGVkTGVuZ3RoID0gMDsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWRqdXN0IGluZGljZXMgZm9yIGxlbmd0aCBjaGFuZ2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgcnVuTGltaXQgKz0gZGVsdGE7CisgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbERlbHRhICs9IGRlbHRhOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oVXRpbGl0eS5lc2NhcGUobG9nLnRvU3RyaW5nKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIEFkanVzdCBvdmVyYWxsIGxpbWl0IGFuZCByb2xsYmFja09yaWdpbiBmb3IgaW5zZXJ0aW9ucyBhbmQKKyAgICAgICAgICAgICAgICAvLyBkZWxldGlvbnMuICBEb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IGNvbnRleHRMaW1pdCBiZWNhdXNlCisgICAgICAgICAgICAgICAgLy8gaGFuZGxlVHJhbnNsaXRlcmF0ZSgpIG1haW50YWlucyB0aGF0LgorICAgICAgICAgICAgICAgIHJvbGxiYWNrT3JpZ2luICs9IHRvdGFsRGVsdGE7CisgICAgICAgICAgICAgICAgZ2xvYmFsTGltaXQgKz0gdG90YWxEZWx0YTsKKworICAgICAgICAgICAgICAgIC8vIERlbGV0ZSB0aGUgcm9sbGJhY2sgY29weQorICAgICAgICAgICAgICAgIHRleHQucmVwbGFjZShyb2xsYmFja09yaWdpbiwgcm9sbGJhY2tPcmlnaW4gKyBydW5MZW5ndGgsICIiKTsKKworICAgICAgICAgICAgICAgIC8vIE1vdmUgc3RhcnQgcGFzdCBjb21taXR0ZWQgdGV4dAorICAgICAgICAgICAgICAgIGluZGV4LnN0YXJ0ID0gcGFzc1N0YXJ0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBEZWxlZ2F0ZSB0byBzdWJjbGFzcyBmb3IgYWN0dWFsIHRyYW5zbGl0ZXJhdGlvbi4KKyAgICAgICAgICAgICAgICBpZiAoREVCVUcpIHsKKyAgICAgICAgICAgICAgICAgICAgbG9nLnNldExlbmd0aCgwKTsKKyAgICAgICAgICAgICAgICAgICAgbG9nLmFwcGVuZCgiZmlsdGVyZWRUcmFuc2xpdGVyYXRleyIrZ2V0SUQoKSsifTogIik7CisgICAgICAgICAgICAgICAgICAgIFV0aWxpdHkuZm9ybWF0SW5wdXQobG9nLCB0ZXh0LCBpbmRleCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaW50IGxpbWl0ID0gaW5kZXgubGltaXQ7CisgICAgICAgICAgICAgICAgaGFuZGxlVHJhbnNsaXRlcmF0ZSh0ZXh0LCBpbmRleCwgaXNJbmNyZW1lbnRhbFJ1bik7CisgICAgICAgICAgICAgICAgZGVsdGEgPSBpbmRleC5saW1pdCAtIGxpbWl0OyAvLyBjaGFuZ2UgaW4gbGVuZ3RoCisKKyAgICAgICAgICAgICAgICBpZiAoREVCVUcpIHsKKyAgICAgICAgICAgICAgICAgICAgbG9nLmFwcGVuZCgiID0+ICIpOworICAgICAgICAgICAgICAgICAgICBVdGlsaXR5LmZvcm1hdElucHV0KGxvZywgdGV4dCwgaW5kZXgpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIEluIGEgcHJvcGVybHkgd3JpdHRlbiB0cmFuc2xpdGVyYXRvciwgc3RhcnQgPT0gbGltaXQgYWZ0ZXIKKyAgICAgICAgICAgICAgICAvLyBoYW5kbGVUcmFuc2xpdGVyYXRlKCkgcmV0dXJucyB3aGVuIGluY3JlbWVudGFsIGlzIGZhbHNlLgorICAgICAgICAgICAgICAgIC8vIENhdGNoIGNhc2VzIHdoZXJlIHRoZSBzdWJjbGFzcyBkb2Vzbid0IGRvIHRoaXMsIGFuZCB0aHJvdworICAgICAgICAgICAgICAgIC8vIGFuIGV4Y2VwdGlvbi4gIChKdXN0IHBpbm5pbmcgc3RhcnQgdG8gbGltaXQgaXMgYSBiYWQgaWRlYSwKKyAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIHdoYXQncyBwcm9iYWJseSBoYXBwZW5pbmcgaXMgdGhhdCB0aGUgc3ViY2xhc3MKKyAgICAgICAgICAgICAgICAvLyBpc24ndCB0cmFuc2xpdGVyYXRpbmcgYWxsIHRoZSB3YXkgdG8gdGhlIGVuZCwgYW5kIGl0IHNob3VsZAorICAgICAgICAgICAgICAgIC8vIGluIG5vbi1pbmNyZW1lbnRhbCBtb2RlLikKKyAgICAgICAgICAgICAgICBpZiAoIWlzSW5jcmVtZW50YWxSdW4gJiYgaW5kZXguc3RhcnQgIT0gaW5kZXgubGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIkVSUk9SOiBJbmNvbXBsZXRlIG5vbi1pbmNyZW1lbnRhbCB0cmFuc2xpdGVyYXRpb24gYnkgIiArIGdldElEKCkpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIEFkanVzdCBvdmVyYWxsIGxpbWl0IGZvciBpbnNlcnRpb25zL2RlbGV0aW9ucy4gIERvbid0IG5lZWQKKyAgICAgICAgICAgICAgICAvLyB0byB3b3JyeSBhYm91dCBjb250ZXh0TGltaXQgYmVjYXVzZSBoYW5kbGVUcmFuc2xpdGVyYXRlKCkKKyAgICAgICAgICAgICAgICAvLyBtYWludGFpbnMgdGhhdC4KKyAgICAgICAgICAgICAgICBnbG9iYWxMaW1pdCArPSBkZWx0YTsKKworICAgICAgICAgICAgICAgIGlmIChERUJVRykgeworICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oVXRpbGl0eS5lc2NhcGUobG9nLnRvU3RyaW5nKCkpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChmaWx0ZXIgPT0gbnVsbCB8fCBpc0luY3JlbWVudGFsUnVuKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIElmIHdlIGRpZCBjb21wbGV0ZWx5IHRyYW5zbGl0ZXJhdGUgdGhpcworICAgICAgICAgICAgLy8gcnVuLCB0aGVuIHJlcGVhdCB3aXRoIHRoZSBuZXh0IHVuZmlsdGVyZWQgcnVuLgorICAgICAgICB9CisKKyAgICAgICAgLy8gU3RhcnQgaXMgdmFsaWQgd2hlcmUgaXQgaXMuICBMaW1pdCBuZWVkcyB0byBiZSBwdXQgYmFjayB3aGVyZQorICAgICAgICAvLyBpdCB3YXMsIG1vZHVsbyBhZGp1c3RtZW50cyBmb3IgZGVsZXRpb25zL2luc2VydGlvbnMuCisgICAgICAgIGluZGV4LmxpbWl0ID0gZ2xvYmFsTGltaXQ7CisKKyAgICAgICAgaWYgKERFQlVHKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImZpbHRlcmVkVHJhbnNsaXRlcmF0ZXsiK2dldElEKCkrIn06IE9VVD0iICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVdGlsaXR5LmZvcm1hdElucHV0KHRleHQsIGluZGV4KSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUcmFuc2xpdGVyYXRlIGEgc3Vic3RyaW5nIG9mIHRleHQsIGFzIHNwZWNpZmllZCBieSBpbmRleCwgdGFraW5nIGZpbHRlcnMKKyAgICAgKiBpbnRvIGFjY291bnQuICBUaGlzIG1ldGhvZCBpcyBmb3Igc3ViY2xhc3NlcyB0aGF0IG5lZWQgdG8gZGVsZWdhdGUgdG8KKyAgICAgKiBhbm90aGVyIHRyYW5zbGl0ZXJhdG9yLCBzdWNoIGFzIENvbXBvdW5kVHJhbnNsaXRlcmF0b3IuCisgICAgICogQHBhcmFtIHRleHQgdGhlIHRleHQgdG8gYmUgdHJhbnNsaXRlcmF0ZWQKKyAgICAgKiBAcGFyYW0gaW5kZXggdGhlIHBvc2l0aW9uIGluZGljZXMKKyAgICAgKiBAcGFyYW0gaW5jcmVtZW50YWwgaWYgVFJVRSwgdGhlbiBhc3N1bWUgbW9yZSBjaGFyYWN0ZXJzIG1heSBiZSBpbnNlcnRlZAorICAgICAqIGF0IGluZGV4LmxpbWl0LCBhbmQgcG9zdHBvbmUgcHJvY2Vzc2luZyB0byBhY2NvbW9kYXRlIGZ1dHVyZSBpbmNvbWluZworICAgICAqIGNoYXJhY3RlcnMKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgdm9pZCBmaWx0ZXJlZFRyYW5zbGl0ZXJhdGUoUmVwbGFjZWFibGUgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zaXRpb24gaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gaW5jcmVtZW50YWwpIHsKKyAgICAgICAgZmlsdGVyZWRUcmFuc2xpdGVyYXRlKHRleHQsIGluZGV4LCBpbmNyZW1lbnRhbCwgZmFsc2UpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUgbG9uZ2VzdCBjb250ZXh0IHJlcXVpcmVkIGJ5IHRoaXMgdHJhbnNsaXRlcmF0b3IuCisgICAgICogVGhpcyBpcyA8ZW0+cHJlY2VkaW5nPC9lbT4gY29udGV4dC4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHplcm8sIGJ1dAorICAgICAqIHN1YmNsYXNzZXMgY2FuIGNoYW5nZSB0aGlzIGJ5IGNhbGxpbmcgPGNvZGU+c2V0TWF4aW11bUNvbnRleHRMZW5ndGgoKTwvY29kZT4uCisgICAgICogRm9yIGV4YW1wbGUsIGlmIGEgdHJhbnNsaXRlcmF0b3IgdHJhbnNsYXRlcyAiZGRkIiAod2hlcmUKKyAgICAgKiBkIGlzIGFueSBkaWdpdCkgdG8gIjU1NSIgd2hlbiBwcmVjZWRlZCBieSAiKGRkZCkiLCB0aGVuIHRoZSBwcmVjZWRpbmcKKyAgICAgKiBjb250ZXh0IGxlbmd0aCBpcyA1LCB0aGUgbGVuZ3RoIG9mICIoZGRkKSIuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIFRoZSBtYXhpbXVtIG51bWJlciBvZiBwcmVjZWRpbmcgY29udGV4dCBjaGFyYWN0ZXJzIHRoaXMKKyAgICAgKiB0cmFuc2xpdGVyYXRvciBuZWVkcyB0byBleGFtaW5lCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHJvdGVjdGVkIGZpbmFsIGludCBnZXRNYXhpbXVtQ29udGV4dExlbmd0aCgpIHsKKyAgICAgICAgcmV0dXJuIG1heGltdW1Db250ZXh0TGVuZ3RoOworICAgIH0KKworICAgIC8qKgorICAgICAqIE1ldGhvZCBmb3Igc3ViY2xhc3NlcyB0byB1c2UgdG8gc2V0IHRoZSBtYXhpbXVtIGNvbnRleHQgbGVuZ3RoLgorICAgICAqIEBzZWUgI2dldE1heGltdW1Db250ZXh0TGVuZ3RoCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHJvdGVjdGVkIHZvaWQgc2V0TWF4aW11bUNvbnRleHRMZW5ndGgoaW50IGEpIHsKKyAgICAgICAgaWYgKGEgPCAwKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIGNvbnRleHQgbGVuZ3RoICIgKyBhKTsKKyAgICAgICAgfQorICAgICAgICBtYXhpbXVtQ29udGV4dExlbmd0aCA9IGE7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIHByb2dyYW1tYXRpYyBpZGVudGlmaWVyIGZvciB0aGlzIHRyYW5zbGl0ZXJhdG9yLgorICAgICAqIElmIHRoaXMgaWRlbnRpZmllciBpcyBwYXNzZWQgdG8gPGNvZGU+Z2V0SW5zdGFuY2UoKTwvY29kZT4sIGl0CisgICAgICogd2lsbCByZXR1cm4gdGhpcyBvYmplY3QsIGlmIGl0IGhhcyBiZWVuIHJlZ2lzdGVyZWQuCisgICAgICogQHNlZSAjcmVnaXN0ZXJDbGFzcworICAgICAqIEBzZWUgI2dldEF2YWlsYWJsZUlEcworICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0SUQoKSB7CisgICAgICAgIHJldHVybiBJRDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIHByb2dyYW1tYXRpYyBpZGVudGlmaWVyIGZvciB0aGlzIHRyYW5zbGl0ZXJhdG9yLiAgT25seQorICAgICAqIGZvciB1c2UgYnkgc3ViY2xhc3Nlcy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgZmluYWwgdm9pZCBzZXRJRChTdHJpbmcgaWQpIHsKKyAgICAgICAgSUQgPSBpZDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgbmFtZSBmb3IgdGhpcyB0cmFuc2xpdGVyYXRvciB0aGF0IGlzIGFwcHJvcHJpYXRlIGZvcgorICAgICAqIGRpc3BsYXkgdG8gdGhlIHVzZXIgaW4gdGhlIGRlZmF1bHQgbG9jYWxlLiAgU2VlIHtAbGluaworICAgICAqICNnZXREaXNwbGF5TmFtZShTdHJpbmcsTG9jYWxlKX0gZm9yIGRldGFpbHMuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgZ2V0RGlzcGxheU5hbWUoU3RyaW5nIElEKSB7CisgICAgICAgIHJldHVybiBnZXREaXNwbGF5TmFtZShJRCwgTG9jYWxlLmdldERlZmF1bHQoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIG5hbWUgZm9yIHRoaXMgdHJhbnNsaXRlcmF0b3IgdGhhdCBpcyBhcHByb3ByaWF0ZSBmb3IKKyAgICAgKiBkaXNwbGF5IHRvIHRoZSB1c2VyIGluIHRoZSBnaXZlbiBsb2NhbGUuICBUaGlzIG5hbWUgaXMgdGFrZW4KKyAgICAgKiBmcm9tIHRoZSBsb2NhbGUgcmVzb3VyY2UgZGF0YSBpbiB0aGUgc3RhbmRhcmQgbWFubmVyIG9mIHRoZQorICAgICAqIDxjb2RlPmphdmEudGV4dDwvY29kZT4gcGFja2FnZS4KKyAgICAgKgorICAgICAqIDxwPklmIG5vIGxvY2FsaXplZCBuYW1lcyBleGlzdCBpbiB0aGUgc3lzdGVtIHJlc291cmNlIGJ1bmRsZXMsCisgICAgICogYSBuYW1lIGlzIHN5bnRoZXNpemVkIHVzaW5nIGEgbG9jYWxpemVkCisgICAgICogPGNvZGU+TWVzc2FnZUZvcm1hdDwvY29kZT4gcGF0dGVybiBmcm9tIHRoZSByZXNvdXJjZSBkYXRhLiAgVGhlCisgICAgICogYXJndW1lbnRzIHRvIHRoaXMgcGF0dGVybiBhcmUgYW4gaW50ZWdlciBmb2xsb3dlZCBieSBvbmUgb3IgdHdvCisgICAgICogc3RyaW5ncy4gIFRoZSBpbnRlZ2VyIGlzIHRoZSBudW1iZXIgb2Ygc3RyaW5ncywgZWl0aGVyIDEgb3IgMi4KKyAgICAgKiBUaGUgc3RyaW5ncyBhcmUgZm9ybWVkIGJ5IHNwbGl0dGluZyB0aGUgSUQgZm9yIHRoaXMKKyAgICAgKiB0cmFuc2xpdGVyYXRvciBhdCB0aGUgZmlyc3QgJy0nLiAgSWYgdGhlcmUgaXMgbm8gJy0nLCB0aGVuIHRoZQorICAgICAqIGVudGlyZSBJRCBmb3JtcyB0aGUgb25seSBzdHJpbmcuCisgICAgICogQHBhcmFtIGluTG9jYWxlIHRoZSBMb2NhbGUgaW4gd2hpY2ggdGhlIGRpc3BsYXkgbmFtZSBzaG91bGQgYmUKKyAgICAgKiBsb2NhbGl6ZWQuCisgICAgICogQHNlZSBqYXZhLnRleHQuTWVzc2FnZUZvcm1hdAorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldERpc3BsYXlOYW1lKFN0cmluZyBpZCwgTG9jYWxlIGluTG9jYWxlKSB7CisKKwkJLy8gUmVzb3VyY2UgYnVuZGxlIGNvbnRhaW5pbmcgZGlzcGxheSBuYW1lIGtleXMgYW5kIHRoZQorCQkvLyBSQl9SVUxFX0JBU0VEX0lEUyBhcnJheS4KKwkJLy8KKwkJLy9JZiB3ZSBldmVyIGludGVncmF0ZSB0aGlzIHdpdGggdGhlIFN1biBKREssIHRoZSByZXNvdXJjZSBidW5kbGUKKyAgICAgICAgLy8gcm9vdCB3aWxsIGNoYW5nZSB0byBzdW4udGV4dC5yZXNvdXJjZXMuTG9jYWxlRWxlbWVudHMKKworICAgICAgICBSZXNvdXJjZUJ1bmRsZSBidW5kbGUgPSBJQ1VMb2NhbGVEYXRhLmdldExvY2FsZUVsZW1lbnRzKGluTG9jYWxlKTsKKworICAgICAgICAvLyBOb3JtYWxpemUgdGhlIElECisgICAgICAgIFN0cmluZyBzdHZbXSA9IFRyYW5zbGl0ZXJhdG9ySURQYXJzZXIuSUR0b1NUVihpZCk7CisgICAgICAgIGlmIChzdHYgPT0gbnVsbCkgeworICAgICAgICAgICAgLy8gTm8gdGFyZ2V0OyBtYWxmb3JtZWQgaWQKKyAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgfQorICAgICAgICBTdHJpbmcgSUQgPSBzdHZbMF0gKyAnLScgKyBzdHZbMV07CisgICAgICAgIGlmIChzdHZbMl0gIT0gbnVsbCAmJiBzdHZbMl0ubGVuZ3RoKCkgPiAwKSB7CisgICAgICAgICAgICBJRCA9IElEICsgJy8nICsgc3R2WzJdOworICAgICAgICB9CisKKyAgICAgICAgLy8gVXNlIHRoZSByZWdpc3RlcmVkIGRpc3BsYXkgbmFtZSwgaWYgYW55CisgICAgICAgIFN0cmluZyBuID0gKFN0cmluZykgZGlzcGxheU5hbWVDYWNoZS5nZXQobmV3IENhc2VJbnNlbnNpdGl2ZVN0cmluZyhJRCkpOworICAgICAgICBpZiAobiAhPSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gbjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFVzZSBkaXNwbGF5IG5hbWUgZm9yIHRoZSBlbnRpcmUgdHJhbnNsaXRlcmF0b3IsIGlmIGl0CisgICAgICAgIC8vIGV4aXN0cy4KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJldHVybiBidW5kbGUuZ2V0U3RyaW5nKFJCX0RJU1BMQVlfTkFNRV9QUkVGSVggKyBJRCk7CisgICAgICAgIH0gY2F0Y2ggKE1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiBlKSB7fQorCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAvLyBDb25zdHJ1Y3QgdGhlIGZvcm1hdHRlciBmaXJzdDsgaWYgZ2V0U3RyaW5nKCkgZmFpbHMKKyAgICAgICAgICAgIC8vIHdlJ2xsIGV4aXQgdGhlIHRyeSBibG9jaworICAgICAgICAgICAgTWVzc2FnZUZvcm1hdCBmb3JtYXQgPSBuZXcgTWVzc2FnZUZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgYnVuZGxlLmdldFN0cmluZyhSQl9ESVNQTEFZX05BTUVfUEFUVEVSTikpOworICAgICAgICAgICAgLy8gQ29uc3RydWN0IHRoZSBhcmd1bWVudCBhcnJheQorICAgICAgICAgICAgT2JqZWN0W10gYXJncyA9IG5ldyBPYmplY3RbXSB7IG5ldyBJbnRlZ2VyKDIpLCBzdHZbMF0sIHN0dlsxXSB9OworCisgICAgICAgICAgICAvLyBVc2UgZGlzcGxheSBuYW1lcyBmb3IgdGhlIHNjcmlwdHMsIGlmIHRoZXkgZXhpc3QKKyAgICAgICAgICAgIGZvciAoaW50IGo9MTsgajw9MjsgKytqKSB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgYXJnc1tqXSA9IGJ1bmRsZS5nZXRTdHJpbmcoUkJfU0NSSVBUX0RJU1BMQVlfTkFNRV9QUkVGSVggKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5nKSBhcmdzW2pdKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChNaXNzaW5nUmVzb3VyY2VFeGNlcHRpb24gZSkge30KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gRm9ybWF0IGl0IHVzaW5nIHRoZSBwYXR0ZXJuIGluIHRoZSByZXNvdXJjZQorICAgICAgICAgICAgcmV0dXJuIChzdHZbMl0ubGVuZ3RoKCkgPiAwKSA/CisgICAgICAgICAgICAgICAgKGZvcm1hdC5mb3JtYXQoYXJncykgKyAnLycgKyBzdHZbMl0pIDoKKyAgICAgICAgICAgICAgICBmb3JtYXQuZm9ybWF0KGFyZ3MpOworICAgICAgICB9IGNhdGNoIChNaXNzaW5nUmVzb3VyY2VFeGNlcHRpb24gZTIpIHt9CisKKyAgICAgICAgLy8gV2Ugc2hvdWxkIG5vdCByZWFjaCB0aGlzIHBvaW50IHVubGVzcyB0aGVyZSBpcyBzb21ldGhpbmcKKyAgICAgICAgLy8gd3Jvbmcgd2l0aCB0aGUgYnVpbGQgb3IgdGhlIFJCX0RJU1BMQVlfTkFNRV9QQVRURVJOIGhhcworICAgICAgICAvLyBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUgcm9vdCBSQl9MT0NBTEVfRUxFTUVOVFMgcmVzb3VyY2UuCisgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgZmlsdGVyIHVzZWQgYnkgdGhpcyB0cmFuc2xpdGVyYXRvciwgb3IgPHR0Pm51bGw8L3R0PgorICAgICAqIGlmIHRoaXMgdHJhbnNsaXRlcmF0b3IgdXNlcyBubyBmaWx0ZXIuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGZpbmFsIFVuaWNvZGVGaWx0ZXIgZ2V0RmlsdGVyKCkgeworICAgICAgICByZXR1cm4gZmlsdGVyOworICAgIH0KKworICAgIC8qKgorICAgICAqIENoYW5nZXMgdGhlIGZpbHRlciB1c2VkIGJ5IHRoaXMgdHJhbnNsaXRlcmF0b3IuICBJZiB0aGUgZmlsdGVyCisgICAgICogaXMgc2V0IHRvIDx0dD5udWxsPC90dD4gdGhlbiBubyBmaWx0ZXJpbmcgd2lsbCBvY2N1ci4KKyAgICAgKgorICAgICAqIDxwPkNhbGxlcnMgbXVzdCB0YWtlIGNhcmUgaWYgYSB0cmFuc2xpdGVyYXRvciBpcyBpbiB1c2UgYnkKKyAgICAgKiBtdWx0aXBsZSB0aHJlYWRzLiAgVGhlIGZpbHRlciBzaG91bGQgbm90IGJlIGNoYW5nZWQgYnkgb25lCisgICAgICogdGhyZWFkIHdoaWxlIGFub3RoZXIgdGhyZWFkIG1heSBiZSB0cmFuc2xpdGVyYXRpbmcuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0RmlsdGVyKFVuaWNvZGVGaWx0ZXIgZmlsdGVyKSB7CisgICAgICAgIHRoaXMuZmlsdGVyID0gZmlsdGVyOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSA8Y29kZT5UcmFuc2xpdGVyYXRvcjwvY29kZT4gb2JqZWN0IGdpdmVuIGl0cyBJRC4KKyAgICAgKiBUaGUgSUQgbXVzdCBiZSBlaXRoZXIgYSBzeXN0ZW0gdHJhbnNsaXRlcmF0b3IgSUQgb3IgYSBJRCByZWdpc3RlcmVkCisgICAgICogdXNpbmcgPGNvZGU+cmVnaXN0ZXJDbGFzcygpPC9jb2RlPi4KKyAgICAgKgorICAgICAqIEBwYXJhbSBJRCBhIHZhbGlkIElELCBhcyBlbnVtZXJhdGVkIGJ5IDxjb2RlPmdldEF2YWlsYWJsZUlEcygpPC9jb2RlPgorICAgICAqIEByZXR1cm4gQSA8Y29kZT5UcmFuc2xpdGVyYXRvcjwvY29kZT4gb2JqZWN0IHdpdGggdGhlIGdpdmVuIElECisgICAgICogQGV4Y2VwdGlvbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIGdpdmVuIElEIGlzIGludmFsaWQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBUcmFuc2xpdGVyYXRvciBnZXRJbnN0YW5jZShTdHJpbmcgSUQpIHsKKyAgICAgICAgcmV0dXJuIGdldEluc3RhbmNlKElELCBGT1JXQVJEKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgPGNvZGU+VHJhbnNsaXRlcmF0b3I8L2NvZGU+IG9iamVjdCBnaXZlbiBpdHMgSUQuCisgICAgICogVGhlIElEIG11c3QgYmUgZWl0aGVyIGEgc3lzdGVtIHRyYW5zbGl0ZXJhdG9yIElEIG9yIGEgSUQgcmVnaXN0ZXJlZAorICAgICAqIHVzaW5nIDxjb2RlPnJlZ2lzdGVyQ2xhc3MoKTwvY29kZT4uCisgICAgICoKKyAgICAgKiBAcGFyYW0gSUQgYSB2YWxpZCBJRCwgYXMgZW51bWVyYXRlZCBieSA8Y29kZT5nZXRBdmFpbGFibGVJRHMoKTwvY29kZT4KKyAgICAgKiBAcGFyYW0gZGlyIGVpdGhlciBGT1JXQVJEIG9yIFJFVkVSU0UuICBJZiBSRVZFUlNFIHRoZW4gdGhlCisgICAgICogaW52ZXJzZSBvZiB0aGUgZ2l2ZW4gSUQgaXMgaW5zdGFudGlhdGVkLgorICAgICAqIEByZXR1cm4gQSA8Y29kZT5UcmFuc2xpdGVyYXRvcjwvY29kZT4gb2JqZWN0IHdpdGggdGhlIGdpdmVuIElECisgICAgICogQGV4Y2VwdGlvbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIGdpdmVuIElEIGlzIGludmFsaWQuCisgICAgICogQHNlZSAjcmVnaXN0ZXJDbGFzcworICAgICAqIEBzZWUgI2dldEF2YWlsYWJsZUlEcworICAgICAqIEBzZWUgI2dldElECisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBUcmFuc2xpdGVyYXRvciBnZXRJbnN0YW5jZShTdHJpbmcgSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGlyKSB7CisgICAgICAgIFN0cmluZ0J1ZmZlciBjYW5vbklEID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBWZWN0b3IgbGlzdCA9IG5ldyBWZWN0b3IoKTsKKyAgICAgICAgVW5pY29kZVNldFtdIGdsb2JhbEZpbHRlciA9IG5ldyBVbmljb2RlU2V0WzFdOworICAgICAgICBpZiAoIVRyYW5zbGl0ZXJhdG9ySURQYXJzZXIucGFyc2VDb21wb3VuZElEKElELCBkaXIsIGNhbm9uSUQsIGxpc3QsIGdsb2JhbEZpbHRlcikpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgSUQgIiArIElEKTsKKyAgICAgICAgfQorCisgICAgICAgIFRyYW5zbGl0ZXJhdG9ySURQYXJzZXIuaW5zdGFudGlhdGVMaXN0KGxpc3QsIG51bGwsIC0xKTsKKworICAgICAgICAvLyBhc3NlcnQobGlzdC5zaXplKCkgPiAwKTsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgdCA9IG51bGw7CisgICAgICAgIHN3aXRjaCAobGlzdC5zaXplKCkpIHsKKyAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgdCA9IChUcmFuc2xpdGVyYXRvcikgbGlzdC5lbGVtZW50QXQoMCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHQgPSBuZXcgQ29tcG91bmRUcmFuc2xpdGVyYXRvcihsaXN0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHQuc2V0SUQoY2Fub25JRC50b1N0cmluZygpKTsKKyAgICAgICAgaWYgKGdsb2JhbEZpbHRlclswXSAhPSBudWxsKSB7CisgICAgICAgICAgICB0LnNldEZpbHRlcihnbG9iYWxGaWx0ZXJbMF0pOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0OworICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZSBhIHRyYW5zbGl0ZXJhdG9yIGZyb20gYSBiYXNpYyBJRC4gIFRoaXMgaXMgYW4gSUQKKyAgICAgKiBjb250YWluaW5nIG9ubHkgdGhlIGZvcndhcmQgZGlyZWN0aW9uIHNvdXJjZSwgdGFyZ2V0LCBhbmQKKyAgICAgKiB2YXJpYW50LgorICAgICAqIEBwYXJhbSBpZCBhIGJhc2ljIElEIG9mIHRoZSBmb3JtIFMtVCBvciBTLVQvVi4KKyAgICAgKiBAcGFyYW0gY2Fub25JRCBjYW5vbmljYWwgSUQgdG8gYXBwbHkgdG8gdGhlIHJlc3VsdCwgb3IKKyAgICAgKiBudWxsIHRvIGxlYXZlIHRoZSBJRCB1bmNoYW5nZWQKKyAgICAgKiBAcmV0dXJuIGEgbmV3bHkgY3JlYXRlZCBUcmFuc2xpdGVyYXRvciBvciBudWxsIGlmIHRoZSBJRCBpcworICAgICAqIGludmFsaWQuCisgICAgICovCisgICAgc3RhdGljIFRyYW5zbGl0ZXJhdG9yIGdldEJhc2ljSW5zdGFuY2UoU3RyaW5nIGlkLCBTdHJpbmcgY2Fub25JRCkgeworICAgICAgICBTdHJpbmdCdWZmZXIgcyA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgdCA9IHJlZ2lzdHJ5LmdldChpZCwgcyk7CisgICAgICAgIGlmIChzLmxlbmd0aCgpICE9IDApIHsKKyAgICAgICAgICAgIC8vIGFzc2VydCh0PT0wKTsKKyAgICAgICAgICAgIC8vIEluc3RhbnRpYXRlIGFuIGFsaWFzCisgICAgICAgICAgICB0ID0gZ2V0SW5zdGFuY2Uocy50b1N0cmluZygpLCBGT1JXQVJEKTsKKyAgICAgICAgfQorICAgICAgICBpZiAodCAhPSBudWxsICYmIGNhbm9uSUQgIT0gbnVsbCkgeworICAgICAgICAgICAgdC5zZXRJRChjYW5vbklEKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgPGNvZGU+VHJhbnNsaXRlcmF0b3I8L2NvZGU+IG9iamVjdCBjb25zdHJ1Y3RlZCBmcm9tCisgICAgICogdGhlIGdpdmVuIHJ1bGUgc3RyaW5nLiAgVGhpcyB3aWxsIGJlIGEgUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3IsCisgICAgICogaWYgdGhlIHJ1bGUgc3RyaW5nIGNvbnRhaW5zIG9ubHkgcnVsZXMsIG9yIGEKKyAgICAgKiBDb21wb3VuZFRyYW5zbGl0ZXJhdG9yLCBpZiBpdCBjb250YWlucyBJRCBibG9ja3MsIG9yIGEKKyAgICAgKiBOdWxsVHJhbnNsaXRlcmF0b3IsIGlmIGl0IGNvbnRhaW5zIElEIGJsb2NrcyB3aGljaCBwYXJzZSBhcworICAgICAqIGVtcHR5IGZvciB0aGUgZ2l2ZW4gZGlyZWN0aW9uLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVHJhbnNsaXRlcmF0b3IgY3JlYXRlRnJvbVJ1bGVzKFN0cmluZyBJRCwgU3RyaW5nIHJ1bGVzLCBpbnQgZGlyKSB7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQgPSBudWxsOworCisgICAgICAgIFRyYW5zbGl0ZXJhdG9yUGFyc2VyIHBhcnNlciA9IG5ldyBUcmFuc2xpdGVyYXRvclBhcnNlcigpOworICAgICAgICBwYXJzZXIucGFyc2UocnVsZXMsIGRpcik7CisKKyAgICAgICAgLy8gTk9URTogVGhlIGxvZ2ljIGhlcmUgbWF0Y2hlcyB0aGF0IGluIFRyYW5zbGl0ZXJhdG9yUmVnaXN0cnkuCisgICAgICAgIGlmIChwYXJzZXIuaWRCbG9jay5sZW5ndGgoKSA9PSAwKSB7CisgICAgICAgICAgICBpZiAocGFyc2VyLmRhdGEgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIC8vIE5vIGlkQmxvY2ssIG5vIGRhdGEgLS0gdGhpcyBpcyBqdXN0IGFuCisgICAgICAgICAgICAgICAgLy8gYWxpYXMgZm9yIE51bGwKKyAgICAgICAgICAgICAgICB0ID0gbmV3IE51bGxUcmFuc2xpdGVyYXRvcigpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBObyBpZEJsb2NrLCBkYXRhICE9IDAgLS0gdGhpcyBpcyBhbgorICAgICAgICAgICAgICAgIC8vIG9yZGluYXJ5IFJCVF9EQVRBLgorICAgICAgICAgICAgICAgIHQgPSBuZXcgUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3IoSUQsIHBhcnNlci5kYXRhLCBudWxsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChwYXJzZXIuZGF0YSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgLy8gaWRCbG9jaywgbm8gZGF0YSAtLSB0aGlzIGlzIGFuIGFsaWFzLiAgVGhlIElEIGhhcworICAgICAgICAgICAgICAgIC8vIGJlZW4gbXVuZ2VkIGZyb20gcmV2ZXJzZSBpbnRvIGZvcndhcmQgbW9kZSwgaWYKKyAgICAgICAgICAgICAgICAvLyBuZWNlc3NhcnksIHNvIGluc3RhbnRpYXRlIHRoZSBJRCBpbiB0aGUgZm9yd2FyZAorICAgICAgICAgICAgICAgIC8vIGRpcmVjdGlvbi4KKyAgICAgICAgICAgICAgICB0ID0gZ2V0SW5zdGFuY2UocGFyc2VyLmlkQmxvY2spOworICAgICAgICAgICAgICAgIGlmICh0ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgdC5zZXRJRChJRCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBpZEJsb2NrIGFuZCBkYXRhIC0tIHRoaXMgaXMgYSBjb21wb3VuZAorICAgICAgICAgICAgICAgIC8vIFJCVAorICAgICAgICAgICAgICAgIHQgPSBuZXcgUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3IoIl8iLCBwYXJzZXIuZGF0YSwgbnVsbCk7CisgICAgICAgICAgICAgICAgdCA9IG5ldyBDb21wb3VuZFRyYW5zbGl0ZXJhdG9yKElELCBwYXJzZXIuaWRCbG9jaywgcGFyc2VyLmlkU3BsaXRQb2ludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCk7CisgICAgICAgICAgICAgICAgaWYgKHBhcnNlci5jb21wb3VuZEZpbHRlciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIHQuc2V0RmlsdGVyKHBhcnNlci5jb21wb3VuZEZpbHRlcik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIHJ1bGUgc3RyaW5nIGZvciB0aGlzIHRyYW5zbGl0ZXJhdG9yLgorICAgICAqIEBwYXJhbSBlc2NhcGVVbnByaW50YWJsZSBpZiB0cnVlLCB0aGVuIHVucHJpbnRhYmxlIGNoYXJhY3RlcnMKKyAgICAgKiB3aWxsIGJlIGNvbnZlcnRlZCB0byBlc2NhcGUgZm9ybSBiYWNrc2xhc2gtJ3UnIG9yCisgICAgICogYmFja3NsYXNoLSdVJy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIHRvUnVsZXMoYm9vbGVhbiBlc2NhcGVVbnByaW50YWJsZSkgeworICAgICAgICByZXR1cm4gYmFzZVRvUnVsZXMoZXNjYXBlVW5wcmludGFibGUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSBydWxlIHN0cmluZyBmb3IgdGhpcyB0cmFuc2xpdGVyYXRvci4gIFRoaXMgaXMKKyAgICAgKiBhIG5vbi1vdmVycmlkZWFibGUgYmFzZSBjbGFzcyBpbXBsZW1lbnRhdGlvbiB0aGF0IHN1YmNsYXNzZXMKKyAgICAgKiBtYXkgY2FsbC4gIEl0IHNpbXBseSBtdW5nZXMgdGhlIElEIGludG8gdGhlIGNvcnJlY3QgZm9ybWF0LAorICAgICAqIHRoYXQgaXMsICJmb28iID0+ICI6OmZvbyIuCisgICAgICogQHBhcmFtIGVzY2FwZVVucHJpbnRhYmxlIGlmIHRydWUsIHRoZW4gdW5wcmludGFibGUgY2hhcmFjdGVycworICAgICAqIHdpbGwgYmUgY29udmVydGVkIHRvIGVzY2FwZSBmb3JtIGJhY2tzbGFzaC0ndScgb3IKKyAgICAgKiBiYWNrc2xhc2gtJ1UnLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHByb3RlY3RlZCBmaW5hbCBTdHJpbmcgYmFzZVRvUnVsZXMoYm9vbGVhbiBlc2NhcGVVbnByaW50YWJsZSkgeworICAgICAgICAvLyBUaGUgYmFzZSBjbGFzcyBpbXBsZW1lbnRhdGlvbiBvZiB0b1J1bGVzIG11bmdlcyB0aGUgSUQgaW50bworICAgICAgICAvLyB0aGUgY29ycmVjdCBmb3JtYXQuICBUaGF0IGlzOiBmb28gPT4gOjpmb28KKyAgICAgICAgLy8gS0VFUCBpbiBzeW5jIHdpdGggcmJ0X3BhcnMKKyAgICAgICAgaWYgKGVzY2FwZVVucHJpbnRhYmxlKSB7CisgICAgICAgICAgICBTdHJpbmdCdWZmZXIgcnVsZXNTb3VyY2UgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgICAgICBTdHJpbmcgaWQgPSBnZXRJRCgpOworICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPGlkLmxlbmd0aCgpOykgeworICAgICAgICAgICAgICAgIGludCBjID0gVVRGMTYuY2hhckF0KGlkLCBpKTsKKyAgICAgICAgICAgICAgICBpZiAoIVV0aWxpdHkuZXNjYXBlVW5wcmludGFibGUocnVsZXNTb3VyY2UsIGMpKSB7CisgICAgICAgICAgICAgICAgICAgIFVURjE2LmFwcGVuZChydWxlc1NvdXJjZSwgYyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGkgKz0gVVRGMTYuZ2V0Q2hhckNvdW50KGMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcnVsZXNTb3VyY2UuaW5zZXJ0KDAsICI6OiIpOworICAgICAgICAgICAgcnVsZXNTb3VyY2UuYXBwZW5kKElEX0RFTElNKTsKKyAgICAgICAgICAgIHJldHVybiBydWxlc1NvdXJjZS50b1N0cmluZygpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAiOjoiICsgZ2V0SUQoKSArIElEX0RFTElNOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIHNldCBvZiBhbGwgY2hhcmFjdGVycyB0aGF0IG1heSBiZSBtb2RpZmllZCBpbiB0aGUKKyAgICAgKiBpbnB1dCB0ZXh0IGJ5IHRoaXMgVHJhbnNsaXRlcmF0b3IuICBUaGlzIGluY29ycG9yYXRlcyB0aGlzCisgICAgICogb2JqZWN0J3MgY3VycmVudCBmaWx0ZXI7IGlmIHRoZSBmaWx0ZXIgaXMgY2hhbmdlZCwgdGhlIHJldHVybgorICAgICAqIHZhbHVlIG9mIHRoaXMgZnVuY3Rpb24gd2lsbCBjaGFuZ2UuICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbgorICAgICAqIHJldHVybnMgYW4gZW1wdHkgc2V0LiAgU29tZSBzdWJjbGFzc2VzIG1heSBvdmVycmlkZSB7QGxpbmsKKyAgICAgKiAjaGFuZGxlR2V0U291cmNlU2V0fSB0byByZXR1cm4gYSBtb3JlIHByZWNpc2UgcmVzdWx0LiAgVGhlCisgICAgICogcmV0dXJuIHJlc3VsdCBpcyBhcHByb3hpbWF0ZSBpbiBhbnkgY2FzZSBhbmQgaXMgaW50ZW5kZWQgZm9yCisgICAgICogdXNlIGJ5IHRlc3RzLCB0b29scywgb3IgdXRpbGl0aWVzLgorICAgICAqIEBzZWUgI2dldFRhcmdldFNldAorICAgICAqIEBzZWUgI2hhbmRsZUdldFNvdXJjZVNldAorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIGZpbmFsIFVuaWNvZGVTZXQgZ2V0U291cmNlU2V0KCkgeworICAgICAgICBVbmljb2RlU2V0IHNldCA9IGhhbmRsZUdldFNvdXJjZVNldCgpOworICAgICAgICBpZiAoZmlsdGVyICE9IG51bGwpIHsKKyAgICAgICAgICAgIFVuaWNvZGVTZXQgZmlsdGVyU2V0OworICAgICAgICAgICAgLy8gTW9zdCwgYnV0IG5vdCBhbGwgZmlsdGVycyB3aWxsIGJlIFVuaWNvZGVTZXRzLiAgT3B0aW1pemUgZm9yCisgICAgICAgICAgICAvLyB0aGUgaGlnaC1ydW5uZXIgY2FzZS4KKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgZmlsdGVyU2V0ID0gKFVuaWNvZGVTZXQpIGZpbHRlcjsKKyAgICAgICAgICAgIH0gY2F0Y2ggKENsYXNzQ2FzdEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgZmlsdGVyU2V0ID0gbmV3IFVuaWNvZGVTZXQoKTsKKyAgICAgICAgICAgICAgICBmaWx0ZXIuYWRkTWF0Y2hTZXRUbyhmaWx0ZXJTZXQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc2V0LnJldGFpbkFsbChmaWx0ZXJTZXQpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBzZXQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogRnJhbWV3b3JrIG1ldGhvZCB0aGF0IHJldHVybnMgdGhlIHNldCBvZiBhbGwgY2hhcmFjdGVycyB0aGF0CisgICAgICogbWF5IGJlIG1vZGlmaWVkIGluIHRoZSBpbnB1dCB0ZXh0IGJ5IHRoaXMgVHJhbnNsaXRlcmF0b3IsCisgICAgICogaWdub3JpbmcgdGhlIGVmZmVjdCBvZiB0aGlzIG9iamVjdCdzIGZpbHRlci4gIFRoZSBiYXNlIGNsYXNzCisgICAgICogaW1wbGVtZW50YXRpb24gcmV0dXJucyB0aGUgZW1wdHkgc2V0LiAgU3ViY2xhc3NlcyB0aGF0IHdpc2ggdG8KKyAgICAgKiBpbXBsZW1lbnQgdGhpcyBzaG91bGQgb3ZlcnJpZGUgdGhpcyBtZXRob2QuCisgICAgICogQHJldHVybiB0aGUgc2V0IG9mIGNoYXJhY3RlcnMgdGhhdCB0aGlzIHRyYW5zbGl0ZXJhdG9yIG1heQorICAgICAqIG1vZGlmeS4gIFRoZSBzZXQgbWF5IGJlIG1vZGlmaWVkLCBzbyBzdWJjbGFzc2VzIHNob3VsZCByZXR1cm4gYQorICAgICAqIG5ld2x5LWNyZWF0ZWQgb2JqZWN0LgorICAgICAqIEBzZWUgI2dldFNvdXJjZVNldAorICAgICAqIEBzZWUgI2dldFRhcmdldFNldAorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHJvdGVjdGVkIFVuaWNvZGVTZXQgaGFuZGxlR2V0U291cmNlU2V0KCkgeworICAgICAgICByZXR1cm4gbmV3IFVuaWNvZGVTZXQoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBzZXQgb2YgYWxsIGNoYXJhY3RlcnMgdGhhdCBtYXkgYmUgZ2VuZXJhdGVkIGFzCisgICAgICogcmVwbGFjZW1lbnQgdGV4dCBieSB0aGlzIHRyYW5zbGl0ZXJhdG9yLiAgVGhlIGRlZmF1bHQKKyAgICAgKiBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIHRoZSBlbXB0eSBzZXQuICBTb21lIHN1YmNsYXNzZXMgbWF5CisgICAgICogb3ZlcnJpZGUgdGhpcyBtZXRob2QgdG8gcmV0dXJuIGEgbW9yZSBwcmVjaXNlIHJlc3VsdC4gIFRoZQorICAgICAqIHJldHVybiByZXN1bHQgaXMgYXBwcm94aW1hdGUgaW4gYW55IGNhc2UgYW5kIGlzIGludGVuZGVkIGZvcgorICAgICAqIHVzZSBieSB0ZXN0cywgdG9vbHMsIG9yIHV0aWxpdGllcyByZXF1aXJpbmcgc3VjaAorICAgICAqIG1ldGEtaW5mb3JtYXRpb24uCisgICAgICogQHNlZSAjZ2V0VGFyZ2V0U2V0CisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgVW5pY29kZVNldCBnZXRUYXJnZXRTZXQoKSB7CisgICAgICAgIHJldHVybiBuZXcgVW5pY29kZVNldCgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhpcyB0cmFuc2xpdGVyYXRvcidzIGludmVyc2UuICBTZWUgdGhlIGNsYXNzCisgICAgICogZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gIFRoaXMgaW1wbGVtZW50YXRpb24gc2ltcGx5IGludmVydHMKKyAgICAgKiB0aGUgdHdvIGVudGl0aWVzIGluIHRoZSBJRCBhbmQgYXR0ZW1wdHMgdG8gcmV0cmlldmUgdGhlCisgICAgICogcmVzdWx0aW5nIHRyYW5zbGl0ZXJhdG9yLiAgVGhhdCBpcywgaWYgPGNvZGU+Z2V0SUQoKTwvY29kZT4KKyAgICAgKiByZXR1cm5zICJBLUIiLCB0aGVuIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIHRoZSByZXN1bHQgb2YKKyAgICAgKiA8Y29kZT5nZXRJbnN0YW5jZSgiQi1BIik8L2NvZGU+LCBvciA8Y29kZT5udWxsPC9jb2RlPiBpZiB0aGF0CisgICAgICogY2FsbCBmYWlscy4KKyAgICAgKgorICAgICAqIDxwPlN1YmNsYXNzZXMgd2l0aCBrbm93bGVkZ2Ugb2YgdGhlaXIgaW52ZXJzZSBtYXkgd2lzaCB0bworICAgICAqIG92ZXJyaWRlIHRoaXMgbWV0aG9kLgorICAgICAqCisgICAgICogQHJldHVybiBhIHRyYW5zbGl0ZXJhdG9yIHRoYXQgaXMgYW4gaW52ZXJzZSwgbm90IG5lY2Vzc2FyaWx5CisgICAgICogZXhhY3QsIG9mIHRoaXMgdHJhbnNsaXRlcmF0b3IsIG9yIDxjb2RlPm51bGw8L2NvZGU+IGlmIG5vIHN1Y2gKKyAgICAgKiB0cmFuc2xpdGVyYXRvciBpcyByZWdpc3RlcmVkLgorICAgICAqIEBzZWUgI3JlZ2lzdGVyQ2xhc3MKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgVHJhbnNsaXRlcmF0b3IgZ2V0SW52ZXJzZSgpIHsKKyAgICAgICAgcmV0dXJuIGdldEluc3RhbmNlKElELCBSRVZFUlNFKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZWdpc3RlcnMgYSBzdWJjbGFzcyBvZiA8Y29kZT5UcmFuc2xpdGVyYXRvcjwvY29kZT4gd2l0aCB0aGUKKyAgICAgKiBzeXN0ZW0uICBUaGlzIHN1YmNsYXNzIG11c3QgaGF2ZSBhIHB1YmxpYyBjb25zdHJ1Y3RvciB0YWtpbmcgbm8KKyAgICAgKiBhcmd1bWVudHMuICBXaGVuIHRoYXQgY29uc3RydWN0b3IgaXMgY2FsbGVkLCB0aGUgcmVzdWx0aW5nCisgICAgICogb2JqZWN0IG11c3QgcmV0dXJuIHRoZSA8Y29kZT5JRDwvY29kZT4gcGFzc2VkIHRvIHRoaXMgbWV0aG9kIGlmCisgICAgICogaXRzIDxjb2RlPmdldElEKCk8L2NvZGU+IG1ldGhvZCBpcyBjYWxsZWQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gSUQgdGhlIHJlc3VsdCBvZiA8Y29kZT5nZXRJRCgpPC9jb2RlPiBmb3IgdGhpcworICAgICAqIHRyYW5zbGl0ZXJhdG9yCisgICAgICogQHBhcmFtIHRyYW5zQ2xhc3MgYSBzdWJjbGFzcyBvZiA8Y29kZT5UcmFuc2xpdGVyYXRvcjwvY29kZT4KKyAgICAgKiBAc2VlICN1bnJlZ2lzdGVyCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQ2xhc3MoU3RyaW5nIElELCBDbGFzcyB0cmFuc0NsYXNzLCBTdHJpbmcgZGlzcGxheU5hbWUpIHsKKyAgICAgICAgcmVnaXN0cnkucHV0KElELCB0cmFuc0NsYXNzLCB0cnVlKTsKKyAgICAgICAgaWYgKGRpc3BsYXlOYW1lICE9IG51bGwpIHsKKyAgICAgICAgICAgIGRpc3BsYXlOYW1lQ2FjaGUucHV0KG5ldyBDYXNlSW5zZW5zaXRpdmVTdHJpbmcoSUQpLCBkaXNwbGF5TmFtZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZWdpc3RlciBhIGZhY3Rvcnkgb2JqZWN0IHdpdGggdGhlIGdpdmVuIElELiAgVGhlIGZhY3RvcnkKKyAgICAgKiBtZXRob2Qgc2hvdWxkIHJldHVybiBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgZ2l2ZW4gdHJhbnNsaXRlcmF0b3IuCisgICAgICogQHBhcmFtIElEIHRoZSBJRCBvZiB0aGlzIHRyYW5zbGl0ZXJhdG9yCisgICAgICogQHBhcmFtIGZhY3RvcnkgdGhlIGZhY3Rvcnkgb2JqZWN0CisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyB2b2lkIHJlZ2lzdGVyRmFjdG9yeShTdHJpbmcgSUQsIEZhY3RvcnkgZmFjdG9yeSkgeworICAgICAgICByZWdpc3RyeS5wdXQoSUQsIGZhY3RvcnksIHRydWUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlZ2lzdGVyIGEgVHJhbnNsaXRlcmF0b3Igb2JqZWN0IHdpdGggdGhlIGdpdmVuIElELgorICAgICAqIEBwYXJhbSBJRCB0aGUgSUQgb2YgdGhpcyB0cmFuc2xpdGVyYXRvcgorICAgICAqIEBwYXJhbSB0cmFucyB0aGUgVHJhbnNsaXRlcmF0b3Igb2JqZWN0IAorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyB2b2lkIHJlZ2lzdGVySW5zdGFuY2UoVHJhbnNsaXRlcmF0b3IgdHJhbnMpIHsKKyAgICAgICAgcmVnaXN0cnkucHV0KHRyYW5zLmdldElEKCksIHRyYW5zLCB0cnVlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZWdpc3RlciBhIFRyYW5zbGl0ZXJhdG9yIG9iamVjdCB3aXRoIHRoZSBnaXZlbiBJRC4KKyAgICAgKiBAcGFyYW0gSUQgdGhlIElEIG9mIHRoaXMgdHJhbnNsaXRlcmF0b3IKKyAgICAgKiBAcGFyYW0gdHJhbnMgdGhlIFRyYW5zbGl0ZXJhdG9yIG9iamVjdAorICAgICAqLworICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVySW5zdGFuY2UoVHJhbnNsaXRlcmF0b3IgdHJhbnMsIGJvb2xlYW4gdmlzaWJsZSkgeworICAgICAgICByZWdpc3RyeS5wdXQodHJhbnMuZ2V0SUQoKSwgdHJhbnMsIHZpc2libGUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlZ2lzdGVyIHR3byB0YXJnZXRzIGFzIGJlaW5nIGludmVyc2VzIG9mIG9uZSBhbm90aGVyLiAgRm9yCisgICAgICogZXhhbXBsZSwgY2FsbGluZyByZWdpc3RlclNwZWNpYWxJbnZlcnNlKCJORkMiLCAiTkZEIiwgdHJ1ZSkgY2F1c2VzCisgICAgICogVHJhbnNsaXRlcmF0b3IgdG8gZm9ybSB0aGUgZm9sbG93aW5nIGludmVyc2UgcmVsYXRpb25zaGlwczoKKyAgICAgKgorICAgICAqIDxwcmU+TkZDID0+IE5GRAorICAgICAqIEFueS1ORkMgPT4gQW55LU5GRAorICAgICAqIE5GRCA9PiBORkMKKyAgICAgKiBBbnktTkZEID0+IEFueS1ORkM8L3ByZT4KKyAgICAgKgorICAgICAqIChXaXRob3V0IHRoZSBzcGVjaWFsIGludmVyc2UgcmVnaXN0cmF0aW9uLCB0aGUgaW52ZXJzZSBvZiBORkMKKyAgICAgKiB3b3VsZCBiZSBORkMtQW55LikgIE5vdGUgdGhhdCBORkQgaXMgc2hvcnRoYW5kIGZvciBBbnktTkZELCBidXQKKyAgICAgKiB0aGF0IHRoZSBwcmVzZW5jZSBvciBhYnNlbmNlIG9mICJBbnktIiBpcyBwcmVzZXJ2ZWQuCisgICAgICoKKyAgICAgKiA8cD5UaGUgcmVsYXRpb25zaGlwIGlzIHN5bW1ldHJpY2FsOyByZWdpc3RlcmluZyAoYSwgYikgaXMKKyAgICAgKiBlcXVpdmFsZW50IHRvIHJlZ2lzdGVyaW5nIChiLCBhKS4KKyAgICAgKgorICAgICAqIDxwPlRoZSByZWxldmFudCBJRHMgbXVzdCBzdGlsbCBiZSByZWdpc3RlcmVkIHNlcGFyYXRlbHkgYXMKKyAgICAgKiBmYWN0b3JpZXMgb3IgY2xhc3Nlcy4KKyAgICAgKgorICAgICAqIDxwPk9ubHkgdGhlIHRhcmdldHMgYXJlIHNwZWNpZmllZC4gIFNwZWNpYWwgaW52ZXJzZXMgYWx3YXlzCisgICAgICogaGF2ZSB0aGUgZm9ybSBBbnktVGFyZ2V0MSA8PT4gQW55LVRhcmdldDIuICBUaGUgdGFyZ2V0IHNob3VsZAorICAgICAqIGhhdmUgY2Fub25pY2FsIGNhc2luZyAodGhlIGNhc2luZyBkZXNpcmVkIHRvIGJlIHByb2R1Y2VkIHdoZW4KKyAgICAgKiBhbiBpbnZlcnNlIGlzIGZvcm1lZCkgYW5kIHNob3VsZCBjb250YWluIG5vIHdoaXRlc3BhY2Ugb3Igb3RoZXIKKyAgICAgKiBleHRyYW5lb3VzIGNoYXJhY3RlcnMuCisgICAgICoKKyAgICAgKiBAcGFyYW0gdGFyZ2V0IHRoZSB0YXJnZXQgYWdhaW5zdCB3aGljaCB0byByZWdpc3RlciB0aGUgaW52ZXJzZQorICAgICAqIEBwYXJhbSBpbnZlcnNlVGFyZ2V0IHRoZSBpbnZlcnNlIG9mIHRhcmdldCwgdGhhdCBpcworICAgICAqIEFueS10YXJnZXQuZ2V0SW52ZXJzZSgpID0+IEFueS1pbnZlcnNlVGFyZ2V0CisgICAgICogQHBhcmFtIGJpZGlyZWN0aW9uYWwgaWYgdHJ1ZSwgcmVnaXN0ZXIgdGhlIHJldmVyc2UgcmVsYXRpb24KKyAgICAgKiBhcyB3ZWxsLCB0aGF0IGlzLCBBbnktaW52ZXJzZVRhcmdldC5nZXRJbnZlcnNlKCkgPT4gQW55LXRhcmdldAorICAgICAqLworICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyU3BlY2lhbEludmVyc2UoU3RyaW5nIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBpbnZlcnNlVGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBiaWRpcmVjdGlvbmFsKSB7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9ySURQYXJzZXIucmVnaXN0ZXJTcGVjaWFsSW52ZXJzZSh0YXJnZXQsIGludmVyc2VUYXJnZXQsIGJpZGlyZWN0aW9uYWwpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFVucmVnaXN0ZXJzIGEgdHJhbnNsaXRlcmF0b3Igb3IgY2xhc3MuICBUaGlzIG1heSBiZSBlaXRoZXIKKyAgICAgKiBhIHN5c3RlbSB0cmFuc2xpdGVyYXRvciBvciBhIHVzZXIgdHJhbnNsaXRlcmF0b3Igb3IgY2xhc3MuCisgICAgICoKKyAgICAgKiBAcGFyYW0gSUQgdGhlIElEIG9mIHRoZSB0cmFuc2xpdGVyYXRvciBvciBjbGFzcworICAgICAqIEBzZWUgI3JlZ2lzdGVyQ2xhc3MKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgdW5yZWdpc3RlcihTdHJpbmcgSUQpIHsKKyAgICAgICAgZGlzcGxheU5hbWVDYWNoZS5yZW1vdmUobmV3IENhc2VJbnNlbnNpdGl2ZVN0cmluZyhJRCkpOworICAgICAgICByZWdpc3RyeS5yZW1vdmUoSUQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYW4gZW51bWVyYXRpb24gb3ZlciB0aGUgcHJvZ3JhbW1hdGljIG5hbWVzIG9mIHJlZ2lzdGVyZWQKKyAgICAgKiA8Y29kZT5UcmFuc2xpdGVyYXRvcjwvY29kZT4gb2JqZWN0cy4gIFRoaXMgaW5jbHVkZXMgYm90aCBzeXN0ZW0KKyAgICAgKiB0cmFuc2xpdGVyYXRvcnMgYW5kIHVzZXIgdHJhbnNsaXRlcmF0b3JzIHJlZ2lzdGVyZWQgdXNpbmcKKyAgICAgKiA8Y29kZT5yZWdpc3RlckNsYXNzKCk8L2NvZGU+LiAgVGhlIGVudW1lcmF0ZWQgbmFtZXMgbWF5IGJlCisgICAgICogcGFzc2VkIHRvIDxjb2RlPmdldEluc3RhbmNlKCk8L2NvZGU+LgorICAgICAqCisgICAgICogQHJldHVybiBBbiA8Y29kZT5FbnVtZXJhdGlvbjwvY29kZT4gb3ZlciA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdHMKKyAgICAgKiBAc2VlICNnZXRJbnN0YW5jZQorICAgICAqIEBzZWUgI3JlZ2lzdGVyQ2xhc3MKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIEVudW1lcmF0aW9uIGdldEF2YWlsYWJsZUlEcygpIHsKKyAgICAgICAgcmV0dXJuIHJlZ2lzdHJ5LmdldEF2YWlsYWJsZUlEcygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYW4gZW51bWVyYXRpb24gb3ZlciB0aGUgc291cmNlIG5hbWVzIG9mIHJlZ2lzdGVyZWQKKyAgICAgKiB0cmFuc2xpdGVyYXRvcnMuICBTb3VyY2UgbmFtZXMgbWF5IGJlIHBhc3NlZCB0bworICAgICAqIGdldEF2YWlsYWJsZVRhcmdldHMoKSB0byBvYnRhaW4gYXZhaWxhYmxlIHRhcmdldHMgZm9yIGVhY2gKKyAgICAgKiBzb3VyY2UuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBFbnVtZXJhdGlvbiBnZXRBdmFpbGFibGVTb3VyY2VzKCkgeworICAgICAgICByZXR1cm4gcmVnaXN0cnkuZ2V0QXZhaWxhYmxlU291cmNlcygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYW4gZW51bWVyYXRpb24gb3ZlciB0aGUgdGFyZ2V0IG5hbWVzIG9mIHJlZ2lzdGVyZWQKKyAgICAgKiB0cmFuc2xpdGVyYXRvcnMgaGF2aW5nIGEgZ2l2ZW4gc291cmNlIG5hbWUuICBUYXJnZXQgbmFtZXMgbWF5CisgICAgICogYmUgcGFzc2VkIHRvIGdldEF2YWlsYWJsZVZhcmlhbnRzKCkgdG8gb2J0YWluIGF2YWlsYWJsZQorICAgICAqIHZhcmlhbnRzIGZvciBlYWNoIHNvdXJjZSBhbmQgdGFyZ2V0IHBhaXIuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBFbnVtZXJhdGlvbiBnZXRBdmFpbGFibGVUYXJnZXRzKFN0cmluZyBzb3VyY2UpIHsKKyAgICAgICAgcmV0dXJuIHJlZ2lzdHJ5LmdldEF2YWlsYWJsZVRhcmdldHMoc291cmNlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGFuIGVudW1lcmF0aW9uIG92ZXIgdGhlIHZhcmlhbnQgbmFtZXMgb2YgcmVnaXN0ZXJlZAorICAgICAqIHRyYW5zbGl0ZXJhdG9ycyBoYXZpbmcgYSBnaXZlbiBzb3VyY2UgbmFtZSBhbmQgdGFyZ2V0IG5hbWUuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBFbnVtZXJhdGlvbiBnZXRBdmFpbGFibGVWYXJpYW50cyhTdHJpbmcgc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHRhcmdldCkgeworICAgICAgICByZXR1cm4gcmVnaXN0cnkuZ2V0QXZhaWxhYmxlVmFyaWFudHMoc291cmNlLCB0YXJnZXQpOworICAgIH0KKworLy8gUkVNT1ZFRDogSUNVIDIuNAorLy8gIC8qKgorLy8gICAqIE1ldGhvZCBmb3Igc3ViY2xhc3NlcyB0byB1c2UgdG8gb2J0YWluIGEgY2hhcmFjdGVyIGluIHRoZSBnaXZlbgorLy8gICAqIHN0cmluZywgd2l0aCBmaWx0ZXJpbmcuICBJZiB0aGUgY2hhcmFjdGVyIGF0IHRoZSBnaXZlbiBvZmZzZXQKKy8vICAgKiBpcyBleGNsdWRlZCBieSB0aGlzIHRyYW5zbGl0ZXJhdG9yJ3MgZmlsdGVyLCB0aGVuIFUrRkZGRSBpcyByZXR1cm5lZC4KKy8vICAgKgorLy8gICAqIDxwPjxiPk5vdGU6PC9iPiBNb3N0IHN1YmNsYXNzZXMgdGhhdCBpbXBsZW1lbnQKKy8vICAgKiBoYW5kbGVUcmFuc2xpdGVyYXRvcigpIHdpbGwgPGVtPm5vdDwvZW0+IHdhbnQgdG8gdXNlIHRoaXMKKy8vICAgKiBtZXRob2QsIHNpbmNlIGNoYXJhY3RlcnMgdGhleSBzZWUgYXJlIGFscmVhZHkgZmlsdGVyZWQuCisvLyAgICoKKy8vICAgKiBAZGVwcmVjYXRlZCB0aGUgbmV3IGFyY2hpdGVjdHVyZSBwcm92aWRlcyBmaWx0ZXJpbmcgYXQgdGhlIHRvcAorLy8gICAqIGxldmVsLiAgVGhpcyBtZXRob2Qgd2lsbCBiZSByZW1vdmVkIERlYyAzMSAyMDAxLgorLy8gICAqLworLy8gIHByb3RlY3RlZCBjaGFyIGZpbHRlcmVkQ2hhckF0KFJlcGxhY2VhYmxlIHRleHQsIGludCBpKSB7CisvLyAgICAgIGNoYXIgYzsKKy8vICAgICAgVW5pY29kZUZpbHRlciBmaWx0ZXIgPSBnZXRGaWx0ZXIoKTsKKy8vICAgICAgcmV0dXJuIChmaWx0ZXIgPT0gbnVsbCkgPyB0ZXh0LmNoYXJBdChpKSA6CisvLyAgICAgICAgICAoZmlsdGVyLmNvbnRhaW5zKGMgPSB0ZXh0LmNoYXJBdChpKSkgPyBjIDogJ1x1RkZGRScpOworLy8gIH0KKworICAgIHN0YXRpYyB7CisgICAgICAgIHJlZ2lzdHJ5ID0gbmV3IFRyYW5zbGl0ZXJhdG9yUmVnaXN0cnkoKTsKKworICAgICAgICAvLyBUaGUgZGlzcGxheSBuYW1lIGNhY2hlIHN0YXJ0cyBvdXQgZW1wdHkKKyAgICAgICAgZGlzcGxheU5hbWVDYWNoZSA9IG5ldyBIYXNodGFibGUoKTsKKworICAgICAgICAvLyBSZWFkIHRoZSBpbmRleCBmaWxlIGFuZCBwb3B1bGF0ZSB0aGUgcmVnaXN0cnkuCisgICAgICAgIC8vIEVhY2ggbGluZSBvZiB0aGUgaW5kZXggZmlsZSBpcyBlaXRoZXIgYmxhbmssIGEgJyMnIGNvbW1lbnQsCisgICAgICAgIC8vIG9yIGEgY29sb24tZGVsaW1pdGVkIGxpbmUuICBJbiB0aGUgbGF0dGVyIGNhc2UgdGhlIGZpcnN0CisgICAgICAgIC8vIGZpZWxkIGlzIHRoZSBJRCBiZWluZyBkZWZpbmVkLiAgVGhlIHNlY29uZCBmaWVsZCBpcyBvbmUgb2YKKyAgICAgICAgLy8gdGhyZWUgc3RyaW5nczogImZpbGUiLCAiaW50ZXJuYWwiLCBvciAiYWxpYXMiLiAgUmVtYWluaW5nCisgICAgICAgIC8vIGZpZWxkcyB2YXJ5IGFjY29yZGluZyB0aGUgdmFsdWUgZm8gdGhlIHNlY29uZCBmaWVsZC4gIFNlZQorICAgICAgICAvLyB0aGUgaW5kZXggZmlsZSBpdHNlbGYgZm9yIGZ1cnRoZXIgZG9jdW1lbnRhdGlvbi4KKyAgICAgICAgUmVzb3VyY2VSZWFkZXIgciA9IG5ldyBSZXNvdXJjZVJlYWRlcigiVHJhbnNsaXRlcmF0b3JfaW5kZXgudHh0Iik7CisgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgIFN0cmluZyBsaW5lID0gbnVsbDsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgbGluZSA9IHIucmVhZExpbmUoKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKGphdmEuaW8uSU9FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJDYW4ndCByZWFkIFRyYW5zbGl0ZXJhdG9yX2luZGV4LnR4dCIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGxpbmUgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAvLyBTa2lwIG92ZXIgd2hpdGVzcGFjZQorICAgICAgICAgICAgICAgIGludCBwb3MgPSAwOworICAgICAgICAgICAgICAgIHdoaWxlIChwb3MgPCBsaW5lLmxlbmd0aCgpICYmCisgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXJQcm9wZXJ0eS5pc1J1bGVXaGl0ZVNwYWNlKGxpbmUuY2hhckF0KHBvcykpKSB7CisgICAgICAgICAgICAgICAgICAgICsrcG9zOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvLyBJZ25vcmUgYmxhbmsgbGluZXMgYW5kIGNvbW1lbnRzCisgICAgICAgICAgICAgICAgaWYgKHBvcyA9PSBsaW5lLmxlbmd0aCgpIHx8IGxpbmUuY2hhckF0KHBvcykgPT0gJyMnKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvLyBQYXJzZSBjb2xvbi1kZWxpbWl0ZWQgbGluZQorICAgICAgICAgICAgICAgIGludCBjb2xvbiA9IGxpbmUuaW5kZXhPZignOicsIHBvcyk7CisgICAgICAgICAgICAgICAgU3RyaW5nIElEID0gbGluZS5zdWJzdHJpbmcocG9zLCBjb2xvbik7CisgICAgICAgICAgICAgICAgcG9zID0gY29sb24rMTsKKyAgICAgICAgICAgICAgICBjb2xvbiA9IGxpbmUuaW5kZXhPZignOicsIHBvcyk7CisgICAgICAgICAgICAgICAgU3RyaW5nIHR5cGUgPSBsaW5lLnN1YnN0cmluZyhwb3MsIGNvbG9uKTsKKyAgICAgICAgICAgICAgICBwb3MgPSBjb2xvbisxOworCisgICAgICAgICAgICAgICAgaWYgKHR5cGUuZXF1YWxzKCJmaWxlIikgfHwgdHlwZS5lcXVhbHMoImludGVybmFsIikpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gUmVzdCBvZiBsaW5lIGlzIDxyZXNvdXJjZT46PGVuY29kaW5nPjo8ZGlyZWN0aW9uPgorICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICBwb3MgICAgICAgY29sb24gICAgICBjMgorICAgICAgICAgICAgICAgICAgICBjb2xvbiA9IGxpbmUuaW5kZXhPZignOicsIHBvcyk7CisgICAgICAgICAgICAgICAgICAgIGludCBjMiA9IGxpbmUuaW5kZXhPZignOicsIGNvbG9uKzEpOworICAgICAgICAgICAgICAgICAgICBpbnQgZGlyOworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGxpbmUuY2hhckF0KGMyKzEpKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0YnOgorICAgICAgICAgICAgICAgICAgICAgICAgZGlyID0gRk9SV0FSRDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlICdSJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpciA9IFJFVkVSU0U7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJDYW4ndCBwYXJzZSBsaW5lOiAiICsgbGluZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcmVnaXN0cnkucHV0KElELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZS5zdWJzdHJpbmcocG9zLCBjb2xvbiksIC8vIHJlc291cmNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lLnN1YnN0cmluZyhjb2xvbisxLCBjMiksIC8vIGVuY29kaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhdHlwZS5lcXVhbHMoImludGVybmFsIikpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZS5lcXVhbHMoImFsaWFzIikpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gUmVzdCBvZiBsaW5lIGlzIHRoZSA8Z2V0SW5zdGFuY2VBcmc+CisgICAgICAgICAgICAgICAgICAgIHJlZ2lzdHJ5LnB1dChJRCwgbGluZS5zdWJzdHJpbmcocG9zKSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVW5rbm93biB0eXBlCisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJDYW4ndCBwYXJzZSBsaW5lOiAiICsgbGluZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBjYXRjaCAoU3RyaW5nSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIkNhbid0IHBhcnNlIGxpbmU6ICIgKyBsaW5lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJlZ2lzdGVyU3BlY2lhbEludmVyc2UoTnVsbFRyYW5zbGl0ZXJhdG9yLlNIT1JUX0lELCBOdWxsVHJhbnNsaXRlcmF0b3IuU0hPUlRfSUQsIGZhbHNlKTsKKworICAgICAgICAvLyBSZWdpc3RlciBub24tcnVsZS1iYXNlZCB0cmFuc2xpdGVyYXRvcnMKKyAgICAgICAgcmVnaXN0ZXJDbGFzcyhOdWxsVHJhbnNsaXRlcmF0b3IuX0lELAorICAgICAgICAgICAgICAgICAgICAgIE51bGxUcmFuc2xpdGVyYXRvci5jbGFzcywgbnVsbCk7CisgICAgICAgIFJlbW92ZVRyYW5zbGl0ZXJhdG9yLnJlZ2lzdGVyKCk7CisgICAgICAgIEVzY2FwZVRyYW5zbGl0ZXJhdG9yLnJlZ2lzdGVyKCk7CisgICAgICAgIFVuZXNjYXBlVHJhbnNsaXRlcmF0b3IucmVnaXN0ZXIoKTsKKyAgICAgICAgTG93ZXJjYXNlVHJhbnNsaXRlcmF0b3IucmVnaXN0ZXIoKTsKKyAgICAgICAgVXBwZXJjYXNlVHJhbnNsaXRlcmF0b3IucmVnaXN0ZXIoKTsKKyAgICAgICAgVGl0bGVjYXNlVHJhbnNsaXRlcmF0b3IucmVnaXN0ZXIoKTsKKyAgICAgICAgVW5pY29kZU5hbWVUcmFuc2xpdGVyYXRvci5yZWdpc3RlcigpOworICAgICAgICBOYW1lVW5pY29kZVRyYW5zbGl0ZXJhdG9yLnJlZ2lzdGVyKCk7CisgICAgICAgIE5vcm1hbGl6YXRpb25UcmFuc2xpdGVyYXRvci5yZWdpc3RlcigpOworICAgICAgICBCcmVha1RyYW5zbGl0ZXJhdG9yLnJlZ2lzdGVyKCk7CisgICAgICAgIEFueVRyYW5zbGl0ZXJhdG9yLnJlZ2lzdGVyKCk7IC8vIGRvIHRoaXMgbGFzdCEKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaGUgZmFjdG9yeSBpbnRlcmZhY2UgZm9yIHRyYW5zbGl0ZXJhdG9ycy4gIFRyYW5zbGl0ZXJhdG9yCisgICAgICogc3ViY2xhc3NlcyBjYW4gcmVnaXN0ZXIgZmFjdG9yeSBvYmplY3RzIGZvciBJRHMgdXNpbmcgdGhlCisgICAgICogcmVnaXN0ZXJGYWN0b3J5KCkgbWV0aG9kIG9mIFRyYW5zbGl0ZXJhdG9yLiAgV2hlbiBpbnZva2VkLCB0aGUKKyAgICAgKiBmYWN0b3J5IG9iamVjdCB3aWxsIGJlIHBhc3NlZCB0aGUgSUQgYmVpbmcgaW5zdGFudGlhdGVkLiAgVGhpcworICAgICAqIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHJlZ2lzdGVyIG9uZSBmYWN0b3J5IG1ldGhvZCB0byBtb3JlIHRoYW4KKyAgICAgKiBvbmUgSUQsIG9yIGZvciBhIGZhY3RvcnkgbWV0aG9kIHRvIHBhcmFtZXRlcml6ZSBpdHMgcmVzdWx0CisgICAgICogYmFzZWQgb24gdGhlIHZhcmlhbnQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnRlcmZhY2UgRmFjdG9yeSB7CisgICAgICAgIC8qKgorICAgICAgICAgKiBSZXR1cm4gYSB0cmFuc2xpdGVyYXRvciBmb3IgdGhlIGdpdmVuIElELgorICAgICAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgICAgICovCisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIGdldEluc3RhbmNlKFN0cmluZyBJRCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3RleHQvVHJhbnNsaXRlcmF0b3JJRFBhcnNlci5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvVHJhbnNsaXRlcmF0b3JJRFBhcnNlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjQ5NTJmN2QKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdGV4dC9UcmFuc2xpdGVyYXRvcklEUGFyc2VyLmphdmEKQEAgLTAsMCArMSw3OTIgQEAKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgQ29weXJpZ2h0IChjKSAyMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uCisqICAgYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgRGF0ZSAgICAgICAgTmFtZSAgICAgICAgRGVzY3JpcHRpb24KKyogICAwMS8xNC8yMDAyICBhbGl1ICAgICAgICBDcmVhdGlvbi4KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKK3BhY2thZ2UgY29tLmlibS5pY3UudGV4dDsKKworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuQ2FzZUluc2Vuc2l0aXZlU3RyaW5nOworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuVXRpbGl0eTsKK2ltcG9ydCBqYXZhLnRleHQuUGFyc2VQb3NpdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOworaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7CisKKy8qKgorICogUGFyc2luZyBjb21wb25lbnQgZm9yIHRyYW5zbGl0ZXJhdG9yIElEcy4gIFRoaXMgY2xhc3MgY29udGFpbnMgb25seQorICogc3RhdGljIG1lbWJlcnM7IGl0IGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQuICBNZXRob2RzIGluIHRoaXMgY2xhc3MKKyAqIHBhcnNlIHZhcmlvdXMgSUQgZm9ybWF0cywgaW5jbHVkaW5nIHRoZSBmb2xsb3dpbmc6CisgKgorICogQSBiYXNpYyBJRCwgd2hpY2ggY29udGFpbnMgc291cmNlLCB0YXJnZXQsIGFuZCB2YXJpYW50LCBidXQgbm8KKyAqIGZpbHRlciBhbmQgbm8gZXhwbGljaXQgaW52ZXJzZS4gIEV4YW1wbGVzIGluY2x1ZGUKKyAqICJMYXRpbi1HcmVlay9VTkdFR04iIGFuZCAiTnVsbCIuCisgKgorICogQSBzaW5nbGUgSUQsIHdoaWNoIGlzIGEgYmFzaWMgSUQgcGx1cyBvcHRpb25hbCBmaWx0ZXIgYW5kIG9wdGlvbmFsCisgKiBleHBsaWNpdCBpbnZlcnNlLiAgRXhhbXBsZXMgaW5jbHVkZSAiW2EtekEtWl0gTGF0aW4tR3JlZWsiIGFuZAorICogIkxvd2VyIChVcHBlcikiLgorICoKKyAqIEEgY29tcG91bmQgSUQsIHdoaWNoIGlzIGEgc2VxdWVuY2Ugb2Ygb25lIG9yIG1vcmUgc2luZ2xlIElEcywKKyAqIHNlcGFyYXRlZCBieSBzZW1pY29sb25zLCB3aXRoIG9wdGlvbmFsIGZvcndhcmQgYW5kIHJldmVyc2UgZ2xvYmFsCisgKiBmaWx0ZXJzLiAgVGhlIGdsb2JhbCBmaWx0ZXJzIGFyZSBVbmljb2RlU2V0IHBhdHRlcm5zIHByZXBlbmRlZCBvcgorICogYXBwZW5kZWQgdG8gdGhlIElEcywgc2VwYXJhdGVkIGJ5IHNlbWljb2xvbnMuICBBbiBhcHBlbmRlZCBmaWx0ZXIKKyAqIG11c3QgYmUgZW5jbG9zZWQgaW4gcGFyZW50aGVzZXMgYW5kIGFwcGxpZXMgaW4gdGhlIHJldmVyc2UKKyAqIGRpcmVjdGlvbi4KKyAqCisgKiBAYXV0aG9yIEFsYW4gTGl1CisgKi8KK2NsYXNzIFRyYW5zbGl0ZXJhdG9ySURQYXJzZXIgeworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciBJRF9ERUxJTSA9ICc7JzsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgVEFSR0VUX1NFUCA9ICctJzsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgVkFSSUFOVF9TRVAgPSAnLyc7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjaGFyIE9QRU5fUkVWID0gJygnOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciBDTE9TRV9SRVYgPSAnKSc7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQU5ZID0gIkFueSI7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRk9SV0FSRCA9IFRyYW5zbGl0ZXJhdG9yLkZPUldBUkQ7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgUkVWRVJTRSA9IFRyYW5zbGl0ZXJhdG9yLlJFVkVSU0U7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBIYXNodGFibGUgU1BFQ0lBTF9JTlZFUlNFUyA9IG5ldyBIYXNodGFibGUoKTsKKworICAgIC8qKgorICAgICAqIEEgc3RydWN0dXJlIGNvbnRhaW5pbmcgdGhlIHBhcnNlZCBkYXRhIG9mIGEgZmlsdGVyZWQgSUQsIHRoYXQKKyAgICAgKiBpcywgYSBiYXNpYyBJRCBvcHRpb25hbGx5IHdpdGggYSBmaWx0ZXIuCisgICAgICoKKyAgICAgKiAnc291cmNlJyBhbmQgJ3RhcmdldCcgd2lsbCBhbHdheXMgYmUgbm9uLW51bGwuICBUaGUgJ3ZhcmlhbnQnCisgICAgICogd2lsbCBiZSBub24tbnVsbCBvbmx5IGlmIGEgbm9uLWVtcHR5IHZhcmlhbnQgd2FzIHBhcnNlZC4KKyAgICAgKgorICAgICAqICdzYXdTb3VyY2UnIGlzIHRydWUgaWYgdGhlcmUgd2FzIGFuIGV4cGxpY2l0IHNvdXJjZSBpbiB0aGUKKyAgICAgKiBwYXJzZWQgaWQuICBJZiB0aGVyZSB3YXMgbm8gZXhwbGljaXQgc291cmNlLCB0aGVuIGFuIGltcGxpZWQKKyAgICAgKiBzb3VyY2Ugb2YgQU5ZIGlzIHJldHVybmVkIGFuZCAnc2F3U291cmNlJyBpcyBzZXQgdG8gZmFsc2UuCisgICAgICogCisgICAgICogJ2ZpbHRlcicgaXMgdGhlIHBhcnNlZCBmaWx0ZXIgcGF0dGVybiwgb3IgbnVsbCBpZiB0aGVyZSB3YXMgbm8KKyAgICAgKiBmaWx0ZXIuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgU3BlY3MgeworICAgICAgICBwdWJsaWMgU3RyaW5nIHNvdXJjZTsgLy8gbm90IG51bGwKKyAgICAgICAgcHVibGljIFN0cmluZyB0YXJnZXQ7IC8vIG5vdCBudWxsCisgICAgICAgIHB1YmxpYyBTdHJpbmcgdmFyaWFudDsgLy8gbWF5IGJlIG51bGwKKyAgICAgICAgcHVibGljIFN0cmluZyBmaWx0ZXI7IC8vIG1heSBiZSBudWxsCisgICAgICAgIHB1YmxpYyBib29sZWFuIHNhd1NvdXJjZTsKKyAgICAgICAgU3BlY3MoU3RyaW5nIHMsIFN0cmluZyB0LCBTdHJpbmcgdiwgYm9vbGVhbiBzYXdTLCBTdHJpbmcgZikgeworICAgICAgICAgICAgc291cmNlID0gczsKKyAgICAgICAgICAgIHRhcmdldCA9IHQ7CisgICAgICAgICAgICB2YXJpYW50ID0gdjsKKyAgICAgICAgICAgIHNhd1NvdXJjZSA9IHNhd1M7CisgICAgICAgICAgICBmaWx0ZXIgPSBmOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQSBzdHJ1Y3R1cmUgY29udGFpbmluZyB0aGUgY2Fub25pY2FsaXplZCBkYXRhIG9mIGEgZmlsdGVyZWQgSUQsCisgICAgICogdGhhdCBpcywgYSBiYXNpYyBJRCBvcHRpb25hbGx5IHdpdGggYSBmaWx0ZXIuCisgICAgICoKKyAgICAgKiAnY2Fub25JRCcgaXMgYWx3YXlzIG5vbi1udWxsLiAgSXQgbWF5IGJlIHRoZSBlbXB0eSBzdHJpbmcgIiIuCisgICAgICogSXQgaXMgdGhlIGlkIHRoYXQgc2hvdWxkIGJlIGFzc2lnbmVkIHRvIHRoZSBjcmVhdGVkCisgICAgICogdHJhbnNsaXRlcmF0b3IuICBJdCBfY2Fubm90XyBiZSBpbnN0YW50aWF0ZWQgZGlyZWN0bHkuCisgICAgICoKKyAgICAgKiAnYmFzaWNJRCcgaXMgYWx3YXlzIG5vbi1udWxsIGFuZCBub24tZW1wdHkuICBJdCBpcyBhbHdheXMgb2YKKyAgICAgKiB0aGUgZm9ybSBTLVQgb3IgUy1UL1YuICBJdCBpcyBkZXNpZ25lZCB0byBiZSBmZWQgdG8gbG93LWxldmVsCisgICAgICogaW5zdGFudGlhdGlvbiBjb2RlIHRoYXQgb25seSB1bmRlcnN0YW5kcyB0aGVzZSB0d28gZm9ybWF0cy4KKyAgICAgKgorICAgICAqICdmaWx0ZXInIG1heSBiZSBudWxsLCBpZiB0aGVyZSBpcyBub25lLCBvciBub24tbnVsbCBhbmQKKyAgICAgKiBub24tZW1wdHkuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBTaW5nbGVJRCB7CisgICAgICAgIHB1YmxpYyBTdHJpbmcgY2Fub25JRDsKKyAgICAgICAgcHVibGljIFN0cmluZyBiYXNpY0lEOworICAgICAgICBwdWJsaWMgU3RyaW5nIGZpbHRlcjsKKyAgICAgICAgU2luZ2xlSUQoU3RyaW5nIGMsIFN0cmluZyBiLCBTdHJpbmcgZikgeworICAgICAgICAgICAgY2Fub25JRCA9IGM7CisgICAgICAgICAgICBiYXNpY0lEID0gYjsKKyAgICAgICAgICAgIGZpbHRlciA9IGY7CisgICAgICAgIH0KKyAgICAgICAgU2luZ2xlSUQoU3RyaW5nIGMsIFN0cmluZyBiKSB7CisgICAgICAgICAgICB0aGlzKGMsIGIsIG51bGwpOworICAgICAgICB9CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIGdldEluc3RhbmNlKCkgeworICAgICAgICAgICAgVHJhbnNsaXRlcmF0b3IgdDsKKyAgICAgICAgICAgIGlmIChiYXNpY0lEID09IG51bGwgfHwgYmFzaWNJRC5sZW5ndGgoKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgdCA9IFRyYW5zbGl0ZXJhdG9yLmdldEJhc2ljSW5zdGFuY2UoIkFueS1OdWxsIiwgY2Fub25JRCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHQgPSBUcmFuc2xpdGVyYXRvci5nZXRCYXNpY0luc3RhbmNlKGJhc2ljSUQsIGNhbm9uSUQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICB0LnNldEZpbHRlcihuZXcgVW5pY29kZVNldChmaWx0ZXIpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFBhcnNlIGEgZmlsdGVyIElELCB0aGF0IGlzLCBhbiBJRCBvZiB0aGUgZ2VuZXJhbCBmb3JtCisgICAgICogIltmMV0gczEtdDEvdjEiLCB3aXRoIHRoZSBmaWx0ZXJzIG9wdGlvbmFsLCBhbmQgdGhlIHZhcmlhbnRzIG9wdGlvbmFsLgorICAgICAqIEBwYXJhbSBpZCB0aGUgaWQgdG8gYmUgcGFyc2VkCisgICAgICogQHBhcmFtIHBvcyBJTlBVVC1PVVRQVVQgcGFyYW1ldGVyLiAgT24gaW5wdXQsIHRoZSBwb3NpdGlvbiBvZgorICAgICAqIHRoZSBmaXJzdCBjaGFyYWN0ZXIgdG8gcGFyc2UuICBPbiBvdXRwdXQsIHRoZSBwb3NpdGlvbiBhZnRlcgorICAgICAqIHRoZSBsYXN0IGNoYXJhY3RlciBwYXJzZWQuCisgICAgICogQHJldHVybiBhIFNpbmdsZUlEIG9iamVjdCBvciBudWxsIGlmIHRoZSBwYXJzZSBmYWlscworICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU2luZ2xlSUQgcGFyc2VGaWx0ZXJJRChTdHJpbmcgaWQsIGludFtdIHBvcykgeworCisgICAgICAgIGludCBzdGFydCA9IHBvc1swXTsKKyAgICAgICAgU3BlY3Mgc3BlY3MgPSBwYXJzZUZpbHRlcklEKGlkLCBwb3MsIHRydWUpOworICAgICAgICBpZiAoc3BlY3MgPT0gbnVsbCkgeworICAgICAgICAgICAgcG9zWzBdID0gc3RhcnQ7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEFzc2VtYmxlIHJldHVybiByZXN1bHRzCisgICAgICAgIFNpbmdsZUlEIHNpbmdsZSA9IHNwZWNzVG9JRChzcGVjcywgRk9SV0FSRCk7CisgICAgICAgIHNpbmdsZS5maWx0ZXIgPSBzcGVjcy5maWx0ZXI7CisgICAgICAgIHJldHVybiBzaW5nbGU7CisgICAgfQorCisgICAgLyoqCisgICAgICogUGFyc2UgYSBzaW5nbGUgSUQsIHRoYXQgaXMsIGFuIElEIG9mIHRoZSBnZW5lcmFsIGZvcm0KKyAgICAgKiAiW2YxXSBzMS10MS92MSAoW2YyXSBzMi10My92MikiLCB3aXRoIHRoZSBwYXJlbnRoZXNpemVkIGVsZW1lbnQKKyAgICAgKiBvcHRpb25hbCwgdGhlIGZpbHRlcnMgb3B0aW9uYWwsIGFuZCB0aGUgdmFyaWFudHMgb3B0aW9uYWwuCisgICAgICogQHBhcmFtIGlkIHRoZSBpZCB0byBiZSBwYXJzZWQKKyAgICAgKiBAcGFyYW0gcG9zIElOUFVULU9VVFBVVCBwYXJhbWV0ZXIuICBPbiBpbnB1dCwgdGhlIHBvc2l0aW9uIG9mCisgICAgICogdGhlIGZpcnN0IGNoYXJhY3RlciB0byBwYXJzZS4gIE9uIG91dHB1dCwgdGhlIHBvc2l0aW9uIGFmdGVyCisgICAgICogdGhlIGxhc3QgY2hhcmFjdGVyIHBhcnNlZC4KKyAgICAgKiBAcGFyYW0gZGlyIHRoZSBkaXJlY3Rpb24uICBJZiB0aGUgZGlyZWN0aW9uIGlzIFJFVkVSU0UgdGhlbiB0aGUKKyAgICAgKiBTaW5nbGVJRCBpcyBjb25zdHJ1Y3RlZCBmb3IgdGhlIHJldmVyc2UgZGlyZWN0aW9uLgorICAgICAqIEByZXR1cm4gYSBTaW5nbGVJRCBvYmplY3Qgb3IgbnVsbAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU2luZ2xlSUQgcGFyc2VTaW5nbGVJRChTdHJpbmcgaWQsIGludFtdIHBvcywgaW50IGRpcikgeworCisgICAgICAgIGludCBzdGFydCA9IHBvc1swXTsKKworICAgICAgICAvLyBUaGUgSUQgd2lsbCBiZSBvZiB0aGUgZm9ybSBBLCBBKCksIEEoQiksIG9yIChCKSwgd2hlcmUKKyAgICAgICAgLy8gQSBhbmQgQiBhcmUgZmlsdGVyIElEcy4KKyAgICAgICAgU3BlY3Mgc3BlY3NBID0gbnVsbDsKKyAgICAgICAgU3BlY3Mgc3BlY3NCID0gbnVsbDsKKyAgICAgICAgYm9vbGVhbiBzYXdQYXJlbiA9IGZhbHNlOworCisgICAgICAgIC8vIE9uIHRoZSBmaXJzdCBwYXNzLCBsb29rIGZvciAoQikgb3IgKCkuICBJZiB0aGlzIGZhaWxzLCB0aGVuCisgICAgICAgIC8vIG9uIHRoZSBzZWNvbmQgcGFzcywgbG9vayBmb3IgQSwgQShCKSwgb3IgQSgpLgorICAgICAgICBmb3IgKGludCBwYXNzPTE7IHBhc3M8PTI7ICsrcGFzcykgeworICAgICAgICAgICAgaWYgKHBhc3MgPT0gMikgeworICAgICAgICAgICAgICAgIHNwZWNzQSA9IHBhcnNlRmlsdGVySUQoaWQsIHBvcywgdHJ1ZSk7CisgICAgICAgICAgICAgICAgaWYgKHNwZWNzQSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIHBvc1swXSA9IHN0YXJ0OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoVXRpbGl0eS5wYXJzZUNoYXIoaWQsIHBvcywgT1BFTl9SRVYpKSB7CisgICAgICAgICAgICAgICAgc2F3UGFyZW4gPSB0cnVlOworICAgICAgICAgICAgICAgIGlmICghVXRpbGl0eS5wYXJzZUNoYXIoaWQsIHBvcywgQ0xPU0VfUkVWKSkgeworICAgICAgICAgICAgICAgICAgICBzcGVjc0IgPSBwYXJzZUZpbHRlcklEKGlkLCBwb3MsIHRydWUpOworICAgICAgICAgICAgICAgICAgICAvLyBNdXN0IGNsb3NlIHdpdGggYSAnKScKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNwZWNzQiA9PSBudWxsIHx8ICFVdGlsaXR5LnBhcnNlQ2hhcihpZCwgcG9zLCBDTE9TRV9SRVYpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwb3NbMF0gPSBzdGFydDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gQXNzZW1ibGUgcmV0dXJuIHJlc3VsdHMKKyAgICAgICAgU2luZ2xlSUQgc2luZ2xlOworICAgICAgICBpZiAoc2F3UGFyZW4pIHsKKyAgICAgICAgICAgIGlmIChkaXIgPT0gRk9SV0FSRCkgeworICAgICAgICAgICAgICAgIHNpbmdsZSA9IHNwZWNzVG9JRChzcGVjc0EsIEZPUldBUkQpOworICAgICAgICAgICAgICAgIHNpbmdsZS5jYW5vbklEID0gc2luZ2xlLmNhbm9uSUQgKworICAgICAgICAgICAgICAgICAgICBPUEVOX1JFViArIHNwZWNzVG9JRChzcGVjc0IsIEZPUldBUkQpLmNhbm9uSUQgKyBDTE9TRV9SRVY7CisgICAgICAgICAgICAgICAgaWYgKHNwZWNzQSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIHNpbmdsZS5maWx0ZXIgPSBzcGVjc0EuZmlsdGVyOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc2luZ2xlID0gc3BlY3NUb0lEKHNwZWNzQiwgRk9SV0FSRCk7CisgICAgICAgICAgICAgICAgc2luZ2xlLmNhbm9uSUQgPSBzaW5nbGUuY2Fub25JRCArCisgICAgICAgICAgICAgICAgICAgIE9QRU5fUkVWICsgc3BlY3NUb0lEKHNwZWNzQSwgRk9SV0FSRCkuY2Fub25JRCArIENMT1NFX1JFVjsKKyAgICAgICAgICAgICAgICBpZiAoc3BlY3NCICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgc2luZ2xlLmZpbHRlciA9IHNwZWNzQi5maWx0ZXI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gYXNzZXJ0KHNwZWNzQSAhPSBudWxsKTsKKyAgICAgICAgICAgIGlmIChkaXIgPT0gRk9SV0FSRCkgeworICAgICAgICAgICAgICAgIHNpbmdsZSA9IHNwZWNzVG9JRChzcGVjc0EsIEZPUldBUkQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzaW5nbGUgPSBzcGVjc1RvU3BlY2lhbEludmVyc2Uoc3BlY3NBKTsKKyAgICAgICAgICAgICAgICBpZiAoc2luZ2xlID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgc2luZ2xlID0gc3BlY3NUb0lEKHNwZWNzQSwgUkVWRVJTRSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgc2luZ2xlLmZpbHRlciA9IHNwZWNzQS5maWx0ZXI7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gc2luZ2xlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFBhcnNlIGEgZ2xvYmFsIGZpbHRlciBvZiB0aGUgZm9ybSAiW2ZdIiBvciAiKFtmXSkiLCBkZXBlbmRpbmcKKyAgICAgKiBvbiAnd2l0aFBhcmVucycuCisgICAgICogQHBhcmFtIGlkIHRoZSBwYXR0ZXJuIHRoZSBwYXJzZQorICAgICAqIEBwYXJhbSBwb3MgSU5QVVQtT1VUUFVUIHBhcmFtZXRlci4gIE9uIGlucHV0LCB0aGUgcG9zaXRpb24gb2YKKyAgICAgKiB0aGUgZmlyc3QgY2hhcmFjdGVyIHRvIHBhcnNlLiAgT24gb3V0cHV0LCB0aGUgcG9zaXRpb24gYWZ0ZXIKKyAgICAgKiB0aGUgbGFzdCBjaGFyYWN0ZXIgcGFyc2VkLgorICAgICAqIEBwYXJhbSBkaXIgdGhlIGRpcmVjdGlvbi4KKyAgICAgKiBAcGFyYW0gd2l0aFBhcmVucyBJTlBVVC1PVVRQVVQgcGFyYW1ldGVyLiAgT24gZW50cnksIGlmCisgICAgICogd2l0aFBhcmVuc1swXSBpcyAwLCB0aGVuIHBhcmVucyBhcmUgZGlzYWxsb3dlZC4gIElmIGl0IGlzIDEsCisgICAgICogdGhlbiBwYXJlbnMgYXJlIHJlcXVpcmVzLiAgSWYgaXQgaXMgLTEsIHRoZW4gcGFyZW5zIGFyZQorICAgICAqIG9wdGlvbmFsLCBhbmQgdGhlIHJldHVybiByZXN1bHQgd2lsbCBiZSBzZXQgdG8gMCBvciAxLgorICAgICAqIEBwYXJhbSBjYW5vbklEIE9VVFBVVCBwYXJhbWV0ZXIuICBUaGUgcGF0dGVybiBmb3IgdGhlIGZpbHRlcgorICAgICAqIGFkZGVkIHRvIHRoZSBjYW5vbklELCBlaXRoZXIgYXQgdGhlIGVuZCwgaWYgZGlyIGlzIEZPUldBUkQsIG9yCisgICAgICogYXQgdGhlIHN0YXJ0LCBpZiBkaXIgaXMgUkVWRVJTRS4gIFRoZSBwYXR0ZXJuIHdpbGwgYmUgZW5jbG9zZWQKKyAgICAgKiBpbiBwYXJlbnRoZXNlcyBpZiBhcHByb3ByaWF0ZSwgYW5kIHdpbGwgYmUgc3VmZml4ZWQgd2l0aCBhbgorICAgICAqIElEX0RFTElNIGNoYXJhY3Rlci4gIE1heSBiZSBudWxsLgorICAgICAqIEByZXR1cm4gYSBVbmljb2RlU2V0IG9iamVjdCBvciBudWxsLiAgQSBub24tbnVsbCByZXN1bHRzCisgICAgICogaW5kaWNhdGVzIGEgc3VjY2Vzc2Z1bCBwYXJzZSwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZSBmaWx0ZXIKKyAgICAgKiBhcHBsaWVzIHRvIHRoZSBnaXZlbiBkaXJlY3Rpb24uICBUaGUgY2FsbGVyIHNob3VsZCBkaXNjYXJkIGl0CisgICAgICogaWYgd2l0aFBhcmVucyAhPSAoZGlyID09IFJFVkVSU0UpLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgVW5pY29kZVNldCBwYXJzZUdsb2JhbEZpbHRlcihTdHJpbmcgaWQsIGludFtdIHBvcywgaW50IGRpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50W10gd2l0aFBhcmVucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nQnVmZmVyIGNhbm9uSUQpIHsKKyAgICAgICAgVW5pY29kZVNldCBmaWx0ZXIgPSBudWxsOworICAgICAgICBpbnQgc3RhcnQgPSBwb3NbMF07CisKKyAgICAgICAgaWYgKHdpdGhQYXJlbnNbMF0gPT0gLTEpIHsKKyAgICAgICAgICAgIHdpdGhQYXJlbnNbMF0gPSBVdGlsaXR5LnBhcnNlQ2hhcihpZCwgcG9zLCBPUEVOX1JFVikgPyAxIDogMDsKKyAgICAgICAgfSBlbHNlIGlmICh3aXRoUGFyZW5zWzBdID09IDEpIHsKKyAgICAgICAgICAgIGlmICghVXRpbGl0eS5wYXJzZUNoYXIoaWQsIHBvcywgT1BFTl9SRVYpKSB7CisgICAgICAgICAgICAgICAgcG9zWzBdID0gc3RhcnQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFV0aWxpdHkuc2tpcFdoaXRlc3BhY2UoaWQsIHBvcyk7CisKKyAgICAgICAgaWYgKFVuaWNvZGVTZXQucmVzZW1ibGVzUGF0dGVybihpZCwgcG9zWzBdKSkgeworICAgICAgICAgICAgUGFyc2VQb3NpdGlvbiBwcG9zID0gbmV3IFBhcnNlUG9zaXRpb24ocG9zWzBdKTsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgZmlsdGVyID0gbmV3IFVuaWNvZGVTZXQoaWQsIHBwb3MsIG51bGwpOworICAgICAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBwb3NbMF0gPSBzdGFydDsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgU3RyaW5nIHBhdHRlcm4gPSBpZC5zdWJzdHJpbmcocG9zWzBdLCBwcG9zLmdldEluZGV4KCkpOworICAgICAgICAgICAgcG9zWzBdID0gcHBvcy5nZXRJbmRleCgpOworCisgICAgICAgICAgICBpZiAod2l0aFBhcmVuc1swXSA9PSAxICYmICFVdGlsaXR5LnBhcnNlQ2hhcihpZCwgcG9zLCBDTE9TRV9SRVYpKSB7CisgICAgICAgICAgICAgICAgcG9zWzBdID0gc3RhcnQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEluIHRoZSBmb3J3YXJkIGRpcmVjdGlvbiwgYXBwZW5kIHRoZSBwYXR0ZXJuIHRvIHRoZQorICAgICAgICAgICAgLy8gY2Fub25JRC4gIEluIHRoZSByZXZlcnNlLCBpbnNlcnQgaXQgYXQgemVybywgYW5kIGludmVydAorICAgICAgICAgICAgLy8gdGhlIHByZXNlbmNlIG9mIHBhcmVucyAoIkEiIDwtPiAiKEEpIikuCisgICAgICAgICAgICBpZiAoY2Fub25JRCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgaWYgKGRpciA9PSBGT1JXQVJEKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh3aXRoUGFyZW5zWzBdID09IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm4gPSBTdHJpbmcudmFsdWVPZihPUEVOX1JFVikgKyBwYXR0ZXJuICsgQ0xPU0VfUkVWOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGNhbm9uSUQuYXBwZW5kKHBhdHRlcm4gKyBJRF9ERUxJTSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdpdGhQYXJlbnNbMF0gPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybiA9IFN0cmluZy52YWx1ZU9mKE9QRU5fUkVWKSArIHBhdHRlcm4gKyBDTE9TRV9SRVY7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgY2Fub25JRC5pbnNlcnQoMCwgcGF0dGVybiArIElEX0RFTElNKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZmlsdGVyOworICAgIH0KKworICAgIC8qKgorICAgICAqIFBhcnNlIGEgY29tcG91bmQgSUQsIGNvbnNpc3Rpbmcgb2YgYW4gb3B0aW9uYWwgZm9yd2FyZCBnbG9iYWwKKyAgICAgKiBmaWx0ZXIsIGEgc2VwYXJhdG9yLCBvbmUgb3IgbW9yZSBzaW5nbGUgSURzIGRlbGltaXRlZCBieQorICAgICAqIHNlcGFyYXRvcnMsIGFuIGFuIG9wdGlvbmFsIHJldmVyc2UgZ2xvYmFsIGZpbHRlci4gIFRoZQorICAgICAqIHNlcGFyYXRvciBpcyBhIHNlbWljb2xvbi4gIFRoZSBnbG9iYWwgZmlsdGVycyBhcmUgVW5pY29kZVNldAorICAgICAqIHBhdHRlcm5zLiAgVGhlIHJldmVyc2UgZ2xvYmFsIGZpbHRlciBtdXN0IGJlIGVuY2xvc2VkIGluCisgICAgICogcGFyZW50aGVzZXMuCisgICAgICogQHBhcmFtIGlkIHRoZSBwYXR0ZXJuIHRoZSBwYXJzZQorICAgICAqIEBwYXJhbSBkaXIgdGhlIGRpcmVjdGlvbi4KKyAgICAgKiBAcGFyYW0gY2Fub25JRCBPVVRQVVQgcGFyYW1ldGVyIHRoYXQgcmVjZWl2ZXMgdGhlIGNhbm9uaWNhbCBJRCwKKyAgICAgKiBjb25zaXN0aW5nIG9mIGNhbm9uaWNhbCBJRHMgZm9yIGFsbCBlbGVtZW50cywgYXMgcmV0dXJuZWQgYnkKKyAgICAgKiBwYXJzZVNpbmdsZUlEKCksIHNlcGFyYXRlZCBieSBzZW1pY29sb25zLiAgUHJldmlvdXMgY29udGVudHMKKyAgICAgKiBhcmUgZGlzY2FyZGVkLgorICAgICAqIEBwYXJhbSBsaXN0IE9VVFBVVCBwYXJhbWV0ZXIgdGhhdCByZWNlaXZlcyBhIGxpc3Qgb2YgU2luZ2xlSUQKKyAgICAgKiBvYmplY3RzIHJlcHJlc2VudGluZyB0aGUgcGFyc2VkIElEcy4gIFByZXZpb3VzIGNvbnRlbnRzIGFyZQorICAgICAqIGRpc2NhcmRlZC4KKyAgICAgKiBAcGFyYW0gZ2xvYmFsRmlsdGVyIE9VVFBVVCBwYXJhbWV0ZXIgdGhhdCByZWNlaXZlcyBhIHBvaW50ZXIgdG8KKyAgICAgKiBhIG5ld2x5IGNyZWF0ZWQgZ2xvYmFsIGZpbHRlciBmb3IgdGhpcyBJRCBpbiB0aGlzIGRpcmVjdGlvbiwgb3IKKyAgICAgKiBudWxsIGlmIHRoZXJlIGlzIG5vbmUuCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSBwYXJzZSBzdWNjZWVkcywgdGhhdCBpcywgaWYgdGhlIGVudGlyZQorICAgICAqIGlkIGlzIGNvbnN1bWVkIHdpdGhvdXQgc3ludGF4IGVycm9yLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBwYXJzZUNvbXBvdW5kSUQoU3RyaW5nIGlkLCBpbnQgZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nQnVmZmVyIGNhbm9uSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZWN0b3IgbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVTZXRbXSBnbG9iYWxGaWx0ZXIpIHsKKyAgICAgICAgaW50W10gcG9zID0gbmV3IGludFtdIHsgMCB9OworICAgICAgICBpbnRbXSB3aXRoUGFyZW5zID0gbmV3IGludFsxXTsKKyAgICAgICAgbGlzdC5yZW1vdmVBbGxFbGVtZW50cygpOworICAgICAgICBVbmljb2RlU2V0IGZpbHRlcjsKKyAgICAgICAgZ2xvYmFsRmlsdGVyWzBdID0gbnVsbDsKKyAgICAgICAgY2Fub25JRC5zZXRMZW5ndGgoMCk7CisKKyAgICAgICAgLy8gUGFyc2UgbGVhZGluZyBnbG9iYWwgZmlsdGVyLCBpZiBhbnkKKyAgICAgICAgd2l0aFBhcmVuc1swXSA9IDA7IC8vIHBhcmVucyBkaXNhbGxvd2VkCisgICAgICAgIGZpbHRlciA9IHBhcnNlR2xvYmFsRmlsdGVyKGlkLCBwb3MsIGRpciwgd2l0aFBhcmVucywgY2Fub25JRCk7CisgICAgICAgIGlmIChmaWx0ZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKCFVdGlsaXR5LnBhcnNlQ2hhcihpZCwgcG9zLCBJRF9ERUxJTSkpIHsKKyAgICAgICAgICAgICAgICAvLyBOb3QgYSBnbG9iYWwgZmlsdGVyOyBiYWNrdXAgYW5kIHJlc3VtZQorICAgICAgICAgICAgICAgIGNhbm9uSUQuc2V0TGVuZ3RoKDApOworICAgICAgICAgICAgICAgIHBvc1swXSA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZGlyID09IEZPUldBUkQpIHsKKyAgICAgICAgICAgICAgICBnbG9iYWxGaWx0ZXJbMF0gPSBmaWx0ZXI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBib29sZWFuIHNhd0RlbGltaXRlciA9IHRydWU7CisgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgIFNpbmdsZUlEIHNpbmdsZSA9IHBhcnNlU2luZ2xlSUQoaWQsIHBvcywgZGlyKTsKKyAgICAgICAgICAgIGlmIChzaW5nbGUgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGRpciA9PSBGT1JXQVJEKSB7CisgICAgICAgICAgICAgICAgbGlzdC5hZGRFbGVtZW50KHNpbmdsZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGxpc3QuaW5zZXJ0RWxlbWVudEF0KHNpbmdsZSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIVV0aWxpdHkucGFyc2VDaGFyKGlkLCBwb3MsIElEX0RFTElNKSkgeworICAgICAgICAgICAgICAgIHNhd0RlbGltaXRlciA9IGZhbHNlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKGxpc3Quc2l6ZSgpID09IDApIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIENvbnN0cnVjdCBjYW5vbmljYWwgSUQKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPGxpc3Quc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIFNpbmdsZUlEIHNpbmdsZSA9IChTaW5nbGVJRCkgbGlzdC5lbGVtZW50QXQoaSk7CisgICAgICAgICAgICBjYW5vbklELmFwcGVuZChzaW5nbGUuY2Fub25JRCk7CisgICAgICAgICAgICBpZiAoaSAhPSAobGlzdC5zaXplKCktMSkpIHsKKyAgICAgICAgICAgICAgICBjYW5vbklELmFwcGVuZChJRF9ERUxJTSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBQYXJzZSB0cmFpbGluZyBnbG9iYWwgZmlsdGVyLCBpZiBhbnksIGFuZCBvbmx5IGlmIHdlIHNhdworICAgICAgICAvLyBhIHRyYWlsaW5nIGRlbGltaXRlciBhZnRlciB0aGUgSURzLgorICAgICAgICBpZiAoc2F3RGVsaW1pdGVyKSB7CisgICAgICAgICAgICB3aXRoUGFyZW5zWzBdID0gMTsgLy8gcGFyZW5zIHJlcXVpcmVkCisgICAgICAgICAgICBmaWx0ZXIgPSBwYXJzZUdsb2JhbEZpbHRlcihpZCwgcG9zLCBkaXIsIHdpdGhQYXJlbnMsIGNhbm9uSUQpOworICAgICAgICAgICAgaWYgKGZpbHRlciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgLy8gRG9uJ3QgcmVxdWlyZSB0cmFpbGluZyAnOycsIGJ1dCBwYXJzZSBpdCBpZiBwcmVzZW50CisgICAgICAgICAgICAgICAgVXRpbGl0eS5wYXJzZUNoYXIoaWQsIHBvcywgSURfREVMSU0pOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChkaXIgPT0gUkVWRVJTRSkgeworICAgICAgICAgICAgICAgICAgICBnbG9iYWxGaWx0ZXJbMF0gPSBmaWx0ZXI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gVHJhaWxpbmcgdW5wYXJzZWQgdGV4dCBpcyBhIHN5bnRheCBlcnJvcgorICAgICAgICBVdGlsaXR5LnNraXBXaGl0ZXNwYWNlKGlkLCBwb3NbMF0pOworICAgICAgICBpZiAocG9zWzBdICE9IGlkLmxlbmd0aCgpKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb252ZXJ0IHRoZSBlbGVtZW50cyBvZiB0aGUgJ2xpc3QnIHZlY3Rvciwgd2hpY2ggYXJlIFNpbmdsZUlECisgICAgICogb2JqZWN0cywgaW50byBhY3R1YWwgVHJhbnNsaXRlcmF0b3Igb2JqZWN0cy4gIEluIHRoZSBjb3Vyc2Ugb2YKKyAgICAgKiB0aGlzLCBzb21lIChvciBhbGwpIGVudHJpZXMgbWF5IGJlIHJlbW92ZWQuICBJZiBhbGwgZW50cmllcworICAgICAqIGFyZSByZW1vdmVkLCB0aGUgTnVsbCB0cmFuc2xpdGVyYXRvciB3aWxsIGJlIGFkZGVkLgorICAgICAqCisgICAgICogRGVsZXRlIGVudHJpZXMgd2l0aCBlbXB0eSBiYXNpY0lEczsgdGhlc2UgYXJlIGdlbmVyYXRlZCBieQorICAgICAqIGVsZW1lbnRzIGxpa2UgIihBKSIgaW4gdGhlIGZvcndhcmQgZGlyZWN0aW9uLCBvciAiQSgpIiBpbgorICAgICAqIHRoZSByZXZlcnNlLiAgVEhJUyBNQVkgUkVTVUxUIElOIEFOIEVNUFRZIFZFQ1RPUi4gIENvbnZlcnQKKyAgICAgKiBTaW5nbGVJRCBlbnRyaWVzIHRvIGFjdHVhbCB0cmFuc2xpdGVyYXRvcnMuCisgICAgICoKKyAgICAgKiBBbHNvLCBvcHRpb25hbGx5LCBpbnNlcnQgdGhlIGdpdmVuIHRyYW5zbGl0ZXJhdG9yIGF0IHRoZSBnaXZlbgorICAgICAqIHBvc2l0aW9uLiAgVGhpcyBlZmZlY3RpdmVseSBoYXBwZW5zIGJlZm9yZSBhbnl0aGluZyBlbHNlLgorICAgICAqCisgICAgICogQHBhcmFtIGxpc3QgdmVjdG9yIG9mIFNpbmdsZUlEIG9iamVjdHMuICBPbiBleGl0LCB2ZWN0b3IKKyAgICAgKiBvZiBvbmUgb3IgbW9yZSBUcmFuc2xpdGVyYXRvcnMuCisgICAgICogQHBhcmFtIGluc2VydCBUcmFuc2xpdGVyYXRvciB0byBpbnNlcnQsIG9yIG51bGwgaWYgbm9uZS4KKyAgICAgKiBAcGFyYW0gaW5zZXJ0SW5kZXggaW5kZXggZnJvbSAwLi5saXN0LnNpemUoKS0xLCBhdCB3aGljaAorICAgICAqIHRvIHBsYWNlICdpbnNlcnQnLCBvciAtMSBpZiBub25lLgorICAgICAqIEByZXR1cm4gbmV3IHZhbHVlIG9mIGluc2VydEluZGV4LiAgVGhlIGluZGV4IHdpbGwgc2hpZnQgaWYKKyAgICAgKiB0aGVyZSBhcmUgZW1wdHkgaXRlbXMsIGxpa2UgIihMb3dlcikiLCB3aXRoIGluZGljZXMgbGVzcyB0aGFuCisgICAgICogaW5zZXJ0SW5kZXguCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnQgaW5zdGFudGlhdGVMaXN0KFZlY3RvciBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xpdGVyYXRvciBpbnNlcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnNlcnRJbmRleCkgeworICAgICAgICBUcmFuc2xpdGVyYXRvciB0OworICAgICAgICBmb3IgKGludCBpPTA7IGk8PWxpc3Quc2l6ZSgpOyApIHsgLy8gW3NpY106IGk8PWxpc3Quc2l6ZSgpCisgICAgICAgICAgICBpZiAoaW5zZXJ0SW5kZXggPT0gaSkgeworICAgICAgICAgICAgICAgIGxpc3QuaW5zZXJ0RWxlbWVudEF0KGluc2VydCwgaSsrKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gV2UgcnVuIHRoZSBsb29wIHRvbyBsb25nIGJ5IG9uZSwgc28gd2UgY2FuCisgICAgICAgICAgICAvLyBkbyBhbiBpbnNlcnQgYWZ0ZXIgdGhlIGxhc3QgZWxlbWVudAorICAgICAgICAgICAgaWYgKGk9PWxpc3Quc2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFNpbmdsZUlEIHNpbmdsZSA9IChTaW5nbGVJRCkgbGlzdC5lbGVtZW50QXQoaSk7CisgICAgICAgICAgICBpZiAoc2luZ2xlLmJhc2ljSUQubGVuZ3RoKCkgPT0gMCkgeworICAgICAgICAgICAgICAgIGxpc3QucmVtb3ZlRWxlbWVudEF0KGkpOworICAgICAgICAgICAgICAgIGlmIChpbnNlcnRJbmRleCA+IGkpIHsKKyAgICAgICAgICAgICAgICAgICAgLS1pbnNlcnRJbmRleDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHQgPSBzaW5nbGUuZ2V0SW5zdGFuY2UoKTsKKyAgICAgICAgICAgICAgICBpZiAodCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIklsbGVnYWwgSUQgIiArIHNpbmdsZS5jYW5vbklEKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbGlzdC5zZXRFbGVtZW50QXQodCwgaSk7CisgICAgICAgICAgICAgICAgKytpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBBbiBlbXB0eSBsaXN0IGlzIGVxdWl2YWxlbnQgdG8gYSBOdWxsIHRyYW5zbGl0ZXJhdG9yLgorICAgICAgICBpZiAobGlzdC5zaXplKCkgPT0gMCkgeworICAgICAgICAgICAgdCA9IFRyYW5zbGl0ZXJhdG9yLmdldEJhc2ljSW5zdGFuY2UoIkFueS1OdWxsIiwgbnVsbCk7CisgICAgICAgICAgICBpZiAodCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgLy8gU2hvdWxkIG5ldmVyIGhhcHBlbgorICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludGVybmFsIGVycm9yOyBjYW5ub3QgaW5zdGFudGlhdGUgQW55LU51bGwiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxpc3QuYWRkRWxlbWVudCh0KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBpbnNlcnRJbmRleDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQYXJzZSBhbiBJRCBpbnRvIHBpZWNlcy4gIFRha2UgSURzIG9mIHRoZSBmb3JtIFQsIFQvViwgUy1ULAorICAgICAqIFMtVC9WLCBvciBTL1YtVC4gIElmIHRoZSBzb3VyY2UgaXMgbWlzc2luZywgcmV0dXJuIGEgc291cmNlIG9mCisgICAgICogQU5ZLgorICAgICAqIEBwYXJhbSBpZCB0aGUgaWQgc3RyaW5nLCBpbiBhbnkgb2Ygc2V2ZXJhbCBmb3JtcworICAgICAqIEByZXR1cm4gYW4gYXJyYXkgb2YgNCBzdHJpbmdzOiBzb3VyY2UsIHRhcmdldCwgdmFyaWFudCwgYW5kCisgICAgICogaXNTb3VyY2VQcmVzZW50LiAgSWYgdGhlIHNvdXJjZSBpcyBub3QgcHJlc2VudCwgQU5ZIHdpbGwgYmUKKyAgICAgKiBnaXZlbiBhcyB0aGUgc291cmNlLCBhbmQgaXNTb3VyY2VQcmVzZW50IHdpbGwgYmUgbnVsbC4gIE90aGVyd2lzZQorICAgICAqIGlzU291cmNlUHJlc2VudCB3aWxsIGJlIG5vbi1udWxsLiAgVGhlIHRhcmdldCBtYXkgYmUgZW1wdHkgaWYgdGhlCisgICAgICogaWQgaXMgbm90IHdlbGwtZm9ybWVkLiAgVGhlIHZhcmlhbnQgbWF5IGJlIGVtcHR5LgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nW10gSUR0b1NUVihTdHJpbmcgaWQpIHsKKyAgICAgICAgU3RyaW5nIHNvdXJjZSA9IEFOWTsKKyAgICAgICAgU3RyaW5nIHRhcmdldCA9IG51bGw7CisgICAgICAgIFN0cmluZyB2YXJpYW50ID0gIiI7CisgICAgICAgIAorICAgICAgICBpbnQgc2VwID0gaWQuaW5kZXhPZihUQVJHRVRfU0VQKTsKKyAgICAgICAgaW50IHZhciA9IGlkLmluZGV4T2YoVkFSSUFOVF9TRVApOworICAgICAgICBpZiAodmFyIDwgMCkgeworICAgICAgICAgICAgdmFyID0gaWQubGVuZ3RoKCk7CisgICAgICAgIH0KKyAgICAgICAgYm9vbGVhbiBpc1NvdXJjZVByZXNlbnQgPSBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIGlmIChzZXAgPCAwKSB7CisgICAgICAgICAgICAvLyBGb3JtOiBUL1Ygb3IgVCAob3IgL1YpCisgICAgICAgICAgICB0YXJnZXQgPSBpZC5zdWJzdHJpbmcoMCwgdmFyKTsKKyAgICAgICAgICAgIHZhcmlhbnQgPSBpZC5zdWJzdHJpbmcodmFyKTsKKyAgICAgICAgfSBlbHNlIGlmIChzZXAgPCB2YXIpIHsKKyAgICAgICAgICAgIC8vIEZvcm06IFMtVC9WIG9yIFMtVCAob3IgLVQvViBvciAtVCkKKyAgICAgICAgICAgIGlmIChzZXAgPiAwKSB7CisgICAgICAgICAgICAgICAgc291cmNlID0gaWQuc3Vic3RyaW5nKDAsIHNlcCk7CisgICAgICAgICAgICAgIGlzU291cmNlUHJlc2VudCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0YXJnZXQgPSBpZC5zdWJzdHJpbmcoKytzZXAsIHZhcik7CisgICAgICAgICAgICB2YXJpYW50ID0gaWQuc3Vic3RyaW5nKHZhcik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBGb3JtOiAoUy9WLVQgb3IgL1YtVCkKKyAgICAgICAgICAgIGlmICh2YXIgPiAwKSB7CisgICAgICAgICAgICAgICAgc291cmNlID0gaWQuc3Vic3RyaW5nKDAsIHZhcik7CisgICAgICAgICAgICAgICAgaXNTb3VyY2VQcmVzZW50ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhcmlhbnQgPSBpZC5zdWJzdHJpbmcodmFyLCBzZXArKyk7CisgICAgICAgICAgICB0YXJnZXQgPSBpZC5zdWJzdHJpbmcoc2VwKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh2YXJpYW50Lmxlbmd0aCgpID4gMCkgeworICAgICAgICAgICAgdmFyaWFudCA9IHZhcmlhbnQuc3Vic3RyaW5nKDEpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gbmV3IFN0cmluZ1tdIHsgc291cmNlLCB0YXJnZXQsIHZhcmlhbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1NvdXJjZVByZXNlbnQgPyAiIiA6IG51bGwgfTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHaXZlbiBzb3VyY2UsIHRhcmdldCwgYW5kIHZhcmlhbnQgc3RyaW5ncywgY29uY2F0ZW5hdGUgdGhlbSBpbnRvIGEKKyAgICAgKiBmdWxsIElELiAgSWYgdGhlIHNvdXJjZSBpcyBlbXB0eSwgdGhlbiAiQW55IiB3aWxsIGJlIHVzZWQgZm9yIHRoZQorICAgICAqIHNvdXJjZSwgc28gdGhlIElEIHdpbGwgYWx3YXlzIGJlIG9mIHRoZSBmb3JtIHMtdC92IG9yIHMtdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBTVFZ0b0lEKFN0cmluZyBzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHZhcmlhbnQpIHsKKyAgICAgICAgU3RyaW5nQnVmZmVyIGlkID0gbmV3IFN0cmluZ0J1ZmZlcihzb3VyY2UpOworICAgICAgICBpZiAoaWQubGVuZ3RoKCkgPT0gMCkgeworICAgICAgICAgICAgaWQuYXBwZW5kKEFOWSk7CisgICAgICAgIH0KKyAgICAgICAgaWQuYXBwZW5kKFRBUkdFVF9TRVApLmFwcGVuZCh0YXJnZXQpOworICAgICAgICBpZiAodmFyaWFudCAhPSBudWxsICYmIHZhcmlhbnQubGVuZ3RoKCkgIT0gMCkgeworICAgICAgICAgICAgaWQuYXBwZW5kKFZBUklBTlRfU0VQKS5hcHBlbmQodmFyaWFudCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGlkLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVnaXN0ZXIgdHdvIHRhcmdldHMgYXMgYmVpbmcgaW52ZXJzZXMgb2Ygb25lIGFub3RoZXIuICBGb3IKKyAgICAgKiBleGFtcGxlLCBjYWxsaW5nIHJlZ2lzdGVyU3BlY2lhbEludmVyc2UoIk5GQyIsICJORkQiLCB0cnVlKSBjYXVzZXMKKyAgICAgKiBUcmFuc2xpdGVyYXRvciB0byBmb3JtIHRoZSBmb2xsb3dpbmcgaW52ZXJzZSByZWxhdGlvbnNoaXBzOgorICAgICAqCisgICAgICogPHByZT5ORkMgPT4gTkZECisgICAgICogQW55LU5GQyA9PiBBbnktTkZECisgICAgICogTkZEID0+IE5GQworICAgICAqIEFueS1ORkQgPT4gQW55LU5GQzwvcHJlPgorICAgICAqCisgICAgICogKFdpdGhvdXQgdGhlIHNwZWNpYWwgaW52ZXJzZSByZWdpc3RyYXRpb24sIHRoZSBpbnZlcnNlIG9mIE5GQworICAgICAqIHdvdWxkIGJlIE5GQy1BbnkuKSAgTm90ZSB0aGF0IE5GRCBpcyBzaG9ydGhhbmQgZm9yIEFueS1ORkQsIGJ1dAorICAgICAqIHRoYXQgdGhlIHByZXNlbmNlIG9yIGFic2VuY2Ugb2YgIkFueS0iIGlzIHByZXNlcnZlZC4KKyAgICAgKgorICAgICAqIDxwPlRoZSByZWxhdGlvbnNoaXAgaXMgc3ltbWV0cmljYWw7IHJlZ2lzdGVyaW5nIChhLCBiKSBpcworICAgICAqIGVxdWl2YWxlbnQgdG8gcmVnaXN0ZXJpbmcgKGIsIGEpLgorICAgICAqCisgICAgICogPHA+VGhlIHJlbGV2YW50IElEcyBtdXN0IHN0aWxsIGJlIHJlZ2lzdGVyZWQgc2VwYXJhdGVseSBhcworICAgICAqIGZhY3RvcmllcyBvciBjbGFzc2VzLgorICAgICAqCisgICAgICogPHA+T25seSB0aGUgdGFyZ2V0cyBhcmUgc3BlY2lmaWVkLiAgU3BlY2lhbCBpbnZlcnNlcyBhbHdheXMKKyAgICAgKiBoYXZlIHRoZSBmb3JtIEFueS1UYXJnZXQxIDw9PiBBbnktVGFyZ2V0Mi4gIFRoZSB0YXJnZXQgc2hvdWxkCisgICAgICogaGF2ZSBjYW5vbmljYWwgY2FzaW5nICh0aGUgY2FzaW5nIGRlc2lyZWQgdG8gYmUgcHJvZHVjZWQgd2hlbgorICAgICAqIGFuIGludmVyc2UgaXMgZm9ybWVkKSBhbmQgc2hvdWxkIGNvbnRhaW4gbm8gd2hpdGVzcGFjZSBvciBvdGhlcgorICAgICAqIGV4dHJhbmVvdXMgY2hhcmFjdGVycy4KKyAgICAgKgorICAgICAqIEBwYXJhbSB0YXJnZXQgdGhlIHRhcmdldCBhZ2FpbnN0IHdoaWNoIHRvIHJlZ2lzdGVyIHRoZSBpbnZlcnNlCisgICAgICogQHBhcmFtIGludmVyc2VUYXJnZXQgdGhlIGludmVyc2Ugb2YgdGFyZ2V0LCB0aGF0IGlzCisgICAgICogQW55LXRhcmdldC5nZXRJbnZlcnNlKCkgPT4gQW55LWludmVyc2VUYXJnZXQKKyAgICAgKiBAcGFyYW0gYmlkaXJlY3Rpb25hbCBpZiB0cnVlLCByZWdpc3RlciB0aGUgcmV2ZXJzZSByZWxhdGlvbgorICAgICAqIGFzIHdlbGwsIHRoYXQgaXMsIEFueS1pbnZlcnNlVGFyZ2V0LmdldEludmVyc2UoKSA9PiBBbnktdGFyZ2V0CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyB2b2lkIHJlZ2lzdGVyU3BlY2lhbEludmVyc2UoU3RyaW5nIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgaW52ZXJzZVRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGJpZGlyZWN0aW9uYWwpIHsKKyAgICAgICAgU1BFQ0lBTF9JTlZFUlNFUy5wdXQobmV3IENhc2VJbnNlbnNpdGl2ZVN0cmluZyh0YXJnZXQpLCBpbnZlcnNlVGFyZ2V0KTsKKyAgICAgICAgaWYgKGJpZGlyZWN0aW9uYWwgJiYgIXRhcmdldC5lcXVhbHNJZ25vcmVDYXNlKGludmVyc2VUYXJnZXQpKSB7CisgICAgICAgICAgICBTUEVDSUFMX0lOVkVSU0VTLnB1dChuZXcgQ2FzZUluc2Vuc2l0aXZlU3RyaW5nKGludmVyc2VUYXJnZXQpLCB0YXJnZXQpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gUHJpdmF0ZSBpbXBsZW1lbnRhdGlvbgorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogUGFyc2UgYW4gSUQgaW50byBjb21wb25lbnQgcGllY2VzLiAgVGFrZSBJRHMgb2YgdGhlIGZvcm0gVCwKKyAgICAgKiBUL1YsIFMtVCwgUy1UL1YsIG9yIFMvVi1ULiAgSWYgdGhlIHNvdXJjZSBpcyBtaXNzaW5nLCByZXR1cm4gYQorICAgICAqIHNvdXJjZSBvZiBBTlkuCisgICAgICogQHBhcmFtIGlkIHRoZSBpZCBzdHJpbmcsIGluIGFueSBvZiBzZXZlcmFsIGZvcm1zCisgICAgICogQHBhcmFtIHBvcyBJTlBVVC1PVVRQVVQgcGFyYW1ldGVyLiAgT24gaW5wdXQsIHBvc1swXSBpcyB0aGUKKyAgICAgKiBvZmZzZXQgb2YgdGhlIGZpcnN0IGNoYXJhY3RlciB0byBwYXJzZSBpbiBpZC4gIE9uIG91dHB1dCwKKyAgICAgKiBwb3NbMF0gaXMgdGhlIG9mZnNldCBhZnRlciB0aGUgbGFzdCBwYXJzZWQgY2hhcmFjdGVyLiAgSWYgdGhlCisgICAgICogcGFyc2UgZmFpbGVkLCBwb3NbMF0gd2lsbCBiZSB1bmNoYW5nZWQuCisgICAgICogQHBhcmFtIGFsbG93RmlsdGVyIGlmIHRydWUsIGEgVW5pY29kZVNldCBwYXR0ZXJuIGlzIGFsbG93ZWQKKyAgICAgKiBhdCBhbnkgbG9jYXRpb24gYmV0d2VlbiBzcGVjcyBvciBkZWxpbWl0ZXJzLCBhbmQgaXMgcmV0dXJuZWQKKyAgICAgKiBhcyB0aGUgZmlmdGggc3RyaW5nIGluIHRoZSBhcnJheS4KKyAgICAgKiBAcmV0dXJuIGEgU3BlY3Mgb2JqZWN0LCBvciBudWxsIGlmIHRoZSBwYXJzZSBmYWlsZWQuICBJZgorICAgICAqIG5laXRoZXIgc291cmNlIG5vciB0YXJnZXQgd2FzIHNlZW4gaW4gdGhlIHBhcnNlZCBpZCwgdGhlbiB0aGUKKyAgICAgKiBwYXJzZSBmYWlscy4gIElmIGFsbG93RmlsdGVyIGlzIHRydWUsIHRoZW4gdGhlIHBhcnNlZCBmaWx0ZXIKKyAgICAgKiBwYXR0ZXJuIGlzIHJldHVybmVkIGluIHRoZSBTcGVjcyBvYmplY3QsIG90aGVyd2lzZSB0aGUgcmV0dXJuZWQKKyAgICAgKiBmaWx0ZXIgcmVmZXJlbmNlIGlzIG51bGwuICBJZiB0aGUgcGFyc2UgZmFpbHMgZm9yIGFueSByZWFzb24KKyAgICAgKiBudWxsIGlzIHJldHVybmVkLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIFNwZWNzIHBhcnNlRmlsdGVySUQoU3RyaW5nIGlkLCBpbnRbXSBwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGFsbG93RmlsdGVyKSB7CisgICAgICAgIFN0cmluZyBmaXJzdCA9IG51bGw7CisgICAgICAgIFN0cmluZyBzb3VyY2UgPSBudWxsOworICAgICAgICBTdHJpbmcgdGFyZ2V0ID0gbnVsbDsKKyAgICAgICAgU3RyaW5nIHZhcmlhbnQgPSBudWxsOworICAgICAgICBTdHJpbmcgZmlsdGVyID0gbnVsbDsKKyAgICAgICAgY2hhciBkZWxpbWl0ZXIgPSAwOworICAgICAgICBpbnQgc3BlY0NvdW50ID0gMDsKKyAgICAgICAgaW50IHN0YXJ0ID0gcG9zWzBdOworCisgICAgICAgIC8vIFRoaXMgbG9vcCBwYXJzZXMgb25lIG9mIHRoZSBmb2xsb3dpbmcgdGhpbmdzIHdpdGggZWFjaAorICAgICAgICAvLyBwYXNzOiBhIGZpbHRlciwgYSBkZWxpbWl0ZXIgY2hhcmFjdGVyIChlaXRoZXIgJy0nIG9yICcvJyksCisgICAgICAgIC8vIG9yIGEgc3BlYyAoc291cmNlLCB0YXJnZXQsIG9yIHZhcmlhbnQpLgorICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICBVdGlsaXR5LnNraXBXaGl0ZXNwYWNlKGlkLCBwb3MpOworICAgICAgICAgICAgaWYgKHBvc1swXSA9PSBpZC5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBQYXJzZSBmaWx0ZXJzCisgICAgICAgICAgICBpZiAoYWxsb3dGaWx0ZXIgJiYgZmlsdGVyID09IG51bGwgJiYKKyAgICAgICAgICAgICAgICBVbmljb2RlU2V0LnJlc2VtYmxlc1BhdHRlcm4oaWQsIHBvc1swXSkpIHsKKworICAgICAgICAgICAgICAgIFBhcnNlUG9zaXRpb24gcHBvcyA9IG5ldyBQYXJzZVBvc2l0aW9uKHBvc1swXSk7CisgICAgICAgICAgICAgICAgVW5pY29kZVNldCBzZXQgPSBuZXcgVW5pY29kZVNldChpZCwgcHBvcywgbnVsbCk7CisgICAgICAgICAgICAgICAgZmlsdGVyID0gaWQuc3Vic3RyaW5nKHBvc1swXSwgcHBvcy5nZXRJbmRleCgpKTsKKyAgICAgICAgICAgICAgICBwb3NbMF0gPSBwcG9zLmdldEluZGV4KCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChkZWxpbWl0ZXIgPT0gMCkgeworICAgICAgICAgICAgICAgIGNoYXIgYyA9IGlkLmNoYXJBdChwb3NbMF0pOworICAgICAgICAgICAgICAgIGlmICgoYyA9PSBUQVJHRVRfU0VQICYmIHRhcmdldCA9PSBudWxsKSB8fAorICAgICAgICAgICAgICAgICAgICAoYyA9PSBWQVJJQU5UX1NFUCAmJiB2YXJpYW50ID09IG51bGwpKSB7CisgICAgICAgICAgICAgICAgICAgIGRlbGltaXRlciA9IGM7CisgICAgICAgICAgICAgICAgICAgICsrcG9zWzBdOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFdlIGFyZSBhYm91dCB0byB0cnkgdG8gcGFyc2UgYSBzcGVjIHdpdGggbm8gZGVsaW1pdGVyCisgICAgICAgICAgICAvLyB3aGVuIHdlIGNhbiBubyBsb25nZXIgZG8gc28gKHdlIGNhbiBvbmx5IGRvIHNvIGF0IHRoZQorICAgICAgICAgICAgLy8gc3RhcnQpOyBicmVhay4KKyAgICAgICAgICAgIGlmIChkZWxpbWl0ZXIgPT0gMCAmJiBzcGVjQ291bnQgPiAwKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFN0cmluZyBzcGVjID0gVXRpbGl0eS5wYXJzZVVuaWNvZGVJZGVudGlmaWVyKGlkLCBwb3MpOworICAgICAgICAgICAgaWYgKHNwZWMgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCBpZiB0aGVyZSB3YXMgYSB0cmFpbGluZyBkZWxpbWl0ZXIsIHdlCisgICAgICAgICAgICAgICAgLy8gY29uc3VtZSBpdC4gIFNvIEZvby0sIEZvby8sIEZvby1CYXIvLCBhbmQgRm9vL0Jhci0KKyAgICAgICAgICAgICAgICAvLyBhcmUgbGVnYWwuCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN3aXRjaCAoZGVsaW1pdGVyKSB7CisgICAgICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICAgICAgZmlyc3QgPSBzcGVjOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBUQVJHRVRfU0VQOgorICAgICAgICAgICAgICAgIHRhcmdldCA9IHNwZWM7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFZBUklBTlRfU0VQOgorICAgICAgICAgICAgICAgIHZhcmlhbnQgPSBzcGVjOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKytzcGVjQ291bnQ7CisgICAgICAgICAgICBkZWxpbWl0ZXIgPSAwOworICAgICAgICB9CisKKyAgICAgICAgLy8gQSBzcGVjIHdpdGggbm8gcHJpb3IgY2hhcmFjdGVyIGlzIGVpdGhlciBzb3VyY2Ugb3IgdGFyZ2V0LAorICAgICAgICAvLyBkZXBlbmRpbmcgb24gd2hldGhlciBhbiBleHBsaWNpdCAiLXRhcmdldCIgd2FzIHNlZW4uCisgICAgICAgIGlmIChmaXJzdCAhPSBudWxsKSB7CisgICAgICAgICAgICBpZiAodGFyZ2V0ID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0YXJnZXQgPSBmaXJzdDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc291cmNlID0gZmlyc3Q7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBNdXN0IGhhdmUgZWl0aGVyIHNvdXJjZSBvciB0YXJnZXQKKyAgICAgICAgaWYgKHNvdXJjZSA9PSBudWxsICYmIHRhcmdldCA9PSBudWxsKSB7CisgICAgICAgICAgICBwb3NbMF0gPSBzdGFydDsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgLy8gRW1wdHkgc291cmNlIG9yIHRhcmdldCBkZWZhdWx0cyB0byBBTlkKKyAgICAgICAgYm9vbGVhbiBzYXdTb3VyY2UgPSB0cnVlOworICAgICAgICBpZiAoc291cmNlID09IG51bGwpIHsKKyAgICAgICAgICAgIHNvdXJjZSA9IEFOWTsKKyAgICAgICAgICAgIHNhd1NvdXJjZSA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIGlmICh0YXJnZXQgPT0gbnVsbCkgeworICAgICAgICAgICAgdGFyZ2V0ID0gQU5ZOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG5ldyBTcGVjcyhzb3VyY2UsIHRhcmdldCwgdmFyaWFudCwgc2F3U291cmNlLCBmaWx0ZXIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdpdmVucyBhIFNwZWMgb2JqZWN0LCBjb252ZXJ0IGl0IHRvIGEgU2luZ2xlSUQgb2JqZWN0LiAgVGhlCisgICAgICogU3BlYyBvYmplY3QgaXMgYSBtb3JlIHVucHJvY2Vzc2VkIHBhcnNlIHJlc3VsdC4gIFRoZSBTaW5nbGVJRAorICAgICAqIG9iamVjdCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCBjYW5vbmljYWwgYW5kIGJhc2ljIElEcy4KKyAgICAgKiBAcmV0dXJuIGEgU2luZ2xlSUQ7IG5ldmVyIHJldHVybnMgbnVsbC4gIFJldHVybmVkIG9iamVjdCBhbHdheXMKKyAgICAgKiBoYXMgJ2ZpbHRlcicgZmllbGQgb2YgbnVsbC4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBTaW5nbGVJRCBzcGVjc1RvSUQoU3BlY3Mgc3BlY3MsIGludCBkaXIpIHsKKyAgICAgICAgU3RyaW5nIGNhbm9uSUQgPSAiIjsKKyAgICAgICAgU3RyaW5nIGJhc2ljSUQgPSAiIjsKKyAgICAgICAgU3RyaW5nIGJhc2ljUHJlZml4ID0gIiI7CisgICAgICAgIGlmIChzcGVjcyAhPSBudWxsKSB7CisgICAgICAgICAgICBTdHJpbmdCdWZmZXIgYnVmID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICAgICAgaWYgKGRpciA9PSBGT1JXQVJEKSB7CisgICAgICAgICAgICAgICAgaWYgKHNwZWNzLnNhd1NvdXJjZSkgeworICAgICAgICAgICAgICAgICAgICBidWYuYXBwZW5kKHNwZWNzLnNvdXJjZSkuYXBwZW5kKFRBUkdFVF9TRVApOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGJhc2ljUHJlZml4ID0gc3BlY3Muc291cmNlICsgVEFSR0VUX1NFUDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnVmLmFwcGVuZChzcGVjcy50YXJnZXQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBidWYuYXBwZW5kKHNwZWNzLnRhcmdldCkuYXBwZW5kKFRBUkdFVF9TRVApLmFwcGVuZChzcGVjcy5zb3VyY2UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHNwZWNzLnZhcmlhbnQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoVkFSSUFOVF9TRVApLmFwcGVuZChzcGVjcy52YXJpYW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJhc2ljSUQgPSBiYXNpY1ByZWZpeCArIGJ1Zi50b1N0cmluZygpOworICAgICAgICAgICAgaWYgKHNwZWNzLmZpbHRlciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgYnVmLmluc2VydCgwLCBzcGVjcy5maWx0ZXIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2Fub25JRCA9IGJ1Zi50b1N0cmluZygpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBuZXcgU2luZ2xlSUQoY2Fub25JRCwgYmFzaWNJRCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2l2ZW4gYSBTcGVjcyBvYmplY3QsIHJldHVybiBhIFNpbmdsZUlEIHJlcHJlc2VudGluZyB0aGUKKyAgICAgKiBzcGVjaWFsIGludmVyc2Ugb2YgdGhhdCBJRC4gIElmIHRoZXJlIGlzIG5vIHNwZWNpYWwgaW52ZXJzZQorICAgICAqIHRoZW4gcmV0dXJuIG51bGwuCisgICAgICogQHJldHVybiBhIFNpbmdsZUlEIG9yIG51bGwuICBSZXR1cm5lZCBvYmplY3QgYWx3YXlzIGhhcworICAgICAqICdmaWx0ZXInIGZpZWxkIG9mIG51bGwuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgU2luZ2xlSUQgc3BlY3NUb1NwZWNpYWxJbnZlcnNlKFNwZWNzIHNwZWNzKSB7CisgICAgICAgIGlmICghc3BlY3Muc291cmNlLmVxdWFsc0lnbm9yZUNhc2UoQU5ZKSkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICAgICAgU3RyaW5nIGludmVyc2VUYXJnZXQgPSAoU3RyaW5nKSBTUEVDSUFMX0lOVkVSU0VTLmdldCgKKyAgICAgICAgICAgIG5ldyBDYXNlSW5zZW5zaXRpdmVTdHJpbmcoc3BlY3MudGFyZ2V0KSk7CisgICAgICAgIGlmIChpbnZlcnNlVGFyZ2V0ICE9IG51bGwpIHsKKyAgICAgICAgICAgIC8vIElmIHRoZSBvcmlnaW5hbCBJRCBjb250YWluZWQgIkFueS0iIHRoZW4gbWFrZSB0aGUKKyAgICAgICAgICAgIC8vIHNwZWNpYWwgaW52ZXJzZSAiQW55LUZvbyI7IG90aGVyd2lzZSBtYWtlIGl0ICJGb28iLgorICAgICAgICAgICAgLy8gU28gIkFueS1ORkMiID0+ICJBbnktTkZEIiBidXQgIk5GQyIgPT4gIk5GRCIuCisgICAgICAgICAgICBTdHJpbmdCdWZmZXIgYnVmID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICAgICAgaWYgKHNwZWNzLmZpbHRlciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgYnVmLmFwcGVuZChzcGVjcy5maWx0ZXIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHNwZWNzLnNhd1NvdXJjZSkgeworICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoQU5ZKS5hcHBlbmQoVEFSR0VUX1NFUCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBidWYuYXBwZW5kKGludmVyc2VUYXJnZXQpOworCisgICAgICAgICAgICBTdHJpbmcgYmFzaWNJRCA9IEFOWSArIFRBUkdFVF9TRVAgKyBpbnZlcnNlVGFyZ2V0OworCisgICAgICAgICAgICBpZiAoc3BlY3MudmFyaWFudCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgYnVmLmFwcGVuZChWQVJJQU5UX1NFUCkuYXBwZW5kKHNwZWNzLnZhcmlhbnQpOworICAgICAgICAgICAgICAgIGJhc2ljSUQgPSBiYXNpY0lEICsgVkFSSUFOVF9TRVAgKyBzcGVjcy52YXJpYW50OworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG5ldyBTaW5nbGVJRChidWYudG9TdHJpbmcoKSwgYmFzaWNJRCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQorCisvL2VvZgpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3RleHQvVHJhbnNsaXRlcmF0b3JQYXJzZXIuamF2YSBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L1RyYW5zbGl0ZXJhdG9yUGFyc2VyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMjEyMDY3OQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L1RyYW5zbGl0ZXJhdG9yUGFyc2VyLmphdmEKQEAgLTAsMCArMSwxNDg1IEBACisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgIENvcHlyaWdodCAoYykgMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworKiAgIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvdGV4dC9UcmFuc2xpdGVyYXRvclBhcnNlci5qYXZhLHYgJAorKiAkRGF0ZTogMjAwMi8wNy8yNiAyMToxMjozNiAkCisqICRSZXZpc2lvbjogMS4yMyAkCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworcGFja2FnZSBjb20uaWJtLmljdS50ZXh0OworCitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5kYXRhLlJlc291cmNlUmVhZGVyOworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuVXRpbGl0eTsKK2ltcG9ydCBqYXZhLnV0aWwuU3RhY2s7CitpbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKK2ltcG9ydCBqYXZhLnRleHQuUGFyc2VQb3NpdGlvbjsKK2ltcG9ydCBjb20uaWJtLmljdS5sYW5nLio7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5VQ2hhcmFjdGVyUHJvcGVydHk7CisKK2NsYXNzIFRyYW5zbGl0ZXJhdG9yUGFyc2VyIHsKKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIERhdGEgbWVtYmVycworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogUFVCTElDIGRhdGEgbWVtYmVyIGNvbnRhaW5pbmcgdGhlIHBhcnNlZCBkYXRhIG9iamVjdCwgb3IgbnVsbCBpZgorICAgICAqIHRoZXJlIHdlcmUgbm8gcnVsZXMuCisgICAgICovCisgICAgcHVibGljIFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yLkRhdGEgZGF0YTsKKworICAgIC8qKgorICAgICAqIFBVQkxJQyBkYXRhIG1lbWJlci4KKyAgICAgKiBUaGUgYmxvY2sgb2YgOjpJRHMsIGJvdGggYXQgdGhlIHRvcCBhbmQgYXQgdGhlIGJvdHRvbS4KKyAgICAgKiBJbnNlcnRlZCBpbnRvIHRoZXNlIG1heSBiZSBhZGRpdGlvbmFsIHJ1bGVzIGF0IHRoZQorICAgICAqIGlkU3BsaXRQb2ludC4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIGlkQmxvY2s7CisKKyAgICAvKioKKyAgICAgKiBQVUJMSUMgZGF0YSBtZW1iZXIuCisgICAgICogSW4gYSBjb21wb3VuZCBSQlQsIHRoZSBpbmRleCBhdCB3aGljaCB0aGUgUkJUIHJ1bGVzIGFyZQorICAgICAqIGluc2VydGVkIGludG8gdGhlIElEIGJsb2NrLiAgSW5kZXggMCBtZWFucyBiZWZvcmUgYW55IElEcworICAgICAqIGluIHRoZSBibG9jay4gIEluZGV4IGlkQmxvY2subGVuZ3RoKCkgbWVhbnMgYWZ0ZXIgYWxsIElEcworICAgICAqIGluIHRoZSBibG9jay4gIEluZGV4IGlzIGEgc3RyaW5nIGluZGV4LgorICAgICAqLworICAgIHB1YmxpYyBpbnQgaWRTcGxpdFBvaW50OworCisgICAgLyoqCisgICAgICogUFVCTElDIGRhdGEgbWVtYmVyIGNvbnRhaW5pbmcgdGhlIHBhcnNlZCBjb21wb3VuZCBmaWx0ZXIsIGlmIGFueS4KKyAgICAgKi8KKyAgICBwdWJsaWMgVW5pY29kZVNldCBjb21wb3VuZEZpbHRlcjsKKworCisgICAgLy8gVGhlIG51bWJlciBvZiBydWxlcyBwYXJzZWQuICBUaGlzIHRlbGxzIHVzIGlmIHRoZXJlIHdlcmUKKyAgICAvLyBhbnkgYWN0dWFsIHRyYW5zbGl0ZXJhdG9yIHJ1bGVzLCBvciBpZiB0aGVyZSB3ZXJlIGp1c3QgOjpJRAorICAgIC8vIGJsb2NrIElEcy4KKyAgICBwcml2YXRlIGludCBydWxlQ291bnQ7CisKKyAgICBwcml2YXRlIGludCBkaXJlY3Rpb247CisKKyAgICAvKioKKyAgICAgKiBUZW1wb3Jhcnkgc3ltYm9sIHRhYmxlIHVzZWQgZHVyaW5nIHBhcnNpbmcuCisgICAgICovCisgICAgcHJpdmF0ZSBQYXJzZURhdGEgcGFyc2VEYXRhOworCisgICAgLyoqCisgICAgICogVGVtcG9yYXJ5IHZlY3RvciBvZiBzZXQgdmFyaWFibGVzLiAgV2hlbiBwYXJzaW5nIGlzIGNvbXBsZXRlLCB0aGlzCisgICAgICogaXMgY29waWVkIGludG8gdGhlIGFycmF5IGRhdGEudmFyaWFibGVzLiAgQXMgd2l0aCBkYXRhLnZhcmlhYmxlcywKKyAgICAgKiBlbGVtZW50IDAgY29ycmVzcG9uZHMgdG8gY2hhcmFjdGVyIGRhdGEudmFyaWFibGVzQmFzZS4KKyAgICAgKi8KKyAgICBwcml2YXRlIFZlY3RvciB2YXJpYWJsZXNWZWN0b3I7CisKKyAgICAvKioKKyAgICAgKiBTdHJpbmcgb2Ygc3RhbmRpbnMgZm9yIHNlZ21lbnRzLiAgVXNlZCBkdXJpbmcgdGhlIHBhcnNpbmcgb2YgYSBzaW5nbGUKKyAgICAgKiBydWxlLiAgc2VnbWVudFN0YW5kaW5zLmNoYXJBdCgwKSBpcyB0aGUgc3RhbmRpbiBmb3IgIiQxIiBhbmQgY29ycmVzcG9uZHMKKyAgICAgKiB0byBTdHJpbmdNYXRjaGVyIG9iamVjdCBzZWdtZW50T2JqZWN0cy5lbGVtZW50QXQoMCksIGV0Yy4KKyAgICAgKi8KKyAgICBwcml2YXRlIFN0cmluZ0J1ZmZlciBzZWdtZW50U3RhbmRpbnM7CisKKyAgICAvKioKKyAgICAgKiBWZWN0b3Igb2YgU3RyaW5nTWF0Y2hlciBvYmplY3RzIGZvciBzZWdtZW50cy4gIFVzZWQgZHVyaW5nIHRoZQorICAgICAqIHBhcnNpbmcgb2YgYSBzaW5nbGUgcnVsZS4gIAorICAgICAqIHNlZ21lbnRTdGFuZGlucy5jaGFyQXQoMCkgaXMgdGhlIHN0YW5kaW4gZm9yICIkMSIgYW5kIGNvcnJlc3BvbmRzCisgICAgICogdG8gU3RyaW5nTWF0Y2hlciBvYmplY3Qgc2VnbWVudE9iamVjdHMuZWxlbWVudEF0KDApLCBldGMuCisgICAgICovCisgICAgcHJpdmF0ZSBWZWN0b3Igc2VnbWVudE9iamVjdHM7CisKKyAgICAvKioKKyAgICAgKiBUaGUgbmV4dCBhdmFpbGFibGUgc3RhbmQtaW4gZm9yIHZhcmlhYmxlcy4gIFRoaXMgc3RhcnRzIGF0IHNvbWUgcG9pbnQgaW4KKyAgICAgKiB0aGUgcHJpdmF0ZSB1c2UgYXJlYSAoZGlzY292ZXJlZCBkeW5hbWljYWxseSkgYW5kIGluY3JlbWVudHMgdXAgdG93YXJkCisgICAgICogPGNvZGU+dmFyaWFibGVMaW1pdDwvY29kZT4uICBBdCBhbnkgcG9pbnQgZHVyaW5nIHBhcnNpbmcsIGF2YWlsYWJsZQorICAgICAqIHZhcmlhYmxlcyBhcmUgPGNvZGU+dmFyaWFibGVOZXh0Li52YXJpYWJsZUxpbWl0LTE8L2NvZGU+LgorICAgICAqLworICAgIHByaXZhdGUgY2hhciB2YXJpYWJsZU5leHQ7CisKKyAgICAvKioKKyAgICAgKiBUaGUgbGFzdCBhdmFpbGFibGUgc3RhbmQtaW4gZm9yIHZhcmlhYmxlcy4gIFRoaXMgaXMgZGlzY292ZXJlZAorICAgICAqIGR5bmFtaWNhbGx5LiAgQXQgYW55IHBvaW50IGR1cmluZyBwYXJzaW5nLCBhdmFpbGFibGUgdmFyaWFibGVzIGFyZQorICAgICAqIDxjb2RlPnZhcmlhYmxlTmV4dC4udmFyaWFibGVMaW1pdC0xPC9jb2RlPi4gIER1cmluZyB2YXJpYWJsZSBkZWZpbml0aW9uCisgICAgICogd2UgdXNlIHRoZSBzcGVjaWFsIHZhbHVlIHZhcmlhYmxlTGltaXQtMSBhcyBhIHBsYWNlaG9sZGVyLgorICAgICAqLworICAgIHByaXZhdGUgY2hhciB2YXJpYWJsZUxpbWl0OworCisgICAgLyoqCisgICAgICogV2hlbiB3ZSBlbmNvdW50ZXIgYW4gdW5kZWZpbmVkIHZhcmlhYmxlLCB3ZSBkbyBub3QgaW1tZWRpYXRlbHkgc2lnbmFsCisgICAgICogYW4gZXJyb3IsIGluIGNhc2Ugd2UgYXJlIGRlZmluaW5nIHRoaXMgdmFyaWFibGUsIGUuZy4sICIkYSA9IFthLXpdOyIuCisgICAgICogSW5zdGVhZCwgd2Ugc2F2ZSB0aGUgbmFtZSBvZiB0aGUgdW5kZWZpbmVkIHZhcmlhYmxlLCBhbmQgc3Vic3RpdHV0ZQorICAgICAqIGluIHRoZSBwbGFjZWhvbGRlciBjaGFyIHZhcmlhYmxlTGltaXQgLSAxLCBhbmQgZGVjcmVtZW50CisgICAgICogdmFyaWFibGVMaW1pdC4KKyAgICAgKi8KKyAgICBwcml2YXRlIFN0cmluZyB1bmRlZmluZWRWYXJpYWJsZU5hbWU7CisKKyAgICAvKioKKyAgICAgKiBUaGUgc3RhbmQtaW4gY2hhcmFjdGVyIGZvciB0aGUgJ2RvdCcgc2V0LCByZXByZXNlbnRlZCBieSAnLicgaW4KKyAgICAgKiBwYXR0ZXJucy4gIFRoaXMgaXMgYWxsb2NhdGVkIHRoZSBmaXJzdCB0aW1lIGl0IGlzIG5lZWRlZCwgYW5kCisgICAgICogcmV1c2VkIHRoZXJlYWZ0ZXIuCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgZG90U3RhbmRJbiA9IC0xOworCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gQ29uc3RhbnRzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvLyBJbmRpY2F0b3IgZm9yIElEIGJsb2NrcworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBJRF9UT0tFTiA9ICI6OiI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IElEX1RPS0VOX0xFTiA9IDI7CisKKyAgICAvLyBPcGVyYXRvcnMKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjaGFyIFZBUklBQkxFX0RFRl9PUCAgID0gJz0nOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgRk9SV0FSRF9SVUxFX09QICAgPSAnPic7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciBSRVZFUlNFX1JVTEVfT1AgICA9ICc8JzsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjaGFyIEZXRFJFVl9SVUxFX09QICAgID0gJ34nOyAvLyBpbnRlcm5hbCByZXAgb2YgPD4gb3AKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBPUEVSQVRPUlMgPSAiPT48IjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEFMRl9FTkRFUlMgPSAiPT48OyI7CisKKyAgICAvLyBPdGhlciBzcGVjaWFsIGNoYXJhY3RlcnMKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjaGFyIFFVT1RFICAgICAgICAgICAgICAgPSAnXCcnOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgRVNDQVBFICAgICAgICAgICAgICA9ICdcXCc7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciBFTkRfT0ZfUlVMRSAgICAgICAgID0gJzsnOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgUlVMRV9DT01NRU5UX0NIQVIgICA9ICcjJzsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgQ09OVEVYVF9BTlRFICAgICAgICA9ICd7JzsgLy8gYW50ZXtrZXkKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjaGFyIENPTlRFWFRfUE9TVCAgICAgICAgPSAnfSc7IC8vIGtleX1wb3N0CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciBDVVJTT1JfUE9TICAgICAgICAgID0gJ3wnOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgQ1VSU09SX09GRlNFVCAgICAgICA9ICdAJzsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjaGFyIEFOQ0hPUl9TVEFSVCAgICAgICAgPSAnXic7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjaGFyIEtMRUVORV9TVEFSICAgICAgICAgPSAnKic7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciBPTkVfT1JfTU9SRSAgICAgICAgID0gJysnOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgWkVST19PUl9PTkUgICAgICAgICA9ICc/JzsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgRE9UICAgICAgICAgICAgICAgICA9ICcuJzsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgRE9UX1NFVCAgICAgICAgICAgPSAiW15bOlpwOl1bOlpsOl1cXHJcXG4kXSI7CisKKyAgICAvLyBCeSBkZWZpbml0aW9uLCB0aGUgQU5DSE9SX0VORCBzcGVjaWFsIGNoYXJhY3RlciBpcyBhCisgICAgLy8gdHJhaWxpbmcgU3ltYm9sVGFibGUuU1lNQk9MX1JFRiBjaGFyYWN0ZXIuCisgICAgLy8gcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciBBTkNIT1JfRU5EICAgICAgID0gJyQnOworCisgICAgLy8gU2VnbWVudHMgb2YgdGhlIGlucHV0IHN0cmluZyBhcmUgZGVsaW1pdGVkIGJ5ICIoIiBhbmQgIikiLiAgSW4gdGhlCisgICAgLy8gb3V0cHV0IHN0cmluZyB0aGVzZSBzZWdtZW50cyBhcmUgcmVmZXJlbmNlZCBhcyAiJDEiLCAiJDIiLCBldGMuCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciBTRUdNRU5UX09QRU4gICAgICAgID0gJygnOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgU0VHTUVOVF9DTE9TRSAgICAgICA9ICcpJzsKKworICAgIC8vIEEgZnVuY3Rpb24gaXMgZGVub3RlZCAmU291cmNlLVRhcmdldC9WYXJpYW50KHRleHQpCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciBGVU5DVElPTiAgICAgICAgICAgID0gJyYnOworCisgICAgLy8gU3BlY2lhbCBjaGFyYWN0ZXJzIGRpc2FsbG93ZWQgYXQgdGhlIHRvcCBsZXZlbAorICAgIHByaXZhdGUgc3RhdGljIFVuaWNvZGVTZXQgSUxMRUdBTF9UT1AgPSBuZXcgVW5pY29kZVNldCgiW1xcKV0iKTsKKworICAgIC8vIFNwZWNpYWwgY2hhcmFjdGVycyBkaXNhbGxvd2VkIHdpdGhpbiBhIHNlZ21lbnQKKyAgICBwcml2YXRlIHN0YXRpYyBVbmljb2RlU2V0IElMTEVHQUxfU0VHID0gbmV3IFVuaWNvZGVTZXQoIltcXHtcXH1cXHxcXEBdIik7CisKKyAgICAvLyBTcGVjaWFsIGNoYXJhY3RlcnMgZGlzYWxsb3dlZCB3aXRoaW4gYSBmdW5jdGlvbiBhcmd1bWVudAorICAgIHByaXZhdGUgc3RhdGljIFVuaWNvZGVTZXQgSUxMRUdBTF9GVU5DID0gbmV3IFVuaWNvZGVTZXQoIltcXF5cXChcXC5cXCpcXCtcXD9cXHtcXH1cXHxcXEBdIik7CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBjbGFzcyBQYXJzZURhdGEKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIFRoaXMgY2xhc3MgaW1wbGVtZW50cyB0aGUgU3ltYm9sVGFibGUgaW50ZXJmYWNlLiAgSXQgaXMgdXNlZAorICAgICAqIGR1cmluZyBwYXJzaW5nIHRvIGdpdmUgVW5pY29kZVNldCBhY2Nlc3MgdG8gdmFyaWFibGVzIHRoYXQKKyAgICAgKiBoYXZlIGJlZW4gZGVmaW5lZCBzbyBmYXIuICBOb3RlIHRoYXQgaXQgdXNlcyB2YXJpYWJsZXNWZWN0b3IsCisgICAgICogX25vdF8gZGF0YS52YXJpYWJsZXMuCisgICAgICovCisgICAgcHJpdmF0ZSBjbGFzcyBQYXJzZURhdGEgaW1wbGVtZW50cyBTeW1ib2xUYWJsZSB7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEltcGxlbWVudCBTeW1ib2xUYWJsZSBBUEkuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgY2hhcltdIGxvb2t1cChTdHJpbmcgbmFtZSkgeworICAgICAgICAgICAgcmV0dXJuIChjaGFyW10pIGRhdGEudmFyaWFibGVOYW1lcy5nZXQobmFtZSk7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogSW1wbGVtZW50IFN5bWJvbFRhYmxlIEFQSS4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBVbmljb2RlTWF0Y2hlciBsb29rdXBNYXRjaGVyKGludCBjaCkgeworICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHdlIGNhbm5vdCB1c2UgZGF0YS5sb29rdXAoKSBiZWNhdXNlIHRoZQorICAgICAgICAgICAgLy8gc2V0IGFycmF5IGhhcyBub3QgYmVlbiBjb25zdHJ1Y3RlZCB5ZXQuCisgICAgICAgICAgICBpbnQgaSA9IGNoIC0gZGF0YS52YXJpYWJsZXNCYXNlOworICAgICAgICAgICAgaWYgKGkgPj0gMCAmJiBpIDwgdmFyaWFibGVzVmVjdG9yLnNpemUoKSkgeworICAgICAgICAgICAgICAgIHJldHVybiAoVW5pY29kZU1hdGNoZXIpIHZhcmlhYmxlc1ZlY3Rvci5lbGVtZW50QXQoaSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBJbXBsZW1lbnQgU3ltYm9sVGFibGUgQVBJLiAgUGFyc2Ugb3V0IGEgc3ltYm9sIHJlZmVyZW5jZQorICAgICAgICAgKiBuYW1lLgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIFN0cmluZyBwYXJzZVJlZmVyZW5jZShTdHJpbmcgdGV4dCwgUGFyc2VQb3NpdGlvbiBwb3MsIGludCBsaW1pdCkgeworICAgICAgICAgICAgaW50IHN0YXJ0ID0gcG9zLmdldEluZGV4KCk7CisgICAgICAgICAgICBpbnQgaSA9IHN0YXJ0OworICAgICAgICAgICAgd2hpbGUgKGkgPCBsaW1pdCkgeworICAgICAgICAgICAgICAgIGNoYXIgYyA9IHRleHQuY2hhckF0KGkpOworICAgICAgICAgICAgICAgIGlmICgoaT09c3RhcnQgJiYgIUNoYXJhY3Rlci5pc1VuaWNvZGVJZGVudGlmaWVyU3RhcnQoYykpIHx8CisgICAgICAgICAgICAgICAgICAgICFDaGFyYWN0ZXIuaXNVbmljb2RlSWRlbnRpZmllclBhcnQoYykpIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICsraTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpID09IHN0YXJ0KSB7IC8vIE5vIHZhbGlkIG5hbWUgY2hhcnMKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBvcy5zZXRJbmRleChpKTsKKyAgICAgICAgICAgIHJldHVybiB0ZXh0LnN1YnN0cmluZyhzdGFydCwgaSk7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogUmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIGNoYXJhY3RlciBpcyBhIG1hdGNoZXIgc3RhbmRpbiBvciBhIHBsYWluCisgICAgICAgICAqIGNoYXJhY3RlciAobm9uIHN0YW5kaW4pLgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIGJvb2xlYW4gaXNNYXRjaGVyKGludCBjaCkgeworICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHdlIGNhbm5vdCB1c2UgZGF0YS5sb29rdXAoKSBiZWNhdXNlIHRoZQorICAgICAgICAgICAgLy8gc2V0IGFycmF5IGhhcyBub3QgYmVlbiBjb25zdHJ1Y3RlZCB5ZXQuCisgICAgICAgICAgICBpbnQgaSA9IGNoIC0gZGF0YS52YXJpYWJsZXNCYXNlOworICAgICAgICAgICAgaWYgKGkgPj0gMCAmJiBpIDwgdmFyaWFibGVzVmVjdG9yLnNpemUoKSkgeworICAgICAgICAgICAgICAgIHJldHVybiB2YXJpYWJsZXNWZWN0b3IuZWxlbWVudEF0KGkpIGluc3RhbmNlb2YgVW5pY29kZU1hdGNoZXI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgZ2l2ZW4gY2hhcmFjdGVyIGlzIGEgcmVwbGFjZXIgc3RhbmRpbiBvciBhIHBsYWluCisgICAgICAgICAqIGNoYXJhY3RlciAobm9uIHN0YW5kaW4pLgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIGJvb2xlYW4gaXNSZXBsYWNlcihpbnQgY2gpIHsKKyAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBjYW5ub3QgdXNlIGRhdGEubG9va3VwKCkgYmVjYXVzZSB0aGUKKyAgICAgICAgICAgIC8vIHNldCBhcnJheSBoYXMgbm90IGJlZW4gY29uc3RydWN0ZWQgeWV0LgorICAgICAgICAgICAgaW50IGkgPSBjaCAtIGRhdGEudmFyaWFibGVzQmFzZTsKKyAgICAgICAgICAgIGlmIChpID49IDAgJiYgaSA8IHZhcmlhYmxlc1ZlY3Rvci5zaXplKCkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFyaWFibGVzVmVjdG9yLmVsZW1lbnRBdChpKSBpbnN0YW5jZW9mIFVuaWNvZGVSZXBsYWNlcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gY2xhc3NlcyBSdWxlQm9keSwgUnVsZUFycmF5LCBhbmQgUnVsZVJlYWRlcgorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogQSBwcml2YXRlIGFic3RyYWN0IGNsYXNzIHJlcHJlc2VudGluZyB0aGUgaW50ZXJmYWNlIHRvIHJ1bGUKKyAgICAgKiBzb3VyY2UgY29kZSB0aGF0IGlzIGJyb2tlbiB1cCBpbnRvIGxpbmVzLiAgSGFuZGxlcyB0aGUKKyAgICAgKiBmb2xkaW5nIG9mIGxpbmVzIHRlcm1pbmF0ZWQgYnkgYSBiYWNrc2xhc2guICBUaGlzIGZvbGRpbmcKKyAgICAgKiBpcyBsaW1pdGVkOyBpdCBkb2VzIG5vdCBhY2NvdW50IGZvciBjb21tZW50cywgcXVvdGVzLCBvcgorICAgICAqIGVzY2FwZXMsIHNvIGl0cyB1c2UgdG8gYmUgbGltaXRlZC4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBhYnN0cmFjdCBjbGFzcyBSdWxlQm9keSB7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFJldHJpZXZlIHRoZSBuZXh0IGxpbmUgb2YgdGhlIHNvdXJjZSwgb3IgcmV0dXJuIG51bGwgaWYKKyAgICAgICAgICogbm9uZS4gIEZvbGRzIGxpbmVzIHRlcm1pbmF0ZWQgYnkgYSBiYWNrc2xhc2ggaW50byB0aGUKKyAgICAgICAgICogbmV4dCBsaW5lLCB3aXRob3V0IHJlZ2FyZCBmb3IgY29tbWVudHMsIHF1b3Rlcywgb3IKKyAgICAgICAgICogZXNjYXBlcy4KKyAgICAgICAgICovCisgICAgICAgIFN0cmluZyBuZXh0TGluZSgpIHsKKyAgICAgICAgICAgIFN0cmluZyBzID0gaGFuZGxlTmV4dExpbmUoKTsKKyAgICAgICAgICAgIGlmIChzICE9IG51bGwgJiYKKyAgICAgICAgICAgICAgICBzLmxlbmd0aCgpID4gMCAmJgorICAgICAgICAgICAgICAgIHMuY2hhckF0KHMubGVuZ3RoKCkgLSAxKSA9PSAnXFwnKSB7CisKKyAgICAgICAgICAgICAgICBTdHJpbmdCdWZmZXIgYiA9IG5ldyBTdHJpbmdCdWZmZXIocyk7CisgICAgICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICAgICBiLmRlbGV0ZUNoYXJBdChiLmxlbmd0aCgpLTEpOworICAgICAgICAgICAgICAgICAgICBzID0gaGFuZGxlTmV4dExpbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHMgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYi5hcHBlbmQocyk7CisgICAgICAgICAgICAgICAgfSB3aGlsZSAocy5sZW5ndGgoKSA+IDAgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICBzLmNoYXJBdChzLmxlbmd0aCgpIC0gMSkgPT0gJ1xcJyk7CisKKyAgICAgICAgICAgICAgICBzID0gYi50b1N0cmluZygpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHM7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogUmVzZXQgdG8gdGhlIGZpcnN0IGxpbmUgb2YgdGhlIHNvdXJjZS4KKyAgICAgICAgICovCisgICAgICAgIGFic3RyYWN0IHZvaWQgcmVzZXQoKTsKKworICAgICAgICAvKioKKyAgICAgICAgICogU3ViY2xhc3MgbWV0aG9kIHRvIHJldHVybiB0aGUgbmV4dCBsaW5lIG9mIHRoZSBzb3VyY2UuCisgICAgICAgICAqLworICAgICAgICBhYnN0cmFjdCBTdHJpbmcgaGFuZGxlTmV4dExpbmUoKTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogUnVsZUJvZHkgc3ViY2xhc3MgZm9yIGEgU3RyaW5nW10gYXJyYXkuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgUnVsZUFycmF5IGV4dGVuZHMgUnVsZUJvZHkgeworICAgICAgICBTdHJpbmdbXSBhcnJheTsKKyAgICAgICAgaW50IGk7CisgICAgICAgIHB1YmxpYyBSdWxlQXJyYXkoU3RyaW5nW10gYXJyYXkpIHsgdGhpcy5hcnJheSA9IGFycmF5OyBpID0gMDsgfQorICAgICAgICBwdWJsaWMgU3RyaW5nIGhhbmRsZU5leHRMaW5lKCkgeworICAgICAgICAgICAgcmV0dXJuIChpIDwgYXJyYXkubGVuZ3RoKSA/IGFycmF5W2krK10gOiBudWxsOworICAgICAgICB9CisgICAgICAgIHB1YmxpYyB2b2lkIHJlc2V0KCkgeworICAgICAgICAgICAgaSA9IDA7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgICogUnVsZUJvZHkgc3ViY2xhc3MgZm9yIGEgUmVzb3VyY2VSZWFkZXIuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgUnVsZVJlYWRlciBleHRlbmRzIFJ1bGVCb2R5IHsKKyAgICAgICAgUmVzb3VyY2VSZWFkZXIgcmVhZGVyOworICAgICAgICBwdWJsaWMgUnVsZVJlYWRlcihSZXNvdXJjZVJlYWRlciByZWFkZXIpIHsgdGhpcy5yZWFkZXIgPSByZWFkZXI7IH0KKyAgICAgICAgcHVibGljIFN0cmluZyBoYW5kbGVOZXh0TGluZSgpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkTGluZSgpOworICAgICAgICAgICAgfSBjYXRjaCAoamF2YS5pby5JT0V4Y2VwdGlvbiBlKSB7fQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICAgICAgcHVibGljIHZvaWQgcmVzZXQoKSB7CisgICAgICAgICAgICByZWFkZXIucmVzZXQoKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBjbGFzcyBSdWxlSGFsZgorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogQSBjbGFzcyByZXByZXNlbnRpbmcgb25lIHNpZGUgb2YgYSBydWxlLiAgVGhpcyBjbGFzcyBrbm93cyBob3cgdG8KKyAgICAgKiBwYXJzZSBoYWxmIG9mIGEgcnVsZS4gIEl0IGlzIHRpZ2h0bHkgY291cGxlZCB0byB0aGUgbWV0aG9kCisgICAgICogVHJhbnNsaXRlcmF0b3JQYXJzZXIucGFyc2VSdWxlKCkuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgUnVsZUhhbGYgeworCisgICAgICAgIHB1YmxpYyBTdHJpbmcgdGV4dDsKKworICAgICAgICBwdWJsaWMgaW50IGN1cnNvciA9IC0xOyAvLyBwb3NpdGlvbiBvZiBjdXJzb3IgaW4gdGV4dAorICAgICAgICBwdWJsaWMgaW50IGFudGUgPSAtMTsgICAvLyBwb3NpdGlvbiBvZiBhbnRlIGNvbnRleHQgbWFya2VyICd7JyBpbiB0ZXh0CisgICAgICAgIHB1YmxpYyBpbnQgcG9zdCA9IC0xOyAgIC8vIHBvc2l0aW9uIG9mIHBvc3QgY29udGV4dCBtYXJrZXIgJ30nIGluIHRleHQKKworICAgICAgICAvLyBSZWNvcmQgdGhlIG9mZnNldCB0byB0aGUgY3Vyc29yIGVpdGhlciB0byB0aGUgbGVmdCBvciB0byB0aGUKKyAgICAgICAgLy8gcmlnaHQgb2YgdGhlIGtleS4gIFRoaXMgaXMgaW5kaWNhdGVkIGJ5IGNoYXJhY3RlcnMgb24gdGhlIG91dHB1dAorICAgICAgICAvLyBzaWRlIHRoYXQgYWxsb3cgdGhlIGN1cnNvciB0byBiZSBwb3NpdGlvbmVkIGFyYml0cmFyaWx5IHdpdGhpbgorICAgICAgICAvLyB0aGUgbWF0Y2hpbmcgdGV4dC4gIEZvciBleGFtcGxlLCBhYmN7ZGVmfSA+IHwgQEBAIHh5ejsgY2hhbmdlcworICAgICAgICAvLyBkZWYgdG8geHl6IGFuZCBtb3ZlcyB0aGUgY3Vyc29yIHRvIGJlZm9yZSBhYmMuICBPZmZzZXQgY2hhcmFjdGVycworICAgICAgICAvLyBtdXN0IGJlIGF0IHRoZSBzdGFydCBvciBlbmQsIGFuZCB0aGV5IGNhbm5vdCBtb3ZlIHRoZSBjdXJzb3IgcGFzdAorICAgICAgICAvLyB0aGUgYW50ZS0gb3IgcG9zdGNvbnRleHQgdGV4dC4gIFBsYWNlaG9sZGVycyBhcmUgb25seSB2YWxpZCBpbgorICAgICAgICAvLyBvdXRwdXQgdGV4dC4gIFRoZSBsZW5ndGggb2YgdGhlIGFudGUgYW5kIHBvc3QgY29udGV4dCBpcworICAgICAgICAvLyBkZXRlcm1pbmVkIGF0IHJ1bnRpbWUsIGJlY2F1c2Ugb2Ygc3VwcGxlbWVudGFscyBhbmQgcXVhbnRpZmllcnMuCisgICAgICAgIHB1YmxpYyBpbnQgY3Vyc29yT2Zmc2V0ID0gMDsgLy8gb25seSBub256ZXJvIG9uIG91dHB1dCBzaWRlCisKKyAgICAgICAgLy8gUG9zaXRpb24gb2YgZmlyc3QgQ1VSU09SX09GRlNFVCBvbiBfcmlnaHRfLiAgVGhpcyB3aWxsIGJlIC0xCisgICAgICAgIC8vIGZvciB8QCwgLTIgZm9yIHxAQCwgZXRjLiwgYW5kIDEgZm9yIEB8LCAyIGZvciBAQHwsIGV0Yy4KKyAgICAgICAgcHJpdmF0ZSBpbnQgY3Vyc29yT2Zmc2V0UG9zID0gMDsKKworICAgICAgICBwdWJsaWMgYm9vbGVhbiBhbmNob3JTdGFydCA9IGZhbHNlOworICAgICAgICBwdWJsaWMgYm9vbGVhbiBhbmNob3JFbmQgICA9IGZhbHNlOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBUaGUgc2VnbWVudCBudW1iZXIgZnJvbSAxLi5uIG9mIHRoZSBuZXh0ICcoJyB3ZSBzZWUKKyAgICAgICAgICogZHVyaW5nIHBhcnNpbmc7IDEtYmFzZWQuCisgICAgICAgICAqLworICAgICAgICBwcml2YXRlIGludCBuZXh0U2VnbWVudE51bWJlciA9IDE7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFBhcnNlIG9uZSBzaWRlIG9mIGEgcnVsZSwgc3RvcHBpbmcgYXQgZWl0aGVyIHRoZSBsaW1pdCwKKyAgICAgICAgICogdGhlIEVORF9PRl9SVUxFIGNoYXJhY3Rlciwgb3IgYW4gb3BlcmF0b3IuCisgICAgICAgICAqIEByZXR1cm4gdGhlIGluZGV4IGFmdGVyIHRoZSB0ZXJtaW5hdGluZyBjaGFyYWN0ZXIsIG9yCisgICAgICAgICAqIGlmIGxpbWl0IHdhcyByZWFjaGVkLCBsaW1pdAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIGludCBwYXJzZShTdHJpbmcgcnVsZSwgaW50IHBvcywgaW50IGxpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yUGFyc2VyIHBhcnNlcikgeworICAgICAgICAgICAgaW50IHN0YXJ0ID0gcG9zOworICAgICAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgICAgIHBvcyA9IHBhcnNlU2VjdGlvbihydWxlLCBwb3MsIGxpbWl0LCBwYXJzZXIsIGJ1ZiwgSUxMRUdBTF9UT1AsIGZhbHNlKTsKKyAgICAgICAgICAgIHRleHQgPSBidWYudG9TdHJpbmcoKTsKKworICAgICAgICAgICAgaWYgKGN1cnNvck9mZnNldCA+IDAgJiYgY3Vyc29yICE9IGN1cnNvck9mZnNldFBvcykgeworICAgICAgICAgICAgICAgIHN5bnRheEVycm9yKCJNaXNwbGFjZWQgIiArIENVUlNPUl9QT1MsIHJ1bGUsIHN0YXJ0KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvczsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBQYXJzZSBhIHNlY3Rpb24gb2Ygb25lIHNpZGUgb2YgYSBydWxlLCBzdG9wcGluZyBhdCBlaXRoZXIKKyAgICAgICAgICogdGhlIGxpbWl0LCB0aGUgRU5EX09GX1JVTEUgY2hhcmFjdGVyLCBhbiBvcGVyYXRvciwgb3IgYQorICAgICAgICAgKiBzZWdtZW50IGNsb3NlIGNoYXJhY3Rlci4gIFRoaXMgbWV0aG9kIHBhcnNlcyBib3RoIGEKKyAgICAgICAgICogdG9wLWxldmVsIHJ1bGUgaGFsZiBhbmQgYSBzZWdtZW50IHdpdGhpbiBzdWNoIGEgcnVsZSBoYWxmLgorICAgICAgICAgKiBJdCBjYWxscyBpdHNlbGYgcmVjdXJzaXZlbHkgdG8gcGFyc2Ugc2VnbWVudHMgYW5kIG5lc3RlZAorICAgICAgICAgKiBzZWdtZW50cy4KKyAgICAgICAgICogQHBhcmFtIGJ1ZiBidWZmZXIgaW50byB3aGljaCB0byBhY2N1bXVsYXRlIHRoZSBydWxlIHBhdHRlcm4KKyAgICAgICAgICogY2hhcmFjdGVycywgZWl0aGVyIGxpdGVyYWwgY2hhcmFjdGVycyBmcm9tIHRoZSBydWxlIG9yCisgICAgICAgICAqIHN0YW5kaW5zIGZvciBVbmljb2RlTWF0Y2hlciBvYmplY3RzIGluY2x1ZGluZyBzZWdtZW50cy4KKyAgICAgICAgICogQHBhcmFtIGlsbGVnYWwgdGhlIHNldCBvZiBzcGVjaWFsIGNoYXJhY3RlcnMgdGhhdCBpcyBpbGxlZ2FsIGR1cmluZworICAgICAgICAgKiB0aGlzIHBhcnNlLgorICAgICAgICAgKiBAcGFyYW0gaXNTZWdtZW50IGlmIHRydWUsIHRoZW4gd2UndmUgYWxyZWFkeSBzZWVuIGEgJygnIGFuZAorICAgICAgICAgKiBwb3Mgb24gZW50cnkgcG9pbnRzIHJpZ2h0IGFmdGVyIGl0LiAgQWNjdW11bGF0ZSBldmVyeXRoaW5nCisgICAgICAgICAqIHVwIHRvIHRoZSBjbG9zaW5nICcpJywgcHV0IGl0IGluIGEgc2VnbWVudCBtYXRjaGVyIG9iamVjdCwKKyAgICAgICAgICogZ2VuZXJhdGUgYSBzdGFuZGluIGZvciBpdCwgYW5kIGFkZCB0aGUgc3RhbmRpbiB0byBidWYuICBBcworICAgICAgICAgKiBhIHNpZGUgZWZmZWN0LCB1cGRhdGUgdGhlIHNlZ21lbnRzIHZlY3RvciB3aXRoIGEgcmVmZXJlbmNlCisgICAgICAgICAqIHRvIHRoZSBzZWdtZW50IG1hdGNoZXIuICBUaGlzIHdvcmtzIHJlY3Vyc2l2ZWx5IGZvciBuZXN0ZWQKKyAgICAgICAgICogc2VnbWVudHMuICBJZiBpc1NlZ21lbnQgaXMgZmFsc2UsIGp1c3QgYWNjdW11bGF0ZQorICAgICAgICAgKiBjaGFyYWN0ZXJzIGludG8gYnVmLgorICAgICAgICAgKiBAcmV0dXJuIHRoZSBpbmRleCBhZnRlciB0aGUgdGVybWluYXRpbmcgY2hhcmFjdGVyLCBvcgorICAgICAgICAgKiBpZiBsaW1pdCB3YXMgcmVhY2hlZCwgbGltaXQKKyAgICAgICAgICovCisgICAgICAgIHByaXZhdGUgaW50IHBhcnNlU2VjdGlvbihTdHJpbmcgcnVsZSwgaW50IHBvcywgaW50IGxpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsaXRlcmF0b3JQYXJzZXIgcGFyc2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVTZXQgaWxsZWdhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gaXNTZWdtZW50KSB7CisgICAgICAgICAgICBpbnQgc3RhcnQgPSBwb3M7CisgICAgICAgICAgICBQYXJzZVBvc2l0aW9uIHBwID0gbnVsbDsKKyAgICAgICAgICAgIGludCBxdW90ZVN0YXJ0ID0gLTE7IC8vIE1vc3QgcmVjZW50ICdzaW5nbGUgcXVvdGVkIHN0cmluZycKKyAgICAgICAgICAgIGludCBxdW90ZUxpbWl0ID0gLTE7CisgICAgICAgICAgICBpbnQgdmFyU3RhcnQgPSAtMTsgLy8gTW9zdCByZWNlbnQgJHZhcmlhYmxlUmVmZXJlbmNlCisgICAgICAgICAgICBpbnQgdmFyTGltaXQgPSAtMTsKKyAgICAgICAgICAgIGludFtdIGlyZWYgPSBuZXcgaW50WzFdOworICAgICAgICAgICAgaW50IGJ1ZlN0YXJ0ID0gYnVmLmxlbmd0aCgpOworCisgICAgICAgIG1haW46CisgICAgICAgICAgICB3aGlsZSAocG9zIDwgbGltaXQpIHsKKyAgICAgICAgICAgICAgICAvLyBTaW5jZSBhbGwgc3ludGF4IGNoYXJhY3RlcnMgYXJlIGluIHRoZSBCTVAsIGZldGNoaW5nCisgICAgICAgICAgICAgICAgLy8gMTYtYml0IGNvZGUgdW5pdHMgc3VmZmljZXMgaGVyZS4KKyAgICAgICAgICAgICAgICBjaGFyIGMgPSBydWxlLmNoYXJBdChwb3MrKyk7CisgICAgICAgICAgICAgICAgaWYgKFVDaGFyYWN0ZXJQcm9wZXJ0eS5pc1J1bGVXaGl0ZVNwYWNlKGMpKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvLyBIQUxGX0VOREVSUyBpcyBhbGwgY2hhcnMgdGhhdCBlbmQgYSBydWxlIGhhbGY6ICI8Pj07IgorICAgICAgICAgICAgICAgIGlmIChIQUxGX0VOREVSUy5pbmRleE9mKGMpID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzU2VnbWVudCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4RXJyb3IoIlVuY2xvc2VkIHNlZ21lbnQiLCBydWxlLCBzdGFydCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWsgbWFpbjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGFuY2hvckVuZCkgeworICAgICAgICAgICAgICAgICAgICAvLyBUZXh0IGFmdGVyIGEgcHJlc3VtZWQgZW5kIGFuY2hvciBpcyBhIHN5bnRheCBlcnIKKyAgICAgICAgICAgICAgICAgICAgc3ludGF4RXJyb3IoIk1hbGZvcm1lZCB2YXJpYWJsZSByZWZlcmVuY2UiLCBydWxlLCBzdGFydCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChVbmljb2RlU2V0LnJlc2VtYmxlc1BhdHRlcm4ocnVsZSwgcG9zLTEpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChwcCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwcCA9IG5ldyBQYXJzZVBvc2l0aW9uKDApOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHBwLnNldEluZGV4KHBvcy0xKTsgLy8gQmFja3VwIHRvIG9wZW5pbmcgJ1snCisgICAgICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQocGFyc2VyLnBhcnNlU2V0KHJ1bGUsIHBwKSk7CisgICAgICAgICAgICAgICAgICAgIHBvcyA9IHBwLmdldEluZGV4KCk7ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBlc2NhcGVzCisgICAgICAgICAgICAgICAgaWYgKGMgPT0gRVNDQVBFKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChwb3MgPT0gbGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheEVycm9yKCJUcmFpbGluZyBiYWNrc2xhc2giLCBydWxlLCBzdGFydCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaXJlZlswXSA9IHBvczsKKyAgICAgICAgICAgICAgICAgICAgaW50IGVzY2FwZWQgPSBVdGlsaXR5LnVuZXNjYXBlQXQocnVsZSwgaXJlZik7CisgICAgICAgICAgICAgICAgICAgIHBvcyA9IGlyZWZbMF07CisgICAgICAgICAgICAgICAgICAgIGlmIChlc2NhcGVkID09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhFcnJvcigiTWFsZm9ybWVkIGVzY2FwZSIsIHJ1bGUsIHN0YXJ0KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBwYXJzZXIuY2hlY2tWYXJpYWJsZVJhbmdlKGVzY2FwZWQsIHJ1bGUsIHN0YXJ0KTsKKyAgICAgICAgICAgICAgICAgICAgVVRGMTYuYXBwZW5kKGJ1ZiwgZXNjYXBlZCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvLyBIYW5kbGUgcXVvdGVkIG1hdHRlcgorICAgICAgICAgICAgICAgIGlmIChjID09IFFVT1RFKSB7CisgICAgICAgICAgICAgICAgICAgIGludCBpcSA9IHJ1bGUuaW5kZXhPZihRVU9URSwgcG9zKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlxID09IHBvcykgeworICAgICAgICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZChjKTsgLy8gUGFyc2UgWycnXSBvdXRzaWRlIHF1b3RlcyBhcyBbJ10KKyAgICAgICAgICAgICAgICAgICAgICAgICsrcG9zOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgLyogVGhpcyBsb29wIHBpY2tzIHVwIGEgcnVuIG9mIHF1b3RlZCB0ZXh0IG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICogZm9ybSAnYWFhYScgZWFjaCB0aW1lIHRocm91Z2guICBJZiB0aGlzIHJ1bgorICAgICAgICAgICAgICAgICAgICAgICAgICogaGFzbid0IHJlYWxseSBlbmRlZCAoJ2FhYWEnJ2JiYmInKSB0aGVuIGl0IGtlZXBzCisgICAgICAgICAgICAgICAgICAgICAgICAgKiBsb29waW5nLCBlYWNoIHRpbWUgYWRkaW5nIG9uIGEgbmV3IHJ1bi4gIFdoZW4gaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAqIHJlYWNoZXMgdGhlIGZpbmFsIHF1b3RlIGl0IGJyZWFrcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgcXVvdGVTdGFydCA9IGJ1Zi5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXEgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheEVycm9yKCJVbnRlcm1pbmF0ZWQgcXVvdGUiLCBydWxlLCBzdGFydCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQocnVsZS5zdWJzdHJpbmcocG9zLCBpcSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcyA9IGlxKzE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvcyA8IGxpbWl0ICYmIHJ1bGUuY2hhckF0KHBvcykgPT0gUVVPVEUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQYXJzZSBbJyddIGluc2lkZSBxdW90ZXMgYXMgWyddCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlxID0gcnVsZS5pbmRleE9mKFFVT1RFLCBwb3MrMSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29udGludWUgbG9vcGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHF1b3RlTGltaXQgPSBidWYubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaXE9cXVvdGVTdGFydDsgaXE8cXVvdGVMaW1pdDsgKytpcSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci5jaGVja1ZhcmlhYmxlUmFuZ2UoYnVmLmNoYXJBdChpcSksIHJ1bGUsIHN0YXJ0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBwYXJzZXIuY2hlY2tWYXJpYWJsZVJhbmdlKGMsIHJ1bGUsIHN0YXJ0KTsKKworICAgICAgICAgICAgICAgIGlmIChpbGxlZ2FsLmNvbnRhaW5zKGMpKSB7CisgICAgICAgICAgICAgICAgICAgIHN5bnRheEVycm9yKCJJbGxlZ2FsIGNoYXJhY3RlciAnIiArIGMgKyAnXCcnLCBydWxlLCBzdGFydCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgc3dpdGNoIChjKSB7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgLy8gRWxlbWVudHMgYWxsb3dlZCB3aXRoaW4gYW5kIG91dCBvZiBzZWdtZW50cworICAgICAgICAgICAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgY2FzZSBBTkNIT1JfU1RBUlQ6CisgICAgICAgICAgICAgICAgICAgIGlmIChidWYubGVuZ3RoKCkgPT0gMCAmJiAhYW5jaG9yU3RhcnQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuY2hvclN0YXJ0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheEVycm9yKCJNaXNwbGFjZWQgYW5jaG9yIHN0YXJ0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGUsIHN0YXJ0KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFNFR01FTlRfT1BFTjoKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnVmU2VnU3RhcnQgaXMgdGhlIG9mZnNldCBpbiBidWYgdG8gdGhlIGZpcnN0CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGFyYWN0ZXIgb2YgdGhlIHNlZ21lbnQgd2UgYXJlIHBhcnNpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYnVmU2VnU3RhcnQgPSBidWYubGVuZ3RoKCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlY29yZCBzZWdtZW50IG51bWJlciBub3csIHNpbmNlIG5leHRTZWdtZW50TnVtYmVyCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGJlIGluY3JlbWVudGVkIGR1cmluZyB0aGUgY2FsbCB0byBwYXJzZVNlY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZXJlIGFyZSBuZXN0ZWQgc2VnbWVudHMuCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2VnbWVudE51bWJlciA9IG5leHRTZWdtZW50TnVtYmVyKys7IC8vIDEtYmFzZWQKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gUGFyc2UgdGhlIHNlZ21lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvcyA9IHBhcnNlU2VjdGlvbihydWxlLCBwb3MsIGxpbWl0LCBwYXJzZXIsIGJ1ZiwgSUxMRUdBTF9TRUcsIHRydWUpOworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBBZnRlciBwYXJzaW5nIGEgc2VnbWVudCwgdGhlIHJlbGV2YW50IGNoYXJhY3RlcnMgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbiBidWYsIHN0YXJ0aW5nIGF0IG9mZnNldCBidWZTZWdTdGFydC4gIEV4dHJhY3QgdGhlbQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50byBhIHN0cmluZyBtYXRjaGVyLCBhbmQgcmVwbGFjZSB0aGVtIHdpdGggYQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhbmRpbiBmb3IgdGhhdCBtYXRjaGVyLgorICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nTWF0Y2hlciBtID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgU3RyaW5nTWF0Y2hlcihidWYuc3Vic3RyaW5nKGJ1ZlNlZ1N0YXJ0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWdtZW50TnVtYmVyLCBwYXJzZXIuZGF0YSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlY29yZCBhbmQgYXNzb2NpYXRlIG9iamVjdCBhbmQgc2VnbWVudCBudW1iZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci5zZXRTZWdtZW50T2JqZWN0KHNlZ21lbnROdW1iZXIsIG0pOworICAgICAgICAgICAgICAgICAgICAgICAgYnVmLnNldExlbmd0aChidWZTZWdTdGFydCk7CisgICAgICAgICAgICAgICAgICAgICAgICBidWYuYXBwZW5kKHBhcnNlci5nZXRTZWdtZW50U3RhbmRpbihzZWdtZW50TnVtYmVyKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBGVU5DVElPTjoKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgaXJlZlswXSA9IHBvczsKKyAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9ySURQYXJzZXIuU2luZ2xlSUQgc2luZ2xlID0gVHJhbnNsaXRlcmF0b3JJRFBhcnNlci5wYXJzZUZpbHRlcklEKHJ1bGUsIGlyZWYpOworICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIG5leHQgY2hhcmFjdGVyIE1VU1QgYmUgYSBzZWdtZW50IG9wZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzaW5nbGUgPT0gbnVsbCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICFVdGlsaXR5LnBhcnNlQ2hhcihydWxlLCBpcmVmLCBTRUdNRU5UX09QRU4pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4RXJyb3IoIkludmFsaWQgZnVuY3Rpb24iLCBydWxlLCBzdGFydCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQgPSBzaW5nbGUuZ2V0SW5zdGFuY2UoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhFcnJvcigiSW52YWxpZCBmdW5jdGlvbiBJRCIsIHJ1bGUsIHN0YXJ0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnVmU2VnU3RhcnQgaXMgdGhlIG9mZnNldCBpbiBidWYgdG8gdGhlIGZpcnN0CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGFyYWN0ZXIgb2YgdGhlIHNlZ21lbnQgd2UgYXJlIHBhcnNpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYnVmU2VnU3RhcnQgPSBidWYubGVuZ3RoKCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBhcnNlIHRoZSBzZWdtZW50CisgICAgICAgICAgICAgICAgICAgICAgICBwb3MgPSBwYXJzZVNlY3Rpb24ocnVsZSwgaXJlZlswXSwgbGltaXQsIHBhcnNlciwgYnVmLCBJTExFR0FMX0ZVTkMsIHRydWUpOworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBBZnRlciBwYXJzaW5nIGEgc2VnbWVudCwgdGhlIHJlbGV2YW50IGNoYXJhY3RlcnMgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbiBidWYsIHN0YXJ0aW5nIGF0IG9mZnNldCBidWZTZWdTdGFydC4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uUmVwbGFjZXIgciA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEZ1bmN0aW9uUmVwbGFjZXIodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFN0cmluZ1JlcGxhY2VyKGJ1Zi5zdWJzdHJpbmcoYnVmU2VnU3RhcnQpLCBwYXJzZXIuZGF0YSkpOworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXBsYWNlIHRoZSBidWZmZXIgY29udGVudHMgd2l0aCBhIHN0YW5kLWluCisgICAgICAgICAgICAgICAgICAgICAgICBidWYuc2V0TGVuZ3RoKGJ1ZlNlZ1N0YXJ0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQocGFyc2VyLmdlbmVyYXRlU3RhbmRJbkZvcihyKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBTeW1ib2xUYWJsZS5TWU1CT0xfUkVGOgorICAgICAgICAgICAgICAgICAgICAvLyBIYW5kbGUgdmFyaWFibGUgcmVmZXJlbmNlcyBhbmQgc2VnbWVudCByZWZlcmVuY2VzICIkMSIgLi4gIiQ5IgorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBBIHZhcmlhYmxlIHJlZmVyZW5jZSBtdXN0IGJlIGZvbGxvd2VkIGltbWVkaWF0ZWx5CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBieSBhIFVuaWNvZGUgaWRlbnRpZmllciBzdGFydCBhbmQgemVybyBvciBtb3JlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBVbmljb2RlIGlkZW50aWZpZXIgcGFydCBjaGFyYWN0ZXJzLCBvciBieSBhIGRpZ2l0CisgICAgICAgICAgICAgICAgICAgICAgICAvLyAxLi45IGlmIGl0IGlzIGEgc2VnbWVudCByZWZlcmVuY2UuCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9zID09IGxpbWl0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQSB2YXJpYWJsZSByZWYgY2hhcmFjdGVyIGF0IHRoZSBlbmQgYWN0cyBhcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuIGFuY2hvciB0byB0aGUgY29udGV4dCBsaW1pdCwgYXMgaW4gcGVybC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmNob3JFbmQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gUGFyc2UgIiQxIiAiJDIiIC4uICIkOSIgLi4gKG5vIHVwcGVyIGxpbWl0KQorICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHJ1bGUuY2hhckF0KHBvcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgciA9IFVDaGFyYWN0ZXIuZGlnaXQoYywgMTApOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPj0gMSAmJiByIDw9IDkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcmVmWzBdID0gcG9zOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBVdGlsaXR5LnBhcnNlTnVtYmVyKHJ1bGUsIGlyZWYsIDEwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4RXJyb3IoIlVuZGVmaW5lZCBzZWdtZW50IHJlZmVyZW5jZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGUsIHN0YXJ0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gaXJlZlswXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYuYXBwZW5kKHBhcnNlci5nZXRTZWdtZW50U3RhbmRpbihyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcCA9PSBudWxsKSB7IC8vIExhenkgY3JlYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBwID0gbmV3IFBhcnNlUG9zaXRpb24oMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBwLnNldEluZGV4KHBvcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIG5hbWUgPSBwYXJzZXIucGFyc2VEYXRhLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZVJlZmVyZW5jZShydWxlLCBwcCwgbGltaXQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuYW1lID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBtZWFucyB0aGUgJyQnIHdhcyBub3QgZm9sbG93ZWQgYnkgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWxpZCBuYW1lLiAgVHJ5IHRvIGludGVycHJldCBpdCBhcyBhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmQgYW5jaG9yIHRoZW4uICBJZiB0aGlzIGFsc28gZG9lc24ndCB3b3JrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChpZiB3ZSBzZWUgYSBmb2xsb3dpbmcgY2hhcmFjdGVyKSB0aGVuIHNpZ25hbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbiBlcnJvci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9yRW5kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcyA9IHBwLmdldEluZGV4KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIHZhcmlhYmxlIGRlZmluaXRpb24gc3RhdGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZW4gdGhlIExIUyB2YXJpYWJsZSB3aWxsIGJlIHVuZGVmaW5lZC4gIEluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdCBjYXNlIGFwcGVuZFZhcmlhYmxlRGVmKCkgd2lsbCBhcHBlbmQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lhbCBwbGFjZWhvbGRlciBjaGFyIHZhcmlhYmxlTGltaXQtMS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJTdGFydCA9IGJ1Zi5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXIuYXBwZW5kVmFyaWFibGVEZWYobmFtZSwgYnVmKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJMaW1pdCA9IGJ1Zi5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIERPVDoKKyAgICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZChwYXJzZXIuZ2V0RG90U3RhbmRJbigpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBLTEVFTkVfU1RBUjoKKyAgICAgICAgICAgICAgICBjYXNlIE9ORV9PUl9NT1JFOgorICAgICAgICAgICAgICAgIGNhc2UgWkVST19PUl9PTkU6CisgICAgICAgICAgICAgICAgICAgIC8vIFF1YW50aWZpZXJzLiAgV2UgaGFuZGxlIHNpbmdsZSBjaGFyYWN0ZXJzLCBxdW90ZWQgc3RyaW5ncywKKyAgICAgICAgICAgICAgICAgICAgLy8gdmFyaWFibGUgcmVmZXJlbmNlcywgYW5kIHNlZ21lbnRzLgorICAgICAgICAgICAgICAgICAgICAvLyAgYSsgICAgICBtYXRjaGVzICBhYWEKKyAgICAgICAgICAgICAgICAgICAgLy8gICdmb28nKyAgbWF0Y2hlcyAgZm9vZm9vZm9vCisgICAgICAgICAgICAgICAgICAgIC8vICAkdisgICAgIG1hdGNoZXMgIHh5eHl4eSBpZiAkdiA9PSB4eQorICAgICAgICAgICAgICAgICAgICAvLyAgKHNlZykrICBtYXRjaGVzICBzZWdzZWdzZWcKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzU2VnbWVudCAmJiBidWYubGVuZ3RoKCkgPT0gYnVmU3RhcnQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgKi8rIGltbWVkaWF0ZWx5IGZvbGxvd3MgJygnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4RXJyb3IoIk1pc3BsYWNlZCBxdWFudGlmaWVyIiwgcnVsZSwgc3RhcnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfSAKKyAKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBxc3RhcnQsIHFsaW1pdDsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSAqLysgZm9sbG93cyBhbiBpc29sYXRlZCBjaGFyYWN0ZXIgb3IgcXVvdGUKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIHZhcmlhYmxlIHJlZmVyZW5jZQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJ1Zi5sZW5ndGgoKSA9PSBxdW90ZUxpbWl0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlICovKyBmb2xsb3dzIGEgJ3F1b3RlZCBzdHJpbmcnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXN0YXJ0ID0gcXVvdGVTdGFydDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBxbGltaXQgPSBxdW90ZUxpbWl0OworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChidWYubGVuZ3RoKCkgPT0gdmFyTGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgKi8rIGZvbGxvd3MgYSAkdmFyaWFibGVSZWZlcmVuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBxc3RhcnQgPSB2YXJTdGFydDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBxbGltaXQgPSB2YXJMaW1pdDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlICovKyBmb2xsb3dzIGEgc2luZ2xlIGNoYXJhY3RlciwgcG9zc2libHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhIHNlZ21lbnQgc3RhbmRpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFzdGFydCA9IGJ1Zi5sZW5ndGgoKSAtIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcWxpbWl0ID0gcXN0YXJ0ICsgMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgVW5pY29kZU1hdGNoZXIgbSA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFN0cmluZ01hdGNoZXIoYnVmLnRvU3RyaW5nKCksIHFzdGFydCwgcWxpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIHBhcnNlci5kYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBtaW4gPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1heCA9IFF1YW50aWZpZXIuTUFYOworICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChjKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIE9ORV9PUl9NT1JFOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbiA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFpFUk9fT1JfT05FOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbiA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlIEtMRUVORV9TVEFSOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgIGRvIG5vdGhpbmcgLS0gbWluLCBtYXggYWxyZWFkeSBzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBuZXcgUXVhbnRpZmllcihtLCBtaW4sIG1heCk7CisgICAgICAgICAgICAgICAgICAgICAgICBidWYuc2V0TGVuZ3RoKHFzdGFydCk7CisgICAgICAgICAgICAgICAgICAgICAgICBidWYuYXBwZW5kKHBhcnNlci5nZW5lcmF0ZVN0YW5kSW5Gb3IobSkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAvLyBFbGVtZW50cyBhbGxvd2VkIE9OTFkgV0lUSElOIHNlZ21lbnRzCisgICAgICAgICAgICAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICBjYXNlIFNFR01FTlRfQ0xPU0U6CisgICAgICAgICAgICAgICAgICAgIC8vIGFzc2VydChpc1NlZ21lbnQpOworICAgICAgICAgICAgICAgICAgICAvLyBXZSdyZSBkb25lIHBhcnNpbmcgYSBzZWdtZW50LgorICAgICAgICAgICAgICAgICAgICBicmVhayBtYWluOworCisgICAgICAgICAgICAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAvLyBFbGVtZW50cyBhbGxvd2VkIE9OTFkgT1VUU0lERSBzZWdtZW50cworICAgICAgICAgICAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgY2FzZSBDT05URVhUX0FOVEU6CisgICAgICAgICAgICAgICAgICAgIGlmIChhbnRlID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheEVycm9yKCJNdWx0aXBsZSBhbnRlIGNvbnRleHRzIiwgcnVsZSwgc3RhcnQpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGFudGUgPSBidWYubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ09OVEVYVF9QT1NUOgorICAgICAgICAgICAgICAgICAgICBpZiAocG9zdCA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhFcnJvcigiTXVsdGlwbGUgcG9zdCBjb250ZXh0cyIsIHJ1bGUsIHN0YXJ0KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBwb3N0ID0gYnVmLmxlbmd0aCgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIENVUlNPUl9QT1M6CisgICAgICAgICAgICAgICAgICAgIGlmIChjdXJzb3IgPj0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4RXJyb3IoIk11bHRpcGxlIGN1cnNvcnMiLCBydWxlLCBzdGFydCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgY3Vyc29yID0gYnVmLmxlbmd0aCgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIENVUlNPUl9PRkZTRVQ6CisgICAgICAgICAgICAgICAgICAgIGlmIChjdXJzb3JPZmZzZXQgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYnVmLmxlbmd0aCgpID4gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheEVycm9yKCJNaXNwbGFjZWQgIiArIGMsIHJ1bGUsIHN0YXJ0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIC0tY3Vyc29yT2Zmc2V0OworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGN1cnNvck9mZnNldCA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChidWYubGVuZ3RoKCkgIT0gY3Vyc29yT2Zmc2V0UG9zIHx8IGN1cnNvciA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4RXJyb3IoIk1pc3BsYWNlZCAiICsgYywgcnVsZSwgc3RhcnQpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgKytjdXJzb3JPZmZzZXQ7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3Vyc29yID09IDAgJiYgYnVmLmxlbmd0aCgpID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3JPZmZzZXQgPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY3Vyc29yIDwgMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvck9mZnNldFBvcyA9IGJ1Zi5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3JPZmZzZXQgPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhFcnJvcigiTWlzcGxhY2VkICIgKyBjLCBydWxlLCBzdGFydCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgIC8vIE5vbi1zcGVjaWFsIGNoYXJhY3RlcnMKKyAgICAgICAgICAgICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIC8vIERpc2FsbG93IHVucXVvdGVkIGNoYXJhY3RlcnMgb3RoZXIgdGhhbiBbMC05QS1aYS16XQorICAgICAgICAgICAgICAgICAgICAvLyBpbiB0aGUgcHJpbnRhYmxlIEFTQ0lJIHJhbmdlLiAgVGhlc2UgY2hhcmFjdGVycyBhcmUKKyAgICAgICAgICAgICAgICAgICAgLy8gcmVzZXJ2ZWQgZm9yIHBvc3NpYmxlIGZ1dHVyZSB1c2UuCisgICAgICAgICAgICAgICAgICAgIGlmIChjID49IDB4MDAyMSAmJiBjIDw9IDB4MDA3RSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgISgoYyA+PSAnMCcgJiYgYyA8PSAnOScpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgIChjID49ICdBJyAmJiBjIDw9ICdaJykgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGMgPj0gJ2EnICYmIGMgPD0gJ3onKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheEVycm9yKCJVbnF1b3RlZCAiICsgYywgcnVsZSwgc3RhcnQpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoYyk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBwb3M7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogUmVtb3ZlIGNvbnRleHQuCisgICAgICAgICAqLworICAgICAgICB2b2lkIHJlbW92ZUNvbnRleHQoKSB7CisgICAgICAgICAgICB0ZXh0ID0gdGV4dC5zdWJzdHJpbmcoYW50ZSA8IDAgPyAwIDogYW50ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3N0IDwgMCA/IHRleHQubGVuZ3RoKCkgOiBwb3N0KTsKKyAgICAgICAgICAgIGFudGUgPSBwb3N0ID0gLTE7CisgICAgICAgICAgICBhbmNob3JTdGFydCA9IGFuY2hvckVuZCA9IGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFJldHVybiB0cnVlIGlmIHRoaXMgaGFsZiBsb29rcyBsaWtlIHZhbGlkIG91dHB1dCwgdGhhdCBpcywgZG9lcyBub3QKKyAgICAgICAgICogY29udGFpbiBxdWFudGlmaWVycyBvciBvdGhlciBzcGVjaWFsIGlucHV0LW9ubHkgZWxlbWVudHMuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgYm9vbGVhbiBpc1ZhbGlkT3V0cHV0KFRyYW5zbGl0ZXJhdG9yUGFyc2VyIHBhcnNlcikgeworICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPHRleHQubGVuZ3RoKCk7ICkgeworICAgICAgICAgICAgICAgIGludCBjID0gVVRGMTYuY2hhckF0KHRleHQsIGkpOworICAgICAgICAgICAgICAgIGkgKz0gVVRGMTYuZ2V0Q2hhckNvdW50KGMpOworICAgICAgICAgICAgICAgIGlmICghcGFyc2VyLnBhcnNlRGF0YS5pc1JlcGxhY2VyKGMpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGlzIGhhbGYgbG9va3MgbGlrZSB2YWxpZCBpbnB1dCwgdGhhdCBpcywgZG9lcyBub3QKKyAgICAgICAgICogY29udGFpbiBmdW5jdGlvbnMgb3Igb3RoZXIgc3BlY2lhbCBvdXRwdXQtb25seSBlbGVtZW50cy4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBib29sZWFuIGlzVmFsaWRJbnB1dChUcmFuc2xpdGVyYXRvclBhcnNlciBwYXJzZXIpIHsKKyAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTx0ZXh0Lmxlbmd0aCgpOyApIHsKKyAgICAgICAgICAgICAgICBpbnQgYyA9IFVURjE2LmNoYXJBdCh0ZXh0LCBpKTsKKyAgICAgICAgICAgICAgICBpICs9IFVURjE2LmdldENoYXJDb3VudChjKTsKKyAgICAgICAgICAgICAgICBpZiAoIXBhcnNlci5wYXJzZURhdGEuaXNNYXRjaGVyKGMpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIFBVQkxJQyBtZXRob2RzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3Rvci4KKyAgICAgKi8KKyAgICBwdWJsaWMgVHJhbnNsaXRlcmF0b3JQYXJzZXIoKSB7CisgICAgfQorCisgICAgLyoqCisgICAgICogUGFyc2UgYSBzZXQgb2YgcnVsZXMuICBBZnRlciB0aGUgcGFyc2UgY29tcGxldGVzLCBleGFtaW5lIHRoZSBwdWJsaWMKKyAgICAgKiBkYXRhIG1lbWJlcnMgZm9yIHJlc3VsdHMuCisgICAgICovCisgICAgcHVibGljIHZvaWQgcGFyc2UoU3RyaW5nIHJ1bGVzLCBpbnQgZGlyZWN0aW9uKSB7CisgICAgICAgIHBhcnNlUnVsZXMobmV3IFJ1bGVBcnJheShuZXcgU3RyaW5nW10geyBydWxlcyB9KSwgZGlyZWN0aW9uKTsKKyAgICB9CisgICAKKyAgICAvKioKKyAgICAgKiBQYXJzZSBhIHNldCBvZiBydWxlcy4gIEFmdGVyIHRoZSBwYXJzZSBjb21wbGV0ZXMsIGV4YW1pbmUgdGhlIHB1YmxpYworICAgICAqIGRhdGEgbWVtYmVycyBmb3IgcmVzdWx0cy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBwYXJzZShSZXNvdXJjZVJlYWRlciBydWxlcywgaW50IGRpcmVjdGlvbikgeworICAgICAgICBwYXJzZVJ1bGVzKG5ldyBSdWxlUmVhZGVyKHJ1bGVzKSwgZGlyZWN0aW9uKTsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBQUklWQVRFIG1ldGhvZHMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIFBhcnNlIGFuIGFycmF5IG9mIHplcm8gb3IgbW9yZSBydWxlcy4gIFRoZSBzdHJpbmdzIGluIHRoZSBhcnJheSBhcmUKKyAgICAgKiB0cmVhdGVkIGFzIGlmIHRoZXkgd2VyZSBjb25jYXRlbmF0ZWQgdG9nZXRoZXIsIHdpdGggcnVsZSB0ZXJtaW5hdG9ycworICAgICAqIGluc2VydGVkIGJldHdlZW4gYXJyYXkgZWxlbWVudHMgaWYgbm90IHByZXNlbnQgYWxyZWFkeS4KKyAgICAgKgorICAgICAqIEFueSBwcmV2aW91cyBydWxlcyBhcmUgZGlzY2FyZGVkLiAgVHlwaWNhbGx5IHRoaXMgbWV0aG9kIGlzIGNhbGxlZCBleGFjdGx5CisgICAgICogb25jZSwgZHVyaW5nIGNvbnN0cnVjdGlvbi4KKyAgICAgKgorICAgICAqIFRoZSBtZW1iZXIgdGhpcy5kYXRhIHdpbGwgYmUgc2V0IHRvIG51bGwgaWYgdGhlcmUgYXJlIG5vIHJ1bGVzLgorICAgICAqCisgICAgICogQGV4Y2VwdGlvbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlcmUgaXMgYSBzeW50YXggZXJyb3IgaW4gdGhlCisgICAgICogcnVsZXMKKyAgICAgKi8KKyAgICB2b2lkIHBhcnNlUnVsZXMoUnVsZUJvZHkgcnVsZUFycmF5LCBpbnQgZGlyKSB7CisgICAgICAgIGRhdGEgPSBuZXcgUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3IuRGF0YSgpOworICAgICAgICBkaXJlY3Rpb24gPSBkaXI7CisgICAgICAgIHJ1bGVDb3VudCA9IDA7CisgICAgICAgIGNvbXBvdW5kRmlsdGVyID0gbnVsbDsKKworICAgICAgICAvLyBCeSBkZWZhdWx0LCBydWxlcyB1c2UgcGFydCBvZiB0aGUgcHJpdmF0ZSB1c2UgYXJlYQorICAgICAgICAvLyBFMDAwLi5GOEZGIGZvciB2YXJpYWJsZXMgYW5kIG90aGVyIHN0YW5kLWlucy4gIEN1cnJlbnRseQorICAgICAgICAvLyB0aGUgcmFuZ2UgRjAwMC4uRjhGRiBpcyB0eXBpY2FsbHkgc3VmZmljaWVudC4gIFRoZSAndXNlCisgICAgICAgIC8vIHZhcmlhYmxlIHJhbmdlJyBwcmFnbWEgYWxsb3dzIHJ1bGUgc2V0cyB0byBtb2RpZnkgdGhpcy4KKyAgICAgICAgc2V0VmFyaWFibGVSYW5nZSgweEYwMDAsIDB4RjhGRik7CisKKyAgICAgICAgdmFyaWFibGVzVmVjdG9yID0gbmV3IFZlY3RvcigpOworICAgICAgICBwYXJzZURhdGEgPSBuZXcgUGFyc2VEYXRhKCk7CisKKyAgICAgICAgU3RyaW5nQnVmZmVyIGVycm9ycyA9IG51bGw7CisgICAgICAgIGludCBlcnJvckNvdW50ID0gMDsKKworICAgICAgICBydWxlQXJyYXkucmVzZXQoKTsKKworICAgICAgICBTdHJpbmdCdWZmZXIgaWRCbG9ja1Jlc3VsdCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgaWRTcGxpdFBvaW50ID0gLTE7CisgICAgICAgIC8vIFRoZSBtb2RlIG1hcmtzIHdoZXRoZXIgd2UgYXJlIGluIHRoZSBoZWFkZXIgOjppZCBibG9jaywgdGhlCisgICAgICAgIC8vIHJ1bGUgYmxvY2ssIG9yIHRoZSBmb290ZXIgOjppZCBibG9jay4KKyAgICAgICAgLy8gbW9kZSA9PSAwOiBzdGFydDogcnVsZS0+MSwgOjppZC0+MAorICAgICAgICAvLyBtb2RlID09IDE6IGluIHJ1bGVzOiBydWxlLT4xLCA6OmlkLT4yCisgICAgICAgIC8vIG1vZGUgPT0gMjogaW4gZm9vdGVyIHJ1bGUgYmxvY2s6IHJ1bGUtPkVSUk9SLCA6OmlkLT4yCisgICAgICAgIGludCBtb2RlID0gMDsKKworICAgICAgICAvLyBUaGUgY29tcG91bmQgZmlsdGVyIG9mZnNldCBpcyBhbiBpbmRleCBpbnRvIGlkQmxvY2tSZXN1bHQuCisgICAgICAgIC8vIElmIGl0IGlzIDAsIHRoZW4gdGhlIGNvbXBvdW5kIGZpbHRlciBvY2N1cnJlZCBhdCB0aGUgc3RhcnQsCisgICAgICAgIC8vIGFuZCBpdCBpcyB0aGUgb2Zmc2V0IHRvIHRoZSBfc3RhcnRfIG9mIHRoZSBjb21wb3VuZCBmaWx0ZXIKKyAgICAgICAgLy8gcGF0dGVybi4gIE90aGVyd2lzZSBpdCBpcyB0aGUgb2Zmc2V0IHRvIHRoZSBfbGltaXRfIG9mIHRoZQorICAgICAgICAvLyBjb21wb3VuZCBmaWx0ZXIgcGF0dGVybiB3aXRoaW4gaWRCbG9ja1Jlc3VsdC4KKyAgICAgICAgdGhpcy5jb21wb3VuZEZpbHRlciA9IG51bGw7CisgICAgICAgIGludCBjb21wb3VuZEZpbHRlck9mZnNldCA9IC0xOworCisgICAgICAgIC8vIFRoZSBudW1iZXIgb2YgOjpJRCBibG9jayBlbnRyaWVzIHdlIGhhdmUgcGFyc2VkCisgICAgICAgIGludCBpZEJsb2NrQ291bnQgPSAwOworCisgICAgbWFpbjoKKyAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgU3RyaW5nIHJ1bGUgPSBydWxlQXJyYXkubmV4dExpbmUoKTsKKyAgICAgICAgICAgIGlmIChydWxlID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGludCBwb3MgPSAwOworICAgICAgICAgICAgaW50IGxpbWl0ID0gcnVsZS5sZW5ndGgoKTsKKyAgICAgICAgICAgIHdoaWxlIChwb3MgPCBsaW1pdCkgeworICAgICAgICAgICAgICAgIGNoYXIgYyA9IHJ1bGUuY2hhckF0KHBvcysrKTsKKyAgICAgICAgICAgICAgICBpZiAoVUNoYXJhY3RlclByb3BlcnR5LmlzUnVsZVdoaXRlU3BhY2UoYykpIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8vIFNraXAgbGluZXMgc3RhcnRpbmcgd2l0aCB0aGUgY29tbWVudCBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICBpZiAoYyA9PSBSVUxFX0NPTU1FTlRfQ0hBUikgeworICAgICAgICAgICAgICAgICAgICBwb3MgPSBydWxlLmluZGV4T2YoIlxuIiwgcG9zKSArIDE7CisgICAgICAgICAgICAgICAgICAgIGlmIChwb3MgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIE5vICJcbiIgZm91bmQ7IHJlc3Qgb2YgcnVsZSBpcyBhIGNvbW1uZXQKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8gRWl0aGVyIGZhbGwgb3V0IG9yIHJlc3RhcnQgd2l0aCBuZXh0IGxpbmUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLy8gT2Z0ZW4gYSBydWxlIGZpbGUgY29udGFpbnMgbXVsdGlwbGUgZXJyb3JzLiAgSXQncworICAgICAgICAgICAgICAgIC8vIGNvbnZlbmllbnQgdG8gdGhlIHJ1bGUgYXV0aG9yIGlmIHRoZXNlIGFyZSBhbGwgcmVwb3J0ZWQKKyAgICAgICAgICAgICAgICAvLyBhdCBvbmNlLiAgV2Uga2VlcCBwYXJzaW5nIHJ1bGVzIGV2ZW4gYWZ0ZXIgYSBmYWlsdXJlLCB1cAorICAgICAgICAgICAgICAgIC8vIHRvIGEgc3BlY2lmaWVkIGxpbWl0LCBhbmQgcmVwb3J0IGFsbCBlcnJvcnMgYXQgb25jZS4KKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAvLyBXZSd2ZSBmb3VuZCB0aGUgc3RhcnQgb2YgYSBydWxlIG9yIElELiAgYyBpcyBpdHMgZmlyc3QKKyAgICAgICAgICAgICAgICAgICAgLy8gY2hhcmFjdGVyLCBhbmQgcG9zIHBvaW50cyBwYXN0IGMuCisgICAgICAgICAgICAgICAgICAgIC0tcG9zOworICAgICAgICAgICAgICAgICAgICAvLyBMb29rIGZvciBhbiBJRCB0b2tlbi4gIE11c3QgaGF2ZSBhdCBsZWFzdCBJRF9UT0tFTl9MRU4gKyAxCisgICAgICAgICAgICAgICAgICAgIC8vIGNoYXJzIGxlZnQuCisgICAgICAgICAgICAgICAgICAgIGlmICgocG9zICsgSURfVE9LRU5fTEVOICsgMSkgPD0gbGltaXQgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGUucmVnaW9uTWF0Y2hlcyhwb3MsIElEX1RPS0VOLCAwLCBJRF9UT0tFTl9MRU4pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwb3MgKz0gSURfVE9LRU5fTEVOOworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHJ1bGUuY2hhckF0KHBvcyk7CisgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoVUNoYXJhY3RlclByb3BlcnR5LmlzUnVsZVdoaXRlU3BhY2UoYykgJiYgcG9zIDwgbGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArK3BvczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gcnVsZS5jaGFyQXQocG9zKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtb2RlID09IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIGp1c3QgZW50ZXJlZCB0aGUgZm9vdGVyIDo6SUQgYmxvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlID0gMjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbiB0aGUgZm9yd2FyZCBkaXJlY3Rpb24gYWRkIGVsZW1lbnRzIGF0IHRoZSBlbmQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW4gdGhlIHJldmVyc2UgZGlyZWN0aW9uIGFkZCBlbGVtZW50cyBhdCB0aGUgc3RhcnQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRTcGxpdFBvaW50ID0gaWRCbG9ja0NvdW50OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaW50W10gcCA9IG5ldyBpbnRbXSB7IHBvcyB9OworCisgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xpdGVyYXRvcklEUGFyc2VyLlNpbmdsZUlEIGlkID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xpdGVyYXRvcklEUGFyc2VyLnBhcnNlU2luZ2xlSUQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydWxlLCBwLCBkaXJlY3Rpb24pOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBbMF0gIT0gcG9zICYmIFV0aWxpdHkucGFyc2VDaGFyKHJ1bGUsIHAsIEVORF9PRl9SVUxFKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1Y2Nlc3NmdWwgOjpJRCBwYXJzZS4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaXJlY3Rpb24gPT0gVHJhbnNsaXRlcmF0b3IuRk9SV0FSRCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZEJsb2NrUmVzdWx0LmFwcGVuZChpZC5jYW5vbklEKS5hcHBlbmQoRU5EX09GX1JVTEUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkQmxvY2tSZXN1bHQuaW5zZXJ0KDAsIGlkLmNhbm9uSUQgKyBFTkRfT0ZfUlVMRSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytpZEJsb2NrQ291bnQ7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ291bGRuJ3QgcGFyc2UgYW4gSUQuICBUcnkgdG8gcGFyc2UgYSBnbG9iYWwgZmlsdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50W10gd2l0aFBhcmVucyA9IG5ldyBpbnRbXSB7IC0xIH07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pY29kZVNldCBmID0gVHJhbnNsaXRlcmF0b3JJRFBhcnNlci5wYXJzZUdsb2JhbEZpbHRlcihydWxlLCBwLCBkaXJlY3Rpb24sIHdpdGhQYXJlbnMsIGlkQmxvY2tSZXN1bHQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmICE9IG51bGwgJiYgVXRpbGl0eS5wYXJzZUNoYXIocnVsZSwgcCwgRU5EX09GX1JVTEUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZGlyZWN0aW9uID09IFRyYW5zbGl0ZXJhdG9yLkZPUldBUkQpID09CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod2l0aFBhcmVuc1swXSA9PSAwKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBvdW5kRmlsdGVyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNdWx0aXBsZSBjb21wb3VuZCBmaWx0ZXJzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4RXJyb3IoIk11bHRpcGxlIGdsb2JhbCBmaWx0ZXJzIiwgcnVsZSwgcG9zKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvdW5kRmlsdGVyID0gZjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvdW5kRmlsdGVyT2Zmc2V0ID0gaWRCbG9ja0NvdW50OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbnZhbGlkIDo6aWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2FuIGJlIHBhcnNlZCBhcyBuZWl0aGVyIGFuIElEIG5vciBhIGdsb2JhbCBmaWx0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4RXJyb3IoIkludmFsaWQgOjpJRCIsIHJ1bGUsIHBvcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBwb3MgPSBwWzBdOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc2VtYmxlc1ByYWdtYShydWxlLCBwb3MsIGxpbWl0KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBwcCA9IHBhcnNlUHJhZ21hKHJ1bGUsIHBvcywgbGltaXQpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBwcCA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhFcnJvcigiVW5yZWNvZ25pemVkIHByYWdtYSIsIHJ1bGUsIHBvcyk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBwb3MgPSBwcHA7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBQYXJzZSBhIHJ1bGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvcyA9IHBhcnNlUnVsZShydWxlLCBwb3MsIGxpbWl0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrcnVsZUNvdW50OworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1vZGUgPT0gMikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDo6aWQgaW4gaWxsZWdhbCBwb3NpdGlvbiAoYmVjYXVzZSBhIHJ1bGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvY2N1cnJlZCBhZnRlciB0aGUgOjppZCBmb290ZXIgYmxvY2spCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4RXJyb3IoIjo6SUQgaW4gaWxsZWdhbCBwb3NpdGlvbiIsIHJ1bGUsIHBvcyk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBtb2RlID0gMTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChlcnJvckNvdW50ID09IDMwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCJcbk1vcmUgdGhhbiAzMCBlcnJvcnM7IGZ1cnRoZXIgbWVzc2FnZXMgc3F1ZWxjaGVkIik7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBtYWluOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChlcnJvcnMgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzID0gbmV3IFN0cmluZ0J1ZmZlcihlLmdldE1lc3NhZ2UoKSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCJcbiIgKyBlLmdldE1lc3NhZ2UoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgKytlcnJvckNvdW50OworICAgICAgICAgICAgICAgICAgICBwb3MgPSBydWxlRW5kKHJ1bGUsIHBvcywgbGltaXQpICsgMTsgLy8gKzEgYWR2YW5jZXMgcGFzdCAnOycKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZEJsb2NrID0gaWRCbG9ja1Jlc3VsdC50b1N0cmluZygpOworCisgICAgICAgIGlmIChpZFNwbGl0UG9pbnQgPCAwKSB7CisgICAgICAgICAgICBpZFNwbGl0UG9pbnQgPSBpZEJsb2NrQ291bnQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZGlyZWN0aW9uID09IFRyYW5zbGl0ZXJhdG9yLlJFVkVSU0UpIHsKKyAgICAgICAgICAgIGlkU3BsaXRQb2ludCA9IGlkQmxvY2tDb3VudCAtIGlkU3BsaXRQb2ludDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIENvbnZlcnQgdGhlIHNldCB2ZWN0b3IgdG8gYW4gYXJyYXkKKyAgICAgICAgZGF0YS52YXJpYWJsZXMgPSBuZXcgT2JqZWN0W3ZhcmlhYmxlc1ZlY3Rvci5zaXplKCldOworICAgICAgICB2YXJpYWJsZXNWZWN0b3IuY29weUludG8oZGF0YS52YXJpYWJsZXMpOworICAgICAgICB2YXJpYWJsZXNWZWN0b3IgPSBudWxsOworCisgICAgICAgIC8vIERvIG1vcmUgc3ludGF4IGNoZWNraW5nIGFuZCBpbmRleCB0aGUgcnVsZXMKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGlmIChjb21wb3VuZEZpbHRlciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgaWYgKChkaXJlY3Rpb24gPT0gVHJhbnNsaXRlcmF0b3IuRk9SV0FSRCAmJgorICAgICAgICAgICAgICAgICAgICAgY29tcG91bmRGaWx0ZXJPZmZzZXQgIT0gMCkgfHwKKyAgICAgICAgICAgICAgICAgICAgKGRpcmVjdGlvbiA9PSBUcmFuc2xpdGVyYXRvci5SRVZFUlNFICYmCisgICAgICAgICAgICAgICAgICAgICBjb21wb3VuZEZpbHRlck9mZnNldCAhPSBpZEJsb2NrQ291bnQpKSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkNvbXBvdW5kIGZpbHRlcnMgbWlzcGxhY2VkIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBkYXRhLnJ1bGVTZXQuZnJlZXplKCk7CisKKyAgICAgICAgICAgIGlmIChydWxlQ291bnQgPT0gMCkgeworICAgICAgICAgICAgICAgIGRhdGEgPSBudWxsOworICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgaWYgKGVycm9ycyA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgZXJyb3JzID0gbmV3IFN0cmluZ0J1ZmZlcihlLmdldE1lc3NhZ2UoKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoIlxuIikuYXBwZW5kKGUuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChlcnJvcnMgIT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbihlcnJvcnMudG9TdHJpbmcoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBNQUlOIFBBUlNFUi4gIFBhcnNlIHRoZSBuZXh0IHJ1bGUgaW4gdGhlIGdpdmVuIHJ1bGUgc3RyaW5nLCBzdGFydGluZworICAgICAqIGF0IHBvcy4gIFJldHVybiB0aGUgaW5kZXggYWZ0ZXIgdGhlIGxhc3QgY2hhcmFjdGVyIHBhcnNlZC4gIERvIG5vdAorICAgICAqIHBhcnNlIGNoYXJhY3RlcnMgYXQgb3IgYWZ0ZXIgbGltaXQuCisgICAgICoKKyAgICAgKiBJbXBvcnRhbnQ6ICBUaGUgY2hhcmFjdGVyIGF0IHBvcyBtdXN0IGJlIGEgbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVyCisgICAgICogdGhhdCBpcyBub3QgdGhlIGNvbW1lbnQgY2hhcmFjdGVyLgorICAgICAqCisgICAgICogVGhpcyBtZXRob2QgaGFuZGxlcyBxdW90aW5nLCBlc2NhcGluZywgYW5kIHdoaXRlc3BhY2UgcmVtb3ZhbC4gIEl0CisgICAgICogcGFyc2VzIHRoZSBlbmQtb2YtcnVsZSBjaGFyYWN0ZXIuICBJdCByZWNvZ25pemVzIGNvbnRleHQgYW5kIGN1cnNvcgorICAgICAqIGluZGljYXRvcnMuICBPbmNlIGl0IGRvZXMgYSBsZXhpY2FsIGJyZWFrZG93biBvZiB0aGUgcnVsZSBhdCBwb3MsIGl0CisgICAgICogY3JlYXRlcyBhIHJ1bGUgb2JqZWN0IGFuZCBhZGRzIGl0IHRvIG91ciBydWxlIGxpc3QuCisgICAgICoKKyAgICAgKiBUaGlzIG1ldGhvZCBpcyB0aWdodGx5IGNvdXBsZWQgdG8gdGhlIGlubmVyIGNsYXNzIFJ1bGVIYWxmLgorICAgICAqLworICAgIHByaXZhdGUgaW50IHBhcnNlUnVsZShTdHJpbmcgcnVsZSwgaW50IHBvcywgaW50IGxpbWl0KSB7CisgICAgICAgIC8vIExvY2F0ZSB0aGUgbGVmdCBzaWRlLCBvcGVyYXRvciwgYW5kIHJpZ2h0IHNpZGUKKyAgICAgICAgaW50IHN0YXJ0ID0gcG9zOworICAgICAgICBjaGFyIG9wZXJhdG9yID0gMDsKKworICAgICAgICAvLyBTZXQgdXAgc2VnbWVudHMgZGF0YQorICAgICAgICBzZWdtZW50U3RhbmRpbnMgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIHNlZ21lbnRPYmplY3RzID0gbmV3IFZlY3RvcigpOworCisgICAgICAgIFJ1bGVIYWxmIGxlZnQgID0gbmV3IFJ1bGVIYWxmKCk7CisgICAgICAgIFJ1bGVIYWxmIHJpZ2h0ID0gbmV3IFJ1bGVIYWxmKCk7CisKKyAgICAgICAgdW5kZWZpbmVkVmFyaWFibGVOYW1lID0gbnVsbDsKKyAgICAgICAgcG9zID0gbGVmdC5wYXJzZShydWxlLCBwb3MsIGxpbWl0LCB0aGlzKTsKKworICAgICAgICBpZiAocG9zID09IGxpbWl0IHx8CisgICAgICAgICAgICBPUEVSQVRPUlMuaW5kZXhPZihvcGVyYXRvciA9IHJ1bGUuY2hhckF0KC0tcG9zKSkgPCAwKSB7CisgICAgICAgICAgICBzeW50YXhFcnJvcigiTm8gb3BlcmF0b3IgcG9zPSIgKyBwb3MsIHJ1bGUsIHN0YXJ0KTsKKyAgICAgICAgfQorICAgICAgICArK3BvczsKKworICAgICAgICAvLyBGb3VuZCBhbiBvcGVyYXRvciBjaGFyLiAgQ2hlY2sgZm9yIGZvcndhcmQtcmV2ZXJzZSBvcGVyYXRvci4KKyAgICAgICAgaWYgKG9wZXJhdG9yID09IFJFVkVSU0VfUlVMRV9PUCAmJgorICAgICAgICAgICAgKHBvcyA8IGxpbWl0ICYmIHJ1bGUuY2hhckF0KHBvcykgPT0gRk9SV0FSRF9SVUxFX09QKSkgeworICAgICAgICAgICAgKytwb3M7CisgICAgICAgICAgICBvcGVyYXRvciA9IEZXRFJFVl9SVUxFX09QOworICAgICAgICB9CisKKyAgICAgICAgcG9zID0gcmlnaHQucGFyc2UocnVsZSwgcG9zLCBsaW1pdCwgdGhpcyk7CisKKyAgICAgICAgaWYgKHBvcyA8IGxpbWl0KSB7CisgICAgICAgICAgICBpZiAocnVsZS5jaGFyQXQoLS1wb3MpID09IEVORF9PRl9SVUxFKSB7CisgICAgICAgICAgICAgICAgKytwb3M7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIFJ1bGVIYWxmIHBhcnNlciBtdXN0IGhhdmUgdGVybWluYXRlZCBhdCBhbiBvcGVyYXRvcgorICAgICAgICAgICAgICAgIHN5bnRheEVycm9yKCJVbnF1b3RlZCBvcGVyYXRvciIsIHJ1bGUsIHN0YXJ0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChvcGVyYXRvciA9PSBWQVJJQUJMRV9ERUZfT1ApIHsKKyAgICAgICAgICAgIC8vIExIUyBpcyB0aGUgbmFtZS4gIFJIUyBpcyBhIHNpbmdsZSBjaGFyYWN0ZXIsIGVpdGhlciBhIGxpdGVyYWwKKyAgICAgICAgICAgIC8vIG9yIGEgc2V0IChhbHJlYWR5IHBhcnNlZCkuICBJZiBSSFMgaXMgbG9uZ2VyIHRoYW4gb25lCisgICAgICAgICAgICAvLyBjaGFyYWN0ZXIsIGl0IGlzIGVpdGhlciBhIG11bHRpLWNoYXJhY3RlciBzdHJpbmcsIG9yIG11bHRpcGxlCisgICAgICAgICAgICAvLyBzZXRzLCBvciBhIG1peHR1cmUgb2YgY2hhcnMgYW5kIHNldHMgLS0gc3ludGF4IGVycm9yLgorCisgICAgICAgICAgICAvLyBXZSBleHBlY3QgdG8gc2VlIGEgc2luZ2xlIHVuZGVmaW5lZCB2YXJpYWJsZSAodGhlIG9uZSBiZWluZworICAgICAgICAgICAgLy8gZGVmaW5lZCkuCisgICAgICAgICAgICBpZiAodW5kZWZpbmVkVmFyaWFibGVOYW1lID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBzeW50YXhFcnJvcigiTWlzc2luZyAnJCcgb3IgZHVwbGljYXRlIGRlZmluaXRpb24iLCBydWxlLCBzdGFydCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobGVmdC50ZXh0Lmxlbmd0aCgpICE9IDEgfHwgbGVmdC50ZXh0LmNoYXJBdCgwKSAhPSB2YXJpYWJsZUxpbWl0KSB7CisgICAgICAgICAgICAgICAgc3ludGF4RXJyb3IoIk1hbGZvcm1lZCBMSFMiLCBydWxlLCBzdGFydCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobGVmdC5hbmNob3JTdGFydCB8fCBsZWZ0LmFuY2hvckVuZCB8fAorICAgICAgICAgICAgICAgIHJpZ2h0LmFuY2hvclN0YXJ0IHx8IHJpZ2h0LmFuY2hvckVuZCkgeworICAgICAgICAgICAgICAgIHN5bnRheEVycm9yKCJNYWxmb3JtZWQgdmFyaWFibGUgZGVmIiwgcnVsZSwgc3RhcnQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gV2UgYWxsb3cgYW55dGhpbmcgb24gdGhlIHJpZ2h0LCBpbmNsdWRpbmcgYW4gZW1wdHkgc3RyaW5nLgorICAgICAgICAgICAgaW50IG4gPSByaWdodC50ZXh0Lmxlbmd0aCgpOworICAgICAgICAgICAgY2hhcltdIHZhbHVlID0gbmV3IGNoYXJbbl07CisgICAgICAgICAgICByaWdodC50ZXh0LmdldENoYXJzKDAsIG4sIHZhbHVlLCAwKTsKKyAgICAgICAgICAgIGRhdGEudmFyaWFibGVOYW1lcy5wdXQodW5kZWZpbmVkVmFyaWFibGVOYW1lLCB2YWx1ZSk7CisKKyAgICAgICAgICAgICsrdmFyaWFibGVMaW1pdDsKKyAgICAgICAgICAgIHJldHVybiBwb3M7CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiB0aGlzIGlzIG5vdCBhIHZhcmlhYmxlIGRlZmluaXRpb24gcnVsZSwgd2Ugc2hvdWxkbid0IGhhdmUKKyAgICAgICAgLy8gYW55IHVuZGVmaW5lZCB2YXJpYWJsZSBuYW1lcy4KKyAgICAgICAgaWYgKHVuZGVmaW5lZFZhcmlhYmxlTmFtZSAhPSBudWxsKSB7CisgICAgICAgICAgICBzeW50YXhFcnJvcigiVW5kZWZpbmVkIHZhcmlhYmxlICQiICsgdW5kZWZpbmVkVmFyaWFibGVOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgcnVsZSwgc3RhcnQpOworICAgICAgICB9CisKKyAgICAgICAgLy8gVmVyaWZ5IHNlZ21lbnRzCisgICAgICAgIGlmIChzZWdtZW50U3RhbmRpbnMubGVuZ3RoKCkgPiBzZWdtZW50T2JqZWN0cy5zaXplKCkpIHsKKyAgICAgICAgICAgIHN5bnRheEVycm9yKCJVbmRlZmluZWQgc2VnbWVudCByZWZlcmVuY2UiLCBydWxlLCBzdGFydCk7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPHNlZ21lbnRTdGFuZGlucy5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAoc2VnbWVudFN0YW5kaW5zLmNoYXJBdChpKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgc3ludGF4RXJyb3IoIkludGVybmFsIGVycm9yIiwgcnVsZSwgc3RhcnQpOyAvLyB3aWxsIG5ldmVyIGhhcHBlbgorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxzZWdtZW50T2JqZWN0cy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKHNlZ21lbnRPYmplY3RzLmVsZW1lbnRBdChpKSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgc3ludGF4RXJyb3IoIkludGVybmFsIGVycm9yIiwgcnVsZSwgc3RhcnQpOyAvLyB3aWxsIG5ldmVyIGhhcHBlbgorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgdGhlIGRpcmVjdGlvbiB3ZSB3YW50IGRvZXNuJ3QgbWF0Y2ggdGhlIHJ1bGUKKyAgICAgICAgLy8gZGlyZWN0aW9uLCBkbyBub3RoaW5nLgorICAgICAgICBpZiAob3BlcmF0b3IgIT0gRldEUkVWX1JVTEVfT1AgJiYKKyAgICAgICAgICAgICgoZGlyZWN0aW9uID09IFRyYW5zbGl0ZXJhdG9yLkZPUldBUkQpICE9IChvcGVyYXRvciA9PSBGT1JXQVJEX1JVTEVfT1ApKSkgeworICAgICAgICAgICAgcmV0dXJuIHBvczsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRyYW5zZm9ybSB0aGUgcnVsZSBpbnRvIGEgZm9yd2FyZCBydWxlIGJ5IHN3YXBwaW5nIHRoZQorICAgICAgICAvLyBzaWRlcyBpZiBuZWNlc3NhcnkuCisgICAgICAgIGlmIChkaXJlY3Rpb24gPT0gVHJhbnNsaXRlcmF0b3IuUkVWRVJTRSkgeworICAgICAgICAgICAgUnVsZUhhbGYgdGVtcCA9IGxlZnQ7CisgICAgICAgICAgICBsZWZ0ID0gcmlnaHQ7CisgICAgICAgICAgICByaWdodCA9IHRlbXA7CisgICAgICAgIH0KKworICAgICAgICAvLyBSZW1vdmUgbm9uLWFwcGxpY2FibGUgZWxlbWVudHMgaW4gZm9yd2FyZC1yZXZlcnNlCisgICAgICAgIC8vIHJ1bGVzLiAgQmlkaXJlY3Rpb25hbCBydWxlcyBpZ25vcmUgZWxlbWVudHMgdGhhdCBkbyBub3QKKyAgICAgICAgLy8gYXBwbHkuCisgICAgICAgIGlmIChvcGVyYXRvciA9PSBGV0RSRVZfUlVMRV9PUCkgeworICAgICAgICAgICAgcmlnaHQucmVtb3ZlQ29udGV4dCgpOworICAgICAgICAgICAgbGVmdC5jdXJzb3IgPSAtMTsKKyAgICAgICAgICAgIGxlZnQuY3Vyc29yT2Zmc2V0ID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE5vcm1hbGl6ZSBjb250ZXh0CisgICAgICAgIGlmIChsZWZ0LmFudGUgPCAwKSB7CisgICAgICAgICAgICBsZWZ0LmFudGUgPSAwOworICAgICAgICB9CisgICAgICAgIGlmIChsZWZ0LnBvc3QgPCAwKSB7CisgICAgICAgICAgICBsZWZ0LnBvc3QgPSBsZWZ0LnRleHQubGVuZ3RoKCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBDb250ZXh0IGlzIG9ubHkgYWxsb3dlZCBvbiB0aGUgaW5wdXQgc2lkZS4gIEN1cnNvcnMgYXJlIG9ubHkKKyAgICAgICAgLy8gYWxsb3dlZCBvbiB0aGUgb3V0cHV0IHNpZGUuICBTZWdtZW50IGRlbGltaXRlcnMgY2FuIG9ubHkgYXBwZWFyCisgICAgICAgIC8vIG9uIHRoZSBsZWZ0LCBhbmQgcmVmZXJlbmNlcyBvbiB0aGUgcmlnaHQuICBDdXJzb3Igb2Zmc2V0CisgICAgICAgIC8vIGNhbm5vdCBhcHBlYXIgd2l0aG91dCBhbiBleHBsaWNpdCBjdXJzb3IuICBDdXJzb3Igb2Zmc2V0CisgICAgICAgIC8vIGNhbm5vdCBwbGFjZSB0aGUgY3Vyc29yIG91dHNpZGUgdGhlIGxpbWl0cyBvZiB0aGUgY29udGV4dC4KKyAgICAgICAgLy8gQW5jaG9ycyBhcmUgb25seSBhbGxvd2VkIG9uIHRoZSBpbnB1dCBzaWRlLgorICAgICAgICBpZiAocmlnaHQuYW50ZSA+PSAwIHx8IHJpZ2h0LnBvc3QgPj0gMCB8fCBsZWZ0LmN1cnNvciA+PSAwIHx8CisgICAgICAgICAgICAocmlnaHQuY3Vyc29yT2Zmc2V0ICE9IDAgJiYgcmlnaHQuY3Vyc29yIDwgMCkgfHwKKyAgICAgICAgICAgIC8vIC0gVGhlIGZvbGxvd2luZyB0d28gY2hlY2tzIHdlcmUgdXNlZCB0byBlbnN1cmUgdGhhdCB0aGUKKyAgICAgICAgICAgIC8vIC0gdGhlIGN1cnNvciBvZmZzZXQgc3RheWVkIHdpdGhpbiB0aGUgYW50ZS0gb3IgcG9zdGNvbnRleHQuCisgICAgICAgICAgICAvLyAtIEhvd2V2ZXIsIHdpdGggdGhlIGFkZGl0aW9uIG9mIHF1YW50aWZpZXJzLCB3ZSBoYXZlIHRvCisgICAgICAgICAgICAvLyAtIGFsbG93IGFyYml0cmFyeSBjdXJzb3Igb2Zmc2V0cyBhbmQgZG8gcnVudGltZSBjaGVja2luZy4KKyAgICAgICAgICAgIC8vKHJpZ2h0LmN1cnNvck9mZnNldCA+IChsZWZ0LnRleHQubGVuZ3RoKCkgLSBsZWZ0LnBvc3QpKSB8fAorICAgICAgICAgICAgLy8oLXJpZ2h0LmN1cnNvck9mZnNldCA+IGxlZnQuYW50ZSkgfHwKKyAgICAgICAgICAgIHJpZ2h0LmFuY2hvclN0YXJ0IHx8IHJpZ2h0LmFuY2hvckVuZCB8fAorICAgICAgICAgICAgIWxlZnQuaXNWYWxpZElucHV0KHRoaXMpIHx8ICFyaWdodC5pc1ZhbGlkT3V0cHV0KHRoaXMpIHx8CisgICAgICAgICAgICBsZWZ0LmFudGUgPiBsZWZ0LnBvc3QpIHsKKyAgICAgICAgICAgIHN5bnRheEVycm9yKCJNYWxmb3JtZWQgcnVsZSIsIHJ1bGUsIHN0YXJ0KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZsYXR0ZW4gc2VnbWVudCBvYmplY3RzIHZlY3RvciB0byBhbiBhcnJheQorICAgICAgICBVbmljb2RlTWF0Y2hlcltdIHNlZ21lbnRzQXJyYXkgPSBudWxsOworICAgICAgICBpZiAoc2VnbWVudE9iamVjdHMuc2l6ZSgpID4gMCkgeworICAgICAgICAgICAgc2VnbWVudHNBcnJheSA9IG5ldyBVbmljb2RlTWF0Y2hlcltzZWdtZW50T2JqZWN0cy5zaXplKCldOworICAgICAgICAgICAgc2VnbWVudE9iamVjdHMudG9BcnJheShzZWdtZW50c0FycmF5KTsKKyAgICAgICAgfQorCisgICAgICAgIGRhdGEucnVsZVNldC5hZGRSdWxlKG5ldyBUcmFuc2xpdGVyYXRpb25SdWxlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQudGV4dCwgbGVmdC5hbnRlLCBsZWZ0LnBvc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQudGV4dCwgcmlnaHQuY3Vyc29yLCByaWdodC5jdXJzb3JPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VnbWVudHNBcnJheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0LmFuY2hvclN0YXJ0LCBsZWZ0LmFuY2hvckVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhKSk7CisKKyAgICAgICAgcmV0dXJuIHBvczsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIHZhcmlhYmxlIHJhbmdlIHRvIFtzdGFydCwgZW5kXSAoaW5jbHVzaXZlKS4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgc2V0VmFyaWFibGVSYW5nZShpbnQgc3RhcnQsIGludCBlbmQpIHsKKyAgICAgICAgaWYgKHN0YXJ0ID4gZW5kIHx8IHN0YXJ0IDwgMCB8fCBlbmQgPiAweEZGRkYpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgdmFyaWFibGUgcmFuZ2UgIiArIHN0YXJ0ICsgIiwgIiArIGVuZCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGRhdGEudmFyaWFibGVzQmFzZSA9IHZhcmlhYmxlTmV4dCA9IChjaGFyKSBzdGFydDsgLy8gZmlyc3QgcHJpdmF0ZSB1c2UKKyAgICAgICAgdmFyaWFibGVMaW1pdCA9IChjaGFyKSAoZW5kICsgMSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQXNzZXJ0IHRoYXQgdGhlIGdpdmVuIGNoYXJhY3RlciBpcyBOT1Qgd2l0aGluIHRoZSB2YXJpYWJsZSByYW5nZS4KKyAgICAgKiBJZiBpdCBpcywgc2lnbmFsIGFuIGVycm9yLiAgVGhpcyBpcyBuZWNjZXNhcnkgdG8gZW5zdXJlIHRoYXQgdGhlCisgICAgICogdmFyaWFibGUgcmFuZ2UgZG9lcyBub3Qgb3ZlcmxhcCBjaGFyYWN0ZXJzIHVzZWQgaW4gYSBydWxlLgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBjaGVja1ZhcmlhYmxlUmFuZ2UoaW50IGNoLCBTdHJpbmcgcnVsZSwgaW50IHN0YXJ0KSB7CisgICAgICAgIGlmIChjaCA+PSBkYXRhLnZhcmlhYmxlc0Jhc2UgJiYgY2ggPCB2YXJpYWJsZUxpbWl0KSB7CisgICAgICAgICAgICBzeW50YXhFcnJvcigiVmFyaWFibGUgcmFuZ2UgY2hhcmFjdGVyIGluIHJ1bGUiLCBydWxlLCBzdGFydCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIG1heGltdW0gYmFja3VwIHRvICdiYWNrdXAnLCBpbiByZXNwb25zZSB0byBhIHByYWdtYQorICAgICAqIHN0YXRlbWVudC4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgcHJhZ21hTWF4aW11bUJhY2t1cChpbnQgYmFja3VwKSB7CisgICAgICAgIC8vVE9ETyBGaW5pc2gKKyAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigidXNlIG1heGltdW0gYmFja3VwIHByYWdtYSBub3QgaW1wbGVtZW50ZWQgeWV0Iik7CisgICAgfQorCisgICAgLyoqCisgICAgICogQmVnaW4gbm9ybWFsaXppbmcgYWxsIHJ1bGVzIHVzaW5nIHRoZSBnaXZlbiBtb2RlLCBpbiByZXNwb25zZQorICAgICAqIHRvIGEgcHJhZ21hIHN0YXRlbWVudC4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgcHJhZ21hTm9ybWFsaXplUnVsZXMoTm9ybWFsaXplci5Nb2RlIG1vZGUpIHsKKyAgICAgICAgLy9UT0RPIEZpbmlzaAorICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJ1c2Ugbm9ybWFsaXplIHJ1bGVzIHByYWdtYSBub3QgaW1wbGVtZW50ZWQgeWV0Iik7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIHJ1bGUgbG9va3MgbGlrZSBhIHByYWdtYS4KKyAgICAgKiBAcGFyYW0gcG9zIG9mZnNldCB0byB0aGUgZmlyc3Qgbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVyCisgICAgICogb2YgdGhlIHJ1bGUuCisgICAgICogQHBhcmFtIGxpbWl0IHBvaW50ZXIgcGFzdCB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgdGhlIHJ1bGUuCisgICAgICovCisgICAgc3RhdGljIGJvb2xlYW4gcmVzZW1ibGVzUHJhZ21hKFN0cmluZyBydWxlLCBpbnQgcG9zLCBpbnQgbGltaXQpIHsKKyAgICAgICAgLy8gTXVzdCBzdGFydCB3aXRoIC91c2Vccy9pCisgICAgICAgIHJldHVybiBVdGlsaXR5LnBhcnNlUGF0dGVybihydWxlLCBwb3MsIGxpbWl0LCAidXNlICIsIG51bGwpID49IDA7CisgICAgfQorCisgICAgLyoqCisgICAgICogUGFyc2UgYSBwcmFnbWEuICBUaGlzIG1ldGhvZCBhc3N1bWVzIHJlc2VtYmxlc1ByYWdtYSgpIGhhcworICAgICAqIGFscmVhZHkgcmV0dXJuZWQgdHJ1ZS4KKyAgICAgKiBAcGFyYW0gcG9zIG9mZnNldCB0byB0aGUgZmlyc3Qgbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVyCisgICAgICogb2YgdGhlIHJ1bGUuCisgICAgICogQHBhcmFtIGxpbWl0IHBvaW50ZXIgcGFzdCB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgdGhlIHJ1bGUuCisgICAgICogQHJldHVybiB0aGUgcG9zaXRpb24gaW5kZXggYWZ0ZXIgdGhlIGZpbmFsICc7JyBvZiB0aGUgcHJhZ21hLAorICAgICAqIG9yIC0xIG9uIGZhaWx1cmUuCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgcGFyc2VQcmFnbWEoU3RyaW5nIHJ1bGUsIGludCBwb3MsIGludCBsaW1pdCkgeworICAgICAgICBpbnRbXSBhcnJheSA9IG5ldyBpbnRbMl07CisKKyAgICAgICAgLy8gcmVzZW1ibGVzUHJhZ21hKCkgaGFzIGFscmVhZHkgcmV0dXJuZWQgdHJ1ZSwgc28gd2UKKyAgICAgICAgLy8ga25vdyB0aGF0IHBvcyBwb2ludHMgdG8gL3VzZVxzL2k7IHdlIGNhbiBza2lwIDQgY2hhcmFjdGVycworICAgICAgICAvLyBpbW1lZGlhdGVseQorICAgICAgICBwb3MgKz0gNDsKKyAgICAgICAgCisgICAgICAgIC8vIEhlcmUgYXJlIHRoZSBwcmFnbWFzIHdlIHJlY29nbml6ZToKKyAgICAgICAgLy8gdXNlIHZhcmlhYmxlIHJhbmdlIDB4RTAwMCAweEVGRkY7CisgICAgICAgIC8vIHVzZSBtYXhpbXVtIGJhY2t1cCAxNjsKKyAgICAgICAgLy8gdXNlIG5mZCBydWxlczsKKyAgICAgICAgaW50IHAgPSBVdGlsaXR5LnBhcnNlUGF0dGVybihydWxlLCBwb3MsIGxpbWl0LCAifnZhcmlhYmxlIHJhbmdlICMgI347IiwgYXJyYXkpOworICAgICAgICBpZiAocCA+PSAwKSB7CisgICAgICAgICAgICBzZXRWYXJpYWJsZVJhbmdlKGFycmF5WzBdLCBhcnJheVsxXSk7CisgICAgICAgICAgICByZXR1cm4gcDsKKyAgICAgICAgfQorCisgICAgICAgIHAgPSBVdGlsaXR5LnBhcnNlUGF0dGVybihydWxlLCBwb3MsIGxpbWl0LCAifm1heGltdW0gYmFja3VwICN+OyIsIGFycmF5KTsKKyAgICAgICAgaWYgKHAgPj0gMCkgeworICAgICAgICAgICAgcHJhZ21hTWF4aW11bUJhY2t1cChhcnJheVswXSk7CisgICAgICAgICAgICByZXR1cm4gcDsKKyAgICAgICAgfQorCisgICAgICAgIHAgPSBVdGlsaXR5LnBhcnNlUGF0dGVybihydWxlLCBwb3MsIGxpbWl0LCAifm5mZCBydWxlc347IiwgbnVsbCk7CisgICAgICAgIGlmIChwID49IDApIHsKKyAgICAgICAgICAgIHByYWdtYU5vcm1hbGl6ZVJ1bGVzKE5vcm1hbGl6ZXIuTkZEKTsKKyAgICAgICAgICAgIHJldHVybiBwOworICAgICAgICB9CisKKyAgICAgICAgcCA9IFV0aWxpdHkucGFyc2VQYXR0ZXJuKHJ1bGUsIHBvcywgbGltaXQsICJ+bmZjIHJ1bGVzfjsiLCBudWxsKTsKKyAgICAgICAgaWYgKHAgPj0gMCkgeworICAgICAgICAgICAgcHJhZ21hTm9ybWFsaXplUnVsZXMoTm9ybWFsaXplci5ORkMpOworICAgICAgICAgICAgcmV0dXJuIHA7CisgICAgICAgIH0KKworICAgICAgICAvLyBTeW50YXggZXJyb3I6IHVuYWJsZSB0byBwYXJzZSBwcmFnbWEKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRocm93IGFuIGV4Y2VwdGlvbiBpbmRpY2F0aW5nIGEgc3ludGF4IGVycm9yLiAgU2VhcmNoIHRoZSBydWxlIHN0cmluZworICAgICAqIGZvciB0aGUgcHJvYmFibGUgZW5kIG9mIHRoZSBydWxlLiAgT2YgY291cnNlLCBpZiB0aGUgZXJyb3IgaXMgdGhhdAorICAgICAqIHRoZSBlbmQgb2YgcnVsZSBtYXJrZXIgaXMgbWlzc2luZywgdGhlbiB0aGUgcnVsZSBlbmQgd2lsbCBub3QgYmUgZm91bmQuCisgICAgICogSW4gYW55IGNhc2UgdGhlIHJ1bGUgc3RhcnQgd2lsbCBiZSBjb3JyZWN0bHkgcmVwb3J0ZWQuCisgICAgICogQHBhcmFtIG1zZyBlcnJvciBkZXNjcmlwdGlvbgorICAgICAqIEBwYXJhbSBydWxlIHBhdHRlcm4gc3RyaW5nCisgICAgICogQHBhcmFtIHN0YXJ0IHBvc2l0aW9uIG9mIGZpcnN0IGNoYXJhY3RlciBvZiBjdXJyZW50IHJ1bGUKKyAgICAgKi8KKyAgICBzdGF0aWMgZmluYWwgdm9pZCBzeW50YXhFcnJvcihTdHJpbmcgbXNnLCBTdHJpbmcgcnVsZSwgaW50IHN0YXJ0KSB7CisgICAgICAgIGludCBlbmQgPSBydWxlRW5kKHJ1bGUsIHN0YXJ0LCBydWxlLmxlbmd0aCgpKTsKKyAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbihtc2cgKyAiIGluIFwiIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXRpbGl0eS5lc2NhcGUocnVsZS5zdWJzdHJpbmcoc3RhcnQsIGVuZCkpICsgJyInKTsKKyAgICB9CisKKyAgICBzdGF0aWMgZmluYWwgaW50IHJ1bGVFbmQoU3RyaW5nIHJ1bGUsIGludCBzdGFydCwgaW50IGxpbWl0KSB7CisgICAgICAgIGludCBlbmQgPSBVdGlsaXR5LnF1b3RlZEluZGV4T2YocnVsZSwgc3RhcnQsIGxpbWl0LCAiOyIpOworICAgICAgICBpZiAoZW5kIDwgMCkgeworICAgICAgICAgICAgZW5kID0gbGltaXQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGVuZDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQYXJzZSBhIFVuaWNvZGVTZXQgb3V0LCBzdG9yZSBpdCwgYW5kIHJldHVybiB0aGUgc3RhbmQtaW4gY2hhcmFjdGVyCisgICAgICogdXNlZCB0byByZXByZXNlbnQgaXQuCisgICAgICovCisgICAgcHJpdmF0ZSBmaW5hbCBjaGFyIHBhcnNlU2V0KFN0cmluZyBydWxlLCBQYXJzZVBvc2l0aW9uIHBvcykgeworICAgICAgICBVbmljb2RlU2V0IHNldCA9IG5ldyBVbmljb2RlU2V0KHJ1bGUsIHBvcywgcGFyc2VEYXRhKTsKKyAgICAgICAgaWYgKHZhcmlhYmxlTmV4dCA+PSB2YXJpYWJsZUxpbWl0KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigiUHJpdmF0ZSB1c2UgdmFyaWFibGVzIGV4aGF1c3RlZCIpOworICAgICAgICB9CisgICAgICAgIHNldC5jb21wYWN0KCk7CisgICAgICAgIHJldHVybiBnZW5lcmF0ZVN0YW5kSW5Gb3Ioc2V0KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZW5lcmF0ZSBhbmQgcmV0dXJuIGEgc3RhbmQtaW4gZm9yIGEgbmV3IFVuaWNvZGVNYXRjaGVyIG9yIFVuaWNvZGVSZXBsYWNlci4KKyAgICAgKiBTdG9yZSB0aGUgb2JqZWN0LgorICAgICAqLworICAgIGNoYXIgZ2VuZXJhdGVTdGFuZEluRm9yKE9iamVjdCBvYmopIHsKKyAgICAgICAgLy8gYXNzZXJ0KG9iaiAhPSBudWxsKTsKKworICAgICAgICAvLyBMb29rIHVwIHByZXZpb3VzIHN0YW5kLWluLCBpZiBhbnkuICBUaGlzIGlzIGEgc2hvcnQgbGlzdAorICAgICAgICAvLyAodHlwaWNhbCBuIGlzIDAsIDEsIG9yIDIpOyBsaW5lYXIgc2VhcmNoIGlzIG9wdGltYWwuCisgICAgICAgIGZvciAoaW50IGk9MDsgaTx2YXJpYWJsZXNWZWN0b3Iuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmICh2YXJpYWJsZXNWZWN0b3IuZWxlbWVudEF0KGkpID09IG9iaikgeyAvLyBbc2ljXSBwb2ludGVyIGNvbXBhcmlzb24KKyAgICAgICAgICAgICAgICByZXR1cm4gKGNoYXIpIChkYXRhLnZhcmlhYmxlc0Jhc2UgKyBpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICh2YXJpYWJsZU5leHQgPj0gdmFyaWFibGVMaW1pdCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIlZhcmlhYmxlIHJhbmdlIGV4aGF1c3RlZCIpOworICAgICAgICB9CisgICAgICAgIHZhcmlhYmxlc1ZlY3Rvci5hZGRFbGVtZW50KG9iaik7CisgICAgICAgIHJldHVybiB2YXJpYWJsZU5leHQrKzsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIHN0YW5kaW4gZm9yIHNlZ21lbnQgc2VnICgxLWJhc2VkKS4KKyAgICAgKi8KKyAgICBwdWJsaWMgY2hhciBnZXRTZWdtZW50U3RhbmRpbihpbnQgc2VnKSB7CisgICAgICAgIGlmIChzZWdtZW50U3RhbmRpbnMubGVuZ3RoKCkgPCBzZWcpIHsKKyAgICAgICAgICAgIHNlZ21lbnRTdGFuZGlucy5zZXRMZW5ndGgoc2VnKTsKKyAgICAgICAgfQorICAgICAgICBjaGFyIGMgPSBzZWdtZW50U3RhbmRpbnMuY2hhckF0KHNlZy0xKTsKKyAgICAgICAgaWYgKGMgPT0gMCkgeworICAgICAgICAgICAgaWYgKHZhcmlhYmxlTmV4dCA+PSB2YXJpYWJsZUxpbWl0KSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIlZhcmlhYmxlIHJhbmdlIGV4aGF1c3RlZCIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYyA9IHZhcmlhYmxlTmV4dCsrOworICAgICAgICAgICAgLy8gU2V0IGEgcGxhY2Vob2xkZXIgaW4gdGhlIG1hc3RlciB2YXJpYWJsZXMgdmVjdG9yIHRoYXQgd2lsbCBiZQorICAgICAgICAgICAgLy8gZmlsbGVkIGluIGxhdGVyIGJ5IHNldFNlZ21lbnRPYmplY3QoKS4gIFdlIGtub3cgdGhhdCB3ZSB3aWxsIGdldAorICAgICAgICAgICAgLy8gY2FsbGVkIGZpcnN0IGJlY2F1c2Ugc2V0U2VnbWVudE9iamVjdCgpIHdpbGwgY2FsbCB1cy4KKyAgICAgICAgICAgIHZhcmlhYmxlc1ZlY3Rvci5hZGRFbGVtZW50KG51bGwpOworICAgICAgICAgICAgc2VnbWVudFN0YW5kaW5zLnNldENoYXJBdChzZWctMSwgYyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGM7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFNldCB0aGUgb2JqZWN0IGZvciBzZWdtZW50IHNlZyAoMS1iYXNlZCkuCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0U2VnbWVudE9iamVjdChpbnQgc2VnLCBTdHJpbmdNYXRjaGVyIG9iaikgeworICAgICAgICAvLyBTaW5jZSB3ZSBjYWxsIHBhcnNlU2VjdGlvbigpIHJlY3Vyc2l2ZWx5LCBuZXN0ZWQKKyAgICAgICAgLy8gc2VnbWVudHMgd2lsbCByZXN1bHQgaW4gc2VnbWVudCBpKzEgZ2V0dGluZyBwYXJzZWQKKyAgICAgICAgLy8gYW5kIHN0b3JlZCBiZWZvcmUgc2VnbWVudCBpOyBiZSBjYXJlZnVsIHdpdGggdGhlCisgICAgICAgIC8vIHZlY3RvciBoYW5kbGluZyBoZXJlLgorICAgICAgICBpZiAoc2VnbWVudE9iamVjdHMuc2l6ZSgpIDwgc2VnKSB7CisgICAgICAgICAgICBzZWdtZW50T2JqZWN0cy5zZXRTaXplKHNlZyk7CisgICAgICAgIH0KKyAgICAgICAgaW50IGluZGV4ID0gZ2V0U2VnbWVudFN0YW5kaW4oc2VnKSAtIGRhdGEudmFyaWFibGVzQmFzZTsKKyAgICAgICAgaWYgKHNlZ21lbnRPYmplY3RzLmVsZW1lbnRBdChzZWctMSkgIT0gbnVsbCB8fAorICAgICAgICAgICAgdmFyaWFibGVzVmVjdG9yLmVsZW1lbnRBdChpbmRleCkgIT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oKTsgLy8gc2hvdWxkIG5ldmVyIGhhcHBlbgorICAgICAgICB9CisgICAgICAgIHNlZ21lbnRPYmplY3RzLnNldEVsZW1lbnRBdChvYmosIHNlZy0xKTsKKyAgICAgICAgdmFyaWFibGVzVmVjdG9yLnNldEVsZW1lbnRBdChvYmosIGluZGV4KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIHN0YW5kLWluIGZvciB0aGUgZG90IHNldC4gIEl0IGlzIGFsbG9jYXRlZCB0aGUgZmlyc3QKKyAgICAgKiB0aW1lIGFuZCByZXVzZWQgdGhlcmVhZnRlci4KKyAgICAgKi8KKyAgICBjaGFyIGdldERvdFN0YW5kSW4oKSB7CisgICAgICAgIGlmIChkb3RTdGFuZEluID09IC0xKSB7CisgICAgICAgICAgICBkb3RTdGFuZEluID0gZ2VuZXJhdGVTdGFuZEluRm9yKG5ldyBVbmljb2RlU2V0KERPVF9TRVQpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKGNoYXIpIGRvdFN0YW5kSW47CisgICAgfQorCisgICAgLyoqCisgICAgICogQXBwZW5kIHRoZSB2YWx1ZSBvZiB0aGUgZ2l2ZW4gdmFyaWFibGUgbmFtZSB0byB0aGUgZ2l2ZW4KKyAgICAgKiBTdHJpbmdCdWZmZXIuCisgICAgICogQGV4Y2VwdGlvbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIG5hbWUgaXMgdW5rbm93bi4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgYXBwZW5kVmFyaWFibGVEZWYoU3RyaW5nIG5hbWUsIFN0cmluZ0J1ZmZlciBidWYpIHsKKyAgICAgICAgY2hhcltdIGNoID0gKGNoYXJbXSkgZGF0YS52YXJpYWJsZU5hbWVzLmdldChuYW1lKTsKKyAgICAgICAgaWYgKGNoID09IG51bGwpIHsKKyAgICAgICAgICAgIC8vIFdlIGFsbG93IG9uZSB1bmRlZmluZWQgdmFyaWFibGUgc28gdGhhdCB2YXJpYWJsZSBkZWZpbml0aW9uCisgICAgICAgICAgICAvLyBzdGF0ZW1lbnRzIHdvcmsuICBGb3IgdGhlIGZpcnN0IHVuZGVmaW5lZCB2YXJpYWJsZSB3ZSByZXR1cm4KKyAgICAgICAgICAgIC8vIHRoZSBzcGVjaWFsIHBsYWNlaG9sZGVyIHZhcmlhYmxlTGltaXQtMSwgYW5kIHNhdmUgdGhlIHZhcmlhYmxlCisgICAgICAgICAgICAvLyBuYW1lLgorICAgICAgICAgICAgaWYgKHVuZGVmaW5lZFZhcmlhYmxlTmFtZSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgdW5kZWZpbmVkVmFyaWFibGVOYW1lID0gbmFtZTsKKyAgICAgICAgICAgICAgICBpZiAodmFyaWFibGVOZXh0ID49IHZhcmlhYmxlTGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIlByaXZhdGUgdXNlIHZhcmlhYmxlcyBleGhhdXN0ZWQiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgoY2hhcikgLS12YXJpYWJsZUxpbWl0KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiVW5kZWZpbmVkIHZhcmlhYmxlICQiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIG5hbWUpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYnVmLmFwcGVuZChjaCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8vZW9mCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvdGV4dC9UcmFuc2xpdGVyYXRvclJlZ2lzdHJ5LmphdmEgYi9zcmMvY29tL2libS9pY3UvdGV4dC9UcmFuc2xpdGVyYXRvclJlZ2lzdHJ5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMzliODdkZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L1RyYW5zbGl0ZXJhdG9yUmVnaXN0cnkuamF2YQpAQCAtMCwwICsxLDg5MyBAQAorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICBDb3B5cmlnaHQgKGMpIDIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyogICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICBEYXRlICAgICAgICBOYW1lICAgICAgICBEZXNjcmlwdGlvbgorKiAgIDA4LzE5LzIwMDEgIGFsaXUgICAgICAgIENyZWF0aW9uLgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKworcGFja2FnZSBjb20uaWJtLmljdS50ZXh0OworCitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5JQ1VMb2NhbGVEYXRhOworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuTG9jYWxlVXRpbGl0eTsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLmRhdGEuUmVzb3VyY2VSZWFkZXI7CitpbXBvcnQgY29tLmlibS5pY3UubGFuZy5VU2NyaXB0OworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuQ2FzZUluc2Vuc2l0aXZlU3RyaW5nOworCitpbXBvcnQgamF2YS5pby5VbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uOworaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CitpbXBvcnQgamF2YS51dGlsLk1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGU7CitpbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKKworY2xhc3MgVHJhbnNsaXRlcmF0b3JSZWdpc3RyeSB7CisKKyAgICAvLyBjaGFyIGNvbnN0YW50cworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgTE9DQUxFX1NFUCAgPSAnXyc7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciBJRF9TRVAgICAgICA9ICctJzsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjaGFyIFZBUklBTlRfU0VQID0gJy8nOworCisgICAgLy8gU3RyaW5nIGNvbnN0YW50cworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBOT19WQVJJQU5UID0gIiI7IC8vIGVtcHR5IHN0cmluZworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBBTlkgPSAiQW55IjsKKworICAgIC8qKgorICAgICAqIFJlc291cmNlIGJ1bmRsZSBrZXkgZm9yIHRoZSBSdWxlQmFzZWRUcmFuc2xpdGVyYXRvciBydWxlLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBSQl9SVUxFID0gIlJ1bGUiOworCisgICAgLyoqCisgICAgICogUmVzb3VyY2UgYnVuZGxlIGNvbnRhaW5pbmcgbG9jYWxlLXNwZWNpZmljIHRyYW5zbGl0ZXJhdG9yIGRhdGEuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFJCX0xPQ0FMRV9FTEVNRU5UUyA9CisgICAgICAgICJjb20uaWJtLmljdS5pbXBsLmRhdGEuTG9jYWxlRWxlbWVudHMiOworCisgICAgLyoqCisgICAgICogTG9jYWxlIGluZGljYXRpbmcgdGhlIHJvb3QuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9jYWxlIFJPT1RfTE9DQUxFID0gbmV3IExvY2FsZSgiIiwgIiIsICIiKTsKKworICAgIC8qKgorICAgICAqIER5bmFtaWMgcmVnaXN0cnkgbWFwcGluZyBmdWxsIElEcyB0byBFbnRyeSBvYmplY3RzLiAgVGhpcworICAgICAqIGNvbnRhaW5zIGJvdGggcHVibGljIGFuZCBpbnRlcm5hbCBlbnRpdGllcy4gIFRoZSB2aXNpYmlsaXR5IGlzCisgICAgICogY29udHJvbGxlZCBieSB3aGV0aGVyIGFuIGVudHJ5IGlzIGxpc3RlZCBpbiBhdmFpbGFibGVJRHMgYW5kCisgICAgICogc3BlY0RBRyBvciBub3QuCisgICAgICoKKyAgICAgKiBLZXlzIGFyZSBDYXNlSW5zZW5zaXRpdmVTdHJpbmcgb2JqZWN0cy4KKyAgICAgKiBWYWx1ZXMgYXJlIG9iamVjdHMgb2YgY2xhc3MgQ2xhc3MgKHN1YmNsYXNzIG9mIFRyYW5zbGl0ZXJhdG9yKSwKKyAgICAgKiBSdWxlQmFzZWRUcmFuc2xpdGVyYXRvci5EYXRhLCBUcmFuc2xpdGVyYXRvci5GYWN0b3J5LCBvciBvbmUKKyAgICAgKiBvZiB0aGUgZW50cnkgY2xhc3NlcyBkZWZpbmVkIGhlcmUgKEFsaWFzRW50cnkgb3IgUmVzb3VyY2VFbnRyeSkuCisgICAgICovCisgICAgcHJpdmF0ZSBIYXNodGFibGUgcmVnaXN0cnk7CisKKyAgICAvKioKKyAgICAgKiBEQUcgb2YgdmlzaWJsZSBJRHMgYnkgc3BlYy4gIEhhc2h0YWJsZTogc291cmNlID0+IChIYXNodGFibGU6CisgICAgICogdGFyZ2V0ID0+IChVVmVjdG9yOiB2YXJpYW50KSkgVGhlIFVWZWN0b3Igb2YgdmFyaWFudHMgaXMgbmV2ZXIKKyAgICAgKiBlbXB0eS4gIEZvciBhIHNvdXJjZS10YXJnZXQgd2l0aCBubyB2YXJpYW50LCB0aGUgc3BlY2lhbAorICAgICAqIHZhcmlhbnQgTk9fVkFSSUFOVCAodGhlIGVtcHR5IHN0cmluZykgaXMgc3RvcmVkIGluIHNsb3QgemVybyBvZgorICAgICAqIHRoZSBVVmVjdG9yLgorICAgICAqCisgICAgICogS2V5cyBhcmUgQ2FzZUluc2Vuc2l0aXZlU3RyaW5nIG9iamVjdHMuCisgICAgICogVmFsdWVzIGFyZSBIYXNodGFibGUgb2YgKENhc2VJbnNlbnNpdGl2ZVN0cmluZyAtPiBWZWN0b3Igb2YKKyAgICAgKiBDYXNlSW5zZW5zaXRpdmVTdHJpbmcpCisgICAgICovCisgICAgcHJpdmF0ZSBIYXNodGFibGUgc3BlY0RBRzsKKworICAgIC8qKgorICAgICAqIFZlY3RvciBvZiBwdWJsaWMgZnVsbCBJRHMgKENhc2VJbnNlbnNpdGl2ZVN0cmluZyBvYmplY3RzKS4KKyAgICAgKi8KKyAgICBwcml2YXRlIFZlY3RvciBhdmFpbGFibGVJRHM7CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBjbGFzcyBTcGVjCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBBIFNwZWMgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyBlaXRoZXIgYSBzb3VyY2Ugb3IgYSB0YXJnZXQuICBJbiBtb3JlCisgICAgICogZ2VuZXJhbCB0ZXJtcywgaXQgbWF5IGFsc28gc3BlY2lmeSBhIHZhcmlhbnQsIGJ1dCB3ZSBvbmx5IHVzZSB0aGUKKyAgICAgKiBTcGVjIGNsYXNzIGZvciBzb3VyY2VzIGFuZCB0YXJnZXRzLgorICAgICAqCisgICAgICogQSBTcGVjIG1heSBiZSBhIGxvY2FsZSBvciBhIHNjcmlwdC4gIElmIGl0IGlzIGEgbG9jYWxlLCBpdCBoYXMgYQorICAgICAqIGZhbGxiYWNrIGNoYWluIHRoYXQgZ29lcyB4eF9ZWV9aWlogLT4geHhfWVkgLT4geHggLT4gc3Nzcywgd2hlcmUKKyAgICAgKiBzc3NzIGlzIHRoZSBzY3JpcHQgbWFwcGluZyBvZiB4eF9ZWV9aWlouICBUaGUgU3BlYyBBUEkgbWV0aG9kcworICAgICAqIGhhc0ZhbGxiYWNrKCksIG5leHQoKSwgYW5kIHJlc2V0KCkgaXRlcmF0ZSBvdmVyIHRoaXMgZmFsbGJhY2sKKyAgICAgKiBzZXF1ZW5jZS4KKyAgICAgKgorICAgICAqIFRoZSBTcGVjIGNsYXNzIGNhbm9uaWNhbGl6ZXMgaXRzZWxmLCBzbyB0aGUgbG9jYWxlIGlzIHB1dCBpbnRvCisgICAgICogY2Fub25pY2FsIGZvcm0sIG9yIHRoZSBzY3JpcHQgaXMgdHJhbnNmb3JtZWQgZnJvbSBhbiBhYmJyZXZpYXRpb24KKyAgICAgKiB0byBhIGZ1bGwgbmFtZS4KKyAgICAgKi8KKyAgICBzdGF0aWMgY2xhc3MgU3BlYyB7CisKKyAgICAgICAgcHJpdmF0ZSBTdHJpbmcgdG9wOyAgICAgICAgLy8gdG9wIHNwZWMKKyAgICAgICAgcHJpdmF0ZSBTdHJpbmcgc3BlYzsgICAgICAgLy8gY3VycmVudCBzcGVjCisgICAgICAgIHByaXZhdGUgU3RyaW5nIG5leHRTcGVjOyAgIC8vIG5leHQgc3BlYworICAgICAgICBwcml2YXRlIFN0cmluZyBzY3JpcHROYW1lOyAvLyBzY3JpcHQgbmFtZSBlcXVpdmFsZW50IG9mIHRvcCwgaWYgIT0gdG9wCisgICAgICAgIHByaXZhdGUgYm9vbGVhbiBpc1NwZWNMb2NhbGU7IC8vIFRSVUUgaWYgc3BlYyBpcyBhIGxvY2FsZQorICAgICAgICBwcml2YXRlIGJvb2xlYW4gaXNOZXh0TG9jYWxlOyAvLyBUUlVFIGlmIG5leHRTcGVjIGlzIGEgbG9jYWxlCisgICAgICAgIHByaXZhdGUgUmVzb3VyY2VCdW5kbGUgcmVzOworCisgICAgICAgIHB1YmxpYyBTcGVjKFN0cmluZyB0aGVTcGVjKSB7CisgICAgICAgICAgICB0b3AgPSB0aGVTcGVjOworICAgICAgICAgICAgc3BlYyA9IG51bGw7CisgICAgICAgICAgICBzY3JpcHROYW1lID0gbnVsbDsKKworICAgICAgICAgICAgTG9jYWxlIHRvcGxvYyA9IExvY2FsZVV0aWxpdHkuZ2V0TG9jYWxlRnJvbU5hbWUodG9wKTsKKyAgICAgICAgICAgIHJlcyA9IElDVUxvY2FsZURhdGEuZ2V0TG9jYWxlRWxlbWVudHModG9wbG9jKTsKKyAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBnb3QgdGhlIGJ1bmRsZSB3ZSB3YW50ZWQ7IG90aGVyd2lzZSwgZG9uJ3QgdXNlIGl0CisgICAgICAgICAgICBpZiAoTG9jYWxlVXRpbGl0eS5pc0ZhbGxiYWNrT2YocmVzLmdldExvY2FsZSgpLnRvU3RyaW5nKCksIHRvcCkpIHsKKyAgICAgICAgICAgICAgICBpc1NwZWNMb2NhbGUgPSB0cnVlOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpc1NwZWNMb2NhbGUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICByZXMgPSBudWxsOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBDYW5vbmljYWxpemUgc2NyaXB0IG5hbWUgLW9yLSBkbyBsb2NhbGUtPnNjcmlwdCBtYXBwaW5nCisgICAgICAgICAgICBpbnRbXSBzID0gVVNjcmlwdC5nZXRDb2RlKHRvcCk7CisgICAgICAgICAgICBpZiAocyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgc2NyaXB0TmFtZSA9IFVTY3JpcHQuZ2V0TmFtZShzWzBdKTsKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGUgc2NyaXB0IG5hbWUgaXMgdGhlIHNhbWUgYXMgdG9wIHRoZW4gaXQncyByZWR1bmRhbnQKKyAgICAgICAgICAgICAgICBpZiAoc2NyaXB0TmFtZS5lcXVhbHNJZ25vcmVDYXNlKHRvcCkpIHsKKyAgICAgICAgICAgICAgICAgICAgc2NyaXB0TmFtZSA9IG51bGw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBhc3NlcnQoc3BlYyAhPSB0b3ApOworICAgICAgICAgICAgcmVzZXQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBib29sZWFuIGhhc0ZhbGxiYWNrKCkgeworICAgICAgICAgICAgcmV0dXJuIG5leHRTcGVjICE9IG51bGw7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCByZXNldCgpIHsKKyAgICAgICAgICAgIGlmIChzcGVjICE9IHRvcCkgeyAvLyBbc2ljXSBwb2ludGVyIGNvbXBhcmlzb24KKyAgICAgICAgICAgICAgICBzcGVjID0gdG9wOworICAgICAgICAgICAgICAgIGlzU3BlY0xvY2FsZSA9IChyZXMgIT0gbnVsbCk7CisgICAgICAgICAgICAgICAgc2V0dXBOZXh0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwcml2YXRlIHZvaWQgc2V0dXBOZXh0KCkgeworICAgICAgICAgICAgaXNOZXh0TG9jYWxlID0gZmFsc2U7CisgICAgICAgICAgICBpZiAoaXNTcGVjTG9jYWxlKSB7CisgICAgICAgICAgICAgICAgbmV4dFNwZWMgPSBzcGVjOworICAgICAgICAgICAgICAgIGludCBpID0gbmV4dFNwZWMubGFzdEluZGV4T2YoTE9DQUxFX1NFUCk7CisgICAgICAgICAgICAgICAgLy8gSWYgaSA9PSAwIHRoZW4gd2UgaGF2ZSBfRk9PLCBzbyB3ZSBmYWxsIHRocm91Z2gKKyAgICAgICAgICAgICAgICAvLyB0byB0aGUgc2NyaXB0TmFtZS4KKyAgICAgICAgICAgICAgICBpZiAoaSA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgbmV4dFNwZWMgPSBzcGVjLnN1YnN0cmluZygwLCBpKTsKKyAgICAgICAgICAgICAgICAgICAgaXNOZXh0TG9jYWxlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBuZXh0U3BlYyA9IHNjcmlwdE5hbWU7IC8vIHNjcmlwdE5hbWUgbWF5IGJlIG51bGwKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIEZhbGxiYWNrIHRvIHRoZSBzY3JpcHQsIHdoaWNoIG1heSBiZSBudWxsCisJCQkJaWYgKG5leHRTcGVjICE9IHNjcmlwdE5hbWUpIHsKKwkJCQkJbmV4dFNwZWMgPSBzY3JpcHROYW1lOworCQkJCX0gZWxzZSB7CisJCQkJCW5leHRTcGVjID0gbnVsbDsKKwkJCQl9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBQcm90b2NvbDoKKyAgICAgICAgLy8gZm9yKFN0cmluZyYgcyhzcGVjLmdldCgpKTsKKyAgICAgICAgLy8gICAgIHNwZWMuaGFzRmFsbGJhY2soKTsgcyhzcGVjLm5leHQoKSkpIHsgLi4uCisKKyAgICAgICAgcHVibGljIFN0cmluZyBuZXh0KCkgeworICAgICAgICAgICAgc3BlYyA9IG5leHRTcGVjOworICAgICAgICAgICAgaXNTcGVjTG9jYWxlID0gaXNOZXh0TG9jYWxlOworICAgICAgICAgICAgc2V0dXBOZXh0KCk7CisgICAgICAgICAgICByZXR1cm4gc3BlYzsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0KCkgeworICAgICAgICAgICAgcmV0dXJuIHNwZWM7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgYm9vbGVhbiBpc0xvY2FsZSgpIHsKKyAgICAgICAgICAgIHJldHVybiBpc1NwZWNMb2NhbGU7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogUmV0dXJuIHRoZSBSZXNvdXJjZUJ1bmRsZSBmb3IgdGhpcyBzcGVjLCBhdCB0aGUgY3VycmVudAorICAgICAgICAgKiBsZXZlbCBvZiBpdGVyYXRpb24uICBUaGUgbGV2ZWwgb2YgaXRlcmF0aW9uIGdvZXMgZnJvbQorICAgICAgICAgKiBhYV9CQl9DQ0MgdG8gYWFfQkIgdG8gYWEuICBJZiB0aGUgYnVuZGxlIGRvZXMgbm90CisgICAgICAgICAqIGNvcnJlc3BvbmQgdG8gdGhlIGN1cnJlbnQgbGV2ZWwgb2YgaXRlcmF0aW9uLCByZXR1cm4gbnVsbC4KKyAgICAgICAgICogSWYgaXNMb2NhbGUoKSBpcyBmYWxzZSwgYWx3YXlzIHJldHVybiBudWxsLgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIFJlc291cmNlQnVuZGxlIGdldEJ1bmRsZSgpIHsKKyAgICAgICAgICAgIGlmIChyZXMgIT0gbnVsbCAmJgorICAgICAgICAgICAgICAgIHJlcy5nZXRMb2NhbGUoKS50b1N0cmluZygpLmVxdWFscyhzcGVjKSkgeworICAgICAgICAgICAgICAgIHJldHVybiByZXM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0VG9wKCkgeworICAgICAgICAgICAgcmV0dXJuIHRvcDsKKyAgICAgICAgfQorCX0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIEVudHJ5IGNsYXNzZXMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCXN0YXRpYyBjbGFzcyBSZXNvdXJjZUVudHJ5IHsKKyAgICAgICAgcHVibGljIFN0cmluZyByZXNvdXJjZU5hbWU7CisgICAgICAgIHB1YmxpYyBTdHJpbmcgZW5jb2Rpbmc7CisgICAgICAgIHB1YmxpYyBpbnQgZGlyZWN0aW9uOworICAgICAgICBwdWJsaWMgUmVzb3VyY2VFbnRyeShTdHJpbmcgbiwgU3RyaW5nIGVuYywgaW50IGQpIHsKKyAgICAgICAgICAgIHJlc291cmNlTmFtZSA9IG47CisgICAgICAgICAgICBlbmNvZGluZyA9IGVuYzsKKyAgICAgICAgICAgIGRpcmVjdGlvbiA9IGQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBBbiBlbnRyeSByZXByZXNlbnRpbmcgYSBydWxlIGluIGEgbG9jYWxlIHJlc291cmNlIGJ1bmRsZQorICAgIHN0YXRpYyBjbGFzcyBMb2NhbGVFbnRyeSB7CisgICAgICAgIHB1YmxpYyBTdHJpbmcgcnVsZTsKKyAgICAgICAgcHVibGljIGludCBkaXJlY3Rpb247CisgICAgICAgIHB1YmxpYyBMb2NhbGVFbnRyeShTdHJpbmcgciwgaW50IGQpIHsKKyAgICAgICAgICAgIHJ1bGUgPSByOworICAgICAgICAgICAgZGlyZWN0aW9uID0gZDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0YXRpYyBjbGFzcyBBbGlhc0VudHJ5IHsKKyAgICAgICAgcHVibGljIFN0cmluZyBhbGlhczsKKyAgICAgICAgcHVibGljIEFsaWFzRW50cnkoU3RyaW5nIGEpIHsKKyAgICAgICAgICAgIGFsaWFzID0gYTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0YXRpYyBjbGFzcyBDb21wb3VuZFJCVEVudHJ5IHsKKyAgICAgICAgcHJpdmF0ZSBTdHJpbmcgSUQ7CisgICAgICAgIHByaXZhdGUgU3RyaW5nIGlkQmxvY2s7CisgICAgICAgIHByaXZhdGUgaW50IGlkU3BsaXRQb2ludDsKKyAgICAgICAgcHJpdmF0ZSBSdWxlQmFzZWRUcmFuc2xpdGVyYXRvci5EYXRhIGRhdGE7CisgICAgICAgIHByaXZhdGUgVW5pY29kZVNldCBjb21wb3VuZEZpbHRlcjsKKworICAgICAgICBwdWJsaWMgQ29tcG91bmRSQlRFbnRyeShTdHJpbmcgdGhlSUQsIFN0cmluZyB0aGVJREJsb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGhlSURTcGxpdFBvaW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdWxlQmFzZWRUcmFuc2xpdGVyYXRvci5EYXRhIHRoZURhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVTZXQgdGhlQ29tcG91bmRGaWx0ZXIpIHsKKyAgICAgICAgICAgIElEID0gdGhlSUQ7CisgICAgICAgICAgICBpZEJsb2NrID0gdGhlSURCbG9jazsKKyAgICAgICAgICAgIGlkU3BsaXRQb2ludCA9IHRoZUlEU3BsaXRQb2ludDsKKyAgICAgICAgICAgIGRhdGEgPSB0aGVEYXRhOworICAgICAgICAgICAgY29tcG91bmRGaWx0ZXIgPSB0aGVDb21wb3VuZEZpbHRlcjsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBUcmFuc2xpdGVyYXRvciBnZXRJbnN0YW5jZSgpIHsKKyAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQgPSBuZXcgUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3IoIl8iLCBkYXRhLCBudWxsKTsKKyAgICAgICAgICAgIHQgPSBuZXcgQ29tcG91bmRUcmFuc2xpdGVyYXRvcihJRCwgaWRCbG9jaywgaWRTcGxpdFBvaW50LCB0KTsKKyAgICAgICAgICAgIHQuc2V0RmlsdGVyKGNvbXBvdW5kRmlsdGVyKTsKKyAgICAgICAgICAgIHJldHVybiB0OworICAgICAgICB9CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gY2xhc3MgVHJhbnNsaXRlcmF0b3JSZWdpc3RyeTogQmFzaWMgcHVibGljIEFQSQorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgcHVibGljIFRyYW5zbGl0ZXJhdG9yUmVnaXN0cnkoKSB7CisgICAgICAgIHJlZ2lzdHJ5ID0gbmV3IEhhc2h0YWJsZSgpOworICAgICAgICBzcGVjREFHID0gbmV3IEhhc2h0YWJsZSgpOworICAgICAgICBhdmFpbGFibGVJRHMgPSBuZXcgVmVjdG9yKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2l2ZW4gYSBzaW1wbGUgSUQgKGZvcndhcmQgZGlyZWN0aW9uLCBubyBpbmxpbmUgZmlsdGVyLCBub3QKKyAgICAgKiBjb21wb3VuZCkgYXR0ZW1wdCB0byBpbnN0YW50aWF0ZSBpdCBmcm9tIHRoZSByZWdpc3RyeS4gIFJldHVybgorICAgICAqIDAgb24gZmFpbHVyZS4KKyAgICAgKgorICAgICAqIFJldHVybiBhIG5vbi1lbXB0eSBhbGlhc1JldHVybiB2YWx1ZSBpZiB0aGUgSUQgcG9pbnRzIHRvIGFuIGFsaWFzLgorICAgICAqIFdlIGNhbm5vdCBpbnN0YW50aWF0ZSBpdCBvdXJzZWx2ZXMgYmVjYXVzZSB0aGUgYWxpYXMgbWF5IGNvbnRhaW4KKyAgICAgKiBmaWx0ZXJzIG9yIGNvbXBvdW5kcywgd2hpY2ggd2UgZG8gbm90IHVuZGVyc3RhbmQuICBDYWxsZXIgc2hvdWxkCisgICAgICogbWFrZSBhbGlhc1JldHVybiBlbXB0eSBiZWZvcmUgY2FsbGluZy4KKyAgICAgKi8KKyAgICBwdWJsaWMgVHJhbnNsaXRlcmF0b3IgZ2V0KFN0cmluZyBJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ0J1ZmZlciBhbGlhc1JldHVybikgeworICAgICAgICBPYmplY3RbXSBlbnRyeSA9IGZpbmQoSUQpOworICAgICAgICByZXR1cm4gKGVudHJ5ID09IG51bGwpID8gbnVsbAorICAgICAgICAgICAgOiBpbnN0YW50aWF0ZUVudHJ5KElELCBlbnRyeSwgYWxpYXNSZXR1cm4pOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlZ2lzdGVyIGEgY2xhc3MuICBUaGlzIGFkZHMgYW4gZW50cnkgdG8gdGhlCisgICAgICogZHluYW1pYyBzdG9yZSwgb3IgcmVwbGFjZXMgYW4gZXhpc3RpbmcgZW50cnkuICBBbnkgZW50cnkgaW4gdGhlCisgICAgICogdW5kZXJseWluZyBzdGF0aWMgbG9jYWxlIHJlc291cmNlIHN0b3JlIGlzIG1hc2tlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBwdXQoU3RyaW5nIElELAorICAgICAgICAgICAgICAgICAgICBDbGFzcyB0cmFuc2xpdGVyYXRvclN1YmNsYXNzLAorICAgICAgICAgICAgICAgICAgICBib29sZWFuIHZpc2libGUpIHsKKyAgICAgICAgcmVnaXN0ZXJFbnRyeShJRCwgdHJhbnNsaXRlcmF0b3JTdWJjbGFzcywgdmlzaWJsZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVnaXN0ZXIgYW4gSUQgYW5kIGEgZmFjdG9yeSBmdW5jdGlvbiBwb2ludGVyLiAgVGhpcyBhZGRzIGFuCisgICAgICogZW50cnkgdG8gdGhlIGR5bmFtaWMgc3RvcmUsIG9yIHJlcGxhY2VzIGFuIGV4aXN0aW5nIGVudHJ5LiAgQW55CisgICAgICogZW50cnkgaW4gdGhlIHVuZGVybHlpbmcgc3RhdGljIGxvY2FsZSByZXNvdXJjZSBzdG9yZSBpcyBtYXNrZWQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgcHV0KFN0cmluZyBJRCwKKyAgICAgICAgICAgICAgICAgICAgVHJhbnNsaXRlcmF0b3IuRmFjdG9yeSBmYWN0b3J5LAorICAgICAgICAgICAgICAgICAgICBib29sZWFuIHZpc2libGUpIHsKKyAgICAgICAgcmVnaXN0ZXJFbnRyeShJRCwgZmFjdG9yeSwgdmlzaWJsZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVnaXN0ZXIgYW4gSUQgYW5kIGEgcmVzb3VyY2UgbmFtZS4gIFRoaXMgYWRkcyBhbiBlbnRyeSB0byB0aGUKKyAgICAgKiBkeW5hbWljIHN0b3JlLCBvciByZXBsYWNlcyBhbiBleGlzdGluZyBlbnRyeS4gIEFueSBlbnRyeSBpbiB0aGUKKyAgICAgKiB1bmRlcmx5aW5nIHN0YXRpYyBsb2NhbGUgcmVzb3VyY2Ugc3RvcmUgaXMgbWFza2VkLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHB1dChTdHJpbmcgSUQsCisgICAgICAgICAgICAgICAgICAgIFN0cmluZyByZXNvdXJjZU5hbWUsCisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBlbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgaW50IGRpciwKKyAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiB2aXNpYmxlKSB7CisgICAgICAgIHJlZ2lzdGVyRW50cnkoSUQsIG5ldyBSZXNvdXJjZUVudHJ5KHJlc291cmNlTmFtZSwgZW5jb2RpbmcsIGRpciksIHZpc2libGUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlZ2lzdGVyIGFuIElEIGFuZCBhbiBhbGlhcyBJRC4gIFRoaXMgYWRkcyBhbiBlbnRyeSB0byB0aGUKKyAgICAgKiBkeW5hbWljIHN0b3JlLCBvciByZXBsYWNlcyBhbiBleGlzdGluZyBlbnRyeS4gIEFueSBlbnRyeSBpbiB0aGUKKyAgICAgKiB1bmRlcmx5aW5nIHN0YXRpYyBsb2NhbGUgcmVzb3VyY2Ugc3RvcmUgaXMgbWFza2VkLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHB1dChTdHJpbmcgSUQsCisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBhbGlhcywKKyAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiB2aXNpYmxlKSB7CisgICAgICAgIHJlZ2lzdGVyRW50cnkoSUQsIG5ldyBBbGlhc0VudHJ5KGFsaWFzKSwgdmlzaWJsZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVnaXN0ZXIgYW4gSUQgYW5kIGEgVHJhbnNsaXRlcmF0b3Igb2JqZWN0LiAgVGhpcyBhZGRzIGFuIGVudHJ5CisgICAgICogdG8gdGhlIGR5bmFtaWMgc3RvcmUsIG9yIHJlcGxhY2VzIGFuIGV4aXN0aW5nIGVudHJ5LiAgQW55IGVudHJ5CisgICAgICogaW4gdGhlIHVuZGVybHlpbmcgc3RhdGljIGxvY2FsZSByZXNvdXJjZSBzdG9yZSBpcyBtYXNrZWQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgcHV0KFN0cmluZyBJRCwKKyAgICAgICAgICAgICAgICAgICAgVHJhbnNsaXRlcmF0b3IgdHJhbnMsCisgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gdmlzaWJsZSkgeworICAgICAgICByZWdpc3RlckVudHJ5KElELCB0cmFucywgdmlzaWJsZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVW5yZWdpc3RlciBhbiBJRC4gIFRoaXMgcmVtb3ZlcyBhbiBlbnRyeSBmcm9tIHRoZSBkeW5hbWljIHN0b3JlCisgICAgICogaWYgdGhlcmUgaXMgb25lLiAgVGhlIHN0YXRpYyBsb2NhbGUgcmVzb3VyY2Ugc3RvcmUgaXMKKyAgICAgKiB1bmFmZmVjdGVkLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHJlbW92ZShTdHJpbmcgSUQpIHsKKyAgICAgICAgU3RyaW5nW10gc3R2ID0gVHJhbnNsaXRlcmF0b3JJRFBhcnNlci5JRHRvU1RWKElEKTsKKyAgICAgICAgLy8gT25seSBuZWVkIHRvIGRvIHRoaXMgaWYgSUQuaW5kZXhPZignLScpIDwgMAorICAgICAgICBTdHJpbmcgaWQgPSBUcmFuc2xpdGVyYXRvcklEUGFyc2VyLlNUVnRvSUQoc3R2WzBdLCBzdHZbMV0sIHN0dlsyXSk7CisgICAgICAgIHJlZ2lzdHJ5LnJlbW92ZShuZXcgQ2FzZUluc2Vuc2l0aXZlU3RyaW5nKGlkKSk7CisgICAgICAgIHJlbW92ZVNUVihzdHZbMF0sIHN0dlsxXSwgc3R2WzJdKTsKKyAgICAgICAgYXZhaWxhYmxlSURzLnJlbW92ZUVsZW1lbnQobmV3IENhc2VJbnNlbnNpdGl2ZVN0cmluZyhpZCkpOworICAgIH0KKyAgICAKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBjbGFzcyBUcmFuc2xpdGVyYXRvclJlZ2lzdHJ5OiBQdWJsaWMgSUQgYW5kIHNwZWMgbWFuYWdlbWVudAorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogQW4gaW50ZXJuYWwgY2xhc3MgdGhhdCBhZGFwdHMgYW4gZW51bWVyYXRpb24gb3ZlcgorICAgICAqIENhc2VJbnNlbnNpdGl2ZVN0cmluZ3MgdG8gYW4gZW51bWVyYXRpb24gb3ZlciBTdHJpbmdzLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIElERW51bWVyYXRpb24gaW1wbGVtZW50cyBFbnVtZXJhdGlvbiB7CisgICAgICAgIEVudW1lcmF0aW9uIGVudW07CisKKyAgICAgICAgcHVibGljIElERW51bWVyYXRpb24oRW51bWVyYXRpb24gZSkgeworICAgICAgICAgICAgZW51bSA9IGU7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgYm9vbGVhbiBoYXNNb3JlRWxlbWVudHMoKSB7CisgICAgICAgICAgICByZXR1cm4gZW51bSAhPSBudWxsICYmIGVudW0uaGFzTW9yZUVsZW1lbnRzKCk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgT2JqZWN0IG5leHRFbGVtZW50KCkgeworICAgICAgICAgICAgcmV0dXJuICgoQ2FzZUluc2Vuc2l0aXZlU3RyaW5nKSBlbnVtLm5leHRFbGVtZW50KCkpLmdldFN0cmluZygpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhbiBlbnVtZXJhdGlvbiBvdmVyIHRoZSBwcm9ncmFtbWF0aWMgbmFtZXMgb2YgdmlzaWJsZQorICAgICAqIHJlZ2lzdGVyZWQgdHJhbnNsaXRlcmF0b3JzLgorICAgICAqCisgICAgICogQHJldHVybiBBbiA8Y29kZT5FbnVtZXJhdGlvbjwvY29kZT4gb3ZlciA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdHMKKyAgICAgKi8KKyAgICBwdWJsaWMgRW51bWVyYXRpb24gZ2V0QXZhaWxhYmxlSURzKCkgeworICAgICAgICAvLyBTaW5jZSB0aGUgY2FjaGUgY29udGFpbnMgQ2FzZUluc2Vuc2l0aXZlU3RyaW5nIG9iamVjdHMsIGJ1dAorICAgICAgICAvLyB0aGUgY2FsbGVyIGV4cGVjdHMgU3RyaW5ncywgd2UgaGF2ZSB0byB1c2UgYW4gaW50ZXJtZWRpYXJ5LgorICAgICAgICByZXR1cm4gbmV3IElERW51bWVyYXRpb24oYXZhaWxhYmxlSURzLmVsZW1lbnRzKCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYW4gZW51bWVyYXRpb24gb3ZlciBhbGwgdmlzaWJsZSBzb3VyY2UgbmFtZXMuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIEFuIDxjb2RlPkVudW1lcmF0aW9uPC9jb2RlPiBvdmVyIDxjb2RlPlN0cmluZzwvY29kZT4gb2JqZWN0cworICAgICAqLworICAgIHB1YmxpYyBFbnVtZXJhdGlvbiBnZXRBdmFpbGFibGVTb3VyY2VzKCkgeworICAgICAgICByZXR1cm4gbmV3IElERW51bWVyYXRpb24oc3BlY0RBRy5rZXlzKCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYW4gZW51bWVyYXRpb24gb3ZlciB2aXNpYmxlIHRhcmdldCBuYW1lcyBmb3IgdGhlIGdpdmVuCisgICAgICogc291cmNlLgorICAgICAqCisgICAgICogQHJldHVybiBBbiA8Y29kZT5FbnVtZXJhdGlvbjwvY29kZT4gb3ZlciA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdHMKKyAgICAgKi8KKyAgICBwdWJsaWMgRW51bWVyYXRpb24gZ2V0QXZhaWxhYmxlVGFyZ2V0cyhTdHJpbmcgc291cmNlKSB7CisgICAgICAgIENhc2VJbnNlbnNpdGl2ZVN0cmluZyBjaXNyYyA9IG5ldyBDYXNlSW5zZW5zaXRpdmVTdHJpbmcoc291cmNlKTsKKyAgICAgICAgSGFzaHRhYmxlIHRhcmdldHMgPSAoSGFzaHRhYmxlKSBzcGVjREFHLmdldChjaXNyYyk7CisgICAgICAgIGlmICh0YXJnZXRzID09IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgSURFbnVtZXJhdGlvbihudWxsKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbmV3IElERW51bWVyYXRpb24odGFyZ2V0cy5rZXlzKCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYW4gZW51bWVyYXRpb24gb3ZlciB2aXNpYmxlIHZhcmlhbnQgbmFtZXMgZm9yIHRoZSBnaXZlbgorICAgICAqIHNvdXJjZSBhbmQgdGFyZ2V0LgorICAgICAqCisgICAgICogQHJldHVybiBBbiA8Y29kZT5FbnVtZXJhdGlvbjwvY29kZT4gb3ZlciA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdHMKKyAgICAgKi8KKyAgICBwdWJsaWMgRW51bWVyYXRpb24gZ2V0QXZhaWxhYmxlVmFyaWFudHMoU3RyaW5nIHNvdXJjZSwgU3RyaW5nIHRhcmdldCkgeworICAgICAgICBDYXNlSW5zZW5zaXRpdmVTdHJpbmcgY2lzcmMgPSBuZXcgQ2FzZUluc2Vuc2l0aXZlU3RyaW5nKHNvdXJjZSk7CisgICAgICAgIENhc2VJbnNlbnNpdGl2ZVN0cmluZyBjaXRyZyA9IG5ldyBDYXNlSW5zZW5zaXRpdmVTdHJpbmcodGFyZ2V0KTsKKyAgICAgICAgSGFzaHRhYmxlIHRhcmdldHMgPSAoSGFzaHRhYmxlKSBzcGVjREFHLmdldChjaXNyYyk7CisgICAgICAgIGlmICh0YXJnZXRzID09IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgSURFbnVtZXJhdGlvbihudWxsKTsKKyAgICAgICAgfQorICAgICAgICBWZWN0b3IgdmFyaWFudHMgPSAoVmVjdG9yKSB0YXJnZXRzLmdldChjaXRyZyk7CisgICAgICAgIGlmICh2YXJpYW50cyA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IElERW51bWVyYXRpb24obnVsbCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG5ldyBJREVudW1lcmF0aW9uKHZhcmlhbnRzLmVsZW1lbnRzKCkpOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIGNsYXNzIFRyYW5zbGl0ZXJhdG9yUmVnaXN0cnk6IGludGVybmFsCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBDb252ZW5pZW5jZSBtZXRob2QuICBDYWxscyA2LWFyZyByZWdpc3RlckVudHJ5KCkuCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIHJlZ2lzdGVyRW50cnkoU3RyaW5nIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyB2YXJpYW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdCBlbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIHZpc2libGUpIHsKKyAgICAgICAgU3RyaW5nIHMgPSBzb3VyY2U7CisgICAgICAgIGlmIChzLmxlbmd0aCgpID09IDApIHsKKyAgICAgICAgICAgIHMgPSBBTlk7CisgICAgICAgIH0KKyAgICAgICAgU3RyaW5nIElEID0gVHJhbnNsaXRlcmF0b3JJRFBhcnNlci5TVFZ0b0lEKHNvdXJjZSwgdGFyZ2V0LCB2YXJpYW50KTsKKyAgICAgICAgcmVnaXN0ZXJFbnRyeShJRCwgcywgdGFyZ2V0LCB2YXJpYW50LCBlbnRyeSwgdmlzaWJsZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29udmVuaWVuY2UgbWV0aG9kLiAgQ2FsbHMgNi1hcmcgcmVnaXN0ZXJFbnRyeSgpLgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCByZWdpc3RlckVudHJ5KFN0cmluZyBJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QgZW50cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiB2aXNpYmxlKSB7CisgICAgICAgIFN0cmluZ1tdIHN0diA9IFRyYW5zbGl0ZXJhdG9ySURQYXJzZXIuSUR0b1NUVihJRCk7CisgICAgICAgIC8vIE9ubHkgbmVlZCB0byBkbyB0aGlzIGlmIElELmluZGV4T2YoJy0nKSA8IDAKKyAgICAgICAgU3RyaW5nIGlkID0gVHJhbnNsaXRlcmF0b3JJRFBhcnNlci5TVFZ0b0lEKHN0dlswXSwgc3R2WzFdLCBzdHZbMl0pOworICAgICAgICByZWdpc3RlckVudHJ5KGlkLCBzdHZbMF0sIHN0dlsxXSwgc3R2WzJdLCBlbnRyeSwgdmlzaWJsZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVnaXN0ZXIgYW4gZW50cnkgb2JqZWN0IChhZG9wdGVkKSB3aXRoIHRoZSBnaXZlbiBJRCwgc291cmNlLAorICAgICAqIHRhcmdldCwgYW5kIHZhcmlhbnQgc3RyaW5ncy4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgcmVnaXN0ZXJFbnRyeShTdHJpbmcgSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyB2YXJpYW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdCBlbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIHZpc2libGUpIHsKKyAgICAgICAgQ2FzZUluc2Vuc2l0aXZlU3RyaW5nIGNpSUQgPSBuZXcgQ2FzZUluc2Vuc2l0aXZlU3RyaW5nKElEKTsKKworICAgICAgICAvLyBTdG9yZSB0aGUgZW50cnkgd2l0aGluIGFuIGFycmF5IHNvIGl0IGNhbiBiZSBtb2RpZmllZCBsYXRlcgorICAgICAgICBpZiAoIShlbnRyeSBpbnN0YW5jZW9mIE9iamVjdFtdKSkgeworICAgICAgICAgICAgZW50cnkgPSBuZXcgT2JqZWN0W10geyBlbnRyeSB9OworICAgICAgICB9CisKKyAgICAgICAgcmVnaXN0cnkucHV0KGNpSUQsIGVudHJ5KTsKKyAgICAgICAgaWYgKHZpc2libGUpIHsKKyAgICAgICAgICAgIHJlZ2lzdGVyU1RWKHNvdXJjZSwgdGFyZ2V0LCB2YXJpYW50KTsKKyAgICAgICAgICAgIGlmICghYXZhaWxhYmxlSURzLmNvbnRhaW5zKGNpSUQpKSB7CisgICAgICAgICAgICAgICAgYXZhaWxhYmxlSURzLmFkZEVsZW1lbnQoY2lJRCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZW1vdmVTVFYoc291cmNlLCB0YXJnZXQsIHZhcmlhbnQpOworICAgICAgICAgICAgYXZhaWxhYmxlSURzLnJlbW92ZUVsZW1lbnQoY2lJRCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZWdpc3RlciBhIHNvdXJjZS10YXJnZXQvdmFyaWFudCBpbiB0aGUgc3BlY0RBRy4gIFZhcmlhbnQgbWF5IGJlCisgICAgICogZW1wdHksIGJ1dCBzb3VyY2UgYW5kIHRhcmdldCBtdXN0IG5vdCBiZS4gIElmIHZhcmlhbnQgaXMgZW1wdHkgdGhlbgorICAgICAqIHRoZSBzcGVjaWFsIHZhcmlhbnQgTk9fVkFSSUFOVCBpcyBzdG9yZWQgaW4gc2xvdCB6ZXJvIG9mIHRoZQorICAgICAqIFVWZWN0b3Igb2YgdmFyaWFudHMuCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIHJlZ2lzdGVyU1RWKFN0cmluZyBzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyB2YXJpYW50KSB7CisgICAgICAgIC8vIGFzc2VydChzb3VyY2UubGVuZ3RoKCkgPiAwKTsKKyAgICAgICAgLy8gYXNzZXJ0KHRhcmdldC5sZW5ndGgoKSA+IDApOworICAgICAgICBDYXNlSW5zZW5zaXRpdmVTdHJpbmcgY2lzcmMgPSBuZXcgQ2FzZUluc2Vuc2l0aXZlU3RyaW5nKHNvdXJjZSk7CisgICAgICAgIENhc2VJbnNlbnNpdGl2ZVN0cmluZyBjaXRyZyA9IG5ldyBDYXNlSW5zZW5zaXRpdmVTdHJpbmcodGFyZ2V0KTsKKyAgICAgICAgQ2FzZUluc2Vuc2l0aXZlU3RyaW5nIGNpdmFyID0gbmV3IENhc2VJbnNlbnNpdGl2ZVN0cmluZyh2YXJpYW50KTsKKyAgICAgICAgSGFzaHRhYmxlIHRhcmdldHMgPSAoSGFzaHRhYmxlKSBzcGVjREFHLmdldChjaXNyYyk7CisgICAgICAgIGlmICh0YXJnZXRzID09IG51bGwpIHsKKyAgICAgICAgICAgIHRhcmdldHMgPSBuZXcgSGFzaHRhYmxlKCk7CisgICAgICAgICAgICBzcGVjREFHLnB1dChjaXNyYywgdGFyZ2V0cyk7CisgICAgICAgIH0KKyAgICAgICAgVmVjdG9yIHZhcmlhbnRzID0gKFZlY3RvcikgdGFyZ2V0cy5nZXQoY2l0cmcpOworICAgICAgICBpZiAodmFyaWFudHMgPT0gbnVsbCkgeworICAgICAgICAgICAgdmFyaWFudHMgPSBuZXcgVmVjdG9yKCk7CisgICAgICAgICAgICB0YXJnZXRzLnB1dChjaXRyZywgdmFyaWFudHMpOworICAgICAgICB9CisgICAgICAgIC8vIGFzc2VydChOT19WQVJJQU5UID09ICIiKTsKKyAgICAgICAgLy8gV2UgYWRkIHRoZSB2YXJpYW50IHN0cmluZy4gIElmIGl0IGlzIHRoZSBzcGVjaWFsICJubyB2YXJpYW50IgorICAgICAgICAvLyBzdHJpbmcsIHRoYXQgaXMsIHRoZSBlbXB0eSBzdHJpbmcsIHdlIGFkZCBpdCBhdCBwb3NpdGlvbiB6ZXJvLgorICAgICAgICBpZiAoIXZhcmlhbnRzLmNvbnRhaW5zKGNpdmFyKSkgeworICAgICAgICAgICAgaWYgKHZhcmlhbnQubGVuZ3RoKCkgPiAwKSB7CisgICAgICAgICAgICAgICAgdmFyaWFudHMuYWRkRWxlbWVudChjaXZhcik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHZhcmlhbnRzLmluc2VydEVsZW1lbnRBdChjaXZhciwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZW1vdmUgYSBzb3VyY2UtdGFyZ2V0L3ZhcmlhbnQgZnJvbSB0aGUgc3BlY0RBRy4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgcmVtb3ZlU1RWKFN0cmluZyBzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHZhcmlhbnQpIHsKKyAgICAgICAgLy8gYXNzZXJ0KHNvdXJjZS5sZW5ndGgoKSA+IDApOworICAgICAgICAvLyBhc3NlcnQodGFyZ2V0Lmxlbmd0aCgpID4gMCk7CisgICAgICAgIENhc2VJbnNlbnNpdGl2ZVN0cmluZyBjaXNyYyA9IG5ldyBDYXNlSW5zZW5zaXRpdmVTdHJpbmcoc291cmNlKTsKKyAgICAgICAgQ2FzZUluc2Vuc2l0aXZlU3RyaW5nIGNpdHJnID0gbmV3IENhc2VJbnNlbnNpdGl2ZVN0cmluZyh0YXJnZXQpOworICAgICAgICBDYXNlSW5zZW5zaXRpdmVTdHJpbmcgY2l2YXIgPSBuZXcgQ2FzZUluc2Vuc2l0aXZlU3RyaW5nKHZhcmlhbnQpOworICAgICAgICBIYXNodGFibGUgdGFyZ2V0cyA9IChIYXNodGFibGUpIHNwZWNEQUcuZ2V0KGNpc3JjKTsKKyAgICAgICAgaWYgKHRhcmdldHMgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuOyAvLyBzaG91bGQgbmV2ZXIgaGFwcGVuIGZvciB2YWxpZCBzLXQvdgorICAgICAgICB9CisgICAgICAgIFZlY3RvciB2YXJpYW50cyA9IChWZWN0b3IpIHRhcmdldHMuZ2V0KGNpdHJnKTsKKyAgICAgICAgaWYgKHZhcmlhbnRzID09IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybjsgLy8gc2hvdWxkIG5ldmVyIGhhcHBlbiBmb3IgdmFsaWQgcy10L3YKKyAgICAgICAgfQorICAgICAgICB2YXJpYW50cy5yZW1vdmVFbGVtZW50KHZhcmlhbnQpOworICAgICAgICBpZiAodmFyaWFudHMuc2l6ZSgpID09IDApIHsKKyAgICAgICAgICAgIHRhcmdldHMucmVtb3ZlKGNpdHJnKTsgLy8gc2hvdWxkIGRlbGV0ZSB2YXJpYW50cworICAgICAgICAgICAgaWYgKHRhcmdldHMuc2l6ZSgpID09IDApIHsKKyAgICAgICAgICAgICAgICBzcGVjREFHLnJlbW92ZShjaXNyYyk7IC8vIHNob3VsZCBkZWxldGUgdGFyZ2V0cworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVRyA9IGZhbHNlOworCisgICAgLyoqCisgICAgICogQXR0ZW1wdCB0byBmaW5kIGEgc291cmNlLXRhcmdldC92YXJpYW50IGluIHRoZSBkeW5hbWljIHJlZ2lzdHJ5CisgICAgICogc3RvcmUuICBSZXR1cm4gMCBvbiBmYWlsdXJlLgorICAgICAqLworICAgIHByaXZhdGUgT2JqZWN0W10gZmluZEluRHluYW1pY1N0b3JlKFNwZWMgc3JjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTcGVjIHRyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHZhcmlhbnQpIHsKKyAgICAgICAgU3RyaW5nIElEID0gVHJhbnNsaXRlcmF0b3JJRFBhcnNlci5TVFZ0b0lEKHNyYy5nZXQoKSwgdHJnLmdldCgpLCB2YXJpYW50KTsKKyAgICAgICAgaWYgKERFQlVHKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRyYW5zbGl0ZXJhdG9yUmVnaXN0cnkuZmluZEluRHluYW1pY1N0b3JlOiIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKE9iamVjdFtdKSByZWdpc3RyeS5nZXQobmV3IENhc2VJbnNlbnNpdGl2ZVN0cmluZyhJRCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEF0dGVtcHQgdG8gZmluZCBhIHNvdXJjZS10YXJnZXQvdmFyaWFudCBpbiB0aGUgc3RhdGljIGxvY2FsZQorICAgICAqIHJlc291cmNlIHN0b3JlLiAgRG8gbm90IHBlcmZvcm0gZmFsbGJhY2suICBSZXR1cm4gMCBvbiBmYWlsdXJlLgorICAgICAqCisgICAgICogT24gc3VjY2VzcywgY3JlYXRlIGEgbmV3IGVudHJ5IG9iamVjdCwgcmVnaXN0ZXIgaXQgaW4gdGhlIGR5bmFtaWMKKyAgICAgKiBzdG9yZSwgYW5kIHJldHVybiBhIHBvaW50ZXIgdG8gaXQsIGJ1dCBkbyBub3QgbWFrZSBpdCBwdWJsaWMgLS0KKyAgICAgKiBqdXN0IGJlY2F1c2Ugc29tZW9uZSByZXF1ZXN0ZWQgc29tZXRoaW5nLCB3ZSBkbyBub3QgZXhwYW5kIHRoZQorICAgICAqIGF2YWlsYWJsZSBJRCBsaXN0IChvciBzcGVjIERBRykuCisgICAgICovCisgICAgcHJpdmF0ZSBPYmplY3RbXSBmaW5kSW5TdGF0aWNTdG9yZShTcGVjIHNyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTcGVjIHRyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgdmFyaWFudCkgeworICAgICAgICBpZiAoREVCVUcpIHsKKyAgICAgICAgICAgIFN0cmluZyBJRCA9IFRyYW5zbGl0ZXJhdG9ySURQYXJzZXIuU1RWdG9JRChzcmMuZ2V0KCksIHRyZy5nZXQoKSwgdmFyaWFudCk7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRyYW5zbGl0ZXJhdG9yUmVnaXN0cnkuZmluZEluU3RhdGljU3RvcmU6IiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUQpOworICAgICAgICB9CisgICAgICAgIE9iamVjdFtdIGVudHJ5ID0gbnVsbDsKKyAgICAgICAgaWYgKHNyYy5pc0xvY2FsZSgpKSB7CisgICAgICAgICAgICBlbnRyeSA9IGZpbmRJbkJ1bmRsZShzcmMsIHRyZywgdmFyaWFudCwgVHJhbnNsaXRlcmF0b3IuRk9SV0FSRCk7CisgICAgICAgIH0gZWxzZSBpZiAodHJnLmlzTG9jYWxlKCkpIHsKKyAgICAgICAgICAgIGVudHJ5ID0gZmluZEluQnVuZGxlKHRyZywgc3JjLCB2YXJpYW50LCBUcmFuc2xpdGVyYXRvci5SRVZFUlNFKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIElmIHdlIGZvdW5kIGFuIGVudHJ5LCBzdG9yZSBpdCBpbiB0aGUgSGFzaHRhYmxlIGZvciBuZXh0CisgICAgICAgIC8vIHRpbWUuCisgICAgICAgIGlmIChlbnRyeSAhPSBudWxsKSB7CisgICAgICAgICAgICByZWdpc3RlckVudHJ5KHNyYy5nZXRUb3AoKSwgdHJnLmdldFRvcCgpLCB2YXJpYW50LCBlbnRyeSwgZmFsc2UpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGVudHJ5OworICAgIH0KKworICAgIC8qKgorICAgICAqIEF0dGVtcHQgdG8gZmluZCBhbiBlbnRyeSBpbiBhIHNpbmdsZSByZXNvdXJjZSBidW5kbGUuICBUaGlzIGlzCisgICAgICogYSBvbmUtc2lkZWQgbG9va3VwLiAgZmluZEluU3RhdGljU3RvcmUoKSBwZXJmb3JtcyB1cCB0byB0d28gc3VjaAorICAgICAqIGxvb2t1cHMsIG9uZSBmb3IgdGhlIHNvdXJjZSwgYW5kIG9uZSBmb3IgdGhlIHRhcmdldC4KKyAgICAgKgorICAgICAqIERvIG5vdCBwZXJmb3JtIGZhbGxiYWNrLiAgUmV0dXJuIDAgb24gZmFpbHVyZS4KKyAgICAgKgorICAgICAqIE9uIHN1Y2Nlc3MsIGNyZWF0ZSBhIG5ldyBFbnRyeSBvYmplY3QsIHBvcHVsYXRlIGl0LCBhbmQgcmV0dXJuIGl0LgorICAgICAqIFRoZSBjYWxsZXIgb3ducyB0aGUgcmV0dXJuZWQgb2JqZWN0LgorICAgICAqLworICAgIHByaXZhdGUgT2JqZWN0W10gZmluZEluQnVuZGxlKFNwZWMgc3BlY1RvT3BlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTcGVjIHNwZWNUb0ZpbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHZhcmlhbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRpcmVjdGlvbikgeworICAgICAgICAvLyBhc3NlcnQoc3BlY1RvT3Blbi5pc0xvY2FsZSgpKTsKKyAgICAgICAgUmVzb3VyY2VCdW5kbGUgcmVzID0gc3BlY1RvT3Blbi5nZXRCdW5kbGUoKTsKKworICAgICAgICBpZiAocmVzID09IG51bGwpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGUgYnVuZGxlJ3MgbG9jYWxlIGRvZXMgbm90IG1hdGNoCisgICAgICAgICAgICAvLyB0aGUgY3VycmVudCBsZXZlbCBvZiBpdGVyYXRpb24gZm9yIHRoZSBzcGVjLgorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGludCBwYXNzPTA7IHBhc3M8MjsgKytwYXNzKSB7CisgICAgICAgICAgICBTdHJpbmdCdWZmZXIgdGFnID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICAgICAgLy8gRmlyc3QgdHJ5IGVpdGhlciBUcmFuc2xpdGVyYXRvclRvX3h4eCBvcgorICAgICAgICAgICAgLy8gVHJhbnNsaXRlcmF0ZUZyb21feHh4LCB0aGVuIHRyeSB0aGUgYmlkaXJlY3Rpb25hbAorICAgICAgICAgICAgLy8gVHJhbnNsaXRlcmF0ZV94eHguICBUaGlzIHByZWNlZGVuY2Ugb3JkZXIgaXMgYXJiaXRyYXJ5CisgICAgICAgICAgICAvLyBidXQgbXVzdCBiZSBjb25zaXN0ZW50IGFuZCBkb2N1bWVudGVkLgorICAgICAgICAgICAgaWYgKHBhc3MgPT0gMCkgeworICAgICAgICAgICAgICAgIHRhZy5hcHBlbmQoZGlyZWN0aW9uID09IFRyYW5zbGl0ZXJhdG9yLkZPUldBUkQgPworICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRyYW5zbGl0ZXJhdGVUb18iIDogIlRyYW5zbGl0ZXJhdGVGcm9tXyIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0YWcuYXBwZW5kKCJUcmFuc2xpdGVyYXRlXyIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGFnLmFwcGVuZChzcGVjVG9GaW5kLmdldCgpLnRvVXBwZXJDYXNlKCkpOworCisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIC8vIFRoZSBUcmFuc2xpdGVyYXRlKl94eHggcmVzb3VyY2UgaXMgYW4gYXJyYXkgb2YKKyAgICAgICAgICAgICAgICAvLyBzdHJpbmdzIG9mIHRoZSBmb3JtYXQgeyA8djA+LCA8cjA+LCAuLi4gfS4gIEVhY2gKKyAgICAgICAgICAgICAgICAvLyA8dmk+IGlzIGEgdmFyaWFudCBuYW1lLCBhbmQgZWFjaCA8cmk+IGlzIGEgcnVsZS4KKyAgICAgICAgICAgICAgICBTdHJpbmdbXSBzdWJyZXMgPSByZXMuZ2V0U3RyaW5nQXJyYXkodGFnLnRvU3RyaW5nKCkpOworCisgICAgICAgICAgICAgICAgLy8gYXNzZXJ0KHN1YnJlcyAhPSBudWxsKTsKKyAgICAgICAgICAgICAgICAvLyBhc3NlcnQoc3VicmVzLmxlbmd0aCAlIDIgPT0gMCk7CisgICAgICAgICAgICAgICAgaW50IGkgPSAwOworICAgICAgICAgICAgICAgIGlmICh2YXJpYW50Lmxlbmd0aCgpICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpPTA7IGk8c3VicmVzLmxlbmd0aDsgaSs9IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdWJyZXNbaV0uZXF1YWxzSWdub3JlQ2FzZSh2YXJpYW50KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGkgPCBzdWJyZXMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgYSBtYXRjaCwgb3IgdGhlcmUgaXMgbm8gdmFyaWFudCBhbmQgaSA9PSAwLgorICAgICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIHN1Y2NlZWRlZCBpbiBsb2FkaW5nIGEgc3RyaW5nIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgIC8vIGxvY2FsZSByZXNvdXJjZXMuICBSZXR1cm4gdGhlIHJ1bGUgc3RyaW5nIHdoaWNoCisgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgaXRzZWxmIGJlY29tZSB0aGUgcmVnaXN0cnkgZW50cnkuCisKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGRpcmVjdGlvbiBpcyBhbHdheXMgZm9yd2FyZCBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgIC8vIFRyYW5zbGl0ZXJhdGVUb194eHggYW5kIFRyYW5zbGl0ZXJhdGVGcm9tX3h4eAorICAgICAgICAgICAgICAgICAgICAvLyBpdGVtczsgdGhvc2UgYXJlIHVuaWRpcmVjdGlvbmFsIGZvcndhcmQgcnVsZXMuCisgICAgICAgICAgICAgICAgICAgIC8vIEZvciB0aGUgYmlkaXJlY3Rpb25hbCBUcmFuc2xpdGVyYXRlX3h4eCBpdGVtcywKKyAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGRpcmVjdGlvbiBpcyB0aGUgdmFsdWUgcGFzc2VkIGluIHRvIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgLy8gZnVuY3Rpb24uCisgICAgICAgICAgICAgICAgICAgIGludCBkaXIgPSAocGFzcyA9PSAwKSA/IFRyYW5zbGl0ZXJhdG9yLkZPUldBUkQgOiBkaXJlY3Rpb247CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgT2JqZWN0W10geyBuZXcgTG9jYWxlRW50cnkoc3VicmVzW2krMV0sIGRpcikgfTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIH0gY2F0Y2ggKE1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiBlKSB7IAorCQkJCWlmIChERUJVRykgU3lzdGVtLm91dC5wcmludGxuKCJtaXNzaW5nIHJlc291cmNlOiAiICsgZSk7IAorCQkJfQorICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgd2UgZ2V0IGhlcmUgd2UgaGFkIGEgbWlzc2luZyByZXNvdXJjZSBleGNlcHRpb24gb3Igd2UKKyAgICAgICAgLy8gZmFpbGVkIHRvIGZpbmQgYSBkZXNpcmVkIHZhcmlhbnQuCisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlbmllbmNlIG1ldGhvZC4gIENhbGxzIDMtYXJnIGZpbmQoKS4KKyAgICAgKi8KKyAgICBwcml2YXRlIE9iamVjdFtdIGZpbmQoU3RyaW5nIElEKSB7CisgICAgICAgIFN0cmluZ1tdIHN0diA9IFRyYW5zbGl0ZXJhdG9ySURQYXJzZXIuSUR0b1NUVihJRCk7CisgICAgICAgIHJldHVybiBmaW5kKHN0dlswXSwgc3R2WzFdLCBzdHZbMl0pOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRvcC1sZXZlbCBmaW5kIG1ldGhvZC4gIEF0dGVtcHQgdG8gZmluZCBhIHNvdXJjZS10YXJnZXQvdmFyaWFudCBpbgorICAgICAqIGVpdGhlciB0aGUgZHluYW1pYyBvciB0aGUgc3RhdGljIChsb2NhbGUgcmVzb3VyY2UpIHN0b3JlLiAgUGVyZm9ybQorICAgICAqIGZhbGxiYWNrLgorICAgICAqCisgICAgICogTG9va3VwIHNlcXVlbmNlIGZvciBzc19TU19TU1MtdHRfVFRfVFRUL3Y6CisgICAgICoKKyAgICAgKiAgIHNzX1NTX1NTUy10dF9UVF9UVFQvdiAtLSBpbiBoYXNodGFibGUKKyAgICAgKiAgIHNzX1NTX1NTUy10dF9UVF9UVFQvdiAtLSBpbiBzc19TU19TU1MgKG5vIGZhbGxiYWNrKQorICAgICAqCisgICAgICogICAgIHJlcGVhdCB3aXRoIHQgPSB0dF9UVF9UVFQsIHR0X1RULCB0dCwgYW5kIHRzY3JpcHQKKyAgICAgKgorICAgICAqICAgICBzc19TU19TU1MtdC8qCisgICAgICogICAgIHNzX1NTLXQvKgorICAgICAqICAgICBzcy10LyoKKyAgICAgKiAgICAgc3NjcmlwdC10LyoKKyAgICAgKgorICAgICAqIEhlcmUgKiBtYXRjaGVzIHRoZSBmaXJzdCB2YXJpYW50IGxpc3RlZC4KKyAgICAgKgorICAgICAqIENhbGxlciBkb2VzIE5PVCBvd24gcmV0dXJuZWQgb2JqZWN0LiAgUmV0dXJuIDAgb24gZmFpbHVyZS4KKyAgICAgKi8KKyAgICBwcml2YXRlIE9iamVjdFtdIGZpbmQoU3RyaW5nIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHZhcmlhbnQpIHsKKworICAgICAgICBTcGVjIHNyYyA9IG5ldyBTcGVjKHNvdXJjZSk7CisgICAgICAgIFNwZWMgdHJnID0gbmV3IFNwZWModGFyZ2V0KTsKKyAgICAgICAgT2JqZWN0W10gZW50cnkgPSBudWxsOworCisgICAgICAgIGlmICh2YXJpYW50Lmxlbmd0aCgpICE9IDApIHsKKworICAgICAgICAgICAgLy8gU2VlayBleGFjdCBtYXRjaCBpbiBoYXNodGFibGUKKyAgICAgICAgICAgIGVudHJ5ID0gZmluZEluRHluYW1pY1N0b3JlKHNyYywgdHJnLCB2YXJpYW50KTsKKyAgICAgICAgICAgIGlmIChlbnRyeSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBTZWVrIGV4YWN0IG1hdGNoIGluIGxvY2FsZSByZXNvdXJjZXMKKyAgICAgICAgICAgIGVudHJ5ID0gZmluZEluU3RhdGljU3RvcmUoc3JjLCB0cmcsIHZhcmlhbnQpOworICAgICAgICAgICAgaWYgKGVudHJ5ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICBzcmMucmVzZXQoKTsKKyAgICAgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgICAgICAvLyBTZWVrIG1hdGNoIGluIGhhc2h0YWJsZQorICAgICAgICAgICAgICAgIGVudHJ5ID0gZmluZEluRHluYW1pY1N0b3JlKHNyYywgdHJnLCBOT19WQVJJQU5UKTsKKyAgICAgICAgICAgICAgICBpZiAoZW50cnkgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gU2VlayBtYXRjaCBpbiBsb2NhbGUgcmVzb3VyY2VzCisgICAgICAgICAgICAgICAgZW50cnkgPSBmaW5kSW5TdGF0aWNTdG9yZShzcmMsIHRyZywgTk9fVkFSSUFOVCk7CisgICAgICAgICAgICAgICAgaWYgKGVudHJ5ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoIXNyYy5oYXNGYWxsYmFjaygpKSB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzcmMubmV4dCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCF0cmcuaGFzRmFsbGJhY2soKSkgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdHJnLm5leHQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdpdmVuIGFuIEVudHJ5IG9iamVjdCwgaW5zdGFudGlhdGUgaXQuICBDYWxsZXIgb3ducyByZXN1bHQuICBSZXR1cm4KKyAgICAgKiAwIG9uIGZhaWx1cmUuCisgICAgICoKKyAgICAgKiBSZXR1cm4gYSBub24tZW1wdHkgYWxpYXNSZXR1cm4gdmFsdWUgaWYgdGhlIElEIHBvaW50cyB0byBhbiBhbGlhcy4KKyAgICAgKiBXZSBjYW5ub3QgaW5zdGFudGlhdGUgaXQgb3Vyc2VsdmVzIGJlY2F1c2UgdGhlIGFsaWFzIG1heSBjb250YWluCisgICAgICogZmlsdGVycyBvciBjb21wb3VuZHMsIHdoaWNoIHdlIGRvIG5vdCB1bmRlcnN0YW5kLiAgQ2FsbGVyIHNob3VsZAorICAgICAqIG1ha2UgYWxpYXNSZXR1cm4gZW1wdHkgYmVmb3JlIGNhbGxpbmcuCisgICAgICoKKyAgICAgKiBUaGUgZW50cnkgb2JqZWN0IGlzIGFzc3VtZWQgdG8gcmVzaWRlIGluIHRoZSBkeW5hbWljIHN0b3JlLiAgSXQgbWF5IGJlCisgICAgICogbW9kaWZpZWQuCisgICAgICovCisgICAgcHJpdmF0ZSBUcmFuc2xpdGVyYXRvciBpbnN0YW50aWF0ZUVudHJ5KFN0cmluZyBJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0W10gZW50cnlXcmFwcGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdCdWZmZXIgYWxpYXNSZXR1cm4pIHsKKyAgICAgICAgLy8gV2UgYWN0dWFsbHkgbW9kaWZ5IHRoZSBlbnRyeSBvYmplY3QgaW4gc29tZSBjYXNlcy4gIElmIGl0CisgICAgICAgIC8vIGlzIGEgc3RyaW5nLCB3ZSBtYXkgcGFydGlhbGx5IHBhcnNlIGl0IGFuZCB0dXJuIGl0IGludG8gYQorICAgICAgICAvLyBtb3JlIHByb2Nlc3NlZCBwcmVjdXJzb3IuICBUaGlzIG1ha2VzIHRoZSBuZXh0CisgICAgICAgIC8vIGluc3RhbnRpYXRpb24gZmFzdGVyIGFuZCBhbGxvd3Mgc2hhcmluZyBvZiBpbW11dGFibGUKKyAgICAgICAgLy8gY29tcG9uZW50cyBsaWtlIHRoZSBSdWxlQmFzZWRUcmFuc2xpdGVyYXRvci5EYXRhIG9iamVjdHMuCisgICAgICAgIC8vIEZvciB0aGlzIHJlYXNvbiwgdGhlIGVudHJ5IG9iamVjdCBpcyBhbiBPYmplY3RbXSBvZiBsZW5ndGgKKyAgICAgICAgLy8gMS4KKworICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICBPYmplY3QgZW50cnkgPSBlbnRyeVdyYXBwZXJbMF07CisKKyAgICAgICAgICAgIGlmIChlbnRyeSBpbnN0YW5jZW9mIFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yLkRhdGEpIHsKKyAgICAgICAgICAgICAgICBSdWxlQmFzZWRUcmFuc2xpdGVyYXRvci5EYXRhIGRhdGEgPSAoUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3IuRGF0YSkgZW50cnk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSdWxlQmFzZWRUcmFuc2xpdGVyYXRvcihJRCwgZGF0YSwgbnVsbCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGVudHJ5IGluc3RhbmNlb2YgQ2xhc3MpIHsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFRyYW5zbGl0ZXJhdG9yKSAoKENsYXNzKSBlbnRyeSkubmV3SW5zdGFuY2UoKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChJbnN0YW50aWF0aW9uRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIGUyKSB7fQorICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgfSBlbHNlIGlmIChlbnRyeSBpbnN0YW5jZW9mIEFsaWFzRW50cnkpIHsKKyAgICAgICAgICAgICAgICBhbGlhc1JldHVybi5hcHBlbmQoKChBbGlhc0VudHJ5KSBlbnRyeSkuYWxpYXMpOworICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgfSBlbHNlIGlmIChlbnRyeSBpbnN0YW5jZW9mIFRyYW5zbGl0ZXJhdG9yLkZhY3RvcnkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gKChUcmFuc2xpdGVyYXRvci5GYWN0b3J5KSBlbnRyeSkuZ2V0SW5zdGFuY2UoSUQpOworICAgICAgICAgICAgfSBlbHNlIGlmIChlbnRyeSBpbnN0YW5jZW9mIENvbXBvdW5kUkJURW50cnkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gKChDb21wb3VuZFJCVEVudHJ5KSBlbnRyeSkuZ2V0SW5zdGFuY2UoKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZW50cnkgaW5zdGFuY2VvZiBUcmFuc2xpdGVyYXRvcikgeworICAgICAgICAgICAgICAgIHJldHVybiAoVHJhbnNsaXRlcmF0b3IpIGVudHJ5OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBBdCB0aGlzIHBvaW50IGVudHJ5IHR5cGUgbXVzdCBiZSBlaXRoZXIgUlVMRVNfRk9SV0FSRCBvcgorICAgICAgICAgICAgLy8gUlVMRVNfUkVWRVJTRS4gIFdlIHByb2Nlc3MgdGhlIHJ1bGUgZGF0YSBpbnRvIGEKKyAgICAgICAgICAgIC8vIFRyYW5zbGl0ZXJhdG9yUnVsZURhdGEgb2JqZWN0LCBhbmQgcG9zc2libHkgYWxzbyBpbnRvIGFuCisgICAgICAgICAgICAvLyAuaWQgaGVhZGVyIGFuZC9vciBmb290ZXIuICBUaGVuIHdlIG1vZGlmeSB0aGUgcmVnaXN0cnkgd2l0aAorICAgICAgICAgICAgLy8gdGhlIHBhcnNlZCBkYXRhIGFuZCByZXRyeS4KKworICAgICAgICAgICAgVHJhbnNsaXRlcmF0b3JQYXJzZXIgcGFyc2VyID0gbmV3IFRyYW5zbGl0ZXJhdG9yUGFyc2VyKCk7CisKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgUmVzb3VyY2VFbnRyeSByZSA9IChSZXNvdXJjZUVudHJ5KSBlbnRyeTsKKyAgICAgICAgICAgICAgICBSZXNvdXJjZVJlYWRlciByID0gbnVsbDsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICByID0gbmV3IFJlc291cmNlUmVhZGVyKHJlLnJlc291cmNlTmFtZSwgcmUuZW5jb2RpbmcpOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW47IFVURjggaXMgYWx3YXlzIHN1cHBvcnRlZAorICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbihlLmdldE1lc3NhZ2UoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHBhcnNlci5wYXJzZShyLCByZS5kaXJlY3Rpb24pOworICAgICAgICAgICAgfSBjYXRjaCAoQ2xhc3NDYXN0RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAvLyBJZiB3ZSBwdWxsIGEgcnVsZSBmcm9tIGEgbG9jYWxlIHJlc291cmNlIGJ1bmRsZSBpdCB3aWxsCisgICAgICAgICAgICAgICAgLy8gYmUgYSBMb2NhbGVFbnRyeS4KKyAgICAgICAgICAgICAgICBMb2NhbGVFbnRyeSBsZSA9IChMb2NhbGVFbnRyeSkgZW50cnk7CisgICAgICAgICAgICAgICAgcGFyc2VyLnBhcnNlKGxlLnJ1bGUsIGxlLmRpcmVjdGlvbik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFJlc2V0IGVudHJ5IHRvIHNvbWV0aGluZyB0aGF0IHdlIHByb2Nlc3MgYXQgdGhlCisgICAgICAgICAgICAvLyB0b3Agb2YgdGhlIGxvb3AsIHRoZW4gbG9vcCBiYWNrIHRvIHRoZSB0b3AuICBBcyBsb25nIGFzIHdlCisgICAgICAgICAgICAvLyBkbyB0aGlzLCB3ZSBvbmx5IGxvb3AgdGhyb3VnaCB0d2ljZSBhdCBtb3N0LgorICAgICAgICAgICAgLy8gTk9URTogVGhlIGxvZ2ljIGhlcmUgbWF0Y2hlcyB0aGF0IGluCisgICAgICAgICAgICAvLyBUcmFuc2xpdGVyYXRvci5jcmVhdGVGcm9tUnVsZXMoKS4KKyAgICAgICAgICAgIGlmIChwYXJzZXIuaWRCbG9jay5sZW5ndGgoKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKHBhcnNlci5kYXRhID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gTm8gaWRCbG9jaywgbm8gZGF0YSAtLSB0aGlzIGlzIGp1c3QgYW4KKyAgICAgICAgICAgICAgICAgICAgLy8gYWxpYXMgZm9yIE51bGwKKyAgICAgICAgICAgICAgICAgICAgZW50cnlXcmFwcGVyWzBdID0gbmV3IEFsaWFzRW50cnkoTnVsbFRyYW5zbGl0ZXJhdG9yLl9JRCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gTm8gaWRCbG9jaywgZGF0YSAhPSAwIC0tIHRoaXMgaXMgYW4KKyAgICAgICAgICAgICAgICAgICAgLy8gb3JkaW5hcnkgUkJUX0RBVEEKKyAgICAgICAgICAgICAgICAgICAgZW50cnlXcmFwcGVyWzBdID0gcGFyc2VyLmRhdGE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAocGFyc2VyLmRhdGEgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAvLyBpZEJsb2NrLCBubyBkYXRhIC0tIHRoaXMgaXMgYW4gYWxpYXMuICBUaGUgSUQgaGFzCisgICAgICAgICAgICAgICAgICAgIC8vIGJlZW4gbXVuZ2VkIGZyb20gcmV2ZXJzZSBpbnRvIGZvcndhcmQgbW9kZSwgaWYKKyAgICAgICAgICAgICAgICAgICAgLy8gbmVjZXNzYXJ5LCBzbyBpbnN0YW50aWF0ZSB0aGUgSUQgaW4gdGhlIGZvcndhcmQKKyAgICAgICAgICAgICAgICAgICAgLy8gZGlyZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICBlbnRyeVdyYXBwZXJbMF0gPSBuZXcgQWxpYXNFbnRyeShwYXJzZXIuaWRCbG9jayk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gaWRCbG9jayBhbmQgZGF0YSAtLSB0aGlzIGlzIGEgY29tcG91bmQKKyAgICAgICAgICAgICAgICAgICAgLy8gUkJUCisgICAgICAgICAgICAgICAgICAgIGVudHJ5V3JhcHBlclswXSA9IG5ldyBDb21wb3VuZFJCVEVudHJ5KAorICAgICAgICAgICAgICAgICAgICAgICAgSUQsIHBhcnNlci5pZEJsb2NrLCBwYXJzZXIuaWRTcGxpdFBvaW50LCBwYXJzZXIuZGF0YSwgcGFyc2VyLmNvbXBvdW5kRmlsdGVyKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8vZW9mCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvdGV4dC9VQ2hhcmFjdGVySXRlcmF0b3IuamF2YSBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L1VDaGFyYWN0ZXJJdGVyYXRvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjZDFjOGQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdGV4dC9VQ2hhcmFjdGVySXRlcmF0b3IuamF2YQpAQCAtMCwwICsxLDQxNSBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3Vzci9jdnMvaWN1NGovaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvVUNoYXJhY3Rlckl0ZXJhdG9yLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMDcvMzEgMDM6MDQ6MjggJCAKKyAqICRSZXZpc2lvbjogMS4xMSAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS50ZXh0OworCisKK2ltcG9ydCBqYXZhLnRleHQuQ2hhcmFjdGVySXRlcmF0b3I7CisKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLkNoYXJhY3Rlckl0ZXJhdG9yV3JhcHBlcjsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLlJlcGxhY2VhYmxlVUNoYXJhY3Rlckl0ZXJhdG9yOworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuVUNoYXJBcnJheUl0ZXJhdG9yOworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuVUNoYXJhY3Rlckl0ZXJhdG9yV3JhcHBlcjsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLlVDaGFyYWN0ZXJQcm9wZXJ0eTsKKworCisvKioKKyAqIEFic3RyYWN0IGNsYXNzIHRoYXQgZGVmaW5lcyBhbiBBUEkgZm9yIGl0ZXJhdGlvbiBvbiB0ZXh0IG9iamVjdHMuVGhpcyBpcyBhbiAKKyAqIGludGVyZmFjZSBmb3IgZm9yd2FyZCBhbmQgYmFja3dhcmQgaXRlcmF0aW9uIGFuZCByYW5kb20gYWNjZXNzIGludG8gYSB0ZXh0IAorICogb2JqZWN0LiBGb3J3YXJkIGl0ZXJhdGlvbiBpcyBkb25lIHdpdGggcG9zdC1pbmNyZW1lbnQgYW5kIGJhY2t3YXJkIGl0ZXJhdGlvbiAKKyAqIGlzIGRvbmUgd2l0aCBwcmUtZGVjcmVtZW50IHNlbWFudGljcywgd2hpbGUgdGhlIAorICogPGNvZGU+amF2YS50ZXh0LkNoYXJhY3Rlckl0ZXJhdG9yPC9jb2RlPiBpbnRlcmZhY2UgbWV0aG9kcyBwcm92aWRlZCBmb3J3YXJkIAorICogaXRlcmF0aW9uIHdpdGggInByZS1pbmNyZW1lbnQiIGFuZCBiYWNrd2FyZCBpdGVyYXRpb24gd2l0aCBwcmUtZGVjcmVtZW50IAorICogc2VtYW50aWNzLiBUaGlzIEFQSSBpcyBtb3JlIGVmZmljaWVudCBmb3IgZm9yd2FyZCBpdGVyYXRpb24gb3ZlciBjb2RlIHBvaW50cy4KKyAqIFRoZSBvdGhlciBtYWpvciBkaWZmZXJlbmNlIGlzIHRoYXQgdGhpcyBBUEkgY2FuIGRvIGJvdGggY29kZSB1bml0IGFuZCBjb2RlIHBvaW50IAorICogaXRlcmF0aW9uLCA8Y29kZT5qYXZhLnRleHQuQ2hhcmFjdGVySXRlcmF0b3I8L2NvZGU+IGNhbiBvbmx5IGl0ZXJhdGUgb3ZlciAKKyAqIGNvZGUgdW5pdHMgYW5kIGlzIGxpbWl0ZWQgdG8gQk1QICgwIC0gMHhGRkZGKQorICogQGF1dGhvciBSYW0KKyAqIEBkcmFmdCBJQ1UgMi40CisgKi8KK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBVQ2hhcmFjdGVySXRlcmF0b3IgCisgICAgICAgICAgICAgICAgICAgICAgaW1wbGVtZW50cyBDbG9uZWFibGUsVUZvcndhcmRDaGFyYWN0ZXJJdGVyYXRvciB7CisKKyAgICAvKioKKyAgICAgKiBQcm90ZWN0ZWQgZGVmYXVsdCBjb25zdHJ1Y3RvciBmb3IgdGhlIHN1YmNsYXNzZXMKKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHByb3RlY3RlZCBVQ2hhcmFjdGVySXRlcmF0b3IoKXsKKyAgICB9CisgICAgCisgICAgLy8gc3RhdGljIGZpbmFsIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybnMgYSA8Y29kZT5VQ2hhcmFjdGVySXRlcmF0b3I8L2NvZGU+IG9iamVjdCBnaXZlbiBhIAorICAgICAqIDxjb2RlPlJlcGxhY2VhYmxlPC9jb2RlPiBvYmplY3QuCisgICAgICogQHBhcmFtIHNvdXJjZSBhIHZhbGlkIHNvdXJjZSBhcyBhIDxjb2RlPlJlcGxhY2VhYmxlPC9jb2RlPiBvYmplY3QKKyAgICAgKiBAcmV0dXJuIFVDaGFyYWN0ZXJJdGVyYXRvciBvYmplY3QKKyAgICAgKiBAZXhjZXB0aW9uIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgYXJndW1lbnQgaXMgbnVsbAorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVQ2hhcmFjdGVySXRlcmF0b3IgZ2V0SW5zdGFuY2UoUmVwbGFjZWFibGUgc291cmNlKXsKKyAgICAgICAgcmV0dXJuIG5ldyBSZXBsYWNlYWJsZVVDaGFyYWN0ZXJJdGVyYXRvcihzb3VyY2UpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgPGNvZGU+VUNoYXJhY3Rlckl0ZXJhdG9yPC9jb2RlPiBvYmplY3QgZ2l2ZW4gYSAKKyAgICAgKiBzb3VyY2Ugc3RyaW5nLgorICAgICAqIEBwYXJhbSBzb3VyY2UgYSBzdHJpbmcKKyAgICAgKiBAcmV0dXJuIFVDaGFyYWN0ZXJJdGVyYXRvciBvYmplY3QKKyAgICAgKiBAZXhjZXB0aW9uIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgYXJndW1lbnQgaXMgbnVsbAorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVQ2hhcmFjdGVySXRlcmF0b3IgZ2V0SW5zdGFuY2UoU3RyaW5nIHNvdXJjZSl7CisgICAgICAgIHJldHVybiBuZXcgUmVwbGFjZWFibGVVQ2hhcmFjdGVySXRlcmF0b3Ioc291cmNlKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIDxjb2RlPlVDaGFyYWN0ZXJJdGVyYXRvcjwvY29kZT4gb2JqZWN0IGdpdmVuIGEgCisgICAgICogc291cmNlIGNoYXJhY3RlciBhcnJheS4KKyAgICAgKiBAcGFyYW0gc291cmNlIGFuIGFycmF5IG9mIFVURi0xNiBjb2RlIHVuaXRzCisgICAgICogQHJldHVybiBVQ2hhcmFjdGVySXRlcmF0b3Igb2JqZWN0CisgICAgICogQGV4Y2VwdGlvbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIGFyZ3VtZW50IGlzIG51bGwKKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVUNoYXJhY3Rlckl0ZXJhdG9yIGdldEluc3RhbmNlKGNoYXJbXSBzb3VyY2UpeworICAgICAgICByZXR1cm4gZ2V0SW5zdGFuY2Uoc291cmNlLDAsc291cmNlLmxlbmd0aCk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybnMgYSA8Y29kZT5VQ2hhcmFjdGVySXRlcmF0b3I8L2NvZGU+IG9iamVjdCBnaXZlbiBhIAorICAgICAqIHNvdXJjZSBjaGFyYWN0ZXIgYXJyYXkuCisgICAgICogQHBhcmFtIHNvdXJjZSBhbiBhcnJheSBvZiBVVEYtMTYgY29kZSB1bml0cworICAgICAqIEByZXR1cm4gVUNoYXJhY3Rlckl0ZXJhdG9yIG9iamVjdAorICAgICAqIEBleGNlcHRpb24gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBhcmd1bWVudCBpcyBudWxsCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFVDaGFyYWN0ZXJJdGVyYXRvciBnZXRJbnN0YW5jZShjaGFyW10gc291cmNlLCBpbnQgc3RhcnQsIGludCBsaW1pdCl7CisgICAgICAgIHJldHVybiBuZXcgVUNoYXJBcnJheUl0ZXJhdG9yKHNvdXJjZSxzdGFydCxsaW1pdCk7CisgICAgfQorICAgIC8qKgorICAgICAqIFJldHVybnMgYSA8Y29kZT5VQ2hhcmFjdGVySXRlcmF0b3I8L2NvZGU+IG9iamVjdCBnaXZlbiBhIAorICAgICAqIHNvdXJjZSBTdHJpbmdCdWZmZXIuCisgICAgICogQHBhcmFtIHNvdXJjZSBhbiBzdHJpbmcgYnVmZmVyIG9mIFVURi0xNiBjb2RlIHVuaXRzCisgICAgICogQHJldHVybiBVQ2hhcmFjdGVySXRlcmF0b3Igb2JqZWN0CisgICAgICogQGV4Y2VwdGlvbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIGFyZ3VtZW50IGlzIG51bGwKKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVUNoYXJhY3Rlckl0ZXJhdG9yIGdldEluc3RhbmNlKFN0cmluZ0J1ZmZlciBzb3VyY2UpeworICAgICAgICByZXR1cm4gbmV3IFJlcGxhY2VhYmxlVUNoYXJhY3Rlckl0ZXJhdG9yKHNvdXJjZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIDxjb2RlPlVDaGFyYWN0ZXJJdGVyYXRvcjwvY29kZT4gb2JqZWN0IGdpdmVuIGEgCisgICAgICogQ2hhcmFjdGVySXRlcmF0b3IuCisgICAgICogQHBhcmFtIHNvdXJjZSBhIHZhbGlkIENoYXJhY3Rlckl0ZXJhdG9yIG9iamVjdC4KKyAgICAgKiBAcmV0dXJuIFVDaGFyYWN0ZXJJdGVyYXRvciBvYmplY3QKKyAgICAgKiBAZXhjZXB0aW9uIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgYXJndW1lbnQgaXMgbnVsbAorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovICAgIAorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVUNoYXJhY3Rlckl0ZXJhdG9yIGdldEluc3RhbmNlKENoYXJhY3Rlckl0ZXJhdG9yIHNvdXJjZSl7CisgICAgICAgIHJldHVybiBuZXcgQ2hhcmFjdGVySXRlcmF0b3JXcmFwcGVyKHNvdXJjZSk7CisgICAgfQorICAgICAgIAorICAgIC8vIHB1YmxpYyBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgPGNvZGU+amF2YS50ZXh0LkNoYXJhY3Rlckl0ZXJhdG9yPC9jb2RlPiBvYmplY3QgZm9yCisgICAgICogdGhlIHVuZGVybHlpbmcgdGV4dCBvZiB0aGlzIGl0ZXJhdG9yLiAgVGhlIHJldHVybmVkIGl0ZXJhdG9yIGlzCisgICAgICogaW5kZXBlbmRlbnQgb2YgdGhpcyBpdGVyYXRvci4KKyAgICAgKiBAcmV0dXJuIGphdmEudGV4dC5DaGFyYWN0ZXJJdGVyYXRvciBvYmplY3QKKyAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgKi8KKyAgICBwdWJsaWMgQ2hhcmFjdGVySXRlcmF0b3IgZ2V0Q2hhcmFjdGVySXRlcmF0b3IoKXsKKyAgICAgICAgcmV0dXJuIG5ldyBVQ2hhcmFjdGVySXRlcmF0b3JXcmFwcGVyKHRoaXMpOworICAgIH0gICAgCisgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBjb2RlIHVuaXQgYXQgdGhlIGN1cnJlbnQgaW5kZXguICBJZiBpbmRleCBpcyBvdXQKKyAgICAgKiBvZiByYW5nZSwgcmV0dXJucyBET05FLiAgSW5kZXggaXMgbm90IGNoYW5nZWQuCisgICAgICogQHJldHVybiBjdXJyZW50IGNvZGUgdW5pdAorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IGludCBjdXJyZW50KCk7CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgY29kZXBvaW50IGF0IHRoZSBjdXJyZW50IGluZGV4LgorICAgICAqIElmIHRoZSBjdXJyZW50IGluZGV4IGlzIGludmFsaWQsIERPTkUgaXMgcmV0dXJuZWQuCisgICAgICogSWYgdGhlIGN1cnJlbnQgaW5kZXggcG9pbnRzIHRvIGEgbGVhZCBzdXJyb2dhdGUsIGFuZCB0aGVyZSBpcyBhIGZvbGxvd2luZworICAgICAqIHRyYWlsIHN1cnJvZ2F0ZSwgdGhlbiB0aGUgY29kZSBwb2ludCBpcyByZXR1cm5lZC4gIE90aGVyd2lzZSwgdGhlIGNvZGUKKyAgICAgKiB1bml0IGF0IGluZGV4IGlzIHJldHVybmVkLiAgSW5kZXggaXMgbm90IGNoYW5nZWQuIAorICAgICAqIEByZXR1cm4gY3VycmVudCBjb2RlcG9pbnQKKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBpbnQgY3VycmVudENvZGVQb2ludCgpeworICAgICAgICBpbnQgY2ggPSBjdXJyZW50KCk7CisgICAgICAgIGlmKFVURjE2LmlzTGVhZFN1cnJvZ2F0ZSgoY2hhciljaCkpeworICAgICAgICAgICAgLy8gYWR2YW5jZSB0aGUgaW5kZXggdG8gZ2V0IHRoZQorICAgICAgICAgICAgLy8gbmV4dCBjb2RlIHBvaW50CisgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICAvLyBkdWUgdG8gcG9zdCBpbmNyZW1lbnQgc2VtYW50aWNzCisgICAgICAgICAgICAvLyBjdXJyZW50KCkgYWZ0ZXIgbmV4dCgpIGFjdHVhbGx5CisgICAgICAgICAgICAvLyByZXR1cm5zIHRoZSBjaGFyIHdlIHdhbnQKKyAgICAgICAgICAgIGludCBjaDIgPSBjdXJyZW50KCk7CisgICAgICAgICAgICAvLyBjdXJyZW50IHNob3VsZCBuZXZlciBjaGFuZ2UKKyAgICAgICAgICAgIC8vIHRoZSBjdXJyZW50IGluZGV4IHNvIGJhY2sgb2ZmCisgICAgICAgICAgICBwcmV2aW91cygpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZihVVEYxNi5pc1RyYWlsU3Vycm9nYXRlKChjaGFyKWNoMikpeworICAgICAgICAgICAgICAgIC8vIHdlIGZvdW5kIGEgc3Vycm9nYXRlIHBhaXIgCisgICAgICAgICAgICAgICAgLy8gcmV0dXJuIHRoZSBjb2RlcG9pbnQKKyAgICAgICAgICAgICAgICByZXR1cm4gVUNoYXJhY3RlclByb3BlcnR5LmdldFJhd1N1cHBsZW1lbnRhcnkoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIpY2gsKGNoYXIpY2gyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gY2g7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUgdGV4dAorICAgICAqIEByZXR1cm4gbGVuZ3RoIG9mIHRoZSB0ZXh0CisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgaW50IGdldExlbmd0aCgpOworCisgICAgCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgY3VycmVudCBpbmRleCBpbiB0ZXh0LgorICAgICAqIEByZXR1cm4gY3VycmVudCBpbmRleCBpbiB0ZXh0LgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IGludCBnZXRJbmRleCgpOworCisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBVVEYxNiBjb2RlIHVuaXQgYXQgaW5kZXgsIGFuZCBpbmNyZW1lbnRzIHRvIHRoZSBuZXh0CisgICAgICogY29kZSB1bml0IChwb3N0LWluY3JlbWVudCBzZW1hbnRpY3MpLiAgSWYgaW5kZXggaXMgb3V0IG9mCisgICAgICogcmFuZ2UsIERPTkUgaXMgcmV0dXJuZWQsIGFuZCB0aGUgaXRlcmF0b3IgaXMgcmVzZXQgdG8gdGhlIGxpbWl0CisgICAgICogb2YgdGhlIHRleHQuCisgICAgICogQHJldHVybiB0aGUgbmV4dCBVVEYxNiBjb2RlIHVuaXQsIG9yIERPTkUgaWYgdGhlIGluZGV4IGlzIGF0IHRoZSBsaW1pdAorICAgICAqICAgICAgICAgb2YgdGhlIHRleHQuCisgICAgICogQGRyYWZ0IElDVSAyLjQgIAorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBpbnQgbmV4dCgpOworCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgY29kZSBwb2ludCBhdCBpbmRleCwgYW5kIGluY3JlbWVudHMgdG8gdGhlIG5leHQgY29kZQorICAgICAqIHBvaW50IChwb3N0LWluY3JlbWVudCBzZW1hbnRpY3MpLiAgSWYgaW5kZXggZG9lcyBub3QgcG9pbnQgdG8gYQorICAgICAqIHZhbGlkIHN1cnJvZ2F0ZSBwYWlyLCB0aGUgYmVoYXZpb3IgaXMgdGhlIHNhbWUgYXMKKyAgICAgKiA8Y29kZT5uZXh0KCk8Y29kZT4uICBPdGhlcndpc2UgdGhlIGl0ZXJhdG9yIGlzIGluY3JlbWVudGVkIHBhc3QKKyAgICAgKiB0aGUgc3Vycm9nYXRlIHBhaXIsIGFuZCB0aGUgY29kZSBwb2ludCByZXByZXNlbnRlZCBieSB0aGUgcGFpcgorICAgICAqIGlzIHJldHVybmVkLgorICAgICAqIEByZXR1cm4gdGhlIG5leHQgY29kZXBvaW50IGluIHRleHQsIG9yIERPTkUgaWYgdGhlIGluZGV4IGlzIGF0CisgICAgICogICAgICAgICB0aGUgbGltaXQgb2YgdGhlIHRleHQuCisgICAgICogQGRyYWZ0IElDVSAyLjQgIAorICAgICAqLworICAgIHB1YmxpYyBpbnQgbmV4dENvZGVQb2ludCgpeworICAgICAgICBpbnQgY2gxID0gbmV4dCgpOworICAgICAgICBpZihVVEYxNi5pc0xlYWRTdXJyb2dhdGUoKGNoYXIpY2gxKSl7CisgICAgICAgICAgICBpbnQgY2gyID0gbmV4dCgpOworICAgICAgICAgICAgaWYoVVRGMTYuaXNUcmFpbFN1cnJvZ2F0ZSgoY2hhciljaDIpKXsKKyAgICAgICAgICAgICAgICByZXR1cm4gVUNoYXJhY3RlclByb3BlcnR5LmdldFJhd1N1cHBsZW1lbnRhcnkoKGNoYXIpY2gxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciljaDIpOworICAgICAgICAgICAgfWVsc2UgaWYgKGNoMiAhPSBET05FKSB7CisgICAgICAgICAgICAgICAgLy8gdW5tYXRjaGVkIHN1cnJvZ2F0ZSBzbyBiYWNrIG91dAorICAgICAgICAgICAgICAgIHByZXZpb3VzKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGNoMTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEZWNyZW1lbnQgdG8gdGhlIHBvc2l0aW9uIG9mIHRoZSBwcmV2aW91cyBjb2RlIHVuaXQgaW4gdGhlCisgICAgICogdGV4dCwgYW5kIHJldHVybiBpdCAocHJlLWRlY3JlbWVudCBzZW1hbnRpY3MpLiAgSWYgdGhlCisgICAgICogcmVzdWx0aW5nIGluZGV4IGlzIGxlc3MgdGhhbiAwLCB0aGUgaW5kZXggaXMgcmVzZXQgdG8gMCBhbmQKKyAgICAgKiBET05FIGlzIHJldHVybmVkLgorICAgICAqIEByZXR1cm4gdGhlIHByZXZpb3VzIGNvZGUgdW5pdCBpbiB0aGUgdGV4dCwgb3IgRE9ORSBpZiB0aGUgbmV3CisgICAgICogICAgICAgICBpbmRleCBpcyBiZWZvcmUgdGhlIHN0YXJ0IG9mIHRoZSB0ZXh0LgorICAgICAqIEBkcmFmdCBJQ1UgMi40ICAKKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgaW50IHByZXZpb3VzKCk7CisKKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXRyZWF0IHRvIHRoZSBzdGFydCBvZiB0aGUgcHJldmlvdXMgY29kZSBwb2ludCBpbiB0aGUgdGV4dCwKKyAgICAgKiBhbmQgcmV0dXJuIGl0IChwcmUtZGVjcmVtZW50IHNlbWFudGljcykuICBJZiB0aGUgaW5kZXggaXMgbm90CisgICAgICogcHJlY2VlZGVkIGJ5IGEgdmFsaWQgc3Vycm9nYXRlIHBhaXIsIHRoZSBiZWhhdmlvciBpcyB0aGUgc2FtZQorICAgICAqIGFzIDxjb2RlPnByZXZpb3VzKCk8L2NvZGU+LiAgT3RoZXJ3aXNlIHRoZSBpdGVyYXRvciBpcworICAgICAqIGRlY3JlbWVudGVkIHRvIHRoZSBzdGFydCBvZiB0aGUgc3Vycm9nYXRlIHBhaXIsIGFuZCB0aGUgY29kZQorICAgICAqIHBvaW50IHJlcHJlc2VudGVkIGJ5IHRoZSBwYWlyIGlzIHJldHVybmVkLgorICAgICAqIEByZXR1cm4gdGhlIHByZXZpb3VzIGNvZGUgcG9pbnQgaW4gdGhlIHRleHQsIG9yIERPTkUgaWYgdGhlIG5ldworICAgICAqICAgICAgICAgaW5kZXggaXMgYmVmb3JlIHRoZSBzdGFydCBvZiB0aGUgdGV4dC4KKyAgICAgKiBAZHJhZnQgSUNVIDIuNCAgCisgICAgICovCisgICAgcHVibGljIGludCBwcmV2aW91c0NvZGVQb2ludCgpeworICAgICAgICBpbnQgY2gxID0gcHJldmlvdXMoKTsKKyAgICAgICAgaWYoVVRGMTYuaXNUcmFpbFN1cnJvZ2F0ZSgoY2hhciljaDEpKXsKKyAgICAgICAgICAgIGludCBjaDIgPSBwcmV2aW91cygpOworICAgICAgICAgICAgaWYoVVRGMTYuaXNMZWFkU3Vycm9nYXRlKChjaGFyKWNoMikpeworICAgICAgICAgICAgICAgIHJldHVybiBVQ2hhcmFjdGVyUHJvcGVydHkuZ2V0UmF3U3VwcGxlbWVudGFyeSgoY2hhciljaDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyKWNoMSk7CisgICAgICAgICAgICB9ZWxzZSBpZiAoY2gyICE9IERPTkUpIHsKKyAgICAgICAgICAgICAgICAvL3VubWF0Y2hlZCB0cmFpbCBzdXJyb2dhdGUgc28gYmFjayBvdXQKKyAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICB9ICAgCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGNoMTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBpbmRleCB0byB0aGUgc3BlY2lmaWVkIGluZGV4IGluIHRoZSB0ZXh0LgorICAgICAqIEBwYXJhbSBpbmRleCB0aGUgaW5kZXggd2l0aGluIHRoZSB0ZXh0LiAKKyAgICAgKiBAZXhjZXB0aW9uIEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gaXMgdGhyb3duIGlmIGFuIGludmFsaWQgaW5kZXggaXMgCisgICAgICogICAgICAgICAgICBzdXBwbGllZAorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IHZvaWQgc2V0SW5kZXgoaW50IGluZGV4KTsKKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIGN1cnJlbnQgaW5kZXggdG8gdGhlIGxpbWl0LgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0VG9MaW1pdCgpIHsKKwkgICAgc2V0SW5kZXgoZ2V0TGVuZ3RoKCkpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBjdXJyZW50IGluZGV4IHRvIHRoZSBzdGFydC4KKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFRvU3RhcnQoKSB7CisJICAgIHNldEluZGV4KDApOworICAgIH0KKworICAgIC8qKgorICAgICAqIEZpbGxzIHRoZSBidWZmZXIgd2l0aCB0aGUgdW5kZXJseWluZyB0ZXh0IHN0b3JhZ2Ugb2YgdGhlIGl0ZXJhdG9yCisgICAgICogSWYgdGhlIGJ1ZmZlciBjYXBhY2l0eSBpcyBub3QgZW5vdWdoIGEgZXhjZXB0aW9uIGlzIHRocm93bi4gVGhlIGNhcGFjaXR5CisgICAgICogb2YgdGhlIGZpbGwgaW4gYnVmZmVyIHNob3VsZCBhdCBsZWFzdCBiZSBlcXVhbCB0byBsZW5ndGggb2YgdGV4dCBpbiB0aGUgCisgICAgICogaXRlcmF0b3Igb2J0YWluZWQgYnkgY2FsbGluZyA8Y29kZT5nZXRMZW5ndGgoKTwvY29kZSkuCisgICAgICogPGI+VXNhZ2U6PC9iPgorICAgICAqIAorICAgICAqIDxjb2RlPgorICAgICAqIDxwcmU+CisgICAgICogICAgICAgICBVQ2hhY3Rlckl0ZXJhdG9yIGl0ZXIgPSBuZXcgVUNoYXJhY3Rlckl0ZXJhdG9yLmdldEluc3RhbmNlKHRleHQpOworICAgICAqICAgICAgICAgY2hhcltdIGJ1ZiA9IG5ldyBjaGFyW2l0ZXIuZ2V0TGVuZ3RoKCldOworICAgICAqICAgICAgICAgaXRlci5nZXRUZXh0KGJ1Zik7CisgICAgICogICAgICAgICAKKyAgICAgKiAgICAgICAgIE9SCisgICAgICogICAgICAgICBjaGFyW10gYnVmPSBuZXcgY2hhclsxXTsKKyAgICAgKiAgICAgICAgIGludCBsZW4gPSAwOworICAgICAqICAgICAgICAgZm9yKDs7KXsKKyAgICAgKiAgICAgICAgICAgICB0cnl7CisgICAgICogICAgICAgICAgICAgICAgIGxlbiA9IGl0ZXIuZ2V0VGV4dChidWYpOworICAgICAqICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgKiAgICAgICAgICAgICB9Y2F0Y2goSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiBlKXsKKyAgICAgKiAgICAgICAgICAgICAgICAgYnVmID0gbmV3IGNoYXJbaXRlci5nZXRMZW5ndGgoKV07CisgICAgICogICAgICAgICAgICAgfQorICAgICAqICAgICAgICAgfQorICAgICAqIDwvcHJlPgorICAgICAqIDwvY29kZT4KKyAgICAgKiAgICAgICAgICAgICAKKyAgICAgKiBAcGFyYW0gZmlsbEluIGFuIGFycmF5IG9mIGNoYXJzIHRvIGZpbGwgd2l0aCB0aGUgdW5kZXJseWluZyBVVEYtMTYgY29kZSAKKyAgICAgKiAgICAgICAgIHVuaXRzLgorICAgICAqIEBwYXJhbSBvZmZzZXQgdGhlIHBvc2l0aW9uIHdpdGhpbiB0aGUgYXJyYXkgdG8gc3RhcnQgcHV0dGluZyB0aGUgZGF0YS4KKyAgICAgKiBAcmV0dXJuIHRoZSBudW1iZXIgb2YgY29kZSB1bml0cyBhZGRlZCB0byBmaWxsSW4sIGFzIGEgY29udmVuaWVuY2UKKyAgICAgKiBAZXhjZXB0aW9uIEluZGV4T3V0T2ZCb3VuZHMgZXhjZXB0aW9uIGlmIHRoZXJlIGlzIG5vdCBlbm91Z2gKKyAgICAgKiAgICAgICAgICAgIHJvb20gYWZ0ZXIgb2Zmc2V0IGluIHRoZSBhcnJheSwgb3IgaWYgb2Zmc2V0IDwgMC4KKyAgICAgKiBAZHJhZnQgSUNVIDIuNCAgCisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IGludCBnZXRUZXh0KGNoYXJbXSBmaWxsSW4sIGludCBvZmZzZXQpOyAKKworICAgIC8qKgorICAgICAqIENvbnZlbmllbmNlIG92ZXJyaWRlIGZvciA8Y29kZT5nZXRUZXh0KGNoYXJbXSwgaW50KT4vY29kZT4gdGhhdCBwcm92aWRlcworICAgICAqIGFuIG9mZnNldCBvZiAwLgorICAgICAqIEBwYXJhbSBmaWxsSW4gYW4gYXJyYXkgb2YgY2hhcnMgdG8gZmlsbCB3aXRoIHRoZSB1bmRlcmx5aW5nIFVURi0xNiBjb2RlIAorICAgICAqICAgICAgICAgdW5pdHMuCisgICAgICogQHJldHVybiB0aGUgbnVtYmVyIG9mIGNvZGUgdW5pdHMgYWRkZWQgdG8gZmlsbEluLCBhcyBhIGNvbnZlbmllbmNlCisgICAgICogQGV4Y2VwdGlvbiBJbmRleE91dE9mQm91bmRzIGV4Y2VwdGlvbiBpZiB0aGVyZSBpcyBub3QgZW5vdWdoCisgICAgICogICAgICAgICAgICByb29tIGluIHRoZSBhcnJheS4KKyAgICAgKiBAZHJhZnQgSUNVIDIuNCAgCisgICAgICovCisgICAgcHVibGljIGZpbmFsIGludCBnZXRUZXh0KGNoYXJbXSBmaWxsSW4pIHsKKwkJcmV0dXJuIGdldFRleHQoZmlsbEluLCAwKTsKKyAgICB9CisgICAgICAgICAKKyAgICAvKioKKyAgICAgKiBDb252ZW5pZW5jZSBtZXRob2QgZm9yIHJldHVybmluZyB0aGUgdW5kZXJseWluZyB0ZXh0IHN0b3JhZ2UgYXMgYXMgc3RyaW5nCisgICAgICogQHJldHVybiB0aGUgdW5kZXJseWluZyB0ZXh0IHN0b3JhZ2UgaW4gdGhlIGl0ZXJhdG9yIGFzIGEgc3RyaW5nCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIGdldFRleHQoKSB7CisJCWNoYXJbXSB0ZXh0ID0gbmV3IGNoYXJbZ2V0TGVuZ3RoKCldOworCQlnZXRUZXh0KHRleHQpOworCQlyZXR1cm4gbmV3IFN0cmluZyh0ZXh0KTsKKyAgICB9CisgICAgICAgCisgICAgLyoqCisgICAgICogTW92ZXMgdGhlIGN1cnJlbnQgcG9zaXRpb24gYnkgdGhlIG51bWJlciBvZiBjb2RlIHVuaXRzCisgICAgICogc3BlY2lmaWVkLCBlaXRoZXIgZm9yd2FyZCBvciBiYWNrd2FyZCBkZXBlbmRpbmcgb24gdGhlIHNpZ24KKyAgICAgKiBvZiBkZWx0YSAocG9zaXRpdmUgb3IgbmVnYXRpdmUgcmVzcGVjdGl2ZWx5KS4gIElmIHRoZSByZXN1bHRpbmcKKyAgICAgKiBpbmRleCB3b3VsZCBiZSBsZXNzIHRoYW4gemVybywgdGhlIGluZGV4IGlzIHNldCB0byB6ZXJvLCBhbmQgaWYKKyAgICAgKiB0aGUgcmVzdWx0aW5nIGluZGV4IHdvdWxkIGJlIGdyZWF0ZXIgdGhhbiBsaW1pdCwgdGhlIGluZGV4IGlzCisgICAgICogc2V0IHRvIGxpbWl0LgorICAgICAqCisgICAgICogQHBhcmFtIGRlbHRhIHRoZSBudW1iZXIgb2YgY29kZSB1bml0cyB0byBtb3ZlIHRoZSBjdXJyZW50CisgICAgICogICAgICAgICAgICAgIGluZGV4LgorICAgICAqIEByZXR1cm4gdGhlIG5ldyBpbmRleC4KKyAgICAgKiBAZXhjZXB0aW9uIEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gaXMgdGhyb3duIGlmIGFuIGludmFsaWQgaW5kZXggaXMgCisgICAgICogICAgICAgICAgICBzdXBwbGllZCAKKyAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgKiAKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IG1vdmVJbmRleChpbnQgZGVsdGEpIHsKKwkJaW50IHggPSBNYXRoLm1heCgwLCBNYXRoLm1pbihnZXRJbmRleCgpICsgZGVsdGEsIGdldExlbmd0aCgpKSk7CisJCXNldEluZGV4KHgpOworCQlyZXR1cm4geDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBNb3ZlcyB0aGUgY3VycmVudCBwb3NpdGlvbiBieSB0aGUgbnVtYmVyIG9mIGNvZGUgcG9pbnRzCisgICAgICogc3BlY2lmaWVkLCBlaXRoZXIgZm9yd2FyZCBvciBiYWNrd2FyZCBkZXBlbmRpbmcgb24gdGhlIHNpZ24gb2YKKyAgICAgKiBkZWx0YSAocG9zaXRpdmUgb3IgbmVnYXRpdmUgcmVzcGVjdGl2ZWx5KS4gSWYgdGhlIGN1cnJlbnQgaW5kZXgKKyAgICAgKiBpcyBhdCBhIHRyYWlsIHN1cnJvZ2F0ZSB0aGVuIHRoZSBmaXJzdCBhZGp1c3RtZW50IGlzIGJ5IGNvZGUKKyAgICAgKiB1bml0LCBhbmQgdGhlIHJlbWFpbmluZyBhZGp1c3RtZW50cyBhcmUgYnkgY29kZSBwb2ludHMuICBJZiB0aGUKKyAgICAgKiByZXN1bHRpbmcgaW5kZXggd291bGQgYmUgbGVzcyB0aGFuIHplcm8sIHRoZSBpbmRleCBpcyBzZXQgdG8KKyAgICAgKiB6ZXJvLCBhbmQgaWYgdGhlIHJlc3VsdGluZyBpbmRleCB3b3VsZCBiZSBncmVhdGVyIHRoYW4gbGltaXQsCisgICAgICogdGhlIGluZGV4IGlzIHNldCB0byBsaW1pdC4KKyAgICAgKiBAcGFyYW0gZGVsdGEgdGhlIG51bWJlciBvZiBjb2RlIHVuaXRzIHRvIG1vdmUgdGhlIGN1cnJlbnQgaW5kZXguCisgICAgICogQHJldHVybiB0aGUgbmV3IGluZGV4ICAKKyAgICAgKiBAZXhjZXB0aW9uIEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gaXMgdGhyb3duIGlmIGFuIGludmFsaWQgZGVsdGEgaXMgCisgICAgICogICAgICAgICAgICBzdXBwbGllZAorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIGludCBtb3ZlQ29kZVBvaW50SW5kZXgoaW50IGRlbHRhKXsKKyAgICAgICAgaWYoZGVsdGE+MCl7CisgICAgICAgICAgICB3aGlsZShkZWx0YT4wICYmIG5leHRDb2RlUG9pbnQoKSAhPSBET05FKXtkZWx0YS0tO30KKyAgICAgICAgfWVsc2V7CisJICAgICAgICB3aGlsZShkZWx0YTwwICYmIHByZXZpb3VzQ29kZVBvaW50KCkgIT0gRE9ORSl7ZGVsdGErKzt9CisgICAgICAgIH0KKyAgICAgICAgaWYoZGVsdGEhPTApeworICAgICAgICAgICAgdGhyb3cgbmV3IEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24oKTsKKyAgICAgICAgfQorICAgICAgICAgIAorICAgICAgICByZXR1cm4gZ2V0SW5kZXgoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgY29weSBvZiB0aGlzIGl0ZXJhdG9yLCBpbmRlcGVuZGVudCBmcm9tIG90aGVyIGl0ZXJhdG9ycy4KKyAgICAgKiBJZiBpdCBpcyBub3QgcG9zc2libGUgdG8gY2xvbmUgdGhlIGl0ZXJhdG9yLCByZXR1cm5zIG51bGwuCisgICAgICogQHJldHVybiBjb3B5IG9mIHRoaXMgaXRlcmF0b3IKKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBPYmplY3QgY2xvbmUoKSB0aHJvd3MgQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb257CisJICAgIHJldHVybiBzdXBlci5jbG9uZSgpOworICAgIH0gICAKKyAgICAKK30KKwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3RleHQvVUZvcndhcmRDaGFyYWN0ZXJJdGVyYXRvci5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvVUZvcndhcmRDaGFyYWN0ZXJJdGVyYXRvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0Nzg0ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdGV4dC9VRm9yd2FyZENoYXJhY3Rlckl0ZXJhdG9yLmphdmEKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3Vzci9jdnMvaWN1NGovaWN1NGovc3JjL2NvbS9pYm0vaWN1L2ltcGwvVUZvcndhcmRDaGFyYWN0ZXJJdGVyYXRvci5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzA2LzIwIDAxOjE4OjA5ICQgCisgKiAkUmV2aXNpb246IDEuMSAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UudGV4dDsKKworLyoqCisgKiBJbnRlcmZhY2UgdGhhdCBkZWZpbmVzIGFuIEFQSSBmb3IgZm9yd2FyZC1vbmx5IGl0ZXJhdGlvbgorICogb24gdGV4dCBvYmplY3RzLgorICogVGhpcyBpcyBhIG1pbmltYWwgaW50ZXJmYWNlIGZvciBpdGVyYXRpb24gd2l0aG91dCByYW5kb20gYWNjZXNzCisgKiBvciBiYWNrd2FyZHMgaXRlcmF0aW9uLiBJdCBpcyBlc3BlY2lhbGx5IHVzZWZ1bCBmb3Igd3JhcHBpbmcKKyAqIHN0cmVhbXMgd2l0aCBjb252ZXJ0ZXJzIGludG8gYW4gb2JqZWN0IGZvciBjb2xsYXRpb24gb3IKKyAqIG5vcm1hbGl6YXRpb24uCisgKgorICogPHA+Q2hhcmFjdGVycyBjYW4gYmUgYWNjZXNzZWQgaW4gdHdvIHdheXM6IGFzIGNvZGUgdW5pdHMgb3IgYXMKKyAqIGNvZGUgcG9pbnRzLgorICogVW5pY29kZSBjb2RlIHBvaW50cyBhcmUgMjEtYml0IGludGVnZXJzIGFuZCBhcmUgdGhlIHNjYWxhciB2YWx1ZXMKKyAqIG9mIFVuaWNvZGUgY2hhcmFjdGVycy4gSUNVIHVzZXMgdGhlIHR5cGUgPGNvZGU+aW50PC9jb2RlPiBmb3IgdGhlbS4KKyAqIFVuaWNvZGUgY29kZSB1bml0cyBhcmUgdGhlIHN0b3JhZ2UgdW5pdHMgb2YgYSBnaXZlbgorICogVW5pY29kZS9VQ1MgVHJhbnNmb3JtYXRpb24gRm9ybWF0IChhIGNoYXJhY3RlciBlbmNvZGluZyBzY2hlbWUpLgorICogV2l0aCBVVEYtMTYsIGFsbCBjb2RlIHBvaW50cyBjYW4gYmUgcmVwcmVzZW50ZWQgd2l0aCBlaXRoZXIgb25lCisgKiBvciB0d28gY29kZSB1bml0cyAoInN1cnJvZ2F0ZXMiKS4KKyAqIFN0cmluZyBzdG9yYWdlIGlzIHR5cGljYWxseSBiYXNlZCBvbiBjb2RlIHVuaXRzLCB3aGlsZSBwcm9wZXJ0aWVzCisgKiBvZiBjaGFyYWN0ZXJzIGFyZSB0eXBpY2FsbHkgZGV0ZXJtaW5lZCB1c2luZyBjb2RlIHBvaW50IHZhbHVlcy4KKyAqIFNvbWUgcHJvY2Vzc2VzIG1heSBiZSBkZXNpZ25lZCB0byB3b3JrIHdpdGggc2VxdWVuY2VzIG9mIGNvZGUgdW5pdHMsCisgKiBvciBpdCBtYXkgYmUga25vd24gdGhhdCBhbGwgY2hhcmFjdGVycyB0aGF0IGFyZSBpbXBvcnRhbnQgdG8gYW4KKyAqIGFsZ29yaXRobSBjYW4gYmUgcmVwcmVzZW50ZWQgd2l0aCBzaW5nbGUgY29kZSB1bml0cy4KKyAqIE90aGVyIHByb2Nlc3NlcyB3aWxsIG5lZWQgdG8gdXNlIHRoZSBjb2RlIHBvaW50IGFjY2VzcyBmdW5jdGlvbnMuPC9wPgorICoKKyAqIDxwPkZvcndhcmRDaGFyYWN0ZXJJdGVyYXRvciBwcm92aWRlcyBuZXh0KCkgdG8gYWNjZXNzCisgKiBhIGNvZGUgdW5pdCBhbmQgYWR2YW5jZSBhbiBpbnRlcm5hbCBwb3NpdGlvbiBpbnRvIHRoZSB0ZXh0IG9iamVjdCwKKyAqIHNpbWlsYXIgdG8gYSA8Y29kZT5yZXR1cm4gdGV4dFtwb3NpdGlvbisrXTwvY29kZT4uPGJyPgorICogSXQgcHJvdmlkZXMgbmV4dENvZGVQb2ludCgpIHRvIGFjY2VzcyBhIGNvZGUgcG9pbnQgYW5kIGFkdmFuY2UgYW4gaW50ZXJuYWwKKyAqIHBvc2l0aW9uLjwvcD4KKyAqCisgKiA8cD5uZXh0Q29kZVBvaW50KCkgYXNzdW1lcyB0aGF0IHRoZSBjdXJyZW50IHBvc2l0aW9uIGlzIHRoYXQgb2YKKyAqIHRoZSBiZWdpbm5pbmcgb2YgYSBjb2RlIHBvaW50LCBpLmUuLCBvZiBpdHMgZmlyc3QgY29kZSB1bml0LgorICogQWZ0ZXIgbmV4dENvZGVQb2ludCgpLCB0aGlzIHdpbGwgYmUgdHJ1ZSBhZ2Fpbi4KKyAqIEluIGdlbmVyYWwsIGFjY2VzcyB0byBjb2RlIHVuaXRzIGFuZCBjb2RlIHBvaW50cyBpbiB0aGUgc2FtZQorICogaXRlcmF0aW9uIGxvb3Agc2hvdWxkIG5vdCBiZSBtaXhlZC4gSW4gVVRGLTE2LCBpZiB0aGUgY3VycmVudCBwb3NpdGlvbgorICogaXMgb24gYSBzZWNvbmQgY29kZSB1bml0IChMb3cgU3Vycm9nYXRlKSwgdGhlbiBvbmx5IHRoYXQgY29kZSB1bml0CisgKiBpcyByZXR1cm5lZCBldmVuIGJ5IG5leHRDb2RlUG9pbnQoKS48L3A+CisgKgorICogVXNhZ2U6CisgKiA8Y29kZT4gCisgKiAgcHVibGljIHZvaWQgZnVuY3Rpb24xKFVGb3J3YXJkQ2hhcmFjdGVySXRlcmF0b3IgaXQpIHsKKyAqICAgICBpbnQgYzsKKyAqICAgICB3aGlsZSgoYz1pdC5uZXh0KCkpIT1VRm9yd2FyZENoYXJhY3Rlckl0ZXJhdG9yLkRPTkUpIHsKKyAqICAgICAgICAgLy8gdXNlIGMKKyAqICAgICAgfQorICogIH0KKyAqIDwvY29kZT4KKyAqIDwvcD4KKyAqIEBkcmFmdCBJQ1UgMi40CisgKgorICovCisKK3B1YmxpYyBpbnRlcmZhY2UgVUZvcndhcmRDaGFyYWN0ZXJJdGVyYXRvciB7CisgICAgICAKKyAgICAvKioKKyAgICAgKiBJbmRpY2F0b3IgdGhhdCB3ZSBoYXZlIHJlYWNoZWQgdGhlIGVuZHMgb2YgdGhlIFVURjE2IHRleHQuCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBET05FID0gLTE7CisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgVVRGMTYgY29kZSB1bml0IGF0IGluZGV4LCBhbmQgaW5jcmVtZW50cyB0byB0aGUgbmV4dAorICAgICAqIGNvZGUgdW5pdCAocG9zdC1pbmNyZW1lbnQgc2VtYW50aWNzKS4gIElmIGluZGV4IGlzIG91dCBvZgorICAgICAqIHJhbmdlLCBET05FIGlzIHJldHVybmVkLCBhbmQgdGhlIGl0ZXJhdG9yIGlzIHJlc2V0IHRvIHRoZSBsaW1pdAorICAgICAqIG9mIHRoZSB0ZXh0LgorICAgICAqIEByZXR1cm4gdGhlIG5leHQgVVRGMTYgY29kZSB1bml0LCBvciBET05FIGlmIHRoZSBpbmRleCBpcyBhdCB0aGUgbGltaXQKKyAgICAgKiAgICAgICAgIG9mIHRoZSB0ZXh0LgorICAgICAqIEBkcmFmdCBJQ1UgMi40ICAKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IG5leHQoKTsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGNvZGUgcG9pbnQgYXQgaW5kZXgsIGFuZCBpbmNyZW1lbnRzIHRvIHRoZSBuZXh0IGNvZGUKKyAgICAgKiBwb2ludCAocG9zdC1pbmNyZW1lbnQgc2VtYW50aWNzKS4gIElmIGluZGV4IGRvZXMgbm90IHBvaW50IHRvIGEKKyAgICAgKiB2YWxpZCBzdXJyb2dhdGUgcGFpciwgdGhlIGJlaGF2aW9yIGlzIHRoZSBzYW1lIGFzCisgICAgICogPGNvZGU+bmV4dCgpPGNvZGU+LiAgT3RoZXJ3aXNlIHRoZSBpdGVyYXRvciBpcyBpbmNyZW1lbnRlZCBwYXN0CisgICAgICogdGhlIHN1cnJvZ2F0ZSBwYWlyLCBhbmQgdGhlIGNvZGUgcG9pbnQgcmVwcmVzZW50ZWQgYnkgdGhlIHBhaXIKKyAgICAgKiBpcyByZXR1cm5lZC4KKyAgICAgKiBAcmV0dXJuIHRoZSBuZXh0IGNvZGVwb2ludCBpbiB0ZXh0LCBvciBET05FIGlmIHRoZSBpbmRleCBpcyBhdAorICAgICAqICAgICAgICAgdGhlIGxpbWl0IG9mIHRoZSB0ZXh0LgorICAgICAqIEBkcmFmdCBJQ1UgMi40ICAKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IG5leHRDb2RlUG9pbnQoKTsKKworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3RleHQvVVRGMTYuamF2YSBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L1VURjE2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uM2JkYmE2MgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L1VURjE2LmphdmEKQEAgLTAsMCArMSwyNjYwIEBACisvKioKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L3RleHQvVVRGMTYuamF2YSx2ICQgCisqICREYXRlOiAyMDAyLzEyLzExIDAyOjA5OjA1ICQgCisqICRSZXZpc2lvbjogMS4yOCAkCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LnRleHQ7CisKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLlVDaGFyYWN0ZXJQcm9wZXJ0eTsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLk5vcm1hbGl6ZXJJbXBsOworLyoqCisgKiA8cD5TdGFuZGFsb25lIHV0aWxpdHkgY2xhc3MgcHJvdmlkaW5nIFVURjE2IGNoYXJhY3RlciBjb252ZXJzaW9ucyBhbmQgCisgKiBpbmRleGluZyBjb252ZXJzaW9ucy48L3A+CisgKiA8cD5Db2RlIHRoYXQgdXNlcyBzdHJpbmdzIGFsb25lIHJhcmVseSBuZWVkIG1vZGlmaWNhdGlvbi4gCisgKiBCeSBkZXNpZ24sIFVURi0xNiBkb2VzIG5vdCBhbGxvdyBvdmVybGFwLCBzbyBzZWFyY2hpbmcgZm9yIHN0cmluZ3MgaXMgYSBzYWZlIAorICogb3BlcmF0aW9uLiBTaW1pbGFybHksIGNvbmNhdGVuYXRpb24gaXMgYWx3YXlzIHNhZmUuIFN1YnN0cmluZ2luZyBpcyBzYWZlIGlmIAorICogdGhlIHN0YXJ0IGFuZCBlbmQgYXJlIGJvdGggb24gVVRGLTMyIGJvdW5kYXJpZXMuIEluIG5vcm1hbCBjb2RlLCB0aGUgdmFsdWVzIAorICogZm9yIHN0YXJ0IGFuZCBlbmQgYXJlIG9uIHRob3NlIGJvdW5kYXJpZXMsIHNpbmNlIHRoZXkgYXJvc2UgZnJvbSBvcGVyYXRpb25zIAorICogbGlrZSBzZWFyY2hpbmcuIElmIG5vdCwgdGhlIG5lYXJlc3QgVVRGLTMyIGJvdW5kYXJpZXMgY2FuIGJlIGRldGVybWluZWQgCisgKiB1c2luZyA8Y29kZT5ib3VuZHMoKTwvY29kZT4uPC9wPgorICogPHN0cm9uZz5FeGFtcGxlczo8L3N0cm9uZz4KKyAqIDxwPlRoZSBmb2xsb3dpbmcgZXhhbXBsZXMgaWxsdXN0cmF0ZSB1c2Ugb2Ygc29tZSBvZiB0aGVzZSBtZXRob2RzLiAKKyAqIDxwcmU+CisgKiAvLyBpdGVyYXRpb24gZm9yd2FyZHM6IE9yaWdpbmFsCisgKiBmb3IgKGludCBpID0gMDsgaSAmbHQ7IHMubGVuZ3RoKCk7ICsraSkgeworICqgoKBjaGFyIGNoID0gcy5jaGFyQXQoaSk7CisgKqCgoGRvU29tZXRoaW5nV2l0aChjaCk7CisgKiB9CisgKgorICogLy8gaXRlcmF0aW9uIGZvcndhcmRzOiBDaGFuZ2VzIGZvciBVVEYtMzIKKyAqIGludCBjaDsKKyAqIGZvciAoaW50IGkgPSAwOyBpICZsdDsgcy5sZW5ndGgoKTsgaSs9VVRGMTYuZ2V0Q2hhckNvdW50KGNoKSkgeworICqgoKBjaCA9IFVURjE2LmNoYXJBdChzLGkpOworICqgoKBkb1NvbWV0aGluZ1dpdGgoY2gpOworICogfQorICoKKyAqIC8vIGl0ZXJhdGlvbiBiYWNrd2FyZHM6IE9yaWdpbmFsCisgKiBmb3IgKGludCBpID0gcy5sZW5ndGgoKSAtMTsgaSA+PSAwOyAtLWkpIHsKKyAqoKCgY2hhciBjaCA9IHMuY2hhckF0KGkpOworICogoKCgZG9Tb21ldGhpbmdXaXRoKGNoKTsKKyAqIH0KKyAqICAKKyAqIC8vIGl0ZXJhdGlvbiBiYWNrd2FyZHM6IENoYW5nZXMgZm9yIFVURi0zMgorICogaW50IGNoOworICogZm9yIChpbnQgaSA9IHMubGVuZ3RoKCkgLTE7IGkgPiAwOyBpLT1VVEYxNi5nZXRDaGFyQ291bnQoY2gpKSB7CisgKqCgoGNoID0gVVRGMTYuY2hhckF0KHMsaSk7CisgKqCgoGRvU29tZXRoaW5nV2l0aChjaCk7CisgKiB9CisgKiA8L3ByZT4KKyAqIDxzdHJvbmc+Tm90ZXM6PC9zdHJvbmc+CisgKiA8dWw+CisgKiAgIDxsaT4KKyAqICAgPHN0cm9uZz5OYW1pbmc6PC9zdHJvbmc+IEZvciBjbGFyaXR5LCBIaWdoIGFuZCBMb3cgc3Vycm9nYXRlcyBhcmUgY2FsbGVkIAorICogICA8Y29kZT5MZWFkPC9jb2RlPiBhbmQgPGNvZGU+VHJhaWw8L2NvZGU+IGluIHRoZSBBUEksIHdoaWNoIGdpdmVzIGEgYmV0dGVyIAorICogICBzZW5zZSBvZiB0aGVpciBvcmRlcmluZyBpbiBhIHN0cmluZy4gPGNvZGU+b2Zmc2V0MTY8L2NvZGU+IGFuZCAKKyAqICAgPGNvZGU+b2Zmc2V0MzI8L2NvZGU+IGFyZSB1c2VkIHRvIGRpc3Rpbmd1aXNoIG9mZnNldHMgdG8gVVRGLTE2IAorICogICBib3VuZGFyaWVzIHZzIG9mZnNldHMgdG8gVVRGLTMyIGJvdW5kYXJpZXMuIDxjb2RlPmludCBjaGFyMzI8L2NvZGU+IGlzIAorICogICB1c2VkIHRvIGNvbnRhaW4gVVRGLTMyIGNoYXJhY3RlcnMsIGFzIG9wcG9zZWQgdG8gPGNvZGU+Y2hhcjE2PC9jb2RlPiwgCisgKiAgIHdoaWNoIGlzIGEgVVRGLTE2IGNvZGUgdW5pdC4KKyAqICAgPC9saT4KKyAqICAgPGxpPgorICogICA8c3Ryb25nPlJvdW5kdHJpcHBpbmcgT2Zmc2V0czo8L3N0cm9uZz4gWW91IGNhbiBhbHdheXMgcm91bmR0cmlwIGZyb20gYSAKKyAqICAgVVRGLTMyIG9mZnNldCB0byBhIFVURi0xNiBvZmZzZXQgYW5kIGJhY2suIEJlY2F1c2Ugb2YgdGhlIGRpZmZlcmVuY2UgaW4gCisgKiAgIHN0cnVjdHVyZSwgeW91IGNhbiByb3VuZHRyaXAgZnJvbSBhIFVURi0xNiBvZmZzZXQgdG8gYSBVVEYtMzIgb2Zmc2V0IGFuZCAKKyAqICAgYmFjayBpZiBhbmQgb25seSBpZiA8Y29kZT5ib3VuZHMoc3RyaW5nLCBvZmZzZXQxNikgIT0gVFJBSUw8L2NvZGU+LgorICogICA8L2xpPgorICogICA8bGk+CisgKiAgICA8c3Ryb25nPkV4Y2VwdGlvbnM6PC9zdHJvbmc+IFRoZSBlcnJvciBjaGVja2luZyB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiAKKyAqICAgaWYgaW5kaWNlcyBhcmUgb3V0IG9mIGJvdW5kcy4gT3RoZXIgdGhhbiB0aGFuIHRoYXQsIGFsbCBtZXRob2RzIHdpbGwgCisgKiAgIGJlaGF2ZSByZWFzb25hYmx5LCBldmVuIGlmIHVubWF0Y2hlZCBzdXJyb2dhdGVzIG9yIG91dC1vZi1ib3VuZHMgVVRGLTMyIAorICogICB2YWx1ZXMgYXJlIHByZXNlbnQuIDxjb2RlPlVDaGFyYWN0ZXIuaXNMZWdhbCgpPC9jb2RlPiBjYW4gYmUgdXNlZCB0byBjaGVjayAKKyAqICAgZm9yIHZhbGlkaXR5IGlmIGRlc2lyZWQuCisgKiAgIDwvbGk+CisgKiAgIDxsaT4KKyAqICAgPHN0cm9uZz5Vbm1hdGNoZWQgU3Vycm9nYXRlczo8L3N0cm9uZz4gSWYgdGhlIHN0cmluZyBjb250YWlucyB1bm1hdGNoZWQgCisgKiAgIHN1cnJvZ2F0ZXMsIHRoZW4gdGhlc2UgYXJlIGNvdW50ZWQgYXMgb25lIFVURi0zMiB2YWx1ZS4gVGhpcyBtYXRjaGVzIAorICogICB0aGVpciBpdGVyYXRpb24gYmVoYXZpb3IsIHdoaWNoIGlzIHZpdGFsLiBJdCBhbHNvIG1hdGNoZXMgY29tbW9uIGRpc3BsYXkgCisgKiAgIHByYWN0aWNlIGFzIG1pc3NpbmcgZ2x5cGhzIChzZWUgdGhlIFVuaWNvZGUgU3RhbmRhcmQgU2VjdGlvbiA1LjQsIDUuNSkuCisgKiAgIDwvbGk+CisgKiAgIDxsaT4KKyAqICAgICA8c3Ryb25nPk9wdGltaXphdGlvbjo8L3N0cm9uZz4gVGhlIG1ldGhvZCBpbXBsZW1lbnRhdGlvbnMgbWF5IG5lZWQgCisgKiAgICAgb3B0aW1pemF0aW9uIGlmIHRoZSBjb21waWxlciBkb2Vzbid0IGZvbGQgc3RhdGljIGZpbmFsIG1ldGhvZHMuIFNpbmNlIAorICogICAgIHN1cnJvZ2F0ZSBwYWlycyB3aWxsIGZvcm0gYW4gZXhjZWVkaW5nIHNtYWxsIHBlcmNlbnRhZ2Ugb2YgYWxsIHRoZSB0ZXh0IAorICogICAgIGluIHRoZSB3b3JsZCwgdGhlIHNpbmdsZXRvbiBjYXNlIHNob3VsZCBhbHdheXMgYmUgb3B0aW1pemVkIGZvci4KKyAqICAgPC9saT4KKyAqIDwvdWw+CisgKiBAYXV0aG9yIE1hcmsgRGF2aXMsIHdpdGggaGVscCBmcm9tIE1hcmt1cyBTY2hlcmVyCisgKiBAc3RhYmxlIElDVSAyLjEKKyAqLworCitwdWJsaWMgZmluYWwgY2xhc3MgVVRGMTYKK3sKKyAgICAvLyBwdWJsaWMgdmFyaWFibGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgCisgICAgLyoqCisgICAgICogVmFsdWUgcmV0dXJuZWQgaW4gPGNvZGU+PGEgaHJlZj0iI2JvdW5kcyhqYXZhLmxhbmcuU3RyaW5nLCBpbnQpIj4KKyAgICAgKiBib3VuZHMoKTwvYT48L2NvZGU+LgorICAgICAqIFRoZXNlIHZhbHVlcyBhcmUgY2hvc2VuIHNwZWNpZmljYWxseSBzbyB0aGF0IGl0IGFjdHVhbGx5IHJlcHJlc2VudHMgIAorICAgICAqIHRoZSBwb3NpdGlvbiBvZiB0aGUgY2hhcmFjdGVyIAorICAgICAqIFtvZmZzZXQxNiAtICh2YWx1ZSA+PiAyKSwgb2Zmc2V0MTYgKyAodmFsdWUgJiAzKV0KKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTSU5HTEVfQ0hBUl9CT1VOREFSWSA9IDEsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIExFQURfU1VSUk9HQVRFX0JPVU5EQVJZID0gMiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJBSUxfU1VSUk9HQVRFX0JPVU5EQVJZID0gNTsKKyAgICAvKiogCisgICAgICogVGhlIGxvd2VzdCBVbmljb2RlIGNvZGUgcG9pbnQgdmFsdWUuCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ09ERVBPSU5UX01JTl9WQUxVRSA9IDA7CisgICAgLyoqCisgICAgICogVGhlIGhpZ2hlc3QgVW5pY29kZSBjb2RlIHBvaW50IHZhbHVlIChzY2FsYXIgdmFsdWUpIGFjY29yZGluZyB0byB0aGUgCisgICAgICogVW5pY29kZSBTdGFuZGFyZC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDT0RFUE9JTlRfTUFYX1ZBTFVFID0gMHgxMGZmZmY7IAorICAgIC8qKgorICAgICAqIFRoZSBtaW5pbXVtIHZhbHVlIGZvciBTdXBwbGVtZW50YXJ5IGNvZGUgcG9pbnRzCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1VQUExFTUVOVEFSWV9NSU5fVkFMVUUgID0gMHgxMDAwMDsgIAorICAgIC8qKgorICAgICAqIExlYWQgc3Vycm9nYXRlIG1pbmltdW0gdmFsdWUKKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBMRUFEX1NVUlJPR0FURV9NSU5fVkFMVUUgPSAweEQ4MDA7CisJLyoqCisgICAgICogVHJhaWwgc3Vycm9nYXRlIG1pbmltdW0gdmFsdWUKKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBUUkFJTF9TVVJST0dBVEVfTUlOX1ZBTFVFID0gMHhEQzAwOyAKKyAgICAvKioKKyAgICAgKiBMZWFkIHN1cnJvZ2F0ZSBtYXhpbXVtIHZhbHVlCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTEVBRF9TVVJST0dBVEVfTUFYX1ZBTFVFID0gMHhEQkZGOworCS8qKgorICAgICAqIFRyYWlsIHN1cnJvZ2F0ZSBtYXhpbXVtIHZhbHVlCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVFJBSUxfU1VSUk9HQVRFX01BWF9WQUxVRSA9IDB4REZGRjsKKyAgICAvKioKKyAgICAgKiBTdXJyb2dhdGUgbWluaW11bSB2YWx1ZQorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNVUlJPR0FURV9NSU5fVkFMVUUgPSBMRUFEX1NVUlJPR0FURV9NSU5fVkFMVUU7CisgICAgLyoqCisgICAgICogTWF4aW11bSBzdXJyb2dhdGUgdmFsdWUKKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTVVJST0dBVEVfTUFYX1ZBTFVFID0gVFJBSUxfU1VSUk9HQVRFX01BWF9WQUxVRTsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAvLyBjb25zdHJ1Y3RvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLy8vQ0xPVkVSOk9GRgorICAgIC8qKgorICAgICAqIFByZXZlbnQgaW5zdGFuY2UgZnJvbSBiZWluZyBjcmVhdGVkLgorICAgICAqLworICAgIHByaXZhdGUgVVRGMTYoKSAKKyAgICB7CisgICAgfQorICAgIC8vL0NMT1ZFUjpPTgorICAgIC8vIHB1YmxpYyBtZXRob2QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAKKyAgICAvKioKKyAgICAgKiBFeHRyYWN0IGEgc2luZ2xlIFVURi0zMiB2YWx1ZSBmcm9tIGEgc3RyaW5nLgorICAgICAqIFVzZWQgd2hlbiBpdGVyYXRpbmcgZm9yd2FyZHMgb3IgYmFja3dhcmRzICh3aXRoIAorICAgICAqIDxjb2RlPlVURjE2LmdldENoYXJDb3VudCgpPC9jb2RlPiwgYXMgd2VsbCBhcyByYW5kb20gYWNjZXNzLiBJZiBhIAorICAgICAqIHZhbGlkaXR5IGNoZWNrIGlzIHJlcXVpcmVkLCB1c2UgCisgICAgICogPGNvZGU+PGEgaHJlZj0iLi4vVUNoYXJhY3Rlci5odG1sI2lzTGVnYWwoY2hhcikiPgorICAgICAqIFVDaGFyYWN0ZXIuaXNMZWdhbCgpPC9hPjwvY29kZT4gb24gdGhlIHJldHVybiB2YWx1ZS4KKyAgICAgKiBJZiB0aGUgY2hhciByZXRyaWV2ZWQgaXMgcGFydCBvZiBhIHN1cnJvZ2F0ZSBwYWlyLCBpdHMgc3VwcGxlbWVudGFyeSAKKyAgICAgKiBjaGFyYWN0ZXIgd2lsbCBiZSByZXR1cm5lZC4gSWYgYSBjb21wbGV0ZSBzdXBwbGVtZW50YXJ5IGNoYXJhY3RlciBpcyAKKyAgICAgKiBub3QgZm91bmQgdGhlIGluY29tcGxldGUgY2hhcmFjdGVyIHdpbGwgYmUgcmV0dXJuZWQKKyAgICAgKiBAcGFyYW0gc291cmNlIGFycmF5IG9mIFVURi0xNiBjaGFycworICAgICAqIEBwYXJhbSBvZmZzZXQxNiBVVEYtMTYgb2Zmc2V0IHRvIHRoZSBzdGFydCBvZiB0aGUgY2hhcmFjdGVyLgorICAgICAqIEByZXR1cm4gVVRGLTMyIHZhbHVlIGZvciB0aGUgVVRGLTMyIHZhbHVlIHRoYXQgY29udGFpbnMgdGhlIGNoYXIgYXQgCisgICAgICogICAgICAgICBvZmZzZXQxNi4gVGhlIGJvdW5kYXJpZXMgb2YgdGhhdCBjb2RlcG9pbnQgYXJlIHRoZSBzYW1lIGFzIGluIAorICAgICAqICAgICAgICAgPGNvZGU+Ym91bmRzMzIoKTwvY29kZT4uIAorICAgICAqIEBleGNlcHRpb24gSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiB0aHJvd24gaWYgb2Zmc2V0MTYgaXMgb3V0IG9mIAorICAgICAqICAgICAgICAgICAgYm91bmRzLgorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgaW50IGNoYXJBdChTdHJpbmcgc291cmNlLCBpbnQgb2Zmc2V0MTYpIAorICAgIHsgICAgICAgICAgICAgCisgICAgICAgIGlmIChvZmZzZXQxNiA8IDAgfHwgb2Zmc2V0MTYgPj0gc291cmNlLmxlbmd0aCgpKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgU3RyaW5nSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbihvZmZzZXQxNik7CisgICAgICAgIH0KKyAgICAgICAgICAKKyAgICAgICAgY2hhciBzaW5nbGUgPSBzb3VyY2UuY2hhckF0KG9mZnNldDE2KTsKKyAgICAgICAgaWYgKHNpbmdsZSA8IExFQURfU1VSUk9HQVRFX01JTl9WQUxVRSB8fCAKKyAgICAgICAgICAgIHNpbmdsZSA+IFRSQUlMX1NVUlJPR0FURV9NQVhfVkFMVUUpIHsKKyAgICAgICAgICAgIHJldHVybiBzaW5nbGU7CisgICAgICAgIH0KKworICAgICAgICAvLyBDb252ZXJ0IHRoZSBVVEYtMTYgc3Vycm9nYXRlIHBhaXIgaWYgbmVjZXNzYXJ5LgorICAgICAgICAvLyBGb3Igc2ltcGxpY2l0eSBpbiB1c2FnZSwgYW5kIGJlY2F1c2UgdGhlIGZyZXF1ZW5jeSBvZiBwYWlycyBpcyAKKyAgICAgICAgLy8gbG93LCBsb29rIGJvdGggZGlyZWN0aW9ucy4KKyAgICAgICAgICAgICAgICAKKwkgICAgaWYgKHNpbmdsZSA8PSBMRUFEX1NVUlJPR0FURV9NQVhfVkFMVUUpIHsKKwkgICAgICAgICsrIG9mZnNldDE2OworCSAgICAgICAgaWYgKHNvdXJjZS5sZW5ndGgoKSAhPSBvZmZzZXQxNikgeworICAgIAkgICAgICAgIGNoYXIgdHJhaWwgPSBzb3VyY2UuY2hhckF0KG9mZnNldDE2KTsKKwkgICAgICAgICAgICBpZiAodHJhaWwgPj0gVFJBSUxfU1VSUk9HQVRFX01JTl9WQUxVRSAmJgorCSAgICAgICAgICAgICAgICB0cmFpbCA8PSBUUkFJTF9TVVJST0dBVEVfTUFYX1ZBTFVFKSB7CisJICAgICAgICAgICAgICAgIHJldHVybiBVQ2hhcmFjdGVyUHJvcGVydHkuZ2V0UmF3U3VwcGxlbWVudGFyeShzaW5nbGUsIAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaWwpOworCSAgICAgICAgICAgIH0KKwkgICAgICAgIH0KKwkgICAgfSAKKwkgICAgZWxzZSAKKwkgICAgeyAKKwkgICAgICAgIC0tIG9mZnNldDE2OworCSAgICAgICAgaWYgKG9mZnNldDE2ID49IDApIHsKKwkgICAgICAgIAkvLyBzaW5nbGUgaXMgYSB0cmFpbCBzdXJyb2dhdGUgc28KKwkgICAgICAgIAljaGFyIGxlYWQgPSBzb3VyY2UuY2hhckF0KG9mZnNldDE2KTsKKwkgICAgICAgIAlpZiAobGVhZCA+PSBMRUFEX1NVUlJPR0FURV9NSU5fVkFMVUUgJiYKKwkgICAgICAgIAkgICAgbGVhZCA8PSBMRUFEX1NVUlJPR0FURV9NQVhfVkFMVUUpIHsKKwkgICAgICAgICAJICAgcmV0dXJuIFVDaGFyYWN0ZXJQcm9wZXJ0eS5nZXRSYXdTdXBwbGVtZW50YXJ5KGxlYWQsIAorCSAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlKTsKKwkgICAgICAgIAl9CisJICAgICAgICB9CisJICAgIH0gCisJICAgIHJldHVybiBzaW5nbGU7IC8vIHJldHVybiB1bm1hdGNoZWQgc3Vycm9nYXRlCisgICAgfQorICAgICAgCisgICAgLyoqCisgICAgICogRXh0cmFjdCBhIHNpbmdsZSBVVEYtMzIgdmFsdWUgZnJvbSBhIHN0cmluZy4KKyAgICAgKiBVc2VkIHdoZW4gaXRlcmF0aW5nIGZvcndhcmRzIG9yIGJhY2t3YXJkcyAod2l0aAorICAgICAqIDxjb2RlPlVURjE2LmdldENoYXJDb3VudCgpPC9jb2RlPiwgYXMgd2VsbCBhcyByYW5kb20gYWNjZXNzLiBJZiBhIAorICAgICAqIHZhbGlkaXR5IGNoZWNrIGlzIHJlcXVpcmVkLCB1c2UgCisgICAgICogPGNvZGU+PGEgaHJlZj0iLi4vVUNoYXJhY3Rlci5odG1sI2lzTGVnYWwoY2hhcikiPlVDaGFyYWN0ZXIuaXNMZWdhbCgpCisgICAgICogPC9hPjwvY29kZT4gb24gdGhlIHJldHVybiB2YWx1ZS4KKyAgICAgKiBJZiB0aGUgY2hhciByZXRyaWV2ZWQgaXMgcGFydCBvZiBhIHN1cnJvZ2F0ZSBwYWlyLCBpdHMgc3VwcGxlbWVudGFyeQorICAgICAqIGNoYXJhY3RlciB3aWxsIGJlIHJldHVybmVkLiBJZiBhIGNvbXBsZXRlIHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVyIGlzIAorICAgICAqIG5vdCBmb3VuZCB0aGUgaW5jb21wbGV0ZSBjaGFyYWN0ZXIgd2lsbCBiZSByZXR1cm5lZAorICAgICAqIEBwYXJhbSBzb3VyY2UgVVRGLTE2IGNoYXJzIHN0cmluZyBidWZmZXIKKyAgICAgKiBAcGFyYW0gb2Zmc2V0MTYgVVRGLTE2IG9mZnNldCB0byB0aGUgc3RhcnQgb2YgdGhlIGNoYXJhY3Rlci4KKyAgICAgKiBAcmV0dXJuIFVURi0zMiB2YWx1ZSBmb3IgdGhlIFVURi0zMiB2YWx1ZSB0aGF0IGNvbnRhaW5zIHRoZSBjaGFyIGF0CisgICAgICogICAgICAgICBvZmZzZXQxNi4gVGhlIGJvdW5kYXJpZXMgb2YgdGhhdCBjb2RlcG9pbnQgYXJlIHRoZSBzYW1lIGFzIGluCisgICAgICogICAgICAgICA8Y29kZT5ib3VuZHMzMigpPC9jb2RlPi4KKyAgICAgKiBAZXhjZXB0aW9uIEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gdGhyb3duIGlmIG9mZnNldDE2IGlzIG91dCBvZiAKKyAgICAgKiAgICAgICAgICAgIGJvdW5kcy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludCBjaGFyQXQoU3RyaW5nQnVmZmVyIHNvdXJjZSwgaW50IG9mZnNldDE2KQorICAgIHsKKyAgICAgICAgaWYgKG9mZnNldDE2IDwgMCB8fCBvZmZzZXQxNiA+PSBzb3VyY2UubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBTdHJpbmdJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uKG9mZnNldDE2KTsKKyAgICAgICAgfQorICAgICAgICAgIAorICAgICAgICBjaGFyIHNpbmdsZSA9IHNvdXJjZS5jaGFyQXQob2Zmc2V0MTYpOworICAgICAgICBpZiAoIWlzU3Vycm9nYXRlKHNpbmdsZSkpIHsKKyAgICAgICAgICAgIHJldHVybiBzaW5nbGU7CisgICAgICAgIH0KKworICAgICAgICAvLyBDb252ZXJ0IHRoZSBVVEYtMTYgc3Vycm9nYXRlIHBhaXIgaWYgbmVjZXNzYXJ5LgorICAgICAgICAvLyBGb3Igc2ltcGxpY2l0eSBpbiB1c2FnZSwgYW5kIGJlY2F1c2UgdGhlIGZyZXF1ZW5jeSBvZiBwYWlycyBpcyAKKyAgICAgICAgLy8gbG93LCBsb29rIGJvdGggZGlyZWN0aW9ucy4KKyAgICAgICAgICAgICAgICAKKwkgICAgaWYgKHNpbmdsZSA8PSBMRUFEX1NVUlJPR0FURV9NQVhfVkFMVUUpIAorCSAgICB7CisJICAgICAgICArKyBvZmZzZXQxNjsKKwkgICAgICAgIGlmIChzb3VyY2UubGVuZ3RoKCkgIT0gb2Zmc2V0MTYpCisJICAgICAgICB7CisJICAgICAgICBjaGFyIHRyYWlsID0gc291cmNlLmNoYXJBdChvZmZzZXQxNik7CisJICAgICAgICBpZiAoaXNUcmFpbFN1cnJvZ2F0ZSh0cmFpbCkpCisJICAgICAgICAgICAgcmV0dXJuIFVDaGFyYWN0ZXJQcm9wZXJ0eS5nZXRSYXdTdXBwbGVtZW50YXJ5KHNpbmdsZSwgdHJhaWwpOworCSAgICAgICAgfQorCSAgICB9IAorCSAgICBlbHNlIAorCSAgICB7IAorCSAgICAgICAgLS0gb2Zmc2V0MTY7CisJICAgICAgICBpZiAob2Zmc2V0MTYgPj0gMCkKKwkgICAgICAgIHsKKwkgICAgICAgIC8vIHNpbmdsZSBpcyBhIHRyYWlsIHN1cnJvZ2F0ZSBzbworCSAgICAgICAgY2hhciBsZWFkID0gc291cmNlLmNoYXJBdChvZmZzZXQxNik7CisJICAgICAgICBpZiAoaXNMZWFkU3Vycm9nYXRlKGxlYWQpKSB7CisJICAgICAgICAgICAgcmV0dXJuIFVDaGFyYWN0ZXJQcm9wZXJ0eS5nZXRSYXdTdXBwbGVtZW50YXJ5KGxlYWQsIHNpbmdsZSk7CisJICAgICAgICB9CisJICAgICAgICB9CisJICAgIH0gCisJICAgIHJldHVybiBzaW5nbGU7IC8vIHJldHVybiB1bm1hdGNoZWQgc3Vycm9nYXRlCisgICAgfQorICAgICAgCisgICAgLyoqCisgICAgICogRXh0cmFjdCBhIHNpbmdsZSBVVEYtMzIgdmFsdWUgZnJvbSBhIHN1YnN0cmluZy4KKyAgICAgKiBVc2VkIHdoZW4gaXRlcmF0aW5nIGZvcndhcmRzIG9yIGJhY2t3YXJkcyAod2l0aAorICAgICAqIDxjb2RlPlVURjE2LmdldENoYXJDb3VudCgpPC9jb2RlPiwgYXMgd2VsbCBhcyByYW5kb20gYWNjZXNzLiBJZiBhCisgICAgICogdmFsaWRpdHkgY2hlY2sgaXMgcmVxdWlyZWQsIHVzZSAKKyAgICAgKiA8Y29kZT48YSBocmVmPSIuLi9VQ2hhcmFjdGVyLmh0bWwjaXNMZWdhbChjaGFyKSI+VUNoYXJhY3Rlci5pc0xlZ2FsKCkKKyAgICAgKiA8L2E+PC9jb2RlPiBvbiB0aGUgcmV0dXJuIHZhbHVlLgorICAgICAqIElmIHRoZSBjaGFyIHJldHJpZXZlZCBpcyBwYXJ0IG9mIGEgc3Vycm9nYXRlIHBhaXIsIGl0cyBzdXBwbGVtZW50YXJ5CisgICAgICogY2hhcmFjdGVyIHdpbGwgYmUgcmV0dXJuZWQuIElmIGEgY29tcGxldGUgc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXIgaXMgCisgICAgICogbm90IGZvdW5kIHRoZSBpbmNvbXBsZXRlIGNoYXJhY3RlciB3aWxsIGJlIHJldHVybmVkCisgICAgICogQHBhcmFtIHNvdXJjZSBhcnJheSBvZiBVVEYtMTYgY2hhcnMKKyAgICAgKiBAcGFyYW0gc3RhcnQgb2Zmc2V0IHRvIHN1YnN0cmluZyBpbiB0aGUgc291cmNlIGFycmF5IGZvciBhbmFseXppbmcKKyAgICAgKiBAcGFyYW0gbGltaXQgb2Zmc2V0IHRvIHN1YnN0cmluZyBpbiB0aGUgc291cmNlIGFycmF5IGZvciBhbmFseXppbmcKKyAgICAgKiBAcGFyYW0gb2Zmc2V0MTYgVVRGLTE2IG9mZnNldCByZWxhdGl2ZSB0byBzdGFydAorICAgICAqIEByZXR1cm4gVVRGLTMyIHZhbHVlIGZvciB0aGUgVVRGLTMyIHZhbHVlIHRoYXQgY29udGFpbnMgdGhlIGNoYXIgYXQKKyAgICAgKiAgICAgICAgIG9mZnNldDE2LiBUaGUgYm91bmRhcmllcyBvZiB0aGF0IGNvZGVwb2ludCBhcmUgdGhlIHNhbWUgYXMgaW4KKyAgICAgKiAgICAgICAgIDxjb2RlPmJvdW5kczMyKCk8L2NvZGU+LgorICAgICAqIEBleGNlcHRpb24gSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiB0aHJvd24gaWYgb2Zmc2V0MTYgaXMgbm90IHdpdGhpbiAKKyAgICAgKiAgICAgICAgICAgIHRoZSByYW5nZSBvZiBzdGFydCBhbmQgbGltaXQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnQgY2hhckF0KGNoYXIgc291cmNlW10sIGludCBzdGFydCwgaW50IGxpbWl0LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9mZnNldDE2KQorICAgIHsKKyAgICAgICAgb2Zmc2V0MTYgKz0gc3RhcnQ7CisgICAgICAgIGlmIChvZmZzZXQxNiA8IHN0YXJ0IHx8IG9mZnNldDE2ID49IGxpbWl0KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uKG9mZnNldDE2KTsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNoYXIgc2luZ2xlID0gc291cmNlW29mZnNldDE2XTsKKyAgICAgICAgaWYgKCFpc1N1cnJvZ2F0ZShzaW5nbGUpKSB7CisgICAgICAgICAgICByZXR1cm4gc2luZ2xlOworICAgICAgICB9CisKKyAgICAgICAgLy8gQ29udmVydCB0aGUgVVRGLTE2IHN1cnJvZ2F0ZSBwYWlyIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgLy8gRm9yIHNpbXBsaWNpdHkgaW4gdXNhZ2UsIGFuZCBiZWNhdXNlIHRoZSBmcmVxdWVuY3kgb2YgcGFpcnMgaXMgCisgICAgICAgIC8vIGxvdywgbG9vayBib3RoIGRpcmVjdGlvbnMuICAgICAgCisJICAgIGlmIChzaW5nbGUgPD0gTEVBRF9TVVJST0dBVEVfTUFYX1ZBTFVFKSB7CisJICAgICAgICBvZmZzZXQxNiArKzsKKwkgICAgICAgIGlmIChvZmZzZXQxNiA+PSBsaW1pdCkgeworCSAgICAgICAgICAgIHJldHVybiBzaW5nbGU7CisJICAgICAgICB9CisJICAgICAgICBjaGFyIHRyYWlsID0gc291cmNlW29mZnNldDE2XTsKKwkgICAgICAgIGlmIChpc1RyYWlsU3Vycm9nYXRlKHRyYWlsKSkgeworCSAgICAgICAgICAgIHJldHVybiBVQ2hhcmFjdGVyUHJvcGVydHkuZ2V0UmF3U3VwcGxlbWVudGFyeShzaW5nbGUsIHRyYWlsKTsKKwkgICAgICAgIH0KKyAgICAgICAgfSAKKyAgICAgICAgZWxzZSB7IC8vIGlzVHJhaWxTdXJyb2dhdGUoc2luZ2xlKSwgc28KKyAgICAgICAgICAgIGlmIChvZmZzZXQxNiA9PSBzdGFydCkgeworICAgICAgICAgICAgICAgIHJldHVybiBzaW5nbGU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBvZmZzZXQxNiAtLTsKKwkgICAgICAgIGNoYXIgbGVhZCA9IHNvdXJjZVtvZmZzZXQxNl07CisJICAgICAgICBpZiAoaXNMZWFkU3Vycm9nYXRlKGxlYWQpKQorCSAgICAgICAgICAgIHJldHVybiBVQ2hhcmFjdGVyUHJvcGVydHkuZ2V0UmF3U3VwcGxlbWVudGFyeShsZWFkLCBzaW5nbGUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBzaW5nbGU7IC8vIHJldHVybiB1bm1hdGNoZWQgc3Vycm9nYXRlCisgICAgfQorICAgICAgCisgICAgLyoqCisgICAgICogRXh0cmFjdCBhIHNpbmdsZSBVVEYtMzIgdmFsdWUgZnJvbSBhIHN0cmluZy4KKyAgICAgKiBVc2VkIHdoZW4gaXRlcmF0aW5nIGZvcndhcmRzIG9yIGJhY2t3YXJkcyAod2l0aAorICAgICAqIDxjb2RlPlVURjE2LmdldENoYXJDb3VudCgpPC9jb2RlPiwgYXMgd2VsbCBhcyByYW5kb20gYWNjZXNzLiBJZiBhIAorICAgICAqIHZhbGlkaXR5IGNoZWNrIGlzIHJlcXVpcmVkLCB1c2UgCisgICAgICogPGNvZGU+PGEgaHJlZj0iLi4vVUNoYXJhY3Rlci5odG1sI2lzTGVnYWwoY2hhcikiPlVDaGFyYWN0ZXIuaXNMZWdhbCgpCisgICAgICogPC9hPjwvY29kZT4gb24gdGhlIHJldHVybiB2YWx1ZS4KKyAgICAgKiBJZiB0aGUgY2hhciByZXRyaWV2ZWQgaXMgcGFydCBvZiBhIHN1cnJvZ2F0ZSBwYWlyLCBpdHMgc3VwcGxlbWVudGFyeQorICAgICAqIGNoYXJhY3RlciB3aWxsIGJlIHJldHVybmVkLiBJZiBhIGNvbXBsZXRlIHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVyIGlzIAorICAgICAqIG5vdCBmb3VuZCB0aGUgaW5jb21wbGV0ZSBjaGFyYWN0ZXIgd2lsbCBiZSByZXR1cm5lZAorICAgICAqIEBwYXJhbSBzb3VyY2UgVVRGLTE2IGNoYXJzIHN0cmluZyBidWZmZXIKKyAgICAgKiBAcGFyYW0gb2Zmc2V0MTYgVVRGLTE2IG9mZnNldCB0byB0aGUgc3RhcnQgb2YgdGhlIGNoYXJhY3Rlci4KKyAgICAgKiBAcmV0dXJuIFVURi0zMiB2YWx1ZSBmb3IgdGhlIFVURi0zMiB2YWx1ZSB0aGF0IGNvbnRhaW5zIHRoZSBjaGFyIGF0CisgICAgICogICAgICAgICBvZmZzZXQxNi4gVGhlIGJvdW5kYXJpZXMgb2YgdGhhdCBjb2RlcG9pbnQgYXJlIHRoZSBzYW1lIGFzIGluCisgICAgICogICAgICAgICA8Y29kZT5ib3VuZHMzMigpPC9jb2RlPi4KKyAgICAgKiBAZXhjZXB0aW9uIEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gdGhyb3duIGlmIG9mZnNldDE2IGlzIG91dCBvZiAKKyAgICAgKiAgICAgICAgICAgIGJvdW5kcy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludCBjaGFyQXQoUmVwbGFjZWFibGUgc291cmNlLCBpbnQgb2Zmc2V0MTYpCisgICAgeworICAgICAgICBpZiAob2Zmc2V0MTYgPCAwIHx8IG9mZnNldDE2ID49IHNvdXJjZS5sZW5ndGgoKSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFN0cmluZ0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24ob2Zmc2V0MTYpOworICAgICAgICB9CisgICAgICAgICAgCisgICAgICAgIGNoYXIgc2luZ2xlID0gc291cmNlLmNoYXJBdChvZmZzZXQxNik7CisgICAgICAgIGlmICghaXNTdXJyb2dhdGUoc2luZ2xlKSkgeworICAgICAgICAgICAgcmV0dXJuIHNpbmdsZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIENvbnZlcnQgdGhlIFVURi0xNiBzdXJyb2dhdGUgcGFpciBpZiBuZWNlc3NhcnkuCisgICAgICAgIC8vIEZvciBzaW1wbGljaXR5IGluIHVzYWdlLCBhbmQgYmVjYXVzZSB0aGUgZnJlcXVlbmN5IG9mIHBhaXJzIGlzIAorICAgICAgICAvLyBsb3csIGxvb2sgYm90aCBkaXJlY3Rpb25zLgorICAgICAgICAgICAgICAgIAorCSAgICBpZiAoc2luZ2xlIDw9IExFQURfU1VSUk9HQVRFX01BWF9WQUxVRSkgCisJICAgIHsKKwkgICAgICAgICsrIG9mZnNldDE2OworCSAgICAgICAgaWYgKHNvdXJjZS5sZW5ndGgoKSAhPSBvZmZzZXQxNikKKwkgICAgICAgIHsKKwkgICAgICAgIGNoYXIgdHJhaWwgPSBzb3VyY2UuY2hhckF0KG9mZnNldDE2KTsKKwkgICAgICAgIGlmIChpc1RyYWlsU3Vycm9nYXRlKHRyYWlsKSkKKwkgICAgICAgICAgICByZXR1cm4gVUNoYXJhY3RlclByb3BlcnR5LmdldFJhd1N1cHBsZW1lbnRhcnkoc2luZ2xlLCB0cmFpbCk7CisJICAgICAgICB9CisJICAgIH0gCisJICAgIGVsc2UgCisJICAgIHsgCisJICAgICAgICAtLSBvZmZzZXQxNjsKKwkgICAgICAgIGlmIChvZmZzZXQxNiA+PSAwKQorCSAgICAgICAgeworCSAgICAgICAgLy8gc2luZ2xlIGlzIGEgdHJhaWwgc3Vycm9nYXRlIHNvCisJICAgICAgICBjaGFyIGxlYWQgPSBzb3VyY2UuY2hhckF0KG9mZnNldDE2KTsKKwkgICAgICAgIGlmIChpc0xlYWRTdXJyb2dhdGUobGVhZCkpIHsKKwkgICAgICAgICAgICByZXR1cm4gVUNoYXJhY3RlclByb3BlcnR5LmdldFJhd1N1cHBsZW1lbnRhcnkobGVhZCwgc2luZ2xlKTsKKwkgICAgICAgIH0KKwkgICAgICAgIH0KKwkgICAgfSAKKwkgICAgcmV0dXJuIHNpbmdsZTsgLy8gcmV0dXJuIHVubWF0Y2hlZCBzdXJyb2dhdGUKKyAgICB9CisgICAgICAKKyAgICAvKioKKyAgICAgKiBEZXRlcm1pbmVzIGhvdyBtYW55IGNoYXJzIHRoaXMgY2hhcjMyIHJlcXVpcmVzLgorICAgICAqIElmIGEgdmFsaWRpdHkgY2hlY2sgaXMgcmVxdWlyZWQsIHVzZSA8Y29kZT4KKyAgICAgKiA8YSBocmVmPSIuLi9VQ2hhcmFjdGVyLmh0bWwjaXNMZWdhbChjaGFyKSI+aXNMZWdhbCgpPC9hPjwvY29kZT4gb24gCisgICAgICogY2hhcjMyIGJlZm9yZSBjYWxsaW5nLgorICAgICAqIEBwYXJhbSBjaCB0aGUgaW5wdXQgY29kZXBvaW50LgorICAgICAqIEByZXR1cm4gMiBpZiBpcyBpbiBzdXBwbGVtZW50YXJ5IHNwYWNlLCBvdGhlcndpc2UgMS4gCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnQgZ2V0Q2hhckNvdW50KGludCBjaGFyMzIpIAorICAgIHsKKyAgICAgICAgaWYgKGNoYXIzMiA8IFNVUFBMRU1FTlRBUllfTUlOX1ZBTFVFKSB7CisgICAgICAgIAlyZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMjsKKyAgICB9CisgICAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSB0eXBlIG9mIHRoZSBib3VuZGFyaWVzIGFyb3VuZCB0aGUgY2hhciBhdCBvZmZzZXQxNi4KKyAgICAgKiBVc2VkIGZvciByYW5kb20gYWNjZXNzLgorICAgICAqIEBwYXJhbSBzb3VyY2UgdGV4dCB0byBhbmFseXNlCisgICAgICogQHBhcmFtIG9mZnNldDE2IFVURi0xNiBvZmZzZXQKKyAgICAgKiBAcmV0dXJuIDx1bD4KKyAgICAgKiAgICAgICAgICAgPGxpPiBTSU5HTEVfQ0hBUl9CT1VOREFSWSA6IGEgc2luZ2xlIGNoYXI7IHRoZSBib3VuZHMgYXJlIAorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29mZnNldDE2LCBvZmZzZXQxNisxXQorICAgICAqICAgICAgICAgICA8bGk+IExFQURfU1VSUk9HQVRFX0JPVU5EQVJZIDogYSBzdXJyb2dhdGUgcGFpciBzdGFydGluZyBhdCAKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDE2OyAKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBib3VuZHMgYXJlIAorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29mZnNldDE2LCBvZmZzZXQxNiArIDJdCisgICAgICogICAgICAgICAgIDxsaT4gVFJBSUxfU1VSUk9HQVRFX0JPVU5EQVJZIDogYSBzdXJyb2dhdGUgcGFpciBzdGFydGluZyBhdCAKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQxNiAtIDE7IHRoZSBib3VuZHMgYXJlIAorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvZmZzZXQxNiAtIDEsIG9mZnNldDE2ICsgMV0KKyAgICAgKiAgICAgICAgIDwvdWw+CisgICAgICogICAgICAgICBGb3IgYml0LXR3aWRkbGVycywgdGhlIHJldHVybiB2YWx1ZXMgZm9yIHRoZXNlIGFyZSBjaG9zZW4gc28gCisgICAgICogICAgICAgICB0aGF0IHRoZSBib3VuZGFyaWVzIGNhbiBiZSBnb3R0ZW4gYnk6CisgICAgICogICAgICAgICBbb2Zmc2V0MTYgLSAodmFsdWUgPj4gMiksIG9mZnNldDE2ICsgKHZhbHVlICYgMyldLgorICAgICAqIEBleGNlcHRpb24gSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiBpZiBvZmZzZXQxNiBpcyBvdXQgb2YgYm91bmRzLgorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgaW50IGJvdW5kcyhTdHJpbmcgc291cmNlLCBpbnQgb2Zmc2V0MTYpIAorICAgIHsKKyAgICAgICAgY2hhciBjaCA9IHNvdXJjZS5jaGFyQXQob2Zmc2V0MTYpOworICAgICAgICBpZiAoaXNTdXJyb2dhdGUoY2gpKSB7CisgICAgICAgICAgICBpZiAoaXNMZWFkU3Vycm9nYXRlKGNoKSkgCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKCsrIG9mZnNldDE2IDwgc291cmNlLmxlbmd0aCgpICYmIAorICAgICAgICAgICAgICAgICAgICBpc1RyYWlsU3Vycm9nYXRlKHNvdXJjZS5jaGFyQXQob2Zmc2V0MTYpKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTEVBRF9TVVJST0dBVEVfQk9VTkRBUlk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSAKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIC8vIGlzVHJhaWxTdXJyb2dhdGUoY2gpLCBzbworICAgICAgICAgICAgICAgIC0tIG9mZnNldDE2OworICAgICAgICAgICAgICAgIGlmIChvZmZzZXQxNiA+PSAwICYmIGlzTGVhZFN1cnJvZ2F0ZShzb3VyY2UuY2hhckF0KG9mZnNldDE2KSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRSQUlMX1NVUlJPR0FURV9CT1VOREFSWTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFNJTkdMRV9DSEFSX0JPVU5EQVJZOworICAgIH0KKyAgICAgIAorICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIHR5cGUgb2YgdGhlIGJvdW5kYXJpZXMgYXJvdW5kIHRoZSBjaGFyIGF0IG9mZnNldDE2LiBVc2VkIAorICAgICAqIGZvciByYW5kb20gYWNjZXNzLgorICAgICAqIEBwYXJhbSBzb3VyY2Ugc3RyaW5nIGJ1ZmZlciB0byBhbmFseXNlCisgICAgICogQHBhcmFtIG9mZnNldDE2IFVURjE2IG9mZnNldAorICAgICAqIEByZXR1cm4KKyAgICAgKiAgICAgPHVsPgorICAgICAqICAgICA8bGk+IFNJTkdMRV9DSEFSX0JPVU5EQVJZIDogYSBzaW5nbGUgY2hhcjsgdGhlIGJvdW5kcyBhcmUKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29mZnNldDE2LCBvZmZzZXQxNiArIDFdCisgICAgICogICAgIDxsaT4gTEVBRF9TVVJST0dBVEVfQk9VTkRBUlkgOiBhIHN1cnJvZ2F0ZSBwYWlyIHN0YXJ0aW5nIGF0IAorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0MTY7IHRoZSBib3VuZHMgYXJlIAorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29mZnNldDE2LCBvZmZzZXQxNiArIDJdCisgICAgICogICAgIDxsaT4gVFJBSUxfU1VSUk9HQVRFX0JPVU5EQVJZIDogYSBzdXJyb2dhdGUgcGFpciBzdGFydGluZyBhdCAKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQxNiAtIDE7IHRoZSBib3VuZHMgYXJlIAorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvZmZzZXQxNiAtIDEsIG9mZnNldDE2ICsgMV0KKyAgICAgKiAgICAgPC91bD4KKyAgICAgKiBGb3IgYml0LXR3aWRkbGVycywgdGhlIHJldHVybiB2YWx1ZXMgZm9yIHRoZXNlIGFyZSBjaG9zZW4gc28gdGhhdCB0aGUgCisgICAgICogYm91bmRhcmllcyBjYW4gYmUgZ290dGVuIGJ5OiAKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgW29mZnNldDE2IC0gKHZhbHVlID4+IDIpLCBvZmZzZXQxNiArICh2YWx1ZSAmIDMpXS4KKyAgICAgKiBAZXhjZXB0aW9uIEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gaWYgb2Zmc2V0MTYgaXMgb3V0IG9mIGJvdW5kcy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludCBib3VuZHMoU3RyaW5nQnVmZmVyIHNvdXJjZSwgaW50IG9mZnNldDE2KQorICAgIHsKKyAgICAgICAgY2hhciBjaCA9IHNvdXJjZS5jaGFyQXQob2Zmc2V0MTYpOworICAgICAgICBpZiAoaXNTdXJyb2dhdGUoY2gpKSB7CisgICAgICAgICAgICBpZiAoaXNMZWFkU3Vycm9nYXRlKGNoKSkgCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKCsrIG9mZnNldDE2IDwgc291cmNlLmxlbmd0aCgpICYmIAorICAgICAgICAgICAgICAgICAgICBpc1RyYWlsU3Vycm9nYXRlKHNvdXJjZS5jaGFyQXQob2Zmc2V0MTYpKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTEVBRF9TVVJST0dBVEVfQk9VTkRBUlk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSAKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIC8vIGlzVHJhaWxTdXJyb2dhdGUoY2gpLCBzbworICAgICAgICAgICAgICAgIC0tIG9mZnNldDE2OworICAgICAgICAgICAgICAgIGlmIChvZmZzZXQxNiA+PSAwICYmIAorICAgICAgICAgICAgICAgICAgICBpc0xlYWRTdXJyb2dhdGUoc291cmNlLmNoYXJBdChvZmZzZXQxNikpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBUUkFJTF9TVVJST0dBVEVfQk9VTkRBUlk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBTSU5HTEVfQ0hBUl9CT1VOREFSWTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSB0eXBlIG9mIHRoZSBib3VuZGFyaWVzIGFyb3VuZCB0aGUgY2hhciBhdCBvZmZzZXQxNi4gVXNlZCAKKyAgICAgKiBmb3IgcmFuZG9tIGFjY2Vzcy4gTm90ZSB0aGF0IHRoZSBib3VuZGFyaWVzIGFyZSBkZXRlcm1pbmVkIHdpdGggcmVzcGVjdCAKKyAgICAgKiB0byB0aGUgc3ViYXJyYXksIGhlbmNlIHRoZSBjaGFyIGFycmF5IHsweEQ4MDAsIDB4REMwMH0gaGFzIHRoZSByZXN1bHQgCisgICAgICogU0lOR0xFX0NIQVJfQk9VTkRBUlkgZm9yIHN0YXJ0ID0gb2Zmc2V0MTYgPSAwIGFuZCBsaW1pdCA9IDEuCisgICAgICogQHBhcmFtIHNvdXJjZSBjaGFyIGFycmF5IHRvIGFuYWx5c2UKKyAgICAgKiBAcGFyYW0gc3RhcnQgb2Zmc2V0IHRvIHN1YnN0cmluZyBpbiB0aGUgc291cmNlIGFycmF5IGZvciBhbmFseXppbmcKKyAgICAgKiBAcGFyYW0gbGltaXQgb2Zmc2V0IHRvIHN1YnN0cmluZyBpbiB0aGUgc291cmNlIGFycmF5IGZvciBhbmFseXppbmcKKyAgICAgKiBAcGFyYW0gb2Zmc2V0MTYgVVRGMTYgb2Zmc2V0IHJlbGF0aXZlIHRvIHN0YXJ0CisgICAgICogQHJldHVybgorICAgICAqICAgICA8dWw+CisgICAgICogICAgICAgICA8bGk+IFNJTkdMRV9DSEFSX0JPVU5EQVJZIDogYSBzaW5nbGUgY2hhcjsgdGhlIGJvdW5kcyBhcmUKKyAgICAgKiAgICAgICAgIDxsaT4gTEVBRF9TVVJST0dBVEVfQk9VTkRBUlkgOiBhIHN1cnJvZ2F0ZSBwYWlyIHN0YXJ0aW5nIGF0CisgICAgICogICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDE2OyB0aGUgYm91bmRzIGFyZSBbb2Zmc2V0MTYsIG9mZnNldDE2ICsgMl0KKyAgICAgKiAgICAgICAgIDxsaT4gVFJBSUxfU1VSUk9HQVRFX0JPVU5EQVJZIDogYSBzdXJyb2dhdGUgcGFpciBzdGFydGluZyBhdAorICAgICAqICAgICAgICAgICAgICAgb2Zmc2V0MTYgLSAxOyB0aGUgYm91bmRzIGFyZSBbb2Zmc2V0MTYgLSAxLCBvZmZzZXQxNiArIDFdCisgICAgICogICAgIDwvdWw+CisgICAgICogRm9yIGJpdC10d2lkZGxlcnMsIHRoZSBib3VuZGFyeSB2YWx1ZXMgZm9yIHRoZXNlIGFyZSBjaG9zZW4gc28gdGhhdCB0aGUgCisgICAgICogYm91bmRhcmllcyBjYW4gYmUgZ290dGVuIGJ5OiBbb2Zmc2V0MTYgLSAoYm91bmR2YWx1ZSA+PiAyKSwgb2Zmc2V0MTYgCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAoYm91bmR2YWx1ZSAmIDMpXS4KKyAgICAgKiBAZXhjZXB0aW9uIEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gaWYgb2Zmc2V0MTYgaXMgbm90IHdpdGhpbiB0aGUgCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlIG9mIHN0YXJ0IGFuZCBsaW1pdC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludCBib3VuZHMoY2hhciBzb3VyY2VbXSwgaW50IHN0YXJ0LCBpbnQgbGltaXQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0MTYpCisgICAgeworICAgICAgICBvZmZzZXQxNiArPSBzdGFydDsKKyAgICAgICAgaWYgKG9mZnNldDE2IDwgc3RhcnQgfHwgb2Zmc2V0MTYgPj0gbGltaXQpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24ob2Zmc2V0MTYpOworICAgICAgICB9CisgICAgICAgIGNoYXIgY2ggPSBzb3VyY2Vbb2Zmc2V0MTZdOworICAgICAgICBpZiAoaXNTdXJyb2dhdGUoY2gpKSB7CisgICAgICAgICAgICBpZiAoaXNMZWFkU3Vycm9nYXRlKGNoKSkgeworICAgICAgICAgICAgICAgICsrIG9mZnNldDE2OworICAgICAgICAgICAgICAgIGlmIChvZmZzZXQxNiA8IGxpbWl0ICYmIGlzVHJhaWxTdXJyb2dhdGUoc291cmNlW29mZnNldDE2XSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIExFQURfU1VSUk9HQVRFX0JPVU5EQVJZOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gCisgICAgICAgICAgICBlbHNlIHsgLy8gaXNUcmFpbFN1cnJvZ2F0ZShjaCksIHNvCisgICAgICAgICAgICAgICAgLS0gb2Zmc2V0MTY7CisgICAgICAgICAgICAgICAgaWYgKG9mZnNldDE2ID49IHN0YXJ0ICYmIGlzTGVhZFN1cnJvZ2F0ZShzb3VyY2Vbb2Zmc2V0MTZdKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gVFJBSUxfU1VSUk9HQVRFX0JPVU5EQVJZOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gU0lOR0xFX0NIQVJfQk9VTkRBUlk7ICAgIAorICAgIH0KKworICAgIC8qKgorICAgICAqIERldGVybWluZXMgd2hldGhlciB0aGUgY29kZSB2YWx1ZSBpcyBhIHN1cnJvZ2F0ZS4KKyAgICAgKiBAcGFyYW0gY2ggdGhlIGlucHV0IGNoYXJhY3Rlci4KKyAgICAgKiBAcmV0dXJuIHRydWUgaWZmIHRoZSBpbnB1dCBjaGFyYWN0ZXIgaXMgYSBzdXJyb2dhdGUuCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzU3Vycm9nYXRlKGNoYXIgY2hhcjE2KSAKKyAgICB7CisgICAgICAgIHJldHVybiBMRUFEX1NVUlJPR0FURV9NSU5fVkFMVUUgPD0gY2hhcjE2ICYmIAorICAgICAgICAgICAgY2hhcjE2IDw9IFRSQUlMX1NVUlJPR0FURV9NQVhfVkFMVUU7CisgICAgfQorICAgICAgICAKKyAgICAvKioKKyAgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGNoYXJhY3RlciBpcyBhIHRyYWlsIHN1cnJvZ2F0ZS4KKyAgICAgKiBAcGFyYW0gY2hhcjE2IHRoZSBpbnB1dCBjaGFyYWN0ZXIuCisgICAgICogQHJldHVybiB0cnVlIGlmZiB0aGUgaW5wdXQgY2hhcmFjdGVyIGlzIGEgdHJhaWwgc3Vycm9nYXRlLgorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc1RyYWlsU3Vycm9nYXRlKGNoYXIgY2hhcjE2KSAKKyAgICB7CisgICAgICAgIHJldHVybiAoVFJBSUxfU1VSUk9HQVRFX01JTl9WQUxVRSA8PSBjaGFyMTYgJiYgCisgICAgICAgICAgICAgICAgY2hhcjE2IDw9IFRSQUlMX1NVUlJPR0FURV9NQVhfVkFMVUUpOworICAgIH0KKyAgICAgICAgCisgICAgLyoqCisgICAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBjaGFyYWN0ZXIgaXMgYSBsZWFkIHN1cnJvZ2F0ZS4KKyAgICAgKiBAcGFyYW0gY2hhcjE2IHRoZSBpbnB1dCBjaGFyYWN0ZXIuCisgICAgICogQHJldHVybiB0cnVlIGlmZiB0aGUgaW5wdXQgY2hhcmFjdGVyIGlzIGEgbGVhZCBzdXJyb2dhdGUKKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNMZWFkU3Vycm9nYXRlKGNoYXIgY2hhcjE2KSAKKyAgICB7CisgICAgICAgIHJldHVybiBMRUFEX1NVUlJPR0FURV9NSU5fVkFMVUUgPD0gY2hhcjE2ICYmIAorICAgICAgICAgICAgY2hhcjE2IDw9IExFQURfU1VSUk9HQVRFX01BWF9WQUxVRTsKKyAgICB9CisgICAgICAgICAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBsZWFkIHN1cnJvZ2F0ZS4KKyAgICAgKiBJZiBhIHZhbGlkaXR5IGNoZWNrIGlzIHJlcXVpcmVkLCB1c2UgCisgICAgICogPGNvZGU+PGEgaHJlZj0iLi4vVUNoYXJhY3Rlci5odG1sI2lzTGVnYWwoY2hhcikiPmlzTGVnYWwoKTwvYT48L2NvZGU+IAorICAgICAqIG9uIGNoYXIzMiBiZWZvcmUgY2FsbGluZy4KKyAgICAgKiBAcGFyYW0gY2hhcjMyIHRoZSBpbnB1dCBjaGFyYWN0ZXIuCisgICAgICogQHJldHVybiBsZWFkIHN1cnJvZ2F0ZSBpZiB0aGUgZ2V0Q2hhckNvdW50KGNoKSBpcyAyOyA8YnI+CisgICAgICogICAgICAgICBhbmQgMCBvdGhlcndpc2UgKG5vdGU6IDAgaXMgbm90IGEgdmFsaWQgbGVhZCBzdXJyb2dhdGUpLgorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgY2hhciBnZXRMZWFkU3Vycm9nYXRlKGludCBjaGFyMzIpIAorICAgIHsKKyAgICAgICAgaWYgKGNoYXIzMiA+PSBTVVBQTEVNRU5UQVJZX01JTl9WQUxVRSkgeworICAgICAgICAJcmV0dXJuIChjaGFyKShMRUFEX1NVUlJPR0FURV9PRkZTRVRfICsgCisgICAgICAgICAgICAgICAgICAgICAgKGNoYXIzMiA+PiBMRUFEX1NVUlJPR0FURV9TSElGVF8pKTsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICAgICAgCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgdHJhaWwgc3Vycm9nYXRlLgorICAgICAqIElmIGEgdmFsaWRpdHkgY2hlY2sgaXMgcmVxdWlyZWQsIHVzZSAKKyAgICAgKiA8Y29kZT48YSBocmVmPSIuLi9VQ2hhcmFjdGVyLmh0bWwjaXNMZWdhbChjaGFyKSI+aXNMZWdhbCgpPC9hPjwvY29kZT4gCisgICAgICogb24gY2hhcjMyIGJlZm9yZSBjYWxsaW5nLgorICAgICAqIEBwYXJhbSBjaGFyMzIgdGhlIGlucHV0IGNoYXJhY3Rlci4KKyAgICAgKiBAcmV0dXJuIHRoZSB0cmFpbCBzdXJyb2dhdGUgaWYgdGhlIGdldENoYXJDb3VudChjaCkgaXMgMjsgPGJyPm90aGVyd2lzZSAKKyAgICAgKiAgICAgICAgIHRoZSBjaGFyYWN0ZXIgaXRzZWxmCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBjaGFyIGdldFRyYWlsU3Vycm9nYXRlKGludCBjaGFyMzIpIAorICAgIHsKKyAgICAgICAgaWYgKGNoYXIzMiA+PSBTVVBQTEVNRU5UQVJZX01JTl9WQUxVRSkgeworICAgICAgICAJcmV0dXJuIChjaGFyKShUUkFJTF9TVVJST0dBVEVfTUlOX1ZBTFVFICsgCisgICAgICAgICAgICAgICAgICAgICAgKGNoYXIzMiAmIFRSQUlMX1NVUlJPR0FURV9NQVNLXykpOyAgICAgICAKKyAgICAgICAgfQorICAgICAgICAgIAorICAgICAgICByZXR1cm4gKGNoYXIpY2hhcjMyOworICAgIH0KKyAgICAgICAgCisgICAgLyoqCisgICAgICogQ29udmVuaWVuY2UgbWV0aG9kIGNvcnJlc3BvbmRpbmcgdG8gU3RyaW5nLnZhbHVlT2YoY2hhcikuIFJldHVybnMgYSBvbmUgCisgICAgICogb3IgdHdvIGNoYXIgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIFVURi0zMiB2YWx1ZSBpbiBVVEYxNiBmb3JtYXQuIElmIGEgCisgICAgICogdmFsaWRpdHkgY2hlY2sgaXMgcmVxdWlyZWQsIHVzZSAKKyAgICAgKiA8YSBocmVmPSIuLi9VQ2hhcmFjdGVyLmh0bWwjaXNMZWdhbChjaGFyKSI+aXNMZWdhbCgpPC9hPjwvY29kZT4gb24gCisgICAgICogY2hhcjMyIGJlZm9yZSBjYWxsaW5nLgorICAgICAqIEBwYXJhbSBjaGFyMzIgdGhlIGlucHV0IGNoYXJhY3Rlci4KKyAgICAgKiBAcmV0dXJuIHN0cmluZyB2YWx1ZSBvZiBjaGFyMzIgaW4gVVRGMTYgZm9ybWF0CisgICAgICogQGV4Y2VwdGlvbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gdGhyb3duIGlmIGNoYXIzMiBpcyBhIGludmFsaWQgCisgICAgICogICAgICAgICAgICBjb2RlcG9pbnQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgdmFsdWVPZihpbnQgY2hhcjMyKQorICAgIHsKKyAgICAgICAgaWYgKGNoYXIzMiA8IENPREVQT0lOVF9NSU5fVkFMVUUgfHwgY2hhcjMyID4gQ09ERVBPSU5UX01BWF9WQUxVRSkgeworICAgICAgICAJdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSWxsZWdhbCBjb2RlcG9pbnQiKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdG9TdHJpbmcoY2hhcjMyKTsKKyAgICB9CisgICAgICAKKyAgICAvKioKKyAgICAgKiBDb252ZW5pZW5jZSBtZXRob2QgY29ycmVzcG9uZGluZyB0byBTdHJpbmcudmFsdWVPZihjb2RlcG9pbnQgYXQgCisgICAgICogb2Zmc2V0MTYpLiAKKyAgICAgKiBSZXR1cm5zIGEgb25lIG9yIHR3byBjaGFyIHN0cmluZyBjb250YWluaW5nIHRoZSBVVEYtMzIgdmFsdWUgaW4gVVRGMTYgCisgICAgICogZm9ybWF0LiBJZiBvZmZzZXQxNiBpbmRleGVzIGEgc3Vycm9nYXRlIGNoYXJhY3RlciwgdGhlIHdob2xlIAorICAgICAqIHN1cHBsZW1lbnRhcnkgY29kZXBvaW50IHdpbGwgYmUgcmV0dXJuZWQuCisgICAgICogSWYgYSB2YWxpZGl0eSBjaGVjayBpcyByZXF1aXJlZCwgdXNlIAorICAgICAqIDxhIGhyZWY9Ii4uL1VDaGFyYWN0ZXIuaHRtbCNpc0xlZ2FsKGNoYXIpIj5pc0xlZ2FsKCk8L2E+PC9jb2RlPiBvbiB0aGUgCisgICAgICogY29kZXBvaW50IGF0IG9mZnNldDE2IGJlZm9yZSBjYWxsaW5nLgorICAgICAqIFRoZSByZXN1bHQgcmV0dXJuZWQgd2lsbCBiZSBhIG5ld2x5IGNyZWF0ZWQgU3RyaW5nIG9idGFpbmVkIGJ5IGNhbGxpbmcgCisgICAgICogc291cmNlLnN1YnN0cmluZyguLikgd2l0aCB0aGUgYXBwcm9wcmlhdGUgaW5kZXhlcy4KKyAgICAgKiBAcGFyYW0gc291cmNlIHRoZSBpbnB1dCBzdHJpbmcuCisgICAgICogQHBhcmFtIG9mZnNldDE2IHRoZSBVVEYxNiBpbmRleCB0byB0aGUgY29kZXBvaW50IGluIHNvdXJjZQorICAgICAqIEByZXR1cm4gc3RyaW5nIHZhbHVlIG9mIGNoYXIzMiBpbiBVVEYxNiBmb3JtYXQKKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyB2YWx1ZU9mKFN0cmluZyBzb3VyY2UsIGludCBvZmZzZXQxNikKKyAgICB7CisgICAgICAgIHN3aXRjaCAoYm91bmRzKHNvdXJjZSwgb2Zmc2V0MTYpKSB7CisgICAgICAgICAgICBjYXNlIExFQURfU1VSUk9HQVRFX0JPVU5EQVJZOiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzb3VyY2Uuc3Vic3RyaW5nKG9mZnNldDE2LCBvZmZzZXQxNiArIDIpOworICAgICAgICAgICAgY2FzZSBUUkFJTF9TVVJST0dBVEVfQk9VTkRBUlk6IAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNvdXJjZS5zdWJzdHJpbmcob2Zmc2V0MTYgLSAxLCBvZmZzZXQxNiArIDEpOworICAgICAgICAgICAgZGVmYXVsdDogcmV0dXJuIHNvdXJjZS5zdWJzdHJpbmcob2Zmc2V0MTYsIG9mZnNldDE2ICsgMSk7CisgICAgICAgIH0KKyAgICB9CisgICAgICAKKyAgICAvKioKKyAgICAgKiBDb252ZW5pZW5jZSBtZXRob2QgY29ycmVzcG9uZGluZyB0byAKKyAgICAgKiBTdHJpbmdCdWZmZXIudmFsdWVPZihjb2RlcG9pbnQgYXQgb2Zmc2V0MTYpLiAKKyAgICAgKiBSZXR1cm5zIGEgb25lIG9yIHR3byBjaGFyIHN0cmluZyBjb250YWluaW5nIHRoZSBVVEYtMzIgdmFsdWUgaW4gVVRGMTYgCisgICAgICogZm9ybWF0LiBJZiBvZmZzZXQxNiBpbmRleGVzIGEgc3Vycm9nYXRlIGNoYXJhY3RlciwgdGhlIHdob2xlIAorICAgICAqIHN1cHBsZW1lbnRhcnkgY29kZXBvaW50IHdpbGwgYmUgcmV0dXJuZWQuCisgICAgICogSWYgYSB2YWxpZGl0eSBjaGVjayBpcyByZXF1aXJlZCwgdXNlIAorICAgICAqIDxhIGhyZWY9Ii4uL1VDaGFyYWN0ZXIuaHRtbCNpc0xlZ2FsKGNoYXIpIj5pc0xlZ2FsKCk8L2E+PC9jb2RlPiBvbiB0aGUgCisgICAgICogY29kZXBvaW50IGF0IG9mZnNldDE2IGJlZm9yZSBjYWxsaW5nLgorICAgICAqIFRoZSByZXN1bHQgcmV0dXJuZWQgd2lsbCBiZSBhIG5ld2x5IGNyZWF0ZWQgU3RyaW5nIG9idGFpbmVkIGJ5IGNhbGxpbmcgCisgICAgICogc291cmNlLnN1YnN0cmluZyguLikgd2l0aCB0aGUgYXBwcm9wcmlhdGUgaW5kZXhlcy4KKyAgICAgKiBAcGFyYW0gc291cmNlIHRoZSBpbnB1dCBzdHJpbmcgYnVmZmVyLgorICAgICAqIEBwYXJhbSBvZmZzZXQxNiB0aGUgVVRGMTYgaW5kZXggdG8gdGhlIGNvZGVwb2ludCBpbiBzb3VyY2UKKyAgICAgKiBAcmV0dXJuIHN0cmluZyB2YWx1ZSBvZiBjaGFyMzIgaW4gVVRGMTYgZm9ybWF0CisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgdmFsdWVPZihTdHJpbmdCdWZmZXIgc291cmNlLCBpbnQgb2Zmc2V0MTYpCisgICAgeworICAgICAgICBzd2l0Y2ggKGJvdW5kcyhzb3VyY2UsIG9mZnNldDE2KSkgeworICAgICAgICAgICAgY2FzZSBMRUFEX1NVUlJPR0FURV9CT1VOREFSWTogCisgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNvdXJjZS5zdWJzdHJpbmcob2Zmc2V0MTYsIG9mZnNldDE2ICsgMik7CisgICAgICAgICAgICBjYXNlIFRSQUlMX1NVUlJPR0FURV9CT1VOREFSWTogCisgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNvdXJjZS5zdWJzdHJpbmcob2Zmc2V0MTYgLSAxLCBvZmZzZXQxNiArIDEpOworICAgICAgICAgICAgZGVmYXVsdDogcmV0dXJuIHNvdXJjZS5zdWJzdHJpbmcob2Zmc2V0MTYsIG9mZnNldDE2ICsgMSk7CisgICAgICAgIH0KKyAgICB9CisgICAgICAKKyAgICAvKioKKyAgICAgKiBDb252ZW5pZW5jZSBtZXRob2QuIAorICAgICAqIFJldHVybnMgYSBvbmUgb3IgdHdvIGNoYXIgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIFVURi0zMiB2YWx1ZSBpbiBVVEYxNiAKKyAgICAgKiBmb3JtYXQuIElmIG9mZnNldDE2IGluZGV4ZXMgYSBzdXJyb2dhdGUgY2hhcmFjdGVyLCB0aGUgd2hvbGUgCisgICAgICogc3VwcGxlbWVudGFyeSBjb2RlcG9pbnQgd2lsbCBiZSByZXR1cm5lZCwgZXhjZXB0IHdoZW4gZWl0aGVyIHRoZSAKKyAgICAgKiBsZWFkaW5nIG9yIHRyYWlsaW5nIHN1cnJvZ2F0ZSBjaGFyYWN0ZXIgbGllcyBvdXQgb2YgdGhlIHNwZWNpZmllZCAKKyAgICAgKiBzdWJhcnJheS4gSW4gdGhlIGxhdHRlciBjYXNlLCBvbmx5IHRoZSBzdXJyb2dhdGUgY2hhcmFjdGVyIHdpdGhpbiAKKyAgICAgKiBib3VuZHMgd2lsbCBiZSByZXR1cm5lZC4KKyAgICAgKiBJZiBhIHZhbGlkaXR5IGNoZWNrIGlzIHJlcXVpcmVkLCB1c2UgCisgICAgICogPGEgaHJlZj0iLi4vVUNoYXJhY3Rlci5odG1sI2lzTGVnYWwoY2hhcikiPmlzTGVnYWwoKTwvYT48L2NvZGU+IG9uIHRoZSAKKyAgICAgKiBjb2RlcG9pbnQgYXQgb2Zmc2V0MTYgYmVmb3JlIGNhbGxpbmcuCisgICAgICogVGhlIHJlc3VsdCByZXR1cm5lZCB3aWxsIGJlIGEgbmV3bHkgY3JlYXRlZCBTdHJpbmcgY29udGFpbmluZyB0aGUgCisgICAgICogcmVsZXZhbnQgY2hhcmFjdGVycy4KKyAgICAgKiBAcGFyYW0gc291cmNlIHRoZSBpbnB1dCBjaGFyIGFycmF5LgorICAgICAqIEBwYXJhbSBzdGFydCBzdGFydCBpbmRleCBvZiB0aGUgc3ViYXJyYXkKKyAgICAgKiBAcGFyYW0gbGltaXQgZW5kIGluZGV4IG9mIHRoZSBzdWJhcnJheQorICAgICAqIEBwYXJhbSBvZmZzZXQxNiB0aGUgVVRGMTYgaW5kZXggdG8gdGhlIGNvZGVwb2ludCBpbiBzb3VyY2UgcmVsYXRpdmUgdG8gCisgICAgICogICAgICAgIHN0YXJ0CisgICAgICogQHJldHVybiBzdHJpbmcgdmFsdWUgb2YgY2hhcjMyIGluIFVURjE2IGZvcm1hdAorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIHZhbHVlT2YoY2hhciBzb3VyY2VbXSwgaW50IHN0YXJ0LCBpbnQgbGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0MTYpCisgICAgeworICAgICAgICBzd2l0Y2ggKGJvdW5kcyhzb3VyY2UsIHN0YXJ0LCBsaW1pdCwgb2Zmc2V0MTYpKSB7CisgICAgICAgICAgICBjYXNlIExFQURfU1VSUk9HQVRFX0JPVU5EQVJZOiAKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFN0cmluZyhzb3VyY2UsIHN0YXJ0ICsgb2Zmc2V0MTYsIDIpOworICAgICAgICAgICAgY2FzZSBUUkFJTF9TVVJST0dBVEVfQk9VTkRBUlk6IAorICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU3RyaW5nKHNvdXJjZSwgc3RhcnQgKyBvZmZzZXQxNiAtIDEsIDIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBuZXcgU3RyaW5nKHNvdXJjZSwgc3RhcnQgKyBvZmZzZXQxNiwgMSk7CisgICAgfQorICAgICAgCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgVVRGLTE2IG9mZnNldCB0aGF0IGNvcnJlc3BvbmRzIHRvIGEgVVRGLTMyIG9mZnNldC4gCisgICAgICogVXNlZCBmb3IgcmFuZG9tIGFjY2Vzcy4gU2VlIHRoZSA8YSBuYW1lPSJfdG9wXyI+Y2xhc3MgZGVzY3JpcHRpb248L2E+IAorICAgICAqIGZvciBub3RlcyBvbiByb3VuZHRyaXBwaW5nLgorICAgICAqIEBwYXJhbSBzb3VyY2UgdGhlIFVURi0xNiBzdHJpbmcKKyAgICAgKiBAcGFyYW0gb2Zmc2V0MzIgVVRGLTMyIG9mZnNldAorICAgICAqIEByZXR1cm4gVVRGLTE2IG9mZnNldCAKKyAgICAgKiBAZXhjZXB0aW9uIEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gaWYgb2Zmc2V0MzIgaXMgb3V0IG9mIGJvdW5kcy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludCBmaW5kT2Zmc2V0RnJvbUNvZGVQb2ludChTdHJpbmcgc291cmNlLCBpbnQgb2Zmc2V0MzIpIAorICAgIHsKKyAgICAgICAgY2hhciBjaDsKKyAgICAgICAgaW50IHNpemUgPSBzb3VyY2UubGVuZ3RoKCksCisgICAgICAgICAgICByZXN1bHQgPSAwLAorICAgICAgICAgICAgY291bnQgPSBvZmZzZXQzMjsKKyAgICAgICAgaWYgKG9mZnNldDMyIDwgMCB8fCBvZmZzZXQzMiA+IHNpemUpIHsKKyAgICAgICAgdGhyb3cgbmV3IFN0cmluZ0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24ob2Zmc2V0MzIpOworICAgICAgICB9CisgICAgICAgIHdoaWxlIChyZXN1bHQgPCBzaXplICYmIGNvdW50ID4gMCkKKyAgICAgICAgeworICAgICAgICBjaCA9IHNvdXJjZS5jaGFyQXQocmVzdWx0KTsKKyAgICAgICAgaWYgKGlzTGVhZFN1cnJvZ2F0ZShjaCkgJiYgKChyZXN1bHQgKyAxKSA8IHNpemUpICYmIAorICAgICAgICAgICAgaXNUcmFpbFN1cnJvZ2F0ZShzb3VyY2UuY2hhckF0KHJlc3VsdCArIDEpKSkgeworICAgICAgICAgICAgcmVzdWx0ICsrOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY291bnQgLS07CisgICAgICAgIHJlc3VsdCArKzsKKyAgICAgICAgfQorICAgICAgICBpZiAoY291bnQgIT0gMCkgeworICAgICAgICB0aHJvdyBuZXcgU3RyaW5nSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbihvZmZzZXQzMik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBVVEYtMTYgb2Zmc2V0IHRoYXQgY29ycmVzcG9uZHMgdG8gYSBVVEYtMzIgb2Zmc2V0LgorICAgICAqIFVzZWQgZm9yIHJhbmRvbSBhY2Nlc3MuIFNlZSB0aGUgPGEgbmFtZT0iX3RvcF8iPmNsYXNzIGRlc2NyaXB0aW9uPC9hPgorICAgICAqIGZvciBub3RlcyBvbiByb3VuZHRyaXBwaW5nLgorICAgICAqIEBwYXJhbSBzb3VyY2UgdGhlIFVURi0xNiBzdHJpbmcgYnVmZmVyCisgICAgICogQHBhcmFtIG9mZnNldDMyIFVURi0zMiBvZmZzZXQKKyAgICAgKiBAcmV0dXJuIFVURi0xNiBvZmZzZXQKKyAgICAgKiBAZXhjZXB0aW9uIEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gaWYgb2Zmc2V0MzIgaXMgb3V0IG9mIGJvdW5kcy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludCBmaW5kT2Zmc2V0RnJvbUNvZGVQb2ludChTdHJpbmdCdWZmZXIgc291cmNlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0MzIpCisgICAgeworICAgICAgICBjaGFyIGNoOworICAgICAgICBpbnQgc2l6ZSA9IHNvdXJjZS5sZW5ndGgoKSwKKyAgICAgICAgICAgIHJlc3VsdCA9IDAsCisgICAgICAgICAgICBjb3VudCA9IG9mZnNldDMyOworICAgICAgICBpZiAob2Zmc2V0MzIgPCAwIHx8IG9mZnNldDMyID4gc2l6ZSkgeworICAgICAgICB0aHJvdyBuZXcgU3RyaW5nSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbihvZmZzZXQzMik7CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKHJlc3VsdCA8IHNpemUgJiYgY291bnQgPiAwKQorICAgICAgICB7CisgICAgICAgIGNoID0gc291cmNlLmNoYXJBdChyZXN1bHQpOworICAgICAgICBpZiAoaXNMZWFkU3Vycm9nYXRlKGNoKSAmJiAoKHJlc3VsdCArIDEpIDwgc2l6ZSkgJiYgCisgICAgICAgICAgICBpc1RyYWlsU3Vycm9nYXRlKHNvdXJjZS5jaGFyQXQocmVzdWx0ICsgMSkpKSB7CisgICAgICAgICAgICByZXN1bHQgKys7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjb3VudCAtLTsKKyAgICAgICAgcmVzdWx0ICsrOworICAgICAgICB9CisgICAgICAgIGlmIChjb3VudCAhPSAwKSB7CisgICAgICAgIHRocm93IG5ldyBTdHJpbmdJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uKG9mZnNldDMyKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIFVURi0xNiBvZmZzZXQgdGhhdCBjb3JyZXNwb25kcyB0byBhIFVURi0zMiBvZmZzZXQuCisgICAgICogVXNlZCBmb3IgcmFuZG9tIGFjY2Vzcy4gU2VlIHRoZSA8YSBuYW1lPSJfdG9wXyI+Y2xhc3MgZGVzY3JpcHRpb248L2E+CisgICAgICogZm9yIG5vdGVzIG9uIHJvdW5kdHJpcHBpbmcuCisgICAgICogQHBhcmFtIHNvdXJjZSB0aGUgVVRGLTE2IGNoYXIgYXJyYXkgd2hvc2Ugc3Vic3RyaW5nIGlzIHRvIGJlIGFuYWx5c2VkCisgICAgICogQHBhcmFtIHN0YXJ0IG9mZnNldCBvZiB0aGUgc3Vic3RyaW5nIHRvIGJlIGFuYWx5c2VkCisgICAgICogQHBhcmFtIGxpbWl0IG9mZnNldCBvZiB0aGUgc3Vic3RyaW5nIHRvIGJlIGFuYWx5c2VkCisgICAgICogQHBhcmFtIG9mZnNldDMyIFVURi0zMiBvZmZzZXQgcmVsYXRpdmUgdG8gc3RhcnQKKyAgICAgKiBAcmV0dXJuIFVURi0xNiBvZmZzZXQgcmVsYXRpdmUgdG8gc3RhcnQKKyAgICAgKiBAZXhjZXB0aW9uIEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gaWYgb2Zmc2V0MzIgaXMgb3V0IG9mIGJvdW5kcy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludCBmaW5kT2Zmc2V0RnJvbUNvZGVQb2ludChjaGFyIHNvdXJjZVtdLCBpbnQgc3RhcnQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW1pdCwgaW50IG9mZnNldDMyKQorICAgIHsKKyAgICAgICAgY2hhciBjaDsKKyAgICAgICAgaW50IHJlc3VsdCA9IHN0YXJ0LAorICAgICAgICAgICAgY291bnQgPSBvZmZzZXQzMjsKKyAgICAgICAgaWYgKG9mZnNldDMyID4gbGltaXQgLSBzdGFydCkgeworICAgICAgICB0aHJvdyBuZXcgQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uKG9mZnNldDMyKTsKKyAgICAgICAgfQorICAgICAgICB3aGlsZSAocmVzdWx0IDwgbGltaXQgJiYgY291bnQgPiAwKQorICAgICAgICB7CisgICAgICAgIGNoID0gc291cmNlW3Jlc3VsdF07CisgICAgICAgIGlmIChpc0xlYWRTdXJyb2dhdGUoY2gpICYmICgocmVzdWx0ICsgMSkgPCBsaW1pdCkgJiYgCisgICAgICAgICAgICBpc1RyYWlsU3Vycm9nYXRlKHNvdXJjZVtyZXN1bHQgKyAxXSkpIHsKKyAgICAgICAgICAgIHJlc3VsdCArKzsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNvdW50IC0tOworICAgICAgICByZXN1bHQgKys7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvdW50ICE9IDApIHsKKyAgICAgICAgdGhyb3cgbmV3IEFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbihvZmZzZXQzMik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdCAtIHN0YXJ0OworICAgIH0KKyAgICAgIAorICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIFVURi0zMiBvZmZzZXQgY29ycmVzcG9uZGluZyB0byB0aGUgZmlyc3QgVVRGLTMyIGJvdW5kYXJ5IGF0IAorICAgICAqIG9yIGFmdGVyIHRoZSBnaXZlbiBVVEYtMTYgb2Zmc2V0LiBVc2VkIGZvciByYW5kb20gYWNjZXNzLiBTZWUgdGhlIAorICAgICAqIDxhIG5hbWU9Il90b3BfIj5jbGFzcyBkZXNjcmlwdGlvbjwvYT4gZm9yIG5vdGVzIG9uIHJvdW5kdHJpcHBpbmcuPGJyPgorICAgICAqIDxpPk5vdGU6IElmIHRoZSBVVEYtMTYgb2Zmc2V0IGlzIGludG8gdGhlIG1pZGRsZSBvZiBhIHN1cnJvZ2F0ZSBwYWlyLCAKKyAgICAgKiB0aGVuIHRoZSBVVEYtMzIgb2Zmc2V0IG9mIHRoZSA8c3Ryb25nPmxlYWQ8L3N0cm9uZz4gb2YgdGhlIHBhaXIgaXMgCisgICAgICogcmV0dXJuZWQuCisgICAgICogPC9pPgorICAgICAqIDxwPgorICAgICAqIFRvIGZpbmQgdGhlIFVURi0zMiBsZW5ndGggb2YgYSBzdHJpbmcsIHVzZToKKyAgICAgKiAgIDxwcmU+CisgICAgICogICAgIGxlbjMyID0gY291bnRDb2RlUG9pbnQoc291cmNlLCBzb3VyY2UubGVuZ3RoKCkpOworICAgICAqICAgPC9wcmU+CisgICAgICogPC9wPgorICAgICAqIDxwPgorICAgICAqIEBwYXJhbSBzb3VyY2UgdGV4dCB0byBhbmFseXNlCisgICAgICogQHBhcmFtIG9mZnNldDE2IFVURi0xNiBvZmZzZXQgPCBzb3VyY2UgdGV4dCBsZW5ndGguCisgICAgICogQHJldHVybiBVVEYtMzIgb2Zmc2V0CisgICAgICogQGV4Y2VwdGlvbiBJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIGlmIG9mZnNldDE2IGlzIG91dCBvZiBib3VuZHMuCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnQgZmluZENvZGVQb2ludE9mZnNldChTdHJpbmcgc291cmNlLCBpbnQgb2Zmc2V0MTYpIAorICAgIHsKKyAgICAgICAgaWYgKG9mZnNldDE2IDwgMCB8fCBvZmZzZXQxNiA+IHNvdXJjZS5sZW5ndGgoKSkgeworICAgICAgICB0aHJvdyBuZXcgU3RyaW5nSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbihvZmZzZXQxNik7CisgICAgICAgIH0KKyAgICAgICAgIAorICAgICAgICBpbnQgcmVzdWx0ID0gMDsKKyAgICAgICAgY2hhciBjaDsKKyAgICAgICAgYm9vbGVhbiBoYWRMZWFkU3Vycm9nYXRlID0gZmFsc2U7CisgICAgICAgIAorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9mZnNldDE2OyArKyBpKSAKKyAgICAgICAgeworICAgICAgICBjaCA9IHNvdXJjZS5jaGFyQXQoaSk7CisgICAgICAgIGlmIChoYWRMZWFkU3Vycm9nYXRlICYmIGlzVHJhaWxTdXJyb2dhdGUoY2gpKSB7CisgICAgICAgICAgICBoYWRMZWFkU3Vycm9nYXRlID0gZmFsc2U7ICAgICAgICAgICAvLyBjb3VudCB2YWxpZCB0cmFpbCBhcyB6ZXJvCisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBoYWRMZWFkU3Vycm9nYXRlID0gaXNMZWFkU3Vycm9nYXRlKGNoKTsKKyAgICAgICAgICAgICsrIHJlc3VsdDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvdW50IG90aGVycyBhcyAxCisgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKG9mZnNldDE2ID09IHNvdXJjZS5sZW5ndGgoKSkgeworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gZW5kIG9mIHNvdXJjZSBiZWluZyB0aGUgbGVzcyBzaWduaWZpY2FudCBzdXJyb2dhdGUgY2hhcmFjdGVyCisgICAgICAgIC8vIHNoaWZ0IHJlc3VsdCBiYWNrIHRvIHRoZSBzdGFydCBvZiB0aGUgc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXIKKyAgICAgICAgaWYgKGhhZExlYWRTdXJyb2dhdGUgJiYgKGlzVHJhaWxTdXJyb2dhdGUoc291cmNlLmNoYXJBdChvZmZzZXQxNikpKSkgeworICAgICAgICByZXN1bHQgLS07CisgICAgICAgIH0KKyAgICAgICAgICAKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBVVEYtMzIgb2Zmc2V0IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZpcnN0IFVURi0zMiBib3VuZGFyeSBhdAorICAgICAqIHRoZSBnaXZlbiBVVEYtMTYgb2Zmc2V0LiBVc2VkIGZvciByYW5kb20gYWNjZXNzLiBTZWUgdGhlCisgICAgICogPGEgbmFtZT0iX3RvcF8iPmNsYXNzIGRlc2NyaXB0aW9uPC9hPiBmb3Igbm90ZXMgb24gcm91bmR0cmlwcGluZy48YnI+CisgICAgICogPGk+Tm90ZTogSWYgdGhlIFVURi0xNiBvZmZzZXQgaXMgaW50byB0aGUgbWlkZGxlIG9mIGEgc3Vycm9nYXRlIHBhaXIsIAorICAgICAqIHRoZW4gdGhlIFVURi0zMiBvZmZzZXQgb2YgdGhlIDxzdHJvbmc+bGVhZDwvc3Ryb25nPiBvZiB0aGUgcGFpciBpcyAKKyAgICAgKiByZXR1cm5lZC4KKyAgICAgKiA8L2k+CisgICAgICogPHA+CisgICAgICogVG8gZmluZCB0aGUgVVRGLTMyIGxlbmd0aCBvZiBhIHN0cmluZywgdXNlOgorICAgICAqICAgPHByZT4KKyAgICAgKiAgICAgbGVuMzIgPSBjb3VudENvZGVQb2ludChzb3VyY2UpOworICAgICAqICAgPC9wcmU+CisgICAgICogPC9wPgorICAgICAqIDxwPgorICAgICAqIEBwYXJhbSBzb3VyY2UgdGV4dCB0byBhbmFseXNlCisgICAgICogQHBhcmFtIG9mZnNldDE2IFVURi0xNiBvZmZzZXQgPCBzb3VyY2UgdGV4dCBsZW5ndGguCisgICAgICogQHJldHVybiBVVEYtMzIgb2Zmc2V0CisgICAgICogQGV4Y2VwdGlvbiBJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIGlmIG9mZnNldDE2IGlzIG91dCBvZiBib3VuZHMuCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnQgZmluZENvZGVQb2ludE9mZnNldChTdHJpbmdCdWZmZXIgc291cmNlLCBpbnQgb2Zmc2V0MTYpCisgICAgeworICAgICAgICBpZiAob2Zmc2V0MTYgPCAwIHx8IG9mZnNldDE2ID4gc291cmNlLmxlbmd0aCgpKSB7CisgICAgICAgIHRocm93IG5ldyBTdHJpbmdJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uKG9mZnNldDE2KTsKKyAgICAgICAgfQorICAgICAgICAgCisgICAgICAgIGludCByZXN1bHQgPSAwOworICAgICAgICBjaGFyIGNoOworICAgICAgICBib29sZWFuIGhhZExlYWRTdXJyb2dhdGUgPSBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2Zmc2V0MTY7ICsrIGkpIAorICAgICAgICB7CisgICAgICAgIGNoID0gc291cmNlLmNoYXJBdChpKTsKKyAgICAgICAgaWYgKGhhZExlYWRTdXJyb2dhdGUgJiYgaXNUcmFpbFN1cnJvZ2F0ZShjaCkpIHsKKyAgICAgICAgICAgIGhhZExlYWRTdXJyb2dhdGUgPSBmYWxzZTsgICAgICAgICAgIC8vIGNvdW50IHZhbGlkIHRyYWlsIGFzIHplcm8KKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGhhZExlYWRTdXJyb2dhdGUgPSBpc0xlYWRTdXJyb2dhdGUoY2gpOworICAgICAgICAgICAgKysgcmVzdWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY291bnQgb3RoZXJzIGFzIDEKKyAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAob2Zmc2V0MTYgPT0gc291cmNlLmxlbmd0aCgpKSB7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBlbmQgb2Ygc291cmNlIGJlaW5nIHRoZSBsZXNzIHNpZ25pZmljYW50IHN1cnJvZ2F0ZSBjaGFyYWN0ZXIKKyAgICAgICAgLy8gc2hpZnQgcmVzdWx0IGJhY2sgdG8gdGhlIHN0YXJ0IG9mIHRoZSBzdXBwbGVtZW50YXJ5IGNoYXJhY3RlcgorICAgICAgICBpZiAoaGFkTGVhZFN1cnJvZ2F0ZSAmJiAoaXNUcmFpbFN1cnJvZ2F0ZShzb3VyY2UuY2hhckF0KG9mZnNldDE2KSkpKSAKKyAgICAgICAgeworICAgICAgICAgICAgcmVzdWx0IC0tOworICAgICAgICB9CisgICAgICAgICAgCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgVVRGLTMyIG9mZnNldCBjb3JyZXNwb25kaW5nIHRvIHRoZSBmaXJzdCBVVEYtMzIgYm91bmRhcnkgYXQKKyAgICAgKiB0aGUgZ2l2ZW4gVVRGLTE2IG9mZnNldC4gVXNlZCBmb3IgcmFuZG9tIGFjY2Vzcy4gU2VlIHRoZQorICAgICAqIDxhIG5hbWU9Il90b3BfIj5jbGFzcyBkZXNjcmlwdGlvbjwvYT4gZm9yIG5vdGVzIG9uIHJvdW5kdHJpcHBpbmcuPGJyPgorICAgICAqIDxpPk5vdGU6IElmIHRoZSBVVEYtMTYgb2Zmc2V0IGlzIGludG8gdGhlIG1pZGRsZSBvZiBhIHN1cnJvZ2F0ZSBwYWlyLCAKKyAgICAgKiB0aGVuIHRoZSBVVEYtMzIgb2Zmc2V0IG9mIHRoZSA8c3Ryb25nPmxlYWQ8L3N0cm9uZz4gb2YgdGhlIHBhaXIgaXMgCisgICAgICogcmV0dXJuZWQuCisgICAgICogPC9pPgorICAgICAqIDxwPgorICAgICAqIFRvIGZpbmQgdGhlIFVURi0zMiBsZW5ndGggb2YgYSBzdWJzdHJpbmcsIHVzZToKKyAgICAgKiAgIDxwcmU+CisgICAgICogICAgIGxlbjMyID0gY291bnRDb2RlUG9pbnQoc291cmNlLCBzdGFydCwgbGltaXQpOworICAgICAqICAgPC9wcmU+CisgICAgICogPC9wPgorICAgICAqIDxwPgorICAgICAqIEBwYXJhbSBzb3VyY2UgdGV4dCB0byBhbmFseXNlCisgICAgICogQHBhcmFtIHN0YXJ0IG9mZnNldCBvZiB0aGUgc3Vic3RyaW5nCisgICAgICogQHBhcmFtIGxpbWl0IG9mZnNldCBvZiB0aGUgc3Vic3RyaW5nCisgICAgICAqIEBwYXJhbSBvZmZzZXQxNiBVVEYtMTYgcmVsYXRpdmUgdG8gc3RhcnQKKyAgICAgKiBAcmV0dXJuIFVURi0zMiBvZmZzZXQgcmVsYXRpdmUgdG8gc3RhcnQKKyAgICAgKiBAZXhjZXB0aW9uIEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gaWYgb2Zmc2V0MTYgaXMgbm90IHdpdGhpbiB0aGUgCisgICAgICogICAgICAgICAgICByYW5nZSBvZiBzdGFydCBhbmQgbGltaXQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnQgZmluZENvZGVQb2ludE9mZnNldChjaGFyIHNvdXJjZVtdLCBpbnQgc3RhcnQsIGludCBsaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBvZmZzZXQxNikKKyAgICB7CisgICAgICAgIG9mZnNldDE2ICs9IHN0YXJ0OworICAgICAgICBpZiAob2Zmc2V0MTYgPiBsaW1pdCkgeworICAgICAgICAJdGhyb3cgbmV3IFN0cmluZ0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24ob2Zmc2V0MTYpOworICAgICAgICB9CisgICAgICAgICAKKyAgICAgICAgaW50IHJlc3VsdCA9IDA7CisgICAgICAgIGNoYXIgY2g7CisgICAgICAgIGJvb2xlYW4gaGFkTGVhZFN1cnJvZ2F0ZSA9IGZhbHNlOworICAgICAgICAKKyAgICAgICAgZm9yIChpbnQgaSA9IHN0YXJ0OyBpIDwgb2Zmc2V0MTY7ICsrIGkpIAorICAgICAgICB7CisgICAgICAgIAljaCA9IHNvdXJjZVtpXTsKKyAgICAgICAgCWlmIChoYWRMZWFkU3Vycm9nYXRlICYmIGlzVHJhaWxTdXJyb2dhdGUoY2gpKSB7CisgICAgICAgICAgICAJaGFkTGVhZFN1cnJvZ2F0ZSA9IGZhbHNlOyAvLyBjb3VudCB2YWxpZCB0cmFpbCBhcyB6ZXJvCisgICAgICAgIAl9CisgICAgICAgIAllbHNlCisgICAgICAgIAl7CisgICAgICAgICAgICAJaGFkTGVhZFN1cnJvZ2F0ZSA9IGlzTGVhZFN1cnJvZ2F0ZShjaCk7CisgICAgICAgICAgICAJKysgcmVzdWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY291bnQgb3RoZXJzIGFzIDEKKyAgICAgICAgCX0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKG9mZnNldDE2ID09IGxpbWl0KSB7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBlbmQgb2Ygc291cmNlIGJlaW5nIHRoZSBsZXNzIHNpZ25pZmljYW50IHN1cnJvZ2F0ZSBjaGFyYWN0ZXIKKyAgICAgICAgLy8gc2hpZnQgcmVzdWx0IGJhY2sgdG8gdGhlIHN0YXJ0IG9mIHRoZSBzdXBwbGVtZW50YXJ5IGNoYXJhY3RlcgorICAgICAgICBpZiAoaGFkTGVhZFN1cnJvZ2F0ZSAmJiAoaXNUcmFpbFN1cnJvZ2F0ZShzb3VyY2Vbb2Zmc2V0MTZdKSkpIHsKKyAgICAgICAgCXJlc3VsdCAtLTsKKyAgICAgICAgfQorICAgICAgICAgIAorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8qKgorICAgICAqIEFwcGVuZCBhIHNpbmdsZSBVVEYtMzIgdmFsdWUgdG8gdGhlIGVuZCBvZiBhIFN0cmluZ0J1ZmZlci4KKyAgICAgKiBJZiBhIHZhbGlkaXR5IGNoZWNrIGlzIHJlcXVpcmVkLCB1c2UgCisgICAgICogPGEgaHJlZj0iLi4vVUNoYXJhY3Rlci5odG1sI2lzTGVnYWwoY2hhcikiPmlzTGVnYWwoKTwvYT48L2NvZGU+IG9uIAorICAgICAqIGNoYXIzMiBiZWZvcmUgY2FsbGluZy4KKyAgICAgKiBAcGFyYW0gY2hhcjMyIHZhbHVlIHRvIGFwcGVuZC4KKyAgICAgKiBAcmV0dXJuIHRoZSB1cGRhdGVkIFN0cmluZ0J1ZmZlcgorICAgICAqIEBleGNlcHRpb24gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHRocm93biB3aGVuIGNoYXIzMiBkb2VzIG5vdCBsaWUgCisgICAgICogICAgICAgICAgICB3aXRoaW4gdGhlIHJhbmdlIG9mIHRoZSBVbmljb2RlIGNvZGVwb2ludHMKKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZ0J1ZmZlciBhcHBlbmQoU3RyaW5nQnVmZmVyIHRhcmdldCwgaW50IGNoYXIzMikKKyAgICB7CisgICAgICAgIC8vIENoZWNrIGZvciBpcnJlZ3VsYXIgdmFsdWVzCisgICAgICAgIGlmIChjaGFyMzIgPCBDT0RFUE9JTlRfTUlOX1ZBTFVFIHx8IGNoYXIzMiA+IENPREVQT0lOVF9NQVhfVkFMVUUpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIklsbGVnYWwgY29kZXBvaW50Iik7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAvLyBXcml0ZSB0aGUgVVRGLTE2IHZhbHVlcworICAgICAgICBpZiAoY2hhcjMyID49IFNVUFBMRU1FTlRBUllfTUlOX1ZBTFVFKSAKKyAgICAgICAgeworICAgICAgICAgICAgdGFyZ2V0LmFwcGVuZChnZXRMZWFkU3Vycm9nYXRlKGNoYXIzMikpOworCSAgICAgICAgdGFyZ2V0LmFwcGVuZChnZXRUcmFpbFN1cnJvZ2F0ZShjaGFyMzIpKTsKKyAgICAgICAgfSAKKwkgICAgZWxzZSB7CisJICAgICAgICB0YXJnZXQuYXBwZW5kKChjaGFyKWNoYXIzMik7CisJICAgIH0KKwkgICAgcmV0dXJuIHRhcmdldDsKKyAgICB9CisgICAgICAKKyAgICAvKioKKyAgICAgKiBBZGRzIGEgY29kZXBvaW50IHRvIG9mZnNldDE2IHBvc2l0aW9uIG9mIHRoZSBhcmd1bWVudCBjaGFyIGFycmF5LgorICAgICAqIEBwYXJhbSB0YXJnZXQgY2hhciBhcnJheSB0byBiZSBhcHBlbmQgd2l0aCB0aGUgbmV3IGNvZGUgcG9pbnQKKyAgICAgKiBAcGFyYW0gbGltaXQgVVRGMTYgb2Zmc2V0IHdoaWNoIHRoZSBjb2RlcG9pbnQgd2lsbCBiZSBhcHBlbmRlZC4KKyAgICAgKiBAcGFyYW0gY2hhcjMyIGNvZGUgcG9pbnQgdG8gYmUgYXBwZW5kZWQKKyAgICAgKiBAcmV0dXJuIG9mZnNldCBhZnRlciBjaGFyMzIgaW4gdGhlIGFycmF5LgorICAgICAqIEBleGNlcHRpb24gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHRocm93biBpZiB0aGVyZSBpcyBub3QgZW5vdWdoIAorICAgICAqICAgICAgICAgICAgc3BhY2UgZm9yIHRoZSBhcHBlbmQsIG9yIHdoZW4gY2hhcjMyIGRvZXMgbm90IGxpZSB3aXRoaW4KKyAgICAgKiAgICAgICAgICAgIHRoZSByYW5nZSBvZiB0aGUgVW5pY29kZSBjb2RlcG9pbnRzLgorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgaW50IGFwcGVuZChjaGFyW10gdGFyZ2V0LCBpbnQgbGltaXQsIGludCBjaGFyMzIpCisgICAgeworICAgICAgICAvLyBDaGVjayBmb3IgaXJyZWd1bGFyIHZhbHVlcworICAgICAgICBpZiAoY2hhcjMyIDwgQ09ERVBPSU5UX01JTl9WQUxVRSB8fCBjaGFyMzIgPiBDT0RFUE9JTlRfTUFYX1ZBTFVFKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbGxlZ2FsIGNvZGVwb2ludCIpOworICAgICAgICB9CisgICAgICAgIC8vIFdyaXRlIHRoZSBVVEYtMTYgdmFsdWVzCisgICAgICAgIGlmIChjaGFyMzIgPj0gU1VQUExFTUVOVEFSWV9NSU5fVkFMVUUpIAorICAgICAgICB7CisgICAgICAgICAgICB0YXJnZXRbbGltaXQgKytdID0gZ2V0TGVhZFN1cnJvZ2F0ZShjaGFyMzIpOworICAgICAgICAgICAgdGFyZ2V0W2xpbWl0ICsrXSA9IGdldFRyYWlsU3Vycm9nYXRlKGNoYXIzMik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0YXJnZXRbbGltaXQgKytdID0gKGNoYXIpY2hhcjMyOworICAgICAgICB9CisgICAgICAgIHJldHVybiBsaW1pdDsKKyAgICB9CisgICAgICAgIAorICAgIC8qKgorICAgICAqIE51bWJlciBvZiBjb2RlcG9pbnRzIGluIGEgVVRGMTYgU3RyaW5nCisgICAgICogQHBhcmFtIHNvdXJjZSBVVEYxNiBzdHJpbmcKKyAgICAgKiBAcmV0dXJuIG51bWJlciBvZiBjb2RlcG9pbnQgaW4gc3RyaW5nCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnQgY291bnRDb2RlUG9pbnQoU3RyaW5nIHNvdXJjZSkKKyAgICB7CisgICAgICAgIGlmIChzb3VyY2UgPT0gbnVsbCB8fCBzb3VyY2UubGVuZ3RoKCkgPT0gMCkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZpbmRDb2RlUG9pbnRPZmZzZXQoc291cmNlLCBzb3VyY2UubGVuZ3RoKCkpOworICAgIH0KKyAgICAgIAorICAgIC8qKgorICAgICAqIE51bWJlciBvZiBjb2RlcG9pbnRzIGluIGEgVVRGMTYgU3RyaW5nIGJ1ZmZlcgorICAgICAqIEBwYXJhbSBzb3VyY2UgVVRGMTYgc3RyaW5nIGJ1ZmZlcgorICAgICAqIEByZXR1cm4gbnVtYmVyIG9mIGNvZGVwb2ludCBpbiBzdHJpbmcKKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludCBjb3VudENvZGVQb2ludChTdHJpbmdCdWZmZXIgc291cmNlKQorICAgIHsKKyAgICAgICAgaWYgKHNvdXJjZSA9PSBudWxsIHx8IHNvdXJjZS5sZW5ndGgoKSA9PSAwKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmluZENvZGVQb2ludE9mZnNldChzb3VyY2UsIHNvdXJjZS5sZW5ndGgoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogTnVtYmVyIG9mIGNvZGVwb2ludHMgaW4gYSBVVEYxNiBjaGFyIGFycmF5IHN1YnN0cmluZworICAgICAqIEBwYXJhbSBzb3VyY2UgVVRGMTYgY2hhciBhcnJheQorICAgICAqIEBwYXJhbSBzdGFydCBvZmZzZXQgb2YgdGhlIHN1YnN0cmluZworICAgICAqIEBwYXJhbSBsaW1pdCBvZmZzZXQgb2YgdGhlIHN1YnN0cmluZworICAgICAqIEByZXR1cm4gbnVtYmVyIG9mIGNvZGVwb2ludCBpbiB0aGUgc3Vic3RyaW5nCisgICAgICogQGV4Y2VwdGlvbiBJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIGlmIHN0YXJ0IGFuZCBsaW1pdCBhcmUgbm90IHZhbGlkLgorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgaW50IGNvdW50Q29kZVBvaW50KGNoYXIgc291cmNlW10sIGludCBzdGFydCwgaW50IGxpbWl0KQorICAgIHsKKyAgICAgICAgaWYgKHNvdXJjZSA9PSBudWxsIHx8IHNvdXJjZS5sZW5ndGggPT0gMCkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZpbmRDb2RlUG9pbnRPZmZzZXQoc291cmNlLCBzdGFydCwgbGltaXQsIGxpbWl0IC0gc3RhcnQpOworICAgIH0KKyAgICAgIAorICAgIC8qKgorICAgICAqIFNldCBhIGNvZGUgcG9pbnQgaW50byBhIFVURjE2IHBvc2l0aW9uLiAKKyAgICAgKiBBZGp1c3RzIHRhcmdldCBhY2NvcmRpbmcgaWYgd2UgYXJlIHJlcGxhY2luZyBhIG5vbi1zdXBwbGVtZW50YXJ5IAorICAgICAqIGNvZGVwb2ludCB3aXRoIGEgc3VwcGxlbWVudGFyeSBhbmQgdmljZSB2ZXJzYS4KKyAgICAgKiBAcGFyYW0gdGFyZ2V0IHN0cmluZ2J1ZmZlcgorICAgICAqIEBwYXJhbSBvZmZzZXQxNiBVVEYxNiBwb3NpdGlvbiB0byBpbnNlcnQgaW50bworICAgICAqIEBwYXJhbSBjaGFyMzIgY29kZSBwb2ludAorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBzZXRDaGFyQXQoU3RyaW5nQnVmZmVyIHRhcmdldCwgaW50IG9mZnNldDE2LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjaGFyMzIpCisgICAgeworICAgICAgICBpbnQgY291bnQgPSAxOworICAgICAgICBjaGFyIHNpbmdsZSA9IHRhcmdldC5jaGFyQXQob2Zmc2V0MTYpOworICAgICAgICAKKyAgICAgICAgaWYgKGlzU3Vycm9nYXRlKHNpbmdsZSkpIAorICAgICAgICB7CisgICAgICAgICAgICAvLyBwYWlycyBvZiB0aGUgc3Vycm9nYXRlIHdpdGggb2Zmc2V0MTYgYXQgdGhlIGxlYWQgY2hhciBmb3VuZAorICAgICAgICAgICAgaWYgKGlzTGVhZFN1cnJvZ2F0ZShzaW5nbGUpICYmICh0YXJnZXQubGVuZ3RoKCkgPiBvZmZzZXQxNiArIDEpIAorICAgICAgICAgICAgICAgICYmIGlzVHJhaWxTdXJyb2dhdGUodGFyZ2V0LmNoYXJBdChvZmZzZXQxNiArIDEpKSkgeworCSAgICAgICAgICAgIGNvdW50ICsrOworCSAgICAgICAgfQorCSAgICAgICAgZWxzZSB7CisJICAgICAgICAgICAgLy8gcGFpcnMgb2YgdGhlIHN1cnJvZ2F0ZSB3aXRoIG9mZnNldDE2IGF0IHRoZSB0cmFpbCBjaGFyIAorCSAgICAgICAgICAgIC8vIGZvdW5kCisJICAgICAgICAgICAgaWYgKGlzVHJhaWxTdXJyb2dhdGUoc2luZ2xlKSAmJiAob2Zmc2V0MTYgPiAwKSAmJgorCSAgICAgICAgICAgICAgICBpc0xlYWRTdXJyb2dhdGUodGFyZ2V0LmNoYXJBdChvZmZzZXQxNiAtMSkpKQorCSAgICAgICAgICAgIHsKKwkgICAgICAgICAgICAgICAgb2Zmc2V0MTYgLS07CisJICAgICAgICAgICAgICAgIGNvdW50ICsrOworCSAgICAgICAgICAgIH0KKwkgICAgICAgIH0KKwkgICAgfQorCSAgICB0YXJnZXQucmVwbGFjZShvZmZzZXQxNiwgb2Zmc2V0MTYgKyBjb3VudCwgdmFsdWVPZihjaGFyMzIpKTsKKyAgICB9CisgICAgCQorICAgIC8qKgorICAgICAqIFNldCBhIGNvZGUgcG9pbnQgaW50byBhIFVURjE2IHBvc2l0aW9uIGluIGEgY2hhciBhcnJheS4KKyAgICAgKiBBZGp1c3RzIHRhcmdldCBhY2NvcmRpbmcgaWYgd2UgYXJlIHJlcGxhY2luZyBhIG5vbi1zdXBwbGVtZW50YXJ5IAorICAgICAqIGNvZGVwb2ludCB3aXRoIGEgc3VwcGxlbWVudGFyeSBhbmQgdmljZSB2ZXJzYS4KKyAgICAgKiBAcGFyYW0gdGFyZ2V0IGNoYXIgYXJyYXkKKyAgICAgKiBAcGFyYW0gbGltaXQgbnVtYmVycyBvZiB2YWxpZCBjaGFycyBpbiB0YXJnZXQsIGRpZmZlcmVudCBmcm9tIAorICAgICAqICAgICAgICB0YXJnZXQubGVuZ3RoLiBsaW1pdCBjb3VudHMgdGhlIG51bWJlciBvZiBjaGFycyBpbiB0YXJnZXQgCisgICAgICogICAgICAgIHRoYXQgcmVwcmVzZW50cyBhIHN0cmluZywgbm90IHRoZSBzaXplIG9mIGFycmF5IHRhcmdldC4KKyAgICAgKiBAcGFyYW0gb2Zmc2V0MTYgVVRGMTYgcG9zaXRpb24gdG8gaW5zZXJ0IGludG8KKyAgICAgKiBAcGFyYW0gY2hhcjMyIGNvZGUgcG9pbnQKKyAgICAgKiBAcmV0dXJuIG5ldyBudW1iZXIgb2YgY2hhcnMgaW4gdGFyZ2V0IHRoYXQgcmVwcmVzZW50cyBhIHN0cmluZworICAgICAqIEBleGNlcHRpb24gSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiBpZiBvZmZzZXQxNiBpcyBvdXQgb2YgcmFuZ2UKKyAgICAgKiBAc3RhYmxlIElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludCBzZXRDaGFyQXQoY2hhciB0YXJnZXRbXSwgaW50IGxpbWl0LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9mZnNldDE2LCBpbnQgY2hhcjMyKQorICAgIHsKKyAgICAgICAgaWYgKG9mZnNldDE2ID49IGxpbWl0KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uKG9mZnNldDE2KTsKKyAgICAgICAgfQorICAgICAgICBpbnQgY291bnQgPSAxOworICAgICAgICBjaGFyIHNpbmdsZSA9IHRhcmdldFtvZmZzZXQxNl07CisgICAgICAgIAorICAgICAgICBpZiAoaXNTdXJyb2dhdGUoc2luZ2xlKSkgCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIHBhaXJzIG9mIHRoZSBzdXJyb2dhdGUgd2l0aCBvZmZzZXQxNiBhdCB0aGUgbGVhZCBjaGFyIGZvdW5kCisgICAgICAgICAgICBpZiAoaXNMZWFkU3Vycm9nYXRlKHNpbmdsZSkgJiYgKHRhcmdldC5sZW5ndGggPiBvZmZzZXQxNiArIDEpICYmCisgICAgICAgICAgICAgICAgaXNUcmFpbFN1cnJvZ2F0ZSh0YXJnZXRbb2Zmc2V0MTYgKyAxXSkpIHsKKwkgICAgICAgICAgICBjb3VudCArKzsKKwkgICAgICAgIH0KKwkgICAgICAgIGVsc2UgeworCSAgICAgICAgICAgIC8vIHBhaXJzIG9mIHRoZSBzdXJyb2dhdGUgd2l0aCBvZmZzZXQxNiBhdCB0aGUgdHJhaWwgY2hhciAKKwkgICAgICAgICAgICAvLyBmb3VuZAorCSAgICAgICAgICAgIGlmIChpc1RyYWlsU3Vycm9nYXRlKHNpbmdsZSkgJiYgKG9mZnNldDE2ID4gMCkgJiYKKwkgICAgICAgICAgICAgICAgaXNMZWFkU3Vycm9nYXRlKHRhcmdldFtvZmZzZXQxNiAtMV0pKQorCSAgICAgICAgICAgIHsKKwkgICAgICAgICAgICAgICAgb2Zmc2V0MTYgLS07CisJICAgICAgICAgICAgICAgIGNvdW50ICsrOworCSAgICAgICAgICAgIH0KKwkgICAgICAgIH0KKwkgICAgfQorICAgIAkgIAorCSAgICBTdHJpbmcgc3RyID0gdmFsdWVPZihjaGFyMzIpOworCSAgICBpbnQgcmVzdWx0ID0gbGltaXQ7CisJICAgIGludCBzdHJsZW5ndGggPSBzdHIubGVuZ3RoKCk7CisJICAgIHRhcmdldFtvZmZzZXQxNl0gPSBzdHIuY2hhckF0KDApOworCSAgICBpZiAoY291bnQgPT0gc3RybGVuZ3RoKSB7CisJICAgICAgICBpZiAoY291bnQgPT0gMikgeworCSAgICAgICAgICAgIHRhcmdldFtvZmZzZXQxNiArIDFdID0gc3RyLmNoYXJBdCgxKTsKKwkgICAgICAgIH0KKwkgICAgfQorCSAgICBlbHNlIHsKKwkgICAgICAgIC8vIHRoaXMgaXMgbm90IGV4YWN0IG1hdGNoIGluIHNwYWNlLCB3ZSdsbCBoYXZlIHRvIGRvIHNvbWUgCisJICAgICAgICAvLyBzaGlmdGluZworCSAgICAgICAgU3lzdGVtLmFycmF5Y29weSh0YXJnZXQsIG9mZnNldDE2ICsgY291bnQsIHRhcmdldCwgCisJICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQxNiArIHN0cmxlbmd0aCwgbGltaXQgLSAob2Zmc2V0MTYgKyBjb3VudCkpOworCSAgICAgICAgaWYgKGNvdW50IDwgc3RybGVuZ3RoKSB7CisJICAgICAgICAgICAgLy8gY2hhcjMyIGlzIGEgc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXIgdHJ5aW5nIHRvIHNxdWVlemUgaW50bworCSAgICAgICAgICAgIC8vIGEgbm9uLXN1cHBsZW1lbnRhcnkgc3BhY2UKKwkgICAgICAgICAgICB0YXJnZXRbb2Zmc2V0MTYgKyAxXSA9IHN0ci5jaGFyQXQoMSk7CisJICAgICAgICAgICAgcmVzdWx0ICsrOworCSAgICAgICAgICAgIGlmIChyZXN1bHQgPCB0YXJnZXQubGVuZ3RoKSB7CisJICAgICAgICAgICAgICAgIHRhcmdldFtyZXN1bHRdID0gMDsKKwkgICAgICAgICAgICB9CisJICAgICAgICB9CisJICAgICAgICBlbHNlIHsKKwkgICAgICAgICAgICAvLyBjaGFyMzIgaXMgYSBub24tc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXIgdHJ5aW5nIHRvIGZpbGwgCisJICAgICAgICAgICAgLy8gaW50byBhIHN1cHBsZW1lbnRhcnkgc3BhY2UKKwkgICAgICAgICAgICByZXN1bHQgLS07CisJICAgICAgICAgICAgdGFyZ2V0W3Jlc3VsdF0gPSAwOworCSAgICAgICAgfQorCSAgICB9CisJICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgICAgCisgICAgLyoqCisgICAgICogU2hpZnRzIG9mZnNldDE2IGJ5IHRoZSBhcmd1bWVudCBudW1iZXIgb2YgY29kZXBvaW50cworICAgICAqIEBwYXJhbSBzb3VyY2Ugc3RyaW5nCisgICAgICogQHBhcmFtIG9mZnNldDE2IFVURjE2IHBvc2l0aW9uIHRvIHNoaWZ0CisgICAgICogQHBhcmFtIHNoaWZ0MzIgbnVtYmVyIG9mIGNvZGVwb2ludHMgdG8gc2hpZnQKKyAgICAgKiBAcmV0dXJuIG5ldyBzaGlmdGVkIG9mZnNldDE2IAorICAgICAqIEBleGNlcHRpb24gSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiBpZiB0aGUgbmV3IG9mZnNldDE2IGlzIG91dCBvZiAKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRzLgorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgaW50IG1vdmVDb2RlUG9pbnRPZmZzZXQoU3RyaW5nIHNvdXJjZSwgaW50IG9mZnNldDE2LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNoaWZ0MzIpCisgICAgeworICAgICAgICBpbnQgc2l6ZSA9IHNvdXJjZS5sZW5ndGgoKTsKKyAgICAgICAgaWYgKG9mZnNldDE2IDwgMCB8fCBzaGlmdDMyICsgb2Zmc2V0MTYgPiBzaXplKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgU3RyaW5nSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbihvZmZzZXQxNik7CisgICAgICAgIH0KKyAgICAgICAgY2hhciBjaDsKKyAgICAgICAgaW50IHJlc3VsdCA9IG9mZnNldDE2OworICAgICAgICBpbnQgY291bnQgPSBzaGlmdDMyOworICAgICAgICB3aGlsZSAocmVzdWx0IDwgc2l6ZSAmJiBjb3VudCA+IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGNoID0gc291cmNlLmNoYXJBdChyZXN1bHQpOworICAgICAgICAgICAgaWYgKGlzTGVhZFN1cnJvZ2F0ZShjaCkgJiYgKChyZXN1bHQgKyAxKSA8IHNpemUpICYmIAorICAgICAgICAgICAgICAgIGlzVHJhaWxTdXJyb2dhdGUoc291cmNlLmNoYXJBdChyZXN1bHQgKyAxKSkpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgKys7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjb3VudCAtLTsKKyAgICAgICAgICAgIHJlc3VsdCArKzsKKyAgICAgICAgfQorICAgICAgICBpZiAoY291bnQgIT0gMCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFN0cmluZ0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24oc2hpZnQzMik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTaGlmdHMgb2Zmc2V0MTYgYnkgdGhlIGFyZ3VtZW50IG51bWJlciBvZiBjb2RlcG9pbnRzCisgICAgICogQHBhcmFtIHRhcmdldCBzdHJpbmcgYnVmZmVyCisgICAgICogQHBhcmFtIG9mZnNldDE2IFVURjE2IHBvc2l0aW9uIHRvIHNoaWZ0CisgICAgICogQHBhcmFtIHNoaWZ0MzIgbnVtYmVyIG9mIGNvZGVwb2ludHMgdG8gc2hpZnQKKyAgICAgKiBAcmV0dXJuIG5ldyBzaGlmdGVkIG9mZnNldDE2IAorICAgICAqIEBleGNlcHRpb24gSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiBpZiB0aGUgbmV3IG9mZnNldDE2IGlzIG91dCBvZiAKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRzLgorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgaW50IG1vdmVDb2RlUG9pbnRPZmZzZXQoU3RyaW5nQnVmZmVyIHNvdXJjZSwgaW50IG9mZnNldDE2LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2hpZnQzMikKKyAgICB7CisgICAgICAgIGludCBzaXplID0gc291cmNlLmxlbmd0aCgpOworICAgICAgICBpZiAob2Zmc2V0MTYgPCAwIHx8IHNoaWZ0MzIgKyBvZmZzZXQxNiA+IHNpemUpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBTdHJpbmdJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uKG9mZnNldDE2KTsKKyAgICAgICAgfQorICAgICAgICBjaGFyIGNoOworICAgICAgICBpbnQgcmVzdWx0ID0gb2Zmc2V0MTY7CisgICAgICAgIGludCBjb3VudCA9IHNoaWZ0MzI7CisgICAgICAgIHdoaWxlIChyZXN1bHQgPCBzaXplICYmIGNvdW50ID4gMCkKKyAgICAgICAgeworICAgICAgICAgICAgY2ggPSBzb3VyY2UuY2hhckF0KHJlc3VsdCk7CisgICAgICAgICAgICBpZiAoaXNMZWFkU3Vycm9nYXRlKGNoKSAmJiAoKHJlc3VsdCArIDEpIDwgc2l6ZSkgJiYgCisgICAgICAgICAgICAgICAgaXNUcmFpbFN1cnJvZ2F0ZShzb3VyY2UuY2hhckF0KHJlc3VsdCArIDEpKSkgeworICAgICAgICAgICAgICAgIHJlc3VsdCArKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNvdW50IC0tOworICAgICAgICAgICAgcmVzdWx0ICsrOworICAgICAgICB9CisgICAgICAgIGlmIChjb3VudCAhPSAwKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgU3RyaW5nSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbihzaGlmdDMyKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8qKgorICAgICAqIFNoaWZ0cyBvZmZzZXQxNiBieSB0aGUgYXJndW1lbnQgbnVtYmVyIG9mIGNvZGVwb2ludHMgd2l0aGluIGEgc3ViYXJyYXkuCisgICAgICogQHBhcmFtIHRhcmdldCBjaGFyIGFycmF5CisgICAgICogQHBhcmFtIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSBzdWJhcnJheSB0byBiZSBwZXJmb3JtZWQgb24KKyAgICAgKiBAcGFyYW0gbGltaXQgcG9zaXRpb24gb2YgdGhlIHN1YmFycmF5IHRvIGJlIHBlcmZvcm1lZCBvbgorICAgICAqIEBwYXJhbSBvZmZzZXQxNiBVVEYxNiBwb3NpdGlvbiB0byBzaGlmdCByZWxhdGl2ZSB0byBzdGFydAorICAgICAqIEBwYXJhbSBzaGlmdDMyIG51bWJlciBvZiBjb2RlcG9pbnRzIHRvIHNoaWZ0CisgICAgICogQHJldHVybiBuZXcgc2hpZnRlZCBvZmZzZXQxNiByZWxhdGl2ZSB0byBzdGFydAorICAgICAqIEBleGNlcHRpb24gSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiBpZiB0aGUgbmV3IG9mZnNldDE2IGlzIG91dCBvZiAKKyAgICAgKiAgICAgICAgICAgIGJvdW5kcyB3aXRoIHJlc3BlY3QgdG8gdGhlIHN1YmFycmF5LgorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgaW50IG1vdmVDb2RlUG9pbnRPZmZzZXQoY2hhciBzb3VyY2VbXSwgaW50IHN0YXJ0LCBpbnQgbGltaXQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9mZnNldDE2LCBpbnQgc2hpZnQzMikKKyAgICB7CisgICAgICAgIG9mZnNldDE2ICs9IHN0YXJ0OworICAgICAgICBpZiAoc2hpZnQzMiArIG9mZnNldDE2ID4gbGltaXQpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBTdHJpbmdJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uKG9mZnNldDE2KTsKKyAgICAgICAgfQorICAgICAgICBjaGFyIGNoOworICAgICAgICBpbnQgcmVzdWx0ID0gb2Zmc2V0MTY7CisgICAgICAgIGludCBjb3VudCA9IHNoaWZ0MzI7CisgICAgICAgIHdoaWxlIChyZXN1bHQgPCBsaW1pdCAmJiBjb3VudCA+IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGNoID0gc291cmNlW3Jlc3VsdF07CisgICAgICAgICAgICBpZiAoaXNMZWFkU3Vycm9nYXRlKGNoKSAmJiAoKHJlc3VsdCArIDEpIDwgbGltaXQpICYmIAorICAgICAgICAgICAgICAgIGlzVHJhaWxTdXJyb2dhdGUoc291cmNlW3Jlc3VsdCArIDFdKSkgeworICAgICAgICAgICAgICAgIHJlc3VsdCArKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNvdW50IC0tOworICAgICAgICAgICAgcmVzdWx0ICsrOworICAgICAgICB9CisgICAgICAgIGlmIChjb3VudCAhPSAwKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgU3RyaW5nSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbihzaGlmdDMyKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0IC0gc3RhcnQ7CisgICAgfQorICAgICAgCisgICAgLyoqCisgICAgICogSW5zZXJ0cyBjaGFyMzIgY29kZXBvaW50IGludG8gdGFyZ2V0IGF0IHRoZSBhcmd1bWVudCBvZmZzZXQxNi4gCisgICAgICogSWYgdGhlIG9mZnNldDE2IGlzIGluIHRoZSBtaWRkbGUgb2YgYSBzdXBwbGVtZW50YXJ5IGNvZGVwb2ludCwgY2hhcjMyIAorICAgICAqIHdpbGwgYmUgaW5zZXJ0ZWQgYWZ0ZXIgdGhlIHN1cHBsZW1lbnRhcnkgY29kZXBvaW50LgorICAgICAqIFRoZSBsZW5ndGggb2YgdGFyZ2V0IGluY3JlYXNlcyBieSBvbmUgaWYgY29kZXBvaW50IGlzIG5vbi1zdXBwbGVtZW50YXJ5LCAKKyAgICAgKiAyIG90aGVyd2lzZS4gCisgICAgICogPHA+CisgICAgICogVGhlIG92ZXJhbGwgZWZmZWN0IGlzIGV4YWN0bHkgYXMgaWYgdGhlIGFyZ3VtZW50IHdlcmUgY29udmVydGVkIHRvIGEgCisgICAgICogc3RyaW5nIGJ5IHRoZSBtZXRob2QgdmFsdWVPZihjaGFyKSBhbmQgdGhlIGNoYXJhY3RlcnMgaW4gdGhhdCBzdHJpbmcgCisgICAgICogd2VyZSB0aGVuIGluc2VydGVkIGludG8gdGFyZ2V0IGF0IHRoZSBwb3NpdGlvbiBpbmRpY2F0ZWQgYnkgb2Zmc2V0MTYuIAorICAgICAqIDwvcD4KKyAgICAgKiA8cD4KKyAgICAgKiBUaGUgb2Zmc2V0IGFyZ3VtZW50IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDAsIGFuZCBsZXNzIHRoYW4gCisgICAgICogb3IgZXF1YWwgdG8gdGhlIGxlbmd0aCBvZiBzb3VyY2UuCisgICAgICogQHBhcmFtIHRhcmdldCBzdHJpbmcgYnVmZmVyIHRvIGluc2VydCB0bworICAgICAqIEBwYXJhbSBvZmZzZXQxNiBvZmZzZXQgd2hpY2ggY2hhcjMyIHdpbGwgYmUgaW5zZXJ0ZWQgaW4KKyAgICAgKiBAcGFyYW0gY2hhcjMyIGNvZGVwb2ludCB0byBiZSBpbnNlcnRlZAorICAgICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGFyZ2V0CisgICAgICogQGV4Y2VwdGlvbiBJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIHRocm93biBpZiBvZmZzZXQxNiBpcyBpbnZhbGlkLgorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nQnVmZmVyIGluc2VydChTdHJpbmdCdWZmZXIgdGFyZ2V0LCBpbnQgb2Zmc2V0MTYsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjaGFyMzIpCisgICAgeworICAgICAgICBTdHJpbmcgc3RyID0gdmFsdWVPZihjaGFyMzIpOworICAgICAgICBpZiAob2Zmc2V0MTYgIT0gdGFyZ2V0Lmxlbmd0aCgpICYmIAorICAgICAgICAgICAgYm91bmRzKHRhcmdldCwgb2Zmc2V0MTYpID09IFRSQUlMX1NVUlJPR0FURV9CT1VOREFSWSkgeworICAgICAgICAgICAgb2Zmc2V0MTYgKys7CisgICAgICAgIH0KKyAgICAgICAgdGFyZ2V0Lmluc2VydChvZmZzZXQxNiwgc3RyKTsKKyAgICAgICAgcmV0dXJuIHRhcmdldDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbnNlcnRzIGNoYXIzMiBjb2RlcG9pbnQgaW50byB0YXJnZXQgYXQgdGhlIGFyZ3VtZW50IG9mZnNldDE2LiAKKyAgICAgKiBJZiB0aGUgb2Zmc2V0MTYgaXMgaW4gdGhlIG1pZGRsZSBvZiBhIHN1cHBsZW1lbnRhcnkgY29kZXBvaW50LCBjaGFyMzIgCisgICAgICogd2lsbCBiZSBpbnNlcnRlZCBhZnRlciB0aGUgc3VwcGxlbWVudGFyeSBjb2RlcG9pbnQuCisgICAgICogTGltaXQgaW5jcmVhc2VzIGJ5IG9uZSBpZiBjb2RlcG9pbnQgaXMgbm9uLXN1cHBsZW1lbnRhcnksIDIgb3RoZXJ3aXNlLiAKKyAgICAgKiA8cD4KKyAgICAgKiBUaGUgb3ZlcmFsbCBlZmZlY3QgaXMgZXhhY3RseSBhcyBpZiB0aGUgYXJndW1lbnQgd2VyZSBjb252ZXJ0ZWQgdG8gYSAKKyAgICAgKiBzdHJpbmcgYnkgdGhlIG1ldGhvZCB2YWx1ZU9mKGNoYXIpIGFuZCB0aGUgY2hhcmFjdGVycyBpbiB0aGF0IHN0cmluZyAKKyAgICAgKiB3ZXJlIHRoZW4gaW5zZXJ0ZWQgaW50byB0YXJnZXQgYXQgdGhlIHBvc2l0aW9uIGluZGljYXRlZCBieSBvZmZzZXQxNi4gCisgICAgICogPC9wPgorICAgICAqIDxwPgorICAgICAqIFRoZSBvZmZzZXQgYXJndW1lbnQgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMCwgYW5kIGxlc3MgdGhhbiAKKyAgICAgKiBvciBlcXVhbCB0byB0aGUgbGltaXQuCisgICAgICogQHBhcmFtIHRhcmdldCBjaGFyIGFycmF5IHRvIGluc2VydCB0bworICAgICAqIEBwYXJhbSBsaW1pdCBlbmQgaW5kZXggb2YgdGhlIGNoYXIgYXJyYXksIGxpbWl0IDw9IHRhcmdldC5sZW5ndGgKKyAgICAgKiBAcGFyYW0gb2Zmc2V0MTYgb2Zmc2V0IHdoaWNoIGNoYXIzMiB3aWxsIGJlIGluc2VydGVkIGluCisgICAgICogQHBhcmFtIGNoYXIzMiBjb2RlcG9pbnQgdG8gYmUgaW5zZXJ0ZWQKKyAgICAgKiBAcmV0dXJuIG5ldyBsaW1pdCBzaXplCisgICAgICogQGV4Y2VwdGlvbiBJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIHRocm93biBpZiBvZmZzZXQxNiBpcyBpbnZhbGlkLgorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgaW50IGluc2VydChjaGFyIHRhcmdldFtdLCBpbnQgbGltaXQsIGludCBvZmZzZXQxNiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjaGFyMzIpCisgICAgeworICAgICAgICBTdHJpbmcgc3RyID0gdmFsdWVPZihjaGFyMzIpOworICAgICAgICBpZiAob2Zmc2V0MTYgIT0gbGltaXQgJiYKKyAgICAgICAgICAgIGJvdW5kcyh0YXJnZXQsIDAsIGxpbWl0LCBvZmZzZXQxNikgPT0gVFJBSUxfU1VSUk9HQVRFX0JPVU5EQVJZKSB7CisgICAgICAgICAgICBvZmZzZXQxNiArKzsKKyAgICAgICAgfQorICAgICAgICBpbnQgc2l6ZSA9IHN0ci5sZW5ndGgoKTsKKyAgICAgICAgaWYgKGxpbWl0ICsgc2l6ZSA+IHRhcmdldC5sZW5ndGgpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24ob2Zmc2V0MTYgKyBzaXplKTsKKyAgICAgICAgfQorICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KHRhcmdldCwgb2Zmc2V0MTYsIHRhcmdldCwgb2Zmc2V0MTYgKyBzaXplLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0IC0gb2Zmc2V0MTYpOworICAgICAgICB0YXJnZXRbb2Zmc2V0MTZdID0gc3RyLmNoYXJBdCgwKTsKKyAgICAgICAgaWYgKHNpemUgPT0gMikgeworICAgICAgICAgICAgdGFyZ2V0W29mZnNldDE2ICsgMV0gPSBzdHIuY2hhckF0KDEpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBsaW1pdCArIHNpemU7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVtb3ZlcyB0aGUgY29kZXBvaW50IGF0IHRoZSBzcGVjaWZpZWQgcG9zaXRpb24gaW4gdGhpcyB0YXJnZXQgCisgICAgICogKHNob3J0ZW5pbmcgdGFyZ2V0IGJ5IDEgY2hhcmFjdGVyIGlmIHRoZSBjb2RlcG9pbnQgaXMgYSAKKyAgICAgKiBub24tc3VwcGxlbWVudGFyeSwgMiBvdGhlcndpc2UpLgorICAgICAqIEBwYXJhbSB0YXJnZXQgc3RyaW5nIGJ1ZmZlciB0byByZW1vdmUgY29kZXBvaW50IGZyb20KKyAgICAgKiBAcGFyYW0gb2Zmc2V0MTYgb2Zmc2V0IHdoaWNoIHRoZSBjb2RlcG9pbnQgd2lsbCBiZSByZW1vdmVkCisgICAgICogQHJldHVybiBhIHJlZmVyZW5jZSB0byB0YXJnZXQKKyAgICAgKiBAZXhjZXB0aW9uIEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gdGhyb3duIGlmIG9mZnNldDE2IGlzIGludmFsaWQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmdCdWZmZXIgZGVsZXRlKFN0cmluZ0J1ZmZlciB0YXJnZXQsIGludCBvZmZzZXQxNikKKyAgICB7CisgICAgICAgIGludCBjb3VudCA9IDE7CisgICAgICAgIHN3aXRjaCAoYm91bmRzKHRhcmdldCwgb2Zmc2V0MTYpKSB7CisgICAgICAgICAgICBjYXNlIExFQURfU1VSUk9HQVRFX0JPVU5EQVJZOiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQgKys7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBUUkFJTF9TVVJST0dBVEVfQk9VTkRBUlk6IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCArKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0MTYgLS07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHRhcmdldC5kZWxldGUob2Zmc2V0MTYsIG9mZnNldDE2ICsgY291bnQpOworICAgICAgICByZXR1cm4gdGFyZ2V0OworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlbW92ZXMgdGhlIGNvZGVwb2ludCBhdCB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uIGluIHRoaXMgdGFyZ2V0IAorICAgICAqIChzaG9ydGVuaW5nIHRhcmdldCBieSAxIGNoYXJhY3RlciBpZiB0aGUgY29kZXBvaW50IGlzIGEgCisgICAgICogbm9uLXN1cHBsZW1lbnRhcnksIDIgb3RoZXJ3aXNlKS4KKyAgICAgKiBAcGFyYW0gdGFyZ2V0IHN0cmluZyBidWZmZXIgdG8gcmVtb3ZlIGNvZGVwb2ludCBmcm9tCisgICAgICogQHBhcmFtIGxpbWl0IGVuZCBpbmRleCBvZiB0aGUgY2hhciBhcnJheSwgbGltaXQgPD0gdGFyZ2V0Lmxlbmd0aAorICAgICAqIEBwYXJhbSBvZmZzZXQxNiBvZmZzZXQgd2hpY2ggdGhlIGNvZGVwb2ludCB3aWxsIGJlIHJlbW92ZWQKKyAgICAgKiBAcmV0dXJuIGEgbmV3IGxpbWl0IHNpemUKKyAgICAgKiBAZXhjZXB0aW9uIEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gdGhyb3duIGlmIG9mZnNldDE2IGlzIGludmFsaWQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnQgZGVsZXRlKGNoYXIgdGFyZ2V0W10sIGludCBsaW1pdCwgaW50IG9mZnNldDE2KQorICAgIHsKKyAgICAgICAgaW50IGNvdW50ID0gMTsKKyAgICAgICAgc3dpdGNoIChib3VuZHModGFyZ2V0LCAwLCBsaW1pdCwgb2Zmc2V0MTYpKSB7CisgICAgICAgICAgICBjYXNlIExFQURfU1VSUk9HQVRFX0JPVU5EQVJZOiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQgKys7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBUUkFJTF9TVVJST0dBVEVfQk9VTkRBUlk6IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCArKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0MTYgLS07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIFN5c3RlbS5hcnJheWNvcHkodGFyZ2V0LCBvZmZzZXQxNiArIGNvdW50LCB0YXJnZXQsIG9mZnNldDE2LCAKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0IC0gKG9mZnNldDE2ICsgY291bnQpKTsKKyAgICAgICAgdGFyZ2V0W2xpbWl0IC0gY291bnRdID0gMDsKKyAgICAgICAgcmV0dXJuIGxpbWl0IC0gY291bnQ7CisgICAgfQorICAgICAgCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgaW5kZXggd2l0aGluIHRoZSBhcmd1bWVudCBVVEYxNiBmb3JtYXQgVW5pY29kZSBzdHJpbmcgb2YgCisgICAgICogdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdGhlIGFyZ3VtZW50IGNvZGVwb2ludC4gSS5lLiwgdGhlIHNtYWxsZXN0IAorICAgICAqIGluZGV4IDxjb2RlPmk8L2NvZGU+IHN1Y2ggdGhhdCA8Y29kZT5VVEYxNi5jaGFyQXQoc291cmNlLCBpKSA9PSAKKyAgICAgKiBjaGFyMzI8L2NvZGU+IGlzIHRydWUuIAorICAgICAqIDxwPklmIG5vIHN1Y2ggY2hhcmFjdGVyIG9jY3VycyBpbiB0aGlzIHN0cmluZywgdGhlbiAtMSBpcyByZXR1cm5lZC48L3A+IAorICAgICAqIDxwPiAKKyAgICAgKiBFeGFtcGxlczo8YnI+CisgICAgICogVVRGMTYuaW5kZXhPZigiYWJjIiwgJ2EnKSByZXR1cm5zIDA8YnI+CisgICAgICogVVRGMTYuaW5kZXhPZigiYWJjXHVkODAwXHVkYzAwIiwgMHgxMDAwMCkgcmV0dXJucyAzPGJyPgorICAgICAqIFVURjE2LmluZGV4T2YoImFiY1x1ZDgwMFx1ZGMwMCIsIDB4ZDgwMCkgcmV0dXJucyAtMTxicj4KKyAgICAgKiA8L3A+CisgICAgICogTm90ZSB0aGlzIG1ldGhvZCBpcyBwcm92aWRlZCBhcyBzdXBwb3J0IHRvIGpkayAxLjMsIHdoaWNoIGRvZXMgbm90IAorICAgICAqIHN1cHBvcnQgc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXJzIHRvIGl0cyBmdWxsZXN0LgorICAgICAqIEBwYXJhbSBzb3VyY2UgVVRGMTYgZm9ybWF0IFVuaWNvZGUgc3RyaW5nIHRoYXQgd2lsbCBiZSBzZWFyY2hlZAorICAgICAqIEBwYXJhbSBjaGFyMzIgY29kZXBvaW50IHRvIHNlYXJjaCBmb3IgCisgICAgICogQHJldHVybiB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdGhlIGNvZGVwb2ludCBpbiB0aGUgCisgICAgICogICAgICAgICBhcmd1bWVudCBVbmljb2RlIHN0cmluZywgb3IgLTEgaWYgdGhlIGNvZGVwb2ludCBkb2VzIG5vdCBvY2N1ci4KKyAgICAgKiBAZHJhZnQgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgaW50IGluZGV4T2YoU3RyaW5nIHNvdXJjZSwgaW50IGNoYXIzMikgIAorICAgIHsKKyAgICAgICAgaWYgKGNoYXIzMiA8IENPREVQT0lOVF9NSU5fVkFMVUUgfHwgCisgICAgICAgICAgICBjaGFyMzIgPiBDT0RFUE9JTlRfTUFYX1ZBTFVFKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBcmd1bWVudCBjaGFyMzIgaXMgbm90IGEgdmFsaWQgY29kZXBvaW50Iik7CisgICAgICAgIH0KKyAgICAgICAgLy8gbm9uLXN1cnJvZ2F0ZSBibXAKKyAgICAgICAgaWYgKGNoYXIzMiA8IExFQURfU1VSUk9HQVRFX01JTl9WQUxVRSB8fAorICAgICAgICAgICAgKGNoYXIzMiA+IFRSQUlMX1NVUlJPR0FURV9NQVhfVkFMVUUgJiYgCisgICAgICAgICAgICAgY2hhcjMyIDwgU1VQUExFTUVOVEFSWV9NSU5fVkFMVUUpKSB7CisgICAgICAgICAgICByZXR1cm4gc291cmNlLmluZGV4T2YoKGNoYXIpY2hhcjMyKTsKKyAgICAgICAgfQorICAgICAgICAvLyBzdXJyb2dhdGUKKyAgICAgICAgaWYgKGNoYXIzMiA8IFNVUFBMRU1FTlRBUllfTUlOX1ZBTFVFKSB7CisgICAgICAgICAgICBpbnQgcmVzdWx0ID0gc291cmNlLmluZGV4T2YoKGNoYXIpY2hhcjMyKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPj0gMCkgeworICAgICAgICAgICAgICAgIGlmIChpc0xlYWRTdXJyb2dhdGUoKGNoYXIpY2hhcjMyKSAmJiAKKyAgICAgICAgICAgICAgICAgICAgKHJlc3VsdCA8IHNvdXJjZS5sZW5ndGgoKSAtIDEpICYmIAorICAgICAgICAgICAgICAgICAgICBpc1RyYWlsU3Vycm9nYXRlKHNvdXJjZS5jaGFyQXQocmVzdWx0ICsgMSkpKSB7IAorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXhPZihzb3VyY2UsIGNoYXIzMiwgcmVzdWx0ICsgMSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8vIHRyYWlsIHN1cnJvZ2F0ZQorICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPiAwICYmIAorICAgICAgICAgICAgICAgICAgICBpc0xlYWRTdXJyb2dhdGUoc291cmNlLmNoYXJBdChyZXN1bHQgLSAxKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4T2Yoc291cmNlLCBjaGFyMzIsIHJlc3VsdCArIDEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgICAgIC8vIHN1cHBsZW1lbnRhcnkKKyAgICAgICAgU3RyaW5nIGNoYXIzMnN0ciA9IHRvU3RyaW5nKGNoYXIzMik7CisgICAgICAgIHJldHVybiBzb3VyY2UuaW5kZXhPZihjaGFyMzJzdHIpOworICAgIH0KKyAgICAgCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgaW5kZXggd2l0aGluIHRoZSBhcmd1bWVudCBVVEYxNiBmb3JtYXQgVW5pY29kZSBzdHJpbmcgb2YgCisgICAgICogdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdGhlIGFyZ3VtZW50IHN0cmluZyBzdHIuIFRoaXMgbWV0aG9kIGlzIAorICAgICAqIGltcGxlbWVudGVkIGJhc2VkIG9uIGNvZGVwb2ludHMsIGhlbmNlIGEgImxlYWQgc3Vycm9nYXRlIGNoYXJhY3RlciArCisgICAgICogdHJhaWwgc3Vycm9nYXRlIGNoYXJhY3RlciIgaXMgdHJlYXRlZCBhcyBvbmUgZW50aXR5LmUKKyAgICAgKiBIZW5jZSBpZiB0aGUgc3RyIHN0YXJ0cyB3aXRoIHRyYWlsIHN1cnJvZ2F0ZSBjaGFyYWN0ZXIgYXQgaW5kZXggMCwgYSAKKyAgICAgKiBzb3VyY2Ugd2l0aCBhIGxlYWRpbmcgYSBzdXJyb2dhdGUgY2hhcmFjdGVyIGJlZm9yZSBzdHIgZm91bmQgYXQgaW4gCisgICAgICogc291cmNlIHdpbGwgbm90IGhhdmUgYSB2YWxpZCBtYXRjaC4gVmljZSB2ZXJzYSBmb3IgbGVhZCBzdXJyb2dhdGVzIAorICAgICAqIHRoYXQgZW5kcyBzdHIuCisgICAgICogU2VlIGV4YW1wbGUgYmVsb3cuCisgICAgICogPHA+SWYgbm8gc3VjaCBzdHJpbmcgc3RyIG9jY3VycyBpbiB0aGlzIHNvdXJjZSwgdGhlbiAtMSBpcyByZXR1cm5lZC4KKyAgICAgKiA8L3A+IDxwPgorICAgICAqIEV4YW1wbGVzOjxicj4KKyAgICAgKiBVVEYxNi5pbmRleE9mKCJhYmMiLCAiYWIiKSByZXR1cm5zIDA8YnI+CisgICAgICogVVRGMTYuaW5kZXhPZigiYWJjXHVkODAwXHVkYzAwIiwgIlx1ZDgwMFx1ZGMwMCIpIHJldHVybnMgMzxicj4KKyAgICAgKiBVVEYxNi5pbmRleE9mKCJhYmNcdWQ4MDBcdWRjMDAiLCAiXHVkODAwIikgcmV0dXJucyAtMTxicj4KKyAgICAgKiA8L3A+CisgICAgICogTm90ZSB0aGlzIG1ldGhvZCBpcyBwcm92aWRlZCBhcyBzdXBwb3J0IHRvIGpkayAxLjMsIHdoaWNoIGRvZXMgbm90IAorICAgICAqIHN1cHBvcnQgc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXJzIHRvIGl0cyBmdWxsZXN0LgorICAgICAqIEBwYXJhbSBzb3VyY2UgVVRGMTYgZm9ybWF0IFVuaWNvZGUgc3RyaW5nIHRoYXQgd2lsbCBiZSBzZWFyY2hlZAorICAgICAqIEBwYXJhbSBzdHIgVVRGMTYgZm9ybWF0IFVuaWNvZGUgc3RyaW5nIHRvIHNlYXJjaCBmb3IKKyAgICAgKiBAcmV0dXJuIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB0aGUgY29kZXBvaW50IGluIHRoZSAKKyAgICAgKiAgICAgICAgIGFyZ3VtZW50IFVuaWNvZGUgc3RyaW5nLCBvciAtMSBpZiB0aGUgY29kZXBvaW50IGRvZXMgbm90IG9jY3VyLgorICAgICAqIEBkcmFmdCBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnQgaW5kZXhPZihTdHJpbmcgc291cmNlLCBTdHJpbmcgc3RyKSAgCisgICAgeworICAgICAgICBpbnQgc3RyTGVuZ3RoID0gc3RyLmxlbmd0aCgpOworICAgICAgICAvLyBub24tc3Vycm9nYXRlIGVuZHMKKyAgICAgICAgaWYgKCFpc1RyYWlsU3Vycm9nYXRlKHN0ci5jaGFyQXQoMCkpICYmIAorICAgICAgICAgICAgIWlzTGVhZFN1cnJvZ2F0ZShzdHIuY2hhckF0KHN0ckxlbmd0aCAtIDEpKSkgeworICAgICAgICAgICAgcmV0dXJuIHNvdXJjZS5pbmRleE9mKHN0cik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGludCByZXN1bHQgICAgPSBzb3VyY2UuaW5kZXhPZihzdHIpOworICAgICAgICBpbnQgcmVzdWx0RW5kID0gcmVzdWx0ICsgc3RyTGVuZ3RoOworICAgICAgICBpZiAocmVzdWx0ID49IDApIHsKKyAgICAgICAgICAgIC8vIGNoZWNrIGxhc3QgY2hhcmFjdGVyCisgICAgICAgICAgICBpZiAoaXNMZWFkU3Vycm9nYXRlKHN0ci5jaGFyQXQoc3RyTGVuZ3RoIC0gMSkpICYmIAorICAgICAgICAgICAgICAgIChyZXN1bHQgPCBzb3VyY2UubGVuZ3RoKCkgLSAxKSAmJiAKKyAgICAgICAgICAgICAgICBpc1RyYWlsU3Vycm9nYXRlKHNvdXJjZS5jaGFyQXQocmVzdWx0RW5kICsgMSkpKSB7IAorICAgICAgICAgICAgICAgIHJldHVybiBpbmRleE9mKHNvdXJjZSwgc3RyLCByZXN1bHRFbmQgKyAxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIGNoZWNrIGZpcnN0IGNoYXJhY3RlciB3aGljaCBpcyBhIHRyYWlsIHN1cnJvZ2F0ZQorICAgICAgICAgICAgaWYgKGlzVHJhaWxTdXJyb2dhdGUoc3RyLmNoYXJBdCgwKSkgJiYgcmVzdWx0ID4gMCAmJiAKKyAgICAgICAgICAgICAgICBpc0xlYWRTdXJyb2dhdGUoc291cmNlLmNoYXJBdChyZXN1bHQgLSAxKSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXhPZihzb3VyY2UsIHN0ciwgcmVzdWx0RW5kICsgMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGluZGV4IHdpdGhpbiB0aGUgYXJndW1lbnQgVVRGMTYgZm9ybWF0IFVuaWNvZGUgc3RyaW5nIG9mIAorICAgICAqIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHRoZSBhcmd1bWVudCBjb2RlcG9pbnQuIEkuZS4sIHRoZSBzbWFsbGVzdCAKKyAgICAgKiBpbmRleCBpIHN1Y2ggdGhhdDogPGJyPgorICAgICAqIChVVEYxNi5jaGFyQXQoc291cmNlLCBpKSA9PSBjaGFyMzIgJiYgaSA+PSBmcm9tSW5kZXgpIGlzIHRydWUuIAorICAgICAqIDxwPklmIG5vIHN1Y2ggY2hhcmFjdGVyIG9jY3VycyBpbiB0aGlzIHN0cmluZywgdGhlbiAtMSBpcyByZXR1cm5lZC48L3A+IAorICAgICAqIDxwPgorICAgICAqIEV4YW1wbGVzOjxicj4KKyAgICAgKiBVVEYxNi5pbmRleE9mKCJhYmMiLCAnYScsIDEpIHJldHVybnMgLTE8YnI+CisgICAgICogVVRGMTYuaW5kZXhPZigiYWJjXHVkODAwXHVkYzAwIiwgMHgxMDAwMCwgMSkgcmV0dXJucyAzPGJyPgorICAgICAqIFVURjE2LmluZGV4T2YoImFiY1x1ZDgwMFx1ZGMwMCIsIDB4ZDgwMCwgMSkgcmV0dXJucyAtMTxicj4KKyAgICAgKiA8L3A+CisgICAgICogTm90ZSB0aGlzIG1ldGhvZCBpcyBwcm92aWRlZCBhcyBzdXBwb3J0IHRvIGpkayAxLjMsIHdoaWNoIGRvZXMgbm90IAorICAgICAqIHN1cHBvcnQgc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXJzIHRvIGl0cyBmdWxsZXN0LgorICAgICAqIEBwYXJhbSBzb3VyY2UgVVRGMTYgZm9ybWF0IFVuaWNvZGUgc3RyaW5nIHRoYXQgd2lsbCBiZSBzZWFyY2hlZAorICAgICAqIEBwYXJhbSBjaGFyMzIgY29kZXBvaW50IHRvIHNlYXJjaCBmb3IgCisgICAgICogQHBhcmFtIGZyb21JbmRleCB0aGUgaW5kZXggdG8gc3RhcnQgdGhlIHNlYXJjaCBmcm9tLiAKKyAgICAgKiBAcmV0dXJuIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB0aGUgY29kZXBvaW50IGluIHRoZSAKKyAgICAgKiAgICAgICAgIGFyZ3VtZW50IFVuaWNvZGUgc3RyaW5nIGF0IG9yIGFmdGVyIGZyb21JbmRleCwgb3IgLTEgaWYgdGhlIAorICAgICAqICAgICAgICAgY29kZXBvaW50IGRvZXMgbm90IG9jY3VyLgorICAgICAqIEBkcmFmdCBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnQgaW5kZXhPZihTdHJpbmcgc291cmNlLCBpbnQgY2hhcjMyLCBpbnQgZnJvbUluZGV4KSAKKyAgICB7CisgICAgICAgIGlmIChjaGFyMzIgPCBDT0RFUE9JTlRfTUlOX1ZBTFVFIHx8IGNoYXIzMiA+IENPREVQT0lOVF9NQVhfVkFMVUUpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFyZ3VtZW50IGNoYXIzMiBpcyBub3QgYSB2YWxpZCBjb2RlcG9pbnQiKTsKKyAgICAgICAgfQorICAgICAgICAvLyBub24tc3Vycm9nYXRlIGJtcAorICAgICAgICBpZiAoY2hhcjMyIDwgTEVBRF9TVVJST0dBVEVfTUlOX1ZBTFVFIHx8CisgICAgICAgICAgICAoY2hhcjMyID4gVFJBSUxfU1VSUk9HQVRFX01BWF9WQUxVRSAmJiAKKyAgICAgICAgICAgICBjaGFyMzIgPCBTVVBQTEVNRU5UQVJZX01JTl9WQUxVRSkpIHsKKyAgICAgICAgICAgIHJldHVybiBzb3VyY2UuaW5kZXhPZigoY2hhciljaGFyMzIsIGZyb21JbmRleCk7CisgICAgICAgIH0KKyAgICAgICAgLy8gc3Vycm9nYXRlCisgICAgICAgIGlmIChjaGFyMzIgPCBTVVBQTEVNRU5UQVJZX01JTl9WQUxVRSkgeworICAgICAgICAgICAgaW50IHJlc3VsdCA9IHNvdXJjZS5pbmRleE9mKChjaGFyKWNoYXIzMiwgZnJvbUluZGV4KTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPj0gMCkgeworICAgICAgICAgICAgICAgIGlmIChpc0xlYWRTdXJyb2dhdGUoKGNoYXIpY2hhcjMyKSAmJiAKKyAgICAgICAgICAgICAgICAgICAgKHJlc3VsdCA8IHNvdXJjZS5sZW5ndGgoKSAtIDEpICYmIAorICAgICAgICAgICAgICAgICAgICBpc1RyYWlsU3Vycm9nYXRlKHNvdXJjZS5jaGFyQXQocmVzdWx0ICsgMSkpKSB7IAorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXhPZihzb3VyY2UsIGNoYXIzMiwgcmVzdWx0ICsgMSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8vIHRyYWlsIHN1cnJvZ2F0ZQorICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPiAwICYmIAorICAgICAgICAgICAgICAgICAgICBpc0xlYWRTdXJyb2dhdGUoc291cmNlLmNoYXJBdChyZXN1bHQgLSAxKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4T2Yoc291cmNlLCBjaGFyMzIsIHJlc3VsdCArIDEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgICAgIC8vIHN1cHBsZW1lbnRhcnkKKyAgICAgICAgU3RyaW5nIGNoYXIzMnN0ciA9IHRvU3RyaW5nKGNoYXIzMik7CisgICAgICAgIHJldHVybiBzb3VyY2UuaW5kZXhPZihjaGFyMzJzdHIsIGZyb21JbmRleCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgaW5kZXggd2l0aGluIHRoZSBhcmd1bWVudCBVVEYxNiBmb3JtYXQgVW5pY29kZSBzdHJpbmcgb2YgCisgICAgICogdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdGhlIGFyZ3VtZW50IHN0cmluZyBzdHIuIFRoaXMgbWV0aG9kIGlzIAorICAgICAqIGltcGxlbWVudGVkIGJhc2VkIG9uIGNvZGVwb2ludHMsIGhlbmNlIGEgImxlYWQgc3Vycm9nYXRlIGNoYXJhY3RlciArCisgICAgICogdHJhaWwgc3Vycm9nYXRlIGNoYXJhY3RlciIgaXMgdHJlYXRlZCBhcyBvbmUgZW50aXR5LmUKKyAgICAgKiBIZW5jZSBpZiB0aGUgc3RyIHN0YXJ0cyB3aXRoIHRyYWlsIHN1cnJvZ2F0ZSBjaGFyYWN0ZXIgYXQgaW5kZXggMCwgYSAKKyAgICAgKiBzb3VyY2Ugd2l0aCBhIGxlYWRpbmcgYSBzdXJyb2dhdGUgY2hhcmFjdGVyIGJlZm9yZSBzdHIgZm91bmQgYXQgaW4gICAKKyAgICAgKiBzb3VyY2Ugd2lsbCBub3QgaGF2ZSBhIHZhbGlkIG1hdGNoLiBWaWNlIHZlcnNhIGZvciBsZWFkIHN1cnJvZ2F0ZXMgICAKKyAgICAgKiB0aGF0IGVuZHMgc3RyLgorICAgICAqIFNlZSBleGFtcGxlIGJlbG93LgorICAgICAqIDxwPklmIG5vIHN1Y2ggc3RyaW5nIHN0ciBvY2N1cnMgaW4gdGhpcyBzb3VyY2UsIHRoZW4gLTEgaXMgcmV0dXJuZWQuCisgICAgICogPC9wPiA8cD4KKyAgICAgKiBFeGFtcGxlczo8YnI+CisgICAgICogVVRGMTYuaW5kZXhPZigiYWJjIiwgImFiIiwgMCkgcmV0dXJucyAwPGJyPgorICAgICAqIFVURjE2LmluZGV4T2YoImFiY1x1ZDgwMFx1ZGMwMCIsICJcdWQ4MDBcdWRjMDAiLCAwKSByZXR1cm5zIDM8YnI+CisgICAgICogVVRGMTYuaW5kZXhPZigiYWJjXHVkODAwXHVkYzAwIiwgIlx1ZDgwMFx1ZGMwMCIsIDIpIHJldHVybnMgMzxicj4gCisgICAgICogVVRGMTYuaW5kZXhPZigiYWJjXHVkODAwXHVkYzAwIiwgIlx1ZDgwMCIsIDApIHJldHVybnMgLTE8YnI+CisgICAgICogPC9wPgorICAgICAqIE5vdGUgdGhpcyBtZXRob2QgaXMgcHJvdmlkZWQgYXMgc3VwcG9ydCB0byBqZGsgMS4zLCB3aGljaCBkb2VzIG5vdCAKKyAgICAgKiBzdXBwb3J0IHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVycyB0byBpdHMgZnVsbGVzdC4KKyAgICAgKiBAcGFyYW0gc291cmNlIFVURjE2IGZvcm1hdCBVbmljb2RlIHN0cmluZyB0aGF0IHdpbGwgYmUgc2VhcmNoZWQKKyAgICAgKiBAcGFyYW0gc3RyIFVURjE2IGZvcm1hdCBVbmljb2RlIHN0cmluZyB0byBzZWFyY2ggZm9yCisgICAgICogQHBhcmFtIGZyb21JbmRleCB0aGUgaW5kZXggdG8gc3RhcnQgdGhlIHNlYXJjaCBmcm9tLiAKKyAgICAgKiBAcmV0dXJuIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB0aGUgY29kZXBvaW50IGluIHRoZSAKKyAgICAgKiAgICAgICAgIGFyZ3VtZW50IFVuaWNvZGUgc3RyaW5nLCBvciAtMSBpZiB0aGUgY29kZXBvaW50IGRvZXMgbm90IG9jY3VyLgorICAgICAqIEBkcmFmdCBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnQgaW5kZXhPZihTdHJpbmcgc291cmNlLCBTdHJpbmcgc3RyLCBpbnQgZnJvbUluZGV4KSAgCisgICAgeworICAgICAgICBpbnQgc3RyTGVuZ3RoID0gc3RyLmxlbmd0aCgpOworICAgICAgICAvLyBub24tc3Vycm9nYXRlIGVuZHMKKyAgICAgICAgaWYgKCFpc1RyYWlsU3Vycm9nYXRlKHN0ci5jaGFyQXQoMCkpICYmIAorICAgICAgICAgICAgIWlzTGVhZFN1cnJvZ2F0ZShzdHIuY2hhckF0KHN0ckxlbmd0aCAtIDEpKSkgeworICAgICAgICAgICAgcmV0dXJuIHNvdXJjZS5pbmRleE9mKHN0ciwgZnJvbUluZGV4KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaW50IHJlc3VsdCAgICA9IHNvdXJjZS5pbmRleE9mKHN0ciwgZnJvbUluZGV4KTsKKyAgICAgICAgaW50IHJlc3VsdEVuZCA9IHJlc3VsdCArIHN0ckxlbmd0aDsKKyAgICAgICAgaWYgKHJlc3VsdCA+PSAwKSB7CisgICAgICAgICAgICAvLyBjaGVjayBsYXN0IGNoYXJhY3RlcgorICAgICAgICAgICAgaWYgKGlzTGVhZFN1cnJvZ2F0ZShzdHIuY2hhckF0KHN0ckxlbmd0aCAtIDEpKSAmJiAKKyAgICAgICAgICAgICAgICAocmVzdWx0IDwgc291cmNlLmxlbmd0aCgpIC0gMSkgJiYgCisgICAgICAgICAgICAgICAgaXNUcmFpbFN1cnJvZ2F0ZShzb3VyY2UuY2hhckF0KHJlc3VsdEVuZCkpKSB7IAorICAgICAgICAgICAgICAgIHJldHVybiBpbmRleE9mKHNvdXJjZSwgc3RyLCByZXN1bHRFbmQgKyAxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIGNoZWNrIGZpcnN0IGNoYXJhY3RlciB3aGljaCBpcyBhIHRyYWlsIHN1cnJvZ2F0ZQorICAgICAgICAgICAgaWYgKGlzVHJhaWxTdXJyb2dhdGUoc3RyLmNoYXJBdCgwKSkgJiYgcmVzdWx0ID4gMCAmJiAKKyAgICAgICAgICAgICAgICBpc0xlYWRTdXJyb2dhdGUoc291cmNlLmNoYXJBdChyZXN1bHQgLSAxKSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXhPZihzb3VyY2UsIHN0ciwgcmVzdWx0RW5kICsgMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGluZGV4IHdpdGhpbiB0aGUgYXJndW1lbnQgVVRGMTYgZm9ybWF0IFVuaWNvZGUgc3RyaW5nIG9mIAorICAgICAqIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgdGhlIGFyZ3VtZW50IGNvZGVwb2ludC4gSS5lLiwgdGhlIGluZGV4IHJldHVybmVkIAorICAgICAqIGlzIHRoZSBsYXJnZXN0IHZhbHVlIGkgc3VjaCB0aGF0OiBVVEYxNi5jaGFyQXQoc291cmNlLCBpKSA9PSBjaGFyMzIKKyAgICAgKiBpcyB0cnVlLiAKKyAgICAgKiA8cD4KKyAgICAgKiBFeGFtcGxlczo8YnI+CisgICAgICogVVRGMTYubGFzdEluZGV4T2YoImFiYyIsICdhJykgcmV0dXJucyAwPGJyPgorICAgICAqIFVURjE2Lmxhc3RJbmRleE9mKCJhYmNcdWQ4MDBcdWRjMDAiLCAweDEwMDAwKSByZXR1cm5zIDM8YnI+CisgICAgICogVVRGMTYubGFzdEluZGV4T2YoImFiY1x1ZDgwMFx1ZGMwMCIsIDB4ZDgwMCkgcmV0dXJucyAtMTxicj4KKyAgICAgKiA8L3A+CisgICAgICogPHA+c291cmNlIGlzIHNlYXJjaGVkIGJhY2t3YXJkcyBzdGFydGluZyBhdCB0aGUgbGFzdCBjaGFyYWN0ZXIuPC9wPiAKKyAgICAgKiBOb3RlIHRoaXMgbWV0aG9kIGlzIHByb3ZpZGVkIGFzIHN1cHBvcnQgdG8gamRrIDEuMywgd2hpY2ggZG9lcyBub3QgCisgICAgICogc3VwcG9ydCBzdXBwbGVtZW50YXJ5IGNoYXJhY3RlcnMgdG8gaXRzIGZ1bGxlc3QuCisgICAgICogQHBhcmFtIHNvdXJjZSBVVEYxNiBmb3JtYXQgVW5pY29kZSBzdHJpbmcgdGhhdCB3aWxsIGJlIHNlYXJjaGVkCisgICAgICogQHBhcmFtIGNoYXIzMiBjb2RlcG9pbnQgdG8gc2VhcmNoIGZvciAKKyAgICAgKiBAcmV0dXJuIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIHRoZSBjb2RlcG9pbnQgaW4gc291cmNlLCAKKyAgICAgKiAgICAgICAgIG9yIC0xIGlmIHRoZSBjb2RlcG9pbnQgZG9lcyBub3Qgb2NjdXIuCisgICAgICogQGRyYWZ0IElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludCBsYXN0SW5kZXhPZihTdHJpbmcgc291cmNlLCBpbnQgY2hhcjMyKSAgCisgICAgeworICAgICAgICBpZiAoY2hhcjMyIDwgQ09ERVBPSU5UX01JTl9WQUxVRSB8fCBjaGFyMzIgPiBDT0RFUE9JTlRfTUFYX1ZBTFVFKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBcmd1bWVudCBjaGFyMzIgaXMgbm90IGEgdmFsaWQgY29kZXBvaW50Iik7CisgICAgICAgIH0KKyAgICAgICAgLy8gbm9uLXN1cnJvZ2F0ZSBibXAKKyAgICAgICAgaWYgKGNoYXIzMiA8IExFQURfU1VSUk9HQVRFX01JTl9WQUxVRSB8fAorICAgICAgICAgICAgKGNoYXIzMiA+IFRSQUlMX1NVUlJPR0FURV9NQVhfVkFMVUUgJiYgCisgICAgICAgICAgICAgY2hhcjMyIDwgU1VQUExFTUVOVEFSWV9NSU5fVkFMVUUpKSB7CisgICAgICAgICAgICByZXR1cm4gc291cmNlLmxhc3RJbmRleE9mKChjaGFyKWNoYXIzMik7CisgICAgICAgIH0KKyAgICAgICAgLy8gc3Vycm9nYXRlCisgICAgICAgIGlmIChjaGFyMzIgPCBTVVBQTEVNRU5UQVJZX01JTl9WQUxVRSkgeworICAgICAgICAgICAgaW50IHJlc3VsdCA9IHNvdXJjZS5sYXN0SW5kZXhPZigoY2hhciljaGFyMzIpOworICAgICAgICAgICAgaWYgKHJlc3VsdCA+PSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzTGVhZFN1cnJvZ2F0ZSgoY2hhciljaGFyMzIpICYmIAorICAgICAgICAgICAgICAgICAgICAocmVzdWx0IDwgc291cmNlLmxlbmd0aCgpIC0gMSkgJiYgCisgICAgICAgICAgICAgICAgICAgIGlzVHJhaWxTdXJyb2dhdGUoc291cmNlLmNoYXJBdChyZXN1bHQgKyAxKSkpIHsgCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBsYXN0SW5kZXhPZihzb3VyY2UsIGNoYXIzMiwgcmVzdWx0IC0gMSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8vIHRyYWlsIHN1cnJvZ2F0ZQorICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPiAwICYmIAorICAgICAgICAgICAgICAgICAgICBpc0xlYWRTdXJyb2dhdGUoc291cmNlLmNoYXJBdChyZXN1bHQgLSAxKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxhc3RJbmRleE9mKHNvdXJjZSwgY2hhcjMyLCByZXN1bHQgLSAxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICAvLyBzdXBwbGVtZW50YXJ5CisgICAgICAgIFN0cmluZyBjaGFyMzJzdHIgPSB0b1N0cmluZyhjaGFyMzIpOworICAgICAgICByZXR1cm4gc291cmNlLmxhc3RJbmRleE9mKGNoYXIzMnN0cik7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGluZGV4IHdpdGhpbiB0aGUgYXJndW1lbnQgVVRGMTYgZm9ybWF0IFVuaWNvZGUgc3RyaW5nIG9mIAorICAgICAqIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgdGhlIGFyZ3VtZW50IHN0cmluZyBzdHIuIFRoaXMgbWV0aG9kIGlzIAorICAgICAqIGltcGxlbWVudGVkIGJhc2VkIG9uIGNvZGVwb2ludHMsIGhlbmNlIGEgImxlYWQgc3Vycm9nYXRlIGNoYXJhY3RlciArCisgICAgICogdHJhaWwgc3Vycm9nYXRlIGNoYXJhY3RlciIgaXMgdHJlYXRlZCBhcyBvbmUgZW50aXR5LmUKKyAgICAgKiBIZW5jZSBpZiB0aGUgc3RyIHN0YXJ0cyB3aXRoIHRyYWlsIHN1cnJvZ2F0ZSBjaGFyYWN0ZXIgYXQgaW5kZXggMCwgYSAKKyAgICAgKiBzb3VyY2Ugd2l0aCBhIGxlYWRpbmcgYSBzdXJyb2dhdGUgY2hhcmFjdGVyIGJlZm9yZSBzdHIgZm91bmQgYXQgaW4gCisgICAgICogc291cmNlIHdpbGwgbm90IGhhdmUgYSB2YWxpZCBtYXRjaC4gVmljZSB2ZXJzYSBmb3IgbGVhZCBzdXJyb2dhdGVzIAorICAgICAqIHRoYXQgZW5kcyBzdHIuCisgICAgICogU2VlIGV4YW1wbGUgYmVsb3cuCisgICAgICogPHA+CisgICAgICogRXhhbXBsZXM6PGJyPgorICAgICAqIFVURjE2Lmxhc3RJbmRleE9mKCJhYmMiLCAiYSIpIHJldHVybnMgMDxicj4KKyAgICAgKiBVVEYxNi5sYXN0SW5kZXhPZigiYWJjXHVkODAwXHVkYzAwIiwgIlx1ZDgwMFx1ZGMwMCIpIHJldHVybnMgMzxicj4KKyAgICAgKiBVVEYxNi5sYXN0SW5kZXhPZigiYWJjXHVkODAwXHVkYzAwIiwgIlx1ZDgwMCIpIHJldHVybnMgLTE8YnI+CisgICAgICogPC9wPgorICAgICAqIDxwPnNvdXJjZSBpcyBzZWFyY2hlZCBiYWNrd2FyZHMgc3RhcnRpbmcgYXQgdGhlIGxhc3QgY2hhcmFjdGVyLjwvcD4gCisgICAgICogTm90ZSB0aGlzIG1ldGhvZCBpcyBwcm92aWRlZCBhcyBzdXBwb3J0IHRvIGpkayAxLjMsIHdoaWNoIGRvZXMgbm90IAorICAgICAqIHN1cHBvcnQgc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXJzIHRvIGl0cyBmdWxsZXN0LgorICAgICAqIEBwYXJhbSBzb3VyY2UgVVRGMTYgZm9ybWF0IFVuaWNvZGUgc3RyaW5nIHRoYXQgd2lsbCBiZSBzZWFyY2hlZAorICAgICAqIEBwYXJhbSBzdHIgVVRGMTYgZm9ybWF0IFVuaWNvZGUgc3RyaW5nIHRvIHNlYXJjaCBmb3IgCisgICAgICogQHJldHVybiB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiB0aGUgY29kZXBvaW50IGluIHNvdXJjZSwgCisgICAgICogICAgICAgICBvciAtMSBpZiB0aGUgY29kZXBvaW50IGRvZXMgbm90IG9jY3VyLgorICAgICAqIEBkcmFmdCBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnQgbGFzdEluZGV4T2YoU3RyaW5nIHNvdXJjZSwgU3RyaW5nIHN0cikgIAorICAgIHsKKyAgICAgICAgaW50IHN0ckxlbmd0aCA9IHN0ci5sZW5ndGgoKTsKKyAgICAgICAgLy8gbm9uLXN1cnJvZ2F0ZSBlbmRzCisgICAgICAgIGlmICghaXNUcmFpbFN1cnJvZ2F0ZShzdHIuY2hhckF0KDApKSAmJiAKKyAgICAgICAgICAgICFpc0xlYWRTdXJyb2dhdGUoc3RyLmNoYXJBdChzdHJMZW5ndGggLSAxKSkpIHsKKyAgICAgICAgICAgIHJldHVybiBzb3VyY2UubGFzdEluZGV4T2Yoc3RyKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaW50IHJlc3VsdCAgICA9IHNvdXJjZS5sYXN0SW5kZXhPZihzdHIpOworICAgICAgICBpZiAocmVzdWx0ID49IDApIHsKKyAgICAgICAgICAgIC8vIGNoZWNrIGxhc3QgY2hhcmFjdGVyCisgICAgICAgICAgICBpZiAoaXNMZWFkU3Vycm9nYXRlKHN0ci5jaGFyQXQoc3RyTGVuZ3RoIC0gMSkpICYmIAorICAgICAgICAgICAgICAgIChyZXN1bHQgPCBzb3VyY2UubGVuZ3RoKCkgLSAxKSAmJiAKKyAgICAgICAgICAgICAgICBpc1RyYWlsU3Vycm9nYXRlKHNvdXJjZS5jaGFyQXQocmVzdWx0ICsgc3RyTGVuZ3RoICsgMSkpKSB7IAorICAgICAgICAgICAgICAgIHJldHVybiBsYXN0SW5kZXhPZihzb3VyY2UsIHN0ciwgcmVzdWx0IC0gMSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBjaGVjayBmaXJzdCBjaGFyYWN0ZXIgd2hpY2ggaXMgYSB0cmFpbCBzdXJyb2dhdGUKKyAgICAgICAgICAgIGlmIChpc1RyYWlsU3Vycm9nYXRlKHN0ci5jaGFyQXQoMCkpICYmIHJlc3VsdCA+IDAgJiYgCisgICAgICAgICAgICAgICAgaXNMZWFkU3Vycm9nYXRlKHNvdXJjZS5jaGFyQXQocmVzdWx0IC0gMSkpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGxhc3RJbmRleE9mKHNvdXJjZSwgc3RyLCByZXN1bHQgLSAxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogPHA+UmV0dXJucyB0aGUgaW5kZXggd2l0aGluIHRoZSBhcmd1bWVudCBVVEYxNiBmb3JtYXQgVW5pY29kZSBzdHJpbmcgb2YgCisgICAgICogdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiB0aGUgYXJndW1lbnQgY29kZXBvaW50LCB3aGVyZSB0aGUgcmVzdWx0IGlzIGxlc3MKKyAgICAgKiB0aGFuIG9yIGVxdWFscyB0byBmcm9tSW5kZXguPC9wPiAKKyAgICAgKiA8cD5UaGlzIG1ldGhvZCBpcyBpbXBsZW1lbnRlZCBiYXNlZCBvbiBjb2RlcG9pbnRzLCBoZW5jZSBhIHNpbmdsZSAKKyAgICAgKiBzdXJyb2dhdGUgY2hhcmFjdGVyIHdpbGwgbm90IG1hdGNoIGEgc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXIuPC9wPgorICAgICAqIDxwPnNvdXJjZSBpcyBzZWFyY2hlZCBiYWNrd2FyZHMgc3RhcnRpbmcgYXQgdGhlIGxhc3QgY2hhcmFjdGVyIHN0YXJ0aW5nIAorICAgICAqIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXguPC9wPgorICAgICAqIDxwPgorICAgICAqIEV4YW1wbGVzOjxicj4KKyAgICAgKiBVVEYxNi5sYXN0SW5kZXhPZigiYWJjIiwgJ2MnLCAyKSByZXR1cm5zIDI8YnI+CisgICAgICogVVRGMTYubGFzdEluZGV4T2YoImFiYyIsICdjJywgMSkgcmV0dXJucyAtMTxicj4KKyAgICAgKiBVVEYxNi5sYXN0SW5kZXhPZigiYWJjXHVkODAwXHVkYzAwIiwgMHgxMDAwMCwgNSkgcmV0dXJucyAzPGJyPgorICAgICAqIFVURjE2Lmxhc3RJbmRleE9mKCJhYmNcdWQ4MDBcdWRjMDAiLCAweDEwMDAwLCAzKSByZXR1cm5zIDM8YnI+CisgICAgICogVVRGMTYubGFzdEluZGV4T2YoImFiY1x1ZDgwMFx1ZGMwMCIsIDB4ZDgwMCkgcmV0dXJucyAtMTxicj4KKyAgICAgKiA8L3A+CisgICAgICogTm90ZSB0aGlzIG1ldGhvZCBpcyBwcm92aWRlZCBhcyBzdXBwb3J0IHRvIGpkayAxLjMsIHdoaWNoIGRvZXMgbm90IAorICAgICAqIHN1cHBvcnQgc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXJzIHRvIGl0cyBmdWxsZXN0LgorICAgICAqIEBwYXJhbSBzb3VyY2UgVVRGMTYgZm9ybWF0IFVuaWNvZGUgc3RyaW5nIHRoYXQgd2lsbCBiZSBzZWFyY2hlZAorICAgICAqIEBwYXJhbSBjaGFyMzIgY29kZXBvaW50IHRvIHNlYXJjaCBmb3IgCisgICAgICogQHBhcmFtIGZyb21JbmRleCB0aGUgaW5kZXggdG8gc3RhcnQgdGhlIHNlYXJjaCBmcm9tLiBUaGVyZSBpcyBubyAKKyAgICAgKiAgICAgICAgICAgICAgICAgIHJlc3RyaWN0aW9uIG9uIHRoZSB2YWx1ZSBvZiBmcm9tSW5kZXguIElmIGl0IGlzIAorICAgICAqICAgICAgICAgICAgICAgICAgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBsZW5ndGggb2YgdGhpcyBzdHJpbmcsIAorICAgICAqICAgICAgICAgICAgICAgICAgaXQgaGFzIHRoZSBzYW1lIGVmZmVjdCBhcyBpZiBpdCB3ZXJlIGVxdWFsIHRvIG9uZSAKKyAgICAgKiAgICAgICAgICAgICAgICAgIGxlc3MgdGhhbiB0aGUgbGVuZ3RoIG9mIHRoaXMgc3RyaW5nOiB0aGlzIGVudGlyZSAKKyAgICAgKiAgICAgICAgICAgICAgICAgIHN0cmluZyBtYXkgYmUgc2VhcmNoZWQuIElmIGl0IGlzIG5lZ2F0aXZlLCBpdCBoYXMgCisgICAgICogICAgICAgICAgICAgICAgICB0aGUgc2FtZSBlZmZlY3QgYXMgaWYgaXQgd2VyZSAtMTogLTEgaXMgcmV0dXJuZWQuIAorICAgICAqIEByZXR1cm4gdGhlIGluZGV4IG9mIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgdGhlIGNvZGVwb2ludCBpbiBzb3VyY2UsIAorICAgICAqICAgICAgICAgb3IgLTEgaWYgdGhlIGNvZGVwb2ludCBkb2VzIG5vdCBvY2N1ci4KKyAgICAgKiBAZHJhZnQgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgaW50IGxhc3RJbmRleE9mKFN0cmluZyBzb3VyY2UsIGludCBjaGFyMzIsIGludCBmcm9tSW5kZXgpCisgICAgeworICAgICAgICBpZiAoY2hhcjMyIDwgQ09ERVBPSU5UX01JTl9WQUxVRSB8fCBjaGFyMzIgPiBDT0RFUE9JTlRfTUFYX1ZBTFVFKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBcmd1bWVudCBjaGFyMzIgaXMgbm90IGEgdmFsaWQgY29kZXBvaW50Iik7CisgICAgICAgIH0KKyAgICAgICAgLy8gbm9uLXN1cnJvZ2F0ZSBibXAKKyAgICAgICAgaWYgKGNoYXIzMiA8IExFQURfU1VSUk9HQVRFX01JTl9WQUxVRSB8fAorICAgICAgICAgICAgKGNoYXIzMiA+IFRSQUlMX1NVUlJPR0FURV9NQVhfVkFMVUUgJiYgCisgICAgICAgICAgICAgY2hhcjMyIDwgU1VQUExFTUVOVEFSWV9NSU5fVkFMVUUpKSB7CisgICAgICAgICAgICByZXR1cm4gc291cmNlLmxhc3RJbmRleE9mKChjaGFyKWNoYXIzMiwgZnJvbUluZGV4KTsKKyAgICAgICAgfQorICAgICAgICAvLyBzdXJyb2dhdGUKKyAgICAgICAgaWYgKGNoYXIzMiA8IFNVUFBMRU1FTlRBUllfTUlOX1ZBTFVFKSB7CisgICAgICAgICAgICBpbnQgcmVzdWx0ID0gc291cmNlLmxhc3RJbmRleE9mKChjaGFyKWNoYXIzMiwgZnJvbUluZGV4KTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPj0gMCkgeworICAgICAgICAgICAgICAgIGlmIChpc0xlYWRTdXJyb2dhdGUoKGNoYXIpY2hhcjMyKSAmJiAKKyAgICAgICAgICAgICAgICAgICAgKHJlc3VsdCA8IHNvdXJjZS5sZW5ndGgoKSAtIDEpICYmIAorICAgICAgICAgICAgICAgICAgICBpc1RyYWlsU3Vycm9nYXRlKHNvdXJjZS5jaGFyQXQocmVzdWx0ICsgMSkpKSB7IAorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGFzdEluZGV4T2Yoc291cmNlLCBjaGFyMzIsIHJlc3VsdCAtIDEpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvLyB0cmFpbCBzdXJyb2dhdGUKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID4gMCAmJiAKKyAgICAgICAgICAgICAgICAgICAgaXNMZWFkU3Vycm9nYXRlKHNvdXJjZS5jaGFyQXQocmVzdWx0IC0gMSkpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBsYXN0SW5kZXhPZihzb3VyY2UsIGNoYXIzMiwgcmVzdWx0IC0gMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgLy8gc3VwcGxlbWVudGFyeQorICAgICAgICBTdHJpbmcgY2hhcjMyc3RyID0gdG9TdHJpbmcoY2hhcjMyKTsKKyAgICAgICAgcmV0dXJuIHNvdXJjZS5sYXN0SW5kZXhPZihjaGFyMzJzdHIsIGZyb21JbmRleCk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIDxwPlJldHVybnMgdGhlIGluZGV4IHdpdGhpbiB0aGUgYXJndW1lbnQgVVRGMTYgZm9ybWF0IFVuaWNvZGUgc3RyaW5nIG9mIAorICAgICAqIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgdGhlIGFyZ3VtZW50IHN0cmluZyBzdHIsIHdoZXJlIHRoZSByZXN1bHQgaXMgbGVzcworICAgICAqIHRoYW4gb3IgZXF1YWxzIHRvIGZyb21JbmRleC48L3A+IAorICAgICAqIDxwPlRoaXMgbWV0aG9kIGlzIGltcGxlbWVudGVkIGJhc2VkIG9uIGNvZGVwb2ludHMsIGhlbmNlIGEgCisgICAgICogImxlYWQgc3Vycm9nYXRlIGNoYXJhY3RlciArIHRyYWlsIHN1cnJvZ2F0ZSBjaGFyYWN0ZXIiIGlzIHRyZWF0ZWQgYXMgb25lIAorICAgICAqIGVudGl0eS4KKyAgICAgKiBIZW5jZSBpZiB0aGUgc3RyIHN0YXJ0cyB3aXRoIHRyYWlsIHN1cnJvZ2F0ZSBjaGFyYWN0ZXIgYXQgaW5kZXggMCwgYSAKKyAgICAgKiBzb3VyY2Ugd2l0aCBhIGxlYWRpbmcgYSBzdXJyb2dhdGUgY2hhcmFjdGVyIGJlZm9yZSBzdHIgZm91bmQgYXQgaW4gCisgICAgICogc291cmNlIHdpbGwgbm90IGhhdmUgYSB2YWxpZCBtYXRjaC4gVmljZSB2ZXJzYSBmb3IgbGVhZCBzdXJyb2dhdGVzIAorICAgICAqIHRoYXQgZW5kcyBzdHIuCisgICAgICogPC9wPgorICAgICAqIFNlZSBleGFtcGxlIGJlbG93LgorICAgICAqIDxwPgorICAgICAqIEV4YW1wbGVzOjxicj4KKyAgICAgKiBVVEYxNi5sYXN0SW5kZXhPZigiYWJjIiwgImMiLCAyKSByZXR1cm5zIDI8YnI+CisgICAgICogVVRGMTYubGFzdEluZGV4T2YoImFiYyIsICJjIiwgMSkgcmV0dXJucyAtMTxicj4KKyAgICAgKiBVVEYxNi5sYXN0SW5kZXhPZigiYWJjXHVkODAwXHVkYzAwIiwgIlx1ZDgwMFx1ZGMwMCIsIDUpIHJldHVybnMgMzxicj4KKyAgICAgKiBVVEYxNi5sYXN0SW5kZXhPZigiYWJjXHVkODAwXHVkYzAwIiwgIlx1ZDgwMFx1ZGMwMCIsIDMpIHJldHVybnMgMzxicj4KKyAgICAgKiBVVEYxNi5sYXN0SW5kZXhPZigiYWJjXHVkODAwXHVkYzAwIiwgIlx1ZDgwMCIsIDQpIHJldHVybnMgLTE8YnI+CisgICAgICogPC9wPgorICAgICAqIDxwPnNvdXJjZSBpcyBzZWFyY2hlZCBiYWNrd2FyZHMgc3RhcnRpbmcgYXQgdGhlIGxhc3QgY2hhcmFjdGVyLjwvcD4gCisgICAgICogTm90ZSB0aGlzIG1ldGhvZCBpcyBwcm92aWRlZCBhcyBzdXBwb3J0IHRvIGpkayAxLjMsIHdoaWNoIGRvZXMgbm90IAorICAgICAqIHN1cHBvcnQgc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXJzIHRvIGl0cyBmdWxsZXN0LgorICAgICAqIEBwYXJhbSBzb3VyY2UgVVRGMTYgZm9ybWF0IFVuaWNvZGUgc3RyaW5nIHRoYXQgd2lsbCBiZSBzZWFyY2hlZAorICAgICAqIEBwYXJhbSBzdHIgVVRGMTYgZm9ybWF0IFVuaWNvZGUgc3RyaW5nIHRvIHNlYXJjaCBmb3IgCisgICAgICogQHBhcmFtIGZyb21JbmRleCB0aGUgaW5kZXggdG8gc3RhcnQgdGhlIHNlYXJjaCBmcm9tLiBUaGVyZSBpcyBubyAKKyAgICAgKiAgICAgICAgICAgICAgICAgIHJlc3RyaWN0aW9uIG9uIHRoZSB2YWx1ZSBvZiBmcm9tSW5kZXguIElmIGl0IGlzIAorICAgICAqICAgICAgICAgICAgICAgICAgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBsZW5ndGggb2YgdGhpcyBzdHJpbmcsIAorICAgICAqICAgICAgICAgICAgICAgICAgaXQgaGFzIHRoZSBzYW1lIGVmZmVjdCBhcyBpZiBpdCB3ZXJlIGVxdWFsIHRvIG9uZSAKKyAgICAgKiAgICAgICAgICAgICAgICAgIGxlc3MgdGhhbiB0aGUgbGVuZ3RoIG9mIHRoaXMgc3RyaW5nOiB0aGlzIGVudGlyZSAKKyAgICAgKiAgICAgICAgICAgICAgICAgIHN0cmluZyBtYXkgYmUgc2VhcmNoZWQuIElmIGl0IGlzIG5lZ2F0aXZlLCBpdCBoYXMgCisgICAgICogICAgICAgICAgICAgICAgICB0aGUgc2FtZSBlZmZlY3QgYXMgaWYgaXQgd2VyZSAtMTogLTEgaXMgcmV0dXJuZWQuIAorICAgICAqIEByZXR1cm4gdGhlIGluZGV4IG9mIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgdGhlIGNvZGVwb2ludCBpbiBzb3VyY2UsIAorICAgICAqICAgICAgICAgb3IgLTEgaWYgdGhlIGNvZGVwb2ludCBkb2VzIG5vdCBvY2N1ci4KKyAgICAgKiBAZHJhZnQgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgaW50IGxhc3RJbmRleE9mKFN0cmluZyBzb3VyY2UsIFN0cmluZyBzdHIsIGludCBmcm9tSW5kZXgpICAKKyAgICB7CisgICAgICAgIGludCBzdHJMZW5ndGggPSBzdHIubGVuZ3RoKCk7CisgICAgICAgIC8vIG5vbi1zdXJyb2dhdGUgZW5kcworICAgICAgICBpZiAoIWlzVHJhaWxTdXJyb2dhdGUoc3RyLmNoYXJBdCgwKSkgJiYgCisgICAgICAgICAgICAhaXNMZWFkU3Vycm9nYXRlKHN0ci5jaGFyQXQoc3RyTGVuZ3RoIC0gMSkpKSB7CisgICAgICAgICAgICByZXR1cm4gc291cmNlLmxhc3RJbmRleE9mKHN0ciwgZnJvbUluZGV4KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaW50IHJlc3VsdCAgICA9IHNvdXJjZS5sYXN0SW5kZXhPZihzdHIsIGZyb21JbmRleCk7CisgICAgICAgIGlmIChyZXN1bHQgPj0gMCkgeworICAgICAgICAgICAgLy8gY2hlY2sgbGFzdCBjaGFyYWN0ZXIKKyAgICAgICAgICAgIGlmIChpc0xlYWRTdXJyb2dhdGUoc3RyLmNoYXJBdChzdHJMZW5ndGggLSAxKSkgJiYgCisgICAgICAgICAgICAgICAgKHJlc3VsdCA8IHNvdXJjZS5sZW5ndGgoKSAtIDEpICYmIAorICAgICAgICAgICAgICAgIGlzVHJhaWxTdXJyb2dhdGUoc291cmNlLmNoYXJBdChyZXN1bHQgKyBzdHJMZW5ndGgpKSkgeyAKKyAgICAgICAgICAgICAgICByZXR1cm4gbGFzdEluZGV4T2Yoc291cmNlLCBzdHIsIHJlc3VsdCAtIDEpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gY2hlY2sgZmlyc3QgY2hhcmFjdGVyIHdoaWNoIGlzIGEgdHJhaWwgc3Vycm9nYXRlCisgICAgICAgICAgICBpZiAoaXNUcmFpbFN1cnJvZ2F0ZShzdHIuY2hhckF0KDApKSAmJiByZXN1bHQgPiAwICYmIAorICAgICAgICAgICAgICAgIGlzTGVhZFN1cnJvZ2F0ZShzb3VyY2UuY2hhckF0KHJlc3VsdCAtIDEpKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBsYXN0SW5kZXhPZihzb3VyY2UsIHN0ciwgcmVzdWx0IC0gMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIG5ldyBVVEYxNiBmb3JtYXQgVW5pY29kZSBzdHJpbmcgcmVzdWx0aW5nIGZyb20gcmVwbGFjaW5nIGFsbCAKKyAgICAgKiBvY2N1cnJlbmNlcyBvZiBvbGRDaGFyMzIgaW4gc291cmNlIHdpdGggbmV3Q2hhcjMyLiAKKyAgICAgKiBJZiB0aGUgY2hhcmFjdGVyIG9sZENoYXIzMiBkb2VzIG5vdCBvY2N1ciBpbiB0aGUgVVRGMTYgZm9ybWF0IFVuaWNvZGUKKyAgICAgKiBzdHJpbmcgc291cmNlLCB0aGVuIHNvdXJjZSB3aWxsIGJlIHJldHVybmVkLiBPdGhlcndpc2UsIGEgbmV3IFN0cmluZyAKKyAgICAgKiBvYmplY3QgaXMgY3JlYXRlZCB0aGF0IHJlcHJlc2VudHMgYSBjb2RlcG9pbnQgc2VxdWVuY2UgaWRlbnRpY2FsIHRvIHRoZSAKKyAgICAgKiBjb2RlcG9pbnQgc2VxdWVuY2UgcmVwcmVzZW50ZWQgYnkgc291cmNlLCBleGNlcHQgdGhhdCBldmVyeSBvY2N1cnJlbmNlIAorICAgICAqIG9mIG9sZENoYXIzMiBpcyByZXBsYWNlZCBieSBhbiBvY2N1cnJlbmNlIG9mIG5ld0NoYXIzMi4gCisgICAgICogPHA+CisgICAgICogRXhhbXBsZXM6IDxicj4KKyAgICAgKiBVVEYxNi5yZXBsYWNlKCJtZXNxdWl0ZSBpbiB5b3VyIGNlbGxhciIsICdlJywgJ28nKTs8YnI+CisgICAgICogICAgICAgIHJldHVybnMgIm1vc3F1aXRvIGluIHlvdXIgY29sbGFyIjxicj4KKyAgICAgKiBVVEYxNi5yZXBsYWNlKCJKb25MIiwgJ3EnLCAneCcpOzxicj4KKyAgICAgKiAgICAgICAgcmV0dXJucyAiSm9uTCIgKG5vIGNoYW5nZSk8YnI+CisgICAgICogVVRGMTYucmVwbGFjZSgiU3VwcGxlbWVudGFyeSBjaGFyYWN0ZXIgXHVkODAwXHVkYzAwIiwgMHgxMDAwMCwgJyEnKTsKKyAgICAgKiA8YnI+ICAgcmV0dXJucyAiU3VwcGxlbWVudGFyeSBjaGFyYWN0ZXIgISI8YnI+CisgICAgICogVVRGMTYucmVwbGFjZSgiU3VwcGxlbWVudGFyeSBjaGFyYWN0ZXIgXHVkODAwXHVkYzAwIiwgMHhkODAwLCAnIScpOworICAgICAqIDxicj4gICByZXR1cm5zICJTdXBwbGVtZW50YXJ5IGNoYXJhY3RlciBcdWQ4MDBcdWRjMDAiPGJyPgorICAgICAqIDwvcD4KKyAgICAgKiBOb3RlIHRoaXMgbWV0aG9kIGlzIHByb3ZpZGVkIGFzIHN1cHBvcnQgdG8gamRrIDEuMywgd2hpY2ggZG9lcyBub3QgCisgICAgICogc3VwcG9ydCBzdXBwbGVtZW50YXJ5IGNoYXJhY3RlcnMgdG8gaXRzIGZ1bGxlc3QuCisgICAgICogQHBhcmFtIHNvdXJjZSBVVEYxNiBmb3JtYXQgVW5pY29kZSBzdHJpbmcgd2hpY2ggdGhlIGNvZGVwb2ludCAKKyAgICAgKiAgICAgICAgICAgICAgIHJlcGxhY2VtZW50cyB3aWxsIGJlIGJhc2VkIG9uLgorICAgICAqIEBwYXJhbSBvbGRDaGFyMzIgbm9uLXplcm8gb2xkIGNvZGVwb2ludCB0byBiZSByZXBsYWNlZC4KKyAgICAgKiBAcGFyYW0gbmV3Q2hhcjMyIHRoZSBuZXcgY29kZXBvaW50IHRvIHJlcGxhY2Ugb2xkQ2hhcjMyCisgICAgICogQHJldHVybiBuZXcgU3RyaW5nIGRlcml2ZWQgZnJvbSBzb3VyY2UgYnkgcmVwbGFjaW5nIGV2ZXJ5IG9jY3VycmVuY2UgCisgICAgICogICAgICAgICBvZiBvbGRDaGFyMzIgd2l0aCBuZXdDaGFyMzIsIHVubGVzcyB3aGVuIG5vIG9sZENoYXIzMiBpcyBmb3VuZAorICAgICAqICAgICAgICAgaW4gc291cmNlIHRoZW4gc291cmNlIHdpbGwgYmUgcmV0dXJuZWQuCisgICAgICogQGRyYWZ0IElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyByZXBsYWNlKFN0cmluZyBzb3VyY2UsIGludCBvbGRDaGFyMzIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5ld0NoYXIzMikgIAorICAgIHsKKyAgICAgICAgaWYgKG9sZENoYXIzMiA8PSAwIHx8IG9sZENoYXIzMiA+IENPREVQT0lOVF9NQVhfVkFMVUUpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFyZ3VtZW50IG9sZENoYXIzMiBpcyBub3QgYSB2YWxpZCBjb2RlcG9pbnQiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAobmV3Q2hhcjMyIDw9IDAgfHwgbmV3Q2hhcjMyID4gQ09ERVBPSU5UX01BWF9WQUxVRSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQXJndW1lbnQgbmV3Q2hhcjMyIGlzIG5vdCBhIHZhbGlkIGNvZGVwb2ludCIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpbnQgaW5kZXggICAgID0gaW5kZXhPZihzb3VyY2UsIG9sZENoYXIzMik7CisgICAgICAgIGlmIChpbmRleCA9PSAtMSkgeworICAgICAgICAgICAgcmV0dXJuIHNvdXJjZTsKKyAgICAgICAgfQorICAgICAgICBTdHJpbmcgICAgICAgbmV3Q2hhcjMyU3RyICAgID0gdG9TdHJpbmcobmV3Q2hhcjMyKTsKKyAgICAgICAgaW50ICAgICAgICAgIG9sZENoYXIzMlNpemUgICA9IDE7CisgICAgICAgIGludCAgICAgICAgICBuZXdDaGFyMzJTaXplICAgPSBuZXdDaGFyMzJTdHIubGVuZ3RoKCk7CisgICAgICAgIFN0cmluZ0J1ZmZlciByZXN1bHQgPSBuZXcgU3RyaW5nQnVmZmVyKHNvdXJjZSk7CisgICAgICAgIGludCAgICAgICAgICByZXN1bHRJbmRleCAgICAgPSBpbmRleDsKKyAgICAgICAgCisgICAgICAgIGlmIChvbGRDaGFyMzIgPj0gU1VQUExFTUVOVEFSWV9NSU5fVkFMVUUpIHsKKyAgICAgICAgICAgIG9sZENoYXIzMlNpemUgPSAyOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB3aGlsZSAoaW5kZXggIT0gLTEpIHsKKyAgICAgICAgICAgIGludCBlbmRSZXN1bHRJbmRleCAgPSByZXN1bHRJbmRleCArIG9sZENoYXIzMlNpemU7CisgICAgICAgICAgICByZXN1bHQucmVwbGFjZShyZXN1bHRJbmRleCwgZW5kUmVzdWx0SW5kZXgsIG5ld0NoYXIzMlN0cik7CisgICAgICAgICAgICBpbnQgbGFzdEVuZEluZGV4ICAgID0gaW5kZXggKyBvbGRDaGFyMzJTaXplOworICAgICAgICAgICAgaW5kZXggICAgICAgPSBpbmRleE9mKHNvdXJjZSwgb2xkQ2hhcjMyLCBsYXN0RW5kSW5kZXgpOworICAgICAgICAgICAgcmVzdWx0SW5kZXggKz0gbmV3Q2hhcjMyU2l6ZSArIGluZGV4IC0gbGFzdEVuZEluZGV4OworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIG5ldyBVVEYxNiBmb3JtYXQgVW5pY29kZSBzdHJpbmcgcmVzdWx0aW5nIGZyb20gcmVwbGFjaW5nIGFsbCAKKyAgICAgKiBvY2N1cnJlbmNlcyBvZiBvbGRTdHIgaW4gc291cmNlIHdpdGggbmV3U3RyLiAKKyAgICAgKiBJZiB0aGUgY2hhcmFjdGVyIG9sZFN0ciBkb2VzIG5vdCBvY2N1ciBpbiB0aGUgVVRGMTYgZm9ybWF0IFVuaWNvZGUKKyAgICAgKiBzdHJpbmcgc291cmNlLCB0aGVuIHNvdXJjZSB3aWxsIGJlIHJldHVybmVkLiBPdGhlcndpc2UsIGEgbmV3IFN0cmluZyAKKyAgICAgKiBvYmplY3QgaXMgY3JlYXRlZCB0aGF0IHJlcHJlc2VudHMgYSBjb2RlcG9pbnQgc2VxdWVuY2UgaWRlbnRpY2FsIHRvIHRoZSAKKyAgICAgKiBjb2RlcG9pbnQgc2VxdWVuY2UgcmVwcmVzZW50ZWQgYnkgc291cmNlLCBleGNlcHQgdGhhdCBldmVyeSBvY2N1cnJlbmNlIAorICAgICAqIG9mIG9sZFN0ciBpcyByZXBsYWNlZCBieSBhbiBvY2N1cnJlbmNlIG9mIG5ld1N0ci4gCisgICAgICogPHA+CisgICAgICogRXhhbXBsZXM6IDxicj4KKyAgICAgKiBVVEYxNi5yZXBsYWNlKCJtZXNxdWl0ZSBpbiB5b3VyIGNlbGxhciIsICJlIiwgIm8iKTs8YnI+CisgICAgICogICAgICAgIHJldHVybnMgIm1vc3F1aXRvIGluIHlvdXIgY29sbGFyIjxicj4KKyAgICAgKiBVVEYxNi5yZXBsYWNlKCJtZXNxdWl0ZSBpbiB5b3VyIGNlbGxhciIsICJtZXNxdWl0ZSIsICJjYXQiKTs8YnI+CisgICAgICogICAgICAgIHJldHVybnMgImNhdCBpbiB5b3VyIGNvbGxhciI8YnI+CisgICAgICogVVRGMTYucmVwbGFjZSgiSm9uTCIsICJxIiwgIngiKTs8YnI+CisgICAgICogICAgICAgIHJldHVybnMgIkpvbkwiIChubyBjaGFuZ2UpPGJyPgorICAgICAqIFVURjE2LnJlcGxhY2UoIlN1cHBsZW1lbnRhcnkgY2hhcmFjdGVyIFx1ZDgwMFx1ZGMwMCIsICJcdWQ4MDBcdWRjMDAiLAorICAgICAqICAgICAgICAgICAgICAgJyEnKTsKKyAgICAgKiA8YnI+ICAgcmV0dXJucyAiU3VwcGxlbWVudGFyeSBjaGFyYWN0ZXIgISI8YnI+CisgICAgICogVVRGMTYucmVwbGFjZSgiU3VwcGxlbWVudGFyeSBjaGFyYWN0ZXIgXHVkODAwXHVkYzAwIiwgIlx1ZDgwMCIsICchJyk7CisgICAgICogPGJyPiAgIHJldHVybnMgIlN1cHBsZW1lbnRhcnkgY2hhcmFjdGVyIFx1ZDgwMFx1ZGMwMCI8YnI+CisgICAgICogPC9wPgorICAgICAqIE5vdGUgdGhpcyBtZXRob2QgaXMgcHJvdmlkZWQgYXMgc3VwcG9ydCB0byBqZGsgMS4zLCB3aGljaCBkb2VzIG5vdCAKKyAgICAgKiBzdXBwb3J0IHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVycyB0byBpdHMgZnVsbGVzdC4KKyAgICAgKiBAcGFyYW0gc291cmNlIFVURjE2IGZvcm1hdCBVbmljb2RlIHN0cmluZyB3aGljaCB0aGUgY29kZXBvaW50IAorICAgICAqICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRzIHdpbGwgYmUgYmFzZWQgb24uCisgICAgICogQHBhcmFtIG9sZENoYXIzMiBub24temVybyBvbGQgY29kZXBvaW50IHRvIGJlIHJlcGxhY2VkLgorICAgICAqIEBwYXJhbSBuZXdDaGFyMzIgdGhlIG5ldyBjb2RlcG9pbnQgdG8gcmVwbGFjZSBvbGRDaGFyMzIKKyAgICAgKiBAcmV0dXJuIG5ldyBTdHJpbmcgZGVyaXZlZCBmcm9tIHNvdXJjZSBieSByZXBsYWNpbmcgZXZlcnkgb2NjdXJyZW5jZSAKKyAgICAgKiAgICAgICAgIG9mIG9sZENoYXIzMiB3aXRoIG5ld0NoYXIzMiwgdW5sZXNzIHdoZW4gbm8gb2xkQ2hhcjMyIGlzIGZvdW5kCisgICAgICogICAgICAgICBpbiBzb3VyY2UgdGhlbiBzb3VyY2Ugd2lsbCBiZSByZXR1cm5lZC4KKyAgICAgKiBAZHJhZnQgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIHJlcGxhY2UoU3RyaW5nIHNvdXJjZSwgU3RyaW5nIG9sZFN0ciwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbmV3U3RyKSAgCisgICAgeworICAgICAgICBpbnQgaW5kZXggICAgID0gaW5kZXhPZihzb3VyY2UsIG9sZFN0cik7CisgICAgICAgIGlmIChpbmRleCA9PSAtMSkgeworICAgICAgICAgICAgcmV0dXJuIHNvdXJjZTsKKyAgICAgICAgfQorICAgICAgICBpbnQgICAgICAgICAgb2xkU3RyU2l6ZSAgID0gb2xkU3RyLmxlbmd0aCgpOworICAgICAgICBpbnQgICAgICAgICAgbmV3U3RyU2l6ZSAgID0gbmV3U3RyLmxlbmd0aCgpOworICAgICAgICBTdHJpbmdCdWZmZXIgcmVzdWx0ICAgICAgID0gbmV3IFN0cmluZ0J1ZmZlcihzb3VyY2UpOworICAgICAgICBpbnQgICAgICAgICAgcmVzdWx0SW5kZXggICAgID0gaW5kZXg7CisgICAgICAgIAorICAgICAgICB3aGlsZSAoaW5kZXggIT0gLTEpIHsKKyAgICAgICAgICAgIGludCBlbmRSZXN1bHRJbmRleCAgPSByZXN1bHRJbmRleCArIG9sZFN0clNpemU7CisgICAgICAgICAgICByZXN1bHQucmVwbGFjZShyZXN1bHRJbmRleCwgZW5kUmVzdWx0SW5kZXgsIG5ld1N0cik7CisgICAgICAgICAgICBpbnQgbGFzdEVuZEluZGV4ICAgID0gaW5kZXggKyBvbGRTdHJTaXplOworICAgICAgICAgICAgaW5kZXggICAgICAgPSBpbmRleE9mKHNvdXJjZSwgb2xkU3RyLCBsYXN0RW5kSW5kZXgpOworICAgICAgICAgICAgcmVzdWx0SW5kZXggKz0gbmV3U3RyU2l6ZSArIGluZGV4IC0gbGFzdEVuZEluZGV4OworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKKyAgICB9CisgICAgCisgICAgLyoqIAorICAgICAqIFJldmVyc2VzIGEgVVRGMTYgZm9ybWF0IFVuaWNvZGUgc3RyaW5nIGFuZCByZXBsYWNlcyBzb3VyY2UncyBjb250ZW50IAorICAgICAqIHdpdGggaXQuCisgICAgICogVGhpcyBtZXRob2Qgd2lsbCByZXZlcnNlIHN1cnJvZ2F0ZSBjaGFyYWN0ZXJzIGNvcnJlY3RseSwgaW5zdGVhZCBvZiAKKyAgICAgKiBibGluZGx5IHJldmVyc2luZyBldmVyeSBjaGFyYWN0ZXIuCisgICAgICogPHA+CisgICAgICogRXhhbXBsZXM6PGJyPgorICAgICAqIFVURjE2LnJldmVyc2UobmV3IFN0cmluZ0J1ZmZlcigKKyAgICAgKiAgICAgICAgICAgICAiU3VwcGxlbWVudGFyeSBjaGFyYWN0ZXJzIFx1ZDgwMFx1ZGMwMFx1ZDgwMVx1ZGMwMSIpKTxicj4KKyAgICAgKiByZXR1cm5zICJcdWQ4MDFcdWRjMDFcdWQ4MDBcdWRjMDAgc3JldGNhcmFoYyB5cmF0bmVtZWxwcHVTIi4KKyAgICAgKiBAcGFyYW0gc291cmNlIHRoZSBzb3VyY2UgU3RyaW5nQnVmZmVyIHRoYXQgY29udGFpbnMgVVRGMTYgZm9ybWF0IAorICAgICAqICAgICAgICBVbmljb2RlIHN0cmluZyB0byBiZSByZXZlcnNlZAorICAgICAqIEByZXR1cm4gYSBtb2RpZmllZCBzb3VyY2Ugd2l0aCByZXZlcnNlZCBVVEYxNiBmb3JtYXQgVW5pY29kZSBzdHJpbmcuCisgICAgICogQGRyYWZ0IElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZ0J1ZmZlciByZXZlcnNlKFN0cmluZ0J1ZmZlciBzb3VyY2UpICAgICAgCisgICAgeworICAgICAgICBTdHJpbmdCdWZmZXIgcmVzdWx0ID0gc291cmNlLnJldmVyc2UoKTsKKyAgICAgICAgaW50IHJlc3VsdExlbmd0aCAgPSByZXN1bHQubGVuZ3RoKCk7CisgICAgICAgIGludCBtYXhMZWFkTGVuZ3RoID0gcmVzdWx0TGVuZ3RoIC0gMjsKKyAgICAgICAgaW50IGkgPSAwOworICAgICAgICB3aGlsZSAoaSA8IHJlc3VsdExlbmd0aCkgeworICAgICAgICAgICAgaWYgKGkgPD0gbWF4TGVhZExlbmd0aCAmJiBpc1RyYWlsU3Vycm9nYXRlKHJlc3VsdC5jaGFyQXQoaSkpICYmCisgICAgICAgICAgICAgICAgaXNMZWFkU3Vycm9nYXRlKHJlc3VsdC5jaGFyQXQoaSArIDEpKSkgeworICAgICAgICAgICAgICAgIGNoYXIgdHJhaWwgPSByZXN1bHQuY2hhckF0KGkpOworICAgICAgICAgICAgICAgIHJlc3VsdC5kZWxldGVDaGFyQXQoaSk7CisgICAgICAgICAgICAgICAgcmVzdWx0Lmluc2VydChpICsgMSwgdHJhaWwpOworICAgICAgICAgICAgICAgIGkgKz0gMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGkgKys7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQ2hlY2sgaWYgdGhlIHN0cmluZyBjb250YWlucyBtb3JlIFVuaWNvZGUgY29kZSBwb2ludHMgdGhhbiBhIGNlcnRhaW4gCisgICAgICogbnVtYmVyLiBUaGlzIGlzIG1vcmUgZWZmaWNpZW50IHRoYW4gY291bnRpbmcgYWxsIGNvZGUgcG9pbnRzIGluIHRoZSAKKyAgICAgKiBlbnRpcmUgc3RyaW5nIGFuZCBjb21wYXJpbmcgdGhhdCBudW1iZXIgd2l0aCBhIHRocmVzaG9sZC4KKyAgICAgKiBUaGlzIGZ1bmN0aW9uIG1heSBub3QgbmVlZCB0byBzY2FuIHRoZSBzdHJpbmcgYXQgYWxsIGlmIHRoZSBsZW5ndGggaXMKKyAgICAgKiB3aXRoaW4gYSBjZXJ0YWluIHJhbmdlLCBhbmQgbmV2ZXIgbmVlZHMgdG8gY291bnQgbW9yZSB0aGFuICdudW1iZXIgKyAxJyAKKyAgICAgKiBjb2RlIHBvaW50cy4gTG9naWNhbGx5IGVxdWl2YWxlbnQgdG8gKGNvdW50Q29kZVBvaW50KHMpID4gbnVtYmVyKS4gQSAKKyAgICAgKiBVbmljb2RlIGNvZGUgcG9pbnQgbWF5IG9jY3VweSBlaXRoZXIgb25lIG9yIHR3byBjb2RlIHVuaXRzLgorICAgICAqIEBwYXJhbSBzb3VyY2UgVGhlIGlucHV0IHN0cmluZy4KKyAgICAgKiBAcGFyYW0gbnVtYmVyIFRoZSBudW1iZXIgb2YgY29kZSBwb2ludHMgaW4gdGhlIHN0cmluZyBpcyBjb21wYXJlZCAKKyAgICAgKiAgICAgICAgICAgICAgIGFnYWluc3QgdGhlICdudW1iZXInIHBhcmFtZXRlci4KKyAgICAgKiBAcmV0dXJuIGJvb2xlYW4gdmFsdWUgZm9yIHdoZXRoZXIgdGhlIHN0cmluZyBjb250YWlucyBtb3JlIFVuaWNvZGUgY29kZSAKKyAgICAgKiAgICAgICAgIHBvaW50cyB0aGFuICdudW1iZXInLiAKKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBoYXNNb3JlQ29kZVBvaW50c1RoYW4oU3RyaW5nIHNvdXJjZSwgaW50IG51bWJlcikKKyAgICB7CisgICAgICAgIGlmIChudW1iZXIgPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSAgCisgICAgICAgIGlmIChzb3VyY2UgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGludCBsZW5ndGggPSBzb3VyY2UubGVuZ3RoKCk7CisgICAgICAgIAorICAgICAgICAvLyBsZW5ndGggPj0gMCBrbm93bgorICAgICAgICAvLyBzb3VyY2UgY29udGFpbnMgYXQgbGVhc3QgKGxlbmd0aCArIDEpIC8gMiBjb2RlIHBvaW50czogPD0gMiAKKyAgICAgICAgLy8gY2hhcnMgcGVyIGNwCisgICAgICAgIGlmICgoKGxlbmd0aCArIDEpID4+IDEpID4gbnVtYmVyKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIAorICAgICAgICAvLyBjaGVjayBpZiBzb3VyY2UgZG9lcyBub3QgZXZlbiBjb250YWluIGVub3VnaCBjaGFycworICAgICAgICBpbnQgbWF4c3VwcGxlbWVudGFyeSA9IGxlbmd0aCAtIG51bWJlcjsKKyAgICAgICAgaWYgKG1heHN1cHBsZW1lbnRhcnkgPD0gMCkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyB0aGVyZSBhcmUgbWF4c3VwcGxlbWVudGFyeSA9IGxlbmd0aCAtIG51bWJlciBtb3JlIGNoYXJzIHRoYW4gCisgICAgICAgIC8vIGFza2VkLWZvciBjb2RlIHBvaW50cworICAgIAorICAgICAgICAvLyBjb3VudCBjb2RlIHBvaW50cyB1bnRpbCB0aGV5IGV4Y2VlZCBhbmQgYWxzbyBjaGVjayB0aGF0IHRoZXJlIGFyZQorICAgICAgICAvLyBubyBtb3JlIHRoYW4gbWF4c3VwcGxlbWVudGFyeSBzdXBwbGVtZW50YXJ5IGNvZGUgcG9pbnRzIChjaGFyIHBhaXJzKQorICAgICAgICBpbnQgc3RhcnQgPSAwOworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgaWYgKGxlbmd0aCA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG51bWJlciA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaXNMZWFkU3Vycm9nYXRlKHNvdXJjZS5jaGFyQXQoc3RhcnQgKyspKSAmJiBzdGFydCAhPSBsZW5ndGggCisgICAgICAgICAgICAgICAgJiYgaXNUcmFpbFN1cnJvZ2F0ZShzb3VyY2UuY2hhckF0KHN0YXJ0KSkpIHsKKyAgICAgICAgICAgICAgICBzdGFydCArKzsKKyAgICAgICAgICAgICAgICBpZiAoLS0gbWF4c3VwcGxlbWVudGFyeSA8PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIHRvbyBtYW55IHBhaXJzIC0gdG9vIGZldyBjb2RlIHBvaW50cworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgLS0gbnVtYmVyOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIENoZWNrIGlmIHRoZSBzdWItcmFuZ2Ugb2YgY2hhciBhcnJheSwgZnJvbSBhcmd1bWVudCBzdGFydCB0byBsaW1pdCwKKyAgICAgKiBjb250YWlucyBtb3JlIFVuaWNvZGUgY29kZSBwb2ludHMgdGhhbiBhIGNlcnRhaW4gCisgICAgICogbnVtYmVyLiBUaGlzIGlzIG1vcmUgZWZmaWNpZW50IHRoYW4gY291bnRpbmcgYWxsIGNvZGUgcG9pbnRzIGluIHRoZSAKKyAgICAgKiBlbnRpcmUgY2hhciBhcnJheSByYW5nZSBhbmQgY29tcGFyaW5nIHRoYXQgbnVtYmVyIHdpdGggYSB0aHJlc2hvbGQuCisgICAgICogVGhpcyBmdW5jdGlvbiBtYXkgbm90IG5lZWQgdG8gc2NhbiB0aGUgY2hhciBhcnJheSBhdCBhbGwgaWYgc3RhcnQgYW5kCisgICAgICogbGltaXQgaXMgd2l0aGluIGEgY2VydGFpbiByYW5nZSwgYW5kIG5ldmVyIG5lZWRzIHRvIGNvdW50IG1vcmUgdGhhbiAKKyAgICAgKiAnbnVtYmVyICsgMScgY29kZSBwb2ludHMuIAorICAgICAqIExvZ2ljYWxseSBlcXVpdmFsZW50IHRvIChjb3VudENvZGVQb2ludChzb3VyY2UsIHN0YXJ0LCBsaW1pdCkgPiBudW1iZXIpLiAKKyAgICAgKiBBIFVuaWNvZGUgY29kZSBwb2ludCBtYXkgb2NjdXB5IGVpdGhlciBvbmUgb3IgdHdvIGNvZGUgdW5pdHMuCisgICAgICogQHBhcmFtIHNvdXJjZSBhcnJheSBvZiBVVEYtMTYgY2hhcnMKKyAgICAgKiBAcGFyYW0gc3RhcnQgb2Zmc2V0IHRvIHN1YnN0cmluZyBpbiB0aGUgc291cmNlIGFycmF5IGZvciBhbmFseXppbmcKKyAgICAgKiBAcGFyYW0gbGltaXQgb2Zmc2V0IHRvIHN1YnN0cmluZyBpbiB0aGUgc291cmNlIGFycmF5IGZvciBhbmFseXppbmcKKyAgICAgKiBAcGFyYW0gbnVtYmVyIFRoZSBudW1iZXIgb2YgY29kZSBwb2ludHMgaW4gdGhlIHN0cmluZyBpcyBjb21wYXJlZCAKKyAgICAgKiAgICAgICAgICAgICAgIGFnYWluc3QgdGhlICdudW1iZXInIHBhcmFtZXRlci4KKyAgICAgKiBAcmV0dXJuIGJvb2xlYW4gdmFsdWUgZm9yIHdoZXRoZXIgdGhlIHN0cmluZyBjb250YWlucyBtb3JlIFVuaWNvZGUgY29kZSAKKyAgICAgKiAgICAgICAgIHBvaW50cyB0aGFuICdudW1iZXInLgorICAgICAqIEBleGNlcHRpb24gSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiB0aHJvd24gd2hlbiBsaW1pdCAmbHQ7IHN0YXJ0CisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaGFzTW9yZUNvZGVQb2ludHNUaGFuKGNoYXIgc291cmNlW10sIGludCBzdGFydCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGltaXQsIGludCBudW1iZXIpCisgICAgeworICAgICAgICBpbnQgbGVuZ3RoID0gbGltaXQgLSBzdGFydDsKKyAgICAgICAgaWYgKGxlbmd0aCA8IDAgfHwgc3RhcnQgPCAwIHx8IGxpbWl0IDwgMCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgIlN0YXJ0IGFuZCBsaW1pdCBpbmRleGVzIHNob3VsZCBiZSBub24tbmVnYXRpdmUgYW5kIHN0YXJ0IDw9IGxpbWl0Iik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG51bWJlciA8IDApIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9ICAKKyAgICAgICAgaWYgKHNvdXJjZSA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgLy8gbGVuZ3RoID49IDAga25vd24KKyAgICAgICAgLy8gc291cmNlIGNvbnRhaW5zIGF0IGxlYXN0IChsZW5ndGggKyAxKSAvIDIgY29kZSBwb2ludHM6IDw9IDIgCisgICAgICAgIC8vIGNoYXJzIHBlciBjcAorICAgICAgICBpZiAoKChsZW5ndGggKyAxKSA+PiAxKSA+IG51bWJlcikgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgLy8gY2hlY2sgaWYgc291cmNlIGRvZXMgbm90IGV2ZW4gY29udGFpbiBlbm91Z2ggY2hhcnMKKyAgICAgICAgaW50IG1heHN1cHBsZW1lbnRhcnkgPSBsZW5ndGggLSBudW1iZXI7CisgICAgICAgIGlmIChtYXhzdXBwbGVtZW50YXJ5IDw9IDApIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gdGhlcmUgYXJlIG1heHN1cHBsZW1lbnRhcnkgPSBsZW5ndGggLSBudW1iZXIgbW9yZSBjaGFycyB0aGFuIAorICAgICAgICAvLyBhc2tlZC1mb3IgY29kZSBwb2ludHMKKyAgICAKKyAgICAgICAgLy8gY291bnQgY29kZSBwb2ludHMgdW50aWwgdGhleSBleGNlZWQgYW5kIGFsc28gY2hlY2sgdGhhdCB0aGVyZSBhcmUKKyAgICAgICAgLy8gbm8gbW9yZSB0aGFuIG1heHN1cHBsZW1lbnRhcnkgc3VwcGxlbWVudGFyeSBjb2RlIHBvaW50cyAoY2hhciBwYWlycykKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIGlmIChsZW5ndGggPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChudW1iZXIgPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGlzTGVhZFN1cnJvZ2F0ZShzb3VyY2Vbc3RhcnQgKytdKSAmJiBzdGFydCAhPSBsaW1pdCAKKyAgICAgICAgICAgICAgICAmJiBpc1RyYWlsU3Vycm9nYXRlKHNvdXJjZVtzdGFydF0pKSB7CisgICAgICAgICAgICAgICAgc3RhcnQgKys7CisgICAgICAgICAgICAgICAgaWYgKC0tIG1heHN1cHBsZW1lbnRhcnkgPD0gMCkgeworICAgICAgICAgICAgICAgICAgICAvLyB0b28gbWFueSBwYWlycyAtIHRvbyBmZXcgY29kZSBwb2ludHMKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC0tIG51bWJlcjsKKyAgICAgICAgfQorICAgIH0KKyAgICAgCisgICAgLyoqCisgICAgICogQ2hlY2sgaWYgdGhlIHN0cmluZyBidWZmZXIgY29udGFpbnMgbW9yZSBVbmljb2RlIGNvZGUgcG9pbnRzIHRoYW4gYSAKKyAgICAgKiBjZXJ0YWluIG51bWJlci4gVGhpcyBpcyBtb3JlIGVmZmljaWVudCB0aGFuIGNvdW50aW5nIGFsbCBjb2RlIHBvaW50cyBpbiAKKyAgICAgKiB0aGUgZW50aXJlIHN0cmluZyBidWZmZXIgYW5kIGNvbXBhcmluZyB0aGF0IG51bWJlciB3aXRoIGEgdGhyZXNob2xkLgorICAgICAqIFRoaXMgZnVuY3Rpb24gbWF5IG5vdCBuZWVkIHRvIHNjYW4gdGhlIHN0cmluZyBidWZmZXIgYXQgYWxsIGlmIHRoZSAKKyAgICAgKiBsZW5ndGggaXMgd2l0aGluIGEgY2VydGFpbiByYW5nZSwgYW5kIG5ldmVyIG5lZWRzIHRvIGNvdW50IG1vcmUgdGhhbiAKKyAgICAgKiAnbnVtYmVyICsgMScgY29kZSBwb2ludHMuIExvZ2ljYWxseSBlcXVpdmFsZW50IHRvIAorICAgICAqIChjb3VudENvZGVQb2ludChzKSA+IG51bWJlcikuIEEgVW5pY29kZSBjb2RlIHBvaW50IG1heSBvY2N1cHkgZWl0aGVyIG9uZSAKKyAgICAgKiBvciB0d28gY29kZSB1bml0cy4KKyAgICAgKiBAcGFyYW0gc291cmNlIFRoZSBpbnB1dCBzdHJpbmcgYnVmZmVyLgorICAgICAqIEBwYXJhbSBudW1iZXIgVGhlIG51bWJlciBvZiBjb2RlIHBvaW50cyBpbiB0aGUgc3RyaW5nIGJ1ZmZlciBpcyBjb21wYXJlZCAKKyAgICAgKiAgICAgICAgICAgICAgIGFnYWluc3QgdGhlICdudW1iZXInIHBhcmFtZXRlci4KKyAgICAgKiBAcmV0dXJuIGJvb2xlYW4gdmFsdWUgZm9yIHdoZXRoZXIgdGhlIHN0cmluZyBidWZmZXIgY29udGFpbnMgbW9yZSAKKyAgICAgKiAgICAgICAgIFVuaWNvZGUgY29kZSBwb2ludHMgdGhhbiAnbnVtYmVyJy4KKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBoYXNNb3JlQ29kZVBvaW50c1RoYW4oU3RyaW5nQnVmZmVyIHNvdXJjZSwgaW50IG51bWJlcikKKyAgICB7CisgICAgICAgIGlmIChudW1iZXIgPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSAgCisgICAgICAgIGlmIChzb3VyY2UgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGludCBsZW5ndGggPSBzb3VyY2UubGVuZ3RoKCk7CisgICAgICAgIAorICAgICAgICAvLyBsZW5ndGggPj0gMCBrbm93bgorICAgICAgICAvLyBzb3VyY2UgY29udGFpbnMgYXQgbGVhc3QgKGxlbmd0aCArIDEpIC8gMiBjb2RlIHBvaW50czogPD0gMiAKKyAgICAgICAgLy8gY2hhcnMgcGVyIGNwCisgICAgICAgIGlmICgoKGxlbmd0aCArIDEpID4+IDEpID4gbnVtYmVyKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIAorICAgICAgICAvLyBjaGVjayBpZiBzb3VyY2UgZG9lcyBub3QgZXZlbiBjb250YWluIGVub3VnaCBjaGFycworICAgICAgICBpbnQgbWF4c3VwcGxlbWVudGFyeSA9IGxlbmd0aCAtIG51bWJlcjsKKyAgICAgICAgaWYgKG1heHN1cHBsZW1lbnRhcnkgPD0gMCkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyB0aGVyZSBhcmUgbWF4c3VwcGxlbWVudGFyeSA9IGxlbmd0aCAtIG51bWJlciBtb3JlIGNoYXJzIHRoYW4gCisgICAgICAgIC8vIGFza2VkLWZvciBjb2RlIHBvaW50cworICAgIAorICAgICAgICAvLyBjb3VudCBjb2RlIHBvaW50cyB1bnRpbCB0aGV5IGV4Y2VlZCBhbmQgYWxzbyBjaGVjayB0aGF0IHRoZXJlIGFyZQorICAgICAgICAvLyBubyBtb3JlIHRoYW4gbWF4c3VwcGxlbWVudGFyeSBzdXBwbGVtZW50YXJ5IGNvZGUgcG9pbnRzIChjaGFyIHBhaXJzKQorICAgICAgICBpbnQgc3RhcnQgPSAwOworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgaWYgKGxlbmd0aCA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG51bWJlciA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaXNMZWFkU3Vycm9nYXRlKHNvdXJjZS5jaGFyQXQoc3RhcnQgKyspKSAmJiBzdGFydCAhPSBsZW5ndGggCisgICAgICAgICAgICAgICAgJiYgaXNUcmFpbFN1cnJvZ2F0ZShzb3VyY2UuY2hhckF0KHN0YXJ0KSkpIHsKKyAgICAgICAgICAgICAgICBzdGFydCArKzsKKyAgICAgICAgICAgICAgICBpZiAoLS0gbWF4c3VwcGxlbWVudGFyeSA8PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIHRvbyBtYW55IHBhaXJzIC0gdG9vIGZldyBjb2RlIHBvaW50cworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgLS0gbnVtYmVyOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICogPHA+VVRGMTYgc3RyaW5nIGNvbXBhcmF0b3IgY2xhc3MuCisgICAgKiBBbGxvd3MgVVRGMTYgc3RyaW5nIGNvbXBhcmlzb24gdG8gYmUgZG9uZSB3aXRoIHRoZSB2YXJpb3VzIG1vZGVzPC9wPgorICAgICogPHVsPgorICAgICogPGxpPiBDb2RlIHBvaW50IGNvbXBhcmlzb24gb3IgY29kZSB1bml0IGNvbXBhcmlzb24KKyAgICAqIDxsaT4gQ2FzZSBzZW5zaXRpdmUgY29tcGFyaXNvbiwgY2FzZSBpbnNlbnNpdGl2ZSBjb21wYXJpc29uIG9yIGNhc2UgCisgICAgKiAgICAgIGluc2Vuc2l0aXZlIGNvbXBhcmlzb24gd2l0aCBzcGVjaWFsIGhhbmRsaW5nIGZvciBjaGFyYWN0ZXIgJ2knLgorICAgICogPC91bD4KKyAgICAqIDxwPlRoZSBjb2RlIHVuaXQgb3IgY29kZSBwb2ludCBjb21wYXJpc29uIGRpZmZlciBvbmx5IHdoZW4gY29tcGFyaW5nIAorICAgICogc3VwcGxlbWVudGFyeSBjb2RlIHBvaW50cyAoJiM5Mjt1MTAwMDAuLiYjOTI7dTEwZmZmZikgdG8gQk1QIGNvZGUgcG9pbnRzIAorICAgICogbmVhciB0aGUgZW5kIG9mIHRoZSBCTVAgKGkuZS4sICYjOTI7dWUwMDAuLiYjOTI7dWZmZmYpLiBJbiBjb2RlIHVuaXQgCisgICAgKiBjb21wYXJpc29uLCBoaWdoIEJNUCBjb2RlIHBvaW50cyBzb3J0IGFmdGVyIHN1cHBsZW1lbnRhcnkgY29kZSBwb2ludHMgCisgICAgKiBiZWNhdXNlIHRoZXkgYXJlIHN0b3JlZCBhcyBwYWlycyBvZiBzdXJyb2dhdGVzIHdoaWNoIGFyZSBhdCAKKyAgICAqICYjOTI7dWQ4MDAuLiYjOTI7dWRmZmYuPC9wPgorICAgICogQHNlZSAjRk9MRF9DQVNFX0RFRkFVTFQKKyAgICAqIEBzZWUgI0ZPTERfQ0FTRV9FWENMVURFX1NQRUNJQUxfSQorICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGNsYXNzIFN0cmluZ0NvbXBhcmF0b3IgaW1wbGVtZW50cyBqYXZhLnV0aWwuQ29tcGFyYXRvciAKKyAgICB7CisgICAgICAgIC8vIHB1YmxpYyBjb25zdHJ1Y3RvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgCisgICAgICAgIC8qKgorICAgICAgICAgKiBEZWZhdWx0IGNvbnN0cnVjdG9yIHRoYXQgZG9lcyBjb2RlIHVuaXQgY29tcGFyaXNvbiBhbmQgY2FzZSAKKyAgICAgICAgICogc2Vuc2l0aXZlIGNvbXBhcmlzb24uCisgICAgICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIFN0cmluZ0NvbXBhcmF0b3IoKQorICAgICAgICB7CisgICAgICAgICAgICB0aGlzKGZhbHNlLCBmYWxzZSwgRk9MRF9DQVNFX0RFRkFVTFQpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvKioKKyAgICAgICAgICogQ29uc3RydWN0b3IgdGhhdCBkb2VzIGNvbXBhcmlzb24gYmFzZWQgb24gdGhlIGFyZ3VtZW50IG9wdGlvbnMuCisgICAgICAgICAqIEBwYXJhbSBjb2RlcG9pbnRjb21wYXJlIGZsYWcgdG8gaW5kaWNhdGUgdHJ1ZSBmb3IgY29kZSBwb2ludCAKKyAgICAgICAgICogICAgICAgIGNvbXBhcmlzb24gb3IgZmFsc2UgZm9yIGNvZGUgdW5pdCBjb21wYXJpc29uLgorICAgICAgICAgKiBAcGFyYW0gaWdub3JlY2FzZSBmYWxzZSBmb3IgY2FzZSBzZW5zaXRpdmUgY29tcGFyaXNvbiwgdHJ1ZSBmb3IKKyAgICAgICAgICogICAgICAgIGNhc2UtaW5zZW5zaXRpdmUgY29tcGFyaXNvbgorICAgICAgICAgKiBAcGFyYW0gZm9sZGNhc2VvcHRpb24gRk9MRF9DQVNFX0RFRkFVTFQgb3IgCisgICAgICAgICAqICAgICAgICBGT0xEX0NBU0VfRVhDTFVERV9TUEVDSUFMX0kuIFRoaXMgb3B0aW9uIGlzIHVzZWQgb25seSB3aGVuCisgICAgICAgICAqICAgICAgICBpZ25vcmVjYXNlIGlzIHNldCB0byB0cnVlLiBJZiBpZ25vcmVjYXNlIGlzIGZhbHNlLCB0aGlzIG9wdGlvbgorICAgICAgICAgKiAgICAgICAgaXMgaWdub3JlZC4KKyAgICAgICAgICogQHNlZSAjRk9MRF9DQVNFX0RFRkFVTFQKKyAgICAgICAgICogQHNlZSAjRk9MRF9DQVNFX0VYQ0xVREVfU1BFQ0lBTF9JCisgICAgICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIGZvbGRjYXNlb3B0aW9uIGlzIG91dCBvZiByYW5nZQorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIFN0cmluZ0NvbXBhcmF0b3IoYm9vbGVhbiBjb2RlcG9pbnRjb21wYXJlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBpZ25vcmVjYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZm9sZGNhc2VvcHRpb24pCisgICAgICAgIHsKKyAgICAgICAgICAgIHNldENvZGVQb2ludENvbXBhcmUoY29kZXBvaW50Y29tcGFyZSk7CisgICAgICAgICAgICBtX2lnbm9yZUNhc2VfID0gaWdub3JlY2FzZTsgICAKKyAgICAgICAgICAgIGlmIChmb2xkY2FzZW9wdGlvbiA8IEZPTERfQ0FTRV9ERUZBVUxUIAorICAgICAgICAgICAgICAgIHx8IGZvbGRjYXNlb3B0aW9uID4gRk9MRF9DQVNFX0VYQ0xVREVfU1BFQ0lBTF9JKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBmb2xkIGNhc2Ugb3B0aW9uIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX2ZvbGRDYXNlXyA9IGZvbGRjYXNlb3B0aW9uOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBwdWJsaWMgZGF0YSBtZW1iZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgIAorICAgICAgICAvKiogCisgICAgICAgICAqIDxwPk9wdGlvbiB2YWx1ZSBmb3IgY2FzZSBmb2xkaW5nIGNvbXBhcmlzb246PC9wPiAKKyAgICAgICAgICogPHA+Q29tcGFyaXNvbiBpcyBjYXNlIGluc2Vuc2l0aXZlLCBzdHJpbmdzIGFyZSBmb2xkZWQgdXNpbmcgZGVmYXVsdCAKKyAgICAgICAgICogbWFwcGluZ3MgZGVmaW5lZCBpbiBVbmljb2RlIGRhdGEgZmlsZSBDYXNlRm9sZGluZy50eHQsIGJlZm9yZSAKKyAgICAgICAgICogY29tcGFyaXNvbi4gCisgICAgICAgICAqIDwvcD4KKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZPTERfQ0FTRV9ERUZBVUxUID0gMDsKKyAgICAgICAgLyoqCisgICAgICAgICAqIDxwPk9wdGlvbiB2YWx1ZSBmb3IgY2FzZSBmb2xkaW5nIGNvbXBhcmlzb246PC9wPgorICAgICAgICAgKiA8cD5Db21wYXJpc29uIGlzIGNhc2UgaW5zZW5zaXRpdmUsIHN0cmluZ3MgYXJlIGZvbGRlZCB1c2luZyBtb2RpZmllZCAKKyAgICAgICAgICogbWFwcGluZ3MgZGVmaW5lZCBpbiBVbmljb2RlIGRhdGEgZmlsZSBDYXNlRm9sZGluZy50eHQsIGJlZm9yZSAKKyAgICAgICAgICogY29tcGFyaXNvbi4gCisgICAgICAgICAqIDwvcD4KKyAgICAgICAgICogPHA+VGhlIG1vZGlmaWVkIHNldCBvZiBtYXBwaW5ncyBpcyBwcm92aWRlZCBpbiBhIFVuaWNvZGUgZGF0YSBmaWxlCisgICAgICAgICAqIENhc2VGb2xkaW5nLnR4dCB0byBoYW5kbGUgZG90dGVkIEkgYW5kIGRvdGxlc3MgaSBhcHByb3ByaWF0ZWx5IGZvciAKKyAgICAgICAgICogVHVya2ljIGxhbmd1YWdlcyAodHIsIGF6KS48L3A+CisgICAgICAgICAqIDxwPkJlZm9yZSBVbmljb2RlIDMuMiwgQ2FzZUZvbGRpbmcudHh0IGNvbnRhaW5zIG1hcHBpbmdzIG1hcmtlZCB3aXRoIAorICAgICAgICAgKiAnSScgdGhhdCBhcmUgdG8gYmUgaW5jbHVkZWQgZm9yIGRlZmF1bHQgbWFwcGluZ3MgYW5kIGV4Y2x1ZGVkIGZvciAKKyAgICAgICAgICogdGhlIFR1cmtpYy1zcGVjaWZpYyBtYXBwaW5ncy48L3A+CisgICAgICAgICAqIDxwPlVuaWNvZGUgMy4yIENhc2VGb2xkaW5nLnR4dCBpbnN0ZWFkIGNvbnRhaW5zIG1hcHBpbmdzIG1hcmtlZCB3aXRoIAorICAgICAgICAgKiAnVCcgdGhhdCBhcmUgdG8gYmUgZXhjbHVkZWQgZm9yIGRlZmF1bHQgbWFwcGluZ3MgYW5kIGluY2x1ZGVkIGZvciAKKyAgICAgICAgICogdGhlIFR1cmtpYy1zcGVjaWZpYyBtYXBwaW5ncy48L3A+CisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGT0xEX0NBU0VfRVhDTFVERV9TUEVDSUFMX0kgPSAxOworICAgICAgICAKKyAgICAgICAgLy8gcHVibGljIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAKKyAgICAgICAgLy8gcHVibGljIHNldHRlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAKKyAgICAgICAgLyoqCisgICAgICAgICAqIFNldHMgdGhlIGNvbXBhcmlzb24gbW9kZSB0byBjb2RlIHBvaW50IGNvbXBhcmUgaWYgZmxhZyBpcyB0cnVlLgorICAgICAgICAgKiBPdGhlcndpc2UgY29tcGFyaXNvbiBtb2RlIGlzIHNldCB0byBjb2RlIHVuaXQgY29tcGFyZQorICAgICAgICAgKiBAcGFyYW0gZmxhZyB0cnVlIGZvciBjb2RlIHBvaW50IGNvbXBhcmUsIGZhbHNlIGZvciBjb2RlIHVuaXQgY29tcGFyZQorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHZvaWQgc2V0Q29kZVBvaW50Q29tcGFyZShib29sZWFuIGZsYWcpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChmbGFnKSB7CisgICAgICAgICAgICAgICAgbV9jb2RlUG9pbnRDb21wYXJlXyA9IE5vcm1hbGl6ZXIuQ09NUEFSRV9DT0RFX1BPSU5UX09SREVSOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbV9jb2RlUG9pbnRDb21wYXJlXyA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8qKgorICAgICAgICAgKiBTZXRzIHRoZSBDb21wYXJhdG9yIHRvIGNhc2UtaW5zZW5zaXRpdmUgY29tcGFyaXNvbiBtb2RlIGlmIGFyZ3VtZW50IAorICAgICAgICAgKiBpcyB0cnVlLCBvdGhlcndpc2UgY2FzZSBzZW5zaXRpdmUgY29tcGFyaXNvbiBtb2RlIGlmIHNldCB0byBmYWxzZS4KKyAgICAgICAgICogQHBhcmFtIGlnbm9yZWNhc2UgdHJ1ZSBmb3IgY2FzZS1pbnNpdGl2ZSBjb21wYXJpc29uLCBmYWxzZSBmb3IKKyAgICAgICAgICogICAgICAgIGNhc2Ugc2Vuc2l0aXZlIGNvbXBhcmlzb24KKyAgICAgICAgICogQHBhcmFtIGZvbGRjYXNlb3B0aW9ucyBGT0xEX0NBU0VfREVGQVVMVCBvciAKKyAgICAgICAgICogICAgICAgIEZPTERfQ0FTRV9FWENMVURFX1NQRUNJQUxfSS4gVGhpcyBvcHRpb24gaXMgdXNlZCBvbmx5IHdoZW4KKyAgICAgICAgICogICAgICAgIGlnbm9yZWNhc2UgaXMgc2V0IHRvIHRydWUuIElmIGlnbm9yZWNhc2UgaXMgZmFsc2UsIHRoaXMgb3B0aW9uCisgICAgICAgICAqICAgICAgICBpcyBpZ25vcmVkLgorICAgICAgICAgKiBAc2VlICNGT0xEX0NBU0VfREVGQVVMVAorICAgICAgICAgKiBAc2VlICNGT0xEX0NBU0VfRVhDTFVERV9TUEVDSUFMX0kKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyB2b2lkIHNldElnbm9yZUNhc2UoYm9vbGVhbiBpZ25vcmVjYXNlLCBpbnQgZm9sZGNhc2VvcHRpb24pIAorICAgICAgICB7CisgICAgICAgICAgICBtX2lnbm9yZUNhc2VfID0gaWdub3JlY2FzZTsKKyAgICAgICAgICAgIGlmIChmb2xkY2FzZW9wdGlvbiA8IEZPTERfQ0FTRV9ERUZBVUxUIAorICAgICAgICAgICAgICAgIHx8IGZvbGRjYXNlb3B0aW9uID4gRk9MRF9DQVNFX0VYQ0xVREVfU1BFQ0lBTF9JKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBmb2xkIGNhc2Ugb3B0aW9uIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX2ZvbGRDYXNlXyA9IGZvbGRjYXNlb3B0aW9uOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBwdWJsaWMgZ2V0dGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgIAorICAgICAgICAvKioKKyAgICAgICAgICogQ2hlY2tzIGlmIHRoZSBjb21wYXJpc29uIG1vZGUgaXMgY29kZSBwb2ludCBjb21wYXJlLgorICAgICAgICAgKiBAcmV0dXJuIHRydWUgZm9yIGNvZGUgcG9pbnQgY29tcGFyZSwgZmFsc2UgZm9yIGNvZGUgdW5pdCBjb21wYXJlCisgICAgICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgYm9vbGVhbiBnZXRDb2RlUG9pbnRDb21wYXJlKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fY29kZVBvaW50Q29tcGFyZV8gPT0gTm9ybWFsaXplci5DT01QQVJFX0NPREVfUE9JTlRfT1JERVI7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8qKgorICAgICAgICAgKiBDaGVja3MgaWYgQ29tcGFyYXRvciBpcyBpbiB0aGUgY2FzZSBpbnNlbnNpdGl2ZSBtb2RlLgorICAgICAgICAgKiBAcmV0dXJuIHRydWUgaWYgQ29tcGFyYXRvciBwZXJmb3JtcyBjYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlzb24sIAorICAgICAgICAgKiAgICAgICAgIGZhbHNlIG90aGVyd2lzZQorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIGJvb2xlYW4gZ2V0SWdub3JlQ2FzZSgpIAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9pZ25vcmVDYXNlXzsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLyoqCisgICAgICAgICAqIEdldHMgdGhlIGZvbGQgY2FzZSBvcHRpb25zIHNldCBpbiBDb21wYXJhdG9yIHRvIGJlIHVzZWQgd2l0aCBjYXNlIAorICAgICAgICAgKiBpbnNlbnNpdGl2ZSBjb21wYXJpc29uLiAKKyAgICAgICAgICogQHJldHVybiBlaXRoZXIgRk9MRF9DQVNFX0RFRkFVTFQgb3IgRk9MRF9DQVNFX0VYQ0xVREVfU1BFQ0lBTF9JCisgICAgICAgICAqIEBzZWUgI0ZPTERfQ0FTRV9ERUZBVUxUCisgICAgICAgICAqIEBzZWUgI0ZPTERfQ0FTRV9FWENMVURFX1NQRUNJQUxfSQorICAgICAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIGludCBnZXRJZ25vcmVDYXNlT3B0aW9uKCkgCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2ZvbGRDYXNlXzsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gcHVibGljIG90aGVyIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAKKyAgICAgICAgLyoqCisgICAgICAgICAqIENvbXBhcmUgdHdvIHN0cmluZ3MgZGVwZW5kaW5nIG9uIHRoZSBvcHRpb25zIHNlbGVjdGVkIGR1cmluZyAKKyAgICAgICAgICogY29uc3RydWN0aW9uLgorICAgICAgICAgKiBAcGFyYW0gYSBmaXJzdCBzb3VyY2Ugc3RyaW5nLgorICAgICAgICAgKiBAcGFyYW0gYiBzZWNvbmQgc291cmNlIHN0cmluZy4KKyAgICAgICAgICogQHJldHVybiAwIHJldHVybmVkIGlmIGEgPT0gYi4gSWYgYSA8IGIsIGEgbmVnYXRpdmUgdmFsdWUgaXMgcmV0dXJuZWQuCisgICAgICAgICAqICAgICAgICAgT3RoZXJ3aXNlIGlmIGEgPiBiLCBhIHBvc2l0aXZlIHZhbHVlIGlzIHJldHVybmVkLgorICAgICAgICAgKiBAZXhjZXB0aW9uIENsYXNzQ2FzdEV4Y2VwdGlvbiB0aHJvd24gd2hlbiBlaXRoZXIgYSBvciBiIGlzIG5vdCBhIAorICAgICAgICAgKiAgICAgICAgICAgIFN0cmluZyBvYmplY3QKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBpbnQgY29tcGFyZShPYmplY3QgYSwgT2JqZWN0IGIpIAorICAgICAgICB7CisgICAgICAgICAgICBTdHJpbmcgc3RyMSA9IChTdHJpbmcpYTsKKyAgICAgICAgICAgIFN0cmluZyBzdHIyID0gKFN0cmluZyliOworICAgICAgICAgICAgCisJICAgICAgICBpZiAoc3RyMSA9PSBzdHIyKSB7CisJICAgICAgICAJcmV0dXJuIDA7CisJICAgICAgICB9CisJICAgICAgICBpZiAoc3RyMSA9PSBudWxsKSB7CisJICAgICAgICAgICAgcmV0dXJuIC0xOworCSAgICAgICAgfQorCSAgICAgICAgaWYgKHN0cjIgPT0gbnVsbCkgeworCSAgICAgICAgICAgIHJldHVybiAxOworCSAgICAgICAgfQorCSAgICAgICAgCisgICAgICAgICAgICBpZiAobV9pZ25vcmVDYXNlXykgeworICAgICAgICAgICAgICAgIHJldHVybiBjb21wYXJlQ2FzZUluc2Vuc2l0aXZlKHN0cjEsIHN0cjIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVDYXNlU2Vuc2l0aXZlKHN0cjEsIHN0cjIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBwcml2YXRlIGRhdGEgbWVtYmVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgCisgICAgICAgIC8qKgorICAgICAgICAgKiBDb2RlIHVuaXQgY29tcGFyaXNvbiBmbGFnLiBUcnVlIGlmIGNvZGUgdW5pdCBjb21wYXJpc29uIGlzIHJlcXVpcmVkLgorICAgICAgICAgKiBGYWxzZSBpZiBjb2RlIHBvaW50IGNvbXBhcmlzb24gaXMgcmVxdWlyZWQuCisgICAgICAgICAqLworICAgICAgICBwcml2YXRlIGludCBtX2NvZGVQb2ludENvbXBhcmVfOworICAgICAgICAvKioKKyAgICAgICAgICogRm9sZCBjYXNlIGNvbXBhcmlzb24gb3B0aW9uLgorICAgICAgICAgKi8KKyAgICAgICAgcHJpdmF0ZSBpbnQgbV9mb2xkQ2FzZV87CisgICAgICAgIC8qKiAKKyAgICAgICAgICogRmxhZyBpbmRpY2F0b3IgaWYgaWdub3JlIGNhc2UgaXMgdG8gYmUgdXNlZCBkdXJpbmcgY29tcGFyaXNvbgorICAgICAgICAgKi8KKyAgICAgICAgcHJpdmF0ZSBib29sZWFuIG1faWdub3JlQ2FzZV87CisgICAgICAgIC8qKgorICAgICAgICAgKiBDb2RlIHBvaW50IG9yZGVyIG9mZnNldCBmb3Igc3Vycm9nYXRlIGNoYXJhY3RlcnMKKyAgICAgICAgICovCisgICAgICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDT0RFX1BPSU5UX0NPTVBBUkVfU1VSUk9HQVRFX09GRlNFVF8gPSAweDI4MDA7CisgICAgICAgIAorICAgICAgICAvLyBwcml2YXRlIG1ldGhvZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgCisgICAgICAgIC8qKgorICAgICAgICAgKiBDb21wYXJlcyBjYXNlIGluc2Vuc2l0aXZlLiBUaGlzIGlzIGEgZGlyZWN0IHBvcnQgb2YgSUNVNEMsIHRvIG1ha2UKKyAgICAgICAgICogbWFpbnRhaW5lbmNlIGxpZmUgZWFzaWVyLgorICAgICAgICAgKiBAcGFyYW0gczEgZmlyc3Qgc3RyaW5nIHRvIGNvbXBhcmUKKyAgICAgICAgICogQHBhcmFtIHMyIHNlY29uZCBzdHJpbmcgdG8gY29tcGFyZQorICAgICAgICAgKiBAcmV0dXJuIC0xIGlzIHMxICZsdDsgczIsIDAgaWYgZXF1YWxzLCAKKyAgICAgICAgICovCisgICAgICAgIHByaXZhdGUgaW50IGNvbXBhcmVDYXNlSW5zZW5zaXRpdmUoU3RyaW5nIHMxLCBTdHJpbmcgczIpICAKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIE5vcm1hbGl6ZXJJbXBsLmNtcEVxdWl2Rm9sZChzMSwgczIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZm9sZENhc2VfIHwgbV9jb2RlUG9pbnRDb21wYXJlXyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vcm1hbGl6ZXIuQ09NUEFSRV9JR05PUkVfQ0FTRSk7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogQ29tcGFyZXMgY2FzZSBzZW5zaXRpdmUuIFRoaXMgaXMgYSBkaXJlY3QgcG9ydCBvZiBJQ1U0QywgdG8gbWFrZQorICAgICAgICAgKiBtYWludGFpbmVuY2UgbGlmZSBlYXNpZXIuCisgICAgICAgICAqIEBwYXJhbSBzMSBmaXJzdCBzdHJpbmcgdG8gY29tcGFyZQorICAgICAgICAgKiBAcGFyYW0gczIgc2Vjb25kIHN0cmluZyB0byBjb21wYXJlCisgICAgICAgICAqIEByZXR1cm4gLTEgaXMgczEgJmx0OyBzMiwgMCBpZiBlcXVhbHMsIAorICAgICAgICAgKi8KKyAgICAgICAgcHJpdmF0ZSBpbnQgY29tcGFyZUNhc2VTZW5zaXRpdmUoU3RyaW5nIHMxLCBTdHJpbmcgczIpIAorICAgICAgICB7CisgICAgICAgICAgICAvLyBjb21wYXJlIGlkZW50aWNhbCBwcmVmaXhlcyAtIHRoZXkgZG8gbm90IG5lZWQgdG8gYmUgZml4ZWQgdXAKKyAgICAgICAgICAgIC8vIGxpbWl0MSA9IHN0YXJ0MSArIG1pbihsZW5naHQxLCBsZW5ndGgyKQorICAgICAgICAgICAgaW50IGxlbmd0aDEgPSBzMS5sZW5ndGgoKTsKKyAgICAgICAgICAgIGludCBsZW5ndGgyID0gczIubGVuZ3RoKCk7CisgICAgICAgICAgICBpbnQgbWlubGVuZ3RoID0gbGVuZ3RoMTsKKyAgICAgICAgICAgIGludCByZXN1bHQgPSAwOworICAgICAgICAgICAgaWYgKGxlbmd0aDEgPCBsZW5ndGgyKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gLTE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChsZW5ndGgxID4gbGVuZ3RoMikgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IDE7CisgICAgICAgICAgICAgICAgbWlubGVuZ3RoID0gbGVuZ3RoMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNoYXIgYzEgPSAwOworICAgICAgICAgICAgY2hhciBjMiA9IDA7CisgICAgICAgICAgICBpbnQgaW5kZXggPSAwOworICAgICAgICAgICAgZm9yICg7IGluZGV4IDwgbWlubGVuZ3RoOyBpbmRleCArKykgeworICAgICAgICAgICAgICAgIGMxID0gczEuY2hhckF0KGluZGV4KTsKKyAgICAgICAgICAgICAgICBjMiA9IHMyLmNoYXJBdChpbmRleCk7CisgICAgICAgICAgICAgICAgLy8gY2hlY2sgcHNldWRvLWxpbWl0CisgICAgICAgICAgICAgICAgaWYgKGMxICE9IGMyKSB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICAgICBpZiAoaW5kZXggPT0gbWlubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgYm9vbGVhbiBjb2RlcG9pbnRjb21wYXJlIAorICAgICAgICAgICAgICAgID0gbV9jb2RlUG9pbnRDb21wYXJlXyA9PSBOb3JtYWxpemVyLkNPTVBBUkVfQ09ERV9QT0lOVF9PUkRFUjsKKyAgICAgICAgICAgIC8vIGlmIGJvdGggdmFsdWVzIGFyZSBpbiBvciBhYm92ZSB0aGUgc3Vycm9nYXRlIHJhbmdlLCBmaXggdGhlbSB1cAorICAgICAgICAgICAgaWYgKGMxID49IExFQURfU1VSUk9HQVRFX01JTl9WQUxVRSAKKyAgICAgICAgICAgICAgICAmJiBjMiA+PSBMRUFEX1NVUlJPR0FURV9NSU5fVkFMVUUgJiYgY29kZXBvaW50Y29tcGFyZSkgeworICAgICAgICAgICAgICAgIC8vIHN1YnRyYWN0IDB4MjgwMCBmcm9tIEJNUCBjb2RlIHBvaW50cyB0byBtYWtlIHRoZW0gc21hbGxlciAKKyAgICAgICAgICAgICAgICAvLyB0aGFuIHN1cHBsZW1lbnRhcnkgb25lcworICAgICAgICAgICAgICAgIGlmICgoYzEgPD0gTEVBRF9TVVJST0dBVEVfTUFYX1ZBTFVFICYmIChpbmRleCArIDEpICE9IGxlbmd0aDEgCisgICAgICAgICAgICAgICAgICAgICYmIGlzVHJhaWxTdXJyb2dhdGUoczEuY2hhckF0KGluZGV4ICsgMSkpKSAKKyAgICAgICAgICAgICAgICAgICAgfHwgKGlzVHJhaWxTdXJyb2dhdGUoYzEpICYmIGluZGV4ICE9IDAgCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBpc0xlYWRTdXJyb2dhdGUoczEuY2hhckF0KGluZGV4IC0gMSkpKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBwYXJ0IG9mIGEgc3Vycm9nYXRlIHBhaXIsIGxlYXZlID49ZDgwMAorICAgICAgICAgICAgICAgIH0gCisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEJNUCBjb2RlIHBvaW50IC0gbWF5IGJlIHN1cnJvZ2F0ZSBjb2RlIHBvaW50IC0gbWFrZSAKKyAgICAgICAgICAgICAgICAgICAgLy8gPCBkODAwCisgICAgICAgICAgICAgICAgICAgIGMxIC09IENPREVfUE9JTlRfQ09NUEFSRV9TVVJST0dBVEVfT0ZGU0VUXzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgIAorICAgICAgICAgICAgICAgIGlmICgoYzIgPD0gTEVBRF9TVVJST0dBVEVfTUFYX1ZBTFVFIAorICAgICAgICAgICAgICAgICAgICAgJiYgKGluZGV4ICsgMSkgIT0gbGVuZ3RoMiAKKyAgICAgICAgICAgICAgICAgICAgICYmIGlzVHJhaWxTdXJyb2dhdGUoczIuY2hhckF0KGluZGV4ICsgMSkpKSB8fAorICAgICAgICAgICAgICAgICAgICAoaXNUcmFpbFN1cnJvZ2F0ZShjMikgJiYgaW5kZXggIT0gMCAKKyAgICAgICAgICAgICAgICAgICAgICYmIGlzTGVhZFN1cnJvZ2F0ZShzMi5jaGFyQXQoaW5kZXggLSAxKSkpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIHBhcnQgb2YgYSBzdXJyb2dhdGUgcGFpciwgbGVhdmUgPj1kODAwCisgICAgICAgICAgICAgICAgfSAKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQk1QIGNvZGUgcG9pbnQgLSBtYXkgYmUgc3Vycm9nYXRlIGNvZGUgcG9pbnQgLSBtYWtlIDxkODAwCisgICAgICAgICAgICAgICAgICAgIGMyIC09IENPREVfUE9JTlRfQ09NUEFSRV9TVVJST0dBVEVfT0ZGU0VUXzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIAorICAgICAgICAgICAgLy8gbm93IGMxIGFuZCBjMiBhcmUgaW4gVVRGLTMyLWNvbXBhdGlibGUgb3JkZXIKKyAgICAgICAgICAgIHJldHVybiBjMSAtIGMyOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8vIHByaXZhdGUgZGF0YSBtZW1iZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgLyoqCisgICAgKiBTaGlmdCB2YWx1ZSBmb3IgbGVhZCBzdXJyb2dhdGUgdG8gZm9ybSBhIHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVyLgorICAgICovCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExFQURfU1VSUk9HQVRFX1NISUZUXyA9IDEwOworCS8qKgorICAgICogTWFzayB0byByZXRyaWV2ZSB0aGUgc2lnbmlmaWNhbnQgdmFsdWUgZnJvbSBhIHRyYWlsIHN1cnJvZ2F0ZS4KKyAgICAqLworCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBUUkFJTF9TVVJST0dBVEVfTUFTS18gICAgID0gMHgzRkY7ICAgCisgICAgLyoqCisgICAgICogVmFsdWUgdGhhdCBhbGwgbGVhZCBzdXJyb2dhdGUgc3RhcnRzIHdpdGgKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTEVBRF9TVVJST0dBVEVfT0ZGU0VUXyA9IAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExFQURfU1VSUk9HQVRFX01JTl9WQUxVRSAtIAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNVUFBMRU1FTlRBUllfTUlOX1ZBTFVFIAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4+IExFQURfU1VSUk9HQVRFX1NISUZUXyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgLy8gcHJpdmF0ZSBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIC8qKgorICAgICogPHA+Q29udmVydHMgYXJndW1lbnQgY29kZSBwb2ludCBhbmQgcmV0dXJucyBhIFN0cmluZyBvYmplY3QgcmVwcmVzZW50aW5nIAorICAgICogdGhlIGNvZGUgcG9pbnQncyB2YWx1ZSBpbiBVVEYxNiBmb3JtYXQuPC9wPgorICAgICogPHA+VGhpcyBtZXRob2QgZG9lcyBub3QgY2hlY2sgZm9yIHRoZSB2YWxpZGl0eSBvZiB0aGUgY29kZXBvaW50LCB0aGUKKyAgICAqIHJlc3VsdHMgYXJlIG5vdCBndWFyYW50ZWVkIGlmIGEgaW52YWxpZCBjb2RlcG9pbnQgaXMgcGFzc2VkIGFzIAorICAgICogYXJndW1lbnQuPC9wPgorICAgICogPHA+VGhlIHJlc3VsdCBpcyBhIHN0cmluZyB3aG9zZSBsZW5ndGggaXMgMSBmb3Igbm9uLXN1cHBsZW1lbnRhcnkgY29kZSAKKyAgICAqIHBvaW50cywgMiBvdGhlcndpc2UuPC9wPgorICAgICogQHBhcmFtIGNoIGNvZGUgcG9pbnQKKyAgICAqIEByZXR1cm4gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjb2RlIHBvaW50CisgICAgKiBAb2Jzb2xldGUgSUNVIDIuNC4gVXNlIFVDaGFyYWN0ZXIudG9TdHJpbmcoaW50KSBpbnN0ZWFkIHNpbmNlIGl0IHdpbGwgYmUKKyAgICAqICAgICAgICAgICByZW1vdmVkIGluIHRoYXQgcmVsZWFzZS4KKyAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGludCBjaCkKKyAgICB7ICAgCisgICAgICAgIGlmIChjaCA8IFNVUFBMRU1FTlRBUllfTUlOX1ZBTFVFKSB7CisgICAgICAgICAgICByZXR1cm4gU3RyaW5nLnZhbHVlT2YoKGNoYXIpY2gpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBTdHJpbmdCdWZmZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICByZXN1bHQuYXBwZW5kKGdldExlYWRTdXJyb2dhdGUoY2gpKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChnZXRUcmFpbFN1cnJvZ2F0ZShjaCkpOworICAgICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3RleHQvVW5lc2NhcGVUcmFuc2xpdGVyYXRvci5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvVW5lc2NhcGVUcmFuc2xpdGVyYXRvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjIzZWUyYzUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdGV4dC9VbmVzY2FwZVRyYW5zbGl0ZXJhdG9yLmphdmEKQEAgLTAsMCArMSwyNTMgQEAKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgQ29weXJpZ2h0IChjKSAyMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqICAgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgRGF0ZSAgICAgICAgTmFtZSAgICAgICAgRGVzY3JpcHRpb24KKyogICAxMS8xOS8yMDAxICBhbGl1ICAgICAgICBDcmVhdGlvbi4KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCitwYWNrYWdlIGNvbS5pYm0uaWN1LnRleHQ7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5VdGlsaXR5OworaW1wb3J0IGNvbS5pYm0uaWN1LmxhbmcuKjsKKworLyoqCisgKiBBIHRyYW5zbGl0ZXJhdG9yIHRoYXQgY29udmVydHMgVW5pY29kZSBlc2NhcGUgZm9ybXMgdG8gdGhlCisgKiBjaGFyYWN0ZXJzIHRoZXkgcmVwcmVzZW50LiAgRXNjYXBlIGZvcm1zIGhhdmUgYSBwcmVmaXgsIGEgc3VmZml4LCBhCisgKiByYWRpeCwgYW5kIG1pbmltdW0gYW5kIG1heGltdW0gZGlnaXQgY291bnRzLgorICoKKyAqIDxwPlRoaXMgY2xhc3MgaXMgcGFja2FnZSBwcml2YXRlLiAgSXQgcmVnaXN0ZXJzIHNldmVyYWwgc3RhbmRhcmQKKyAqIHZhcmlhbnRzIHdpdGggdGhlIHN5c3RlbSB3aGljaCBhcmUgdGhlbiBhY2Nlc3NlZCB2aWEgdGhlaXIgSURzLgorICoKKyAqIEBhdXRob3IgQWxhbiBMaXUKKyAqIEB2ZXJzaW9uICRSQ1NmaWxlOiBVbmVzY2FwZVRyYW5zbGl0ZXJhdG9yLmphdmEsdiAkICRSZXZpc2lvbjogMS41ICQgJERhdGU6IDIwMDIvMDIvMjUgMjI6NDM6NTggJAorICovCitjbGFzcyBVbmVzY2FwZVRyYW5zbGl0ZXJhdG9yIGV4dGVuZHMgVHJhbnNsaXRlcmF0b3IgeworCisgICAgLyoqCisgICAgICogVGhlIGVuY29kZWQgcGF0dGVybiBzcGVjaWZpY2F0aW9uLiAgVGhlIHBhdHRlcm4gY29uc2lzdHMgb2YKKyAgICAgKiB6ZXJvIG9yIG1vcmUgZm9ybXMuICBFYWNoIGZvcm0gY29uc2lzdHMgb2YgYSBwcmVmaXgsIHN1ZmZpeCwKKyAgICAgKiByYWRpeCwgbWluaW11bSBkaWdpdCBjb3VudCwgYW5kIG1heGltdW0gZGlnaXQgY291bnQuICBUaGVzZQorICAgICAqIHZhbHVlcyBhcmUgc3RvcmVkIGFzIGEgZml2ZSBjaGFyYWN0ZXIgaGVhZGVyLiAgVGhhdCBpcywgdGhlaXIKKyAgICAgKiBudW1lcmljIHZhbHVlcyBhcmUgY2FzdCB0byAxNi1iaXQgY2hhcmFjdGVycyBhbmQgc3RvcmVkIGluIHRoZQorICAgICAqIHN0cmluZy4gIEZvbGxvd2luZyB0aGVzZSBmaXZlIGNoYXJhY3RlcnMsIHRoZSBwcmVmaXgKKyAgICAgKiBjaGFyYWN0ZXJzLCB0aGVuIHN1ZmZpeCBjaGFyYWN0ZXJzIGFyZSBzdG9yZWQuICBFYWNoIGZvcm0gdGh1cworICAgICAqIHRha2VzIG4rNSBjaGFyYWN0ZXJzLCB3aGVyZSBuIGlzIHRoZSB0b3RhbCBsZW5ndGggb2YgdGhlIHByZWZpeAorICAgICAqIGFuZCBzdWZmaXguICBUaGUgZW5kIGlzIG1hcmtlZCBieSBhIGhlYWRlciBvZiBsZW5ndGggb25lCisgICAgICogY29uc2lzdGluZyBvZiB0aGUgY2hhcmFjdGVyIEVORC4KKyAgICAgKi8KKyAgICBwcml2YXRlIGNoYXIgc3BlY1tdOworCisgICAgLyoqCisgICAgICogU3BlY2lhbCBjaGFyYWN0ZXIgbWFya2luZyB0aGUgZW5kIG9mIHRoZSBzcGVjW10gYXJyYXkuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciBFTkQgPSAweEZGRkY7CisKKyAgICAvKioKKyAgICAgKiBSZWdpc3RlcnMgc3RhbmRhcmQgdmFyaWFudHMgd2l0aCB0aGUgc3lzdGVtLiAgQ2FsbGVkIGJ5CisgICAgICogVHJhbnNsaXRlcmF0b3IgZHVyaW5nIGluaXRpYWxpemF0aW9uLgorICAgICAqLworICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyKCkgeworICAgICAgICAvLyBVbmljb2RlOiAiVSsxMEZGRkYiIGhleCwgbWluPTQsIG1heD02CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yLnJlZ2lzdGVyRmFjdG9yeSgiSGV4LUFueS9Vbmljb2RlIiwgbmV3IFRyYW5zbGl0ZXJhdG9yLkZhY3RvcnkoKSB7CisgICAgICAgICAgICBwdWJsaWMgVHJhbnNsaXRlcmF0b3IgZ2V0SW5zdGFuY2UoU3RyaW5nIElEKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBVbmVzY2FwZVRyYW5zbGl0ZXJhdG9yKCJIZXgtQW55L1VuaWNvZGUiLCBuZXcgY2hhcltdIHsKKyAgICAgICAgICAgICAgICAgICAgMiwgMCwgMTYsIDQsIDYsICdVJywgJysnLAorICAgICAgICAgICAgICAgICAgICBFTkQKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgICAgIAorICAgICAgICAvLyBKYXZhOiAiXFx1RkZGRiIgaGV4LCBtaW49NCwgbWF4PTQKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IucmVnaXN0ZXJGYWN0b3J5KCJIZXgtQW55L0phdmEiLCBuZXcgVHJhbnNsaXRlcmF0b3IuRmFjdG9yeSgpIHsKKyAgICAgICAgICAgIHB1YmxpYyBUcmFuc2xpdGVyYXRvciBnZXRJbnN0YW5jZShTdHJpbmcgSUQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFVuZXNjYXBlVHJhbnNsaXRlcmF0b3IoIkhleC1BbnkvSmF2YSIsIG5ldyBjaGFyW10geworICAgICAgICAgICAgICAgICAgICAyLCAwLCAxNiwgNCwgNCwgJ1xcJywgJ3UnLAorICAgICAgICAgICAgICAgICAgICBFTkQKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgICAgIAorICAgICAgICAvLyBDOiAiXFx1RkZGRiIgaGV4LCBtaW49NCwgbWF4PTQ7IFxcVTAwMTBGRkZGIGhleCwgbWluPTgsIG1heD04CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yLnJlZ2lzdGVyRmFjdG9yeSgiSGV4LUFueS9DIiwgbmV3IFRyYW5zbGl0ZXJhdG9yLkZhY3RvcnkoKSB7CisgICAgICAgICAgICBwdWJsaWMgVHJhbnNsaXRlcmF0b3IgZ2V0SW5zdGFuY2UoU3RyaW5nIElEKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBVbmVzY2FwZVRyYW5zbGl0ZXJhdG9yKCJIZXgtQW55L0MiLCBuZXcgY2hhcltdIHsKKyAgICAgICAgICAgICAgICAgICAgMiwgMCwgMTYsIDQsIDQsICdcXCcsICd1JywKKyAgICAgICAgICAgICAgICAgICAgMiwgMCwgMTYsIDgsIDgsICdcXCcsICdVJywKKyAgICAgICAgICAgICAgICAgICAgRU5ECisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgICAKKyAgICAgICAgLy8gWE1MOiAiJiN4MTBGRkZGOyIgaGV4LCBtaW49MSwgbWF4PTYKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IucmVnaXN0ZXJGYWN0b3J5KCJIZXgtQW55L1hNTCIsIG5ldyBUcmFuc2xpdGVyYXRvci5GYWN0b3J5KCkgeworICAgICAgICAgICAgcHVibGljIFRyYW5zbGl0ZXJhdG9yIGdldEluc3RhbmNlKFN0cmluZyBJRCkgeworICAgICAgICAgICAgICAgIHJldHVybiBuZXcgVW5lc2NhcGVUcmFuc2xpdGVyYXRvcigiSGV4LUFueS9YTUwiLCBuZXcgY2hhcltdIHsKKyAgICAgICAgICAgICAgICAgICAgMywgMSwgMTYsIDEsIDYsICcmJywgJyMnLCAneCcsICc7JywKKyAgICAgICAgICAgICAgICAgICAgRU5ECisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworCisgICAgICAgIC8vIFhNTDEwOiAiJjExMTQxMTE7IiBkZWMsIG1pbj0xLCBtYXg9NyAobm90IHJlYWxseSAiSGV4LUFueSIpCisgICAgICAgIFRyYW5zbGl0ZXJhdG9yLnJlZ2lzdGVyRmFjdG9yeSgiSGV4LUFueS9YTUwxMCIsIG5ldyBUcmFuc2xpdGVyYXRvci5GYWN0b3J5KCkgeworICAgICAgICAgICAgcHVibGljIFRyYW5zbGl0ZXJhdG9yIGdldEluc3RhbmNlKFN0cmluZyBJRCkgeworICAgICAgICAgICAgICAgIHJldHVybiBuZXcgVW5lc2NhcGVUcmFuc2xpdGVyYXRvcigiSGV4LUFueS9YTUwxMCIsIG5ldyBjaGFyW10geworICAgICAgICAgICAgICAgICAgICAyLCAxLCAxMCwgMSwgNywgJyYnLCAnIycsICc7JywKKyAgICAgICAgICAgICAgICAgICAgRU5ECisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworCisgICAgICAgIC8vIFBlcmw6ICJcXHh7MjYzQX0iIGhleCwgbWluPTEsIG1heD02CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yLnJlZ2lzdGVyRmFjdG9yeSgiSGV4LUFueS9QZXJsIiwgbmV3IFRyYW5zbGl0ZXJhdG9yLkZhY3RvcnkoKSB7CisgICAgICAgICAgICBwdWJsaWMgVHJhbnNsaXRlcmF0b3IgZ2V0SW5zdGFuY2UoU3RyaW5nIElEKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBVbmVzY2FwZVRyYW5zbGl0ZXJhdG9yKCJIZXgtQW55L1BlcmwiLCBuZXcgY2hhcltdIHsKKyAgICAgICAgICAgICAgICAgICAgMywgMSwgMTYsIDEsIDYsICdcXCcsICd4JywgJ3snLCAnfScsCisgICAgICAgICAgICAgICAgICAgIEVORAorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKworICAgICAgICAvLyBBbGw6IEphdmEsIEMsIFBlcmwsIFhNTCwgWE1MMTAsIFVuaWNvZGUKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IucmVnaXN0ZXJGYWN0b3J5KCJIZXgtQW55IiwgbmV3IFRyYW5zbGl0ZXJhdG9yLkZhY3RvcnkoKSB7CisgICAgICAgICAgICBwdWJsaWMgVHJhbnNsaXRlcmF0b3IgZ2V0SW5zdGFuY2UoU3RyaW5nIElEKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBVbmVzY2FwZVRyYW5zbGl0ZXJhdG9yKCJIZXgtQW55IiwgbmV3IGNoYXJbXSB7CisgICAgICAgICAgICAgICAgICAgIDIsIDAsIDE2LCA0LCA2LCAnVScsICcrJywgICAgICAgICAgICAvLyBVbmljb2RlCisgICAgICAgICAgICAgICAgICAgIDIsIDAsIDE2LCA0LCA0LCAnXFwnLCAndScsICAgICAgICAgICAvLyBKYXZhCisgICAgICAgICAgICAgICAgICAgIDIsIDAsIDE2LCA4LCA4LCAnXFwnLCAnVScsICAgICAgICAgICAvLyBDIChzdXJyb2dhdGVzKQorICAgICAgICAgICAgICAgICAgICAzLCAxLCAxNiwgMSwgNiwgJyYnLCAnIycsICd4JywgJzsnLCAgLy8gWE1MCisgICAgICAgICAgICAgICAgICAgIDIsIDEsIDEwLCAxLCA3LCAnJicsICcjJywgJzsnLCAgICAgICAvLyBYTUwxMAorICAgICAgICAgICAgICAgICAgICAzLCAxLCAxNiwgMSwgNiwgJ1xcJywgJ3gnLCAneycsICd9JywgLy8gUGVybAorICAgICAgICAgICAgICAgICAgICBFTkQKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUGFja2FnZSBwcml2YXRlIGNvbnN0cnVjdG9yLiAgVGFrZXMgdGhlIGVuY29kZWQgc3BlYyBhcnJheS4KKyAgICAgKi8KKyAgICBVbmVzY2FwZVRyYW5zbGl0ZXJhdG9yKFN0cmluZyBJRCwgY2hhciBzcGVjW10pIHsKKyAgICAgICAgc3VwZXIoSUQsIG51bGwpOworICAgICAgICB0aGlzLnNwZWMgPSBzcGVjOworICAgIH0KKworICAgIC8qKgorICAgICAqIEltcGxlbWVudHMge0BsaW5rIFRyYW5zbGl0ZXJhdG9yI2hhbmRsZVRyYW5zbGl0ZXJhdGV9LgorICAgICAqLworICAgIHByb3RlY3RlZCB2b2lkIGhhbmRsZVRyYW5zbGl0ZXJhdGUoUmVwbGFjZWFibGUgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uIHBvcywgYm9vbGVhbiBpc0luY3JlbWVudGFsKSB7CisgICAgICAgIGludCBzdGFydCA9IHBvcy5zdGFydDsKKyAgICAgICAgaW50IGxpbWl0ID0gcG9zLmxpbWl0OworICAgICAgICBpbnQgaSwgaiwgaXBhdDsKKworICAgICAgbG9vcDoKKyAgICAgICAgd2hpbGUgKHN0YXJ0IDwgbGltaXQpIHsKKyAgICAgICAgICAgIC8vIExvb3Agb3ZlciB0aGUgZm9ybXMgaW4gc3BlY1tdLiAgRXhpdCB0aGlzIGxvb3Agd2hlbiB3ZQorICAgICAgICAgICAgLy8gbWF0Y2ggb25lIG9mIHRoZSBzcGVjcy4gIEV4aXQgdGhlIG91dGVyIGxvb3AgaWYgYQorICAgICAgICAgICAgLy8gcGFydGlhbCBtYXRjaCBpcyBkZXRlY3RlZCBhbmQgaXNJbmNyZW1lbnRhbCBpcyB0cnVlLgorICAgICAgICAgICAgZm9yIChqPTAsIGlwYXQ9MDsgc3BlY1tpcGF0XSAhPSBFTkQ7ICsraikgeworCisgICAgICAgICAgICAgICAgLy8gUmVhZCB0aGUgaGVhZGVyCisgICAgICAgICAgICAgICAgaW50IHByZWZpeExlbiA9IHNwZWNbaXBhdCsrXTsKKyAgICAgICAgICAgICAgICBpbnQgc3VmZml4TGVuID0gc3BlY1tpcGF0KytdOworICAgICAgICAgICAgICAgIGludCByYWRpeCAgICAgPSBzcGVjW2lwYXQrK107CisgICAgICAgICAgICAgICAgaW50IG1pbkRpZ2l0cyA9IHNwZWNbaXBhdCsrXTsKKyAgICAgICAgICAgICAgICBpbnQgbWF4RGlnaXRzID0gc3BlY1tpcGF0KytdOworCisgICAgICAgICAgICAgICAgLy8gcyBpcyBhIGNvcHkgb2Ygc3RhcnQgdGhhdCBpcyBhZHZhbmNlZCBvdmVyIHRoZQorICAgICAgICAgICAgICAgIC8vIGNoYXJhY3RlcnMgYXMgd2UgcGFyc2UgdGhlbS4KKyAgICAgICAgICAgICAgICBpbnQgcyA9IHN0YXJ0OworICAgICAgICAgICAgICAgIGJvb2xlYW4gbWF0Y2ggPSB0cnVlOworCisgICAgICAgICAgICAgICAgZm9yIChpPTA7IGk8cHJlZml4TGVuOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHMgPj0gbGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID4gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkgbWF0Y2hlZCBhIGNoYXJhY3Rlci4gIFRoaXMgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhIHBhcnRpYWwgbWF0Y2gsIHNvIHdlIHJldHVybiBpZiBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluY3JlbWVudGFsIG1vZGUuICBJbiBub24taW5jcmVtZW50YWwgbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnbyB0byB0aGUgbmV4dCBzcGVjLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0luY3JlbWVudGFsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGxvb3A7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgY2hhciBjID0gdGV4dC5jaGFyQXQocysrKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgIT0gc3BlY1tpcGF0ICsgaV0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChtYXRjaCkgeworICAgICAgICAgICAgICAgICAgICBpbnQgdSA9IDA7CisgICAgICAgICAgICAgICAgICAgIGludCBkaWdpdENvdW50ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPj0gbGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBmb3IgcGFydGlhbCBtYXRjaCBpbiBpbmNyZW1lbnRhbCBtb2RlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID4gc3RhcnQgJiYgaXNJbmNyZW1lbnRhbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBsb29wOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBjaCA9IHRleHQuY2hhcjMyQXQocyk7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGlnaXQgPSBVQ2hhcmFjdGVyLmRpZ2l0KGNoLCByYWRpeCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGlnaXQgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBzICs9IFVURjE2LmdldENoYXJDb3VudChjaCk7CisgICAgICAgICAgICAgICAgICAgICAgICB1ID0gKHUgKiByYWRpeCkgKyBkaWdpdDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgrK2RpZ2l0Q291bnQgPT0gbWF4RGlnaXRzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IChkaWdpdENvdW50ID49IG1pbkRpZ2l0cyk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGk9MDsgaTxzdWZmaXhMZW47ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID49IGxpbWl0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGZvciBwYXJ0aWFsIG1hdGNoIGluIGluY3JlbWVudGFsIG1vZGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID4gc3RhcnQgJiYgaXNJbmNyZW1lbnRhbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbG9vcDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBjID0gdGV4dC5jaGFyQXQocysrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyAhPSBzcGVjW2lwYXQgKyBwcmVmaXhMZW4gKyBpXSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQsIHdlIGhhdmUgYSBtYXRjaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBzdHIgPSBVVEYxNi52YWx1ZU9mKHUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQucmVwbGFjZShzdGFydCwgcywgc3RyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdCAtPSBzIC0gc3RhcnQgLSBzdHIubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBicmVhayBzdGF0ZW1lbnQgbGVhdmVzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvb3AgdGhhdCBpcyB0cmF2ZXJzaW5nIHRoZSBmb3JtcyBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNwZWNbXS4gIFdlIHRoZW4gcGFyc2UgdGhlIG5leHQgaW5wdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGFyYWN0ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpcGF0ICs9IHByZWZpeExlbiArIHN1ZmZpeExlbjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHN0YXJ0IDwgbGltaXQpIHsKKyAgICAgICAgICAgICAgICBzdGFydCArPSBVVEYxNi5nZXRDaGFyQ291bnQodGV4dC5jaGFyMzJBdChzdGFydCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcG9zLmNvbnRleHRMaW1pdCArPSBsaW1pdCAtIHBvcy5saW1pdDsKKyAgICAgICAgcG9zLmxpbWl0ID0gbGltaXQ7CisgICAgICAgIHBvcy5zdGFydCA9IHN0YXJ0OworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS90ZXh0L1VuaWNvZGVDb21wcmVzc29yLmphdmEgYi9zcmMvY29tL2libS9pY3UvdGV4dC9Vbmljb2RlQ29tcHJlc3Nvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmFmMzJhNDcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdGV4dC9Vbmljb2RlQ29tcHJlc3Nvci5qYXZhCkBAIC0wLDAgKzEsMTAxMiBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L3RleHQvVW5pY29kZUNvbXByZXNzb3IuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8xMi8wMyAyMjowMzo1OSAkIAorICogJFJldmlzaW9uOiAxLjQgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LnRleHQ7CisKKy8qKgorKiBBIGNvbXByZXNzaW9uIGVuZ2luZSBpbXBsZW1lbnRpbmcgdGhlIFN0YW5kYXJkIENvbXByZXNzaW9uIFNjaGVtZQorKiBmb3IgVW5pY29kZSAoU0NTVSkgYXMgb3V0bGluZWQgaW4gPEEKKyogSFJFRj0iaHR0cDovL3d3dy51bmljb2RlLm9yZy91bmljb2RlL3JlcG9ydHMvdHI2Ij5Vbmljb2RlIFRlY2huaWNhbAorKiBSZXBvcnQgIzY8L0E+LgorKgorKiA8UD5UaGUgU0NTVSB3b3JrcyBieSB1c2luZyBkeW5hbWljYWxseSBwb3NpdGlvbmVkIDxFTT53aW5kb3dzPC9FTT4KKyogY29uc2lzdGluZyBvZiAxMjggY29uc2VjdXRpdmUgY2hhcmFjdGVycyBpbiBVbmljb2RlLiAgRHVyaW5nIGNvbXByZXNzaW9uLCAKKyogY2hhcmFjdGVycyB3aXRoaW4gYSB3aW5kb3cgYXJlIGVuY29kZWQgaW4gdGhlIGNvbXByZXNzZWQgc3RyZWFtIGFzIHRoZSBieXRlcyAKKyogPFRUPjB4N0YgLSAweEZGPC9UVD4uIFRoZSBTQ1NVIHByb3ZpZGVzIHRyYW5zcGFyZW5jeSBmb3IgdGhlIGNoYXJhY3RlcnMgCisqIChieXRlcykgYmV0d2VlbiA8VFQ+VSswMDAwIC0gVSswMEZGPC9UVD4uICBUaGUgU0NTVSBhcHByb3hpbWF0ZXMgdGhlIAorKiBzdG9yYWdlIHNpemUgb2YgdHJhZGl0aW9uYWwgY2hhcmFjdGVyIHNldHMsIGZvciBleGFtcGxlIDEgYnl0ZSBwZXIKKyogY2hhcmFjdGVyIGZvciBBU0NJSSBvciBMYXRpbi0xIHRleHQsIGFuZCAyIGJ5dGVzIHBlciBjaGFyYWN0ZXIgZm9yIENKSworKiBpZGVvZ3JhcGhzLjwvUD4KKyoKKyogPFA+PFNUUk9ORz5VU0FHRTwvU1RST05HPjwvUD4KKyoKKyogPFA+VGhlIHN0YXRpYyBtZXRob2RzIG9uIDxUVD5Vbmljb2RlQ29tcHJlc3NvcjwvVFQ+IG1heSBiZSB1c2VkIGluIGEKKyogc3RyYWlnaHRmb3J3YXJkIG1hbm5lciB0byBjb21wcmVzcyBzaW1wbGUgc3RyaW5nczo8L1A+CisqCisqIDxQUkU+CisqICBTdHJpbmcgcyA9IC4uLiA7IC8vIGdldCBzdHJpbmcgZnJvbSBzb21ld2hlcmUKKyogIGJ5dGUgW10gY29tcHJlc3NlZCA9IFVuaWNvZGVDb21wcmVzc29yLmNvbXByZXNzKHMpOworKiA8L1BSRT4KKyoKKyogPFA+VGhlIHN0YXRpYyBtZXRob2RzIGhhdmUgYSBmYWlybHkgbGFyZ2UgbWVtb3J5IGZvb3RwcmludC4KKyogRm9yIGZpbmVyLWdyYWluZWQgY29udHJvbCBvdmVyIG1lbW9yeSB1c2FnZSwgCisqIDxUVD5Vbmljb2RlQ29tcHJlc3NvcjwvVFQ+IG9mZmVycyBtb3JlIHBvd2VyZnVsIEFQSXMgYWxsb3dpbmcKKyogaXRlcmF0aXZlIGNvbXByZXNzaW9uOjwvUD4KKyoKKyogPFBSRT4KKyogIC8vIENvbXByZXNzIGFuIGFycmF5ICJjaGFycyIgb2YgbGVuZ3RoICJsZW4iIHVzaW5nIGEgYnVmZmVyIG9mIDUxMiBieXRlcworKiAgLy8gdG8gdGhlIE91dHB1dFN0cmVhbSAib3V0IgorKgorKiAgVW5pY29kZUNvbXByZXNzb3IgbXlDb21wcmVzc29yICAgICAgICAgPSBuZXcgVW5pY29kZUNvbXByZXNzb3IoKTsKKyogIGZpbmFsIHN0YXRpYyBpbnQgIEJVRlNJWkUgICAgICAgICAgICAgID0gNTEyOworKiAgYnl0ZSBbXSAgICAgICAgICAgYnl0ZUJ1ZmZlciAgICAgICAgICAgPSBuZXcgYnl0ZSBbIEJVRlNJWkUgXTsKKyogIGludCAgICAgICAgICAgICAgIGJ5dGVzV3JpdHRlbiAgICAgICAgID0gMDsKKyogIGludCBbXSAgICAgICAgICAgIHVuaWNoYXJzUmVhZCAgICAgICAgID0gbmV3IGludCBbMV07CisqICBpbnQgICAgICAgICAgICAgICB0b3RhbENoYXJzQ29tcHJlc3NlZCA9IDA7CisqICBpbnQgICAgICAgICAgICAgICB0b3RhbEJ5dGVzV3JpdHRlbiAgICA9IDA7CisqCisqICBkbyB7CisqICAgIC8vIGRvIHRoZSBjb21wcmVzc2lvbgorKiAgICBieXRlc1dyaXR0ZW4gPSBteUNvbXByZXNzb3IuY29tcHJlc3MoY2hhcnMsIHRvdGFsQ2hhcnNDb21wcmVzc2VkLCAKKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbiwgdW5pY2hhcnNSZWFkLAorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZUJ1ZmZlciwgMCwgQlVGU0laRSk7CisqCisqICAgIC8vIGRvIHNvbWV0aGluZyB3aXRoIHRoZSBjdXJyZW50IHNldCBvZiBieXRlcworKiAgICBvdXQud3JpdGUoYnl0ZUJ1ZmZlciwgMCwgYnl0ZXNXcml0dGVuKTsKKyoKKyogICAgLy8gdXBkYXRlIHRoZSBuby4gb2YgY2hhcmFjdGVycyBjb21wcmVzc2VkCisqICAgIHRvdGFsQ2hhcnNDb21wcmVzc2VkICs9IHVuaWNoYXJzUmVhZFswXTsKKyoKKyogICAgLy8gdXBkYXRlIHRoZSBuby4gb2YgYnl0ZXMgd3JpdHRlbgorKiAgICB0b3RhbEJ5dGVzV3JpdHRlbiArPSBieXRlc1dyaXR0ZW47CisqCisqICB9IHdoaWxlKHRvdGFsQ2hhcnNDb21wcmVzc2VkIDwgbGVuKTsKKyoKKyogIG15Q29tcHJlc3Nvci5yZXNldCgpOyAvLyByZXVzZSBjb21wcmVzc29yCisqIDwvUFJFPgorKgorKiBAc2VlIFVuaWNvZGVEZWNvbXByZXNzb3IKKyoKKyogQGF1dGhvciBTdGVwaGVuIEYuIEJvb3RoCisqIEBkcmFmdCBJQ1UgMi40CisqLworCisvKgorKgorKiBDT01QUkVTU0lPTiBTVFJBVEVHWQorKgorKiBTaW5nbGUgQnl0ZSBNb2RlCisqCisqIFRoZXJlIGFyZSB0aHJlZSByZWxldmFudCBjYXNlcy4KKyogSWYgdGhlIGNoYXJhY3RlciBpcyBpbiB0aGUgY3VycmVudCB3aW5kb3cgb3IgaXMgTGF0aW4tMSAoVSswMDAwLAorKiBVKzAwMDksIFUrMDAwQSwgVSswMDBELCBVKzAwMjAgLSBVKzAwN0YpLCB0aGUgY2hhcmFjdGVyIGlzIHBsYWNlZAorKiBkaXJlY3RseSBpbiB0aGUgc3RyZWFtIGFzIGEgc2luZ2xlIGJ5dGUuCisqCisqICAxLiBDdXJyZW50IGNoYXJhY3RlciBpcyBpbiBkZWZpbmVkLCBpbmFjdGl2ZSB3aW5kb3cuCisqICAyLiBDdXJyZW50IGNoYXJhY3RlciBpcyBpbiB1bmRlZmluZWQgd2luZG93LgorKiAgMy4gQ3VycmVudCBjaGFyYWN0ZXIgaXMgdW5jb21wcmVzc2libGUgVW5pY29kZSAoVSszNDAwIC0gVStERkZGKS4KKyogCisqICAxLiBDdXJyZW50IGNoYXJhY3RlciBpcyBpbiBkZWZpbmVkLCBpbmFjdGl2ZSB3aW5kb3cKKyogICAgQS4gTG9vayBhaGVhZCB0d28gY2hhcmFjdGVycworKiAgICBCLiBJZiBib3RoIGZvbGxvd2luZyBjaGFyYWN0ZXJzIGluIHNhbWUgd2luZG93IGFzIGN1cnJlbnQgY2hhcmFjdGVyLCAKKyogICAgICAgc3dpdGNoIHRvIGRlZmluZWQgd2luZG93CisqICAgIEMuIElmIG9ubHkgbmV4dCBjaGFyYWN0ZXIgaXMgaW4gc2FtZSB3aW5kb3cgYXMgY3VycmVudCBjaGFyYWN0ZXIsIAorKiAgICAgICBxdW90ZSBkZWZpbmVkIHdpbmRvdworKiAgICBELiBJZiBuZWl0aGVyIG9mIGZvbGxvd2luZyBjaGFyYWN0ZXJzIGlzIGluIHNhbWUgd2luZG93IGFzIGN1cnJlbnQsIAorKiAgICAgICBxdW90ZSBkZWZpbmVkIHdpbmRvdworKiAgIAorKiAgMi4gQ3VycmVudCBjaGFyYWN0ZXIgaXMgaW4gdW5kZWZpbmVkIHdpbmRvdworKiAgICBBLiBMb29rIGFoZWFkIHR3byBjaGFyYWN0ZXJzCisqICAgIEIuIElmIGJvdGggZm9sbG93aW5nIGNoYXJhY3RlcnMgaW4gc2FtZSB3aW5kb3cgYXMgY3VycmVudCBjaGFyYWN0ZXIsIAorKiAgICAgICBkZWZpbmUgbmV3IHdpbmRvdworKiAgICBDLiBJZiBvbmx5IG5leHQgY2hhcmFjdGVyIGluIHNhbWUgd2luZG93IGFzIGN1cnJlbnQgY2hhcmFjdGVyLCAKKyogICAgICAgc3dpdGNoIHRvIFVuaWNvZGUgbW9kZQorKiAgICAgICBOT1RFOiBUaGlzIGNvc3RzIHVzIG9uZSBleHRyYSBieXRlLiAgSG93ZXZlciwgCisqICAgICAgICBzaW5jZSB3ZSBoYXZlIGEgbGltaXRlZCBudW1iZXIgb2Ygd2luZG93cyB0byB3b3JrIHdpdGgsIGl0IGlzIAorKiAgICAgICAgYXNzdW1lZCB0aGUgY29zdCB3aWxsIHBheSBvZmYgbGF0ZXIgaW4gc2F2aW5ncyBmcm9tIGEgd2luZG93IHdpdGgKKyogICAgICAgIG1vcmUgY2hhcmFjdGVycyBpbiBpdC4KKyogICAgRC4gSWYgbmVpdGhlciBvZiBmb2xsb3dpbmcgY2hhcmFjdGVycyBpbiBzYW1lIHdpbmRvdyBhcyBjdXJyZW50LCAKKyogICAgICAgc3dpdGNoIHRvIFVuaWNvZGUgbW9kZS4gIEFsdGVybmF0aXZlIHRvIGFib3ZlOiBqdXN0IHF1b3RlIAorKiAgICAgICBVbmljb2RlIChzYW1lIGJ5dGUgY29zdCkKKyogICAKKyogIDMuIEN1cnJlbnQgY2hhcmFjdGVyIGlzIHVuY29tcHJlc3NpYmxlIFVuaWNvZGUgKFUrMzQwMCAtIFUrREZGRikKKyogICAgQS4gTG9vayBhaGVhZCBvbmUgY2hhcmFjdGVyCisqICAgIEIuIElmIG5leHQgY2hhcmFjdGVyIGluIG5vbi1jb21wcmVzc2libGUgcmVnaW9uLCBzd2l0Y2ggdG8gCisqICAgICAgIFVuaWNvZGUgbW9kZQorKiAgICBDLiBJZiBuZXh0IGNoYXJhY3RlciBub3QgaW4gbm9uLWNvbXByZXNzaWJsZSByZWdpb24sIHF1b3RlIFVuaWNvZGUKKyogICAKKyoKKyogVGhlIGZvbGxvd2luZyBjaGFydCBpbGx1c3RyYXRlcyB0aGUgYnl0ZXMgcmVxdWlyZWQgZm9yIGVuY29kaW5nIGNoYXJhY3RlcnMKKyogaW4gZWFjaCBwb3NzaWJsZSB3YXkKKyoKKyogCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSU5HTEUgQllURSBNT0RFCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hhcmFjdGVycyBpbiBhIHJvdyB3aXRoIHNhbWUgaW5kZXgKKyogICAgICAgICAgICAgICB0YWcgZW5jb3VudGVyZWQgICAgICAgICAgICAgMSAgICAgICAyICAgICAgIDMgICAgICAgNAorKiAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiAgICAgICAgICAgICAgIG5vbmUgKGluIGN1cnJlbnQgd2luZG93KSAgICAxICAgICAgIDIgICAgICAgMyAgICAgICA0CisqCisqICAgICAgICAgICAgICAgcXVvdGUgVW5pY29kZSAgICAgICAgICAgICAgIDMgICAgICAgNiAgICAgICA5ICAgICAgIDEyCisqCisqICAgd2luZG93IG5vdCAgc3dpdGNoIHRvIFVuaWNvZGUgICAgICAgICAgIDMgICAgICAgNSAgICAgICA3ICAgICAgIDkgICAgIGJ5dGUKKyogICBkZWZpbmVkICAgICBkZWZpbmUgd2luZG93ICAgICAgICAgICAgICAgMyAgICAgICA0ICAgICAgIDUgICAgICAgNiAgICAgY29zdAorKiAgICAgIAorKiAgIHdpbmRvdyAgICAgIHN3aXRjaCB0byB3aW5kb3cgICAgICAgICAgICAyICAgICAgIDMgICAgICAgNCAgICAgICA1CisqICAgZGVmaW5lZCAgICAgcXVvdGUgd2luZG93ICAgICAgICAgICAgICAgIDIgICAgICAgNCAgICAgICA2ICAgICAgIDgKKyoKKyogIFVuaWNvZGUgTW9kZQorKgorKiBUaGVyZSBhcmUgdHdvIHJlbGV2YW50IGNhc2VzLgorKiBJZiB0aGUgY2hhcmFjdGVyIGlzIGluIHRoZSBub24tY29tcHJlc3NpYmxlIHJlZ2lvbgorKiAoVSszNDAwIC0gVStERkZGKSwgdGhlIGNoYXJhY3RlciBpcyBzaW1wbHkgd3JpdHRlbiB0byB0aGUKKyogc3RyZWFtIGFzIGEgcGFpciBvZiBieXRlcy4KKyoKKyogMS4gQ3VycmVudCBjaGFyYWN0ZXIgaXMgaW4gZGVmaW5lZCwgaW5hY3RpdmUgd2luZG93LgorKiAyLiBDdXJyZW50IGNoYXJhY3RlciBpcyBpbiB1bmRlZmluZWQgd2luZG93LgorKgorKiAgMS5DdXJyZW50IGNoYXJhY3RlciBpcyBpbiBkZWZpbmVkLCBpbmFjdGl2ZSB3aW5kb3cKKyogICAgQS4gTG9vayBhaGVhZCBvbmUgY2hhcmFjdGVyCisqICAgIEIuIElmIG5leHQgY2hhcmFjdGVyIGhhcyBzYW1lIGluZGV4IGFzIGN1cnJlbnQgY2hhcmFjdGVyLCAKKyogICAgICAgc3dpdGNoIHRvIGRlZmluZWQgd2luZG93IChhbmQgc3dpdGNoIHRvIHNpbmdsZS1ieXRlIG1vZGUpCisqICAgIEMuIElmIG5vdCwganVzdCBwdXQgYnl0ZXMgaW4gc3RyZWFtCisqICAgCisqICAKKyogIDIuIEN1cnJlbnQgY2hhcmFjdGVyIGlzIGluIHVuZGVmaW5lZCB3aW5kb3cKKyogICAgQS4gTG9vayBhaGVhZCB0d28gY2hhcmFjdGVycworKiAgICBCLiBJZiBib3RoIGluIHNhbWUgd2luZG93IGFzIGN1cnJlbnQgY2hhcmFjdGVyLCBkZWZpbmUgd2luZG93IAorKiAgICAgICAoYW5kIHN3aXRjaCB0byBzaW5nbGUtYnl0ZSBtb2RlKQorKiAgICBDLiBJZiBvbmx5IG5leHQgY2hhcmFjdGVyIGluIHNhbWUgd2luZG93LCBqdXN0IHB1dCBieXRlcyBpbiBzdHJlYW0KKyogICAgICAgIE5PVEU6IFRoaXMgY29zdHMgdXMgb25lIGV4dHJhIGJ5dGUuICBIb3dldmVyLCAKKyogICAgICAgIHNpbmNlIHdlIGhhdmUgYSBsaW1pdGVkIG51bWJlciBvZiB3aW5kb3dzIHRvIHdvcmsgd2l0aCwgaXQgaXMgCisqICAgICAgICBhc3N1bWVkIHRoZSBjb3N0IHdpbGwgcGF5IG9mZiBsYXRlciBpbiBzYXZpbmdzIGZyb20gYSB3aW5kb3cgd2l0aCAKKyogICAgICAgIG1vcmUgY2hhcmFjdGVycyBpbiBpdC4KKyogICAgRC4gSWYgbmVpdGhlciBpbiBzYW1lIHdpbmRvdywgcHV0IGJ5dGVzIGluIHN0cmVhbQorKiAgIAorKgorKiBUaGUgZm9sbG93aW5nIGNoYXJ0IGlsbHVzdHJhdGVzIHRoZSBieXRlcyByZXF1aXJlZCBmb3IgZW5jb2RpbmcgY2hhcmFjdGVycworKiBpbiBlYWNoIHBvc3NpYmxlIHdheQorKgorKiAKKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVOSUNPREUgTU9ERQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJhY3RlcnMgaW4gYSByb3cgd2l0aCBzYW1lIGluZGV4CisqICAgICAgICAgICAgICAgdGFnIGVuY291bnRlcmVkICAgICAgICAgICAgIDEgICAgICAgMiAgICAgICAzICAgICAgIDQKKyogICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogICAgICAgICAgICAgICBub25lICAgICAgICAgICAgICAgICAgICAgICAgMiAgICAgICA0ICAgICAgIDYgICAgICAgOAorKgorKiAgICAgICAgICAgICAgIHF1b3RlIFVuaWNvZGUgICAgICAgICAgICAgICAzICAgICAgIDYgICAgICAgOSAgICAgICAxMgorKgorKiAgIHdpbmRvdyBub3QgIGRlZmluZSB3aW5kb3cgICAgICAgICAgICAgICAzICAgICAgIDQgICAgICAgNSAgICAgICA2ICAgICBieXRlCisqICAgZGVmaW5lZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvc3QKKyogICB3aW5kb3cgICAgICBzd2l0Y2ggdG8gd2luZG93ICAgICAgICAgICAgMiAgICAgICAzICAgICAgIDQgICAgICAgNQorKiAgIGRlZmluZWQKKyovCitwdWJsaWMgZmluYWwgY2xhc3MgVW5pY29kZUNvbXByZXNzb3IgaW1wbGVtZW50cyBTQ1NVCit7CisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIENsYXNzIHZhcmlhYmxlcworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgIC8qKiBGb3IgcXVpY2sgaWRlbnRpZmljYXRpb24gb2YgYSBieXRlIGFzIGEgc2luZ2xlLWJ5dGUgbW9kZSB0YWcgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBib29sZWFuIFtdIHNTaW5nbGVUYWdUYWJsZSA9IHsKKyAgICAgICAgLy8gdGFibGUgZ2VuZXJhdGVkIGJ5IENvbXByZXNzaW9uVGFibGVHZW5lcmF0b3IKKyAgICAgICAgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlLAorCWZhbHNlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwKKwl0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLAorCXRydWUsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsZmFsc2UsCisJZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwlmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAorCWZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwlmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAorCWZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwlmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAorCWZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwlmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAorCWZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwlmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAorCWZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwlmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAorCWZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwlmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAorCWZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwlmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAorCWZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJZmFsc2UgICAKKyAgICB9OworCisgICAgLyoqIEZvciBxdWljayBpZGVudGlmaWNhdGlvbiBvZiBhIGJ5dGUgYXMgYSB1bmljb2RlIG1vZGUgdGFnICovCisgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBbXSBzVW5pY29kZVRhZ1RhYmxlID0geworICAgICAgICAvLyB0YWJsZSBnZW5lcmF0ZWQgYnkgQ29tcHJlc3Npb25UYWJsZUdlbmVyYXRvcgorICAgICAgICBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAorCWZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwlmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAorCWZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwlmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAorCWZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwlmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAorCWZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwlmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAorCWZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwlmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAorCWZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwlmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAorCWZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwlmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAorCWZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwlmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsCisJdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwKKwl0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgZmFsc2UsCisJZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwlmYWxzZSwgZmFsc2UgCisgICAgfTsKKworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBJbnN0YW5jZSB2YXJpYWJsZXMKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgCisgICAgLyoqIEFsaWFzIHRvIGN1cnJlbnQgZHluYW1pYyB3aW5kb3cgKi8KKyAgICBwcml2YXRlIGludCAgICAgICBmQ3VycmVudFdpbmRvdyAgID0gMDsKKworICAgIC8qKiBEeW5hbWljIGNvbXByZXNzaW9uIHdpbmRvdyBvZmZzZXRzICovCisgICAgcHJpdmF0ZSBpbnQgW10gICAgZk9mZnNldHMgICAgICAgICA9IG5ldyBpbnQgWyBOVU1XSU5ET1dTIF07CisKKyAgICAvKiogQ3VycmVudCBjb21wcmVzc2lvbiBtb2RlICovCisgICAgcHJpdmF0ZSBpbnQgICAgICAgZk1vZGUgICAgICAgICAgICA9IFNJTkdMRUJZVEVNT0RFOworCisgICAgLyoqIEtlZXBzIGNvdW50IG9mIHRpbWVzIGNoYXJhY3RlciBpbmRpY2VzIGFyZSBlbmNvdW50ZXJlZCAqLworICAgIHByaXZhdGUgaW50IFtdICAgIGZJbmRleENvdW50ICAgICAgPSBuZXcgaW50IFsgTUFYSU5ERVggKyAxIF07CisKKyAgICAvKiogVGhlIHRpbWUgc3RhbXBzIGluZGljYXRlIHdoZW4gYSB3aW5kb3cgd2FzIGxhc3QgZGVmaW5lZCAqLworICAgIHByaXZhdGUgaW50IFtdICAgIGZUaW1lU3RhbXBzICAgICAgPSBuZXcgaW50IFsgTlVNV0lORE9XUyBdOworICAgIAorICAgIC8qKiBUaGUgY3VycmVudCB0aW1lIHN0YW1wICovCisgICAgcHJpdmF0ZSBpbnQgICAgICAgZlRpbWVTdGFtcCAgICAgICA9IDA7CisgICAgCisKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSBVbmljb2RlQ29tcHJlc3Nvci4KKyAgICAgKiBTZXRzIGFsbCB3aW5kb3dzIHRvIHRoZWlyIGRlZmF1bHQgdmFsdWVzLgorICAgICAqIEBzZWUgI3Jlc2V0CisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgVW5pY29kZUNvbXByZXNzb3IoKQorICAgIHsKKwlyZXNldCgpOyAgICAgICAgICAgICAgLy8gaW5pdGlhbGl6ZSB0byBkZWZhdWx0cworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbXByZXNzIGEgc3RyaW5nIGludG8gYSBieXRlIGFycmF5LgorICAgICAqIEBwYXJhbSBidWZmZXIgVGhlIHN0cmluZyB0byBjb21wcmVzcy4KKyAgICAgKiBAcmV0dXJuIEEgYnl0ZSBhcnJheSBjb250YWluaW5nIHRoZSBjb21wcmVzc2VkIGNoYXJhY3RlcnMuCisgICAgICogQHNlZSAjY29tcHJlc3MoY2hhciBbXSwgaW50LCBpbnQpCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGJ5dGUgW10gY29tcHJlc3MoU3RyaW5nIGJ1ZmZlcikKKyAgICB7CisJcmV0dXJuIGNvbXByZXNzKGJ1ZmZlci50b0NoYXJBcnJheSgpLCAwLCBidWZmZXIubGVuZ3RoKCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbXByZXNzIGEgVW5pY29kZSBjaGFyYWN0ZXIgYXJyYXkgaW50byBhIGJ5dGUgYXJyYXkuCisgICAgICogQHBhcmFtIGJ1ZmZlciBUaGUgY2hhcmFjdGVyIGJ1ZmZlciB0byBjb21wcmVzcy4KKyAgICAgKiBAcGFyYW0gc3RhcnQgVGhlIHN0YXJ0IG9mIHRoZSBjaGFyYWN0ZXIgcnVuIHRvIGNvbXByZXNzLgorICAgICAqIEBwYXJhbSBsaW1pdCBUaGUgbGltaXQgb2YgdGhlIGNoYXJhY3RlciBydW4gdG8gY29tcHJlc3MuCisgICAgICogQHJldHVybiBBIGJ5dGUgYXJyYXkgY29udGFpbmluZyB0aGUgY29tcHJlc3NlZCBjaGFyYWN0ZXJzLgorICAgICAqIEBzZWUgI2NvbXByZXNzKFN0cmluZykKKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgYnl0ZSBbXSBjb21wcmVzcyhjaGFyIFtdIGJ1ZmZlciwKKwkJCQkgICBpbnQgc3RhcnQsCisJCQkJICAgaW50IGxpbWl0KQorICAgIHsKKwlVbmljb2RlQ29tcHJlc3NvciBjb21wID0gbmV3IFVuaWNvZGVDb21wcmVzc29yKCk7CisKKwkvLyB1c2UgYSBidWZmZXIgdGhhdCB3ZSBrbm93IHdpbGwgbmV2ZXIgb3ZlcmZsb3cKKwkvLyBpbiB0aGUgd29yc3QgY2FzZSwgZWFjaCBjaGFyYWN0ZXIgd2lsbCB0YWtlIDMgYnl0ZXMKKwkvLyB0byBlbmNvZGU6IFVRVSwgaGlieXRlLCBsb2J5dGUuICBJbiB0aGlzIGNhc2UsIHRoZQorCS8vIGNvbXByZXNzZWQgZGF0YSB3aWxsIGxvb2sgbGlrZTogU0NVLCBVUVUsIGhpYnl0ZSwgbG9ieXRlLCAuLi4KKwkvLyBidWZmZXIgbXVzdCBiZSBhdCBsZWFzdCA0IGJ5dGVzIGluIHNpemUKKwlpbnQgbGVuID0gTWF0aC5tYXgoNCwgMyAqIChsaW1pdCAtIHN0YXJ0KSArIDEpOworCWJ5dGUgW10gdGVtcCA9IG5ldyBieXRlIFtsZW5dOworCisJaW50IGJ5dGVDb3VudCA9IGNvbXAuY29tcHJlc3MoYnVmZmVyLCBzdGFydCwgbGltaXQsIG51bGwsIAorCQkJCSAgICAgIHRlbXAsIDAsIGxlbik7CisKKwlieXRlIFtdIHJlc3VsdCA9IG5ldyBieXRlIFtieXRlQ291bnRdOworCVN5c3RlbS5hcnJheWNvcHkodGVtcCwgMCwgcmVzdWx0LCAwLCBieXRlQ291bnQpOworCXJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29tcHJlc3MgYSBVbmljb2RlIGNoYXJhY3RlciBhcnJheSBpbnRvIGEgYnl0ZSBhcnJheS4KKyAgICAgKgorICAgICAqIFRoaXMgZnVuY3Rpb24gd2lsbCBvbmx5IGNvbnN1bWUgaW5wdXQgdGhhdCBjYW4gYmUgY29tcGxldGVseQorICAgICAqIG91dHB1dC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBjaGFyQnVmZmVyIFRoZSBjaGFyYWN0ZXIgYnVmZmVyIHRvIGNvbXByZXNzLgorICAgICAqIEBwYXJhbSBjaGFyQnVmZmVyU3RhcnQgVGhlIHN0YXJ0IG9mIHRoZSBjaGFyYWN0ZXIgcnVuIHRvIGNvbXByZXNzLgorICAgICAqIEBwYXJhbSBjaGFyQnVmZmVyTGltaXQgVGhlIGxpbWl0IG9mIHRoZSBjaGFyYWN0ZXIgcnVuIHRvIGNvbXByZXNzLgorICAgICAqIEBwYXJhbSBjaGFyc1JlYWQgQSBvbmUtZWxlbWVudCBhcnJheS4gIElmIG5vdCBudWxsLCBvbiByZXR1cm4gCisgICAgICogdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHJlYWQgZnJvbSBjaGFyQnVmZmVyLgorICAgICAqIEBwYXJhbSBieXRlQnVmZmVyIEEgYnVmZmVyIHRvIHJlY2VpdmUgdGhlIGNvbXByZXNzZWQgZGF0YS4gIFRoaXMgCisgICAgICogYnVmZmVyIG11c3QgYmUgYXQgbWluaW11bSBmb3VyIGJ5dGVzIGluIHNpemUuCisgICAgICogQHBhcmFtIGJ5dGVCdWZmZXJTdGFydCBUaGUgc3RhcnRpbmcgb2Zmc2V0IHRvIHdoaWNoIHRvIHdyaXRlIAorICAgICAqIGNvbXByZXNzZWQgZGF0YS4KKyAgICAgKiBAcGFyYW0gYnl0ZUJ1ZmZlckxpbWl0IFRoZSBsaW1pdGluZyBvZmZzZXQgZm9yIHdyaXRpbmcgY29tcHJlc3NlZCBkYXRhLgorICAgICAqIEByZXR1cm4gVGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuIHRvIGJ5dGVCdWZmZXIuCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGNvbXByZXNzKGNoYXIgW10gICAgIGNoYXJCdWZmZXIsCisJCQlpbnQgICAgICAgICBjaGFyQnVmZmVyU3RhcnQsCisJCQlpbnQgICAgICAgICBjaGFyQnVmZmVyTGltaXQsCisJCQlpbnQgW10gICAgICBjaGFyc1JlYWQsCisJCQlieXRlIFtdICAgICBieXRlQnVmZmVyLAorCQkJaW50ICAgICAgICAgYnl0ZUJ1ZmZlclN0YXJ0LAorCQkJaW50ICAgICAgICAgYnl0ZUJ1ZmZlckxpbWl0KQorICAgIHsKKyAgICAgICAgLy8gdGhlIGN1cnJlbnQgcG9zaXRpb24gaW4gdGhlIHRhcmdldCBieXRlIGJ1ZmZlcgorCWludCAgICAgYnl0ZVBvcyAgICAgICA9IGJ5dGVCdWZmZXJTdGFydDsKKwkKKwkvLyB0aGUgY3VycmVudCBwb3NpdGlvbiBpbiB0aGUgc291cmNlIHVuaWNvZGUgY2hhcmFjdGVyIGJ1ZmZlcgorCWludCAgICAgdWNQb3MgICAgICAgICA9IGNoYXJCdWZmZXJTdGFydDsKKwkKKwkvLyB0aGUgY3VycmVudCB1bmljb2RlIGNoYXJhY3RlciBmcm9tIHRoZSBzb3VyY2UgYnVmZmVyCisJaW50ICAgICBjdXJVQyAgICAgICAgID0gSU5WQUxJRENIQVI7CisJCisJLy8gdGhlIGluZGV4IGZvciB0aGUgY3VycmVudCBjaGFyYWN0ZXIKKyAgICAgICAgaW50ICAgICBjdXJJbmRleCAgICAgID0gLTE7CisgICAgICAgIAorCS8vIGxvb2sgYWhlYWQKKwlpbnQgICAgIG5leHRVQyAgICAgICAgPSBJTlZBTElEQ0hBUjsKKwlpbnQgICAgIGZvcndhcmRVQyAgICAgPSBJTlZBTElEQ0hBUjsKKwkKKyAgICAgICAgLy8gdGVtcG9yYXJ5IGZvciB3aW5kb3cgc2VhcmNoaW5nCisJaW50ICAgICB3aGljaFdpbmRvdyAgID0gMDsKKwkKKwkvLyBoaWdoIGFuZCBsb3cgYnl0ZXMgb2YgdGhlIGN1cnJlbnQgdW5pY29kZSBjaGFyYWN0ZXIKKwlpbnQgICAgIGhpQnl0ZSAgICAgICAgPSAwOworCWludCAgICAgbG9CeXRlICAgICAgICA9IDA7CisKKworCS8vIGJ5dGVCdWZmZXIgbXVzdCBiZSBhdCBsZWFzdCA0IGJ5dGVzIGluIHNpemUKKwlpZihieXRlQnVmZmVyLmxlbmd0aCA8IDQgfHwgKGJ5dGVCdWZmZXJMaW1pdCAtIGJ5dGVCdWZmZXJTdGFydCkgPCA0KQorCSAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJieXRlQnVmZmVyLmxlbmd0aCA8IDQiKTsKKworICAgIG1haW5Mb29wOgorCXdoaWxlKHVjUG9zIDwgY2hhckJ1ZmZlckxpbWl0ICYmIGJ5dGVQb3MgPCBieXRlQnVmZmVyTGltaXQpIHsKKwkgICAgc3dpdGNoKGZNb2RlKSB7CisJCS8vIG1haW4gc2luZ2xlIGJ5dGUgbW9kZSBjb21wcmVzc2lvbiBsb29wCisJICAgIGNhc2UgU0lOR0xFQllURU1PREU6CisJICAgIHNpbmdsZUJ5dGVNb2RlTG9vcDoKKwkgICAgd2hpbGUodWNQb3MgPCBjaGFyQnVmZmVyTGltaXQgJiYgYnl0ZVBvcyA8IGJ5dGVCdWZmZXJMaW1pdCkgeworCQkvLyBnZXQgY3VycmVudCBjaGFyCisJCWN1clVDID0gY2hhckJ1ZmZlclt1Y1BvcysrXTsKKworCQkvLyBnZXQgbmV4dCBjaGFyCisJCWlmKHVjUG9zIDwgY2hhckJ1ZmZlckxpbWl0KSAKKwkJICAgIG5leHRVQyA9IGNoYXJCdWZmZXJbdWNQb3NdOworCQllbHNlCisJCSAgICBuZXh0VUMgPSBJTlZBTElEQ0hBUjsKKwkJCisJCS8vIGNoYXJzIGxlc3MgdGhhbiAweDAwODAgKGV4Y2x1ZGluZyB0YWdzKSBnbyBzdHJhaWdodAorCQkvLyBpbiBzdHJlYW0KKwkJaWYoY3VyVUMgPCAweDAwODApIHsKKwkJICAgIGxvQnl0ZSA9IGN1clVDICYgMHhGRjsKKworCQkgICAgLy8gd2UgbmVlZCB0byBjaGVjayBhbmQgbWFrZSBzdXJlIHdlIGRvbid0CisJCSAgICAvLyBhY2NpZGVudGFsbHkgd3JpdGUgYSBzaW5nbGUgYnl0ZSBtb2RlIHRhZyB0bworCQkgICAgLy8gdGhlIHN0cmVhbSB1bmxlc3MgaXQncyBxdW90ZWQKKwkJICAgIGlmKHNTaW5nbGVUYWdUYWJsZVtsb0J5dGVdKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB0aGVyZSBpcyBlbm91Z2ggcm9vbSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3cml0ZSBib3RoIGJ5dGVzIGlmIG5vdCwgcmV3aW5kIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzb3VyY2Ugc3RyZWFtIGFuZCBicmVhayBvdXQKKwkJCWlmKCAoYnl0ZVBvcyArIDEpID49IGJ5dGVCdWZmZXJMaW1pdCkgCisJCQkgICAgeyAtLXVjUG9zOyBicmVhayBtYWluTG9vcDsgfQorCisJCQkvLyBzaW5jZSB3ZSBrbm93IHRoZSBieXRlIGlzIGxlc3MgdGhhbiAweDgwLCBTUVVPVEUwCisJCQkvLyB3aWxsIHVzZSBzdGF0aWMgd2luZG93IDAsIG9yIEFTQ0lJCisJCQlieXRlQnVmZmVyW2J5dGVQb3MrK10gPSAoYnl0ZSkgU1FVT1RFMDsKKwkJICAgIH0KKworCQkgICAgYnl0ZUJ1ZmZlcltieXRlUG9zKytdID0gKGJ5dGUpIGxvQnl0ZTsKKwkJfQorCisJCS8vIGlmIHRoZSBjaGFyIGJlbG9uZ3MgdG8gY3VycmVudCB3aW5kb3csIGNvbnZlcnQgaXQKKwkJLy8gdG8gYSBieXRlIGJ5IGFkZGluZyB0aGUgZ2VuZXJpYyBjb21wcmVzc2lvbiBvZmZzZXQKKwkJLy8gYW5kIHN1YnRyYWN0aW5nIHRoZSB3aW5kb3cncyBvZmZzZXQKKwkJZWxzZSBpZihpbkR5bmFtaWNXaW5kb3coY3VyVUMsIGZDdXJyZW50V2luZG93KSApIHsKKwkJICAgIGJ5dGVCdWZmZXJbYnl0ZVBvcysrXSA9IChieXRlKSAKKwkJCShjdXJVQyAtIGZPZmZzZXRzWyBmQ3VycmVudFdpbmRvdyBdIAorCQkJICsgQ09NUFJFU1NJT05PRkZTRVQpOworCQl9CisJCQorCQkvLyBpZiBjaGFyIGlzIG5vdCBpbiBjb21wcmVzc2libGUgcmFuZ2UsIGVpdGhlciBzd2l0Y2ggdG8gb3IKKwkJLy8gcXVvdGUgZnJvbSB1bmljb2RlCisJCWVsc2UgaWYoICEgaXNDb21wcmVzc2libGUoY3VyVUMpICkgeworCQkgICAgLy8gb25seSBjaGVjayBuZXh0IGNoYXJhY3RlciBpZiBpdCBpcyB2YWxpZAorCQkgICAgaWYobmV4dFVDICE9IElOVkFMSURDSEFSICYmIGlzQ29tcHJlc3NpYmxlKG5leHRVQykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHRoZXJlIGlzIGVub3VnaCByb29tIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdyaXRlIGFsbCB0aHJlZSBieXRlcyBpZiBub3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJld2luZCB0aGUgc291cmNlIHN0cmVhbSBhbmQgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0CisJCQlpZiggKGJ5dGVQb3MgKyAyKSA+PSBieXRlQnVmZmVyTGltaXQpIAorCQkJICAgIHsgLS11Y1BvczsgYnJlYWsgbWFpbkxvb3A7IH0KKworCQkJYnl0ZUJ1ZmZlcltieXRlUG9zKytdID0gKGJ5dGUpIFNRVU9URVU7CisJCQlieXRlQnVmZmVyW2J5dGVQb3MrK10gPSAoYnl0ZSkgKGN1clVDID4+PiA4KTsKKwkJCWJ5dGVCdWZmZXJbYnl0ZVBvcysrXSA9IChieXRlKSAoY3VyVUMgJiAweEZGKTsKKwkJICAgIH0KKwkJICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgdGhlcmUgaXMgZW5vdWdoIHJvb20gdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd3JpdGUgYWxsIGZvdXIgYnl0ZXMgaWYgbm90LCByZXdpbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHNvdXJjZSBzdHJlYW0gYW5kIGJyZWFrIG91dAorCQkJaWYoKGJ5dGVQb3MgKyAzKSA+PSBieXRlQnVmZmVyTGltaXQpIAorCQkJICAgIHsgLS11Y1BvczsgYnJlYWsgbWFpbkxvb3A7IH0KKworCQkJYnl0ZUJ1ZmZlcltieXRlUG9zKytdID0gKGJ5dGUpIFNDSEFOR0VVOworCisJCQloaUJ5dGUgPSBjdXJVQyA+Pj4gODsKKwkJCWxvQnl0ZSA9IGN1clVDICYgMHhGRjsKKworCQkJaWYoc1VuaWNvZGVUYWdUYWJsZVtoaUJ5dGVdKQorCQkJICAgIC8vIGFkZCBxdW90ZSBVbmljb2RlIHRhZworCQkJICAgIGJ5dGVCdWZmZXJbYnl0ZVBvcysrXSAgID0gKGJ5dGUpIFVRVU9URVU7ICAgIAorCisJCQlieXRlQnVmZmVyW2J5dGVQb3MrK10gPSAoYnl0ZSkgaGlCeXRlOworCQkJYnl0ZUJ1ZmZlcltieXRlUG9zKytdID0gKGJ5dGUpIGxvQnl0ZTsKKyAgICAgICAgICAgICAgICAKKwkJCWZNb2RlID0gVU5JQ09ERU1PREU7CisJCQlicmVhayBzaW5nbGVCeXRlTW9kZUxvb3A7CisJCSAgICB9CisJCX0KKworCQkvLyBpZiB0aGUgY2hhciBpcyBpbiBhIGN1cnJlbnRseSBkZWZpbmVkIGR5bmFtaWMKKwkJLy8gd2luZG93LCBmaWd1cmUgb3V0IHdoaWNoIG9uZSwgYW5kIGVpdGhlciBzd2l0Y2ggdG8KKwkJLy8gaXQgb3IgcXVvdGUgZnJvbSBpdAorCQllbHNlIGlmKCh3aGljaFdpbmRvdyA9IGZpbmREeW5hbWljV2luZG93KGN1clVDKSkgCisJCQkhPSBJTlZBTElEV0lORE9XICkgeworCQkgICAgLy8gbG9vayBhaGVhZAorCQkgICAgaWYoICh1Y1BvcyArIDEpIDwgY2hhckJ1ZmZlckxpbWl0ICkKKwkJCWZvcndhcmRVQyA9IGNoYXJCdWZmZXJbdWNQb3MgKyAxXTsKKwkJICAgIGVsc2UKKwkJCWZvcndhcmRVQyA9IElOVkFMSURDSEFSOworCQkgICAgCisJCSAgICAvLyBhbGwgdGhyZWUgY2hhcnMgaW4gc2FtZSB3aW5kb3csIHN3aXRjaCB0byB0aGF0CisJCSAgICAvLyB3aW5kb3cgaW5EeW5hbWljV2luZG93IHdpbGwgcmV0dXJuIGZhbHNlIGZvcgorCQkgICAgLy8gSU5WQUxJRENIQVIKKwkJICAgIGlmKGluRHluYW1pY1dpbmRvdyhuZXh0VUMsIHdoaWNoV2luZG93KSAKKwkJICAgICAgICYmIGluRHluYW1pY1dpbmRvdyhmb3J3YXJkVUMsIHdoaWNoV2luZG93KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgdGhlcmUgaXMgZW5vdWdoIHJvb20gdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd3JpdGUgYm90aCBieXRlcyBpZiBub3QsIHJld2luZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc291cmNlIHN0cmVhbSBhbmQgYnJlYWsgb3V0CisJCQlpZiggKGJ5dGVQb3MgKyAxKSA+PSBieXRlQnVmZmVyTGltaXQpIAorCQkJICAgIHsgLS11Y1BvczsgYnJlYWsgbWFpbkxvb3A7IH0KKworCQkJYnl0ZUJ1ZmZlcltieXRlUG9zKytdID0gKGJ5dGUpKFNDSEFOR0UwICsgd2hpY2hXaW5kb3cpOworCQkJYnl0ZUJ1ZmZlcltieXRlUG9zKytdID0gKGJ5dGUpIAorCQkJICAgIChjdXJVQyAtIGZPZmZzZXRzW3doaWNoV2luZG93XSAKKwkJCSAgICAgKyBDT01QUkVTU0lPTk9GRlNFVCk7CisJCQlmVGltZVN0YW1wcyBbIHdoaWNoV2luZG93IF0gPSArK2ZUaW1lU3RhbXA7CisJCQlmQ3VycmVudFdpbmRvdyA9IHdoaWNoV2luZG93OworCQkgICAgfQorCQkgICAgCisJCSAgICAvLyBlaXRoZXIgb25seSBuZXh0IGNoYXIgb3IgbmVpdGhlciBpbiBzYW1lCisJCSAgICAvLyB3aW5kb3csIHNvIHF1b3RlCisJCSAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHRoZXJlIGlzIGVub3VnaCByb29tIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdyaXRlIGJvdGggYnl0ZXMgaWYgbm90LCByZXdpbmQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNvdXJjZSBzdHJlYW0gYW5kIGJyZWFrIG91dAorCQkJaWYoKGJ5dGVQb3MgKyAxKSA+PSBieXRlQnVmZmVyTGltaXQpIAorCQkJICAgIHsgLS11Y1BvczsgYnJlYWsgbWFpbkxvb3A7IH0KKworCQkJYnl0ZUJ1ZmZlcltieXRlUG9zKytdID0gKGJ5dGUpIChTUVVPVEUwICsgd2hpY2hXaW5kb3cpOworCQkJYnl0ZUJ1ZmZlcltieXRlUG9zKytdID0gKGJ5dGUpIAorCQkJICAgIChjdXJVQyAtIGZPZmZzZXRzW3doaWNoV2luZG93XSAKKwkJCSAgICAgKyBDT01QUkVTU0lPTk9GRlNFVCk7CisJCSAgICB9CisJCX0KKworCQkvLyBpZiBhIHN0YXRpYyB3aW5kb3cgaXMgZGVmaW5lZCwgYW5kIHRoZSBmb2xsb3dpbmcKKwkJLy8gY2hhcmFjdGVyIGlzIG5vdCBpbiB0aGF0IHN0YXRpYyB3aW5kb3csIHF1b3RlIGZyb20KKwkJLy8gdGhlIHN0YXRpYyB3aW5kb3cgTm90ZTogdG8gcXVvdGUgZnJvbSBhIHN0YXRpYworCQkvLyB3aW5kb3csIGRvbid0IGFkZCAweDgwCisJCWVsc2UgaWYoKHdoaWNoV2luZG93ID0gZmluZFN0YXRpY1dpbmRvdyhjdXJVQykpIAorCQkJIT0gSU5WQUxJRFdJTkRPVyAKKwkJCSYmICEgaW5TdGF0aWNXaW5kb3cobmV4dFVDLCB3aGljaFdpbmRvdykgKSB7CisJCSAgICAvLyBtYWtlIHN1cmUgdGhlcmUgaXMgZW5vdWdoIHJvb20gdG8gd3JpdGUgYm90aAorCQkgICAgLy8gYnl0ZXMgaWYgbm90LCByZXdpbmQgdGhlIHNvdXJjZSBzdHJlYW0gYW5kCisJCSAgICAvLyBicmVhayBvdXQKKwkJICAgIGlmKChieXRlUG9zICsgMSkgPj0gYnl0ZUJ1ZmZlckxpbWl0KSAKKwkJCXsgLS11Y1BvczsgYnJlYWsgbWFpbkxvb3A7IH0KKworCQkgICAgYnl0ZUJ1ZmZlcltieXRlUG9zKytdID0gKGJ5dGUpIChTUVVPVEUwICsgd2hpY2hXaW5kb3cpOworCQkgICAgYnl0ZUJ1ZmZlcltieXRlUG9zKytdID0gKGJ5dGUpIAorCQkJKGN1clVDIC0gc09mZnNldHNbd2hpY2hXaW5kb3ddKTsKKwkJfQorCQkKKwkJLy8gaWYgYSB3aW5kb3cgaXMgbm90IGRlZmluZWQsIGRlY2lkZSBpZiB3ZSB3YW50IHRvCisJCS8vIGRlZmluZSBhIG5ldyBvbmUgb3Igc3dpdGNoIHRvIHVuaWNvZGUgbW9kZQorCQllbHNlIHsKKwkJICAgIC8vIGRldGVybWluZSBpbmRleCBmb3IgY3VycmVudCBjaGFyIChjaGFyIGlzIGNvbXByZXNzaWJsZSkKKwkJICAgIGN1ckluZGV4ID0gbWFrZUluZGV4KGN1clVDKTsKKwkJICAgIGZJbmRleENvdW50W2N1ckluZGV4XSsrOworCisJCSAgICAvLyBsb29rIGFoZWFkCisJCSAgICBpZigodWNQb3MgKyAxKSA8IGNoYXJCdWZmZXJMaW1pdCkKKwkJCWZvcndhcmRVQyA9IGNoYXJCdWZmZXJbdWNQb3MgKyAxXTsKKwkJICAgIGVsc2UKKwkJCWZvcndhcmRVQyA9IElOVkFMSURDSEFSOworCisJCSAgICAvLyBpZiB3ZSBoYXZlIGVuY291bnRlcmVkIHRoaXMgaW5kZXggYXQgbGVhc3Qgb25jZQorCQkgICAgLy8gYmVmb3JlLCBkZWZpbmUgYSBuZXcgd2luZG93CisJCSAgICAvLyBPUgorCQkgICAgLy8gdGhyZWUgY2hhcnMgaW4gYSByb3cgd2l0aCBzYW1lIGluZGV4LCBkZWZpbmUgYQorCQkgICAgLy8gbmV3IHdpbmRvdyAobWFrZUluZGV4IHdpbGwgcmV0dXJuIFJFU0VSVkVESU5ERVgKKwkJICAgIC8vIGZvciBJTlZBTElEQ0hBUikKKwkJICAgIGlmKChmSW5kZXhDb3VudFtjdXJJbmRleF0gPiAxKSB8fAorCQkgICAgICAgKGN1ckluZGV4ID09IG1ha2VJbmRleChuZXh0VUMpIAorCQkJJiYgY3VySW5kZXggPT0gbWFrZUluZGV4KGZvcndhcmRVQykpKSB7CisJCQkvLyBtYWtlIHN1cmUgdGhlcmUgaXMgZW5vdWdoIHJvb20gdG8gd3JpdGUgYWxsCisJCQkvLyB0aHJlZSBieXRlcyBpZiBub3QsIHJld2luZCB0aGUgc291cmNlCisJCQkvLyBzdHJlYW0gYW5kIGJyZWFrIG91dAorCQkJaWYoIChieXRlUG9zICsgMikgPj0gYnl0ZUJ1ZmZlckxpbWl0KSAKKwkJCSAgICB7IC0tdWNQb3M7IGJyZWFrIG1haW5Mb29wOyB9CisKKwkJCS8vIGdldCBsZWFzdCByZWNlbnRseSBkZWZpbmVkIHdpbmRvdworCQkJd2hpY2hXaW5kb3cgPSBnZXRMUkRlZmluZWRXaW5kb3coKTsKKworCQkJYnl0ZUJ1ZmZlcltieXRlUG9zKytdID0gKGJ5dGUpKFNERUZJTkUwICsgd2hpY2hXaW5kb3cpOworCQkJYnl0ZUJ1ZmZlcltieXRlUG9zKytdID0gKGJ5dGUpIGN1ckluZGV4OworCQkJYnl0ZUJ1ZmZlcltieXRlUG9zKytdID0gKGJ5dGUpIAorCQkJICAgIChjdXJVQyAtIHNPZmZzZXRUYWJsZVtjdXJJbmRleF0gCisJCQkgICAgICsgQ09NUFJFU1NJT05PRkZTRVQpOworCisJCQlmT2Zmc2V0c1t3aGljaFdpbmRvd10gPSBzT2Zmc2V0VGFibGVbY3VySW5kZXhdOworCQkJZkN1cnJlbnRXaW5kb3cgPSB3aGljaFdpbmRvdzsKKwkJCWZUaW1lU3RhbXBzIFt3aGljaFdpbmRvd10gPSArK2ZUaW1lU3RhbXA7CisJCSAgICB9CisKKwkJICAgIC8vIG9ubHkgdHdvIGNoYXJzIGluIGEgcm93IHdpdGggc2FtZSBpbmRleCwgc28KKwkJICAgIC8vIHN3aXRjaCB0byB1bmljb2RlIG1vZGUgKG1ha2VJbmRleCB3aWxsIHJldHVybgorCQkgICAgLy8gUkVTRVJWRURJTkRFWCBmb3IgSU5WQUxJRENIQVIpCisJCSAgICAvLyBPUgorCQkgICAgLy8gdGhyZWUgY2hhcnMgaGF2ZSBkaWZmZXJlbnQgaW5kaWNlcywgc28gc3dpdGNoCisJCSAgICAvLyB0byB1bmljb2RlIG1vZGUKKwkJICAgIGVsc2UgeworCQkJLy8gbWFrZSBzdXJlIHRoZXJlIGlzIGVub3VnaCByb29tIHRvIHdyaXRlIGFsbAorCQkJLy8gZm91ciBieXRlcyBpZiBub3QsIHJld2luZCB0aGUgc291cmNlIHN0cmVhbQorCQkJLy8gYW5kIGJyZWFrIG91dAorCQkJaWYoKGJ5dGVQb3MgKyAzKSA+PSBieXRlQnVmZmVyTGltaXQpIAorCQkJICAgIHsgLS11Y1BvczsgYnJlYWsgbWFpbkxvb3A7IH0KKworCQkJYnl0ZUJ1ZmZlcltieXRlUG9zKytdID0gKGJ5dGUpIFNDSEFOR0VVOworCisJCQloaUJ5dGUgPSBjdXJVQyA+Pj4gODsKKwkJCWxvQnl0ZSA9IGN1clVDICYgMHhGRjsKKworCQkJaWYoc1VuaWNvZGVUYWdUYWJsZVtoaUJ5dGVdKQorCQkJICAgIC8vIGFkZCBxdW90ZSBVbmljb2RlIHRhZworCQkJICAgIGJ5dGVCdWZmZXJbYnl0ZVBvcysrXSA9IChieXRlKSBVUVVPVEVVOyAKKworCQkJYnl0ZUJ1ZmZlcltieXRlUG9zKytdID0gKGJ5dGUpIGhpQnl0ZTsKKwkJCWJ5dGVCdWZmZXJbYnl0ZVBvcysrXSA9IChieXRlKSBsb0J5dGU7CisKKwkJCWZNb2RlID0gVU5JQ09ERU1PREU7CisJCQlicmVhayBzaW5nbGVCeXRlTW9kZUxvb3A7CisJCSAgICB9CisJCX0KKwkgICAgfQorCSAgICBicmVhazsKKworCSAgICBjYXNlIFVOSUNPREVNT0RFOgorCQkvLyBtYWluIHVuaWNvZGUgbW9kZSBjb21wcmVzc2lvbiBsb29wCisJICAgIHVuaWNvZGVNb2RlTG9vcDoKKwkgICAgd2hpbGUodWNQb3MgPCBjaGFyQnVmZmVyTGltaXQgJiYgYnl0ZVBvcyA8IGJ5dGVCdWZmZXJMaW1pdCkgeworCQkvLyBnZXQgY3VycmVudCBjaGFyCisJCWN1clVDID0gY2hhckJ1ZmZlclt1Y1BvcysrXTsgICAgCisKKwkJLy8gZ2V0IG5leHQgY2hhcgorCQlpZiggdWNQb3MgPCBjaGFyQnVmZmVyTGltaXQgKQorCQkgICAgbmV4dFVDID0gY2hhckJ1ZmZlclt1Y1Bvc107CisJCWVsc2UKKwkJICAgIG5leHRVQyA9IElOVkFMSURDSEFSOworCisJCS8vIGlmIHdlIGhhdmUgdHdvIHVuY29tcHJlc3NpYmxlIGNoYXJzIGluIGEgcm93LAorCQkvLyBwdXQgdGhlIGN1cnJlbnQgY2hhcidzIGJ5dGVzIGluIHRoZSBzdHJlYW0KKwkJaWYoICEgaXNDb21wcmVzc2libGUoY3VyVUMpIAorCQkgICAgfHwgKG5leHRVQyAhPSBJTlZBTElEQ0hBUiAmJiAhIGlzQ29tcHJlc3NpYmxlKG5leHRVQykpKSB7CisJCSAgICAvLyBtYWtlIHN1cmUgdGhlcmUgaXMgZW5vdWdoIHJvb20gdG8gd3JpdGUgYWxsIHRocmVlIGJ5dGVzCisJCSAgICAvLyBpZiBub3QsIHJld2luZCB0aGUgc291cmNlIHN0cmVhbSBhbmQgYnJlYWsgb3V0CisJCSAgICBpZiggKGJ5dGVQb3MgKyAyKSA+PSBieXRlQnVmZmVyTGltaXQpIAorCQkJeyAtLXVjUG9zOyBicmVhayBtYWluTG9vcDsgfQorCisJCSAgICBoaUJ5dGUgPSBjdXJVQyA+Pj4gODsKKwkJICAgIGxvQnl0ZSA9IGN1clVDICYgMHhGRjsKKworCQkgICAgaWYoc1VuaWNvZGVUYWdUYWJsZVsgaGlCeXRlIF0pCisJCQkvLyBhZGQgcXVvdGUgVW5pY29kZSB0YWcKKwkJCWJ5dGVCdWZmZXJbYnl0ZVBvcysrXSA9IChieXRlKSBVUVVPVEVVOworICAgICAgICAgICAgICAgIAorCQkgICAgYnl0ZUJ1ZmZlcltieXRlUG9zKytdID0gKGJ5dGUpIGhpQnl0ZTsKKwkJICAgIGJ5dGVCdWZmZXJbYnl0ZVBvcysrXSA9IChieXRlKSBsb0J5dGU7CisgICAgICAgIH0KKwkJCisJCS8vIGJ5dGVzIGxlc3MgdGhhbiAweDgwIGNhbiBnbyBzdHJhaWdodCBpbiB0aGUgc3RyZWFtLAorCQkvLyBidXQgaW4gc2luZ2xlLWJ5dGUgbW9kZQorCQllbHNlIGlmKGN1clVDIDwgMHgwMDgwKSB7CisJCSAgICBsb0J5dGUgPSBjdXJVQyAmIDB4RkY7CisKKwkJICAgIC8vIGlmIHR3byBjaGFycyBpbiBhIHJvdyBiZWxvdyAweDgwIGFuZCB0aGUKKwkJICAgIC8vIGN1cnJlbnQgY2hhciBpcyBub3QgYSBzaW5nbGUtYnl0ZSBtb2RlIHRhZywKKwkJICAgIC8vIHN3aXRjaCB0byBzaW5nbGUtYnl0ZSBtb2RlCisJCSAgICBpZihuZXh0VUMgIT0gSU5WQUxJRENIQVIgCisJCSAgICAgICAmJiBuZXh0VUMgPCAweDAwODAgJiYgISBzU2luZ2xlVGFnVGFibGVbIGxvQnl0ZSBdICkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgdGhlcmUgaXMgZW5vdWdoIHJvb20gdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd3JpdGUgYm90aCBieXRlcyBpZiBub3QsIHJld2luZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc291cmNlIHN0cmVhbSBhbmQgYnJlYWsgb3V0CisJCQlpZiggKGJ5dGVQb3MgKyAxKSA+PSBieXRlQnVmZmVyTGltaXQpIAorCQkJICAgIHsgLS11Y1BvczsgYnJlYWsgbWFpbkxvb3A7IH0KKworCQkJLy8gdXNlIHRoZSBsYXN0LWFjdGl2ZSB3aW5kb3cKKwkJCXdoaWNoV2luZG93ID0gZkN1cnJlbnRXaW5kb3c7CisJCQlieXRlQnVmZmVyW2J5dGVQb3MrK10gPSAoYnl0ZSkoVUNIQU5HRTAgKyB3aGljaFdpbmRvdyk7CisJCQlieXRlQnVmZmVyW2J5dGVQb3MrK10gPSAoYnl0ZSkgbG9CeXRlOworCisJCQkvL2ZDdXJyZW50V2luZG93ID0gMDsKKwkJCWZUaW1lU3RhbXBzIFt3aGljaFdpbmRvd10gPSArK2ZUaW1lU3RhbXA7CisJCQlmTW9kZSA9IFNJTkdMRUJZVEVNT0RFOworCQkJYnJlYWsgdW5pY29kZU1vZGVMb29wOworCQkgICAgfQorCisJCSAgICAvLyBvdGhlcndpc2UsIGp1c3Qgd3JpdGUgdGhlIGJ5dGVzIHRvIHRoZSBzdHJlYW0KKwkJICAgIC8vICh0aGlzIHdpbGwgY292ZXIgdGhlIGNhc2Ugb2Ygb25seSAxIGNoYXIgbGVzcyB0aGFuIDB4ODAKKwkJICAgIC8vIGFuZCBzaW5nbGUtYnl0ZSBtb2RlIHRhZ3MpCisJCSAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHRoZXJlIGlzIGVub3VnaCByb29tIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdyaXRlIGJvdGggYnl0ZXMgaWYgbm90LCByZXdpbmQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNvdXJjZSBzdHJlYW0gYW5kIGJyZWFrIG91dAorCQkJaWYoKGJ5dGVQb3MgKyAxKSA+PSBieXRlQnVmZmVyTGltaXQpIAorCQkJICAgIHsgLS11Y1BvczsgYnJlYWsgbWFpbkxvb3A7IH0KKworCQkJLy8gc2luY2UgdGhlIGNoYXJhY3RlciBpcyBsZXNzIHRoYW4gMHg4MCwgdGhlCisJCQkvLyBoaWdoIGJ5dGUgaXMgYWx3YXlzIDB4MDAgLSBubyBuZWVkIGZvcgorCQkJLy8gKGN1clVDID4+PiA4KQorCQkJYnl0ZUJ1ZmZlcltieXRlUG9zKytdID0gKGJ5dGUpIDB4MDA7CisJCQlieXRlQnVmZmVyW2J5dGVQb3MrK10gPSAoYnl0ZSkgbG9CeXRlOworCQkgICAgfQorCQl9CisKKwkJLy8gZmlndXJlIG91dCBpZiB0aGUgY3VycmVudCBjaGFyIGlzIGluIGEgZGVmaW5lZCB3aW5kb3cKKwkJZWxzZSBpZigod2hpY2hXaW5kb3cgPSBmaW5kRHluYW1pY1dpbmRvdyhjdXJVQykpIAorCQkJIT0gSU5WQUxJRFdJTkRPVyApIHsKKwkJICAgIC8vIGlmIHR3byBjaGFycyBpbiBhIHJvdyBpbiB0aGUgc2FtZSB3aW5kb3csCisJCSAgICAvLyBzd2l0Y2ggdG8gdGhhdCB3aW5kb3cgYW5kIGdvIHRvIHNpbmdsZS1ieXRlIG1vZGUKKwkJICAgIC8vIGluRHluYW1pY1dpbmRvdyB3aWxsIHJldHVybiBmYWxzZSBmb3IgSU5WQUxJRENIQVIKKwkJICAgIGlmKGluRHluYW1pY1dpbmRvdyhuZXh0VUMsIHdoaWNoV2luZG93KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgdGhlcmUgaXMgZW5vdWdoIHJvb20gdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd3JpdGUgYm90aCBieXRlcyBpZiBub3QsIHJld2luZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc291cmNlIHN0cmVhbSBhbmQgYnJlYWsgb3V0CisJCQlpZigoYnl0ZVBvcyArIDEpID49IGJ5dGVCdWZmZXJMaW1pdCkgCisJCQkgICAgeyAtLXVjUG9zOyBicmVhayBtYWluTG9vcDsgfQorCisJCQlieXRlQnVmZmVyW2J5dGVQb3MrK10gPSAoYnl0ZSkoVUNIQU5HRTAgKyB3aGljaFdpbmRvdyk7CisJCQlieXRlQnVmZmVyW2J5dGVQb3MrK10gPSAoYnl0ZSkgCisJCQkgICAgKGN1clVDIC0gZk9mZnNldHNbd2hpY2hXaW5kb3ddIAorCQkJICAgICArIENPTVBSRVNTSU9OT0ZGU0VUKTsKKworCQkJZlRpbWVTdGFtcHMgWyB3aGljaFdpbmRvdyBdID0gKytmVGltZVN0YW1wOworCQkJZkN1cnJlbnRXaW5kb3cgPSB3aGljaFdpbmRvdzsKKwkJCWZNb2RlID0gU0lOR0xFQllURU1PREU7CisJCQlicmVhayB1bmljb2RlTW9kZUxvb3A7CisJCSAgICB9CisKKwkJICAgIC8vIG90aGVyd2lzZSwganVzdCBxdW90ZSB0aGUgdW5pY29kZSBmb3IgdGhlIGNoYXIKKwkJICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgdGhlcmUgaXMgZW5vdWdoIHJvb20gdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd3JpdGUgYWxsIHRocmVlIGJ5dGVzIGlmIG5vdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmV3aW5kIHRoZSBzb3VyY2Ugc3RyZWFtIGFuZCBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXQKKwkJCWlmKChieXRlUG9zICsgMikgPj0gYnl0ZUJ1ZmZlckxpbWl0KSAKKwkJCSAgICB7IC0tdWNQb3M7IGJyZWFrIG1haW5Mb29wOyB9CisKKwkJCWhpQnl0ZSA9IGN1clVDID4+PiA4OworCQkJbG9CeXRlID0gY3VyVUMgJiAweEZGOworCisJCQlpZihzVW5pY29kZVRhZ1RhYmxlWyBoaUJ5dGUgXSkKKwkJCSAgICAvLyBhZGQgcXVvdGUgVW5pY29kZSB0YWcKKwkJCSAgICBieXRlQnVmZmVyW2J5dGVQb3MrK10gPSAoYnl0ZSkgVVFVT1RFVTsKKworCQkJYnl0ZUJ1ZmZlcltieXRlUG9zKytdID0gKGJ5dGUpIGhpQnl0ZTsKKwkJCWJ5dGVCdWZmZXJbYnl0ZVBvcysrXSA9IChieXRlKSBsb0J5dGU7CisJCSAgICB9CisJCX0KKwkJCisJCS8vIGNoYXIgaXMgbm90IGluIGEgZGVmaW5lZCB3aW5kb3cKKwkJZWxzZSB7CisJCSAgICAvLyBkZXRlcm1pbmUgaW5kZXggZm9yIGN1cnJlbnQgY2hhciAoY2hhciBpcyBjb21wcmVzc2libGUpCisJCSAgICBjdXJJbmRleCA9IG1ha2VJbmRleChjdXJVQyk7CisJCSAgICBmSW5kZXhDb3VudFtjdXJJbmRleF0rKzsKKwkJICAgIAorCQkgICAgLy8gbG9vayBhaGVhZAorCQkgICAgaWYoICh1Y1BvcyArIDEpIDwgY2hhckJ1ZmZlckxpbWl0ICkKKwkJCWZvcndhcmRVQyA9IGNoYXJCdWZmZXJbdWNQb3MgKyAxXTsKKwkJICAgIGVsc2UKKwkJCWZvcndhcmRVQyA9IElOVkFMSURDSEFSOworCQkgICAgCisJCSAgICAvLyBpZiB3ZSBoYXZlIGVuY291bnRlcmVkIHRoaXMgaW5kZXggYXQgbGVhc3Qgb25jZQorCQkgICAgLy8gYmVmb3JlLCBkZWZpbmUgYSBuZXcgd2luZG93IGZvciBpdCB0aGF0IGhhc24ndAorCQkgICAgLy8gcHJldmlvdXNseSBiZWVuIHJlZGVmaW5lZAorCQkgICAgLy8gT1IKKwkJICAgIC8vIGlmIHRocmVlIGNoYXJzIGluIGEgcm93IHdpdGggdGhlIHNhbWUgaW5kZXgsCisJCSAgICAvLyBkZWZpbmUgYSBuZXcgd2luZG93IChtYWtlSW5kZXggd2lsbCByZXR1cm4KKwkJICAgIC8vIFJFU0VSVkVESU5ERVggZm9yIElOVkFMSURDSEFSKQorCQkgICAgaWYoKGZJbmRleENvdW50W2N1ckluZGV4XSA+IDEpIHx8CisJCSAgICAgICAoY3VySW5kZXggPT0gbWFrZUluZGV4KG5leHRVQykgCisJCQkmJiBjdXJJbmRleCA9PSBtYWtlSW5kZXgoZm9yd2FyZFVDKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHRoZXJlIGlzIGVub3VnaCByb29tIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdyaXRlIGFsbCB0aHJlZSBieXRlcyBpZiBub3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJld2luZCB0aGUgc291cmNlIHN0cmVhbSBhbmQgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0CisJCQlpZigoYnl0ZVBvcyArIDIpID49IGJ5dGVCdWZmZXJMaW1pdCkgCisJCQkgICAgeyAtLXVjUG9zOyBicmVhayBtYWluTG9vcDsgfQorCisJCQkvLyBnZXQgbGVhc3QgcmVjZW50bHkgZGVmaW5lZCB3aW5kb3cKKwkJCXdoaWNoV2luZG93ID0gZ2V0TFJEZWZpbmVkV2luZG93KCk7CisKKwkJCWJ5dGVCdWZmZXJbYnl0ZVBvcysrXSA9IChieXRlKShVREVGSU5FMCArIHdoaWNoV2luZG93KTsKKwkJCWJ5dGVCdWZmZXJbYnl0ZVBvcysrXSA9IChieXRlKSBjdXJJbmRleDsKKwkJCWJ5dGVCdWZmZXJbYnl0ZVBvcysrXSA9IChieXRlKSAKKwkJCSAgICAoY3VyVUMgLSBzT2Zmc2V0VGFibGVbY3VySW5kZXhdIAorCQkJICAgICArIENPTVBSRVNTSU9OT0ZGU0VUKTsKKwkJCQorCQkJZk9mZnNldHNbd2hpY2hXaW5kb3ddID0gc09mZnNldFRhYmxlW2N1ckluZGV4XTsKKwkJCWZDdXJyZW50V2luZG93ID0gd2hpY2hXaW5kb3c7CisJCQlmVGltZVN0YW1wcyBbd2hpY2hXaW5kb3ddID0gKytmVGltZVN0YW1wOworCQkJZk1vZGUgPSBTSU5HTEVCWVRFTU9ERTsKKwkJCWJyZWFrIHVuaWNvZGVNb2RlTG9vcDsKKwkJICAgIH0KKwkJICAgIAorCQkgICAgLy8gb3RoZXJ3aXNlIGp1c3QgcXVvdGUgdGhlIHVuaWNvZGUsIGFuZCBzYXZlIG91cgorCQkgICAgLy8gd2luZG93cyBmb3IgbG9uZ2VyIHJ1bnMKKwkJICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgdGhlcmUgaXMgZW5vdWdoIHJvb20gdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd3JpdGUgYWxsIHRocmVlIGJ5dGVzIGlmIG5vdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmV3aW5kIHRoZSBzb3VyY2Ugc3RyZWFtIGFuZCBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXQKKwkJCWlmKChieXRlUG9zICsgMikgPj0gYnl0ZUJ1ZmZlckxpbWl0KSAKKwkJCSAgICB7IC0tdWNQb3M7IGJyZWFrIG1haW5Mb29wOyB9CisKKwkJCWhpQnl0ZSA9IGN1clVDID4+PiA4OworCQkJbG9CeXRlID0gY3VyVUMgJiAweEZGOworCisJCQlpZihzVW5pY29kZVRhZ1RhYmxlWyBoaUJ5dGUgXSkKKwkJCSAgICAvLyBhZGQgcXVvdGUgVW5pY29kZSB0YWcKKwkJCSAgICBieXRlQnVmZmVyW2J5dGVQb3MrK10gPSAoYnl0ZSkgVVFVT1RFVTsgIAorCQkJCisJCQlieXRlQnVmZmVyW2J5dGVQb3MrK10gPSAoYnl0ZSkgaGlCeXRlOworCQkJYnl0ZUJ1ZmZlcltieXRlUG9zKytdID0gKGJ5dGUpIGxvQnl0ZTsKKwkJICAgIH0KKwkJfQorCSAgICB9CisJICAgIH0gIC8vIGVuZCBzd2l0Y2gKKwl9CisJCisgICAgICAgIC8vIGZpbGwgaW4gb3V0cHV0IHBhcmFtZXRlcgorCWlmKGNoYXJzUmVhZCAhPSBudWxsKQorCSAgICBjaGFyc1JlYWQgWzBdID0gKHVjUG9zIC0gY2hhckJ1ZmZlclN0YXJ0KTsKKyAgICAgICAgCisgICAgICAgIC8vIHJldHVybiAjIG9mIGJ5dGVzIHdyaXR0ZW4KKyAgICAgICAgcmV0dXJuIChieXRlUG9zIC0gYnl0ZUJ1ZmZlclN0YXJ0KTsKKyAgICB9CisKKyAgICAvKiogCisgICAgICogUmVzZXQgdGhlIGNvbXByZXNzb3IgdG8gaXRzIGluaXRpYWwgc3RhdGUuCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCByZXNldCgpCisgICAgeworCWludCBpOworCisgICAgICAgIC8vIHJlc2V0IGR5bmFtaWMgd2luZG93cworICAgICAgICBmT2Zmc2V0c1swXSA9IDB4MDA4MDsgICAgLy8gTGF0aW4tMQorICAgICAgICBmT2Zmc2V0c1sxXSA9IDB4MDBDMDsgICAgLy8gTGF0aW4tMSBTdXBwbGVtZW50ICsgTGF0aW4gRXh0ZW5kZWQtQQorICAgICAgICBmT2Zmc2V0c1syXSA9IDB4MDQwMDsgICAgLy8gQ3lyaWxsaWMKKyAgICAgICAgZk9mZnNldHNbM10gPSAweDA2MDA7ICAgIC8vIEFyYWJpYworICAgICAgICBmT2Zmc2V0c1s0XSA9IDB4MDkwMDsgICAgLy8gRGV2YW5hZ2FyaQorICAgICAgICBmT2Zmc2V0c1s1XSA9IDB4MzA0MDsgICAgLy8gSGlyYWdhbmEKKyAgICAgICAgZk9mZnNldHNbNl0gPSAweDMwQTA7ICAgIC8vIEthdGFrYW5hCisgICAgICAgIGZPZmZzZXRzWzddID0gMHhGRjAwOyAgICAvLyBGdWxsd2lkdGggQVNDSUkKKworCisgICAgICAgIC8vIHJlc2V0IHRpbWUgc3RhbXBzCisgICAgICAgIGZvcihpID0gMDsgaSA8IE5VTVdJTkRPV1M7IGkrKykgeworICAgICAgICAgICAgZlRpbWVTdGFtcHNbaV0gICAgICAgICAgPSAwOworICAgICAgICB9CisKKyAgICAgICAgLy8gcmVzZXQgY291bnQgb2Ygc2VlbiBpbmRpY2VzCisgICAgICAgIGZvcihpID0gMDsgaSA8PSBNQVhJTkRFWDsgaSsrICkgeworICAgICAgICAgICAgZkluZGV4Q291bnRbaV0gPSAwOworICAgICAgICB9CisKKyAgICAgICAgZlRpbWVTdGFtcCAgICAgID0gMDsgICAgICAgICAgICAgICAgLy8gUmVzZXQgY3VycmVudCB0aW1lIHN0YW1wCisgICAgICAgIGZDdXJyZW50V2luZG93ICA9IDA7ICAgICAgICAgICAgICAgIC8vIE1ha2UgY3VycmVudCB3aW5kb3cgTGF0aW4tMQorICAgICAgICBmTW9kZSAgICAgICAgICAgPSBTSU5HTEVCWVRFTU9ERTsgICAvLyBBbHdheXMgc3RhcnQgaW4gc2luZ2xlLWJ5dGUgbW9kZQorICAgIH0KKworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBEZXRlcm1pbmUgdGhlIGluZGV4IGZvciBhIGNoYXJhY3RlcgorICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgIC8qKgorICAgICAqIENyZWF0ZSB0aGUgaW5kZXggdmFsdWUgZm9yIGEgY2hhcmFjdGVyLgorICAgICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgZnVuY3Rpb24sIHJlZmVyIHRvIHRhYmxlIFgtMworICAgICAqIDxBIEhSRUY9Imh0dHA6Ly93d3cudW5pY29kZS5vcmcvdW5pY29kZS9yZXBvcnRzL3RyNiI+VVRSNjwvQT4uCisgICAgICogQHBhcmFtIGMgVGhlIGNoYXJhY3RlciBpbiBxdWVzdGlvbi4KKyAgICAgKiBAcmV0dXJuIEFuIGluZGV4IGZvciBjCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgaW50IG1ha2VJbmRleChpbnQgYykKKyAgICB7CisgICAgICAgIC8vIGNoZWNrIHRoZSBwcmVkZWZpbmVkIGluZGljZXMKKyAgICAgICAgaWYoYyA+PSAweDAwQzAgJiYgYyA8IDB4MDE0MCkKKyAgICAgICAgICAgIHJldHVybiBMQVRJTklOREVYOworICAgICAgICBlbHNlIGlmKGMgPj0gMHgwMjUwICYmIGMgPCAweDAyRDApCisgICAgICAgICAgICByZXR1cm4gSVBBRVhURU5TSU9OSU5ERVg7CisgICAgICAgIGVsc2UgaWYoYyA+PSAweDAzNzAgJiYgYyA8IDB4MDNGMCkKKyAgICAgICAgICAgIHJldHVybiBHUkVFS0lOREVYOworICAgICAgICBlbHNlIGlmKGMgPj0gMHgwNTMwICYmIGMgPCAweDA1OTApCisgICAgICAgICAgICByZXR1cm4gQVJNRU5JQU5JTkRFWDsKKyAgICAgICAgZWxzZSBpZihjID49IDB4MzA0MCAmJiBjIDwgMHgzMEEwKQorICAgICAgICAgICAgcmV0dXJuIEhJUkFHQU5BSU5ERVg7CisgICAgICAgIGVsc2UgaWYoYyA+PSAweDMwQTAgJiYgYyA8IDB4MzEyMCkKKyAgICAgICAgICAgIHJldHVybiBLQVRBS0FOQUlOREVYOworICAgICAgICBlbHNlIGlmKGMgPj0gMHhGRjYwICYmIGMgPCAweEZGOUYpCisgICAgICAgICAgICByZXR1cm4gSEFMRldJRFRIS0FUQUtBTkFJTkRFWDsKKworICAgICAgICAvLyBjYWxjdWxhdGUgaW5kZXgKKyAgICAgICAgZWxzZSBpZihjID49IDB4MDA4MCAmJiBjIDwgMHgzNDAwKQorICAgICAgICAgICAgcmV0dXJuIChjIC8gMHg4MCkgJiAweEZGOworICAgICAgICBlbHNlIGlmKGMgPj0gMHhFMDAwICYmIGMgPD0gMHhGRkZGKQorICAgICAgICAgICAgcmV0dXJuICgoYyAtIDB4QUMwMCkgLyAweDgwKSAmIDB4RkY7CisgICAgICAgICAgICAKKyAgICAgICAgLy8gc2hvdWxkIG5ldmVyIGhhcHBlbgorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBSRVNFUlZFRElOREVYOworICAgICAgICB9CisgICAgfQorCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIENoZWNrIGlmIGEgZ2l2ZW4gY2hhcmFjdGVyIGZpdHMgaW4gYSB3aW5kb3cKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAvKioKKyAgICAqIERldGVybWluZSBpZiBhIGNoYXJhY3RlciBpcyBpbiBhIGR5bmFtaWMgd2luZG93LgorICAgICogQHBhcmFtIGMgVGhlIGNoYXJhY3RlciB0byB0ZXN0CisgICAgKiBAcGFyYW0gd2hpY2hXaW5kb3cgVGhlIGR5bmFtaWMgd2luZG93IHRoZSB0ZXN0CisgICAgKiBAcmV0dXJuIHRydWUgaWYgPFRUPmM8L1RUPiB3aWxsIGZpdCBpbiA8VFQ+d2hpY2hXaW5kb3c8L1RUPiwgCisgICAgKiBmYWxzZSBvdGhlcndpc2UuCisgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gaW5EeW5hbWljV2luZG93KGludCBjLCAKKwkJCQkgICAgaW50IHdoaWNoV2luZG93KQorICAgIHsKKyAgICAgICAgcmV0dXJuIChjID49IGZPZmZzZXRzW3doaWNoV2luZG93XSAKKwkJJiYgYyA8IChmT2Zmc2V0c1t3aGljaFdpbmRvd10gKyAweDgwKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogRGV0ZXJtaW5lIGlmIGEgY2hhcmFjdGVyIGlzIGluIGEgc3RhdGljIHdpbmRvdy4KKyAgICAqIEBwYXJhbSBjIFRoZSBjaGFyYWN0ZXIgdG8gdGVzdAorICAgICogQHBhcmFtIHdoaWNoV2luZG93IFRoZSBzdGF0aWMgd2luZG93IHRoZSB0ZXN0CisgICAgKiBAcmV0dXJuIHRydWUgaWYgPFRUPmM8L1RUPiB3aWxsIGZpdCBpbiA8VFQ+d2hpY2hXaW5kb3c8L1RUPiwgCisgICAgKiBmYWxzZSBvdGhlcndpc2UuCisgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGluU3RhdGljV2luZG93KGludCBjLCAKKwkJCQkJICBpbnQgd2hpY2hXaW5kb3cpCisgICAgeworICAgICAgICByZXR1cm4gKGMgPj0gc09mZnNldHNbd2hpY2hXaW5kb3ddCisJCSYmIGMgPCAoc09mZnNldHNbd2hpY2hXaW5kb3ddICsgMHg4MCkpOworICAgIH0KKworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBDaGVjayBpZiBhIGdpdmVuIGNoYXJhY3RlciBpcyBjb21wcmVzc2libGUKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAvKioKKyAgICAqIERldGVybWluZSBpZiBhIGNoYXJhY3RlciBpcyBjb21wcmVzc2libGUuCisgICAgKiBAcGFyYW0gYyBUaGUgY2hhcmFjdGVyIHRvIHRlc3QuCisgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIDxUVD5jPC9UVD4gaXMgY29tcHJlc3NpYmxlLCBmYWxzZSBvdGhlcndpc2UuCisgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGlzQ29tcHJlc3NpYmxlKGludCBjKQorICAgIHsKKyAgICAgICAgcmV0dXJuIChjIDwgMHgzNDAwIHx8IGMgPj0gMHhFMDAwKTsKKyAgICB9CisKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gQ2hlY2sgaWYgYSB3aW5kb3cgaXMgZGVmaW5lZCBmb3IgYSBnaXZlbiBjaGFyYWN0ZXIKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAvKioKKyAgICAgKiBEZXRlcm1pbmUgaWYgYSBkeW5hbWljIHdpbmRvdyBmb3IgYSBjZXJ0YWluIGNoYXJhY3RlciBpcyBkZWZpbmVkCisgICAgICogQHBhcmFtIGMgVGhlIGNoYXJhY3RlciBpbiBxdWVzdGlvbgorICAgICAqIEByZXR1cm4gVGhlIGR5bmFtaWMgd2luZG93IGNvbnRhaW5pbmcgPFRUPmM8L1RUPiwgb3IgCisgICAgICogSU5WQUxJRFdJTkRPVyBpZiBub3QgZGVmaW5lZC4KKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBmaW5kRHluYW1pY1dpbmRvdyhpbnQgYykKKyAgICB7CisJLy8gc3VwcG9zZWRseSBmYXN0ZXIgdG8gY291bnQgZG93bgorICAgICAgICAvL2ZvcihpbnQgaSA9IDA7IGkgPCBOVU1XSU5ET1dTOyBpKyspIHsKKwlmb3IoaW50IGkgPSBOVU1XSU5ET1dTIC0gMTsgaSA+PSAwOyAtLWkpIHsKKwkgICAgaWYoaW5EeW5hbWljV2luZG93KGMsIGkpKSB7CisJCSsrZlRpbWVTdGFtcHNbaV07CisgICAgICAgICAgICAgICAgcmV0dXJuIGk7CisJICAgIH0KKwl9CisgICAgICAgIAorICAgICAgICByZXR1cm4gSU5WQUxJRFdJTkRPVzsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEZXRlcm1pbmUgaWYgYSBzdGF0aWMgd2luZG93IGZvciBhIGNlcnRhaW4gY2hhcmFjdGVyIGlzIGRlZmluZWQKKyAgICAgKiBAcGFyYW0gYyBUaGUgY2hhcmFjdGVyIGluIHF1ZXN0aW9uCisgICAgICogQHJldHVybiBUaGUgc3RhdGljIHdpbmRvdyBjb250YWluaW5nIDxUVD5jPC9UVD4sIG9yIAorICAgICAqIElOVkFMSURXSU5ET1cgaWYgbm90IGRlZmluZWQuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgaW50IGZpbmRTdGF0aWNXaW5kb3coaW50IGMpCisgICAgeworCS8vIHN1cHBvc2VkbHkgZmFzdGVyIHRvIGNvdW50IGRvd24KKyAgICAgICAgLy9mb3IoaW50IGkgPSAwOyBpIDwgTlVNU1RBVElDV0lORE9XUzsgaSsrKSB7CisJZm9yKGludCBpID0gTlVNU1RBVElDV0lORE9XUyAtIDE7IGkgPj0gMDsgLS1pKSB7CisJICAgIGlmKGluU3RhdGljV2luZG93KGMsIGkpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGk7CisJICAgIH0KKwl9CisJCisgICAgICAgIHJldHVybiBJTlZBTElEV0lORE9XOworICAgIH0KKyAgICAKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gRmluZCB0aGUgbGVhc3QtcmVjZW50bHkgdXNlZCB3aW5kb3cKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAvKiogRmluZCB0aGUgbGVhc3QtcmVjZW50bHkgZGVmaW5lZCB3aW5kb3cgKi8KKyAgICBwcml2YXRlIGludCBnZXRMUkRlZmluZWRXaW5kb3coKQorICAgIHsKKyAgICAgICAgaW50IGxlYXN0UlUgICAgICAgICA9IEludGVnZXIuTUFYX1ZBTFVFOworICAgICAgICBpbnQgd2hpY2hXaW5kb3cgICAgID0gSU5WQUxJRFdJTkRPVzsKKworICAgICAgICAvLyBmaW5kIGxlYXN0IHJlY2VudGx5IHVzZWQgd2luZG93CisgICAgICAgIC8vIHN1cHBvc2VkbHkgZmFzdGVyIHRvIGNvdW50IGRvd24KKyAgICAgICAgLy9mb3IoIGludCBpID0gMDsgaSA8IE5VTVdJTkRPV1M7IGkrKyApIHsKKyAgICAgICAgZm9yKGludCBpID0gTlVNV0lORE9XUyAtIDE7IGkgPj0gMDsgLS1pICkgeworICAgICAgICAgICAgaWYoIGZUaW1lU3RhbXBzW2ldIDwgbGVhc3RSVSApIHsKKyAgICAgICAgICAgICAgICBsZWFzdFJVICAgPSBmVGltZVN0YW1wc1tpXTsKKyAgICAgICAgICAgICAgICB3aGljaFdpbmRvdyAgPSBpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHdoaWNoV2luZG93OworICAgIH0KKyAgICAKK307CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvdGV4dC9Vbmljb2RlRGVjb21wcmVzc29yLmphdmEgYi9zcmMvY29tL2libS9pY3UvdGV4dC9Vbmljb2RlRGVjb21wcmVzc29yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOWU1ODRhNAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L1VuaWNvZGVEZWNvbXByZXNzb3IuamF2YQpAQCAtMCwwICsxLDU2OCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L3RleHQvVW5pY29kZURlY29tcHJlc3Nvci5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzEyLzAzIDIyOjAzOjU5ICQgCisgKiAkUmV2aXNpb246IDEuNCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworcGFja2FnZSBjb20uaWJtLmljdS50ZXh0OworCisvKioKKyogQSBkZWNvbXByZXNzaW9uIGVuZ2luZSBpbXBsZW1lbnRpbmcgdGhlIFN0YW5kYXJkIENvbXByZXNzaW9uIFNjaGVtZQorKiBmb3IgVW5pY29kZSAoU0NTVSkgYXMgb3V0bGluZWQgaW4gPEEKKyogSFJFRj0iaHR0cDovL3d3dy51bmljb2RlLm9yZy91bmljb2RlL3JlcG9ydHMvdHI2Ij5Vbmljb2RlIFRlY2huaWNhbAorKiBSZXBvcnQgIzY8L0E+LgorKgorKiA8UD48U1RST05HPlVTQUdFPC9TVFJPTkc+PC9QPgorKgorKiA8UD5UaGUgc3RhdGljIG1ldGhvZHMgb24gPFRUPlVuaWNvZGVEZWNvbXByZXNzb3I8L1RUPiBtYXkgYmUgdXNlZCBpbiBhCisqIHN0cmFpZ2h0Zm9yd2FyZCBtYW5uZXIgdG8gZGVjb21wcmVzcyBzaW1wbGUgc3RyaW5nczo8L1A+CisqCisqIDxQUkU+CisqICBieXRlIFtdIGNvbXByZXNzZWQgPSAuLi4gOyAvLyBnZXQgY29tcHJlc3NlZCBieXRlcyBmcm9tIHNvbWV3aGVyZQorKiAgU3RyaW5nIHJlc3VsdCA9IFVuaWNvZGVEZWNvbXByZXNzb3IuZGVjb21wcmVzcyhjb21wcmVzc2VkKTsKKyogPC9QUkU+CisqCisqIDxQPlRoZSBzdGF0aWMgbWV0aG9kcyBoYXZlIGEgZmFpcmx5IGxhcmdlIG1lbW9yeSBmb290cHJpbnQuCisqIEZvciBmaW5lci1ncmFpbmVkIGNvbnRyb2wgb3ZlciBtZW1vcnkgdXNhZ2UsIAorKiA8VFQ+VW5pY29kZURlY29tcHJlc3NvcjwvVFQ+IG9mZmVycyBtb3JlIHBvd2VyZnVsIEFQSXMgYWxsb3dpbmcKKyogaXRlcmF0aXZlIGRlY29tcHJlc3Npb246PC9QPgorKgorKiA8UFJFPgorKiAgLy8gRGVjb21wcmVzcyBhbiBhcnJheSAiYnl0ZXMiIG9mIGxlbmd0aCAibGVuIiB1c2luZyBhIGJ1ZmZlciBvZiA1MTIgY2hhcnMKKyogIC8vIHRvIHRoZSBXcml0ZXIgIm91dCIKKyoKKyogIFVuaWNvZGVEZWNvbXByZXNzb3IgbXlEZWNvbXByZXNzb3IgICAgICAgICA9IG5ldyBVbmljb2RlRGVjb21wcmVzc29yKCk7CisqICBmaW5hbCBzdGF0aWMgaW50ICAgIEJVRlNJWkUgICAgICAgICAgICAgICAgPSA1MTI7CisqICBjaGFyIFtdICAgICAgICAgICAgIGNoYXJCdWZmZXIgICAgICAgICAgICAgPSBuZXcgY2hhciBbIEJVRlNJWkUgXTsKKyogIGludCAgICAgICAgICAgICAgICAgY2hhcnNXcml0dGVuICAgICAgICAgICA9IDA7CisqICBpbnQgW10gICAgICAgICAgICAgIGJ5dGVzUmVhZCAgICAgICAgICAgICAgPSBuZXcgaW50IFsxXTsKKyogIGludCAgICAgICAgICAgICAgICAgdG90YWxCeXRlc0RlY29tcHJlc3NlZCA9IDA7CisqICBpbnQgICAgICAgICAgICAgICAgIHRvdGFsQ2hhcnNXcml0dGVuICAgICAgPSAwOworKgorKiAgZG8geworKiAgICAvLyBkbyB0aGUgZGVjb21wcmVzc2lvbgorKiAgICBjaGFyc1dyaXR0ZW4gPSBteURlY29tcHJlc3Nvci5kZWNvbXByZXNzKGJ5dGVzLCB0b3RhbEJ5dGVzRGVjb21wcmVzc2VkLCAKKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4sIGJ5dGVzUmVhZCwKKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyQnVmZmVyLCAwLCBCVUZTSVpFKTsKKyoKKyogICAgLy8gZG8gc29tZXRoaW5nIHdpdGggdGhlIGN1cnJlbnQgc2V0IG9mIGNoYXJzCisqICAgIG91dC53cml0ZShjaGFyQnVmZmVyLCAwLCBjaGFyc1dyaXR0ZW4pOworKgorKiAgICAvLyB1cGRhdGUgdGhlIG5vLiBvZiBieXRlcyBkZWNvbXByZXNzZWQKKyogICAgdG90YWxCeXRlc0RlY29tcHJlc3NlZCArPSBieXRlc1JlYWRbMF07CisqCisqICAgIC8vIHVwZGF0ZSB0aGUgbm8uIG9mIGNoYXJzIHdyaXR0ZW4KKyogICAgdG90YWxDaGFyc1dyaXR0ZW4gKz0gY2hhcnNXcml0dGVuOworKgorKiAgfSB3aGlsZSh0b3RhbEJ5dGVzRGVjb21wcmVzc2VkIDwgbGVuKTsKKyoKKyogIG15RGVjb21wcmVzc29yLnJlc2V0KCk7IC8vIHJldXNlIGRlY29tcHJlc3NvcgorKiA8L1BSRT4KKyoKKyogPFA+RGVjb21wcmVzc2lvbiBpcyBwZXJmb3JtZWQgYWNjb3JkaW5nIHRvIHRoZSBzdGFuZGFyZCBzZXQgZm9ydGggaW4gCisqIDxBIEhSRUY9Imh0dHA6Ly93d3cudW5pY29kZS5vcmcvdW5pY29kZS9yZXBvcnRzL3RyNiI+VW5pY29kZSBUZWNobmljYWwgCisqIFJlcG9ydCAjNjwvQT48L1A+CisqCisqIEBzZWUgVW5pY29kZUNvbXByZXNzb3IKKyoKKyogQGF1dGhvciBTdGVwaGVuIEYuIEJvb3RoCisqIEBkcmFmdCBJQ1UgMi40CisqLworcHVibGljIGZpbmFsIGNsYXNzIFVuaWNvZGVEZWNvbXByZXNzb3IgaW1wbGVtZW50cyBTQ1NVCit7CisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIEluc3RhbmNlIHZhcmlhYmxlcworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAKKyAgICAvKiogQWxpYXMgdG8gY3VycmVudCBkeW5hbWljIHdpbmRvdyAqLworICAgIHByaXZhdGUgaW50ICAgICAgIGZDdXJyZW50V2luZG93ICAgPSAwOworCisgICAgLyoqIER5bmFtaWMgY29tcHJlc3Npb24gd2luZG93IG9mZnNldHMgKi8KKyAgICBwcml2YXRlIGludCBbXSAgICBmT2Zmc2V0cyAgICAgICAgID0gbmV3IGludCBbIE5VTVdJTkRPV1MgXTsKKworICAgIC8qKiBDdXJyZW50IGNvbXByZXNzaW9uIG1vZGUgKi8KKyAgICBwcml2YXRlIGludCAgICAgICBmTW9kZSAgICAgICAgICAgID0gU0lOR0xFQllURU1PREU7CisKKyAgICAvKiogU2l6ZSBvZiBvdXIgaW50ZXJuYWwgYnVmZmVyICovCisgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgaW50IEJVRlNJWkUgICA9IDM7CisKKyAgICAvKiogSW50ZXJuYWwgYnVmZmVyIGZvciBzYXZpbmcgc3RhdGUgKi8KKyAgICBwcml2YXRlIGJ5dGUgW10gICBmQnVmZmVyICAgICAgICAgID0gbmV3IGJ5dGUgW0JVRlNJWkVdOworCisgICAgLyoqIE51bWJlciBvZiBjaGFyYWN0ZXJzIGluIG91ciBpbnRlcm5hbCBidWZmZXIgKi8KKyAgICBwcml2YXRlIGludCAgICAgICBmQnVmZmVyTGVuZ3RoICAgID0gMDsKKyAgICAKKworICAgIC8qKgorICAgICAqIENyZWF0ZSBhIFVuaWNvZGVEZWNvbXByZXNzb3IuCisgICAgICogU2V0cyBhbGwgd2luZG93cyB0byB0aGVpciBkZWZhdWx0IHZhbHVlcy4KKyAgICAgKiBAc2VlICNyZXNldAorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIFVuaWNvZGVEZWNvbXByZXNzb3IoKQorICAgIHsKKwlyZXNldCgpOyAgICAgICAgICAgICAgLy8gaW5pdGlhbGl6ZSB0byBkZWZhdWx0cworICAgIH0KKworICAgIC8qKgorICAgICAqIERlY29tcHJlc3MgYSBieXRlIGFycmF5IGludG8gYSBTdHJpbmcuCisgICAgICogQHBhcmFtIGJ1ZmZlciBUaGUgYnl0ZSBhcnJheSB0byBkZWNvbXByZXNzLgorICAgICAqIEByZXR1cm4gQSBTdHJpbmcgY29udGFpbmluZyB0aGUgZGVjb21wcmVzc2VkIGNoYXJhY3RlcnMuCisgICAgICogQHNlZSAjZGVjb21wcmVzcyhieXRlIFtdLCBpbnQsIGludCkKKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGRlY29tcHJlc3MoYnl0ZSBbXSBidWZmZXIpCisgICAgeworCWNoYXIgW10gYnVmID0gZGVjb21wcmVzcyhidWZmZXIsIDAsIGJ1ZmZlci5sZW5ndGgpOworCXJldHVybiBuZXcgU3RyaW5nKGJ1Zik7CisgICAgfQorCisgICAgLyoqCisgICAgICogRGVjb21wcmVzcyBhIGJ5dGUgYXJyYXkgaW50byBhIFVuaWNvZGUgY2hhcmFjdGVyIGFycmF5LgorICAgICAqIEBwYXJhbSBidWZmZXIgVGhlIGJ5dGUgYXJyYXkgdG8gZGVjb21wcmVzcy4KKyAgICAgKiBAcGFyYW0gc3RhcnQgVGhlIHN0YXJ0IG9mIHRoZSBieXRlIHJ1biB0byBkZWNvbXByZXNzLgorICAgICAqIEBwYXJhbSBsaW1pdCBUaGUgbGltaXQgb2YgdGhlIGJ5dGUgcnVuIHRvIGRlY29tcHJlc3MuCisgICAgICogQHJldHVybiBBIGNoYXJhY3RlciBhcnJheSBjb250YWluaW5nIHRoZSBkZWNvbXByZXNzZWQgYnl0ZXMuCisgICAgICogQHNlZSAjZGVjb21wcmVzcyhieXRlIFtdKQorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBjaGFyIFtdIGRlY29tcHJlc3MoYnl0ZSBbXSBidWZmZXIsCisJCQkJICAgICBpbnQgc3RhcnQsCisJCQkJICAgICBpbnQgbGltaXQpCisgICAgeworCVVuaWNvZGVEZWNvbXByZXNzb3IgY29tcCA9IG5ldyBVbmljb2RlRGVjb21wcmVzc29yKCk7CisKKwkvLyB1c2UgYSBidWZmZXIgd2Uga25vdyB3aWxsIG5ldmVyIG92ZXJmbG93CisJLy8gaW4gdGhlIHdvcnN0IGNhc2UsIGVhY2ggYnl0ZSB3aWxsIGRlY29tcHJlc3MKKwkvLyB0byBhIHN1cnJvZ2F0ZSBwYWlyIChidWZmZXIgbXVzdCBiZSBhdCBsZWFzdCAyIGNoYXJzKQorCWludCBsZW4gPSBNYXRoLm1heCgyLCAyICogKGxpbWl0IC0gc3RhcnQpKTsKKwljaGFyIFtdIHRlbXAgPSBuZXcgY2hhciBbbGVuXTsKKworCWludCBjaGFyQ291bnQgPSBjb21wLmRlY29tcHJlc3MoYnVmZmVyLCBzdGFydCwgbGltaXQsIG51bGwsIAorCQkJCQl0ZW1wLCAwLCBsZW4pOworCisJY2hhciBbXSByZXN1bHQgPSBuZXcgY2hhciBbY2hhckNvdW50XTsKKwlTeXN0ZW0uYXJyYXljb3B5KHRlbXAsIDAsIHJlc3VsdCwgMCwgY2hhckNvdW50KTsKKwlyZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBEZWNvbXByZXNzIGEgYnl0ZSBhcnJheSBpbnRvIGEgVW5pY29kZSBjaGFyYWN0ZXIgYXJyYXkuCisgICAgICoKKyAgICAgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgZWl0aGVyIGNvbXBsZXRlbHkgZmlsbCB0aGUgb3V0cHV0IGJ1ZmZlciwgCisgICAgICogb3IgY29uc3VtZSB0aGUgZW50aXJlIGlucHV0LiAgCisgICAgICoKKyAgICAgKiBAcGFyYW0gYnl0ZUJ1ZmZlciBUaGUgYnl0ZSBidWZmZXIgdG8gZGVjb21wcmVzcy4KKyAgICAgKiBAcGFyYW0gYnl0ZUJ1ZmZlclN0YXJ0IFRoZSBzdGFydCBvZiB0aGUgYnl0ZSBydW4gdG8gZGVjb21wcmVzcy4KKyAgICAgKiBAcGFyYW0gYnl0ZUJ1ZmZlckxpbWl0IFRoZSBsaW1pdCBvZiB0aGUgYnl0ZSBydW4gdG8gZGVjb21wcmVzcy4KKyAgICAgKiBAcGFyYW0gYnl0ZXNSZWFkIEEgb25lLWVsZW1lbnQgYXJyYXkuICBJZiBub3QgbnVsbCwgb24gcmV0dXJuCisgICAgICogdGhlIG51bWJlciBvZiBieXRlcyByZWFkIGZyb20gYnl0ZUJ1ZmZlci4KKyAgICAgKiBAcGFyYW0gY2hhckJ1ZmZlciBBIGJ1ZmZlciB0byByZWNlaXZlIHRoZSBkZWNvbXByZXNzZWQgZGF0YS4gCisgICAgICogVGhpcyBidWZmZXIgbXVzdCBiZSBhdCBtaW5pbXVtIHR3byBjaGFyYWN0ZXJzIGluIHNpemUuCisgICAgICogQHBhcmFtIGNoYXJCdWZmZXJTdGFydCBUaGUgc3RhcnRpbmcgb2Zmc2V0IHRvIHdoaWNoIHRvIHdyaXRlIAorICAgICAqIGRlY29tcHJlc3NlZCBkYXRhLgorICAgICAqIEBwYXJhbSBjaGFyQnVmZmVyTGltaXQgVGhlIGxpbWl0aW5nIG9mZnNldCBmb3Igd3JpdGluZyAKKyAgICAgKiBkZWNvbXByZXNzZWQgZGF0YS4KKyAgICAgKiBAcmV0dXJuIFRoZSBudW1iZXIgb2YgVW5pY29kZSBjaGFyYWN0ZXJzIHdyaXR0ZW4gdG8gY2hhckJ1ZmZlci4KKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBpbnQgZGVjb21wcmVzcyhieXRlIFtdICAgIGJ5dGVCdWZmZXIsCisJCQkgIGludCAgICAgICAgYnl0ZUJ1ZmZlclN0YXJ0LAorCQkJICBpbnQgICAgICAgIGJ5dGVCdWZmZXJMaW1pdCwKKwkJCSAgaW50IFtdICAgICBieXRlc1JlYWQsCisJCQkgIGNoYXIgW10gICAgY2hhckJ1ZmZlciwKKwkJCSAgaW50ICAgICAgICBjaGFyQnVmZmVyU3RhcnQsCisJCQkgIGludCAgICAgICAgY2hhckJ1ZmZlckxpbWl0KQorICAgIHsKKwkvLyB0aGUgY3VycmVudCBwb3NpdGlvbiBpbiB0aGUgc291cmNlIGJ5dGUgYnVmZmVyCisJaW50IGJ5dGVQb3MgICAgICA9IGJ5dGVCdWZmZXJTdGFydDsKKwkKKwkvLyB0aGUgY3VycmVudCBwb3NpdGlvbiBpbiB0aGUgdGFyZ2V0IGNoYXIgYnVmZmVyCisJaW50IHVjUG9zICAgICAgICA9IGNoYXJCdWZmZXJTdGFydDsKKyAgICAgICAgCisgICAgICAgIC8vIHRoZSBjdXJyZW50IGJ5dGUgZnJvbSB0aGUgc291cmNlIGJ1ZmZlcgorCWludCBhQnl0ZSAgICAgICAgPSAweDAwOworCisKKwkvLyBjaGFyQnVmZmVyIG11c3QgYmUgYXQgbGVhc3QgMiBjaGFycyBpbiBzaXplCisJaWYoY2hhckJ1ZmZlci5sZW5ndGggPCAyIHx8IChjaGFyQnVmZmVyTGltaXQgLSBjaGFyQnVmZmVyU3RhcnQpIDwgMikKKwkgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiY2hhckJ1ZmZlci5sZW5ndGggPCAyIik7CisJCisJLy8gaWYgb3VyIGludGVybmFsIGJ1ZmZlciBpc24ndCBlbXB0eSwgZmx1c2ggaXRzIGNvbnRlbnRzCisJLy8gdG8gdGhlIG91dHB1dCBidWZmZXIgYmVmb3JlIGRvaW5nIGFueSBtb3JlIGRlY29tcHJlc3Npb24KKwlpZihmQnVmZmVyTGVuZ3RoID4gMCkgeworCisJICAgIGludCBuZXdCeXRlcyA9IDA7CisKKwkgICAgLy8gZmlsbCB0aGUgYnVmZmVyIGNvbXBsZXRlbHksIHRvIGd1YXJhbnRlZSBvbmUgZnVsbCBjaGFyYWN0ZXIKKwkgICAgaWYoZkJ1ZmZlckxlbmd0aCAhPSBCVUZTSVpFKSB7CisJCW5ld0J5dGVzID0gZkJ1ZmZlci5sZW5ndGggLSBmQnVmZmVyTGVuZ3RoOworCisJCS8vIHZlcmlmeSB0aGVyZSBhcmUgbmV3Qnl0ZXMgYnl0ZXMgaW4gYnl0ZUJ1ZmZlcgorCQlpZihieXRlQnVmZmVyTGltaXQgLSBieXRlQnVmZmVyU3RhcnQgPCBuZXdCeXRlcykKKwkJICAgIG5ld0J5dGVzID0gYnl0ZUJ1ZmZlckxpbWl0IC0gYnl0ZUJ1ZmZlclN0YXJ0OworCisJCVN5c3RlbS5hcnJheWNvcHkoYnl0ZUJ1ZmZlciwgYnl0ZUJ1ZmZlclN0YXJ0LCAKKwkJCQkgZkJ1ZmZlciwgZkJ1ZmZlckxlbmd0aCwgbmV3Qnl0ZXMpOworCSAgICB9CisKKwkgICAgLy8gcmVzZXQgYnVmZmVyIGxlbmd0aCB0byAwIGJlZm9yZSByZWN1cnNpdmUgY2FsbAorCSAgICBmQnVmZmVyTGVuZ3RoID0gMDsKKworCSAgICAvLyBjYWxsIHNlbGYgcmVjdXJzaXZlbHkgdG8gZGVjb21wcmVzcyB0aGUgYnVmZmVyCisJICAgIGludCBjb3VudCA9IGRlY29tcHJlc3MoZkJ1ZmZlciwgMCwgZkJ1ZmZlci5sZW5ndGgsIG51bGwsCisJCQkJICAgY2hhckJ1ZmZlciwgY2hhckJ1ZmZlclN0YXJ0LCAKKwkJCQkgICBjaGFyQnVmZmVyTGltaXQpOworCisJICAgIC8vIHVwZGF0ZSB0aGUgcG9zaXRpb25zIGludG8gdGhlIGFycmF5cworCSAgICB1Y1BvcyArPSBjb3VudDsKKwkgICAgYnl0ZVBvcyArPSBuZXdCeXRlczsKKwl9CisKKyAgICAgICAgLy8gdGhlIG1haW4gZGVjb21wcmVzc2lvbiBsb29wCisgICAgbWFpbkxvb3A6CisJd2hpbGUoYnl0ZVBvcyA8IGJ5dGVCdWZmZXJMaW1pdCAmJiB1Y1BvcyA8IGNoYXJCdWZmZXJMaW1pdCkgeworCSAgICBzd2l0Y2goZk1vZGUpIHsgIAorCSAgICBjYXNlIFNJTkdMRUJZVEVNT0RFOgorCQkvLyBzaW5nbGUtYnl0ZSBtb2RlIGRlY29tcHJlc3Npb24gbG9vcAorCSAgICBzaW5nbGVCeXRlTW9kZUxvb3A6CisJICAgIHdoaWxlKGJ5dGVQb3MgPCBieXRlQnVmZmVyTGltaXQgJiYgdWNQb3MgPCBjaGFyQnVmZmVyTGltaXQpIHsKKwkJYUJ5dGUgPSBieXRlQnVmZmVyW2J5dGVQb3MrK10gJiAweEZGOworCQlzd2l0Y2goYUJ5dGUpIHsKKwkJICAgIC8vIEFsbCBieXRlcyBmcm9tIDB4ODAgdGhyb3VnaCAweEZGIGFyZSByZW1hcHBlZAorCQkgICAgLy8gdG8gY2hhcnMgb3Igc3Vycm9nYXRlIHBhaXJzIGFjY29yZGluZyB0byB0aGUKKwkJICAgIC8vIGN1cnJlbnRseSBhY3RpdmUgd2luZG93CisJCWNhc2UgMHg4MDogY2FzZSAweDgxOiBjYXNlIDB4ODI6IGNhc2UgMHg4MzogY2FzZSAweDg0OiAKKwkJY2FzZSAweDg1OiBjYXNlIDB4ODY6IGNhc2UgMHg4NzogY2FzZSAweDg4OiBjYXNlIDB4ODk6CisJCWNhc2UgMHg4QTogY2FzZSAweDhCOiBjYXNlIDB4OEM6IGNhc2UgMHg4RDogY2FzZSAweDhFOgorCQljYXNlIDB4OEY6IGNhc2UgMHg5MDogY2FzZSAweDkxOiBjYXNlIDB4OTI6IGNhc2UgMHg5MzoKKwkJY2FzZSAweDk0OiBjYXNlIDB4OTU6IGNhc2UgMHg5NjogY2FzZSAweDk3OiBjYXNlIDB4OTg6CisJCWNhc2UgMHg5OTogY2FzZSAweDlBOiBjYXNlIDB4OUI6IGNhc2UgMHg5QzogY2FzZSAweDlEOgorCQljYXNlIDB4OUU6IGNhc2UgMHg5RjogY2FzZSAweEEwOiBjYXNlIDB4QTE6IGNhc2UgMHhBMjoKKwkJY2FzZSAweEEzOiBjYXNlIDB4QTQ6IGNhc2UgMHhBNTogY2FzZSAweEE2OiBjYXNlIDB4QTc6CisJCWNhc2UgMHhBODogY2FzZSAweEE5OiBjYXNlIDB4QUE6IGNhc2UgMHhBQjogY2FzZSAweEFDOgorCQljYXNlIDB4QUQ6IGNhc2UgMHhBRTogY2FzZSAweEFGOiBjYXNlIDB4QjA6IGNhc2UgMHhCMToKKwkJY2FzZSAweEIyOiBjYXNlIDB4QjM6IGNhc2UgMHhCNDogY2FzZSAweEI1OiBjYXNlIDB4QjY6CisJCWNhc2UgMHhCNzogY2FzZSAweEI4OiBjYXNlIDB4Qjk6IGNhc2UgMHhCQTogY2FzZSAweEJCOgorCQljYXNlIDB4QkM6IGNhc2UgMHhCRDogY2FzZSAweEJFOiBjYXNlIDB4QkY6IGNhc2UgMHhDMDoKKwkJY2FzZSAweEMxOiBjYXNlIDB4QzI6IGNhc2UgMHhDMzogY2FzZSAweEM0OiBjYXNlIDB4QzU6CisJCWNhc2UgMHhDNjogY2FzZSAweEM3OiBjYXNlIDB4Qzg6IGNhc2UgMHhDOTogY2FzZSAweENBOgorCQljYXNlIDB4Q0I6IGNhc2UgMHhDQzogY2FzZSAweENEOiBjYXNlIDB4Q0U6IGNhc2UgMHhDRjoKKwkJY2FzZSAweEQwOiBjYXNlIDB4RDE6IGNhc2UgMHhEMjogY2FzZSAweEQzOiBjYXNlIDB4RDQ6CisJCWNhc2UgMHhENTogY2FzZSAweEQ2OiBjYXNlIDB4RDc6IGNhc2UgMHhEODogY2FzZSAweEQ5OgorCQljYXNlIDB4REE6IGNhc2UgMHhEQjogY2FzZSAweERDOiBjYXNlIDB4REQ6IGNhc2UgMHhERToKKwkJY2FzZSAweERGOiBjYXNlIDB4RTA6IGNhc2UgMHhFMTogY2FzZSAweEUyOiBjYXNlIDB4RTM6CisJCWNhc2UgMHhFNDogY2FzZSAweEU1OiBjYXNlIDB4RTY6IGNhc2UgMHhFNzogY2FzZSAweEU4OgorCQljYXNlIDB4RTk6IGNhc2UgMHhFQTogY2FzZSAweEVCOiBjYXNlIDB4RUM6IGNhc2UgMHhFRDoKKwkJY2FzZSAweEVFOiBjYXNlIDB4RUY6IGNhc2UgMHhGMDogY2FzZSAweEYxOiBjYXNlIDB4RjI6CisJCWNhc2UgMHhGMzogY2FzZSAweEY0OiBjYXNlIDB4RjU6IGNhc2UgMHhGNjogY2FzZSAweEY3OgorCQljYXNlIDB4Rjg6IGNhc2UgMHhGOTogY2FzZSAweEZBOiBjYXNlIDB4RkI6IGNhc2UgMHhGQzoKKwkJY2FzZSAweEZEOiBjYXNlIDB4RkU6IGNhc2UgMHhGRjogCisJCSAgICAvLyBGb3Igb2Zmc2V0cyA8PSAweEZGRkYsIGNvbnZlcnQgdG8gYSBzaW5nbGUgY2hhcgorCQkgICAgLy8gYnkgYWRkaW5nIHRoZSB3aW5kb3cncyBvZmZzZXQgYW5kIHN1YnRyYWN0aW5nCisJCSAgICAvLyB0aGUgZ2VuZXJpYyBjb21wcmVzc2lvbiBvZmZzZXQKKwkJICAgIGlmKGZPZmZzZXRzWyBmQ3VycmVudFdpbmRvdyBdIDw9IDB4RkZGRikgeworCQkJY2hhckJ1ZmZlclt1Y1BvcysrXSA9IChjaGFyKSAKKwkJCSAgICAoYUJ5dGUgKyBmT2Zmc2V0c1sgZkN1cnJlbnRXaW5kb3cgXSAKKwkJCSAgICAgLSBDT01QUkVTU0lPTk9GRlNFVCk7CisJCSAgICB9CisJCSAgICAvLyBGb3Igb2Zmc2V0cyA+IDB4MTAwMDAsIGNvbnZlcnQgdG8gYSBzdXJyb2dhdGUgcGFpciBieSAKKwkJICAgIC8vIG5vcm1CYXNlID0gd2luZG93J3Mgb2Zmc2V0IC0gMHgxMDAwMAorCQkgICAgLy8gaGlnaCBzdXJyLiA9IDB4RDgwMCArIChub3JtQmFzZSA+PiAxMCkKKwkJICAgIC8vIGxvdyAgc3Vyci4gPSAweERDMDAgKyAobm9ybUJhc2UgJiAweDNGRikgKyAoYnl0ZSAmIDB4N0YpCisJCSAgICBlbHNlIHsKKwkJCS8vIG1ha2Ugc3VyZSB0aGVyZSBpcyBlbm91Z2ggcm9vbSB0byB3cml0ZQorCQkJLy8gYm90aCBjaGFyYWN0ZXJzIAorCQkJLy8gaWYgbm90LCBzYXZlIHN0YXRlIGFuZCBicmVhayBvdXQKKwkJCWlmKCh1Y1BvcyArIDEpID49IGNoYXJCdWZmZXJMaW1pdCkgeworCQkJICAgIC0tYnl0ZVBvczsKKwkJCSAgICBTeXN0ZW0uYXJyYXljb3B5KGJ5dGVCdWZmZXIsIGJ5dGVQb3MsCisJCQkJCSAgICAgZkJ1ZmZlciwgMCwgCisJCQkJCSAgICAgYnl0ZUJ1ZmZlckxpbWl0IC0gYnl0ZVBvcyk7CisJCQkgICAgZkJ1ZmZlckxlbmd0aCA9IGJ5dGVCdWZmZXJMaW1pdCAtIGJ5dGVQb3M7CisJCQkgICAgYnl0ZVBvcyArPSBmQnVmZmVyTGVuZ3RoOworCQkJICAgIGJyZWFrIG1haW5Mb29wOyAKKwkJCX0KKwkJCQorCQkJaW50IG5vcm1hbGl6ZWRCYXNlID0gZk9mZnNldHNbIGZDdXJyZW50V2luZG93IF0gCisJCQkgICAgLSAweDEwMDAwOworCQkJY2hhckJ1ZmZlclt1Y1BvcysrXSA9IChjaGFyKSAKKwkJCSAgICAoMHhEODAwICsgKG5vcm1hbGl6ZWRCYXNlID4+IDEwKSk7CisJCQljaGFyQnVmZmVyW3VjUG9zKytdID0gKGNoYXIpIAorCQkJICAgICgweERDMDAgKyAobm9ybWFsaXplZEJhc2UgJiAweDNGRikrKGFCeXRlICYgMHg3RikpOworCQkgICAgfQorCQkgICAgYnJlYWs7CisKKwkJICAgIC8vIGJ5dGVzIGZyb20gMHgyMCB0aHJvdWdoIDB4N0YgYXJlIHRyZWF0ZWQgYXMgQVNDSUkgYW5kCisJCSAgICAvLyBhcmUgcmVtYXBwZWQgdG8gY2hhcnMgYnkgcGFkZGluZyB0aGUgaGlnaCBieXRlCisJCSAgICAvLyAodGhpcyBpcyB0aGUgc2FtZSBhcyBxdW90aW5nIGZyb20gc3RhdGljIHdpbmRvdyAwKQorCQkgICAgLy8gTlVMICgweDAwKSwgSFQgKDB4MDkpLCBDUiAoMHgwQSksIExGICgweDBEKSAKKwkJICAgIC8vIGFyZSB0cmVhdGVkIGFzIEFTQ0lJIGFzIHdlbGwKKwkJY2FzZSAweDAwOiBjYXNlIDB4MDk6IGNhc2UgMHgwQTogY2FzZSAweDBEOgorCQljYXNlIDB4MjA6IGNhc2UgMHgyMTogY2FzZSAweDIyOiBjYXNlIDB4MjM6IGNhc2UgMHgyNDoKKwkJY2FzZSAweDI1OiBjYXNlIDB4MjY6IGNhc2UgMHgyNzogY2FzZSAweDI4OiBjYXNlIDB4Mjk6CisJCWNhc2UgMHgyQTogY2FzZSAweDJCOiBjYXNlIDB4MkM6IGNhc2UgMHgyRDogY2FzZSAweDJFOgorCQljYXNlIDB4MkY6IGNhc2UgMHgzMDogY2FzZSAweDMxOiBjYXNlIDB4MzI6IGNhc2UgMHgzMzoKKwkJY2FzZSAweDM0OiBjYXNlIDB4MzU6IGNhc2UgMHgzNjogY2FzZSAweDM3OiBjYXNlIDB4Mzg6CisJCWNhc2UgMHgzOTogY2FzZSAweDNBOiBjYXNlIDB4M0I6IGNhc2UgMHgzQzogY2FzZSAweDNEOgorCQljYXNlIDB4M0U6IGNhc2UgMHgzRjogY2FzZSAweDQwOiBjYXNlIDB4NDE6IGNhc2UgMHg0MjoKKwkJY2FzZSAweDQzOiBjYXNlIDB4NDQ6IGNhc2UgMHg0NTogY2FzZSAweDQ2OiBjYXNlIDB4NDc6CisJCWNhc2UgMHg0ODogY2FzZSAweDQ5OiBjYXNlIDB4NEE6IGNhc2UgMHg0QjogY2FzZSAweDRDOgorCQljYXNlIDB4NEQ6IGNhc2UgMHg0RTogY2FzZSAweDRGOiBjYXNlIDB4NTA6IGNhc2UgMHg1MToKKwkJY2FzZSAweDUyOiBjYXNlIDB4NTM6IGNhc2UgMHg1NDogY2FzZSAweDU1OiBjYXNlIDB4NTY6CisJCWNhc2UgMHg1NzogY2FzZSAweDU4OiBjYXNlIDB4NTk6IGNhc2UgMHg1QTogY2FzZSAweDVCOgorCQljYXNlIDB4NUM6IGNhc2UgMHg1RDogY2FzZSAweDVFOiBjYXNlIDB4NUY6IGNhc2UgMHg2MDoKKwkJY2FzZSAweDYxOiBjYXNlIDB4NjI6IGNhc2UgMHg2MzogY2FzZSAweDY0OiBjYXNlIDB4NjU6CisJCWNhc2UgMHg2NjogY2FzZSAweDY3OiBjYXNlIDB4Njg6IGNhc2UgMHg2OTogY2FzZSAweDZBOgorCQljYXNlIDB4NkI6IGNhc2UgMHg2QzogY2FzZSAweDZEOiBjYXNlIDB4NkU6IGNhc2UgMHg2RjoKKwkJY2FzZSAweDcwOiBjYXNlIDB4NzE6IGNhc2UgMHg3MjogY2FzZSAweDczOiBjYXNlIDB4NzQ6CisJCWNhc2UgMHg3NTogY2FzZSAweDc2OiBjYXNlIDB4Nzc6IGNhc2UgMHg3ODogY2FzZSAweDc5OgorCQljYXNlIDB4N0E6IGNhc2UgMHg3QjogY2FzZSAweDdDOiBjYXNlIDB4N0Q6IGNhc2UgMHg3RToKKwkJY2FzZSAweDdGOiAKKwkJICAgIGNoYXJCdWZmZXJbdWNQb3MrK10gPSAoY2hhcikgYUJ5dGU7CisJCSAgICBicmVhazsKKworCQkgICAgLy8gcXVvdGUgdW5pY29kZQorCQljYXNlIFNRVU9URVU6CisJCSAgICAvLyB2ZXJpZnkgd2UgaGF2ZSB0d28gYnl0ZXMgZm9sbG93aW5nIHRhZworCQkgICAgLy8gaWYgbm90LCBzYXZlIHN0YXRlIGFuZCBicmVhayBvdXQKKwkJICAgIGlmKCAoYnl0ZVBvcyArIDEpID49IGJ5dGVCdWZmZXJMaW1pdCApIHsKKwkJCS0tYnl0ZVBvczsKKwkJCVN5c3RlbS5hcnJheWNvcHkoYnl0ZUJ1ZmZlciwgYnl0ZVBvcywKKwkJCQkJIGZCdWZmZXIsIDAsIAorCQkJCQkgYnl0ZUJ1ZmZlckxpbWl0IC0gYnl0ZVBvcyk7CisJCQlmQnVmZmVyTGVuZ3RoID0gYnl0ZUJ1ZmZlckxpbWl0IC0gYnl0ZVBvczsKKwkJCWJ5dGVQb3MgKz0gZkJ1ZmZlckxlbmd0aDsKKwkJCWJyZWFrIG1haW5Mb29wOyAKKwkJICAgIH0KKyAgICAgICAgICAgICAgICAKKwkJICAgIGFCeXRlID0gYnl0ZUJ1ZmZlcltieXRlUG9zKytdOworCQkgICAgY2hhckJ1ZmZlclt1Y1BvcysrXSA9IChjaGFyKQorCQkJKGFCeXRlIDw8IDggfCAoYnl0ZUJ1ZmZlcltieXRlUG9zKytdICYgMHhGRikpOworCQkgICAgYnJlYWs7CisKKwkJICAgIC8vIHN3aXRjaCB0byBVbmljb2RlIG1vZGUKKwkJY2FzZSBTQ0hBTkdFVToKKwkJICAgIGZNb2RlID0gVU5JQ09ERU1PREU7CisJCSAgICBicmVhayBzaW5nbGVCeXRlTW9kZUxvb3A7CisJCSAgICAvL2JyZWFrOworCisJCSAgICAvLyBoYW5kbGUgYWxsIHF1b3RlIHRhZ3MKKwkJY2FzZSBTUVVPVEUwOiBjYXNlIFNRVU9URTE6IGNhc2UgU1FVT1RFMjogY2FzZSBTUVVPVEUzOgorCQljYXNlIFNRVU9URTQ6IGNhc2UgU1FVT1RFNTogY2FzZSBTUVVPVEU2OiBjYXNlIFNRVU9URTc6CisJCSAgICAvLyB2ZXJpZnkgdGhlcmUgaXMgYSBieXRlIGZvbGxvd2luZyB0aGUgdGFnCisJCSAgICAvLyBpZiBub3QsIHNhdmUgc3RhdGUgYW5kIGJyZWFrIG91dAorCQkgICAgaWYoYnl0ZVBvcyA+PSBieXRlQnVmZmVyTGltaXQpIHsKKwkJCS0tYnl0ZVBvczsKKwkJCVN5c3RlbS5hcnJheWNvcHkoYnl0ZUJ1ZmZlciwgYnl0ZVBvcywKKwkJCQkJIGZCdWZmZXIsIDAsIAorCQkJCQkgYnl0ZUJ1ZmZlckxpbWl0IC0gYnl0ZVBvcyk7CisJCQlmQnVmZmVyTGVuZ3RoID0gYnl0ZUJ1ZmZlckxpbWl0IC0gYnl0ZVBvczsKKwkJCWJ5dGVQb3MgKz0gZkJ1ZmZlckxlbmd0aDsKKwkJCWJyZWFrIG1haW5Mb29wOyAKKwkJICAgIH0KKyAgICAgICAgICAgICAgICAKKwkJICAgIC8vIGlmIHRoZSBieXRlIGlzIGluIHRoZSByYW5nZSAweDAwIC0gMHg3RiwgdXNlCisJCSAgICAvLyBzdGF0aWMgd2luZG93IG4gb3RoZXJ3aXNlLCB1c2UgZHluYW1pYyB3aW5kb3cgbgorCQkgICAgaW50IGRCeXRlID0gYnl0ZUJ1ZmZlcltieXRlUG9zKytdICYgMHhGRjsKKwkJICAgIGNoYXJCdWZmZXJbdWNQb3MrK10gPSAoY2hhcikgCisJCQkoZEJ5dGUrIChkQnl0ZSA+PSAweDAwICYmIGRCeXRlIDwgMHg4MCAKKwkJCQkgPyBzT2Zmc2V0c1thQnl0ZSAtIFNRVU9URTBdIAorCQkJCSA6IChmT2Zmc2V0c1thQnl0ZSAtIFNRVU9URTBdIAorCQkJCSAgICAtIENPTVBSRVNTSU9OT0ZGU0VUKSkpOyAKKwkJICAgIGJyZWFrOworCisJCSAgICAvLyBoYW5kbGUgYWxsIGNoYW5nZSB0YWdzCisJCWNhc2UgU0NIQU5HRTA6IGNhc2UgU0NIQU5HRTE6IGNhc2UgU0NIQU5HRTI6IGNhc2UgU0NIQU5HRTM6CisJCWNhc2UgU0NIQU5HRTQ6IGNhc2UgU0NIQU5HRTU6IGNhc2UgU0NIQU5HRTY6IGNhc2UgU0NIQU5HRTc6CisJCSAgICBmQ3VycmVudFdpbmRvdyA9IGFCeXRlIC0gU0NIQU5HRTA7CisJCSAgICBicmVhazsKKworCQkgICAgLy8gaGFuZGxlIGFsbCBkZWZpbmUgdGFncworCQljYXNlIFNERUZJTkUwOiBjYXNlIFNERUZJTkUxOiBjYXNlIFNERUZJTkUyOiBjYXNlIFNERUZJTkUzOgorCQljYXNlIFNERUZJTkU0OiBjYXNlIFNERUZJTkU1OiBjYXNlIFNERUZJTkU2OiBjYXNlIFNERUZJTkU3OgorCQkgICAgLy8gdmVyaWZ5IHRoZXJlIGlzIGEgYnl0ZSBmb2xsb3dpbmcgdGhlIHRhZworCQkgICAgLy8gaWYgbm90LCBzYXZlIHN0YXRlIGFuZCBicmVhayBvdXQKKwkJICAgIGlmKGJ5dGVQb3MgPj0gYnl0ZUJ1ZmZlckxpbWl0KSB7CisJCQktLWJ5dGVQb3M7CisJCQlTeXN0ZW0uYXJyYXljb3B5KGJ5dGVCdWZmZXIsIGJ5dGVQb3MsCisJCQkJCSBmQnVmZmVyLCAwLCAKKwkJCQkJIGJ5dGVCdWZmZXJMaW1pdCAtIGJ5dGVQb3MpOworCQkJZkJ1ZmZlckxlbmd0aCA9IGJ5dGVCdWZmZXJMaW1pdCAtIGJ5dGVQb3M7CisJCQlieXRlUG9zICs9IGZCdWZmZXJMZW5ndGg7CisJCQlicmVhayBtYWluTG9vcDsgCisJCSAgICB9CisKKwkJICAgIGZDdXJyZW50V2luZG93ID0gYUJ5dGUgLSBTREVGSU5FMDsKKwkJICAgIGZPZmZzZXRzW2ZDdXJyZW50V2luZG93XSA9IAorCQkJc09mZnNldFRhYmxlW2J5dGVCdWZmZXJbYnl0ZVBvcysrXSAmIDB4RkZdOworCQkgICAgYnJlYWs7CisKKwkJICAgIC8vIGhhbmRsZSBkZWZpbmUgZXh0ZW5kZWQgdGFnCisJCWNhc2UgU0RFRklORVg6CisJCSAgICAvLyB2ZXJpZnkgd2UgaGF2ZSB0d28gYnl0ZXMgZm9sbG93aW5nIHRhZworCQkgICAgLy8gaWYgbm90LCBzYXZlIHN0YXRlIGFuZCBicmVhayBvdXQKKwkJICAgIGlmKChieXRlUG9zICsgMSkgPj0gYnl0ZUJ1ZmZlckxpbWl0ICkgeworCQkJLS1ieXRlUG9zOworCQkJU3lzdGVtLmFycmF5Y29weShieXRlQnVmZmVyLCBieXRlUG9zLAorCQkJCQkgZkJ1ZmZlciwgMCwgCisJCQkJCSBieXRlQnVmZmVyTGltaXQgLSBieXRlUG9zKTsKKwkJCWZCdWZmZXJMZW5ndGggPSBieXRlQnVmZmVyTGltaXQgLSBieXRlUG9zOworCQkJYnl0ZVBvcyArPSBmQnVmZmVyTGVuZ3RoOworCQkJYnJlYWsgbWFpbkxvb3A7IAorCQkgICAgfQorICAgICAgICAgICAgICAgIAorCQkgICAgYUJ5dGUgPSBieXRlQnVmZmVyW2J5dGVQb3MrK10gJiAweEZGOworCQkgICAgZkN1cnJlbnRXaW5kb3cgPSAoYUJ5dGUgJiAweEUwKSA+PiA1OworCQkgICAgZk9mZnNldHNbZkN1cnJlbnRXaW5kb3ddID0gMHgxMDAwMCArIAorCQkJKDB4ODAgKiAoKChhQnl0ZSAmIDB4MUYpIDw8IDgpIAorCQkJCSB8IChieXRlQnVmZmVyW2J5dGVQb3MrK10gJiAweEZGKSkpOworCQkgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAvLyByZXNlcnZlZCwgc2hvdWxkbid0IGhhcHBlbgorCQljYXNlIFNSRVNFUlZFRDoKKwkJICAgIGJyZWFrOworCisJCX0gLy8gZW5kIHN3aXRjaAorCSAgICB9IC8vIGVuZCB3aGlsZQorCSAgICBicmVhazsKKworCSAgICBjYXNlIFVOSUNPREVNT0RFOgorCQkvLyB1bmljb2RlIG1vZGUgZGVjb21wcmVzc2lvbiBsb29wCisJICAgIHVuaWNvZGVNb2RlTG9vcDoKKwkgICAgd2hpbGUoYnl0ZVBvcyA8IGJ5dGVCdWZmZXJMaW1pdCAmJiB1Y1BvcyA8IGNoYXJCdWZmZXJMaW1pdCkgeworCQlhQnl0ZSA9IGJ5dGVCdWZmZXJbYnl0ZVBvcysrXSAmIDB4RkY7CisJCXN3aXRjaChhQnl0ZSkgeworCQkgICAgLy8gaGFuZGxlIGFsbCBkZWZpbmUgdGFncworCQljYXNlIFVERUZJTkUwOiBjYXNlIFVERUZJTkUxOiBjYXNlIFVERUZJTkUyOiBjYXNlIFVERUZJTkUzOgorCQljYXNlIFVERUZJTkU0OiBjYXNlIFVERUZJTkU1OiBjYXNlIFVERUZJTkU2OiBjYXNlIFVERUZJTkU3OgorCQkgICAgLy8gdmVyaWZ5IHRoZXJlIGlzIGEgYnl0ZSBmb2xsb3dpbmcgdGFnCisJCSAgICAvLyBpZiBub3QsIHNhdmUgc3RhdGUgYW5kIGJyZWFrIG91dAorCQkgICAgaWYoYnl0ZVBvcyA+PSBieXRlQnVmZmVyTGltaXQgKSB7CisJCQktLWJ5dGVQb3M7CisJCQlTeXN0ZW0uYXJyYXljb3B5KGJ5dGVCdWZmZXIsIGJ5dGVQb3MsCisJCQkJCSBmQnVmZmVyLCAwLCAKKwkJCQkJIGJ5dGVCdWZmZXJMaW1pdCAtIGJ5dGVQb3MpOworCQkJZkJ1ZmZlckxlbmd0aCA9IGJ5dGVCdWZmZXJMaW1pdCAtIGJ5dGVQb3M7CisJCQlieXRlUG9zICs9IGZCdWZmZXJMZW5ndGg7CisJCQlicmVhayBtYWluTG9vcDsgCisJCSAgICB9CisgICAgICAgICAgICAgICAgCisJCSAgICBmQ3VycmVudFdpbmRvdyA9IGFCeXRlIC0gVURFRklORTA7CisJCSAgICBmT2Zmc2V0c1tmQ3VycmVudFdpbmRvd10gPSAKKwkJCXNPZmZzZXRUYWJsZVtieXRlQnVmZmVyW2J5dGVQb3MrK10gJiAweEZGXTsKKwkJICAgIGZNb2RlID0gU0lOR0xFQllURU1PREU7CisJCSAgICBicmVhayB1bmljb2RlTW9kZUxvb3A7CisJCSAgICAvL2JyZWFrOworCisJCSAgICAvLyBoYW5kbGUgZGVmaW5lIGV4dGVuZGVkIHRhZworCQljYXNlIFVERUZJTkVYOgorCQkgICAgLy8gdmVyaWZ5IHdlIGhhdmUgdHdvIGJ5dGVzIGZvbGxvd2luZyB0YWcKKwkJICAgIC8vIGlmIG5vdCwgc2F2ZSBzdGF0ZSBhbmQgYnJlYWsgb3V0CisJCSAgICBpZigoYnl0ZVBvcyArIDEpID49IGJ5dGVCdWZmZXJMaW1pdCApIHsKKwkJCS0tYnl0ZVBvczsKKwkJCVN5c3RlbS5hcnJheWNvcHkoYnl0ZUJ1ZmZlciwgYnl0ZVBvcywKKwkJCQkJIGZCdWZmZXIsIDAsIAorCQkJCQkgYnl0ZUJ1ZmZlckxpbWl0IC0gYnl0ZVBvcyk7CisJCQlmQnVmZmVyTGVuZ3RoID0gYnl0ZUJ1ZmZlckxpbWl0IC0gYnl0ZVBvczsKKwkJCWJ5dGVQb3MgKz0gZkJ1ZmZlckxlbmd0aDsKKwkJCWJyZWFrIG1haW5Mb29wOyAKKwkJICAgIH0KKwkJICAgIAorCQkgICAgYUJ5dGUgPSBieXRlQnVmZmVyW2J5dGVQb3MrK10gJiAweEZGOworCQkgICAgZkN1cnJlbnRXaW5kb3cgPSAoYUJ5dGUgJiAweEUwKSA+PiA1OworCQkgICAgZk9mZnNldHNbZkN1cnJlbnRXaW5kb3ddID0gMHgxMDAwMCArIAorCQkJKDB4ODAgKiAoKChhQnl0ZSAmIDB4MUYpIDw8IDgpIAorCQkJCSB8IChieXRlQnVmZmVyW2J5dGVQb3MrK10gJiAweEZGKSkpOworCQkgICAgZk1vZGUgPSBTSU5HTEVCWVRFTU9ERTsKKwkJICAgIGJyZWFrIHVuaWNvZGVNb2RlTG9vcDsKKwkJICAgIC8vYnJlYWs7CisKKwkJICAgIC8vIGhhbmRsZSBhbGwgY2hhbmdlIHRhZ3MKKwkJY2FzZSBVQ0hBTkdFMDogY2FzZSBVQ0hBTkdFMTogY2FzZSBVQ0hBTkdFMjogY2FzZSBVQ0hBTkdFMzoKKwkJY2FzZSBVQ0hBTkdFNDogY2FzZSBVQ0hBTkdFNTogY2FzZSBVQ0hBTkdFNjogY2FzZSBVQ0hBTkdFNzoKKwkJICAgIGZDdXJyZW50V2luZG93ID0gYUJ5dGUgLSBVQ0hBTkdFMDsKKwkJICAgIGZNb2RlID0gU0lOR0xFQllURU1PREU7CisJCSAgICBicmVhayB1bmljb2RlTW9kZUxvb3A7CisJCSAgICAvL2JyZWFrOworCisJCSAgICAvLyBxdW90ZSB1bmljb2RlCisJCWNhc2UgVVFVT1RFVToKKwkJICAgIC8vIHZlcmlmeSB3ZSBoYXZlIHR3byBieXRlcyBmb2xsb3dpbmcgdGFnCisJCSAgICAvLyBpZiBub3QsIHNhdmUgc3RhdGUgYW5kIGJyZWFrIG91dAorCQkgICAgaWYoYnl0ZVBvcyA+PSBieXRlQnVmZmVyTGltaXQgIC0gMSkgeworCQkJLS1ieXRlUG9zOworCQkJU3lzdGVtLmFycmF5Y29weShieXRlQnVmZmVyLCBieXRlUG9zLAorCQkJCQkgZkJ1ZmZlciwgMCwgCisJCQkJCSBieXRlQnVmZmVyTGltaXQgLSBieXRlUG9zKTsKKwkJCWZCdWZmZXJMZW5ndGggPSBieXRlQnVmZmVyTGltaXQgLSBieXRlUG9zOworCQkJYnl0ZVBvcyArPSBmQnVmZmVyTGVuZ3RoOworCQkJYnJlYWsgbWFpbkxvb3A7IAorCQkgICAgfQorICAgICAgICAgICAgICAgIAorCQkgICAgYUJ5dGUgPSBieXRlQnVmZmVyW2J5dGVQb3MrK107CisJCSAgICBjaGFyQnVmZmVyW3VjUG9zKytdID0gKGNoYXIpIAorCQkJKGFCeXRlIDw8IDggfCAoYnl0ZUJ1ZmZlcltieXRlUG9zKytdICYgMHhGRikpOworCQkgICAgYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJICAgIC8vIHZlcmlmeSB0aGVyZSBpcyBhIGJ5dGUgZm9sbG93aW5nIHRhZworCQkgICAgLy8gaWYgbm90LCBzYXZlIHN0YXRlIGFuZCBicmVhayBvdXQKKwkJICAgIGlmKGJ5dGVQb3MgPj0gYnl0ZUJ1ZmZlckxpbWl0ICkgeworCQkJLS1ieXRlUG9zOworCQkJU3lzdGVtLmFycmF5Y29weShieXRlQnVmZmVyLCBieXRlUG9zLAorCQkJCQkgZkJ1ZmZlciwgMCwgCisJCQkJCSBieXRlQnVmZmVyTGltaXQgLSBieXRlUG9zKTsKKwkJCWZCdWZmZXJMZW5ndGggPSBieXRlQnVmZmVyTGltaXQgLSBieXRlUG9zOworCQkJYnl0ZVBvcyArPSBmQnVmZmVyTGVuZ3RoOworCQkJYnJlYWsgbWFpbkxvb3A7IAorCQkgICAgfQorCisJCSAgICBjaGFyQnVmZmVyW3VjUG9zKytdID0gKGNoYXIpIAorCQkJKGFCeXRlIDw8IDggfCAoYnl0ZUJ1ZmZlcltieXRlUG9zKytdICYgMHhGRikpOworCQkgICAgYnJlYWs7CisKKwkJfSAvLyBlbmQgc3dpdGNoCisJICAgIH0gLy8gZW5kIHdoaWxlCisJICAgIGJyZWFrOworCSAgICAKKwkgICAgfSAvLyBlbmQgc3dpdGNoKCBmTW9kZSApCisJfSAvLyBlbmQgd2hpbGUKKworICAgICAgICAvLyBmaWxsIGluIG91dHB1dCBwYXJhbWV0ZXIKKwlpZihieXRlc1JlYWQgIT0gbnVsbCkKKwkgICAgYnl0ZXNSZWFkIFswXSA9IChieXRlUG9zIC0gYnl0ZUJ1ZmZlclN0YXJ0KTsKKworICAgICAgICAvLyByZXR1cm4gIyBvZiBjaGFycyB3cml0dGVuCisJcmV0dXJuICh1Y1BvcyAtIGNoYXJCdWZmZXJTdGFydCk7CisgICAgfQorCisgICAgLyoqIAorICAgICAqIFJlc2V0IHRoZSBkZWNvbXByZXNzb3IgdG8gaXRzIGluaXRpYWwgc3RhdGUuIAorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHZvaWQgcmVzZXQoKQorICAgIHsKKyAgICAgICAgLy8gcmVzZXQgZHluYW1pYyB3aW5kb3dzCisgICAgICAgIGZPZmZzZXRzWzBdID0gMHgwMDgwOyAgICAvLyBMYXRpbi0xCisgICAgICAgIGZPZmZzZXRzWzFdID0gMHgwMEMwOyAgICAvLyBMYXRpbi0xIFN1cHBsZW1lbnQgKyBMYXRpbiBFeHRlbmRlZC1BCisgICAgICAgIGZPZmZzZXRzWzJdID0gMHgwNDAwOyAgICAvLyBDeXJpbGxpYworICAgICAgICBmT2Zmc2V0c1szXSA9IDB4MDYwMDsgICAgLy8gQXJhYmljCisgICAgICAgIGZPZmZzZXRzWzRdID0gMHgwOTAwOyAgICAvLyBEZXZhbmFnYXJpCisgICAgICAgIGZPZmZzZXRzWzVdID0gMHgzMDQwOyAgICAvLyBIaXJhZ2FuYQorICAgICAgICBmT2Zmc2V0c1s2XSA9IDB4MzBBMDsgICAgLy8gS2F0YWthbmEKKyAgICAgICAgZk9mZnNldHNbN10gPSAweEZGMDA7ICAgIC8vIEZ1bGx3aWR0aCBBU0NJSQorCisKKyAgICAgICAgZkN1cnJlbnRXaW5kb3cgID0gMDsgICAgICAgICAgICAgICAgLy8gTWFrZSBjdXJyZW50IHdpbmRvdyBMYXRpbi0xCisgICAgICAgIGZNb2RlICAgICAgICAgICA9IFNJTkdMRUJZVEVNT0RFOyAgIC8vIEFsd2F5cyBzdGFydCBpbiBzaW5nbGUtYnl0ZSBtb2RlCisJZkJ1ZmZlckxlbmd0aCAgID0gMDsgICAgICAgICAgICAgICAgLy8gRW1wdHkgYnVmZmVyCisgICAgfQorfTsKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS90ZXh0L1VuaWNvZGVGaWx0ZXIuamF2YSBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L1VuaWNvZGVGaWx0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44YmRmOTEyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvVW5pY29kZUZpbHRlci5qYXZhCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS90ZXh0L1VuaWNvZGVGaWx0ZXIuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8xMi8wNSAwMToyMzowNiAkIAorICogJFJldmlzaW9uOiAxLjE0ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS50ZXh0OworCisvKioKKyAqIDxjb2RlPlVuaWNvZGVGaWx0ZXI8L2NvZGU+IGRlZmluZXMgYSBwcm90b2NvbCBmb3Igc2VsZWN0aW5nIGEKKyAqIHN1YnNldCBvZiB0aGUgZnVsbCByYW5nZSAoVSswMDAwIHRvIFUrRkZGRikgb2YgVW5pY29kZSBjaGFyYWN0ZXJzLgorICogQ3VycmVudGx5LCBmaWx0ZXJzIGFyZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggY2xhc3NlcyBsaWtlIHtAbGluaworICogVHJhbnNsaXRlcmF0b3J9IHRvIG9ubHkgcHJvY2VzcyBzZWxlY3RlZCBjaGFyYWN0ZXJzIHRocm91Z2ggYQorICogdHJhbnNmb3JtYXRpb24uCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworcHVibGljIGFic3RyYWN0IGNsYXNzIFVuaWNvZGVGaWx0ZXIgaW1wbGVtZW50cyBVbmljb2RlTWF0Y2hlciB7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIDx0dD50cnVlPC90dD4gZm9yIGNoYXJhY3RlcnMgdGhhdCBhcmUgaW4gdGhlIHNlbGVjdGVkCisgICAgICogc3Vic2V0LiAgSW4gb3RoZXIgd29yZHMsIGlmIGEgY2hhcmFjdGVyIGlzIDxiPnRvIGJlCisgICAgICogZmlsdGVyZWQ8L2I+LCB0aGVuIDx0dD5jb250YWlucygpPC90dD4gcmV0dXJucworICAgICAqIDxiPjx0dD5mYWxzZTwvdHQ+PC9iPi4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgYm9vbGVhbiBjb250YWlucyhpbnQgYyk7CisKKyAgICAvKioKKyAgICAgKiBEZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIFVuaWNvZGVNYXRjaGVyOjptYXRjaGVzKCkgZm9yIFVuaWNvZGUKKyAgICAgKiBmaWx0ZXJzLiAgTWF0Y2hlcyBhIHNpbmdsZSAxNi1iaXQgY29kZSB1bml0IGF0IG9mZnNldC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IG1hdGNoZXMoUmVwbGFjZWFibGUgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgaW50W10gb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gaW5jcmVtZW50YWwpIHsKKyAgICAgICAgaW50IGM7CisgICAgICAgIGlmIChvZmZzZXRbMF0gPCBsaW1pdCAmJgorICAgICAgICAgICAgY29udGFpbnMoYyA9IHRleHQuY2hhcjMyQXQob2Zmc2V0WzBdKSkpIHsKKyAgICAgICAgICAgIG9mZnNldFswXSArPSBVVEYxNi5nZXRDaGFyQ291bnQoYyk7CisgICAgICAgICAgICByZXR1cm4gVV9NQVRDSDsKKyAgICAgICAgfQorICAgICAgICBpZiAob2Zmc2V0WzBdID4gbGltaXQgJiYKKyAgICAgICAgICAgIGNvbnRhaW5zKGMgPSB0ZXh0LmNoYXIzMkF0KG9mZnNldFswXSkpKSB7CisgICAgICAgICAgICAvLyBCYWNrdXAgb2Zmc2V0IGJ5IDEsIHVubGVzcyB0aGUgcHJlY2VkaW5nIGNoYXJhY3RlciBpcyBhCisgICAgICAgICAgICAvLyBzdXJyb2dhdGUgcGFpciAtLSB0aGVuIGJhY2t1cCBieSAyIChrZWVwIG9mZnNldCBwb2ludGluZyBhdAorICAgICAgICAgICAgLy8gdGhlIGxlYWQgc3Vycm9nYXRlKS4KKyAgICAgICAgICAgIC0tb2Zmc2V0WzBdOworICAgICAgICAgICAgaWYgKG9mZnNldFswXSA+PSAwKSB7CisgICAgICAgICAgICAgICAgb2Zmc2V0WzBdIC09IFVURjE2LmdldENoYXJDb3VudCh0ZXh0LmNoYXIzMkF0KG9mZnNldFswXSkpIC0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBVX01BVENIOworICAgICAgICB9CisgICAgICAgIGlmIChpbmNyZW1lbnRhbCAmJiBvZmZzZXRbMF0gPT0gbGltaXQpIHsKKyAgICAgICAgICAgIHJldHVybiBVX1BBUlRJQUxfTUFUQ0g7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFVfTUlTTUFUQ0g7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3RleHQvVW5pY29kZUZpbHRlckxvZ2ljLmphdmEgYi9zcmMvY29tL2libS9pY3UvdGV4dC9Vbmljb2RlRmlsdGVyTG9naWMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42NWYyNWIzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvVW5pY29kZUZpbHRlckxvZ2ljLmphdmEKQEAgLTAsMCArMSwxNDkgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS90ZXh0L0F0dGljL1VuaWNvZGVGaWx0ZXJMb2dpYy5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzEyLzAzIDIxOjA3OjU3ICQgCisgKiAkUmV2aXNpb246IDEuOCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UudGV4dDsKKworLy8gRGlzYWJsZSBjb3ZlcmFnZSBhbmFseXNpcyBmb3IgdGhpcyBmaWxlCisvLy9DTE9WRVI6T0ZGCisKKy8qKgorICogPGNvZGU+VW5pY29kZUZpbHRlckxvZ2ljPC9jb2RlPiBwcm92aWRlcyBsb2dpY2FsIG9wZXJhdG9ycyBvbgorICoge0BsaW5rIFVuaWNvZGVGaWx0ZXJ9IG9iamVjdHMuICBUaGlzIGNsYXNzIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQ7CisgKiBpdCBjb25zaXN0cyBvbmx5IG9mIHN0YXRpYyBtZXRob2RzLiAgVGhlIHN0YXRpYyBtZXRob2RzIHJldHVybgorICogZmlsdGVyIG9iamVjdHMgdGhhdCBwZXJmb3JtIGxvZ2ljYWwgaW52ZXJzaW9uICg8dHQ+bm90PC90dD4pLAorICogaW50ZXJzZWN0aW9uICg8dHQ+YW5kPC90dD4pLCBvciB1bmlvbiAoPHR0Pm9yPC90dD4pIG9mIHRoZSBnaXZlbgorICogZmlsdGVyIG9iamVjdHMuCisgKgorICogQGRlcHJlY2F0ZWQgSUNVIDIuNCBUaGlzIHdpbGwgYmUgcmVtb3ZlZCBhZnRlciAyMDAzLUF1Zy0yOC4gVXNlIFVuaWNvZGVTZXQgbWV0aG9kcyBpbnN0ZWFkLgorICovCitwdWJsaWMgZmluYWwgY2xhc3MgVW5pY29kZUZpbHRlckxvZ2ljIHsKKworICAgIC8qKgorICAgICAqIFVuaWNvZGVGaWx0ZXIgc3ViY2xhc3MgdGhhdCBzdHVicyBvdXQgbWV0aG9kcyB3ZSBkb24ndCBpbXBsZW1lbnQuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgYWJzdHJhY3QgY2xhc3MgX1VGIGV4dGVuZHMgVW5pY29kZUZpbHRlciB7CisgICAgICAgIHB1YmxpYyBhYnN0cmFjdCBib29sZWFuIGNvbnRhaW5zKGludCBjKTsgLy8gcmVkZWNsYXJlCisgICAgICAgIHB1YmxpYyBTdHJpbmcgdG9QYXR0ZXJuKGJvb2xlYW4gZXNjYXBlVW5wcmludGFibGUpIHsKKyAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgYm9vbGVhbiBtYXRjaGVzSW5kZXhWYWx1ZShpbnQgdikgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHB1YmxpYyB2b2lkIGFkZE1hdGNoU2V0VG8oVW5pY29kZVNldCB0b1VuaW9uVG8pIHt9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIDx0dD5Vbmljb2RlRmlsdGVyPC90dD4gdGhhdCBpbXBsZW1lbnRzIHRoZSBpbnZlcnNlIG9mCisgICAgICogdGhlIGdpdmVuIGZpbHRlci4KKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40IFRoaXMgd2lsbCBiZSByZW1vdmVkIGFmdGVyIDIwMDMtQXVnLTI4LiBVc2UgVW5pY29kZVNldCBtZXRob2RzIGluc3RlYWQuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBVbmljb2RlRmlsdGVyIG5vdChmaW5hbCBVbmljb2RlRmlsdGVyIGYpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBfVUYoKSB7CisgICAgICAgICAgICBwdWJsaWMgYm9vbGVhbiBjb250YWlucyhpbnQgYykgeworICAgICAgICAgICAgICAgIHJldHVybiAhZi5jb250YWlucyhjKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgPHR0PlVuaWNvZGVGaWx0ZXI8L3R0PiB0aGF0IGltcGxlbWVudHMgYSBzaG9ydAorICAgICAqIGNpcmN1aXQgQU5EIG9mIHRoZSByZXN1bHQgb2YgdGhlIHR3byBnaXZlbiBmaWx0ZXJzLiAgVGhhdCBpcywKKyAgICAgKiBpZiA8dHQ+Zi5jb250YWlucygpPC90dD4gaXMgPHR0PmZhbHNlPC90dD4sIHRoZW4gPHR0PmcuY29udGFpbnMoKTwvdHQ+CisgICAgICogaXMgbm90IGNhbGxlZCwgYW5kIDx0dD5jb250YWlucygpPC90dD4gcmV0dXJucyA8dHQ+ZmFsc2U8L3R0Pi4KKyAgICAgKgorICAgICAqIDxwPkVpdGhlciA8dHQ+ZjwvdHQ+IG9yIDx0dD5nPC90dD4gbXVzdCBiZSBub24tbnVsbC4KKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40IFRoaXMgd2lsbCBiZSByZW1vdmVkIGFmdGVyIDIwMDMtQXVnLTI4LiBVc2UgVW5pY29kZVNldCBtZXRob2RzIGluc3RlYWQuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBVbmljb2RlRmlsdGVyIGFuZChmaW5hbCBVbmljb2RlRmlsdGVyIGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBVbmljb2RlRmlsdGVyIGcpIHsKKyAgICAgICAgaWYgKGYgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIGc7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGcgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIGY7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG5ldyBfVUYoKSB7CisgICAgICAgICAgICBwdWJsaWMgYm9vbGVhbiBjb250YWlucyhpbnQgYykgeworICAgICAgICAgICAgICAgIHJldHVybiBmLmNvbnRhaW5zKGMpICYmIGcuY29udGFpbnMoYyk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIDx0dD5Vbmljb2RlRmlsdGVyPC90dD4gdGhhdCBpbXBsZW1lbnRzIGEgc2hvcnQKKyAgICAgKiBjaXJjdWl0IEFORCBvZiB0aGUgcmVzdWx0IG9mIHRoZSBnaXZlbiBmaWx0ZXJzLiAgVGhhdCBpcywgaWYKKyAgICAgKiA8dHQ+ZltpXS5jb250YWlucygpPC90dD4gaXMgPHR0PmZhbHNlPC90dD4sIHRoZW4KKyAgICAgKiA8dHQ+ZltqXS5jb250YWlucygpPC90dD4gaXMgbm90IGNhbGxlZCwgd2hlcmUgPHR0PmogPiBpPC90dD4sIGFuZAorICAgICAqIDx0dD5jb250YWlucygpPC90dD4gcmV0dXJucyA8dHQ+ZmFsc2U8L3R0Pi4KKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40IFRoaXMgd2lsbCBiZSByZW1vdmVkIGFmdGVyIDIwMDMtQXVnLTI4LiBVc2UgVW5pY29kZVNldCBtZXRob2RzIGluc3RlYWQuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBVbmljb2RlRmlsdGVyIGFuZChmaW5hbCBVbmljb2RlRmlsdGVyW10gZikgeworICAgICAgICByZXR1cm4gbmV3IF9VRigpIHsKKyAgICAgICAgICAgIHB1YmxpYyBib29sZWFuIGNvbnRhaW5zKGludCBjKSB7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPGYubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFmW2ldLmNvbnRhaW5zKGMpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIDx0dD5Vbmljb2RlRmlsdGVyPC90dD4gdGhhdCBpbXBsZW1lbnRzIGEgc2hvcnQKKyAgICAgKiBjaXJjdWl0IE9SIG9mIHRoZSByZXN1bHQgb2YgdGhlIHR3byBnaXZlbiBmaWx0ZXJzLiAgVGhhdCBpcywgaWYKKyAgICAgKiA8dHQ+Zi5jb250YWlucygpPC90dD4gaXMgPHR0PnRydWU8L3R0PiwgdGhlbiA8dHQ+Zy5jb250YWlucygpPC90dD4gaXMKKyAgICAgKiBub3QgY2FsbGVkLCBhbmQgPHR0PmNvbnRhaW5zKCk8L3R0PiByZXR1cm5zIDx0dD50cnVlPC90dD4uCisgICAgICoKKyAgICAgKiA8cD5FaXRoZXIgPHR0PmY8L3R0PiBvciA8dHQ+ZzwvdHQ+IG11c3QgYmUgbm9uLW51bGwuCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNCBUaGlzIHdpbGwgYmUgcmVtb3ZlZCBhZnRlciAyMDAzLUF1Zy0yOC4gVXNlIFVuaWNvZGVTZXQgbWV0aG9kcyBpbnN0ZWFkLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgVW5pY29kZUZpbHRlciBvcihmaW5hbCBVbmljb2RlRmlsdGVyIGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIFVuaWNvZGVGaWx0ZXIgZykgeworICAgICAgICBpZiAoZiA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gZzsKKyAgICAgICAgfQorICAgICAgICBpZiAoZyA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gZjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbmV3IF9VRigpIHsKKyAgICAgICAgICAgIHB1YmxpYyBib29sZWFuIGNvbnRhaW5zKGludCBjKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGYuY29udGFpbnMoYykgfHwgZy5jb250YWlucyhjKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgPHR0PlVuaWNvZGVGaWx0ZXI8L3R0PiB0aGF0IGltcGxlbWVudHMgYSBzaG9ydAorICAgICAqIGNpcmN1aXQgT1Igb2YgdGhlIHJlc3VsdCBvZiB0aGUgZ2l2ZW4gZmlsdGVycy4gIFRoYXQgaXMsIGlmCisgICAgICogPHR0PmZbaV0uY29udGFpbnMoKTwvdHQ+IGlzIDx0dD5mYWxzZTwvdHQ+LCB0aGVuCisgICAgICogPHR0PmZbal0uY29udGFpbnMoKTwvdHQ+IGlzIG5vdCBjYWxsZWQsIHdoZXJlIDx0dD5qID4gaTwvdHQ+LCBhbmQKKyAgICAgKiA8dHQ+Y29udGFpbnMoKTwvdHQ+IHJldHVybnMgPHR0PnRydWU8L3R0Pi4KKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40IFRoaXMgd2lsbCBiZSByZW1vdmVkIGFmdGVyIDIwMDMtQXVnLTI4LiBVc2UgVW5pY29kZVNldCBtZXRob2RzIGluc3RlYWQuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBVbmljb2RlRmlsdGVyIG9yKGZpbmFsIFVuaWNvZGVGaWx0ZXJbXSBmKSB7CisgICAgICAgIHJldHVybiBuZXcgX1VGKCkgeworICAgICAgICAgICAgcHVibGljIGJvb2xlYW4gY29udGFpbnMoaW50IGMpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8Zi5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoZltpXS5jb250YWlucyhjKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KKworICAgIC8vIERpc2FibGUgaW5zdGFudGlhdGlvbiBhbmQgbWFrZSBDaGVja1RhZ3MgaGFwcHkKKyAgICBwcml2YXRlIFVuaWNvZGVGaWx0ZXJMb2dpYygpIHt9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvdGV4dC9Vbmljb2RlTWF0Y2hlci5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvVW5pY29kZU1hdGNoZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41ODZkY2MyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvVW5pY29kZU1hdGNoZXIuamF2YQpAQCAtMCwwICsxLDEzNSBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS90ZXh0L1VuaWNvZGVNYXRjaGVyLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMTIvMDUgMDE6MjM6MTUgJCAKKyAqICRSZXZpc2lvbjogMS44ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS50ZXh0OworCisvKioKKyAqIDxjb2RlPlVuaWNvZGVNYXRjaGVyPC9jb2RlPiBkZWZpbmVzIGEgcHJvdG9jb2wgZm9yIG9iamVjdHMgdGhhdCBjYW4KKyAqIG1hdGNoIGEgcmFuZ2Ugb2YgY2hhcmFjdGVycyBpbiBhIFJlcGxhY2VhYmxlIHN0cmluZy4KKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitwdWJsaWMgaW50ZXJmYWNlIFVuaWNvZGVNYXRjaGVyIHsKKworICAgIC8qKgorICAgICAqIENvbnN0YW50IHJldHVybmVkIGJ5IDxjb2RlPm1hdGNoZXMoKTwvY29kZT4gaW5kaWNhdGluZyBhCisgICAgICogbWlzbWF0Y2ggYmV0d2VlbiB0aGUgdGV4dCBhbmQgdGhpcyBtYXRjaGVyLiAgVGhlIHRleHQgY29udGFpbnMKKyAgICAgKiBhIGNoYXJhY3RlciB3aGljaCBkb2VzIG5vdCBtYXRjaCwgb3IgdGhlIHRleHQgZG9lcyBub3QgY29udGFpbgorICAgICAqIGFsbCBkZXNpcmVkIGNoYXJhY3RlcnMgZm9yIGEgbm9uLWluY3JlbWVudGFsIG1hdGNoLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFVfTUlTTUFUQ0ggPSAwOworICAgIAorICAgIC8qKgorICAgICAqIENvbnN0YW50IHJldHVybmVkIGJ5IDxjb2RlPm1hdGNoZXMoKTwvY29kZT4gaW5kaWNhdGluZyBhCisgICAgICogcGFydGlhbCBtYXRjaCBiZXR3ZWVuIHRoZSB0ZXh0IGFuZCB0aGlzIG1hdGNoZXIuICBUaGlzIHZhbHVlIGlzCisgICAgICogb25seSByZXR1cm5lZCBmb3IgaW5jcmVtZW50YWwgbWF0Y2ggb3BlcmF0aW9ucy4gIEFsbCBjaGFyYWN0ZXJzCisgICAgICogb2YgdGhlIHRleHQgbWF0Y2gsIGJ1dCBtb3JlIGNoYXJhY3RlcnMgYXJlIHJlcXVpcmVkIGZvciBhCisgICAgICogY29tcGxldGUgbWF0Y2guICBBbHRlcm5hdGl2ZWx5LCBmb3IgdmFyaWFibGUtbGVuZ3RoIG1hdGNoZXJzLAorICAgICAqIGFsbCBjaGFyYWN0ZXJzIG9mIHRoZSB0ZXh0IG1hdGNoLCBhbmQgaWYgbW9yZSBjaGFyYWN0ZXJzIHdlcmUKKyAgICAgKiBzdXBwbGllZCBhdCBsaW1pdCwgdGhleSBtaWdodCBhbHNvIG1hdGNoLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFVfUEFSVElBTF9NQVRDSCA9IDE7CisgICAgCisgICAgLyoqCisgICAgICogQ29uc3RhbnQgcmV0dXJuZWQgYnkgPGNvZGU+bWF0Y2hlcygpPC9jb2RlPiBpbmRpY2F0aW5nIGEKKyAgICAgKiBjb21wbGV0ZSBtYXRjaCBiZXR3ZWVuIHRoZSB0ZXh0IGFuZCB0aGlzIG1hdGNoZXIuICBGb3IgYW4KKyAgICAgKiBpbmNyZW1lbnRhbCB2YXJpYWJsZS1sZW5ndGggbWF0Y2gsIHRoaXMgdmFsdWUgaXMgcmV0dXJuZWQgaWYKKyAgICAgKiB0aGUgZ2l2ZW4gdGV4dCBtYXRjaGVzLCBhbmQgaXQgaXMga25vd24gdGhhdCBhZGRpdGlvbmFsCisgICAgICogY2hhcmFjdGVycyB3b3VsZCBub3QgYWx0ZXIgdGhlIGV4dGVudCBvZiB0aGUgbWF0Y2guCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVV9NQVRDSCA9IDI7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSBVTWF0Y2hEZWdyZWUgdmFsdWUgaW5kaWNhdGluZyB0aGUgZGVncmVlIG9mIG1hdGNoIGZvcgorICAgICAqIHRoZSBnaXZlbiB0ZXh0IGF0IHRoZSBnaXZlbiBvZmZzZXQuICBaZXJvLCBvbmUsIG9yIG1vcmUKKyAgICAgKiBjaGFyYWN0ZXJzIG1heSBiZSBtYXRjaGVkLgorICAgICAqCisgICAgICogTWF0Y2hpbmcgaW4gdGhlIGZvcndhcmQgZGlyZWN0aW9uIGlzIGluZGljYXRlZCBieSBsaW1pdCA+CisgICAgICogb2Zmc2V0LiAgQ2hhcmFjdGVycyBmcm9tIG9mZnNldCBmb3J3YXJkcyB0byBsaW1pdC0xIHdpbGwgYmUKKyAgICAgKiBjb25zaWRlcmVkIGZvciBtYXRjaGluZy4KKyAgICAgKiAKKyAgICAgKiBNYXRjaGluZyBpbiB0aGUgcmV2ZXJzZSBkaXJlY3Rpb24gaXMgaW5kaWNhdGVkIGJ5IGxpbWl0IDwKKyAgICAgKiBvZmZzZXQuICBDaGFyYWN0ZXJzIGZyb20gb2Zmc2V0IGJhY2t3YXJkcyB0byBsaW1pdCsxIHdpbGwgYmUKKyAgICAgKiBjb25zaWRlcmVkIGZvciBtYXRjaGluZy4KKyAgICAgKgorICAgICAqIElmIGxpbWl0ID09IG9mZnNldCB0aGVuIHRoZSBvbmx5IG1hdGNoIHBvc3NpYmxlIGlzIGEgemVybworICAgICAqIGNoYXJhY3RlciBtYXRjaCAod2hpY2ggc3ViY2xhc3NlcyBtYXkgaW1wbGVtZW50IGlmIGRlc2lyZWQpLgorICAgICAqCisgICAgICogSWYgVV9NQVRDSCBpcyByZXR1cm5lZCwgdGhlbiBhcyBhIHNpZGUgZWZmZWN0LCBhZHZhbmNlIHRoZQorICAgICAqIG9mZnNldCBwYXJhbWV0ZXIgdG8gdGhlIGxpbWl0IG9mIHRoZSBtYXRjaGVkIHN1YnN0cmluZy4gIEluIHRoZQorICAgICAqIGZvcndhcmQgZGlyZWN0aW9uLCB0aGlzIHdpbGwgYmUgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG1hdGNoZWQKKyAgICAgKiBjaGFyYWN0ZXIgcGx1cyBvbmUuICBJbiB0aGUgcmV2ZXJzZSBkaXJlY3Rpb24sIHRoaXMgd2lsbCBiZSB0aGUKKyAgICAgKiBpbmRleCBvZiB0aGUgbGFzdCBtYXRjaGVkIGNoYXJhY3RlciBtaW51cyBvbmUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gdGV4dCB0aGUgdGV4dCB0byBiZSBtYXRjaGVkCisgICAgICogQHBhcmFtIG9mZnNldCBvbiBpbnB1dCwgdGhlIGluZGV4IGludG8gdGV4dCBhdCB3aGljaCB0byBiZWdpbgorICAgICAqIG1hdGNoaW5nLiAgT24gb3V0cHV0LCB0aGUgbGltaXQgb2YgdGhlIG1hdGNoZWQgdGV4dC4gIFRoZQorICAgICAqIG51bWJlciBvZiBtYXRjaGVkIGNoYXJhY3RlcnMgaXMgdGhlIG91dHB1dCB2YWx1ZSBvZiBvZmZzZXQKKyAgICAgKiBtaW51cyB0aGUgaW5wdXQgdmFsdWUuICBPZmZzZXQgc2hvdWxkIGFsd2F5cyBwb2ludCB0byB0aGUKKyAgICAgKiBISUdIIFNVUlJPR0FURSAobGVhZGluZyBjb2RlIHVuaXQpIG9mIGEgcGFpciBvZiBzdXJyb2dhdGVzLAorICAgICAqIGJvdGggb24gZW50cnkgYW5kIHVwb24gcmV0dXJuLgorICAgICAqIEBwYXJhbSBsaW1pdCB0aGUgbGltaXQgaW5kZXggb2YgdGV4dCB0byBiZSBtYXRjaGVkLiAgR3JlYXRlcgorICAgICAqIHRoYW4gb2Zmc2V0IGZvciBhIGZvcndhcmQgZGlyZWN0aW9uIG1hdGNoLCBsZXNzIHRoYW4gb2Zmc2V0IGZvcgorICAgICAqIGEgYmFja3dhcmQgZGlyZWN0aW9uIG1hdGNoLiAgVGhlIGxhc3QgY2hhcmFjdGVyIHRvIGJlCisgICAgICogY29uc2lkZXJlZCBmb3IgbWF0Y2hpbmcgd2lsbCBiZSB0ZXh0LmNoYXJBdChsaW1pdC0xKSBpbiB0aGUKKyAgICAgKiBmb3J3YXJkIGRpcmVjdGlvbiBvciB0ZXh0LmNoYXJBdChsaW1pdCsxKSBpbiB0aGUgYmFja3dhcmQKKyAgICAgKiBkaXJlY3Rpb24uCisgICAgICogQHBhcmFtIGluY3JlbWVudGFsIGlmIFRSVUUsIHRoZW4gYXNzdW1lIGZ1cnRoZXIgY2hhcmFjdGVycyBtYXkKKyAgICAgKiBiZSBpbnNlcnRlZCBhdCBsaW1pdCBhbmQgY2hlY2sgZm9yIHBhcnRpYWwgbWF0Y2hpbmcuICBPdGhlcndpc2UKKyAgICAgKiBhc3N1bWUgdGhlIHRleHQgYXMgZ2l2ZW4gaXMgY29tcGxldGUuCisgICAgICogQHJldHVybiBhIG1hdGNoIGRlZ3JlZSB2YWx1ZSBpbmRpY2F0aW5nIGEgZnVsbCBtYXRjaCwgYSBwYXJ0aWFsCisgICAgICogbWF0Y2gsIG9yIGEgbWlzbWF0Y2guICBJZiBpbmNyZW1lbnRhbCBpcyBGQUxTRSB0aGVuCisgICAgICogVV9QQVJUSUFMX01BVENIIHNob3VsZCBuZXZlciBiZSByZXR1cm5lZC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgaW50IG1hdGNoZXMoUmVwbGFjZWFibGUgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50W10gb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gaW5jcmVtZW50YWwpOworCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIG1hdGNoZXIuICBJZiB0aGUgcmVzdWx0IG9mCisgICAgICogY2FsbGluZyB0aGlzIGZ1bmN0aW9uIGlzIHBhc3NlZCB0byB0aGUgYXBwcm9wcmlhdGUgcGFyc2VyLCBpdAorICAgICAqIHdpbGwgcHJvZHVjZSBhbm90aGVyIG1hdGNoZXIgdGhhdCBpcyBlcXVhbCB0byB0aGlzIG9uZS4KKyAgICAgKiBAcGFyYW0gZXNjYXBlVW5wcmludGFibGUgaWYgVFJVRSB0aGVuIGNvbnZlcnQgdW5wcmludGFibGUKKyAgICAgKiBjaGFyYWN0ZXIgdG8gdGhlaXIgaGV4IGVzY2FwZSByZXByZXNlbnRhdGlvbnMsIFxcdXh4eHggb3IKKyAgICAgKiBcXFV4eHh4eHh4eC4gIFVucHJpbnRhYmxlIGNoYXJhY3RlcnMgYXJlIHRob3NlIG90aGVyIHRoYW4KKyAgICAgKiBVKzAwMEEsIFUrMDAyMC4uVSswMDdFLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBTdHJpbmcgdG9QYXR0ZXJuKGJvb2xlYW4gZXNjYXBlVW5wcmludGFibGUpOworCisgICAgLyoqCisgICAgICogUmV0dXJucyBUUlVFIGlmIHRoaXMgbWF0Y2hlciB3aWxsIG1hdGNoIGEgY2hhcmFjdGVyIGMsIHdoZXJlIGMKKyAgICAgKiAmIDB4RkYgPT0gdiwgYXQgb2Zmc2V0LCBpbiB0aGUgZm9yd2FyZCBkaXJlY3Rpb24gKHdpdGggbGltaXQgPgorICAgICAqIG9mZnNldCkuICBUaGlzIGlzIHVzZWQgYnkgPHR0PlJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yPC90dD4gZm9yCisgICAgICogaW5kZXhpbmcuCisgICAgICoKKyAgICAgKiA8cD5Ob3RlOiAgVGhpcyBBUEkgdXNlcyBhbiBpbnQgZXZlbiB0aG91Z2ggdGhlIHZhbHVlIHdpbGwgYmUKKyAgICAgKiByZXN0cmljdGVkIHRvIDggYml0cyBpbiBvcmRlciB0byBhdm9pZCBjb21wbGljYXRpb25zIHdpdGgKKyAgICAgKiBzaWduZWRuZXNzIChieXRlcyBjb252ZXJ0IHRvIGludHMgaW4gdGhlIHJhbmdlIC0xMjguLjEyNykuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IGJvb2xlYW4gbWF0Y2hlc0luZGV4VmFsdWUoaW50IHYpOworCisgICAgLyoqCisgICAgICogVW5pb24gdGhlIHNldCBvZiBhbGwgY2hhcmFjdGVycyB0aGF0IG1heSBiZSBtYXRjaGVkIGJ5IHRoaXMgb2JqZWN0CisgICAgICogaW50byB0aGUgZ2l2ZW4gc2V0LgorICAgICAqIEBwYXJhbSB0b1VuaW9uVG8gdGhlIHNldCBpbnRvIHdoaWNoIHRvIHVuaW9uIHRoZSBzb3VyY2UgY2hhcmFjdGVycworICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IHZvaWQgYWRkTWF0Y2hTZXRUbyhVbmljb2RlU2V0IHRvVW5pb25Ubyk7Cit9CisKKy8vZW9mCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvdGV4dC9Vbmljb2RlTmFtZVRyYW5zbGl0ZXJhdG9yLmphdmEgYi9zcmMvY29tL2libS9pY3UvdGV4dC9Vbmljb2RlTmFtZVRyYW5zbGl0ZXJhdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZDczNWI2NwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L1VuaWNvZGVOYW1lVHJhbnNsaXRlcmF0b3IuamF2YQpAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L3RleHQvVW5pY29kZU5hbWVUcmFuc2xpdGVyYXRvci5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzA5LzA5IDE2OjExOjA3ICQgCisgKiAkUmV2aXNpb246IDEuOSAkCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UudGV4dDsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ltcG9ydCBjb20uaWJtLmljdS5sYW5nLio7CisKKy8qKgorICogQSB0cmFuc2xpdGVyYXRvciB0aGF0IHBlcmZvcm1zIGNoYXJhY3RlciB0byBuYW1lIG1hcHBpbmcuCisgKiBJdCBnZW5lcmF0ZXMgdGhlIFBlcmwgc3ludGF4IFxOe25hbWV9LgorICogQGF1dGhvciBBbGFuIExpdQorICovCitjbGFzcyBVbmljb2RlTmFtZVRyYW5zbGl0ZXJhdG9yIGV4dGVuZHMgVHJhbnNsaXRlcmF0b3IgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBfSUQgPSAiQW55LU5hbWUiOworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBPUEVOX0RFTElNID0gIlxcTnsiOworICAgIHN0YXRpYyBmaW5hbCBjaGFyIENMT1NFX0RFTElNID0gJ30nOworICAgIHN0YXRpYyBmaW5hbCBpbnQgT1BFTl9ERUxJTV9MRU4gPSAzOworCisgICAgLyoqCisgICAgICogU3lzdGVtIHJlZ2lzdHJhdGlvbiBob29rLgorICAgICAqLworICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyKCkgeworICAgICAgICBUcmFuc2xpdGVyYXRvci5yZWdpc3RlckZhY3RvcnkoX0lELCBuZXcgVHJhbnNsaXRlcmF0b3IuRmFjdG9yeSgpIHsKKyAgICAgICAgICAgIHB1YmxpYyBUcmFuc2xpdGVyYXRvciBnZXRJbnN0YW5jZShTdHJpbmcgSUQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFVuaWNvZGVOYW1lVHJhbnNsaXRlcmF0b3IobnVsbCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSB0cmFuc2xpdGVyYXRvci4KKyAgICAgKi8KKyAgICBwdWJsaWMgVW5pY29kZU5hbWVUcmFuc2xpdGVyYXRvcihVbmljb2RlRmlsdGVyIGZpbHRlcikgeworICAgICAgICBzdXBlcihfSUQsIGZpbHRlcik7CisgICAgfQorCisgICAgLyoqCisgICAgICogSW1wbGVtZW50cyB7QGxpbmsgVHJhbnNsaXRlcmF0b3IjaGFuZGxlVHJhbnNsaXRlcmF0ZX0uCisgICAgICovCisgICAgcHJvdGVjdGVkIHZvaWQgaGFuZGxlVHJhbnNsaXRlcmF0ZShSZXBsYWNlYWJsZSB0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zaXRpb24gb2Zmc2V0cywgYm9vbGVhbiBpc0luY3JlbWVudGFsKSB7CisgICAgICAgIGludCBjdXJzb3IgPSBvZmZzZXRzLnN0YXJ0OworICAgICAgICBpbnQgbGltaXQgPSBvZmZzZXRzLmxpbWl0OworICAgICAgICAKKyAgICAgICAgU3RyaW5nQnVmZmVyIHN0ciA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgc3RyLmFwcGVuZChPUEVOX0RFTElNKTsKKyAgICAgICAgaW50IGxlbjsKKyAgICAgICAgU3RyaW5nIG5hbWU7CisgICAgICAgIAorICAgICAgICB3aGlsZSAoY3Vyc29yIDwgbGltaXQpIHsKKyAgICAgICAgICAgIGludCBjID0gdGV4dC5jaGFyMzJBdChjdXJzb3IpOworICAgICAgICAgICAgaWYgKChuYW1lPVVDaGFyYWN0ZXIuZ2V0RXh0ZW5kZWROYW1lKGMpKSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgc3RyLnNldExlbmd0aChPUEVOX0RFTElNX0xFTik7CisgICAgICAgICAgICAgICAgc3RyLmFwcGVuZChuYW1lKS5hcHBlbmQoQ0xPU0VfREVMSU0pOworCisgICAgICAgICAgICAgICAgaW50IGNsZW4gPSBVVEYxNi5nZXRDaGFyQ291bnQoYyk7CisgICAgICAgICAgICAgICAgdGV4dC5yZXBsYWNlKGN1cnNvciwgY3Vyc29yK2NsZW4sIHN0ci50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICBsZW4gPSBzdHIubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgY3Vyc29yICs9IGxlbjsgLy8gYWR2YW5jZSBjdXJzb3IgYnkgMSBhbmQgYWRqdXN0IGZvciBuZXcgdGV4dAorICAgICAgICAgICAgICAgIGxpbWl0ICs9IGxlbi1jbGVuOyAvLyBjaGFuZ2UgaW4gbGVuZ3RoCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICsrY3Vyc29yOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgb2Zmc2V0cy5jb250ZXh0TGltaXQgKz0gbGltaXQgLSBvZmZzZXRzLmxpbWl0OworICAgICAgICBvZmZzZXRzLmxpbWl0ID0gbGltaXQ7CisgICAgICAgIG9mZnNldHMuc3RhcnQgPSBjdXJzb3I7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3RleHQvVW5pY29kZVJlcGxhY2VyLmphdmEgYi9zcmMvY29tL2libS9pY3UvdGV4dC9Vbmljb2RlUmVwbGFjZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi40OWM0YzM3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvVW5pY29kZVJlcGxhY2VyLmphdmEKQEAgLTAsMCArMSw2NCBAQAorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICBDb3B5cmlnaHQgKGMpIDIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24KKyogICBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICBEYXRlICAgICAgICBOYW1lICAgICAgICBEZXNjcmlwdGlvbgorKiAgIDAxLzE0LzIwMDIgIGFsaXUgICAgICAgIENyZWF0aW9uLgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKworcGFja2FnZSBjb20uaWJtLmljdS50ZXh0OworCisvKioKKyAqIDxjb2RlPlVuaWNvZGVSZXBsYWNlcjwvY29kZT4gZGVmaW5lcyBhIHByb3RvY29sIGZvciBvYmplY3RzIHRoYXQKKyAqIHJlcGxhY2UgYSByYW5nZSBvZiBjaGFyYWN0ZXJzIGluIGEgUmVwbGFjZWFibGUgc3RyaW5nIHdpdGggb3V0cHV0CisgKiB0ZXh0LiAgVGhlIHJlcGxhY2VtZW50IGlzIGRvbmUgdmlhIHRoZSBSZXBsYWNlYWJsZSBBUEkgc28gYXMgdG8KKyAqIHByZXNlcnZlIG91dC1vZi1iYW5kIGRhdGEuCisgKiBAYXV0aG9yIEFsYW4gTGl1CisgKi8KK2ludGVyZmFjZSBVbmljb2RlUmVwbGFjZXIgeworCisgICAgLyoqCisgICAgICogUmVwbGFjZSBjaGFyYWN0ZXJzIGluICd0ZXh0JyBmcm9tICdzdGFydCcgdG8gJ2xpbWl0JyB3aXRoIHRoZQorICAgICAqIG91dHB1dCB0ZXh0IG9mIHRoaXMgb2JqZWN0LiAgVXBkYXRlIHRoZSAnY3Vyc29yJyBwYXJhbWV0ZXIgdG8KKyAgICAgKiBnaXZlIHRoZSBjdXJzb3IgcG9zaXRpb24gYW5kIHJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZQorICAgICAqIHJlcGxhY2VtZW50IHRleHQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gdGV4dCB0aGUgdGV4dCB0byBiZSBtYXRjaGVkCisgICAgICogQHBhcmFtIHN0YXJ0IGluY2x1c2l2ZSBzdGFydCBpbmRleCBvZiB0ZXh0IHRvIGJlIHJlcGxhY2VkCisgICAgICogQHBhcmFtIGxpbWl0IGV4Y2x1c2l2ZSBlbmQgaW5kZXggb2YgdGV4dCB0byBiZSByZXBsYWNlZDsKKyAgICAgKiBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBzdGFydAorICAgICAqIEBwYXJhbSBjdXJzb3Igb3V0cHV0IHBhcmFtZXRlciBmb3IgdGhlIGN1cnNvciBwb3NpdGlvbi4KKyAgICAgKiBOb3QgYWxsIHJlcGxhY2VyIG9iamVjdHMgd2lsbCB1cGRhdGUgdGhpcywgYnV0IGluIGEgY29tcGxldGUKKyAgICAgKiB0cmVlIG9mIHJlcGxhY2VyIG9iamVjdHMsIHJlcHJlc2VudGluZyB0aGUgZW50aXJlIG91dHB1dCBzaWRlCisgICAgICogb2YgYSB0cmFuc2xpdGVyYXRpb24gcnVsZSwgYXQgbGVhc3Qgb25lIG11c3QgdXBkYXRlIGl0LgorICAgICAqIEByZXR1cm4gdGhlIG51bWJlciBvZiAxNi1iaXQgY29kZSB1bml0cyBpbiB0aGUgdGV4dCByZXBsYWNpbmcKKyAgICAgKiB0aGUgY2hhcmFjdGVycyBhdCBvZmZzZXRzIHN0YXJ0Li4obGltaXQtMSkgaW4gdGV4dAorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBpbnQgcmVwbGFjZShSZXBsYWNlYWJsZSB0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50W10gY3Vyc29yKTsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyByZXBsYWNlci4gIElmIHRoZQorICAgICAqIHJlc3VsdCBvZiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gaXMgcGFzc2VkIHRvIHRoZSBhcHByb3ByaWF0ZQorICAgICAqIHBhcnNlciwgdHlwaWNhbGx5IFRyYW5zbGl0ZXJhdG9yUGFyc2VyLCBpdCB3aWxsIHByb2R1Y2UgYW5vdGhlcgorICAgICAqIHJlcGxhY2VyIHRoYXQgaXMgZXF1YWwgdG8gdGhpcyBvbmUuCisgICAgICogQHBhcmFtIGVzY2FwZVVucHJpbnRhYmxlIGlmIFRSVUUgdGhlbiBjb252ZXJ0IHVucHJpbnRhYmxlCisgICAgICogY2hhcmFjdGVyIHRvIHRoZWlyIGhleCBlc2NhcGUgcmVwcmVzZW50YXRpb25zLCBcXHV4eHh4IG9yCisgICAgICogXFxVeHh4eHh4eHguICBVbnByaW50YWJsZSBjaGFyYWN0ZXJzIGFyZSBkZWZpbmVkIGJ5CisgICAgICogVXRpbGl0eS5pc1VucHJpbnRhYmxlKCkuCisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IFN0cmluZyB0b1JlcGxhY2VyUGF0dGVybihib29sZWFuIGVzY2FwZVVucHJpbnRhYmxlKTsKKworICAgIC8qKgorICAgICAqIFVuaW9uIHRoZSBzZXQgb2YgYWxsIGNoYXJhY3RlcnMgdGhhdCBtYXkgb3V0cHV0IGJ5IHRoaXMgb2JqZWN0CisgICAgICogaW50byB0aGUgZ2l2ZW4gc2V0LgorICAgICAqIEBwYXJhbSB0b1VuaW9uVG8gdGhlIHNldCBpbnRvIHdoaWNoIHRvIHVuaW9uIHRoZSBvdXRwdXQgY2hhcmFjdGVycworICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIGFkZFJlcGxhY2VtZW50U2V0VG8oVW5pY29kZVNldCB0b1VuaW9uVG8pOworfQorCisvL2VvZgpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3RleHQvVW5pY29kZVNldC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvVW5pY29kZVNldC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjZkNTcyY2MKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdGV4dC9Vbmljb2RlU2V0LmphdmEKQEAgLTAsMCArMSwzMDE0IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvdGV4dC9Vbmljb2RlU2V0LmphdmEsdiAkCisgKiAkRGF0ZTogMjAwMi8xMi8xMSAxOTo0MTowMyAkCisgKiAkUmV2aXNpb246IDEuODMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LnRleHQ7CisKK2ltcG9ydCBqYXZhLnRleHQuKjsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLlV0aWxpdHk7CitpbXBvcnQgY29tLmlibS5pY3UubGFuZy4qOworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuVUNoYXJhY3RlclByb3BlcnR5OworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuVVByb3BlcnR5QWxpYXNlczsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLlNvcnRlZFNldFJlbGF0aW9uOworaW1wb3J0IGphdmEudXRpbC5UcmVlU2V0OworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKKworLyoqCisgKiBBIG11dGFibGUgc2V0IG9mIFVuaWNvZGUgY2hhcmFjdGVycyBhbmQgbXVsdGljaGFyYWN0ZXIgc3RyaW5ncy4gIE9iamVjdHMgb2YgdGhpcyBjbGFzcworICogcmVwcmVzZW50IDxlbT5jaGFyYWN0ZXIgY2xhc3NlczwvZW0+IHVzZWQgaW4gcmVndWxhciBleHByZXNzaW9ucy4KKyAqIEEgY2hhcmFjdGVyIHNwZWNpZmllcyBhIHN1YnNldCBvZiBVbmljb2RlIGNvZGUgcG9pbnRzLiAgTGVnYWwKKyAqIGNvZGUgcG9pbnRzIGFyZSBVKzAwMDAgdG8gVSsxMEZGRkYsIGluY2x1c2l2ZS4KKyAqCisgKiA8cD5UaGUgVW5pY29kZVNldCBjbGFzcyBpcyBub3QgZGVzaWduZWQgdG8gYmUgc3ViY2xhc3NlZC4KKyAqCisgKiA8cD48Y29kZT5Vbmljb2RlU2V0PC9jb2RlPiBzdXBwb3J0cyB0d28gQVBJcy4gVGhlIGZpcnN0IGlzIHRoZQorICogPGVtPm9wZXJhbmQ8L2VtPiBBUEkgdGhhdCBhbGxvd3MgdGhlIGNhbGxlciB0byBtb2RpZnkgdGhlIHZhbHVlIG9mCisgKiBhIDxjb2RlPlVuaWNvZGVTZXQ8L2NvZGU+IG9iamVjdC4gSXQgY29uZm9ybXMgdG8gSmF2YSAyJ3MKKyAqIDxjb2RlPmphdmEudXRpbC5TZXQ8L2NvZGU+IGludGVyZmFjZSwgYWx0aG91Z2gKKyAqIDxjb2RlPlVuaWNvZGVTZXQ8L2NvZGU+IGRvZXMgbm90IGFjdHVhbGx5IGltcGxlbWVudCB0aGF0CisgKiBpbnRlcmZhY2UuIEFsbCBtZXRob2RzIG9mIDxjb2RlPlNldDwvY29kZT4gYXJlIHN1cHBvcnRlZCwgd2l0aCB0aGUKKyAqIG1vZGlmaWNhdGlvbiB0aGF0IHRoZXkgdGFrZSBhIGNoYXJhY3RlciByYW5nZSBvciBzaW5nbGUgY2hhcmFjdGVyCisgKiBpbnN0ZWFkIG9mIGFuIDxjb2RlPk9iamVjdDwvY29kZT4sIGFuZCB0aGV5IHRha2UgYQorICogPGNvZGU+VW5pY29kZVNldDwvY29kZT4gaW5zdGVhZCBvZiBhIDxjb2RlPkNvbGxlY3Rpb248L2NvZGU+LiAgVGhlCisgKiBvcGVyYW5kIEFQSSBtYXkgYmUgdGhvdWdodCBvZiBpbiB0ZXJtcyBvZiBib29sZWFuIGxvZ2ljOiBhIGJvb2xlYW4KKyAqIE9SIGlzIGltcGxlbWVudGVkIGJ5IDxjb2RlPmFkZDwvY29kZT4sIGEgYm9vbGVhbiBBTkQgaXMgaW1wbGVtZW50ZWQKKyAqIGJ5IDxjb2RlPnJldGFpbjwvY29kZT4sIGEgYm9vbGVhbiBYT1IgaXMgaW1wbGVtZW50ZWQgYnkKKyAqIDxjb2RlPmNvbXBsZW1lbnQ8L2NvZGU+IHRha2luZyBhbiBhcmd1bWVudCwgYW5kIGEgYm9vbGVhbiBOT1QgaXMKKyAqIGltcGxlbWVudGVkIGJ5IDxjb2RlPmNvbXBsZW1lbnQ8L2NvZGU+IHdpdGggbm8gYXJndW1lbnQuICBJbiB0ZXJtcworICogb2YgdHJhZGl0aW9uYWwgc2V0IHRoZW9yeSBmdW5jdGlvbiBuYW1lcywgPGNvZGU+YWRkPC9jb2RlPiBpcyBhCisgKiB1bmlvbiwgPGNvZGU+cmV0YWluPC9jb2RlPiBpcyBhbiBpbnRlcnNlY3Rpb24sIDxjb2RlPnJlbW92ZTwvY29kZT4KKyAqIGlzIGFuIGFzeW1tZXRyaWMgZGlmZmVyZW5jZSwgYW5kIDxjb2RlPmNvbXBsZW1lbnQ8L2NvZGU+IHdpdGggbm8KKyAqIGFyZ3VtZW50IGlzIGEgc2V0IGNvbXBsZW1lbnQgd2l0aCByZXNwZWN0IHRvIHRoZSBzdXBlcnNldCByYW5nZQorICogPGNvZGU+TUlOX1ZBTFVFLU1BWF9WQUxVRTwvY29kZT4KKyAqCisgKiA8cD5UaGUgc2Vjb25kIEFQSSBpcyB0aGUKKyAqIDxjb2RlPmFwcGx5UGF0dGVybigpPC9jb2RlPi88Y29kZT50b1BhdHRlcm4oKTwvY29kZT4gQVBJIGZyb20gdGhlCisgKiA8Y29kZT5qYXZhLnRleHQuRm9ybWF0PC9jb2RlPi1kZXJpdmVkIGNsYXNzZXMuICBVbmxpa2UgdGhlCisgKiBtZXRob2RzIHRoYXQgYWRkIGNoYXJhY3RlcnMsIGFkZCBjYXRlZ29yaWVzLCBhbmQgY29udHJvbCB0aGUgbG9naWMKKyAqIG9mIHRoZSBzZXQsIHRoZSBtZXRob2QgPGNvZGU+YXBwbHlQYXR0ZXJuKCk8L2NvZGU+IHNldHMgYWxsCisgKiBhdHRyaWJ1dGVzIG9mIGEgPGNvZGU+VW5pY29kZVNldDwvY29kZT4gYXQgb25jZSwgYmFzZWQgb24gYQorICogc3RyaW5nIHBhdHRlcm4uCisgKgorICogPHA+PGI+UGF0dGVybiBzeW50YXg8L2I+PC9wPgorICoKKyAqIFBhdHRlcm5zIGFyZSBhY2NlcHRlZCBieSB0aGUgY29uc3RydWN0b3JzIGFuZCB0aGUKKyAqIDxjb2RlPmFwcGx5UGF0dGVybigpPC9jb2RlPiBtZXRob2RzIGFuZCByZXR1cm5lZCBieSB0aGUKKyAqIDxjb2RlPnRvUGF0dGVybigpPC9jb2RlPiBtZXRob2QuICBUaGVzZSBwYXR0ZXJucyBmb2xsb3cgYSBzeW50YXgKKyAqIHNpbWlsYXIgdG8gdGhhdCBlbXBsb3llZCBieSB2ZXJzaW9uIDggcmVndWxhciBleHByZXNzaW9uIGNoYXJhY3RlcgorICogY2xhc3Nlcy4gIEhlcmUgYXJlIHNvbWUgc2ltcGxlIGV4YW1wbGVzOgorICoKKyAqIDxibG9ja3F1b3RlPgorICogICA8dGFibGU+CisgKiAgICAgPHRyIGFsaWduPSJ0b3AiPgorICogICAgICAgPHRkIG5vd3JhcCB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiPjxjb2RlPltdPC9jb2RlPjwvdGQ+CisgKiAgICAgICA8dGQgdmFsaWduPSJ0b3AiPk5vIGNoYXJhY3RlcnM8L3RkPgorICogICAgIDwvdHI+PHRyIGFsaWduPSJ0b3AiPgorICogICAgICAgPHRkIG5vd3JhcCB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiPjxjb2RlPlthXTwvY29kZT48L3RkPgorICogICAgICAgPHRkIHZhbGlnbj0idG9wIj5UaGUgY2hhcmFjdGVyICdhJzwvdGQ+CisgKiAgICAgPC90cj48dHIgYWxpZ249InRvcCI+CisgKiAgICAgICA8dGQgbm93cmFwIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCI+PGNvZGU+W2FlXTwvY29kZT48L3RkPgorICogICAgICAgPHRkIHZhbGlnbj0idG9wIj5UaGUgY2hhcmFjdGVycyAnYScgYW5kICdlJzwvdGQ+CisgKiAgICAgPC90cj4KKyAqICAgICA8dHI+CisgKiAgICAgICA8dGQgbm93cmFwIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCI+PGNvZGU+W2EtZV08L2NvZGU+PC90ZD4KKyAqICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIGNoYXJhY3RlcnMgJ2EnIHRocm91Z2ggJ2UnIGluY2x1c2l2ZSwgaW4gVW5pY29kZSBjb2RlIAorICogICAgICAgcG9pbnQgb3JkZXI8L3RkPgorICogICAgIDwvdHI+CisgKiAgICAgPHRyPgorICogICAgICAgPHRkIG5vd3JhcCB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiPjxjb2RlPltcdTAwNUN1NEUwMV08L2NvZGU+PC90ZD4KKyAqICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIGNoYXJhY3RlciBVKzRFMDE8L3RkPgorICogICAgIDwvdHI+CisgKiAgICAgPHRyPgorICogICAgICAgPHRkIG5vd3JhcCB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiPjxjb2RlPlthe2FifXthY31dPC9jb2RlPjwvdGQ+CisgKiAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlRoZSBjaGFyYWN0ZXIgJ2EnIGFuZCB0aGUgbXVsdGljaGFyYWN0ZXIgc3RyaW5ncyAmcXVvdDthYiZxdW90OyBhbmQgCisgKiAgICAgICAmcXVvdDthYyZxdW90OzwvdGQ+CisgKiAgICAgPC90cj4KKyAqICAgICA8dHI+CisgKiAgICAgICA8dGQgbm93cmFwIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCI+PGNvZGU+W1xwe0x1fV08L2NvZGU+PC90ZD4KKyAqICAgICAgIDx0ZCB2YWxpZ249InRvcCI+QWxsIGNoYXJhY3RlcnMgaW4gdGhlIGdlbmVyYWwgY2F0ZWdvcnkgVXBwZXJjYXNlIExldHRlcjwvdGQ+CisgKiAgICAgPC90cj4KKyAqICAgPC90YWJsZT4KKyAqIDwvYmxvY2txdW90ZT4KKyAqCisgKiBBbnkgY2hhcmFjdGVyIG1heSBiZSBwcmVjZWRlZCBieSBhIGJhY2tzbGFzaCBpbiBvcmRlciB0byByZW1vdmUgYW55IHNwZWNpYWwKKyAqIG1lYW5pbmcuICBXaGl0ZSBzcGFjZSBjaGFyYWN0ZXJzLCBhcyBkZWZpbmVkIGJ5IFVDaGFyYWN0ZXJQcm9wZXJ0eS5pc1J1bGVXaGl0ZVNwYWNlKCksIGFyZQorICogaWdub3JlZCwgdW5sZXNzIHRoZXkgYXJlIGVzY2FwZWQuCisgKgorICogPHA+UHJvcGVydHkgcGF0dGVybnMgc3BlY2lmeSBhIHNldCBvZiBjaGFyYWN0ZXJzIGhhdmluZyBhIGNlcnRhaW4KKyAqIHByb3BlcnR5IGFzIGRlZmluZWQgYnkgdGhlIFVuaWNvZGUgc3RhbmRhcmQuICBCb3RoIHRoZSBQT1NJWC1saWtlCisgKiAiWzpMdTpdIiBhbmQgdGhlIFBlcmwtbGlrZSBzeW50YXggIlxwe0x1fSIgYXJlIHJlY29nbml6ZWQuICBGb3IgYQorICogY29tcGxldGUgbGlzdCBvZiBzdXBwb3J0ZWQgcHJvcGVydHkgcGF0dGVybnMsIHNlZSB0aGUgVXNlcidzIEd1aWRlCisgKiBmb3IgVW5pY29kZVNldCBhdAorICogPGEgaHJlZj0iaHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2ljdS91c2VyZ3VpZGUvdW5pY29kZXNldC5odG1sIj4KKyAqIGh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3UvdXNlcmd1aWRlL3VuaWNvZGVzZXQuaHRtbDwvYT4uCisgKiBBY3R1YWwgZGV0ZXJtaW5hdGlvbiBvZiBwcm9wZXJ0eSBkYXRhIGlzIGRlZmluZWQgYnkgdGhlIHVuZGVybHlpbmcKKyAqIFVuaWNvZGUgZGF0YWJhc2UgYXMgaW1wbGVtZW50ZWQgYnkgVUNoYXJhY3Rlci4KKyAqCisgKiA8cD5QYXR0ZXJucyBzcGVjaWZ5IGluZGl2aWR1YWwgY2hhcmFjdGVycywgcmFuZ2VzIG9mIGNoYXJhY3RlcnMsIGFuZAorICogVW5pY29kZSBwcm9wZXJ0eSBzZXRzLiAgV2hlbiBlbGVtZW50cyBhcmUgY29uY2F0ZW5hdGVkLCB0aGV5CisgKiBzcGVjaWZ5IHRoZWlyIHVuaW9uLiAgVG8gY29tcGxlbWVudCBhIHNldCwgcGxhY2UgYSAnXicgaW1tZWRpYXRlbHkKKyAqIGFmdGVyIHRoZSBvcGVuaW5nICdbJy4gIFByb3BlcnR5IHBhdHRlcm5zIGFyZSBpbnZlcnRlZCBieSBtb2RpZnlpbmcKKyAqIHRoZWlyIGRlbGltaXRlcnM7ICJbOl5mb29dIiBhbmQgIlxQe2Zvb30iLiAgSW4gYW55IG90aGVyIGxvY2F0aW9uLAorICogJ14nIGhhcyBubyBzcGVjaWFsIG1lYW5pbmcuCisgKgorICogPHA+UmFuZ2VzIGFyZSBpbmRpY2F0ZWQgYnkgcGxhY2luZyB0d28gYSAnLScgYmV0d2VlbiB0d28KKyAqIGNoYXJhY3RlcnMsIGFzIGluICJhLXoiLiAgVGhpcyBzcGVjaWZpZXMgdGhlIHJhbmdlIG9mIGFsbAorICogY2hhcmFjdGVycyBmcm9tIHRoZSBsZWZ0IHRvIHRoZSByaWdodCwgaW4gVW5pY29kZSBvcmRlci4gIElmIHRoZQorICogbGVmdCBjaGFyYWN0ZXIgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZQorICogcmlnaHQgY2hhcmFjdGVyIGl0IGlzIGEgc3ludGF4IGVycm9yLiAgSWYgYSAnLScgb2NjdXJzIGFzIHRoZSBmaXJzdAorICogY2hhcmFjdGVyIGFmdGVyIHRoZSBvcGVuaW5nICdbJyBvciAnW14nLCBvciBpZiBpdCBvY2N1cnMgYXMgdGhlCisgKiBsYXN0IGNoYXJhY3RlciBiZWZvcmUgdGhlIGNsb3NpbmcgJ10nLCB0aGVuIGl0IGlzIHRha2VuIGFzIGEKKyAqIGxpdGVyYWwuICBUaHVzICJbYVx1MDA1Qy1iXSIsICJbLWFiXSIsIGFuZCAiW2FiLV0iIGFsbCBpbmRpY2F0ZSB0aGUgc2FtZQorICogc2V0IG9mIHRocmVlIGNoYXJhY3RlcnMsICdhJywgJ2InLCBhbmQgJy0nLgorICoKKyAqIDxwPlNldHMgbWF5IGJlIGludGVyc2VjdGVkIHVzaW5nIHRoZSAnJicgb3BlcmF0b3Igb3IgdGhlIGFzeW1tZXRyaWMKKyAqIHNldCBkaWZmZXJlbmNlIG1heSBiZSB0YWtlbiB1c2luZyB0aGUgJy0nIG9wZXJhdG9yLCBmb3IgZXhhbXBsZSwKKyAqICJbWzpMOl0mW1x1MDA1Q3UwMDAwLVx1MDA1Q3UwRkZGXV0iIGluZGljYXRlcyB0aGUgc2V0IG9mIGFsbCBVbmljb2RlIGxldHRlcnMKKyAqIHdpdGggdmFsdWVzIGxlc3MgdGhhbiA0MDk2LiAgT3BlcmF0b3JzICgnJicgYW5kICd8JykgaGF2ZSBlcXVhbAorICogcHJlY2VkZW5jZSBhbmQgYmluZCBsZWZ0LXRvLXJpZ2h0LiAgVGh1cworICogIltbOkw6XS1bYS16XS1bXHUwMDVDdTAxMDAtXHUwMDVDdTAxRkZdXSIgaXMgZXF1aXZhbGVudCB0bworICogIltbWzpMOl0tW2Etel1dLVtcdTAwNUN1MDEwMC1cdTAwNUN1MDFGRl1dIi4gIFRoaXMgb25seSByZWFsbHkgbWF0dGVycyBmb3IKKyAqIGRpZmZlcmVuY2U7IGludGVyc2VjdGlvbiBpcyBjb21tdXRhdGl2ZS4KKyAqCisgKiA8dGFibGU+CisgKiA8dHIgdmFsaWduPXRvcD48dGQgbm93cmFwPjxjb2RlPlthXTwvY29kZT48dGQ+VGhlIHNldCBjb250YWluaW5nICdhJworICogPHRyIHZhbGlnbj10b3A+PHRkIG5vd3JhcD48Y29kZT5bYS16XTwvY29kZT48dGQ+VGhlIHNldCBjb250YWluaW5nICdhJworICogdGhyb3VnaCAneicgYW5kIGFsbCBsZXR0ZXJzIGluIGJldHdlZW4sIGluIFVuaWNvZGUgb3JkZXIKKyAqIDx0ciB2YWxpZ249dG9wPjx0ZCBub3dyYXA+PGNvZGU+W15hLXpdPC9jb2RlPjx0ZD5UaGUgc2V0IGNvbnRhaW5pbmcKKyAqIGFsbCBjaGFyYWN0ZXJzIGJ1dCAnYScgdGhyb3VnaCAneicsCisgKiB0aGF0IGlzLCBVKzAwMDAgdGhyb3VnaCAnYSctMSBhbmQgJ3onKzEgdGhyb3VnaCBVKzEwRkZGRgorICogPHRyIHZhbGlnbj10b3A+PHRkIG5vd3JhcD48Y29kZT5bWzxlbT5wYXQxPC9lbT5dWzxlbT5wYXQyPC9lbT5dXTwvY29kZT4KKyAqIDx0ZD5UaGUgdW5pb24gb2Ygc2V0cyBzcGVjaWZpZWQgYnkgPGVtPnBhdDE8L2VtPiBhbmQgPGVtPnBhdDI8L2VtPgorICogPHRyIHZhbGlnbj10b3A+PHRkIG5vd3JhcD48Y29kZT5bWzxlbT5wYXQxPC9lbT5dJls8ZW0+cGF0MjwvZW0+XV08L2NvZGU+CisgKiA8dGQ+VGhlIGludGVyc2VjdGlvbiBvZiBzZXRzIHNwZWNpZmllZCBieSA8ZW0+cGF0MTwvZW0+IGFuZCA8ZW0+cGF0MjwvZW0+CisgKiA8dHIgdmFsaWduPXRvcD48dGQgbm93cmFwPjxjb2RlPltbPGVtPnBhdDE8L2VtPl0tWzxlbT5wYXQyPC9lbT5dXTwvY29kZT4KKyAqIDx0ZD5UaGUgYXN5bW1ldHJpYyBkaWZmZXJlbmNlIG9mIHNldHMgc3BlY2lmaWVkIGJ5IDxlbT5wYXQxPC9lbT4gYW5kCisgKiA8ZW0+cGF0MjwvZW0+CisgKiA8dHIgdmFsaWduPXRvcD48dGQgbm93cmFwPjxjb2RlPls6THU6XSBvciBccHtMdX08L2NvZGU+CisgKiA8dGQ+VGhlIHNldCBvZiBjaGFyYWN0ZXJzIGhhdmluZyB0aGUgc3BlY2lmaWVkCisgKiBVbmljb2RlIHByb3BlcnR5OyBpbgorICogdGhpcyBjYXNlLCBVbmljb2RlIHVwcGVyY2FzZSBsZXR0ZXJzCisgKiA8dHIgdmFsaWduPXRvcD48dGQgbm93cmFwPjxjb2RlPls6Xkx1Ol0gb3IgXFB7THV9PC9jb2RlPgorICogPHRkPlRoZSBzZXQgb2YgY2hhcmFjdGVycyA8ZW0+bm90PC9lbT4gaGF2aW5nIHRoZSBnaXZlbgorICogVW5pY29kZSBwcm9wZXJ0eQorICogPC90YWJsZT4KKyAqCisgKiA8cD48Yj5XYXJuaW5nPC9iPjogeW91IGNhbm5vdCBhZGQgYW4gZW1wdHkgc3RyaW5nICgiIikgdG8gYSBVbmljb2RlU2V0LjwvcD4KKyAqCisgKiA8cD48Yj5Gb3JtYWwgc3ludGF4PC9iPjwvcD4KKyAqCisgKiA8YmxvY2txdW90ZT4KKyAqICAgPHRhYmxlPgorICogICAgIDx0ciBhbGlnbj0idG9wIj4KKyAqICAgICAgIDx0ZCBub3dyYXAgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PGNvZGU+cGF0dGVybiA6PSZuYnNwOyA8L2NvZGU+PC90ZD4KKyAqICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGNvZGU+KCdbJyAnXic/IGl0ZW0qICddJykgfAorICogICAgICAgcHJvcGVydHk8L2NvZGU+PC90ZD4KKyAqICAgICA8L3RyPgorICogICAgIDx0ciBhbGlnbj0idG9wIj4KKyAqICAgICAgIDx0ZCBub3dyYXAgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PGNvZGU+aXRlbSA6PSZuYnNwOyA8L2NvZGU+PC90ZD4KKyAqICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGNvZGU+Y2hhciB8IChjaGFyICctJyBjaGFyKSB8IHBhdHRlcm4tZXhwcjxicj4KKyAqICAgICAgIDwvY29kZT48L3RkPgorICogICAgIDwvdHI+CisgKiAgICAgPHRyIGFsaWduPSJ0b3AiPgorICogICAgICAgPHRkIG5vd3JhcCB2YWxpZ249InRvcCIgYWxpZ249InJpZ2h0Ij48Y29kZT5wYXR0ZXJuLWV4cHIgOj0mbmJzcDsgPC9jb2RlPjwvdGQ+CisgKiAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxjb2RlPnBhdHRlcm4gfCBwYXR0ZXJuLWV4cHIgcGF0dGVybiB8CisgKiAgICAgICBwYXR0ZXJuLWV4cHIgb3AgcGF0dGVybjxicj4KKyAqICAgICAgIDwvY29kZT48L3RkPgorICogICAgIDwvdHI+CisgKiAgICAgPHRyIGFsaWduPSJ0b3AiPgorICogICAgICAgPHRkIG5vd3JhcCB2YWxpZ249InRvcCIgYWxpZ249InJpZ2h0Ij48Y29kZT5vcCA6PSZuYnNwOyA8L2NvZGU+PC90ZD4KKyAqICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGNvZGU+JyZhbXA7JyB8ICctJzxicj4KKyAqICAgICAgIDwvY29kZT48L3RkPgorICogICAgIDwvdHI+CisgKiAgICAgPHRyIGFsaWduPSJ0b3AiPgorICogICAgICAgPHRkIG5vd3JhcCB2YWxpZ249InRvcCIgYWxpZ249InJpZ2h0Ij48Y29kZT5zcGVjaWFsIDo9Jm5ic3A7IDwvY29kZT48L3RkPgorICogICAgICAgPHRkIHZhbGlnbj0idG9wIj48Y29kZT4nWycgfCAnXScgfCAnLSc8YnI+CisgKiAgICAgICA8L2NvZGU+PC90ZD4KKyAqICAgICA8L3RyPgorICogICAgIDx0ciBhbGlnbj0idG9wIj4KKyAqICAgICAgIDx0ZCBub3dyYXAgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PGNvZGU+Y2hhciA6PSZuYnNwOyA8L2NvZGU+PC90ZD4KKyAqICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGVtPmFueSBjaGFyYWN0ZXIgdGhhdCBpcyBub3Q8L2VtPjxjb2RlPiBzcGVjaWFsPGJyPgorICogICAgICAgfCAoJ1x1MDA1QycgPC9jb2RlPjxlbT5hbnkgY2hhcmFjdGVyPC9lbT48Y29kZT4pPGJyPgorICogICAgICAgfCAoJyYjOTI7dScgaGV4IGhleCBoZXggaGV4KTxicj4KKyAqICAgICAgIDwvY29kZT48L3RkPgorICogICAgIDwvdHI+CisgKiAgICAgPHRyIGFsaWduPSJ0b3AiPgorICogICAgICAgPHRkIG5vd3JhcCB2YWxpZ249InRvcCIgYWxpZ249InJpZ2h0Ij48Y29kZT5oZXggOj0mbmJzcDsgPC9jb2RlPjwvdGQ+CisgKiAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxlbT5hbnkgY2hhcmFjdGVyIGZvciB3aGljaAorICogICAgICAgPC9lbT48Y29kZT5DaGFyYWN0ZXIuZGlnaXQoYywgMTYpPC9jb2RlPjxlbT4KKyAqICAgICAgIHJldHVybnMgYSBub24tbmVnYXRpdmUgcmVzdWx0PC9lbT48L3RkPgorICogICAgIDwvdHI+CisgKiAgICAgPHRyPgorICogICAgICAgPHRkIG5vd3JhcCB2YWxpZ249InRvcCIgYWxpZ249InJpZ2h0Ij48Y29kZT5wcm9wZXJ0eSA6PSZuYnNwOyA8L2NvZGU+PC90ZD4KKyAqICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGVtPmEgVW5pY29kZSBwcm9wZXJ0eSBzZXQgcGF0dGVybjwvdGQ+CisgKiAgICAgPC90cj4KKyAqICAgPC90YWJsZT4KKyAqICAgPGJyPgorICogICA8dGFibGUgYm9yZGVyPSIxIj4KKyAqICAgICA8dHI+CisgKiAgICAgICA8dGQ+TGVnZW5kOiA8dGFibGU+CisgKiAgICAgICAgIDx0cj4KKyAqICAgICAgICAgICA8dGQgbm93cmFwIHZhbGlnbj0idG9wIj48Y29kZT5hIDo9IGI8L2NvZGU+PC90ZD4KKyAqICAgICAgICAgICA8dGQgd2lkdGg9IjIwIiB2YWxpZ249InRvcCI+Jm5ic3A7IDwvdGQ+CisgKiAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48Y29kZT5hPC9jb2RlPiBtYXkgYmUgcmVwbGFjZWQgYnkgPGNvZGU+YjwvY29kZT4gPC90ZD4KKyAqICAgICAgICAgPC90cj4KKyAqICAgICAgICAgPHRyPgorICogICAgICAgICAgIDx0ZCBub3dyYXAgdmFsaWduPSJ0b3AiPjxjb2RlPmE/PC9jb2RlPjwvdGQ+CisgKiAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48L3RkPgorICogICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+emVybyBvciBvbmUgaW5zdGFuY2Ugb2YgPGNvZGU+YTwvY29kZT48YnI+CisgKiAgICAgICAgICAgPC90ZD4KKyAqICAgICAgICAgPC90cj4KKyAqICAgICAgICAgPHRyPgorICogICAgICAgICAgIDx0ZCBub3dyYXAgdmFsaWduPSJ0b3AiPjxjb2RlPmEqPC9jb2RlPjwvdGQ+CisgKiAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48L3RkPgorICogICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+b25lIG9yIG1vcmUgaW5zdGFuY2VzIG9mIDxjb2RlPmE8L2NvZGU+PGJyPgorICogICAgICAgICAgIDwvdGQ+CisgKiAgICAgICAgIDwvdHI+CisgKiAgICAgICAgIDx0cj4KKyAqICAgICAgICAgICA8dGQgbm93cmFwIHZhbGlnbj0idG9wIj48Y29kZT5hIHwgYjwvY29kZT48L3RkPgorICogICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PC90ZD4KKyAqICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmVpdGhlciA8Y29kZT5hPC9jb2RlPiBvciA8Y29kZT5iPC9jb2RlPjxicj4KKyAqICAgICAgICAgICA8L3RkPgorICogICAgICAgICA8L3RyPgorICogICAgICAgICA8dHI+CisgKiAgICAgICAgICAgPHRkIG5vd3JhcCB2YWxpZ249InRvcCI+PGNvZGU+J2EnPC9jb2RlPjwvdGQ+CisgKiAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48L3RkPgorICogICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGhlIGxpdGVyYWwgc3RyaW5nIGJldHdlZW4gdGhlIHF1b3RlcyA8L3RkPgorICogICAgICAgICA8L3RyPgorICogICAgICAgPC90YWJsZT4KKyAqICAgICAgIDwvdGQ+CisgKiAgICAgPC90cj4KKyAqICAgPC90YWJsZT4KKyAqIDwvYmxvY2txdW90ZT4KKyAqCisgKiBAYXV0aG9yIEFsYW4gTGl1CisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworcHVibGljIGNsYXNzIFVuaWNvZGVTZXQgZXh0ZW5kcyBVbmljb2RlRmlsdGVyIHsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBMT1cgPSAweDAwMDAwMDsgLy8gTE9XIDw9IGFsbCB2YWxpZCB2YWx1ZXMuIFpFUk8gZm9yIGNvZGVwb2ludHMKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSElHSCA9IDB4MTEwMDAwOyAvLyBISUdIID4gYWxsIHZhbGlkIHZhbHVlcy4gMTAwMDAgZm9yIGNvZGUgdW5pdHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxMTAwMDAgZm9yIGNvZGVwb2ludHMKKworICAgIC8qKgorICAgICAqIE1pbmltdW0gdmFsdWUgdGhhdCBjYW4gYmUgc3RvcmVkIGluIGEgVW5pY29kZVNldC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNSU5fVkFMVUUgPSBMT1c7CisKKyAgICAvKioKKyAgICAgKiBNYXhpbXVtIHZhbHVlIHRoYXQgY2FuIGJlIHN0b3JlZCBpbiBhIFVuaWNvZGVTZXQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTUFYX1ZBTFVFID0gSElHSCAtIDE7CisKKyAgICBwcml2YXRlIGludCBsZW47ICAgICAgLy8gbGVuZ3RoIHVzZWQ7IGxpc3QgbWF5IGJlIGxvbmdlciB0byBtaW5pbWl6ZSByZWFsbG9jcworICAgIHByaXZhdGUgaW50W10gbGlzdDsgICAvLyBNVVNUIGJlIHRlcm1pbmF0ZWQgd2l0aCBISUdICisgICAgcHJpdmF0ZSBpbnRbXSByYW5nZUxpc3Q7IC8vIGludGVybmFsIGJ1ZmZlcgorICAgIHByaXZhdGUgaW50W10gYnVmZmVyOyAvLyBpbnRlcm5hbCBidWZmZXIKKyAgICAKKyAgICAvLyBOT1RFOiBub3JtYWxseSB0aGUgZmllbGQgc2hvdWxkIGJlIG9mIHR5cGUgU29ydGVkU2V0OyBidXQgdGhhdCBpcyBtaXNzaW5nIGEgcHVibGljIGNsb25lISEKKyAgICAvLyBpcyBub3QgcHJpdmF0ZSBzbyB0aGF0IFVuaWNvZGVTZXRJdGVyYXRvciBjYW4gZ2V0IGFjY2VzcworICAgIFRyZWVTZXQgc3RyaW5ncyA9IG5ldyBUcmVlU2V0KCk7CisKKyAgICAvKioKKyAgICAgKiBUaGUgcGF0dGVybiByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHNldC4gIFRoaXMgbWF5IG5vdCBiZSB0aGUKKyAgICAgKiBtb3N0IGVjb25vbWljYWwgcGF0dGVybi4gIEl0IGlzIHRoZSBwYXR0ZXJuIHN1cHBsaWVkIHRvCisgICAgICogYXBwbHlQYXR0ZXJuKCksIHdpdGggdmFyaWFibGVzIHN1YnN0aXR1dGVkIGFuZCB3aGl0ZXNwYWNlCisgICAgICogcmVtb3ZlZC4gIEZvciBzZXRzIGNvbnN0cnVjdGVkIHdpdGhvdXQgYXBwbHlQYXR0ZXJuKCksIG9yCisgICAgICogbW9kaWZpZWQgdXNpbmcgdGhlIG5vbi1wYXR0ZXJuIEFQSSwgdGhpcyBzdHJpbmcgd2lsbCBiZSBudWxsLAorICAgICAqIGluZGljYXRpbmcgdGhhdCB0b1BhdHRlcm4oKSBtdXN0IGdlbmVyYXRlIGEgcGF0dGVybgorICAgICAqIHJlcHJlc2VudGF0aW9uIGZyb20gdGhlIGludmVyc2lvbiBsaXN0LgorICAgICAqLworICAgIHByaXZhdGUgU3RyaW5nIHBhdCA9IG51bGw7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU1RBUlRfRVhUUkEgPSAxNjsgICAgICAgICAvLyBpbml0aWFsIHN0b3JhZ2UuIE11c3QgYmUgPj0gMAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBHUk9XX0VYVFJBID0gU1RBUlRfRVhUUkE7IC8vIGV4dHJhIGFtb3VudCBmb3IgZ3Jvd3RoLiBNdXN0IGJlID49IDAKKworICAgIC8vIFNwZWNpYWwgcHJvcGVydHkgc2V0IElEcworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBBTllfSUQgICA9ICJBTlkiOyAgIC8vIFtcdTAwMDAtXFUwMDEwRkZGRl0KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVNDSUlfSUQgPSAiQVNDSUkiOyAvLyBbXHUwMDAwLVx1MDA3Rl0KKworICAgIC8qKgorICAgICAqIEEgc2V0IG9mIGFsbCBjaGFyYWN0ZXJzIF9leGNlcHRfIHRoZSBzZWNvbmQgdGhyb3VnaCBsYXN0IGNoYXJhY3RlcnMgb2YKKyAgICAgKiBjZXJ0YWluIHJhbmdlcy4gIFRoZXNlIHJhbmdlcyBhcmUgcmFuZ2VzIG9mIGNoYXJhY3RlcnMgd2hvc2UKKyAgICAgKiBwcm9wZXJ0aWVzIGFyZSBhbGwgZXhhY3RseSBhbGlrZSwgZS5nLiBDSksgSWRlb2dyYXBocyBmcm9tCisgICAgICogVSs0RTAwIHRvIFUrOUZBNS4KKyAgICAgKgorICAgICAqIFRPRE86IFJlcGxhY2UgdGhpcyB3aXRoIGFuIEFQSSBjYWxsIHdoZW4gc3VjaCBBUEkgaXMgaW1wbGVtZW50ZWQuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgVW5pY29kZVNldCBJTkNMVVNJT05TID0KKyAgICAgICAgbmV3IFVuaWNvZGVTZXQoIlteXFx1MzQwMS1cXHU0REI1IFxcdTRFMDEtXFx1OUZBNSBcXHVBQzAxLVxcdUQ3QTMgXFx1RDgwMS1cXHVEQjdGIFxcdURCODEtXFx1REJGRiBcXHVEQzAxLVxcdURGRkYgXFx1RTAwMS1cXHVGOEZGIFxcVTAwMDEwNDRGLVxcVTAwMDFDRkZGIFxcVTAwMDFEODAxLVxcVTAwMDFGRkZGIFxcVTAwMDIwMDAxLVxcVTAwMDJBNkQ2IFxcVTAwMDJBNkQ4LVxcVTAwMDJGN0ZGIFxcVTAwMDJGQTFGLVxcVTAwMEUwMDAwIFxcVTAwMEUwMDgxLVxcVTAwMEVGRkZGIFxcVTAwMEYwMDAxLVxcVTAwMEZGRkZEIFxcVTAwMTAwMDAxLVxcVTAwMTBGRkZEXSIpOworCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gUHVibGljIEFQSQorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhbiBlbXB0eSBzZXQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIFVuaWNvZGVTZXQoKSB7CisgICAgICAgIGxpc3QgPSBuZXcgaW50WzEgKyBTVEFSVF9FWFRSQV07CisgICAgICAgIGxpc3RbbGVuKytdID0gSElHSDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgY29weSBvZiBhbiBleGlzdGluZyBzZXQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIFVuaWNvZGVTZXQoVW5pY29kZVNldCBvdGhlcikgeworICAgICAgICBzZXQob3RoZXIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSBzZXQgY29udGFpbmluZyB0aGUgZ2l2ZW4gcmFuZ2UuIElmIDxjb2RlPmVuZCA+CisgICAgICogc3RhcnQ8L2NvZGU+IHRoZW4gYW4gZW1wdHkgc2V0IGlzIGNyZWF0ZWQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gc3RhcnQgZmlyc3QgY2hhcmFjdGVyLCBpbmNsdXNpdmUsIG9mIHJhbmdlCisgICAgICogQHBhcmFtIGVuZCBsYXN0IGNoYXJhY3RlciwgaW5jbHVzaXZlLCBvZiByYW5nZQorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBVbmljb2RlU2V0KGludCBzdGFydCwgaW50IGVuZCkgeworICAgICAgICB0aGlzKCk7CisgICAgICAgIGNvbXBsZW1lbnQoc3RhcnQsIGVuZCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIHNldCBmcm9tIHRoZSBnaXZlbiBwYXR0ZXJuLiAgU2VlIHRoZSBjbGFzcyBkZXNjcmlwdGlvbgorICAgICAqIGZvciB0aGUgc3ludGF4IG9mIHRoZSBwYXR0ZXJuIGxhbmd1YWdlLiAgV2hpdGVzcGFjZSBpcyBpZ25vcmVkLgorICAgICAqIEBwYXJhbSBwYXR0ZXJuIGEgc3RyaW5nIHNwZWNpZnlpbmcgd2hhdCBjaGFyYWN0ZXJzIGFyZSBpbiB0aGUgc2V0CisgICAgICogQGV4Y2VwdGlvbiBqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBwYXR0ZXJuIGNvbnRhaW5zCisgICAgICogYSBzeW50YXggZXJyb3IuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIFVuaWNvZGVTZXQoU3RyaW5nIHBhdHRlcm4pIHsKKyAgICAgICAgdGhpcyhwYXR0ZXJuLCB0cnVlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgc2V0IGZyb20gdGhlIGdpdmVuIHBhdHRlcm4uICBTZWUgdGhlIGNsYXNzIGRlc2NyaXB0aW9uCisgICAgICogZm9yIHRoZSBzeW50YXggb2YgdGhlIHBhdHRlcm4gbGFuZ3VhZ2UuCisgICAgICogQHBhcmFtIHBhdHRlcm4gYSBzdHJpbmcgc3BlY2lmeWluZyB3aGF0IGNoYXJhY3RlcnMgYXJlIGluIHRoZSBzZXQKKyAgICAgKiBAcGFyYW0gaWdub3JlV2hpdGVzcGFjZSBpZiB0cnVlLCBpZ25vcmUgY2hhcmFjdGVycyBmb3Igd2hpY2gKKyAgICAgKiBVQ2hhcmFjdGVyUHJvcGVydHkuaXNSdWxlV2hpdGVTcGFjZSgpIHJldHVybnMgdHJ1ZQorICAgICAqIEBleGNlcHRpb24gamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgcGF0dGVybiBjb250YWlucworICAgICAqIGEgc3ludGF4IGVycm9yLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBVbmljb2RlU2V0KFN0cmluZyBwYXR0ZXJuLCBib29sZWFuIGlnbm9yZVdoaXRlc3BhY2UpIHsKKyAgICAgICAgdGhpcygpOworICAgICAgICBhcHBseVBhdHRlcm4ocGF0dGVybiwgaWdub3JlV2hpdGVzcGFjZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIHNldCBmcm9tIHRoZSBnaXZlbiBwYXR0ZXJuLiAgU2VlIHRoZSBjbGFzcyBkZXNjcmlwdGlvbgorICAgICAqIGZvciB0aGUgc3ludGF4IG9mIHRoZSBwYXR0ZXJuIGxhbmd1YWdlLgorICAgICAqIEBwYXJhbSBwYXR0ZXJuIGEgc3RyaW5nIHNwZWNpZnlpbmcgd2hhdCBjaGFyYWN0ZXJzIGFyZSBpbiB0aGUgc2V0CisgICAgICogQHBhcmFtIHBvcyBvbiBpbnB1dCwgdGhlIHBvc2l0aW9uIGluIHBhdHRlcm4gYXQgd2hpY2ggdG8gc3RhcnQgcGFyc2luZy4KKyAgICAgKiBPbiBvdXRwdXQsIHRoZSBwb3NpdGlvbiBhZnRlciB0aGUgbGFzdCBjaGFyYWN0ZXIgcGFyc2VkLgorICAgICAqIEBwYXJhbSBzeW1ib2xzIGEgc3ltYm9sIHRhYmxlIG1hcHBpbmcgdmFyaWFibGVzIHRvIGNoYXJbXSBhcnJheXMKKyAgICAgKiBhbmQgY2hhcnMgdG8gVW5pY29kZVNldHMKKyAgICAgKiBAZXhjZXB0aW9uIGphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIHBhdHRlcm4KKyAgICAgKiBjb250YWlucyBhIHN5bnRheCBlcnJvci4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgVW5pY29kZVNldChTdHJpbmcgcGF0dGVybiwgUGFyc2VQb3NpdGlvbiBwb3MsIFN5bWJvbFRhYmxlIHN5bWJvbHMpIHsKKyAgICAgICAgdGhpcygpOworICAgICAgICBhcHBseVBhdHRlcm4ocGF0dGVybiwgcG9zLCBzeW1ib2xzLCB0cnVlKTsKKyAgICB9CisKKyAgICAvLyBEZWxldGUgdGhlIGZvbGxvd2luZyB3aGVuIHRoZSBjYXRlZ29yeSBjb25zdHJ1Y3RvciBpcyByZW1vdmVkCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIENBVEVHT1JZX05BTUVTID0KKyAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgIDEgMSAxIDEgMSAxIDEgICAxIDEgMiAyIDIgMiAyIDIgMiAyIDIKKyAgICAgICAgLy8wIDEgMiAzIDQgNSA2IDcgOCA5IDAgMSAyIDMgNCA1IDYgICA4IDkgMCAxIDIgMyA0IDUgNiA3IDgKKyAgICAgICAgIkNuTHVMbEx0TG1Mb01uTWVNY05kTmxOb1pzWmxacENjQ2YtLUNvQ3NQZFBzUGVQY1BvU21TY1NrU28iOworICAgIC8qKgorICAgICAqIERFUFJFQ0FURUQgLSBDb25zdHJ1Y3RzIGEgc2V0IGZyb20gdGhlIGdpdmVuIFVuaWNvZGUgY2hhcmFjdGVyCisgICAgICogY2F0ZWdvcnkuCisgICAgICogQHBhcmFtIGNhdGVnb3J5IGFuIGludGVnZXIgaW5kaWNhdGluZyB0aGUgY2hhcmFjdGVyIGNhdGVnb3J5IGFzCisgICAgICogcmV0dXJuZWQgYnkgPGNvZGU+amF2YS5sYW5nLkNoYXJhY3Rlci5nZXRUeXBlKCk8L2NvZGU+LiAgTm90ZQorICAgICAqIHRoYXQgdGhpcyBpcyA8ZW0+ZGlmZmVyZW50PC9lbT4gZnJvbSB0aGUgVUNoYXJhY3RlckNhdGVnb3J5CisgICAgICogY29kZXMuCisgICAgICogQGV4Y2VwdGlvbiBqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBnaXZlbgorICAgICAqIGNhdGVnb3J5IGlzIGludmFsaWQuCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDAuMCB0aGlzIHdpbGwgYmUgcmVtb3ZlZCBEZWMtMzEtMjAwMgorICAgICAqLworICAgIHB1YmxpYyBVbmljb2RlU2V0KGludCBjYXRlZ29yeSkgeworICAgICAgICBpZiAoY2F0ZWdvcnkgPCAwIHx8IGNhdGVnb3J5ID4gamF2YS5sYW5nLkNoYXJhY3Rlci5PVEhFUl9TWU1CT0wgfHwKKyAgICAgICAgICAgIGNhdGVnb3J5ID09IDE3KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIGNhdGVnb3J5Iik7CisgICAgICAgIH0KKyAgICAgICAgU3RyaW5nIHBhdCA9ICJbOiIgKyBDQVRFR09SWV9OQU1FUy5zdWJzdHJpbmcoMipjYXRlZ29yeSwgMipjYXRlZ29yeSsyKSArICI6XSI7CisgICAgICAgIGFwcGx5UGF0dGVybihwYXQsIGZhbHNlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSBuZXcgc2V0IHRoYXQgaXMgZXF1aXZhbGVudCB0byB0aGlzIG9uZS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0IGNsb25lKCkgeworICAgICAgICByZXR1cm4gbmV3IFVuaWNvZGVTZXQodGhpcyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogTWFrZSB0aGlzIG9iamVjdCByZXByZXNlbnQgdGhlIHJhbmdlIDxjb2RlPnN0YXJ0IC0gZW5kPC9jb2RlPi4KKyAgICAgKiBJZiA8Y29kZT5lbmQgPiBzdGFydDwvY29kZT4gdGhlbiB0aGlzIG9iamVjdCBpcyBzZXQgdG8gYW4KKyAgICAgKiBhbiBlbXB0eSByYW5nZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzdGFydCBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlIHNldCwgaW5jbHVzaXZlCisgICAgICogQHBhcmFtIGVuZCBsYXN0IGNoYXJhY3RlciBpbiB0aGUgc2V0LCBpbmNsdXNpdmUKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgVW5pY29kZVNldCBzZXQoaW50IHN0YXJ0LCBpbnQgZW5kKSB7CisgICAgICAgIGNsZWFyKCk7CisgICAgICAgIGNvbXBsZW1lbnQoc3RhcnQsIGVuZCk7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIC8qKgorICAgICAqIE1ha2UgdGhpcyBvYmplY3QgcmVwcmVzZW50IHRoZSBzYW1lIHNldCBhcyA8Y29kZT5vdGhlcjwvY29kZT4uCisgICAgICogQHBhcmFtIG90aGVyIGEgPGNvZGU+VW5pY29kZVNldDwvY29kZT4gd2hvc2UgdmFsdWUgd2lsbCBiZQorICAgICAqIGNvcGllZCB0byB0aGlzIG9iamVjdAorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBVbmljb2RlU2V0IHNldChVbmljb2RlU2V0IG90aGVyKSB7CisgICAgICAgIGxpc3QgPSAoaW50W10pIG90aGVyLmxpc3QuY2xvbmUoKTsKKyAgICAgICAgbGVuID0gb3RoZXIubGVuOworICAgICAgICBwYXQgPSBvdGhlci5wYXQ7CisgICAgICAgIHN0cmluZ3MgPSAoVHJlZVNldClvdGhlci5zdHJpbmdzLmNsb25lKCk7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIC8qKgorICAgICAqIE1vZGlmaWVzIHRoaXMgc2V0IHRvIHJlcHJlc2VudCB0aGUgc2V0IHNwZWNpZmllZCBieSB0aGUgZ2l2ZW4gcGF0dGVybi4KKyAgICAgKiBTZWUgdGhlIGNsYXNzIGRlc2NyaXB0aW9uIGZvciB0aGUgc3ludGF4IG9mIHRoZSBwYXR0ZXJuIGxhbmd1YWdlLgorICAgICAqIFdoaXRlc3BhY2UgaXMgaWdub3JlZC4KKyAgICAgKiBAcGFyYW0gcGF0dGVybiBhIHN0cmluZyBzcGVjaWZ5aW5nIHdoYXQgY2hhcmFjdGVycyBhcmUgaW4gdGhlIHNldAorICAgICAqIEBleGNlcHRpb24gamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgcGF0dGVybgorICAgICAqIGNvbnRhaW5zIGEgc3ludGF4IGVycm9yLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBVbmljb2RlU2V0IGFwcGx5UGF0dGVybihTdHJpbmcgcGF0dGVybikgeworICAgICAgICByZXR1cm4gYXBwbHlQYXR0ZXJuKHBhdHRlcm4sIHRydWUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIE1vZGlmaWVzIHRoaXMgc2V0IHRvIHJlcHJlc2VudCB0aGUgc2V0IHNwZWNpZmllZCBieSB0aGUgZ2l2ZW4gcGF0dGVybiwKKyAgICAgKiBvcHRpb25hbGx5IGlnbm9yaW5nIHdoaXRlc3BhY2UuCisgICAgICogU2VlIHRoZSBjbGFzcyBkZXNjcmlwdGlvbiBmb3IgdGhlIHN5bnRheCBvZiB0aGUgcGF0dGVybiBsYW5ndWFnZS4KKyAgICAgKiBAcGFyYW0gcGF0dGVybiBhIHN0cmluZyBzcGVjaWZ5aW5nIHdoYXQgY2hhcmFjdGVycyBhcmUgaW4gdGhlIHNldAorICAgICAqIEBwYXJhbSBpZ25vcmVXaGl0ZXNwYWNlIGlmIHRydWUgdGhlbiBjaGFyYWN0ZXJzIGZvciB3aGljaAorICAgICAqIFVDaGFyYWN0ZXJQcm9wZXJ0eS5pc1J1bGVXaGl0ZVNwYWNlKCkgcmV0dXJucyB0cnVlIGFyZSBpZ25vcmVkCisgICAgICogQGV4Y2VwdGlvbiBqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBwYXR0ZXJuCisgICAgICogY29udGFpbnMgYSBzeW50YXggZXJyb3IuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIFVuaWNvZGVTZXQgYXBwbHlQYXR0ZXJuKFN0cmluZyBwYXR0ZXJuLCBib29sZWFuIGlnbm9yZVdoaXRlc3BhY2UpIHsKKyAgICAgICAgUGFyc2VQb3NpdGlvbiBwb3MgPSBuZXcgUGFyc2VQb3NpdGlvbigwKTsKKyAgICAgICAgYXBwbHlQYXR0ZXJuKHBhdHRlcm4sIHBvcywgbnVsbCwgaWdub3JlV2hpdGVzcGFjZSk7CisKKyAgICAgICAgaW50IGkgPSBwb3MuZ2V0SW5kZXgoKTsKKworICAgICAgICAvLyBTa2lwIG92ZXIgdHJhaWxpbmcgd2hpdGVzcGFjZQorICAgICAgICBpZiAoaWdub3JlV2hpdGVzcGFjZSkgeworICAgICAgICAgICAgaSA9IFV0aWxpdHkuc2tpcFdoaXRlc3BhY2UocGF0dGVybiwgaSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaSAhPSBwYXR0ZXJuLmxlbmd0aCgpKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJQYXJzZSBvZiBcIiIgKyBwYXR0ZXJuICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlwiIGZhaWxlZCBhdCAiICsgaSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIHBvc2l0aW9uLCBpbiB0aGUgZ2l2ZW4gcGF0dGVybiwgYXBwZWFycworICAgICAqIHRvIGJlIHRoZSBzdGFydCBvZiBhIFVuaWNvZGVTZXQgcGF0dGVybi4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gcmVzZW1ibGVzUGF0dGVybihTdHJpbmcgcGF0dGVybiwgaW50IHBvcykgeworICAgICAgICByZXR1cm4gKChwb3MrMSkgPCBwYXR0ZXJuLmxlbmd0aCgpICYmCisgICAgICAgICAgICAgICAgcGF0dGVybi5jaGFyQXQocG9zKSA9PSAnWycpIHx8CisgICAgICAgICAgICByZXNlbWJsZXNQcm9wZXJ0eVBhdHRlcm4ocGF0dGVybiwgcG9zKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBcHBlbmQgdGhlIDxjb2RlPnRvUGF0dGVybigpPC9jb2RlPiByZXByZXNlbnRhdGlvbiBvZiBhCisgICAgICogc3RyaW5nIHRvIHRoZSBnaXZlbiA8Y29kZT5TdHJpbmdCdWZmZXI8L2NvZGU+LgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIHZvaWQgX2FwcGVuZFRvUGF0KFN0cmluZ0J1ZmZlciBidWYsIFN0cmluZyBzLCBib29sZWFuIHVzZUhleEVzY2FwZSkgeworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHMubGVuZ3RoKCk7IGkgKz0gVVRGMTYuZ2V0Q2hhckNvdW50KGkpKSB7CisgICAgICAgICAgICBfYXBwZW5kVG9QYXQoYnVmLCBVVEYxNi5jaGFyQXQocywgaSksIHVzZUhleEVzY2FwZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBcHBlbmQgdGhlIDxjb2RlPnRvUGF0dGVybigpPC9jb2RlPiByZXByZXNlbnRhdGlvbiBvZiBhCisgICAgICogY2hhcmFjdGVyIHRvIHRoZSBnaXZlbiA8Y29kZT5TdHJpbmdCdWZmZXI8L2NvZGU+LgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIHZvaWQgX2FwcGVuZFRvUGF0KFN0cmluZ0J1ZmZlciBidWYsIGludCBjLCBib29sZWFuIHVzZUhleEVzY2FwZSkgeworICAgICAgICBpZiAodXNlSGV4RXNjYXBlKSB7CisgICAgICAgICAgICAvLyBVc2UgaGV4IGVzY2FwZSBub3RhdGlvbiAoPGJhY2tzbGFzaD51eHh4eCBvciA8YmFja3NsYXNoPlV4eHh4eHh4eCkgZm9yIGFueXRoaW5nCisgICAgICAgICAgICAvLyB1bnByaW50YWJsZQorICAgICAgICAgICAgaWYgKFV0aWxpdHkuZXNjYXBlVW5wcmludGFibGUoYnVmLCBjKSkgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAvLyBPa2F5IHRvIGxldCAnOicgcGFzcyB0aHJvdWdoCisgICAgICAgIHN3aXRjaCAoYykgeworICAgICAgICBjYXNlICdbJzogLy8gU0VUX09QRU46CisgICAgICAgIGNhc2UgJ10nOiAvLyBTRVRfQ0xPU0U6CisgICAgICAgIGNhc2UgJy0nOiAvLyBIWVBIRU46CisgICAgICAgIGNhc2UgJ14nOiAvLyBDT01QTEVNRU5UOgorICAgICAgICBjYXNlICcmJzogLy8gSU5URVJTRUNUSU9OOgorICAgICAgICBjYXNlICdcXCc6IC8vQkFDS1NMQVNIOgorICAgICAgICBjYXNlICd7JzoKKyAgICAgICAgY2FzZSAnfSc6CisgICAgICAgIGNhc2UgJyQnOgorICAgICAgICBjYXNlICc6JzoKKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQoJ1xcJyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC8vIEVzY2FwZSB3aGl0ZXNwYWNlCisgICAgICAgICAgICBpZiAoVUNoYXJhY3RlclByb3BlcnR5LmlzUnVsZVdoaXRlU3BhY2UoYykpIHsKKyAgICAgICAgICAgICAgICBidWYuYXBwZW5kKCdcXCcpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgVVRGMTYuYXBwZW5kKGJ1ZiwgYyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHNldC4gIElmIHRoZSByZXN1bHQgb2YKKyAgICAgKiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gaXMgcGFzc2VkIHRvIGEgVW5pY29kZVNldCBjb25zdHJ1Y3RvciwgaXQKKyAgICAgKiB3aWxsIHByb2R1Y2UgYW5vdGhlciBzZXQgdGhhdCBpcyBlcXVhbCB0byB0aGlzIG9uZS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIHRvUGF0dGVybihib29sZWFuIGVzY2FwZVVucHJpbnRhYmxlKSB7CisgICAgICAgIFN0cmluZ0J1ZmZlciByZXN1bHQgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIHJldHVybiBfdG9QYXR0ZXJuKHJlc3VsdCwgZXNjYXBlVW5wcmludGFibGUpLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQXBwZW5kIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgc2V0IHRvIHJlc3VsdC4gIFRoaXMgd2lsbCBiZQorICAgICAqIGEgY2xlYW5lZCB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcgcGFzc2VkIHRvIGFwcGx5UGF0dGVybigpLCBpZiB0aGVyZQorICAgICAqIGlzIG9uZS4gIE90aGVyd2lzZSBpdCB3aWxsIGJlIGdlbmVyYXRlZC4KKyAgICAgKi8KKyAgICBwcml2YXRlIFN0cmluZ0J1ZmZlciBfdG9QYXR0ZXJuKFN0cmluZ0J1ZmZlciByZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGVzY2FwZVVucHJpbnRhYmxlKSB7CisgICAgICAgIGlmIChwYXQgIT0gbnVsbCkgeworICAgICAgICAgICAgaW50IGk7CisgICAgICAgICAgICBpbnQgYmFja3NsYXNoQ291bnQgPSAwOworICAgICAgICAgICAgZm9yIChpPTA7IGk8cGF0Lmxlbmd0aCgpOyApIHsKKyAgICAgICAgICAgICAgICBpbnQgYyA9IFVURjE2LmNoYXJBdChwYXQsIGkpOworICAgICAgICAgICAgICAgIGkgKz0gVVRGMTYuZ2V0Q2hhckNvdW50KGMpOworICAgICAgICAgICAgICAgIGlmIChlc2NhcGVVbnByaW50YWJsZSAmJiBVdGlsaXR5LmlzVW5wcmludGFibGUoYykpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHVucHJpbnRhYmxlIGNoYXJhY3RlciBpcyBwcmVjZWRlZCBieSBhbiBvZGQKKyAgICAgICAgICAgICAgICAgICAgLy8gbnVtYmVyIG9mIGJhY2tzbGFzaGVzLCB0aGVuIGl0IGhhcyBiZWVuIGVzY2FwZWQuCisgICAgICAgICAgICAgICAgICAgIC8vIEJlZm9yZSB1bmVzY2FwaW5nIGl0LCB3ZSBkZWxldGUgdGhlIGZpbmFsCisgICAgICAgICAgICAgICAgICAgIC8vIGJhY2tzbGFzaC4KKyAgICAgICAgICAgICAgICAgICAgaWYgKChiYWNrc2xhc2hDb3VudCAlIDIpID09IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zZXRMZW5ndGgocmVzdWx0Lmxlbmd0aCgpIC0gMSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgVXRpbGl0eS5lc2NhcGVVbnByaW50YWJsZShyZXN1bHQsIGMpOworICAgICAgICAgICAgICAgICAgICBiYWNrc2xhc2hDb3VudCA9IDA7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgVVRGMTYuYXBwZW5kKHJlc3VsdCwgYyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjID09ICdcXCcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrYmFja3NsYXNoQ291bnQ7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBiYWNrc2xhc2hDb3VudCA9IDA7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIF9nZW5lcmF0ZVBhdHRlcm4ocmVzdWx0LCBlc2NhcGVVbnByaW50YWJsZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2VuZXJhdGUgYW5kIGFwcGVuZCBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHNldCB0byByZXN1bHQuCisgICAgICogVGhpcyBkb2VzIG5vdCB1c2UgdGhpcy5wYXQsIHRoZSBjbGVhbmVkIHVwIGNvcHkgb2YgdGhlIHN0cmluZworICAgICAqIHBhc3NlZCB0byBhcHBseVBhdHRlcm4oKS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nQnVmZmVyIF9nZW5lcmF0ZVBhdHRlcm4oU3RyaW5nQnVmZmVyIHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBlc2NhcGVVbnByaW50YWJsZSkgeworICAgICAgICByZXN1bHQuYXBwZW5kKCdbJyk7CisKKy8vICAgICAgLy8gQ2hlY2sgYWdhaW5zdCB0aGUgcHJlZGVmaW5lZCBjYXRlZ29yaWVzLiAgV2UgaW1wbGljaXRseSBidWlsZAorLy8gICAgICAvLyB1cCBBTEwgY2F0ZWdvcnkgc2V0cyB0aGUgZmlyc3QgdGltZSB0b1BhdHRlcm4oKSBpcyBjYWxsZWQuCisvLyAgICAgIGZvciAoaW50IGNhdD0wOyBjYXQ8Q0FURUdPUllfQ09VTlQ7ICsrY2F0KSB7CisvLyAgICAgICAgICBpZiAodGhpcy5lcXVhbHMoZ2V0Q2F0ZWdvcnlTZXQoY2F0KSkpIHsKKy8vICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCc6Jyk7CisvLyAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChDQVRFR09SWV9OQU1FUy5zdWJzdHJpbmcoY2F0KjIsIGNhdCoyKzIpKTsKKy8vICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LmFwcGVuZCgiOl0iKTsKKy8vICAgICAgICAgIH0KKy8vICAgICAgfQorCisgICAgICAgIGludCBjb3VudCA9IGdldFJhbmdlQ291bnQoKTsKKworICAgICAgICAvLyBJZiB0aGUgc2V0IGNvbnRhaW5zIGF0IGxlYXN0IDIgaW50ZXJ2YWxzIGFuZCBpbmNsdWRlcyBib3RoCisgICAgICAgIC8vIE1JTl9WQUxVRSBhbmQgTUFYX1ZBTFVFLCB0aGVuIHRoZSBpbnZlcnNlIHJlcHJlc2VudGF0aW9uIHdpbGwKKyAgICAgICAgLy8gYmUgbW9yZSBlY29ub21pY2FsLgorICAgICAgICBpZiAoY291bnQgPiAxICYmCisgICAgICAgICAgICBnZXRSYW5nZVN0YXJ0KDApID09IE1JTl9WQUxVRSAmJgorICAgICAgICAgICAgZ2V0UmFuZ2VFbmQoY291bnQtMSkgPT0gTUFYX1ZBTFVFKSB7CisKKyAgICAgICAgICAgIC8vIEVtaXQgdGhlIGludmVyc2UKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ14nKTsKKworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgICAgICAgICAgaW50IHN0YXJ0ID0gZ2V0UmFuZ2VFbmQoaS0xKSsxOworICAgICAgICAgICAgICAgIGludCBlbmQgPSBnZXRSYW5nZVN0YXJ0KGkpLTE7CisgICAgICAgICAgICAgICAgX2FwcGVuZFRvUGF0KHJlc3VsdCwgc3RhcnQsIGVzY2FwZVVucHJpbnRhYmxlKTsKKyAgICAgICAgICAgICAgICBpZiAoc3RhcnQgIT0gZW5kKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJy0nKTsKKyAgICAgICAgICAgICAgICAgICAgX2FwcGVuZFRvUGF0KHJlc3VsdCwgZW5kLCBlc2NhcGVVbnByaW50YWJsZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gRGVmYXVsdDsgZW1pdCB0aGUgcmFuZ2VzIGFzIHBhaXJzCisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgICAgICAgICAgaW50IHN0YXJ0ID0gZ2V0UmFuZ2VTdGFydChpKTsKKyAgICAgICAgICAgICAgICBpbnQgZW5kID0gZ2V0UmFuZ2VFbmQoaSk7CisgICAgICAgICAgICAgICAgX2FwcGVuZFRvUGF0KHJlc3VsdCwgc3RhcnQsIGVzY2FwZVVucHJpbnRhYmxlKTsKKyAgICAgICAgICAgICAgICBpZiAoc3RhcnQgIT0gZW5kKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJy0nKTsKKyAgICAgICAgICAgICAgICAgICAgX2FwcGVuZFRvUGF0KHJlc3VsdCwgZW5kLCBlc2NhcGVVbnByaW50YWJsZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKHN0cmluZ3Muc2l6ZSgpID4gMCkgeworICAgICAgICAgICAgSXRlcmF0b3IgaXQgPSBzdHJpbmdzLml0ZXJhdG9yKCk7CisgICAgICAgICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgneycpOworICAgICAgICAgICAgICAgIF9hcHBlbmRUb1BhdChyZXN1bHQsIChTdHJpbmcpIGl0Lm5leHQoKSwgZXNjYXBlVW5wcmludGFibGUpOworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ30nKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0LmFwcGVuZCgnXScpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGlzIHNldCAoaXRzIGNhcmRpbmFsaXR5KSwKKyAgICAgKiA8ZW0+bjwvZW0+LCB3aGVyZSA8Y29kZT4wIDw9IDwvY29kZT48ZW0+bjwvZW0+PGNvZGU+IDw9IDY1NTM2PC9jb2RlPi4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGlzIHNldCAoaXRzIGNhcmRpbmFsaXR5KS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IHNpemUoKSB7CisgICAgICAgIGludCBuID0gMDsKKyAgICAgICAgaW50IGNvdW50ID0gZ2V0UmFuZ2VDb3VudCgpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgICAgIG4gKz0gZ2V0UmFuZ2VFbmQoaSkgLSBnZXRSYW5nZVN0YXJ0KGkpICsgMTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbiArIHN0cmluZ3Muc2l6ZSgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgPHR0PnRydWU8L3R0PiBpZiB0aGlzIHNldCBjb250YWlucyBubyBlbGVtZW50cy4KKyAgICAgKgorICAgICAqIEByZXR1cm4gPHR0PnRydWU8L3R0PiBpZiB0aGlzIHNldCBjb250YWlucyBubyBlbGVtZW50cy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc0VtcHR5KCkgeworICAgICAgICByZXR1cm4gbGVuID09IDEgJiYgc3RyaW5ncy5zaXplKCkgPT0gMDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbXBsZW1lbnRhdGlvbiBvZiBVbmljb2RlTWF0Y2hlciBBUEkuICBSZXR1cm5zIDx0dD50cnVlPC90dD4gaWYKKyAgICAgKiB0aGlzIHNldCBjb250YWlucyBhbnkgY2hhcmFjdGVyIHdob3NlIGxvdyBieXRlIGlzIHRoZSBnaXZlbgorICAgICAqIHZhbHVlLiAgVGhpcyBpcyB1c2VkIGJ5IDx0dD5SdWxlQmFzZWRUcmFuc2xpdGVyYXRvcjwvdHQ+IGZvcgorICAgICAqIGluZGV4aW5nLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIG1hdGNoZXNJbmRleFZhbHVlKGludCB2KSB7CisgICAgICAgIC8qIFRoZSBpbmRleCB2YWx1ZSB2LCBpbiB0aGUgcmFuZ2UgWzAsMjU1XSwgaXMgY29udGFpbmVkIGluIHRoaXMgc2V0IGlmCisgICAgICAgICAqIGl0IGlzIGNvbnRhaW5lZCBpbiBhbnkgcGFpciBvZiB0aGlzIHNldC4gIFBhaXJzIGVpdGhlciBoYXZlIHRoZSBoaWdoCisgICAgICAgICAqIGJ5dGVzIGVxdWFsLCBvciB1bmVxdWFsLiAgSWYgdGhlIGhpZ2ggYnl0ZXMgYXJlIGVxdWFsLCB0aGVuIHdlIGhhdmUKKyAgICAgICAgICogYWF4eC4uYWF5eSwgd2hlcmUgYWEgaXMgdGhlIGhpZ2ggYnl0ZS4gIFRoZW4gdiBpcyBjb250YWluZWQgaWYgeHggPD0KKyAgICAgICAgICogdiA8PSB5eS4gIElmIHRoZSBoaWdoIGJ5dGVzIGFyZSB1bmVxdWFsIHdlIGhhdmUgYWF4eC4uYmJ5eSwgYmI+YWEuCisgICAgICAgICAqIFRoZW4gdiBpcyBjb250YWluZWQgaWYgeHggPD0gdiB8fCB2IDw9IHl5LiAgKFRoaXMgaXMgaWRlbnRpY2FsIHRvIHRoZQorICAgICAgICAgKiB0aW1lIHpvbmUgbW9udGggY29udGFpbm1lbnQgbG9naWMuKQorICAgICAgICAgKi8KKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPGdldFJhbmdlQ291bnQoKTsgKytpKSB7CisgICAgICAgICAgICBpbnQgbG93ID0gZ2V0UmFuZ2VTdGFydChpKTsKKyAgICAgICAgICAgIGludCBoaWdoID0gZ2V0UmFuZ2VFbmQoaSk7CisgICAgICAgICAgICBpZiAoKGxvdyAmIH4weEZGKSA9PSAoaGlnaCAmIH4weEZGKSkgeworICAgICAgICAgICAgICAgIGlmICgobG93ICYgMHhGRikgPD0gdiAmJiB2IDw9IChoaWdoICYgMHhGRikpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmICgobG93ICYgMHhGRikgPD0gdiB8fCB2IDw9IChoaWdoICYgMHhGRikpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoc3RyaW5ncy5zaXplKCkgIT0gMCkgeworICAgICAgICAgICAgSXRlcmF0b3IgaXQgPSBzdHJpbmdzLml0ZXJhdG9yKCk7CisgICAgICAgICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHMgPSAoU3RyaW5nKSBpdC5uZXh0KCk7CisgICAgICAgICAgICAgICAgLy9pZiAocy5sZW5ndGgoKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgLy8gICAgLy8gRW1wdHkgc3RyaW5ncyBtYXRjaCBldmVyeXRoaW5nCisgICAgICAgICAgICAgICAgLy8gICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgLy99CisgICAgICAgICAgICAgICAgLy8gYXNzZXJ0KHMubGVuZ3RoKCkgIT0gMCk7IC8vIFdlIGVuZm9yY2UgdGhpcyBlbHNld2hlcmUKKyAgICAgICAgICAgICAgICBpbnQgYyA9IFVURjE2LmNoYXJBdChzLCAwKTsKKyAgICAgICAgICAgICAgICBpZiAoKGMgJiAweEZGKSA9PSB2KSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLyoqCisgICAgICogSW1wbGVtZW50YXRpb24gb2YgVW5pY29kZU1hdGNoZXIubWF0Y2hlcygpLiAgQWx3YXlzIG1hdGNoZXMgdGhlCisgICAgICogbG9uZ2VzdCBwb3NzaWJsZSBtdWx0aWNoYXIgc3RyaW5nLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBpbnQgbWF0Y2hlcyhSZXBsYWNlYWJsZSB0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICBpbnRbXSBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBpbmNyZW1lbnRhbCkgeworICAgICAgICAKKyAgICAgICAgaWYgKG9mZnNldFswXSA9PSBsaW1pdCkgeworICAgICAgICAgICAgLy8gU3RyaW5ncywgaWYgYW55LCBoYXZlIGxlbmd0aCAhPSAwLCBzbyB3ZSBkb24ndCB3b3JyeQorICAgICAgICAgICAgLy8gYWJvdXQgdGhlbSBoZXJlLiAgSWYgd2UgZXZlciBhbGxvdyB6ZXJvLWxlbmd0aCBzdHJpbmdzCisgICAgICAgICAgICAvLyB3ZSBtdWNoIGNoZWNrIGZvciB0aGVtIGhlcmUuCisgICAgICAgICAgICBpZiAoY29udGFpbnMoVHJhbnNsaXRlcmF0aW9uUnVsZS5FVEhFUikpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5jcmVtZW50YWwgPyBVX1BBUlRJQUxfTUFUQ0ggOiBVX01BVENIOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gVV9NSVNNQVRDSDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChzdHJpbmdzLnNpemUoKSAhPSAwKSB7IC8vIHRyeSBzdHJpbmdzIGZpcnN0CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBtaWdodCBzZXBhcmF0ZSBmb3J3YXJkIGFuZCBiYWNrd2FyZCBsb29wcyBsYXRlcgorICAgICAgICAgICAgICAgIC8vIGZvciBub3cgdGhleSBhcmUgY29tYmluZWQKKworICAgICAgICAgICAgICAgIC8vIFRPRE8gSW1wcm92ZSBlZmZpY2llbmN5IG9mIHRoaXMsIGF0IGxlYXN0IGluIHRoZSBmb3J3YXJkCisgICAgICAgICAgICAgICAgLy8gZGlyZWN0aW9uLCBpZiBub3QgaW4gYm90aC4gIEluIHRoZSBmb3J3YXJkIGRpcmVjdGlvbiB3ZQorICAgICAgICAgICAgICAgIC8vIGNhbiBhc3N1bWUgdGhlIHN0cmluZ3MgYXJlIHNvcnRlZC4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIEl0ZXJhdG9yIGl0ID0gc3RyaW5ncy5pdGVyYXRvcigpOworICAgICAgICAgICAgICAgIGJvb2xlYW4gZm9yd2FyZCA9IG9mZnNldFswXSA8IGxpbWl0OworCisgICAgICAgICAgICAgICAgLy8gZmlyc3RDaGFyIGlzIHRoZSBsZWZ0bW9zdCBjaGFyIHRvIG1hdGNoIGluIHRoZQorICAgICAgICAgICAgICAgIC8vIGZvcndhcmQgZGlyZWN0aW9uIG9yIHRoZSByaWdodG1vc3QgY2hhciB0byBtYXRjaCBpbgorICAgICAgICAgICAgICAgIC8vIHRoZSByZXZlcnNlIGRpcmVjdGlvbi4KKyAgICAgICAgICAgICAgICBjaGFyIGZpcnN0Q2hhciA9IHRleHQuY2hhckF0KG9mZnNldFswXSk7CisKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgc3RyaW5ncyB0aGF0IGNhbiBtYXRjaCB3ZQorICAgICAgICAgICAgICAgIC8vIHJldHVybiB0aGUgbG9uZ2VzdCBtYXRjaC4KKyAgICAgICAgICAgICAgICBpbnQgaGlnaFdhdGVyTGVuZ3RoID0gMDsKKworICAgICAgICAgICAgICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHRyaWFsID0gKFN0cmluZykgaXQubmV4dCgpOworCisgICAgICAgICAgICAgICAgICAgIC8vaWYgKHRyaWFsLmxlbmd0aCgpID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gICAgcmV0dXJuIFVfTUFUQ0g7IC8vIG51bGwtc3RyaW5nIGFsd2F5cyBtYXRjaGVzCisgICAgICAgICAgICAgICAgICAgIC8vfQorICAgICAgICAgICAgICAgICAgICAvLyBhc3NlcnQodHJpYWwubGVuZ3RoKCkgIT0gMCk7IC8vIFdlIGVuc3VyZSB0aGlzIGVsc2V3aGVyZQorCisgICAgICAgICAgICAgICAgICAgIGNoYXIgYyA9IHRyaWFsLmNoYXJBdChmb3J3YXJkID8gMCA6IHRyaWFsLmxlbmd0aCgpIC0gMSk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gU3RyaW5ncyBhcmUgc29ydGVkLCBzbyB3ZSBjYW4gb3B0aW1pemUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIC8vIGZvcndhcmQgZGlyZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICBpZiAoZm9yd2FyZCAmJiBjID4gZmlyc3RDaGFyKSBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgIT0gZmlyc3RDaGFyKSBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpbnQgbGVuID0gbWF0Y2hSZXN0KHRleHQsIG9mZnNldFswXSwgbGltaXQsIHRyaWFsKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoaW5jcmVtZW50YWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBtYXhMZW4gPSBmb3J3YXJkID8gbGltaXQtb2Zmc2V0WzBdIDogb2Zmc2V0WzBdLWxpbWl0OworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbiA9PSBtYXhMZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIHN1Y2Nlc3NmdWxseSBtYXRjaGVkIGJ1dCBvbmx5IHVwIHRvIGxpbWl0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBVX1BBUlRJQUxfTUFUQ0g7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBpZiAobGVuID09IHRyaWFsLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIHN1Y2Nlc3NmdWxseSBtYXRjaGVkIHRoZSB3aG9sZSBzdHJpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVuID4gaGlnaFdhdGVyTGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlnaFdhdGVyTGVuZ3RoID0gbGVuOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW4gdGhlIGZvcndhcmQgZGlyZWN0aW9uIHdlIGtub3cgc3RyaW5ncworICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXJlIHNvcnRlZCBzbyB3ZSBjYW4gYmFpbCBlYXJseS4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb3J3YXJkICYmIGxlbiA8IGhpZ2hXYXRlckxlbmd0aCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBXZSd2ZSBjaGVja2VkIGFsbCBzdHJpbmdzIHdpdGhvdXQgYSBwYXJ0aWFsIG1hdGNoLgorICAgICAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgZnVsbCBtYXRjaGVzLCByZXR1cm4gdGhlIGxvbmdlc3Qgb25lLgorICAgICAgICAgICAgICAgIGlmIChoaWdoV2F0ZXJMZW5ndGggIT0gMCkgeworICAgICAgICAgICAgICAgICAgICBvZmZzZXRbMF0gKz0gZm9yd2FyZCA/IGhpZ2hXYXRlckxlbmd0aCA6IC1oaWdoV2F0ZXJMZW5ndGg7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBVX01BVENIOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBzdXBlci5tYXRjaGVzKHRleHQsIG9mZnNldCwgbGltaXQsIGluY3JlbWVudGFsKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBsb25nZXN0IG1hdGNoIGZvciBzIGluIHRleHQgYXQgdGhlIGdpdmVuIHBvc2l0aW9uLgorICAgICAqIElmIGxpbWl0ID4gc3RhcnQgdGhlbiBtYXRjaCBmb3J3YXJkIGZyb20gc3RhcnQrMSB0byBsaW1pdAorICAgICAqIG1hdGNoaW5nIGFsbCBjaGFyYWN0ZXJzIGV4Y2VwdCBzLmNoYXJBdCgwKS4gIElmIGxpbWl0IDwgc3RhcnQsCisgICAgICogZ28gYmFja3dhcmQgc3RhcnRpbmcgZnJvbSBzdGFydC0xIG1hdGNoaW5nIGFsbCBjaGFyYWN0ZXJzCisgICAgICogZXhjZXB0IHMuY2hhckF0KHMubGVuZ3RoKCktMSkuICBUaGlzIG1ldGhvZCBhc3N1bWVzIHRoYXQgdGhlCisgICAgICogZmlyc3QgY2hhcmFjdGVyLCB0ZXh0LmNoYXJBdChzdGFydCksIG1hdGNoZXMgcywgc28gaXQgZG9lcyBub3QKKyAgICAgKiBjaGVjayBpdC4KKyAgICAgKiBAcGFyYW0gdGV4dCB0aGUgdGV4dCB0byBtYXRjaAorICAgICAqIEBwYXJhbSBzdGFydCB0aGUgZmlyc3QgY2hhcmFjdGVyIHRvIG1hdGNoLiAgSW4gdGhlIGZvcndhcmQKKyAgICAgKiBkaXJlY3Rpb24sIHRleHQuY2hhckF0KHN0YXJ0KSBpcyBtYXRjaGVkIGFnYWluc3Qgcy5jaGFyQXQoMCkuCisgICAgICogSW4gdGhlIHJldmVyc2UgZGlyZWN0aW9uLCBpdCBpcyBtYXRjaGVkIGFnYWluc3QKKyAgICAgKiBzLmNoYXJBdChzLmxlbmd0aCgpLTEpLgorICAgICAqIEBwYXJhbSBsaW1pdCB0aGUgbGltaXQgb2Zmc2V0IGZvciBtYXRjaGluZywgZWl0aGVyIGxhc3QrMSBpbgorICAgICAqIHRoZSBmb3J3YXJkIGRpcmVjdGlvbiwgb3IgbGFzdC0xIGluIHRoZSByZXZlcnNlIGRpcmVjdGlvbiwKKyAgICAgKiB3aGVyZSBsYXN0IGlzIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBjaGFyYWN0ZXIgdG8gbWF0Y2guCisgICAgICogQHJldHVybiBJZiBwYXJ0IG9mIHMgbWF0Y2hlcyB1cCB0byB0aGUgbGltaXQsIHJldHVybiB8bGltaXQgLQorICAgICAqIHN0YXJ0fC4gIElmIGFsbCBvZiBzIG1hdGNoZXMgYmVmb3JlIHJlYWNoaW5nIHRoZSBsaW1pdCwgcmV0dXJuCisgICAgICogcy5sZW5ndGgoKS4gIElmIHRoZXJlIGlzIGEgbWlzbWF0Y2ggYmV0d2VlbiBzIGFuZCB0ZXh0LCByZXR1cm4KKyAgICAgKiAwCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgaW50IG1hdGNoUmVzdCAoUmVwbGFjZWFibGUgdGV4dCwgaW50IHN0YXJ0LCBpbnQgbGltaXQsIFN0cmluZyBzKSB7CisgICAgICAgIGludCBtYXhMZW47CisgICAgICAgIGludCBzbGVuID0gcy5sZW5ndGgoKTsKKyAgICAgICAgaWYgKHN0YXJ0IDwgbGltaXQpIHsKKyAgICAgICAgICAgIG1heExlbiA9IGxpbWl0IC0gc3RhcnQ7CisgICAgICAgICAgICBpZiAobWF4TGVuID4gc2xlbikgbWF4TGVuID0gc2xlbjsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgbWF4TGVuOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAodGV4dC5jaGFyQXQoc3RhcnQgKyBpKSAhPSBzLmNoYXJBdChpKSkgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtYXhMZW4gPSBzdGFydCAtIGxpbWl0OworICAgICAgICAgICAgaWYgKG1heExlbiA+IHNsZW4pIG1heExlbiA9IHNsZW47CisgICAgICAgICAgICAtLXNsZW47IC8vIDw9PiBzbGVuID0gcy5sZW5ndGgoKSAtIDE7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IG1heExlbjsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKHRleHQuY2hhckF0KHN0YXJ0IC0gaSkgIT0gcy5jaGFyQXQoc2xlbiAtIGkpKSByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbWF4TGVuOworICAgIH0KKyAgICAgICAgCisKKyAgICAvKioKKyAgICAgKiBJbXBsZW1lbnRhdGlvbiBvZiBVbmljb2RlTWF0Y2hlciBBUEkuICBVbmlvbiB0aGUgc2V0IG9mIGFsbAorICAgICAqIGNoYXJhY3RlcnMgdGhhdCBtYXkgYmUgbWF0Y2hlZCBieSB0aGlzIG9iamVjdCBpbnRvIHRoZSBnaXZlbgorICAgICAqIHNldC4KKyAgICAgKiBAcGFyYW0gdG9VbmlvblRvIHRoZSBzZXQgaW50byB3aGljaCB0byB1bmlvbiB0aGUgc291cmNlIGNoYXJhY3RlcnMKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGFkZE1hdGNoU2V0VG8oVW5pY29kZVNldCB0b1VuaW9uVG8pIHsKKyAgICAgICAgdG9VbmlvblRvLmFkZEFsbCh0aGlzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZ2l2ZW4gY2hhcmFjdGVyIHdpdGhpbiB0aGlzIHNldCwgd2hlcmUKKyAgICAgKiB0aGUgc2V0IGlzIG9yZGVyZWQgYnkgYXNjZW5kaW5nIGNvZGUgcG9pbnQuICBJZiB0aGUgY2hhcmFjdGVyCisgICAgICogaXMgbm90IGluIHRoaXMgc2V0LCByZXR1cm4gLTEuICBUaGUgaW52ZXJzZSBvZiB0aGlzIG1ldGhvZCBpcworICAgICAqIDxjb2RlPmNoYXJBdCgpPC9jb2RlPi4KKyAgICAgKiBAcmV0dXJuIGFuIGluZGV4IGZyb20gMC4uc2l6ZSgpLTEsIG9yIC0xCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGludCBpbmRleE9mKGludCBjKSB7CisgICAgICAgIGlmIChjIDwgTUlOX1ZBTFVFIHx8IGMgPiBNQVhfVkFMVUUpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgY29kZSBwb2ludCBVKyIgKyBVdGlsaXR5LmhleChjLCA2KSk7CisgICAgICAgIH0KKyAgICAgICAgaW50IGkgPSAwOworICAgICAgICBpbnQgbiA9IDA7CisgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgIGludCBzdGFydCA9IGxpc3RbaSsrXTsKKyAgICAgICAgICAgIGlmIChjIDwgc3RhcnQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbnQgbGltaXQgPSBsaXN0W2krK107CisgICAgICAgICAgICBpZiAoYyA8IGxpbWl0KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG4gKyBjIC0gc3RhcnQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBuICs9IGxpbWl0IC0gc3RhcnQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBjaGFyYWN0ZXIgYXQgdGhlIGdpdmVuIGluZGV4IHdpdGhpbiB0aGlzIHNldCwgd2hlcmUKKyAgICAgKiB0aGUgc2V0IGlzIG9yZGVyZWQgYnkgYXNjZW5kaW5nIGNvZGUgcG9pbnQuICBJZiB0aGUgaW5kZXggaXMKKyAgICAgKiBvdXQgb2YgcmFuZ2UsIHJldHVybiAtMS4gIFRoZSBpbnZlcnNlIG9mIHRoaXMgbWV0aG9kIGlzCisgICAgICogPGNvZGU+aW5kZXhPZigpPC9jb2RlPi4KKyAgICAgKiBAcGFyYW0gaW5kZXggYW4gaW5kZXggZnJvbSAwLi5zaXplKCktMQorICAgICAqIEByZXR1cm4gdGhlIGNoYXJhY3RlciBhdCB0aGUgZ2l2ZW4gaW5kZXgsIG9yIC0xLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBpbnQgY2hhckF0KGludCBpbmRleCkgeworICAgICAgICBpZiAoaW5kZXggPj0gMCkgeworICAgICAgICAgICAgLy8gbGVuMiBpcyB0aGUgbGFyZ2VzdCBldmVuIGludGVnZXIgPD0gbGVuLCB0aGF0IGlzLCBpdCBpcyBsZW4KKyAgICAgICAgICAgIC8vIGZvciBldmVuIHZhbHVlcyBhbmQgbGVuLTEgZm9yIG9kZCB2YWx1ZXMuICBXaXRoIG9kZCB2YWx1ZXMKKyAgICAgICAgICAgIC8vIHRoZSBsYXN0IGVudHJ5IGlzIFVOSUNPREVTRVRfSElHSC4KKyAgICAgICAgICAgIGludCBsZW4yID0gbGVuICYgfjE7CisgICAgICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBsZW4yOykgeworICAgICAgICAgICAgICAgIGludCBzdGFydCA9IGxpc3RbaSsrXTsKKyAgICAgICAgICAgICAgICBpbnQgY291bnQgPSBsaXN0W2krK10gLSBzdGFydDsKKyAgICAgICAgICAgICAgICBpZiAoaW5kZXggPCBjb3VudCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RhcnQgKyBpbmRleDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaW5kZXggLT0gY291bnQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIC8qKgorICAgICAqIEFkZHMgdGhlIHNwZWNpZmllZCByYW5nZSB0byB0aGlzIHNldCBpZiBpdCBpcyBub3QgYWxyZWFkeQorICAgICAqIHByZXNlbnQuICBJZiB0aGlzIHNldCBhbHJlYWR5IGNvbnRhaW5zIHRoZSBzcGVjaWZpZWQgcmFuZ2UsCisgICAgICogdGhlIGNhbGwgbGVhdmVzIHRoaXMgc2V0IHVuY2hhbmdlZC4gIElmIDxjb2RlPmVuZCA+IHN0YXJ0PC9jb2RlPgorICAgICAqIHRoZW4gYW4gZW1wdHkgcmFuZ2UgaXMgYWRkZWQsIGxlYXZpbmcgdGhlIHNldCB1bmNoYW5nZWQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gc3RhcnQgZmlyc3QgY2hhcmFjdGVyLCBpbmNsdXNpdmUsIG9mIHJhbmdlIHRvIGJlIGFkZGVkCisgICAgICogdG8gdGhpcyBzZXQuCisgICAgICogQHBhcmFtIGVuZCBsYXN0IGNoYXJhY3RlciwgaW5jbHVzaXZlLCBvZiByYW5nZSB0byBiZSBhZGRlZAorICAgICAqIHRvIHRoaXMgc2V0LgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBVbmljb2RlU2V0IGFkZChpbnQgc3RhcnQsIGludCBlbmQpIHsKKyAgICAgICAgaWYgKHN0YXJ0IDwgTUlOX1ZBTFVFIHx8IHN0YXJ0ID4gTUFYX1ZBTFVFKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIGNvZGUgcG9pbnQgVSsiICsgVXRpbGl0eS5oZXgoc3RhcnQsIDYpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZW5kIDwgTUlOX1ZBTFVFIHx8IGVuZCA+IE1BWF9WQUxVRSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBjb2RlIHBvaW50IFUrIiArIFV0aWxpdHkuaGV4KGVuZCwgNikpOworICAgICAgICB9CisgICAgICAgIGlmIChzdGFydCA8IGVuZCkgeworICAgICAgICAgICAgYWRkKHJhbmdlKHN0YXJ0LCBlbmQpLCAyLCAwKTsKKyAgICAgICAgfSBlbHNlIGlmIChzdGFydCA9PSBlbmQpIHsKKyAgICAgICAgICAgIGFkZChzdGFydCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCisvLyAgICAvKioKKy8vICAgICAqIEZvcm1hdCBvdXQgdGhlIGludmVyc2lvbiBsaXN0IGFzIGEgc3RyaW5nLCBmb3IgZGVidWdnaW5nLiAgVW5jb21tZW50IHdoZW4KKy8vICAgICAqIG5lZWRlZC4KKy8vICAgICAqLworLy8gICAgcHVibGljIGZpbmFsIFN0cmluZyBkdW1wKCkgeworLy8gICAgICAgIFN0cmluZ0J1ZmZlciBidWYgPSBuZXcgU3RyaW5nQnVmZmVyKCJbIik7CisvLyAgICAgICAgZm9yIChpbnQgaT0wOyBpPGxlbjsgKytpKSB7CisvLyAgICAgICAgICAgIGlmIChpICE9IDApIGJ1Zi5hcHBlbmQoIiwgIik7CisvLyAgICAgICAgICAgIGludCBjID0gbGlzdFtpXTsKKy8vICAgICAgICAgICAgLy9pZiAoYyA8PSAweDdGICYmIGMgIT0gJ1xuJyAmJiBjICE9ICdccicgJiYgYyAhPSAnXHQnICYmIGMgIT0gJyAnKSB7CisvLyAgICAgICAgICAgIC8vICAgIGJ1Zi5hcHBlbmQoKGNoYXIpIGMpOworLy8gICAgICAgICAgICAvL30gZWxzZSB7CisvLyAgICAgICAgICAgICAgICBidWYuYXBwZW5kKCJVKyIpLmFwcGVuZChVdGlsaXR5LmhleChjLCAoYzwweDEwMDAwKT80OjYpKTsKKy8vICAgICAgICAgICAgLy99CisvLyAgICAgICAgfQorLy8gICAgICAgIGJ1Zi5hcHBlbmQoIl0iKTsKKy8vICAgICAgICByZXR1cm4gYnVmLnRvU3RyaW5nKCk7CisvLyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBZGRzIHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVyIHRvIHRoaXMgc2V0IGlmIGl0IGlzIG5vdCBhbHJlYWR5CisgICAgICogcHJlc2VudC4gIElmIHRoaXMgc2V0IGFscmVhZHkgY29udGFpbnMgdGhlIHNwZWNpZmllZCBjaGFyYWN0ZXIsCisgICAgICogdGhlIGNhbGwgbGVhdmVzIHRoaXMgc2V0IHVuY2hhbmdlZC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgVW5pY29kZVNldCBhZGQoaW50IGMpIHsKKyAgICAgICAgaWYgKGMgPCBNSU5fVkFMVUUgfHwgYyA+IE1BWF9WQUxVRSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBjb2RlIHBvaW50IFUrIiArIFV0aWxpdHkuaGV4KGMsIDYpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGZpbmQgc21hbGxlc3QgaSBzdWNoIHRoYXQgYyA8IGxpc3RbaV0KKyAgICAgICAgLy8gaWYgb2RkLCB0aGVuIGl0IGlzIElOIHRoZSBzZXQKKyAgICAgICAgLy8gaWYgZXZlbiwgdGhlbiBpdCBpcyBPVVQgb2YgdGhlIHNldAorICAgICAgICBpbnQgaSA9IGZpbmRDb2RlUG9pbnQoYyk7CisKKyAgICAgICAgLy8gYWxyZWFkeSBpbiBzZXQ/CisgICAgICAgIGlmICgoaSAmIDEpICE9IDApIHJldHVybiB0aGlzOworCisgICAgICAgIC8vIEhJR0ggaXMgMHgxMTAwMDAKKyAgICAgICAgLy8gYXNzZXJ0KGxpc3RbbGVuLTFdID09IEhJR0gpOworICAgICAgICAKKyAgICAgICAgLy8gZW1wdHkgPSBbSElHSF0KKyAgICAgICAgLy8gW3N0YXJ0XzAsIGxpbWl0XzAsIHN0YXJ0XzEsIGxpbWl0XzEsIEhJR0hdCisKKyAgICAgICAgLy8gWy4uLiwgc3RhcnRfay0xLCBsaW1pdF9rLTEsIHN0YXJ0X2ssIGxpbWl0X2ssIC4uLiwgSElHSF0KKyAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKyAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RbaV0KKworICAgICAgICAvLyBpID09IDAgbWVhbnMgYyBpcyBiZWZvcmUgdGhlIGZpcnN0IHJhbmdlCisKKyAgICAgICAgaWYgKGMgPT0gbGlzdFtpXS0xKSB7CisgICAgICAgICAgICAvLyBjIGlzIGJlZm9yZSBzdGFydCBvZiBuZXh0IHJhbmdlCisgICAgICAgICAgICBsaXN0W2ldID0gYzsKKyAgICAgICAgICAgIC8vIGlmIHdlIHRvdWNoZWQgdGhlIEhJR0ggbWFyaywgdGhlbiBhZGQgYSBuZXcgb25lCisgICAgICAgICAgICBpZiAoYyA9PSBNQVhfVkFMVUUpIHsKKyAgICAgICAgICAgICAgICBlbnN1cmVDYXBhY2l0eShsZW4rMSk7CisgICAgICAgICAgICAgICAgbGlzdFtsZW4rK10gPSBISUdIOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGkgPiAwICYmIGMgPT0gbGlzdFtpLTFdKSB7CisgICAgICAgICAgICAgICAgLy8gY29sbGFwc2UgYWRqYWNlbnQgcmFuZ2VzCisKKyAgICAgICAgICAgICAgICAvLyBbLi4uLCBzdGFydF9rLTEsIGMsIGMsIGxpbWl0X2ssIC4uLiwgSElHSF0KKyAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgIF4KKyAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgIGxpc3RbaV0KKyAgICAgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KGxpc3QsIGkrMSwgbGlzdCwgaS0xLCBsZW4taS0xKTsKKyAgICAgICAgICAgICAgICBsZW4gLT0gMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGVsc2UgaWYgKGkgPiAwICYmIGMgPT0gbGlzdFtpLTFdKSB7CisgICAgICAgICAgICAvLyBjIGlzIGFmdGVyIGVuZCBvZiBwcmlvciByYW5nZQorICAgICAgICAgICAgbGlzdFtpLTFdKys7CisgICAgICAgICAgICAvLyBubyBuZWVkIHRvIGNoY2VrIGZvciBjb2xsYXBzZSBoZXJlCisgICAgICAgIH0KKworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQgd2Uga25vdyB0aGUgbmV3IGNoYXIgaXMgbm90IGFkamFjZW50IHRvCisgICAgICAgICAgICAvLyBhbnkgZXhpc3RpbmcgcmFuZ2VzLCBhbmQgaXQgaXMgbm90IDEwRkZGRi4KKworCisgICAgICAgICAgICAvLyBbLi4uLCBzdGFydF9rLTEsIGxpbWl0X2stMSwgc3RhcnRfaywgbGltaXRfaywgLi4uLCBISUdIXQorICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKyAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0W2ldCisKKyAgICAgICAgICAgIC8vIFsuLi4sIHN0YXJ0X2stMSwgbGltaXRfay0xLCBjLCBjKzEsIHN0YXJ0X2ssIGxpbWl0X2ssIC4uLiwgSElHSF0KKyAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdFtpXQorCisgICAgICAgICAgICAvLyBEb24ndCB1c2UgZW5zdXJlQ2FwYWNpdHkoKSB0byBzYXZlIG9uIGNvcHlpbmcuCisgICAgICAgICAgICAvLyBOT1RFOiBUaGlzIGhhcyBubyBtZWFzdXJhYmxlIGltcGFjdCBvbiBwZXJmb3JtYW5jZSwKKyAgICAgICAgICAgIC8vIGJ1dCBpdCBtaWdodCBoZWxwIGluIHNvbWUgdXNhZ2UgcGF0dGVybnMuCisgICAgICAgICAgICBpZiAobGVuKzIgPiBsaXN0Lmxlbmd0aCkgeworICAgICAgICAgICAgICAgIGludFtdIHRlbXAgPSBuZXcgaW50W2xlbiArIDIgKyBHUk9XX0VYVFJBXTsKKyAgICAgICAgICAgICAgICBpZiAoaSAhPSAwKSBTeXN0ZW0uYXJyYXljb3B5KGxpc3QsIDAsIHRlbXAsIDAsIGkpOworICAgICAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkobGlzdCwgaSwgdGVtcCwgaSsyLCBsZW4taSk7CisgICAgICAgICAgICAgICAgbGlzdCA9IHRlbXA7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkobGlzdCwgaSwgbGlzdCwgaSsyLCBsZW4taSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGxpc3RbaV0gPSBjOworICAgICAgICAgICAgbGlzdFtpKzFdID0gYysxOworICAgICAgICAgICAgbGVuICs9IDI7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHBhdCA9IG51bGw7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIC8qKgorICAgICAqIEFkZHMgdGhlIHNwZWNpZmllZCBtdWx0aWNoYXJhY3RlciB0byB0aGlzIHNldCBpZiBpdCBpcyBub3QgYWxyZWFkeQorICAgICAqIHByZXNlbnQuICBJZiB0aGlzIHNldCBhbHJlYWR5IGNvbnRhaW5zIHRoZSBtdWx0aWNoYXJhY3RlciwKKyAgICAgKiB0aGUgY2FsbCBsZWF2ZXMgdGhpcyBzZXQgdW5jaGFuZ2VkLgorICAgICAqIFRodXMgImNoIiA9PiB7ImNoIn0KKwkgKiA8YnI+PGI+V2FybmluZzogeW91IGNhbm5vdCBhZGQgYW4gZW1wdHkgc3RyaW5nICgiIikgdG8gYSBVbmljb2RlU2V0LjwvYj4KKyAgICAgKiBAcGFyYW0gcyB0aGUgc291cmNlIHN0cmluZworICAgICAqIEByZXR1cm4gdGhpcyBvYmplY3QsIGZvciBjaGFpbmluZworICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBVbmljb2RlU2V0IGFkZChTdHJpbmcgcykgeworICAgICAgICAKKyAgICAgICAgaW50IGNwID0gZ2V0U2luZ2xlQ1Aocyk7CisgICAgICAgIGlmIChjcCA8IDApIHsKKyAgICAgICAgCXN0cmluZ3MuYWRkKHMpOworICAgICAgICAJcGF0ID0gbnVsbDsKKwkJfSBlbHNlIHsKKwkJCWFkZChjcCwgY3ApOworCQl9CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIGEgY29kZSBwb2ludCBJRiB0aGUgc3RyaW5nIGNvbnNpc3RzIG9mIGEgc2luZ2xlIG9uZS4KKyAgICAgKiBvdGhlcndpc2UgcmV0dXJucyAtMS4KKyAgICAgKiBAcGFyYW0gc3RyaW5nIHRvIHRlc3QKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBpbnQgZ2V0U2luZ2xlQ1AoU3RyaW5nIHMpIHsKKyAgICAgICAgaWYgKHMubGVuZ3RoKCkgPCAxKSB7CisgICAgICAgIAl0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJDYW4ndCB1c2UgemVyby1sZW5ndGggc3RyaW5ncyBpbiBVbmljb2RlU2V0Iik7CisgICAgICAgIH0KKyAgICAJaWYgKHMubGVuZ3RoKCkgPiAyKSByZXR1cm4gLTE7CisgICAgCWlmIChzLmxlbmd0aCgpID09IDEpIHJldHVybiBzLmNoYXJBdCgwKTsKKyAgICAJCisgICAgCS8vIGF0IHRoaXMgcG9pbnQsIGxlbiA9IDIKKyAgICAgICAgaW50IGNwID0gVVRGMTYuY2hhckF0KHMsIDApOworICAgICAgICBpZiAoY3AgPiAweEZGRkYpIHsgLy8gaXMgc3Vycm9nYXRlIHBhaXIKKyAgICAgICAgCXJldHVybiBjcDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEFkZHMgZWFjaCBvZiB0aGUgY2hhcmFjdGVycyBpbiB0aGlzIHN0cmluZyB0byB0aGUgc2V0LiBUaHVzICJjaCIgPT4geyJjIiwgImgifQorICAgICAqIElmIHRoaXMgc2V0IGFscmVhZHkgYW55IHBhcnRpY3VsYXIgY2hhcmFjdGVyLCBpdCBoYXMgbm8gZWZmZWN0IG9uIHRoYXQgY2hhcmFjdGVyLgorICAgICAqIEBwYXJhbSBzIHRoZSBzb3VyY2Ugc3RyaW5nCisgICAgICogQHJldHVybiB0aGlzIG9iamVjdCwgZm9yIGNoYWluaW5nCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGZpbmFsIFVuaWNvZGVTZXQgYWRkQWxsKFN0cmluZyBzKSB7CisgICAgICAgIGludCBjcDsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzLmxlbmd0aCgpOyBpICs9IFVURjE2LmdldENoYXJDb3VudChjcCkpIHsKKyAgICAgICAgICAgIGNwID0gVVRGMTYuY2hhckF0KHMsIGkpOworICAgICAgICAgICAgYWRkKGNwLCBjcCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0YWlucyBFQUNIIG9mIHRoZSBjaGFyYWN0ZXJzIGluIHRoaXMgc3RyaW5nLiBOb3RlOiAiY2giID09IHsiYyIsICJoIn0KKyAgICAgKiBJZiB0aGlzIHNldCBhbHJlYWR5IGFueSBwYXJ0aWN1bGFyIGNoYXJhY3RlciwgaXQgaGFzIG5vIGVmZmVjdCBvbiB0aGF0IGNoYXJhY3Rlci4KKyAgICAgKiBAcGFyYW0gcyB0aGUgc291cmNlIHN0cmluZworICAgICAqIEByZXR1cm4gdGhpcyBvYmplY3QsIGZvciBjaGFpbmluZworICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBVbmljb2RlU2V0IHJldGFpbkFsbChTdHJpbmcgcykgeworICAgIAlyZXR1cm4gcmV0YWluQWxsKGZyb21BbGwocykpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbXBsZW1lbnQgRUFDSCBvZiB0aGUgY2hhcmFjdGVycyBpbiB0aGlzIHN0cmluZy4gTm90ZTogImNoIiA9PSB7ImMiLCAiaCJ9CisgICAgICogSWYgdGhpcyBzZXQgYWxyZWFkeSBhbnkgcGFydGljdWxhciBjaGFyYWN0ZXIsIGl0IGhhcyBubyBlZmZlY3Qgb24gdGhhdCBjaGFyYWN0ZXIuCisgICAgICogQHBhcmFtIHMgdGhlIHNvdXJjZSBzdHJpbmcKKyAgICAgKiBAcmV0dXJuIHRoaXMgb2JqZWN0LCBmb3IgY2hhaW5pbmcKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgVW5pY29kZVNldCBjb21wbGVtZW50QWxsKFN0cmluZyBzKSB7CisgICAgCXJldHVybiBjb21wbGVtZW50QWxsKGZyb21BbGwocykpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlbW92ZSBFQUNIIG9mIHRoZSBjaGFyYWN0ZXJzIGluIHRoaXMgc3RyaW5nLiBOb3RlOiAiY2giID09IHsiYyIsICJoIn0KKyAgICAgKiBJZiB0aGlzIHNldCBhbHJlYWR5IGFueSBwYXJ0aWN1bGFyIGNoYXJhY3RlciwgaXQgaGFzIG5vIGVmZmVjdCBvbiB0aGF0IGNoYXJhY3Rlci4KKyAgICAgKiBAcGFyYW0gcyB0aGUgc291cmNlIHN0cmluZworICAgICAqIEByZXR1cm4gdGhpcyBvYmplY3QsIGZvciBjaGFpbmluZworICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBVbmljb2RlU2V0IHJlbW92ZUFsbChTdHJpbmcgcykgeworICAgIAlyZXR1cm4gcmVtb3ZlQWxsKGZyb21BbGwocykpOworICAgIH0KKworICAgIC8qKgorICAgICAqIE1ha2VzIGEgc2V0IGZyb20gYSBtdWx0aWNoYXJhY3RlciBzdHJpbmcuIFRodXMgImNoIiA9PiB7ImNoIn0KKwkgKiA8YnI+PGI+V2FybmluZzogeW91IGNhbm5vdCBhZGQgYW4gZW1wdHkgc3RyaW5nICgiIikgdG8gYSBVbmljb2RlU2V0LjwvYj4KKyAgICAgKiBAcGFyYW0gcyB0aGUgc291cmNlIHN0cmluZworICAgICAqIEByZXR1cm4gYSBuZXdseSBjcmVhdGVkIHNldCBjb250YWluaW5nIHRoZSBnaXZlbiBzdHJpbmcKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFVuaWNvZGVTZXQgZnJvbShTdHJpbmcgcykgeworICAgICAgICByZXR1cm4gbmV3IFVuaWNvZGVTZXQoKS5hZGQocyk7CisgICAgfQorCisgICAgCisgICAgLyoqCisgICAgICogTWFrZXMgYSBzZXQgZnJvbSBlYWNoIG9mIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcuIFRodXMgImNoIiA9PiB7ImMiLCAiaCJ9CisgICAgICogQHBhcmFtIHMgdGhlIHNvdXJjZSBzdHJpbmcKKyAgICAgKiBAcmV0dXJuIGEgbmV3bHkgY3JlYXRlZCBzZXQgY29udGFpbmluZyB0aGUgZ2l2ZW4gY2hhcmFjdGVycworICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgVW5pY29kZVNldCBmcm9tQWxsKFN0cmluZyBzKSB7CisgICAgICAgIHJldHVybiBuZXcgVW5pY29kZVNldCgpLmFkZEFsbChzKTsKKyAgICB9CisKKworICAgIC8qKgorICAgICAqIFJldGFpbiBvbmx5IHRoZSBlbGVtZW50cyBpbiB0aGlzIHNldCB0aGF0IGFyZSBjb250YWluZWQgaW4gdGhlCisgICAgICogc3BlY2lmaWVkIHJhbmdlLiAgSWYgPGNvZGU+ZW5kID4gc3RhcnQ8L2NvZGU+IHRoZW4gYW4gZW1wdHkgcmFuZ2UgaXMKKyAgICAgKiByZXRhaW5lZCwgbGVhdmluZyB0aGUgc2V0IGVtcHR5LgorICAgICAqCisgICAgICogQHBhcmFtIHN0YXJ0IGZpcnN0IGNoYXJhY3RlciwgaW5jbHVzaXZlLCBvZiByYW5nZSB0byBiZSByZXRhaW5lZAorICAgICAqIHRvIHRoaXMgc2V0LgorICAgICAqIEBwYXJhbSBlbmQgbGFzdCBjaGFyYWN0ZXIsIGluY2x1c2l2ZSwgb2YgcmFuZ2UgdG8gYmUgcmV0YWluZWQKKyAgICAgKiB0byB0aGlzIHNldC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgVW5pY29kZVNldCByZXRhaW4oaW50IHN0YXJ0LCBpbnQgZW5kKSB7CisgICAgICAgIGlmIChzdGFydCA8IE1JTl9WQUxVRSB8fCBzdGFydCA+IE1BWF9WQUxVRSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBjb2RlIHBvaW50IFUrIiArIFV0aWxpdHkuaGV4KHN0YXJ0LCA2KSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGVuZCA8IE1JTl9WQUxVRSB8fCBlbmQgPiBNQVhfVkFMVUUpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgY29kZSBwb2ludCBVKyIgKyBVdGlsaXR5LmhleChlbmQsIDYpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoc3RhcnQgPD0gZW5kKSB7CisgICAgICAgICAgICByZXRhaW4ocmFuZ2Uoc3RhcnQsIGVuZCksIDIsIDApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY2xlYXIoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXRhaW4gdGhlIHNwZWNpZmllZCBjaGFyYWN0ZXIgZnJvbSB0aGlzIHNldCBpZiBpdCBpcyBwcmVzZW50LgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBVbmljb2RlU2V0IHJldGFpbihpbnQgYykgeworICAgICAgICByZXR1cm4gcmV0YWluKGMsIGMpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXRhaW4gdGhlIHNwZWNpZmllZCBzdHJpbmcgaW4gdGhpcyBzZXQgaWYgaXQgaXMgcHJlc2VudC4KKyAgICAgKiBUaGUgc2V0IHdpbGwgbm90IGNvbnRhaW4gdGhlIHNwZWNpZmllZCBjaGFyYWN0ZXIgb25jZSB0aGUgY2FsbAorICAgICAqIHJldHVybnMuCisgICAgICogQHBhcmFtIHMgdGhlIHNvdXJjZSBzdHJpbmcKKyAgICAgKiBAcmV0dXJuIHRoaXMgb2JqZWN0LCBmb3IgY2hhaW5pbmcKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgVW5pY29kZVNldCByZXRhaW4oU3RyaW5nIHMpIHsKKyAgICAgICAgaW50IGNwID0gZ2V0U2luZ2xlQ1Aocyk7CisgICAgICAgIGlmIChjcCA8IDApIHsKKyAgICAgICAgCWlmIChzdHJpbmdzLnNpemUoKSA9PSAxICYmIHN0cmluZ3MuY29udGFpbnMocykpIHJldHVybiB0aGlzOworICAgICAgICAJc3RyaW5ncy5jbGVhcigpOworICAgICAgICAJc3RyaW5ncy5hZGQocyk7CisgICAgICAgIAlwYXQgPSBudWxsOworCQl9IGVsc2UgeworCQkJcmV0YWluKGNwLCBjcCk7CisJCX0KKwkJcmV0dXJuIHRoaXM7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVtb3ZlcyB0aGUgc3BlY2lmaWVkIHJhbmdlIGZyb20gdGhpcyBzZXQgaWYgaXQgaXMgcHJlc2VudC4KKyAgICAgKiBUaGUgc2V0IHdpbGwgbm90IGNvbnRhaW4gdGhlIHNwZWNpZmllZCByYW5nZSBvbmNlIHRoZSBjYWxsCisgICAgICogcmV0dXJucy4gIElmIDxjb2RlPmVuZCA+IHN0YXJ0PC9jb2RlPiB0aGVuIGFuIGVtcHR5IHJhbmdlIGlzCisgICAgICogcmVtb3ZlZCwgbGVhdmluZyB0aGUgc2V0IHVuY2hhbmdlZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzdGFydCBmaXJzdCBjaGFyYWN0ZXIsIGluY2x1c2l2ZSwgb2YgcmFuZ2UgdG8gYmUgcmVtb3ZlZAorICAgICAqIGZyb20gdGhpcyBzZXQuCisgICAgICogQHBhcmFtIGVuZCBsYXN0IGNoYXJhY3RlciwgaW5jbHVzaXZlLCBvZiByYW5nZSB0byBiZSByZW1vdmVkCisgICAgICogZnJvbSB0aGlzIHNldC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgVW5pY29kZVNldCByZW1vdmUoaW50IHN0YXJ0LCBpbnQgZW5kKSB7CisgICAgICAgIGlmIChzdGFydCA8IE1JTl9WQUxVRSB8fCBzdGFydCA+IE1BWF9WQUxVRSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBjb2RlIHBvaW50IFUrIiArIFV0aWxpdHkuaGV4KHN0YXJ0LCA2KSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGVuZCA8IE1JTl9WQUxVRSB8fCBlbmQgPiBNQVhfVkFMVUUpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgY29kZSBwb2ludCBVKyIgKyBVdGlsaXR5LmhleChlbmQsIDYpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoc3RhcnQgPD0gZW5kKSB7CisgICAgICAgICAgICByZXRhaW4ocmFuZ2Uoc3RhcnQsIGVuZCksIDIsIDIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlbW92ZXMgdGhlIHNwZWNpZmllZCBjaGFyYWN0ZXIgZnJvbSB0aGlzIHNldCBpZiBpdCBpcyBwcmVzZW50LgorICAgICAqIFRoZSBzZXQgd2lsbCBub3QgY29udGFpbiB0aGUgc3BlY2lmaWVkIGNoYXJhY3RlciBvbmNlIHRoZSBjYWxsCisgICAgICogcmV0dXJucy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgVW5pY29kZVNldCByZW1vdmUoaW50IGMpIHsKKyAgICAgICAgcmV0dXJuIHJlbW92ZShjLCBjKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZW1vdmVzIHRoZSBzcGVjaWZpZWQgc3RyaW5nIGZyb20gdGhpcyBzZXQgaWYgaXQgaXMgcHJlc2VudC4KKyAgICAgKiBUaGUgc2V0IHdpbGwgbm90IGNvbnRhaW4gdGhlIHNwZWNpZmllZCBjaGFyYWN0ZXIgb25jZSB0aGUgY2FsbAorICAgICAqIHJldHVybnMuCisgICAgICogQHBhcmFtIHMgdGhlIHNvdXJjZSBzdHJpbmcKKyAgICAgKiBAcmV0dXJuIHRoaXMgb2JqZWN0LCBmb3IgY2hhaW5pbmcKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgVW5pY29kZVNldCByZW1vdmUoU3RyaW5nIHMpIHsKKyAgICAgICAgaW50IGNwID0gZ2V0U2luZ2xlQ1Aocyk7CisgICAgICAgIGlmIChjcCA8IDApIHsKKyAgICAgICAgCXN0cmluZ3MucmVtb3ZlKHMpOworICAgICAgICAJcGF0ID0gbnVsbDsKKwkJfSBlbHNlIHsKKwkJCXJlbW92ZShjcCwgY3ApOworCQl9CisJCXJldHVybiB0aGlzOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbXBsZW1lbnRzIHRoZSBzcGVjaWZpZWQgcmFuZ2UgaW4gdGhpcyBzZXQuICBBbnkgY2hhcmFjdGVyIGluCisgICAgICogdGhlIHJhbmdlIHdpbGwgYmUgcmVtb3ZlZCBpZiBpdCBpcyBpbiB0aGlzIHNldCwgb3Igd2lsbCBiZQorICAgICAqIGFkZGVkIGlmIGl0IGlzIG5vdCBpbiB0aGlzIHNldC4gIElmIDxjb2RlPmVuZCA+IHN0YXJ0PC9jb2RlPgorICAgICAqIHRoZW4gYW4gZW1wdHkgcmFuZ2UgaXMgY29tcGxlbWVudGVkLCBsZWF2aW5nIHRoZSBzZXQgdW5jaGFuZ2VkLgorICAgICAqCisgICAgICogQHBhcmFtIHN0YXJ0IGZpcnN0IGNoYXJhY3RlciwgaW5jbHVzaXZlLCBvZiByYW5nZSB0byBiZSByZW1vdmVkCisgICAgICogZnJvbSB0aGlzIHNldC4KKyAgICAgKiBAcGFyYW0gZW5kIGxhc3QgY2hhcmFjdGVyLCBpbmNsdXNpdmUsIG9mIHJhbmdlIHRvIGJlIHJlbW92ZWQKKyAgICAgKiBmcm9tIHRoaXMgc2V0LgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBVbmljb2RlU2V0IGNvbXBsZW1lbnQoaW50IHN0YXJ0LCBpbnQgZW5kKSB7CisgICAgICAgIGlmIChzdGFydCA8IE1JTl9WQUxVRSB8fCBzdGFydCA+IE1BWF9WQUxVRSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBjb2RlIHBvaW50IFUrIiArIFV0aWxpdHkuaGV4KHN0YXJ0LCA2KSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGVuZCA8IE1JTl9WQUxVRSB8fCBlbmQgPiBNQVhfVkFMVUUpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgY29kZSBwb2ludCBVKyIgKyBVdGlsaXR5LmhleChlbmQsIDYpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoc3RhcnQgPD0gZW5kKSB7CisgICAgICAgICAgICB4b3IocmFuZ2Uoc3RhcnQsIGVuZCksIDIsIDApOworICAgICAgICB9CisgICAgICAgIHBhdCA9IG51bGw7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbXBsZW1lbnRzIHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVyIGluIHRoaXMgc2V0LiAgVGhlIGNoYXJhY3RlcgorICAgICAqIHdpbGwgYmUgcmVtb3ZlZCBpZiBpdCBpcyBpbiB0aGlzIHNldCwgb3Igd2lsbCBiZSBhZGRlZCBpZiBpdCBpcworICAgICAqIG5vdCBpbiB0aGlzIHNldC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgVW5pY29kZVNldCBjb21wbGVtZW50KGludCBjKSB7CisgICAgICAgIHJldHVybiBjb21wbGVtZW50KGMsIGMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRoaXMgaXMgZXF1aXZhbGVudCB0bworICAgICAqIDxjb2RlPmNvbXBsZW1lbnQoTUlOX1ZBTFVFLCBNQVhfVkFMVUUpPC9jb2RlPi4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgVW5pY29kZVNldCBjb21wbGVtZW50KCkgeworICAgICAgICBpZiAobGlzdFswXSA9PSBMT1cpIHsKKyAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkobGlzdCwgMSwgbGlzdCwgMCwgbGVuLTEpOworICAgICAgICAgICAgLS1sZW47CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlbnN1cmVDYXBhY2l0eShsZW4rMSk7CisgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KGxpc3QsIDAsIGxpc3QsIDEsIGxlbik7CisgICAgICAgICAgICBsaXN0WzBdID0gTE9XOworICAgICAgICAgICAgKytsZW47CisgICAgICAgIH0KKyAgICAgICAgcGF0ID0gbnVsbDsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIENvbXBsZW1lbnQgdGhlIHNwZWNpZmllZCBzdHJpbmcgaW4gdGhpcyBzZXQuCisgICAgICogVGhlIHNldCB3aWxsIG5vdCBjb250YWluIHRoZSBzcGVjaWZpZWQgc3RyaW5nIG9uY2UgdGhlIGNhbGwKKyAgICAgKiByZXR1cm5zLgorCSAqIDxicj48Yj5XYXJuaW5nOiB5b3UgY2Fubm90IGFkZCBhbiBlbXB0eSBzdHJpbmcgKCIiKSB0byBhIFVuaWNvZGVTZXQuPC9iPgorICAgICAqIEBwYXJhbSBzIHRoZSBzdHJpbmcgdG8gY29tcGxlbWVudAorICAgICAqIEByZXR1cm4gdGhpcyBvYmplY3QsIGZvciBjaGFpbmluZworICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBVbmljb2RlU2V0IGNvbXBsZW1lbnQoU3RyaW5nIHMpIHsKKyAgICAgICAgaW50IGNwID0gZ2V0U2luZ2xlQ1Aocyk7CisgICAgICAgIGlmIChjcCA8IDApIHsKKyAgICAgICAgCWlmIChzdHJpbmdzLmNvbnRhaW5zKHMpKSBzdHJpbmdzLnJlbW92ZShzKTsKKyAgICAgICAgCWVsc2Ugc3RyaW5ncy5hZGQocyk7CisgICAgICAgIAlwYXQgPSBudWxsOworCQl9IGVsc2UgeworCQkJY29tcGxlbWVudChjcCwgY3ApOworCQl9CisJCXJldHVybiB0aGlzOworICAgIH0gICAgCisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhpcyBzZXQgY29udGFpbnMgdGhlIGdpdmVuIGNoYXJhY3Rlci4KKyAgICAgKiBAcGFyYW0gYyBjaGFyYWN0ZXIgdG8gYmUgY2hlY2tlZCBmb3IgY29udGFpbm1lbnQKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIHRlc3QgY29uZGl0aW9uIGlzIG1ldAorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGNvbnRhaW5zKGludCBjKSB7CisgICAgICAgIGlmIChjIDwgTUlOX1ZBTFVFIHx8IGMgPiBNQVhfVkFMVUUpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgY29kZSBwb2ludCBVKyIgKyBVdGlsaXR5LmhleChjLCA2KSk7CisgICAgICAgIH0KKworICAgICAgICAvKgorICAgICAgICAvLyBTZXQgaSB0byB0aGUgaW5kZXggb2YgdGhlIHN0YXJ0IGl0ZW0gZ3JlYXRlciB0aGFuIGNoCisgICAgICAgIC8vIFdlIGtub3cgd2Ugd2lsbCB0ZXJtaW5hdGUgd2l0aG91dCBsZW5ndGggdGVzdCEKKyAgICAgICAgaW50IGkgPSAtMTsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIGlmIChjIDwgbGlzdFsrK2ldKSBicmVhazsKKyAgICAgICAgfQorICAgICAgICAqLworCisgICAgICAgIGludCBpID0gZmluZENvZGVQb2ludChjKTsKKworICAgICAgICByZXR1cm4gKChpICYgMSkgIT0gMCk7IC8vIHJldHVybiB0cnVlIGlmIG9kZAorICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIHNtYWxsZXN0IHZhbHVlIGkgc3VjaCB0aGF0IGMgPCBsaXN0W2ldLiAgQ2FsbGVyCisgICAgICogbXVzdCBlbnN1cmUgdGhhdCBjIGlzIGEgbGVnYWwgdmFsdWUgb3IgdGhpcyBtZXRob2Qgd2lsbCBlbnRlcgorICAgICAqIGFuIGluZmluaXRlIGxvb3AuICBUaGlzIG1ldGhvZCBwZXJmb3JtcyBhIGJpbmFyeSBzZWFyY2guCisgICAgICogQHBhcmFtIGMgYSBjaGFyYWN0ZXIgaW4gdGhlIHJhbmdlIE1JTl9WQUxVRS4uTUFYX1ZBTFVFCisgICAgICogaW5jbHVzaXZlCisgICAgICogQHJldHVybiB0aGUgc21hbGxlc3QgaW50ZWdlciBpIGluIHRoZSByYW5nZSAwLi5sZW4tMSwKKyAgICAgKiBpbmNsdXNpdmUsIHN1Y2ggdGhhdCBjIDwgbGlzdFtpXQorICAgICAqLworICAgIHByaXZhdGUgZmluYWwgaW50IGZpbmRDb2RlUG9pbnQoaW50IGMpIHsKKyAgICAgICAgLyogRXhhbXBsZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluZENvZGVQb2ludChjKQorICAgICAgICAgICBzZXQgICAgICAgICAgICAgIGxpc3RbXSAgICAgICAgIGM9MCAxIDMgNCA3IDgKKyAgICAgICAgICAgPT09ICAgICAgICAgICAgICA9PT09PT09PT09PT09PSAgID09PT09PT09PT09CisgICAgICAgICAgIFtdICAgICAgICAgICAgICAgWzExMDAwMF0gICAgICAgICAwIDAgMCAwIDAgMAorICAgICAgICAgICBbXHUwMDAwLVx1MDAwM10gIFswLCA0LCAxMTAwMDBdICAgMSAxIDEgMiAyIDIKKyAgICAgICAgICAgW1x1MDAwNC1cdTAwMDddICBbNCwgOCwgMTEwMDAwXSAgIDAgMCAwIDEgMSAyCisgICAgICAgICAgIFs6YWxsOl0gICAgICAgICAgWzAsIDExMDAwMF0gICAgICAxIDEgMSAxIDEgMQorICAgICAgICAgKi8KKworICAgICAgICAvLyBSZXR1cm4gdGhlIHNtYWxsZXN0IGkgc3VjaCB0aGF0IGMgPCBsaXN0W2ldLiAgQXNzdW1lCisgICAgICAgIC8vIGxpc3RbbGVuIC0gMV0gPT0gSElHSCBhbmQgdGhhdCBjIGlzIGxlZ2FsICgwLi5ISUdILTEpLgorICAgICAgICBpZiAoYyA8IGxpc3RbMF0pIHJldHVybiAwOworICAgICAgICAvLyBIaWdoIHJ1bm5lciB0ZXN0LiAgYyBpcyBvZnRlbiBhZnRlciB0aGUgbGFzdCByYW5nZSwgc28gYW4KKyAgICAgICAgLy8gaW5pdGlhbCBjaGVjayBmb3IgdGhpcyBjb25kaXRpb24gcGF5cyBvZmYuIAorICAgICAgICBpZiAobGVuID49IDIgJiYgYyA+PSBsaXN0W2xlbi0yXSkgcmV0dXJuIGxlbi0xOworICAgICAgICBpbnQgbG8gPSAwOworICAgICAgICBpbnQgaGkgPSBsZW4gLSAxOworICAgICAgICAvLyBpbnZhcmlhbnQ6IGMgPj0gbGlzdFtsb10KKyAgICAgICAgLy8gaW52YXJpYW50OiBjIDwgbGlzdFtoaV0KKyAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgaW50IGkgPSAobG8gKyBoaSkgPj4+IDE7CisgICAgICAgICAgICBpZiAoaSA9PSBsbykgcmV0dXJuIGhpOworICAgICAgICAgICAgaWYgKGMgPCBsaXN0W2ldKSB7CisgICAgICAgICAgICAgICAgaGkgPSBpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBsbyA9IGk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKy8vICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgLy8gVW5yb2xsZWQgYmluYXJ5IHNlYXJjaAorLy8gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLworLy8gICAgcHJpdmF0ZSBpbnQgdmFsaWRMZW4gPSAtMTsgLy8gdmFsaWRhdGVkIHZhbHVlIG9mIGxlbgorLy8gICAgcHJpdmF0ZSBpbnQgdG9wT2ZMb3c7CisvLyAgICBwcml2YXRlIGludCB0b3BPZkhpZ2g7CisvLyAgICBwcml2YXRlIGludCBwb3dlcjsKKy8vICAgIHByaXZhdGUgaW50IGRlbHRhU3RhcnQ7CisvLworLy8gICAgcHJpdmF0ZSB2b2lkIHZhbGlkYXRlKCkgeworLy8gICAgICAgIGlmIChsZW4gPD0gMSkgeworLy8gICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJsaXN0Lmxlbj09IiArIGxlbiArICI7IG11c3QgYmUgPjEiKTsKKy8vICAgICAgICB9CisvLworLy8gICAgICAgIC8vIGZpbmQgZ3JlYXRlc3QgcG93ZXIgb2YgMiBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gbGVuCisvLyAgICAgICAgZm9yIChwb3dlciA9IGV4cDIubGVuZ3RoLTE7IHBvd2VyID4gMCAmJiBleHAyW3Bvd2VyXSA+IGxlbjsgcG93ZXItLSkge30KKy8vCisvLyAgICAgICAgLy8gYXNzZXJ0KGV4cDJbcG93ZXJdIDw9IGxlbik7CisvLworLy8gICAgICAgIC8vIGRldGVybWluZSB0aGUgc3RhcnRpbmcgcG9pbnRzCisvLyAgICAgICAgdG9wT2ZMb3cgPSBleHAyW3Bvd2VyXSAtIDE7CisvLyAgICAgICAgdG9wT2ZIaWdoID0gbGVuIC0gMTsKKy8vICAgICAgICBkZWx0YVN0YXJ0ID0gZXhwMltwb3dlci0xXTsKKy8vICAgICAgICB2YWxpZExlbiA9IGxlbjsKKy8vICAgIH0KKy8vCisvLyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgZXhwMltdID0geworLy8gICAgICAgIDB4MSwgMHgyLCAweDQsIDB4OCwKKy8vICAgICAgICAweDEwLCAweDIwLCAweDQwLCAweDgwLAorLy8gICAgICAgIDB4MTAwLCAweDIwMCwgMHg0MDAsIDB4ODAwLAorLy8gICAgICAgIDB4MTAwMCwgMHgyMDAwLCAweDQwMDAsIDB4ODAwMCwKKy8vICAgICAgICAweDEwMDAwLCAweDIwMDAwLCAweDQwMDAwLCAweDgwMDAwLAorLy8gICAgICAgIDB4MTAwMDAwLCAweDIwMDAwMCwgMHg0MDAwMDAsIDB4ODAwMDAwLAorLy8gICAgICAgIDB4MTAwMDAwMCwgMHgyMDAwMDAwLCAweDQwMDAwMDAsIDB4ODAwMDAwMCwKKy8vICAgICAgICAweDEwMDAwMDAwLCAweDIwMDAwMDAwIC8vICwgMHg0MDAwMDAwMCAvLyBubyB1bnNpZ25lZCBpbnQgaW4gSmF2YQorLy8gICAgfTsKKy8vCisvLyAgICAvKioKKy8vICAgICAqIFVucm9sbGVkIGxvd2VzdCBpbmRleCBHVC4KKy8vICAgICAqLworLy8gICAgcHJpdmF0ZSBmaW5hbCBpbnQgbGVhc3RJbmRleEdUKGludCBzZWFyY2hWYWx1ZSkgeworLy8KKy8vICAgICAgICBpZiAobGVuICE9IHZhbGlkTGVuKSB7CisvLyAgICAgICAgICAgIGlmIChsZW4gPT0gMSkgcmV0dXJuIDA7CisvLyAgICAgICAgICAgIHZhbGlkYXRlKCk7CisvLyAgICAgICAgfQorLy8gICAgICAgIGludCB0ZW1wOworLy8gICAgICAgIAorLy8gICAgICAgIC8vIHNldCB1cCBpbml0aWFsIHJhbmdlIHRvIHNlYXJjaC4gRWFjaCBzdWJyYW5nZSBpcyBhIHBvd2VyIG9mIHR3byBpbiBsZW5ndGgKKy8vICAgICAgICBpbnQgaGlnaCA9IHNlYXJjaFZhbHVlIDwgbGlzdFt0b3BPZkxvd10gPyB0b3BPZkxvdyA6IHRvcE9mSGlnaDsKKy8vCisvLyAgICAgICAgLy8gQ29tcGxldGVseSB1bnJvbGxlZCBiaW5hcnkgc2VhcmNoLCBmb2xoaWdoaW5nICJQcm9ncmFtbWluZyBQZWFybHMiCisvLyAgICAgICAgLy8gRWFjaCBjYXNlIGRlbGliZXJhdGVseSBmYWxscyB0aHJvdWdoIHRvIHRoZSBuZXh0CisvLyAgICAgICAgLy8gTG9naWNhbGx5LCBsaXN0Wy0xXSA8IGFsbF9zZWFyY2hfdmFsdWVzICYmIGxpc3RbY291bnRdID4gYWxsX3NlYXJjaF92YWx1ZXMKKy8vICAgICAgICAvLyBhbHRob3VnaCB0aGUgdmFsdWVzIC0xIGFuZCBjb3VudCBhcmUgbmV2ZXIgYWN0dWFsbHkgdG91Y2hlZC4KKy8vICAgICAgICAKKy8vICAgICAgICAvLyBUaGUgYm91bmRzIGF0IGVhY2ggcG9pbnQgYXJlIGxvdyAmIGhpZ2gsCisvLyAgICAgICAgLy8gd2hlcmUgbG93ID09IGhpZ2ggLSBkZWx0YSoyCisvLyAgICAgICAgLy8gc28gaGlnaCAtIGRlbHRhIGlzIHRoZSBtaWRwb2ludAorLy8gICAgICAgIAorLy8gICAgICAgIC8vIFRoZSBpbnZhcmlhbnQgQUZURVIgZWFjaCBsaW5lIGlzIHRoYXQgbGlzdFtsb3ddIDwgc2VhcmNoVmFsdWUgPD0gbGlzdFtoaWdoXQorLy8gICAgICAgIAorLy8gICAgICAgIHN3aXRjaCAocG93ZXIpIHsKKy8vICAgICAgICAvL2Nhc2UgMzE6IGlmIChzZWFyY2hWYWx1ZSA8IGxpc3RbdGVtcCA9IGhpZ2gtMHg0MDAwMDAwMF0pIGhpZ2ggPSB0ZW1wOyAvLyBubyB1bnNpZ25lZCBpbnQgaW4gSmF2YQorLy8gICAgICAgIGNhc2UgMzA6IGlmIChzZWFyY2hWYWx1ZSA8IGxpc3RbdGVtcCA9IGhpZ2gtMHgyMDAwMDAwMF0pIGhpZ2ggPSB0ZW1wOworLy8gICAgICAgIGNhc2UgMjk6IGlmIChzZWFyY2hWYWx1ZSA8IGxpc3RbdGVtcCA9IGhpZ2gtMHgxMDAwMDAwMF0pIGhpZ2ggPSB0ZW1wOworLy8gICAgICAgIAorLy8gICAgICAgIGNhc2UgMjg6IGlmIChzZWFyY2hWYWx1ZSA8IGxpc3RbdGVtcCA9IGhpZ2gtIDB4ODAwMDAwMF0pIGhpZ2ggPSB0ZW1wOworLy8gICAgICAgIGNhc2UgMjc6IGlmIChzZWFyY2hWYWx1ZSA8IGxpc3RbdGVtcCA9IGhpZ2gtIDB4NDAwMDAwMF0pIGhpZ2ggPSB0ZW1wOworLy8gICAgICAgIGNhc2UgMjY6IGlmIChzZWFyY2hWYWx1ZSA8IGxpc3RbdGVtcCA9IGhpZ2gtIDB4MjAwMDAwMF0pIGhpZ2ggPSB0ZW1wOworLy8gICAgICAgIGNhc2UgMjU6IGlmIChzZWFyY2hWYWx1ZSA8IGxpc3RbdGVtcCA9IGhpZ2gtIDB4MTAwMDAwMF0pIGhpZ2ggPSB0ZW1wOworLy8gICAgICAgIAorLy8gICAgICAgIGNhc2UgMjQ6IGlmIChzZWFyY2hWYWx1ZSA8IGxpc3RbdGVtcCA9IGhpZ2gtICAweDgwMDAwMF0pIGhpZ2ggPSB0ZW1wOworLy8gICAgICAgIGNhc2UgMjM6IGlmIChzZWFyY2hWYWx1ZSA8IGxpc3RbdGVtcCA9IGhpZ2gtICAweDQwMDAwMF0pIGhpZ2ggPSB0ZW1wOworLy8gICAgICAgIGNhc2UgMjI6IGlmIChzZWFyY2hWYWx1ZSA8IGxpc3RbdGVtcCA9IGhpZ2gtICAweDIwMDAwMF0pIGhpZ2ggPSB0ZW1wOworLy8gICAgICAgIGNhc2UgMjE6IGlmIChzZWFyY2hWYWx1ZSA8IGxpc3RbdGVtcCA9IGhpZ2gtICAweDEwMDAwMF0pIGhpZ2ggPSB0ZW1wOworLy8gICAgICAgIAorLy8gICAgICAgIGNhc2UgMjA6IGlmIChzZWFyY2hWYWx1ZSA8IGxpc3RbdGVtcCA9IGhpZ2gtICAgMHg4MDAwMF0pIGhpZ2ggPSB0ZW1wOworLy8gICAgICAgIGNhc2UgMTk6IGlmIChzZWFyY2hWYWx1ZSA8IGxpc3RbdGVtcCA9IGhpZ2gtICAgMHg0MDAwMF0pIGhpZ2ggPSB0ZW1wOworLy8gICAgICAgIGNhc2UgMTg6IGlmIChzZWFyY2hWYWx1ZSA8IGxpc3RbdGVtcCA9IGhpZ2gtICAgMHgyMDAwMF0pIGhpZ2ggPSB0ZW1wOworLy8gICAgICAgIGNhc2UgMTc6IGlmIChzZWFyY2hWYWx1ZSA8IGxpc3RbdGVtcCA9IGhpZ2gtICAgMHgxMDAwMF0pIGhpZ2ggPSB0ZW1wOworLy8gICAgICAgIAorLy8gICAgICAgIGNhc2UgMTY6IGlmIChzZWFyY2hWYWx1ZSA8IGxpc3RbdGVtcCA9IGhpZ2gtICAgIDB4ODAwMF0pIGhpZ2ggPSB0ZW1wOworLy8gICAgICAgIGNhc2UgMTU6IGlmIChzZWFyY2hWYWx1ZSA8IGxpc3RbdGVtcCA9IGhpZ2gtICAgIDB4NDAwMF0pIGhpZ2ggPSB0ZW1wOworLy8gICAgICAgIGNhc2UgMTQ6IGlmIChzZWFyY2hWYWx1ZSA8IGxpc3RbdGVtcCA9IGhpZ2gtICAgIDB4MjAwMF0pIGhpZ2ggPSB0ZW1wOworLy8gICAgICAgIGNhc2UgMTM6IGlmIChzZWFyY2hWYWx1ZSA8IGxpc3RbdGVtcCA9IGhpZ2gtICAgIDB4MTAwMF0pIGhpZ2ggPSB0ZW1wOworLy8gICAgICAgIAorLy8gICAgICAgIGNhc2UgMTI6IGlmIChzZWFyY2hWYWx1ZSA8IGxpc3RbdGVtcCA9IGhpZ2gtICAgICAweDgwMF0pIGhpZ2ggPSB0ZW1wOworLy8gICAgICAgIGNhc2UgMTE6IGlmIChzZWFyY2hWYWx1ZSA8IGxpc3RbdGVtcCA9IGhpZ2gtICAgICAweDQwMF0pIGhpZ2ggPSB0ZW1wOworLy8gICAgICAgIGNhc2UgMTA6IGlmIChzZWFyY2hWYWx1ZSA8IGxpc3RbdGVtcCA9IGhpZ2gtICAgICAweDIwMF0pIGhpZ2ggPSB0ZW1wOworLy8gICAgICAgIGNhc2UgIDk6IGlmIChzZWFyY2hWYWx1ZSA8IGxpc3RbdGVtcCA9IGhpZ2gtICAgICAweDEwMF0pIGhpZ2ggPSB0ZW1wOworLy8gICAgICAgIAorLy8gICAgICAgIGNhc2UgIDg6IGlmIChzZWFyY2hWYWx1ZSA8IGxpc3RbdGVtcCA9IGhpZ2gtICAgICAgMHg4MF0pIGhpZ2ggPSB0ZW1wOworLy8gICAgICAgIGNhc2UgIDc6IGlmIChzZWFyY2hWYWx1ZSA8IGxpc3RbdGVtcCA9IGhpZ2gtICAgICAgMHg0MF0pIGhpZ2ggPSB0ZW1wOworLy8gICAgICAgIGNhc2UgIDY6IGlmIChzZWFyY2hWYWx1ZSA8IGxpc3RbdGVtcCA9IGhpZ2gtICAgICAgMHgyMF0pIGhpZ2ggPSB0ZW1wOworLy8gICAgICAgIGNhc2UgIDU6IGlmIChzZWFyY2hWYWx1ZSA8IGxpc3RbdGVtcCA9IGhpZ2gtICAgICAgMHgxMF0pIGhpZ2ggPSB0ZW1wOworLy8gICAgICAgIAorLy8gICAgICAgIGNhc2UgIDQ6IGlmIChzZWFyY2hWYWx1ZSA8IGxpc3RbdGVtcCA9IGhpZ2gtICAgICAgIDB4OF0pIGhpZ2ggPSB0ZW1wOworLy8gICAgICAgIGNhc2UgIDM6IGlmIChzZWFyY2hWYWx1ZSA8IGxpc3RbdGVtcCA9IGhpZ2gtICAgICAgIDB4NF0pIGhpZ2ggPSB0ZW1wOworLy8gICAgICAgIGNhc2UgIDI6IGlmIChzZWFyY2hWYWx1ZSA8IGxpc3RbdGVtcCA9IGhpZ2gtICAgICAgIDB4Ml0pIGhpZ2ggPSB0ZW1wOworLy8gICAgICAgIGNhc2UgIDE6IGlmIChzZWFyY2hWYWx1ZSA8IGxpc3RbdGVtcCA9IGhpZ2gtICAgICAgIDB4MV0pIGhpZ2ggPSB0ZW1wOworLy8gICAgICAgIH0KKy8vCisvLyAgICAgICAgcmV0dXJuIGhpZ2g7CisvLyAgICB9CisvLworLy8gICAgLy8gRm9yIGRlYnVnZ2luZyBvbmx5CisvLyAgICBwdWJsaWMgaW50IGxlbigpIHsKKy8vICAgICAgICByZXR1cm4gbGVuOworLy8gICAgfQorLy8KKy8vICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhpcyBzZXQgY29udGFpbnMgZXZlcnkgY2hhcmFjdGVyCisgICAgICogb2YgdGhlIGdpdmVuIHJhbmdlLgorICAgICAqIEBwYXJhbSBzdGFydCBmaXJzdCBjaGFyYWN0ZXIsIGluY2x1c2l2ZSwgb2YgdGhlIHJhbmdlCisgICAgICogQHBhcmFtIGVuZCBsYXN0IGNoYXJhY3RlciwgaW5jbHVzaXZlLCBvZiB0aGUgcmFuZ2UKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIHRlc3QgY29uZGl0aW9uIGlzIG1ldAorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGNvbnRhaW5zKGludCBzdGFydCwgaW50IGVuZCkgeworICAgICAgICBpZiAoc3RhcnQgPCBNSU5fVkFMVUUgfHwgc3RhcnQgPiBNQVhfVkFMVUUpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgY29kZSBwb2ludCBVKyIgKyBVdGlsaXR5LmhleChzdGFydCwgNikpOworICAgICAgICB9CisgICAgICAgIGlmIChlbmQgPCBNSU5fVkFMVUUgfHwgZW5kID4gTUFYX1ZBTFVFKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIGNvZGUgcG9pbnQgVSsiICsgVXRpbGl0eS5oZXgoZW5kLCA2KSk7CisgICAgICAgIH0KKyAgICAgICAgLy9pbnQgaSA9IC0xOworICAgICAgICAvL3doaWxlICh0cnVlKSB7CisgICAgICAgIC8vICAgIGlmIChzdGFydCA8IGxpc3RbKytpXSkgYnJlYWs7CisgICAgICAgIC8vfQorICAgICAgICBpbnQgaSA9IGZpbmRDb2RlUG9pbnQoc3RhcnQpOworICAgICAgICByZXR1cm4gKChpICYgMSkgIT0gMCAmJiBlbmQgPCBsaXN0W2ldKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIDx0dD50cnVlPC90dD4gaWYgdGhpcyBzZXQgY29udGFpbnMgdGhlIGdpdmVuCisgICAgICogbXVsdGljaGFyYWN0ZXIgc3RyaW5nLgorICAgICAqIEBwYXJhbSBzIHN0cmluZyB0byBiZSBjaGVja2VkIGZvciBjb250YWlubWVudAorICAgICAqIEByZXR1cm4gPHR0PnRydWU8L3R0PiBpZiB0aGlzIHNldCBjb250YWlucyB0aGUgc3BlY2lmaWVkIHN0cmluZworICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBib29sZWFuIGNvbnRhaW5zKFN0cmluZyBzKSB7CisgICAgICAgIAorICAgICAgICBpbnQgY3AgPSBnZXRTaW5nbGVDUChzKTsKKyAgICAgICAgaWYgKGNwIDwgMCkgeworICAgICAgICAJcmV0dXJuIHN0cmluZ3MuY29udGFpbnMocyk7CisJCX0gZWxzZSB7CisJCQlyZXR1cm4gY29udGFpbnMoY3ApOworCQl9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHNldCBjb250YWlucyBhbGwgdGhlIGNoYXJhY3RlcnMgYW5kIHN0cmluZ3MKKyAgICAgKiBvZiB0aGUgZ2l2ZW4gc2V0LgorICAgICAqIEBwYXJhbSBjIHNldCB0byBiZSBjaGVja2VkIGZvciBjb250YWlubWVudAorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgdGVzdCBjb25kaXRpb24gaXMgbWV0CisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gY29udGFpbnNBbGwoVW5pY29kZVNldCBjKSB7CisgICAgICAgIC8vIFRoZSBzcGVjaWZpZWQgc2V0IGlzIGEgc3Vic2V0IGlmIGFsbCBvZiBpdHMgcGFpcnMgYXJlIGNvbnRhaW5lZCBpbgorICAgICAgICAvLyB0aGlzIHNldC4gIEl0J3MgcG9zc2libGUgdG8gY29kZSB0aGlzIG1vcmUgZWZmaWNpZW50bHkgaW4gdGVybXMgb2YKKyAgICAgICAgLy8gZGlyZWN0IG1hbmlwdWxhdGlvbiBvZiB0aGUgaW52ZXJzaW9uIGxpc3RzIGlmIHRoZSBuZWVkIGFyaXNlcy4KKyAgICAgICAgaW50IG4gPSBjLmdldFJhbmdlQ291bnQoKTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPG47ICsraSkgeworICAgICAgICAgICAgaWYgKCFjb250YWlucyhjLmdldFJhbmdlU3RhcnQoaSksIGMuZ2V0UmFuZ2VFbmQoaSkpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICghc3RyaW5ncy5jb250YWluc0FsbChjLnN0cmluZ3MpKSByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhpcyBzZXQgY29udGFpbnMgYWxsIHRoZSBjaGFyYWN0ZXJzCisgICAgICogb2YgdGhlIGdpdmVuIHN0cmluZy4KKyAgICAgKiBAcGFyYW0gcyBzdHJpbmcgY29udGFpbmluZyBjaGFyYWN0ZXJzIHRvIGJlIGNoZWNrZWQgZm9yIGNvbnRhaW5tZW50CisgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSB0ZXN0IGNvbmRpdGlvbiBpcyBtZXQKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBjb250YWluc0FsbChTdHJpbmcgcykgeworICAgICAgICBpbnQgY3A7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcy5sZW5ndGgoKTsgaSArPSBVVEYxNi5nZXRDaGFyQ291bnQoY3ApKSB7CisgICAgICAgICAgICBjcCA9IFVURjE2LmNoYXJBdChzLCBpKTsKKyAgICAgICAgICAgIGlmICghY29udGFpbnMoY3ApKSByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHNldCBjb250YWlucyBub25lIG9mIHRoZSBjaGFyYWN0ZXJzCisgICAgICogb2YgdGhlIGdpdmVuIHJhbmdlLgorICAgICAqIEBwYXJhbSBzdGFydCBmaXJzdCBjaGFyYWN0ZXIsIGluY2x1c2l2ZSwgb2YgdGhlIHJhbmdlCisgICAgICogQHBhcmFtIGVuZCBsYXN0IGNoYXJhY3RlciwgaW5jbHVzaXZlLCBvZiB0aGUgcmFuZ2UKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIHRlc3QgY29uZGl0aW9uIGlzIG1ldAorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGNvbnRhaW5zTm9uZShpbnQgc3RhcnQsIGludCBlbmQpIHsKKyAgICAgICAgaWYgKHN0YXJ0IDwgTUlOX1ZBTFVFIHx8IHN0YXJ0ID4gTUFYX1ZBTFVFKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIGNvZGUgcG9pbnQgVSsiICsgVXRpbGl0eS5oZXgoc3RhcnQsIDYpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZW5kIDwgTUlOX1ZBTFVFIHx8IGVuZCA+IE1BWF9WQUxVRSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBjb2RlIHBvaW50IFUrIiArIFV0aWxpdHkuaGV4KGVuZCwgNikpOworICAgICAgICB9CisgICAgICAgIGludCBpID0gLTE7CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBpZiAoc3RhcnQgPCBsaXN0WysraV0pIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHJldHVybiAoKGkgJiAxKSA9PSAwICYmIGVuZCA8IGxpc3RbaV0pOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHNldCBjb250YWlucyBub25lIG9mIHRoZSBjaGFyYWN0ZXJzIGFuZCBzdHJpbmdzCisgICAgICogb2YgdGhlIGdpdmVuIHNldC4KKyAgICAgKiBAcGFyYW0gYyBzZXQgdG8gYmUgY2hlY2tlZCBmb3IgY29udGFpbm1lbnQKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIHRlc3QgY29uZGl0aW9uIGlzIG1ldAorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGNvbnRhaW5zTm9uZShVbmljb2RlU2V0IGMpIHsKKyAgICAgICAgLy8gVGhlIHNwZWNpZmllZCBzZXQgaXMgYSBzdWJzZXQgaWYgYWxsIG9mIGl0cyBwYWlycyBhcmUgY29udGFpbmVkIGluCisgICAgICAgIC8vIHRoaXMgc2V0LiAgSXQncyBwb3NzaWJsZSB0byBjb2RlIHRoaXMgbW9yZSBlZmZpY2llbnRseSBpbiB0ZXJtcyBvZgorICAgICAgICAvLyBkaXJlY3QgbWFuaXB1bGF0aW9uIG9mIHRoZSBpbnZlcnNpb24gbGlzdHMgaWYgdGhlIG5lZWQgYXJpc2VzLgorICAgICAgICBpbnQgbiA9IGMuZ2V0UmFuZ2VDb3VudCgpOworICAgICAgICBmb3IgKGludCBpPTA7IGk8bjsgKytpKSB7CisgICAgICAgICAgICBpZiAoIWNvbnRhaW5zTm9uZShjLmdldFJhbmdlU3RhcnQoaSksIGMuZ2V0UmFuZ2VFbmQoaSkpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICghU29ydGVkU2V0UmVsYXRpb24uaGFzUmVsYXRpb24oc3RyaW5ncywgU29ydGVkU2V0UmVsYXRpb24uRElTSk9JTlQsIGMuc3RyaW5ncykpIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHNldCBjb250YWlucyBub25lIG9mIHRoZSBjaGFyYWN0ZXJzCisgICAgICogb2YgdGhlIGdpdmVuIHN0cmluZy4KKyAgICAgKiBAcGFyYW0gcyBzdHJpbmcgY29udGFpbmluZyBjaGFyYWN0ZXJzIHRvIGJlIGNoZWNrZWQgZm9yIGNvbnRhaW5tZW50CisgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSB0ZXN0IGNvbmRpdGlvbiBpcyBtZXQKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBjb250YWluc05vbmUoU3RyaW5nIHMpIHsKKyAgICAgICAgaW50IGNwOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHMubGVuZ3RoKCk7IGkgKz0gVVRGMTYuZ2V0Q2hhckNvdW50KGNwKSkgeworICAgICAgICAgICAgY3AgPSBVVEYxNi5jaGFyQXQocywgaSk7CisgICAgICAgICAgICBpZiAoY29udGFpbnMoY3ApKSByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgICAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhpcyBzZXQgY29udGFpbnMgb25lIG9yIG1vcmUgb2YgdGhlIGNoYXJhY3RlcnMKKyAgICAgKiBpbiB0aGUgZ2l2ZW4gcmFuZ2UuCisgICAgICogQHBhcmFtIHN0YXJ0IGZpcnN0IGNoYXJhY3RlciwgaW5jbHVzaXZlLCBvZiB0aGUgcmFuZ2UKKyAgICAgKiBAcGFyYW0gZW5kIGxhc3QgY2hhcmFjdGVyLCBpbmNsdXNpdmUsIG9mIHRoZSByYW5nZQorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgY29uZGl0aW9uIGlzIG1ldAorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBib29sZWFuIGNvbnRhaW5zU29tZShpbnQgc3RhcnQsIGludCBlbmQpIHsKKyAgICAJcmV0dXJuICFjb250YWluc05vbmUoc3RhcnQsIGVuZCk7CisgICAgfQorICAgICAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhpcyBzZXQgY29udGFpbnMgb25lIG9yIG1vcmUgb2YgdGhlIGNoYXJhY3RlcnMKKyAgICAgKiBhbmQgc3RyaW5ncyBvZiB0aGUgZ2l2ZW4gc2V0LgorICAgICAqIEBwYXJhbSBjIHNldCB0byBiZSBjaGVja2VkIGZvciBjb250YWlubWVudAorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgY29uZGl0aW9uIGlzIG1ldAorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBib29sZWFuIGNvbnRhaW5zU29tZShVbmljb2RlU2V0IHMpIHsKKyAgICAJcmV0dXJuICFjb250YWluc05vbmUocyk7CisgICAgfQorICAgICAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhpcyBzZXQgY29udGFpbnMgb25lIG9yIG1vcmUgb2YgdGhlIGNoYXJhY3RlcnMKKyAgICAgKiBvZiB0aGUgZ2l2ZW4gc3RyaW5nLgorICAgICAqIEBwYXJhbSBzIHN0cmluZyBjb250YWluaW5nIGNoYXJhY3RlcnMgdG8gYmUgY2hlY2tlZCBmb3IgY29udGFpbm1lbnQKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGNvbmRpdGlvbiBpcyBtZXQKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgYm9vbGVhbiBjb250YWluc1NvbWUoU3RyaW5nIHMpIHsKKyAgICAJcmV0dXJuICFjb250YWluc05vbmUocyk7CisgICAgfQorICAgICAgICAKKyAgICAgICAgCisgICAgLyoqCisgICAgICogQWRkcyBhbGwgb2YgdGhlIGVsZW1lbnRzIGluIHRoZSBzcGVjaWZpZWQgc2V0IHRvIHRoaXMgc2V0IGlmCisgICAgICogdGhleSdyZSBub3QgYWxyZWFkeSBwcmVzZW50LiAgVGhpcyBvcGVyYXRpb24gZWZmZWN0aXZlbHkKKyAgICAgKiBtb2RpZmllcyB0aGlzIHNldCBzbyB0aGF0IGl0cyB2YWx1ZSBpcyB0aGUgPGk+dW5pb248L2k+IG9mIHRoZSB0d28KKyAgICAgKiBzZXRzLiAgVGhlIGJlaGF2aW9yIG9mIHRoaXMgb3BlcmF0aW9uIGlzIHVuc3BlY2lmaWVkIGlmIHRoZSBzcGVjaWZpZWQKKyAgICAgKiBjb2xsZWN0aW9uIGlzIG1vZGlmaWVkIHdoaWxlIHRoZSBvcGVyYXRpb24gaXMgaW4gcHJvZ3Jlc3MuCisgICAgICoKKyAgICAgKiBAcGFyYW0gYyBzZXQgd2hvc2UgZWxlbWVudHMgYXJlIHRvIGJlIGFkZGVkIHRvIHRoaXMgc2V0LgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBVbmljb2RlU2V0IGFkZEFsbChVbmljb2RlU2V0IGMpIHsKKyAgICAgICAgYWRkKGMubGlzdCwgYy5sZW4sIDApOworICAgICAgICBzdHJpbmdzLmFkZEFsbChjLnN0cmluZ3MpOworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXRhaW5zIG9ubHkgdGhlIGVsZW1lbnRzIGluIHRoaXMgc2V0IHRoYXQgYXJlIGNvbnRhaW5lZCBpbiB0aGUKKyAgICAgKiBzcGVjaWZpZWQgc2V0LiAgSW4gb3RoZXIgd29yZHMsIHJlbW92ZXMgZnJvbSB0aGlzIHNldCBhbGwgb2YKKyAgICAgKiBpdHMgZWxlbWVudHMgdGhhdCBhcmUgbm90IGNvbnRhaW5lZCBpbiB0aGUgc3BlY2lmaWVkIHNldC4gIFRoaXMKKyAgICAgKiBvcGVyYXRpb24gZWZmZWN0aXZlbHkgbW9kaWZpZXMgdGhpcyBzZXQgc28gdGhhdCBpdHMgdmFsdWUgaXMKKyAgICAgKiB0aGUgPGk+aW50ZXJzZWN0aW9uPC9pPiBvZiB0aGUgdHdvIHNldHMuCisgICAgICoKKyAgICAgKiBAcGFyYW0gYyBzZXQgdGhhdCBkZWZpbmVzIHdoaWNoIGVsZW1lbnRzIHRoaXMgc2V0IHdpbGwgcmV0YWluLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBVbmljb2RlU2V0IHJldGFpbkFsbChVbmljb2RlU2V0IGMpIHsKKyAgICAgICAgcmV0YWluKGMubGlzdCwgYy5sZW4sIDApOworICAgICAgICBzdHJpbmdzLnJldGFpbkFsbChjLnN0cmluZ3MpOworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZW1vdmVzIGZyb20gdGhpcyBzZXQgYWxsIG9mIGl0cyBlbGVtZW50cyB0aGF0IGFyZSBjb250YWluZWQgaW4gdGhlCisgICAgICogc3BlY2lmaWVkIHNldC4gIFRoaXMgb3BlcmF0aW9uIGVmZmVjdGl2ZWx5IG1vZGlmaWVzIHRoaXMKKyAgICAgKiBzZXQgc28gdGhhdCBpdHMgdmFsdWUgaXMgdGhlIDxpPmFzeW1tZXRyaWMgc2V0IGRpZmZlcmVuY2U8L2k+IG9mCisgICAgICogdGhlIHR3byBzZXRzLgorICAgICAqCisgICAgICogQHBhcmFtIGMgc2V0IHRoYXQgZGVmaW5lcyB3aGljaCBlbGVtZW50cyB3aWxsIGJlIHJlbW92ZWQgZnJvbQorICAgICAqICAgICAgICAgIHRoaXMgc2V0LgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBVbmljb2RlU2V0IHJlbW92ZUFsbChVbmljb2RlU2V0IGMpIHsKKyAgICAgICAgcmV0YWluKGMubGlzdCwgYy5sZW4sIDIpOworICAgICAgICBzdHJpbmdzLnJlbW92ZUFsbChjLnN0cmluZ3MpOworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb21wbGVtZW50cyBpbiB0aGlzIHNldCBhbGwgZWxlbWVudHMgY29udGFpbmVkIGluIHRoZSBzcGVjaWZpZWQKKyAgICAgKiBzZXQuICBBbnkgY2hhcmFjdGVyIGluIHRoZSBvdGhlciBzZXQgd2lsbCBiZSByZW1vdmVkIGlmIGl0IGlzCisgICAgICogaW4gdGhpcyBzZXQsIG9yIHdpbGwgYmUgYWRkZWQgaWYgaXQgaXMgbm90IGluIHRoaXMgc2V0LgorICAgICAqCisgICAgICogQHBhcmFtIGMgc2V0IHRoYXQgZGVmaW5lcyB3aGljaCBlbGVtZW50cyB3aWxsIGJlIGNvbXBsZW1lbnRlZCBmcm9tCisgICAgICogICAgICAgICAgdGhpcyBzZXQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIFVuaWNvZGVTZXQgY29tcGxlbWVudEFsbChVbmljb2RlU2V0IGMpIHsKKyAgICAgICAgeG9yKGMubGlzdCwgYy5sZW4sIDApOworICAgICAgICBTb3J0ZWRTZXRSZWxhdGlvbi5kb09wZXJhdGlvbihzdHJpbmdzLCBTb3J0ZWRTZXRSZWxhdGlvbi5DT01QTEVNRU5UQUxMLCBjLnN0cmluZ3MpOworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZW1vdmVzIGFsbCBvZiB0aGUgZWxlbWVudHMgZnJvbSB0aGlzIHNldC4gIFRoaXMgc2V0IHdpbGwgYmUKKyAgICAgKiBlbXB0eSBhZnRlciB0aGlzIGNhbGwgcmV0dXJucy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgVW5pY29kZVNldCBjbGVhcigpIHsKKyAgICAgICAgbGlzdFswXSA9IEhJR0g7CisgICAgICAgIGxlbiA9IDE7CisgICAgICAgIHBhdCA9IG51bGw7CisgICAgICAgIHN0cmluZ3MuY2xlYXIoKTsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCisgICAgLyoqCisgICAgICogSXRlcmF0aW9uIG1ldGhvZCB0aGF0IHJldHVybnMgdGhlIG51bWJlciBvZiByYW5nZXMgY29udGFpbmVkIGluCisgICAgICogdGhpcyBzZXQuCisgICAgICogQHNlZSAjZ2V0UmFuZ2VTdGFydAorICAgICAqIEBzZWUgI2dldFJhbmdlRW5kCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGludCBnZXRSYW5nZUNvdW50KCkgeworICAgICAgICByZXR1cm4gbGVuLzI7CisgICAgfQorCisgICAgLyoqCisgICAgICogSXRlcmF0aW9uIG1ldGhvZCB0aGF0IHJldHVybnMgdGhlIGZpcnN0IGNoYXJhY3RlciBpbiB0aGUKKyAgICAgKiBzcGVjaWZpZWQgcmFuZ2Ugb2YgdGhpcyBzZXQuCisgICAgICogQGV4Y2VwdGlvbiBBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gaWYgaW5kZXggaXMgb3V0c2lkZQorICAgICAqIHRoZSByYW5nZSA8Y29kZT4wLi5nZXRSYW5nZUNvdW50KCktMTwvY29kZT4KKyAgICAgKiBAc2VlICNnZXRSYW5nZUNvdW50CisgICAgICogQHNlZSAjZ2V0UmFuZ2VFbmQKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldFJhbmdlU3RhcnQoaW50IGluZGV4KSB7CisgICAgICAgIHJldHVybiBsaXN0W2luZGV4KjJdOworICAgIH0KKworICAgIC8qKgorICAgICAqIEl0ZXJhdGlvbiBtZXRob2QgdGhhdCByZXR1cm5zIHRoZSBsYXN0IGNoYXJhY3RlciBpbiB0aGUKKyAgICAgKiBzcGVjaWZpZWQgcmFuZ2Ugb2YgdGhpcyBzZXQuCisgICAgICogQGV4Y2VwdGlvbiBBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gaWYgaW5kZXggaXMgb3V0c2lkZQorICAgICAqIHRoZSByYW5nZSA8Y29kZT4wLi5nZXRSYW5nZUNvdW50KCktMTwvY29kZT4KKyAgICAgKiBAc2VlICNnZXRSYW5nZVN0YXJ0CisgICAgICogQHNlZSAjZ2V0UmFuZ2VFbmQKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldFJhbmdlRW5kKGludCBpbmRleCkgeworICAgICAgICByZXR1cm4gKGxpc3RbaW5kZXgqMiArIDFdIC0gMSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVhbGxvY2F0ZSB0aGlzIG9iamVjdHMgaW50ZXJuYWwgc3RydWN0dXJlcyB0byB0YWtlIHVwIHRoZSBsZWFzdAorICAgICAqIHBvc3NpYmxlIHNwYWNlLCB3aXRob3V0IGNoYW5naW5nIHRoaXMgb2JqZWN0J3MgdmFsdWUuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIFVuaWNvZGVTZXQgY29tcGFjdCgpIHsKKyAgICAgICAgaWYgKGxlbiAhPSBsaXN0Lmxlbmd0aCkgeworICAgICAgICAgICAgaW50W10gdGVtcCA9IG5ldyBpbnRbbGVuXTsKKyAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkobGlzdCwgMCwgdGVtcCwgMCwgbGVuKTsKKyAgICAgICAgICAgIGxpc3QgPSB0ZW1wOworICAgICAgICB9CisgICAgICAgIHJhbmdlTGlzdCA9IG51bGw7CisgICAgICAgIGJ1ZmZlciA9IG51bGw7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbXBhcmVzIHRoZSBzcGVjaWZpZWQgb2JqZWN0IHdpdGggdGhpcyBzZXQgZm9yIGVxdWFsaXR5LiAgUmV0dXJucworICAgICAqIDx0dD50cnVlPC90dD4gaWYgdGhlIHNwZWNpZmllZCBvYmplY3QgaXMgYWxzbyBhIHNldCwgdGhlIHR3byBzZXRzCisgICAgICogaGF2ZSB0aGUgc2FtZSBzaXplLCBhbmQgZXZlcnkgbWVtYmVyIG9mIHRoZSBzcGVjaWZpZWQgc2V0IGlzCisgICAgICogY29udGFpbmVkIGluIHRoaXMgc2V0IChvciBlcXVpdmFsZW50bHksIGV2ZXJ5IG1lbWJlciBvZiB0aGlzIHNldCBpcworICAgICAqIGNvbnRhaW5lZCBpbiB0aGUgc3BlY2lmaWVkIHNldCkuCisgICAgICoKKyAgICAgKiBAcGFyYW0gbyBPYmplY3QgdG8gYmUgY29tcGFyZWQgZm9yIGVxdWFsaXR5IHdpdGggdGhpcyBzZXQuCisgICAgICogQHJldHVybiA8dHQ+dHJ1ZTwvdHQ+IGlmIHRoZSBzcGVjaWZpZWQgT2JqZWN0IGlzIGVxdWFsIHRvIHRoaXMgc2V0LgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3QgbykgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgVW5pY29kZVNldCB0aGF0ID0gKFVuaWNvZGVTZXQpIG87CisgICAgICAgICAgICBpZiAobGVuICE9IHRoYXQubGVuKSByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKGxpc3RbaV0gIT0gdGhhdC5saXN0W2ldKSByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIXN0cmluZ3MuZXF1YWxzKHRoYXQuc3RyaW5ncykpIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBoYXNoIGNvZGUgdmFsdWUgZm9yIHRoaXMgc2V0LgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgaGFzaCBjb2RlIHZhbHVlIGZvciB0aGlzIHNldC4KKyAgICAgKiBAc2VlIGphdmEubGFuZy5PYmplY3QjaGFzaENvZGUoKQorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CisgICAgICAgIGludCByZXN1bHQgPSBsZW47CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyArK2kpIHsKKyAgICAgICAgICAgIHJlc3VsdCAqPSAxMDAwMDAzOworICAgICAgICAgICAgcmVzdWx0ICs9IGxpc3RbaV07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSBwcm9ncmFtbWVyLXJlYWRhYmxlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIG9iamVjdC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICByZXR1cm4gdG9QYXR0ZXJuKHRydWUpOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIEltcGxlbWVudGF0aW9uOiBQYXR0ZXJuIHBhcnNpbmcKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIFBhcnNlcyB0aGUgZ2l2ZW4gcGF0dGVybiwgc3RhcnRpbmcgYXQgdGhlIGdpdmVuIHBvc2l0aW9uLiAgVGhlIGNoYXJhY3RlcgorICAgICAqIGF0IHBhdHRlcm4uY2hhckF0KHBvcy5nZXRJbmRleCgpKSBtdXN0IGJlICdbJywgb3IgdGhlIHBhcnNlIGZhaWxzLgorICAgICAqIFBhcnNpbmcgY29udGludWVzIHVudGlsIHRoZSBjb3JyZXNwb25kaW5nIGNsb3NpbmcgJ10nLiAgSWYgYSBzeW50YXggZXJyb3IKKyAgICAgKiBpcyBlbmNvdW50ZXJlZCBiZXR3ZWVuIHRoZSBvcGVuaW5nIGFuZCBjbG9zaW5nIGJyYWNlLCB0aGUgcGFyc2UgZmFpbHMuCisgICAgICogVXBvbiByZXR1cm4gZnJvbSBhIHN1Y2Nlc3NmdWwgcGFyc2UsIHRoZSBQYXJzZVBvc2l0aW9uIGlzIHVwZGF0ZWQgdG8KKyAgICAgKiBwb2ludCB0byB0aGUgY2hhcmFjdGVyIGZvbGxvd2luZyB0aGUgY2xvc2luZyAnXScsIGFuZCBhbiBpbnZlcnNpb24KKyAgICAgKiBsaXN0IGZvciB0aGUgcGFyc2VkIHBhdHRlcm4gaXMgcmV0dXJuZWQuICBUaGlzIG1ldGhvZAorICAgICAqIGNhbGxzIGl0c2VsZiByZWN1cnNpdmVseSB0byBwYXJzZSBlbWJlZGRlZCBzdWJwYXR0ZXJucy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBwYXR0ZXJuIHRoZSBzdHJpbmcgY29udGFpbmluZyB0aGUgcGF0dGVybiB0byBiZSBwYXJzZWQuICBUaGUKKyAgICAgKiBwb3J0aW9uIG9mIHRoZSBzdHJpbmcgZnJvbSBwb3MuZ2V0SW5kZXgoKSwgd2hpY2ggbXVzdCBiZSBhICdbJywgdG8gdGhlCisgICAgICogY29ycmVzcG9uZGluZyBjbG9zaW5nICddJywgaXMgcGFyc2VkLgorICAgICAqIEBwYXJhbSBwb3MgdXBvbiBlbnRyeSwgdGhlIHBvc2l0aW9uIGF0IHdoaWNoIHRvIGJlaW5nIHBhcnNpbmcuICBUaGUKKyAgICAgKiBjaGFyYWN0ZXIgYXQgcGF0dGVybi5jaGFyQXQocG9zLmdldEluZGV4KCkpIG11c3QgYmUgYSAnWycuICBVcG9uIHJldHVybgorICAgICAqIGZyb20gYSBzdWNjZXNzZnVsIHBhcnNlLCBwb3MuZ2V0SW5kZXgoKSBpcyBlaXRoZXIgdGhlIGNoYXJhY3RlciBhZnRlciB0aGUKKyAgICAgKiBjbG9zaW5nICddJyBvZiB0aGUgcGFyc2VkIHBhdHRlcm4sIG9yIHBhdHRlcm4ubGVuZ3RoKCkgaWYgdGhlIGNsb3NpbmcgJ10nCisgICAgICogaXMgdGhlIGxhc3QgY2hhcmFjdGVyIG9mIHRoZSBwYXR0ZXJuIHN0cmluZy4KKyAgICAgKiBAcmV0dXJuIGFuIGludmVyc2lvbiBsaXN0IGZvciB0aGUgcGFyc2VkIHN1YnN0cmluZworICAgICAqIG9mIDxjb2RlPnBhdHRlcm48L2NvZGU+CisgICAgICogQGV4Y2VwdGlvbiBqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBwYXJzZSBmYWlscy4KKyAgICAgKi8KKyAgICB2b2lkIGFwcGx5UGF0dGVybihTdHJpbmcgcGF0dGVybiwKKyAgICAgICAgICAgICAgICAgICAgICBQYXJzZVBvc2l0aW9uIHBvcywKKyAgICAgICAgICAgICAgICAgICAgICBTeW1ib2xUYWJsZSBzeW1ib2xzLAorICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gaWdub3JlV2hpdGVzcGFjZSkgeworCisgICAgICAgIC8vIE5lZWQgdG8gYnVpbGQgdGhlIHBhdHRlcm4gaW4gYSB0ZW1wb3Jhcnkgc3RyaW5nIGJlY2F1c2UKKyAgICAgICAgLy8gX2FwcGx5UGF0dGVybiBjYWxscyBhZGQoKSBldGMuLCB3aGljaCBzZXQgcGF0IHRvIGVtcHR5LgorICAgICAgICBTdHJpbmdCdWZmZXIgcmVidWlsdFBhdCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgX2FwcGx5UGF0dGVybihwYXR0ZXJuLCBwb3MsIHN5bWJvbHMsIHJlYnVpbHRQYXQsIGlnbm9yZVdoaXRlc3BhY2UpOworICAgICAgICBwYXQgPSByZWJ1aWx0UGF0LnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgdm9pZCBfYXBwbHlQYXR0ZXJuKFN0cmluZyBwYXR0ZXJuLCBQYXJzZVBvc2l0aW9uIHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgU3ltYm9sVGFibGUgc3ltYm9scywgU3RyaW5nQnVmZmVyIHJlYnVpbHRQYXQsCisgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gaWdub3JlV2hpdGVzcGFjZSkgeworCisgICAgICAgIC8vIElmIHRoZSBwYXR0ZXJuIGNvbnRhaW5zIGFueSBvZiB0aGUgZm9sbG93aW5nLCB3ZSBzYXZlIGEKKyAgICAgICAgLy8gcmVidWlsdCAodmFyaWFibGUtc3Vic3RpdHV0ZWQpIGNvcHkgb2YgdGhlIHNvdXJjZSBwYXR0ZXJuOgorICAgICAgICAvLyAtIGEgY2F0ZWdvcnkKKyAgICAgICAgLy8gLSBhbiBpbnRlcnNlY3Rpb24gb3Igc3VidHJhY3Rpb24gb3BlcmF0b3IKKyAgICAgICAgLy8gLSBhbiBhbmNob3IgKHRyYWlsaW5nICckJywgaW5kaWNhdGluZyBSQlQgZXRoZXIpCisgICAgICAgIGJvb2xlYW4gcmVidWlsZFBhdHRlcm4gPSBmYWxzZTsKKyAgICAgICAgU3RyaW5nQnVmZmVyIG5ld1BhdCA9IG5ldyBTdHJpbmdCdWZmZXIoIlsiKTsKKyAgICAgICAgaW50IG5lc3RlZFBhdFN0YXJ0ID0gLTE7IC8vIHNlZSBiZWxvdyBmb3IgdXNhZ2UKKyAgICAgICAgYm9vbGVhbiBuZXN0ZWRQYXREb25lID0gZmFsc2U7IC8vIHNlZSBiZWxvdyBmb3IgdXNhZ2UKKyAgICAgICAgU3RyaW5nQnVmZmVyIG11bHRpQ2hhckJ1ZmZlciA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgCisKKyAgICAgICAgYm9vbGVhbiBpbnZlcnQgPSBmYWxzZTsKKyAgICAgICAgY2xlYXIoKTsKKworICAgICAgICBmaW5hbCBpbnQgTk9ORSA9IC0xOworICAgICAgICBpbnQgbGFzdENoYXIgPSBOT05FOyAvLyBUaGlzIGlzIGVpdGhlciBhIGNoYXIgKDAuLjEwRkZGRikgb3IgLTEKKyAgICAgICAgYm9vbGVhbiBpc0xhc3RMaXRlcmFsID0gZmFsc2U7IC8vIFRSVUUgaWYgbGFzdENoYXIgd2FzIGEgbGl0ZXJhbAorICAgICAgICBjaGFyIGxhc3RPcCA9IDA7CisKKyAgICAgICAgLyogVGhpcyBsb29wIGl0ZXJhdGVzIG92ZXIgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIHBhdHRlcm4uICBXZSBzdGFydCBhdAorICAgICAgICAgKiB0aGUgcG9zaXRpb24gc3BlY2lmaWVkIGJ5IHBvcy4gIFdlIGV4aXQgdGhlIGxvb3Agd2hlbiBlaXRoZXIgYQorICAgICAgICAgKiBtYXRjaGluZyBjbG9zaW5nICddJyBpcyBzZWVuLCBvciB3ZSByZWFkIGFsbCBjaGFyYWN0ZXJzIG9mIHRoZQorICAgICAgICAgKiBwYXR0ZXJuLiAgSW4gdGhlIGxhdHRlciBjYXNlIGFuIGVycm9yIHdpbGwgYmUgdGhyb3duLgorICAgICAgICAgKi8KKworICAgICAgICAvKiBQYXR0ZXJuIHN5bnRheDoKKyAgICAgICAgICogIHBhdCA6PSAnWycgJ14nPyBlbGVtKiAnXScKKyAgICAgICAgICogIGVsZW0gOj0gYSB8IGEgJy0nIGEgfCBzZXQgfCBzZXQgb3Agc2V0CisgICAgICAgICAqICBzZXQgOj0gcGF0IHwgKGEgc2V0IHZhcmlhYmxlKQorICAgICAgICAgKiAgb3AgOj0gJyYnIHwgJy0nCisgICAgICAgICAqICBhIDo9IChhIGNoYXJhY3RlciwgcG9zc2libHkgZGVmaW5lZCBieSBhIHZhcikKKyAgICAgICAgICovCisKKyAgICAgICAgLy8gbW9kZSAwOiBObyBjaGFycyBwYXJzZWQgeWV0OyBuZXh0IG11c3QgYmUgJ1snCisgICAgICAgIC8vIG1vZGUgMTogJ1snIHNlZW47IGlmIG5leHQgaXMgJ14nIG9yICc6JyB0aGVuIHNwZWNpYWwKKyAgICAgICAgLy8gbW9kZSAyOiAnWycgJ14nPyBzZWVuOyBwYXJzZSBwYXR0ZXJuIGFuZCBjbG9zZSB3aXRoICddJworICAgICAgICAvLyBtb2RlIDM6ICdbOicgc2VlbjsgcGFyc2UgY2F0ZWdvcnkgYW5kIGNsb3NlIHdpdGggJzpdJworICAgICAgICAvLyBtb2RlIDQ6ICddJyBzZWVuOyBwYXJzZSBjb21wbGV0ZQorICAgICAgICAvLyBtb2RlIDU6IFRvcC1sZXZlbCBwcm9wZXJ0eSBwYXR0ZXJuIHNlZW4KKyAgICAgICAgaW50IG1vZGUgPSAwOworICAgICAgICBpbnQgc3RhcnQgPSBwb3MuZ2V0SW5kZXgoKTsKKyAgICAgICAgaW50IGkgPSBzdGFydDsKKyAgICAgICAgaW50IGxpbWl0ID0gcGF0dGVybi5sZW5ndGgoKTsKKyAgICAgICAgLyogSW4gdGhlIGNhc2Ugb2YgYW4gZW1iZWRkZWQgU3ltYm9sVGFibGUgdmFyaWFibGUsIHdlIGxvb2sgaXQgdXAgYW5kCisgICAgICAgICAqIHRoZW4gdGFrZSBjaGFyYWN0ZXJzIGZyb20gdGhlIHJlc3VsdGFudCBjaGFyW10gYXJyYXkuICBUaGVzZSBjaGFycworICAgICAgICAgKiBhcmUgc3ViamVjdGVkIHRvIGFuIGV4dHJhIGxldmVsIG9mIGxvb2t1cCBpbiB0aGUgU3ltYm9sVGFibGUgaW4gY2FzZQorICAgICAgICAgKiB0aGV5IGFyZSBzdGFuZC1pbnMgZm9yIGEgbmVzdGVkIFVuaWNvZGVTZXQuICAqLworICAgICAgICBjaGFyW10gdmFyVmFsdWVCdWZmZXIgPSBudWxsOworICAgICAgICBpbnQgaXZhclZhbHVlQnVmZmVyID0gMDsKKyAgICAgICAgaW50IGFuY2hvciA9IDA7CisgICAgICAgIGludCBjOworICAgICAgICB3aGlsZSAoaTxsaW1pdCkgeworICAgICAgICAgICAgLyogSWYgdGhlIG5leHQgZWxlbWVudCBpcyBhIHNpbmdsZSBjaGFyYWN0ZXIsIGMgd2lsbCBiZSBzZXQgdG8gaXQsCisgICAgICAgICAgICAgKiBhbmQgbmVzdGVkU2V0IHdpbGwgYmUgbnVsbC4gIEluIHRoaXMgY2FzZSBpc0xpdGVyYWwgaW5kaWNhdGVzCisgICAgICAgICAgICAgKiB3aGV0aGVyIHRoZSBjaGFyYWN0ZXIgc2hvdWxkIGFzc3VtZSBzcGVjaWFsIG1lYW5pbmcgaWYgaXQgaGFzCisgICAgICAgICAgICAgKiBvbmUuICBJZiB0aGUgbmV4dCBlbGVtZW50IGlzIGEgbmVzdGVkIHNldCwgZWl0aGVyIHZpYSBhIHZhcmlhYmxlCisgICAgICAgICAgICAgKiByZWZlcmVuY2UsIG9yIHZpYSBhbiBlbWJlZGRlZCAiWy4uXSIgIG9yICJbOi4uOl0iIHBhdHRlcm4sIHRoZW4KKyAgICAgICAgICAgICAqIG5lc3RlZFNldCB3aWxsIGJlIHNldCB0byB0aGUgcGFpcnMgbGlzdCBmb3IgdGhlIG5lc3RlZCBzZXQsIGFuZAorICAgICAgICAgICAgICogYydzIHZhbHVlIHNob3VsZCBiZSBpZ25vcmVkLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBVbmljb2RlU2V0IG5lc3RlZFNldCA9IG51bGw7CisgICAgICAgICAgICBib29sZWFuIGlzTGl0ZXJhbCA9IGZhbHNlOworICAgICAgICAgICAgaWYgKHZhclZhbHVlQnVmZmVyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXZhclZhbHVlQnVmZmVyIDwgdmFyVmFsdWVCdWZmZXIubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgIGMgPSBVVEYxNi5jaGFyQXQodmFyVmFsdWVCdWZmZXIsIDAsIHZhclZhbHVlQnVmZmVyLmxlbmd0aCwgaXZhclZhbHVlQnVmZmVyKTsKKyAgICAgICAgICAgICAgICAgICAgaXZhclZhbHVlQnVmZmVyICs9IFVURjE2LmdldENoYXJDb3VudChjKTsKKyAgICAgICAgICAgICAgICAgICAgVW5pY29kZU1hdGNoZXIgbSA9IHN5bWJvbHMubG9va3VwTWF0Y2hlcihjKTsgLy8gbWF5IGJlIE5VTEwKKyAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5lc3RlZFNldCA9IChVbmljb2RlU2V0KSBtOworICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChDbGFzc0Nhc3RFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiU3ludGF4IGVycm9yIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbmVzdGVkUGF0RG9uZSA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHZhclZhbHVlQnVmZmVyID0gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgYyA9IFVURjE2LmNoYXJBdChwYXR0ZXJuLCBpKTsKKyAgICAgICAgICAgICAgICAgICAgaSArPSBVVEYxNi5nZXRDaGFyQ291bnQoYyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBjID0gVVRGMTYuY2hhckF0KHBhdHRlcm4sIGkpOworICAgICAgICAgICAgICAgIGkgKz0gVVRGMTYuZ2V0Q2hhckNvdW50KGMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaWdub3JlV2hpdGVzcGFjZSAmJiBVQ2hhcmFjdGVyUHJvcGVydHkuaXNSdWxlV2hpdGVTcGFjZShjKSkgeworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBLZWVwIHRyYWNrIG9mIHRoZSBjb3VudCBvZiBjaGFyYWN0ZXJzIGFmdGVyIGFuIGFsbGVnZWQgYW5jaG9yCisgICAgICAgICAgICBpZiAoYW5jaG9yID4gMCkgeworICAgICAgICAgICAgICAgICsrYW5jaG9yOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBQYXJzZSB0aGUgb3BlbmluZyAnWycgYW5kIG9wdGlvbmFsIGZvbGxvd2luZyAnXicKKyAgICAgICAgICAgIHN3aXRjaCAobW9kZSkgeworICAgICAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgICAgIGlmIChyZXNlbWJsZXNQcm9wZXJ0eVBhdHRlcm4ocGF0dGVybiwgaS0xKSkgeworICAgICAgICAgICAgICAgICAgICBtb2RlID0gMzsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIEZhbGwgdGhyb3VnaAorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYyA9PSAnWycpIHsKKyAgICAgICAgICAgICAgICAgICAgbW9kZSA9IDE7IC8vIE5leHQgbG9vayBmb3IgJ14nCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIk1pc3Npbmcgb3BlbmluZyAnWyciKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgbW9kZSA9IDI7CisgICAgICAgICAgICAgICAgc3dpdGNoIChjKSB7CisgICAgICAgICAgICAgICAgY2FzZSAnXic6CisgICAgICAgICAgICAgICAgICAgIGludmVydCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIG5ld1BhdC5hcHBlbmQoKGNoYXIpIGMpOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8gQmFjayB0byB0b3AgdG8gZmV0Y2ggbmV4dCBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICBjYXNlICctJzoKKyAgICAgICAgICAgICAgICAgICAgaXNMaXRlcmFsID0gdHJ1ZTsgLy8gVHJlYXQgbGVhZGluZyAnLScgYXMgYSBsaXRlcmFsCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvLyBGYWxsIHRocm91Z2gKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLy8gZWxzZSBmYWxsIHRocm91Z2ggYW5kIHBhcnNlIHRoaXMgY2hhcmFjdGVyIG5vcm1hbGx5CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEFmdGVyIG9wZW5pbmcgbWF0dGVyIGlzIHBhcnNlZCAoIlsiLCAiW14iLCBvciAiWzoiKSwgdGhlIG1vZGUKKyAgICAgICAgICAgIC8vIHdpbGwgYmUgMiBpZiB3ZSB3YW50IGEgY2xvc2luZyAnXScsIG9yIDMgaWYgd2Ugc2hvdWxkIHBhcnNlIGEKKyAgICAgICAgICAgIC8vIGNhdGVnb3J5IGFuZCBjbG9zZSB3aXRoICI6XSIuCisKKyAgICAgICAgICAgIC8vIE9ubHkgcHJvY2VzcyBlc2NhcGVzLCB2YXJpYWJsZSByZWZlcmVuY2VzLCBhbmQgbmVzdGVkIHNldHMKKyAgICAgICAgICAgIC8vIGlmIHdlIGFyZSBfbm90XyByZXRyaWV2aW5nIGNoYXJhY3RlcnMgZnJvbSB0aGUgdmFyaWFibGUKKyAgICAgICAgICAgIC8vIGJ1ZmZlci4gIENoYXJhY3RlcnMgaW4gdGhlIHZhcmlhYmxlIGJ1ZmZlciBoYXZlIGFscmVhZHkKKyAgICAgICAgICAgIC8vIGJlbm4gdGhyb3VnaCBlc2NhcGUgYW5kIHZhcmlhYmxlIHJlZmVyZW5jZSBwcm9jZXNzaW5nLgorICAgICAgICAgICAgaWYgKHZhclZhbHVlQnVmZmVyID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAvKioKKyAgICAgICAgICAgICAgICAgKiBIYW5kbGUgcHJvcGVydHkgc2V0IHBhdHRlcm5zLgorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIGlmIChyZXNlbWJsZXNQcm9wZXJ0eVBhdHRlcm4ocGF0dGVybiwgaS0xKSkgeworICAgICAgICAgICAgICAgICAgICBQYXJzZVBvc2l0aW9uIHBwID0gbmV3IFBhcnNlUG9zaXRpb24oaS0xKTsKKyAgICAgICAgICAgICAgICAgICAgbmVzdGVkU2V0ID0gbmV3IFVuaWNvZGVTZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgbmVzdGVkU2V0LmFwcGx5UHJvcGVydHlQYXR0ZXJuKHBhdHRlcm4sIHBwKTsKKyAgICAgICAgICAgICAgICAgICAgbmVzdGVkUGF0U3RhcnQgPSBuZXdQYXQubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgICAgIG5lc3RlZFBhdERvbmUgPSB0cnVlOyAvLyB3ZSdyZSBnb2luZyB0byBkbyBpdCBqdXN0IGJlbG93CisKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChsYXN0T3ApIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAnLSc6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgJyYnOgorICAgICAgICAgICAgICAgICAgICAgICAgbmV3UGF0LmFwcGVuZChsYXN0T3ApOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgdG9wLWxldmVsIHByb3BlcnR5IHBhdHRlcm4sIHRoZW4gdHJpbQorICAgICAgICAgICAgICAgICAgICAvLyBvZmYgdGhlIG9wZW5pbmcgJ1snIGFuZCB1c2UgdGhlIHByb3BlcnR5IHBhdHRlcm4KKyAgICAgICAgICAgICAgICAgICAgLy8gYXMgdGhlIGVudGlyZSBwYXR0ZXJuLgorICAgICAgICAgICAgICAgICAgICBpZiAobW9kZSA9PSAzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXdQYXQuZGVsZXRlQ2hhckF0KDApOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIG5ld1BhdC5hcHBlbmQocGF0dGVybi5zdWJzdHJpbmcoaS0xLCBwcC5nZXRJbmRleCgpKSk7CisgICAgICAgICAgICAgICAgICAgIHJlYnVpbGRQYXR0ZXJuID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgICAgICBpID0gcHAuZ2V0SW5kZXgoKTsgLy8gYWR2YW5jZSBwYXN0IHByb3BlcnR5IHBhdHRlcm4KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmIChtb2RlID09IDMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVudGlyZSBwYXR0ZXJuIGlzIGEgY2F0ZWdvcnk7IGxlYXZlIHBhcnNlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb29wLiAgVGhpcyBpcyBvbmUgb2YgMiB3YXlzIHdlIGxlYXZlIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvb3AgaWYgdGhlIHBhdHRlcm4gaXMgd2VsbC1mb3JtZWQuCisgICAgICAgICAgICAgICAgICAgICAgICBzZXQobmVzdGVkU2V0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vZGUgPSA1OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvKiBIYW5kbGUgZXNjYXBlcy4gIElmIGEgY2hhcmFjdGVyIGlzIGVzY2FwZWQsIHRoZW4gaXQgYXNzdW1lcyBpdHMKKyAgICAgICAgICAgICAgICAgKiBsaXRlcmFsIHZhbHVlLiAgVGhpcyBpcyB0cnVlIGZvciBhbGwgY2hhcmFjdGVycywgYm90aCBzcGVjaWFsCisgICAgICAgICAgICAgICAgICogY2hhcmFjdGVycyBhbmQgY2hhcmFjdGVycyB3aXRoIG5vIHNwZWNpYWwgbWVhbmluZy4gIFdlIGFsc28KKyAgICAgICAgICAgICAgICAgKiBpbnRlcnByZXQgJ1xcdXh4eHgnIFVuaWNvZGUgZXNjYXBlcyBoZXJlIChhcyBsaXRlcmFscykuCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnXFwnKSB7CisgICAgICAgICAgICAgICAgICAgIGludFtdIG9mZnNldCA9IG5ldyBpbnRbXSB7IGkgfTsKKyAgICAgICAgICAgICAgICAgICAgaW50IGVzY2FwZWQgPSBVdGlsaXR5LnVuZXNjYXBlQXQocGF0dGVybiwgb2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGVzY2FwZWQgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGEgPSBNYXRoLm1heChpIC0gOCwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGltID0gTWF0aC5taW4oaSArIDE2LCBwYXR0ZXJuLmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgZXNjYXBlIHNlcXVlbmNlICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuLnN1YnN0cmluZyhzdGEsIGktMSkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuLnN1YnN0cmluZyhpLTEsIGxpbSkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGkgPSBvZmZzZXRbMF07CisgICAgICAgICAgICAgICAgICAgIGlzTGl0ZXJhbCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGMgPSBlc2NhcGVkOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8qIFBhcnNlIHZhcmlhYmxlIHJlZmVyZW5jZXMuICBUaGVzZSBhcmUgdHJlYXRlZCBhcyBsaXRlcmFscy4gIElmIGEKKyAgICAgICAgICAgICAgICAgKiB2YXJpYWJsZSByZWZlcnMgdG8gYSBVbmljb2RlU2V0LCBpdHMgc3RhbmQgaW4gY2hhcmFjdGVyIGlzCisgICAgICAgICAgICAgICAgICogcmV0dXJuZWQgaW4gdGhlIGNoYXJbXSBidWZmZXIuCisgICAgICAgICAgICAgICAgICogVmFyaWFibGUgbmFtZXMgYXJlIG9ubHkgcGFyc2VkIGlmIHZhck5hbWVUb0NoYXIgaXMgbm90IG51bGwuCisgICAgICAgICAgICAgICAgICogU2V0IHZhcmlhYmxlcyBhcmUgb25seSBsb29rZWQgdXAgaWYgdmFyQ2hhclRvU2V0IGlzIG5vdCBudWxsLgorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN5bWJvbHMgIT0gbnVsbCAmJiAhaXNMaXRlcmFsICYmIGMgPT0gU3ltYm9sVGFibGUuU1lNQk9MX1JFRikgeworICAgICAgICAgICAgICAgICAgICBwb3Muc2V0SW5kZXgoaSk7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBuYW1lID0gc3ltYm9scy5wYXJzZVJlZmVyZW5jZShwYXR0ZXJuLCBwb3MsIGxpbWl0KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5hbWUgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyVmFsdWVCdWZmZXIgPSBzeW1ib2xzLmxvb2t1cChuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YXJWYWx1ZUJ1ZmZlciA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiVW5kZWZpbmVkIHZhcmlhYmxlOiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIG5hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaXZhclZhbHVlQnVmZmVyID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBwb3MuZ2V0SW5kZXgoKTsgLy8gTWFrZSBpIHBvaW50IFBBU1QgbGFzdCBjaGFyIG9mIHZhciBuYW1lCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBHb3QgYSBudWxsOyB0aGlzIG1lYW5zIHdlIGhhdmUgYW4gaXNvbGF0ZWQgJC4KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRlbnRhdGl2ZWx5IGFzc3VtZSB0aGlzIGlzIGFuIGFuY2hvci4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFuY2hvciA9IDE7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7IC8vIEJhY2sgdG8gdGhlIHRvcCB0byBnZXQgdmFyVmFsdWVCdWZmZXJbMF0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvKiBBbiBvcGVuaW5nIGJyYWNrZXQgaW5kaWNhdGVzIHRoZSBmaXJzdCBicmFja2V0IG9mIGEgbmVzdGVkCisgICAgICAgICAgICAgICAgICogc3VicGF0dGVybi4KKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBlbHNlIGlmICghaXNMaXRlcmFsICYmIGMgPT0gJ1snKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFJlY29yZCBwb3NpdGlvbiBiZWZvcmUgbmVzdGVkIHBhdHRlcm4KKyAgICAgICAgICAgICAgICAgICAgbmVzdGVkUGF0U3RhcnQgPSBuZXdQYXQubGVuZ3RoKCk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gUmVjdXJzZSB0byBnZXQgdGhlIHBhaXJzIGZvciB0aGlzIG5lc3RlZCBzZXQuCisgICAgICAgICAgICAgICAgICAgIC8vIEJhY2t1cCBpIHRvICdbJy4KKyAgICAgICAgICAgICAgICAgICAgcG9zLnNldEluZGV4KC0taSk7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobGFzdE9wKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgJy0nOgorICAgICAgICAgICAgICAgICAgICBjYXNlICcmJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld1BhdC5hcHBlbmQobGFzdE9wKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIG5lc3RlZFNldCA9IG5ldyBVbmljb2RlU2V0KCk7CisgICAgICAgICAgICAgICAgICAgIG5lc3RlZFNldC5fYXBwbHlQYXR0ZXJuKHBhdHRlcm4sIHBvcywgc3ltYm9scywgbmV3UGF0LCBpZ25vcmVXaGl0ZXNwYWNlKTsKKyAgICAgICAgICAgICAgICAgICAgbmVzdGVkUGF0RG9uZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGkgPSBwb3MuZ2V0SW5kZXgoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFpc0xpdGVyYWwgJiYgYyA9PSAneycpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gc3RhcnQgb2YgYSBzdHJpbmcuIGZpbmQgdGhlIHJlc3QuCisgICAgICAgICAgICAgICAgICAgIGludCBsZW5ndGggPSAwOworICAgICAgICAgICAgICAgICAgICBpbnQgc3QgPSBpOworICAgICAgICAgICAgICAgICAgICBtdWx0aUNoYXJCdWZmZXIuc2V0TGVuZ3RoKDApOworICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaSA8IHBhdHRlcm4ubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBjaCA9IFVURjE2LmNoYXJBdChwYXR0ZXJuLCBpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGkgKz0gVVRGMTYuZ2V0Q2hhckNvdW50KGNoKTsgCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2ggPT0gJ30nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gLWxlbmd0aDsgLy8gc2lnbmFsIHRoYXQgd2Ugc2F3ICd9JworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PSAnXFwnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50W10gb2Zmc2V0ID0gbmV3IGludFtdIHsgaSB9OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoID0gVXRpbGl0eS51bmVzY2FwZUF0KHBhdHRlcm4sIG9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoID09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGEgPSBNYXRoLm1heChpIC0gOCwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW0gPSBNYXRoLm1pbihpICsgMTYsIHBhdHRlcm4ubGVuZ3RoKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZSAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuLnN1YnN0cmluZyhzdGEsIGktMSkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ8IiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybi5zdWJzdHJpbmcoaS0xLCBsaW0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG9mZnNldFswXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIC0tbGVuZ3RoOyAvLyBzaWM7IHNlZSBhYm92ZQorICAgICAgICAgICAgICAgICAgICAgICAgVVRGMTYuYXBwZW5kKG11bHRpQ2hhckJ1ZmZlciwgY2gpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChsZW5ndGggPCAxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIG11bHRpY2hhcmFjdGVyIHN0cmluZyIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgbmV3IHN0cmluZy4gQWRkIGl0IHRvIHNldCBhbmQgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIC8vIHdlIGRvbid0IG5lZWQgdG8gZHJvcCB0aHJvdWdoIHRvIHRoZSBmdXJ0aGVyCisgICAgICAgICAgICAgICAgICAgIC8vIHByb2Nlc3NpbmcKKyAgICAgICAgICAgICAgICAgICAgYWRkKG11bHRpQ2hhckJ1ZmZlci50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICAgICAgbmV3UGF0LmFwcGVuZCgneycpLmFwcGVuZChwYXR0ZXJuLnN1YnN0cmluZyhzdCwgaSkpOworICAgICAgICAgICAgICAgICAgICByZWJ1aWxkUGF0dGVybiA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogQXQgdGhpcyBwb2ludCB3ZSBoYXZlIGVpdGhlciBhIGNoYXJhY3RlciBjLCBvciBhIG5lc3RlZCBzZXQuICBJZgorICAgICAgICAgICAgICogd2UgaGF2ZSBlbmNvdW50ZXJlZCBhIG5lc3RlZCBzZXQsIGVpdGhlciBlbWJlZGRlZCBpbiB0aGUgcGF0dGVybiwKKyAgICAgICAgICAgICAqIG9yIGFzIGEgdmFyaWFibGUsIHdlIGhhdmUgYSBub24tbnVsbCBuZXN0ZWRTZXQsIGFuZCBjIHNob3VsZCBiZQorICAgICAgICAgICAgICogaWdub3JlZC4gIE90aGVyd2lzZSBjIGlzIHRoZSBjdXJyZW50IGNoYXJhY3RlciwgYW5kIGlzTGl0ZXJhbAorICAgICAgICAgICAgICogaW5kaWNhdGVzIHdoZXRoZXIgaXQgaXMgYW4gZXNjYXBlZCBsaXRlcmFsIChvciB2YXJpYWJsZSkgb3IgYQorICAgICAgICAgICAgICogbm9ybWFsIHVuZXNjYXBlZCBjaGFyYWN0ZXIuICBVbmVzY2FwZWQgY2hhcmFjdGVycyAnLScsICcmJywgYW5kCisgICAgICAgICAgICAgKiAnXScgaGF2ZSBzcGVjaWFsIG1lYW5pbmdzLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAobmVzdGVkU2V0ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBpZiAobGFzdENoYXIgIT0gTk9ORSkgeworICAgICAgICAgICAgICAgICAgICBpZiAobGFzdE9wICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIklsbGVnYWwgcmhzIGZvciAiICsgbGFzdENoYXIgKyBsYXN0T3ApOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGFkZChsYXN0Q2hhciwgbGFzdENoYXIpOworICAgICAgICAgICAgICAgICAgICBpZiAobmVzdGVkUGF0RG9uZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgd2FzIGEgY2hhcmFjdGVyIGJlZm9yZSB0aGUgbmVzdGVkIHNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZW4gd2UgbmVlZCB0byBpbnNlcnQgaXQgaW4gbmV3UGF0IGJlZm9yZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBhdHRlcm4gZm9yIHRoZSBuZXN0ZWQgc2V0LiAgVGhpcyBwb3NpdGlvbiB3YXMKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlY29yZGVkIGluIG5lc3RlZFBhdFN0YXJ0LgorICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nQnVmZmVyIHMgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBfYXBwZW5kVG9QYXQocywgbGFzdENoYXIsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld1BhdC5pbnNlcnQobmVzdGVkUGF0U3RhcnQsIHMudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBfYXBwZW5kVG9QYXQobmV3UGF0LCBsYXN0Q2hhciwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGxhc3RDaGFyID0gTk9ORTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc3dpdGNoIChsYXN0T3ApIHsKKyAgICAgICAgICAgICAgICBjYXNlICctJzoKKyAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQWxsKG5lc3RlZFNldCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgJyYnOgorICAgICAgICAgICAgICAgICAgICByZXRhaW5BbGwobmVzdGVkU2V0KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgICAgICAgICBhZGRBbGwobmVzdGVkU2V0KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gR2V0IHRoZSBwYXR0ZXJuIGZvciB0aGUgbmVzdGVkIHNldCwgaWYgd2UgaGF2ZW4ndCBkb25lIHNvCisgICAgICAgICAgICAgICAgLy8gYWxyZWFkeS4KKyAgICAgICAgICAgICAgICBpZiAoIW5lc3RlZFBhdERvbmUpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3RPcCAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXdQYXQuYXBwZW5kKGxhc3RPcCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbmVzdGVkU2V0Ll90b1BhdHRlcm4obmV3UGF0LCBmYWxzZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJlYnVpbGRQYXR0ZXJuID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIGxhc3RPcCA9IDA7CisKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIWlzTGl0ZXJhbCAmJiBjID09ICddJykgeworICAgICAgICAgICAgICAgIC8vIEZpbmFsIGNsb3NpbmcgZGVsaW1pdGVyLiAgVGhpcyBpcyB0aGUgb25seSB3YXkgd2UgbGVhdmUgdGhpcworICAgICAgICAgICAgICAgIC8vIGxvb3AgaWYgdGhlIHBhdHRlcm4gaXMgd2VsbC1mb3JtZWQuCisgICAgICAgICAgICAgICAgaWYgKGFuY2hvciA+IDIgfHwgYW5jaG9yID09IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiU3ludGF4IGVycm9yIG5lYXIgJCIgKyBwYXR0ZXJuKTsKKworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoYW5jaG9yID09IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVidWlsZFBhdHRlcm4gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBuZXdQYXQuYXBwZW5kKFN5bWJvbFRhYmxlLlNZTUJPTF9SRUYpOworICAgICAgICAgICAgICAgICAgICBhZGQoVHJhbnNsaXRlcmF0aW9uUnVsZS5FVEhFUik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1vZGUgPSA0OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0T3AgPT0gMCAmJiAhaXNMaXRlcmFsICYmIChjID09ICctJyB8fCBjID09ICcmJykpIHsKKyAgICAgICAgICAgICAgICBsYXN0T3AgPSAoY2hhcikgYzsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdE9wID09ICctJykgeworICAgICAgICAgICAgICAgIGlmIChsYXN0Q2hhciA+PSBjKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIERvbid0IGFsbG93IHJlZHVuZGFudCAoYS1hKSBvciBlbXB0eSAoYi1hKSByYW5nZXM7CisgICAgICAgICAgICAgICAgICAgIC8vIHRoZXNlIGFyZSBtb3N0IGxpa2VseSB0eXBvcy4KKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCByYW5nZSAiICsgbGFzdENoYXIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctJyArIGMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhZGQobGFzdENoYXIsIGMpOworICAgICAgICAgICAgICAgIF9hcHBlbmRUb1BhdChuZXdQYXQsIGxhc3RDaGFyLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgbmV3UGF0LmFwcGVuZCgnLScpOworICAgICAgICAgICAgICAgIF9hcHBlbmRUb1BhdChuZXdQYXQsIGMsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBsYXN0T3AgPSAwOworICAgICAgICAgICAgICAgIGxhc3RDaGFyID0gTk9ORTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdE9wICE9IDApIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIDxzZXQ+JjxjaGFyPiBvciA8Y2hhcj4mPGNoYXI+CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiVW5xdW90ZWQgIiArIGxhc3RPcCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChsYXN0Q2hhciAhPSBOT05FKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgPGNoYXI+PGNoYXI+CisgICAgICAgICAgICAgICAgICAgIGFkZChsYXN0Q2hhciwgbGFzdENoYXIpOworICAgICAgICAgICAgICAgICAgICBfYXBwZW5kVG9QYXQobmV3UGF0LCBsYXN0Q2hhciwgZmFsc2UpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBsYXN0Q2hhciA9IGM7CisgICAgICAgICAgICAgICAgaXNMYXN0TGl0ZXJhbCA9IGlzTGl0ZXJhbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChtb2RlIDwgNCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiTWlzc2luZyAnXSciKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRyZWF0IGEgdHJhaWxpbmcgJyQnIGFzIGluZGljYXRpbmcgRVRIRVIuICBUaGlzIGNvZGUgaXMgb25seQorICAgICAgICAvLyBleGVjdXRlZCBpZiBzeW1ib2xzID09IE5VTEw7IG90aGVyd2lzZSBvdGhlciBjb2RlIHBhcnNlcyB0aGUKKyAgICAgICAgLy8gYW5jaG9yLgorICAgICAgICBpZiAobGFzdENoYXIgPT0gU3ltYm9sVGFibGUuU1lNQk9MX1JFRiAmJiAhaXNMYXN0TGl0ZXJhbCkgeworICAgICAgICAgICAgcmVidWlsZFBhdHRlcm4gPSB0cnVlOworICAgICAgICAgICAgbmV3UGF0LmFwcGVuZCgoY2hhcikgbGFzdENoYXIpOworICAgICAgICAgICAgYWRkKFRyYW5zbGl0ZXJhdGlvblJ1bGUuRVRIRVIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBlbHNlIGlmIChsYXN0Q2hhciAhPSBOT05FKSB7CisgICAgICAgICAgICBhZGQobGFzdENoYXIsIGxhc3RDaGFyKTsKKyAgICAgICAgICAgIF9hcHBlbmRUb1BhdChuZXdQYXQsIGxhc3RDaGFyLCBmYWxzZSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBIYW5kbGUgdW5wcm9jZXNzZWQgc3R1ZmYgcHJlY2VkaW5nIHRoZSBjbG9zaW5nICddJworICAgICAgICBpZiAobGFzdE9wID09ICctJykgeworICAgICAgICAgICAgLy8gVHJhaWxpbmcgJy0nIGlzIHRyZWF0ZWQgYXMgbGl0ZXJhbAorICAgICAgICAgICAgYWRkKGxhc3RPcCwgbGFzdE9wKTsKKyAgICAgICAgICAgIG5ld1BhdC5hcHBlbmQoJy0nKTsKKyAgICAgICAgfSBlbHNlIGlmIChsYXN0T3AgPT0gJyYnKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJVbnF1b3RlZCB0cmFpbGluZyAiICsgbGFzdE9wKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtb2RlID09IDQpIHsKKyAgICAgICAgICAgIG5ld1BhdC5hcHBlbmQoJ10nKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBJZiB3ZSBzYXcgYSAnXicgYWZ0ZXIgdGhlIGluaXRpYWwgJ1snIG9mIHRoaXMgcGF0dGVybiwgdGhlbiBwZXJmb3JtCisgICAgICAgICAqIHRoZSBjb21wbGVtZW50LiAgKEludmVyc2lvbiBhZnRlciAnWzonIGlzIGhhbmRsZWQgZWxzZXdoZXJlLikKKyAgICAgICAgICovCisgICAgICAgIGlmIChpbnZlcnQpIHsKKyAgICAgICAgICAgIGNvbXBsZW1lbnQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHBvcy5zZXRJbmRleChpKTsKKworICAgICAgICAvLyBVc2UgdGhlIHJlYnVpbHQgcGF0dGVybiAobmV3UGF0KSBvbmx5IGlmIG5lY2Vzc2FyeS4gIFByZWZlciB0aGUKKyAgICAgICAgLy8gZ2VuZXJhdGVkIHBhdHRlcm4uCisgICAgICAgIGlmIChyZWJ1aWxkUGF0dGVybikgeworICAgICAgICAgICAgcmVidWlsdFBhdC5hcHBlbmQobmV3UGF0LnRvU3RyaW5nKCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgX2dlbmVyYXRlUGF0dGVybihyZWJ1aWx0UGF0LCBmYWxzZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZmFsc2UpIHsKKyAgICAgICAgICAgIC8vIERlYnVnIHBhcnNlcgorICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJVbmljb2RlU2V0KCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm4uc3Vic3RyaW5nKHN0YXJ0LCBpKzEpICsgIikgLT4gIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXRpbGl0eS5lc2NhcGUodG9TdHJpbmcoKSkpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gSW1wbGVtZW50YXRpb246IFV0aWxpdHkgbWV0aG9kcworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgcHJpdmF0ZSB2b2lkIGVuc3VyZUNhcGFjaXR5KGludCBuZXdMZW4pIHsKKyAgICAgICAgaWYgKG5ld0xlbiA8PSBsaXN0Lmxlbmd0aCkgcmV0dXJuOworICAgICAgICBpbnRbXSB0ZW1wID0gbmV3IGludFtuZXdMZW4gKyBHUk9XX0VYVFJBXTsKKyAgICAgICAgU3lzdGVtLmFycmF5Y29weShsaXN0LCAwLCB0ZW1wLCAwLCBsZW4pOworICAgICAgICBsaXN0ID0gdGVtcDsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgZW5zdXJlQnVmZmVyQ2FwYWNpdHkoaW50IG5ld0xlbikgeworICAgICAgICBpZiAoYnVmZmVyICE9IG51bGwgJiYgbmV3TGVuIDw9IGJ1ZmZlci5sZW5ndGgpIHJldHVybjsKKyAgICAgICAgYnVmZmVyID0gbmV3IGludFtuZXdMZW4gKyBHUk9XX0VYVFJBXTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBc3N1bWVzIHN0YXJ0IDw9IGVuZC4KKyAgICAgKi8KKyAgICBwcml2YXRlIGludFtdIHJhbmdlKGludCBzdGFydCwgaW50IGVuZCkgeworICAgICAgICBpZiAocmFuZ2VMaXN0ID09IG51bGwpIHsKKyAgICAgICAgICAgIHJhbmdlTGlzdCA9IG5ldyBpbnRbXSB7IHN0YXJ0LCBlbmQrMSwgSElHSCB9OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmFuZ2VMaXN0WzBdID0gc3RhcnQ7CisgICAgICAgICAgICByYW5nZUxpc3RbMV0gPSBlbmQrMTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmFuZ2VMaXN0OworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIEltcGxlbWVudGF0aW9uOiBGdW5kYW1lbnRhbCBvcGVyYXRpb25zCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvLyBwb2xhcml0eSA9IDAsIDMgaXMgbm9ybWFsOiB4IHhvciB5CisgICAgLy8gcG9sYXJpdHkgPSAxLCAyOiB4IHhvciB+eSA9PSB4ID09PSB5CisKKyAgICBwcml2YXRlIFVuaWNvZGVTZXQgeG9yKGludFtdIG90aGVyLCBpbnQgb3RoZXJMZW4sIGludCBwb2xhcml0eSkgeworICAgICAgICBlbnN1cmVCdWZmZXJDYXBhY2l0eShsZW4gKyBvdGhlckxlbik7CisgICAgICAgIGludCBpID0gMCwgaiA9IDAsIGsgPSAwOworICAgICAgICBpbnQgYSA9IGxpc3RbaSsrXTsKKyAgICAgICAgaW50IGI7CisgICAgICAgIGlmIChwb2xhcml0eSA9PSAxIHx8IHBvbGFyaXR5ID09IDIpIHsKKyAgICAgICAgICAgIGIgPSBMT1c7CisgICAgICAgICAgICBpZiAob3RoZXJbal0gPT0gTE9XKSB7IC8vIHNraXAgYmFzZSBpZiBhbHJlYWR5IExPVworICAgICAgICAgICAgICAgICsrajsKKyAgICAgICAgICAgICAgICBiID0gb3RoZXJbal07CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBiID0gb3RoZXJbaisrXTsKKyAgICAgICAgfQorICAgICAgICAvLyBzaW1wbGVzdCBvZiBhbGwgdGhlIHJvdXRpbmVzCisgICAgICAgIC8vIHNvcnQgdGhlIHZhbHVlcywgZGlzY2FyZGluZyBpZGVudGljYWxzIQorICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgaWYgKGEgPCBiKSB7CisgICAgICAgICAgICAgICAgYnVmZmVyW2srK10gPSBhOworICAgICAgICAgICAgICAgIGEgPSBsaXN0W2krK107CisgICAgICAgICAgICB9IGVsc2UgaWYgKGIgPCBhKSB7CisgICAgICAgICAgICAgICAgYnVmZmVyW2srK10gPSBiOworICAgICAgICAgICAgICAgIGIgPSBvdGhlcltqKytdOworICAgICAgICAgICAgfSBlbHNlIGlmIChhICE9IEhJR0gpIHsgLy8gYXQgdGhpcyBwb2ludCwgYSA9PSBiCisgICAgICAgICAgICAgICAgLy8gZGlzY2FyZCBib3RoIHZhbHVlcyEKKyAgICAgICAgICAgICAgICBhID0gbGlzdFtpKytdOworICAgICAgICAgICAgICAgIGIgPSBvdGhlcltqKytdOworICAgICAgICAgICAgfSBlbHNlIHsgLy8gRE9ORSEKKyAgICAgICAgICAgICAgICBidWZmZXJbaysrXSA9IEhJR0g7CisgICAgICAgICAgICAgICAgbGVuID0gazsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAvLyBzd2FwIGxpc3QgYW5kIGJ1ZmZlcgorICAgICAgICBpbnRbXSB0ZW1wID0gbGlzdDsKKyAgICAgICAgbGlzdCA9IGJ1ZmZlcjsKKyAgICAgICAgYnVmZmVyID0gdGVtcDsKKyAgICAgICAgcGF0ID0gbnVsbDsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCisgICAgLy8gcG9sYXJpdHkgPSAwIGlzIG5vcm1hbDogeCB1bmlvbiB5CisgICAgLy8gcG9sYXJpdHkgPSAyOiB4IHVuaW9uIH55CisgICAgLy8gcG9sYXJpdHkgPSAxOiB+eCB1bmlvbiB5CisgICAgLy8gcG9sYXJpdHkgPSAzOiB+eCB1bmlvbiB+eQorCisgICAgcHJpdmF0ZSBVbmljb2RlU2V0IGFkZChpbnRbXSBvdGhlciwgaW50IG90aGVyTGVuLCBpbnQgcG9sYXJpdHkpIHsKKyAgICAgICAgZW5zdXJlQnVmZmVyQ2FwYWNpdHkobGVuICsgb3RoZXJMZW4pOworICAgICAgICBpbnQgaSA9IDAsIGogPSAwLCBrID0gMDsKKyAgICAgICAgaW50IGEgPSBsaXN0W2krK107CisgICAgICAgIGludCBiID0gb3RoZXJbaisrXTsKKyAgICAgICAgLy8gY2hhbmdlIGZyb20geG9yIGlzIHRoYXQgd2UgaGF2ZSB0byBjaGVjayBvdmVybGFwcGluZyBwYWlycworICAgICAgICAvLyBwb2xhcml0eSBiaXQgMSBtZWFucyBhIGlzIHNlY29uZCwgYml0IDIgbWVhbnMgYiBpcy4KKyAgICAgICAgbWFpbjoKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIHN3aXRjaCAocG9sYXJpdHkpIHsKKyAgICAgICAgICAgICAgY2FzZSAwOiAvLyBib3RoIGZpcnN0OyB0YWtlIGxvd2VyIGlmIHVuZXF1YWwKKyAgICAgICAgICAgICAgICBpZiAoYSA8IGIpIHsgLy8gdGFrZSBhCisgICAgICAgICAgICAgICAgICAgIC8vIEJhY2sgdXAgb3ZlciBvdmVybGFwcGluZyByYW5nZXMgaW4gYnVmZmVyW10KKyAgICAgICAgICAgICAgICAgICAgaWYgKGsgPiAwICYmIGEgPD0gYnVmZmVyW2stMV0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBpY2sgbGF0dGVyIGVuZCB2YWx1ZSBpbiBidWZmZXJbXSB2cy4gbGlzdFtdCisgICAgICAgICAgICAgICAgICAgICAgICBhID0gbWF4KGxpc3RbaV0sIGJ1ZmZlclstLWtdKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vIG92ZXJsYXAKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcltrKytdID0gYTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBsaXN0W2ldOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGkrKzsgLy8gQ29tbW9uIGlmL2Vsc2UgY29kZSBmYWN0b3JlZCBvdXQKKyAgICAgICAgICAgICAgICAgICAgcG9sYXJpdHkgXj0gMTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGIgPCBhKSB7IC8vIHRha2UgYgorICAgICAgICAgICAgICAgICAgICBpZiAoayA+IDAgJiYgYiA8PSBidWZmZXJbay0xXSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYiA9IG1heChvdGhlcltqXSwgYnVmZmVyWy0ta10pOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyW2srK10gPSBiOworICAgICAgICAgICAgICAgICAgICAgICAgYiA9IG90aGVyW2pdOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGorKzsKKyAgICAgICAgICAgICAgICAgICAgcG9sYXJpdHkgXj0gMjsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeyAvLyBhID09IGIsIHRha2UgYSwgZHJvcCBiCisgICAgICAgICAgICAgICAgICAgIGlmIChhID09IEhJR0gpIGJyZWFrIG1haW47CisgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgc3ltbWV0cmljYWw7IGl0IGRvZXNuJ3QgbWF0dGVyIGlmCisgICAgICAgICAgICAgICAgICAgIC8vIHdlIGJhY2t0cmFjayB3aXRoIGEgb3IgYi4gLSBsaXUKKyAgICAgICAgICAgICAgICAgICAgaWYgKGsgPiAwICYmIGEgPD0gYnVmZmVyW2stMV0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBtYXgobGlzdFtpXSwgYnVmZmVyWy0ta10pOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm8gb3ZlcmxhcAorICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyW2srK10gPSBhOworICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGxpc3RbaV07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaSsrOworICAgICAgICAgICAgICAgICAgICBwb2xhcml0eSBePSAxOworICAgICAgICAgICAgICAgICAgICBiID0gb3RoZXJbaisrXTsgcG9sYXJpdHkgXj0gMjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMzogLy8gYm90aCBzZWNvbmQ7IHRha2UgaGlnaGVyIGlmIHVuZXF1YWwsIGFuZCBkcm9wIG90aGVyCisgICAgICAgICAgICAgICAgaWYgKGIgPD0gYSkgeyAvLyB0YWtlIGEKKyAgICAgICAgICAgICAgICAgICAgaWYgKGEgPT0gSElHSCkgYnJlYWsgbWFpbjsKKyAgICAgICAgICAgICAgICAgICAgYnVmZmVyW2srK10gPSBhOworICAgICAgICAgICAgICAgIH0gZWxzZSB7IC8vIHRha2UgYgorICAgICAgICAgICAgICAgICAgICBpZiAoYiA9PSBISUdIKSBicmVhayBtYWluOworICAgICAgICAgICAgICAgICAgICBidWZmZXJbaysrXSA9IGI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGEgPSBsaXN0W2krK107IHBvbGFyaXR5IF49IDE7ICAgLy8gZmFjdG9yZWQgY29tbW9uIGNvZGUKKyAgICAgICAgICAgICAgICBiID0gb3RoZXJbaisrXTsgcG9sYXJpdHkgXj0gMjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAxOiAvLyBhIHNlY29uZCwgYiBmaXJzdDsgaWYgYiA8IGEsIG92ZXJsYXAKKyAgICAgICAgICAgICAgICBpZiAoYSA8IGIpIHsgLy8gbm8gb3ZlcmxhcCwgdGFrZSBhCisgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcltrKytdID0gYTsgYSA9IGxpc3RbaSsrXTsgcG9sYXJpdHkgXj0gMTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGIgPCBhKSB7IC8vIE9WRVJMQVAsIGRyb3AgYgorICAgICAgICAgICAgICAgICAgICBiID0gb3RoZXJbaisrXTsgcG9sYXJpdHkgXj0gMjsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeyAvLyBhID09IGIsIGRyb3AgYm90aCEKKyAgICAgICAgICAgICAgICAgICAgaWYgKGEgPT0gSElHSCkgYnJlYWsgbWFpbjsKKyAgICAgICAgICAgICAgICAgICAgYSA9IGxpc3RbaSsrXTsgcG9sYXJpdHkgXj0gMTsKKyAgICAgICAgICAgICAgICAgICAgYiA9IG90aGVyW2orK107IHBvbGFyaXR5IF49IDI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDI6IC8vIGEgZmlyc3QsIGIgc2Vjb25kOyBpZiBhIDwgYiwgb3ZlcmxhcAorICAgICAgICAgICAgICAgIGlmIChiIDwgYSkgeyAvLyBubyBvdmVybGFwLCB0YWtlIGIKKyAgICAgICAgICAgICAgICAgICAgYnVmZmVyW2srK10gPSBiOyBiID0gb3RoZXJbaisrXTsgcG9sYXJpdHkgXj0gMjsKKyAgICAgICAgICAgICAgICB9IGVsc2UgIGlmIChhIDwgYikgeyAvLyBPVkVSTEFQLCBkcm9wIGEKKyAgICAgICAgICAgICAgICAgICAgYSA9IGxpc3RbaSsrXTsgcG9sYXJpdHkgXj0gMTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeyAvLyBhID09IGIsIGRyb3AgYm90aCEKKyAgICAgICAgICAgICAgICAgICAgaWYgKGEgPT0gSElHSCkgYnJlYWsgbWFpbjsKKyAgICAgICAgICAgICAgICAgICAgYSA9IGxpc3RbaSsrXTsgcG9sYXJpdHkgXj0gMTsKKyAgICAgICAgICAgICAgICAgICAgYiA9IG90aGVyW2orK107IHBvbGFyaXR5IF49IDI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJ1ZmZlcltrKytdID0gSElHSDsgICAgLy8gdGVybWluYXRlCisgICAgICAgIGxlbiA9IGs7CisgICAgICAgIC8vIHN3YXAgbGlzdCBhbmQgYnVmZmVyCisgICAgICAgIGludFtdIHRlbXAgPSBsaXN0OworICAgICAgICBsaXN0ID0gYnVmZmVyOworICAgICAgICBidWZmZXIgPSB0ZW1wOworICAgICAgICBwYXQgPSBudWxsOworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICAvLyBwb2xhcml0eSA9IDAgaXMgbm9ybWFsOiB4IGludGVyc2VjdCB5CisgICAgLy8gcG9sYXJpdHkgPSAyOiB4IGludGVyc2VjdCB+eSA9PSBzZXQtbWludXMKKyAgICAvLyBwb2xhcml0eSA9IDE6IH54IGludGVyc2VjdCB5CisgICAgLy8gcG9sYXJpdHkgPSAzOiB+eCBpbnRlcnNlY3QgfnkKKworICAgIHByaXZhdGUgVW5pY29kZVNldCByZXRhaW4oaW50W10gb3RoZXIsIGludCBvdGhlckxlbiwgaW50IHBvbGFyaXR5KSB7CisgICAgICAgIGVuc3VyZUJ1ZmZlckNhcGFjaXR5KGxlbiArIG90aGVyTGVuKTsKKyAgICAgICAgaW50IGkgPSAwLCBqID0gMCwgayA9IDA7CisgICAgICAgIGludCBhID0gbGlzdFtpKytdOworICAgICAgICBpbnQgYiA9IG90aGVyW2orK107CisgICAgICAgIC8vIGNoYW5nZSBmcm9tIHhvciBpcyB0aGF0IHdlIGhhdmUgdG8gY2hlY2sgb3ZlcmxhcHBpbmcgcGFpcnMKKyAgICAgICAgLy8gcG9sYXJpdHkgYml0IDEgbWVhbnMgYSBpcyBzZWNvbmQsIGJpdCAyIG1lYW5zIGIgaXMuCisgICAgICAgIG1haW46CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBzd2l0Y2ggKHBvbGFyaXR5KSB7CisgICAgICAgICAgICAgIGNhc2UgMDogLy8gYm90aCBmaXJzdDsgZHJvcCB0aGUgc21hbGxlcgorICAgICAgICAgICAgICAgIGlmIChhIDwgYikgeyAvLyBkcm9wIGEKKyAgICAgICAgICAgICAgICAgICAgYSA9IGxpc3RbaSsrXTsgcG9sYXJpdHkgXj0gMTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGIgPCBhKSB7IC8vIGRyb3AgYgorICAgICAgICAgICAgICAgICAgICBiID0gb3RoZXJbaisrXTsgcG9sYXJpdHkgXj0gMjsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeyAvLyBhID09IGIsIHRha2Ugb25lLCBkcm9wIG90aGVyCisgICAgICAgICAgICAgICAgICAgIGlmIChhID09IEhJR0gpIGJyZWFrIG1haW47CisgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcltrKytdID0gYTsgYSA9IGxpc3RbaSsrXTsgcG9sYXJpdHkgXj0gMTsKKyAgICAgICAgICAgICAgICAgICAgYiA9IG90aGVyW2orK107IHBvbGFyaXR5IF49IDI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDM6IC8vIGJvdGggc2Vjb25kOyB0YWtlIGxvd2VyIGlmIHVuZXF1YWwKKyAgICAgICAgICAgICAgICBpZiAoYSA8IGIpIHsgLy8gdGFrZSBhCisgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcltrKytdID0gYTsgYSA9IGxpc3RbaSsrXTsgcG9sYXJpdHkgXj0gMTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGIgPCBhKSB7IC8vIHRha2UgYgorICAgICAgICAgICAgICAgICAgICBidWZmZXJbaysrXSA9IGI7IGIgPSBvdGhlcltqKytdOyBwb2xhcml0eSBePSAyOworICAgICAgICAgICAgICAgIH0gZWxzZSB7IC8vIGEgPT0gYiwgdGFrZSBvbmUsIGRyb3Agb3RoZXIKKyAgICAgICAgICAgICAgICAgICAgaWYgKGEgPT0gSElHSCkgYnJlYWsgbWFpbjsKKyAgICAgICAgICAgICAgICAgICAgYnVmZmVyW2srK10gPSBhOyBhID0gbGlzdFtpKytdOyBwb2xhcml0eSBePSAxOworICAgICAgICAgICAgICAgICAgICBiID0gb3RoZXJbaisrXTsgcG9sYXJpdHkgXj0gMjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTogLy8gYSBzZWNvbmQsIGIgZmlyc3Q7CisgICAgICAgICAgICAgICAgaWYgKGEgPCBiKSB7IC8vIE5PIE9WRVJMQVAsIGRyb3AgYQorICAgICAgICAgICAgICAgICAgICBhID0gbGlzdFtpKytdOyBwb2xhcml0eSBePSAxOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYiA8IGEpIHsgLy8gT1ZFUkxBUCwgdGFrZSBiCisgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcltrKytdID0gYjsgYiA9IG90aGVyW2orK107IHBvbGFyaXR5IF49IDI7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsgLy8gYSA9PSBiLCBkcm9wIGJvdGghCisgICAgICAgICAgICAgICAgICAgIGlmIChhID09IEhJR0gpIGJyZWFrIG1haW47CisgICAgICAgICAgICAgICAgICAgIGEgPSBsaXN0W2krK107IHBvbGFyaXR5IF49IDE7CisgICAgICAgICAgICAgICAgICAgIGIgPSBvdGhlcltqKytdOyBwb2xhcml0eSBePSAyOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAyOiAvLyBhIGZpcnN0LCBiIHNlY29uZDsgaWYgYSA8IGIsIG92ZXJsYXAKKyAgICAgICAgICAgICAgICBpZiAoYiA8IGEpIHsgLy8gbm8gb3ZlcmxhcCwgZHJvcCBiCisgICAgICAgICAgICAgICAgICAgIGIgPSBvdGhlcltqKytdOyBwb2xhcml0eSBePSAyOworICAgICAgICAgICAgICAgIH0gZWxzZSAgaWYgKGEgPCBiKSB7IC8vIE9WRVJMQVAsIHRha2UgYQorICAgICAgICAgICAgICAgICAgICBidWZmZXJbaysrXSA9IGE7IGEgPSBsaXN0W2krK107IHBvbGFyaXR5IF49IDE7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsgLy8gYSA9PSBiLCBkcm9wIGJvdGghCisgICAgICAgICAgICAgICAgICAgIGlmIChhID09IEhJR0gpIGJyZWFrIG1haW47CisgICAgICAgICAgICAgICAgICAgIGEgPSBsaXN0W2krK107IHBvbGFyaXR5IF49IDE7CisgICAgICAgICAgICAgICAgICAgIGIgPSBvdGhlcltqKytdOyBwb2xhcml0eSBePSAyOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBidWZmZXJbaysrXSA9IEhJR0g7ICAgIC8vIHRlcm1pbmF0ZQorICAgICAgICBsZW4gPSBrOworICAgICAgICAvLyBzd2FwIGxpc3QgYW5kIGJ1ZmZlcgorICAgICAgICBpbnRbXSB0ZW1wID0gbGlzdDsKKyAgICAgICAgbGlzdCA9IGJ1ZmZlcjsKKyAgICAgICAgYnVmZmVyID0gdGVtcDsKKyAgICAgICAgcGF0ID0gbnVsbDsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IG1heChpbnQgYSwgaW50IGIpIHsKKyAgICAgICAgcmV0dXJuIChhID4gYikgPyBhIDogYjsKKyAgICB9CisgICAgCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gR2VuZXJpYyBmaWx0ZXItYmFzZWQgc2Nhbm5pbmcgY29kZQorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgcHJpdmF0ZSBzdGF0aWMgaW50ZXJmYWNlIEZpbHRlciB7CisgICAgICAgIGJvb2xlYW4gY29udGFpbnMoaW50IGNvZGVQb2ludCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgTnVtZXJpY1ZhbHVlRmlsdGVyIGltcGxlbWVudHMgRmlsdGVyIHsKKyAgICAgICAgZG91YmxlIHZhbHVlOworICAgICAgICBOdW1lcmljVmFsdWVGaWx0ZXIoZG91YmxlIHZhbHVlKSB7IHRoaXMudmFsdWUgPSB2YWx1ZTsgfQorICAgICAgICBwdWJsaWMgYm9vbGVhbiBjb250YWlucyhpbnQgY2gpIHsKKyAgICAgICAgICAgIHJldHVybiBVQ2hhcmFjdGVyLmdldFVuaWNvZGVOdW1lcmljVmFsdWUoY2gpID09IHZhbHVlOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgR2VuZXJhbENhdGVnb3J5TWFza0ZpbHRlciBpbXBsZW1lbnRzIEZpbHRlciB7CisgICAgICAgIGludCBtYXNrOworICAgICAgICBHZW5lcmFsQ2F0ZWdvcnlNYXNrRmlsdGVyKGludCBtYXNrKSB7IHRoaXMubWFzayA9IG1hc2s7IH0KKyAgICAgICAgcHVibGljIGJvb2xlYW4gY29udGFpbnMoaW50IGNoKSB7CisgICAgICAgICAgICByZXR1cm4gKCgxIDw8IFVDaGFyYWN0ZXIuZ2V0VHlwZShjaCkpICYgbWFzaykgIT0gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIEludFByb3BlcnR5RmlsdGVyIGltcGxlbWVudHMgRmlsdGVyIHsKKyAgICAgICAgaW50IHByb3A7CisgICAgICAgIGludCB2YWx1ZTsKKyAgICAgICAgSW50UHJvcGVydHlGaWx0ZXIoaW50IHByb3AsIGludCB2YWx1ZSkgeworICAgICAgICAgICAgdGhpcy5wcm9wID0gcHJvcDsKKyAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgYm9vbGVhbiBjb250YWlucyhpbnQgY2gpIHsKKyAgICAgICAgICAgIHJldHVybiBVQ2hhcmFjdGVyLmdldEludFByb3BlcnR5VmFsdWUoY2gsIHByb3ApID09IHZhbHVlOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogR2VuZXJpYyBmaWx0ZXItYmFzZWQgc2Nhbm5pbmcgY29kZSBmb3IgVUNEIHByb3BlcnR5IFVuaWNvZGVTZXRzLgorICAgICAqLworICAgIHByaXZhdGUgVW5pY29kZVNldCBhcHBseUZpbHRlcihGaWx0ZXIgZmlsdGVyKSB7CisgICAgICAgIC8vIFdhbGsgdGhyb3VnaCBhbGwgVW5pY29kZSBjaGFyYWN0ZXJzLCBub3RpbmcgdGhlIHN0YXJ0CisgICAgICAgIC8vIGFuZCBlbmQgb2YgZWFjaCByYW5nZSBmb3Igd2hpY2ggZmlsdGVyLmNvbnRhaW4oYykgaXMKKyAgICAgICAgLy8gdHJ1ZS4gIEFkZCBlYWNoIHJhbmdlIHRvIGEgc2V0LgorICAgICAgICAvLworICAgICAgICAvLyBUbyBpbXByb3ZlIHBlcmZvcm1hbmNlLCB1c2UgdGhlIElOQ0xVU0lPTlMgc2V0LCB3aGljaAorICAgICAgICAvLyBlbmNvZGVzIGluZm9ybWF0aW9uIGFib3V0IGNoYXJhY3RlciByYW5nZXMgdGhhdCBhcmUga25vd24KKyAgICAgICAgLy8gdG8gaGF2ZSBpZGVudGljYWwgcHJvcGVydGllcywgc3VjaCBhcyB0aGUgQ0pLIElkZW9ncmFwaHMKKyAgICAgICAgLy8gZnJvbSBVKzRFMDAgdG8gVSs5RkE1LiAgSU5DTFVTSU9OUyBjb250YWlucyBhbGwgY2hhcmFjdGVycworICAgICAgICAvLyBleGNlcHQgdGhlIGZpcnN0IGNoYXJhY3RlcnMgb2Ygc3VjaCByYW5nZXMuCisgICAgICAgIC8vCisgICAgICAgIC8vIFRPRE8gV2hlcmUgcG9zc2libGUsIGluc3RlYWQgb2Ygc2Nhbm5pbmcgb3ZlciBjb2RlIHBvaW50cywKKyAgICAgICAgLy8gdXNlIGludGVybmFsIHByb3BlcnR5IGRhdGEgdG8gaW5pdGlhbGl6ZSBVbmljb2RlU2V0cyBmb3IKKyAgICAgICAgLy8gdGhvc2UgcHJvcGVydGllcy4gIFNjYW5uaW5nIGNvZGUgcG9pbnRzIGlzIHNsb3cuCisKKyAgICAgICAgY2xlYXIoKTsKKworICAgICAgICBpbnQgc3RhcnRIYXNQcm9wZXJ0eSA9IC0xOworICAgICAgICBpbnQgbGltaXRSYW5nZSA9IElOQ0xVU0lPTlMuZ2V0UmFuZ2VDb3VudCgpOworCisgICAgICAgIGZvciAoaW50IGo9MDsgajxsaW1pdFJhbmdlOyArK2opIHsKKyAgICAgICAgICAgIC8vIGdldCBjdXJyZW50IHJhbmdlCisgICAgICAgICAgICBpbnQgc3RhcnQgPSBJTkNMVVNJT05TLmdldFJhbmdlU3RhcnQoaik7CisgICAgICAgICAgICBpbnQgZW5kID0gSU5DTFVTSU9OUy5nZXRSYW5nZUVuZChqKTsKKworICAgICAgICAgICAgLy8gZm9yIGFsbCB0aGUgY29kZSBwb2ludHMgaW4gdGhlIHJhbmdlLCBwcm9jZXNzCisgICAgICAgICAgICBmb3IgKGludCBjaCA9IHN0YXJ0OyBjaCA8PSBlbmQ7ICsrY2gpIHsKKyAgICAgICAgICAgICAgICAvLyBvbmx5IGFkZCB0byB0aGUgdW5pY29kZXNldCBvbiBpbmZsZWN0aW9uIHBvaW50cyAtLQorICAgICAgICAgICAgICAgIC8vIHdoZXJlIHRoZSBoYXNQcm9wZXJ0eSB2YWx1ZSBjaGFuZ2VzIHRvIGZhbHNlCisgICAgICAgICAgICAgICAgaWYgKGZpbHRlci5jb250YWlucyhjaCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0SGFzUHJvcGVydHkgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGFydEhhc1Byb3BlcnR5ID0gY2g7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN0YXJ0SGFzUHJvcGVydHkgPj0gMCkgeworICAgICAgICAgICAgICAgICAgICBhZGQoc3RhcnRIYXNQcm9wZXJ0eSwgY2gtMSk7CisgICAgICAgICAgICAgICAgICAgIHN0YXJ0SGFzUHJvcGVydHkgPSAtMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKHN0YXJ0SGFzUHJvcGVydHkgPj0gMCkgeworICAgICAgICAgICAgYWRkKHN0YXJ0SGFzUHJvcGVydHksIDB4MTBGRkZGKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworCisgICAgLyoqCisgICAgICogUmVtb3ZlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHJ1bGUgd2hpdGUgc3BhY2UgYW5kIGNvbXByZXNzCisgICAgICogaW50ZXJuYWwgcnVsZSB3aGl0ZSBzcGFjZSB0byBhIHNpbmdsZSBzcGFjZSBjaGFyYWN0ZXIuCisgICAgICoKKyAgICAgKiBAc2VlIFVDaGFyYWN0ZXJQcm9wZXJ0eSNpc1J1bGVXaGl0ZVNwYWNlCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIG11bmdlQ2hhck5hbWUoU3RyaW5nIHNvdXJjZSkgeworICAgICAgICBTdHJpbmdCdWZmZXIgYnVmID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBmb3IgKGludCBpPTA7IGk8c291cmNlLmxlbmd0aCgpOyApIHsKKyAgICAgICAgICAgIGludCBjaCA9IFVURjE2LmNoYXJBdChzb3VyY2UsIGkpOworICAgICAgICAgICAgaSArPSBVVEYxNi5nZXRDaGFyQ291bnQoY2gpOworICAgICAgICAgICAgaWYgKFVDaGFyYWN0ZXJQcm9wZXJ0eS5pc1J1bGVXaGl0ZVNwYWNlKGNoKSkgeworICAgICAgICAgICAgICAgIGlmIChidWYubGVuZ3RoKCkgPT0gMCB8fAorICAgICAgICAgICAgICAgICAgICBidWYuY2hhckF0KGJ1Zi5sZW5ndGgoKSAtIDEpID09ICcgJykgeworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2ggPSAnICc7IC8vIGNvbnZlcnQgdG8gJyAnCisgICAgICAgICAgICB9CisgICAgICAgICAgICBVVEYxNi5hcHBlbmQoYnVmLCBjaCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGJ1Zi5sZW5ndGgoKSAhPSAwICYmCisgICAgICAgICAgICBidWYuY2hhckF0KGJ1Zi5sZW5ndGgoKSAtIDEpID09ICcgJykgeworICAgICAgICAgICAgYnVmLnNldExlbmd0aChidWYubGVuZ3RoKCkgLSAxKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYnVmLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gUHJvcGVydHkgc2V0IEFQSQorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIC8qKgorICAgICAqIE1vZGlmaWVzIHRoaXMgc2V0IHRvIGNvbnRhaW4gdGhvc2UgY29kZSBwb2ludHMgd2hpY2ggaGF2ZSB0aGUKKyAgICAgKiBnaXZlbiB2YWx1ZSBmb3IgdGhlIGdpdmVuIGJpbmFyeSBvciBlbnVtZXJhdGVkIHByb3BlcnR5LCBhcworICAgICAqIHJldHVybmVkIGJ5IFVDaGFyYWN0ZXIuZ2V0SW50UHJvcGVydHlWYWx1ZS4gIFByaW9yIGNvbnRlbnRzIG9mCisgICAgICogdGhpcyBzZXQgYXJlIGxvc3QuCisgICAgICoKKyAgICAgKiBAcGFyYW0gcHJvcCBhIHByb3BlcnR5IGluIHRoZSByYW5nZQorICAgICAqIFVQcm9wZXJ0eS5CSU5fU1RBUlQuLlVQcm9wZXJ0eS5CSU5fTElNSVQtMSBvcgorICAgICAqIFVQcm9wZXJ0eS5JTlRfU1RBUlQuLlVQcm9wZXJ0eS5JTlRfTElNSVQtMSBvci4KKyAgICAgKiBVUHJvcGVydHkuTUFTS19TVEFSVC4uVVByb3BlcnR5Lk1BU0tfTElNSVQtMS4KKyAgICAgKgorICAgICAqIEBwYXJhbSB2YWx1ZSBhIHZhbHVlIGluIHRoZSByYW5nZQorICAgICAqIFVDaGFyYWN0ZXIuZ2V0SW50UHJvcGVydHlNaW5WYWx1ZShwcm9wKS4uCisgICAgICogVUNoYXJhY3Rlci5nZXRJbnRQcm9wZXJ0eU1heFZhbHVlKHByb3ApLCB3aXRoIG9uZSBleGNlcHRpb24uCisgICAgICogSWYgcHJvcCBpcyBVUHJvcGVydHkuR0VORVJBTF9DQVRFR09SWV9NQVNLLCB0aGVuIHZhbHVlIHNob3VsZCBub3QgYmUKKyAgICAgKiBhIFVDaGFyYWN0ZXIuZ2V0VHlwZSgpIHJlc3VsdCwgYnV0IHJhdGhlciBhIG1hc2sgdmFsdWUgcHJvZHVjZWQKKyAgICAgKiBieSBsb2dpY2FsbHkgT1JpbmcgKDEgPDwgVUNoYXJhY3Rlci5nZXRUeXBlKCkpIHZhbHVlcyB0b2dldGhlci4KKyAgICAgKiBUaGlzIGFsbG93cyBncm91cGVkIGNhdGVnb3JpZXMgc3VjaCBhcyBbOkw6XSB0byBiZSByZXByZXNlbnRlZC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhpcyBzZXQKKyAgICAgKgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIFVuaWNvZGVTZXQgYXBwbHlJbnRQcm9wZXJ0eVZhbHVlKGludCBwcm9wLCBpbnQgdmFsdWUpIHsKKyAgICAgICAgaWYgKHByb3AgPT0gVVByb3BlcnR5LkdFTkVSQUxfQ0FURUdPUllfTUFTSykgeworICAgICAgICAgICAgYXBwbHlGaWx0ZXIobmV3IEdlbmVyYWxDYXRlZ29yeU1hc2tGaWx0ZXIodmFsdWUpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGFwcGx5RmlsdGVyKG5ldyBJbnRQcm9wZXJ0eUZpbHRlcihwcm9wLCB2YWx1ZSkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIC8qKgorICAgICAqIE1vZGlmaWVzIHRoaXMgc2V0IHRvIGNvbnRhaW4gdGhvc2UgY29kZSBwb2ludHMgd2hpY2ggaGF2ZSB0aGUKKyAgICAgKiBnaXZlbiB2YWx1ZSBmb3IgdGhlIGdpdmVuIHByb3BlcnR5LiAgUHJpb3IgY29udGVudHMgb2YgdGhpcworICAgICAqIHNldCBhcmUgbG9zdC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBwcm9wZXJ0eUFsaWFzIGEgcHJvcGVydHkgYWxpYXMsIGVpdGhlciBzaG9ydCBvciBsb25nLgorICAgICAqIFRoZSBuYW1lIGlzIG1hdGNoZWQgbG9vc2VseS4gIFNlZSBQcm9wZXJ0eUFsaWFzZXMudHh0IGZvciBuYW1lcworICAgICAqIGFuZCBhIGRlc2NyaXB0aW9uIG9mIGxvb3NlIG1hdGNoaW5nLiAgSWYgdGhlIHZhbHVlIHN0cmluZyBpcworICAgICAqIGVtcHR5LCB0aGVuIHRoaXMgc3RyaW5nIGlzIGludGVycHJldGVkIGFzIGVpdGhlciBhCisgICAgICogR2VuZXJhbF9DYXRlZ29yeSB2YWx1ZSBhbGlhcywgYSBTY3JpcHQgdmFsdWUgYWxpYXMsIGEgYmluYXJ5CisgICAgICogcHJvcGVydHkgYWxpYXMsIG9yIGEgc3BlY2lhbCBJRC4gIFNwZWNpYWwgSURzIGFyZSBtYXRjaGVkCisgICAgICogbG9vc2VseSBhbmQgY29ycmVzcG9uZCB0byB0aGUgZm9sbG93aW5nIHNldHM6CisgICAgICoKKyAgICAgKiAiQU5ZIiA9IFtcdTAwMDAtXFUwMDEwRkZGRl0sCisgICAgICogIkFTQ0lJIiA9IFtcdTAwMDAtXHUwMDdGXS4KKyAgICAgKgorICAgICAqIEBwYXJhbSB2YWx1ZUFsaWFzIGEgdmFsdWUgYWxpYXMsIGVpdGhlciBzaG9ydCBvciBsb25nLiAgVGhlCisgICAgICogbmFtZSBpcyBtYXRjaGVkIGxvb3NlbHkuICBTZWUgUHJvcGVydHlWYWx1ZUFsaWFzZXMudHh0IGZvcgorICAgICAqIG5hbWVzIGFuZCBhIGRlc2NyaXB0aW9uIG9mIGxvb3NlIG1hdGNoaW5nLiAgSW4gYWRkaXRpb24gdG8KKyAgICAgKiBhbGlhc2VzIGxpc3RlZCwgbnVtZXJpYyB2YWx1ZXMgYW5kIGNhbm9uaWNhbCBjb21iaW5pbmcgY2xhc3NlcworICAgICAqIG1heSBiZSBleHByZXNzZWQgbnVtZXJpY2FsbHksIGUuZy4sICgibnYiLCAiMC41Iikgb3IgKCJjY2MiLAorICAgICAqICIyMjAiKS4gIFRoZSB2YWx1ZSBzdHJpbmcgbWF5IGFsc28gYmUgZW1wdHkuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIGEgcmVmZXJlbmNlIHRvIHRoaXMgc2V0CisgICAgICoKKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBVbmljb2RlU2V0IGFwcGx5UHJvcGVydHlBbGlhcyhTdHJpbmcgcHJvcGVydHlBbGlhcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHZhbHVlQWxpYXMpIHsKKyAgICAgICAgaW50IHA7CisgICAgICAgIGludCB2OworICAgICAgICBib29sZWFuIG11c3ROb3RCZUVtcHR5ID0gZmFsc2U7CisKKyAgICAgICAgaWYgKHZhbHVlQWxpYXMubGVuZ3RoKCkgPiAwKSB7CisgICAgICAgICAgICBwID0gVUNoYXJhY3Rlci5nZXRQcm9wZXJ0eUVudW0ocHJvcGVydHlBbGlhcyk7CisKKyAgICAgICAgICAgIC8vIFRyZWF0IGdjIGFzIGdjbQorICAgICAgICAgICAgaWYgKHAgPT0gVVByb3BlcnR5LkdFTkVSQUxfQ0FURUdPUlkpIHsKKyAgICAgICAgICAgICAgICBwID0gVVByb3BlcnR5LkdFTkVSQUxfQ0FURUdPUllfTUFTSzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKChwID49IFVQcm9wZXJ0eS5CSU5BUllfU1RBUlQgJiYgcCA8IFVQcm9wZXJ0eS5CSU5BUllfTElNSVQpIHx8CisgICAgICAgICAgICAgICAgKHAgPj0gVVByb3BlcnR5LklOVF9TVEFSVCAmJiBwIDwgVVByb3BlcnR5LklOVF9MSU1JVCkgfHwKKyAgICAgICAgICAgICAgICAocCA+PSBVUHJvcGVydHkuTUFTS19TVEFSVCAmJiBwIDwgVVByb3BlcnR5Lk1BU0tfTElNSVQpKSB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgdiA9IFVDaGFyYWN0ZXIuZ2V0UHJvcGVydHlWYWx1ZUVudW0ocCwgdmFsdWVBbGlhcyk7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSGFuZGxlIG51bWVyaWMgQ0NDCisgICAgICAgICAgICAgICAgICAgIGlmIChwID09IFVQcm9wZXJ0eS5DQU5PTklDQUxfQ09NQklOSU5HX0NMQVNTKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2ID0gSW50ZWdlci5wYXJzZUludChVdGlsaXR5LmRlbGV0ZVJ1bGVXaGl0ZVNwYWNlKHZhbHVlQWxpYXMpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSByZXN1bHRhbnQgc2V0IGlzIGVtcHR5IHRoZW4gdGhlIG51bWVyaWMgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdhcyBpbnZhbGlkLgorICAgICAgICAgICAgICAgICAgICAgICAgbXVzdE5vdEJlRW1wdHkgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZWxzZSB7CisKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHApIHsKKyAgICAgICAgICAgICAgICBjYXNlIFVQcm9wZXJ0eS5OVU1FUklDX1ZBTFVFOgorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgdmFsdWUgPSBEb3VibGUucGFyc2VEb3VibGUoVXRpbGl0eS5kZWxldGVSdWxlV2hpdGVTcGFjZSh2YWx1ZUFsaWFzKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhcHBseUZpbHRlcihuZXcgTnVtZXJpY1ZhbHVlRmlsdGVyKHZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgVVByb3BlcnR5Lk5BTUU6CisgICAgICAgICAgICAgICAgY2FzZSBVUHJvcGVydHkuVU5JQ09ERV8xX05BTUU6CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIE11c3QgbXVuZ2UgbmFtZSwgc2luY2UKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVDaGFyYWN0ZXIuY2hhckZyb21OYW1lKCkgZG9lcyBub3QgZG8KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vICdsb29zZScgbWF0Y2hpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgYnVmID0gbXVuZ2VDaGFyTmFtZSh2YWx1ZUFsaWFzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBjaCA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHAgPT0gVVByb3BlcnR5Lk5BTUUpID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyLmdldENoYXJGcm9tRXh0ZW5kZWROYW1lKGJ1ZikgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXIuZ2V0Q2hhckZyb21OYW1lMV8wKGJ1Zik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2ggPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIGNoYXJhY3RlciBuYW1lIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBjbGVhcigpOworICAgICAgICAgICAgICAgICAgICAgICAgYWRkKGNoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gcCBpcyBhIG5vbi1iaW5hcnksIG5vbi1lbnVtZXJhdGVkIHByb3BlcnR5IHRoYXQgd2UKKyAgICAgICAgICAgICAgICAvLyBkb24ndCBzdXBwb3J0ICh5ZXQpLgorICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlVuc3VwcG9ydGVkIHByb3BlcnR5Iik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIHZhbHVlQWxpYXMgaXMgZW1wdHkuICBJbnRlcnByZXQgYXMgR2VuZXJhbCBDYXRlZ29yeSwgU2NyaXB0LAorICAgICAgICAgICAgLy8gQmluYXJ5IHByb3BlcnR5LCBvciBBTlkgb3IgQVNDSUkuICBVcG9uIHN1Y2Nlc3MsIHAgYW5kIHYgd2lsbAorICAgICAgICAgICAgLy8gYmUgc2V0LgorICAgICAgICAgICAgdHJ5IHsgCisgICAgICAgICAgICAgICAgcCA9IFVQcm9wZXJ0eS5HRU5FUkFMX0NBVEVHT1JZX01BU0s7CisgICAgICAgICAgICAgICAgdiA9IFVDaGFyYWN0ZXIuZ2V0UHJvcGVydHlWYWx1ZUVudW0ocCwgcHJvcGVydHlBbGlhcyk7CisgICAgICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIHAgPSBVUHJvcGVydHkuU0NSSVBUOworICAgICAgICAgICAgICAgICAgICB2ID0gVUNoYXJhY3Rlci5nZXRQcm9wZXJ0eVZhbHVlRW51bShwLCBwcm9wZXJ0eUFsaWFzKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZTIpIHsKKyAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBVQ2hhcmFjdGVyLmdldFByb3BlcnR5RW51bShwcm9wZXJ0eUFsaWFzKTsKKyAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwID0gLTE7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHAgPj0gVVByb3BlcnR5LkJJTkFSWV9TVEFSVCAmJiBwIDwgVVByb3BlcnR5LkJJTkFSWV9MSU1JVCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdiA9IDE7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocCA9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDAgPT0gVVByb3BlcnR5QWxpYXNlcy5jb21wYXJlKEFOWV9JRCwgcHJvcGVydHlBbGlhcykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQoTUlOX1ZBTFVFLCBNQVhfVkFMVUUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IFVQcm9wZXJ0eUFsaWFzZXMuY29tcGFyZShBU0NJSV9JRCwgcHJvcGVydHlBbGlhcykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQoMCwgMHg3Rik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFByb3BlcnR5IG5hbWUgd2FzIG5ldmVyIG1hdGNoZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBwcm9wZXJ0eSBhbGlhcyIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gVmFsaWQgcHJvcGVyeSBuYW1lLCBidXQgaXQgaXNuJ3QgYmluYXJ5LCBzbyB0aGUgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIG11c3QgYmUgc3VwcGxpZWQuCisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJNaXNzaW5nIHByb3BlcnR5IHZhbHVlIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBhcHBseUludFByb3BlcnR5VmFsdWUocCwgdik7CisKKyAgICAgICAgaWYgKG11c3ROb3RCZUVtcHR5ICYmIGlzRW1wdHkoKSkgeworICAgICAgICAgICAgLy8gbXVzdE5vdEJlRW1wdHkgaXMgc2V0IHRvIHRydWUgaWYgYW4gZW1wdHkgc2V0IGluZGljYXRlcworICAgICAgICAgICAgLy8gaW52YWxpZCBpbnB1dC4KKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgcHJvcGVydHkgdmFsdWUiKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIFByb3BlcnR5IHNldCBwYXR0ZXJucworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSBnaXZlbiBwb3NpdGlvbiwgaW4gdGhlIGdpdmVuIHBhdHRlcm4sIGFwcGVhcnMKKyAgICAgKiB0byBiZSB0aGUgc3RhcnQgb2YgYSBwcm9wZXJ0eSBzZXQgcGF0dGVybi4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBib29sZWFuIHJlc2VtYmxlc1Byb3BlcnR5UGF0dGVybihTdHJpbmcgcGF0dGVybiwgaW50IHBvcykgeworICAgICAgICAvLyBQYXR0ZXJucyBhcmUgYXQgbGVhc3QgNSBjaGFyYWN0ZXJzIGxvbmcKKyAgICAgICAgaWYgKChwb3MrNSkgPiBwYXR0ZXJuLmxlbmd0aCgpKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICAvLyBMb29rIGZvciBhbiBvcGVuaW5nIFs6LCBbOl4sIFxwLCBvciBcUAorICAgICAgICByZXR1cm4gcGF0dGVybi5yZWdpb25NYXRjaGVzKHBvcywgIls6IiwgMCwgMikgfHwKKyAgICAgICAgICAgIHBhdHRlcm4ucmVnaW9uTWF0Y2hlcyh0cnVlLCBwb3MsICJcXHAiLCAwLCAyKSB8fAorICAgICAgICAgICAgcGF0dGVybi5yZWdpb25NYXRjaGVzKHBvcywgIlxcTiIsIDAsIDIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFBhcnNlIHRoZSBnaXZlbiBwcm9wZXJ0eSBwYXR0ZXJuIGF0IHRoZSBnaXZlbiBwYXJzZSBwb3NpdGlvbi4KKyAgICAgKi8KKyAgICBwcml2YXRlIFVuaWNvZGVTZXQgYXBwbHlQcm9wZXJ0eVBhdHRlcm4oU3RyaW5nIHBhdHRlcm4sIFBhcnNlUG9zaXRpb24gcHBvcykgeworICAgICAgICBpbnQgcG9zID0gcHBvcy5nZXRJbmRleCgpOworCisgICAgICAgIC8vIE9uIGVudHJ5LCBwcG9zIHNob3VsZCBwb2ludCB0byBvbmUgb2YgdGhlIGZvbGxvd2luZyBsb2NhdGlvbnM6CisKKyAgICAgICAgLy8gTWluaW11bSBsZW5ndGggaXMgNSBjaGFyYWN0ZXJzLCBlLmcuIFxwe0x9CisgICAgICAgIGlmICgocG9zKzUpID4gcGF0dGVybi5sZW5ndGgoKSkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICBib29sZWFuIHBvc2l4ID0gZmFsc2U7IC8vIHRydWUgZm9yIFs6cGF0Ol0sIGZhbHNlIGZvciBccHtwYXR9IFxQe3BhdH0gXE57cGF0fQorICAgICAgICBib29sZWFuIGlzTmFtZSA9IGZhbHNlOyAvLyB0cnVlIGZvciBcTntwYXR9LCBvL3cgZmFsc2UKKyAgICAgICAgYm9vbGVhbiBpbnZlcnQgPSBmYWxzZTsKKworICAgICAgICAvLyBMb29rIGZvciBhbiBvcGVuaW5nIFs6LCBbOl4sIFxwLCBvciBcUAorICAgICAgICBpZiAocGF0dGVybi5yZWdpb25NYXRjaGVzKHBvcywgIls6IiwgMCwgMikpIHsKKyAgICAgICAgICAgIHBvc2l4ID0gdHJ1ZTsKKyAgICAgICAgICAgIHBvcyA9IFV0aWxpdHkuc2tpcFdoaXRlc3BhY2UocGF0dGVybiwgcG9zKzIpOworICAgICAgICAgICAgaWYgKHBvcyA8IHBhdHRlcm4ubGVuZ3RoKCkgJiYgcGF0dGVybi5jaGFyQXQocG9zKSA9PSAnXicpIHsKKyAgICAgICAgICAgICAgICArK3BvczsKKyAgICAgICAgICAgICAgICBpbnZlcnQgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKHBhdHRlcm4ucmVnaW9uTWF0Y2hlcyh0cnVlLCBwb3MsICJcXHAiLCAwLCAyKSB8fAorICAgICAgICAgICAgICAgICAgIHBhdHRlcm4ucmVnaW9uTWF0Y2hlcyhwb3MsICJcXE4iLCAwLCAyKSkgeworICAgICAgICAgICAgY2hhciBjID0gcGF0dGVybi5jaGFyQXQocG9zKzEpOworICAgICAgICAgICAgaW52ZXJ0ID0gKGMgPT0gJ1AnKTsKKyAgICAgICAgICAgIGlzTmFtZSA9IChjID09ICdOJyk7CisgICAgICAgICAgICBwb3MgPSBVdGlsaXR5LnNraXBXaGl0ZXNwYWNlKHBhdHRlcm4sIHBvcysyKTsKKyAgICAgICAgICAgIGlmIChwb3MgPT0gcGF0dGVybi5sZW5ndGgoKSB8fCBwYXR0ZXJuLmNoYXJBdChwb3MrKykgIT0gJ3snKSB7CisgICAgICAgICAgICAgICAgLy8gU3ludGF4IGVycm9yOyAiXHAiIG9yICJcUCIgbm90IGZvbGxvd2VkIGJ5ICJ7IgorICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gT3BlbiBkZWxpbWl0ZXIgbm90IHNlZW4KKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgLy8gTG9vayBmb3IgdGhlIG1hdGNoaW5nIGNsb3NlIGRlbGltaXRlciwgZWl0aGVyIDpdIG9yIH0KKyAgICAgICAgaW50IGNsb3NlID0gcGF0dGVybi5pbmRleE9mKHBvc2l4ID8gIjpdIiA6ICJ9IiwgcG9zKTsKKyAgICAgICAgaWYgKGNsb3NlIDwgMCkgeworICAgICAgICAgICAgLy8gU3ludGF4IGVycm9yOyBjbG9zZSBkZWxpbWl0ZXIgbWlzc2luZworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICAvLyBMb29rIGZvciBhbiAnPScgc2lnbi4gIElmIHRoaXMgaXMgcHJlc2VudCwgd2Ugd2lsbCBwYXJzZSBhCisgICAgICAgIC8vIG1lZGl1bSBccHtnYz1DZn0gb3IgbG9uZyBccHtHZW5lcmFsQ2F0ZWdvcnk9Rm9ybWF0fQorICAgICAgICAvLyBwYXR0ZXJuLgorICAgICAgICBpbnQgZXF1YWxzID0gcGF0dGVybi5pbmRleE9mKCc9JywgcG9zKTsKKyAgICAgICAgU3RyaW5nIHByb3BOYW1lLCB2YWx1ZU5hbWU7CisgICAgICAgIGlmIChlcXVhbHMgPj0gMCAmJiBlcXVhbHMgPCBjbG9zZSAmJiAhaXNOYW1lKSB7CisgICAgICAgICAgICAvLyBFcXVhbHMgc2VlbjsgcGFyc2UgbWVkaXVtL2xvbmcgcGF0dGVybgorICAgICAgICAgICAgcHJvcE5hbWUgPSBwYXR0ZXJuLnN1YnN0cmluZyhwb3MsIGVxdWFscyk7CisgICAgICAgICAgICB2YWx1ZU5hbWUgPSBwYXR0ZXJuLnN1YnN0cmluZyhlcXVhbHMrMSwgY2xvc2UpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIEhhbmRsZSBjYXNlIHdoZXJlIG5vICc9JyBpcyBzZWVuLCBhbmQgXE57fQorICAgICAgICAgICAgcHJvcE5hbWUgPSBwYXR0ZXJuLnN1YnN0cmluZyhwb3MsIGNsb3NlKTsKKyAgICAgICAgICAgIHZhbHVlTmFtZSA9ICIiOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBIYW5kbGUgXE57bmFtZX0KKyAgICAgICAgICAgIGlmIChpc05hbWUpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgbGl0dGxlIGluZWZmaWNpZW50IHNpbmNlIGl0IG1lYW5zIHdlIGhhdmUgdG8KKyAgICAgICAgICAgICAgICAvLyBwYXJzZSAibmEiIGJhY2sgdG8gVVByb3BlcnR5Lk5BTUUgZXZlbiB0aG91Z2ggd2UgYWxyZWFkeQorICAgICAgICAgICAgICAgIC8vIGtub3cgaXQncyBVUHJvcGVydHkuTkFNRS4gIElmIHdlIHJlZmFjdG9yIHRoZSBBUEkgdG8KKyAgICAgICAgICAgICAgICAvLyBzdXBwb3J0IGFyZ3Mgb2YgKGludCwgU3RyaW5nKSB0aGVuIHdlIGNhbiByZW1vdmUKKyAgICAgICAgICAgICAgICAvLyAibmEiIGFuZCBtYWtlIHRoaXMgYSBsaXR0bGUgbW9yZSBlZmZpY2llbnQuCisgICAgICAgICAgICAgICAgdmFsdWVOYW1lID0gcHJvcE5hbWU7CisgICAgICAgICAgICAgICAgcHJvcE5hbWUgPSAibmEiOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgYXBwbHlQcm9wZXJ0eUFsaWFzKHByb3BOYW1lLCB2YWx1ZU5hbWUpOworCisgICAgICAgIGlmIChpbnZlcnQpIHsKKyAgICAgICAgICAgIGNvbXBsZW1lbnQoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE1vdmUgdG8gdGhlIGxpbWl0IHBvc2l0aW9uIGFmdGVyIHRoZSBjbG9zZSBkZWxpbWl0ZXIKKyAgICAgICAgcHBvcy5zZXRJbmRleChjbG9zZSArIChwb3NpeCA/IDIgOiAxKSk7CisKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3RleHQvVW5pY29kZVNldEl0ZXJhdG9yLmphdmEgYi9zcmMvY29tL2libS9pY3UvdGV4dC9Vbmljb2RlU2V0SXRlcmF0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mMjhiOGFkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvVW5pY29kZVNldEl0ZXJhdG9yLmphdmEKQEAgLTAsMCArMSwyNDYgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS90ZXh0L1VuaWNvZGVTZXRJdGVyYXRvci5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzEyLzA5IDE2OjQwOjAwICQgCisgKiAkUmV2aXNpb246IDEuMTIgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LnRleHQ7CisKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLlV0aWxpdHk7CitpbXBvcnQgamF2YS51dGlsLio7CitpbXBvcnQgamF2YS5pby4qOworCisvKioKKyAqIFVuaWNvZGVTZXRJdGVyYXRvciBpdGVyYXRlcyBvdmVyIHRoZSBjb250ZW50cyBvZiBhIFVuaWNvZGVTZXQuICBJdAorICogaXRlcmF0ZXMgb3ZlciBlaXRoZXIgY29kZSBwb2ludHMgb3IgY29kZSBwb2ludCByYW5nZXMuICBBZnRlciBhbGwKKyAqIGNvZGUgcG9pbnRzIG9yIHJhbmdlcyBoYXZlIGJlZW4gcmV0dXJuZWQsIGl0IHJldHVybnMgdGhlCisgKiBtdWx0aWNoYXJhY3RlciBzdHJpbmdzIG9mIHRoZSBVbmljb2RTZXQsIGlmIGFueS4KKyAqCisgKiA8cD5UbyBpdGVyYXRlIG92ZXIgY29kZSBwb2ludHMsIHVzZSBhIGxvb3AgbGlrZSB0aGlzOgorICogPHByZT4KKyAqIFVuaWNvZGVTZXRJdGVyYXRvciBpdChzZXQpOworICogd2hpbGUgKHNldC5uZXh0KCkpIHsKKyAqICAgaWYgKHNldC5jb2RlcG9pbnQgIT0gVW5pY29kZVNldEl0ZXJhdG9yOjpJU19TVFJJTkcpIHsKKyAqICAgICBwcm9jZXNzQ29kZXBvaW50KHNldC5jb2RlcG9pbnQpOworICogICB9IGVsc2UgeworICogICAgIHByb2Nlc3NTdHJpbmcoc2V0LnN0cmluZyk7CisgKiAgIH0KKyAqIH0KKyAqIDwvcHJlPgorICoKKyAqIDxwPlRvIGl0ZXJhdGUgb3ZlciBjb2RlIHBvaW50IHJhbmdlcywgdXNlIGEgbG9vcCBsaWtlIHRoaXM6CisgKiA8cHJlPgorICogVW5pY29kZVNldEl0ZXJhdG9yIGl0KHNldCk7CisgKiB3aGlsZSAoc2V0Lm5leHRSYW5nZSgpKSB7CisgKiAgIGlmIChzZXQuY29kZXBvaW50ICE9IFVuaWNvZGVTZXRJdGVyYXRvcjo6SVNfU1RSSU5HKSB7CisgKiAgICAgcHJvY2Vzc0NvZGVwb2ludFJhbmdlKHNldC5jb2RlcG9pbnQsIHNldC5jb2RlcG9pbnRFbmQpOworICogICB9IGVsc2UgeworICogICAgIHByb2Nlc3NTdHJpbmcoc2V0LnN0cmluZyk7CisgKiAgIH0KKyAqIH0KKyAqIDwvcHJlPgorICogQGF1dGhvciBNLiBEYXZpcworICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK3B1YmxpYyBjbGFzcyBVbmljb2RlU2V0SXRlcmF0b3IgeworCQorICAgIC8qKgorICAgICAqIFZhbHVlIG9mIDx0dD5jb2RlcG9pbnQ8L3R0PiBpZiB0aGUgaXRlcmF0b3IgcG9pbnRzIHRvIGEgc3RyaW5nLgorICAgICAqIElmIDx0dD5jb2RlcG9pbnQgPT0gSVNfU1RSSU5HPC90dD4sIHRoZW4gZXhhbWluZQorICAgICAqIDx0dD5zdHJpbmc8L3R0PiBmb3IgdGhlIGN1cnJlbnQgaXRlcmF0aW9uIHJlc3VsdC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKwlwdWJsaWMgc3RhdGljIGludCBJU19TVFJJTkcgPSAtMTsKKwkKKwkvKioKKyAgICAgKiBDdXJyZW50IGNvZGUgcG9pbnQsIG9yIHRoZSBzcGVjaWFsIHZhbHVlIDx0dD5JU19TVFJJTkc8L3R0PiwgaWYKKyAgICAgKiB0aGUgaXRlcmF0b3IgcG9pbnRzIHRvIGEgc3RyaW5nLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworCXB1YmxpYyBpbnQgY29kZXBvaW50OworCisgICAgLyoqCisgICAgICogV2hlbiBpdGVyYXRpbmcgb3ZlciByYW5nZXMgdXNpbmcgPHR0Pm5leHRSYW5nZSgpPC90dD4sCisgICAgICogPHR0PmNvZGVwb2ludEVuZDwvdHQ+IGNvbnRhaW5zIHRoZSBpbmNsdXNpdmUgZW5kIG9mIHRoZQorICAgICAqIGl0ZXJhdGlvbiByYW5nZSwgaWYgPHR0PmNvZGVwb2ludCAhPSBJU19TVFJJTkc8L3R0Pi4gIElmCisgICAgICogaXRlcmF0aW5nIG92ZXIgY29kZSBwb2ludHMgdXNpbmcgPHR0Pm5leHQoKTwvdHQ+LCBvciBpZgorICAgICAqIDx0dD5jb2RlcG9pbnQgPT0gSVNfU1RSSU5HPC90dD4sIHRoZW4gdGhlIHZhbHVlIG9mCisgICAgICogPHR0PmNvZGVwb2ludEVuZDwvdHQ+IGlzIHVuZGVmaW5lZC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKwlwdWJsaWMgaW50IGNvZGVwb2ludEVuZDsKKworICAgIC8qKgorICAgICAqIElmIDx0dD5jb2RlcG9pbnQgPT0gSVNfU1RSSU5HPC90dD4sIHRoZW4gPHR0PnN0cmluZzwvdHQ+IHBvaW50cworICAgICAqIHRvIHRoZSBjdXJyZW50IHN0cmluZy4gIElmIDx0dD5jb2RlcG9pbnQgIT0gSVNfU1RSSU5HPC90dD4sIHRoZQorICAgICAqIHZhbHVlIG9mIDx0dD5zdHJpbmc8L3R0PiBpcyB1bmRlZmluZWQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisJcHVibGljIFN0cmluZyBzdHJpbmc7CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYW4gaXRlcmF0b3Igb3ZlciB0aGUgZ2l2ZW4gc2V0LgorICAgICAqIEBwYXJhbSBzZXQgc2V0IHRvIGl0ZXJhdGUgb3ZlcgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBVbmljb2RlU2V0SXRlcmF0b3IoVW5pY29kZVNldCBzZXQpIHsKKyAgICAgICAgcmVzZXQoc2V0KTsKKyAgICB9CisgICAgICAgIAorICAgIC8qKgorICAgICAqIENyZWF0ZSBhbiBpdGVyYXRvciBvdmVyIG5vdGhpbmcuICA8dHQ+bmV4dCgpPC90dD4gYW5kCisgICAgICogPHR0Pm5leHRSYW5nZSgpPC90dD4gcmV0dXJuIGZhbHNlLiBUaGlzIGlzIGEgY29udmVuaWVuY2UKKyAgICAgKiBjb25zdHJ1Y3RvciBhbGxvd2luZyB0aGUgdGFyZ2V0IHRvIGJlIHNldCBsYXRlci4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgVW5pY29kZVNldEl0ZXJhdG9yKCkgeworICAgICAgICByZXNldChuZXcgVW5pY29kZVNldCgpKTsKKyAgICB9CisgICAgICAgIAorICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIG5leHQgZWxlbWVudCBpbiB0aGUgc2V0LCBlaXRoZXIgYSBzaW5nbGUgY29kZSBwb2ludAorICAgICAqIG9yIGEgc3RyaW5nLiAgSWYgdGhlcmUgYXJlIG5vIG1vcmUgZWxlbWVudHMgaW4gdGhlIHNldCwgcmV0dXJuCisgICAgICogZmFsc2UuICBJZiA8dHQ+Y29kZXBvaW50ID09IElTX1NUUklORzwvdHQ+LCB0aGUgdmFsdWUgaXMgYQorICAgICAqIHN0cmluZyBpbiB0aGUgPHR0PnN0cmluZzwvdHQ+IGZpZWxkLiAgT3RoZXJ3aXNlIHRoZSB2YWx1ZSBpcyBhCisgICAgICogc2luZ2xlIGNvZGUgcG9pbnQgaW4gdGhlIDx0dD5jb2RlcG9pbnQ8L3R0PiBmaWVsZC4KKyAgICAgKiAKKyAgICAgKiA8cD5UaGUgb3JkZXIgb2YgaXRlcmF0aW9uIGlzIGFsbCBjb2RlIHBvaW50cyBpbiBzb3J0ZWQgb3JkZXIsCisgICAgICogZm9sbG93ZWQgYnkgYWxsIHN0cmluZ3Mgc29ydGVkIG9yZGVyLiAgPHR0PmNvZGVwb2ludEVuZDwvdHQ+IGlzCisgICAgICogdW5kZWZpbmVkIGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QuICA8dHQ+c3RyaW5nPC90dD4gaXMKKyAgICAgKiB1bmRlZmluZWQgdW5sZXNzIDx0dD5jb2RlcG9pbnQgPT0gSVNfU1RSSU5HPC90dD4uICBEbyBub3QgbWl4CisgICAgICogY2FsbHMgdG8gPHR0Pm5leHQoKTwvdHQ+IGFuZCA8dHQ+bmV4dFJhbmdlKCk8L3R0PiB3aXRob3V0CisgICAgICogY2FsbGluZyA8dHQ+cmVzZXQoKTwvdHQ+IGJldHdlZW4gdGhlbS4gIFRoZSByZXN1bHRzIG9mIGRvaW5nIHNvCisgICAgICogYXJlIHVuZGVmaW5lZC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGVyZSB3YXMgYW5vdGhlciBlbGVtZW50IGluIHRoZSBzZXQgYW5kIHRoaXMKKyAgICAgKiBvYmplY3QgY29udGFpbnMgdGhlIGVsZW1lbnQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gbmV4dCgpIHsKKyAgICAgICAgaWYgKG5leHRFbGVtZW50IDw9IGVuZEVsZW1lbnQpIHsKKyAgICAgICAgCWNvZGVwb2ludCA9IGNvZGVwb2ludEVuZCA9IG5leHRFbGVtZW50Kys7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAocmFuZ2UgPCBlbmRSYW5nZSkgeworICAgICAgICAJbG9hZFJhbmdlKCsrcmFuZ2UpOworICAgICAgICAJY29kZXBvaW50ID0gY29kZXBvaW50RW5kID0gbmV4dEVsZW1lbnQrKzsKKyAgICAgICAgCXJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBzdHJpbmdJdGVyYXRvciA9PSBudWxsIGlmZiB0aGVyZSBhcmUgbm8gc3RyaW5nIGVsZW1lbnRzIHJlbWFpbmluZworICAgICAgICAKKyAgICAgICAgaWYgKHN0cmluZ0l0ZXJhdG9yID09IG51bGwpIHJldHVybiBmYWxzZTsKKyAgICAgICAgY29kZXBvaW50ID0gSVNfU1RSSU5HOyAvLyBzaWduYWwgdGhhdCB2YWx1ZSBpcyBhY3R1YWxseSBhIHN0cmluZworICAgICAgICBzdHJpbmcgPSAoU3RyaW5nKXN0cmluZ0l0ZXJhdG9yLm5leHQoKTsKKyAgICAgICAgaWYgKCFzdHJpbmdJdGVyYXRvci5oYXNOZXh0KCkpIHN0cmluZ0l0ZXJhdG9yID0gbnVsbDsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgICAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBuZXh0IGVsZW1lbnQgaW4gdGhlIHNldCwgZWl0aGVyIGEgY29kZSBwb2ludCByYW5nZQorICAgICAqIG9yIGEgc3RyaW5nLiAgSWYgdGhlcmUgYXJlIG5vIG1vcmUgZWxlbWVudHMgaW4gdGhlIHNldCwgcmV0dXJuCisgICAgICogZmFsc2UuICBJZiA8dHQ+Y29kZXBvaW50ID09IElTX1NUUklORzwvdHQ+LCB0aGUgdmFsdWUgaXMgYQorICAgICAqIHN0cmluZyBpbiB0aGUgPHR0PnN0cmluZzwvdHQ+IGZpZWxkLiAgT3RoZXJ3aXNlIHRoZSB2YWx1ZSBpcyBhCisgICAgICogcmFuZ2Ugb2Ygb25lIG9yIG1vcmUgY29kZSBwb2ludHMgZnJvbSA8dHQ+Y29kZXBvaW50PC90dD4gdG8KKyAgICAgKiA8dHQ+Y29kZXBvaW50ZUVuZDwvdHQ+IGluY2x1c2l2ZS4KKyAgICAgKiAKKyAgICAgKiA8cD5UaGUgb3JkZXIgb2YgaXRlcmF0aW9uIGlzIGFsbCBjb2RlIHBvaW50cyByYW5nZXMgaW4gc29ydGVkCisgICAgICogb3JkZXIsIGZvbGxvd2VkIGJ5IGFsbCBzdHJpbmdzIHNvcnRlZCBvcmRlci4gIFJhbmdlcyBhcmUKKyAgICAgKiBkaXNqb2ludCBhbmQgbm9uLWNvbnRpZ3VvdXMuICA8dHQ+c3RyaW5nPC90dD4gaXMgdW5kZWZpbmVkCisgICAgICogdW5sZXNzIDx0dD5jb2RlcG9pbnQgPT0gSVNfU1RSSU5HPC90dD4uICBEbyBub3QgbWl4IGNhbGxzIHRvCisgICAgICogPHR0Pm5leHQoKTwvdHQ+IGFuZCA8dHQ+bmV4dFJhbmdlKCk8L3R0PiB3aXRob3V0IGNhbGxpbmcKKyAgICAgKiA8dHQ+cmVzZXQoKTwvdHQ+IGJldHdlZW4gdGhlbS4gIFRoZSByZXN1bHRzIG9mIGRvaW5nIHNvIGFyZQorICAgICAqIHVuZGVmaW5lZC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGVyZSB3YXMgYW5vdGhlciBlbGVtZW50IGluIHRoZSBzZXQgYW5kIHRoaXMKKyAgICAgKiBvYmplY3QgY29udGFpbnMgdGhlIGVsZW1lbnQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gbmV4dFJhbmdlKCkgeworICAgICAgICBpZiAobmV4dEVsZW1lbnQgPD0gZW5kRWxlbWVudCkgeworICAgICAgICAJY29kZXBvaW50RW5kID0gZW5kRWxlbWVudDsKKyAgICAgICAgCWNvZGVwb2ludCA9IG5leHRFbGVtZW50OworICAgICAgICAJbmV4dEVsZW1lbnQgPSBlbmRFbGVtZW50KzE7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAocmFuZ2UgPCBlbmRSYW5nZSkgeworICAgICAgICAgICAgbG9hZFJhbmdlKCsrcmFuZ2UpOworICAgICAgICAJY29kZXBvaW50RW5kID0gZW5kRWxlbWVudDsKKyAgICAgICAgCWNvZGVwb2ludCA9IG5leHRFbGVtZW50OworICAgICAgICAJbmV4dEVsZW1lbnQgPSBlbmRFbGVtZW50KzE7CisgICAgICAgIAlyZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gc3RyaW5nSXRlcmF0b3IgPT0gbnVsbCBpZmYgdGhlcmUgYXJlIG5vIHN0cmluZyBlbGVtZW50cyByZW1haW5pbmcKKyAgICAgICAgCisgICAgICAgIGlmIChzdHJpbmdJdGVyYXRvciA9PSBudWxsKSByZXR1cm4gZmFsc2U7CisgICAgICAgIGNvZGVwb2ludCA9IElTX1NUUklORzsgLy8gc2lnbmFsIHRoYXQgdmFsdWUgaXMgYWN0dWFsbHkgYSBzdHJpbmcKKyAgICAgICAgc3RyaW5nID0gKFN0cmluZylzdHJpbmdJdGVyYXRvci5uZXh0KCk7CisgICAgICAgIGlmICghc3RyaW5nSXRlcmF0b3IuaGFzTmV4dCgpKSBzdHJpbmdJdGVyYXRvciA9IG51bGw7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAgICAgCisgICAgLyoqCisgICAgICogU2V0cyB0aGlzIGl0ZXJhdG9yIHRvIHZpc2l0IHRoZSBlbGVtZW50cyBvZiB0aGUgZ2l2ZW4gc2V0IGFuZAorICAgICAqIHJlc2V0cyBpdCB0byB0aGUgc3RhcnQgb2YgdGhhdCBzZXQuICBUaGUgaXRlcmF0b3IgaXMgdmFsaWQgb25seQorICAgICAqIHNvIGxvbmcgYXMgPHR0PnNldDwvdHQ+IGlzIHZhbGlkLgorICAgICAqIEBwYXJhbSBzZXQgdGhlIHNldCB0byBpdGVyYXRlIG92ZXIuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHZvaWQgcmVzZXQoVW5pY29kZVNldCBzZXQpIHsKKyAgICAgICAgdGhpcy5zZXQgPSBzZXQ7CisgICAgICAgIHJlc2V0KCk7CisgICAgfQorICAgICAgICAKKyAgICAvKioKKyAgICAgKiBSZXNldHMgdGhpcyBpdGVyYXRvciB0byB0aGUgc3RhcnQgb2YgdGhlIHNldC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCByZXNldCgpIHsKKyAgICAgICAgZW5kUmFuZ2UgPSBzZXQuZ2V0UmFuZ2VDb3VudCgpIC0gMTsKKyAgICAgICAgcmFuZ2UgPSAwOworICAgICAgICBlbmRFbGVtZW50ID0gLTE7CisgICAgICAgIG5leHRFbGVtZW50ID0gMDsgICAgICAgICAgICAKKyAgICAgICAgaWYgKGVuZFJhbmdlID49IDApIHsKKyAgICAgICAgICAgIGxvYWRSYW5nZShyYW5nZSk7CisgICAgICAgIH0KKyAgICAgICAgc3RyaW5nSXRlcmF0b3IgPSBudWxsOworICAgICAgICBpZiAoc2V0LnN0cmluZ3MgIT0gbnVsbCkgeworICAgICAgICAJc3RyaW5nSXRlcmF0b3IgPSBzZXQuc3RyaW5ncy5pdGVyYXRvcigpOworICAgICAgICAJaWYgKCFzdHJpbmdJdGVyYXRvci5oYXNOZXh0KCkpIHN0cmluZ0l0ZXJhdG9yID0gbnVsbDsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PSBQUklWQVRFUyA9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAKKyAgICBwcml2YXRlIFVuaWNvZGVTZXQgc2V0OworICAgIHByaXZhdGUgaW50IGVuZFJhbmdlID0gMDsKKyAgICBwcml2YXRlIGludCByYW5nZSA9IDA7CisgICAgLyoqCisgICAgICogQGludGVybmFsCisgICAgICovCisgICAgcHJvdGVjdGVkIGludCBlbmRFbGVtZW50OworICAgIC8qKgorICAgICAqIEBpbnRlcm5hbAorICAgICAqLworICAgIHByb3RlY3RlZCBpbnQgbmV4dEVsZW1lbnQ7CisgICAgcHJpdmF0ZSBJdGVyYXRvciBzdHJpbmdJdGVyYXRvciA9IG51bGw7CisgICAgCisgICAgLyoqCisgICAgICogSW52YXJpYW50OiBzdHJpbmdJdGVyYXRvciBpcyBudWxsIHdoZW4gdGhlcmUgYXJlIG5vIChtb3JlKSBzdHJpbmdzIHJlbWFpbmluZworICAgICAqLworCisgICAgLyoqCisgICAgICogQGludGVybmFsCisgICAgICovCisgICAgcHJvdGVjdGVkIHZvaWQgbG9hZFJhbmdlKGludCByYW5nZSkgeworICAgICAgICBuZXh0RWxlbWVudCA9IHNldC5nZXRSYW5nZVN0YXJ0KHJhbmdlKTsKKyAgICAgICAgZW5kRWxlbWVudCA9IHNldC5nZXRSYW5nZUVuZChyYW5nZSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3RleHQvVW5pY29kZVRvSGV4VHJhbnNsaXRlcmF0b3IuamF2YSBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L1VuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYjIwNWEwMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L1VuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yLmphdmEKQEAgLTAsMCArMSwzMzUgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS90ZXh0L0F0dGljL1VuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMTIvMDMgMTg6NTY6NDYgJCAKKyAqICRSZXZpc2lvbjogMS4xMyAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UudGV4dDsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworLyoqCisgKiBBIHRyYW5zbGl0ZXJhdG9yIHRoYXQgY29udmVydHMgZnJvbSBVbmljb2RlIGNoYXJhY3RlcnMgdG8gCisgKiBoZXhhZGVjaW1hbCBVbmljb2RlIGVzY2FwZSBzZXF1ZW5jZXMuICBJdCBvdXRwdXRzIGEKKyAqIHByZWZpeCBzcGVjaWZpZWQgaW4gdGhlIGNvbnN0cnVjdG9yIGFuZCBvcHRpb25hbGx5IGNvbnZlcnRzIHRoZSBoZXgKKyAqIGRpZ2l0cyB0byB1cHBlcmNhc2UuCisgKgorICogPHA+VGhlIGZvcm1hdCBvZiB0aGUgb3V0cHV0IGlzIHNldCBieSBhIHBhdHRlcm4uICBUaGlzIHBhdHRlcm4KKyAqIGZvbGxvd3MgdGhlIHNhbWUgc3ludGF4IGFzIDxjb2RlPkhleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yPC9jb2RlPiwKKyAqIGV4Y2VwdCBpdCBkb2VzIG5vdCBhbGxvdyBtdWx0aXBsZSBzcGVjaWZpY2F0aW9ucy4gIFRoZSBwYXR0ZXJuIHNldHMKKyAqIHRoZSBwcmVmaXggc3RyaW5nLCBzdWZmaXggc3RyaW5nLCBhbmQgbWluaW11bSBhbmQgbWF4aW11bSBkaWdpdAorICogY291bnQuICBUaGVyZSBhcmUgbm8gc2V0dGVycyBvciBnZXR0ZXJzIGZvciB0aGVzZSBhdHRyaWJ1dGVzOyB0aGV5CisgKiBhcmUgc2V0IG9ubHkgdGhyb3VnaCB0aGUgcGF0dGVybi4KKyAqCisgKiA8cD5UaGUgc2V0VXBwZXJjYXNlKCkgYW5kIGlzVXBwZXJjYXNlKCkgbWV0aG9kcyBjb250cm9sIHdoZXRoZXIgJ2EnCisgKiB0aHJvdWdoICdmJyBvciAnQScgdGhyb3VnaCAnRicgYXJlIG91dHB1dCBhcyBoZXggZGlnaXRzLiAgVGhpcyBpcworICogbm90IGNvbnRyb2xsZWQgdGhyb3VnaCB0aGUgcGF0dGVybjsgb25seSB0aHJvdWdoIHRoZSBtZXRob2RzLiAgVGhlCisgKiBkZWZhdWx0IGlzIHVwcGVyY2FzZS4KKyAqCisgKiBAYXV0aG9yIEFsYW4gTGl1CisgKiBAZGVwcmVjYXRlZCBJQ1UgMi40IFRoaXMgY2xhc3MgdG8gYmUgcmVtb3ZlZCBhZnRlciAyMDAzLTEyLTAxLiBVc2UgdGhlIFRyYW5zbGl0ZXJhdG9yIGZhY3RvcnkgbWV0aG9kcy4KKyAqLworcHVibGljIGNsYXNzIFVuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yIGV4dGVuZHMgVHJhbnNsaXRlcmF0b3IgeworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICJcdTAwQTkgSUJNIENvcnBvcmF0aW9uIDE5OTkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIjsKKworICAgIC8qKgorICAgICAqIFBhY2thZ2UgYWNjZXNzaWJsZSBJRCBmb3IgdGhpcyB0cmFuc2xpdGVyYXRvci4KKyAgICAgKi8KKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIF9JRCA9ICJBbnktSGV4IjsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXJbXSBIRVhfRElHSVRTID0geworICAgICAgICAnMCcsICcxJywgJzInLCAnMycsICc0JywgJzUnLCAnNicsICc3JywKKyAgICAgICAgJzgnLCAnOScsICdhJywgJ2InLCAnYycsICdkJywgJ2UnLCAnZicsCisgICAgICAgICcwJywgJzEnLCAnMicsICczJywgJzQnLCAnNScsICc2JywgJzcnLAorICAgICAgICAnOCcsICc5JywgJ0EnLCAnQicsICdDJywgJ0QnLCAnRScsICdGJywKKyAgICB9OworCisgICAgLy8gQ2hhcmFjdGVyIGNvbnN0YW50cyBmb3Igc3BlY2lhbCBwYXR0ZXJuIGNoYXJzCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciBaRVJPICAgICAgPSAnMCc7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciBQT1VORCAgICAgPSAnIyc7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciBCQUNLU0xBU0ggPSAnXFwnOworCisgICAgLyoqCisgICAgICogVGhlIHBhdHRlcm4gc2V0IGJ5IGFwcGx5UGF0dGVybigpIGFuZCByZXR1cm5lZCBieSB0b1BhdHRlcm4oKS4KKyAgICAgKi8KKyAgICBwcml2YXRlIFN0cmluZyBwYXR0ZXJuOworCisgICAgLyoqCisgICAgICogVGhlIHN0cmluZyBwcmVjZWRpbmcgdGhlIGhleCBkaWdpdHMsIHBhcnNlZCBmcm9tIHRoZSBwYXR0ZXJuLgorICAgICAqLworICAgIHByaXZhdGUgU3RyaW5nIHByZWZpeDsKKworICAgIC8qKgorICAgICAqIFRoZSBzdHJpbmcgZm9sbG93aW5nIHRoZSBoZXggZGlnaXRzLCBwYXJzZWQgZnJvbSB0aGUgcGF0dGVybi4KKyAgICAgKi8KKyAgICBwcml2YXRlIFN0cmluZyBzdWZmaXg7CisKKyAgICAvKioKKyAgICAgKiBUaGUgbWluaW11bSBudW1iZXIgb2YgaGV4IGRpZ2l0cyB0byBvdXRwdXQsIGJldHdlZW4gMSBhbmQgNCwKKyAgICAgKiBpbmNsdXNpdmUuICBQYXJzZWQgZnJvbSB0aGUgcGF0dGVybi4KKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBtaW5EaWdpdHM7CisKKyAgICAvKioKKyAgICAgKiBJZiB0cnVlLCBvdXRwdXQgdXBwZXJjYXNlIGhleCBkaWdpdHM7IG90aGVyd2lzZSBvdXRwdXQKKyAgICAgKiBsb3dlcmNhc2UuICBTZXQgYnkgc2V0VXBwZXJjYXNlKCkgYW5kIHJldHVybmVkIGJ5IGlzVXBwZXJjYXNlKCkuCisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIHVwcGVyY2FzZTsKKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSB0cmFuc2xpdGVyYXRvci4KKyAgICAgKiBAcGFyYW0gcGF0dGVybiBUaGUgcGF0dGVybiBmb3IgdGhpcyB0cmFuc2xpdGVyYXRvci4gIFNlZQorICAgICAqIGFwcGx5UGF0dGVybigpIGZvciBwYXR0ZXJuIHN5bnRheC4KKyAgICAgKiBAcGFyYW0gdXBwZXJjYXNlIGlmIHRydWUsIHRoZSBmb3VyIGhleCBkaWdpdHMgd2lsbCBiZQorICAgICAqIGNvbnZlcnRlZCB0byB1cHBlcmNhc2U7IG90aGVyd2lzZSB0aGV5IHdpbGwgYmUgbG93ZXJjYXNlLgorICAgICAqIElnbm9yZWQgaWYgZGlyZWN0aW9uIGlzIEhFWF9VTklDT0RFLgorICAgICAqIEBwYXJhbSBmaWx0ZXIgdGhlIGZpbHRlciBmb3IgdGhpcyB0cmFuc2xpdGVyYXRvciwgb3IKKyAgICAgKiBudWxsIGlmIG5vbmUuCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNCBUaGlzIGNsYXNzIHRvIGJlIHJlbW92ZWQgYWZ0ZXIgMjAwMy0xMi0wMS4gVXNlIHRoZSBUcmFuc2xpdGVyYXRvciBmYWN0b3J5IG1ldGhvZHMuCisgICAgICovCisgICAgcHVibGljIFVuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yKFN0cmluZyBwYXR0ZXJuLCBib29sZWFuIHVwcGVyY2FzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pY29kZUZpbHRlciBmaWx0ZXIpIHsKKyAgICAgICAgc3VwZXIoX0lELCBmaWx0ZXIpOworICAgICAgICB0aGlzLnVwcGVyY2FzZSA9IHVwcGVyY2FzZTsKKyAgICAgICAgYXBwbHlQYXR0ZXJuKHBhdHRlcm4pOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYW4gdXBwZXJjYXNlIHRyYW5zbGl0ZXJhdG9yIHdpdGggbm8gZmlsdGVyLgorICAgICAqIEBwYXJhbSBwYXR0ZXJuIFRoZSBwYXR0ZXJuIGZvciB0aGlzIHRyYW5zbGl0ZXJhdG9yLiAgU2VlCisgICAgICogYXBwbHlQYXR0ZXJuKCkgZm9yIHBhdHRlcm4gc3ludGF4LgorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjQgVGhpcyBjbGFzcyB0byBiZSByZW1vdmVkIGFmdGVyIDIwMDMtMTItMDEuIFVzZSB0aGUgVHJhbnNsaXRlcmF0b3IgZmFjdG9yeSBtZXRob2RzLgorICAgICAqLworICAgIHB1YmxpYyBVbmljb2RlVG9IZXhUcmFuc2xpdGVyYXRvcihTdHJpbmcgcGF0dGVybikgeworICAgICAgICB0aGlzKHBhdHRlcm4sIHRydWUsIG51bGwpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSB0cmFuc2xpdGVyYXRvciB3aXRoIHRoZSBkZWZhdWx0IHByZWZpeCAiJiMwOTI7dSIKKyAgICAgKiB0aGF0IG91dHB1dHMgZm91ciB1cHBlcmNhc2UgaGV4IGRpZ2l0cy4KKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40IFRoaXMgY2xhc3MgdG8gYmUgcmVtb3ZlZCBhZnRlciAyMDAzLTEyLTAxLiBVc2UgdGhlIFRyYW5zbGl0ZXJhdG9yIGZhY3RvcnkgbWV0aG9kcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgVW5pY29kZVRvSGV4VHJhbnNsaXRlcmF0b3IoKSB7CisgICAgICAgIHN1cGVyKF9JRCwgbnVsbCk7CisgICAgICAgIHBhdHRlcm4gPSAiXFxcXHUwMDAwIjsKKyAgICAgICAgcHJlZml4ID0gIlxcdSI7CisgICAgICAgIHN1ZmZpeCA9ICIiOworICAgICAgICBtaW5EaWdpdHMgPSA0OworICAgICAgICB1cHBlcmNhc2UgPSB0cnVlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCB0aGUgcGF0dGVybiByZWNvZ25pemVkIGJ5IHRoaXMgdHJhbnNsaXRlcmF0b3IuICBUaGUgcGF0dGVybgorICAgICAqIG11c3QgY29udGFpbiB6ZXJvIG9yIG1vcmUgcHJlZml4IGNoYXJhY3RlcnMsIG9uZSBvciBtb3JlIGRpZ2l0CisgICAgICogY2hhcmFjdGVycywgYW5kIHplcm8gb3IgbW9yZSBzdWZmaXggY2hhcmFjdGVycy4gIFRoZSBkaWdpdAorICAgICAqIGNoYXJhY3RlcnMgaW5kaWNhdGVzIG9wdGlvbmFsIGRpZ2l0cyAoJyMnKSBmb2xsb3dlZCBieSByZXF1aXJlZAorICAgICAqIGRpZ2l0cyAoJzAnKS4gIFRoZSB0b3RhbCBudW1iZXIgb2YgZGlnaXRzIGNhbm5vdCBleGNlZWQgNCwgYW5kCisgICAgICogbXVzdCBiZSBhdCBsZWFzdCAxIHJlcXVpcmVkIGRpZ2l0LiAgVXNlIGEgYmFja3NsYXNoICgnXFwnKSB0bworICAgICAqIGVzY2FwZSBhbnkgb2YgdGhlIHNwZWNpYWwgY2hhcmFjdGVycy4gIEFuIGVtcHR5IHBhdHRlcm4gaXMgbm90CisgICAgICogYWxsb3dlZC4KKyAgICAgKgorICAgICAqIDxwPkV4YW1wbGU6ICJVKzAwMDAiIHNwZWNpZmllcyBhIHByZWZpeCBvZiAiVSsiLCBleGFjdGx5IGZvdXIKKyAgICAgKiBkaWdpdHMsIGFuZCBubyBzdWZmaXguICAiPCMjIzA+IiBoYXMgYSBwcmVmaXggb2YgIjwiLCBiZXR3ZWVuCisgICAgICogb25lIGFuZCBmb3VyIGRpZ2l0cywgYW5kIGEgc3VmZml4IG9mICI+Ii4KKyAgICAgKgorICAgICAqIDxwPjxwcmU+CisgICAgICogcGF0dGVybiA6PSBwcmVmaXgtY2hhciogZGlnaXQtc3BlYyBzdWZmaXgtY2hhcioKKyAgICAgKiBkaWdpdC1zcGVjIDo9ICcjJyogJzAnKworICAgICAqIHByZWZpeC1jaGFyIDo9IFtec3BlY2lhbC1jaGFyXSB8ICdcXCcgc3BlY2lhbC1jaGFyCisgICAgICogc3VmZml4LWNoYXIgOj0gW15zcGVjaWFsLWNoYXJdIHwgJ1xcJyBzcGVjaWFsLWNoYXIKKyAgICAgKiBzcGVjaWFsLWNoYXIgOj0gJzsnIHwgJzAnIHwgJyMnIHwgJ1xcJworICAgICAqIDwvcHJlPgorICAgICAqCisgICAgICogPHA+TGltaXRhdGlvbnM6IFRoZXJlIGlzIG5vIHdheSB0byBzZXQgdGhlIHVwcGVyY2FzZSBhdHRyaWJ1dGUKKyAgICAgKiBpbiB0aGUgcGF0dGVybi4gIChhcHBseVBhdHRlcm4oKSBkb2VzIG5vdCBhbHRlciB0aGUgdXBwZXJjYXNlCisgICAgICogYXR0cmlidXRlLikKKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40IFRoaXMgY2xhc3MgdG8gYmUgcmVtb3ZlZCBhZnRlciAyMDAzLTEyLTAxLiBVc2UgdGhlIFRyYW5zbGl0ZXJhdG9yIGZhY3RvcnkgbWV0aG9kcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBhcHBseVBhdHRlcm4oU3RyaW5nIHRoZVBhdHRlcm4pIHsKKyAgICAgICAgU3RyaW5nQnVmZmVyIHByZWZpeEJ1ZiA9IG51bGw7CisgICAgICAgIFN0cmluZ0J1ZmZlciBzdWZmaXhCdWYgPSBudWxsOworICAgICAgICBpbnQgbWluRGlnaXRzID0gMDsKKyAgICAgICAgaW50IG1heERpZ2l0cyA9IDA7CisKKyAgICAgICAgLyogVGhlIG1vZGUgc3BlY2lmaWVzIHdoZXJlIHdlIGFyZSBpbiBlYWNoIHNwZWMuCisgICAgICAgICAqIG1vZGUgMCA9IGluIHByZWZpeAorICAgICAgICAgKiBtb2RlIDEgPSBpbiBvcHRpb25hbCBkaWdpdHMgKCMpCisgICAgICAgICAqIG1vZGUgMiA9IGluIHJlcXVpcmVkIGRpZ2l0cyAoMCkKKyAgICAgICAgICogbW9kZSAzID0gaW4gc3VmZml4CisgICAgICAgICAqLworICAgICAgICBpbnQgbW9kZSA9IDA7CisKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPHRoZVBhdHRlcm4ubGVuZ3RoKCk7ICsraSkgeworICAgICAgICAgICAgY2hhciBjID0gdGhlUGF0dGVybi5jaGFyQXQoaSk7CisgICAgICAgICAgICBib29sZWFuIGlzTGl0ZXJhbCA9IGZhbHNlOworICAgICAgICAgICAgaWYgKGMgPT0gQkFDS1NMQVNIKSB7CisgICAgICAgICAgICAgICAgaWYgKChpKzEpPHRoZVBhdHRlcm4ubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaXNMaXRlcmFsID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYyA9IHRoZVBhdHRlcm4uY2hhckF0KCsraSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVHJhaWxpbmcgJ1xcJworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJUcmFpbGluZyAnXFwnIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWlzTGl0ZXJhbCkgeworICAgICAgICAgICAgICAgIHN3aXRjaCAoYykgeworICAgICAgICAgICAgICAgIGNhc2UgUE9VTkQ6CisgICAgICAgICAgICAgICAgICAgIC8vIFNlZWluZyBhICcjJyBtb3ZlcyB1cyBmcm9tIG1vZGUgMCAocHJlZml4KSB0byBtb2RlIDEKKyAgICAgICAgICAgICAgICAgICAgLy8gKG9wdGlvbmFsIGRpZ2l0cykuCisgICAgICAgICAgICAgICAgICAgIGlmIChtb2RlID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrbW9kZTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtb2RlICE9IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVucXVvdGVkICcjJworICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiVW5xdW90ZWQgJyMnIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgKyttYXhEaWdpdHM7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgWkVSTzoKKyAgICAgICAgICAgICAgICAgICAgLy8gU2VlaW5nIGEgJzAnIG1vdmVzIHVzIHRvIG1vZGUgMiAocmVxdWlyZWQgZGlnaXRzKQorICAgICAgICAgICAgICAgICAgICBpZiAobW9kZSA8IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vZGUgPSAyOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1vZGUgIT0gMikgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gVW5xdW90ZWQgJzAnCisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJVbnF1b3RlZCAnMCciKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICArK21pbkRpZ2l0czsKKyAgICAgICAgICAgICAgICAgICAgKyttYXhEaWdpdHM7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGlzTGl0ZXJhbCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGlzTGl0ZXJhbCkgeworICAgICAgICAgICAgICAgIGlmIChtb2RlID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByZWZpeEJ1ZiA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXhCdWYgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcHJlZml4QnVmLmFwcGVuZChjKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvLyBBbnkgbGl0ZXJhbCBvdXRzaWRlIHRoZSBwcmVmaXggbW92ZXMgdXMgaW50byBtb2RlIDMKKyAgICAgICAgICAgICAgICAgICAgLy8gKHN1ZmZpeCkKKyAgICAgICAgICAgICAgICAgICAgbW9kZSA9IDM7CisgICAgICAgICAgICAgICAgICAgIGlmIChzdWZmaXhCdWYgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3VmZml4QnVmID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHN1ZmZpeEJ1Zi5hcHBlbmQoYyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKG1pbkRpZ2l0cyA8IDEgfHwgbWF4RGlnaXRzID4gNCkgeworICAgICAgICAgICAgLy8gSW52YWxpZCBtaW4vbWF4IGRpZ2l0IGNvdW50CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIG1pbi9tYXggZGlnaXQgY291bnQiKTsKKyAgICAgICAgfQorCisgICAgICAgIHBhdHRlcm4gPSB0aGVQYXR0ZXJuOworICAgICAgICBwcmVmaXggPSAocHJlZml4QnVmID09IG51bGwpID8gIiIgOiBwcmVmaXhCdWYudG9TdHJpbmcoKTsKKyAgICAgICAgc3VmZml4ID0gKHN1ZmZpeEJ1ZiA9PSBudWxsKSA/ICIiIDogc3VmZml4QnVmLnRvU3RyaW5nKCk7CisgICAgICAgIHRoaXMubWluRGlnaXRzID0gbWluRGlnaXRzOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGlzIHRyYW5zbGl0ZXJhdG9yJ3MgcGF0dGVybi4KKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40IFRoaXMgY2xhc3MgdG8gYmUgcmVtb3ZlZCBhZnRlciAyMDAzLTEyLTAxLiBVc2UgdGhlIFRyYW5zbGl0ZXJhdG9yIGZhY3RvcnkgbWV0aG9kcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIHRvUGF0dGVybigpIHsKKyAgICAgICAgcmV0dXJuIHBhdHRlcm47CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgc3RyaW5nIHRoYXQgcHJlY2VkZXMgdGhlIGZvdXIgaGV4IGRpZ2l0cy4KKyAgICAgKiBAcmV0dXJuIHByZWZpeCBzdHJpbmcKKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40IFRoaXMgY2xhc3MgdG8gYmUgcmVtb3ZlZCBhZnRlciAyMDAzLTEyLTAxLiBVc2UgdGhlIFRyYW5zbGl0ZXJhdG9yIGZhY3RvcnkgbWV0aG9kcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIGdldFByZWZpeCgpIHsKKyAgICAgICAgcmV0dXJuIHByZWZpeDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBzdHJpbmcgdGhhdCBwcmVjZWRlcyB0aGUgZm91ciBoZXggZGlnaXRzLgorICAgICAqCisgICAgICogPHA+Q2FsbGVycyBtdXN0IHRha2UgY2FyZSBpZiBhIHRyYW5zbGl0ZXJhdG9yIGlzIGluIHVzZSBieQorICAgICAqIG11bHRpcGxlIHRocmVhZHMuICBUaGUgcHJlZml4IHNob3VsZCBub3QgYmUgY2hhbmdlZCBieSBvbmUKKyAgICAgKiB0aHJlYWQgd2hpbGUgYW5vdGhlciB0aHJlYWQgbWF5IGJlIHRyYW5zbGl0ZXJhdGluZy4KKyAgICAgKiBAcGFyYW0gcHJlZml4IHByZWZpeCBzdHJpbmcKKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40IFRoaXMgY2xhc3MgdG8gYmUgcmVtb3ZlZCBhZnRlciAyMDAzLTEyLTAxLiBVc2UgdGhlIFRyYW5zbGl0ZXJhdG9yIGZhY3RvcnkgbWV0aG9kcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRQcmVmaXgoU3RyaW5nIHByZWZpeCkgeworICAgICAgICB0aGlzLnByZWZpeCA9IHByZWZpeDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhpcyB0cmFuc2xpdGVyYXRvciBvdXRwdXRzIHVwcGVyY2FzZSBoZXggZGlnaXRzLgorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjQgVGhpcyBjbGFzcyB0byBiZSByZW1vdmVkIGFmdGVyIDIwMDMtMTItMDEuIFVzZSB0aGUgVHJhbnNsaXRlcmF0b3IgZmFjdG9yeSBtZXRob2RzLgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGlzVXBwZXJjYXNlKCkgeworICAgICAgICByZXR1cm4gdXBwZXJjYXNlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgaWYgdGhpcyB0cmFuc2xpdGVyYXRvciBvdXRwdXRzIHVwcGVyY2FzZSBoZXggZGlnaXRzLgorICAgICAqCisgICAgICogPHA+Q2FsbGVycyBtdXN0IHRha2UgY2FyZSBpZiBhIHRyYW5zbGl0ZXJhdG9yIGlzIGluIHVzZSBieQorICAgICAqIG11bHRpcGxlIHRocmVhZHMuICBUaGUgdXBwZXJjYXNlIG1vZGUgc2hvdWxkIG5vdCBiZSBjaGFuZ2VkIGJ5CisgICAgICogb25lIHRocmVhZCB3aGlsZSBhbm90aGVyIHRocmVhZCBtYXkgYmUgdHJhbnNsaXRlcmF0aW5nLgorICAgICAqIEBwYXJhbSBvdXRwdXRVcHBlcmNhc2UgaWYgdHJ1ZSwgdGhlbiB0aGlzIHRyYW5zbGl0ZXJhdG9yCisgICAgICogb3V0cHV0cyB1cHBlcmNhc2UgaGV4IGRpZ2l0cy4KKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40IFRoaXMgY2xhc3MgdG8gYmUgcmVtb3ZlZCBhZnRlciAyMDAzLTEyLTAxLiBVc2UgdGhlIFRyYW5zbGl0ZXJhdG9yIGZhY3RvcnkgbWV0aG9kcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRVcHBlcmNhc2UoYm9vbGVhbiBvdXRwdXRVcHBlcmNhc2UpIHsKKyAgICAgICAgdXBwZXJjYXNlID0gb3V0cHV0VXBwZXJjYXNlOworICAgIH0KKworICAgIC8qKgorICAgICAqIEltcGxlbWVudHMge0BsaW5rIFRyYW5zbGl0ZXJhdG9yI2hhbmRsZVRyYW5zbGl0ZXJhdGV9LgorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjQgVGhpcyBjbGFzcyB0byBiZSByZW1vdmVkIGFmdGVyIDIwMDMtMTItMDEuIFVzZSB0aGUgVHJhbnNsaXRlcmF0b3IgZmFjdG9yeSBtZXRob2RzLgorICAgICAqLworICAgIHByb3RlY3RlZCB2b2lkIGhhbmRsZVRyYW5zbGl0ZXJhdGUoUmVwbGFjZWFibGUgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uIG9mZnNldHMsIGJvb2xlYW4gaW5jcmVtZW50YWwpIHsKKyAgICAgICAgLyoqCisgICAgICAgICAqIFBlcmZvcm1zIHRyYW5zbGl0ZXJhdGlvbiBjaGFuZ2luZyBhbGwgY2hhcmFjdGVycyB0bworICAgICAgICAgKiBVbmljb2RlIGhleGFkZWNpbWFsIGVzY2FwZXMuICBGb3IgZXhhbXBsZSwgJ0AnIC0+ICJVKzAwNDAiLAorICAgICAgICAgKiBhc3N1bWluZyB0aGUgcHJlZml4IGlzICJVKyIuIAorICAgICAgICAgKi8KKyAgICAgICAgaW50IGN1cnNvciA9IG9mZnNldHMuc3RhcnQ7CisgICAgICAgIGludCBsaW1pdCA9IG9mZnNldHMubGltaXQ7CisKKyAgICAgICAgU3RyaW5nQnVmZmVyIGhleCA9IG5ldyBTdHJpbmdCdWZmZXIocHJlZml4KTsKKyAgICAgICAgaW50IHByZWZpeExlbiA9IHByZWZpeC5sZW5ndGgoKTsKKworICAgICAgICB3aGlsZSAoY3Vyc29yIDwgbGltaXQpIHsKKyAgICAgICAgICAgIGNoYXIgYyA9IHRleHQuY2hhckF0KGN1cnNvcik7CisKKyAgICAgICAgICAgIGhleC5zZXRMZW5ndGgocHJlZml4TGVuKTsKKyAgICAgICAgICAgIGJvb2xlYW4gc2hvd1Jlc3QgPSBmYWxzZTsKKyAgICAgICAgICAgIGZvciAoaW50IGk9MzsgaT49MDsgLS1pKSB7CisgICAgICAgICAgICAgICAgaW50IGQgPSAoYyA+PiAoaSo0KSkgJiAweEY7CisgICAgICAgICAgICAgICAgaWYgKHNob3dSZXN0IHx8IChkICE9IDApIHx8IG1pbkRpZ2l0cyA+IGkpIHsKKyAgICAgICAgICAgICAgICAgICAgaGV4LmFwcGVuZChIRVhfRElHSVRTW3VwcGVyY2FzZSA/IChkfDE2KSA6IGRdKTsKKyAgICAgICAgICAgICAgICAgICAgc2hvd1Jlc3QgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGhleC5hcHBlbmQoc3VmZml4KTsKKworICAgICAgICAgICAgdGV4dC5yZXBsYWNlKGN1cnNvciwgY3Vyc29yKzEsIGhleC50b1N0cmluZygpKTsKKyAgICAgICAgICAgIGludCBsZW4gPSBoZXgubGVuZ3RoKCk7CisgICAgICAgICAgICBjdXJzb3IgKz0gbGVuOyAvLyBBZHZhbmNlIGN1cnNvciBieSAxIGFuZCBhZGp1c3QgZm9yIG5ldyB0ZXh0CisgICAgICAgICAgICAtLWxlbjsKKyAgICAgICAgICAgIGxpbWl0ICs9IGxlbjsKKyAgICAgICAgfQorCisgICAgICAgIG9mZnNldHMuY29udGV4dExpbWl0ICs9IGxpbWl0IC0gb2Zmc2V0cy5saW1pdDsKKyAgICAgICAgb2Zmc2V0cy5saW1pdCA9IGxpbWl0OworICAgICAgICBvZmZzZXRzLnN0YXJ0ID0gY3Vyc29yOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS90ZXh0L1VwcGVyY2FzZVRyYW5zbGl0ZXJhdG9yLmphdmEgYi9zcmMvY29tL2libS9pY3UvdGV4dC9VcHBlcmNhc2VUcmFuc2xpdGVyYXRvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjRkZDQ4MTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdGV4dC9VcHBlcmNhc2VUcmFuc2xpdGVyYXRvci5qYXZhCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS90ZXh0L1VwcGVyY2FzZVRyYW5zbGl0ZXJhdG9yLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMTAvMzEgMjI6MzY6NDkgJCAKKyAqICRSZXZpc2lvbjogMS4xMiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UudGV4dDsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLlVDaGFyYWN0ZXJQcm9wZXJ0eTsKKworLyoqCisgKiBBIHRyYW5zbGl0ZXJhdG9yIHRoYXQgcGVyZm9ybXMgbG9jYWxlLXNlbnNpdGl2ZSB0b1VwcGVyKCkKKyAqIGNhc2UgbWFwcGluZy4KKyAqLworY2xhc3MgVXBwZXJjYXNlVHJhbnNsaXRlcmF0b3IgZXh0ZW5kcyBUcmFuc2xpdGVyYXRvciB7CisKKyAgICAvKioKKyAgICAgKiBQYWNrYWdlIGFjY2Vzc2libGUgSUQuCisgICAgICovCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBfSUQgPSAiQW55LVVwcGVyIjsKKyAgICAvLyBUT0RPOiBBZGQgdmFyaWFudHMgZm9yIHRyLCBheiwgbHQsIGRlZmF1bHQgPSBkZWZhdWx0IGxvY2FsZQorCisgICAgLyoqCisgICAgICogU3lzdGVtIHJlZ2lzdHJhdGlvbiBob29rLgorICAgICAqLworICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyKCkgeworICAgICAgICBUcmFuc2xpdGVyYXRvci5yZWdpc3RlckZhY3RvcnkoX0lELCBuZXcgVHJhbnNsaXRlcmF0b3IuRmFjdG9yeSgpIHsKKyAgICAgICAgICAgIHB1YmxpYyBUcmFuc2xpdGVyYXRvciBnZXRJbnN0YW5jZShTdHJpbmcgSUQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFVwcGVyY2FzZVRyYW5zbGl0ZXJhdG9yKExvY2FsZS5VUyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KKworICAgIHByaXZhdGUgTG9jYWxlIGxvYzsKKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSB0cmFuc2xpdGVyYXRvci4KKyAgICAgKi8KKyAgICBwdWJsaWMgVXBwZXJjYXNlVHJhbnNsaXRlcmF0b3IoTG9jYWxlIGxvYykgeworICAgICAgICBzdXBlcihfSUQsIG51bGwpOworICAgICAgICB0aGlzLmxvYyA9IGxvYzsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbXBsZW1lbnRzIHtAbGluayBUcmFuc2xpdGVyYXRvciNoYW5kbGVUcmFuc2xpdGVyYXRlfS4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVUcmFuc2xpdGVyYXRlKFJlcGxhY2VhYmxlIHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb3NpdGlvbiBvZmZzZXRzLCBib29sZWFuIGlzSW5jcmVtZW50YWwpIHsKKyAgICAgICAgaW50IHRleHRQb3MgPSBvZmZzZXRzLnN0YXJ0OworICAgICAgICBpZiAodGV4dFBvcyA+PSBvZmZzZXRzLmxpbWl0KSByZXR1cm47CisKKyAgICAgICAgLy8gZ2V0IHN0cmluZyBmb3IgY29udGV4dAorICAgICAgICAvLyBUT0RPOiBhZGQgY29udmVuaWVuY2UgbWV0aG9kIHRvIGRvIHRoaXMsIHNpbmNlIHdlIGRvIGl0IGFsbCBvdmVyCisgICAgICAgIAorICAgICAgICBVQ2hhcmFjdGVySXRlcmF0b3Igb3JpZ2luYWwgPSBVQ2hhcmFjdGVySXRlcmF0b3IuZ2V0SW5zdGFuY2UodGV4dCk7CisgICAgICAgIAorICAgICAgICAvLyBXYWxrIHRocm91Z2ggb3JpZ2luYWwgc3RyaW5nCisgICAgICAgIC8vIElmIHRoZXJlIGlzIGEgY2FzZSBjaGFuZ2UsIG1vZGlmeSBjb3JyZXNwb25kaW5nIHBvc2l0aW9uIGluIHJlcGxhY2VhYmxlCisgICAgICAgIAorICAgICAgICBpbnQgbGltaXQgPSBvZmZzZXRzLmxpbWl0OworICAgICAgICBpbnQgY3A7CisgICAgICAgIGludCBvbGRMZW47CisgICAgICAgIAorICAgICAgICB3aGlsZSAodGV4dFBvcyA8IGxpbWl0KSB7CisgICAgICAgIAlvcmlnaW5hbC5zZXRJbmRleCh0ZXh0UG9zKTsKKyAgICAgICAgICAgIGNwID0gb3JpZ2luYWwuY3VycmVudENvZGVQb2ludCgpOworICAgICAgICAgICAgb2xkTGVuID0gVVRGMTYuZ2V0Q2hhckNvdW50KGNwKTsKKyAgICAgICAgICAgIGludCBuZXdMZW4gPSBtX2NoYXJwcHR5Xy50b1VwcGVyT3JUaXRsZUNhc2UobG9jLCBjcCwgb3JpZ2luYWwsIHRydWUsIGJ1ZmZlcik7CisgICAgICAgICAgICBpZiAobmV3TGVuID49IDApIHsKKyAgICAgICAgICAgICAgICB0ZXh0LnJlcGxhY2UodGV4dFBvcywgdGV4dFBvcyArIG9sZExlbiwgYnVmZmVyLCAwLCBuZXdMZW4pOworICAgICAgICAgICAgICAgIGlmIChuZXdMZW4gIT0gb2xkTGVuKSB7CisgICAgICAgICAgICAgICAgICAgIHRleHRQb3MgKz0gbmV3TGVuOworICAgICAgICAgICAgICAgICAgICBvZmZzZXRzLmxpbWl0ICs9IG5ld0xlbiAtIG9sZExlbjsKKyAgICAgICAgICAgICAgICAgICAgb2Zmc2V0cy5jb250ZXh0TGltaXQgKz0gbmV3TGVuIC0gb2xkTGVuOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0ZXh0UG9zICs9IG9sZExlbjsKKyAgICAgICAgfQorICAgICAgICBvZmZzZXRzLnN0YXJ0ID0gb2Zmc2V0cy5saW1pdDsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBjaGFyIGJ1ZmZlcltdID0gbmV3IGNoYXJbVUNoYXJhY3RlclByb3BlcnR5Lk1BWF9DQVNFX01BUF9TSVpFXTsKKwkvKioKKwkgKiBDaGFyYWN0ZXIgcHJvcGVydHkgZGF0YWJhc2UKKwkgKi8KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBVQ2hhcmFjdGVyUHJvcGVydHkgbV9jaGFycHB0eV8gPSAKKwkJCQkJCQkJCQlVQ2hhcmFjdGVyUHJvcGVydHkuZ2V0SW5zdGFuY2UoKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS90ZXh0L3BhY2thZ2UuaHRtbCBiL3NyYy9jb20vaWJtL2ljdS90ZXh0L3BhY2thZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45MjBkM2NkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L3RleHQvcGFja2FnZS5odG1sCkBAIC0wLDAgKzEsMjggQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8IS0tICBDb3B5cmlnaHQgKEMpIDIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kCisgIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKworICAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvdGV4dC9wYWNrYWdlLmh0bWwsdiAkCisgICRSZXZpc2lvbjogMS4yICQKKyAgJERhdGU6IDIwMDIvMTIvMTIgMjM6MjY6NTYgJAorLS0+Cis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSI+CitFeHRlbnNpb25zIGFuZCBlbmhhbmNlbWVudHMgdG8gamF2YS50ZXh0IHRvIHN1cHBvcnQgdW5pY29kZSB0cmFuc2Zvcm1zLCBVbmljb2RlU2V0LCBzdXJyb2dhdGUgY2hhciB1dGlsaXRpZXMsIFVDQSBjb2xsYXRpb24sIG5vcm1hbGl6YXRpb24sIGJyZWFrIGl0ZXJhdGlvbiAocnVsZSBhbmQgZGljdGlvbmFyeSBiYXNlZCksIGVuaGFuY2VkIG51bWJlciBmb3JtYXQsIGludGVybmF0aW9uYWwgc3RyaW5nIHNlYXJjaGluZywgYW5kIGFyYWJpYyBzaGFwaW5nLjwvcD4KKworPHVsPgorPGxpPlVuaWNvZGUgVHJhbnNmb3JtcyAoVHJhbnNsaXRlcmF0aW9uKSBjb252ZXJ0IGJldHdlZW4gZGlmZmVyZW50IHJlcHJlc2VudGF0aW9ucyBvZiB1bmljb2RlIHRleHQuPC9saT4KKzxsaT5Vbmljb2RlU2V0IHByb3ZpZGVzIHNldCBvcGVyYXRpb25zIG9uIHVuaWNvZGUgY2hhcmFjdGVycyBhbmQgc3RyaW5ncywgYW5kIGFyZSByZXByZXNlbnRhYmxlIGFzIGNvbXBhY3QgZXhwcmVzc2lvbnMuPC9saT4KKzxsaT5TdXJyb2dhdGUgY2hhcmFjdGVyIHV0aWxpdGllcyAoVVRGMTYpIHByb3ZpZGVzIGluZGV4aW5nIGFuZCBzdWJzdHJpbmcgb3BlcmF0aW9ucyBvbiB0ZXh0IGNvbnRhaW5pbmcgc3Vycm9nYXRlcy48L2xpPgorPGxpPlVDQSBjb2xsYXRpb24gaW1wbGVtZW50cyB0aGUgY3VycmVudCBVbmljb2RlIENvbGxhdGlvbiBBbGdvcml0aG0uICBEYXRhIGZvciBtYW55IGxvY2FsZS1zcGVjaWZpYyBjb2xsYXRpb25zIGlzIHByb3ZpZGVkLjwvbGk+Cis8bGk+Tm9ybWFsaXphdGlvbiBzdXBwb3J0cyBzdGFuZGFyZCBVbmljb2RlIG5vcm1hbGl6YXRpb24gZm9ybXMgYXMgd2VsbCBhcyBGQ0QuPC9saT4KKzxsaT5CcmVhayBpdGVyYXRpb24gc3VwcG9ydHMgY2hhcmFjdGVyLCB3b3JkLCBsaW5lLCBzZW50ZW5jZXMsIGFuZCB0aXRsZSBjYXNlIGJyZWFrcy48L2xpPgorPGxpPkVuaGFuY2VkIG51bWJlciBmb3JtYXQgdG8gJ3NwZWxsIG91dCcgbnVtYmVycywgcGFkZGluZyBhbmQgcm91bmRpbmcgY29udHJvbC48L2xpPgorPGxpPkludGVybmF0aW9uYWxseSBzZW5zaXRpdmUgc3RyaW5nIHNlYXJjaGluZywgdXNlcyBjb2xsYXRpb24uPC9saT4KKzxsaT5BcmFiaWMgc2hhcGluZyBjb252ZXJ0cyBiZXR3ZWVuIHNoYXBlZCBhbmQgdW5zaGFwZWQgYXJhYmljIGNoYXJhY3RlcnMgYW5kIGRpZ2l0cy48L2xpPgorPC91bD4KKworPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS91dGlsL0J1ZGRoaXN0Q2FsZW5kYXIuamF2YSBiL3NyYy9jb20vaWJtL2ljdS91dGlsL0J1ZGRoaXN0Q2FsZW5kYXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5iYTIwNjIxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L3V0aWwvQnVkZGhpc3RDYWxlbmRhci5qYXZhCkBAIC0wLDAgKzEsMjI3IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvdXRpbC9CdWRkaGlzdENhbGVuZGFyLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMTIvMTggMTk6MzU6MDYgJCAKKyAqICRSZXZpc2lvbjogMS4xMiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworcGFja2FnZSBjb20uaWJtLmljdS51dGlsOworCitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgY29tLmlibS5pY3UudXRpbC5HcmVnb3JpYW5DYWxlbmRhcjsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworCisvKioKKyAqIDxjb2RlPkJ1ZGRoaXN0Q2FsZW5kYXI8L2NvZGU+IGlzIGEgc3ViY2xhc3Mgb2YgPGNvZGU+R3JlZ29yaWFuQ2FsZW5kYXI8L2NvZGU+CisgKiB0aGF0IG51bWJlcnMgeWVhcnMgc2luY2UgdGhlIGJpcnRoIG9mIHRoZSBCdWRkaGEuICBUaGlzIGlzIHRoZSBjaXZpbCBjYWxlbmRhcgorICogaW4gc29tZSBwcmVkb21pbmFudGx5IEJ1ZGRoaXN0IGNvdW50cmllcyBzdWNoIGFzIFRoYWlsYW5kLCBhbmQgaXQgaXMgdXNlZCBmb3IKKyAqIHJlbGlnaW91cyBwdXJwb3NlcyBlbHNld2hlcmUuCisgKiA8cD4KKyAqIFRoZSBCdWRkaGlzdCBjYWxlbmRhciBpcyBpZGVudGljYWwgdG8gdGhlIEdyZWdvcmlhbiBjYWxlbmRhciBpbiBhbGwgcmVzcGVjdHMKKyAqIGV4Y2VwdCBmb3IgdGhlIHllYXIgYW5kIGVyYS4gIFllYXJzIGFyZSBudW1iZXJlZCBzaW5jZSB0aGUgYmlydGggb2YgdGhlCisgKiBCdWRkaGEgaW4gNTQzIEJDIChHcmVnb3JpYW4pLCBzbyB0aGF0IDEgQUQgKEdyZWdvcmlhbikgaXMgZXF1aXZhbGVudCB0byA1NDQKKyAqIEJFIChCdWRkaGlzdCBFcmEpIGFuZCAxOTk4IEFEIGlzIDI1NDEgQkUuCisgKiA8cD4KKyAqIFRoZSBCdWRkaGlzdCBDYWxlbmRhciBoYXMgb25seSBvbmUgYWxsb3dhYmxlIGVyYTogPGNvZGU+QkU8L2NvZGU+LiAgSWYgdGhlCisgKiBjYWxlbmRhciBpcyBub3QgaW4gbGVuaWVudCBtb2RlIChzZWUgPGNvZGU+c2V0TGVuaWVudDwvY29kZT4pLCBkYXRlcyBiZWZvcmUKKyAqIDEvMS8xIEJFIGFyZSByZWplY3RlZCB3aXRoIGFuIDxjb2RlPklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbjwvY29kZT4uCisgKgorICogQHNlZSBjb20uaWJtLmljdS51dGlsLkdyZWdvcmlhbkNhbGVuZGFyCisgKgorICogQGF1dGhvciBMYXVyYSBXZXJuZXIKKyAqIEBhdXRob3IgQWxhbiBMaXUKKyAqIEBkcmFmdCBJQ1UgMi40CisgKi8KK3B1YmxpYyBjbGFzcyBCdWRkaGlzdENhbGVuZGFyIGV4dGVuZHMgR3JlZ29yaWFuQ2FsZW5kYXIgeworICAgIAorICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBjb3B5cmlnaHQgPSAiQ29weXJpZ2h0IFx1MDBhOSAxOTk4IElCTSBDb3JwLiBBbGwgUmlnaHRzIFJlc2VydmVkLiI7CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBDb25zdHJ1Y3RvcnMuLi4KKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIENvbnN0YW50IGZvciB0aGUgQnVkZGhpc3QgRXJhLiAgVGhpcyBpcyB0aGUgb25seSBhbGxvd2FibGUgPGNvZGU+RVJBPC9jb2RlPgorICAgICAqIHZhbHVlIGZvciB0aGUgQnVkZGhpc3QgY2FsZW5kYXIuCisgICAgICoKKyAgICAgKiBAc2VlIGNvbS5pYm0uaWN1LnV0aWwuQ2FsZW5kYXIjRVJBCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCRSA9IDA7CisgICAgCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIDxjb2RlPkJ1ZGRoaXN0Q2FsZW5kYXI8L2NvZGU+IHVzaW5nIHRoZSBjdXJyZW50IHRpbWUKKyAgICAgKiBpbiB0aGUgZGVmYXVsdCB0aW1lIHpvbmUgd2l0aCB0aGUgZGVmYXVsdCBsb2NhbGUuCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgQnVkZGhpc3RDYWxlbmRhcigpIHsKKyAgICAgICAgc3VwZXIoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgPGNvZGU+QnVkZGhpc3RDYWxlbmRhcjwvY29kZT4gYmFzZWQgb24gdGhlIGN1cnJlbnQgdGltZQorICAgICAqIGluIHRoZSBnaXZlbiB0aW1lIHpvbmUgd2l0aCB0aGUgZGVmYXVsdCBsb2NhbGUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gem9uZSB0aGUgZ2l2ZW4gdGltZSB6b25lLgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIEJ1ZGRoaXN0Q2FsZW5kYXIoVGltZVpvbmUgem9uZSkgeworICAgICAgICBzdXBlcih6b25lKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgPGNvZGU+QnVkZGhpc3RDYWxlbmRhcjwvY29kZT4gYmFzZWQgb24gdGhlIGN1cnJlbnQgdGltZQorICAgICAqIGluIHRoZSBkZWZhdWx0IHRpbWUgem9uZSB3aXRoIHRoZSBnaXZlbiBsb2NhbGUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gYUxvY2FsZSB0aGUgZ2l2ZW4gbG9jYWxlLgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIEJ1ZGRoaXN0Q2FsZW5kYXIoTG9jYWxlIGFMb2NhbGUpIHsKKyAgICAgICAgc3VwZXIoYUxvY2FsZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIDxjb2RlPkJ1ZGRoaXN0Q2FsZW5kYXI8L2NvZGU+IGJhc2VkIG9uIHRoZSBjdXJyZW50IHRpbWUKKyAgICAgKiBpbiB0aGUgZ2l2ZW4gdGltZSB6b25lIHdpdGggdGhlIGdpdmVuIGxvY2FsZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSB6b25lIHRoZSBnaXZlbiB0aW1lIHpvbmUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gYUxvY2FsZSB0aGUgZ2l2ZW4gbG9jYWxlLgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIEJ1ZGRoaXN0Q2FsZW5kYXIoVGltZVpvbmUgem9uZSwgTG9jYWxlIGFMb2NhbGUpIHsKKyAgICAgICAgc3VwZXIoem9uZSwgYUxvY2FsZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIDxjb2RlPkJ1ZGRoaXN0Q2FsZW5kYXI8L2NvZGU+IHdpdGggdGhlIGdpdmVuIGRhdGUgc2V0CisgICAgICogaW4gdGhlIGRlZmF1bHQgdGltZSB6b25lIHdpdGggdGhlIGRlZmF1bHQgbG9jYWxlLgorICAgICAqCisgICAgICogQHBhcmFtIGRhdGUgICAgICBUaGUgZGF0ZSB0byB3aGljaCB0aGUgbmV3IGNhbGVuZGFyIGlzIHNldC4KKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBCdWRkaGlzdENhbGVuZGFyKERhdGUgZGF0ZSkgeworICAgICAgICB0aGlzKCk7CisgICAgICAgIHNldFRpbWUoZGF0ZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIDxjb2RlPkJ1ZGRoaXN0Q2FsZW5kYXI8L2NvZGU+IHdpdGggdGhlIGdpdmVuIGRhdGUgc2V0CisgICAgICogaW4gdGhlIGRlZmF1bHQgdGltZSB6b25lIHdpdGggdGhlIGRlZmF1bHQgbG9jYWxlLgorICAgICAqCisgICAgICogQHBhcmFtIHllYXIgICAgICBUaGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIGNhbGVuZGFyJ3Mge0BsaW5rICNZRUFSIFlFQVJ9IHRpbWUgZmllbGQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gbW9udGggICAgIFRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgY2FsZW5kYXIncyB7QGxpbmsgI01PTlRIIE1PTlRIfSB0aW1lIGZpZWxkLgorICAgICAqICAgICAgICAgICAgICAgICAgVGhlIHZhbHVlIGlzIDAtYmFzZWQuIGUuZy4sIDAgZm9yIEphbnVhcnkuCisgICAgICoKKyAgICAgKiBAcGFyYW0gZGF0ZSAgICAgIFRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgY2FsZW5kYXIncyB7QGxpbmsgI0RBVEUgREFURX0gdGltZSBmaWVsZC4KKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBCdWRkaGlzdENhbGVuZGFyKGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXRlKSB7CisgICAgICAgIHN1cGVyKHllYXIsIG1vbnRoLCBkYXRlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgQnVkZGhpc3RDYWxlbmRhciB3aXRoIHRoZSBnaXZlbiBkYXRlCisgICAgICogYW5kIHRpbWUgc2V0IGZvciB0aGUgZGVmYXVsdCB0aW1lIHpvbmUgd2l0aCB0aGUgZGVmYXVsdCBsb2NhbGUuCisgICAgICoKKyAgICAgKiBAcGFyYW0geWVhciAgICAgIFRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgY2FsZW5kYXIncyB7QGxpbmsgI1lFQVIgWUVBUn0gdGltZSBmaWVsZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBtb250aCAgICAgVGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSBjYWxlbmRhcidzIHtAbGluayAjTU9OVEggTU9OVEh9IHRpbWUgZmllbGQuCisgICAgICogICAgICAgICAgICAgICAgICBUaGUgdmFsdWUgaXMgMC1iYXNlZC4gZS5nLiwgMCBmb3IgSmFudWFyeS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBkYXRlICAgICAgVGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSBjYWxlbmRhcidzIHtAbGluayAjREFURSBEQVRFfSB0aW1lIGZpZWxkLgorICAgICAqCisgICAgICogQHBhcmFtIGhvdXIgICAgICBUaGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIGNhbGVuZGFyJ3Mge0BsaW5rICNIT1VSX09GX0RBWSBIT1VSX09GX0RBWX0gdGltZSBmaWVsZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBtaW51dGUgICAgVGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSBjYWxlbmRhcidzIHtAbGluayAjTUlOVVRFIE1JTlVURX0gdGltZSBmaWVsZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzZWNvbmQgICAgVGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSBjYWxlbmRhcidzIHtAbGluayAjU0VDT05EIFNFQ09ORH0gdGltZSBmaWVsZC4KKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBCdWRkaGlzdENhbGVuZGFyKGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXRlLCBpbnQgaG91ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1pbnV0ZSwgaW50IHNlY29uZCkKKyAgICB7CisgICAgICAgIHN1cGVyKHllYXIsIG1vbnRoLCBkYXRlLCBob3VyLCBtaW51dGUsIHNlY29uZCk7CisgICAgfQorCisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBUaGUgb25seSBwcmFjdGljYWwgZGlmZmVyZW5jZSBmcm9tIGEgR3JlZ29yaWFuIGNhbGVuZGFyIGlzIHRoYXQgeWVhcnMKKyAgICAvLyBhcmUgbnVtYmVyZWQgc2luY2UgdGhlIGJpcnRoIG9mIHRoZSBCdWRkaGEuICBBIGNvdXBsZSBvZiBvdmVycmlkZXMgd2lsbAorICAgIC8vIHRha2UgY2FyZSBvZiB0aGF0Li4uLgorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIC8vIFN0YXJ0cyBpbiAtNTQzIEFELCBpZSA1NDQgQkMKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQlVEREhJU1RfRVJBX1NUQVJUID0gLTU0MzsKKworICAgIC8qKgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovICAgIAorICAgIHByb3RlY3RlZCBpbnQgaGFuZGxlR2V0RXh0ZW5kZWRZZWFyKCkgeworICAgICAgICBpbnQgeWVhcjsKKyAgICAgICAgaWYgKG5ld2VyRmllbGQoRVhURU5ERURfWUVBUiwgWUVBUikgPT0gRVhURU5ERURfWUVBUikgeworICAgICAgICAgICAgeWVhciA9IGludGVybmFsR2V0KEVYVEVOREVEX1lFQVIsIDEpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gSWdub3JlIHRoZSBlcmEsIGFzIHRoZXJlIGlzIG9ubHkgb25lCisgICAgICAgICAgICB5ZWFyID0gaW50ZXJuYWxHZXQoWUVBUiwgMSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHllYXI7CisgICAgfQorCisgICAgLy8gUmV0dXJuIEpEIG9mIHN0YXJ0IG9mIGdpdmVuIG1vbnRoL3llYXIKKyAgICAvKioKKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLyAgICAKKyAgICBwcm90ZWN0ZWQgaW50IGhhbmRsZUNvbXB1dGVNb250aFN0YXJ0KGludCBleWVhciwgaW50IG1vbnRoLCBib29sZWFuIHVzZU1vbnRoKSB7CisgICAgICAgIHJldHVybiBzdXBlci5oYW5kbGVDb21wdXRlTW9udGhTdGFydChleWVhciArIEJVRERISVNUX0VSQV9TVEFSVCwgbW9udGgsIHVzZU1vbnRoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLyAgICAKKyAgICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVDb21wdXRlRmllbGRzKGludCBqdWxpYW5EYXkpIHsKKyAgICAgICAgc3VwZXIuaGFuZGxlQ29tcHV0ZUZpZWxkcyhqdWxpYW5EYXkpOworICAgICAgICBpbnQgeSA9IGludGVybmFsR2V0KEVYVEVOREVEX1lFQVIpIC0gQlVEREhJU1RfRVJBX1NUQVJUOworICAgICAgICBpbnRlcm5hbFNldChFWFRFTkRFRF9ZRUFSLCB5KTsKKyAgICAgICAgaW50ZXJuYWxTZXQoRVJBLCAwKTsKKyAgICAgICAgaW50ZXJuYWxTZXQoWUVBUiwgeSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogT3ZlcnJpZGUgR3JlZ29yaWFuQ2FsZW5kYXIuICBUaGVyZSBpcyBvbmx5IG9uZSBCdWRkaGlzdCBFUkEuICBXZQorICAgICAqIHNob3VsZCByZWFsbHkgaGFuZGxlIFlFQVIsIFlFQVJfV09ZLCBhbmQgRVhURU5ERURfWUVBUiBoZXJlIHRvbyB0bworICAgICAqIGltcGxlbWVudCB0aGUgMS4uNTAwMDAwMCByYW5nZSwgYnV0IGl0J3Mgbm90IGNyaXRpY2FsLgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHJvdGVjdGVkIGludCBoYW5kbGVHZXRMaW1pdChpbnQgZmllbGQsIGludCBsaW1pdFR5cGUpIHsKKyAgICAgICAgaWYgKGZpZWxkID09IEVSQSkgeworICAgICAgICAgICAgcmV0dXJuIEJFOworICAgICAgICB9CisgICAgICAgIHJldHVybiBzdXBlci5oYW5kbGVHZXRMaW1pdChmaWVsZCwgbGltaXRUeXBlKTsKKyAgICB9CisKKyAgICAvKgorICAgIHByaXZhdGUgc3RhdGljIENhbGVuZGFyRmFjdG9yeSBmYWN0b3J5OworICAgIHB1YmxpYyBzdGF0aWMgQ2FsZW5kYXJGYWN0b3J5IGZhY3RvcnkoKSB7CisgICAgICAgIGlmIChmYWN0b3J5ID09IG51bGwpIHsKKyAgICAgICAgICAgIGZhY3RvcnkgPSBuZXcgQ2FsZW5kYXJGYWN0b3J5KCkgeworICAgICAgICAgICAgICAgIHB1YmxpYyBDYWxlbmRhciBjcmVhdGUoVGltZVpvbmUgdHosIExvY2FsZSBsb2MpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBCdWRkaGlzdENhbGVuZGFyKHR6LCBsb2MpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHB1YmxpYyBTdHJpbmcgZmFjdG9yeU5hbWUoKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAiQnVkZGhpc3QiOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhY3Rvcnk7CisgICAgfQorICAgICovCit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvdXRpbC9DYWxlbmRhci5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L3V0aWwvQ2FsZW5kYXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4zODhiYmU2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L3V0aWwvQ2FsZW5kYXIuamF2YQpAQCAtMCwwICsxLDQ5MTAgQEAKKy8qCisqICAgQ29weXJpZ2h0IChDKSAxOTk2LTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyogICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyovCisKKworcGFja2FnZSBjb20uaWJtLmljdS51dGlsOworCitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5JQ1VMb2NhbGVEYXRhOworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuSUNVU2VydmljZTsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLklDVVNlcnZpY2UuS2V5OworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuSUNVU2VydmljZS5GYWN0b3J5OworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuSUNVTG9jYWxlU2VydmljZTsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLklDVUxvY2FsZVNlcnZpY2UuSUNVUmVzb3VyY2VCdW5kbGVGYWN0b3J5OworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuSUNVTG9jYWxlU2VydmljZS5Mb2NhbGVLZXk7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5JQ1VMb2NhbGVTZXJ2aWNlLkxvY2FsZUtleUZhY3Rvcnk7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5Mb2NhbGVVdGlsaXR5OworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuRGF0ZUZvcm1hdDsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0LkRhdGVGb3JtYXRTeW1ib2xzOworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuU2ltcGxlRGF0ZUZvcm1hdDsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5PYmplY3RJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLk9iamVjdE91dHB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLlNlcmlhbGl6YWJsZTsKK2ltcG9ydCBqYXZhLnRleHQuTWVzc2FnZUZvcm1hdDsKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworaW1wb3J0IGphdmEudXRpbC5NYXA7CitpbXBvcnQgamF2YS51dGlsLk1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGU7CitpbXBvcnQgamF2YS51dGlsLlNldDsKKworLyoqCisgKiA8Y29kZT5DYWxlbmRhcjwvY29kZT4gaXMgYW4gYWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgY29udmVydGluZyBiZXR3ZWVuCisgKiBhIDxjb2RlPkRhdGU8L2NvZGU+IG9iamVjdCBhbmQgYSBzZXQgb2YgaW50ZWdlciBmaWVsZHMgc3VjaCBhcworICogPGNvZGU+WUVBUjwvY29kZT4sIDxjb2RlPk1PTlRIPC9jb2RlPiwgPGNvZGU+REFZPC9jb2RlPiwgPGNvZGU+SE9VUjwvY29kZT4sCisgKiBhbmQgc28gb24uIChBIDxjb2RlPkRhdGU8L2NvZGU+IG9iamVjdCByZXByZXNlbnRzIGEgc3BlY2lmaWMgaW5zdGFudCBpbgorICogdGltZSB3aXRoIG1pbGxpc2Vjb25kIHByZWNpc2lvbi4gU2VlCisgKiB7QGxpbmsgRGF0ZX0KKyAqIGZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGUgPGNvZGU+RGF0ZTwvY29kZT4gY2xhc3MuKQorICoKKyAqIDxwPjxiPk5vdGU6PC9iPiAgVGhpcyBjbGFzcyBpcyBzaW1pbGFyLCBidXQgbm90IGlkZW50aWNhbCwgdG8gdGhlIGNsYXNzCisgKiA8Y29kZT5qYXZhLnV0aWwuQ2FsZW5kYXI8L2NvZGU+LiAgQ2hhbmdlcyBhcmUgZGV0YWlsZWQgYmVsb3cuCisgKgorICogPHA+CisgKiBTdWJjbGFzc2VzIG9mIDxjb2RlPkNhbGVuZGFyPC9jb2RlPiBpbnRlcnByZXQgYSA8Y29kZT5EYXRlPC9jb2RlPgorICogYWNjb3JkaW5nIHRvIHRoZSBydWxlcyBvZiBhIHNwZWNpZmljIGNhbGVuZGFyIHN5c3RlbS4gIElDVTRKIGNvbnRhaW5zCisgKiBzZXZlcmFsIHN1YmNsYXNzZXMgaW1wbGVtZW50aW5nIGRpZmZlcmVudCBpbnRlcm5hdGlvbmFsIGNhbGVuZGFyIHN5c3RlbXMuCisgKgorICogPHA+CisgKiBMaWtlIG90aGVyIGxvY2FsZS1zZW5zaXRpdmUgY2xhc3NlcywgPGNvZGU+Q2FsZW5kYXI8L2NvZGU+IHByb3ZpZGVzIGEKKyAqIGNsYXNzIG1ldGhvZCwgPGNvZGU+Z2V0SW5zdGFuY2U8L2NvZGU+LCBmb3IgZ2V0dGluZyBhIGdlbmVyYWxseSB1c2VmdWwKKyAqIG9iamVjdCBvZiB0aGlzIHR5cGUuIDxjb2RlPkNhbGVuZGFyPC9jb2RlPidzIDxjb2RlPmdldEluc3RhbmNlPC9jb2RlPiBtZXRob2QKKyAqIHJldHVybnMgYSA8Y29kZT5HcmVnb3JpYW5DYWxlbmRhcjwvY29kZT4gb2JqZWN0IHdob3NlCisgKiB0aW1lIGZpZWxkcyBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgd2l0aCB0aGUgY3VycmVudCBkYXRlIGFuZCB0aW1lOgorICogPGJsb2NrcXVvdGU+CisgKiA8cHJlPgorICogQ2FsZW5kYXIgcmlnaHROb3cgPSBDYWxlbmRhci5nZXRJbnN0YW5jZSgpOworICogPC9wcmU+CisgKiA8L2Jsb2NrcXVvdGU+CisgKgorICogPHA+QSA8Y29kZT5DYWxlbmRhcjwvY29kZT4gb2JqZWN0IGNhbiBwcm9kdWNlIGFsbCB0aGUgdGltZSBmaWVsZCB2YWx1ZXMKKyAqIG5lZWRlZCB0byBpbXBsZW1lbnQgdGhlIGRhdGUtdGltZSBmb3JtYXR0aW5nIGZvciBhIHBhcnRpY3VsYXIgbGFuZ3VhZ2UgYW5kCisgKiBjYWxlbmRhciBzdHlsZSAoZm9yIGV4YW1wbGUsIEphcGFuZXNlLUdyZWdvcmlhbiwgSmFwYW5lc2UtVHJhZGl0aW9uYWwpLgorICogPGNvZGU+Q2FsZW5kYXI8L2NvZGU+IGRlZmluZXMgdGhlIHJhbmdlIG9mIHZhbHVlcyByZXR1cm5lZCBieSBjZXJ0YWluIGZpZWxkcywKKyAqIGFzIHdlbGwgYXMgdGhlaXIgbWVhbmluZy4gIEZvciBleGFtcGxlLCB0aGUgZmlyc3QgbW9udGggb2YgdGhlIHllYXIgaGFzIHZhbHVlCisgKiA8Y29kZT5NT05USDwvY29kZT4gPT0gPGNvZGU+SkFOVUFSWTwvY29kZT4gZm9yIGFsbCBjYWxlbmRhcnMuICBPdGhlciB2YWx1ZXMKKyAqIGFyZSBkZWZpbmVkIGJ5IHRoZSBjb25jcmV0ZSBzdWJjbGFzcywgc3VjaCBhcyA8Y29kZT5FUkE8L2NvZGU+IGFuZAorICogPGNvZGU+WUVBUjwvY29kZT4uICBTZWUgaW5kaXZpZHVhbCBmaWVsZCBkb2N1bWVudGF0aW9uIGFuZCBzdWJjbGFzcworICogZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4KKyAqCisgKiA8cD5XaGVuIGEgPGNvZGU+Q2FsZW5kYXI8L2NvZGU+IGlzIDxlbT5sZW5pZW50PC9lbT4sIGl0IGFjY2VwdHMgYSB3aWRlciByYW5nZQorICogb2YgZmllbGQgdmFsdWVzIHRoYW4gaXQgcHJvZHVjZXMuICBGb3IgZXhhbXBsZSwgYSBsZW5pZW50CisgKiA8Y29kZT5HcmVnb3JpYW5DYWxlbmRhcjwvY29kZT4gaW50ZXJwcmV0cyA8Y29kZT5NT05USDwvY29kZT4gPT0KKyAqIDxjb2RlPkpBTlVBUlk8L2NvZGU+LCA8Y29kZT5EQVlfT0ZfTU9OVEg8L2NvZGU+ID09IDMyIGFzIEZlYnJ1YXJ5IDEuICBBCisgKiBub24tbGVuaWVudCA8Y29kZT5HcmVnb3JpYW5DYWxlbmRhcjwvY29kZT4gdGhyb3dzIGFuIGV4Y2VwdGlvbiB3aGVuIGdpdmVuCisgKiBvdXQtb2YtcmFuZ2UgZmllbGQgc2V0dGluZ3MuICBXaGVuIGNhbGVuZGFycyByZWNvbXB1dGUgZmllbGQgdmFsdWVzIGZvcgorICogcmV0dXJuIGJ5IDxjb2RlPmdldCgpPC9jb2RlPiwgdGhleSBub3JtYWxpemUgdGhlbS4gIEZvciBleGFtcGxlLCBhCisgKiA8Y29kZT5HcmVnb3JpYW5DYWxlbmRhcjwvY29kZT4gYWx3YXlzIHByb2R1Y2VzIDxjb2RlPkRBWV9PRl9NT05USDwvY29kZT4KKyAqIHZhbHVlcyBiZXR3ZWVuIDEgYW5kIHRoZSBsZW5ndGggb2YgdGhlIG1vbnRoLgorICoKKyAqIDxwPjxjb2RlPkNhbGVuZGFyPC9jb2RlPiBkZWZpbmVzIGEgbG9jYWxlLXNwZWNpZmljIHNldmVuIGRheSB3ZWVrIHVzaW5nIHR3bworICogcGFyYW1ldGVyczogdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayBhbmQgdGhlIG1pbmltYWwgZGF5cyBpbiBmaXJzdCB3ZWVrCisgKiAoZnJvbSAxIHRvIDcpLiAgVGhlc2UgbnVtYmVycyBhcmUgdGFrZW4gZnJvbSB0aGUgbG9jYWxlIHJlc291cmNlIGRhdGEgd2hlbiBhCisgKiA8Y29kZT5DYWxlbmRhcjwvY29kZT4gaXMgY29uc3RydWN0ZWQuICBUaGV5IG1heSBhbHNvIGJlIHNwZWNpZmllZCBleHBsaWNpdGx5CisgKiB0aHJvdWdoIHRoZSBBUEkuCisgKgorICogPHA+V2hlbiBzZXR0aW5nIG9yIGdldHRpbmcgdGhlIDxjb2RlPldFRUtfT0ZfTU9OVEg8L2NvZGU+IG9yCisgKiA8Y29kZT5XRUVLX09GX1lFQVI8L2NvZGU+IGZpZWxkcywgPGNvZGU+Q2FsZW5kYXI8L2NvZGU+IG11c3QgZGV0ZXJtaW5lIHRoZQorICogZmlyc3Qgd2VlayBvZiB0aGUgbW9udGggb3IgeWVhciBhcyBhIHJlZmVyZW5jZSBwb2ludC4gIFRoZSBmaXJzdCB3ZWVrIG9mIGEKKyAqIG1vbnRoIG9yIHllYXIgaXMgZGVmaW5lZCBhcyB0aGUgZWFybGllc3Qgc2V2ZW4gZGF5IHBlcmlvZCBiZWdpbm5pbmcgb24KKyAqIDxjb2RlPmdldEZpcnN0RGF5T2ZXZWVrKCk8L2NvZGU+IGFuZCBjb250YWluaW5nIGF0IGxlYXN0CisgKiA8Y29kZT5nZXRNaW5pbWFsRGF5c0luRmlyc3RXZWVrKCk8L2NvZGU+IGRheXMgb2YgdGhhdCBtb250aCBvciB5ZWFyLiAgV2Vla3MKKyAqIG51bWJlcmVkIC4uLiwgLTEsIDAgcHJlY2VkZSB0aGUgZmlyc3Qgd2Vlazsgd2Vla3MgbnVtYmVyZWQgMiwgMywuLi4gZm9sbG93CisgKiBpdC4gIE5vdGUgdGhhdCB0aGUgbm9ybWFsaXplZCBudW1iZXJpbmcgcmV0dXJuZWQgYnkgPGNvZGU+Z2V0KCk8L2NvZGU+IG1heSBiZQorICogZGlmZmVyZW50LiAgRm9yIGV4YW1wbGUsIGEgc3BlY2lmaWMgPGNvZGU+Q2FsZW5kYXI8L2NvZGU+IHN1YmNsYXNzIG1heQorICogZGVzaWduYXRlIHRoZSB3ZWVrIGJlZm9yZSB3ZWVrIDEgb2YgYSB5ZWFyIGFzIHdlZWsgPGVtPm48L2VtPiBvZiB0aGUgcHJldmlvdXMKKyAqIHllYXIuCisgKgorICogPHA+IFdoZW4gY29tcHV0aW5nIGEgPGNvZGU+RGF0ZTwvY29kZT4gZnJvbSB0aW1lIGZpZWxkcywgdHdvIHNwZWNpYWwKKyAqIGNpcmN1bXN0YW5jZXMgbWF5IGFyaXNlOiB0aGVyZSBtYXkgYmUgaW5zdWZmaWNpZW50IGluZm9ybWF0aW9uIHRvIGNvbXB1dGUgdGhlCisgKiA8Y29kZT5EYXRlPC9jb2RlPiAoc3VjaCBhcyBvbmx5IHllYXIgYW5kIG1vbnRoIGJ1dCBubyBkYXkgaW4gdGhlIG1vbnRoKSwgb3IKKyAqIHRoZXJlIG1heSBiZSBpbmNvbnNpc3RlbnQgaW5mb3JtYXRpb24gKHN1Y2ggYXMgIlR1ZXNkYXksIEp1bHkgMTUsIDE5OTYiIC0tCisgKiBKdWx5IDE1LCAxOTk2IGlzIGFjdHVhbGx5IGEgTW9uZGF5KS4KKyAqCisgKiA8cD4KKyAqIDxzdHJvbmc+SW5zdWZmaWNpZW50IGluZm9ybWF0aW9uLjwvc3Ryb25nPiBUaGUgY2FsZW5kYXIgd2lsbCB1c2UgZGVmYXVsdAorICogaW5mb3JtYXRpb24gdG8gc3BlY2lmeSB0aGUgbWlzc2luZyBmaWVsZHMuIFRoaXMgbWF5IHZhcnkgYnkgY2FsZW5kYXI7IGZvcgorICogdGhlIEdyZWdvcmlhbiBjYWxlbmRhciwgdGhlIGRlZmF1bHQgZm9yIGEgZmllbGQgaXMgdGhlIHNhbWUgYXMgdGhhdCBvZiB0aGUKKyAqIHN0YXJ0IG9mIHRoZSBlcG9jaDogaS5lLiwgWUVBUiA9IDE5NzAsIE1PTlRIID0gSkFOVUFSWSwgREFURSA9IDEsIGV0Yy4KKyAqCisgKiA8cD4KKyAqIDxzdHJvbmc+SW5jb25zaXN0ZW50IGluZm9ybWF0aW9uLjwvc3Ryb25nPiBJZiBmaWVsZHMgY29uZmxpY3QsIHRoZSBjYWxlbmRhcgorICogd2lsbCBnaXZlIHByZWZlcmVuY2UgdG8gZmllbGRzIHNldCBtb3JlIHJlY2VudGx5LiBGb3IgZXhhbXBsZSwgd2hlbgorICogZGV0ZXJtaW5pbmcgdGhlIGRheSwgdGhlIGNhbGVuZGFyIHdpbGwgbG9vayBmb3Igb25lIG9mIHRoZSBmb2xsb3dpbmcKKyAqIGNvbWJpbmF0aW9ucyBvZiBmaWVsZHMuICBUaGUgbW9zdCByZWNlbnQgY29tYmluYXRpb24sIGFzIGRldGVybWluZWQgYnkgdGhlCisgKiBtb3N0IHJlY2VudGx5IHNldCBzaW5nbGUgZmllbGQsIHdpbGwgYmUgdXNlZC4KKyAqCisgKiA8YmxvY2txdW90ZT4KKyAqIDxwcmU+CisgKiBNT05USCArIERBWV9PRl9NT05USAorICogTU9OVEggKyBXRUVLX09GX01PTlRIICsgREFZX09GX1dFRUsKKyAqIE1PTlRIICsgREFZX09GX1dFRUtfSU5fTU9OVEggKyBEQVlfT0ZfV0VFSworICogREFZX09GX1lFQVIKKyAqIERBWV9PRl9XRUVLICsgV0VFS19PRl9ZRUFSCisgKiA8L3ByZT4KKyAqIDwvYmxvY2txdW90ZT4KKyAqCisgKiBGb3IgdGhlIHRpbWUgb2YgZGF5OgorICoKKyAqIDxibG9ja3F1b3RlPgorICogPHByZT4KKyAqIEhPVVJfT0ZfREFZCisgKiBBTV9QTSArIEhPVVIKKyAqIDwvcHJlPgorICogPC9ibG9ja3F1b3RlPgorICoKKyAqIDxwPgorICogPHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBmb3Igc29tZSBub24tR3JlZ29yaWFuIGNhbGVuZGFycywgZGlmZmVyZW50CisgKiBmaWVsZHMgbWF5IGJlIG5lY2Vzc2FyeSBmb3IgY29tcGxldGUgZGlzYW1iaWd1YXRpb24uIEZvciBleGFtcGxlLCBhIGZ1bGwKKyAqIHNwZWNpZmljYXRpb24gb2YgdGhlIGhpc3RvcmlhbCBBcmFiaWMgYXN0cm9ub21pY2FsIGNhbGVuZGFyIHJlcXVpcmVzIHllYXIsCisgKiBtb250aCwgZGF5LW9mLW1vbnRoIDxlbT5hbmQ8L2VtPiBkYXktb2Ytd2VlayBpbiBzb21lIGNhc2VzLgorICoKKyAqIDxwPgorICogPHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBUaGVyZSBhcmUgY2VydGFpbiBwb3NzaWJsZSBhbWJpZ3VpdGllcyBpbgorICogaW50ZXJwcmV0YXRpb24gb2YgY2VydGFpbiBzaW5ndWxhciB0aW1lcywgd2hpY2ggYXJlIHJlc29sdmVkIGluIHRoZQorICogZm9sbG93aW5nIHdheXM6CisgKiA8b2w+CisgKiAgICAgPGxpPiAyNDowMDowMCAiYmVsb25ncyIgdG8gdGhlIGZvbGxvd2luZyBkYXkuIFRoYXQgaXMsCisgKiAgICAgICAgICAyMzo1OSBvbiBEZWMgMzEsIDE5NjkgJmx0OyAyNDowMCBvbiBKYW4gMSwgMTk3MCAmbHQ7IDI0OjAxOjAwIG9uIEphbiAxLCAxOTcwCisgKgorICogICAgIDxsaT4gQWx0aG91Z2ggaGlzdG9yaWNhbGx5IG5vdCBwcmVjaXNlLCBtaWRuaWdodCBhbHNvIGJlbG9uZ3MgdG8gImFtIiwKKyAqICAgICAgICAgIGFuZCBub29uIGJlbG9uZ3MgdG8gInBtIiwgc28gb24gdGhlIHNhbWUgZGF5LAorICogICAgICAgICAgMTI6MDAgYW0gKG1pZG5pZ2h0KSAmbHQ7IDEyOjAxIGFtLCBhbmQgMTI6MDAgcG0gKG5vb24pICZsdDsgMTI6MDEgcG0KKyAqIDwvb2w+CisgKgorICogPHA+CisgKiBUaGUgZGF0ZSBvciB0aW1lIGZvcm1hdCBzdHJpbmdzIGFyZSBub3QgcGFydCBvZiB0aGUgZGVmaW5pdGlvbiBvZiBhCisgKiBjYWxlbmRhciwgYXMgdGhvc2UgbXVzdCBiZSBtb2RpZmlhYmxlIG9yIG92ZXJyaWRhYmxlIGJ5IHRoZSB1c2VyIGF0CisgKiBydW50aW1lLiBVc2Uge0BsaW5rIERhdGVGb3JtYXR9CisgKiB0byBmb3JtYXQgZGF0ZXMuCisgKgorICogPHA+PHN0cm9uZz5GaWVsZCBtYW5pcHVsYXRpb24gbWV0aG9kczwvc3Ryb25nPjwvcD4KKyAqIAorICogPHA+PGNvZGU+Q2FsZW5kYXI8L2NvZGU+IGZpZWxkcyBjYW4gYmUgY2hhbmdlZCB1c2luZyB0aHJlZSBtZXRob2RzOgorICogPGNvZGU+c2V0KCk8L2NvZGU+LCA8Y29kZT5hZGQoKTwvY29kZT4sIGFuZCA8Y29kZT5yb2xsKCk8L2NvZGU+LjwvcD4KKyAqIAorICogPHA+PHN0cm9uZz48Y29kZT5zZXQoZiwgdmFsdWUpPC9jb2RlPjwvc3Ryb25nPiBjaGFuZ2VzIGZpZWxkCisgKiA8Y29kZT5mPC9jb2RlPiB0byA8Y29kZT52YWx1ZTwvY29kZT4uICBJbiBhZGRpdGlvbiwgaXQgc2V0cyBhbgorICogaW50ZXJuYWwgbWVtYmVyIHZhcmlhYmxlIHRvIGluZGljYXRlIHRoYXQgZmllbGQgPGNvZGU+ZjwvY29kZT4gaGFzCisgKiBiZWVuIGNoYW5nZWQuIEFsdGhvdWdoIGZpZWxkIDxjb2RlPmY8L2NvZGU+IGlzIGNoYW5nZWQgaW1tZWRpYXRlbHksCisgKiB0aGUgY2FsZW5kYXIncyBtaWxsaXNlY29uZHMgaXMgbm90IHJlY29tcHV0ZWQgdW50aWwgdGhlIG5leHQgY2FsbCB0bworICogPGNvZGU+Z2V0KCk8L2NvZGU+LCA8Y29kZT5nZXRUaW1lKCk8L2NvZGU+LCBvcgorICogPGNvZGU+Z2V0VGltZUluTWlsbGlzKCk8L2NvZGU+IGlzIG1hZGUuIFRodXMsIG11bHRpcGxlIGNhbGxzIHRvCisgKiA8Y29kZT5zZXQoKTwvY29kZT4gZG8gbm90IHRyaWdnZXIgbXVsdGlwbGUsIHVubmVjZXNzYXJ5CisgKiBjb21wdXRhdGlvbnMuIEFzIGEgcmVzdWx0IG9mIGNoYW5naW5nIGEgZmllbGQgdXNpbmcKKyAqIDxjb2RlPnNldCgpPC9jb2RlPiwgb3RoZXIgZmllbGRzIG1heSBhbHNvIGNoYW5nZSwgZGVwZW5kaW5nIG9uIHRoZQorICogZmllbGQsIHRoZSBmaWVsZCB2YWx1ZSwgYW5kIHRoZSBjYWxlbmRhciBzeXN0ZW0uIEluIGFkZGl0aW9uLAorICogPGNvZGU+Z2V0KGYpPC9jb2RlPiB3aWxsIG5vdCBuZWNlc3NhcmlseSByZXR1cm4gPGNvZGU+dmFsdWU8L2NvZGU+CisgKiBhZnRlciB0aGUgZmllbGRzIGhhdmUgYmVlbiByZWNvbXB1dGVkLiBUaGUgc3BlY2lmaWNzIGFyZSBkZXRlcm1pbmVkIGJ5CisgKiB0aGUgY29uY3JldGUgY2FsZW5kYXIgY2xhc3MuPC9wPgorICogCisgKiA8cD48ZW0+RXhhbXBsZTwvZW0+OiBDb25zaWRlciBhIDxjb2RlPkdyZWdvcmlhbkNhbGVuZGFyPC9jb2RlPgorICogb3JpZ2luYWxseSBzZXQgdG8gQXVndXN0IDMxLCAxOTk5LiBDYWxsaW5nIDxjb2RlPnNldChDYWxlbmRhci5NT05USCwKKyAqIENhbGVuZGFyLlNFUFRFTUJFUik8L2NvZGU+IHNldHMgdGhlIGNhbGVuZGFyIHRvIFNlcHRlbWJlciAzMSwKKyAqIDE5OTkuIFRoaXMgaXMgYSB0ZW1wb3JhcnkgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gdGhhdCByZXNvbHZlcyB0bworICogT2N0b2JlciAxLCAxOTk5IGlmIDxjb2RlPmdldFRpbWUoKTwvY29kZT5pcyB0aGVuIGNhbGxlZC4gSG93ZXZlciwgYQorICogY2FsbCB0byA8Y29kZT5zZXQoQ2FsZW5kYXIuREFZX09GX01PTlRILCAzMCk8L2NvZGU+IGJlZm9yZSB0aGUgY2FsbCB0bworICogPGNvZGU+Z2V0VGltZSgpPC9jb2RlPiBzZXRzIHRoZSBjYWxlbmRhciB0byBTZXB0ZW1iZXIgMzAsIDE5OTksIHNpbmNlCisgKiBubyByZWNvbXB1dGF0aW9uIG9jY3VycyBhZnRlciA8Y29kZT5zZXQoKTwvY29kZT4gaXRzZWxmLjwvcD4KKyAqIAorICogPHA+PHN0cm9uZz48Y29kZT5hZGQoZiwgZGVsdGEpPC9jb2RlPjwvc3Ryb25nPiBhZGRzIDxjb2RlPmRlbHRhPC9jb2RlPgorICogdG8gZmllbGQgPGNvZGU+ZjwvY29kZT4uICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyA8Y29kZT5zZXQoZiwKKyAqIGdldChmKSArIGRlbHRhKTwvY29kZT4gd2l0aCB0d28gYWRqdXN0bWVudHM6PC9wPgorICogCisgKiA8YmxvY2txdW90ZT4KKyAqICAgPHA+PHN0cm9uZz5BZGQgcnVsZSAxPC9zdHJvbmc+LiBUaGUgdmFsdWUgb2YgZmllbGQgPGNvZGU+ZjwvY29kZT4KKyAqICAgYWZ0ZXIgdGhlIGNhbGwgbWludXMgdGhlIHZhbHVlIG9mIGZpZWxkIDxjb2RlPmY8L2NvZGU+IGJlZm9yZSB0aGUKKyAqICAgY2FsbCBpcyA8Y29kZT5kZWx0YTwvY29kZT4sIG1vZHVsbyBhbnkgb3ZlcmZsb3cgdGhhdCBoYXMgb2NjdXJyZWQgaW4KKyAqICAgZmllbGQgPGNvZGU+ZjwvY29kZT4uIE92ZXJmbG93IG9jY3VycyB3aGVuIGEgZmllbGQgdmFsdWUgZXhjZWVkcyBpdHMKKyAqICAgcmFuZ2UgYW5kLCBhcyBhIHJlc3VsdCwgdGhlIG5leHQgbGFyZ2VyIGZpZWxkIGlzIGluY3JlbWVudGVkIG9yCisgKiAgIGRlY3JlbWVudGVkIGFuZCB0aGUgZmllbGQgdmFsdWUgaXMgYWRqdXN0ZWQgYmFjayBpbnRvIGl0cyByYW5nZS48L3A+CisgKiAKKyAqICAgPHA+PHN0cm9uZz5BZGQgcnVsZSAyPC9zdHJvbmc+LiBJZiBhIHNtYWxsZXIgZmllbGQgaXMgZXhwZWN0ZWQgdG8gYmUKKyAqICAgaW52YXJpYW50LCBidXQgJm5ic3A7IGl0IGlzIGltcG9zc2libGUgZm9yIGl0IHRvIGJlIGVxdWFsIHRvIGl0cworICogICBwcmlvciB2YWx1ZSBiZWNhdXNlIG9mIGNoYW5nZXMgaW4gaXRzIG1pbmltdW0gb3IgbWF4aW11bSBhZnRlciBmaWVsZAorICogICA8Y29kZT5mPC9jb2RlPiBpcyBjaGFuZ2VkLCB0aGVuIGl0cyB2YWx1ZSBpcyBhZGp1c3RlZCB0byBiZSBhcyBjbG9zZQorICogICBhcyBwb3NzaWJsZSB0byBpdHMgZXhwZWN0ZWQgdmFsdWUuIEEgc21hbGxlciBmaWVsZCByZXByZXNlbnRzIGEKKyAqICAgc21hbGxlciB1bml0IG9mIHRpbWUuIDxjb2RlPkhPVVI8L2NvZGU+IGlzIGEgc21hbGxlciBmaWVsZCB0aGFuCisgKiAgIDxjb2RlPkRBWV9PRl9NT05USDwvY29kZT4uIE5vIGFkanVzdG1lbnQgaXMgbWFkZSB0byBzbWFsbGVyIGZpZWxkcworICogICB0aGF0IGFyZSBub3QgZXhwZWN0ZWQgdG8gYmUgaW52YXJpYW50LiBUaGUgY2FsZW5kYXIgc3lzdGVtCisgKiAgIGRldGVybWluZXMgd2hhdCBmaWVsZHMgYXJlIGV4cGVjdGVkIHRvIGJlIGludmFyaWFudC48L3A+CisgKiA8L2Jsb2NrcXVvdGU+CisgKiAKKyAqIDxwPkluIGFkZGl0aW9uLCB1bmxpa2UgPGNvZGU+c2V0KCk8L2NvZGU+LCA8Y29kZT5hZGQoKTwvY29kZT4gZm9yY2VzCisgKiBhbiBpbW1lZGlhdGUgcmVjb21wdXRhdGlvbiBvZiB0aGUgY2FsZW5kYXIncyBtaWxsaXNlY29uZHMgYW5kIGFsbAorICogZmllbGRzLjwvcD4KKyAqIAorICogPHA+PGVtPkV4YW1wbGU8L2VtPjogQ29uc2lkZXIgYSA8Y29kZT5HcmVnb3JpYW5DYWxlbmRhcjwvY29kZT4KKyAqIG9yaWdpbmFsbHkgc2V0IHRvIEF1Z3VzdCAzMSwgMTk5OS4gQ2FsbGluZyA8Y29kZT5hZGQoQ2FsZW5kYXIuTU9OVEgsCisgKiAxMyk8L2NvZGU+IHNldHMgdGhlIGNhbGVuZGFyIHRvIFNlcHRlbWJlciAzMCwgMjAwMC4gPHN0cm9uZz5BZGQgcnVsZQorICogMTwvc3Ryb25nPiBzZXRzIHRoZSA8Y29kZT5NT05USDwvY29kZT4gZmllbGQgdG8gU2VwdGVtYmVyLCBzaW5jZQorICogYWRkaW5nIDEzIG1vbnRocyB0byBBdWd1c3QgZ2l2ZXMgU2VwdGVtYmVyIG9mIHRoZSBuZXh0IHllYXIuIFNpbmNlCisgKiA8Y29kZT5EQVlfT0ZfTU9OVEg8L2NvZGU+IGNhbm5vdCBiZSAzMSBpbiBTZXB0ZW1iZXIgaW4gYQorICogPGNvZGU+R3JlZ29yaWFuQ2FsZW5kYXI8L2NvZGU+LCA8c3Ryb25nPmFkZCBydWxlIDI8L3N0cm9uZz4gc2V0cyB0aGUKKyAqIDxjb2RlPkRBWV9PRl9NT05USDwvY29kZT4gdG8gMzAsIHRoZSBjbG9zZXN0IHBvc3NpYmxlIHZhbHVlLiBBbHRob3VnaAorICogaXQgaXMgYSBzbWFsbGVyIGZpZWxkLCA8Y29kZT5EQVlfT0ZfV0VFSzwvY29kZT4gaXMgbm90IGFkanVzdGVkIGJ5CisgKiBydWxlIDIsIHNpbmNlIGl0IGlzIGV4cGVjdGVkIHRvIGNoYW5nZSB3aGVuIHRoZSBtb250aCBjaGFuZ2VzIGluIGEKKyAqIDxjb2RlPkdyZWdvcmlhbkNhbGVuZGFyPC9jb2RlPi48L3A+CisgKiAKKyAqIDxwPjxzdHJvbmc+PGNvZGU+cm9sbChmLCBkZWx0YSk8L2NvZGU+PC9zdHJvbmc+IGFkZHMKKyAqIDxjb2RlPmRlbHRhPC9jb2RlPiB0byBmaWVsZCA8Y29kZT5mPC9jb2RlPiB3aXRob3V0IGNoYW5naW5nIGxhcmdlcgorICogZmllbGRzLiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyA8Y29kZT5hZGQoZiwgZGVsdGEpPC9jb2RlPiB3aXRoCisgKiB0aGUgZm9sbG93aW5nIGFkanVzdG1lbnQ6PC9wPgorICogCisgKiA8YmxvY2txdW90ZT4KKyAqICAgPHA+PHN0cm9uZz5Sb2xsIHJ1bGU8L3N0cm9uZz4uIExhcmdlciBmaWVsZHMgYXJlIHVuY2hhbmdlZCBhZnRlciB0aGUKKyAqICAgY2FsbC4gQSBsYXJnZXIgZmllbGQgcmVwcmVzZW50cyBhIGxhcmdlciB1bml0IG9mCisgKiAgIHRpbWUuIDxjb2RlPkRBWV9PRl9NT05USDwvY29kZT4gaXMgYSBsYXJnZXIgZmllbGQgdGhhbgorICogICA8Y29kZT5IT1VSPC9jb2RlPi48L3A+CisgKiA8L2Jsb2NrcXVvdGU+CisgKiAKKyAqIDxwPjxlbT5FeGFtcGxlPC9lbT46IENvbnNpZGVyIGEgPGNvZGU+R3JlZ29yaWFuQ2FsZW5kYXI8L2NvZGU+CisgKiBvcmlnaW5hbGx5IHNldCB0byBBdWd1c3QgMzEsIDE5OTkuIENhbGxpbmcgPGNvZGU+cm9sbChDYWxlbmRhci5NT05USCwKKyAqIDgpPC9jb2RlPiBzZXRzIHRoZSBjYWxlbmRhciB0byBBcHJpbCAzMCwgPHN0cm9uZz4xOTk5PC9zdHJvbmc+LiAgQWRkCisgKiBydWxlIDEgc2V0cyB0aGUgPGNvZGU+TU9OVEg8L2NvZGU+IGZpZWxkIHRvIEFwcmlsLiBVc2luZyBhCisgKiA8Y29kZT5HcmVnb3JpYW5DYWxlbmRhcjwvY29kZT4sIHRoZSA8Y29kZT5EQVlfT0ZfTU9OVEg8L2NvZGU+IGNhbm5vdAorICogYmUgMzEgaW4gdGhlIG1vbnRoIEFwcmlsLiBBZGQgcnVsZSAyIHNldHMgaXQgdG8gdGhlIGNsb3Nlc3QgcG9zc2libGUKKyAqIHZhbHVlLCAzMC4gRmluYWxseSwgdGhlIDxzdHJvbmc+cm9sbCBydWxlPC9zdHJvbmc+IG1haW50YWlucyB0aGUKKyAqIDxjb2RlPllFQVI8L2NvZGU+IGZpZWxkIHZhbHVlIG9mIDE5OTkuPC9wPgorICogCisgKiA8cD48ZW0+RXhhbXBsZTwvZW0+OiBDb25zaWRlciBhIDxjb2RlPkdyZWdvcmlhbkNhbGVuZGFyPC9jb2RlPgorICogb3JpZ2luYWxseSBzZXQgdG8gU3VuZGF5IEp1bmUgNiwgMTk5OS4gQ2FsbGluZworICogPGNvZGU+cm9sbChDYWxlbmRhci5XRUVLX09GX01PTlRILCAtMSk8L2NvZGU+IHNldHMgdGhlIGNhbGVuZGFyIHRvCisgKiBUdWVzZGF5IEp1bmUgMSwgMTk5OSwgd2hlcmVhcyBjYWxsaW5nCisgKiA8Y29kZT5hZGQoQ2FsZW5kYXIuV0VFS19PRl9NT05USCwgLTEpPC9jb2RlPiBzZXRzIHRoZSBjYWxlbmRhciB0bworICogU3VuZGF5IE1heSAzMCwgMTk5OS4gVGhpcyBpcyBiZWNhdXNlIHRoZSByb2xsIHJ1bGUgaW1wb3NlcyBhbgorICogYWRkaXRpb25hbCBjb25zdHJhaW50OiBUaGUgPGNvZGU+TU9OVEg8L2NvZGU+IG11c3Qgbm90IGNoYW5nZSB3aGVuIHRoZQorICogPGNvZGU+V0VFS19PRl9NT05USDwvY29kZT4gaXMgcm9sbGVkLiBUYWtlbiB0b2dldGhlciB3aXRoIGFkZCBydWxlIDEsCisgKiB0aGUgcmVzdWx0YW50IGRhdGUgbXVzdCBiZSBiZXR3ZWVuIFR1ZXNkYXkgSnVuZSAxIGFuZCBTYXR1cmRheSBKdW5lCisgKiA1LiBBY2NvcmRpbmcgdG8gYWRkIHJ1bGUgMiwgdGhlIDxjb2RlPkRBWV9PRl9XRUVLPC9jb2RlPiwgYW4gaW52YXJpYW50CisgKiB3aGVuIGNoYW5naW5nIHRoZSA8Y29kZT5XRUVLX09GX01PTlRIPC9jb2RlPiwgaXMgc2V0IHRvIFR1ZXNkYXksIHRoZQorICogY2xvc2VzdCBwb3NzaWJsZSB2YWx1ZSB0byBTdW5kYXkgKHdoZXJlIFN1bmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZQorICogd2VlaykuPC9wPgorICogCisgKiA8cD48c3Ryb25nPlVzYWdlIG1vZGVsPC9zdHJvbmc+LiBUbyBtb3RpdmF0ZSB0aGUgYmVoYXZpb3Igb2YKKyAqIDxjb2RlPmFkZCgpPC9jb2RlPiBhbmQgPGNvZGU+cm9sbCgpPC9jb2RlPiwgY29uc2lkZXIgYSB1c2VyIGludGVyZmFjZQorICogY29tcG9uZW50IHdpdGggaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgYnV0dG9ucyBmb3IgdGhlIG1vbnRoLCBkYXksIGFuZAorICogeWVhciwgYW5kIGFuIHVuZGVybHlpbmcgPGNvZGU+R3JlZ29yaWFuQ2FsZW5kYXI8L2NvZGU+LiBJZiB0aGUKKyAqIGludGVyZmFjZSByZWFkcyBKYW51YXJ5IDMxLCAxOTk5IGFuZCB0aGUgdXNlciBwcmVzc2VzIHRoZSBtb250aAorICogaW5jcmVtZW50IGJ1dHRvbiwgd2hhdCBzaG91bGQgaXQgcmVhZD8gSWYgdGhlIHVuZGVybHlpbmcKKyAqIGltcGxlbWVudGF0aW9uIHVzZXMgPGNvZGU+c2V0KCk8L2NvZGU+LCBpdCBtaWdodCByZWFkIE1hcmNoIDMsIDE5OTkuIEEKKyAqIGJldHRlciByZXN1bHQgd291bGQgYmUgRmVicnVhcnkgMjgsIDE5OTkuIEZ1cnRoZXJtb3JlLCBpZiB0aGUgdXNlcgorICogcHJlc3NlcyB0aGUgbW9udGggaW5jcmVtZW50IGJ1dHRvbiBhZ2FpbiwgaXQgc2hvdWxkIHJlYWQgTWFyY2ggMzEsCisgKiAxOTk5LCBub3QgTWFyY2ggMjgsIDE5OTkuIEJ5IHNhdmluZyB0aGUgb3JpZ2luYWwgZGF0ZSBhbmQgdXNpbmcgZWl0aGVyCisgKiA8Y29kZT5hZGQoKTwvY29kZT4gb3IgPGNvZGU+cm9sbCgpPC9jb2RlPiwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgbGFyZ2VyCisgKiBmaWVsZHMgc2hvdWxkIGJlIGFmZmVjdGVkLCB0aGUgdXNlciBpbnRlcmZhY2UgY2FuIGJlaGF2ZSBhcyBtb3N0IHVzZXJzCisgKiB3aWxsIGludHVpdGl2ZWx5IGV4cGVjdC48L3A+CisgKgorICogPHA+PGI+Tm90ZTo8L2I+IFlvdSBzaG91bGQgYWx3YXlzIHVzZSB7QGxpbmsgI3JvbGwgcm9sbH0gYW5kIHtAbGluayAjYWRkIGFkZH0gcmF0aGVyCisgKiB0aGFuIGF0dGVtcHRpbmcgdG8gcGVyZm9ybSBhcml0aG1ldGljIG9wZXJhdGlvbnMgZGlyZWN0bHkgb24gdGhlIGZpZWxkcworICogb2YgYSA8dHQ+Q2FsZW5kYXI8L3R0Pi4gIEl0IGlzIHF1aXRlIHBvc3NpYmxlIGZvciA8dHQ+Q2FsZW5kYXI8L3R0PiBzdWJjbGFzc2VzCisgKiB0byBoYXZlIGZpZWxkcyB3aXRoIG5vbi1saW5lYXIgYmVoYXZpb3IsIGZvciBleGFtcGxlIG1pc3NpbmcgbW9udGhzCisgKiBvciBkYXlzIGR1cmluZyBub24tbGVhcCB5ZWFycy4gIFRoZSBzdWJjbGFzc2VzJyA8dHQ+YWRkPC90dD4gYW5kIDx0dD5yb2xsPC90dD4KKyAqIG1ldGhvZHMgd2lsbCB0YWtlIHRoaXMgaW50byBhY2NvdW50LCB3aGlsZSBzaW1wbGUgYXJpdGhtZXRpYyBtYW5pcHVsYXRpb25zCisgKiBtYXkgZ2l2ZSBpbnZhbGlkIHJlc3VsdHMuCisgKgorICogPHA+PGJpZz48YmlnPjxiPkNhbGVuZGFyIEFyY2hpdGVjdHVyZSBpbiBJQ1U0SjwvYj48L2JpZz48L2JpZz48L3A+CisgKiAKKyAqIDxwPlJlY2VudGx5IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiA8Y29kZT5DYWxlbmRhcjwvY29kZT4gaGFzIGNoYW5nZWQKKyAqIHNpZ25pZmljYW50bHkgaW4gb3JkZXIgdG8gYmV0dGVyIHN1cHBvcnQgc3ViY2xhc3NpbmcuIFRoZSBvcmlnaW5hbAorICogPGNvZGU+Q2FsZW5kYXI8L2NvZGU+IGNsYXNzIHdhcyBkZXNpZ25lZCB0byBzdXBwb3J0IHN1YmNsYXNzaW5nLCBidXQKKyAqIGl0IGhhZCBvbmx5IG9uZSBpbXBsZW1lbnRlZCBzdWJjbGFzcywgPGNvZGU+R3JlZ29yaWFuQ2FsZW5kYXI8L2NvZGU+LgorICogV2l0aCB0aGUgaW1wbGVtZW50YXRpb24gb2Ygc2V2ZXJhbCBuZXcgY2FsZW5kYXIgc3ViY2xhc3NlcywgaW5jbHVkaW5nCisgKiB0aGUgPGNvZGU+QnVkZGhpc3RDYWxlbmRhcjwvY29kZT4sIDxjb2RlPkNoaW5lc2VDYWxlbmRhcjwvY29kZT4sCisgKiA8Y29kZT5IZWJyZXdDYWxlbmRhcjwvY29kZT4sIDxjb2RlPklzbGFtaWNDYWxlbmRhcjwvY29kZT4sIGFuZAorICogPGNvZGU+SmFwYW5lc2VDYWxlbmRhcjwvY29kZT4sIHRoZSBzdWJjbGFzc2luZyBBUEkgaGFzIGJlZW4gcmV3b3JrZWQKKyAqIHRob3JvdWdobHkuIFRoaXMgc2VjdGlvbiBkZXRhaWxzIHRoZSBuZXcgc3ViY2xhc3NpbmcgQVBJIGFuZCBvdGhlcgorICogd2F5cyBpbiB3aGljaCA8Y29kZT5jb20uaWJtLmljdS51dGlsLkNhbGVuZGFyPC9jb2RlPiBkaWZmZXJzIGZyb20KKyAqIDxjb2RlPmphdmEudXRpbC5DYWxlbmRhcjwvY29kZT4uCisgKiA8L3A+CisgKiAKKyAqIDxwPjxiaWc+PGI+Q2hhbmdlczwvYj48L2JpZz48L3A+CisgKiAKKyAqIDxwPk92ZXJ2aWV3IG9mIGNoYW5nZXMgYmV0d2VlbiB0aGUgY2xhc3NpYyA8Y29kZT5DYWxlbmRhcjwvY29kZT4KKyAqIGFyY2hpdGVjdHVyZSBhbmQgdGhlIG5ldyBhcmNoaXRlY3R1cmUuCisgKiAKKyAqIDx1bD4KKyAqIAorICogICA8bGk+VGhlIDxjb2RlPmZpZWxkc1tdPC9jb2RlPiBhcnJheSBpcyA8Y29kZT5wcml2YXRlPC9jb2RlPiBub3cKKyAqICAgICBpbnN0ZWFkIG9mIDxjb2RlPnByb3RlY3RlZDwvY29kZT4uICBTdWJjbGFzc2VzIG11c3QgYWNjZXNzIGl0CisgKiAgICAgdXNpbmcgdGhlIG1ldGhvZHMge0BsaW5rICNpbnRlcm5hbFNldH0gYW5kCisgKiAgICAge0BsaW5rICNpbnRlcm5hbEdldH0uICA8Yj5Nb3RpdmF0aW9uOjwvYj4gU3ViY2xhc3NlcyBzaG91bGQKKyAqICAgICBub3QgZGlyZWN0bHkgYWNjZXNzIGRhdGEgbWVtYmVycy48L2xpPgorICogCisgKiAgIDxsaT5UaGUgPGNvZGU+dGltZTwvY29kZT4gbG9uZyB3b3JkIGlzIDxjb2RlPnByaXZhdGU8L2NvZGU+IG5vdworICogICAgIGluc3RlYWQgb2YgPGNvZGU+cHJvdGVjdGVkPC9jb2RlPi4gIFN1YmNsYXNzZXMgbWF5IGFjY2VzcyBpdCB1c2luZworICogICAgIHRoZSBtZXRob2Qge0BsaW5rICNpbnRlcm5hbEdldFRpbWVJbk1pbGxpc30sIHdoaWNoIGRvZXMgbm90CisgKiAgICAgcHJvdm9rZSBhbiB1cGRhdGUuIDxiPk1vdGl2YXRpb246PC9iPiBTdWJjbGFzc2VzIHNob3VsZCBub3QKKyAqICAgICBkaXJlY3RseSBhY2Nlc3MgZGF0YSBtZW1iZXJzLjwvbGk+CisgKiAKKyAqICAgPGxpPlRoZSBzY29wZSBvZiByZXNwb25zaWJpbGl0eSBvZiBzdWJjbGFzc2VzIGhhcyBiZWVuIGRyYXN0aWNhbGx5CisgKiAgICAgcmVkdWNlZC4gQXMgbXVjaCBmdW5jdGlvbmFsaXR5IGFzIHBvc3NpYmxlIGlzIGltcGxlbWVudGVkIGluIHRoZQorICogICAgIDxjb2RlPkNhbGVuZGFyPC9jb2RlPiBiYXNlIGNsYXNzLiBBcyBhIHJlc3VsdCwgaXQgaXMgbXVjaCBlYXNpZXIKKyAqICAgICB0byBzdWJjbGFzcyA8Y29kZT5DYWxlbmRhcjwvY29kZT4uIDxiPk1vdGl2YXRpb246PC9iPiBTdWJjbGFzc2VzCisgKiAgICAgc2hvdWxkIG5vdCBoYXZlIHRvIHJlaW1wbGVtZW50IGNvbW1vbiBjb2RlLiBDZXJ0YWluIGJlaGF2aW9ycyBhcmUKKyAqICAgICBjb21tb24gYWNyb3NzIGNhbGVuZGFyIHN5c3RlbXM6IFRoZSBkZWZpbml0aW9uIGFuZCBiZWhhdmlvciBvZgorICogICAgIHdlZWstcmVsYXRlZCBmaWVsZHMgYW5kIHRpbWUgZmllbGRzLCB0aGUgYXJpdGhtZXRpYworICogICAgICh7QGxpbmsgI2FkZChpbnQsIGludCkgYWRkfSBhbmQge0BsaW5rICNyb2xsKGludCwgaW50KSByb2xsfSkgYmVoYXZpb3Igb2YgbWFueQorICogICAgIGZpZWxkcywgYW5kIHRoZSBmaWVsZCB2YWxpZGF0aW9uIHN5c3RlbS48L2xpPgorICogCisgKiAgIDxsaT5UaGUgc3ViY2xhc3NpbmcgQVBJIGhhcyBiZWVuIGNvbXBsZXRlbHkgcmVkZXNpZ25lZC48L2xpPgorICogCisgKiAgIDxsaT5UaGUgPGNvZGU+Q2FsZW5kYXI8L2NvZGU+IGJhc2UgY2xhc3MgY29udGFpbnMgc29tZSBHcmVnb3JpYW4KKyAqICAgICBjYWxlbmRhciBhbGdvcml0aG1pYyBzdXBwb3J0IHRoYXQgc3ViY2xhc3NlcyBjYW4gdXNlIChzcGVjaWZpY2FsbHkKKyAqICAgICBpbiB7QGxpbmsgI2hhbmRsZUNvbXB1dGVGaWVsZHN9KS4gIFN1YmNsYXNzZXMgY2FuIHVzZSB0aGUKKyAqICAgICBtZXRob2RzIDxjb2RlPmdldEdyZWdvcmlhblh4eCgpPC9jb2RlPiB0byBvYnRhaW4gcHJlY29tcHV0ZWQKKyAqICAgICB2YWx1ZXMuIDxiPk1vdGl2YXRpb246PC9iPiBUaGlzIGlzIHJlcXVpcmVkIGJ5IGFsbAorICogICAgIDxjb2RlPkNhbGVuZGFyPC9jb2RlPiBzdWJjbGFzc2VzIGluIG9yZGVyIHRvIGltcGxlbWVudCBjb25zaXN0ZW50CisgKiAgICAgdGltZSB6b25lIGJlaGF2aW9yLCBhbmQgR3JlZ29yaWFuLWRlcml2ZWQgc3lzdGVtcyBjYW4gdXNlIHRoZQorICogICAgIGFscmVhZHkgY29tcHV0ZWQgZGF0YS48L2xpPgorICogCisgKiAgIDxsaT5UaGUgPGNvZGU+RklFTERfQ09VTlQ8L2NvZGU+IGNvbnN0YW50IGhhcyBiZWVuIHJlbW92ZWQuIFVzZQorICogICAgIHtAbGluayAjZ2V0RmllbGRDb3VudH0uICBJbiBhZGRpdGlvbiwgZnJhbWV3b3JrIEFQSSBoYXMgYmVlbgorICogICAgIGFkZGVkIHRvIGFsbG93IHN1YmNsYXNzZXMgdG8gZGVmaW5lIGFkZGl0aW9uYWwgZmllbGRzLgorICogICAgIDxiPk1vdGl2YXRpb246IDwvYj5UaGUgbnVtYmVyIG9mIGZpZWxkcyBpcyBub3QgY29uc3RhbnQgYWNyb3NzCisgKiAgICAgY2FsZW5kYXIgc3lzdGVtcy48L2xpPgorICogCisgKiAgIDxsaT5UaGUgcmFuZ2Ugb2YgaGFuZGxlZCBkYXRlcyBoYXMgYmVlbiBuYXJyb3dlZCBmcm9tICsvLQorICogICAgIH4zMDAsMDAwLDAwMCB5ZWFycyB0byArLy0gfjUsMDAwLDAwMCB5ZWFycy4gSW4gcHJhY3RpY2FsIHRlcm1zCisgKiAgICAgdGhpcyBzaG91bGQgbm90IGFmZmVjdCBjbGllbnRzLiBIb3dldmVyLCBpdCBkb2VzIG1lYW4gdGhhdCBjbGllbnQKKyAqICAgICBjb2RlIGNhbm5vdCBiZSBndWFyYW50ZWVkIHdlbGwtYmVoYXZlZCByZXN1bHRzIHdpdGggZGF0ZXMgc3VjaCBhcworICogICAgIDxjb2RlPkRhdGUoTG9uZy5NSU5fVkFMVUUpPC9jb2RlPiBvcgorICogICAgIDxjb2RlPkRhdGUoTG9uZy5NQVhfVkFMVUUpPC9jb2RlPi4gSW5zdGVhZCwgdGhlCisgKiAgICAgPGNvZGU+Q2FsZW5kYXI8L2NvZGU+IGNvbnN0YW50cyB7QGxpbmsgI01JTl9EQVRFfSwKKyAqICAgICB7QGxpbmsgI01BWF9EQVRFfSwge0BsaW5rICNNSU5fTUlMTElTfSwKKyAqICAgICB7QGxpbmsgI01BWF9NSUxMSVN9LCB7QGxpbmsgI01JTl9KVUxJQU59LCBhbmQKKyAqICAgICB7QGxpbmsgI01BWF9KVUxJQU59IHNob3VsZCBiZSB1c2VkLiA8Yj5Nb3RpdmF0aW9uOjwvYj4gV2l0aAorICogICAgIHRoZSBhZGRpdGlvbiBvZiB0aGUge0BsaW5rICNKVUxJQU5fREFZfSBmaWVsZCwgSnVsaWFuIGRheQorICogICAgIG51bWJlcnMgbXVzdCBiZSByZXN0cmljdGVkIHRvIGEgMzItYml0IDxjb2RlPmludDwvY29kZT4uICBUaGlzCisgKiAgICAgcmVzdHJpY3RzIHRoZSBvdmVyYWxsIHN1cHBvcnRlZCByYW5nZS4gRnVydGhlcm1vcmUsIHJlc3RyaWN0aW5nCisgKiAgICAgdGhlIHN1cHBvcnRlZCByYW5nZSBzaW1wbGlmaWVzIHRoZSBjb21wdXRhdGlvbnMgYnkgcmVtb3ZpbmcKKyAqICAgICBzcGVjaWFsIGNhc2UgY29kZSB0aGF0IHdhcyB1c2VkIHRvIGFjY29tb2RhdGUgYXJpdGhtZXRpYyBvdmVyZmxvdworICogICAgIGF0IG1pbGxpcyBuZWFyIDxjb2RlPkxvbmcuTUlOX1ZBTFVFPC9jb2RlPiBhbmQKKyAqICAgICA8Y29kZT5Mb25nLk1BWF9WQUxVRTwvY29kZT4uPC9saT4KKyAqIAorICogICA8bGk+TmV3IGZpZWxkcyBhcmUgaW1wbGVtZW50ZWQ6IHtAbGluayAjSlVMSUFOX0RBWX0gZGVmaW5lcworICogICAgIHNpbmdsZS1maWVsZCBzcGVjaWZpY2F0aW9uIG9mIHRoZQorICogICAgIGRhdGUuIHtAbGluayAjTUlMTElTRUNPTkRTX0lOX0RBWX0gZGVmaW5lcyBhIHNpbmdsZS1maWVsZAorICogICAgIHNwZWNpZmljYXRpb24gb2YgdGhlIHdhbGwgdGltZS4ge0BsaW5rICNET1dfTE9DQUx9IGFuZAorICogICAgIHtAbGluayAjWUVBUl9XT1l9IGltcGxlbWVudCBsb2NhbGl6ZWQgZGF5LW9mLXdlZWsgYW5kCisgKiAgICAgd2Vlay1vZi15ZWFyIGJlaGF2aW9yLjwvbGk+CisgKiAKKyAqICAgPGxpPlN1YmNsYXNzZXMgY2FuIGFjY2VzcyBtaWxsaXNlY29uZCBjb25zdGFudHMKKyAqICAgICB7QGxpbmsgI09ORV9TRUNPTkR9LCB7QGxpbmsgI09ORV9NSU5VVEV9LAorICogICAgIHtAbGluayAjT05FX0hPVVJ9LCB7QGxpbmsgI09ORV9EQVl9LCBhbmQKKyAqICAgICB7QGxpbmsgI09ORV9XRUVLfSBkZWZpbmVkIGluIDxjb2RlPkNhbGVuZGFyPC9jb2RlPi48L2xpPgorICogCisgKiAgIDxsaT5OZXcgQVBJIGhhcyBiZWVuIGFkZGVkIHRvIHN1cG9ydCBjYWxlbmRhci1zcGVjaWZpYyBzdWJjbGFzc2VzCisgKiAgICAgb2YgPGNvZGU+RGF0ZUZvcm1hdDwvY29kZT4uPC9saT4KKyAqIAorICogICA8bGk+U2V2ZXJhbCBzdWJjbGFzc2VzIGhhdmUgYmVlbiBpbXBsZW1lbnRlZCwgcmVwcmVzZW50aW5nCisgKiAgICAgdmFyaW91cyBpbnRlcm5hdGlvbmFsIGNhbGVuZGFyIHN5c3RlbXMuPC9saT4KKyAqIAorICogPC91bD4KKyAqIAorICogPHA+PGJpZz48Yj5TdWJjbGFzcyBBUEk8L2I+PC9iaWc+PC9wPgorICogCisgKiA8cD5UaGUgb3JpZ2luYWwgPGNvZGU+Q2FsZW5kYXI8L2NvZGU+IEFQSSB3YXMgYmFzZWQgb24gdGhlIGV4cGVyaWVuY2UKKyAqIG9mIGltcGxlbWVudGluZyBhIG9ubHkgYSBzaW5nbGUgc3ViY2xhc3MsCisgKiA8Y29kZT5HcmVnb3JpYW5DYWxlbmRhcjwvY29kZT4uIEFzIGEgcmVzdWx0LCBhbGwgb2YgdGhlIHN1YmNsYXNzaW5nCisgKiBraW5rcyBoYWQgbm90IGJlZW4gd29ya2VkIG91dC4gVGhlIG5ldyBzdWJjbGFzc2luZyBBUEkgaGFzIGJlZW4KKyAqIHJlZmluZWQgYmFzZWQgb24gc2V2ZXJhbCBpbXBsZW1lbnRlZCBzdWJjbGFzc2VzLiBUaGlzIGluY2x1ZGVzIG1ldGhvZHMKKyAqIHRoYXQgbXVzdCBiZSBvdmVycmlkZGVuIGFuZCBtZXRob2RzIGZvciBzdWJjbGFzc2VzIHRvIGNhbGwuIFN1YmNsYXNzZXMKKyAqIG5vIGxvbmdlciBoYXZlIGRpcmVjdCBhY2Nlc3MgdG8gPGNvZGU+ZmllbGRzPC9jb2RlPiBhbmQKKyAqIDxjb2RlPnN0YW1wPC9jb2RlPi4gSW5zdGVhZCwgdGhleSBoYXZlIG5ldyBBUEkgdG8gYWNjZXNzCisgKiB0aGVzZS4gU3ViY2xhc3NlcyBhcmUgYWJsZSB0byBhbGxvY2F0ZSB0aGUgPGNvZGU+ZmllbGRzPC9jb2RlPiBhcnJheQorICogdGhyb3VnaCBhIHByb3RlY3RlZCBmcmFtZXdvcmsgbWV0aG9kOyB0aGlzIGFsbG93cyBzdWJjbGFzc2VzIHRvCisgKiBzcGVjaWZ5IGFkZGl0aW9uYWwgZmllbGRzLiA8L3A+CisgKiAKKyAqIDxwPk1vcmUgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiBtb3ZlZCBpbnRvIHRoZSBiYXNlIGNsYXNzLiBUaGUgYmFzZQorICogY2xhc3Mgbm93IGNvbnRhaW5zIG11Y2ggb2YgdGhlIGNvbXB1dGF0aW9uYWwgbWFjaGluZXJ5IHRvIHN1cHBvcnQgdGhlCisgKiBHcmVnb3JpYW4gY2FsZW5kYXIuIFRoaXMgaXMgYmFzZWQgb24gdHdvIHRoaW5nczogKDEpIE1hbnkgY2FsZW5kYXJzCisgKiBhcmUgYmFzZWQgb24gdGhlIEdyZWdvcmlhbiBjYWxlbmRhciAoc3VjaCBhcyB0aGUgQnVkZGhpc3QgYW5kIEphcGFuZXNlCisgKiBpbXBlcmlhbCBjYWxlbmRhcnMpLiAoMikgPGVtPkFsbDwvZW0+IGNhbGVuZGFycyByZXF1aXJlIGJhc2ljCisgKiBHcmVnb3JpYW4gc3VwcG9ydCBpbiBvcmRlciB0byBoYW5kbGUgdGltZXpvbmUgY29tcHV0YXRpb25zLiA8L3A+CisgKiAKKyAqIDxwPkNvbW1vbiBjb21wdXRhdGlvbnMgaGF2ZSBiZWVuIG1vdmVkIGludG8KKyAqIDxjb2RlPkNhbGVuZGFyPC9jb2RlPi4gU3ViY2xhc3NlcyBubyBsb25nZXIgY29tcHV0ZSB0aGUgd2VlayByZWxhdGVkCisgKiBmaWVsZHMgYW5kIHRoZSB0aW1lIHJlbGF0ZWQgZmllbGRzLiBUaGVzZSBhcmUgY29tbW9ubHkgaGFuZGxlZCBmb3IgYWxsCisgKiBjYWxlbmRhcnMgYnkgdGhlIGJhc2UgY2xhc3MuIDwvcD4KKyAqIAorICogPHA+PGI+U3ViY2xhc3MgY29tcHV0YXRpb24gb2YgdGltZSA8dHQ+PSZndDs8L3R0PiBmaWVsZHM8L2I+CisgKiAKKyAqIDxwPlRoZSB7QGxpbmsgI0VSQX0sIHtAbGluayAjWUVBUn0sCisgKiB7QGxpbmsgI0VYVEVOREVEX1lFQVJ9LCB7QGxpbmsgI01PTlRIfSwKKyAqIHtAbGluayAjREFZX09GX01PTlRIfSwgYW5kIHtAbGluayAjREFZX09GX1lFQVJ9IGZpZWxkcyBhcmUKKyAqIGNvbXB1dGVkIGJ5IHRoZSBzdWJjbGFzcywgYmFzZWQgb24gdGhlIEp1bGlhbiBkYXkuIEFsbCBvdGhlciBmaWVsZHMKKyAqIGFyZSBjb21wdXRlZCBieSA8Y29kZT5DYWxlbmRhcjwvY29kZT4uCisgKiAKKyAqIDx1bD4KKyAqIAorICogICA8bGk+U3ViY2xhc3NlcyBzaG91bGQgaW1wbGVtZW50IHtAbGluayAjaGFuZGxlQ29tcHV0ZUZpZWxkc30KKyAqICAgICB0byBjb21wdXRlIHRoZSB7QGxpbmsgI0VSQX0sIHtAbGluayAjWUVBUn0sCisgKiAgICAge0BsaW5rICNFWFRFTkRFRF9ZRUFSfSwge0BsaW5rICNNT05USH0sCisgKiAgICAge0BsaW5rICNEQVlfT0ZfTU9OVEh9LCBhbmQge0BsaW5rICNEQVlfT0ZfWUVBUn0gZmllbGRzLAorICogICAgIGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiB0aGUge0BsaW5rICNKVUxJQU5fREFZfSBmaWVsZC4gSWYgdGhlcmUKKyAqICAgICBhcmUgY2FsZW5kYXItc3BlY2lmaWMgZmllbGRzIG5vdCBkZWZpbmVkIGJ5IDxjb2RlPkNhbGVuZGFyPC9jb2RlPiwKKyAqICAgICB0aGV5IG11c3QgYWxzbyBiZSBjb21wdXRlZC4gVGhlc2UgYXJlIHRoZSBvbmx5IGZpZWxkcyB0aGF0IHRoZQorICogICAgIHN1YmNsYXNzIHNob3VsZCBjb21wdXRlLiBBbGwgb3RoZXIgZmllbGRzIGFyZSBjb21wdXRlZCBieSB0aGUgYmFzZQorICogICAgIGNsYXNzLCBzbyB0aW1lIGFuZCB3ZWVrIGZpZWxkcyBiZWhhdmUgaW4gYSBjb25zaXN0ZW50IHdheSBhY3Jvc3MKKyAqICAgICBhbGwgY2FsZW5kYXJzLiBUaGUgZGVmYXVsdCB2ZXJzaW9uIG9mIHRoaXMgbWV0aG9kIGluCisgKiAgICAgPGNvZGU+Q2FsZW5kYXI8L2NvZGU+IGltcGxlbWVudHMgYSBwcm9sZXB0aWMgR3JlZ29yaWFuCisgKiAgICAgY2FsZW5kYXIuIFdpdGhpbiB0aGlzIG1ldGhvZCwgc3ViY2xhc3NlcyBtYXkgY2FsbAorICogICAgIDxjb2RlPmdldEdyZWdvcmlhblh4eCgpPC9jb2RlPiB0byBvYnRhaW4gdGhlIEdyZWdvcmlhbiBjYWxlbmRhcgorICogICAgIG1vbnRoLCBkYXkgb2YgbW9udGgsIGFuZCBleHRlbmRlZCB5ZWFyIGZvciB0aGUgZ2l2ZW4gZGF0ZS48L2xpPgorICogCisgKiA8L3VsPgorICogCisgKiA8cD48Yj5TdWJjbGFzcyBjb21wdXRhdGlvbiBvZiBmaWVsZHMgPHR0Pj0mZ3Q7PC90dD4gdGltZTwvYj4KKyAqIAorICogPHA+VGhlIGludGVycHJldGF0aW9uIG9mIG1vc3QgZmllbGQgdmFsdWVzIGlzIGhhbmRsZWQgZW50aXJlbHkgYnkKKyAqIDxjb2RlPkNhbGVuZGFyPC9jb2RlPi4gPGNvZGU+Q2FsZW5kYXI8L2NvZGU+IGRldGVybWluZXMgd2hpY2ggZmllbGRzCisgKiBhcmUgc2V0LCB3aGljaCBhcmUgbm90LCB3aGljaCBhcmUgc2V0IG1vcmUgcmVjZW50bHksIGFuZCBzbyBvbi4gSW4KKyAqIGFkZGl0aW9uLCA8Y29kZT5DYWxlbmRhcjwvY29kZT4gaGFuZGxlcyB0aGUgY29tcHV0YXRpb24gb2YgdGhlIHRpbWUKKyAqIGZyb20gdGhlIHRpbWUgZmllbGRzIGFuZCBoYW5kbGVzIHRoZSB3ZWVrLXJlbGF0ZWQgZmllbGRzLiBUaGUgb25seQorICogdGhpbmcgdGhlIHN1YmNsYXNzIG11c3QgZG8gaXMgZGV0ZXJtaW5lIHRoZSBleHRlbmRlZCB5ZWFyLCBiYXNlZCBvbgorICogdGhlIHllYXIgZmllbGRzLCBhbmQgdGhlbiwgZ2l2ZW4gYW4gZXh0ZW5kZWQgeWVhciBhbmQgYSBtb250aCwgaXQgbXVzdAorICogcmV0dXJuIGEgSnVsaWFuIGRheSBudW1iZXIuCisgKiAKKyAqIDx1bD4KKyAqIAorICogICA8bGk+U3ViY2xhc3NlcyBzaG91bGQgaW1wbGVtZW50IHtAbGluayAjaGFuZGxlR2V0RXh0ZW5kZWRZZWFyfQorICogICAgIHRvIHJldHVybiB0aGUgZXh0ZW5kZWQgeWVhciBmb3IgdGhpcyBjYWxlbmRhciBzeXN0ZW0sIGJhc2VkIG9uIHRoZQorICogICAgIHtAbGluayAjWUVBUn0sIHtAbGluayAjRVhURU5ERURfWUVBUn0sIGFuZCBhbnkgZmllbGRzIHRoYXQKKyAqICAgICB0aGUgY2FsZW5kYXIgc3lzdGVtIHVzZXMgdGhhdCBhcmUgbGFyZ2VyIHRoYW4gYSB5ZWFyLCBzdWNoIGFzCisgKiAgICAge0BsaW5rICNFUkF9LjwvbGk+CisgKiAKKyAqICAgPGxpPlN1YmNsYXNzZXMgc2hvdWxkIGltcGxlbWVudCB7QGxpbmsgI2hhbmRsZUNvbXB1dGVNb250aFN0YXJ0fQorICogICAgIHRvIHJldHVybiB0aGUgSnVsaWFuIGRheSBudW1iZXIKKyAqICAgICBhc3NvY2lhdGVkIHdpdGggYSBtb250aCBhbmQgZXh0ZW5kZWQgeWVhci4gVGhpcyBpcyB0aGUgSnVsaWFuIGRheQorICogICAgIG51bWJlciBvZiB0aGUgZGF5IGJlZm9yZSB0aGUgZmlyc3QgZGF5IG9mIHRoZSBtb250aC4gVGhlIG1vbnRoCisgKiAgICAgbnVtYmVyIGlzIHplcm8tYmFzZWQuIFRoaXMgY29tcHV0YXRpb24gc2hvdWxkIG5vdCBkZXBlbmQgb24gYW55CisgKiAgICAgZmllbGQgdmFsdWVzLjwvbGk+CisgKiAKKyAqIDwvdWw+CisgKiAKKyAqIDxwPjxiPk90aGVyIG1ldGhvZHM8L2I+CisgKiAKKyAqIDx1bD4KKyAqIAorICogICA8bGk+U3ViY2xhc3NlcyBzaG91bGQgaW1wbGVtZW50IHtAbGluayAjaGFuZGxlR2V0TW9udGhMZW5ndGh9CisgKiAgICAgdG8gcmV0dXJuIHRoZSBudW1iZXIgb2YgZGF5cyBpbiBhCisgKiAgICAgZ2l2ZW4gbW9udGggb2YgYSBnaXZlbiBleHRlbmRlZCB5ZWFyLiBUaGUgbW9udGggbnVtYmVyLCBhcyBhbHdheXMsCisgKiAgICAgaXMgemVyby1iYXNlZC48L2xpPgorICogCisgKiAgIDxsaT5TdWJjbGFzc2VzIHNob3VsZCBpbXBsZW1lbnQge0BsaW5rICNoYW5kbGVHZXRZZWFyTGVuZ3RofQorICogICAgIHRvIHJldHVybiB0aGUgbnVtYmVyIG9mIGRheXMgaW4gdGhlIGdpdmVuCisgKiAgICAgZXh0ZW5kZWQgeWVhci4gVGhpcyBtZXRob2QgaXMgdXNlZCBieQorICogICAgIDx0dD5jb21wdXRlV2Vla0ZpZWxkczwvdHQ+IHRvIGNvbXB1dGUgdGhlCisgKiAgICAge0BsaW5rICNXRUVLX09GX1lFQVJ9IGFuZCB7QGxpbmsgI1lFQVJfV09ZfSBmaWVsZHMuPC9saT4KKyAqIAorICogICA8bGk+U3ViY2xhc3NlcyBzaG91bGQgaW1wbGVtZW50IHtAbGluayAjaGFuZGxlR2V0TGltaXR9CisgKiAgICAgdG8gcmV0dXJuIHRoZSB7QGxpbmsgI01JTklNVU19LAorICogICAgIHtAbGluayAjR1JFQVRFU1RfTUlOSU1VTX0sIHtAbGluayAjTEVBU1RfTUFYSU1VTX0sIG9yCisgKiAgICAge0BsaW5rICNNQVhJTVVNfSBvZiBhIGZpZWxkLCBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mCisgKiAgICAgPGNvZGU+bGltaXRUeXBlPC9jb2RlPi4gVGhpcyBtZXRob2Qgb25seSBuZWVkcyB0byBoYW5kbGUgdGhlCisgKiAgICAgZmllbGRzIHtAbGluayAjRVJBfSwge0BsaW5rICNZRUFSfSwge0BsaW5rICNNT05USH0sCisgKiAgICAge0BsaW5rICNXRUVLX09GX1lFQVJ9LCB7QGxpbmsgI1dFRUtfT0ZfTU9OVEh9LAorICogICAgIHtAbGluayAjREFZX09GX01PTlRIfSwge0BsaW5rICNEQVlfT0ZfWUVBUn0sCisgKiAgICAge0BsaW5rICNEQVlfT0ZfV0VFS19JTl9NT05USH0sIHtAbGluayAjWUVBUl9XT1l9LCBhbmQKKyAqICAgICB7QGxpbmsgI0VYVEVOREVEX1lFQVJ9LiAgT3RoZXIgZmllbGRzIGFyZSBpbnZhcmlhbnQgKHdpdGgKKyAqICAgICByZXNwZWN0IHRvIGNhbGVuZGFyIHN5c3RlbSkgYW5kIGFyZSBoYW5kbGVkIGJ5IHRoZSBiYXNlCisgKiAgICAgY2xhc3MuPC9saT4KKyAqIAorICogICA8bGk+T3B0aW9uYWxseSwgc3ViY2xhc3NlcyBtYXkgb3ZlcnJpZGUge0BsaW5rICN2YWxpZGF0ZUZpZWxkfQorICogICAgIHRvIGNoZWNrIGFueSBzdWJjbGFzcy1zcGVjaWZpYyBmaWVsZHMuIElmIHRoZQorICogICAgIGZpZWxkJ3MgdmFsdWUgaXMgb3V0IG9mIHJhbmdlLCB0aGUgbWV0aG9kIHNob3VsZCB0aHJvdyBhbgorICogICAgIDxjb2RlPklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbjwvY29kZT4uIFRoZSBtZXRob2QgbWF5IGNhbGwKKyAqICAgICA8Y29kZT5zdXBlci52YWxpZGF0ZUZpZWxkKGZpZWxkKTwvY29kZT4gdG8gaGFuZGxlIGZpZWxkcyBpbiBhCisgKiAgICAgZ2VuZXJpYyB3YXksIHRoYXQgaXMsIHRvIGNvbXBhcmUgdGhlbSB0byB0aGUgcmFuZ2UKKyAqICAgICA8Y29kZT5nZXRNaW5pbXVtKGZpZWxkKTwvY29kZT4uLjxjb2RlPmdldE1heGltdW0oZmllbGQpPC9jb2RlPi48L2xpPgorICogCisgKiAgIDxsaT5PcHRpb25hbGx5LCBzdWJjbGFzc2VzIG1heSBvdmVycmlkZQorICogICAgIHtAbGluayAjaGFuZGxlQ3JlYXRlRmllbGRzfSB0byBjcmVhdGUgYW4gPGNvZGU+aW50W108L2NvZGU+CisgKiAgICAgYXJyYXkgbGFyZ2UgZW5vdWdoIHRvIGhvbGQgdGhlIGNhbGVuZGFyJ3MgZmllbGRzLiBUaGlzIGlzIG9ubHkKKyAqICAgICBuZWNlc3NhcnkgaWYgdGhlIGNhbGVuZGFyIGRlZmluZXMgYWRkaXRpb25hbCBmaWVsZHMgYmV5b25kIHRob3NlCisgKiAgICAgZGVmaW5lZCBieSA8Y29kZT5DYWxlbmRhcjwvY29kZT4uIFRoZSBsZW5ndGggb2YgdGhlIHJlc3VsdCBtdXN0IGJlCisgKiAgICAgYXQgbGVhc3Qge0BsaW5rICNCQVNFX0ZJRUxEX0NPVU5UfSBhbmQgbm8gbW9yZSB0aGFuCisgKiAgICAge0BsaW5rICNNQVhfRklFTERfQ09VTlR9LjwvbGk+CisgKiAKKyAqICAgPGxpPk9wdGlvbmFsbHksIHN1YmNsYXNzZXMgbWF5IG92ZXJyaWRlCisgKiAgICAge0BsaW5rICNoYW5kbGVHZXREYXRlRm9ybWF0fSB0byBjcmVhdGUgYQorICogICAgIDxjb2RlPkRhdGVGb3JtYXQ8L2NvZGU+IGFwcHJvcHJpYXRlIHRvIHRoaXMgY2FsZW5kYXIuIFRoaXMgaXMgb25seQorICogICAgIHJlcXVpcmVkIGlmIGEgY2FsZW5kYXIgc3ViY2xhc3MgcmVkZWZpbmVzIHRoZSB1c2Ugb2YgYSBmaWVsZCAoZm9yCisgKiAgICAgZXhhbXBsZSwgY2hhbmdlcyB0aGUge0BsaW5rICNFUkF9IGZpZWxkIGZyb20gYSBzeW1ib2xpYyBmaWVsZAorICogICAgIHRvIGEgbnVtZXJpYyBvbmUpIG9yIGRlZmluZXMgYW4gYWRkaXRpb25hbCBmaWVsZC48L2xpPgorICogCisgKiAgIDxsaT5PcHRpb25hbGx5LCBzdWJjbGFzc2VzIG1heSBvdmVycmlkZSB7QGxpbmsgI3JvbGwgcm9sbH0gYW5kCisgKiAgICAge0BsaW5rICNhZGQgYWRkfSB0byBoYW5kbGUgZmllbGRzIHRoYXQgYXJlIGRpc2NvbnRpbnVvdXMuIEZvcgorICogICAgIGV4YW1wbGUsIGluIHRoZSBIZWJyZXcgY2FsZW5kYXIgdGhlIG1vbnRoICZxdW90O0FkYXIgSSZxdW90OyBvbmx5CisgKiAgICAgb2NjdXJzIGluIGxlYXAgeWVhcnM7IGluIG90aGVyIHllYXJzIHRoZSBjYWxlbmRhciBqdW1wcyBmcm9tCisgKiAgICAgU2hldmF0IChtb250aCAjNCkgdG8gQWRhciAobW9udGggIzYpLiBUaGUge0BsaW5rCisgKiAgICAgSGVicmV3Q2FsZW5kYXIjYWRkIEhlYnJld0NhbGVuZGFyLmFkZH0gYW5kIHtAbGluaworICogICAgIEhlYnJld0NhbGVuZGFyI3JvbGwgSGVicmV3Q2FsZW5kYXIucm9sbH0gbWV0aG9kcyB0YWtlIHRoaXMgaW50bworICogICAgIGFjY291bnQsIHNvIHRoYXQgYWRkaW5nIDEgbW9udGggdG8gU2hldmF0IGdpdmVzIHRoZSBwcm9wZXIgcmVzdWx0CisgKiAgICAgKEFkYXIpIGluIGEgbm9uLWxlYXAgeWVhci4gVGhlIHByb3RlY3RlZCB1dGlsaXR5IG1ldGhvZCB7QGxpbmsKKyAqICAgICAjcGluRmllbGQgcGluRmllbGR9IGlzIG9mdGVuIHVzZWZ1bCB3aGVuIGltcGxlbWVudGluZyB0aGVzZSB0d28KKyAqICAgICBtZXRob2RzLiA8L2xpPgorICogCisgKiA8L3VsPgorICogCisgKiA8cD48YmlnPjxiPk5vcm1hbGl6ZWQgYmVoYXZpb3I8L2I+PC9iaWc+CisgKiAKKyAqIDxwPlRoZSBiZWhhdmlvciBvZiBjZXJ0YWluIGZpZWxkcyBoYXMgYmVlbiBtYWRlIGNvbnNpc3RlbnQgYWNyb3NzIGFsbAorICogY2FsZW5kYXIgc3lzdGVtcyBhbmQgaW1wbGVtZW50ZWQgaW4gPGNvZGU+Q2FsZW5kYXI8L2NvZGU+LgorICogCisgKiA8dWw+CisgKiAKKyAqICAgPGxpPlRpbWUgaXMgbm9ybWFsaXplZC4gRXZlbiB0aG91Z2ggc29tZSBjYWxlbmRhciBzeXN0ZW1zIHRyYW5zaXRpb24KKyAqICAgICBiZXR3ZWVuIGRheXMgYXQgc3Vuc2V0IG9yIGF0IG90aGVyIHRpbWVzLCBhbGwgSUNVNEogY2FsZW5kYXJzCisgKiAgICAgdHJhbnNpdGlvbiBiZXR3ZWVuIGRheXMgYXQgPGVtPmxvY2FsIHpvbmUgbWlkbmlnaHQ8L2VtPi4gIFRoaXMKKyAqICAgICBhbGxvd3MgSUNVNEogdG8gY2VudHJhbGl6ZSB0aGUgdGltZSBjb21wdXRhdGlvbnMgaW4KKyAqICAgICA8Y29kZT5DYWxlbmRhcjwvY29kZT4gYW5kIHRvIG1haW50YWluIGJhc2ljIGNvcnJlcHNvbmRlbmNlcworICogICAgIGJldHdlZW4gY2FsZW5kYXIgc3lzdGVtcy4gQWZmZWN0ZWQgZmllbGRzOiB7QGxpbmsgI0FNX1BNfSwKKyAqICAgICB7QGxpbmsgI0hPVVJ9LCB7QGxpbmsgI0hPVVJfT0ZfREFZfSwge0BsaW5rICNNSU5VVEV9LAorICogICAgIHtAbGluayAjU0VDT05EfSwge0BsaW5rICNNSUxMSVNFQ09ORH0sCisgKiAgICAge0BsaW5rICNaT05FX09GRlNFVH0sIGFuZCB7QGxpbmsgI0RTVF9PRkZTRVR9LjwvbGk+CisgKiAKKyAqICAgPGxpPkRTVCBiZWhhdmlvciBpcyBub3JtYWxpemVkLiBEYXlsaWdodCBzYXZpbmdzIHRpbWUgYmVoYXZpb3IgaXMKKyAqICAgICBjb21wdXRlZCB0aGUgc2FtZSBmb3IgYWxsIGNhbGVuZGFyIHN5c3RlbXMsIGFuZCBkZXBlbmRzIG9uIHRoZQorICogICAgIHZhbHVlIG9mIHNldmVyYWwgPGNvZGU+R3JlZ29yaWFuQ2FsZW5kYXI8L2NvZGU+IGZpZWxkczogdGhlCisgKiAgICAge0BsaW5rICNZRUFSfSwge0BsaW5rICNNT05USH0sIGFuZAorICogICAgIHtAbGluayAjREFZX09GX01PTlRIfS4gQXMgYSByZXN1bHQsIDxjb2RlPkNhbGVuZGFyPC9jb2RlPgorICogICAgIGFsd2F5cyBjb21wdXRlcyB0aGVzZSBmaWVsZHMsIGV2ZW4gZm9yIG5vbi1HcmVnb3JpYW4gY2FsZW5kYXIKKyAqICAgICBzeXN0ZW1zLiBUaGVzZSBmaWVsZHMgYXJlIGF2YWlsYWJsZSB0byBzdWJjbGFzc2VzLjwvbGk+CisgKiAKKyAqICAgPGxpPldlZWtzIGFyZSBub3JtYWxpemVkLiBBbHRob3VnaCBsb2NhbGVzIGRlZmluZSB0aGUgd2VlaworICogICAgIGRpZmZlcmVudGx5LCBpbiB0ZXJtcyBvZiB0aGUgZGF5IG9uIHdoaWNoIGl0IHN0YXJ0cywgYW5kIHRoZQorICogICAgIGRlc2lnbmF0aW9uIG9mIHdlZWsgbnVtYmVyIG9uZSBvZiBhIG1vbnRoIG9yIHllYXIsIHRoZXkgYWxsIHVzZSBhCisgKiAgICAgY29tbW9uIG1lY2hhbmlzbS4gRnVydGhlcm1vcmUsIHRoZSBkYXkgb2YgdGhlIHdlZWsgaGFzIGEgc2ltcGxlCisgKiAgICAgYW5kIGNvbnNpc3RlbnQgZGVmaW5pdGlvbiB0aHJvdWdob3V0IGhpc3RvcnkuIEZvciBleGFtcGxlLAorICogICAgIGFsdGhvdWdoIHRoZSBHcmVnb3JpYW4gY2FsZW5kYXIgaW50cm9kdWNlZCBhIGRpc2NvbnRpbnVpdHkgd2hlbgorICogICAgIGZpcnN0IGluc3RpdHV0ZWQsIHRoZSBkYXkgb2Ygd2VlayB3YXMgbm90IGRpc3J1cHRlZC4gRm9yIHRoaXMKKyAqICAgICByZWFzb24sIHRoZSBmaWVsZHMge0BsaW5rICNEQVlfT0ZfV0VFS30sIDxjb2RlPldFRUtfT0ZfWUVBUiwKKyAqICAgICBXRUVLX09GX01PTlRIPC9jb2RlPiwge0BsaW5rICNEQVlfT0ZfV0VFS19JTl9NT05USH0sCisgKiAgICAge0BsaW5rICNET1dfTE9DQUx9LCB7QGxpbmsgI1lFQVJfV09ZfSBhcmUgYWxsIGNvbXB1dGVkIGluCisgKiAgICAgYSBjb25zaXN0ZW50IHdheSBpbiB0aGUgYmFzZSBjbGFzcywgYmFzZWQgb24gdGhlCisgKiAgICAge0BsaW5rICNFWFRFTkRFRF9ZRUFSfSwge0BsaW5rICNEQVlfT0ZfWUVBUn0sCisgKiAgICAge0BsaW5rICNNT05USH0sIGFuZCB7QGxpbmsgI0RBWV9PRl9NT05USH0sIHdoaWNoIGFyZQorICogICAgIGNvbXB1dGVkIGJ5IHRoZSBzdWJjbGFzcy48L2xpPgorICogCisgKiA8L3VsPgorICogCisgKiA8cD48YmlnPjxiPlN1cHBvcnRlZCByYW5nZTwvYj48L2JpZz4KKyAqIAorICogPHA+VGhlIGFsbG93YWJsZSByYW5nZSBvZiA8Y29kZT5DYWxlbmRhcjwvY29kZT4gaGFzIGJlZW4KKyAqIG5hcnJvd2VkLiA8Y29kZT5HcmVnb3JpYW5DYWxlbmRhcjwvY29kZT4gdXNlZCB0byBhdHRlbXB0IHRvIHN1cHBvcnQKKyAqIHRoZSByYW5nZSBvZiBkYXRlcyB3aXRoIG1pbGxpc2Vjb25kIHZhbHVlcyBmcm9tCisgKiA8Y29kZT5Mb25nLk1JTl9WQUxVRTwvY29kZT4gdG8gPGNvZGU+TG9uZy5NQVhfVkFMVUU8L2NvZGU+LiBUaGlzCisgKiBpbnRyb2R1Y2VkIGF3a3dhcmQgY29uc3RydWN0aW9ucyAoaGFja3MpIHdoaWNoIHNsb3dlZCBkb3duCisgKiBwZXJmb3JtYW5jZS4gSXQgYWxzbyBpbnRyb2R1Y2VkIG5vbi11bmlmb3JtIGJlaGF2aW9yIGF0IHRoZQorICogYm91bmRhcmllcy4gVGhlIG5ldyA8Y29kZT5DYWxlbmRhcjwvY29kZT4gcHJvdG9jb2wgc3BlY2lmaWVzIHRoZQorICogbWF4aW11bSByYW5nZSBvZiBzdXBwb3J0YWJsZSBkYXRlcyBhcyB0aG9zZSBoYXZpbmcgSnVsaWFuIGRheSBudW1iZXJzCisgKiBvZiA8Y29kZT4tMHg3RjAwMDAwMDwvY29kZT4gdG8gPGNvZGU+KzB4N0YwMDAwMDA8L2NvZGU+LiBUaGlzCisgKiBjb3JyZXNwb25kcyB0byB5ZWFycyBmcm9tIH41LDAwMCwwMDAgQkNFIHRvIH41LDAwMCwwMDAgQ0UuIFByb2dyYW1tZXJzCisgKiBzaG91bGQgdXNlIHRoZSBjb25zdGFudHMge0BsaW5rICNNSU5fREFURX0gKG9yCisgKiB7QGxpbmsgI01JTl9NSUxMSVN9IG9yIHtAbGluayAjTUlOX0pVTElBTn0pIGFuZAorICoge0BsaW5rICNNQVhfREFURX0gKG9yIHtAbGluayAjTUFYX01JTExJU30gb3IKKyAqIHtAbGluayAjTUFYX0pVTElBTn0pIGluIDxjb2RlPkNhbGVuZGFyPC9jb2RlPiB0byBzcGVjaWZ5IGFuCisgKiBleHRyZW1lbHkgZWFybHkgb3IgZXh0cmVtZWx5IGxhdGUgZGF0ZS48L3A+CisgKiAKKyAqIDxwPjxiaWc+PGI+R2VuZXJhbCBub3RlczwvYj48L2JpZz4KKyAqIAorICogPHVsPgorICogCisgKiAgIDxsaT5DYWxlbmRhcnMgaW1wbGVtZW50YXRpb25zIGFyZSA8ZW0+cHJvbGVwdGljPC9lbT4uIEZvciBleGFtcGxlLAorICogICAgIGV2ZW4gdGhvdWdoIHRoZSBHcmVnb3JpYW4gY2FsZW5kYXIgd2FzIG5vdCBpbnN0aXR1dGVkIHVudGlsIHRoZQorICogICAgIDE2dGggY2VudHVyeSwgdGhlIDxjb2RlPkdyZWdvcmlhbkNhbGVuZGFyPC9jb2RlPiBjbGFzcyBzdXBwb3J0cworICogICAgIGRhdGVzIGJlZm9yZSB0aGUgaGlzdG9yaWNhbCBvbnNldCBvZiB0aGUgY2FsZW5kYXIgYnkgZXh0ZW5kaW5nIHRoZQorICogICAgIGNhbGVuZGFyIHN5c3RlbSBiYWNrd2FyZCBpbiB0aW1lLiBTaW1pbGFybHksIHRoZQorICogICAgIDxjb2RlPkhlYnJld0NhbGVuZGFyPC9jb2RlPiBleHRlbmRzIGJhY2t3YXJkIGJlZm9yZSB0aGUgc3RhcnQgb2YKKyAqICAgICBpdHMgZXBvY2ggaW50byB6ZXJvIGFuZCBuZWdhdGl2ZSB5ZWFycy4gU3ViY2xhc3NlcyBkbyBub3QgdGhyb3cKKyAqICAgICBleGNlcHRpb25zIGJlY2F1c2UgYSBkYXRlIHByZWNlZGVzIHRoZSBoaXN0b3JpY2FsIHN0YXJ0IG9mIGEKKyAqICAgICBjYWxlbmRhciBzeXN0ZW0uIEluc3RlYWQsIHRoZXkgaW1wbGVtZW50CisgKiAgICAge0BsaW5rICNoYW5kbGVHZXRMaW1pdH0gdG8gcmV0dXJuIGFwcHJvcHJpYXRlIGxpbWl0cyBvbgorICogICAgIHtAbGluayAjWUVBUn0sIHtAbGluayAjRVJBfSwgZXRjLiBmaWVsZHMuIFRoZW4sIGlmIHRoZQorICogICAgIGNhbGVuZGFyIGlzIHNldCB0byBub3QgYmUgbGVuaWVudCwgb3V0LW9mLXJhbmdlIGZpZWxkIHZhbHVlcyB3aWxsCisgKiAgICAgdHJpZ2dlciBhbmQgZXhjZXB0aW9uLjwvbGk+CisgKiAKKyAqICAgPGxpPkNhbGVuZGFyIHN5c3RlbSBzdWJjbGFzc2VzIGNvbXB1dGUgYSA8ZW0+ZXh0ZW5kZWQKKyAqICAgICB5ZWFyPC9lbT4uIFRoaXMgZGlmZmVycyBmcm9tIHRoZSB7QGxpbmsgI1lFQVJ9IGZpZWxkIGluIHRoYXQKKyAqICAgICBpdCByYW5nZXMgb3ZlciBhbGwgaW50ZWdlciB2YWx1ZXMsIGluY2x1ZGluZyB6ZXJvIGFuZCBuZWdhdGl2ZQorICogICAgIHZhbHVlcywgYW5kIGl0IGVuY2Fwc3VsYXRlcyB0aGUgaW5mb3JtYXRpb24gb2YgdGhlCisgKiAgICAge0BsaW5rICNZRUFSfSBmaWVsZCBhbmQgYWxsIGxhcmdlciBmaWVsZHMuICBUaHVzLCBmb3IgdGhlCisgKiAgICAgR3JlZ29yaWFuIGNhbGVuZGFyLCB0aGUge0BsaW5rICNFWFRFTkRFRF9ZRUFSfSBpcyBjb21wdXRlZCBhcworICogICAgIDxjb2RlPkVSQT09QUQgPyBZRUFSIDogMS1ZRUFSPC9jb2RlPi4gQW5vdGhlciBleGFtcGxlIGlzIHRoZSBNYXlhbgorICogICAgIGxvbmcgY291bnQsIHdoaWNoIGhhcyB5ZWFycyAoPGNvZGU+S1VOPC9jb2RlPikgYW5kIG5lc3RlZCBjeWNsZXMKKyAqICAgICBvZiB5ZWFycyAoPGNvZGU+S0FUVU48L2NvZGU+IGFuZCA8Y29kZT5CQUtUVU48L2NvZGU+KS4gVGhlIE1heWFuCisgKiAgICAge0BsaW5rICNFWFRFTkRFRF9ZRUFSfSBpcyBjb21wdXRlZCBhcyA8Y29kZT5UVU4gKyAyMCAqIChLQVRVTgorICogICAgICsgMjAgKiBCQUtUVU4pPC9jb2RlPi4gVGhlIDxjb2RlPkNhbGVuZGFyPC9jb2RlPiBiYXNlIGNsYXNzIHVzZXMKKyAqICAgICB0aGUge0BsaW5rICNFWFRFTkRFRF9ZRUFSfSBmaWVsZCB0byBjb21wdXRlIHRoZSB3ZWVrLXJlbGF0ZWQKKyAqICAgICBmaWVsZHMuPC9saT4KKyAqIAorICogPC91bD4KKyAqCisgKiBAc2VlICAgICAgICAgIERhdGUKKyAqIEBzZWUgICAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIKKyAqIEBzZWUgICAgICAgICAgVGltZVpvbmUKKyAqIEBzZWUgICAgICAgICAgRGF0ZUZvcm1hdAorICogQGF1dGhvciBNYXJrIERhdmlzLCBEYXZpZCBHb2xkc21pdGgsIENoZW4tTGllaCBIdWFuZywgQWxhbiBMaXUsIExhdXJhIFdlcm5lcgorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBDYWxlbmRhciBpbXBsZW1lbnRzIFNlcmlhbGl6YWJsZSwgQ2xvbmVhYmxlIHsKKworICAgIC8vIERhdGEgZmxvdyBpbiBDYWxlbmRhcgorICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLy8gVGhlIGN1cnJlbnQgdGltZSBpcyByZXByZXNlbnRlZCBpbiB0d28gd2F5cyBieSBDYWxlbmRhcjogYXMgVVRDCisgICAgLy8gbWlsbGlzZWNvbmRzIGZyb20gdGhlIGVwb2NoIHN0YXJ0ICgxIEphbnVhcnkgMTk3MCAwOjAwIFVUQyksIGFuZCBhcyBsb2NhbAorICAgIC8vIGZpZWxkcyBzdWNoIGFzIE1PTlRILCBIT1VSLCBBTV9QTSwgZXRjLiAgSXQgaXMgcG9zc2libGUgdG8gY29tcHV0ZSB0aGUKKyAgICAvLyBtaWxsaXMgZnJvbSB0aGUgZmllbGRzLCBhbmQgdmljZSB2ZXJzYS4gIFRoZSBkYXRhIG5lZWRlZCB0byBkbyB0aGlzCisgICAgLy8gY29udmVyc2lvbiBpcyBlbmNhcHN1bGF0ZWQgYnkgYSBUaW1lWm9uZSBvYmplY3Qgb3duZWQgYnkgdGhlIENhbGVuZGFyLgorICAgIC8vIFRoZSBkYXRhIHByb3ZpZGVkIGJ5IHRoZSBUaW1lWm9uZSBvYmplY3QgbWF5IGFsc28gYmUgb3ZlcnJpZGRlbiBpZiB0aGUKKyAgICAvLyB1c2VyIHNldHMgdGhlIFpPTkVfT0ZGU0VUIGFuZC9vciBEU1RfT0ZGU0VUIGZpZWxkcyBkaXJlY3RseS4gVGhlIGNsYXNzCisgICAgLy8ga2VlcHMgdHJhY2sgb2Ygd2hhdCBpbmZvcm1hdGlvbiB3YXMgbW9zdCByZWNlbnRseSBzZXQgYnkgdGhlIGNhbGxlciwgYW5kCisgICAgLy8gdXNlcyB0aGF0IHRvIGNvbXB1dGUgYW55IG90aGVyIGluZm9ybWF0aW9uIGFzIG5lZWRlZC4KKworICAgIC8vIElmIHRoZSB1c2VyIHNldHMgdGhlIGZpZWxkcyB1c2luZyBzZXQoKSwgdGhlIGRhdGEgZmxvdyBpcyBhcyBmb2xsb3dzLgorICAgIC8vIFRoaXMgaXMgaW1wbGVtZW50ZWQgYnkgdGhlIENhbGVuZGFyIHN1YmNsYXNzJ3MgY29tcHV0ZVRpbWUoKSBtZXRob2QuCisgICAgLy8gRHVyaW5nIHRoaXMgcHJvY2VzcywgY2VydGFpbiBmaWVsZHMgbWF5IGJlIGlnbm9yZWQuICBUaGUgZGlzYW1iaWd1YXRpb24KKyAgICAvLyBhbGdvcml0aG0gZm9yIHJlc29sdmluZyB3aGljaCBmaWVsZHMgdG8gcGF5IGF0dGVudGlvbiB0byBpcyBkZXNjcmliZWQKKyAgICAvLyBhYm92ZS4KKworICAgIC8vICAgbG9jYWwgZmllbGRzIChZRUFSLCBNT05USCwgREFURSwgSE9VUiwgTUlOVVRFLCBldGMuKQorICAgIC8vICAgICAgICAgICB8CisgICAgLy8gICAgICAgICAgIHwgVXNpbmcgQ2FsZW5kYXItc3BlY2lmaWMgYWxnb3JpdGhtCisgICAgLy8gICAgICAgICAgIFYKKyAgICAvLyAgIGxvY2FsIHN0YW5kYXJkIG1pbGxpcworICAgIC8vICAgICAgICAgICB8CisgICAgLy8gICAgICAgICAgIHwgVXNpbmcgVGltZVpvbmUgb3IgdXNlci1zZXQgWk9ORV9PRkZTRVQgLyBEU1RfT0ZGU0VUCisgICAgLy8gICAgICAgICAgIFYKKyAgICAvLyAgIFVUQyBtaWxsaXMgKGluIHRpbWUgZGF0YSBtZW1iZXIpCisKKyAgICAvLyBJZiB0aGUgdXNlciBzZXRzIHRoZSBVVEMgbWlsbGlzIHVzaW5nIHNldFRpbWUoKSwgdGhlIGRhdGEgZmxvdyBpcyBhcworICAgIC8vIGZvbGxvd3MuICBUaGlzIGlzIGltcGxlbWVudGVkIGJ5IHRoZSBDYWxlbmRhciBzdWJjbGFzcydzIGNvbXB1dGVGaWVsZHMoKQorICAgIC8vIG1ldGhvZC4KKworICAgIC8vICAgVVRDIG1pbGxpcyAoaW4gdGltZSBkYXRhIG1lbWJlcikKKyAgICAvLyAgICAgICAgICAgfAorICAgIC8vICAgICAgICAgICB8IFVzaW5nIFRpbWVab25lIGdldE9mZnNldCgpCisgICAgLy8gICAgICAgICAgIFYKKyAgICAvLyAgIGxvY2FsIHN0YW5kYXJkIG1pbGxpcworICAgIC8vICAgICAgICAgICB8CisgICAgLy8gICAgICAgICAgIHwgVXNpbmcgQ2FsZW5kYXItc3BlY2lmaWMgYWxnb3JpdGhtCisgICAgLy8gICAgICAgICAgIFYKKyAgICAvLyAgIGxvY2FsIGZpZWxkcyAoWUVBUiwgTU9OVEgsIERBVEUsIEhPVVIsIE1JTlVURSwgZXRjLikKKworICAgIC8vIEluIGdlbmVyYWwsIGEgcm91bmQgdHJpcCBmcm9tIGZpZWxkcywgdGhyb3VnaCBsb2NhbCBhbmQgVVRDIG1pbGxpcywgYW5kCisgICAgLy8gYmFjayBvdXQgdG8gZmllbGRzIGlzIG1hZGUgd2hlbiBuZWNlc3NhcnkuICBUaGlzIGlzIGltcGxlbWVudGVkIGJ5IHRoZQorICAgIC8vIGNvbXBsZXRlKCkgbWV0aG9kLiAgUmVzb2x2aW5nIGEgcGFydGlhbCBzZXQgb2YgZmllbGRzIGludG8gYSBVVEMgbWlsbGlzCisgICAgLy8gdmFsdWUgYWxsb3dzIGFsbCByZW1haW5pbmcgZmllbGRzIHRvIGJlIGdlbmVyYXRlZCBmcm9tIHRoYXQgdmFsdWUuICBJZgorICAgIC8vIHRoZSBDYWxlbmRhciBpcyBsZW5pZW50LCB0aGUgZmllbGRzIGFyZSBhbHNvIHJlbm9ybWFsaXplZCB0byBzdGFuZGFyZAorICAgIC8vIHJhbmdlcyB3aGVuIHRoZXkgYXJlIHJlZ2VuZXJhdGVkLgorCisgICAgLyoqCisgICAgICogRmllbGQgbnVtYmVyIGZvciA8Y29kZT5nZXQ8L2NvZGU+IGFuZCA8Y29kZT5zZXQ8L2NvZGU+IGluZGljYXRpbmcgdGhlCisgICAgICogZXJhLCBlLmcuLCBBRCBvciBCQyBpbiB0aGUgSnVsaWFuIGNhbGVuZGFyLiBUaGlzIGlzIGEgY2FsZW5kYXItc3BlY2lmaWMKKyAgICAgKiB2YWx1ZTsgc2VlIHN1YmNsYXNzIGRvY3VtZW50YXRpb24uCisgICAgICogQHNlZSBHcmVnb3JpYW5DYWxlbmRhciNBRAorICAgICAqIEBzZWUgR3JlZ29yaWFuQ2FsZW5kYXIjQkMKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBFUkEgPSAwOworCisgICAgLyoqCisgICAgICogRmllbGQgbnVtYmVyIGZvciA8Y29kZT5nZXQ8L2NvZGU+IGFuZCA8Y29kZT5zZXQ8L2NvZGU+IGluZGljYXRpbmcgdGhlCisgICAgICogeWVhci4gVGhpcyBpcyBhIGNhbGVuZGFyLXNwZWNpZmljIHZhbHVlOyBzZWUgc3ViY2xhc3MgZG9jdW1lbnRhdGlvbi4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBZRUFSID0gMTsKKworICAgIC8qKgorICAgICAqIEZpZWxkIG51bWJlciBmb3IgPGNvZGU+Z2V0PC9jb2RlPiBhbmQgPGNvZGU+c2V0PC9jb2RlPiBpbmRpY2F0aW5nIHRoZQorICAgICAqIG1vbnRoLiBUaGlzIGlzIGEgY2FsZW5kYXItc3BlY2lmaWMgdmFsdWUuIFRoZSBmaXJzdCBtb250aCBvZiB0aGUgeWVhciBpcworICAgICAqIDxjb2RlPkpBTlVBUlk8L2NvZGU+OyB0aGUgbGFzdCBkZXBlbmRzIG9uIHRoZSBudW1iZXIgb2YgbW9udGhzIGluIGEgeWVhci4KKyAgICAgKiBAc2VlICNKQU5VQVJZCisgICAgICogQHNlZSAjRkVCUlVBUlkKKyAgICAgKiBAc2VlICNNQVJDSAorICAgICAqIEBzZWUgI0FQUklMCisgICAgICogQHNlZSAjTUFZCisgICAgICogQHNlZSAjSlVORQorICAgICAqIEBzZWUgI0pVTFkKKyAgICAgKiBAc2VlICNBVUdVU1QKKyAgICAgKiBAc2VlICNTRVBURU1CRVIKKyAgICAgKiBAc2VlICNPQ1RPQkVSCisgICAgICogQHNlZSAjTk9WRU1CRVIKKyAgICAgKiBAc2VlICNERUNFTUJFUgorICAgICAqIEBzZWUgI1VOREVDSU1CRVIKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBNT05USCA9IDI7CisKKyAgICAvKioKKyAgICAgKiBGaWVsZCBudW1iZXIgZm9yIDxjb2RlPmdldDwvY29kZT4gYW5kIDxjb2RlPnNldDwvY29kZT4gaW5kaWNhdGluZyB0aGUKKyAgICAgKiB3ZWVrIG51bWJlciB3aXRoaW4gdGhlIGN1cnJlbnQgeWVhci4gIFRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLCBhcworICAgICAqIGRlZmluZWQgYnkgPGNvZGU+Z2V0Rmlyc3REYXlPZldlZWsoKTwvY29kZT4gYW5kCisgICAgICogPGNvZGU+Z2V0TWluaW1hbERheXNJbkZpcnN0V2VlaygpPC9jb2RlPiwgaGFzIHZhbHVlIDEuICBTdWJjbGFzc2VzIGRlZmluZQorICAgICAqIHRoZSB2YWx1ZSBvZiA8Y29kZT5XRUVLX09GX1lFQVI8L2NvZGU+IGZvciBkYXlzIGJlZm9yZSB0aGUgZmlyc3Qgd2VlayBvZgorICAgICAqIHRoZSB5ZWFyLgorICAgICAqIEBzZWUgI2dldEZpcnN0RGF5T2ZXZWVrCisgICAgICogQHNlZSAjZ2V0TWluaW1hbERheXNJbkZpcnN0V2VlaworICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IFdFRUtfT0ZfWUVBUiA9IDM7CisKKyAgICAvKioKKyAgICAgKiBGaWVsZCBudW1iZXIgZm9yIDxjb2RlPmdldDwvY29kZT4gYW5kIDxjb2RlPnNldDwvY29kZT4gaW5kaWNhdGluZyB0aGUKKyAgICAgKiB3ZWVrIG51bWJlciB3aXRoaW4gdGhlIGN1cnJlbnQgbW9udGguICBUaGUgZmlyc3Qgd2VlayBvZiB0aGUgbW9udGgsIGFzCisgICAgICogZGVmaW5lZCBieSA8Y29kZT5nZXRGaXJzdERheU9mV2VlaygpPC9jb2RlPiBhbmQKKyAgICAgKiA8Y29kZT5nZXRNaW5pbWFsRGF5c0luRmlyc3RXZWVrKCk8L2NvZGU+LCBoYXMgdmFsdWUgMS4gIFN1YmNsYXNzZXMgZGVmaW5lCisgICAgICogdGhlIHZhbHVlIG9mIDxjb2RlPldFRUtfT0ZfTU9OVEg8L2NvZGU+IGZvciBkYXlzIGJlZm9yZSB0aGUgZmlyc3Qgd2VlayBvZgorICAgICAqIHRoZSBtb250aC4KKyAgICAgKiBAc2VlICNnZXRGaXJzdERheU9mV2VlaworICAgICAqIEBzZWUgI2dldE1pbmltYWxEYXlzSW5GaXJzdFdlZWsKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBXRUVLX09GX01PTlRIID0gNDsKKworICAgIC8qKgorICAgICAqIEZpZWxkIG51bWJlciBmb3IgPGNvZGU+Z2V0PC9jb2RlPiBhbmQgPGNvZGU+c2V0PC9jb2RlPiBpbmRpY2F0aW5nIHRoZQorICAgICAqIGRheSBvZiB0aGUgbW9udGguIFRoaXMgaXMgYSBzeW5vbnltIGZvciA8Y29kZT5EQVlfT0ZfTU9OVEg8L2NvZGU+LgorICAgICAqIFRoZSBmaXJzdCBkYXkgb2YgdGhlIG1vbnRoIGhhcyB2YWx1ZSAxLgorICAgICAqIEBzZWUgI0RBWV9PRl9NT05USAorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IERBVEUgPSA1OworCisgICAgLyoqCisgICAgICogRmllbGQgbnVtYmVyIGZvciA8Y29kZT5nZXQ8L2NvZGU+IGFuZCA8Y29kZT5zZXQ8L2NvZGU+IGluZGljYXRpbmcgdGhlCisgICAgICogZGF5IG9mIHRoZSBtb250aC4gVGhpcyBpcyBhIHN5bm9ueW0gZm9yIDxjb2RlPkRBVEU8L2NvZGU+LgorICAgICAqIFRoZSBmaXJzdCBkYXkgb2YgdGhlIG1vbnRoIGhhcyB2YWx1ZSAxLgorICAgICAqIEBzZWUgI0RBVEUKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBEQVlfT0ZfTU9OVEggPSA1OworCisgICAgLyoqCisgICAgICogRmllbGQgbnVtYmVyIGZvciA8Y29kZT5nZXQ8L2NvZGU+IGFuZCA8Y29kZT5zZXQ8L2NvZGU+IGluZGljYXRpbmcgdGhlIGRheQorICAgICAqIG51bWJlciB3aXRoaW4gdGhlIGN1cnJlbnQgeWVhci4gIFRoZSBmaXJzdCBkYXkgb2YgdGhlIHllYXIgaGFzIHZhbHVlIDEuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgREFZX09GX1lFQVIgPSA2OworCisgICAgLyoqCisgICAgICogRmllbGQgbnVtYmVyIGZvciA8Y29kZT5nZXQ8L2NvZGU+IGFuZCA8Y29kZT5zZXQ8L2NvZGU+IGluZGljYXRpbmcgdGhlIGRheQorICAgICAqIG9mIHRoZSB3ZWVrLiAgVGhpcyBmaWVsZCB0YWtlcyB2YWx1ZXMgPGNvZGU+U1VOREFZPC9jb2RlPiwKKyAgICAgKiA8Y29kZT5NT05EQVk8L2NvZGU+LCA8Y29kZT5UVUVTREFZPC9jb2RlPiwgPGNvZGU+V0VETkVTREFZPC9jb2RlPiwKKyAgICAgKiA8Y29kZT5USFVSU0RBWTwvY29kZT4sIDxjb2RlPkZSSURBWTwvY29kZT4sIGFuZCA8Y29kZT5TQVRVUkRBWTwvY29kZT4uCisgICAgICogQHNlZSAjU1VOREFZCisgICAgICogQHNlZSAjTU9OREFZCisgICAgICogQHNlZSAjVFVFU0RBWQorICAgICAqIEBzZWUgI1dFRE5FU0RBWQorICAgICAqIEBzZWUgI1RIVVJTREFZCisgICAgICogQHNlZSAjRlJJREFZCisgICAgICogQHNlZSAjU0FUVVJEQVkKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBEQVlfT0ZfV0VFSyA9IDc7CisKKyAgICAvKioKKyAgICAgKiBGaWVsZCBudW1iZXIgZm9yIDxjb2RlPmdldDwvY29kZT4gYW5kIDxjb2RlPnNldDwvY29kZT4gaW5kaWNhdGluZyB0aGUKKyAgICAgKiBvcmRpbmFsIG51bWJlciBvZiB0aGUgZGF5IG9mIHRoZSB3ZWVrIHdpdGhpbiB0aGUgY3VycmVudCBtb250aC4gVG9nZXRoZXIKKyAgICAgKiB3aXRoIHRoZSA8Y29kZT5EQVlfT0ZfV0VFSzwvY29kZT4gZmllbGQsIHRoaXMgdW5pcXVlbHkgc3BlY2lmaWVzIGEgZGF5CisgICAgICogd2l0aGluIGEgbW9udGguICBVbmxpa2UgPGNvZGU+V0VFS19PRl9NT05USDwvY29kZT4gYW5kCisgICAgICogPGNvZGU+V0VFS19PRl9ZRUFSPC9jb2RlPiwgdGhpcyBmaWVsZCdzIHZhbHVlIGRvZXMgPGVtPm5vdDwvZW0+IGRlcGVuZCBvbgorICAgICAqIDxjb2RlPmdldEZpcnN0RGF5T2ZXZWVrKCk8L2NvZGU+IG9yCisgICAgICogPGNvZGU+Z2V0TWluaW1hbERheXNJbkZpcnN0V2VlaygpPC9jb2RlPi4gIDxjb2RlPkRBWV9PRl9NT05USCAxPC9jb2RlPgorICAgICAqIHRocm91Z2ggPGNvZGU+NzwvY29kZT4gYWx3YXlzIGNvcnJlc3BvbmQgdG8gPGNvZGU+REFZX09GX1dFRUtfSU5fTU9OVEgKKyAgICAgKiAxPC9jb2RlPjsgPGNvZGU+ODwvY29kZT4gdGhyb3VnaCA8Y29kZT4xNTwvY29kZT4gY29ycmVzcG9uZCB0bworICAgICAqIDxjb2RlPkRBWV9PRl9XRUVLX0lOX01PTlRIIDI8L2NvZGU+LCBhbmQgc28gb24uCisgICAgICogPGNvZGU+REFZX09GX1dFRUtfSU5fTU9OVEggMDwvY29kZT4gaW5kaWNhdGVzIHRoZSB3ZWVrIGJlZm9yZQorICAgICAqIDxjb2RlPkRBWV9PRl9XRUVLX0lOX01PTlRIIDE8L2NvZGU+LiAgTmVnYXRpdmUgdmFsdWVzIGNvdW50IGJhY2sgZnJvbSB0aGUKKyAgICAgKiBlbmQgb2YgdGhlIG1vbnRoLCBzbyB0aGUgbGFzdCBTdW5kYXkgb2YgYSBtb250aCBpcyBzcGVjaWZpZWQgYXMKKyAgICAgKiA8Y29kZT5EQVlfT0ZfV0VFSyA9IFNVTkRBWSwgREFZX09GX1dFRUtfSU5fTU9OVEggPSAtMTwvY29kZT4uICBCZWNhdXNlCisgICAgICogbmVnYXRpdmUgdmFsdWVzIGNvdW50IGJhY2t3YXJkIHRoZXkgd2lsbCB1c3VhbGx5IGJlIGFsaWduZWQgZGlmZmVyZW50bHkKKyAgICAgKiB3aXRoaW4gdGhlIG1vbnRoIHRoYW4gcG9zaXRpdmUgdmFsdWVzLiAgRm9yIGV4YW1wbGUsIGlmIGEgbW9udGggaGFzIDMxCisgICAgICogZGF5cywgPGNvZGU+REFZX09GX1dFRUtfSU5fTU9OVEggLTE8L2NvZGU+IHdpbGwgb3ZlcmxhcAorICAgICAqIDxjb2RlPkRBWV9PRl9XRUVLX0lOX01PTlRIIDU8L2NvZGU+IGFuZCB0aGUgZW5kIG9mIDxjb2RlPjQ8L2NvZGU+LgorICAgICAqIEBzZWUgI0RBWV9PRl9XRUVLCisgICAgICogQHNlZSAjV0VFS19PRl9NT05USAorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IERBWV9PRl9XRUVLX0lOX01PTlRIID0gODsKKworICAgIC8qKgorICAgICAqIEZpZWxkIG51bWJlciBmb3IgPGNvZGU+Z2V0PC9jb2RlPiBhbmQgPGNvZGU+c2V0PC9jb2RlPiBpbmRpY2F0aW5nCisgICAgICogd2hldGhlciB0aGUgPGNvZGU+SE9VUjwvY29kZT4gaXMgYmVmb3JlIG9yIGFmdGVyIG5vb24uCisgICAgICogRS5nLiwgYXQgMTA6MDQ6MTUuMjUwIFBNIHRoZSA8Y29kZT5BTV9QTTwvY29kZT4gaXMgPGNvZGU+UE08L2NvZGU+LgorICAgICAqIEBzZWUgI0FNCisgICAgICogQHNlZSAjUE0KKyAgICAgKiBAc2VlICNIT1VSCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgQU1fUE0gPSA5OworCisgICAgLyoqCisgICAgICogRmllbGQgbnVtYmVyIGZvciA8Y29kZT5nZXQ8L2NvZGU+IGFuZCA8Y29kZT5zZXQ8L2NvZGU+IGluZGljYXRpbmcgdGhlCisgICAgICogaG91ciBvZiB0aGUgbW9ybmluZyBvciBhZnRlcm5vb24uIDxjb2RlPkhPVVI8L2NvZGU+IGlzIHVzZWQgZm9yIHRoZSAxMi1ob3VyCisgICAgICogY2xvY2suCisgICAgICogRS5nLiwgYXQgMTA6MDQ6MTUuMjUwIFBNIHRoZSA8Y29kZT5IT1VSPC9jb2RlPiBpcyAxMC4KKyAgICAgKiBAc2VlICNBTV9QTQorICAgICAqIEBzZWUgI0hPVVJfT0ZfREFZCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgSE9VUiA9IDEwOworCisgICAgLyoqCisgICAgICogRmllbGQgbnVtYmVyIGZvciA8Y29kZT5nZXQ8L2NvZGU+IGFuZCA8Y29kZT5zZXQ8L2NvZGU+IGluZGljYXRpbmcgdGhlCisgICAgICogaG91ciBvZiB0aGUgZGF5LiA8Y29kZT5IT1VSX09GX0RBWTwvY29kZT4gaXMgdXNlZCBmb3IgdGhlIDI0LWhvdXIgY2xvY2suCisgICAgICogRS5nLiwgYXQgMTA6MDQ6MTUuMjUwIFBNIHRoZSA8Y29kZT5IT1VSX09GX0RBWTwvY29kZT4gaXMgMjIuCisgICAgICogQHNlZSAjSE9VUgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IEhPVVJfT0ZfREFZID0gMTE7CisKKyAgICAvKioKKyAgICAgKiBGaWVsZCBudW1iZXIgZm9yIDxjb2RlPmdldDwvY29kZT4gYW5kIDxjb2RlPnNldDwvY29kZT4gaW5kaWNhdGluZyB0aGUKKyAgICAgKiBtaW51dGUgd2l0aGluIHRoZSBob3VyLgorICAgICAqIEUuZy4sIGF0IDEwOjA0OjE1LjI1MCBQTSB0aGUgPGNvZGU+TUlOVVRFPC9jb2RlPiBpcyA0LgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IE1JTlVURSA9IDEyOworCisgICAgLyoqCisgICAgICogRmllbGQgbnVtYmVyIGZvciA8Y29kZT5nZXQ8L2NvZGU+IGFuZCA8Y29kZT5zZXQ8L2NvZGU+IGluZGljYXRpbmcgdGhlCisgICAgICogc2Vjb25kIHdpdGhpbiB0aGUgbWludXRlLgorICAgICAqIEUuZy4sIGF0IDEwOjA0OjE1LjI1MCBQTSB0aGUgPGNvZGU+U0VDT05EPC9jb2RlPiBpcyAxNS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBTRUNPTkQgPSAxMzsKKworICAgIC8qKgorICAgICAqIEZpZWxkIG51bWJlciBmb3IgPGNvZGU+Z2V0PC9jb2RlPiBhbmQgPGNvZGU+c2V0PC9jb2RlPiBpbmRpY2F0aW5nIHRoZQorICAgICAqIG1pbGxpc2Vjb25kIHdpdGhpbiB0aGUgc2Vjb25kLgorICAgICAqIEUuZy4sIGF0IDEwOjA0OjE1LjI1MCBQTSB0aGUgPGNvZGU+TUlMTElTRUNPTkQ8L2NvZGU+IGlzIDI1MC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBNSUxMSVNFQ09ORCA9IDE0OworCisgICAgLyoqCisgICAgICogRmllbGQgbnVtYmVyIGZvciA8Y29kZT5nZXQ8L2NvZGU+IGFuZCA8Y29kZT5zZXQ8L2NvZGU+IGluZGljYXRpbmcgdGhlCisgICAgICogcmF3IG9mZnNldCBmcm9tIEdNVCBpbiBtaWxsaXNlY29uZHMuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgWk9ORV9PRkZTRVQgPSAxNTsKKworICAgIC8qKgorICAgICAqIEZpZWxkIG51bWJlciBmb3IgPGNvZGU+Z2V0PC9jb2RlPiBhbmQgPGNvZGU+c2V0PC9jb2RlPiBpbmRpY2F0aW5nIHRoZQorICAgICAqIGRheWxpZ2h0IHNhdmluZ3Mgb2Zmc2V0IGluIG1pbGxpc2Vjb25kcy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBEU1RfT0ZGU0VUID0gMTY7CisKKyAgICAvKioKKyAgICAgKiBGaWVsZCBudW1iZXIgZm9yIDxjb2RlPmdldCgpPC9jb2RlPiBhbmQgPGNvZGU+c2V0KCk8L2NvZGU+CisgICAgICogaW5kaWNhdGluZyB0aGUgZXh0ZW5kZWQgeWVhciBjb3JyZXNwb25kaW5nIHRvIHRoZQorICAgICAqIDxjb2RlPldFRUtfT0ZfWUVBUjwvY29kZT4gZmllbGQuICBUaGlzIG1heSBiZSBvbmUgZ3JlYXRlciBvciBsZXNzCisgICAgICogdGhhbiB0aGUgdmFsdWUgb2YgPGNvZGU+RVhURU5ERURfWUVBUjwvY29kZT4uCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgWUVBUl9XT1kgPSAxNzsKKworICAgIC8qKgorICAgICAqIEZpZWxkIG51bWJlciBmb3IgPGNvZGU+Z2V0KCk8L2NvZGU+IGFuZCA8Y29kZT5zZXQoKTwvY29kZT4KKyAgICAgKiBpbmRpY2F0aW5nIHRoZSBsb2NhbGl6ZWQgZGF5IG9mIHdlZWsuICBUaGlzIHdpbGwgYmUgYSB2YWx1ZSBmcm9tIDEKKyAgICAgKiB0byA3IGluY2x1c2l2ZSwgd2l0aCAxIGJlaW5nIHRoZSBsb2NhbGl6ZWQgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERPV19MT0NBTCA9IDE4OworCisgICAgLyoqCisgICAgICogRmllbGQgbnVtYmVyIGZvciA8Y29kZT5nZXQoKTwvY29kZT4gYW5kIDxjb2RlPnNldCgpPC9jb2RlPgorICAgICAqIGluZGljYXRpbmcgdGhlIGV4dGVuZGVkIHllYXIuICBUaGlzIGlzIGEgc2luZ2xlIG51bWJlciBkZXNpZ25hdGluZworICAgICAqIHRoZSB5ZWFyIG9mIHRoaXMgY2FsZW5kYXIgc3lzdGVtLCBlbmNvbXBhc3NpbmcgYWxsIHN1cHJhLXllYXIKKyAgICAgKiBmaWVsZHMuICBGb3IgZXhhbXBsZSwgZm9yIHRoZSBKdWxpYW4gY2FsZW5kYXIgc3lzdGVtLCB5ZWFyIG51bWJlcnMKKyAgICAgKiBhcmUgcG9zaXRpdmUsIHdpdGggYW4gZXJhIG9mIEJDRSBvciBDRS4gIEFuIGV4dGVuZGVkIHllYXIgdmFsdWUgZm9yCisgICAgICogdGhlIEp1bGlhbiBjYWxlbmRhciBzeXN0ZW0gYXNzaWducyBwb3NpdGl2ZSB2YWx1ZXMgdG8gQ0UgeWVhcnMgYW5kCisgICAgICogbmVnYXRpdmUgdmFsdWVzIHRvIEJDRSB5ZWFycywgd2l0aCAxIEJDRSBiZWluZyB5ZWFyIDAuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRVhURU5ERURfWUVBUiA9IDE5OworCisgICAgLyoqCisgICAgICogRmllbGQgbnVtYmVyIGZvciA8Y29kZT5nZXQoKTwvY29kZT4gYW5kIDxjb2RlPnNldCgpPC9jb2RlPgorICAgICAqIGluZGljYXRpbmcgdGhlIG1vZGlmaWVkIEp1bGlhbiBkYXkgbnVtYmVyLiAgVGhpcyBpcyBkaWZmZXJlbnQgZnJvbQorICAgICAqIHRoZSBjb252ZW50aW9uYWwgSnVsaWFuIGRheSBudW1iZXIgaW4gdHdvIHJlZ2FyZHMuICBGaXJzdCwgaXQKKyAgICAgKiBkZW1hcmNhdGVzIGRheXMgYXQgbG9jYWwgem9uZSBtaWRuaWdodCwgcmF0aGVyIHRoYW4gbm9vbiBHTVQuCisgICAgICogU2Vjb25kLCBpdCBpcyBhIGxvY2FsIG51bWJlcjsgdGhhdCBpcywgaXQgZGVwZW5kcyBvbiB0aGUgbG9jYWwgdGltZQorICAgICAqIHpvbmUuICBJdCBjYW4gYmUgdGhvdWdodCBvZiBhcyBhIHNpbmdsZSBudW1iZXIgdGhhdCBlbmNvbXBhc3NlcyBhbGwKKyAgICAgKiB0aGUgZGF0ZS1yZWxhdGVkIGZpZWxkcy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBKVUxJQU5fREFZID0gMjA7CisKKyAgICAvKioKKyAgICAgKiBGaWVsZCBudW1iZXIgZm9yIDxjb2RlPmdldCgpPC9jb2RlPiBhbmQgPGNvZGU+c2V0KCk8L2NvZGU+CisgICAgICogaW5kaWNhdGluZyB0aGUgbWlsbGlzZWNvbmRzIGluIHRoZSBkYXkuICBUaGlzIHJhbmdlcyBmcm9tIDAgdG8KKyAgICAgKiAyMzo1OTo1OS45OTkgKHJlZ2FyZGxlc3Mgb2YgRFNUKS4gIFRoaXMgZmllbGQgYmVoYXZlcworICAgICAqIDxlbT5leGFjdGx5PC9lbT4gbGlrZSBhIGNvbXBvc2l0ZSBvZiBhbGwgdGltZS1yZWxhdGVkIGZpZWxkcywgbm90CisgICAgICogaW5jbHVkaW5nIHRoZSB6b25lIGZpZWxkcy4gIEFzIHN1Y2gsIGl0IGFsc28gcmVmbGVjdHMKKyAgICAgKiBkaXNjb250aW51aXRpZXMgb2YgdGhvc2UgZmllbGRzIG9uIERTVCB0cmFuc2l0aW9uIGRheXMuICBPbiBhIGRheSBvZgorICAgICAqIERTVCBvbnNldCwgaXQgd2lsbCBqdW1wIGZvcndhcmQuICBPbiBhIGRheSBvZiBEU1QgY2Vzc2F0aW9uLCBpdCB3aWxsCisgICAgICoganVtcCBiYWNrd2FyZC4gIFRoaXMgcmVmbGVjdHMgdGhlIGZhY3QgdGhhdCBpcyBtdXN0IGJlIGNvbWJpbmVkIHdpdGgKKyAgICAgKiB0aGUgRFNUX09GRlNFVCBmaWVsZCB0byBvYnRhaW4gYSB1bmlxdWUgbG9jYWwgdGltZSB2YWx1ZS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNSUxMSVNFQ09ORFNfSU5fREFZID0gMjE7CisgICAgCisgICAgLyoqCisgICAgICogVGhlIG51bWJlciBvZiBmaWVsZHMgZGVmaW5lZCBieSB0aGlzIGNsYXNzLiAgU3ViY2xhc3NlcyBtYXkgZGVmaW5lCisgICAgICogYWRkaXRpb24gZmllbGRzIHN0YXJ0aW5nIHdpdGggdGhpcyBudW1iZXIuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgQkFTRV9GSUVMRF9DT1VOVCA9IDIyOworCisgICAgLyoqCisgICAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIGZpZWxkcyBwb3NzaWJsZS4gIFN1YmNsYXNzZXMgbXVzdCBub3QgZGVmaW5lCisgICAgICogbW9yZSB0b3RhbCBmaWVsZHMgdGhhbiB0aGlzIG51bWJlci4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBNQVhfRklFTERfQ09VTlQgPSAzMjsKKworICAgIC8qKgorICAgICAqIFZhbHVlIG9mIHRoZSA8Y29kZT5EQVlfT0ZfV0VFSzwvY29kZT4gZmllbGQgaW5kaWNhdGluZworICAgICAqIFN1bmRheS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBTVU5EQVkgPSAxOworCisgICAgLyoqCisgICAgICogVmFsdWUgb2YgdGhlIDxjb2RlPkRBWV9PRl9XRUVLPC9jb2RlPiBmaWVsZCBpbmRpY2F0aW5nCisgICAgICogTW9uZGF5LgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IE1PTkRBWSA9IDI7CisKKyAgICAvKioKKyAgICAgKiBWYWx1ZSBvZiB0aGUgPGNvZGU+REFZX09GX1dFRUs8L2NvZGU+IGZpZWxkIGluZGljYXRpbmcKKyAgICAgKiBUdWVzZGF5LgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IFRVRVNEQVkgPSAzOworCisgICAgLyoqCisgICAgICogVmFsdWUgb2YgdGhlIDxjb2RlPkRBWV9PRl9XRUVLPC9jb2RlPiBmaWVsZCBpbmRpY2F0aW5nCisgICAgICogV2VkbmVzZGF5LgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IFdFRE5FU0RBWSA9IDQ7CisKKyAgICAvKioKKyAgICAgKiBWYWx1ZSBvZiB0aGUgPGNvZGU+REFZX09GX1dFRUs8L2NvZGU+IGZpZWxkIGluZGljYXRpbmcKKyAgICAgKiBUaHVyc2RheS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBUSFVSU0RBWSA9IDU7CisKKyAgICAvKioKKyAgICAgKiBWYWx1ZSBvZiB0aGUgPGNvZGU+REFZX09GX1dFRUs8L2NvZGU+IGZpZWxkIGluZGljYXRpbmcKKyAgICAgKiBGcmlkYXkuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgRlJJREFZID0gNjsKKworICAgIC8qKgorICAgICAqIFZhbHVlIG9mIHRoZSA8Y29kZT5EQVlfT0ZfV0VFSzwvY29kZT4gZmllbGQgaW5kaWNhdGluZworICAgICAqIFNhdHVyZGF5LgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IFNBVFVSREFZID0gNzsKKworICAgIC8qKgorICAgICAqIFZhbHVlIG9mIHRoZSA8Y29kZT5NT05USDwvY29kZT4gZmllbGQgaW5kaWNhdGluZyB0aGUKKyAgICAgKiBmaXJzdCBtb250aCBvZiB0aGUgeWVhci4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBKQU5VQVJZID0gMDsKKworICAgIC8qKgorICAgICAqIFZhbHVlIG9mIHRoZSA8Y29kZT5NT05USDwvY29kZT4gZmllbGQgaW5kaWNhdGluZyB0aGUKKyAgICAgKiBzZWNvbmQgbW9udGggb2YgdGhlIHllYXIuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgRkVCUlVBUlkgPSAxOworCisgICAgLyoqCisgICAgICogVmFsdWUgb2YgdGhlIDxjb2RlPk1PTlRIPC9jb2RlPiBmaWVsZCBpbmRpY2F0aW5nIHRoZQorICAgICAqIHRoaXJkIG1vbnRoIG9mIHRoZSB5ZWFyLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IE1BUkNIID0gMjsKKworICAgIC8qKgorICAgICAqIFZhbHVlIG9mIHRoZSA8Y29kZT5NT05USDwvY29kZT4gZmllbGQgaW5kaWNhdGluZyB0aGUKKyAgICAgKiBmb3VydGggbW9udGggb2YgdGhlIHllYXIuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgQVBSSUwgPSAzOworCisgICAgLyoqCisgICAgICogVmFsdWUgb2YgdGhlIDxjb2RlPk1PTlRIPC9jb2RlPiBmaWVsZCBpbmRpY2F0aW5nIHRoZQorICAgICAqIGZpZnRoIG1vbnRoIG9mIHRoZSB5ZWFyLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IE1BWSA9IDQ7CisKKyAgICAvKioKKyAgICAgKiBWYWx1ZSBvZiB0aGUgPGNvZGU+TU9OVEg8L2NvZGU+IGZpZWxkIGluZGljYXRpbmcgdGhlCisgICAgICogc2l4dGggbW9udGggb2YgdGhlIHllYXIuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgSlVORSA9IDU7CisKKyAgICAvKioKKyAgICAgKiBWYWx1ZSBvZiB0aGUgPGNvZGU+TU9OVEg8L2NvZGU+IGZpZWxkIGluZGljYXRpbmcgdGhlCisgICAgICogc2V2ZW50aCBtb250aCBvZiB0aGUgeWVhci4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBKVUxZID0gNjsKKworICAgIC8qKgorICAgICAqIFZhbHVlIG9mIHRoZSA8Y29kZT5NT05USDwvY29kZT4gZmllbGQgaW5kaWNhdGluZyB0aGUKKyAgICAgKiBlaWdodGggbW9udGggb2YgdGhlIHllYXIuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgQVVHVVNUID0gNzsKKworICAgIC8qKgorICAgICAqIFZhbHVlIG9mIHRoZSA8Y29kZT5NT05USDwvY29kZT4gZmllbGQgaW5kaWNhdGluZyB0aGUKKyAgICAgKiBuaW50aCBtb250aCBvZiB0aGUgeWVhci4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBTRVBURU1CRVIgPSA4OworCisgICAgLyoqCisgICAgICogVmFsdWUgb2YgdGhlIDxjb2RlPk1PTlRIPC9jb2RlPiBmaWVsZCBpbmRpY2F0aW5nIHRoZQorICAgICAqIHRlbnRoIG1vbnRoIG9mIHRoZSB5ZWFyLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IE9DVE9CRVIgPSA5OworCisgICAgLyoqCisgICAgICogVmFsdWUgb2YgdGhlIDxjb2RlPk1PTlRIPC9jb2RlPiBmaWVsZCBpbmRpY2F0aW5nIHRoZQorICAgICAqIGVsZXZlbnRoIG1vbnRoIG9mIHRoZSB5ZWFyLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IE5PVkVNQkVSID0gMTA7CisKKyAgICAvKioKKyAgICAgKiBWYWx1ZSBvZiB0aGUgPGNvZGU+TU9OVEg8L2NvZGU+IGZpZWxkIGluZGljYXRpbmcgdGhlCisgICAgICogdHdlbGZ0aCBtb250aCBvZiB0aGUgeWVhci4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBERUNFTUJFUiA9IDExOworCisgICAgLyoqCisgICAgICogVmFsdWUgb2YgdGhlIDxjb2RlPk1PTlRIPC9jb2RlPiBmaWVsZCBpbmRpY2F0aW5nIHRoZQorICAgICAqIHRoaXJ0ZWVudGggbW9udGggb2YgdGhlIHllYXIuIEFsdGhvdWdoIDxjb2RlPkdyZWdvcmlhbkNhbGVuZGFyPC9jb2RlPgorICAgICAqIGRvZXMgbm90IHVzZSB0aGlzIHZhbHVlLCBsdW5hciBjYWxlbmRhcnMgZG8uCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgVU5ERUNJTUJFUiA9IDEyOworCisgICAgLyoqCisgICAgICogVmFsdWUgb2YgdGhlIDxjb2RlPkFNX1BNPC9jb2RlPiBmaWVsZCBpbmRpY2F0aW5nIHRoZQorICAgICAqIHBlcmlvZCBvZiB0aGUgZGF5IGZyb20gbWlkbmlnaHQgdG8ganVzdCBiZWZvcmUgbm9vbi4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBBTSA9IDA7CisKKyAgICAvKioKKyAgICAgKiBWYWx1ZSBvZiB0aGUgPGNvZGU+QU1fUE08L2NvZGU+IGZpZWxkIGluZGljYXRpbmcgdGhlCisgICAgICogcGVyaW9kIG9mIHRoZSBkYXkgZnJvbSBub29uIHRvIGp1c3QgYmVmb3JlIG1pZG5pZ2h0LgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IFBNID0gMTsKKworICAgIC8qKgorICAgICAqIFZhbHVlIHJldHVybmVkIGJ5IGdldERheU9mV2Vla1R5cGUoaW50IGRheU9mV2VlaykgdG8gaW5kaWNhdGUgYQorICAgICAqIHdlZWtkYXkuCisgICAgICogQHNlZSAjV0VFS0VORAorICAgICAqIEBzZWUgI1dFRUtFTkRfT05TRVQKKyAgICAgKiBAc2VlICNXRUVLRU5EX0NFQVNFCisgICAgICogQHNlZSAjZ2V0RGF5T2ZXZWVrVHlwZQorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFdFRUtEQVkgPSAwOworCisgICAgLyoqCisgICAgICogVmFsdWUgcmV0dXJuZWQgYnkgZ2V0RGF5T2ZXZWVrVHlwZShpbnQgZGF5T2ZXZWVrKSB0byBpbmRpY2F0ZSBhCisgICAgICogd2Vla2VuZCBkYXkuCisgICAgICogQHNlZSAjV0VFS0RBWQorICAgICAqIEBzZWUgI1dFRUtFTkRfT05TRVQKKyAgICAgKiBAc2VlICNXRUVLRU5EX0NFQVNFCisgICAgICogQHNlZSAjZ2V0RGF5T2ZXZWVrVHlwZQorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFdFRUtFTkQgPSAxOworCisgICAgLyoqCisgICAgICogVmFsdWUgcmV0dXJuZWQgYnkgZ2V0RGF5T2ZXZWVrVHlwZShpbnQgZGF5T2ZXZWVrKSB0byBpbmRpY2F0ZSBhCisgICAgICogZGF5IHRoYXQgc3RhcnRzIGFzIGEgd2Vla2RheSBhbmQgdHJhbnNpdGlvbnMgdG8gdGhlIHdlZWtlbmQuCisgICAgICogQ2FsbCBnZXRXZWVrZW5kVHJhbnNpdGlvbigpIHRvIGdldCB0aGUgcG9pbnQgb2YgdHJhbnNpdGlvbi4KKyAgICAgKiBAc2VlICNXRUVLREFZCisgICAgICogQHNlZSAjV0VFS0VORAorICAgICAqIEBzZWUgI1dFRUtFTkRfQ0VBU0UKKyAgICAgKiBAc2VlICNnZXREYXlPZldlZWtUeXBlCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgV0VFS0VORF9PTlNFVCA9IDI7CisKKyAgICAvKioKKyAgICAgKiBWYWx1ZSByZXR1cm5lZCBieSBnZXREYXlPZldlZWtUeXBlKGludCBkYXlPZldlZWspIHRvIGluZGljYXRlIGEKKyAgICAgKiBkYXkgdGhhdCBzdGFydHMgYXMgdGhlIHdlZWtlbmQgYW5kIHRyYW5zaXRpb25zIHRvIGEgd2Vla2RheS4KKyAgICAgKiBDYWxsIGdldFdlZWtlbmRUcmFuc2l0aW9uKCkgdG8gZ2V0IHRoZSBwb2ludCBvZiB0cmFuc2l0aW9uLgorICAgICAqIEBzZWUgI1dFRUtEQVkKKyAgICAgKiBAc2VlICNXRUVLRU5ECisgICAgICogQHNlZSAjV0VFS0VORF9PTlNFVAorICAgICAqIEBzZWUgI2dldERheU9mV2Vla1R5cGUKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBXRUVLRU5EX0NFQVNFID0gMzsKKworICAgIC8qKgorICAgICAqIFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGluIG9uZSBzZWNvbmQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgIE9ORV9TRUNPTkQgPSAxMDAwOworCisgICAgLyoqCisgICAgICogVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaW4gb25lIG1pbnV0ZS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCAgT05FX01JTlVURSA9IDYwKk9ORV9TRUNPTkQ7CisKKyAgICAvKioKKyAgICAgKiBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBpbiBvbmUgaG91ci4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCAgT05FX0hPVVIgICA9IDYwKk9ORV9NSU5VVEU7CisKKyAgICAvKioKKyAgICAgKiBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBpbiBvbmUgZGF5LiAgQWx0aG91Z2ggT05FX0RBWSBhbmQKKyAgICAgKiBPTkVfV0VFSyBjYW4gZml0IGludG8gaW50cywgdGhleSBtdXN0IGJlIGxvbmdzIGluIG9yZGVyIHRvIHByZXZlbnQKKyAgICAgKiBhcml0aG1ldGljIG92ZXJmbG93IHdoZW4gcGVyZm9ybWluZyAoYnVnIDQxNzM1MTYpLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgbG9uZyBPTkVfREFZICAgID0gMjQqT05FX0hPVVI7CisKKyAgICAvKioKKyAgICAgKiBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBpbiBvbmUgd2Vlay4gIEFsdGhvdWdoIE9ORV9EQVkgYW5kCisgICAgICogT05FX1dFRUsgY2FuIGZpdCBpbnRvIGludHMsIHRoZXkgbXVzdCBiZSBsb25ncyBpbiBvcmRlciB0byBwcmV2ZW50CisgICAgICogYXJpdGhtZXRpYyBvdmVyZmxvdyB3aGVuIHBlcmZvcm1pbmcgKGJ1ZyA0MTczNTE2KS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGxvbmcgT05FX1dFRUsgICA9IDcqT05FX0RBWTsKKworICAgIC8qKgorICAgICAqIFRoZSBKdWxpYW4gZGF5IG9mIHRoZSBHcmVnb3JpYW4gZXBvY2gsIHRoYXQgaXMsIEphbnVhcnkgMSwgMSBvbiB0aGUKKyAgICAgKiBHcmVnb3JpYW4gY2FsZW5kYXIuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgSkFOXzFfMV9KVUxJQU5fREFZID0gMTcyMTQyNjsKKworICAgIC8qKgorICAgICAqIFRoZSBKdWxpYW4gZGF5IG9mIHRoZSBlcG9jaCwgdGhhdCBpcywgSmFudWFyeSAxLCAxOTcwIG9uIHRoZQorICAgICAqIEdyZWdvcmlhbiBjYWxlbmRhci4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBFUE9DSF9KVUxJQU5fREFZICAgPSAyNDQwNTg4OworCisgICAgLyoqCisgICAgICogVGhlIG1pbmltdW0gc3VwcG9ydGVkIEp1bGlhbiBkYXkuICBUaGlzIHZhbHVlIGlzIGVxdWl2YWxlbnQgdG8KKyAgICAgKiA8Y29kZT5NSU5fTUlMTElTPC9jb2RlPiBhbmQgPGNvZGU+TUlOX0RBVEU8L2NvZGU+LgorICAgICAqIEBzZWUgI0pVTElBTl9EQVkKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBNSU5fSlVMSUFOID0gLTB4N0YwMDAwMDA7CisKKyAgICAvKioKKyAgICAgKiBUaGUgbWluaW11bSBzdXBwb3J0ZWQgZXBvY2ggbWlsbGlzZWNvbmRzLiAgVGhpcyB2YWx1ZSBpcyBlcXVpdmFsZW50CisgICAgICogdG8gPGNvZGU+TUlOX0pVTElBTjwvY29kZT4gYW5kIDxjb2RlPk1JTl9EQVRFPC9jb2RlPi4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGxvbmcgTUlOX01JTExJUyA9IC0xODQzMDM5MDI1MjgwMDAwMDBMOworCisgICAgLy8gR2V0IGFyb3VuZCBidWcgaW4gamlrZXMgMS4xMiBmb3Igbm93LiAgTGF0ZXIsIHVzZToKKyAgICAvL3Byb3RlY3RlZCBzdGF0aWMgZmluYWwgbG9uZyBNSU5fTUlMTElTID0gKE1JTl9KVUxJQU4gLSBFUE9DSF9KVUxJQU5fREFZKSAqIE9ORV9EQVk7CisKKyAgICAvKioKKyAgICAgKiBUaGUgbWluaW11bSBzdXBwb3J0ZWQgPGNvZGU+RGF0ZTwvY29kZT4uICBUaGlzIHZhbHVlIGlzIGVxdWl2YWxlbnQKKyAgICAgKiB0byA8Y29kZT5NSU5fSlVMSUFOPC9jb2RlPiBhbmQgPGNvZGU+TUlOX01JTExJUzwvY29kZT4uCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBEYXRlIE1JTl9EQVRFID0gbmV3IERhdGUoTUlOX01JTExJUyk7CisKKyAgICAvKioKKyAgICAgKiBUaGUgbWF4aW11bSBzdXBwb3J0ZWQgSnVsaWFuIGRheS4gIFRoaXMgdmFsdWUgaXMgZXF1aXZhbGVudCB0bworICAgICAqIDxjb2RlPk1BWF9NSUxMSVM8L2NvZGU+IGFuZCA8Y29kZT5NQVhfREFURTwvY29kZT4uCisgICAgICogQHNlZSAjSlVMSUFOX0RBWQorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IE1BWF9KVUxJQU4gPSArMHg3RjAwMDAwMDsKKworICAgIC8qKgorICAgICAqIFRoZSBtYXhpbXVtIHN1cHBvcnRlZCBlcG9jaCBtaWxsaXNlY29uZHMuICBUaGlzIHZhbHVlIGlzIGVxdWl2YWxlbnQKKyAgICAgKiB0byA8Y29kZT5NQVhfSlVMSUFOPC9jb2RlPiBhbmQgPGNvZGU+TUFYX0RBVEU8L2NvZGU+LgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgbG9uZyBNQVhfTUlMTElTID0gKE1BWF9KVUxJQU4gLSBFUE9DSF9KVUxJQU5fREFZKSAqIE9ORV9EQVk7CisKKyAgICAvKioKKyAgICAgKiBUaGUgbWF4aW11bSBzdXBwb3J0ZWQgPGNvZGU+RGF0ZTwvY29kZT4uICBUaGlzIHZhbHVlIGlzIGVxdWl2YWxlbnQKKyAgICAgKiB0byA8Y29kZT5NQVhfSlVMSUFOPC9jb2RlPiBhbmQgPGNvZGU+TUFYX01JTExJUzwvY29kZT4uCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBEYXRlIE1BWF9EQVRFID0gbmV3IERhdGUoTUFYX01JTExJUyk7CisKKyAgICAvLyBJbnRlcm5hbCBub3RlczoKKyAgICAvLyBDYWxlbmRhciBjb250YWlucyB0d28ga2luZHMgb2YgdGltZSByZXByZXNlbnRhdGlvbnM6IGN1cnJlbnQgInRpbWUiIGluCisgICAgLy8gbWlsbGlzZWNvbmRzLCBhbmQgYSBzZXQgb2YgdGltZSAiZmllbGRzIiByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgdGltZS4KKyAgICAvLyBUaGUgdHdvIHJlcHJlc2VudGF0aW9ucyBhcmUgdXN1YWxseSBpbiBzeW5jLCBidXQgY2FuIGdldCBvdXQgb2Ygc3luYworICAgIC8vIGFzIGZvbGxvd3MuCisgICAgLy8gMS4gSW5pdGlhbGx5LCBubyBmaWVsZHMgYXJlIHNldCwgYW5kIHRoZSB0aW1lIGlzIGludmFsaWQuCisgICAgLy8gMi4gSWYgdGhlIHRpbWUgaXMgc2V0LCBhbGwgZmllbGRzIGFyZSBjb21wdXRlZCBhbmQgaW4gc3luYy4KKyAgICAvLyAzLiBJZiBhIHNpbmdsZSBmaWVsZCBpcyBzZXQsIHRoZSB0aW1lIGlzIGludmFsaWQuCisgICAgLy8gUmVjb21wdXRhdGlvbiBvZiB0aGUgdGltZSBhbmQgZmllbGRzIGhhcHBlbnMgd2hlbiB0aGUgb2JqZWN0IG5lZWRzCisgICAgLy8gdG8gcmV0dXJuIGEgcmVzdWx0IHRvIHRoZSB1c2VyLCBvciB1c2UgYSByZXN1bHQgZm9yIGEgY29tcHV0YXRpb24uCisKKyAgICAvKioKKyAgICAgKiBUaGUgZmllbGQgdmFsdWVzIGZvciB0aGUgY3VycmVudGx5IHNldCB0aW1lIGZvciB0aGlzIGNhbGVuZGFyLgorICAgICAqIFRoaXMgaXMgYW4gYXJyYXkgb2YgYXQgbGVhc3QgPGNvZGU+QkFTRV9GSUVMRF9DT1VOVDwvY29kZT4gaW50ZWdlcnMuCisgICAgICogQHNlZSAjaGFuZGxlQ3JlYXRlRmllbGRzCisgICAgICogQHNlcmlhbAorICAgICAqLworICAgIHByaXZhdGUgdHJhbnNpZW50IGludCAgICAgICAgICAgZmllbGRzW107CisKKyAgICAvKioKKyAgICAgKiBQc2V1ZG8tdGltZS1zdGFtcHMgd2hpY2ggc3BlY2lmeSB3aGVuIGVhY2ggZmllbGQgd2FzIHNldC4gVGhlcmUKKyAgICAgKiBhcmUgdHdvIHNwZWNpYWwgdmFsdWVzLCBVTlNFVCBhbmQgSU5URVJOQUxMWV9TRVQuIFZhbHVlcyBmcm9tCisgICAgICogTUlOSU1VTV9VU0VSX1NFVCB0byBJbnRlZ2VyLk1BWF9WQUxVRSBhcmUgbGVnYWwgdXNlciBzZXQgdmFsdWVzLgorICAgICAqLworICAgIHByaXZhdGUgdHJhbnNpZW50IGludCAgICAgICAgICAgc3RhbXBbXTsKKworICAgIC8qKgorICAgICAqIFRoZSBjdXJyZW50bHkgc2V0IHRpbWUgZm9yIHRoaXMgY2FsZW5kYXIsIGV4cHJlc3NlZCBpbiBtaWxsaXNlY29uZHMgYWZ0ZXIKKyAgICAgKiBKYW51YXJ5IDEsIDE5NzAsIDA6MDA6MDAgR01ULgorICAgICAqIEBzZWUgPHR0PmlzVGltZVNldDwvdHQ+CisgICAgICogQHNlcmlhbAorICAgICAqLworICAgIHByaXZhdGUgbG9uZyAgICAgICAgICB0aW1lOworCisgICAgLyoqCisgICAgICogVHJ1ZSBpZiB0aGVuIHRoZSB2YWx1ZSBvZiA8Y29kZT50aW1lPC9jb2RlPiBpcyB2YWxpZC4KKyAgICAgKiBUaGUgdGltZSBpcyBtYWRlIGludmFsaWQgYnkgYSBjaGFuZ2UgdG8gYW4gaXRlbSBvZiA8Y29kZT5maWVsZFtdPC9jb2RlPi4KKyAgICAgKiBAc2VlICN0aW1lCisgICAgICogQHNlcmlhbAorICAgICAqLworICAgIHByaXZhdGUgdHJhbnNpZW50IGJvb2xlYW4gICAgICAgaXNUaW1lU2V0OworCisgICAgLyoqCisgICAgICogVHJ1ZSBpZiA8Y29kZT5maWVsZHNbXTwvY29kZT4gYXJlIGluIHN5bmMgd2l0aCB0aGUgY3VycmVudGx5IHNldCB0aW1lLgorICAgICAqIElmIGZhbHNlLCB0aGVuIHRoZSBuZXh0IGF0dGVtcHQgdG8gZ2V0IHRoZSB2YWx1ZSBvZiBhIGZpZWxkIHdpbGwKKyAgICAgKiBmb3JjZSBhIHJlY29tcHV0YXRpb24gb2YgYWxsIGZpZWxkcyBmcm9tIHRoZSBjdXJyZW50IHZhbHVlIG9mCisgICAgICogPGNvZGU+dGltZTwvY29kZT4uCisgICAgICogQHNlcmlhbAorICAgICAqLworICAgIHByaXZhdGUgdHJhbnNpZW50IGJvb2xlYW4gICAgICAgYXJlRmllbGRzU2V0OworCisgICAgLyoqCisgICAgICogVHJ1ZSBpZiBhbGwgZmllbGRzIGhhdmUgYmVlbiBzZXQuICBUaGlzIGlzIG9ubHkgZmFsc2UgaW4gYSBmZXcKKyAgICAgKiBzaXR1YXRpb25zOiBJbiBhIG5ld2x5IGNyZWF0ZWQsIHBhcnRpYWxseSBjb25zdHJ1Y3RlZCBvYmplY3QuICBBZnRlcgorICAgICAqIGEgY2FsbCB0byBjbGVhcigpLiAgSW4gYW4gb2JqZWN0IGp1c3QgcmVhZCBmcm9tIGEgc3RyZWFtIHVzaW5nCisgICAgICogcmVhZE9iamVjdCgpLiAgT25jZSBjb21wdXRlRmllbGRzKCkgaGFzIGJlZW4gY2FsbGVkIHRoaXMgaXMgc2V0IHRvCisgICAgICogdHJ1ZSBhbmQgc3RheXMgdHJ1ZSB1bnRpbCBvbmUgb2YgdGhlIGFib3ZlIHNpdHVhdGlvbnMgcmVjdXJzLgorICAgICAqIEBzZXJpYWwKKyAgICAgKi8KKyAgICBwcml2YXRlIHRyYW5zaWVudCBib29sZWFuICAgICAgIGFyZUFsbEZpZWxkc1NldDsKKworICAgIC8qKgorICAgICAqIFRydWUgaWYgdGhpcyBjYWxlbmRhciBhbGxvd3Mgb3V0LW9mLXJhbmdlIGZpZWxkIHZhbHVlcyBkdXJpbmcgY29tcHV0YXRpb24KKyAgICAgKiBvZiA8Y29kZT50aW1lPC9jb2RlPiBmcm9tIDxjb2RlPmZpZWxkc1tdPC9jb2RlPi4KKyAgICAgKiBAc2VlICNzZXRMZW5pZW50CisgICAgICogQHNlcmlhbAorICAgICAqLworICAgIHByaXZhdGUgYm9vbGVhbiAgICAgICAgIGxlbmllbnQgPSB0cnVlOworCisgICAgLyoqCisgICAgICogVGhlIDxjb2RlPlRpbWVab25lPC9jb2RlPiB1c2VkIGJ5IHRoaXMgY2FsZW5kYXIuIDwvY29kZT5DYWxlbmRhcjwvY29kZT4KKyAgICAgKiB1c2VzIHRoZSB0aW1lIHpvbmUgZGF0YSB0byB0cmFuc2xhdGUgYmV0d2VlbiBsb2NhbGUgYW5kIEdNVCB0aW1lLgorICAgICAqIEBzZXJpYWwKKyAgICAgKi8KKyAgICBwcml2YXRlIFRpbWVab25lICAgICAgICB6b25lOworCisgICAgLyoqCisgICAgICogVGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlaywgd2l0aCBwb3NzaWJsZSB2YWx1ZXMgPGNvZGU+U1VOREFZPC9jb2RlPiwKKyAgICAgKiA8Y29kZT5NT05EQVk8L2NvZGU+LCBldGMuICBUaGlzIGlzIGEgbG9jYWxlLWRlcGVuZGVudCB2YWx1ZS4KKyAgICAgKiBAc2VyaWFsCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgICAgICAgICAgICAgZmlyc3REYXlPZldlZWs7CisKKyAgICAvKioKKyAgICAgKiBUaGUgbnVtYmVyIG9mIGRheXMgcmVxdWlyZWQgZm9yIHRoZSBmaXJzdCB3ZWVrIGluIGEgbW9udGggb3IgeWVhciwKKyAgICAgKiB3aXRoIHBvc3NpYmxlIHZhbHVlcyBmcm9tIDEgdG8gNy4gIFRoaXMgaXMgYSBsb2NhbGUtZGVwZW5kZW50IHZhbHVlLgorICAgICAqIEBzZXJpYWwKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCAgICAgICAgICAgICBtaW5pbWFsRGF5c0luRmlyc3RXZWVrOworCisgICAgLyoqCisgICAgICogRmlyc3QgZGF5IG9mIHRoZSB3ZWVrZW5kIGluIHRoaXMgY2FsZW5kYXIncyBsb2NhbGUuICBNdXN0IGJlIGluCisgICAgICogdGhlIHJhbmdlIFNVTkRBWS4uLlNBVFVSREFZICgxLi43KS4gIFRoZSB3ZWVrZW5kIHN0YXJ0cyBhdAorICAgICAqIHdlZWtlbmRPbnNldE1pbGxpcyBtaWxsaXNlY29uZHMgYWZ0ZXIgbWlkbmlnaHQgb24gdGhhdCBkYXkgb2YKKyAgICAgKiB0aGUgd2Vlay4gIFRoaXMgdmFsdWUgaXMgdGFrZW4gZnJvbSBsb2NhbGUgcmVzb3VyY2UgZGF0YS4KKyAgICAgKi8KKyAgICBwcml2YXRlIGludCB3ZWVrZW5kT25zZXQ7CisKKyAgICAvKioKKyAgICAgKiBNaWxsaXNlY29uZHMgYWZ0ZXIgbWlkbmlnaHQgYXQgd2hpY2ggdGhlIHdlZWtlbmQgc3RhcnRzIG9uIHRoZQorICAgICAqIGRheSBvZiB0aGUgd2VlayB3ZWVrZW5kT25zZXQuICBUaW1lcyB0aGF0IGFyZSBncmVhdGVyIHRoYW4gb3IKKyAgICAgKiBlcXVhbCB0byB3ZWVrZW5kT25zZXRNaWxsaXMgYXJlIGNvbnNpZGVyZWQgcGFydCBvZiB0aGUgd2Vla2VuZC4KKyAgICAgKiBNdXN0IGJlIGluIHRoZSByYW5nZSAwLi4yNCo2MCo2MCoxMDAwLTEuICBUaGlzIHZhbHVlIGlzIHRha2VuCisgICAgICogZnJvbSBsb2NhbGUgcmVzb3VyY2UgZGF0YS4KKyAgICAgKi8KKyAgICBwcml2YXRlIGludCB3ZWVrZW5kT25zZXRNaWxsaXM7CisKKyAgICAvKioKKyAgICAgKiBEYXkgb2YgdGhlIHdlZWsgd2hlbiB0aGUgd2Vla2VuZCBzdG9wcyBpbiB0aGlzIGNhbGVuZGFyJ3MKKyAgICAgKiBsb2NhbGUuICBNdXN0IGJlIGluIHRoZSByYW5nZSBTVU5EQVkuLi5TQVRVUkRBWSAoMS4uNykuICBUaGUKKyAgICAgKiB3ZWVrZW5kIHN0b3BzIGF0IHdlZWtlbmRDZWFzZU1pbGxpcyBtaWxsaXNlY29uZHMgYWZ0ZXIgbWlkbmlnaHQKKyAgICAgKiBvbiB0aGF0IGRheSBvZiB0aGUgd2Vlay4gIFRoaXMgdmFsdWUgaXMgdGFrZW4gZnJvbSBsb2NhbGUKKyAgICAgKiByZXNvdXJjZSBkYXRhLgorICAgICAqLworICAgIHByaXZhdGUgaW50IHdlZWtlbmRDZWFzZTsKKworICAgIC8qKgorICAgICAqIE1pbGxpc2Vjb25kcyBhZnRlciBtaWRuaWdodCBhdCB3aGljaCB0aGUgd2Vla2VuZCBzdG9wcyBvbiB0aGUKKyAgICAgKiBkYXkgb2YgdGhlIHdlZWsgd2Vla2VuZENlYXNlLiAgVGltZXMgdGhhdCBhcmUgZ3JlYXRlciB0aGFuIG9yCisgICAgICogZXF1YWwgdG8gd2Vla2VuZENlYXNlTWlsbGlzIGFyZSBjb25zaWRlcmVkIG5vdCB0byBiZSB0aGUKKyAgICAgKiB3ZWVrZW5kLiAgTXVzdCBiZSBpbiB0aGUgcmFuZ2UgMC4uMjQqNjAqNjAqMTAwMC0xLiAgVGhpcyB2YWx1ZQorICAgICAqIGlzIHRha2VuIGZyb20gbG9jYWxlIHJlc291cmNlIGRhdGEuCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgd2Vla2VuZENlYXNlTWlsbGlzOworCisgICAgLyoqCisgICAgICogQ2FjaGUgdG8gaG9sZCB0aGUgZmlyc3REYXlPZldlZWsgYW5kIG1pbmltYWxEYXlzSW5GaXJzdFdlZWsKKyAgICAgKiBvZiBhIExvY2FsZS4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBIYXNodGFibGUgY2FjaGVkTG9jYWxlRGF0YSA9IG5ldyBIYXNodGFibGUoMyk7CisKKyAgICAvKioKKyAgICAgKiBWYWx1ZSBvZiB0aGUgdGltZSBzdGFtcCA8Y29kZT5zdGFtcFtdPC9jb2RlPiBpbmRpY2F0aW5nIHRoYXQKKyAgICAgKiBhIGZpZWxkIGhhcyBub3QgYmVlbiBzZXQgc2luY2UgdGhlIGxhc3QgY2FsbCB0byA8Y29kZT5jbGVhcigpPC9jb2RlPi4KKyAgICAgKiBAc2VlICNJTlRFUk5BTExZX1NFVAorICAgICAqIEBzZWUgI01JTklNVU1fVVNFUl9TVEFNUAorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IFVOU0VUID0gMDsKKworICAgIC8qKgorICAgICAqIFZhbHVlIG9mIHRoZSB0aW1lIHN0YW1wIDxjb2RlPnN0YW1wW108L2NvZGU+IGluZGljYXRpbmcgdGhhdCBhIGZpZWxkCisgICAgICogaGFzIGJlZW4gc2V0IHZpYSBjb21wdXRhdGlvbnMgZnJvbSB0aGUgdGltZSBvciBmcm9tIG90aGVyIGZpZWxkcy4KKyAgICAgKiBAc2VlICNVTlNFVAorICAgICAqIEBzZWUgI01JTklNVU1fVVNFUl9TVEFNUAorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IElOVEVSTkFMTFlfU0VUID0gMTsKKworICAgIC8qKgorICAgICAqIElmIHRoZSB0aW1lIHN0YW1wIDxjb2RlPnN0YW1wW108L2NvZGU+IGhhcyBhIHZhbHVlIGdyZWF0ZXIgdGhhbiBvcgorICAgICAqIGVxdWFsIHRvIDxjb2RlPk1JTklNVU1fVVNFUl9TRVQ8L2NvZGU+IHRoZW4gaXQgaGFzIGJlZW4gc2V0IGJ5IHRoZQorICAgICAqIHVzZXIgdmlhIGEgY2FsbCB0byA8Y29kZT5zZXQoKTwvY29kZT4uCisgICAgICogQHNlZSAjVU5TRVQKKyAgICAgKiBAc2VlICNJTlRFUk5BTExZX1NFVAorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IE1JTklNVU1fVVNFUl9TVEFNUCA9IDI7CisKKyAgICAvKioKKyAgICAgKiBUaGUgbmV4dCBhdmFpbGFibGUgdmFsdWUgZm9yIDxjb2RlPnN0YW1wW108L2NvZGU+LCBhbiBpbnRlcm5hbCBhcnJheS4KKyAgICAgKiBUaGlzIGFjdHVhbGx5IHNob3VsZCBub3QgYmUgd3JpdHRlbiBvdXQgdG8gdGhlIHN0cmVhbSwgYW5kIHdpbGwgcHJvYmFibHkKKyAgICAgKiBiZSByZW1vdmVkIGZyb20gdGhlIHN0cmVhbSBpbiB0aGUgbmVhciBmdXR1cmUuICBJbiB0aGUgbWVhbnRpbWUsCisgICAgICogYSB2YWx1ZSBvZiA8Y29kZT5NSU5JTVVNX1VTRVJfU1RBTVA8L2NvZGU+IHNob3VsZCBiZSB1c2VkLgorICAgICAqIEBzZXJpYWwKKyAgICAgKi8KKyAgICBwcml2YXRlIHRyYW5zaWVudCBpbnQgICAgICAgICAgICAgbmV4dFN0YW1wID0gTUlOSU1VTV9VU0VSX1NUQU1QOworCisgICAgLy8gdGhlIGludGVybmFsIHNlcmlhbCB2ZXJzaW9uIHdoaWNoIHNheXMgd2hpY2ggdmVyc2lvbiB3YXMgd3JpdHRlbgorICAgIC8vIC0gMCAoZGVmYXVsdCkgZm9yIHZlcnNpb24gdXAgdG8gSkRLIDEuMS41CisgICAgLy8gLSAxIGZvciB2ZXJzaW9uIGZyb20gSkRLIDEuMS42LCB3aGljaCB3cml0ZXMgYSBjb3JyZWN0ICd0aW1lJyB2YWx1ZQorICAgIC8vICAgICBhcyB3ZWxsIGFzIGNvbXBhdGlibGUgdmFsdWVzIGZvciBvdGhlciBmaWVsZHMuICBUaGlzIGlzIGEKKyAgICAvLyAgICAgdHJhbnNpdGlvbmFsIGZvcm1hdC4KKyAgICAvLyAtIDIgKG5vdCBpbXBsZW1lbnRlZCB5ZXQpIGEgZnV0dXJlIHZlcnNpb24sIGluIHdoaWNoIGZpZWxkc1tdLAorICAgIC8vICAgICBhcmVGaWVsZHNTZXQsIGFuZCBpc1RpbWVTZXQgYmVjb21lIHRyYW5zaWVudCwgYW5kIGlzU2V0W10gaXMKKyAgICAvLyAgICAgcmVtb3ZlZC4gSW4gSkRLIDEuMS42IHdlIHdyaXRlIGEgZm9ybWF0IGNvbXBhdGlibGUgd2l0aCB2ZXJzaW9uIDIuCisgICAgLy8gc3RhdGljIGZpbmFsIGludCAgICAgICAgY3VycmVudFNlcmlhbFZlcnNpb24gPSAxOworICAgIAorICAgIC8qKgorICAgICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBzZXJpYWxpemVkIGRhdGEgb24gdGhlIHN0cmVhbS4gIFBvc3NpYmxlIHZhbHVlczoKKyAgICAgKiA8ZGw+CisgICAgICogPGR0PjxiPjA8L2I+IG9yIG5vdCBwcmVzZW50IG9uIHN0cmVhbTwvZHQ+CisgICAgICogPGRkPgorICAgICAqIEpESyAxLjEuNSBvciBlYXJsaWVyLgorICAgICAqIDwvZGQ+CisgICAgICogPGR0PjxiPjE8L2I+PC9kdD4KKyAgICAgKiA8ZGQ+CisgICAgICogSkRLIDEuMS42IG9yIGxhdGVyLiAgV3JpdGVzIGEgY29ycmVjdCAndGltZScgdmFsdWUKKyAgICAgKiBhcyB3ZWxsIGFzIGNvbXBhdGlibGUgdmFsdWVzIGZvciBvdGhlciBmaWVsZHMuICBUaGlzIGlzIGEKKyAgICAgKiB0cmFuc2l0aW9uYWwgZm9ybWF0LgorICAgICAqIDwvZGQ+CisgICAgICogPC9kbD4KKyAgICAgKiBXaGVuIHN0cmVhbWluZyBvdXQgdGhpcyBjbGFzcywgdGhlIG1vc3QgcmVjZW50IGZvcm1hdAorICAgICAqIGFuZCB0aGUgaGlnaGVzdCBhbGxvd2FibGUgPGNvZGU+c2VyaWFsVmVyc2lvbk9uU3RyZWFtPC9jb2RlPgorICAgICAqIGlzIHdyaXR0ZW4uCisgICAgICogQHNlcmlhbAorICAgICAqIEBzaW5jZSBKREsxLjEuNgorICAgICAqLworICAgIC8vIHByaXZhdGUgaW50ICAgICAgICAgICAgIHNlcmlhbFZlcnNpb25PblN0cmVhbSA9IGN1cnJlbnRTZXJpYWxWZXJzaW9uOworCisgICAgLy8gUHJvY2xhaW0gc2VyaWFsaXphdGlvbiBjb21wYXRpYmlsaXR5IHdpdGggSkRLIDEuMQorICAgIC8vIHN0YXRpYyBmaW5hbCBsb25nICAgICAgIHNlcmlhbFZlcnNpb25VSUQgPSAtMTgwNzU0NzUwNTgyMTU5MDY0Mkw7CisKKyAgICAvKioKKyAgICAgKiBCaXRtYXNrIGZvciBpbnRlcm5hbFNldCgpIGRlZmluaW5nIHdoaWNoIGZpZWxkcyBtYXkgbGVnYWxseSBiZSBzZXQKKyAgICAgKiBieSBzdWJjbGFzc2VzLiAgQW55IGF0dGVtcHQgdG8gc2V0IGEgZmllbGQgbm90IGluIHRoaXMgYml0bWFzaworICAgICAqIHJlc3VsdHMgaW4gYW4gZXhjZXB0aW9uLCBiZWNhdXNlIHN1Y2ggZmllbGRzIG11c3QgYmUgc2V0IGJ5IHRoZSBiYXNlCisgICAgICogY2xhc3MuCisgICAgICovCisgICAgcHJpdmF0ZSB0cmFuc2llbnQgaW50IGludGVybmFsU2V0TWFzazsKKworICAgIC8qKgorICAgICAqIFRoZSBHcmVnb3JpYW4geWVhciwgYXMgY29tcHV0ZWQgYnkgY29tcHV0ZUdyZWdvcmlhbkZpZWxkcygpIGFuZAorICAgICAqIHJldHVybmVkIGJ5IGdldEdyZWdvcmlhblllYXIoKS4KKyAgICAgKi8KKyAgICBwcml2YXRlIHRyYW5zaWVudCBpbnQgZ3JlZ29yaWFuWWVhcjsKKworICAgIC8qKgorICAgICAqIFRoZSBHcmVnb3JpYW4gbW9udGgsIGFzIGNvbXB1dGVkIGJ5IGNvbXB1dGVHcmVnb3JpYW5GaWVsZHMoKSBhbmQKKyAgICAgKiByZXR1cm5lZCBieSBnZXRHcmVnb3JpYW5Nb250aCgpLgorICAgICAqLworICAgIHByaXZhdGUgdHJhbnNpZW50IGludCBncmVnb3JpYW5Nb250aDsKKworICAgIC8qKgorICAgICAqIFRoZSBHcmVnb3JpYW4gZGF5IG9mIHRoZSB5ZWFyLCBhcyBjb21wdXRlZCBieQorICAgICAqIGNvbXB1dGVHcmVnb3JpYW5GaWVsZHMoKSBhbmQgcmV0dXJuZWQgYnkgZ2V0R3JlZ29yaWFuRGF5T2ZZZWFyKCkuCisgICAgICovCisgICAgcHJpdmF0ZSB0cmFuc2llbnQgaW50IGdyZWdvcmlhbkRheU9mWWVhcjsKKworICAgIC8qKgorICAgICAqIFRoZSBHcmVnb3JpYW4gZGF5IG9mIHRoZSBtb250aCwgYXMgY29tcHV0ZWQgYnkKKyAgICAgKiBjb21wdXRlR3JlZ29yaWFuRmllbGRzKCkgYW5kIHJldHVybmVkIGJ5IGdldEdyZWdvcmlhbkRheU9mTW9udGgoKS4KKyAgICAgKi8KKyAgICBwcml2YXRlIHRyYW5zaWVudCBpbnQgZ3JlZ29yaWFuRGF5T2ZNb250aDsKKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSBDYWxlbmRhciB3aXRoIHRoZSBkZWZhdWx0IHRpbWUgem9uZQorICAgICAqIGFuZCBsb2NhbGUuCisgICAgICogQHNlZSAgICAgVGltZVpvbmUjZ2V0RGVmYXVsdAorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHByb3RlY3RlZCBDYWxlbmRhcigpCisgICAgeworICAgICAgICB0aGlzKFRpbWVab25lLmdldERlZmF1bHQoKSwgTG9jYWxlLmdldERlZmF1bHQoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIGNhbGVuZGFyIHdpdGggdGhlIHNwZWNpZmllZCB0aW1lIHpvbmUgYW5kIGxvY2FsZS4KKyAgICAgKiBAcGFyYW0gem9uZSB0aGUgdGltZSB6b25lIHRvIHVzZQorICAgICAqIEBwYXJhbSBhTG9jYWxlIHRoZSBsb2NhbGUgZm9yIHRoZSB3ZWVrIGRhdGEKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgQ2FsZW5kYXIoVGltZVpvbmUgem9uZSwgTG9jYWxlIGFMb2NhbGUpCisgICAgeworICAgICAgICB0aGlzLnpvbmUgPSB6b25lOworICAgICAgICBzZXRXZWVrQ291bnREYXRhKGFMb2NhbGUpOworICAgICAgICBzZXRXZWVrZW5kRGF0YShhTG9jYWxlKTsKKyAgICAgICAgaW5pdEludGVybmFsKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGluaXRJbnRlcm5hbCgpCisgICAgeworICAgICAgICAvLyBBbGxvY2F0ZSBmaWVsZHMgdGhyb3VnaCB0aGUgZnJhbWV3b3JrIG1ldGhvZC4gIFN1YmNsYXNzZXMKKyAgICAgICAgLy8gbWF5IG92ZXJyaWRlIHRoaXMgdG8gZGVmaW5lIGFkZGl0aW9uYWwgZmllbGRzLgorICAgICAgICBmaWVsZHMgPSBoYW5kbGVDcmVhdGVGaWVsZHMoKTsKKyAgICAgICAgaWYgKGZpZWxkcyA9PSBudWxsIHx8IGZpZWxkcy5sZW5ndGggPCBCQVNFX0ZJRUxEX0NPVU5UIHx8CisgICAgICAgICAgICBmaWVsZHMubGVuZ3RoID4gTUFYX0ZJRUxEX0NPVU5UKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcigiSW52YWxpZCBmaWVsZHNbXSIpOworICAgICAgICB9CisgICAgICAgIHN0YW1wID0gbmV3IGludFtmaWVsZHMubGVuZ3RoXTsKKyAgICAgICAgaW50IG1hc2sgPSAoMSA8PCBFUkEpIHwKKyAgICAgICAgICAgICgxIDw8IFlFQVIpIHwKKyAgICAgICAgICAgICgxIDw8IE1PTlRIKSB8CisgICAgICAgICAgICAoMSA8PCBEQVlfT0ZfTU9OVEgpIHwKKyAgICAgICAgICAgICgxIDw8IERBWV9PRl9ZRUFSKSB8CisgICAgICAgICAgICAoMSA8PCBFWFRFTkRFRF9ZRUFSKTsKKyAgICAgICAgZm9yIChpbnQgaT1CQVNFX0ZJRUxEX0NPVU5UOyBpPGZpZWxkcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgbWFzayB8PSAoMSA8PCBpKTsKKyAgICAgICAgfQorICAgICAgICBpbnRlcm5hbFNldE1hc2sgPSBtYXNrOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgYSBjYWxlbmRhciB1c2luZyB0aGUgZGVmYXVsdCB0aW1lIHpvbmUgYW5kIGxvY2FsZS4KKyAgICAgKiBAcmV0dXJuIGEgQ2FsZW5kYXIuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBzeW5jaHJvbml6ZWQgQ2FsZW5kYXIgZ2V0SW5zdGFuY2UoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdldEluc3RhbmNlKFRpbWVab25lLmdldERlZmF1bHQoKSwgTG9jYWxlLmdldERlZmF1bHQoKSwgbnVsbCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0cyBhIGNhbGVuZGFyIHVzaW5nIHRoZSBzcGVjaWZpZWQgdGltZSB6b25lIGFuZCBkZWZhdWx0IGxvY2FsZS4KKyAgICAgKiBAcGFyYW0gem9uZSB0aGUgdGltZSB6b25lIHRvIHVzZQorICAgICAqIEByZXR1cm4gYSBDYWxlbmRhci4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIHN5bmNocm9uaXplZCBDYWxlbmRhciBnZXRJbnN0YW5jZShUaW1lWm9uZSB6b25lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdldEluc3RhbmNlKHpvbmUsIExvY2FsZS5nZXREZWZhdWx0KCksIG51bGwpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgYSBjYWxlbmRhciB1c2luZyB0aGUgZGVmYXVsdCB0aW1lIHpvbmUgYW5kIHNwZWNpZmllZCBsb2NhbGUuCisgICAgICogQHBhcmFtIGFMb2NhbGUgdGhlIGxvY2FsZSBmb3IgdGhlIHdlZWsgZGF0YQorICAgICAqIEByZXR1cm4gYSBDYWxlbmRhci4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIHN5bmNocm9uaXplZCBDYWxlbmRhciBnZXRJbnN0YW5jZShMb2NhbGUgYUxvY2FsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBnZXRJbnN0YW5jZShUaW1lWm9uZS5nZXREZWZhdWx0KCksIGFMb2NhbGUsIG51bGwpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgYSBjYWxlbmRhciB3aXRoIHRoZSBzcGVjaWZpZWQgdGltZSB6b25lIGFuZCBsb2NhbGUuCisgICAgICogQHBhcmFtIHpvbmUgdGhlIHRpbWUgem9uZSB0byB1c2UKKyAgICAgKiBAcGFyYW0gYUxvY2FsZSB0aGUgbG9jYWxlIGZvciB0aGUgd2VlayBkYXRhCisgICAgICogQHJldHVybiBhIENhbGVuZGFyLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgc3luY2hyb25pemVkIENhbGVuZGFyIGdldEluc3RhbmNlKFRpbWVab25lIHpvbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYWxlIGFMb2NhbGUpIHsKKyAgICAgICAgcmV0dXJuIGdldEluc3RhbmNlKHpvbmUsIGFMb2NhbGUsIG51bGwpOworICAgIH0KKworICAgIC8vID09PT0gRmFjdG9yeSBTdHVmZiA9PT09CisgICAgLy8vQ0xPVkVSOk9GRgorICAgIC8qKgorICAgICAqIFJldHVybiBhIGNhbGVuZGFyIG9mIGZvciB0aGUgVGltZVpvbmUgYW5kIGxvY2FsZS4gIElmIGZhY3RvcnlOYW1lIGlzCisgICAgICogbm90IG51bGwsIGxvb2tzIGluIHRoZSBjb2xsZWN0aW9uIG9mIENhbGVuZGFyRmFjdG9yaWVzIGZvciBhIG1hdGNoCisgICAgICogYW5kIHVzZXMgdGhhdCBmYWN0b3J5IHRvIGluc3RhbnRpYXRlIHRoZSBjYWxlbmRhci4gIE90aGVyd2lzZSwgaXQKKyAgICAgKiB1c2VzIHRoZSBkZWZhdWx0IGZhY3RvcnkgdGhhdCBoYXMgYmVlbiByZWdpc3RlcmVkIGZvciB0aGUgbG9jYWxlLgorICAgICAqIEBwcm90b3R5cGUKKyAgICAgKi8KKyAgICAvKiBwdWJsaWMgKi8gc3RhdGljIHN5bmNocm9uaXplZCBDYWxlbmRhciBnZXRJbnN0YW5jZShUaW1lWm9uZSB6b25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2FsZSBsb2NhbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGZhY3RvcnlOYW1lKQorICAgIHsKKyAgICAgICAgQ2FsZW5kYXJGYWN0b3J5IGZhY3RvcnkgPSBudWxsOworICAgICAgICBpZiAoZmFjdG9yeU5hbWUgIT0gbnVsbCkgeworICAgICAgICAgICAgZmFjdG9yeSA9IChDYWxlbmRhckZhY3RvcnkpZ2V0RmFjdG9yeU1hcCgpLmdldChmYWN0b3J5TmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZmFjdG9yeSA9PSBudWxsICYmIHNlcnZpY2UgIT0gbnVsbCkgeworICAgICAgICAgICAgZmFjdG9yeSA9IChDYWxlbmRhckZhY3Rvcnkpc2VydmljZS5nZXQobG9jYWxlKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChmYWN0b3J5ID09IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoem9uZSwgbG9jYWxlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBmYWN0b3J5LmNyZWF0ZSh6b25lLCBsb2NhbGUpOworICAgICAgICB9CisgICAgfQorICAgIC8vL0NMT1ZFUjpPTgorICAgIC8qKgorICAgICAqIEdldHMgdGhlIGxpc3Qgb2YgbG9jYWxlcyBmb3Igd2hpY2ggQ2FsZW5kYXJzIGFyZSBpbnN0YWxsZWQuCisgICAgICogQHJldHVybiB0aGUgbGlzdCBvZiBsb2NhbGVzIGZvciB3aGljaCBDYWxlbmRhcnMgYXJlIGluc3RhbGxlZC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIExvY2FsZVtdIGdldEF2YWlsYWJsZUxvY2FsZXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNlcnZpY2UgPT0gbnVsbAorICAgICAgICAgICAgPyBJQ1VMb2NhbGVEYXRhLmdldEF2YWlsYWJsZUxvY2FsZXMoKQorICAgICAgICAgICAgOiBzZXJ2aWNlLmdldEF2YWlsYWJsZUxvY2FsZXMoKTsKKyAgICB9CisgICAgLy8vQ0xPVkVSOk9GRgorICAgIHByaXZhdGUgc3RhdGljIE1hcCBmYWN0b3J5TWFwOworICAgIHByaXZhdGUgc3RhdGljIE1hcCBnZXRGYWN0b3J5TWFwKCkgeworICAgICAgICBpZiAoZmFjdG9yeU1hcCA9PSBudWxsKSB7CisgICAgICAgICAgICBNYXAgbSA9IG5ldyBIYXNoTWFwKDUpOworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgIGFkZEZhY3RvcnkobSwgQnVkZGhpc3RDYWxlbmRhci5mYWN0b3J5KCkpOworICAgICAgICAgICAgYWRkRmFjdG9yeShtLCBDaGluZXNlQ2FsZW5kYXIuZmFjdG9yeSgpKTsKKyAgICAgICAgICAgIGFkZEZhY3RvcnkobSwgR3JlZ29yaWFuQ2FsZW5kYXIuZmFjdG9yeSgpKTsKKyAgICAgICAgICAgIGFkZEZhY3RvcnkobSwgSGVicmV3Q2FsZW5kYXIuZmFjdG9yeSgpKTsKKyAgICAgICAgICAgIGFkZEZhY3RvcnkobSwgSXNsYW1pY0NhbGVuZGFyLmZhY3RvcnkoKSk7CisgICAgICAgICAgICBhZGRGYWN0b3J5KG0sIEphcGFuZXNlQ2FsZW5kYXIuZmFjdG9yeSgpKTsKKyAgICAgICAgICAgICovCisgICAgICAgICAgICBmYWN0b3J5TWFwID0gbTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFjdG9yeU1hcDsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIGFkZEZhY3RvcnkoTWFwIG0sIENhbGVuZGFyRmFjdG9yeSBmKSB7CisgICAgICAgIG0ucHV0KGYuZmFjdG9yeU5hbWUoKSwgZik7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgc2V0IG9mIGFsbCB0aGUgcmVnaXN0ZXJlZCBjYWxlbmRhciBmYWN0b3J5IG5hbWVzLgorICAgICAqIEBwcm90b3R5cGUKKyAgICAgKi8KKyAgICAvKiBwdWJsaWMgKi8gc3RhdGljIFNldCBnZXRDYWxlbmRhckZhY3RvcnlOYW1lcygpIHsKKyAgICAgICAgcmV0dXJuIENvbGxlY3Rpb25zLnVubW9kaWZpYWJsZVNldChnZXRGYWN0b3J5TWFwKCkua2V5U2V0KCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlZ2lzdGVyIGEgbmV3IENhbGVuZGFyRmFjdG9yeS4gIGdldEluc3RhbmNlKFRpbWVab25lLCBMb2NhbGUsIFN0cmluZykgd2lsbAorICAgICAqIHRyeSB0byBsb2NhdGUgYSByZWdpc3RlcmVkIGZhY3RvcmllcyBtYXRjaGluZyB0aGUgZmFjdG9yeU5hbWUuICBPbmx5IHJlZ2lzdGVyZWQKKyAgICAgKiBmYWN0b3JpZXMgd2lsbCBiZSBmb3VuZC4KKyAgICAgKiBAcHJvdG90eXBlCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCByZWdpc3RlckZhY3RvcnkoQ2FsZW5kYXJGYWN0b3J5IGZhY3RvcnkpIHsKKyAgICAgICAgaWYgKGZhY3RvcnkgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiRmFjdG9yeSBtdXN0IG5vdCBiZSBudWxsIik7CisgICAgICAgIH0KKyAgICAgICAgZ2V0RmFjdG9yeU1hcCgpLnB1dChmYWN0b3J5LmZhY3RvcnlOYW1lKCksIGZhY3RvcnkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlbmllbmNlIG92ZXJyaWRlIG9mIHJlZ2lzdGVyKENhbGVuZGFyRmFjdG9yeSwgTG9jYWxlLCBib29sZWFuKTsKKyAgICAgKiBAcHJvdG90eXBlCisgICAgICovCisgICAgLyogcHVibGljICovIHN0YXRpYyBPYmplY3QgcmVnaXN0ZXIoQ2FsZW5kYXJGYWN0b3J5IGZhY3RvcnksIExvY2FsZSBsb2NhbGUpIHsKKyAgICAgICAgcmV0dXJuIHJlZ2lzdGVyKGZhY3RvcnksIGxvY2FsZSwgdHJ1ZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVnaXN0ZXJzIGEgZGVmYXVsdCBDYWxlbmRhckZhY3RvcnkgZm9yIHRoZSBwcm92aWRlZCBsb2NhbGUuCisgICAgICogSWYgdGhlIGZhY3RvcnkgaGFzIG5vdCBhbHJlYWR5IGJlZW4gcmVnaXN0ZXJlZCB3aXRoCisgICAgICogcmVnaXN0ZXJGYWN0b3J5LCBpdCB3aWxsIGJlLiAgCisgICAgICogQHByb3RvdHlwZQorICAgICAqLworICAgIC8qIHB1YmxpYyAqLyBzdGF0aWMgT2JqZWN0IHJlZ2lzdGVyKENhbGVuZGFyRmFjdG9yeSBmYWN0b3J5LCBMb2NhbGUgbG9jYWxlLCBib29sZWFuIHZpc2libGUpIHsKKyAgICAgICAgaWYgKGZhY3RvcnkgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiY2FsZW5kYXIgbXVzdCBub3QgYmUgbnVsbCIpOworICAgICAgICB9CisgICAgICAgIHJlZ2lzdGVyRmFjdG9yeShmYWN0b3J5KTsKKyAgICAgICAgcmV0dXJuIGdldFNlcnZpY2UoKS5yZWdpc3Rlck9iamVjdChmYWN0b3J5LCBsb2NhbGUsIHZpc2libGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IExvY2FsZUtleUZhY3RvcnkuVklTSUJMRQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogTG9jYWxlS2V5RmFjdG9yeS5JTlZJU0lCTEUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFVucmVnaXN0ZXIgdGhlIENhbGVuZGFyRmFjdG9yeSBhc3NvY2lhdGVkIHdpdGggdGhpcyBrZXkgCisgICAgICogKG9idGFpbmVkIGZyb20gcmVnaXN0ZXIpLgorICAgICAqIEBwcm90b3R5cGUKKyAgICAgKi8KKyAgICAvKiBwdWJsaWMgKi8gc3RhdGljIGJvb2xlYW4gdW5yZWdpc3RlcihPYmplY3QgcmVnaXN0cnlLZXkpIHsKKyAgICAgICAgcmV0dXJuIHNlcnZpY2UgPT0gbnVsbCAKKyAgICAgICAgICAgID8gZmFsc2UKKyAgICAgICAgICAgIDogc2VydmljZS51bnJlZ2lzdGVyRmFjdG9yeSgoRmFjdG9yeSlyZWdpc3RyeUtleSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgSUNVTG9jYWxlU2VydmljZSBzZXJ2aWNlID0gbnVsbDsKKyAgICBwcml2YXRlIHN0YXRpYyBJQ1VMb2NhbGVTZXJ2aWNlIGdldFNlcnZpY2UoKSB7CisgICAgICAgIGlmIChzZXJ2aWNlID09IG51bGwpIHsKKyAgICAgICAgICAgIElDVUxvY2FsZVNlcnZpY2UgbmV3U2VydmljZSA9IG5ldyBJQ1VMb2NhbGVTZXJ2aWNlKCJDYWxlbmRhciIpOworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgIGNsYXNzIFJCQ2FsZW5kYXJGYWN0b3J5IGV4dGVuZHMgSUNVUmVzb3VyY2VCdW5kbGVGYWN0b3J5IHsKKyAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgT2JqZWN0IGhhbmRsZUNyZWF0ZShMb2NhbGUgbG9jYWxlLCBpbnQga2luZCwgSUNVU2VydmljZSBzZXJ2aWNlKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBHcmVnb3JpYW5DYWxlbmRhci5mYWN0b3J5KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgbmV3U2VydmljZS5yZWdpc3RlckZhY3RvcnkobmV3IFJCQ2FsZW5kYXJGYWN0b3J5KCkpOworICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHN5bmNocm9uaXplZCAoQ2FsZW5kYXIuY2xhc3MpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2VydmljZSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIHNlcnZpY2UgPSBuZXdTZXJ2aWNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc2VydmljZTsKKyAgICB9CisgICAgLy9DTE9WRVI6T04KKyAgICAvLyA9PT09IEVuZCBvZiBmYWN0b3J5IFN0dWZmID09PT0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhpcyBDYWxlbmRhcidzIGN1cnJlbnQgdGltZS4KKyAgICAgKiBAcmV0dXJuIHRoZSBjdXJyZW50IHRpbWUuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGZpbmFsIERhdGUgZ2V0VGltZSgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBEYXRlKCBnZXRUaW1lSW5NaWxsaXMoKSApOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhpcyBDYWxlbmRhcidzIGN1cnJlbnQgdGltZSB3aXRoIHRoZSBnaXZlbiBEYXRlLgorICAgICAqIDxwPgorICAgICAqIE5vdGU6IENhbGxpbmcgPGNvZGU+c2V0VGltZSgpPC9jb2RlPiB3aXRoCisgICAgICogPGNvZGU+RGF0ZShMb25nLk1BWF9WQUxVRSk8L2NvZGU+IG9yIDxjb2RlPkRhdGUoTG9uZy5NSU5fVkFMVUUpPC9jb2RlPgorICAgICAqIG1heSB5aWVsZCBpbmNvcnJlY3QgZmllbGQgdmFsdWVzIGZyb20gPGNvZGU+Z2V0KCk8L2NvZGU+LgorICAgICAqIEBwYXJhbSBkYXRlIHRoZSBnaXZlbiBEYXRlLiAgCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHZvaWQgc2V0VGltZShEYXRlIGRhdGUpIHsKKyAgICAgICAgc2V0VGltZUluTWlsbGlzKCBkYXRlLmdldFRpbWUoKSApOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhpcyBDYWxlbmRhcidzIGN1cnJlbnQgdGltZSBhcyBhIGxvbmcuCisgICAgICogQHJldHVybiB0aGUgY3VycmVudCB0aW1lIGFzIFVUQyBtaWxsaXNlY29uZHMgZnJvbSB0aGUgZXBvY2guCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGxvbmcgZ2V0VGltZUluTWlsbGlzKCkgeworICAgICAgICBpZiAoIWlzVGltZVNldCkgdXBkYXRlVGltZSgpOworICAgICAgICByZXR1cm4gdGltZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoaXMgQ2FsZW5kYXIncyBjdXJyZW50IHRpbWUgZnJvbSB0aGUgZ2l2ZW4gbG9uZyB2YWx1ZS4KKyAgICAgKiBAcGFyYW0gZGF0ZSB0aGUgbmV3IHRpbWUgaW4gVVRDIG1pbGxpc2Vjb25kcyBmcm9tIHRoZSBlcG9jaC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRUaW1lSW5NaWxsaXMoIGxvbmcgbWlsbGlzICkgeworICAgICAgICBpZiAobWlsbGlzID4gTUFYX01JTExJUykgeworICAgICAgICAgICAgbWlsbGlzID0gTUFYX01JTExJUzsKKyAgICAgICAgfSBlbHNlIGlmIChtaWxsaXMgPCBNSU5fTUlMTElTKSB7CisgICAgICAgICAgICBtaWxsaXMgPSBNSU5fTUlMTElTOworICAgICAgICB9CisgICAgICAgIHRpbWUgPSBtaWxsaXM7CisgICAgICAgIGlzVGltZVNldCA9IHRydWU7CisgICAgICAgIGNvbXB1dGVGaWVsZHMoKTsKKyAgICAgICAgYXJlRmllbGRzU2V0ID0gdHJ1ZTsKKyAgICAgICAgYXJlQWxsRmllbGRzU2V0ID0gdHJ1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSB2YWx1ZSBmb3IgYSBnaXZlbiB0aW1lIGZpZWxkLgorICAgICAqIEBwYXJhbSBmaWVsZCB0aGUgZ2l2ZW4gdGltZSBmaWVsZC4KKyAgICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBmb3IgdGhlIGdpdmVuIHRpbWUgZmllbGQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGZpbmFsIGludCBnZXQoaW50IGZpZWxkKQorICAgIHsKKyAgICAgICAgY29tcGxldGUoKTsKKyAgICAgICAgcmV0dXJuIGZpZWxkc1tmaWVsZF07CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgdmFsdWUgZm9yIGEgZ2l2ZW4gdGltZSBmaWVsZC4gIFRoaXMgaXMgYW4gaW50ZXJuYWwgbWV0aG9kCisgICAgICogZm9yIHN1YmNsYXNzZXMgdGhhdCBkb2VzIDxlbT5ub3Q8L2VtPiB0cmlnZ2VyIGFueSBjYWxjdWxhdGlvbnMuCisgICAgICogQHBhcmFtIGZpZWxkIHRoZSBnaXZlbiB0aW1lIGZpZWxkLgorICAgICAqIEByZXR1cm4gdGhlIHZhbHVlIGZvciB0aGUgZ2l2ZW4gdGltZSBmaWVsZC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgZmluYWwgaW50IGludGVybmFsR2V0KGludCBmaWVsZCkKKyAgICB7CisgICAgICAgIHJldHVybiBmaWVsZHNbZmllbGRdOworICAgIH0KKyAKKyAgICAvKioKKyAgICAgKiBHZXQgdGhlIHZhbHVlIGZvciBhIGdpdmVuIHRpbWUgZmllbGQsIG9yIHJldHVybiB0aGUgZ2l2ZW4gZGVmYXVsdAorICAgICAqIHZhbHVlIGlmIHRoZSBmaWVsZCBpcyBub3Qgc2V0LiAgVGhpcyBpcyBhbiBpbnRlcm5hbCBtZXRob2QgZm9yCisgICAgICogc3ViY2xhc3NlcyB0aGF0IGRvZXMgPGVtPm5vdDwvZW0+IHRyaWdnZXIgYW55IGNhbGN1bGF0aW9ucy4KKyAgICAgKiBAcGFyYW0gZmllbGQgdGhlIGdpdmVuIHRpbWUgZmllbGQuCisgICAgICogQHBhcmFtIGRlZmF1bHRWYWx1ZSB2YWx1ZSB0byByZXR1cm4gaWYgZmllbGQgaXMgbm90IHNldAorICAgICAqIEByZXR1cm4gdGhlIHZhbHVlIGZvciB0aGUgZ2l2ZW4gdGltZSBmaWVsZCBvZiBkZWZhdWx0VmFsdWUgaWYgdGhlCisgICAgICogZmllbGQgaXMgdW5zZXQKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgZmluYWwgaW50IGludGVybmFsR2V0KGludCBmaWVsZCwgaW50IGRlZmF1bHRWYWx1ZSkgeworICAgICAgICByZXR1cm4gKHN0YW1wW2ZpZWxkXSA+IFVOU0VUKSA/IGZpZWxkc1tmaWVsZF0gOiBkZWZhdWx0VmFsdWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgdGltZSBmaWVsZCB3aXRoIHRoZSBnaXZlbiB2YWx1ZS4KKyAgICAgKiBAcGFyYW0gZmllbGQgdGhlIGdpdmVuIHRpbWUgZmllbGQuCisgICAgICogQHBhcmFtIHZhbHVlIHRoZSB2YWx1ZSB0byBiZSBzZXQgZm9yIHRoZSBnaXZlbiB0aW1lIGZpZWxkLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCB2b2lkIHNldChpbnQgZmllbGQsIGludCB2YWx1ZSkKKyAgICB7CisgICAgICAgIGlzVGltZVNldCA9IGZhbHNlOworICAgICAgICBmaWVsZHNbZmllbGRdID0gdmFsdWU7CisgICAgICAgIHN0YW1wW2ZpZWxkXSA9IG5leHRTdGFtcCsrOworICAgICAgICBhcmVGaWVsZHNTZXQgPSBmYWxzZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSB2YWx1ZXMgZm9yIHRoZSBmaWVsZHMgeWVhciwgbW9udGgsIGFuZCBkYXRlLgorICAgICAqIFByZXZpb3VzIHZhbHVlcyBvZiBvdGhlciBmaWVsZHMgYXJlIHJldGFpbmVkLiAgSWYgdGhpcyBpcyBub3QgZGVzaXJlZCwKKyAgICAgKiBjYWxsIDxjb2RlPmNsZWFyPC9jb2RlPiBmaXJzdC4KKyAgICAgKiBAcGFyYW0geWVhciB0aGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIFlFQVIgdGltZSBmaWVsZC4KKyAgICAgKiBAcGFyYW0gbW9udGggdGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSBNT05USCB0aW1lIGZpZWxkLgorICAgICAqIE1vbnRoIHZhbHVlIGlzIDAtYmFzZWQuIGUuZy4sIDAgZm9yIEphbnVhcnkuCisgICAgICogQHBhcmFtIGRhdGUgdGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSBEQVRFIHRpbWUgZmllbGQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHZvaWQgc2V0KGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXRlKQorICAgIHsKKyAgICAgICAgc2V0KFlFQVIsIHllYXIpOworICAgICAgICBzZXQoTU9OVEgsIG1vbnRoKTsKKyAgICAgICAgc2V0KERBVEUsIGRhdGUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIHZhbHVlcyBmb3IgdGhlIGZpZWxkcyB5ZWFyLCBtb250aCwgZGF0ZSwgaG91ciwgYW5kIG1pbnV0ZS4KKyAgICAgKiBQcmV2aW91cyB2YWx1ZXMgb2Ygb3RoZXIgZmllbGRzIGFyZSByZXRhaW5lZC4gIElmIHRoaXMgaXMgbm90IGRlc2lyZWQsCisgICAgICogY2FsbCA8Y29kZT5jbGVhcjwvY29kZT4gZmlyc3QuCisgICAgICogQHBhcmFtIHllYXIgdGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSBZRUFSIHRpbWUgZmllbGQuCisgICAgICogQHBhcmFtIG1vbnRoIHRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgTU9OVEggdGltZSBmaWVsZC4KKyAgICAgKiBNb250aCB2YWx1ZSBpcyAwLWJhc2VkLiBlLmcuLCAwIGZvciBKYW51YXJ5LgorICAgICAqIEBwYXJhbSBkYXRlIHRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgREFURSB0aW1lIGZpZWxkLgorICAgICAqIEBwYXJhbSBob3VyIHRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgSE9VUl9PRl9EQVkgdGltZSBmaWVsZC4KKyAgICAgKiBAcGFyYW0gbWludXRlIHRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgTUlOVVRFIHRpbWUgZmllbGQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHZvaWQgc2V0KGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXRlLCBpbnQgaG91ciwgaW50IG1pbnV0ZSkKKyAgICB7CisgICAgICAgIHNldChZRUFSLCB5ZWFyKTsKKyAgICAgICAgc2V0KE1PTlRILCBtb250aCk7CisgICAgICAgIHNldChEQVRFLCBkYXRlKTsKKyAgICAgICAgc2V0KEhPVVJfT0ZfREFZLCBob3VyKTsKKyAgICAgICAgc2V0KE1JTlVURSwgbWludXRlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSB2YWx1ZXMgZm9yIHRoZSBmaWVsZHMgeWVhciwgbW9udGgsIGRhdGUsIGhvdXIsIG1pbnV0ZSwgYW5kIHNlY29uZC4KKyAgICAgKiBQcmV2aW91cyB2YWx1ZXMgb2Ygb3RoZXIgZmllbGRzIGFyZSByZXRhaW5lZC4gIElmIHRoaXMgaXMgbm90IGRlc2lyZWQsCisgICAgICogY2FsbCA8Y29kZT5jbGVhcjwvY29kZT4gZmlyc3QuCisgICAgICogQHBhcmFtIHllYXIgdGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSBZRUFSIHRpbWUgZmllbGQuCisgICAgICogQHBhcmFtIG1vbnRoIHRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgTU9OVEggdGltZSBmaWVsZC4KKyAgICAgKiBNb250aCB2YWx1ZSBpcyAwLWJhc2VkLiBlLmcuLCAwIGZvciBKYW51YXJ5LgorICAgICAqIEBwYXJhbSBkYXRlIHRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgREFURSB0aW1lIGZpZWxkLgorICAgICAqIEBwYXJhbSBob3VyIHRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgSE9VUl9PRl9EQVkgdGltZSBmaWVsZC4KKyAgICAgKiBAcGFyYW0gbWludXRlIHRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgTUlOVVRFIHRpbWUgZmllbGQuCisgICAgICogQHBhcmFtIHNlY29uZCB0aGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIFNFQ09ORCB0aW1lIGZpZWxkLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCB2b2lkIHNldChpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF0ZSwgaW50IGhvdXIsIGludCBtaW51dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZWNvbmQpCisgICAgeworICAgICAgICBzZXQoWUVBUiwgeWVhcik7CisgICAgICAgIHNldChNT05USCwgbW9udGgpOworICAgICAgICBzZXQoREFURSwgZGF0ZSk7CisgICAgICAgIHNldChIT1VSX09GX0RBWSwgaG91cik7CisgICAgICAgIHNldChNSU5VVEUsIG1pbnV0ZSk7CisgICAgICAgIHNldChTRUNPTkQsIHNlY29uZCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ2xlYXJzIHRoZSB2YWx1ZXMgb2YgYWxsIHRoZSB0aW1lIGZpZWxkcy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgdm9pZCBjbGVhcigpCisgICAgeworICAgICAgICBmb3IgKGludCBpPTA7IGk8ZmllbGRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBmaWVsZHNbaV0gPSBzdGFtcFtpXSA9IDA7IC8vIFVOU0VUID09IDAKKyAgICAgICAgfQorICAgICAgICBhcmVGaWVsZHNTZXQgPSBmYWxzZTsKKyAgICAgICAgYXJlQWxsRmllbGRzU2V0ID0gZmFsc2U7CisgICAgICAgIGlzVGltZVNldCA9IGZhbHNlOworICAgIH0KKworICAgIC8qKgorICAgICAqIENsZWFycyB0aGUgdmFsdWUgaW4gdGhlIGdpdmVuIHRpbWUgZmllbGQuCisgICAgICogQHBhcmFtIGZpZWxkIHRoZSB0aW1lIGZpZWxkIHRvIGJlIGNsZWFyZWQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHZvaWQgY2xlYXIoaW50IGZpZWxkKQorICAgIHsKKyAgICAgICAgZmllbGRzW2ZpZWxkXSA9IDA7CisgICAgICAgIHN0YW1wW2ZpZWxkXSA9IFVOU0VUOworICAgICAgICBhcmVGaWVsZHNTZXQgPSBmYWxzZTsKKyAgICAgICAgYXJlQWxsRmllbGRzU2V0ID0gZmFsc2U7CisgICAgICAgIGlzVGltZVNldCA9IGZhbHNlOworICAgIH0KKworICAgIC8qKgorICAgICAqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIHRpbWUgZmllbGQgaGFzIGEgdmFsdWUgc2V0LgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgZ2l2ZW4gdGltZSBmaWVsZCBoYXMgYSB2YWx1ZSBzZXQ7IGZhbHNlIG90aGVyd2lzZS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgYm9vbGVhbiBpc1NldChpbnQgZmllbGQpCisgICAgeworICAgICAgICByZXR1cm4gc3RhbXBbZmllbGRdICE9IFVOU0VUOworICAgIH0KKworICAgIC8qKgorICAgICAqIEZpbGxzIGluIGFueSB1bnNldCBmaWVsZHMgaW4gdGhlIHRpbWUgZmllbGQgbGlzdC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgdm9pZCBjb21wbGV0ZSgpCisgICAgeworICAgICAgICBpZiAoIWlzVGltZVNldCkgdXBkYXRlVGltZSgpOworICAgICAgICBpZiAoIWFyZUZpZWxkc1NldCkgeworICAgICAgICAgICAgY29tcHV0ZUZpZWxkcygpOyAvLyBmaWxscyBpbiB1bnNldCBmaWVsZHMKKyAgICAgICAgICAgIGFyZUZpZWxkc1NldCA9IHRydWU7CisgICAgICAgICAgICBhcmVBbGxGaWVsZHNTZXQgPSB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29tcGFyZXMgdGhpcyBjYWxlbmRhciB0byB0aGUgc3BlY2lmaWVkIG9iamVjdC4KKyAgICAgKiBUaGUgcmVzdWx0IGlzIDxjb2RlPnRydWU8L2NvZGU+IGlmIGFuZCBvbmx5IGlmIHRoZSBhcmd1bWVudCBpcworICAgICAqIG5vdCA8Y29kZT5udWxsPC9jb2RlPiBhbmQgaXMgYSA8Y29kZT5DYWxlbmRhcjwvY29kZT4gb2JqZWN0IHRoYXQKKyAgICAgKiByZXByZXNlbnRzIHRoZSBzYW1lIGNhbGVuZGFyIGFzIHRoaXMgb2JqZWN0LgorICAgICAqIEBwYXJhbSBvYmogdGhlIG9iamVjdCB0byBjb21wYXJlIHdpdGguCisgICAgICogQHJldHVybiA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgb2JqZWN0cyBhcmUgdGhlIHNhbWU7CisgICAgICogPGNvZGU+ZmFsc2U8L2NvZGU+IG90aGVyd2lzZS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG9iaikgeworICAgICAgICBpZiAodGhpcyA9PSBvYmopIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGlmICh0aGlzLmdldENsYXNzKCkgIT0gb2JqLmdldENsYXNzKCkpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIENhbGVuZGFyIHRoYXQgPSAoQ2FsZW5kYXIpIG9iajsKKworICAgICAgICByZXR1cm4gaXNFcXVpdmFsZW50VG8odGhhdCkgJiYKKyAgICAgICAgICAgIGdldFRpbWVJbk1pbGxpcygpID09IHRoYXQuZ2V0VGltZSgpLmdldFRpbWUoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIENhbGVuZGFyIG9iamVjdCBpcyBlcXVpdmFsZW50IHRvIHRoaXMKKyAgICAgKiBvbmUuICBBbiBlcXVpdmFsZW50IENhbGVuZGFyIHdpbGwgYmVoYXZlIGV4YWN0bHkgYXMgdGhpcyBvbmUKKyAgICAgKiBkb2VzLCBidXQgaXQgbWF5IGJlIHNldCB0byBhIGRpZmZlcmVudCB0aW1lLiAgQnkgY29udHJhc3QsIGZvcgorICAgICAqIHRoZSBlcXVhbHMoKSBtZXRob2QgdG8gcmV0dXJuIHRydWUsIHRoZSBvdGhlciBDYWxlbmRhciBtdXN0CisgICAgICogYmUgc2V0IHRvIHRoZSBzYW1lIHRpbWUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gb3RoZXIgdGhlIENhbGVuZGFyIHRvIGJlIGNvbXBhcmVkIHdpdGggdGhpcyBDYWxlbmRhciAgIAorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNFcXVpdmFsZW50VG8oQ2FsZW5kYXIgb3RoZXIpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2xhc3MoKSA9PSBvdGhlci5nZXRDbGFzcygpICYmCisgICAgICAgICAgICBpc0xlbmllbnQoKSA9PSBvdGhlci5pc0xlbmllbnQoKSAmJgorICAgICAgICAgICAgZ2V0Rmlyc3REYXlPZldlZWsoKSA9PSBvdGhlci5nZXRGaXJzdERheU9mV2VlaygpICYmCisgICAgICAgICAgICBnZXRNaW5pbWFsRGF5c0luRmlyc3RXZWVrKCkgPT0gb3RoZXIuZ2V0TWluaW1hbERheXNJbkZpcnN0V2VlaygpICYmCisgICAgICAgICAgICBnZXRUaW1lWm9uZSgpLmVxdWFscyhvdGhlci5nZXRUaW1lWm9uZSgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgaGFzaCBjb2RlIGZvciB0aGlzIGNhbGVuZGFyLgorICAgICAqIEByZXR1cm4gYSBoYXNoIGNvZGUgdmFsdWUgZm9yIHRoaXMgb2JqZWN0LiAKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgeworICAgICAgICAvKiBEb24ndCBpbmNsdWRlIHRoZSB0aW1lIGJlY2F1c2UgKGEpIHdlIGRvbid0IHdhbnQgdGhlIGhhc2ggdmFsdWUgdG8KKyAgICAgICAgICogbW92ZSBhcm91bmQganVzdCBiZWNhdXNlIGEgY2FsZW5kYXIgaXMgc2V0IHRvIGRpZmZlcmVudCB0aW1lcywgYW5kCisgICAgICAgICAqIChiKSB3ZSBkb24ndCB3YW50IHRvIHRyaWdnZXIgYSB0aW1lIGNvbXB1dGF0aW9uIGp1c3QgdG8gZ2V0IGEgaGFzaC4KKyAgICAgICAgICogTm90ZSB0aGF0IGl0IGlzIG5vdCBuZWNlc3NhcnkgZm9yIHVuZXF1YWwgb2JqZWN0cyB0byBhbHdheXMgaGF2ZQorICAgICAgICAgKiB1bmVxdWFsIGhhc2hlcywgYnV0IGVxdWFsIG9iamVjdHMgbXVzdCBoYXZlIGVxdWFsIGhhc2hlcy4gICovCisgICAgICAgIHJldHVybiAobGVuaWVudCA/IDEgOiAwKQorICAgICAgICAgICAgfCAoZmlyc3REYXlPZldlZWsgPDwgMSkKKyAgICAgICAgICAgIHwgKG1pbmltYWxEYXlzSW5GaXJzdFdlZWsgPDwgNCkKKyAgICAgICAgICAgIHwgKHpvbmUuaGFzaENvZGUoKSA8PCA3KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGRpZmZlcmVuY2UgaW4gbWlsbGlzZWNvbmRzIGJldHdlZW4gdGhlIG1vbWVudCB0aGlzCisgICAgICogY2FsZW5kYXIgaXMgc2V0IHRvIGFuZCB0aGUgbW9tZW50IHRoZSBnaXZlbiBjYWxlbmRhciBvciBEYXRlIG9iamVjdAorICAgICAqIGlzIHNldCB0by4KKyAgICAgKi8KKyAgICBwcml2YXRlIGxvbmcgY29tcGFyZShPYmplY3QgdGhhdCkgeworICAgICAgICBsb25nIHRoYXRNczsKKyAgICAgICAgaWYgKHRoYXQgaW5zdGFuY2VvZiBDYWxlbmRhcikgeworICAgICAgICAgICAgdGhhdE1zID0gKChDYWxlbmRhcil0aGF0KS5nZXRUaW1lSW5NaWxsaXMoKTsKKyAgICAgICAgfSBlbHNlIGlmICh0aGF0IGluc3RhbmNlb2YgRGF0ZSkgeworICAgICAgICAgICAgdGhhdE1zID0gKChEYXRlKXRoYXQpLmdldFRpbWUoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24odGhhdCArICJpcyBub3QgYSBDYWxlbmRhciBvciBEYXRlIik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGdldFRpbWVJbk1pbGxpcygpIC0gdGhhdE1zOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbXBhcmVzIHRoZSB0aW1lIGZpZWxkIHJlY29yZHMuCisgICAgICogRXF1aXZhbGVudCB0byBjb21wYXJpbmcgcmVzdWx0IG9mIGNvbnZlcnNpb24gdG8gVVRDLgorICAgICAqIEBwYXJhbSB3aGVuIHRoZSBDYWxlbmRhciB0byBiZSBjb21wYXJlZCB3aXRoIHRoaXMgQ2FsZW5kYXIuCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSBjdXJyZW50IHRpbWUgb2YgdGhpcyBDYWxlbmRhciBpcyBiZWZvcmUKKyAgICAgKiB0aGUgdGltZSBvZiBDYWxlbmRhciB3aGVuOyBmYWxzZSBvdGhlcndpc2UuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gYmVmb3JlKE9iamVjdCB3aGVuKSB7CisgICAgICAgIHJldHVybiBjb21wYXJlKHdoZW4pIDwgMDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb21wYXJlcyB0aGUgdGltZSBmaWVsZCByZWNvcmRzLgorICAgICAqIEVxdWl2YWxlbnQgdG8gY29tcGFyaW5nIHJlc3VsdCBvZiBjb252ZXJzaW9uIHRvIFVUQy4KKyAgICAgKiBAcGFyYW0gd2hlbiB0aGUgQ2FsZW5kYXIgdG8gYmUgY29tcGFyZWQgd2l0aCB0aGlzIENhbGVuZGFyLgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgY3VycmVudCB0aW1lIG9mIHRoaXMgQ2FsZW5kYXIgaXMgYWZ0ZXIKKyAgICAgKiB0aGUgdGltZSBvZiBDYWxlbmRhciB3aGVuOyBmYWxzZSBvdGhlcndpc2UuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gYWZ0ZXIoT2JqZWN0IHdoZW4pIHsKKyAgICAgICAgcmV0dXJuIGNvbXBhcmUod2hlbikgPiAwOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbXBhcmVzIHRoaXMgQ2FsZW5kYXIgd2l0aCB0aGF0IERhdGUgb3IgQ2FsZW5kYXIncyB0aW1lLCB1c2luZworICAgICAqIHRoaXMgQ2FsZW5kYXIncyB0aW1lIHpvbmUsIHdpdGggdGhlIGdyYW51bGFyaXR5IG9mIHRoZSBwcm92aWRlZAorICAgICAqIGZpZWxkLiAgVGhlIHJldHVybiB2YWx1ZSBpcyAwIGlmIHRoZSB0aW1lIGlzIHRoZSBzYW1lLCA8MCBpZgorICAgICAqIHRoaXMgaXMgYmVmb3JlIHRoYXQsIGFuZCA+MCBpZiB0aGlzIGlzIGFmdGVyIHRoYXQuICBWYWxpZAorICAgICAqIHZhbHVlcyBmb3IgZmllbGQgYXJlIEVSQSwgWUVBUiwgTU9OVEgsIFdFRUtfT0ZfWUVBUiwgREFZX09GX1lFQVIsIEhPVVIsIE1JTlVURSwKKyAgICAgKiBTRUNPTkQuCisgICAgICogQHByb3RvdHlwZQorICAgICAqLworICAgIC8qIHB1YmxpYyAqLyBpbnQgY29tcGFyZShDYWxlbmRhciBjYWwsIGludCBmaWVsZCkgeworICAgICAgICByZXR1cm4gY29tcGFyZShuZXcgRGF0ZShjYWwuZ2V0VGltZUluTWlsbGlzKCkpLCBmaWVsZCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgaW50W10gRklFTERMSVNUID0geyBFUkEsIFlFQVIsIE1PTlRILCBXRUVLX09GX1lFQVIsIERBWV9PRl9ZRUFSLCBIT1VSLCBNSU5VVEUsIFNFQ09ORCB9OworCisgICAgLyogQHByb3RvdHlwZSAqLworICAgIC8qIHB1YmxpYyAqLyBpbnQgY29tcGFyZShEYXRlIHdoZW4sIGludCBmaWVsZCkgeworICAgICAgICBsb25nIG9sZG1zID0gZ2V0VGltZUluTWlsbGlzKCk7CisgICAgICAgIGludCByZXN1bHQgPSAtMjsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBGSUVMRExJU1QubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGludCBmID0gRklFTERMSVNUW2ldOworICAgICAgICAgICAgaW50IGRpZmYgPSBmaWVsZERpZmZlcmVuY2Uod2hlbiwgZik7CisgICAgICAgICAgICBpZiAoZGlmZiAhPSAwKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZGlmZiA+IDAgPyAxIDogLTE7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGYgPT0gZmllbGQpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSAwOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHNldFRpbWVJbk1pbGxpcyhvbGRtcyk7IC8vIHJlc3RvcmUgY2FsZW5kYXIKKyAgICAgICAgaWYgKHJlc3VsdCA9PSAtMikgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBmaWVsZDogIiArIGZpZWxkKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgbWF4aW11bSB2YWx1ZSB0aGF0IHRoaXMgZmllbGQgY291bGQgaGF2ZSwgZ2l2ZW4gdGhlCisgICAgICogY3VycmVudCBkYXRlLiAgRm9yIGV4YW1wbGUsIHdpdGggdGhlIEdyZWdvcmlhbiBkYXRlIEZlYnJ1YXJ5IDMsIDE5OTcKKyAgICAgKiBhbmQgdGhlIHtAbGluayAjREFZX09GX01PTlRIIERBWV9PRl9NT05USH0gZmllbGQsIHRoZSBhY3R1YWwgbWF4aW11bQorICAgICAqIGlzIDI4OyBmb3IgRmVicnVhcnkgMywgMTk5NiBpdCBpcyAyOS4KKyAgICAgKgorICAgICAqIDxwPlRoZSBhY3R1YWwgbWF4aW11bSBjb21wdXRhdGlvbiBpZ25vcmVzIHNtYWxsZXIgZmllbGRzIGFuZCB0aGUKKyAgICAgKiBjdXJyZW50IHZhbHVlIG9mIGxpa2Utc2l6ZWQgZmllbGRzLiAgRm9yIGV4YW1wbGUsIHRoZSBhY3R1YWwgbWF4aW11bQorICAgICAqIG9mIHRoZSBEQVlfT0ZfWUVBUiBvciBNT05USCBkZXBlbmRzIG9ubHkgb24gdGhlIHllYXIgYW5kIHN1cHJhLXllYXIKKyAgICAgKiBmaWVsZHMuICBUaGUgYWN0dWFsIG1heGltdW0gb2YgdGhlIERBWV9PRl9NT05USCBkZXBlbmRzLCBpbgorICAgICAqIGFkZGl0aW9uLCBvbiB0aGUgTU9OVEggZmllbGQgYW5kIGFueSBvdGhlciBmaWVsZHMgYXQgdGhhdAorICAgICAqIGdyYW51bGFyaXR5IChzdWNoIGFzIENoaW5lc2VDYWxlbmRhci5JU19MRUFQX01PTlRIKS4gIFRoZQorICAgICAqIERBWV9PRl9XRUVLX0lOX01PTlRIIGZpZWxkIGRvZXMgbm90IGRlcGVuZCBvbiB0aGUgY3VycmVudAorICAgICAqIERBWV9PRl9XRUVLOyBpdCByZXR1cm5zIHRoZSBtYXhpbXVtIGZvciBhbnkgZGF5IG9mIHdlZWsgaW4gdGhlCisgICAgICogY3VycmVudCBtb250aC4gIExpa2V3aXNlIGZvciB0aGUgV0VFS19PRl9NT05USCBhbmQgV0VFS19PRl9ZRUFSCisgICAgICogZmllbGRzLgorICAgICAqIAorICAgICAqIEBwYXJhbSBmaWVsZCB0aGUgZmllbGQgd2hvc2UgbWF4aW11bSBpcyBkZXNpcmVkCisgICAgICogQHJldHVybiB0aGUgbWF4aW11bSBvZiB0aGUgZ2l2ZW4gZmllbGQgZm9yIHRoZSBjdXJyZW50IGRhdGUgb2YgdGhpcyBjYWxlbmRhcgorICAgICAqIEBzZWUgI2dldE1heGltdW0KKyAgICAgKiBAc2VlICNnZXRMZWFzdE1heGltdW0KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldEFjdHVhbE1heGltdW0oaW50IGZpZWxkKSB7CisgICAgICAgIGludCByZXN1bHQ7CisgICAgICAgIAorICAgICAgICBzd2l0Y2ggKGZpZWxkKSB7CisgICAgICAgIGNhc2UgREFZX09GX01PTlRIOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIENhbGVuZGFyIGNhbCA9IChDYWxlbmRhcikgY2xvbmUoKTsKKyAgICAgICAgICAgICAgICBjYWwucHJlcGFyZUdldEFjdHVhbChmaWVsZCwgZmFsc2UpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGhhbmRsZUdldE1vbnRoTGVuZ3RoKGNhbC5nZXQoRVhURU5ERURfWUVBUiksIGNhbC5nZXQoTU9OVEgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgREFZX09GX1lFQVI6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQ2FsZW5kYXIgY2FsID0gKENhbGVuZGFyKSBjbG9uZSgpOworICAgICAgICAgICAgICAgIGNhbC5wcmVwYXJlR2V0QWN0dWFsKGZpZWxkLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gaGFuZGxlR2V0WWVhckxlbmd0aChjYWwuZ2V0KEVYVEVOREVEX1lFQVIpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgREFZX09GX1dFRUs6CisgICAgICAgIGNhc2UgQU1fUE06CisgICAgICAgIGNhc2UgSE9VUjoKKyAgICAgICAgY2FzZSBIT1VSX09GX0RBWToKKyAgICAgICAgY2FzZSBNSU5VVEU6CisgICAgICAgIGNhc2UgU0VDT05EOgorICAgICAgICBjYXNlIE1JTExJU0VDT05EOgorICAgICAgICBjYXNlIFpPTkVfT0ZGU0VUOgorICAgICAgICBjYXNlIERTVF9PRkZTRVQ6CisgICAgICAgIGNhc2UgRE9XX0xPQ0FMOgorICAgICAgICBjYXNlIEpVTElBTl9EQVk6CisgICAgICAgIGNhc2UgTUlMTElTRUNPTkRTX0lOX0RBWToKKyAgICAgICAgICAgIC8vIFRoZXNlIGZpZWxkcyBhbGwgaGF2ZSBmaXhlZCBtaW5pbWEvbWF4aW1hCisgICAgICAgICAgICByZXN1bHQgPSBnZXRNYXhpbXVtKGZpZWxkKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAvLyBGb3IgYWxsIG90aGVyIGZpZWxkcywgZG8gaXQgdGhlIGhhcmQgd2F5Li4uLgorICAgICAgICAgICAgcmVzdWx0ID0gZ2V0QWN0dWFsSGVscGVyKGZpZWxkLCBnZXRMZWFzdE1heGltdW0oZmllbGQpLCBnZXRNYXhpbXVtKGZpZWxkKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIG1pbmltdW0gdmFsdWUgdGhhdCB0aGlzIGZpZWxkIGNvdWxkIGhhdmUsIGdpdmVuIHRoZSBjdXJyZW50IGRhdGUuCisgICAgICogRm9yIG1vc3QgZmllbGRzLCB0aGlzIGlzIHRoZSBzYW1lIGFzIHtAbGluayAjZ2V0TWluaW11bSBnZXRNaW5pbXVtfQorICAgICAqIGFuZCB7QGxpbmsgI2dldEdyZWF0ZXN0TWluaW11bSBnZXRHcmVhdGVzdE1pbmltdW19LiAgSG93ZXZlciwgc29tZSBmaWVsZHMsCisgICAgICogZXNwZWNpYWxseSB0aG9zZSByZWxhdGVkIHRvIHdlZWsgbnVtYmVyLCBhcmUgbW9yZSBjb21wbGljYXRlZC4KKyAgICAgKiA8cD4KKyAgICAgKiBGb3IgZXhhbXBsZSwgYXNzdW1lIHtAbGluayAjZ2V0TWluaW1hbERheXNJbkZpcnN0V2VlayBnZXRNaW5pbWFsRGF5c0luRmlyc3RXZWVrfQorICAgICAqIHJldHVybnMgNCBhbmQge0BsaW5rICNnZXRGaXJzdERheU9mV2VlayBnZXRGaXJzdERheU9mV2Vla30gcmV0dXJucyBTVU5EQVkuCisgICAgICogSWYgdGhlIGZpcnN0IGRheSBvZiB0aGUgbW9udGggaXMgU3VuZGF5LCBNb25kYXksIFR1ZXNkYXksIG9yIFdlZG5lc2RheQorICAgICAqIHRoZXJlIHdpbGwgYmUgZm91ciBvciBtb3JlIGRheXMgaW4gdGhlIGZpcnN0IHdlZWssIHNvIGl0IHdpbGwgYmUgd2VlayBudW1iZXIgMSwKKyAgICAgKiBhbmQgPGNvZGU+Z2V0QWN0dWFsTWluaW11bShXRUVLX09GX01PTlRIKTwvY29kZT4gd2lsbCByZXR1cm4gMS4gIEhvd2V2ZXIsCisgICAgICogaWYgdGhlIGZpcnN0IG9mIHRoZSBtb250aCBpcyBhIFRodXJzZGF5LCBGcmlkYXksIG9yIFNhdHVyZGF5LCB0aGVyZSBhcmUKKyAgICAgKiA8ZW0+bm90PC9lbT4gZm91ciBkYXlzIGluIHRoYXQgd2Vlaywgc28gaXQgaXMgd2VlayBudW1iZXIgMCwgYW5kIAorICAgICAqIDxjb2RlPmdldEFjdHVhbE1pbmltdW0oV0VFS19PRl9NT05USCk8L2NvZGU+IHdpbGwgcmV0dXJuIDAuCisgICAgICogPHA+CisgICAgICogQHBhcmFtIGZpZWxkIHRoZSBmaWVsZCB3aG9zZSBhY3R1YWwgbWluaW11bSB2YWx1ZSBpcyBkZXNpcmVkLgorICAgICAqIEByZXR1cm4gdGhlIG1pbmltdW0gb2YgdGhlIGdpdmVuIGZpZWxkIGZvciB0aGUgY3VycmVudCBkYXRlIG9mIHRoaXMgY2FsZW5kYXIKKyAgICAgKgorICAgICAqIEBzZWUgI2dldE1pbmltdW0KKyAgICAgKiBAc2VlICNnZXRHcmVhdGVzdE1pbmltdW0KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldEFjdHVhbE1pbmltdW0oaW50IGZpZWxkKSB7CisgICAgICAgIGludCByZXN1bHQ7CisgICAgICAgIAorICAgICAgICBzd2l0Y2ggKGZpZWxkKSB7CisgICAgICAgIGNhc2UgREFZX09GX1dFRUs6CisgICAgICAgIGNhc2UgQU1fUE06CisgICAgICAgIGNhc2UgSE9VUjoKKyAgICAgICAgY2FzZSBIT1VSX09GX0RBWToKKyAgICAgICAgY2FzZSBNSU5VVEU6CisgICAgICAgIGNhc2UgU0VDT05EOgorICAgICAgICBjYXNlIE1JTExJU0VDT05EOgorICAgICAgICBjYXNlIFpPTkVfT0ZGU0VUOgorICAgICAgICBjYXNlIERTVF9PRkZTRVQ6CisgICAgICAgIGNhc2UgRE9XX0xPQ0FMOgorICAgICAgICBjYXNlIEpVTElBTl9EQVk6CisgICAgICAgIGNhc2UgTUlMTElTRUNPTkRTX0lOX0RBWToKKyAgICAgICAgICAgIC8vIFRoZXNlIGZpZWxkcyBhbGwgaGF2ZSBmaXhlZCBtaW5pbWEvbWF4aW1hCisgICAgICAgICAgICByZXN1bHQgPSBnZXRNaW5pbXVtKGZpZWxkKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAvLyBGb3IgYWxsIG90aGVyIGZpZWxkcywgZG8gaXQgdGhlIGhhcmQgd2F5Li4uLgorICAgICAgICAgICAgcmVzdWx0ID0gZ2V0QWN0dWFsSGVscGVyKGZpZWxkLCBnZXRHcmVhdGVzdE1pbmltdW0oZmllbGQpLCBnZXRNaW5pbXVtKGZpZWxkKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8qKgorICAgICAqIFByZXBhcmUgdGhpcyBjYWxlbmRhciBmb3IgY29tcHV0aW5nIHRoZSBhY3R1YWwgbWluaW11bSBvciBtYXhpbXVtLgorICAgICAqIFRoaXMgbWV0aG9kIG1vZGlmaWVzIHRoaXMgY2FsZW5kYXIncyBmaWVsZHM7IGl0IGlzIGNhbGxlZCBvbiBhCisgICAgICogdGVtcG9yYXJ5IGNhbGVuZGFyLgorICAgICAqCisgICAgICogPHA+UmF0aW9uYWxlOiBUaGUgc2VtYW50aWNzIG9mIGdldEFjdHVhbFh4eCgpIGlzIHRvIHJldHVybiB0aGUKKyAgICAgKiBtYXhpbXVtIG9yIG1pbmltdW0gdmFsdWUgdGhhdCB0aGUgZ2l2ZW4gZmllbGQgY2FuIHRha2UsIHRha2luZyBpbnRvCisgICAgICogYWNjb3VudCBvdGhlciByZWxldmFudCBmaWVsZHMuICBJbiBnZW5lcmFsIHRoZXNlIG90aGVyIGZpZWxkcyBhcmUKKyAgICAgKiBsYXJnZXIgZmllbGRzLiAgRm9yIGV4YW1wbGUsIHdoZW4gY29tcHV0aW5nIHRoZSBhY3R1YWwgbWF4aW11bQorICAgICAqIERBWV9PRl9NT05USCwgdGhlIGN1cnJlbnQgdmFsdWUgb2YgREFZX09GX01PTlRIIGl0c2VsZiBpcyBpZ25vcmVkLAorICAgICAqIGFzIGlzIHRoZSB2YWx1ZSBvZiBhbnkgZmllbGQgc21hbGxlci4KKyAgICAgKgorICAgICAqIDxwPlRoZSB0aW1lIGZpZWxkcyBhbGwgaGF2ZSBmaXhlZCBtaW5pbWEgYW5kIG1heGltYSwgc28gd2UgZG9uJ3QKKyAgICAgKiBuZWVkIHRvIHdvcnJ5IGFib3V0IHRoZW0uICBUaGlzIGFsc28gbGV0cyB1cyBzZXQgdGhlCisgICAgICogTUlMTElTRUNPTkRTX0lOX0RBWSB0byB6ZXJvIHRvIGVyYXNlIGFueSBlZmZlY3RzIHRoZSB0aW1lIGZpZWxkcworICAgICAqIG1pZ2h0IGhhdmUgd2hlbiBjb21wdXRpbmcgZGF0ZSBmaWVsZHMuCisgICAgICoKKyAgICAgKiA8cD5EQVlfT0ZfV0VFSyBpcyBhZGp1c3RlZCBzcGVjaWFsbHkgZm9yIHRoZSBXRUVLX09GX01PTlRIIGFuZAorICAgICAqIFdFRUtfT0ZfWUVBUiBmaWVsZHMgdG8gZW5zdXJlIHRoYXQgdGhleSBhcmUgY29tcHV0ZWQgY29ycmVjdGx5LgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHByb3RlY3RlZCB2b2lkIHByZXBhcmVHZXRBY3R1YWwoaW50IGZpZWxkLCBib29sZWFuIGlzTWluaW11bSkgeworICAgICAgICBzZXQoTUlMTElTRUNPTkRTX0lOX0RBWSwgMCk7CisKKyAgICAgICAgc3dpdGNoIChmaWVsZCkgeworICAgICAgICBjYXNlIFlFQVI6CisgICAgICAgIGNhc2UgWUVBUl9XT1k6CisgICAgICAgIGNhc2UgRVhURU5ERURfWUVBUjoKKyAgICAgICAgICAgIHNldChEQVlfT0ZfWUVBUiwgZ2V0R3JlYXRlc3RNaW5pbXVtKERBWV9PRl9ZRUFSKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBNT05USDoKKyAgICAgICAgICAgIHNldChEQVlfT0ZfTU9OVEgsIGdldEdyZWF0ZXN0TWluaW11bShEQVlfT0ZfTU9OVEgpKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgREFZX09GX1dFRUtfSU5fTU9OVEg6CisgICAgICAgICAgICAvLyBGb3IgZG93aW0sIHRoZSBtYXhpbXVtIG9jY3VycyBmb3IgdGhlIERPVyBvZiB0aGUgZmlyc3Qgb2YgdGhlCisgICAgICAgICAgICAvLyBtb250aC4KKyAgICAgICAgICAgIHNldChEQVlfT0ZfTU9OVEgsIDEpOworICAgICAgICAgICAgc2V0KERBWV9PRl9XRUVLLCBnZXQoREFZX09GX1dFRUspKTsgLy8gTWFrZSB0aGlzIHVzZXIgc2V0CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBXRUVLX09GX01PTlRIOgorICAgICAgICBjYXNlIFdFRUtfT0ZfWUVBUjoKKyAgICAgICAgICAgIC8vIElmIHdlJ3JlIGNvdW50aW5nIHdlZWtzLCBzZXQgdGhlIGRheSBvZiB0aGUgd2VlayB0byBlaXRoZXIgdGhlCisgICAgICAgICAgICAvLyBmaXJzdCBvciBsYXN0IGxvY2FsaXplZCBET1cuICBXZSBrbm93IHRoZSBsYXN0IHdlZWsgb2YgYSBtb250aAorICAgICAgICAgICAgLy8gb3IgeWVhciB3aWxsIGNvbnRhaW4gdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlaywgYW5kIHRoYXQgdGhlCisgICAgICAgICAgICAvLyBmaXJzdCB3ZWVrIHdpbGwgY29udGFpbiB0aGUgbGFzdCBET1cuCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaW50IGRvdyA9IGZpcnN0RGF5T2ZXZWVrOworICAgICAgICAgICAgICAgIGlmIChpc01pbmltdW0pIHsKKyAgICAgICAgICAgICAgICAgICAgZG93ID0gKGRvdyArIDYpICUgNzsgLy8gc2V0IHRvIGxhc3QgRE9XCisgICAgICAgICAgICAgICAgICAgIGlmIChkb3cgPCBTVU5EQVkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvdyArPSA3OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHNldChEQVlfT0ZfV0VFSywgZG93KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgLy8gRG8gdGhpcyBsYXN0IHRvIGdpdmUgaXQgdGhlIG5ld2VzdCB0aW1lIHN0YW1wCisgICAgICAgIHNldChmaWVsZCwgZ2V0R3JlYXRlc3RNaW5pbXVtKGZpZWxkKSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBpbnQgZ2V0QWN0dWFsSGVscGVyKGludCBmaWVsZCwgaW50IHN0YXJ0VmFsdWUsIGludCBlbmRWYWx1ZSkgeworCisgICAgICAgIGlmIChzdGFydFZhbHVlID09IGVuZFZhbHVlKSB7CisgICAgICAgICAgICAvLyBpZiB3ZSBrbm93IHRoYXQgdGhlIG1heGltdW0gdmFsdWUgaXMgYWx3YXlzIHRoZSBzYW1lLCBqdXN0IHJldHVybiBpdAorICAgICAgICAgICAgcmV0dXJuIHN0YXJ0VmFsdWU7CisgICAgICAgIH0gCisKKyAgICAgICAgZmluYWwgaW50IGRlbHRhID0gKGVuZFZhbHVlID4gc3RhcnRWYWx1ZSkgPyAxIDogLTE7CisKKyAgICAgICAgLy8gY2xvbmUgdGhlIGNhbGVuZGFyIHNvIHdlIGRvbid0IG1lc3Mgd2l0aCB0aGUgcmVhbCBvbmUsIGFuZCBzZXQgaXQgdG8KKyAgICAgICAgLy8gYWNjZXB0IGFueXRoaW5nIGZvciB0aGUgZmllbGQgdmFsdWVzCisgICAgICAgIENhbGVuZGFyIHdvcmsgPSAoQ2FsZW5kYXIpIGNsb25lKCk7CisgICAgICAgIHdvcmsuc2V0TGVuaWVudCh0cnVlKTsKKyAgICAgICAgd29yay5wcmVwYXJlR2V0QWN0dWFsKGZpZWxkLCBkZWx0YSA8IDApOworICAgICAgICAKKyAgICAgICAgLy8gbm93IHRyeSBlYWNoIHZhbHVlIGZyb20gdGhlIHN0YXJ0IHRvIHRoZSBlbmQgb25lIGJ5IG9uZSB1bnRpbAorICAgICAgICAvLyB3ZSBnZXQgYSB2YWx1ZSB0aGF0IG5vcm1hbGl6ZXMgdG8gYW5vdGhlciB2YWx1ZS4gIFRoZSBsYXN0IHZhbHVlIHRoYXQKKyAgICAgICAgLy8gbm9ybWFsaXplcyB0byBpdHNlbGYgaXMgdGhlIGFjdHVhbCBtYXhpbXVtIGZvciB0aGUgY3VycmVudCBkYXRlCisgICAgICAgIGludCByZXN1bHQgPSBzdGFydFZhbHVlOworICAgICAgICBkbyB7CisgICAgICAgICAgICB3b3JrLnNldChmaWVsZCwgc3RhcnRWYWx1ZSk7CisgICAgICAgICAgICBpZiAod29yay5nZXQoZmllbGQpICE9IHN0YXJ0VmFsdWUpIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gc3RhcnRWYWx1ZTsKKyAgICAgICAgICAgICAgICBzdGFydFZhbHVlICs9IGRlbHRhOworICAgICAgICAgICAgfQorICAgICAgICB9IHdoaWxlIChyZXN1bHQgIT0gZW5kVmFsdWUpOworCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJvbGxzICh1cC9kb3duKSBhIHNpbmdsZSB1bml0IG9mIHRpbWUgb24gdGhlIGdpdmVuIGZpZWxkLiAgSWYgdGhlCisgICAgICogZmllbGQgaXMgcm9sbGVkIHBhc3QgaXRzIG1heGltdW0gYWxsb3dhYmxlIHZhbHVlLCBpdCB3aWxsICJ3cmFwIiBiYWNrCisgICAgICogdG8gaXRzIG1pbmltdW0gYW5kIGNvbnRpbnVlIHJvbGxpbmcuIEZvcgorICAgICAqIGV4YW1wbGUsIHRvIHJvbGwgdGhlIGN1cnJlbnQgZGF0ZSB1cCBieSBvbmUgZGF5LCB5b3UgY2FuIGNhbGw6CisgICAgICogPHA+CisgICAgICogPGNvZGU+cm9sbCh7QGxpbmsgI0RBVEV9LCB0cnVlKTwvY29kZT4KKyAgICAgKiA8cD4KKyAgICAgKiBXaGVuIHJvbGxpbmcgb24gdGhlIHtAbGluayAjWUVBUn0gZmllbGQsIGl0IHdpbGwgcm9sbCB0aGUgeWVhcgorICAgICAqIHZhbHVlIGluIHRoZSByYW5nZSBiZXR3ZWVuIDEgYW5kIHRoZSB2YWx1ZSByZXR1cm5lZCBieSBjYWxsaW5nCisgICAgICoge0BsaW5rICNnZXRNYXhpbXVtIGdldE1heGltdW19KHtAbGluayAjWUVBUn0pLgorICAgICAqIDxwPgorICAgICAqIFdoZW4gcm9sbGluZyBvbiBjZXJ0YWluIGZpZWxkcywgdGhlIHZhbHVlcyBvZiBvdGhlciBmaWVsZHMgbWF5IGNvbmZsaWN0IGFuZAorICAgICAqIG5lZWQgdG8gYmUgY2hhbmdlZC4gIEZvciBleGFtcGxlLCB3aGVuIHJvbGxpbmcgdGhlIDxjb2RlPk1PTlRIPC9jb2RlPiBmaWVsZAorICAgICAqIGZvciB0aGUgR3JlZ29yaWFuIGRhdGUgMS8zMS85NiB1cHdhcmQsIHRoZSA8Y29kZT5EQVlfT0ZfTU9OVEg8L2NvZGU+IGZpZWxkCisgICAgICogbXVzdCBiZSBhZGp1c3RlZCBzbyB0aGF0IHRoZSByZXN1bHQgaXMgMi8yOS85NiByYXRoZXIgdGhhbiB0aGUgaW52YWxpZAorICAgICAqIDIvMzEvOTYuCisgICAgICogPHA+CisgICAgICogPGI+Tm90ZTo8L2I+IENhbGxpbmcgPHR0PnJvbGwoZmllbGQsIHRydWUpPC90dD4gTiB0aW1lcyBpcyA8ZW0+bm90PC9lbT4KKyAgICAgKiBuZWNlc3NhcmlseSBlcXVpdmFsZW50IHRvIGNhbGxpbmcgPHR0PnJvbGwoZmllbGQsIE4pPC90dD4uICBGb3IgZXhhbXBsZSwKKyAgICAgKiBpbWFnaW5lIHRoYXQgeW91IHN0YXJ0IHdpdGggdGhlIGRhdGUgR3JlZ29yaWFuIGRhdGUgSmFudWFyeSAzMSwgMTk5NS4gIElmIHlvdSBjYWxsCisgICAgICogPHR0PnJvbGwoQ2FsZW5kYXIuTU9OVEgsIDIpPC90dD4sIHRoZSByZXN1bHQgd2lsbCBiZSBNYXJjaCAzMSwgMTk5NS4KKyAgICAgKiBCdXQgaWYgeW91IGNhbGwgPHR0PnJvbGwoQ2FsZW5kYXIuTU9OVEgsIHRydWUpPC90dD4sIHRoZSByZXN1bHQgd2lsbCBiZQorICAgICAqIEZlYnJ1YXJ5IDI4LCAxOTk1LiAgQ2FsbGluZyBpdCBvbmUgbW9yZSB0aW1lIHdpbGwgZ2l2ZSBNYXJjaCAyOCwgMTk5NSwgd2hpY2gKKyAgICAgKiBpcyB1c3VhbGx5IG5vdCB0aGUgZGVzaXJlZCByZXN1bHQuCisgICAgICogPHA+CisgICAgICogPGI+Tm90ZTo8L2I+IFlvdSBzaG91bGQgYWx3YXlzIHVzZSA8dHQ+cm9sbDwvdHQ+IGFuZCA8dHQ+YWRkPC90dD4gcmF0aGVyCisgICAgICogdGhhbiBhdHRlbXB0aW5nIHRvIHBlcmZvcm0gYXJpdGhtZXRpYyBvcGVyYXRpb25zIGRpcmVjdGx5IG9uIHRoZSBmaWVsZHMKKyAgICAgKiBvZiBhIDx0dD5DYWxlbmRhcjwvdHQ+LiAgSXQgaXMgcXVpdGUgcG9zc2libGUgZm9yIDx0dD5DYWxlbmRhcjwvdHQ+IHN1YmNsYXNzZXMKKyAgICAgKiB0byBoYXZlIGZpZWxkcyB3aXRoIG5vbi1saW5lYXIgYmVoYXZpb3IsIGZvciBleGFtcGxlIG1pc3NpbmcgbW9udGhzCisgICAgICogb3IgZGF5cyBkdXJpbmcgbm9uLWxlYXAgeWVhcnMuICBUaGUgc3ViY2xhc3NlcycgPHR0PmFkZDwvdHQ+IGFuZCA8dHQ+cm9sbDwvdHQ+CisgICAgICogbWV0aG9kcyB3aWxsIHRha2UgdGhpcyBpbnRvIGFjY291bnQsIHdoaWxlIHNpbXBsZSBhcml0aG1ldGljIG1hbmlwdWxhdGlvbnMKKyAgICAgKiBtYXkgZ2l2ZSBpbnZhbGlkIHJlc3VsdHMuCisgICAgICogPHA+CisgICAgICogQHBhcmFtIGZpZWxkIHRoZSBjYWxlbmRhciBmaWVsZCB0byByb2xsLgorICAgICAqCisgICAgICogQHBhcmFtIHVwICAgIGluZGljYXRlcyBpZiB0aGUgdmFsdWUgb2YgdGhlIHNwZWNpZmllZCB0aW1lIGZpZWxkIGlzIHRvIGJlCisgICAgICogICAgICAgICAgICAgIHJvbGxlZCB1cCBvciByb2xsZWQgZG93bi4gVXNlIDxjb2RlPnRydWU8L2NvZGU+IGlmIHJvbGxpbmcgdXAsCisgICAgICogICAgICAgICAgICAgIDxjb2RlPmZhbHNlPC9jb2RlPiBvdGhlcndpc2UuCisgICAgICoKKyAgICAgKiBAZXhjZXB0aW9uICAgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBmaWVsZCBpcyBpbnZhbGlkIG9yIHJlZmVycworICAgICAqICAgICAgICAgICAgICB0byBhIGZpZWxkIHRoYXQgY2Fubm90IGJlIGhhbmRsZWQgYnkgdGhpcyBtZXRob2QuCisgICAgICogQHNlZSAjcm9sbChpbnQsIGludCkKKyAgICAgKiBAc2VlICNhZGQKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgdm9pZCByb2xsKGludCBmaWVsZCwgYm9vbGVhbiB1cCkKKyAgICB7CisgICAgICAgIHJvbGwoZmllbGQsIHVwID8gKzEgOiAtMSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUm9sbHMgKHVwL2Rvd24pIGEgc3BlY2lmaWVkIGFtb3VudCB0aW1lIG9uIHRoZSBnaXZlbiBmaWVsZC4gIEZvcgorICAgICAqIGV4YW1wbGUsIHRvIHJvbGwgdGhlIGN1cnJlbnQgZGF0ZSB1cCBieSB0aHJlZSBkYXlzLCB5b3UgY2FuIGNhbGwKKyAgICAgKiA8Y29kZT5yb2xsKENhbGVuZGFyLkRBVEUsIDMpPC9jb2RlPi4gIElmIHRoZQorICAgICAqIGZpZWxkIGlzIHJvbGxlZCBwYXN0IGl0cyBtYXhpbXVtIGFsbG93YWJsZSB2YWx1ZSwgaXQgd2lsbCAid3JhcCIgYmFjaworICAgICAqIHRvIGl0cyBtaW5pbXVtIGFuZCBjb250aW51ZSByb2xsaW5nLiAgCisgICAgICogRm9yIGV4YW1wbGUsIGNhbGxpbmcgPGNvZGU+cm9sbChDYWxlbmRhci5EQVRFLCAxMCk8L2NvZGU+CisgICAgICogb24gYSBHcmVnb3JpYW4gY2FsZW5kYXIgc2V0IHRvIDQvMjUvOTYgd2lsbCByZXN1bHQgaW4gdGhlIGRhdGUgNC81Lzk2LgorICAgICAqIDxwPgorICAgICAqIFdoZW4gcm9sbGluZyBvbiBjZXJ0YWluIGZpZWxkcywgdGhlIHZhbHVlcyBvZiBvdGhlciBmaWVsZHMgbWF5IGNvbmZsaWN0IGFuZAorICAgICAqIG5lZWQgdG8gYmUgY2hhbmdlZC4gIEZvciBleGFtcGxlLCB3aGVuIHJvbGxpbmcgdGhlIHtAbGluayAjTU9OVEggTU9OVEh9IGZpZWxkCisgICAgICogZm9yIHRoZSBHcmVnb3JpYW4gZGF0ZSAxLzMxLzk2IGJ5ICsxLCB0aGUge0BsaW5rICNEQVlfT0ZfTU9OVEggREFZX09GX01PTlRIfSBmaWVsZAorICAgICAqIG11c3QgYmUgYWRqdXN0ZWQgc28gdGhhdCB0aGUgcmVzdWx0IGlzIDIvMjkvOTYgcmF0aGVyIHRoYW4gdGhlIGludmFsaWQKKyAgICAgKiAyLzMxLzk2LgorICAgICAqIDxwPgorICAgICAqIFRoZSA8Y29kZT5jb20uaWJtLmljdS51dGlsLkNhbGVuZGFyPC9jb2RlPiBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIG1ldGhvZCBpcyBhYmxlIHRvIHJvbGwKKyAgICAgKiBhbGwgZmllbGRzIGV4Y2VwdCBmb3Ige0BsaW5rICNFUkEgRVJBfSwge0BsaW5rICNEU1RfT0ZGU0VUIERTVF9PRkZTRVR9LAorICAgICAqIGFuZCB7QGxpbmsgI1pPTkVfT0ZGU0VUIFpPTkVfT0ZGU0VUfS4gIFN1YmNsYXNzZXMgbWF5LCBvZiBjb3Vyc2UsIGFkZCBzdXBwb3J0IGZvcgorICAgICAqIGFkZGl0aW9uYWwgZmllbGRzIGluIHRoZWlyIG92ZXJyaWRlcyBvZiA8Y29kZT5yb2xsPC9jb2RlPi4KKyAgICAgKiA8cD4KKyAgICAgKiA8Yj5Ob3RlOjwvYj4gWW91IHNob3VsZCBhbHdheXMgdXNlIDx0dD5yb2xsPC90dD4gYW5kIDx0dD5hZGQ8L3R0PiByYXRoZXIKKyAgICAgKiB0aGFuIGF0dGVtcHRpbmcgdG8gcGVyZm9ybSBhcml0aG1ldGljIG9wZXJhdGlvbnMgZGlyZWN0bHkgb24gdGhlIGZpZWxkcworICAgICAqIG9mIGEgPHR0PkNhbGVuZGFyPC90dD4uICBJdCBpcyBxdWl0ZSBwb3NzaWJsZSBmb3IgPHR0PkNhbGVuZGFyPC90dD4gc3ViY2xhc3NlcworICAgICAqIHRvIGhhdmUgZmllbGRzIHdpdGggbm9uLWxpbmVhciBiZWhhdmlvciwgZm9yIGV4YW1wbGUgbWlzc2luZyBtb250aHMKKyAgICAgKiBvciBkYXlzIGR1cmluZyBub24tbGVhcCB5ZWFycy4gIFRoZSBzdWJjbGFzc2VzJyA8dHQ+YWRkPC90dD4gYW5kIDx0dD5yb2xsPC90dD4KKyAgICAgKiBtZXRob2RzIHdpbGwgdGFrZSB0aGlzIGludG8gYWNjb3VudCwgd2hpbGUgc2ltcGxlIGFyaXRobWV0aWMgbWFuaXB1bGF0aW9ucworICAgICAqIG1heSBnaXZlIGludmFsaWQgcmVzdWx0cy4KKyAgICAgKiA8cD4KKyAgICAgKiA8Yj5TdWJjbGFzc2luZzo8L2I+PGJyPgorICAgICAqIFRoaXMgaW1wbGVtZW50YXRpb24gb2YgPGNvZGU+cm9sbDwvY29kZT4gYXNzdW1lcyB0aGF0IHRoZSBiZWhhdmlvciBvZiB0aGUKKyAgICAgKiBmaWVsZCBpcyBjb250aW51b3VzIGJldHdlZW4gaXRzIG1pbmltdW0gYW5kIG1heGltdW0sIHdoaWNoIGFyZSBmb3VuZCBieQorICAgICAqIGNhbGxpbmcge0BsaW5rICNnZXRBY3R1YWxNaW5pbXVtIGdldEFjdHVhbE1pbmltdW19IGFuZCB7QGxpbmsgI2dldEFjdHVhbE1heGltdW0gZ2V0QWN0dWFsTWF4aW11bX0uCisgICAgICogRm9yIG1vc3Qgc3VjaCBmaWVsZHMsIHNpbXBsZSBhZGRpdGlvbiwgc3VidHJhY3Rpb24sIGFuZCBtb2R1bHVzIG9wZXJhdGlvbnMKKyAgICAgKiBhcmUgc3VmZmljaWVudCB0byBwZXJmb3JtIHRoZSByb2xsLiAgRm9yIHdlZWstcmVsYXRlZCBmaWVsZHMsCisgICAgICogdGhlIHJlc3VsdHMgb2Yge0BsaW5rICNnZXRGaXJzdERheU9mV2VlayBnZXRGaXJzdERheU9mV2Vla30gYW5kCisgICAgICoge0BsaW5rICNnZXRNaW5pbWFsRGF5c0luRmlyc3RXZWVrIGdldE1pbmltYWxEYXlzSW5GaXJzdFdlZWt9IGFyZSBhbHNvIG5lY2Vzc2FyeS4KKyAgICAgKiBTdWJjbGFzc2VzIGNhbiBvdmVycmlkZSB0aGVzZSB0d28gbWV0aG9kcyBpZiB0aGVpciB2YWx1ZXMgZGlmZmVyIGZyb20gdGhlIGRlZmF1bHRzLgorICAgICAqIDxwPgorICAgICAqIFN1YmNsYXNzZXMgdGhhdCBoYXZlIGZpZWxkcyBmb3Igd2hpY2ggdGhlIGFzc3VtcHRpb24gb2YgY29udGludWl0eSBicmVha3MKKyAgICAgKiBkb3duIG11c3Qgb3ZlcmlkZSA8Y29kZT5yb2xsPC9jb2RlPiB0byBoYW5kbGUgdGhvc2UgZmllbGRzIHNwZWNpYWxseS4KKyAgICAgKiBGb3IgZXhhbXBsZSwgaW4gdGhlIEhlYnJldyBjYWxlbmRhciB0aGUgbW9udGggIkFkYXIgSSIKKyAgICAgKiBvbmx5IG9jY3VycyBpbiBsZWFwIHllYXJzOyBpbiBvdGhlciB5ZWFycyB0aGUgY2FsZW5kYXIganVtcHMgZnJvbQorICAgICAqIFNoZXZhdCAobW9udGggIzQpIHRvIEFkYXIgKG1vbnRoICM2KS4gIFRoZSAKKyAgICAgKiB7QGxpbmsgSGVicmV3Q2FsZW5kYXIjcm9sbCBIZWJyZXdDYWxlbmRhci5yb2xsfSBtZXRob2QgdGFrZXMgdGhpcyBpbnRvIGFjY291bnQsCisgICAgICogc28gdGhhdCByb2xsaW5nIHRoZSBtb250aCBvZiBTaGV2YXQgYnkgb25lIGdpdmVzIHRoZSBwcm9wZXIgcmVzdWx0IChBZGFyKSBpbiBhCisgICAgICogbm9uLWxlYXAgeWVhci4KKyAgICAgKiA8cD4KKyAgICAgKiBAcGFyYW0gZmllbGQgICAgIHRoZSBjYWxlbmRhciBmaWVsZCB0byByb2xsLgorICAgICAqIEBwYXJhbSBhbW91bnQgICAgdGhlIGFtb3VudCBieSB3aGljaCB0aGUgZmllbGQgc2hvdWxkIGJlIHJvbGxlZC4KKyAgICAgKgorICAgICAqIEBleGNlcHRpb24gICBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIGZpZWxkIGlzIGludmFsaWQgb3IgcmVmZXJzCisgICAgICogICAgICAgICAgICAgIHRvIGEgZmllbGQgdGhhdCBjYW5ub3QgYmUgaGFuZGxlZCBieSB0aGlzIG1ldGhvZC4KKyAgICAgKiBAc2VlICNyb2xsKGludCwgYm9vbGVhbikKKyAgICAgKiBAc2VlICNhZGQKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCByb2xsKGludCBmaWVsZCwgaW50IGFtb3VudCkgeworCisgICAgICAgIGlmIChhbW91bnQgPT0gMCkgeworICAgICAgICAgICAgcmV0dXJuOyAvLyBOb3RoaW5nIHRvIGRvCisgICAgICAgIH0KKworICAgICAgICBjb21wbGV0ZSgpOworCisgICAgICAgIHN3aXRjaCAoZmllbGQpIHsKKyAgICAgICAgY2FzZSBEQVlfT0ZfTU9OVEg6CisgICAgICAgIGNhc2UgQU1fUE06CisgICAgICAgIGNhc2UgTUlOVVRFOgorICAgICAgICBjYXNlIFNFQ09ORDoKKyAgICAgICAgY2FzZSBNSUxMSVNFQ09ORDoKKyAgICAgICAgY2FzZSBNSUxMSVNFQ09ORFNfSU5fREFZOgorICAgICAgICAgICAgLy8gVGhlc2UgYXJlIHRoZSBzdGFuZGFyZCByb2xsIGluc3RydWN0aW9ucy4gIFRoZXNlIHdvcmsgZm9yIGFsbAorICAgICAgICAgICAgLy8gc2ltcGxlIGNhc2VzLCB0aGF0IGlzLCBjYXNlcyBpbiB3aGljaCB0aGUgbGltaXRzIGFyZSBmaXhlZCwgc3VjaAorICAgICAgICAgICAgLy8gYXMgdGhlIGhvdXIsIHRoZSBkYXkgb2YgdGhlIG1vbnRoLCBhbmQgdGhlIGVyYS4KKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpbnQgbWluID0gZ2V0QWN0dWFsTWluaW11bShmaWVsZCk7CisgICAgICAgICAgICAgICAgaW50IG1heCA9IGdldEFjdHVhbE1heGltdW0oZmllbGQpOworICAgICAgICAgICAgICAgIGludCBnYXAgPSBtYXggLSBtaW4gKyAxOworCisgICAgICAgICAgICAgICAgaW50IHZhbHVlID0gaW50ZXJuYWxHZXQoZmllbGQpICsgYW1vdW50OworICAgICAgICAgICAgICAgIHZhbHVlID0gKHZhbHVlIC0gbWluKSAlIGdhcDsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIHZhbHVlICs9IGdhcDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdmFsdWUgKz0gbWluOworCisgICAgICAgICAgICAgICAgc2V0KGZpZWxkLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgIGNhc2UgSE9VUjoKKyAgICAgICAgY2FzZSBIT1VSX09GX0RBWToKKyAgICAgICAgICAgIC8vIFJvbGxpbmcgdGhlIGhvdXIgaXMgZGlmZmljdWx0IG9uIHRoZSBPTlNFVCBhbmQgQ0VBU0UgZGF5cyBvZgorICAgICAgICAgICAgLy8gZGF5bGlnaHQgc2F2aW5ncy4gIEZvciBleGFtcGxlLCBpZiB0aGUgY2hhbmdlIG9jY3VycyBhdAorICAgICAgICAgICAgLy8gMiBBTSwgd2UgaGF2ZSB0aGUgZm9sbG93aW5nIHByb2dyZXNzaW9uOgorICAgICAgICAgICAgLy8gT05TRVQ6IDEyIFN0ZCAtPiAxIFN0ZCAtPiAzIERzdCAtPiA0IERzdAorICAgICAgICAgICAgLy8gQ0VBU0U6IDEyIERzdCAtPiAxIERzdCAtPiAxIFN0ZCAtPiAyIFN0ZAorICAgICAgICAgICAgLy8gVG8gZ2V0IGFyb3VuZCB0aGlzIHByb2JsZW0gd2UgZG9uJ3QgdXNlIGZpZWxkczsgd2UgbWFuaXB1bGF0ZQorICAgICAgICAgICAgLy8gdGhlIHRpbWUgaW4gbWlsbGlzIGRpcmVjdGx5LgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIEFzc3VtZSBtaW4gPT0gMCBpbiBjYWxjdWxhdGlvbnMgYmVsb3cKKyAgICAgICAgICAgICAgICBsb25nIHN0YXJ0ID0gZ2V0VGltZUluTWlsbGlzKCk7CisgICAgICAgICAgICAgICAgaW50IG9sZEhvdXIgPSBpbnRlcm5hbEdldChmaWVsZCk7CisgICAgICAgICAgICAgICAgaW50IG1heCA9IGdldE1heGltdW0oZmllbGQpOworICAgICAgICAgICAgICAgIGludCBuZXdIb3VyID0gKG9sZEhvdXIgKyBhbW91bnQpICUgKG1heCArIDEpOworICAgICAgICAgICAgICAgIGlmIChuZXdIb3VyIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBuZXdIb3VyICs9IG1heCArIDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHNldFRpbWVJbk1pbGxpcyhzdGFydCArIE9ORV9IT1VSICogKG5ld0hvdXIgLSBvbGRIb3VyKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgIGNhc2UgTU9OVEg6CisgICAgICAgICAgICAvLyBSb2xsaW5nIHRoZSBtb250aCBpbnZvbHZlcyBib3RoIHBpbm5pbmcgdGhlIGZpbmFsIHZhbHVlCisgICAgICAgICAgICAvLyBhbmQgYWRqdXN0aW5nIHRoZSBEQVlfT0ZfTU9OVEggaWYgbmVjZXNzYXJ5LiAgV2Ugb25seSBhZGp1c3QgdGhlCisgICAgICAgICAgICAvLyBEQVlfT0ZfTU9OVEggaWYsIGFmdGVyIHVwZGF0aW5nIHRoZSBNT05USCBmaWVsZCwgaXQgaXMgaWxsZWdhbC4KKyAgICAgICAgICAgIC8vIEUuZy4sIDxqYW4zMT4ucm9sbChNT05USCwgMSkgLT4gPGZlYjI4PiBvciA8ZmViMjk+LgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGludCBtYXggPSBnZXRBY3R1YWxNYXhpbXVtKE1PTlRIKTsKKyAgICAgICAgICAgICAgICBpbnQgbW9uID0gKGludGVybmFsR2V0KE1PTlRIKSArIGFtb3VudCkgJSAobWF4KzEpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChtb24gPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIG1vbiArPSAobWF4ICsgMSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHNldChNT05USCwgbW9uKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBLZWVwIHRoZSBkYXkgb2YgbW9udGggaW4gcmFuZ2UuICBXZSBkb24ndCB3YW50IHRvIHNwaWxsIG92ZXIKKyAgICAgICAgICAgICAgICAvLyBpbnRvIHRoZSBuZXh0IG1vbnRoOyBlLmcuLCB3ZSBkb24ndCB3YW50IGphbjMxICsgMSBtbyAtPiBmZWIzMSAtPgorICAgICAgICAgICAgICAgIC8vIG1hcjMuCisgICAgICAgICAgICAgICAgcGluRmllbGQoREFZX09GX01PTlRIKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgY2FzZSBZRUFSOgorICAgICAgICBjYXNlIFlFQVJfV09ZOgorICAgICAgICBjYXNlIEVYVEVOREVEX1lFQVI6CisgICAgICAgICAgICAvLyBSb2xsaW5nIHRoZSB5ZWFyIGNhbiBpbnZvbHZlIHBpbm5pbmcgdGhlIERBWV9PRl9NT05USC4KKyAgICAgICAgICAgIHNldChmaWVsZCwgaW50ZXJuYWxHZXQoZmllbGQpICsgYW1vdW50KTsKKyAgICAgICAgICAgIHBpbkZpZWxkKE1PTlRIKTsKKyAgICAgICAgICAgIHBpbkZpZWxkKERBWV9PRl9NT05USCk7CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY2FzZSBXRUVLX09GX01PTlRIOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdHJpY2t5LCBiZWNhdXNlIGR1cmluZyB0aGUgcm9sbCB3ZSBtYXkgaGF2ZSB0byBzaGlmdAorICAgICAgICAgICAgICAgIC8vIHRvIGEgZGlmZmVyZW50IGRheSBvZiB0aGUgd2Vlay4gIEZvciBleGFtcGxlOgorCisgICAgICAgICAgICAgICAgLy8gICAgcyAgbSAgdCAgdyAgciAgZiAgcworICAgICAgICAgICAgICAgIC8vICAgICAgICAgIDEgIDIgIDMgIDQgIDUKKyAgICAgICAgICAgICAgICAvLyAgICA2ICA3ICA4ICA5IDEwIDExIDEyCisKKyAgICAgICAgICAgICAgICAvLyBXaGVuIHJvbGxpbmcgZnJvbSB0aGUgNnRoIG9yIDd0aCBiYWNrIG9uZSB3ZWVrLCB3ZSBnbyB0byB0aGUKKyAgICAgICAgICAgICAgICAvLyAxc3QgKGFzc3VtaW5nIHRoYXQgdGhlIGZpcnN0IHBhcnRpYWwgd2VlayBjb3VudHMpLiAgVGhlIHNhbWUKKyAgICAgICAgICAgICAgICAvLyB0aGluZyBoYXBwZW5zIGF0IHRoZSBlbmQgb2YgdGhlIG1vbnRoLgorCisgICAgICAgICAgICAgICAgLy8gVGhlIG90aGVyIHRyaWNreSB0aGluZyBpcyB0aGF0IHdlIGhhdmUgdG8gZmlndXJlIG91dCB3aGV0aGVyCisgICAgICAgICAgICAgICAgLy8gdGhlIGZpcnN0IHBhcnRpYWwgd2VlayBhY3R1YWxseSBjb3VudHMgb3Igbm90LCBiYXNlZCBvbiB0aGUKKyAgICAgICAgICAgICAgICAvLyBtaW5pbWFsIGZpcnN0IGRheXMgaW4gdGhlIHdlZWsuICBBbmQgd2UgaGF2ZSB0byB1c2UgdGhlCisgICAgICAgICAgICAgICAgLy8gY29ycmVjdCBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgdG8gZGVsaW5lYXRlIHRoZSB3ZWVrCisgICAgICAgICAgICAgICAgLy8gYm91bmRhcmllcy4KKworICAgICAgICAgICAgICAgIC8vIEhlcmUncyBvdXIgYWxnb3JpdGhtLiAgRmlyc3QsIHdlIGZpbmQgdGhlIHJlYWwgYm91bmRhcmllcyBvZgorICAgICAgICAgICAgICAgIC8vIHRoZSBtb250aC4gIFRoZW4gd2UgZGlzY2FyZCB0aGUgZmlyc3QgcGFydGlhbCB3ZWVrIGlmIGl0CisgICAgICAgICAgICAgICAgLy8gZG9lc24ndCBjb3VudCBpbiB0aGlzIGxvY2FsZS4gIFRoZW4gd2UgZmlsbCBpbiB0aGUgZW5kcyB3aXRoCisgICAgICAgICAgICAgICAgLy8gcGhhbnRvbSBkYXlzLCBzbyB0aGF0IHRoZSBmaXJzdCBwYXJ0aWFsIHdlZWsgYW5kIHRoZSBsYXN0CisgICAgICAgICAgICAgICAgLy8gcGFydGlhbCB3ZWVrIGFyZSBmdWxsIHdlZWtzLiAgV2UgdGhlbiBoYXZlIGEgbmljZSBzcXVhcmUKKyAgICAgICAgICAgICAgICAvLyBibG9jayBvZiB3ZWVrcy4gIFdlIGRvIHRoZSB1c3VhbCByb2xsaW5nIHdpdGhpbiB0aGlzIGJsb2NrLAorICAgICAgICAgICAgICAgIC8vIGFzIGlzIGRvbmUgZWxzZXdoZXJlIGluIHRoaXMgbWV0aG9kLiAgSWYgd2Ugd2luZCB1cCBvbiBvbmUgb2YKKyAgICAgICAgICAgICAgICAvLyB0aGUgcGhhbnRvbSBkYXlzIHRoYXQgd2UgYWRkZWQsIHdlIHJlY29nbml6ZSB0aGlzIGFuZCBwaW4gdG8KKyAgICAgICAgICAgICAgICAvLyB0aGUgZmlyc3Qgb3IgdGhlIGxhc3QgZGF5IG9mIHRoZSBtb250aC4gIEVhc3ksIGVoPworCisgICAgICAgICAgICAgICAgLy8gTm9ybWFsaXplIHRoZSBEQVlfT0ZfV0VFSyBzbyB0aGF0IDAgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlaworICAgICAgICAgICAgICAgIC8vIGluIHRoaXMgbG9jYWxlLiAgV2UgaGF2ZSBkb3cgaW4gMC4uNi4KKyAgICAgICAgICAgICAgICBpbnQgZG93ID0gaW50ZXJuYWxHZXQoREFZX09GX1dFRUspIC0gZ2V0Rmlyc3REYXlPZldlZWsoKTsKKyAgICAgICAgICAgICAgICBpZiAoZG93IDwgMCkgZG93ICs9IDc7CisKKyAgICAgICAgICAgICAgICAvLyBGaW5kIHRoZSBkYXkgb2YgdGhlIHdlZWsgKG5vcm1hbGl6ZWQgZm9yIGxvY2FsZSkgZm9yIHRoZSBmaXJzdAorICAgICAgICAgICAgICAgIC8vIG9mIHRoZSBtb250aC4KKyAgICAgICAgICAgICAgICBpbnQgZmRtID0gKGRvdyAtIGludGVybmFsR2V0KERBWV9PRl9NT05USCkgKyAxKSAlIDc7CisgICAgICAgICAgICAgICAgaWYgKGZkbSA8IDApIGZkbSArPSA3OworCisgICAgICAgICAgICAgICAgLy8gR2V0IHRoZSBmaXJzdCBkYXkgb2YgdGhlIGZpcnN0IGZ1bGwgd2VlayBvZiB0aGUgbW9udGgsCisgICAgICAgICAgICAgICAgLy8gaW5jbHVkaW5nIHBoYW50b20gZGF5cywgaWYgYW55LiAgRmlndXJlIG91dCBpZiB0aGUgZmlyc3Qgd2VlaworICAgICAgICAgICAgICAgIC8vIGNvdW50cyBvciBub3Q7IGlmIGl0IGNvdW50cywgdGhlbiBmaWxsIGluIHBoYW50b20gZGF5cy4gIElmCisgICAgICAgICAgICAgICAgLy8gbm90LCBhZHZhbmNlIHRvIHRoZSBmaXJzdCByZWFsIGZ1bGwgd2VlayAoc2tpcCB0aGUgcGFydGlhbCB3ZWVrKS4KKyAgICAgICAgICAgICAgICBpbnQgc3RhcnQ7CisgICAgICAgICAgICAgICAgaWYgKCg3IC0gZmRtKSA8IGdldE1pbmltYWxEYXlzSW5GaXJzdFdlZWsoKSkKKyAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSA4IC0gZmRtOyAvLyBTa2lwIHRoZSBmaXJzdCBwYXJ0aWFsIHdlZWsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHN0YXJ0ID0gMSAtIGZkbTsgLy8gVGhpcyBtYXkgYmUgemVybyBvciBuZWdhdGl2ZQorCisgICAgICAgICAgICAgICAgLy8gR2V0IHRoZSBkYXkgb2YgdGhlIHdlZWsgKG5vcm1hbGl6ZWQgZm9yIGxvY2FsZSkgZm9yIHRoZSBsYXN0CisgICAgICAgICAgICAgICAgLy8gZGF5IG9mIHRoZSBtb250aC4KKyAgICAgICAgICAgICAgICBpbnQgbW9udGhMZW4gPSBnZXRBY3R1YWxNYXhpbXVtKERBWV9PRl9NT05USCk7CisgICAgICAgICAgICAgICAgaW50IGxkbSA9IChtb250aExlbiAtIGludGVybmFsR2V0KERBWV9PRl9NT05USCkgKyBkb3cpICUgNzsKKyAgICAgICAgICAgICAgICAvLyBXZSBrbm93IG1vbnRoTGVuID49IERBWV9PRl9NT05USCBzbyB3ZSBza2lwIHRoZSArPSA3IHN0ZXAgaGVyZS4KKworICAgICAgICAgICAgICAgIC8vIEdldCB0aGUgbGltaXQgZGF5IGZvciB0aGUgYmxvY2tlZC1vZmYgcmVjdGFuZ3VsYXIgbW9udGg7IHRoYXQKKyAgICAgICAgICAgICAgICAvLyBpcywgdGhlIGRheSB3aGljaCBpcyBvbmUgcGFzdCB0aGUgbGFzdCBkYXkgb2YgdGhlIG1vbnRoLAorICAgICAgICAgICAgICAgIC8vIGFmdGVyIHRoZSBtb250aCBoYXMgYWxyZWFkeSBiZWVuIGZpbGxlZCBpbiB3aXRoIHBoYW50b20gZGF5cworICAgICAgICAgICAgICAgIC8vIHRvIGZpbGwgb3V0IHRoZSBsYXN0IHdlZWsuICBUaGlzIGRheSBoYXMgYSBub3JtYWxpemVkIERPVyBvZiAwLgorICAgICAgICAgICAgICAgIGludCBsaW1pdCA9IG1vbnRoTGVuICsgNyAtIGxkbTsKKworICAgICAgICAgICAgICAgIC8vIE5vdyByb2xsIGJldHdlZW4gc3RhcnQgYW5kIChsaW1pdCAtIDEpLgorICAgICAgICAgICAgICAgIGludCBnYXAgPSBsaW1pdCAtIHN0YXJ0OworICAgICAgICAgICAgICAgIGludCBkYXlfb2ZfbW9udGggPSAoaW50ZXJuYWxHZXQoREFZX09GX01PTlRIKSArIGFtb3VudCo3IC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0KSAlIGdhcDsKKyAgICAgICAgICAgICAgICBpZiAoZGF5X29mX21vbnRoIDwgMCkgZGF5X29mX21vbnRoICs9IGdhcDsKKyAgICAgICAgICAgICAgICBkYXlfb2ZfbW9udGggKz0gc3RhcnQ7CisKKyAgICAgICAgICAgICAgICAvLyBGaW5hbGx5LCBwaW4gdG8gdGhlIHJlYWwgc3RhcnQgYW5kIGVuZCBvZiB0aGUgbW9udGguCisgICAgICAgICAgICAgICAgaWYgKGRheV9vZl9tb250aCA8IDEpIGRheV9vZl9tb250aCA9IDE7CisgICAgICAgICAgICAgICAgaWYgKGRheV9vZl9tb250aCA+IG1vbnRoTGVuKSBkYXlfb2ZfbW9udGggPSBtb250aExlbjsKKworICAgICAgICAgICAgICAgIC8vIFNldCB0aGUgREFZX09GX01PTlRILiAgV2UgcmVseSBvbiB0aGUgZmFjdCB0aGF0IHRoaXMgZmllbGQKKyAgICAgICAgICAgICAgICAvLyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgZXZlcnl0aGluZyBlbHNlIChzaW5jZSBhbGwgb3RoZXIgZmllbGRzCisgICAgICAgICAgICAgICAgLy8gYXJlIGFsc28gc2V0IGF0IHRoaXMgcG9pbnQpLiAgSWYgdGhpcyBmYWN0IGNoYW5nZXMgKGlmIHRoZQorICAgICAgICAgICAgICAgIC8vIGRpc2FtYmlndWF0aW9uIGFsZ29yaXRobSBjaGFuZ2VzKSB0aGVuIHdlIHdpbGwgaGF2ZSB0byB1bnNldAorICAgICAgICAgICAgICAgIC8vIHRoZSBhcHByb3ByaWF0ZSBmaWVsZHMgaGVyZSBzbyB0aGF0IERBWV9PRl9NT05USCBpcyBhdHRlbmRlZAorICAgICAgICAgICAgICAgIC8vIHRvLgorICAgICAgICAgICAgICAgIHNldChEQVlfT0ZfTU9OVEgsIGRheV9vZl9tb250aCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICBjYXNlIFdFRUtfT0ZfWUVBUjoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGZvbGxvd3MgdGhlIG91dGxpbmUgb2YgV0VFS19PRl9NT05USCwgZXhjZXB0IGl0IGFwcGxpZXMKKyAgICAgICAgICAgICAgICAvLyB0byB0aGUgd2hvbGUgeWVhci4gIFBsZWFzZSBzZWUgdGhlIGNvbW1lbnQgZm9yIFdFRUtfT0ZfTU9OVEgKKyAgICAgICAgICAgICAgICAvLyBmb3IgZ2VuZXJhbCBub3Rlcy4KKworICAgICAgICAgICAgICAgIC8vIE5vcm1hbGl6ZSB0aGUgREFZX09GX1dFRUsgc28gdGhhdCAwIGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsKKyAgICAgICAgICAgICAgICAvLyBpbiB0aGlzIGxvY2FsZS4gIFdlIGhhdmUgZG93IGluIDAuLjYuCisgICAgICAgICAgICAgICAgaW50IGRvdyA9IGludGVybmFsR2V0KERBWV9PRl9XRUVLKSAtIGdldEZpcnN0RGF5T2ZXZWVrKCk7CisgICAgICAgICAgICAgICAgaWYgKGRvdyA8IDApIGRvdyArPSA3OworCisgICAgICAgICAgICAgICAgLy8gRmluZCB0aGUgZGF5IG9mIHRoZSB3ZWVrIChub3JtYWxpemVkIGZvciBsb2NhbGUpIGZvciB0aGUgZmlyc3QKKyAgICAgICAgICAgICAgICAvLyBvZiB0aGUgeWVhci4KKyAgICAgICAgICAgICAgICBpbnQgZmR5ID0gKGRvdyAtIGludGVybmFsR2V0KERBWV9PRl9ZRUFSKSArIDEpICUgNzsKKyAgICAgICAgICAgICAgICBpZiAoZmR5IDwgMCkgZmR5ICs9IDc7CisKKyAgICAgICAgICAgICAgICAvLyBHZXQgdGhlIGZpcnN0IGRheSBvZiB0aGUgZmlyc3QgZnVsbCB3ZWVrIG9mIHRoZSB5ZWFyLAorICAgICAgICAgICAgICAgIC8vIGluY2x1ZGluZyBwaGFudG9tIGRheXMsIGlmIGFueS4gIEZpZ3VyZSBvdXQgaWYgdGhlIGZpcnN0IHdlZWsKKyAgICAgICAgICAgICAgICAvLyBjb3VudHMgb3Igbm90OyBpZiBpdCBjb3VudHMsIHRoZW4gZmlsbCBpbiBwaGFudG9tIGRheXMuICBJZgorICAgICAgICAgICAgICAgIC8vIG5vdCwgYWR2YW5jZSB0byB0aGUgZmlyc3QgcmVhbCBmdWxsIHdlZWsgKHNraXAgdGhlIHBhcnRpYWwgd2VlaykuCisgICAgICAgICAgICAgICAgaW50IHN0YXJ0OworICAgICAgICAgICAgICAgIGlmICgoNyAtIGZkeSkgPCBnZXRNaW5pbWFsRGF5c0luRmlyc3RXZWVrKCkpCisgICAgICAgICAgICAgICAgICAgIHN0YXJ0ID0gOCAtIGZkeTsgLy8gU2tpcCB0aGUgZmlyc3QgcGFydGlhbCB3ZWVrCisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBzdGFydCA9IDEgLSBmZHk7IC8vIFRoaXMgbWF5IGJlIHplcm8gb3IgbmVnYXRpdmUKKworICAgICAgICAgICAgICAgIC8vIEdldCB0aGUgZGF5IG9mIHRoZSB3ZWVrIChub3JtYWxpemVkIGZvciBsb2NhbGUpIGZvciB0aGUgbGFzdAorICAgICAgICAgICAgICAgIC8vIGRheSBvZiB0aGUgeWVhci4KKyAgICAgICAgICAgICAgICBpbnQgeWVhckxlbiA9IGdldEFjdHVhbE1heGltdW0oREFZX09GX1lFQVIpOworICAgICAgICAgICAgICAgIGludCBsZHkgPSAoeWVhckxlbiAtIGludGVybmFsR2V0KERBWV9PRl9ZRUFSKSArIGRvdykgJSA3OworICAgICAgICAgICAgICAgIC8vIFdlIGtub3cgeWVhckxlbiA+PSBEQVlfT0ZfWUVBUiBzbyB3ZSBza2lwIHRoZSArPSA3IHN0ZXAgaGVyZS4KKworICAgICAgICAgICAgICAgIC8vIEdldCB0aGUgbGltaXQgZGF5IGZvciB0aGUgYmxvY2tlZC1vZmYgcmVjdGFuZ3VsYXIgeWVhcjsgdGhhdAorICAgICAgICAgICAgICAgIC8vIGlzLCB0aGUgZGF5IHdoaWNoIGlzIG9uZSBwYXN0IHRoZSBsYXN0IGRheSBvZiB0aGUgeWVhciwKKyAgICAgICAgICAgICAgICAvLyBhZnRlciB0aGUgeWVhciBoYXMgYWxyZWFkeSBiZWVuIGZpbGxlZCBpbiB3aXRoIHBoYW50b20gZGF5cworICAgICAgICAgICAgICAgIC8vIHRvIGZpbGwgb3V0IHRoZSBsYXN0IHdlZWsuICBUaGlzIGRheSBoYXMgYSBub3JtYWxpemVkIERPVyBvZiAwLgorICAgICAgICAgICAgICAgIGludCBsaW1pdCA9IHllYXJMZW4gKyA3IC0gbGR5OworCisgICAgICAgICAgICAgICAgLy8gTm93IHJvbGwgYmV0d2VlbiBzdGFydCBhbmQgKGxpbWl0IC0gMSkuCisgICAgICAgICAgICAgICAgaW50IGdhcCA9IGxpbWl0IC0gc3RhcnQ7CisgICAgICAgICAgICAgICAgaW50IGRheV9vZl95ZWFyID0gKGludGVybmFsR2V0KERBWV9PRl9ZRUFSKSArIGFtb3VudCo3IC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0KSAlIGdhcDsKKyAgICAgICAgICAgICAgICBpZiAoZGF5X29mX3llYXIgPCAwKSBkYXlfb2ZfeWVhciArPSBnYXA7CisgICAgICAgICAgICAgICAgZGF5X29mX3llYXIgKz0gc3RhcnQ7CisKKyAgICAgICAgICAgICAgICAvLyBGaW5hbGx5LCBwaW4gdG8gdGhlIHJlYWwgc3RhcnQgYW5kIGVuZCBvZiB0aGUgbW9udGguCisgICAgICAgICAgICAgICAgaWYgKGRheV9vZl95ZWFyIDwgMSkgZGF5X29mX3llYXIgPSAxOworICAgICAgICAgICAgICAgIGlmIChkYXlfb2ZfeWVhciA+IHllYXJMZW4pIGRheV9vZl95ZWFyID0geWVhckxlbjsKKworICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSB5ZWFyIGFuZCBkYXkgb2YgeWVhciBhcmUgYXR0ZW5kZWQgdG8gYnkKKyAgICAgICAgICAgICAgICAvLyBjbGVhcmluZyBvdGhlciBmaWVsZHMgd2hpY2ggd291bGQgbm9ybWFsbHkgdGFrZSBwcmVjZWRlbmNlLgorICAgICAgICAgICAgICAgIC8vIElmIHRoZSBkaXNhbWJpZ3VhdGlvbiBhbGdvcml0aG0gaXMgY2hhbmdlZCwgdGhpcyBzZWN0aW9uIHdpbGwKKyAgICAgICAgICAgICAgICAvLyBoYXZlIHRvIGJlIHVwZGF0ZWQgYXMgd2VsbC4KKyAgICAgICAgICAgICAgICBzZXQoREFZX09GX1lFQVIsIGRheV9vZl95ZWFyKTsKKyAgICAgICAgICAgICAgICBjbGVhcihNT05USCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICBjYXNlIERBWV9PRl9ZRUFSOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIFJvbGwgdGhlIGRheSBvZiB5ZWFyIHVzaW5nIG1pbGxpcy4gIENvbXB1dGUgdGhlIG1pbGxpcyBmb3IKKyAgICAgICAgICAgICAgICAvLyB0aGUgc3RhcnQgb2YgdGhlIHllYXIsIGFuZCBnZXQgdGhlIGxlbmd0aCBvZiB0aGUgeWVhci4KKyAgICAgICAgICAgICAgICBsb25nIGRlbHRhID0gYW1vdW50ICogT05FX0RBWTsgLy8gU2NhbGUgdXAgZnJvbSBkYXlzIHRvIG1pbGxpcworICAgICAgICAgICAgICAgIGxvbmcgbWluMiA9IHRpbWUgLSAoaW50ZXJuYWxHZXQoREFZX09GX1lFQVIpIC0gMSkgKiBPTkVfREFZOworICAgICAgICAgICAgICAgIGludCB5ZWFyTGVuZ3RoID0gZ2V0QWN0dWFsTWF4aW11bShEQVlfT0ZfWUVBUik7CisgICAgICAgICAgICAgICAgdGltZSA9ICh0aW1lICsgZGVsdGEgLSBtaW4yKSAlICh5ZWFyTGVuZ3RoKk9ORV9EQVkpOworICAgICAgICAgICAgICAgIGlmICh0aW1lIDwgMCkgdGltZSArPSB5ZWFyTGVuZ3RoKk9ORV9EQVk7CisgICAgICAgICAgICAgICAgc2V0VGltZUluTWlsbGlzKHRpbWUgKyBtaW4yKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIGNhc2UgREFZX09GX1dFRUs6CisgICAgICAgIGNhc2UgRE9XX0xPQ0FMOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIFJvbGwgdGhlIGRheSBvZiB3ZWVrIHVzaW5nIG1pbGxpcy4gIENvbXB1dGUgdGhlIG1pbGxpcyBmb3IKKyAgICAgICAgICAgICAgICAvLyB0aGUgc3RhcnQgb2YgdGhlIHdlZWssIHVzaW5nIHRoZSBmaXJzdCBkYXkgb2Ygd2VlayBzZXR0aW5nLgorICAgICAgICAgICAgICAgIC8vIFJlc3RyaWN0IHRoZSBtaWxsaXMgdG8gW3N0YXJ0LCBzdGFydCs3ZGF5cykuCisgICAgICAgICAgICAgICAgbG9uZyBkZWx0YSA9IGFtb3VudCAqIE9ORV9EQVk7IC8vIFNjYWxlIHVwIGZyb20gZGF5cyB0byBtaWxsaXMKKyAgICAgICAgICAgICAgICAvLyBDb21wdXRlIHRoZSBudW1iZXIgb2YgZGF5cyBiZWZvcmUgdGhlIGN1cnJlbnQgZGF5IGluIHRoaXMKKyAgICAgICAgICAgICAgICAvLyB3ZWVrLiAgVGhpcyB3aWxsIGJlIGEgdmFsdWUgMC4uNi4KKyAgICAgICAgICAgICAgICBpbnQgbGVhZERheXMgPSBpbnRlcm5hbEdldChmaWVsZCk7CisgICAgICAgICAgICAgICAgbGVhZERheXMgLT0gKGZpZWxkID09IERBWV9PRl9XRUVLKSA/IGdldEZpcnN0RGF5T2ZXZWVrKCkgOiAxOworICAgICAgICAgICAgICAgIGlmIChsZWFkRGF5cyA8IDApIGxlYWREYXlzICs9IDc7CisgICAgICAgICAgICAgICAgbG9uZyBtaW4yID0gdGltZSAtIGxlYWREYXlzICogT05FX0RBWTsKKyAgICAgICAgICAgICAgICB0aW1lID0gKHRpbWUgKyBkZWx0YSAtIG1pbjIpICUgT05FX1dFRUs7CisgICAgICAgICAgICAgICAgaWYgKHRpbWUgPCAwKSB0aW1lICs9IE9ORV9XRUVLOworICAgICAgICAgICAgICAgIHNldFRpbWVJbk1pbGxpcyh0aW1lICsgbWluMik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICBjYXNlIERBWV9PRl9XRUVLX0lOX01PTlRIOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIFJvbGwgdGhlIGRheSBvZiB3ZWVrIGluIHRoZSBtb250aCB1c2luZyBtaWxsaXMuICBEZXRlcm1pbmUKKyAgICAgICAgICAgICAgICAvLyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrIGluIHRoZSBtb250aCwgYW5kIHRoZW4gdGhlIGxhc3QsCisgICAgICAgICAgICAgICAgLy8gYW5kIHRoZW4gcm9sbCB3aXRoaW4gdGhhdCByYW5nZS4KKyAgICAgICAgICAgICAgICBsb25nIGRlbHRhID0gYW1vdW50ICogT05FX1dFRUs7IC8vIFNjYWxlIHVwIGZyb20gd2Vla3MgdG8gbWlsbGlzCisgICAgICAgICAgICAgICAgLy8gRmluZCB0aGUgbnVtYmVyIG9mIHNhbWUgZGF5cyBvZiB0aGUgd2VlayBiZWZvcmUgdGhpcyBvbmUKKyAgICAgICAgICAgICAgICAvLyBpbiB0aGlzIG1vbnRoLgorICAgICAgICAgICAgICAgIGludCBwcmVXZWVrcyA9IChpbnRlcm5hbEdldChEQVlfT0ZfTU9OVEgpIC0gMSkgLyA3OworICAgICAgICAgICAgICAgIC8vIEZpbmQgdGhlIG51bWJlciBvZiBzYW1lIGRheXMgb2YgdGhlIHdlZWsgYWZ0ZXIgdGhpcyBvbmUKKyAgICAgICAgICAgICAgICAvLyBpbiB0aGlzIG1vbnRoLgorICAgICAgICAgICAgICAgIGludCBwb3N0V2Vla3MgPSAoZ2V0QWN0dWFsTWF4aW11bShEQVlfT0ZfTU9OVEgpIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsR2V0KERBWV9PRl9NT05USCkpIC8gNzsKKyAgICAgICAgICAgICAgICAvLyBGcm9tIHRoZXNlIGNvbXB1dGUgdGhlIG1pbiBhbmQgZ2FwIG1pbGxpcyBmb3Igcm9sbGluZy4KKyAgICAgICAgICAgICAgICBsb25nIG1pbjIgPSB0aW1lIC0gcHJlV2Vla3MgKiBPTkVfV0VFSzsKKyAgICAgICAgICAgICAgICBsb25nIGdhcDIgPSBPTkVfV0VFSyAqIChwcmVXZWVrcyArIHBvc3RXZWVrcyArIDEpOyAvLyBNdXN0IGFkZCAxIQorICAgICAgICAgICAgICAgIC8vIFJvbGwgd2l0aGluIHRoaXMgcmFuZ2UKKyAgICAgICAgICAgICAgICB0aW1lID0gKHRpbWUgKyBkZWx0YSAtIG1pbjIpICUgZ2FwMjsKKyAgICAgICAgICAgICAgICBpZiAodGltZSA8IDApIHRpbWUgKz0gZ2FwMjsKKyAgICAgICAgICAgICAgICBzZXRUaW1lSW5NaWxsaXModGltZSArIG1pbjIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgY2FzZSBKVUxJQU5fREFZOgorICAgICAgICAgICAgc2V0KGZpZWxkLCBpbnRlcm5hbEdldChmaWVsZCkgKyBhbW91bnQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgLy8gT3RoZXIgZmllbGRzIGNhbm5vdCBiZSByb2xsZWQgYnkgdGhpcyBtZXRob2QKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkNhbGVuZGFyLnJvbGwoIiArIGZpZWxkTmFtZShmaWVsZCkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKSBub3Qgc3VwcG9ydGVkIik7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQWRkIGEgc2lnbmVkIGFtb3VudCB0byBhIHNwZWNpZmllZCBmaWVsZCwgdXNpbmcgdGhpcyBjYWxlbmRhcidzIHJ1bGVzLgorICAgICAqIEZvciBleGFtcGxlLCB0byBhZGQgdGhyZWUgZGF5cyB0byB0aGUgY3VycmVudCBkYXRlLCB5b3UgY2FuIGNhbGwKKyAgICAgKiA8Y29kZT5hZGQoQ2FsZW5kYXIuREFURSwgMyk8L2NvZGU+LiAKKyAgICAgKiA8cD4KKyAgICAgKiBXaGVuIGFkZGluZyB0byBjZXJ0YWluIGZpZWxkcywgdGhlIHZhbHVlcyBvZiBvdGhlciBmaWVsZHMgbWF5IGNvbmZsaWN0IGFuZAorICAgICAqIG5lZWQgdG8gYmUgY2hhbmdlZC4gIEZvciBleGFtcGxlLCB3aGVuIGFkZGluZyBvbmUgdG8gdGhlIHtAbGluayAjTU9OVEggTU9OVEh9IGZpZWxkCisgICAgICogZm9yIHRoZSBHcmVnb3JpYW4gZGF0ZSAxLzMxLzk2LCB0aGUge0BsaW5rICNEQVlfT0ZfTU9OVEggREFZX09GX01PTlRIfSBmaWVsZAorICAgICAqIG11c3QgYmUgYWRqdXN0ZWQgc28gdGhhdCB0aGUgcmVzdWx0IGlzIDIvMjkvOTYgcmF0aGVyIHRoYW4gdGhlIGludmFsaWQKKyAgICAgKiAyLzMxLzk2LgorICAgICAqIDxwPgorICAgICAqIFRoZSA8Y29kZT5jb20uaWJtLmljdS51dGlsLkNhbGVuZGFyPC9jb2RlPiBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIG1ldGhvZCBpcyBhYmxlIHRvIGFkZCB0bworICAgICAqIGFsbCBmaWVsZHMgZXhjZXB0IGZvciB7QGxpbmsgI0VSQSBFUkF9LCB7QGxpbmsgI0RTVF9PRkZTRVQgRFNUX09GRlNFVH0sCisgICAgICogYW5kIHtAbGluayAjWk9ORV9PRkZTRVQgWk9ORV9PRkZTRVR9LiAgU3ViY2xhc3NlcyBtYXksIG9mIGNvdXJzZSwgYWRkIHN1cHBvcnQgZm9yCisgICAgICogYWRkaXRpb25hbCBmaWVsZHMgaW4gdGhlaXIgb3ZlcnJpZGVzIG9mIDxjb2RlPmFkZDwvY29kZT4uCisgICAgICogPHA+CisgICAgICogPGI+Tm90ZTo8L2I+IFlvdSBzaG91bGQgYWx3YXlzIHVzZSA8dHQ+cm9sbDwvdHQ+IGFuZCA8dHQ+YWRkPC90dD4gcmF0aGVyCisgICAgICogdGhhbiBhdHRlbXB0aW5nIHRvIHBlcmZvcm0gYXJpdGhtZXRpYyBvcGVyYXRpb25zIGRpcmVjdGx5IG9uIHRoZSBmaWVsZHMKKyAgICAgKiBvZiBhIDx0dD5DYWxlbmRhcjwvdHQ+LiAgSXQgaXMgcXVpdGUgcG9zc2libGUgZm9yIDx0dD5DYWxlbmRhcjwvdHQ+IHN1YmNsYXNzZXMKKyAgICAgKiB0byBoYXZlIGZpZWxkcyB3aXRoIG5vbi1saW5lYXIgYmVoYXZpb3IsIGZvciBleGFtcGxlIG1pc3NpbmcgbW9udGhzCisgICAgICogb3IgZGF5cyBkdXJpbmcgbm9uLWxlYXAgeWVhcnMuICBUaGUgc3ViY2xhc3NlcycgPHR0PmFkZDwvdHQ+IGFuZCA8dHQ+cm9sbDwvdHQ+CisgICAgICogbWV0aG9kcyB3aWxsIHRha2UgdGhpcyBpbnRvIGFjY291bnQsIHdoaWxlIHNpbXBsZSBhcml0aG1ldGljIG1hbmlwdWxhdGlvbnMKKyAgICAgKiBtYXkgZ2l2ZSBpbnZhbGlkIHJlc3VsdHMuCisgICAgICogPHA+CisgICAgICogPGI+U3ViY2xhc3Npbmc6PC9iPjxicj4KKyAgICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIG9mIDxjb2RlPmFkZDwvY29kZT4gYXNzdW1lcyB0aGF0IHRoZSBiZWhhdmlvciBvZiB0aGUKKyAgICAgKiBmaWVsZCBpcyBjb250aW51b3VzIGJldHdlZW4gaXRzIG1pbmltdW0gYW5kIG1heGltdW0sIHdoaWNoIGFyZSBmb3VuZCBieQorICAgICAqIGNhbGxpbmcge0BsaW5rICNnZXRBY3R1YWxNaW5pbXVtIGdldEFjdHVhbE1pbmltdW19IGFuZAorICAgICAqIHtAbGluayAjZ2V0QWN0dWFsTWF4aW11bSBnZXRBY3R1YWxNYXhpbXVtfS4KKyAgICAgKiBGb3Igc3VjaCBmaWVsZHMsIHNpbXBsZSBhcml0aG1ldGljIG9wZXJhdGlvbnMgYXJlIHN1ZmZpY2llbnQgdG8KKyAgICAgKiBwZXJmb3JtIHRoZSBhZGQuCisgICAgICogPHA+CisgICAgICogU3ViY2xhc3NlcyB0aGF0IGhhdmUgZmllbGRzIGZvciB3aGljaCB0aGlzIGFzc3VtcHRpb24gb2YgY29udGludWl0eSBicmVha3MKKyAgICAgKiBkb3duIG11c3Qgb3ZlcmlkZSA8Y29kZT5hZGQ8L2NvZGU+IHRvIGhhbmRsZSB0aG9zZSBmaWVsZHMgc3BlY2lhbGx5LgorICAgICAqIEZvciBleGFtcGxlLCBpbiB0aGUgSGVicmV3IGNhbGVuZGFyIHRoZSBtb250aCAiQWRhciBJIgorICAgICAqIG9ubHkgb2NjdXJzIGluIGxlYXAgeWVhcnM7IGluIG90aGVyIHllYXJzIHRoZSBjYWxlbmRhciBqdW1wcyBmcm9tCisgICAgICogU2hldmF0IChtb250aCAjNCkgdG8gQWRhciAobW9udGggIzYpLiAgVGhlIAorICAgICAqIHtAbGluayBIZWJyZXdDYWxlbmRhciNhZGQgSGVicmV3Q2FsZW5kYXIuYWRkfSBtZXRob2QgdGFrZXMgdGhpcyBpbnRvIGFjY291bnQsCisgICAgICogc28gdGhhdCBhZGRpbmcgb25lIG1vbnRoCisgICAgICogdG8gYSBkYXRlIGluIFNoZXZhdCBnaXZlcyB0aGUgcHJvcGVyIHJlc3VsdCAoQWRhcikgaW4gYSBub24tbGVhcCB5ZWFyLgorICAgICAqIDxwPgorICAgICAqIEBwYXJhbSBmaWVsZCAgICAgdGhlIHRpbWUgZmllbGQuCisgICAgICogQHBhcmFtIGFtb3VudCAgICB0aGUgYW1vdW50IHRvIGFkZCB0byB0aGUgZmllbGQuCisgICAgICoKKyAgICAgKiBAZXhjZXB0aW9uICAgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBmaWVsZCBpcyBpbnZhbGlkIG9yIHJlZmVycworICAgICAqICAgICAgICAgICAgICB0byBhIGZpZWxkIHRoYXQgY2Fubm90IGJlIGhhbmRsZWQgYnkgdGhpcyBtZXRob2QuCisgICAgICogQHNlZSAjcm9sbChpbnQsIGludCkKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBhZGQoaW50IGZpZWxkLCBpbnQgYW1vdW50KSB7CisKKyAgICAgICAgaWYgKGFtb3VudCA9PSAwKSB7CisgICAgICAgICAgICByZXR1cm47ICAgLy8gRG8gbm90aGluZyEKKyAgICAgICAgfQorCisgICAgICAgIC8vIFdlIGhhbmRsZSBtb3N0IGZpZWxkcyBpbiB0aGUgc2FtZSB3YXkuICBUaGUgYWxnb3JpdGhtIGlzIHRvIGFkZAorICAgICAgICAvLyBhIGNvbXB1dGVkIGFtb3VudCBvZiBtaWxsaXMgdG8gdGhlIGN1cnJlbnQgbWlsbGlzLiAgVGhlIG9ubHkKKyAgICAgICAgLy8gd3JpbmtsZSBpcyB3aXRoIERTVCAtLSBmb3Igc29tZSBmaWVsZHMsIGxpa2UgdGhlIERBWV9PRl9NT05USCwKKyAgICAgICAgLy8gd2UgZG9uJ3Qgd2FudCB0aGUgSE9VUiB0byBzaGlmdCBkdWUgdG8gY2hhbmdlcyBpbiBEU1QuICBJZiB0aGUKKyAgICAgICAgLy8gcmVzdWx0IG9mIHRoZSBhZGQgb3BlcmF0aW9uIGlzIHRvIG1vdmUgZnJvbSBEU1QgdG8gU3RhbmRhcmQsIG9yCisgICAgICAgIC8vIHZpY2UgdmVyc2EsIHdlIG5lZWQgdG8gYWRqdXN0IGJ5IGFuIGhvdXIgZm9yd2FyZCBvciBiYWNrLAorICAgICAgICAvLyByZXNwZWN0aXZlbHkuICBGb3Igc3VjaCBmaWVsZHMgd2Ugc2V0IGtlZXBIb3VySW52YXJpYW50IHRvIHRydWUuCisgICAgICAgIAorICAgICAgICAvLyBXZSBvbmx5IGFkanVzdCB0aGUgRFNUIGZvciBmaWVsZHMgbGFyZ2VyIHRoYW4gYW4gaG91ci4gIEZvcgorICAgICAgICAvLyBmaWVsZHMgc21hbGxlciB0aGFuIGFuIGhvdXIsIHdlIGNhbm5vdCBhZGp1c3QgZm9yIERTVCB3aXRob3V0CisgICAgICAgIC8vIGNhdXNpbmcgcHJvYmxlbXMuICBmb3IgaW5zdGFuY2UsIGlmIHlvdSBhZGQgb25lIGhvdXIgdG8gQXByaWwgNSwKKyAgICAgICAgLy8gMTk5OCwgMTowMCBBTSwgaW4gUFNULCB0aGUgdGltZSBiZWNvbWVzICIyOjAwIEFNIFBEVCIgKGFuCisgICAgICAgIC8vIGlsbGVnYWwgdmFsdWUpLCBidXQgdGhlbiB0aGUgYWRqdXN0bWVudCBzZWVzIHRoZSBjaGFuZ2UgYW5kCisgICAgICAgIC8vIGNvbXBlbnNhdGVzIGJ5IHN1YnRyYWN0aW5nIGFuIGhvdXIuICBBcyBhIHJlc3VsdCB0aGUgdGltZQorICAgICAgICAvLyBkb2Vzbid0IGFkdmFuY2UgYXQgYWxsLgorCisgICAgICAgIC8vIEZvciBzb21lIGZpZWxkcyBsYXJnZXIgdGhhbiBhIGRheSwgc3VjaCBhcyBhIE1PTlRILCB3ZSBwaW4gdGhlCisgICAgICAgIC8vIERBWV9PRl9NT05USC4gIFRoaXMgYWxsb3dzIDxNYXJjaCAzMT4uYWRkKE1PTlRILCAxKSB0byBiZQorICAgICAgICAvLyA8QXByaWwgMzA+LCByYXRoZXIgdGhhbiA8QXByaWwgMzE+ID0+IDxNYXkgMT4uCisKKyAgICAgICAgbG9uZyBkZWx0YSA9IGFtb3VudDsgLy8gZGVsdGEgaW4gbXMKKyAgICAgICAgYm9vbGVhbiBrZWVwSG91ckludmFyaWFudCA9IHRydWU7CisKKyAgICAgICAgc3dpdGNoIChmaWVsZCkgeworICAgICAgICBjYXNlIFlFQVI6CisgICAgICAgIGNhc2UgRVhURU5ERURfWUVBUjoKKyAgICAgICAgY2FzZSBZRUFSX1dPWToKKyAgICAgICAgY2FzZSBNT05USDoKKyAgICAgICAgICAgIHNldChmaWVsZCwgZ2V0KGZpZWxkKSArIGFtb3VudCk7CisgICAgICAgICAgICBwaW5GaWVsZChEQVlfT0ZfTU9OVEgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgV0VFS19PRl9ZRUFSOgorICAgICAgICBjYXNlIFdFRUtfT0ZfTU9OVEg6CisgICAgICAgIGNhc2UgREFZX09GX1dFRUtfSU5fTU9OVEg6CisgICAgICAgICAgICBkZWx0YSAqPSBPTkVfV0VFSzsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQU1fUE06CisgICAgICAgICAgICBkZWx0YSAqPSAxMiAqIE9ORV9IT1VSOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBEQVlfT0ZfTU9OVEg6CisgICAgICAgIGNhc2UgREFZX09GX1lFQVI6CisgICAgICAgIGNhc2UgREFZX09GX1dFRUs6CisgICAgICAgIGNhc2UgRE9XX0xPQ0FMOgorICAgICAgICBjYXNlIEpVTElBTl9EQVk6CisgICAgICAgICAgICBkZWx0YSAqPSBPTkVfREFZOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBIT1VSX09GX0RBWToKKyAgICAgICAgY2FzZSBIT1VSOgorICAgICAgICAgICAgZGVsdGEgKj0gT05FX0hPVVI7CisgICAgICAgICAgICBrZWVwSG91ckludmFyaWFudCA9IGZhbHNlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBNSU5VVEU6CisgICAgICAgICAgICBkZWx0YSAqPSBPTkVfTUlOVVRFOworICAgICAgICAgICAga2VlcEhvdXJJbnZhcmlhbnQgPSBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgU0VDT05EOgorICAgICAgICAgICAgZGVsdGEgKj0gT05FX1NFQ09ORDsKKyAgICAgICAgICAgIGtlZXBIb3VySW52YXJpYW50ID0gZmFsc2U7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIE1JTExJU0VDT05EOgorICAgICAgICBjYXNlIE1JTExJU0VDT05EU19JTl9EQVk6CisgICAgICAgICAgICBrZWVwSG91ckludmFyaWFudCA9IGZhbHNlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkNhbGVuZGFyLmFkZCgiICsgZmllbGROYW1lKGZpZWxkKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIpIG5vdCBzdXBwb3J0ZWQiKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEluIG9yZGVyIHRvIGtlZXAgdGhlIGhvdXIgaW52YXJpYW50IChmb3IgZmllbGRzIHdoZXJlIHRoaXMgaXMKKyAgICAgICAgLy8gYXBwcm9wcmlhdGUpLCByZWNvcmQgdGhlIERTVF9PRkZTRVQgYmVmb3JlIGFuZCBhZnRlciB0aGUgYWRkKCkKKyAgICAgICAgLy8gb3BlcmF0aW9uLiAgSWYgaXQgaGFzIGNoYW5nZWQsIHRoZW4gYWRqdXN0IHRoZSBtaWxsaXMgdG8KKyAgICAgICAgLy8gY29tcGVuc2F0ZS4KKyAgICAgICAgaW50IGRzdCA9IDA7CisgICAgICAgIGlmIChrZWVwSG91ckludmFyaWFudCkgeworICAgICAgICAgICAgZHN0ID0gZ2V0KERTVF9PRkZTRVQpOworICAgICAgICB9CisKKyAgICAgICAgc2V0VGltZUluTWlsbGlzKGdldFRpbWVJbk1pbGxpcygpICsgZGVsdGEpOworCisgICAgICAgIGlmIChrZWVwSG91ckludmFyaWFudCkgeworICAgICAgICAgICAgZHN0IC09IGdldChEU1RfT0ZGU0VUKTsKKyAgICAgICAgICAgIGlmIChkc3QgIT0gMCkgeworICAgICAgICAgICAgICAgIHNldFRpbWVJbk1pbGxpcyh0aW1lICsgZHN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIG5hbWUgb2YgdGhpcyBjYWxlbmRhciBpbiB0aGUgbGFuZ3VhZ2Ugb2YgdGhlIGdpdmVuIGxvY2FsZS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIGdldERpc3BsYXlOYW1lKExvY2FsZSBsb2MpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2xhc3MoKS5nZXROYW1lKCk7CisgICAgfQorICAgIAorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIEludGVyZmFjZSBmb3IgY3JlYXRpbmcgY3VzdG9uIERhdGVGb3JtYXRzIGZvciBkaWZmZXJlbnQgdHlwZXMgb2YgQ2FsZW5kYXJzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSA8Y29kZT5EYXRlRm9ybWF0PC9jb2RlPiBhcHByb3ByaWF0ZSB0byB0aGlzIGNhbGVuZGFyLgorICAgICAqIFN1YmNsYXNzZXMgd2lzaGluZyB0byBzcGVjaWFsaXplIHRoaXMgYmVoYXZpb3Igc2hvdWxkIG92ZXJyaWRlCisgICAgICogPGNvZGU+aGFuZGxlR2V0RGF0ZUZvcm1hdCgpPC9jb2RlPgorICAgICAqIEBzZWUgI2hhbmRsZUdldERhdGVGb3JtYXQKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgRGF0ZUZvcm1hdCBnZXREYXRlVGltZUZvcm1hdChpbnQgZGF0ZVN0eWxlLCBpbnQgdGltZVN0eWxlLCBMb2NhbGUgbG9jKSB7CisgICAgICAgIHJldHVybiBmb3JtYXRIZWxwZXIodGhpcywgbG9jLCBkYXRlU3R5bGUsIHRpbWVTdHlsZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgPGNvZGU+RGF0ZUZvcm1hdDwvY29kZT4gYXBwcm9wcmlhdGUgdG8gdGhpcyBjYWxlbmRhci4KKyAgICAgKiBUaGlzIGlzIGEgZnJhbWV3b3JrIG1ldGhvZCBmb3Igc3ViY2xhc3NlcyB0byBvdmVycmlkZS4gIFRoaXMgbWV0aG9kCisgICAgICogaXMgcmVzcG9uc2libGUgZm9yIGNyZWF0aW5nIHRoZSBjYWxlbmRhci1zcGVjaWZpYyBEYXRlRm9ybWF0IGFuZAorICAgICAqIERhdGVGb3JtYXRTeW1ib2xzIG9iamVjdHMgYXMgbmVlZGVkLgorICAgICAqIEBwYXJhbSBwYXR0ZXJuIHRoZSBwYXR0ZXJuLCBzcGVjaWZpYyB0byB0aGUgPGNvZGU+RGF0ZUZvcm1hdDwvY29kZT4KKyAgICAgKiBzdWJjbGFzcworICAgICAqIEBwYXJhbSBsb2NhbGUgdGhlIGxvY2FsZSBmb3Igd2hpY2ggdGhlIHN5bWJvbHMgc2hvdWxkIGJlIGRyYXduCisgICAgICogQHJldHVybiBhIDxjb2RlPkRhdGVGb3JtYXQ8L2NvZGU+IGFwcHJvcHJpYXRlIHRvIHRoaXMgY2FsZW5kYXIKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgRGF0ZUZvcm1hdCBoYW5kbGVHZXREYXRlRm9ybWF0KFN0cmluZyBwYXR0ZXJuLCBMb2NhbGUgbG9jYWxlKSB7CisgICAgICAgIERhdGVGb3JtYXRTeW1ib2xzIHN5bWJvbHMgPSBuZXcgRGF0ZUZvcm1hdFN5bWJvbHModGhpcywgbG9jYWxlKTsKKyAgICAgICAgcmV0dXJuIG5ldyBTaW1wbGVEYXRlRm9ybWF0KHBhdHRlcm4sIHN5bWJvbHMpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgcHJpdmF0ZSBEYXRlRm9ybWF0IGZvcm1hdEhlbHBlcihDYWxlbmRhciBjYWwsIExvY2FsZSBsb2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkYXRlU3R5bGUsIGludCB0aW1lU3R5bGUpCisgICAgeworICAgICAgICAvLyBTZWUgaWYgdGhlcmUgYXJlIGFueSBjdXN0b20gcmVzb3VyY2VzIGZvciB0aGlzIGNhbGVuZGFyCisgICAgICAgIC8vIElmIG5vdCwganVzdCB1c2UgdGhlIGRlZmF1bHQgRGF0ZUZvcm1hdAorICAgICAgICBEYXRlRm9ybWF0IHJlc3VsdCA9IG51bGw7CisKKyAgICAgICAgUmVzb3VyY2VCdW5kbGUgYnVuZGxlID0gRGF0ZUZvcm1hdFN5bWJvbHMuZ2V0RGF0ZUZvcm1hdEJ1bmRsZShjYWwsIGxvYyk7CisKKyAgICAgICAgaWYgKGJ1bmRsZSAhPSBudWxsKSB7CisKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgU3RyaW5nW10gcGF0dGVybnMgPSBidW5kbGUuZ2V0U3RyaW5nQXJyYXkoIkRhdGVUaW1lUGF0dGVybnMiKTsKKworICAgICAgICAgICAgICAgIFN0cmluZyBwYXR0ZXJuID0gbnVsbDsKKyAgICAgICAgICAgICAgICBpZiAoKHRpbWVTdHlsZSA+PSAwKSAmJiAoZGF0ZVN0eWxlID49IDApKSB7CisgICAgICAgICAgICAgICAgICAgIE9iamVjdFtdIGRhdGVUaW1lQXJncyA9IHsgcGF0dGVybnNbdGltZVN0eWxlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuc1tkYXRlU3R5bGUgKyA0XSB9OworICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuID0gTWVzc2FnZUZvcm1hdC5mb3JtYXQocGF0dGVybnNbOF0sIGRhdGVUaW1lQXJncyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRpbWVTdHlsZSA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIHBhdHRlcm4gPSBwYXR0ZXJuc1t0aW1lU3R5bGVdOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRlU3R5bGUgPj0gMCkgeworICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuID0gcGF0dGVybnNbZGF0ZVN0eWxlICsgNF07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJObyBkYXRlIG9yIHRpbWUgc3R5bGUgc3BlY2lmaWVkIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNhbC5oYW5kbGVHZXREYXRlRm9ybWF0KHBhdHRlcm4sIGxvYyk7CisgICAgICAgICAgICB9IGNhdGNoIChNaXNzaW5nUmVzb3VyY2VFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIC8vIE5vIGN1c3RvbSBwYXR0ZXJucworICAgICAgICAgICAgICAgIHJlc3VsdCA9IERhdGVGb3JtYXQuZ2V0RGF0ZVRpbWVJbnN0YW5jZShkYXRlU3R5bGUsIHRpbWVTdHlsZSwgbG9jKTsKKyAgICAgICAgICAgICAgICBEYXRlRm9ybWF0U3ltYm9scyBzeW1ib2xzID0gbmV3IERhdGVGb3JtYXRTeW1ib2xzKGNhbCwgbG9jKTsKKyAgICAgICAgICAgICAgICAoKFNpbXBsZURhdGVGb3JtYXQpIHJlc3VsdCkuc2V0RGF0ZUZvcm1hdFN5bWJvbHMoc3ltYm9scyk7IC8vIGFsaXUKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IFNpbXBsZURhdGVGb3JtYXQuZ2V0RGF0ZVRpbWVJbnN0YW5jZShkYXRlU3R5bGUsIHRpbWVTdHlsZSwgbG9jKTsKKyAgICAgICAgfQorICAgICAgICByZXN1bHQuc2V0Q2FsZW5kYXIoY2FsKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBQcm90ZWN0ZWQgdXRpbGl0eSBtZXRob2RzIGZvciB1c2UgYnkgc3ViY2xhc3Nlcy4gIFRoZXNlIGFyZSB2ZXJ5IGhhbmR5CisgICAgLy8gZm9yIGltcGxlbWVudGluZyBhZGQsIHJvbGwsIGFuZCBjb21wdXRlRmllbGRzLgorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIC8qKgorICAgICAqIEFkanVzdCB0aGUgc3BlY2lmaWVkIGZpZWxkIHNvIHRoYXQgaXQgaXMgd2l0aGluCisgICAgICogdGhlIGFsbG93YWJsZSByYW5nZSBmb3IgdGhlIGRhdGUgdG8gd2hpY2ggdGhpcyBjYWxlbmRhciBpcyBzZXQuCisgICAgICogRm9yIGV4YW1wbGUsIGluIGEgR3JlZ29yaWFuIGNhbGVuZGFyIHBpbm5pbmcgdGhlIHtAbGluayAjREFZX09GX01PTlRIIERBWV9PRl9NT05USH0KKyAgICAgKiBmaWVsZCBmb3IgYSBjYWxlbmRhciBzZXQgdG8gQXByaWwgMzEgd291bGQgY2F1c2UgaXQgdG8gYmUgc2V0CisgICAgICogdG8gQXByaWwgMzAuCisgICAgICogPHA+CisgICAgICogPGI+U3ViY2xhc3Npbmc6PC9iPgorICAgICAqIDxicj4KKyAgICAgKiBUaGlzIHV0aWxpdHkgbWV0aG9kIGlzIGludGVuZGVkIGZvciB1c2UgYnkgc3ViY2xhc3NlcyB0aGF0IG5lZWQgdG8gaW1wbGVtZW50CisgICAgICogdGhlaXIgb3duIG92ZXJyaWRlcyBvZiB7QGxpbmsgI3JvbGwgcm9sbH0gYW5kIHtAbGluayAjYWRkIGFkZH0uCisgICAgICogPHA+CisgICAgICogPGI+Tm90ZTo8L2I+CisgICAgICogPGNvZGU+cGluRmllbGQ8L2NvZGU+IGlzIGltcGxlbWVudGVkIGluIHRlcm1zIG9mCisgICAgICoge0BsaW5rICNnZXRBY3R1YWxNaW5pbXVtIGdldEFjdHVhbE1pbmltdW19CisgICAgICogYW5kIHtAbGluayAjZ2V0QWN0dWFsTWF4aW11bSBnZXRBY3R1YWxNYXhpbXVtfS4gIElmIGVpdGhlciBvZiB0aG9zZSBtZXRob2RzIHVzZXMKKyAgICAgKiBhIHNsb3csIGl0ZXJhdGl2ZSBhbGdvcml0aG0gZm9yIGEgcGFydGljdWxhciBmaWVsZCwgaXQgd291bGQgYmUKKyAgICAgKiB1bndpc2UgdG8gYXR0ZW1wdCB0byBjYWxsIDxjb2RlPnBpbkZpZWxkPC9jb2RlPiBmb3IgdGhhdCBmaWVsZC4gIElmIHlvdQorICAgICAqIHJlYWxseSBkbyBuZWVkIHRvIGRvIHNvLCB5b3Ugc2hvdWxkIG92ZXJyaWRlIHRoaXMgbWV0aG9kIHRvIGRvCisgICAgICogc29tZXRoaW5nIG1vcmUgZWZmaWNpZW50IGZvciB0aGF0IGZpZWxkLgorICAgICAqIDxwPgorICAgICAqIEBwYXJhbSBmaWVsZCBUaGUgY2FsZW5kYXIgZmllbGQgd2hvc2UgdmFsdWUgc2hvdWxkIGJlIHBpbm5lZC4KKyAgICAgKgorICAgICAqIEBzZWUgI2dldEFjdHVhbE1pbmltdW0KKyAgICAgKiBAc2VlICNnZXRBY3R1YWxNYXhpbXVtCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHJvdGVjdGVkIHZvaWQgcGluRmllbGQoaW50IGZpZWxkKSB7CisgICAgICAgIGludCBtYXggPSBnZXRBY3R1YWxNYXhpbXVtKGZpZWxkKTsKKyAgICAgICAgaW50IG1pbiA9IGdldEFjdHVhbE1pbmltdW0oZmllbGQpOworICAgICAgICAKKyAgICAgICAgaWYgKGZpZWxkc1tmaWVsZF0gPiBtYXgpIHsKKyAgICAgICAgICAgIHNldChmaWVsZCwgbWF4KTsKKyAgICAgICAgfSBlbHNlIGlmIChmaWVsZHNbZmllbGRdIDwgbWluKSB7CisgICAgICAgICAgICBzZXQoZmllbGQsIG1pbik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIHdlZWsgbnVtYmVyIG9mIGEgZGF5LCB3aXRoaW4gYSBwZXJpb2QuIFRoaXMgbWF5IGJlIHRoZSB3ZWVrIG51bWJlciBpbgorICAgICAqIGEgeWVhciBvciB0aGUgd2VlayBudW1iZXIgaW4gYSBtb250aC4gVXN1YWxseSB0aGlzIHdpbGwgYmUgYSB2YWx1ZSA+PSAxLCBidXQgaWYKKyAgICAgKiBzb21lIGluaXRpYWwgZGF5cyBvZiB0aGUgcGVyaW9kIGFyZSBleGNsdWRlZCBmcm9tIHdlZWsgMSwgYmVjYXVzZQorICAgICAqIHtAbGluayAjZ2V0TWluaW1hbERheXNJbkZpcnN0V2VlayBnZXRNaW5pbWFsRGF5c0luRmlyc3RXZWVrfSBpcyA+IDEsIHRoZW4gCisgICAgICogdGhlIHdlZWsgbnVtYmVyIHdpbGwgYmUgemVybyBmb3IgdGhvc2UKKyAgICAgKiBpbml0aWFsIGRheXMuIFRoaXMgbWV0aG9kIHJlcXVpcmVzIHRoZSBkYXkgbnVtYmVyIGFuZCBkYXkgb2Ygd2VlayBmb3Igc29tZQorICAgICAqIGtub3duIGRhdGUgaW4gdGhlIHBlcmlvZCBpbiBvcmRlciB0byBkZXRlcm1pbmUgdGhlIGRheSBvZiB3ZWVrIAorICAgICAqIG9uIHRoZSBkZXNpcmVkIGRheS4KKyAgICAgKiA8cD4KKyAgICAgKiA8Yj5TdWJjbGFzc2luZzo8L2I+CisgICAgICogPGJyPgorICAgICAqIFRoaXMgbWV0aG9kIGlzIGludGVuZGVkIGZvciB1c2UgYnkgc3ViY2xhc3NlcyBpbiBpbXBsZW1lbnRpbmcgdGhlaXIKKyAgICAgKiB7QGxpbmsgI2NvbXB1dGVUaW1lIGNvbXB1dGVUaW1lfSBhbmQvb3Ige0BsaW5rICNjb21wdXRlRmllbGRzIGNvbXB1dGVGaWVsZHN9IG1ldGhvZHMuCisgICAgICogSXQgaXMgb2Z0ZW4gdXNlZnVsIGluIHtAbGluayAjZ2V0QWN0dWFsTWluaW11bSBnZXRBY3R1YWxNaW5pbXVtfSBhbmQKKyAgICAgKiB7QGxpbmsgI2dldEFjdHVhbE1heGltdW0gZ2V0QWN0dWFsTWF4aW11bX0gYXMgd2VsbC4KKyAgICAgKiA8cD4KKyAgICAgKiBUaGlzIHZhcmlhbnQgaXMgaGFuZHkgZm9yIGNvbXB1dGluZyB0aGUgd2VlayBudW1iZXIgb2Ygc29tZSBvdGhlcgorICAgICAqIGRheSBvZiBhIHBlcmlvZCAob2Z0ZW4gdGhlIGZpcnN0IG9yIGxhc3QgZGF5IG9mIHRoZSBwZXJpb2QpIHdoZW4gaXRzIGRheQorICAgICAqIG9mIHRoZSB3ZWVrIGlzIG5vdCBrbm93biBidXQgdGhlIGRheSBudW1iZXIgYW5kIGRheSBvZiB3ZWVrIGZvciBzb21lIG90aGVyCisgICAgICogZGF5IGluIHRoZSBwZXJpb2QgKGUuZy4gdGhlIGN1cnJlbnQgZGF0ZSkgPGVtPmlzPC9lbT4ga25vd24uCisgICAgICogPHA+CisgICAgICogQHBhcmFtIGRlc2lyZWREYXkgICAgVGhlIHtAbGluayAjREFZX09GX1lFQVIgREFZX09GX1lFQVJ9IG9yCisgICAgICogICAgICAgICAgICAgIHtAbGluayAjREFZX09GX01PTlRIIERBWV9PRl9NT05USH0gd2hvc2Ugd2VlayBudW1iZXIgaXMgZGVzaXJlZC4KKyAgICAgKiAgICAgICAgICAgICAgU2hvdWxkIGJlIDEgZm9yIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHBlcmlvZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBrbm93bkRheU9mUGVyaW9kICAgVGhlIHtAbGluayAjREFZX09GX1lFQVIgREFZX09GX1lFQVJ9CisgICAgICogICAgICAgICAgICAgIG9yIHtAbGluayAjREFZX09GX01PTlRIIERBWV9PRl9NT05USH0gZm9yIGEgZGF5IGluIHRoZSBwZXJpb2Qgd2hvc2UKKyAgICAgKiAgICAgICAgICAgICAge0BsaW5rICNEQVlfT0ZfV0VFSyBEQVlfT0ZfV0VFS30gaXMgc3BlY2lmaWVkIGJ5IHRoZQorICAgICAqICAgICAgICAgICAgICA8Y29kZT5rbm93bkRheU9mV2VlazwvY29kZT4gcGFyYW1ldGVyLgorICAgICAqICAgICAgICAgICAgICBTaG91bGQgYmUgMSBmb3IgZmlyc3QgZGF5IG9mIHBlcmlvZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBrbm93bkRheU9mV2VlayAgVGhlIHtAbGluayAjREFZX09GX1dFRUsgREFZX09GX1dFRUt9IGZvciB0aGUgZGF5CisgICAgICogICAgICAgICAgICAgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIDxjb2RlPmtub3duRGF5T2ZQZXJpb2Q8L2NvZGU+IHBhcmFtZXRlci4KKyAgICAgKiAgICAgICAgICAgICAgMS1iYXNlZCB3aXRoIDE9U3VuZGF5LgorICAgICAqCisgICAgICogQHJldHVybiAgICAgIFRoZSB3ZWVrIG51bWJlciAob25lLWJhc2VkKSwgb3IgemVybyBpZiB0aGUgZGF5IGZhbGxzIGJlZm9yZQorICAgICAqICAgICAgICAgICAgICB0aGUgZmlyc3Qgd2VlayBiZWNhdXNlCisgICAgICogICAgICAgICAgICAgIHtAbGluayAjZ2V0TWluaW1hbERheXNJbkZpcnN0V2VlayBnZXRNaW5pbWFsRGF5c0luRmlyc3RXZWVrfQorICAgICAqICAgICAgICAgICAgICBpcyBtb3JlIHRoYW4gb25lLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHByb3RlY3RlZCBpbnQgd2Vla051bWJlcihpbnQgZGVzaXJlZERheSwgaW50IGRheU9mUGVyaW9kLCBpbnQgZGF5T2ZXZWVrKQorICAgIHsKKyAgICAgICAgLy8gRGV0ZXJtaW5lIHRoZSBkYXkgb2YgdGhlIHdlZWsgb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgcGVyaW9kCisgICAgICAgIC8vIGluIHF1ZXN0aW9uIChlaXRoZXIgYSB5ZWFyIG9yIGEgbW9udGgpLiAgWmVybyByZXByZXNlbnRzIHRoZQorICAgICAgICAvLyBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgb24gdGhpcyBjYWxlbmRhci4KKyAgICAgICAgaW50IHBlcmlvZFN0YXJ0RGF5T2ZXZWVrID0gKGRheU9mV2VlayAtIGdldEZpcnN0RGF5T2ZXZWVrKCkgLSBkYXlPZlBlcmlvZCArIDEpICUgNzsKKyAgICAgICAgaWYgKHBlcmlvZFN0YXJ0RGF5T2ZXZWVrIDwgMCkgcGVyaW9kU3RhcnREYXlPZldlZWsgKz0gNzsKKworICAgICAgICAvLyBDb21wdXRlIHRoZSB3ZWVrIG51bWJlci4gIEluaXRpYWxseSwgaWdub3JlIHRoZSBmaXJzdCB3ZWVrLCB3aGljaAorICAgICAgICAvLyBtYXkgYmUgZnJhY3Rpb25hbCAob3IgbWF5IG5vdCBiZSkuICBXZSBhZGQgcGVyaW9kU3RhcnREYXlPZldlZWsgaW4KKyAgICAgICAgLy8gb3JkZXIgdG8gZmlsbCBvdXQgdGhlIGZpcnN0IHdlZWssIGlmIGl0IGlzIGZyYWN0aW9uYWwuCisgICAgICAgIGludCB3ZWVrTm8gPSAoZGVzaXJlZERheSArIHBlcmlvZFN0YXJ0RGF5T2ZXZWVrIC0gMSkvNzsKKworICAgICAgICAvLyBJZiB0aGUgZmlyc3Qgd2VlayBpcyBsb25nIGVub3VnaCwgdGhlbiBjb3VudCBpdC4gIElmCisgICAgICAgIC8vIHRoZSBtaW5pbWFsIGRheXMgaW4gdGhlIGZpcnN0IHdlZWsgaXMgb25lLCBvciBpZiB0aGUgcGVyaW9kIHN0YXJ0CisgICAgICAgIC8vIGlzIHplcm8sIHdlIGFsd2F5cyBpbmNyZW1lbnQgd2Vla05vLgorICAgICAgICBpZiAoKDcgLSBwZXJpb2RTdGFydERheU9mV2VlaykgPj0gZ2V0TWluaW1hbERheXNJbkZpcnN0V2VlaygpKSArK3dlZWtObzsKKworICAgICAgICByZXR1cm4gd2Vla05vOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgd2VlayBudW1iZXIgb2YgYSBkYXksIHdpdGhpbiBhIHBlcmlvZC4gVGhpcyBtYXkgYmUgdGhlIHdlZWsgbnVtYmVyIGluCisgICAgICogYSB5ZWFyLCBvciB0aGUgd2VlayBudW1iZXIgaW4gYSBtb250aC4gVXN1YWxseSB0aGlzIHdpbGwgYmUgYSB2YWx1ZSA+PSAxLCBidXQgaWYKKyAgICAgKiBzb21lIGluaXRpYWwgZGF5cyBvZiB0aGUgcGVyaW9kIGFyZSBleGNsdWRlZCBmcm9tIHdlZWsgMSwgYmVjYXVzZQorICAgICAqIHtAbGluayAjZ2V0TWluaW1hbERheXNJbkZpcnN0V2VlayBnZXRNaW5pbWFsRGF5c0luRmlyc3RXZWVrfSBpcyA+IDEsCisgICAgICogdGhlbiB0aGUgd2VlayBudW1iZXIgd2lsbCBiZSB6ZXJvIGZvciB0aG9zZQorICAgICAqIGluaXRpYWwgZGF5cy4gVGhpcyBtZXRob2QgcmVxdWlyZXMgdGhlIGRheSBvZiB3ZWVrIGZvciB0aGUgZ2l2ZW4gZGF0ZSBpbiBvcmRlciB0byAKKyAgICAgKiBkZXRlcm1pbmUgdGhlIHJlc3VsdC4KKyAgICAgKiA8cD4KKyAgICAgKiA8Yj5TdWJjbGFzc2luZzo8L2I+CisgICAgICogPGJyPgorICAgICAqIFRoaXMgbWV0aG9kIGlzIGludGVuZGVkIGZvciB1c2UgYnkgc3ViY2xhc3NlcyBpbiBpbXBsZW1lbnRpbmcgdGhlaXIKKyAgICAgKiB7QGxpbmsgI2NvbXB1dGVUaW1lIGNvbXB1dGVUaW1lfSBhbmQvb3Ige0BsaW5rICNjb21wdXRlRmllbGRzIGNvbXB1dGVGaWVsZHN9IG1ldGhvZHMuCisgICAgICogSXQgaXMgb2Z0ZW4gdXNlZnVsIGluIHtAbGluayAjZ2V0QWN0dWFsTWluaW11bSBnZXRBY3R1YWxNaW5pbXVtfSBhbmQKKyAgICAgKiB7QGxpbmsgI2dldEFjdHVhbE1heGltdW0gZ2V0QWN0dWFsTWF4aW11bX0gYXMgd2VsbC4KKyAgICAgKiA8cD4KKyAgICAgKiBAcGFyYW0gZGF5T2ZQZXJpb2QgICBUaGUge0BsaW5rICNEQVlfT0ZfWUVBUiBEQVlfT0ZfWUVBUn0gb3IKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICB7QGxpbmsgI0RBWV9PRl9NT05USCBEQVlfT0ZfTU9OVEh9IHdob3NlIHdlZWsgbnVtYmVyIGlzIGRlc2lyZWQuCisgICAgICogICAgICAgICAgICAgICAgICAgICAgU2hvdWxkIGJlIDEgZm9yIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHBlcmlvZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBkYXlvZldlZWsgICAgIFRoZSB7QGxpbmsgI0RBWV9PRl9XRUVLIERBWV9PRl9XRUVLfSBmb3IgdGhlIGRheQorICAgICAqICAgICAgICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIDxjb2RlPmRheU9mUGVyaW9kPC9jb2RlPiBwYXJhbWV0ZXIuCisgICAgICogICAgICAgICAgICAgICAgICAgICAgMS1iYXNlZCB3aXRoIDE9U3VuZGF5LgorICAgICAqCisgICAgICogQHJldHVybiAgICAgIFRoZSB3ZWVrIG51bWJlciAob25lLWJhc2VkKSwgb3IgemVybyBpZiB0aGUgZGF5IGZhbGxzIGJlZm9yZQorICAgICAqICAgICAgICAgICAgICB0aGUgZmlyc3Qgd2VlayBiZWNhdXNlCisgICAgICogICAgICAgICAgICAgIHtAbGluayAjZ2V0TWluaW1hbERheXNJbkZpcnN0V2VlayBnZXRNaW5pbWFsRGF5c0luRmlyc3RXZWVrfQorICAgICAqICAgICAgICAgICAgICBpcyBtb3JlIHRoYW4gb25lLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHByb3RlY3RlZCBmaW5hbCBpbnQgd2Vla051bWJlcihpbnQgZGF5T2ZQZXJpb2QsIGludCBkYXlPZldlZWspCisgICAgeworICAgICAgICByZXR1cm4gd2Vla051bWJlcihkYXlPZlBlcmlvZCwgZGF5T2ZQZXJpb2QsIGRheU9mV2Vlayk7CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gQ29uc3RhbnRzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgICogW05FV10KKyAgICAgKiBSZXR1cm4gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgZ2l2ZW4gdGltZSBhbmQgdGhlIHRpbWUgdGhpcworICAgICAqIGNhbGVuZGFyIG9iamVjdCBpcyBzZXQgdG8uICBJZiB0aGlzIGNhbGVuZGFyIGlzIHNldAorICAgICAqIDxlbT5iZWZvcmU8L2VtPiB0aGUgZ2l2ZW4gdGltZSwgdGhlIHJldHVybmVkIHZhbHVlIHdpbGwgYmUKKyAgICAgKiBwb3NpdGl2ZS4gIElmIHRoaXMgY2FsZW5kYXIgaXMgc2V0IDxlbT5hZnRlcjwvZW0+IHRoZSBnaXZlbgorICAgICAqIHRpbWUsIHRoZSByZXR1cm5lZCB2YWx1ZSB3aWxsIGJlIG5lZ2F0aXZlLiAgVGhlCisgICAgICogPGNvZGU+ZmllbGQ8L2NvZGU+IHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIHVuaXRzIG9mIHRoZSByZXR1cm4KKyAgICAgKiB2YWx1ZS4gIEZvciBleGFtcGxlLCBpZiA8Y29kZT5maWVsZERpZmZlcmVuY2Uod2hlbiwKKyAgICAgKiBDYWxlbmRhci5NT05USCk8L2NvZGU+IHJldHVybnMgMywgdGhlbiB0aGlzIGNhbGVuZGFyIGlzIHNldCB0bworICAgICAqIDMgbW9udGhzIGJlZm9yZSA8Y29kZT53aGVuPC9jb2RlPiwgYW5kIHBvc3NpYmx5IHNvbWUgYWRkaXRpb24KKyAgICAgKiB0aW1lIGxlc3MgdGhhbiBvbmUgbW9udGguCisgICAgICoKKyAgICAgKiA8cD5BcyBhIHNpZGUgZWZmZWN0IG9mIHRoaXMgY2FsbCwgdGhpcyBjYWxlbmRhciBpcyBhZHZhbmNlZAorICAgICAqIHRvd2FyZCA8Y29kZT53aGVuPC9jb2RlPiBieSB0aGUgZ2l2ZW4gYW1vdW50LiAgVGhhdCBpcywgY2FsbGluZworICAgICAqIHRoaXMgbWV0aG9kIGhhcyB0aGUgc2lkZSBlZmZlY3Qgb2YgY2FsbGluZyA8Y29kZT5hZGQoZmllbGQsCisgICAgICogbik8L2NvZGU+LCB3aGVyZSA8Y29kZT5uPC9jb2RlPiBpcyB0aGUgcmV0dXJuIHZhbHVlLgorICAgICAqCisgICAgICogPHA+VXNhZ2U6IFRvIHVzZSB0aGlzIG1ldGhvZCwgY2FsbCBpdCBmaXJzdCB3aXRoIHRoZSBsYXJnZXN0CisgICAgICogZmllbGQgb2YgaW50ZXJlc3QsIHRoZW4gd2l0aCBwcm9ncmVzc2l2ZWx5IHNtYWxsZXIgZmllbGRzLiAgRm9yCisgICAgICogZXhhbXBsZToKKyAgICAgKgorICAgICAqIDxwcmU+CisgICAgICogaW50IHkgPSBjYWwuZmllbGREaWZmZXJlbmNlKHdoZW4sIENhbGVuZGFyLllFQVIpOworICAgICAqIGludCBtID0gY2FsLmZpZWxkRGlmZmVyZW5jZSh3aGVuLCBDYWxlbmRhci5NT05USCk7CisgICAgICogaW50IGQgPSBjYWwuZmllbGREaWZmZXJlbmNlKHdoZW4sIENhbGVuZGFyLkRBVEUpOzwvcHJlPgorICAgICAqCisgICAgICogY29tcHV0ZXMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiA8Y29kZT5jYWw8L2NvZGU+IGFuZAorICAgICAqIDxjb2RlPndoZW48L2NvZGU+IGluIHllYXJzLCBtb250aHMsIGFuZCBkYXlzLgorICAgICAqCisgICAgICogPHA+Tm90ZTogPGNvZGU+ZmllbGREaWZmZXJlbmNlKCk8L2NvZGU+IGlzCisgICAgICogPGVtPmFzeW1tZXRyaWNhbDwvZW0+LiAgVGhhdCBpcywgaW4gdGhlIGZvbGxvd2luZyBjb2RlOgorICAgICAqCisgICAgICogPHByZT4KKyAgICAgKiBjYWwuc2V0VGltZShkYXRlMSk7CisgICAgICogaW50IG0xID0gY2FsLmZpZWxkRGlmZmVyZW5jZShkYXRlMiwgQ2FsZW5kYXIuTU9OVEgpOworICAgICAqIGludCBkMSA9IGNhbC5maWVsZERpZmZlcmVuY2UoZGF0ZTIsIENhbGVuZGFyLkRBVEUpOworICAgICAqIGNhbC5zZXRUaW1lKGRhdGUyKTsKKyAgICAgKiBpbnQgbTIgPSBjYWwuZmllbGREaWZmZXJlbmNlKGRhdGUxLCBDYWxlbmRhci5NT05USCk7CisgICAgICogaW50IGQyID0gY2FsLmZpZWxkRGlmZmVyZW5jZShkYXRlMSwgQ2FsZW5kYXIuREFURSk7PC9wcmU+CisgICAgICoKKyAgICAgKiBvbmUgbWlnaHQgZXhwZWN0IHRoYXQgPGNvZGU+bTEgPT0gLW0yICYmIGQxID09IC1kMjwvY29kZT4uCisgICAgICogSG93ZXZlciwgdGhpcyBpcyBub3QgZ2VuZXJhbGx5IHRoZSBjYXNlLCBiZWNhdXNlIG9mCisgICAgICogaXJyZWd1bGFyaXRpZXMgaW4gdGhlIHVuZGVybHlpbmcgY2FsZW5kYXIgc3lzdGVtIChlLmcuLCB0aGUKKyAgICAgKiBHcmVnb3JpYW4gY2FsZW5kYXIgaGFzIGEgdmFyeWluZyBudW1iZXIgb2YgZGF5cyBwZXIgbW9udGgpLgorICAgICAqCisgICAgICogQHBhcmFtIHdoZW4gdGhlIGRhdGUgdG8gY29tcGFyZSB0aGlzIGNhbGVuZGFyJ3MgdGltZSB0bworICAgICAqIEBwYXJhbSBmaWVsZCB0aGUgZmllbGQgaW4gd2hpY2ggdG8gY29tcHV0ZSB0aGUgcmVzdWx0CisgICAgICogQHJldHVybiB0aGUgZGlmZmVyZW5jZSwgZWl0aGVyIHBvc2l0aXZlIG9yIG5lZ2F0aXZlLCBiZXR3ZWVuCisgICAgICogdGhpcyBjYWxlbmRhcidzIHRpbWUgYW5kIDxjb2RlPndoZW48L2NvZGU+LCBpbiB0ZXJtcyBvZgorICAgICAqIDxjb2RlPmZpZWxkPC9jb2RlPi4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGZpZWxkRGlmZmVyZW5jZShEYXRlIHdoZW4sIGludCBmaWVsZCkgeworICAgICAgICBpbnQgbWluID0gMDsKKyAgICAgICAgbG9uZyBzdGFydE1zID0gZ2V0VGltZUluTWlsbGlzKCk7CisgICAgICAgIGxvbmcgdGFyZ2V0TXMgPSB3aGVuLmdldFRpbWUoKTsKKyAgICAgICAgLy8gQWx3YXlzIGFkZCBmcm9tIHRoZSBzdGFydCBtaWxsaXMuICBUaGlzIGFjY29tb2RhdGVzCisgICAgICAgIC8vIG9wZXJhdGlvbnMgbGlrZSBhZGRpbmcgeWVhcnMgZnJvbSBGZWJydWFyeSAyOSwgMjAwMCB1cCB0bworICAgICAgICAvLyBGZWJydWFyeSAyOSwgMjAwNC4gIElmIDEsIDEsIDEsIDEgaXMgYWRkZWQgdG8gdGhlIHllYXIKKyAgICAgICAgLy8gZmllbGQsIHRoZSBET00gZ2V0cyBwaW5uZWQgdG8gMjggYW5kIHN0YXlzIHRoZXJlLCBnaXZpbmcgYW4KKyAgICAgICAgLy8gaW5jb3JyZWN0IERPTSBkaWZmZXJlbmNlIG9mIDEuICBXZSBoYXZlIHRvIGFkZCAxLCByZXNldCwgMiwKKyAgICAgICAgLy8gcmVzZXQsIDMsIHJlc2V0LCA0LgorICAgICAgICBpZiAoc3RhcnRNcyA8IHRhcmdldE1zKSB7CisgICAgICAgICAgICBpbnQgbWF4ID0gMTsKKyAgICAgICAgICAgIC8vIEZpbmQgYSB2YWx1ZSB0aGF0IGlzIHRvbyBsYXJnZQorICAgICAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgICAgIHNldFRpbWVJbk1pbGxpcyhzdGFydE1zKTsKKyAgICAgICAgICAgICAgICBhZGQoZmllbGQsIG1heCk7CisgICAgICAgICAgICAgICAgbG9uZyBtcyA9IGdldFRpbWVJbk1pbGxpcygpOworICAgICAgICAgICAgICAgIGlmIChtcyA9PSB0YXJnZXRNcykgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF4OworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobXMgPiB0YXJnZXRNcykgeworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBtYXggPDw9IDE7CisgICAgICAgICAgICAgICAgICAgIGlmIChtYXggPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBGaWVsZCBkaWZmZXJlbmNlIHRvbyBsYXJnZSB0byBmaXQgaW50byBpbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBEbyBhIGJpbmFyeSBzZWFyY2gKKyAgICAgICAgICAgIHdoaWxlICgobWF4IC0gbWluKSA+IDEpIHsKKyAgICAgICAgICAgICAgICBpbnQgdCA9IChtaW4gKyBtYXgpIC8gMjsKKyAgICAgICAgICAgICAgICBzZXRUaW1lSW5NaWxsaXMoc3RhcnRNcyk7CisgICAgICAgICAgICAgICAgYWRkKGZpZWxkLCB0KTsKKyAgICAgICAgICAgICAgICBsb25nIG1zID0gZ2V0VGltZUluTWlsbGlzKCk7CisgICAgICAgICAgICAgICAgaWYgKG1zID09IHRhcmdldE1zKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0OworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobXMgPiB0YXJnZXRNcykgeworICAgICAgICAgICAgICAgICAgICBtYXggPSB0OworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG1pbiA9IHQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKHN0YXJ0TXMgPiB0YXJnZXRNcykgeworICAgICAgICAgICAgaWYgKGZhbHNlKSB7CisgICAgICAgICAgICAgICAgLy8gVGhpcyB3b3JrcywgYW5kIG1ha2VzIHRoZSBjb2RlIHNtYWxsZXIsIGJ1dCBjb3N0cworICAgICAgICAgICAgICAgIC8vIGFuIGV4dHJhIG9iamVjdCBjcmVhdGlvbiBhbmQgYW4gZXh0cmEgY291cGxlIGN5Y2xlcworICAgICAgICAgICAgICAgIC8vIG9mIGNhbGVuZGFyIGNvbXB1dGF0aW9uLgorICAgICAgICAgICAgICAgIHNldFRpbWVJbk1pbGxpcyh0YXJnZXRNcyk7CisgICAgICAgICAgICAgICAgbWluID0gLWZpZWxkRGlmZmVyZW5jZShuZXcgRGF0ZShzdGFydE1zKSwgZmllbGQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW50IG1heCA9IC0xOworICAgICAgICAgICAgLy8gRmluZCBhIHZhbHVlIHRoYXQgaXMgdG9vIHNtYWxsCisgICAgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgICAgc2V0VGltZUluTWlsbGlzKHN0YXJ0TXMpOworICAgICAgICAgICAgICAgIGFkZChmaWVsZCwgbWF4KTsKKyAgICAgICAgICAgICAgICBsb25nIG1zID0gZ2V0VGltZUluTWlsbGlzKCk7CisgICAgICAgICAgICAgICAgaWYgKG1zID09IHRhcmdldE1zKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXg7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtcyA8IHRhcmdldE1zKSB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG1heCA8PD0gMTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1heCA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBGaWVsZCBkaWZmZXJlbmNlIHRvbyBsYXJnZSB0byBmaXQgaW50byBpbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBEbyBhIGJpbmFyeSBzZWFyY2gKKyAgICAgICAgICAgIHdoaWxlICgobWluIC0gbWF4KSA+IDEpIHsKKyAgICAgICAgICAgICAgICBpbnQgdCA9IChtaW4gKyBtYXgpIC8gMjsKKyAgICAgICAgICAgICAgICBzZXRUaW1lSW5NaWxsaXMoc3RhcnRNcyk7CisgICAgICAgICAgICAgICAgYWRkKGZpZWxkLCB0KTsKKyAgICAgICAgICAgICAgICBsb25nIG1zID0gZ2V0VGltZUluTWlsbGlzKCk7CisgICAgICAgICAgICAgICAgaWYgKG1zID09IHRhcmdldE1zKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0OworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobXMgPCB0YXJnZXRNcykgeworICAgICAgICAgICAgICAgICAgICBtYXggPSB0OworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG1pbiA9IHQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIC8vIFNldCBjYWxlbmRhciB0byBlbmQgcG9pbnQKKyAgICAgICAgc2V0VGltZUluTWlsbGlzKHN0YXJ0TXMpOworICAgICAgICBhZGQoZmllbGQsIG1pbik7CisgICAgICAgIHJldHVybiBtaW47CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgdGltZSB6b25lIHdpdGggdGhlIGdpdmVuIHRpbWUgem9uZSB2YWx1ZS4KKyAgICAgKiBAcGFyYW0gdmFsdWUgdGhlIGdpdmVuIHRpbWUgem9uZS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRUaW1lWm9uZShUaW1lWm9uZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIHpvbmUgPSB2YWx1ZTsKKyAgICAgICAgLyogUmVjb21wdXRlIHRoZSBmaWVsZHMgZnJvbSB0aGUgdGltZSB1c2luZyB0aGUgbmV3IHpvbmUuICBUaGlzIGFsc28KKyAgICAgICAgICogd29ya3MgaWYgaXNUaW1lU2V0IGlzIGZhbHNlIChhZnRlciBhIGNhbGwgdG8gc2V0KCkpLiAgSW4gdGhhdCBjYXNlCisgICAgICAgICAqIHRoZSB0aW1lIHdpbGwgYmUgY29tcHV0ZWQgZnJvbSB0aGUgZmllbGRzIHVzaW5nIHRoZSBuZXcgem9uZSwgdGhlbgorICAgICAgICAgKiB0aGUgZmllbGRzIHdpbGwgZ2V0IHJlY29tcHV0ZWQgZnJvbSB0aGF0LiAgQ29uc2lkZXIgdGhlIHNlcXVlbmNlIG9mCisgICAgICAgICAqIGNhbGxzOiBjYWwuc2V0VGltZVpvbmUoRVNUKTsgY2FsLnNldChIT1VSLCAxKTsgY2FsLnNldFRpbWVab25lKFBTVCkuCisgICAgICAgICAqIElzIGNhbCBzZXQgdG8gMSBvJ2Nsb2NrIEVTVCBvciAxIG8nY2xvY2sgUFNUPyAgQW5zd2VyOiBQU1QuICBNb3JlCisgICAgICAgICAqIGdlbmVyYWxseSwgYSBjYWxsIHRvIHNldFRpbWVab25lKCkgYWZmZWN0cyBjYWxscyB0byBzZXQoKSBCRUZPUkUgQU5ECisgICAgICAgICAqIEFGVEVSIGl0IHVwIHRvIHRoZSBuZXh0IGNhbGwgdG8gY29tcGxldGUoKS4KKyAgICAgICAgICovCisgICAgICAgIGFyZUZpZWxkc1NldCA9IGZhbHNlOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIHRpbWUgem9uZS4KKyAgICAgKiBAcmV0dXJuIHRoZSB0aW1lIHpvbmUgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNhbGVuZGFyLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBUaW1lWm9uZSBnZXRUaW1lWm9uZSgpCisgICAgeworICAgICAgICByZXR1cm4gem9uZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTcGVjaWZ5IHdoZXRoZXIgb3Igbm90IGRhdGUvdGltZSBpbnRlcnByZXRhdGlvbiBpcyB0byBiZSBsZW5pZW50LiAgV2l0aAorICAgICAqIGxlbmllbnQgaW50ZXJwcmV0YXRpb24sIGEgZGF0ZSBzdWNoIGFzICJGZWJydWFyeSA5NDIsIDE5OTYiIHdpbGwgYmUKKyAgICAgKiB0cmVhdGVkIGFzIGJlaW5nIGVxdWl2YWxlbnQgdG8gdGhlIDk0MXN0IGRheSBhZnRlciBGZWJydWFyeSAxLCAxOTk2LgorICAgICAqIFdpdGggc3RyaWN0IGludGVycHJldGF0aW9uLCBzdWNoIGRhdGVzIHdpbGwgY2F1c2UgYW4gZXhjZXB0aW9uIHRvIGJlCisgICAgICogdGhyb3duLgorICAgICAqCisgICAgICogQHNlZSBEYXRlRm9ybWF0I3NldExlbmllbnQKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRMZW5pZW50KGJvb2xlYW4gbGVuaWVudCkKKyAgICB7CisgICAgICAgIHRoaXMubGVuaWVudCA9IGxlbmllbnQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVsbCB3aGV0aGVyIGRhdGUvdGltZSBpbnRlcnByZXRhdGlvbiBpcyB0byBiZSBsZW5pZW50LgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGlzTGVuaWVudCgpCisgICAgeworICAgICAgICByZXR1cm4gbGVuaWVudDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHdoYXQgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayBpczsgZS5nLiwgU3VuZGF5IGluIFVTLAorICAgICAqIE1vbmRheSBpbiBGcmFuY2UuCisgICAgICogQHBhcmFtIHZhbHVlIHRoZSBnaXZlbiBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0Rmlyc3REYXlPZldlZWsoaW50IHZhbHVlKQorICAgIHsKKyAgICAgICAgZmlyc3REYXlPZldlZWsgPSB2YWx1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHdoYXQgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayBpczsgZS5nLiwgU3VuZGF5IGluIFVTLAorICAgICAqIE1vbmRheSBpbiBGcmFuY2UuCisgICAgICogQHJldHVybiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0Rmlyc3REYXlPZldlZWsoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZpcnN0RGF5T2ZXZWVrOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgd2hhdCB0aGUgbWluaW1hbCBkYXlzIHJlcXVpcmVkIGluIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyIGFyZS4KKyAgICAgKiBGb3IgZXhhbXBsZSwgaWYgdGhlIGZpcnN0IHdlZWsgaXMgZGVmaW5lZCBhcyBvbmUgdGhhdCBjb250YWlucyB0aGUgZmlyc3QKKyAgICAgKiBkYXkgb2YgdGhlIGZpcnN0IG1vbnRoIG9mIGEgeWVhciwgY2FsbCB0aGUgbWV0aG9kIHdpdGggdmFsdWUgMS4gSWYgaXQKKyAgICAgKiBtdXN0IGJlIGEgZnVsbCB3ZWVrLCB1c2UgdmFsdWUgNy4KKyAgICAgKiBAcGFyYW0gdmFsdWUgdGhlIGdpdmVuIG1pbmltYWwgZGF5cyByZXF1aXJlZCBpbiB0aGUgZmlyc3Qgd2VlaworICAgICAqIG9mIHRoZSB5ZWFyLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldE1pbmltYWxEYXlzSW5GaXJzdFdlZWsoaW50IHZhbHVlKQorICAgIHsKKyAgICAgICAgbWluaW1hbERheXNJbkZpcnN0V2VlayA9IHZhbHVlOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgd2hhdCB0aGUgbWluaW1hbCBkYXlzIHJlcXVpcmVkIGluIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyIGFyZTsKKyAgICAgKiBlLmcuLCBpZiB0aGUgZmlyc3Qgd2VlayBpcyBkZWZpbmVkIGFzIG9uZSB0aGF0IGNvbnRhaW5zIHRoZSBmaXJzdCBkYXkKKyAgICAgKiBvZiB0aGUgZmlyc3QgbW9udGggb2YgYSB5ZWFyLCBnZXRNaW5pbWFsRGF5c0luRmlyc3RXZWVrIHJldHVybnMgMS4gSWYKKyAgICAgKiB0aGUgbWluaW1hbCBkYXlzIHJlcXVpcmVkIG11c3QgYmUgYSBmdWxsIHdlZWssIGdldE1pbmltYWxEYXlzSW5GaXJzdFdlZWsKKyAgICAgKiByZXR1cm5zIDcuCisgICAgICogQHJldHVybiB0aGUgbWluaW1hbCBkYXlzIHJlcXVpcmVkIGluIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0TWluaW1hbERheXNJbkZpcnN0V2VlaygpCisgICAgeworICAgICAgICByZXR1cm4gbWluaW1hbERheXNJbkZpcnN0V2VlazsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTElNSVRTW11bXSA9IHsKKyAgICAgICAgLy8gICAgTWluaW11bSAgR3JlYXRlc3QgbWluICAgICAgTGVhc3QgbWF4ICAgR3JlYXRlc3QgbWF4CisgICAgICAgIHsvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovfSwgLy8gRVJBCisgICAgICAgIHsvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovfSwgLy8gWUVBUgorICAgICAgICB7LyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL30sIC8vIE1PTlRICisgICAgICAgIHsvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovfSwgLy8gV0VFS19PRl9ZRUFSCisgICAgICAgIHsvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovfSwgLy8gV0VFS19PRl9NT05USAorICAgICAgICB7LyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL30sIC8vIERBWV9PRl9NT05USAorICAgICAgICB7LyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL30sIC8vIERBWV9PRl9ZRUFSCisgICAgICAgIHsgICAgICAgICAgIDEsICAgICAgICAgICAgMSwgICAgICAgICAgICAgNywgICAgICAgICAgICAgNyAgfSwgLy8gREFZX09GX1dFRUsKKyAgICAgICAgey8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi99LCAvLyBEQVlfT0ZfV0VFS19JTl9NT05USAorICAgICAgICB7ICAgICAgICAgICAwLCAgICAgICAgICAgIDAsICAgICAgICAgICAgIDEsICAgICAgICAgICAgIDEgIH0sIC8vIEFNX1BNCisgICAgICAgIHsgICAgICAgICAgIDAsICAgICAgICAgICAgMCwgICAgICAgICAgICAxMSwgICAgICAgICAgICAxMSAgfSwgLy8gSE9VUgorICAgICAgICB7ICAgICAgICAgICAwLCAgICAgICAgICAgIDAsICAgICAgICAgICAgMjMsICAgICAgICAgICAgMjMgIH0sIC8vIEhPVVJfT0ZfREFZCisgICAgICAgIHsgICAgICAgICAgIDAsICAgICAgICAgICAgMCwgICAgICAgICAgICA1OSwgICAgICAgICAgICA1OSAgfSwgLy8gTUlOVVRFCisgICAgICAgIHsgICAgICAgICAgIDAsICAgICAgICAgICAgMCwgICAgICAgICAgICA1OSwgICAgICAgICAgICA1OSAgfSwgLy8gU0VDT05ECisgICAgICAgIHsgICAgICAgICAgIDAsICAgICAgICAgICAgMCwgICAgICAgICAgIDk5OSwgICAgICAgICAgIDk5OSAgfSwgLy8gTUlMTElTRUNPTkQKKyAgICAgICAgey0xMipPTkVfSE9VUiwgLTEyKk9ORV9IT1VSLCAgIDEyKk9ORV9IT1VSLCAgIDEyKk9ORV9IT1VSICB9LCAvLyBaT05FX09GRlNFVAorICAgICAgICB7ICAgICAgICAgICAwLCAgICAgICAgICAgIDAsICAgIDEqT05FX0hPVVIsICAgIDEqT05FX0hPVVIgIH0sIC8vIERTVF9PRkZTRVQKKyAgICAgICAgey8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi99LCAvLyBZRUFSX1dPWQorICAgICAgICB7ICAgICAgICAgICAxLCAgICAgICAgICAgIDEsICAgICAgICAgICAgIDcsICAgICAgICAgICAgIDcgIH0sIC8vIERPV19MT0NBTAorICAgICAgICB7LyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL30sIC8vIEVYVEVOREVEX1lFQVIKKyAgICAgICAgeyAtMHg3RjAwMDAwMCwgIC0weDdGMDAwMDAwLCAgICAweDdGMDAwMDAwLCAgICAweDdGMDAwMDAwICB9LCAvLyBKVUxJQU5fREFZCisgICAgICAgIHsgICAgICAgICAgIDAsICAgICAgICAgICAgMCwgMjQqT05FX0hPVVItMSwgMjQqT05FX0hPVVItMSAgfSwgLy8gTUlMTElTRUNPTkRTX0lOX0RBWQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBTdWJjbGFzcyBBUEkgZm9yIGRlZmluaW5nIGxpbWl0cyBvZiBkaWZmZXJlbnQgdHlwZXMuCisgICAgICogU3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCB0aGlzIG1ldGhvZCB0byByZXR1cm4gbGltaXRzIGZvciB0aGUKKyAgICAgKiBmb2xsb3dpbmcgZmllbGRzOgorICAgICAqCisgICAgICogPHByZT5FUkEKKyAgICAgKiBZRUFSCisgICAgICogTU9OVEgKKyAgICAgKiBXRUVLX09GX1lFQVIKKyAgICAgKiBXRUVLX09GX01PTlRICisgICAgICogREFZX09GX01PTlRICisgICAgICogREFZX09GX1lFQVIKKyAgICAgKiBEQVlfT0ZfV0VFS19JTl9NT05USAorICAgICAqIFlFQVJfV09ZCisgICAgICogRVhURU5ERURfWUVBUjwvcHJlPgorICAgICAqCisgICAgICogQHBhcmFtIGZpZWxkIG9uZSBvZiB0aGUgYWJvdmUgZmllbGQgbnVtYmVycworICAgICAqIEBwYXJhbSBsaW1pdFR5cGUgb25lIG9mIDxjb2RlPk1JTklNVU08L2NvZGU+LCA8Y29kZT5HUkVBVEVTVF9NSU5JTVVNPC9jb2RlPiwKKyAgICAgKiA8Y29kZT5MRUFTVF9NQVhJTVVNPC9jb2RlPiwgb3IgPGNvZGU+TUFYSU1VTTwvY29kZT4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBhYnN0cmFjdCBwcm90ZWN0ZWQgaW50IGhhbmRsZUdldExpbWl0KGludCBmaWVsZCwgaW50IGxpbWl0VHlwZSk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSBsaW1pdCBmb3IgYSBmaWVsZC4KKyAgICAgKiBAcGFyYW0gZmllbGQgdGhlIGZpZWxkLCBmcm9tIDAuLjwvY29kZT5nZXRGaWVsZENvdW50KCktMTwvY29kZT4KKyAgICAgKiBAcGFyYW0gbGltaXRUeXBlIHRoZSB0eXBlIHNwZWNpZmllciBmb3IgdGhlIGxpbWl0CisgICAgICogQHNlZSAjTUlOSU1VTQorICAgICAqIEBzZWUgI0dSRUFURVNUX01JTklNVU0KKyAgICAgKiBAc2VlICNMRUFTVF9NQVhJTVVNCisgICAgICogQHNlZSAjTUFYSU1VTQorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHByb3RlY3RlZCBpbnQgZ2V0TGltaXQoaW50IGZpZWxkLCBpbnQgbGltaXRUeXBlKSB7CisgICAgICAgIHN3aXRjaCAoZmllbGQpIHsKKyAgICAgICAgY2FzZSBEQVlfT0ZfV0VFSzoKKyAgICAgICAgY2FzZSBBTV9QTToKKyAgICAgICAgY2FzZSBIT1VSOgorICAgICAgICBjYXNlIEhPVVJfT0ZfREFZOgorICAgICAgICBjYXNlIE1JTlVURToKKyAgICAgICAgY2FzZSBTRUNPTkQ6CisgICAgICAgIGNhc2UgTUlMTElTRUNPTkQ6CisgICAgICAgIGNhc2UgWk9ORV9PRkZTRVQ6CisgICAgICAgIGNhc2UgRFNUX09GRlNFVDoKKyAgICAgICAgY2FzZSBET1dfTE9DQUw6CisgICAgICAgIGNhc2UgSlVMSUFOX0RBWToKKyAgICAgICAgY2FzZSBNSUxMSVNFQ09ORFNfSU5fREFZOgorICAgICAgICAgICAgcmV0dXJuIExJTUlUU1tmaWVsZF1bbGltaXRUeXBlXTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gaGFuZGxlR2V0TGltaXQoZmllbGQsIGxpbWl0VHlwZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogTGltaXQgdHlwZSBmb3IgPGNvZGU+Z2V0TGltaXQoKTwvY29kZT4gYW5kIDxjb2RlPmhhbmRsZUdldExpbWl0KCk8L2NvZGU+CisgICAgICogaW5kaWNhdGluZyB0aGUgbWluaW11bSB2YWx1ZSB0aGF0IGEgZmllbGQgY2FuIHRha2UgKGxlYXN0IG1pbmltdW0pLgorICAgICAqIEBzZWUgI2dldExpbWl0CisgICAgICogQHNlZSAjaGFuZGxlR2V0TGltaXQKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBNSU5JTVVNID0gMDsKKworICAgIC8qKgorICAgICAqIExpbWl0IHR5cGUgZm9yIDxjb2RlPmdldExpbWl0KCk8L2NvZGU+IGFuZCA8Y29kZT5oYW5kbGVHZXRMaW1pdCgpPC9jb2RlPgorICAgICAqIGluZGljYXRpbmcgdGhlIGdyZWF0ZXN0IG1pbmltdW0gdmFsdWUgdGhhdCBhIGZpZWxkIGNhbiB0YWtlLgorICAgICAqIEBzZWUgI2dldExpbWl0CisgICAgICogQHNlZSAjaGFuZGxlR2V0TGltaXQKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBHUkVBVEVTVF9NSU5JTVVNID0gMTsKKworICAgIC8qKgorICAgICAqIExpbWl0IHR5cGUgZm9yIDxjb2RlPmdldExpbWl0KCk8L2NvZGU+IGFuZCA8Y29kZT5oYW5kbGVHZXRMaW1pdCgpPC9jb2RlPgorICAgICAqIGluZGljYXRpbmcgdGhlIGxlYXN0IG1heGltdW0gdmFsdWUgdGhhdCBhIGZpZWxkIGNhbiB0YWtlLgorICAgICAqIEBzZWUgI2dldExpbWl0CisgICAgICogQHNlZSAjaGFuZGxlR2V0TGltaXQKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBMRUFTVF9NQVhJTVVNID0gMjsKKworICAgIC8qKgorICAgICAqIExpbWl0IHR5cGUgZm9yIDxjb2RlPmdldExpbWl0KCk8L2NvZGU+IGFuZCA8Y29kZT5oYW5kbGVHZXRMaW1pdCgpPC9jb2RlPgorICAgICAqIGluZGljYXRpbmcgdGhlIG1heGltdW0gdmFsdWUgdGhhdCBhIGZpZWxkIGNhbiB0YWtlIChncmVhdGVzdCBtYXhpbXVtKS4KKyAgICAgKiBAc2VlICNnZXRMaW1pdAorICAgICAqIEBzZWUgI2hhbmRsZUdldExpbWl0CisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgTUFYSU1VTSA9IDM7CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBtaW5pbXVtIHZhbHVlIGZvciB0aGUgZ2l2ZW4gdGltZSBmaWVsZC4KKyAgICAgKiBlLmcuLCBmb3IgR3JlZ29yaWFuIERBWV9PRl9NT05USCwgMS4KKyAgICAgKiBAcGFyYW0gZmllbGQgdGhlIGdpdmVuIHRpbWUgZmllbGQuCisgICAgICogQHJldHVybiB0aGUgbWluaW11bSB2YWx1ZSBmb3IgdGhlIGdpdmVuIHRpbWUgZmllbGQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGZpbmFsIGludCBnZXRNaW5pbXVtKGludCBmaWVsZCkgeworICAgICAgICByZXR1cm4gZ2V0TGltaXQoZmllbGQsIE1JTklNVU0pOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIG1heGltdW0gdmFsdWUgZm9yIHRoZSBnaXZlbiB0aW1lIGZpZWxkLgorICAgICAqIGUuZy4gZm9yIEdyZWdvcmlhbiBEQVlfT0ZfTU9OVEgsIDMxLgorICAgICAqIEBwYXJhbSBmaWVsZCB0aGUgZ2l2ZW4gdGltZSBmaWVsZC4KKyAgICAgKiBAcmV0dXJuIHRoZSBtYXhpbXVtIHZhbHVlIGZvciB0aGUgZ2l2ZW4gdGltZSBmaWVsZC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgaW50IGdldE1heGltdW0oaW50IGZpZWxkKSB7CisgICAgICAgIHJldHVybiBnZXRMaW1pdChmaWVsZCwgTUFYSU1VTSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgaGlnaGVzdCBtaW5pbXVtIHZhbHVlIGZvciB0aGUgZ2l2ZW4gZmllbGQgaWYgdmFyaWVzLgorICAgICAqIE90aGVyd2lzZSBzYW1lIGFzIGdldE1pbmltdW0oKS4gRm9yIEdyZWdvcmlhbiwgbm8gZGlmZmVyZW5jZS4KKyAgICAgKiBAcGFyYW0gZmllbGQgdGhlIGdpdmVuIHRpbWUgZmllbGQuCisgICAgICogQHJldHVybiB0aGUgaGlnaGVzdCBtaW5pbXVtIHZhbHVlIGZvciB0aGUgZ2l2ZW4gdGltZSBmaWVsZC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgaW50IGdldEdyZWF0ZXN0TWluaW11bShpbnQgZmllbGQpIHsKKyAgICAgICAgcmV0dXJuIGdldExpbWl0KGZpZWxkLCBHUkVBVEVTVF9NSU5JTVVNKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBsb3dlc3QgbWF4aW11bSB2YWx1ZSBmb3IgdGhlIGdpdmVuIGZpZWxkIGlmIHZhcmllcy4KKyAgICAgKiBPdGhlcndpc2Ugc2FtZSBhcyBnZXRNYXhpbXVtKCkuIGUuZy4sIGZvciBHcmVnb3JpYW4gREFZX09GX01PTlRILCAyOC4KKyAgICAgKiBAcGFyYW0gZmllbGQgdGhlIGdpdmVuIHRpbWUgZmllbGQuCisgICAgICogQHJldHVybiB0aGUgbG93ZXN0IG1heGltdW0gdmFsdWUgZm9yIHRoZSBnaXZlbiB0aW1lIGZpZWxkLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBpbnQgZ2V0TGVhc3RNYXhpbXVtKGludCBmaWVsZCkgeworICAgICAgICByZXR1cm4gZ2V0TGltaXQoZmllbGQsIExFQVNUX01BWElNVU0pOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIFdlZWtlbmQgc3VwcG9ydCAtLSBkZXRlcm1pbmluZyB3aGljaCBkYXlzIG9mIHRoZSB3ZWVrIGFyZSB0aGUgd2Vla2VuZAorICAgIC8vIGluIGEgZ2l2ZW4gbG9jYWxlCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gd2hldGhlciB0aGUgZ2l2ZW4gZGF5IG9mIHRoZSB3ZWVrIGlzIGEgd2Vla2RheSwgYQorICAgICAqIHdlZWtlbmQgZGF5LCBvciBhIGRheSB0aGF0IHRyYW5zaXRpb25zIGZyb20gb25lIHRvIHRoZSBvdGhlciwKKyAgICAgKiBpbiB0aGlzIGNhbGVuZGFyIHN5c3RlbS4gIElmIGEgdHJhbnNpdGlvbiBvY2N1cnMgYXQgbWlkbmlnaHQsCisgICAgICogdGhlbiB0aGUgZGF5cyBiZWZvcmUgYW5kIGFmdGVyIHRoZSB0cmFuc2l0aW9uIHdpbGwgaGF2ZSB0aGUKKyAgICAgKiB0eXBlIFdFRUtEQVkgb3IgV0VFS0VORC4gIElmIGEgdHJhbnNpdGlvbiBvY2N1cnMgYXQgYSB0aW1lCisgICAgICogb3RoZXIgdGhhbiBtaWRuaWdodCwgdGhlbiB0aGUgZGF5IG9mIHRoZSB0cmFuc2l0aW9uIHdpbGwgaGF2ZQorICAgICAqIHRoZSB0eXBlIFdFRUtFTkRfT05TRVQgb3IgV0VFS0VORF9DRUFTRS4gIEluIHRoaXMgY2FzZSwgdGhlCisgICAgICogbWV0aG9kIGdldFdlZWtlbmRUcmFuc2l0aW9uKCkgd2lsbCByZXR1cm4gdGhlIHBvaW50IG9mCisgICAgICogdHJhbnNpdGlvbi4KKyAgICAgKiBAcGFyYW0gZGF5T2ZXZWVrIGVpdGhlciBTVU5EQVksIE1PTkRBWSwgVFVFU0RBWSwgV0VETkVTREFZLAorICAgICAqIFRIVVJTREFZLCBGUklEQVksIG9yIFNBVFVSREFZCisgICAgICogQHJldHVybiBlaXRoZXIgV0VFS0RBWSwgV0VFS0VORCwgV0VFS0VORF9PTlNFVCwgb3IKKyAgICAgKiBXRUVLRU5EX0NFQVNFCisgICAgICogQGV4Y2VwdGlvbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgZGF5T2ZXZWVrIGlzIG5vdAorICAgICAqIGJldHdlZW4gU1VOREFZIGFuZCBTQVRVUkRBWSwgaW5jbHVzaXZlCisgICAgICogQHNlZSAjV0VFS0RBWQorICAgICAqIEBzZWUgI1dFRUtFTkQKKyAgICAgKiBAc2VlICNXRUVLRU5EX09OU0VUCisgICAgICogQHNlZSAjV0VFS0VORF9DRUFTRQorICAgICAqIEBzZWUgI2dldFdlZWtlbmRUcmFuc2l0aW9uCisgICAgICogQHNlZSAjaXNXZWVrZW5kKERhdGUpCisgICAgICogQHNlZSAjaXNXZWVrZW5kKCkKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldERheU9mV2Vla1R5cGUoaW50IGRheU9mV2VlaykgeworICAgICAgICBpZiAoZGF5T2ZXZWVrIDwgU1VOREFZIHx8IGRheU9mV2VlayA+IFNBVFVSREFZKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIGRheSBvZiB3ZWVrIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHdlZWtlbmRPbnNldCA8IHdlZWtlbmRDZWFzZSkgeworICAgICAgICAgICAgaWYgKGRheU9mV2VlayA8IHdlZWtlbmRPbnNldCB8fCBkYXlPZldlZWsgPiB3ZWVrZW5kQ2Vhc2UpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gV0VFS0RBWTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChkYXlPZldlZWsgPiB3ZWVrZW5kQ2Vhc2UgJiYgZGF5T2ZXZWVrIDwgd2Vla2VuZE9uc2V0KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFdFRUtEQVk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gCisgICAgICAgIGlmIChkYXlPZldlZWsgPT0gd2Vla2VuZE9uc2V0KSB7CisgICAgICAgICAgICByZXR1cm4gKHdlZWtlbmRPbnNldE1pbGxpcyA9PSAwKSA/IFdFRUtFTkQgOiBXRUVLRU5EX09OU0VUOworICAgICAgICB9CisgICAgICAgIGlmIChkYXlPZldlZWsgPT0gd2Vla2VuZENlYXNlKSB7CisgICAgICAgICAgICByZXR1cm4gKHdlZWtlbmRDZWFzZU1pbGxpcyA9PSAwKSA/IFdFRUtEQVkgOiBXRUVLRU5EX0NFQVNFOworICAgICAgICB9CisgICAgICAgIHJldHVybiBXRUVLRU5EOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgdGltZSBkdXJpbmcgdGhlIGRheSBhdCB3aGljaCB0aGUgd2Vla2VuZCBiZWdpbnMgb3IgZW5kIGluCisgICAgICogdGhpcyBjYWxlbmRhciBzeXN0ZW0uICBJZiBnZXREYXlPZldlZWtUeXBlKGRheU9mV2VlaykgPT0KKyAgICAgKiBXRUVLRU5EX09OU0VUIHJldHVybiB0aGUgdGltZSBhdCB3aGljaCB0aGUgd2Vla2VuZCBiZWdpbnMuICBJZgorICAgICAqIGdldERheU9mV2Vla1R5cGUoZGF5T2ZXZWVrKSA9PSBXRUVLRU5EX0NFQVNFIHJldHVybiB0aGUgdGltZSBhdAorICAgICAqIHdoaWNoIHRoZSB3ZWVrZW5kIGVuZHMuICBJZiBnZXREYXlPZldlZWtUeXBlKGRheU9mV2VlaykgaGFzIHNvbWUKKyAgICAgKiBvdGhlciB2YWx1ZSwgdGhlbiB0aHJvdyBhbiBleGNlcHRpb24uCisgICAgICogQHBhcmFtIGRheU9mV2VlayBlaXRoZXIgU1VOREFZLCBNT05EQVksIFRVRVNEQVksIFdFRE5FU0RBWSwKKyAgICAgKiBUSFVSU0RBWSwgRlJJREFZLCBvciBTQVRVUkRBWQorICAgICAqIEByZXR1cm4gdGhlIG1pbGxpc2Vjb25kcyBhZnRlciBtaWRuaWdodCBhdCB3aGljaCB0aGUKKyAgICAgKiB3ZWVrZW5kIGJlZ2lucyBvciBlbmRzCisgICAgICogQGV4Y2VwdGlvbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgZGF5T2ZXZWVrIGlzIG5vdAorICAgICAqIFdFRUtFTkRfT05TRVQgb3IgV0VFS0VORF9DRUFTRQorICAgICAqIEBzZWUgI2dldERheU9mV2Vla1R5cGUKKyAgICAgKiBAc2VlICNpc1dlZWtlbmQoRGF0ZSkKKyAgICAgKiBAc2VlICNpc1dlZWtlbmQoKQorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0V2Vla2VuZFRyYW5zaXRpb24oaW50IGRheU9mV2VlaykgeworICAgICAgICBpZiAoZGF5T2ZXZWVrID09IHdlZWtlbmRPbnNldCkgeworICAgICAgICAgICAgcmV0dXJuIHdlZWtlbmRPbnNldE1pbGxpczsKKyAgICAgICAgfSBlbHNlIGlmIChkYXlPZldlZWsgPT0gd2Vla2VuZENlYXNlKSB7CisgICAgICAgICAgICByZXR1cm4gd2Vla2VuZENlYXNlTWlsbGlzOworICAgICAgICB9CisgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIk5vdCB3ZWVrZW5kIHRyYW5zaXRpb24gZGF5Iik7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIGRhdGUgYW5kIHRpbWUgaXMgaW4gdGhlIHdlZWtlbmQgaW4KKyAgICAgKiB0aGlzIGNhbGVuZGFyIHN5c3RlbS4gIEVxdWl2YWxlbnQgdG8gY2FsbGluZyBzZXRUaW1lKCkgZm9sbG93ZWQKKyAgICAgKiBieSBpc1dlZWtlbmQoKS4gIE5vdGU6IFRoaXMgbWV0aG9kIGNoYW5nZXMgdGhlIHRpbWUgdGhpcworICAgICAqIGNhbGVuZGFyIGlzIHNldCB0by4KKyAgICAgKiBAcGFyYW0gZGF0ZSB0aGUgZGF0ZSBhbmQgdGltZQorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgZ2l2ZW4gZGF0ZSBhbmQgdGltZSBpcyBwYXJ0IG9mIHRoZQorICAgICAqIHdlZWtlbmQKKyAgICAgKiBAc2VlICNnZXREYXlPZldlZWtUeXBlCisgICAgICogQHNlZSAjZ2V0V2Vla2VuZFRyYW5zaXRpb24KKyAgICAgKiBAc2VlICNpc1dlZWtlbmQoKQorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGlzV2Vla2VuZChEYXRlIGRhdGUpIHsKKyAgICAgICAgc2V0VGltZShkYXRlKTsKKyAgICAgICAgcmV0dXJuIGlzV2Vla2VuZCgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0cnVlIGlmIHRoaXMgQ2FsZW5kYXIncyBjdXJyZW50IGRhdGUgYW5kIHRpbWUgaXMgaW4gdGhlCisgICAgICogd2Vla2VuZCBpbiB0aGlzIGNhbGVuZGFyIHN5c3RlbS4KKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIGRhdGUgYW5kIHRpbWUgaXMgcGFydCBvZiB0aGUKKyAgICAgKiB3ZWVrZW5kCisgICAgICogQHNlZSAjZ2V0RGF5T2ZXZWVrVHlwZQorICAgICAqIEBzZWUgI2dldFdlZWtlbmRUcmFuc2l0aW9uCisgICAgICogQHNlZSAjaXNXZWVrZW5kKERhdGUpCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNXZWVrZW5kKCkgeworICAgICAgICBpbnQgZG93ID0gIGdldChEQVlfT0ZfV0VFSyk7CisgICAgICAgIGludCBkb3d0ID0gZ2V0RGF5T2ZXZWVrVHlwZShkb3cpOworICAgICAgICBzd2l0Y2ggKGRvd3QpIHsKKyAgICAgICAgY2FzZSBXRUVLREFZOgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBjYXNlIFdFRUtFTkQ6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDogLy8gVGhhdCBpcywgV0VFS0VORF9PTlNFVCBvciBXRUVLRU5EX0NFQVNFCisgICAgICAgICAgICAvLyBVc2UgaW50ZXJuYWxHZXQoKSBiZWNhdXNlIHRoZSBhYm92ZSBjYWxsIHRvIGdldCgpIHBvcHVsYXRlZAorICAgICAgICAgICAgLy8gYWxsIGZpZWxkcy4KKyAgICAgICAgICAgIC8vIFtOb3RlOiBUaGVyZSBzaG91bGQgYmUgYSBiZXR0ZXIgd2F5IHRvIGdldCBtaWxsaXMgaW4gZGF5LgorICAgICAgICAgICAgLy8gIEZvciBJQ1U0Siwgc3VibWl0IHJlcXVlc3QgZm9yIGEgTUlMTElTX0lOX0RBWSBmaWVsZAorICAgICAgICAgICAgLy8gIGFuZCBhIERBWV9OVU1CRVIgZmllbGQgKGNvdWxkIGJlIEp1bGlhbiBkYXkgIykuIC0gYWxpdV0KKyAgICAgICAgICAgIGludCBtaWxsaXNJbkRheSA9IGludGVybmFsR2V0KE1JTExJU0VDT05EKSArIDEwMDAgKiAoaW50ZXJuYWxHZXQoU0VDT05EKSArCisgICAgICAgICAgICAgICAgNjAgKiAoaW50ZXJuYWxHZXQoTUlOVVRFKSArIDYwICogaW50ZXJuYWxHZXQoSE9VUl9PRl9EQVkpKSk7CisgICAgICAgICAgICBpbnQgdHJhbnNpdGlvbiA9IGdldFdlZWtlbmRUcmFuc2l0aW9uKGRvdyk7CisgICAgICAgICAgICByZXR1cm4gKGRvd3QgPT0gV0VFS0VORF9PTlNFVCkKKyAgICAgICAgICAgICAgICA/IChtaWxsaXNJbkRheSA+PSB0cmFuc2l0aW9uKQorICAgICAgICAgICAgICAgIDogKG1pbGxpc0luRGF5IDwgIHRyYW5zaXRpb24pOworICAgICAgICB9CisgICAgICAgIC8vIChXZSBjYW4gbmV2ZXIgcmVhY2ggdGhpcyBwb2ludC4pCisgICAgfQorCisgICAgLyoqCisgICAgICogUmVhZCB0aGUgbG9jYWxlIHdlZWtlbmQgZGF0YSBmb3IgdGhlIGdpdmVuIGxvY2FsZS4KKyAgICAgKgorICAgICAqIFRoaXMgaXMgdGhlIGluaXRpYWwgcGxhY2VtZW50IGFuZCBmb3JtYXQgb2YgdGhpcyBkYXRhIC0tIGl0IG1heSB2ZXJ5CisgICAgICogd2VsbCBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gIFNlZSB0aGUgbG9jYWxlIGZpbGVzIHRoZW1zZWx2ZXMgZm9yCisgICAgICogZGV0YWlscy4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgc2V0V2Vla2VuZERhdGEoTG9jYWxlIGxvYykgeworICAgICAgICBSZXNvdXJjZUJ1bmRsZSByZXNvdXJjZSA9CisgICAgICAgICAgICBJQ1VMb2NhbGVEYXRhLmdldFJlc291cmNlQnVuZGxlKCJDYWxlbmRhckRhdGEiLCBsb2MpOworICAgICAgICBTdHJpbmdbXSBkYXRhID0gcmVzb3VyY2UuZ2V0U3RyaW5nQXJyYXkoIldlZWtlbmQiKTsKKyAgICAgICAgd2Vla2VuZE9uc2V0ICAgICAgID0gSW50ZWdlci5wYXJzZUludChkYXRhWzBdKTsKKyAgICAgICAgd2Vla2VuZE9uc2V0TWlsbGlzID0gSW50ZWdlci5wYXJzZUludChkYXRhWzFdKTsKKyAgICAgICAgd2Vla2VuZENlYXNlICAgICAgID0gSW50ZWdlci5wYXJzZUludChkYXRhWzJdKTsKKyAgICAgICAgd2Vla2VuZENlYXNlTWlsbGlzID0gSW50ZWdlci5wYXJzZUludChkYXRhWzNdKTsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBFbmQgb2Ygd2Vla2VuZCBzdXBwb3J0CisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZXMgQ2xvbmVhYmxlCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIE9iamVjdCBjbG9uZSgpCisgICAgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgQ2FsZW5kYXIgb3RoZXIgPSAoQ2FsZW5kYXIpIHN1cGVyLmNsb25lKCk7CisKKyAgICAgICAgICAgIG90aGVyLmZpZWxkcyA9IG5ldyBpbnRbZmllbGRzLmxlbmd0aF07CisgICAgICAgICAgICBvdGhlci5zdGFtcCA9IG5ldyBpbnRbZmllbGRzLmxlbmd0aF07CisgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KHRoaXMuZmllbGRzLCAwLCBvdGhlci5maWVsZHMsIDAsIGZpZWxkcy5sZW5ndGgpOworICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weSh0aGlzLnN0YW1wLCAwLCBvdGhlci5zdGFtcCwgMCwgZmllbGRzLmxlbmd0aCk7CisKKyAgICAgICAgICAgIG90aGVyLnpvbmUgPSAoVGltZVpvbmUpIHpvbmUuY2xvbmUoKTsKKyAgICAgICAgICAgIHJldHVybiBvdGhlcjsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgLy8gdGhpcyBzaG91bGRuJ3QgaGFwcGVuLCBzaW5jZSB3ZSBhcmUgQ2xvbmVhYmxlCisgICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcigpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgY2FsZW5kYXIuIFRoaXMgbWV0aG9kIAorICAgICAqIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgb25seSBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLCBhbmQgdGhlIAorICAgICAqIGZvcm1hdCBvZiB0aGUgcmV0dXJuZWQgc3RyaW5nIG1heSB2YXJ5IGJldHdlZW4gaW1wbGVtZW50YXRpb25zLiAKKyAgICAgKiBUaGUgcmV0dXJuZWQgc3RyaW5nIG1heSBiZSBlbXB0eSBidXQgbWF5IG5vdCBiZSA8Y29kZT5udWxsPC9jb2RlPi4KKyAgICAgKiAKKyAgICAgKiBAcmV0dXJuICBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIGNhbGVuZGFyLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgIFN0cmluZ0J1ZmZlciBidWZmZXIgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQoZ2V0Q2xhc3MoKS5nZXROYW1lKCkpOworICAgICAgICBidWZmZXIuYXBwZW5kKCJbdGltZT0iKTsKKyAgICAgICAgYnVmZmVyLmFwcGVuZChpc1RpbWVTZXQgPyBTdHJpbmcudmFsdWVPZih0aW1lKSA6ICI/Iik7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQoIixhcmVGaWVsZHNTZXQ9Iik7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQoYXJlRmllbGRzU2V0KTsKKyAgICAgICAgYnVmZmVyLmFwcGVuZCgiLGFyZUFsbEZpZWxkc1NldD0iKTsKKyAgICAgICAgYnVmZmVyLmFwcGVuZChhcmVBbGxGaWVsZHNTZXQpOworICAgICAgICBidWZmZXIuYXBwZW5kKCIsbGVuaWVudD0iKTsKKyAgICAgICAgYnVmZmVyLmFwcGVuZChsZW5pZW50KTsKKyAgICAgICAgYnVmZmVyLmFwcGVuZCgiLHpvbmU9Iik7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQoem9uZSk7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQoIixmaXJzdERheU9mV2Vlaz0iKTsKKyAgICAgICAgYnVmZmVyLmFwcGVuZChmaXJzdERheU9mV2Vlayk7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQoIixtaW5pbWFsRGF5c0luRmlyc3RXZWVrPSIpOworICAgICAgICBidWZmZXIuYXBwZW5kKG1pbmltYWxEYXlzSW5GaXJzdFdlZWspOworICAgICAgICBmb3IgKGludCBpPTA7IGk8ZmllbGRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBidWZmZXIuYXBwZW5kKCcsJykuYXBwZW5kKEZJRUxEX05BTUVbaV0pLmFwcGVuZCgnPScpOworICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChpc1NldChpKSA/IFN0cmluZy52YWx1ZU9mKGZpZWxkc1tpXSkgOiAiPyIpOworICAgICAgICB9CisgICAgICAgIGJ1ZmZlci5hcHBlbmQoJ10nKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci50b1N0cmluZygpOworICAgIH0KKworICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09cHJpdmF0ZXM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAvKioKKyAgICAgKiBCb3RoIGZpcnN0RGF5T2ZXZWVrIGFuZCBtaW5pbWFsRGF5c0luRmlyc3RXZWVrIGFyZSBsb2NhbGUtZGVwZW5kZW50LgorICAgICAqIFRoZXkgYXJlIHVzZWQgdG8gZmlndXJlIG91dCB0aGUgd2VlayBjb3VudCBmb3IgYSBzcGVjaWZpYyBkYXRlIGZvcgorICAgICAqIGEgZ2l2ZW4gbG9jYWxlLiBUaGVzZSBtdXN0IGJlIHNldCB3aGVuIGEgQ2FsZW5kYXIgaXMgY29uc3RydWN0ZWQuCisgICAgICogQHBhcmFtIGRlc2lyZWRMb2NhbGUgdGhlIGdpdmVuIGxvY2FsZS4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgc2V0V2Vla0NvdW50RGF0YShMb2NhbGUgZGVzaXJlZExvY2FsZSkKKyAgICB7CisgICAgLyogdHJ5IHRvIGdldCB0aGUgTG9jYWxlIGRhdGEgZnJvbSB0aGUgY2FjaGUgKi8KKyAgICBpbnRbXSBkYXRhID0gKGludFtdKSBjYWNoZWRMb2NhbGVEYXRhLmdldChkZXNpcmVkTG9jYWxlKTsKKyAgICBpZiAoZGF0YSA9PSBudWxsKSB7ICAvKiBjYWNoZSBtaXNzICovCisgICAgICAgIFJlc291cmNlQnVuZGxlIHJlc291cmNlID0gSUNVTG9jYWxlRGF0YS5nZXRMb2NhbGVFbGVtZW50cyhkZXNpcmVkTG9jYWxlKTsKKyAgICAgICAgU3RyaW5nW10gZGF0ZVRpbWVQYXR0ZXJucyA9CisgICAgICAgIHJlc291cmNlLmdldFN0cmluZ0FycmF5KCJEYXRlVGltZUVsZW1lbnRzIik7CisgICAgICAgIGRhdGEgPSBuZXcgaW50WzJdOworICAgICAgICBkYXRhWzBdID0gSW50ZWdlci5wYXJzZUludChkYXRlVGltZVBhdHRlcm5zWzBdKTsKKyAgICAgICAgZGF0YVsxXSA9IEludGVnZXIucGFyc2VJbnQoZGF0ZVRpbWVQYXR0ZXJuc1sxXSk7CisgICAgICAgIC8qIGNhY2hlIHVwZGF0ZSAqLworICAgICAgICBjYWNoZWRMb2NhbGVEYXRhLnB1dChkZXNpcmVkTG9jYWxlLCBkYXRhKTsKKyAgICB9CisgICAgZmlyc3REYXlPZldlZWsgPSBkYXRhWzBdOworICAgIG1pbmltYWxEYXlzSW5GaXJzdFdlZWsgPSBkYXRhWzFdOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlY29tcHV0ZSB0aGUgdGltZSBhbmQgdXBkYXRlIHRoZSBzdGF0dXMgZmllbGRzIGlzVGltZVNldAorICAgICAqIGFuZCBhcmVGaWVsZHNTZXQuICBDYWxsZXJzIHNob3VsZCBjaGVjayBpc1RpbWVTZXQgYW5kIG9ubHkKKyAgICAgKiBjYWxsIHRoaXMgbWV0aG9kIGlmIGlzVGltZVNldCBpcyBmYWxzZS4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgdXBkYXRlVGltZSgpIHsKKyAgICAgICAgY29tcHV0ZVRpbWUoKTsKKyAgICAgICAgLy8gSWYgd2UgYXJlIGxlbmllbnQsIHdlIG5lZWQgdG8gcmVjb21wdXRlIHRoZSBmaWVsZHMgdG8gbm9ybWFsaXplCisgICAgICAgIC8vIHRoZSB2YWx1ZXMuICBBbHNvLCBpZiB3ZSBoYXZlbid0IHNldCBhbGwgdGhlIGZpZWxkcyB5ZXQgKGkuZS4sCisgICAgICAgIC8vIGluIGEgbmV3bHktY3JlYXRlZCBvYmplY3QpLCB3ZSBuZWVkIHRvIGZpbGwgaW4gdGhlIGZpZWxkcy4gW0xJVV0KKyAgICAgICAgaWYgKGlzTGVuaWVudCgpIHx8ICFhcmVBbGxGaWVsZHNTZXQpIGFyZUZpZWxkc1NldCA9IGZhbHNlOworICAgICAgICBpc1RpbWVTZXQgPSB0cnVlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNhdmUgdGhlIHN0YXRlIG9mIHRoaXMgb2JqZWN0IHRvIGEgc3RyZWFtIChpLmUuLCBzZXJpYWxpemUgaXQpLgorICAgICAqCisgICAgICogSWRlYWxseSwgPGNvZGU+Q2FsZW5kYXI8L2NvZGU+IHdvdWxkIG9ubHkgd3JpdGUgb3V0IGl0cyBzdGF0ZSBkYXRhIGFuZAorICAgICAqIHRoZSBjdXJyZW50IHRpbWUsIGFuZCBub3Qgd3JpdGUgYW55IGZpZWxkIGRhdGEgb3V0LCBzdWNoIGFzCisgICAgICogPGNvZGU+ZmllbGRzW108L2NvZGU+LCA8Y29kZT5pc1RpbWVTZXQ8L2NvZGU+LCA8Y29kZT5hcmVGaWVsZHNTZXQ8L2NvZGU+LAorICAgICAqIGFuZCA8Y29kZT5pc1NldFtdPC9jb2RlPi4gIDxjb2RlPm5leHRTdGFtcDwvY29kZT4gYWxzbyBzaG91bGQgbm90IGJlIHBhcnQKKyAgICAgKiBvZiB0aGUgcGVyc2lzdGVudCBzdGF0ZS4gVW5mb3J0dW5hdGVseSwgdGhpcyBkaWRuJ3QgaGFwcGVuIGJlZm9yZSBKREsgMS4xCisgICAgICogc2hpcHBlZC4gVG8gYmUgY29tcGF0aWJsZSB3aXRoIEpESyAxLjEsIHdlIHdpbGwgYWx3YXlzIGhhdmUgdG8gd3JpdGUgb3V0CisgICAgICogdGhlIGZpZWxkIHZhbHVlcyBhbmQgc3RhdGUgZmxhZ3MuICBIb3dldmVyLCA8Y29kZT5uZXh0U3RhbXA8L2NvZGU+IGNhbiBiZQorICAgICAqIHJlbW92ZWQgZnJvbSB0aGUgc2VyaWFsaXphdGlvbiBzdHJlYW07IHRoaXMgd2lsbCBwcm9iYWJseSBoYXBwZW4gaW4gdGhlCisgICAgICogbmVhciBmdXR1cmUuCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIHdyaXRlT2JqZWN0KE9iamVjdE91dHB1dFN0cmVhbSBzdHJlYW0pCisgICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICB7CisgICAgICAgIC8vIFRyeSB0byBjb21wdXRlIHRoZSB0aW1lIGNvcnJlY3RseSwgZm9yIHRoZSBmdXR1cmUgKHN0cmVhbQorICAgICAgICAvLyB2ZXJzaW9uIDIpIGluIHdoaWNoIHdlIGRvbid0IHdyaXRlIG91dCBmaWVsZHNbXSBvciBpc1NldFtdLgorICAgICAgICBpZiAoIWlzVGltZVNldCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICB1cGRhdGVUaW1lKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHt9CisgICAgICAgIH0KKworICAgICAgICAvLyBXcml0ZSBvdXQgdGhlIDEuMSBGQ1Mgb2JqZWN0LgorICAgICAgICBzdHJlYW0uZGVmYXVsdFdyaXRlT2JqZWN0KCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVjb25zdGl0dXRlIHRoaXMgb2JqZWN0IGZyb20gYSBzdHJlYW0gKGkuZS4sIGRlc2VyaWFsaXplIGl0KS4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgcmVhZE9iamVjdChPYmplY3RJbnB1dFN0cmVhbSBzdHJlYW0pCisgICAgICAgIHRocm93cyBJT0V4Y2VwdGlvbiwgQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiB7CisgICAgICAgIAorICAgICAgICBzdHJlYW0uZGVmYXVsdFJlYWRPYmplY3QoKTsKKworICAgICAgICBpbml0SW50ZXJuYWwoKTsKKworICAgICAgICBpc1RpbWVTZXQgPSB0cnVlOworICAgICAgICBhcmVGaWVsZHNTZXQgPSBhcmVBbGxGaWVsZHNTZXQgPSBmYWxzZTsKKyAgICAgICAgbmV4dFN0YW1wID0gTUlOSU1VTV9VU0VSX1NUQU1QOworICAgIH0KKworCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gVGltZSAtPiBGaWVsZHMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIENvbnZlcnRzIHRoZSBjdXJyZW50IG1pbGxpc2Vjb25kIHRpbWUgdmFsdWUgPGNvZGU+dGltZTwvY29kZT4gdG8KKyAgICAgKiBmaWVsZCB2YWx1ZXMgaW4gPGNvZGU+ZmllbGRzW108L2NvZGU+LiAgVGhpcyBzeW5jaHJvbml6ZXMgdGhlIHRpbWUKKyAgICAgKiBmaWVsZCB2YWx1ZXMgd2l0aCBhIG5ldyB0aW1lIHRoYXQgaXMgc2V0IGZvciB0aGUgY2FsZW5kYXIuICBUaGUgdGltZQorICAgICAqIGlzIDxlbT5ub3Q8L2VtPiByZWNvbXB1dGVkIGZpcnN0OyB0byByZWNvbXB1dGUgdGhlIHRpbWUsIHRoZW4gdGhlCisgICAgICogZmllbGRzLCBjYWxsIHRoZSA8Y29kZT5jb21wbGV0ZTwvY29kZT4gbWV0aG9kLgorICAgICAqIEBzZWUgI2NvbXBsZXRlCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHJvdGVjdGVkIHZvaWQgY29tcHV0ZUZpZWxkcygpIHsKKyAgICAgICAgaW50IHJhd09mZnNldCA9IGdldFRpbWVab25lKCkuZ2V0UmF3T2Zmc2V0KCk7CisgICAgICAgIGxvbmcgbG9jYWxNaWxsaXMgPSB0aW1lICsgcmF3T2Zmc2V0OworCisgICAgICAgIC8vIE1hcmsgZmllbGRzIGFzIHNldC4gIERvIHRoaXMgYmVmb3JlIGNhbGxpbmcgaGFuZGxlQ29tcHV0ZUZpZWxkcygpLgorICAgICAgICBpbnQgbWFzayA9IGludGVybmFsU2V0TWFzazsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPGZpZWxkcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgaWYgKChtYXNrICYgMSkgPT0gMCkgeworICAgICAgICAgICAgICAgIHN0YW1wW2ldID0gSU5URVJOQUxMWV9TRVQ7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHN0YW1wW2ldID0gVU5TRVQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtYXNrID4+PSAxOworICAgICAgICB9CisKKyAgICAgICAgLy8gV2UgdXNlZCB0byBjaGVjayBmb3IgYW5kIGNvcnJlY3QgZXh0cmVtZSBtaWxsaXMgdmFsdWVzIChuZWFyCisgICAgICAgIC8vIExvbmcuTUlOX1ZBTFVFIG9yIExvbmcuTUFYX1ZBTFVFKSBoZXJlLiAgU3VjaCB2YWx1ZXMgd291bGQgY2F1c2UKKyAgICAgICAgLy8gb3ZlcmZsb3dzIGZyb20gcG9zaXRpdmUgdG8gbmVnYXRpdmUgKG9yIHZpY2UgdmVyc2EpIGFuZCBoYWQgdG8KKyAgICAgICAgLy8gYmUgbWFudWFsbHkgdHdlYWtlZC4gIFdlIG5vIGxvbmdlciBuZWVkIHRvIGRvIHRoaXMgYmVjYXVzZSB3ZQorICAgICAgICAvLyBoYXZlIGxpbWl0ZWQgdGhlIHJhbmdlIG9mIHN1cHBvcnRlZCBkYXRlcyB0byB0aG9zZSB0aGF0IGhhdmUgYQorICAgICAgICAvLyBKdWxpYW4gZGF5IHRoYXQgZml0cyBpbnRvIGFuIGludC4gIFRoaXMgYWxsb3dzIHVzIHRvIGltcGxlbWVudCBhCisgICAgICAgIC8vIEpVTElBTl9EQVkgZmllbGQgYW5kIGFsc28gcmVtb3ZlcyBzb21lIGluZWxlZ2FudCBjb2RlLiAtIExpdQorICAgICAgICAvLyAxMS82LzAwCisKKyAgICAgICAgZmllbGRzW0pVTElBTl9EQVldID0gKGludCkgZmxvb3JEaXZpZGUobG9jYWxNaWxsaXMsIE9ORV9EQVkpICsKKyAgICAgICAgICAgIEVQT0NIX0pVTElBTl9EQVk7CisKKyAgICAgICAgLy8gSW4gc29tZSBjYXNlcyB3ZSB3aWxsIGhhdmUgdG8gY2FsbCB0aGlzIG1ldGhvZCBhZ2FpbiBiZWxvdyB0bworICAgICAgICAvLyBhZGp1c3QgZm9yIERTVCBwdXNoaW5nIHVzIGludG8gdGhlIG5leHQgSnVsaWFuIGRheS4KKyAgICAgICAgY29tcHV0ZUdyZWdvcmlhbkFuZERPV0ZpZWxkcyhmaWVsZHNbSlVMSUFOX0RBWV0pOworCisgICAgICAgIGxvbmcgZGF5cyA9IChsb25nKSAobG9jYWxNaWxsaXMgLyBPTkVfREFZKTsKKyAgICAgICAgaW50IG1pbGxpc0luRGF5ID0gKGludCkgKGxvY2FsTWlsbGlzIC0gKGRheXMgKiBPTkVfREFZKSk7CisgICAgICAgIGlmIChtaWxsaXNJbkRheSA8IDApIG1pbGxpc0luRGF5ICs9IE9ORV9EQVk7CisKKyAgICAgICAgLy8gQ2FsbCBnZXRPZmZzZXQoKSB0byBnZXQgdGhlIFRpbWVab25lIG9mZnNldC4gIFRoZSBtaWxsaXNJbkRheSB2YWx1ZQorICAgICAgICAvLyBtdXN0IGJlIF9zdGFuZGFyZF8gbG9jYWwgem9uZSBtaWxsaXMuCisgICAgICAgIGludCBkc3RPZmZzZXQgPSBnZXRUaW1lWm9uZSgpLmdldE9mZnNldCgKKyAgICAgICAgICAgICAgICBncmVnb3JpYW5ZZWFyLCBncmVnb3JpYW5Nb250aCwKKyAgICAgICAgICAgICAgICBncmVnb3JpYW5EYXlPZk1vbnRoLAorICAgICAgICAgICAgICAgIGZpZWxkc1tEQVlfT0ZfV0VFS10sCisgICAgICAgICAgICAgICAgbWlsbGlzSW5EYXksCisgICAgICAgICAgICAgICAgZ3JlZ29yaWFuTW9udGhMZW5ndGgoZ3JlZ29yaWFuWWVhciwgZ3JlZ29yaWFuTW9udGgpLAorICAgICAgICAgICAgICAgIGdyZWdvcmlhblByZXZpb3VzTW9udGhMZW5ndGgoZ3JlZ29yaWFuWWVhciwgZ3JlZ29yaWFuTW9udGgpKQorICAgICAgICAgICAgLSByYXdPZmZzZXQ7CisKKyAgICAgICAgLy8gQWRqdXN0IG91ciBtaWxsaXNJbkRheSBmb3IgRFNULiAgZHN0T2Zmc2V0IHdpbGwgYmUgemVybyBpZiBEU1QKKyAgICAgICAgLy8gaXMgbm90IGluIGVmZmVjdCBhdCB0aGlzIHRpbWUgb2YgeWVhciwgb3IgaWYgb3VyIHpvbmUgZG9lcyBub3QKKyAgICAgICAgLy8gdXNlIERTVC4KKyAgICAgICAgbWlsbGlzSW5EYXkgKz0gZHN0T2Zmc2V0OworCisgICAgICAgIC8vIElmIERTVCBoYXMgcHVzaGVkIHVzIGludG8gdGhlIG5leHQgZGF5LCB3ZSBtdXN0IGNhbGwKKyAgICAgICAgLy8gY29tcHV0ZUdyZWdvcmlhbkFuZERPV0ZpZWxkcygpIGFnYWluLiAgVGhpcyBoYXBwZW5zIGluIERTVCBiZXR3ZWVuCisgICAgICAgIC8vIDEyOjAwIGFtIGFuZCAxOjAwIGFtIGV2ZXJ5IGRheS4gIFRoZSBmaXJzdCBjYWxsIHRvCisgICAgICAgIC8vIGNvbXB1dGVHcmVnb3JpYW5BbmRET1dGaWVsZHMoKSB3aWxsIGdpdmUgdGhlIHdyb25nIGRheSwgc2luY2UgdGhlCisgICAgICAgIC8vIFN0YW5kYXJkIHRpbWUgaXMgaW4gdGhlIHByZXZpb3VzIGRheS4KKyAgICAgICAgaWYgKG1pbGxpc0luRGF5ID49IE9ORV9EQVkpIHsKKyAgICAgICAgICAgIG1pbGxpc0luRGF5IC09IE9ORV9EQVk7IC8vIEFTU1VNRSBkc3RPZmZzZXQgPCAyNDowMAorCisgICAgICAgICAgICAvLyBXZSBkb24ndCB3b3JyeSBhYm91dCBvdmVyZmxvdyBvZiBKVUxJQU5fREFZIGJlY2F1c2UgdGhlCisgICAgICAgICAgICAvLyBhbGxvd2FibGUgcmFuZ2Ugb2YgSlVMSUFOX0RBWSBoYXMgc2xvcCBhdCB0aGUgZW5kcyAodGhhdCBpcywKKyAgICAgICAgICAgIC8vIHRoZSBtYXggaXMgbGVzcyB0aGF0IDB4N0ZGRkZGRkYgYW5kIHRoZSBtaW4gaXMgZ3JlYXRlciB0aGFuCisgICAgICAgICAgICAvLyAtMHg4MDAwMDAwMCkuCisgICAgICAgICAgICBjb21wdXRlR3JlZ29yaWFuQW5kRE9XRmllbGRzKCsrZmllbGRzW0pVTElBTl9EQVldKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIENhbGwgZnJhbWV3b3JrIG1ldGhvZCB0byBoYXZlIHN1YmNsYXNzIGNvbXB1dGUgaXRzIGZpZWxkcy4KKyAgICAgICAgLy8gVGhlc2UgbXVzdCBpbmNsdWRlLCBhdCBhIG1pbmltdW0sIE1PTlRILCBEQVlfT0ZfTU9OVEgsCisgICAgICAgIC8vIEVYVEVOREVEX1lFQVIsIFlFQVIsIERBWV9PRl9ZRUFSLiAgVGhpcyBtZXRob2Qgd2lsbCBjYWxsIGludGVybmFsU2V0KCksCisgICAgICAgIC8vIHdoaWNoIHdpbGwgdXBkYXRlIHN0YW1wW10uCisgICAgICAgIGhhbmRsZUNvbXB1dGVGaWVsZHMoZmllbGRzW0pVTElBTl9EQVldKTsKKworICAgICAgICAvLyBDb21wdXRlIHdlZWstcmVsYXRlZCBmaWVsZHMsIGJhc2VkIG9uIHRoZSBzdWJjbGFzcy1jb21wdXRlZAorICAgICAgICAvLyBmaWVsZHMgY29tcHV0ZWQgYnkgaGFuZGxlQ29tcHV0ZUZpZWxkcygpLgorICAgICAgICBjb21wdXRlV2Vla0ZpZWxkcygpOworCisgICAgICAgIC8vIENvbXB1dGUgdGltZS1yZWxhdGVkIGZpZWxkcy4gIFRoZXNlIGFyZSBpbmRlcGVudCBvZiB0aGUgZGF0ZSBhbmQKKyAgICAgICAgLy8gb2YgdGhlIHN1YmNsYXNzIGFsZ29yaXRobS4gIFRoZXkgZGVwZW5kIG9ubHkgb24gdGhlIGxvY2FsIHpvbmUKKyAgICAgICAgLy8gd2FsbCBtaWxsaXNlY29uZHMgaW4gZGF5LgorICAgICAgICBmaWVsZHNbTUlMTElTRUNPTkRTX0lOX0RBWV0gPSBtaWxsaXNJbkRheTsKKyAgICAgICAgZmllbGRzW01JTExJU0VDT05EXSA9IG1pbGxpc0luRGF5ICUgMTAwMDsKKyAgICAgICAgbWlsbGlzSW5EYXkgLz0gMTAwMDsKKyAgICAgICAgZmllbGRzW1NFQ09ORF0gPSBtaWxsaXNJbkRheSAlIDYwOworICAgICAgICBtaWxsaXNJbkRheSAvPSA2MDsKKyAgICAgICAgZmllbGRzW01JTlVURV0gPSBtaWxsaXNJbkRheSAlIDYwOworICAgICAgICBtaWxsaXNJbkRheSAvPSA2MDsKKyAgICAgICAgZmllbGRzW0hPVVJfT0ZfREFZXSA9IG1pbGxpc0luRGF5OworICAgICAgICBmaWVsZHNbQU1fUE1dID0gbWlsbGlzSW5EYXkgLyAxMjsgLy8gQXNzdW1lIEFNID09IDAKKyAgICAgICAgZmllbGRzW0hPVVJdID0gbWlsbGlzSW5EYXkgJSAxMjsKKyAgICAgICAgZmllbGRzW1pPTkVfT0ZGU0VUXSA9IHJhd09mZnNldDsKKyAgICAgICAgZmllbGRzW0RTVF9PRkZTRVRdID0gZHN0T2Zmc2V0OworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbXB1dGUgdGhlIEdyZWdvcmlhbiBjYWxlbmRhciB5ZWFyLCBtb250aCwgYW5kIGRheSBvZiBtb250aCBmcm9tCisgICAgICogdGhlIGdpdmVuIEp1bGlhbiBkYXkuICBUaGVzZSB2YWx1ZXMgYXJlIG5vdCBzdG9yZWQgaW4gZmllbGRzLCBidXQgaW4KKyAgICAgKiBtZW1iZXIgdmFyaWFibGVzIGdyZWdvcmlhblh4eC4gIEFsc28gY29tcHV0ZSB0aGUgREFZX09GX1dFRUsgYW5kCisgICAgICogRE9XX0xPQ0FMIGZpZWxkcy4KKyAgICAgKi8KKyAgICBwcml2YXRlIGZpbmFsIHZvaWQgY29tcHV0ZUdyZWdvcmlhbkFuZERPV0ZpZWxkcyhpbnQganVsaWFuRGF5KSB7CisgICAgICAgIGNvbXB1dGVHcmVnb3JpYW5GaWVsZHMoanVsaWFuRGF5KTsKKworICAgICAgICAvLyBDb21wdXRlIGRheSBvZiB3ZWVrOiBKRCAwID0gTW9uZGF5CisgICAgICAgIGludCBkb3cgPSBmaWVsZHNbREFZX09GX1dFRUtdID0ganVsaWFuRGF5VG9EYXlPZldlZWsoanVsaWFuRGF5KTsKKworICAgICAgICAvLyBDYWxjdWxhdGUgMS1iYXNlZCBsb2NhbGl6ZWQgZGF5IG9mIHdlZWsKKyAgICAgICAgaW50IGRvd0xvY2FsID0gZG93IC0gZ2V0Rmlyc3REYXlPZldlZWsoKSArIDE7CisgICAgICAgIGlmIChkb3dMb2NhbCA8IDEpIHsKKyAgICAgICAgICAgIGRvd0xvY2FsICs9IDc7CisgICAgICAgIH0KKyAgICAgICAgZmllbGRzW0RPV19MT0NBTF0gPSBkb3dMb2NhbDsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQ29tcHV0ZSB0aGUgR3JlZ29yaWFuIGNhbGVuZGFyIHllYXIsIG1vbnRoLCBhbmQgZGF5IG9mIG1vbnRoIGZyb20gdGhlCisgICAgICogSnVsaWFuIGRheS4gIFRoZXNlIHZhbHVlcyBhcmUgbm90IHN0b3JlZCBpbiBmaWVsZHMsIGJ1dCBpbiBtZW1iZXIKKyAgICAgKiB2YXJpYWJsZXMgZ3JlZ29yaWFuWHh4LiAgVGhleSBhcmUgdXNlZCBmb3IgdGltZSB6b25lIGNvbXB1dGF0aW9ucyBhbmQgYnkKKyAgICAgKiBzdWJjbGFzc2VzIHRoYXQgYXJlIEdyZWdvcmlhbiBkZXJpdmF0aXZlcy4gIFN1YmNsYXNzZXMgbWF5IGNhbGwgdGhpcworICAgICAqIG1ldGhvZCB0byBwZXJmb3JtIGEgR3JlZ29yaWFuIGNhbGVuZGFyIG1pbGxpcy0+ZmllbGRzIGNvbXB1dGF0aW9uLgorICAgICAqIFRvIHBlcmZvcm0gYSBHcmVnb3JpYW4gY2FsZW5kYXIgZmllbGRzLT5taWxsaXMgY29tcHV0YXRpb24sIGNhbGwKKyAgICAgKiBjb21wdXRlR3JlZ29yaWFuTW9udGhTdGFydCgpLgorICAgICAqIEBzZWUgI2NvbXB1dGVHcmVnb3JpYW5Nb250aFN0YXJ0CisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHJvdGVjdGVkIGZpbmFsIHZvaWQgY29tcHV0ZUdyZWdvcmlhbkZpZWxkcyhpbnQganVsaWFuRGF5KSB7CisgICAgICAgIGludCB5ZWFyLCBtb250aCwgZGF5T2ZNb250aCwgZGF5T2ZZZWFyOworCisgICAgICAgIC8vIFRoZSBHcmVnb3JpYW4gZXBvY2ggZGF5IGlzIHplcm8gZm9yIE1vbmRheSBKYW51YXJ5IDEsIHllYXIgMS4KKyAgICAgICAgbG9uZyBncmVnb3JpYW5FcG9jaERheSA9IGp1bGlhbkRheSAtIEpBTl8xXzFfSlVMSUFOX0RBWTsKKworICAgICAgICAvLyBIZXJlIHdlIGNvbnZlcnQgZnJvbSB0aGUgZGF5IG51bWJlciB0byB0aGUgbXVsdGlwbGUgcmFkaXgKKyAgICAgICAgLy8gcmVwcmVzZW50YXRpb24uICBXZSB1c2UgNDAwLXllYXIsIDEwMC15ZWFyLCBhbmQgNC15ZWFyIGN5Y2xlcy4KKyAgICAgICAgLy8gRm9yIGV4YW1wbGUsIHRoZSA0LXllYXIgY3ljbGUgaGFzIDQgeWVhcnMgKyAxIGxlYXAgZGF5OyBnaXZpbmcKKyAgICAgICAgLy8gMTQ2MSA9PSAzNjUqNCArIDEgZGF5cy4KKyAgICAgICAgaW50W10gcmVtID0gbmV3IGludFsxXTsKKyAgICAgICAgaW50IG40MDAgPSBmbG9vckRpdmlkZShncmVnb3JpYW5FcG9jaERheSwgMTQ2MDk3LCByZW0pOyAvLyA0MDAteWVhciBjeWNsZSBsZW5ndGgKKyAgICAgICAgaW50IG4xMDAgPSBmbG9vckRpdmlkZShyZW1bMF0sIDM2NTI0LCByZW0pOyAvLyAxMDAteWVhciBjeWNsZSBsZW5ndGgKKyAgICAgICAgaW50IG40ID0gZmxvb3JEaXZpZGUocmVtWzBdLCAxNDYxLCByZW0pOyAvLyA0LXllYXIgY3ljbGUgbGVuZ3RoCisgICAgICAgIGludCBuMSA9IGZsb29yRGl2aWRlKHJlbVswXSwgMzY1LCByZW0pOworICAgICAgICB5ZWFyID0gNDAwKm40MDAgKyAxMDAqbjEwMCArIDQqbjQgKyBuMTsKKyAgICAgICAgZGF5T2ZZZWFyID0gcmVtWzBdOyAvLyB6ZXJvLWJhc2VkIGRheSBvZiB5ZWFyCisgICAgICAgIGlmIChuMTAwID09IDQgfHwgbjEgPT0gNCkgeworICAgICAgICAgICAgZGF5T2ZZZWFyID0gMzY1OyAvLyBEZWMgMzEgYXQgZW5kIG9mIDQtIG9yIDQwMC15ciBjeWNsZQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgKyt5ZWFyOworICAgICAgICB9CisKKyAgICAgICAgYm9vbGVhbiBpc0xlYXAgPSAoKHllYXImMHgzKSA9PSAwKSAmJiAvLyBlcXVpdi4gdG8gKHllYXIlNCA9PSAwKQorICAgICAgICAgICAgKHllYXIlMTAwICE9IDAgfHwgeWVhciU0MDAgPT0gMCk7CisKKyAgICAgICAgaW50IGNvcnJlY3Rpb24gPSAwOworICAgICAgICBpbnQgbWFyY2gxID0gaXNMZWFwID8gNjAgOiA1OTsgLy8gemVyby1iYXNlZCBET1kgZm9yIE1hcmNoIDEKKyAgICAgICAgaWYgKGRheU9mWWVhciA+PSBtYXJjaDEpIGNvcnJlY3Rpb24gPSBpc0xlYXAgPyAxIDogMjsKKyAgICAgICAgbW9udGggPSAoMTIgKiAoZGF5T2ZZZWFyICsgY29ycmVjdGlvbikgKyA2KSAvIDM2NzsgLy8gemVyby1iYXNlZCBtb250aAorICAgICAgICBkYXlPZk1vbnRoID0gZGF5T2ZZZWFyIC0KKyAgICAgICAgICAgIEdSRUdPUklBTl9NT05USF9DT1VOVFttb250aF1baXNMZWFwPzM6Ml0gKyAxOyAvLyBvbmUtYmFzZWQgRE9NCisKKyAgICAgICAgZ3JlZ29yaWFuWWVhciA9IHllYXI7CisgICAgICAgIGdyZWdvcmlhbk1vbnRoID0gbW9udGg7IC8vIDAtYmFzZWQgYWxyZWFkeQorICAgICAgICBncmVnb3JpYW5EYXlPZk1vbnRoID0gZGF5T2ZNb250aDsgLy8gMS1iYXNlZCBhbHJlYWR5CisgICAgICAgIGdyZWdvcmlhbkRheU9mWWVhciA9IGRheU9mWWVhciArIDE7IC8vIENvbnZlcnQgZnJvbSAwLWJhc2VkIHRvIDEtYmFzZWQKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb21wdXRlIHRoZSBmaWVsZHMgV0VFS19PRl9ZRUFSLCBZRUFSX1dPWSwgV0VFS19PRl9NT05USCwKKyAgICAgKiBEQVlfT0ZfV0VFS19JTl9NT05USCwgYW5kIERPV19MT0NBTCBmcm9tIEVYVEVOREVEX1lFQVIsIFlFQVIsCisgICAgICogREFZX09GX1dFRUssIGFuZCBEQVlfT0ZfWUVBUi4gIFRoZSBsYXR0ZXIgZmllbGRzIGFyZSBjb21wdXRlZCBieSB0aGUKKyAgICAgKiBzdWJjbGFzcyBiYXNlZCBvbiB0aGUgY2FsZW5kYXIgc3lzdGVtLgorICAgICAqCisgICAgICogPHA+VGhlIFlFQVJfV09ZIGZpZWxkIGlzIGNvbXB1dGVkIHNpbXBsaXN0aWNhbGx5LiAgSXQgaXMgZXF1YWwgdG8gWUVBUgorICAgICAqIG1vc3Qgb2YgdGhlIHRpbWUsIGJ1dCBhdCB0aGUgeWVhciBib3VuZGFyeSBpdCBtYXkgYmUgYWRqdXN0ZWQgdG8gWUVBUi0xCisgICAgICogb3IgWUVBUisxIHRvIHJlZmxlY3QgdGhlIG92ZXJsYXAgb2YgYSB3ZWVrIGludG8gYW4gYWRqYWNlbnQgeWVhci4gIEluCisgICAgICogdGhpcyBjYXNlLCBhIHNpbXBsZSBpbmNyZW1lbnQgb3IgZGVjcmVtZW50IGlzIHBlcmZvcm1lZCBvbiBZRUFSLCBldmVuCisgICAgICogdGhvdWdoIHRoaXMgbWF5IHlpZWxkIGFuIGludmFsaWQgWUVBUiB2YWx1ZS4gIEZvciBpbnN0YW5jZSwgaWYgdGhlIFlFQVIKKyAgICAgKiBpcyBwYXJ0IG9mIGEgY2FsZW5kYXIgc3lzdGVtIHdpdGggYW4gTi15ZWFyIGN5Y2xlIGZpZWxkIENZQ0xFLCB0aGVuCisgICAgICogaW5jcmVtZW50aW5nIHRoZSBZRUFSIG1heSBpbnZvbHZlIGluY3JlbWVudGluZyBDWUNMRSBhbmQgc2V0dGluZyBZRUFSCisgICAgICogYmFjayB0byAwIG9yIDEuICBUaGlzIGlzIG5vdCBoYW5kbGVkIGJ5IHRoaXMgY29kZSwgYW5kIGluIGZhY3QgY2Fubm90IGJlCisgICAgICogc2ltcGx5IGhhbmRsZWQgd2l0aG91dCBoYXZpbmcgc3ViY2xhc3NlcyBkZWZpbmUgYW4gZW50aXJlIHBhcmFsbGVsIHNldCBvZgorICAgICAqIGZpZWxkcyBmb3IgZmllbGRzIGxhcmdlciB0aGFuIG9yIGVxdWFsIHRvIGEgeWVhci4gIFRoaXMgYWRkaXRpb25hbAorICAgICAqIGNvbXBsZXhpdHkgaXMgbm90IHdhcnJhbnRlZCwgc2luY2UgdGhlIGludGVudGlvbiBvZiB0aGUgWUVBUl9XT1kgZmllbGQgaXMKKyAgICAgKiB0byBzdXBwb3J0IElTTyA4NjAxIG5vdGF0aW9uLCBzbyBpdCB3aWxsIHR5cGljYWxseSBiZSB1c2VkIHdpdGggYQorICAgICAqIHByb2xlcHRpYyBHcmVnb3JpYW4gY2FsZW5kYXIsIHdoaWNoIGhhcyBubyBmaWVsZCBsYXJnZXIgdGhhbiBhIHllYXIuCisgICAgICovCisgICAgcHJpdmF0ZSBmaW5hbCB2b2lkIGNvbXB1dGVXZWVrRmllbGRzKCkgeworICAgICAgICBpbnQgZXllYXIgPSBmaWVsZHNbRVhURU5ERURfWUVBUl07CisgICAgICAgIGludCB5ZWFyID0gZmllbGRzW1lFQVJdOworICAgICAgICBpbnQgZGF5T2ZXZWVrID0gZmllbGRzW0RBWV9PRl9XRUVLXTsKKyAgICAgICAgaW50IGRheU9mWWVhciA9IGZpZWxkc1tEQVlfT0ZfWUVBUl07CisKKyAgICAgICAgLy8gV0VFS19PRl9ZRUFSIHN0YXJ0CisgICAgICAgIC8vIENvbXB1dGUgdGhlIHdlZWsgb2YgdGhlIHllYXIuICBGb3IgdGhlIEdyZWdvcmlhbiBjYWxlbmRhciwgdmFsaWQgd2VlaworICAgICAgICAvLyBudW1iZXJzIHJ1biBmcm9tIDEgdG8gNTIgb3IgNTMsIGRlcGVuZGluZyBvbiB0aGUgeWVhciwgdGhlIGZpcnN0IGRheQorICAgICAgICAvLyBvZiB0aGUgd2VlaywgYW5kIHRoZSBtaW5pbWFsIGRheXMgaW4gdGhlIGZpcnN0IHdlZWsuICBGb3Igb3RoZXIKKyAgICAgICAgLy8gY2FsZW5kYXJzLCB0aGUgdmFsaWQgcmFuZ2UgbWF5IGJlIGRpZmZlcmVudCAtLSBpdCBkZXBlbmRzIG9uIHRoZSB5ZWFyCisgICAgICAgIC8vIGxlbmd0aC4gIERheXMgYXQgdGhlIHN0YXJ0IG9mIHRoZSB5ZWFyIG1heSBmYWxsIGludG8gdGhlIGxhc3Qgd2VlayBvZgorICAgICAgICAvLyB0aGUgcHJldmlvdXMgeWVhcjsgZGF5cyBhdCB0aGUgZW5kIG9mIHRoZSB5ZWFyIG1heSBmYWxsIGludG8gdGhlCisgICAgICAgIC8vIGZpcnN0IHdlZWsgb2YgdGhlIG5leHQgeWVhci4gIEFTU1VNRSB0aGF0IHRoZSB5ZWFyIGxlbmd0aCBpcyBsZXNzIHRoYW4KKyAgICAgICAgLy8gNzAwMCBkYXlzLgorICAgICAgICBpbnQgeWVhck9mV2Vla09mWWVhciA9IHllYXI7CisgICAgICAgIGludCByZWxEb3cgPSAoZGF5T2ZXZWVrICsgNyAtIGdldEZpcnN0RGF5T2ZXZWVrKCkpICUgNzsgLy8gMC4uNgorICAgICAgICBpbnQgcmVsRG93SmFuMSA9IChkYXlPZldlZWsgLSBkYXlPZlllYXIgKyA3MDAxIC0gZ2V0Rmlyc3REYXlPZldlZWsoKSkgJSA3OyAvLyAwLi42CisgICAgICAgIGludCB3b3kgPSAoZGF5T2ZZZWFyIC0gMSArIHJlbERvd0phbjEpIC8gNzsgLy8gMC4uNTMKKyAgICAgICAgaWYgKCg3IC0gcmVsRG93SmFuMSkgPj0gZ2V0TWluaW1hbERheXNJbkZpcnN0V2VlaygpKSB7CisgICAgICAgICAgICArK3dveTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEFkanVzdCBmb3Igd2Vla3MgYXQgdGhlIHllYXIgZW5kIHRoYXQgb3ZlcmxhcCBpbnRvIHRoZSBwcmV2aW91cyBvcgorICAgICAgICAvLyBuZXh0IGNhbGVuZGFyIHllYXIuCisgICAgICAgIGlmICh3b3kgPT0gMCkgeworICAgICAgICAgICAgLy8gV2UgYXJlIHRoZSBsYXN0IHdlZWsgb2YgdGhlIHByZXZpb3VzIHllYXIuCisgICAgICAgICAgICAvLyBDaGVjayB0byBzZWUgaWYgd2UgYXJlIGluIHRoZSBsYXN0IHdlZWs7IGlmIHNvLCB3ZSBuZWVkCisgICAgICAgICAgICAvLyB0byBoYW5kbGUgdGhlIGNhc2UgaW4gd2hpY2ggd2UgYXJlIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZQorICAgICAgICAgICAgLy8gbmV4dCB5ZWFyLgorCisgICAgICAgICAgICBpbnQgcHJldkRveSA9IGRheU9mWWVhciArIGhhbmRsZUdldFllYXJMZW5ndGgoZXllYXIgLSAxKTsKKyAgICAgICAgICAgIHdveSA9IHdlZWtOdW1iZXIocHJldkRveSwgZGF5T2ZXZWVrKTsKKyAgICAgICAgICAgIHllYXJPZldlZWtPZlllYXItLTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGludCBsYXN0RG95ID0gaGFuZGxlR2V0WWVhckxlbmd0aChleWVhcik7CisgICAgICAgICAgICAvLyBGYXN0IGNoZWNrOiBGb3IgaXQgdG8gYmUgd2VlayAxIG9mIHRoZSBuZXh0IHllYXIsIHRoZSBET1kKKyAgICAgICAgICAgIC8vIG11c3QgYmUgb24gb3IgYWZ0ZXIgTC01LCB3aGVyZSBMIGlzIHllYXJMZW5ndGgoKSwgdGhlbiBpdAorICAgICAgICAgICAgLy8gY2Fubm90IHBvc3NpYmx5IGJlIHdlZWsgMSBvZiB0aGUgbmV4dCB5ZWFyOgorICAgICAgICAgICAgLy8gICAgICAgICAgTC01ICAgICAgICAgICAgICAgICAgTAorICAgICAgICAgICAgLy8gZG95OiAzNTkgMzYwIDM2MSAzNjIgMzYzIDM2NCAzNjUgMDAxCisgICAgICAgICAgICAvLyBkb3c6ICAgICAgMSAgIDIgICAzICAgNCAgIDUgICA2ICAgNworICAgICAgICAgICAgaWYgKGRheU9mWWVhciA+PSAobGFzdERveSAtIDUpKSB7CisgICAgICAgICAgICAgICAgaW50IGxhc3RSZWxEb3cgPSAocmVsRG93ICsgbGFzdERveSAtIGRheU9mWWVhcikgJSA3OworICAgICAgICAgICAgICAgIGlmIChsYXN0UmVsRG93IDwgMCkgeworICAgICAgICAgICAgICAgICAgICBsYXN0UmVsRG93ICs9IDc7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICgoKDYgLSBsYXN0UmVsRG93KSA+PSBnZXRNaW5pbWFsRGF5c0luRmlyc3RXZWVrKCkpICYmCisgICAgICAgICAgICAgICAgICAgICgoZGF5T2ZZZWFyICsgNyAtIHJlbERvdykgPiBsYXN0RG95KSkgeworICAgICAgICAgICAgICAgICAgICB3b3kgPSAxOworICAgICAgICAgICAgICAgICAgICB5ZWFyT2ZXZWVrT2ZZZWFyKys7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGZpZWxkc1tXRUVLX09GX1lFQVJdID0gd295OworICAgICAgICBmaWVsZHNbWUVBUl9XT1ldID0geWVhck9mV2Vla09mWWVhcjsKKyAgICAgICAgLy8gV0VFS19PRl9ZRUFSIGVuZAorCisgICAgICAgIGludCBkYXlPZk1vbnRoID0gZmllbGRzW0RBWV9PRl9NT05USF07CisgICAgICAgIGZpZWxkc1tXRUVLX09GX01PTlRIXSA9IHdlZWtOdW1iZXIoZGF5T2ZNb250aCwgZGF5T2ZXZWVrKTsKKyAgICAgICAgZmllbGRzW0RBWV9PRl9XRUVLX0lOX01PTlRIXSA9IChkYXlPZk1vbnRoLTEpIC8gNyArIDE7CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gRmllbGRzIC0+IFRpbWUKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIFZhbHVlIHRvIE9SIGFnYWluc3QgcmVzb2x2ZSB0YWJsZSBmaWVsZCB2YWx1ZXMgZm9yIHJlbWFwcGluZy4KKyAgICAgKiBAc2VlICNyZXNvbHZlRmllbGRzCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgUkVTT0xWRV9SRU1BUCA9IDMyOworICAgIC8vIEEgcG93ZXIgb2YgMiBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gTUFYX0ZJRUxEX0NPVU5UCisKKyAgICAvLyBEZWZhdWx0IHRhYmxlIGZvciBkYXkgaW4geWVhcgorICAgIHN0YXRpYyBmaW5hbCBpbnRbXVtdW10gREFURV9QUkVDRURFTkNFID0geworICAgICAgICB7CisgICAgICAgICAgICB7IERBWV9PRl9NT05USCB9LAorICAgICAgICAgICAgeyBXRUVLX09GX1lFQVIsIERBWV9PRl9XRUVLIH0sCisgICAgICAgICAgICB7IFdFRUtfT0ZfTU9OVEgsIERBWV9PRl9XRUVLIH0sCisgICAgICAgICAgICB7IERBWV9PRl9XRUVLX0lOX01PTlRILCBEQVlfT0ZfV0VFSyB9LAorICAgICAgICAgICAgeyBXRUVLX09GX1lFQVIsIERPV19MT0NBTCB9LAorICAgICAgICAgICAgeyBXRUVLX09GX01PTlRILCBET1dfTE9DQUwgfSwKKyAgICAgICAgICAgIHsgREFZX09GX1dFRUtfSU5fTU9OVEgsIERPV19MT0NBTCB9LAorICAgICAgICAgICAgeyBEQVlfT0ZfWUVBUiB9LAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB7IFdFRUtfT0ZfWUVBUiB9LAorICAgICAgICAgICAgeyBXRUVLX09GX01PTlRIIH0sCisgICAgICAgICAgICB7IERBWV9PRl9XRUVLX0lOX01PTlRIIH0sCisgICAgICAgICAgICB7IFJFU09MVkVfUkVNQVAgfCBEQVlfT0ZfV0VFS19JTl9NT05USCwgREFZX09GX1dFRUsgfSwKKyAgICAgICAgICAgIHsgUkVTT0xWRV9SRU1BUCB8IERBWV9PRl9XRUVLX0lOX01PTlRILCBET1dfTE9DQUwgfSwKKyAgICAgICAgfSwKKyAgICB9OworCisgICAgc3RhdGljIGZpbmFsIGludFtdW11bXSBET1dfUFJFQ0VERU5DRSA9IHsKKyAgICAgICAgeworICAgICAgICAgICAgeyBEQVlfT0ZfV0VFSyB9LAorICAgICAgICAgICAgeyBET1dfTE9DQUwgfSwKKyAgICAgICAgfSwKKyAgICB9OworCisgICAgLyoqCisgICAgICogR2l2ZW4gYSBwcmVjZWRlbmNlIHRhYmxlLCByZXR1cm4gdGhlIG5ld2VzdCBmaWVsZCBjb21iaW5hdGlvbiBpbgorICAgICAqIHRoZSB0YWJsZSwgb3IgLTEgaWYgbm9uZSBpcyBmb3VuZC4KKyAgICAgKgorICAgICAqIDxwPlRoZSBwcmVjZWRlbmNlIHRhYmxlIGlzIGEgMy1kaW1lbnNpb25hbCBhcnJheSBvZiBpbnRlZ2Vycy4gIEl0CisgICAgICogbWF5IGJlIHRob3VnaHQgb2YgYXMgYW4gYXJyYXkgb2YgZ3JvdXBzLiAgRWFjaCBncm91cCBpcyBhbiBhcnJheSBvZgorICAgICAqIGxpbmVzLiAgRWFjaCBsaW5lIGlzIGFuIGFycmF5IG9mIGZpZWxkIG51bWJlcnMuICBXaXRoaW4gYSBsaW5lLCBpZgorICAgICAqIGFsbCBmaWVsZHMgYXJlIHNldCwgdGhlbiB0aGUgdGltZSBzdGFtcCBvZiB0aGUgbGluZSBpcyB0YWtlbiB0byBiZQorICAgICAqIHRoZSBzdGFtcCBvZiB0aGUgbW9zdCByZWNlbnRseSBzZXQgZmllbGQuICBJZiBhbnkgZmllbGQgb2YgYSBsaW5lIGlzCisgICAgICogdW5zZXQsIHRoZW4gdGhlIGxpbmUgZmFpbHMgdG8gbWF0Y2guICBXaXRoaW4gYSBncm91cCwgdGhlIGxpbmUgd2l0aAorICAgICAqIHRoZSBuZXdlc3QgdGltZSBzdGFtcCBpcyBzZWxlY3RlZC4gIFRoZSBmaXJzdCBmaWVsZCBvZiB0aGUgbGluZSBpcworICAgICAqIHJldHVybmVkIHRvIGluZGljYXRlIHdoaWNoIGxpbmUgbWF0Y2hlZC4KKyAgICAgKgorICAgICAqIDxwPkluIHNvbWUgY2FzZXMsIGl0IG1heSBiZSBkZXNpcmFibGUgdG8gbWFwIGEgbGluZSB0byBmaWVsZCB0aGF0CisgICAgICogd2hvc2Ugc3RhbXAgaXMgTk9UIGV4YW1pbmVkLiAgRm9yIGV4YW1wbGUsIGlmIHRoZSBiZXN0IGZpZWxkIGlzCisgICAgICogREFZX09GX1dFRUsgdGhlbiB0aGUgREFZX09GX1dFRUtfSU5fTU9OVEggYWxnb3JpdGhtIG1heSBiZSB1c2VkLiAgSW4KKyAgICAgKiBvcmRlciB0byBkbyB0aGlzLCBpbnNlcnQgdGhlIHZhbHVlIDxjb2RlPlJFTUFQX1JFU09MVkUgfCBGPC9jb2RlPiBhdAorICAgICAqIHRoZSBzdGFydCBvZiB0aGUgbGluZSwgd2hlcmUgPGNvZGU+RjwvY29kZT4gaXMgdGhlIGRlc2lyZWQgcmV0dXJuCisgICAgICogZmllbGQgdmFsdWUuICBUaGlzIGZpZWxkIHdpbGwgTk9UIGJlIGV4YW1pbmVkOyBpdCBvbmx5IGRldGVybWluZXMKKyAgICAgKiB0aGUgcmV0dXJuIHZhbHVlIGlmIHRoZSBvdGhlciBmaWVsZHMgaW4gdGhlIGxpbmUgYXJlIHRoZSBuZXdlc3QuCisgICAgICoKKyAgICAgKiA8cD5JZiBhbGwgbGluZXMgb2YgYSBncm91cCBjb250YWluIGF0IGxlYXN0IG9uZSB1bnNldCBmaWVsZCwgdGhlbiBubworICAgICAqIGxpbmUgd2lsbCBtYXRjaCwgYW5kIHRoZSBncm91cCBhcyBhIHdob2xlIHdpbGwgZmFpbCB0byBtYXRjaC4gIEluCisgICAgICogdGhhdCBjYXNlLCB0aGUgbmV4dCBncm91cCB3aWxsIGJlIHByb2Nlc3NlZC4gIElmIGFsbCBncm91cHMgZmFpbCB0bworICAgICAqIG1hdGNoLCB0aGVuIC0xIGlzIHJldHVybmVkLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHByb3RlY3RlZCBpbnQgcmVzb2x2ZUZpZWxkcyhpbnRbXVtdW10gcHJlY2VkZW5jZVRhYmxlKSB7CisgICAgICAgIGludCBiZXN0RmllbGQgPSAtMTsKKyAgICAgICAgZm9yIChpbnQgZz0wOyBnPHByZWNlZGVuY2VUYWJsZS5sZW5ndGggJiYgYmVzdEZpZWxkIDwgMDsgKytnKSB7CisgICAgICAgICAgICBpbnRbXVtdIGdyb3VwID0gcHJlY2VkZW5jZVRhYmxlW2ddOworICAgICAgICAgICAgaW50IGJlc3RTdGFtcCA9IFVOU0VUOworICAgICAgICBsaW5lc0luR3JvdXA6CisgICAgICAgICAgICBmb3IgKGludCBsPTA7IGw8Z3JvdXAubGVuZ3RoOyArK2wpIHsKKyAgICAgICAgICAgICAgICBpbnRbXSBsaW5lPSBncm91cFtsXTsKKyAgICAgICAgICAgICAgICBpbnQgbGluZVN0YW1wID0gVU5TRVQ7CisgICAgICAgICAgICAgICAgLy8gU2tpcCBvdmVyIGZpcnN0IGVudHJ5IGlmIGl0IGlzIG5lZ2F0aXZlCisgICAgICAgICAgICAgICAgZm9yIChpbnQgaT0obGluZVswXT49UkVTT0xWRV9SRU1BUCk/MTowOyBpPGxpbmUubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IHMgPSBzdGFtcFtsaW5lW2ldXTsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgYW55IGZpZWxkIGlzIHVuc2V0IHRoZW4gZG9uJ3QgdXNlIHRoaXMgbGluZQorICAgICAgICAgICAgICAgICAgICBpZiAocyA9PSBVTlNFVCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUgbGluZXNJbkdyb3VwOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgbGluZVN0YW1wID0gTWF0aC5tYXgobGluZVN0YW1wLCBzKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvLyBSZWNvcmQgbmV3IG1heGltdW0gc3RhbXAgJiBmaWVsZCBuby4KKyAgICAgICAgICAgICAgICBpZiAobGluZVN0YW1wID4gYmVzdFN0YW1wKSB7CisgICAgICAgICAgICAgICAgICAgIGJlc3RTdGFtcCA9IGxpbmVTdGFtcDsKKyAgICAgICAgICAgICAgICAgICAgYmVzdEZpZWxkID0gbGluZVswXTsgLy8gRmlyc3QgZmllbGQgcmVmZXJzIHRvIGVudGlyZSBsaW5lCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiAoYmVzdEZpZWxkPj1SRVNPTFZFX1JFTUFQKT8oYmVzdEZpZWxkJihSRVNPTFZFX1JFTUFQLTEpKTpiZXN0RmllbGQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBuZXdlc3Qgc3RhbXAgb2YgYSBnaXZlbiByYW5nZSBvZiBmaWVsZHMuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHJvdGVjdGVkIGludCBuZXdlc3RTdGFtcChpbnQgZmlyc3QsIGludCBsYXN0LCBpbnQgYmVzdFN0YW1wU29GYXIpIHsKKyAgICAgICAgaW50IGJlc3RTdGFtcCA9IGJlc3RTdGFtcFNvRmFyOworICAgICAgICBmb3IgKGludCBpPWZpcnN0OyBpPD1sYXN0OyArK2kpIHsKKyAgICAgICAgICAgIGlmIChzdGFtcFtpXSA+IGJlc3RTdGFtcCkgeworICAgICAgICAgICAgICAgIGJlc3RTdGFtcCA9IHN0YW1wW2ldOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBiZXN0U3RhbXA7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSB0aW1lc3RhbXAgb2YgYSBmaWVsZC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgZmluYWwgaW50IGdldFN0YW1wKGludCBmaWVsZCkgeworICAgICAgICByZXR1cm4gc3RhbXBbZmllbGRdOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGZpZWxkIHRoYXQgaXMgbmV3ZXIsIGVpdGhlciBkZWZhdWx0RmllbGQsIG9yCisgICAgICogYWx0ZXJuYXRlRmllbGQuICBJZiBuZWl0aGVyIGlzIG5ld2VyIG9yIG5laXRoZXIgaXMgc2V0LCByZXR1cm4gZGVmYXVsdEZpZWxkLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHByb3RlY3RlZCBpbnQgbmV3ZXJGaWVsZChpbnQgZGVmYXVsdEZpZWxkLCBpbnQgYWx0ZXJuYXRlRmllbGQpIHsKKyAgICAgICAgaWYgKHN0YW1wW2FsdGVybmF0ZUZpZWxkXSA+IHN0YW1wW2RlZmF1bHRGaWVsZF0pIHsKKyAgICAgICAgICAgIHJldHVybiBhbHRlcm5hdGVGaWVsZDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZGVmYXVsdEZpZWxkOworICAgIH0KKworICAgIC8qKgorICAgICAqIEVuc3VyZSB0aGF0IGVhY2ggZmllbGQgaXMgd2l0aGluIGl0cyB2YWxpZCByYW5nZSBieSBjYWxsaW5nIHtAbGluaworICAgICAqICN2YWxpZGF0ZUZpZWxkKGludCl9IG9uIGVhY2ggZmllbGQgdGhhdCBoYXMgYmVlbiBzZXQuICBUaGlzIG1ldGhvZAorICAgICAqIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiB0aGlzIGNhbGVuZGFyIGlzIG5vdCBsZW5pZW50LgorICAgICAqIEBzZWUgI2lzTGVuaWVudAorICAgICAqIEBzZWUgI3ZhbGlkYXRlRmllbGQoaW50KQorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHByb3RlY3RlZCB2b2lkIHZhbGlkYXRlRmllbGRzKCkgeworICAgICAgICBmb3IgKGludCBmaWVsZCA9IDA7IGZpZWxkIDwgZmllbGRzLmxlbmd0aDsgZmllbGQrKykgeworICAgICAgICAgICAgaWYgKGlzU2V0KGZpZWxkKSkgeworICAgICAgICAgICAgICAgIHZhbGlkYXRlRmllbGQoZmllbGQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogVmFsaWRhdGUgYSBzaW5nbGUgZmllbGQgb2YgdGhpcyBjYWxlbmRhci4gIFN1YmNsYXNzZXMgc2hvdWxkCisgICAgICogb3ZlcnJpZGUgdGhpcyBtZXRob2QgdG8gdmFsaWRhdGUgYW55IGNhbGVuZGFyLXNwZWNpZmljIGZpZWxkcy4KKyAgICAgKiBHZW5lcmljIGZpZWxkcyBjYW4gYmUgaGFuZGxlZCBieQorICAgICAqIDxjb2RlPkNhbGVuZGFyLnZhbGlkYXRlRmllbGQoKTwvY29kZT4uCisgICAgICogQHNlZSAjdmFsaWRhdGVGaWVsZChpbnQsIGludCwgaW50KQorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHByb3RlY3RlZCB2b2lkIHZhbGlkYXRlRmllbGQoaW50IGZpZWxkKSB7CisgICAgICAgIGludCB5OworICAgICAgICBzd2l0Y2ggKGZpZWxkKSB7CisgICAgICAgIGNhc2UgREFZX09GX01PTlRIOgorICAgICAgICAgICAgeSA9IGhhbmRsZUdldEV4dGVuZGVkWWVhcigpOworICAgICAgICAgICAgdmFsaWRhdGVGaWVsZChmaWVsZCwgMSwgaGFuZGxlR2V0TW9udGhMZW5ndGgoeSwgaW50ZXJuYWxHZXQoTU9OVEgpKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEQVlfT0ZfWUVBUjoKKyAgICAgICAgICAgIHkgPSBoYW5kbGVHZXRFeHRlbmRlZFllYXIoKTsKKyAgICAgICAgICAgIHZhbGlkYXRlRmllbGQoZmllbGQsIDEsIGhhbmRsZUdldFllYXJMZW5ndGgoeSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgREFZX09GX1dFRUtfSU5fTU9OVEg6CisgICAgICAgICAgICBpZiAoaW50ZXJuYWxHZXQoZmllbGQpID09IDApIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJEQVlfT0ZfV0VFS19JTl9NT05USCBjYW5ub3QgYmUgemVybyIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFsaWRhdGVGaWVsZChmaWVsZCwgZ2V0TWluaW11bShmaWVsZCksIGdldE1heGltdW0oZmllbGQpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgdmFsaWRhdGVGaWVsZChmaWVsZCwgZ2V0TWluaW11bShmaWVsZCksIGdldE1heGltdW0oZmllbGQpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogVmFsaWRhdGUgYSBzaW5nbGUgZmllbGQgb2YgdGhpcyBjYWxlbmRhciBnaXZlbiBpdHMgbWluaW11bSBhbmQKKyAgICAgKiBtYXhpbXVtIGFsbG93ZWQgdmFsdWUuICBJZiB0aGUgZmllbGQgaXMgb3V0IG9mIHJhbmdlLCB0aHJvdyBhCisgICAgICogZGVzY3JpcHRpdmUgPGNvZGU+SWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uPC9jb2RlPi4gIFN1YmNsYXNzZXMgbWF5CisgICAgICogdXNlIHRoaXMgbWV0aG9kIGluIHRoZWlyIGltcGxlbWVudGF0aW9uIG9mIHtAbGluaworICAgICAqICN2YWxpZGF0ZUZpZWxkKGludCl9LgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHByb3RlY3RlZCBmaW5hbCB2b2lkIHZhbGlkYXRlRmllbGQoaW50IGZpZWxkLCBpbnQgbWluLCBpbnQgbWF4KSB7CisgICAgICAgIGludCB2YWx1ZSA9IGZpZWxkc1tmaWVsZF07CisgICAgICAgIGlmICh2YWx1ZSA8IG1pbiB8fCB2YWx1ZSA+IG1heCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbihmaWVsZE5hbWUoZmllbGQpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJz0nICsgdmFsdWUgKyAiLCB2YWxpZCByYW5nZT0iICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluICsgIi4uIiArIG1heCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb252ZXJ0cyB0aGUgY3VycmVudCBmaWVsZCB2YWx1ZXMgaW4gPGNvZGU+ZmllbGRzW108L2NvZGU+IHRvIHRoZQorICAgICAqIG1pbGxpc2Vjb25kIHRpbWUgdmFsdWUgPGNvZGU+dGltZTwvY29kZT4uCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICBwcm90ZWN0ZWQgdm9pZCBjb21wdXRlVGltZSgpIHsKKyAgICAgICAgaWYgKCFpc0xlbmllbnQoKSkgeworICAgICAgICAgICAgdmFsaWRhdGVGaWVsZHMoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIENvbXB1dGUgdGhlIEp1bGlhbiBkYXkgCisgICAgICAgIGludCBqdWxpYW5EYXkgPSBjb21wdXRlSnVsaWFuRGF5KCk7CisKKyAgICAgICAgbG9uZyBtaWxsaXMgPSBqdWxpYW5EYXlUb01pbGxpcyhqdWxpYW5EYXkpOworCisgICAgICAgIGludCBtaWxsaXNJbkRheTsKKworICAgICAgICAvLyBXZSBvbmx5IHVzZSBNSUxMSVNFQ09ORFNfSU5fREFZIGlmIGl0IGhhcyBiZWVuIHNldCBieSB0aGUgdXNlci4KKyAgICAgICAgLy8gVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSBmb3IgdGhlIGNhbGxlciB0byBzZXQgdGhlIGNhbGVuZGFyIHRvIGEKKyAgICAgICAgLy8gdGltZSBhbmQgY2FsbCBjbGVhcihNT05USCkgdG8gcmVzZXQgdGhlIE1PTlRIIHRvIEphbnVhcnkuICBUaGlzCisgICAgICAgIC8vIGlzIGxlZ2FjeSBiZWhhdmlvci4gIFdpdGhvdXQgdGhpcywgY2xlYXIoTU9OVEgpIGhhcyBubyBlZmZlY3QsCisgICAgICAgIC8vIHNpbmNlIHRoZSBpbnRlcm5hbGx5IHNldCBKVUxJQU5fREFZIGlzIHVzZWQuCisgICAgICAgIGlmIChzdGFtcFtNSUxMSVNFQ09ORFNfSU5fREFZXSA+PSBNSU5JTVVNX1VTRVJfU1RBTVAgJiYKKyAgICAgICAgICAgIG5ld2VzdFN0YW1wKEFNX1BNLCBNSUxMSVNFQ09ORCwgVU5TRVQpIDw9IHN0YW1wW01JTExJU0VDT05EU19JTl9EQVldKSB7CisgICAgICAgICAgICBtaWxsaXNJbkRheSA9IGludGVybmFsR2V0KE1JTExJU0VDT05EU19JTl9EQVkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbWlsbGlzSW5EYXkgPSBjb21wdXRlTWlsbGlzSW5EYXkoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIENvbXB1dGUgdGhlIHRpbWUgem9uZSBvZmZzZXQgYW5kIERTVCBvZmZzZXQuICBUaGVyZSBhcmUgdHdvIHBvdGVudGlhbAorICAgICAgICAvLyBhbWJpZ3VpdGllcyBoZXJlLiAgV2UnbGwgYXNzdW1lIGEgMjowMCBhbSAod2FsbCB0aW1lKSBzd2l0Y2hvdmVyIHRpbWUKKyAgICAgICAgLy8gZm9yIGRpc2N1c3Npb24gcHVycG9zZXMgaGVyZS4KKyAgICAgICAgLy8gMS4gVGhlIHRyYW5zaXRpb24gaW50byBEU1QuICBIZXJlLCBhIGRlc2lnbmF0ZWQgdGltZSBvZiAyOjAwIGFtIC0gMjo1OSBhbQorICAgICAgICAvLyAgICBjYW4gYmUgaW4gc3RhbmRhcmQgb3IgaW4gRFNUIGRlcGVuZGluZy4gIEhvd2V2ZXIsIDI6MDAgYW0gaXMgYW4gaW52YWxpZAorICAgICAgICAvLyAgICByZXByZXNlbnRhdGlvbiAodGhlIHJlcHJlc2VudGF0aW9uIGp1bXBzIGZyb20gMTo1OTo1OSBhbSBTdGQgdG8gMzowMDowMCBhbSBEU1QpLgorICAgICAgICAvLyAgICBXZSBhc3N1bWUgc3RhbmRhcmQgdGltZS4KKyAgICAgICAgLy8gMi4gVGhlIHRyYW5zaXRpb24gb3V0IG9mIERTVC4gIEhlcmUsIGEgZGVzaWduYXRlZCB0aW1lIG9mIDE6MDAgYW0gLSAxOjU5IGFtCisgICAgICAgIC8vICAgIGNhbiBiZSBpbiBzdGFuZGFyZCBvciBEU1QuICBCb3RoIGFyZSB2YWxpZCByZXByZXNlbnRhdGlvbnMgKHRoZSByZXAKKyAgICAgICAgLy8gICAganVtcHMgZnJvbSAxOjU5OjU5IERTVCB0byAxOjAwOjAwIFN0ZCkuCisgICAgICAgIC8vICAgIEFnYWluLCB3ZSBhc3N1bWUgc3RhbmRhcmQgdGltZS4KKyAgICAgICAgLy8gV2UgdXNlIHRoZSBUaW1lWm9uZSBvYmplY3QsIHVubGVzcyB0aGUgdXNlciBoYXMgZXhwbGljaXRseSBzZXQgdGhlIFpPTkVfT0ZGU0VUCisgICAgICAgIC8vIG9yIERTVF9PRkZTRVQgZmllbGRzOyB0aGVuIHdlIHVzZSB0aG9zZSBmaWVsZHMuCisgICAgICAgIGlmIChzdGFtcFtaT05FX09GRlNFVF0gPj0gTUlOSU1VTV9VU0VSX1NUQU1QIHx8CisgICAgICAgICAgICBzdGFtcFtEU1RfT0ZGU0VUXSA+PSBNSU5JTVVNX1VTRVJfU1RBTVApIHsKKyAgICAgICAgICAgIG1pbGxpc0luRGF5IC09IGludGVybmFsR2V0KFpPTkVfT0ZGU0VUKSArIGludGVybmFsR2V0KERTVF9PRkZTRVQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbWlsbGlzSW5EYXkgLT0gY29tcHV0ZVpvbmVPZmZzZXQobWlsbGlzLCBtaWxsaXNJbkRheSk7CisgICAgICAgIH0KKworICAgICAgICB0aW1lID0gbWlsbGlzICsgbWlsbGlzSW5EYXk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29tcHV0ZSB0aGUgbWlsbGlzZWNvbmRzIGluIHRoZSBkYXkgZnJvbSB0aGUgZmllbGRzLiAgVGhpcyBpcyBhCisgICAgICogdmFsdWUgZnJvbSAwIHRvIDIzOjU5OjU5Ljk5OSBpbmNsdXNpdmUsIHVubGVzcyBmaWVsZHMgYXJlIG91dCBvZgorICAgICAqIHJhbmdlLCBpbiB3aGljaCBjYXNlIGl0IGNhbiBiZSBhbiBhcmJpdHJhcnkgdmFsdWUuICBUaGlzIHZhbHVlCisgICAgICogcmVmbGVjdHMgbG9jYWwgem9uZSB3YWxsIHRpbWUuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHJvdGVjdGVkIGludCBjb21wdXRlTWlsbGlzSW5EYXkoKSB7CisgICAgICAgIC8vIERvIHRoZSB0aW1lIHBvcnRpb24gb2YgdGhlIGNvbnZlcnNpb24uCisKKyAgICAgICAgaW50IG1pbGxpc0luRGF5ID0gMDsKKworICAgICAgICAvLyBGaW5kIHRoZSBiZXN0IHNldCBvZiBmaWVsZHMgc3BlY2lmeWluZyB0aGUgdGltZSBvZiBkYXkuICBUaGVyZQorICAgICAgICAvLyBhcmUgb25seSB0d28gcG9zc2liaWxpdGllcyBoZXJlOyB0aGUgSE9VUl9PRl9EQVkgb3IgdGhlCisgICAgICAgIC8vIEFNX1BNIGFuZCB0aGUgSE9VUi4KKyAgICAgICAgaW50IGhvdXJPZkRheVN0YW1wID0gc3RhbXBbSE9VUl9PRl9EQVldOworICAgICAgICBpbnQgaG91clN0YW1wID0gTWF0aC5tYXgoc3RhbXBbSE9VUl0sIHN0YW1wW0FNX1BNXSk7CisgICAgICAgIGludCBiZXN0U3RhbXAgPSAoaG91clN0YW1wID4gaG91ck9mRGF5U3RhbXApID8gaG91clN0YW1wIDogaG91ck9mRGF5U3RhbXA7CisKKyAgICAgICAgLy8gSG91cnMKKyAgICAgICAgaWYgKGJlc3RTdGFtcCAhPSBVTlNFVCkgeworICAgICAgICAgICAgaWYgKGJlc3RTdGFtcCA9PSBob3VyT2ZEYXlTdGFtcCkgeworICAgICAgICAgICAgICAgIC8vIERvbid0IG5vcm1hbGl6ZSBoZXJlOyBsZXQgb3ZlcmZsb3cgYnVtcCBpbnRvIHRoZSBuZXh0IHBlcmlvZC4KKyAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGNvbnNpc3RlbnQgd2l0aCBob3cgd2UgaGFuZGxlIG90aGVyIGZpZWxkcy4KKyAgICAgICAgICAgICAgICBtaWxsaXNJbkRheSArPSBpbnRlcm5hbEdldChIT1VSX09GX0RBWSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIERvbid0IG5vcm1hbGl6ZSBoZXJlOyBsZXQgb3ZlcmZsb3cgYnVtcCBpbnRvIHRoZSBuZXh0IHBlcmlvZC4KKyAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGNvbnNpc3RlbnQgd2l0aCBob3cgd2UgaGFuZGxlIG90aGVyIGZpZWxkcy4KKyAgICAgICAgICAgICAgICBtaWxsaXNJbkRheSArPSBpbnRlcm5hbEdldChIT1VSKTsKKyAgICAgICAgICAgICAgICBtaWxsaXNJbkRheSArPSAxMiAqIGludGVybmFsR2V0KEFNX1BNKTsgLy8gRGVmYXVsdCB3b3JrcyBmb3IgdW5zZXQgQU1fUE0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFdlIHVzZSB0aGUgZmFjdCB0aGF0IHVuc2V0ID09IDA7IHdlIHN0YXJ0IHdpdGggbWlsbGlzSW5EYXkKKyAgICAgICAgLy8gPT0gSE9VUl9PRl9EQVkuCisgICAgICAgIG1pbGxpc0luRGF5ICo9IDYwOworICAgICAgICBtaWxsaXNJbkRheSArPSBpbnRlcm5hbEdldChNSU5VVEUpOyAvLyBub3cgaGF2ZSBtaW51dGVzCisgICAgICAgIG1pbGxpc0luRGF5ICo9IDYwOworICAgICAgICBtaWxsaXNJbkRheSArPSBpbnRlcm5hbEdldChTRUNPTkQpOyAvLyBub3cgaGF2ZSBzZWNvbmRzCisgICAgICAgIG1pbGxpc0luRGF5ICo9IDEwMDA7CisgICAgICAgIG1pbGxpc0luRGF5ICs9IGludGVybmFsR2V0KE1JTExJU0VDT05EKTsgLy8gbm93IGhhdmUgbWlsbGlzCisKKyAgICAgICAgcmV0dXJuIG1pbGxpc0luRGF5OworICAgIH0KKworICAgIC8qKgorICAgICAqIFRoaXMgbWV0aG9kIGNhbiBhc3N1bWUgRVhURU5ERURfWUVBUiBoYXMgYmVlbiBzZXQuCisgICAgICogQHBhcmFtIG1pbGxpcyBtaWxsaXNlY29uZHMgb2YgdGhlIGRhdGUgZmllbGRzCisgICAgICogQHBhcmFtIG1pbGxpc0luRGF5IG1pbGxpc2Vjb25kcyBvZiB0aGUgdGltZSBmaWVsZHM7IG1heSBiZSBvdXQKKyAgICAgKiBvciByYW5nZS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgaW50IGNvbXB1dGVab25lT2Zmc2V0KGxvbmcgbWlsbGlzLCBpbnQgbWlsbGlzSW5EYXkpIHsKKworICAgICAgICAvKiBOb3JtYWxpemUgdGhlIG1pbGxpc0luRGF5IHRvIDAuLk9ORV9EQVktMS4gIElmIHRoZSBtaWxsaXMgaXMgb3V0CisgICAgICAgICAqIG9mIHJhbmdlLCB0aGVuIHdlIG11c3QgY2FsbCBjb21wdXRlR3JlZ29yaWFuQW5kRE9XRmllbGRzKCkgdG8KKyAgICAgICAgICogcmVjb21wdXRlIG91ciBmaWVsZHMuICovCisgICAgICAgIGludFtdIG5vcm1hbGl6ZWRNaWxsaXNJbkRheSA9IG5ldyBpbnRbMV07CisgICAgICAgIGludCBkYXlzID0gZmxvb3JEaXZpZGUobWlsbGlzICsgbWlsbGlzSW5EYXksIChpbnQpIE9ORV9EQVksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZE1pbGxpc0luRGF5KTsKKworICAgICAgICBpbnQganVsaWFuRGF5ID0gbWlsbGlzVG9KdWxpYW5EYXkoZGF5cyAqIE9ORV9EQVkpOworCisgICAgICAgIGNvbXB1dGVHcmVnb3JpYW5BbmRET1dGaWVsZHMoanVsaWFuRGF5KTsKKworICAgICAgICByZXR1cm4gem9uZS5nZXRPZmZzZXQoCisgICAgICAgICAgICAgICAgICAgICAgZ3JlZ29yaWFuWWVhciwgZ3JlZ29yaWFuTW9udGgsIGdyZWdvcmlhbkRheU9mTW9udGgsCisgICAgICAgICAgICAgICAgICAgICAgZmllbGRzW0RBWV9PRl9XRUVLXSwgbm9ybWFsaXplZE1pbGxpc0luRGF5WzBdLAorICAgICAgICAgICAgICAgICAgICAgIGdyZWdvcmlhbk1vbnRoTGVuZ3RoKGdyZWdvcmlhblllYXIsIGdyZWdvcmlhbk1vbnRoKSwKKyAgICAgICAgICAgICAgICAgICAgICBncmVnb3JpYW5QcmV2aW91c01vbnRoTGVuZ3RoKGdyZWdvcmlhblllYXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmVnb3JpYW5Nb250aCkpOworCisgICAgICAgIC8vIE5vdGU6IEJlY2F1c2Ugd2UgcGFzcyBpbiB3YWxsIG1pbGxpc0luRGF5LCByYXRoZXIgdGhhbgorICAgICAgICAvLyBzdGFuZGFyZCBtaWxsaXNJbkRheSwgd2UgaW50ZXJwcmV0ICIxOjAwIGFtIiBvbiB0aGUgZGF5CisgICAgICAgIC8vIG9mIGNlc3NhdGlvbiBvZiBEU1QgYXMgIjE6MDAgYW0gU3RkIiAoYXNzdW1pbmcgdGhlIHRpbWUKKyAgICAgICAgLy8gb2YgY2Vzc2F0aW9uIGlzIDI6MDAgYW0pLgorICAgIH0KKworICAgIC8qKgorICAgICAqIENvbXB1dGUgdGhlIEp1bGlhbiBkYXkgbnVtYmVyIGFzIHNwZWNpZmllZCBieSB0aGlzIGNhbGVuZGFyJ3MgZmllbGRzLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHByb3RlY3RlZCBpbnQgY29tcHV0ZUp1bGlhbkRheSgpIHsKKworICAgICAgICAvLyBXZSB3YW50IHRvIHNlZSBpZiBhbnkgb2YgdGhlIGRhdGUgZmllbGRzIGlzIG5ld2VyIHRoYW4gdGhlCisgICAgICAgIC8vIEpVTElBTl9EQVkuICBJZiBub3QsIHRoZW4gd2UgdXNlIEpVTElBTl9EQVkuICBJZiBzbywgdGhlbiB3ZSBkbworICAgICAgICAvLyB0aGUgbm9ybWFsIHJlc29sdXRpb24uICBXZSBvbmx5IHVzZSBKVUxJQU5fREFZIGlmIGl0IGhhcyBiZWVuCisgICAgICAgIC8vIHNldCBieSB0aGUgdXNlci4gIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgZm9yIHRoZSBjYWxsZXIgdG8gc2V0CisgICAgICAgIC8vIHRoZSBjYWxlbmRhciB0byBhIHRpbWUgYW5kIGNhbGwgY2xlYXIoTU9OVEgpIHRvIHJlc2V0IHRoZSBNT05USAorICAgICAgICAvLyB0byBKYW51YXJ5LiAgVGhpcyBpcyBsZWdhY3kgYmVoYXZpb3IuICBXaXRob3V0IHRoaXMsCisgICAgICAgIC8vIGNsZWFyKE1PTlRIKSBoYXMgbm8gZWZmZWN0LCBzaW5jZSB0aGUgaW50ZXJuYWxseSBzZXQgSlVMSUFOX0RBWQorICAgICAgICAvLyBpcyB1c2VkLgorICAgICAgICBpZiAoc3RhbXBbSlVMSUFOX0RBWV0gPj0gTUlOSU1VTV9VU0VSX1NUQU1QKSB7CisgICAgICAgICAgICBpbnQgYmVzdFN0YW1wID0gbmV3ZXN0U3RhbXAoRVJBLCBEQVlfT0ZfV0VFS19JTl9NT05USCwgVU5TRVQpOworICAgICAgICAgICAgYmVzdFN0YW1wID0gbmV3ZXN0U3RhbXAoWUVBUl9XT1ksIEVYVEVOREVEX1lFQVIsIGJlc3RTdGFtcCk7CisgICAgICAgICAgICBpZiAoYmVzdFN0YW1wIDw9IHN0YW1wW0pVTElBTl9EQVldKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsR2V0KEpVTElBTl9EQVkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaW50IGJlc3RGaWVsZCA9IHJlc29sdmVGaWVsZHMoZ2V0RmllbGRSZXNvbHV0aW9uVGFibGUoKSk7CisgICAgICAgIGlmIChiZXN0RmllbGQgPCAwKSB7CisgICAgICAgICAgICBiZXN0RmllbGQgPSBEQVlfT0ZfTU9OVEg7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gaGFuZGxlQ29tcHV0ZUp1bGlhbkRheShiZXN0RmllbGQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgZmllbGQgcmVzb2x1dGlvbiBhcnJheSBmb3IgdGhpcyBjYWxlbmRhci4gIENhbGVuZGFycyB0aGF0CisgICAgICogZGVmaW5lIGFkZGl0aW9uYWwgZmllbGRzIG9yIGNoYW5nZSB0aGUgc2VtYW50aWNzIG9mIGV4aXN0aW5nIGZpZWxkcworICAgICAqIHNob3VsZCBvdmVycmlkZSB0aGlzIG1ldGhvZCB0byBhZGp1c3QgdGhlIGZpZWxkIHJlc29sdXRpb24gc2VtYW50aWNzCisgICAgICogYWNjb3JkaW5nbHkuICBPdGhlciBzdWJjbGFzc2VzIHNob3VsZCBub3Qgb3ZlcnJpZGUgdGhpcyBtZXRob2QuCisgICAgICogQHNlZSAjcmVzb2x2ZUZpZWxkcworICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHByb3RlY3RlZCBpbnRbXVtdW10gZ2V0RmllbGRSZXNvbHV0aW9uVGFibGUoKSB7CisgICAgICAgIHJldHVybiBEQVRFX1BSRUNFREVOQ0U7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBKdWxpYW4gZGF5IG51bWJlciBvZiBkYXkgYmVmb3JlIHRoZSBmaXJzdCBkYXkgb2YgdGhlCisgICAgICogZ2l2ZW4gbW9udGggaW4gdGhlIGdpdmVuIGV4dGVuZGVkIHllYXIuICBTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZQorICAgICAqIHRoaXMgbWV0aG9kIHRvIGltcGxlbWVudCB0aGVpciBjYWxlbmRhciBzeXN0ZW0uCisgICAgICogQHBhcmFtIGV5ZWFyIHRoZSBleHRlbmRlZCB5ZWFyCisgICAgICogQHBhcmFtIG1vbnRoIHRoZSB6ZXJvLWJhc2VkIG1vbnRoLCBvciAwIGlmIHVzZU1vbnRoIGlzIGZhbHNlCisgICAgICogQHBhcmFtIHVzZU1vbnRoIGlmIGZhbHNlLCBjb21wdXRlIHRoZSBkYXkgYmVmb3JlIHRoZSBmaXJzdCBkYXkgb2YKKyAgICAgKiB0aGUgZ2l2ZW4geWVhciwgb3RoZXJ3aXNlLCBjb21wdXRlIHRoZSBkYXkgYmVmb3JlIHRoZSBmaXJzdCBkYXkgb2YKKyAgICAgKiB0aGUgZ2l2ZW4gbW9udGgKKyAgICAgKiBAcGFyYW0gcmV0dXJuIHRoZSBKdWxpYW4gZGF5IG51bWJlciBvZiB0aGUgZGF5IGJlZm9yZSB0aGUgZmlyc3QKKyAgICAgKiBkYXkgb2YgdGhlIGdpdmVuIG1vbnRoIGFuZCB5ZWFyCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgYWJzdHJhY3QgcHJvdGVjdGVkIGludCBoYW5kbGVDb21wdXRlTW9udGhTdGFydChpbnQgZXllYXIsIGludCBtb250aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gdXNlTW9udGgpOworCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBleHRlbmRlZCB5ZWFyIGRlZmluZWQgYnkgdGhlIGN1cnJlbnQgZmllbGRzLiAgVGhpcyB3aWxsCisgICAgICogdXNlIHRoZSBFWFRFTkRFRF9ZRUFSIGZpZWxkIG9yIHRoZSBZRUFSIGFuZCBzdXByYS15ZWFyIGZpZWxkcyAoc3VjaAorICAgICAqIGFzIEVSQSkgc3BlY2lmaWMgdG8gdGhlIGNhbGVuZGFyIHN5c3RlbSwgZGVwZW5kaW5nIG9uIHdoaWNoIHNldCBvZgorICAgICAqIGZpZWxkcyBpcyBuZXdlci4KKyAgICAgKiBAcmV0dXJuIHRoZSBleHRlbmRlZCB5ZWFyCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgYWJzdHJhY3QgcHJvdGVjdGVkIGludCBoYW5kbGVHZXRFeHRlbmRlZFllYXIoKTsKKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgbnVtYmVyIG9mIGRheXMgaW4gdGhlIGdpdmVuIG1vbnRoIG9mIHRoZSBnaXZlbiBleHRlbmRlZAorICAgICAqIHllYXIgb2YgdGhpcyBjYWxlbmRhciBzeXN0ZW0uICBTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSB0aGlzCisgICAgICogbWV0aG9kIGlmIHRoZXkgY2FuIHByb3ZpZGUgYSBtb3JlIGNvcnJlY3Qgb3IgbW9yZSBlZmZpY2llbnQKKyAgICAgKiBpbXBsZW1lbnRhdGlvbiB0aGFuIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGluIENhbGVuZGFyLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHByb3RlY3RlZCBpbnQgaGFuZGxlR2V0TW9udGhMZW5ndGgoaW50IGV4dGVuZGVkWWVhciwgaW50IG1vbnRoKSB7CisgICAgICAgIHJldHVybiBoYW5kbGVDb21wdXRlTW9udGhTdGFydChleHRlbmRlZFllYXIsIG1vbnRoKzEsIHRydWUpIC0KKyAgICAgICAgICAgICAgIGhhbmRsZUNvbXB1dGVNb250aFN0YXJ0KGV4dGVuZGVkWWVhciwgbW9udGgsIHRydWUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgbnVtYmVyIG9mIGRheXMgaW4gdGhlIGdpdmVuIGV4dGVuZGVkIHllYXIgb2YgdGhpcworICAgICAqIGNhbGVuZGFyIHN5c3RlbS4gIFN1YmNsYXNzZXMgc2hvdWxkIG92ZXJyaWRlIHRoaXMgbWV0aG9kIGlmIHRoZXkgY2FuCisgICAgICogcHJvdmlkZSBhIG1vcmUgY29ycmVjdCBvciBtb3JlIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiB0aGFuIHRoZQorICAgICAqIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gaW4gQ2FsZW5kYXIuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHJvdGVjdGVkIGludCBoYW5kbGVHZXRZZWFyTGVuZ3RoKGludCBleWVhcikgeworICAgICAgICByZXR1cm4gaGFuZGxlQ29tcHV0ZU1vbnRoU3RhcnQoZXllYXIrMSwgMCwgZmFsc2UpIC0KKyAgICAgICAgICAgICAgIGhhbmRsZUNvbXB1dGVNb250aFN0YXJ0KGV5ZWFyLCAwLCBmYWxzZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU3ViY2xhc3NlcyB0aGF0IHVzZSBhZGRpdGlvbmFsIGZpZWxkcyBiZXlvbmQgdGhvc2UgZGVmaW5lZCBpbgorICAgICAqIDxjb2RlPkNhbGVuZGFyPC9jb2RlPiBzaG91bGQgb3ZlcnJpZGUgdGhpcyBtZXRob2QgdG8gcmV0dXJuIGFuCisgICAgICogPGNvZGU+aW50W108L2NvZGU+IGFycmF5IG9mIHRoZSBhcHByb3ByaWF0ZSBsZW5ndGguICBUaGUgbGVuZ3RoCisgICAgICogbXVzdCBiZSBhdCBsZWFzdCA8Y29kZT5CQVNFX0ZJRUxEX0NPVU5UPC9jb2RlPiBhbmQgbm8gbW9yZSB0aGFuCisgICAgICogPGNvZGU+TUFYX0ZJRUxEX0NPVU5UPC9jb2RlPi4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgaW50W10gaGFuZGxlQ3JlYXRlRmllbGRzKCkgeworICAgICAgICByZXR1cm4gbmV3IGludFtCQVNFX0ZJRUxEX0NPVU5UXTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTdWJjbGFzc2VzIG1heSBvdmVycmlkZSB0aGlzLiAgVGhpcyBtZXRob2QgY2FsbHMKKyAgICAgKiBoYW5kbGVHZXRNb250aExlbmd0aCgpIHRvIG9idGFpbiB0aGUgY2FsZW5kYXItc3BlY2lmaWMgbW9udGgKKyAgICAgKiBsZW5ndGguCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHJvdGVjdGVkIGludCBoYW5kbGVDb21wdXRlSnVsaWFuRGF5KGludCBiZXN0RmllbGQpIHsKKworICAgICAgICBib29sZWFuIHVzZU1vbnRoID0gKGJlc3RGaWVsZCA9PSBEQVlfT0ZfTU9OVEggfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZXN0RmllbGQgPT0gV0VFS19PRl9NT05USCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlc3RGaWVsZCA9PSBEQVlfT0ZfV0VFS19JTl9NT05USCk7CisKKyAgICAgICAgaW50IHllYXIgPSBoYW5kbGVHZXRFeHRlbmRlZFllYXIoKTsKKyAgICAgICAgaW50ZXJuYWxTZXQoRVhURU5ERURfWUVBUiwgeWVhcik7CisKKyAgICAgICAgLy8gR2V0IHRoZSBKdWxpYW4gZGF5IG9mIHRoZSBkYXkgQkVGT1JFIHRoZSBzdGFydCBvZiB0aGlzIHllYXIuCisgICAgICAgIC8vIElmIHVzZU1vbnRoIGlzIHRydWUsIGdldCB0aGUgZGF5IGJlZm9yZSB0aGUgc3RhcnQgb2YgdGhlIG1vbnRoLgorICAgICAgICBpbnQganVsaWFuRGF5ID0gaGFuZGxlQ29tcHV0ZU1vbnRoU3RhcnQoeWVhciwgdXNlTW9udGggPyBpbnRlcm5hbEdldChNT05USCkgOiAwLCB1c2VNb250aCk7CisKKyAgICAgICAgaWYgKGJlc3RGaWVsZCA9PSBEQVlfT0ZfTU9OVEgpIHsKKyAgICAgICAgICAgIHJldHVybiBqdWxpYW5EYXkgKyBpbnRlcm5hbEdldChEQVlfT0ZfTU9OVEgsIDEpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGJlc3RGaWVsZCA9PSBEQVlfT0ZfWUVBUikgeworICAgICAgICAgICAgcmV0dXJuIGp1bGlhbkRheSArIGludGVybmFsR2V0KERBWV9PRl9ZRUFSKTsKKyAgICAgICAgfQorCisgICAgICAgIGludCBmaXJzdERheU9mV2VlayA9IGdldEZpcnN0RGF5T2ZXZWVrKCk7IC8vIExvY2FsaXplZCBmZHcKKworICAgICAgICAvLyBBdCB0aGlzIHBvaW50IGp1bGlhbkRheSBpcyB0aGUgMC1iYXNlZCBkYXkgQkVGT1JFIHRoZSBmaXJzdCBkYXkgb2YKKyAgICAgICAgLy8gSmFudWFyeSAxLCB5ZWFyIDEgb2YgdGhlIGdpdmVuIGNhbGVuZGFyLiAgSWYganVsaWFuRGF5ID09IDAsIGl0CisgICAgICAgIC8vIHNwZWNpZmllcyAoSmFuLiAxLCAxKSAtIDEsIGluIHdoYXRldmVyIGNhbGVuZGFyIHdlIGFyZSB1c2luZyAoSnVsaWFuCisgICAgICAgIC8vIG9yIEdyZWdvcmlhbikuCisKKyAgICAgICAgLy8gQXQgdGhpcyBwb2ludCB3ZSBuZWVkIHRvIHByb2Nlc3MgdGhlIFdFRUtfT0ZfTU9OVEggb3IKKyAgICAgICAgLy8gV0VFS19PRl9ZRUFSLCB3aGljaCBhcmUgc2ltaWxhciwgb3IgdGhlIERBWV9PRl9XRUVLX0lOX01PTlRILgorICAgICAgICAvLyBGaXJzdCwgcGVyZm9ybSBpbml0aWFsIHNoYXJlZCBjb21wdXRhdGlvbnMuICBUaGVzZSBsb2NhdGUgdGhlCisgICAgICAgIC8vIGZpcnN0IHdlZWsgb2YgdGhlIHBlcmlvZC4KKworICAgICAgICAvLyBHZXQgdGhlIDAtYmFzZWQgbG9jYWxpemVkIERPVyBvZiBkYXkgb25lIG9mIHRoZSBtb250aCBvciB5ZWFyLgorICAgICAgICAvLyBWYWxpZCByYW5nZSAwLi42LgorICAgICAgICBpbnQgZmlyc3QgPSBqdWxpYW5EYXlUb0RheU9mV2VlayhqdWxpYW5EYXkgKyAxKSAtIGZpcnN0RGF5T2ZXZWVrOworICAgICAgICBpZiAoZmlyc3QgPCAwKSB7CisgICAgICAgICAgICBmaXJzdCArPSA3OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBHZXQgemVyby1iYXNlZCBsb2NhbGl6ZWQgRE9XLCB2YWxpZCByYW5nZSAwLi42LiAgVGhpcyBpcyB0aGUgRE9XCisgICAgICAgIC8vIHdlIGFyZSBsb29raW5nIGZvci4KKyAgICAgICAgaW50IGRvd0xvY2FsID0gMDsKKyAgICAgICAgc3dpdGNoIChyZXNvbHZlRmllbGRzKERPV19QUkVDRURFTkNFKSkgeworICAgICAgICBjYXNlIERBWV9PRl9XRUVLOgorICAgICAgICAgICAgZG93TG9jYWwgPSBpbnRlcm5hbEdldChEQVlfT0ZfV0VFSykgLSBmaXJzdERheU9mV2VlazsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERPV19MT0NBTDoKKyAgICAgICAgICAgIGRvd0xvY2FsID0gaW50ZXJuYWxHZXQoRE9XX0xPQ0FMKSAtIDE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBkb3dMb2NhbCA9IGRvd0xvY2FsICUgNzsKKyAgICAgICAgaWYgKGRvd0xvY2FsIDwgMCkgeworICAgICAgICAgICAgZG93TG9jYWwgKz0gNzsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZpbmQgdGhlIGZpcnN0IHRhcmdldCBET1cgKGRvd0xvY2FsKSBpbiB0aGUgbW9udGggb3IgeWVhci4KKyAgICAgICAgLy8gQWN0dWFsbHksIGl0IG1heSBiZSBqdXN0IGJlZm9yZSB0aGUgZmlyc3Qgb2YgdGhlIG1vbnRoIG9yIHllYXIuCisgICAgICAgIC8vIEl0IHdpbGwgYmUgYW4gaW50ZWdlciBmcm9tIC01Li43LgorICAgICAgICBpbnQgZGF0ZSA9IDEgLSBmaXJzdCArIGRvd0xvY2FsOworCisgICAgICAgIGlmIChiZXN0RmllbGQgPT0gREFZX09GX1dFRUtfSU5fTU9OVEgpIHsKKworICAgICAgICAgICAgLy8gQWRqdXN0IHRoZSB0YXJnZXQgRE9XIHRvIGJlIGluIHRoZSBtb250aCBvciB5ZWFyLgorICAgICAgICAgICAgaWYgKGRhdGUgPCAxKSB7CisgICAgICAgICAgICAgICAgZGF0ZSArPSA3OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgb25seSB0cmlja2luZXNzIG9jY3VycyBpZiB0aGUgZGF5LW9mLXdlZWstaW4tbW9udGggaXMKKyAgICAgICAgICAgIC8vIG5lZ2F0aXZlLgorICAgICAgICAgICAgaW50IGRpbSA9IGludGVybmFsR2V0KERBWV9PRl9XRUVLX0lOX01PTlRILCAxKTsKKyAgICAgICAgICAgIGlmIChkaW0gPj0gMCkgeworICAgICAgICAgICAgICAgIGRhdGUgKz0gNyooZGltIC0gMSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIE1vdmUgZGF0ZSB0byB0aGUgbGFzdCBvZiB0aGlzIGRheS1vZi13ZWVrIGluIHRoaXMgbW9udGgsCisgICAgICAgICAgICAgICAgLy8gdGhlbiBiYWNrIHVwIGFzIG5lZWRlZC4gIElmIGRpbT09LTEsIHdlIGRvbid0IGJhY2sgdXAgYXQKKyAgICAgICAgICAgICAgICAvLyBhbGwuICBJZiBkaW09PS0yLCB3ZSBiYWNrIHVwIG9uY2UsIGV0Yy4gIERvbid0IGJhY2sgdXAKKyAgICAgICAgICAgICAgICAvLyBwYXN0IHRoZSBmaXJzdCBvZiB0aGUgZ2l2ZW4gZGF5LW9mLXdlZWsgaW4gdGhpcyBtb250aC4KKyAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgd2UgaGFuZGxlIC0yLCAtMywgZXRjLiBjb3JyZWN0bHksIGV2ZW4gdGhvdWdoCisgICAgICAgICAgICAgICAgLy8gdmFsdWVzIDwgLTEgYXJlIHRlY2huaWNhbGx5IGRpc2FsbG93ZWQuCisgICAgICAgICAgICAgICAgaW50IG0gPSBpbnRlcm5hbEdldChNT05USCwgSkFOVUFSWSk7CisgICAgICAgICAgICAgICAgaW50IG1vbnRoTGVuZ3RoID0gaGFuZGxlR2V0TW9udGhMZW5ndGgoeWVhciwgbSk7CisgICAgICAgICAgICAgICAgZGF0ZSArPSAoKG1vbnRoTGVuZ3RoIC0gZGF0ZSkgLyA3ICsgZGltICsgMSkgKiA3OworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gYXNzZXJ0KGJlc3RGaWVsZCA9PSBXRUVLX09GX01PTlRIIHx8IGJlc3RGaWVsZCA9PSBXRUVLX09GX1lFQVIpCisKKyAgICAgICAgICAgIC8vIEFkanVzdCBmb3IgbWluaW1hbCBkYXlzIGluIGZpcnN0IHdlZWsKKyAgICAgICAgICAgIGlmICgoNyAtIGZpcnN0KSA8IGdldE1pbmltYWxEYXlzSW5GaXJzdFdlZWsoKSkgeworICAgICAgICAgICAgICAgIGRhdGUgKz0gNzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gTm93IGFkanVzdCBmb3IgdGhlIHdlZWsgbnVtYmVyLgorICAgICAgICAgICAgZGF0ZSArPSA3ICogKGludGVybmFsR2V0KGJlc3RGaWVsZCkgLSAxKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBqdWxpYW5EYXkgKyBkYXRlOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbXB1dGUgdGhlIEp1bGlhbiBkYXkgb2YgYSBtb250aCBvZiB0aGUgR3JlZ29yaWFuIGNhbGVuZGFyLgorICAgICAqIFN1YmNsYXNzZXMgbWF5IGNhbGwgdGhpcyBtZXRob2QgdG8gcGVyZm9ybSBhIEdyZWdvcmlhbiBjYWxlbmRhcgorICAgICAqIGZpZWxkcy0+bWlsbGlzIGNvbXB1dGF0aW9uLiAgVG8gcGVyZm9ybSBhIEdyZWdvcmlhbiBjYWxlbmRhcgorICAgICAqIG1pbGxpcy0+ZmllbGRzIGNvbXB1dGF0aW9uLCBjYWxsIGNvbXB1dGVHcmVnb3JpYW5GaWVsZHMoKS4KKyAgICAgKiBAcGFyYW0geWVhciBleHRlbmRlZCBHcmVnb3JpYW4geWVhcgorICAgICAqIEBwYXJhbSBtb250aCB6ZXJvLWJhc2VkIEdyZWdvcmlhbiBtb250aAorICAgICAqIEByZXR1cm4gdGhlIEp1bGlhbiBkYXkgbnVtYmVyIG9mIHRoZSBkYXkgYmVmb3JlIHRoZSBmaXJzdAorICAgICAqIGRheSBvZiB0aGUgZ2l2ZW4gbW9udGggaW4gdGhlIGdpdmVuIGV4dGVuZGVkIHllYXIKKyAgICAgKiBAc2VlICNjb21wdXRlR3JlZ29yaWFuRmllbGRzCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHJvdGVjdGVkIGludCBjb21wdXRlR3JlZ29yaWFuTW9udGhTdGFydChpbnQgeWVhciwgaW50IG1vbnRoKSB7CisKKyAgICAgICAgLy8gSWYgdGhlIG1vbnRoIGlzIG91dCBvZiByYW5nZSwgYWRqdXN0IGl0IGludG8gcmFuZ2UsIGFuZAorICAgICAgICAvLyBtb2RpZnkgdGhlIGV4dGVuZGVkIHllYXIgdmFsdWUgYWNjb3JkaW5nbHkuCisgICAgICAgIGlmIChtb250aCA8IDAgfHwgbW9udGggPiAxMSkgeworICAgICAgICAgICAgaW50W10gcmVtID0gbmV3IGludFsxXTsKKyAgICAgICAgICAgIHllYXIgKz0gZmxvb3JEaXZpZGUobW9udGgsIDEyLCByZW0pOworICAgICAgICAgICAgbW9udGggPSByZW1bMF07CisgICAgICAgIH0KKworICAgICAgICBib29sZWFuIGlzTGVhcCA9ICh5ZWFyJTQgPT0gMCkgJiYgKCh5ZWFyJTEwMCAhPSAwKSB8fCAoeWVhciU0MDAgPT0gMCkpOworICAgICAgICBpbnQgeSA9IHllYXIgLSAxOworICAgICAgICAvLyBUaGlzIGNvbXB1dGF0aW9uIGlzIGFjdHVhbGx5IC4uLiArIChKQU5fMV8xX0pVTElBTl9EQVkgLSAzKSArIDIuCisgICAgICAgIC8vIEFkZCAyIGJlY2F1c2UgR3JlZ29yaWFuIGNhbGVuZGFyIHN0YXJ0cyAyIGRheXMgYWZ0ZXIgSnVsaWFuCisgICAgICAgIC8vIGNhbGVuZGFyLgorICAgICAgICBpbnQganVsaWFuRGF5ID0gMzY1KnkgKyBmbG9vckRpdmlkZSh5LCA0KSAtIGZsb29yRGl2aWRlKHksIDEwMCkgKworICAgICAgICAgICAgZmxvb3JEaXZpZGUoeSwgNDAwKSArIEpBTl8xXzFfSlVMSUFOX0RBWSAtIDE7CisKKyAgICAgICAgLy8gQXQgdGhpcyBwb2ludCBqdWxpYW5EYXkgaW5kaWNhdGVzIHRoZSBkYXkgQkVGT1JFIHRoZSBmaXJzdCBkYXkKKyAgICAgICAgLy8gb2YgSmFudWFyeSAxLCA8ZXllYXI+IG9mIHRoZSBHcmVnb3JpYW4gY2FsZW5kYXIuCisgICAgICAgIGlmIChtb250aCAhPSAwKSB7CisgICAgICAgICAgICBqdWxpYW5EYXkgKz0gR1JFR09SSUFOX01PTlRIX0NPVU5UW21vbnRoXVtpc0xlYXA/MzoyXTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBqdWxpYW5EYXk7CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gU3ViY2xhc3MgQVBJCisgICAgLy8gRm9yIHN1YmNsYXNzZXMgdG8gb3ZlcnJpZGUKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIFN1YmNsYXNzZXMgbWF5IG92ZXJyaWRlIHRoaXMgbWV0aG9kIHRvIGNvbXB1dGUgc2V2ZXJhbCBmaWVsZHMKKyAgICAgKiBzcGVjaWZpYyB0byBlYWNoIGNhbGVuZGFyIHN5c3RlbS4gIFRoZXNlIGFyZToKKyAgICAgKgorICAgICAqIDx1bD48bGk+RVJBCisgICAgICogPGxpPllFQVIKKyAgICAgKiA8bGk+TU9OVEgKKyAgICAgKiA8bGk+REFZX09GX01PTlRICisgICAgICogPGxpPkRBWV9PRl9ZRUFSCisgICAgICogPGxpPkVYVEVOREVEX1lFQVI8L3VsPgorICAgICAqIAorICAgICAqIFN1YmNsYXNzZXMgY2FuIHJlZmVyIHRvIHRoZSBEQVlfT0ZfV0VFSyBhbmQgRE9XX0xPQ0FMIGZpZWxkcywgd2hpY2gKKyAgICAgKiB3aWxsIGJlIHNldCB3aGVuIHRoaXMgbWV0aG9kIGlzIGNhbGxlZC4gIFN1YmNsYXNzZXMgY2FuIGFsc28gY2FsbAorICAgICAqIHRoZSBnZXRHcmVnb3JpYW5YeHgoKSBtZXRob2RzIHRvIG9idGFpbiBHcmVnb3JpYW4gY2FsZW5kYXIKKyAgICAgKiBlcXVpdmFsZW50cyBmb3IgdGhlIGdpdmVuIEp1bGlhbiBkYXkuCisgICAgICoKKyAgICAgKiA8cD5JbiBhZGRpdGlvbiwgc3ViY2xhc3NlcyBzaG91bGQgY29tcHV0ZSBhbnkgc3ViY2xhc3Mtc3BlY2lmaWMKKyAgICAgKiBmaWVsZHMsIHRoYXQgaXMsIGZpZWxkcyBmcm9tIEJBU0VfRklFTERfQ09VTlQgdG8KKyAgICAgKiBnZXRGaWVsZENvdW50KCkgLSAxLgorICAgICAqCisgICAgICogPHA+VGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gaW4gPGNvZGU+Q2FsZW5kYXI8L2NvZGU+IGltcGxlbWVudHMKKyAgICAgKiBhIHB1cmUgcHJvbGVwdGljIEdyZWdvcmlhbiBjYWxlbmRhci4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVDb21wdXRlRmllbGRzKGludCBqdWxpYW5EYXkpIHsKKyAgICAgICAgaW50ZXJuYWxTZXQoTU9OVEgsIGdldEdyZWdvcmlhbk1vbnRoKCkpOworICAgICAgICBpbnRlcm5hbFNldChEQVlfT0ZfTU9OVEgsIGdldEdyZWdvcmlhbkRheU9mTW9udGgoKSk7CisgICAgICAgIGludGVybmFsU2V0KERBWV9PRl9ZRUFSLCBnZXRHcmVnb3JpYW5EYXlPZlllYXIoKSk7CisgICAgICAgIGludCBleWVhciA9IGdldEdyZWdvcmlhblllYXIoKTsKKyAgICAgICAgaW50ZXJuYWxTZXQoRVhURU5ERURfWUVBUiwgZXllYXIpOworICAgICAgICBpbnQgZXJhID0gR3JlZ29yaWFuQ2FsZW5kYXIuQUQ7CisgICAgICAgIGlmIChleWVhciA8IDEpIHsKKyAgICAgICAgICAgIGVyYSA9IEdyZWdvcmlhbkNhbGVuZGFyLkJDOworICAgICAgICAgICAgZXllYXIgPSAxIC0gZXllYXI7CisgICAgICAgIH0KKyAgICAgICAgaW50ZXJuYWxTZXQoRVJBLCBlcmEpOworICAgICAgICBpbnRlcm5hbFNldChZRUFSLCBleWVhcik7CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gU3ViY2xhc3MgQVBJCisgICAgLy8gRm9yIHN1YmNsYXNzZXMgdG8gY2FsbAorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBleHRlbmRlZCB5ZWFyIG9uIHRoZSBHcmVnb3JpYW4gY2FsZW5kYXIgYXMgY29tcHV0ZWQgYnkKKyAgICAgKiA8Y29kZT5jb21wdXRlR3JlZ29yaWFuRmllbGRzKCk8L2NvZGU+LgorICAgICAqIEBzZWUgI2NvbXB1dGVHcmVnb3JpYW5GaWVsZHMKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgZmluYWwgaW50IGdldEdyZWdvcmlhblllYXIoKSB7CisgICAgICAgIHJldHVybiBncmVnb3JpYW5ZZWFyOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgbW9udGggKDAtYmFzZWQpIG9uIHRoZSBHcmVnb3JpYW4gY2FsZW5kYXIgYXMgY29tcHV0ZWQgYnkKKyAgICAgKiA8Y29kZT5jb21wdXRlR3JlZ29yaWFuRmllbGRzKCk8L2NvZGU+LgorICAgICAqIEBzZWUgI2NvbXB1dGVHcmVnb3JpYW5GaWVsZHMKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgZmluYWwgaW50IGdldEdyZWdvcmlhbk1vbnRoKCkgeworICAgICAgICByZXR1cm4gZ3JlZ29yaWFuTW9udGg7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBkYXkgb2YgeWVhciAoMS1iYXNlZCkgb24gdGhlIEdyZWdvcmlhbiBjYWxlbmRhciBhcworICAgICAqIGNvbXB1dGVkIGJ5IDxjb2RlPmNvbXB1dGVHcmVnb3JpYW5GaWVsZHMoKTwvY29kZT4uCisgICAgICogQHNlZSAjY29tcHV0ZUdyZWdvcmlhbkZpZWxkcworICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHByb3RlY3RlZCBmaW5hbCBpbnQgZ2V0R3JlZ29yaWFuRGF5T2ZZZWFyKCkgeworICAgICAgICByZXR1cm4gZ3JlZ29yaWFuRGF5T2ZZZWFyOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgZGF5IG9mIG1vbnRoICgxLWJhc2VkKSBvbiB0aGUgR3JlZ29yaWFuIGNhbGVuZGFyIGFzCisgICAgICogY29tcHV0ZWQgYnkgPGNvZGU+Y29tcHV0ZUdyZWdvcmlhbkZpZWxkcygpPC9jb2RlPi4KKyAgICAgKiBAc2VlICNjb21wdXRlR3JlZ29yaWFuRmllbGRzCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHJvdGVjdGVkIGZpbmFsIGludCBnZXRHcmVnb3JpYW5EYXlPZk1vbnRoKCkgeworICAgICAgICByZXR1cm4gZ3JlZ29yaWFuRGF5T2ZNb250aDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIG51bWJlciBvZiBmaWVsZHMgZGVmaW5lZCBieSB0aGlzIGNhbGVuZGFyLiAgVmFsaWQgZmllbGQKKyAgICAgKiBhcmd1bWVudHMgdG8gPGNvZGU+c2V0KCk8L2NvZGU+IGFuZCA8Y29kZT5nZXQoKTwvY29kZT4gYXJlCisgICAgICogPGNvZGU+MC4uZ2V0RmllbGRDb3VudCgpLTE8L2NvZGU+LgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBpbnQgZ2V0RmllbGRDb3VudCgpIHsKKyAgICAgICAgcmV0dXJuIGZpZWxkcy5sZW5ndGg7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0IGEgZmllbGQgdG8gYSB2YWx1ZS4gIFN1YmNsYXNzZXMgc2hvdWxkIHVzZSB0aGlzIG1ldGhvZCB3aGVuCisgICAgICogY29tcHV0aW5nIGZpZWxkcy4gIEl0IHNldHMgdGhlIHRpbWUgc3RhbXAgaW4gdGhlCisgICAgICogPGNvZGU+c3RhbXBbXTwvY29kZT4gYXJyYXkgdG8gPGNvZGU+SU5URVJOQUxMWV9TRVQ8L2NvZGU+LiAgSWYgYQorICAgICAqIGZpZWxkIHRoYXQgbWF5IG5vdCBiZSBzZXQgYnkgc3ViY2xhc3NlcyBpcyBwYXNzZWQgaW4sIGFuCisgICAgICogPGNvZGU+SWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uPC9jb2RlPiBpcyB0aHJvd24uICBUaGlzIHByZXZlbnRzCisgICAgICogc3ViY2xhc3NlcyBmcm9tIG1vZGlmeWluZyBmaWVsZHMgdGhhdCBhcmUgaW50ZW5kZWQgdG8gYmUKKyAgICAgKiBjYWxlbmRhci1zeXN0ZW0gaW52YXJpYW50LgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHByb3RlY3RlZCBmaW5hbCB2b2lkIGludGVybmFsU2V0KGludCBmaWVsZCwgaW50IHZhbHVlKSB7CisgICAgICAgIGlmICgoKDEgPDwgZmllbGQpICYgaW50ZXJuYWxTZXRNYXNrKSA9PSAwKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcigiU3ViY2xhc3MgY2Fubm90IHNldCAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGROYW1lKGZpZWxkKSk7CisgICAgICAgIH0KKyAgICAgICAgZmllbGRzW2ZpZWxkXSA9IHZhbHVlOworICAgICAgICBzdGFtcFtmaWVsZF0gPSBJTlRFUk5BTExZX1NFVDsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnRbXVtdIEdSRUdPUklBTl9NT05USF9DT1VOVCA9IHsKKyAgICAgICAgLy9sZW4gbGVuMiAgIHN0ICBzdDIKKyAgICAgICAgeyAgMzEsICAzMSwgICAwLCAgIDAgfSwgLy8gSmFuCisgICAgICAgIHsgIDI4LCAgMjksICAzMSwgIDMxIH0sIC8vIEZlYgorICAgICAgICB7ICAzMSwgIDMxLCAgNTksICA2MCB9LCAvLyBNYXIKKyAgICAgICAgeyAgMzAsICAzMCwgIDkwLCAgOTEgfSwgLy8gQXByCisgICAgICAgIHsgIDMxLCAgMzEsIDEyMCwgMTIxIH0sIC8vIE1heQorICAgICAgICB7ICAzMCwgIDMwLCAxNTEsIDE1MiB9LCAvLyBKdW4KKyAgICAgICAgeyAgMzEsICAzMSwgMTgxLCAxODIgfSwgLy8gSnVsCisgICAgICAgIHsgIDMxLCAgMzEsIDIxMiwgMjEzIH0sIC8vIEF1ZworICAgICAgICB7ICAzMCwgIDMwLCAyNDMsIDI0NCB9LCAvLyBTZXAKKyAgICAgICAgeyAgMzEsICAzMSwgMjczLCAyNzQgfSwgLy8gT2N0CisgICAgICAgIHsgIDMwLCAgMzAsIDMwNCwgMzA1IH0sIC8vIE5vdgorICAgICAgICB7ICAzMSwgIDMxLCAzMzQsIDMzNSB9ICAvLyBEZWMKKyAgICAgICAgLy8gbGVuICBsZW5ndGggb2YgbW9udGgKKyAgICAgICAgLy8gbGVuMiBsZW5ndGggb2YgbW9udGggaW4gYSBsZWFwIHllYXIKKyAgICAgICAgLy8gc3QgICBkYXlzIGluIHllYXIgYmVmb3JlIHN0YXJ0IG9mIG1vbnRoCisgICAgICAgIC8vIHN0MiAgZGF5cyBpbiB5ZWFyIGJlZm9yZSBtb250aCBpbiBsZWFwIHllYXIKKyAgICB9OworCisgICAgLyoqCisgICAgICogRGV0ZXJtaW5lcyBpZiB0aGUgZ2l2ZW4geWVhciBpcyBhIGxlYXAgeWVhci4gUmV0dXJucyB0cnVlIGlmIHRoZQorICAgICAqIGdpdmVuIHllYXIgaXMgYSBsZWFwIHllYXIuCisgICAgICogQHBhcmFtIHllYXIgdGhlIGdpdmVuIHllYXIuCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSBnaXZlbiB5ZWFyIGlzIGEgbGVhcCB5ZWFyOyBmYWxzZSBvdGhlcndpc2UuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBib29sZWFuIGlzR3JlZ29yaWFuTGVhcFllYXIoaW50IHllYXIpIHsKKyAgICAgICAgcmV0dXJuICh5ZWFyJTQgPT0gMCkgJiYgKCh5ZWFyJTEwMCAhPSAwKSB8fCAoeWVhciU0MDAgPT0gMCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgbGVuZ3RoIG9mIGEgbW9udGggb2YgdGhlIEdyZWdvcmlhbiBjYWxlbmRhci4KKyAgICAgKiBAcGFyYW0geSB0aGUgZXh0ZW5kZWQgeWVhcgorICAgICAqIEBwYXJhbSBtIHRoZSAwLWJhc2VkIG1vbnRoIG51bWJlcgorICAgICAqIEByZXR1cm4gdGhlIG51bWJlciBvZiBkYXlzIGluIHRoZSBnaXZlbiBtb250aAorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IGdyZWdvcmlhbk1vbnRoTGVuZ3RoKGludCB5LCBpbnQgbSkgeworICAgICAgICByZXR1cm4gR1JFR09SSUFOX01PTlRIX0NPVU5UW21dW2lzR3JlZ29yaWFuTGVhcFllYXIoeSk/MTowXTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGxlbmd0aCBvZiBhIHByZXZpb3VzIG1vbnRoIG9mIHRoZSBHcmVnb3JpYW4gY2FsZW5kYXIuCisgICAgICogQHBhcmFtIHkgdGhlIGV4dGVuZGVkIHllYXIKKyAgICAgKiBAcGFyYW0gbSB0aGUgMC1iYXNlZCBtb250aCBudW1iZXIKKyAgICAgKiBAcmV0dXJuIHRoZSBudW1iZXIgb2YgZGF5cyBpbiB0aGUgbW9udGggcHJldmlvdXMgdG8gdGhlIGdpdmVuIG1vbnRoCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgZ3JlZ29yaWFuUHJldmlvdXNNb250aExlbmd0aChpbnQgeSwgaW50IG0pIHsKKyAgICAgICAgcmV0dXJuIChtID4gMCkgPyBncmVnb3JpYW5Nb250aExlbmd0aCh5LCBtLTEpIDogMzE7CisgICAgfQorCisgICAgLyoqCisgICAgICogRGl2aWRlIHR3byBsb25nIGludGVnZXJzLCByZXR1cm5pbmcgdGhlIGZsb29yIG9mIHRoZSBxdW90aWVudC4KKyAgICAgKiA8cD4KKyAgICAgKiBVbmxpa2UgdGhlIGJ1aWx0LWluIGRpdmlzaW9uLCB0aGlzIGlzIG1hdGhlbWF0aWNhbGx5IHdlbGwtYmVoYXZlZC4KKyAgICAgKiBFLmcuLCA8Y29kZT4tMS80PC9jb2RlPiA9PiAwCisgICAgICogYnV0IDxjb2RlPmZsb29yRGl2aWRlKC0xLDQpPC9jb2RlPiA9PiAtMS4KKyAgICAgKiBAcGFyYW0gbnVtZXJhdG9yIHRoZSBudW1lcmF0b3IKKyAgICAgKiBAcGFyYW0gZGVub21pbmF0b3IgYSBkaXZpc29yIHdoaWNoIG11c3QgYmUgPiAwCisgICAgICogQHJldHVybiB0aGUgZmxvb3Igb2YgdGhlIHF1b3RpZW50LgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgbG9uZyBmbG9vckRpdmlkZShsb25nIG51bWVyYXRvciwgbG9uZyBkZW5vbWluYXRvcikgeworICAgICAgICAvLyBXZSBkbyB0aGlzIGNvbXB1dGF0aW9uIGluIG9yZGVyIHRvIGhhbmRsZQorICAgICAgICAvLyBhIG51bWVyYXRvciBvZiBMb25nLk1JTl9WQUxVRSBjb3JyZWN0bHkKKyAgICAgICAgcmV0dXJuIChudW1lcmF0b3IgPj0gMCkgPworICAgICAgICAgICAgbnVtZXJhdG9yIC8gZGVub21pbmF0b3IgOgorICAgICAgICAgICAgKChudW1lcmF0b3IgKyAxKSAvIGRlbm9taW5hdG9yKSAtIDE7CisgICAgfQorCisgICAgLyoqCisgICAgICogRGl2aWRlIHR3byBpbnRlZ2VycywgcmV0dXJuaW5nIHRoZSBmbG9vciBvZiB0aGUgcXVvdGllbnQuCisgICAgICogPHA+CisgICAgICogVW5saWtlIHRoZSBidWlsdC1pbiBkaXZpc2lvbiwgdGhpcyBpcyBtYXRoZW1hdGljYWxseSB3ZWxsLWJlaGF2ZWQuCisgICAgICogRS5nLiwgPGNvZGU+LTEvNDwvY29kZT4gPT4gMAorICAgICAqIGJ1dCA8Y29kZT5mbG9vckRpdmlkZSgtMSw0KTwvY29kZT4gPT4gLTEuCisgICAgICogQHBhcmFtIG51bWVyYXRvciB0aGUgbnVtZXJhdG9yCisgICAgICogQHBhcmFtIGRlbm9taW5hdG9yIGEgZGl2aXNvciB3aGljaCBtdXN0IGJlID4gMAorICAgICAqIEByZXR1cm4gdGhlIGZsb29yIG9mIHRoZSBxdW90aWVudC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBmbG9vckRpdmlkZShpbnQgbnVtZXJhdG9yLCBpbnQgZGVub21pbmF0b3IpIHsKKyAgICAgICAgLy8gV2UgZG8gdGhpcyBjb21wdXRhdGlvbiBpbiBvcmRlciB0byBoYW5kbGUKKyAgICAgICAgLy8gYSBudW1lcmF0b3Igb2YgSW50ZWdlci5NSU5fVkFMVUUgY29ycmVjdGx5CisgICAgICAgIHJldHVybiAobnVtZXJhdG9yID49IDApID8KKyAgICAgICAgICAgIG51bWVyYXRvciAvIGRlbm9taW5hdG9yIDoKKyAgICAgICAgICAgICgobnVtZXJhdG9yICsgMSkgLyBkZW5vbWluYXRvcikgLSAxOworICAgIH0KKworICAgIC8qKgorICAgICAqIERpdmlkZSB0d28gaW50ZWdlcnMsIHJldHVybmluZyB0aGUgZmxvb3Igb2YgdGhlIHF1b3RpZW50LCBhbmQKKyAgICAgKiB0aGUgbW9kdWx1cyByZW1haW5kZXIuCisgICAgICogPHA+CisgICAgICogVW5saWtlIHRoZSBidWlsdC1pbiBkaXZpc2lvbiwgdGhpcyBpcyBtYXRoZW1hdGljYWxseSB3ZWxsLWJlaGF2ZWQuCisgICAgICogRS5nLiwgPGNvZGU+LTEvNDwvY29kZT4gPT4gMCBhbmQgPGNvZGU+LTElNDwvY29kZT4gPT4gLTEsCisgICAgICogYnV0IDxjb2RlPmZsb29yRGl2aWRlKC0xLDQpPC9jb2RlPiA9PiAtMSB3aXRoIDxjb2RlPnJlbWFpbmRlclswXTwvY29kZT4gPT4gMy4KKyAgICAgKiBAcGFyYW0gbnVtZXJhdG9yIHRoZSBudW1lcmF0b3IKKyAgICAgKiBAcGFyYW0gZGVub21pbmF0b3IgYSBkaXZpc29yIHdoaWNoIG11c3QgYmUgPiAwCisgICAgICogQHBhcmFtIHJlbWFpbmRlciBhbiBhcnJheSBvZiBhdCBsZWFzdCBvbmUgZWxlbWVudCBpbiB3aGljaCB0aGUgdmFsdWUKKyAgICAgKiA8Y29kZT5udW1lcmF0b3IgbW9kIGRlbm9taW5hdG9yPC9jb2RlPiBpcyByZXR1cm5lZC4gVW5saWtlIDxjb2RlPm51bWVyYXRvcgorICAgICAqICUgZGVub21pbmF0b3I8L2NvZGU+LCB0aGlzIHdpbGwgYWx3YXlzIGJlIG5vbi1uZWdhdGl2ZS4KKyAgICAgKiBAcmV0dXJuIHRoZSBmbG9vciBvZiB0aGUgcXVvdGllbnQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgZmxvb3JEaXZpZGUoaW50IG51bWVyYXRvciwgaW50IGRlbm9taW5hdG9yLCBpbnRbXSByZW1haW5kZXIpIHsKKyAgICAgICAgaWYgKG51bWVyYXRvciA+PSAwKSB7CisgICAgICAgICAgICByZW1haW5kZXJbMF0gPSBudW1lcmF0b3IgJSBkZW5vbWluYXRvcjsKKyAgICAgICAgICAgIHJldHVybiBudW1lcmF0b3IgLyBkZW5vbWluYXRvcjsKKyAgICAgICAgfQorCWludCBxdW90aWVudCA9ICgobnVtZXJhdG9yICsgMSkgLyBkZW5vbWluYXRvcikgLSAxOworICAgICAgICByZW1haW5kZXJbMF0gPSBudW1lcmF0b3IgLSAocXVvdGllbnQgKiBkZW5vbWluYXRvcik7CisgICAgICAgIHJldHVybiBxdW90aWVudDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEaXZpZGUgdHdvIGludGVnZXJzLCByZXR1cm5pbmcgdGhlIGZsb29yIG9mIHRoZSBxdW90aWVudCwgYW5kCisgICAgICogdGhlIG1vZHVsdXMgcmVtYWluZGVyLgorICAgICAqIDxwPgorICAgICAqIFVubGlrZSB0aGUgYnVpbHQtaW4gZGl2aXNpb24sIHRoaXMgaXMgbWF0aGVtYXRpY2FsbHkgd2VsbC1iZWhhdmVkLgorICAgICAqIEUuZy4sIDxjb2RlPi0xLzQ8L2NvZGU+ID0+IDAgYW5kIDxjb2RlPi0xJTQ8L2NvZGU+ID0+IC0xLAorICAgICAqIGJ1dCA8Y29kZT5mbG9vckRpdmlkZSgtMSw0KTwvY29kZT4gPT4gLTEgd2l0aCA8Y29kZT5yZW1haW5kZXJbMF08L2NvZGU+ID0+IDMuCisgICAgICogQHBhcmFtIG51bWVyYXRvciB0aGUgbnVtZXJhdG9yCisgICAgICogQHBhcmFtIGRlbm9taW5hdG9yIGEgZGl2aXNvciB3aGljaCBtdXN0IGJlID4gMAorICAgICAqIEBwYXJhbSByZW1haW5kZXIgYW4gYXJyYXkgb2YgYXQgbGVhc3Qgb25lIGVsZW1lbnQgaW4gd2hpY2ggdGhlIHZhbHVlCisgICAgICogPGNvZGU+bnVtZXJhdG9yIG1vZCBkZW5vbWluYXRvcjwvY29kZT4gaXMgcmV0dXJuZWQuIFVubGlrZSA8Y29kZT5udW1lcmF0b3IKKyAgICAgKiAlIGRlbm9taW5hdG9yPC9jb2RlPiwgdGhpcyB3aWxsIGFsd2F5cyBiZSBub24tbmVnYXRpdmUuCisgICAgICogQHJldHVybiB0aGUgZmxvb3Igb2YgdGhlIHF1b3RpZW50LgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IGZsb29yRGl2aWRlKGxvbmcgbnVtZXJhdG9yLCBpbnQgZGVub21pbmF0b3IsIGludFtdIHJlbWFpbmRlcikgeworICAgICAgICBpZiAobnVtZXJhdG9yID49IDApIHsKKyAgICAgICAgICAgIHJlbWFpbmRlclswXSA9IChpbnQpKG51bWVyYXRvciAlIGRlbm9taW5hdG9yKTsKKyAgICAgICAgICAgIHJldHVybiAoaW50KShudW1lcmF0b3IgLyBkZW5vbWluYXRvcik7CisgICAgICAgIH0KKyAgICAgICAgaW50IHF1b3RpZW50ID0gKGludCkoKChudW1lcmF0b3IgKyAxKSAvIGRlbm9taW5hdG9yKSAtIDEpOworICAgICAgICByZW1haW5kZXJbMF0gPSAoaW50KShudW1lcmF0b3IgLSAocXVvdGllbnQgKiBkZW5vbWluYXRvcikpOworICAgICAgICByZXR1cm4gcXVvdGllbnQ7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nW10gRklFTERfTkFNRSA9IHsKKyAgICAgICAgIkVSQSIsICJZRUFSIiwgIk1PTlRIIiwgIldFRUtfT0ZfWUVBUiIsICJXRUVLX09GX01PTlRIIiwKKyAgICAgICAgIkRBWV9PRl9NT05USCIsICJEQVlfT0ZfWUVBUiIsICJEQVlfT0ZfV0VFSyIsCisgICAgICAgICJEQVlfT0ZfV0VFS19JTl9NT05USCIsICJBTV9QTSIsICJIT1VSIiwgIkhPVVJfT0ZfREFZIiwKKyAgICAgICAgIk1JTlVURSIsICJTRUNPTkQiLCAiTUlMTElTRUNPTkQiLCAiWk9ORV9PRkZTRVQiLAorICAgICAgICAiRFNUX09GRlNFVCIsICJZRUFSX1dPWSIsICJET1dfTE9DQUwiLCAiRVhURU5ERURfWUVBUiIsCisgICAgICAgICJKVUxJQU5fREFZIiwgIk1JTExJU0VDT05EU19JTl9EQVkiLAorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSBzdHJpbmcgbmFtZSBmb3IgYSBmaWVsZCwgZm9yIGRlYnVnZ2luZyBhbmQgZXhjZXB0aW9ucy4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgU3RyaW5nIGZpZWxkTmFtZShpbnQgZmllbGQpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJldHVybiBGSUVMRF9OQU1FW2ZpZWxkXTsKKyAgICAgICAgfSBjYXRjaCAoQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHJldHVybiAiRmllbGQgIiArIGZpZWxkOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29udmVydHMgdGltZSBhcyBtaWxsaXNlY29uZHMgdG8gSnVsaWFuIGRheS4KKyAgICAgKiBAcGFyYW0gbWlsbGlzIHRoZSBnaXZlbiBtaWxsaXNlY29uZHMuCisgICAgICogQHJldHVybiB0aGUgSnVsaWFuIGRheSBudW1iZXIuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgbWlsbGlzVG9KdWxpYW5EYXkobG9uZyBtaWxsaXMpIHsKKyAgICAgICAgcmV0dXJuIChpbnQpIChFUE9DSF9KVUxJQU5fREFZICsgZmxvb3JEaXZpZGUobWlsbGlzLCBPTkVfREFZKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29udmVydHMgSnVsaWFuIGRheSB0byB0aW1lIGFzIG1pbGxpc2Vjb25kcy4KKyAgICAgKiBAcGFyYW0ganVsaWFuIHRoZSBnaXZlbiBKdWxpYW4gZGF5IG51bWJlci4KKyAgICAgKiBAcmV0dXJuIHRpbWUgYXMgbWlsbGlzZWNvbmRzLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgbG9uZyBqdWxpYW5EYXlUb01pbGxpcyhpbnQganVsaWFuKSB7CisgICAgICAgIHJldHVybiAoanVsaWFuIC0gRVBPQ0hfSlVMSUFOX0RBWSkgKiBPTkVfREFZOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgZGF5IG9mIHdlZWssIGZyb20gU1VOREFZIHRvIFNBVFVSREFZLCBnaXZlbiBhIEp1bGlhbiBkYXkuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQganVsaWFuRGF5VG9EYXlPZldlZWsoaW50IGp1bGlhbikgeworICAgICAgICAvLyBJZiBqdWxpYW4gaXMgbmVnYXRpdmUsIHRoZW4ganVsaWFuJTcgd2lsbCBiZSBuZWdhdGl2ZSwgc28gd2UgYWRqdXN0CisgICAgICAgIC8vIGFjY29yZGluZ2x5LiAgSnVsaWFuIGRheSAwIGlzIE1vbmRheS4KKyAgICAgICAgaW50IGRheU9mV2VlayA9IChqdWxpYW4gKyBNT05EQVkpICUgNzsKKyAgICAgICAgaWYgKGRheU9mV2VlayA8IFNVTkRBWSkgeworICAgICAgICAgICAgZGF5T2ZXZWVrICs9IDc7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGRheU9mV2VlazsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGN1cnJlbnQgbWlsbGlzZWNvbmRzIHdpdGhvdXQgcmVjb21wdXRpbmcuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHJvdGVjdGVkIGZpbmFsIGxvbmcgaW50ZXJuYWxHZXRUaW1lSW5NaWxsaXMoKSB7CisgICAgICAgIHJldHVybiB0aW1lOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS91dGlsL0NhbGVuZGFyQXN0cm9ub21lci5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L3V0aWwvQ2FsZW5kYXJBc3Ryb25vbWVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNzQwNmVjYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS91dGlsL0NhbGVuZGFyQXN0cm9ub21lci5qYXZhCkBAIC0wLDAgKzEsMTM2MyBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L3V0aWwvQXR0aWMvQ2FsZW5kYXJBc3Ryb25vbWVyLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMTIvMTggMTk6MzE6NDQgJCAKKyAqICRSZXZpc2lvbjogMS4xMiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UudXRpbDsKKworaW1wb3J0IGphdmEudXRpbC4qOworCisvKioKKyAqIDxjb2RlPkNhbGVuZGFyQXN0cm9ub21lcjwvY29kZT4gaXMgYSBjbGFzcyB0aGF0IGNhbiBwZXJmb3JtIHRoZSBjYWxjdWxhdGlvbnMgdG8KKyAqIGRldGVybWluZSB0aGUgcG9zaXRpb25zIG9mIHRoZSBzdW4gYW5kIG1vb24sIHRoZSB0aW1lIG9mIHN1bnJpc2UgYW5kCisgKiBzdW5zZXQsIGFuZCBvdGhlciBhc3Ryb25vbXktcmVsYXRlZCBkYXRhLiAgVGhlIGNhbGN1bGF0aW9ucyBpdCBwZXJmb3JtcworICogYXJlIGluIHNvbWUgY2FzZXMgcXVpdGUgY29tcGxpY2F0ZWQsIGFuZCB0aGlzIHV0aWxpdHkgY2xhc3Mgc2F2ZXMgeW91CisgKiB0aGUgdHJvdWJsZSBvZiB3b3JyeWluZyBhYm91dCB0aGVtLgorICogPHA+CisgKiBUaGUgbWVhc3VyZW1lbnQgb2YgdGltZSBpcyBhIHZlcnkgaW1wb3J0YW50IHBhcnQgb2YgYXN0cm9ub215LiAgQmVjYXVzZQorICogYXN0cm9ub21pY2FsIGJvZGllcyBhcmUgY29uc3RhbnRseSBpbiBtb3Rpb24sIG9ic2VydmF0aW9ucyBhcmUgb25seSB2YWxpZAorICogYXQgYSBnaXZlbiBtb21lbnQgaW4gdGltZS4gIEFjY29yZGluZ2x5LCBlYWNoIDxjb2RlPkNhbGVuZGFyQXN0cm9ub21lcjwvY29kZT4KKyAqIG9iamVjdCBoYXMgYSA8Y29kZT50aW1lPC9jb2RlPiBwcm9wZXJ0eSB0aGF0IGRldGVybWluZXMgdGhlIGRhdGUKKyAqIGFuZCB0aW1lIGZvciB3aGljaCBpdHMgY2FsY3VsYXRpb25zIGFyZSBwZXJmb3JtZWQuICBZb3UgY2FuIHNldCBhbmQKKyAqIHJldHJpZXZlIHRoaXMgcHJvcGVydHkgd2l0aCB7QGxpbmsgI3NldERhdGUgc2V0RGF0ZX0sIHtAbGluayAjZ2V0RGF0ZSBnZXREYXRlfQorICogYW5kIHJlbGF0ZWQgbWV0aG9kcy4KKyAqIDxwPgorICogQWxtb3N0IGFsbCBvZiB0aGUgY2FsY3VsYXRpb25zIHBlcmZvcm1lZCBieSB0aGlzIGNsYXNzLCBvciBieSBhbnkKKyAqIGFzdHJvbm9tZXIsIGFyZSBhcHByb3hpbWF0aW9ucyB0byB2YXJpb3VzIGRlZ3JlZXMgb2YgYWNjdXJhY3kuICBUaGUKKyAqIGNhbGN1bGF0aW9ucyBpbiB0aGlzIGNsYXNzIGFyZSBtb3N0bHkgbW9kZWxsZWQgYWZ0ZXIgdGhvc2UgZGVzY3JpYmVkCisgKiBpbiB0aGUgYm9vaworICogPGEgaHJlZj0iaHR0cDovL3d3dy5hbWF6b24uY29tL2V4ZWMvb2JpZG9zL0lTQk49MDUyMTM1Njk5NyIgdGFyZ2V0PSJfdG9wIj4KKyAqIFByYWN0aWNhbCBBc3Ryb25vbXkgV2l0aCBZb3VyIENhbGN1bGF0b3I8L2E+LCBieSBQZXRlciBKLgorICogRHVmZmV0dC1TbWl0aCwgQ2FtYnJpZGdlIFVuaXZlcnNpdHkgUHJlc3MsIDE5OTAuICBUaGlzIGlzIGFuIGV4Y2VsbGVudAorICogYm9vaywgYW5kIGlmIHlvdSB3YW50IGEgZ3JlYXRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGVzZSBjYWxjdWxhdGlvbnMKKyAqIGFyZSBwZXJmb3JtZWQgaXQgYSB2ZXJ5IGdvb2QsIHJlYWRhYmxlIHN0YXJ0aW5nIHBvaW50LgorICogPHA+CisgKiA8c3Ryb25nPldBUk5JTkc6PC9zdHJvbmc+IFRoaXMgY2xhc3MgaXMgdmVyeSBlYXJseSBpbiBpdHMgZGV2ZWxvcG1lbnQsIGFuZAorICogaXQgaXMgaGlnaGx5IGxpa2VseSB0aGF0IGl0cyBBUEkgd2lsbCBjaGFuZ2UgdG8gc29tZSBkZWdyZWUgaW4gdGhlIGZ1dHVyZS4KKyAqIEF0IHRoZSBtb21lbnQsIGl0IGJhc2ljYWxseSBkb2VzIGp1c3QgZW5vdWdoIHRvIHN1cHBvcnQge0BsaW5rIElzbGFtaWNDYWxlbmRhcn0KKyAqIGFuZCB7QGxpbmsgQ2hpbmVzZUNhbGVuZGFyfS4KKyAqCisgKiBAYXV0aG9yIExhdXJhIFdlcm5lcgorICogQGF1dGhvciBBbGFuIExpdQorICogQGludGVybmFsCisgKiBAZGVwcmVjYXRlZCBJQ1UgMi40LiBUaGlzIGNsYXNzIG1heSBiZSByZW1vdmVkIG9yIG1vZGlmaWVkLgorICovCitwdWJsaWMgY2xhc3MgQ2FsZW5kYXJBc3Ryb25vbWVyIHsKKyAgICAKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBBc3Ryb25vbWljYWwgY29uc3RhbnRzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBUaGUgbnVtYmVyIG9mIHN0YW5kYXJkIGhvdXJzIGluIG9uZSBzaWRlcmVhbCBkYXkuCisgICAgICogQXBwcm94aW1hdGVseSAyNC45My4KKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40LiBUaGlzIGNsYXNzIG1heSBiZSByZW1vdmVkIG9yIG1vZGlmaWVkLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgZG91YmxlIFNJREVSRUFMX0RBWSA9IDIzLjkzNDQ2OTYwMDI3OworICAgIAorICAgIC8qKgorICAgICAqIFRoZSBudW1iZXIgb2Ygc2lkZXJlYWwgaG91cnMgaW4gb25lIG1lYW4gc29sYXIgZGF5LgorICAgICAqIEFwcHJveGltYXRlbHkgMjQuMDcuCisgICAgICogQGludGVybmFsCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNC4gVGhpcyBjbGFzcyBtYXkgYmUgcmVtb3ZlZCBvciBtb2RpZmllZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGRvdWJsZSBTT0xBUl9EQVkgPSAgMjQuMDY1NzA5ODE2OworICAgIAorICAgIC8qKgorICAgICAqIFRoZSBhdmVyYWdlIG51bWJlciBvZiBzb2xhciBkYXlzIGZyb20gb25lIG5ldyBtb29uIHRvIHRoZSBuZXh0LiAgVGhpcyBpcyB0aGUgdGltZQorICAgICAqIGl0IHRha2VzIGZvciB0aGUgbW9vbiB0byByZXR1cm4gdGhlIHNhbWUgZWNsaXB0aWMgbG9uZ2l0dWRlIGFzIHRoZSBzdW4uCisgICAgICogSXQgaXMgbG9uZ2VyIHRoYW4gdGhlIHNpZGVyZWFsIG1vbnRoIGJlY2F1c2UgdGhlIHN1bidzIGxvbmdpdHVkZSBpbmNyZWFzZXMKKyAgICAgKiBkdXJpbmcgdGhlIHllYXIgZHVlIHRvIHRoZSByZXZvbHV0aW9uIG9mIHRoZSBlYXJ0aCBhcm91bmQgdGhlIHN1bi4KKyAgICAgKiBBcHByb3hpbWF0ZWx5IDI5LjUzLgorICAgICAqCisgICAgICogQHNlZSAjU0lERVJFQUxfTU9OVEgKKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40LiBUaGlzIGNsYXNzIG1heSBiZSByZW1vdmVkIG9yIG1vZGlmaWVkLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgZG91YmxlIFNZTk9ESUNfTU9OVEggPSAyOS41MzA1ODg4NTM7CisgICAgCisgICAgLyoqCisgICAgICogVGhlIGF2ZXJhZ2UgbnVtYmVyIG9mIGRheXMgaXQgdGFrZXMKKyAgICAgKiBmb3IgdGhlIG1vb24gdG8gcmV0dXJuIHRvIHRoZSBzYW1lIGVjbGlwdGljIGxvbmdpdHVkZSByZWxhdGl2ZSB0byB0aGUKKyAgICAgKiBzdGVsbGFyIGJhY2tncm91bmQuICBUaGlzIGlzIHJlZmVycmVkIHRvIGFzIHRoZSBzaWRlcmVhbCBtb250aC4KKyAgICAgKiBJdCBpcyBzaG9ydGVyIHRoYW4gdGhlIHN5bm9kaWMgbW9udGggZHVlIHRvCisgICAgICogdGhlIHJldm9sdXRpb24gb2YgdGhlIGVhcnRoIGFyb3VuZCB0aGUgc3VuLgorICAgICAqIEFwcHJveGltYXRlbHkgMjcuMzIuCisgICAgICoKKyAgICAgKiBAc2VlICNTWU5PRElDX01PTlRICisgICAgICogQGludGVybmFsCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNC4gVGhpcyBjbGFzcyBtYXkgYmUgcmVtb3ZlZCBvciBtb2RpZmllZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGRvdWJsZSBTSURFUkVBTF9NT05USCA9IDI3LjMyMTY2OworICAgIAorICAgIC8qKgorICAgICAqIFRoZSBhdmVyYWdlIG51bWJlciBudW1iZXIgb2YgZGF5cyBiZXR3ZWVuIHN1Y2Nlc3NpdmUgdmVybmFsIGVxdWlub3hlcy4KKyAgICAgKiBEdWUgdG8gdGhlIHByZWNlc3Npb24gb2YgdGhlIGVhcnRoJ3MKKyAgICAgKiBheGlzLCB0aGlzIGlzIG5vdCBwcmVjaXNlbHkgdGhlIHNhbWUgYXMgdGhlIHNpZGVyZWFsIHllYXIuCisgICAgICogQXBwcm94aW1hdGVseSAzNjUuMjQKKyAgICAgKgorICAgICAqIEBzZWUgI1NJREVSRUFMX1lFQVIKKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40LiBUaGlzIGNsYXNzIG1heSBiZSByZW1vdmVkIG9yIG1vZGlmaWVkLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgZG91YmxlIFRST1BJQ0FMX1lFQVIgPSAzNjUuMjQyMTkxOworICAgIAorICAgIC8qKgorICAgICAqIFRoZSBhdmVyYWdlIG51bWJlciBvZiBkYXlzIGl0IHRha2VzCisgICAgICogZm9yIHRoZSBzdW4gdG8gcmV0dXJuIHRvIHRoZSBzYW1lIHBvc2l0aW9uIGFnYWluc3QgdGhlIGZpeGVkIHN0ZWxsYXIKKyAgICAgKiBiYWNrZ3JvdW5kLiAgVGhpcyBpcyB0aGUgZHVyYXRpb24gb2Ygb25lIG9yYml0IG9mIHRoZSBlYXJ0aCBhYm91dCB0aGUgc3VuCisgICAgICogYXMgaXQgd291bGQgYXBwZWFyIHRvIGFuIG91dHNpZGUgb2JzZXJ2ZXIuCisgICAgICogRHVlIHRvIHRoZSBwcmVjZXNzaW9uIG9mIHRoZSBlYXJ0aCdzCisgICAgICogYXhpcywgdGhpcyBpcyBub3QgcHJlY2lzZWx5IHRoZSBzYW1lIGFzIHRoZSB0cm9waWNhbCB5ZWFyLgorICAgICAqIEFwcHJveGltYXRlbHkgMzY1LjI1LgorICAgICAqCisgICAgICogQHNlZSAjVFJPUElDQUxfWUVBUgorICAgICAqIEBpbnRlcm5hbAorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjQuIFRoaXMgY2xhc3MgbWF5IGJlIHJlbW92ZWQgb3IgbW9kaWZpZWQuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBkb3VibGUgU0lERVJFQUxfWUVBUiA9IDM2NS4yNTYzNjsKKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIFRpbWUtcmVsYXRlZCBjb25zdGFudHMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKiAKKyAgICAgKiBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBpbiBvbmUgc2Vjb25kLiAKKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40LiBUaGlzIGNsYXNzIG1heSBiZSByZW1vdmVkIG9yIG1vZGlmaWVkLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50ICBTRUNPTkRfTVMgPSAxMDAwOworCisgICAgLyoqIAorICAgICAqIFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGluIG9uZSBtaW51dGUuIAorICAgICAqIEBpbnRlcm5hbAorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjQuIFRoaXMgY2xhc3MgbWF5IGJlIHJlbW92ZWQgb3IgbW9kaWZpZWQuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgIE1JTlVURV9NUyA9IDYwKlNFQ09ORF9NUzsKKworICAgIC8qKiAKKyAgICAgKiBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBpbiBvbmUgaG91ci4gCisgICAgICogQGludGVybmFsCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNC4gVGhpcyBjbGFzcyBtYXkgYmUgcmVtb3ZlZCBvciBtb2RpZmllZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCAgSE9VUl9NUyAgID0gNjAqTUlOVVRFX01TOworCisgICAgLyoqIAorICAgICAqIFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGluIG9uZSBkYXkuIAorICAgICAqIEBpbnRlcm5hbAorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjQuIFRoaXMgY2xhc3MgbWF5IGJlIHJlbW92ZWQgb3IgbW9kaWZpZWQuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBsb25nIERBWV9NUyAgICA9IDI0KkhPVVJfTVM7CisKKyAgICAvKioKKyAgICAgKiBUaGUgc3RhcnQgb2YgdGhlIGp1bGlhbiBkYXkgbnVtYmVyaW5nIHNjaGVtZSB1c2VkIGJ5IGFzdHJvbm9tZXJzLCB3aGljaAorICAgICAqIGlzIDEvMS80NzEzIEJDIChKdWxpYW4pLCAxMjowMCBHTVQuICBUaGlzIGlzIGdpdmVuIGFzIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzCisgICAgICogc2luY2UgMS8xLzE5NzAgQUQgKEdyZWdvcmlhbiksIGEgbmVnYXRpdmUgbnVtYmVyLgorICAgICAqIE5vdGUgdGhhdCBqdWxpYW4gZGF5IG51bWJlcnMgYW5kCisgICAgICogdGhlIEp1bGlhbiBjYWxlbmRhciBhcmUgPGVtPm5vdDwvZW0+IHRoZSBzYW1lIHRoaW5nLiAgQWxzbyBub3RlIHRoYXQKKyAgICAgKiBqdWxpYW4gZGF5cyBzdGFydCBhdCA8ZW0+bm9vbjwvZW0+LCBub3QgbWlkbmlnaHQuCisgICAgICogQGludGVybmFsCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNC4gVGhpcyBjbGFzcyBtYXkgYmUgcmVtb3ZlZCBvciBtb2RpZmllZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGxvbmcgSlVMSUFOX0VQT0NIX01TID0gLTIxMDg2Njc2MDAwMDAwMEw7CisgICAgCisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBBc3NvcnRlZCBwcml2YXRlIGRhdGEgdXNlZCBmb3IgY29udmVyc2lvbnMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8vIE15IG93biBjb3BpZXMgb2YgdGhlc2Ugc28gY29tcGlsZXJzIGFyZSBtb3JlIGxpa2VseSB0byBvcHRpbWl6ZSB0aGVtIGF3YXkKKyAgICBzdGF0aWMgcHJpdmF0ZSBmaW5hbCBkb3VibGUgUEkgPSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2OworICAgIHN0YXRpYyBwcml2YXRlIGZpbmFsIGRvdWJsZSBQSTIgPSBQSSAqIDIuMDsKKworICAgIHN0YXRpYyBwcml2YXRlIGZpbmFsIGRvdWJsZSBIT1VSX1JBRCA9IFBJIC8gMTI7ICAgICAgICAvLyBob3VycyAtPiByYWRpYW5zCisgICAgc3RhdGljIHByaXZhdGUgZmluYWwgZG91YmxlIFJBRF9IT1VSID0gMTIgLyBQSTsgICAgICAgIC8vIHJhZGlhbnMgLT4gaG91cnMKKyAgICBzdGF0aWMgcHJpdmF0ZSBmaW5hbCBkb3VibGUgREVHX1JBRCAgPSBQSSAvIDE4MDsgICAgICAgIC8vIGRlZ3JlZXMgLT4gcmFkaWFucworICAgIHN0YXRpYyBwcml2YXRlIGZpbmFsIGRvdWJsZSBSQURfREVHICA9IDE4MCAvIFBJOyAgICAgICAgLy8gcmFkaWFucyAtPiBkZWdyZWVzCisgICAgCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gQ29uc3RydWN0b3JzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgYSBuZXcgPGNvZGU+Q2FsZW5kYXJBc3Ryb25vbWVyPC9jb2RlPiBvYmplY3QgdGhhdCBpcyBpbml0aWFsaXplZCB0bworICAgICAqIHRoZSBjdXJyZW50IGRhdGUgYW5kIHRpbWUuCisgICAgICogQGludGVybmFsCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNC4gVGhpcyBjbGFzcyBtYXkgYmUgcmVtb3ZlZCBvciBtb2RpZmllZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgQ2FsZW5kYXJBc3Ryb25vbWVyKCkgeworICAgICAgICB0aGlzKFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGEgbmV3IDxjb2RlPkNhbGVuZGFyQXN0cm9ub21lcjwvY29kZT4gb2JqZWN0IHRoYXQgaXMgaW5pdGlhbGl6ZWQgdG8KKyAgICAgKiB0aGUgc3BlY2lmaWVkIGRhdGUgYW5kIHRpbWUuCisgICAgICogQGludGVybmFsCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNC4gVGhpcyBjbGFzcyBtYXkgYmUgcmVtb3ZlZCBvciBtb2RpZmllZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgQ2FsZW5kYXJBc3Ryb25vbWVyKERhdGUgZCkgeworICAgICAgICB0aGlzKGQuZ2V0VGltZSgpKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGEgbmV3IDxjb2RlPkNhbGVuZGFyQXN0cm9ub21lcjwvY29kZT4gb2JqZWN0IHRoYXQgaXMgaW5pdGlhbGl6ZWQgdG8KKyAgICAgKiB0aGUgc3BlY2lmaWVkIHRpbWUuICBUaGUgdGltZSBpcyBleHByZXNzZWQgYXMgYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHNpbmNlCisgICAgICogSmFudWFyeSAxLCAxOTcwIEFEIChHcmVnb3JpYW4pLgorICAgICAqCisgICAgICogQHNlZSBqYXZhLnV0aWwuRGF0ZSNnZXRUaW1lKCkKKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40LiBUaGlzIGNsYXNzIG1heSBiZSByZW1vdmVkIG9yIG1vZGlmaWVkLgorICAgICAqLworICAgIHB1YmxpYyBDYWxlbmRhckFzdHJvbm9tZXIobG9uZyBhVGltZSkgeworICAgICAgICB0aW1lID0gYVRpbWU7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIENvbnN0cnVjdCBhIG5ldyA8Y29kZT5DYWxlbmRhckFzdHJvbm9tZXI8L2NvZGU+IG9iamVjdCB3aXRoIHRoZSBnaXZlbgorICAgICAqIGxhdGl0dWRlIGFuZCBsb25naXR1ZGUuICBUaGUgb2JqZWN0J3MgdGltZSBpcyBzZXQgdG8gdGhlIGN1cnJlbnQKKyAgICAgKiBkYXRlIGFuZCB0aW1lLgorICAgICAqIDxwPgorICAgICAqIEBwYXJhbSBsb25naXR1ZGUgVGhlIGRlc2lyZWQgbG9uZ2l0dWRlLCBpbiA8ZW0+ZGVncmVlczwvZW0+IGVhc3Qgb2YKKyAgICAgKiAgICAgICAgICAgICAgICAgIHRoZSBHcmVlbndpY2ggbWVyaWRpYW4uCisgICAgICoKKyAgICAgKiBAcGFyYW0gbGF0aXR1ZGUgIFRoZSBkZXNpcmVkIGxhdGl0dWRlLCBpbiA8ZW0+ZGVncmVlczwvZW0+LiAgUG9zaXRpdmUKKyAgICAgKiAgICAgICAgICAgICAgICAgIHZhbHVlcyBzaWduaWZ5IE5vcnRoLCBuZWdhdGl2ZSBTb3V0aC4KKyAgICAgKgorICAgICAqIEBzZWUgamF2YS51dGlsLkRhdGUjZ2V0VGltZSgpCisgICAgICogQGludGVybmFsCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNC4gVGhpcyBjbGFzcyBtYXkgYmUgcmVtb3ZlZCBvciBtb2RpZmllZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgQ2FsZW5kYXJBc3Ryb25vbWVyKGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBsYXRpdHVkZSkgeworICAgICAgICB0aGlzKCk7CisgICAgICAgIGZMb25naXR1ZGUgPSBub3JtUEkobG9uZ2l0dWRlICogREVHX1JBRCk7CisgICAgICAgIGZMYXRpdHVkZSAgPSBub3JtUEkobGF0aXR1ZGUgICogREVHX1JBRCk7CisgICAgICAgIGZHbXRPZmZzZXQgPSAobG9uZykoZkxvbmdpdHVkZSAqIDI0ICogSE9VUl9NUyAvIFBJMik7CisgICAgfQorICAgIAorICAgIAorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIFRpbWUgYW5kIGRhdGUgZ2V0dGVycyBhbmQgc2V0dGVycworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIC8qKgorICAgICAqIFNldCB0aGUgY3VycmVudCBkYXRlIGFuZCB0aW1lIG9mIHRoaXMgPGNvZGU+Q2FsZW5kYXJBc3Ryb25vbWVyPC9jb2RlPiBvYmplY3QuICBBbGwKKyAgICAgKiBhc3Ryb25vbWljYWwgY2FsY3VsYXRpb25zIGFyZSBwZXJmb3JtZWQgYmFzZWQgb24gdGhpcyB0aW1lIHNldHRpbmcuCisgICAgICoKKyAgICAgKiBAcGFyYW0gYVRpbWUgdGhlIGRhdGUgYW5kIHRpbWUsIGV4cHJlc3NlZCBhcyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBzaW5jZQorICAgICAqICAgICAgICAgICAgICAxLzEvMTk3MCAwOjAwIEdNVCAoR3JlZ29yaWFuKS4KKyAgICAgKgorICAgICAqIEBzZWUgI3NldERhdGUKKyAgICAgKiBAc2VlICNnZXRUaW1lCisgICAgICogQGludGVybmFsCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNC4gVGhpcyBjbGFzcyBtYXkgYmUgcmVtb3ZlZCBvciBtb2RpZmllZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRUaW1lKGxvbmcgYVRpbWUpIHsKKyAgICAgICAgdGltZSA9IGFUaW1lOworICAgICAgICBjbGVhckNhY2hlKCk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFNldCB0aGUgY3VycmVudCBkYXRlIGFuZCB0aW1lIG9mIHRoaXMgPGNvZGU+Q2FsZW5kYXJBc3Ryb25vbWVyPC9jb2RlPiBvYmplY3QuICBBbGwKKyAgICAgKiBhc3Ryb25vbWljYWwgY2FsY3VsYXRpb25zIGFyZSBwZXJmb3JtZWQgYmFzZWQgb24gdGhpcyB0aW1lIHNldHRpbmcuCisgICAgICoKKyAgICAgKiBAcGFyYW0gYVRpbWUgdGhlIHRpbWUgYW5kIGRhdGUsIGV4cHJlc3NlZCBhcyBhIDxjb2RlPkRhdGU8L2NvZGU+IG9iamVjdC4KKyAgICAgKgorICAgICAqIEBzZWUgI3NldFRpbWUKKyAgICAgKiBAc2VlICNnZXREYXRlCisgICAgICogQGludGVybmFsCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNC4gVGhpcyBjbGFzcyBtYXkgYmUgcmVtb3ZlZCBvciBtb2RpZmllZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXREYXRlKERhdGUgZGF0ZSkgeworICAgICAgICBzZXRUaW1lKGRhdGUuZ2V0VGltZSgpKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogU2V0IHRoZSBjdXJyZW50IGRhdGUgYW5kIHRpbWUgb2YgdGhpcyA8Y29kZT5DYWxlbmRhckFzdHJvbm9tZXI8L2NvZGU+IG9iamVjdC4gIEFsbAorICAgICAqIGFzdHJvbm9taWNhbCBjYWxjdWxhdGlvbnMgYXJlIHBlcmZvcm1lZCBiYXNlZCBvbiB0aGlzIHRpbWUgc2V0dGluZy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBqZG4gICB0aGUgZGVzaXJlZCB0aW1lLCBleHByZXNzZWQgYXMgYSAianVsaWFuIGRheSBudW1iZXIiLAorICAgICAqICAgICAgICAgICAgICB3aGljaCBpcyB0aGUgbnVtYmVyIG9mIGVsYXBzZWQgZGF5cyBzaW5jZSAKKyAgICAgKiAgICAgICAgICAgICAgMS8xLzQ3MTMgQkMgKEp1bGlhbiksIDEyOjAwIEdNVC4gIE5vdGUgdGhhdCBqdWxpYW4gZGF5CisgICAgICogICAgICAgICAgICAgIG51bWJlcnMgc3RhcnQgYXQgPGVtPm5vb248L2VtPi4gIFRvIGdldCB0aGUgamRuIGZvcgorICAgICAqICAgICAgICAgICAgICB0aGUgY29ycmVzcG9uZGluZyBtaWRuaWdodCwgc3VidHJhY3QgMC41LgorICAgICAqCisgICAgICogQHNlZSAjZ2V0SnVsaWFuRGF5CisgICAgICogQHNlZSAjSlVMSUFOX0VQT0NIX01TCisgICAgICogQGludGVybmFsCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNC4gVGhpcyBjbGFzcyBtYXkgYmUgcmVtb3ZlZCBvciBtb2RpZmllZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRKdWxpYW5EYXkoZG91YmxlIGpkbikgeworICAgICAgICB0aW1lID0gKGxvbmcpKGpkbiAqIERBWV9NUykgKyBKVUxJQU5fRVBPQ0hfTVM7CisgICAgICAgIGNsZWFyQ2FjaGUoKTsKKyAgICAgICAganVsaWFuRGF5ID0gamRuOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBHZXQgdGhlIGN1cnJlbnQgdGltZSBvZiB0aGlzIDxjb2RlPkNhbGVuZGFyQXN0cm9ub21lcjwvY29kZT4gb2JqZWN0LAorICAgICAqIHJlcHJlc2VudGVkIGFzIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHNpbmNlCisgICAgICogMS8xLzE5NzAgQUQgMDowMCBHTVQgKEdyZWdvcmlhbikuCisgICAgICoKKyAgICAgKiBAc2VlICNzZXRUaW1lCisgICAgICogQHNlZSAjZ2V0RGF0ZQorICAgICAqIEBpbnRlcm5hbAorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjQuIFRoaXMgY2xhc3MgbWF5IGJlIHJlbW92ZWQgb3IgbW9kaWZpZWQuCisgICAgICovCisgICAgcHVibGljIGxvbmcgZ2V0VGltZSgpIHsKKyAgICAgICAgcmV0dXJuIHRpbWU7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEdldCB0aGUgY3VycmVudCB0aW1lIG9mIHRoaXMgPGNvZGU+Q2FsZW5kYXJBc3Ryb25vbWVyPC9jb2RlPiBvYmplY3QsCisgICAgICogcmVwcmVzZW50ZWQgYXMgYSA8Y29kZT5EYXRlPC9jb2RlPiBvYmplY3QuCisgICAgICoKKyAgICAgKiBAc2VlICNzZXREYXRlCisgICAgICogQHNlZSAjZ2V0VGltZQorICAgICAqIEBpbnRlcm5hbAorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjQuIFRoaXMgY2xhc3MgbWF5IGJlIHJlbW92ZWQgb3IgbW9kaWZpZWQuCisgICAgICovCisgICAgcHVibGljIERhdGUgZ2V0RGF0ZSgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHRpbWUpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBHZXQgdGhlIGN1cnJlbnQgdGltZSBvZiB0aGlzIDxjb2RlPkNhbGVuZGFyQXN0cm9ub21lcjwvY29kZT4gb2JqZWN0LAorICAgICAqIGV4cHJlc3NlZCBhcyBhICJqdWxpYW4gZGF5IG51bWJlciIsIHdoaWNoIGlzIHRoZSBudW1iZXIgb2YgZWxhcHNlZAorICAgICAqIGRheXMgc2luY2UgMS8xLzQ3MTMgQkMgKEp1bGlhbiksIDEyOjAwIEdNVC4KKyAgICAgKgorICAgICAqIEBzZWUgI3NldEp1bGlhbkRheQorICAgICAqIEBzZWUgI0pVTElBTl9FUE9DSF9NUworICAgICAqIEBpbnRlcm5hbAorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjQuIFRoaXMgY2xhc3MgbWF5IGJlIHJlbW92ZWQgb3IgbW9kaWZpZWQuCisgICAgICovCisgICAgcHVibGljIGRvdWJsZSBnZXRKdWxpYW5EYXkoKSB7CisgICAgICAgIGlmIChqdWxpYW5EYXkgPT0gSU5WQUxJRCkgeworICAgICAgICAgICAganVsaWFuRGF5ID0gKGRvdWJsZSkodGltZSAtIEpVTElBTl9FUE9DSF9NUykgLyAoZG91YmxlKURBWV9NUzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4ganVsaWFuRGF5OworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhpcyBvYmplY3QncyB0aW1lIGV4cHJlc3NlZCBpbiBqdWxpYW4gY2VudHVyaWVzOgorICAgICAqIHRoZSBudW1iZXIgb2YgY2VudHVyaWVzIGFmdGVyIDEvMS8xOTAwIEFELCAxMjowMCBHTVQKKyAgICAgKgorICAgICAqIEBzZWUgI2dldEp1bGlhbkRheQorICAgICAqIEBpbnRlcm5hbAorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjQuIFRoaXMgY2xhc3MgbWF5IGJlIHJlbW92ZWQgb3IgbW9kaWZpZWQuCisgICAgICovCisgICAgcHVibGljIGRvdWJsZSBnZXRKdWxpYW5DZW50dXJ5KCkgeworICAgICAgICBpZiAoanVsaWFuQ2VudHVyeSA9PSBJTlZBTElEKSB7CisgICAgICAgICAgICBqdWxpYW5DZW50dXJ5ID0gKGdldEp1bGlhbkRheSgpIC0gMjQxNTAyMC4wKSAvIDM2NTI1OworICAgICAgICB9CisgICAgICAgIHJldHVybiBqdWxpYW5DZW50dXJ5OworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnQgR3JlZW53aWNoIHNpZGVyZWFsIHRpbWUsIG1lYXN1cmVkIGluIGhvdXJzCisgICAgICogQGludGVybmFsCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNC4gVGhpcyBjbGFzcyBtYXkgYmUgcmVtb3ZlZCBvciBtb2RpZmllZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgZG91YmxlIGdldEdyZWVud2ljaFNpZGVyZWFsKCkgeworICAgICAgICBpZiAoc2lkZXJlYWxUaW1lID09IElOVkFMSUQpIHsKKyAgICAgICAgICAgIC8vIFNlZSBwYWdlIDg2IG9mICJQcmFjdGlhbCBBc3Ryb25vbXkgd2l0aCB5b3VyIENhbGN1bGF0b3IiLAorICAgICAgICAgICAgLy8gYnkgUGV0ZXIgRHVmZmV0LVNtaXRoLCBmb3IgZGV0YWlscyBvbiB0aGUgYWxnb3JpdGhtLgorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgZG91YmxlIFVUID0gbm9ybWFsaXplKChkb3VibGUpdGltZS9IT1VSX01TLCAyNCk7CisgICAgICAgIAorICAgICAgICAgICAgc2lkZXJlYWxUaW1lID0gbm9ybWFsaXplKGdldFNpZGVyZWFsT2Zmc2V0KCkgKyBVVCoxLjAwMjczNzkwOSwgMjQpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBzaWRlcmVhbFRpbWU7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgZG91YmxlIGdldFNpZGVyZWFsT2Zmc2V0KCkgeworICAgICAgICBpZiAoc2lkZXJlYWxUMCA9PSBJTlZBTElEKSB7CisgICAgICAgICAgICBkb3VibGUgSkQgID0gTWF0aC5mbG9vcihnZXRKdWxpYW5EYXkoKSAtIDAuNSkgKyAwLjU7CisgICAgICAgICAgICBkb3VibGUgUyAgID0gSkQgLSAyNDUxNTQ1LjA7CisgICAgICAgICAgICBkb3VibGUgVCAgID0gUyAvIDM2NTI1LjA7CisgICAgICAgICAgICBzaWRlcmVhbFQwID0gbm9ybWFsaXplKDYuNjk3Mzc0NTU4ICsgMjQwMC4wNTEzMzYqVCArIDAuMDAwMDI1ODYyKlQqVCwgMjQpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBzaWRlcmVhbFQwOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IGxvY2FsIHNpZGVyZWFsIHRpbWUsIG1lYXN1cmVkIGluIGhvdXJzCisgICAgICogQGludGVybmFsCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNC4gVGhpcyBjbGFzcyBtYXkgYmUgcmVtb3ZlZCBvciBtb2RpZmllZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgZG91YmxlIGdldExvY2FsU2lkZXJlYWwoKSB7CisgICAgICAgIHJldHVybiBub3JtYWxpemUoZ2V0R3JlZW53aWNoU2lkZXJlYWwoKSArIChkb3VibGUpZkdtdE9mZnNldC9IT1VSX01TLCAyNCk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIENvbnZlcnRzIGxvY2FsIHNpZGVyZWFsIHRpbWUgdG8gVW5pdmVyc2FsIFRpbWUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gbHN0ICAgVGhlIExvY2FsIFNpZGVyZWFsIFRpbWUsIGluIGhvdXJzIHNpbmNlIHNpZGVyZWFsIG1pZG5pZ2h0CisgICAgICogICAgICAgICAgICAgIG9uIHRoaXMgb2JqZWN0J3MgY3VycmVudCBkYXRlLgorICAgICAqCisgICAgICogQHJldHVybiAgICAgIFRoZSBjb3JyZXNwb25kaW5nIFVuaXZlcnNhbCBUaW1lLCBpbiBtaWxsaXNlY29uZHMgc2luY2UKKyAgICAgKiAgICAgICAgICAgICAgMSBKYW4gMTk3MCwgR01ULiAgCisgICAgICovCisgICAgcHJpdmF0ZSBsb25nIGxzdFRvVVQoZG91YmxlIGxzdCkgeworICAgICAgICAvLyBDb252ZXJ0IHRvIGxvY2FsIG1lYW4gdGltZQorICAgICAgICBkb3VibGUgbHQgPSBub3JtYWxpemUoKGxzdCAtIGdldFNpZGVyZWFsT2Zmc2V0KCkpICogMC45OTcyNjk1NjYzLCAyNCk7CisgICAgICAgIAorICAgICAgICAvLyBUaGVuIGZpbmQgbG9jYWwgbWlkbmlnaHQgb24gdGhpcyBkYXkKKyAgICAgICAgbG9uZyBiYXNlID0gREFZX01TICogKCh0aW1lICsgZkdtdE9mZnNldCkvREFZX01TKSAtIGZHbXRPZmZzZXQ7CisgICAgICAgIAorICAgICAgICAvL291dCgiICAgIGx0ICA9IiArIGx0ICsgIiBob3VycyIpOworICAgICAgICAvL291dCgiICAgIGJhc2U9IiArIG5ldyBEYXRlKGJhc2UpKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBiYXNlICsgKGxvbmcpKGx0ICogSE9VUl9NUyk7CisgICAgfQorICAgIAorICAgIAorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIENvb3JkaW5hdGUgdHJhbnNmb3JtYXRpb25zLCBhbGwgYmFzZWQgb24gdGhlIGN1cnJlbnQgdGltZSBvZiB0aGlzIG9iamVjdAorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogQ29udmVydCBmcm9tIGVjbGlwdGljIHRvIGVxdWF0b3JpYWwgY29vcmRpbmF0ZXMuCisgICAgICoKKyAgICAgKiBAcGFyYW0gZWNsaXB0aWMgIEEgcG9pbnQgaW4gdGhlIHNreSBpbiBlY2xpcHRpYyBjb29yZGluYXRlcy4KKyAgICAgKiBAcmV0dXJuICAgICAgICAgIFRoZSBjb3JyZXNwb25kaW5nIHBvaW50IGluIGVxdWF0b3JpYWwgY29vcmRpbmF0ZXMuCisgICAgICogQGludGVybmFsCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNC4gVGhpcyBjbGFzcyBtYXkgYmUgcmVtb3ZlZCBvciBtb2RpZmllZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgRXF1YXRvcmlhbCBlY2xpcHRpY1RvRXF1YXRvcmlhbChFY2xpcHRpYyBlY2xpcHRpYykKKyAgICB7CisgICAgICAgIHJldHVybiBlY2xpcHRpY1RvRXF1YXRvcmlhbChlY2xpcHRpYy5sb25naXR1ZGUsIGVjbGlwdGljLmxhdGl0dWRlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb252ZXJ0IGZyb20gZWNsaXB0aWMgdG8gZXF1YXRvcmlhbCBjb29yZGluYXRlcy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBlY2xpcExvbmcgICAgIFRoZSBlY2xpcHRpYyBsb25naXR1ZGUKKyAgICAgKiBAcGFyYW0gZWNsaXBMYXQgICAgICBUaGUgZWNsaXB0aWMgbGF0aXR1ZGUKKyAgICAgKgorICAgICAqIEByZXR1cm4gICAgICAgICAgICAgIFRoZSBjb3JyZXNwb25kaW5nIHBvaW50IGluIGVxdWF0b3JpYWwgY29vcmRpbmF0ZXMuCisgICAgICogQGludGVybmFsCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNC4gVGhpcyBjbGFzcyBtYXkgYmUgcmVtb3ZlZCBvciBtb2RpZmllZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgRXF1YXRvcmlhbCBlY2xpcHRpY1RvRXF1YXRvcmlhbChkb3VibGUgZWNsaXBMb25nLCBkb3VibGUgZWNsaXBMYXQpCisgICAgeworICAgICAgICAvLyBTZWUgcGFnZSA0MiBvZiAiUHJhY3RpYWwgQXN0cm9ub215IHdpdGggeW91ciBDYWxjdWxhdG9yIiwKKyAgICAgICAgLy8gYnkgUGV0ZXIgRHVmZmV0LVNtaXRoLCBmb3IgZGV0YWlscyBvbiB0aGUgYWxnb3JpdGhtLgorCisgICAgICAgIGRvdWJsZSBvYmxpcSA9IGVjbGlwdGljT2JsaXF1aXR5KCk7CisgICAgICAgIGRvdWJsZSBzaW5FID0gTWF0aC5zaW4ob2JsaXEpOworICAgICAgICBkb3VibGUgY29zRSA9IE1hdGguY29zKG9ibGlxKTsKKyAgICAgICAgCisgICAgICAgIGRvdWJsZSBzaW5MID0gTWF0aC5zaW4oZWNsaXBMb25nKTsKKyAgICAgICAgZG91YmxlIGNvc0wgPSBNYXRoLmNvcyhlY2xpcExvbmcpOworICAgICAgICAKKyAgICAgICAgZG91YmxlIHNpbkIgPSBNYXRoLnNpbihlY2xpcExhdCk7CisgICAgICAgIGRvdWJsZSBjb3NCID0gTWF0aC5jb3MoZWNsaXBMYXQpOworICAgICAgICBkb3VibGUgdGFuQiA9IE1hdGgudGFuKGVjbGlwTGF0KTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBuZXcgRXF1YXRvcmlhbChNYXRoLmF0YW4yKHNpbkwqY29zRSAtIHRhbkIqc2luRSwgY29zTCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5hc2luKHNpbkIqY29zRSArIGNvc0Iqc2luRSpzaW5MKSApOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlcnQgZnJvbSBlY2xpcHRpYyBsb25naXR1ZGUgdG8gZXF1YXRvcmlhbCBjb29yZGluYXRlcy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBlY2xpcExvbmcgICAgIFRoZSBlY2xpcHRpYyBsb25naXR1ZGUKKyAgICAgKgorICAgICAqIEByZXR1cm4gICAgICAgICAgICAgIFRoZSBjb3JyZXNwb25kaW5nIHBvaW50IGluIGVxdWF0b3JpYWwgY29vcmRpbmF0ZXMuCisgICAgICogQGludGVybmFsCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNC4gVGhpcyBjbGFzcyBtYXkgYmUgcmVtb3ZlZCBvciBtb2RpZmllZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgRXF1YXRvcmlhbCBlY2xpcHRpY1RvRXF1YXRvcmlhbChkb3VibGUgZWNsaXBMb25nKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVjbGlwdGljVG9FcXVhdG9yaWFsKGVjbGlwTG9uZywgMCk7ICAvLyBUT0RPOiBvcHRpbWl6ZQorICAgIH0KKworICAgIC8qKgorICAgICAqIEBpbnRlcm5hbAorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjQuIFRoaXMgY2xhc3MgbWF5IGJlIHJlbW92ZWQgb3IgbW9kaWZpZWQuCisgICAgICovCisgICAgcHVibGljIEhvcml6b24gZWNsaXB0aWNUb0hvcml6b24oZG91YmxlIGVjbGlwTG9uZykKKyAgICB7CisgICAgICAgIEVxdWF0b3JpYWwgZXF1YXRvcmlhbCA9IGVjbGlwdGljVG9FcXVhdG9yaWFsKGVjbGlwTG9uZyk7CisgICAgICAgIAorICAgICAgICBkb3VibGUgSCA9IGdldExvY2FsU2lkZXJlYWwoKSpQSS8xMiAtIGVxdWF0b3JpYWwuYXNjZW5zaW9uOyAgICAgLy8gSG91ci1hbmdsZQorICAgICAgICAKKyAgICAgICAgZG91YmxlIHNpbkggPSBNYXRoLnNpbihIKTsKKyAgICAgICAgZG91YmxlIGNvc0ggPSBNYXRoLmNvcyhIKTsKKyAgICAgICAgZG91YmxlIHNpbkQgPSBNYXRoLnNpbihlcXVhdG9yaWFsLmRlY2xpbmF0aW9uKTsKKyAgICAgICAgZG91YmxlIGNvc0QgPSBNYXRoLmNvcyhlcXVhdG9yaWFsLmRlY2xpbmF0aW9uKTsKKyAgICAgICAgZG91YmxlIHNpbkwgPSBNYXRoLnNpbihmTGF0aXR1ZGUpOworICAgICAgICBkb3VibGUgY29zTCA9IE1hdGguY29zKGZMYXRpdHVkZSk7CisgICAgICAgIAorICAgICAgICBkb3VibGUgYWx0aXR1ZGUgPSBNYXRoLmFzaW4oc2luRCpzaW5MICsgY29zRCpjb3NMKmNvc0gpOworICAgICAgICBkb3VibGUgYXppbXV0aCAgPSBNYXRoLmF0YW4yKC1jb3NEKmNvc0wqc2luSCwgc2luRCAtIHNpbkwgKiBNYXRoLnNpbihhbHRpdHVkZSkpOworCisgICAgICAgIHJldHVybiBuZXcgSG9yaXpvbihhemltdXRoLCBhbHRpdHVkZSk7CisgICAgfQorCisgICAgCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gVGhlIFN1bgorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIC8vCisgICAgLy8gUGFyYW1ldGVycyBvZiB0aGUgU3VuJ3Mgb3JiaXQgYXMgb2YgMS8xLzE5OTAKKyAgICAvLyBBbmdsZXMgYXJlIGluIHJhZGlhbnMgKGFmdGVyIG11bHRpcGx5aW5nIGJ5IFBJLzE4MCkKKyAgICAvLworICAgIGRvdWJsZSBqZG5FcG9jaCAgPSAyNDQ3ODkxLjU7ICAgICAgICAgICAvLyBKRE4gb2YgZXBvY2ggKEphbiAwLjAgMTk5MCkKKworICAgIGRvdWJsZSBzdW5FdGFHICAgPSAyNzkuNDAzMzAzICogUEkvMTgwOyAvLyBFY2xpcHRpYyBsb25naXR1ZGUgYXQgZXBvY2gKKyAgICBkb3VibGUgc3VuT21lZ2FHID0gMjgyLjc2ODQyMiAqIFBJLzE4MDsgLy8gRWNsaXB0aWMgbG9uZ2l0dWRlIG9mIHBlcmlnZWUKKyAgICBkb3VibGUgc3VuRSAgICAgID0gICAwLjAxNjcxMzsgICAgICAgICAgLy8gRWNjZW50cmljaXR5IG9mIG9yYml0CisgICAgZG91YmxlIHN1blIwICAgICA9ICAgMS40OTU1ODVlODsgICAgICAgIC8vIFNlbWktbWFqb3IgYXhpcyBpbiBLTQorICAgIGRvdWJsZSBzdW5UaGV0YTAgPSAgIDAuNTMzMTI4ICogUEkvMTgwOyAvLyBBbmd1bGFyIGRpYW1ldGVyIGF0IFIwCisKKyAgICAvKioKKyAgICAgKiBUaGUgbG9uZ2l0dWRlIG9mIHRoZSBzdW4gYXQgdGhlIHRpbWUgc3BlY2lmaWVkIGJ5IHRoaXMgb2JqZWN0LgorICAgICAqIFRoZSBsb25naXR1ZGUgaXMgbWVhc3VyZWQgaW4gcmFkaWFucyBhbG9uZyB0aGUgZWNsaXB0aWMKKyAgICAgKiBmcm9tIHRoZSAiZmlyc3QgcG9pbnQgb2YgQXJpZXMsIiB0aGUgcG9pbnQgYXQgd2hpY2ggdGhlIGVjbGlwdGljCisgICAgICogY3Jvc3NlcyB0aGUgZWFydGgncyBlcXVhdG9yaWFsIHBsYW5lIGF0IHRoZSB2ZXJuYWwgZXF1aW5veC4KKyAgICAgKiA8cD4KKyAgICAgKiBDdXJyZW50bHksIHRoaXMgbWV0aG9kIHVzZXMgYW4gYXBwcm94aW1hdGlvbiBvZiB0aGUgdHdvLWJvZHkgS2VwbGVyJ3MKKyAgICAgKiBlcXVhdGlvbiBmb3IgdGhlIGVhcnRoIGFuZCB0aGUgc3VuLiAgSXQgZG9lcyBub3QgdGFrZSBpbnRvIGFjY291bnQgdGhlCisgICAgICogcGVydHVyYmF0aW9ucyBjYXVzZWQgYnkgdGhlIG90aGVyIHBsYW5ldHMsIHRoZSBtb29uLCBldGMuCisgICAgICogQGludGVybmFsCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNC4gVGhpcyBjbGFzcyBtYXkgYmUgcmVtb3ZlZCBvciBtb2RpZmllZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgZG91YmxlIGdldFN1bkxvbmdpdHVkZSgpCisgICAgeworICAgICAgICAvLyBTZWUgcGFnZSA4NiBvZiAiUHJhY3RpYWwgQXN0cm9ub215IHdpdGggeW91ciBDYWxjdWxhdG9yIiwKKyAgICAgICAgLy8gYnkgUGV0ZXIgRHVmZmV0LVNtaXRoLCBmb3IgZGV0YWlscyBvbiB0aGUgYWxnb3JpdGhtLgorICAgICAgICAKKyAgICAgICAgaWYgKHN1bkxvbmdpdHVkZSA9PSBJTlZBTElEKSB7CisgICAgICAgICAgICBkb3VibGUgZGF5ID0gZ2V0SnVsaWFuRGF5KCkgLSBqZG5FcG9jaDsgICAgICAgLy8gRGF5cyBzaW5jZSBlcG9jaAorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBGaW5kIHRoZSBhbmd1bGFyIGRpc3RhbmNlIHRoZSBzdW4gaW4gYSBmaWN0aXRpb3VzCisgICAgICAgICAgICAvLyBjaXJjdWxhciBvcmJpdCBoYXMgdHJhdmVsbGVkIHNpbmNlIHRoZSBlcG9jaC4KKyAgICAgICAgICAgIGRvdWJsZSBlcG9jaEFuZ2xlID0gbm9ybTJQSShQSTIvVFJPUElDQUxfWUVBUipkYXkpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBUaGUgZXBvY2ggd2Fzbid0IGF0IHRoZSBzdW4ncyBwZXJpZ2VlOyBmaW5kIHRoZSBhbmd1bGFyIGRpc3RhbmNlCisgICAgICAgICAgICAvLyBzaW5jZSBwZXJpZ2VlLCB3aGljaCBpcyBjYWxsZWQgdGhlICJtZWFuIGFub21hbHkiCisgICAgICAgICAgICBtZWFuQW5vbWFseVN1biA9IG5vcm0yUEkoZXBvY2hBbmdsZSArIHN1bkV0YUcgLSBzdW5PbWVnYUcpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBOb3cgZmluZCB0aGUgInRydWUgYW5vbWFseSIsIGUuZy4gdGhlIHJlYWwgc29sYXIgbG9uZ2l0dWRlCisgICAgICAgICAgICAvLyBieSBzb2x2aW5nIEtlcGxlcidzIGVxdWF0aW9uIGZvciBhbiBlbGxpcHRpY2FsIG9yYml0CisgICAgICAgICAgICBzdW5Mb25naXR1ZGUgPSBub3JtMlBJKHRydWVBbm9tYWx5KG1lYW5Bbm9tYWx5U3VuLCBzdW5FKSArIHN1bk9tZWdhRyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHN1bkxvbmdpdHVkZTsKKyAgICB9CisgIAorICAgIC8qKgorICAgICAqIFRoZSBwb3NpdGlvbiBvZiB0aGUgc3VuIGF0IHRoaXMgb2JqZWN0J3MgY3VycmVudCBkYXRlIGFuZCB0aW1lLAorICAgICAqIGluIGVxdWF0b3JpYWwgY29vcmRpbmF0ZXMuCisgICAgICogQGludGVybmFsCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNC4gVGhpcyBjbGFzcyBtYXkgYmUgcmVtb3ZlZCBvciBtb2RpZmllZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgRXF1YXRvcmlhbCBnZXRTdW5Qb3NpdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIGVjbGlwdGljVG9FcXVhdG9yaWFsKGdldFN1bkxvbmdpdHVkZSgpLCAwKTsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgU29sYXJMb25naXR1ZGUgeworICAgICAgICBkb3VibGUgdmFsdWU7CisgICAgICAgIFNvbGFyTG9uZ2l0dWRlKGRvdWJsZSB2YWwpIHsgdmFsdWUgPSB2YWw7IH0KKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQ29uc3RhbnQgcmVwcmVzZW50aW5nIHRoZSB2ZXJuYWwgZXF1aW5veC4KKyAgICAgKiBGb3IgdXNlIHdpdGgge0BsaW5rICNnZXRTdW5UaW1lIGdldFN1blRpbWV9LiAKKyAgICAgKiBOb3RlOiBJbiB0aGlzIGNhc2UsICJ2ZXJuYWwiIHJlZmVycyB0byB0aGUgbm9ydGhlcm4gaGVtaXNwaGVyZSdzIHNlYXNvbnMuCisgICAgICogQGludGVybmFsCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNC4gVGhpcyBjbGFzcyBtYXkgYmUgcmVtb3ZlZCBvciBtb2RpZmllZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFNvbGFyTG9uZ2l0dWRlIFZFUk5BTF9FUVVJTk9YICA9IG5ldyBTb2xhckxvbmdpdHVkZSgwKTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBDb25zdGFudCByZXByZXNlbnRpbmcgdGhlIHN1bW1lciBzb2xzdGljZS4KKyAgICAgKiBGb3IgdXNlIHdpdGgge0BsaW5rICNnZXRTdW5UaW1lIGdldFN1blRpbWV9LgorICAgICAqIE5vdGU6IEluIHRoaXMgY2FzZSwgInN1bW1lciIgcmVmZXJzIHRvIHRoZSBub3J0aGVybiBoZW1pc3BoZXJlJ3Mgc2Vhc29ucy4KKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40LiBUaGlzIGNsYXNzIG1heSBiZSByZW1vdmVkIG9yIG1vZGlmaWVkLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU29sYXJMb25naXR1ZGUgU1VNTUVSX1NPTFNUSUNFID0gbmV3IFNvbGFyTG9uZ2l0dWRlKFBJLzIpOworICAgIAorICAgIC8qKgorICAgICAqIENvbnN0YW50IHJlcHJlc2VudGluZyB0aGUgYXV0dW1uYWwgZXF1aW5veC4KKyAgICAgKiBGb3IgdXNlIHdpdGgge0BsaW5rICNnZXRTdW5UaW1lIGdldFN1blRpbWV9LgorICAgICAqIE5vdGU6IEluIHRoaXMgY2FzZSwgImF1dHVtbiIgcmVmZXJzIHRvIHRoZSBub3J0aGVybiBoZW1pc3BoZXJlJ3Mgc2Vhc29ucy4KKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40LiBUaGlzIGNsYXNzIG1heSBiZSByZW1vdmVkIG9yIG1vZGlmaWVkLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU29sYXJMb25naXR1ZGUgQVVUVU1OX0VRVUlOT1ggID0gbmV3IFNvbGFyTG9uZ2l0dWRlKFBJKTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBDb25zdGFudCByZXByZXNlbnRpbmcgdGhlIHdpbnRlciBzb2xzdGljZS4KKyAgICAgKiBGb3IgdXNlIHdpdGgge0BsaW5rICNnZXRTdW5UaW1lIGdldFN1blRpbWV9LgorICAgICAqIE5vdGU6IEluIHRoaXMgY2FzZSwgIndpbnRlciIgcmVmZXJzIHRvIHRoZSBub3J0aGVybiBoZW1pc3BoZXJlJ3Mgc2Vhc29ucy4KKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40LiBUaGlzIGNsYXNzIG1heSBiZSByZW1vdmVkIG9yIG1vZGlmaWVkLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU29sYXJMb25naXR1ZGUgV0lOVEVSX1NPTFNUSUNFID0gbmV3IFNvbGFyTG9uZ2l0dWRlKChQSSozKS8yKTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBGaW5kIHRoZSBuZXh0IHRpbWUgYXQgd2hpY2ggdGhlIHN1bidzIGVjbGlwdGljIGxvbmdpdHVkZSB3aWxsIGhhdmUKKyAgICAgKiB0aGUgZGVzaXJlZCB2YWx1ZS4gIAorICAgICAqIEBpbnRlcm5hbAorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjQuIFRoaXMgY2xhc3MgbWF5IGJlIHJlbW92ZWQgb3IgbW9kaWZpZWQuCisgICAgICovCisgICAgcHVibGljIGxvbmcgZ2V0U3VuVGltZShkb3VibGUgZGVzaXJlZCwgYm9vbGVhbiBuZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRpbWVPZkFuZ2xlKCBuZXcgQW5nbGVGdW5jKCkgeyBwdWJsaWMgZG91YmxlIGV2YWwoKSB7IHJldHVybiBnZXRTdW5Mb25naXR1ZGUoKTsgfSB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2lyZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJPUElDQUxfWUVBUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNSU5VVEVfTVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEZpbmQgdGhlIG5leHQgdGltZSBhdCB3aGljaCB0aGUgc3VuJ3MgZWNsaXB0aWMgbG9uZ2l0dWRlIHdpbGwgaGF2ZQorICAgICAqIHRoZSBkZXNpcmVkIHZhbHVlLiAgCisgICAgICogQGludGVybmFsCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNC4gVGhpcyBjbGFzcyBtYXkgYmUgcmVtb3ZlZCBvciBtb2RpZmllZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgbG9uZyBnZXRTdW5UaW1lKFNvbGFyTG9uZ2l0dWRlIGRlc2lyZWQsIGJvb2xlYW4gbmV4dCkgeworICAgICAgICByZXR1cm4gZ2V0U3VuVGltZShkZXNpcmVkLnZhbHVlLCBuZXh0KTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgdGltZSAoR01UKSBvZiBzdW5yaXNlIG9yIHN1bnNldCBvbiB0aGUgbG9jYWwgZGF0ZSB0byB3aGljaAorICAgICAqIHRoaXMgY2FsZW5kYXIgaXMgY3VycmVudGx5IHNldC4KKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40LiBUaGlzIGNsYXNzIG1heSBiZSByZW1vdmVkIG9yIG1vZGlmaWVkLgorICAgICAqLworICAgIHB1YmxpYyBsb25nIGdldFN1blJpc2VTZXQoYm9vbGVhbiByaXNlKQorICAgIHsKKyAgICAgICAgLy8gTWFrZSBhIHJvdWdoIGd1ZXNzOiA2YW0gb3IgNnBtIGxvY2FsIHRpbWUgb24gdGhlIGN1cnJlbnQgZGF5CisgICAgICAgIGxvbmcgbm9vbiA9ICgodGltZSArIGZHbXRPZmZzZXQpL0RBWV9NUykqREFZX01TIC0gZkdtdE9mZnNldCArIDEyKkhPVVJfTVM7CisgICAgICAgIAorICAgICAgICBzZXRUaW1lKG5vb24gKyAobG9uZykoKHJpc2UgPyAtNiA6IDYpICogSE9VUl9NUykpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIHJpc2VPclNldChuZXcgQ29vcmRGdW5jKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBFcXVhdG9yaWFsIGV2YWwoKSB7IHJldHVybiBnZXRTdW5Qb3NpdGlvbigpOyB9CisgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICByaXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgIC41MzMgKiBERUdfUkFELCAgICAgICAgLy8gQW5ndWxhciBEaWFtZXRlcgorICAgICAgICAgICAgICAgICAgICAgICAgIDM0IC82MC4wICogREVHX1JBRCwgICAgLy8gUmVmcmFjdGlvbiBjb3JyZWN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgTUlOVVRFX01TKTsgICAgICAgICAgICAvLyBEZXNpcmVkIGFjY3VyYWN5CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gVGhlIE1vb24KKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICBzdGF0aWMgZmluYWwgZG91YmxlIG1vb25MMCA9IDMxOC4zNTE2NDggKiBQSS8xODA7ICAgLy8gTWVhbiBsb25nLiBhdCBlcG9jaAorICAgIHN0YXRpYyBmaW5hbCBkb3VibGUgbW9vblAwID0gIDM2LjM0MDQxMCAqIFBJLzE4MDsgICAvLyBNZWFuIGxvbmcuIG9mIHBlcmlnZWUKKyAgICBzdGF0aWMgZmluYWwgZG91YmxlIG1vb25OMCA9IDMxOC41MTAxMDcgKiBQSS8xODA7ICAgLy8gTWVhbiBsb25nLiBvZiBub2RlCisgICAgc3RhdGljIGZpbmFsIGRvdWJsZSBtb29uSSAgPSAgIDUuMTQ1MzY2ICogUEkvMTgwOyAgIC8vIEluY2xpbmF0aW9uIG9mIG9yYml0CisgICAgc3RhdGljIGZpbmFsIGRvdWJsZSBtb29uRSAgPSAgIDAuMDU0OTAwOyAgICAgICAgICAgIC8vIEVjY2VudHJpY2l0eSBvZiBvcmJpdAorICAgIAorICAgIC8vIFRoZXNlIGFyZW4ndCB1c2VkIHJpZ2h0IG5vdworICAgIHN0YXRpYyBmaW5hbCBkb3VibGUgbW9vbkEgID0gICAzLjg0NDAxZTU7ICAgICAgICAgICAvLyBzZW1pLW1ham9yIGF4aXMgKGttKQorICAgIHN0YXRpYyBmaW5hbCBkb3VibGUgbW9vblQwID0gICAwLjUxODEgKiBQSS8xODA7ICAgICAvLyBBbmd1bGFyIHNpemUgYXQgZGlzdGFuY2UgQQorICAgIHN0YXRpYyBmaW5hbCBkb3VibGUgbW9vblBpID0gICAwLjk1MDcgKiBQSS8xODA7ICAgICAvLyBQYXJhbGxheCBhdCBkaXN0YW5jZSBBCisgICAgCisgICAgLyoqCisgICAgICogVGhlIHBvc2l0aW9uIG9mIHRoZSBtb29uIGF0IHRoZSB0aW1lIHNldCBvbiB0aGlzCisgICAgICogb2JqZWN0LCBpbiBlcXVhdG9yaWFsIGNvb3JkaW5hdGVzLgorICAgICAqIEBpbnRlcm5hbAorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjQuIFRoaXMgY2xhc3MgbWF5IGJlIHJlbW92ZWQgb3IgbW9kaWZpZWQuCisgICAgICovCisgICAgcHVibGljIEVxdWF0b3JpYWwgZ2V0TW9vblBvc2l0aW9uKCkKKyAgICB7CisgICAgICAgIC8vCisgICAgICAgIC8vIFNlZSBwYWdlIDE0MiBvZiAiUHJhY3RpYWwgQXN0cm9ub215IHdpdGggeW91ciBDYWxjdWxhdG9yIiwKKyAgICAgICAgLy8gYnkgUGV0ZXIgRHVmZmV0LVNtaXRoLCBmb3IgZGV0YWlscyBvbiB0aGUgYWxnb3JpdGhtLgorICAgICAgICAvLworICAgICAgICBpZiAobW9vblBvc2l0aW9uID09IG51bGwpIHsKKyAgICAgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgc29sYXIgbG9uZ2l0dWRlLiAgSGFzIHRoZSBzaWRlIGVmZmVjdCBvZgorICAgICAgICAgICAgLy8gZmlsbGluZyBpbiAibWVhbkFub21hbHlTdW4iIGFzIHdlbGwuCisgICAgICAgICAgICBkb3VibGUgc3VuTG9uZ2l0dWRlID0gZ2V0U3VuTG9uZ2l0dWRlKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBGaW5kIHRoZSAjIG9mIGRheXMgc2luY2UgdGhlIGVwb2NoIG9mIG91ciBvcmJpdGFsIHBhcmFtZXRlcnMuCisgICAgICAgICAgICAvLyBUT0RPOiBDb252ZXJ0IHRoZSB0aW1lIG9mIGRheSBwb3J0aW9uIGludG8gZXBoZW1lcmlzIHRpbWUKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICBkb3VibGUgZGF5ID0gZ2V0SnVsaWFuRGF5KCkgLSBqZG5FcG9jaDsgICAgICAgLy8gRGF5cyBzaW5jZSBlcG9jaAorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIG1lYW4gbG9uZ2l0dWRlIGFuZCBhbm9tYWx5IG9mIHRoZSBtb29uLCBiYXNlZCBvbgorICAgICAgICAgICAgLy8gYSBjaXJjdWxhciBvcmJpdC4gIFNpbWlsYXIgdG8gdGhlIGNvcnJlc3BvbmRpbmcgc29sYXIgY2FsY3VsYXRpb24uCisgICAgICAgICAgICBkb3VibGUgbWVhbkxvbmdpdHVkZSA9IG5vcm0yUEkoMTMuMTc2Mzk2NipQSS8xODAqZGF5ICsgbW9vbkwwKTsKKyAgICAgICAgICAgIGRvdWJsZSBtZWFuQW5vbWFseU1vb24gPSBub3JtMlBJKG1lYW5Mb25naXR1ZGUgLSAwLjExMTQwNDEqUEkvMTgwICogZGF5IC0gbW9vblAwKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgZm9sbG93aW5nIGNvcnJlY3Rpb25zOgorICAgICAgICAgICAgLy8gIEV2ZWN0aW9uOiAgIHRoZSBzdW4ncyBncmF2aXR5IGFmZmVjdHMgdGhlIG1vb24ncyBlY2NlbnRyaWNpdHkKKyAgICAgICAgICAgIC8vICBBbm51YWwgRXFuOiB2YXJpYXRpb24gaW4gdGhlIGVmZmVjdCBkdWUgdG8gZWFydGgtc3VuIGRpc3RhbmNlCisgICAgICAgICAgICAvLyAgQTM6ICAgICAgICAgY29ycmVjdGlvbiBmYWN0b3IgKGZvciA/Pz8pCisgICAgICAgICAgICAvLworICAgICAgICAgICAgZG91YmxlIGV2ZWN0aW9uID0gMS4yNzM5KlBJLzE4MCAqIE1hdGguc2luKDIgKiAobWVhbkxvbmdpdHVkZSAtIHN1bkxvbmdpdHVkZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gbWVhbkFub21hbHlNb29uKTsKKyAgICAgICAgICAgIGRvdWJsZSBhbm51YWwgICA9IDAuMTg1OCpQSS8xODAgKiBNYXRoLnNpbihtZWFuQW5vbWFseVN1bik7CisgICAgICAgICAgICBkb3VibGUgYTMgICAgICAgPSAwLjM3MDAqUEkvMTgwICogTWF0aC5zaW4obWVhbkFub21hbHlTdW4pOworCisgICAgICAgICAgICBtZWFuQW5vbWFseU1vb24gKz0gZXZlY3Rpb24gLSBhbm51YWwgLSBhMzsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIE1vcmUgY29ycmVjdGlvbiBmYWN0b3JzOgorICAgICAgICAgICAgLy8gIGNlbnRlciAgZXF1YXRpb24gb2YgdGhlIGNlbnRlciBjb3JyZWN0aW9uCisgICAgICAgICAgICAvLyAgYTQgICAgICB5ZXQgYW5vdGhlciBlcnJvciBjb3JyZWN0aW9uICg/Pz8pCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gVE9ETzogU2tpcCB0aGUgZXF1YXRpb24gb2YgdGhlIGNlbnRlciBjb3JyZWN0aW9uIGFuZCBzb2x2ZSBLZXBsZXIncyBlcW4/CisgICAgICAgICAgICAvLworICAgICAgICAgICAgZG91YmxlIGNlbnRlciA9IDYuMjg4NipQSS8xODAgKiBNYXRoLnNpbihtZWFuQW5vbWFseU1vb24pOworICAgICAgICAgICAgZG91YmxlIGE0ID0gICAgIDAuMjE0MCpQSS8xODAgKiBNYXRoLnNpbigyICogbWVhbkFub21hbHlNb29uKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gTm93IGZpbmQgdGhlIG1vb24ncyBjb3JyZWN0ZWQgbG9uZ2l0dWRlCisgICAgICAgICAgICBtb29uTG9uZ2l0dWRlID0gbWVhbkxvbmdpdHVkZSArIGV2ZWN0aW9uICsgY2VudGVyIC0gYW5udWFsICsgYTQ7CisKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBBbmQgZmluYWxseSwgZmluZCB0aGUgdmFyaWF0aW9uLCBjYXVzZWQgYnkgdGhlIGZhY3QgdGhhdCB0aGUgc3VuJ3MKKyAgICAgICAgICAgIC8vIGdyYXZpdGF0aW9uYWwgcHVsbCBvbiB0aGUgbW9vbiB2YXJpZXMgZGVwZW5kaW5nIG9uIHdoaWNoIHNpZGUgb2YKKyAgICAgICAgICAgIC8vIHRoZSBlYXJ0aCB0aGUgbW9vbiBpcyBvbgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIGRvdWJsZSB2YXJpYXRpb24gPSAwLjY1ODMqUEkvMTgwICogTWF0aC5zaW4oMioobW9vbkxvbmdpdHVkZSAtIHN1bkxvbmdpdHVkZSkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBtb29uTG9uZ2l0dWRlICs9IHZhcmlhdGlvbjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIFdoYXQgd2UndmUgY2FsY3VsYXRlZCBzbyBmYXIgaXMgdGhlIG1vb24ncyBsb25naXR1ZGUgaW4gdGhlIHBsYW5lCisgICAgICAgICAgICAvLyBvZiBpdHMgb3duIG9yYml0LiAgTm93IG1hcCB0byB0aGUgZWNsaXB0aWMgdG8gZ2V0IHRoZSBsYXRpdHVkZQorICAgICAgICAgICAgLy8gYW5kIGxvbmdpdHVkZS4gIEZpcnN0IHdlIG5lZWQgdG8gZmluZCB0aGUgbG9uZ2l0dWRlIG9mIHRoZSBhc2NlbmRpbmcKKyAgICAgICAgICAgIC8vIG5vZGUsIHRoZSBwb3NpdGlvbiBvbiB0aGUgZWNsaXB0aWMgd2hlcmUgaXQgaXMgY3Jvc3NlZCBieSB0aGUgbW9vbidzCisgICAgICAgICAgICAvLyBvcmJpdCBhcyBpdCBjcm9zc2VzIGZyb20gdGhlIHNvdXRoZXJuIHRvIHRoZSBub3J0aGVybiBoZW1pc3BoZXJlLgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIGRvdWJsZSBub2RlTG9uZ2l0dWRlID0gbm9ybTJQSShtb29uTjAgLSAwLjA1Mjk1MzkqUEkvMTgwICogZGF5KTsKKworICAgICAgICAgICAgbm9kZUxvbmdpdHVkZSAtPSAwLjE2KlBJLzE4MCAqIE1hdGguc2luKG1lYW5Bbm9tYWx5U3VuKTsKKworICAgICAgICAgICAgZG91YmxlIHkgPSBNYXRoLnNpbihtb29uTG9uZ2l0dWRlIC0gbm9kZUxvbmdpdHVkZSk7CisgICAgICAgICAgICBkb3VibGUgeCA9IE1hdGguY29zKG1vb25Mb25naXR1ZGUgLSBub2RlTG9uZ2l0dWRlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgbW9vbkVjbGlwTG9uZyA9IE1hdGguYXRhbjIoeSpNYXRoLmNvcyhtb29uSSksIHgpICsgbm9kZUxvbmdpdHVkZTsKKyAgICAgICAgICAgIGRvdWJsZSBtb29uRWNsaXBMYXQgPSBNYXRoLmFzaW4oeSAqIE1hdGguc2luKG1vb25JKSk7CisKKyAgICAgICAgICAgIG1vb25Qb3NpdGlvbiA9IGVjbGlwdGljVG9FcXVhdG9yaWFsKG1vb25FY2xpcExvbmcsIG1vb25FY2xpcExhdCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1vb25Qb3NpdGlvbjsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogVGhlICJhZ2UiIG9mIHRoZSBtb29uIGF0IHRoZSB0aW1lIHNwZWNpZmllZCBpbiB0aGlzIG9iamVjdC4KKyAgICAgKiBUaGlzIGlzIHJlYWxseSB0aGUgYW5nbGUgYmV0d2VlbiB0aGUKKyAgICAgKiBjdXJyZW50IGVjbGlwdGljIGxvbmdpdHVkZXMgb2YgdGhlIHN1biBhbmQgdGhlIG1vb24sCisgICAgICogbWVhc3VyZWQgaW4gcmFkaWFucy4KKyAgICAgKgorICAgICAqIEBzZWUgI2dldE1vb25QaGFzZQorICAgICAqIEBpbnRlcm5hbAorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjQuIFRoaXMgY2xhc3MgbWF5IGJlIHJlbW92ZWQgb3IgbW9kaWZpZWQuCisgICAgICovCisgICAgcHVibGljIGRvdWJsZSBnZXRNb29uQWdlKCkgeworICAgICAgICAvLyBTZWUgcGFnZSAxNDcgb2YgIlByYWN0aWFsIEFzdHJvbm9teSB3aXRoIHlvdXIgQ2FsY3VsYXRvciIsCisgICAgICAgIC8vIGJ5IFBldGVyIER1ZmZldC1TbWl0aCwgZm9yIGRldGFpbHMgb24gdGhlIGFsZ29yaXRobS4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gRm9yY2UgdGhlIG1vb24ncyBwb3NpdGlvbiB0byBiZSBjYWxjdWxhdGVkLiAgV2UncmUgZ29pbmcgdG8gdXNlCisgICAgICAgIC8vIHNvbWUgdGhlIGludGVybWVkaWF0ZSByZXN1bHRzIGNhY2hlZCBkdXJpbmcgdGhhdCBjYWxjdWxhdGlvbi4KKyAgICAgICAgLy8KKyAgICAgICAgZ2V0TW9vblBvc2l0aW9uKCk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gbm9ybTJQSShtb29uRWNsaXBMb25nIC0gc3VuTG9uZ2l0dWRlKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQ2FsY3VsYXRlIHRoZSBwaGFzZSBvZiB0aGUgbW9vbiBhdCB0aGUgdGltZSBzZXQgaW4gdGhpcyBvYmplY3QuCisgICAgICogVGhlIHJldHVybmVkIHBoYXNlIGlzIGEgPGNvZGU+ZG91YmxlPC9jb2RlPiBpbiB0aGUgcmFuZ2UKKyAgICAgKiA8Y29kZT4wIDw9IHBoYXNlIDwgMTwvY29kZT4sIGludGVycHJldGVkIGFzIGZvbGxvd3M6CisgICAgICogPHVsPgorICAgICAqIDxsaT4wLjAwOiBOZXcgbW9vbgorICAgICAqIDxsaT4wLjI1OiBGaXJzdCBxdWFydGVyCisgICAgICogPGxpPjAuNTA6IEZ1bGwgbW9vbgorICAgICAqIDxsaT4wLjc1OiBMYXN0IHF1YXJ0ZXIKKyAgICAgKiA8L3VsPgorICAgICAqCisgICAgICogQHNlZSAjZ2V0TW9vbkFnZQorICAgICAqIEBpbnRlcm5hbAorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjQuIFRoaXMgY2xhc3MgbWF5IGJlIHJlbW92ZWQgb3IgbW9kaWZpZWQuCisgICAgICovCisgICAgcHVibGljIGRvdWJsZSBnZXRNb29uUGhhc2UoKSB7CisgICAgICAgIC8vIFNlZSBwYWdlIDE0NyBvZiAiUHJhY3RpYWwgQXN0cm9ub215IHdpdGggeW91ciBDYWxjdWxhdG9yIiwKKyAgICAgICAgLy8gYnkgUGV0ZXIgRHVmZmV0LVNtaXRoLCBmb3IgZGV0YWlscyBvbiB0aGUgYWxnb3JpdGhtLgorICAgICAgICByZXR1cm4gMC41ICogKDEgLSBNYXRoLmNvcyhnZXRNb29uQWdlKCkpKTsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgTW9vbkFnZSB7CisgICAgICAgIGRvdWJsZSB2YWx1ZTsKKyAgICAgICAgTW9vbkFnZShkb3VibGUgdmFsKSB7IHZhbHVlID0gdmFsOyB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIENvbnN0YW50IHJlcHJlc2VudGluZyBhIG5ldyBtb29uLgorICAgICAqIEZvciB1c2Ugd2l0aCB7QGxpbmsgI2dldE1vb25UaW1lIGdldE1vb25UaW1lfQorICAgICAqIEBpbnRlcm5hbAorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjQuIFRoaXMgY2xhc3MgbWF5IGJlIHJlbW92ZWQgb3IgbW9kaWZpZWQuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBNb29uQWdlIE5FV19NT09OICAgICAgPSBuZXcgTW9vbkFnZSgwKTsKKworICAgIC8qKgorICAgICAqIENvbnN0YW50IHJlcHJlc2VudGluZyB0aGUgbW9vbidzIGZpcnN0IHF1YXJ0ZXIuCisgICAgICogRm9yIHVzZSB3aXRoIHtAbGluayAjZ2V0TW9vblRpbWUgZ2V0TW9vblRpbWV9CisgICAgICogQGludGVybmFsCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNC4gVGhpcyBjbGFzcyBtYXkgYmUgcmVtb3ZlZCBvciBtb2RpZmllZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIE1vb25BZ2UgRklSU1RfUVVBUlRFUiA9IG5ldyBNb29uQWdlKFBJLzIpOworICAgIAorICAgIC8qKgorICAgICAqIENvbnN0YW50IHJlcHJlc2VudGluZyBhIGZ1bGwgbW9vbi4KKyAgICAgKiBGb3IgdXNlIHdpdGgge0BsaW5rICNnZXRNb29uVGltZSBnZXRNb29uVGltZX0KKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40LiBUaGlzIGNsYXNzIG1heSBiZSByZW1vdmVkIG9yIG1vZGlmaWVkLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgTW9vbkFnZSBGVUxMX01PT04gICAgID0gbmV3IE1vb25BZ2UoUEkpOworICAgIAorICAgIC8qKgorICAgICAqIENvbnN0YW50IHJlcHJlc2VudGluZyB0aGUgbW9vbidzIGxhc3QgcXVhcnRlci4KKyAgICAgKiBGb3IgdXNlIHdpdGgge0BsaW5rICNnZXRNb29uVGltZSBnZXRNb29uVGltZX0KKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40LiBUaGlzIGNsYXNzIG1heSBiZSByZW1vdmVkIG9yIG1vZGlmaWVkLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgTW9vbkFnZSBMQVNUX1FVQVJURVIgID0gbmV3IE1vb25BZ2UoKFBJKjMpLzIpOworICAgIAorICAgIC8qKgorICAgICAqIEZpbmQgdGhlIG5leHQgb3IgcHJldmlvdXMgdGltZSBhdCB3aGljaCB0aGUgTW9vbidzIGVjbGlwdGljCisgICAgICogbG9uZ2l0dWRlIHdpbGwgaGF2ZSB0aGUgZGVzaXJlZCB2YWx1ZS4gIAorICAgICAqIDxwPgorICAgICAqIEBwYXJhbSBkZXNpcmVkICAgVGhlIGRlc2lyZWQgbG9uZ2l0dWRlLgorICAgICAqIEBwYXJhbSBuZXh0ICAgICAgPHR0PnRydWU8L3R0PiBpZiB0aGUgbmV4dCBvY2N1cnJhbmNlIG9mIHRoZSBwaGFzZQorICAgICAqICAgICAgICAgICAgICAgICAgaXMgZGVzaXJlZCwgPHR0PmZhbHNlPC90dD4gZm9yIHRoZSBwcmV2aW91cyBvY2N1cnJhbmNlLiAKKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40LiBUaGlzIGNsYXNzIG1heSBiZSByZW1vdmVkIG9yIG1vZGlmaWVkLgorICAgICAqLworICAgIHB1YmxpYyBsb25nIGdldE1vb25UaW1lKGRvdWJsZSBkZXNpcmVkLCBib29sZWFuIG5leHQpCisgICAgeworICAgICAgICByZXR1cm4gdGltZU9mQW5nbGUoIG5ldyBBbmdsZUZ1bmMoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIGRvdWJsZSBldmFsKCkgeyByZXR1cm4gZ2V0TW9vbkFnZSgpOyB9IH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzaXJlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTWU5PRElDX01PTlRILAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1JTlVURV9NUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0KTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogRmluZCB0aGUgbmV4dCBvciBwcmV2aW91cyB0aW1lIGF0IHdoaWNoIHRoZSBtb29uIHdpbGwgYmUgaW4gdGhlCisgICAgICogZGVzaXJlZCBwaGFzZS4KKyAgICAgKiA8cD4KKyAgICAgKiBAcGFyYW0gZGVzaXJlZCAgIFRoZSBkZXNpcmVkIHBoYXNlIG9mIHRoZSBtb29uLgorICAgICAqIEBwYXJhbSBuZXh0ICAgICAgPHR0PnRydWU8L3R0PiBpZiB0aGUgbmV4dCBvY2N1cnJhbmNlIG9mIHRoZSBwaGFzZQorICAgICAqICAgICAgICAgICAgICAgICAgaXMgZGVzaXJlZCwgPHR0PmZhbHNlPC90dD4gZm9yIHRoZSBwcmV2aW91cyBvY2N1cnJhbmNlLiAKKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40LiBUaGlzIGNsYXNzIG1heSBiZSByZW1vdmVkIG9yIG1vZGlmaWVkLgorICAgICAqLworICAgIHB1YmxpYyBsb25nIGdldE1vb25UaW1lKE1vb25BZ2UgZGVzaXJlZCwgYm9vbGVhbiBuZXh0KSB7CisgICAgICAgIHJldHVybiBnZXRNb29uVGltZShkZXNpcmVkLnZhbHVlLCBuZXh0KTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgdGltZSAoR01UKSBvZiBzdW5yaXNlIG9yIHN1bnNldCBvbiB0aGUgbG9jYWwgZGF0ZSB0byB3aGljaAorICAgICAqIHRoaXMgY2FsZW5kYXIgaXMgY3VycmVudGx5IHNldC4KKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40LiBUaGlzIGNsYXNzIG1heSBiZSByZW1vdmVkIG9yIG1vZGlmaWVkLgorICAgICAqLworICAgIHB1YmxpYyBsb25nIGdldE1vb25SaXNlU2V0KGJvb2xlYW4gcmlzZSkKKyAgICB7CisgICAgICAgIHJldHVybiByaXNlT3JTZXQobmV3IENvb3JkRnVuYygpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgRXF1YXRvcmlhbCBldmFsKCkgeyByZXR1cm4gZ2V0TW9vblBvc2l0aW9uKCk7IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgIHJpc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgLjUzMyAqIERFR19SQUQsICAgICAgICAvLyBBbmd1bGFyIERpYW1ldGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgMzQgLzYwLjAgKiBERUdfUkFELCAgICAvLyBSZWZyYWN0aW9uIGNvcnJlY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICBNSU5VVEVfTVMpOyAgICAgICAgICAgIC8vIERlc2lyZWQgYWNjdXJhY3kKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBJbnRlcnBvbGF0aW9uIG1ldGhvZHMgZm9yIGZpbmRpbmcgdGhlIHRpbWUgYXQgd2hpY2ggYSBnaXZlbiBldmVudCBvY2N1cnMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICBwcml2YXRlIGludGVyZmFjZSBBbmdsZUZ1bmMgeworICAgICAgICBwdWJsaWMgZG91YmxlIGV2YWwoKTsKKyAgICB9OworICAgIAorICAgIHByaXZhdGUgbG9uZyB0aW1lT2ZBbmdsZShBbmdsZUZ1bmMgZnVuYywgZG91YmxlIGRlc2lyZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBwZXJpb2REYXlzLCBsb25nIGVwc2lsb24sIGJvb2xlYW4gbmV4dCkKKyAgICB7CisgICAgICAgIC8vIEZpbmQgdGhlIHZhbHVlIG9mIHRoZSBmdW5jdGlvbiBhdCB0aGUgY3VycmVudCB0aW1lCisgICAgICAgIGRvdWJsZSBsYXN0QW5nbGUgPSBmdW5jLmV2YWwoKTsKKyAgICAgICAgCisgICAgICAgIC8vIEZpbmQgb3V0IGhvdyBmYXIgd2UgYXJlIGZyb20gdGhlIGRlc2lyZWQgYW5nbGUKKyAgICAgICAgZG91YmxlIGRlbHRhQW5nbGUgPSBub3JtMlBJKGRlc2lyZWQgLSBsYXN0QW5nbGUpIDsKKyAgICAgICAgCisgICAgICAgIC8vIFVzaW5nIHRoZSBhdmVyYWdlIHBlcmlvZCwgZXN0aW1hdGUgdGhlIG5leHQgKG9yIHByZXZpb3VzKSB0aW1lIGF0CisgICAgICAgIC8vIHdoaWNoIHRoZSBkZXNpcmVkIGFuZ2xlIG9jY3Vycy4KKyAgICAgICAgZG91YmxlIGRlbHRhVCA9ICAoZGVsdGFBbmdsZSArIChuZXh0ID8gMCA6IC1QSTIpKSAqIChwZXJpb2REYXlzKkRBWV9NUykgLyBQSTI7CisgICAgICAgIAorICAgICAgICBkb3VibGUgbGFzdERlbHRhVCA9IGRlbHRhVDsgLy8gTGl1CisgICAgICAgIGxvbmcgc3RhcnRUaW1lID0gdGltZTsgLy8gTGl1CisgICAgICAgIAorICAgICAgICBzZXRUaW1lKHRpbWUgKyAobG9uZylkZWx0YVQpOworCisgICAgICAgIC8vIE5vdyBpdGVyYXRlIHVudGlsIHdlIGdldCB0aGUgZXJyb3IgYmVsb3cgZXBzaWxvbi4gIFRocm91Z2hvdXQKKyAgICAgICAgLy8gdGhpcyBsb29wIHdlIHVzZSBub3JtUEkgdG8gZ2V0IHZhbHVlcyBpbiB0aGUgcmFuZ2UgLVBpIHRvIFBpLAorICAgICAgICAvLyBzaW5jZSB3ZSdyZSB1c2luZyB0aGVtIGFzIGNvcnJlY3Rpb24gZmFjdG9ycyByYXRoZXIgdGhhbiBhYnNvbHV0ZSBhbmdsZXMuCisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIC8vIEV2YWx1YXRlIHRoZSBmdW5jdGlvbiBhdCB0aGUgdGltZSB3ZSd2ZSBlc3RpbWF0ZWQKKyAgICAgICAgICAgIGRvdWJsZSBhbmdsZSA9IGZ1bmMuZXZhbCgpOworCisgICAgICAgICAgICAvLyBGaW5kIHRoZSAjIG9mIG1pbGxpc2Vjb25kcyBwZXIgcmFkaWFuIGF0IHRoaXMgcG9pbnQgb24gdGhlIGN1cnZlCisgICAgICAgICAgICBkb3VibGUgZmFjdG9yID0gTWF0aC5hYnMoZGVsdGFUIC8gbm9ybVBJKGFuZ2xlLWxhc3RBbmdsZSkpOworCisgICAgICAgICAgICAvLyBDb3JyZWN0IHRoZSB0aW1lIGVzdGltYXRlIGJhc2VkIG9uIGhvdyBmYXIgb2ZmIHRoZSBhbmdsZSBpcworICAgICAgICAgICAgZGVsdGFUID0gbm9ybVBJKGRlc2lyZWQgLSBhbmdsZSkgKiBmYWN0b3I7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIEhBQ0s6CisgICAgICAgICAgICAvLyAKKyAgICAgICAgICAgIC8vIElmIGFicyhkZWx0YVQpIGJlZ2lucyB0byBkaXZlcmdlIHdlIG5lZWQgdG8gcXVpdCB0aGlzIGxvb3AuCisgICAgICAgICAgICAvLyBUaGlzIG9ubHkgYXBwZWFycyB0byBoYXBwZW4gd2hlbiBhdHRlbXB0aW5nIHRvIGxvY2F0ZSwgZm9yCisgICAgICAgICAgICAvLyBleGFtcGxlLCBhIG5ldyBtb29uIG9uIHRoZSBkYXkgb2YgdGhlIG5ldyBtb29uLiAgRS5nLjoKKyAgICAgICAgICAgIC8vIAorICAgICAgICAgICAgLy8gVGhpcyByZXN1bHQgaXMgY29ycmVjdDoKKyAgICAgICAgICAgIC8vIG5ld01vb24oNzUwOChNb24gSnVsIDIzIDAwOjAwOjAwIENTVCAxOTkwLGZhbHNlKSk9CisgICAgICAgICAgICAvLyAgIFN1biBKdWwgMjIgMTA6NTc6NDEgQ1NUIDE5OTAKKyAgICAgICAgICAgIC8vIAorICAgICAgICAgICAgLy8gQnV0IGF0dGVtcHRpbmcgdG8gbWFrZSB0aGUgc2FtZSBjYWxsIGEgZGF5IGVhcmxpZXIgY2F1c2VzIGRlbHRhVAorICAgICAgICAgICAgLy8gdG8gZGl2ZXJnZToKKyAgICAgICAgICAgIC8vIENhbGVuZGFyQXN0cm9ub21lci50aW1lT2ZBbmdsZSgpIGRpdmVyZ2luZzogMS4zNDg1MDg3Mjc1NzU2MjVFOSAtPgorICAgICAgICAgICAgLy8gICAxLjM2NDk4Mjg1NDAyMjQwMzJFOQorICAgICAgICAgICAgLy8gbmV3TW9vbig3NTA3KFN1biBKdWwgMjIgMDA6MDA6MDAgQ1NUIDE5OTAsZmFsc2UpKT0KKyAgICAgICAgICAgIC8vICAgU3VuIEp1bCAwOCAxMzo1NjoxNSBDU1QgMTk5MAorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIEFzIGEgdGVtcG9yYXJ5IHNvbHV0aW9uLCB3ZSBjYXRjaCB0aGlzIHNwZWNpZmljIGNvbmRpdGlvbiBhbmQKKyAgICAgICAgICAgIC8vIGFkanVzdCBvdXIgc3RhcnQgdGltZSBieSBvbmUgZWlnaHRoIHBlcmlvZCBkYXlzIChlaXRoZXIgZm9yd2FyZAorICAgICAgICAgICAgLy8gb3IgYmFja3dhcmQpIGFuZCB0cnkgYWdhaW4uCisgICAgICAgICAgICAvLyBMaXUgMTEvOS8wMAorICAgICAgICAgICAgaWYgKE1hdGguYWJzKGRlbHRhVCkgPiBNYXRoLmFicyhsYXN0RGVsdGFUKSkgeworICAgICAgICAgICAgICAgIGxvbmcgZGVsdGEgPSAobG9uZykgKHBlcmlvZERheXMgKiBEQVlfTVMgLyA4KTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lKHN0YXJ0VGltZSArIChuZXh0ID8gZGVsdGEgOiAtZGVsdGEpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGltZU9mQW5nbGUoZnVuYywgZGVzaXJlZCwgcGVyaW9kRGF5cywgZXBzaWxvbiwgbmV4dCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGxhc3REZWx0YVQgPSBkZWx0YVQ7CisgICAgICAgICAgICBsYXN0QW5nbGUgPSBhbmdsZTsKKworICAgICAgICAgICAgc2V0VGltZSh0aW1lICsgKGxvbmcpZGVsdGFUKTsKKyAgICAgICAgfQorICAgICAgICB3aGlsZSAoTWF0aC5hYnMoZGVsdGFUKSA+IGVwc2lsb24pOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIHRpbWU7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgaW50ZXJmYWNlIENvb3JkRnVuYyB7CisgICAgICAgIHB1YmxpYyBFcXVhdG9yaWFsIGV2YWwoKTsKKyAgICB9OworICAgIAorICAgIHByaXZhdGUgbG9uZyByaXNlT3JTZXQoQ29vcmRGdW5jIGZ1bmMsIGJvb2xlYW4gcmlzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBkaWFtZXRlciwgZG91YmxlIHJlZnJhY3Rpb24sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBlcHNpbG9uKQorICAgIHsgICAgICAgIAorICAgICAgICBFcXVhdG9yaWFsICBwb3MgPSBudWxsOworICAgICAgICBkb3VibGUgICAgICB0YW5MICAgPSBNYXRoLnRhbihmTGF0aXR1ZGUpOworICAgICAgICBsb25nICAgICAgICBkZWx0YVQgPSBMb25nLk1BWF9WQUxVRTsKKyAgICAgICAgaW50ICAgICAgICAgY291bnQgPSAwOworICAgICAgICAKKyAgICAgICAgLy8KKyAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBvYmplY3QncyBwb3NpdGlvbiBhdCB0aGUgY3VycmVudCB0aW1lLCB0aGVuIHVzZSB0aGF0CisgICAgICAgIC8vIHBvc2l0aW9uIHRvIGNhbGN1bGF0ZSB0aGUgdGltZSBvZiByaXNpbmcgb3Igc2V0dGluZy4gIFRoZSBwb3NpdGlvbgorICAgICAgICAvLyB3aWxsIGJlIGRpZmZlcmVudCBhdCB0aGF0IHRpbWUsIHNvIGl0ZXJhdGUgdW50aWwgdGhlIGVycm9yIGlzIGFsbG93YWJsZS4KKyAgICAgICAgLy8KKyAgICAgICAgZG8geworICAgICAgICAgICAgLy8gU2VlICJQcmFjdGljYWwgQXN0cm9ub215IFdpdGggWW91ciBDYWxjdWxhdG9yLCBzZWN0aW9uIDMzLgorICAgICAgICAgICAgcG9zID0gZnVuYy5ldmFsKCk7CisgICAgICAgICAgICBkb3VibGUgYW5nbGUgPSBNYXRoLmFjb3MoLXRhbkwgKiBNYXRoLnRhbihwb3MuZGVjbGluYXRpb24pKTsKKyAgICAgICAgICAgIGRvdWJsZSBsc3QgPSAoKHJpc2UgPyBQSTItYW5nbGUgOiBhbmdsZSkgKyBwb3MuYXNjZW5zaW9uICkgKiAyNCAvIFBJMjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIENvbnZlcnQgZnJvbSBMU1QgdG8gVW5pdmVyc2FsIFRpbWUuCisgICAgICAgICAgICBsb25nIG5ld1RpbWUgPSBsc3RUb1VUKCBsc3QgKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZGVsdGFUID0gbmV3VGltZSAtIHRpbWU7CisgICAgICAgICAgICBzZXRUaW1lKG5ld1RpbWUpOworICAgICAgICB9CisgICAgICAgIHdoaWxlICgrKyBjb3VudCA8IDUgJiYgTWF0aC5hYnMoZGVsdGFUKSA+IGVwc2lsb24pOworICAgICAgICAKKyAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBjb3JyZWN0aW9uIGR1ZSB0byByZWZyYWN0aW9uIGFuZCB0aGUgb2JqZWN0J3MgYW5ndWxhciBkaWFtZXRlcgorICAgICAgICBkb3VibGUgY29zRCAgPSBNYXRoLmNvcyhwb3MuZGVjbGluYXRpb24pOworICAgICAgICBkb3VibGUgcHNpICAgPSBNYXRoLmFjb3MoTWF0aC5zaW4oZkxhdGl0dWRlKSAvIGNvc0QpOworICAgICAgICBkb3VibGUgeCAgICAgPSBkaWFtZXRlciAvIDIgKyByZWZyYWN0aW9uOworICAgICAgICBkb3VibGUgeSAgICAgPSBNYXRoLmFzaW4oTWF0aC5zaW4oeCkgLyBNYXRoLnNpbihwc2kpKTsKKyAgICAgICAgbG9uZyAgZGVsdGEgID0gKGxvbmcpKCgyNDAgKiB5ICogUkFEX0RFRyAvIGNvc0QpKlNFQ09ORF9NUyk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gdGltZSArIChyaXNlID8gLWRlbHRhIDogZGVsdGEpOworICAgIH0KKyAgICAKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBPdGhlciB1dGlsaXR5IG1ldGhvZHMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGRvdWJsZSBub3JtYWxpemUoZG91YmxlIHZhbHVlLCBkb3VibGUgcmFuZ2UpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlIC0gcmFuZ2UgKiBNYXRoLmZsb29yKHZhbHVlIC8gcmFuZ2UpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBOb3JtYWxpemUgYW4gYW5nbGUgc28gdGhhdCBpdCdzIGluIHRoZSByYW5nZSAwIC0gMnBpLgorICAgICAqIEZvciBwb3NpdGl2ZSBhbmdsZXMgdGhpcyBpcyBqdXN0IChhbmdsZSAlIDJwaSksIGJ1dCB0aGUgSmF2YQorICAgICAqIG1vZCBvcGVyYXRvciBkb2Vzbid0IHdvcmsgdGhhdCB3YXkgZm9yIG5lZ2F0aXZlIG51bWJlcnMuLi4uCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgZG91YmxlIG5vcm0yUEkoZG91YmxlIGFuZ2xlKSB7CisgICAgICAgIHJldHVybiBub3JtYWxpemUoYW5nbGUsIFBJMik7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIE5vcm1hbGl6ZSBhbiBhbmdsZSBpbnRvIHRoZSByYW5nZSAtUEkgLSBQSQorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGRvdWJsZSBub3JtUEkoZG91YmxlIGFuZ2xlKSB7CisgICAgICAgIHJldHVybiBub3JtYWxpemUoYW5nbGUgKyBQSSwgUEkyKSAtIFBJOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBGaW5kIHRoZSAidHJ1ZSBhbm9tYWx5IiAobG9uZ2l0dWRlKSBvZiBhbiBvYmplY3QgZnJvbQorICAgICAqIGl0cyBtZWFuIGFub21hbHkgYW5kIHRoZSBlY2NlbnRyaWNpdHkgb2YgaXRzIG9yYml0LiAgVGhpcyB1c2VzCisgICAgICogYW4gaXRlcmF0aXZlIHNvbHV0aW9uIHRvIEtlcGxlcidzIGVxdWF0aW9uLgorICAgICAqCisgICAgICogQHBhcmFtIG1lYW5Bbm9tYWx5ICAgVGhlIG9iamVjdCdzIGxvbmdpdHVkZSBjYWxjdWxhdGVkIGFzIGlmIGl0IHdlcmUgaW4KKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICBhIHJlZ3VsYXIsIGNpcmN1bGFyIG9yYml0LCBtZWFzdXJlZCBpbiByYWRpYW5zCisgICAgICogICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgcG9pbnQgb2YgcGVyaWdlZS4gIAorICAgICAqCisgICAgICogQHBhcmFtIGVjY2VudHJpY2l0eSAgVGhlIGVjY2VudHJpY2l0eSBvZiB0aGUgb3JiaXQKKyAgICAgKgorICAgICAqIEByZXR1cm4gVGhlIHRydWUgYW5vbWFseSAobG9uZ2l0dWRlKSBtZWFzdXJlZCBpbiByYWRpYW5zCisgICAgICovCisgICAgcHJpdmF0ZSBkb3VibGUgdHJ1ZUFub21hbHkoZG91YmxlIG1lYW5Bbm9tYWx5LCBkb3VibGUgZWNjZW50cmljaXR5KQorICAgIHsKKyAgICAgICAgLy8gRmlyc3QsIHNvbHZlIEtlcGxlcidzIGVxdWF0aW9uIGl0ZXJhdGl2ZWx5CisgICAgICAgIGRvdWJsZSBkZWx0YTsKKyAgICAgICAgZG91YmxlIEUgPSBtZWFuQW5vbWFseTsKKyAgICAgICAgZG8geworICAgICAgICAgICAgZGVsdGEgPSBFIC0gZWNjZW50cmljaXR5ICogTWF0aC5zaW4oRSkgLSBtZWFuQW5vbWFseTsKKyAgICAgICAgICAgIEUgPSBFIC0gZGVsdGEgLyAoMSAtIGVjY2VudHJpY2l0eSAqIE1hdGguY29zKEUpKTsKKyAgICAgICAgfSAKKyAgICAgICAgd2hpbGUgKE1hdGguYWJzKGRlbHRhKSA+IGFjY3VyYWN5KTsKKworICAgICAgICByZXR1cm4gMi4wICogTWF0aC5hdGFuKCBNYXRoLnRhbihFLzIpICogTWF0aC5zcXJ0KCAoMStlY2NlbnRyaWNpdHkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLygxLWVjY2VudHJpY2l0eSkgKSApOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgcHJpdmF0ZSBmaW5hbCBkb3VibGUgYWNjdXJhY3kgPSAwLjAxICogUEkvMTgwOyAgLy8gMC4wMSBkZWdyZWVzCisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBvYmxpcXVpdHkgb2YgdGhlIGVjbGlwdGljICh0aGUgYW5nbGUgYmV0d2VlbiB0aGUgZWNsaXB0aWMKKyAgICAgKiBhbmQgdGhlIGVhcnRoJ3MgZXF1YXRvcikgYXQgdGhlIGN1cnJlbnQgdGltZS4gIFRoaXMgdmFyaWVzIGR1ZSB0bworICAgICAqIHRoZSBwcmVjZXNzaW9uIG9mIHRoZSBlYXJ0aCdzIGF4aXMuCisgICAgICoKKyAgICAgKiBAcmV0dXJuICB0aGUgb2JsaXF1aXR5IG9mIHRoZSBlY2xpcHRpYyByZWxhdGl2ZSB0byB0aGUgZXF1YXRvciwKKyAgICAgKiAgICAgICAgICBtZWFzdXJlZCBpbiByYWRpYW5zLgorICAgICAqLworICAgIHByaXZhdGUgZG91YmxlIGVjbGlwdGljT2JsaXF1aXR5KCkgeworICAgICAgICBpZiAoZWNsaXBPYmxpcXVpdHkgPT0gSU5WQUxJRCkgeworICAgICAgICAgICAgZmluYWwgZG91YmxlIGVwb2NoID0gMjQ1MTU0NS4wOyAgICAgLy8gMjAwMCBBRCwgSmFudWFyeSAxLjUKKworICAgICAgICAgICAgZG91YmxlIFQgPSAoZ2V0SnVsaWFuRGF5KCkgLSBlcG9jaCkgLyAzNjUyNTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZWNsaXBPYmxpcXVpdHkgPSAyMy40MzkyOTIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gNDYuODE1LzM2MDAgKiBUCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtIDAuMDAwNiAqIFQqVAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAwLjAwMTgxICogVCpUKlQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGVjbGlwT2JsaXF1aXR5ICo9IERFR19SQUQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGVjbGlwT2JsaXF1aXR5OworICAgIH0KKyAgICAKKyAgICAgCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gUHJpdmF0ZSBkYXRhCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgICogQ3VycmVudCB0aW1lIGluIG1pbGxpc2Vjb25kcyBzaW5jZSAxLzEvMTk3MCBBRAorICAgICAqIEBzZWUgamF2YS51dGlsLkRhdGUjZ2V0VGltZQorICAgICAqLworICAgIHByaXZhdGUgbG9uZyB0aW1lOworICAgIAorICAgIC8qIFRoZXNlIGFyZW4ndCB1c2VkIHlldCwgYnV0IHRoZXknbGwgYmUgbmVlZGVkIGZvciBzdW5zZXQgY2FsY3VsYXRpb25zCisgICAgICogYW5kIGVxdWF0b3JpYWwgdG8gaG9yaXpvbiBjb29yZGluYXRlIGNvbnZlcnNpb25zCisgICAgICovCisgICAgcHJpdmF0ZSBkb3VibGUgZkxvbmdpdHVkZSA9IDAuMDsKKyAgICBwcml2YXRlIGRvdWJsZSBmTGF0aXR1ZGUgID0gMC4wOworICAgIHByaXZhdGUgbG9uZyAgIGZHbXRPZmZzZXQgPSAwOworICAgIAorICAgIC8vCisgICAgLy8gVGhlIGZvbGxvd2luZyBmaWVsZHMgYXJlIHVzZWQgdG8gY2FjaGUgY2FsY3VsYXRlZCByZXN1bHRzIGZvciBpbXByb3ZlZAorICAgIC8vIHBlcmZvcm1hbmNlLiAgVGhlc2UgdmFsdWVzIGFsbCBkZXBlbmQgb24gdGhlIGN1cnJlbnQgdGltZSBzZXR0aW5nCisgICAgLy8gb2YgdGhpcyBvYmplY3QsIHNvIHRoZSBjbGVhckNhY2hlIG1ldGhvZCBpcyBwcm92aWRlZC4KKyAgICAvLworICAgIHN0YXRpYyBmaW5hbCBwcml2YXRlIGRvdWJsZSBJTlZBTElEID0gRG91YmxlLk1JTl9WQUxVRTsKKyAgICAKKyAgICBwcml2YXRlIHRyYW5zaWVudCBkb3VibGUgICAganVsaWFuRGF5ICAgICAgID0gSU5WQUxJRDsKKyAgICBwcml2YXRlIHRyYW5zaWVudCBkb3VibGUgICAganVsaWFuQ2VudHVyeSAgID0gSU5WQUxJRDsKKyAgICBwcml2YXRlIHRyYW5zaWVudCBkb3VibGUgICAgc3VuTG9uZ2l0dWRlICAgID0gSU5WQUxJRDsKKyAgICBwcml2YXRlIHRyYW5zaWVudCBkb3VibGUgICAgbWVhbkFub21hbHlTdW4gID0gSU5WQUxJRDsKKyAgICBwcml2YXRlIHRyYW5zaWVudCBkb3VibGUgICAgbW9vbkxvbmdpdHVkZSAgID0gSU5WQUxJRDsKKyAgICBwcml2YXRlIHRyYW5zaWVudCBkb3VibGUgICAgbW9vbkVjbGlwTG9uZyAgID0gSU5WQUxJRDsKKyAgICBwcml2YXRlIHRyYW5zaWVudCBkb3VibGUgICAgbWVhbkFub21hbHlNb29uID0gSU5WQUxJRDsKKyAgICBwcml2YXRlIHRyYW5zaWVudCBkb3VibGUgICAgZWNsaXBPYmxpcXVpdHkgID0gSU5WQUxJRDsKKyAgICBwcml2YXRlIHRyYW5zaWVudCBkb3VibGUgICAgc2lkZXJlYWxUMCAgICAgID0gSU5WQUxJRDsKKyAgICBwcml2YXRlIHRyYW5zaWVudCBkb3VibGUgICAgc2lkZXJlYWxUaW1lICAgID0gSU5WQUxJRDsKKyAgICAKKyAgICBwcml2YXRlIHRyYW5zaWVudCBFcXVhdG9yaWFsICBtb29uUG9zaXRpb24gPSBudWxsOworCisgICAgcHJpdmF0ZSB2b2lkIGNsZWFyQ2FjaGUoKSB7CisgICAgICAgIGp1bGlhbkRheSAgICAgICA9IElOVkFMSUQ7CisgICAgICAgIGp1bGlhbkNlbnR1cnkgICA9IElOVkFMSUQ7CisgICAgICAgIHN1bkxvbmdpdHVkZSAgICA9IElOVkFMSUQ7CisgICAgICAgIG1lYW5Bbm9tYWx5U3VuICA9IElOVkFMSUQ7CisgICAgICAgIG1vb25Mb25naXR1ZGUgICA9IElOVkFMSUQ7CisgICAgICAgIG1vb25FY2xpcExvbmcgICA9IElOVkFMSUQ7CisgICAgICAgIG1lYW5Bbm9tYWx5TW9vbiA9IElOVkFMSUQ7CisgICAgICAgIGVjbGlwT2JsaXF1aXR5ICA9IElOVkFMSUQ7CisgICAgICAgIHNpZGVyZWFsVGltZSAgICA9IElOVkFMSUQ7CisgICAgICAgIHNpZGVyZWFsVDAgICAgICA9IElOVkFMSUQ7CisgICAgICAgIG1vb25Qb3NpdGlvbiAgICA9IG51bGw7CisgICAgfQorICAgIAorICAgIC8vcHJpdmF0ZSBzdGF0aWMgdm9pZCBvdXQoU3RyaW5nIHMpIHsKKyAgICAvLyAgICBTeXN0ZW0ub3V0LnByaW50bG4ocyk7CisgICAgLy99CisgICAgCisgICAgLy9wcml2YXRlIHN0YXRpYyBTdHJpbmcgZGVnKGRvdWJsZSByYWQpIHsKKyAgICAvLyAgICByZXR1cm4gRG91YmxlLnRvU3RyaW5nKHJhZCAqIFJBRF9ERUcpOworICAgIC8vfQorICAgIAorICAgIC8vcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGhvdXJzKGxvbmcgbXMpIHsKKyAgICAvLyAgICByZXR1cm4gRG91YmxlLnRvU3RyaW5nKChkb3VibGUpbXMgLyBIT1VSX01TKSArICIgaG91cnMiOworICAgIC8vfQorCisgICAgLyoqCisgICAgICogQGludGVybmFsCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNC4gVGhpcyBjbGFzcyBtYXkgYmUgcmVtb3ZlZCBvciBtb2RpZmllZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIGxvY2FsKGxvbmcgbG9jYWxNaWxsaXMpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGxvY2FsTWlsbGlzIC0gVGltZVpvbmUuZ2V0RGVmYXVsdCgpLmdldFJhd09mZnNldCgpKS50b1N0cmluZygpOworICAgIH0KKyAgICAKKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXByZXNlbnRzIHRoZSBwb3NpdGlvbiBvZiBhbiBvYmplY3QgaW4gdGhlIHNreSByZWxhdGl2ZSB0byB0aGUgZWNsaXB0aWMsCisgICAgICogdGhlIHBsYW5lIG9mIHRoZSBlYXJ0aCdzIG9yYml0IGFyb3VuZCB0aGUgU3VuLiAKKyAgICAgKiBUaGlzIGlzIGEgc3BoZXJpY2FsIGNvb3JkaW5hdGUgc3lzdGVtIGluIHdoaWNoIHRoZSBsYXRpdHVkZQorICAgICAqIHNwZWNpZmllcyB0aGUgcG9zaXRpb24gbm9ydGggb3Igc291dGggb2YgdGhlIHBsYW5lIG9mIHRoZSBlY2xpcHRpYy4KKyAgICAgKiBUaGUgbG9uZ2l0dWRlIHNwZWNpZmllcyB0aGUgcG9zaXRpb24gYWxvbmcgdGhlIGVjbGlwdGljIHBsYW5lCisgICAgICogcmVsYXRpdmUgdG8gdGhlICJGaXJzdCBQb2ludCBvZiBBcmllcyIsIHdoaWNoIGlzIHRoZSBTdW4ncyBwb3NpdGlvbiBpbiB0aGUgc2t5CisgICAgICogYXQgdGhlIFZlcm5hbCBFcXVpbm94LgorICAgICAqIDxwPgorICAgICAqIE5vdGUgdGhhdCBFY2xpcHRpYyBvYmplY3RzIGFyZSBpbW11dGFibGUgYW5kIGNhbm5vdCBiZSBtb2RpZmllZAorICAgICAqIG9uY2UgdGhleSBhcmUgY29uc3RydWN0ZWQuICBUaGlzIGFsbG93cyB0aGVtIHRvIGJlIHBhc3NlZCBhbmQgcmV0dXJuZWQgYnkKKyAgICAgKiB2YWx1ZSB3aXRob3V0IHdvcnJ5aW5nIGFib3V0IHdoZXRoZXIgb3RoZXIgY29kZSB3aWxsIG1vZGlmeSB0aGVtLgorICAgICAqCisgICAgICogQHNlZSBDYWxlbmRhckFzdHJvbm9tZXIuRXF1YXRvcmlhbAorICAgICAqIEBzZWUgQ2FsZW5kYXJBc3Ryb25vbWVyLkhvcml6b24KKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40LiBUaGlzIGNsYXNzIG1heSBiZSByZW1vdmVkIG9yIG1vZGlmaWVkLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgY2xhc3MgRWNsaXB0aWMgeworICAgICAgICAvKioKKyAgICAgICAgICogQ29uc3RydWN0cyBhbiBFY2xpcHRpYyBjb29yZGluYXRlIG9iamVjdC4KKyAgICAgICAgICogPHA+CisgICAgICAgICAqIEBwYXJhbSBsYXQgVGhlIGVjbGlwdGljIGxhdGl0dWRlLCBtZWFzdXJlZCBpbiByYWRpYW5zLgorICAgICAgICAgKiBAcGFyYW0gbG9uIFRoZSBlY2xpcHRpYyBsb25naXR1ZGUsIG1lYXN1cmVkIGluIHJhZGlhbnMuCisgICAgICAgICAqIEBpbnRlcm5hbAorICAgICAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40LiBUaGlzIGNsYXNzIG1heSBiZSByZW1vdmVkIG9yIG1vZGlmaWVkLgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIEVjbGlwdGljKGRvdWJsZSBsYXQsIGRvdWJsZSBsb24pIHsKKyAgICAgICAgICAgIGxhdGl0dWRlID0gbGF0OworICAgICAgICAgICAgbG9uZ2l0dWRlID0gbG9uOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIG9iamVjdAorICAgICAgICAgKiBAaW50ZXJuYWwKKyAgICAgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNC4gVGhpcyBjbGFzcyBtYXkgYmUgcmVtb3ZlZCBvciBtb2RpZmllZC4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgICAgICByZXR1cm4gRG91YmxlLnRvU3RyaW5nKGxvbmdpdHVkZSpSQURfREVHKSArICIsIiArIChsYXRpdHVkZSpSQURfREVHKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRoZSBlY2xpcHRpYyBsYXRpdHVkZSwgaW4gcmFkaWFucy4gIFRoaXMgc3BlY2lmaWVzIGFuIG9iamVjdCdzCisgICAgICAgICAqIHBvc2l0aW9uIG5vcnRoIG9yIHNvdXRoIG9mIHRoZSBwbGFuZSBvZiB0aGUgZWNsaXB0aWMsCisgICAgICAgICAqIHdpdGggcG9zaXRpdmUgYW5nbGVzIHJlcHJlc2VudGluZyBub3J0aC4KKyAgICAgICAgICogQGludGVybmFsCisgICAgICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjQuIFRoaXMgY2xhc3MgbWF5IGJlIHJlbW92ZWQgb3IgbW9kaWZpZWQuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgZmluYWwgZG91YmxlIGxhdGl0dWRlOworICAgICAgICAKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRoZSBlY2xpcHRpYyBsb25naXR1ZGUsIGluIHJhZGlhbnMuCisgICAgICAgICAqIFRoaXMgc3BlY2lmaWVzIGFuIG9iamVjdCdzIHBvc2l0aW9uIGFsb25nIHRoZSBlY2xpcHRpYyBwbGFuZQorICAgICAgICAgKiByZWxhdGl2ZSB0byB0aGUgIkZpcnN0IFBvaW50IG9mIEFyaWVzIiwgd2hpY2ggaXMgdGhlIFN1bidzIHBvc2l0aW9uCisgICAgICAgICAqIGluIHRoZSBza3kgYXQgdGhlIFZlcm5hbCBFcXVpbm94LAorICAgICAgICAgKiB3aXRoIHBvc2l0aXZlIGFuZ2xlcyByZXByZXNlbnRpbmcgZWFzdC4KKyAgICAgICAgICogPHA+CisgICAgICAgICAqIEEgYml0IG9mIHRyaXZpYTogdGhlIGZpcnN0IHBvaW50IG9mIEFyaWVzIGlzIGN1cnJlbnRseSBpbiB0aGUKKyAgICAgICAgICogY29uc3RlbGxhdGlvbiBQaXNjZXMsIGR1ZSB0byB0aGUgcHJlY2Vzc2lvbiBvZiB0aGUgZWFydGgncyBheGlzLgorICAgICAgICAgKiBAaW50ZXJuYWwKKyAgICAgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNC4gVGhpcyBjbGFzcyBtYXkgYmUgcmVtb3ZlZCBvciBtb2RpZmllZC4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBmaW5hbCBkb3VibGUgbG9uZ2l0dWRlOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBSZXByZXNlbnRzIHRoZSBwb3NpdGlvbiBvZiBhbiAKKyAgICAgKiBvYmplY3QgaW4gdGhlIHNreSByZWxhdGl2ZSB0byB0aGUgcGxhbmUgb2YgdGhlIGVhcnRoJ3MgZXF1YXRvci4gCisgICAgICogVGhlIDxpPlJpZ2h0IEFzY2Vuc2lvbjwvaT4gc3BlY2lmaWVzIHRoZSBwb3NpdGlvbiBlYXN0IG9yIHdlc3QKKyAgICAgKiBhbG9uZyB0aGUgZXF1YXRvciwgcmVsYXRpdmUgdG8gdGhlIHN1bidzIHBvc2l0aW9uIGF0IHRoZSB2ZXJuYWwKKyAgICAgKiBlcXVpbm94LiAgVGhlIDxpPkRlY2xpbmF0aW9uPC9pPiBpcyB0aGUgcG9zaXRpb24gbm9ydGggb3Igc291dGgKKyAgICAgKiBvZiB0aGUgZXF1YXRvcmlhbCBwbGFuZS4KKyAgICAgKiA8cD4KKyAgICAgKiBOb3RlIHRoYXQgRXF1YXRvcmlhbCBvYmplY3RzIGFyZSBpbW11dGFibGUgYW5kIGNhbm5vdCBiZSBtb2RpZmllZAorICAgICAqIG9uY2UgdGhleSBhcmUgY29uc3RydWN0ZWQuICBUaGlzIGFsbG93cyB0aGVtIHRvIGJlIHBhc3NlZCBhbmQgcmV0dXJuZWQgYnkKKyAgICAgKiB2YWx1ZSB3aXRob3V0IHdvcnJ5aW5nIGFib3V0IHdoZXRoZXIgb3RoZXIgY29kZSB3aWxsIG1vZGlmeSB0aGVtLgorICAgICAqCisgICAgICogQHNlZSBDYWxlbmRhckFzdHJvbm9tZXIuRWNsaXB0aWMKKyAgICAgKiBAc2VlIENhbGVuZGFyQXN0cm9ub21lci5Ib3Jpem9uCisgICAgICogQGludGVybmFsCisgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNC4gVGhpcyBjbGFzcyBtYXkgYmUgcmVtb3ZlZCBvciBtb2RpZmllZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGNsYXNzIEVxdWF0b3JpYWwgeworICAgICAgICAvKioKKyAgICAgICAgICogQ29uc3RydWN0cyBhbiBFcXVhdG9yaWFsIGNvb3JkaW5hdGUgb2JqZWN0LgorICAgICAgICAgKiA8cD4KKyAgICAgICAgICogQHBhcmFtIGFzYyBUaGUgcmlnaHQgYXNjZW5zaW9uLCBtZWFzdXJlZCBpbiByYWRpYW5zLgorICAgICAgICAgKiBAcGFyYW0gZGVjIFRoZSBkZWNsaW5hdGlvbiwgbWVhc3VyZWQgaW4gcmFkaWFucy4KKyAgICAgICAgICogQGludGVybmFsCisgICAgICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjQuIFRoaXMgY2xhc3MgbWF5IGJlIHJlbW92ZWQgb3IgbW9kaWZpZWQuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgRXF1YXRvcmlhbChkb3VibGUgYXNjLCBkb3VibGUgZGVjKSB7CisgICAgICAgICAgICBhc2NlbnNpb24gPSBhc2M7CisgICAgICAgICAgICBkZWNsaW5hdGlvbiA9IGRlYzsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBSZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBvYmplY3QsIHdpdGggdGhlCisgICAgICAgICAqIGFuZ2xlcyBtZWFzdXJlZCBpbiBkZWdyZWVzLgorICAgICAgICAgKiBAaW50ZXJuYWwKKyAgICAgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNC4gVGhpcyBjbGFzcyBtYXkgYmUgcmVtb3ZlZCBvciBtb2RpZmllZC4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgICAgICByZXR1cm4gRG91YmxlLnRvU3RyaW5nKGFzY2Vuc2lvbipSQURfREVHKSArICIsIiArIChkZWNsaW5hdGlvbipSQURfREVHKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLyoqCisgICAgICAgICAqIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIG9iamVjdCB3aXRoIHRoZSByaWdodCBhc2NlbnNpb24KKyAgICAgICAgICogbWVhc3VyZWQgaW4gaG91cnMsIG1pbnV0ZXMsIGFuZCBzZWNvbmRzLgorICAgICAgICAgKiBAaW50ZXJuYWwKKyAgICAgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNC4gVGhpcyBjbGFzcyBtYXkgYmUgcmVtb3ZlZCBvciBtb2RpZmllZC4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBTdHJpbmcgdG9IbXNTdHJpbmcoKSB7CisgICAgICAgICAgICByZXR1cm4gcmFkVG9IbXMoYXNjZW5zaW9uKSArICIsIiArIHJhZFRvRG1zKGRlY2xpbmF0aW9uKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRoZSByaWdodCBhc2NlbnNpb24sIGluIHJhZGlhbnMuIAorICAgICAgICAgKiBUaGlzIGlzIHRoZSBwb3NpdGlvbiBlYXN0IG9yIHdlc3QgYWxvbmcgdGhlIGVxdWF0b3IKKyAgICAgICAgICogcmVsYXRpdmUgdG8gdGhlIHN1bidzIHBvc2l0aW9uIGF0IHRoZSB2ZXJuYWwgZXF1aW5veCwKKyAgICAgICAgICogd2l0aCBwb3NpdGl2ZSBhbmdsZXMgcmVwcmVzZW50aW5nIEVhc3QuCisgICAgICAgICAqIEBpbnRlcm5hbAorICAgICAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40LiBUaGlzIGNsYXNzIG1heSBiZSByZW1vdmVkIG9yIG1vZGlmaWVkLgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIGZpbmFsIGRvdWJsZSBhc2NlbnNpb247CisgICAgICAgIAorICAgICAgICAvKioKKyAgICAgICAgICogVGhlIGRlY2xpbmF0aW9uLCBpbiByYWRpYW5zLgorICAgICAgICAgKiBUaGlzIGlzIHRoZSBwb3NpdGlvbiBub3J0aCBvciBzb3V0aCBvZiB0aGUgZXF1YXRvcmlhbCBwbGFuZSwKKyAgICAgICAgICogd2l0aCBwb3NpdGl2ZSBhbmdsZXMgcmVwcmVzZW50aW5nIG5vcnRoLgorICAgICAgICAgKiBAaW50ZXJuYWwKKyAgICAgICAgICogQGRlcHJlY2F0ZWQgSUNVIDIuNC4gVGhpcyBjbGFzcyBtYXkgYmUgcmVtb3ZlZCBvciBtb2RpZmllZC4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBmaW5hbCBkb3VibGUgZGVjbGluYXRpb247CisgICAgfTsKKworICAgIC8qKgorICAgICAqIFJlcHJlc2VudHMgdGhlIHBvc2l0aW9uIG9mIGFuICBvYmplY3QgaW4gdGhlIHNreSByZWxhdGl2ZSB0byAKKyAgICAgKiB0aGUgbG9jYWwgaG9yaXpvbi4KKyAgICAgKiBUaGUgPGk+QWx0aXR1ZGU8L2k+IHJlcHJlc2VudHMgdGhlIG9iamVjdCdzIGVsZXZhdGlvbiBhYm92ZSB0aGUgaG9yaXpvbiwKKyAgICAgKiB3aXRoIG9iamVjdHMgYmVsb3cgdGhlIGhvcml6b24gaGF2aW5nIGEgbmVnYXRpdmUgYWx0aXR1ZGUuCisgICAgICogVGhlIDxpPkF6aW11dGg8L2k+IGlzIHRoZSBnZW9ncmFwaGljIGRpcmVjdGlvbiBvZiB0aGUgb2JqZWN0IGZyb20gdGhlCisgICAgICogb2JzZXJ2ZXIncyBwb3NpdGlvbiwgd2l0aCAwIHJlcHJlc2VudGluZyBub3J0aC4gIFRoZSBhemltdXRoIGluY3JlYXNlcworICAgICAqIGNsb2Nrd2lzZSBmcm9tIG5vcnRoLgorICAgICAqIDxwPgorICAgICAqIE5vdGUgdGhhdCBIb3Jpem9uIG9iamVjdHMgYXJlIGltbXV0YWJsZSBhbmQgY2Fubm90IGJlIG1vZGlmaWVkCisgICAgICogb25jZSB0aGV5IGFyZSBjb25zdHJ1Y3RlZC4gIFRoaXMgYWxsb3dzIHRoZW0gdG8gYmUgcGFzc2VkIGFuZCByZXR1cm5lZCBieQorICAgICAqIHZhbHVlIHdpdGhvdXQgd29ycnlpbmcgYWJvdXQgd2hldGhlciBvdGhlciBjb2RlIHdpbGwgbW9kaWZ5IHRoZW0uCisgICAgICoKKyAgICAgKiBAc2VlIENhbGVuZGFyQXN0cm9ub21lci5FY2xpcHRpYworICAgICAqIEBzZWUgQ2FsZW5kYXJBc3Ryb25vbWVyLkVxdWF0b3JpYWwKKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40LiBUaGlzIGNsYXNzIG1heSBiZSByZW1vdmVkIG9yIG1vZGlmaWVkLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgY2xhc3MgSG9yaXpvbiB7CisgICAgICAgIC8qKgorICAgICAgICAgKiBDb25zdHJ1Y3RzIGEgSG9yaXpvbiBjb29yZGluYXRlIG9iamVjdC4KKyAgICAgICAgICogPHA+CisgICAgICAgICAqIEBwYXJhbSBhbHQgIFRoZSBhbHRpdHVkZSwgbWVhc3VyZWQgaW4gcmFkaWFucyBhYm92ZSB0aGUgaG9yaXpvbi4KKyAgICAgICAgICogQHBhcmFtIGF6aW0gVGhlIGF6aW11dGgsIG1lYXN1cmVkIGluIHJhZGlhbnMgY2xvY2t3aXNlIGZyb20gbm9ydGguCisgICAgICAgICAqIEBpbnRlcm5hbAorICAgICAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40LiBUaGlzIGNsYXNzIG1heSBiZSByZW1vdmVkIG9yIG1vZGlmaWVkLgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIEhvcml6b24oZG91YmxlIGFsdCwgZG91YmxlIGF6aW0pIHsKKyAgICAgICAgICAgIGFsdGl0dWRlID0gYWx0OworICAgICAgICAgICAgYXppbXV0aCA9IGF6aW07CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgb2JqZWN0LCB3aXRoIHRoZQorICAgICAgICAgKiBhbmdsZXMgbWVhc3VyZWQgaW4gZGVncmVlcy4KKyAgICAgICAgICogQGludGVybmFsCisgICAgICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjQuIFRoaXMgY2xhc3MgbWF5IGJlIHJlbW92ZWQgb3IgbW9kaWZpZWQuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICAgICAgcmV0dXJuIERvdWJsZS50b1N0cmluZyhhbHRpdHVkZSpSQURfREVHKSArICIsIiArIChhemltdXRoKlJBRF9ERUcpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvKiogCisgICAgICAgICAqIFRoZSBvYmplY3QncyBhbHRpdHVkZSBhYm92ZSB0aGUgaG9yaXpvbiwgaW4gcmFkaWFucy4gCisgICAgICAgICAqIEBpbnRlcm5hbAorICAgICAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40LiBUaGlzIGNsYXNzIG1heSBiZSByZW1vdmVkIG9yIG1vZGlmaWVkLgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIGZpbmFsIGRvdWJsZSBhbHRpdHVkZTsKKyAgICAgICAgCisgICAgICAgIC8qKiAKKyAgICAgICAgICogVGhlIG9iamVjdCdzIGRpcmVjdGlvbiwgaW4gcmFkaWFucyBjbG9ja3dpc2UgZnJvbSBub3J0aC4gCisgICAgICAgICAqIEBpbnRlcm5hbAorICAgICAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40LiBUaGlzIGNsYXNzIG1heSBiZSByZW1vdmVkIG9yIG1vZGlmaWVkLgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIGZpbmFsIGRvdWJsZSBhemltdXRoOworICAgIH07CisKKyAgICBzdGF0aWMgcHJpdmF0ZSBTdHJpbmcgcmFkVG9IbXMoZG91YmxlIGFuZ2xlKSB7CisgICAgICAgIGludCBocnMgPSAoaW50KSAoYW5nbGUqUkFEX0hPVVIpOworICAgICAgICBpbnQgbWluID0gKGludCkoKGFuZ2xlKlJBRF9IT1VSIC0gaHJzKSAqIDYwKTsKKyAgICAgICAgaW50IHNlYyA9IChpbnQpKChhbmdsZSpSQURfSE9VUiAtIGhycyAtIG1pbi82MC4wKSAqIDM2MDApOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIEludGVnZXIudG9TdHJpbmcoaHJzKSArICJoIiArIG1pbiArICJtIiArIHNlYyArICJzIjsKKyAgICB9CisgICAgCisgICAgc3RhdGljIHByaXZhdGUgU3RyaW5nIHJhZFRvRG1zKGRvdWJsZSBhbmdsZSkgeworICAgICAgICBpbnQgZGVnID0gKGludCkgKGFuZ2xlKlJBRF9ERUcpOworICAgICAgICBpbnQgbWluID0gKGludCkoKGFuZ2xlKlJBRF9ERUcgLSBkZWcpICogNjApOworICAgICAgICBpbnQgc2VjID0gKGludCkoKGFuZ2xlKlJBRF9ERUcgLSBkZWcgLSBtaW4vNjAuMCkgKiAzNjAwKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBJbnRlZ2VyLnRvU3RyaW5nKGRlZykgKyAiXHUwMGIwIiArIG1pbiArICInIiArIHNlYyArICJcIiI7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3V0aWwvQ2FsZW5kYXJDYWNoZS5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L3V0aWwvQ2FsZW5kYXJDYWNoZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjA0YjI5NWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdXRpbC9DYWxlbmRhckNhY2hlLmphdmEKQEAgLTAsMCArMSwxMzggQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS91dGlsL0F0dGljL0NhbGVuZGFyQ2FjaGUuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8xMi8xOCAxOToyNDoxNSAkIAorICogJFJldmlzaW9uOiAxLjcgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LnV0aWw7CisKKy8qKgorICogQGludGVybmFsCisgKiBAZGVwcmVjYXRlZCBJQ1UgMi40LiBUaGlzIGNsYXNzIG1heSBiZSByZW1vdmVkIG9yIG1vZGlmaWVkLgorICovCitwdWJsaWMgY2xhc3MgQ2FsZW5kYXJDYWNoZQoreworICAgIC8qKgorICAgICAqIEBpbnRlcm5hbAorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjQuIFRoaXMgY2xhc3MgbWF5IGJlIHJlbW92ZWQgb3IgbW9kaWZpZWQuCisgICAgICovCisgICAgcHVibGljIENhbGVuZGFyQ2FjaGUoKSB7CisgICAgICAgIG1ha2VBcnJheXMoYXJyYXlTaXplKTsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSB2b2lkIG1ha2VBcnJheXMoaW50IG5ld1NpemUpIHsKKyAgICAgICAga2V5cyAgICA9IG5ldyBsb25nW25ld1NpemVdOworICAgICAgICB2YWx1ZXMgID0gbmV3IGxvbmdbbmV3U2l6ZV07CisgICAgICAgIAorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG5ld1NpemU7IGkrKykgeworICAgICAgICAgICAgdmFsdWVzW2ldID0gRU1QVFk7CisgICAgICAgIH0KKyAgICAgICAgYXJyYXlTaXplID0gbmV3U2l6ZTsKKyAgICAgICAgdGhyZXNob2xkID0gKGludCkoYXJyYXlTaXplICogMC43NSk7CisgICAgICAgIHNpemUgPSAwOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40LiBUaGlzIGNsYXNzIG1heSBiZSByZW1vdmVkIG9yIG1vZGlmaWVkLgorICAgICAqLworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgbG9uZyBnZXQobG9uZyBrZXkpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlc1tmaW5kSW5kZXgoa2V5KV07CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEBpbnRlcm5hbAorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjQuIFRoaXMgY2xhc3MgbWF5IGJlIHJlbW92ZWQgb3IgbW9kaWZpZWQuCisgICAgICovCisgICAgcHVibGljIHN5bmNocm9uaXplZCB2b2lkIHB1dChsb25nIGtleSwgbG9uZyB2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmIChzaXplID49IHRocmVzaG9sZCkgeworICAgICAgICAgICAgcmVoYXNoKCk7CisgICAgICAgIH0KKyAgICAgICAgaW50IGluZGV4ID0gZmluZEluZGV4KGtleSk7CisgICAgICAgIAorICAgICAgICBrZXlzW2luZGV4XSA9IGtleTsKKyAgICAgICAgdmFsdWVzW2luZGV4XSA9IHZhbHVlOworICAgICAgICBzaXplKys7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgZmluYWwgaW50IGZpbmRJbmRleChsb25nIGtleSkgeworICAgICAgICBpbnQgaW5kZXggPSBoYXNoKGtleSk7CisgICAgICAgIGludCBkZWx0YSA9IDA7CisgICAgICAgIAorICAgICAgICB3aGlsZSAodmFsdWVzW2luZGV4XSAhPSBFTVBUWSAmJiBrZXlzW2luZGV4XSAhPSBrZXkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChkZWx0YSA9PSAwKSB7CisgICAgICAgICAgICAgICAgZGVsdGEgPSBoYXNoMihrZXkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW5kZXggPSAoaW5kZXggKyBkZWx0YSkgJSBhcnJheVNpemU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGluZGV4OworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHZvaWQgcmVoYXNoKCkKKyAgICB7CisgICAgICAgIGludCBvbGRTaXplID0gYXJyYXlTaXplOworICAgICAgICBsb25nW10gb2xkS2V5cyA9IGtleXM7CisgICAgICAgIGxvbmdbXSBvbGRWYWx1ZXMgPSB2YWx1ZXM7CisgICAgICAgIAorICAgICAgICBpZiAocEluZGV4IDwgcHJpbWVzLmxlbmd0aCAtIDEpIHsKKyAgICAgICAgICAgIGFycmF5U2l6ZSA9IHByaW1lc1srK3BJbmRleF07CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhcnJheVNpemUgPSBhcnJheVNpemUgKiAyICsgMTsKKyAgICAgICAgfQorICAgICAgICBzaXplID0gMDsKKyAgICAgICAgCisgICAgICAgIG1ha2VBcnJheXMoYXJyYXlTaXplKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvbGRTaXplOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChvbGRWYWx1ZXNbaV0gIT0gRU1QVFkpIHsKKyAgICAgICAgICAgICAgICBwdXQob2xkS2V5c1tpXSwgb2xkVmFsdWVzW2ldKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBvbGRLZXlzID0gb2xkVmFsdWVzID0gbnVsbDsgLy8gSGVscCBvdXQgdGhlIGdhcmJhZ2UgY29sbGVjdG9yCisgICAgfQorICAgIAorICAgIAorICAgIC8qKgorICAgICAqIFByb2R1Y2UgYSB1bmlmb3JtbHktZGlzdHJpYnV0ZWQgaGFzaCB2YWx1ZSBmcm9tIGFuIGludGVnZXIga2V5LgorICAgICAqIFRoaXMgaXMgZXNzZW50aWFsbHkgYSBsaW5lYXIgY29uZ3J1ZW50aWFsIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yCisgICAgICogdGhhdCB1c2VzIHRoZSBrZXkgYXMgaXRzIHNlZWQgdmFsdWUuCisgICAgICovCisgICAgcHJpdmF0ZSBmaW5hbCBpbnQgaGFzaChsb25nIGtleSkKKyAgICB7CisgICAgICAgIGludCBoID0gKGludCkoKGtleSAqIDE1ODIxICsgMSkgJSBhcnJheVNpemUpOworICAgICAgICBpZiAoaCA8IDApIHsKKyAgICAgICAgICAgIGggKz0gYXJyYXlTaXplOworICAgICAgICB9CisgICAgICAgIHJldHVybiBoOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIGZpbmFsIGludCBoYXNoMihsb25nIGtleSkgeworICAgICAgICByZXR1cm4gYXJyYXlTaXplIC0gMiAtIChpbnQpKGtleSAlIChhcnJheVNpemUtMikgKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIHByaXZhdGUgZmluYWwgaW50IHByaW1lc1tdID0geyAgLy8gNSwgMTcsIDMxLCA0NywgLy8gZm9yIHRlc3RpbmcKKyAgICAgICAgNjEsIDEyNywgNTA5LCAxMDIxLCAyMDM5LCA0MDkzLCA4MTkxLCAxNjM4MSwgMzI3NDksIDY1NTIxLAorICAgICAgICAxMzEwNzEsIDI2MjEzOSwgCisgICAgfTsKKworICAgIHByaXZhdGUgaW50ICAgICBwSW5kZXggICAgICA9IDA7CisgICAgcHJpdmF0ZSBpbnQgICAgIHNpemUgICAgICAgID0gMDsKKyAgICBwcml2YXRlIGludCAgICAgYXJyYXlTaXplICAgPSBwcmltZXNbcEluZGV4XTsKKyAgICBwcml2YXRlIGludCAgICAgdGhyZXNob2xkICAgPSAoYXJyYXlTaXplICogMykgLyA0OworICAgIAorICAgIHByaXZhdGUgbG9uZ1tdICBrZXlzICAgICAgICA9IG5ldyBsb25nW2FycmF5U2l6ZV07CisgICAgcHJpdmF0ZSBsb25nW10gIHZhbHVlcyAgICAgID0gbmV3IGxvbmdbYXJyYXlTaXplXTsKKworICAgIC8qKgorICAgICAqIEBpbnRlcm5hbAorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjQuIFRoaXMgY2xhc3MgbWF5IGJlIHJlbW92ZWQgb3IgbW9kaWZpZWQuCisgICAgICovCisgICAgc3RhdGljIHB1YmxpYyAgbG9uZyBFTVBUWSAgID0gTG9uZy5NSU5fVkFMVUU7Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvdXRpbC9DYWxlbmRhckZhY3RvcnkuamF2YSBiL3NyYy9jb20vaWJtL2ljdS91dGlsL0NhbGVuZGFyRmFjdG9yeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyNTUyMGMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdXRpbC9DYWxlbmRhckZhY3RvcnkuamF2YQpAQCAtMCwwICsxLDIzIEBACisvKioKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogQ29weXJpZ2h0IChDKSAyMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS91dGlsL0NhbGVuZGFyRmFjdG9yeS5qYXZhLHYgJCAKKyogJERhdGU6IDIwMDIvMTIvMTcgMDc6MzE6MjYgJCAKKyogJFJldmlzaW9uOiAxLjMgJAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KK3BhY2thZ2UgY29tLmlibS5pY3UudXRpbDsKKworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CisvKioKKyAqIEBwcm90b3R5cGUKKyAqLworaW50ZXJmYWNlIENhbGVuZGFyRmFjdG9yeSB7CisgICAgcHVibGljIENhbGVuZGFyIGNyZWF0ZShUaW1lWm9uZSB0eiwgTG9jYWxlIGxvYyk7CisgICAgcHVibGljIFN0cmluZyBmYWN0b3J5TmFtZSgpOworfQorICAgICAgICAKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS91dGlsL0Nhc2VJbnNlbnNpdGl2ZVN0cmluZy5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L3V0aWwvQ2FzZUluc2Vuc2l0aXZlU3RyaW5nLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZjg5OTI0NQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS91dGlsL0Nhc2VJbnNlbnNpdGl2ZVN0cmluZy5qYXZhCkBAIC0wLDAgKzEsNzIgQEAKKy8qKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMS0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvdXRpbC9DYXNlSW5zZW5zaXRpdmVTdHJpbmcuamF2YSx2ICQKKyAqICREYXRlOiAyMDAyLzEyLzA1IDAxOjI1OjEyICQKKyAqICRSZXZpc2lvbjogMS41ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LnV0aWw7CisKK2ltcG9ydCBjb20uaWJtLmljdS5sYW5nLlVDaGFyYWN0ZXI7CisKKy8qKgorICogQSBzdHJpbmcgdXNlZCBhcyBhIGtleSBpbiBqYXZhLnV0aWwuSGFzaHRhYmxlIGFuZCBvdGhlcgorICogY29sbGVjdGlvbnMuICBJdCByZXRhaW5zIGNhc2UgaW5mb3JtYXRpb24sIGJ1dCBpdHMgZXF1YWxzKCkgYW5kCisgKiBoYXNoQ29kZSgpIG1ldGhvZHMgaWdub3JlIGNhc2UuCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworcHVibGljIGNsYXNzIENhc2VJbnNlbnNpdGl2ZVN0cmluZyB7CisgICAgCisgICAgcHJpdmF0ZSBTdHJpbmcgc3RyaW5nOworCisgICAgcHJpdmF0ZSBpbnQgaGFzaCA9IDA7CisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhbiBDYXNlSW5zZW50aXZlU3RyaW5nIG9iamVjdCBmcm9tIHRoZSBnaXZlbiBzdHJpbmcKKyAgICAgKiBAcGFyYW0gcyBUaGUgc3RyaW5nIHRvIGNvbnN0cnVjdCB0aGlzIG9iamVjdCBmcm9tIAorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBDYXNlSW5zZW5zaXRpdmVTdHJpbmcoU3RyaW5nIHMpIHsKKyAgICAgICAgc3RyaW5nID0gczsKKyAgICB9CisgICAgLyoqCisgICAgICogcmV0dXJucyB0aGUgdW5kZXJseWluZyBzdHJpbmcgCisgICAgICogQHJldHVybiBTdHJpbmcKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIGdldFN0cmluZygpIHsKKyAgICAgICAgcmV0dXJuIHN0cmluZzsKKyAgICB9CisgICAgLyoqCisgICAgICogQ29tcGFyZSB0aGUgb2JqZWN0IHdpdGggdGhpcyAKKyAgICAgKiBAcGFyYW0gbyBPYmplY3QgdG8gY29tcGFyZSB0aGlzIG9iamVjdCB3aXRoIAorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3QgbykgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5lcXVhbHNJZ25vcmVDYXNlKCgoQ2FzZUluc2Vuc2l0aXZlU3RyaW5nKW8pLnN0cmluZyk7CisgICAgICAgIH0gY2F0Y2ggKENsYXNzQ2FzdEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHJldHVybiBzdHJpbmcuZXF1YWxzSWdub3JlQ2FzZSgoU3RyaW5nKW8pOworICAgICAgICAgICAgfSBjYXRjaCAoQ2xhc3NDYXN0RXhjZXB0aW9uIGUyKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGhhc2hDb2RlIG9mIHRoaXMgb2JqZWN0CisgICAgICogQHJldHVybiBpbnQgaGFzaGNvZGUKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgeworICAgICAgICBpZiAoaGFzaCA9PSAwKSB7CisgICAgICAgICAgICBoYXNoID0gVUNoYXJhY3Rlci5mb2xkQ2FzZShzdHJpbmcsIHRydWUpLmhhc2hDb2RlKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGhhc2g7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3V0aWwvQ2hpbmVzZUNhbGVuZGFyLmphdmEgYi9zcmMvY29tL2libS9pY3UvdXRpbC9DaGluZXNlQ2FsZW5kYXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mYjE4NDYyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L3V0aWwvQ2hpbmVzZUNhbGVuZGFyLmphdmEKQEAgLTAsMCArMSw4MjEgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS91dGlsL0NoaW5lc2VDYWxlbmRhci5qYXZhLHYgJAorICogJERhdGU6IDIwMDIvMTIvMTggMTk6MzU6MDYgJAorICogJFJldmlzaW9uOiAxLjE0ICQKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS51dGlsOworaW1wb3J0IGNvbS5pYm0uaWN1LmxhbmcuKjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0Lio7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKKworLyoqCisgKiA8Y29kZT5DaGluZXNlQ2FsZW5kYXI8L2NvZGU+IGlzIGEgY29uY3JldGUgc3ViY2xhc3Mgb2Yge0BsaW5rIENhbGVuZGFyfQorICogdGhhdCBpbXBsZW1lbnRzIGEgdHJhZGl0aW9uYWwgQ2hpbmVzZSBjYWxlbmRhci4gIFRoZSB0cmFkaXRpb25hbCBDaGluZXNlCisgKiBjYWxlbmRhciBpcyBhIGx1bmlzb2xhciBjYWxlbmRhcjogRWFjaCBtb250aCBzdGFydHMgb24gYSBuZXcgbW9vbiwgYW5kCisgKiB0aGUgbW9udGhzIGFyZSBudW1iZXJlZCBhY2NvcmRpbmcgdG8gc29sYXIgZXZlbnRzLCBzcGVjaWZpY2FsbHksIHRvCisgKiBndWFyYW50ZWUgdGhhdCBtb250aCAxMSBhbHdheXMgY29udGFpbnMgdGhlIHdpbnRlciBzb2xzdGljZS4gIEluIG9yZGVyCisgKiB0byBhY2NvbXBsaXNoIHRoaXMsIGxlYXAgbW9udGhzIGFyZSBpbnNlcnRlZCBpbiBjZXJ0YWluIHllYXJzLiAgTGVhcAorICogbW9udGhzIGFyZSBudW1iZXJlZCB0aGUgc2FtZSBhcyB0aGUgbW9udGggdGhleSBmb2xsb3cuICBUaGUgZGVjaXNpb24gb2YKKyAqIHdoaWNoIG1vbnRoIGlzIGEgbGVhcCBtb250aCBkZXBlbmRzIG9uIHRoZSByZWxhdGl2ZSBtb3ZlbWVudHMgb2YgdGhlIHN1bgorICogYW5kIG1vb24uCisgKgorICogPHA+VGhpcyBjbGFzcyBkZWZpbmVzIG9uZSBhZGRpdGlvbiBmaWVsZCBiZXlvbmQgdGhvc2UgZGVmaW5lZCBieQorICogPGNvZGU+Q2FsZW5kYXI8L2NvZGU+OiBUaGUgPGNvZGU+SVNfTEVBUF9NT05USDwvY29kZT4gZmllbGQgdGFrZXMgdGhlCisgKiB2YWx1ZSBvZiAwIGZvciBub3JtYWwgbW9udGhzLCBvciAxIGZvciBsZWFwIG1vbnRocy4KKyAqCisgKiA8cD5BbGwgYXN0cm9ub21pY2FsIGNvbXB1dGF0aW9ucyBhcmUgcGVyZm9ybWVkIHdpdGggcmVzcGVjdCB0byBhIHRpbWUKKyAqIHpvbmUgb2YgR01UKzg6MDAgYW5kIGEgbG9uZ2l0dWRlIG9mIDEyMCBkZWdyZWVzIGVhc3QuICBBbHRob3VnaCBzb21lCisgKiBjYWxlbmRhcnMgaW1wbGVtZW50IGEgaGlzdG9yaWNhbGx5IG1vcmUgYWNjdXJhdGUgY29udmVudGlvbiBvZiB1c2luZworICogQmVpamluZydzIGxvY2FsIGxvbmdpdHVkZSAoMTE2IGRlZ3JlZXMgMjUgbWludXRlcyBlYXN0KSBhbmQgdGltZSB6b25lCisgKiAoR01UKzc6NDU6NDApIGZvciBkYXRlcyBiZWZvcmUgMTkyOSwgd2UgZG8gbm90IGltcGxlbWVudCB0aGlzIGhlcmUuCisgKgorICogPHA+WWVhcnMgYXJlIGNvdW50ZWQgaW4gdHdvIGRpZmZlcmVudCB3YXlzIGluIHRoZSBDaGluZXNlIGNhbGVuZGFyLiAgVGhlCisgKiBmaXJzdCBtZXRob2QgaXMgYnkgc2VxdWVudGlhbCBudW1iZXJpbmcgZnJvbSB0aGUgNjFzdCB5ZWFyIG9mIHRoZSByZWlnbgorICogb2YgSHVhbmcgRGksIDI2MzcgQkNFLCB3aGljaCBpcyBkZXNpZ25hdGVkIHllYXIgMSBvbiB0aGUgQ2hpbmVzZQorICogY2FsZW5kYXIuICBUaGUgc2Vjb25kIG1ldGhvZCB1c2VzIDYwLXllYXIgY3ljbGVzIGZyb20gdGhlIHNhbWUgc3RhcnRpbmcKKyAqIHBvaW50LCB3aGljaCBpcyBkZXNpZ25hdGVkIHllYXIgMSBvZiBjeWNsZSAxLiAgSW4gdGhpcyBjbGFzcywgdGhlCisgKiA8Y29kZT5FWFRFTkRFRF9ZRUFSPC9jb2RlPiBmaWVsZCBjb250YWlucyB0aGUgc2VxdWVudGlhbCB5ZWFyIGNvdW50LgorICogVGhlIDxjb2RlPkVSQTwvY29kZT4gZmllbGQgY29udGFpbnMgdGhlIGN5Y2xlIG51bWJlciwgYW5kIHRoZQorICogPGNvZGU+WUVBUjwvY29kZT4gZmllbGQgY29udGFpbnMgdGhlIHllYXIgb2YgdGhlIGN5Y2xlLCBhIHZhbHVlIGJldHdlZW4KKyAqIDEgYW5kIDYwLgorICoKKyAqIDxwPlRoZXJlIGlzIHNvbWUgdmFyaWF0aW9uIGluIHdoYXQgaXMgY29uc2lkZXJlZCB0aGUgc3RhcnRpbmcgcG9pbnQgb2YKKyAqIHRoZSBjYWxlbmRhciwgd2l0aCBzb21lIHNvdXJjZXMgc3RhcnRpbmcgaW4gdGhlIGZpcnN0IHllYXIgb2YgdGhlIHJlaWduCisgKiBvZiBIdWFuZyBEaSwgcmF0aGVyIHRoYW4gdGhlIDYxc3QuICBUaGlzIGdpdmVzIGNvbnRpbnVvdXMgeWVhciBudW1iZXJzCisgKiA2MCB5ZWFycyBncmVhdGVyIGFuZCBjeWNsZSBudW1iZXJzIG9uZSBncmVhdGVyIHRoYW4gd2hhdCB0aGlzIGNsYXNzCisgKiBpbXBsZW1lbnRzLgorICoKKyAqIDxwPkJlY2F1c2UgPGNvZGU+Q2hpbmVzZUNhbGVuZGFyPC9jb2RlPiBkZWZpbmVzIGFuIGFkZGl0aW9uYWwgZmllbGQgYW5kCisgKiByZWRlZmluZXMgdGhlIHdheSB0aGUgPGNvZGU+RVJBPC9jb2RlPiBmaWVsZCBpcyB1c2VkLCBpdCByZXF1aXJlcyBhIG5ldworICogZm9ybWF0IGNsYXNzLCA8Y29kZT5DaGluZXNlRGF0ZUZvcm1hdDwvY29kZT4uICBBcyBhbHdheXMsIHVzZSB0aGUKKyAqIG1ldGhvZHMgPGNvZGU+RGF0ZUZvcm1hdC5nZXRYeHhJbnN0YW5jZShDYWxlbmRhciBjYWwsLi4uKTwvY29kZT4gdG8KKyAqIG9idGFpbiBhIGZvcm1hdHRlciBmb3IgdGhpcyBjYWxlbmRhci4KKyAqCisgKiA8cD5SZWZlcmVuY2VzOjx1bD4KKyAqIAorICogPGxpPkRlcnNob3dpdHogYW5kIFJlaW5nb2xkLCA8aT5DYWxlbmRyaWNhbCBDYWxjdWxhdGlvbnM8L2k+LAorICogQ2FtYnJpZGdlIFVuaXZlcnNpdHkgUHJlc3MsIDE5OTc8L2xpPgorICogCisgKiA8bGk+SGVsbWVyIEFzbGFrc2VuJ3MKKyAqIDxhIGhyZWY9Imh0dHA6Ly93d3cubWF0aC5udXMuZWR1LnNnL2FzbGFrc2VuL2NhbGVuZGFyL2NoaW5lc2Uuc2h0bWwiPgorICogQ2hpbmVzZSBDYWxlbmRhciBwYWdlPC9hPjwvbGk+CisgKgorICogPGxpPlRoZSA8YSBocmVmPSJodHRwOi8vd3d3LnRvbmRlcmluZy5kay9jbGF1cy9jYWxlbmRhci5odG1sIj4KKyAqIENhbGVuZGFyIEZBUTwvYT48L2xpPgorICoKKyAqIDwvdWw+CisgKiBAc2VlIGNvbS5pYm0uaWN1LnRleHQuQ2hpbmVzZURhdGVGb3JtYXQKKyAqIEBhdXRob3IgQWxhbiBMaXUKKyAqIEBkcmFmdCBJQ1UgMi40CisgKi8KK3B1YmxpYyBjbGFzcyBDaGluZXNlQ2FsZW5kYXIgZXh0ZW5kcyBDYWxlbmRhciB7CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIERldmVsb3BlciBOb3RlcworICAgIC8vIAorICAgIC8vIFRpbWUgaXMgcmVwcmVzZW50ZWQgYXMgYSBzY2FsYXIgaW4gdHdvIHdheXMgaW4gdGhpcyBjbGFzcy4gIE9uZSBpcworICAgIC8vIHRoZSB1c3VhbCBVVEMgZXBvY2ggbWlsbGlzLCB0aGF0IGlzLCBtaWxsaXNlY29uZHMgYWZ0ZXIgSmFudWFyeSAxLAorICAgIC8vIDE5NzAgR3JlZ29yaWFuLCAwOjAwOjAwLjAwMCBVVEMuICBUaGUgb3RoZXIgaXMgaW4gdGVybXMgb2YgJ2xvY2FsCisgICAgLy8gZGF5cy4nICBUaGlzIGlzIHRoZSBudW1iZXIgb2YgZGF5cyBhZnRlciBKYW51YXJ5IDEsIDE5NzAgR3JlZ29yaWFuLAorICAgIC8vIGxvY2FsIHRvIEJlaWppbmcsIENoaW5hIChzaW5jZSBhbGwgY29tcHV0YXRpb25zIG9mIHRoZSBDaGluZXNlCisgICAgLy8gY2FsZW5kYXIgYXJlIGRvbmUgaW4gQmVpamluZykuICBUaGF0IGlzLCAwIHJlcHJlc2VudHMgSmFudWFyeSAxLAorICAgIC8vIDE5NzAgMDowMCBBc2lhL1NoYW5naGFpLiAgQ29udmVyc2lvbiBvZiBsb2NhbCBkYXlzIHRvIGFuZCBmcm9tCisgICAgLy8gc3RhbmRhcmQgZXBvY2ggbWlsbGlzZWNvbmRzIGlzIGFjY29tcGxpc2hlZCBieSB0aGUgZGF5c1RvTWlsbGlzKCkKKyAgICAvLyBhbmQgbWlsbGlzVG9EYXlzKCkgbWV0aG9kcy4KKyAgICAvLyAKKyAgICAvLyBTZXZlcmFsIG1ldGhvZHMgdXNlIGNhY2hlcyB0byBpbXByb3ZlIHBlcmZvcm1hbmNlLiAgQ2FjaGVzIGFyZSBhdAorICAgIC8vIHRoZSBvYmplY3QsIG5vdCBjbGFzcyBsZXZlbCwgdW5kZXIgdGhlIGFzc3VtcHRpb24gdGhhdCB0eXBpY2FsCisgICAgLy8gdXNhZ2Ugd2lsbCBiZSB0byBoYXZlIG9uZSBpbnN0YW5jZSBvZiBDaGluZXNlQ2FsZW5kYXIgYXQgYSB0aW1lLgorIAorICAgIC8qKgorICAgICAqIFdlIGhhdmUgb25lIGluc3RhbmNlIHBlciBvYmplY3QsIGFuZCB3ZSBkb24ndCBzeW5jaHJvbml6ZSBpdCBiZWNhdXNlCisgICAgICogQ2FsZW5kYXIgZG9lc24ndCBzdXBwb3J0IG11bHRpdGhyZWFkZWQgZXhlY3V0aW9uIGluIHRoZSBmaXJzdCBwbGFjZS4KKyAgICAgKi8KKyAgICBwcml2YXRlIHRyYW5zaWVudCBDYWxlbmRhckFzdHJvbm9tZXIgYXN0cm8gPSBuZXcgQ2FsZW5kYXJBc3Ryb25vbWVyKCk7CisKKyAgICAvKioKKyAgICAgKiBDYWNoZSB0aGF0IG1hcHMgR3JlZ29yaWFuIHllYXIgdG8gbG9jYWwgZGF5cyBvZiB3aW50ZXIgc29sc3RpY2UuCisgICAgICogQHNlZSAjd2ludGVyU29sc3RpY2UKKyAgICAgKi8KKyAgICBwcml2YXRlIHRyYW5zaWVudCBDYWxlbmRhckNhY2hlIHdpbnRlclNvbHN0aWNlQ2FjaGUgPSBuZXcgQ2FsZW5kYXJDYWNoZSgpOworCisgICAgLyoqCisgICAgICogQ2FjaGUgdGhhdCBtYXBzIEdyZWdvcmlhbiB5ZWFyIHRvIGxvY2FsIGRheXMgb2YgQ2hpbmVzZSBuZXcgeWVhci4KKyAgICAgKiBAc2VlICNuZXdZZWFyCisgICAgICovCisgICAgcHJpdmF0ZSB0cmFuc2llbnQgQ2FsZW5kYXJDYWNoZSBuZXdZZWFyQ2FjaGUgPSBuZXcgQ2FsZW5kYXJDYWNoZSgpOworCisgICAgLyoqCisgICAgICogVHJ1ZSBpZiB0aGUgY3VycmVudCB5ZWFyIGlzIGEgbGVhcCB5ZWFyLiAgVXBkYXRlZCB3aXRoIGVhY2ggdGltZSB0bworICAgICAqIGZpZWxkcyByZXNvbHV0aW9uLgorICAgICAqIEBzZWUgI2NvbXB1dGVDaGluZXNlRmllbGRzCisgICAgICovCisgICAgcHJpdmF0ZSB0cmFuc2llbnQgYm9vbGVhbiBpc0xlYXBZZWFyOworCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBDb25zdHJ1Y3RvcnMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGEgQ2hpbmVzZSBjYWxlbmRhciB3aXRoIHRoZSBkZWZhdWx0IHRpbWUgem9uZSBhbmQgbG9jYWxlLgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIENoaW5lc2VDYWxlbmRhcigpIHsKKyAgICAgICAgc3VwZXIoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgYSBDaGluZXNlIGNhbGVuZGFyIHdpdGggdGhlIGdpdmVuIHRpbWUgem9uZSBhbmQgbG9jYWxlLgorICAgICAqIEBwYXJhbSB6b25lIHRpbWUgem9uZSBmb3IgdGhpcyBjYWxlbmRhcgorICAgICAqIEBwYXJhbSBsb2NhbGUgbG9jYWxlIGZvciB0aGlzIGNhbGVuZGFyCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgQ2hpbmVzZUNhbGVuZGFyKFRpbWVab25lIHpvbmUsIExvY2FsZSBsb2NhbGUpIHsKKyAgICAgICAgc3VwZXIoem9uZSwgbG9jYWxlKTsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIFB1YmxpYyBjb25zdGFudHMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogRmllbGQgaW5kaWNhdGluZyB3aGV0aGVyIG9yIG5vdCB0aGUgY3VycmVudCBtb250aCBpcyBhIGxlYXAgbW9udGguCisgICAgICogU2hvdWxkIGhhdmUgYSB2YWx1ZSBvZiAwIGZvciBub24tbGVhcCBtb250aHMsIGFuZCAxIGZvciBsZWFwIG1vbnRocy4KKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgaW50IElTX0xFQVBfTU9OVEggPSBCQVNFX0ZJRUxEX0NPVU5UOworCisgICAgLyoqCisgICAgICogQ291bnQgb2YgZmllbGRzIGluIHRoaXMgY2xhc3MuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEZJRUxEX0NPVU5UID0gSVNfTEVBUF9NT05USCArIDE7CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIENhbGVuZGFyIGZyYW1ld29yaworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZSBDYWxlbmRhciB0byBhbGxvY2F0ZSBvdXIgYWRkaXRpb25hbCBmaWVsZC4KKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHByb3RlY3RlZCBpbnRbXSBoYW5kbGVDcmVhdGVGaWVsZHMoKSB7CisgICAgICAgIHJldHVybiBuZXcgaW50W0ZJRUxEX0NPVU5UXTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBcnJheSBkZWZpbmluZyB0aGUgbGltaXRzIG9mIGZpZWxkIHZhbHVlcyBmb3IgdGhpcyBjbGFzcy4gIEZpZWxkCisgICAgICogbGltaXRzIHdoaWNoIGFyZSBpbnZhcmlhbnQgd2l0aCByZXNwZWN0IHRvIGNhbGVuZGFyIHN5c3RlbSBhbmQKKyAgICAgKiBkZWZpbmVkIGJ5IENhbGVuZGFyIGFyZSBsZWZ0IGJsYW5rLgorICAgICAqCisgICAgICogTm90ZXM6CisgICAgICoKKyAgICAgKiBFUkEgNTAwMDAwMCAvIDYwID0gODMzMzMuCisgICAgICoKKyAgICAgKiBNT05USCBUaGVyZSBhcmUgMTIgb3IgMTMgbHVuYXIgbW9udGhzIGluIGEgeWVhci4gIEhvd2V2ZXIsIHdlIGFsd2F5cworICAgICAqIG51bWJlciB0aGVtIDAuLjExLCB3aXRoIGFuIGludGVyY2FsYXRlZCwgaWRlbnRpY2FsbHkgbnVtYmVyZWQgbGVhcAorICAgICAqIG1vbnRoLCB3aGVuIG5lY2Vzc2FyeS4KKyAgICAgKgorICAgICAqIERBWV9PRl9ZRUFSIEluIGEgbm9uLWxlYXAgeWVhciB0aGVyZSBhcmUgMzUzLCAzNTQsIG9yIDM1NSBkYXlzLiAgSW4KKyAgICAgKiBhIGxlYXAgeWVhciB0aGVyZSBhcmUgMzgzLCAzODQsIG9yIDM4NSBkYXlzLgorICAgICAqCisgICAgICogV0VFS19PRl9ZRUFSIFRoZSBsZWFzdCBtYXhpbXVtIG9jY3VycyBpZiB0aGVyZSBhcmUgMzUzIGRheXMgaW4gdGhlCisgICAgICogeWVhciwgYW5kIHRoZSBmaXJzdCA2IGFyZSB0aGUgbGFzdCB3ZWVrIG9mIHRoZSBwcmV2aW91cyB5ZWFyLiAgVGhlbgorICAgICAqIHdlIGhhdmUgNDkgZnVsbCB3ZWVrcyBhbmQgNCBkYXlzIGluIHRoZSBsYXN0IHdlZWs6IDYgKyA0OSo3ICsgNCA9CisgICAgICogMzUzLiAgU28gdGhlIGxlYXN0IG1heGltdW0gaXMgNTAuICBUaGUgbWF4aW11bSBvY2N1cnMgaWYgdGhlcmUgYXJlCisgICAgICogMzg1IGRheXMgaW4gdGhlIHllYXIsIGFuZCBXT1kgMSBleHRlbmRzIDYgZGF5cyBpbnRvIHRoZSBwcmlvciB5ZWFyLgorICAgICAqIFRoZW4gdGhlcmUgYXJlIDU0IGZ1bGwgd2Vla3MsIGFuZCA2IGRheXMgaW4gdGhlIGxhc3Qgd2VlazogMSArIDU0KjcKKyAgICAgKiArIDYgPSAzODUuICBUaGUgNiBkYXlzIG9mIHRoZSBsYXN0IHdlZWsgd2lsbCBmYWxsIGludG8gV09ZIDEgb2YgdGhlCisgICAgICogbmV4dCB5ZWFyLiAgTWF4aW11bSBpcyA1NS4KKyAgICAgKgorICAgICAqIFdFRUtfT0ZfTU9OVEggSW4gYSAyOSBkYXkgbW9udGgsIGlmIHRoZSBmaXJzdCA3IGRheXMgbWFrZSB1cCB3ZWVrIDEKKyAgICAgKiB0aGF0IGxlYXZlcyAzIGZ1bGwgd2Vla3MgYW5kIDEgZGF5IGF0IHRoZSBlbmQuICBUaGUgbGVhc3QgbWF4aW11bSBpcworICAgICAqIHRodXMgNS4gIEluIGEgMzAgZGF5cyBtb250aCwgaWYgdGhlIHByZXZpb3VzIDYgZGF5cyBiZWxvbmcgV09NIDEgb2YKKyAgICAgKiB0aGlzIG1vbnRoLCB3ZSBoYXZlIDQgZnVsbCB3ZWVrcyBhbmQgMSBkYXlzIGF0IHRoZSBlbmQgKHdoaWNoCisgICAgICogdGVjaG5pY2FsbHkgd2lsbCBiZSBXT00gMSBvZiB0aGUgbmV4dCBtb250aCwgYnV0IHdpbGwgYmUgcmVwb3J0ZWQgYnkKKyAgICAgKiB0aW1lLT5maWVsZHMgYW5kIGhlbmNlIGJ5IGdldEFjdHVhbE1heGltdW0gYXMgV09NIDYgb2YgdGhpcyBtb250aCkuCisgICAgICogTWF4aW11bSBpcyA2LgorICAgICAqCisgICAgICogREFZX09GX1dFRUtfSU5fTU9OVEggSW4gYSAyOSBvciAzMCBkYXkgbW9udGgsIHRoZXJlIGFyZSA0IGZ1bGwgd2Vla3MKKyAgICAgKiBwbHVzIDEgb3IgMiBkYXlzIGF0IHRoZSBlbmQsIHNvIHRoZSBtYXhpbXVtIGlzIGFsd2F5cyA1LgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBMSU1JVFNbXVtdID0geworICAgICAgICAvLyBNaW5pbXVtICBHcmVhdGVzdCAgICBMZWFzdCAgTWF4aW11bQorICAgICAgICAvLyAgICAgICAgICAgTWluaW11bSAgTWF4aW11bQorICAgICAgICB7ICAgICAgICAxLCAgICAgICAgMSwgICA4MzMzMywgICA4MzMzMyB9LCAvLyBFUkEKKyAgICAgICAgeyAgICAgICAgMSwgICAgICAgIDEsICAgICAgNzAsICAgICAgNzAgfSwgLy8gWUVBUgorICAgICAgICB7ICAgICAgICAwLCAgICAgICAgMCwgICAgICAxMSwgICAgICAxMSB9LCAvLyBNT05USAorICAgICAgICB7ICAgICAgICAxLCAgICAgICAgMSwgICAgICA1MCwgICAgICA1NSB9LCAvLyBXRUVLX09GX1lFQVIKKyAgICAgICAgeyAgICAgICAgMSwgICAgICAgIDEsICAgICAgIDUsICAgICAgIDYgfSwgLy8gV0VFS19PRl9NT05USAorICAgICAgICB7ICAgICAgICAxLCAgICAgICAgMSwgICAgICAyOSwgICAgICAzMCB9LCAvLyBEQVlfT0ZfTU9OVEgKKyAgICAgICAgeyAgICAgICAgMSwgICAgICAgIDEsICAgICAzNTMsICAgICAzODUgfSwgLy8gREFZX09GX1lFQVIKKyAgICAgICAgey8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovfSwgLy8gREFZX09GX1dFRUsKKyAgICAgICAgeyAgICAgICAtMSwgICAgICAgLTEsICAgICAgIDUsICAgICAgIDUgfSwgLy8gREFZX09GX1dFRUtfSU5fTU9OVEgKKyAgICAgICAgey8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovfSwgLy8gQU1fUE0KKyAgICAgICAgey8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovfSwgLy8gSE9VUgorICAgICAgICB7LyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi99LCAvLyBIT1VSX09GX0RBWQorICAgICAgICB7LyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi99LCAvLyBNSU5VVEUKKyAgICAgICAgey8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovfSwgLy8gU0VDT05ECisgICAgICAgIHsvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL30sIC8vIE1JTExJU0VDT05ECisgICAgICAgIHsvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL30sIC8vIFpPTkVfT0ZGU0VUCisgICAgICAgIHsvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL30sIC8vIERTVF9PRkZTRVQKKyAgICAgICAgeyAtNTAwMDAwMSwgLTUwMDAwMDEsIDUwMDAwMDEsIDUwMDAwMDEgfSwgLy8gWUVBUl9XT1kKKyAgICAgICAgey8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovfSwgLy8gRE9XX0xPQ0FMCisgICAgICAgIHsgLTUwMDAwMDAsIC01MDAwMDAwLCA1MDAwMDAwLCA1MDAwMDAwIH0sIC8vIEVYVEVOREVEX1lFQVIKKyAgICAgICAgey8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovfSwgLy8gSlVMSUFOX0RBWQorICAgICAgICB7LyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi99LCAvLyBNSUxMSVNFQ09ORFNfSU5fREFZCisgICAgICAgIHsgICAgICAgIDAsICAgICAgICAwLCAgICAgICAxLCAgICAgICAxIH0sIC8vIElTX0xFQVBfTU9OVEgKKyAgICB9OworCisgICAgLyoqCisgICAgICogT3ZlcnJpZGUgQ2FsZW5kYXIgdG8gcmV0dXJuIHRoZSBsaW1pdCB2YWx1ZSBmb3IgdGhlIGdpdmVuIGZpZWxkLgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHJvdGVjdGVkIGludCBoYW5kbGVHZXRMaW1pdChpbnQgZmllbGQsIGludCBsaW1pdFR5cGUpIHsKKyAgICAgICAgcmV0dXJuIExJTUlUU1tmaWVsZF1bbGltaXRUeXBlXTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbXBsZW1lbnQgYWJzdHJhY3QgQ2FsZW5kYXIgbWV0aG9kIHRvIHJldHVybiB0aGUgZXh0ZW5kZWQgeWVhcgorICAgICAqIGRlZmluZWQgYnkgdGhlIGN1cnJlbnQgZmllbGRzLiAgVGhpcyB3aWxsIHVzZSBlaXRoZXIgdGhlIEVSQSBhbmQKKyAgICAgKiBZRUFSIGZpZWxkIGFzIHRoZSBjeWNsZSBhbmQgeWVhci1vZi1jeWNsZSwgb3IgdGhlIEVYVEVOREVEX1lFQVIKKyAgICAgKiBmaWVsZCBhcyB0aGUgY29udGludW91cyB5ZWFyIGNvdW50LCBkZXBlbmRpbmcgb24gd2hpY2ggaXMgbmV3ZXIuCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgaW50IGhhbmRsZUdldEV4dGVuZGVkWWVhcigpIHsKKyAgICAgICAgaW50IHllYXI7CisgICAgICAgIGlmIChuZXdlc3RTdGFtcChFUkEsIFlFQVIsIFVOU0VUKSA8PSBnZXRTdGFtcChFWFRFTkRFRF9ZRUFSKSkgeworICAgICAgICAgICAgeWVhciA9IGludGVybmFsR2V0KEVYVEVOREVEX1lFQVIsIDEpOyAvLyBEZWZhdWx0IHRvIHllYXIgMQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaW50IGN5Y2xlID0gaW50ZXJuYWxHZXQoRVJBLCAxKSAtIDE7IC8vIDAtYmFzZWQgY3ljbGUKKyAgICAgICAgICAgIHllYXIgPSBjeWNsZSAqIDYwICsgaW50ZXJuYWxHZXQoWUVBUiwgMSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHllYXI7CisgICAgfQorCisgICAgLyoqCisgICAgICogT3ZlcnJpZGUgQ2FsZW5kYXIgbWV0aG9kIHRvIHJldHVybiB0aGUgbnVtYmVyIG9mIGRheXMgaW4gdGhlIGdpdmVuCisgICAgICogZXh0ZW5kZWQgeWVhciBhbmQgbW9udGguCisgICAgICoKKyAgICAgKiA8cD5Ob3RlOiBUaGlzIG1ldGhvZCBhbHNvIHJlYWRzIHRoZSBJU19MRUFQX01PTlRIIGZpZWxkIHRvIGRldGVybWluZQorICAgICAqIHdoZXRoZXIgb3Igbm90IHRoZSBnaXZlbiBtb250aCBpcyBhIGxlYXAgbW9udGguCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgaW50IGhhbmRsZUdldE1vbnRoTGVuZ3RoKGludCBleHRlbmRlZFllYXIsIGludCBtb250aCkgeworICAgICAgICBpbnQgdGhpc1N0YXJ0ID0gaGFuZGxlQ29tcHV0ZU1vbnRoU3RhcnQoZXh0ZW5kZWRZZWFyLCBtb250aCwgdHJ1ZSkgLQorICAgICAgICAgICAgRVBPQ0hfSlVMSUFOX0RBWSArIDE7IC8vIEp1bGlhbiBkYXkgLT4gbG9jYWwgZGF5cworICAgICAgICBpbnQgbmV4dFN0YXJ0ID0gbmV3TW9vbk5lYXIodGhpc1N0YXJ0ICsgU1lOT0RJQ19HQVAsIHRydWUpOworICAgICAgICByZXR1cm4gbmV4dFN0YXJ0IC0gdGhpc1N0YXJ0OworICAgIH0KKworICAgIC8qKgorICAgICAqIEZyYW1ld29yayBtZXRob2QgdG8gY3JlYXRlIGEgY2FsZW5kYXItc3BlY2lmaWMgRGF0ZUZvcm1hdCBvYmplY3QKKyAgICAgKiB1c2luZyB0aGUgdGhlIGdpdmVuIHBhdHRlcm4uICBUaGlzIG1ldGhvZCBpcyByZXNwb25zaWJsZSBmb3IKKyAgICAgKiBjcmVhdGluZyB0aGUgY2FsZW5kYXItIHNwZWNpZmljIERhdGVGb3JtYXQgYW5kIERhdGVGb3JtYXRTeW1ib2xzCisgICAgICogb2JqZWN0cyBhcyBuZWVkZWQuCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgRGF0ZUZvcm1hdCBoYW5kbGVHZXREYXRlRm9ybWF0KFN0cmluZyBwYXR0ZXJuLCBMb2NhbGUgbG9jYWxlKSB7CisgICAgICAgIHJldHVybiBuZXcgQ2hpbmVzZURhdGVGb3JtYXQocGF0dGVybiwgbG9jYWxlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBGaWVsZCByZXNvbHV0aW9uIHRhYmxlIHRoYXQgaW5jb3Jwb3JhdGVzIElTX0xFQVBfTU9OVEguCisgICAgICovCisgICAgc3RhdGljIGZpbmFsIGludFtdW11bXSBDSElORVNFX0RBVEVfUFJFQ0VERU5DRSA9IHsKKyAgICAgICAgeworICAgICAgICAgICAgeyBEQVlfT0ZfTU9OVEggfSwKKyAgICAgICAgICAgIHsgV0VFS19PRl9ZRUFSLCBEQVlfT0ZfV0VFSyB9LAorICAgICAgICAgICAgeyBXRUVLX09GX01PTlRILCBEQVlfT0ZfV0VFSyB9LAorICAgICAgICAgICAgeyBEQVlfT0ZfV0VFS19JTl9NT05USCwgREFZX09GX1dFRUsgfSwKKyAgICAgICAgICAgIHsgV0VFS19PRl9ZRUFSLCBET1dfTE9DQUwgfSwKKyAgICAgICAgICAgIHsgV0VFS19PRl9NT05USCwgRE9XX0xPQ0FMIH0sCisgICAgICAgICAgICB7IERBWV9PRl9XRUVLX0lOX01PTlRILCBET1dfTE9DQUwgfSwKKyAgICAgICAgICAgIHsgREFZX09GX1lFQVIgfSwKKyAgICAgICAgICAgIHsgUkVTT0xWRV9SRU1BUCB8IERBWV9PRl9NT05USCwgSVNfTEVBUF9NT05USCB9LAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB7IFdFRUtfT0ZfWUVBUiB9LAorICAgICAgICAgICAgeyBXRUVLX09GX01PTlRIIH0sCisgICAgICAgICAgICB7IERBWV9PRl9XRUVLX0lOX01PTlRIIH0sCisgICAgICAgICAgICB7IFJFU09MVkVfUkVNQVAgfCBEQVlfT0ZfV0VFS19JTl9NT05USCwgREFZX09GX1dFRUsgfSwKKyAgICAgICAgICAgIHsgUkVTT0xWRV9SRU1BUCB8IERBWV9PRl9XRUVLX0lOX01PTlRILCBET1dfTE9DQUwgfSwKKyAgICAgICAgfSwKKyAgICB9OworCisgICAgLyoqCisgICAgICogT3ZlcnJpZGUgQ2FsZW5kYXIgdG8gYWRkIElTX0xFQVBfTU9OVEggdG8gdGhlIGZpZWxkIHJlc29sdXRpb24KKyAgICAgKiB0YWJsZS4KKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHByb3RlY3RlZCBpbnRbXVtdW10gZ2V0RmllbGRSZXNvbHV0aW9uVGFibGUoKSB7CisgICAgICAgIHJldHVybiBDSElORVNFX0RBVEVfUFJFQ0VERU5DRTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBZGp1c3QgdGhpcyBjYWxlbmRhciB0byBiZSBkZWx0YSBtb250aHMgYmVmb3JlIG9yIGFmdGVyIGEgZ2l2ZW4KKyAgICAgKiBzdGFydCBwb3NpdGlvbiwgcGlubmluZyB0aGUgZGF5IG9mIG1vbnRoIGlmIG5lY2Vzc2FyeS4gIFRoZSBzdGFydAorICAgICAqIHBvc2l0aW9uIGlzIGdpdmVuIGFzIGEgbG9jYWwgZGF5cyBudW1iZXIgZm9yIHRoZSBzdGFydCBvZiB0aGUgbW9udGgKKyAgICAgKiBhbmQgYSBkYXktb2YtbW9udGguICBVc2VkIGJ5IGFkZCgpIGFuZCByb2xsKCkuCisgICAgICogQHBhcmFtIG5ld01vb24gdGhlIGxvY2FsIGRheXMgb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgbW9udGggb2YgdGhlCisgICAgICogc3RhcnQgcG9zaXRpb24gKGRheXMgYWZ0ZXIgSmFudWFyeSAxLCAxOTcwIDA6MDAgQXNpYS9TaGFuZ2hhaSkKKyAgICAgKiBAcGFyYW0gZG9tIHRoZSAxLWJhc2VkIGRheS1vZi1tb250aCBvZiB0aGUgc3RhcnQgcG9zaXRpb24KKyAgICAgKiBAcGFyYW0gZGVsdGEgdGhlIG51bWJlciBvZiBtb250aHMgdG8gbW92ZSBmb3J3YXJkIG9yIGJhY2t3YXJkIGZyb20KKyAgICAgKiB0aGUgc3RhcnQgcG9zaXRpb24KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgb2Zmc2V0TW9udGgoaW50IG5ld01vb24sIGludCBkb20sIGludCBkZWx0YSkgeworICAgICAgICAvLyBNb3ZlIHRvIHRoZSBtaWRkbGUgb2YgdGhlIG1vbnRoIGJlZm9yZSBvdXIgdGFyZ2V0IG1vbnRoLgorICAgICAgICBuZXdNb29uICs9IChpbnQpIChDYWxlbmRhckFzdHJvbm9tZXIuU1lOT0RJQ19NT05USCAqIChkZWx0YSAtIDAuNSkpOworCisgICAgICAgIC8vIFNlYXJjaCBmb3J3YXJkIHRvIHRoZSB0YXJnZXQgbW9udGgncyBuZXcgbW9vbgorICAgICAgICBuZXdNb29uID0gbmV3TW9vbk5lYXIobmV3TW9vbiwgdHJ1ZSk7CisKKyAgICAgICAgLy8gRmluZCB0aGUgdGFyZ2V0IGRvbQorICAgICAgICBpbnQgamQgPSBuZXdNb29uICsgRVBPQ0hfSlVMSUFOX0RBWSAtIDEgKyBkb207CisKKyAgICAgICAgLy8gUGluIHRoZSBkb20uICBJbiB0aGlzIGNhbGVuZGFyIGFsbCBtb250aHMgYXJlIDI5IG9yIDMwIGRheXMKKyAgICAgICAgLy8gc28gcGlubmluZyBqdXN0IG1lYW5zIGhhbmRsaW5nIGRvbSAzMC4KKyAgICAgICAgaWYgKGRvbSA+IDI5KSB7CisgICAgICAgICAgICBzZXQoSlVMSUFOX0RBWSwgamQtMSk7CisgICAgICAgICAgICAvLyBUT0RPIEZpeCB0aGlzLiAgV2UgcmVhbGx5IHNob3VsZG4ndCBldmVyIGhhdmUgdG8KKyAgICAgICAgICAgIC8vIGV4cGxpY2l0bHkgY2FsbCBjb21wbGV0ZSgpLiAgVGhpcyBpcyBlaXRoZXIgYSBidWcgaW4KKyAgICAgICAgICAgIC8vIHRoaXMgbWV0aG9kLCBpbiBDaGluZXNlQ2FsZW5kYXIsIG9yIGluCisgICAgICAgICAgICAvLyBDYWxlbmRhci5nZXRBY3R1YWxNYXhpbXVtKCkuICBJIHN1c3BlY3QgdGhlIGxhc3QuCisgICAgICAgICAgICBjb21wbGV0ZSgpOworICAgICAgICAgICAgaWYgKGdldEFjdHVhbE1heGltdW0oREFZX09GX01PTlRIKSA+PSBkb20pIHsKKyAgICAgICAgICAgICAgICBzZXQoSlVMSUFOX0RBWSwgamQpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2V0KEpVTElBTl9EQVksIGpkKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIE92ZXJyaWRlIENhbGVuZGFyIHRvIGhhbmRsZSBsZWFwIG1vbnRocyBwcm9wZXJseS4KKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGFkZChpbnQgZmllbGQsIGludCBhbW91bnQpIHsKKyAgICAgICAgc3dpdGNoIChmaWVsZCkgeworICAgICAgICBjYXNlIE1PTlRIOgorICAgICAgICAgICAgaWYgKGFtb3VudCAhPSAwKSB7CisgICAgICAgICAgICAgICAgaW50IGRvbSA9IGdldChEQVlfT0ZfTU9OVEgpOworICAgICAgICAgICAgICAgIGludCBkYXkgPSBnZXQoSlVMSUFOX0RBWSkgLSBFUE9DSF9KVUxJQU5fREFZOyAvLyBHZXQgbG9jYWwgZGF5CisgICAgICAgICAgICAgICAgaW50IG1vb24gPSBkYXkgLSBkb20gKyAxOyAvLyBOZXcgbW9vbiAKKyAgICAgICAgICAgICAgICBvZmZzZXRNb250aChtb29uLCBkb20sIGFtb3VudCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHN1cGVyLmFkZChmaWVsZCwgYW1vdW50KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogT3ZlcnJpZGUgQ2FsZW5kYXIgdG8gaGFuZGxlIGxlYXAgbW9udGhzIHByb3Blcmx5LgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHZvaWQgcm9sbChpbnQgZmllbGQsIGludCBhbW91bnQpIHsKKyAgICAgICAgc3dpdGNoIChmaWVsZCkgeworICAgICAgICBjYXNlIE1PTlRIOgorICAgICAgICAgICAgaWYgKGFtb3VudCAhPSAwKSB7CisgICAgICAgICAgICAgICAgaW50IGRvbSA9IGdldChEQVlfT0ZfTU9OVEgpOworICAgICAgICAgICAgICAgIGludCBkYXkgPSBnZXQoSlVMSUFOX0RBWSkgLSBFUE9DSF9KVUxJQU5fREFZOyAvLyBHZXQgbG9jYWwgZGF5CisgICAgICAgICAgICAgICAgaW50IG1vb24gPSBkYXkgLSBkb20gKyAxOyAvLyBOZXcgbW9vbiAoc3RhcnQgb2YgdGhpcyBtb250aCkKKworICAgICAgICAgICAgICAgIC8vIE5vdGUgdGhyb3VnaG91dCB0aGUgZm9sbG93aW5nOiAgTW9udGhzIDEyIGFuZCAxIGFyZSBuZXZlcgorICAgICAgICAgICAgICAgIC8vIGZvbGxvd2VkIGJ5IGEgbGVhcCBtb250aCAoRCZSIHAuIDE4NSkuCisKKyAgICAgICAgICAgICAgICAvLyBDb21wdXRlIHRoZSBhZGp1c3RlZCBtb250aCBudW1iZXIgbS4gIFRoaXMgaXMgemVyby1iYXNlZAorICAgICAgICAgICAgICAgIC8vIHZhbHVlIGZyb20gMC4uMTEgaW4gYSBub24tbGVhcCB5ZWFyLCBhbmQgZnJvbSAwLi4xMiBpbiBhCisgICAgICAgICAgICAgICAgLy8gbGVhcCB5ZWFyLgorICAgICAgICAgICAgICAgIGludCBtID0gZ2V0KE1PTlRIKTsgLy8gMC1iYXNlZCBtb250aAorICAgICAgICAgICAgICAgIGlmIChpc0xlYXBZZWFyKSB7IC8vIChtZW1iZXIgdmFyaWFibGUpCisgICAgICAgICAgICAgICAgICAgIGlmIChnZXQoSVNfTEVBUF9NT05USCkgPT0gMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgKyttOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGEgcHJpb3IgbGVhcCBtb250aC4gIChJbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvbGxvd2luZywgbW9udGggMCBpcyB0aGUgZmlyc3QgbW9udGggb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB5ZWFyLikgIE1vbnRoIDAgaXMgbmV2ZXIgZm9sbG93ZWQgYnkgYSBsZWFwCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBtb250aCwgYW5kIHdlIGtub3cgbW9udGggbSBpcyBub3QgYSBsZWFwIG1vbnRoLgorICAgICAgICAgICAgICAgICAgICAgICAgLy8gbW9vbjEgd2lsbCBiZSB0aGUgc3RhcnQgb2YgbW9udGggMCBpZiB0aGVyZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm8gbGVhcCBtb250aCBiZXR3ZWVuIG1vbnRoIDAgYW5kIG1vbnRoIG07CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdGhlcndpc2UgaXQgd2lsbCBiZSB0aGUgc3RhcnQgb2YgbW9udGggMS4KKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBtb29uMSA9IG1vb24gLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpIChDYWxlbmRhckFzdHJvbm9tZXIuU1lOT0RJQ19NT05USCAqIChtIC0gMC41KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBtb29uMSA9IG5ld01vb25OZWFyKG1vb24xLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0xlYXBNb250aEJldHdlZW4obW9vbjEsIG1vb24pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyttOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gTm93IGRvIHRoZSBzdGFuZGFyZCByb2xsIGNvbXB1dGF0aW9uIG9uIG0sIHdpdGggdGhlCisgICAgICAgICAgICAgICAgLy8gYWxsb3dlZCByYW5nZSBvZiAwLi5uLTEsIHdoZXJlIG4gaXMgMTIgb3IgMTMuCisgICAgICAgICAgICAgICAgaW50IG4gPSBpc0xlYXBZZWFyID8gMTMgOiAxMjsgLy8gTW9udGhzIGluIHRoaXMgeWVhcgorICAgICAgICAgICAgICAgIGludCBuZXdNID0gKG0gKyBhbW91bnQpICUgbjsKKyAgICAgICAgICAgICAgICBpZiAobmV3TSA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgbmV3TSArPSBuOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChuZXdNICE9IG0pIHsKKyAgICAgICAgICAgICAgICAgICAgb2Zmc2V0TW9udGgobW9vbiwgZG9tLCBuZXdNIC0gbSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBzdXBlci5yb2xsKGZpZWxkLCBhbW91bnQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIFN1cHBvcnQgbWV0aG9kcyBhbmQgY29uc3RhbnRzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIAorICAgIC8qKgorICAgICAqIFRoZSBzdGFydCB5ZWFyIG9mIHRoZSBDaGluZXNlIGNhbGVuZGFyLCB0aGUgNjFzdCB5ZWFyIG9mIHRoZSByZWlnbgorICAgICAqIG9mIEh1YW5nIERpLiAgU29tZSBzb3VyY2VzIHVzZSB0aGUgZmlyc3QgeWVhciBvZiBoaXMgcmVpZ24sCisgICAgICogcmVzdWx0aW5nIGluIEVYVEVOREVEX1lFQVIgdmFsdWVzIDYwIHllYXJzIGdyZWF0ZXIgYW5kIEVSQSAoY3ljbGUpCisgICAgICogdmFsdWVzIG9uZSBncmVhdGVyLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDSElORVNFX0VQT0NIX1lFQVIgPSAtMjYzNjsgLy8gR3JlZ29yaWFuIHllYXIKKworICAgIC8qKgorICAgICAqIFRoZSBvZmZzZXQgZnJvbSBHTVQgaW4gbWlsbGlzZWNvbmRzIGF0IHdoaWNoIHdlIHBlcmZvcm0gYXN0cm9ub21pY2FsCisgICAgICogY29tcHV0YXRpb25zLiAgU29tZSBzb3VyY2VzIHVzZSBhIGRpZmZlcmVudCBoaXN0b3JpY2FsbHkgYWNjdXJhdGUKKyAgICAgKiBvZmZzZXQgb2YgR01UKzc6NDU6NDAgZm9yIHllYXJzIGJlZm9yZSAxOTI5OyB3ZSBkbyBub3QgZG8gdGhpcy4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIENISU5BX09GRlNFVCA9IDgqT05FX0hPVVI7CisKKyAgICAvKioKKyAgICAgKiBWYWx1ZSB0byBiZSBhZGRlZCBvciBzdWJ0cmFjdGVkIGZyb20gdGhlIGxvY2FsIGRheXMgb2YgYSBuZXcgbW9vbiB0bworICAgICAqIGdldCBjbG9zZSB0byB0aGUgbmV4dCBvciBwcmlvciBuZXcgbW9vbiwgYnV0IG5vdCBjcm9zcyBpdC4gIE11c3QgYmUKKyAgICAgKiA+PSAxIGFuZCA8IENhbGVuZGFyQXN0cm9ub21lci5TWU5PRElDX01PTlRILgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTWU5PRElDX0dBUCA9IDI1OworCisgICAgLyoqCisgICAgICogQ29udmVydCBsb2NhbCBkYXlzIHRvIFVUQyBlcG9jaCBtaWxsaXNlY29uZHMuCisgICAgICogQHBhcmFtIGRheXMgZGF5cyBhZnRlciBKYW51YXJ5IDEsIDE5NzAgMDowMCBBc2lhL1NoYW5naGFpCisgICAgICogQHJldHVybiBtaWxsaXNlY29uZHMgYWZ0ZXIgSmFudWFyeSAxLCAxOTcwIDA6MDAgR01UCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBkYXlzVG9NaWxsaXMoaW50IGRheXMpIHsKKyAgICAgICAgcmV0dXJuIChkYXlzICogT05FX0RBWSkgLSBDSElOQV9PRkZTRVQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29udmVydCBVVEMgZXBvY2ggbWlsbGlzZWNvbmRzIHRvIGxvY2FsIGRheXMuCisgICAgICogQHBhcmFtIG1pbGxpcyBtaWxsaXNlY29uZHMgYWZ0ZXIgSmFudWFyeSAxLCAxOTcwIDA6MDAgR01UCisgICAgICogQHJldHVybiBkYXlzIGFmdGVyIEphbnVhcnkgMSwgMTk3MCAwOjAwIEFzaWEvU2hhbmdoYWkKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgbWlsbGlzVG9EYXlzKGxvbmcgbWlsbGlzKSB7CisgICAgICAgIHJldHVybiAoaW50KSBmbG9vckRpdmlkZShtaWxsaXMgKyBDSElOQV9PRkZTRVQsIE9ORV9EQVkpOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gQXN0cm9ub21pY2FsIGNvbXB1dGF0aW9ucworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBtYWpvciBzb2xhciB0ZXJtIG9uIG9yIGFmdGVyIERlY2VtYmVyIDE1IG9mIHRoZSBnaXZlbgorICAgICAqIEdyZWdvcmlhbiB5ZWFyLCB0aGF0IGlzLCB0aGUgd2ludGVyIHNvbHN0aWNlIG9mIHRoZSBnaXZlbiB5ZWFyLgorICAgICAqIENvbXB1dGF0aW9ucyBhcmUgcmVsYXRpdmUgdG8gQXNpYS9TaGFuZ2hhaSB0aW1lIHpvbmUuCisgICAgICogQHBhcmFtIGd5ZWFyIGEgR3JlZ29yaWFuIHllYXIKKyAgICAgKiBAcmV0dXJuIGRheXMgYWZ0ZXIgSmFudWFyeSAxLCAxOTcwIDA6MDAgQXNpYS9TaGFuZ2hhaSBvZiB0aGUKKyAgICAgKiB3aW50ZXIgc29sc3RpY2Ugb2YgdGhlIGdpdmVuIHllYXIKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCB3aW50ZXJTb2xzdGljZShpbnQgZ3llYXIpIHsKKworICAgICAgICBsb25nIGNhY2hlVmFsdWUgPSB3aW50ZXJTb2xzdGljZUNhY2hlLmdldChneWVhcik7CisKKyAgICAgICAgaWYgKGNhY2hlVmFsdWUgPT0gQ2FsZW5kYXJDYWNoZS5FTVBUWSkgeworICAgICAgICAgICAgLy8gSW4gYm9va3MgRGVjZW1iZXIgMTUgaXMgdXNlZCwgYnV0IGl0IGZhaWxzIGZvciBzb21lIHllYXJzCisgICAgICAgICAgICAvLyB1c2luZyBvdXIgYWxnb3JpdGhtcywgZS5nLjogMTI5OCAxMzkxIDE0OTIgMTU1MyAxNTYwLiAgVGhhdAorICAgICAgICAgICAgLy8gaXMsIHdpbnRlclNvbHN0aWNlKDEyOTgpIHN0YXJ0cyBzZWFyY2ggYXQgRGVjIDE0IDA4OjAwOjAwCisgICAgICAgICAgICAvLyBQU1QgMTI5OCB3aXRoIGEgZmluYWwgcmVzdWx0IG9mIERlYyAxNCAxMDozMTo1OSBQU1QgMTI5OS4KKyAgICAgICAgICAgIGxvbmcgbXMgPSBkYXlzVG9NaWxsaXMoY29tcHV0ZUdyZWdvcmlhbk1vbnRoU3RhcnQoZ3llYXIsIERFQ0VNQkVSKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgLSBFUE9DSF9KVUxJQU5fREFZKTsKKyAgICAgICAgICAgIGFzdHJvLnNldFRpbWUobXMpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBXaW50ZXIgc29sc3RpY2UgaXMgMjcwIGRlZ3JlZXMgc29sYXIgbG9uZ2l0dWRlIGFrYSBEb25nemhpCisgICAgICAgICAgICBsb25nIHNvbGFyTG9uZyA9IGFzdHJvLmdldFN1blRpbWUoQ2FsZW5kYXJBc3Ryb25vbWVyLldJTlRFUl9TT0xTVElDRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKTsKKyAgICAgICAgICAgIGNhY2hlVmFsdWUgPSBtaWxsaXNUb0RheXMoc29sYXJMb25nKTsKKyAgICAgICAgICAgIHdpbnRlclNvbHN0aWNlQ2FjaGUucHV0KGd5ZWFyLCBjYWNoZVZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKGludCkgY2FjaGVWYWx1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGNsb3Nlc3QgbmV3IG1vb24gdG8gdGhlIGdpdmVuIGRhdGUsIHNlYXJjaGluZyBlaXRoZXIKKyAgICAgKiBmb3J3YXJkIG9yIGJhY2t3YXJkIGluIHRpbWUuCisgICAgICogQHBhcmFtIGRheXMgZGF5cyBhZnRlciBKYW51YXJ5IDEsIDE5NzAgMDowMCBBc2lhL1NoYW5naGFpCisgICAgICogQHBhcmFtIGFmdGVyIGlmIHRydWUsIHNlYXJjaCBmb3IgYSBuZXcgbW9vbiBvbiBvciBhZnRlciB0aGUgZ2l2ZW4KKyAgICAgKiBkYXRlOyBvdGhlcndpc2UsIHNlYXJjaCBmb3IgYSBuZXcgbW9vbiBiZWZvcmUgaXQKKyAgICAgKiBAcmV0dXJuIGRheXMgYWZ0ZXIgSmFudWFyeSAxLCAxOTcwIDA6MDAgQXNpYS9TaGFuZ2hhaSBvZiB0aGUgbmVhcmVzdAorICAgICAqIG5ldyBtb29uIGFmdGVyIG9yIGJlZm9yZSA8Y29kZT5kYXlzPC9jb2RlPgorICAgICAqLworICAgIHByaXZhdGUgaW50IG5ld01vb25OZWFyKGludCBkYXlzLCBib29sZWFuIGFmdGVyKSB7CisgICAgICAgIAorICAgICAgICBhc3Ryby5zZXRUaW1lKGRheXNUb01pbGxpcyhkYXlzKSk7CisgICAgICAgIGxvbmcgbmV3TW9vbiA9IGFzdHJvLmdldE1vb25UaW1lKENhbGVuZGFyQXN0cm9ub21lci5ORVdfTU9PTiwgYWZ0ZXIpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIG1pbGxpc1RvRGF5cyhuZXdNb29uKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIG5lYXJlc3QgaW50ZWdlciBudW1iZXIgb2Ygc3lub2RpYyBtb250aHMgYmV0d2VlbgorICAgICAqIHR3byBkYXRlcy4KKyAgICAgKiBAcGFyYW0gZGF5MSBkYXlzIGFmdGVyIEphbnVhcnkgMSwgMTk3MCAwOjAwIEFzaWEvU2hhbmdoYWkKKyAgICAgKiBAcGFyYW0gZGF5MiBkYXlzIGFmdGVyIEphbnVhcnkgMSwgMTk3MCAwOjAwIEFzaWEvU2hhbmdoYWkKKyAgICAgKiBAcmV0dXJuIHRoZSBuZWFyZXN0IGludGVnZXIgbnVtYmVyIG9mIG1vbnRocyBiZXR3ZWVuIGRheTEgYW5kIGRheTIKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBzeW5vZGljTW9udGhzQmV0d2VlbihpbnQgZGF5MSwgaW50IGRheTIpIHsKKyAgICAgICAgcmV0dXJuIChpbnQpIE1hdGgucm91bmQoKGRheTIgLSBkYXkxKSAvIENhbGVuZGFyQXN0cm9ub21lci5TWU5PRElDX01PTlRIKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIG1ham9yIHNvbGFyIHRlcm0gb24gb3IgYmVmb3JlIGEgZ2l2ZW4gZGF0ZS4gIFRoaXMKKyAgICAgKiB3aWxsIGJlIGFuIGludGVnZXIgZnJvbSAxLi4xMiwgd2l0aCAxIGNvcnJlc3BvbmRpbmcgdG8gMzMwIGRlZ3JlZXMsCisgICAgICogMiB0byAwIGRlZ3JlZXMsIDMgdG8gMzAgZGVncmVlcywuLi4sIGFuZCAxMiB0byAzMDAgZGVncmVlcy4KKyAgICAgKiBAcGFyYW0gZGF5cyBkYXlzIGFmdGVyIEphbnVhcnkgMSwgMTk3MCAwOjAwIEFzaWEvU2hhbmdoYWkKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBtYWpvclNvbGFyVGVybShpbnQgZGF5cykgeworICAgICAgICAKKyAgICAgICAgYXN0cm8uc2V0VGltZShkYXlzVG9NaWxsaXMoZGF5cykpOworCisgICAgICAgIC8vIENvbXB1dGUgKGZsb29yKHNvbGFyTG9uZ2l0dWRlIC8gKHBpLzYpKSArIDIpICUgMTIKKyAgICAgICAgaW50IHRlcm0gPSAoKGludCkgTWF0aC5mbG9vcig2ICogYXN0cm8uZ2V0U3VuTG9uZ2l0dWRlKCkgLyBNYXRoLlBJKSArIDIpICUgMTI7CisgICAgICAgIGlmICh0ZXJtIDwgMSkgeworICAgICAgICAgICAgdGVybSArPSAxMjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdGVybTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgZ2l2ZW4gbW9udGggbGFja3MgYSBtYWpvciBzb2xhciB0ZXJtLgorICAgICAqIEBwYXJhbSBuZXdNb29uIGRheXMgYWZ0ZXIgSmFudWFyeSAxLCAxOTcwIDA6MDAgQXNpYS9TaGFuZ2hhaSBvZiBhIG5ldworICAgICAqIG1vb24KKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gaGFzTm9NYWpvclNvbGFyVGVybShpbnQgbmV3TW9vbikgeworICAgICAgICAKKyAgICAgICAgaW50IG1zdCA9IG1ham9yU29sYXJUZXJtKG5ld01vb24pOworICAgICAgICBpbnQgbm1uID0gbmV3TW9vbk5lYXIobmV3TW9vbiArIFNZTk9ESUNfR0FQLCB0cnVlKTsKKyAgICAgICAgaW50IG1zdHQgPSBtYWpvclNvbGFyVGVybShubW4pOworICAgICAgICByZXR1cm4gbXN0ID09IG1zdHQ7CisgICAgICAgIC8qCisgICAgICAgIHJldHVybiBtYWpvclNvbGFyVGVybShuZXdNb29uKSA9PQorICAgICAgICAgICAgbWFqb3JTb2xhclRlcm0obmV3TW9vbk5lYXIobmV3TW9vbiArIFNZTk9ESUNfR0FQLCB0cnVlKSk7CisgICAgICAgICovCisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBUaW1lIHRvIGZpZWxkcworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgdGhlcmUgaXMgYSBsZWFwIG1vbnRoIG9uIG9yIGFmdGVyIG1vbnRoIG5ld01vb24xIGFuZAorICAgICAqIGF0IG9yIGJlZm9yZSBtb250aCBuZXdNb29uMi4KKyAgICAgKiBAcGFyYW0gbmV3TW9vbjEgZGF5cyBhZnRlciBKYW51YXJ5IDEsIDE5NzAgMDowMCBBc2lhL1NoYW5naGFpIG9mIGEKKyAgICAgKiBuZXcgbW9vbgorICAgICAqIEBwYXJhbSBuZXdNb29uMiBkYXlzIGFmdGVyIEphbnVhcnkgMSwgMTk3MCAwOjAwIEFzaWEvU2hhbmdoYWkgb2YgYQorICAgICAqIG5ldyBtb29uCisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIGlzTGVhcE1vbnRoQmV0d2VlbihpbnQgbmV3TW9vbjEsIGludCBuZXdNb29uMikgeworCisgICAgICAgIC8vIFRoaXMgaXMgb25seSBuZWVkZWQgdG8gZGVidWcgdGhlIHRpbWVPZkFuZ2xlIGRpdmVyZ2VuY2UgYnVnLgorICAgICAgICAvLyBSZW1vdmUgdGhpcyBsYXRlci4gTGl1IDExLzkvMDAKKyAgICAgICAgLy8gREVCVUcKKyAgICAgICAgaWYgKHN5bm9kaWNNb250aHNCZXR3ZWVuKG5ld01vb24xLCBuZXdNb29uMikgPj0gNTApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImlzTGVhcE1vbnRoQmV0d2VlbigiICsgbmV3TW9vbjEgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCAiICsgbmV3TW9vbjIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKTogSW52YWxpZCBwYXJhbWV0ZXJzIik7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gKG5ld01vb24yID49IG5ld01vb24xKSAmJgorICAgICAgICAgICAgKGlzTGVhcE1vbnRoQmV0d2VlbihuZXdNb29uMSwgbmV3TW9vbk5lYXIobmV3TW9vbjIgLSBTWU5PRElDX0dBUCwgZmFsc2UpKSB8fAorICAgICAgICAgICAgIGhhc05vTWFqb3JTb2xhclRlcm0obmV3TW9vbjIpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZSBDYWxlbmRhciB0byBjb21wdXRlIHNldmVyYWwgZmllbGRzIHNwZWNpZmljIHRvIHRoZSBDaGluZXNlCisgICAgICogY2FsZW5kYXIgc3lzdGVtLiAgVGhlc2UgYXJlOgorICAgICAqCisgICAgICogPHVsPjxsaT5FUkEKKyAgICAgKiA8bGk+WUVBUgorICAgICAqIDxsaT5NT05USAorICAgICAqIDxsaT5EQVlfT0ZfTU9OVEgKKyAgICAgKiA8bGk+REFZX09GX1lFQVIKKyAgICAgKiA8bGk+RVhURU5ERURfWUVBUjwvdWw+CisgICAgICogCisgICAgICogVGhlIERBWV9PRl9XRUVLIGFuZCBET1dfTE9DQUwgZmllbGRzIGFyZSBhbHJlYWR5IHNldCB3aGVuIHRoaXMKKyAgICAgKiBtZXRob2QgaXMgY2FsbGVkLiAgVGhlIGdldEdyZWdvcmlhblh4eCgpIG1ldGhvZHMgcmV0dXJuIEdyZWdvcmlhbgorICAgICAqIGNhbGVuZGFyIGVxdWl2YWxlbnRzIGZvciB0aGUgZ2l2ZW4gSnVsaWFuIGRheS4KKyAgICAgKgorICAgICAqIDxwPkNvbXB1dGUgdGhlIENoaW5lc2VDYWxlbmRhci1zcGVjaWZpYyBmaWVsZCBJU19MRUFQX01PTlRILgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHJvdGVjdGVkIHZvaWQgaGFuZGxlQ29tcHV0ZUZpZWxkcyhpbnQganVsaWFuRGF5KSB7CisKKyAgICAgICAgY29tcHV0ZUNoaW5lc2VGaWVsZHMoanVsaWFuRGF5IC0gRVBPQ0hfSlVMSUFOX0RBWSwgLy8gbG9jYWwgZGF5cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRHcmVnb3JpYW5ZZWFyKCksIGdldEdyZWdvcmlhbk1vbnRoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpOyAvLyBzZXQgYWxsIGZpZWxkcworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbXB1dGUgZmllbGRzIGZvciB0aGUgQ2hpbmVzZSBjYWxlbmRhciBzeXN0ZW0uICBUaGlzIG1ldGhvZCBjYW4KKyAgICAgKiBlaXRoZXIgc2V0IGFsbCByZWxldmFudCBmaWVsZHMsIGFzIHJlcXVpcmVkIGJ5CisgICAgICogPGNvZGU+aGFuZGxlQ29tcHV0ZUZpZWxkcygpPC9jb2RlPiwgb3IgaXQgY2FuIGp1c3Qgc2V0IHRoZSBNT05USCBhbmQKKyAgICAgKiBJU19MRUFQX01PTlRIIGZpZWxkcywgYXMgcmVxdWlyZWQgYnkKKyAgICAgKiA8Y29kZT5oYW5kbGVDb21wdXRlTW9udGhTdGFydCgpPC9jb2RlPi4KKyAgICAgKgorICAgICAqIDxwPkFzIGEgc2lkZSBlZmZlY3QsIHRoaXMgbWV0aG9kIHNldHMge0BsaW5rICNpc0xlYXBZZWFyfS4KKyAgICAgKiBAcGFyYW0gZGF5cyBkYXlzIGFmdGVyIEphbnVhcnkgMSwgMTk3MCAwOjAwIEFzaWEvU2hhbmdoYWkgb2YgdGhlCisgICAgICogZGF0ZSB0byBjb21wdXRlIGZpZWxkcyBmb3IKKyAgICAgKiBAcGFyYW0gZ3llYXIgdGhlIEdyZWdvcmlhbiB5ZWFyIG9mIHRoZSBnaXZlbiBkYXRlCisgICAgICogQHBhcmFtIGdtb250aCB0aGUgR3JlZ29yaWFuIG1vbnRoIG9mIHRoZSBnaXZlbiBkYXRlCisgICAgICogQHBhcmFtIHNldEFsbEZpZWxkcyBpZiB0cnVlLCBzZXQgdGhlIEVYVEVOREVEX1lFQVIsIEVSQSwgWUVBUiwKKyAgICAgKiBEQVlfT0ZfTU9OVEgsIGFuZCBEQVlfT0ZfWUVBUiBmaWVsZHMuICBJbiBlaXRoZXIgY2FzZSBzZXQgdGhlIE1PTlRICisgICAgICogYW5kIElTX0xFQVBfTU9OVEggZmllbGRzLgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBjb21wdXRlQ2hpbmVzZUZpZWxkcyhpbnQgZGF5cywgaW50IGd5ZWFyLCBpbnQgZ21vbnRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIHNldEFsbEZpZWxkcykgeworCisgICAgICAgIC8vIEZpbmQgdGhlIHdpbnRlciBzb2xzdGljZXMgYmVmb3JlIGFuZCBhZnRlciB0aGUgdGFyZ2V0IGRhdGUuCisgICAgICAgIC8vIFRoZXNlIGRlZmluZSB0aGUgYm91bmRhcmllcyBvZiB0aGlzIENoaW5lc2UgeWVhciwgc3BlY2lmaWNhbGx5LAorICAgICAgICAvLyB0aGUgcG9zaXRpb24gb2YgbW9udGggMTEsIHdoaWNoIGFsd2F5cyBjb250YWlucyB0aGUgc29sc3RpY2UuCisgICAgICAgIC8vIFdlIHdhbnQgc29sc3RpY2VCZWZvcmUgPD0gZGF0ZSA8IHNvbHN0aWNlQWZ0ZXIuCisgICAgICAgIGludCBzb2xzdGljZUJlZm9yZTsKKyAgICAgICAgaW50IHNvbHN0aWNlQWZ0ZXIgPSB3aW50ZXJTb2xzdGljZShneWVhcik7CisgICAgICAgIGlmIChkYXlzIDwgc29sc3RpY2VBZnRlcikgeworICAgICAgICAgICAgc29sc3RpY2VCZWZvcmUgPSB3aW50ZXJTb2xzdGljZShneWVhciAtIDEpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc29sc3RpY2VCZWZvcmUgPSBzb2xzdGljZUFmdGVyOworICAgICAgICAgICAgc29sc3RpY2VBZnRlciA9IHdpbnRlclNvbHN0aWNlKGd5ZWFyICsgMSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBGaW5kIHRoZSBzdGFydCBvZiB0aGUgbW9udGggYWZ0ZXIgbW9udGggMTEuICBUaGlzIHdpbGwgYmUgZWl0aGVyCisgICAgICAgIC8vIHRoZSBwcmlvciBtb250aCAxMiBvciBsZWFwIG1vbnRoIDExICh2ZXJ5IHJhcmUpLiAgQWxzbyBmaW5kIHRoZQorICAgICAgICAvLyBzdGFydCBvZiB0aGUgZm9sbG93aW5nIG1vbnRoIDExLgorICAgICAgICBpbnQgZmlyc3RNb29uID0gbmV3TW9vbk5lYXIoc29sc3RpY2VCZWZvcmUgKyAxLCB0cnVlKTsKKyAgICAgICAgaW50IGxhc3RNb29uID0gbmV3TW9vbk5lYXIoc29sc3RpY2VBZnRlciArIDEsIGZhbHNlKTsKKyAgICAgICAgaW50IHRoaXNNb29uID0gbmV3TW9vbk5lYXIoZGF5cyArIDEsIGZhbHNlKTsgLy8gU3RhcnQgb2YgdGhpcyBtb250aAorICAgICAgICAvLyBOb3RlOiBpc0xlYXBZZWFyIGlzIGEgbWVtYmVyIHZhcmlhYmxlCisgICAgICAgIGlzTGVhcFllYXIgPSBzeW5vZGljTW9udGhzQmV0d2VlbihmaXJzdE1vb24sIGxhc3RNb29uKSA9PSAxMjsKKworICAgICAgICBpbnQgbW9udGggPSBzeW5vZGljTW9udGhzQmV0d2VlbihmaXJzdE1vb24sIHRoaXNNb29uKTsKKyAgICAgICAgaWYgKGlzTGVhcFllYXIgJiYgaXNMZWFwTW9udGhCZXR3ZWVuKGZpcnN0TW9vbiwgdGhpc01vb24pKSB7CisgICAgICAgICAgICBtb250aC0tOworICAgICAgICB9CisgICAgICAgIGlmIChtb250aCA8IDEpIHsKKyAgICAgICAgICAgIG1vbnRoICs9IDEyOworICAgICAgICB9CisKKyAgICAgICAgYm9vbGVhbiBpc0xlYXBNb250aCA9IGlzTGVhcFllYXIgJiYKKyAgICAgICAgICAgIGhhc05vTWFqb3JTb2xhclRlcm0odGhpc01vb24pICYmCisgICAgICAgICAgICAhaXNMZWFwTW9udGhCZXR3ZWVuKGZpcnN0TW9vbiwgbmV3TW9vbk5lYXIodGhpc01vb24gLSBTWU5PRElDX0dBUCwgZmFsc2UpKTsKKworICAgICAgICBpbnRlcm5hbFNldChNT05USCwgbW9udGgtMSk7IC8vIENvbnZlcnQgZnJvbSAxLWJhc2VkIHRvIDAtYmFzZWQKKyAgICAgICAgaW50ZXJuYWxTZXQoSVNfTEVBUF9NT05USCwgaXNMZWFwTW9udGg/MTowKTsKKworICAgICAgICBpZiAoc2V0QWxsRmllbGRzKSB7CisKKyAgICAgICAgICAgIGludCB5ZWFyID0gZ3llYXIgLSBDSElORVNFX0VQT0NIX1lFQVI7CisgICAgICAgICAgICBpZiAobW9udGggPCAxMSB8fAorICAgICAgICAgICAgICAgIGdtb250aCA+PSBKVUxZKSB7CisgICAgICAgICAgICAgICAgeWVhcisrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW50IGRheU9mTW9udGggPSBkYXlzIC0gdGhpc01vb24gKyAxOworCisgICAgICAgICAgICBpbnRlcm5hbFNldChFWFRFTkRFRF9ZRUFSLCB5ZWFyKTsKKworICAgICAgICAgICAgLy8gMC0+MCw2MCAgMS0+MSwxICA2MC0+MSw2MCAgNjEtPjIsMSAgZXRjLgorICAgICAgICAgICAgaW50W10geWVhck9mQ3ljbGUgPSBuZXcgaW50WzFdOworICAgICAgICAgICAgaW50IGN5Y2xlID0gZmxvb3JEaXZpZGUoeWVhci0xLCA2MCwgeWVhck9mQ3ljbGUpOworICAgICAgICAgICAgaW50ZXJuYWxTZXQoRVJBLCBjeWNsZSsxKTsKKyAgICAgICAgICAgIGludGVybmFsU2V0KFlFQVIsIHllYXJPZkN5Y2xlWzBdKzEpOworCisgICAgICAgICAgICBpbnRlcm5hbFNldChEQVlfT0ZfTU9OVEgsIGRheU9mTW9udGgpOworCisgICAgICAgICAgICAvLyBEYXlzIHdpbGwgYmUgYmVmb3JlIHRoZSBmaXJzdCBuZXcgeWVhciB3ZSBjb21wdXRlIGlmIHRoaXMKKyAgICAgICAgICAgIC8vIGRhdGUgaXMgaW4gbW9udGggMTEsIGxlYXAgMTEsIDEyLiAgVGhlcmUgaXMgbmV2ZXIgYSBsZWFwIDEyLgorICAgICAgICAgICAgLy8gTmV3IHllYXIgY29tcHV0YXRpb25zIGFyZSBjYWNoZWQgc28gdGhpcyBzaG91bGQgYmUgY2hlYXAgaW4KKyAgICAgICAgICAgIC8vIHRoZSBsb25nIHJ1bi4KKyAgICAgICAgICAgIGludCBuZXdZZWFyID0gbmV3WWVhcihneWVhcik7CisgICAgICAgICAgICBpZiAoZGF5cyA8IG5ld1llYXIpIHsKKyAgICAgICAgICAgICAgICBuZXdZZWFyID0gbmV3WWVhcihneWVhci0xKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGludGVybmFsU2V0KERBWV9PRl9ZRUFSLCBkYXlzIC0gbmV3WWVhciArIDEpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBGaWVsZHMgdG8gdGltZQorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBDaGluZXNlIG5ldyB5ZWFyIG9mIHRoZSBnaXZlbiBHcmVnb3JpYW4geWVhci4KKyAgICAgKiBAcGFyYW0gZ3llYXIgYSBHcmVnb3JpYW4geWVhcgorICAgICAqIEByZXR1cm4gZGF5cyBhZnRlciBKYW51YXJ5IDEsIDE5NzAgMDowMCBBc2lhL1NoYW5naGFpIG9mIHRoZQorICAgICAqIENoaW5lc2UgbmV3IHllYXIgb2YgdGhlIGdpdmVuIHllYXIgKHRoaXMgd2lsbCBiZSBhIG5ldyBtb29uKQorICAgICAqLworICAgIHByaXZhdGUgaW50IG5ld1llYXIoaW50IGd5ZWFyKSB7CisKKyAgICAgICAgbG9uZyBjYWNoZVZhbHVlID0gbmV3WWVhckNhY2hlLmdldChneWVhcik7CisKKyAgICAgICAgaWYgKGNhY2hlVmFsdWUgPT0gQ2FsZW5kYXJDYWNoZS5FTVBUWSkgeworCisgICAgICAgICAgICBpbnQgc29sc3RpY2VCZWZvcmU9IHdpbnRlclNvbHN0aWNlKGd5ZWFyIC0gMSk7CisgICAgICAgICAgICBpbnQgc29sc3RpY2VBZnRlciA9IHdpbnRlclNvbHN0aWNlKGd5ZWFyKTsKKyAgICAgICAgICAgIGludCBuZXdNb29uMSA9IG5ld01vb25OZWFyKHNvbHN0aWNlQmVmb3JlICsgMSwgdHJ1ZSk7CisgICAgICAgICAgICBpbnQgbmV3TW9vbjIgPSBuZXdNb29uTmVhcihuZXdNb29uMSArIFNZTk9ESUNfR0FQLCB0cnVlKTsKKyAgICAgICAgICAgIGludCBuZXdNb29uMTEgPSBuZXdNb29uTmVhcihzb2xzdGljZUFmdGVyICsgMSwgZmFsc2UpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoc3lub2RpY01vbnRoc0JldHdlZW4obmV3TW9vbjEsIG5ld01vb24xMSkgPT0gMTIgJiYKKyAgICAgICAgICAgICAgICAoaGFzTm9NYWpvclNvbGFyVGVybShuZXdNb29uMSkgfHwgaGFzTm9NYWpvclNvbGFyVGVybShuZXdNb29uMikpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVWYWx1ZSA9IG5ld01vb25OZWFyKG5ld01vb24yICsgU1lOT0RJQ19HQVAsIHRydWUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBjYWNoZVZhbHVlID0gbmV3TW9vbjI7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG5ld1llYXJDYWNoZS5wdXQoZ3llYXIsIGNhY2hlVmFsdWUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAoaW50KSBjYWNoZVZhbHVlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgSnVsaWFuIGRheSBudW1iZXIgb2YgZGF5IGJlZm9yZSB0aGUgZmlyc3QgZGF5IG9mIHRoZQorICAgICAqIGdpdmVuIG1vbnRoIGluIHRoZSBnaXZlbiBleHRlbmRlZCB5ZWFyLgorICAgICAqIAorICAgICAqIDxwPk5vdGU6IFRoaXMgbWV0aG9kIHJlYWRzIHRoZSBJU19MRUFQX01PTlRIIGZpZWxkIHRvIGRldGVybWluZQorICAgICAqIHdoZXRoZXIgdGhlIGdpdmVuIG1vbnRoIGlzIGEgbGVhcCBtb250aC4KKyAgICAgKiBAcGFyYW0gZXllYXIgdGhlIGV4dGVuZGVkIHllYXIKKyAgICAgKiBAcGFyYW0gbW9udGggdGhlIHplcm8tYmFzZWQgbW9udGguICBUaGUgbW9udGggaXMgYWxzbyBkZXRlcm1pbmVkCisgICAgICogYnkgcmVhZGluZyB0aGUgSVNfTEVBUF9NT05USCBmaWVsZC4KKyAgICAgKiBAcGFyYW0gcmV0dXJuIHRoZSBKdWxpYW4gZGF5IG51bWJlciBvZiB0aGUgZGF5IGJlZm9yZSB0aGUgZmlyc3QKKyAgICAgKiBkYXkgb2YgdGhlIGdpdmVuIG1vbnRoIGFuZCB5ZWFyCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgaW50IGhhbmRsZUNvbXB1dGVNb250aFN0YXJ0KGludCBleWVhciwgaW50IG1vbnRoLCBib29sZWFuIHVzZU1vbnRoKSB7CisKKyAgICAgICAgLy8gSWYgdGhlIG1vbnRoIGlzIG91dCBvZiByYW5nZSwgYWRqdXN0IGl0IGludG8gcmFuZ2UsIGFuZAorICAgICAgICAvLyBtb2RpZnkgdGhlIGV4dGVuZGVkIHllYXIgdmFsdWUgYWNjb3JkaW5nbHkuCisgICAgICAgIGlmIChtb250aCA8IDAgfHwgbW9udGggPiAxMSkgeworICAgICAgICAgICAgaW50W10gcmVtID0gbmV3IGludFsxXTsKKyAgICAgICAgICAgIGV5ZWFyICs9IGZsb29yRGl2aWRlKG1vbnRoLCAxMiwgcmVtKTsKKyAgICAgICAgICAgIG1vbnRoID0gcmVtWzBdOworICAgICAgICB9CisKKyAgICAgICAgaW50IGd5ZWFyID0gZXllYXIgKyBDSElORVNFX0VQT0NIX1lFQVIgLSAxOyAvLyBHcmVnb3JpYW4geWVhcgorICAgICAgICBpbnQgbmV3WWVhciA9IG5ld1llYXIoZ3llYXIpOworICAgICAgICBpbnQgbmV3TW9vbiA9IG5ld01vb25OZWFyKG5ld1llYXIgKyBtb250aCAqIDI5LCB0cnVlKTsKKyAgICAgICAgCisgICAgICAgIGludCBqdWxpYW5EYXkgPSBuZXdNb29uICsgRVBPQ0hfSlVMSUFOX0RBWTsKKworICAgICAgICAvLyBTYXZlIGZpZWxkcyBmb3IgbGF0ZXIgcmVzdG9yYXRpb24KKyAgICAgICAgaW50IHNhdmVNb250aCA9IGludGVybmFsR2V0KE1PTlRIKTsKKyAgICAgICAgaW50IHNhdmVJc0xlYXBNb250aCA9IGludGVybmFsR2V0KElTX0xFQVBfTU9OVEgpOworCisgICAgICAgIC8vIElnbm9yZSBJU19MRUFQX01PTlRIIGZpZWxkIGlmIHVzZU1vbnRoIGlzIGZhbHNlCisgICAgICAgIGludCBpc0xlYXBNb250aCA9IHVzZU1vbnRoID8gc2F2ZUlzTGVhcE1vbnRoIDogMDsKKworICAgICAgICBjb21wdXRlR3JlZ29yaWFuRmllbGRzKGp1bGlhbkRheSk7CisgICAgICAgIAorICAgICAgICAvLyBUaGlzIHdpbGwgbW9kaWZ5IHRoZSBNT05USCBhbmQgSVNfTEVBUF9NT05USCBmaWVsZHMgKG9ubHkpCisgICAgICAgIGNvbXB1dGVDaGluZXNlRmllbGRzKG5ld01vb24sIGdldEdyZWdvcmlhblllYXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0R3JlZ29yaWFuTW9udGgoKSwgZmFsc2UpOyAgICAgICAgCisKKyAgICAgICAgaWYgKG1vbnRoICE9IGludGVybmFsR2V0KE1PTlRIKSB8fAorICAgICAgICAgICAgaXNMZWFwTW9udGggIT0gaW50ZXJuYWxHZXQoSVNfTEVBUF9NT05USCkpIHsKKyAgICAgICAgICAgIG5ld01vb24gPSBuZXdNb29uTmVhcihuZXdNb29uICsgU1lOT0RJQ19HQVAsIHRydWUpOworICAgICAgICAgICAganVsaWFuRGF5ID0gbmV3TW9vbiArIEVQT0NIX0pVTElBTl9EQVk7CisgICAgICAgIH0KKworICAgICAgICBpbnRlcm5hbFNldChNT05USCwgc2F2ZU1vbnRoKTsKKyAgICAgICAgaW50ZXJuYWxTZXQoSVNfTEVBUF9NT05USCwgc2F2ZUlzTGVhcE1vbnRoKTsKKworICAgICAgICByZXR1cm4ganVsaWFuRGF5IC0gMTsKKyAgICB9CisKKworICAgIC8qCisgICAgcHJpdmF0ZSBzdGF0aWMgQ2FsZW5kYXJGYWN0b3J5IGZhY3Rvcnk7CisgICAgcHVibGljIHN0YXRpYyBDYWxlbmRhckZhY3RvcnkgZmFjdG9yeSgpIHsKKyAgICAgICAgaWYgKGZhY3RvcnkgPT0gbnVsbCkgeworICAgICAgICAgICAgZmFjdG9yeSA9IG5ldyBDYWxlbmRhckZhY3RvcnkoKSB7CisgICAgICAgICAgICAgICAgcHVibGljIENhbGVuZGFyIGNyZWF0ZShUaW1lWm9uZSB0eiwgTG9jYWxlIGxvYykgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENoaW5lc2VDYWxlbmRhcih0eiwgbG9jKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBwdWJsaWMgU3RyaW5nIGZhY3RvcnlOYW1lKCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gIkNoaW5lc2UiOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhY3Rvcnk7CisgICAgfQorICAgICovCit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvdXRpbC9Db21wYWN0Qnl0ZUFycmF5LmphdmEgYi9zcmMvY29tL2libS9pY3UvdXRpbC9Db21wYWN0Qnl0ZUFycmF5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMWJlMTljMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS91dGlsL0NvbXBhY3RCeXRlQXJyYXkuamF2YQpAQCAtMCwwICsxLDM3NCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L3V0aWwvQ29tcGFjdEJ5dGVBcnJheS5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzEyLzAzIDIyOjA0OjE3ICQgCisgKiAkUmV2aXNpb246IDEuOSAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UudXRpbDsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLlV0aWxpdHk7CisKKy8qKgorICogY2xhc3MgQ29tcGFjdEFUeXBlQXJyYXkgOiB1c2Ugb25seSBvbiBwcmltaXRpdmUgZGF0YSB0eXBlcworICogUHJvdmlkZXMgYSBjb21wYWN0IHdheSB0byBzdG9yZSBpbmZvcm1hdGlvbiB0aGF0IGlzIGluZGV4ZWQgYnkgVW5pY29kZQorICogdmFsdWVzLCBzdWNoIGFzIGNoYXJhY3RlciBwcm9wZXJ0aWVzLCB0eXBlcywga2V5Ym9hcmQgdmFsdWVzLCBldGMuVGhpcworICogaXMgdmVyeSB1c2VmdWwgd2hlbiB5b3UgaGF2ZSBhIGJsb2NrIG9mIFVuaWNvZGUgZGF0YSB0aGF0IGNvbnRhaW5zCisgKiBzaWduaWZpY2FudCB2YWx1ZXMgd2hpbGUgdGhlIHJlc3Qgb2YgdGhlIFVuaWNvZGUgZGF0YSBpcyB1bnVzZWQgaW4gdGhlCisgKiBhcHBsaWNhdGlvbiBvciB3aGVuIHlvdSBoYXZlIGEgbG90IG9mIHJlZHVuZGFuY2UsIHN1Y2ggYXMgd2hlcmUgYWxsIDIxLDAwMAorICogSGFuIGlkZW9ncmFwaHMgaGF2ZSB0aGUgc2FtZSB2YWx1ZS4gIEhvd2V2ZXIsIGxvb2t1cCBpcyBtdWNoIGZhc3RlciB0aGFuIGEKKyAqIGhhc2ggdGFibGUuCisgKiBBIGNvbXBhY3QgYXJyYXkgb2YgYW55IHByaW1pdGl2ZSBkYXRhIHR5cGUgc2VydmVzIHR3byBwdXJwb3NlczoKKyAqIDxVTCB0eXBlID0gcm91bmQ+CisgKiAgICAgPExJPkZhc3QgYWNjZXNzIG9mIHRoZSBpbmRleGVkIHZhbHVlcy4KKyAqICAgICA8TEk+U21hbGxlciBtZW1vcnkgZm9vdHByaW50LgorICogPC9VTD4KKyAqIEEgY29tcGFjdCBhcnJheSBpcyBjb21wb3NlZCBvZiBhIGluZGV4IGFycmF5IGFuZCB2YWx1ZSBhcnJheS4gIFRoZSBpbmRleAorICogYXJyYXkgY29udGFpbnMgdGhlIGluZGljaWVzIG9mIFVuaWNvZGUgY2hhcmFjdGVycyB0byB0aGUgdmFsdWUgYXJyYXkuCisgKgorICogQHNlZSAgICAgICAgICAgICAgICBDb21wYWN0Q2hhckFycmF5CisgKiBAYXV0aG9yICAgICAgICAgICAgIEhlbGVuYSBTaGloCisgKiBAZHJhZnQgSUNVIDIuNAorICovCitwdWJsaWMgZmluYWwgY2xhc3MgQ29tcGFjdEJ5dGVBcnJheSBpbXBsZW1lbnRzIENsb25lYWJsZSB7CisKKyAgICAvKioKKyAgICAgKiBUaGUgdG90YWwgbnVtYmVyIG9mIFVuaWNvZGUgY2hhcmFjdGVycy4KKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgIGZpbmFsIGludCBVTklDT0RFQ09VTlQgPTY1NTM2OworCisgICAgLyoqCisgICAgICogRGVmYXVsdCBjb25zdHJ1Y3RvciBmb3IgQ29tcGFjdEJ5dGVBcnJheSwgdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlCisgICAgICogY29tcGFjdCBhcnJheSBpcyAwLgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIENvbXBhY3RCeXRlQXJyYXkoKQorICAgIHsKKyAgICAgICAgdGhpcygoYnl0ZSkwKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RvciBmb3IgQ29tcGFjdEJ5dGVBcnJheS4KKyAgICAgKiBAcGFyYW0gZGVmYXVsdFZhbHVlIHRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSBjb21wYWN0IGFycmF5LgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIENvbXBhY3RCeXRlQXJyYXkoYnl0ZSBkZWZhdWx0VmFsdWUpCisgICAgeworICAgICAgICBpbnQgaTsKKyAgICAgICAgdmFsdWVzID0gbmV3IGJ5dGVbVU5JQ09ERUNPVU5UXTsKKyAgICAgICAgaW5kaWNlcyA9IG5ldyBjaGFyW0lOREVYQ09VTlRdOworICAgICAgICBoYXNoZXMgPSBuZXcgaW50W0lOREVYQ09VTlRdOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgVU5JQ09ERUNPVU5UOyArK2kpIHsKKyAgICAgICAgICAgIHZhbHVlc1tpXSA9IGRlZmF1bHRWYWx1ZTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgSU5ERVhDT1VOVDsgKytpKSB7CisgICAgICAgICAgICBpbmRpY2VzW2ldID0gKGNoYXIpKGk8PEJMT0NLU0hJRlQpOworICAgICAgICAgICAgaGFzaGVzW2ldID0gMDsKKyAgICAgICAgfQorICAgICAgICBpc0NvbXBhY3QgPSBmYWxzZTsKKworICAgICAgICB0aGlzLmRlZmF1bHRWYWx1ZSA9IGRlZmF1bHRWYWx1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RvciBmb3IgQ29tcGFjdEJ5dGVBcnJheS4KKyAgICAgKiBAcGFyYW0gaW5kZXhBcnJheSB0aGUgaW5kaWNpZXMgb2YgdGhlIGNvbXBhY3QgYXJyYXkuCisgICAgICogQHBhcmFtIG5ld1ZhbHVlcyB0aGUgdmFsdWVzIG9mIHRoZSBjb21wYWN0IGFycmF5LgorICAgICAqIEBleGNlcHRpb24gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIElmIHRoZSBpbmRleCBpcyBvdXQgb2YgcmFuZ2UuCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgQ29tcGFjdEJ5dGVBcnJheShjaGFyIGluZGV4QXJyYXlbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlIG5ld1ZhbHVlc1tdKQorICAgIHsKKyAgICAgICAgaW50IGk7CisgICAgICAgIGlmIChpbmRleEFycmF5Lmxlbmd0aCAhPSBJTkRFWENPVU5UKQorICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW5kZXggb3V0IG9mIGJvdW5kcy4iKTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IElOREVYQ09VTlQ7ICsraSkgeworICAgICAgICAgICAgY2hhciBpbmRleCA9IGluZGV4QXJyYXlbaV07CisgICAgICAgICAgICBpZiAoKGluZGV4IDwgMCkgfHwgKGluZGV4ID49IG5ld1ZhbHVlcy5sZW5ndGgrQkxPQ0tDT1VOVCkpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW5kZXggb3V0IG9mIGJvdW5kcy4iKTsKKyAgICAgICAgfQorICAgICAgICBpbmRpY2VzID0gaW5kZXhBcnJheTsKKyAgICAgICAgdmFsdWVzID0gbmV3VmFsdWVzOworICAgICAgICBpc0NvbXBhY3QgPSB0cnVlOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdG9yIGZvciBDb21wYWN0Qnl0ZUFycmF5LgorICAgICAqCisgICAgICogQHBhcmFtIGluZGV4QXJyYXkgdGhlIFJMRS1lbmNvZGVkIGluZGljaWVzIG9mIHRoZSBjb21wYWN0IGFycmF5LgorICAgICAqIEBwYXJhbSB2YWx1ZUFycmF5IHRoZSBSTEUtZW5jb2RlZCB2YWx1ZXMgb2YgdGhlIGNvbXBhY3QgYXJyYXkuCisgICAgICoKKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgaW5kZXggb3IgdmFsdWUgYXJyYXkgaXMKKyAgICAgKiAgICAgICAgICB0aGUgd3Jvbmcgc2l6ZS4KKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBDb21wYWN0Qnl0ZUFycmF5KFN0cmluZyBpbmRleEFycmF5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyB2YWx1ZUFycmF5KQorICAgIHsKKyAgICAgICAgdGhpcyggVXRpbGl0eS5STEVTdHJpbmdUb0NoYXJBcnJheShpbmRleEFycmF5KSwKKyAgICAgICAgICAgICAgVXRpbGl0eS5STEVTdHJpbmdUb0J5dGVBcnJheSh2YWx1ZUFycmF5KSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0IHRoZSBtYXBwZWQgdmFsdWUgb2YgYSBVbmljb2RlIGNoYXJhY3Rlci4KKyAgICAgKiBAcGFyYW0gaW5kZXggdGhlIGNoYXJhY3RlciB0byBnZXQgdGhlIG1hcHBlZCB2YWx1ZSB3aXRoCisgICAgICogQHJldHVybiB0aGUgbWFwcGVkIHZhbHVlIG9mIHRoZSBnaXZlbiBjaGFyYWN0ZXIKKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBieXRlIGVsZW1lbnRBdChjaGFyIGluZGV4KQorICAgIHsKKyAgICAgICAgcmV0dXJuICh2YWx1ZXNbKGluZGljZXNbaW5kZXggPj4gQkxPQ0tTSElGVF0gJiAweEZGRkYpCisgICAgICAgICAgICAgICAgICAgICAgICsgKGluZGV4ICYgQkxPQ0tNQVNLKV0pOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCBhIG5ldyB2YWx1ZSBmb3IgYSBVbmljb2RlIGNoYXJhY3Rlci4KKyAgICAgKiBTZXQgYXV0b21hdGljYWxseSBleHBhbmRzIHRoZSBhcnJheSBpZiBpdCBpcyBjb21wYWN0ZWQuCisgICAgICogQHBhcmFtIGluZGV4IHRoZSBjaGFyYWN0ZXIgdG8gc2V0IHRoZSBtYXBwZWQgdmFsdWUgd2l0aAorICAgICAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IG1hcHBlZCB2YWx1ZQorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0RWxlbWVudEF0KGNoYXIgaW5kZXgsIGJ5dGUgdmFsdWUpCisgICAgeworICAgICAgICBpZiAoaXNDb21wYWN0KQorICAgICAgICAgICAgZXhwYW5kKCk7CisgICAgICAgIHZhbHVlc1soaW50KWluZGV4XSA9IHZhbHVlOworICAgICAgICB0b3VjaEJsb2NrKGluZGV4ID4+IEJMT0NLU0hJRlQsIHZhbHVlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgbmV3IHZhbHVlcyBmb3IgYSByYW5nZSBvZiBVbmljb2RlIGNoYXJhY3Rlci4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzdGFydCB0aGUgc3RhcnRpbmcgb2Zmc2V0IG9mIHRoZSByYW5nZQorICAgICAqIEBwYXJhbSBlbmQgdGhlIGVuZGluZyBvZmZzZXQgb2YgdGhlIHJhbmdlCisgICAgICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgbWFwcGVkIHZhbHVlCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRFbGVtZW50QXQoY2hhciBzdGFydCwgY2hhciBlbmQsIGJ5dGUgdmFsdWUpCisgICAgeworICAgICAgICBpbnQgaTsKKyAgICAgICAgaWYgKGlzQ29tcGFjdCkgeworICAgICAgICAgICAgZXhwYW5kKCk7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpID0gc3RhcnQ7IGkgPD0gZW5kOyArK2kpIHsKKyAgICAgICAgICAgIHZhbHVlc1tpXSA9IHZhbHVlOworICAgICAgICAgICAgdG91Y2hCbG9jayhpID4+IEJMT0NLU0hJRlQsIHZhbHVlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAvKioKKyAgICAgKiBDb21wYWN0IHRoZSBhcnJheS4KKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGNvbXBhY3QoKSB7CisgICAgICAgIGNvbXBhY3QoZmFsc2UpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbXBhY3QgdGhlIGFycmF5LgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHZvaWQgY29tcGFjdChib29sZWFuIGV4aGF1c3RpdmUpCisgICAgeworICAgICAgICBpZiAoIWlzQ29tcGFjdCkgeworICAgICAgICAgICAgaW50IGxpbWl0Q29tcGFjdGVkID0gMDsKKyAgICAgICAgICAgIGludCBpQmxvY2tTdGFydCA9IDA7CisgICAgICAgICAgICBjaGFyIGlVbnRvdWNoZWQgPSAweEZGRkY7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaW5kaWNlcy5sZW5ndGg7ICsraSwgaUJsb2NrU3RhcnQgKz0gQkxPQ0tDT1VOVCkgeworICAgICAgICAgICAgICAgIGluZGljZXNbaV0gPSAweEZGRkY7CisgICAgICAgICAgICAgICAgYm9vbGVhbiB0b3VjaGVkID0gYmxvY2tUb3VjaGVkKGkpOworICAgICAgICAgICAgICAgIGlmICghdG91Y2hlZCAmJiBpVW50b3VjaGVkICE9IDB4RkZGRikgeworICAgICAgICAgICAgICAgICAgICAvLyBJZiBubyB2YWx1ZXMgaW4gdGhpcyBibG9jayB3ZXJlIHNldCwgd2UgY2FuIGp1c3Qgc2V0IGl0cworICAgICAgICAgICAgICAgICAgICAvLyBpbmRleCB0byBiZSB0aGUgc2FtZSBhcyBzb21lIG90aGVyIGJsb2NrIHdpdGggbm8gdmFsdWVzCisgICAgICAgICAgICAgICAgICAgIC8vIHNldCwgYXNzdW1pbmcgd2UndmUgc2VlbiBvbmUgeWV0LgorICAgICAgICAgICAgICAgICAgICBpbmRpY2VzW2ldID0gaVVudG91Y2hlZDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpbnQgakJsb2NrU3RhcnQgPSAwOworICAgICAgICAgICAgICAgICAgICBpbnQgaiA9IDA7CisgICAgICAgICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBsaW1pdENvbXBhY3RlZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArK2osIGpCbG9ja1N0YXJ0ICs9IEJMT0NLQ09VTlQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNoZXNbaV0gPT0gaGFzaGVzW2pdICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5UmVnaW9uTWF0Y2hlcyh2YWx1ZXMsIGlCbG9ja1N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMsIGpCbG9ja1N0YXJ0LCBCTE9DS0NPVU5UKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGljZXNbaV0gPSAoY2hhcilqQmxvY2tTdGFydDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoaW5kaWNlc1tpXSA9PSAweEZGRkYpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdlIGRpZG4ndCBtYXRjaCwgc28gY29weSAmIHVwZGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weSh2YWx1ZXMsIGlCbG9ja1N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcywgakJsb2NrU3RhcnQsIEJMT0NLQ09VTlQpOworICAgICAgICAgICAgICAgICAgICAgICAgaW5kaWNlc1tpXSA9IChjaGFyKWpCbG9ja1N0YXJ0OworICAgICAgICAgICAgICAgICAgICAgICAgaGFzaGVzW2pdID0gaGFzaGVzW2ldOworICAgICAgICAgICAgICAgICAgICAgICAgKytsaW1pdENvbXBhY3RlZDsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0b3VjaGVkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyB0aGUgZmlyc3QgdW50b3VjaGVkIGJsb2NrIHdlJ3ZlIHNlZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVtZW1iZXIgaXRzIGluZGV4LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlVbnRvdWNoZWQgPSAoY2hhcilqQmxvY2tTdGFydDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIHdlIGFyZSBkb25lIGNvbXBhY3RpbmcsIHNvIG5vdyBtYWtlIHRoZSBhcnJheSBzaG9ydGVyCisgICAgICAgICAgICBpbnQgbmV3U2l6ZSA9IGxpbWl0Q29tcGFjdGVkKkJMT0NLQ09VTlQ7CisgICAgICAgICAgICBieXRlW10gcmVzdWx0ID0gbmV3IGJ5dGVbbmV3U2l6ZV07CisgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KHZhbHVlcywgMCwgcmVzdWx0LCAwLCBuZXdTaXplKTsKKyAgICAgICAgICAgIHZhbHVlcyA9IHJlc3VsdDsKKyAgICAgICAgICAgIGlzQ29tcGFjdCA9IHRydWU7CisgICAgICAgICAgICBoYXNoZXMgPSBudWxsOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29udmVuaWVuY2UgdXRpbGl0eSB0byBjb21wYXJlIHR3byBhcnJheXMgb2YgZG91Ymxlcy4KKyAgICAgKiBAcGFyYW0gbGVuIHRoZSBsZW5ndGggdG8gY29tcGFyZS4KKyAgICAgKiBUaGUgc3RhcnQgaW5kaWNlcyBhbmQgc3RhcnQrbGVuIG11c3QgYmUgdmFsaWQuCisgICAgICovCisgICAgZmluYWwgc3RhdGljIGJvb2xlYW4gYXJyYXlSZWdpb25NYXRjaGVzKGJ5dGVbXSBzb3VyY2UsIGludCBzb3VyY2VTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZVtdIHRhcmdldCwgaW50IHRhcmdldFN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuKQorICAgIHsKKyAgICAgICAgaW50IHNvdXJjZUVuZCA9IHNvdXJjZVN0YXJ0ICsgbGVuOworICAgICAgICBpbnQgZGVsdGEgPSB0YXJnZXRTdGFydCAtIHNvdXJjZVN0YXJ0OworICAgICAgICBmb3IgKGludCBpID0gc291cmNlU3RhcnQ7IGkgPCBzb3VyY2VFbmQ7IGkrKykgeworICAgICAgICAgICAgaWYgKHNvdXJjZVtpXSAhPSB0YXJnZXRbaSArIGRlbHRhXSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZW1lbWJlciB0aGF0IGEgc3BlY2lmaWVkIGJsb2NrIHdhcyAidG91Y2hlZCIsIGkuZS4gaGFkIGEgdmFsdWUgc2V0LgorICAgICAqIFVudG91Y2hlZCBibG9ja3MgY2FuIGJlIHNraXBwZWQgd2hlbiBjb21wYWN0aW5nIHRoZSBhcnJheQorICAgICAqLworICAgIHByaXZhdGUgZmluYWwgdm9pZCB0b3VjaEJsb2NrKGludCBpLCBpbnQgdmFsdWUpIHsKKyAgICAgICAgaGFzaGVzW2ldID0gKGhhc2hlc1tpXSArICh2YWx1ZTw8MSkpIHwgMTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBRdWVyeSB3aGV0aGVyIGEgc3BlY2lmaWVkIGJsb2NrIHdhcyAidG91Y2hlZCIsIGkuZS4gaGFkIGEgdmFsdWUgc2V0LgorICAgICAqIFVudG91Y2hlZCBibG9ja3MgY2FuIGJlIHNraXBwZWQgd2hlbiBjb21wYWN0aW5nIHRoZSBhcnJheQorICAgICAqLworICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiBibG9ja1RvdWNoZWQoaW50IGkpIHsKKyAgICAgICAgcmV0dXJuIGhhc2hlc1tpXSAhPSAwOworICAgIH0KKworICAgIC8qKgorICAgICAqIEZvciBpbnRlcm5hbCB1c2Ugb25seS4gIERvIG5vdCBtb2RpZnkgdGhlIHJlc3VsdCwgdGhlIGJlaGF2aW9yIG9mCisgICAgICogbW9kaWZpZWQgcmVzdWx0cyBhcmUgdW5kZWZpbmVkLgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIGNoYXJbXSBnZXRJbmRleEFycmF5KCkKKyAgICB7CisgICAgICAgIHJldHVybiBpbmRpY2VzOworICAgIH0KKworICAgIC8qKgorICAgICAqIEZvciBpbnRlcm5hbCB1c2Ugb25seS4gIERvIG5vdCBtb2RpZnkgdGhlIHJlc3VsdCwgdGhlIGJlaGF2aW9yIG9mCisgICAgICogbW9kaWZpZWQgcmVzdWx0cyBhcmUgdW5kZWZpbmVkLgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIGJ5dGVbXSBnZXRWYWx1ZUFycmF5KCkKKyAgICB7CisgICAgICAgIHJldHVybiB2YWx1ZXM7CisgICAgfQorCisgICAgLyoqCisgICAgICogT3ZlcnJpZGVzIENsb25lYWJsZQorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIE9iamVjdCBjbG9uZSgpCisgICAgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgQ29tcGFjdEJ5dGVBcnJheSBvdGhlciA9IChDb21wYWN0Qnl0ZUFycmF5KSBzdXBlci5jbG9uZSgpOworICAgICAgICAgICAgb3RoZXIudmFsdWVzID0gKGJ5dGVbXSl2YWx1ZXMuY2xvbmUoKTsKKyAgICAgICAgICAgIG90aGVyLmluZGljZXMgPSAoY2hhcltdKWluZGljZXMuY2xvbmUoKTsKKyAgICAgICAgICAgIGlmIChoYXNoZXMgIT0gbnVsbCkgb3RoZXIuaGFzaGVzID0gKGludFtdKWhhc2hlcy5jbG9uZSgpOworICAgICAgICAgICAgcmV0dXJuIG90aGVyOworICAgICAgICB9IGNhdGNoIChDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcigpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29tcGFyZXMgdGhlIGVxdWFsaXR5IG9mIHR3byBjb21wYWN0IGFycmF5IG9iamVjdHMuCisgICAgICogQHBhcmFtIG9iaiB0aGUgY29tcGFjdCBhcnJheSBvYmplY3QgdG8gYmUgY29tcGFyZWQgd2l0aCB0aGlzLgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgY3VycmVudCBjb21wYWN0IGFycmF5IG9iamVjdCBpcyB0aGUgc2FtZQorICAgICAqIGFzIHRoZSBjb21wYWN0IGFycmF5IG9iamVjdCBvYmo7IGZhbHNlIG90aGVyd2lzZS4KKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb2JqKSB7CisgICAgICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAodGhpcyA9PSBvYmopICAgICAgICAgICAgICAgICAgICAgIC8vIHF1aWNrIGNoZWNrCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKGdldENsYXNzKCkgIT0gb2JqLmdldENsYXNzKCkpICAgICAgICAgLy8gc2FtZSBjbGFzcz8KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgQ29tcGFjdEJ5dGVBcnJheSBvdGhlciA9IChDb21wYWN0Qnl0ZUFycmF5KSBvYmo7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgVU5JQ09ERUNPVU5UOyBpKyspIHsKKyAgICAgICAgICAgIC8vIGNvdWxkIGJlIHNwZWQgdXAgbGF0ZXIKKyAgICAgICAgICAgIGlmIChlbGVtZW50QXQoKGNoYXIpaSkgIT0gb3RoZXIuZWxlbWVudEF0KChjaGFyKWkpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gd2UgbWFkZSBpdCB0aHJvdWdoIHRoZSBndWFudGxldC4KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZW5lcmF0ZXMgdGhlIGhhc2ggY29kZSBmb3IgdGhlIGNvbXBhY3QgYXJyYXkgb2JqZWN0CisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgeworICAgICAgICBpbnQgcmVzdWx0ID0gMDsKKyAgICAgICAgaW50IGluY3JlbWVudCA9IE1hdGgubWluKDMsIHZhbHVlcy5sZW5ndGgvMTYpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrPSBpbmNyZW1lbnQpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIDM3ICsgdmFsdWVzW2ldOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBwcml2YXRlCisgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIEV4cGFuZGluZyB0YWtlcyB0aGUgYXJyYXkgYmFjayB0byBhIDY1NTM2IGVsZW1lbnQgYXJyYXkuCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIGV4cGFuZCgpCisgICAgeworICAgICAgICBpbnQgaTsKKyAgICAgICAgaWYgKGlzQ29tcGFjdCkgeworICAgICAgICAgICAgYnl0ZVtdICB0ZW1wQXJyYXk7CisgICAgICAgICAgICBoYXNoZXMgPSBuZXcgaW50W0lOREVYQ09VTlRdOworICAgICAgICAgICAgdGVtcEFycmF5ID0gbmV3IGJ5dGVbVU5JQ09ERUNPVU5UXTsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBVTklDT0RFQ09VTlQ7ICsraSkgeworICAgICAgICAgICAgICAgIGJ5dGUgdmFsdWUgPSBlbGVtZW50QXQoKGNoYXIpaSk7CisgICAgICAgICAgICAgICAgdGVtcEFycmF5W2ldID0gdmFsdWU7CisgICAgICAgICAgICAgICAgdG91Y2hCbG9jayhpID4+IEJMT0NLU0hJRlQsIHZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBJTkRFWENPVU5UOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpbmRpY2VzW2ldID0gKGNoYXIpKGk8PEJMT0NLU0hJRlQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFsdWVzID0gbnVsbDsKKyAgICAgICAgICAgIHZhbHVlcyA9IHRlbXBBcnJheTsKKyAgICAgICAgICAgIGlzQ29tcGFjdCA9IGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgIGZpbmFsIGludCBCTE9DS1NISUZUID03OworICAgIHByaXZhdGUgc3RhdGljICBmaW5hbCBpbnQgQkxPQ0tDT1VOVCA9KDE8PEJMT0NLU0hJRlQpOworICAgIHByaXZhdGUgc3RhdGljICBmaW5hbCBpbnQgSU5ERVhTSElGVCA9KDE2LUJMT0NLU0hJRlQpOworICAgIHByaXZhdGUgc3RhdGljICBmaW5hbCBpbnQgSU5ERVhDT1VOVCA9KDE8PElOREVYU0hJRlQpOworICAgIHByaXZhdGUgc3RhdGljICBmaW5hbCBpbnQgQkxPQ0tNQVNLID0gQkxPQ0tDT1VOVCAtIDE7CisKKyAgICBwcml2YXRlIGJ5dGVbXSB2YWx1ZXM7CisgICAgcHJpdmF0ZSBjaGFyIGluZGljZXNbXTsKKyAgICBwcml2YXRlIGludFtdIGhhc2hlczsKKyAgICBwcml2YXRlIGJvb2xlYW4gaXNDb21wYWN0OworICAgIGJ5dGUgZGVmYXVsdFZhbHVlOworfTsKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS91dGlsL0NvbXBhY3RDaGFyQXJyYXkuamF2YSBiL3NyYy9jb20vaWJtL2ljdS91dGlsL0NvbXBhY3RDaGFyQXJyYXkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41MGE4NTExCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L3V0aWwvQ29tcGFjdENoYXJBcnJheS5qYXZhCkBAIC0wLDAgKzEsMzk5IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvdXRpbC9Db21wYWN0Q2hhckFycmF5LmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMTIvMDMgMjI6MDQ6MTcgJCAKKyAqICRSZXZpc2lvbjogMS4xMCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworcGFja2FnZSBjb20uaWJtLmljdS51dGlsOworCitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5VdGlsaXR5OworCisvKioKKyAqIGNsYXNzIENvbXBhY3RBVHlwZUFycmF5IDogdXNlIG9ubHkgb24gcHJpbWl0aXZlIGRhdGEgdHlwZXMKKyAqIFByb3ZpZGVzIGEgY29tcGFjdCB3YXkgdG8gc3RvcmUgaW5mb3JtYXRpb24gdGhhdCBpcyBpbmRleGVkIGJ5IFVuaWNvZGUKKyAqIHZhbHVlcywgc3VjaCBhcyBjaGFyYWN0ZXIgcHJvcGVydGllcywgdHlwZXMsIGtleWJvYXJkIHZhbHVlcywgZXRjLlRoaXMKKyAqIGlzIHZlcnkgdXNlZnVsIHdoZW4geW91IGhhdmUgYSBibG9jayBvZiBVbmljb2RlIGRhdGEgdGhhdCBjb250YWlucworICogc2lnbmlmaWNhbnQgdmFsdWVzIHdoaWxlIHRoZSByZXN0IG9mIHRoZSBVbmljb2RlIGRhdGEgaXMgdW51c2VkIGluIHRoZQorICogYXBwbGljYXRpb24gb3Igd2hlbiB5b3UgaGF2ZSBhIGxvdCBvZiByZWR1bmRhbmNlLCBzdWNoIGFzIHdoZXJlIGFsbCAyMSwwMDAKKyAqIEhhbiBpZGVvZ3JhcGhzIGhhdmUgdGhlIHNhbWUgdmFsdWUuICBIb3dldmVyLCBsb29rdXAgaXMgbXVjaCBmYXN0ZXIgdGhhbiBhCisgKiBoYXNoIHRhYmxlLgorICogQSBjb21wYWN0IGFycmF5IG9mIGFueSBwcmltaXRpdmUgZGF0YSB0eXBlIHNlcnZlcyB0d28gcHVycG9zZXM6CisgKiA8VUwgdHlwZSA9IHJvdW5kPgorICogICAgIDxMST5GYXN0IGFjY2VzcyBvZiB0aGUgaW5kZXhlZCB2YWx1ZXMuCisgKiAgICAgPExJPlNtYWxsZXIgbWVtb3J5IGZvb3RwcmludC4KKyAqIDwvVUw+CisgKiBBIGNvbXBhY3QgYXJyYXkgaXMgY29tcG9zZWQgb2YgYSBpbmRleCBhcnJheSBhbmQgdmFsdWUgYXJyYXkuICBUaGUgaW5kZXgKKyAqIGFycmF5IGNvbnRhaW5zIHRoZSBpbmRpY2llcyBvZiBVbmljb2RlIGNoYXJhY3RlcnMgdG8gdGhlIHZhbHVlIGFycmF5LgorICogQHNlZSAgICAgICAgICAgICAgICBDb21wYWN0Qnl0ZUFycmF5CisgKiBAYXV0aG9yICAgICAgICAgICAgIEhlbGVuYSBTaGloCisgKiBAZHJhZnQgSUNVIDIuNAorICovCitwdWJsaWMgZmluYWwgY2xhc3MgQ29tcGFjdENoYXJBcnJheSBpbXBsZW1lbnRzIENsb25lYWJsZSB7CisKKyAgICAvKioKKyAgICAgKiBUaGUgdG90YWwgbnVtYmVyIG9mIFVuaWNvZGUgY2hhcmFjdGVycy4KKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgIGZpbmFsIGludCBVTklDT0RFQ09VTlQgPSA2NTUzNjsKKworICAgIC8qKgorICAgICAqIERlZmF1bHQgY29uc3RydWN0b3IgZm9yIENvbXBhY3RDaGFyQXJyYXksIHRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZQorICAgICAqIGNvbXBhY3QgYXJyYXkgaXMgMC4KKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBDb21wYWN0Q2hhckFycmF5KCkKKyAgICB7CisgICAgICAgIHRoaXMoKGNoYXIpMCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0b3IgZm9yIENvbXBhY3RDaGFyQXJyYXkuCisgICAgICogQHBhcmFtIGRlZmF1bHRWYWx1ZSB0aGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgY29tcGFjdCBhcnJheS4KKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBDb21wYWN0Q2hhckFycmF5KGNoYXIgZGVmYXVsdFZhbHVlKQorICAgIHsKKyAgICAgICAgaW50IGk7CisgICAgICAgIHZhbHVlcyA9IG5ldyBjaGFyW1VOSUNPREVDT1VOVF07CisgICAgICAgIGluZGljZXMgPSBuZXcgY2hhcltJTkRFWENPVU5UXTsKKyAgICAgICAgaGFzaGVzID0gbmV3IGludFtJTkRFWENPVU5UXTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IFVOSUNPREVDT1VOVDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZXNbaV0gPSBkZWZhdWx0VmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IElOREVYQ09VTlQ7ICsraSkgeworICAgICAgICAgICAgaW5kaWNlc1tpXSA9IChjaGFyKShpPDxCTE9DS1NISUZUKTsKKyAgICAgICAgICAgIGhhc2hlc1tpXSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgaXNDb21wYWN0ID0gZmFsc2U7CisKKyAgICAgICAgdGhpcy5kZWZhdWx0VmFsdWUgPSBkZWZhdWx0VmFsdWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0b3IgZm9yIENvbXBhY3RDaGFyQXJyYXkuCisgICAgICogQHBhcmFtIGluZGV4QXJyYXkgdGhlIGluZGljaWVzIG9mIHRoZSBjb21wYWN0IGFycmF5LgorICAgICAqIEBwYXJhbSBuZXdWYWx1ZXMgdGhlIHZhbHVlcyBvZiB0aGUgY29tcGFjdCBhcnJheS4KKyAgICAgKiBAZXhjZXB0aW9uIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBJZiB0aGUgaW5kZXggaXMgb3V0IG9mIHJhbmdlLgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIENvbXBhY3RDaGFyQXJyYXkoY2hhciBpbmRleEFycmF5W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgbmV3VmFsdWVzW10pCisgICAgeworICAgICAgICBpbnQgaTsKKyAgICAgICAgaWYgKGluZGV4QXJyYXkubGVuZ3RoICE9IElOREVYQ09VTlQpCisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbmRleCBvdXQgb2YgYm91bmRzLiIpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgSU5ERVhDT1VOVDsgKytpKSB7CisgICAgICAgICAgICBjaGFyIGluZGV4ID0gaW5kZXhBcnJheVtpXTsKKyAgICAgICAgICAgIGlmICgoaW5kZXggPCAwKSB8fCAoaW5kZXggPj0gbmV3VmFsdWVzLmxlbmd0aCtCTE9DS0NPVU5UKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbmRleCBvdXQgb2YgYm91bmRzLiIpOworICAgICAgICB9CisgICAgICAgIGluZGljZXMgPSBpbmRleEFycmF5OworICAgICAgICB2YWx1ZXMgPSBuZXdWYWx1ZXM7CisgICAgICAgIGlzQ29tcGFjdCA9IHRydWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0b3IgZm9yIENvbXBhY3RDaGFyQXJyYXkuCisgICAgICoKKyAgICAgKiBAcGFyYW0gaW5kZXhBcnJheSB0aGUgUkxFLWVuY29kZWQgaW5kaWNpZXMgb2YgdGhlIGNvbXBhY3QgYXJyYXkuCisgICAgICogQHBhcmFtIHZhbHVlQXJyYXkgdGhlIFJMRS1lbmNvZGVkIHZhbHVlcyBvZiB0aGUgY29tcGFjdCBhcnJheS4KKyAgICAgKgorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBpbmRleCBvciB2YWx1ZSBhcnJheSBpcworICAgICAqICAgICAgICAgIHRoZSB3cm9uZyBzaXplLgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIENvbXBhY3RDaGFyQXJyYXkoU3RyaW5nIGluZGV4QXJyYXksCisJCQkgICAgU3RyaW5nIHZhbHVlQXJyYXkpCisgICAgeworICAgICAgICB0aGlzKCBVdGlsaXR5LlJMRVN0cmluZ1RvQ2hhckFycmF5KGluZGV4QXJyYXkpLAorICAgICAgICAgICAgICBVdGlsaXR5LlJMRVN0cmluZ1RvQ2hhckFycmF5KHZhbHVlQXJyYXkpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXQgdGhlIG1hcHBlZCB2YWx1ZSBvZiBhIFVuaWNvZGUgY2hhcmFjdGVyLgorICAgICAqIEBwYXJhbSBpbmRleCB0aGUgY2hhcmFjdGVyIHRvIGdldCB0aGUgbWFwcGVkIHZhbHVlIHdpdGgKKyAgICAgKiBAcmV0dXJuIHRoZSBtYXBwZWQgdmFsdWUgb2YgdGhlIGdpdmVuIGNoYXJhY3RlcgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIGNoYXIgZWxlbWVudEF0KGNoYXIgaW5kZXgpCisgICAgeworCWludCBpeCA9IChpbmRpY2VzW2luZGV4ID4+IEJMT0NLU0hJRlRdICYgMHhGRkZGKQorCSAgICArIChpbmRleCAmIEJMT0NLTUFTSyk7CisJcmV0dXJuIGl4ID49IHZhbHVlcy5sZW5ndGggPyBkZWZhdWx0VmFsdWUgOiB2YWx1ZXNbaXhdOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCBhIG5ldyB2YWx1ZSBmb3IgYSBVbmljb2RlIGNoYXJhY3Rlci4KKyAgICAgKiBTZXQgYXV0b21hdGljYWxseSBleHBhbmRzIHRoZSBhcnJheSBpZiBpdCBpcyBjb21wYWN0ZWQuCisgICAgICogQHBhcmFtIGluZGV4IHRoZSBjaGFyYWN0ZXIgdG8gc2V0IHRoZSBtYXBwZWQgdmFsdWUgd2l0aAorICAgICAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IG1hcHBlZCB2YWx1ZQorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0RWxlbWVudEF0KGNoYXIgaW5kZXgsIGNoYXIgdmFsdWUpCisgICAgeworICAgICAgICBpZiAoaXNDb21wYWN0KQorICAgICAgICAgICAgZXhwYW5kKCk7CisgICAgICAgICB2YWx1ZXNbKGludClpbmRleF0gPSB2YWx1ZTsKKyAgICAgICAgdG91Y2hCbG9jayhpbmRleCA+PiBCTE9DS1NISUZULCB2YWx1ZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0IG5ldyB2YWx1ZXMgZm9yIGEgcmFuZ2Ugb2YgVW5pY29kZSBjaGFyYWN0ZXIuCisgICAgICoKKyAgICAgKiBAcGFyYW0gc3RhcnQgdGhlIHN0YXJ0aW5nIG9mZnNldCBvZiB0aGUgcmFuZ2UKKyAgICAgKiBAcGFyYW0gZW5kIHRoZSBlbmRpbmcgb2Zmc2V0IG9mIHRoZSByYW5nZQorICAgICAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IG1hcHBlZCB2YWx1ZQorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0RWxlbWVudEF0KGNoYXIgc3RhcnQsIGNoYXIgZW5kLCBjaGFyIHZhbHVlKQorICAgIHsKKyAgICAgICAgaW50IGk7CisgICAgICAgIGlmIChpc0NvbXBhY3QpIHsKKyAgICAgICAgICAgIGV4cGFuZCgpOworICAgICAgICB9CisgICAgICAgIGZvciAoaSA9IHN0YXJ0OyBpIDw9IGVuZDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZXNbaV0gPSB2YWx1ZTsKKyAgICAgICAgICAgIHRvdWNoQmxvY2soaSA+PiBCTE9DS1NISUZULCB2YWx1ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgLyoqCisgICAgICogQ29tcGFjdCB0aGUgYXJyYXkKKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGNvbXBhY3QoKSB7CisgICAgICAgIGNvbXBhY3QodHJ1ZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29tcGFjdCB0aGUgYXJyYXkuCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBjb21wYWN0KGJvb2xlYW4gZXhoYXVzdGl2ZSkKKyAgICB7CisgICAgICAgIGlmICghaXNDb21wYWN0KSB7CisgICAgICAgICAgICBpbnQgaUJsb2NrU3RhcnQgPSAwOworICAgICAgICAgICAgY2hhciBpVW50b3VjaGVkID0gMHhGRkZGOworICAgICAgICAgICAgaW50IG5ld1NpemUgPSAwOworCisgICAgICAgICAgICBjaGFyW10gdGFyZ2V0ID0gZXhoYXVzdGl2ZSA/IG5ldyBjaGFyW1VOSUNPREVDT1VOVF0gOiB2YWx1ZXM7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaW5kaWNlcy5sZW5ndGg7ICsraSwgaUJsb2NrU3RhcnQgKz0gQkxPQ0tDT1VOVCkgeworICAgICAgICAgICAgICAgIGluZGljZXNbaV0gPSAweEZGRkY7CisgICAgICAgICAgICAgICAgYm9vbGVhbiB0b3VjaGVkID0gYmxvY2tUb3VjaGVkKGkpOworICAgICAgICAgICAgICAgIGlmICghdG91Y2hlZCAmJiBpVW50b3VjaGVkICE9IDB4RkZGRikgeworICAgICAgICAgICAgICAgICAgICAvLyBJZiBubyB2YWx1ZXMgaW4gdGhpcyBibG9jayB3ZXJlIHNldCwgd2UgY2FuIGp1c3Qgc2V0IGl0cworICAgICAgICAgICAgICAgICAgICAvLyBpbmRleCB0byBiZSB0aGUgc2FtZSBhcyBzb21lIG90aGVyIGJsb2NrIHdpdGggbm8gdmFsdWVzCisgICAgICAgICAgICAgICAgICAgIC8vIHNldCwgYXNzdW1pbmcgd2UndmUgc2VlbiBvbmUgeWV0LgorICAgICAgICAgICAgICAgICAgICBpbmRpY2VzW2ldID0gaVVudG91Y2hlZDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpbnQgakJsb2NrU3RhcnQgPSAwOworICAgICAgICAgICAgICAgICAgICAvLyBTZWUgaWYgd2UgY2FuIGZpbmQgYSBwcmV2aW91c2x5IGNvbXBhY3RlZCBibG9jayB0aGF0J3MgaWRlbnRpY2FsCisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgaTsgKytqLCBqQmxvY2tTdGFydCArPSBCTE9DS0NPVU5UKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFzaGVzW2ldID09IGhhc2hlc1tqXSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheVJlZ2lvbk1hdGNoZXModmFsdWVzLCBpQmxvY2tTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcywgakJsb2NrU3RhcnQsIEJMT0NLQ09VTlQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaWNlc1tpXSA9IGluZGljZXNbal07CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGluZGljZXNbaV0gPT0gMHhGRkZGKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVzdDsgICAvLyBXaGVyZSB0byBjb3B5CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhoYXVzdGl2ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNlZSBpZiB3ZSBjYW4gZmluZCBzb21lIG92ZXJsYXAgd2l0aCBhbm90aGVyIGJsb2NrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCA9IEZpbmRPdmVybGFwcGluZ1Bvc2l0aW9uKGlCbG9ja1N0YXJ0LCB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdTaXplKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSnVzdCBjb3B5IHRvIHRoZSBlbmQ7IGl0J3MgcXVpY2tlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3QgPSBuZXdTaXplOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbWl0ID0gZGVzdCArIEJMT0NLQ09VTlQ7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGltaXQgPiBuZXdTaXplKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IG5ld1NpemU7IGogPCBsaW1pdDsgKytqKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFtqXSA9IHZhbHVlc1tpQmxvY2tTdGFydCArIGogLSBkZXN0XTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3U2l6ZSA9IGxpbWl0OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaW5kaWNlc1tpXSA9IChjaGFyKWRlc3Q7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRvdWNoZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGlzIHRoZSBmaXJzdCB1bnRvdWNoZWQgYmxvY2sgd2UndmUgc2VlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZW1lbWJlciBpdHMgaW5kZXguCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaVVudG91Y2hlZCA9IChjaGFyKWpCbG9ja1N0YXJ0OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gd2UgYXJlIGRvbmUgY29tcGFjdGluZywgc28gbm93IG1ha2UgdGhlIGFycmF5IHNob3J0ZXIKKyAgICAgICAgICAgIGNoYXJbXSByZXN1bHQgPSBuZXcgY2hhcltuZXdTaXplXTsKKyAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkodGFyZ2V0LCAwLCByZXN1bHQsIDAsIG5ld1NpemUpOworICAgICAgICAgICAgdmFsdWVzID0gcmVzdWx0OworICAgICAgICAgICAgaXNDb21wYWN0ID0gdHJ1ZTsKKyAgICAgICAgICAgIGhhc2hlcyA9IG51bGw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIGludCBGaW5kT3ZlcmxhcHBpbmdQb3NpdGlvbihpbnQgc3RhcnQsIGNoYXJbXSB0ZW1wVmFsdWVzLCBpbnQgdGVtcENvdW50KQorICAgIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0ZW1wQ291bnQ7IGkgKz0gMSkgeworICAgICAgICAgICAgaW50IGN1cnJlbnRDb3VudCA9IEJMT0NLQ09VTlQ7CisgICAgICAgICAgICBpZiAoaSArIEJMT0NLQ09VTlQgPiB0ZW1wQ291bnQpIHsKKyAgICAgICAgICAgICAgICBjdXJyZW50Q291bnQgPSB0ZW1wQ291bnQgLSBpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGFycmF5UmVnaW9uTWF0Y2hlcyh2YWx1ZXMsIHN0YXJ0LCB0ZW1wVmFsdWVzLCBpLCBjdXJyZW50Q291bnQpKQorICAgICAgICAgICAgICAgIHJldHVybiBpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0ZW1wQ291bnQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29udmVuaWVuY2UgdXRpbGl0eSB0byBjb21wYXJlIHR3byBhcnJheXMgb2YgZG91Ymxlcy4KKyAgICAgKiBAcGFyYW0gbGVuIHRoZSBsZW5ndGggdG8gY29tcGFyZS4KKyAgICAgKiBUaGUgc3RhcnQgaW5kaWNlcyBhbmQgc3RhcnQrbGVuIG11c3QgYmUgdmFsaWQuCisgICAgICovCisgICAgZmluYWwgc3RhdGljIGJvb2xlYW4gYXJyYXlSZWdpb25NYXRjaGVzKGNoYXJbXSBzb3VyY2UsIGludCBzb3VyY2VTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcltdIHRhcmdldCwgaW50IHRhcmdldFN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuKQorICAgIHsKKyAgICAgICAgaW50IHNvdXJjZUVuZCA9IHNvdXJjZVN0YXJ0ICsgbGVuOworICAgICAgICBpbnQgZGVsdGEgPSB0YXJnZXRTdGFydCAtIHNvdXJjZVN0YXJ0OworICAgICAgICBmb3IgKGludCBpID0gc291cmNlU3RhcnQ7IGkgPCBzb3VyY2VFbmQ7IGkrKykgeworICAgICAgICAgICAgaWYgKHNvdXJjZVtpXSAhPSB0YXJnZXRbaSArIGRlbHRhXSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZW1lbWJlciB0aGF0IGEgc3BlY2lmaWVkIGJsb2NrIHdhcyAidG91Y2hlZCIsIGkuZS4gaGFkIGEgdmFsdWUgc2V0LgorICAgICAqIFVudG91Y2hlZCBibG9ja3MgY2FuIGJlIHNraXBwZWQgd2hlbiBjb21wYWN0aW5nIHRoZSBhcnJheQorICAgICAqLworICAgIHByaXZhdGUgZmluYWwgdm9pZCB0b3VjaEJsb2NrKGludCBpLCBpbnQgdmFsdWUpIHsKKyAgICAgICAgaGFzaGVzW2ldID0gKGhhc2hlc1tpXSArICh2YWx1ZTw8MSkpIHwgMTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBRdWVyeSB3aGV0aGVyIGEgc3BlY2lmaWVkIGJsb2NrIHdhcyAidG91Y2hlZCIsIGkuZS4gaGFkIGEgdmFsdWUgc2V0LgorICAgICAqIFVudG91Y2hlZCBibG9ja3MgY2FuIGJlIHNraXBwZWQgd2hlbiBjb21wYWN0aW5nIHRoZSBhcnJheQorICAgICAqLworICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiBibG9ja1RvdWNoZWQoaW50IGkpIHsKKyAgICAgICAgcmV0dXJuIGhhc2hlc1tpXSAhPSAwOworICAgIH0KKworICAgIC8qKgorICAgICAqIEZvciBpbnRlcm5hbCB1c2Ugb25seS4gIERvIG5vdCBtb2RpZnkgdGhlIHJlc3VsdCwgdGhlIGJlaGF2aW9yIG9mCisgICAgICogbW9kaWZpZWQgcmVzdWx0cyBhcmUgdW5kZWZpbmVkLgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIGNoYXJbXSBnZXRJbmRleEFycmF5KCkKKyAgICB7CisgICAgICAgIHJldHVybiBpbmRpY2VzOworICAgIH0KKworICAgIC8qKgorICAgICAqIEZvciBpbnRlcm5hbCB1c2Ugb25seS4gIERvIG5vdCBtb2RpZnkgdGhlIHJlc3VsdCwgdGhlIGJlaGF2aW9yIG9mCisgICAgICogbW9kaWZpZWQgcmVzdWx0cyBhcmUgdW5kZWZpbmVkLgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIGNoYXJbXSBnZXRWYWx1ZUFycmF5KCkKKyAgICB7CisgICAgICAgIHJldHVybiB2YWx1ZXM7CisgICAgfQorCisgICAgLyoqCisgICAgICogT3ZlcnJpZGVzIENsb25lYWJsZQorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIE9iamVjdCBjbG9uZSgpCisgICAgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgQ29tcGFjdENoYXJBcnJheSBvdGhlciA9IChDb21wYWN0Q2hhckFycmF5KSBzdXBlci5jbG9uZSgpOworICAgICAgICAgICAgb3RoZXIudmFsdWVzID0gKGNoYXJbXSl2YWx1ZXMuY2xvbmUoKTsKKyAgICAgICAgICAgIG90aGVyLmluZGljZXMgPSAoY2hhcltdKWluZGljZXMuY2xvbmUoKTsKKyAgICAgICAgICAgIGlmIChoYXNoZXMgIT0gbnVsbCkgb3RoZXIuaGFzaGVzID0gKGludFtdKWhhc2hlcy5jbG9uZSgpOworICAgICAgICAgICAgcmV0dXJuIG90aGVyOworICAgICAgICB9IGNhdGNoIChDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcigpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29tcGFyZXMgdGhlIGVxdWFsaXR5IG9mIHR3byBjb21wYWN0IGFycmF5IG9iamVjdHMuCisgICAgICogQHBhcmFtIG9iaiB0aGUgY29tcGFjdCBhcnJheSBvYmplY3QgdG8gYmUgY29tcGFyZWQgd2l0aCB0aGlzLgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgY3VycmVudCBjb21wYWN0IGFycmF5IG9iamVjdCBpcyB0aGUgc2FtZQorICAgICAqIGFzIHRoZSBjb21wYWN0IGFycmF5IG9iamVjdCBvYmo7IGZhbHNlIG90aGVyd2lzZS4KKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb2JqKSB7CisgICAgICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAodGhpcyA9PSBvYmopICAgICAgICAgICAgICAgICAgICAgIC8vIHF1aWNrIGNoZWNrCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKGdldENsYXNzKCkgIT0gb2JqLmdldENsYXNzKCkpICAgICAgICAgLy8gc2FtZSBjbGFzcz8KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgQ29tcGFjdENoYXJBcnJheSBvdGhlciA9IChDb21wYWN0Q2hhckFycmF5KSBvYmo7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgVU5JQ09ERUNPVU5UOyBpKyspIHsKKyAgICAgICAgICAgIC8vIGNvdWxkIGJlIHNwZWQgdXAgbGF0ZXIKKyAgICAgICAgICAgIGlmIChlbGVtZW50QXQoKGNoYXIpaSkgIT0gb3RoZXIuZWxlbWVudEF0KChjaGFyKWkpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gd2UgbWFkZSBpdCB0aHJvdWdoIHRoZSBndWFudGxldC4KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZW5lcmF0ZXMgdGhlIGhhc2ggY29kZSBmb3IgdGhlIGNvbXBhY3QgYXJyYXkgb2JqZWN0CisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgeworICAgICAgICBpbnQgcmVzdWx0ID0gMDsKKyAgICAgICAgaW50IGluY3JlbWVudCA9IE1hdGgubWluKDMsIHZhbHVlcy5sZW5ndGgvMTYpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrPSBpbmNyZW1lbnQpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIDM3ICsgdmFsdWVzW2ldOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisKKyAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIHByaXZhdGUKKyAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogRXhwYW5kaW5nIHRha2VzIHRoZSBhcnJheSBiYWNrIHRvIGEgNjU1MzYgZWxlbWVudCBhcnJheS4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgZXhwYW5kKCkKKyAgICB7CisgICAgICAgIGludCBpOworICAgICAgICBpZiAoaXNDb21wYWN0KSB7CisgICAgICAgICAgICBjaGFyW10gdGVtcEFycmF5OworICAgICAgICAgICAgaGFzaGVzID0gbmV3IGludFtJTkRFWENPVU5UXTsKKyAgICAgICAgICAgIHRlbXBBcnJheSA9IG5ldyBjaGFyW1VOSUNPREVDT1VOVF07CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgVU5JQ09ERUNPVU5UOyArK2kpIHsKKyAgICAgICAgICAgICAgICB0ZW1wQXJyYXlbaV0gPSBlbGVtZW50QXQoKGNoYXIpaSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgSU5ERVhDT1VOVDsgKytpKSB7CisgICAgICAgICAgICAgICAgaW5kaWNlc1tpXSA9IChjaGFyKShpPDxCTE9DS1NISUZUKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhbHVlcyA9IG51bGw7CisgICAgICAgICAgICB2YWx1ZXMgPSB0ZW1wQXJyYXk7CisgICAgICAgICAgICBpc0NvbXBhY3QgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAvKioKKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgIGZpbmFsIGludCBCTE9DS1NISUZUID0gNTsgLy8gTm9ybWFsaXplckJ1aWxkZXIgbmVlZHMgLSBsaXUKKyAgICBzdGF0aWMgIGZpbmFsIGludCBCTE9DS0NPVU5UID0oMTw8QkxPQ0tTSElGVCk7CisgICAgc3RhdGljICBmaW5hbCBpbnQgSU5ERVhTSElGVCA9KDE2LUJMT0NLU0hJRlQpOworICAgIHN0YXRpYyAgZmluYWwgaW50IElOREVYQ09VTlQgPSgxPDxJTkRFWFNISUZUKTsKKyAgICBzdGF0aWMgIGZpbmFsIGludCBCTE9DS01BU0sgPSBCTE9DS0NPVU5UIC0gMTsKKworICAgIHByaXZhdGUgY2hhciB2YWx1ZXNbXTsKKyAgICBwcml2YXRlIGNoYXIgaW5kaWNlc1tdOworICAgIHByaXZhdGUgaW50W10gaGFzaGVzOworICAgIHByaXZhdGUgYm9vbGVhbiBpc0NvbXBhY3Q7CisgICAgY2hhciBkZWZhdWx0VmFsdWU7Cit9OwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3V0aWwvQ3VycmVuY3kuamF2YSBiL3NyYy9jb20vaWJtL2ljdS91dGlsL0N1cnJlbmN5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTlkODBhYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS91dGlsL0N1cnJlbmN5LmphdmEKQEAgLTAsMCArMSwzMzggQEAKKy8qKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMS0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvdXRpbC9DdXJyZW5jeS5qYXZhLHYgJAorICogJERhdGU6IDIwMDIvMTIvMTEgMjM6MzY6MDggJAorICogJFJldmlzaW9uOiAxLjExICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LnV0aWw7CisKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworaW1wb3J0IGphdmEudXRpbC5SZXNvdXJjZUJ1bmRsZTsKK2ltcG9ydCBqYXZhLnV0aWwuTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uU2VyaWFsaXphYmxlOworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuSUNVTG9jYWxlRGF0YTsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0LkRlY2ltYWxGb3JtYXRTeW1ib2xzOworCitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5JQ1VTZXJ2aWNlOworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuSUNVU2VydmljZS5LZXk7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5JQ1VTZXJ2aWNlLkZhY3Rvcnk7CitpbXBvcnQgY29tLmlibS5pY3UuaW1wbC5JQ1VMb2NhbGVTZXJ2aWNlOworaW1wb3J0IGNvbS5pYm0uaWN1LmltcGwuSUNVTG9jYWxlU2VydmljZS5JQ1VSZXNvdXJjZUJ1bmRsZUZhY3Rvcnk7CisKKy8qKgorICogQSBjbGFzcyBlbmNhcHN1bGF0aW5nIGEgY3VycmVuY3ksIGFzIGRlZmluZWQgYnkgSVNPIDQyMTcuICBBCisgKiA8dHQ+Q3VycmVuY3k8L3R0PiBvYmplY3QgY2FuIGJlIGNyZWF0ZWQgZ2l2ZW4gYSA8dHQ+TG9jYWxlPC90dD4gb3IKKyAqIGdpdmVuIGFuIElTTyA0MjE3IGNvZGUuICBPbmNlIGNyZWF0ZWQsIHRoZSA8dHQ+Q3VycmVuY3k8L3R0PiBvYmplY3QKKyAqIGNhbiByZXR1cm4gdmFyaW91cyBkYXRhIG5lY2Vzc2FyeSB0byBpdHMgcHJvcGVyIGRpc3BsYXk6CisgKgorICogPHVsPjxsaT5BIGRpc3BsYXkgc3ltYm9sLCBmb3IgYSBzcGVjaWZpYyBsb2NhbGUKKyAqIDxsaT5UaGUgbnVtYmVyIG9mIGZyYWN0aW9uIGRpZ2l0cyB0byBkaXNwbGF5CisgKiA8bGk+QSByb3VuZGluZyBpbmNyZW1lbnQKKyAqIDwvdWw+CisgKgorICogVGhlIDx0dD5EZWNpbWFsRm9ybWF0PC90dD4gY2xhc3MgdXNlcyB0aGVzZSBkYXRhIHRvIGRpc3BsYXkKKyAqIGN1cnJlbmNpZXMuCisgKgorICogPHA+Tm90ZTogVGhpcyBjbGFzcyBkZWxpYmVyYXRlbHkgcmVzZW1ibGVzCisgKiA8dHQ+amF2YS51dGlsLkN1cnJlbmN5PC90dD4gYnV0IGl0IGhhcyBhIGNvbXBsZXRlbHkgaW5kZXBlbmRlbnQKKyAqIGltcGxlbWVudGF0aW9uLCBhbmQgYWRkcyBmZWF0dXJlcyBub3QgcHJlc2VudCBpbiB0aGUgSkRLLgorICogQGF1dGhvciBBbGFuIExpdQorICogQGRyYWZ0IElDVSAyLjIKKyAqLworcHVibGljIGNsYXNzIEN1cnJlbmN5IGltcGxlbWVudHMgU2VyaWFsaXphYmxlIHsKKworICAgIC8qKgorICAgICAqIElTTyA0MjE3IDMtbGV0dGVyIGNvZGUuCisgICAgICovCisgICAgcHJpdmF0ZSBTdHJpbmcgaXNvQ29kZTsKKworICAgIC8vIGJlZ2luIHJlZ2lzdHJ5IHN0dWZmIAorICAgIC8vL0NMT1ZFUjpPRkYKKyAgICBwcml2YXRlIHN0YXRpYyBJQ1VMb2NhbGVTZXJ2aWNlIHNlcnZpY2U7CisKKyAgICBwcml2YXRlIHN0YXRpYyBJQ1VMb2NhbGVTZXJ2aWNlIGdldFNlcnZpY2UoKSB7CisgICAgICAgIGlmIChzZXJ2aWNlID09IG51bGwpIHsKKyAgICAgICAgICAgIElDVUxvY2FsZVNlcnZpY2UgbmV3U2VydmljZSA9IG5ldyBJQ1VMb2NhbGVTZXJ2aWNlKCJDdXJyZW5jeSIpOworCisgICAgICAgICAgICBjbGFzcyBDdXJyZW5jeUZhY3RvcnkgZXh0ZW5kcyBJQ1VSZXNvdXJjZUJ1bmRsZUZhY3RvcnkgeworICAgICAgICAgICAgICAgIHByb3RlY3RlZCBPYmplY3QgaGFuZGxlQ3JlYXRlKExvY2FsZSBsb2MsIGludCBraW5kLCBJQ1VTZXJ2aWNlIHNlcnZpY2UpIHsKKyAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VCdW5kbGUgYnVuZGxlID0gSUNVTG9jYWxlRGF0YS5nZXRMb2NhbGVFbGVtZW50cyhsb2MpOworICAgICAgICAgICAgICAgICAgICBTdHJpbmdbXSBjZSA9IGJ1bmRsZS5nZXRTdHJpbmdBcnJheSgiQ3VycmVuY3lFbGVtZW50cyIpOworICAgICAgICAgICAgICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oImN1cnJlbmN5IGZhY3RvcnkgbG9jOiAiICsgbG9jICsgIiByYjogIiArIGJ1bmRsZSArICJjZVsxXSIgKyBjZVsxXSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ3VycmVuY3koY2VbMV0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgbmV3U2VydmljZS5yZWdpc3RlckZhY3RvcnkobmV3IEN1cnJlbmN5RmFjdG9yeSgpKTsKKyAgICAgICAgICAgIHN5bmNocm9uaXplZCAoQ3VycmVuY3kuY2xhc3MpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2VydmljZSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIHNlcnZpY2UgPSBuZXdTZXJ2aWNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc2VydmljZTsKKyAgICB9CisgICAgLy8vQ0xPVkVSOk9OCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIGN1cnJlbmN5IG9iamVjdCBmb3IgdGhlIGRlZmF1bHQgY3VycmVuY3kgaW4gdGhlIGdpdmVuCisgICAgICogbG9jYWxlLgorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBDdXJyZW5jeSBnZXRJbnN0YW5jZShMb2NhbGUgbG9jYWxlKSB7CisgICAgICAgIHJldHVybiAoQ3VycmVuY3kpZ2V0U2VydmljZSgpLmdldChsb2NhbGUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSBjdXJyZW5jeSBvYmplY3QgZ2l2ZW4gYW4gSVNPIDQyMTcgMy1sZXR0ZXIgY29kZS4KKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgQ3VycmVuY3kgZ2V0SW5zdGFuY2UoU3RyaW5nIHRoZUlTT0NvZGUpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBDdXJyZW5jeSh0aGVJU09Db2RlKTsKKyAgICB9CisgICAgLy8vQ0xPVkVSOk9GRgorICAgIC8qKgorICAgICAqIFJlZ2lzdGVycyBhIG5ldyBjdXJyZW5jeSBmb3IgdGhlIHByb3ZpZGVkIGxvY2FsZS4gIFRoZSByZXR1cm5lZCBvYmplY3QKKyAgICAgKiBpcyBhIGtleSB0aGF0IGNhbiBiZSB1c2VkIHRvIHVucmVnaXN0ZXIgdGhpcyBjdXJyZW5jeSBvYmplY3QuCisgICAgICogQHByb3RvdHlwZQorICAgICAqLworICAgIC8qIHB1YmxpYyAqLyBzdGF0aWMgT2JqZWN0IHJlZ2lzdGVyKEN1cnJlbmN5IGN1cnJlbmN5LCBMb2NhbGUgbG9jYWxlKSB7CisgICAgICAgIHJldHVybiBnZXRTZXJ2aWNlKCkucmVnaXN0ZXJPYmplY3QoY3VycmVuY3ksIGxvY2FsZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVW5yZWdpc3RlciB0aGUgY3VycmVuY3kgYXNzb2NpYXRlZCB3aXRoIHRoaXMga2V5IChvYnRhaW5lZCBmcm9tCisgICAgICogcmVnaXN0ZXJJbnN0YW5jZSkuCisgICAgICogQHByb3RvdHlwZQorICAgICAqLworICAgIC8qIHB1YmxpYyAqLyBzdGF0aWMgYm9vbGVhbiB1bnJlZ2lzdGVyKE9iamVjdCByZWdpc3RyeUtleSkgeworICAgICAgICByZXR1cm4gZ2V0U2VydmljZSgpLnVucmVnaXN0ZXJGYWN0b3J5KChGYWN0b3J5KXJlZ2lzdHJ5S2V5KTsKKyAgICB9CisgICAgLy8vQ0xPVkVSOk9OCisgICAgLyoqCisgICAgICogUmV0dXJuIGFuIGFycmF5IG9mIHRoZSBsb2NhbGVzIGZvciB3aGljaCBhIGN1cnJlbmN5CisgICAgICogaXMgZGVmaW5lZC4KKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgTG9jYWxlW10gZ2V0QXZhaWxhYmxlTG9jYWxlcygpIHsKKyAgICAgICAgaWYgKHNlcnZpY2UgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIElDVUxvY2FsZURhdGEuZ2V0QXZhaWxhYmxlTG9jYWxlcygpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHNlcnZpY2UuZ2V0QXZhaWxhYmxlTG9jYWxlcygpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gZW5kIHJlZ2lzdHJ5IHN0dWZmCisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSBoYXNoY29kZSBmb3IgdGhpcyBjdXJyZW5jeS4KKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CisgICAgICAgIHJldHVybiBpc29Db2RlLmhhc2hDb2RlKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgcmhzIGlzIGEgQ3VycmVuY3kgaW5zdGFuY2UsIAorICAgICAqIGlzIG5vbi1udWxsLCBhbmQgaGFzIHRoZSBzYW1lIGN1cnJlbmN5IGNvZGUuCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IHJocykgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJuIGVxdWFscygoQ3VycmVuY3kpcmhzKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoQ2xhc3NDYXN0RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0cnVlIGlmIGMgaXMgbm9uLW51bGwgYW5kIGhhcyB0aGUgc2FtZSBjdXJyZW5jeSBjb2RlLgorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKEN1cnJlbmN5IGMpIHsKKyAgICAgICAgaWYgKGMgPT0gbnVsbCkgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoYyA9PSB0aGlzKSByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGMuZ2V0Q2xhc3MoKSA9PSBDdXJyZW5jeS5jbGFzcyAmJgorICAgICAgICAgICAgdGhpcy5pc29Db2RlLmVxdWFscyhjLmlzb0NvZGUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIElTTyA0MjE3IDMtbGV0dGVyIGNvZGUgZm9yIHRoaXMgY3VycmVuY3kgb2JqZWN0LgorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIFN0cmluZyBnZXRDdXJyZW5jeUNvZGUoKSB7CisgICAgICAgIHJldHVybiBpc29Db2RlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGRpc3BsYXkgc3RyaW5nIGZvciB0aGlzIGN1cnJlbmN5IG9iamVjdCBpbiB0aGUKKyAgICAgKiBnaXZlbiBsb2NhbGUuICBGb3IgZXhhbXBsZSwgdGhlIGRpc3BsYXkgc3RyaW5nIGZvciB0aGUgVVNECisgICAgICogY3VycmVuY3kgb2JqZWN0IGluIHRoZSBlbl9VUyBsb2NhbGUgaXMgIiQiLgorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIFN0cmluZyBnZXRTeW1ib2woTG9jYWxlIGxvY2FsZSkgeworICAgICAgICAvLyBMb29rIHVwIHRoZSBDdXJyZW5jaWVzIHJlc291cmNlIGZvciB0aGUgZ2l2ZW4gbG9jYWxlLiAgVGhlCisgICAgICAgIC8vIEN1cnJlbmNpZXMgbG9jYWxlIGxvb2tzIGxpa2UgdGhpcyBpbiB0aGUgb3JpZ2luYWwgQworICAgICAgICAvLyByZXNvdXJjZSBmaWxlOgorICAgICAgICAvL3xlbiB7CisgICAgICAgIC8vfCAgQ3VycmVuY2llcyB7IAorICAgICAgICAvL3wgICAgVVNEIHsgIiQiIH0KKyAgICAgICAgLy98ICAgIENIRiB7ICJzRnIiIH0KKyAgICAgICAgLy98ICAgIC8vLi4uCisgICAgICAgIC8vfCAgfQorICAgICAgICAvL3x9CisgICAgICAgIFJlc291cmNlQnVuZGxlIHJiID0gSUNVTG9jYWxlRGF0YS5nZXRMb2NhbGVFbGVtZW50cyhsb2NhbGUpOworICAgICAgICAvLyBXZSBjYW4ndCBjYXN0IHRoaXMgdG8gU3RyaW5nW11bXTsgdGhlIGNhc3QgaGFzIHRvIGhhcHBlbiBsYXRlcgorICAgICAgICB0cnkgeworICAgICAgICAgICAgT2JqZWN0W11bXSBjdXJyZW5jaWVzID0gKE9iamVjdFtdW10pIHJiLmdldE9iamVjdCgiQ3VycmVuY2llcyIpOworICAgICAgICAgICAgLy8gRG8gYSBsaW5lYXIgc2VhcmNoCisgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8Y3VycmVuY2llcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChpc29Db2RlLmVxdWFscygoU3RyaW5nKSBjdXJyZW5jaWVzW2ldWzBdKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFN0cmluZykgY3VycmVuY2llc1tpXVsxXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKE1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiBlKSB7fQorCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAvLyBTaW5jZSB0aGUgQ3VycmVuY2llcyByZXNvdXJjZSBpcyBub3QgZnVsbHkgcG9wdWxhdGVkIHlldCwKKyAgICAgICAgICAgIC8vIGNoZWNrIHRvIHNlZSBpZiB3ZSBjYW4gZmluZCB3aGF0IHdlIHdhbnQgaW4gdGhlIEN1cnJlbmN5RWxlbWVudHMKKyAgICAgICAgICAgIC8vIHJlc291cmNlLgorICAgICAgICAgICAgU3RyaW5nW10gY3VycmVuY3lFbGVtZW50cyA9IHJiLmdldFN0cmluZ0FycmF5KCJDdXJyZW5jeUVsZW1lbnRzIik7CisgICAgICAgICAgICBpZiAoY3VycmVuY3lFbGVtZW50c1sxXS5lcXVhbHMoaXNvQ29kZSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVuY3lFbGVtZW50c1swXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uIGUyKSB7fQorCisgICAgICAgIC8vIElmIHdlIGZhaWwgdG8gZmluZCBhIG1hdGNoLCB1c2UgdGhlIGZ1bGwgSVNPIGNvZGUKKyAgICAgICAgcmV0dXJuIGlzb0NvZGU7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIHRoZSBudW1iZXIgb2YgZnJhY3Rpb24gZGlnaXRzIHRoYXQgc2hvdWxkCisgICAgICogYmUgZGlzcGxheWVkIGZvciB0aGlzIGN1cnJlbmN5LgorICAgICAqIEByZXR1cm4gYSBub24tbmVnYXRpdmUgbnVtYmVyIG9mIGZyYWN0aW9uIGRpZ2l0cyB0byBiZQorICAgICAqIGRpc3BsYXllZAorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIGludCBnZXREZWZhdWx0RnJhY3Rpb25EaWdpdHMoKSB7CisgICAgICAgIHJldHVybiAoZmluZERhdGEoKSlbMF0uaW50VmFsdWUoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSByb3VuZGluZyBpbmNyZW1lbnQgZm9yIHRoaXMgY3VycmVuY3ksIG9yIDAuMCBpZiBubworICAgICAqIHJvdW5kaW5nIGlzIGRvbmUgYnkgdGhpcyBjdXJyZW5jeS4KKyAgICAgKiBAcmV0dXJuIHRoZSBub24tbmVnYXRpdmUgcm91bmRpbmcgaW5jcmVtZW50LCBvciAwLjAgaWYgbm9uZQorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIGRvdWJsZSBnZXRSb3VuZGluZ0luY3JlbWVudCgpIHsKKyAgICAgICAgSW50ZWdlcltdIGRhdGEgPSBmaW5kRGF0YSgpOworCisgICAgICAgIGludCBkYXRhMSA9IGRhdGFbMV0uaW50VmFsdWUoKTsgLy8gcm91bmRpbmcgaW5jcmVtZW50CisKKyAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gcm91bmRpbmcgcmV0dXJuIDAuMCB0byBpbmRpY2F0ZSBubyByb3VuZGluZy4KKyAgICAgICAgLy8gVGhpcyBpcyB0aGUgaGlnaC1ydW5uZXIgY2FzZSwgYnkgZmFyLgorICAgICAgICBpZiAoZGF0YTEgPT0gMCkgeworICAgICAgICAgICAgcmV0dXJuIDAuMDsKKyAgICAgICAgfQorCisgICAgICAgIGludCBkYXRhMCA9IGRhdGFbMF0uaW50VmFsdWUoKTsgLy8gZnJhY3Rpb24gZGlnaXRzCisKKyAgICAgICAgLy8gSWYgdGhlIG1ldGEgZGF0YSBpcyBpbnZhbGlkLCByZXR1cm4gMC4wIHRvIGluZGljYXRlIG5vIHJvdW5kaW5nLgorICAgICAgICBpZiAoZGF0YTAgPCAwIHx8IGRhdGEwID49IFBPVzEwLmxlbmd0aCkgeworICAgICAgICAgICAgcmV0dXJuIDAuMDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFJldHVybiBkYXRhWzFdIC8gMTBeKGRhdGFbMF0pLiAgVGhlIG9ubHkgYWN0dWFsIHJvdW5kaW5nIGRhdGEsCisgICAgICAgIC8vIGFzIG9mIHRoaXMgd3JpdGluZywgaXMgQ0hGIHsgMiwgMjUgfS4KKyAgICAgICAgcmV0dXJuIChkb3VibGUpIGRhdGExIC8gUE9XMTBbZGF0YTBdOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIElTTyA0MjE3IGNvZGUgZm9yIHRoaXMgY3VycmVuY3kuCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICByZXR1cm4gaXNvQ29kZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgY3VycmVuY3kgb2JqZWN0IGZvciB0aGUgZ2l2ZW4gSVNPIDQyMTcgMy1sZXR0ZXIKKyAgICAgKiBjb2RlLiAgVGhpcyBjb25zdHJ1Y3RvciBhc3N1bWVzIHRoYXQgdGhlIGNvZGUgaXMgdmFsaWQuCisgICAgICovCisgICAgcHJpdmF0ZSBDdXJyZW5jeShTdHJpbmcgdGhlSVNPQ29kZSkgeworICAgICAgICBpc29Db2RlID0gdGhlSVNPQ29kZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbnRlcm5hbCBmdW5jdGlvbiB0byBsb29rIHVwIGN1cnJlbmN5IGRhdGEuICBSZXN1bHQgaXMgYW4gYXJyYXkgb2YKKyAgICAgKiB0d28gSW50ZWdlcnMuICBUaGUgZmlyc3QgaXMgdGhlIGZyYWN0aW9uIGRpZ2l0cy4gIFRoZSBzZWNvbmQgaXMgdGhlCisgICAgICogcm91bmRpbmcgaW5jcmVtZW50LCBvciAwIGlmIG5vbmUuICBUaGUgcm91bmRpbmcgaW5jcmVtZW50IGlzIGluCisgICAgICogdW5pdHMgb2YgMTBeKC1mcmFjdGlvbl9kaWdpdHMpLgorICAgICAqLworICAgIHByaXZhdGUgSW50ZWdlcltdIGZpbmREYXRhKCkgeworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAvLyBHZXQgQ3VycmVuY3lNZXRhIHJlc291cmNlIG91dCBvZiByb290IGxvY2FsZSBmaWxlLiAgW1RoaXMgbWF5CisgICAgICAgICAgICAvLyBtb3ZlIG91dCBvZiB0aGUgcm9vdCBsb2NhbGUgZmlsZSBsYXRlcjsgaWYgaXQgZG9lcywgdXBkYXRlIHRoaXMKKyAgICAgICAgICAgIC8vIGNvZGUuXQorICAgICAgICAgICAgUmVzb3VyY2VCdW5kbGUgcm9vdCA9IElDVUxvY2FsZURhdGEuZ2V0TG9jYWxlRWxlbWVudHMoIiIpOworCisgICAgICAgICAgICBPYmplY3RbXVtdIGN1cnJlbmN5TWV0YSA9IChPYmplY3RbXVtdKSByb290LmdldE9iamVjdCgiQ3VycmVuY3lNZXRhIik7CisKKyAgICAgICAgICAgIEludGVnZXJbXSBpID0gbnVsbDsKKyAgICAgICAgICAgIGludCBkZWZhdWx0UG9zID0gLTE7CisKKyAgICAgICAgICAgIC8vIERvIGEgbGluZWFyIHNlYXJjaCBmb3IgaXNvQ29kZS4gIEF0IHRoZSBzYW1lIHRpbWUsCisgICAgICAgICAgICAvLyByZWNvcmQgdGhlIHBvc2l0aW9uIG9mIHRoZSBERUZBVUxUIG1ldGEgZGF0YS4gIElmIHRoZQorICAgICAgICAgICAgLy8gbWV0YSBkYXRhIGJlY29tZXMgbGFyZ2UsIG1ha2UgdGhpcyBmYXN0ZXIuCisgICAgICAgICAgICBmb3IgKGludCBqPTA7IGo8Y3VycmVuY3lNZXRhLmxlbmd0aDsgKytqKSB7CisgICAgICAgICAgICAgICAgT2JqZWN0W10gcm93ID0gY3VycmVuY3lNZXRhW2pdOworICAgICAgICAgICAgICAgIFN0cmluZyBzID0gKFN0cmluZykgcm93WzBdOworICAgICAgICAgICAgICAgIGludCBjID0gaXNvQ29kZS5jb21wYXJlVG9JZ25vcmVDYXNlKHMpOworICAgICAgICAgICAgICAgIGlmIChjID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgaSA9IChJbnRlZ2VyW10pIHJvd1sxXTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICgiREVGQVVMVCIuZXF1YWxzSWdub3JlQ2FzZShzKSkgeworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0UG9zID0gajsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGMgPCAwICYmIGRlZmF1bHRQb3MgPj0gMCkgeworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpID09IG51bGwgJiYgZGVmYXVsdFBvcyA+PSAwKSB7CisgICAgICAgICAgICAgICAgaSA9IChJbnRlZ2VyW10pIGN1cnJlbmN5TWV0YVtkZWZhdWx0UG9zXVsxXTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGkgIT0gbnVsbCAmJiBpLmxlbmd0aCA+PSAyKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKE1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiBlKSB7fQorCisgICAgICAgIC8vIENvbmZpZy9idWlsZCBlcnJvcjsgcmV0dXJuIGhhcmQtY29kZWQgZGVmYXVsdHMKKyAgICAgICAgcmV0dXJuIExBU1RfUkVTT1JUX0RBVEE7CisgICAgfQorCisgICAgLy8gRGVmYXVsdCBjdXJyZW5jeSBtZXRhIGRhdGEgb2YgbGFzdCByZXNvcnQuICBXZSB0cnkgdG8gdXNlIHRoZQorICAgIC8vIGRlZmF1bHRzIGVuY29kZWQgaW4gdGhlIG1ldGEgZGF0YSByZXNvdXJjZSBidW5kbGUuICBJZiB0aGVyZSBpcyBhCisgICAgLy8gY29uZmlndXJhdGlvbi9idWlsZCBlcnJvciBhbmQgdGhlc2UgYXJlIG5vdCBhdmFpbGFibGUsIHdlIHVzZSB0aGVzZQorICAgIC8vIGhhcmQtY29kZWQgZGVmYXVsdHMgKHdoaWNoIHNob3VsZCBiZSBpZGVudGljYWwpLgorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEludGVnZXJbXSBMQVNUX1JFU09SVF9EQVRBID0KKyAgICAgICAgbmV3IEludGVnZXJbXSB7IG5ldyBJbnRlZ2VyKDIpLCBuZXcgSW50ZWdlcigwKSB9OworCisgICAgLy8gUE9XMTBbaV0gPSAxMF5pCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50W10gUE9XMTAgPSB7IDEsIDEwLCAxMDAsIDEwMDAsIDEwMDAwLCAxMDAwMDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMDAwMDAsIDEwMDAwMDAwLCAxMDAwMDAwMDAsIDEwMDAwMDAwMDAgfTsKK30KKworLy9lb2YKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS91dGlsL0RhdGVSdWxlLmphdmEgYi9zcmMvY29tL2libS9pY3UvdXRpbC9EYXRlUnVsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjAxYzI0ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdXRpbC9EYXRlUnVsZS5qYXZhCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS91dGlsL0RhdGVSdWxlLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMTIvMDQgMTY6Mzg6NTIgJCAKKyAqICRSZXZpc2lvbjogMS40ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LnV0aWw7CisKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKKworLyoqCisgKiBEYXRlUnVsZSBpcyBhbiBpbnRlcmZhY2UgZm9yIGNhbGN1bGF0aW5nIHRoZSBkYXRlIG9mIGFuIGV2ZW50LgorICogSXQgc3VwcG9ydHMgYm90aCByZWN1cnJpbmcgZXZlbnRzIGFuZCB0aG9zZSB3aGljaCBvY2N1ciBvbmx5IG9uY2UuCisgKiBEYXRlUnVsZSBpcyB1c2VmdWwgZm9yIHN0b3JpbmcgaW5mb3JtYXRpb24gYWJvdXQgaG9saWRheXMsCisgKiBEYXlsaWdodCBTYXZpbmdzIFRpbWUgcnVsZXMsIGFuZCBvdGhlciBldmVudHMgc3VjaCBhcyBtZWV0aW5ncy4KKyAqCisgKiBAc2VlIFNpbXBsZURhdGVSdWxlCisgKiBAZHJhZnQgSUNVIDIuMgorICovCitwdWJsaWMgaW50ZXJmYWNlIERhdGVSdWxlCit7CisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBmaXJzdCBvY2N1cnJhbmNlIG9mIHRoZSBldmVudCByZXByZXNlbnRlZCBieSB0aGlzIHJ1bGUKKyAgICAgKiB0aGF0IGlzIG9uIG9yIGFmdGVyIHRoZSBnaXZlbiBzdGFydCBkYXRlLgorICAgICAqCisgICAgICogQHBhcmFtIHN0YXJ0IE9ubHkgb2NjdXJyYW5jZXMgb24gb3IgYWZ0ZXIgdGhpcyBkYXRlIGFyZSByZXR1cm5lZC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gICAgICBUaGUgZGF0ZSBvbiB3aGljaCB0aGlzIGV2ZW50IG9jY3Vycywgb3IgbnVsbCBpZiBpdAorICAgICAqICAgICAgICAgICAgICBkb2VzIG5vdCBvY2N1ciBvbiBvciBhZnRlciB0aGUgc3RhcnQgZGF0ZS4KKyAgICAgKgorICAgICAqIEBzZWUgI2ZpcnN0QmV0d2VlbgorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgYWJzdHJhY3QgcHVibGljIERhdGUgICAgZmlyc3RBZnRlcihEYXRlIHN0YXJ0KTsKKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgZmlyc3Qgb2NjdXJyYW5jZSBvZiB0aGUgZXZlbnQgcmVwcmVzZW50ZWQgYnkgdGhpcyBydWxlCisgICAgICogdGhhdCBpcyBvbiBvciBhZnRlciB0aGUgZ2l2ZW4gc3RhcnQgZGF0ZSBhbmQgYmVmb3JlIHRoZSBnaXZlbgorICAgICAqIGVuZCBkYXRlLgorICAgICAqCisgICAgICogQHBhcmFtIHN0YXJ0IE9ubHkgb2NjdXJyYW5jZXMgb24gb3IgYWZ0ZXIgdGhpcyBkYXRlIGFyZSByZXR1cm5lZC4KKyAgICAgKiBAcGFyYW0gZW5kICAgT25seSBvY2N1cnJhbmNlcyBiZWZvcmUgdGhpcyBkYXRlIGFyZSByZXR1cm5lZC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gICAgICBUaGUgZGF0ZSBvbiB3aGljaCB0aGlzIGV2ZW50IG9jY3Vycywgb3IgbnVsbCBpZiBpdAorICAgICAqICAgICAgICAgICAgICBkb2VzIG5vdCBvY2N1ciBiZXR3ZWVuIHRoZSBzdGFydCBhbmQgZW5kIGRhdGVzLgorICAgICAqCisgICAgICogQHNlZSAjZmlyc3RBZnRlcgorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgYWJzdHJhY3QgcHVibGljIERhdGUgICAgZmlyc3RCZXR3ZWVuKERhdGUgc3RhcnQsIERhdGUgZW5kKTsKKworICAgIC8qKgorICAgICAqIENoZWNrcyB3aGV0aGVyIHRoaXMgZXZlbnQgb2NjdXJzIG9uIHRoZSBnaXZlbiBkYXRlLiAgVGhpcyBkb2VzCisgICAgICogPGVtPm5vdDwvZW0+IHRha2UgdGltZSBvZiBkYXkgaW50byBhY2NvdW50OyBpbnN0ZWFkIGl0IGNoZWNrcworICAgICAqIHdoZXRoZXIgdGhpcyBldmVudCBhbmQgdGhlIGdpdmVuIGRhdGUgYXJlIG9uIHRoZSBzYW1lIGRheS4KKyAgICAgKiBUaGlzIGlzIHVzZWZ1bCBmb3IgYXBwbGljYXRpb25zIHN1Y2ggYXMgZGV0ZXJtaW5pbmcgd2hldGhlciBhIGdpdmVuCisgICAgICogZGF5IGlzIGEgaG9saWRheS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBkYXRlICBUaGUgZGF0ZSB0byBjaGVjay4KKyAgICAgKiBAcmV0dXJuICAgICAgdHJ1ZSBpZiB0aGlzIGV2ZW50IG9jY3VycyBvbiB0aGUgZ2l2ZW4gZGF0ZS4KKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIGFic3RyYWN0IHB1YmxpYyBib29sZWFuIGlzT24oRGF0ZSBkYXRlKTsKKworICAgIC8qKgorICAgICAqIENoZWNrIHdoZXRoZXIgdGhpcyBldmVudCBvY2N1cnMgYXQgbGVhc3Qgb25jZSBiZXR3ZWVuIHRoZSB0d28KKyAgICAgKiBkYXRlcyBnaXZlbi4KKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIGFic3RyYWN0IHB1YmxpYyBib29sZWFuIGlzQmV0d2VlbihEYXRlIHN0YXJ0LCBEYXRlIGVuZCk7Cit9OwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3V0aWwvRWFzdGVySG9saWRheS5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L3V0aWwvRWFzdGVySG9saWRheS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmZiNzgwNDgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdXRpbC9FYXN0ZXJIb2xpZGF5LmphdmEKQEAgLTAsMCArMSwyOTMgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS91dGlsL0Vhc3RlckhvbGlkYXkuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8xMi8wNCAwMTowMzozOSAkIAorICogJFJldmlzaW9uOiAxLjcgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS5pY3UudXRpbDsKKworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuR3JlZ29yaWFuQ2FsZW5kYXI7CitpbXBvcnQgY29tLmlibS5pY3UudXRpbC5DYWxlbmRhcjsKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLlNpbXBsZVRpbWVab25lOworCisvKioKKyAqIEEgSG9saWRheSBzdWJjbGFzcyB3aGljaCByZXByZXNlbnRzIGhvbGlkYXlzIHRoYXQgb2NjdXIKKyAqIGEgZml4ZWQgbnVtYmVyIG9mIGRheXMgYmVmb3JlIG9yIGFmdGVyIEVhc3Rlci4gIFN1cHBvcnRzIGJvdGggdGhlCisgKiBXZXN0ZXJuIGFuZCBPcnRob2RveCBtZXRob2RzIGZvciBjYWxjdWxhdGluZyBFYXN0ZXIuCisgKiBAZHJhZnQgSUNVIDIuMgorICovCitwdWJsaWMgY2xhc3MgRWFzdGVySG9saWRheSBleHRlbmRzIEhvbGlkYXkKK3sKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgYSBob2xpZGF5IHRoYXQgZmFsbHMgb24gRWFzdGVyIFN1bmRheSBldmVyeSB5ZWFyCisgICAgICoKKyAgICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgaG9saWRheQorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIEVhc3RlckhvbGlkYXkoU3RyaW5nIG5hbWUpCisgICAgeworICAgICAgICBzdXBlcihuYW1lLCBuZXcgRWFzdGVyUnVsZSgwLCBmYWxzZSkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdCBhIGhvbGlkYXkgdGhhdCBmYWxscyBhIHNwZWNpZmllZCBudW1iZXIgb2YgZGF5cyBiZWZvcmUKKyAgICAgKiBvciBhZnRlciBFYXN0ZXIgU3VuZGF5IGVhY2ggeWVhci4KKyAgICAgKgorICAgICAqIEBwYXJhbSBkYXlzQWZ0ZXIgVGhlIG51bWJlciBvZiBkYXlzIGJlZm9yZSAoLSkgb3IgYWZ0ZXIgKCspIEVhc3RlcgorICAgICAqIEBwYXJhbSBuYW1lICAgICAgVGhlIG5hbWUgb2YgdGhlIGhvbGlkYXkKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBFYXN0ZXJIb2xpZGF5KGludCBkYXlzQWZ0ZXIsIFN0cmluZyBuYW1lKQorICAgIHsKKyAgICAgICAgc3VwZXIobmFtZSwgbmV3IEVhc3RlclJ1bGUoZGF5c0FmdGVyLCBmYWxzZSkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdCBhIGhvbGlkYXkgdGhhdCBmYWxscyBhIHNwZWNpZmllZCBudW1iZXIgb2YgZGF5cyBiZWZvcmUKKyAgICAgKiBvciBhZnRlciBFYXN0ZXIgU3VuZGF5IGVhY2ggeWVhciwgdXNpbmcgZWl0aGVyIHRoZSBXZXN0ZXJuCisgICAgICogb3IgT3J0aG9kb3ggY2FsZW5kYXIuCisgICAgICoKKyAgICAgKiBAcGFyYW0gZGF5c0FmdGVyIFRoZSBudW1iZXIgb2YgZGF5cyBiZWZvcmUgKC0pIG9yIGFmdGVyICgrKSBFYXN0ZXIKKyAgICAgKiBAcGFyYW0gb3J0aG9kb3ggIFVzZSB0aGUgT3J0aG9kb3ggY2FsZW5kYXI/CisgICAgICogQHBhcmFtIG5hbWUgICAgICBUaGUgbmFtZSBvZiB0aGUgaG9saWRheQorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIEVhc3RlckhvbGlkYXkoaW50IGRheXNBZnRlciwgYm9vbGVhbiBvcnRob2RveCwgU3RyaW5nIG5hbWUpCisgICAgeworICAgICAgICBzdXBlcihuYW1lLCBuZXcgRWFzdGVyUnVsZShkYXlzQWZ0ZXIsIG9ydGhvZG94KSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2hyb3ZlIFR1ZXNkYXksIGFrYSBNYXJkaSBHcmFzLCA0OCBkYXlzIGJlZm9yZSBFYXN0ZXIKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHN0YXRpYyBwdWJsaWMgZmluYWwgRWFzdGVySG9saWRheSBTSFJPVkVfVFVFU0RBWSAgPSBuZXcgRWFzdGVySG9saWRheSgtNDgsICAgICJTaHJvdmUgVHVlc2RheSIpOworCisgICAgLyoqCisgICAgICogQXNoIFdlZG5lc2RheSwgc3RhcnQgb2YgTGVudCwgNDcgZGF5cyBiZWZvcmUgRWFzdGVyCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBzdGF0aWMgcHVibGljIGZpbmFsIEVhc3RlckhvbGlkYXkgQVNIX1dFRE5FU0RBWSAgID0gbmV3IEVhc3RlckhvbGlkYXkoLTQ3LCAgICAiQXNoIFdlZG5lc2RheSIpOworCisgICAgLyoqCisgICAgICogUGFsbSBTdW5kYXksIDcgZGF5cyBiZWZvcmUgRWFzdGVyCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBzdGF0aWMgcHVibGljIGZpbmFsIEVhc3RlckhvbGlkYXkgUEFMTV9TVU5EQVkgICAgID0gbmV3IEVhc3RlckhvbGlkYXkoIC03LCAgICAiUGFsbSBTdW5kYXkiKTsKKworICAgIC8qKgorICAgICAqIE1hdW5keSBUaHVyc2RheSwgMyBkYXlzIGJlZm9yZSBFYXN0ZXIKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHN0YXRpYyBwdWJsaWMgZmluYWwgRWFzdGVySG9saWRheSBNQVVORFlfVEhVUlNEQVkgPSBuZXcgRWFzdGVySG9saWRheSggLTMsICAgICJNYXVuZHkgVGh1cnNkYXkiKTsKKworICAgIC8qKgorICAgICAqIEdvb2QgRnJpZGF5LCAyIGRheXMgYmVmb3JlIEVhc3RlcgorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgc3RhdGljIHB1YmxpYyBmaW5hbCBFYXN0ZXJIb2xpZGF5IEdPT0RfRlJJREFZICAgICA9IG5ldyBFYXN0ZXJIb2xpZGF5KCAtMiwgICAgIkdvb2QgRnJpZGF5Iik7CisKKyAgICAvKioKKyAgICAgKiBFYXN0ZXIgU3VuZGF5CisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBzdGF0aWMgcHVibGljIGZpbmFsIEVhc3RlckhvbGlkYXkgRUFTVEVSX1NVTkRBWSAgID0gbmV3IEVhc3RlckhvbGlkYXkoICAwLCAgICAiRWFzdGVyIFN1bmRheSIpOworCisgICAgLyoqCisgICAgICogRWFzdGVyIE1vbmRheSwgMSBkYXkgYWZ0ZXIgRWFzdGVyCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBzdGF0aWMgcHVibGljIGZpbmFsIEVhc3RlckhvbGlkYXkgRUFTVEVSX01PTkRBWSAgID0gbmV3IEVhc3RlckhvbGlkYXkoICAxLCAgICAiRWFzdGVyIE1vbmRheSIpOworCisgICAgLyoqCisgICAgICogQXNjZW5zaW9uLCAzOSBkYXlzIGFmdGVyIEVhc3RlcgorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgc3RhdGljIHB1YmxpYyBmaW5hbCBFYXN0ZXJIb2xpZGF5IEFTQ0VOU0lPTiAgICAgICA9IG5ldyBFYXN0ZXJIb2xpZGF5KCAzOSwgICAgIkFzY2Vuc2lvbiIpOworCisgICAgLyoqCisgICAgICogUGVudGVjb3N0IChha2EgV2hpdCBTdW5kYXkpLCA0OSBkYXlzIGFmdGVyIEVhc3RlcgorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgc3RhdGljIHB1YmxpYyBmaW5hbCBFYXN0ZXJIb2xpZGF5IFBFTlRFQ09TVCAgICAgICA9IG5ldyBFYXN0ZXJIb2xpZGF5KCA0OSwgICAgIlBlbnRlY29zdCIpOworCisgICAgLyoqCisgICAgICogV2hpdCBTdW5kYXkgKGFrYSBQZW50ZWNvc3QpLCA0OSBkYXlzIGFmdGVyIEVhc3RlcgorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgc3RhdGljIHB1YmxpYyBmaW5hbCBFYXN0ZXJIb2xpZGF5IFdISVRfU1VOREFZICAgICA9IG5ldyBFYXN0ZXJIb2xpZGF5KCA0OSwgICAgIldoaXQgU3VuZGF5Iik7CisKKyAgICAvKioKKyAgICAgKiBXaGl0IE1vbmRheSwgNTAgZGF5cyBhZnRlciBFYXN0ZXIKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHN0YXRpYyBwdWJsaWMgZmluYWwgRWFzdGVySG9saWRheSBXSElUX01PTkRBWSAgICAgPSBuZXcgRWFzdGVySG9saWRheSggNTAsICAgICJXaGl0IE1vbmRheSIpOworCisgICAgLyoqCisgICAgICogQ29ycHVzIENocmlzdGksIDYwIGRheXMgYWZ0ZXIgRWFzdGVyCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBzdGF0aWMgcHVibGljIGZpbmFsIEVhc3RlckhvbGlkYXkgQ09SUFVTX0NIUklTVEkgID0gbmV3IEVhc3RlckhvbGlkYXkoIDYwLCAgICAiQ29ycHVzIENocmlzdGkiKTsKK30KKworY2xhc3MgRWFzdGVyUnVsZSBpbXBsZW1lbnRzIERhdGVSdWxlIHsKKyAgICBwdWJsaWMgRWFzdGVyUnVsZShpbnQgZGF5c0FmdGVyRWFzdGVyLCBib29sZWFuIGlzT3J0aG9kb3gpIHsKKyAgICAgICAgdGhpcy5kYXlzQWZ0ZXJFYXN0ZXIgPSBkYXlzQWZ0ZXJFYXN0ZXI7CisgICAgICAgIGlmIChpc09ydGhvZG94KSB7CisgICAgICAgICAgICBvcnRob2RveC5zZXRHcmVnb3JpYW5DaGFuZ2UobmV3IERhdGUoTG9uZy5NQVhfVkFMVUUpKTsKKyAgICAgICAgICAgIGNhbGVuZGFyID0gb3J0aG9kb3g7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGZpcnN0IG9jY3VycmFuY2Ugb2YgdGhpcyBydWxlIG9uIG9yIGFmdGVyIHRoZSBnaXZlbiBkYXRlCisgICAgICovCisgICAgcHVibGljIERhdGUgZmlyc3RBZnRlcihEYXRlIHN0YXJ0KQorICAgIHsKKyAgICAgICAgaWYgKHN0YXJ0RGF0ZSAhPSBudWxsICYmIHN0YXJ0LmJlZm9yZShzdGFydERhdGUpKSB7CisgICAgICAgICAgICBzdGFydCA9IHN0YXJ0RGF0ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZG9GaXJzdEJldHdlZW4oc3RhcnQsIG51bGwpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgZmlyc3Qgb2NjdXJyYW5jZSBvZiB0aGlzIHJ1bGUgb24gb3IgYWZ0ZXIKKyAgICAgKiB0aGUgZ2l2ZW4gc3RhcnQgZGF0ZSBhbmQgYmVmb3JlIHRoZSBnaXZlbiBlbmQgZGF0ZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgRGF0ZSBmaXJzdEJldHdlZW4oRGF0ZSBzdGFydCwgRGF0ZSBlbmQpCisgICAgeworICAgICAgICAvLyBQaW4gdG8gdGhlIG1pbi9tYXggZGF0ZXMgZm9yIHRoaXMgcnVsZQorICAgICAgICBpZiAoc3RhcnREYXRlICE9IG51bGwgJiYgc3RhcnQuYmVmb3JlKHN0YXJ0RGF0ZSkpIHsKKyAgICAgICAgICAgIHN0YXJ0ID0gc3RhcnREYXRlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBkb0ZpcnN0QmV0d2VlbihzdGFydCwgZW5kKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgZ2l2ZW4gRGF0ZSBpcyBvbiB0aGUgc2FtZSBkYXkgYXMgRWFzdGVyCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNPbihEYXRlIGRhdGUpCisgICAgeworICAgICAgICBpZiAoc3RhcnREYXRlICE9IG51bGwgJiYgZGF0ZS5iZWZvcmUoc3RhcnREYXRlKSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgc3luY2hyb25pemVkKGNhbGVuZGFyKSB7CisgICAgICAgICAgICBjYWxlbmRhci5zZXRUaW1lKGRhdGUpOworICAgICAgICAgICAgaW50IGRheU9mWWVhciA9IGNhbGVuZGFyLmdldChDYWxlbmRhci5EQVlfT0ZfWUVBUik7CisKKyAgICAgICAgICAgIGNhbGVuZGFyLnNldFRpbWUoY29tcHV0ZUluWWVhcihjYWxlbmRhci5nZXRUaW1lKCksIGNhbGVuZGFyKSk7CisKKyAgICAgICAgICAgIHJldHVybiBjYWxlbmRhci5nZXQoQ2FsZW5kYXIuREFZX09GX1lFQVIpID09IGRheU9mWWVhcjsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0cnVlIGlmIEVhc3RlciBvY2N1cnMgYmV0d2VlbiB0aGUgdHdvIGRhdGVzIGdpdmVuCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNCZXR3ZWVuKERhdGUgc3RhcnQsIERhdGUgZW5kKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZpcnN0QmV0d2VlbihzdGFydCwgZW5kKSAhPSBudWxsOyAvLyBUT0RPOiBvcHRpbWl6ZT8KKyAgICB9CisKKyAgICBwcml2YXRlIERhdGUgZG9GaXJzdEJldHdlZW4oRGF0ZSBzdGFydCwgRGF0ZSBlbmQpCisgICAgeworICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiZG9GaXJzdEJldHdlZW46IHN0YXJ0ICAgPSAiICsgc3RhcnQudG9TdHJpbmcoKSk7CisgICAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCJkb0ZpcnN0QmV0d2VlbjogZW5kICAgICA9ICIgKyBlbmQudG9TdHJpbmcoKSk7CisKKyAgICAgICAgc3luY2hyb25pemVkKGNhbGVuZGFyKSB7CisgICAgICAgICAgICAvLyBGaWd1cmUgb3V0IHdoZW4gdGhpcyBob2xpZGF5IGxhbmRzIGluIHRoZSBnaXZlbiB5ZWFyCisgICAgICAgICAgICBEYXRlIHJlc3VsdCA9IGNvbXB1dGVJblllYXIoc3RhcnQsIGNhbGVuZGFyKTsKKworICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oIiAgICAgICAgICAgICAgICByZXN1bHQgID0gIiArIHJlc3VsdC50b1N0cmluZygpKTsKKworICAgICAgICAgICAgLy8gV2UgbWlnaHQgaGF2ZSBnb3R0ZW4gYSBkYXRlIHRoYXQncyBpbiB0aGUgc2FtZSB5ZWFyIGFzICJzdGFydCIsIGJ1dAorICAgICAgICAgICAgLy8gZWFybGllciBpbiB0aGUgeWVhci4gIElmIHNvLCBnbyB0byBuZXh0IHllYXIKKyAgICAgICAgICAgIGlmIChyZXN1bHQuYmVmb3JlKHN0YXJ0KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYWxlbmRhci5zZXRUaW1lKHN0YXJ0KTsKKyAgICAgICAgICAgICAgICBjYWxlbmRhci5nZXQoQ2FsZW5kYXIuWUVBUik7ICAgIC8vIEpESyAxLjEuMiBidWcgd29ya2Fyb3VuZAorICAgICAgICAgICAgICAgIGNhbGVuZGFyLmFkZChDYWxlbmRhci5ZRUFSLCAxKTsKKworICAgICAgICAgICAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCIgICAgICAgICAgICAgICAgUmVzdWx0IGJlZm9yZSBzdGFydCwgZ29pbmcgdG8gbmV4dCB5ZWFyOiAiCisgICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICArIGNhbGVuZGFyLmdldFRpbWUoKS50b1N0cmluZygpKTsKKworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNvbXB1dGVJblllYXIoY2FsZW5kYXIuZ2V0VGltZSgpLCBjYWxlbmRhcik7CisgICAgICAgICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oIiAgICAgICAgICAgICAgICByZXN1bHQgID0gIiArIHJlc3VsdC50b1N0cmluZygpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGVuZCAhPSBudWxsICYmIHJlc3VsdC5hZnRlcihlbmQpKSB7CisgICAgICAgICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oIlJlc3VsdCBhZnRlciBlbmQsIHJldHVybmluZyBudWxsIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29tcHV0ZSB0aGUgbW9udGggYW5kIGRhdGUgb24gd2hpY2ggdGhpcyBob2xpZGF5IGZhbGxzIGluIHRoZSB5ZWFyCisgICAgICogY29udGFpbmluZyB0aGUgZGF0ZSAiZGF0ZSIuICBGaXJzdCBmaWd1cmUgb3V0IHdoaWNoIGRhdGUgRWFzdGVyCisgICAgICogbGFuZHMgb24gaW4gdGhpcyB5ZWFyLCBhbmQgdGhlbiBhZGQgdGhlIG9mZnNldCBmb3IgdGhpcyBob2xpZGF5IHRvIGdldAorICAgICAqIHRoZSByaWdodCBkYXRlLgorICAgICAqIDxwPgorICAgICAqIFRoZSBhbGdvcml0aG0gaGVyZSBpcyB0YWtlbiBmcm9tIHRoZQorICAgICAqIDxhIGhyZWY9aHR0cDovL3d3dy5waXAuZGtuZXQuZGsvfnBpcDEwMTYwL2NhbGVuZGFyLmh0bWw+Q2FsZW5kYXIgRkFRLAorICAgICAqIHZlcnNpb24gMS43PC9hPgorICAgICAqLworICAgIHByaXZhdGUgRGF0ZSBjb21wdXRlSW5ZZWFyKERhdGUgZGF0ZSwgR3JlZ29yaWFuQ2FsZW5kYXIgY2FsKQorICAgIHsKKyAgICAgICAgaWYgKGNhbCA9PSBudWxsKSBjYWwgPSBjYWxlbmRhcjsKKworICAgICAgICBzeW5jaHJvbml6ZWQoY2FsKSB7CisgICAgICAgICAgICBjYWwuc2V0VGltZShkYXRlKTsKKworICAgICAgICAgICAgaW50IHllYXIgPSBjYWwuZ2V0KENhbGVuZGFyLllFQVIpOworICAgICAgICAgICAgaW50IGcgPSB5ZWFyICUgMTk7ICAvLyAiR29sZGVuIE51bWJlciIgb2YgeWVhciAtIDEKKyAgICAgICAgICAgIGludCBpID0gMDsgICAgICAgICAgLy8gIyBvZiBkYXlzIGZyb20gMy8yMSB0byB0aGUgUGFzY2hhbCBmdWxsIG1vb24KKyAgICAgICAgICAgIGludCBqID0gMDsgICAgICAgICAgLy8gV2Vla2RheSAoMC1iYXNlZCkgb2YgUGFzY2hhbCBmdWxsIG1vb24KKworICAgICAgICAgICAgaWYgKGNhbC5nZXRUaW1lKCkuYWZ0ZXIoIGNhbC5nZXRHcmVnb3JpYW5DaGFuZ2UoKSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gV2UncmUgcGFzdCB0aGUgR3JlZ29yaWFuIHN3aXRjaG92ZXIsIHNvIHVzZSB0aGUgR3JlZ29yaWFuIHJ1bGVzLgorICAgICAgICAgICAgICAgIGludCBjID0geWVhciAvIDEwMDsKKyAgICAgICAgICAgICAgICBpbnQgaCA9IChjIC0gYy80IC0gKDgqYysxMykvMjUgKyAxOSpnICsgMTUpICUgMzA7CisgICAgICAgICAgICAgICAgaSA9IGggLSAoaC8yOCkqKDEgLSAoaC8yOCkqKDI5LyhoKzEpKSooKDIxLWcpLzExKSk7CisgICAgICAgICAgICAgICAgaiA9ICh5ZWFyICsgeWVhci80ICsgaSArIDIgLSBjICsgYy80KSAlIDc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gVXNlIHRoZSBvbGQgSnVsaWFuIHJ1bGVzLgorICAgICAgICAgICAgICAgIGkgPSAoMTkqZyArIDE1KSAlIDMwOworICAgICAgICAgICAgICAgIGogPSAoeWVhciArIHllYXIvNCArIGkpICUgNzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGludCBsID0gaSAtIGo7CisgICAgICAgICAgICBpbnQgbSA9IDMgKyAobCs0MCkvNDQ7ICAgICAgICAgICAgICAvLyAxLWJhc2VkIG1vbnRoIGluIHdoaWNoIEVhc3RlciBmYWxscworICAgICAgICAgICAgaW50IGQgPSBsICsgMjggLSAzMSoobS80KTsgICAgICAgICAgLy8gRGF0ZSBvZiBFYXN0ZXIgd2l0aGluIHRoYXQgbW9udGgKKworICAgICAgICAgICAgY2FsLmNsZWFyKCk7CisgICAgICAgICAgICBjYWwuc2V0KENhbGVuZGFyLkVSQSwgR3JlZ29yaWFuQ2FsZW5kYXIuQUQpOworICAgICAgICAgICAgY2FsLnNldChDYWxlbmRhci5ZRUFSLCB5ZWFyKTsKKyAgICAgICAgICAgIGNhbC5zZXQoQ2FsZW5kYXIuTU9OVEgsIG0tMSk7ICAgICAgIC8vIDAtYmFzZWQKKyAgICAgICAgICAgIGNhbC5zZXQoQ2FsZW5kYXIuREFURSwgZCk7CisgICAgICAgICAgICBjYWwuZ2V0VGltZSgpOyAgICAgICAgICAgICAgICAgICAgICAvLyBKREsgMS4xLjIgYnVnIHdvcmthcm91bmQKKyAgICAgICAgICAgIGNhbC5hZGQoQ2FsZW5kYXIuREFURSwgZGF5c0FmdGVyRWFzdGVyKTsKKworICAgICAgICAgICAgcmV0dXJuIGNhbC5nZXRUaW1lKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdGF0aWMgR3JlZ29yaWFuQ2FsZW5kYXIgZ3JlZ29yaWFuID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKG5ldyBTaW1wbGVUaW1lWm9uZSgwLCAiVVRDIikpOworICAgIHN0YXRpYyBHcmVnb3JpYW5DYWxlbmRhciBvcnRob2RveCA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcihuZXcgU2ltcGxlVGltZVpvbmUoMCwgIlVUQyIpKTsKKworICAgIGludCAgICAgICAgICAgICAgIGRheXNBZnRlckVhc3RlcjsKKyAgICBEYXRlICAgICAgICAgICAgICBzdGFydERhdGUgPSBudWxsOworICAgIEdyZWdvcmlhbkNhbGVuZGFyIGNhbGVuZGFyID0gZ3JlZ29yaWFuOworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3V0aWwvR3JlZ29yaWFuQ2FsZW5kYXIuamF2YSBiL3NyYy9jb20vaWJtL2ljdS91dGlsL0dyZWdvcmlhbkNhbGVuZGFyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uODIzZjk3YQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS91dGlsL0dyZWdvcmlhbkNhbGVuZGFyLmphdmEKQEAgLTAsMCArMSw5NTYgQEAKKy8qCisqICAgQ29weXJpZ2h0IChDKSAxOTk2LTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyogICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyovCitwYWNrYWdlIGNvbS5pYm0uaWN1LnV0aWw7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKKworLyoqCisgKiA8Y29kZT5HcmVnb3JpYW5DYWxlbmRhcjwvY29kZT4gaXMgYSBjb25jcmV0ZSBzdWJjbGFzcyBvZgorICoge0BsaW5rIENhbGVuZGFyfQorICogYW5kIHByb3ZpZGVzIHRoZSBzdGFuZGFyZCBjYWxlbmRhciB1c2VkIGJ5IG1vc3Qgb2YgdGhlIHdvcmxkLgorICoKKyAqIDxwPgorICogVGhlIHN0YW5kYXJkIChHcmVnb3JpYW4pIGNhbGVuZGFyIGhhcyAyIGVyYXMsIEJDIGFuZCBBRC4KKyAqCisgKiA8cD4KKyAqIFRoaXMgaW1wbGVtZW50YXRpb24gaGFuZGxlcyBhIHNpbmdsZSBkaXNjb250aW51aXR5LCB3aGljaCBjb3JyZXNwb25kcyBieQorICogZGVmYXVsdCB0byB0aGUgZGF0ZSB0aGUgR3JlZ29yaWFuIGNhbGVuZGFyIHdhcyBpbnN0aXR1dGVkIChPY3RvYmVyIDE1LCAxNTgyCisgKiBpbiBzb21lIGNvdW50cmllcywgbGF0ZXIgaW4gb3RoZXJzKS4gIFRoZSBjdXRvdmVyIGRhdGUgbWF5IGJlIGNoYW5nZWQgYnkgdGhlCisgKiBjYWxsZXIgYnkgY2FsbGluZyA8Y29kZT5zZXRHcmVnb3JpYW5DaGFuZ2UoKTwvY29kZT4uCisgKgorICogPHA+CisgKiBIaXN0b3JpY2FsbHksIGluIHRob3NlIGNvdW50cmllcyB3aGljaCBhZG9wdGVkIHRoZSBHcmVnb3JpYW4gY2FsZW5kYXIgZmlyc3QsCisgKiBPY3RvYmVyIDQsIDE1ODIgd2FzIHRodXMgZm9sbG93ZWQgYnkgT2N0b2JlciAxNSwgMTU4Mi4gVGhpcyBjYWxlbmRhciBtb2RlbHMKKyAqIHRoaXMgY29ycmVjdGx5LiAgQmVmb3JlIHRoZSBHcmVnb3JpYW4gY3V0b3ZlciwgPGNvZGU+R3JlZ29yaWFuQ2FsZW5kYXI8L2NvZGU+CisgKiBpbXBsZW1lbnRzIHRoZSBKdWxpYW4gY2FsZW5kYXIuICBUaGUgb25seSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIEdyZWdvcmlhbgorICogYW5kIHRoZSBKdWxpYW4gY2FsZW5kYXIgaXMgdGhlIGxlYXAgeWVhciBydWxlLiBUaGUgSnVsaWFuIGNhbGVuZGFyIHNwZWNpZmllcworICogbGVhcCB5ZWFycyBldmVyeSBmb3VyIHllYXJzLCB3aGVyZWFzIHRoZSBHcmVnb3JpYW4gY2FsZW5kYXIgb21pdHMgY2VudHVyeQorICogeWVhcnMgd2hpY2ggYXJlIG5vdCBkaXZpc2libGUgYnkgNDAwLgorICoKKyAqIDxwPgorICogPGNvZGU+R3JlZ29yaWFuQ2FsZW5kYXI8L2NvZGU+IGltcGxlbWVudHMgPGVtPnByb2xlcHRpYzwvZW0+IEdyZWdvcmlhbiBhbmQKKyAqIEp1bGlhbiBjYWxlbmRhcnMuIFRoYXQgaXMsIGRhdGVzIGFyZSBjb21wdXRlZCBieSBleHRyYXBvbGF0aW5nIHRoZSBjdXJyZW50CisgKiBydWxlcyBpbmRlZmluaXRlbHkgZmFyIGJhY2t3YXJkIGFuZCBmb3J3YXJkIGluIHRpbWUuIEFzIGEgcmVzdWx0LAorICogPGNvZGU+R3JlZ29yaWFuQ2FsZW5kYXI8L2NvZGU+IG1heSBiZSB1c2VkIGZvciBhbGwgeWVhcnMgdG8gZ2VuZXJhdGUKKyAqIG1lYW5pbmdmdWwgYW5kIGNvbnNpc3RlbnQgcmVzdWx0cy4gSG93ZXZlciwgZGF0ZXMgb2J0YWluZWQgdXNpbmcKKyAqIDxjb2RlPkdyZWdvcmlhbkNhbGVuZGFyPC9jb2RlPiBhcmUgaGlzdG9yaWNhbGx5IGFjY3VyYXRlIG9ubHkgZnJvbSBNYXJjaCAxLCA0CisgKiBBRCBvbndhcmQsIHdoZW4gbW9kZXJuIEp1bGlhbiBjYWxlbmRhciBydWxlcyB3ZXJlIGFkb3B0ZWQuICBCZWZvcmUgdGhpcyBkYXRlLAorICogbGVhcCB5ZWFyIHJ1bGVzIHdlcmUgYXBwbGllZCBpcnJlZ3VsYXJseSwgYW5kIGJlZm9yZSA0NSBCQyB0aGUgSnVsaWFuCisgKiBjYWxlbmRhciBkaWQgbm90IGV2ZW4gZXhpc3QuCisgKgorICogPHA+CisgKiBQcmlvciB0byB0aGUgaW5zdGl0dXRpb24gb2YgdGhlIEdyZWdvcmlhbiBjYWxlbmRhciwgTmV3IFllYXIncyBEYXkgd2FzCisgKiBNYXJjaCAyNS4gVG8gYXZvaWQgY29uZnVzaW9uLCB0aGlzIGNhbGVuZGFyIGFsd2F5cyB1c2VzIEphbnVhcnkgMS4gQSBtYW51YWwKKyAqIGFkanVzdG1lbnQgbWF5IGJlIG1hZGUgaWYgZGVzaXJlZCBmb3IgZGF0ZXMgdGhhdCBhcmUgcHJpb3IgdG8gdGhlIEdyZWdvcmlhbgorICogY2hhbmdlb3ZlciBhbmQgd2hpY2ggZmFsbCBiZXR3ZWVuIEphbnVhcnkgMSBhbmQgTWFyY2ggMjQuCisgKgorICogPHA+VmFsdWVzIGNhbGN1bGF0ZWQgZm9yIHRoZSA8Y29kZT5XRUVLX09GX1lFQVI8L2NvZGU+IGZpZWxkIHJhbmdlIGZyb20gMSB0bworICogNTMuICBXZWVrIDEgZm9yIGEgeWVhciBpcyB0aGUgZWFybGllc3Qgc2V2ZW4gZGF5IHBlcmlvZCBzdGFydGluZyBvbgorICogPGNvZGU+Z2V0Rmlyc3REYXlPZldlZWsoKTwvY29kZT4gdGhhdCBjb250YWlucyBhdCBsZWFzdAorICogPGNvZGU+Z2V0TWluaW1hbERheXNJbkZpcnN0V2VlaygpPC9jb2RlPiBkYXlzIGZyb20gdGhhdCB5ZWFyLiAgSXQgdGh1cworICogZGVwZW5kcyBvbiB0aGUgdmFsdWVzIG9mIDxjb2RlPmdldE1pbmltYWxEYXlzSW5GaXJzdFdlZWsoKTwvY29kZT4sCisgKiA8Y29kZT5nZXRGaXJzdERheU9mV2VlaygpPC9jb2RlPiwgYW5kIHRoZSBkYXkgb2YgdGhlIHdlZWsgb2YgSmFudWFyeSAxLgorICogV2Vla3MgYmV0d2VlbiB3ZWVrIDEgb2Ygb25lIHllYXIgYW5kIHdlZWsgMSBvZiB0aGUgZm9sbG93aW5nIHllYXIgYXJlCisgKiBudW1iZXJlZCBzZXF1ZW50aWFsbHkgZnJvbSAyIHRvIDUyIG9yIDUzIChhcyBuZWVkZWQpLgorCisgKiA8cD5Gb3IgZXhhbXBsZSwgSmFudWFyeSAxLCAxOTk4IHdhcyBhIFRodXJzZGF5LiAgSWYKKyAqIDxjb2RlPmdldEZpcnN0RGF5T2ZXZWVrKCk8L2NvZGU+IGlzIDxjb2RlPk1PTkRBWTwvY29kZT4gYW5kCisgKiA8Y29kZT5nZXRNaW5pbWFsRGF5c0luRmlyc3RXZWVrKCk8L2NvZGU+IGlzIDQgKHRoZXNlIGFyZSB0aGUgdmFsdWVzCisgKiByZWZsZWN0aW5nIElTTyA4NjAxIGFuZCBtYW55IG5hdGlvbmFsIHN0YW5kYXJkcyksIHRoZW4gd2VlayAxIG9mIDE5OTggc3RhcnRzCisgKiBvbiBEZWNlbWJlciAyOSwgMTk5NywgYW5kIGVuZHMgb24gSmFudWFyeSA0LCAxOTk4LiAgSWYsIGhvd2V2ZXIsCisgKiA8Y29kZT5nZXRGaXJzdERheU9mV2VlaygpPC9jb2RlPiBpcyA8Y29kZT5TVU5EQVk8L2NvZGU+LCB0aGVuIHdlZWsgMSBvZiAxOTk4CisgKiBzdGFydHMgb24gSmFudWFyeSA0LCAxOTk4LCBhbmQgZW5kcyBvbiBKYW51YXJ5IDEwLCAxOTk4OyB0aGUgZmlyc3QgdGhyZWUgZGF5cworICogb2YgMTk5OCB0aGVuIGFyZSBwYXJ0IG9mIHdlZWsgNTMgb2YgMTk5Ny4KKyAqCisgKiA8cD5WYWx1ZXMgY2FsY3VsYXRlZCBmb3IgdGhlIDxjb2RlPldFRUtfT0ZfTU9OVEg8L2NvZGU+IGZpZWxkIHJhbmdlIGZyb20gMCBvcgorICogMSB0byA0IG9yIDUuICBXZWVrIDEgb2YgYSBtb250aCAodGhlIGRheXMgd2l0aCA8Y29kZT5XRUVLX09GX01PTlRIID0KKyAqIDE8L2NvZGU+KSBpcyB0aGUgZWFybGllc3Qgc2V0IG9mIGF0IGxlYXN0CisgKiA8Y29kZT5nZXRNaW5pbWFsRGF5c0luRmlyc3RXZWVrKCk8L2NvZGU+IGNvbnRpZ3VvdXMgZGF5cyBpbiB0aGF0IG1vbnRoLAorICogZW5kaW5nIG9uIHRoZSBkYXkgYmVmb3JlIDxjb2RlPmdldEZpcnN0RGF5T2ZXZWVrKCk8L2NvZGU+LiAgVW5saWtlCisgKiB3ZWVrIDEgb2YgYSB5ZWFyLCB3ZWVrIDEgb2YgYSBtb250aCBtYXkgYmUgc2hvcnRlciB0aGFuIDcgZGF5cywgbmVlZAorICogbm90IHN0YXJ0IG9uIDxjb2RlPmdldEZpcnN0RGF5T2ZXZWVrKCk8L2NvZGU+LCBhbmQgd2lsbCBub3QgaW5jbHVkZSBkYXlzIG9mCisgKiB0aGUgcHJldmlvdXMgbW9udGguICBEYXlzIG9mIGEgbW9udGggYmVmb3JlIHdlZWsgMSBoYXZlIGEKKyAqIDxjb2RlPldFRUtfT0ZfTU9OVEg8L2NvZGU+IG9mIDAuCisgKgorICogPHA+Rm9yIGV4YW1wbGUsIGlmIDxjb2RlPmdldEZpcnN0RGF5T2ZXZWVrKCk8L2NvZGU+IGlzIDxjb2RlPlNVTkRBWTwvY29kZT4KKyAqIGFuZCA8Y29kZT5nZXRNaW5pbWFsRGF5c0luRmlyc3RXZWVrKCk8L2NvZGU+IGlzIDQsIHRoZW4gdGhlIGZpcnN0IHdlZWsgb2YKKyAqIEphbnVhcnkgMTk5OCBpcyBTdW5kYXksIEphbnVhcnkgNCB0aHJvdWdoIFNhdHVyZGF5LCBKYW51YXJ5IDEwLiAgVGhlc2UgZGF5cworICogaGF2ZSBhIDxjb2RlPldFRUtfT0ZfTU9OVEg8L2NvZGU+IG9mIDEuICBUaHVyc2RheSwgSmFudWFyeSAxIHRocm91Z2gKKyAqIFNhdHVyZGF5LCBKYW51YXJ5IDMgaGF2ZSBhIDxjb2RlPldFRUtfT0ZfTU9OVEg8L2NvZGU+IG9mIDAuICBJZgorICogPGNvZGU+Z2V0TWluaW1hbERheXNJbkZpcnN0V2VlaygpPC9jb2RlPiBpcyBjaGFuZ2VkIHRvIDMsIHRoZW4gSmFudWFyeSAxCisgKiB0aHJvdWdoIEphbnVhcnkgMyBoYXZlIGEgPGNvZGU+V0VFS19PRl9NT05USDwvY29kZT4gb2YgMS4KKyAqCisgKiA8cD4KKyAqIDxzdHJvbmc+RXhhbXBsZTo8L3N0cm9uZz4KKyAqIDxibG9ja3F1b3RlPgorICogPHByZT4KKyAqIC8vIGdldCB0aGUgc3VwcG9ydGVkIGlkcyBmb3IgR01ULTA4OjAwIChQYWNpZmljIFN0YW5kYXJkIFRpbWUpCisgKiBTdHJpbmdbXSBpZHMgPSBUaW1lWm9uZS5nZXRBdmFpbGFibGVJRHMoLTggKiA2MCAqIDYwICogMTAwMCk7CisgKiAvLyBpZiBubyBpZHMgd2VyZSByZXR1cm5lZCwgc29tZXRoaW5nIGlzIHdyb25nLiBnZXQgb3V0LgorICogaWYgKGlkcy5sZW5ndGggPT0gMCkKKyAqICAgICBTeXN0ZW0uZXhpdCgwKTsKKyAqCisgKiAgLy8gYmVnaW4gb3V0cHV0CisgKiBTeXN0ZW0ub3V0LnByaW50bG4oIkN1cnJlbnQgVGltZSIpOworICoKKyAqIC8vIGNyZWF0ZSBhIFBhY2lmaWMgU3RhbmRhcmQgVGltZSB0aW1lIHpvbmUKKyAqIFNpbXBsZVRpbWVab25lIHBkdCA9IG5ldyBTaW1wbGVUaW1lWm9uZSgtOCAqIDYwICogNjAgKiAxMDAwLCBpZHNbMF0pOworICoKKyAqIC8vIHNldCB1cCBydWxlcyBmb3IgZGF5bGlnaHQgc2F2aW5ncyB0aW1lCisgKiBwZHQuc2V0U3RhcnRSdWxlKENhbGVuZGFyLkFQUklMLCAxLCBDYWxlbmRhci5TVU5EQVksIDIgKiA2MCAqIDYwICogMTAwMCk7CisgKiBwZHQuc2V0RW5kUnVsZShDYWxlbmRhci5PQ1RPQkVSLCAtMSwgQ2FsZW5kYXIuU1VOREFZLCAyICogNjAgKiA2MCAqIDEwMDApOworICoKKyAqIC8vIGNyZWF0ZSBhIEdyZWdvcmlhbkNhbGVuZGFyIHdpdGggdGhlIFBhY2lmaWMgRGF5bGlnaHQgdGltZSB6b25lCisgKiAvLyBhbmQgdGhlIGN1cnJlbnQgZGF0ZSBhbmQgdGltZQorICogQ2FsZW5kYXIgY2FsZW5kYXIgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIocGR0KTsKKyAqIERhdGUgdHJpYWxUaW1lID0gbmV3IERhdGUoKTsKKyAqIGNhbGVuZGFyLnNldFRpbWUodHJpYWxUaW1lKTsKKyAqCisgKiAvLyBwcmludCBvdXQgYSBidW5jaCBvZiBpbnRlcmVzdGluZyB0aGluZ3MKKyAqIFN5c3RlbS5vdXQucHJpbnRsbigiRVJBOiAiICsgY2FsZW5kYXIuZ2V0KENhbGVuZGFyLkVSQSkpOworICogU3lzdGVtLm91dC5wcmludGxuKCJZRUFSOiAiICsgY2FsZW5kYXIuZ2V0KENhbGVuZGFyLllFQVIpKTsKKyAqIFN5c3RlbS5vdXQucHJpbnRsbigiTU9OVEg6ICIgKyBjYWxlbmRhci5nZXQoQ2FsZW5kYXIuTU9OVEgpKTsKKyAqIFN5c3RlbS5vdXQucHJpbnRsbigiV0VFS19PRl9ZRUFSOiAiICsgY2FsZW5kYXIuZ2V0KENhbGVuZGFyLldFRUtfT0ZfWUVBUikpOworICogU3lzdGVtLm91dC5wcmludGxuKCJXRUVLX09GX01PTlRIOiAiICsgY2FsZW5kYXIuZ2V0KENhbGVuZGFyLldFRUtfT0ZfTU9OVEgpKTsKKyAqIFN5c3RlbS5vdXQucHJpbnRsbigiREFURTogIiArIGNhbGVuZGFyLmdldChDYWxlbmRhci5EQVRFKSk7CisgKiBTeXN0ZW0ub3V0LnByaW50bG4oIkRBWV9PRl9NT05USDogIiArIGNhbGVuZGFyLmdldChDYWxlbmRhci5EQVlfT0ZfTU9OVEgpKTsKKyAqIFN5c3RlbS5vdXQucHJpbnRsbigiREFZX09GX1lFQVI6ICIgKyBjYWxlbmRhci5nZXQoQ2FsZW5kYXIuREFZX09GX1lFQVIpKTsKKyAqIFN5c3RlbS5vdXQucHJpbnRsbigiREFZX09GX1dFRUs6ICIgKyBjYWxlbmRhci5nZXQoQ2FsZW5kYXIuREFZX09GX1dFRUspKTsKKyAqIFN5c3RlbS5vdXQucHJpbnRsbigiREFZX09GX1dFRUtfSU5fTU9OVEg6ICIKKyAqICAgICAgICAgICAgICAgICAgICArIGNhbGVuZGFyLmdldChDYWxlbmRhci5EQVlfT0ZfV0VFS19JTl9NT05USCkpOworICogU3lzdGVtLm91dC5wcmludGxuKCJBTV9QTTogIiArIGNhbGVuZGFyLmdldChDYWxlbmRhci5BTV9QTSkpOworICogU3lzdGVtLm91dC5wcmludGxuKCJIT1VSOiAiICsgY2FsZW5kYXIuZ2V0KENhbGVuZGFyLkhPVVIpKTsKKyAqIFN5c3RlbS5vdXQucHJpbnRsbigiSE9VUl9PRl9EQVk6ICIgKyBjYWxlbmRhci5nZXQoQ2FsZW5kYXIuSE9VUl9PRl9EQVkpKTsKKyAqIFN5c3RlbS5vdXQucHJpbnRsbigiTUlOVVRFOiAiICsgY2FsZW5kYXIuZ2V0KENhbGVuZGFyLk1JTlVURSkpOworICogU3lzdGVtLm91dC5wcmludGxuKCJTRUNPTkQ6ICIgKyBjYWxlbmRhci5nZXQoQ2FsZW5kYXIuU0VDT05EKSk7CisgKiBTeXN0ZW0ub3V0LnByaW50bG4oIk1JTExJU0VDT05EOiAiICsgY2FsZW5kYXIuZ2V0KENhbGVuZGFyLk1JTExJU0VDT05EKSk7CisgKiBTeXN0ZW0ub3V0LnByaW50bG4oIlpPTkVfT0ZGU0VUOiAiCisgKiAgICAgICAgICAgICAgICAgICAgKyAoY2FsZW5kYXIuZ2V0KENhbGVuZGFyLlpPTkVfT0ZGU0VUKS8oNjAqNjAqMTAwMCkpKTsKKyAqIFN5c3RlbS5vdXQucHJpbnRsbigiRFNUX09GRlNFVDogIgorICogICAgICAgICAgICAgICAgICAgICsgKGNhbGVuZGFyLmdldChDYWxlbmRhci5EU1RfT0ZGU0VUKS8oNjAqNjAqMTAwMCkpKTsKKworICogU3lzdGVtLm91dC5wcmludGxuKCJDdXJyZW50IFRpbWUsIHdpdGggaG91ciByZXNldCB0byAzIik7CisgKiBjYWxlbmRhci5jbGVhcihDYWxlbmRhci5IT1VSX09GX0RBWSk7IC8vIHNvIGRvZXNuJ3Qgb3ZlcnJpZGUKKyAqIGNhbGVuZGFyLnNldChDYWxlbmRhci5IT1VSLCAzKTsKKyAqIFN5c3RlbS5vdXQucHJpbnRsbigiRVJBOiAiICsgY2FsZW5kYXIuZ2V0KENhbGVuZGFyLkVSQSkpOworICogU3lzdGVtLm91dC5wcmludGxuKCJZRUFSOiAiICsgY2FsZW5kYXIuZ2V0KENhbGVuZGFyLllFQVIpKTsKKyAqIFN5c3RlbS5vdXQucHJpbnRsbigiTU9OVEg6ICIgKyBjYWxlbmRhci5nZXQoQ2FsZW5kYXIuTU9OVEgpKTsKKyAqIFN5c3RlbS5vdXQucHJpbnRsbigiV0VFS19PRl9ZRUFSOiAiICsgY2FsZW5kYXIuZ2V0KENhbGVuZGFyLldFRUtfT0ZfWUVBUikpOworICogU3lzdGVtLm91dC5wcmludGxuKCJXRUVLX09GX01PTlRIOiAiICsgY2FsZW5kYXIuZ2V0KENhbGVuZGFyLldFRUtfT0ZfTU9OVEgpKTsKKyAqIFN5c3RlbS5vdXQucHJpbnRsbigiREFURTogIiArIGNhbGVuZGFyLmdldChDYWxlbmRhci5EQVRFKSk7CisgKiBTeXN0ZW0ub3V0LnByaW50bG4oIkRBWV9PRl9NT05USDogIiArIGNhbGVuZGFyLmdldChDYWxlbmRhci5EQVlfT0ZfTU9OVEgpKTsKKyAqIFN5c3RlbS5vdXQucHJpbnRsbigiREFZX09GX1lFQVI6ICIgKyBjYWxlbmRhci5nZXQoQ2FsZW5kYXIuREFZX09GX1lFQVIpKTsKKyAqIFN5c3RlbS5vdXQucHJpbnRsbigiREFZX09GX1dFRUs6ICIgKyBjYWxlbmRhci5nZXQoQ2FsZW5kYXIuREFZX09GX1dFRUspKTsKKyAqIFN5c3RlbS5vdXQucHJpbnRsbigiREFZX09GX1dFRUtfSU5fTU9OVEg6ICIKKyAqICAgICAgICAgICAgICAgICAgICArIGNhbGVuZGFyLmdldChDYWxlbmRhci5EQVlfT0ZfV0VFS19JTl9NT05USCkpOworICogU3lzdGVtLm91dC5wcmludGxuKCJBTV9QTTogIiArIGNhbGVuZGFyLmdldChDYWxlbmRhci5BTV9QTSkpOworICogU3lzdGVtLm91dC5wcmludGxuKCJIT1VSOiAiICsgY2FsZW5kYXIuZ2V0KENhbGVuZGFyLkhPVVIpKTsKKyAqIFN5c3RlbS5vdXQucHJpbnRsbigiSE9VUl9PRl9EQVk6ICIgKyBjYWxlbmRhci5nZXQoQ2FsZW5kYXIuSE9VUl9PRl9EQVkpKTsKKyAqIFN5c3RlbS5vdXQucHJpbnRsbigiTUlOVVRFOiAiICsgY2FsZW5kYXIuZ2V0KENhbGVuZGFyLk1JTlVURSkpOworICogU3lzdGVtLm91dC5wcmludGxuKCJTRUNPTkQ6ICIgKyBjYWxlbmRhci5nZXQoQ2FsZW5kYXIuU0VDT05EKSk7CisgKiBTeXN0ZW0ub3V0LnByaW50bG4oIk1JTExJU0VDT05EOiAiICsgY2FsZW5kYXIuZ2V0KENhbGVuZGFyLk1JTExJU0VDT05EKSk7CisgKiBTeXN0ZW0ub3V0LnByaW50bG4oIlpPTkVfT0ZGU0VUOiAiCisgKiAgICAgICAgKyAoY2FsZW5kYXIuZ2V0KENhbGVuZGFyLlpPTkVfT0ZGU0VUKS8oNjAqNjAqMTAwMCkpKTsgLy8gaW4gaG91cnMKKyAqIFN5c3RlbS5vdXQucHJpbnRsbigiRFNUX09GRlNFVDogIgorICogICAgICAgICsgKGNhbGVuZGFyLmdldChDYWxlbmRhci5EU1RfT0ZGU0VUKS8oNjAqNjAqMTAwMCkpKTsgLy8gaW4gaG91cnMKKyAqIDwvcHJlPgorICogPC9ibG9ja3F1b3RlPgorICoKKyAqIEBzZWUgICAgICAgICAgQ2FsZW5kYXIKKyAqIEBzZWUgICAgICAgICAgVGltZVpvbmUKKyAqIEBhdXRob3IgRGF2aWQgR29sZHNtaXRoLCBNYXJrIERhdmlzLCBDaGVuLUxpZWggSHVhbmcsIEFsYW4gTGl1CisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworcHVibGljIGNsYXNzIEdyZWdvcmlhbkNhbGVuZGFyIGV4dGVuZHMgQ2FsZW5kYXIgeworICAgIC8qCisgICAgICogSW1wbGVtZW50YXRpb24gTm90ZXMKKyAgICAgKgorICAgICAqIFRoZSBKdWxpYW4gZGF5IG51bWJlciwgYXMgdXNlZCBoZXJlLCBpcyBhIG1vZGlmaWVkIG51bWJlciB3aGljaCBoYXMgaXRzCisgICAgICogb25zZXQgYXQgbWlkbmlnaHQsIHJhdGhlciB0aGFuIG5vb24uCisgICAgICoKKyAgICAgKiBUaGUgZXBvY2ggaXMgdGhlIG51bWJlciBvZiBkYXlzIG9yIG1pbGxpc2Vjb25kcyBmcm9tIHNvbWUgZGVmaW5lZAorICAgICAqIHN0YXJ0aW5nIHBvaW50LiBUaGUgZXBvY2ggZm9yIGphdmEudXRpbC5EYXRlIGlzIHVzZWQgaGVyZTsgdGhhdCBpcywKKyAgICAgKiBtaWxsaXNlY29uZHMgZnJvbSBKYW51YXJ5IDEsIDE5NzAgKEdyZWdvcmlhbiksIG1pZG5pZ2h0IFVUQy4gIE90aGVyCisgICAgICogZXBvY2hzIHdoaWNoIGFyZSB1c2VkIGFyZSBKYW51YXJ5IDEsIHllYXIgMSAoR3JlZ29yaWFuKSwgd2hpY2ggaXMgZGF5IDEKKyAgICAgKiBvZiB0aGUgR3JlZ29yaWFuIGNhbGVuZGFyLCBhbmQgRGVjZW1iZXIgMzAsIHllYXIgMCAoR3JlZ29yaWFuKSwgd2hpY2ggaXMKKyAgICAgKiBkYXkgMSBvZiB0aGUgSnVsaWFuIGNhbGVuZGFyLgorICAgICAqCisgICAgICogV2UgaW1wbGVtZW50IHRoZSBwcm9sZXB0aWMgSnVsaWFuIGFuZCBHcmVnb3JpYW4gY2FsZW5kYXJzLiAgVGhpcyBtZWFucyB3ZQorICAgICAqIGltcGxlbWVudCB0aGUgbW9kZXJuIGRlZmluaXRpb24gb2YgdGhlIGNhbGVuZGFyIGV2ZW4gdGhvdWdoIHRoZQorICAgICAqIGhpc3RvcmljYWwgdXNhZ2UgZGlmZmVycy4gIEZvciBleGFtcGxlLCBpZiB0aGUgR3JlZ29yaWFuIGNoYW5nZSBpcyBzZXQKKyAgICAgKiB0byBuZXcgRGF0ZShMb25nLk1JTl9WQUxVRSksIHdlIGhhdmUgYSBwdXJlIEdyZWdvcmlhbiBjYWxlbmRhciB3aGljaAorICAgICAqIGxhYmVscyBkYXRlcyBwcmVjZWRpbmcgdGhlIGludmVudGlvbiBvZiB0aGUgR3JlZ29yaWFuIGNhbGVuZGFyIGluIDE1ODIgYXMKKyAgICAgKiBpZiB0aGUgY2FsZW5kYXIgZXhpc3RlZCB0aGVuLgorICAgICAqCisgICAgICogTGlrZXdpc2UsIHdpdGggdGhlIEp1bGlhbiBjYWxlbmRhciwgd2UgYXNzdW1lIGEgY29uc2lzdGVudCA0LXllYXIgbGVhcAorICAgICAqIHJ1bGUsIGV2ZW4gdGhvdWdoIHRoZSBoaXN0b3JpY2FsIHBhdHRlcm4gb2YgbGVhcCB5ZWFycyBpcyBpcnJlZ3VsYXIsCisgICAgICogYmVpbmcgZXZlcnkgMyB5ZWFycyBmcm9tIDQ1IEJDIHRocm91Z2ggOSBCQywgdGhlbiBldmVyeSA0IHllYXJzIGZyb20gOCBBRAorICAgICAqIG9ud2FyZHMsIHdpdGggbm8gbGVhcCB5ZWFycyBpbi1iZXR3ZWVuLiAgVGh1cyBkYXRlIGNvbXB1dGF0aW9ucyBhbmQKKyAgICAgKiBmdW5jdGlvbnMgc3VjaCBhcyBpc0xlYXBZZWFyKCkgYXJlIG5vdCBpbnRlbmRlZCB0byBiZSBoaXN0b3JpY2FsbHkKKyAgICAgKiBhY2N1cmF0ZS4KKyAgICAgKgorICAgICAqIEdpdmVuIHRoYXQgbWlsbGlzZWNvbmRzIGFyZSBhIGxvbmcsIGRheSBudW1iZXJzIHN1Y2ggYXMgSnVsaWFuIGRheQorICAgICAqIG51bWJlcnMsIEdyZWdvcmlhbiBvciBKdWxpYW4gY2FsZW5kYXIgZGF5cywgb3IgZXBvY2ggZGF5cywgYXJlIGFsc28KKyAgICAgKiBsb25ncy4gWWVhcnMgY2FuIGZpdCBpbnRvIGFuIGludC4KKyAgICAgKi8KKworLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBDbGFzcyBWYXJpYWJsZXMKKy8vLy8vLy8vLy8vLy8vLy8vLworCisgICAgLyoqCisgICAgICogVmFsdWUgb2YgdGhlIDxjb2RlPkVSQTwvY29kZT4gZmllbGQgaW5kaWNhdGluZworICAgICAqIHRoZSBwZXJpb2QgYmVmb3JlIHRoZSBjb21tb24gZXJhIChiZWZvcmUgQ2hyaXN0KSwgYWxzbyBrbm93biBhcyBCQ0UuCisgICAgICogVGhlIHNlcXVlbmNlIG9mIHllYXJzIGF0IHRoZSB0cmFuc2l0aW9uIGZyb20gPGNvZGU+QkM8L2NvZGU+IHRvIDxjb2RlPkFEPC9jb2RlPiBpcworICAgICAqIC4uLiwgMiBCQywgMSBCQywgMSBBRCwgMiBBRCwuLi4KKyAgICAgKiBAc2VlIENhbGVuZGFyI0VSQQorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJDID0gMDsKKworICAgIC8qKgorICAgICAqIFZhbHVlIG9mIHRoZSA8Y29kZT5FUkE8L2NvZGU+IGZpZWxkIGluZGljYXRpbmcKKyAgICAgKiB0aGUgY29tbW9uIGVyYSAoQW5ubyBEb21pbmkpLCBhbHNvIGtub3duIGFzIENFLgorICAgICAqIFRoZSBzZXF1ZW5jZSBvZiB5ZWFycyBhdCB0aGUgdHJhbnNpdGlvbiBmcm9tIDxjb2RlPkJDPC9jb2RlPiB0byA8Y29kZT5BRDwvY29kZT4gaXMKKyAgICAgKiAuLi4sIDIgQkMsIDEgQkMsIDEgQUQsIDIgQUQsLi4uCisgICAgICogQHNlZSBDYWxlbmRhciNFUkEKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBRCA9IDE7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRVBPQ0hfWUVBUiA9IDE5NzA7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnRbXVtdIE1PTlRIX0NPVU5UID0geworICAgICAgICAvL2xlbiBsZW4yICAgc3QgIHN0MgorICAgICAgICB7ICAzMSwgIDMxLCAgIDAsICAgMCB9LCAvLyBKYW4KKyAgICAgICAgeyAgMjgsICAyOSwgIDMxLCAgMzEgfSwgLy8gRmViCisgICAgICAgIHsgIDMxLCAgMzEsICA1OSwgIDYwIH0sIC8vIE1hcgorICAgICAgICB7ICAzMCwgIDMwLCAgOTAsICA5MSB9LCAvLyBBcHIKKyAgICAgICAgeyAgMzEsICAzMSwgMTIwLCAxMjEgfSwgLy8gTWF5CisgICAgICAgIHsgIDMwLCAgMzAsIDE1MSwgMTUyIH0sIC8vIEp1bgorICAgICAgICB7ICAzMSwgIDMxLCAxODEsIDE4MiB9LCAvLyBKdWwKKyAgICAgICAgeyAgMzEsICAzMSwgMjEyLCAyMTMgfSwgLy8gQXVnCisgICAgICAgIHsgIDMwLCAgMzAsIDI0MywgMjQ0IH0sIC8vIFNlcAorICAgICAgICB7ICAzMSwgIDMxLCAyNzMsIDI3NCB9LCAvLyBPY3QKKyAgICAgICAgeyAgMzAsICAzMCwgMzA0LCAzMDUgfSwgLy8gTm92CisgICAgICAgIHsgIDMxLCAgMzEsIDMzNCwgMzM1IH0gIC8vIERlYworICAgICAgICAvLyBsZW4gIGxlbmd0aCBvZiBtb250aAorICAgICAgICAvLyBsZW4yIGxlbmd0aCBvZiBtb250aCBpbiBhIGxlYXAgeWVhcgorICAgICAgICAvLyBzdCAgIGRheXMgaW4geWVhciBiZWZvcmUgc3RhcnQgb2YgbW9udGgKKyAgICAgICAgLy8gc3QyICBkYXlzIGluIHllYXIgYmVmb3JlIG1vbnRoIGluIGxlYXAgeWVhcgorICAgIH07CisgICAgCisgICAgLyoqCisgICAgICogT2xkIHllYXIgbGltaXRzIHdlcmUgbGVhc3QgbWF4IDI5MjI2OTA1NCwgbWF4IDI5MjI3ODk5NC4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTElNSVRTW11bXSA9IHsKKyAgICAgICAgLy8gTWluaW11bSAgR3JlYXRlc3QgICAgTGVhc3QgIE1heGltdW0KKyAgICAgICAgLy8gICAgICAgICAgIE1pbmltdW0gIE1heGltdW0KKyAgICAgICAgeyAgICAgICAgMCwgICAgICAgIDAsICAgICAgIDEsICAgICAgIDEgfSwgLy8gRVJBCisgICAgICAgIHsgICAgICAgIDEsICAgICAgICAxLCA1ODI4OTYzLCA1ODM4MjcwIH0sIC8vIFlFQVIKKyAgICAgICAgeyAgICAgICAgMCwgICAgICAgIDAsICAgICAgMTEsICAgICAgMTEgfSwgLy8gTU9OVEgKKyAgICAgICAgeyAgICAgICAgMSwgICAgICAgIDEsICAgICAgNTIsICAgICAgNTMgfSwgLy8gV0VFS19PRl9ZRUFSCisgICAgICAgIHsgICAgICAgIDAsICAgICAgICAwLCAgICAgICA0LCAgICAgICA2IH0sIC8vIFdFRUtfT0ZfTU9OVEgKKyAgICAgICAgeyAgICAgICAgMSwgICAgICAgIDEsICAgICAgMjgsICAgICAgMzEgfSwgLy8gREFZX09GX01PTlRICisgICAgICAgIHsgICAgICAgIDEsICAgICAgICAxLCAgICAgMzY1LCAgICAgMzY2IH0sIC8vIERBWV9PRl9ZRUFSCisgICAgICAgIHsvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL30sIC8vIERBWV9PRl9XRUVLCisgICAgICAgIHsgICAgICAgLTEsICAgICAgIC0xLCAgICAgICA0LCAgICAgICA2IH0sIC8vIERBWV9PRl9XRUVLX0lOX01PTlRICisgICAgICAgIHsvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL30sIC8vIEFNX1BNCisgICAgICAgIHsvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL30sIC8vIEhPVVIKKyAgICAgICAgey8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovfSwgLy8gSE9VUl9PRl9EQVkKKyAgICAgICAgey8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovfSwgLy8gTUlOVVRFCisgICAgICAgIHsvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL30sIC8vIFNFQ09ORAorICAgICAgICB7LyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi99LCAvLyBNSUxMSVNFQ09ORAorICAgICAgICB7LyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi99LCAvLyBaT05FX09GRlNFVAorICAgICAgICB7LyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi99LCAvLyBEU1RfT0ZGU0VUCisgICAgICAgIHsgLTU4MzgyNzAsIC01ODM4MjcwLCA1ODI4OTY0LCA1ODM4MjcxIH0sIC8vIFlFQVJfV09ZCisgICAgICAgIHsvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL30sIC8vIERPV19MT0NBTAorICAgICAgICB7IC01ODM4MjY5LCAtNTgzODI2OSwgNTgyODk2MywgNTgzODI3MCB9LCAvLyBFWFRFTkRFRF9ZRUFSCisgICAgICAgIHsvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL30sIC8vIEpVTElBTl9EQVkKKyAgICAgICAgey8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovfSwgLy8gTUlMTElTRUNPTkRTX0lOX0RBWQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgaW50IGhhbmRsZUdldExpbWl0KGludCBmaWVsZCwgaW50IGxpbWl0VHlwZSkgeworICAgICAgICByZXR1cm4gTElNSVRTW2ZpZWxkXVtsaW1pdFR5cGVdOworICAgIH0KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBJbnN0YW5jZSBWYXJpYWJsZXMKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisgICAgLyoqCisgICAgICogVGhlIHBvaW50IGF0IHdoaWNoIHRoZSBHcmVnb3JpYW4gY2FsZW5kYXIgcnVsZXMgYXJlIHVzZWQsIG1lYXN1cmVkIGluCisgICAgICogbWlsbGlzZWNvbmRzIGZyb20gdGhlIHN0YW5kYXJkIGVwb2NoLiAgRGVmYXVsdCBpcyBPY3RvYmVyIDE1LCAxNTgyCisgICAgICogKEdyZWdvcmlhbikgMDA6MDA6MDAgVVRDIG9yIC0xMjIxOTI5MjgwMDAwMEwuICBGb3IgdGhpcyB2YWx1ZSwgT2N0b2JlciA0LAorICAgICAqIDE1ODIgKEp1bGlhbikgaXMgZm9sbG93ZWQgYnkgT2N0b2JlciAxNSwgMTU4MiAoR3JlZ29yaWFuKS4gIFRoaXMKKyAgICAgKiBjb3JyZXNwb25kcyB0byBKdWxpYW4gZGF5IG51bWJlciAyMjk5MTYxLgorICAgICAqIEBzZXJpYWwKKyAgICAgKi8KKyAgICBwcml2YXRlIGxvbmcgZ3JlZ29yaWFuQ3V0b3ZlciA9IC0xMjIxOTI5MjgwMDAwMEw7CisKKyAgICAvKioKKyAgICAgKiBKdWxpYW4gZGF5IG51bWJlciBvZiB0aGUgR3JlZ29yaWFuIGN1dG92ZXIuCisgICAgICovCisgICAgcHJpdmF0ZSB0cmFuc2llbnQgaW50IGN1dG92ZXJKdWxpYW5EYXkgPSAyMjk5MTYxOworICAgIAorICAgIC8qKgorICAgICAqIFRoZSB5ZWFyIG9mIHRoZSBncmVnb3JpYW5DdXRvdmVyLCB3aXRoIDAgcmVwcmVzZW50aW5nCisgICAgICogMSBCQywgLTEgcmVwcmVzZW50aW5nIDIgQkMsIGV0Yy4KKyAgICAgKi8KKyAgICBwcml2YXRlIHRyYW5zaWVudCBpbnQgZ3JlZ29yaWFuQ3V0b3ZlclllYXIgPSAxNTgyOworCisgICAgLyoqCisgICAgICogVXNlZCBieSBoYW5kbGVDb21wdXRlSnVsaWFuRGF5KCkgYW5kIGhhbmRsZUNvbXB1dGVNb250aFN0YXJ0KCkuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgdHJhbnNpZW50IHByb3RlY3RlZCBib29sZWFuIGlzR3JlZ29yaWFuOworCisgICAgLyoqCisgICAgICogVXNlZCBieSBoYW5kbGVDb21wdXRlSnVsaWFuRGF5KCkgYW5kIGhhbmRsZUNvbXB1dGVNb250aFN0YXJ0KCkuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgdHJhbnNpZW50IHByb3RlY3RlZCBib29sZWFuIGludmVydEdyZWdvcmlhbjsKKworLy8vLy8vLy8vLy8vLy8vCisvLyBDb25zdHJ1Y3RvcnMKKy8vLy8vLy8vLy8vLy8vLworCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIGRlZmF1bHQgR3JlZ29yaWFuQ2FsZW5kYXIgdXNpbmcgdGhlIGN1cnJlbnQgdGltZQorICAgICAqIGluIHRoZSBkZWZhdWx0IHRpbWUgem9uZSB3aXRoIHRoZSBkZWZhdWx0IGxvY2FsZS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgR3JlZ29yaWFuQ2FsZW5kYXIoKSB7CisgICAgICAgIHRoaXMoVGltZVpvbmUuZ2V0RGVmYXVsdCgpLCBMb2NhbGUuZ2V0RGVmYXVsdCgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgR3JlZ29yaWFuQ2FsZW5kYXIgYmFzZWQgb24gdGhlIGN1cnJlbnQgdGltZQorICAgICAqIGluIHRoZSBnaXZlbiB0aW1lIHpvbmUgd2l0aCB0aGUgZGVmYXVsdCBsb2NhbGUuCisgICAgICogQHBhcmFtIHpvbmUgdGhlIGdpdmVuIHRpbWUgem9uZS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgR3JlZ29yaWFuQ2FsZW5kYXIoVGltZVpvbmUgem9uZSkgeworICAgICAgICB0aGlzKHpvbmUsIExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSBHcmVnb3JpYW5DYWxlbmRhciBiYXNlZCBvbiB0aGUgY3VycmVudCB0aW1lCisgICAgICogaW4gdGhlIGRlZmF1bHQgdGltZSB6b25lIHdpdGggdGhlIGdpdmVuIGxvY2FsZS4KKyAgICAgKiBAcGFyYW0gYUxvY2FsZSB0aGUgZ2l2ZW4gbG9jYWxlLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBHcmVnb3JpYW5DYWxlbmRhcihMb2NhbGUgYUxvY2FsZSkgeworICAgICAgICB0aGlzKFRpbWVab25lLmdldERlZmF1bHQoKSwgYUxvY2FsZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIEdyZWdvcmlhbkNhbGVuZGFyIGJhc2VkIG9uIHRoZSBjdXJyZW50IHRpbWUKKyAgICAgKiBpbiB0aGUgZ2l2ZW4gdGltZSB6b25lIHdpdGggdGhlIGdpdmVuIGxvY2FsZS4KKyAgICAgKiBAcGFyYW0gem9uZSB0aGUgZ2l2ZW4gdGltZSB6b25lLgorICAgICAqIEBwYXJhbSBhTG9jYWxlIHRoZSBnaXZlbiBsb2NhbGUuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIEdyZWdvcmlhbkNhbGVuZGFyKFRpbWVab25lIHpvbmUsIExvY2FsZSBhTG9jYWxlKSB7CisgICAgICAgIHN1cGVyKHpvbmUsIGFMb2NhbGUpOworICAgICAgICBzZXRUaW1lSW5NaWxsaXMoU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSBHcmVnb3JpYW5DYWxlbmRhciB3aXRoIHRoZSBnaXZlbiBkYXRlIHNldAorICAgICAqIGluIHRoZSBkZWZhdWx0IHRpbWUgem9uZSB3aXRoIHRoZSBkZWZhdWx0IGxvY2FsZS4KKyAgICAgKiBAcGFyYW0geWVhciB0aGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIFlFQVIgdGltZSBmaWVsZCBpbiB0aGUgY2FsZW5kYXIuCisgICAgICogQHBhcmFtIG1vbnRoIHRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgTU9OVEggdGltZSBmaWVsZCBpbiB0aGUgY2FsZW5kYXIuCisgICAgICogTW9udGggdmFsdWUgaXMgMC1iYXNlZC4gZS5nLiwgMCBmb3IgSmFudWFyeS4KKyAgICAgKiBAcGFyYW0gZGF0ZSB0aGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIERBVEUgdGltZSBmaWVsZCBpbiB0aGUgY2FsZW5kYXIuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIEdyZWdvcmlhbkNhbGVuZGFyKGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXRlKSB7CisgICAgICAgIHN1cGVyKFRpbWVab25lLmdldERlZmF1bHQoKSwgTG9jYWxlLmdldERlZmF1bHQoKSk7CisgICAgICAgIHNldChFUkEsIEFEKTsKKyAgICAgICAgc2V0KFlFQVIsIHllYXIpOworICAgICAgICBzZXQoTU9OVEgsIG1vbnRoKTsKKyAgICAgICAgc2V0KERBVEUsIGRhdGUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSBHcmVnb3JpYW5DYWxlbmRhciB3aXRoIHRoZSBnaXZlbiBkYXRlCisgICAgICogYW5kIHRpbWUgc2V0IGZvciB0aGUgZGVmYXVsdCB0aW1lIHpvbmUgd2l0aCB0aGUgZGVmYXVsdCBsb2NhbGUuCisgICAgICogQHBhcmFtIHllYXIgdGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSBZRUFSIHRpbWUgZmllbGQgaW4gdGhlIGNhbGVuZGFyLgorICAgICAqIEBwYXJhbSBtb250aCB0aGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIE1PTlRIIHRpbWUgZmllbGQgaW4gdGhlIGNhbGVuZGFyLgorICAgICAqIE1vbnRoIHZhbHVlIGlzIDAtYmFzZWQuIGUuZy4sIDAgZm9yIEphbnVhcnkuCisgICAgICogQHBhcmFtIGRhdGUgdGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSBEQVRFIHRpbWUgZmllbGQgaW4gdGhlIGNhbGVuZGFyLgorICAgICAqIEBwYXJhbSBob3VyIHRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgSE9VUl9PRl9EQVkgdGltZSBmaWVsZAorICAgICAqIGluIHRoZSBjYWxlbmRhci4KKyAgICAgKiBAcGFyYW0gbWludXRlIHRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgTUlOVVRFIHRpbWUgZmllbGQKKyAgICAgKiBpbiB0aGUgY2FsZW5kYXIuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIEdyZWdvcmlhbkNhbGVuZGFyKGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXRlLCBpbnQgaG91ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1pbnV0ZSkgeworICAgICAgICBzdXBlcihUaW1lWm9uZS5nZXREZWZhdWx0KCksIExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgICAgICBzZXQoRVJBLCBBRCk7CisgICAgICAgIHNldChZRUFSLCB5ZWFyKTsKKyAgICAgICAgc2V0KE1PTlRILCBtb250aCk7CisgICAgICAgIHNldChEQVRFLCBkYXRlKTsKKyAgICAgICAgc2V0KEhPVVJfT0ZfREFZLCBob3VyKTsKKyAgICAgICAgc2V0KE1JTlVURSwgbWludXRlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgR3JlZ29yaWFuQ2FsZW5kYXIgd2l0aCB0aGUgZ2l2ZW4gZGF0ZQorICAgICAqIGFuZCB0aW1lIHNldCBmb3IgdGhlIGRlZmF1bHQgdGltZSB6b25lIHdpdGggdGhlIGRlZmF1bHQgbG9jYWxlLgorICAgICAqIEBwYXJhbSB5ZWFyIHRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgWUVBUiB0aW1lIGZpZWxkIGluIHRoZSBjYWxlbmRhci4KKyAgICAgKiBAcGFyYW0gbW9udGggdGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSBNT05USCB0aW1lIGZpZWxkIGluIHRoZSBjYWxlbmRhci4KKyAgICAgKiBNb250aCB2YWx1ZSBpcyAwLWJhc2VkLiBlLmcuLCAwIGZvciBKYW51YXJ5LgorICAgICAqIEBwYXJhbSBkYXRlIHRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgREFURSB0aW1lIGZpZWxkIGluIHRoZSBjYWxlbmRhci4KKyAgICAgKiBAcGFyYW0gaG91ciB0aGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIEhPVVJfT0ZfREFZIHRpbWUgZmllbGQKKyAgICAgKiBpbiB0aGUgY2FsZW5kYXIuCisgICAgICogQHBhcmFtIG1pbnV0ZSB0aGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIE1JTlVURSB0aW1lIGZpZWxkCisgICAgICogaW4gdGhlIGNhbGVuZGFyLgorICAgICAqIEBwYXJhbSBzZWNvbmQgdGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSBTRUNPTkQgdGltZSBmaWVsZAorICAgICAqIGluIHRoZSBjYWxlbmRhci4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgR3JlZ29yaWFuQ2FsZW5kYXIoaW50IHllYXIsIGludCBtb250aCwgaW50IGRhdGUsIGludCBob3VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWludXRlLCBpbnQgc2Vjb25kKSB7CisgICAgICAgIHN1cGVyKFRpbWVab25lLmdldERlZmF1bHQoKSwgTG9jYWxlLmdldERlZmF1bHQoKSk7CisgICAgICAgIHNldChFUkEsIEFEKTsKKyAgICAgICAgc2V0KFlFQVIsIHllYXIpOworICAgICAgICBzZXQoTU9OVEgsIG1vbnRoKTsKKyAgICAgICAgc2V0KERBVEUsIGRhdGUpOworICAgICAgICBzZXQoSE9VUl9PRl9EQVksIGhvdXIpOworICAgICAgICBzZXQoTUlOVVRFLCBtaW51dGUpOworICAgICAgICBzZXQoU0VDT05ELCBzZWNvbmQpOworICAgIH0KKworLy8vLy8vLy8vLy8vLy8vLy8KKy8vIFB1YmxpYyBtZXRob2RzCisvLy8vLy8vLy8vLy8vLy8vLworCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgR3JlZ29yaWFuQ2FsZW5kYXIgY2hhbmdlIGRhdGUuIFRoaXMgaXMgdGhlIHBvaW50IHdoZW4gdGhlIHN3aXRjaAorICAgICAqIGZyb20gSnVsaWFuIGRhdGVzIHRvIEdyZWdvcmlhbiBkYXRlcyBvY2N1cnJlZC4gRGVmYXVsdCBpcyBPY3RvYmVyIDE1LAorICAgICAqIDE1ODIuIFByZXZpb3VzIHRvIHRoaXMsIGRhdGVzIHdpbGwgYmUgaW4gdGhlIEp1bGlhbiBjYWxlbmRhci4KKyAgICAgKiA8cD4KKyAgICAgKiBUbyBvYnRhaW4gYSBwdXJlIEp1bGlhbiBjYWxlbmRhciwgc2V0IHRoZSBjaGFuZ2UgZGF0ZSB0bworICAgICAqIDxjb2RlPkRhdGUoTG9uZy5NQVhfVkFMVUUpPC9jb2RlPi4gIFRvIG9idGFpbiBhIHB1cmUgR3JlZ29yaWFuIGNhbGVuZGFyLAorICAgICAqIHNldCB0aGUgY2hhbmdlIGRhdGUgdG8gPGNvZGU+RGF0ZShMb25nLk1JTl9WQUxVRSk8L2NvZGU+LgorICAgICAqCisgICAgICogQHBhcmFtIGRhdGUgdGhlIGdpdmVuIEdyZWdvcmlhbiBjdXRvdmVyIGRhdGUuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0R3JlZ29yaWFuQ2hhbmdlKERhdGUgZGF0ZSkgeworICAgICAgICBncmVnb3JpYW5DdXRvdmVyID0gZGF0ZS5nZXRUaW1lKCk7CisKKyAgICAgICAgLy8gSWYgdGhlIGN1dG92ZXIgaGFzIGFuIGV4dHJlbWUgdmFsdWUsIHRoZW4gY3JlYXRlIGEgcHVyZQorICAgICAgICAvLyBHcmVnb3JpYW4gb3IgcHVyZSBKdWxpYW4gY2FsZW5kYXIgYnkgZ2l2aW5nIHRoZSBjdXRvdmVyIHllYXIgYW5kCisgICAgICAgIC8vIEpEIGV4dHJlbWUgdmFsdWVzLgorICAgICAgICBpZiAoZ3JlZ29yaWFuQ3V0b3ZlciA8PSBNSU5fTUlMTElTKSB7CisgICAgICAgICAgICBncmVnb3JpYW5DdXRvdmVyWWVhciA9IGN1dG92ZXJKdWxpYW5EYXkgPSBJbnRlZ2VyLk1JTl9WQUxVRTsKKyAgICAgICAgfSBlbHNlIGlmIChncmVnb3JpYW5DdXRvdmVyID49IE1BWF9NSUxMSVMpIHsKKyAgICAgICAgICAgIGdyZWdvcmlhbkN1dG92ZXJZZWFyID0gY3V0b3Zlckp1bGlhbkRheSA9IEludGVnZXIuTUFYX1ZBTFVFOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gUHJlY29tcHV0ZSB0d28gaW50ZXJuYWwgdmFyaWFibGVzIHdoaWNoIHdlIHVzZSB0byBkbyB0aGUgYWN0dWFsCisgICAgICAgICAgICAvLyBjdXRvdmVyIGNvbXB1dGF0aW9ucy4gIFRoZXNlIGFyZSB0aGUgSnVsaWFuIGRheSBvZiB0aGUgY3V0b3ZlcgorICAgICAgICAgICAgLy8gYW5kIHRoZSBjdXRvdmVyIHllYXIuCisgICAgICAgICAgICBjdXRvdmVySnVsaWFuRGF5ID0gKGludCkgZmxvb3JEaXZpZGUoZ3JlZ29yaWFuQ3V0b3ZlciwgT05FX0RBWSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIENvbnZlcnQgY3V0b3ZlciBtaWxsaXMgdG8gZXh0ZW5kZWQgeWVhcgorICAgICAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIgY2FsID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKGdldFRpbWVab25lKCkpOworICAgICAgICAgICAgY2FsLnNldFRpbWUoZGF0ZSk7CisgICAgICAgICAgICBncmVnb3JpYW5DdXRvdmVyWWVhciA9IGNhbC5nZXQoRVhURU5ERURfWUVBUik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBHcmVnb3JpYW4gQ2FsZW5kYXIgY2hhbmdlIGRhdGUuICBUaGlzIGlzIHRoZSBwb2ludCB3aGVuIHRoZQorICAgICAqIHN3aXRjaCBmcm9tIEp1bGlhbiBkYXRlcyB0byBHcmVnb3JpYW4gZGF0ZXMgb2NjdXJyZWQuIERlZmF1bHQgaXMKKyAgICAgKiBPY3RvYmVyIDE1LCAxNTgyLiBQcmV2aW91cyB0byB0aGlzLCBkYXRlcyB3aWxsIGJlIGluIHRoZSBKdWxpYW4KKyAgICAgKiBjYWxlbmRhci4KKyAgICAgKiBAcmV0dXJuIHRoZSBHcmVnb3JpYW4gY3V0b3ZlciBkYXRlIGZvciB0aGlzIGNhbGVuZGFyLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBEYXRlIGdldEdyZWdvcmlhbkNoYW5nZSgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGdyZWdvcmlhbkN1dG92ZXIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIHllYXIgaXMgYSBsZWFwIHllYXIuIFJldHVybnMgdHJ1ZSBpZiB0aGUKKyAgICAgKiBnaXZlbiB5ZWFyIGlzIGEgbGVhcCB5ZWFyLgorICAgICAqIEBwYXJhbSB5ZWFyIHRoZSBnaXZlbiB5ZWFyLgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgZ2l2ZW4geWVhciBpcyBhIGxlYXAgeWVhcjsgZmFsc2Ugb3RoZXJ3aXNlLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGlzTGVhcFllYXIoaW50IHllYXIpIHsKKyAgICAgICAgcmV0dXJuIHllYXIgPj0gZ3JlZ29yaWFuQ3V0b3ZlclllYXIgPworICAgICAgICAgICAgKCh5ZWFyJTQgPT0gMCkgJiYgKCh5ZWFyJTEwMCAhPSAwKSB8fCAoeWVhciU0MDAgPT0gMCkpKSA6IC8vIEdyZWdvcmlhbgorICAgICAgICAgICAgKHllYXIlNCA9PSAwKTsgLy8gSnVsaWFuCisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBDYWxlbmRhciBvYmplY3QgaXMgZXF1aXZhbGVudCB0byB0aGlzCisgICAgICogb25lLiAgQ2FsZW5kYXIgb3ZlcnJpZGUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gb3RoZXIgdGhlIENhbGVuZGFyIHRvIGJlIGNvbXBhcmVkIHdpdGggdGhpcyBDYWxlbmRhciAgIAorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNFcXVpdmFsZW50VG8oQ2FsZW5kYXIgb3RoZXIpIHsKKyAgICAgICAgcmV0dXJuIHN1cGVyLmlzRXF1aXZhbGVudFRvKG90aGVyKSAmJgorICAgICAgICAgICAgZ3JlZ29yaWFuQ3V0b3ZlciA9PSAoKEdyZWdvcmlhbkNhbGVuZGFyKW90aGVyKS5ncmVnb3JpYW5DdXRvdmVyOworICAgIH0KKworICAgIC8qKgorICAgICAqIE92ZXJyaWRlIGhhc2hDb2RlLgorICAgICAqIEdlbmVyYXRlcyB0aGUgaGFzaCBjb2RlIGZvciB0aGUgR3JlZ29yaWFuQ2FsZW5kYXIgb2JqZWN0CisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKKyAgICAgICAgcmV0dXJuIHN1cGVyLmhhc2hDb2RlKCkgXiAoaW50KWdyZWdvcmlhbkN1dG92ZXI7CisgICAgfQorCisgICAgLyoqCisgICAgICogT3ZlcnJpZGVzIENhbGVuZGFyCisgICAgICogRGF0ZSBBcml0aG1ldGljIGZ1bmN0aW9uLgorICAgICAqIEFkZHMgdGhlIHNwZWNpZmllZCAoc2lnbmVkKSBhbW91bnQgb2YgdGltZSB0byB0aGUgZ2l2ZW4gdGltZSBmaWVsZCwKKyAgICAgKiBiYXNlZCBvbiB0aGUgY2FsZW5kYXIncyBydWxlcy4KKyAgICAgKiBAcGFyYW0gZmllbGQgdGhlIHRpbWUgZmllbGQuCisgICAgICogQHBhcmFtIGFtb3VudCB0aGUgYW1vdW50IG9mIGRhdGUgb3IgdGltZSB0byBiZSBhZGRlZCB0byB0aGUgZmllbGQuCisgICAgICogQGV4Y2VwdGlvbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgYW4gdW5rbm93biBmaWVsZCBpcyBnaXZlbi4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBhZGQoaW50IGZpZWxkLCBpbnQgYW1vdW50KSB7CisgICAgICAgIHN3aXRjaCAoZmllbGQpIHsKKyAgICAgICAgY2FzZSBFUkE6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaW50IGVyYSA9IGdldChFUkEpICsgYW1vdW50OworICAgICAgICAgICAgICAgIGlmIChlcmEgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIGVyYSA9IDA7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlcmEgPiAxKSB7CisgICAgICAgICAgICAgICAgICAgIGVyYSA9IDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHNldChFUkEsIGVyYSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHN1cGVyLmFkZChmaWVsZCwgYW1vdW50KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUm9sbCBhIGZpZWxkIGJ5IGEgc2lnbmVkIGFtb3VudC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCByb2xsKGludCBmaWVsZCwgaW50IGFtb3VudCkgeworCisgICAgICAgIHN3aXRjaCAoZmllbGQpIHsKKyAgICAgICAgY2FzZSBFUkE6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaW50IGVyYSA9IChnZXQoRVJBKSArIGFtb3VudCApICUgMjsKKyAgICAgICAgICAgICAgICBpZiAoZXJhIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBlcmEgKz0gMjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc2V0KEVSQSwgZXJhKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgY2FzZSBXRUVLX09GX1lFQVI6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gVW5saWtlIFdFRUtfT0ZfTU9OVEgsIFdFRUtfT0ZfWUVBUiBuZXZlciBzaGlmdHMgdGhlIGRheSBvZiB0aGUKKyAgICAgICAgICAgICAgICAvLyB3ZWVrLiAgQWxzbywgcm9sbGluZyB0aGUgd2VlayBvZiB0aGUgeWVhciBjYW4gaGF2ZSBzZWVtaW5nbHkKKyAgICAgICAgICAgICAgICAvLyBzdHJhbmdlIGVmZmVjdHMgc2ltcGx5IGJlY2F1c2UgdGhlIHllYXIgb2YgdGhlIHdlZWsgb2YgeWVhcgorICAgICAgICAgICAgICAgIC8vIG1heSBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgY2FsZW5kYXIgeWVhci4gIEZvciBleGFtcGxlLCB0aGUKKyAgICAgICAgICAgICAgICAvLyBkYXRlIERlYyAyOCwgMTk5NyBpcyB0aGUgZmlyc3QgZGF5IG9mIHdlZWsgMSBvZiAxOTk4IChpZgorICAgICAgICAgICAgICAgIC8vIHdlZWtzIHN0YXJ0IG9uIFN1bmRheSBhbmQgdGhlIG1pbmltYWwgZGF5cyBpbiBmaXJzdCB3ZWVrIGlzCisgICAgICAgICAgICAgICAgLy8gPD0gMykuCisgICAgICAgICAgICAgICAgaW50IHdveSA9IGdldChXRUVLX09GX1lFQVIpOworICAgICAgICAgICAgICAgIC8vIEdldCB0aGUgSVNPIHllYXIsIHdoaWNoIG1hdGNoZXMgdGhlIHdlZWsgb2YgeWVhci4gIFRoaXMKKyAgICAgICAgICAgICAgICAvLyBtYXkgYmUgb25lIHllYXIgYmVmb3JlIG9yIGFmdGVyIHRoZSBjYWxlbmRhciB5ZWFyLgorICAgICAgICAgICAgICAgIGludCBpc29ZZWFyID0gZ2V0KFlFQVJfV09ZKTsKKyAgICAgICAgICAgICAgICBpbnQgaXNvRG95ID0gaW50ZXJuYWxHZXQoREFZX09GX1lFQVIpOworICAgICAgICAgICAgICAgIGlmIChpbnRlcm5hbEdldChNT05USCkgPT0gQ2FsZW5kYXIuSkFOVUFSWSkgeworICAgICAgICAgICAgICAgICAgICBpZiAod295ID49IDUyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpc29Eb3kgKz0gaGFuZGxlR2V0WWVhckxlbmd0aChpc29ZZWFyKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh3b3kgPT0gMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaXNvRG95IC09IGhhbmRsZUdldFllYXJMZW5ndGgoaXNvWWVhciAtIDEpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHdveSArPSBhbW91bnQ7CisgICAgICAgICAgICAgICAgLy8gRG8gZmFzdCBjaGVja3MgdG8gYXZvaWQgdW5uZWNlc3NhcnkgY29tcHV0YXRpb246CisgICAgICAgICAgICAgICAgaWYgKHdveSA8IDEgfHwgd295ID4gNTIpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gRGV0ZXJtaW5lIHRoZSBsYXN0IHdlZWsgb2YgdGhlIElTTyB5ZWFyLgorICAgICAgICAgICAgICAgICAgICAvLyBXZSBkbyB0aGlzIHVzaW5nIHRoZSBzdGFuZGFyZCBmb3JtdWxhIHdlIHVzZQorICAgICAgICAgICAgICAgICAgICAvLyBldmVyeXdoZXJlIGluIHRoaXMgZmlsZS4gIElmIHdlIGNhbiBzZWUgdGhhdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgLy8gZGF5cyBhdCB0aGUgZW5kIG9mIHRoZSB5ZWFyIGFyZSBnb2luZyB0byBmYWxsIGludG8KKyAgICAgICAgICAgICAgICAgICAgLy8gd2VlayAxIG9mIHRoZSBuZXh0IHllYXIsIHdlIGRyb3AgdGhlIGxhc3Qgd2VlayBieQorICAgICAgICAgICAgICAgICAgICAvLyBzdWJ0cmFjdGluZyA3IGZyb20gdGhlIGxhc3QgZGF5IG9mIHRoZSB5ZWFyLgorICAgICAgICAgICAgICAgICAgICBpbnQgbGFzdERveSA9IGhhbmRsZUdldFllYXJMZW5ndGgoaXNvWWVhcik7CisgICAgICAgICAgICAgICAgICAgIGludCBsYXN0UmVsRG93ID0gKGxhc3REb3kgLSBpc29Eb3kgKyBpbnRlcm5hbEdldChEQVlfT0ZfV0VFSykgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRGaXJzdERheU9mV2VlaygpKSAlIDc7CisgICAgICAgICAgICAgICAgICAgIGlmIChsYXN0UmVsRG93IDwgMCkgbGFzdFJlbERvdyArPSA3OworICAgICAgICAgICAgICAgICAgICBpZiAoKDYgLSBsYXN0UmVsRG93KSA+PSBnZXRNaW5pbWFsRGF5c0luRmlyc3RXZWVrKCkpIGxhc3REb3kgLT0gNzsKKyAgICAgICAgICAgICAgICAgICAgaW50IGxhc3RXb3kgPSB3ZWVrTnVtYmVyKGxhc3REb3ksIGxhc3RSZWxEb3cgKyAxKTsKKyAgICAgICAgICAgICAgICAgICAgd295ID0gKCh3b3kgKyBsYXN0V295IC0gMSkgJSBsYXN0V295KSArIDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHNldChXRUVLX09GX1lFQVIsIHdveSk7CisgICAgICAgICAgICAgICAgc2V0KFlFQVIsIGlzb1llYXIpOyAvLyBXaHkgbm90IFlFQVJfV09ZPyAtIEFsYW4gMTEvNi8wMAorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgc3VwZXIucm9sbChmaWVsZCwgYW1vdW50KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgbWluaW11bSB2YWx1ZSB0aGF0IHRoaXMgZmllbGQgY291bGQgaGF2ZSwgZ2l2ZW4gdGhlIGN1cnJlbnQgZGF0ZS4KKyAgICAgKiBGb3IgdGhlIEdyZWdvcmlhbiBjYWxlbmRhciwgdGhpcyBpcyB0aGUgc2FtZSBhcyBnZXRNaW5pbXVtKCkgYW5kIGdldEdyZWF0ZXN0TWluaW11bSgpLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0QWN0dWFsTWluaW11bShpbnQgZmllbGQpIHsKKyAgICAgICAgcmV0dXJuIGdldE1pbmltdW0oZmllbGQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgbWF4aW11bSB2YWx1ZSB0aGF0IHRoaXMgZmllbGQgY291bGQgaGF2ZSwgZ2l2ZW4gdGhlIGN1cnJlbnQgZGF0ZS4KKyAgICAgKiBGb3IgZXhhbXBsZSwgd2l0aCB0aGUgZGF0ZSAiRmViIDMsIDE5OTciIGFuZCB0aGUgREFZX09GX01PTlRIIGZpZWxkLCB0aGUgYWN0dWFsCisgICAgICogbWF4aW11bSB3b3VsZCBiZSAyODsgZm9yICJGZWIgMywgMTk5NiIgaXQgcyAyOS4gIFNpbWlsYXJseSBmb3IgYSBIZWJyZXcgY2FsZW5kYXIsCisgICAgICogZm9yIHNvbWUgeWVhcnMgdGhlIGFjdHVhbCBtYXhpbXVtIGZvciBNT05USCBpcyAxMiwgYW5kIGZvciBvdGhlcnMgMTMuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGludCBnZXRBY3R1YWxNYXhpbXVtKGludCBmaWVsZCkgeworICAgICAgICAvKiBJdCBpcyBhIGtub3duIGxpbWl0YXRpb24gdGhhdCB0aGUgY29kZSBoZXJlIChhbmQgaW4gZ2V0QWN0dWFsTWluaW11bSkKKyAgICAgICAgICogd29uJ3QgYmVoYXZlIHByb3Blcmx5IGF0IHRoZSBleHRyZW1lIGxpbWl0cyBvZiBHcmVnb3JpYW5DYWxlbmRhcidzCisgICAgICAgICAqIHJlcHJlc2VudGFibGUgcmFuZ2UgKGV4Y2VwdCBmb3IgdGhlIGNvZGUgdGhhdCBoYW5kbGVzIHRoZSBZRUFSCisgICAgICAgICAqIGZpZWxkKS4gIFRoYXQncyBiZWNhdXNlIHRoZSBlbmRzIG9mIHRoZSByZXByZXNlbnRhYmxlIHJhbmdlIGFyZSBhdAorICAgICAgICAgKiBvZGQgc3BvdHMgaW4gdGhlIHllYXIuICBGb3IgY2FsZW5kYXJzIHdpdGggdGhlIGRlZmF1bHQgR3JlZ29yaWFuCisgICAgICAgICAqIGN1dG92ZXIsIHRoZXNlIGxpbWl0cyBhcmUgU3VuIERlYyAwMiAxNjo0NzowNCBHTVQgMjkyMjY5MDU1IEJDIHRvIFN1bgorICAgICAgICAgKiBBdWcgMTcgMDc6MTI6NTUgR01UIDI5MjI3ODk5NCBBRCwgc29tZXdoYXQgZGlmZmVyZW50IGZvciBub24tR01UCisgICAgICAgICAqIHpvbmVzLiAgQXMgYSByZXN1bHQsIGlmIHRoZSBjYWxlbmRhciBpcyBzZXQgdG8gQXVnIDEgMjkyMjc4OTk0IEFELAorICAgICAgICAgKiB0aGUgYWN0dWFsIG1heGltdW0gb2YgREFZX09GX01PTlRIIGlzIDE3LCBub3QgMzAuICBJZiB0aGUgZGF0ZSBpcyBNYXIKKyAgICAgICAgICogMzEgaW4gdGhhdCB5ZWFyLCB0aGUgYWN0dWFsIG1heGltdW0gbW9udGggbWlnaHQgYmUgSnVsLCB3aGVyZWFzIGlzCisgICAgICAgICAqIHRoZSBkYXRlIGlzIE1hciAxNSwgdGhlIGFjdHVhbCBtYXhpbXVtIG1pZ2h0IGJlIEF1ZyAtLSBkZXBlbmRpbmcgb24KKyAgICAgICAgICogdGhlIHByZWNpc2Ugc2VtYW50aWNzIHRoYXQgYXJlIGRlc2lyZWQuICBTaW1pbGFyIGNvbnNpZGVyYXRpb25zCisgICAgICAgICAqIGFmZmVjdCBhbGwgZmllbGRzLiAgTm9uZXRoZWxlc3MsIHRoaXMgZWZmZWN0IGlzIHN1ZmZpY2llbnRseSBhcmNhbmUKKyAgICAgICAgICogdGhhdCB3ZSBwZXJtaXQgaXQsIHJhdGhlciB0aGFuIGNvbXBsaWNhdGluZyB0aGUgY29kZSB0byBoYW5kbGUgc3VjaAorICAgICAgICAgKiBpbnRyaWNhY2llcy4gLSBsaXUgOC8yMC85OAorCisgICAgICAgICAqIFVQREFURTogTm8gbG9uZ2VyIHRydWUsIHNpbmNlIHdlIGhhdmUgcHVsbGVkIGluIHRoZSBsaW1pdCB2YWx1ZXMgb24KKyAgICAgICAgICogdGhlIHllYXIuIC0gTGl1IDExLzYvMDAgKi8KKworICAgICAgICBzd2l0Y2ggKGZpZWxkKSB7CisKKyAgICAgICAgY2FzZSBZRUFSOgorICAgICAgICAgICAgLyogVGhlIHllYXIgY29tcHV0YXRpb24gaXMgbm8gZGlmZmVyZW50LCBpbiBwcmluY2lwbGUsIGZyb20gdGhlCisgICAgICAgICAgICAgKiBvdGhlcnMsIGhvd2V2ZXIsIHRoZSByYW5nZSBvZiBwb3NzaWJsZSBtYXhpbWEgaXMgbGFyZ2UuICBJbgorICAgICAgICAgICAgICogYWRkaXRpb24sIHRoZSB3YXkgd2Uga25vdyB3ZSd2ZSBleGNlZWRlZCB0aGUgcmFuZ2UgaXMgZGlmZmVyZW50LgorICAgICAgICAgICAgICogRm9yIHRoZXNlIHJlYXNvbnMsIHdlIHVzZSB0aGUgc3BlY2lhbCBjYXNlIGNvZGUgYmVsb3cgdG8gaGFuZGxlCisgICAgICAgICAgICAgKiB0aGlzIGZpZWxkLgorICAgICAgICAgICAgICoKKyAgICAgICAgICAgICAqIFRoZSBhY3R1YWwgbWF4aW1hIGZvciBZRUFSIGRlcGVuZCBvbiB0aGUgdHlwZSBvZiBjYWxlbmRhcjoKKyAgICAgICAgICAgICAqCisgICAgICAgICAgICAgKiAgICAgR3JlZ29yaWFuID0gTWF5IDE3LCAyOTIyNzUwNTYgQkMgLSBBdWcgMTcsIDI5MjI3ODk5NCBBRAorICAgICAgICAgICAgICogICAgIEp1bGlhbiAgICA9IERlYyAgMiwgMjkyMjY5MDU1IEJDIC0gSmFuICAzLCAyOTIyNzI5OTMgQUQKKyAgICAgICAgICAgICAqICAgICBIeWJyaWQgICAgPSBEZWMgIDIsIDI5MjI2OTA1NSBCQyAtIEF1ZyAxNywgMjkyMjc4OTk0IEFECisgICAgICAgICAgICAgKgorICAgICAgICAgICAgICogV2Uga25vdyB3ZSd2ZSBleGNlZWRlZCB0aGUgbWF4aW11bSB3aGVuIGVpdGhlciB0aGUgbW9udGgsIGRhdGUsCisgICAgICAgICAgICAgKiB0aW1lLCBvciBlcmEgY2hhbmdlcyBpbiByZXNwb25zZSB0byBzZXR0aW5nIHRoZSB5ZWFyLiAgV2UgZG9uJ3QKKyAgICAgICAgICAgICAqIGNoZWNrIGZvciBtb250aCwgZGF0ZSwgYW5kIHRpbWUgaGVyZSBiZWNhdXNlIHRoZSB5ZWFyIGFuZCBlcmEgYXJlCisgICAgICAgICAgICAgKiBzdWZmaWNpZW50IHRvIGRldGVjdCBhbiBpbnZhbGlkIHllYXIgc2V0dGluZy4gIE5PVEU6IElmIGNvZGUgaXMKKyAgICAgICAgICAgICAqIGFkZGVkIHRvIGNoZWNrIHRoZSBtb250aCBhbmQgZGF0ZSBpbiB0aGUgZnV0dXJlIGZvciBzb21lIHJlYXNvbiwKKyAgICAgICAgICAgICAqIEZlYiAyOSBtdXN0IGJlIGFsbG93ZWQgdG8gc2hpZnQgdG8gTWFyIDEgd2hlbiBzZXR0aW5nIHRoZSB5ZWFyLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQ2FsZW5kYXIgY2FsID0gKENhbGVuZGFyKSBjbG9uZSgpOworICAgICAgICAgICAgICAgIGNhbC5zZXRMZW5pZW50KHRydWUpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGludCBlcmEgPSBjYWwuZ2V0KEVSQSk7CisgICAgICAgICAgICAgICAgRGF0ZSBkID0gY2FsLmdldFRpbWUoKTsKKworICAgICAgICAgICAgICAgIC8qIFBlcmZvcm0gYSBiaW5hcnkgc2VhcmNoLCB3aXRoIHRoZSBpbnZhcmlhbnQgdGhhdCBsb3dHb29kIGlzIGEKKyAgICAgICAgICAgICAgICAgKiB2YWxpZCB5ZWFyLCBhbmQgaGlnaEJhZCBpcyBhbiBvdXQgb2YgcmFuZ2UgeWVhci4KKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBpbnQgbG93R29vZCA9IExJTUlUU1tZRUFSXVsxXTsKKyAgICAgICAgICAgICAgICBpbnQgaGlnaEJhZCA9IExJTUlUU1tZRUFSXVsyXSsxOworICAgICAgICAgICAgICAgIHdoaWxlICgobG93R29vZCArIDEpIDwgaGlnaEJhZCkgeworICAgICAgICAgICAgICAgICAgICBpbnQgeSA9IChsb3dHb29kICsgaGlnaEJhZCkgLyAyOworICAgICAgICAgICAgICAgICAgICBjYWwuc2V0KFlFQVIsIHkpOworICAgICAgICAgICAgICAgICAgICBpZiAoY2FsLmdldChZRUFSKSA9PSB5ICYmIGNhbC5nZXQoRVJBKSA9PSBlcmEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvd0dvb2QgPSB5OworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgaGlnaEJhZCA9IHk7CisgICAgICAgICAgICAgICAgICAgICAgICBjYWwuc2V0VGltZShkKTsgLy8gUmVzdG9yZSBvcmlnaW5hbCBmaWVsZHMKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICByZXR1cm4gbG93R29vZDsKKyAgICAgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmdldEFjdHVhbE1heGltdW0oZmllbGQpOworICAgICAgICB9CisgICAgfQorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBQcm9wb3NlZCBwdWJsaWMgQVBJCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgY3VycmVudCB0aW1lIGZvciB0aGlzIENhbGVuZGFyIGlzIGluIERheWxpZ250CisgICAgICogU2F2aW5ncyBUaW1lLgorICAgICAqCisgICAgICogTm90ZSAtLSBNQUtFIFRISVMgUFVCTElDIEFUIFRIRSBORVhUIEFQSSBDSEFOR0UuICBQT1NTSUJMWSBERVBSRUNBVEUKKyAgICAgKiBBTkQgUkVNT1ZFIFRpbWVab25lLmluRGF5bGlnaHRUaW1lKCkuCisgICAgICovCisgICAgYm9vbGVhbiBpbkRheWxpZ2h0VGltZSgpIHsKKyAgICAgICAgaWYgKCFnZXRUaW1lWm9uZSgpLnVzZURheWxpZ2h0VGltZSgpKSByZXR1cm4gZmFsc2U7CisgICAgICAgIGNvbXBsZXRlKCk7IC8vIEZvcmNlIHVwZGF0ZSBvZiBEU1RfT0ZGU0VUIGZpZWxkCisgICAgICAgIHJldHVybiBpbnRlcm5hbEdldChEU1RfT0ZGU0VUKSAhPSAwOworICAgIH0KKworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vIENhbGVuZGFyIGZyYW1ld29yaworLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKKyAgICAvKioKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgaW50IGhhbmRsZUdldE1vbnRoTGVuZ3RoKGludCBleHRlbmRlZFllYXIsIGludCBtb250aCkgeworICAgICAgICByZXR1cm4gTU9OVEhfQ09VTlRbbW9udGhdW2lzTGVhcFllYXIoZXh0ZW5kZWRZZWFyKT8xOjBdOworICAgIH0KKworICAgIC8qKgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHByb3RlY3RlZCBpbnQgaGFuZGxlR2V0WWVhckxlbmd0aChpbnQgZXllYXIpIHsKKyAgICAgICAgcmV0dXJuIGlzTGVhcFllYXIoZXllYXIpID8gMzY2IDogMzY1OworICAgIH0KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vIFRpbWUgPT4gRmllbGRzIGNvbXB1dGF0aW9uCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisgICAgLyoqCisgICAgICogT3ZlcnJpZGUgQ2FsZW5kYXIgdG8gY29tcHV0ZSBzZXZlcmFsIGZpZWxkcyBzcGVjaWZpYyB0byB0aGUgaHlicmlkCisgICAgICogR3JlZ29yaWFuLUp1bGlhbiBjYWxlbmRhciBzeXN0ZW0uICBUaGVzZSBhcmU6CisgICAgICoKKyAgICAgKiA8dWw+PGxpPkVSQQorICAgICAqIDxsaT5ZRUFSCisgICAgICogPGxpPk1PTlRICisgICAgICogPGxpPkRBWV9PRl9NT05USAorICAgICAqIDxsaT5EQVlfT0ZfWUVBUgorICAgICAqIDxsaT5FWFRFTkRFRF9ZRUFSPC91bD4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVDb21wdXRlRmllbGRzKGludCBqdWxpYW5EYXkpIHsKKyAgICAgICAgaW50IGV5ZWFyLCBtb250aCwgZGF5T2ZNb250aCwgZGF5T2ZZZWFyOworCisgICAgICAgIGlmIChqdWxpYW5EYXkgPj0gY3V0b3Zlckp1bGlhbkRheSkgeworICAgICAgICAgICAgbW9udGggPSBnZXRHcmVnb3JpYW5Nb250aCgpOworICAgICAgICAgICAgZGF5T2ZNb250aCA9IGdldEdyZWdvcmlhbkRheU9mTW9udGgoKTsKKyAgICAgICAgICAgIGRheU9mWWVhciA9IGdldEdyZWdvcmlhbkRheU9mWWVhcigpOworICAgICAgICAgICAgZXllYXIgPSBnZXRHcmVnb3JpYW5ZZWFyKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBUaGUgSnVsaWFuIGVwb2NoIGRheSAobm90IHRoZSBzYW1lIGFzIEp1bGlhbiBEYXkpCisgICAgICAgICAgICAvLyBpcyB6ZXJvIG9uIFNhdHVyZGF5IERlY2VtYmVyIDMwLCAwIChHcmVnb3JpYW4pLgorICAgICAgICAgICAgbG9uZyBqdWxpYW5FcG9jaERheSA9IGp1bGlhbkRheSAtIChKQU5fMV8xX0pVTElBTl9EQVkgLSAyKTsKKyAgICAgICAgICAgIGV5ZWFyID0gKGludCkgZmxvb3JEaXZpZGUoNCpqdWxpYW5FcG9jaERheSArIDE0NjQsIDE0NjEpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBDb21wdXRlIHRoZSBKdWxpYW4gY2FsZW5kYXIgZGF5IG51bWJlciBmb3IgSmFudWFyeSAxLCBleWVhcgorICAgICAgICAgICAgbG9uZyBqYW51YXJ5MSA9IDM2NSooZXllYXItMSkgKyBmbG9vckRpdmlkZShleWVhci0xLCA0KTsKKyAgICAgICAgICAgIGRheU9mWWVhciA9IChpbnQpKGp1bGlhbkVwb2NoRGF5IC0gamFudWFyeTEpOyAvLyAwLWJhc2VkCisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIEp1bGlhbiBsZWFwIHllYXJzIG9jY3VycmVkIGhpc3RvcmljYWxseSBldmVyeSA0IHllYXJzIHN0YXJ0aW5nCisgICAgICAgICAgICAvLyB3aXRoIDggQUQuICBCZWZvcmUgOCBBRCB0aGUgc3BhY2luZyBpcyBpcnJlZ3VsYXI7IGV2ZXJ5IDMgeWVhcnMKKyAgICAgICAgICAgIC8vIGZyb20gNDUgQkMgdG8gOSBCQywgYW5kIHRoZW4gbm9uZSB1bnRpbCA4IEFELiAgSG93ZXZlciwgd2UgZG9uJ3QKKyAgICAgICAgICAgIC8vIGltcGxlbWVudCB0aGlzIGhpc3RvcmljYWwgZGV0YWlsOyBpbnN0ZWFkLCB3ZSBpbXBsZW1lbnQgdGhlCisgICAgICAgICAgICAvLyBjb21wdXRhdGluYWxseSBjbGVhbmVyIHByb2xlcHRpYyBjYWxlbmRhciwgd2hpY2ggYXNzdW1lcworICAgICAgICAgICAgLy8gY29uc2lzdGVudCA0LXllYXIgY3ljbGVzIHRocm91Z2hvdXQgdGltZS4KKyAgICAgICAgICAgIGJvb2xlYW4gaXNMZWFwID0gKChleWVhciYweDMpID09IDApOyAvLyBlcXVpdi4gdG8gKGV5ZWFyJTQgPT0gMCkKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gQ29tbW9uIEp1bGlhbi9HcmVnb3JpYW4gY2FsY3VsYXRpb24KKyAgICAgICAgICAgIGludCBjb3JyZWN0aW9uID0gMDsKKyAgICAgICAgICAgIGludCBtYXJjaDEgPSBpc0xlYXAgPyA2MCA6IDU5OyAvLyB6ZXJvLWJhc2VkIERPWSBmb3IgTWFyY2ggMQorICAgICAgICAgICAgaWYgKGRheU9mWWVhciA+PSBtYXJjaDEpIHsKKyAgICAgICAgICAgICAgICBjb3JyZWN0aW9uID0gaXNMZWFwID8gMSA6IDI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtb250aCA9ICgxMiAqIChkYXlPZlllYXIgKyBjb3JyZWN0aW9uKSArIDYpIC8gMzY3OyAvLyB6ZXJvLWJhc2VkIG1vbnRoCisgICAgICAgICAgICBkYXlPZk1vbnRoID0gZGF5T2ZZZWFyIC0gTU9OVEhfQ09VTlRbbW9udGhdW2lzTGVhcD8zOjJdICsgMTsgLy8gb25lLWJhc2VkIERPTQorICAgICAgICAgICAgKytkYXlPZlllYXI7CisgICAgICAgIH0KKyAgICAgICAgaW50ZXJuYWxTZXQoTU9OVEgsIG1vbnRoKTsKKyAgICAgICAgaW50ZXJuYWxTZXQoREFZX09GX01PTlRILCBkYXlPZk1vbnRoKTsKKyAgICAgICAgaW50ZXJuYWxTZXQoREFZX09GX1lFQVIsIGRheU9mWWVhcik7CisgICAgICAgIGludGVybmFsU2V0KEVYVEVOREVEX1lFQVIsIGV5ZWFyKTsKKyAgICAgICAgaW50IGVyYSA9IEFEOworICAgICAgICBpZiAoZXllYXIgPCAxKSB7CisgICAgICAgICAgICBlcmEgPSBCQzsKKyAgICAgICAgICAgIGV5ZWFyID0gMSAtIGV5ZWFyOworICAgICAgICB9CisgICAgICAgIGludGVybmFsU2V0KEVSQSwgZXJhKTsKKyAgICAgICAgaW50ZXJuYWxTZXQoWUVBUiwgZXllYXIpOworICAgIH0KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vIEZpZWxkcyA9PiBUaW1lIGNvbXB1dGF0aW9uCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisgICAgLyoqCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHJvdGVjdGVkIGludCBoYW5kbGVHZXRFeHRlbmRlZFllYXIoKSB7CisgICAgICAgIGludCB5ZWFyOworICAgICAgICBpZiAobmV3ZXJGaWVsZChFWFRFTkRFRF9ZRUFSLCBZRUFSKSA9PSBFWFRFTkRFRF9ZRUFSKSB7CisgICAgICAgICAgICB5ZWFyID0gaW50ZXJuYWxHZXQoRVhURU5ERURfWUVBUiwgRVBPQ0hfWUVBUik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBUaGUgeWVhciBkZWZhdWx0cyB0byB0aGUgZXBvY2ggc3RhcnQsIHRoZSBlcmEgdG8gQUQKKyAgICAgICAgICAgIGludCBlcmEgPSBpbnRlcm5hbEdldChFUkEsIEFEKTsKKyAgICAgICAgICAgIGlmIChlcmEgPT0gQkMpIHsKKyAgICAgICAgICAgICAgICB5ZWFyID0gMSAtIGludGVybmFsR2V0KFlFQVIsIDEpOyAvLyBDb252ZXJ0IHRvIGV4dGVuZGVkIHllYXIKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgeWVhciA9IGludGVybmFsR2V0KFlFQVIsIEVQT0NIX1lFQVIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiB5ZWFyOworICAgIH0KKworICAgIC8qKgorICAgICAqIE92ZXJyaWRlIENhbGVuZGFyIHRvIGltcHJvdmUgcGVyZm9ybWFuY2UuICBUaGlzIG1ldGhvZCB0cmllcyB0byB1c2UKKyAgICAgKiB0aGUgRVhURU5ERURfWUVBUiwgTU9OVEgsIERBVEUsIGZpZWxkcyBpZiB0aGV5IGFyZSBzZXQsIGluc3RlYWQgb2YKKyAgICAgKiBjb21wdXRpbmcgdGhlbS4gIElmIHRoZXkgYXJlIG5vdCBzZXQsIHRoaXMgbWV0aG9kIGRlZmVycyB0byB0aGUKKyAgICAgKiBkZWZhdWx0IGltcGxlbWVuYXRpb24uCisgICAgICogQHBhcmFtIG1pbGxpcyBtaWxsaXNlY29uZHMgb2YgdGhlIGRhdGUgZmllbGRzCisgICAgICogQHBhcmFtIG1pbGxpc0luRGF5IG1pbGxpc2Vjb25kcyBvZiB0aGUgdGltZSBmaWVsZHM7IG1heSBiZSBvdXQKKyAgICAgKiBvciByYW5nZS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgaW50IGNvbXB1dGVab25lT2Zmc2V0KGxvbmcgbWlsbGlzLCBpbnQgbWlsbGlzSW5EYXkpIHsKKworICAgICAgICAvLyBOb3JtYWxpemUgdGhlIG1pbGxpc0luRGF5IHRvIDAuLk9ORV9EQVktMS4gIElmIHRoZSBtaWxsaXMgaXMgb3V0CisgICAgICAgIC8vIG9mIHJhbmdlLCB0aGVuIHdlIGRlZmVyIHRvIHRoZSBiYXNlIGNsYXNzIGltcGxlbWVudGF0aW9uIHdoaWNoCisgICAgICAgIC8vIHdpbGwgcmVjb21wdXRlIHRoZSBjb3JyZWN0IHZhbHVlcy4KKyAgICAgICAgaW50W10gbm9ybWFsaXplZE1pbGxpc0luRGF5ID0gbmV3IGludFsxXTsKKyAgICAgICAgaW50IGRheXMgPSBmbG9vckRpdmlkZShtaWxsaXMgKyBtaWxsaXNJbkRheSwgKGludCkgT05FX0RBWSwgbm9ybWFsaXplZE1pbGxpc0luRGF5KTsKKworICAgICAgICAvLyBXZSBuZWVkIHRvIGhhdmUgdGhlIG1vbnRoLCB0aGUgZGF5LCBhbmQgdGhlIGRheSBvZiB0aGUgd2Vlay4gIElmCisgICAgICAgIC8vIHRoZSBmaWVsZHMgYXJlIG5vdCBzZXQgb3IgaWYgd2UncmUgbGVuaWVudCAoc28gZmllbGRzIG1heSBiZSBvdXQKKyAgICAgICAgLy8gb2YgcmFuZ2UpIHRoZW4gd2UgZGVmZXIgdG8gdGhlIGJhc2UgY2xhc3Mgd2hpY2ggd2lsbCBub3JtYWxpemUKKyAgICAgICAgLy8gdGhlIHllYXIsIG1vbnRoLCBhbmQgZGF5IG9mIG1vbnRoLgorICAgICAgICBpZiAoaXNMZW5pZW50KCkgfHwgIWlzU2V0KE1PTlRIKSB8fCAhaXNTZXQoREFZX09GX01PTlRIKQorICAgICAgICAgICAgfHwgbWlsbGlzSW5EYXkgIT0gbm9ybWFsaXplZE1pbGxpc0luRGF5WzBdKSB7CisgICAgICAgICAgICByZXR1cm4gc3VwZXIuY29tcHV0ZVpvbmVPZmZzZXQobWlsbGlzLCBtaWxsaXNJbkRheSk7CisgICAgICAgIH0KKworICAgICAgICBpbnQganVsaWFuRGF5ID0gbWlsbGlzVG9KdWxpYW5EYXkoZGF5cyAqIE9ORV9EQVkpOworCisgICAgICAgIC8vIEl0J3MgdGVtcHRpbmcgdG8gdHJ5IHRvIHVzZSBEQVlfT0ZfV0VFSyBoZXJlLCBpZiBpdAorICAgICAgICAvLyBpcyBzZXQsIGJ1dCB3ZSBDQU4nVC4gIEV2ZW4gaWYgaXQncyBzZXQsIGl0IG1pZ2h0IGhhdmUKKyAgICAgICAgLy8gYmVlbiBzZXQgd3JvbmcgYnkgdGhlIHVzZXIuICBXZSBzaG91bGQgcmVseSBvbmx5IG9uCisgICAgICAgIC8vIHRoZSBKdWxpYW4gZGF5IG51bWJlciwgd2hpY2ggaGFzIGJlZW4gY29tcHV0ZWQgY29ycmVjdGx5CisgICAgICAgIC8vIHVzaW5nIHRoZSBkaXNhbWJpZ3VhdGlvbiBhbGdvcml0aG0gYWJvdmUuIFtMSVVdCisgICAgICAgIGludCB5ZWFyID0gaW50ZXJuYWxHZXQoRVhURU5ERURfWUVBUik7CisgICAgICAgIGludCBtb250aCA9IGludGVybmFsR2V0KE1PTlRIKTsKKyAgICAgICAgaW50IHByZXZpb3VzTW9udGhMZW5ndGggPSAobW9udGggPT0gMCkgPworICAgICAgICAgICAgMzEgOiBoYW5kbGVHZXRNb250aExlbmd0aCh5ZWFyLCBtb250aC0xKTsKKworICAgICAgICByZXR1cm4gZ2V0VGltZVpvbmUoKS5nZXRPZmZzZXQoeWVhciwgbW9udGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbEdldChEQVRFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1bGlhbkRheVRvRGF5T2ZXZWVrKGp1bGlhbkRheSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkTWlsbGlzSW5EYXlbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVHZXRNb250aExlbmd0aCh5ZWFyLCBtb250aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c01vbnRoTGVuZ3RoKTsKKworICAgICAgICAvLyBOb3RlOiBCZWNhdXNlIHdlIHBhc3MgaW4gd2FsbCBtaWxsaXNJbkRheSwgcmF0aGVyIHRoYW4KKyAgICAgICAgLy8gc3RhbmRhcmQgbWlsbGlzSW5EYXksIHdlIGludGVycHJldCAiMTowMCBhbSIgb24gdGhlIGRheQorICAgICAgICAvLyBvZiBjZXNzYXRpb24gb2YgRFNUIGFzICIxOjAwIGFtIFN0ZCIgKGFzc3VtaW5nIHRoZSB0aW1lCisgICAgICAgIC8vIG9mIGNlc3NhdGlvbiBpcyAyOjAwIGFtKS4KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgaW50IGhhbmRsZUNvbXB1dGVKdWxpYW5EYXkoaW50IGJlc3RGaWVsZCkgeworCisgICAgICAgIGludmVydEdyZWdvcmlhbiA9IGZhbHNlOworCisgICAgICAgIGludCBqZCA9IHN1cGVyLmhhbmRsZUNvbXB1dGVKdWxpYW5EYXkoYmVzdEZpZWxkKTsKKworICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGNoZWNrIGhhbmRsZXMgcG9ydGlvbnMgb2YgdGhlIGN1dG92ZXIgeWVhciBCRUZPUkUgdGhlCisgICAgICAgIC8vIGN1dG92ZXIgaXRzZWxmIGhhcHBlbnMuCisgICAgICAgIGlmIChpc0dyZWdvcmlhbiAhPSAoamQgPj0gY3V0b3Zlckp1bGlhbkRheSkpIHsKKyAgICAgICAgICAgIGludmVydEdyZWdvcmlhbiA9IHRydWU7CisgICAgICAgICAgICBqZCA9IHN1cGVyLmhhbmRsZUNvbXB1dGVKdWxpYW5EYXkoYmVzdEZpZWxkKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIGpkOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBKRCBvZiBzdGFydCBvZiBnaXZlbiBtb250aC95ZWFyCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHJvdGVjdGVkIGludCBoYW5kbGVDb21wdXRlTW9udGhTdGFydChpbnQgZXllYXIsIGludCBtb250aCwgYm9vbGVhbiB1c2VNb250aCkgeworCisgICAgICAgIC8vIElmIHRoZSBtb250aCBpcyBvdXQgb2YgcmFuZ2UsIGFkanVzdCBpdCBpbnRvIHJhbmdlLCBhbmQKKyAgICAgICAgLy8gbW9kaWZ5IHRoZSBleHRlbmRlZCB5ZWFyIHZhbHVlIGFjY29yZGluZ2x5LgorICAgICAgICBpZiAobW9udGggPCAwIHx8IG1vbnRoID4gMTEpIHsKKyAgICAgICAgICAgIGludFtdIHJlbSA9IG5ldyBpbnRbMV07CisgICAgICAgICAgICBleWVhciArPSBmbG9vckRpdmlkZShtb250aCwgMTIsIHJlbSk7CisgICAgICAgICAgICBtb250aCA9IHJlbVswXTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2xlYW4gaXNMZWFwID0gZXllYXIlNCA9PSAwOworICAgICAgICBpbnQgeSA9IGV5ZWFyIC0gMTsKKyAgICAgICAgaW50IGp1bGlhbkRheSA9IDM2NSp5ICsgZmxvb3JEaXZpZGUoeSwgNCkgKyAoSkFOXzFfMV9KVUxJQU5fREFZIC0gMyk7CisKKyAgICAgICAgaXNHcmVnb3JpYW4gPSAoZXllYXIgPj0gZ3JlZ29yaWFuQ3V0b3ZlclllYXIpOworICAgICAgICBpZiAoaW52ZXJ0R3JlZ29yaWFuKSB7CisgICAgICAgICAgICBpc0dyZWdvcmlhbiA9ICFpc0dyZWdvcmlhbjsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXNHcmVnb3JpYW4pIHsKKyAgICAgICAgICAgIGlzTGVhcCA9IGlzTGVhcCAmJiAoKGV5ZWFyJTEwMCAhPSAwKSB8fCAoZXllYXIlNDAwID09IDApKTsKKyAgICAgICAgICAgIC8vIEFkZCAyIGJlY2F1c2UgR3JlZ29yaWFuIGNhbGVuZGFyIHN0YXJ0cyAyIGRheXMgYWZ0ZXIKKyAgICAgICAgICAgIC8vIEp1bGlhbiBjYWxlbmRhcgorICAgICAgICAgICAganVsaWFuRGF5ICs9IGZsb29yRGl2aWRlKHksIDQwMCkgLSBmbG9vckRpdmlkZSh5LCAxMDApICsgMjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQganVsaWFuRGF5IGluZGljYXRlcyB0aGUgZGF5IEJFRk9SRSB0aGUgZmlyc3QKKyAgICAgICAgLy8gZGF5IG9mIEphbnVhcnkgMSwgPGV5ZWFyPiBvZiBlaXRoZXIgdGhlIEp1bGlhbiBvciBHcmVnb3JpYW4KKyAgICAgICAgLy8gY2FsZW5kYXIuCisKKyAgICAgICAgaWYgKG1vbnRoICE9IDApIHsKKyAgICAgICAgICAgIGp1bGlhbkRheSArPSBNT05USF9DT1VOVFttb250aF1baXNMZWFwPzM6Ml07CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4ganVsaWFuRGF5OworICAgIH0KKworICAgIC8qCisgICAgcHJpdmF0ZSBzdGF0aWMgQ2FsZW5kYXJGYWN0b3J5IGZhY3Rvcnk7CisgICAgcHVibGljIHN0YXRpYyBDYWxlbmRhckZhY3RvcnkgZmFjdG9yeSgpIHsKKyAgICAgICAgaWYgKGZhY3RvcnkgPT0gbnVsbCkgeworICAgICAgICAgICAgZmFjdG9yeSA9IG5ldyBDYWxlbmRhckZhY3RvcnkoKSB7CisgICAgICAgICAgICAgICAgcHVibGljIENhbGVuZGFyIGNyZWF0ZShUaW1lWm9uZSB0eiwgTG9jYWxlIGxvYykgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKHR6LCBsb2MpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHB1YmxpYyBTdHJpbmcgZmFjdG9yeU5hbWUoKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAiR3JlZ29yaWFuIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9OworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWN0b3J5OworICAgIH0KKyAgICAqLworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3V0aWwvSGVicmV3Q2FsZW5kYXIuamF2YSBiL3NyYy9jb20vaWJtL2ljdS91dGlsL0hlYnJld0NhbGVuZGFyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNDMyMTMyMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS91dGlsL0hlYnJld0NhbGVuZGFyLmphdmEKQEAgLTAsMCArMSw4NDYgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS91dGlsL0hlYnJld0NhbGVuZGFyLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMTIvMTggMTk6MzU6MDcgJCAKKyAqICRSZXZpc2lvbjogMS4xNCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5pY3UudXRpbDsKKworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CisKKy8qKgorICogPGNvZGU+SGVicmV3Q2FsZW5kYXI8L2NvZGU+IGlzIGEgc3ViY2xhc3Mgb2YgPGNvZGU+Q2FsZW5kYXI8L2NvZGU+CisgKiB0aGF0IHRoYXQgaW1wbGVtZW50cyB0aGUgdHJhZGl0aW9uYWwgSGVicmV3IGNhbGVuZGFyLgorICogVGhpcyBpcyB0aGUgY2l2aWwgY2FsZW5kYXIgaW4gSXNyYWVsIGFuZCB0aGUgbGl0dXJnaWNhbCBjYWxlbmRhcgorICogb2YgdGhlIEpld2lzaCBmYWl0aCB3b3JsZHdpZGUuCisgKiA8cD4KKyAqIFRoZSBIZWJyZXcgY2FsZW5kYXIgaXMgbHVuaXNvbGFyIGFuZCB0aHVzIGhhcyBhIG51bWJlciBvZiBpbnRlcmVzdGluZworICogcHJvcGVydGllcyB0aGF0IGRpc3Rpbmd1aXNoIGl0IGZyb20gdGhlIEdyZWdvcmlhbi4gIE1vbnRocyBzdGFydAorICogb24gdGhlIGRheSBvZiAoYW4gYXJpdGhtZXRpYyBhcHByb3hpbWF0aW9uIG9mKSBlYWNoIG5ldyBtb29uLiAgU2luY2UgdGhlCisgKiBzb2xhciB5ZWFyIChhcHByb3hpbWF0ZWx5IDM2NS4yNCBkYXlzKSBpcyBub3QgYW4gZXZlbiBtdWx0aXBsZSBvZgorICogdGhlIGx1bmFyIG1vbnRoIChhcHByb3hpbWF0ZWx5IDI5LjUzIGRheXMpIGFuIGV4dHJhICJsZWFwIG1vbnRoIiBpcworICogaW5zZXJ0ZWQgaW4gNyBvdXQgb2YgZXZlcnkgMTkgeWVhcnMuICBUbyBtYWtlIG1hdHRlcnMgZXZlbiBtb3JlCisgKiBpbnRlcmVzdGluZywgdGhlIHN0YXJ0IG9mIGEgeWVhciBjYW4gYmUgZGVsYXllZCBieSB1cCB0byB0aHJlZSBkYXlzCisgKiBpbiBvcmRlciB0byBwcmV2ZW50IGNlcnRhaW4gaG9saWRheXMgZnJvbSBmYWxsaW5nIG9uIHRoZSBTYWJiYXRoIGFuZAorICogdG8gcHJldmVudCBjZXJ0YWluIGlsbGVnYWwgeWVhciBsZW5ndGhzLiAgRmluYWxseSwgdGhlIGxlbmd0aHMgb2YgY2VydGFpbgorICogbW9udGhzIGNhbiB2YXJ5IGRlcGVuZGluZyBvbiB0aGUgbnVtYmVyIG9mIGRheXMgaW4gdGhlIHllYXIuCisgKiA8cD4KKyAqIFRoZSBsZWFwIG1vbnRoIGlzIGtub3duIGFzICJBZGFyIDEiIGFuZCBpcyBpbnNlcnRlZCBiZXR3ZWVuIHRoZQorICogbW9udGhzIG9mIFNoZXZhdCBhbmQgQWRhciBpbiBsZWFwIHllYXJzLiAgU2luY2UgdGhlIGxlYXAgbW9udGggZG9lcworICogbm90IGNvbWUgYXQgdGhlIGVuZCBvZiB0aGUgeWVhciwgY2FsY3VsYXRpb25zIGludm9sdmluZworICogbW9udGggbnVtYmVycyBhcmUgcGFydGljdWxhcmx5IGNvbXBsZXguICBVc2VycyBvZiB0aGlzIGNsYXNzIHNob3VsZAorICogbWFrZSBzdXJlIHRvIHVzZSB0aGUge0BsaW5rICNyb2xsIHJvbGx9IGFuZCB7QGxpbmsgI2FkZCBhZGR9IG1ldGhvZHMKKyAqIHJhdGhlciB0aGFuIGF0dGVtcHRpbmcgdG8gcGVyZm9ybSBkYXRlIGFyaXRobWV0aWMgYnkgbWFuaXB1bGF0aW5nCisgKiB0aGUgZmllbGRzIGRpcmVjdGx5LgorICogPHA+CisgKiA8Yj5Ob3RlOjwvYj4gSW4gdGhlIHRyYWRpdGlvbmFsIEhlYnJldyBjYWxlbmRhciwgZGF5cyBzdGFydCBhdCBzdW5zZXQuCisgKiBIb3dldmVyLCBpbiBvcmRlciB0byBrZWVwIHRoZSB0aW1lIGZpZWxkcyBpbiB0aGlzIGNsYXNzCisgKiBzeW5jaHJvbml6ZWQgd2l0aCB0aG9zZSBvZiB0aGUgb3RoZXIgY2FsZW5kYXJzIGFuZCB3aXRoIGxvY2FsIGNsb2NrIHRpbWUsCisgKiB3ZSB0cmVhdCBkYXlzIGFuZCBtb250aHMgYXMgYmVnaW5uaW5nIGF0IG1pZG5pZ2h0LAorICogcm91Z2hseSA2IGhvdXJzIGFmdGVyIHRoZSBjb3JyZXNwb25kaW5nIHN1bnNldC4KKyAqIDxwPgorICogSWYgeW91IGFyZSBpbnRlcmVzdGVkIGluIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIHJ1bGVzIGJlaGluZCB0aGUgSGVicmV3CisgKiBjYWxlbmRhciwgc2VlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHJlZmVyZW5jZXM6CisgKiA8dWw+CisgKiA8bGk+IjxhIGhyZWY9Imh0dHA6Ly93d3cuYW1hem9uLmNvbS9leGVjL29iaWRvcy9BU0lOLzA1MjE1NjQ3NDMiPkNhbGVuZHJpY2FsIENhbGN1bGF0aW9uczwvYT4iLAorICogICAgICBieSBOYWNodW0gRGVyc2hvd2l0eiAmIEVkd2FyZCBSZWluZ29sZCwgQ2FtYnJpZGdlIFVuaXZlcnNpdHkgUHJlc3MsIDE5OTcsIHBhZ2VzIDg1LTkxLgorICoKKyAqIDxsaT5IZWJyZXcgQ2FsZW5kYXIgU2NpZW5jZSBhbmQgTXl0aHMsCisgKiAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ2VvY2l0aWVzLmNvbS9BdGhlbnMvMTU4NC8iPgorICogICAgICBodHRwOi8vd3d3Lmdlb2NpdGllcy5jb20vQXRoZW5zLzE1ODQvPC9hPgorICoKKyAqIDxsaT5UaGUgQ2FsZW5kYXIgRkFRLAorICogICAgICA8YSBocmVmPSJodHRwOi8vd3d3LnBpcC5ka25ldC5kay9+cGlwMTAxNjAvY2FsZW5kYXIuaHRtbCI+CisgKiAgICAgIGh0dHA6Ly93d3cucGlwLmRrbmV0LmRrL35waXAxMDE2MC9jYWxlbmRhci5odG1sPC9hPgorICogPC91bD4KKyAqIDxwPgorICogQHNlZSBjb20uaWJtLmljdS51dGlsLkdyZWdvcmlhbkNhbGVuZGFyCisgKgorICogQGF1dGhvciBMYXVyYSBXZXJuZXIKKyAqIEBhdXRob3IgQWxhbiBMaXUKKyAqIEBkcmFmdCBJQ1UgMi40CisgKi8KK3B1YmxpYyBjbGFzcyBIZWJyZXdDYWxlbmRhciBleHRlbmRzIENhbGVuZGFyIHsKKworICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBjb3B5cmlnaHQgPSAiQ29weXJpZ2h0IFx1MDBhOSAxOTk3LTE5OTggSUJNIENvcnAuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuIjsKKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIFRvbnMgbycgQ29uc3RhbnRzLi4uCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworICAgIC8qKiAKKyAgICAgKiBDb25zdGFudCBmb3IgVGlzaHJpLCB0aGUgMXN0IG1vbnRoIG9mIHRoZSBIZWJyZXcgeWVhci4gCisgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVElTSFJJID0gMDsKKworICAgIC8qKgorICAgICAqIENvbnN0YW50IGZvciBIZXNodmFuLCB0aGUgMm5kIG1vbnRoIG9mIHRoZSBIZWJyZXcgeWVhci4gCisgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSEVTSFZBTiA9IDE7CisKKyAgICAvKioKKyAgICAgKiBDb25zdGFudCBmb3IgS2lzbGV2LCB0aGUgM3JkIG1vbnRoIG9mIHRoZSBIZWJyZXcgeWVhci4gCisgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgS0lTTEVWID0gMjsKKworICAgIC8qKgorICAgICAqIENvbnN0YW50IGZvciBUZXZldCwgdGhlIDR0aCBtb250aCBvZiB0aGUgSGVicmV3IHllYXIuIAorICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFRFVkVUID0gMzsKKworICAgIC8qKgorICAgICAqIENvbnN0YW50IGZvciBTaGV2YXQsIHRoZSA1dGggbW9udGggb2YgdGhlIEhlYnJldyB5ZWFyLiAKKyAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTSEVWQVQgPSA0OworCisgICAgLyoqCisgICAgICogQ29uc3RhbnQgZm9yIEFkYXIgSSwgdGhlIDZ0aCBtb250aCBvZiB0aGUgSGVicmV3IHllYXIKKyAgICAgKiAocHJlc2VudCBpbiBsZWFwIHllYXJzIG9ubHkpLiBJbiBub24tbGVhcCB5ZWFycywgdGhlIGNhbGVuZGFyCisgICAgICoganVtcHMgZnJvbSBTaGV2YXQgKDV0aCBtb250aCkgdG8gQWRhciAoN3RoIG1vbnRoKS4KKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFEQVJfMSA9IDU7CisKKyAgICAvKiogCisgICAgICogQ29uc3RhbnQgZm9yIHRoZSBBZGFyLCB0aGUgN3RoIG1vbnRoIG9mIHRoZSBIZWJyZXcgeWVhci4gCisgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQURBUiA9IDY7CisKKyAgICAvKioKKyAgICAgKiBDb25zdGFudCBmb3IgTmlzYW4sIHRoZSA4dGggbW9udGggb2YgdGhlIEhlYnJldyB5ZWFyLiAKKyAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBOSVNBTiA9IDc7CisKKyAgICAvKioKKyAgICAgKiBDb25zdGFudCBmb3IgSXlhciwgdGhlIDl0aCBtb250aCBvZiB0aGUgSGVicmV3IHllYXIuIAorICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IElZQVIgPSA4OworCisgICAgLyoqCisgICAgICogQ29uc3RhbnQgZm9yIFNpdmFuLCB0aGUgMTB0aCBtb250aCBvZiB0aGUgSGVicmV3IHllYXIuIAorICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNJVkFOID0gOTsKKworICAgIC8qKgorICAgICAqIENvbnN0YW50IGZvciBUYW1tdXosIHRoZSAxMXRoIG1vbnRoIG9mIHRoZSBIZWJyZXcgeWVhci4gCisgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVEFNVVogPSAxMDsKKworICAgIC8qKgorICAgICAqIENvbnN0YW50IGZvciBBdiwgdGhlIDEydGggbW9udGggb2YgdGhlIEhlYnJldyB5ZWFyLiAKKyAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBViA9IDExOworCisgICAgLyoqCisgICAgICogQ29uc3RhbnQgZm9yIEVsdWwsIHRoZSAxM3RoIG1vbnRoIG9mIHRoZSBIZWJyZXcgeWVhci4gCisgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRUxVTCA9IDEyOworCisgICAgLyoqCisgICAgICogVGhlIGFic29sdXRlIGRhdGUsIGluIG1pbGxpc2Vjb25kcyBzaW5jZSAxLzEvMTk3MCBBRCwgR3JlZ29yaWFuLAorICAgICAqIG9mIHRoZSBzdGFydCBvZiB0aGUgSGVicmV3IGNhbGVuZGFyLiAgSW4gb3JkZXIgdG8ga2VlcCB0aGlzIGNhbGVuZGFyJ3MKKyAgICAgKiB0aW1lIG9mIGRheSBpbiBzeW5jIHdpdGggdGhhdCBvZiB0aGUgR3JlZ29yaWFuIGNhbGVuZGFyLCB3ZSB1c2UKKyAgICAgKiBtaWRuaWdodCwgcmF0aGVyIHRoYW4gc3Vuc2V0IHRoZSBkYXkgYmVmb3JlLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgRVBPQ0hfTUlMTElTID0gLTE4MDc5OTg2MjQwMDAwMEw7IC8vIDEvMS8xIEhZCisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTElNSVRTW11bXSA9IHsKKyAgICAgICAgLy8gTWluaW11bSAgR3JlYXRlc3QgICAgTGVhc3QgIE1heGltdW0KKyAgICAgICAgLy8gICAgICAgICAgIE1pbmltdW0gIE1heGltdW0KKyAgICAgICAgeyAgICAgICAgMCwgICAgICAgIDAsICAgICAgIDAsICAgICAgIDAgfSwgLy8gRVJBCisgICAgICAgIHsgICAgICAgIDEsICAgICAgICAxLCA1MDAwMDAwLCA1MDAwMDAwIH0sIC8vIFlFQVIKKyAgICAgICAgeyAgICAgICAgMCwgICAgICAgIDAsICAgICAgMTIsICAgICAgMTIgfSwgLy8gTU9OVEgKKyAgICAgICAgeyAgICAgICAgMSwgICAgICAgIDEsICAgICAgNTEsICAgICAgNTYgfSwgLy8gV0VFS19PRl9ZRUFSCisgICAgICAgIHsgICAgICAgIDAsICAgICAgICAwLCAgICAgICA1LCAgICAgICA2IH0sIC8vIFdFRUtfT0ZfTU9OVEgKKyAgICAgICAgeyAgICAgICAgMSwgICAgICAgIDEsICAgICAgMjksICAgICAgMzAgfSwgLy8gREFZX09GX01PTlRICisgICAgICAgIHsgICAgICAgIDEsICAgICAgICAxLCAgICAgMzUzLCAgICAgMzg1IH0sIC8vIERBWV9PRl9ZRUFSCisgICAgICAgIHsvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL30sIC8vIERBWV9PRl9XRUVLCisgICAgICAgIHsgICAgICAgLTEsICAgICAgIC0xLCAgICAgICA0LCAgICAgICA2IH0sIC8vIERBWV9PRl9XRUVLX0lOX01PTlRICisgICAgICAgIHsvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL30sIC8vIEFNX1BNCisgICAgICAgIHsvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL30sIC8vIEhPVVIKKyAgICAgICAgey8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovfSwgLy8gSE9VUl9PRl9EQVkKKyAgICAgICAgey8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovfSwgLy8gTUlOVVRFCisgICAgICAgIHsvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL30sIC8vIFNFQ09ORAorICAgICAgICB7LyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi99LCAvLyBNSUxMSVNFQ09ORAorICAgICAgICB7LyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi99LCAvLyBaT05FX09GRlNFVAorICAgICAgICB7LyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi99LCAvLyBEU1RfT0ZGU0VUCisgICAgICAgIHsgLTUwMDAwMDEsIC01MDAwMDAxLCA1MDAwMDAxLCA1MDAwMDAxIH0sIC8vIFlFQVJfV09ZCisgICAgICAgIHsvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL30sIC8vIERPV19MT0NBTAorICAgICAgICB7IC01MDAwMDAwLCAtNTAwMDAwMCwgNTAwMDAwMCwgNTAwMDAwMCB9LCAvLyBFWFRFTkRFRF9ZRUFSCisgICAgICAgIHsvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL30sIC8vIEpVTElBTl9EQVkKKyAgICAgICAgey8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovfSwgLy8gTUlMTElTRUNPTkRTX0lOX0RBWQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBUaGUgbGVuZ3RocyBvZiB0aGUgSGVicmV3IG1vbnRocy4gIFRoaXMgaXMgY29tcGxpY2F0ZWQsIGJlY2F1c2UgdGhlcmUKKyAgICAgKiBhcmUgdGhyZWUgZGlmZmVyZW50IHR5cGVzIG9mIHllYXJzLCBvciBzaXggaWYgeW91IGNvdW50IGxlYXAgeWVhcnMuCisgICAgICogRHVlIHRvIHRoZSBydWxlcyBmb3IgcG9zdHBvbmluZyB0aGUgc3RhcnQgb2YgdGhlIHllYXIgdG8gYXZvaWQgaGF2aW5nCisgICAgICogY2VydGFpbiBob2xpZGF5cyBmYWxsIG9uIHRoZSBzYWJiYXRoLCB0aGUgeWVhciBjYW4gZW5kIHVwIGJlaW5nIHRocmVlCisgICAgICogZGlmZmVyZW50IGxlbmd0aHMsIGNhbGxlZCAiZGVmaWNpZW50IiwgIm5vcm1hbCIsIGFuZCAiY29tcGxldGUiLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNT05USF9MRU5HVEhbXVtdID0geworICAgICAgICAvLyBEZWZpY2llbnQgIE5vcm1hbCAgICAgQ29tcGxldGUKKyAgICAgICAgeyAgIDMwLCAgICAgICAgIDMwLCAgICAgICAgIDMwICAgICB9LCAgICAgICAgICAgLy9UaXNocmkKKyAgICAgICAgeyAgIDI5LCAgICAgICAgIDI5LCAgICAgICAgIDMwICAgICB9LCAgICAgICAgICAgLy9IZXNodmFuCisgICAgICAgIHsgICAyOSwgICAgICAgICAzMCwgICAgICAgICAzMCAgICAgfSwgICAgICAgICAgIC8vS2lzbGV2CisgICAgICAgIHsgICAyOSwgICAgICAgICAyOSwgICAgICAgICAyOSAgICAgfSwgICAgICAgICAgIC8vVGV2ZXQKKyAgICAgICAgeyAgIDMwLCAgICAgICAgIDMwLCAgICAgICAgIDMwICAgICB9LCAgICAgICAgICAgLy9TaGV2YXQKKyAgICAgICAgeyAgIDMwLCAgICAgICAgIDMwLCAgICAgICAgIDMwICAgICB9LCAgICAgICAgICAgLy9BZGFyIEkgKGxlYXAgeWVhcnMgb25seSkKKyAgICAgICAgeyAgIDI5LCAgICAgICAgIDI5LCAgICAgICAgIDI5ICAgICB9LCAgICAgICAgICAgLy9BZGFyCisgICAgICAgIHsgICAzMCwgICAgICAgICAzMCwgICAgICAgICAzMCAgICAgfSwgICAgICAgICAgIC8vTmlzYW4KKyAgICAgICAgeyAgIDI5LCAgICAgICAgIDI5LCAgICAgICAgIDI5ICAgICB9LCAgICAgICAgICAgLy9JeWFyCisgICAgICAgIHsgICAzMCwgICAgICAgICAzMCwgICAgICAgICAzMCAgICAgfSwgICAgICAgICAgIC8vU2l2YW4KKyAgICAgICAgeyAgIDI5LCAgICAgICAgIDI5LCAgICAgICAgIDI5ICAgICB9LCAgICAgICAgICAgLy9UYW1tdXoKKyAgICAgICAgeyAgIDMwLCAgICAgICAgIDMwLCAgICAgICAgIDMwICAgICB9LCAgICAgICAgICAgLy9BdgorICAgICAgICB7ICAgMjksICAgICAgICAgMjksICAgICAgICAgMjkgICAgIH0sICAgICAgICAgICAvL0VsdWwKKyAgICB9OworCisgICAgLyoqCisgICAgICogVGhlIGN1bXVsYXRpdmUgIyBvZiBkYXlzIHRvIHRoZSBlbmQgb2YgZWFjaCBtb250aCBpbiBhIG5vbi1sZWFwIHllYXIKKyAgICAgKiBBbHRob3VnaCB0aGlzIGNhbiBiZSBjYWxjdWxhdGVkIGZyb20gdGhlIE1PTlRIX0xFTkdUSCB0YWJsZSwKKyAgICAgKiBrZWVwaW5nIGl0IGFyb3VuZCBzZXBhcmF0ZWx5IG1ha2VzIHNvbWUgY2FsY3VsYXRpb25zIGEgbG90IGZhc3RlcgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNT05USF9TVEFSVFtdW10gPSB7CisgICAgICAgIC8vIERlZmljaWVudCAgTm9ybWFsICAgICBDb21wbGV0ZQorICAgICAgICB7ICAgIDAsICAgICAgICAgIDAsICAgICAgICAgIDAgIH0sICAgICAgICAgIC8vIChwbGFjZWhvbGRlcikKKyAgICAgICAgeyAgIDMwLCAgICAgICAgIDMwLCAgICAgICAgIDMwICB9LCAgICAgICAgICAvLyBUaXNocmkKKyAgICAgICAgeyAgIDU5LCAgICAgICAgIDU5LCAgICAgICAgIDYwICB9LCAgICAgICAgICAvLyBIZXNodmFuCisgICAgICAgIHsgICA4OCwgICAgICAgICA4OSwgICAgICAgICA5MCAgfSwgICAgICAgICAgLy8gS2lzbGV2CisgICAgICAgIHsgIDExNywgICAgICAgIDExOCwgICAgICAgIDExOSAgfSwgICAgICAgICAgLy8gVGV2ZXQKKyAgICAgICAgeyAgMTQ3LCAgICAgICAgMTQ4LCAgICAgICAgMTQ5ICB9LCAgICAgICAgICAvLyBTaGV2YXQKKyAgICAgICAgeyAgMTQ3LCAgICAgICAgMTQ4LCAgICAgICAgMTQ5ICB9LCAgICAgICAgICAvLyAoQWRhciBJKQorICAgICAgICB7ICAxNzYsICAgICAgICAxNzcsICAgICAgICAxNzggIH0sICAgICAgICAgIC8vIEFkYXIKKyAgICAgICAgeyAgMjA2LCAgICAgICAgMjA3LCAgICAgICAgMjA4ICB9LCAgICAgICAgICAvLyBOaXNhbgorICAgICAgICB7ICAyMzUsICAgICAgICAyMzYsICAgICAgICAyMzcgIH0sICAgICAgICAgIC8vIEl5YXIKKyAgICAgICAgeyAgMjY1LCAgICAgICAgMjY2LCAgICAgICAgMjY3ICB9LCAgICAgICAgICAvLyBTaXZhbgorICAgICAgICB7ICAyOTQsICAgICAgICAyOTUsICAgICAgICAyOTYgIH0sICAgICAgICAgIC8vIFRhbW11egorICAgICAgICB7ICAzMjQsICAgICAgICAzMjUsICAgICAgICAzMjYgIH0sICAgICAgICAgIC8vIEF2CisgICAgICAgIHsgIDM1MywgICAgICAgIDM1NCwgICAgICAgIDM1NSAgfSwgICAgICAgICAgLy8gRWx1bAorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBUaGUgY3VtdWxhdGl2ZSAjIG9mIGRheXMgdG8gdGhlIGVuZCBvZiBlYWNoIG1vbnRoIGluIGEgbGVhcCB5ZWFyCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExFQVBfTU9OVEhfU1RBUlRbXVtdID0geworICAgICAgICAvLyBEZWZpY2llbnQgIE5vcm1hbCAgICAgQ29tcGxldGUKKyAgICAgICAgeyAgICAwLCAgICAgICAgICAwLCAgICAgICAgICAwICB9LCAgICAgICAgICAvLyAocGxhY2Vob2xkZXIpCisgICAgICAgIHsgICAzMCwgICAgICAgICAzMCwgICAgICAgICAzMCAgfSwgICAgICAgICAgLy8gVGlzaHJpCisgICAgICAgIHsgICA1OSwgICAgICAgICA1OSwgICAgICAgICA2MCAgfSwgICAgICAgICAgLy8gSGVzaHZhbgorICAgICAgICB7ICAgODgsICAgICAgICAgODksICAgICAgICAgOTAgIH0sICAgICAgICAgIC8vIEtpc2xldgorICAgICAgICB7ICAxMTcsICAgICAgICAxMTgsICAgICAgICAxMTkgIH0sICAgICAgICAgIC8vIFRldmV0CisgICAgICAgIHsgIDE0NywgICAgICAgIDE0OCwgICAgICAgIDE0OSAgfSwgICAgICAgICAgLy8gU2hldmF0CisgICAgICAgIHsgIDE3NywgICAgICAgIDE3OCwgICAgICAgIDE3OSAgfSwgICAgICAgICAgLy8gQWRhciBJCisgICAgICAgIHsgIDIwNiwgICAgICAgIDIwNywgICAgICAgIDIwOCAgfSwgICAgICAgICAgLy8gQWRhciBJSQorICAgICAgICB7ICAyMzYsICAgICAgICAyMzcsICAgICAgICAyMzggIH0sICAgICAgICAgIC8vIE5pc2FuCisgICAgICAgIHsgIDI2NSwgICAgICAgIDI2NiwgICAgICAgIDI2NyAgfSwgICAgICAgICAgLy8gSXlhcgorICAgICAgICB7ICAyOTUsICAgICAgICAyOTYsICAgICAgICAyOTcgIH0sICAgICAgICAgIC8vIFNpdmFuCisgICAgICAgIHsgIDMyNCwgICAgICAgIDMyNSwgICAgICAgIDMyNiAgfSwgICAgICAgICAgLy8gVGFtbXV6CisgICAgICAgIHsgIDM1NCwgICAgICAgIDM1NSwgICAgICAgIDM1NiAgfSwgICAgICAgICAgLy8gQXYKKyAgICAgICAgeyAgMzgzLCAgICAgICAgMzg0LCAgICAgICAgMzg1ICB9LCAgICAgICAgICAvLyBFbHVsCisgICAgfTsKKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIERhdGEgTWVtYmVycy4uLgorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgcHJpdmF0ZSBzdGF0aWMgQ2FsZW5kYXJDYWNoZSBjYWNoZSA9IG5ldyBDYWxlbmRhckNhY2hlKCk7CisgICAgCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gQ29uc3RydWN0b3JzLi4uCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgZGVmYXVsdCA8Y29kZT5IZWJyZXdDYWxlbmRhcjwvY29kZT4gdXNpbmcgdGhlIGN1cnJlbnQgdGltZQorICAgICAqIGluIHRoZSBkZWZhdWx0IHRpbWUgem9uZSB3aXRoIHRoZSBkZWZhdWx0IGxvY2FsZS4KKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBIZWJyZXdDYWxlbmRhcigpIHsKKyAgICAgICAgdGhpcyhUaW1lWm9uZS5nZXREZWZhdWx0KCksIExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSA8Y29kZT5IZWJyZXdDYWxlbmRhcjwvY29kZT4gYmFzZWQgb24gdGhlIGN1cnJlbnQgdGltZQorICAgICAqIGluIHRoZSBnaXZlbiB0aW1lIHpvbmUgd2l0aCB0aGUgZGVmYXVsdCBsb2NhbGUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gem9uZSBUaGUgdGltZSB6b25lIGZvciB0aGUgbmV3IGNhbGVuZGFyLgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIEhlYnJld0NhbGVuZGFyKFRpbWVab25lIHpvbmUpIHsKKyAgICAgICAgdGhpcyh6b25lLCBMb2NhbGUuZ2V0RGVmYXVsdCgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgPGNvZGU+SGVicmV3Q2FsZW5kYXI8L2NvZGU+IGJhc2VkIG9uIHRoZSBjdXJyZW50IHRpbWUKKyAgICAgKiBpbiB0aGUgZGVmYXVsdCB0aW1lIHpvbmUgd2l0aCB0aGUgZ2l2ZW4gbG9jYWxlLgorICAgICAqCisgICAgICogQHBhcmFtIGFMb2NhbGUgVGhlIGxvY2FsZSBmb3IgdGhlIG5ldyBjYWxlbmRhci4KKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBIZWJyZXdDYWxlbmRhcihMb2NhbGUgYUxvY2FsZSkgeworICAgICAgICB0aGlzKFRpbWVab25lLmdldERlZmF1bHQoKSwgYUxvY2FsZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIDxjb2RlPkhlYnJld0NhbGVuZGFyPC9jb2RlPiBiYXNlZCBvbiB0aGUgY3VycmVudCB0aW1lCisgICAgICogaW4gdGhlIGdpdmVuIHRpbWUgem9uZSB3aXRoIHRoZSBnaXZlbiBsb2NhbGUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gem9uZSBUaGUgdGltZSB6b25lIGZvciB0aGUgbmV3IGNhbGVuZGFyLgorICAgICAqCisgICAgICogQHBhcmFtIGFMb2NhbGUgVGhlIGxvY2FsZSBmb3IgdGhlIG5ldyBjYWxlbmRhci4KKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBIZWJyZXdDYWxlbmRhcihUaW1lWm9uZSB6b25lLCBMb2NhbGUgYUxvY2FsZSkgeworICAgICAgICBzdXBlcih6b25lLCBhTG9jYWxlKTsKKyAgICAgICAgc2V0VGltZUluTWlsbGlzKFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgPGNvZGU+SGVicmV3Q2FsZW5kYXI8L2NvZGU+IHdpdGggdGhlIGdpdmVuIGRhdGUgc2V0CisgICAgICogaW4gdGhlIGRlZmF1bHQgdGltZSB6b25lIHdpdGggdGhlIGRlZmF1bHQgbG9jYWxlLgorICAgICAqCisgICAgICogQHBhcmFtIHllYXIgICAgICBUaGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIGNhbGVuZGFyJ3Mge0BsaW5rICNZRUFSIFlFQVJ9IHRpbWUgZmllbGQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gbW9udGggICAgIFRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgY2FsZW5kYXIncyB7QGxpbmsgI01PTlRIIE1PTlRIfSB0aW1lIGZpZWxkLgorICAgICAqICAgICAgICAgICAgICAgICAgVGhlIHZhbHVlIGlzIDAtYmFzZWQuIGUuZy4sIDAgZm9yIFRpc2hyaS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBkYXRlICAgICAgVGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSBjYWxlbmRhcidzIHtAbGluayAjREFURSBEQVRFfSB0aW1lIGZpZWxkLgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIEhlYnJld0NhbGVuZGFyKGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXRlKSB7CisgICAgICAgIHN1cGVyKFRpbWVab25lLmdldERlZmF1bHQoKSwgTG9jYWxlLmdldERlZmF1bHQoKSk7CisgICAgICAgIHRoaXMuc2V0KFlFQVIsIHllYXIpOworICAgICAgICB0aGlzLnNldChNT05USCwgbW9udGgpOworICAgICAgICB0aGlzLnNldChEQVRFLCBkYXRlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgPGNvZGU+SGVicmV3Q2FsZW5kYXI8L2NvZGU+IHdpdGggdGhlIGdpdmVuIGRhdGUgc2V0CisgICAgICogaW4gdGhlIGRlZmF1bHQgdGltZSB6b25lIHdpdGggdGhlIGRlZmF1bHQgbG9jYWxlLgorICAgICAqCisgICAgICogQHBhcmFtIGRhdGUgICAgICBUaGUgZGF0ZSB0byB3aGljaCB0aGUgbmV3IGNhbGVuZGFyIGlzIHNldC4KKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBIZWJyZXdDYWxlbmRhcihEYXRlIGRhdGUpIHsKKyAgICAgICAgc3VwZXIoVGltZVpvbmUuZ2V0RGVmYXVsdCgpLCBMb2NhbGUuZ2V0RGVmYXVsdCgpKTsKKyAgICAgICAgdGhpcy5zZXRUaW1lKGRhdGUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSA8Y29kZT5IZWJyZXdDYWxlbmRhcjwvY29kZT4gd2l0aCB0aGUgZ2l2ZW4gZGF0ZQorICAgICAqIGFuZCB0aW1lIHNldCBmb3IgdGhlIGRlZmF1bHQgdGltZSB6b25lIHdpdGggdGhlIGRlZmF1bHQgbG9jYWxlLgorICAgICAqCisgICAgICogQHBhcmFtIHllYXIgICAgICBUaGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIGNhbGVuZGFyJ3Mge0BsaW5rICNZRUFSIFlFQVJ9IHRpbWUgZmllbGQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gbW9udGggICAgIFRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgY2FsZW5kYXIncyB7QGxpbmsgI01PTlRIIE1PTlRIfSB0aW1lIGZpZWxkLgorICAgICAqICAgICAgICAgICAgICAgICAgVGhlIHZhbHVlIGlzIDAtYmFzZWQuIGUuZy4sIDAgZm9yIFRpc2hyaS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBkYXRlICAgICAgVGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSBjYWxlbmRhcidzIHtAbGluayAjREFURSBEQVRFfSB0aW1lIGZpZWxkLgorICAgICAqCisgICAgICogQHBhcmFtIGhvdXIgICAgICBUaGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIGNhbGVuZGFyJ3Mge0BsaW5rICNIT1VSX09GX0RBWSBIT1VSX09GX0RBWX0gdGltZSBmaWVsZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBtaW51dGUgICAgVGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSBjYWxlbmRhcidzIHtAbGluayAjTUlOVVRFIE1JTlVURX0gdGltZSBmaWVsZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzZWNvbmQgICAgVGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSBjYWxlbmRhcidzIHtAbGluayAjU0VDT05EIFNFQ09ORH0gdGltZSBmaWVsZC4KKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBIZWJyZXdDYWxlbmRhcihpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF0ZSwgaW50IGhvdXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtaW51dGUsIGludCBzZWNvbmQpCisgICAgeworICAgICAgICBzdXBlcihUaW1lWm9uZS5nZXREZWZhdWx0KCksIExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgICAgICB0aGlzLnNldChZRUFSLCB5ZWFyKTsKKyAgICAgICAgdGhpcy5zZXQoTU9OVEgsIG1vbnRoKTsKKyAgICAgICAgdGhpcy5zZXQoREFURSwgZGF0ZSk7CisgICAgICAgIHRoaXMuc2V0KEhPVVJfT0ZfREFZLCBob3VyKTsKKyAgICAgICAgdGhpcy5zZXQoTUlOVVRFLCBtaW51dGUpOworICAgICAgICB0aGlzLnNldChTRUNPTkQsIHNlY29uZCk7CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gUm9sbGluZyBhbmQgYWRkaW5nIGZ1bmN0aW9ucyBvdmVycmlkZGVuIGZyb20gQ2FsZW5kYXIKKyAgICAvLworICAgIC8vIFRoZXNlIG1ldGhvZHMgY2FsbCB0aHJvdWdoIHRvIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGluIElCTUNhbGVuZGFyCisgICAgLy8gZm9yIG1vc3Qgb2YgdGhlIGZpZWxkcyBhbmQgb25seSBoYW5kbGUgdGhlIHVudXN1YWwgb25lcyB0aGVtc2VsdmVzLgorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogQWRkIGEgc2lnbmVkIGFtb3VudCB0byBhIHNwZWNpZmllZCBmaWVsZCwgdXNpbmcgdGhpcyBjYWxlbmRhcidzIHJ1bGVzLgorICAgICAqIEZvciBleGFtcGxlLCB0byBhZGQgdGhyZWUgZGF5cyB0byB0aGUgY3VycmVudCBkYXRlLCB5b3UgY2FuIGNhbGwKKyAgICAgKiA8Y29kZT5hZGQoQ2FsZW5kYXIuREFURSwgMyk8L2NvZGU+LiAKKyAgICAgKiA8cD4KKyAgICAgKiBXaGVuIGFkZGluZyB0byBjZXJ0YWluIGZpZWxkcywgdGhlIHZhbHVlcyBvZiBvdGhlciBmaWVsZHMgbWF5IGNvbmZsaWN0IGFuZAorICAgICAqIG5lZWQgdG8gYmUgY2hhbmdlZC4gIEZvciBleGFtcGxlLCB3aGVuIGFkZGluZyBvbmUgdG8gdGhlIHtAbGluayAjTU9OVEggTU9OVEh9IGZpZWxkCisgICAgICogZm9yIHRoZSBkYXRlICIzMCBBdiA1NzU4IiwgdGhlIHtAbGluayAjREFZX09GX01PTlRIIERBWV9PRl9NT05USH0gZmllbGQKKyAgICAgKiBtdXN0IGJlIGFkanVzdGVkIHNvIHRoYXQgdGhlIHJlc3VsdCBpcyAiMjkgRWx1bCA1NzU4IiByYXRoZXIgdGhhbiB0aGUgaW52YWxpZAorICAgICAqICIzMCBFbHVsIDU3NTgiLgorICAgICAqIDxwPgorICAgICAqIFRoaXMgbWV0aG9kIGlzIGFibGUgdG8gYWRkIHRvCisgICAgICogYWxsIGZpZWxkcyBleGNlcHQgZm9yIHtAbGluayAjRVJBIEVSQX0sIHtAbGluayAjRFNUX09GRlNFVCBEU1RfT0ZGU0VUfSwKKyAgICAgKiBhbmQge0BsaW5rICNaT05FX09GRlNFVCBaT05FX09GRlNFVH0uCisgICAgICogPHA+CisgICAgICogPGI+Tm90ZTo8L2I+IFlvdSBzaG91bGQgYWx3YXlzIHVzZSB7QGxpbmsgI3JvbGwgcm9sbH0gYW5kIGFkZCByYXRoZXIKKyAgICAgKiB0aGFuIGF0dGVtcHRpbmcgdG8gcGVyZm9ybSBhcml0aG1ldGljIG9wZXJhdGlvbnMgZGlyZWN0bHkgb24gdGhlIGZpZWxkcworICAgICAqIG9mIGEgPHR0PkhlYnJld0NhbGVuZGFyPC90dD4uICBTaW5jZSB0aGUge0BsaW5rICNNT05USCBNT05USH0gZmllbGQgYmVoYXZlcworICAgICAqIGRpc2NvbnRpbnVvdXNseSBpbiBub24tbGVhcCB5ZWFycywgc2ltcGxlIGFyaXRobWV0aWMgY2FuIGdpdmUgaW52YWxpZCByZXN1bHRzLgorICAgICAqIDxwPgorICAgICAqIEBwYXJhbSBmaWVsZCAgICAgdGhlIHRpbWUgZmllbGQuCisgICAgICogQHBhcmFtIGFtb3VudCAgICB0aGUgYW1vdW50IHRvIGFkZCB0byB0aGUgZmllbGQuCisgICAgICoKKyAgICAgKiBAZXhjZXB0aW9uICAgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBmaWVsZCBpcyBpbnZhbGlkIG9yIHJlZmVycworICAgICAqICAgICAgICAgICAgICB0byBhIGZpZWxkIHRoYXQgY2Fubm90IGJlIGhhbmRsZWQgYnkgdGhpcyBtZXRob2QuCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBhZGQoaW50IGZpZWxkLCBpbnQgYW1vdW50KQorICAgIHsKKyAgICAgICAgc3dpdGNoIChmaWVsZCkgeworICAgICAgICBjYXNlIE1PTlRIOiAKKyAgICAgICAgICAgIHsKKy8vfiAgICAgICAgICAgICAvLyBUaGlzIHNlZW1zIGxpa2UgYSBnb29kIGlkZWEgYnV0IGl0IGlzbid0IHdvcmtpbmcgOiggLSBBbGFuCisKKy8vfiAgICAgICAgICAgICAvLyBNT05USCBpcyB0cmlja3ksIGJlY2F1c2UgdGhlIG51bWJlciBvZiBtb250aHMgcGVyIHllYXIgdmFyaWVzCisvL34gICAgICAgICAgICAgLy8gSXQncyBlYXNpZXN0IHRvIGp1c3QgY29udmVydCB0byBhbiBhYnNvbHV0ZSAjIG9mIG1vbnRocworLy9+ICAgICAgICAgICAgIC8vIHNpbmNlIHRoZSBlcG9jaCwgZG8gdGhlIGFkZGl0aW9uLCBhbmQgY29udmVydCBiYWNrLgorLy9+ICAgICAgICAgICAgIGludCBtb250aCA9ICgyMzUgKiBnZXQoWUVBUikgLSAyMzQpIC8gMTkgKyBnZXQoTU9OVEgpOworLy9+ICAgICAgICAgICAgIG1vbnRoICs9IGFtb3VudDsKKworLy9+ICAgICAgICAgICAgIC8vIE5vdyBjb252ZXJ0IGJhY2sgdG8geWVhciBhbmQgbW9udGggdmFsdWVzCisvL34gICAgICAgICAgICAgaW50IHllYXIgPSAoMTkgKiBtb250aCArIDIzNCkgLyAyMzU7CisvL34gICAgICAgICAgICAgbW9udGggLT0gKDIzNSAqIHllYXIgLSAyMzQpIC8gMTk7CisvL34gICAgICAgICAgICAgCisvL34gICAgICAgICAgICAgLy8gSW4gYSBub24tbGVhcCB5ZWFyLCBtb250aHMgYWZ0ZXIgdGhlIChtaXNzaW5nKSBsZWFwIG1vbnRoCisvL34gICAgICAgICAgICAgLy8gbXVzdCBiZSBidW1wZWQgdXAgYnkgb25lLgorLy9+ICAgICAgICAgICAgIC8vIFRPRE86IGJ1dCBvbmx5IGlmIHdlIHN0YXJ0ZWQgYmVmb3JlIHRoZSBsZWFwIG1vbnRoCisvL34gICAgICAgICAgICAgaWYgKG1vbnRoID49IEFEQVJfMSAmJiAhaXNMZWFwWWVhcih5ZWFyKSkgeworLy9+ICAgICAgICAgICAgICAgICBtb250aCsrOworLy9+ICAgICAgICAgICAgIH0KKy8vfiAgICAgICAgICAgICBzZXQoWUVBUiwgeWVhcik7CisvL34gICAgICAgICAgICAgc2V0KE1PTlRILCBtb250aCk7CisvL34gICAgICAgICAgICAgcGluRmllbGQoREFZX09GX01PTlRIKTsKKworICAgICAgICAgICAgICAgIC8vIFdlIGNhbid0IGp1c3QgZG8gYSBzZXQoTU9OVEgsIGdldChNT05USCkgKyBhbW91bnQpLiAgVGhlCisgICAgICAgICAgICAgICAgLy8gcmVhc29uIGlzIEFEQVJfMS4gIFN1cHBvc2UgYW1vdW50IGlzICsyIGFuZCB3ZSBsYW5kIGluCisgICAgICAgICAgICAgICAgLy8gQURBUl8xIC0tIHRoZW4gd2UgaGF2ZSB0byBidW1wIHRvIEFEQVJfMiBha2EgQURBUi4gIEJ1dAorICAgICAgICAgICAgICAgIC8vIGlmIGFtb3VudCBpcyAtMiBhbmQgd2UgbGFuZCBpbiBBREFSXzEsIHRoZW4gd2UgaGF2ZSB0bworICAgICAgICAgICAgICAgIC8vIGJ1bXAgdGhlIG90aGVyIHdheSAtLSBkb3duIHRvIFNIRVZBVC4gIC0gQWxhbiAxMS8wMAorICAgICAgICAgICAgICAgIGludCBtb250aCA9IGdldChNT05USCk7CisgICAgICAgICAgICAgICAgaW50IHllYXIgPSBnZXQoWUVBUik7CisgICAgICAgICAgICAgICAgLy9wdWJsaWMgc3RhdGljIGZpbmFsIGludCBTSEVWQVQgPSA0OworICAgICAgICAgICAgICAgIC8vcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQURBUl8xID0gNTsKKyAgICAgICAgICAgICAgICAvL3B1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFEQVIgPSA2OworICAgICAgICAgICAgICAgIGlmIChhbW91bnQgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlIChhbW91bnQtLSA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrbW9udGg7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9udGggPT0gQURBUl8xICYmICFpc0xlYXBZZWFyKHllYXIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyttb250aDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtb250aCA+IEVMVUwpIHsgLy8gTGFzdCBtb250aCBvZiB5ZWFyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGggPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICsreWVhcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlIChhbW91bnQrKyA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC0tbW9udGg7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9udGggPT0gQURBUl8xICYmICFpc0xlYXBZZWFyKHllYXIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1tb250aDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtb250aCA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb250aCA9IEVMVUw7IC8vIExhc3QgbW9udGggb2YgeWVhcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0teWVhcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzZXQoTU9OVEgsIG1vbnRoKTsKKyAgICAgICAgICAgICAgICBzZXQoWUVBUiwgeWVhcik7CisgICAgICAgICAgICAgICAgcGluRmllbGQoREFZX09GX01PTlRIKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgc3VwZXIuYWRkKGZpZWxkLCBhbW91bnQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSb2xscyAodXAvZG93bikgYSBzcGVjaWZpZWQgYW1vdW50IHRpbWUgb24gdGhlIGdpdmVuIGZpZWxkLiAgRm9yCisgICAgICogZXhhbXBsZSwgdG8gcm9sbCB0aGUgY3VycmVudCBkYXRlIHVwIGJ5IHRocmVlIGRheXMsIHlvdSBjYW4gY2FsbAorICAgICAqIDxjb2RlPnJvbGwoQ2FsZW5kYXIuREFURSwgMyk8L2NvZGU+LiAgSWYgdGhlCisgICAgICogZmllbGQgaXMgcm9sbGVkIHBhc3QgaXRzIG1heGltdW0gYWxsb3dhYmxlIHZhbHVlLCBpdCB3aWxsICJ3cmFwIiBiYWNrCisgICAgICogdG8gaXRzIG1pbmltdW0gYW5kIGNvbnRpbnVlIHJvbGxpbmcuICAKKyAgICAgKiBGb3IgZXhhbXBsZSwgY2FsbGluZyA8Y29kZT5yb2xsKENhbGVuZGFyLkRBVEUsIDEwKTwvY29kZT4KKyAgICAgKiBvbiBhIEhlYnJldyBjYWxlbmRhciBzZXQgdG8gIjI1IEF2IDU3NTgiIHdpbGwgcmVzdWx0IGluIHRoZSBkYXRlICI1IEF2IDU3NTgiLgorICAgICAqIDxwPgorICAgICAqIFdoZW4gcm9sbGluZyBjZXJ0YWluIGZpZWxkcywgdGhlIHZhbHVlcyBvZiBvdGhlciBmaWVsZHMgbWF5IGNvbmZsaWN0IGFuZAorICAgICAqIG5lZWQgdG8gYmUgY2hhbmdlZC4gIEZvciBleGFtcGxlLCB3aGVuIHJvbGxpbmcgdGhlIHtAbGluayAjTU9OVEggTU9OVEh9IGZpZWxkCisgICAgICogdXB3YXJkIGJ5IG9uZSBmb3IgdGhlIGRhdGUgIjMwIEF2IDU3NTgiLCB0aGUge0BsaW5rICNEQVlfT0ZfTU9OVEggREFZX09GX01PTlRIfSBmaWVsZAorICAgICAqIG11c3QgYmUgYWRqdXN0ZWQgc28gdGhhdCB0aGUgcmVzdWx0IGlzICIyOSBFbHVsIDU3NTgiIHJhdGhlciB0aGFuIHRoZSBpbnZhbGlkCisgICAgICogIjMwIEVsdWwiLgorICAgICAqIDxwPgorICAgICAqIFRoaXMgbWV0aG9kIGlzIGFibGUgdG8gcm9sbAorICAgICAqIGFsbCBmaWVsZHMgZXhjZXB0IGZvciB7QGxpbmsgI0VSQSBFUkF9LCB7QGxpbmsgI0RTVF9PRkZTRVQgRFNUX09GRlNFVH0sCisgICAgICogYW5kIHtAbGluayAjWk9ORV9PRkZTRVQgWk9ORV9PRkZTRVR9LiAgU3ViY2xhc3NlcyBtYXksIG9mIGNvdXJzZSwgYWRkIHN1cHBvcnQgZm9yCisgICAgICogYWRkaXRpb25hbCBmaWVsZHMgaW4gdGhlaXIgb3ZlcnJpZGVzIG9mIDxjb2RlPnJvbGw8L2NvZGU+LgorICAgICAqIDxwPgorICAgICAqIDxiPk5vdGU6PC9iPiBZb3Ugc2hvdWxkIGFsd2F5cyB1c2Ugcm9sbCBhbmQge0BsaW5rICNhZGQgYWRkfSByYXRoZXIKKyAgICAgKiB0aGFuIGF0dGVtcHRpbmcgdG8gcGVyZm9ybSBhcml0aG1ldGljIG9wZXJhdGlvbnMgZGlyZWN0bHkgb24gdGhlIGZpZWxkcworICAgICAqIG9mIGEgPHR0PkhlYnJld0NhbGVuZGFyPC90dD4uICBTaW5jZSB0aGUge0BsaW5rICNNT05USCBNT05USH0gZmllbGQgYmVoYXZlcworICAgICAqIGRpc2NvbnRpbnVvdXNseSBpbiBub24tbGVhcCB5ZWFycywgc2ltcGxlIGFyaXRobWV0aWMgY2FuIGdpdmUgaW52YWxpZCByZXN1bHRzLgorICAgICAqIDxwPgorICAgICAqIEBwYXJhbSBmaWVsZCAgICAgdGhlIHRpbWUgZmllbGQuCisgICAgICogQHBhcmFtIGFtb3VudCAgICB0aGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBmaWVsZCBzaG91bGQgYmUgcm9sbGVkLgorICAgICAqCisgICAgICogQGV4Y2VwdGlvbiAgIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgZmllbGQgaXMgaW52YWxpZCBvciByZWZlcnMKKyAgICAgKiAgICAgICAgICAgICAgdG8gYSBmaWVsZCB0aGF0IGNhbm5vdCBiZSBoYW5kbGVkIGJ5IHRoaXMgbWV0aG9kLgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIHZvaWQgcm9sbChpbnQgZmllbGQsIGludCBhbW91bnQpCisgICAgeworICAgICAgICBzd2l0Y2ggKGZpZWxkKSB7CisgICAgICAgIGNhc2UgTU9OVEg6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaW50IG1vbnRoID0gZ2V0KE1PTlRIKTsKKyAgICAgICAgICAgICAgICBpbnQgeWVhciA9IGdldChZRUFSKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBib29sZWFuIGxlYXBZZWFyID0gaXNMZWFwWWVhcih5ZWFyKTsKKyAgICAgICAgICAgICAgICBpbnQgeWVhckxlbmd0aCA9IG1vbnRoc0luWWVhcih5ZWFyKTsKKyAgICAgICAgICAgICAgICBpbnQgbmV3TW9udGggPSBtb250aCArIChhbW91bnQgJSB5ZWFyTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAvLworICAgICAgICAgICAgICAgIC8vIElmIGl0J3Mgbm90IGEgbGVhcCB5ZWFyIGFuZCB3ZSdyZSByb2xsaW5nIHBhc3QgdGhlIG1pc3NpbmcgbW9udGgKKyAgICAgICAgICAgICAgICAvLyBvZiBBREFSXzEsIHdlIG5lZWQgdG8gcm9sbCBhbiBleHRyYSBtb250aCB0byBtYWtlIHVwIGZvciBpdC4KKyAgICAgICAgICAgICAgICAvLworICAgICAgICAgICAgICAgIGlmICghbGVhcFllYXIpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFtb3VudCA+IDAgJiYgbW9udGggPCBBREFSXzEgJiYgbmV3TW9udGggPj0gQURBUl8xKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXdNb250aCsrOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGFtb3VudCA8IDAgJiYgbW9udGggPiBBREFSXzEgJiYgbmV3TW9udGggPD0gQURBUl8xKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXdNb250aC0tOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHNldChNT05USCwgKG5ld01vbnRoICsgMTMpICUgMTMpOworICAgICAgICAgICAgICAgIHBpbkZpZWxkKERBWV9PRl9NT05USCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgc3VwZXIucm9sbChmaWVsZCwgYW1vdW50KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIFN1cHBvcnQgbWV0aG9kcworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLy8gSGVicmV3IGRhdGUgY2FsY3VsYXRpb25zIGFyZSBwZXJmb3JtZWQgaW4gdGVybXMgb2YgZGF5cywgaG91cnMsIGFuZAorICAgIC8vICJwYXJ0cyIgKG9yIGhhbGFraW0pLCB3aGljaCBhcmUgMS8xMDgwIG9mIGFuIGhvdXIsIG9yIDMgMS8zIHNlY29uZHMuCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBIT1VSX1BBUlRTID0gMTA4MDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIERBWV9QQVJUUyAgPSAyNCpIT1VSX1BBUlRTOworICAgIAorICAgIC8vIEFuIGFwcHJveGltYXRlIHZhbHVlIGZvciB0aGUgbGVuZ3RoIG9mIGEgbHVuYXIgbW9udGguCisgICAgLy8gSXQgaXMgdXNlZCB0byBjYWxjdWxhdGUgdGhlIGFwcHJveGltYXRlIHllYXIgYW5kIG1vbnRoIG9mIGEgZ2l2ZW4KKyAgICAvLyBhYnNvbHV0ZSBkYXRlLgorICAgIHN0YXRpYyBwcml2YXRlIGZpbmFsIGludCAgTU9OVEhfREFZUyA9IDI5OworICAgIHN0YXRpYyBwcml2YXRlIGZpbmFsIGxvbmcgTU9OVEhfRlJBQ1QgPSAxMipIT1VSX1BBUlRTICsgNzkzOworICAgIHN0YXRpYyBwcml2YXRlIGZpbmFsIGxvbmcgTU9OVEhfUEFSVFMgPSBNT05USF9EQVlTKkRBWV9QQVJUUyArIE1PTlRIX0ZSQUNUOworICAgIAorICAgIC8vIFRoZSB0aW1lIG9mIHRoZSBuZXcgbW9vbiAoaW4gcGFydHMpIG9uIDEgVGlzaHJpLCB5ZWFyIDEgKHRoZSBlcG9jaCkKKyAgICAvLyBjb3VudGluZyBmcm9tIG5vb24gb24gdGhlIGRheSBiZWZvcmUuICBCQUhBUkFEIGlzIGFuIGFiYnJldmlhdGlvbiBvZgorICAgIC8vIEJldCAoTW9uZGF5KSwgSGV5ICg1IGhvdXJzIGZyb20gc3Vuc2V0KSwgUmVzaC1EYWxlZCAoMjA0KS4KKyAgICBzdGF0aWMgcHJpdmF0ZSBmaW5hbCBsb25nIEJBSEFSQUQgPSAxMSpIT1VSX1BBUlRTICsgMjA0OworCisgICAgLyoqCisgICAgICogRmluZHMgdGhlIGRheSAjIG9mIHRoZSBmaXJzdCBkYXkgaW4gdGhlIGdpdmVuIEhlYnJldyB5ZWFyLgorICAgICAqIFRvIGRvIHRoaXMsIHdlIHdhbnQgdG8gY2FsY3VsYXRlIHRoZSB0aW1lIG9mIHRoZSBUaXNocmkgMSBuZXcgbW9vbgorICAgICAqIGluIHRoYXQgeWVhci4KKyAgICAgKiA8cD4KKyAgICAgKiBUaGUgYWxnb3JpdGhtIGhlcmUgaXMgc2ltaWxhciB0byBvbmVzIGRlc2NyaWJlZCBpbiBhIG51bWJlciBvZgorICAgICAqIHJlZmVyZW5jZXMsIGluY2x1ZGluZzoKKyAgICAgKiA8dWw+CisgICAgICogPGxpPiJDYWxlbmRyaWNhbCBDYWxjdWxhdGlvbnMiLCBieSBOYWNodW0gRGVyc2hvd2l0eiAmIEVkd2FyZCBSZWluZ29sZCwKKyAgICAgKiAgICAgQ2FtYnJpZGdlIFVuaXZlcnNpdHkgUHJlc3MsIDE5OTcsIHBhZ2VzIDg1LTkxLgorICAgICAqCisgICAgICogPGxpPkhlYnJldyBDYWxlbmRhciBTY2llbmNlIGFuZCBNeXRocywKKyAgICAgKiAgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5nZW9jaXRpZXMuY29tL0F0aGVucy8xNTg0LyI+CisgICAgICogICAgIGh0dHA6Ly93d3cuZ2VvY2l0aWVzLmNvbS9BdGhlbnMvMTU4NC88L2E+CisgICAgICoKKyAgICAgKiA8bGk+VGhlIENhbGVuZGFyIEZBUSwKKyAgICAgKiAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cucGlwLmRrbmV0LmRrL35waXAxMDE2MC9jYWxlbmRhci5mYXEyLnR4dCI+CisgICAgICogICAgICBodHRwOi8vd3d3LnBpcC5ka25ldC5kay9+cGlwMTAxNjAvY2FsZW5kYXIuaHRtbDwvYT4KKyAgICAgKiA8L3VsPgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGxvbmcgc3RhcnRPZlllYXIoaW50IHllYXIpCisgICAgeworICAgICAgICBsb25nIGRheSA9IGNhY2hlLmdldCh5ZWFyKTsKKyAgICAgICAgCisgICAgICAgIGlmIChkYXkgPT0gQ2FsZW5kYXJDYWNoZS5FTVBUWSkgeworICAgICAgICAgICAgaW50IG1vbnRocyA9ICgyMzUgKiB5ZWFyIC0gMjM0KSAvIDE5OyAgICAgICAgICAgLy8gIyBvZiBtb250aHMgYmVmb3JlIHllYXIKKworICAgICAgICAgICAgbG9uZyBmcmFjID0gbW9udGhzICogTU9OVEhfRlJBQ1QgKyBCQUhBUkFEOyAgICAgLy8gRnJhY3Rpb25hbCBwYXJ0IG9mIGRheSAjCisgICAgICAgICAgICBkYXkgID0gbW9udGhzICogMjkgKyAoZnJhYyAvIERBWV9QQVJUUyk7ICAgLy8gV2hvbGUgIyBwYXJ0IG9mIGNhbGN1bGF0aW9uCisgICAgICAgICAgICBmcmFjID0gZnJhYyAlIERBWV9QQVJUUzsgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaW1lIG9mIGRheQorCisgICAgICAgICAgICBpbnQgd2QgPSAoaW50KShkYXkgJSA3KTsgICAgICAgICAgICAgICAgICAgICAgICAvLyBEYXkgb2Ygd2VlayAoMCA9PSBNb25kYXkpCisKKyAgICAgICAgICAgIGlmICh3ZCA9PSAyIHx8IHdkID09IDQgfHwgd2QgPT0gNikgeworICAgICAgICAgICAgICAgIC8vIElmIHRoZSAxc3QgaXMgb24gU3VuLCBXZWQsIG9yIEZyaSwgcG9zdHBvbmUgdG8gdGhlIG5leHQgZGF5CisgICAgICAgICAgICAgICAgZGF5ICs9IDE7CisgICAgICAgICAgICAgICAgd2QgPSAoaW50KShkYXkgJSA3KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh3ZCA9PSAxICYmIGZyYWMgPiAxNSpIT1VSX1BBUlRTKzIwNCAmJiAhaXNMZWFwWWVhcih5ZWFyKSApIHsKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGUgbmV3IG1vb24gZmFsbHMgYWZ0ZXIgMzoxMToyMGFtICgxNWgyMDRwIGZyb20gdGhlIHByZXZpb3VzIG5vb24pCisgICAgICAgICAgICAgICAgLy8gb24gYSBUdWVzZGF5IGFuZCBpdCBpcyBub3QgYSBsZWFwIHllYXIsIHBvc3Rwb25lIGJ5IDIgZGF5cy4KKyAgICAgICAgICAgICAgICAvLyBUaGlzIHByZXZlbnRzIDM1Ni1kYXkgeWVhcnMuCisgICAgICAgICAgICAgICAgZGF5ICs9IDI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmICh3ZCA9PSAwICYmIGZyYWMgPiAyMSpIT1VSX1BBUlRTKzU4OSAmJiBpc0xlYXBZZWFyKHllYXItMSkgKSB7CisgICAgICAgICAgICAgICAgLy8gSWYgdGhlIG5ldyBtb29uIGZhbGxzIGFmdGVyIDk6MzI6NDMgMS8zYW0gKDIxaDU4OXAgZnJvbSB5ZXN0ZXJkYXkgbm9vbikKKyAgICAgICAgICAgICAgICAvLyBvbiBhIE1vbmRheSBhbmQgKmxhc3QqIHllYXIgd2FzIGEgbGVhcCB5ZWFyLCBwb3N0cG9uZSBieSAxIGRheS4KKyAgICAgICAgICAgICAgICAvLyBQcmV2ZW50cyAzODItZGF5IHllYXJzLgorICAgICAgICAgICAgICAgIGRheSArPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FjaGUucHV0KHllYXIsIGRheSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGRheTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBGaW5kIHRoZSBkYXkgb2YgdGhlIHdlZWsgZm9yIGEgZ2l2ZW4gZGF5CisgICAgICoKKyAgICAgKiBAcGFyYW0gZGF5ICAgVGhlICMgb2YgZGF5cyBzaW5jZSB0aGUgc3RhcnQgb2YgdGhlIEhlYnJldyBjYWxlbmRhciwKKyAgICAgKiAgICAgICAgICAgICAgMS1iYXNlZCAoaS5lLiAxLzEvMSBBTSBpcyBkYXkgMSkuCisgICAgICovCisgICAgLy8vQ0xPVkVSOk9GRgorICAgIHByaXZhdGUgc3RhdGljIGludCBhYnNvbHV0ZURheVRvRGF5T2ZXZWVrKGxvbmcgZGF5KQorICAgIHsKKyAgICAgICAgLy8gV2Uga25vdyB0aGF0IDEvMS8xIEFNIGlzIGEgTW9uZGF5LCB3aGljaCBtYWtlcyB0aGUgbWF0aCBlYXN5Li4uCisgICAgICAgIHJldHVybiAoaW50KShkYXkgJSA3KSArIDE7CisgICAgfQorICAgIC8vL0NMT1ZFUjpPTgorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgdGhlIHR5cGUgb2YgYSBnaXZlbiB5ZWFyLgorICAgICAqICAwICAgIkRlZmljaWVudCIgeWVhciB3aXRoIDM1MyBvciAzODMgZGF5cworICAgICAqICAxICAgIk5vcm1hbCIgICAgeWVhciB3aXRoIDM1NCBvciAzODQgZGF5cworICAgICAqICAyICAgIkNvbXBsZXRlIiAgeWVhciB3aXRoIDM1NSBvciAzODUgZGF5cworICAgICAqLworICAgIHByaXZhdGUgZmluYWwgaW50IHllYXJUeXBlKGludCB5ZWFyKQorICAgIHsKKyAgICAgICAgaW50IHllYXJMZW5ndGggPSBoYW5kbGVHZXRZZWFyTGVuZ3RoKHllYXIpOworCisgICAgICAgIGlmICh5ZWFyTGVuZ3RoID4gMzgwKSB7CisgICAgICAgICAgIHllYXJMZW5ndGggLT0gMzA7ICAgICAgICAvLyBTdWJ0cmFjdCBsZW5ndGggb2YgbGVhcCBtb250aC4KKyAgICAgICAgfQorCisgICAgICAgIGludCB0eXBlID0gMDsKKworICAgICAgICBzd2l0Y2ggKHllYXJMZW5ndGgpIHsKKyAgICAgICAgICAgIGNhc2UgMzUzOgorICAgICAgICAgICAgICAgIHR5cGUgPSAwOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMzU0OgorICAgICAgICAgICAgICAgIHR5cGUgPSAxOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMzU1OgorICAgICAgICAgICAgICAgIHR5cGUgPSAyOyBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJJbGxlZ2FsIHllYXIgbGVuZ3RoICIgKyB5ZWFyTGVuZ3RoICsgIiBpbiB5ZWFyVHlwZSIpOworCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHR5cGU7CisgICAgfQorCisgICAgLyoqCisgICAgICogRGV0ZXJtaW5lIHdoZXRoZXIgYSBnaXZlbiBIZWJyZXcgeWVhciBpcyBhIGxlYXAgeWVhcgorICAgICAqCisgICAgICogVGhlIHJ1bGUgaGVyZSBpcyB0aGF0IGlmICh5ZWFyICUgMTkpID09IDAsIDMsIDYsIDgsIDExLCAxNCwgb3IgMTcuCisgICAgICogVGhlIGZvcm11bGEgYmVsb3cgcGVyZm9ybXMgdGhlIHNhbWUgdGVzdCwgYmVsaWV2ZSBpdCBvciBub3QuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBpc0xlYXBZZWFyKGludCB5ZWFyKSB7CisgICAgICAgIHJldHVybiAoeWVhciAqIDEyICsgMTcpICUgMTkgPj0gMTI7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgaW50IG1vbnRoc0luWWVhcihpbnQgeWVhcikgeworICAgICAgICByZXR1cm4gaXNMZWFwWWVhcih5ZWFyKSA/IDEzIDogMTI7CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gQ2FsZW5kYXIgZnJhbWV3b3JrCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHByb3RlY3RlZCBpbnQgaGFuZGxlR2V0TGltaXQoaW50IGZpZWxkLCBpbnQgbGltaXRUeXBlKSB7CisgICAgICAgIHJldHVybiBMSU1JVFNbZmllbGRdW2xpbWl0VHlwZV07CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZSBnaXZlbiBtb250aCBpbiB0aGUgZ2l2ZW4geWVhcgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHJvdGVjdGVkIGludCBoYW5kbGVHZXRNb250aExlbmd0aChpbnQgZXh0ZW5kZWRZZWFyLCBpbnQgbW9udGgpIHsKKworICAgICAgICBzd2l0Y2ggKG1vbnRoKSB7CisgICAgICAgICAgICBjYXNlIEhFU0hWQU46CisgICAgICAgICAgICBjYXNlIEtJU0xFVjoKKyAgICAgICAgICAgICAgICAvLyBUaGVzZSB0d28gbW9udGggbGVuZ3RocyBjYW4gdmFyeQorICAgICAgICAgICAgICAgIHJldHVybiBNT05USF9MRU5HVEhbbW9udGhdW3llYXJUeXBlKGV4dGVuZGVkWWVhcildOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAvLyBUaGUgcmVzdCBhcmUgYSBmaXhlZCBsZW5ndGgKKyAgICAgICAgICAgICAgICByZXR1cm4gTU9OVEhfTEVOR1RIW21vbnRoXVswXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBkYXlzIGluIHRoZSBnaXZlbiBIZWJyZXcgeWVhcgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHJvdGVjdGVkIGludCBoYW5kbGVHZXRZZWFyTGVuZ3RoKGludCBleWVhcikgeworICAgICAgICByZXR1cm4gKGludCkoc3RhcnRPZlllYXIoZXllYXIrMSkgLSBzdGFydE9mWWVhcihleWVhcikpOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIEZ1bmN0aW9ucyBmb3IgY29udmVydGluZyBmcm9tIG1pbGxpc2Vjb25kcyB0byBmaWVsZCB2YWx1ZXMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIFN1YmNsYXNzZXMgbWF5IG92ZXJyaWRlIHRoaXMgbWV0aG9kIHRvIGNvbXB1dGUgc2V2ZXJhbCBmaWVsZHMKKyAgICAgKiBzcGVjaWZpYyB0byBlYWNoIGNhbGVuZGFyIHN5c3RlbS4gIFRoZXNlIGFyZToKKyAgICAgKgorICAgICAqIDx1bD48bGk+RVJBCisgICAgICogPGxpPllFQVIKKyAgICAgKiA8bGk+TU9OVEgKKyAgICAgKiA8bGk+REFZX09GX01PTlRICisgICAgICogPGxpPkRBWV9PRl9ZRUFSCisgICAgICogPGxpPkVYVEVOREVEX1lFQVI8L3VsPgorICAgICAqIAorICAgICAqIFN1YmNsYXNzZXMgY2FuIHJlZmVyIHRvIHRoZSBEQVlfT0ZfV0VFSyBhbmQgRE9XX0xPQ0FMIGZpZWxkcywKKyAgICAgKiB3aGljaCB3aWxsIGJlIHNldCB3aGVuIHRoaXMgbWV0aG9kIGlzIGNhbGxlZC4gIFN1YmNsYXNzZXMgY2FuCisgICAgICogYWxzbyBjYWxsIHRoZSBnZXRHcmVnb3JpYW5YeHgoKSBtZXRob2RzIHRvIG9idGFpbiBHcmVnb3JpYW4KKyAgICAgKiBjYWxlbmRhciBlcXVpdmFsZW50cyBmb3IgdGhlIGdpdmVuIEp1bGlhbiBkYXkuCisgICAgICoKKyAgICAgKiA8cD5JbiBhZGRpdGlvbiwgc3ViY2xhc3NlcyBzaG91bGQgY29tcHV0ZSBhbnkgc3ViY2xhc3Mtc3BlY2lmaWMKKyAgICAgKiBmaWVsZHMsIHRoYXQgaXMsIGZpZWxkcyBmcm9tIEJBU0VfRklFTERfQ09VTlQgdG8KKyAgICAgKiBnZXRGaWVsZENvdW50KCkgLSAxLgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHJvdGVjdGVkIHZvaWQgaGFuZGxlQ29tcHV0ZUZpZWxkcyhpbnQganVsaWFuRGF5KSB7CisgICAgICAgIGxvbmcgZCA9IGp1bGlhbkRheSAtIDM0Nzk5NzsKKyAgICAgICAgbG9uZyBtID0gKGQgKiBEQVlfUEFSVFMpIC8gTU9OVEhfUEFSVFM7ICAgICAgICAgLy8gTW9udGhzIChhcHByb3gpCisgICAgICAgIGludCB5ZWFyID0gKGludCkoKDE5ICogbSArIDIzNCkgLyAyMzUpICsgMTsgICAgIC8vIFllYXJzIChhcHByb3gpCisgICAgICAgIGxvbmcgeXMgID0gc3RhcnRPZlllYXIoeWVhcik7ICAgICAgICAgICAgICAgICAgIC8vIDFzdCBkYXkgb2YgeWVhcgorICAgICAgICBpbnQgZGF5T2ZZZWFyID0gKGludCkoZCAtIHlzKTsKKworICAgICAgICAvLyBCZWNhdXNlIG9mIHRoZSBwb3N0cG9uZW1lbnQgcnVsZXMsIGl0J3MgcG9zc2libGUgdG8gZ3Vlc3Mgd3JvbmcuICBGaXggaXQuCisgICAgICAgIHdoaWxlIChkYXlPZlllYXIgPCAxKSB7CisgICAgICAgICAgICB5ZWFyLS07CisgICAgICAgICAgICB5cyAgPSBzdGFydE9mWWVhcih5ZWFyKTsKKyAgICAgICAgICAgIGRheU9mWWVhciA9IChpbnQpKGQgLSB5cyk7CisgICAgICAgIH0KKworICAgICAgICAvLyBOb3cgZmlndXJlIG91dCB3aGljaCBtb250aCB3ZSdyZSBpbiwgYW5kIHRoZSBkYXRlIHdpdGhpbiB0aGF0IG1vbnRoCisgICAgICAgIGludCB5ZWFyVHlwZSA9IHllYXJUeXBlKHllYXIpOworICAgICAgICBpbnQgbW9udGhTdGFydFtdW10gPSBpc0xlYXBZZWFyKHllYXIpID8gTEVBUF9NT05USF9TVEFSVCA6IE1PTlRIX1NUQVJUOworCisgICAgICAgIGludCBtb250aCA9IDA7CisgICAgICAgIHdoaWxlIChkYXlPZlllYXIgPiBtb250aFN0YXJ0W21vbnRoXVt5ZWFyVHlwZV0pIHsKKyAgICAgICAgICAgIG1vbnRoKys7CisgICAgICAgIH0KKyAgICAgICAgbW9udGgtLTsKKyAgICAgICAgaW50IGRheU9mTW9udGggPSBkYXlPZlllYXIgLSBtb250aFN0YXJ0W21vbnRoXVt5ZWFyVHlwZV07CisKKyAgICAgICAgaW50ZXJuYWxTZXQoRVJBLCAwKTsKKyAgICAgICAgaW50ZXJuYWxTZXQoWUVBUiwgeWVhcik7CisgICAgICAgIGludGVybmFsU2V0KEVYVEVOREVEX1lFQVIsIHllYXIpOworICAgICAgICBpbnRlcm5hbFNldChNT05USCwgbW9udGgpOworICAgICAgICBpbnRlcm5hbFNldChEQVlfT0ZfTU9OVEgsIGRheU9mTW9udGgpOworICAgICAgICBpbnRlcm5hbFNldChEQVlfT0ZfWUVBUiwgZGF5T2ZZZWFyKTsgICAgICAgCisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gRnVuY3Rpb25zIGZvciBjb252ZXJ0aW5nIGZyb20gZmllbGQgdmFsdWVzIHRvIG1pbGxpc2Vjb25kcworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgaW50IGhhbmRsZUdldEV4dGVuZGVkWWVhcigpIHsKKyAgICAgICAgaW50IHllYXI7CisgICAgICAgIGlmIChuZXdlckZpZWxkKEVYVEVOREVEX1lFQVIsIFlFQVIpID09IEVYVEVOREVEX1lFQVIpIHsKKyAgICAgICAgICAgIHllYXIgPSBpbnRlcm5hbEdldChFWFRFTkRFRF9ZRUFSLCAxKTsgLy8gRGVmYXVsdCB0byB5ZWFyIDEKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHllYXIgPSBpbnRlcm5hbEdldChZRUFSLCAxKTsgLy8gRGVmYXVsdCB0byB5ZWFyIDEKKyAgICAgICAgfQorICAgICAgICByZXR1cm4geWVhcjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gSkQgb2Ygc3RhcnQgb2YgZ2l2ZW4gbW9udGgveWVhci4KKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHByb3RlY3RlZCBpbnQgaGFuZGxlQ29tcHV0ZU1vbnRoU3RhcnQoaW50IGV5ZWFyLCBpbnQgbW9udGgsIGJvb2xlYW4gdXNlTW9udGgpIHsKKworICAgICAgICAvLyBSZXNvbHZlIG91dC1vZi1yYW5nZSBtb250aHMuICBUaGlzIGlzIG5lY2Vzc2FyeSBpbiBvcmRlciB0bworICAgICAgICAvLyBvYnRhaW4gdGhlIGNvcnJlY3QgeWVhci4KKyAgICAgICAgaWYgKG1vbnRoIDwgMCkgeworICAgICAgICAgICAgd2hpbGUgKG1vbnRoIDwgMCkgeworICAgICAgICAgICAgICAgIG1vbnRoICs9IG1vbnRoc0luWWVhcigtLWV5ZWFyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChtb250aCA+IDApIHsKKyAgICAgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgICAgICBpbnQgbW9udGhzSW5ZZWFyID0gbW9udGhzSW5ZZWFyKGV5ZWFyKTsKKyAgICAgICAgICAgICAgICBpZiAobW9udGggPCBtb250aHNJblllYXIpIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICsrZXllYXI7CisgICAgICAgICAgICAgICAgbW9udGggLT0gbW9udGhzSW5ZZWFyOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgbG9uZyBkYXkgPSBzdGFydE9mWWVhcihleWVhcik7CisKKyAgICAgICAgaWYgKG1vbnRoICE9IDApIHsKKyAgICAgICAgICAgIGlmIChpc0xlYXBZZWFyKGV5ZWFyKSkgeworICAgICAgICAgICAgICAgIGRheSArPSBMRUFQX01PTlRIX1NUQVJUW21vbnRoXVt5ZWFyVHlwZShleWVhcildOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkYXkgKz0gTU9OVEhfU1RBUlRbbW9udGhdW3llYXJUeXBlKGV5ZWFyKV07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gKGludCkgKGRheSArIDM0Nzk5Nyk7CisgICAgfQorCisgICAgLyoKKyAgICBwcml2YXRlIHN0YXRpYyBDYWxlbmRhckZhY3RvcnkgZmFjdG9yeTsKKyAgICBwdWJsaWMgc3RhdGljIENhbGVuZGFyRmFjdG9yeSBmYWN0b3J5KCkgeworICAgICAgICBpZiAoZmFjdG9yeSA9PSBudWxsKSB7CisgICAgICAgICAgICBmYWN0b3J5ID0gbmV3IENhbGVuZGFyRmFjdG9yeSgpIHsKKyAgICAgICAgICAgICAgICBwdWJsaWMgQ2FsZW5kYXIgY3JlYXRlKFRpbWVab25lIHR6LCBMb2NhbGUgbG9jKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSGVicmV3Q2FsZW5kYXIodHosIGxvYyk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcHVibGljIFN0cmluZyBmYWN0b3J5TmFtZSgpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJIZWJyZXciOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhY3Rvcnk7CisgICAgfQorICAgICovCit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvdXRpbC9IZWJyZXdIb2xpZGF5LmphdmEgYi9zcmMvY29tL2libS9pY3UvdXRpbC9IZWJyZXdIb2xpZGF5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYTQxYTM5NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS91dGlsL0hlYnJld0hvbGlkYXkuamF2YQpAQCAtMCwwICsxLDE2NiBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L3V0aWwvSGVicmV3SG9saWRheS5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzEyLzA0IDAxOjAzOjM5ICQgCisgKiAkUmV2aXNpb246IDEuNSAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworcGFja2FnZSBjb20uaWJtLmljdS51dGlsOworCisvKioKKyAqIEBkcmFmdCBJQ1UgMi4yCisgKi8KK3B1YmxpYyBjbGFzcyBIZWJyZXdIb2xpZGF5IGV4dGVuZHMgSG9saWRheQoreworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEhlYnJld0NhbGVuZGFyIGdDYWxlbmRhciA9IG5ldyBIZWJyZXdDYWxlbmRhcigpOworCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGEgaG9saWRheSBkZWZpbmVkIGluIHJlZmVyZW5jZSB0byB0aGUgSGVicmV3IGNhbGVuZGFyLgorICAgICAqCisgICAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIGhvbGlkYXkKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBIZWJyZXdIb2xpZGF5KGludCBtb250aCwgaW50IGRhdGUsIFN0cmluZyBuYW1lKQorICAgIHsKKyAgICAgICAgdGhpcyhtb250aCwgZGF0ZSwgMSwgbmFtZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgSGVicmV3SG9saWRheShpbnQgbW9udGgsIGludCBkYXRlLCBpbnQgbGVuZ3RoLCBTdHJpbmcgbmFtZSkKKyAgICB7CisgICAgICAgIHN1cGVyKG5hbWUsIG51bGwpOworCisgICAgICAgIFNpbXBsZURhdGVSdWxlIHJ1bGUgPSBuZXcgU2ltcGxlRGF0ZVJ1bGUobW9udGgsIGRhdGUpOworICAgICAgICBydWxlLnNldENhbGVuZGFyKGdDYWxlbmRhcik7CisKKyAgICAgICAgc2V0UnVsZShydWxlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgSGVicmV3SG9saWRheSBST1NIX0hBU0hBTkFIICAgPSBuZXcgSGVicmV3SG9saWRheShIZWJyZXdDYWxlbmRhci5USVNIUkksICAxLCAgMiwgICJSb3NoIEhhc2hhbmFoIik7CisKKyAgICAvKioKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgSGVicmV3SG9saWRheSBHRURBTElBSCAgICAgICAgPSBuZXcgSGVicmV3SG9saWRheShIZWJyZXdDYWxlbmRhci5USVNIUkksICAzLCAgICAgICJGYXN0IG9mIEdlZGFsaWFoIik7CisKKyAgICAvKioKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgSGVicmV3SG9saWRheSBZT01fS0lQUFVSICAgICAgPSBuZXcgSGVicmV3SG9saWRheShIZWJyZXdDYWxlbmRhci5USVNIUkksIDEwLCAgICAgICJZb20gS2lwcHVyIik7CisKKyAgICAvKioKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgSGVicmV3SG9saWRheSBTVUtLT1QgICAgICAgICAgPSBuZXcgSGVicmV3SG9saWRheShIZWJyZXdDYWxlbmRhci5USVNIUkksIDE1LCAgNiwgICJTdWtrb3QiKTsKKworICAgIC8qKgorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBIZWJyZXdIb2xpZGF5IEhPU0hBTkFIX1JBQkJBSCA9IG5ldyBIZWJyZXdIb2xpZGF5KEhlYnJld0NhbGVuZGFyLlRJU0hSSSwgMjEsICAgICAgIkhvc2hhbmFoIFJhYmJhaCIpOworCisgICAgLyoqCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIEhlYnJld0hvbGlkYXkgU0hFTUlOSV9BVFpFUkVUID0gbmV3IEhlYnJld0hvbGlkYXkoSGVicmV3Q2FsZW5kYXIuVElTSFJJLCAyMiwgICAgICAiU2hlbWluaSBBdHplcmV0Iik7CisKKyAgICAvKioKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgSGVicmV3SG9saWRheSBTSU1DSEFUX1RPUkFIICAgPSBuZXcgSGVicmV3SG9saWRheShIZWJyZXdDYWxlbmRhci5USVNIUkksIDIzLCAgICAgICJTaW1jaGF0IFRvcmFoIik7CisKKyAgICAvKioKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgSGVicmV3SG9saWRheSBIQU5VS0tBSCAgICAgICAgPSBuZXcgSGVicmV3SG9saWRheShIZWJyZXdDYWxlbmRhci5LSVNMRVYsIDI1LCAgICAgICJIYW51a2thaCIpOworCisgICAgLyoqCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIEhlYnJld0hvbGlkYXkgVEVWRVRfMTAgICAgICAgID0gbmV3IEhlYnJld0hvbGlkYXkoSGVicmV3Q2FsZW5kYXIuVEVWRVQsICAxMCwgICAgICAiRmFzdCBvZiBUZXZldCAxMCIpOworCisgICAgLyoqCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIEhlYnJld0hvbGlkYXkgVFVfQlNIRVZBVCAgICAgID0gbmV3IEhlYnJld0hvbGlkYXkoSGVicmV3Q2FsZW5kYXIuU0hFVkFULCAxNSwgICAgICAiVHUgQidTaGV2YXQiKTsKKworICAgIC8qKgorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBIZWJyZXdIb2xpZGF5IEVTVEhFUiAgICAgICAgICA9IG5ldyBIZWJyZXdIb2xpZGF5KEhlYnJld0NhbGVuZGFyLkFEQVIsICAgMTMsICAgICAgIkZhc3Qgb2YgRXN0aGVyIik7CisKKyAgICAvKioKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgSGVicmV3SG9saWRheSBQVVJJTSAgICAgICAgICAgPSBuZXcgSGVicmV3SG9saWRheShIZWJyZXdDYWxlbmRhci5BREFSLCAgIDE0LCAgICAgICJQdXJpbSIpOworCisgICAgLyoqCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIEhlYnJld0hvbGlkYXkgU0hVU0hBTl9QVVJJTSAgID0gbmV3IEhlYnJld0hvbGlkYXkoSGVicmV3Q2FsZW5kYXIuQURBUiwgICAxNSwgICAgICAiU2h1c2hhbiBQdXJpbSIpOworCisgICAgLyoqCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIEhlYnJld0hvbGlkYXkgUEFTU09WRVIgICAgICAgID0gbmV3IEhlYnJld0hvbGlkYXkoSGVicmV3Q2FsZW5kYXIuTklTQU4sICAxNSwgIDgsICAiUGFzc292ZXIiKTsKKworICAgIC8qKgorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBIZWJyZXdIb2xpZGF5IFlPTV9IQVNIT0FIICAgICA9IG5ldyBIZWJyZXdIb2xpZGF5KEhlYnJld0NhbGVuZGFyLk5JU0FOLCAgMjcsICAgICAgIllvbSBIYXNob2FoIik7CisKKyAgICAvKioKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgSGVicmV3SG9saWRheSBZT01fSEFaSUtBUk9OICAgPSBuZXcgSGVicmV3SG9saWRheShIZWJyZXdDYWxlbmRhci5JWUFSLCAgICA0LCAgICAgICJZb20gSGF6aWthcm9uIik7CisKKyAgICAvKioKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgSGVicmV3SG9saWRheSBZT01fSEFBVFpNQVVUICAgPSBuZXcgSGVicmV3SG9saWRheShIZWJyZXdDYWxlbmRhci5JWUFSLCAgICA1LCAgICAgICJZb20gSGEnQXR6bWF1dCIpOworCisgICAgLyoqCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIEhlYnJld0hvbGlkYXkgUEVTQUNIX1NIRUlOSSAgID0gbmV3IEhlYnJld0hvbGlkYXkoSGVicmV3Q2FsZW5kYXIuSVlBUiwgICAxNCwgICAgICAiUGVzYWNoIFNoZWluaSIpOworCisgICAgLyoqCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIEhlYnJld0hvbGlkYXkgTEFHX0JPTUVSICAgICAgID0gbmV3IEhlYnJld0hvbGlkYXkoSGVicmV3Q2FsZW5kYXIuSVlBUiwgICAxOCwgICAgICAiTGFiIEInT21lciIpOworCisgICAgLyoqCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIEhlYnJld0hvbGlkYXkgWU9NX1lFUlVTSEFMQVlJTSA9IG5ldyBIZWJyZXdIb2xpZGF5KEhlYnJld0NhbGVuZGFyLklZQVIsICAgMjgsICAgICAgIllvbSBZZXJ1c2hhbGF5aW0iKTsKKworICAgIC8qKgorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBIZWJyZXdIb2xpZGF5IFNIQVZVT1QgICAgICAgICA9IG5ldyBIZWJyZXdIb2xpZGF5KEhlYnJld0NhbGVuZGFyLlNJVkFOLCAgIDYsICAyLCAgIlNoYXZ1b3QiKTsKKworICAgIC8qKgorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBIZWJyZXdIb2xpZGF5IFRBTU1VWl8xNyAgICAgICA9IG5ldyBIZWJyZXdIb2xpZGF5KEhlYnJld0NhbGVuZGFyLlRBTVVaLCAgMTcsICAgICAgIkZhc3Qgb2YgVGFtbXV6IDE3Iik7CisKKyAgICAvKioKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgSGVicmV3SG9saWRheSBUSVNIQV9CQVYgICAgICAgPSBuZXcgSGVicmV3SG9saWRheShIZWJyZXdDYWxlbmRhci5BViwgICAgICA5LCAgICAgICJGYXN0IG9mIFRpc2hhIEInQXYiKTsKKworICAgIC8qKgorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBIZWJyZXdIb2xpZGF5IFNFTElIT1QgICAgICAgICA9IG5ldyBIZWJyZXdIb2xpZGF5KEhlYnJld0NhbGVuZGFyLkVMVUwsICAgMjEsICAgICAgIlNlbGlob3QiKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS91dGlsL0hvbGlkYXkuamF2YSBiL3NyYy9jb20vaWJtL2ljdS91dGlsL0hvbGlkYXkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45ZjU3Y2RjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L3V0aWwvSG9saWRheS5qYXZhCkBAIC0wLDAgKzEsMTgyIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvdXRpbC9Ib2xpZGF5LmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMTIvMDQgMDE6MDM6MzkgJCAKKyAqICRSZXZpc2lvbjogMS42ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LnV0aWw7CisKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLklDVUxvY2FsZURhdGE7CisKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworaW1wb3J0IGphdmEudXRpbC5NaXNzaW5nUmVzb3VyY2VFeGNlcHRpb247CitpbXBvcnQgamF2YS51dGlsLlJlc291cmNlQnVuZGxlOworCisvKioKKyAqIEFuIGFic3RyYWN0IGNsYXNzIHJlcHJlc2VudGluZyBhIGhvbGlkYXkuICBUaGlzIGNsYXNzIHNpbXBseSBhZGRzCisgKiBhIGhvbGlkYXkgbmFtZSB0byB0aGUgRGF0ZVJ1bGUgaW50ZXJmYWNlIGZvciBjYWxjdWxhdGluZyB0aGUgZGF0ZQorICogb2YgYW4gZXZlbnQuCisgKiBAZHJhZnQgSUNVIDIuMgorICovCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgSG9saWRheSBpbXBsZW1lbnRzIERhdGVSdWxlCit7CisgICAgLyoqCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIEhvbGlkYXlbXSBnZXRIb2xpZGF5cygpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0SG9saWRheXMoTG9jYWxlLmdldERlZmF1bHQoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIEhvbGlkYXlbXSBnZXRIb2xpZGF5cyhMb2NhbGUgbG9jYWxlKQorICAgIHsKKyAgICAgICAgSG9saWRheVtdIHJlc3VsdCA9IG5vSG9saWRheXM7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFJlc291cmNlQnVuZGxlIGJ1bmRsZSA9IElDVUxvY2FsZURhdGEuZ2V0UmVzb3VyY2VCdW5kbGUoIkhvbGlkYXlCdW5kbGUiLCBsb2NhbGUpOworCisgICAgICAgICAgICByZXN1bHQgPSAoSG9saWRheVtdKSBidW5kbGUuZ2V0T2JqZWN0KCJob2xpZGF5cyIpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChNaXNzaW5nUmVzb3VyY2VFeGNlcHRpb24gZSkgeworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBmaXJzdCBvY2N1cnJhbmNlIG9mIHRoaXMgaG9saWRheSBvbiBvciBhZnRlciB0aGUgZ2l2ZW4gZGF0ZQorICAgICAqCisgICAgICogQHBhcmFtIHN0YXJ0IE9ubHkgaG9saWRheXMgb24gb3IgYWZ0ZXIgdGhpcyBkYXRlIGFyZSByZXR1cm5lZC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gICAgICBUaGUgZGF0ZSBvbiB3aGljaCB0aGlzIGhvbGlkYXkgb2NjdXJzLCBvciBudWxsIGlmIGl0CisgICAgICogICAgICAgICAgICAgIGRvZXMgbm90IG9jY3VyIG9uIG9yIGFmdGVyIHRoZSBzdGFydCBkYXRlLgorICAgICAqCisgICAgICogQHNlZSAjZmlyc3RCZXR3ZWVuCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgRGF0ZSBmaXJzdEFmdGVyKERhdGUgc3RhcnQpIHsKKyAgICAgICAgcmV0dXJuIHJ1bGUuZmlyc3RBZnRlcihzdGFydCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBmaXJzdCBvY2N1cnJhbmNlIG9mIHRoaXMgaG9saWRheSB0aGF0IGlzIG9uIG9yIGFmdGVyCisgICAgICogdGhlIGdpdmVuIHN0YXJ0IGRhdGUgYW5kIGJlZm9yZSB0aGUgZ2l2ZW4gZW5kIGRhdGUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gc3RhcnQgT25seSBvY2N1cnJhbmNlcyBvbiBvciBhZnRlciB0aGlzIGRhdGUgYXJlIHJldHVybmVkLgorICAgICAqIEBwYXJhbSBlbmQgICBPbmx5IG9jY3VycmFuY2VzIGJlZm9yZSB0aGlzIGRhdGUgYXJlIHJldHVybmVkLgorICAgICAqCisgICAgICogQHJldHVybiAgICAgIFRoZSBkYXRlIG9uIHdoaWNoIHRoaXMgZXZlbnQgb2NjdXJzLCBvciBudWxsIGlmIGl0CisgICAgICogICAgICAgICAgICAgIGRvZXMgbm90IG9jY3VyIGJldHdlZW4gdGhlIHN0YXJ0IGFuZCBlbmQgZGF0ZXMuCisgICAgICoKKyAgICAgKiBAc2VlICNmaXJzdEFmdGVyCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgRGF0ZSBmaXJzdEJldHdlZW4oRGF0ZSBzdGFydCwgRGF0ZSBlbmQpIHsKKyAgICAgICAgcmV0dXJuIHJ1bGUuZmlyc3RCZXR3ZWVuKHN0YXJ0LCBlbmQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENoZWNrcyB3aGV0aGVyIHRoaXMgaG9saWRheSBmYWxscyBvbiB0aGUgZ2l2ZW4gZGF0ZS4gIFRoaXMgZG9lcworICAgICAqIDxlbT5ub3Q8L2VtPiB0YWtlIHRpbWUgb2YgZGF5IGludG8gYWNjb3VudDsgaW5zdGVhZCBpdCBjaGVja3MKKyAgICAgKiB3aGV0aGVyIHRoZSBob2xpZGF5IGFuZCB0aGUgZ2l2ZW4gZGF0ZSBhcmUgb24gdGhlIHNhbWUgZGF5LgorICAgICAqCisgICAgICogQHBhcmFtIGRhdGUgIFRoZSBkYXRlIHRvIGNoZWNrLgorICAgICAqIEByZXR1cm4gICAgICB0cnVlIGlmIHRoaXMgaG9saWRheSBvY2N1cnMgb24gdGhlIGdpdmVuIGRhdGUuCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGlzT24oRGF0ZSBkYXRlKSB7CisgICAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKG5hbWUgKyAiLmlzT24oIiArIGRhdGUudG9TdHJpbmcoKSArICIpOiIpOworICAgICAgICByZXR1cm4gcnVsZS5pc09uKGRhdGUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENoZWNrIHdoZXRoZXIgdGhpcyBob2xpZGF5IG9jY3VycyBhdCBsZWFzdCBvbmNlIGJldHdlZW4gdGhlIHR3bworICAgICAqIGRhdGVzIGdpdmVuLgorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNCZXR3ZWVuKERhdGUgc3RhcnQsIERhdGUgZW5kKSB7CisgICAgICAgIHJldHVybiBydWxlLmlzQmV0d2VlbihzdGFydCwgZW5kKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgYSBuZXcgSG9saWRheSBvYmplY3QuICBUaGlzIGlzIGZvciB1c2UgYnkgc3ViY2xhc3NlcyBvbmx5LgorICAgICAqIFRoaXMgY29uc3RydWN0cyBhIG5ldyBob2xpZGF5IHdpdGggdGhlIGdpdmVuIG5hbWUgYW5kIGRhdGUgcnVsZXMuCisgICAgICoKKyAgICAgKiBAcGFyYW0gbmFtZSAgVGhlIG5hbWUgb2YgdGhpcyBob2xpZGF5LiAgVGhlIGdldERpc3BsYXlOYW1lIG1ldGhvZAorICAgICAqICAgICAgICAgICAgICB1c2VzIHRoaXMgc3RyaW5nIGFzIGEga2V5IHRvIGxvb2sgdXAgdGhlIGhvbGlkYXkncyBuYW1lIGEKKyAgICAgKiAgICAgICAgICAgICAgcmVzb3VyY2UgYnVuZGxlIG9iamVjdCBuYW1lZCBIb2xpZGF5QnVuZGxlLgorICAgICAqCisgICAgICogQHBhcmFtIHJ1bGUgIFRoZSBkYXRlIHJ1bGVzIHVzZWQgZm9yIGRldGVybWluaW5nIHdoZW4gdGhpcyBob2xpZGF5CisgICAgICogICAgICAgICAgICAgIGZhbGxzLiAgSG9saWRheSdzIGltcGxlbWVudGF0aW9uIG9mIHRoZSBEYXRlUnVsZSBpbnRlZmFjZQorICAgICAqICAgICAgICAgICAgICBzaW1wbHkgZGVsZWdhdGVzIHRvIHRoaXMgRGF0ZVJ1bGUgb2JqZWN0LgorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHJvdGVjdGVkIEhvbGlkYXkoU3RyaW5nIG5hbWUsIERhdGVSdWxlIHJ1bGUpCisgICAgeworICAgICAgICB0aGlzLm5hbWUgPSBuYW1lOworICAgICAgICB0aGlzLnJ1bGUgPSBydWxlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgbmFtZSBvZiB0aGlzIGhvbGlkYXkgaW4gdGhlIGxhbmd1YWdlIG9mIHRoZSBkZWZhdWx0IGxvY2FsZQorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIFN0cmluZyBnZXREaXNwbGF5TmFtZSgpIHsKKyAgICAgICAgcmV0dXJuIGdldERpc3BsYXlOYW1lKExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgbmFtZSBvZiB0aGlzIGhvbGlkYXkgaW4gdGhlIGxhbmd1YWdlIG9mIHRoZSBzcGVjaWZpZWQgbG9jYWxlCisgICAgICogVGhlIDxjb2RlPm5hbWU8L2NvZGU+IHBhcmFtZXRlciBwYXNzZWQgdG8gdGhpcyBvYmplY3QncyBjb25zdHJ1Y3RvciBpcyB1c2VkCisgICAgICogYXMgYSBrZXkgdG8gbG9vayB1cCB0aGUgaG9saWRheSdzIGxvY2FsaXplZCBuYW1lIGluIGEgUmVzb3VyY2VCdW5kbGUgb2JqZWN0CisgICAgICogbmFtZWQgSG9saWRheUJ1bmRsZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBsb2MgICBBIGxvY2FsZSBzcGVjaWZ5aW5nIHRoZSBsYW5ndWFnZSBpbiB3aGljaCB0aGUgbmFtZSBpcyBkZXNpcmVkLgorICAgICAqCisgICAgICogQHNlZSBSZXNvdXJjZUJ1bmRsZQorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIFN0cmluZyBnZXREaXNwbGF5TmFtZShMb2NhbGUgbG9jYWxlKQorICAgIHsKKyAgICAgICAgU3RyaW5nIG5hbWUgPSB0aGlzLm5hbWU7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFJlc291cmNlQnVuZGxlIGJ1bmRsZSA9IElDVUxvY2FsZURhdGEuZ2V0UmVzb3VyY2VCdW5kbGUoIkhvbGlkYXlCdW5kbGUiLCBsb2NhbGUpOworICAgICAgICAgICAgbmFtZSA9IGJ1bmRsZS5nZXRTdHJpbmcobmFtZSk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKE1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiVXNpbmcgZGVmYXVsdCBkaXNwbGF5IG5hbWUgZm9yICIgKyBuYW1lKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbmFtZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBEYXRlUnVsZSBnZXRSdWxlKCkgeworICAgICAgICByZXR1cm4gcnVsZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFJ1bGUoRGF0ZVJ1bGUgcnVsZSkgeworICAgICAgICB0aGlzLnJ1bGUgPSBydWxlOworICAgIH0KKworICAgIHByaXZhdGUgU3RyaW5nICAgICAgbmFtZTsKKyAgICBwcml2YXRlIERhdGVSdWxlICAgIHJ1bGU7CisKKyAgICBwcml2YXRlIHN0YXRpYyBIb2xpZGF5W10gbm9Ib2xpZGF5cyA9IHt9OworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3V0aWwvSXNsYW1pY0NhbGVuZGFyLmphdmEgYi9zcmMvY29tL2libS9pY3UvdXRpbC9Jc2xhbWljQ2FsZW5kYXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mMzdlYzBkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L3V0aWwvSXNsYW1pY0NhbGVuZGFyLmphdmEKQEAgLTAsMCArMSw2MzEgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS91dGlsL0lzbGFtaWNDYWxlbmRhci5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzEyLzE4IDE5OjM1OjA3ICQgCisgKiAkUmV2aXNpb246IDEuMTYgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LnV0aWw7CisKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLkNhbGVuZGFyOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuR3JlZ29yaWFuQ2FsZW5kYXI7CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLkNhbGVuZGFyQXN0cm9ub21lcjsKKworLyoqCisgKiA8Y29kZT5Jc2xhbWljQ2FsZW5kYXI8L2NvZGU+IGlzIGEgc3ViY2xhc3Mgb2YgPGNvZGU+Q2FsZW5kYXI8L2NvZGU+CisgKiB0aGF0IHRoYXQgaW1wbGVtZW50cyB0aGUgSXNsYW1pYyBjaXZpbCBhbmQgcmVsaWdpb3VzIGNhbGVuZGFycy4gIEl0CisgKiBpcyB1c2VkIGFzIHRoZSBjaXZpbCBjYWxlbmRhciBpbiBtb3N0IG9mIHRoZSBBcmFiIHdvcmxkIGFuZCB0aGUKKyAqIGxpdHVyZ2ljYWwgY2FsZW5kYXIgb2YgdGhlIElzbGFtaWMgZmFpdGggd29ybGR3aWRlLiAgVGhpcyBjYWxlbmRhcgorICogaXMgYWxzbyBrbm93biBhcyB0aGUgIkhpanJpIiBjYWxlbmRhciwgc2luY2UgaXQgc3RhcnRzIGF0IHRoZSB0aW1lCisgKiBvZiBNb2hhbW1lZCdzIGVtaWdyYXRpb24gKG9yICJoaWpyYSIpIHRvIE1lZGluYWggb24gVGh1cnNkYXksIAorICogSnVseSAxNSwgNjIyIEFEIChKdWxpYW4pLgorICogPHA+CisgKiBUaGUgSXNsYW1pYyBjYWxlbmRhciBpcyBzdHJpY3RseSBsdW5hciwgYW5kIHRodXMgYW4gSXNsYW1pYyB5ZWFyIG9mIHR3ZWx2ZQorICogbHVuYXIgbW9udGhzIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gdGhlIHNvbGFyIHllYXIgdXNlZCBieSBtb3N0IG90aGVyCisgKiBjYWxlbmRhciBzeXN0ZW1zLCBpbmNsdWRpbmcgdGhlIEdyZWdvcmlhbi4gIEFuIElzbGFtaWMgeWVhciBpcywgb24gYXZlcmFnZSwKKyAqIGFib3V0IDM1NCBkYXlzIGxvbmcsIHNvIGVhY2ggc3VjY2Vzc2l2ZSBJc2xhbWljIHllYXIgc3RhcnRzIGFib3V0IDExIGRheXMKKyAqIGVhcmxpZXIgaW4gdGhlIGNvcnJlc3BvbmRpbmcgR3JlZ29yaWFuIHllYXIuCisgKiA8cD4KKyAqIEVhY2ggbW9udGggb2YgdGhlIGNhbGVuZGFyIHN0YXJ0cyB3aGVuIHRoZSBuZXcgbW9vbidzIGNyZXNjZW50IGlzIHZpc2libGUKKyAqIGF0IHN1bnNldC4gIEhvd2V2ZXIsIGluIG9yZGVyIHRvIGtlZXAgdGhlIHRpbWUgZmllbGRzIGluIHRoaXMgY2xhc3MKKyAqIHN5bmNocm9uaXplZCB3aXRoIHRob3NlIG9mIHRoZSBvdGhlciBjYWxlbmRhcnMgYW5kIHdpdGggbG9jYWwgY2xvY2sgdGltZSwKKyAqIHdlIHRyZWF0IGRheXMgYW5kIG1vbnRocyBhcyBiZWdpbm5pbmcgYXQgbWlkbmlnaHQsCisgKiByb3VnaGx5IDYgaG91cnMgYWZ0ZXIgdGhlIGNvcnJlc3BvbmRpbmcgc3Vuc2V0LgorICogPHA+CisgKiBUaGVyZSBhcmUgdHdvIG1haW4gdmFyaWFudHMgb2YgdGhlIElzbGFtaWMgY2FsZW5kYXIgaW4gZXhpc3RlbmNlLiAgVGhlIGZpcnN0CisgKiBpcyB0aGUgPGVtPmNpdmlsPC9lbT4gY2FsZW5kYXIsIHdoaWNoIHVzZXMgYSBmaXhlZCBjeWNsZSBvZiBhbHRlcm5hdGluZyAyOS0KKyAqIGFuZCAzMC1kYXkgbW9udGhzLCB3aXRoIGEgbGVhcCBkYXkgYWRkZWQgdG8gdGhlIGxhc3QgbW9udGggb2YgMTEgb3V0IG9mCisgKiBldmVyeSAzMCB5ZWFycy4gIFRoaXMgY2FsZW5kYXIgaXMgZWFzaWx5IGNhbGN1bGF0ZWQgYW5kIHRodXMgcHJlZGljdGFibGUgaW4KKyAqIGFkdmFuY2UsIHNvIGl0IGlzIHVzZWQgYXMgdGhlIGNpdmlsIGNhbGVuZGFyIGluIGEgbnVtYmVyIG9mIEFyYWIgY291bnRyaWVzLgorICogVGhpcyBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiBhIG5ld2x5LWNyZWF0ZWQgPGNvZGU+SXNsYW1pY0NhbGVuZGFyPC9jb2RlPgorICogb2JqZWN0LgorICogPHA+CisgKiBUaGUgSXNsYW1pYyA8ZW0+cmVsaWdpb3VzPC9lbT4gY2FsZW5kYXIsIGhvd2V2ZXIsIGlzIGJhc2VkIG9uIHRoZSA8ZW0+b2JzZXJ2YXRpb248L2VtPgorICogb2YgdGhlIGNyZXNjZW50IG1vb24uICBJdCBpcyB0aHVzIGFmZmVjdGVkIGJ5IHRoZSBwb3NpdGlvbiBhdCB3aGljaCB0aGUKKyAqIG9ic2VydmF0aW9ucyBhcmUgbWFkZSwgc2Vhc29uYWwgdmFyaWF0aW9ucyBpbiB0aGUgdGltZSBvZiBzdW5zZXQsIHRoZQorICogZWNjZW50cmljaXRpZXMgb2YgdGhlIG1vb24ncyBvcmJpdCwgYW5kIGV2ZW4gdGhlIHdlYXRoZXIgYXQgdGhlIG9ic2VydmF0aW9uCisgKiBzaXRlLiAgVGhpcyBtYWtlcyBpdCBpbXBvc3NpYmxlIHRvIGNhbGN1bGF0ZSBpbiBhZHZhbmNlLCBhbmQgaXQgY2F1c2VzIHRoZQorICogc3RhcnQgb2YgYSBtb250aCBpbiB0aGUgcmVsaWdpb3VzIGNhbGVuZGFyIHRvIGRpZmZlciBmcm9tIHRoZSBjaXZpbCBjYWxlbmRhcgorICogYnkgdXAgdG8gdGhyZWUgZGF5cy4KKyAqIDxwPgorICogVXNpbmcgYXN0cm9ub21pY2FsIGNhbGN1bGF0aW9ucyBmb3IgdGhlIHBvc2l0aW9uIG9mIHRoZSBzdW4gYW5kIG1vb24sIHRoZQorICogbW9vbidzIGlsbHVtaW5hdGlvbiwgYW5kIG90aGVyIGZhY3RvcnMsIGl0IGlzIHBvc3NpYmxlIHRvIGRldGVybWluZSB0aGUgc3RhcnQKKyAqIG9mIGEgbHVuYXIgbW9udGggd2l0aCBhIGZhaXJseSBoaWdoIGRlZ3JlZSBvZiBjZXJ0YWludHkuICBIb3dldmVyLCB0aGVzZQorICogY2FsY3VsYXRpb25zIGFyZSBleHRyZW1lbHkgY29tcGxpY2F0ZWQgYW5kIHRodXMgc2xvdywgc28gbW9zdCBhbGdvcml0aG1zLAorICogaW5jbHVkaW5nIHRoZSBvbmUgdXNlZCBoZXJlLCBhcmUgb25seSBhcHByb3hpbWF0aW9ucyBvZiB0aGUgdHJ1ZSBhc3Ryb25pY2FsCisgKiBjYWxjdWxhdGlvbnMuICBBdCBwcmVzZW50LCB0aGUgYXBwcm94aW1hdGlvbnMgdXNlZCBpbiB0aGlzIGNsYXNzIGFyZSBmYWlybHkKKyAqIHNpbXBsaXN0aWM7IHRoZXkgd2lsbCBiZSBpbXByb3ZlZCBpbiBsYXRlciB2ZXJzaW9ucyBvZiB0aGUgY29kZS4KKyAqIDxwPgorICogVGhlIHtAbGluayAjc2V0Q2l2aWwgc2V0Q2l2aWx9IG1ldGhvZCBkZXRlcm1pbmVzCisgKiB3aGljaCBhcHByb2FjaCBpcyB1c2VkIHRvIGRldGVybWluZSB0aGUgc3RhcnQgb2YgYSBtb250aC4gIEJ5IGRlZmF1bHQsIHRoZQorICogZml4ZWQtY3ljbGUgY2l2aWwgY2FsZW5kYXIgaXMgdXNlZC4gIEhvd2V2ZXIsIGlmIDxjb2RlPnNldENpdmlsKGZhbHNlKTwvY29kZT4KKyAqIGlzIGNhbGxlZCwgYW4gYXBwcm94aW1hdGlvbiBvZiB0aGUgdHJ1ZSBsdW5hciBjYWxlbmRhciB3aWxsIGJlIHVzZWQuCisgKgorICogQHNlZSBjb20uaWJtLmljdS51dGlsLkdyZWdvcmlhbkNhbGVuZGFyCisgKgorICogQGF1dGhvciBMYXVyYSBXZXJuZXIKKyAqIEBhdXRob3IgQWxhbiBMaXUKKyAqIEBkcmFmdCBJQ1UgMi40CisgKi8KK3B1YmxpYyBjbGFzcyBJc2xhbWljQ2FsZW5kYXIgZXh0ZW5kcyBDYWxlbmRhciB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgY29weXJpZ2h0ID0gIkNvcHlyaWdodCBcdTAwYTkgMTk5Ny0xOTk4IElCTSBDb3JwLiBBbGwgUmlnaHRzIFJlc2VydmVkLiI7CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBDb25zdGFudHMuLi4KKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvKioKKyAgICAgKiBDb25zdGFudCBmb3IgTXVoYXJyYW0sIHRoZSAxc3QgbW9udGggb2YgdGhlIElzbGFtaWMgeWVhci4gCisgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTVVIQVJSQU0gPSAwOworCisgICAgLyoqCisgICAgICogQ29uc3RhbnQgZm9yIFNhZmFyLCB0aGUgMm5kIG1vbnRoIG9mIHRoZSBJc2xhbWljIHllYXIuIAorICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNBRkFSID0gMTsKKworICAgIC8qKgorICAgICAqIENvbnN0YW50IGZvciBSYWJpJyBhbC1hd3dhbCAob3IgUmFiaScgSSksIHRoZSAzcmQgbW9udGggb2YgdGhlIElzbGFtaWMgeWVhci4gCisgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUkFCSV8xID0gMjsKKworICAgIC8qKgorICAgICAqIENvbnN0YW50IGZvciBSYWJpJyBhbC10aGFuaSBvciAoUmFiaScgSUkpLCB0aGUgNHRoIG1vbnRoIG9mIHRoZSBJc2xhbWljIHllYXIuIAorICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFJBQklfMiA9IDM7CisKKyAgICAvKioKKyAgICAgKiBDb25zdGFudCBmb3IgSnVtYWRhIGFsLWF3d2FsIG9yIChKdW1hZGEgSSksIHRoZSA1dGggbW9udGggb2YgdGhlIElzbGFtaWMgeWVhci4gCisgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSlVNQURBXzEgPSA0OworCisgICAgLyoqCisgICAgICogQ29uc3RhbnQgZm9yIEp1bWFkYSBhbC10aGFuaSBvciAoSnVtYWRhIElJKSwgdGhlIDZ0aCBtb250aCBvZiB0aGUgSXNsYW1pYyB5ZWFyLiAKKyAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBKVU1BREFfMiA9IDU7CisKKyAgICAvKioKKyAgICAgKiBDb25zdGFudCBmb3IgUmFqYWIsIHRoZSA3dGggbW9udGggb2YgdGhlIElzbGFtaWMgeWVhci4gCisgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUkFKQUIgPSA2OworCisgICAgLyoqCisgICAgICogQ29uc3RhbnQgZm9yIFNoYSdiYW4sIHRoZSA4dGggbW9udGggb2YgdGhlIElzbGFtaWMgeWVhci4gCisgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0hBQkFOID0gNzsKKworICAgIC8qKgorICAgICAqIENvbnN0YW50IGZvciBSYW1hZGFuLCB0aGUgOXRoIG1vbnRoIG9mIHRoZSBJc2xhbWljIHllYXIuIAorICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFJBTUFEQU4gPSA4OworCisgICAgLyoqCisgICAgICogQ29uc3RhbnQgZm9yIFNoYXd3YWwsIHRoZSAxMHRoIG1vbnRoIG9mIHRoZSBJc2xhbWljIHllYXIuIAorICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNIQVdXQUwgPSA5OworCisgICAgLyoqCisgICAgICogQ29uc3RhbnQgZm9yIERodSBhbC1RaSdkYWgsIHRoZSAxMXRoIG1vbnRoIG9mIHRoZSBJc2xhbWljIHllYXIuIAorICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERIVV9BTF9RSURBSCA9IDEwOworCisgICAgLyoqCisgICAgICogQ29uc3RhbnQgZm9yIERodSBhbC1IaWpqYWgsIHRoZSAxMnRoIG1vbnRoIG9mIHRoZSBJc2xhbWljIHllYXIuIAorICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERIVV9BTF9ISUpKQUggPSAxMTsKKworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBISUpSQV9NSUxMSVMgPSAtNDI1MjE1ODcyMDAwMDBMOyAgICAvLyA3LzE2LzYyMiBBRCAwMDowMAorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gQ29uc3RydWN0b3JzLi4uCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgZGVmYXVsdCA8Y29kZT5Jc2xhbWljQ2FsZW5kYXI8L2NvZGU+IHVzaW5nIHRoZSBjdXJyZW50IHRpbWUKKyAgICAgKiBpbiB0aGUgZGVmYXVsdCB0aW1lIHpvbmUgd2l0aCB0aGUgZGVmYXVsdCBsb2NhbGUuCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgSXNsYW1pY0NhbGVuZGFyKCkKKyAgICB7CisgICAgICAgIHRoaXMoVGltZVpvbmUuZ2V0RGVmYXVsdCgpLCBMb2NhbGUuZ2V0RGVmYXVsdCgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGFuIDxjb2RlPklzbGFtaWNDYWxlbmRhcjwvY29kZT4gYmFzZWQgb24gdGhlIGN1cnJlbnQgdGltZQorICAgICAqIGluIHRoZSBnaXZlbiB0aW1lIHpvbmUgd2l0aCB0aGUgZGVmYXVsdCBsb2NhbGUuCisgICAgICogQHBhcmFtIHpvbmUgdGhlIGdpdmVuIHRpbWUgem9uZS4KKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBJc2xhbWljQ2FsZW5kYXIoVGltZVpvbmUgem9uZSkKKyAgICB7CisgICAgICAgIHRoaXMoem9uZSwgTG9jYWxlLmdldERlZmF1bHQoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhbiA8Y29kZT5Jc2xhbWljQ2FsZW5kYXI8L2NvZGU+IGJhc2VkIG9uIHRoZSBjdXJyZW50IHRpbWUKKyAgICAgKiBpbiB0aGUgZGVmYXVsdCB0aW1lIHpvbmUgd2l0aCB0aGUgZ2l2ZW4gbG9jYWxlLgorICAgICAqCisgICAgICogQHBhcmFtIGFMb2NhbGUgdGhlIGdpdmVuIGxvY2FsZS4KKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBJc2xhbWljQ2FsZW5kYXIoTG9jYWxlIGFMb2NhbGUpCisgICAgeworICAgICAgICB0aGlzKFRpbWVab25lLmdldERlZmF1bHQoKSwgYUxvY2FsZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhbiA8Y29kZT5Jc2xhbWljQ2FsZW5kYXI8L2NvZGU+IGJhc2VkIG9uIHRoZSBjdXJyZW50IHRpbWUKKyAgICAgKiBpbiB0aGUgZ2l2ZW4gdGltZSB6b25lIHdpdGggdGhlIGdpdmVuIGxvY2FsZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSB6b25lIHRoZSBnaXZlbiB0aW1lIHpvbmUuCisgICAgICogQHBhcmFtIGFMb2NhbGUgdGhlIGdpdmVuIGxvY2FsZS4KKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBJc2xhbWljQ2FsZW5kYXIoVGltZVpvbmUgem9uZSwgTG9jYWxlIGFMb2NhbGUpCisgICAgeworICAgICAgICBzdXBlcih6b25lLCBhTG9jYWxlKTsKKyAgICAgICAgc2V0VGltZUluTWlsbGlzKFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGFuIDxjb2RlPklzbGFtaWNDYWxlbmRhcjwvY29kZT4gd2l0aCB0aGUgZ2l2ZW4gZGF0ZSBzZXQKKyAgICAgKiBpbiB0aGUgZGVmYXVsdCB0aW1lIHpvbmUgd2l0aCB0aGUgZGVmYXVsdCBsb2NhbGUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gZGF0ZSAgICAgIFRoZSBkYXRlIHRvIHdoaWNoIHRoZSBuZXcgY2FsZW5kYXIgaXMgc2V0LgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIElzbGFtaWNDYWxlbmRhcihEYXRlIGRhdGUpIHsKKyAgICAgICAgc3VwZXIoVGltZVpvbmUuZ2V0RGVmYXVsdCgpLCBMb2NhbGUuZ2V0RGVmYXVsdCgpKTsKKyAgICAgICAgdGhpcy5zZXRUaW1lKGRhdGUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYW4gPGNvZGU+SXNsYW1pY0NhbGVuZGFyPC9jb2RlPiB3aXRoIHRoZSBnaXZlbiBkYXRlIHNldAorICAgICAqIGluIHRoZSBkZWZhdWx0IHRpbWUgem9uZSB3aXRoIHRoZSBkZWZhdWx0IGxvY2FsZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSB5ZWFyIHRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUge0BsaW5rICNZRUFSIFlFQVJ9IHRpbWUgZmllbGQgaW4gdGhlIGNhbGVuZGFyLgorICAgICAqIEBwYXJhbSBtb250aCB0aGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIHtAbGluayAjTU9OVEggTU9OVEh9IHRpbWUgZmllbGQgaW4gdGhlIGNhbGVuZGFyLgorICAgICAqICAgICAgICAgICAgICBOb3RlIHRoYXQgdGhlIG1vbnRoIHZhbHVlIGlzIDAtYmFzZWQuIGUuZy4sIDAgZm9yIE11aGFycmFtLgorICAgICAqIEBwYXJhbSBkYXRlIHRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUge0BsaW5rICNEQVRFIERBVEV9IHRpbWUgZmllbGQgaW4gdGhlIGNhbGVuZGFyLgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIElzbGFtaWNDYWxlbmRhcihpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF0ZSkKKyAgICB7CisgICAgICAgIHN1cGVyKFRpbWVab25lLmdldERlZmF1bHQoKSwgTG9jYWxlLmdldERlZmF1bHQoKSk7CisgICAgICAgIHRoaXMuc2V0KENhbGVuZGFyLllFQVIsIHllYXIpOworICAgICAgICB0aGlzLnNldChDYWxlbmRhci5NT05USCwgbW9udGgpOworICAgICAgICB0aGlzLnNldChDYWxlbmRhci5EQVRFLCBkYXRlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGFuIDxjb2RlPklzbGFtaWNDYWxlbmRhcjwvY29kZT4gd2l0aCB0aGUgZ2l2ZW4gZGF0ZQorICAgICAqIGFuZCB0aW1lIHNldCBmb3IgdGhlIGRlZmF1bHQgdGltZSB6b25lIHdpdGggdGhlIGRlZmF1bHQgbG9jYWxlLgorICAgICAqCisgICAgICogQHBhcmFtIHllYXIgIHRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUge0BsaW5rICNZRUFSIFlFQVJ9IHRpbWUgZmllbGQgaW4gdGhlIGNhbGVuZGFyLgorICAgICAqIEBwYXJhbSBtb250aCB0aGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIHtAbGluayAjTU9OVEggTU9OVEh9IHRpbWUgZmllbGQgaW4gdGhlIGNhbGVuZGFyLgorICAgICAqICAgICAgICAgICAgICBOb3RlIHRoYXQgdGhlIG1vbnRoIHZhbHVlIGlzIDAtYmFzZWQuIGUuZy4sIDAgZm9yIE11aGFycmFtLgorICAgICAqIEBwYXJhbSBkYXRlICB0aGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIHtAbGluayAjREFURSBEQVRFfSB0aW1lIGZpZWxkIGluIHRoZSBjYWxlbmRhci4KKyAgICAgKiBAcGFyYW0gaG91ciAgdGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSB7QGxpbmsgI0hPVVJfT0ZfREFZIEhPVVJfT0ZfREFZfSB0aW1lIGZpZWxkCisgICAgICogICAgICAgICAgICAgIGluIHRoZSBjYWxlbmRhci4KKyAgICAgKiBAcGFyYW0gbWludXRlIHRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUge0BsaW5rICNNSU5VVEUgTUlOVVRFfSB0aW1lIGZpZWxkCisgICAgICogICAgICAgICAgICAgIGluIHRoZSBjYWxlbmRhci4KKyAgICAgKiBAcGFyYW0gc2Vjb25kIHRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUge0BsaW5rICNTRUNPTkQgU0VDT05EfSB0aW1lIGZpZWxkCisgICAgICogICAgICAgICAgICAgIGluIHRoZSBjYWxlbmRhci4KKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBJc2xhbWljQ2FsZW5kYXIoaW50IHllYXIsIGludCBtb250aCwgaW50IGRhdGUsIGludCBob3VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWludXRlLCBpbnQgc2Vjb25kKQorICAgIHsKKyAgICAgICAgc3VwZXIoVGltZVpvbmUuZ2V0RGVmYXVsdCgpLCBMb2NhbGUuZ2V0RGVmYXVsdCgpKTsKKyAgICAgICAgdGhpcy5zZXQoQ2FsZW5kYXIuWUVBUiwgeWVhcik7CisgICAgICAgIHRoaXMuc2V0KENhbGVuZGFyLk1PTlRILCBtb250aCk7CisgICAgICAgIHRoaXMuc2V0KENhbGVuZGFyLkRBVEUsIGRhdGUpOworICAgICAgICB0aGlzLnNldChDYWxlbmRhci5IT1VSX09GX0RBWSwgaG91cik7CisgICAgICAgIHRoaXMuc2V0KENhbGVuZGFyLk1JTlVURSwgbWludXRlKTsKKyAgICAgICAgdGhpcy5zZXQoQ2FsZW5kYXIuU0VDT05ELCBzZWNvbmQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIERldGVybWluZXMgd2hldGhlciB0aGlzIG9iamVjdCB1c2VzIHRoZSBmaXhlZC1jeWNsZSBJc2xhbWljIGNpdmlsIGNhbGVuZGFyCisgICAgICogb3IgYW4gYXBwcm94aW1hdGlvbiBvZiB0aGUgcmVsaWdpb3VzLCBhc3Ryb25vbWljYWwgY2FsZW5kYXIuCisgICAgICoKKyAgICAgKiBAcGFyYW0gYmVDaXZpbCAgIDxjb2RlPnRydWU8L2NvZGU+IHRvIHVzZSB0aGUgY2l2aWwgY2FsZW5kYXIsCisgICAgICogICAgICAgICAgICAgICAgICA8Y29kZT5mYWxzZTwvY29kZT4gdG8gdXNlIHRoZSBhc3Ryb25vbWljYWwgY2FsZW5kYXIuCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRDaXZpbChib29sZWFuIGJlQ2l2aWwpCisgICAgeworICAgICAgICBpZiAoY2l2aWwgIT0gYmVDaXZpbCkgeworICAgICAgICAgICAgLy8gVGhlIGZpZWxkcyBvZiB0aGUgY2FsZW5kYXIgd2lsbCBiZWNvbWUgaW52YWxpZCwgYmVjYXVzZSB0aGUgY2FsZW5kYXIKKyAgICAgICAgICAgIC8vIHJ1bGVzIGFyZSBkaWZmZXJlbnQKKyAgICAgICAgICAgIGxvbmcgbSA9IGdldFRpbWVJbk1pbGxpcygpOworICAgICAgICAgICAgY2l2aWwgPSBiZUNpdmlsOworICAgICAgICAgICAgY2xlYXIoKTsKKyAgICAgICAgICAgIHNldFRpbWVJbk1pbGxpcyhtKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoaXMgb2JqZWN0IGlzIHVzaW5nIHRoZSBmaXhlZC1jeWNsZSBjaXZpbAorICAgICAqIGNhbGVuZGFyLCBvciA8Y29kZT5mYWxzZTwvY29kZT4gaWYgdXNpbmcgdGhlIHJlbGlnaW91cywgYXN0cm9ub21pY2FsCisgICAgICogY2FsZW5kYXIuCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc0NpdmlsKCkgeworICAgICAgICByZXR1cm4gY2l2aWw7CisgICAgfQorICAgIAorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIE1pbmltdW0gLyBNYXhpbXVtIGFjY2VzcyBmdW5jdGlvbnMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBMSU1JVFNbXVtdID0geworICAgICAgICAvLyBNaW5pbXVtICBHcmVhdGVzdCAgICBMZWFzdCAgTWF4aW11bQorICAgICAgICAvLyAgICAgICAgICAgTWluaW11bSAgTWF4aW11bQorICAgICAgICB7ICAgICAgICAwLCAgICAgICAgMCwgICAgICAgMCwgICAgICAgMCB9LCAvLyBFUkEKKyAgICAgICAgeyAgICAgICAgMSwgICAgICAgIDEsIDUwMDAwMDAsIDUwMDAwMDAgfSwgLy8gWUVBUgorICAgICAgICB7ICAgICAgICAwLCAgICAgICAgMCwgICAgICAxMSwgICAgICAxMSB9LCAvLyBNT05USAorICAgICAgICB7ICAgICAgICAxLCAgICAgICAgMSwgICAgICA1MSwgICAgICA1MiB9LCAvLyBXRUVLX09GX1lFQVIKKyAgICAgICAgeyAgICAgICAgMCwgICAgICAgIDAsICAgICAgIDUsICAgICAgIDYgfSwgLy8gV0VFS19PRl9NT05USAorICAgICAgICB7ICAgICAgICAxLCAgICAgICAgMSwgICAgICAyOSwgICAgICAzMCB9LCAvLyBEQVlfT0ZfTU9OVEgKKyAgICAgICAgeyAgICAgICAgMSwgICAgICAgIDEsICAgICAzNTQsICAgICAzNTUgfSwgLy8gREFZX09GX1lFQVIKKyAgICAgICAgey8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovfSwgLy8gREFZX09GX1dFRUsKKyAgICAgICAgeyAgICAgICAtMSwgICAgICAgLTEsICAgICAgIDQsICAgICAgIDUgfSwgLy8gREFZX09GX1dFRUtfSU5fTU9OVEgKKyAgICAgICAgey8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovfSwgLy8gQU1fUE0KKyAgICAgICAgey8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovfSwgLy8gSE9VUgorICAgICAgICB7LyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi99LCAvLyBIT1VSX09GX0RBWQorICAgICAgICB7LyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi99LCAvLyBNSU5VVEUKKyAgICAgICAgey8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovfSwgLy8gU0VDT05ECisgICAgICAgIHsvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL30sIC8vIE1JTExJU0VDT05ECisgICAgICAgIHsvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL30sIC8vIFpPTkVfT0ZGU0VUCisgICAgICAgIHsvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL30sIC8vIERTVF9PRkZTRVQKKyAgICAgICAgeyAtNTAwMDAwMSwgLTUwMDAwMDEsIDUwMDAwMDEsIDUwMDAwMDEgfSwgLy8gWUVBUl9XT1kKKyAgICAgICAgey8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovfSwgLy8gRE9XX0xPQ0FMCisgICAgICAgIHsgLTUwMDAwMDAsIC01MDAwMDAwLCA1MDAwMDAwLCA1MDAwMDAwIH0sIC8vIEVYVEVOREVEX1lFQVIKKyAgICAgICAgey8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovfSwgLy8gSlVMSUFOX0RBWQorICAgICAgICB7LyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi99LCAvLyBNSUxMSVNFQ09ORFNfSU5fREFZCisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHJvdGVjdGVkIGludCBoYW5kbGVHZXRMaW1pdChpbnQgZmllbGQsIGludCBsaW1pdFR5cGUpIHsKKyAgICAgICAgcmV0dXJuIExJTUlUU1tmaWVsZF1bbGltaXRUeXBlXTsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBBc3NvcnRlZCBjYWxjdWxhdGlvbiB1dGlsaXRpZXMKKyAgICAvLworCisgICAgLyoqCisgICAgICogRmluZCB0aGUgZGF5IG9mIHRoZSB3ZWVrIGZvciBhIGdpdmVuIGRheQorICAgICAqCisgICAgICogQHBhcmFtIGRheSAgIFRoZSAjIG9mIGRheXMgc2luY2UgdGhlIHN0YXJ0IG9mIHRoZSBJc2xhbWljIGNhbGVuZGFyLgorICAgICAqLworICAgIC8vIHByaXZhdGUgYW5kIHVuY2FsbGVkLCBwZXJoYXBzIG5vdCB1c2VkIHlldD8KKyAgICAvLy9DTE9WRVI6T0ZGCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IGFic29sdXRlRGF5VG9EYXlPZldlZWsobG9uZyBkYXkpCisgICAgeworICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIGRheSBvZiB0aGUgd2Vlay4KKyAgICAgICAgLy8gVGhpcyByZWxpZXMgb24gdGhlIGZhY3QgdGhhdCB0aGUgZXBvY2ggd2FzIGEgVGh1cnNkYXkuCisgICAgICAgIGludCBkYXlPZldlZWsgPSAoaW50KShkYXkgKyBUSFVSU0RBWSkgJSA3ICsgU1VOREFZOworICAgICAgICBpZiAoZGF5T2ZXZWVrIDwgMCkgeworICAgICAgICAgICAgZGF5T2ZXZWVrICs9IDc7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGRheU9mV2VlazsKKyAgICB9CisgICAgLy8vQ0xPVkVSOk9OCisKKyAgICAvKioKKyAgICAgKiBEZXRlcm1pbmUgd2hldGhlciBhIHllYXIgaXMgYSBsZWFwIHllYXIgaW4gdGhlIElzbGFtaWMgY2l2aWwgY2FsZW5kYXIKKyAgICAgKi8KKyAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBib29sZWFuIGNpdmlsTGVhcFllYXIoaW50IHllYXIpCisgICAgeworICAgICAgICByZXR1cm4gKDE0ICsgMTEgKiB5ZWFyKSAlIDMwIDwgMTE7CisgICAgICAgIAorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGRheSAjIG9uIHdoaWNoIHRoZSBnaXZlbiB5ZWFyIHN0YXJ0cy4gIERheXMgYXJlIGNvdW50ZWQKKyAgICAgKiBmcm9tIHRoZSBIaWpyaSBlcG9jaCwgb3JpZ2luIDAuCisgICAgICovCisgICAgcHJpdmF0ZSBsb25nIHllYXJTdGFydChpbnQgeWVhcikgeworICAgICAgICBpZiAoY2l2aWwpIHsKKyAgICAgICAgICAgIHJldHVybiAoeWVhci0xKSozNTQgKyAobG9uZylNYXRoLmZsb29yKCgzKzExKnllYXIpLzMwLjApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHRydWVNb250aFN0YXJ0KDEyKih5ZWFyLTEpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGRheSAjIG9uIHdoaWNoIHRoZSBnaXZlbiBtb250aCBzdGFydHMuICBEYXlzIGFyZSBjb3VudGVkCisgICAgICogZnJvbSB0aGUgSGlqcmkgZXBvY2gsIG9yaWdpbiAwLgorICAgICAqCisgICAgICogQHBhcmFtIHllYXIgIFRoZSBoaWpyaSB5ZWFyCisgICAgICogQHBhcmFtIHllYXIgIFRoZSBoaWpyaSBtb250aCwgMC1iYXNlZAorICAgICAqLworICAgIHByaXZhdGUgbG9uZyBtb250aFN0YXJ0KGludCB5ZWFyLCBpbnQgbW9udGgpIHsKKyAgICAgICAgaWYgKGNpdmlsKSB7CisgICAgICAgICAgICByZXR1cm4gKGxvbmcpTWF0aC5jZWlsKDI5LjUqbW9udGgpCisgICAgICAgICAgICAgICAgICAgICsgKHllYXItMSkqMzU0ICsgKGxvbmcpTWF0aC5mbG9vcigoMysxMSp5ZWFyKS8zMC4wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlTW9udGhTdGFydCgxMiooeWVhci0xKSArIG1vbnRoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBGaW5kIHRoZSBkYXkgbnVtYmVyIG9uIHdoaWNoIGEgcGFydGljdWxhciBtb250aCBvZiB0aGUgdHJ1ZS9sdW5hcgorICAgICAqIElzbGFtaWMgY2FsZW5kYXIgc3RhcnRzLgorICAgICAqCisgICAgICogQHBhcmFtIG1vbnRoIFRoZSBtb250aCBpbiBxdWVzdGlvbiwgb3JpZ2luIDAgZnJvbSB0aGUgSGlqcmkgZXBvY2gKKyAgICAgKgorICAgICAqIEByZXR1cm4gVGhlIGRheSBudW1iZXIgb24gd2hpY2ggdGhlIGdpdmVuIG1vbnRoIHN0YXJ0cy4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHRydWVNb250aFN0YXJ0KGxvbmcgbW9udGgpCisgICAgeworICAgICAgICBsb25nIHN0YXJ0ID0gY2FjaGUuZ2V0KG1vbnRoKTsKKworICAgICAgICBpZiAoc3RhcnQgPT0gQ2FsZW5kYXJDYWNoZS5FTVBUWSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gTWFrZSBhIGd1ZXNzIGF0IHdoZW4gdGhlIG1vbnRoIHN0YXJ0ZWQsIHVzaW5nIHRoZSBhdmVyYWdlIGxlbmd0aAorICAgICAgICAgICAgbG9uZyBvcmlnaW4gPSBISUpSQV9NSUxMSVMgCisgICAgICAgICAgICAgICAgICAgICAgICArIChsb25nKU1hdGguZmxvb3IobW9udGggKiBDYWxlbmRhckFzdHJvbm9tZXIuU1lOT0RJQ19NT05USCAtIDEpICogT05FX0RBWTsKKworICAgICAgICAgICAgZG91YmxlIGFnZSA9IG1vb25BZ2Uob3JpZ2luKTsKKworICAgICAgICAgICAgaWYgKG1vb25BZ2Uob3JpZ2luKSA+PSAwKSB7CisgICAgICAgICAgICAgICAgLy8gVGhlIG1vbnRoIGhhcyBhbHJlYWR5IHN0YXJ0ZWQKKyAgICAgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgICAgIG9yaWdpbiAtPSBPTkVfREFZOworICAgICAgICAgICAgICAgICAgICBhZ2UgPSBtb29uQWdlKG9yaWdpbik7CisgICAgICAgICAgICAgICAgfSB3aGlsZSAoYWdlID49IDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gUHJlY2VkaW5nIG1vbnRoIGhhcyBub3QgZW5kZWQgeWV0LgorICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgb3JpZ2luICs9IE9ORV9EQVk7CisgICAgICAgICAgICAgICAgICAgIGFnZSA9IG1vb25BZ2Uob3JpZ2luKTsKKyAgICAgICAgICAgICAgICB9IHdoaWxlIChhZ2UgPCAwKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3RhcnQgPSAob3JpZ2luIC0gSElKUkFfTUlMTElTKSAvIE9ORV9EQVkgKyAxOworICAgICAgICAgICAgCisgICAgICAgICAgICBjYWNoZS5wdXQobW9udGgsIHN0YXJ0KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc3RhcnQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSAiYWdlIiBvZiB0aGUgbW9vbiBhdCB0aGUgZ2l2ZW4gdGltZTsgdGhpcyBpcyB0aGUgZGlmZmVyZW5jZQorICAgICAqIGluIGVjbGlwdGljIGxhdGl0dWRlIGJldHdlZW4gdGhlIG1vb24gYW5kIHRoZSBzdW4uICBUaGlzIG1ldGhvZCBzaW1wbHkKKyAgICAgKiBjYWxscyBDYWxlbmRhckFzdHJvbm9tZXIubW9vbkFnZSwgY29udmVydHMgdG8gZGVncmVlcywgCisgICAgICogYW5kIGFkanVzdHMgdGhlIHJlc3VsdHRvIGJlIGluIHRoZSByYW5nZSBbLTE4MCwgMTgwXS4KKyAgICAgKgorICAgICAqIEBwYXJhbSB0aW1lICBUaGUgdGltZSBhdCB3aGljaCB0aGUgbW9vbidzIGFnZSBpcyBkZXNpcmVkLAorICAgICAqICAgICAgICAgICAgICBpbiBtaWxsaXMgc2luY2UgMS8xLzE5NzAuCisgICAgICovCisgICAgc3RhdGljIGZpbmFsIGRvdWJsZSBtb29uQWdlKGxvbmcgdGltZSkKKyAgICB7CisgICAgICAgIGRvdWJsZSBhZ2UgPSAwOworICAgICAgICAKKyAgICAgICAgc3luY2hyb25pemVkKGFzdHJvKSB7CisgICAgICAgICAgICBhc3Ryby5zZXRUaW1lKHRpbWUpOworICAgICAgICAgICAgYWdlID0gYXN0cm8uZ2V0TW9vbkFnZSgpOworICAgICAgICB9CisgICAgICAgIC8vIENvbnZlcnQgdG8gZGVncmVlcyBhbmQgbm9ybWFsaXplLi4uCisgICAgICAgIGFnZSA9IGFnZSAqIDE4MCAvIE1hdGguUEk7CisgICAgICAgIGlmIChhZ2UgPiAxODApIHsKKyAgICAgICAgICAgIGFnZSA9IGFnZSAtIDM2MDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBhZ2U7CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gSW50ZXJuYWwgZGF0YS4uLi4KKyAgICAvLworICAgIAorICAgIC8vIEFuZCBhbiBBc3Ryb25vbWVyIG9iamVjdCBmb3IgdGhlIG1vb24gYWdlIGNhbGN1bGF0aW9ucworICAgIHByaXZhdGUgc3RhdGljIENhbGVuZGFyQXN0cm9ub21lciBhc3RybyA9IG5ldyBDYWxlbmRhckFzdHJvbm9tZXIoKTsKKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBDYWxlbmRhckNhY2hlIGNhY2hlID0gbmV3IENhbGVuZGFyQ2FjaGUoKTsKKyAgICAKKyAgICAvKioKKyAgICAgKiA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGlzIG9iamVjdCB1c2VzIHRoZSBmaXhlZC1jeWNsZSBJc2xhbWljIGNpdmlsIGNhbGVuZGFyLAorICAgICAqIGFuZCA8Y29kZT5mYWxzZTwvY29kZT4gaWYgaXQgYXBwcm94aW1hdGVzIHRoZSB0cnVlIHJlbGlnaW91cyBjYWxlbmRhciB1c2luZworICAgICAqIGFzdHJvbm9taWNhbCBjYWxjdWxhdGlvbnMgZm9yIHRoZSB0aW1lIG9mIHRoZSBuZXcgbW9vbi4KKyAgICAgKgorICAgICAqIEBzZXJpYWwKKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gY2l2aWwgPSB0cnVlOworCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gQ2FsZW5kYXIgZnJhbWV3b3JrCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGxlbmd0aCAoaW4gZGF5cykgb2YgdGhlIGdpdmVuIG1vbnRoLgorICAgICAqCisgICAgICogQHBhcmFtIHllYXIgIFRoZSBoaWpyaSB5ZWFyCisgICAgICogQHBhcmFtIHllYXIgIFRoZSBoaWpyaSBtb250aCwgMC1iYXNlZAorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHJvdGVjdGVkIGludCBoYW5kbGVHZXRNb250aExlbmd0aChpbnQgZXh0ZW5kZWRZZWFyLCBpbnQgbW9udGgpIHsKKworICAgICAgICBpbnQgbGVuZ3RoID0gMDsKKyAgICAgICAgCisgICAgICAgIGlmIChjaXZpbCkgeworICAgICAgICAgICAgbGVuZ3RoID0gMjkgKyAobW9udGgrMSkgJSAyOworICAgICAgICAgICAgaWYgKG1vbnRoID09IERIVV9BTF9ISUpKQUggJiYgY2l2aWxMZWFwWWVhcihleHRlbmRlZFllYXIpKSB7CisgICAgICAgICAgICAgICAgbGVuZ3RoKys7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtb250aCA9IDEyKihleHRlbmRlZFllYXItMSkgKyBtb250aDsKKyAgICAgICAgICAgIGxlbmd0aCA9IChpbnQpKCB0cnVlTW9udGhTdGFydChtb250aCsxKSAtIHRydWVNb250aFN0YXJ0KG1vbnRoKSApOworICAgICAgICB9CisgICAgICAgIHJldHVybiBsZW5ndGg7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBudW1iZXIgb2YgZGF5cyBpbiB0aGUgZ2l2ZW4gSXNsYW1pYyB5ZWFyCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgaW50IGhhbmRsZUdldFllYXJMZW5ndGgoaW50IGV4dGVuZGVkWWVhcikgeworICAgICAgICBpZiAoY2l2aWwpIHsKKyAgICAgICAgICAgIHJldHVybiAzNTQgKyAoY2l2aWxMZWFwWWVhcihleHRlbmRlZFllYXIpID8gMSA6IDApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaW50IG1vbnRoID0gMTIqKGV4dGVuZGVkWWVhci0xKTsKKyAgICAgICAgICAgIHJldHVybiAoaW50KSh0cnVlTW9udGhTdGFydChtb250aCArIDEyKSAtIHRydWVNb250aFN0YXJ0KG1vbnRoKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gRnVuY3Rpb25zIGZvciBjb252ZXJ0aW5nIGZyb20gZmllbGQgdmFsdWVzIHRvIG1pbGxpc2Vjb25kcy4uLi4KKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8vIFJldHVybiBKRCBvZiBzdGFydCBvZiBnaXZlbiBtb250aC95ZWFyCisgICAgLyoqCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgaW50IGhhbmRsZUNvbXB1dGVNb250aFN0YXJ0KGludCBleWVhciwgaW50IG1vbnRoLCBib29sZWFuIHVzZU1vbnRoKSB7CisgICAgICAgIHJldHVybiAoaW50KSBtb250aFN0YXJ0KGV5ZWFyLCBtb250aCkgKyAxOTQ4NDM5OworICAgIH0gICAgCisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBGdW5jdGlvbnMgZm9yIGNvbnZlcnRpbmcgZnJvbSBtaWxsaXNlY29uZHMgdG8gZmllbGQgdmFsdWVzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHByb3RlY3RlZCBpbnQgaGFuZGxlR2V0RXh0ZW5kZWRZZWFyKCkgeworICAgICAgICBpbnQgeWVhcjsKKyAgICAgICAgaWYgKG5ld2VyRmllbGQoRVhURU5ERURfWUVBUiwgWUVBUikgPT0gRVhURU5ERURfWUVBUikgeworICAgICAgICAgICAgeWVhciA9IGludGVybmFsR2V0KEVYVEVOREVEX1lFQVIsIDEpOyAvLyBEZWZhdWx0IHRvIHllYXIgMQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgeWVhciA9IGludGVybmFsR2V0KFlFQVIsIDEpOyAvLyBEZWZhdWx0IHRvIHllYXIgMQorICAgICAgICB9CisgICAgICAgIHJldHVybiB5ZWFyOworICAgIH0KKworICAgIC8qKgorICAgICAqIE92ZXJyaWRlIENhbGVuZGFyIHRvIGNvbXB1dGUgc2V2ZXJhbCBmaWVsZHMgc3BlY2lmaWMgdG8gdGhlIElzbGFtaWMKKyAgICAgKiBjYWxlbmRhciBzeXN0ZW0uICBUaGVzZSBhcmU6CisgICAgICoKKyAgICAgKiA8dWw+PGxpPkVSQQorICAgICAqIDxsaT5ZRUFSCisgICAgICogPGxpPk1PTlRICisgICAgICogPGxpPkRBWV9PRl9NT05USAorICAgICAqIDxsaT5EQVlfT0ZfWUVBUgorICAgICAqIDxsaT5FWFRFTkRFRF9ZRUFSPC91bD4KKyAgICAgKiAKKyAgICAgKiBUaGUgREFZX09GX1dFRUsgYW5kIERPV19MT0NBTCBmaWVsZHMgYXJlIGFscmVhZHkgc2V0IHdoZW4gdGhpcworICAgICAqIG1ldGhvZCBpcyBjYWxsZWQuIFRoZSBnZXRHcmVnb3JpYW5YeHgoKSBtZXRob2RzIHJldHVybiBHcmVnb3JpYW4KKyAgICAgKiBjYWxlbmRhciBlcXVpdmFsZW50cyBmb3IgdGhlIGdpdmVuIEp1bGlhbiBkYXkuCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVDb21wdXRlRmllbGRzKGludCBqdWxpYW5EYXkpIHsKKyAgICAgICAgaW50IHllYXIsIG1vbnRoLCBkYXlPZk1vbnRoLCBkYXlPZlllYXI7CisgICAgICAgIGxvbmcgbW9udGhTdGFydDsKKyAgICAgICAgbG9uZyBkYXlzID0ganVsaWFuRGF5IC0gMTk0ODQ0MDsKKworICAgICAgICBpZiAoY2l2aWwpIHsKKyAgICAgICAgICAgIC8vIFVzZSB0aGUgY2l2aWwgY2FsZW5kYXIgYXBwcm94aW1hdGlvbiwgd2hpY2ggaXMganVzdCBhcml0aG1ldGljCisgICAgICAgICAgICB5ZWFyICA9IChpbnQpTWF0aC5mbG9vciggKDMwICogZGF5cyArIDEwNjQ2KSAvIDEwNjMxLjAgKTsKKyAgICAgICAgICAgIG1vbnRoID0gKGludClNYXRoLmNlaWwoKGRheXMgLSAyOSAtIHllYXJTdGFydCh5ZWFyKSkgLyAyOS41ICk7CisgICAgICAgICAgICBtb250aCA9IE1hdGgubWluKG1vbnRoLCAxMSk7CisgICAgICAgICAgICBtb250aFN0YXJ0ID0gbW9udGhTdGFydCh5ZWFyLCBtb250aCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBHdWVzcyBhdCB0aGUgbnVtYmVyIG9mIGVsYXBzZWQgZnVsbCBtb250aHMgc2luY2UgdGhlIGVwb2NoCisgICAgICAgICAgICBpbnQgbW9udGhzID0gKGludClNYXRoLmZsb29yKGRheXMgLyBDYWxlbmRhckFzdHJvbm9tZXIuU1lOT0RJQ19NT05USCk7CisKKyAgICAgICAgICAgIG1vbnRoU3RhcnQgPSAobG9uZylNYXRoLmZsb29yKG1vbnRocyAqIENhbGVuZGFyQXN0cm9ub21lci5TWU5PRElDX01PTlRIIC0gMSk7CisKKyAgICAgICAgICAgIGlmICggZGF5cyAtIG1vbnRoU3RhcnQgPj0gMjggJiYgbW9vbkFnZShpbnRlcm5hbEdldFRpbWVJbk1pbGxpcygpKSA+IDApIHsKKyAgICAgICAgICAgICAgICAvLyBJZiB3ZSdyZSBuZWFyIHRoZSBlbmQgb2YgdGhlIG1vbnRoLCBhc3N1bWUgbmV4dCBtb250aCBhbmQgc2VhcmNoIGJhY2t3YXJkcworICAgICAgICAgICAgICAgIG1vbnRocysrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBGaW5kIG91dCB0aGUgbGFzdCB0aW1lIHRoYXQgdGhlIG5ldyBtb29uIHdhcyBhY3R1YWxseSB2aXNpYmxlIGF0IHRoaXMgbG9uZ2l0dWRlCisgICAgICAgICAgICAvLyBUaGlzIHJldHVybnMgbWlkbmlnaHQgdGhlIG5pZ2h0IHRoYXQgdGhlIG1vb24gd2FzIHZpc2libGUgYXQgc3Vuc2V0LgorICAgICAgICAgICAgd2hpbGUgKChtb250aFN0YXJ0ID0gdHJ1ZU1vbnRoU3RhcnQobW9udGhzKSkgPiBkYXlzKSB7CisgICAgICAgICAgICAgICAgLy8gSWYgaXQgd2FzIGFmdGVyIHRoZSBkYXRlIGluIHF1ZXN0aW9uLCBiYWNrIHVwIGEgbW9udGggYW5kIHRyeSBhZ2FpbgorICAgICAgICAgICAgICAgIG1vbnRocy0tOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB5ZWFyID0gbW9udGhzIC8gMTIgKyAxOworICAgICAgICAgICAgbW9udGggPSBtb250aHMgJSAxMjsKKyAgICAgICAgfQorCisgICAgICAgIGRheU9mTW9udGggPSAoaW50KShkYXlzIC0gbW9udGhTdGFydCh5ZWFyLCBtb250aCkpICsgMTsKKworICAgICAgICAvLyBOb3cgZmlndXJlIG91dCB0aGUgZGF5IG9mIHRoZSB5ZWFyLgorICAgICAgICBkYXlPZlllYXIgPSAoaW50KShkYXlzIC0gbW9udGhTdGFydCh5ZWFyLCAwKSArIDEpOworCisgICAgICAgIGludGVybmFsU2V0KEVSQSwgMCk7CisgICAgICAgIGludGVybmFsU2V0KFlFQVIsIHllYXIpOworICAgICAgICBpbnRlcm5hbFNldChFWFRFTkRFRF9ZRUFSLCB5ZWFyKTsKKyAgICAgICAgaW50ZXJuYWxTZXQoTU9OVEgsIG1vbnRoKTsKKyAgICAgICAgaW50ZXJuYWxTZXQoREFZX09GX01PTlRILCBkYXlPZk1vbnRoKTsKKyAgICAgICAgaW50ZXJuYWxTZXQoREFZX09GX1lFQVIsIGRheU9mWWVhcik7ICAgICAgIAorICAgIH0gICAgCisKKyAgICAvKgorICAgIHByaXZhdGUgc3RhdGljIENhbGVuZGFyRmFjdG9yeSBmYWN0b3J5OworICAgIHB1YmxpYyBzdGF0aWMgQ2FsZW5kYXJGYWN0b3J5IGZhY3RvcnkoKSB7CisgICAgICAgIGlmIChmYWN0b3J5ID09IG51bGwpIHsKKyAgICAgICAgICAgIGZhY3RvcnkgPSBuZXcgQ2FsZW5kYXJGYWN0b3J5KCkgeworICAgICAgICAgICAgICAgIHB1YmxpYyBDYWxlbmRhciBjcmVhdGUoVGltZVpvbmUgdHosIExvY2FsZSBsb2MpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBJc2xhbWljQ2FsZW5kYXIodHosIGxvYyk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcHVibGljIFN0cmluZyBmYWN0b3J5TmFtZSgpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJJc2xhbWljIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9OworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWN0b3J5OworICAgIH0KKyAgICAqLworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3V0aWwvSmFwYW5lc2VDYWxlbmRhci5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L3V0aWwvSmFwYW5lc2VDYWxlbmRhci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjEyYmQwOGMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdXRpbC9KYXBhbmVzZUNhbGVuZGFyLmphdmEKQEAgLTAsMCArMSw1ODcgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS91dGlsL0phcGFuZXNlQ2FsZW5kYXIuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8xMi8xOCAxOTozNTowNyAkIAorICogJFJldmlzaW9uOiAxLjEzICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS51dGlsOworCitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKKworLyoqCisgKiA8Y29kZT5KYXBhbmVzZUNhbGVuZGFyPC9jb2RlPiBpcyBhIHN1YmNsYXNzIG9mIDxjb2RlPkdyZWdvcmlhbkNhbGVuZGFyPC9jb2RlPgorICogdGhhdCBudW1iZXJzIHllYXJzIGFuZCBlcmFzIGJhc2VkIG9uIHRoZSByZWlnbnMgb2YgdGhlIEphcGFuZXNlIGVtcGVyb3JzLgorICogVGhlIEphcGFuZXNlIGNhbGVuZGFyIGlzIGlkZW50aWNhbCB0byB0aGUgR3JlZ29yaWFuIGNhbGVuZGFyIGluIGFsbCByZXNwZWN0cworICogZXhjZXB0IGZvciB0aGUgeWVhciBhbmQgZXJhLiAgVGhlIGFzY2Vuc2lvbiBvZiBlYWNoICBlbXBlcm9yIHRvIHRoZSB0aHJvbmUKKyAqIGJlZ2lucyBhIG5ldyBlcmEsIGFuZCB0aGUgeWVhcnMgb2YgdGhhdCBlcmEgYXJlIG51bWJlcmVkIHN0YXJ0aW5nIHdpdGggdGhlCisgKiB5ZWFyIG9mIGFzY2Vuc2lvbiBhcyB5ZWFyIDEuCisgKiA8cD4KKyAqIE5vdGUgdGhhdCBpbiB0aGUgeWVhciBvZiBhbiBpbXBlcmlhbCBhc2NlbnNpb24sIHRoZXJlIGFyZSB0d28gcG9zc2libGUgc2V0cworICogb2YgeWVhciBhbmQgZXJhIHZhbHVlczogdGhhdCBmb3IgdGhlIG9sZCBlcmEgYW5kIGZvciB0aGUgbmV3LiAgRm9yIGV4YW1wbGUsIGEKKyAqIG5ldyBlcmEgYmVnYW4gb24gSmFudWFyeSA3LCAxOTg5IEFELiAgU3RyaWN0bHkgc3BlYWtpbmcsIHRoZSBmaXJzdCBzaXggZGF5cworICogb2YgdGhhdCB5ZWFyIHdlcmUgaW4gdGhlIFNob3dhIGVyYSwgZS5nLiAiSmFudWFyeSA2LCA2NCBTaG93YSIsIHdoaWxlIHRoZSByZXN0CisgKiBvZiB0aGUgeWVhciB3YXMgaW4gdGhlIEhlaXNlaSBlcmEsIGUuZy4gIkphbnVhcnkgNywgMSBIZWlzZWkiLiAgVGhpcyBjbGFzcworICogaGFuZGxlcyB0aGlzIGRpc3RpbmN0aW9uIGNvcnJlY3RseSB3aGVuIGNvbXB1dGluZyBkYXRlcy4gIEhvd2V2ZXIsIGluIGxlbmllbnQKKyAqIG1vZGUgZWl0aGVyIGZvcm0gb2YgZGF0ZSBpcyBhY2NlcHRhYmxlIGFzIGlucHV0LiAKKyAqIDxwPgorICogSW4gbW9kZXJuIHRpbWVzLCBlcmFzIGhhdmUgc3RhcnRlZCBvbiBKYW51YXJ5IDgsIDE4NjggQUQsIEdyZWdvcmlhbiAoTWVpamkpLAorICogSnVseSAzMCwgMTkxMiAoVGFpc2hvKSwgRGVjZW1iZXIgMjUsIDE5MjYgKFNob3dhKSwgYW5kIEphbnVhcnkgNywgMTk4OSAoSGVpc2VpKS4gIENvbnN0YW50cworICogZm9yIHRoZXNlIGVyYXMsIHN1aXRhYmxlIGZvciB1c2UgaW4gdGhlIDxjb2RlPkVSQTwvY29kZT4gZmllbGQsIGFyZSBwcm92aWRlZAorICogaW4gdGhpcyBjbGFzcy4gIE5vdGUgdGhhdCB0aGUgPGVtPm51bWJlcjwvZW0+IHVzZWQgZm9yIGVhY2ggZXJhIGlzIG1vcmUgb3IKKyAqIGxlc3MgYXJiaXRyYXJ5LiAgQ3VycmVudGx5LCB0aGUgZXJhIHN0YXJ0aW5nIGluIDEwNTMgQUQgaXMgZXJhICMwOyBob3dldmVyIHRoaXMKKyAqIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSBhcyB3ZSBhZGQgbW9yZSBoaXN0b3JpY2FsIGRhdGEuICBVc2UgdGhlIHByZWRlZmluZWQKKyAqIGNvbnN0YW50cyByYXRoZXIgdGhhbiB1c2luZyBhY3R1YWwsIGFic29sdXRlIG51bWJlcnMuCisgKiA8cD4KKyAqCisgKiBAc2VlIGNvbS5pYm0uaWN1LnV0aWwuR3JlZ29yaWFuQ2FsZW5kYXIKKyAqCisgKiBAYXV0aG9yIExhdXJhIFdlcm5lcgorICogQGF1dGhvciBBbGFuIExpdQorICogQGRyYWZ0IElDVSAyLjQKKyAqLworcHVibGljIGNsYXNzIEphcGFuZXNlQ2FsZW5kYXIgZXh0ZW5kcyBHcmVnb3JpYW5DYWxlbmRhciB7CisgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGNvcHlyaWdodCA9ICJDb3B5cmlnaHQgXHUwMGE5IDE5OTggSUJNIENvcnAuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuIjsKKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIENvbnN0cnVjdG9ycy4uLgorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIGRlZmF1bHQgPGNvZGU+SmFwYW5lc2VDYWxlbmRhcjwvY29kZT4gdXNpbmcgdGhlIGN1cnJlbnQgdGltZQorICAgICAqIGluIHRoZSBkZWZhdWx0IHRpbWUgem9uZSB3aXRoIHRoZSBkZWZhdWx0IGxvY2FsZS4KKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBKYXBhbmVzZUNhbGVuZGFyKCkgeworICAgICAgICBzdXBlcigpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSA8Y29kZT5KYXBhbmVzZUNhbGVuZGFyPC9jb2RlPiBiYXNlZCBvbiB0aGUgY3VycmVudCB0aW1lCisgICAgICogaW4gdGhlIGdpdmVuIHRpbWUgem9uZSB3aXRoIHRoZSBkZWZhdWx0IGxvY2FsZS4KKyAgICAgKiBAcGFyYW0gem9uZSB0aGUgZ2l2ZW4gdGltZSB6b25lLgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIEphcGFuZXNlQ2FsZW5kYXIoVGltZVpvbmUgem9uZSkgeworICAgICAgICBzdXBlcih6b25lKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgPGNvZGU+SmFwYW5lc2VDYWxlbmRhcjwvY29kZT4gYmFzZWQgb24gdGhlIGN1cnJlbnQgdGltZQorICAgICAqIGluIHRoZSBkZWZhdWx0IHRpbWUgem9uZSB3aXRoIHRoZSBnaXZlbiBsb2NhbGUuCisgICAgICogQHBhcmFtIGFMb2NhbGUgdGhlIGdpdmVuIGxvY2FsZS4KKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBKYXBhbmVzZUNhbGVuZGFyKExvY2FsZSBhTG9jYWxlKSB7CisgICAgICAgIHN1cGVyKGFMb2NhbGUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSA8Y29kZT5KYXBhbmVzZUNhbGVuZGFyPC9jb2RlPiBiYXNlZCBvbiB0aGUgY3VycmVudCB0aW1lCisgICAgICogaW4gdGhlIGdpdmVuIHRpbWUgem9uZSB3aXRoIHRoZSBnaXZlbiBsb2NhbGUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gem9uZSB0aGUgZ2l2ZW4gdGltZSB6b25lLgorICAgICAqCisgICAgICogQHBhcmFtIGFMb2NhbGUgdGhlIGdpdmVuIGxvY2FsZS4KKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBKYXBhbmVzZUNhbGVuZGFyKFRpbWVab25lIHpvbmUsIExvY2FsZSBhTG9jYWxlKSB7CisgICAgICAgIHN1cGVyKHpvbmUsIGFMb2NhbGUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSA8Y29kZT5KYXBhbmVzZUNhbGVuZGFyPC9jb2RlPiB3aXRoIHRoZSBnaXZlbiBkYXRlIHNldAorICAgICAqIGluIHRoZSBkZWZhdWx0IHRpbWUgem9uZSB3aXRoIHRoZSBkZWZhdWx0IGxvY2FsZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBkYXRlICAgICAgVGhlIGRhdGUgdG8gd2hpY2ggdGhlIG5ldyBjYWxlbmRhciBpcyBzZXQuCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgSmFwYW5lc2VDYWxlbmRhcihEYXRlIGRhdGUpIHsKKyAgICAgICAgdGhpcygpOworICAgICAgICBzZXRUaW1lKGRhdGUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSA8Y29kZT5KYXBhbmVzZUNhbGVuZGFyPC9jb2RlPiB3aXRoIHRoZSBnaXZlbiBkYXRlIHNldAorICAgICAqIGluIHRoZSBkZWZhdWx0IHRpbWUgem9uZSB3aXRoIHRoZSBkZWZhdWx0IGxvY2FsZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBlcmEgICAgICAgVGhlIGltcGVyaWFsIGVyYSB1c2VkIHRvIHNldCB0aGUgY2FsZW5kYXIncyB7QGxpbmsgI0VSQSBFUkF9IGZpZWxkLgorICAgICAqICAgICAgICAgICAgICAgICAgRXJhcyBhcmUgbnVtYmVyZWQgc3RhcnRpbmcgd2l0aCB0aGUgVGVua2kgZXJhLCB3aGljaAorICAgICAqICAgICAgICAgICAgICAgICAgYmVnYW4gaW4gMTA1MyBBRCBHcmVnb3JpYW4sIGFzIGVyYSB6ZXJvLiAgUmVjZW50CisgICAgICogICAgICAgICAgICAgICAgICBlcmFzIGNhbiBiZSBzcGVjaWZpZWQgdXNpbmcgdGhlIGNvbnN0YW50cworICAgICAqICAgICAgICAgICAgICAgICAge0BsaW5rICNNRUlKSX0gKHdoaWNoIHN0YXJ0ZWQgaW4gMTg2OCBBRCksCisgICAgICogICAgICAgICAgICAgICAgICB7QGxpbmsgI1RBSVNIT30gKDE5MTIgQUQpLAorICAgICAqICAgICAgICAgICAgICAgICAge0BsaW5rICNTSE9XQX0gKDE5MjYgQUQpLCBhbmQKKyAgICAgKiAgICAgICAgICAgICAgICAgIHtAbGluayAjSEVJU0VJfSAoMTk4OSBBRCkuCisgICAgICoKKyAgICAgKiBAcGFyYW0geWVhciAgICAgIFRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgY2FsZW5kYXIncyB7QGxpbmsgI1lFQVIgWUVBUn0gZmllbGQsCisgICAgICogICAgICAgICAgICAgICAgICBpbiB0ZXJtcyBvZiB0aGUgZXJhLgorICAgICAqCisgICAgICogQHBhcmFtIG1vbnRoICAgICBUaGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIGNhbGVuZGFyJ3Mge0BsaW5rICNNT05USCBNT05USH0gZmllbGQuCisgICAgICogICAgICAgICAgICAgICAgICBUaGUgdmFsdWUgaXMgMC1iYXNlZC4gZS5nLiwgMCBmb3IgSmFudWFyeS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBkYXRlICAgICAgVGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSBjYWxlbmRhcidzIERBVEUgZmllbGQuCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgSmFwYW5lc2VDYWxlbmRhcihpbnQgZXJhLCBpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF0ZSkgeworICAgICAgICBzdXBlcih5ZWFyLCBtb250aCwgZGF0ZSk7CisgICAgICAgIHNldChFUkEsIGVyYSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIDxjb2RlPkphcGFuZXNlQ2FsZW5kYXI8L2NvZGU+IHdpdGggdGhlIGdpdmVuIGRhdGUgc2V0CisgICAgICogaW4gdGhlIGRlZmF1bHQgdGltZSB6b25lIHdpdGggdGhlIGRlZmF1bHQgbG9jYWxlLgorICAgICAqCisgICAgICogQHBhcmFtIHllYXIgICAgICBUaGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIGNhbGVuZGFyJ3Mge0BsaW5rICNZRUFSIFlFQVJ9IGZpZWxkLAorICAgICAqICAgICAgICAgICAgICAgICAgaW4gdGhlIGVyYSBIZWlzZWksIHRoZSBtb3N0IGN1cnJlbnQgYXQgdGhlIHRpbWUgdGhpcworICAgICAqICAgICAgICAgICAgICAgICAgY2xhc3Mgd2FzIGxhc3QgdXBkYXRlZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBtb250aCAgICAgVGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSBjYWxlbmRhcidzIHtAbGluayAjTU9OVEggTU9OVEh9IGZpZWxkLgorICAgICAqICAgICAgICAgICAgICAgICAgVGhlIHZhbHVlIGlzIDAtYmFzZWQuIGUuZy4sIDAgZm9yIEphbnVhcnkuCisgICAgICoKKyAgICAgKiBAcGFyYW0gZGF0ZSAgICAgIFRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgY2FsZW5kYXIncyB7QGxpbmsgI0RBVEUgREFURX0gZmllbGQuCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgSmFwYW5lc2VDYWxlbmRhcihpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF0ZSkgeworICAgICAgICBzdXBlcih5ZWFyLCBtb250aCwgZGF0ZSk7CisgICAgICAgIHNldChFUkEsIENVUlJFTlRfRVJBKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgPGNvZGU+SmFwYW5lc2VDYWxlbmRhcjwvY29kZT4gd2l0aCB0aGUgZ2l2ZW4gZGF0ZQorICAgICAqIGFuZCB0aW1lIHNldCBmb3IgdGhlIGRlZmF1bHQgdGltZSB6b25lIHdpdGggdGhlIGRlZmF1bHQgbG9jYWxlLgorICAgICAqCisgICAgICogQHBhcmFtIHllYXIgICAgICBUaGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIGNhbGVuZGFyJ3Mge0BsaW5rICNZRUFSIFlFQVJ9IHRpbWUgZmllbGQsCisgICAgICogICAgICAgICAgICAgICAgICBpbiB0aGUgZXJhIEhlaXNlaSwgdGhlIG1vc3QgY3VycmVudCBhdCB0aGUgdGltZSBvZiB0aGlzCisgICAgICogICAgICAgICAgICAgICAgICB3cml0aW5nLgorICAgICAqCisgICAgICogQHBhcmFtIG1vbnRoICAgICBUaGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIGNhbGVuZGFyJ3Mge0BsaW5rICNNT05USCBNT05USH0gdGltZSBmaWVsZC4KKyAgICAgKiAgICAgICAgICAgICAgICAgIFRoZSB2YWx1ZSBpcyAwLWJhc2VkLiBlLmcuLCAwIGZvciBKYW51YXJ5LgorICAgICAqCisgICAgICogQHBhcmFtIGRhdGUgICAgICBUaGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIGNhbGVuZGFyJ3Mge0BsaW5rICNEQVRFIERBVEV9IHRpbWUgZmllbGQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gaG91ciAgICAgIFRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgY2FsZW5kYXIncyB7QGxpbmsgI0hPVVJfT0ZfREFZIEhPVVJfT0ZfREFZfSB0aW1lIGZpZWxkLgorICAgICAqCisgICAgICogQHBhcmFtIG1pbnV0ZSAgICBUaGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIGNhbGVuZGFyJ3Mge0BsaW5rICNNSU5VVEUgTUlOVVRFfSB0aW1lIGZpZWxkLgorICAgICAqCisgICAgICogQHBhcmFtIHNlY29uZCAgICBUaGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIGNhbGVuZGFyJ3Mge0BsaW5rICNTRUNPTkQgU0VDT05EfSB0aW1lIGZpZWxkLgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIEphcGFuZXNlQ2FsZW5kYXIoaW50IHllYXIsIGludCBtb250aCwgaW50IGRhdGUsIGludCBob3VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWludXRlLCBpbnQgc2Vjb25kKQorICAgIHsKKyAgICAgICAgc3VwZXIoeWVhciwgbW9udGgsIGRhdGUsIGhvdXIsIG1pbnV0ZSwgc2Vjb25kKTsKKyAgICAgICAgc2V0KEVSQSwgQ1VSUkVOVF9FUkEpOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgaW50IGhhbmRsZUdldEV4dGVuZGVkWWVhcigpIHsKKyAgICAgICAgaW50IHllYXI7CisgICAgICAgIC8vIFRPRE8gcmVpbXBsZW1lbnQgdGhpcyB0byBiZSBmYXN0ZXI/CisgICAgICAgIGlmIChuZXdlckZpZWxkKEVYVEVOREVEX1lFQVIsIFlFQVIpID09IEVYVEVOREVEX1lFQVIgJiYKKyAgICAgICAgICAgIG5ld2VyRmllbGQoRVhURU5ERURfWUVBUiwgRVJBKSA9PSBFWFRFTkRFRF9ZRUFSKSB7CisgICAgICAgICAgICB5ZWFyID0gaW50ZXJuYWxHZXQoRVhURU5ERURfWUVBUiwgMSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBTdWJ0cmFjdCBvbmUgYmVjYXVzZSB5ZWFyIHN0YXJ0cyBhdCAxCisgICAgICAgICAgICB5ZWFyID0gaW50ZXJuYWxHZXQoWUVBUikgKyBFUkFTW2ludGVybmFsR2V0KEVSQSkgKiAzXSAtIDE7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHllYXI7CisgICAgfQorCisgICAgLyoqCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVDb21wdXRlRmllbGRzKGludCBqdWxpYW5EYXkpIHsKKyAgICAgICAgc3VwZXIuaGFuZGxlQ29tcHV0ZUZpZWxkcyhqdWxpYW5EYXkpOworICAgICAgICBpbnQgeWVhciA9IGludGVybmFsR2V0KEVYVEVOREVEX1lFQVIpOworCisgICAgICAgIGludCBsb3cgPSAwOworCisgICAgICAgIC8vIFNob3J0IGNpcmN1aXQgZm9yIHJlY2VudCB5ZWFycy4gIE1vc3QgbW9kZXJuIGNvbXB1dGF0aW9ucyB3aWxsCisgICAgICAgIC8vIG9jY3VyIGluIHRoZSBjdXJyZW50IGVyYSBhbmQgd29uJ3QgcmVxdWlyZSB0aGUgYmluYXJ5IHNlYXJjaC4KKyAgICAgICAgLy8gTm90ZSB0aGF0IGlmIHRoZSB5ZWFyIGlzID09IHRoZSBjdXJyZW50IGVyYSB5ZWFyLCB0aGVuIHdlIHVzZQorICAgICAgICAvLyB0aGUgYmluYXJ5IHNlYXJjaCB0byBoYW5kbGUgdGhlIG1vbnRoL2RvbSBjb21wYXJpc29uLgorICAgICAgICBpZiAoeWVhciA+IEVSQVNbRVJBUy5sZW5ndGggLSAzXSkgeworICAgICAgICAgICAgbG93ID0gQ1VSUkVOVF9FUkE7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBCaW5hcnkgc2VhcmNoCisgICAgICAgICAgICBpbnQgaGlnaCA9IEVSQVMubGVuZ3RoIC8gMzsKKyAgICAgICAgCisgICAgICAgICAgICB3aGlsZSAobG93IDwgaGlnaCAtIDEpIHsKKyAgICAgICAgICAgICAgICBpbnQgaSA9IChsb3cgKyBoaWdoKSAvIDI7CisgICAgICAgICAgICAgICAgaW50IGRpZmYgPSB5ZWFyIC0gRVJBU1tpKjNdOworCisgICAgICAgICAgICAgICAgLy8gSWYgeWVhcnMgYXJlIHRoZSBzYW1lLCB0aGVuIGNvbXBhcmUgdGhlIG1vbnRocywgYW5kIGlmIHRob3NlCisgICAgICAgICAgICAgICAgLy8gYXJlIHRoZSBzYW1lLCBjb21wYXJlIGRheXMgb2YgbW9udGguICBJbiB0aGUgRVJBUyBhcnJheQorICAgICAgICAgICAgICAgIC8vIG1vbnRocyBhcmUgMS1iYXNlZCBmb3IgZWFzaWVyIG1haW50ZW5hbmNlLgorICAgICAgICAgICAgICAgIGlmIChkaWZmID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgZGlmZiA9IGludGVybmFsR2V0KE1PTlRIKSAtIChFUkFTW2kqMyArIDFdIC0gMSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChkaWZmID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpZmYgPSBpbnRlcm5hbEdldChEQVlfT0ZfTU9OVEgpIC0gRVJBU1tpKjMgKyAyXTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoZGlmZiA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGxvdyA9IGk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaGlnaCA9IGk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gTm93IHdlJ3ZlIGZvdW5kIHRoZSBsYXN0IGVyYSB0aGF0IHN0YXJ0cyBiZWZvcmUgdGhpcyBkYXRlLCBzbworICAgICAgICAvLyBhZGp1c3QgdGhlIHllYXIgdG8gY291bnQgZnJvbSB0aGUgc3RhcnQgb2YgdGhhdCBlcmEuICBOb3RlIHRoYXQKKyAgICAgICAgLy8gYWxsIGRhdGVzIGJlZm9yZSB0aGUgZmlyc3QgZXJhIHdpbGwgZmFsbCBpbnRvIHRoZSBmaXJzdCBlcmEgYnkKKyAgICAgICAgLy8gdGhlIGFsZ29yaXRobS4KKyAgICAgICAgaW50ZXJuYWxTZXQoRVJBLCBsb3cpOworICAgICAgICBpbnRlcm5hbFNldChZRUFSLCB5ZWFyIC0gRVJBU1tsb3cqM10gKyAxKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnRbXSBFUkFTID0geworICAgIC8vICBHcmVnb3JpYW4gZGF0ZSBvZiBlYWNoIGVtcGVyb3IncyBhc2NlbnNpb24KKyAgICAvLyAgWWVhcnMgYXJlIEFELCBtb250aHMgYXJlIDEtYmFzZWQuCisgICAgLy8gIFllYXIgIE1vbnRoIERheQorICAgICAgICAgNjQ1LCAgICA2LCAxOSwgICAgIC8vIFRhaWthCisgICAgICAgICA2NTAsICAgIDIsIDE1LCAgICAgLy8gSGFrdWNoaQorICAgICAgICAgNjcyLCAgICAxLCAgMSwgICAgIC8vIEhha3VobworICAgICAgICAgNjg2LCAgICA3LCAyMCwgICAgIC8vIFNodWNobworICAgICAgICAgNzAxLCAgICAzLCAyMSwgICAgIC8vIFRhaWhvCisgICAgICAgICA3MDQsICAgIDUsIDEwLCAgICAgLy8gS2VpdW4KKyAgICAgICAgIDcwOCwgICAgMSwgMTEsICAgICAvLyBXYWRvCisgICAgICAgICA3MTUsICAgIDksICAyLCAgICAgLy8gUmVpa2kKKyAgICAgICAgIDcxNywgICAxMSwgMTcsICAgICAvLyBZb3JvCisgICAgICAgICA3MjQsICAgIDIsICA0LCAgICAgLy8gSmlua2kKKyAgICAgICAgIDcyOSwgICAgOCwgIDUsICAgICAvLyBUZW1weW8KKyAgICAgICAgIDc0OSwgICAgNCwgMTQsICAgICAvLyBUZW1weW8ta2FtcG8KKyAgICAgICAgIDc0OSwgICAgNywgIDIsICAgICAvLyBUZW1weW8tc2hvaG8KKyAgICAgICAgIDc1NywgICAgOCwgMTgsICAgICAvLyBUZW1weW8taG9qaQorICAgICAgICAgNzY1LCAgICAxLCAgNywgICAgIC8vIFRlbXBoby1qaW5nbworICAgICAgICAgNzY3LCAgICA4LCAxNiwgICAgIC8vIEppbmdvLWtlaXVuCisgICAgICAgICA3NzAsICAgMTAsICAxLCAgICAgLy8gSG9raQorICAgICAgICAgNzgxLCAgICAxLCAgMSwgICAgIC8vIFRlbi1vCisgICAgICAgICA3ODIsICAgIDgsIDE5LCAgICAgLy8gRW5yeWFrdQorICAgICAgICAgODA2LCAgICA1LCAxOCwgICAgIC8vIERhaWRvCisgICAgICAgICA4MTAsICAgIDksIDE5LCAgICAgLy8gS29uaW4KKyAgICAgICAgIDgyNCwgICAgMSwgIDUsICAgICAvLyBUZW5jaG8KKyAgICAgICAgIDgzNCwgICAgMSwgIDMsICAgICAvLyBTaG93YQorICAgICAgICAgODQ4LCAgICA2LCAxMywgICAgIC8vIEtham8KKyAgICAgICAgIDg1MSwgICAgNCwgMjgsICAgICAvLyBOaW5qdQorICAgICAgICAgODU0LCAgIDExLCAzMCwgICAgIC8vIFNhaWtvCisgICAgICAgICA4NTcsICAgIDIsIDIxLCAgICAgLy8gVGVubmFuCisgICAgICAgICA4NTksICAgIDQsIDE1LCAgICAgLy8gSm9nYW4KKyAgICAgICAgIDg3NywgICAgNCwgMTYsICAgICAvLyBHZW5rZWkKKyAgICAgICAgIDg4NSwgICAgMiwgMjEsICAgICAvLyBOaW5uYQorICAgICAgICAgODg5LCAgICA0LCAyNywgICAgIC8vIEthbXB5bworICAgICAgICAgODk4LCAgICA0LCAyNiwgICAgIC8vIFNob3RhaQorICAgICAgICAgOTAxLCAgICA3LCAxNSwgICAgIC8vIEVuZ2kKKyAgICAgICAgIDkyMywgICAgNCwgMTEsICAgICAvLyBFbmNobworICAgICAgICAgOTMxLCAgICA0LCAyNiwgICAgIC8vIFNob2hlaQorICAgICAgICAgOTM4LCAgICA1LCAyMiwgICAgIC8vIFRlbmd5bworICAgICAgICAgOTQ3LCAgICA0LCAyMiwgICAgIC8vIFRlbnJ5YWt1CisgICAgICAgICA5NTcsICAgMTAsIDI3LCAgICAgLy8gVGVudG9rdQorICAgICAgICAgOTYxLCAgICAyLCAxNiwgICAgIC8vIE93YQorICAgICAgICAgOTY0LCAgICA3LCAxMCwgICAgIC8vIEtvaG8KKyAgICAgICAgIDk2OCwgICAgOCwgMTMsICAgICAvLyBBbm5hCisgICAgICAgICA5NzAsICAgIDMsIDI1LCAgICAgLy8gVGVucm9rdQorICAgICAgICAgOTczLCAgIDEyLCAyMCwgICAgIC8vIFRlbi1lbgorICAgICAgICAgOTc2LCAgICA3LCAxMywgICAgIC8vIEpvZ2VuCisgICAgICAgICA5NzgsICAgMTEsIDI5LCAgICAgLy8gVGVuZ2VuCisgICAgICAgICA5ODMsICAgIDQsIDE1LCAgICAgLy8gRWlrYW4KKyAgICAgICAgIDk4NSwgICAgNCwgMjcsICAgICAvLyBLYW5uYQorICAgICAgICAgOTg3LCAgICA0LCAgNSwgICAgIC8vIEVpLWVuCisgICAgICAgICA5ODksICAgIDgsICA4LCAgICAgLy8gRWlzbworICAgICAgICAgOTkwLCAgIDExLCAgNywgICAgIC8vIFNob3J5YWt1CisgICAgICAgICA5OTUsICAgIDIsIDIyLCAgICAgLy8gQ2hvdG9rdQorICAgICAgICAgOTk5LCAgICAxLCAxMywgICAgIC8vIENob2hvCisgICAgICAgIDEwMDQsICAgIDcsIDIwLCAgICAgLy8gS2Fua28KKyAgICAgICAgMTAxMiwgICAxMiwgMjUsICAgICAvLyBDaG93YQorICAgICAgICAxMDE3LCAgICA0LCAyMywgICAgIC8vIEthbm5pbgorICAgICAgICAxMDIxLCAgICAyLCAgMiwgICAgIC8vIEppYW4KKyAgICAgICAgMTAyNCwgICAgNywgMTMsICAgICAvLyBNYW5qdQorICAgICAgICAxMDI4LCAgICA3LCAyNSwgICAgIC8vIENob2dlbgorICAgICAgICAxMDM3LCAgICA0LCAyMSwgICAgIC8vIENob3J5YWt1CisgICAgICAgIDEwNDAsICAgMTEsIDEwLCAgICAgLy8gQ2hva3l1CisgICAgICAgIDEwNDQsICAgMTEsIDI0LCAgICAgLy8gS2FudG9rdQorICAgICAgICAxMDQ2LCAgICA0LCAxNCwgICAgIC8vIEVpc2hvCisgICAgICAgIDEwNTMsICAgIDEsIDExLCAgICAgLy8gVGVuZ2kKKyAgICAgICAgMTA1OCwgICAgOCwgMjksICAgICAvLyBLb2hlaQorICAgICAgICAxMDY1LCAgICA4LCAgMiwgICAgIC8vIEppcnlha3UKKyAgICAgICAgMTA2OSwgICAgNCwgMTMsICAgICAvLyBFbmt5dQorICAgICAgICAxMDc0LCAgICA4LCAyMywgICAgIC8vIFNob2hvCisgICAgICAgIDEwNzcsICAgMTEsIDE3LCAgICAgLy8gU2hvcnlha3UKKyAgICAgICAgMTA4MSwgICAgMiwgMTAsICAgICAvLyBFaWhvCisgICAgICAgIDEwODQsICAgIDIsICA3LCAgICAgLy8gT3Rva3UKKyAgICAgICAgMTA4NywgICAgNCwgIDcsICAgICAvLyBLYW5qaQorICAgICAgICAxMDk0LCAgIDEyLCAxNSwgICAgIC8vIEthaG8KKyAgICAgICAgMTA5NiwgICAxMiwgMTcsICAgICAvLyBFaWNobworICAgICAgICAxMDk3LCAgIDExLCAyMSwgICAgIC8vIFNob3Rva3UKKyAgICAgICAgMTA5OSwgICAgOCwgMjgsICAgICAvLyBLb3dhCisgICAgICAgIDExMDQsICAgIDIsIDEwLCAgICAgLy8gQ2hvamkKKyAgICAgICAgMTEwNiwgICAgNCwgIDksICAgICAvLyBLYXNobworICAgICAgICAxMTA4LCAgICA4LCAgMywgICAgIC8vIFRlbm5pbgorICAgICAgICAxMTEwLCAgICA3LCAxMywgICAgIC8vIFRlbi1laQorICAgICAgICAxMTEzLCAgICA3LCAxMywgICAgIC8vIEVpa3l1CisgICAgICAgIDExMTgsICAgIDQsICAzLCAgICAgLy8gR2VuLWVpCisgICAgICAgIDExMjAsICAgIDQsIDEwLCAgICAgLy8gSG9hbgorICAgICAgICAxMTI0LCAgICA0LCAgMywgICAgIC8vIFRlbmppCisgICAgICAgIDExMjYsICAgIDEsIDIyLCAgICAgLy8gRGFpamkKKyAgICAgICAgMTEzMSwgICAgMSwgMjksICAgICAvLyBUZW5zaG8KKyAgICAgICAgMTEzMiwgICAgOCwgMTEsICAgICAvLyBDaG9zaG8KKyAgICAgICAgMTEzNSwgICAgNCwgMjcsICAgICAvLyBIb2VuCisgICAgICAgIDExNDEsICAgIDcsIDEwLCAgICAgLy8gRWlqaQorICAgICAgICAxMTQyLCAgICA0LCAyOCwgICAgIC8vIEtvamkKKyAgICAgICAgMTE0NCwgICAgMiwgMjMsICAgICAvLyBUZW55bworICAgICAgICAxMTQ1LCAgICA3LCAyMiwgICAgIC8vIEt5dWFuCisgICAgICAgIDExNTEsICAgIDEsIDI2LCAgICAgLy8gTmlucGVpCisgICAgICAgIDExNTQsICAgMTAsIDI4LCAgICAgLy8gS3l1anUKKyAgICAgICAgMTE1NiwgICAgNCwgMjcsICAgICAvLyBIb2dlbgorICAgICAgICAxMTU5LCAgICA0LCAyMCwgICAgIC8vIEhlaWppCisgICAgICAgIDExNjAsICAgIDEsIDEwLCAgICAgLy8gRWlyeWFrdQorICAgICAgICAxMTYxLCAgICA5LCAgNCwgICAgIC8vIE9obworICAgICAgICAxMTYzLCAgICAzLCAyOSwgICAgIC8vIENob2thbgorICAgICAgICAxMTY1LCAgICA2LCAgNSwgICAgIC8vIEVpbWFuCisgICAgICAgIDExNjYsICAgIDgsIDI3LCAgICAgLy8gTmluLWFuCisgICAgICAgIDExNjksICAgIDQsICA4LCAgICAgLy8gS2FvCisgICAgICAgIDExNzEsICAgIDQsIDIxLCAgICAgLy8gU2hvYW4KKyAgICAgICAgMTE3NSwgICAgNywgMjgsICAgICAvLyBBbmdlbgorICAgICAgICAxMTc3LCAgICA4LCAgNCwgICAgIC8vIEppc2hvCisgICAgICAgIDExODEsICAgIDcsIDE0LCAgICAgLy8gWW93YQorICAgICAgICAxMTgyLCAgICA1LCAyNywgICAgIC8vIEp1ZWkKKyAgICAgICAgMTE4NCwgICAgNCwgMTYsICAgICAvLyBHZW5yeXVrdQorICAgICAgICAxMTg1LCAgICA4LCAxNCwgICAgIC8vIEJ1bmppCisgICAgICAgIDExOTAsICAgIDQsIDExLCAgICAgLy8gS2Vua3l1CisgICAgICAgIDExOTksICAgIDQsIDI3LCAgICAgLy8gU2hvamkKKyAgICAgICAgMTIwMSwgICAgMiwgMTMsICAgICAvLyBLZW5uaW4KKyAgICAgICAgMTIwNCwgICAgMiwgMjAsICAgICAvLyBHZW5reXUKKyAgICAgICAgMTIwNiwgICAgNCwgMjcsICAgICAvLyBLZW4tZWkKKyAgICAgICAgMTIwNywgICAxMCwgMjUsICAgICAvLyBTaG9nZW4KKyAgICAgICAgMTIxMSwgICAgMywgIDksICAgICAvLyBLZW5yeWFrdQorICAgICAgICAxMjEzLCAgIDEyLCAgNiwgICAgIC8vIEtlbnBvCisgICAgICAgIDEyMTksICAgIDQsIDEyLCAgICAgLy8gU2hva3l1CisgICAgICAgIDEyMjIsICAgIDQsIDEzLCAgICAgLy8gSm9vCisgICAgICAgIDEyMjQsICAgMTEsIDIwLCAgICAgLy8gR2VubmluCisgICAgICAgIDEyMjUsICAgIDQsIDIwLCAgICAgLy8gS2Fyb2t1CisgICAgICAgIDEyMjcsICAgMTIsIDEwLCAgICAgLy8gQW50ZWkKKyAgICAgICAgMTIyOSwgICAgMywgIDUsICAgICAvLyBLYW5raQorICAgICAgICAxMjMyLCAgICA0LCAgMiwgICAgIC8vIEpvZWkKKyAgICAgICAgMTIzMywgICAgNCwgMTUsICAgICAvLyBUZW1wdWt1CisgICAgICAgIDEyMzQsICAgMTEsICA1LCAgICAgLy8gQnVucnlha3UKKyAgICAgICAgMTIzNSwgICAgOSwgMTksICAgICAvLyBLYXRlaQorICAgICAgICAxMjM4LCAgIDExLCAyMywgICAgIC8vIFJ5YWt1bmluCisgICAgICAgIDEyMzksICAgIDIsICA3LCAgICAgLy8gRW4tbworICAgICAgICAxMjQwLCAgICA3LCAxNiwgICAgIC8vIE5pbmppCisgICAgICAgIDEyNDMsICAgIDIsIDI2LCAgICAgLy8gS2FuZ2VuCisgICAgICAgIDEyNDcsICAgIDIsIDI4LCAgICAgLy8gSG9qaQorICAgICAgICAxMjQ5LCAgICAzLCAxOCwgICAgIC8vIEtlbmNobworICAgICAgICAxMjU2LCAgIDEwLCAgNSwgICAgIC8vIEtvZ2VuCisgICAgICAgIDEyNTcsICAgIDMsIDE0LCAgICAgLy8gU2hva2EKKyAgICAgICAgMTI1OSwgICAgMywgMjYsICAgICAvLyBTaG9nZW4KKyAgICAgICAgMTI2MCwgICAgNCwgMTMsICAgICAvLyBCdW4tbworICAgICAgICAxMjYxLCAgICAyLCAyMCwgICAgIC8vIEtvY2hvCisgICAgICAgIDEyNjQsICAgIDIsIDI4LCAgICAgLy8gQnVuLWVpCisgICAgICAgIDEyNzUsICAgIDQsIDI1LCAgICAgLy8gS2VuamkKKyAgICAgICAgMTI3OCwgICAgMiwgMjksICAgICAvLyBLb2FuCisgICAgICAgIDEyODgsICAgIDQsIDI4LCAgICAgLy8gU2hvbworICAgICAgICAxMjkzLCAgICA4LCA1NSwgICAgIC8vIEVpbmluCisgICAgICAgIDEyOTksICAgIDQsIDI1LCAgICAgLy8gU2hvYW4KKyAgICAgICAgMTMwMiwgICAxMSwgMjEsICAgICAvLyBLZW5nZW4KKyAgICAgICAgMTMwMywgICAgOCwgIDUsICAgICAvLyBLYWdlbgorICAgICAgICAxMzA2LCAgIDEyLCAxNCwgICAgIC8vIFRva3VqaQorICAgICAgICAxMzA4LCAgIDEwLCAgOSwgICAgIC8vIEVua2VpCisgICAgICAgIDEzMTEsICAgIDQsIDI4LCAgICAgLy8gT2NobworICAgICAgICAxMzEyLCAgICAzLCAyMCwgICAgIC8vIFNob3dhCisgICAgICAgIDEzMTcsICAgIDIsICAzLCAgICAgLy8gQnVucG8KKyAgICAgICAgMTMxOSwgICAgNCwgMjgsICAgICAvLyBHZW5vCisgICAgICAgIDEzMjEsICAgIDIsIDIzLCAgICAgLy8gR2Vua3lvCisgICAgICAgIDEzMjQsICAgMTIsICA5LCAgICAgLy8gU2hvY2h1CisgICAgICAgIDEzMjYsICAgIDQsIDI2LCAgICAgLy8gS2FyZWtpCisgICAgICAgIDEzMjksICAgIDgsIDI5LCAgICAgLy8gR2VudG9rdQorICAgICAgICAxMzMxLCAgICA4LCAgOSwgICAgIC8vIEdlbmtvCisgICAgICAgIDEzMzQsICAgIDEsIDI5LCAgICAgLy8gS2VtbXUKKyAgICAgICAgMTMzNiwgICAgMiwgMjksICAgICAvLyBFbmdlbgorICAgICAgICAxMzQwLCAgICA0LCAyOCwgICAgIC8vIEtva29rdQorICAgICAgICAxMzQ2LCAgIDEyLCAgOCwgICAgIC8vIFNob2hlaQorICAgICAgICAxMzcwLCAgICA3LCAyNCwgICAgIC8vIEtlbnRva3UKKyAgICAgICAgMTM3MiwgICAgNCwgIDEsICAgICAvLyBCdW5jaFx1MDE2OQorICAgICAgICAxMzc1LCAgICA1LCAyNywgICAgIC8vIFRlbmp1CisgICAgICAgIDEzODEsICAgIDIsIDEwLCAgICAgLy8gS293YQorICAgICAgICAxMzg0LCAgICA0LCAyOCwgICAgIC8vIEdlbmNoXHUwMTY5CisgICAgICAgIDEzODQsICAgIDIsIDI3LCAgICAgLy8gTWVpdG9rdQorICAgICAgICAxMzc5LCAgICAzLCAyMiwgICAgIC8vIEtvcnlha3UKKyAgICAgICAgMTM4NywgICAgOCwgMjMsICAgICAvLyBLYWtlaQorICAgICAgICAxMzg5LCAgICAyLCAgOSwgICAgIC8vIEtvbworICAgICAgICAxMzkwLCAgICAzLCAyNiwgICAgIC8vIE1laXRva3UKKyAgICAgICAgMTM5NCwgICAgNywgIDUsICAgICAvLyBPZWkKKyAgICAgICAgMTQyOCwgICAgNCwgMjcsICAgICAvLyBTaG9jaG8KKyAgICAgICAgMTQyOSwgICAgOSwgIDUsICAgICAvLyBFaWt5bworICAgICAgICAxNDQxLCAgICAyLCAxNywgICAgIC8vIEtha2l0c3UKKyAgICAgICAgMTQ0NCwgICAgMiwgIDUsICAgICAvLyBCdW4tYW4KKyAgICAgICAgMTQ0OSwgICAgNywgMjgsICAgICAvLyBIb3Rva3UKKyAgICAgICAgMTQ1MiwgICAgNywgMjUsICAgICAvLyBLeW90b2t1CisgICAgICAgIDE0NTUsICAgIDcsIDI1LCAgICAgLy8gS29zaG8KKyAgICAgICAgMTQ1NywgICAgOSwgMjgsICAgICAvLyBDaG9yb2t1CisgICAgICAgIDE0NjAsICAgMTIsIDIxLCAgICAgLy8gS2Fuc2hvCisgICAgICAgIDE0NjYsICAgIDIsIDI4LCAgICAgLy8gQnVuc2hvCisgICAgICAgIDE0NjcsICAgIDMsICAzLCAgICAgLy8gT25pbgorICAgICAgICAxNDY5LCAgICA0LCAyOCwgICAgIC8vIEJ1bm1laQorICAgICAgICAxNDg3LCAgICA3LCAyOSwgICAgIC8vIENob2t5bworICAgICAgICAxNDg5LCAgICA4LCAyMSwgICAgIC8vIEVudG9rdQorICAgICAgICAxNDkyLCAgICA3LCAxOSwgICAgIC8vIE1laW8KKyAgICAgICAgMTUwMSwgICAgMiwgMjksICAgICAvLyBCdW5raQorICAgICAgICAxNTA0LCAgICAyLCAzMCwgICAgIC8vIEVpc2hvCisgICAgICAgIDE1MjEsICAgIDgsIDIzLCAgICAgLy8gVGFpZWkKKyAgICAgICAgMTUyOCwgICAgOCwgMjAsICAgICAvLyBLeW9yb2t1CisgICAgICAgIDE1MzIsICAgIDcsIDI5LCAgICAgLy8gVGVubW9uCisgICAgICAgIDE1NTUsICAgMTAsIDIzLCAgICAgLy8gS29qaQorICAgICAgICAxNTU4LCAgICAyLCAyOCwgICAgIC8vIEVpcm9rdQorICAgICAgICAxNTcwLCAgICA0LCAyMywgICAgIC8vIEdlbmtpCisgICAgICAgIDE1NzMsICAgIDcsIDI4LCAgICAgLy8gVGVuc2hvCisgICAgICAgIDE1OTIsICAgMTIsICA4LCAgICAgLy8gQnVucm9rdQorICAgICAgICAxNTk2LCAgIDEwLCAyNywgICAgIC8vIEtlaWNobworICAgICAgICAxNjE1LCAgICA3LCAxMywgICAgIC8vIEdlbndhCisgICAgICAgIDE2MjQsICAgIDIsIDMwLCAgICAgLy8gS2FuLWVpCisgICAgICAgIDE2NDQsICAgMTIsIDE2LCAgICAgLy8gU2hvaG8KKyAgICAgICAgMTY0OCwgICAgMiwgMTUsICAgICAvLyBLZWlhbgorICAgICAgICAxNjUyLCAgICA5LCAxOCwgICAgIC8vIFNob28KKyAgICAgICAgMTY1NSwgICAgNCwgMTMsICAgICAvLyBNZWlyeWFrdQorICAgICAgICAxNjU4LCAgICA3LCAyMywgICAgIC8vIE1hbmppCisgICAgICAgIDE2NjEsICAgIDQsIDI1LCAgICAgLy8gS2FuYnVuCisgICAgICAgIDE2NzMsICAgIDksIDIxLCAgICAgLy8gRW5wbworICAgICAgICAxNjgxLCAgICA5LCAyOSwgICAgIC8vIFRlbndhCisgICAgICAgIDE2ODQsICAgIDIsIDIxLCAgICAgLy8gSm9reW8KKyAgICAgICAgMTY4OCwgICAgOSwgMzAsICAgICAvLyBHZW5yb2t1CisgICAgICAgIDE3MDQsICAgIDMsIDEzLCAgICAgLy8gSG9laQorICAgICAgICAxNzExLCAgICA0LCAyNSwgICAgIC8vIFNob3Rva3UKKyAgICAgICAgMTcxNiwgICAgNiwgMjIsICAgICAvLyBLeW9obworICAgICAgICAxNzM2LCAgICA0LCAyOCwgICAgIC8vIEdlbmJ1bgorICAgICAgICAxNzQxLCAgICAyLCAyNywgICAgIC8vIEthbnBvCisgICAgICAgIDE3NDQsICAgIDIsIDIxLCAgICAgLy8gRW5reW8KKyAgICAgICAgMTc0OCwgICAgNywgMTIsICAgICAvLyBLYW4tZW4KKyAgICAgICAgMTc1MSwgICAxMCwgMjcsICAgICAvLyBIb3J5YWt1CisgICAgICAgIDE3NjQsICAgIDYsICAyLCAgICAgLy8gTWVpd2EKKyAgICAgICAgMTc3MiwgICAxMSwgMTYsICAgICAvLyBBbi1laQorICAgICAgICAxNzgxLCAgICA0LCAgMiwgICAgIC8vIFRlbm1laQorICAgICAgICAxNzg5LCAgICAxLCAyNSwgICAgIC8vIEthbnNlaQorICAgICAgICAxODAxLCAgICAyLCAgNSwgICAgIC8vIEt5b3dhCisgICAgICAgIDE4MDQsICAgIDIsIDExLCAgICAgLy8gQnVua2EKKyAgICAgICAgMTgxOCwgICAgNCwgMjIsICAgICAvLyBCdW5zZWkKKyAgICAgICAgMTgzMCwgICAxMiwgMTAsICAgICAvLyBUZW5wbworICAgICAgICAxODQ0LCAgIDEyLCAgMiwgICAgIC8vIEtva2EKKyAgICAgICAgMTg0OCwgICAgMiwgMjgsICAgICAvLyBLYWVpCisgICAgICAgIDE4NTQsICAgMTEsIDI3LCAgICAgLy8gQW5zZWkKKyAgICAgICAgMTg2MCwgICAgMywgMTgsICAgICAvLyBNYW4tZW4KKyAgICAgICAgMTg2MSwgICAgMiwgMTksICAgICAvLyBCdW5reXUKKyAgICAgICAgMTg2NCwgICAgMiwgMjAsICAgICAvLyBHZW5qaQorICAgICAgICAxODY1LCAgICA0LCAgNywgICAgIC8vIEtlaW8KKyAgICAgICAgMTg2OCwgICAgOSwgIDgsICAgICAvLyBNZWlqaQorICAgICAgICAxOTEyLCAgICA3LCAzMCwgICAgIC8vIFRhaXNobworICAgICAgICAxOTI2LCAgIDEyLCAyNSwgICAgIC8vIFNob3dhCisgICAgICAgIDE5ODksICAgIDEsICA4LCAgICAgLy8gSGVpc2VpCisgICAgfTsKKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIFB1YmxpYyBjb25zdGFudHMgZm9yIHNvbWUgb2YgdGhlIHJlY2VudCBlcmFzIHRoYXQgZm9sa3MgbWlnaHQgdXNlLi4uCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvLyBDb25zdGFudCBmb3IgdGhlIGN1cnJlbnQgZXJhLiAgVGhpcyBtdXN0IGJlIHJlZ3VsYXJseSB1cGRhdGVkLgorICAgIC8qKgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgc3RhdGljIHB1YmxpYyBmaW5hbCBpbnQgQ1VSUkVOVF9FUkEgPSAoRVJBUy5sZW5ndGggLyAzKSAtIDE7CisgICAgCisgICAgLyoqIAorICAgICAqIENvbnN0YW50IGZvciB0aGUgZXJhIHN0YXJ0aW5nIG9uIFNlcHQuIDgsIDE4NjggQUQuCisgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICovCisgICAgc3RhdGljIHB1YmxpYyBmaW5hbCBpbnQgTUVJSkkgPSBDVVJSRU5UX0VSQSAtIDM7CisKKyAgICAvKiogCisgICAgICogQ29uc3RhbnQgZm9yIHRoZSBlcmEgc3RhcnRpbmcgb24gSnVseSAzMCwgMTkxMiBBRC4gCisgICAgICogQGRyYWZ0IElDVSAyLjQgCisgICAgICovCisgICAgc3RhdGljIHB1YmxpYyBmaW5hbCBpbnQgVEFJU0hPID0gQ1VSUkVOVF9FUkEgLSAyOworICAgIAorICAgIC8qKiAKKyAgICAgKiBDb25zdGFudCBmb3IgdGhlIGVyYSBzdGFydGluZyBvbiBEZWMuIDI1LCAxOTI2IEFELiAKKyAgICAgKiBAZHJhZnQgSUNVIDIuNCAKKyAgICAgKi8KKyAgICBzdGF0aWMgcHVibGljIGZpbmFsIGludCBTSE9XQSA9IENVUlJFTlRfRVJBIC0gMTsKKworICAgIC8qKiAKKyAgICAgKiBDb25zdGFudCBmb3IgdGhlIGVyYSBzdGFydGluZyBvbiBKYW4uIDcsIDE5ODkgQUQuIAorICAgICAqIEBkcmFmdCBJQ1UgMi40IAorICAgICAqLworICAgIHN0YXRpYyBwdWJsaWMgZmluYWwgaW50IEhFSVNFSSA9IENVUlJFTlRfRVJBOworCisgICAgLyoqCisgICAgICogUGFydGlhbCBsaW1pdHMgdGFibGUgZm9yIGxpbWl0cyB0aGF0IGRpZmZlciBmcm9tIEdyZWdvcmlhbkNhbGVuZGFyJ3MuCisgICAgICogVGhlIFlFQVIgbWF4IGxpbWl0cyBhcmUgZmlsbGVkIGluIHRoZSBmaXJzdCB0aW1lIHRoZXkgYXJlIG5lZWRlZC4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBpbnQgTElNSVRTW11bXSA9IHsKKyAgICAgICAgLy8gTWluaW11bSAgR3JlYXRlc3QgICAgICAgIExlYXN0ICAgICAgTWF4aW11bQorICAgICAgICAvLyAgICAgICAgICAgTWluaW11bSAgICAgIE1heGltdW0KKyAgICAgICAgeyAgICAgICAgMCwgICAgICAgIDAsIENVUlJFTlRfRVJBLCBDVVJSRU5UX0VSQSB9LCAvLyBFUkEKKyAgICAgICAgeyAgICAgICAgMSwgICAgICAgIDEsICAgICAgICAgICAwLCAgICAgICAgICAgMCB9LCAvLyBZRUFSCisgICAgfTsKKworICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gWUVBUl9MSU1JVF9LTk9XTiA9IGZhbHNlOworCisgICAgLyoqCisgICAgICogT3ZlcnJpZGUgR3JlZ29yaWFuQ2FsZW5kYXIuICBXZSBzaG91bGQgcmVhbGx5IGhhbmRsZSBZRUFSX1dPWSBhbmQKKyAgICAgKiBFWFRFTkRFRF9ZRUFSIGhlcmUgdG9vIHRvIGltcGxlbWVudCB0aGUgMS4uNTAwMDAwMCByYW5nZSwgYnV0IGl0J3MKKyAgICAgKiBub3QgY3JpdGljYWwuCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgaW50IGhhbmRsZUdldExpbWl0KGludCBmaWVsZCwgaW50IGxpbWl0VHlwZSkgeworICAgICAgICBzd2l0Y2ggKGZpZWxkKSB7CisgICAgICAgIGNhc2UgRVJBOgorICAgICAgICAgICAgcmV0dXJuIExJTUlUU1tmaWVsZF1bbGltaXRUeXBlXTsKKyAgICAgICAgY2FzZSBZRUFSOgorICAgICAgICAgICAgaWYgKCFZRUFSX0xJTUlUX0tOT1dOKSB7CisgICAgICAgICAgICAgICAgaW50IG1pbiA9IEVSQVNbM10gLSBFUkFTWzBdOworICAgICAgICAgICAgICAgIGludCBtYXggPSBtaW47CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaT02OyBpPEVSQVMubGVuZ3RoOyBpKz0zKSB7CisgICAgICAgICAgICAgICAgICAgIGludCBkID0gRVJBU1tpXSAtIEVSQVNbaS0zXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGQgPCBtaW4pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1pbiA9IGQ7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZCA+IG1heCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbWF4ID0gZDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBMSU1JVFNbZmllbGRdW0xFQVNUX01BWElNVU1dID0gbWluOworICAgICAgICAgICAgICAgIExJTUlUU1tmaWVsZF1bTUFYSU1VTV0gPSBtYXg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gTElNSVRTW2ZpZWxkXVtsaW1pdFR5cGVdOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmhhbmRsZUdldExpbWl0KGZpZWxkLCBsaW1pdFR5cGUpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoKKyAgICBwcml2YXRlIHN0YXRpYyBDYWxlbmRhckZhY3RvcnkgZmFjdG9yeTsKKyAgICBwdWJsaWMgc3RhdGljIENhbGVuZGFyRmFjdG9yeSBmYWN0b3J5KCkgeworICAgICAgICBpZiAoZmFjdG9yeSA9PSBudWxsKSB7CisgICAgICAgICAgICBmYWN0b3J5ID0gbmV3IENhbGVuZGFyRmFjdG9yeSgpIHsKKyAgICAgICAgICAgICAgICBwdWJsaWMgQ2FsZW5kYXIgY3JlYXRlKFRpbWVab25lIHR6LCBMb2NhbGUgbG9jKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSmFwYW5lc2VDYWxlbmRhcih0eiwgbG9jKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBwdWJsaWMgU3RyaW5nIGZhY3RvcnlOYW1lKCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gIkphcGFuZXNlIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9OworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWN0b3J5OworICAgIH0KKyAgICAqLworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3V0aWwvT3ZlcmxheUJ1bmRsZS5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L3V0aWwvT3ZlcmxheUJ1bmRsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjkyZjkzNDUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdXRpbC9PdmVybGF5QnVuZGxlLmphdmEKQEAgLTAsMCArMSwxNzkgQEAKKy8qKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMS0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvdXRpbC9PdmVybGF5QnVuZGxlLmphdmEsdiAkCisgKiAkRGF0ZTogMjAwMi8xMi8xOCAxOToyNDoxNSAkCisgKiAkUmV2aXNpb246IDEuNyAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmljdS51dGlsOworCitpbXBvcnQgamF2YS51dGlsLio7CisKKy8qKgorICogQSBSZXNvdXJjZUJ1bmRsZSB0aGF0IG92ZXJsYXlzIG9uZSBoaWVyYXJjaHkgYXRvcCBhbm90aGVyLiAgVGhpcyBpcworICogYmVzdCBleHBsYWluZWQgYnkgZXhhbXBsZS4gIFN1cHBvc2Ugb25lIHdhbnRzIHRvIHVzZSB0aGUKKyAqIHJlc291cmNlIGhpYXJhcmNoeSAoaW4gSkRLIDEuMiBhbmQgMS4zLCBidXQgbm90IDEuNCkgYXQgCisgKiAiamF2YS50ZXh0LnJlc291cmNlcy5Mb2NhbGVFbGVtZW50cyIsIGJ1dCBvbmUgd2FudHMgdG8gdXNlCisgKiBhIG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlICJOdW1iZXJQYXR0ZXJucyIgcmVzb3VyY2UgaW4gdGhlCisgKiBmcl9GUiBsb2NhbGUuICBPbmUgd2F5IHRvIGRvIHRoaXMgaXMgdG8gYWRkIHNwZWNpYWwgY2FzZSBjb2RlCisgKiB0byB0aGUgbG9va3VwIG9wZXJhdGlvbiB0byBjaGVjayBmb3IgZnJfRlIgYW5kIHRoZSBrZXkKKyAqICJOdW1iZXJQYXR0ZXJucyIsIGFuZCBpbiB0aGF0IGNhc2UsIGxvYWQgdXAgY3VzdG9tIGRhdGEuICBIb3dldmVyLAorICogdGhpcyBiZWNvbWVzIHVud2llbGR5IGFuZCBwbGFjZXMgc29tZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUKKyAqIGVmZmVjdGl2ZSByZXNvdXJjZSBoaWVyYXJjaHkgaW50byB0aGUgY29kZS4KKyAqCisgKiBUaGUgT3ZlcmxheUJ1bmRsZSBzb2x2ZXMgdGhpcyBwcm9ibGVtIGJ5IGxheWVyaW5nIGFub3RoZXIKKyAqIGhpZXJhcmNoeSwgZS5nLCAiY29tLmFjbWUucmVzb3VyY2VzLkxvY2FsZUVsZW1lbnRzIiwgb24gdG9wIG9mIGEKKyAqIGJhc2UgaGllcmFyY2h5LiAgV2hlbiBhIHJlc291cmNlIGlzIHJlcXVlc3RlZCwgaXQgaXMgZmlyc3Qgc291Z2h0CisgKiBpbiB0aGUgb3ZlcmxheSBoaWVyYXJjaHksIGFuZCBpZiBub3QgZm91bmQgdGhlcmUsIGl0IGlzIHNvdWdodCBpbgorICogdGhlIGJhc2UgaGllcmFyY2h5LiAgTXVsdGlwbGUgb3ZlcmxheXMgYXJlIHN1cHBvcnRlZCwgYnV0IGluCisgKiBwcmFjdGljZSBvbmUgaXMgdXN1YWxseSBzdWZmaWNpZW50LgorICogCisgKiBUaGUgT3ZlcmxheUJ1bmRsZSBhbHNvIGFkZHJlc3NlcyB0aGUgcHJvYmxlbSBvZiBjb3VudHJ5LW9yaWVudGVkCisgKiBkYXRhLiAgVG8gc3BlY2lmeSB0aGUgZGVmYXVsdCBkYXRhIGZvciBhIGxhbmd1YWdlLCBvbmUganVzdCBzZXRzCisgKiB0aGUgbGFuZ3VhZ2UgcmVzb3VyY2UgYnVuZGxlIGRhdGEuICBIb3dldmVyLCBzcGVjaWZ5aW5nIHRoZSBkZWZhdWx0CisgKiBkYXRhIGZvciBhIGNvdW50cnkgdXNpbmcgdGhlIHN0YW5kYXJkIFJlc291cmNlQnVuZGxlIG1lY2hhbmlzbSBpcworICogaW1wb3NzaWJsZS4gIFRoZSBPdmVybGF5QnVuZGxlIHJlY29nbml6ZXMgIndpbGRjYXJkIiBsb2NhbGVzIHdpdGgKKyAqIHRoZSBzcGVjaWFsIGxhbmd1YWdlIGNvZGUgInh4Ii4gIFdoZW4gbG9va2luZyB1cCBkYXRhIGZvciBhIGxvY2FsZQorICogd2l0aCBhIG5vbi1lbXB0eSBjb3VudHJ5LCBpZiBhbiBleGFjdCBsb2NhbGUgbWF0Y2ggY2Fubm90IGJlIGZvdW5kLAorICogdGhlIE92ZXJsYXlCdW5kbGUgbG9va3MgZm9yIGRhdGEgaW4gdGhlIGxvY2FsZSB4eF9ZWSwgd2hlcmUgWVkgaXMKKyAqIHRoZSBjb3VudHJ5IGJlaW5nIHNvdWdodC4gIFRoaXMgZWZmZWN0aXZlbHkgYWRkcyBhbm90aGVyIGVudHJ5IGluCisgKiB0aGUgZmFsbGJhY2sgc2VxdWVuY2UgZm9yIGEgbG9jYWxlIGFhX0JCOiBhYV9CQiwgeHhfQkIsIGFhLCByb290LgorICogV2lsZGNhcmQgbG9jYWxlcyBhcmUgbm90IGltcGxlbWVudGVkIGZvciB0aGUgYmFzZSBoaWVyYXJjaHksIG9ubHkKKyAqIGZvciBvdmVybGF5cy4KKyAqCisgKiBUaGUgT3ZlcmxheUJ1bmRsZSBpcyBpbXBsZW1lbnRlZCBhcyBhbiBhcnJheSBvZiBuIFJlc291cmNlQnVuZGxlCisgKiBiYXNlIG5hbWVzLiAgVGhlIGJhc2UgbmFtZXMgYXJlIHNlYXJjaGVkIGZyb20gMCB0byBuLTEuICBCYXNlIG5hbWUKKyAqIG4tMSBpcyBzcGVjaWFsOyBpdCBpcyB0aGUgYmFzZSBoaWVyYXJjaHkuICBUaGlzIHNob3VsZCBiZSBhCisgKiB3ZWxsLXBvcHVsYXRlZCBoaWVyYXJjaHkgd2l0aCBtb3N0IG9mIHRoZSBkZWZhdWx0IGRhdGEsIHR5cGljYWxseSwKKyAqIHRoZSBpY3Ugb3Igc3VuIGNvcmUgaGllcmFyY2hpZXMuICBUaGUgYmFzZSBoaWVyYXJjaHkgaXMKKyAqIHRyZWF0ZWQgZGlmZmVyZW50bHkgZnJvbSB0aGUgb3ZlcmxheXMgYWJvdmUgaXQuICBJdCBkb2VzIG5vdCBnZXQKKyAqIHdpbGRjYXJkIHJlc29sdXRpb24sIGFuZCB0aGUgZ2V0S2V5cygpIGZyYW1ld29yayBtZXRob2QgaXMKKyAqIGRlbGVnYXRlZCB0byB0aGUgYmFzZSBoaWVyYXJjaHkgYnVuZGxlLgorICoKKyAqIFVzYWdlOiBJbnN0YW50aWF0ZSBhbiBPdmVybGF5QnVuZGxlIGRpcmVjdGx5IChub3QgdmlhIGEgZmFjdG9yeQorICogbWV0aG9kIGFzIGluIFJlc291cmNlQnVuZGxlKS4gIEluc3RlYWQgb2Ygc3BlY2lmeWluZyBhIHNpbmdsZSBiYXNlCisgKiBuYW1lLCBwYXNzIGl0IGFuIGFycmF5IG9mIDIgb3IgbW9yZSBiYXNlIG5hbWVzLiAgQWZ0ZXIgdGhhdCwgdXNlIGl0CisgKiBleGFjdGx5IGFzIHlvdSB3b3VsZCB1c2UgUmVzb3VyY2VCdW5kbGUuCisgKgorICogQHNlZSBqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGUKKyAqIEBhdXRob3IgQWxhbiBMaXUKKyAqIEBpbnRlcm5hbAorICogQGRlcHJlY2F0ZWQgSUNVIDIuNC4gVGhpcyBjbGFzcyBtYXkgYmUgcmVtb3ZlZCBvciBtb2RpZmllZC4KKyAqLworLy8gcHJlcGFyZSB0byBkZXByZWNhdGUgaW4gbmV4dCByZWxlYXNlCisvLy9DTE9WRVI6T0ZGCitwdWJsaWMgY2xhc3MgT3ZlcmxheUJ1bmRsZSBleHRlbmRzIFJlc291cmNlQnVuZGxlIHsKKworICAgIC8qKgorICAgICAqIFRoZSBhcnJheSBvZiBiYXNlIG5hbWVzLCB3aXRoIHRoZSBsZW5ndGgtMSBlbnRyeSBiZWluZyB0aGUgYmFzZQorICAgICAqIGhpZXJhcmNoeSwgdHlwaWNhbGx5ICJzdW4udGV4dC5yZXNvdXJjZXMuTG9jYWxlRWxlbWVudHMiLgorICAgICAqLworICAgIHByaXZhdGUgU3RyaW5nW10gYmFzZU5hbWVzOworCisgICAgLyoqCisgICAgICogVGhlIHJlcXVlc3RlZCBsb2NhbGUuCisgICAgICovCisgICAgcHJpdmF0ZSBMb2NhbGUgbG9jYWxlOworCisgICAgLyoqCisgICAgICogTG9hZGVkIGJ1bmRsZXMuICBUaGVzZSB3aWxsIGJlIG51bGwgdW50aWwgdGhleSBhcmUgbG9hZGVkIG9uCisgICAgICogZGVtYW5kLgorICAgICAqLworICAgIHByaXZhdGUgUmVzb3VyY2VCdW5kbGVbXSBidW5kbGVzOworCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGFuIG92ZXJsYXkgYnVuZGxlIGdpdmVuIGEgc2VxdWVuY2Ugb2YgYmFzZSBuYW1lcyBhbmQKKyAgICAgKiBhIGxvY2FsZS4KKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40LiBUaGlzIGNsYXNzIG1heSBiZSByZW1vdmVkIG9yIG1vZGlmaWVkLgorICAgICAqLworICAgIHB1YmxpYyBPdmVybGF5QnVuZGxlKFN0cmluZ1tdIGJhc2VOYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhbGUgbG9jYWxlKSB7CisgICAgICAgIHRoaXMuYmFzZU5hbWVzID0gYmFzZU5hbWVzOworICAgICAgICB0aGlzLmxvY2FsZSA9IGxvY2FsZTsKKyAgICAgICAgYnVuZGxlcyA9IG5ldyBSZXNvdXJjZUJ1bmRsZVtiYXNlTmFtZXMubGVuZ3RoXTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXNvdXJjZUJ1bmRsZSBmcmFtZXdvcmsgbWV0aG9kLiAgRGVsZWdhdGVzIHRvCisgICAgICogYnVuZGxlc1tpXS5nZXRPYmplY3QoKS4KKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKiBAZGVwcmVjYXRlZCBJQ1UgMi40LiBUaGlzIGNsYXNzIG1heSBiZSByZW1vdmVkIG9yIG1vZGlmaWVkLgorICAgICAqLyAKKyAgIHByb3RlY3RlZCBPYmplY3QgaGFuZGxlR2V0T2JqZWN0KFN0cmluZyBrZXkpIAorICAgICAgICB0aHJvd3MgTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uIHsKKworICAgICAgICBPYmplY3QgbyA9IG51bGw7CisKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPGJ1bmRsZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGxvYWQoaSk7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIG8gPSBidW5kbGVzW2ldLmdldE9iamVjdChrZXkpOworICAgICAgICAgICAgfSBjYXRjaCAoTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBpZiAoaSA9PSBidW5kbGVzLmxlbmd0aC0xKSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IGU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG8gIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG87CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVzb3VyY2VCdW5kbGUgZnJhbWV3b3JrIG1ldGhvZC4gIERlbGVnYXRlcyB0bworICAgICAqIGJ1bmRsZXNbYnVuZGxlcy5sZW5ndGgtMV0uZ2V0S2V5cygpLgorICAgICAqIEBpbnRlcm5hbAorICAgICAqIEBkZXByZWNhdGVkIElDVSAyLjQuIFRoaXMgY2xhc3MgbWF5IGJlIHJlbW92ZWQgb3IgbW9kaWZpZWQuCisgICAgICovCisgICAgcHVibGljIEVudW1lcmF0aW9uIGdldEtleXMoKSB7CisgICAgICAgIC8vIFJldHVybiB0aGUgZW51bWVyYXRpb24gb2YgdGhlIGxhc3QgYnVuZGxlLCB3aGljaCBpcyB0aGUgYmFzZQorICAgICAgICAvLyBvZiBvdXIgaGllcmFyY2h5IHN0YWNrLgorICAgICAgICBpbnQgaSA9IGJ1bmRsZXMubGVuZ3RoIC0gMTsKKyAgICAgICAgbG9hZChpKTsKKyAgICAgICAgcmV0dXJuIGJ1bmRsZXNbaV0uZ2V0S2V5cygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIExvYWQgdGhlIGktdGggYnVuZGxlIGFuZCBpbXBsZW1lbnQgd2lsZGNhcmQgcmVzb2x1dGlvbi4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgbG9hZChpbnQgaSkKKyAgICAgICAgdGhyb3dzIE1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiB7CisKKyAgICAgICAgaWYgKGJ1bmRsZXNbaV0gPT0gbnVsbCkgeworICAgICAgICAgICAgYm9vbGVhbiB0cnlXaWxkY2FyZCA9IGZhbHNlOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBidW5kbGVzW2ldID0gUmVzb3VyY2VCdW5kbGUuZ2V0QnVuZGxlKGJhc2VOYW1lc1tpXSwgbG9jYWxlKTsKKyAgICAgICAgICAgICAgICBpZiAoYnVuZGxlc1tpXS5nZXRMb2NhbGUoKS5lcXVhbHMobG9jYWxlKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChsb2NhbGUuZ2V0Q291bnRyeSgpLmxlbmd0aCgpICE9IDAgJiYgaSAhPSBidW5kbGVzLmxlbmd0aC0xKSB7CisgICAgICAgICAgICAgICAgICAgIHRyeVdpbGRjYXJkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGNhdGNoIChNaXNzaW5nUmVzb3VyY2VFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIGlmIChpID09IGJ1bmRsZXMubGVuZ3RoLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdHJ5V2lsZGNhcmQgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHRyeVdpbGRjYXJkKSB7CisgICAgICAgICAgICAgICAgTG9jYWxlIHdpbGRjYXJkID0gbmV3IExvY2FsZSgieHgiLCBsb2NhbGUuZ2V0Q291bnRyeSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlLmdldFZhcmlhbnQoKSk7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgYnVuZGxlc1tpXSA9IFJlc291cmNlQnVuZGxlLmdldEJ1bmRsZShiYXNlTmFtZXNbaV0sIHdpbGRjYXJkKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChNaXNzaW5nUmVzb3VyY2VFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoYnVuZGxlc1tpXSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3V0aWwvUmFuZ2VEYXRlUnVsZS5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L3V0aWwvUmFuZ2VEYXRlUnVsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmIzOTRiYjMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdXRpbC9SYW5nZURhdGVSdWxlLmphdmEKQEAgLTAsMCArMSwxNjggQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS91dGlsL1JhbmdlRGF0ZVJ1bGUuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8xMi8xOCAyMToyMDo1MiAkIAorICogJFJldmlzaW9uOiAxLjcgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS5pY3UudXRpbDsKKworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7CisKKy8qKgorICogSW1wbGVtZW50YXRpb24gb2YgRGF0ZVJ1bGUgdGhhdCB0YWtlcyBhIHJhbmdlLgorICogQGRyYWZ0IElDVSAyLjIKKyAqLworcHVibGljIGNsYXNzIFJhbmdlRGF0ZVJ1bGUgaW1wbGVtZW50cyBEYXRlUnVsZQoreworICAgIC8qKgorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIFJhbmdlRGF0ZVJ1bGUoKQorICAgIHsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKi8KKyAgICAvLyBSYW5nZSBpcyBhIHBhY2thZ2UtcHJpdmF0ZSBjbGFzcyBzbyB0aGlzIHNob3VsZCBiZSBwYWNrYWdlLXByaXZhdGUgdG9vLCBwcm9iYWJseQorICAgIHB1YmxpYyBSYW5nZURhdGVSdWxlKFJhbmdlW10gcmFuZ2VzKQorICAgIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByYW5nZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIHRoaXMucmFuZ2VzLmFkZEVsZW1lbnQocmFuZ2VzW2ldKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIHZvaWQgYWRkKERhdGVSdWxlIHJ1bGUpCisgICAgeworICAgICAgICBhZGQobmV3IERhdGUoTG9uZy5NSU5fVkFMVUUpLCBydWxlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGFkZChEYXRlIHN0YXJ0LCBEYXRlUnVsZSBydWxlKQorICAgIHsKKyAgICAgICAgLy8gVE9ETzogSW5zZXJ0IGluIHRoZSByaWdodCBwbGFjZQorICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oIkFkZDogIiArIHN0YXJ0LnRvU3RyaW5nKCkpOworICAgICAgICByYW5nZXMuYWRkRWxlbWVudChuZXcgUmFuZ2Uoc3RhcnQsIHJ1bGUpKTsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBEYXRlIGZpcnN0QWZ0ZXIoRGF0ZSBzdGFydCkKKyAgICB7CisgICAgICAgIC8vIEZpbmQgdGhlIHJhbmdlIHRoYXQgSSBzaG91bGQgbG9vayBhdAorICAgICAgICBpbnQgaW5kZXggPSBzdGFydEluZGV4KHN0YXJ0KTsKKyAgICAgICAgRGF0ZSByZXN1bHQgPSBudWxsOworCisgICAgICAgIFJhbmdlIHIgPSByYW5nZUF0KGluZGV4KTsKKyAgICAgICAgUmFuZ2UgZSA9IHJhbmdlQXQoaW5kZXgrMSk7CisKKyAgICAgICAgaWYgKHIgIT0gbnVsbCAmJiByLnJ1bGUgIT0gbnVsbCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGUgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IHIucnVsZS5maXJzdEJldHdlZW4oc3RhcnQsIGUuc3RhcnQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSByLnJ1bGUuZmlyc3RBZnRlcihzdGFydCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBEYXRlIGZpcnN0QmV0d2VlbihEYXRlIHN0YXJ0LCBEYXRlIGVuZCkKKyAgICB7CisgICAgICAgIC8vIEZpbmQgdGhlIHJhbmdlIHRoYXQgSSBzaG91bGQgbG9vayBhdAorICAgICAgICBpbnQgaW5kZXggPSBzdGFydEluZGV4KHN0YXJ0KTsKKyAgICAgICAgRGF0ZSByZXN1bHQgPSBudWxsOworCisgICAgICAgIFJhbmdlIG5leHQgPSByYW5nZUF0KGluZGV4KTsKKworICAgICAgICB3aGlsZSAocmVzdWx0ID09IG51bGwgJiYgbmV4dCAhPSBudWxsICYmICEgbmV4dC5zdGFydC5hZnRlcihlbmQpKQorICAgICAgICB7CisgICAgICAgICAgICBSYW5nZSByID0gbmV4dDsKKyAgICAgICAgICAgIG5leHQgPSByYW5nZUF0KGluZGV4KzEpOworCisgICAgICAgICAgICBpZiAoci5ydWxlICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBEYXRlIGUgPSAobmV4dCAhPSBudWxsICYmIG5leHQuc3RhcnQuYmVmb3JlKGVuZCkpID8gbmV4dC5zdGFydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBlbmQ7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gci5ydWxlLmZpcnN0QmV0d2VlbihzdGFydCwgZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGlzT24oRGF0ZSBkYXRlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8qKgorICAgICAqIENoZWNrIHdoZXRoZXIgdGhpcyBldmVudCBvY2N1cnMgYXQgbGVhc3Qgb25jZSBiZXR3ZWVuIHRoZSB0d28KKyAgICAgKiBkYXRlcyBnaXZlbi4KKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGlzQmV0d2VlbihEYXRlIHN0YXJ0LCBEYXRlIGVuZCkKKyAgICB7CisgICAgICAgIHJldHVybiBmaXJzdEJldHdlZW4oc3RhcnQsZW5kKSA9PSBudWxsOworICAgIH0KKworICAgIC8qCisgICAgICogZmluZCB0aGUgaW5kZXggb2YgdGhlIGxhc3QgcmFuZ2Ugd2hvc2Ugc3RhcnQgZGF0ZSBpcyBiZWZvcmUgInN0YXJ0IgorICAgICAqIHJldHVybnMgYW4gaW5kZXggPj0gcmFuZ2VzLnNpemUoKSBpZiB0aGVyZSBpcyBub25lCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgc3RhcnRJbmRleChEYXRlIHN0YXJ0KQorICAgIHsKKyAgICAgICAgaW50IGxhc3RJbmRleCA9IHJhbmdlcy5zaXplKCk7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByYW5nZXMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIFJhbmdlIHIgPSAoUmFuZ2UpIHJhbmdlcy5lbGVtZW50QXQoaSk7CisgICAgICAgICAgICBpZiAoc3RhcnQuYmVmb3JlKHIuc3RhcnQpKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsYXN0SW5kZXggPSBpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBsYXN0SW5kZXg7CisgICAgfQorCisgICAgcHJpdmF0ZSBSYW5nZSByYW5nZUF0KGludCBpbmRleCkKKyAgICB7CisgICAgICAgcmV0dXJuIChpbmRleCA8IHJhbmdlcy5zaXplKCkpID8gKFJhbmdlKSByYW5nZXMuZWxlbWVudEF0KGluZGV4KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG51bGw7CisgICAgfQorCisgICAgVmVjdG9yIHJhbmdlcyA9IG5ldyBWZWN0b3IoMiwyKTsKK307CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIFByaXZhdGVzCisvLworCitjbGFzcyBSYW5nZSB7CisgICAgcHVibGljIFJhbmdlKERhdGUgc3RhcnQsIERhdGVSdWxlIHJ1bGUpIHsKKyAgICAgICAgdGhpcy5zdGFydCA9IHN0YXJ0OworICAgICAgICB0aGlzLnJ1bGUgPSBydWxlOworICAgIH0KKyAgICBwdWJsaWMgRGF0ZSAgICAgc3RhcnQ7CisgICAgcHVibGljIERhdGVSdWxlIHJ1bGU7Cit9CisKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS91dGlsL1JhbmdlVmFsdWVJdGVyYXRvci5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L3V0aWwvUmFuZ2VWYWx1ZUl0ZXJhdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNTUxYzgzYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS91dGlsL1JhbmdlVmFsdWVJdGVyYXRvci5qYXZhCkBAIC0wLDAgKzEsMTE2IEBACisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICoKKyogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS91dGlsL1JhbmdlVmFsdWVJdGVyYXRvci5qYXZhLHYgJAorKiAkRGF0ZTogMjAwMi8xMi8wMyAyMDo0NjowOSAkCisqICRSZXZpc2lvbjogMS41ICQKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKworcGFja2FnZSBjb20uaWJtLmljdS51dGlsOworCisvKioKKyAqIDxwPkludGVyZmFjZSBmb3IgZW5hYmxpbmcgaXRlcmF0aW9uIG92ZXIgc2V0cyBvZiA8aW50IGluZGV4LCBpbnQgdmFsdWU+LCAKKyAqIHdoZXJlIGluZGV4IGlzIHRoZSBzb3J0ZWQgaW50ZWdlciBpbmRleCBpbiBhc2NlbmRpbmcgb3JkZXIgYW5kIHZhbHVlLCBpdHMgCisgKiBhc3NvY2lhdGVkIGludGVnZXIgdmFsdWUuPC9wPgorICogPHA+VGhlIHJlc3VsdCBmb3IgZWFjaCBpdGVyYXRpb24gaXMgdGhlIGNvbnNlY3V0aXZlIHJhbmdlIG9mIAorICogPGludCBpbmRleCwgaW50IHZhbHVlPiB3aXRoIHRoZSBzYW1lIHZhbHVlLiBSZXN1bHQgaXMgcmVwcmVzZW50ZWQgYnkgCisgKiA8c3RhcnQsIGxpbWl0LCB2YWx1ZT4gd2hlcmU8L3A+CisgKiA8dWw+CisgKiA8bGk+IHN0YXJ0IGlzIHRoZSBzdGFydGluZyBpbnRlZ2VyIG9mIHRoZSByZXN1bHQgcmFuZ2UKKyAqIDxsaT4gbGltaXQgaXMgMSBhZnRlciB0aGUgbWF4aW11bSBpbnRlZ2VyIHRoYXQgZm9sbG93cyBzdGFydCwgc3VjaCB0aGF0CisgKiAgICAgIGFsbCBpbnRlZ2VycyBiZXR3ZWVuIHN0YXJ0IGFuZCAobGltaXQgLSAxKSwgaW5jbHVzaXZlLCBoYXZlIHRoZSBzYW1lIAorICogICAgICBhc3NvY2lhdGVkIGludGVnZXIgdmFsdWUuCisgKiA8bGk+IHZhbHVlIGlzIHRoZSBpbnRlZ2VyIHZhbHVlIHRoYXQgYWxsIGludGVnZXJzIGZyb20gc3RhcnQgdG8gKGxpbWl0IC0gMSkgCisgKiAgICAgIHNoYXJlIGluIGNvbW1vbi4KKyAqIDwvdWw+CisgKiA8cD4KKyAqIEhlbmNlIHZhbHVlKHN0YXJ0KSA9IHZhbHVlKHN0YXJ0ICsgMSkgPSAuLi4uID0gdmFsdWUoc3RhcnQgKyBuKSA9IC4uLi4gPQorICogdmFsdWUobGltaXQgLSAxKS4gSG93ZXZlciB2YWx1ZShzdGFydCAtMSkgIT0gdmFsdWUoc3RhcnQpIGFuZCAKKyAqIHZhbHVlKGxpbWl0KSAhPSB2YWx1ZShzdGFydCkuCisgKiA8L3A+CisgKiA8cD5Nb3N0IGltcGxlbWVudGF0aW9ucyB3aWxsIGJlIGNyZWF0ZWQgYnkgZmFjdG9yeSBtZXRob2RzLCBzdWNoIGFzIHRoZQorICogY2hhcmFjdGVyIHR5cGUgaXRlcmF0b3IgaW4gVUNoYXJhY3Rlci5nZXRUeXBlSXRlcmF0b3IuIFNlZSBleGFtcGxlIGJlbG93LgorICogPC9wPgorICogRXhhbXBsZSBvZiB1c2U6PGJyPgorICogPHByZT4KKyAqIFJhbmdlVmFsdWVJdGVyYXRvciBpdGVyYXRvciA9IFVDaGFyYWN0ZXIuZ2V0VHlwZUl0ZXJhdG9yKCk7CisgKiBSYW5nZVZhbHVlSXRlcmF0b3IuRWxlbWVudCByZXN1bHQgPSBuZXcgUmFuZ2VWYWx1ZUl0ZXJhdG9yLkVsZW1lbnQoKTsKKyAqIHdoaWxlIChpdGVyYXRvci5uZXh0KHJlc3VsdCkpIHsKKyAqICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkNvZGVwb2ludCBcXHUiICsgCisgKiAgICAgICAgICAgICAgICAgICAgICAgIEludGVnZXIudG9IZXhTdHJpbmcocmVzdWx0LnN0YXJ0KSArIAorICogICAgICAgICAgICAgICAgICAgICAgICAiIHRvIGNvZGVwb2ludCBcXHUiICsKKyAqICAgICAgICAgICAgICAgICAgICAgICAgSW50ZWdlci50b0hleFN0cmluZyhyZXN1bHQubGltaXQgLSAxKSArIAorICogICAgICAgICAgICAgICAgICAgICAgICAiIGhhcyB0aGUgY2hhcmFjdGVyIHR5cGUgIiArIHJlc3VsdC52YWx1ZSk7CisgKiB9CisgKiA8L3ByZT4KKyAqIEBhdXRob3Igc3lud2VlCisgKiBAZHJhZnQgSUNVIDIuMQorICovCitwdWJsaWMgaW50ZXJmYWNlIFJhbmdlVmFsdWVJdGVyYXRvcgoreworICAgIC8vIHB1YmxpYyBpbm5lciBjbGFzcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvKioKKyAgICAqIFJldHVybiByZXN1bHQgd3JhcHBlciBmb3IgY29tLmlibS5pY3UudXRpbC5SYW5nZVZhbHVlSXRlcmF0b3IuCisgICAgKiBTdG9yZXMgdGhlIHN0YXJ0IGFuZCBsaW1pdCBvZiB0aGUgY29udGlub3VzIHJlc3VsdCByYW5nZSBhbmQgdGhlCisgICAgKiBjb21tb24gdmFsdWUgYWxsIGludGVnZXJzIGJldHdlZW4gW3N0YXJ0LCBsaW1pdCAtIDFdIGhhcy4KKyAgICAqIEBkcmFmdCBJQ1UgMi4xCisgICAgKi8KKyAgICBwdWJsaWMgY2xhc3MgRWxlbWVudAorICAgIHsKKyAgICAgICAgLy8gcHVibGljIGRhdGEgbWVtYmVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAKKyAgICAgICAgLyoqCisgICAgICAgICogU3RhcnRpbmcgaW50ZWdlciBvZiB0aGUgY29udGludW91cyByZXN1bHQgcmFuZ2UgdGhhdCBoYXMgdGhlIHNhbWUgCisgICAgICAgICogdmFsdWUKKyAgICAgICAgKiBAZHJhZnQgSUNVIDIuMQorICAgICAgICAqLworICAgICAgICBwdWJsaWMgaW50IHN0YXJ0OworICAgICAgICAvKioKKyAgICAgICAgKiAoRW5kICsgMSkgaW50ZWdlciBvZiBjb250aW51b3VzIHJlc3VsdCByYW5nZSB0aGF0IGhhcyB0aGUgc2FtZSAKKyAgICAgICAgKiB2YWx1ZQorICAgICAgICAqIEBkcmFmdCBJQ1UgMi4xCisgICAgICAgICovCisgICAgICAgIHB1YmxpYyBpbnQgbGltaXQ7CisgICAgICAgIC8qKgorICAgICAgICAqIEdldHMgdGhlIGNvbW1vbiB2YWx1ZSBvZiB0aGUgY29udGlub3VzIHJlc3VsdCByYW5nZQorICAgICAgICAqIEBkcmFmdCBJQ1UgMi4xCisgICAgICAgICovIAorICAgICAgICBwdWJsaWMgaW50IHZhbHVlOworICAgICAgICAKKyAgICAgICAgLy8gcHVibGljIGNvbnN0cnVjdG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgIAorICAgICAgICAvKioKKyAgICAgICAgICogRW1wdHkgZGVmYXVsdCBjb25zdHJ1Y3RvciB0byBtYWtlIGphdmFkb2MgaGFwcHkKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBFbGVtZW50KCkgCisgICAgICAgIHsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvLyBwdWJsaWMgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgKiA8cD5HZXRzIHRoZSBuZXh0IG1heGltYWwgcmVzdWx0IHJhbmdlIHdpdGggYSBjb21tb24gdmFsdWUgYW5kIHJldHVybnMgCisgICAgKiB0cnVlIGlmIHdlIGFyZSBub3QgYXQgdGhlIGVuZCBvZiB0aGUgaXRlcmF0aW9uLCBmYWxzZSBvdGhlcndpc2UuPC9wPgorICAgICogPHA+SWYgdGhlIHJldHVybiBib29sZWFuIGlzIGEgZmFsc2UsIHRoZSBjb250ZW50cyBvZiBlbGVtZW50cyB3aWxsIG5vdAorICAgICogYmUgdXBkYXRlZC48L3A+CisgICAgKiBAcGFyYW0gZWxlbWVudCBmb3Igc3RvcmluZyB0aGUgcmVzdWx0IHJhbmdlIGFuZCB2YWx1ZQorICAgICogQHJldHVybiB0cnVlIGlmIHdlIGFyZSBub3QgYXQgdGhlIGVuZCBvZiB0aGUgaXRlcmF0aW9uLCBmYWxzZSBvdGhlcndpc2UuCisgICAgKiBAc2VlIEVsZW1lbnQKKyAgICAqIEBkcmFmdCBJQ1UgMi4xCisgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBuZXh0KEVsZW1lbnQgZWxlbWVudCk7CisgICAgCisgICAgLyoqCisgICAgKiBSZXNldHMgdGhlIGl0ZXJhdG9yIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGl0ZXJhdGlvbi4KKyAgICAqIEBkcmFmdCBJQ1UgMi4xCisgICAgKi8KKyAgICBwdWJsaWMgdm9pZCByZXNldCgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS91dGlsL1NpbXBsZURhdGVSdWxlLmphdmEgYi9zcmMvY29tL2libS9pY3UvdXRpbC9TaW1wbGVEYXRlUnVsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjkwYzZlMzAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdXRpbC9TaW1wbGVEYXRlUnVsZS5qYXZhCkBAIC0wLDAgKzEsMjQwIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvdXRpbC9TaW1wbGVEYXRlUnVsZS5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAyLzEyLzA0IDAxOjAzOjM5ICQgCisgKiAkUmV2aXNpb246IDEuOCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworcGFja2FnZSBjb20uaWJtLmljdS51dGlsOworCitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgY29tLmlibS5pY3UudXRpbC5DYWxlbmRhcjsKK2ltcG9ydCBjb20uaWJtLmljdS51dGlsLkdyZWdvcmlhbkNhbGVuZGFyOworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuU2ltcGxlVGltZVpvbmU7CisKKy8qKgorICogU2ltcGxlIGltcGxlbWVudGF0aW9uIG9mIERhdGVSdWxlLgorICogQGRyYWZ0IElDVSAyLjIKKyAqLworcHVibGljIGNsYXNzIFNpbXBsZURhdGVSdWxlIGltcGxlbWVudHMgRGF0ZVJ1bGUKK3sKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgYSBydWxlIGZvciBhIGZpeGVkIGRhdGUgd2l0aGluIGEgbW9udGgKKyAgICAgKgorICAgICAqIEBwYXJhbSBtb250aCAgICAgICAgIFRoZSBtb250aCBpbiB3aGljaCB0aGlzIHJ1bGUgb2NjdXJzICgwLWJhc2VkKS4KKyAgICAgKiBAcGFyYW0gZGF5T2ZNb250aCAgICBUaGUgZGF0ZSBpbiB0aGF0IG1vbnRoICgxLWJhc2VkKS4KKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBTaW1wbGVEYXRlUnVsZShpbnQgbW9udGgsIGludCBkYXlPZk1vbnRoKQorICAgIHsKKyAgICAgICAgdGhpcy5tb250aCAgICAgID0gbW9udGg7CisgICAgICAgIHRoaXMuZGF5T2ZNb250aCA9IGRheU9mTW9udGg7CisgICAgICAgIHRoaXMuZGF5T2ZXZWVrICA9IDA7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGEgcnVsZSBmb3IgYSB3ZWVrZGF5IHdpdGhpbiBhIG1vbnRoLCBlLmcuIHRoZSBmaXJzdCBNb25kYXkuCisgICAgICoKKyAgICAgKiBAcGFyYW0gbW9udGggICAgICAgICBUaGUgbW9udGggaW4gd2hpY2ggdGhpcyBydWxlIG9jY3VycyAoMC1iYXNlZCkuCisgICAgICogQHBhcmFtIGRheU9mTW9udGggICAgQSBkYXRlIHdpdGhpbiB0aGF0IG1vbnRoICgxLWJhc2VkKS4KKyAgICAgKiBAcGFyYW0gZGF5T2ZXZWVrICAgICBUaGUgZGF5IG9mIHRoZSB3ZWVrIG9uIHdoaWNoIHRoaXMgcnVsZSBvY2N1cnMuCisgICAgICogQHBhcmFtIGFmdGVyICAgICAgICAgSWYgdHJ1ZSwgdGhpcyBydWxlIHNlbGVjdHMgdGhlIGZpcnN0IGRheU9mV2VlaworICAgICAqICAgICAgICAgICAgICAgICAgICAgIG9uIG9yIGFmdGVyIGRheU9mTW9udGguICBJZiBmYWxzZSwgdGhlIHJ1bGUgc2VsZWN0cworICAgICAqICAgICAgICAgICAgICAgICAgICAgIHRoZSBmaXJzdCBkYXlPZldlZWsgb24gb3IgYmVmb3JlIGRheU9mTW9udGguCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgU2ltcGxlRGF0ZVJ1bGUoaW50IG1vbnRoLCBpbnQgZGF5T2ZNb250aCwgaW50IGRheU9mV2VlaywgYm9vbGVhbiBhZnRlcikKKyAgICB7CisgICAgICAgIHRoaXMubW9udGggICAgICA9IG1vbnRoOworICAgICAgICB0aGlzLmRheU9mTW9udGggPSBkYXlPZk1vbnRoOworICAgICAgICB0aGlzLmRheU9mV2VlayAgPSBhZnRlciA/IGRheU9mV2VlayA6IC1kYXlPZldlZWs7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBmaXJzdCBvY2N1cnJhbmNlIG9mIHRoZSBldmVudCByZXByZXNlbnRlZCBieSB0aGlzIHJ1bGUKKyAgICAgKiB0aGF0IGlzIG9uIG9yIGFmdGVyIHRoZSBnaXZlbiBzdGFydCBkYXRlLgorICAgICAqCisgICAgICogQHBhcmFtIHN0YXJ0IE9ubHkgb2NjdXJyYW5jZXMgb24gb3IgYWZ0ZXIgdGhpcyBkYXRlIGFyZSByZXR1cm5lZC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gICAgICBUaGUgZGF0ZSBvbiB3aGljaCB0aGlzIGV2ZW50IG9jY3Vycywgb3IgbnVsbCBpZiBpdAorICAgICAqICAgICAgICAgICAgICBkb2VzIG5vdCBvY2N1ciBvbiBvciBhZnRlciB0aGUgc3RhcnQgZGF0ZS4KKyAgICAgKgorICAgICAqIEBzZWUgI2ZpcnN0QmV0d2VlbgorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIERhdGUgZmlyc3RBZnRlcihEYXRlIHN0YXJ0KQorICAgIHsKKyAgICAgICAgaWYgKHN0YXJ0RGF0ZSAhPSBudWxsICYmIHN0YXJ0LmJlZm9yZShzdGFydERhdGUpKSB7CisgICAgICAgICAgICBzdGFydCA9IHN0YXJ0RGF0ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZG9GaXJzdEJldHdlZW4oc3RhcnQsIGVuZERhdGUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgZmlyc3Qgb2NjdXJyYW5jZSBvZiB0aGUgZXZlbnQgcmVwcmVzZW50ZWQgYnkgdGhpcyBydWxlCisgICAgICogdGhhdCBpcyBvbiBvciBhZnRlciB0aGUgZ2l2ZW4gc3RhcnQgZGF0ZSBhbmQgYmVmb3JlIHRoZSBnaXZlbgorICAgICAqIGVuZCBkYXRlLgorICAgICAqCisgICAgICogQHBhcmFtIHN0YXJ0IE9ubHkgb2NjdXJyYW5jZXMgb24gb3IgYWZ0ZXIgdGhpcyBkYXRlIGFyZSByZXR1cm5lZC4KKyAgICAgKiBAcGFyYW0gZW5kICAgT25seSBvY2N1cnJhbmNlcyBiZWZvcmUgdGhpcyBkYXRlIGFyZSByZXR1cm5lZC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gICAgICBUaGUgZGF0ZSBvbiB3aGljaCB0aGlzIGV2ZW50IG9jY3Vycywgb3IgbnVsbCBpZiBpdAorICAgICAqICAgICAgICAgICAgICBkb2VzIG5vdCBvY2N1ciBiZXR3ZWVuIHRoZSBzdGFydCBhbmQgZW5kIGRhdGVzLgorICAgICAqCisgICAgICogQHNlZSAjZmlyc3RBZnRlcgorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIERhdGUgZmlyc3RCZXR3ZWVuKERhdGUgc3RhcnQsIERhdGUgZW5kKQorICAgIHsKKyAgICAgICAgLy8gUGluIHRvIHRoZSBtaW4vbWF4IGRhdGVzIGZvciB0aGlzIHJ1bGUKKyAgICAgICAgaWYgKHN0YXJ0RGF0ZSAhPSBudWxsICYmIHN0YXJ0LmJlZm9yZShzdGFydERhdGUpKSB7CisgICAgICAgICAgICBzdGFydCA9IHN0YXJ0RGF0ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZW5kRGF0ZSAhPSBudWxsICYmIGVuZC5hZnRlcihlbmREYXRlKSkgeworICAgICAgICAgICAgZW5kID0gZW5kRGF0ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZG9GaXJzdEJldHdlZW4oc3RhcnQsIGVuZCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ2hlY2tzIHdoZXRoZXIgdGhpcyBldmVudCBvY2N1cnMgb24gdGhlIGdpdmVuIGRhdGUuICBUaGlzIGRvZXMKKyAgICAgKiA8ZW0+bm90PC9lbT4gdGFrZSB0aW1lIG9mIGRheSBpbnRvIGFjY291bnQ7IGluc3RlYWQgaXQgY2hlY2tzCisgICAgICogd2hldGhlciB0aGlzIGV2ZW50IGFuZCB0aGUgZ2l2ZW4gZGF0ZSBhcmUgb24gdGhlIHNhbWUgZGF5LgorICAgICAqIFRoaXMgaXMgdXNlZnVsIGZvciBhcHBsaWNhdGlvbnMgc3VjaCBhcyBkZXRlcm1pbmluZyB3aGV0aGVyIGEgZ2l2ZW4KKyAgICAgKiBkYXkgaXMgYSBob2xpZGF5LgorICAgICAqCisgICAgICogQHBhcmFtIGRhdGUgIFRoZSBkYXRlIHRvIGNoZWNrLgorICAgICAqIEByZXR1cm4gICAgICB0cnVlIGlmIHRoaXMgZXZlbnQgb2NjdXJzIG9uIHRoZSBnaXZlbiBkYXRlLgorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICoKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc09uKERhdGUgZGF0ZSkKKyAgICB7CisgICAgICAgIGlmIChzdGFydERhdGUgIT0gbnVsbCAmJiBkYXRlLmJlZm9yZShzdGFydERhdGUpKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGVuZERhdGUgIT0gbnVsbCAmJiBkYXRlLmFmdGVyKGVuZERhdGUpKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBDYWxlbmRhciBjID0gY2FsZW5kYXI7CisKKyAgICAgICAgc3luY2hyb25pemVkKGMpIHsKKyAgICAgICAgICAgIGMuc2V0VGltZShkYXRlKTsKKworICAgICAgICAgICAgaW50IGRheU9mWWVhciA9IGMuZ2V0KENhbGVuZGFyLkRBWV9PRl9ZRUFSKTsKKworICAgICAgICAgICAgYy5zZXRUaW1lKGNvbXB1dGVJblllYXIoYy5nZXQoQ2FsZW5kYXIuWUVBUiksIGMpKTsKKworICAgICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oIiAgaXNPbjogZGF5T2ZZZWFyID0gIiArIGRheU9mWWVhcik7CisgICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiICAgICAgICBob2xpZGF5ICAgPSAiICsgYy5nZXQoQ2FsZW5kYXIuREFZX09GX1lFQVIpKTsKKworICAgICAgICAgICAgcmV0dXJuIGMuZ2V0KENhbGVuZGFyLkRBWV9PRl9ZRUFSKSA9PSBkYXlPZlllYXI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDaGVjayB3aGV0aGVyIHRoaXMgZXZlbnQgb2NjdXJzIGF0IGxlYXN0IG9uY2UgYmV0d2VlbiB0aGUgdHdvCisgICAgICogZGF0ZXMgZ2l2ZW4uCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc0JldHdlZW4oRGF0ZSBzdGFydCwgRGF0ZSBlbmQpCisgICAgeworICAgICAgICByZXR1cm4gZmlyc3RCZXR3ZWVuKHN0YXJ0LCBlbmQpICE9IG51bGw7IC8vIFRPRE86IG9wdGltaXplPworICAgIH0KKworICAgIHByaXZhdGUgRGF0ZSBkb0ZpcnN0QmV0d2VlbihEYXRlIHN0YXJ0LCBEYXRlIGVuZCkKKyAgICB7CisgICAgICAgIENhbGVuZGFyIGMgPSBjYWxlbmRhcjsKKworICAgICAgICBzeW5jaHJvbml6ZWQoYykgeworICAgICAgICAgICAgYy5zZXRUaW1lKHN0YXJ0KTsKKworICAgICAgICAgICAgaW50IHllYXIgPSBjLmdldChDYWxlbmRhci5ZRUFSKTsKKyAgICAgICAgICAgIGludCBtb250aCA9IGMuZ2V0KENhbGVuZGFyLk1PTlRIKTsKKworICAgICAgICAgICAgLy8gSWYgdGhlIHJ1bGUgaXMgZWFybGllciBpbiB0aGUgeWVhciB0aGFuIHRoZSBzdGFydCBkYXRlCisgICAgICAgICAgICAvLyB3ZSBoYXZlIHRvIGdvIHRvIHRoZSBuZXh0IHllYXIuCisgICAgICAgICAgICBpZiAobW9udGggPiB0aGlzLm1vbnRoKSB7CisgICAgICAgICAgICAgICAgeWVhcisrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBGaWd1cmUgb3V0IHdoZW4gdGhlIHJ1bGUgbGFuZHMgaW4gdGhlIGdpdmVuIHllYXIKKyAgICAgICAgICAgIERhdGUgcmVzdWx0ID0gY29tcHV0ZUluWWVhcih5ZWFyLCBjKTsKKworICAgICAgICAgICAgLy8gSWYgdGhlIHJ1bGUgaXMgaW4gdGhlIHNhbWUgbW9udGggYXMgdGhlIHN0YXJ0IGRhdGUsIGl0J3MgcG9zc2libGUKKyAgICAgICAgICAgIC8vIHRvIGdldCBhIHJlc3VsdCB0aGF0J3MgYmVmb3JlIHRoZSBzdGFydC4gIElmIHNvLCBnbyB0byBuZXh0IHllYXIuCisgICAgICAgICAgICBpZiAobW9udGggPT0gdGhpcy5tb250aCAmJiByZXN1bHQuYmVmb3JlKHN0YXJ0KSkgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNvbXB1dGVJblllYXIoeWVhcisxLCBjKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGVuZCAhPSBudWxsICYmIHJlc3VsdC5hZnRlcihlbmQpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBEYXRlIGNvbXB1dGVJblllYXIoaW50IHllYXIsIENhbGVuZGFyIGMpCisgICAgeworICAgICAgICBpZiAoYyA9PSBudWxsKSBjID0gY2FsZW5kYXI7CisKKyAgICAgICAgc3luY2hyb25pemVkKGMpIHsKKyAgICAgICAgICAgIGMuY2xlYXIoKTsKKyAgICAgICAgICAgIGMuc2V0KENhbGVuZGFyLkVSQSwgYy5nZXRNYXhpbXVtKENhbGVuZGFyLkVSQSkpOworICAgICAgICAgICAgYy5zZXQoQ2FsZW5kYXIuWUVBUiwgeWVhcik7CisgICAgICAgICAgICBjLnNldChDYWxlbmRhci5NT05USCwgbW9udGgpOworICAgICAgICAgICAgYy5zZXQoQ2FsZW5kYXIuREFURSwgZGF5T2ZNb250aCk7CisKKyAgICAgICAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCIgICAgIGNvbXB1dGVJblllYXI6IHN0YXJ0IGF0ICIgKyBjLmdldFRpbWUoKS50b1N0cmluZygpKTsKKworICAgICAgICAgICAgaWYgKGRheU9mV2VlayAhPSAwKSB7CisgICAgICAgICAgICAgICAgYy5zZXRUaW1lKGMuZ2V0VGltZSgpKTsgICAgICAgIC8vIEpESyAxLjEuMiB3b3JrYXJvdW5kCisgICAgICAgICAgICAgICAgaW50IHdlZWtkYXkgPSBjLmdldChDYWxlbmRhci5EQVlfT0ZfV0VFSyk7CisKKyAgICAgICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiICAgICAgICAgICAgICAgICAgICB3ZWVrZGF5ID0gIiArIHdlZWtkYXkpOworICAgICAgICAgICAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCIgICAgICAgICAgICAgICAgICAgIGRheU9mWWVhciA9ICIgKyBjLmdldChDYWxlbmRhci5EQVlfT0ZfWUVBUikpOworCisgICAgICAgICAgICAgICAgaW50IGRlbHRhID0gMDsKKyAgICAgICAgICAgICAgICBpZiAoZGF5T2ZXZWVrID4gMCkgeworICAgICAgICAgICAgICAgICAgICAvLyBXZSB3YW50IHRoZSBmaXJzdCBvY2N1cnJhbmNlIG9mIHRoZSBnaXZlbiBkYXkgb2YgdGhlIHdlZWsKKyAgICAgICAgICAgICAgICAgICAgLy8gb24gb3IgYWZ0ZXIgdGhlIHNwZWNpZmllZCBkYXRlIGluIHRoZSBtb250aC4KKyAgICAgICAgICAgICAgICAgICAgZGVsdGEgPSAoZGF5T2ZXZWVrIC0gd2Vla2RheSArIDcpICUgNzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF5T2ZXZWVrIDwgMCkgeworICAgICAgICAgICAgICAgICAgICAvLyBXZSB3YW50IHRoZSBmaXJzdCBvY2N1cnJhbmNlIG9mIHRoZSAoLWRheU9mV2VlaykKKyAgICAgICAgICAgICAgICAgICAgLy8gb24gb3IgYmVmb3JlIHRoZSBzcGVjaWZpZWQgZGF0ZSBpbiB0aGUgbW9udGguCisgICAgICAgICAgICAgICAgICAgIGRlbHRhID0gLSgoZGF5T2ZXZWVrICsgd2Vla2RheSArIDcpICUgNyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCIgICAgICAgICAgICAgICAgICAgIGFkZGluZyAiICsgZGVsdGEgKyAiIGRheXMiKTsKKyAgICAgICAgICAgICAgICBjLmFkZChDYWxlbmRhci5EQVRFLCBkZWx0YSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBjLmdldFRpbWUoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0Q2FsZW5kYXIoQ2FsZW5kYXIgYykgeworICAgICAgICBjYWxlbmRhciA9IGM7CisgICAgfQorCisgICAgc3RhdGljIEdyZWdvcmlhbkNhbGVuZGFyIGdDYWxlbmRhciA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcihuZXcgU2ltcGxlVGltZVpvbmUoMCwgIlVUQyIpKTsKKworICAgIENhbGVuZGFyIGNhbGVuZGFyID0gZ0NhbGVuZGFyOworCisgICAgcHJpdmF0ZSBpbnQgICAgIG1vbnRoOworICAgIHByaXZhdGUgaW50ICAgICBkYXlPZk1vbnRoOworICAgIHByaXZhdGUgaW50ICAgICBkYXlPZldlZWs7CisKKyAgICBwcml2YXRlIERhdGUgICAgc3RhcnREYXRlID0gbnVsbDsKKyAgICBwcml2YXRlIERhdGUgICAgZW5kRGF0ZSA9IG51bGw7Cit9OwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3V0aWwvU2ltcGxlSG9saWRheS5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L3V0aWwvU2ltcGxlSG9saWRheS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmJjZGM2YmYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdXRpbC9TaW1wbGVIb2xpZGF5LmphdmEKQEAgLTAsMCArMSwyNjAgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS91dGlsL1NpbXBsZUhvbGlkYXkuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8xMi8wNCAwMTowMzozOSAkIAorICogJFJldmlzaW9uOiAxLjYgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS5pY3UudXRpbDsKKworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGNvbS5pYm0uaWN1LnV0aWwuQ2FsZW5kYXI7CitpbXBvcnQgY29tLmlibS5pY3UudXRpbC5HcmVnb3JpYW5DYWxlbmRhcjsKKworLyoqCisgKiBBIGhvbGlkYXkgd2hvc2UgZGF0ZSBjYW4gYmUgcmVwcmVzZW50ZWQgYnkgYSBTaW1wbGVEYXRlUnVsZSBvYmplY3QKKyAqCisgKiBAc2VlIFNpbXBsZURhdGVSdWxlCisgKiBAZHJhZnQgSUNVIDIuMgorICovCitwdWJsaWMgY2xhc3MgU2ltcGxlSG9saWRheSBleHRlbmRzIEhvbGlkYXkgeworICAgIC8qKgorICAgICAqIENvbnN0cnVjdCBhbiBvYmplY3QgcmVwcmVzZW50aW5nIGEgaG9saWRheQorICAgICAqCisgICAgICogQHBhcmFtIG1vbnRoICAgICAgICAgVGhlIG1vbnRoIGluIHdoaWNoIHRoaXMgaG9saWRheSBvY2N1cnMgKDAtYmFzZWQpCisgICAgICogQHBhcmFtIGRheU9mTW9udGggICAgVGhlIGRhdGUgd2l0aGluIHRoZSBtb250aCAoMS1iYXNlZCkuCisgICAgICoKKyAgICAgKiBAcGFyYW0gbmFtZSAgVGhlIG5hbWUgb2YgdGhpcyBob2xpZGF5LiAgVGhpcyBzdHJpbmcgaXMgdXNlZCBhcyBhIGtleQorICAgICAqICAgICAgICAgICAgICB0byBsb29rIHVwIHRoZSBob2xpZGF5J3MgbmFtZSBhIHJlc291cmNlIGJ1bmRsZS4KKyAgICAgKiAgICAgICAgICAgICAgSWYgdGhlIG5hbWUgaXMgbm90IGZvdW5kIGluIHRoZSByZXNvdXJjZSBidW5kbGUsCisgICAgICogICAgICAgICAgICAgIGdldERpc3BsYXlOYW1lIHdpbGwgcmV0dXJuIHRoaXMgc3RyaW5nIGluc3RlYWQuCisgICAgICoKKyAgICAgKiBAc2VlIFNpbXBsZURhdGVSdWxlCisgICAgICogQHNlZSBIb2xpZGF5I2dldERpc3BsYXlOYW1lKGphdmEudXRpbC5Mb2NhbGUpCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgU2ltcGxlSG9saWRheShpbnQgbW9udGgsIGludCBkYXlPZk1vbnRoLCBTdHJpbmcgbmFtZSkKKyAgICB7CisgICAgICAgIHN1cGVyKG5hbWUsIG5ldyBTaW1wbGVEYXRlUnVsZShtb250aCwgZGF5T2ZNb250aCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdCBhbiBvYmplY3QgcmVwcmVzZW50aW5nIGEgaG9saWRheQorICAgICAqCisgICAgICogQHBhcmFtIG1vbnRoICAgICAgICAgVGhlIG1vbnRoIGluIHdoaWNoIHRoaXMgaG9saWRheSBvY2N1cnMgKDAtYmFzZWQpCisgICAgICogQHBhcmFtIGRheU9mTW9udGggICAgVGhlIGRhdGUgd2l0aGluIHRoZSBtb250aCAoMS1iYXNlZCkuCisgICAgICoKKyAgICAgKiBAcGFyYW0gbmFtZSAgVGhlIG5hbWUgb2YgdGhpcyBob2xpZGF5LiAgVGhpcyBzdHJpbmcgaXMgdXNlZCBhcyBhIGtleQorICAgICAqICAgICAgICAgICAgICB0byBsb29rIHVwIHRoZSBob2xpZGF5J3MgbmFtZSBhIHJlc291cmNlIGJ1bmRsZS4KKyAgICAgKiAgICAgICAgICAgICAgSWYgdGhlIG5hbWUgaXMgbm90IGZvdW5kIGluIHRoZSByZXNvdXJjZSBidW5kbGUsCisgICAgICogICAgICAgICAgICAgIGdldERpc3BsYXlOYW1lIHdpbGwgcmV0dXJuIHRoaXMgc3RyaW5nIGluc3RlYWQuCisgICAgICoKKyAgICAgKiBAc2VlIFNpbXBsZURhdGVSdWxlCisgICAgICogQHNlZSBIb2xpZGF5I2dldERpc3BsYXlOYW1lKGphdmEudXRpbC5Mb2NhbGUpCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKgorICAgICAqLworICAgIHB1YmxpYyBTaW1wbGVIb2xpZGF5KGludCBtb250aCwgaW50IGRheU9mTW9udGgsIFN0cmluZyBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGFydFllYXIpCisgICAgeworICAgICAgICBzdXBlcihuYW1lLCBudWxsKTsKKworICAgICAgICBzZXRSYW5nZShzdGFydFllYXIsIDAsIG5ldyBTaW1wbGVEYXRlUnVsZShtb250aCwgZGF5T2ZNb250aCkgKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgYW4gb2JqZWN0IHJlcHJlc2VudGluZyBhIGhvbGlkYXkKKyAgICAgKgorICAgICAqIEBwYXJhbSBtb250aCAgICAgICAgIFRoZSBtb250aCBpbiB3aGljaCB0aGlzIGhvbGlkYXkgb2NjdXJzICgwLWJhc2VkKQorICAgICAqIEBwYXJhbSBkYXlPZk1vbnRoICAgIFRoZSBkYXRlIHdpdGhpbiB0aGUgbW9udGggKDEtYmFzZWQpLgorICAgICAqCisgICAgICogQHBhcmFtIG5hbWUgIFRoZSBuYW1lIG9mIHRoaXMgaG9saWRheS4gIFRoaXMgc3RyaW5nIGlzIHVzZWQgYXMgYSBrZXkKKyAgICAgKiAgICAgICAgICAgICAgdG8gbG9vayB1cCB0aGUgaG9saWRheSdzIG5hbWUgYSByZXNvdXJjZSBidW5kbGUuCisgICAgICogICAgICAgICAgICAgIElmIHRoZSBuYW1lIGlzIG5vdCBmb3VuZCBpbiB0aGUgcmVzb3VyY2UgYnVuZGxlLAorICAgICAqICAgICAgICAgICAgICBnZXREaXNwbGF5TmFtZSB3aWxsIHJldHVybiB0aGlzIHN0cmluZyBpbnN0ZWFkLgorICAgICAqCisgICAgICogQHNlZSBTaW1wbGVEYXRlUnVsZQorICAgICAqIEBzZWUgSG9saWRheSNnZXREaXNwbGF5TmFtZShqYXZhLnV0aWwuTG9jYWxlKQorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICoKKyAgICAgKi8KKyAgICBwdWJsaWMgU2ltcGxlSG9saWRheShpbnQgbW9udGgsIGludCBkYXlPZk1vbnRoLCBTdHJpbmcgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnRZZWFyLCBpbnQgZW5kWWVhcikKKyAgICB7CisgICAgICAgIHN1cGVyKG5hbWUsIG51bGwpOworCisgICAgICAgIHNldFJhbmdlKHN0YXJ0WWVhciwgZW5kWWVhciwgbmV3IFNpbXBsZURhdGVSdWxlKG1vbnRoLCBkYXlPZk1vbnRoKSApOworICAgIH0KKworICAgIC8qKiAvLyBUT0RPOiByZW1vdmUKKyAgICAgKiBDb25zdHJ1Y3QgYW4gb2JqZWN0IHJlcHJlc2VudGluZyBhIGhvbGlkYXkKKyAgICAgKgorICAgICAqIEBwYXJhbSBtb250aCBUaGUgbW9udGggaW4gd2hpY2ggdGhpcyBob2xpZGF5IG9jY3VycyAoMC1iYXNlZCkKKyAgICAgKgorICAgICAqIEBwYXJhbSBkYXlPZk1vbnRoIEEgZGF0ZSB3aXRoaW4gdGhlIG1vbnRoICgxLWJhc2VkKS4gIFRoZQorICAgICAqICAgICAgaW50ZXJwcmV0YXRpb24gb2YgdGhpcyBwYXJhbWV0ZXIgZGVwZW5kcyBvbiB0aGUgdmFsdWUgb2YKKyAgICAgKiAgICAgIDxjb2RlPmRheU9mV2VlazwvY29kZT4uCisgICAgICoKKyAgICAgKiBAcGFyYW0gZGF5T2ZXZWVrIFRoZSBkYXkgb2YgdGhlIHdlZWsgb24gd2hpY2ggdGhpcyBob2xpZGF5IG9jY3Vycy4KKyAgICAgKiAgICAgIFRoZSBmb2xsb3dpbmcgdmFsdWVzIGFyZSBsZWdhbDogPHVsPgorICAgICAqICAgICAgPGxpPmRheU9mV2VlayA9PSAwIC0gdXNlIGRheU9mTW9udGggb25seQorICAgICAqICAgICAgPGxpPmRheU9mV2VlayA8IDAgIC0gdXNlIGxhc3QgLWRheU9mV2VlayBiZWZvcmUgb3Igb24gZGF5T2ZNb250aAorICAgICAqICAgICAgPGxpPmRheU9mV2VlayA+IDAgIC0gdXNlIGZpcnN0IGRheU9mV2VlayBhZnRlciBvciBvbiBkYXlPZk1vbnRoCisgICAgICogICAgICA8L3VsPgorICAgICAqCisgICAgICogQHBhcmFtIG5hbWUgIFRoZSBuYW1lIG9mIHRoaXMgaG9saWRheS4gIFRoaXMgc3RyaW5nIGlzIHVzZWQgYXMgYSBrZXkKKyAgICAgKiAgICAgICAgICAgICAgdG8gbG9vayB1cCB0aGUgaG9saWRheSdzIG5hbWUgYSByZXNvdXJjZSBidW5kbGUuCisgICAgICogICAgICAgICAgICAgIElmIHRoZSBuYW1lIGlzIG5vdCBmb3VuZCBpbiB0aGUgcmVzb3VyY2UgYnVuZGxlLAorICAgICAqICAgICAgICAgICAgICBnZXREaXNwbGF5TmFtZSB3aWxsIHJldHVybiB0aGlzIHN0cmluZyBpbnN0ZWFkLgorICAgICAqCisgICAgICogQHNlZSBTaW1wbGVEYXRlUnVsZQorICAgICAqIEBzZWUgSG9saWRheSNnZXREaXNwbGF5TmFtZShqYXZhLnV0aWwuTG9jYWxlKQorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICoKKyAgICAgKi8KKyAgICBwdWJsaWMgU2ltcGxlSG9saWRheShpbnQgbW9udGgsIGludCBkYXlPZk1vbnRoLCBpbnQgZGF5T2ZXZWVrLCBTdHJpbmcgbmFtZSkKKyAgICB7CisgICAgICAgIHN1cGVyKG5hbWUsIG5ldyBTaW1wbGVEYXRlUnVsZShtb250aCwgZGF5T2ZNb250aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXlPZldlZWsgPiAwID8gZGF5T2ZXZWVrIDogLSBkYXlPZldlZWssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5T2ZXZWVrID4gMCkgKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBTaW1wbGVIb2xpZGF5KGludCBtb250aCwgaW50IGRheU9mTW9udGgsIGludCBkYXlPZldlZWssIFN0cmluZyBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0WWVhcikKKyAgICB7CisgICAgICAgIHN1cGVyKG5hbWUsIG51bGwpOworCisgICAgICAgIHNldFJhbmdlKHN0YXJ0WWVhciwgMCwgbmV3IFNpbXBsZURhdGVSdWxlKG1vbnRoLCBkYXlPZk1vbnRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXlPZldlZWsgPiAwID8gZGF5T2ZXZWVrIDogLSBkYXlPZldlZWssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRheU9mV2VlayA+IDApICk7CisgICAgfQorCisKKyAgICAvKioKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBTaW1wbGVIb2xpZGF5KGludCBtb250aCwgaW50IGRheU9mTW9udGgsIGludCBkYXlPZldlZWssIFN0cmluZyBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0WWVhciwgaW50IGVuZFllYXIpCisgICAgeworICAgICAgICBzdXBlcihuYW1lLCBudWxsKTsKKworICAgICAgICBzZXRSYW5nZShzdGFydFllYXIsIGVuZFllYXIsIG5ldyBTaW1wbGVEYXRlUnVsZShtb250aCwgZGF5T2ZNb250aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5T2ZXZWVrID4gMCA/IGRheU9mV2VlayA6IC0gZGF5T2ZXZWVrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXlPZldlZWsgPiAwKSApOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBzZXRSYW5nZShpbnQgc3RhcnRZZWFyLCBpbnQgZW5kWWVhciwgRGF0ZVJ1bGUgcnVsZSkKKyAgICB7CisgICAgICAgIFJhbmdlRGF0ZVJ1bGUgcmFuZ2VSdWxlID0gbmV3IFJhbmdlRGF0ZVJ1bGUoKTsKKworICAgICAgICBpZiAoc3RhcnRZZWFyICE9IDApIHsKKyAgICAgICAgICAgIENhbGVuZGFyIHN0YXJ0ID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKHN0YXJ0WWVhciwgQ2FsZW5kYXIuSkFOVUFSWSwgMSk7CisgICAgICAgICAgICByYW5nZVJ1bGUuYWRkKHN0YXJ0LmdldFRpbWUoKSwgcnVsZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByYW5nZVJ1bGUuYWRkKHJ1bGUpOworICAgICAgICB9CisgICAgICAgIGlmIChlbmRZZWFyICE9IDApIHsKKyAgICAgICAgICAgIERhdGUgZW5kID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKGVuZFllYXIsIENhbGVuZGFyLkRFQ0VNQkVSLCAzMSkuZ2V0VGltZSgpOworICAgICAgICAgICAgcmFuZ2VSdWxlLmFkZChlbmQsIG51bGwpOworICAgICAgICB9CisKKyAgICAgICAgc2V0UnVsZShyYW5nZVJ1bGUpOworICAgIH0KKworICAgIC8qIENvbnN0YW50cyBmb3IgaG9saWRheXMgdGhhdCBhcmUgY29tbW9uIHRocm91Z2hvdXQgdGhlIFdlc3Rlcm4KKyAgICAgKiBhbmQgQ2hyaXN0aWFuIHdvcmxkcy4uLi4gKi8KKworICAgIC8qKgorICAgICAqIE5ldyBZZWFyJ3MgRGF5IC0gSmFudWFyeSAxc3QKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU2ltcGxlSG9saWRheSBORVdfWUVBUlNfREFZID0KKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuSkFOVUFSWSwgICAgMSwgICJOZXcgWWVhcidzIERheSIpOworCisgICAgLyoqCisgICAgICogRXBpcGhhbnksIEphbnVhcnkgNnRoCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFNpbXBsZUhvbGlkYXkgRVBJUEhBTlkgPQorICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5KQU5VQVJZLCAgICA2LCAgIkVwaXBoYW55Iik7CisKKyAgICAvKioKKyAgICAgKiBNYXkgRGF5LCBNYXkgMXN0CisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFNpbXBsZUhvbGlkYXkgTUFZX0RBWSA9CisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLk1BWSwgICAgICAgIDEsICAiTWF5IERheSIpOworCisgICAgLyoqCisgICAgICogQXNzdW1wdGlvbiwgQXVndXN0IDE1dGgKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU2ltcGxlSG9saWRheSBBU1NVTVBUSU9OID0KKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuQVVHVVNULCAgICAxNSwgICJBc3N1bXB0aW9uIik7CisKKyAgICAvKioKKyAgICAgKiBBbGwgU2FpbnRzJyBEYXksIE5vdmVtYmVyIDFzdAorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTaW1wbGVIb2xpZGF5IEFMTF9TQUlOVFNfREFZID0KKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuTk9WRU1CRVIsICAgMSwgICJBbGwgU2FpbnRzJyBEYXkiKTsKKworICAgIC8qKgorICAgICAqIEFsbCBTb3VscycgRGF5LCBOb3ZlbWJlciAxc3QKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU2ltcGxlSG9saWRheSBBTExfU09VTFNfREFZID0KKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuTk9WRU1CRVIsICAgMiwgICJBbGwgU291bHMnIERheSIpOworCisgICAgLyoqCisgICAgICogSW1tYWN1bGF0ZSBDb25jZXB0aW9uLCBEZWNlbWJlciA4dGgKKyAgICAgKiBAZHJhZnQgSUNVIDIuMgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU2ltcGxlSG9saWRheSBJTU1BQ1VMQVRFX0NPTkNFUFRJT04gPQorICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5ERUNFTUJFUiwgICA4LCAgIkltbWFjdWxhdGUgQ29uY2VwdGlvbiIpOworCisgICAgLyoqCisgICAgICogQ2hyaXN0bWFzIEV2ZSwgRGVjZW1iZXIgMjR0aAorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTaW1wbGVIb2xpZGF5IENIUklTVE1BU19FVkUgPQorICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5ERUNFTUJFUiwgIDI0LCAgIkNocmlzdG1hcyBFdmUiKTsKKworICAgIC8qKgorICAgICAqIENocmlzdG1hcywgRGVjZW1iZXIgMjV0aAorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTaW1wbGVIb2xpZGF5IENIUklTVE1BUyA9CisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLkRFQ0VNQkVSLCAgMjUsICAiQ2hyaXN0bWFzIik7CisKKyAgICAvKioKKyAgICAgKiBCb3hpbmcgRGF5LCBEZWNlbWJlciAyNnRoCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFNpbXBsZUhvbGlkYXkgQk9YSU5HX0RBWSA9CisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLkRFQ0VNQkVSLCAgMjYsICAiQm94aW5nIERheSIpOworCisgICAgLyoqCisgICAgICogU2FpbnQgU3RlcGhlbidzIERheSwgRGVjZW1iZXIgMjZ0aAorICAgICAqIEBkcmFmdCBJQ1UgMi4yCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTaW1wbGVIb2xpZGF5IFNUX1NURVBIRU5TX0RBWSA9CisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLkRFQ0VNQkVSLCAgMjYsICAiU3QuIFN0ZXBoZW4ncyBEYXkiKTsKKworICAgIC8qKgorICAgICAqIE5ldyBZZWFyJ3MgRXZlLCBEZWNlbWJlciAzMXN0CisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFNpbXBsZUhvbGlkYXkgTkVXX1lFQVJTX0VWRSA9CisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLkRFQ0VNQkVSLCAgMzEsICAiTmV3IFllYXIncyBFdmUiKTsKKworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3V0aWwvU2ltcGxlVGltZVpvbmUuamF2YSBiL3NyYy9jb20vaWJtL2ljdS91dGlsL1NpbXBsZVRpbWVab25lLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNDA2NDA3NwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS91dGlsL1NpbXBsZVRpbWVab25lLmphdmEKQEAgLTAsMCArMSwxNDg3IEBACisvKgorKiAgIENvcHlyaWdodCAoQykgMTk5Ni0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqICAgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LnV0aWw7CisKK2ltcG9ydCBqYXZhLmlvLk9iamVjdElucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uT2JqZWN0T3V0cHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CisKKy8qKgorICogPGNvZGU+U2ltcGxlVGltZVpvbmU8L2NvZGU+IGlzIGEgY29uY3JldGUgc3ViY2xhc3Mgb2YgPGNvZGU+VGltZVpvbmU8L2NvZGU+CisgKiB0aGF0IHJlcHJlc2VudHMgYSB0aW1lIHpvbmUgZm9yIHVzZSB3aXRoIGEgR3JlZ29yaWFuIGNhbGVuZGFyLiBUaGlzCisgKiBjbGFzcyBkb2VzIG5vdCBoYW5kbGUgaGlzdG9yaWNhbCBjaGFuZ2VzLgorICoKKyAqIDxQPgorICogVXNlIGEgbmVnYXRpdmUgdmFsdWUgZm9yIDxjb2RlPmRheU9mV2Vla0luTW9udGg8L2NvZGU+IHRvIGluZGljYXRlIHRoYXQKKyAqIDxjb2RlPlNpbXBsZVRpbWVab25lPC9jb2RlPiBzaG91bGQgY291bnQgZnJvbSB0aGUgZW5kIG9mIHRoZSBtb250aCBiYWNrd2FyZHMuCisgKiBGb3IgZXhhbXBsZSwgRGF5bGlnaHQgU2F2aW5ncyBUaW1lIGVuZHMgYXQgdGhlIGxhc3QKKyAqIChkYXlPZldlZWtJbk1vbnRoID0gLTEpIFN1bmRheSBpbiBPY3RvYmVyLCBhdCAyIEFNIGluIHN0YW5kYXJkIHRpbWUuCisgKgorICogQHNlZSAgICAgIENhbGVuZGFyCisgKiBAc2VlICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIKKyAqIEBzZWUgICAgICBUaW1lWm9uZQorICogQGF1dGhvciAgIERhdmlkIEdvbGRzbWl0aCwgTWFyayBEYXZpcywgQ2hlbi1MaWVoIEh1YW5nLCBBbGFuIExpdQorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK3B1YmxpYyBjbGFzcyBTaW1wbGVUaW1lWm9uZSBleHRlbmRzIFRpbWVab25lIHsKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgU2ltcGxlVGltZVpvbmUgd2l0aCB0aGUgZ2l2ZW4gYmFzZSB0aW1lIHpvbmUgb2Zmc2V0IGZyb20gR01UCisgICAgICogYW5kIHRpbWUgem9uZSBJRC4gVGltZXpvbmUgSURzIGNhbiBiZSBvYnRhaW5lZCBmcm9tCisgICAgICogVGltZVpvbmUuZ2V0QXZhaWxhYmxlSURzLiBOb3JtYWxseSB5b3Ugc2hvdWxkIHVzZSBUaW1lWm9uZS5nZXREZWZhdWx0IHRvCisgICAgICogY29uc3RydWN0IGEgVGltZVpvbmUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gcmF3T2Zmc2V0ICBUaGUgZ2l2ZW4gYmFzZSB0aW1lIHpvbmUgb2Zmc2V0IHRvIEdNVC4KKyAgICAgKiBAcGFyYW0gSUQgICAgICAgICBUaGUgdGltZSB6b25lIElEIHdoaWNoIGlzIG9idGFpbmVkIGZyb20KKyAgICAgKiAgICAgICAgICAgICAgICAgICBUaW1lWm9uZS5nZXRBdmFpbGFibGVJRHMuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIFNpbXBsZVRpbWVab25lKGludCByYXdPZmZzZXQsIFN0cmluZyBJRCkKKyAgICB7CisgICAgICAgIHRoaXMucmF3T2Zmc2V0ID0gcmF3T2Zmc2V0OworICAgICAgICBzZXRJRCAoSUQpOworICAgICAgICBkc3RTYXZpbmdzID0gbWlsbGlzUGVySG91cjsgLy8gSW4gY2FzZSB1c2VyIHNldHMgcnVsZXMgbGF0ZXIKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgYSBTaW1wbGVUaW1lWm9uZSB3aXRoIHRoZSBnaXZlbiBiYXNlIHRpbWUgem9uZSBvZmZzZXQgZnJvbQorICAgICAqIEdNVCwgdGltZSB6b25lIElELCB0aW1lIHRvIHN0YXJ0IGFuZCBlbmQgdGhlIGRheWxpZ2h0IHRpbWUuIFRpbWV6b25lIElEcworICAgICAqIGNhbiBiZSBvYnRhaW5lZCBmcm9tIFRpbWVab25lLmdldEF2YWlsYWJsZUlEcy4gTm9ybWFsbHkgeW91IHNob3VsZCB1c2UKKyAgICAgKiBUaW1lWm9uZS5nZXREZWZhdWx0IHRvIGNyZWF0ZSBhIFRpbWVab25lLiBGb3IgYSB0aW1lIHpvbmUgdGhhdCBkb2VzIG5vdAorICAgICAqIHVzZSBkYXlsaWdodCBzYXZpbmcgdGltZSwgZG8gbm90IHVzZSB0aGlzIGNvbnN0cnVjdG9yOyBpbnN0ZWFkIHlvdSBzaG91bGQKKyAgICAgKiB1c2UgU2ltcGxlVGltZVpvbmUocmF3T2Zmc2V0LCBJRCkuCisgICAgICoKKyAgICAgKiBCeSBkZWZhdWx0LCB0aGlzIGNvbnN0cnVjdG9yIHNwZWNpZmllcyBkYXktb2Ytd2Vlay1pbi1tb250aCBydWxlcy4gVGhhdAorICAgICAqIGlzLCBpZiB0aGUgc3RhcnREYXkgaXMgMSwgYW5kIHRoZSBzdGFydERheU9mV2VlayBpcyBTVU5EQVksIHRoZW4gdGhpcworICAgICAqIGluZGljYXRlcyB0aGUgZmlyc3QgU3VuZGF5IGluIHRoZSBzdGFydE1vbnRoLiBBIHN0YXJ0RGF5IG9mIC0xIGxpa2V3aXNlCisgICAgICogaW5kaWNhdGVzIHRoZSBsYXN0IFN1bmRheS4gSG93ZXZlciwgYnkgdXNpbmcgbmVnYXRpdmUgb3IgemVybyB2YWx1ZXMgZm9yCisgICAgICogY2VydGFpbiBwYXJhbWV0ZXJzLCBvdGhlciB0eXBlcyBvZiBydWxlcyBjYW4gYmUgc3BlY2lmaWVkLgorICAgICAqCisgICAgICogRGF5IG9mIG1vbnRoLiBUbyBzcGVjaWZ5IGFuIGV4YWN0IGRheSBvZiB0aGUgbW9udGgsIHN1Y2ggYXMgTWFyY2ggMSwgc2V0CisgICAgICogc3RhcnREYXlPZldlZWsgdG8gemVyby4KKyAgICAgKgorICAgICAqIERheSBvZiB3ZWVrIGFmdGVyIGRheSBvZiBtb250aC4gVG8gc3BlY2lmeSB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrCisgICAgICogb2NjdXJyaW5nIG9uIG9yIGFmdGVyIGFuIGV4YWN0IGRheSBvZiB0aGUgbW9udGgsIG1ha2UgdGhlIGRheSBvZiB0aGUgd2VlaworICAgICAqIG5lZ2F0aXZlLiBGb3IgZXhhbXBsZSwgaWYgc3RhcnREYXkgaXMgNSBhbmQgc3RhcnREYXlPZldlZWsgaXMgLU1PTkRBWSwKKyAgICAgKiB0aGlzIGluZGljYXRlcyB0aGUgZmlyc3QgTW9uZGF5IG9uIG9yIGFmdGVyIHRoZSA1dGggZGF5IG9mIHRoZQorICAgICAqIHN0YXJ0TW9udGguCisgICAgICoKKyAgICAgKiBEYXkgb2Ygd2VlayBiZWZvcmUgZGF5IG9mIG1vbnRoLiBUbyBzcGVjaWZ5IHRoZSBsYXN0IGRheSBvZiB0aGUgd2VlaworICAgICAqIG9jY3VycmluZyBvbiBvciBiZWZvcmUgYW4gZXhhY3QgZGF5IG9mIHRoZSBtb250aCwgbWFrZSB0aGUgZGF5IG9mIHRoZQorICAgICAqIHdlZWsgYW5kIHRoZSBkYXkgb2YgdGhlIG1vbnRoIG5lZ2F0aXZlLiBGb3IgZXhhbXBsZSwgaWYgc3RhcnREYXkgaXMgLTIxCisgICAgICogYW5kIHN0YXJ0RGF5T2ZXZWVrIGlzIC1XRURORVNEQVksIHRoaXMgaW5kaWNhdGVzIHRoZSBsYXN0IFdlZG5lc2RheSBvbiBvcgorICAgICAqIGJlZm9yZSB0aGUgMjFzdCBvZiB0aGUgc3RhcnRNb250aC4KKyAgICAgKgorICAgICAqIFRoZSBhYm92ZSBleGFtcGxlcyByZWZlciB0byB0aGUgc3RhcnRNb250aCwgc3RhcnREYXksIGFuZCBzdGFydERheU9mV2VlazsKKyAgICAgKiB0aGUgc2FtZSBhcHBsaWVzIGZvciB0aGUgZW5kTW9udGgsIGVuZERheSwgYW5kIGVuZERheU9mV2Vlay4KKyAgICAgKgorICAgICAqIEBwYXJhbSByYXdPZmZzZXQgICAgICAgVGhlIGdpdmVuIGJhc2UgdGltZSB6b25lIG9mZnNldCB0byBHTVQuCisgICAgICogQHBhcmFtIElEICAgICAgICAgICAgICBUaGUgdGltZSB6b25lIElEIHdoaWNoIGlzIG9idGFpbmVkIGZyb20KKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVab25lLmdldEF2YWlsYWJsZUlEcy4KKyAgICAgKiBAcGFyYW0gc3RhcnRNb250aCAgICAgIFRoZSBkYXlsaWdodCBzYXZpbmdzIHN0YXJ0aW5nIG1vbnRoLiBNb250aCBpcworICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgMC1iYXNlZC4gZWcsIDAgZm9yIEphbnVhcnkuCisgICAgICogQHBhcmFtIHN0YXJ0RGF5ICAgICAgICBUaGUgZGF5bGlnaHQgc2F2aW5ncyBzdGFydGluZworICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgZGF5LW9mLXdlZWstaW4tbW9udGguIFBsZWFzZSBzZWUgdGhlIG1lbWJlcgorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gZm9yIGFuIGV4YW1wbGUuCisgICAgICogQHBhcmFtIHN0YXJ0RGF5T2ZXZWVrICBUaGUgZGF5bGlnaHQgc2F2aW5ncyBzdGFydGluZyBkYXktb2Ytd2Vlay4gUGxlYXNlCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICBzZWUgdGhlIG1lbWJlciBkZXNjcmlwdGlvbiBmb3IgYW4gZXhhbXBsZS4KKyAgICAgKiBAcGFyYW0gc3RhcnRUaW1lICAgICAgIFRoZSBkYXlsaWdodCBzYXZpbmdzIHN0YXJ0aW5nIHRpbWUgaW4gbG9jYWwgd2FsbAorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgdGltZSwgd2hpY2ggaXMgc3RhbmRhcmQgdGltZSBpbiB0aGlzIGNhc2UuIFBsZWFzZSBzZWUgdGhlCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICBtZW1iZXIgZGVzY3JpcHRpb24gZm9yIGFuIGV4YW1wbGUuCisgICAgICogQHBhcmFtIGVuZE1vbnRoICAgICAgICBUaGUgZGF5bGlnaHQgc2F2aW5ncyBlbmRpbmcgbW9udGguIE1vbnRoIGlzCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAwLWJhc2VkLiBlZywgMCBmb3IgSmFudWFyeS4KKyAgICAgKiBAcGFyYW0gZW5kRGF5ICAgICAgICAgIFRoZSBkYXlsaWdodCBzYXZpbmdzIGVuZGluZyBkYXktb2Ytd2Vlay1pbi1tb250aC4KKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIFBsZWFzZSBzZWUgdGhlIG1lbWJlciBkZXNjcmlwdGlvbiBmb3IgYW4gZXhhbXBsZS4KKyAgICAgKiBAcGFyYW0gZW5kRGF5T2ZXZWVrICAgIFRoZSBkYXlsaWdodCBzYXZpbmdzIGVuZGluZyBkYXktb2Ytd2Vlay4gUGxlYXNlCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICBzZWUgdGhlIG1lbWJlciBkZXNjcmlwdGlvbiBmb3IgYW4gZXhhbXBsZS4KKyAgICAgKiBAcGFyYW0gZW5kVGltZSAgICAgICAgIFRoZSBkYXlsaWdodCBzYXZpbmdzIGVuZGluZyB0aW1lIGluIGxvY2FsIHdhbGwgdGltZSwKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIGRheWxpZ2h0IHRpbWUgaW4gdGhpcyBjYXNlLiBQbGVhc2Ugc2VlIHRoZQorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgbWVtYmVyIGRlc2NyaXB0aW9uIGZvciBhbiBleGFtcGxlLgorICAgICAqIEBleGNlcHRpb24gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHRoZSBtb250aCwgZGF5LCBkYXlPZldlZWssIG9yIHRpbWUKKyAgICAgKiBwYXJhbWV0ZXJzIGFyZSBvdXQgb2YgcmFuZ2UgZm9yIHRoZSBzdGFydCBvciBlbmQgcnVsZQorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBTaW1wbGVUaW1lWm9uZShpbnQgcmF3T2Zmc2V0LCBTdHJpbmcgSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGFydE1vbnRoLCBpbnQgc3RhcnREYXksIGludCBzdGFydERheU9mV2VlaywgaW50IHN0YXJ0VGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGVuZE1vbnRoLCBpbnQgZW5kRGF5LCBpbnQgZW5kRGF5T2ZXZWVrLCBpbnQgZW5kVGltZSkKKyAgICB7CisgICAgICAgIHRoaXMocmF3T2Zmc2V0LCBJRCwKKyAgICAgICAgICAgICBzdGFydE1vbnRoLCBzdGFydERheSwgc3RhcnREYXlPZldlZWssIHN0YXJ0VGltZSwgV0FMTF9USU1FLAorICAgICAgICAgICAgIGVuZE1vbnRoLCBlbmREYXksIGVuZERheU9mV2VlaywgZW5kVGltZSwgV0FMTF9USU1FLAorICAgICAgICAgICAgIG1pbGxpc1BlckhvdXIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdG9yLiAgVGhpcyBjb25zdHJ1Y3RvciBpcyBpZGVudGljYWwgdG8gdGhlIDEwLWFyZ3VtZW50CisgICAgICogY29uc3RydWN0b3IsIGJ1dCBhbHNvIHRha2VzIGEgZHN0U2F2aW5ncyBwYXJhbWV0ZXIuCisgICAgICogQHBhcmFtIGRzdFNhdmluZ3MgICBUaGUgYW1vdW50IG9mIHRpbWUgaW4gbXMgc2F2ZWQgZHVyaW5nIERTVC4KKyAgICAgKiBAZXhjZXB0aW9uIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiB0aGUgbW9udGgsIGRheSwgZGF5T2ZXZWVrLCBvciB0aW1lCisgICAgICogcGFyYW1ldGVycyBhcmUgb3V0IG9mIHJhbmdlIGZvciB0aGUgc3RhcnQgb3IgZW5kIHJ1bGUKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgU2ltcGxlVGltZVpvbmUoaW50IHJhd09mZnNldCwgU3RyaW5nIElELAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnRNb250aCwgaW50IHN0YXJ0RGF5LCBpbnQgc3RhcnREYXlPZldlZWssIGludCBzdGFydFRpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBlbmRNb250aCwgaW50IGVuZERheSwgaW50IGVuZERheU9mV2VlaywgaW50IGVuZFRpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkc3RTYXZpbmdzKQorICAgIHsKKyAgICAgICAgdGhpcyhyYXdPZmZzZXQsIElELAorICAgICAgICAgICAgIHN0YXJ0TW9udGgsIHN0YXJ0RGF5LCBzdGFydERheU9mV2Vlaywgc3RhcnRUaW1lLCBXQUxMX1RJTUUsCisgICAgICAgICAgICAgZW5kTW9udGgsIGVuZERheSwgZW5kRGF5T2ZXZWVrLCBlbmRUaW1lLCBXQUxMX1RJTUUsCisgICAgICAgICAgICAgZHN0U2F2aW5ncyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0b3IuCisgICAgICovCisgICAgU2ltcGxlVGltZVpvbmUoaW50IHJhd09mZnNldCwgU3RyaW5nIElELAorICAgICAgICAgICAgICAgICAgIGludCBzdGFydE1vbnRoLCBpbnQgc3RhcnREYXksIGludCBzdGFydERheU9mV2VlaywKKyAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnRUaW1lLCBpbnQgc3RhcnRUaW1lTW9kZSwKKyAgICAgICAgICAgICAgICAgICBpbnQgZW5kTW9udGgsIGludCBlbmREYXksIGludCBlbmREYXlPZldlZWssCisgICAgICAgICAgICAgICAgICAgaW50IGVuZFRpbWUsIGludCBlbmRUaW1lTW9kZSwKKyAgICAgICAgICAgICAgICAgICBpbnQgZHN0U2F2aW5ncykgeworICAgICAgICBzZXRJRChJRCk7CisgICAgICAgIHRoaXMucmF3T2Zmc2V0ICAgICAgPSByYXdPZmZzZXQ7CisgICAgICAgIHRoaXMuc3RhcnRNb250aCAgICAgPSBzdGFydE1vbnRoOworICAgICAgICB0aGlzLnN0YXJ0RGF5ICAgICAgID0gc3RhcnREYXk7CisgICAgICAgIHRoaXMuc3RhcnREYXlPZldlZWsgPSBzdGFydERheU9mV2VlazsKKyAgICAgICAgdGhpcy5zdGFydFRpbWUgICAgICA9IHN0YXJ0VGltZTsKKyAgICAgICAgdGhpcy5zdGFydFRpbWVNb2RlICA9IHN0YXJ0VGltZU1vZGU7CisgICAgICAgIHRoaXMuZW5kTW9udGggICAgICAgPSBlbmRNb250aDsKKyAgICAgICAgdGhpcy5lbmREYXkgICAgICAgICA9IGVuZERheTsKKyAgICAgICAgdGhpcy5lbmREYXlPZldlZWsgICA9IGVuZERheU9mV2VlazsKKyAgICAgICAgdGhpcy5lbmRUaW1lICAgICAgICA9IGVuZFRpbWU7CisgICAgICAgIHRoaXMuZW5kVGltZU1vZGUgICAgPSBlbmRUaW1lTW9kZTsKKyAgICAgICAgdGhpcy5kc3RTYXZpbmdzICAgICA9IGRzdFNhdmluZ3M7CisgICAgICAgIC8vIHRoaXMudXNlRGF5bGlnaHQgICAgPSB0cnVlOyAvLyBTZXQgYnkgZGVjb2RlUnVsZXMKKyAgICAgICAgZGVjb2RlUnVsZXMoKTsKKyAgICAgICAgaWYgKGRzdFNhdmluZ3MgPD0gMCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSWxsZWdhbCBEU1Qgc2F2aW5ncyIpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0b3IgZm9yIFRpbWVab25lRGF0YS4gIFRha2VzIGFzIGlucHV0IGFuIGFycmF5IGFuZCBhbiBpbmRleAorICAgICAqIGludG8gdGhlIGFycmF5LiAgVGhlIGFycmF5IGZvcm1hdCBpcyB0aGF0IG9mIFRpbWVab25lRGF0YS5EQVRBLgorICAgICAqLworICAgIFNpbXBsZVRpbWVab25lKFN0cmluZyBJRCwgaW50W10gZGF0YSwgaW50IGkpIHsKKyAgICAgICAgc2V0SUQoSUQpOworICAgICAgICByYXdPZmZzZXQgPSBkYXRhW2krMV0qMTAwMDsKKyAgICAgICAgaWYgKGRhdGFbaV0gPT0gMCkgeworICAgICAgICAgICAgZHN0U2F2aW5ncyA9IG1pbGxpc1BlckhvdXI7IC8vIEluIGNhc2UgdXNlciBzZXRzIHJ1bGVzIGxhdGVyCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzdGFydE1vbnRoICAgICA9IGRhdGFbaSsyXTsKKyAgICAgICAgICAgIHN0YXJ0RGF5ICAgICAgID0gZGF0YVtpKzNdOworICAgICAgICAgICAgc3RhcnREYXlPZldlZWsgPSBkYXRhW2krNF07CisgICAgICAgICAgICBzdGFydFRpbWUgICAgICA9IGRhdGFbaSs1XSo2MDAwMDsKKyAgICAgICAgICAgIHN0YXJ0VGltZU1vZGUgID0gZGF0YVtpKzZdOworICAgICAgICAgICAgZW5kTW9udGggICAgICAgPSBkYXRhW2krN107CisgICAgICAgICAgICBlbmREYXkgICAgICAgICA9IGRhdGFbaSs4XTsKKyAgICAgICAgICAgIGVuZERheU9mV2VlayAgID0gZGF0YVtpKzldOworICAgICAgICAgICAgZW5kVGltZSAgICAgICAgPSBkYXRhW2krMTBdKjYwMDAwOworICAgICAgICAgICAgZW5kVGltZU1vZGUgICAgPSBkYXRhW2krMTFdOworICAgICAgICAgICAgZHN0U2F2aW5ncyAgICAgPSBkYXRhW2krMTJdKjYwMDAwOworICAgICAgICAgICAgZGVjb2RlUnVsZXMoKTsKKyAgICAgICAgICAgIGlmIChkc3RTYXZpbmdzIDw9IDApIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbGxlZ2FsIERTVCBzYXZpbmdzIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBkYXlsaWdodCBzYXZpbmdzIHN0YXJ0aW5nIHllYXIuCisgICAgICoKKyAgICAgKiBAcGFyYW0geWVhciAgVGhlIGRheWxpZ2h0IHNhdmluZ3Mgc3RhcnRpbmcgeWVhci4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRTdGFydFllYXIoaW50IHllYXIpCisgICAgeworICAgICAgICBzdGFydFllYXIgPSB5ZWFyOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIGRheWxpZ2h0IHNhdmluZ3Mgc3RhcnRpbmcgcnVsZS4gRm9yIGV4YW1wbGUsIERheWxpZ2h0IFNhdmluZ3MKKyAgICAgKiBUaW1lIHN0YXJ0cyBhdCB0aGUgZmlyc3QgU3VuZGF5IGluIEFwcmlsLCBhdCAyIEFNIGluIHN0YW5kYXJkIHRpbWUuCisgICAgICogVGhlcmVmb3JlLCB5b3UgY2FuIHNldCB0aGUgc3RhcnQgcnVsZSBieSBjYWxsaW5nOgorICAgICAqIHNldFN0YXJ0UnVsZShUaW1lRmllbGRzLkFQUklMLCAxLCBUaW1lRmllbGRzLlNVTkRBWSwgMio2MCo2MCoxMDAwKTsKKyAgICAgKgorICAgICAqIEBwYXJhbSBtb250aCAgICAgICAgICAgICBUaGUgZGF5bGlnaHQgc2F2aW5ncyBzdGFydGluZyBtb250aC4gTW9udGggaXMKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgMC1iYXNlZC4gZWcsIDAgZm9yIEphbnVhcnkuCisgICAgICogQHBhcmFtIGRheU9mV2Vla0luTW9udGggIFRoZSBkYXlsaWdodCBzYXZpbmdzIHN0YXJ0aW5nCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgIGRheS1vZi13ZWVrLWluLW1vbnRoLiBQbGVhc2Ugc2VlIHRoZSBtZW1iZXIKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gZm9yIGFuIGV4YW1wbGUuCisgICAgICogQHBhcmFtIGRheU9mV2VlayAgICAgICAgIFRoZSBkYXlsaWdodCBzYXZpbmdzIHN0YXJ0aW5nIGRheS1vZi13ZWVrLgorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICBQbGVhc2Ugc2VlIHRoZSBtZW1iZXIgZGVzY3JpcHRpb24gZm9yIGFuCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgIGV4YW1wbGUuCisgICAgICogQHBhcmFtIHRpbWUgICAgICAgICAgICAgIFRoZSBkYXlsaWdodCBzYXZpbmdzIHN0YXJ0aW5nIHRpbWUgaW4gbG9jYWwgd2FsbAorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lLCB3aGljaCBpcyBzdGFuZGFyZCB0aW1lIGluIHRoaXMgY2FzZS4gUGxlYXNlIHNlZQorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbWVtYmVyIGRlc2NyaXB0aW9uIGZvciBhbiBleGFtcGxlLgorICAgICAqIEBleGNlcHRpb24gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHRoZSBtb250aCwgZGF5T2ZXZWVrSW5Nb250aCwKKyAgICAgKiBkYXlPZldlZWssIG9yIHRpbWUgcGFyYW1ldGVycyBhcmUgb3V0IG9mIHJhbmdlCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0U3RhcnRSdWxlKGludCBtb250aCwgaW50IGRheU9mV2Vla0luTW9udGgsIGludCBkYXlPZldlZWssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0aW1lKQorICAgIHsKKyAgICAgICAgc3RhcnRNb250aCA9IG1vbnRoOworICAgICAgICBzdGFydERheSA9IGRheU9mV2Vla0luTW9udGg7CisgICAgICAgIHN0YXJ0RGF5T2ZXZWVrID0gZGF5T2ZXZWVrOworICAgICAgICBzdGFydFRpbWUgPSB0aW1lOworICAgICAgICBzdGFydFRpbWVNb2RlID0gV0FMTF9USU1FOworICAgICAgICAvLyB1c2VEYXlsaWdodCA9IHRydWU7IC8vIFNldCBieSBkZWNvZGVSdWxlcworICAgICAgICBkZWNvZGVTdGFydFJ1bGUoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBEU1Qgc3RhcnQgcnVsZSB0byBhIGZpeGVkIGRhdGUgd2l0aGluIGEgbW9udGguCisgICAgICoKKyAgICAgKiBAcGFyYW0gbW9udGggICAgICAgICBUaGUgbW9udGggaW4gd2hpY2ggdGhpcyBydWxlIG9jY3VycyAoMC1iYXNlZCkuCisgICAgICogQHBhcmFtIGRheU9mTW9udGggICAgVGhlIGRhdGUgaW4gdGhhdCBtb250aCAoMS1iYXNlZCkuCisgICAgICogQHBhcmFtIHRpbWUgICAgICAgICAgVGhlIHRpbWUgb2YgdGhhdCBkYXkgKG51bWJlciBvZiBtaWxsaXMgYWZ0ZXIgbWlkbmlnaHQpCisgICAgICogICAgICAgICAgICAgICAgICAgICAgd2hlbiBEU1QgdGFrZXMgZWZmZWN0IGluIGxvY2FsIHdhbGwgdGltZSwgd2hpY2ggaXMKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICBzdGFuZGFyZCB0aW1lIGluIHRoaXMgY2FzZS4KKyAgICAgKiBAZXhjZXB0aW9uIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiB0aGUgbW9udGgsCisgICAgICogZGF5T2ZNb250aCwgb3IgdGltZSBwYXJhbWV0ZXJzIGFyZSBvdXQgb2YgcmFuZ2UKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRTdGFydFJ1bGUoaW50IG1vbnRoLCBpbnQgZGF5T2ZNb250aCwgaW50IHRpbWUpIHsKKyAgICAgICAgc2V0U3RhcnRSdWxlKG1vbnRoLCBkYXlPZk1vbnRoLCAwLCB0aW1lKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBEU1Qgc3RhcnQgcnVsZSB0byBhIHdlZWtkYXkgYmVmb3JlIG9yIGFmdGVyIGEgZ2l2ZSBkYXRlIHdpdGhpbgorICAgICAqIGEgbW9udGgsIGUuZy4sIHRoZSBmaXJzdCBNb25kYXkgb24gb3IgYWZ0ZXIgdGhlIDh0aC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBtb250aCAgICAgICAgIFRoZSBtb250aCBpbiB3aGljaCB0aGlzIHJ1bGUgb2NjdXJzICgwLWJhc2VkKS4KKyAgICAgKiBAcGFyYW0gZGF5T2ZNb250aCAgICBBIGRhdGUgd2l0aGluIHRoYXQgbW9udGggKDEtYmFzZWQpLgorICAgICAqIEBwYXJhbSBkYXlPZldlZWsgICAgIFRoZSBkYXkgb2YgdGhlIHdlZWsgb24gd2hpY2ggdGhpcyBydWxlIG9jY3Vycy4KKyAgICAgKiBAcGFyYW0gdGltZSAgICAgICAgICBUaGUgdGltZSBvZiB0aGF0IGRheSAobnVtYmVyIG9mIG1pbGxpcyBhZnRlciBtaWRuaWdodCkKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICB3aGVuIERTVCB0YWtlcyBlZmZlY3QgaW4gbG9jYWwgd2FsbCB0aW1lLCB3aGljaCBpcworICAgICAqICAgICAgICAgICAgICAgICAgICAgIHN0YW5kYXJkIHRpbWUgaW4gdGhpcyBjYXNlLgorICAgICAqIEBwYXJhbSBhZnRlciAgICAgICAgIElmIHRydWUsIHRoaXMgcnVsZSBzZWxlY3RzIHRoZSBmaXJzdCBkYXlPZldlZWsgb24KKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICBvciBhZnRlciBkYXlPZk1vbnRoLiAgSWYgZmFsc2UsIHRoaXMgcnVsZSBzZWxlY3RzCisgICAgICogICAgICAgICAgICAgICAgICAgICAgdGhlIGxhc3QgZGF5T2ZXZWVrIG9uIG9yIGJlZm9yZSBkYXlPZk1vbnRoLgorICAgICAqIEBleGNlcHRpb24gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHRoZSBtb250aCwgZGF5T2ZNb250aCwKKyAgICAgKiBkYXlPZldlZWssIG9yIHRpbWUgcGFyYW1ldGVycyBhcmUgb3V0IG9mIHJhbmdlCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0U3RhcnRSdWxlKGludCBtb250aCwgaW50IGRheU9mTW9udGgsIGludCBkYXlPZldlZWssIGludCB0aW1lLCBib29sZWFuIGFmdGVyKQorICAgIHsKKyAgICAgICAgaWYgKGFmdGVyKQorICAgICAgICAgICAgc2V0U3RhcnRSdWxlKG1vbnRoLCBkYXlPZk1vbnRoLCAtZGF5T2ZXZWVrLCB0aW1lKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2V0U3RhcnRSdWxlKG1vbnRoLCAtZGF5T2ZNb250aCwgLWRheU9mV2VlaywgdGltZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgZGF5bGlnaHQgc2F2aW5ncyBlbmRpbmcgcnVsZS4gRm9yIGV4YW1wbGUsIERheWxpZ2h0IFNhdmluZ3MgVGltZQorICAgICAqIGVuZHMgYXQgdGhlIGxhc3QgKC0xKSBTdW5kYXkgaW4gT2N0b2JlciwgYXQgMiBBTSBpbiBzdGFuZGFyZCB0aW1lLgorICAgICAqIFRoZXJlZm9yZSwgeW91IGNhbiBzZXQgdGhlIGVuZCBydWxlIGJ5IGNhbGxpbmc6CisgICAgICogc2V0RW5kUnVsZShUaW1lRmllbGRzLk9DVE9CRVIsIC0xLCBUaW1lRmllbGRzLlNVTkRBWSwgMio2MCo2MCoxMDAwKTsKKyAgICAgKgorICAgICAqIEBwYXJhbSBtb250aCAgICAgICAgICAgICBUaGUgZGF5bGlnaHQgc2F2aW5ncyBlbmRpbmcgbW9udGguIE1vbnRoIGlzCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgIDAtYmFzZWQuIGVnLCAwIGZvciBKYW51YXJ5LgorICAgICAqIEBwYXJhbSBkYXlPZldlZWtJbk1vbnRoICBUaGUgZGF5bGlnaHQgc2F2aW5ncyBlbmRpbmcKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5LW9mLXdlZWstaW4tbW9udGguIFBsZWFzZSBzZWUgdGhlIG1lbWJlcgorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiBmb3IgYW4gZXhhbXBsZS4KKyAgICAgKiBAcGFyYW0gZGF5T2ZXZWVrICAgICAgICAgVGhlIGRheWxpZ2h0IHNhdmluZ3MgZW5kaW5nIGRheS1vZi13ZWVrLiBQbGVhc2UKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VlIHRoZSBtZW1iZXIgZGVzY3JpcHRpb24gZm9yIGFuIGV4YW1wbGUuCisgICAgICogQHBhcmFtIHRpbWUgICAgICAgICAgICAgIFRoZSBkYXlsaWdodCBzYXZpbmdzIGVuZGluZyB0aW1lIGluIGxvY2FsIHdhbGwgdGltZSwKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgZGF5bGlnaHQgdGltZSBpbiB0aGlzIGNhc2UuIFBsZWFzZSBzZWUgdGhlCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgIG1lbWJlciBkZXNjcmlwdGlvbiBmb3IgYW4gZXhhbXBsZS4KKyAgICAgKiBAZXhjZXB0aW9uIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiB0aGUgbW9udGgsIGRheU9mV2Vla0luTW9udGgsCisgICAgICogZGF5T2ZXZWVrLCBvciB0aW1lIHBhcmFtZXRlcnMgYXJlIG91dCBvZiByYW5nZQorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldEVuZFJ1bGUoaW50IG1vbnRoLCBpbnQgZGF5T2ZXZWVrSW5Nb250aCwgaW50IGRheU9mV2VlaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0aW1lKQorICAgIHsKKyAgICAgICAgZW5kTW9udGggPSBtb250aDsKKyAgICAgICAgZW5kRGF5ID0gZGF5T2ZXZWVrSW5Nb250aDsKKyAgICAgICAgZW5kRGF5T2ZXZWVrID0gZGF5T2ZXZWVrOworICAgICAgICBlbmRUaW1lID0gdGltZTsKKyAgICAgICAgZW5kVGltZU1vZGUgPSBXQUxMX1RJTUU7CisgICAgICAgIC8vIHVzZURheWxpZ2h0ID0gdHJ1ZTsgLy8gU2V0IGJ5IGRlY29kZVJ1bGVzCisgICAgICAgIGRlY29kZUVuZFJ1bGUoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBEU1QgZW5kIHJ1bGUgdG8gYSBmaXhlZCBkYXRlIHdpdGhpbiBhIG1vbnRoLgorICAgICAqCisgICAgICogQHBhcmFtIG1vbnRoICAgICAgICAgVGhlIG1vbnRoIGluIHdoaWNoIHRoaXMgcnVsZSBvY2N1cnMgKDAtYmFzZWQpLgorICAgICAqIEBwYXJhbSBkYXlPZk1vbnRoICAgIFRoZSBkYXRlIGluIHRoYXQgbW9udGggKDEtYmFzZWQpLgorICAgICAqIEBwYXJhbSB0aW1lICAgICAgICAgIFRoZSB0aW1lIG9mIHRoYXQgZGF5IChudW1iZXIgb2YgbWlsbGlzIGFmdGVyIG1pZG5pZ2h0KQorICAgICAqICAgICAgICAgICAgICAgICAgICAgIHdoZW4gRFNUIGVuZHMgaW4gbG9jYWwgd2FsbCB0aW1lLCB3aGljaCBpcyBkYXlsaWdodAorICAgICAqICAgICAgICAgICAgICAgICAgICAgIHRpbWUgaW4gdGhpcyBjYXNlLgorICAgICAqIEBleGNlcHRpb24gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHRoZSBtb250aCwKKyAgICAgKiBkYXlPZk1vbnRoLCBvciB0aW1lIHBhcmFtZXRlcnMgYXJlIG91dCBvZiByYW5nZQorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldEVuZFJ1bGUoaW50IG1vbnRoLCBpbnQgZGF5T2ZNb250aCwgaW50IHRpbWUpCisgICAgeworICAgICAgICBzZXRFbmRSdWxlKG1vbnRoLCBkYXlPZk1vbnRoLCAwLCB0aW1lKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBEU1QgZW5kIHJ1bGUgdG8gYSB3ZWVrZGF5IGJlZm9yZSBvciBhZnRlciBhIGdpdmUgZGF0ZSB3aXRoaW4KKyAgICAgKiBhIG1vbnRoLCBlLmcuLCB0aGUgZmlyc3QgTW9uZGF5IG9uIG9yIGFmdGVyIHRoZSA4dGguCisgICAgICoKKyAgICAgKiBAcGFyYW0gbW9udGggICAgICAgICBUaGUgbW9udGggaW4gd2hpY2ggdGhpcyBydWxlIG9jY3VycyAoMC1iYXNlZCkuCisgICAgICogQHBhcmFtIGRheU9mTW9udGggICAgQSBkYXRlIHdpdGhpbiB0aGF0IG1vbnRoICgxLWJhc2VkKS4KKyAgICAgKiBAcGFyYW0gZGF5T2ZXZWVrICAgICBUaGUgZGF5IG9mIHRoZSB3ZWVrIG9uIHdoaWNoIHRoaXMgcnVsZSBvY2N1cnMuCisgICAgICogQHBhcmFtIHRpbWUgICAgICAgICAgVGhlIHRpbWUgb2YgdGhhdCBkYXkgKG51bWJlciBvZiBtaWxsaXMgYWZ0ZXIgbWlkbmlnaHQpCisgICAgICogICAgICAgICAgICAgICAgICAgICAgd2hlbiBEU1QgZW5kcyBpbiBsb2NhbCB3YWxsIHRpbWUsIHdoaWNoIGlzIGRheWxpZ2h0CisgICAgICogICAgICAgICAgICAgICAgICAgICAgdGltZSBpbiB0aGlzIGNhc2UuCisgICAgICogQHBhcmFtIGFmdGVyICAgICAgICAgSWYgdHJ1ZSwgdGhpcyBydWxlIHNlbGVjdHMgdGhlIGZpcnN0IGRheU9mV2VlayBvbgorICAgICAqICAgICAgICAgICAgICAgICAgICAgIG9yIGFmdGVyIGRheU9mTW9udGguICBJZiBmYWxzZSwgdGhpcyBydWxlIHNlbGVjdHMKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICB0aGUgbGFzdCBkYXlPZldlZWsgb24gb3IgYmVmb3JlIGRheU9mTW9udGguCisgICAgICogQGV4Y2VwdGlvbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gdGhlIG1vbnRoLCBkYXlPZk1vbnRoLAorICAgICAqIGRheU9mV2Vlaywgb3IgdGltZSBwYXJhbWV0ZXJzIGFyZSBvdXQgb2YgcmFuZ2UKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRFbmRSdWxlKGludCBtb250aCwgaW50IGRheU9mTW9udGgsIGludCBkYXlPZldlZWssIGludCB0aW1lLCBib29sZWFuIGFmdGVyKQorICAgIHsKKyAgICAgICAgaWYgKGFmdGVyKQorICAgICAgICAgICAgc2V0RW5kUnVsZShtb250aCwgZGF5T2ZNb250aCwgLWRheU9mV2VlaywgdGltZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNldEVuZFJ1bGUobW9udGgsIC1kYXlPZk1vbnRoLCAtZGF5T2ZXZWVrLCB0aW1lKTsKKyAgICB9CisKKyAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGRpZmZlcmVuY2UgaW4gbWlsbGlzZWNvbmRzIGJldHdlZW4gbG9jYWwgdGltZSBhbmQKKyAgICAgKiBVVEMsIHRha2luZyBpbnRvIGFjY291bnQgYm90aCB0aGUgcmF3IG9mZnNldCBhbmQgdGhlIGVmZmVjdCBvZgorICAgICAqIGRheWxpZ2h0IHNhdmluZ3MsIGZvciB0aGUgc3BlY2lmaWVkIGRhdGUgYW5kIHRpbWUuICBUaGlzIG1ldGhvZAorICAgICAqIGFzc3VtZXMgdGhhdCB0aGUgc3RhcnQgYW5kIGVuZCBtb250aCBhcmUgZGlzdGluY3QuICBJdCBhbHNvCisgICAgICogdXNlcyBhIGRlZmF1bHQge0BsaW5rIEdyZWdvcmlhbkNhbGVuZGFyfSBvYmplY3QgYXMgaXRzCisgICAgICogdW5kZXJseWluZyBjYWxlbmRhciwgc3VjaCBhcyBmb3IgZGV0ZXJtaW5pbmcgbGVhcCB5ZWFycy4gIERvCisgICAgICogbm90IHVzZSB0aGUgcmVzdWx0IG9mIHRoaXMgbWV0aG9kIHdpdGggYSBjYWxlbmRhciBvdGhlciB0aGFuIGEKKyAgICAgKiBkZWZhdWx0IDxjb2RlPkdyZWdvcmlhbkNhbGVuZGFyPC9jb2RlPi4KKyAgICAgKgorICAgICAqIDxwPjxlbT5Ob3RlOiAgSW4gZ2VuZXJhbCwgY2xpZW50cyBzaG91bGQgdXNlCisgICAgICogPGNvZGU+Q2FsZW5kYXIuZ2V0KFpPTkVfT0ZGU0VUKSArIENhbGVuZGFyLmdldChEU1RfT0ZGU0VUKTwvY29kZT4KKyAgICAgKiBpbnN0ZWFkIG9mIGNhbGxpbmcgdGhpcyBtZXRob2QuPC9lbT4KKyAgICAgKgorICAgICAqIEBwYXJhbSBlcmEgICAgICAgVGhlIGVyYSBvZiB0aGUgZ2l2ZW4gZGF0ZS4KKyAgICAgKiBAcGFyYW0geWVhciAgICAgIFRoZSB5ZWFyIGluIHRoZSBnaXZlbiBkYXRlLgorICAgICAqIEBwYXJhbSBtb250aCAgICAgVGhlIG1vbnRoIGluIHRoZSBnaXZlbiBkYXRlLiBNb250aCBpcyAwLWJhc2VkLiBlLmcuLAorICAgICAqICAgICAgICAgICAgICAgICAgMCBmb3IgSmFudWFyeS4KKyAgICAgKiBAcGFyYW0gZGF5ICAgICAgIFRoZSBkYXktaW4tbW9udGggb2YgdGhlIGdpdmVuIGRhdGUuCisgICAgICogQHBhcmFtIGRheU9mV2VlayBUaGUgZGF5LW9mLXdlZWsgb2YgdGhlIGdpdmVuIGRhdGUuCisgICAgICogQHBhcmFtIG1pbGxpcyAgICBUaGUgbWlsbGlzZWNvbmRzIGluIGRheSBpbiA8ZW0+c3RhbmRhcmQ8L2VtPiBsb2NhbCB0aW1lLgorICAgICAqIEByZXR1cm4gICAgICAgICAgVGhlIG1pbGxpc2Vjb25kcyB0byBhZGQgdG8gVVRDIHRvIGdldCBsb2NhbCB0aW1lLgorICAgICAqIEBleGNlcHRpb24gICAgICAgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHRoZSBlcmEsIG1vbnRoLCBkYXksCisgICAgICogICAgICAgICAgICAgICAgICBkYXlPZldlZWssIG9yIG1pbGxpcyBwYXJhbWV0ZXJzIGFyZSBvdXQgb2YgcmFuZ2UKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldE9mZnNldChpbnQgZXJhLCBpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF5LCBpbnQgZGF5T2ZXZWVrLAorICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtaWxsaXMpCisgICAgeworICAgICAgICAvLyBDaGVjayB0aGUgbW9udGggYmVmb3JlIGluZGV4aW5nIGludG8gc3RhdGljTW9udGhMZW5ndGguIFRoaXMKKwkvLyBkdXBsaWNhdGVzIHRoZSB0ZXN0IHRoYXQgb2NjdXJzIGluIHRoZSA3LWFyZ3VtZW50IGdldE9mZnNldCgpLAorCS8vIGhvd2V2ZXIsIHRoaXMgaXMgdW5hdm9pZGFibGUuIFdlIGRvbid0IG1pbmQgYmVjYXVzZSB0aGlzIG1ldGhvZCwgaW4KKwkvLyBmYWN0LCBzaG91bGQgbm90IGJlIGNhbGxlZDsgaW50ZXJuYWwgY29kZSBzaG91bGQgYWx3YXlzIGNhbGwgdGhlCisJLy8gNy1hcmd1bWVudCBnZXRPZmZzZXQoKSwgYW5kIG91dHNpZGUgY29kZSBzaG91bGQgdXNlIENhbGVuZGFyLmdldChpbnQKKwkvLyBmaWVsZCkgd2l0aCBmaWVsZHMgWk9ORV9PRkZTRVQgYW5kIERTVF9PRkZTRVQuIFdlIGNhbid0IGdldCByaWQgb2YKKwkvLyB0aGlzIG1ldGhvZCBiZWNhdXNlIGl0J3MgcHVibGljIEFQSS4gLSBsaXUgOC8xMC85OAorICAgICAgICBpZiAobW9udGggPCBDYWxlbmRhci5KQU5VQVJZCisgICAgICAgICAgICB8fCBtb250aCA+IENhbGVuZGFyLkRFQ0VNQkVSKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbGxlZ2FsIG1vbnRoICIgKyBtb250aCk7CisgICAgICAgIH0KKwlpbnQgbW9udGhMZW5ndGgsIHByZXZNb250aExlbmd0aDsKKworICAgIC8vIExhenktaW5pdGlhbGl6ZSB0aGlzIHRvIHByZXZlbnQgY2lyY3VsYXIgc3RhdGljIGluaXQgZGVwZW5kZW5jeQorICAgIGlmIChpbnRlcm5hbENhbCA9PSBudWxsKSB7CisgICAgICAgIC8vIEhhY2s6IFVzZSB0aGUgeS9tL2QgY29uc3RydWN0b3IgaW4gdGhlIGZvbGxvd2luZyBsaW5lLgorICAgICAgICAvLyBUaGlzIHByZXZlbnRzIHRoZSBpbmZpbml0ZSByZWN1cnNpb24gdGhhdCByZXN1bHRzIHdoZW4KKyAgICAgICAgLy8gdGhlIEdDIHdhbnRzIHRvIGNhbGwgU1RaLmdldE9mZnNldC4gLSBsaXUKKyAgICAgICAgaW50ZXJuYWxDYWwgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoMCwgMCwgMCk7CisgICAgICAgIC8vIE5vdGU6IE5vIG5lZWQgdG8gc3luY2hyb25pemUgdGhpczsgd2UnbGwgdXNlIHdoYXRldmVyCisgICAgICAgIC8vIGluc3RhbmNlIHdlIGVuZCB1cCB3aXRoIChyZWYgYXNzaWdubWVudCBpcyBhdG9taWMpLgorICAgIH0KKworCWlmICgoZXJhID09IEdyZWdvcmlhbkNhbGVuZGFyLkFEKSAmJiBpbnRlcm5hbENhbC5pc0xlYXBZZWFyKHllYXIpKSB7CisJICAgIG1vbnRoTGVuZ3RoID0gc3RhdGljTGVhcE1vbnRoTGVuZ3RoW21vbnRoXTsKKwkgICAgcHJldk1vbnRoTGVuZ3RoID0gKG1vbnRoID4gMSkgPyBzdGF0aWNMZWFwTW9udGhMZW5ndGhbbW9udGggLSAxXSA6IDMxOworCX0gZWxzZSB7CisJICAgIG1vbnRoTGVuZ3RoID0gc3RhdGljTW9udGhMZW5ndGhbbW9udGhdOworCSAgICBwcmV2TW9udGhMZW5ndGggPSAobW9udGggPiAxKSA/IHN0YXRpY01vbnRoTGVuZ3RoW21vbnRoIC0gMV0gOiAzMTsKKwl9CisKKyAgICAgICAgcmV0dXJuIGdldE9mZnNldChlcmEsIHllYXIsIG1vbnRoLCBkYXksIGRheU9mV2VlaywgbWlsbGlzLAorCQkJIG1vbnRoTGVuZ3RoLCBwcmV2TW9udGhMZW5ndGgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgb2Zmc2V0LCBmb3IgY3VycmVudCBkYXRlLCBtb2RpZmllZCBpbiBjYXNlIG9mCisgICAgICogZGF5bGlnaHQgc2F2aW5ncy4gVGhpcyBpcyB0aGUgb2Zmc2V0IHRvIGFkZCA8ZW0+dG88L2VtPiBVVEMgdG8gZ2V0IGxvY2FsIHRpbWUuCisgICAgICogR2V0cyB0aGUgdGltZSB6b25lIG9mZnNldCwgZm9yIGN1cnJlbnQgZGF0ZSwgbW9kaWZpZWQgaW4gY2FzZSBvZiBkYXlsaWdodAorICAgICAqIHNhdmluZ3MuIFRoaXMgaXMgdGhlIG9mZnNldCB0byBhZGQgKnRvKiBVVEMgdG8gZ2V0IGxvY2FsIHRpbWUuIEFzc3VtZQorICAgICAqIHRoYXQgdGhlIHN0YXJ0IGFuZCBlbmQgbW9udGggYXJlIGRpc3RpbmN0LgorICAgICAqIEBwYXJhbSBlcmEgICAgICAgICAgIFRoZSBlcmEgb2YgdGhlIGdpdmVuIGRhdGUuCisgICAgICogQHBhcmFtIHllYXIgICAgICAgICAgVGhlIHllYXIgaW4gdGhlIGdpdmVuIGRhdGUuCisgICAgICogQHBhcmFtIG1vbnRoICAgICAgICAgVGhlIG1vbnRoIGluIHRoZSBnaXZlbiBkYXRlLiBNb250aCBpcyAwLWJhc2VkLiBlLmcuLAorICAgICAqICAgICAgICAgICAgICAgICAgICAgIDAgZm9yIEphbnVhcnkuCisgICAgICogQHBhcmFtIGRheSAgICAgICAgICAgVGhlIGRheS1pbi1tb250aCBvZiB0aGUgZ2l2ZW4gZGF0ZS4KKyAgICAgKiBAcGFyYW0gZGF5T2ZXZWVrICAgICBUaGUgZGF5LW9mLXdlZWsgb2YgdGhlIGdpdmVuIGRhdGUuCisgICAgICogQHBhcmFtIG1pbGxpcyAgICAgICAgVGhlIG1pbGxpc2Vjb25kcyBpbiBkYXkgaW4gPGVtPnN0YW5kYXJkPC9lbT4gbG9jYWwgdGltZS4KKyAgICAgKiBAcGFyYW0gbW9udGhMZW5ndGggICBUaGUgbGVuZ3RoIG9mIHRoZSBnaXZlbiBtb250aCBpbiBkYXlzLgorICAgICAqIEBwYXJhbSBwcmV2TW9udGhMZW5ndGggVGhlIGxlbmd0aCBvZiB0aGUgcHJldmlvdXMgbW9udGggaW4gZGF5cy4KKyAgICAgKiBAcmV0dXJuICAgICAgICAgICAgICBUaGUgb2Zmc2V0IHRvIGFkZCAqdG8qIEdNVCB0byBnZXQgbG9jYWwgdGltZS4KKyAgICAgKiBAZXhjZXB0aW9uIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiB0aGUgZXJhLCBtb250aCwgZGF5LAorICAgICAqIGRheU9mV2VlaywgbWlsbGlzLCBvciBtb250aExlbmd0aCBwYXJhbWV0ZXJzIGFyZSBvdXQgb2YgcmFuZ2UKKyAgICAgKi8KKyAgICBpbnQgZ2V0T2Zmc2V0KGludCBlcmEsIGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXksIGludCBkYXlPZldlZWssCisgICAgICAgICAgICAgICAgICBpbnQgbWlsbGlzLCBpbnQgbW9udGhMZW5ndGgsIGludCBwcmV2TW9udGhMZW5ndGgpIHsKKyAgICAgICAgaWYgKGZhbHNlKSB7CisgICAgICAgICAgICAvKiBVc2UgdGhpcyBwYXJhbWV0ZXIgY2hlY2tpbmcgY29kZSBmb3Igbm9ybWFsIG9wZXJhdGlvbi4gIE9ubHkgb25lCisgICAgICAgICAgICAgKiBvZiB0aGVzZSB0d28gYmxvY2tzIHNob3VsZCBhY3R1YWxseSBnZXQgY29tcGlsZWQgaW50byB0aGUgY2xhc3MKKyAgICAgICAgICAgICAqIGZpbGUuICAqLworICAgICAgICAgICAgaWYgKChlcmEgIT0gR3JlZ29yaWFuQ2FsZW5kYXIuQUQgJiYgZXJhICE9IEdyZWdvcmlhbkNhbGVuZGFyLkJDKQorICAgICAgICAgICAgICAgIHx8IG1vbnRoIDwgQ2FsZW5kYXIuSkFOVUFSWQorICAgICAgICAgICAgICAgIHx8IG1vbnRoID4gQ2FsZW5kYXIuREVDRU1CRVIKKyAgICAgICAgICAgICAgICB8fCBkYXkgPCAxCisgICAgICAgICAgICAgICAgfHwgZGF5ID4gbW9udGhMZW5ndGgKKyAgICAgICAgICAgICAgICB8fCBkYXlPZldlZWsgPCBDYWxlbmRhci5TVU5EQVkKKyAgICAgICAgICAgICAgICB8fCBkYXlPZldlZWsgPiBDYWxlbmRhci5TQVRVUkRBWQorICAgICAgICAgICAgICAgIHx8IG1pbGxpcyA8IDAKKyAgICAgICAgICAgICAgICB8fCBtaWxsaXMgPj0gbWlsbGlzUGVyRGF5CisgICAgICAgICAgICAgICAgfHwgbW9udGhMZW5ndGggPCAyOAorICAgICAgICAgICAgICAgIHx8IG1vbnRoTGVuZ3RoID4gMzEKKyAgICAgICAgICAgICAgICB8fCBwcmV2TW9udGhMZW5ndGggPCAyOAorICAgICAgICAgICAgICAgIHx8IHByZXZNb250aExlbmd0aCA+IDMxKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyogVGhpcyBwYXJhbWV0ZXIgY2hlY2tpbmcgY29kZSBpcyBiZXR0ZXIgZm9yIGRlYnVnZ2luZywgYnV0CisgICAgICAgICAgICAgKiBvdmVya2lsbCBmb3Igbm9ybWFsIG9wZXJhdGlvbi4gIE9ubHkgb25lIG9mIHRoZXNlIHR3byBibG9ja3MKKyAgICAgICAgICAgICAqIHNob3VsZCBhY3R1YWxseSBnZXQgY29tcGlsZWQgaW50byB0aGUgY2xhc3MgZmlsZS4gICovCisgICAgICAgICAgICBpZiAoZXJhICE9IEdyZWdvcmlhbkNhbGVuZGFyLkFEICYmIGVyYSAhPSBHcmVnb3JpYW5DYWxlbmRhci5CQykgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIklsbGVnYWwgZXJhICIgKyBlcmEpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1vbnRoIDwgQ2FsZW5kYXIuSkFOVUFSWQorICAgICAgICAgICAgICAgIHx8IG1vbnRoID4gQ2FsZW5kYXIuREVDRU1CRVIpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbGxlZ2FsIG1vbnRoICIgKyBtb250aCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZGF5IDwgMQorICAgICAgICAgICAgICAgIHx8IGRheSA+IG1vbnRoTGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSWxsZWdhbCBkYXkgIiArIGRheSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZGF5T2ZXZWVrIDwgQ2FsZW5kYXIuU1VOREFZCisgICAgICAgICAgICAgICAgfHwgZGF5T2ZXZWVrID4gQ2FsZW5kYXIuU0FUVVJEQVkpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbGxlZ2FsIGRheSBvZiB3ZWVrICIgKyBkYXlPZldlZWspOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1pbGxpcyA8IDAKKyAgICAgICAgICAgICAgICB8fCBtaWxsaXMgPj0gbWlsbGlzUGVyRGF5KSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSWxsZWdhbCBtaWxsaXMgIiArIG1pbGxpcyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobW9udGhMZW5ndGggPCAyOAorICAgICAgICAgICAgICAgIHx8IG1vbnRoTGVuZ3RoID4gMzEpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbGxlZ2FsIG1vbnRoIGxlbmd0aCAiICsgbW9udGhMZW5ndGgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHByZXZNb250aExlbmd0aCA8IDI4CisgICAgICAgICAgICAgICAgfHwgcHJldk1vbnRoTGVuZ3RoID4gMzEpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbGxlZ2FsIHByZXZpb3VzIG1vbnRoIGxlbmd0aCAiICsgcHJldk1vbnRoTGVuZ3RoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGludCByZXN1bHQgPSByYXdPZmZzZXQ7CisKKyAgICAgICAgLy8gQmFpbCBvdXQgaWYgd2UgYXJlIGJlZm9yZSB0aGUgb25zZXQgb2YgZGF5bGlnaHQgc2F2aW5ncyB0aW1lCisgICAgICAgIGlmICghdXNlRGF5bGlnaHQgfHwgeWVhciA8IHN0YXJ0WWVhciB8fCBlcmEgIT0gR3JlZ29yaWFuQ2FsZW5kYXIuQUQpIHJldHVybiByZXN1bHQ7CisKKyAgICAgICAgLy8gQ2hlY2sgZm9yIHNvdXRoZXJuIGhlbWlzcGhlcmUuICBXZSBhc3N1bWUgdGhhdCB0aGUgc3RhcnQgYW5kIGVuZAorICAgICAgICAvLyBtb250aCBhcmUgZGlmZmVyZW50LgorICAgICAgICBib29sZWFuIHNvdXRoZXJuID0gKHN0YXJ0TW9udGggPiBlbmRNb250aCk7CisKKyAgICAgICAgLy8gQ29tcGFyZSB0aGUgZGF0ZSB0byB0aGUgc3RhcnRpbmcgYW5kIGVuZGluZyBydWxlcy4rMSA9IGRhdGU+cnVsZSwgLTEKKyAgICAgICAgLy8gPSBkYXRlPHJ1bGUsIDAgPSBkYXRlPT1ydWxlLgorICAgICAgICBpbnQgc3RhcnRDb21wYXJlID0gY29tcGFyZVRvUnVsZShtb250aCwgbW9udGhMZW5ndGgsIHByZXZNb250aExlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5LCBkYXlPZldlZWssIG1pbGxpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRUaW1lTW9kZSA9PSBVVENfVElNRSA/IC1yYXdPZmZzZXQgOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydE1vZGUsIHN0YXJ0TW9udGgsIHN0YXJ0RGF5T2ZXZWVrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydERheSwgc3RhcnRUaW1lKTsKKyAgICAgICAgaW50IGVuZENvbXBhcmUgPSAwOworCisgICAgICAgIC8qIFdlIGRvbid0IGFsd2F5cyBoYXZlIHRvIGNvbXB1dGUgZW5kQ29tcGFyZS4gIEZvciBtYW55IGluc3RhbmNlcywKKyAgICAgICAgICogc3RhcnRDb21wYXJlIGlzIGVub3VnaCB0byBkZXRlcm1pbmUgaWYgd2UgYXJlIGluIERTVCBvciBub3QuICBJbiB0aGUKKyAgICAgICAgICogbm9ydGhlcm4gaGVtaXNwaGVyZSwgaWYgd2UgYXJlIGJlZm9yZSB0aGUgc3RhcnQgcnVsZSwgd2UgY2FuJ3QgaGF2ZQorICAgICAgICAgKiBEU1QuICBJbiB0aGUgc291dGhlcm4gaGVtaXNwaGVyZSwgaWYgd2UgYXJlIGFmdGVyIHRoZSBzdGFydCBydWxlLCB3ZQorICAgICAgICAgKiBtdXN0IGhhdmUgRFNULiAgVGhpcyBpcyByZWZsZWN0ZWQgaW4gdGhlIHdheSB0aGUgbmV4dCBpZiBzdGF0ZW1lbnQKKyAgICAgICAgICogKG5vdCB0aGUgb25lIGltbWVkaWF0ZWx5IGZvbGxvd2luZykgc2hvcnQgY2lyY3VpdHMuICovCisgICAgICAgIGlmIChzb3V0aGVybiAhPSAoc3RhcnRDb21wYXJlID49IDApKSB7CisgICAgICAgICAgICAvKiBGb3IgdGhlIGVuZGluZyBydWxlIGNvbXBhcmlzb24sIHdlIGFkZCB0aGUgZHN0U2F2aW5ncyB0byB0aGUgbWlsbGlzCisgICAgICAgICAgICAgKiBwYXNzZWQgaW4gdG8gY29udmVydCB0aGVtIGZyb20gc3RhbmRhcmQgdG8gd2FsbCB0aW1lLiAgV2UgdGhlbiBtdXN0CisgICAgICAgICAgICAgKiBub3JtYWxpemUgdGhlIG1pbGxpcyB0byB0aGUgcmFuZ2UgMC4ubWlsbGlzUGVyRGF5LTEuICovCisgICAgICAgICAgICBlbmRDb21wYXJlID0gY29tcGFyZVRvUnVsZShtb250aCwgbW9udGhMZW5ndGgsIHByZXZNb250aExlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRheSwgZGF5T2ZXZWVrLCBtaWxsaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRUaW1lTW9kZSA9PSBXQUxMX1RJTUUgPyBkc3RTYXZpbmdzIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5kVGltZU1vZGUgPT0gVVRDX1RJTUUgPyAtcmF3T2Zmc2V0IDogMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRNb2RlLCBlbmRNb250aCwgZW5kRGF5T2ZXZWVrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kRGF5LCBlbmRUaW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIENoZWNrIGZvciBib3RoIHRoZSBub3J0aGVybiBhbmQgc291dGhlcm4gaGVtaXNwaGVyZSBjYXNlcy4gIFdlCisgICAgICAgIC8vIGFzc3VtZSB0aGF0IGluIHRoZSBub3J0aGVybiBoZW1pc3BoZXJlLCB0aGUgc3RhcnQgcnVsZSBpcyBiZWZvcmUgdGhlCisgICAgICAgIC8vIGVuZCBydWxlIHdpdGhpbiB0aGUgY2FsZW5kYXIgeWVhciwgYW5kIHZpY2UgdmVyc2EgZm9yIHRoZSBzb3V0aGVybgorICAgICAgICAvLyBoZW1pc3BoZXJlLgorICAgICAgICBpZiAoKCFzb3V0aGVybiAmJiAoc3RhcnRDb21wYXJlID49IDAgJiYgZW5kQ29tcGFyZSA8IDApKSB8fAorICAgICAgICAgICAgKHNvdXRoZXJuICYmIChzdGFydENvbXBhcmUgPj0gMCB8fCBlbmRDb21wYXJlIDwgMCkpKQorICAgICAgICAgICAgcmVzdWx0ICs9IGRzdFNhdmluZ3M7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb21wYXJlIGEgZ2l2ZW4gZGF0ZSBpbiB0aGUgeWVhciB0byBhIHJ1bGUuIFJldHVybiAxLCAwLCBvciAtMSwgZGVwZW5kaW5nCisgICAgICogb24gd2hldGhlciB0aGUgZGF0ZSBpcyBhZnRlciwgZXF1YWwgdG8sIG9yIGJlZm9yZSB0aGUgcnVsZSBkYXRlLiBUaGUKKyAgICAgKiBtaWxsaXMgYXJlIGNvbXBhcmVkIGRpcmVjdGx5IGFnYWluc3QgdGhlIHJ1bGVNaWxsaXMsIHNvIGFueQorICAgICAqIHN0YW5kYXJkLWRheWxpZ2h0IGFkanVzdG1lbnRzIG11c3QgYmUgaGFuZGxlZCBieSB0aGUgY2FsbGVyLgorICAgICAqCisgICAgICogQHJldHVybiAgMSBpZiB0aGUgZGF0ZSBpcyBhZnRlciB0aGUgcnVsZSBkYXRlLCAtMSBpZiB0aGUgZGF0ZSBpcyBiZWZvcmUKKyAgICAgKiAgICAgICAgICB0aGUgcnVsZSBkYXRlLCBvciAwIGlmIHRoZSBkYXRlIGlzIGVxdWFsIHRvIHRoZSBydWxlIGRhdGUuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgaW50IGNvbXBhcmVUb1J1bGUoaW50IG1vbnRoLCBpbnQgbW9udGhMZW4sIGludCBwcmV2TW9udGhMZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRheU9mTW9udGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRheU9mV2VlaywgaW50IG1pbGxpcywgaW50IG1pbGxpc0RlbHRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBydWxlTW9kZSwgaW50IHJ1bGVNb250aCwgaW50IHJ1bGVEYXlPZldlZWssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJ1bGVEYXksIGludCBydWxlTWlsbGlzKQorICAgIHsKKyAgICAgICAgLy8gTWFrZSBhZGp1c3RtZW50cyBmb3Igc3RhcnRUaW1lTW9kZSBhbmQgZW5kVGltZU1vZGUKKyAgICAgICAgbWlsbGlzICs9IG1pbGxpc0RlbHRhOworICAgICAgICB3aGlsZSAobWlsbGlzID49IG1pbGxpc1BlckRheSkgeworICAgICAgICAgICAgbWlsbGlzIC09IG1pbGxpc1BlckRheTsKKyAgICAgICAgICAgICsrZGF5T2ZNb250aDsKKyAgICAgICAgICAgIGRheU9mV2VlayA9IDEgKyAoZGF5T2ZXZWVrICUgNyk7IC8vIGRheU9mV2VlayBpcyBvbmUtYmFzZWQKKyAgICAgICAgICAgIGlmIChkYXlPZk1vbnRoID4gbW9udGhMZW4pIHsKKyAgICAgICAgICAgICAgICBkYXlPZk1vbnRoID0gMTsKKyAgICAgICAgICAgICAgICAvKiBXaGVuIGluY3JlbWVudGluZyB0aGUgbW9udGgsIGl0IGlzIGRlc2lyaWJsZSB0byBvdmVyZmxvdworICAgICAgICAgICAgICAgICAqIGZyb20gREVDRU1CRVIgdG8gREVDRU1CRVIrMSwgc2luY2Ugd2UgdXNlIHRoZSByZXN1bHQgdG8KKyAgICAgICAgICAgICAgICAgKiBjb21wYXJlIGFnYWluc3QgYSByZWFsIG1vbnRoLiBXcmFwYXJvdW5kIG9mIHRoZSB2YWx1ZQorICAgICAgICAgICAgICAgICAqIGxlYWRzIHRvIGJ1ZyA0MTczNjA0LiAqLworICAgICAgICAgICAgICAgICsrbW9udGg7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKG1pbGxpcyA8IDApIHsKKyAgICAgICAgICAgIG1pbGxpcyArPSBtaWxsaXNQZXJEYXk7CisgICAgICAgICAgICAtLWRheU9mTW9udGg7CisgICAgICAgICAgICBkYXlPZldlZWsgPSAxICsgKChkYXlPZldlZWsrNSkgJSA3KTsgLy8gZGF5T2ZXZWVrIGlzIG9uZS1iYXNlZAorICAgICAgICAgICAgaWYgKGRheU9mTW9udGggPCAxKSB7CisgICAgICAgICAgICAgICAgZGF5T2ZNb250aCA9IHByZXZNb250aExlbjsKKyAgICAgICAgICAgICAgICAtLW1vbnRoOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAobW9udGggPCBydWxlTW9udGgpIHJldHVybiAtMTsKKyAgICAgICAgZWxzZSBpZiAobW9udGggPiBydWxlTW9udGgpIHJldHVybiAxOworCisgICAgICAgIGludCBydWxlRGF5T2ZNb250aCA9IDA7CisgICAgICAgIHN3aXRjaCAocnVsZU1vZGUpCisgICAgICAgIHsKKyAgICAgICAgY2FzZSBET01fTU9ERToKKyAgICAgICAgICAgIHJ1bGVEYXlPZk1vbnRoID0gcnVsZURheTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERPV19JTl9NT05USF9NT0RFOgorICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlIHJ1bGVEYXkgaXMgdGhlIGRheS1vZi13ZWVrLWluLW1vbnRoCisgICAgICAgICAgICBpZiAocnVsZURheSA+IDApCisgICAgICAgICAgICAgICAgcnVsZURheU9mTW9udGggPSAxICsgKHJ1bGVEYXkgLSAxKSAqIDcgKworICAgICAgICAgICAgICAgICAgICAoNyArIHJ1bGVEYXlPZldlZWsgLSAoZGF5T2ZXZWVrIC0gZGF5T2ZNb250aCArIDEpKSAlIDc7CisgICAgICAgICAgICBlbHNlIC8vIEFzc3VtZSBydWxlRGF5IDwgMCBoZXJlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcnVsZURheU9mTW9udGggPSBtb250aExlbiArIChydWxlRGF5ICsgMSkgKiA3IC0KKyAgICAgICAgICAgICAgICAgICAgKDcgKyAoZGF5T2ZXZWVrICsgbW9udGhMZW4gLSBkYXlPZk1vbnRoKSAtIHJ1bGVEYXlPZldlZWspICUgNzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERPV19HRV9ET01fTU9ERToKKyAgICAgICAgICAgIHJ1bGVEYXlPZk1vbnRoID0gcnVsZURheSArCisgICAgICAgICAgICAgICAgKDQ5ICsgcnVsZURheU9mV2VlayAtIHJ1bGVEYXkgLSBkYXlPZldlZWsgKyBkYXlPZk1vbnRoKSAlIDc7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBET1dfTEVfRE9NX01PREU6CisgICAgICAgICAgICBydWxlRGF5T2ZNb250aCA9IHJ1bGVEYXkgLQorICAgICAgICAgICAgICAgICg0OSAtIHJ1bGVEYXlPZldlZWsgKyBydWxlRGF5ICsgZGF5T2ZXZWVrIC0gZGF5T2ZNb250aCkgJSA3OworICAgICAgICAgICAgLy8gTm90ZSBhdCB0aGlzIHBvaW50IHJ1bGVEYXlPZk1vbnRoIG1heSBiZSA8MSwgYWx0aG91Z2ggaXQgd2lsbAorICAgICAgICAgICAgLy8gYmUgPj0xIGZvciB3ZWxsLWZvcm1lZCBydWxlcy4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGRheU9mTW9udGggPCBydWxlRGF5T2ZNb250aCkgcmV0dXJuIC0xOworICAgICAgICBlbHNlIGlmIChkYXlPZk1vbnRoID4gcnVsZURheU9mTW9udGgpIHJldHVybiAxOworCisgICAgICAgIGlmIChtaWxsaXMgPCBydWxlTWlsbGlzKSByZXR1cm4gLTE7CisgICAgICAgIGVsc2UgaWYgKG1pbGxpcyA+IHJ1bGVNaWxsaXMpIHJldHVybiAxOworICAgICAgICBlbHNlIHJldHVybiAwOworICAgIH0KKworICAgIC8qKgorICAgICAqIE92ZXJyaWRlcyBUaW1lWm9uZQorICAgICAqIEdldHMgdGhlIEdNVCBvZmZzZXQgZm9yIHRoaXMgdGltZSB6b25lLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0UmF3T2Zmc2V0KCkKKyAgICB7CisgICAgICAgIC8vIFRoZSBnaXZlbiBkYXRlIHdpbGwgYmUgdGFrZW4gaW50byBhY2NvdW50IHdoaWxlCisgICAgICAgIC8vIHdlIGhhdmUgdGhlIGhpc3RvcmljYWwgdGltZSB6b25lIGRhdGEgaW4gcGxhY2UuCisgICAgICAgIHJldHVybiByYXdPZmZzZXQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogT3ZlcnJpZGVzIFRpbWVab25lCisgICAgICogU2V0cyB0aGUgYmFzZSB0aW1lIHpvbmUgb2Zmc2V0IHRvIEdNVC4KKyAgICAgKiBUaGlzIGlzIHRoZSBvZmZzZXQgdG8gYWRkICp0byogVVRDIHRvIGdldCBsb2NhbCB0aW1lLgorICAgICAqIFBsZWFzZSBzZWUgVGltZVpvbmUuc2V0UmF3T2Zmc2V0IGZvciBkZXNjcmlwdGlvbnMgb24gdGhlIHBhcmFtZXRlci4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRSYXdPZmZzZXQoaW50IG9mZnNldE1pbGxpcykKKyAgICB7CisgICAgICAgIHRoaXMucmF3T2Zmc2V0ID0gb2Zmc2V0TWlsbGlzOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIGFtb3VudCBvZiB0aW1lIGluIG1zIHRoYXQgdGhlIGNsb2NrIGlzIGFkdmFuY2VkIGR1cmluZyBEU1QuCisgICAgICogQHBhcmFtIG1pbGxpc1NhdmVkRHVyaW5nRFNUIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRoZSB0aW1lIGlzCisgICAgICogYWR2YW5jZWQgd2l0aCByZXNwZWN0IHRvIHN0YW5kYXJkIHRpbWUgd2hlbiB0aGUgZGF5bGlnaHQgc2F2aW5ncyBydWxlcworICAgICAqIGFyZSBpbiBlZmZlY3QuIEEgcG9zaXRpdmUgbnVtYmVyLCB0eXBpY2FsbHkgb25lIGhvdXIgKDM2MDAwMDApLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldERTVFNhdmluZ3MoaW50IG1pbGxpc1NhdmVkRHVyaW5nRFNUKSB7CisgICAgICAgIGlmIChtaWxsaXNTYXZlZER1cmluZ0RTVCA8PSAwKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbGxlZ2FsIERTVCBzYXZpbmdzIik7CisgICAgICAgIH0KKyAgICAgICAgZHN0U2F2aW5ncyA9IG1pbGxpc1NhdmVkRHVyaW5nRFNUOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGFtb3VudCBvZiB0aW1lIGluIG1zIHRoYXQgdGhlIGNsb2NrIGlzIGFkdmFuY2VkIGR1cmluZyBEU1QuCisgICAgICogQHJldHVybiB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0aGUgdGltZSBpcworICAgICAqIGFkdmFuY2VkIHdpdGggcmVzcGVjdCB0byBzdGFuZGFyZCB0aW1lIHdoZW4gdGhlIGRheWxpZ2h0IHNhdmluZ3MgcnVsZXMKKyAgICAgKiBhcmUgaW4gZWZmZWN0LiBBIHBvc2l0aXZlIG51bWJlciwgdHlwaWNhbGx5IG9uZSBob3VyICgzNjAwMDAwKS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldERTVFNhdmluZ3MoKSB7CisgICAgICAgIHJldHVybiBkc3RTYXZpbmdzOworICAgIH0KKworICAgIC8qKgorICAgICAqIE92ZXJyaWRlcyBUaW1lWm9uZQorICAgICAqIFF1ZXJpZXMgaWYgdGhpcyB0aW1lIHpvbmUgdXNlcyBEYXlsaWdodCBTYXZpbmdzIFRpbWUuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gdXNlRGF5bGlnaHRUaW1lKCkKKyAgICB7CisgICAgICAgIHJldHVybiB1c2VEYXlsaWdodDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZXMgVGltZVpvbmUKKyAgICAgKiBRdWVyaWVzIGlmIHRoZSBnaXZlbiBkYXRlIGlzIGluIERheWxpZ2h0IFNhdmluZ3MgVGltZS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpbkRheWxpZ2h0VGltZShEYXRlIGRhdGUpCisgICAgeworICAgICAgICBHcmVnb3JpYW5DYWxlbmRhciBnYyA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcih0aGlzKTsKKyAgICAgICAgZ2Muc2V0VGltZShkYXRlKTsKKyAgICAgICAgcmV0dXJuIGdjLmluRGF5bGlnaHRUaW1lKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogT3ZlcnJpZGVzIENsb25lYWJsZQorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBPYmplY3QgY2xvbmUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN1cGVyLmNsb25lKCk7CisgICAgICAgIC8vIG90aGVyIGZpZWxkcyBhcmUgYml0LWNvcGllZAorICAgIH0KKworICAgIC8qKgorICAgICAqIE92ZXJyaWRlIGhhc2hDb2RlLgorICAgICAqIEdlbmVyYXRlcyB0aGUgaGFzaCBjb2RlIGZvciB0aGUgU2ltcGxlRGF0ZUZvcm1hdCBvYmplY3QKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3luY2hyb25pemVkIGludCBoYXNoQ29kZSgpCisgICAgeworICAgICAgICByZXR1cm4gc3RhcnRNb250aCBeIHN0YXJ0RGF5IF4gc3RhcnREYXlPZldlZWsgXiBzdGFydFRpbWUgXgorICAgICAgICAgICAgZW5kTW9udGggXiBlbmREYXkgXiBlbmREYXlPZldlZWsgXiBlbmRUaW1lIF4gcmF3T2Zmc2V0OworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbXBhcmVzIHRoZSBlcXVhbGl0eSBvZiB0d28gU2ltcGxlVGltZVpvbmUgb2JqZWN0cy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBvYmogIFRoZSBTaW1wbGVUaW1lWm9uZSBvYmplY3QgdG8gYmUgY29tcGFyZWQgd2l0aC4KKyAgICAgKiBAcmV0dXJuICAgICBUcnVlIGlmIHRoZSBnaXZlbiBvYmogaXMgdGhlIHNhbWUgYXMgdGhpcyBTaW1wbGVUaW1lWm9uZQorICAgICAqICAgICAgICAgICAgIG9iamVjdDsgZmFsc2Ugb3RoZXJ3aXNlLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb2JqKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMgPT0gb2JqKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmICghKG9iaiBpbnN0YW5jZW9mIFNpbXBsZVRpbWVab25lKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBTaW1wbGVUaW1lWm9uZSB0aGF0ID0gKFNpbXBsZVRpbWVab25lKSBvYmo7CisKKyAgICAgICAgcmV0dXJuIGdldElEKCkuZXF1YWxzKHRoYXQuZ2V0SUQoKSkgJiYKKyAgICAgICAgICAgIGhhc1NhbWVSdWxlcyh0aGF0KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGlzIHpvbmUgaGFzIHRoZSBzYW1lIHJ1bGVzIGFuZCBvZmZzZXQgYXMgYW5vdGhlciB6b25lLgorICAgICAqIEBwYXJhbSBvdGhlciB0aGUgVGltZVpvbmUgb2JqZWN0IHRvIGJlIGNvbXBhcmVkIHdpdGgKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIHpvbmUgaGFzIHRoZSBzYW1lIHJ1bGVzIGFuZCBvZmZzZXQgYXMgdGhpcyBvbmUKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBoYXNTYW1lUnVsZXMoVGltZVpvbmUgb3RoZXIpIHsKKyAgICAgICAgaWYgKHRoaXMgPT0gb3RoZXIpIHJldHVybiB0cnVlOworICAgICAgICBpZiAoIShvdGhlciBpbnN0YW5jZW9mIFNpbXBsZVRpbWVab25lKSkgcmV0dXJuIGZhbHNlOworICAgICAgICBTaW1wbGVUaW1lWm9uZSB0aGF0ID0gKFNpbXBsZVRpbWVab25lKSBvdGhlcjsKKyAgICAgICAgcmV0dXJuIHJhd09mZnNldCA9PSB0aGF0LnJhd09mZnNldCAmJgorICAgICAgICAgICAgdXNlRGF5bGlnaHQgPT0gdGhhdC51c2VEYXlsaWdodCAmJgorICAgICAgICAgICAgKCF1c2VEYXlsaWdodAorICAgICAgICAgICAgIC8vIE9ubHkgY2hlY2sgcnVsZXMgaWYgdXNpbmcgRFNUCisgICAgICAgICAgICAgfHwgKGRzdFNhdmluZ3MgPT0gdGhhdC5kc3RTYXZpbmdzICYmCisgICAgICAgICAgICAgICAgIHN0YXJ0TW9kZSA9PSB0aGF0LnN0YXJ0TW9kZSAmJgorICAgICAgICAgICAgICAgICBzdGFydE1vbnRoID09IHRoYXQuc3RhcnRNb250aCAmJgorICAgICAgICAgICAgICAgICBzdGFydERheSA9PSB0aGF0LnN0YXJ0RGF5ICYmCisgICAgICAgICAgICAgICAgIHN0YXJ0RGF5T2ZXZWVrID09IHRoYXQuc3RhcnREYXlPZldlZWsgJiYKKyAgICAgICAgICAgICAgICAgc3RhcnRUaW1lID09IHRoYXQuc3RhcnRUaW1lICYmCisgICAgICAgICAgICAgICAgIHN0YXJ0VGltZU1vZGUgPT0gdGhhdC5zdGFydFRpbWVNb2RlICYmCisgICAgICAgICAgICAgICAgIGVuZE1vZGUgPT0gdGhhdC5lbmRNb2RlICYmCisgICAgICAgICAgICAgICAgIGVuZE1vbnRoID09IHRoYXQuZW5kTW9udGggJiYKKyAgICAgICAgICAgICAgICAgZW5kRGF5ID09IHRoYXQuZW5kRGF5ICYmCisgICAgICAgICAgICAgICAgIGVuZERheU9mV2VlayA9PSB0aGF0LmVuZERheU9mV2VlayAmJgorICAgICAgICAgICAgICAgICBlbmRUaW1lID09IHRoYXQuZW5kVGltZSAmJgorICAgICAgICAgICAgICAgICBlbmRUaW1lTW9kZSA9PSB0aGF0LmVuZFRpbWVNb2RlICYmCisgICAgICAgICAgICAgICAgIHN0YXJ0WWVhciA9PSB0aGF0LnN0YXJ0WWVhcikpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHRpbWUgem9uZS4KKyAgICAgKiBAcmV0dXJuICBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHRpbWUgem9uZS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICByZXR1cm4gZ2V0Q2xhc3MoKS5nZXROYW1lKCkgKworICAgICAgICAgICAgIltpZD0iICsgZ2V0SUQoKSArCisgICAgICAgICAgICAiLG9mZnNldD0iICsgcmF3T2Zmc2V0ICsKKyAgICAgICAgICAgICIsZHN0U2F2aW5ncz0iICsgZHN0U2F2aW5ncyArCisgICAgICAgICAgICAiLHVzZURheWxpZ2h0PSIgKyB1c2VEYXlsaWdodCArCisgICAgICAgICAgICAiLHN0YXJ0WWVhcj0iICsgc3RhcnRZZWFyICsKKyAgICAgICAgICAgICIsc3RhcnRNb2RlPSIgKyBzdGFydE1vZGUgKworICAgICAgICAgICAgIixzdGFydE1vbnRoPSIgKyBzdGFydE1vbnRoICsKKyAgICAgICAgICAgICIsc3RhcnREYXk9IiArIHN0YXJ0RGF5ICsKKyAgICAgICAgICAgICIsc3RhcnREYXlPZldlZWs9IiArIHN0YXJ0RGF5T2ZXZWVrICsKKyAgICAgICAgICAgICIsc3RhcnRUaW1lPSIgKyBzdGFydFRpbWUgKworICAgICAgICAgICAgIixzdGFydFRpbWVNb2RlPSIgKyBzdGFydFRpbWVNb2RlICsKKyAgICAgICAgICAgICIsZW5kTW9kZT0iICsgZW5kTW9kZSArCisgICAgICAgICAgICAiLGVuZE1vbnRoPSIgKyBlbmRNb250aCArCisgICAgICAgICAgICAiLGVuZERheT0iICsgZW5kRGF5ICsKKyAgICAgICAgICAgICIsZW5kRGF5T2ZXZWVrPSIgKyBlbmREYXlPZldlZWsgKworICAgICAgICAgICAgIixlbmRUaW1lPSIgKyBlbmRUaW1lICsKKyAgICAgICAgICAgICIsZW5kVGltZU1vZGU9IiArIGVuZFRpbWVNb2RlICsgJ10nOworICAgIH0KKworICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09cHJpdmF0ZXM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAvKioKKyAgICAgKiBUaGUgbW9udGggaW4gd2hpY2ggZGF5bGlnaHQgc2F2aW5ncyB0aW1lIHN0YXJ0cy4gIFRoaXMgdmFsdWUgbXVzdCBiZQorICAgICAqIGJldHdlZW4gPGNvZGU+Q2FsZW5kYXIuSkFOVUFSWTwvY29kZT4gYW5kCisgICAgICogPGNvZGU+Q2FsZW5kYXIuREVDRU1CRVI8L2NvZGU+IGluY2x1c2l2ZS4gIFRoaXMgdmFsdWUgbXVzdCBub3QgZXF1YWwKKyAgICAgKiA8Y29kZT5lbmRNb250aDwvY29kZT4uCisgICAgICogPHA+SWYgPGNvZGU+dXNlRGF5bGlnaHQ8L2NvZGU+IGlzIGZhbHNlLCB0aGlzIHZhbHVlIGlzIGlnbm9yZWQuCisgICAgICogQHNlcmlhbAorICAgICAqLworICAgIHByaXZhdGUgaW50IHN0YXJ0TW9udGg7CisKKyAgICAvKioKKyAgICAgKiBUaGlzIGZpZWxkIGhhcyB0d28gcG9zc2libGUgaW50ZXJwcmV0YXRpb25zOgorICAgICAqIDxkbD4KKyAgICAgKiA8ZHQ+PGNvZGU+c3RhcnRNb2RlID09IERPV19JTl9NT05USDwvY29kZT48L2R0PgorICAgICAqIDxkZD4KKyAgICAgKiA8Y29kZT5zdGFydERheTwvY29kZT4gaW5kaWNhdGVzIHRoZSBkYXkgb2YgdGhlIG1vbnRoIG9mCisgICAgICogPGNvZGU+c3RhcnRNb250aDwvY29kZT4gb24gd2hpY2ggZGF5bGlnaHQKKyAgICAgKiBzYXZpbmdzIHRpbWUgc3RhcnRzLCBmcm9tIDEgdG8gMjgsIDMwLCBvciAzMSwgZGVwZW5kaW5nIG9uIHRoZQorICAgICAqIDxjb2RlPnN0YXJ0TW9udGg8L2NvZGU+LgorICAgICAqIDwvZGQ+CisgICAgICogPGR0Pjxjb2RlPnN0YXJ0TW9kZSAhPSBET1dfSU5fTU9OVEg8L2NvZGU+PC9kdD4KKyAgICAgKiA8ZGQ+CisgICAgICogPGNvZGU+c3RhcnREYXk8L2NvZGU+IGluZGljYXRlcyB3aGljaCA8Y29kZT5zdGFydERheU9mV2VlazwvY29kZT4gaW4gdGgKKyAgICAgKiBtb250aCA8Y29kZT5zdGFydE1vbnRoPC9jb2RlPiBkYXlsaWdodAorICAgICAqIHNhdmluZ3MgdGltZSBzdGFydHMgb24uICBGb3IgZXhhbXBsZSwgYSB2YWx1ZSBvZiArMSBhbmQgYQorICAgICAqIDxjb2RlPnN0YXJ0RGF5T2ZXZWVrPC9jb2RlPiBvZiA8Y29kZT5DYWxlbmRhci5TVU5EQVk8L2NvZGU+IGluZGljYXRlcyB0aGUKKyAgICAgKiBmaXJzdCBTdW5kYXkgb2YgPGNvZGU+c3RhcnRNb250aDwvY29kZT4uICBMaWtld2lzZSwgKzIgd291bGQgaW5kaWNhdGUgdGhlCisgICAgICogc2Vjb25kIFN1bmRheSwgYW5kIC0xIHRoZSBsYXN0IFN1bmRheS4gIEEgdmFsdWUgb2YgMCBpcyBpbGxlZ2FsLgorICAgICAqIDwvZGQ+CisgICAgICogPC91bD4KKyAgICAgKiA8cD5JZiA8Y29kZT51c2VEYXlsaWdodDwvY29kZT4gaXMgZmFsc2UsIHRoaXMgdmFsdWUgaXMgaWdub3JlZC4KKyAgICAgKiBAc2VyaWFsCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgc3RhcnREYXk7CisKKyAgICAvKioKKyAgICAgKiBUaGUgZGF5IG9mIHRoZSB3ZWVrIG9uIHdoaWNoIGRheWxpZ2h0IHNhdmluZ3MgdGltZSBzdGFydHMuICBUaGlzIHZhbHVlCisgICAgICogbXVzdCBiZSBiZXR3ZWVuIDxjb2RlPkNhbGVuZGFyLlNVTkRBWTwvY29kZT4gYW5kCisgICAgICogPGNvZGU+Q2FsZW5kYXIuU0FUVVJEQVk8L2NvZGU+IGluY2x1c2l2ZS4KKyAgICAgKiA8cD5JZiA8Y29kZT51c2VEYXlsaWdodDwvY29kZT4gaXMgZmFsc2Ugb3IKKyAgICAgKiA8Y29kZT5zdGFydE1vZGUgPT0gREFZX09GX01PTlRIPC9jb2RlPiwgdGhpcyB2YWx1ZSBpcyBpZ25vcmVkLgorICAgICAqIEBzZXJpYWwKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBzdGFydERheU9mV2VlazsKKworICAgIC8qKgorICAgICAqIFRoZSB0aW1lIGluIG1pbGxpc2Vjb25kcyBhZnRlciBtaWRuaWdodCBhdCB3aGljaCBkYXlsaWdodCBzYXZpbmdzCisgICAgICogdGltZSBzdGFydHMuICBUaGlzIHZhbHVlIGlzIGV4cHJlc3NlZCBhcyB3YWxsIHRpbWUsIHN0YW5kYXJkIHRpbWUsCisgICAgICogb3IgVVRDIHRpbWUsIGRlcGVuZGluZyBvbiB0aGUgc2V0dGluZyBvZiA8Y29kZT5zdGFydFRpbWVNb2RlPC9jb2RlPi4KKyAgICAgKiA8cD5JZiA8Y29kZT51c2VEYXlsaWdodDwvY29kZT4gaXMgZmFsc2UsIHRoaXMgdmFsdWUgaXMgaWdub3JlZC4KKyAgICAgKiBAc2VyaWFsCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgc3RhcnRUaW1lOworCisgICAgLyoqCisgICAgICogVGhlIGZvcm1hdCBvZiBzdGFydFRpbWUsIGVpdGhlciBXQUxMX1RJTUUsIFNUQU5EQVJEX1RJTUUsIG9yIFVUQ19USU1FLgorICAgICAqIEBzZXJpYWwKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBzdGFydFRpbWVNb2RlOworCisgICAgLyoqCisgICAgICogVGhlIG1vbnRoIGluIHdoaWNoIGRheWxpZ2h0IHNhdmluZ3MgdGltZSBlbmRzLiAgVGhpcyB2YWx1ZSBtdXN0IGJlCisgICAgICogYmV0d2VlbiA8Y29kZT5DYWxlbmRhci5KQU5VQVJZPC9jb2RlPiBhbmQKKyAgICAgKiA8Y29kZT5DYWxlbmRhci5VTkRFQ0lNQkVSPC9jb2RlPi4gIFRoaXMgdmFsdWUgbXVzdCBub3QgZXF1YWwKKyAgICAgKiA8Y29kZT5zdGFydE1vbnRoPC9jb2RlPi4KKyAgICAgKiA8cD5JZiA8Y29kZT51c2VEYXlsaWdodDwvY29kZT4gaXMgZmFsc2UsIHRoaXMgdmFsdWUgaXMgaWdub3JlZC4KKyAgICAgKiBAc2VyaWFsCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgZW5kTW9udGg7CisKKyAgICAvKioKKyAgICAgKiBUaGlzIGZpZWxkIGhhcyB0d28gcG9zc2libGUgaW50ZXJwcmV0YXRpb25zOgorICAgICAqIDxkbD4KKyAgICAgKiA8ZHQ+PGNvZGU+ZW5kTW9kZSA9PSBET1dfSU5fTU9OVEg8L2NvZGU+PC9kdD4KKyAgICAgKiA8ZGQ+CisgICAgICogPGNvZGU+ZW5kRGF5PC9jb2RlPiBpbmRpY2F0ZXMgdGhlIGRheSBvZiB0aGUgbW9udGggb2YKKyAgICAgKiA8Y29kZT5lbmRNb250aDwvY29kZT4gb24gd2hpY2ggZGF5bGlnaHQKKyAgICAgKiBzYXZpbmdzIHRpbWUgZW5kcywgZnJvbSAxIHRvIDI4LCAzMCwgb3IgMzEsIGRlcGVuZGluZyBvbiB0aGUKKyAgICAgKiA8Y29kZT5lbmRNb250aDwvY29kZT4uCisgICAgICogPC9kZD4KKyAgICAgKiA8ZHQ+PGNvZGU+ZW5kTW9kZSAhPSBET1dfSU5fTU9OVEg8L2NvZGU+PC9kdD4KKyAgICAgKiA8ZGQ+CisgICAgICogPGNvZGU+ZW5kRGF5PC9jb2RlPiBpbmRpY2F0ZXMgd2hpY2ggPGNvZGU+ZW5kRGF5T2ZXZWVrPC9jb2RlPiBpbiB0aAorICAgICAqIG1vbnRoIDxjb2RlPmVuZE1vbnRoPC9jb2RlPiBkYXlsaWdodAorICAgICAqIHNhdmluZ3MgdGltZSBlbmRzIG9uLiAgRm9yIGV4YW1wbGUsIGEgdmFsdWUgb2YgKzEgYW5kIGEKKyAgICAgKiA8Y29kZT5lbmREYXlPZldlZWs8L2NvZGU+IG9mIDxjb2RlPkNhbGVuZGFyLlNVTkRBWTwvY29kZT4gaW5kaWNhdGVzIHRoZQorICAgICAqIGZpcnN0IFN1bmRheSBvZiA8Y29kZT5lbmRNb250aDwvY29kZT4uICBMaWtld2lzZSwgKzIgd291bGQgaW5kaWNhdGUgdGhlCisgICAgICogc2Vjb25kIFN1bmRheSwgYW5kIC0xIHRoZSBsYXN0IFN1bmRheS4gIEEgdmFsdWUgb2YgMCBpcyBpbGxlZ2FsLgorICAgICAqIDwvZGQ+CisgICAgICogPC91bD4KKyAgICAgKiA8cD5JZiA8Y29kZT51c2VEYXlsaWdodDwvY29kZT4gaXMgZmFsc2UsIHRoaXMgdmFsdWUgaXMgaWdub3JlZC4KKyAgICAgKiBAc2VyaWFsCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgZW5kRGF5OworCisgICAgLyoqCisgICAgICogVGhlIGRheSBvZiB0aGUgd2VlayBvbiB3aGljaCBkYXlsaWdodCBzYXZpbmdzIHRpbWUgZW5kcy4gIFRoaXMgdmFsdWUKKyAgICAgKiBtdXN0IGJlIGJldHdlZW4gPGNvZGU+Q2FsZW5kYXIuU1VOREFZPC9jb2RlPiBhbmQKKyAgICAgKiA8Y29kZT5DYWxlbmRhci5TQVRVUkRBWTwvY29kZT4gaW5jbHVzaXZlLgorICAgICAqIDxwPklmIDxjb2RlPnVzZURheWxpZ2h0PC9jb2RlPiBpcyBmYWxzZSBvcgorICAgICAqIDxjb2RlPmVuZE1vZGUgPT0gREFZX09GX01PTlRIPC9jb2RlPiwgdGhpcyB2YWx1ZSBpcyBpZ25vcmVkLgorICAgICAqIEBzZXJpYWwKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBlbmREYXlPZldlZWs7CisKKyAgICAvKioKKyAgICAgKiBUaGUgdGltZSBpbiBtaWxsaXNlY29uZHMgYWZ0ZXIgbWlkbmlnaHQgYXQgd2hpY2ggZGF5bGlnaHQgc2F2aW5ncworICAgICAqIHRpbWUgZW5kcy4gIFRoaXMgdmFsdWUgaXMgZXhwcmVzc2VkIGFzIHdhbGwgdGltZSwgc3RhbmRhcmQgdGltZSwKKyAgICAgKiBvciBVVEMgdGltZSwgZGVwZW5kaW5nIG9uIHRoZSBzZXR0aW5nIG9mIDxjb2RlPmVuZFRpbWVNb2RlPC9jb2RlPi4KKyAgICAgKiA8cD5JZiA8Y29kZT51c2VEYXlsaWdodDwvY29kZT4gaXMgZmFsc2UsIHRoaXMgdmFsdWUgaXMgaWdub3JlZC4KKyAgICAgKiBAc2VyaWFsCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgZW5kVGltZTsKKworICAgIC8qKgorICAgICAqIFRoZSBmb3JtYXQgb2YgZW5kVGltZSwgZWl0aGVyIFdBTExfVElNRSwgU1RBTkRBUkRfVElNRSwgb3IgVVRDX1RJTUUuCisgICAgICogQHNlcmlhbAorICAgICAqLworICAgIHByaXZhdGUgaW50IGVuZFRpbWVNb2RlOworCisgICAgLyoqCisgICAgICogVGhlIHllYXIgaW4gd2hpY2ggZGF5bGlnaHQgc2F2aW5ncyB0aW1lIGlzIGZpcnN0IG9ic2VydmVkLiAgVGhpcyBpcyBhbiBBRAorICAgICAqIHZhbHVlLiAgSWYgdGhpcyB2YWx1ZSBpcyBsZXNzIHRoYW4gMSB0aGVuIGRheWxpZ2h0IHNhdmluZ3MgaXMgb2JzZXJ2ZWQKKyAgICAgKiBmb3IgYWxsIEFEIHllYXJzLgorICAgICAqIDxwPklmIDxjb2RlPnVzZURheWxpZ2h0PC9jb2RlPiBpcyBmYWxzZSwgdGhpcyB2YWx1ZSBpcyBpZ25vcmVkLgorICAgICAqIEBzZXJpYWwKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBzdGFydFllYXI7CisKKyAgICAvKioKKyAgICAgKiBUaGUgb2Zmc2V0IGluIG1pbGxpc2Vjb25kcyBiZXR3ZWVuIHRoaXMgem9uZSBhbmQgR01ULiAgTmVnYXRpdmUgb2Zmc2V0cworICAgICAqIGFyZSB0byB0aGUgd2VzdCBvZiBHcmVlbndpY2guICBUbyBvYnRhaW4gbG9jYWwgPGVtPnN0YW5kYXJkPC9lbT4gdGltZSwKKyAgICAgKiBhZGQgdGhlIG9mZnNldCB0byBHTVQgdGltZS4gIFRvIG9idGFpbiBsb2NhbCB3YWxsIHRpbWUgaXQgbWF5IGFsc28gYmUKKyAgICAgKiBuZWNlc3NhcnkgdG8gYWRkIDxjb2RlPmRzdFNhdmluZ3M8L2NvZGU+LgorICAgICAqIEBzZXJpYWwKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCByYXdPZmZzZXQ7CisKKyAgICAvKioKKyAgICAgKiBBIGJvb2xlYW4gdmFsdWUgd2hpY2ggaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiB0aGlzIHpvbmUgdXNlcyBkYXlsaWdodAorICAgICAqIHNhdmluZ3MgdGltZS4gIElmIHRoaXMgdmFsdWUgaXMgZmFsc2UsIHNldmVyYWwgb3RoZXIgZmllbGRzIGFyZSBpZ25vcmVkLgorICAgICAqIEBzZXJpYWwKKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gdXNlRGF5bGlnaHQ9ZmFsc2U7IC8vIGluZGljYXRlIGlmIHRoaXMgdGltZSB6b25lIHVzZXMgRFNUCisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgbWlsbGlzUGVySG91ciA9IDYwKjYwKjEwMDA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IG1pbGxpc1BlckRheSAgPSAyNCptaWxsaXNQZXJIb3VyOworCisgICAgLyoqCisgICAgICogVGhpcyBmaWVsZCB3YXMgc2VyaWFsaXplZCBpbiBKREsgMS4xLCBzbyB3ZSBoYXZlIHRvIGtlZXAgaXQgdGhhdCB3YXkKKyAgICAgKiB0byBtYWludGFpbiBzZXJpYWxpemF0aW9uIGNvbXBhdGliaWxpdHkuIEhvd2V2ZXIsIHRoZXJlJ3Mgbm8gbmVlZCB0bworICAgICAqIHJlY3JlYXRlIHRoZSBhcnJheSBlYWNoIHRpbWUgd2UgY3JlYXRlIGEgbmV3IHRpbWUgem9uZS4KKyAgICAgKiBAc2VyaWFsIEFuIGFycmF5IG9mIGJ5dGVzIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB7MzEsIDI4LCAzMSwgMzAsIDMxLCAzMCwKKyAgICAgKiAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxfS4gIFRoaXMgaXMgaWdub3JlZCBhcyBvZiB0aGUgSmF2YSAyIHBsYXRmb3JtIHYxLjIsIGhvd2V2ZXIsIGl0IG11c3QKKyAgICAgKiBiZSBzdHJlYW1lZCBvdXQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBKREsgMS4xLgorICAgICAqLworICAgIHByaXZhdGUgZmluYWwgYnl0ZSBtb250aExlbmd0aFtdID0gc3RhdGljTW9udGhMZW5ndGg7CisgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgYnl0ZSBzdGF0aWNNb250aExlbmd0aFtdID0gezMxLDI4LDMxLDMwLDMxLDMwLDMxLDMxLDMwLDMxLDMwLDMxfTsKKyAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBieXRlIHN0YXRpY0xlYXBNb250aExlbmd0aFtdID0gezMxLDI5LDMxLDMwLDMxLDMwLDMxLDMxLDMwLDMxLDMwLDMxfTsKKyAgICAvLyBMYXp5LWluaXRpYWxpemUgdGhpcyB0byBwcmV2ZW50IGNpcmN1bGFyIHN0YXRpYyBpbml0IGRlcGVuZGVuY3kKKyAgICBwcml2YXRlIHN0YXRpYyBHcmVnb3JpYW5DYWxlbmRhciBpbnRlcm5hbENhbCA9IG51bGw7CisKKyAgICAvKioKKyAgICAgKiBWYXJpYWJsZXMgc3BlY2lmeWluZyB0aGUgbW9kZSBvZiB0aGUgc3RhcnQgcnVsZS4gIFRha2VzIHRoZSBmb2xsb3dpbmcKKyAgICAgKiB2YWx1ZXM6CisgICAgICogPGRsPgorICAgICAqIDxkdD48Y29kZT5ET01fTU9ERTwvY29kZT48L2R0PgorICAgICAqIDxkZD4KKyAgICAgKiBFeGFjdCBkYXkgb2Ygd2VlazsgZS5nLiwgTWFyY2ggMS4KKyAgICAgKiA8L2RkPgorICAgICAqIDxkdD48Y29kZT5ET1dfSU5fTU9OVEhfTU9ERTwvY29kZT48L2R0PiAgICAKKyAgICAgKiA8ZGQ+CisgICAgICogRGF5IG9mIHdlZWsgaW4gbW9udGg7IGUuZy4sIGxhc3QgU3VuZGF5IGluIE1hcmNoLgorICAgICAqIDwvZGQ+CisgICAgICogPGR0Pjxjb2RlPkRPV19HRV9ET01fTU9ERTwvY29kZT48L2R0PgorICAgICAqIDxkZD4KKyAgICAgKiBEYXkgb2Ygd2VlayBhZnRlciBkYXkgb2YgbW9udGg7IGUuZy4sIFN1bmRheSBvbiBvciBhZnRlciBNYXJjaCAxNS4KKyAgICAgKiA8L2RkPgorICAgICAqIDxkdD48Y29kZT5ET1dfTEVfRE9NX01PREU8L2NvZGU+PC9kdD4KKyAgICAgKiA8ZGQ+CisgICAgICogRGF5IG9mIHdlZWsgYmVmb3JlIGRheSBvZiBtb250aDsgZS5nLiwgU3VuZGF5IG9uIG9yIGJlZm9yZSBNYXJjaCAxNS4KKyAgICAgKiA8L2RkPgorICAgICAqIDwvZGw+CisgICAgICogVGhlIHNldHRpbmcgb2YgdGhpcyBmaWVsZCBhZmZlY3RzIHRoZSBpbnRlcnByZXRhdGlvbiBvZiB0aGUKKyAgICAgKiA8Y29kZT5zdGFydERheTwvY29kZT4gZmllbGQuCisgICAgICogPHA+SWYgPGNvZGU+dXNlRGF5bGlnaHQ8L2NvZGU+IGlzIGZhbHNlLCB0aGlzIHZhbHVlIGlzIGlnbm9yZWQuCisgICAgICogQHNlcmlhbAorICAgICAqLworICAgIHByaXZhdGUgaW50IHN0YXJ0TW9kZTsKKworICAgIC8qKgorICAgICAqIFZhcmlhYmxlcyBzcGVjaWZ5aW5nIHRoZSBtb2RlIG9mIHRoZSBlbmQgcnVsZS4gIFRha2VzIHRoZSBmb2xsb3dpbmcKKyAgICAgKiB2YWx1ZXM6CisgICAgICogPGRsPgorICAgICAqIDxkdD48Y29kZT5ET01fTU9ERTwvY29kZT48L2R0PgorICAgICAqIDxkZD4KKyAgICAgKiBFeGFjdCBkYXkgb2Ygd2VlazsgZS5nLiwgTWFyY2ggMS4KKyAgICAgKiA8L2RkPgorICAgICAqIDxkdD48Y29kZT5ET1dfSU5fTU9OVEhfTU9ERTwvY29kZT48L2R0PiAgICAKKyAgICAgKiA8ZGQ+CisgICAgICogRGF5IG9mIHdlZWsgaW4gbW9udGg7IGUuZy4sIGxhc3QgU3VuZGF5IGluIE1hcmNoLgorICAgICAqIDwvZGQ+CisgICAgICogPGR0Pjxjb2RlPkRPV19HRV9ET01fTU9ERTwvY29kZT48L2R0PgorICAgICAqIDxkZD4KKyAgICAgKiBEYXkgb2Ygd2VlayBhZnRlciBkYXkgb2YgbW9udGg7IGUuZy4sIFN1bmRheSBvbiBvciBhZnRlciBNYXJjaCAxNS4KKyAgICAgKiA8L2RkPgorICAgICAqIDxkdD48Y29kZT5ET1dfTEVfRE9NX01PREU8L2NvZGU+PC9kdD4KKyAgICAgKiA8ZGQ+CisgICAgICogRGF5IG9mIHdlZWsgYmVmb3JlIGRheSBvZiBtb250aDsgZS5nLiwgU3VuZGF5IG9uIG9yIGJlZm9yZSBNYXJjaCAxNS4KKyAgICAgKiA8L2RkPgorICAgICAqIDwvZGw+CisgICAgICogVGhlIHNldHRpbmcgb2YgdGhpcyBmaWVsZCBhZmZlY3RzIHRoZSBpbnRlcnByZXRhdGlvbiBvZiB0aGUKKyAgICAgKiA8Y29kZT5lbmREYXk8L2NvZGU+IGZpZWxkLgorICAgICAqIDxwPklmIDxjb2RlPnVzZURheWxpZ2h0PC9jb2RlPiBpcyBmYWxzZSwgdGhpcyB2YWx1ZSBpcyBpZ25vcmVkLgorICAgICAqIEBzZXJpYWwKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBlbmRNb2RlOworCisgICAgLyoqCisgICAgICogQSBwb3NpdGl2ZSB2YWx1ZSBpbmRpY2F0aW5nIHRoZSBhbW91bnQgb2YgdGltZSBzYXZlZCBkdXJpbmcgRFNUIGluCisgICAgICogbWlsbGlzZWNvbmRzLgorICAgICAqIFR5cGljYWxseSBvbmUgaG91ciAoMzYwMDAwMCk7IHNvbWV0aW1lcyAzMCBtaW51dGVzICgxODAwMDAwKS4KKyAgICAgKiA8cD5JZiA8Y29kZT51c2VEYXlsaWdodDwvY29kZT4gaXMgZmFsc2UsIHRoaXMgdmFsdWUgaXMgaWdub3JlZC4KKyAgICAgKiBAc2VyaWFsCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgZHN0U2F2aW5nczsKKworICAgIC8qKgorICAgICAqIENvbnN0YW50cyBzcGVjaWZ5aW5nIHZhbHVlcyBvZiBzdGFydE1vZGUgYW5kIGVuZE1vZGUuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IERPTV9NT0RFICAgICAgICAgID0gMTsgLy8gRXhhY3QgZGF5IG9mIG1vbnRoLCAiTWFyIDEiCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IERPV19JTl9NT05USF9NT0RFID0gMjsgLy8gRGF5IG9mIHdlZWsgaW4gbW9udGgsICJsYXN0U3VuIgorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBET1dfR0VfRE9NX01PREUgICA9IDM7IC8vIERheSBvZiB3ZWVrIGFmdGVyIGRheSBvZiBtb250aCwgIlN1bj49MTUiCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IERPV19MRV9ET01fTU9ERSAgID0gNDsgLy8gRGF5IG9mIHdlZWsgYmVmb3JlIGRheSBvZiBtb250aCwgIlN1bjw9MjEiCisKKyAgICAvKioKKyAgICAgKiBDb25zdGFudCBmb3IgYSBydWxlIHNwZWNpZmllZCBhcyB3YWxsIHRpbWUuICBXYWxsIHRpbWUgaXMgc3RhbmRhcmQgdGltZQorICAgICAqIGZvciB0aGUgb25zZXQgcnVsZSwgYW5kIGRheWxpZ2h0IHRpbWUgZm9yIHRoZSBlbmQgcnVsZS4gIE1vc3QgcnVsZXMKKyAgICAgKiBhcmUgc3BlY2lmaWVkIGFzIHdhbGwgdGltZS4KKyAgICAgKi8KKyAgICBzdGF0aWMgZmluYWwgaW50IFdBTExfVElNRSA9IDA7IC8vIFplcm8gZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKKworICAgIC8qKgorICAgICAqIENvbnN0YW50IGZvciBhIHJ1bGUgc3BlY2lmaWVkIGFzIHN0YW5kYXJkIHRpbWUuCisgICAgICovCisgICAgc3RhdGljIGZpbmFsIGludCBTVEFOREFSRF9USU1FID0gMTsKKworICAgIC8qKgorICAgICAqIENvbnN0YW50IGZvciBhIHJ1bGUgc3BlY2lmaWVkIGFzIFVUQy4gIEVVIHJ1bGVzIGFyZSBzcGVjaWZpZWQgYXMgVVRDCisgICAgICogdGltZS4KKyAgICAgKi8KKyAgICBzdGF0aWMgZmluYWwgaW50IFVUQ19USU1FID0gMjsKKworICAgIC8vIFByb2NsYWltIGNvbXBhdGliaWxpdHkgd2l0aCAxLjEKKyAgICBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gLTQwMzI1MDk3MTIxNTQ2NTA1MEw7CisKKyAgICAvLyB0aGUgaW50ZXJuYWwgc2VyaWFsIHZlcnNpb24gd2hpY2ggc2F5cyB3aGljaCB2ZXJzaW9uIHdhcyB3cml0dGVuCisgICAgLy8gLSAwIChkZWZhdWx0KSBmb3IgdmVyc2lvbiB1cCB0byBKREsgMS4xLjMKKyAgICAvLyAtIDEgZm9yIHZlcnNpb24gZnJvbSBKREsgMS4xLjQsIHdoaWNoIGluY2x1ZGVzIDMgbmV3IGZpZWxkcworICAgIC8vIC0gMiBmb3IgSkRLIDEuMywgd2hpY2ggaW5jbHVkZXMgMiBuZXcgZmlsZXMKKyAgICBzdGF0aWMgZmluYWwgaW50IGN1cnJlbnRTZXJpYWxWZXJzaW9uID0gMjsKKworICAgIC8qKgorICAgICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBzZXJpYWxpemVkIGRhdGEgb24gdGhlIHN0cmVhbS4gIFBvc3NpYmxlIHZhbHVlczoKKyAgICAgKiA8ZGw+CisgICAgICogPGR0PjxiPjA8L2I+IG9yIG5vdCBwcmVzZW50IG9uIHN0cmVhbTwvZHQ+CisgICAgICogPGRkPgorICAgICAqIEpESyAxLjEuMyBvciBlYXJsaWVyLgorICAgICAqIDwvZGQ+CisgICAgICogPGR0PjxiPjE8L2I+PC9kdD4KKyAgICAgKiA8ZGQ+CisgICAgICogSkRLIDEuMS40IG9yIGxhdGVyLiAgSW5jbHVkZXMgdGhyZWUgbmV3IGZpZWxkczogPGNvZGU+c3RhcnRNb2RlPC9jb2RlPiwKKyAgICAgKiA8Y29kZT5lbmRNb2RlPC9jb2RlPiwgYW5kIDxjb2RlPmRzdFNhdmluZ3M8L2NvZGU+LgorICAgICAqIDwvZGQ+CisgICAgICogPGR0PjxiPjI8L2I+PC9kdD4KKyAgICAgKiA8ZGQ+CisgICAgICogSkRLIDEuMyBvciBsYXRlci4gIEluY2x1ZGVzIHR3byBuZXcgZmllbGRzOiA8Y29kZT5zdGFydFRpbWVNb2RlPC9jb2RlPgorICAgICAqIGFuZCA8Y29kZT5lbmRUaW1lTW9kZTwvY29kZT4uCisgICAgICogPC9kZD4KKyAgICAgKiA8L2RsPgorICAgICAqIFdoZW4gc3RyZWFtaW5nIG91dCB0aGlzIGNsYXNzLCB0aGUgbW9zdCByZWNlbnQgZm9ybWF0CisgICAgICogYW5kIHRoZSBoaWdoZXN0IGFsbG93YWJsZSA8Y29kZT5zZXJpYWxWZXJzaW9uT25TdHJlYW08L2NvZGU+CisgICAgICogaXMgd3JpdHRlbi4KKyAgICAgKiBAc2VyaWFsCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgc2VyaWFsVmVyc2lvbk9uU3RyZWFtID0gY3VycmVudFNlcmlhbFZlcnNpb247CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBSdWxlIHJlcHJlc2VudGF0aW9uCisgICAgLy8KKyAgICAvLyBXZSByZXByZXNlbnQgdGhlIGZvbGxvd2luZyBmbGF2b3JzIG9mIHJ1bGVzOgorICAgIC8vICAgICAgIDUgICAgICAgIHRoZSBmaWZ0aCBvZiB0aGUgbW9udGgKKyAgICAvLyAgICAgICBsYXN0U3VuICB0aGUgbGFzdCBTdW5kYXkgaW4gdGhlIG1vbnRoCisgICAgLy8gICAgICAgbGFzdE1vbiAgdGhlIGxhc3QgTW9uZGF5IGluIHRoZSBtb250aAorICAgIC8vICAgICAgIFN1bj49OCAgIGZpcnN0IFN1bmRheSBvbiBvciBhZnRlciB0aGUgZWlnaHRoCisgICAgLy8gICAgICAgU3VuPD0yNSAgbGFzdCBTdW5kYXkgb24gb3IgYmVmb3JlIHRoZSAyNXRoCisgICAgLy8gVGhpcyBpcyBmdXJ0aGVyIGNvbXBsaWNhdGVkIGJ5IHRoZSBmYWN0IHRoYXQgd2UgbmVlZCB0byByZW1haW4KKyAgICAvLyBiYWNrd2FyZCBjb21wYXRpYmxlIHdpdGggdGhlIDEuMSBGQ1MuICBGaW5hbGx5LCB3ZSBuZWVkIHRvIG1pbmltaXplCisgICAgLy8gQVBJIGNoYW5nZXMuICBJbiBvcmRlciB0byBzYXRpc2Z5IHRoZXNlIHJlcXVpcmVtZW50cywgd2Ugc3VwcG9ydAorICAgIC8vIHRocmVlIHJlcHJlc2VudGF0aW9uIHN5c3RlbXMsIGFuZCB3ZSB0cmFuc2xhdGUgYmV0d2VlbiB0aGVtLgorICAgIC8vCisgICAgLy8gSU5URVJOQUwgUkVQUkVTRU5UQVRJT04KKyAgICAvLyBUaGlzIGlzIHRoZSBmb3JtYXQgU2ltcGxlVGltZVpvbmUgb2JqZWN0cyB0YWtlIGFmdGVyIGNvbnN0cnVjdGlvbiBvcgorICAgIC8vIHN0cmVhbWluZyBpbiBpcyBjb21wbGV0ZS4gIFJ1bGVzIGFyZSByZXByZXNlbnRlZCBkaXJlY3RseSwgdXNpbmcgYW4KKyAgICAvLyB1bmVuY29kZWQgZm9ybWF0LiAgV2Ugd2lsbCBkaXNjdXNzIHRoZSBzdGFydCBydWxlIG9ubHkgYmVsb3c7IHRoZSBlbmQKKyAgICAvLyBydWxlIGlzIGFuYWxvZ291cy4KKyAgICAvLyAgIHN0YXJ0TW9kZSAgICAgIFRha2VzIG9uIGVudW1lcmF0ZWQgdmFsdWVzIERBWV9PRl9NT05USCwKKyAgICAvLyAgICAgICAgICAgICAgICAgIERPV19JTl9NT05USCwgRE9XX0FGVEVSX0RPTSwgb3IgRE9XX0JFRk9SRV9ET00uCisgICAgLy8gICBzdGFydERheSAgICAgICBUaGUgZGF5IG9mIHRoZSBtb250aCwgb3IgZm9yIERPV19JTl9NT05USCBtb2RlLCBhCisgICAgLy8gICAgICAgICAgICAgICAgICB2YWx1ZSBpbmRpY2F0aW5nIHdoaWNoIERPVywgc3VjaCBhcyArMSBmb3IgZmlyc3QsCisgICAgLy8gICAgICAgICAgICAgICAgICArMiBmb3Igc2Vjb25kLCAtMSBmb3IgbGFzdCwgZXRjLgorICAgIC8vICAgc3RhcnREYXlPZldlZWsgVGhlIGRheSBvZiB0aGUgd2Vlay4gIElnbm9yZWQgZm9yIERBWV9PRl9NT05USC4KKyAgICAvLworICAgIC8vIEVOQ09ERUQgUkVQUkVTRU5UQVRJT04KKyAgICAvLyBUaGlzIGlzIHRoZSBmb3JtYXQgYWNjZXB0ZWQgYnkgdGhlIGNvbnN0cnVjdG9yIGFuZCBieSBzZXRTdGFydFJ1bGUoKQorICAgIC8vIGFuZCBzZXRFbmRSdWxlKCkuICBJdCB1c2VzIHZhcmlvdXMgY29tYmluYXRpb25zIG9mIHBvc2l0aXZlLCBuZWdhdGl2ZSwKKyAgICAvLyBhbmQgemVybyB2YWx1ZXMgdG8gZW5jb2RlIHRoZSBkaWZmZXJlbnQgcnVsZXMuICBUaGlzIHJlcHJlc2VudGF0aW9uCisgICAgLy8gYWxsb3dzIHVzIHRvIHNwZWNpZnkgYWxsIHRoZSBkaWZmZXJlbnQgcnVsZSBmbGF2b3JzIHdpdGhvdXQgYWx0ZXJpbmcKKyAgICAvLyB0aGUgQVBJLgorICAgIC8vICAgTU9ERSAgICAgICAgICAgICAgc3RhcnRNb250aCAgICBzdGFydERheSAgICBzdGFydERheU9mV2VlaworICAgIC8vICAgRE9XX0lOX01PTlRIX01PREUgPj0wICAgICAgICAgICAhPTAgICAgICAgICA+MAorICAgIC8vICAgRE9NX01PREUgICAgICAgICAgPj0wICAgICAgICAgICA+MCAgICAgICAgICA9PTAKKyAgICAvLyAgIERPV19HRV9ET01fTU9ERSAgID49MCAgICAgICAgICAgPjAgICAgICAgICAgPDAKKyAgICAvLyAgIERPV19MRV9ET01fTU9ERSAgID49MCAgICAgICAgICAgPDAgICAgICAgICAgPDAKKyAgICAvLyAgIChubyBEU1QpICAgICAgICAgIGRvbid0IGNhcmUgICAgPT0wICAgICAgICAgZG9uJ3QgY2FyZQorICAgIC8vCisgICAgLy8gU1RSRUFNRUQgUkVQUkVTRU5UQVRJT04KKyAgICAvLyBXZSBtdXN0IHJldGFpbiBiaW5hcnkgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSAxLjEgRkNTLiAgVGhlIDEuMSBjb2RlIG9ubHkKKyAgICAvLyBoYW5kbGVzIERPV19JTl9NT05USF9NT0RFIGFuZCBub24tRFNUIG1vZGUsIHRoZSBsYXR0ZXIgaW5kaWNhdGVkIGJ5IHRoZQorICAgIC8vIGZsYWcgdXNlRGF5bGlnaHQuICBXaGVuIHdlIHN0cmVhbSBhbiBvYmplY3Qgb3V0LCB3ZSB0cmFuc2xhdGUgaW50byBhbgorICAgIC8vIGFwcHJveGltYXRlIERPV19JTl9NT05USF9NT0RFIHJlcHJlc2VudGF0aW9uIHNvIHRoZSBvYmplY3QgY2FuIGJlIHBhcnNlZAorICAgIC8vIGFuZCB1c2VkIGJ5IDEuMSBjb2RlLiAgRm9sbG93aW5nIHRoYXQsIHdlIHdyaXRlIG91dCB0aGUgZnVsbAorICAgIC8vIHJlcHJlc2VudGF0aW9uIHNlcGFyYXRlbHkgc28gdGhhdCBjb250ZW1wb3JhcnkgY29kZSBjYW4gcmVjb2duaXplIGFuZAorICAgIC8vIHBhcnNlIGl0LiAgVGhlIGZ1bGwgcmVwcmVzZW50YXRpb24gaXMgd3JpdHRlbiBpbiBhICJwYWNrZWQiIGZvcm1hdCwKKyAgICAvLyBjb25zaXN0aW5nIG9mIGEgdmVyc2lvbiBudW1iZXIsIGEgbGVuZ3RoLCBhbmQgYW4gYXJyYXkgb2YgYnl0ZXMuICBGdXR1cmUKKyAgICAvLyB2ZXJzaW9ucyBvZiB0aGlzIGNsYXNzIG1heSBzcGVjaWZ5IGRpZmZlcmVudCB2ZXJzaW9ucy4gIElmIHRoZXkgd2lzaCB0bworICAgIC8vIGluY2x1ZGUgYWRkaXRpb25hbCBkYXRhLCB0aGV5IHNob3VsZCBkbyBzbyBieSBzdG9yaW5nIHRoZW0gYWZ0ZXIgdGhlCisgICAgLy8gcGFja2VkIHJlcHJlc2VudGF0aW9uIGJlbG93LgorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogR2l2ZW4gYSBzZXQgb2YgZW5jb2RlZCBydWxlcyBpbiBzdGFydERheSBhbmQgc3RhcnREYXlPZk1vbnRoLCBkZWNvZGUKKyAgICAgKiB0aGVtIGFuZCBzZXQgdGhlIHN0YXJ0TW9kZSBhcHByb3ByaWF0ZWx5LiAgRG8gdGhlIHNhbWUgZm9yIGVuZERheSBhbmQKKyAgICAgKiBlbmREYXlPZk1vbnRoLiAgVXBvbiBlbnRyeSwgdGhlIGRheSBvZiB3ZWVrIHZhcmlhYmxlcyBtYXkgYmUgemVybyBvcgorICAgICAqIG5lZ2F0aXZlLCBpbiBvcmRlciB0byBpbmRpY2F0ZSBzcGVjaWFsIG1vZGVzLiAgVGhlIGRheSBvZiBtb250aAorICAgICAqIHZhcmlhYmxlcyBtYXkgYWxzbyBiZSBuZWdhdGl2ZS4gIFVwb24gZXhpdCwgdGhlIG1vZGUgdmFyaWFibGVzIHdpbGwgYmUKKyAgICAgKiBzZXQsIGFuZCB0aGUgZGF5IG9mIHdlZWsgYW5kIGRheSBvZiBtb250aCB2YXJpYWJsZXMgd2lsbCBiZSBwb3NpdGl2ZS4KKyAgICAgKiBUaGlzIG1ldGhvZCBhbHNvIHJlY29nbml6ZXMgYSBzdGFydERheSBvciBlbmREYXkgb2YgemVybyBhcyBpbmRpY2F0aW5nCisgICAgICogbm8gRFNULgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBkZWNvZGVSdWxlcygpCisgICAgeworICAgICAgICBkZWNvZGVTdGFydFJ1bGUoKTsKKyAgICAgICAgZGVjb2RlRW5kUnVsZSgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIERlY29kZSB0aGUgc3RhcnQgcnVsZSBhbmQgdmFsaWRhdGUgdGhlIHBhcmFtZXRlcnMuICBUaGUgcGFyYW1ldGVycyBhcmUKKyAgICAgKiBleHBlY3RlZCB0byBiZSBpbiBlbmNvZGVkIGZvcm0sIHdoaWNoIHJlcHJlc2VudHMgdGhlIHZhcmlvdXMgcnVsZSBtb2RlcworICAgICAqIGJ5IG5lZ2F0aW5nIG9yIHplcm9pbmcgY2VydGFpbiB2YWx1ZXMuICBSZXByZXNlbnRhdGlvbiBmb3JtYXRzIGFyZToKKyAgICAgKiA8cD4KKyAgICAgKiA8cHJlPgorICAgICAqICAgICAgICAgICAgRE9XX0lOX01PTlRIICBET00gICAgRE9XPj1ET00gIERPVzw9RE9NICBubyBEU1QKKyAgICAgKiAgICAgICAgICAgIC0tLS0tLS0tLS0tLSAgLS0tLS0gIC0tLS0tLS0tICAtLS0tLS0tLSAgLS0tLS0tLS0tLQorICAgICAqIG1vbnRoICAgICAgIDAuLjExICAgICAgICBzYW1lICAgIHNhbWUgICAgICBzYW1lICAgICBkb24ndCBjYXJlCisgICAgICogZGF5ICAgICAgICAtNS4uNSAgICAgICAgIDEuLjMxICAgMS4uMzEgICAgLTEuLi0zMSAgIDAKKyAgICAgKiBkYXlPZldlZWsgICAxLi43ICAgICAgICAgMCAgICAgIC0xLi4tNyAgICAtMS4uLTcgICAgZG9uJ3QgY2FyZQorICAgICAqIHRpbWUgICAgICAgIDAuLk9ORURBWSAgICBzYW1lICAgIHNhbWUgICAgICBzYW1lICAgICBkb24ndCBjYXJlCisgICAgICogPC9wcmU+CisgICAgICogVGhlIHJhbmdlIGZvciBtb250aCBkb2VzIG5vdCBpbmNsdWRlIFVOREVDSU1CRVIgc2luY2UgdGhpcyBjbGFzcyBpcworICAgICAqIHJlYWxseSBzcGVjaWZpYyB0byBHcmVnb3JpYW5DYWxlbmRhciwgd2hpY2ggZG9lcyBub3QgdXNlIHRoYXQgbW9udGguCisgICAgICogVGhlIHJhbmdlIGZvciB0aW1lIGluY2x1ZGVzIE9ORURBWSAodnMuIGVuZGluZyBhdCBPTkVEQVktMSkgYmVjYXVzZSB0aGUKKyAgICAgKiBlbmQgcnVsZSBpcyBhbiBleGNsdXNpdmUgbGltaXQgcG9pbnQuICBUaGF0IGlzLCB0aGUgcmFuZ2Ugb2YgdGltZXMgdGhhdAorICAgICAqIGFyZSBpbiBEU1QgaW5jbHVkZSB0aG9zZSA+PSB0aGUgc3RhcnQgYW5kIDwgdGhlIGVuZC4gIEZvciB0aGlzIHJlYXNvbiwKKyAgICAgKiBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8gc3BlY2lmeSBhbiBlbmQgb2YgT05FREFZIGluIG9yZGVyIHRvIGluY2x1ZGUgdGhlCisgICAgICogZW50aXJlIGRheS4gIEFsdGhvdWdoIHRoaXMgaXMgZXF1aXZhbGVudCB0byB0aW1lIDAgb2YgdGhlIGZvbGxvd2luZyBkYXksCisgICAgICogaXQncyBub3QgYWx3YXlzIHBvc3NpYmxlIHRvIHNwZWNpZnkgdGhhdCwgZm9yIGV4YW1wbGUsIG9uIERlY2VtYmVyIDMxLgorICAgICAqIFdoaWxlIGFyZ3VhYmx5IHRoZSBzdGFydCByYW5nZSBzaG91bGQgc3RpbGwgYmUgMC4uT05FREFZLTEsIHdlIGtlZXAKKyAgICAgKiB0aGUgc3RhcnQgYW5kIGVuZCByYW5nZXMgdGhlIHNhbWUgZm9yIGNvbnNpc3RlbmN5LgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBkZWNvZGVTdGFydFJ1bGUoKSB7CisgICAgICAgIHVzZURheWxpZ2h0ID0gKHN0YXJ0RGF5ICE9IDApICYmIChlbmREYXkgIT0gMCk7CisgICAgICAgIGlmIChzdGFydERheSAhPSAwKSB7CisgICAgICAgICAgICBpZiAoc3RhcnRNb250aCA8IENhbGVuZGFyLkpBTlVBUlkgfHwgc3RhcnRNb250aCA+IENhbGVuZGFyLkRFQ0VNQkVSKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICJJbGxlZ2FsIHN0YXJ0IG1vbnRoICIgKyBzdGFydE1vbnRoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzdGFydFRpbWUgPCAwIHx8IHN0YXJ0VGltZSA+PSBtaWxsaXNQZXJEYXkpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgIklsbGVnYWwgc3RhcnQgdGltZSAiICsgc3RhcnRUaW1lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzdGFydERheU9mV2VlayA9PSAwKSB7CisgICAgICAgICAgICAgICAgc3RhcnRNb2RlID0gRE9NX01PREU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChzdGFydERheU9mV2VlayA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhcnRNb2RlID0gRE9XX0lOX01PTlRIX01PREU7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhcnREYXlPZldlZWsgPSAtc3RhcnREYXlPZldlZWs7CisgICAgICAgICAgICAgICAgICAgIGlmIChzdGFydERheSA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0TW9kZSA9IERPV19HRV9ET01fTU9ERTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0RGF5ID0gLXN0YXJ0RGF5OworICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRNb2RlID0gRE9XX0xFX0RPTV9NT0RFOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChzdGFydERheU9mV2VlayA+IENhbGVuZGFyLlNBVFVSREFZKSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiSWxsZWdhbCBzdGFydCBkYXkgb2Ygd2VlayAiICsgc3RhcnREYXlPZldlZWspOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzdGFydE1vZGUgPT0gRE9XX0lOX01PTlRIX01PREUpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3RhcnREYXkgPCAtNSB8fCBzdGFydERheSA+IDUpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSWxsZWdhbCBzdGFydCBkYXkgb2Ygd2VlayBpbiBtb250aCAiICsgc3RhcnREYXkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhcnREYXkgPCAxIHx8IHN0YXJ0RGF5ID4gc3RhdGljTW9udGhMZW5ndGhbc3RhcnRNb250aF0pIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgIklsbGVnYWwgc3RhcnQgZGF5ICIgKyBzdGFydERheSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEZWNvZGUgdGhlIGVuZCBydWxlIGFuZCB2YWxpZGF0ZSB0aGUgcGFyYW1ldGVycy4gIFRoaXMgbWV0aG9kIGlzIGV4YWN0bHkKKyAgICAgKiBhbmFsb2dvdXMgdG8gZGVjb2RlU3RhcnRSdWxlKCkuCisgICAgICogQHNlZSBkZWNvZGVTdGFydFJ1bGUKKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgZGVjb2RlRW5kUnVsZSgpIHsKKyAgICAgICAgdXNlRGF5bGlnaHQgPSAoc3RhcnREYXkgIT0gMCkgJiYgKGVuZERheSAhPSAwKTsKKyAgICAgICAgaWYgKGVuZERheSAhPSAwKSB7CisgICAgICAgICAgICBpZiAoZW5kTW9udGggPCBDYWxlbmRhci5KQU5VQVJZIHx8IGVuZE1vbnRoID4gQ2FsZW5kYXIuREVDRU1CRVIpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgIklsbGVnYWwgZW5kIG1vbnRoICIgKyBlbmRNb250aCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZW5kVGltZSA8IDAgfHwgZW5kVGltZSA+PSBtaWxsaXNQZXJEYXkpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgIklsbGVnYWwgZW5kIHRpbWUgIiArIGVuZFRpbWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGVuZERheU9mV2VlayA9PSAwKSB7CisgICAgICAgICAgICAgICAgZW5kTW9kZSA9IERPTV9NT0RFOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoZW5kRGF5T2ZXZWVrID4gMCkgeworICAgICAgICAgICAgICAgICAgICBlbmRNb2RlID0gRE9XX0lOX01PTlRIX01PREU7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZW5kRGF5T2ZXZWVrID0gLWVuZERheU9mV2VlazsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGVuZERheSA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuZE1vZGUgPSBET1dfR0VfRE9NX01PREU7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlbmREYXkgPSAtZW5kRGF5OworICAgICAgICAgICAgICAgICAgICAgICAgZW5kTW9kZSA9IERPV19MRV9ET01fTU9ERTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoZW5kRGF5T2ZXZWVrID4gQ2FsZW5kYXIuU0FUVVJEQVkpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbGxlZ2FsIGVuZCBkYXkgb2Ygd2VlayAiICsgZW5kRGF5T2ZXZWVrKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZW5kTW9kZSA9PSBET1dfSU5fTU9OVEhfTU9ERSkgeworICAgICAgICAgICAgICAgIGlmIChlbmREYXkgPCAtNSB8fCBlbmREYXkgPiA1KSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIklsbGVnYWwgZW5kIGRheSBvZiB3ZWVrIGluIG1vbnRoICIgKyBlbmREYXkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZW5kRGF5IDwgMSB8fCBlbmREYXkgPiBzdGF0aWNNb250aExlbmd0aFtlbmRNb250aF0pIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgIklsbGVnYWwgZW5kIGRheSAiICsgZW5kRGF5KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIE1ha2UgcnVsZXMgY29tcGF0aWJsZSB0byAxLjEgRkNTIGNvZGUuICBTaW5jZSAxLjEgRkNTIGNvZGUgb25seSB1bmRlcnN0YW5kcworICAgICAqIGRheS1vZi13ZWVrLWluLW1vbnRoIHJ1bGVzLCB3ZSBtdXN0IG1vZGlmeSBvdGhlciBtb2RlcyBvZiBydWxlcyB0byB0aGVpcgorICAgICAqIGFwcHJveGltYXRlIGVxdWl2YWxlbnQgaW4gMS4xIEZDUyB0ZXJtcy4gIFRoaXMgbWV0aG9kIGlzIHVzZWQgd2hlbiBzdHJlYW1pbmcKKyAgICAgKiBvdXQgb2JqZWN0cyBvZiB0aGlzIGNsYXNzLiAgQWZ0ZXIgaXQgaXMgY2FsbGVkLCB0aGUgcnVsZXMgd2lsbCBiZSBtb2RpZmllZCwKKyAgICAgKiB3aXRoIGEgcG9zc2libGUgbG9zcyBvZiBpbmZvcm1hdGlvbi4gIHN0YXJ0TW9kZSBhbmQgZW5kTW9kZSB3aWxsIE5PVCBiZQorICAgICAqIGFsdGVyZWQsIGV2ZW4gdGhvdWdoIHNlbWFudGljYWxseSB0aGV5IHNob3VsZCBiZSBzZXQgdG8gRE9XX0lOX01PTlRIX01PREUsCisgICAgICogc2luY2UgdGhlIHJ1bGUgbW9kaWZpY2F0aW9uIGlzIG9ubHkgaW50ZW5kZWQgdG8gYmUgdGVtcG9yYXJ5LgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBtYWtlUnVsZXNDb21wYXRpYmxlKCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAoc3RhcnRNb2RlKQorICAgICAgICB7CisgICAgICAgIGNhc2UgRE9NX01PREU6CisgICAgICAgICAgICBzdGFydERheSA9IDEgKyAoc3RhcnREYXkgLyA3KTsKKyAgICAgICAgICAgIHN0YXJ0RGF5T2ZXZWVrID0gQ2FsZW5kYXIuU1VOREFZOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRE9XX0dFX0RPTV9NT0RFOgorICAgICAgICAgICAgLy8gQSBkYXktb2YtbW9udGggb2YgMSBpcyBlcXVpdmFsZW50IHRvIERPV19JTl9NT05USF9NT0RFCisgICAgICAgICAgICAvLyB0aGF0IGlzLCBTdW4+PTEgPT0gZmlyc3RTdW4uCisgICAgICAgICAgICBpZiAoc3RhcnREYXkgIT0gMSkKKyAgICAgICAgICAgICAgICBzdGFydERheSA9IDEgKyAoc3RhcnREYXkgLyA3KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERPV19MRV9ET01fTU9ERToKKyAgICAgICAgICAgIGlmIChzdGFydERheSA+PSAzMCkKKyAgICAgICAgICAgICAgICBzdGFydERheSA9IC0xOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHN0YXJ0RGF5ID0gMSArIChzdGFydERheSAvIDcpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBzd2l0Y2ggKGVuZE1vZGUpCisgICAgICAgIHsKKyAgICAgICAgY2FzZSBET01fTU9ERToKKyAgICAgICAgICAgIGVuZERheSA9IDEgKyAoZW5kRGF5IC8gNyk7CisgICAgICAgICAgICBlbmREYXlPZldlZWsgPSBDYWxlbmRhci5TVU5EQVk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBET1dfR0VfRE9NX01PREU6CisgICAgICAgICAgICAvLyBBIGRheS1vZi1tb250aCBvZiAxIGlzIGVxdWl2YWxlbnQgdG8gRE9XX0lOX01PTlRIX01PREUKKyAgICAgICAgICAgIC8vIHRoYXQgaXMsIFN1bj49MSA9PSBmaXJzdFN1bi4KKyAgICAgICAgICAgIGlmIChlbmREYXkgIT0gMSkKKyAgICAgICAgICAgICAgICBlbmREYXkgPSAxICsgKGVuZERheSAvIDcpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRE9XX0xFX0RPTV9NT0RFOgorICAgICAgICAgICAgaWYgKGVuZERheSA+PSAzMCkKKyAgICAgICAgICAgICAgICBlbmREYXkgPSAtMTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBlbmREYXkgPSAxICsgKGVuZERheSAvIDcpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICAvKiBBZGp1c3QgdGhlIHN0YXJ0IGFuZCBlbmQgdGltZXMgdG8gd2FsbCB0aW1lLiAgVGhpcyB3b3JrcyBwZXJmZWN0bHkKKyAgICAgICAgICogd2VsbCB1bmxlc3MgaXQgcHVzaGVzIGludG8gdGhlIG5leHQgb3IgcHJldmlvdXMgZGF5LiAgSWYgdGhhdAorICAgICAgICAgKiBoYXBwZW5zLCB3ZSBhdHRlbXB0IHRvIGFkanVzdCB0aGUgZGF5IHJ1bGUgc29tZXdoYXQgY3J1ZGVseS4gIFRoZSBkYXkKKyAgICAgICAgICogcnVsZXMgaGF2ZSBiZWVuIGZvcmNlZCBpbnRvIERPV19JTl9NT05USCBtb2RlIGFscmVhZHksIHNvIHdlIGNoYW5nZQorICAgICAgICAgKiB0aGUgZGF5IG9mIHdlZWsgdG8gbW92ZSBmb3J3YXJkIG9yIGJhY2sgYnkgYSBkYXkuICBJdCdzIHBvc3NpYmxlIHRvCisgICAgICAgICAqIG1ha2UgYSBtb3JlIHJlZmluZWQgYWRqdXN0bWVudCBvZiB0aGUgb3JpZ2luYWwgcnVsZXMgZmlyc3QsIGJ1dCBpbgorICAgICAgICAgKiBtb3N0IGNhc2VzIHRoaXMgZXh0cmEgZWZmb3J0IHdpbGwgZ28gdG8gd2FzdGUgb25jZSB3ZSBhZGp1c3QgdGhlIGRheQorICAgICAgICAgKiBydWxlcyBhbnl3YXkuICovCisgICAgICAgIHN3aXRjaCAoc3RhcnRUaW1lTW9kZSkgeworICAgICAgICBjYXNlIFVUQ19USU1FOgorICAgICAgICAgICAgc3RhcnRUaW1lICs9IHJhd09mZnNldDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHdoaWxlIChzdGFydFRpbWUgPCAwKSB7CisgICAgICAgICAgICBzdGFydFRpbWUgKz0gbWlsbGlzUGVyRGF5OworICAgICAgICAgICAgc3RhcnREYXlPZldlZWsgPSAxICsgKChzdGFydERheU9mV2Vlays1KSAlIDcpOyAvLyBCYWNrIDEgZGF5CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKHN0YXJ0VGltZSA+PSBtaWxsaXNQZXJEYXkpIHsKKyAgICAgICAgICAgIHN0YXJ0VGltZSAtPSBtaWxsaXNQZXJEYXk7CisgICAgICAgICAgICBzdGFydERheU9mV2VlayA9IDEgKyAoc3RhcnREYXlPZldlZWsgJSA3KTsgLy8gRm9yd2FyZCAxIGRheQorICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoIChlbmRUaW1lTW9kZSkgeworICAgICAgICBjYXNlIFVUQ19USU1FOgorICAgICAgICAgICAgZW5kVGltZSArPSByYXdPZmZzZXQgKyBkc3RTYXZpbmdzOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU1RBTkRBUkRfVElNRToKKyAgICAgICAgICAgIGVuZFRpbWUgKz0gZHN0U2F2aW5nczsKKyAgICAgICAgfQorICAgICAgICB3aGlsZSAoZW5kVGltZSA8IDApIHsKKyAgICAgICAgICAgIGVuZFRpbWUgKz0gbWlsbGlzUGVyRGF5OworICAgICAgICAgICAgZW5kRGF5T2ZXZWVrID0gMSArICgoZW5kRGF5T2ZXZWVrKzUpICUgNyk7IC8vIEJhY2sgMSBkYXkKKyAgICAgICAgfQorICAgICAgICB3aGlsZSAoZW5kVGltZSA+PSBtaWxsaXNQZXJEYXkpIHsKKyAgICAgICAgICAgIGVuZFRpbWUgLT0gbWlsbGlzUGVyRGF5OworICAgICAgICAgICAgZW5kRGF5T2ZXZWVrID0gMSArIChlbmREYXlPZldlZWsgJSA3KTsgLy8gRm9yd2FyZCAxIGRheQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUGFjayB0aGUgc3RhcnQgYW5kIGVuZCBydWxlcyBpbnRvIGFuIGFycmF5IG9mIGJ5dGVzLiAgT25seSBwYWNrCisgICAgICogZGF0YSB3aGljaCBpcyBub3QgcHJlc2VydmVkIGJ5IG1ha2VSdWxlc0NvbXBhdGlibGUuCisgICAgICovCisgICAgcHJpdmF0ZSBieXRlW10gcGFja1J1bGVzKCkKKyAgICB7CisgICAgICAgIGJ5dGVbXSBydWxlcyA9IG5ldyBieXRlWzZdOworICAgICAgICBydWxlc1swXSA9IChieXRlKXN0YXJ0RGF5OworICAgICAgICBydWxlc1sxXSA9IChieXRlKXN0YXJ0RGF5T2ZXZWVrOworICAgICAgICBydWxlc1syXSA9IChieXRlKWVuZERheTsKKyAgICAgICAgcnVsZXNbM10gPSAoYnl0ZSllbmREYXlPZldlZWs7CisKKyAgICAgICAgLy8gQXMgb2Ygc2VyaWFsIHZlcnNpb24gMiwgaW5jbHVkZSB0aW1lIG1vZGVzCisgICAgICAgIHJ1bGVzWzRdID0gKGJ5dGUpc3RhcnRUaW1lTW9kZTsKKyAgICAgICAgcnVsZXNbNV0gPSAoYnl0ZSllbmRUaW1lTW9kZTsKKworICAgICAgICByZXR1cm4gcnVsZXM7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2l2ZW4gYW4gYXJyYXkgb2YgYnl0ZXMgcHJvZHVjZWQgYnkgcGFja1J1bGVzLCBpbnRlcnByZXQgdGhlbQorICAgICAqIGFzIHRoZSBzdGFydCBhbmQgZW5kIHJ1bGVzLgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCB1bnBhY2tSdWxlcyhieXRlW10gcnVsZXMpCisgICAgeworICAgICAgICBzdGFydERheSAgICAgICA9IHJ1bGVzWzBdOworICAgICAgICBzdGFydERheU9mV2VlayA9IHJ1bGVzWzFdOworICAgICAgICBlbmREYXkgICAgICAgICA9IHJ1bGVzWzJdOworICAgICAgICBlbmREYXlPZldlZWsgICA9IHJ1bGVzWzNdOworCisgICAgICAgIC8vIEFzIG9mIHNlcmlhbCB2ZXJzaW9uIDIsIGluY2x1ZGUgdGltZSBtb2RlcworICAgICAgICBpZiAocnVsZXMubGVuZ3RoID49IDYpIHsKKyAgICAgICAgICAgIHN0YXJ0VGltZU1vZGUgPSBydWxlc1s0XTsKKyAgICAgICAgICAgIGVuZFRpbWVNb2RlICAgPSBydWxlc1s1XTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFBhY2sgdGhlIHN0YXJ0IGFuZCBlbmQgdGltZXMgaW50byBhbiBhcnJheSBvZiBieXRlcy4gIFRoaXMgaXMgcmVxdWlyZWQKKyAgICAgKiBhcyBvZiBzZXJpYWwgdmVyc2lvbiAyLgorICAgICAqLworICAgIHByaXZhdGUgaW50W10gcGFja1RpbWVzKCkgeworICAgICAgICBpbnRbXSB0aW1lcyA9IG5ldyBpbnRbMl07CisgICAgICAgIHRpbWVzWzBdID0gc3RhcnRUaW1lOworICAgICAgICB0aW1lc1sxXSA9IGVuZFRpbWU7CisgICAgICAgIHJldHVybiB0aW1lczsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBVbnBhY2sgdGhlIHN0YXJ0IGFuZCBlbmQgdGltZXMgZnJvbSBhbiBhcnJheSBvZiBieXRlcy4gIFRoaXMgaXMgcmVxdWlyZWQKKyAgICAgKiBhcyBvZiBzZXJpYWwgdmVyc2lvbiAyLgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCB1bnBhY2tUaW1lcyhpbnRbXSB0aW1lcykgeworICAgICAgICBzdGFydFRpbWUgPSB0aW1lc1swXTsKKyAgICAgICAgZW5kVGltZSA9IHRpbWVzWzFdOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNhdmUgdGhlIHN0YXRlIG9mIHRoaXMgb2JqZWN0IHRvIGEgc3RyZWFtIChpLmUuLCBzZXJpYWxpemUgaXQpLgorICAgICAqCisgICAgICogQHNlcmlhbERhdGEgV2Ugd3JpdGUgb3V0IHR3byBmb3JtYXRzLCBhIEpESyAxLjEgY29tcGF0aWJsZSBmb3JtYXQsIHVzaW5nCisgICAgICogPGNvZGU+RE9XX0lOX01PTlRIX01PREU8L2NvZGU+IHJ1bGVzLCBpbiB0aGUgcmVxdWlyZWQgc2VjdGlvbiwgZm9sbG93ZWQKKyAgICAgKiBieSB0aGUgZnVsbCBydWxlcywgaW4gcGFja2VkIGZvcm1hdCwgaW4gdGhlIG9wdGlvbmFsIHNlY3Rpb24uICBUaGUKKyAgICAgKiBvcHRpb25hbCBzZWN0aW9uIHdpbGwgYmUgaWdub3JlZCBieSBKREsgMS4xIGNvZGUgdXBvbiBzdHJlYW0gaW4uCisgICAgICogPHA+IENvbnRlbnRzIG9mIHRoZSBvcHRpb25hbCBzZWN0aW9uOiBUaGUgbGVuZ3RoIG9mIGEgYnl0ZSBhcnJheSBpcworICAgICAqIGVtaXR0ZWQgKGludCk7IHRoaXMgaXMgNCBhcyBvZiB0aGlzIHJlbGVhc2UuIFRoZSBieXRlIGFycmF5IG9mIHRoZSBnaXZlbgorICAgICAqIGxlbmd0aCBpcyBlbWl0dGVkLiBUaGUgY29udGVudHMgb2YgdGhlIGJ5dGUgYXJyYXkgYXJlIHRoZSB0cnVlIHZhbHVlcyBvZgorICAgICAqIHRoZSBmaWVsZHMgPGNvZGU+c3RhcnREYXk8L2NvZGU+LCA8Y29kZT5zdGFydERheU9mV2VlazwvY29kZT4sCisgICAgICogPGNvZGU+ZW5kRGF5PC9jb2RlPiwgYW5kIDxjb2RlPmVuZERheU9mV2VlazwvY29kZT4uICBUaGUgdmFsdWVzIG9mIHRoZXNlCisgICAgICogZmllbGRzIGluIHRoZSByZXF1aXJlZCBzZWN0aW9uIGFyZSBhcHByb3hpbWF0ZSB2YWx1ZXMgc3VpdGVkIHRvIHRoZSBydWxlCisgICAgICogbW9kZSA8Y29kZT5ET1dfSU5fTU9OVEhfTU9ERTwvY29kZT4sIHdoaWNoIGlzIHRoZSBvbmx5IG1vZGUgcmVjb2duaXplZCBieQorICAgICAqIEpESyAxLjEuCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIHdyaXRlT2JqZWN0KE9iamVjdE91dHB1dFN0cmVhbSBzdHJlYW0pCisgICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICB7CisgICAgICAgIC8vIENvbnN0cnVjdCBhIGJpbmFyeSBydWxlCisgICAgICAgIGJ5dGVbXSBydWxlcyA9IHBhY2tSdWxlcygpOworICAgICAgICBpbnRbXSB0aW1lcyA9IHBhY2tUaW1lcygpOworCisgICAgICAgIC8vIENvbnZlcnQgdG8gMS4xIEZDUyBydWxlcy4gIFRoaXMgc3RlcCBtYXkgY2F1c2UgdXMgdG8gbG9zZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgbWFrZVJ1bGVzQ29tcGF0aWJsZSgpOworCisgICAgICAgIC8vIFdyaXRlIG91dCB0aGUgMS4xIEZDUyBydWxlcworICAgICAgICBzdHJlYW0uZGVmYXVsdFdyaXRlT2JqZWN0KCk7CisKKyAgICAgICAgLy8gV3JpdGUgb3V0IHRoZSBiaW5hcnkgcnVsZXMgaW4gdGhlIG9wdGlvbmFsIGRhdGEgYXJlYSBvZiB0aGUgc3RyZWFtLgorICAgICAgICBzdHJlYW0ud3JpdGVJbnQocnVsZXMubGVuZ3RoKTsKKyAgICAgICAgc3RyZWFtLndyaXRlKHJ1bGVzKTsKKyAgICAgICAgc3RyZWFtLndyaXRlT2JqZWN0KHRpbWVzKTsKKworICAgICAgICAvLyBSZWNvdmVyIHRoZSBvcmlnaW5hbCBydWxlcy4gIFRoaXMgcmVjb3ZlcnMgdGhlIGluZm9ybWF0aW9uIGxvc3QKKyAgICAgICAgLy8gYnkgbWFrZVJ1bGVzQ29tcGF0aWJsZS4KKyAgICAgICAgdW5wYWNrUnVsZXMocnVsZXMpOworICAgICAgICB1bnBhY2tUaW1lcyh0aW1lcyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVjb25zdGl0dXRlIHRoaXMgb2JqZWN0IGZyb20gYSBzdHJlYW0gKGkuZS4sIGRlc2VyaWFsaXplIGl0KS4KKyAgICAgKgorICAgICAqIFdlIGhhbmRsZSBib3RoIEpESyAxLjEKKyAgICAgKiBiaW5hcnkgZm9ybWF0cyBhbmQgZnVsbCBmb3JtYXRzIHdpdGggYSBwYWNrZWQgYnl0ZSBhcnJheS4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgcmVhZE9iamVjdChPYmplY3RJbnB1dFN0cmVhbSBzdHJlYW0pCisgICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24sIENsYXNzTm90Rm91bmRFeGNlcHRpb24KKyAgICB7CisgICAgICAgIHN0cmVhbS5kZWZhdWx0UmVhZE9iamVjdCgpOworCisgICAgICAgIGlmIChzZXJpYWxWZXJzaW9uT25TdHJlYW0gPCAxKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBGaXggYSBidWcgaW4gdGhlIDEuMSBTaW1wbGVUaW1lWm9uZSBjb2RlIC0tIG5hbWVseSwKKyAgICAgICAgICAgIC8vIHN0YXJ0RGF5T2ZXZWVrIGFuZCBlbmREYXlPZldlZWsgd2VyZSB1c3VhbGx5IHVuaW5pdGlhbGl6ZWQuICBXZSBjYW4ndCBkbworICAgICAgICAgICAgLy8gdG9vIG11Y2gsIHNvIHdlIGFzc3VtZSBTVU5EQVksIHdoaWNoIGFjdHVhbGx5IHdvcmtzIG1vc3Qgb2YgdGhlIHRpbWUuCisgICAgICAgICAgICBpZiAoc3RhcnREYXlPZldlZWsgPT0gMCkgc3RhcnREYXlPZldlZWsgPSBDYWxlbmRhci5TVU5EQVk7CisgICAgICAgICAgICBpZiAoZW5kRGF5T2ZXZWVrID09IDApIGVuZERheU9mV2VlayA9IENhbGVuZGFyLlNVTkRBWTsKKworICAgICAgICAgICAgLy8gVGhlIHZhcmlhYmxlcyBkc3RTYXZpbmdzLCBzdGFydE1vZGUsIGFuZCBlbmRNb2RlIGFyZSBwb3N0LTEuMSwgc28gdGhleQorICAgICAgICAgICAgLy8gd29uJ3QgYmUgcHJlc2VudCBpZiB3ZSdyZSByZWFkaW5nIGZyb20gYSAxLjEgc3RyZWFtLiAgRml4IHRoZW0gdXAuCisgICAgICAgICAgICBzdGFydE1vZGUgPSBlbmRNb2RlID0gRE9XX0lOX01PTlRIX01PREU7CisgICAgICAgICAgICBkc3RTYXZpbmdzID0gbWlsbGlzUGVySG91cjsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIEZvciAxLjEuNCwgaW4gYWRkaXRpb24gdG8gdGhlIDMgbmV3IGluc3RhbmNlIHZhcmlhYmxlcywgd2UgYWxzbworICAgICAgICAgICAgLy8gc3RvcmUgdGhlIGFjdHVhbCBydWxlcyAod2hpY2ggaGF2ZSBub3QgYmUgbWFkZSBjb21wYXRpYmxlIHdpdGggMS4xKQorICAgICAgICAgICAgLy8gaW4gdGhlIG9wdGlvbmFsIGFyZWEuICBSZWFkIHRoZW0gaW4gaGVyZSBhbmQgcGFyc2UgdGhlbS4KKyAgICAgICAgICAgIGludCBsZW5ndGggPSBzdHJlYW0ucmVhZEludCgpOworICAgICAgICAgICAgYnl0ZVtdIHJ1bGVzID0gbmV3IGJ5dGVbbGVuZ3RoXTsKKyAgICAgICAgICAgIHN0cmVhbS5yZWFkRnVsbHkocnVsZXMpOworICAgICAgICAgICAgdW5wYWNrUnVsZXMocnVsZXMpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHNlcmlhbFZlcnNpb25PblN0cmVhbSA+PSAyKSB7CisgICAgICAgICAgICBpbnRbXSB0aW1lcyA9IChpbnRbXSkgc3RyZWFtLnJlYWRPYmplY3QoKTsKKyAgICAgICAgICAgIHVucGFja1RpbWVzKHRpbWVzKTsKKyAgICAgICAgfQorCisgICAgICAgIHNlcmlhbFZlcnNpb25PblN0cmVhbSA9IGN1cnJlbnRTZXJpYWxWZXJzaW9uOworICAgIH0KK30KKworLy9lb2YKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS91dGlsL1NpbXBsZVRpbWVab25lQWRhcHRlci5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L3V0aWwvU2ltcGxlVGltZVpvbmVBZGFwdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNmI3Y2FlYwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS91dGlsL1NpbXBsZVRpbWVab25lQWRhcHRlci5qYXZhCkBAIC0wLDAgKzEsMTc0IEBACisvKiBDb3B5cmlnaHQgKGMpIDIwMDAgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvdXRpbC9BdHRpYy9TaW1wbGVUaW1lWm9uZUFkYXB0ZXIuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMi8xMi8wNSAwMToyNTo0OSAkIAorICogJFJldmlzaW9uOiAxLjQgJAorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LnV0aWw7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CisKKy8qKgorICogPGNvZGU+U2ltcGxlVGltZVpvbmVBZGFwdGVyPC9jb2RlPiB3cmFwcyBhCisgKiBjb20uaWJtLmljdS51dGlsLlNpbXBsZVRpbWVab25lIGFuZCBpbmhlcml0cyBmcm9tIGphdmEudXRpbC5UaW1lWm9uZS4KKyAqIFdpdGhvdXQgdGhpcyBjbGFzcywgd2Ugd291bGQgbmVlZCB0byAncG9ydCcgamF2YS51dGlsLkRhdGUgdG8KKyAqIGNvbS5pYm0uaWN1LnV0aWwgYXMgd2VsbCwgc28gdGhhdCBEYXRlIGNvdWxkIGludGVyb3BlcmF0ZSBwcm9wZXJseSB3aXRoCisgKiB0aGUgY29tLmlibS5pY3UudXRpbCBUaW1lWm9uZSBhbmQgQ2FsZW5kYXIgY2xhc3Nlcy4gIFdpdGggdGhpcyBjbGFzcywKKyAqIHdlIGNhbiAobW9zdGx5KSB1c2UgamF2YS51dGlsLkRhdGUgdG9nZXRoZXIgd2l0aCBjb20uaWJtLmljdS51dGlsCisgKiBjbGFzc2VzLgorICoKKyAqIDxwPlRoaXMgc29sdXRpb24gaXMgaW1wZXJmZWN0IGJlY2F1c2Ugb2YgdGhlIGZhdWx0eSBkZXNpZ24gb2YKKyAqIGphdmEudXRpbC5UaW1lWm9uZS4gIFNwZWNpZmljYWxseSwgVFogY29udGFpbnMgYSBwYWNrYWdlIHByaXZhdGUKKyAqIG1ldGhvZCwgZ2V0T2Zmc2V0KCksIHRoYXQgc2hvdWxkIHJlYWxseSBiZSBwdWJsaWMuICBCZWNhdXNlIGl0IGlzCisgKiBwYWNrYWdlIHByaXZhdGUsIGl0IGNhbm5vdCBiZSBvdmVycmlkZGVuIGZyb20gd2hlcmUgd2UgYXJlLCBhbmQgd2UKKyAqIGNhbm5vdCBwcm9wZXJseSBkZWxlZ2F0ZSBpdHMgb3BlcmF0aW9uIHRvIG91ciBjb250YWluZWQKKyAqIGNvbS5pYm0uaWN1LnV0aWwuU1RaIG9iamVjdC4KKyAqCisgKiA8cD5Gb3IgdGhlIG1vbWVudCB3ZSBsaXZlIHdpdGggdGhpcyBwcm9ibGVtLiAgSXQgYXBwZWFyIG5vdCB0bworICogY2F1c2UgdG9vIG11Y2ggdHJvdWJsZSBzaW5jZSBtb3N0IHJlYWwgY29tcHV0YXRpb25zIGhhcHBlbiB1c2luZworICogdGhlIGNvbS5pYm0uaWN1LnV0aWwgY2xhc3Nlcy4gIEhvd2V2ZXIsIGlmIHRoaXMgYmVjb21lcyBhIHByb2JsZW0gaW4KKyAqIHRoZSBmdXR1cmUsIHdlIHdpbGwgaGF2ZSB0byBzdG9wIHVzaW5nIHRoaXMgYWRhcHRlciwgYW5kICdwb3J0JworICogamF2YS51dGlsLkRhdGUgaW50byBjb20uaWJtLmljdS51dGlsLgorICoKKyAqIEBzZWUgY29tLmlibS5pY3UudXRpbC5UaW1lWm9uZSNzZXREZWZhdWx0CisgKiBAYXV0aG9yIEFsYW4gTGl1CisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworcHVibGljIGNsYXNzIFNpbXBsZVRpbWVab25lQWRhcHRlciBleHRlbmRzIGphdmEudXRpbC5UaW1lWm9uZSB7CisKKyAgICAvKioKKyAgICAgKiBUaGUgY29udGFpbmVkIGNvbS5pYm0uaWN1LnV0aWwuU2ltcGxlVGltZVpvbmUgb2JqZWN0LgorICAgICAqIFdlIGRlbGVnYXRlIGFsbCBtZXRob2RzIHRvIHRoaXMgb2JqZWN0LgorICAgICAqLworICAgIHByaXZhdGUgU2ltcGxlVGltZVpvbmUgem9uZTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGFuIGFkYXB0ZXIgZm9yIGEgU2ltcGxlVGltZVpvbmUgb2JqZWN0LgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBTaW1wbGVUaW1lWm9uZUFkYXB0ZXIoU2ltcGxlVGltZVpvbmUgem9uZSkgeworICAgICAgICB0aGlzLnpvbmUgPSB6b25lOworICAgIH0KKworICAgIC8qKgorICAgICAqIE92ZXJyaWRlIFRpbWVab25lCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIFN0cmluZyBnZXRJRCgpIHsKKyAgICAgICAgcmV0dXJuIHpvbmUuZ2V0SUQoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZSBUaW1lWm9uZQorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldElEKFN0cmluZyBJRCkgeworICAgICAgICB6b25lLnNldElEKElEKTsKKyAgICB9ICAgIAorCisgICAgLyoqCisgICAgICogT3ZlcnJpZGUgVGltZVpvbmUKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBoYXNTYW1lUnVsZXMoamF2YS51dGlsLlRpbWVab25lIG90aGVyKSB7CisgICAgICAgIHJldHVybiBvdGhlciBpbnN0YW5jZW9mIFNpbXBsZVRpbWVab25lQWRhcHRlciAmJgorICAgICAgICAgICAgem9uZS5oYXNTYW1lUnVsZXMoKChTaW1wbGVUaW1lWm9uZUFkYXB0ZXIpb3RoZXIpLnpvbmUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIE92ZXJyaWRlIFRpbWVab25lCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGludCBnZXRPZmZzZXQoaW50IGVyYSwgaW50IHllYXIsIGludCBtb250aCwgaW50IGRheSwgaW50IGRheU9mV2VlaywKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWlsbGlzKSB7CisgICAgICAgIHJldHVybiB6b25lLmdldE9mZnNldChlcmEsIHllYXIsIG1vbnRoLCBkYXksIGRheU9mV2VlaywgbWlsbGlzKTsKKyAgICB9CisKKyAgICAvLyBUaGlzIGRvZXNuJ3Qgd29yayEgQmVjYXVzZSB0aGlzIGlzIGEgcGFja2FnZS1wcml2YXRlIG1ldGhvZCwKKyAgICAvLyBpdCBjYW5ub3Qgb3ZlcnJpZGUgdGhlIGNvcnJlc3BvbmRpbmcgbWV0aG9kIGluIGphdmEudXRpbC5UWi4KKyAgICAvLyBUaGlzIHJlZmxlY3RzIGEgZnVuZGFtZW50YWwgYnVnIGluIHRoZSBhcmNoaXRlY3R1cmUgb2YKKyAgICAvLyBqYXZhLnV0aWwuVFouICBJZiBub3QgZm9yIHRoaXMsIHRoaXMgYWRhcHRlciBjbGFzcyB3b3VsZAorICAgIC8vIHdvcmsgZmxhd2xlc3NseS4gLSBsaXUKKy8vISAgICAvKioKKy8vISAgICAgKiBPdmVycmlkZSBUaW1lWm9uZQorLy8hICAgICAqLworLy8hICAgIGludCBnZXRPZmZzZXQoaW50IGVyYSwgaW50IHllYXIsIGludCBtb250aCwgaW50IGRheSwgaW50IGRheU9mV2VlaywKKy8vISAgICAgICAgICAgICAgICAgIGludCBtaWxsaXMsIGludCBtb250aExlbmd0aCwgaW50IHByZXZNb250aExlbmd0aCkgeworLy8hICAgICAgICByZXR1cm4gem9uZS5nZXRPZmZzZXQoZXJhLCB5ZWFyLCBtb250aCwgZGF5LCBkYXlPZldlZWssCisvLyEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWxsaXMsIG1vbnRoTGVuZ3RoLCBwcmV2TW9udGhMZW5ndGgpOworLy8hICAgIH0KKworICAgIC8qKgorICAgICAqIE92ZXJyaWRlcyBUaW1lWm9uZQorICAgICAqIEdldHMgdGhlIEdNVCBvZmZzZXQgZm9yIHRoaXMgdGltZSB6b25lLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0UmF3T2Zmc2V0KCkgeworICAgICAgICByZXR1cm4gem9uZS5nZXRSYXdPZmZzZXQoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZXMgVGltZVpvbmUKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRSYXdPZmZzZXQoaW50IG9mZnNldE1pbGxpcykgeworICAgICAgICB6b25lLnNldFJhd09mZnNldChvZmZzZXRNaWxsaXMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIE92ZXJyaWRlcyBUaW1lWm9uZQorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIHVzZURheWxpZ2h0VGltZSgpIHsKKyAgICAgICAgcmV0dXJuIHpvbmUudXNlRGF5bGlnaHRUaW1lKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogT3ZlcnJpZGVzIFRpbWVab25lCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaW5EYXlsaWdodFRpbWUoRGF0ZSBkYXRlKSB7CisgICAgICAgIHJldHVybiB6b25lLmluRGF5bGlnaHRUaW1lKGRhdGUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIE92ZXJyaWRlcyBDbG9uZWFibGUKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0IGNsb25lKCkgeworICAgICAgICByZXR1cm4gbmV3IFNpbXBsZVRpbWVab25lQWRhcHRlcigoU2ltcGxlVGltZVpvbmUpem9uZS5jbG9uZSgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZSBoYXNoQ29kZS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3luY2hyb25pemVkIGludCBoYXNoQ29kZSgpIHsKKyAgICAgICAgcmV0dXJuIHpvbmUuaGFzaENvZGUoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb21wYXJlcyB0aGUgZXF1YWxpdHkgb2YgdHdvIFNpbXBsZVRpbWVab25lIG9iamVjdHMuCisgICAgICoKKyAgICAgKiBAcGFyYW0gb2JqICBUaGUgU2ltcGxlVGltZVpvbmUgb2JqZWN0IHRvIGJlIGNvbXBhcmVkIHdpdGguCisgICAgICogQHJldHVybiAgICAgVHJ1ZSBpZiB0aGUgZ2l2ZW4gb2JqIGlzIHRoZSBzYW1lIGFzIHRoaXMgU2ltcGxlVGltZVpvbmUKKyAgICAgKiAgICAgICAgICAgICBvYmplY3Q7IGZhbHNlIG90aGVyd2lzZS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG9iaikgeworICAgICAgICBpZiAob2JqIGluc3RhbmNlb2YgU2ltcGxlVGltZVpvbmVBZGFwdGVyKSB7CisgICAgICAgICAgICBvYmogPSAoKFNpbXBsZVRpbWVab25lQWRhcHRlcilvYmopLnpvbmU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHpvbmUuZXF1YWxzKG9iaik7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgdGltZSB6b25lLgorICAgICAqIEByZXR1cm4gIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgdGltZSB6b25lLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgIC8vIFNob3VsZCBwcm9iYWJseSBzaG93IG91ciBjbGFzcyBuYW1lIGhlcmUuLi5maXggbGF0ZXIuCisgICAgICAgIHJldHVybiB6b25lLnRvU3RyaW5nKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3V0aWwvU3RyaW5nVG9rZW5pemVyLmphdmEgYi9zcmMvY29tL2libS9pY3UvdXRpbC9TdHJpbmdUb2tlbml6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWJmYmFjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L3V0aWwvU3RyaW5nVG9rZW5pemVyLmphdmEKQEAgLTAsMCArMSw1NjIgQEAKKy8qKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvdXRpbC9TdHJpbmdUb2tlbml6ZXIuamF2YSx2ICQgCisqICREYXRlOiAyMDAyLzEyLzAzIDIyOjA0OjE3ICQgCisqICRSZXZpc2lvbjogMS4yICQKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKK3BhY2thZ2UgY29tLmlibS5pY3UudXRpbDsKKworaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuTm9TdWNoRWxlbWVudEV4Y2VwdGlvbjsKK2ltcG9ydCBjb20uaWJtLmljdS50ZXh0LlVuaWNvZGVTZXQ7CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC5VVEYxNjsKKworLyoqCisgKiA8cD5UaGUgc3RyaW5nIHRva2VuaXplciBjbGFzcyBhbGxvd3MgYW4gYXBwbGljYXRpb24gdG8gYnJlYWsgYSBzdHJpbmcgCisgKiBpbnRvIHRva2VucyBieSBwZXJmb3JtaW5nIGNvZGUgcG9pbnQgY29tcGFyaXNvbi4gCisgKiBUaGUgPGNvZGU+U3RyaW5nVG9rZW5pemVyPC9jb2RlPiBtZXRob2RzIGRvIG5vdCBkaXN0aW5ndWlzaCAKKyAqIGFtb25nIGlkZW50aWZpZXJzLCBudW1iZXJzLCBhbmQgcXVvdGVkIHN0cmluZ3MsIG5vciBkbyB0aGV5IHJlY29nbml6ZSAKKyAqIGFuZCBza2lwIGNvbW1lbnRzLjwvcD4KKyAqIDxwPgorICogVGhlIHNldCBvZiBkZWxpbWl0ZXJzICh0aGUgY29kZXBvaW50cyB0aGF0IHNlcGFyYXRlIHRva2VucykgbWF5IGJlIAorICogc3BlY2lmaWVkIGVpdGhlciBhdCBjcmVhdGlvbiB0aW1lIG9yIG9uIGEgcGVyLXRva2VuIGJhc2lzLiAKKyAqIDwvcD4KKyAqIDxwPgorICogQW4gaW5zdGFuY2Ugb2YgPGNvZGU+U3RyaW5nVG9rZW5pemVyPC9jb2RlPiBiZWhhdmVzIGluIG9uZSBvZiB0d28gd2F5cywgCisgKiBkZXBlbmRpbmcgb24gd2hldGhlciBpdCB3YXMgY3JlYXRlZCB3aXRoIHRoZSA8Y29kZT5yZXR1cm5EZWxpbXM8L2NvZGU+IAorICogZmxhZyBoYXZpbmcgdGhlIHZhbHVlIDxjb2RlPnRydWU8L2NvZGU+IG9yIDxjb2RlPmZhbHNlPC9jb2RlPjogCisgKiA8dWw+CisgKiA8bGk+SWYgdGhlIGZsYWcgaXMgPGNvZGU+ZmFsc2U8L2NvZGU+LCBkZWxpbWl0ZXIgY29kZSBwb2ludHMgc2VydmUgdG8gCisgKiBzZXBhcmF0ZSB0b2tlbnMuIEEgdG9rZW4gaXMgYSBtYXhpbWFsIHNlcXVlbmNlIG9mIGNvbnNlY3V0aXZlIAorICogY29kZSBwb2ludHMgdGhhdCBhcmUgbm90IGRlbGltaXRlcnMuIAorICogPGxpPklmIHRoZSBmbGFnIGlzIDxjb2RlPnRydWU8L2NvZGU+LCBkZWxpbWl0ZXIgY29kZSBwb2ludHMgYXJlIAorICogdGhlbXNlbHZlcyBjb25zaWRlcmVkIHRvIGJlIHRva2Vucy4gQSB0b2tlbiBpcyB0aHVzIGVpdGhlciBvbmUgCisgKiBkZWxpbWl0ZXIgY29kZSBwb2ludCwgb3IgYSBtYXhpbWFsIHNlcXVlbmNlIG9mIGNvbnNlY3V0aXZlIGNvZGUgCisgKiBwb2ludCB0aGF0IGFyZSBub3QgZGVsaW1pdGVycy4KKyAqIDwvdWw+CisgKiA8L3A+CisgKiA8cD4KKyAqIEEgPHR0PlN0cmluZ1Rva2VuaXplcjwvdHQ+IG9iamVjdCBpbnRlcm5hbGx5IG1haW50YWlucyBhIGN1cnJlbnQgCisgKiBwb3NpdGlvbiB3aXRoaW4gdGhlIHN0cmluZyB0byBiZSB0b2tlbml6ZWQuIFNvbWUgb3BlcmF0aW9ucyBhZHZhbmNlIHRoaXMgCisgKiBjdXJyZW50IHBvc2l0aW9uIHBhc3QgdGhlIGNvZGUgcG9pbnQgcHJvY2Vzc2VkLgorICogPC9wPgorICogPHA+CisgKiBBIHRva2VuIGlzIHJldHVybmVkIGJ5IHRha2luZyBhIHN1YnN0cmluZyBvZiB0aGUgc3RyaW5nIHRoYXQgd2FzIHVzZWQgdG8gCisgKiBjcmVhdGUgdGhlIDx0dD5TdHJpbmdUb2tlbml6ZXI8L3R0PiBvYmplY3QuCisgKiA8L3A+CisgKiA8cD4KKyAqIEV4YW1wbGUgb2YgdGhlIHVzZSBvZiB0aGUgZGVmYXVsdCBkZWxpbWl0ZXIgdG9rZW5pemVyLgorICogPGJsb2NrcXVvdGU+PHByZT4KKyAqIFN0cmluZ1Rva2VuaXplciBzdCA9IG5ldyBTdHJpbmdUb2tlbml6ZXIoInRoaXMgaXMgYSB0ZXN0Iik7CisgKiB3aGlsZSAoc3QuaGFzTW9yZVRva2VucygpKSB7CisgKiAgICAgcHJpbnRsbihzdC5uZXh0VG9rZW4oKSk7CisgKiAgICAgfQorICogPC9wcmU+PC9ibG9ja3F1b3RlPgorICogPC9wPgorICogPHA+CisgKiBwcmludHMgdGhlIGZvbGxvd2luZyBvdXRwdXQ6CisgKiA8YmxvY2txdW90ZT48cHJlPgorICogICAgIHRoaXMKKyAqICAgICBpcworICogICAgIGEKKyAqICAgICB0ZXN0CisgKiA8L3ByZT48L2Jsb2NrcXVvdGU+CisgKiA8L3A+CisgKiA8cD4KKyAqIEV4YW1wbGUgb2YgdGhlIHVzZSBvZiB0aGUgdG9rZW5pemVyIHdpdGggdXNlciBzcGVjaWZpZWQgZGVsaW1pdGVyLgorICogPGJsb2NrcXVvdGU+PHByZT4KKyAqICAgICBTdHJpbmdUb2tlbml6ZXIgc3QgPSBuZXcgU3RyaW5nVG9rZW5pemVyKAorICogICAgICJ0aGlzIGlzIGEgdGVzdCB3aXRoIHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVycyAmIzkyO3VkODAwJiM5Mjt1ZDgwMCYjOTI7dWRjMDAmIzkyO3VkYzAwIiwKKyAqICAgICAgICAgIiAmIzkyO3VkODAwJiM5Mjt1ZGMwMCIpOworICogICAgIHdoaWxlIChzdC5oYXNNb3JlVG9rZW5zKCkpIHsKKyAqICAgICAgICAgcHJpbnRsbihzdC5uZXh0VG9rZW4oKSk7CisgKiAgICAgfQorICogPC9wcmU+PC9ibG9ja3F1b3RlPgorICogPC9wPgorICogPHA+CisgKiBwcmludHMgdGhlIGZvbGxvd2luZyBvdXRwdXQ6CisgKiA8YmxvY2txdW90ZT48cHJlPgorICogICAgIHRoaXMKKyAqICAgICBpcworICogICAgIGEKKyAqICAgICB0ZXN0CisgKiAgICAgd2l0aAorICogICAgIHN1cHBsZW1lbnRhcnkKKyAqICAgICBjaGFyYWN0ZXJzCisgKiAgICAgJiM5Mjt1ZDgwMAorICogICAgICYjOTI7dWRjMDAKKyAqIDwvcHJlPjwvYmxvY2txdW90ZT4KKyAqIDwvcD4KKyAqIEBhdXRob3Igc3luIHdlZQorICogQGRyYWZ0IElDVSAyLjQKKyAqLworcHVibGljIGZpbmFsIGNsYXNzIFN0cmluZ1Rva2VuaXplciBpbXBsZW1lbnRzIEVudW1lcmF0aW9uIAoreworICAgIC8vIHB1YmxpYyBjb25zdHJ1Y3RvcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgIAorICAgIC8qKgorICAgICAqIDxwPkNvbnN0cnVjdHMgYSBzdHJpbmcgdG9rZW5pemVyIGZvciB0aGUgc3BlY2lmaWVkIHN0cmluZy4gQWxsIAorICAgICAqIGNoYXJhY3RlcnMgaW4gdGhlIGRlbGltIGFyZ3VtZW50IGFyZSB0aGUgZGVsaW1pdGVycyBmb3Igc2VwYXJhdGluZyAKKyAgICAgKiB0b2tlbnMuPC9wPiAKKyAgICAgKiA8cD5JZiB0aGUgcmV0dXJuRGVsaW1zIGZsYWcgaXMgdHJ1ZSwgdGhlbiB0aGUgZGVsaW1pdGVyIGNoYXJhY3RlcnMgCisgICAgICogYXJlIGFsc28gcmV0dXJuZWQgYXMgdG9rZW5zLiBFYWNoIGRlbGltaXRlciBpcyByZXR1cm5lZCBhcyBhIHN0cmluZyAKKyAgICAgKiBvZiBsZW5ndGggb25lLiBJZiB0aGUgZmxhZyBpcyBmYWxzZSwgdGhlIGRlbGltaXRlciBjaGFyYWN0ZXJzIGFyZSAKKyAgICAgKiBza2lwcGVkIGFuZCBvbmx5IHNlcnZlIGFzIHNlcGFyYXRvcnMgYmV0d2VlbiB0b2tlbnMuPC9wPgorICAgICAqIEBwYXJhbSBzdHIgYSBzdHJpbmcgdG8gYmUgcGFyc2VkLgorICAgICAqIEBwYXJhbSBkZWxpbSB0aGUgZGVsaW1pdGVycy4KKyAgICAgKiBAcGFyYW0gcmV0dXJuZGVsaW1zIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRvIHJldHVybiB0aGUgZGVsaW1pdGVycyAKKyAgICAgKiAgICAgICAgYXMgdG9rZW5zLgorICAgICAqIEBleGNlcHRpb24gdGhyb3dzIGEgTnVsbFBvaW50ZXJFeGNlcHRpb24gaWYgc3RyIGlzIG51bGwKKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmdUb2tlbml6ZXIoU3RyaW5nIHN0ciwgVW5pY29kZVNldCBkZWxpbSwgYm9vbGVhbiByZXR1cm5kZWxpbXMpCisgICAgeworICAgICAgICBtX3NvdXJjZV8gPSBzdHI7CisgICAgICAgIG1fbGVuZ3RoXyA9IHN0ci5sZW5ndGgoKTsKKyAgICAgICAgaWYgKGRlbGltID09IG51bGwpIHsKKyAgICAgICAgICAgIG1fZGVsaW1pdGVyc18gPSBFTVBUWV9ERUxJTUlURVJfOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbV9kZWxpbWl0ZXJzXyA9IGRlbGltOyAgIAorICAgICAgICB9CisgICAgICAgIG1fcmV0dXJuRGVsaW1pdGVyc18gPSByZXR1cm5kZWxpbXM7CisgICAgICAgIG1fdG9rZW5PZmZzZXRfID0gLTE7CisgICAgICAgIG1fdG9rZW5TaXplXyA9IC0xOworICAgICAgICBpZiAobV9sZW5ndGhfID09IDApIHsKKyAgICAgICAgICAgIC8vIHN0cmluZyBsZW5ndGggMCwgbm8gdG9rZW5zCisgICAgICAgICAgICBtX25leHRPZmZzZXRfID0gLTE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtX25leHRPZmZzZXRfID0gMDsKKyAgICAgICAgICAgIGlmICghcmV0dXJuZGVsaW1zKSB7CisgICAgICAgICAgICAgICAgbV9uZXh0T2Zmc2V0XyA9IGdldE5leHROb25EZWxpbWl0ZXIoMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogPHA+Q29uc3RydWN0cyBhIHN0cmluZyB0b2tlbml6ZXIgZm9yIHRoZSBzcGVjaWZpZWQgc3RyaW5nLiBUaGUgCisgICAgICogY2hhcmFjdGVycyBpbiB0aGUgZGVsaW0gYXJndW1lbnQgYXJlIHRoZSBkZWxpbWl0ZXJzIGZvciBzZXBhcmF0aW5nIAorICAgICAqIHRva2Vucy48L3A+IAorICAgICAqIDxwPkRlbGltaXRlciBjaGFyYWN0ZXJzIHRoZW1zZWx2ZXMgd2lsbCBub3QgYmUgdHJlYXRlZCBhcyB0b2tlbnMuPC9wPgorICAgICAqIEBwYXJhbSBzdHIgYSBzdHJpbmcgdG8gYmUgcGFyc2VkLgorICAgICAqIEBwYXJhbSBkZWxpbSB0aGUgZGVsaW1pdGVycy4KKyAgICAgKiBAZXhjZXB0aW9uIHRocm93cyBhIE51bGxQb2ludGVyRXhjZXB0aW9uIGlmIHN0ciBpcyBudWxsCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nVG9rZW5pemVyKFN0cmluZyBzdHIsIFVuaWNvZGVTZXQgZGVsaW0pCisgICAgeworICAgICAgICB0aGlzKHN0ciwgZGVsaW0sIGZhbHNlKTsKKyAgICB9CisgICAgICAgCisgICAgLyoqCisgICAgICogPHA+Q29uc3RydWN0cyBhIHN0cmluZyB0b2tlbml6ZXIgZm9yIHRoZSBzcGVjaWZpZWQgc3RyaW5nLiBBbGwgCisgICAgICogY2hhcmFjdGVycyBpbiB0aGUgZGVsaW0gYXJndW1lbnQgYXJlIHRoZSBkZWxpbWl0ZXJzIGZvciBzZXBhcmF0aW5nIAorICAgICAqIHRva2Vucy48L3A+IAorICAgICAqIDxwPklmIHRoZSByZXR1cm5EZWxpbXMgZmxhZyBpcyB0cnVlLCB0aGVuIHRoZSBkZWxpbWl0ZXIgY2hhcmFjdGVycyAKKyAgICAgKiBhcmUgYWxzbyByZXR1cm5lZCBhcyB0b2tlbnMuIEVhY2ggZGVsaW1pdGVyIGlzIHJldHVybmVkIGFzIGEgc3RyaW5nIAorICAgICAqIG9mIGxlbmd0aCBvbmUuIElmIHRoZSBmbGFnIGlzIGZhbHNlLCB0aGUgZGVsaW1pdGVyIGNoYXJhY3RlcnMgYXJlIAorICAgICAqIHNraXBwZWQgYW5kIG9ubHkgc2VydmUgYXMgc2VwYXJhdG9ycyBiZXR3ZWVuIHRva2Vucy48L3A+CisgICAgICogQHBhcmFtIHN0ciBhIHN0cmluZyB0byBiZSBwYXJzZWQuCisgICAgICogQHBhcmFtIGRlbGltIHRoZSBkZWxpbWl0ZXJzLgorICAgICAqIEBwYXJhbSByZXR1cm5kZWxpbXMgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gcmV0dXJuIHRoZSBkZWxpbWl0ZXJzIAorICAgICAqICAgICAgICBhcyB0b2tlbnMuCisgICAgICogQGV4Y2VwdGlvbiB0aHJvd3MgYSBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpZiBzdHIgaXMgbnVsbAorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIFN0cmluZ1Rva2VuaXplcihTdHJpbmcgc3RyLCBTdHJpbmcgZGVsaW0sIGJvb2xlYW4gcmV0dXJuZGVsaW1zKQorICAgIHsKKyAgICAgICAgLy8gZG9uJ3QgaWdub3JlIHdoaXRlc3BhY2UKKyAgICAgICAgbV9kZWxpbWl0ZXJzXyA9IEVNUFRZX0RFTElNSVRFUl87CisgICAgICAgIGlmIChkZWxpbSAhPSBudWxsICYmIGRlbGltLmxlbmd0aCgpID4gMCkgeworICAgICAgICAgICAgbV9kZWxpbWl0ZXJzXyA9IG5ldyBVbmljb2RlU2V0KCk7CisgICAgICAgICAgICBtX2RlbGltaXRlcnNfLmFkZEFsbChkZWxpbSk7CisgICAgICAgIH0KKyAgICAgICAgbV9zb3VyY2VfID0gc3RyOworICAgICAgICBtX2xlbmd0aF8gPSBzdHIubGVuZ3RoKCk7CisgICAgICAgIG1fcmV0dXJuRGVsaW1pdGVyc18gPSByZXR1cm5kZWxpbXM7CisgICAgICAgIG1fdG9rZW5PZmZzZXRfID0gLTE7CisgICAgICAgIG1fdG9rZW5TaXplXyA9IC0xOworICAgICAgICBpZiAobV9sZW5ndGhfID09IDApIHsKKyAgICAgICAgICAgIC8vIHN0cmluZyBsZW5ndGggMCwgbm8gdG9rZW5zCisgICAgICAgICAgICBtX25leHRPZmZzZXRfID0gLTE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtX25leHRPZmZzZXRfID0gMDsKKyAgICAgICAgICAgIGlmICghcmV0dXJuZGVsaW1zKSB7CisgICAgICAgICAgICAgICAgbV9uZXh0T2Zmc2V0XyA9IGdldE5leHROb25EZWxpbWl0ZXIoMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogPHA+Q29uc3RydWN0cyBhIHN0cmluZyB0b2tlbml6ZXIgZm9yIHRoZSBzcGVjaWZpZWQgc3RyaW5nLiBUaGUgCisgICAgICogY2hhcmFjdGVycyBpbiB0aGUgZGVsaW0gYXJndW1lbnQgYXJlIHRoZSBkZWxpbWl0ZXJzIGZvciBzZXBhcmF0aW5nIAorICAgICAqIHRva2Vucy48L3A+IAorICAgICAqIDxwPkRlbGltaXRlciBjaGFyYWN0ZXJzIHRoZW1zZWx2ZXMgd2lsbCBub3QgYmUgdHJlYXRlZCBhcyB0b2tlbnMuPC9wPgorICAgICAqIEBwYXJhbSBzdHIgYSBzdHJpbmcgdG8gYmUgcGFyc2VkLgorICAgICAqIEBwYXJhbSBkZWxpbSB0aGUgZGVsaW1pdGVycy4KKyAgICAgKiBAZXhjZXB0aW9uIHRocm93cyBhIE51bGxQb2ludGVyRXhjZXB0aW9uIGlmIHN0ciBpcyBudWxsCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nVG9rZW5pemVyKFN0cmluZyBzdHIsIFN0cmluZyBkZWxpbSkKKyAgICB7CisgICAgICAgIC8vIGRvbid0IGlnbm9yZSB3aGl0ZXNwYWNlCisgICAgICAgIHRoaXMoc3RyLCBkZWxpbSwgZmFsc2UpOworICAgIH0KKworICAgIC8qKgorICAgICAqIDxwPkNvbnN0cnVjdHMgYSBzdHJpbmcgdG9rZW5pemVyIGZvciB0aGUgc3BlY2lmaWVkIHN0cmluZy4gCisgICAgICogVGhlIHRva2VuaXplciB1c2VzIHRoZSBkZWZhdWx0IGRlbGltaXRlciBzZXQsIHdoaWNoIGlzIAorICAgICAqICIgJiM5Mjt0JiM5MjtuJiM5MjtyJiM5MjtmIjogCisgICAgICogdGhlIHNwYWNlIGNoYXJhY3RlciwgdGhlIHRhYiBjaGFyYWN0ZXIsIHRoZSBuZXdsaW5lIGNoYXJhY3RlciwgdGhlIAorICAgICAqIGNhcnJpYWdlLXJldHVybiBjaGFyYWN0ZXIsIGFuZCB0aGUgZm9ybS1mZWVkIGNoYXJhY3Rlci48L3A+IAorICAgICAqIDxwPkRlbGltaXRlciBjaGFyYWN0ZXJzIHRoZW1zZWx2ZXMgd2lsbCBub3QgYmUgdHJlYXRlZCBhcyB0b2tlbnMuPC9wPgorICAgICAqIEBwYXJhbSBzdHIgYSBzdHJpbmcgdG8gYmUgcGFyc2VkCisgICAgICogQGV4Y2VwdGlvbiB0aHJvd3MgYSBOdWxsUG9pbnRlckV4Y2VwdGlvbiBpZiBzdHIgaXMgbnVsbAorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIFN0cmluZ1Rva2VuaXplcihTdHJpbmcgc3RyKSAKKyAgICB7CisgICAgICAgIHRoaXMoc3RyLCBERUZBVUxUX0RFTElNSVRFUlNfLCBmYWxzZSk7CisgICAgfQorICAgIAorICAgIC8vIHB1YmxpYyBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgICogVGVzdHMgaWYgdGhlcmUgYXJlIG1vcmUgdG9rZW5zIGF2YWlsYWJsZSBmcm9tIHRoaXMgdG9rZW5pemVyJ3MgCisgICAgICogc3RyaW5nLiAKKyAgICAgKiBJZiB0aGlzIG1ldGhvZCByZXR1cm5zIDx0dD50cnVlPC90dD4sIHRoZW4gYSBzdWJzZXF1ZW50IGNhbGwgdG8gCisgICAgICogPHR0Pm5leHRUb2tlbjwvdHQ+IHdpdGggbm8gYXJndW1lbnQgd2lsbCBzdWNjZXNzZnVsbHkgcmV0dXJuIGEgdG9rZW4uCisgICAgICogQHJldHVybiA8Y29kZT50cnVlPC9jb2RlPiBpZiBhbmQgb25seSBpZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgdG9rZW4gCisgICAgICogICAgICAgICBpbiB0aGUgc3RyaW5nIGFmdGVyIHRoZSBjdXJyZW50IHBvc2l0aW9uOyA8Y29kZT5mYWxzZTwvY29kZT4gCisgICAgICogICAgICAgICBvdGhlcndpc2UuCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBoYXNNb3JlVG9rZW5zKCkgCisgICAgeworICAgICAgICByZXR1cm4gbV9uZXh0T2Zmc2V0XyA+PSAwOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBuZXh0IHRva2VuIGZyb20gdGhpcyBzdHJpbmcgdG9rZW5pemVyLgorICAgICAqIEByZXR1cm4gdGhlIG5leHQgdG9rZW4gZnJvbSB0aGlzIHN0cmluZyB0b2tlbml6ZXIuCisgICAgICogQGV4Y2VwdGlvbiBOb1N1Y2hFbGVtZW50RXhjZXB0aW9uIGlmIHRoZXJlIGFyZSBubyBtb3JlIHRva2VucyBpbiAKKyAgICAgKiAgICAgICAgICAgIHRoaXMgdG9rZW5pemVyJ3Mgc3RyaW5nLgorICAgICAqIEBkcmFmdCBJQ1UgMi40CisgICAgICovCisgICAgcHVibGljIFN0cmluZyBuZXh0VG9rZW4oKSAKKyAgICB7CisgICAgICAgIGlmIChtX3Rva2VuT2Zmc2V0XyA8IDApIHsKKyAgICAgICAgICAgIGlmIChtX25leHRPZmZzZXRfIDwgMCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBOb1N1Y2hFbGVtZW50RXhjZXB0aW9uKCJObyBtb3JlIHRva2VucyBpbiBTdHJpbmciKTsgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIHByZS1jYWxjdWxhdGlvbnMgb2YgdG9rZW5zIG5vdCBkb25lCisgICAgICAgICAgICBpZiAobV9yZXR1cm5EZWxpbWl0ZXJzXykgeworICAgICAgICAgICAgICAgIGludCB0b2tlbmxpbWl0ID0gMDsKKyAgICAgICAgICAgICAgICBpZiAobV9kZWxpbWl0ZXJzXy5jb250YWlucyhVVEYxNi5jaGFyQXQobV9zb3VyY2VfLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9uZXh0T2Zmc2V0XykpKSB7CisgICAgICAgICAgICAgICAgICAgIHRva2VubGltaXQgPSBnZXROZXh0Tm9uRGVsaW1pdGVyKG1fbmV4dE9mZnNldF8pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdG9rZW5saW1pdCA9IGdldE5leHREZWxpbWl0ZXIobV9uZXh0T2Zmc2V0Xyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFN0cmluZyByZXN1bHQ7CisgICAgICAgICAgICAgICAgaWYgKHRva2VubGltaXQgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1fc291cmNlXy5zdWJzdHJpbmcobV9uZXh0T2Zmc2V0Xyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBtX3NvdXJjZV8uc3Vic3RyaW5nKG1fbmV4dE9mZnNldF8sIHRva2VubGltaXQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtX25leHRPZmZzZXRfID0gdG9rZW5saW1pdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaW50IHRva2VubGltaXQgPSBnZXROZXh0RGVsaW1pdGVyKG1fbmV4dE9mZnNldF8pOworICAgICAgICAgICAgICAgIFN0cmluZyByZXN1bHQ7CisgICAgICAgICAgICAgICAgaWYgKHRva2VubGltaXQgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1fc291cmNlXy5zdWJzdHJpbmcobV9uZXh0T2Zmc2V0Xyk7CisgICAgICAgICAgICAgICAgICAgIG1fbmV4dE9mZnNldF8gPSB0b2tlbmxpbWl0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9zb3VyY2VfLnN1YnN0cmluZyhtX25leHRPZmZzZXRfLCB0b2tlbmxpbWl0KTsKKyAgICAgICAgICAgICAgICAgICAgbV9uZXh0T2Zmc2V0XyA9IGdldE5leHROb25EZWxpbWl0ZXIodG9rZW5saW1pdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLy8gY291bnQgd2FzIGNhbGxlZCBiZWZvcmUgYW5kIHdlIGhhdmUgYWxsIHRoZSB0b2tlbnMKKyAgICAgICAgaWYgKG1fdG9rZW5PZmZzZXRfID49IG1fdG9rZW5TaXplXykgeworICAgICAgICAgICAgdGhyb3cgbmV3IE5vU3VjaEVsZW1lbnRFeGNlcHRpb24oIk5vIG1vcmUgdG9rZW5zIGluIFN0cmluZyIpOworICAgICAgICB9CisgICAgICAgIFN0cmluZyByZXN1bHQ7CisgICAgICAgIGlmIChtX3Rva2VuTGltaXRfW21fdG9rZW5PZmZzZXRfXSA+PSAwKSB7CisgICAgICAgICAgICByZXN1bHQgPSBtX3NvdXJjZV8uc3Vic3RyaW5nKG1fdG9rZW5TdGFydF9bbV90b2tlbk9mZnNldF9dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3Rva2VuTGltaXRfW21fdG9rZW5PZmZzZXRfXSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXN1bHQgPSBtX3NvdXJjZV8uc3Vic3RyaW5nKG1fdG9rZW5TdGFydF9bbV90b2tlbk9mZnNldF9dKTsKKyAgICAgICAgfQorICAgICAgICBtX3Rva2VuT2Zmc2V0XyArKzsKKyAgICAgICAgbV9uZXh0T2Zmc2V0XyA9IG1fdG9rZW5TdGFydF9bbV90b2tlbk9mZnNldF9dOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBuZXh0IHRva2VuIGluIHRoaXMgc3RyaW5nIHRva2VuaXplcidzIHN0cmluZy4gRmlyc3QsIAorICAgICAqIHRoZSBzZXQgb2YgY2hhcmFjdGVycyBjb25zaWRlcmVkIHRvIGJlIGRlbGltaXRlcnMgYnkgdGhpcyAKKyAgICAgKiA8dHQ+U3RyaW5nVG9rZW5pemVyPC90dD4gb2JqZWN0IGlzIGNoYW5nZWQgdG8gYmUgdGhlIGNoYXJhY3RlcnMgaW4gCisgICAgICogdGhlIHN0cmluZyA8dHQ+ZGVsaW08L3R0Pi4gVGhlbiB0aGUgbmV4dCB0b2tlbiBpbiB0aGUgc3RyaW5nCisgICAgICogYWZ0ZXIgdGhlIGN1cnJlbnQgcG9zaXRpb24gaXMgcmV0dXJuZWQuIFRoZSBjdXJyZW50IHBvc2l0aW9uIGlzIAorICAgICAqIGFkdmFuY2VkIGJleW9uZCB0aGUgcmVjb2duaXplZCB0b2tlbi4gIFRoZSBuZXcgZGVsaW1pdGVyIHNldCAKKyAgICAgKiByZW1haW5zIHRoZSBkZWZhdWx0IGFmdGVyIHRoaXMgY2FsbC4gCisgICAgICogQHBhcmFtIGRlbGltIHRoZSBuZXcgZGVsaW1pdGVycy4KKyAgICAgKiBAcmV0dXJuIHRoZSBuZXh0IHRva2VuLCBhZnRlciBzd2l0Y2hpbmcgdG8gdGhlIG5ldyBkZWxpbWl0ZXIgc2V0LgorICAgICAqIEBleGNlcHRpb24gTm9TdWNoRWxlbWVudEV4Y2VwdGlvbiBpZiB0aGVyZSBhcmUgbm8gbW9yZSB0b2tlbnMgaW4gCisgICAgICogICAgICAgICAgICB0aGlzIHRva2VuaXplcidzIHN0cmluZy4KKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgbmV4dFRva2VuKFN0cmluZyBkZWxpbSkgCisgICAgeworICAgICAgICBtX2RlbGltaXRlcnNfID0gRU1QVFlfREVMSU1JVEVSXzsKKyAgICAgICAgaWYgKGRlbGltICE9IG51bGwgJiYgZGVsaW0ubGVuZ3RoKCkgPiAwKSB7CisgICAgICAgICAgICBtX2RlbGltaXRlcnNfID0gbmV3IFVuaWNvZGVTZXQoKTsKKyAgICAgICAgICAgIG1fZGVsaW1pdGVyc18uYWRkQWxsKGRlbGltKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbmV4dFRva2VuKG1fZGVsaW1pdGVyc18pOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBuZXh0IHRva2VuIGluIHRoaXMgc3RyaW5nIHRva2VuaXplcidzIHN0cmluZy4gRmlyc3QsIAorICAgICAqIHRoZSBzZXQgb2YgY2hhcmFjdGVycyBjb25zaWRlcmVkIHRvIGJlIGRlbGltaXRlcnMgYnkgdGhpcyAKKyAgICAgKiA8dHQ+U3RyaW5nVG9rZW5pemVyPC90dD4gb2JqZWN0IGlzIGNoYW5nZWQgdG8gYmUgdGhlIGNoYXJhY3RlcnMgaW4gCisgICAgICogdGhlIHN0cmluZyA8dHQ+ZGVsaW08L3R0Pi4gVGhlbiB0aGUgbmV4dCB0b2tlbiBpbiB0aGUgc3RyaW5nCisgICAgICogYWZ0ZXIgdGhlIGN1cnJlbnQgcG9zaXRpb24gaXMgcmV0dXJuZWQuIFRoZSBjdXJyZW50IHBvc2l0aW9uIGlzIAorICAgICAqIGFkdmFuY2VkIGJleW9uZCB0aGUgcmVjb2duaXplZCB0b2tlbi4gIFRoZSBuZXcgZGVsaW1pdGVyIHNldCAKKyAgICAgKiByZW1haW5zIHRoZSBkZWZhdWx0IGFmdGVyIHRoaXMgY2FsbC4gCisgICAgICogQHBhcmFtIGRlbGltIHRoZSBuZXcgZGVsaW1pdGVycy4KKyAgICAgKiBAcmV0dXJuIHRoZSBuZXh0IHRva2VuLCBhZnRlciBzd2l0Y2hpbmcgdG8gdGhlIG5ldyBkZWxpbWl0ZXIgc2V0LgorICAgICAqIEBleGNlcHRpb24gTm9TdWNoRWxlbWVudEV4Y2VwdGlvbiBpZiB0aGVyZSBhcmUgbm8gbW9yZSB0b2tlbnMgaW4gCisgICAgICogICAgICAgICAgICB0aGlzIHRva2VuaXplcidzIHN0cmluZy4KKyAgICAgKiBAZHJhZnQgSUNVIDIuNAorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgbmV4dFRva2VuKFVuaWNvZGVTZXQgZGVsaW0pIAorICAgIHsKKyAgICAgICAgbV9kZWxpbWl0ZXJzXyA9IGRlbGltOworICAgICAgICBtX3Rva2VuT2Zmc2V0XyA9IC0xOworICAgICAgICBtX3Rva2VuU2l6ZV8gPSAtMTsKKyAgICAgICAgaWYgKCFtX3JldHVybkRlbGltaXRlcnNfKSB7CisgICAgICAgICAgICBtX25leHRPZmZzZXRfID0gZ2V0TmV4dE5vbkRlbGltaXRlcihtX25leHRPZmZzZXRfKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbmV4dFRva2VuKCk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIHNhbWUgdmFsdWUgYXMgdGhlIDxjb2RlPmhhc01vcmVUb2tlbnM8L2NvZGU+IG1ldGhvZC4gCisgICAgICogSXQgZXhpc3RzIHNvIHRoYXQgdGhpcyBjbGFzcyBjYW4gaW1wbGVtZW50IHRoZSAKKyAgICAgKiA8Y29kZT5FbnVtZXJhdGlvbjwvY29kZT4gaW50ZXJmYWNlLiAKKyAgICAgKiBAcmV0dXJuIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZXJlIGFyZSBtb3JlIHRva2VuczsKKyAgICAgKiAgICAgICAgIDxjb2RlPmZhbHNlPC9jb2RlPiBvdGhlcndpc2UuCisgICAgICogQHNlZSAjaGFzTW9yZVRva2VucygpCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBoYXNNb3JlRWxlbWVudHMoKSAKKyAgICB7CisgICAgICAgIHJldHVybiBoYXNNb3JlVG9rZW5zKCk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIHNhbWUgdmFsdWUgYXMgdGhlIDxjb2RlPm5leHRUb2tlbjwvY29kZT4gbWV0aG9kLCBleGNlcHQgCisgICAgICogdGhhdCBpdHMgZGVjbGFyZWQgcmV0dXJuIHZhbHVlIGlzIDxjb2RlPk9iamVjdDwvY29kZT4gcmF0aGVyIHRoYW4gCisgICAgICogPGNvZGU+U3RyaW5nPC9jb2RlPi4gSXQgZXhpc3RzIHNvIHRoYXQgdGhpcyBjbGFzcyBjYW4gaW1wbGVtZW50IHRoZSAKKyAgICAgKiA8Y29kZT5FbnVtZXJhdGlvbjwvY29kZT4gaW50ZXJmYWNlLiAKKyAgICAgKiBAcmV0dXJuIHRoZSBuZXh0IHRva2VuIGluIHRoZSBzdHJpbmcuCisgICAgICogQGV4Y2VwdGlvbiBOb1N1Y2hFbGVtZW50RXhjZXB0aW9uIGlmIHRoZXJlIGFyZSBubyBtb3JlIHRva2VucyBpbiAKKyAgICAgKiAgICAgICAgICAgIHRoaXMgdG9rZW5pemVyJ3Mgc3RyaW5nLgorICAgICAqIEBzZWUgI25leHRUb2tlbigpCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0IG5leHRFbGVtZW50KCkgCisgICAgeworICAgICAgICByZXR1cm4gbmV4dFRva2VuKCk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIENhbGN1bGF0ZXMgdGhlIG51bWJlciBvZiB0aW1lcyB0aGF0IHRoaXMgdG9rZW5pemVyJ3MgCisgICAgICogPGNvZGU+bmV4dFRva2VuPC9jb2RlPiBtZXRob2QgY2FuIGJlIGNhbGxlZCBiZWZvcmUgaXQgZ2VuZXJhdGVzIGFuIAorICAgICAqIGV4Y2VwdGlvbi4gVGhlIGN1cnJlbnQgcG9zaXRpb24gaXMgbm90IGFkdmFuY2VkLgorICAgICAqIEByZXR1cm4gdGhlIG51bWJlciBvZiB0b2tlbnMgcmVtYWluaW5nIGluIHRoZSBzdHJpbmcgdXNpbmcgdGhlIAorICAgICAqICAgICAgICAgY3VycmVudCBkZWxpbWl0ZXIgc2V0LgorICAgICAqIEBzZWUgI25leHRUb2tlbigpCisgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGNvdW50VG9rZW5zKCkgCisgICAgeworICAgICAgICBpbnQgcmVzdWx0ID0gMDsKKyAgICAgICAgaWYgKGhhc01vcmVUb2tlbnMoKSkgeworICAgICAgICAgICAgaWYgKG1fdG9rZW5PZmZzZXRfID49IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV90b2tlblNpemVfIC0gbV90b2tlbk9mZnNldF87CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobV90b2tlblN0YXJ0XyA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgbV90b2tlblN0YXJ0XyA9IG5ldyBpbnRbVE9LRU5fU0laRV9dOworICAgICAgICAgICAgICAgIG1fdG9rZW5MaW1pdF8gPSBuZXcgaW50W1RPS0VOX1NJWkVfXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBpZiAobV90b2tlblN0YXJ0Xy5sZW5ndGggPT0gcmVzdWx0KSB7CisgICAgICAgICAgICAgICAgICAgIGludCB0ZW1wdG9rZW5pbmRleFtdID0gbV90b2tlblN0YXJ0XzsKKyAgICAgICAgICAgICAgICAgICAgaW50IHRlbXB0b2tlbnNpemVbXSA9IG1fdG9rZW5MaW1pdF87CisgICAgICAgICAgICAgICAgICAgIGludCBvcmlnaW5hbHNpemUgPSB0ZW1wdG9rZW5pbmRleC5sZW5ndGg7CisgICAgICAgICAgICAgICAgICAgIGludCBuZXdzaXplID0gb3JpZ2luYWxzaXplICsgVE9LRU5fU0laRV87CisgICAgICAgICAgICAgICAgICAgIG1fdG9rZW5TdGFydF8gPSBuZXcgaW50W25ld3NpemVdOworICAgICAgICAgICAgICAgICAgICBtX3Rva2VuTGltaXRfID0gbmV3IGludFtuZXdzaXplXTsKKyAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weSh0ZW1wdG9rZW5pbmRleCwgMCwgbV90b2tlblN0YXJ0XywgMCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxzaXplKTsKKyAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weSh0ZW1wdG9rZW5zaXplLCAwLCBtX3Rva2VuTGltaXRfLCAwLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbHNpemUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtX3Rva2VuU3RhcnRfW3Jlc3VsdF0gPSBtX25leHRPZmZzZXRfOworICAgICAgICAgICAgICAgIGlmIChtX3JldHVybkRlbGltaXRlcnNfKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX2RlbGltaXRlcnNfLmNvbnRhaW5zKFVURjE2LmNoYXJBdChtX3NvdXJjZV8sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9uZXh0T2Zmc2V0XykpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3Rva2VuTGltaXRfW3Jlc3VsdF0gPSBnZXROZXh0Tm9uRGVsaW1pdGVyKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbmV4dE9mZnNldF8pOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgbV90b2tlbkxpbWl0X1tyZXN1bHRdID0gZ2V0TmV4dERlbGltaXRlcihtX25leHRPZmZzZXRfKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBtX25leHRPZmZzZXRfID0gbV90b2tlbkxpbWl0X1tyZXN1bHRdOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbV90b2tlbkxpbWl0X1tyZXN1bHRdID0gZ2V0TmV4dERlbGltaXRlcihtX25leHRPZmZzZXRfKTsKKyAgICAgICAgICAgICAgICAgICAgbV9uZXh0T2Zmc2V0XyA9IGdldE5leHROb25EZWxpbWl0ZXIobV90b2tlbkxpbWl0X1tyZXN1bHRdKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmVzdWx0ICsrOworICAgICAgICAgICAgfSB3aGlsZSAobV9uZXh0T2Zmc2V0XyA+PSAwKTsKKyAgICAgICAgICAgIG1fdG9rZW5PZmZzZXRfID0gMDsKKyAgICAgICAgICAgIG1fdG9rZW5TaXplXyA9IHJlc3VsdDsKKyAgICAgICAgICAgIG1fbmV4dE9mZnNldF8gPSBtX3Rva2VuU3RhcnRfWzBdOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIC8vIHByaXZhdGUgZGF0YSBtZW1iZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvKioKKyAgICAgKiBDdXJyZW50IG9mZnNldCB0byB0aGUgdG9rZW4gYXJyYXkuIElmIHRoZSBhcnJheSB0b2tlbiBpcyBub3Qgc2V0IHVwIHlldCwKKyAgICAgKiB0aGlzIHZhbHVlIGlzIGEgLTEKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBtX3Rva2VuT2Zmc2V0XzsKKyAgICAvKioKKyAgICAgKiBTaXplIG9mIHRoZSB0b2tlbiBhcnJheS4gSWYgdGhlIGFycmF5IHRva2VuIGlzIG5vdCBzZXQgdXAgeWV0LAorICAgICAqIHRoaXMgdmFsdWUgaXMgYSAtMQorICAgICAqLworICAgIHByaXZhdGUgaW50IG1fdG9rZW5TaXplXzsKKyAgICAvKioKKyAgICAgKiBBcnJheSBvZiBwcmUtY2FsY3VsYXRlZCB0b2tlbnMgc3RhcnQgaW5kZXhlcyBpbiBzb3VyY2Ugc3RyaW5nIHRlcm1pbmF0ZWQgCisgICAgICogYnkgLTEuCisgICAgICogVGhpcyBpcyBvbmx5IHNldCB1cCBkdXJpbmcgY291bnRUb2tlbnMoKSBhbmQgb25seSBzdG9yZXMgdGhlIHJlbWFpbmluZworICAgICAqIHRva2Vucywgbm90IGFsbCB0b2tlbnMgaW5jbHVkaW5nIHBhcnNlZCBvbmVzCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgbV90b2tlblN0YXJ0X1tdOworICAgIC8qKgorICAgICAqIEFycmF5IG9mIHByZS1jYWxjdWxhdGVkIHRva2VucyBsaW1pdCBpbmRleGVzIGluIHNvdXJjZSBzdHJpbmcuCisgICAgICogVGhpcyBpcyBvbmx5IHNldCB1cCBkdXJpbmcgY291bnRUb2tlbnMoKSBhbmQgb25seSBzdG9yZXMgdGhlIHJlbWFpbmluZworICAgICAqIHRva2Vucywgbm90IGFsbCB0b2tlbnMgaW5jbHVkaW5nIHBhcnNlZCBvbmVzCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgbV90b2tlbkxpbWl0X1tdOworICAgIC8qKgorICAgICAqIFVuaWNvZGVTZXQgY29udGFpbmluZyBkZWxpbWl0ZXJzCisgICAgICovCisgICAgcHJpdmF0ZSBVbmljb2RlU2V0IG1fZGVsaW1pdGVyc187CisgICAgLyoqCisgICAgICogU3RyaW5nIHRvIHBhcnNlIGZvciB0b2tlbnMKKyAgICAgKi8KKyAgICBwcml2YXRlIFN0cmluZyBtX3NvdXJjZV87CisgICAgLyoqCisgICAgICogTGVuZ3RoIG9mIG1fc291cmNlXworICAgICAqLworICAgIHByaXZhdGUgaW50IG1fbGVuZ3RoXzsKKyAgICAvKioKKyAgICAgKiBDdXJyZW50IHBvc2l0aW9uIGluIHN0cmluZyB0byBwYXJzZSBmb3IgdG9rZW5zCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgbV9uZXh0T2Zmc2V0XzsKKyAgICAvKioKKyAgICAgKiBGbGFnIGluZGljYXRvciBpZiBkZWxpbWl0ZXJzIGFyZSB0byBiZSB0cmVhdGVkIGFzIHRva2VucyB0b28KKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gbV9yZXR1cm5EZWxpbWl0ZXJzXzsKKyAgICAvKioKKyAgICAgKiBEZWZhdWx0IHNldCBvZiBkZWxpbWl0ZXJzICYjOTI7dCYjOTI7biYjOTI7ciYjOTI7ZgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFVuaWNvZGVTZXQgREVGQVVMVF9ERUxJTUlURVJTXyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBVbmljb2RlU2V0KCJbIFx0XG5cclxmXSIsIGZhbHNlKTsKKyAgICAvKioKKyAgICAgKiBBcnJheSBzaXplIGluY3JlbWVudHMKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgVE9LRU5fU0laRV8gPSAxMDA7CisgICAgLyoqCisgICAgICogQSBlbXB0eSBkZWxpbWl0ZXIgVW5pY29kZVNldCwgdXNlZCB3aGVuIHVzZXIgc3BlY2lmaWVkIG51bGwgZGVsaW1pdGVycworICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFVuaWNvZGVTZXQgRU1QVFlfREVMSU1JVEVSXyA9IG5ldyBVbmljb2RlU2V0KCk7CisgICAgCisgICAgLy8gcHJpdmF0ZSBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIC8qKgorICAgICAqIEdldHMgdGhlIGluZGV4IG9mIHRoZSBuZXh0IGRlbGltaXRlciBhZnRlciBvZmZzZXQKKyAgICAgKiBAcGFyYW0gb2Zmc2V0IHRvIHRoZSBzb3VyY2Ugc3RyaW5nCisgICAgICogQHJldHVybiBvZmZzZXQgb2YgdGhlIGltbWVkaWF0ZSBuZXh0IGRlbGltaXRlciwgb3RoZXJ3aXNlIAorICAgICAqICAgICAgICAgKC0gc291cmNlIHN0cmluZyBsZW5ndGggLSAxKSBpZiB0aGVyZQorICAgICAqICAgICAgICAgYXJlIG5vIG1vcmUgZGVsaW1pdGVycyBhZnRlciBtX25leHRPZmZzZXQKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBnZXROZXh0RGVsaW1pdGVyKGludCBvZmZzZXQpCisgICAgeworICAgICAgICBpZiAob2Zmc2V0ID49IDApIHsKKyAgICAgICAgICAgIGludCByZXN1bHQgPSBvZmZzZXQ7IAorICAgICAgICAgICAgaW50IGMgPSAwOworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIGMgPSBVVEYxNi5jaGFyQXQobV9zb3VyY2VfLCByZXN1bHQpOworICAgICAgICAgICAgICAgIGlmIChtX2RlbGltaXRlcnNfLmNvbnRhaW5zKGMpKSB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXN1bHQgKys7CisgICAgICAgICAgICB9IHdoaWxlIChyZXN1bHQgPCBtX2xlbmd0aF8pOworICAgICAgICAgICAgaWYgKHJlc3VsdCA8IG1fbGVuZ3RoXykgeworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC0xIC0gbV9sZW5ndGhfOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBpbmRleCBvZiB0aGUgbmV4dCBub24tZGVsaW1pdGVyIGFmdGVyIG1fbmV4dE9mZnNldF8KKyAgICAgKiBAcGFyYW0gb2Zmc2V0IHRvIHRoZSBzb3VyY2Ugc3RyaW5nCisgICAgICogQHJldHVybiBvZmZzZXQgb2YgdGhlIGltbWVkaWF0ZSBuZXh0IG5vbi1kZWxpbWl0ZXIsIG90aGVyd2lzZSAKKyAgICAgKiAgICAgICAgICgtIHNvdXJjZSBzdHJpbmcgbGVuZ3RoIC0gMSkgaWYgdGhlcmUKKyAgICAgKiAgICAgICAgIGFyZSBubyBtb3JlIGRlbGltaXRlcnMgYWZ0ZXIgbV9uZXh0T2Zmc2V0CisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgZ2V0TmV4dE5vbkRlbGltaXRlcihpbnQgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgaWYgKG9mZnNldCA+PSAwKSB7CisgICAgICAgICAgICBpbnQgcmVzdWx0ID0gb2Zmc2V0OyAKKyAgICAgICAgICAgIGludCBjID0gMDsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBjID0gVVRGMTYuY2hhckF0KG1fc291cmNlXywgcmVzdWx0KTsKKyAgICAgICAgICAgICAgICBpZiAoIW1fZGVsaW1pdGVyc18uY29udGFpbnMoYykpIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJlc3VsdCArKzsKKyAgICAgICAgICAgIH0gd2hpbGUgKHJlc3VsdCA8IG1fbGVuZ3RoXyk7CisgICAgICAgICAgICBpZiAocmVzdWx0IDwgbV9sZW5ndGhfKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gLTEgLSBtX2xlbmd0aF87CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3V0aWwvVGltZVpvbmUuamF2YSBiL3NyYy9jb20vaWJtL2ljdS91dGlsL1RpbWVab25lLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYWJjNDQ1ZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS91dGlsL1RpbWVab25lLmphdmEKQEAgLTAsMCArMSw3MDcgQEAKKy8qCisgKiBAKCMpVGltZVpvbmUuamF2YQkxLjUxIDAwLzAxLzE5CisgKgorICoKKyAqICAgQ29weXJpZ2h0IChDKSAxOTk2LTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyAqICAgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKi8KKworCitwYWNrYWdlIGNvbS5pYm0uaWN1LnV0aWw7CitpbXBvcnQgamF2YS5pby5TZXJpYWxpemFibGU7CitpbXBvcnQgamF2YS5sYW5nLnJlZi5Tb2Z0UmVmZXJlbmNlOworaW1wb3J0IGphdmEuc2VjdXJpdHkuQWNjZXNzQ29udHJvbGxlcjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlByaXZpbGVnZWRBY3Rpb247CitpbXBvcnQgY29tLmlibS5pY3UudGV4dC5TaW1wbGVEYXRlRm9ybWF0OworaW1wb3J0IGNvbS5pYm0uaWN1LnRleHQuTnVtYmVyRm9ybWF0OworaW1wb3J0IGphdmEudGV4dC5QYXJzZVBvc2l0aW9uOworaW1wb3J0IHN1bi5zZWN1cml0eS5hY3Rpb24uR2V0UHJvcGVydHlBY3Rpb247CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7CisKKy8qKgorICogPGNvZGU+VGltZVpvbmU8L2NvZGU+IHJlcHJlc2VudHMgYSB0aW1lIHpvbmUgb2Zmc2V0LCBhbmQgYWxzbyBmaWd1cmVzIG91dCBkYXlsaWdodAorICogc2F2aW5ncy4KKyAqCisgKiA8cD4KKyAqIFR5cGljYWxseSwgeW91IGdldCBhIDxjb2RlPlRpbWVab25lPC9jb2RlPiB1c2luZyA8Y29kZT5nZXREZWZhdWx0PC9jb2RlPgorICogd2hpY2ggY3JlYXRlcyBhIDxjb2RlPlRpbWVab25lPC9jb2RlPiBiYXNlZCBvbiB0aGUgdGltZSB6b25lIHdoZXJlIHRoZSBwcm9ncmFtCisgKiBpcyBydW5uaW5nLiBGb3IgZXhhbXBsZSwgZm9yIGEgcHJvZ3JhbSBydW5uaW5nIGluIEphcGFuLCA8Y29kZT5nZXREZWZhdWx0PC9jb2RlPgorICogY3JlYXRlcyBhIDxjb2RlPlRpbWVab25lPC9jb2RlPiBvYmplY3QgYmFzZWQgb24gSmFwYW5lc2UgU3RhbmRhcmQgVGltZS4KKyAqCisgKiA8cD4KKyAqIFlvdSBjYW4gYWxzbyBnZXQgYSA8Y29kZT5UaW1lWm9uZTwvY29kZT4gdXNpbmcgPGNvZGU+Z2V0VGltZVpvbmU8L2NvZGU+CisgKiBhbG9uZyB3aXRoIGEgdGltZSB6b25lIElELiBGb3IgaW5zdGFuY2UsIHRoZSB0aW1lIHpvbmUgSUQgZm9yIHRoZQorICogVS5TLiBQYWNpZmljIFRpbWUgem9uZSBpcyAiQW1lcmljYS9Mb3NfQW5nZWxlcyIuIFNvLCB5b3UgY2FuIGdldCBhCisgKiBVLlMuIFBhY2lmaWMgVGltZSA8Y29kZT5UaW1lWm9uZTwvY29kZT4gb2JqZWN0IHdpdGg6CisgKiA8YmxvY2txdW90ZT4KKyAqIDxwcmU+CisgKiBUaW1lWm9uZSB0eiA9IFRpbWVab25lLmdldFRpbWVab25lKCJBbWVyaWNhL0xvc19BbmdlbGVzIik7CisgKiA8L3ByZT4KKyAqIDwvYmxvY2txdW90ZT4KKyAqIFlvdSBjYW4gdXNlIDxjb2RlPmdldEF2YWlsYWJsZUlEczwvY29kZT4gbWV0aG9kIHRvIGl0ZXJhdGUgdGhyb3VnaAorICogYWxsIHRoZSBzdXBwb3J0ZWQgdGltZSB6b25lIElEcy4gWW91IGNhbiB0aGVuIGNob29zZSBhCisgKiBzdXBwb3J0ZWQgSUQgdG8gZ2V0IGEgPGNvZGU+VGltZVpvbmU8L2NvZGU+LgorICogSWYgdGhlIHRpbWUgem9uZSB5b3Ugd2FudCBpcyBub3QgcmVwcmVzZW50ZWQgYnkgb25lIG9mIHRoZQorICogc3VwcG9ydGVkIElEcywgdGhlbiB5b3UgY2FuIGNyZWF0ZSBhIGN1c3RvbSB0aW1lIHpvbmUgSUQgd2l0aAorICogdGhlIGZvbGxvd2luZyBzeW50YXg6CisgKgorICogPGJsb2NrcXVvdGU+CisgKiA8cHJlPgorICogR01UWyt8LV1oaFtbOl1tbV0KKyAqIDwvcHJlPgorICogPC9ibG9ja3F1b3RlPgorICoKKyAqIEZvciBleGFtcGxlLCB5b3UgbWlnaHQgc3BlY2lmeSBHTVQrMTQ6MDAgYXMgYSBjdXN0b20KKyAqIHRpbWUgem9uZSBJRC4gIFRoZSA8Y29kZT5UaW1lWm9uZTwvY29kZT4gdGhhdCBpcyByZXR1cm5lZAorICogd2hlbiB5b3Ugc3BlY2lmeSBhIGN1c3RvbSB0aW1lIHpvbmUgSUQgZG9lcyBub3QgaW5jbHVkZQorICogZGF5bGlnaHQgc2F2aW5ncyB0aW1lLgorICogPHA+CisgKiBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIEpESyAxLjEueCwgc29tZSBvdGhlciB0aHJlZS1sZXR0ZXIgdGltZSB6b25lIElEcworICogKHN1Y2ggYXMgIlBTVCIsICJDVFQiLCAiQVNUIikgYXJlIGFsc28gc3VwcG9ydGVkLiBIb3dldmVyLCA8c3Ryb25nPnRoZWlyCisgKiB1c2UgaXMgZGVwcmVjYXRlZDwvc3Ryb25nPiBiZWNhdXNlIHRoZSBzYW1lIGFiYnJldmlhdGlvbiBpcyBvZnRlbiB1c2VkCisgKiBmb3IgbXVsdGlwbGUgdGltZSB6b25lcyAoZm9yIGV4YW1wbGUsICJDU1QiIGNvdWxkIGJlIFUuUy4gIkNlbnRyYWwgU3RhbmRhcmQKKyAqIFRpbWUiIGFuZCAiQ2hpbmEgU3RhbmRhcmQgVGltZSIpLCBhbmQgdGhlIEphdmEgcGxhdGZvcm0gY2FuIHRoZW4gb25seQorICogcmVjb2duaXplIG9uZSBvZiB0aGVtLgorICoKKyAqCisgKiBAc2VlICAgICAgICAgIENhbGVuZGFyCisgKiBAc2VlICAgICAgICAgIEdyZWdvcmlhbkNhbGVuZGFyCisgKiBAc2VlICAgICAgICAgIFNpbXBsZVRpbWVab25lCisgKiBAYXV0aG9yICAgICAgIE1hcmsgRGF2aXMsIERhdmlkIEdvbGRzbWl0aCwgQ2hlbi1MaWVoIEh1YW5nLCBBbGFuIExpdQorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK2Fic3RyYWN0IHB1YmxpYyBjbGFzcyBUaW1lWm9uZSBpbXBsZW1lbnRzIFNlcmlhbGl6YWJsZSwgQ2xvbmVhYmxlIHsKKyAgICAvKioKKyAgICAgKiBTb2xlIGNvbnN0cnVjdG9yLiAgKEZvciBpbnZvY2F0aW9uIGJ5IHN1YmNsYXNzIGNvbnN0cnVjdG9ycywgdHlwaWNhbGx5CisgICAgICogaW1wbGljaXQuKQorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBUaW1lWm9uZSgpIHsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBIHN0eWxlIHNwZWNpZmllciBmb3IgPGNvZGU+Z2V0RGlzcGxheU5hbWUoKTwvY29kZT4gaW5kaWNhdGluZworICAgICAqIGEgc2hvcnQgbmFtZSwgc3VjaCBhcyAiUFNULiIKKyAgICAgKiBAc2VlICNMT05HCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0hPUlQgPSAwOworCisgICAgLyoqCisgICAgICogQSBzdHlsZSBzcGVjaWZpZXIgZm9yIDxjb2RlPmdldERpc3BsYXlOYW1lKCk8L2NvZGU+IGluZGljYXRpbmcKKyAgICAgKiBhIGxvbmcgbmFtZSwgc3VjaCBhcyAiUGFjaWZpYyBTdGFuZGFyZCBUaW1lLiIKKyAgICAgKiBAc2VlICNTSE9SVAorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IExPTkcgID0gMTsKKworICAgIC8vIENvbnN0YW50cyB1c2VkIGludGVybmFsbHk7IHVuaXQgaXMgbWlsbGlzZWNvbmRzCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE9ORV9NSU5VVEUgPSA2MCoxMDAwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBPTkVfSE9VUiAgID0gNjAqT05FX01JTlVURTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgT05FX0RBWSAgICA9IDI0Kk9ORV9IT1VSOworCisgICAgLyoqCisgICAgICogQ2FjaGUgdG8gaG9sZCB0aGUgU2ltcGxlRGF0ZUZvcm1hdCBvYmplY3RzIGZvciBhIExvY2FsZS4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBIYXNodGFibGUgY2FjaGVkTG9jYWxlRGF0YSA9IG5ldyBIYXNodGFibGUoMyk7CisKKyAgICAvLyBQcm9jbGFpbSBzZXJpYWxpemF0aW9uIGNvbXBhdGliaWxpdHkgd2l0aCBKREsgMS4xCisgICAgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDM1ODE0NjMzNjkxNjY5MjQ5NjFMOworCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgdGltZSB6b25lIG9mZnNldCwgZm9yIGN1cnJlbnQgZGF0ZSwgbW9kaWZpZWQgaW4gY2FzZSBvZgorICAgICAqIGRheWxpZ2h0IHNhdmluZ3MuIFRoaXMgaXMgdGhlIG9mZnNldCB0byBhZGQgKnRvKiBVVEMgdG8gZ2V0IGxvY2FsIHRpbWUuCisgICAgICogQHBhcmFtIGVyYSB0aGUgZXJhIG9mIHRoZSBnaXZlbiBkYXRlLgorICAgICAqIEBwYXJhbSB5ZWFyIHRoZSB5ZWFyIGluIHRoZSBnaXZlbiBkYXRlLgorICAgICAqIEBwYXJhbSBtb250aCB0aGUgbW9udGggaW4gdGhlIGdpdmVuIGRhdGUuCisgICAgICogTW9udGggaXMgMC1iYXNlZC4gZS5nLiwgMCBmb3IgSmFudWFyeS4KKyAgICAgKiBAcGFyYW0gZGF5IHRoZSBkYXktaW4tbW9udGggb2YgdGhlIGdpdmVuIGRhdGUuCisgICAgICogQHBhcmFtIGRheU9mV2VlayB0aGUgZGF5LW9mLXdlZWsgb2YgdGhlIGdpdmVuIGRhdGUuCisgICAgICogQHBhcmFtIG1pbGxpc2Vjb25kcyB0aGUgbWlsbGlzIGluIGRheSBpbiA8ZW0+c3RhbmRhcmQ8L2VtPiBsb2NhbCB0aW1lLgorICAgICAqIEByZXR1cm4gdGhlIG9mZnNldCB0byBhZGQgKnRvKiBHTVQgdG8gZ2V0IGxvY2FsIHRpbWUuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgYWJzdHJhY3QgcHVibGljIGludCBnZXRPZmZzZXQoaW50IGVyYSwgaW50IHllYXIsIGludCBtb250aCwgaW50IGRheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGF5T2ZXZWVrLCBpbnQgbWlsbGlzZWNvbmRzKTsKKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIHRpbWUgem9uZSBvZmZzZXQsIGZvciBjdXJyZW50IGRhdGUsIG1vZGlmaWVkIGluIGNhc2Ugb2YKKyAgICAgKiBkYXlsaWdodCBzYXZpbmdzLiBUaGlzIGlzIHRoZSBvZmZzZXQgdG8gYWRkICp0byogVVRDIHRvIGdldCBsb2NhbCB0aW1lLgorICAgICAqIEBwYXJhbSBlcmEgdGhlIGVyYSBvZiB0aGUgZ2l2ZW4gZGF0ZS4KKyAgICAgKiBAcGFyYW0geWVhciB0aGUgeWVhciBpbiB0aGUgZ2l2ZW4gZGF0ZS4KKyAgICAgKiBAcGFyYW0gbW9udGggdGhlIG1vbnRoIGluIHRoZSBnaXZlbiBkYXRlLgorICAgICAqIE1vbnRoIGlzIDAtYmFzZWQuIGUuZy4sIDAgZm9yIEphbnVhcnkuCisgICAgICogQHBhcmFtIGRheSB0aGUgZGF5LWluLW1vbnRoIG9mIHRoZSBnaXZlbiBkYXRlLgorICAgICAqIEBwYXJhbSBkYXlPZldlZWsgdGhlIGRheS1vZi13ZWVrIG9mIHRoZSBnaXZlbiBkYXRlLgorICAgICAqIEBwYXJhbSBtaWxsaXNlY29uZHMgdGhlIG1pbGxpcyBpbiBkYXkgaW4gPGVtPnN0YW5kYXJkPC9lbT4gbG9jYWwgdGltZS4KKyAgICAgKiBAcGFyYW0gbW9udGhMZW5ndGggdGhlIGxlbmd0aCBvZiB0aGUgZ2l2ZW4gbW9udGggaW4gZGF5cy4KKyAgICAgKiBAcGFyYW0gcHJldk1vbnRoTGVuZ3RoIHRoZSBsZW5ndGggb2YgdGhlIHByZXZpb3VzIG1vbnRoIGluIGRheXMuCisgICAgICogQHJldHVybiB0aGUgb2Zmc2V0IHRvIGFkZCAqdG8qIEdNVCB0byBnZXQgbG9jYWwgdGltZS4KKyAgICAgKi8KKyAgICBpbnQgZ2V0T2Zmc2V0KGludCBlcmEsIGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXksCisJCSAgaW50IGRheU9mV2VlaywgaW50IG1pbGxpc2Vjb25kcywgaW50IG1vbnRoTGVuZ3RoLCBpbnQgcHJldk1vbnRoTGVuZ3RoKSB7CisJLy8gRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiB3aGljaCBpZ25vcmVzIHRoZSBtb250aExlbmd0aC4KKwkvLyBTaW1wbGVUaW1lWm9uZSBvdmVycmlkZXMgdGhpcyBhbmQgYWN0dWFsbHkgdXNlcyBtb250aExlbmd0aC4KKwlyZXR1cm4gZ2V0T2Zmc2V0KGVyYSwgeWVhciwgbW9udGgsIGRheSwgZGF5T2ZXZWVrLCBtaWxsaXNlY29uZHMpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBORVdDQUwKKyAgICAgKiBHZXRzIHRoZSBsb2NhbCB0aW1lIHpvbmUgb2Zmc2V0IGZvciB0aGlzIHpvbmUsIGZvciB0aGUgZ2l2ZW4gZGF0ZS4KKyAgICAgKiBAcGFyYW0gZXllYXIgdGhlIGV4dGVuZGVkIEdyZWdvcmlhbiB5ZWFyLCB3aXRoIDAgPSAxIEJDLCAtMSA9IDIgQkMsCisgICAgICogZXRjLgorICAgICAqLworICAgIGludCBnZXRPZmZzZXQoaW50IGV5ZWFyLCBpbnQgbW9udGgsIGludCBkYXlPZk1vbnRoLCBpbnQgZGF5T2ZXZWVrLAorICAgICAgICAgICAgICAgICAgaW50IG1pbGxpc2Vjb25kcywgaW50IG1vbnRoTGVuZ3RoLCBpbnQgcHJldk1vbnRoTGVuZ3RoKSB7CisgICAgICAgIC8vIFRFTVBPUkFSWTogQ29udmVydCB0aGUgZXllYXIgdG8gYW4gZXJhL3llYXIgYW5kIGNhbGwgb2xkIEFQSQorICAgICAgICBpbnQgZXJhID0gR3JlZ29yaWFuQ2FsZW5kYXIuQUQ7CisgICAgICAgIGlmIChleWVhciA8IDEpIHsKKyAgICAgICAgICAgIGVyYSA9IEdyZWdvcmlhbkNhbGVuZGFyLkJDOworICAgICAgICAgICAgZXllYXIgPSAxIC0gZXllYXI7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGdldE9mZnNldChlcmEsIGV5ZWFyLCBtb250aCwgZGF5T2ZNb250aCwgZGF5T2ZXZWVrLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1pbGxpc2Vjb25kcywgbW9udGhMZW5ndGgsIHByZXZNb250aExlbmd0aCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgYmFzZSB0aW1lIHpvbmUgb2Zmc2V0IHRvIEdNVC4KKyAgICAgKiBUaGlzIGlzIHRoZSBvZmZzZXQgdG8gYWRkICp0byogVVRDIHRvIGdldCBsb2NhbCB0aW1lLgorICAgICAqIEBwYXJhbSBvZmZzZXRNaWxsaXMgdGhlIGdpdmVuIGJhc2UgdGltZSB6b25lIG9mZnNldCB0byBHTVQuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgYWJzdHJhY3QgcHVibGljIHZvaWQgc2V0UmF3T2Zmc2V0KGludCBvZmZzZXRNaWxsaXMpOworCisgICAgLyoqCisgICAgICogR2V0cyB1bm1vZGlmaWVkIG9mZnNldCwgTk9UIG1vZGlmaWVkIGluIGNhc2Ugb2YgZGF5bGlnaHQgc2F2aW5ncy4KKyAgICAgKiBUaGlzIGlzIHRoZSBvZmZzZXQgdG8gYWRkICp0byogVVRDIHRvIGdldCBsb2NhbCB0aW1lLgorICAgICAqIEByZXR1cm4gdGhlIHVubW9kaWZpZWQgb2Zmc2V0IHRvIGFkZCAqdG8qIFVUQyB0byBnZXQgbG9jYWwgdGltZS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBhYnN0cmFjdCBwdWJsaWMgaW50IGdldFJhd09mZnNldCgpOworCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgSUQgb2YgdGhpcyB0aW1lIHpvbmUuCisgICAgICogQHJldHVybiB0aGUgSUQgb2YgdGhpcyB0aW1lIHpvbmUuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIFN0cmluZyBnZXRJRCgpCisgICAgeworICAgICAgICByZXR1cm4gSUQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgdGltZSB6b25lIElELiBUaGlzIGRvZXMgbm90IGNoYW5nZSBhbnkgb3RoZXIgZGF0YSBpbgorICAgICAqIHRoZSB0aW1lIHpvbmUgb2JqZWN0LgorICAgICAqIEBwYXJhbSBJRCB0aGUgbmV3IHRpbWUgem9uZSBJRC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRJRChTdHJpbmcgSUQpCisgICAgeworICAgICAgICBpZiAoSUQgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCk7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5JRCA9IElEOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSBuYW1lIG9mIHRoaXMgdGltZSB6b25lIHN1aXRhYmxlIGZvciBwcmVzZW50YXRpb24gdG8gdGhlIHVzZXIKKyAgICAgKiBpbiB0aGUgZGVmYXVsdCBsb2NhbGUuCisgICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgbG9uZyBuYW1lLCBub3QgaW5jbHVkaW5nIGRheWxpZ2h0IHNhdmluZ3MuCisgICAgICogSWYgdGhlIGRpc3BsYXkgbmFtZSBpcyBub3QgYXZhaWxhYmxlIGZvciB0aGUgbG9jYWxlLAorICAgICAqIHRoZW4gdGhpcyBtZXRob2QgcmV0dXJucyBhIHN0cmluZyBpbiB0aGUgZm9ybWF0CisgICAgICogPGNvZGU+R01UWystXWhoOm1tPC9jb2RlPi4KKyAgICAgKiBAcmV0dXJuIHRoZSBodW1hbi1yZWFkYWJsZSBuYW1lIG9mIHRoaXMgdGltZSB6b25lIGluIHRoZSBkZWZhdWx0IGxvY2FsZS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldERpc3BsYXlOYW1lKCkgeworICAgICAgICByZXR1cm4gZ2V0RGlzcGxheU5hbWUoZmFsc2UsIExPTkcsIExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSBuYW1lIG9mIHRoaXMgdGltZSB6b25lIHN1aXRhYmxlIGZvciBwcmVzZW50YXRpb24gdG8gdGhlIHVzZXIKKyAgICAgKiBpbiB0aGUgc3BlY2lmaWVkIGxvY2FsZS4KKyAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBsb25nIG5hbWUsIG5vdCBpbmNsdWRpbmcgZGF5bGlnaHQgc2F2aW5ncy4KKyAgICAgKiBJZiB0aGUgZGlzcGxheSBuYW1lIGlzIG5vdCBhdmFpbGFibGUgZm9yIHRoZSBsb2NhbGUsCisgICAgICogdGhlbiB0aGlzIG1ldGhvZCByZXR1cm5zIGEgc3RyaW5nIGluIHRoZSBmb3JtYXQKKyAgICAgKiA8Y29kZT5HTVRbKy1daGg6bW08L2NvZGU+LgorICAgICAqIEBwYXJhbSBsb2NhbGUgdGhlIGxvY2FsZSBpbiB3aGljaCB0byBzdXBwbHkgdGhlIGRpc3BsYXkgbmFtZS4KKyAgICAgKiBAcmV0dXJuIHRoZSBodW1hbi1yZWFkYWJsZSBuYW1lIG9mIHRoaXMgdGltZSB6b25lIGluIHRoZSBnaXZlbiBsb2NhbGUKKyAgICAgKiBvciBpbiB0aGUgZGVmYXVsdCBsb2NhbGUgaWYgdGhlIGdpdmVuIGxvY2FsZSBpcyBub3QgcmVjb2duaXplZC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldERpc3BsYXlOYW1lKExvY2FsZSBsb2NhbGUpIHsKKyAgICAgICAgcmV0dXJuIGdldERpc3BsYXlOYW1lKGZhbHNlLCBMT05HLCBsb2NhbGUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSBuYW1lIG9mIHRoaXMgdGltZSB6b25lIHN1aXRhYmxlIGZvciBwcmVzZW50YXRpb24gdG8gdGhlIHVzZXIKKyAgICAgKiBpbiB0aGUgZGVmYXVsdCBsb2NhbGUuCisgICAgICogSWYgdGhlIGRpc3BsYXkgbmFtZSBpcyBub3QgYXZhaWxhYmxlIGZvciB0aGUgbG9jYWxlLAorICAgICAqIHRoZW4gdGhpcyBtZXRob2QgcmV0dXJucyBhIHN0cmluZyBpbiB0aGUgZm9ybWF0CisgICAgICogPGNvZGU+R01UWystXWhoOm1tPC9jb2RlPi4KKyAgICAgKiBAcGFyYW0gZGF5bGlnaHQgaWYgdHJ1ZSwgcmV0dXJuIHRoZSBkYXlsaWdodCBzYXZpbmdzIG5hbWUuCisgICAgICogQHBhcmFtIHN0eWxlIGVpdGhlciA8Y29kZT5MT05HPC9jb2RlPiBvciA8Y29kZT5TSE9SVDwvY29kZT4KKyAgICAgKiBAcmV0dXJuIHRoZSBodW1hbi1yZWFkYWJsZSBuYW1lIG9mIHRoaXMgdGltZSB6b25lIGluIHRoZSBkZWZhdWx0IGxvY2FsZS4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldERpc3BsYXlOYW1lKGJvb2xlYW4gZGF5bGlnaHQsIGludCBzdHlsZSkgeworICAgICAgICByZXR1cm4gZ2V0RGlzcGxheU5hbWUoZGF5bGlnaHQsIHN0eWxlLCBMb2NhbGUuZ2V0RGVmYXVsdCgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgbmFtZSBvZiB0aGlzIHRpbWUgem9uZSBzdWl0YWJsZSBmb3IgcHJlc2VudGF0aW9uIHRvIHRoZSB1c2VyCisgICAgICogaW4gdGhlIHNwZWNpZmllZCBsb2NhbGUuCisgICAgICogSWYgdGhlIGRpc3BsYXkgbmFtZSBpcyBub3QgYXZhaWxhYmxlIGZvciB0aGUgbG9jYWxlLAorICAgICAqIHRoZW4gdGhpcyBtZXRob2QgcmV0dXJucyBhIHN0cmluZyBpbiB0aGUgZm9ybWF0CisgICAgICogPGNvZGU+R01UWystXWhoOm1tPC9jb2RlPi4KKyAgICAgKiBAcGFyYW0gZGF5bGlnaHQgaWYgdHJ1ZSwgcmV0dXJuIHRoZSBkYXlsaWdodCBzYXZpbmdzIG5hbWUuCisgICAgICogQHBhcmFtIHN0eWxlIGVpdGhlciA8Y29kZT5MT05HPC9jb2RlPiBvciA8Y29kZT5TSE9SVDwvY29kZT4KKyAgICAgKiBAcGFyYW0gbG9jYWxlIHRoZSBsb2NhbGUgaW4gd2hpY2ggdG8gc3VwcGx5IHRoZSBkaXNwbGF5IG5hbWUuCisgICAgICogQHJldHVybiB0aGUgaHVtYW4tcmVhZGFibGUgbmFtZSBvZiB0aGlzIHRpbWUgem9uZSBpbiB0aGUgZ2l2ZW4gbG9jYWxlCisgICAgICogb3IgaW4gdGhlIGRlZmF1bHQgbG9jYWxlIGlmIHRoZSBnaXZlbiBsb2NhbGUgaXMgbm90IHJlY29nbml6ZWQuCisgICAgICogQGV4Y2VwdGlvbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gc3R5bGUgaXMgaW52YWxpZC4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIGdldERpc3BsYXlOYW1lKGJvb2xlYW4gZGF5bGlnaHQsIGludCBzdHlsZSwgTG9jYWxlIGxvY2FsZSkgeworICAgICAgICAvKiBOT1RFUzoKKyAgICAgICAgICogKDEpIFdlIHVzZSBTaW1wbGVEYXRlRm9ybWF0IGZvciBzaW1wbGljaXR5OyB3ZSBjb3VsZCBkbyB0aGlzCisgICAgICAgICAqIG1vcmUgZWZmaWNpZW50bHkgYnV0IGl0IHdvdWxkIGR1cGxpY2F0ZSB0aGUgU2ltcGxlRGF0ZUZvcm1hdCBjb2RlCisgICAgICAgICAqIGhlcmUsIHdoaWNoIGlzIHVuZGVzaXJhYmxlLgorICAgICAgICAgKiAoMikgQXR0ZW1wdHMgdG8gbW92ZSB0aGUgY29kZSBmcm9tIFNpbXBsZURhdGVGb3JtYXQgdG8gaGVyZSBhbHNvIHJ1bgorICAgICAgICAgKiBhZ3JvdW5kIGJlY2F1c2UgdGhpcyByZXF1aXJlcyBTaW1wbGVEYXRlRm9ybWF0IHRvIGtlZXAgYSBMb2NhbGUKKyAgICAgICAgICogb2JqZWN0IGFyb3VuZCwgd2hpY2ggaXQgY3VycmVudGx5IGRvZXNuJ3Q7IHRvIHN5bnRoZXNpemUgc3VjaCBhCisgICAgICAgICAqIGxvY2FsZSB1cG9uIHJlc3VycmVjdGlvbjsgYW5kIHRvIHNvbWVob3cgaGFuZGxlIHRoZSBzcGVjaWFsIGNhc2Ugb2YKKyAgICAgICAgICogY29uc3RydWN0aW9uIGZyb20gYSBEYXRlRm9ybWF0U3ltYm9scyBvYmplY3QuCisgICAgICAgICAqLworICAgICAgICBpZiAoc3R5bGUgIT0gU0hPUlQgJiYgc3R5bGUgIT0gTE9ORykgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSWxsZWdhbCBzdHlsZTogIiArIHN0eWxlKTsKKyAgICAgICAgfQorICAgICAgICAvLyBXZSBrZWVwIGEgY2FjaGUsIGluZGV4ZWQgYnkgbG9jYWxlLiAgVGhlIGNhY2hlIGNvbnRhaW5zIGEKKyAgICAgICAgLy8gU2ltcGxlRGF0ZUZvcm1hdCBvYmplY3QsIHdoaWNoIHdlIGNyZWF0ZSBvbiBkZW1hbmQuCisgICAgICAgIFNvZnRSZWZlcmVuY2UgZGF0YSA9IChTb2Z0UmVmZXJlbmNlKWNhY2hlZExvY2FsZURhdGEuZ2V0KGxvY2FsZSk7CisgICAgICAgIFNpbXBsZURhdGVGb3JtYXQgZm9ybWF0OworICAgICAgICBpZiAoZGF0YSA9PSBudWxsIHx8CisgICAgICAgICAgICAoZm9ybWF0ID0gKFNpbXBsZURhdGVGb3JtYXQpZGF0YS5nZXQoKSkgPT0gbnVsbCkgeworICAgICAgICAgICAgZm9ybWF0ID0gbmV3IFNpbXBsZURhdGVGb3JtYXQobnVsbCwgbG9jYWxlKTsKKyAgICAgICAgICAgIGNhY2hlZExvY2FsZURhdGEucHV0KGxvY2FsZSwgbmV3IFNvZnRSZWZlcmVuY2UoZm9ybWF0KSk7CisgICAgICAgIH0KKyAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IFNpbXBsZVRpbWVab25lIGFzIGEgc3RhbmQtaW4gZm9yIHRoaXMgem9uZTsgdGhlIHN0YW5kLWluCisgICAgICAgIC8vIHdpbGwgaGF2ZSBubyBEU1QsIG9yIERTVCBkdXJpbmcgSmFudWFyeSwgYnV0IHRoZSBzYW1lIElEIGFuZCBvZmZzZXQsCisgICAgICAgIC8vIGFuZCBoZW5jZSB0aGUgc2FtZSBkaXNwbGF5IG5hbWUuICBXZSBkb24ndCBjYWNoZSB0aGVzZSBiZWNhdXNlCisgICAgICAgIC8vIHRoZXkncmUgc21hbGwgYW5kIGNoZWFwIHRvIGNyZWF0ZS4KKyAgICAgICAgU2ltcGxlVGltZVpvbmUgdHo7CisgICAgICAgIGlmIChkYXlsaWdodCAmJiB1c2VEYXlsaWdodFRpbWUoKSkgeworICAgICAgICAgICAgaW50IHNhdmluZ3MgPSBPTkVfSE9VUjsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgc2F2aW5ncyA9ICgoU2ltcGxlVGltZVpvbmUpIHRoaXMpLmdldERTVFNhdmluZ3MoKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKENsYXNzQ2FzdEV4Y2VwdGlvbiBlKSB7fQorICAgICAgICAgICAgdHogPSBuZXcgU2ltcGxlVGltZVpvbmUoZ2V0UmF3T2Zmc2V0KCksIGdldElEKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxlbmRhci5KQU5VQVJZLCAxLCAwLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsZW5kYXIuRkVCUlVBUlksIDEsIDAsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZpbmdzKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHR6ID0gbmV3IFNpbXBsZVRpbWVab25lKGdldFJhd09mZnNldCgpLCBnZXRJRCgpKTsKKyAgICAgICAgfQorICAgICAgICBmb3JtYXQuYXBwbHlQYXR0ZXJuKHN0eWxlID09IExPTkcgPyAienp6eiIgOiAieiIpOyAgICAgIAorICAgICAgICBmb3JtYXQuc2V0VGltZVpvbmUodHopOworICAgICAgICAvLyBGb3JtYXQgYSBkYXRlIGluIEphbnVhcnkuICBXZSB1c2UgdGhlIHZhbHVlIDEwKk9ORV9EQVkgPT0gSmFuIDExIDE5NzAKKyAgICAgICAgLy8gMDowMCBHTVQuCisgICAgICAgIHJldHVybiBmb3JtYXQuZm9ybWF0KG5ldyBEYXRlKDg2NDAwMDAwMEwpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBRdWVyaWVzIGlmIHRoaXMgdGltZSB6b25lIHVzZXMgZGF5bGlnaHQgc2F2aW5ncyB0aW1lLgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGlzIHRpbWUgem9uZSB1c2VzIGRheWxpZ2h0IHNhdmluZ3MgdGltZSwKKyAgICAgKiBmYWxzZSwgb3RoZXJ3aXNlLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIGFic3RyYWN0IHB1YmxpYyBib29sZWFuIHVzZURheWxpZ2h0VGltZSgpOworCisgICAgLyoqCisgICAgICogUXVlcmllcyBpZiB0aGUgZ2l2ZW4gZGF0ZSBpcyBpbiBkYXlsaWdodCBzYXZpbmdzIHRpbWUgaW4KKyAgICAgKiB0aGlzIHRpbWUgem9uZS4KKyAgICAgKiBAcGFyYW0gZGF0ZSB0aGUgZ2l2ZW4gRGF0ZS4KKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIGRhdGUgaXMgaW4gZGF5bGlnaHQgc2F2aW5ncyB0aW1lLAorICAgICAqIGZhbHNlLCBvdGhlcndpc2UuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgYWJzdHJhY3QgcHVibGljIGJvb2xlYW4gaW5EYXlsaWdodFRpbWUoRGF0ZSBkYXRlKTsKKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIDxjb2RlPlRpbWVab25lPC9jb2RlPiBmb3IgdGhlIGdpdmVuIElELgorICAgICAqCisgICAgICogQHBhcmFtIElEIHRoZSBJRCBmb3IgYSA8Y29kZT5UaW1lWm9uZTwvY29kZT4sIGVpdGhlciBhbiBhYmJyZXZpYXRpb24KKyAgICAgKiBzdWNoIGFzICJQU1QiLCBhIGZ1bGwgbmFtZSBzdWNoIGFzICJBbWVyaWNhL0xvc19BbmdlbGVzIiwgb3IgYSBjdXN0b20KKyAgICAgKiBJRCBzdWNoIGFzICJHTVQtODowMCIuIE5vdGUgdGhhdCB0aGUgc3VwcG9ydCBvZiBhYmJyZXZpYXRpb25zIGlzCisgICAgICogZm9yIEpESyAxLjEueCBjb21wYXRpYmlsaXR5IG9ubHkgYW5kIGZ1bGwgbmFtZXMgc2hvdWxkIGJlIHVzZWQuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSBzcGVjaWZpZWQgPGNvZGU+VGltZVpvbmU8L2NvZGU+LCBvciB0aGUgR01UIHpvbmUgaWYgdGhlIGdpdmVuIElECisgICAgICogY2Fubm90IGJlIHVuZGVyc3Rvb2QuCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBzeW5jaHJvbml6ZWQgVGltZVpvbmUgZ2V0VGltZVpvbmUoU3RyaW5nIElEKSB7CisgICAgICAgIC8qIFdlIGZpcnN0IHRyeSB0byBsb29rdXAgdGhlIHpvbmUgSUQgaW4gb3VyIGhhc2h0YWJsZS4gIElmIHRoaXMgZmFpbHMsCisgICAgICAgICAqIHdlIHRyeSB0byBwYXJzZSBpdCBhcyBhIGN1c3RvbSBzdHJpbmcgR01UWystXWhoOm1tLiAgVGhpcyBhbGxvd3MgdXMKKyAgICAgICAgICogdG8gcmVjb2duaXplIHpvbmVzIGluIHVzZXIudGltZXpvbmUgdGhhdCBvdGhlcndpc2UgY2Fubm90IGJlCisgICAgICAgICAqIGlkZW50aWZpZWQuICBXZSBkbyB0aGUgcmVjb2duaXRpb24gaGVyZSwgcmF0aGVyIHRoYW4gaW4gZ2V0RGVmYXVsdCgpLAorICAgICAgICAgKiBzbyB0aGF0IHRoZSBkZWZhdWx0IHpvbmUgaXMgYWx3YXlzIHRoZSByZXN1bHQgb2YgY2FsbGluZworICAgICAgICAgKiBnZXRUaW1lWm9uZSgpIHdpdGggdGhlIHByb3BlcnR5IHVzZXIudGltZXpvbmUuCisgICAgICAgICAqCisgICAgICAgICAqIElmIGFsbCBlbHNlIGZhaWxzLCB3ZSByZXR1cm4gR01ULCB3aGljaCBpcyBwcm9iYWJseSBub3Qgd2hhdCB0aGUgdXNlcgorICAgICAgICAgKiB3YW50cywgYnV0IGF0IGxlYXN0IGlzIGEgZnVuY3Rpb25pbmcgVGltZVpvbmUgb2JqZWN0LiAqLworICAgICAgICBUaW1lWm9uZSB6b25lID0gVGltZVpvbmVEYXRhLmdldChJRCk7CisgICAgICAgIGlmICh6b25lID09IG51bGwpIHpvbmUgPSBwYXJzZUN1c3RvbVRpbWVab25lKElEKTsKKyAgICAgICAgaWYgKHpvbmUgPT0gbnVsbCkgem9uZSA9IChUaW1lWm9uZSlHTVQuY2xvbmUoKTsKKyAgICAgICAgcmV0dXJuIHpvbmU7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgbmV3IFN0cmluZyBhcnJheSBjb250YWluaW5nIGFsbCBzeXN0ZW0gVGltZVpvbmUgSURzCisgICAgICogd2l0aCB0aGUgZ2l2ZW4gcmF3IG9mZnNldCBmcm9tIEdNVC4gIFRoZXNlIElEcyBtYXkgYmUgcGFzc2VkIHRvCisgICAgICogPGNvZGU+Z2V0KCk8L2NvZGU+IHRvIGNvbnN0cnVjdCB0aGUgY29ycmVzcG9uZGluZyBUaW1lWm9uZQorICAgICAqIG9iamVjdC4KKyAgICAgKiBAcGFyYW0gcmF3T2Zmc2V0IHRoZSBvZmZzZXQgaW4gbWlsbGlzZWNvbmRzIGZyb20gR01UCisgICAgICogQHJldHVybiBhbiBhcnJheSBvZiBJRHMgZm9yIHN5c3RlbSBUaW1lWm9uZXMgd2l0aCB0aGUgZ2l2ZW4KKyAgICAgKiByYXcgb2Zmc2V0LiAgSWYgdGhlcmUgYXJlIG5vbmUsIHJldHVybiBhIHplcm8tbGVuZ3RoIGFycmF5LgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nW10gZ2V0QXZhaWxhYmxlSURzKGludCByYXdPZmZzZXQpIHsKKyAgICAgICAgcmV0dXJuIFRpbWVab25lRGF0YS5nZXRBdmFpbGFibGVJRHMocmF3T2Zmc2V0KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSBuZXcgU3RyaW5nIGFycmF5IGNvbnRhaW5pbmcgYWxsIHN5c3RlbSBUaW1lWm9uZSBJRHMKKyAgICAgKiBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIGNvdW50cnkuICBUaGVzZSBJRHMgbWF5IGJlIHBhc3NlZCB0bworICAgICAqIDxjb2RlPmdldCgpPC9jb2RlPiB0byBjb25zdHJ1Y3QgdGhlIGNvcnJlc3BvbmRpbmcgVGltZVpvbmUKKyAgICAgKiBvYmplY3QuCisgICAgICogQHBhcmFtIGEgdHdvLWxldHRlciBJU08gMzE2NiBjb3VudHJ5IGNvZGUsIG9yIDxjb2RlPm51bGw8L2NvZGU+CisgICAgICogdG8gcmV0dXJuIHpvbmVzIG5vdCBhc3NvY2lhdGVkIHdpdGggYW55IGNvdW50cnkKKyAgICAgKiBAcmV0dXJuIGFuIGFycmF5IG9mIElEcyBmb3Igc3lzdGVtIFRpbWVab25lcyBpbiB0aGUgZ2l2ZW4KKyAgICAgKiBjb3VudHJ5LiAgSWYgdGhlcmUgYXJlIG5vbmUsIHJldHVybiBhIHplcm8tbGVuZ3RoIGFycmF5LgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nW10gZ2V0QXZhaWxhYmxlSURzKFN0cmluZyBjb3VudHJ5KSB7CisgICAgICAgIHJldHVybiBUaW1lWm9uZURhdGEuZ2V0QXZhaWxhYmxlSURzKGNvdW50cnkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhIG5ldyBTdHJpbmcgYXJyYXkgY29udGFpbmluZyBhbGwgc3lzdGVtIFRpbWVab25lIElEcy4KKyAgICAgKiBUaGVzZSBJRHMgKGFuZCBvbmx5IHRoZXNlIElEcykgbWF5IGJlIHBhc3NlZCB0bworICAgICAqIDxjb2RlPmdldCgpPC9jb2RlPiB0byBjb25zdHJ1Y3QgdGhlIGNvcnJlc3BvbmRpbmcgVGltZVpvbmUKKyAgICAgKiBvYmplY3QuCisgICAgICogQHJldHVybiBhbiBhcnJheSBvZiBhbGwgc3lzdGVtIFRpbWVab25lIElEcworICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nW10gZ2V0QXZhaWxhYmxlSURzKCkgeworICAgICAgICByZXR1cm4gVGltZVpvbmVEYXRhLmdldEF2YWlsYWJsZUlEcygpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgSURzIGluIHRoZSBlcXVpdmFsZW5jeSBncm91cCB0aGF0CisgICAgICogaW5jbHVkZXMgdGhlIGdpdmVuIElELiAgQW4gZXF1aXZhbGVuY3kgZ3JvdXAgY29udGFpbnMgem9uZXMKKyAgICAgKiB0aGF0IGhhdmUgdGhlIHNhbWUgR01UIG9mZnNldCBhbmQgcnVsZXMuCisgICAgICoKKyAgICAgKiA8cD5UaGUgcmV0dXJuZWQgY291bnQgaW5jbHVkZXMgdGhlIGdpdmVuIElEOyBpdCBpcyBhbHdheXMgPj0gMQorICAgICAqIGZvciB2YWxpZCBJRHMuICBUaGUgZ2l2ZW4gSUQgbXVzdCBiZSBhIHN5c3RlbSB0aW1lIHpvbmUuICBJZiBpdAorICAgICAqIGlzIG5vdCwgcmV0dXJucyB6ZXJvLgorICAgICAqIEBwYXJhbSBpZCBhIHN5c3RlbSB0aW1lIHpvbmUgSUQKKyAgICAgKiBAcmV0dXJuIHRoZSBudW1iZXIgb2Ygem9uZXMgaW4gdGhlIGVxdWl2YWxlbmN5IGdyb3VwIGNvbnRhaW5pbmcKKyAgICAgKiAnaWQnLCBvciB6ZXJvIGlmICdpZCcgaXMgbm90IGEgdmFsaWQgc3lzdGVtIElECisgICAgICogQHNlZSAjZ2V0RXF1aXZhbGVudElECisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnQgY291bnRFcXVpdmFsZW50SURzKFN0cmluZyBpZCkgeworICAgICAgICByZXR1cm4gVGltZVpvbmVEYXRhLmNvdW50RXF1aXZhbGVudElEcyhpZCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhbiBJRCBpbiB0aGUgZXF1aXZhbGVuY3kgZ3JvdXAgdGhhdAorICAgICAqIGluY2x1ZGVzIHRoZSBnaXZlbiBJRC4gIEFuIGVxdWl2YWxlbmN5IGdyb3VwIGNvbnRhaW5zIHpvbmVzCisgICAgICogdGhhdCBoYXZlIHRoZSBzYW1lIEdNVCBvZmZzZXQgYW5kIHJ1bGVzLgorICAgICAqCisgICAgICogPHA+VGhlIGdpdmVuIGluZGV4IG11c3QgYmUgaW4gdGhlIHJhbmdlIDAuLm4tMSwgd2hlcmUgbiBpcyB0aGUKKyAgICAgKiB2YWx1ZSByZXR1cm5lZCBieSA8Y29kZT5jb3VudEVxdWl2YWxlbnRJRHMoaWQpPC9jb2RlPi4gIEZvcgorICAgICAqIHNvbWUgdmFsdWUgb2YgJ2luZGV4JywgdGhlIHJldHVybmVkIHZhbHVlIHdpbGwgYmUgZXF1YWwgdG8gdGhlCisgICAgICogZ2l2ZW4gaWQuICBJZiB0aGUgZ2l2ZW4gaWQgaXMgbm90IGEgdmFsaWQgc3lzdGVtIHRpbWUgem9uZSwgb3IKKyAgICAgKiBpZiAnaW5kZXgnIGlzIG91dCBvZiByYW5nZSwgdGhlbiByZXR1cm5zIGFuIGVtcHR5IHN0cmluZy4KKyAgICAgKiBAcGFyYW0gaWQgYSBzeXN0ZW0gdGltZSB6b25lIElECisgICAgICogQHBhcmFtIGluZGV4IGEgdmFsdWUgZnJvbSAwIHRvIG4tMSwgd2hlcmUgbiBpcyB0aGUgdmFsdWUKKyAgICAgKiByZXR1cm5lZCBieSA8Y29kZT5jb3VudEVxdWl2YWxlbnRJRHMoaWQpPC9jb2RlPgorICAgICAqIEByZXR1cm4gdGhlIElEIG9mIHRoZSBpbmRleC10aCB6b25lIGluIHRoZSBlcXVpdmFsZW5jeSBncm91cAorICAgICAqIGNvbnRhaW5pbmcgJ2lkJywgb3IgYW4gZW1wdHkgc3RyaW5nIGlmICdpZCcgaXMgbm90IGEgdmFsaWQKKyAgICAgKiBzeXN0ZW0gSUQgb3IgJ2luZGV4JyBpcyBvdXQgb2YgcmFuZ2UKKyAgICAgKiBAc2VlICNjb3VudEVxdWl2YWxlbnRJRHMKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRFcXVpdmFsZW50SUQoU3RyaW5nIGlkLCBpbnQgaW5kZXgpIHsKKyAgICAgICAgcmV0dXJuIFRpbWVab25lRGF0YS5nZXRFcXVpdmFsZW50SUQoaWQsIGluZGV4KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBwbGF0Zm9ybSBkZWZpbmVkIFRpbWVab25lIElELgorICAgICAqKi8KKy8vICAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBTdHJpbmcgZ2V0U3lzdGVtVGltZVpvbmVJRChTdHJpbmcgamF2YUhvbWUsIAorLy8JCQkJCQkgICAgIFN0cmluZyByZWdpb24pOworCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgZGVmYXVsdCA8Y29kZT5UaW1lWm9uZTwvY29kZT4gZm9yIHRoaXMgaG9zdC4KKyAgICAgKiBUaGUgc291cmNlIG9mIHRoZSBkZWZhdWx0IDxjb2RlPlRpbWVab25lPC9jb2RlPiAKKyAgICAgKiBtYXkgdmFyeSB3aXRoIGltcGxlbWVudGF0aW9uLgorICAgICAqIEByZXR1cm4gYSBkZWZhdWx0IDxjb2RlPlRpbWVab25lPC9jb2RlPi4KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIHN5bmNocm9uaXplZCBUaW1lWm9uZSBnZXREZWZhdWx0KCkgeworICAgICAgICBpZiAoZGVmYXVsdFpvbmUgPT0gbnVsbCkgeworICAgICAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBjYXVzZXMgYW4gQWNjZXNzQ29udHJvbEV4Y2VwdGlvbiB3aGVuIHJ1biBpbiBhbgorICAgICAgICAgICAgLy8gYXBwbGV0LiAgVG8gZ2V0IGFyb3VuZCB0aGlzLCB3ZSBkb24ndCByZWFkIHRoZSB1c2VyLnRpbWV6b25lCisgICAgICAgICAgICAvLyBwcm9wZXJ0eTsgaW5zdGVhZCB3ZSBkZWZlciB0byBUaW1lWm9uZS5nZXREZWZhdWx0KCkuIC0gTGl1CisgICAgICAgICAgICAvLyEvLyBnZXQgdGhlIHRpbWUgem9uZSBJRCBmcm9tIHRoZSBzeXN0ZW0gcHJvcGVydGllcworICAgICAgICAgICAgLy8hU3RyaW5nIHpvbmVJRCA9IChTdHJpbmcpIEFjY2Vzc0NvbnRyb2xsZXIuZG9Qcml2aWxlZ2VkKAorICAgICAgICAgICAgLy8hICAgIG5ldyBHZXRQcm9wZXJ0eUFjdGlvbigidXNlci50aW1lem9uZSIpKTsKKyAgICAgICAgICAgIC8vIQorCSAgICAvLyEvLyBpZiB0aGUgdGltZSB6b25lIElEIGlzIG5vdCBzZXQgKHlldCksIHBlcmZvcm0gdGhlCisJICAgIC8vIS8vIHBsYXRmb3JtIHRvIEphdmEgdGltZSB6b25lIElEIG1hcHBpbmcuCisJICAgIC8vIWlmICh6b25lSUQgPT0gbnVsbCB8fCB6b25lSUQuZXF1YWxzKCIiKSkgeyAKKwkJLy9TdHJpbmcgcmVnaW9uID0gKFN0cmluZykgQWNjZXNzQ29udHJvbGxlci5kb1ByaXZpbGVnZWQoCisJCS8vICAgIG5ldyBHZXRQcm9wZXJ0eUFjdGlvbigidXNlci5yZWdpb24iKSk7CisJCS8vU3RyaW5nIGphdmFIb21lID0gKFN0cmluZykgQWNjZXNzQ29udHJvbGxlci5kb1ByaXZpbGVnZWQoCisJCS8vICAgIG5ldyBHZXRQcm9wZXJ0eUFjdGlvbigiamF2YS5ob21lIikpOworCQkvL3pvbmVJRCA9IGdldFN5c3RlbVRpbWVab25lSUQoamF2YUhvbWUsIHJlZ2lvbik7CisKKyAgICAgICAgICAgICAgICAvLyBbaWN1NGogV2UgZ2V0IHRoZSBkZWZhdWx0IHpvbmUgYnkgcXVlcnlpbmcgamF2YS51dGlsLlRpbWVab25lLAorICAgICAgICAgICAgICAgIC8vICAgICAgICBhbmQgdGhlbiBhdHRlbXB0aW5nIHRvIG1hcCB0aGUgSUQuIC0gbGl1IF0KKyAgICAgICAgICAgICAgICBqYXZhLnV0aWwuVGltZVpvbmUgX2RlZmF1bHQgPSBqYXZhLnV0aWwuVGltZVpvbmUuZ2V0RGVmYXVsdCgpOworICAgICAgICAgICAgICAgIGlmIChmYWxzZSkgU3lzdGVtLm91dC5wcmludGxuKCJqYXZhLnV0aWwuVFouZGVmYXVsdCAiICsgX2RlZmF1bHQpOworICAgICAgICAgICAgICAgIFN0cmluZyB6b25lSUQgPSBfZGVmYXVsdC5nZXRJRCgpOworICAgICAgICAgICAgICAgIGRlZmF1bHRab25lID0gVGltZVpvbmVEYXRhLmdldCh6b25lSUQpOworICAgICAgICAgICAgICAgIGlmIChkZWZhdWx0Wm9uZSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFtpY3U0aiBUaGlzIG1lYW5zIHRoYXQgdGhlIHpvbmUgcmV0dXJuZWQgYnkgdGhlIEpESyBkb2VzCisgICAgICAgICAgICAgICAgICAgIC8vIG5vdCBleGlzdCBpbiBvdXIgdGFibGUuICBXZSB3aWxsLCBmb3IgdGhlIG1vbWVudCwgbWFwIHRvCisgICAgICAgICAgICAgICAgICAgIC8vIGEgc3RkIHpvbmUgdGhhdCBoYXMgdGhlIHNhbWUgcmF3IG9mZnNldC4gIEluIHRoZSBmdXR1cmUKKyAgICAgICAgICAgICAgICAgICAgLy8gd2UgbWlnaHQgZmluZCBpdCB3b3J0aHdoaWxlIHRvIGV4dHJhY3QgdGhlIHJ1bGVzIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgIC8vIHN5c3RlbSBkZWZhdWx0IHpvbmUsIGJ1dCB0aGlzIGlzIHRvbyBtdWNoIHRyb3VibGUgZm9yCisgICAgICAgICAgICAgICAgICAgIC8vIG5vdy4gIEl0IHdpbGwgYmUgZWFzaWVyIHRvIGV4dGVuZCBvdXIgbWFwcGluZyB0YWJsZSB0bworICAgICAgICAgICAgICAgICAgICAvLyBtYXRjaCB0aGUgSkRLcyB3ZSB3YW50IHRvIHN1cHBvcnQuIC0gbGl1IF0KKyAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGphdmEudXRpbC5TaW1wbGVUaW1lWm9uZSBzID0gKGphdmEudXRpbC5TaW1wbGVUaW1lWm9uZSkgX2RlZmF1bHQ7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Wm9uZSA9IG5ldyBTaW1wbGVUaW1lWm9uZShzLmdldFJhd09mZnNldCgpLCBzLmdldElEKCkpOworICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChDbGFzc0Nhc3RFeGNlcHRpb24gZSkge30KKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAoem9uZUlEID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHpvbmVJRCA9IEdNVF9JRDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAvLyBBZ2Fpbiwgd2UgY2FuJ3QgZG8gdGhpcyBmcm9tIG91dHNpZGUgdGhlIEpESyBpbiBhbiBhcHBsZXQuCisgICAgICAgICAgICAgICAgICAgIC8vIWZpbmFsIFN0cmluZyBpZCA9IHpvbmVJRDsKKyAgICAgICAgICAgICAgICAgICAgLy8hQWNjZXNzQ29udHJvbGxlci5kb1ByaXZpbGVnZWQobmV3IFByaXZpbGVnZWRBY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIC8vISAgICBwdWJsaWMgT2JqZWN0IHJ1bigpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8hICAgICAgICBTeXN0ZW0uc2V0UHJvcGVydHkoInVzZXIudGltZXpvbmUiLCBpZCk7CisgICAgICAgICAgICAgICAgICAgIC8vISAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICAgICAgICAgIC8vISAgICB9CisgICAgICAgICAgICAgICAgICAgIC8vIX0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIX0KKyAgICAgICAgICAgIGlmIChkZWZhdWx0Wm9uZSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgZGVmYXVsdFpvbmUgPSBnZXRUaW1lWm9uZSh6b25lSUQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGZhbHNlKSBTeXN0ZW0ub3V0LnByaW50bG4oImNvbS5pYm0uaWN1LnV0aWwuVFouZGVmYXVsdCAiICsgZGVmYXVsdFpvbmUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAoVGltZVpvbmUpZGVmYXVsdFpvbmUuY2xvbmUoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSA8Y29kZT5UaW1lWm9uZTwvY29kZT4gdGhhdCBpcworICAgICAqIHJldHVybmVkIGJ5IHRoZSA8Y29kZT5nZXREZWZhdWx0PC9jb2RlPiBtZXRob2QuICBJZiA8Y29kZT56b25lPC9jb2RlPgorICAgICAqIGlzIG51bGwsIHJlc2V0IHRoZSBkZWZhdWx0IHRvIHRoZSB2YWx1ZSBpdCBoYWQgb3JpZ2luYWxseSB3aGVuIHRoZQorICAgICAqIFZNIGZpcnN0IHN0YXJ0ZWQuCisgICAgICogQHBhcmFtIHpvbmUgdGhlIG5ldyBkZWZhdWx0IHRpbWUgem9uZQorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgc3luY2hyb25pemVkIHZvaWQgc2V0RGVmYXVsdChUaW1lWm9uZSB6b25lKQorICAgIHsKKyAgICAgICAgZGVmYXVsdFpvbmUgPSB6b25lOworICAgICAgICAvLyBbaWN1NGogS2VlcCBqYXZhLnV0aWwuVGltZVpvbmUgZGVmYXVsdCBpbiBzeW5jIHNvIGphdmEudXRpbC5EYXRlCisgICAgICAgIC8vICAgICAgICBjYW4gaW50ZXJvcGVyYXRlIHdpdGggY29tLmlibS5pY3UudXRpbCBjbGFzc2VzLiAgVGhpcyBzb2x1dGlvbgorICAgICAgICAvLyAgICAgICAgaXMgX2ltcGVyZmVjdF87IHNlZSBTaW1wbGVUaW1lWm9uZUFkYXB0ZXIuIC0gbGl1XQorICAgICAgICB0cnkgeworICAgICAgICAgICAgamF2YS51dGlsLlRpbWVab25lLnNldERlZmF1bHQoCisgICAgICAgICAgICAgICAgbmV3IFNpbXBsZVRpbWVab25lQWRhcHRlcigoU2ltcGxlVGltZVpvbmUpIHpvbmUpKTsKKyAgICAgICAgfSBjYXRjaCAoQ2xhc3NDYXN0RXhjZXB0aW9uIGUpIHt9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0cnVlIGlmIHRoaXMgem9uZSBoYXMgdGhlIHNhbWUgcnVsZSBhbmQgb2Zmc2V0IGFzIGFub3RoZXIgem9uZS4KKyAgICAgKiBUaGF0IGlzLCBpZiB0aGlzIHpvbmUgZGlmZmVycyBvbmx5IGluIElELCBpZiBhdCBhbGwuICBSZXR1cm5zIGZhbHNlCisgICAgICogaWYgdGhlIG90aGVyIHpvbmUgaXMgbnVsbC4KKyAgICAgKiBAcGFyYW0gb3RoZXIgdGhlIDxjb2RlPlRpbWVab25lPC9jb2RlPiBvYmplY3QgdG8gYmUgY29tcGFyZWQgd2l0aAorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgb3RoZXIgem9uZSBpcyBub3QgbnVsbCBhbmQgaXMgdGhlIHNhbWUgYXMgdGhpcyBvbmUsCisgICAgICogd2l0aCB0aGUgcG9zc2libGUgZXhjZXB0aW9uIG9mIHRoZSBJRAorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGhhc1NhbWVSdWxlcyhUaW1lWm9uZSBvdGhlcikgeworICAgICAgICByZXR1cm4gb3RoZXIgIT0gbnVsbCAmJiBnZXRSYXdPZmZzZXQoKSA9PSBvdGhlci5nZXRSYXdPZmZzZXQoKSAmJgorICAgICAgICAgICAgdXNlRGF5bGlnaHRUaW1lKCkgPT0gb3RoZXIudXNlRGF5bGlnaHRUaW1lKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogT3ZlcnJpZGVzIENsb25lYWJsZQorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHB1YmxpYyBPYmplY3QgY2xvbmUoKQorICAgIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFRpbWVab25lIG90aGVyID0gKFRpbWVab25lKSBzdXBlci5jbG9uZSgpOworICAgICAgICAgICAgb3RoZXIuSUQgPSBJRDsKKyAgICAgICAgICAgIHJldHVybiBvdGhlcjsKKyAgICAgICAgfSBjYXRjaCAoQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09cHJpdmF0ZXM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAvKioKKyAgICAgKiBUaGUgc3RyaW5nIGlkZW50aWZpZXIgb2YgdGhpcyA8Y29kZT5UaW1lWm9uZTwvY29kZT4uICBUaGlzIGlzIGEKKyAgICAgKiBwcm9ncmFtbWF0aWMgaWRlbnRpZmllciB1c2VkIGludGVybmFsbHkgdG8gbG9vayB1cCA8Y29kZT5UaW1lWm9uZTwvY29kZT4KKyAgICAgKiBvYmplY3RzIGZyb20gdGhlIHN5c3RlbSB0YWJsZSBhbmQgYWxzbyB0byBtYXAgdGhlbSB0byB0aGVpciBsb2NhbGl6ZWQKKyAgICAgKiBkaXNwbGF5IG5hbWVzLiAgPGNvZGU+SUQ8L2NvZGU+IHZhbHVlcyBhcmUgdW5pcXVlIGluIHRoZSBzeXN0ZW0KKyAgICAgKiB0YWJsZSBidXQgbWF5IG5vdCBiZSBmb3IgZHluYW1pY2FsbHkgY3JlYXRlZCB6b25lcy4KKyAgICAgKiBAc2VyaWFsCisgICAgICovCisgICAgcHJpdmF0ZSBTdHJpbmcgICAgICAgICAgIElEOworICAgIHByaXZhdGUgc3RhdGljIFRpbWVab25lICBkZWZhdWx0Wm9uZSA9IG51bGw7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nICAgICAgICAgR01UX0lEICAgICAgICA9ICJHTVQiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCAgICBHTVRfSURfTEVOR1RIID0gMzsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ1VTVE9NX0lEICAgICA9ICJDdXN0b20iOworCisgICAgcHJpdmF0ZSBzdGF0aWMgTnVtYmVyRm9ybWF0IG51bWJlckZvcm1hdCA9IG51bGw7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBUaW1lWm9uZSBHTVQgPSBuZXcgU2ltcGxlVGltZVpvbmUoMCwgR01UX0lEKTsKKworICAgIC8qKgorICAgICAqIFBhcnNlIGEgY3VzdG9tIHRpbWUgem9uZSBpZGVudGlmaWVyIGFuZCByZXR1cm4gYSBjb3JyZXNwb25kaW5nIHpvbmUuCisgICAgICogQHBhcmFtIGlkIGEgc3RyaW5nIG9mIHRoZSBmb3JtIEdNVFsrLV1oaDptbSwgR01UWystXWhobW0sIG9yCisgICAgICogR01UWystXWhoLgorICAgICAqIEByZXR1cm4gYSBuZXdseSBjcmVhdGVkIFNpbXBsZVRpbWVab25lIHdpdGggdGhlIGdpdmVuIG9mZnNldCBhbmQKKyAgICAgKiBubyBkYXlsaWdodCBzYXZpbmdzIHRpbWUsIG9yIG51bGwgaWYgdGhlIGlkIGNhbm5vdCBiZSBwYXJzZWQuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU2ltcGxlVGltZVpvbmUgcGFyc2VDdXN0b21UaW1lWm9uZShTdHJpbmcgaWQpIHsKKyAgICAgICAgaWYgKGlkLmxlbmd0aCgpID4gR01UX0lEX0xFTkdUSCAmJgorICAgICAgICAgICAgaWQucmVnaW9uTWF0Y2hlcyh0cnVlLCAwLCBHTVRfSUQsIDAsIEdNVF9JRF9MRU5HVEgpKSB7CisgICAgICAgICAgICBQYXJzZVBvc2l0aW9uIHBvcyA9IG5ldyBQYXJzZVBvc2l0aW9uKEdNVF9JRF9MRU5HVEgpOworICAgICAgICAgICAgYm9vbGVhbiBuZWdhdGl2ZSA9IGZhbHNlOworICAgICAgICAgICAgaW50IG9mZnNldDsKKworICAgICAgICAgICAgaWYgKGlkLmNoYXJBdChwb3MuZ2V0SW5kZXgoKSkgPT0gJy0nKQorICAgICAgICAgICAgICAgIG5lZ2F0aXZlID0gdHJ1ZTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGlkLmNoYXJBdChwb3MuZ2V0SW5kZXgoKSkgIT0gJysnKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgcG9zLnNldEluZGV4KHBvcy5nZXRJbmRleCgpICsgMSk7CisKKyAgICAgICAgICAgIC8vIENyZWF0ZSBOdW1iZXJGb3JtYXQgaWYgbmVjZXNzYXJ5CisgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKFRpbWVab25lLmNsYXNzKSB7CisgICAgICAgICAgICAgICAgaWYgKG51bWJlckZvcm1hdCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIG51bWJlckZvcm1hdCA9IE51bWJlckZvcm1hdC5nZXRJbnN0YW5jZSgpOworICAgICAgICAgICAgICAgICAgICBudW1iZXJGb3JtYXQuc2V0UGFyc2VJbnRlZ2VyT25seSh0cnVlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN5bmNocm9uaXplZCAobnVtYmVyRm9ybWF0KSB7CisgICAgICAgICAgICAgICAgLy8gTG9vayBmb3IgZWl0aGVyIGhoOm1tLCBoaG1tLCBvciBoaAorICAgICAgICAgICAgICAgIGludCBzdGFydCA9IHBvcy5nZXRJbmRleCgpOworICAgICAgICAgICAgICAgIE51bWJlciBuID0gbnVtYmVyRm9ybWF0LnBhcnNlKGlkLCBwb3MpOworICAgICAgICAgICAgICAgIGlmIChuID09IG51bGwpIHJldHVybiBudWxsOworICAgICAgICAgICAgICAgIG9mZnNldCA9IG4uaW50VmFsdWUoKTsKKworICAgICAgICAgICAgICAgIGlmIChwb3MuZ2V0SW5kZXgoKSA8IGlkLmxlbmd0aCgpICYmCisgICAgICAgICAgICAgICAgICAgIGlkLmNoYXJBdChwb3MuZ2V0SW5kZXgoKSkgPT0gJzonKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIGhoOm1tCisgICAgICAgICAgICAgICAgICAgIG9mZnNldCAqPSA2MDsKKyAgICAgICAgICAgICAgICAgICAgcG9zLnNldEluZGV4KHBvcy5nZXRJbmRleCgpICsgMSk7CisgICAgICAgICAgICAgICAgICAgIG4gPSBudW1iZXJGb3JtYXQucGFyc2UoaWQsIHBvcyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChuID09IG51bGwpIHJldHVybiBudWxsOworICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gbi5pbnRWYWx1ZSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gaGhtbSBvciBoaAorCisgICAgICAgICAgICAgICAgICAgIC8vIEJlIHN0cmljdCBhYm91dCBpbnRlcnByZXRpbmcgc29tZXRoaW5nIGFzIGhoOyBpdCBtdXN0IGJlCisgICAgICAgICAgICAgICAgICAgIC8vIGFuIG9mZnNldCA8IDMwLCBhbmQgaXQgbXVzdCBiZSBvbmUgb3IgdHdvIGRpZ2l0cy4gVGh1cworICAgICAgICAgICAgICAgICAgICAvLyAwMDEwIGlzIGludGVycHJldGVkIGFzIDAwOjEwLCBidXQgMTAgaXMgaW50ZXJwcmV0ZWQgYXMKKyAgICAgICAgICAgICAgICAgICAgLy8gMTA6MDAuCisgICAgICAgICAgICAgICAgICAgIGlmIChvZmZzZXQgPCAzMCAmJiAocG9zLmdldEluZGV4KCkgLSBzdGFydCkgPD0gMikKKyAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCAqPSA2MDsgLy8gaGgsIGZyb20gMDAgdG8gMjk7IDMwIGlzIDAwOjMwCisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IG9mZnNldCAlIDEwMCArIG9mZnNldCAvIDEwMCAqIDYwOyAvLyBoaG1tCisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKG5lZ2F0aXZlKSBvZmZzZXQgPSAtb2Zmc2V0OworICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU2ltcGxlVGltZVpvbmUob2Zmc2V0ICogNjAwMDAsIENVU1RPTV9JRCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICAvLyBJbnRlcm5hbCBJbXBsZW1lbnRhdGlvbiBOb3RlcyBbTElVXQorICAgIC8vCisgICAgLy8gVGltZVpvbmUgZGF0YSBpcyBzdG9yZWQgaW4gdHdvIHBhcnRzLiAgVGhlIGZpcnN0IGlzIGFuIGVuY29kaW5nIG9mIHRoZQorICAgIC8vIHJ1bGVzIGZvciBlYWNoIFRpbWVab25lLiAgQSBUaW1lWm9uZSBydWxlIGluY2x1ZGVzIHRoZSBvZmZzZXQgb2YgYSB6b25lCisgICAgLy8gaW4gbWlsbGlzZWNvbmRzIGZyb20gR01ULCB0aGUgc3RhcnRpbmcgbW9udGggYW5kIGRheSBmb3IgZGF5bGlnaHQgc2F2aW5ncworICAgIC8vIHRpbWUsIGlmIHRoZXJlIGlzIGFueSwgYW5kIHRoZSBlbmRpbmcgbW9udGggYW5kIGRheSBmb3IgZGF5bGlnaHQgc2F2aW5ncworICAgIC8vIHRpbWUuICBUaGUgc3RhcnRpbmcgYW5kIGVuZGluZyBkYXlzIGFyZSBzcGVjaWZpZWQgaW4gdGVybXMgb2YgdGhlIG4tdGgKKyAgICAvLyBkYXkgb2YgdGhlIHdlZWssIGZvciBpbnN0YW5jZSwgdGhlIGZpcnN0IFN1bmRheSBvciB0aGUgbGFzdCAoIi0xIi10aCkKKyAgICAvLyBTdW5kYXkgb2YgdGhlIG1vbnRoLiAgVGhlIHJ1bGVzIGFyZSBzdG9yZWQgYXMgc3RhdGljYWxseS1jb25zdHJ1Y3RlZAorICAgIC8vIFNpbXBsZVRpbWVab25lIG9iamVjdHMgaW4gdGhlIFRpbWVab25lIGNsYXNzLgorICAgIC8vCisgICAgLy8gRWFjaCBydWxlIGhhcyBhIHVuaXF1ZSBpbnRlcm5hbCBpZGVudGlmaWVyIHN0cmluZyB3aGljaCBpcyB1c2VkIHRvCisgICAgLy8gc3BlY2lmeSBpdC4gIFRoaXMgaWRlbnRpZmllciBzdHJpbmcgaXMgYXJiaXRyYXJ5LCBhbmQgaXMgbm90IHRvIGJlIHNob3duCisgICAgLy8gdG8gdGhlIHVzZXIgLS0gaXQgaXMgZm9yIHByb2dyYW1tYXRpYyB1c2Ugb25seS4gIEluIG9yZGVyIHRvIGluc3RhbnRpYXRlCisgICAgLy8gYSBUaW1lWm9uZSBvYmplY3QsIHlvdSBwYXNzIGl0cyBpZGVudGlmaWVyIHN0cmluZyB0bworICAgIC8vIFRpbWVab25lLmdldFRpbWVab25lKCkuICAoVGhpcyBpZGVudGlmaWVyIGlzIGFsc28gdXNlZCB0byBpbmRleCB0aGUKKyAgICAvLyBsb2NhbGl6ZWQgc3RyaW5nIGRhdGEuKQorICAgIC8vCisgICAgLy8gVGhlIHNlY29uZCBwYXJ0IG9mIHRoZSBkYXRhIGNvbnNpc3RzIG9mIGxvY2FsaXplZCBzdHJpbmcgbmFtZXMgdXNlZCBieQorICAgIC8vIERhdGVGb3JtYXQgdG8gZGVzY3JpYmUgdmFyaW91cyBUaW1lWm9uZXMuICBBIFRpbWVab25lIG1heSBoYXZlIHVwIHRvIGZvdXIKKyAgICAvLyBuYW1lczogVGhlIGFiYnJldmlhdGVkIGFuZCBsb25nIG5hbWUgZm9yIHN0YW5kYXJkIHRpbWUgaW4gdGhhdCB6b25lLCBhbmQKKyAgICAvLyB0aGUgYWJicmV2aWF0ZWQgYW5kIGxvbmcgbmFtZSBmb3IgZGF5bGlnaHQgc2F2aW5ncyB0aW1lIGluIHRoYXQgem9uZS4KKyAgICAvLyBUaGUgZGF0YSBhbHNvIGluY2x1ZGVzIGEgcmVwcmVzZW50YXRpdmUgY2l0eS4gIEZvciBleGFtcGxlLCBbICJQU1QiLAorICAgIC8vICJQYWNpZmljIFN0YW5kYXJkIFRpbWUiLCAiUERUIiwgIlBhY2lmaWMgRGF5bGlnaHQgVGltZSIsICJMb3MgQW5nZWxlcyIgXQorICAgIC8vIG1pZ2h0IGJlIG9uZSBzdWNoIHNldCBvZiBzdHJpbmcgbmFtZXMgaW4gdGhlIGVuX1VTIGxvY2FsZS4gIFRoZXNlIHN0cmluZ3MKKyAgICAvLyBhcmUgaW50ZW5kZWQgdG8gYmUgc2hvd24gdG8gdGhlIHVzZXIuICBUaGUgc3RyaW5nIGRhdGEgaXMgaW5kZXhlZCBpbiB0aGUKKyAgICAvLyBzeXN0ZW0gYnkgYSBwYWlyIChTdHJpbmcgaWQsIExvY2FsZSBsb2NhbGUpLiAgVGhlIGlkIGlzIHRoZSB1bmlxdWUgc3RyaW5nCisgICAgLy8gaWRlbnRpZmllciBmb3IgdGhlIHJ1bGUgZm9yIHRoZSBnaXZlbiBUaW1lWm9uZSAoYXMgcGFzc2VkIHRvCisgICAgLy8gVGltZVpvbmUuZ2V0VGltZVpvbmUoKSkuICBTdHJpbmcgbmFtZXMgYXJlIHN0b3JlZCBhcyBsb2NhbGl6ZWQgcmVzb3VyY2UKKyAgICAvLyBkYXRhIChpbiBqZGsgMS4yIGFuZCAxLjMpIG9mIHRoZSBjbGFzcyBMb2NhbGVEYXRhPz8/ICB3aGVyZSA/Pz8gaXMKKyAgICAvLyB0aGUgTG9jYWxlIHNwZWNpZmllciAoZS5nLiwgRGF0ZUZvcm1hdFpvbmVEYXRhX2VuX1VTKS4gIFRoaXMgZGF0YSBpcyBhCisgICAgLy8gdHdvLWRpbWVuc2lvbmFsIGFycmF5IG9mIHN0cmluZ3Mgd2l0aCBOIHJvd3MgYW5kIDYgY29sdW1ucy4gIFRoZSBjb2x1bW5zCisgICAgLy8gYXJlIGlkLCBzaG9ydCBzdGFuZGFyZCBuYW1lLCBsb25nIHN0YW5kYXJkIG5hbWUsIHNob3J0IGRheWxpZ2h0IG5hbWUsCisgICAgLy8gbG9uZyBkYXlsaWdodCBuYW1lLCByZXByZXNlbnRhdGl2ZSBjaXR5IG5hbWUuCisgICAgLy8KKyAgICAvLyBUaGUgbWFwcGluZyBiZXR3ZWVuIHJ1bGVzIChTaW1wbGVUaW1lWm9uZSBvYmplY3RzKSBhbmQgbG9jYWxpemVkIHN0cmluZworICAgIC8vIG5hbWVzIChEYXRlRm9ybWF0Wm9uZURhdGEgb2JqZWN0cykgaXMgb25lLXRvLW1hbnkuICBUaGF0IGlzLCB0aGVyZSB3aWxsCisgICAgLy8gc29tZXRpbWVzIGJlIG1vcmUgdGhhbiBvbmUgbG9jYWxpemVkIHN0cmluZyBuYW1lIHNldHMgYXNzb2NpYXRlZCB3aXRoCisgICAgLy8gZWFjaCBydWxlLgorICAgIC8vCisgICAgLy8gRWFjaCBsb2NhbGUgY2FuIHBvdGVudGlhbGx5IGhhdmUgbG9jYWxpemVkIG5hbWUgZGF0YSBmb3IgYWxsIHRpbWUgem9uZXMuCisgICAgLy8gU2luY2Ugd2Ugc3VwcG9ydCBhcHByb3hpbWF0ZWx5IDkwIHRpbWUgem9uZXMgYW5kIGFwcHJveGltYXRlbHkgNTAKKyAgICAvLyBsb2NhbGVzLCB0aGVyZSBjYW4gYmUgb3ZlciA0NTAwIHNldHMgb2YgbG9jYWxpemVkIG5hbWVzLiAgSW4gcHJhY3RpY2UsCisgICAgLy8gb25seSBhIGZyYWN0aW9uIG9mIHRoZXNlIG5hbWVzIGFyZSBwcm92aWRlZC4gIElmIGEgdGltZSB6b25lIG5lZWRzIHRvIGJlCisgICAgLy8gZGlzcGxheWVkIHRvIHRoZSB1c2VyIGluIGEgZ2l2ZW4gbG9jYWxlLCBhbmQgdGhlcmUgaXMgbm8gc3RyaW5nIGRhdGEgaW4KKyAgICAvLyB0aGF0IGxvY2FsZSBmb3IgdGhhdCB0aW1lIHpvbmUsIHRoZW4gdGhlIGRlZmF1bHQgcmVwcmVzZW50YXRpb24gd2lsbCBiZQorICAgIC8vIHNob3duLiAgVGhpcyBpcyBhIHN0cmluZyBvZiB0aGUgZm9ybSBHTVQrSEhNTSBvciBHTVQtSEhNTSwgd2hlcmUgSEhNTQorICAgIC8vIHJlcHJlc2VudHMgdGhlIG9mZnNldCBpbiBob3VycyBhbmQgbWludXRlcyB3aXRoIHJlc3BlY3QgdG8gR01ULiAgVGhpcworICAgIC8vIGZvcm1hdCBpcyB1c2VkIGJlY2F1c2UgaXQgaXMgcmVjb2duaXplZCBpbiBhbGwgbG9jYWxlcy4gIEluIG9yZGVyIHRvIG1ha2UKKyAgICAvLyB0aGlzIG1lY2hhbmlzbSB0byB3b3JrLCB0aGUgcm9vdCByZXNvdXJjZSBkYXRhIChpbiB0aGUgY2xhc3MKKyAgICAvLyBEYXRlRm9ybWF0Wm9uZURhdGEpIGlzIGxlZnQgZW1wdHkuCisgICAgLy8KKyAgICAvLyBUaGUgY3VycmVudCBkZWZhdWx0IFRpbWVab25lIGlzIGRldGVybWluZWQgdmlhIHRoZSBzeXN0ZW0gcHJvcGVydHkKKyAgICAvLyB1c2VyLnRpbWV6b25lLiAgVGhpcyBpcyBzZXQgYnkgdGhlIHBsYXRmb3JtLWRlcGVuZGVudCBuYXRpdmUgY29kZSB0bworICAgIC8vIGEgdGhyZWUtbGV0dGVyIGFiYnJldmlhdGlvbi4gIFdlIGludGVycHJldCB0aGVzZSBpbnRvIG91ciBvd24gaW50ZXJuYWwKKyAgICAvLyBJRHMgdXNpbmcgYSBsb29rdXAgdGFibGUuCit9CisKKy8vZW9mCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvdXRpbC9UaW1lWm9uZURhdGEuamF2YSBiL3NyYy9jb20vaWJtL2ljdS91dGlsL1RpbWVab25lRGF0YS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmM0YzI1ODcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdXRpbC9UaW1lWm9uZURhdGEuamF2YQpAQCAtMCwwICsxLDEyMjIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS91dGlsL0F0dGljL1RpbWVab25lRGF0YS5qYXZhLHYgJAorICogJERhdGU6IDIwMDIvMTIvMDMgMjM6MTQ6NTEgJAorICogJFJldmlzaW9uOiAxLjcgJAorICovCitwYWNrYWdlIGNvbS5pYm0uaWN1LnV0aWw7CitpbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKK2ltcG9ydCBjb20uaWJtLmljdS5pbXBsLlV0aWxpdHk7CisKKy8qKgorICogSW50ZXJuYWwgY2xhc3MgdGhhdCBlbmNhcHN1bGF0ZXMgZGF0YSBhYm91dCB0aGUgc3lzdGVtIHRpbWUgem9uZXMuCisgKiBUaGlzIGluY2x1ZGVzIHRoZSBuYW1lcyBvZiBhbGwgem9uZXMsIHRoZWlyIHJhdyBvZmZzZXRzLCB0aGVpcgorICogcnVsZXMgKGZvciB6b25lcyBvYnNlcnZpbmcgRFNUKSwgYW5kIGluZGV4IHRhYmxlcyB0aGF0IGdyb3VwCisgKiB0b2dldGhlciB6b25lcyB3aXRoIHRoZSBzYW1lIHJhdyBvZmZzZXQsIGFzIHdlbGwgYXMgem9uZXMgdGhhdCBhcmUKKyAqIGVxdWl2YWxlbnQgKHNhbWUgcmF3IG9mZnNldCBhbmQgcnVsZXMpLgorICogCisgKiA8cD5UaGlzIGNsYXNzIGNvbnRhaW5zIHR3byBwYXJ0czogQSBuYXJyb3cgQVBJIGZvciBpbnN0YW50aWF0aW5nCisgKiB0aGUgc3lzdGVtIHpvbmUgb2JqZWN0cyBhbmQgZm9yIG9idGFpbmluZyBtZXRhaW5mb3JtYXRpb24KKyAqIChhdmFpbGFibGUgem9uZSBsaXN0cyBhbmQgZXF1aXZhbGVuY3kgZ3JvdXAgbGlzdHMpLCBhbmQgYmxvY2tzIG9mCisgKiBjb21wcmVzc2VkIGRhdGEgdGhhdCB0YWtlIHRoZSBmb3JtIG9mIHN0YXRpYyBzdHJpbmdzIG9yIHN0cmluZworICogYXJyYXlzLiAgVGhlIGNvbXByZXNzZWQgZGF0YSBpcyBnZW5lcmF0ZWQgc291cmNlIGNvZGUgdGhhdCBjYW5ub3QKKyAqIGJlIGhhbmQgZWRpdGVkLiAgSXQgaXMgZGVyaXZlZCBmcm9tIHRoZSBzdGFuZGFyZCBVTklYIHpvbmUgZGF0YSBhdAorICogZnRwOi8vZWxzaWUubmNpLm5paC5nb3YvcHViIGFuZCBpcyBwcm9jZXNzZWQgYnkgdGhlIHRvb2wgZ2VudHoKKyAqIGxvY2F0ZWQgYXQgaWN1L3NvdXJjZS90b29scy9nZW50ei4gIFdoZW4gdGhlIFVOSVggem9uZSBkYXRhCisgKiBjaGFuZ2VzLCB0aGUgZ2VudHogdG9vbCBtdXN0IGJlIHJ1biB0byBnZW5lcmF0ZSB0aGUgbmV3IGRhdGEgYW5kCisgKiB0aGUgY29tcHJlc3NlZCBkYXRhIGJsb2NrcyBpbiB0aGlzIGZpbGUgYW5kIHRoZSBuZXcgYmxvY2tzIG11c3QgYmUKKyAqIHBhc3RlZCBpbi4gIEZvciBzdGVwLWJ5LXN0ZXAgaW5zdHJ1Y3Rpb25zLCBzZWUKKyAqIGljdS9zb3VyY2UvdG9vbHMvZ2VudHovcmVhZG1lLnR4dC4KKyAqCisgKiBAYXV0aG9yIEFsYW4gTGl1CisgKi8KK2NsYXNzIFRpbWVab25lRGF0YSB7CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgYW5kIHJldHVybiB0aGUgZ2l2ZW4gc3lzdGVtIFRpbWVab25lLCBvciByZXR1cm4gbnVsbCBpZgorICAgICAqIHRoZSBnaXZlbiBJRCBkb2VzIG5vdCByZWZlciB0byBhIHN5c3RlbSBUaW1lWm9uZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFRpbWVab25lIGdldChTdHJpbmcgSUQpIHsKKyAgICAgICAgaW50IGkgPSBsb29rdXAoSUQpOworICAgICAgICByZXR1cm4gKGk8MCkgPyBudWxsIDogbmV3IFNpbXBsZVRpbWVab25lKElELCBEQVRBLCBpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSBuZXcgU3RyaW5nIGFycmF5IGNvbnRhaW5pbmcgYWxsIHN5c3RlbSBUaW1lWm9uZSBJRHMuCisgICAgICogVGhlc2UgSURzIChhbmQgb25seSB0aGVzZSBJRHMpIG1heSBiZSBwYXNzZWQgdG8KKyAgICAgKiA8Y29kZT5nZXQoKTwvY29kZT4gdG8gY29uc3RydWN0IHRoZSBjb3JyZXNwb25kaW5nIFRpbWVab25lCisgICAgICogb2JqZWN0LgorICAgICAqIEByZXR1cm4gYW4gYXJyYXkgb2YgYWxsIHN5c3RlbSBUaW1lWm9uZSBJRHMKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZ1tdIGdldEF2YWlsYWJsZUlEcygpIHsKKyAgICAgICAgU3RyaW5nW10gcmVzdWx0ID0gbmV3IFN0cmluZ1tJRFMubGVuZ3RoXTsKKyAgICAgICAgU3lzdGVtLmFycmF5Y29weShJRFMsIDAsIHJlc3VsdCwgMCwgSURTLmxlbmd0aCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgbmV3IFN0cmluZyBhcnJheSBjb250YWluaW5nIGFsbCBzeXN0ZW0gVGltZVpvbmUgSURzCisgICAgICogd2l0aCB0aGUgZ2l2ZW4gcmF3IG9mZnNldCBmcm9tIEdNVC4gIFRoZXNlIElEcyBtYXkgYmUgcGFzc2VkIHRvCisgICAgICogPGNvZGU+Z2V0KCk8L2NvZGU+IHRvIGNvbnN0cnVjdCB0aGUgY29ycmVzcG9uZGluZyBUaW1lWm9uZQorICAgICAqIG9iamVjdC4KKyAgICAgKiBAcGFyYW0gcmF3T2Zmc2V0IHRoZSBvZmZzZXQgaW4gbWlsbGlzZWNvbmRzIGZyb20gR01UCisgICAgICogQHJldHVybiBhbiBhcnJheSBvZiBJRHMgZm9yIHN5c3RlbSBUaW1lWm9uZXMgd2l0aCB0aGUgZ2l2ZW4KKyAgICAgKiByYXcgb2Zmc2V0LiAgSWYgdGhlcmUgYXJlIG5vbmUsIHJldHVybiBhIHplcm8tbGVuZ3RoIGFycmF5LgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nW10gZ2V0QXZhaWxhYmxlSURzKGludCByYXdPZmZzZXQpIHsKKyAgICAgICAgLy8gRG8gYSBsaW5lYXIgc2VhcmNoOyB0aGVyZSBhcmUgPCAyMDAgZW50cmllcworICAgICAgICBmb3IgKGludCBpPTA7IGk8SU5ERVhfQllfT0ZGU0VULmxlbmd0aDspIHsKKyAgICAgICAgICAgIGludCBvZmZzZXQgPSBJTkRFWF9CWV9PRkZTRVRbaV0gKiAxMDAwOworICAgICAgICAgICAgaWYgKG9mZnNldCA+IHJhd09mZnNldCkgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG9mZnNldCA9PSByYXdPZmZzZXQpIHsKKyAgICAgICAgICAgICAgICAvLyBGb3VuZCBvdXIgZGVzaXJlZCBvZmZzZXQKKyAgICAgICAgICAgICAgICBpbnQgbiA9IElOREVYX0JZX09GRlNFVFtpKzJdOworICAgICAgICAgICAgICAgIFN0cmluZ1tdIHJlc3VsdCA9IG5ldyBTdHJpbmdbbl07CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaj0wOyBqPG47ICsraikgeworICAgICAgICAgICAgICAgICAgICByZXN1bHRbal0gPSBJRFNbSU5ERVhfQllfT0ZGU0VUW2krMytqXV07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBBZHZhbmNlIHRvIHRoZSBuZXh0IGVudHJ5CisgICAgICAgICAgICBpICs9IElOREVYX0JZX09GRlNFVFtpKzJdICsgMzsKKyAgICAgICAgfQorICAgICAgICAvLyBGYWlsZWQgdG8gZmluZCBhbnk7IHJldHVybiBlbXB0eSBhcnJheQorICAgICAgICByZXR1cm4gbmV3IFN0cmluZ1swXTsKKyAgICB9CisgCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgbmV3IFN0cmluZyBhcnJheSBjb250YWluaW5nIGFsbCBzeXN0ZW0gVGltZVpvbmUgSURzCisgICAgICogYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBjb3VudHJ5LiAgVGhlc2UgSURzIG1heSBiZSBwYXNzZWQgdG8KKyAgICAgKiA8Y29kZT5nZXQoKTwvY29kZT4gdG8gY29uc3RydWN0IHRoZSBjb3JyZXNwb25kaW5nIFRpbWVab25lCisgICAgICogb2JqZWN0LgorICAgICAqIEBwYXJhbSBhIHR3by1sZXR0ZXIgSVNPIDMxNjYgY291bnRyeSBjb2RlLCBvciA8Y29kZT5udWxsPC9jb2RlPgorICAgICAqIHRvIHJldHVybiB6b25lcyBub3QgYXNzb2NpYXRlZCB3aXRoIGFueSBjb3VudHJ5CisgICAgICogQHJldHVybiBhbiBhcnJheSBvZiBJRHMgZm9yIHN5c3RlbSBUaW1lWm9uZXMgd2l0aCB0aGUgZ2l2ZW4KKyAgICAgKiByYXcgb2Zmc2V0LiAgSWYgdGhlcmUgYXJlIG5vbmUsIHJldHVybiBhIHplcm8tbGVuZ3RoIGFycmF5LgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nW10gZ2V0QXZhaWxhYmxlSURzKFN0cmluZyBjb3VudHJ5Q29kZSkgeworICAgICAgICAvLyBDb25zdHJ1Y3Qgb3VyIGtleTsgdGhpcyBpcyBhbiBpbnRlZ2VyIG9mIHRoZSBmb3JtCisgICAgICAgIC8vIDMyKm4xICsgbjAsIHdoZXJlIDA8PW48PTI1LgorICAgICAgICBpbnQgY291bnRyeUhhc2ggPSAwOworICAgICAgICBpZiAoY291bnRyeUNvZGUgIT0gbnVsbCkgeworICAgICAgICAgICAgY291bnRyeUhhc2ggPQorICAgICAgICAgICAgICAgICgoQ2hhcmFjdGVyLnRvVXBwZXJDYXNlKGNvdW50cnlDb2RlLmNoYXJBdCgwKSkgLSAnQScpIDw8IDUpIHwKKyAgICAgICAgICAgICAgICAoQ2hhcmFjdGVyLnRvVXBwZXJDYXNlKGNvdW50cnlDb2RlLmNoYXJBdCgxKSkgLSAnQScpOworICAgICAgICB9CisKKyAgICAgICAgLy8gRG8gYSBsaW5lYXIgc2VhcmNoOyB0aGVyZSBhcmUgfiAyNTAgZW50cmllcworICAgICAgICBmb3IgKGludCBpPTA7IGk8SU5ERVhfQllfQ09VTlRSWS5sZW5ndGg7ICkgeworICAgICAgICAgICAgaWYgKGNvdW50cnlIYXNoID09IElOREVYX0JZX0NPVU5UUllbaV0pIHsKKyAgICAgICAgICAgICAgICAvLyBGb3VuZCB0aGUgZGVzaXJlZCBjb3VudHJ5CisgICAgICAgICAgICAgICAgaW50IG4gPSBJTkRFWF9CWV9DT1VOVFJZW2krMV07CisgICAgICAgICAgICAgICAgU3RyaW5nW10gcmVzdWx0ID0gbmV3IFN0cmluZ1tuXTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBqPTA7IGo8bjsgKytqKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdFtqXSA9IElEU1tJTkRFWF9CWV9DT1VOVFJZW2krMitqXV07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGkgKz0gSU5ERVhfQllfQ09VTlRSWVtpKzFdICsgMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAvLyBGYWlsZWQgdG8gZmluZCBhbnk7IHJldHVybiBlbXB0eSBhcnJheQorICAgICAgICByZXR1cm4gbmV3IFN0cmluZ1swXTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgSURzIGluIHRoZSBlcXVpdmFsZW5jeSBncm91cCB0aGF0CisgICAgICogaW5jbHVkZXMgdGhlIGdpdmVuIElELiAgQW4gZXF1aXZhbGVuY3kgZ3JvdXAgY29udGFpbnMgem9uZXMKKyAgICAgKiB0aGF0IGhhdmUgdGhlIHNhbWUgR01UIG9mZnNldCBhbmQgcnVsZXMuCisgICAgICoKKyAgICAgKiA8cD5UaGUgcmV0dXJuZWQgY291bnQgaW5jbHVkZXMgdGhlIGdpdmVuIElEOyBpdCBpcyBhbHdheXMgPj0gMQorICAgICAqIGZvciB2YWxpZCBJRHMuICBUaGUgZ2l2ZW4gSUQgbXVzdCBiZSBhIHN5c3RlbSB0aW1lIHpvbmUuICBJZiBpdAorICAgICAqIGlzIG5vdCwgcmV0dXJucyB6ZXJvLgorICAgICAqIEBwYXJhbSBJRCBhIHN5c3RlbSB0aW1lIHpvbmUgSUQKKyAgICAgKiBAcmV0dXJuIHRoZSBudW1iZXIgb2Ygem9uZXMgaW4gdGhlIGVxdWl2YWxlbmN5IGdyb3VwIGNvbnRhaW5pbmcKKyAgICAgKiAnSUQnLCBvciB6ZXJvIGlmICdJRCcgaXMgbm90IGEgdmFsaWQgc3lzdGVtIElECisgICAgICogQHNlZSAjZ2V0RXF1aXZhbGVudElECisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnQgY291bnRFcXVpdmFsZW50SURzKFN0cmluZyBJRCkgeworICAgICAgICBpbnQgaSA9IGxvb2t1cChJRCk7CisgICAgICAgIHJldHVybiAoaTwwKSA/IDAgOiBEQVRBW2kgKyAoKERBVEFbaV09PTApPzI6MTMpXTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGFuIElEIGluIHRoZSBlcXVpdmFsZW5jeSBncm91cCB0aGF0CisgICAgICogaW5jbHVkZXMgdGhlIGdpdmVuIElELiAgQW4gZXF1aXZhbGVuY3kgZ3JvdXAgY29udGFpbnMgem9uZXMKKyAgICAgKiB0aGF0IGhhdmUgdGhlIHNhbWUgR01UIG9mZnNldCBhbmQgcnVsZXMuCisgICAgICoKKyAgICAgKiA8cD5UaGUgZ2l2ZW4gaW5kZXggbXVzdCBiZSBpbiB0aGUgcmFuZ2UgMC4ubi0xLCB3aGVyZSBuIGlzIHRoZQorICAgICAqIHZhbHVlIHJldHVybmVkIGJ5IDxjb2RlPmNvdW50RXF1aXZhbGVudElEcyhpZCk8L2NvZGU+LiAgRm9yCisgICAgICogc29tZSB2YWx1ZSBvZiAnaW5kZXgnLCB0aGUgcmV0dXJuZWQgdmFsdWUgd2lsbCBiZSBlcXVhbCB0byB0aGUKKyAgICAgKiBnaXZlbiBpZC4gIElmIHRoZSBnaXZlbiBpZCBpcyBub3QgYSB2YWxpZCBzeXN0ZW0gdGltZSB6b25lLCBvcgorICAgICAqIGlmICdpbmRleCcgaXMgb3V0IG9mIHJhbmdlLCB0aGVuIHJldHVybnMgYW4gZW1wdHkgc3RyaW5nLgorICAgICAqIEBwYXJhbSBJRCBhIHN5c3RlbSB0aW1lIHpvbmUgSUQKKyAgICAgKiBAcGFyYW0gaW5kZXggYSB2YWx1ZSBmcm9tIDAgdG8gbi0xLCB3aGVyZSBuIGlzIHRoZSB2YWx1ZQorICAgICAqIHJldHVybmVkIGJ5IDxjb2RlPmNvdW50RXF1aXZhbGVudElEcyhpZCk8L2NvZGU+CisgICAgICogQHJldHVybiB0aGUgSUQgb2YgdGhlIGluZGV4LXRoIHpvbmUgaW4gdGhlIGVxdWl2YWxlbmN5IGdyb3VwCisgICAgICogY29udGFpbmluZyAnSUQnLCBvciBhbiBlbXB0eSBzdHJpbmcgaWYgJ0lEJyBpcyBub3QgYSB2YWxpZAorICAgICAqIHN5c3RlbSBJRCBvciAnaW5kZXgnIGlzIG91dCBvZiByYW5nZQorICAgICAqIEBzZWUgI2NvdW50RXF1aXZhbGVudElEcworICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldEVxdWl2YWxlbnRJRChTdHJpbmcgSUQsIGludCBpbmRleCkgeworICAgICAgICBpbnQgaSA9IGxvb2t1cChJRCk7CisgICAgICAgIGlmIChpPDApIHsKKyAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgfQorICAgICAgICBpbnQgaiA9IGkgKyAoKERBVEFbaV09PTApPzI6MTMpOworICAgICAgICByZXR1cm4gKGluZGV4PERBVEFbal0pID8gSURTW0RBVEFbaitpbmRleCsxXV0gOiAiIjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHaXZlbiBhbiBJRCwgcmV0dXJuIHRoZSBlcXVpdmFsZW5jeSBncm91cCBpbmRleCAoaW5kZXggb2YKKyAgICAgKiBEQVRBW10gZm9yIHRoZSBzdGFydCBvZiB0aGUgZ3JvdXAncyBkYXRhKSBvciAtMSBpZiBub3QgZm91bmQuCisgICAgICovCisgICAgc3RhdGljIGludCBsb29rdXAoU3RyaW5nIElEKSB7CisgICAgICAgIEludGVnZXIgaSA9IChJbnRlZ2VyKSBJTkRFWF9CWV9OQU1FLmdldChJRCk7CisgICAgICAgIHJldHVybiAoaSA9PSBudWxsKSA/IC0xIDogaS5pbnRWYWx1ZSgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEVxdWl2YWxlbmN5IGdyb3VwIGRhdGEgaW4gaW50W10gZm9ybS4gIFRoaXMgaXMgcmVwcmVzZW50ZWQgYXMgYQorICAgICAqIHNpbmdsZSBmbGF0IGFycmF5IG9mIGludHMgZm9yIGNvbXBhY3RuZXNzLiAgRWFjaCBlcXVpdmFsZW5jeQorICAgICAqIGdyb3VwIGlzIHJlcHJlc2VudGVkIGJ5IGEgc2VxdWVuY2Ugb2YgaW50cyBvZiB2YXJpYWJsZSBsZW5ndGguCisgICAgICogR3JvdXBzIGFyZSBpZGVudGlmaWVkIGJ5IGEgc2luZ2xlIGludGVnZXIsIHRoZSBvZmZzZXQgdG8gdGhlCisgICAgICogc3RhcnQgb2YgdGhlIGdyb3VwLiAgSWYgaSBpcyB0aGUgb2Zmc2V0IHRvIHRoZSBzdGFydCBvZiB0aGUKKyAgICAgKiBncm91cCwgdGhlbiB0aGUgbGF5b3V0IG9mIGRhdGEgaXM6CisgICAgICoKKyAgICAgKiBPZmZzZXQgIERhdGEgICAgICAgTm90ZXMKKyAgICAgKiBpKzAgICAgIGlzRFNUICAgICAgMCBmb3Igc3RhbmRhcmQgem9uZXMsIDEgZm9yIERTVAorICAgICAqIGkrMSAgICAgcmF3T2Zmc2V0ICBpbiBzZWNvbmRzIGZyb20gR01UCisgICAgICogPERTVCB6b25lcyBjb250YWluIGFkZGl0aW9uYWwgZW50cmllcyBoZXJlOyBzZWUgYmVsb3c+CisgICAgICogaiswICAgICBjb3VudCAgICAgIG51bWJlciBvZiBJRHMgdG8gZm9sbG93LCA+PSAxCisgICAgICogaisxLi5rICBJRHMgICAgICAgIGluZGljZXMgaW50byBJRFNbXSBhcnJheQorICAgICAqIGoraysxICAgKG5leHQgZW50cnkgc3RhcnQpCisgICAgICoKKyAgICAgKiBGb3Igc3RhbmRhcmQgem9uZXMsIGogPSBpKzIuICBGb3IgRFNUIHpvbmVzLCBqID0gaSsxMworICAgICAqIGFuZCB0aGUgZm9sbG93aW5nIGVudHJpZXMgYXBwbHk6CisgICAgICoKKyAgICAgKiBPZmZzZXQgIERhdGEgICAgICAgTm90ZXMKKyAgICAgKiBpKzIgICAgIHN0YXJ0TW9udGggMC1iYXNlZAorICAgICAqIGkrMyAgICAgc3RhcnREb3dpbQorICAgICAqIGkrNCAgICAgc3RhcnREb3cgIAorICAgICAqIGkrNSAgICAgc3RhcnRUaW1lICBpbiBtaW51dGVzCisgICAgICogaSs2ICAgICBzdGFydE1vZGUgIHcvcy91IGVuY29kZWQgYXMgMC8xLzIKKyAgICAgKiBpKzcgICAgIGVuZE1vbnRoICAgMC1iYXNlZAorICAgICAqIGkrOCAgICAgZW5kRG93aW0KKyAgICAgKiBpKzkgICAgIGVuZERvdyAgCisgICAgICogaSsxMCAgICBlbmRUaW1lICAgIGluIG1pbnV0ZXMKKyAgICAgKiBpKzExICAgIGVuZE1vZGUgICAgdy9zL3UgZW5jb2RlZCBhcyAwLzEvMgorICAgICAqIGkrMTIgICAgIGRzdFNhdmluZ3MgaW4gbWludXRlcworICAgICAqCisgICAgICogQSBzdGFuZGFyZCB6b25lIGVudHJ5IGlzIDMrbiBpbnRzIGxvbmcsIGFuZCBhIERTVCB6b25lIGVudHJ5IGlzCisgICAgICogMTQrbiBpbnRzIGxvbmcsIHdoZXJlIG4gaXMgY291bnQgb2YgSURzIHRvIGZvbGxvdyAodGhlIHZhbHVlIGF0CisgICAgICogaiswKS4KKyAgICAgKi8KKyAgICBzdGF0aWMgaW50W10gREFUQTsKKworICAgIC8qKgorICAgICAqIE1hcCBmcm9tIFRpbWVab25lIElEIHRvIGVxdWl2YWxlbmN5IGdyb3VwIG9mZnNldC4gIFRoaXMgaXMgYW4KKyAgICAgKiBpbmRleCBpbnRvIERBVEEuICBUaGUgZXF1aXZhbGVuY3kgZ3JvdXAgZGF0YSBzdGFydHMgYXQgREFUQVtpXQorICAgICAqIGFuZCBvY2N1cGllcyB0aGUgbSBpbnRzIHRoYXQgZm9sbG93LCB3aGVyZSB0aGUgdmFsdWUgb2YgbSBkZXBlbmRzCisgICAgICogb24gd2hldGhlciB0aGUgem9uZSBpcyBzdGFuZGFyZCBvciBEU1QgYW5kIGhvdyBtYW55IElEcyBhcmUgaW4KKyAgICAgKiB0aGUgZ3JvdXAuCisgICAgICovCisgICAgc3RhdGljIGZpbmFsIEhhc2h0YWJsZSBJTkRFWF9CWV9OQU1FID0gbmV3IEhhc2h0YWJsZSgpOworCisgICAgLyoqCisgICAgICogSW5kZXggb2YgcmF3T2Zmc2V0IHRvIGxpc3Qgb2Ygem9uZXMuICBFbnRyaWVzIGFyZSBpbiBvcmRlciBvZiAKKyAgICAgKiBhc2NlbmRpbmcgcmF3T2Zmc2V0LiAgRm9ybWF0OgorICAgICAqCisgICAgICogT2Zmc2V0ICBEYXRhICAgICAgIE5vdGVzCisgICAgICogaSswICAgICByYXdPZmZzZXQgIGluIG1pbGxpc2Vjb25kcyBmcm9tIEdNVAorICAgICAqIGkrMSAgICAgZGVmYXVsdCAgICBkZWZhdWx0IHpvbmUgZm9yIHRoaXMgb2Zmc2V0CisgICAgICogaSsyICAgICBjb3VudCAgICAgIG51bWJlciBvZiBJRHMgdG8gZm9sbG93CisgICAgICogaSszLi5qICBJRHMgICAgICAgIGluZGljZXMgaW50byBJRFMKKyAgICAgKiBpK2orMSAgIChuZXh0IGVudHJ5IHN0YXJ0KQorICAgICAqCisgICAgICogSWYgdGhlIG51bWJlciBvZiBlcXVpdmFsZW5jeSBncm91cHMgaXMgbiwgdGhlbiBqPW4rMi4KKyAgICAgKgorICAgICAqIEVxdWl2YWxlbmN5IGdyb3VwIElEcyBhcmUgaW5kaWNlcyBpbiBEQVRBIHRvIHRoZSBzdGFydCBvZiBlYWNoCisgICAgICogZXF1aXZhbGVuY3kgZ3JvdXAuCisgICAgICovCisgICAgc3RhdGljIGludFtdIElOREVYX0JZX09GRlNFVDsKKworICAgIC8qKgorICAgICAqIEluZGV4IGJ5IGNvdW50cnkgdG8gbGlzdCBvZiB6b25lcy4gIEVudHJpZXMgYXJlIGluIG9yZGVyIG9mIAorICAgICAqIGFzY2VuZGluZyBjb3VudHJ5IGNvZGUuICBGb3JtYXQ6CisgICAgICoKKyAgICAgKiBPZmZzZXQgIERhdGEgICAgICAgTm90ZXMKKyAgICAgKiBpKzAgICAgIGNvdW50cnkgICAgYXMgYW4gaW50ZWdlciAzMm4xICsgbjA7IHNlZSBiZWxvdworICAgICAqIGkrMSAgICAgY291bnQgICAgICBudW1iZXIgb2YgSURzIHRvIGZvbGxvdworICAgICAqIGkrMi4uaiAgSURzICAgICAgICBpbmRpY2VzIGludG8gSURTW10KKyAgICAgKgorICAgICAqIElmIHRoZSBudW1iZXIgb2Ygem9uZXMgaXMgbiwgdGhlbiBqPW4rMS4KKyAgICAgKgorICAgICAqIFRoZSBmaXJzdCBpbnRlZ2VyIGluIGVhY2ggZW50cnkgaXMgdGhlIGNvdW50cnkgY29kZSBhcyBhbiBpbnRlZ2VyCisgICAgICogZnJvbSAwLi4oMjYtMSkqMzIrKDI2LTEpLiAgVGhpcyBpcyBjb21wdXRlZCBhcyBmb2xsb3dzOiAgQSB0d28KKyAgICAgKiBsZXR0ZXIgY291bnRyeSBjb2RlIFhZIGlzIGNvbnZlcnRlZCB0byAoKFgtJ0EnKTw8NSkgfCAoWS0nQScpLgorICAgICAqIFRoZSBzcGVjaWFsIHZhbHVlIDAgaW5kaWNhdGVzIG5vIGFzc2lnbmVkIGNvdW50cnkuICBUaGlzIGFsc28KKyAgICAgKiBtYXBzIHRvIHRoZSBjb3VudHJ5IGNvZGUgJ0FBJyBidXQgY3VycmVudGx5IHRoaXMgaXMgbm90IGEgdmFsaWQKKyAgICAgKiBjb3VudHJ5IGNvZGUuCisgICAgICoKKyAgICAgKiBab25lIElEIHZhbHVlcyBhcmUgaW5kaWNlcyBpbnRvIElEU1tdLgorICAgICAqLworICAgIHN0YXRpYyBpbnRbXSBJTkRFWF9CWV9DT1VOVFJZOworCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gQkVHSU4gR0VORVJBVEVEIFNPVVJDRSBDT0RFCisgICAgLy8gRGF0ZTogVHVlIERlYyAwMyAxNToxMDozNSBQU1QgMjAwMgorICAgIC8vIFZlcnNpb246IHR6ZGF0YTIwMDJkIGZyb20gZnRwOi8vZWxzaWUubmNpLm5paC5nb3YvcHViCisgICAgLy8gVG9vbDogaWN1L3NvdXJjZS90b29scy9nZW50egorICAgIC8vIFNlZTogaWN1L3NvdXJjZS90b29scy9nZW50ei9yZWFkbWUudHh0CisgICAgLy8gRE8gTk9UIEVESVQgVEhJUyBTRUNUSU9OCisKKyAgICAvKioKKyAgICAgKiBBcnJheSBvZiBJRHMgaW4gbGV4aWNvZ3JhcGhpYyBvcmRlci4gIFRoZSBJTkRFWF9CWV9PRkZTRVQgYW5kIERBVEEKKyAgICAgKiBhcnJheXMgcmVmZXIgdG8gem9uZXMgdXNpbmcgaW5kaWNlcyBpbnRvIHRoaXMgYXJyYXkuICBUbyBtYXAgZnJvbSBJRAorICAgICAqIHRvIGVxdWl2YWxlbmN5IGdyb3VwLCB1c2UgdGhlIElOREVYX0JZX05BTUUgSGFzaHRhYmxlLgorICAgICAqID4+IEdFTkVSQVRFRCBEQVRBOiBETyBOT1QgRURJVCA8PAorICAgICAqLworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmdbXSBJRFMgPSB7CisgICAgICAgICJBQ1QiLAorICAgICAgICAiQUVUIiwKKyAgICAgICAgIkFHVCIsCisgICAgICAgICJBUlQiLAorICAgICAgICAiQVNUIiwKKyAgICAgICAgIkFmcmljYS9BYmlkamFuIiwKKyAgICAgICAgIkFmcmljYS9BY2NyYSIsCisgICAgICAgICJBZnJpY2EvQWRkaXNfQWJhYmEiLAorICAgICAgICAiQWZyaWNhL0FsZ2llcnMiLAorICAgICAgICAiQWZyaWNhL0FzbWVyYSIsCisgICAgICAgICJBZnJpY2EvQmFtYWtvIiwKKyAgICAgICAgIkFmcmljYS9CYW5ndWkiLAorICAgICAgICAiQWZyaWNhL0Jhbmp1bCIsCisgICAgICAgICJBZnJpY2EvQmlzc2F1IiwKKyAgICAgICAgIkFmcmljYS9CbGFudHlyZSIsCisgICAgICAgICJBZnJpY2EvQnJhenphdmlsbGUiLAorICAgICAgICAiQWZyaWNhL0J1anVtYnVyYSIsCisgICAgICAgICJBZnJpY2EvQ2Fpcm8iLAorICAgICAgICAiQWZyaWNhL0Nhc2FibGFuY2EiLAorICAgICAgICAiQWZyaWNhL0NldXRhIiwKKyAgICAgICAgIkFmcmljYS9Db25ha3J5IiwKKyAgICAgICAgIkFmcmljYS9EYWthciIsCisgICAgICAgICJBZnJpY2EvRGFyX2VzX1NhbGFhbSIsCisgICAgICAgICJBZnJpY2EvRGppYm91dGkiLAorICAgICAgICAiQWZyaWNhL0RvdWFsYSIsCisgICAgICAgICJBZnJpY2EvRWxfQWFpdW4iLAorICAgICAgICAiQWZyaWNhL0ZyZWV0b3duIiwKKyAgICAgICAgIkFmcmljYS9HYWJvcm9uZSIsCisgICAgICAgICJBZnJpY2EvSGFyYXJlIiwKKyAgICAgICAgIkFmcmljYS9Kb2hhbm5lc2J1cmciLAorICAgICAgICAiQWZyaWNhL0thbXBhbGEiLAorICAgICAgICAiQWZyaWNhL0toYXJ0b3VtIiwKKyAgICAgICAgIkFmcmljYS9LaWdhbGkiLAorICAgICAgICAiQWZyaWNhL0tpbnNoYXNhIiwKKyAgICAgICAgIkFmcmljYS9MYWdvcyIsCisgICAgICAgICJBZnJpY2EvTGlicmV2aWxsZSIsCisgICAgICAgICJBZnJpY2EvTG9tZSIsCisgICAgICAgICJBZnJpY2EvTHVhbmRhIiwKKyAgICAgICAgIkFmcmljYS9MdWJ1bWJhc2hpIiwKKyAgICAgICAgIkFmcmljYS9MdXNha2EiLAorICAgICAgICAiQWZyaWNhL01hbGFibyIsCisgICAgICAgICJBZnJpY2EvTWFwdXRvIiwKKyAgICAgICAgIkFmcmljYS9NYXNlcnUiLAorICAgICAgICAiQWZyaWNhL01iYWJhbmUiLAorICAgICAgICAiQWZyaWNhL01vZ2FkaXNodSIsCisgICAgICAgICJBZnJpY2EvTW9ucm92aWEiLAorICAgICAgICAiQWZyaWNhL05haXJvYmkiLAorICAgICAgICAiQWZyaWNhL05kamFtZW5hIiwKKyAgICAgICAgIkFmcmljYS9OaWFtZXkiLAorICAgICAgICAiQWZyaWNhL05vdWFrY2hvdHQiLAorICAgICAgICAiQWZyaWNhL091YWdhZG91Z291IiwKKyAgICAgICAgIkFmcmljYS9Qb3J0by1Ob3ZvIiwKKyAgICAgICAgIkFmcmljYS9TYW9fVG9tZSIsCisgICAgICAgICJBZnJpY2EvVGltYnVrdHUiLAorICAgICAgICAiQWZyaWNhL1RyaXBvbGkiLAorICAgICAgICAiQWZyaWNhL1R1bmlzIiwKKyAgICAgICAgIkFmcmljYS9XaW5kaG9layIsCisgICAgICAgICJBbWVyaWNhL0FkYWsiLAorICAgICAgICAiQW1lcmljYS9BbmNob3JhZ2UiLAorICAgICAgICAiQW1lcmljYS9Bbmd1aWxsYSIsCisgICAgICAgICJBbWVyaWNhL0FudGlndWEiLAorICAgICAgICAiQW1lcmljYS9BcmFndWFpbmEiLAorICAgICAgICAiQW1lcmljYS9BcnViYSIsCisgICAgICAgICJBbWVyaWNhL0FzdW5jaW9uIiwKKyAgICAgICAgIkFtZXJpY2EvQmFyYmFkb3MiLAorICAgICAgICAiQW1lcmljYS9CZWxlbSIsCisgICAgICAgICJBbWVyaWNhL0JlbGl6ZSIsCisgICAgICAgICJBbWVyaWNhL0JvYV9WaXN0YSIsCisgICAgICAgICJBbWVyaWNhL0JvZ290YSIsCisgICAgICAgICJBbWVyaWNhL0JvaXNlIiwKKyAgICAgICAgIkFtZXJpY2EvQnVlbm9zX0FpcmVzIiwKKyAgICAgICAgIkFtZXJpY2EvQ2FtYnJpZGdlX0JheSIsCisgICAgICAgICJBbWVyaWNhL0NhbmN1biIsCisgICAgICAgICJBbWVyaWNhL0NhcmFjYXMiLAorICAgICAgICAiQW1lcmljYS9DYXRhbWFyY2EiLAorICAgICAgICAiQW1lcmljYS9DYXllbm5lIiwKKyAgICAgICAgIkFtZXJpY2EvQ2F5bWFuIiwKKyAgICAgICAgIkFtZXJpY2EvQ2hpY2FnbyIsCisgICAgICAgICJBbWVyaWNhL0NoaWh1YWh1YSIsCisgICAgICAgICJBbWVyaWNhL0NvcmRvYmEiLAorICAgICAgICAiQW1lcmljYS9Db3N0YV9SaWNhIiwKKyAgICAgICAgIkFtZXJpY2EvQ3VpYWJhIiwKKyAgICAgICAgIkFtZXJpY2EvQ3VyYWNhbyIsCisgICAgICAgICJBbWVyaWNhL0Rhbm1hcmtzaGF2biIsCisgICAgICAgICJBbWVyaWNhL0Rhd3NvbiIsCisgICAgICAgICJBbWVyaWNhL0Rhd3Nvbl9DcmVlayIsCisgICAgICAgICJBbWVyaWNhL0RlbnZlciIsCisgICAgICAgICJBbWVyaWNhL0RldHJvaXQiLAorICAgICAgICAiQW1lcmljYS9Eb21pbmljYSIsCisgICAgICAgICJBbWVyaWNhL0VkbW9udG9uIiwKKyAgICAgICAgIkFtZXJpY2EvRWlydW5lcGUiLAorICAgICAgICAiQW1lcmljYS9FbF9TYWx2YWRvciIsCisgICAgICAgICJBbWVyaWNhL0ZvcnRhbGV6YSIsCisgICAgICAgICJBbWVyaWNhL0dsYWNlX0JheSIsCisgICAgICAgICJBbWVyaWNhL0dvZHRoYWIiLAorICAgICAgICAiQW1lcmljYS9Hb29zZV9CYXkiLAorICAgICAgICAiQW1lcmljYS9HcmFuZF9UdXJrIiwKKyAgICAgICAgIkFtZXJpY2EvR3JlbmFkYSIsCisgICAgICAgICJBbWVyaWNhL0d1YWRlbG91cGUiLAorICAgICAgICAiQW1lcmljYS9HdWF0ZW1hbGEiLAorICAgICAgICAiQW1lcmljYS9HdWF5YXF1aWwiLAorICAgICAgICAiQW1lcmljYS9HdXlhbmEiLAorICAgICAgICAiQW1lcmljYS9IYWxpZmF4IiwKKyAgICAgICAgIkFtZXJpY2EvSGF2YW5hIiwKKyAgICAgICAgIkFtZXJpY2EvSGVybW9zaWxsbyIsCisgICAgICAgICJBbWVyaWNhL0luZGlhbmEvS25veCIsCisgICAgICAgICJBbWVyaWNhL0luZGlhbmEvTWFyZW5nbyIsCisgICAgICAgICJBbWVyaWNhL0luZGlhbmEvVmV2YXkiLAorICAgICAgICAiQW1lcmljYS9JbmRpYW5hcG9saXMiLAorICAgICAgICAiQW1lcmljYS9JbnV2aWsiLAorICAgICAgICAiQW1lcmljYS9JcWFsdWl0IiwKKyAgICAgICAgIkFtZXJpY2EvSmFtYWljYSIsCisgICAgICAgICJBbWVyaWNhL0p1anV5IiwKKyAgICAgICAgIkFtZXJpY2EvSnVuZWF1IiwKKyAgICAgICAgIkFtZXJpY2EvS2VudHVja3kvTW9udGljZWxsbyIsCisgICAgICAgICJBbWVyaWNhL0xhX1BheiIsCisgICAgICAgICJBbWVyaWNhL0xpbWEiLAorICAgICAgICAiQW1lcmljYS9Mb3NfQW5nZWxlcyIsCisgICAgICAgICJBbWVyaWNhL0xvdWlzdmlsbGUiLAorICAgICAgICAiQW1lcmljYS9NYWNlaW8iLAorICAgICAgICAiQW1lcmljYS9NYW5hZ3VhIiwKKyAgICAgICAgIkFtZXJpY2EvTWFuYXVzIiwKKyAgICAgICAgIkFtZXJpY2EvTWFydGluaXF1ZSIsCisgICAgICAgICJBbWVyaWNhL01hemF0bGFuIiwKKyAgICAgICAgIkFtZXJpY2EvTWVuZG96YSIsCisgICAgICAgICJBbWVyaWNhL01lbm9taW5lZSIsCisgICAgICAgICJBbWVyaWNhL01lcmlkYSIsCisgICAgICAgICJBbWVyaWNhL01leGljb19DaXR5IiwKKyAgICAgICAgIkFtZXJpY2EvTWlxdWVsb24iLAorICAgICAgICAiQW1lcmljYS9Nb250ZXJyZXkiLAorICAgICAgICAiQW1lcmljYS9Nb250ZXZpZGVvIiwKKyAgICAgICAgIkFtZXJpY2EvTW9udHJlYWwiLAorICAgICAgICAiQW1lcmljYS9Nb250c2VycmF0IiwKKyAgICAgICAgIkFtZXJpY2EvTmFzc2F1IiwKKyAgICAgICAgIkFtZXJpY2EvTmV3X1lvcmsiLAorICAgICAgICAiQW1lcmljYS9OaXBpZ29uIiwKKyAgICAgICAgIkFtZXJpY2EvTm9tZSIsCisgICAgICAgICJBbWVyaWNhL05vcm9uaGEiLAorICAgICAgICAiQW1lcmljYS9Ob3J0aF9EYWtvdGEvQ2VudGVyIiwKKyAgICAgICAgIkFtZXJpY2EvUGFuYW1hIiwKKyAgICAgICAgIkFtZXJpY2EvUGFuZ25pcnR1bmciLAorICAgICAgICAiQW1lcmljYS9QYXJhbWFyaWJvIiwKKyAgICAgICAgIkFtZXJpY2EvUGhvZW5peCIsCisgICAgICAgICJBbWVyaWNhL1BvcnQtYXUtUHJpbmNlIiwKKyAgICAgICAgIkFtZXJpY2EvUG9ydF9vZl9TcGFpbiIsCisgICAgICAgICJBbWVyaWNhL1BvcnRvX1ZlbGhvIiwKKyAgICAgICAgIkFtZXJpY2EvUHVlcnRvX1JpY28iLAorICAgICAgICAiQW1lcmljYS9SYWlueV9SaXZlciIsCisgICAgICAgICJBbWVyaWNhL1Jhbmtpbl9JbmxldCIsCisgICAgICAgICJBbWVyaWNhL1JlY2lmZSIsCisgICAgICAgICJBbWVyaWNhL1JlZ2luYSIsCisgICAgICAgICJBbWVyaWNhL1Jpb19CcmFuY28iLAorICAgICAgICAiQW1lcmljYS9TYW50aWFnbyIsCisgICAgICAgICJBbWVyaWNhL1NhbnRvX0RvbWluZ28iLAorICAgICAgICAiQW1lcmljYS9TYW9fUGF1bG8iLAorICAgICAgICAiQW1lcmljYS9TY29yZXNieXN1bmQiLAorICAgICAgICAiQW1lcmljYS9TdF9Kb2hucyIsCisgICAgICAgICJBbWVyaWNhL1N0X0tpdHRzIiwKKyAgICAgICAgIkFtZXJpY2EvU3RfTHVjaWEiLAorICAgICAgICAiQW1lcmljYS9TdF9UaG9tYXMiLAorICAgICAgICAiQW1lcmljYS9TdF9WaW5jZW50IiwKKyAgICAgICAgIkFtZXJpY2EvU3dpZnRfQ3VycmVudCIsCisgICAgICAgICJBbWVyaWNhL1RlZ3VjaWdhbHBhIiwKKyAgICAgICAgIkFtZXJpY2EvVGh1bGUiLAorICAgICAgICAiQW1lcmljYS9UaHVuZGVyX0JheSIsCisgICAgICAgICJBbWVyaWNhL1RpanVhbmEiLAorICAgICAgICAiQW1lcmljYS9Ub3J0b2xhIiwKKyAgICAgICAgIkFtZXJpY2EvVmFuY291dmVyIiwKKyAgICAgICAgIkFtZXJpY2EvV2hpdGVob3JzZSIsCisgICAgICAgICJBbWVyaWNhL1dpbm5pcGVnIiwKKyAgICAgICAgIkFtZXJpY2EvWWFrdXRhdCIsCisgICAgICAgICJBbWVyaWNhL1llbGxvd2tuaWZlIiwKKyAgICAgICAgIkFudGFyY3RpY2EvQ2FzZXkiLAorICAgICAgICAiQW50YXJjdGljYS9EYXZpcyIsCisgICAgICAgICJBbnRhcmN0aWNhL0R1bW9udERVcnZpbGxlIiwKKyAgICAgICAgIkFudGFyY3RpY2EvTWF3c29uIiwKKyAgICAgICAgIkFudGFyY3RpY2EvTWNNdXJkbyIsCisgICAgICAgICJBbnRhcmN0aWNhL1BhbG1lciIsCisgICAgICAgICJBbnRhcmN0aWNhL1N5b3dhIiwKKyAgICAgICAgIkFudGFyY3RpY2EvVm9zdG9rIiwKKyAgICAgICAgIkFyY3RpYy9Mb25neWVhcmJ5ZW4iLAorICAgICAgICAiQXNpYS9BZGVuIiwKKyAgICAgICAgIkFzaWEvQWxtYXR5IiwKKyAgICAgICAgIkFzaWEvQW1tYW4iLAorICAgICAgICAiQXNpYS9BbmFkeXIiLAorICAgICAgICAiQXNpYS9BcXRhdSIsCisgICAgICAgICJBc2lhL0FxdG9iZSIsCisgICAgICAgICJBc2lhL0FzaGdhYmF0IiwKKyAgICAgICAgIkFzaWEvQmFnaGRhZCIsCisgICAgICAgICJBc2lhL0JhaHJhaW4iLAorICAgICAgICAiQXNpYS9CYWt1IiwKKyAgICAgICAgIkFzaWEvQmFuZ2tvayIsCisgICAgICAgICJBc2lhL0JlaXJ1dCIsCisgICAgICAgICJBc2lhL0Jpc2hrZWsiLAorICAgICAgICAiQXNpYS9CcnVuZWkiLAorICAgICAgICAiQXNpYS9DYWxjdXR0YSIsCisgICAgICAgICJBc2lhL0Nob2liYWxzYW4iLAorICAgICAgICAiQXNpYS9DaG9uZ3FpbmciLAorICAgICAgICAiQXNpYS9Db2xvbWJvIiwKKyAgICAgICAgIkFzaWEvRGFtYXNjdXMiLAorICAgICAgICAiQXNpYS9EaGFrYSIsCisgICAgICAgICJBc2lhL0RpbGkiLAorICAgICAgICAiQXNpYS9EdWJhaSIsCisgICAgICAgICJBc2lhL0R1c2hhbmJlIiwKKyAgICAgICAgIkFzaWEvR2F6YSIsCisgICAgICAgICJBc2lhL0hhcmJpbiIsCisgICAgICAgICJBc2lhL0hvbmdfS29uZyIsCisgICAgICAgICJBc2lhL0hvdmQiLAorICAgICAgICAiQXNpYS9Jcmt1dHNrIiwKKyAgICAgICAgIkFzaWEvSmFrYXJ0YSIsCisgICAgICAgICJBc2lhL0pheWFwdXJhIiwKKyAgICAgICAgIkFzaWEvSmVydXNhbGVtIiwKKyAgICAgICAgIkFzaWEvS2FidWwiLAorICAgICAgICAiQXNpYS9LYW1jaGF0a2EiLAorICAgICAgICAiQXNpYS9LYXJhY2hpIiwKKyAgICAgICAgIkFzaWEvS2FzaGdhciIsCisgICAgICAgICJBc2lhL0thdG1hbmR1IiwKKyAgICAgICAgIkFzaWEvS3Jhc25veWFyc2siLAorICAgICAgICAiQXNpYS9LdWFsYV9MdW1wdXIiLAorICAgICAgICAiQXNpYS9LdWNoaW5nIiwKKyAgICAgICAgIkFzaWEvS3V3YWl0IiwKKyAgICAgICAgIkFzaWEvTWFjYXUiLAorICAgICAgICAiQXNpYS9NYWdhZGFuIiwKKyAgICAgICAgIkFzaWEvTWFrYXNzYXIiLAorICAgICAgICAiQXNpYS9NYW5pbGEiLAorICAgICAgICAiQXNpYS9NdXNjYXQiLAorICAgICAgICAiQXNpYS9OaWNvc2lhIiwKKyAgICAgICAgIkFzaWEvTm92b3NpYmlyc2siLAorICAgICAgICAiQXNpYS9PbXNrIiwKKyAgICAgICAgIkFzaWEvT3JhbCIsCisgICAgICAgICJBc2lhL1Bobm9tX1BlbmgiLAorICAgICAgICAiQXNpYS9Qb250aWFuYWsiLAorICAgICAgICAiQXNpYS9QeW9uZ3lhbmciLAorICAgICAgICAiQXNpYS9RYXRhciIsCisgICAgICAgICJBc2lhL1F5enlsb3JkYSIsCisgICAgICAgICJBc2lhL1Jhbmdvb24iLAorICAgICAgICAiQXNpYS9SaXlhZGgiLAorICAgICAgICAiQXNpYS9SaXlhZGg4NyIsCisgICAgICAgICJBc2lhL1JpeWFkaDg4IiwKKyAgICAgICAgIkFzaWEvUml5YWRoODkiLAorICAgICAgICAiQXNpYS9TYWlnb24iLAorICAgICAgICAiQXNpYS9TYWtoYWxpbiIsCisgICAgICAgICJBc2lhL1NhbWFya2FuZCIsCisgICAgICAgICJBc2lhL1Nlb3VsIiwKKyAgICAgICAgIkFzaWEvU2hhbmdoYWkiLAorICAgICAgICAiQXNpYS9TaW5nYXBvcmUiLAorICAgICAgICAiQXNpYS9UYWlwZWkiLAorICAgICAgICAiQXNpYS9UYXNoa2VudCIsCisgICAgICAgICJBc2lhL1RiaWxpc2kiLAorICAgICAgICAiQXNpYS9UZWhyYW4iLAorICAgICAgICAiQXNpYS9UaGltcGh1IiwKKyAgICAgICAgIkFzaWEvVG9reW8iLAorICAgICAgICAiQXNpYS9VbGFhbmJhYXRhciIsCisgICAgICAgICJBc2lhL1VydW1xaSIsCisgICAgICAgICJBc2lhL1ZpZW50aWFuZSIsCisgICAgICAgICJBc2lhL1ZsYWRpdm9zdG9rIiwKKyAgICAgICAgIkFzaWEvWWFrdXRzayIsCisgICAgICAgICJBc2lhL1lla2F0ZXJpbmJ1cmciLAorICAgICAgICAiQXNpYS9ZZXJldmFuIiwKKyAgICAgICAgIkF0bGFudGljL0F6b3JlcyIsCisgICAgICAgICJBdGxhbnRpYy9CZXJtdWRhIiwKKyAgICAgICAgIkF0bGFudGljL0NhbmFyeSIsCisgICAgICAgICJBdGxhbnRpYy9DYXBlX1ZlcmRlIiwKKyAgICAgICAgIkF0bGFudGljL0ZhZXJvZSIsCisgICAgICAgICJBdGxhbnRpYy9KYW5fTWF5ZW4iLAorICAgICAgICAiQXRsYW50aWMvTWFkZWlyYSIsCisgICAgICAgICJBdGxhbnRpYy9SZXlramF2aWsiLAorICAgICAgICAiQXRsYW50aWMvU291dGhfR2VvcmdpYSIsCisgICAgICAgICJBdGxhbnRpYy9TdF9IZWxlbmEiLAorICAgICAgICAiQXRsYW50aWMvU3RhbmxleSIsCisgICAgICAgICJBdXN0cmFsaWEvQWRlbGFpZGUiLAorICAgICAgICAiQXVzdHJhbGlhL0JyaXNiYW5lIiwKKyAgICAgICAgIkF1c3RyYWxpYS9Ccm9rZW5fSGlsbCIsCisgICAgICAgICJBdXN0cmFsaWEvRGFyd2luIiwKKyAgICAgICAgIkF1c3RyYWxpYS9Ib2JhcnQiLAorICAgICAgICAiQXVzdHJhbGlhL0xpbmRlbWFuIiwKKyAgICAgICAgIkF1c3RyYWxpYS9Mb3JkX0hvd2UiLAorICAgICAgICAiQXVzdHJhbGlhL01lbGJvdXJuZSIsCisgICAgICAgICJBdXN0cmFsaWEvUGVydGgiLAorICAgICAgICAiQXVzdHJhbGlhL1N5ZG5leSIsCisgICAgICAgICJCRVQiLAorICAgICAgICAiQlNUIiwKKyAgICAgICAgIkNBVCIsCisgICAgICAgICJDRVQiLAorICAgICAgICAiQ05UIiwKKyAgICAgICAgIkNTVCIsCisgICAgICAgICJDVFQiLAorICAgICAgICAiRUFUIiwKKyAgICAgICAgIkVDVCIsCisgICAgICAgICJFRVQiLAorICAgICAgICAiRVNUIiwKKyAgICAgICAgIkV0Yy9HTVQiLAorICAgICAgICAiRXRjL0dNVCsxIiwKKyAgICAgICAgIkV0Yy9HTVQrMTAiLAorICAgICAgICAiRXRjL0dNVCsxMSIsCisgICAgICAgICJFdGMvR01UKzEyIiwKKyAgICAgICAgIkV0Yy9HTVQrMiIsCisgICAgICAgICJFdGMvR01UKzMiLAorICAgICAgICAiRXRjL0dNVCs0IiwKKyAgICAgICAgIkV0Yy9HTVQrNSIsCisgICAgICAgICJFdGMvR01UKzYiLAorICAgICAgICAiRXRjL0dNVCs3IiwKKyAgICAgICAgIkV0Yy9HTVQrOCIsCisgICAgICAgICJFdGMvR01UKzkiLAorICAgICAgICAiRXRjL0dNVC0xIiwKKyAgICAgICAgIkV0Yy9HTVQtMTAiLAorICAgICAgICAiRXRjL0dNVC0xMSIsCisgICAgICAgICJFdGMvR01ULTEyIiwKKyAgICAgICAgIkV0Yy9HTVQtMTMiLAorICAgICAgICAiRXRjL0dNVC0xNCIsCisgICAgICAgICJFdGMvR01ULTIiLAorICAgICAgICAiRXRjL0dNVC0zIiwKKyAgICAgICAgIkV0Yy9HTVQtNCIsCisgICAgICAgICJFdGMvR01ULTUiLAorICAgICAgICAiRXRjL0dNVC02IiwKKyAgICAgICAgIkV0Yy9HTVQtNyIsCisgICAgICAgICJFdGMvR01ULTgiLAorICAgICAgICAiRXRjL0dNVC05IiwKKyAgICAgICAgIkV0Yy9VQ1QiLAorICAgICAgICAiRXRjL1VUQyIsCisgICAgICAgICJFdXJvcGUvQW1zdGVyZGFtIiwKKyAgICAgICAgIkV1cm9wZS9BbmRvcnJhIiwKKyAgICAgICAgIkV1cm9wZS9BdGhlbnMiLAorICAgICAgICAiRXVyb3BlL0JlbGZhc3QiLAorICAgICAgICAiRXVyb3BlL0JlbGdyYWRlIiwKKyAgICAgICAgIkV1cm9wZS9CZXJsaW4iLAorICAgICAgICAiRXVyb3BlL0JyYXRpc2xhdmEiLAorICAgICAgICAiRXVyb3BlL0JydXNzZWxzIiwKKyAgICAgICAgIkV1cm9wZS9CdWNoYXJlc3QiLAorICAgICAgICAiRXVyb3BlL0J1ZGFwZXN0IiwKKyAgICAgICAgIkV1cm9wZS9DaGlzaW5hdSIsCisgICAgICAgICJFdXJvcGUvQ29wZW5oYWdlbiIsCisgICAgICAgICJFdXJvcGUvRHVibGluIiwKKyAgICAgICAgIkV1cm9wZS9HaWJyYWx0YXIiLAorICAgICAgICAiRXVyb3BlL0hlbHNpbmtpIiwKKyAgICAgICAgIkV1cm9wZS9Jc3RhbmJ1bCIsCisgICAgICAgICJFdXJvcGUvS2FsaW5pbmdyYWQiLAorICAgICAgICAiRXVyb3BlL0tpZXYiLAorICAgICAgICAiRXVyb3BlL0xpc2JvbiIsCisgICAgICAgICJFdXJvcGUvTGp1YmxqYW5hIiwKKyAgICAgICAgIkV1cm9wZS9Mb25kb24iLAorICAgICAgICAiRXVyb3BlL0x1eGVtYm91cmciLAorICAgICAgICAiRXVyb3BlL01hZHJpZCIsCisgICAgICAgICJFdXJvcGUvTWFsdGEiLAorICAgICAgICAiRXVyb3BlL01pbnNrIiwKKyAgICAgICAgIkV1cm9wZS9Nb25hY28iLAorICAgICAgICAiRXVyb3BlL01vc2NvdyIsCisgICAgICAgICJFdXJvcGUvT3NsbyIsCisgICAgICAgICJFdXJvcGUvUGFyaXMiLAorICAgICAgICAiRXVyb3BlL1ByYWd1ZSIsCisgICAgICAgICJFdXJvcGUvUmlnYSIsCisgICAgICAgICJFdXJvcGUvUm9tZSIsCisgICAgICAgICJFdXJvcGUvU2FtYXJhIiwKKyAgICAgICAgIkV1cm9wZS9TYW5fTWFyaW5vIiwKKyAgICAgICAgIkV1cm9wZS9TYXJhamV2byIsCisgICAgICAgICJFdXJvcGUvU2ltZmVyb3BvbCIsCisgICAgICAgICJFdXJvcGUvU2tvcGplIiwKKyAgICAgICAgIkV1cm9wZS9Tb2ZpYSIsCisgICAgICAgICJFdXJvcGUvU3RvY2tob2xtIiwKKyAgICAgICAgIkV1cm9wZS9UYWxsaW5uIiwKKyAgICAgICAgIkV1cm9wZS9UaXJhbmUiLAorICAgICAgICAiRXVyb3BlL1V6aGdvcm9kIiwKKyAgICAgICAgIkV1cm9wZS9WYWR1eiIsCisgICAgICAgICJFdXJvcGUvVmF0aWNhbiIsCisgICAgICAgICJFdXJvcGUvVmllbm5hIiwKKyAgICAgICAgIkV1cm9wZS9WaWxuaXVzIiwKKyAgICAgICAgIkV1cm9wZS9XYXJzYXciLAorICAgICAgICAiRXVyb3BlL1phZ3JlYiIsCisgICAgICAgICJFdXJvcGUvWmFwb3Jvemh5ZSIsCisgICAgICAgICJFdXJvcGUvWnVyaWNoIiwKKyAgICAgICAgIkdNVCIsCisgICAgICAgICJIU1QiLAorICAgICAgICAiSUVUIiwKKyAgICAgICAgIklTVCIsCisgICAgICAgICJJbmRpYW4vQW50YW5hbmFyaXZvIiwKKyAgICAgICAgIkluZGlhbi9DaGFnb3MiLAorICAgICAgICAiSW5kaWFuL0NocmlzdG1hcyIsCisgICAgICAgICJJbmRpYW4vQ29jb3MiLAorICAgICAgICAiSW5kaWFuL0NvbW9ybyIsCisgICAgICAgICJJbmRpYW4vS2VyZ3VlbGVuIiwKKyAgICAgICAgIkluZGlhbi9NYWhlIiwKKyAgICAgICAgIkluZGlhbi9NYWxkaXZlcyIsCisgICAgICAgICJJbmRpYW4vTWF1cml0aXVzIiwKKyAgICAgICAgIkluZGlhbi9NYXlvdHRlIiwKKyAgICAgICAgIkluZGlhbi9SZXVuaW9uIiwKKyAgICAgICAgIkpTVCIsCisgICAgICAgICJNRVQiLAorICAgICAgICAiTUlUIiwKKyAgICAgICAgIk1TVCIsCisgICAgICAgICJORVQiLAorICAgICAgICAiTlNUIiwKKyAgICAgICAgIlBMVCIsCisgICAgICAgICJQTlQiLAorICAgICAgICAiUFJUIiwKKyAgICAgICAgIlBTVCIsCisgICAgICAgICJQYWNpZmljL0FwaWEiLAorICAgICAgICAiUGFjaWZpYy9BdWNrbGFuZCIsCisgICAgICAgICJQYWNpZmljL0NoYXRoYW0iLAorICAgICAgICAiUGFjaWZpYy9FYXN0ZXIiLAorICAgICAgICAiUGFjaWZpYy9FZmF0ZSIsCisgICAgICAgICJQYWNpZmljL0VuZGVyYnVyeSIsCisgICAgICAgICJQYWNpZmljL0Zha2FvZm8iLAorICAgICAgICAiUGFjaWZpYy9GaWppIiwKKyAgICAgICAgIlBhY2lmaWMvRnVuYWZ1dGkiLAorICAgICAgICAiUGFjaWZpYy9HYWxhcGFnb3MiLAorICAgICAgICAiUGFjaWZpYy9HYW1iaWVyIiwKKyAgICAgICAgIlBhY2lmaWMvR3VhZGFsY2FuYWwiLAorICAgICAgICAiUGFjaWZpYy9HdWFtIiwKKyAgICAgICAgIlBhY2lmaWMvSG9ub2x1bHUiLAorICAgICAgICAiUGFjaWZpYy9Kb2huc3RvbiIsCisgICAgICAgICJQYWNpZmljL0tpcml0aW1hdGkiLAorICAgICAgICAiUGFjaWZpYy9Lb3NyYWUiLAorICAgICAgICAiUGFjaWZpYy9Ld2FqYWxlaW4iLAorICAgICAgICAiUGFjaWZpYy9NYWp1cm8iLAorICAgICAgICAiUGFjaWZpYy9NYXJxdWVzYXMiLAorICAgICAgICAiUGFjaWZpYy9NaWR3YXkiLAorICAgICAgICAiUGFjaWZpYy9OYXVydSIsCisgICAgICAgICJQYWNpZmljL05pdWUiLAorICAgICAgICAiUGFjaWZpYy9Ob3Jmb2xrIiwKKyAgICAgICAgIlBhY2lmaWMvTm91bWVhIiwKKyAgICAgICAgIlBhY2lmaWMvUGFnb19QYWdvIiwKKyAgICAgICAgIlBhY2lmaWMvUGFsYXUiLAorICAgICAgICAiUGFjaWZpYy9QaXRjYWlybiIsCisgICAgICAgICJQYWNpZmljL1BvbmFwZSIsCisgICAgICAgICJQYWNpZmljL1BvcnRfTW9yZXNieSIsCisgICAgICAgICJQYWNpZmljL1Jhcm90b25nYSIsCisgICAgICAgICJQYWNpZmljL1NhaXBhbiIsCisgICAgICAgICJQYWNpZmljL1RhaGl0aSIsCisgICAgICAgICJQYWNpZmljL1RhcmF3YSIsCisgICAgICAgICJQYWNpZmljL1RvbmdhdGFwdSIsCisgICAgICAgICJQYWNpZmljL1RydWsiLAorICAgICAgICAiUGFjaWZpYy9XYWtlIiwKKyAgICAgICAgIlBhY2lmaWMvV2FsbGlzIiwKKyAgICAgICAgIlBhY2lmaWMvWWFwIiwKKyAgICAgICAgIlNTVCIsCisgICAgICAgICJVVEMiLAorICAgICAgICAiVlNUIiwKKyAgICAgICAgIldFVCIsCisgICAgfTsKKworICAgIC8qKgorICAgICAqIFJMRSBlbmNvZGVkIGZvcm0gb2YgREFUQS4KKyAgICAgKiBAc2VlIGNvbS5pYm0udXRpbC5VdGlsaXR5LlJMRVN0cmluZ1RvSW50QXJyYXkKKyAgICAgKiA+PiBHRU5FUkFURUQgREFUQTogRE8gTk9UIEVESVQgPDwKKyAgICAgKi8KKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIERBVEFfUkxFID0KKyAgICAgICAgIlwwMDBcdTA2QjRcMDAwXDAwMFx1RkZGRlx1NTc0MFwwMDBcMDAxXDAwMFx1MDEyN1wwMDBcMDAwXHVGRkZGXHU2NTUwXDAwMCIrCisgICAgICAgICJcMDA2XDAwMFx1MDEyNlwwMDBcdTAxODNcMDAwXHUwMThCXDAwMFx1MDE5RlwwMDBcdTAxQTFcMDAwXHUwMUE0XDAwMFwwMDAiKworICAgICAgICAiXHVGRkZGXHU3MzYwXDAwMFwwMDZcMDAwXHUwMTI1XDAwMFx1MDE3M1wwMDBcdTAxOTFcMDAwXHUwMTk4XDAwMFx1MDE5OSIrCisgICAgICAgICJcMDAwXHUwMUFCXDAwMFwwMDFcdUZGRkZcdTczNjBcMDAwXDAwM1wwMDBcMDAxXHVGRkZGXHVGRkZGXDAwMHhcMDAwXDAwMCIrCisgICAgICAgICJcMDAwXDAxMVx1RkZGRlx1RkZGRlwwMDBcMDAxXDAwMHhcMDAwXDAwMFwwMDA8XDAwMFwwMDFcMDAwOVwwMDBcMDAxXHVGRkZGIisKKyAgICAgICAgIlx1NzM2MFwwMDBcMDExXHVGRkZGXHVGRkZGXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDAwMVx1RkZGRiIrCisgICAgICAgICJcdUZGRkZcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMzZcMDAwXDAwMVwwMDBcdTAxQTlcMDAwXDAwMFx1RkZGRlx1N0E2OFwwMDAiKworICAgICAgICAiXDAwMVwwMDBcdTAxOUVcMDAwXDAwMFx1RkZGRlx1ODE3MFwwMDBcMDAyXDAwMFx1MDEyRlwwMDBcdTAxOTVcMDAwXDAwMSIrCisgICAgICAgICJcdUZGRkZcdTgxNzBcMDAwXDAwM1wwMDBcMDAxXHVGRkZGXHVGRkZGXDAwMHhcMDAwXDAwMFwwMDBcMDExXHVGRkZGXHVGRkZGIisKKyAgICAgICAgIlwwMDBcMDAxXDAwMHhcMDAwXDAwMFwwMDA8XDAwMFwwMDVcMDAwXDAwNFwwMDA6XDAwMHFcMDAwXHUwMDg4XDAwMFx1MDBBQSIrCisgICAgICAgICJcMDAwXDAwMFx1RkZGRlx1OEY4MFwwMDBcMDAyXDAwMFx1MDEyRVwwMDBcdTAxQTZcMDAwXDAwMVx1RkZGRlx1OEY4MFwwMDAiKworICAgICAgICAiXDAwM1wwMDBcMDAxXHVGRkZGXHVGRkZGXDAwMHhcMDAwXDAwMFwwMDBcMDExXHVGRkZGXHVGRkZGXDAwMFwwMDFcMDAwIisKKyAgICAgICAgInhcMDAwXDAwMFwwMDA8XDAwMFwwMDZcMDAwVFwwMDB1XDAwMFx1MDBBNVwwMDBcdTAwQTdcMDAwXHUwMEE4XDAwMFx1MDE4QSIrCisgICAgICAgICJcMDAwXDAwMFx1RkZGRlx1OUQ5MFwwMDBcMDA1XDAwMFVcMDAwaFwwMDBcdTAwOEVcMDAwXHUwMTJEXDAwMFx1MDE4OFwwMDAiKworICAgICAgICAiXDAwMVx1RkZGRlx1OUQ5MFwwMDBcMDAzXDAwMFwwMDFcdUZGRkZcdUZGRkZcMDAweFwwMDBcMDAwXDAwMFwwMTFcdUZGRkYiKworICAgICAgICAiXHVGRkZGXDAwMFwwMDFcMDAweFwwMDBcMDAwXDAwMDxcMDAwXDAxMVwwMDBFXDAwMEdcMDAwTlwwMDBWXDAwMFlcMDAwIisKKyAgICAgICAgIm1cMDAwe1wwMDBcdTAwQUJcMDAwXHUwMTg0XDAwMFwwMDBcdUZGRkZcdUFCQTBcMDAwXDAwNVwwMDB4XDAwMFx1MDA5NiIrCisgICAgICAgICJcMDAwXHUwMEExXDAwMFx1MDEyQ1wwMDBcdTAxOTRcMDAwXDAwMVx1RkZGRlx1QUJBMFwwMDBcMDAzXDAwMFwwMDFcdUZGRkYiKworICAgICAgICAiXHVGRkZGXDAwMHhcMDAwXDAwMFwwMDBcMDExXHVGRkZGXHVGRkZGXDAwMFwwMDFcMDAweFwwMDBcMDAwXDAwMDxcMDAwIisKKyAgICAgICAgIlwwMTJcMDAwSFwwMDBNXDAwMH1cMDAwflwwMDBcdTAwN0ZcMDAwXHUwMDgxXDAwMFx1MDA4QVwwMDBcdTAwOTNcMDAwXHUwMDk0IisKKyAgICAgICAgIlwwMDBcdTAxMURcMDAwXDAwMVx1RkZGRlx1QUJBMFwwMDBcMDAzXDAwMFwwMDFcdUZGRkZcdUZGRkZcMDAweFwwMDBcMDAwIisKKyAgICAgICAgIlwwMDBcMDExXHVGRkZGXHVGRkZGXDAwMFwwMDFcMDAweFwwMDBcMDAxXDAwMDxcMDAwXDAwMVwwMDBcdTAwQTlcMDAwXDAwMSIrCisgICAgICAgICJcdUZGRkZcdUFCQTBcMDAwXDAxM1wwMDBcMDIyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDAxNFwwMDAiKworICAgICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwPFwwMDBcMDAxXDAwMEJcMDAwXDAwMVx1RkZGRlx1QUJBMFwwMDBcMDAwXDAwMCIrCisgICAgICAgICJcMDE3XHVGRkZGXHVGRkY5XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMTdcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAiKworICAgICAgICAiXDAwMDxcMDAwXDAwMVwwMDBQXDAwMFwwMDFcdUZGRkZcdUFCQTBcMDAwXDAwMlwwMDBcMDI3XDAwMFwwMDBcMDAwXDAwMCIrCisgICAgICAgICJcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDdcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwPFwwMDBcMDAxXDAwMGNcMDAwIisKKyAgICAgICAgIlwwMDFcdUZGRkZcdUFCQTBcMDAwXDAwNFwwMDBcMDAxXHVGRkZGXHVGRkZGXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXHVGRkZGIisKKyAgICAgICAgIlx1RkZGRlwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDA8XDAwMFwwMDJcMDAwW1wwMDBcdTAwQTJcMDAwXDAwMVx1RkZGRiIrCisgICAgICAgICJcdUFCQTBcMDAwXDAxMVwwMDBcMDExXHVGRkZGXHVGRkZGXDAwMFx1MDBGMFwwMDBcMDAyXDAwMFwwMDJcMDAwXDAxMVx1RkZGRiIrCisgICAgICAgICJcdUZGRkZcMDAwXHUwMEI0XDAwMFwwMDJcMDAwPFwwMDBcMDAxXDAwMFx1MDE4RVwwMDBcMDAwXHVGRkZGXHVCOUIwXDAwMCIrCisgICAgICAgICJcMDE0XDAwMExcMDAwWlwwMDBkXDAwMGlcMDAwalwwMDBrXDAwMGxcMDAwb1wwMDBcdTAwOEJcMDAwXHUwMDk3XDAwMFx1MDEyQiIrCisgICAgICAgICJcMDAwXHUwMTc0XDAwMFwwMDFcdUZGRkZcdUI5QjBcMDAwXDAwM1wwMDBcMDAxXHVGRkZGXHVGRkZGXDAwMFwwMDBcMDAwIisKKyAgICAgICAgIlwwMDBcMDAwXDAxMVx1RkZGRlx1RkZGRlwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDA8XDAwMFwwMDFcMDAwYFwwMDAiKworICAgICAgICAiXDAwMVx1RkZGRlx1QjlCMFwwMDBcMDAzXDAwMFwwMDFcdUZGRkZcdUZGRkZcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMTFcdUZGRkYiKworICAgICAgICAiXHVGRkZGXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAxXDAwMDxcMDAwXDAwMVwwMDBnXDAwMFwwMDFcdUZGRkZcdUI5QjBcMDAwIisKKyAgICAgICAgIlwwMDNcMDAwXDAwMVx1RkZGRlx1RkZGRlwwMDA8XDAwMFwwMDFcMDAwXDAxMVx1RkZGRlx1RkZGRlwwMDBcMDAxXDAwMCIrCisgICAgICAgICI8XDAwMFwwMDFcMDAwPFwwMDBcMDAxXDAwMFx1MDA4RlwwMDBcMDAxXHVGRkZGXHVCOUIwXDAwMFwwMDNcMDAwXDAwMVx1RkZGRiIrCisgICAgICAgICJcdUZGRkZcMDAweFwwMDBcMDAwXDAwMFwwMTFcdUZGRkZcdUZGRkZcMDAwXDAwMVwwMDB4XDAwMFwwMDBcMDAwPFwwMDAiKworICAgICAgICAiXDAxM1wwMDBXXDAwMG5cMDAwclwwMDB2XDAwMFx1MDA4M1wwMDBcdTAwODVcMDAwXHUwMDg2XDAwMFx1MDA4N1wwMDBcdTAwOEMiKworICAgICAgICAiXDAwMFx1MDBBNFwwMDBcdTAxMjJcMDAwXDAwMVx1RkZGRlx1QjlCMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwIisKKyAgICAgICAgIlwwMDBcMDAwXDAwMFwwMDNcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDA8XDAwMFwwMDFcMDAwdFwwMDAiKworICAgICAgICAiXDAwMVx1RkZGRlx1QjlCMFwwMDBcMDA0XDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxM1wwMDBcMDM3IisKKyAgICAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDA8XDAwMFwwMDFcMDAwRFwwMDBcMDAwXHVGRkZGXHVDN0MwXDAwMFwwMzEiKworICAgICAgICAiXDAwMDtcMDAwPFwwMDA+XDAwMENcMDAwSVwwMDBSXDAwMFhcMDAwYVwwMDBiXDAwMGVcMDAwc1wwMDB5XDAwMHpcMDAwIisKKyAgICAgICAgIlx1MDA4NFwwMDBcdTAwOTBcMDAwXHUwMDkxXDAwMFx1MDA5MlwwMDBcdTAwOTlcMDAwXHUwMDlEXDAwMFx1MDA5RVwwMDAiKworICAgICAgICAiXHUwMDlGXDAwMFx1MDBBMFwwMDBcdTAwQTZcMDAwXHUwMTJBXDAwMFx1MDE4OVwwMDBcMDAxXHVGRkZGXHVDN0MwXDAwMCIrCisgICAgICAgICJcMDAzXDAwMFwwMDFcdUZGRkZcdUZGRkZcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMTFcdUZGRkZcdUZGRkZcMDAwXDAwMVwwMDAiKworICAgICAgICAiXDAwMVwwMDBcMDAwXDAwMDxcMDAwXDAwMVwwMDBfXDAwMFwwMDFcdUZGRkZcdUM3QzBcMDAwXDAwM1wwMDBcMDAxXHVGRkZGIisKKyAgICAgICAgIlx1RkZGRlwwMDB4XDAwMFwwMDBcMDAwXDAxMVx1RkZGRlx1RkZGRlwwMDBcMDAxXDAwMHhcMDAwXDAwMFwwMDA8XDAwMCIrCisgICAgICAgICJcMDA0XDAwMF1cMDAwZlwwMDBcdTAwQTNcMDAwXHUwMTA0XDAwMFwwMDFcdUZGRkZcdUM3QzBcMDAwXDAwM1wwMDBcMDE3IisKKyAgICAgICAgIlx1RkZGRlx1RkZGRlwwMDB4XDAwMFwwMDBcMDAwXDAxMFwwMDBcMDMxXDAwMFwwMDBcMDAweFwwMDBcMDAwXDAwMDxcMDAwIisKKyAgICAgICAgIlwwMDFcMDAwQFwwMDBcMDAxXHVGRkZGXHVDN0MwXDAwMFwwMTFcMDAwXDAxMFx1RkZGRlx1RkZGRlwwMDBcMDAwXDAwMCIrCisgICAgICAgICJcMDAwXDAwMFwwMDFcMDAwXDAxN1x1RkZGRlx1RkZGRlwwMDBcMDAwXDAwMFwwMDBcMDAwPFwwMDBcMDAxXDAwMFFcMDAwIisKKyAgICAgICAgIlwwMDFcdUZGRkZcdUM3QzBcMDAwXDAxMVwwMDBcMDExXHVGRkZGXHVGRkZGXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMCIrCisgICAgICAgICJcMDExXHVGRkZGXHVGRkZGXDAwMFwwMDBcMDAwXDAwMFwwMDA8XDAwMFwwMDFcMDAwXHUwMEIxXDAwMFwwMDFcdUZGRkYiKworICAgICAgICAiXHVDN0MwXDAwMFwwMTFcMDAwXDAxMVx1RkZGRlx1RkZGRlwwMDBcdTAwRjBcMDAwXDAwMlwwMDBcMDAyXDAwMFwwMTFcdUZGRkYiKworICAgICAgICAiXHVGRkZGXDAwMFx1MDBCNFwwMDBcMDAyXDAwMDxcMDAwXDAwMVwwMDBcdTAwOThcMDAwXDAwMVx1RkZGRlx1QzdDMFwwMDAiKworICAgICAgICAiXDAxMFwwMDBcMDAxXHVGRkZGXHVGRkZGXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAzXDAwMFwwMDFcdUZGRkZcdUZGRkZcMDAwIisKKyAgICAgICAgIlwwMDBcMDAwXDAwMFwwMDA8XDAwMFwwMDFcMDAwP1wwMDBcMDAxXHVGRkZGXHVDN0MwXDAwMFwwMTBcMDAwXDAwMVx1RkZGRiIrCisgICAgICAgICJcdUZGRkZcMDAweFwwMDBcMDAwXDAwMFwwMDNcMDAwXDAxN1x1RkZGRlx1RkZGRlwwMDB4XDAwMFwwMDBcMDAwPFwwMDAiKworICAgICAgICAiXDAwMVwwMDBcdTAxMERcMDAwXDAwMVx1RkZGRlx1Q0VDOFwwMDBcMDAzXDAwMFwwMDFcdUZGRkZcdUZGRkZcMDAwXDAwMSIrCisgICAgICAgICJcMDAwXDAwMFwwMDBcMDExXHVGRkZGXHVGRkZGXDAwMFwwMDFcMDAwXDAwMVwwMDBcMDAwXDAwMDxcMDAwXDAwMlwwMDAiKworICAgICAgICAiXHUwMDlDXDAwMFx1MDExQ1wwMDBcMDAwXHVGRkZGXHVENUQwXDAwMFwwMTVcMDAwXDAwMlwwMDBBXDAwMEZcMDAwSlwwMDAiKworICAgICAgICAiS1wwMDBPXDAwMFwxMzRcMDAwcFwwMDB3XDAwMHxcMDAwXHUwMDhEXDAwMFx1MDA5NVwwMDBcdTAxMjlcMDAwXDAwMVx1RkZGRiIrCisgICAgICAgICJcdUQ1RDBcMDAwXDAwM1wwMDBcMDAxXHVGRkZGXHVGRkZGXDAwMHhcMDAwXDAwMFwwMDBcMDExXHVGRkZGXHVGRkZGXDAwMCIrCisgICAgICAgICJcMDAxXDAwMHhcMDAwXDAwMFwwMDA8XDAwMFwwMDFcMDAwXHUwMDgwXDAwMFwwMDFcdUZGRkZcdUQ1RDBcMDAwXDAwMlx1RkZGRiIrCisgICAgICAgICJcdUZGRkZcMDAwXDAwMVwwMDA8XDAwMFwwMDJcMDAwXDAxMVx1RkZGRlx1RkZGRlwwMDBcMDAxXDAwMDxcMDAwXDAwMlwwMDAiKworICAgICAgICAiPFwwMDBcMDAxXDAwMF5cMDAwXDAwMVx1RkZGRlx1RDVEMFwwMDBcMDExXDAwMFwwMjJcMDAwXDAwMFwwMDBcMDAwXDAwMCIrCisgICAgICAgICJcMDAwXDAwMFwwMDFcMDAwXDAzNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDA8XDAwMFwwMDFcMDAwXHUwMDgyXDAwMCIrCisgICAgICAgICJcMDAxXHVGRkZGXHVENUQwXDAwMFwwMTFcMDAwXDAxMFx1RkZGRlx1RkZGRlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDAiKworICAgICAgICAiXDAxN1x1RkZGRlx1RkZGRlwwMDBcMDAwXDAwMFwwMDBcMDAwPFwwMDBcMDAzXDAwMD1cMDAwXHUwMDlBXDAwMFx1MDExOCIrCisgICAgICAgICJcMDAwXDAwMFx1RkZGRlx1RTNFMFwwMDBcMDAzXDAwMFx1MDA4OVwwMDBcdTAxMEJcMDAwXHUwMTI4XDAwMFwwMDBcdUZGRkYiKworICAgICAgICAiXHVGMUYwXDAwMFwwMDJcMDAwXHUwMTA2XDAwMFx1MDEyNFwwMDBcMDAxXHVGRkZGXHVGMUYwXDAwMFwwMDJcdUZGRkZcdUZGRkYiKworICAgICAgICAiXDAwMFwwMDFcMDAwPFwwMDBcMDAyXDAwMFwwMTFcdUZGRkZcdUZGRkZcMDAwXDAwMVwwMDA8XDAwMFwwMDJcMDAwPFwwMDAiKworICAgICAgICAiXDAwMlwwMDBcdTAwOUJcMDAwXHUwMTAzXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDI2XDAwMFwwMDVcMDAwXDAxMlwwMDBcMDE0IisKKyAgICAgICAgIlwwMDBcMDE1XDAwMFwwMjJcMDAwXDAyNFwwMDBcMDI1XDAwMFwwMzFcMDAwJFwwMDAtXDAwMDFcMDAwMlwwMDA0XDAwMCIrCisgICAgICAgICI1XDAwMFNcMDAwXHUwMTBBXDAwMFx1MDEwQ1wwMDBcdTAxMjNcMDAwXHUwMTNFXDAwMFx1MDEzRlwwMDBcdTAxNzJcMDAwIisKKyAgICAgICAgIlx1MDFCM1wwMDBcMDAxXDAwMFwwMDBcMDAwXDAwNVwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTAiKworICAgICAgICAiXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwPFwwMDBcMDAxXDAwMFwwMzJcMDAwXDAwMVwwMDBcMDAwIisKKyAgICAgICAgIlwwMDBcMDAyXHVGRkZGXHVGRkZGXDAwMFwwMDFcMDAwPFwwMDBcMDAyXDAwMFwwMTFcdUZGRkZcdUZGRkZcMDAwXDAwMSIrCisgICAgICAgICJcMDAwPFwwMDBcMDAyXDAwMDxcMDAwXDAxMFwwMDBcdTAxMDVcMDAwXHUwMTA3XDAwMFx1MDEwOVwwMDBcdTAxNDNcMDAwIisKKyAgICAgICAgIlx1MDE0Q1wwMDBcdTAxNTJcMDAwXHUwMTU0XDAwMFx1MDFCNVwwMDBcMDAxXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAxXDAwMCIrCisgICAgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEzXDAwMFwwMzdcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyNFwwMDAiKworICAgICAgICAiXDAwMVwwMDBcMDA2XDAwMFwwMDBcMDAwXHUwRTEwXDAwMFwwMTVcMDAwXDAxMFwwMDBcMDEzXDAwMFwwMTdcMDAwXDAzMCIrCisgICAgICAgICJcMDAwIVwwMDBcMDQyXDAwMCNcMDAwJVwwMDAoXDAwMC9cMDAwMFwwMDAzXDAwMFx1MDEzMFwwMDBcMDAxXDAwMFx1MEUxMCIrCisgICAgICAgICJcMDAwXDAwMlx1RkZGRlx1RkZGRlwwMDBcMDAxXDAwMDxcMDAwXDAwMlwwMDBcMDExXHVGRkZGXHVGRkZGXDAwMFwwMDEiKworICAgICAgICAiXDAwMDxcMDAwXDAwMlwwMDA8XDAwMCFcMDAwXDAyM1wwMDBcdTAwQjRcMDAwXHUwMTA4XDAwMFx1MDEyMFwwMDBcdTAxNDAiKworICAgICAgICAiXDAwMFx1MDE0MVwwMDBcdTAxNDRcMDAwXHUwMTQ1XDAwMFx1MDE0NlwwMDBcdTAxNDdcMDAwXHUwMTQ5XDAwMFx1MDE0QiIrCisgICAgICAgICJcMDAwXHUwMTREXDAwMFx1MDE1M1wwMDBcdTAxNTVcMDAwXHUwMTU2XDAwMFx1MDE1N1wwMDBcdTAxNTlcMDAwXHUwMTVCIisKKyAgICAgICAgIlwwMDBcdTAxNUNcMDAwXHUwMTVEXDAwMFx1MDE1RlwwMDBcdTAxNjFcMDAwXHUwMTYyXDAwMFx1MDE2NFwwMDBcdTAxNjYiKworICAgICAgICAiXDAwMFx1MDE2OFwwMDBcdTAxNkFcMDAwXHUwMTZCXDAwMFx1MDE2Q1wwMDBcdTAxNkVcMDAwXHUwMTZGXDAwMFx1MDE3MSIrCisgICAgICAgICJcMDAwXDAwMVwwMDBcdTBFMTBcMDAwXDAwMlx1RkZGRlx1RkZGRlwwMDBcMDAxXDAwMHhcMDAwXDAwMVwwMDBcMDExXHVGRkZGIisKKyAgICAgICAgIlx1RkZGRlwwMDBcMDAxXDAwMHhcMDAwXDAwMVwwMDA8XDAwMFwwMDJcMDAwXHUwMTFCXDAwMFx1MDE4MlwwMDBcMDAxXDAwMCIrCisgICAgICAgICJcdTBFMTBcMDAwXDAwNFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMTBcdUZGRkZcdUZGRkZcMDAwIisKKyAgICAgICAgIlwwMDFcMDAwXDAwMFwwMDBcMDAxXDAwMDxcMDAwXDAwMVwwMDA3XDAwMFwwMDFcMDAwXHUwRTEwXDAwMFwwMTBcMDAwXDAwMSIrCisgICAgICAgICJcdUZGRkZcdUZGRkZcMDAweFwwMDBcMDAwXDAwMFwwMDNcMDAwXDAwMVx1RkZGRlx1RkZGRlwwMDB4XDAwMFwwMDBcMDAwIisKKyAgICAgICAgIjxcMDAwXDAwMVwwMDA4XDAwMFwwMDBcMDAwXHUxQzIwXDAwMFwwMTZcMDAwXDAxNlwwMDBcMDIwXDAwMFwwMzNcMDAwXDAzNCIrCisgICAgICAgICJcMDAwIFwwMDAmXDAwMCdcMDAwKVwwMDAqXDAwMCtcMDAwNlwwMDBcdTAxMUFcMDAwXHUwMTM2XDAwMFx1MDE2RFwwMDAiKworICAgICAgICAiXDAwMVwwMDBcdTFDMjBcMDAwXDAwM1wwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTFcMDAwXDAwMSIrCisgICAgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwPFwwMDBcMDAxXDAwMFx1MDBDN1wwMDBcMDAxXDAwMFx1MUMyMFwwMDAiKworICAgICAgICAiXDAwM1wwMDBcMDAxXDAwMFwwMDBcMDAwPFwwMDBcMDAwXDAwMFwwMTFcMDAwXDAwN1wwMDBcMDAwXDAwMDxcMDAwXDAwMCIrCisgICAgICAgICJcMDAwPFwwMDBcMDAxXDAwMFx1MDBEM1wwMDBcMDAxXDAwMFx1MUMyMFwwMDBcMDAzXDAwMFwwMTdcdUZGRkZcdUZGRkEiKworICAgICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDExXDAwMFwwMTdcdUZGRkZcdUZGRkFcMDAwXDAwMFwwMDBcMDAwXDAwMDxcMDAwIisKKyAgICAgICAgIlwwMDFcMDAwXHUwMENDXDAwMFwwMDFcMDAwXHUxQzIwXDAwMFwwMDNcdUZGRkZcdUZGRkZcMDAwXDAwNlwwMDBcMDAwXDAwMCIrCisgICAgICAgICJcMDAxXDAwMFwwMTBcdUZGRkZcdUZGRkZcMDAwXDAwNVwwMDBcdTA1NjRcMDAwXDAwMVwwMDA8XDAwMFwwMDJcMDAwXDAwMyIrCisgICAgICAgICJcMDAwXDAyMVwwMDBcMDAxXDAwMFx1MUMyMFwwMDBcMDAyXHVGRkZGXHVGRkZGXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwIisKKyAgICAgICAgIlwwMDBcMDExXHVGRkZGXHVGRkZGXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMDxcMDAwXDAwMVwwMDBcdTAwQzBcMDAwIisKKyAgICAgICAgIlwwMDFcMDAwXHUxQzIwXDAwMFwwMDJcdUZGRkZcdUZGRkZcMDAwXDAwMVwwMDA8XDAwMFwwMDJcMDAwXDAxMVx1RkZGRiIrCisgICAgICAgICJcdUZGRkZcMDAwXDAwMVwwMDA8XDAwMFwwMDJcMDAwPFwwMDBcMDE2XDAwMFx1MDBFMlwwMDBcdTAxMjFcMDAwXHUwMTQyIisKKyAgICAgICAgIlwwMDBcdTAxNDhcMDAwXHUwMTRBXDAwMFx1MDE0RVwwMDBcdTAxNEZcMDAwXHUwMTUxXDAwMFx1MDE1RVwwMDBcdTAxNjMiKworICAgICAgICAiXDAwMFx1MDE2NVwwMDBcdTAxNjdcMDAwXHUwMTY5XDAwMFx1MDE3MFwwMDBcMDAxXDAwMFx1MUMyMFwwMDBcMDAyXHVGRkZGIisKKyAgICAgICAgIlx1RkZGRlwwMDBcMDAxXDAwMHhcMDAwXDAwMVwwMDBcMDExXHVGRkZGXHVGRkZGXDAwMFwwMDFcMDAweFwwMDBcMDAxXDAwMCIrCisgICAgICAgICI8XDAwMFwwMDJcMDAwXHUwMTUwXDAwMFx1MDE1OFwwMDBcMDAxXDAwMFx1MUMyMFwwMDBcMDAyXHVGRkZGXHVGRkZGXDAwMCIrCisgICAgICAgICJcMDA1XDAwMFwwMDBcMDAwXDAwMVwwMDBcMDEwXHVGRkZGXHVGRkZGXDAwMFwwMDVcMDAwXDAwMFwwMDBcMDAxXDAwMDwiKworICAgICAgICAiXDAwMFwwMDFcMDAwXHUwMEI3XDAwMFwwMDFcMDAwXHUxQzIwXDAwMFwwMTBcMDAwXDAxN1x1RkZGRlx1RkZGRlwwMDB4IisKKyAgICAgICAgIlwwMDBcMDAwXDAwMFwwMDJcMDAwXDAxN1x1RkZGRlx1RkZGRlwwMDB4XDAwMFwwMDBcMDAwPFwwMDBcMDAxXDAwMFwwMzUiKworICAgICAgICAiXDAwMFwwMDBcMDAwXHUyQTMwXDAwMFwwMjNcMDAwXDAwN1wwMDBcMDExXDAwMFwwMjZcMDAwXDAyN1wwMDBcMDM2XDAwMCIrCisgICAgICAgICJcMDM3XDAwMCxcMDAwLlwwMDBcdTAwQjJcMDAwXHUwMEI1XDAwMFx1MDBCRFwwMDBcdTAwRENcMDAwXHUwMEU5XDAwMFx1MDBFQyIrCisgICAgICAgICJcMDAwXHUwMTFGXDAwMFx1MDEzN1wwMDBcdTAxNzZcMDAwXHUwMTdBXDAwMFx1MDE3RlwwMDBcMDAxXDAwMFx1MkEzMFwwMDAiKworICAgICAgICAiXDAwM1wwMDBcMDAxXDAwMFwwMDBcMDAwXHUwMEI0XDAwMFwwMDFcMDAwXDAxMVwwMDBcMDAxXDAwMFwwMDBcMDAwXHUwMEI0IisKKyAgICAgICAgIlwwMDBcMDAxXDAwMDxcMDAwXDAwMVwwMDBcdTAwQkNcMDAwXDAwMVwwMDBcdTJBMzBcMDAwXDAwMlx1RkZGRlx1RkZGRiIrCisgICAgICAgICJcMDAwXDAwMVwwMDB4XDAwMFwwMDFcMDAwXDAxMVx1RkZGRlx1RkZGRlwwMDBcMDAxXDAwMHhcMDAwXDAwMVwwMDA8XDAwMCIrCisgICAgICAgICJcMDAxXDAwMFx1MDE1QVwwMDBcMDAwXDAwMFx1MkJEOFwwMDBcMDAzXDAwMFx1MDBFRFwwMDBcdTAwRUVcMDAwXHUwMEVGIisKKyAgICAgICAgIlwwMDBcMDAxXDAwMFx1MzEzOFwwMDBcMDAyXDAwMFwwMjRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDAiKworICAgICAgICAiXDAyN1wwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDA8XDAwMFwwMDFcMDAwXHUwMEY5XDAwMFwwMDBcMDAwXHUzODQwIisKKyAgICAgICAgIlwwMDBcMDA2XDAwMFx1MDBDQVwwMDBcdTAwRTFcMDAwXHUwMTM4XDAwMFx1MDE3Q1wwMDBcdTAxN0VcMDAwXHUwMTgwXDAwMCIrCisgICAgICAgICJcMDAxXDAwMFx1Mzg0MFwwMDBcMDAyXHVGRkZGXHVGRkZGXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTFcdUZGRkYiKworICAgICAgICAiXHVGRkZGXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMDxcMDAwXDAwMVwwMDBcdTAwRjhcMDAwXDAwMVwwMDBcdTM4NDAiKworICAgICAgICAiXDAwMFwwMDJcdUZGRkZcdUZGRkZcMDAwXDAwMVwwMDA8XDAwMFwwMDBcMDAwXDAxMVx1RkZGRlx1RkZGRlwwMDBcMDAxIisKKyAgICAgICAgIlwwMDA8XDAwMFwwMDBcMDAwPFwwMDBcMDAxXDAwMFx1MDBCRVwwMDBcMDAxXDAwMFx1Mzg0MFwwMDBcMDAyXHVGRkZGXHVGRkZGIisKKyAgICAgICAgIlwwMDBcMDAxXDAwMHhcMDAwXDAwMVwwMDBcMDExXHVGRkZGXHVGRkZGXDAwMFwwMDFcMDAweFwwMDBcMDAxXDAwMDxcMDAwIisKKyAgICAgICAgIlwwMDVcMDAwXHUwMEI5XDAwMFx1MDBFNVwwMDBcdTAxMDJcMDAwXHUwMTYwXDAwMFx1MDE4NVwwMDBcMDAwXDAwMFx1M0Y0OCIrCisgICAgICAgICJcMDAwXDAwMVwwMDBcdTAwRDRcMDAwXDAwMFwwMDBcdTQ2NTBcMDAwXDAwN1wwMDBcdTAwQkJcMDAwXHUwMENCXDAwMFx1MDBGMiIrCisgICAgICAgICJcMDAwXHUwMEY3XDAwMFx1MDEzOVwwMDBcdTAxN0JcMDAwXHUwMTdEXDAwMFwwMDFcMDAwXHU0NjUwXDAwMFwwMDNcMDAwIisKKyAgICAgICAgIlwwMDJcdUZGRkZcdUZGRkZcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTFcMDAwXDAxN1wwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCIrCisgICAgICAgICJcMDAwPFwwMDBcMDAyXDAwMFx1MDBENlwwMDBcdTAxODdcMDAwXDAwMVwwMDBcdTQ2NTBcMDAwXDAwMlx1RkZGRlx1RkZGRiIrCisgICAgICAgICJcMDAwXDAwMVwwMDB4XDAwMFwwMDFcMDAwXDAxMVx1RkZGRlx1RkZGRlwwMDBcMDAxXDAwMHhcMDAwXDAwMVwwMDA8XDAwMCIrCisgICAgICAgICJcMDAyXDAwMFx1MDBCQVwwMDBcdTAxMDFcMDAwXDAwMVwwMDBcdTQ2NTBcMDAwXDAwMlx1RkZGRlx1RkZGRlwwMDBcMDAxIisKKyAgICAgICAgIlwwMDBcdTAwOTZcMDAwXDAwMFwwMDBcMDExXHVGRkZGXHVGRkZGXDAwMFwwMDFcMDAwXHUwMDk2XDAwMFwwMDBcMDAwPCIrCisgICAgICAgICJcMDAwXDAwMVwwMDBcdTAwQzFcMDAwXDAwMFwwMDBcdTRENThcMDAwXDAwMlwwMDBcdTAwQzNcMDAwXHUwMTc1XDAwMFwwMDAiKworICAgICAgICAiXDAwMFx1NTBEQ1wwMDBcMDAxXDAwMFx1MDBEOFwwMDBcMDAwXDAwMFx1NTQ2MFwwMDBcMDEwXDAwMFx1MDBBRlwwMDBcdTAwQjMiKworICAgICAgICAiXDAwMFx1MDBDNlwwMDBcdTAwQzhcMDAwXHUwMEZBXDAwMFx1MDExOVwwMDBcdTAxM0FcMDAwXHUwMTc3XDAwMFwwMDFcMDAwIisKKyAgICAgICAgIlx1NTQ2MFwwMDBcMDAyXHVGRkZGXHVGRkZGXDAwMFwwMDFcMDAweFwwMDBcMDAxXDAwMFwwMTFcdUZGRkZcdUZGRkZcMDAwIisKKyAgICAgICAgIlwwMDFcMDAweFwwMDBcMDAxXDAwMDxcMDAwXDAwNFwwMDBcdTAwQjZcMDAwXHUwMEUzXDAwMFx1MDBFNFwwMDBcdTAwRUEiKworICAgICAgICAiXDAwMFwwMDBcMDAwXHU1QjY4XDAwMFwwMDJcMDAwXHUwMEVCXDAwMFx1MDE3OVwwMDBcMDAwXDAwMFx1NjI3MFwwMDBcMDEyIisKKyAgICAgICAgIlwwMDBcdTAwQURcMDAwXHUwMEJGXDAwMFx1MDBEMVwwMDBcdTAwRTZcMDAwXHUwMEU3XDAwMFx1MDBGMFwwMDBcdTAwRkUiKworICAgICAgICAiXDAwMFx1MDEzQlwwMDBcdTAxNzhcMDAwXHUwMUI0XDAwMFwwMDFcMDAwXHU2MjcwXDAwMFwwMDNcMDAwXDAzM1wwMDBcMDAwIisKKyAgICAgICAgIlwwMDB4XDAwMFwwMDFcMDAwXDAxMFwwMDBcMDM0XDAwMFwwMDBcMDAweFwwMDBcMDAxXDAwMDxcMDAwXDAwMVwwMDBcdTAwQ0YiKworICAgICAgICAiXDAwMFwwMDFcMDAwXHU2MjcwXDAwMFwwMDJcdUZGRkZcdUZGRkZcMDAwXDAwMVwwMDB4XDAwMFwwMDFcMDAwXDAxMVx1RkZGRiIrCisgICAgICAgICJcdUZGRkZcMDAwXDAwMVwwMDB4XDAwMFwwMDFcMDAwPFwwMDBcMDAxXDAwMFx1MDBEOVwwMDBcMDAwXDAwMFx1NzA4MFwwMDAiKworICAgICAgICAiXDAxMFwwMDBcdTAwQUNcMDAwXHUwMEMyXDAwMFx1MDBEQVwwMDBcdTAwREJcMDAwXHUwMERGXDAwMFx1MDBGNVwwMDBcdTAxMTYiKworICAgICAgICAiXDAwMFx1MDEzQ1wwMDBcMDAxXDAwMFx1NzA4MFwwMDBcMDAzXDAwMFwwMzNcMDAwXDAwMFwwMDB4XDAwMFwwMDFcMDAwIisKKyAgICAgICAgIlwwMTBcMDAwXDAzNFwwMDBcMDAwXDAwMHhcMDAwXDAwMVwwMDA8XDAwMFwwMDFcMDAwXHUwMEZDXDAwMFwwMDFcMDAwXHU3MDgwIisKKyAgICAgICAgIlwwMDBcMDAzXDAwMFwwMTJcdUZGRkZcdUZGRkZcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAxM1x1RkZGRlx1RkZGRiIrCisgICAgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMDxcMDAwXDAwN1wwMDBcdTAwQzVcMDAwXHUwMENEXDAwMFx1MDBEN1wwMDBcdTAwREQiKworICAgICAgICAiXDAwMFx1MDBGNFwwMDBcdTAwRkRcMDAwXHUwMTFFXDAwMFwwMDFcMDAwXHU3MDgwXDAwMFwwMDVcMDAwXDAzNlwwMDBcMDAwIisKKyAgICAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDM2XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMDxcMDAwXDAwMSIrCisgICAgICAgICJcMDAwXHUwMEY2XDAwMFwwMDFcMDAwXHU3MDgwXDAwMFwwMDJcMDAwXDAyNlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAiKworICAgICAgICAiXDAxMFwwMDBcMDI1XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMDxcMDAwXDAwMVwwMDBcdTAwRTBcMDAwXDAwMVwwMDAiKworICAgICAgICAiXHU3MDgwXDAwMFwwMDJcdUZGRkZcdUZGRkZcMDAwXDAwMVwwMDB4XDAwMFwwMDFcMDAwXDAxMVx1RkZGRlx1RkZGRlwwMDAiKworICAgICAgICAiXDAwMVwwMDB4XDAwMFwwMDFcMDAwPFwwMDBcMDAxXDAwMFx1MDBEMFwwMDBcMDAxXDAwMFx1NzA4MFwwMDBcMDA0XDAwMCIrCisgICAgICAgICJcMDEwXHVGRkZGXHVGRkZGXDAwMFx1MDBEMlwwMDBcMDAwXDAwMFwwMTFcMDAwXDAyMFx1RkZGRlx1RkZGRlwwMDBcdTAwRDIiKworICAgICAgICAiXDAwMFwwMDBcMDAwPFwwMDBcMDAxXDAwMFx1MDBDRVwwMDBcMDAwXDAwMFx1N0U5MFwwMDBcMDA3XDAwMFx1MDBDOVwwMDAiKworICAgICAgICAiXHUwMEQyXDAwMFx1MDBFOFwwMDBcdTAwRkJcMDAwXHUwMTNEXDAwMFx1MDE4MVwwMDBcdTAxQTVcMDAwXDAwMVwwMDBcdTdFOTAiKworICAgICAgICAiXDAwMFwwMDNcMDAwXDAzM1wwMDBcMDAwXDAwMHhcMDAwXDAwMVwwMDBcMDEwXDAwMFwwMzRcMDAwXDAwMFwwMDB4XDAwMCIrCisgICAgICAgICJcMDAxXDAwMDxcMDAwXDAwMVwwMDBcdTAwQzRcMDAwXDAwMVwwMDBcdTdFOTBcMDAwXDAwMlx1RkZGRlx1RkZGRlwwMDAiKworICAgICAgICAiXDAwMVwwMDB4XDAwMFwwMDFcMDAwXDAxMVx1RkZGRlx1RkZGRlwwMDBcMDAxXDAwMHhcMDAwXDAwMVwwMDA8XDAwMFwwMDEiKworICAgICAgICAiXDAwMFx1MDEwMFwwMDBcMDAxXDAwMFx1N0U5MFwwMDBcMDA0XHVGRkZGXHVGRkYyXHVGRkZGXHVGRkZGXDAwMFwwMDBcMDAwIisKKyAgICAgICAgIlwwMDBcMDAwXDAxMVx1RkZGRlx1RkZGMlx1RkZGRlx1RkZGRlwwMDBcMDAwXDAwMFwwMDBcMDAwPFwwMDBcMDAxXDAwMCIrCisgICAgICAgICJcdTAwRjNcMDAwXDAwMVwwMDBcdTg1OThcMDAwXDAxMVwwMDBcMDAzXDAwMFwwMDBcMDAweFwwMDBcMDAwXDAwMFwwMDIiKworICAgICAgICAiXHVGRkZGXHVGRkZGXDAwMFwwMDFcMDAweFwwMDBcMDAwXDAwMDxcMDAwXDAwMlwwMDBcMDAwXDAwMFx1MDExMVwwMDBcMDAxIisKKyAgICAgICAgIlwwMDBcdTg1OThcMDAwXDAxMVx1RkZGRlx1RkZGRlwwMDBcMDAxXDAwMHhcMDAwXDAwMVwwMDBcMDAyXHVGRkZGXHVGRkZGIisKKyAgICAgICAgIlwwMDBcMDAxXDAwMHhcMDAwXDAwMVwwMDA8XDAwMFwwMDJcMDAwXHUwMTBFXDAwMFx1MDExMFwwMDBcMDAwXDAwMFx1OENBMCIrCisgICAgICAgICJcMDAwXDAwN1wwMDBcdTAwQUVcMDAwXHUwMTMxXDAwMFx1MDE5N1wwMDBcdTAxQThcMDAwXHUwMUFBXDAwMFx1MDFBRVwwMDAiKworICAgICAgICAiXHUwMUIxXDAwMFwwMDFcMDAwXHU4Q0EwXDAwMFwwMDJcdUZGRkZcdUZGRkZcMDAwXDAwMVwwMDB4XDAwMFwwMDFcMDAwIisKKyAgICAgICAgIlwwMTFcdUZGRkZcdUZGRkZcMDAwXDAwMVwwMDB4XDAwMFwwMDFcMDAwPFwwMDBcMDAyXDAwMFx1MDBGMVwwMDBcdTAwRkYiKworICAgICAgICAiXDAwMFwwMDFcMDAwXHU4Q0EwXDAwMFwwMTFcdUZGRkZcdUZGRkZcMDAwXDAwMVwwMDB4XDAwMFwwMDFcMDAwXDAwMlx1RkZGRiIrCisgICAgICAgICJcdUZGRkZcMDAwXDAwMVwwMDB4XDAwMFwwMDFcMDAwPFwwMDBcMDAzXDAwMFwwMDFcMDAwXHUwMTE1XDAwMFx1MDExN1wwMDAiKworICAgICAgICAiXDAwMVwwMDBcdThDQTBcMDAwXDAxMVx1RkZGRlx1RkZGRlwwMDBcMDAxXDAwMHhcMDAwXDAwMVwwMDBcMDAyXDAwMFwwMDEiKworICAgICAgICAiXHVGRkZGXHVGRkZGXDAwMHhcMDAwXDAwMVwwMDA8XDAwMFwwMDJcMDAwXHUwMTBGXDAwMFx1MDExM1wwMDBcMDAxXDAwMCIrCisgICAgICAgICJcdThDQTBcMDAwXDAxMVwwMDBcMDAxXHVGRkZGXHVGRkZGXDAwMHhcMDAwXDAwMVwwMDBcMDAyXHVGRkZGXHVGRkZGXDAwMCIrCisgICAgICAgICJcMDAxXDAwMHhcMDAwXDAwMVwwMDA8XDAwMFwwMDFcMDAwXHUwMTEyXDAwMFwwMDFcMDAwXHU5M0E4XDAwMFwwMTFcdUZGRkYiKworICAgICAgICAiXHVGRkZGXDAwMFwwMDFcMDAweFwwMDBcMDAwXDAwMFwwMDJcdUZGRkZcdUZGRkZcMDAwXDAwMVwwMDB4XDAwMFwwMDBcMDAwIisKKyAgICAgICAgIlwwMzZcMDAwXDAwMVwwMDBcdTAxMTRcMDAwXDAwMFwwMDBcdTlBQjBcMDAwXDAwNVwwMDBcdTAxMzJcMDAwXHUwMTk2XDAwMCIrCisgICAgICAgICJcdTAxOUJcMDAwXHUwMUE3XDAwMFx1MDFCMlwwMDBcMDAxXDAwMFx1OUFCMFwwMDBcMDEzXDAwMFwwMDFcMDAwXDAwMFwwMDAiKworICAgICAgICAieFwwMDBcMDAxXDAwMFwwMDJcMDAwXDAwMlwwMDBcMDAwXDAwMHhcMDAwXDAwMVwwMDA8XDAwMFwwMDFcMDAwXHUwMUEzIisKKyAgICAgICAgIlwwMDBcMDAxXDAwMFx1OUFCMFwwMDBcMDAyXHVGRkZGXHVGRkZGXDAwMFwwMDFcMDAweFwwMDBcMDAxXDAwMFwwMTFcdUZGRkYiKworICAgICAgICAiXHVGRkZGXDAwMFwwMDFcMDAweFwwMDBcMDAxXDAwMDxcMDAwXDAwMVwwMDBcdTAwREVcMDAwXDAwMVwwMDBcdTlBQjBcMDAwIisKKyAgICAgICAgIlwwMTFcMDAwXDAyN1x1RkZGRlx1RkZGRlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDI3XHVGRkZGXHVGRkZGXDAwMCIrCisgICAgICAgICJcMDAwXDAwMFwwMDBcMDAwPFwwMDBcMDAxXDAwMFx1MDE4RlwwMDBcMDAwXDAwMFx1QTFCOFwwMDBcMDAxXDAwMFx1MDFBMiIrCisgICAgICAgICJcMDAwXDAwMFwwMDBcdUE4QzBcMDAwXDAxMFwwMDBcdTAxMzNcMDAwXHUwMTkzXDAwMFx1MDE5Q1wwMDBcdTAxOURcMDAwIisKKyAgICAgICAgIlx1MDFBMFwwMDBcdTAxQUNcMDAwXHUwMUFGXDAwMFx1MDFCMFwwMDBcMDAxXDAwMFx1QThDMFwwMDBcMDAyXHVGRkZGXHVGRkZGIisKKyAgICAgICAgIlwwMDBcMDAxXDAwMHhcMDAwXDAwMVwwMDBcMDExXHVGRkZGXHVGRkZGXDAwMFwwMDFcMDAweFwwMDBcMDAxXDAwMDxcMDAwIisKKyAgICAgICAgIlwwMDJcMDAwXHUwMEI4XDAwMFx1MDBENVwwMDBcMDAxXDAwMFx1QThDMFwwMDBcMDEyXDAwMFwwMDFcdUZGRkZcdUZGRkYiKworICAgICAgICAiXDAwMHhcMDAwXDAwMFwwMDBcMDAxXHVGRkZGXHVGRkZGXDAwMFwwMDFcMDAwXHUwMEI0XDAwMFwwMDBcMDAwPFwwMDBcMDAxIisKKyAgICAgICAgIlwwMDBcdTAxOTJcMDAwXDAwMVwwMDBcdUE4QzBcMDAwXDAxMVwwMDBcMDAxXHVGRkZGXHVGRkZGXDAwMHhcMDAwXDAwMSIrCisgICAgICAgICJcMDAwXDAwMlwwMDBcMDE3XHVGRkZGXHVGRkZGXDAwMHhcMDAwXDAwMVwwMDA8XDAwMFwwMDNcMDAwXHUwMEIwXDAwMFx1MDE4NiIrCisgICAgICAgICJcMDAwXHUwMThDXDAwMFwwMDFcMDAwXHVCMzRDXDAwMFwwMTFcMDAwXDAwMVx1RkZGRlx1RkZGRlwwMDBcdTAwQTVcMDAwIisKKyAgICAgICAgIlwwMDFcMDAwXDAwMlwwMDBcMDE3XHVGRkZGXHVGRkZGXDAwMFx1MDBBNVwwMDBcMDAxXDAwMDxcMDAwXDAwMVwwMDBcdTAxOEQiKworICAgICAgICAiXDAwMFwwMDBcMDAwXHVCNkQwXDAwMFwwMDJcMDAwXHUwMTM0XDAwMFx1MDE5MFwwMDBcMDAxXDAwMFx1QjZEMFwwMDBcMDEyIisKKyAgICAgICAgIlwwMDBcMDAxXHVGRkZGXHVGRkZGXDAwMHhcMDAwXDAwMFwwMDBcMDAwXHVGRkZGXHVGRkZGXDAwMFwwMDFcMDAweFwwMDAiKworICAgICAgICAiXDAwMFwwMDA8XDAwMFwwMDFcMDAwXHUwMUFEXDAwMFwwMDBcMDAwXHVDNEUwXDAwMFwwMDJcMDAwXHUwMTM1XDAwMFx1MDE5QSIKKyAgICAgICAgOworCisgICAgLyoqCisgICAgICogUkxFIGVuY29kZWQgZm9ybSBvZiBJTkRFWF9CWV9OQU1FX0FSUkFZLgorICAgICAqIEBzZWUgY29tLmlibS51dGlsLlV0aWxpdHkuUkxFU3RyaW5nVG9JbnRBcnJheQorICAgICAqID4+IEdFTkVSQVRFRCBEQVRBOiBETyBOT1QgRURJVCA8PAorICAgICAqLworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgSU5ERVhfQllfTkFNRV9BUlJBWV9STEUgPQorICAgICAgICAiXDAwMFx1MDFCNlwwMDBcdTA1OUZcMDAwXHUwNUQ5XDAwMFx1MDIxRFwwMDBcdTAzN0VcMDAwPVwwMDBcdTAyODZcMDAwIisKKyAgICAgICAgIlx1MDJDNFwwMDBcdTAzRTdcMDAwXHUwMkQzXDAwMFx1MDNFN1wwMDBcdTAyODZcMDAwXHUwMkQzXDAwMFx1MDI4NlwwMDAiKworICAgICAgICAiXHUwMjg2XDAwMFx1MDM0MFwwMDBcdTAyRDNcMDAwXHUwMzQwXDAwMFx1MDM3RVwwMDBcdTAyODZcMDAwXHUwMkUzXDAwMCIrCisgICAgICAgICJcdTAyODZcMDAwXHUwMjg2XDAwMFx1MDNFN1wwMDBcdTAzRTdcMDAwXHUwMkQzXDAwMFx1MDI4NlwwMDBcdTAyOUZcMDAwIisKKyAgICAgICAgIlx1MDM0MFwwMDBcdTAzNDBcMDAwXHUwM0Q4XDAwMFx1MDNFN1wwMDBcdTAzRTdcMDAwXHUwMzQwXDAwMFx1MDJEM1wwMDAiKworICAgICAgICAiXHUwMkQzXDAwMFx1MDJEM1wwMDBcdTAyODZcMDAwXHUwMkQzXDAwMFx1MDM0MFwwMDBcdTAzNDBcMDAwXHUwMkQzXDAwMCIrCisgICAgICAgICJcdTAzNDBcMDAwXHUwMzQwXDAwMFx1MDM0MFwwMDBcdTAzRTdcMDAwXHUwMjg2XDAwMFx1MDNFN1wwMDBcdTAyRDNcMDAwIisKKyAgICAgICAgIlx1MDJEM1wwMDBcdTAyODZcMDAwXHUwMjg2XDAwMFx1MDJEM1wwMDBcdTAyODZcMDAwXHUwMjg2XDAwMFx1MDM0MFwwMDAiKworICAgICAgICAiXHUwMzIyXDAwMFx1MDMzMVwwMDBcMDI2XDAwMD1cMDAwXHUwMTc2XDAwMFx1MDE3NlwwMDBcdTAyNUFcMDAwXHUwMTc2IisKKyAgICAgICAgIlwwMDBcdTAxRUZcMDAwXHUwMUIzXDAwMFx1MDIxRFwwMDBcdTAwQjdcMDAwXHUwMTc2XDAwMFx1MDE2N1wwMDBxXDAwMCIrCisgICAgICAgICJcdTAyMURcMDAwcVwwMDBcdTAwOTBcMDAwXHUwMTc2XDAwMFx1MDIxRFwwMDBcdTAyMURcMDAwXHUwMTAzXDAwMFx1MDA5MCIrCisgICAgICAgICJcMDAwcVwwMDBcdTAyMURcMDAwXHUwMEM2XDAwMFx1MDFDMlwwMDBcdTAxNzZcMDAwXHUwMjg2XDAwMFVcMDAwaVwwMDAiKworICAgICAgICAicVwwMDBcdTAxM0ZcMDAwXHUwMTc2XDAwMHFcMDAwXHUwMTAzXDAwMFx1MDBFNFwwMDBcdTAyMURcMDAwXHUwMUExXDAwMCIrCisgICAgICAgICJcdTAyM0NcMDAwXHUwMTkyXDAwMFx1MDExMlwwMDBcdTAxNzZcMDAwXHUwMTc2XDAwMFx1MDBENVwwMDBcdTAxMDNcMDAwIisKKyAgICAgICAgIlx1MDE3NlwwMDBcdTAxQTFcMDAwXHUwMTIxXDAwMGlcMDAwXHVBNUE1XDAwMFwwMDRcMDAwXHUwMTAzXDAwMHFcMDAwXHUwMTNGIisKKyAgICAgICAgIlwwMDBcdTAxMDNcMDAwXHUwMjFEXDAwMD1cMDAwXHUwMTNGXDAwMFx1MDE3NlwwMDBcdTAxNThcMDAwVVwwMDBcdTAxM0YiKworICAgICAgICAiXDAwMFx1MDIxRFwwMDBcdTAwODhcMDAwXHUwMTc2XDAwMFx1MDE3NlwwMDBxXDAwMFx1MDIxRFwwMDBcdTAwOTBcMDAwIisKKyAgICAgICAgIlx1MDA5MFwwMDBcdTAwOTBcMDAwXHUwMjJEXDAwMFx1MDA5MFwwMDBcdTAyNEJcMDAwXHUwMTNGXDAwMFx1MDE3NlwwMDAiKworICAgICAgICAiXHUwMTNGXDAwMFx1MDEzRlwwMDBcdTAxM0ZcMDAwPVwwMDBcdTAyNkJcMDAwXHUwMDkwXDAwMFx1MDEwM1wwMDBcdTAxM0YiKworICAgICAgICAiXDAwMFx1MDIxRFwwMDBpXDAwMFx1MDEzMFwwMDBcdTAxNzZcMDAwXHUwMTc2XDAwMFx1MDE3NlwwMDBcdTAwOTBcMDAwIisKKyAgICAgICAgIlx1MDA5MFwwMDBcdTAyMURcMDAwXHUwMDg4XDAwMFx1MDEwM1wwMDBcdTAxRTBcMDAwXHUwMTc2XDAwMFx1MDI1QVwwMDAiKworICAgICAgICAiXHUwMjc2XDAwMFx1MDIwRFwwMDBcdUE1QTVcMDAwXDAwNFwwMDBcdTAxNzZcMDAwXHUwMDg4XDAwMFx1MDBFNFwwMDBcdTAxQTEiKworICAgICAgICAiXDAwMFx1MDEzRlwwMDBVXDAwMFx1MDE3NlwwMDBVXDAwMFVcMDAwXHUwMEE4XDAwMD1cMDAwcVwwMDBcdTA0RkRcMDAwIisKKyAgICAgICAgIlx1MDREMlwwMDBcdTA1QkZcMDAwXHUwNEIwXDAwMFx1MDY3QlwwMDBcdTAxRDFcMDAwXHUwM0U3XDAwMFx1MDRCMFwwMDAiKworICAgICAgICAiXHUwMkUzXDAwMFx1MDNFN1wwMDBcdTA0QkJcMDAwXHUwM0M5XDAwMFx1MDY1Q1wwMDBcdTA0NTdcMDAwXHUwNDg4XDAwMCIrCisgICAgICAgICJcdTA0NkVcMDAwXHUwM0ZEXDAwMFx1MDNFN1wwMDBcdTA0NDhcMDAwXHUwNEQyXDAwMFx1MDM4RVwwMDBcdTA0OThcMDAwIisKKyAgICAgICAgIlx1MDRGRFwwMDBcdTA0QTdcMDAwXHUwNTcyXDAwMFx1MDUxN1wwMDBcdTA0QjBcMDAwXHUwMzUxXDAwMFx1MDRCMFwwMDAiKworICAgICAgICAiXHUwNTY4XDAwMFx1MDQzMFwwMDBcdTA0NkVcMDAwXHUwMzZGXDAwMFx1MDUxN1wwMDBcdTA1NTlcMDAwXHUwNERGXDAwMCIrCisgICAgICAgICJcdTA1NEFcMDAwXHUwNEQyXDAwMFx1MDU2OFwwMDBcdTAzNjBcMDAwXHUwNDZBXDAwMFx1MDY1Q1wwMDBcdTA0NzhcMDAwIisKKyAgICAgICAgIlx1MDUxN1wwMDBcdTA0QUNcMDAwXHUwNEVFXDAwMFx1MDRGRFwwMDBcdTA0RkRcMDAwXHUwM0U3XDAwMFx1MDUxN1wwMDAiKworICAgICAgICAiXHUwNjJGXDAwMFx1MDRGRFwwMDBcdTA1M0JcMDAwXHUwNDMwXDAwMFx1MDM5RFwwMDBcdTA0QkJcMDAwXHUwNEJCXDAwMCIrCisgICAgICAgICJcdTA0NTdcMDAwXHUwNEQyXDAwMFx1MDREMlwwMDBcdTA1NjhcMDAwXHUwM0U3XDAwMFx1MDRCQlwwMDBcdTA0Q0RcMDAwIisKKyAgICAgICAgIlx1MDNFN1wwMDBcdTA0MUJcMDAwXHUwNDFCXDAwMFx1MDQxQlwwMDBcdTA0RDJcMDAwXHUwNUM5XDAwMFx1MDQ2RVwwMDAiKworICAgICAgICAiXHUwNTkwXDAwMFx1MDUxN1wwMDBcdTA0RkRcMDAwXHUwNTJDXDAwMFx1MDQ2RVwwMDBcdTA0MzlcMDAwXHUwNDIxXDAwMCIrCisgICAgICAgICJcdTA0QjBcMDAwXHUwNTY4XDAwMFx1MDUwOFwwMDBcdTA1MTdcMDAwXHUwNEQyXDAwMFx1MDVDOVwwMDBcdTA1ODFcMDAwIisKKyAgICAgICAgIlx1MDQ4OFwwMDBcdTA0NTdcMDAwXHUwMjc2XDAwMFx1MDFBMVwwMDBcdTAyQUVcMDAwXHUwMjcxXDAwMFx1MDJBRVwwMDAiKworICAgICAgICAiXHUwMkUzXDAwMFx1MDJBRVwwMDBcdTAyODZcMDAwXHUwMjZCXDAwMFx1MDI4NlwwMDBcdTAxRkVcMDAwXHUwNUFGXDAwMCIrCisgICAgICAgICJcdTA1RUFcMDAwXHUwNUFGXDAwMFx1MDU5RlwwMDBcdTA1RkFcMDAwXHUwNUVBXDAwMFx1MDYwOVwwMDBcdTA1RDlcMDAwIisKKyAgICAgICAgIlx1MDRGRFwwMDBcdTA1RDlcMDAwXHUwMjVBXDAwMFx1MDRCMFwwMDBcdTAzNDBcMDAwXHUwMzEyXDAwMFx1MDIwRFwwMDAiKworICAgICAgICAiXHUwMDkwXDAwMFx1MDUxN1wwMDBcdTAzRTdcMDAwXHUwMkUzXDAwMFx1MDM5RFwwMDBcdTAxM0ZcMDAwXHUwMjg2XDAwMCIrCisgICAgICAgICJcdTAyNzFcMDAwXDAxNVwwMDBcMDA0XDAwMFwwMDBcMDAwXHUwMjZCXDAwMFx1MDIxRFwwMDBcdTAxNzZcMDAwXHUwMTAzIisKKyAgICAgICAgIlwwMDBcdTAwODhcMDAwaVwwMDBQXDAwMDhcMDAwXHUwMkQzXDAwMFx1MDVCRlwwMDBcdTA2MThcMDAwXHUwNjUxXDAwMCIrCisgICAgICAgICJcdTA2OUJcMDAwXHUwNkFGXDAwMFx1MDM0MFwwMDBcdTAzRTdcMDAwXHUwNDMwXDAwMFx1MDQ2RVwwMDBcdTA0QjBcMDAwIisKKyAgICAgICAgIlx1MDREMlwwMDBcdTA0RkRcMDAwXHUwNTY4XDAwMFx1MDI4NlwwMDBcdTAyODZcMDAwXHUwMkUzXDAwMFx1MDJFM1wwMDAiKworICAgICAgICAiXHUwMzlEXDAwMFx1MDJBRVwwMDBcdUE1QTVcMDAwXDAwNFwwMDBcdTAyRTNcMDAwXHUwMzlEXDAwMFx1MDJFM1wwMDBcdTAzOUQiKworICAgICAgICAiXDAwMFx1MDJFM1wwMDBcdTAyQUVcMDAwXHUwMkUzXDAwMFx1MDM5RFwwMDBcdTAzOURcMDAwXHUwM0I5XDAwMFx1MDM5RCIrCisgICAgICAgICJcMDAwXHUwMkFFXDAwMFx1MDJFM1wwMDBcdTAyQUVcMDAwXHUwMkUzXDAwMFx1MDJFM1wwMDBcdTAyRTNcMDAwXHUwM0I5IisKKyAgICAgICAgIlwwMDBcdTAyRTNcMDAwXHUwNDBDXDAwMFx1MDJFM1wwMDBcdTAyRTNcMDAwXHUwMkUzXDAwMFx1MDM5RFwwMDBcdTAyRTMiKworICAgICAgICAiXDAwMFx1MDQ1N1wwMDBcdTAyRTNcMDAwXHUwMkUzXDAwMFx1MDM5RFwwMDBcdTAyRTNcMDAwXHUwMzlEXDAwMFx1MDJFMyIrCisgICAgICAgICJcMDAwXHUwMzlEXDAwMFx1MDJFM1wwMDBcdTAzOURcMDAwXHUwMkUzXDAwMFx1MDJFM1wwMDBcdTAyRTNcMDAwXHUwMzQwIisKKyAgICAgICAgIlwwMDBcdTAyRTNcMDAwXHUwMkUzXDAwMFx1MDM5RFwwMDBcdTAyRTNcMDAwXHUwMjg2XDAwMFwwMTVcMDAwXHUwMTAzXDAwMCIrCisgICAgICAgICJcdTA0QTdcMDAwXHUwM0U3XDAwMFx1MDRCMFwwMDBcdTA0RDJcMDAwXHUwNENEXDAwMFx1MDNFN1wwMDBcdTA0NkVcMDAwIisKKyAgICAgICAgIlx1MDQzMFwwMDBcdTA0NkVcMDAwXHUwNDMwXDAwMFx1MDNFN1wwMDBcdTA0MzBcMDAwXHUwNTY4XDAwMFx1MDMxMlwwMDAiKworICAgICAgICAiXDAwNFwwMDBxXDAwMFx1MDQ1N1wwMDBcdTA2N0JcMDAwXHUwNDc4XDAwMGlcMDAwXHUwMTc2XDAwMFVcMDAwXDAwNFwwMDAiKworICAgICAgICAiXHUwNjdCXDAwMFx1MDY4Q1wwMDBcdTAwRjRcMDAwXHUwNjNFXDAwMFx1MDY5QlwwMDBcMDE1XDAwMFx1MDY2Q1wwMDBcdTA2NTEiKworICAgICAgICAiXDAwMFx1MDA4OFwwMDA4XDAwMFx1MDYxOFwwMDBcdTA1QkZcMDAwXDAxNVwwMDBcMDE1XDAwMFx1MDZBRlwwMDBcdTA2MTgiKworICAgICAgICAiXDAwMFx1MDY1MVwwMDBcdTA2NTFcMDAwNFwwMDBcMDA0XDAwMFx1MDY1MVwwMDBcMDA0XDAwMFx1MDY0RFwwMDBcdTA2MjAiKworICAgICAgICAiXDAwMFwwMDRcMDAwXHUwNTY4XDAwMFBcMDAwXHUwNjE4XDAwMFx1MDVCRlwwMDAlXDAwMFx1MDVCRlwwMDBcMDE1XDAwMCIrCisgICAgICAgICJcdTA2NTFcMDAwXHUwNkEwXDAwMFx1MDVCRlwwMDBcdTA2NTFcMDAwXHUwNjUxXDAwMFx1MDVCRlwwMDBcdTA2MThcMDAwIisKKyAgICAgICAgIlx1MDI4NlwwMDBcdTA0RDJcMDAwXHUwMkFFIgorICAgICAgICA7CisKKyAgICAvKioKKyAgICAgKiBSTEUgZW5jb2RlZCBmb3JtIG9mIElOREVYX0JZX09GRlNFVC4KKyAgICAgKiBAc2VlIGNvbS5pYm0udXRpbC5VdGlsaXR5LlJMRVN0cmluZ1RvSW50QXJyYXkKKyAgICAgKiA+PiBHRU5FUkFURUQgREFUQTogRE8gTk9UIEVESVQgPDwKKyAgICAgKi8KKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIElOREVYX0JZX09GRlNFVF9STEUgPQorICAgICAgICAiXDAwMFx1MDIyQlx1RkZGRlx1NTc0MFwwMDBcdTAxMjdcMDAwXDAwMVwwMDBcdTAxMjdcdUZGRkZcdTY1NTBcMDAwXHUwMThCIisKKyAgICAgICAgIlwwMDBcMDA2XDAwMFx1MDEyNlwwMDBcdTAxODNcMDAwXHUwMThCXDAwMFx1MDE5RlwwMDBcdTAxQTFcMDAwXHUwMUE0XHVGRkZGIisKKyAgICAgICAgIlx1NzM2MFwwMDBcdTAxOThcMDAwXDAxMFwwMDA5XDAwMFx1MDEyNVwwMDBcdTAxNzNcMDAwXHUwMTkxXDAwMFx1MDE5OCIrCisgICAgICAgICJcMDAwXHUwMTk5XDAwMFx1MDFBOVwwMDBcdTAxQUJcdUZGRkZcdTdBNjhcMDAwXHUwMTlFXDAwMFwwMDFcMDAwXHUwMTlFIisKKyAgICAgICAgIlx1RkZGRlx1ODE3MFwwMDA6XDAwMFwwMDdcMDAwXDAwNFwwMDA6XDAwMHFcMDAwXHUwMDg4XDAwMFx1MDBBQVwwMDBcdTAxMkYiKworICAgICAgICAiXDAwMFx1MDE5NVx1RkZGRlx1OEY4MFwwMDB1XDAwMFwwMTBcMDAwVFwwMDB1XDAwMFx1MDBBNVwwMDBcdTAwQTdcMDAwIisKKyAgICAgICAgIlx1MDBBOFwwMDBcdTAxMkVcMDAwXHUwMThBXDAwMFx1MDFBNlx1RkZGRlx1OUQ5MFwwMDBWXDAwMFwwMTZcMDAwRVwwMDAiKworICAgICAgICAiR1wwMDBOXDAwMFVcMDAwVlwwMDBZXDAwMGhcMDAwbVwwMDB7XDAwMFx1MDA4RVwwMDBcdTAwQUJcMDAwXHUwMTJEXDAwMCIrCisgICAgICAgICJcdTAxODRcMDAwXHUwMTg4XHVGRkZGXHVBQkEwXDAwME1cMDAwXDAyNlwwMDBCXDAwMEhcMDAwTVwwMDBQXDAwMFtcMDAwIisKKyAgICAgICAgImNcMDAweFwwMDB9XDAwMH5cMDAwXHUwMDdGXDAwMFx1MDA4MVwwMDBcdTAwOEFcMDAwXHUwMDkzXDAwMFx1MDA5NFwwMDAiKworICAgICAgICAiXHUwMDk2XDAwMFx1MDBBMVwwMDBcdTAwQTJcMDAwXHUwMEE5XDAwMFx1MDExRFwwMDBcdTAxMkNcMDAwXHUwMThFXDAwMCIrCisgICAgICAgICJcdTAxOTRcdUZGRkZcdUI5QjBcMDAwbFwwMDBcMDM0XDAwMERcMDAwTFwwMDBXXDAwMFpcMDAwYFwwMDBkXDAwMGdcMDAwIisKKyAgICAgICAgImlcMDAwalwwMDBrXDAwMGxcMDAwblwwMDBvXDAwMHJcMDAwdFwwMDB2XDAwMFx1MDA4M1wwMDBcdTAwODVcMDAwXHUwMDg2IisKKyAgICAgICAgIlwwMDBcdTAwODdcMDAwXHUwMDhCXDAwMFx1MDA4Q1wwMDBcdTAwOEZcMDAwXHUwMDk3XDAwMFx1MDBBNFwwMDBcdTAxMjIiKworICAgICAgICAiXDAwMFx1MDEyQlwwMDBcdTAxNzRcdUZGRkZcdUM3QzBcMDAwXHUwMDkyXDAwMCRcMDAwO1wwMDA8XDAwMD5cMDAwP1wwMDAiKworICAgICAgICAiQFwwMDBDXDAwMElcMDAwUVwwMDBSXDAwMFhcMDAwXVwwMDBfXDAwMGFcMDAwYlwwMDBlXDAwMGZcMDAwc1wwMDB5XDAwMCIrCisgICAgICAgICJ6XDAwMFx1MDA4NFwwMDBcdTAwOTBcMDAwXHUwMDkxXDAwMFx1MDA5MlwwMDBcdTAwOThcMDAwXHUwMDk5XDAwMFx1MDA5RCIrCisgICAgICAgICJcMDAwXHUwMDlFXDAwMFx1MDA5RlwwMDBcdTAwQTBcMDAwXHUwMEEzXDAwMFx1MDBBNlwwMDBcdTAwQjFcMDAwXHUwMTA0IisKKyAgICAgICAgIlwwMDBcdTAxMERcMDAwXHUwMTJBXDAwMFx1MDE4OVx1RkZGRlx1Q0VDOFwwMDBcdTAwOUNcMDAwXDAwMlwwMDBcdTAwOUMiKworICAgICAgICAiXDAwMFx1MDExQ1x1RkZGRlx1RDVEMFwwMDBGXDAwMFwwMjNcMDAwXDAwMlwwMDA9XDAwMEFcMDAwRlwwMDBKXDAwMEtcMDAwIisKKyAgICAgICAgIk9cMDAwXDEzNFwwMDBeXDAwMHBcMDAwd1wwMDB8XDAwMFx1MDA4MFwwMDBcdTAwODJcMDAwXHUwMDhEXDAwMFx1MDA5NSIrCisgICAgICAgICJcMDAwXHUwMDlBXDAwMFx1MDExOFwwMDBcdTAxMjlcdUZGRkZcdUUzRTBcMDAwXHUwMDg5XDAwMFwwMDNcMDAwXHUwMDg5IisKKyAgICAgICAgIlwwMDBcdTAxMEJcMDAwXHUwMTI4XHVGRkZGXHVGMUYwXDAwMFx1MDEwM1wwMDBcMDA0XDAwMFx1MDA5QlwwMDBcdTAxMDMiKworICAgICAgICAiXDAwMFx1MDEwNlwwMDBcdTAxMjRcMDAwXDAwMFwwMDBcdTAxNzJcMDAwIFwwMDBcMDA1XDAwMFwwMDZcMDAwXDAxMlwwMDAiKworICAgICAgICAiXDAxNFwwMDBcMDE1XDAwMFwwMjJcMDAwXDAyNFwwMDBcMDI1XDAwMFwwMzFcMDAwXDAzMlwwMDAkXDAwMC1cMDAwMVwwMDAiKworICAgICAgICAiMlwwMDA0XDAwMDVcMDAwU1wwMDBcdTAxMDVcMDAwXHUwMTA3XDAwMFx1MDEwOVwwMDBcdTAxMEFcMDAwXHUwMTBDXDAwMCIrCisgICAgICAgICJcdTAxMjNcMDAwXHUwMTNFXDAwMFx1MDEzRlwwMDBcdTAxNDNcMDAwXHUwMTRDXDAwMFx1MDE1MlwwMDBcdTAxNTRcMDAwIisKKyAgICAgICAgIlx1MDE3MlwwMDBcdTAxQjNcMDAwXHUwMUI1XDAwMFx1MEUxMFwwMDBcdTAxNUNcMDAwMlwwMDBcMDEwXDAwMFwwMTNcMDAwIisKKyAgICAgICAgIlwwMTdcMDAwXDAyM1wwMDBcMDMwXDAwMCFcMDAwXDA0MlwwMDAjXDAwMCVcMDAwKFwwMDAvXDAwMDBcMDAwM1wwMDA3XDAwMCIrCisgICAgICAgICI4XDAwMFx1MDBCNFwwMDBcdTAxMDhcMDAwXHUwMTFCXDAwMFx1MDEyMFwwMDBcdTAxMzBcMDAwXHUwMTQwXDAwMFx1MDE0MSIrCisgICAgICAgICJcMDAwXHUwMTQ0XDAwMFx1MDE0NVwwMDBcdTAxNDZcMDAwXHUwMTQ3XDAwMFx1MDE0OVwwMDBcdTAxNEJcMDAwXHUwMTREIisKKyAgICAgICAgIlwwMDBcdTAxNTNcMDAwXHUwMTU1XDAwMFx1MDE1NlwwMDBcdTAxNTdcMDAwXHUwMTU5XDAwMFx1MDE1QlwwMDBcdTAxNUMiKworICAgICAgICAiXDAwMFx1MDE1RFwwMDBcdTAxNUZcMDAwXHUwMTYxXDAwMFx1MDE2MlwwMDBcdTAxNjRcMDAwXHUwMTY2XDAwMFx1MDE2OCIrCisgICAgICAgICJcMDAwXHUwMTZBXDAwMFx1MDE2QlwwMDBcdTAxNkNcMDAwXHUwMTZFXDAwMFx1MDE2RlwwMDBcdTAxNzFcMDAwXHUwMTgyIisKKyAgICAgICAgIlwwMDBcdTFDMjBcMDAwXDAyMVwwMDAmXDAwMFwwMDNcMDAwXDAxNlwwMDBcMDIwXDAwMFwwMjFcMDAwXDAzM1wwMDBcMDM0IisKKyAgICAgICAgIlwwMDBcMDM1XDAwMCBcMDAwJlwwMDAnXDAwMClcMDAwKlwwMDArXDAwMDZcMDAwXHUwMEI3XDAwMFx1MDBDMFwwMDBcdTAwQzciKworICAgICAgICAiXDAwMFx1MDBDQ1wwMDBcdTAwRDNcMDAwXHUwMEUyXDAwMFx1MDExQVwwMDBcdTAxMjFcMDAwXHUwMTM2XDAwMFx1MDE0MiIrCisgICAgICAgICJcMDAwXHUwMTQ4XDAwMFx1MDE0QVwwMDBcdTAxNEVcMDAwXHUwMTRGXDAwMFx1MDE1MFwwMDBcdTAxNTFcMDAwXHUwMTU4IisKKyAgICAgICAgIlwwMDBcdTAxNUVcMDAwXHUwMTYzXDAwMFx1MDE2NVwwMDBcdTAxNjdcMDAwXHUwMTY5XDAwMFx1MDE2RFwwMDBcdTAxNzAiKworICAgICAgICAiXDAwMFx1MkEzMFwwMDBcMDA3XDAwMFwwMjVcMDAwXDAwN1wwMDBcMDExXDAwMFwwMjZcMDAwXDAyN1wwMDBcMDM2XDAwMCIrCisgICAgICAgICJcMDM3XDAwMCxcMDAwLlwwMDBcdTAwQjJcMDAwXHUwMEI1XDAwMFx1MDBCQ1wwMDBcdTAwQkRcMDAwXHUwMERDXDAwMFx1MDBFOSIrCisgICAgICAgICJcMDAwXHUwMEVDXDAwMFx1MDExRlwwMDBcdTAxMzdcMDAwXHUwMTVBXDAwMFx1MDE3NlwwMDBcdTAxN0FcMDAwXHUwMTdGIisKKyAgICAgICAgIlwwMDBcdTJCRDhcMDAwXHUwMEVGXDAwMFwwMDNcMDAwXHUwMEVEXDAwMFx1MDBFRVwwMDBcdTAwRUZcMDAwXHUzMTM4XDAwMCIrCisgICAgICAgICJcdTAwRjlcMDAwXDAwMVwwMDBcdTAwRjlcMDAwXHUzODQwXDAwMFx1MDEwMlwwMDBcMDE1XDAwMFx1MDBCOVwwMDBcdTAwQkUiKworICAgICAgICAiXDAwMFx1MDBDQVwwMDBcdTAwRTFcMDAwXHUwMEU1XDAwMFx1MDBGOFwwMDBcdTAxMDJcMDAwXHUwMTM4XDAwMFx1MDE2MCIrCisgICAgICAgICJcMDAwXHUwMTdDXDAwMFx1MDE3RVwwMDBcdTAxODBcMDAwXHUwMTg1XDAwMFx1M0Y0OFwwMDBcdTAwRDRcMDAwXDAwMVwwMDAiKworICAgICAgICAiXHUwMEQ0XDAwMFx1NDY1MFwwMDBcdTAwRDZcMDAwXDAxNFwwMDBcdTAwQkFcMDAwXHUwMEJCXDAwMFx1MDBDMVwwMDBcdTAwQ0IiKworICAgICAgICAiXDAwMFx1MDBENlwwMDBcdTAwRjJcMDAwXHUwMEY3XDAwMFx1MDEwMVwwMDBcdTAxMzlcMDAwXHUwMTdCXDAwMFx1MDE3RCIrCisgICAgICAgICJcMDAwXHUwMTg3XDAwMFx1NEQ1OFwwMDBcdTAwQzNcMDAwXDAwMlwwMDBcdTAwQzNcMDAwXHUwMTc1XDAwMFx1NTBEQ1wwMDAiKworICAgICAgICAiXHUwMEQ4XDAwMFwwMDFcMDAwXHUwMEQ4XDAwMFx1NTQ2MFwwMDBcdTAwQzhcMDAwXDAxNFwwMDBcdTAwQUZcMDAwXHUwMEIzIisKKyAgICAgICAgIlwwMDBcdTAwQjZcMDAwXHUwMEM2XDAwMFx1MDBDOFwwMDBcdTAwRTNcMDAwXHUwMEU0XDAwMFx1MDBFQVwwMDBcdTAwRkEiKworICAgICAgICAiXDAwMFx1MDExOVwwMDBcdTAxM0FcMDAwXHUwMTc3XDAwMFx1NUI2OFwwMDBcdTAwRUJcMDAwXDAwMlwwMDBcdTAwRUJcMDAwIisKKyAgICAgICAgIlx1MDE3OVwwMDBcdTYyNzBcMDAwXHUwMEYwXDAwMFwwMTRcMDAwXHUwMEFEXDAwMFx1MDBCRlwwMDBcdTAwQ0ZcMDAwXHUwMEQxIisKKyAgICAgICAgIlwwMDBcdTAwRDlcMDAwXHUwMEU2XDAwMFx1MDBFN1wwMDBcdTAwRjBcMDAwXHUwMEZFXDAwMFx1MDEzQlwwMDBcdTAxNzgiKworICAgICAgICAiXDAwMFx1MDFCNFwwMDBcdTcwODBcMDAwXHUwMEY0XDAwMFwwMjRcMDAwXHUwMEFDXDAwMFx1MDBDMlwwMDBcdTAwQzVcMDAwIisKKyAgICAgICAgIlx1MDBDRFwwMDBcdTAwQ0VcMDAwXHUwMEQwXDAwMFx1MDBEN1wwMDBcdTAwREFcMDAwXHUwMERCXDAwMFx1MDBERFwwMDAiKworICAgICAgICAiXHUwMERGXDAwMFx1MDBFMFwwMDBcdTAwRjRcMDAwXHUwMEY1XDAwMFx1MDBGNlwwMDBcdTAwRkNcMDAwXHUwMEZEXDAwMCIrCisgICAgICAgICJcdTAxMTZcMDAwXHUwMTFFXDAwMFx1MDEzQ1wwMDBcdTdFOTBcMDAwXHUwMEZCXDAwMFwwMTJcMDAwXHUwMEM0XDAwMFx1MDBDOSIrCisgICAgICAgICJcMDAwXHUwMEQyXDAwMFx1MDBFOFwwMDBcdTAwRjNcMDAwXHUwMEZCXDAwMFx1MDEwMFwwMDBcdTAxM0RcMDAwXHUwMTgxIisKKyAgICAgICAgIlwwMDBcdTAxQTVcMDAwXHU4NTk4XDAwMFx1MDExMVwwMDBcMDA0XDAwMFwwMDBcMDAwXHUwMTBFXDAwMFx1MDExMFwwMDAiKworICAgICAgICAiXHUwMTExXDAwMFx1OENBMFwwMDBcdTAxMTdcMDAwXDAxN1wwMDBcMDAxXDAwMFx1MDBBRVwwMDBcdTAwRjFcMDAwXHUwMEZGIisKKyAgICAgICAgIlwwMDBcdTAxMEZcMDAwXHUwMTEyXDAwMFx1MDExM1wwMDBcdTAxMTVcMDAwXHUwMTE3XDAwMFx1MDEzMVwwMDBcdTAxOTciKworICAgICAgICAiXDAwMFx1MDFBOFwwMDBcdTAxQUFcMDAwXHUwMUFFXDAwMFx1MDFCMVwwMDBcdTkzQThcMDAwXHUwMTE0XDAwMFwwMDFcMDAwIisKKyAgICAgICAgIlx1MDExNFwwMDBcdTlBQjBcMDAwXHUwMTk2XDAwMFwwMTBcMDAwXHUwMERFXDAwMFx1MDEzMlwwMDBcdTAxOEZcMDAwXHUwMTk2IisKKyAgICAgICAgIlwwMDBcdTAxOUJcMDAwXHUwMUEzXDAwMFx1MDFBN1wwMDBcdTAxQjJcMDAwXHVBMUI4XDAwMFx1MDFBMlwwMDBcMDAxXDAwMCIrCisgICAgICAgICJcdTAxQTJcMDAwXHVBOEMwXDAwMFx1MDE4Q1wwMDBcMDE2XDAwMFx1MDBCMFwwMDBcdTAwQjhcMDAwXHUwMEQ1XDAwMFx1MDEzMyIrCisgICAgICAgICJcMDAwXHUwMTg2XDAwMFx1MDE4Q1wwMDBcdTAxOTJcMDAwXHUwMTkzXDAwMFx1MDE5Q1wwMDBcdTAxOURcMDAwXHUwMUEwIisKKyAgICAgICAgIlwwMDBcdTAxQUNcMDAwXHUwMUFGXDAwMFx1MDFCMFwwMDBcdUIzNENcMDAwXHUwMThEXDAwMFwwMDFcMDAwXHUwMThEXDAwMCIrCisgICAgICAgICJcdUI2RDBcMDAwXHUwMTkwXDAwMFwwMDNcMDAwXHUwMTM0XDAwMFx1MDE5MFwwMDBcdTAxQURcMDAwXHVDNEUwXDAwMFx1MDE5QSIrCisgICAgICAgICJcMDAwXDAwMlwwMDBcdTAxMzVcMDAwXHUwMTlBIgorICAgICAgICA7CisKKyAgICAvKioKKyAgICAgKiBSTEUgZW5jb2RlZCBmb3JtIG9mIElOREVYX0JZX0NPVU5UUlkuCisgICAgICogQHNlZSBjb20uaWJtLnV0aWwuVXRpbGl0eS5STEVTdHJpbmdUb0ludEFycmF5CisgICAgICogPj4gR0VORVJBVEVEIERBVEE6IERPIE5PVCBFRElUIDw8CisgICAgICovCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBJTkRFWF9CWV9DT1VOVFJZX1JMRSA9CisgICAgICAgICJcMDAwXHUwMzkyXDAwMFwwMDBcMDAwJlwwMDBcdTAwRURcMDAwXHUwMEVFXDAwMFx1MDBFRlwwMDBcdTAxMUJcMDAwXHUwMTIxIisKKyAgICAgICAgIlwwMDBcdTAxMjNcMDAwXHUwMTI0XDAwMFx1MDEyNVwwMDBcdTAxMjZcMDAwXHUwMTI3XDAwMFx1MDEyOFwwMDBcdTAxMjkiKworICAgICAgICAiXDAwMFx1MDEyQVwwMDBcdTAxMkJcMDAwXHUwMTJDXDAwMFx1MDEyRFwwMDBcdTAxMkVcMDAwXHUwMTJGXDAwMFx1MDEzMCIrCisgICAgICAgICJcMDAwXHUwMTMxXDAwMFx1MDEzMlwwMDBcdTAxMzNcMDAwXHUwMTM0XDAwMFx1MDEzNVwwMDBcdTAxMzZcMDAwXHUwMTM3IisKKyAgICAgICAgIlwwMDBcdTAxMzhcMDAwXHUwMTM5XDAwMFx1MDEzQVwwMDBcdTAxM0JcMDAwXHUwMTNDXDAwMFx1MDEzRFwwMDBcdTAxM0UiKworICAgICAgICAiXDAwMFx1MDEzRlwwMDBcdTAxNzJcMDAwXHUwMTgyXDAwMFx1MDFCM1wwMDBcdTAxQjVcMDAwXDAwM1wwMDBcMDAxXDAwMCIrCisgICAgICAgICJcdTAxNDFcMDAwXDAwNFwwMDBcMDAxXDAwMFx1MDBDQVwwMDBcMDA1XDAwMFwwMDFcMDAwXHUwMEQ0XDAwMFwwMDZcMDAwIisKKyAgICAgICAgIlwwMDFcMDAwPFwwMDBcMDEwXDAwMFwwMDFcMDAwO1wwMDBcMDEzXDAwMFwwMDFcMDAwXHUwMTY4XDAwMFwwMTRcMDAwXDAwMiIrCisgICAgICAgICJcMDAwXHUwMTAyXDAwMFx1MDE4NVwwMDBcMDE1XDAwMFwwMDFcMDAwUlwwMDBcMDE2XDAwMFwwMDFcMDAwJVwwMDBcMDIwIisKKyAgICAgICAgIlwwMDBcMDEwXDAwMFx1MDBBQ1wwMDBcdTAwQURcMDAwXHUwMEFFXDAwMFx1MDBBRlwwMDBcdTAwQjBcMDAwXHUwMEIxXDAwMCIrCisgICAgICAgICJcdTAwQjJcMDAwXHUwMEIzXDAwMFwwMjFcMDAwXDAwNlwwMDBcMDAyXDAwMEZcMDAwSlwwMDBPXDAwMHBcMDAwfFwwMDAiKworICAgICAgICAiXDAyMlwwMDBcMDAxXDAwMFx1MDFBNFwwMDBcMDIzXDAwMFwwMDFcMDAwXHUwMTZDXDAwMFwwMjRcMDAwXDAxNFwwMDBcMDAwIisKKyAgICAgICAgIlwwMDBcMDAxXDAwMFx1MDEwRVwwMDBcdTAxMEZcMDAwXHUwMTEwXDAwMFx1MDExMVwwMDBcdTAxMTJcMDAwXHUwMTEzXDAwMCIrCisgICAgICAgICJcdTAxMTRcMDAwXHUwMTE1XDAwMFx1MDExNlwwMDBcdTAxMTdcMDAwXDAyNlwwMDBcMDAxXDAwMD5cMDAwXDAzMVwwMDAiKworICAgICAgICAiXDAwMVwwMDBcdTAwQkVcMDAwIFwwMDBcMDAxXDAwMFx1MDE2MlwwMDAhXDAwMFwwMDFcMDAwQFwwMDAjXDAwMFwwMDJcMDAwIisKKyAgICAgICAgIlx1MDBDOFwwMDBcdTAxMTlcMDAwJFwwMDBcMDAxXDAwMFx1MDE0N1wwMDAlXDAwMFwwMDFcMDAwMlwwMDAmXDAwMFwwMDEiKworICAgICAgICAiXDAwMFx1MDE2NVwwMDAnXDAwMFwwMDFcMDAwXHUwMEJEXDAwMChcMDAwXDAwMVwwMDBcMDIwXDAwMClcMDAwXDAwMVwwMDAiKworICAgICAgICAiM1wwMDAsXDAwMFwwMDFcMDAwXHUwMTA0XDAwMC1cMDAwXDAwMVwwMDBcdTAwQzJcMDAwLlwwMDBcMDAxXDAwMHNcMDAwIisKKyAgICAgICAgIjFcMDAwXDAxNlwwMDA9XDAwMEFcMDAwQ1wwMDBRXDAwMFpcMDAwXDEzNFwwMDB3XDAwMHlcMDAwXHUwMDg5XDAwMFx1MDA5MSIrCisgICAgICAgICJcMDAwXHUwMDk1XDAwMFx1MDA5N1wwMDBcdTAwOUFcMDAwXHUwMTE4XDAwMDJcMDAwXDAwMVwwMDBcdTAwODVcMDAwM1wwMDAiKworICAgICAgICAiXDAwMVwwMDBcdTAwRkFcMDAwNlwwMDBcMDAxXDAwMFwwMzNcMDAwOFwwMDBcMDAxXDAwMFx1MDE1OFwwMDA5XDAwMFwwMDEiKworICAgICAgICAiXDAwMEJcMDAwQFwwMDBcMDI3XDAwMEdcMDAwVFwwMDBVXDAwMFlcMDAwXVwwMDBfXDAwMGZcMDAwbVwwMDBuXDAwMFx1MDA4MyIrCisgICAgICAgICJcMDAwXHUwMDg3XDAwMFx1MDA4Q1wwMDBcdTAwOTNcMDAwXHUwMDk0XDAwMFx1MDA5NlwwMDBcdTAwOUNcMDAwXHUwMEExIisKKyAgICAgICAgIlwwMDBcdTAwQTRcMDAwXHUwMEE3XDAwMFx1MDBBOFwwMDBcdTAwQTlcMDAwXHUwMEFCXDAwMFx1MDExQ1wwMDBCXDAwMCIrCisgICAgICAgICJcMDAxXDAwMFx1MDE3OVwwMDBDXDAwMFwwMDJcMDAwIVwwMDAmXDAwMEVcMDAwXDAwMVwwMDBcMDEzXDAwMEZcMDAwXDAwMSIrCisgICAgICAgICJcMDAwXDAxN1wwMDBHXDAwMFwwMDFcMDAwXHUwMTcxXDAwMEhcMDAwXDAwMVwwMDBcMDA1XDAwMEpcMDAwXDAwMVwwMDAiKworICAgICAgICAiXHUwMUE5XDAwMEtcMDAwXDAwMlwwMDBcdTAwOThcMDAwXHUwMThFXDAwMExcMDAwXDAwMVwwMDBcMDMwXDAwME1cMDAwIisKKyAgICAgICAgIlwwMDZcMDAwXHUwMEM1XDAwMFx1MDBDRFwwMDBcdTAwRDdcMDAwXHUwMEY0XDAwMFx1MDBGRFwwMDBcdTAxMUVcMDAwTiIrCisgICAgICAgICJcMDAwXDAwMVwwMDBEXDAwMFFcMDAwXDAwMVwwMDBQXDAwMFRcMDAwXDAwMVwwMDBnXDAwMFVcMDAwXDAwMVwwMDBcdTAxMDYiKworICAgICAgICAiXDAwMFdcMDAwXDAwMVwwMDBcdTAxNzhcMDAwWFwwMDBcMDAxXDAwMFx1MDBFMlwwMDBZXDAwMFwwMDFcMDAwXHUwMTVEIisKKyAgICAgICAgIlwwMDBkXDAwMFwwMDFcMDAwXHUwMTQ1XDAwMGlcMDAwXDAwMVwwMDBcMDI3XDAwMGpcMDAwXDAwMVwwMDBcdTAxNEJcMDAwIisKKyAgICAgICAgImxcMDAwXDAwMVwwMDBYXDAwMG5cMDAwXDAwMVwwMDBcdTAwOTlcMDAweVwwMDBcMDAxXDAwMFwwMTBcMDAwXHUwMDgyXDAwMCIrCisgICAgICAgICJcMDAyXDAwMGRcMDAwXHUwMTk0XDAwMFx1MDA4NFwwMDBcMDAxXDAwMFx1MDE2N1wwMDBcdTAwODZcMDAwXDAwMlwwMDAiKworICAgICAgICAiXDAwM1wwMDBcMDIxXDAwMFx1MDA4N1wwMDBcMDAxXDAwMFwwMzFcMDAwXHUwMDkxXDAwMFwwMDFcMDAwXDAxMVwwMDBcdTAwOTIiKworICAgICAgICAiXDAwMFwwMDNcMDAwXDAyM1wwMDBcdTAxMDVcMDAwXHUwMTU2XDAwMFx1MDA5M1wwMDBcMDAyXDAwMFwwMDdcMDAwXHUwMTFGIisKKyAgICAgICAgIlwwMDBcdTAwQThcMDAwXDAwMVwwMDBcdTAxNEVcMDAwXHUwMEE5XDAwMFwwMDFcMDAwXHUwMTkyXDAwMFx1MDBBQVwwMDAiKworICAgICAgICAiXDAwMVwwMDBcdTAxMERcMDAwXHUwMEFDXDAwMFwwMDRcMDAwXHUwMTlCXDAwMFx1MDFBN1wwMDBcdTAxQUVcMDAwXHUwMUIxIisKKyAgICAgICAgIlwwMDBcdTAwQUVcMDAwXDAwMVwwMDBcdTAxMDdcMDAwXHUwMEIxXDAwMFwwMDJcMDAwXHUwMTIwXDAwMFx1MDE1Q1wwMDAiKworICAgICAgICAiXHUwMEMwXDAwMFwwMDFcMDAwI1wwMDBcdTAwQzFcMDAwXDAwMlwwMDBcdTAxNDNcMDAwXHUwMTU0XDAwMFx1MDBDM1wwMDAiKworICAgICAgICAiXDAwMVwwMDBhXDAwMFx1MDBDNFwwMDBcMDAxXDAwMFx1MDBGOFwwMDBcdTAwQzVcMDAwXDAwMVwwMDBLXDAwMFx1MDBDNyIrCisgICAgICAgICJcMDAwXDAwMVwwMDBcMDA2XDAwMFx1MDBDOFwwMDBcMDAxXDAwMFx1MDE0RFwwMDBcdTAwQ0JcMDAwXDAwNFwwMDBTXDAwMCIrCisgICAgICAgICJeXDAwMFx1MDA5QlwwMDBcdTAwQTNcMDAwXHUwMENDXDAwMFwwMDFcMDAwXDAxNFwwMDBcdTAwQ0RcMDAwXDAwMVwwMDAiKworICAgICAgICAiXDAyNFwwMDBcdTAwQ0ZcMDAwXDAwMVwwMDBiXDAwMFx1MDBEMFwwMDBcMDAxXDAwMChcMDAwXHUwMEQxXDAwMFwwMDFcMDAwIisKKyAgICAgICAgIlx1MDE0MlwwMDBcdTAwRDJcMDAwXDAwMVwwMDBcdTAxMEJcMDAwXHUwMEQzXDAwMFwwMDFcMDAwY1wwMDBcdTAwRDRcMDAwIisKKyAgICAgICAgIlwwMDFcMDAwXHUwMTk3XDAwMFx1MDBENlwwMDBcMDAxXDAwMFwwMTVcMDAwXHUwMEQ4XDAwMFwwMDFcMDAwZVwwMDBcdTAwRUEiKworICAgICAgICAiXDAwMFwwMDFcMDAwXHUwMENFXDAwMFx1MDBFRFwwMDBcMDAxXDAwMFx1MDBBMlwwMDBcdTAwRjFcMDAwXDAwMVwwMDBcdTAxNkYiKworICAgICAgICAiXDAwMFx1MDBGM1wwMDBcMDAxXDAwMFx1MDA4RlwwMDBcdTAwRjRcMDAwXDAwMVwwMDBcdTAxNDlcMDAwXHUwMTAzXDAwMCIrCisgICAgICAgICJcMDA0XDAwMFx1MDBEMVwwMDBcdTAwRDJcMDAwXHUwMERGXDAwMFx1MDBFN1wwMDBcdTAxMDRcMDAwXDAwMVwwMDBcdTAxNEMiKworICAgICAgICAiXDAwMFx1MDEwQlwwMDBcMDAxXDAwMFx1MDBEM1wwMDBcdTAxMERcMDAwXDAwMlwwMDBcdTAwQzNcMDAwXHUwMTc1XDAwMCIrCisgICAgICAgICJcdTAxMEVcMDAwXDAwMVwwMDBcdTAxNzdcMDAwXHUwMTEwXDAwMFwwMDFcMDAwXHUwMEJDXDAwMFx1MDExMVwwMDBcMDAxIisKKyAgICAgICAgIlwwMDBcdTAwRjlcMDAwXHUwMTEyXDAwMFwwMDFcMDAwXHUwMTBBXDAwMFx1MDExM1wwMDBcMDAxXDAwMFx1MDE1RlwwMDAiKworICAgICAgICAiXHUwMTJDXDAwMFwwMDFcMDAwb1wwMDBcdTAxMkVcMDAwXDAwMVwwMDBcdTAwQjdcMDAwXHUwMTJGXDAwMFwwMDJcMDAwIisKKyAgICAgICAgIlx1MDBGQlwwMDBcdTAxODFcMDAwXHUwMTQ0XDAwMFwwMDFcMDAwLlwwMDBcdTAxNDZcMDAwXDAwMVwwMDBcdTAwQzFcMDAwIisKKyAgICAgICAgIlx1MDE0N1wwMDBcMDAxXDAwMFx1MDBFNlwwMDBcdTAxNDhcMDAwXDAwM1wwMDBcdTAxOTBcMDAwXHUwMTlBXDAwMFx1MDFBQyIrCisgICAgICAgICJcMDAwXHUwMTRDXDAwMFwwMDFcMDAwXHUwMTdBXDAwMFx1MDE0RFwwMDBcMDAxXDAwMFx1MDA5RFwwMDBcdTAxNEZcMDAwIisKKyAgICAgICAgIlwwMDFcMDAwXHUwMEU4XDAwMFx1MDE1MVwwMDBcMDAxXDAwMFx1MDBGM1wwMDBcdTAxNTZcMDAwXDAwMVwwMDBcdTAwREMiKworICAgICAgICAiXDAwMFx1MDE1OFwwMDBcMDAxXDAwMExcMDAwXHUwMTU5XDAwMFwwMDVcMDAwXHUwMEI2XDAwMFx1MDBCOVwwMDBcdTAwQkEiKworICAgICAgICAiXDAwMFx1MDBFNVwwMDBcdTAwRUFcMDAwXHUwMTYwXDAwMFwwMDFcMDAwXHUwMEZFXDAwMFx1MDE2MVwwMDBcMDAxXDAwMCIrCisgICAgICAgICJcdTAwQzBcMDAwXHUwMTYyXDAwMFwwMDFcMDAwXHUwMDlFXDAwMFx1MDE2OFwwMDBcMDAxXDAwMFx1MDE2QVwwMDBcdTAxNkEiKworICAgICAgICAiXDAwMFwwMDFcMDAwXHUwMEM2XDAwMFx1MDE3MVwwMDBcMDAxXDAwMC1cMDAwXHUwMTcyXDAwMFwwMDFcMDAwKlwwMDBcdTAxNzMiKworICAgICAgICAiXDAwMFwwMDFcMDAwXHUwMTZEXDAwMFx1MDE3NFwwMDBcMDAxXDAwMFx1MDE1NVwwMDBcdTAxNzVcMDAwXDAwMVwwMDBcdTAxNUUiKworICAgICAgICAiXDAwMFx1MDE3OFwwMDBcMDAxXDAwMDZcMDAwXHUwMTgwXDAwMFwwMDFcMDAwXDAyMlwwMDBcdTAxODJcMDAwXDAwMVwwMDAiKworICAgICAgICAiXHUwMTU5XDAwMFx1MDE4M1wwMDBcMDAxXDAwMFx1MDE0QVwwMDBcdTAxODZcMDAwXDAwMVwwMDBcdTAxNzZcMDAwXHUwMTg3IisKKyAgICAgICAgIlwwMDBcMDAyXDAwMFx1MDE5Q1wwMDBcdTAxOURcMDAwXHUwMThBXDAwMFwwMDFcMDAwXHUwMTY0XDAwMFx1MDE4QlwwMDAiKworICAgICAgICAiXDAwMlwwMDBcMDEyXDAwMDVcMDAwXHUwMThDXDAwMFwwMDFcMDAwXHUwMEVCXDAwMFx1MDE4RFwwMDBcMDAzXDAwMFx1MDBDNCIrCisgICAgICAgICJcMDAwXHUwMENGXDAwMFx1MDBGQ1wwMDBcdTAxOEVcMDAwXDAwMVwwMDBcdTAwRERcMDAwXHUwMThGXDAwMFwwMDFcMDAwIisKKyAgICAgICAgIlx1MDFBQVwwMDBcdTAxOTBcMDAwXDAwMVwwMDB6XDAwMFx1MDE5MVwwMDBcMDAxXDAwMDFcMDAwXHUwMTkyXDAwMFwwMDEiKworICAgICAgICAiXDAwMFx1MDA4NFwwMDBcdTAxOTNcMDAwXDAwMVwwMDBcdTAxNTdcMDAwXHUwMTk0XDAwMFwwMDFcMDAwXHUwMTdFXDAwMCIrCisgICAgICAgICJcdTAxOTVcMDAwXDAwMVwwMDBcdTAxN0RcMDAwXHUwMTk2XDAwMFwwMDFcMDAwXDAxNlwwMDBcdTAxOTdcMDAwXDAxMFwwMDAiKworICAgICAgICAiSFwwMDBOXDAwMGhcMDAwe1wwMDB+XDAwMFx1MDA3RlwwMDBcdTAwODFcMDAwXHUwMEE1XDAwMFx1MDE5OFwwMDBcMDAyIisKKyAgICAgICAgIlwwMDBcdTAwREFcMDAwXHUwMERCXDAwMFx1MDE5OVwwMDBcMDAxXDAwMClcMDAwXHUwMUEwXDAwMFwwMDFcMDAwOFwwMDAiKworICAgICAgICAiXHUwMUEyXDAwMFwwMDFcMDAwXHUwMUEzXDAwMFx1MDFBNFwwMDBcMDAxXDAwMDBcMDAwXHUwMUE1XDAwMFwwMDFcMDAwIisKKyAgICAgICAgIlx1MDFBMlwwMDBcdTAxQTZcMDAwXDAwMVwwMDBcMDQyXDAwMFx1MDFBOFwwMDBcMDAxXDAwMHhcMDAwXHUwMUFCXDAwMCIrCisgICAgICAgICJcMDAxXDAwMFx1MDE0MFwwMDBcdTAxQUVcMDAwXDAwMVwwMDBcdTAxNUJcMDAwXHUwMUFGXDAwMFwwMDFcMDAwXHUwMEQ4IisKKyAgICAgICAgIlwwMDBcdTAxQjFcMDAwXDAwMVwwMDBcdTAxQTBcMDAwXHUwMUI0XDAwMFwwMDFcMDAwXHUwMUExXDAwMFx1MDFCOVwwMDAiKworICAgICAgICAiXDAwM1wwMDBcdTAxODZcMDAwXHUwMThDXDAwMFx1MDE4RFwwMDBcdTAxQ0NcMDAwXDAwMVwwMDBcdTAwRTFcMDAwXHUwMUUwIisKKyAgICAgICAgIlwwMDBcMDAxXDAwMFx1MDA4QlwwMDBcdTAxRTRcMDAwXDAwMVwwMDB0XDAwMFx1MDFFNVwwMDBcMDAzXDAwMFx1MDE5NSIrCisgICAgICAgICJcMDAwXHUwMTlFXDAwMFx1MDFBQlwwMDBcdTAxRTZcMDAwXDAwMVwwMDBcdTAxQThcMDAwXHUwMUU3XDAwMFwwMDFcMDAwIisKKyAgICAgICAgIlx1MDBFMFwwMDBcdTAxRUFcMDAwXDAwMlwwMDBcdTAwRDZcMDAwXHUwMTg3XDAwMFx1MDFFQlwwMDBcMDAxXDAwMFx1MDE2RSIrCisgICAgICAgICJcMDAwXHUwMUVDXDAwMFwwMDFcMDAwXHUwMDgwXDAwMFx1MDFFRFwwMDBcMDAxXDAwMFx1MDFBNlwwMDBcdTAxRjFcMDAwIisKKyAgICAgICAgIlwwMDJcMDAwXHUwMDkyXDAwMFx1MDE4OVwwMDBcdTAxRjJcMDAwXDAwMVwwMDBcdTAwQ0NcMDAwXHUwMUYzXDAwMFwwMDMiKworICAgICAgICAiXDAwMFx1MDEwM1wwMDBcdTAxMDlcMDAwXHUwMTUyXDAwMFx1MDFGNlwwMDBcMDAxXDAwMFx1MDFBNVwwMDBcdTAxRjhcMDAwIisKKyAgICAgICAgIlwwMDFcMDAwP1wwMDBcdTAyMDBcMDAwXDAwMVwwMDBcdTAwRTlcMDAwXHUwMjI0XDAwMFwwMDFcMDAwXHUwMTgwXDAwMCIrCisgICAgICAgICJcdTAyMkVcMDAwXDAwMVwwMDBcdTAxNDhcMDAwXHUwMjM0XDAwMFwwMTZcMDAwXHUwMEI4XDAwMFx1MDBEMFwwMDBcdTAwRDUiKworICAgICAgICAiXDAwMFx1MDBEOVwwMDBcdTAwREVcMDAwXHUwMEUzXDAwMFx1MDBFNFwwMDBcdTAwRjFcMDAwXHUwMEZGXDAwMFx1MDEwMCIrCisgICAgICAgICJcMDAwXHUwMTAxXDAwMFx1MDE1MFwwMDBcdTAxNUFcMDAwXHUwMTYwXDAwMFx1MDIzNlwwMDBcMDAxXDAwMCBcMDAwXHUwMjQwIisKKyAgICAgICAgIlwwMDBcMDAxXDAwMFx1MDBFQ1wwMDBcdTAyNDFcMDAwXDAwMlwwMDBcdTAxOTZcMDAwXHUwMUIyXDAwMFx1MDI0MlwwMDAiKworICAgICAgICAiXDAwMVwwMDBcdTAxN0NcMDAwXHUwMjQzXDAwMFwwMDFcMDAwXDAzN1wwMDBcdTAyNDRcMDAwXDAwMVwwMDBcdTAxNjZcMDAwIisKKyAgICAgICAgIlx1MDI0NlwwMDBcMDAxXDAwMFx1MDBGNVwwMDBcdTAyNDdcMDAwXDAwMVwwMDBcdTAxMENcMDAwXHUwMjQ4XDAwMFwwMDEiKworICAgICAgICAiXDAwMFx1MDE1M1wwMDBcdTAyNDlcMDAwXDAwMlwwMDBcdTAwQjRcMDAwXHUwMTA4XDAwMFx1MDI0QVwwMDBcMDAxXDAwMCIrCisgICAgICAgICJcdTAxNDZcMDAwXHUwMjRCXDAwMFwwMDFcMDAwXDAzMlwwMDBcdTAyNENcMDAwXDAwMVwwMDBcdTAxNjFcMDAwXHUwMjREIisKKyAgICAgICAgIlwwMDBcMDAxXDAwMFwwMjVcMDAwXHUwMjRFXDAwMFwwMDFcMDAwLFwwMDBcdTAyNTFcMDAwXDAwMVwwMDBcdTAwOERcMDAwIisKKyAgICAgICAgIlx1MDI1M1wwMDBcMDAxXDAwMDRcMDAwXHUwMjU1XDAwMFwwMDFcMDAwW1wwMDBcdTAyNThcMDAwXDAwMVwwMDBcdTAwQzciKworICAgICAgICAiXDAwMFx1MDI1OVwwMDBcMDAxXDAwMCtcMDAwXHUwMjYyXDAwMFwwMDFcMDAwYFwwMDBcdTAyNjNcMDAwXDAwMVwwMDAvIisKKyAgICAgICAgIlwwMDBcdTAyNjVcMDAwXDAwMVwwMDBcdTAxN0JcMDAwXHUwMjY2XDAwMFwwMDFcMDAwJFwwMDBcdTAyNjdcMDAwXDAwMSIrCisgICAgICAgICJcMDAwXHUwMEJGXDAwMFx1MDI2OVwwMDBcMDAxXDAwMFx1MDBDQlwwMDBcdTAyNkFcMDAwXDAwMVwwMDBcdTAxOTFcMDAwIisKKyAgICAgICAgIlx1MDI2QlwwMDBcMDAxXDAwMFx1MDBDOVwwMDBcdTAyNkNcMDAwXDAwMVwwMDBcdTAwQkJcMDAwXHUwMjZEXDAwMFwwMDEiKworICAgICAgICAiXDAwMDdcMDAwXHUwMjZFXDAwMFwwMDFcMDAwXHUwMUFEXDAwMFx1MDI3MVwwMDBcMDAxXDAwMFx1MDE0RlwwMDBcdTAyNzMiKworICAgICAgICAiXDAwMFwwMDFcMDAwXHUwMDkwXDAwMFx1MDI3NVwwMDBcMDAxXDAwMFx1MDE5M1wwMDBcdTAyNzZcMDAwXDAwMVwwMDBcdTAwRjYiKworICAgICAgICAiXDAwMFx1MDI3OVwwMDBcMDAxXDAwMFwwMjZcMDAwXHUwMjgwXDAwMFwwMDRcMDAwXHUwMTUxXDAwMFx1MDE2M1wwMDBcdTAxNjkiKworICAgICAgICAiXDAwMFx1MDE3MFwwMDBcdTAyODZcMDAwXDAwMVwwMDBcMDM2XDAwMFx1MDI4Q1wwMDBcMDAzXDAwMFx1MDE5OVwwMDBcdTAxOUYiKworICAgICAgICAiXDAwMFx1MDFBRlwwMDBcdTAyOTJcMDAwXDAzNVwwMDBcMDA0XDAwMDlcMDAwOlwwMDBFXDAwME1cMDAwVlwwMDBXXDAwMCIrCisgICAgICAgICJpXDAwMGpcMDAwa1wwMDBsXDAwMHFcMDAwclwwMDB1XDAwMHZcMDAwfVwwMDBcdTAwODZcMDAwXHUwMDg4XDAwMFx1MDA4QSIrCisgICAgICAgICJcMDAwXHUwMDhFXDAwMFx1MDBBQVwwMDBcdTAxMURcMDAwXHUwMTIyXDAwMFx1MDE3M1wwMDBcdTAxNzRcMDAwXHUwMTg0IisKKyAgICAgICAgIlwwMDBcdTAxODhcMDAwXHUwMThBXDAwMFx1MDE5OFwwMDBcdTAyOThcMDAwXDAwMVwwMDBcdTAwODJcMDAwXHUwMjk5XDAwMCIrCisgICAgICAgICJcMDAyXDAwMFx1MDBGMlwwMDBcdTAwRjdcMDAwXHUwMkEwXDAwMFwwMDFcMDAwXHUwMTZCXDAwMFx1MDJBMlwwMDBcMDAxIisKKyAgICAgICAgIlwwMDBcdTAwQTBcMDAwXHUwMkE0XDAwMFwwMDFcMDAwSVwwMDBcdTAyQTZcMDAwXDAwMVwwMDBcdTAwQTZcMDAwXHUwMkE4IisKKyAgICAgICAgIlwwMDBcMDAxXDAwMFx1MDA5RlwwMDBcdTAyQURcMDAwXDAwMlwwMDBcdTAwRjBcMDAwXHUwMUI0XDAwMFx1MDJCNFwwMDAiKworICAgICAgICAiXDAwMVwwMDBcdTAxOEZcMDAwXHUwMkM1XDAwMFwwMDFcMDAwXHUwMUIwXDAwMFx1MDJEMlwwMDBcMDAyXDAwMFx1MDE4MyIrCisgICAgICAgICJcMDAwXHUwMThCXDAwMFx1MDMwNFwwMDBcMDAxXDAwMFx1MDBCNVwwMDBcdTAzMTNcMDAwXDAwMVwwMDBcdTAxN0ZcMDAwIisKKyAgICAgICAgIlx1MDMxNFwwMDBcMDAxXDAwMFx1MDE0NFwwMDBcdTAzMjBcMDAwXDAwMVwwMDBcMDM1XDAwMFx1MDMyQ1wwMDBcMDAxXDAwMCIrCisgICAgICAgICInXDAwMFx1MDMzNlwwMDBcMDAyXDAwMFwwMzRcMDAwXHUwMTFBIgorICAgICAgICA7CisKKyAgICAvLyBFTkQgR0VORVJBVEVEIFNPVVJDRSBDT0RFCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBzdGF0aWMgeworICAgICAgICAvLyBVbnBhY2sgdGhlIGludFtdIERBVEEgYXJyYXkKKyAgICAgICAgREFUQSA9IFV0aWxpdHkuUkxFU3RyaW5nVG9JbnRBcnJheShEQVRBX1JMRSk7CisKKyAgICAgICAgLy8gVW5wYWNrIHRoZSBpbnRbXSBJTkRFWF9CWV9PRkZTRVQgYXJyYXkKKyAgICAgICAgSU5ERVhfQllfT0ZGU0VUID0gVXRpbGl0eS5STEVTdHJpbmdUb0ludEFycmF5KElOREVYX0JZX09GRlNFVF9STEUpOworCisgICAgICAgIC8vIFVucGFjayB0aGUgaW50W10gSU5ERVhfQllfQ09VTlRSWSBhcnJheQorICAgICAgICBJTkRFWF9CWV9DT1VOVFJZID0gVXRpbGl0eS5STEVTdHJpbmdUb0ludEFycmF5KElOREVYX0JZX0NPVU5UUllfUkxFKTsKKworICAgICAgICAvLyBDb25zdHJ1Y3QgdGhlIGluZGV4IGJ5IG5hbWUuICBXZSB1bnBhY2sgdGhpcyBhcnJheSBhbmQgdGhlbgorICAgICAgICAvLyBkaXNjYXJkIGl0IGFmdGVyIHdlJ3JlIGRvbmUgd2l0aCBpdC4KKyAgICAgICAgaW50W10gaW5kZXhfYnlfbmFtZV9hcnJheSA9IFV0aWxpdHkuUkxFU3RyaW5nVG9JbnRBcnJheShJTkRFWF9CWV9OQU1FX0FSUkFZX1JMRSk7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxJRFMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIElOREVYX0JZX05BTUUucHV0KElEU1tpXSwgbmV3IEludGVnZXIoaW5kZXhfYnlfbmFtZV9hcnJheVtpXSkpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3V0aWwvVmFsdWVJdGVyYXRvci5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L3V0aWwvVmFsdWVJdGVyYXRvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwOWViZWMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdXRpbC9WYWx1ZUl0ZXJhdG9yLmphdmEKQEAgLTAsMCArMSwxMTUgQEAKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgKgorKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L3V0aWwvVmFsdWVJdGVyYXRvci5qYXZhLHYgJAorKiAkRGF0ZTogMjAwMi8xMi8wMyAyMDo0NjowOSAkCisqICRSZXZpc2lvbjogMS45ICQKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKworcGFja2FnZSBjb20uaWJtLmljdS51dGlsOworCisvKioKKyAqIDxwPkludGVyZmFjZSBmb3IgZW5hYmxpbmcgaXRlcmF0aW9uIG92ZXIgc2V0cyBvZiA8aW50LCBPYmplY3Q+LCB3aGVyZQorICogaW50IGlzIHRoZSBzb3J0ZWQgaW50ZWdlciBpbmRleCBpbiBhc2NlbmRpbmcgb3JkZXIgYW5kIE9iamVjdCwgaXRzIAorICogYXNzb2NpYXRlZCB2YWx1ZS48L3A+CisgKiA8cD5UaGUgVmFsdWVJdGVyYXRvciBhbGxvd3MgaXRlcmF0aW9ucyBvdmVyIGludGVnZXIgaW5kZXhlcyBpbiB0aGUgcmFuZ2UgCisgKiBvZiBJbnRlZ2VyLk1JTl9WQUxVRSB0byBJbnRlZ2VyLk1BWF9WQUxVRSBpbmNsdXNpdmUuIEltcGxlbWVudGF0aW9ucyBvZiAKKyAqIFZhbHVlSXRlcmF0b3Igc2hvdWxkIHNwZWNpZnkgdGhlaXIgb3duIG1heGltdW0gc3VicmFuZ2Ugd2l0aGluIHRoZSBhYm92ZSAKKyAqIHJhbmdlIHRoYXQgaXMgbWVhbmluZ2Z1bCB0byBpdHMgYXBwbGljYXRpb25zLjwvcD4KKyAqIDxwPk1vc3QgaW1wbGVtZW50YXRpb25zIHdpbGwgYmUgY3JlYXRlZCBieSBmYWN0b3J5IG1ldGhvZHMsIHN1Y2ggYXMgdGhlCisgKiBjaGFyYWN0ZXIgbmFtZSBpdGVyYXRvciBpbiBVQ2hhcmFjdGVyLmdldE5hbWVJdGVyYXRvci4gU2VlIGV4YW1wbGUgYmVsb3cuCisgKiA8L3A+CisgKiBFeGFtcGxlIG9mIHVzZTo8YnI+CisgKiA8cHJlPgorICogVmFsdWVJdGVyYXRvciBpdGVyYXRvciA9IFVDaGFyYWN0ZXIuZ2V0TmFtZUl0ZXJhdG9yKCk7CisgKiBWYWx1ZUl0ZXJhdG9yLkVsZW1lbnQgcmVzdWx0ID0gbmV3IFZhbHVlSXRlcmF0b3IuRWxlbWVudCgpOworICogaXRlcmF0b3Iuc2V0UmFuZ2UoVUNoYXJhY3Rlci5NSU5fVkFMVUUsIFVDaGFyYWN0ZXIuTUFYX1ZBTFVFKTsKKyAqIHdoaWxlIChpdGVyYXRvci5uZXh0KHJlc3VsdCkpIHsKKyAqICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkNvZGVwb2ludCBcXHUiICsgCisgKiAgICAgICAgICAgICAgICAgICAgICAgIEludGVnZXIudG9IZXhTdHJpbmcocmVzdWx0LmludGVnZXIpICsgCisgKiAgICAgICAgICAgICAgICAgICAgICAgICIgaGFzIHRoZSBjaGFyYWN0ZXIgbmFtZSAiICsgKFN0cmluZylyZXN1bHQudmFsdWUpOworICogfQorICogPC9wcmU+CisgKiBAYXV0aG9yIHN5bndlZQorICogQGRyYWZ0IElDVSAyLjEKKyAqLworcHVibGljIGludGVyZmFjZSBWYWx1ZUl0ZXJhdG9yCit7CisgICAgLy8gcHVibGljIGlubmVyIGNsYXNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIC8qKgorICAgICogPHA+VGhlIHJldHVybiByZXN1bHQgY29udGFpbmVyIG9mIGVhY2ggaXRlcmF0aW9uLiBTdG9yZXMgdGhlIG5leHQgCisgICAgKiBpbnRlZ2VyIGluZGV4IGFuZCBpdHMgYXNzb2NpYXRlZCB2YWx1ZSBPYmplY3QuPC9wPiAKKyAgICAqIEBkcmFmdCBJQ1UgMi4xCisgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGNsYXNzIEVsZW1lbnQKKyAgICB7CisgICAgICAgIC8vIHB1YmxpYyBkYXRhIG1lbWJlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAKKyAgICAgICAgLyoqCisgICAgICAgICogSW50ZWdlciBpbmRleCBvZiB0aGUgY3VycmVudCBpdGVyYXRpb24KKyAgICAgICAgKiBAZHJhZnQgSUNVIDIuMQorICAgICAgICAqLworICAgICAgICBwdWJsaWMgaW50IGludGVnZXI7CisgICAgICAgIC8qKgorICAgICAgICAqIEdldHMgdGhlIE9iamVjdCB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGludGVnZXIgaW5kZXguCisgICAgICAgICogQGRyYWZ0IElDVSAyLjEKKyAgICAgICAgKi8gCisgICAgICAgIHB1YmxpYyBPYmplY3QgdmFsdWU7CisgICAgICAgIAorICAgICAgICAvLyBwdWJsaWMgY29uc3RydWN0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgIAorICAgICAgICAvKioKKyAgICAgICAgICogRW1wdHkgZGVmYXVsdCBjb25zdHJ1Y3RvciB0byBtYWtlIGphdmFkb2MgaGFwcHkKKyAgICAgICAgICogQGRyYWZ0IElDVSAyLjQKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBFbGVtZW50KCkKKyAgICAgICAgeworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8vIHB1YmxpYyBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvKioKKyAgICAqIDxwPkdldHMgdGhlIG5leHQgcmVzdWx0IGZvciB0aGlzIGl0ZXJhdGlvbiBhbmQgcmV0dXJucyAKKyAgICAqIHRydWUgaWYgd2UgYXJlIG5vdCBhdCB0aGUgZW5kIG9mIHRoZSBpdGVyYXRpb24sIGZhbHNlIG90aGVyd2lzZS48L3A+CisgICAgKiA8cD5JZiB0aGUgcmV0dXJuIGJvb2xlYW4gaXMgYSBmYWxzZSwgdGhlIGNvbnRlbnRzIG9mIGVsZW1lbnRzIHdpbGwgbm90CisgICAgKiBiZSB1cGRhdGVkLjwvcD4KKyAgICAqIEBwYXJhbSBlbGVtZW50IGZvciBzdG9yaW5nIHRoZSByZXN1bHQgaW5kZXggYW5kIHZhbHVlCisgICAgKiBAcmV0dXJuIHRydWUgaWYgd2UgYXJlIG5vdCBhdCB0aGUgZW5kIG9mIHRoZSBpdGVyYXRpb24sIGZhbHNlIG90aGVyd2lzZS4KKyAgICAqIEBzZWUgRWxlbWVudAorICAgICogQGRyYWZ0IElDVSAyLjEKKyAgICAqLworICAgIHB1YmxpYyBib29sZWFuIG5leHQoRWxlbWVudCBlbGVtZW50KTsKKyAgICAKKyAgICAvKioKKyAgICAqIDxwPlJlc2V0cyB0aGUgaXRlcmF0b3IgdG8gc3RhcnQgaXRlcmF0aW5nIGZyb20gdGhlIGludGVnZXIgaW5kZXggCisgICAgKiBJbnRlZ2VyLk1JTl9WQUxVRSBvciBYIGlmIGEgc2V0UmFuZ2UoWCwgWSkgaGFzIGJlZW4gY2FsbGVkIHByZXZpb3VzbHkuCisgICAgKiA8L3A+CisgICAgKiBAZHJhZnQgSUNVIDIuMQorICAgICovCisgICAgcHVibGljIHZvaWQgcmVzZXQoKTsKKyAgICAKKyAgICAvKioKKyAgICAgKiA8cD5SZXN0cmljdHMgdGhlIHJhbmdlIG9mIGludGVnZXJzIHRvIGl0ZXJhdGUgYW5kIHJlc2V0cyB0aGUgaXRlcmF0aW9uIAorICAgICAqIHRvIGJlZ2luIGF0IHRoZSBpbmRleCBhcmd1bWVudCBzdGFydC48L3A+CisgICAgICogPHA+SWYgc2V0UmFuZ2Uoc3RhcnQsIGVuZCkgaXMgbm90IHBlcmZvcm1lZCBiZWZvcmUgbmV4dChlbGVtZW50KSBpcyAKKyAgICAgKiBjYWxsZWQsIHRoZSBpdGVyYXRpb24gd2lsbCBzdGFydCBmcm9tIHRoZSBpbnRlZ2VyIGluZGV4IAorICAgICAqIEludGVnZXIuTUlOX1ZBTFVFIGFuZCBlbmQgYXQgSW50ZWdlci5NQVhfVkFMVUUuPC9wPgorICAgICAqIDxwPgorICAgICAqIElmIHRoaXMgcmFuZ2UgaXMgc2V0IG91dHNpZGUgdGhlIG1lYW5pbmdmdWwgcmFuZ2Ugc3BlY2lmaWVkIGJ5IHRoZSAKKyAgICAgKiBpbXBsZW1lbnRhdGlvbiwgbmV4dChlbGVtZW50KSB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2UuCisgICAgICogPC9wPgorICAgICAqIEBwYXJhbSBzdGFydCBmaXJzdCBpbnRlZ2VyIGluIHJhbmdlIHRvIGl0ZXJhdGUKKyAgICAgKiBAcGFyYW0gbGltaXQgMSBpbnRlZ2VyIGFmdGVyIHRoZSBsYXN0IGludGVnZXIgaW4gcmFuZ2UgCisgICAgICogQGV4Y2VwdGlvbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gdGhyb3duIHdoZW4gYXR0ZW1wdGluZyB0byBzZXQgYW4gCisgICAgICogICAgICAgICAgICBpbGxlZ2FsIHJhbmdlLiBFLmcgbGltaXQgPD0gc3RhcnQKKyAgICAgKiBAZHJhZnQgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFJhbmdlKGludCBzdGFydCwgaW50IGVuZCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3V0aWwvVmVyc2lvbkluZm8uamF2YSBiL3NyYy9jb20vaWJtL2ljdS91dGlsL1ZlcnNpb25JbmZvLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjE0Y2FlYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS91dGlsL1ZlcnNpb25JbmZvLmphdmEKQEAgLTAsMCArMSwzODAgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS91dGlsL1ZlcnNpb25JbmZvLmphdmEsdiAkIAorICogJERhdGU6IDIwMDIvMTIvMDMgMjA6NDY6MDkgJCAKKyAqICRSZXZpc2lvbjogMS4xMCAkCisgKgorICogaml0dGVyYnVnIDE3NDEKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS5pY3UudXRpbDsKKworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworCisvKioKKyAqIENsYXNzIHRvIHN0b3JlIHZlcnNpb24gbnVtYmVycyBvZiB0aGUgZm9ybSBtYWpvci5taW5vci5taWxsaS5taWNyby4KKyAqIEBhdXRob3Igc3lud2VlCisgKiBAZHJhZnQgSUNVIDIuMQorICovCitwdWJsaWMgZmluYWwgY2xhc3MgVmVyc2lvbkluZm8KK3sKKyAgICAvLyBwdWJsaWMgZGF0YSBtZW1iZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgCisgICAgLyoqCisgICAgICogVW5pY29kZSAxLjAgdmVyc2lvbgorICAgICAqIEBkcmFmdCBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBWZXJzaW9uSW5mbyBVTklDT0RFXzFfMDsKKyAgICAvKioKKyAgICAgKiBVbmljb2RlIDEuMC4xIHZlcnNpb24KKyAgICAgKiBAZHJhZnQgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVmVyc2lvbkluZm8gVU5JQ09ERV8xXzBfMTsKKyAgICAvKioKKyAgICAgKiBVbmljb2RlIDEuMS4wIHZlcnNpb24KKyAgICAgKiBAZHJhZnQgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVmVyc2lvbkluZm8gVU5JQ09ERV8xXzFfMDsKKyAgICAvKioKKyAgICAgKiBVbmljb2RlIDEuMS41IHZlcnNpb24KKyAgICAgKiBAZHJhZnQgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVmVyc2lvbkluZm8gVU5JQ09ERV8xXzFfNTsKKyAgICAvKioKKyAgICAgKiBVbmljb2RlIDIuMCB2ZXJzaW9uCisgICAgICogQGRyYWZ0IElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFZlcnNpb25JbmZvIFVOSUNPREVfMl8wOyAgICAgICAgCisgICAgLyoqCisgICAgICogVW5pY29kZSAyLjEuMiB2ZXJzaW9uCisgICAgICogQGRyYWZ0IElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFZlcnNpb25JbmZvIFVOSUNPREVfMl8xXzI7CisgICAgLyoqCisgICAgICogVW5pY29kZSAyLjEuNSB2ZXJzaW9uCisgICAgICogQGRyYWZ0IElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFZlcnNpb25JbmZvIFVOSUNPREVfMl8xXzU7CisgICAgLyoqCisgICAgICogVW5pY29kZSAyLjEuOCB2ZXJzaW9uCisgICAgICogQGRyYWZ0IElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFZlcnNpb25JbmZvIFVOSUNPREVfMl8xXzg7CisgICAgLyoqCisgICAgICogVW5pY29kZSAyLjEuOSB2ZXJzaW9uCisgICAgICogQGRyYWZ0IElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFZlcnNpb25JbmZvIFVOSUNPREVfMl8xXzk7CisgICAgLyoqCisgICAgICogVW5pY29kZSAzLjAgdmVyc2lvbgorICAgICAqIEBkcmFmdCBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBWZXJzaW9uSW5mbyBVTklDT0RFXzNfMDsKKyAgICAvKioKKyAgICAgKiBVbmljb2RlIDMuMC4xIHZlcnNpb24KKyAgICAgKiBAZHJhZnQgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVmVyc2lvbkluZm8gVU5JQ09ERV8zXzBfMTsKKyAgICAvKioKKyAgICAgKiBVbmljb2RlIDMuMS4wIHZlcnNpb24KKyAgICAgKiBAZHJhZnQgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVmVyc2lvbkluZm8gVU5JQ09ERV8zXzFfMDsKKyAgICAvKioKKyAgICAgKiBVbmljb2RlIDMuMS4xIHZlcnNpb24KKyAgICAgKiBAZHJhZnQgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVmVyc2lvbkluZm8gVU5JQ09ERV8zXzFfMTsKKyAgICAvKioKKyAgICAgKiBVbmljb2RlIDMuMiB2ZXJzaW9uCisgICAgICogQGRyYWZ0IElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFZlcnNpb25JbmZvIFVOSUNPREVfM18yOworICAgIC8qKgorICAgICAqIElDVTRKIGN1cnJlbnQgcmVsZWFzZSB2ZXJzaW9uCisgICAgICogQGRyYWZ0IElDVSAyLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFZlcnNpb25JbmZvIElDVV9WRVJTSU9OOworICAgIAorICAgIC8vIHB1YmxpYyBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGFuIGluc3RhbmNlIG9mIFZlcnNpb25JbmZvIHdpdGggdGhlIGFyZ3VtZW50IHZlcnNpb24uCisgICAgICogQHBhcmFtIHZlcnNpb24gdmVyc2lvbiBTdHJpbmcgaW4gdGhlIGZvcm1hdCBvZiAibWFqb3IubWlub3IubWlsbGkubWljcm8iCisgICAgICogICAgICAgICAgICAgICAgb3IgIm1ham9yLm1pbm9yLm1pbGxpIiBvciAibWFqb3IubWlub3IiIG9yICJtYWpvciIsCisgICAgICogICAgICAgICAgICAgICAgd2hlcmUgbWFqb3IsIG1pbm9yLCBtaWxsaSwgbWljcm8gYXJlIG5vbi1uZWdhdGl2ZSBudW1iZXJzCisgICAgICogICAgICAgICAgICAgICAgPD0gMjU1LiBJZiB0aGUgdHJhaWxpbmcgdmVyc2lvbiBudW1iZXJzIGFyZSAKKyAgICAgKiAgICAgICAgICAgICAgICBub3Qgc3BlY2lmaWVkIHRoZXkgYXJlIHRha2VuIGFzIDBzLiBFLmcuIFZlcnNpb24gIjMuMSIgaXMKKyAgICAgKiAgICAgICAgICAgICAgICBlcXVpdmFsZW50IHRvICIzLjEuMC4wIi4KKyAgICAgKiBAcmV0dXJuIGFuIGluc3RhbmNlIG9mIFZlcnNpb25JbmZvIHdpdGggdGhlIGFyZ3VtZW50IHZlcnNpb24uCisgICAgICogQGV4Y2VwdGlvbiB0aHJvd3MgYW4gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHdoZW4gdGhlIGFyZ3VtZW50IHZlcnNpb24gCisgICAgICogICAgICAgICAgICAgICAgaXMgbm90IGluIHRoZSByaWdodCBmb3JtYXQKKyAgICAgKiBAZHJhZnQgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgVmVyc2lvbkluZm8gZ2V0SW5zdGFuY2UoU3RyaW5nIHZlcnNpb24pCisgICAgeworICAgICAgICBpbnQgbGVuZ3RoICA9IHZlcnNpb24ubGVuZ3RoKCk7CisgICAgICAgIGludCBhcnJheVtdID0gezAsIDAsIDAsIDB9OworICAgICAgICBpbnQgY291bnQgICA9IDA7CisgICAgICAgIGludCBpbmRleCAgID0gMDsKKyAgICAgICAgCisgICAgICAgIHdoaWxlIChjb3VudCA8IDQgJiYgaW5kZXggPCBsZW5ndGgpIHsKKyAgICAgICAgICAgIGNoYXIgYyA9IHZlcnNpb24uY2hhckF0KGluZGV4KTsKKyAgICAgICAgICAgIGlmIChjID09ICcuJykgeworICAgICAgICAgICAgICAgIGNvdW50ICsrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYyAtPSAnMCc7CisgICAgICAgICAgICAgICAgaWYgKGMgPCAwIHx8IGMgPiA5KSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oSU5WQUxJRF9WRVJTSU9OX05VTUJFUl8pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhcnJheVtjb3VudF0gKj0gMTA7CisgICAgICAgICAgICAgICAgYXJyYXlbY291bnRdICs9IGM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbmRleCArKzsKKyAgICAgICAgfQorICAgICAgICBpZiAoaW5kZXggIT0gbGVuZ3RoKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCB2ZXJzaW9uIG51bWJlcjogU3RyaW5nICciICsgdmVyc2lvbiArICInIGV4Y2VlZHMgdmVyc2lvbiBmb3JtYXQiKTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkgKyspIHsKKyAgICAgICAgICAgIGlmIChhcnJheVtpXSA8IDAgfHwgYXJyYXlbaV0gPiAyNTUpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKElOVkFMSURfVkVSU0lPTl9OVU1CRVJfKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIGdldEluc3RhbmNlKGFycmF5WzBdLCBhcnJheVsxXSwgYXJyYXlbMl0sIGFycmF5WzNdKTsKKyAgICB9CisgCisgICAgLyoqIAorICAgICAqIFJldHVybnMgYW4gaW5zdGFuY2Ugb2YgVmVyc2lvbkluZm8gd2l0aCB0aGUgYXJndW1lbnQgdmVyc2lvbi4KKyAgICAgKiBAcGFyYW0gbWFqb3IgbWFqb3IgdmVyc2lvbiwgbm9uLW5lZ2F0aXZlIG51bWJlciA8PSAyNTUuCisgICAgICogQHBhcmFtIG1pbm9yIG1pbm9yIHZlcnNpb24sIG5vbi1uZWdhdGl2ZSBudW1iZXIgPD0gMjU1LgorICAgICAqIEBwYXJhbSBtaWxsaSBtaWxsaSB2ZXJzaW9uLCBub24tbmVnYXRpdmUgbnVtYmVyIDw9IDI1NS4KKyAgICAgKiBAcGFyYW0gbWljcm8gbWljcm8gdmVyc2lvbiwgbm9uLW5lZ2F0aXZlIG51bWJlciA8PSAyNTUuCisgICAgICogQGV4Y2VwdGlvbiB0aHJvd3MgYW4gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHdoZW4gZWl0aGVyIGFyZ3VtZW50cyBhcmUKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWdhdGl2ZSBvciA+IDI1NSAKKyAgICAgKiBAZHJhZnQgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgVmVyc2lvbkluZm8gZ2V0SW5zdGFuY2UoaW50IG1ham9yLCBpbnQgbWlub3IsIGludCBtaWxsaSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWljcm8pCisgICAgeworICAgICAgICAvLyBjaGVja3MgaWYgaXQgaXMgaW4gdGhlIGhhc2htYXAKKyAgICAgICAgLy8gZWxzZQorICAgICAgICBpZiAobWFqb3IgPCAwIHx8IG1ham9yID4gMjU1IHx8IG1pbm9yIDwgMCB8fCBtaW5vciA+IDI1NSB8fCAKKyAgICAgICAgICAgIG1pbGxpIDwgMCB8fCBtaWxsaSA+IDI1NSB8fCBtaWNybyA8IDAgfHwgbWljcm8gPiAyNTUpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oSU5WQUxJRF9WRVJTSU9OX05VTUJFUl8pOworICAgICAgICB9CisgICAgICAgIGludCAgICAgdmVyc2lvbiA9IGdldEludChtYWpvciwgbWlub3IsIG1pbGxpLCBtaWNybyk7CisgICAgICAgIEludGVnZXIga2V5ICAgICA9IG5ldyBJbnRlZ2VyKHZlcnNpb24pOworICAgICAgICBPYmplY3QgIHJlc3VsdCAgPSBNQVBfLmdldChrZXkpOworICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBWZXJzaW9uSW5mbyh2ZXJzaW9uKTsKKyAgICAgICAgICAgIE1BUF8ucHV0KGtleSwgcmVzdWx0KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKFZlcnNpb25JbmZvKXJlc3VsdDsKKyAgICB9CisgICAgCisgICAgLyoqIAorICAgICAqIFJldHVybnMgYW4gaW5zdGFuY2Ugb2YgVmVyc2lvbkluZm8gd2l0aCB0aGUgYXJndW1lbnQgdmVyc2lvbi4KKyAgICAgKiBFcXVpdmFsZW50IHRvIGdldEluc3RhbmNlKG1ham9yLCBtaW5vciwgbWlsbGksIDApLgorICAgICAqIEBwYXJhbSBtYWpvciBtYWpvciB2ZXJzaW9uLCBub24tbmVnYXRpdmUgbnVtYmVyIDw9IDI1NS4KKyAgICAgKiBAcGFyYW0gbWlub3IgbWlub3IgdmVyc2lvbiwgbm9uLW5lZ2F0aXZlIG51bWJlciA8PSAyNTUuCisgICAgICogQHBhcmFtIG1pbGxpIG1pbGxpIHZlcnNpb24sIG5vbi1uZWdhdGl2ZSBudW1iZXIgPD0gMjU1LgorICAgICAqIEBleGNlcHRpb24gdGhyb3dzIGFuIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiB3aGVuIGVpdGhlciBhcmd1bWVudHMgYXJlCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVnYXRpdmUgb3IgPiAyNTUgCisgICAgICogQGRyYWZ0IElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFZlcnNpb25JbmZvIGdldEluc3RhbmNlKGludCBtYWpvciwgaW50IG1pbm9yLCBpbnQgbWlsbGkpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0SW5zdGFuY2UobWFqb3IsIG1pbm9yLCBtaWxsaSwgMCk7CisgICAgfQorICAgIAorICAgIC8qKiAKKyAgICAgKiBSZXR1cm5zIGFuIGluc3RhbmNlIG9mIFZlcnNpb25JbmZvIHdpdGggdGhlIGFyZ3VtZW50IHZlcnNpb24uCisgICAgICogRXF1aXZhbGVudCB0byBnZXRJbnN0YW5jZShtYWpvciwgbWlub3IsIDAsIDApLgorICAgICAqIEBwYXJhbSBtYWpvciBtYWpvciB2ZXJzaW9uLCBub24tbmVnYXRpdmUgbnVtYmVyIDw9IDI1NS4KKyAgICAgKiBAcGFyYW0gbWlub3IgbWlub3IgdmVyc2lvbiwgbm9uLW5lZ2F0aXZlIG51bWJlciA8PSAyNTUuCisgICAgICogQGV4Y2VwdGlvbiB0aHJvd3MgYW4gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHdoZW4gZWl0aGVyIGFyZ3VtZW50cyBhcmUKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWdhdGl2ZSBvciA+IDI1NSAKKyAgICAgKiBAZHJhZnQgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgVmVyc2lvbkluZm8gZ2V0SW5zdGFuY2UoaW50IG1ham9yLCBpbnQgbWlub3IpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0SW5zdGFuY2UobWFqb3IsIG1pbm9yLCAwLCAwKTsKKyAgICB9CisgICAgCisgICAgLyoqIAorICAgICAqIFJldHVybnMgYW4gaW5zdGFuY2Ugb2YgVmVyc2lvbkluZm8gd2l0aCB0aGUgYXJndW1lbnQgdmVyc2lvbi4KKyAgICAgKiBFcXVpdmFsZW50IHRvIGdldEluc3RhbmNlKG1ham9yLCAwLCAwLCAwKS4KKyAgICAgKiBAcGFyYW0gbWFqb3IgbWFqb3IgdmVyc2lvbiwgbm9uLW5lZ2F0aXZlIG51bWJlciA8PSAyNTUuCisgICAgICogQGV4Y2VwdGlvbiB0aHJvd3MgYW4gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHdoZW4gZWl0aGVyIGFyZ3VtZW50cyBhcmUKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWdhdGl2ZSBvciA+IDI1NSAKKyAgICAgKiBAZHJhZnQgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgVmVyc2lvbkluZm8gZ2V0SW5zdGFuY2UoaW50IG1ham9yKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdldEluc3RhbmNlKG1ham9yLCAwLCAwLCAwKTsKKyAgICB9CisgCisgICAgLyoqIAorICAgICAqIFJldHVybnMgdGhlIFN0cmluZyByZXByZXNlbnRhdGl2ZSBvZiBWZXJzaW9uSW5mbyBpbiB0aGUgZm9ybWF0IG9mIAorICAgICAqICJtYWpvci5taW5vci5taWxsaS5taWNybyIgICAKKyAgICAgKiBAcmV0dXJuIFN0cmluZyByZXByZXNlbnRhdGl2ZSBvZiBWZXJzaW9uSW5mbworICAgICAqIEBkcmFmdCBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpCisgICAgeworICAgICAgICBTdHJpbmdCdWZmZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcig3KTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChnZXRNYWpvcigpKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgnLicpOworICAgICAgICByZXN1bHQuYXBwZW5kKGdldE1pbm9yKCkpOworICAgICAgICByZXN1bHQuYXBwZW5kKCcuJyk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoZ2V0TWlsbGkoKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoJy4nKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChnZXRNaWNybygpKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworICAgIH0KKyAgICAKKyAgICAvKiogCisgICAgICogUmV0dXJucyB0aGUgbWFqb3IgdmVyc2lvbiBudW1iZXIKKyAgICAgKiBAcmV0dXJuIHRoZSBtYWpvciB2ZXJzaW9uIG51bWJlciAgICAKKyAgICAgKiBAZHJhZnQgSUNVIDIuMQorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0TWFqb3IoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIChtX3ZlcnNpb25fID4+IDI0KSAmIExBU1RfQllURV9NQVNLXyA7CisgICAgfQorIAorICAgIC8qKiAKKyAgICAgKiBSZXR1cm5zIHRoZSBtaW5vciB2ZXJzaW9uIG51bWJlcgorICAgICAqIEByZXR1cm4gdGhlIG1pbm9yIHZlcnNpb24gbnVtYmVyICAgIAorICAgICAqIEBkcmFmdCBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIGludCBnZXRNaW5vcigpCisgICAgeworICAgICAgICByZXR1cm4gKG1fdmVyc2lvbl8gPj4gMTYpICYgTEFTVF9CWVRFX01BU0tfIDsKKyAgICB9CisgCisgICAgLyoqIAorICAgICAqIFJldHVybnMgdGhlIG1pbGxpIHZlcnNpb24gbnVtYmVyCisgICAgICogQHJldHVybiB0aGUgbWlsbGkgdmVyc2lvbiBudW1iZXIgICAgCisgICAgICogQGRyYWZ0IElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldE1pbGxpKCkKKyAgICB7CisgICAgICAgIHJldHVybiAobV92ZXJzaW9uXyA+PiA4KSAmIExBU1RfQllURV9NQVNLXyA7CisgICAgfQorIAorICAgIC8qKiAKKyAgICAgKiBSZXR1cm5zIHRoZSBtaWNybyB2ZXJzaW9uIG51bWJlcgorICAgICAqIEByZXR1cm4gdGhlIG1pY3JvIHZlcnNpb24gbnVtYmVyCisgICAgICogQGRyYWZ0IElDVSAyLjEgICAgCisgICAgICovCisgICAgcHVibGljIGludCBnZXRNaWNybygpCisgICAgeworICAgICAgICByZXR1cm4gbV92ZXJzaW9uXyAmIExBU1RfQllURV9NQVNLXyA7CisgICAgfQorIAorICAgIC8qKgorICAgICAqIENoZWNrcyBpZiB0aGlzIHZlcnNpb24gaW5mb3JtYXRpb24gaXMgZXF1YWxzIHRvIHRoZSBhcmd1bWVudCB2ZXJzaW9uCisgICAgICogQHBhcmFtIG90aGVyIG9iamVjdCB0byBiZSBjb21wYXJlZAorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiBvdGhlciBpcyBlcXVhbHMgdG8gdGhpcyBvYmplY3QncyB2ZXJzaW9uIGluZm9ybWF0aW9uLCAKKyAgICAgKiAgICAgICAgIGZhbHNlIG90aGVyd2lzZQorICAgICAqIEBkcmFmdCBJQ1UgMi4xCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCBvdGhlcikKKyAgICB7CisgICAgICAgIHJldHVybiBvdGhlciA9PSB0aGlzOworICAgIH0KKyAKKyAgICAvKioKKyAgICAgKiBDb21wYXJlcyBvdGhlciB3aXRoIHRoaXMgVmVyc2lvbkluZm8uIAorICAgICAqIEBwYXJhbSBvdGhlciBWZXJzaW9uSW5mbyB0byBiZSBjb21wYXJlZAorICAgICAqIEByZXR1cm4gMCBpZiB0aGUgYXJndW1lbnQgaXMgYSBWZXJzaW9uSW5mbyBvYmplY3QgdGhhdCBoYXMgdmVyc2lvbiAKKyAgICAgKiAgICAgICAgICAgaW5mb3JtYXRpb24gZXF1YWxzIHRvIHRoaXMgb2JqZWN0LiAKKyAgICAgKiAgICAgICAgICAgTGVzcyB0aGFuIDAgaWYgdGhlIGFyZ3VtZW50IGlzIGEgVmVyc2lvbkluZm8gb2JqZWN0IHRoYXQgaGFzIAorICAgICAqICAgICAgICAgICB2ZXJzaW9uIGluZm9ybWF0aW9uIGdyZWF0ZXIgdGhhbiB0aGlzIG9iamVjdC4gCisgICAgICogICAgICAgICAgIEdyZWF0ZXIgdGhhbiAwIGlmIHRoZSBhcmd1bWVudCBpcyBhIFZlcnNpb25JbmZvIG9iamVjdCB0aGF0IAorICAgICAqICAgICAgICAgICBoYXMgdmVyc2lvbiBpbmZvcm1hdGlvbiBsZXNzIHRoYW4gdGhpcyBvYmplY3QuCisgICAgICogQGRyYWZ0IElDVSAyLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGNvbXBhcmVUbyhWZXJzaW9uSW5mbyBvdGhlcikKKyAgICB7CisgICAgICAgIHJldHVybiBtX3ZlcnNpb25fIC0gb3RoZXIubV92ZXJzaW9uXzsKKyAgICB9CisgICAKKyAgICAvLyBwcml2YXRlIGRhdGEgbWVtYmVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgICogVmVyc2lvbiBudW1iZXIgc3RvcmVkIGFzIGEgYnl0ZSBmb3IgZWFjaCBvZiB0aGUgbWFqb3IsIG1pbm9yLCBtaWxsaSBhbmQKKyAgICAgKiBtaWNybyBudW1iZXJzIGluIHRoZSAzMiBiaXQgaW50LgorICAgICAqIE1vc3Qgc2lnbmlmaWNhbnQgZm9yIHRoZSBtYWpvciBhbmQgdGhlIGxlYXN0IHNpZ25pZmljYW50IGNvbnRhaW5zIHRoZSAKKyAgICAgKiBtaWNybyBudW1iZXJzLgorICAgICAqLworICAgIHByaXZhdGUgaW50IG1fdmVyc2lvbl87CisgICAgLyoqCisgICAgICogTWFwIG9mIHNpbmdsZXRvbnMKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBIYXNoTWFwIE1BUF8gPSBuZXcgSGFzaE1hcCgpOworICAgIC8qKgorICAgICAqIExhc3QgYnl0ZSBtYXNrCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExBU1RfQllURV9NQVNLXyA9IDB4RkY7CisgICAgLyoqCisgICAgICogRXJyb3Igc3RhdGVtZW50IHN0cmluZworICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBJTlZBTElEX1ZFUlNJT05fTlVNQkVSXyA9IAorICAgICAgICAiSW52YWxpZCB2ZXJzaW9uIG51bWJlcjogVmVyc2lvbiBudW1iZXIgbWF5IGJlIG5lZ2F0aXZlIG9yIGdyZWF0ZXIgdGhhbiAyNTUiOworICAgICAgICAKKyAgICAvLyBzdGF0aWMgZGVjbGFyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgICogSW5pdGlhbGl6ZSB2ZXJzaW9ucyBvbmx5IGFmdGVyIE1BUF8gaGFzIGJlZW4gY3JlYXRlZAorICAgICAqLworICAgIHN0YXRpYyB7CisgICAgICAgIFVOSUNPREVfMV8wICAgPSBnZXRJbnN0YW5jZSgxLCAwLCAwLCAwKTsKKyAgICAgICAgVU5JQ09ERV8xXzBfMSA9IGdldEluc3RhbmNlKDEsIDAsIDEsIDApOworICAgICAgICBVTklDT0RFXzFfMV8wID0gZ2V0SW5zdGFuY2UoMSwgMSwgMCwgMCk7CisgICAgICAgIFVOSUNPREVfMV8xXzUgPSBnZXRJbnN0YW5jZSgxLCAxLCA1LCAwKTsKKyAgICAgICAgVU5JQ09ERV8yXzAgICA9IGdldEluc3RhbmNlKDIsIDAsIDAsIDApOyAgICAgICAgCisgICAgICAgIFVOSUNPREVfMl8xXzIgPSBnZXRJbnN0YW5jZSgyLCAxLCAyLCAwKTsKKyAgICAgICAgVU5JQ09ERV8yXzFfNSA9IGdldEluc3RhbmNlKDIsIDEsIDUsIDApOworICAgICAgICBVTklDT0RFXzJfMV84ID0gZ2V0SW5zdGFuY2UoMiwgMSwgOCwgMCk7CisgICAgICAgIFVOSUNPREVfMl8xXzkgPSBnZXRJbnN0YW5jZSgyLCAxLCA5LCAwKTsKKyAgICAgICAgVU5JQ09ERV8zXzAgICA9IGdldEluc3RhbmNlKDMsIDAsIDAsIDApOworICAgICAgICBVTklDT0RFXzNfMF8xID0gZ2V0SW5zdGFuY2UoMywgMCwgMSwgMCk7CisgICAgICAgIFVOSUNPREVfM18xXzAgPSBnZXRJbnN0YW5jZSgzLCAxLCAwLCAwKTsKKyAgICAgICAgVU5JQ09ERV8zXzFfMSA9IGdldEluc3RhbmNlKDMsIDEsIDEsIDApOworICAgICAgICBVTklDT0RFXzNfMiAgID0gZ2V0SW5zdGFuY2UoMywgMiwgMCwgMCk7CisgICAgICAgIElDVV9WRVJTSU9OID0gZ2V0SW5zdGFuY2UoMiwgNCwgMCwgMCk7CisgICAgfQorICAgIAorICAgIC8vIHByaXZhdGUgY29uc3RydWN0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RvciB3aXRoIGludCAKKyAgICAgKiBAcGFyYW0gY29tcGFjdHZlcnNpb24gYSAzMiBiaXQgaW50IHdpdGggZWFjaCBieXRlIHJlcHJlc2VudGluZyBhIG51bWJlcgorICAgICAqLworICAgIHByaXZhdGUgVmVyc2lvbkluZm8oaW50IGNvbXBhY3R2ZXJzaW9uKSAKKyAgICB7CisgICAgICAgIG1fdmVyc2lvbl8gPSBjb21wYWN0dmVyc2lvbjsgICAgCisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEdldHMgdGhlIGludCBmcm9tIHRoZSB2ZXJzaW9uIG51bWJlcnMKKyAgICAgKiBAcGFyYW0gbWFqb3Igbm9uLW5lZ2F0aXZlIHZlcnNpb24gbnVtYmVyCisgICAgICogQHBhcmFtIG1pbm9yIG5vbi1uZWdhdGl2ZXZlcnNpb24gbnVtYmVyCisgICAgICogQHBhcmFtIG1pbGxpIG5vbi1uZWdhdGl2ZXZlcnNpb24gbnVtYmVyCisgICAgICogQHBhcmFtIG1pY3JvIG5vbi1uZWdhdGl2ZXZlcnNpb24gbnVtYmVyCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgaW50IGdldEludChpbnQgbWFqb3IsIGludCBtaW5vciwgaW50IG1pbGxpLCBpbnQgbWljcm8pIAorICAgIHsKKyAgICAgICAgcmV0dXJuIChtYWpvciA8PCAyNCkgfCAobWlub3IgPDwgMTYpIHwgKG1pbGxpIDw8IDgpIHwgbWljcm87CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3V0aWwvcGFja2FnZS5odG1sIGIvc3JjL2NvbS9pYm0vaWN1L3V0aWwvcGFja2FnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjNjNmE3NWQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdXRpbC9wYWNrYWdlLmh0bWwKQEAgLTAsMCArMSwxNSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzwhLS0gIENvcHlyaWdodCAoQykgMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQKKyAgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorCisgICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS91dGlsL3BhY2thZ2UuaHRtbCx2ICQKKyAgJFJldmlzaW9uOiAxLjEgJAorICAkRGF0ZTogMjAwMC8wMy8xNSAyMTozNTo1MyAkCistLT4KKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IndoaXRlIj4KK0ludGVybmF0aW9uYWwgY2FsZW5kYXJzIGFuZCBvdGhlciB1dGlsaXR5IGNsYXNzZXMuCis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvYXd0dWkvQXd0TWVudUJ1aWxkZXIuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2F3dHVpL0F3dE1lbnVCdWlsZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZWRlOTE3YgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2F3dHVpL0F3dE1lbnVCdWlsZGVyLmphdmEKQEAgLTAsMCArMSwyMzggQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IEF3dE1lbnVCdWlsZGVyLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NDE6NDkgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5hd3R1aTsKKworaW1wb3J0IGphdmEuYXd0LkZyYW1lOworaW1wb3J0IGphdmEuYXd0Lk1lbnU7CitpbXBvcnQgamF2YS5hd3QuTWVudUJhcjsKK2ltcG9ydCBqYXZhLmF3dC5XaW5kb3c7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5NVGV4dFBhbmVsOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC51aWltcGwucmVzb3VyY2VzLkZyYW1lUmVzb3VyY2VzOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC51aWltcGwuKjsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbC5EaWFsb2dJdGVtLkRpYWxvZ0ZhY3Rvcnk7CisKKy8vIFRPIERPOiAgRG9uJ3QgaGFyZC1jb2RlIG1lbnUgY29uZmlndXJhdGlvbnMuICBJbnN0ZWFkLCBzcGVjaWZ5IHRoZW0gd2l0aAorLy8gc3RyaW5ncyBzb21laG93LiAgVGhpcyBpcyBhbiBpbXByb3ZlbWVudCBvdmVyIHdoYXQgd2UgaGFkLCBhbmQgaXQnbGwgZG8KKy8vIGZvciBub3cuCisKKy8qKgorICogQXd0TWVudUJ1aWxkZXIgY3JlYXRlcyBhIHNldCBvZiBBV1QgbWVudXMgZm9yIGludGVyYWN0aW5nCisgKiB3aXRoIGFuIE1UZXh0UGFuZWwuICBGdXR1cmUgdmVyc2lvbnMgb2YgdGhpcyBjbGFzcyBtYXkgYWxsb3cKKyAqIGNsaWVudHMgdG8gY29udHJvbCB0aGUgbWVudSBjb250ZW50cy4KKyAqIEBzZWUgTVRleHRQYW5lbAorICovCitwdWJsaWMgZmluYWwgY2xhc3MgQXd0TWVudUJ1aWxkZXIgZXh0ZW5kcyBNZW51QnVpbGRlciB7CisgICAgCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBBd3RNZW51QnVpbGRlciBJTlNUQU5DRSA9IG5ldyBBd3RNZW51QnVpbGRlcigpOworICAgIAorICAgIC8qKgorICAgICAqIElkIGZvciBhbiBFZGl0IG1lbnUuICBUaGUgRWRpdCBtZW51IGhhcyB0aGUgZm9sbG93aW5nIGl0ZW1zOgorICAgICAqIDx1bD4KKyAgICAgKiA8bGk+PGI+VW5kbzwvYj4gLSBpbnZva2UgdW5kbygpIG9uIHRoZSBNVGV4dFBhbmVsPC9saT4KKyAgICAgKiA8bGk+PGI+UmVkbzwvYj4gLSBpbnZva2UgcmVkbygpIG9uIHRoZSBNVGV4dFBhbmVsPC9saT4KKyAgICAgKiA8bGk+PGI+Q3V0PC9iPiAtIGludm9rZSBjdXQoKSBvbiB0aGUgTVRleHRQYW5lbDwvbGk+CisgICAgICogPGxpPjxiPkNvcHk8L2I+IC0gaW52b2tlIGNvcHkoKSBvbiB0aGUgTVRleHRQYW5lbDwvbGk+CisgICAgICogPGxpPjxiPlBhc3RlPC9iPiAtIGludm9rZSBwYXN0ZSgpIG9uIHRoZSBNVGV4dFBhbmVsPC9saT4KKyAgICAgKiA8bGk+PGI+Q2xlYXI8L2I+IC0gaW52b2tlIGNsZWFyKCkgb24gdGhlIE1UZXh0UGFuZWw8L2xpPgorICAgICAqIDxsaT48Yj5TZWxlY3QgQWxsPC9iPiAtIGludm9rZSBzZWxlY3RBbGwoKSBvbiB0aGUgTVRleHRQYW5lbDwvbGk+CisgICAgICogPC91bD4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBFRElUID0gTWVudUJ1aWxkZXIuRURJVDsKKyAgICAvKioKKyAgICAgKiBJZCBmb3IgdGhlIHBvaW50IHNpemVzIG1lbnUuICBUaGUgbWVudSBoYXMgaXRlbXMgdGhhdCBzZXQgdGhlIHNpemUgb2YgYSBjaGFyYWN0ZXIKKyAgICAgKiBpbiBhIHR5cGVmYWNlLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNJWkUgPSBNZW51QnVpbGRlci5TSVpFOworICAgIC8qKgorICAgICAqIElkIGZvciBhIFN0eWxlIG1lbnUuICBUaGUgU3R5bGUgbWVudSBoYXMgdGhlIGZvbGxvd2luZyBpdGVtczoKKyAgICAgKiA8dWw+CisgICAgICogPGxpPjxiPlBsYWluPC9iPiAtIHJlbW92ZSA8Y29kZT5XRUlHSFQ8L2NvZGU+LAorICAgICAqICAgICAgICAgICAgICAgICAgICA8Y29kZT5QT1NUVVJFPC9jb2RlPiwKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgPGNvZGU+VU5ERVJMSU5FPC9jb2RlPiBhbmQKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgPGNvZGU+U1RSSUtFVEhST1VHSDwvY29kZT4gYXR0cmlidXRlcyBmcm9tIHRoZQorICAgICAqIGN1cnJlbnQgc2VsZWN0aW9uPC9saT4KKyAgICAgKiA8bGk+PGI+Qm9sZDwvYj4gLSBhZGQgPGNvZGU+e1dFSUdIVCxXRUlHSFRfQk9MRH08L2NvZGU+IHRvCisgICAgICogdGhlIGN1cnJlbnQgc2VsZWN0aW9uPC9saT4KKyAgICAgKiA8bGk+PGI+SXRhbGljPC9iPiAtIGFkZCA8Y29kZT57UE9TVFVSRSxQT1NUVVJFX0lUQUxJQ308L2NvZGU+IHRvCisgICAgICogdGhlIGN1cnJlbnQgc2VsZWN0aW9uPC9saT4KKyAgICAgKiA8bGk+PGI+VW5kZXJsaW5lPC9iPiAtIGFkZCA8Y29kZT57VU5ERVJMSU5FLFVOREVSTElORV9PTn08L2NvZGU+IHRvCisgICAgICogdGhlIGN1cnJlbnQgc2VsZWN0aW9uPC9saT4KKyAgICAgKiA8bGk+PGI+U3RyaWtldGhyb3VnaDwvYj4gLSBhZGQgPGNvZGU+e1NUUklLRVRIUk9VR0gsU1RSSUtFVEhST1VHSF9PTn08L2NvZGU+CisgICAgICogdG8gdGhlIGN1cnJlbnQgc2VsZWN0aW9uPC9saT4KKyAgICAgKiA8bGk+PGI+Rm9udC4uLjwvYj4gLSBkaXNwbGF5IGEgZGlhbG9nIGFsbG93aW5nIHRoZSB1c2VyIHRvCisgICAgICogc2VsZWN0IGEgdHlwZWZhY2UgKGZvbnQgZmFtaWx5KSBmb3IgdGhlIGN1cnJlbnQgc2VsZWN0aW9uPC9saT4KKyAgICAgKiA8bGk+PGI+Rm9yZWNvbG9yLi4uPC9iPiAtIGRpc3BsYXkgYSBkaWFsb2cgYWxsb3dpbmcgdGhlIHVzZXIgdG8KKyAgICAgKiBzZWxlY3QgYSBmb3JlZ3JvdW5kIGNvbG9yIGZvciB0aGUgY3VycmVudCBzZWxlY3Rpb248L2xpPgorICAgICAqIDxsaT48Yj5CYWNrY29sb3IuLi48L2I+IC0gZGlzcGxheSBhIGRpYWxvZyBhbGxvd2luZyB0aGUgdXNlciB0bworICAgICAqIHNlbGVjdCBhIGJhY2tncm91bmQgY29sb3IgZm9yIHRoZSBjdXJyZW50IHNlbGVjdGlvbjwvbGk+CisgICAgICogPC91bD4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTVFlMRSA9IE1lbnVCdWlsZGVyLlNUWUxFOworICAgIC8qKgorICAgICAqIElkIGZvciBhIHBhcmFncmFwaCBhbGlnbm1lbnQgbWVudS4gIFRoZSBtZW51IGhhcyB0aGUgZm9sbG93aW5nIGl0ZW1zOgorICAgICAqIDx1bD4KKyAgICAgKiA8bGk+PGI+TGVhZGluZzwvYj4gLSBnaXZlIHNlbGVjdGVkIHBhcmFncmFwaChzKSBMRUFESU5HIGZsdXNoPC9saT4KKyAgICAgKiA8bGk+PGI+Q2VudGVyPC9iPiAtIGdpdmUgc2VsZWN0ZWQgcGFyYWdyYXBoKHMpIENFTlRFUiBmbHVzaDwvbGk+CisgICAgICogPGxpPjxiPlRyYWlsaW5nPC9iPiAtIGdpdmUgc2VsZWN0ZWQgcGFyYWdyYXBoKHMpIFRSQUlMSU5HIGZsdXNoPC9saT4KKyAgICAgKiA8bGk+PGI+SnVzdGlmaWVkPC9iPiAtIGdpdmUgc2VsZWN0ZWQgcGFyYWdyYXBoKHMpIGZ1bGwganVzdGlmaWNhdGlvbjwvbGk+CisgICAgICogPC91bD4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGTFVTSCA9IE1lbnVCdWlsZGVyLkZMVVNIOworICAgIC8qKgorICAgICAqIElkIGZvciBhIG1lbnUgdGhhdCBzZXRzIHRoZSBLZXlSZW1hcAorICAgICAqIG9uIGFuIE1UZXh0UGFuZWwuICBUaGUgbWVudSBoYXMgdGhlIGZvbGxvd2luZyBpdGVtczoKKyAgICAgKiA8dWw+CisgICAgICogPGxpPjxiPkRlZmF1bHQ8L2I+IC0gc2V0IEtleVJlbWFwIHRvIGlkZW50aXR5IHJlbWFwPC9saT4KKyAgICAgKiA8bGk+PGI+QXJhYmljPC9iPiAtIHNldCBLZXlSZW1hcCB0byBBcmFiaWMgdHJhbnNsaXRlcmF0aW9uPC9saT4KKyAgICAgKiA8bGk+PGI+SGVicmV3PC9iPiAtIHNldCBLZXlSZW1hcCB0byBIZWJyZXcgdHJhbnNsaXRlcmF0aW9uPC9saT4KKyAgICAgKiA8bGk+PGI+SXNyYWVsIE5pa3VkPC9iPiAtIHNldCBLZXlSZW1hcCB0byBJc3JhZWwgTmlrdWQ8L2xpPgorICAgICAqIDxsaT48Yj5UaGFpIEtldG1hbmVlPC9iPiAtIHNldCBLZXlSZW1hcCB0byBUaGFpIEtldG1hbmVlPC9saT4KKyAgICAgKiA8L3VsPgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEtFWU1BUCA9IE1lbnVCdWlsZGVyLktFWU1BUDsKKyAgICAvKioKKyAgICAgKiBJZCBmb3IgYSBtZW51IHRoYXQgc2V0cworICAgICAqIHRoZSBwcmltYXJ5IHJ1biBkaXJlY3Rpb24gZm9yIGEgcGFyYWdyYXBoLiAgUnVuIGRpcmVjdGlvbiBjYW4gYmUgbGVmdC10by1yaWdodCwKKyAgICAgKiByaWdodC10by1sZWZ0LCBvciBjYW4gdXNlIHRoZSBkZWZhdWx0IHJ1biBkaXJlY3Rpb24gZnJvbSB0aGUgVW5pY29kZSBiaWRpIGFsZ29yaXRobS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCSURJID0gTWVudUJ1aWxkZXIuQklESTsKKyAgICAvKioKKyAgICAgKiBJZCBmb3IgYSBtZW51IHdpdGggYW4gPGI+QWJvdXQ8L2I+IGl0ZW0uICBXaGVuIHNlbGVjdGVkLCAKKyAgICAgKiB0aGUgaXRlbSBkaXNwbGF5cyBhIEZyYW1lIGNvbnRhaW5pbmcgc29tZQorICAgICAqIHNlbGYtcHJvbW90aW9uYWwgdGV4dC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBQk9VVCA9IE1lbnVCdWlsZGVyLkFCT1VUOworICAgIAorICAgIC8qKgorICAgICAqIFJldHVybiBhbiBpbnN0YW5jZSBvZiBBd3RNZW51QnVpbGRlci4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIEF3dE1lbnVCdWlsZGVyIGdldEluc3RhbmNlKCkgeworICAgICAgICAKKyAgICAgICAgcmV0dXJuIElOU1RBTkNFOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIE1lbnVCYXIgZk1lbnVCYXI7CisgICAgCisgICAgcHJpdmF0ZSBBd3RNZW51QnVpbGRlcigpIHsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQWRkIGEgc3RhbmRhcmQgc2V0IG9mIG1lbnVzIHRvIHRoZSBnaXZlbiBtZW51IGJhci4gIFRoZSBtZW51cyAKKyAgICAgKiB3aWxsIGludGVyYWN0IHdpdGggdGhlIGdpdmVuIE1UZXh0UGFuZWwuCisgICAgICogQHBhcmFtIG1lbnVCYXIgdGhlIE1lbnVCYXIgdG8gd2hpY2ggbWVudXMgYXJlIGFkZGVkCisgICAgICogQHBhcmFtIHRleHRQYW5lbCB0aGUgTVRleHRQYW5lbCB3aXRoIHdoaWNoIHRoZSBtZW51cyBpbnRlcmFjdAorICAgICAqIEBwYXJhbSBmcmFtZSBhIEZyYW1lIHRvIHVzZSBhcyB0aGUgcGFyZW50IG9mIGFueSBkaWFsb2dzIGNyZWF0ZWQgYnkgYSAKKyAgICAgKiAgIGEgbWVudSBpdGVtLiAgSWYgbnVsbCwgbWVudSBpdGVtcyB3aGljaCBjcmVhdGUgZGlhbG9ncyB3aWxsIGJlIG9taXR0ZWQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgY3JlYXRlTWVudXMoTWVudUJhciBtZW51QmFyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNVGV4dFBhbmVsIHRleHRQYW5lbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmFtZSBmcmFtZSkgeworICAgICAgICAKKyAgICAgICAgY3JlYXRlTWVudXMobWVudUJhciwgdGV4dFBhbmVsLCBmcmFtZSwgZGVmYXVsdE1lbnVzKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQWRkIGEgc2V0IG9mIG1lbnVzIHRvIHRoZSBnaXZlbiBtZW51IGJhci4gIFRoZSBtZW51cyAKKyAgICAgKiB3aWxsIGludGVyYWN0IHdpdGggdGhlIGdpdmVuIE1UZXh0UGFuZWwuCisgICAgICogQHBhcmFtIG1lbnVCYXIgdGhlIE1lbnVCYXIgdG8gd2hpY2ggbWVudXMgYXJlIGFkZGVkCisgICAgICogQHBhcmFtIHRleHRQYW5lbCB0aGUgTVRleHRQYW5lbCB3aXRoIHdoaWNoIHRoZSBtZW51cyBpbnRlcmFjdAorICAgICAqIEBwYXJhbSBmcmFtZSBhIEZyYW1lIHRvIHVzZSBhcyB0aGUgcGFyZW50IG9mIGFueSBkaWFsb2dzIGNyZWF0ZWQgYnkgYSAKKyAgICAgKiAgIGEgbWVudSBpdGVtLiAgSWYgbnVsbCwgbWVudSBpdGVtcyB3aGljaCBjcmVhdGUgZGlhbG9ncyB3aWxsIGJlIG9taXR0ZWQuCisgICAgICogQHBhcmFtIG1lbnVzIGFuIGFycmF5IG9mIGludGVnZXIgbWVudSBpZCdzLiAgRWFjaCBlbGVtZW50IG9mIHRoZQorICAgICAqICAgYXJyYXkgbXVzdCBiZSBvbmUgb2YgdGhpcyBjbGFzcydzIG1lbnUgaWQgY29uc3RhbnRzLiAgSWYgbnVsbCwKKyAgICAgKiAgIHRoZSBkZWZhdWx0IG1lbnVzIGFyZSBjcmVhdGVkLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGNyZWF0ZU1lbnVzKE1lbnVCYXIgbWVudUJhciwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVRleHRQYW5lbCB0ZXh0UGFuZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWUgZnJhbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50W10gbWVudXMpIHsKKyAgICAgICAgCisgICAgICAgIGlmIChtZW51cyA9PSBudWxsKSB7CisgICAgICAgICAgICBtZW51cyA9IGRlZmF1bHRNZW51czsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgc3luY2hyb25pemVkIChNSXRlbS5MT0NLKSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZNZW51QmFyID0gbWVudUJhcjsKKyAgICAgICAgICAgIGRvQ3JlYXRlTWVudXModGV4dFBhbmVsLCBmcmFtZSwgbWVudXMpOworICAgICAgICAgICAgZk1lbnVCYXIgPSBudWxsOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHByb3RlY3RlZCB2b2lkIGhhbmRsZUFkZE1lbnUoU3RyaW5nIGtleSkgeworICAgICAgICAKKyAgICAgICAgTWVudSBtZW51ID0gbmV3IE1lbnUoUmVzb3VyY2VVdGlscy5nZXRSZXNvdXJjZVN0cmluZyhrZXkpKTsKKyAgICAgICAgZk1lbnVCYXIuYWRkKG1lbnUpOworICAgICAgICBNSXRlbS5zZXRJdGVtRmFjdG9yeShuZXcgQXd0TWVudUZhY3RvcnkobWVudSkpOworICAgIH0KKworICAgIHByb3RlY3RlZCBEaWFsb2dGYWN0b3J5IGNyZWF0ZU9iamVjdERpYWxvZ0ZhY3RvcnkoZmluYWwgU3RyaW5nIGRpYWxvZ1RpdGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nIGRpYWxvZ01lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBPYmplY3Qga2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBjaGFyYWN0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmdbXSBuYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIE9iamVjdFtdIHZhbHVlcykgeworICAgICAgICAKKyAgICAgICAgZmluYWwgRnJhbWUgZGlhbG9nUGFyZW50ID0gZkRpYWxvZ1BhcmVudDsKKworICAgICAgICByZXR1cm4gbmV3IERpYWxvZ0ZhY3RvcnkoKSB7ICAgIAorICAgICAgICAgICAgcHVibGljIFdpbmRvdyBjcmVhdGVEaWFsb2coTVRleHRQYW5lbCB0ZXh0UGFuZWwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE9iamVjdERpYWxvZyhkaWFsb2dQYXJlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhbG9nVGl0bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhbG9nTWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0UGFuZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMpOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KKyAgICAKKyAgICBwcm90ZWN0ZWQgRGlhbG9nRmFjdG9yeSBjcmVhdGVOdW1iZXJEaWFsb2dGYWN0b3J5KGZpbmFsIFN0cmluZyBkaWFsb2dUaXRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBkaWFsb2dNZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgT2JqZWN0IGtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gY2hhcmFjdGVyKSB7CisgICAgICAgIAorICAgICAgICBmaW5hbCBGcmFtZSBkaWFsb2dQYXJlbnQgPSBmRGlhbG9nUGFyZW50OworICAgICAgICAgICAgCisgICAgICAgIHJldHVybiBuZXcgRGlhbG9nRmFjdG9yeSgpIHsKKyAgICAgICAgICAgIHB1YmxpYyBXaW5kb3cgY3JlYXRlRGlhbG9nKE1UZXh0UGFuZWwgdGV4dFBhbmVsKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBOdW1iZXJEaWFsb2coZGlhbG9nUGFyZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpYWxvZ1RpdGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpYWxvZ01lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFBhbmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfSAgICAKKyAgICAKKyAgICBwcm90ZWN0ZWQgRGlhbG9nRmFjdG9yeSBjcmVhdGVBYm91dERpYWxvZ0ZhY3RvcnkoKSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gbmV3IERpYWxvZ0ZhY3RvcnkoKSB7CisgICAgICAgICAgICBwdWJsaWMgV2luZG93IGNyZWF0ZURpYWxvZyhNVGV4dFBhbmVsIHRleHRQYW5lbCkgeworICAgICAgICAgICAgICAgIFN0cmluZyB0aXRsZSA9IFJlc291cmNlVXRpbHMuZ2V0UmVzb3VyY2VTdHJpbmcoRnJhbWVSZXNvdXJjZXMuQUJPVVRfVElUTEUpOworICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTWVzc2FnZURpYWxvZyh0aXRsZSwgQWJvdXRUZXh0LmdldEFib3V0VGV4dCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvYXd0dWkvQXd0TWVudUZhY3RvcnkuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2F3dHVpL0F3dE1lbnVGYWN0b3J5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOWUyNjE3OQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2F3dHVpL0F3dE1lbnVGYWN0b3J5LmphdmEKQEAgLTAsMCArMSwxMTYgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IEF3dE1lbnVGYWN0b3J5LmphdmEsdiAkICRSZXZpc2lvbjogMS4yICQgJERhdGU6IDIwMDAvMDQvMjAgMTk6Mjk6MDggJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5hd3R1aTsKKworaW1wb3J0IGphdmEuYXd0LkNoZWNrYm94TWVudUl0ZW07CitpbXBvcnQgamF2YS5hd3QuTWVudTsKK2ltcG9ydCBqYXZhLmF3dC5NZW51SXRlbTsKK2ltcG9ydCBqYXZhLmF3dC5NZW51U2hvcnRjdXQ7CisKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5BY3Rpb25FdmVudDsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5BY3Rpb25MaXN0ZW5lcjsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5JdGVtRXZlbnQ7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuSXRlbUxpc3RlbmVyOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC51aWltcGwucmVzb3VyY2VzLk1lbnVEYXRhOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudWlpbXBsLk1JdGVtOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudWlpbXBsLk1JdGVtLkl0ZW1GYWN0b3J5OworCitmaW5hbCBjbGFzcyBBd3RNZW51RmFjdG9yeSBpbXBsZW1lbnRzIEl0ZW1GYWN0b3J5IHsKKyAgICAgICAgCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcml2YXRlIGZpbmFsIGNsYXNzIEF3dE1JdGVtIGV4dGVuZHMgTUl0ZW0geworICAgICAgICAKKyAgICAgICAgcHJpdmF0ZSBNZW51SXRlbSBmSXRlbTsKKyAgICAgICAgCisgICAgICAgIEF3dE1JdGVtKE1lbnVJdGVtIGl0ZW0pIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZkl0ZW0gPSBpdGVtOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBDaGVja2JveE1lbnVJdGVtIGNoSXRlbSA9IChDaGVja2JveE1lbnVJdGVtKSBmSXRlbTsKKyAgICAgICAgICAgICAgICBjaEl0ZW0uYWRkSXRlbUxpc3RlbmVyKG5ldyBJdGVtTGlzdGVuZXIoKSB7CisgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIGl0ZW1TdGF0ZUNoYW5nZWQoSXRlbUV2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdGVkKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhdGNoKENsYXNzQ2FzdEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgaXRlbS5hZGRBY3Rpb25MaXN0ZW5lcihuZXcgQWN0aW9uTGlzdGVuZXIoKSB7CisgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIGFjdGlvblBlcmZvcm1lZChBY3Rpb25FdmVudCBldnQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdGVkKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gQWNrIC0gaG93IGRvIHlvdSBkbyB0aGlzIGZyb20gaW5uZXIgY2xhc3Nlcz8/CisgICAgICAgIHByb3RlY3RlZCB2b2lkIGhhbmRsZVNlbGVjdGVkKCkgeworICAgICAgICAgICAgCisgICAgICAgICAgICBzdXBlci5oYW5kbGVTZWxlY3RlZCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwdWJsaWMgZmluYWwgdm9pZCBzZXRFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCkgeworICAgICAgICAgICAgCisgICAgICAgICAgICBmSXRlbS5zZXRFbmFibGVkKGVuYWJsZWQpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwdWJsaWMgdm9pZCBzZXRTdGF0ZShib29sZWFuIGNoZWNrZWQpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBDaGVja2JveE1lbnVJdGVtIGl0ZW0gPSAoQ2hlY2tib3hNZW51SXRlbSkgZkl0ZW07CisgICAgICAgICAgICAgICAgaXRlbS5zZXRTdGF0ZShjaGVja2VkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhdGNoKENsYXNzQ2FzdEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgcGVyZm9ybSBzZXRDaGVja2VkIG9uIG5vbi1jaGVja2JveCBpdGVtIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBNZW51IGZNZW51OworICAgICAgICAKKyAgICBBd3RNZW51RmFjdG9yeShNZW51IG1lbnUpIHsKKyAgICAgICAgICAgIAorICAgICAgICBmTWVudSA9IG1lbnU7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgTUl0ZW0gaGFuZGxlQ3JlYXRlKE1lbnVJdGVtIGl0ZW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVudURhdGEgbWVudURhdGEpIHsKKworICAgICAgICBpZiAobWVudURhdGEuaGFzU2hvcnRjdXQoKSkgeworICAgICAgICAgICAgaXRlbS5zZXRTaG9ydGN1dChuZXcgTWVudVNob3J0Y3V0KG1lbnVEYXRhLmdldFNob3J0Y3V0Q2hhcigpKSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZNZW51LmFkZChpdGVtKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBuZXcgQXd0TUl0ZW0oaXRlbSk7CisgICAgfQorICAgICAgICAKKyAgICBwdWJsaWMgTUl0ZW0gY3JlYXRlSXRlbShNZW51RGF0YSBtZW51RGF0YSkgeworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGhhbmRsZUNyZWF0ZShuZXcgTWVudUl0ZW0obWVudURhdGEuZ2V0TmFtZSgpKSwgbWVudURhdGEpOworICAgIH0gICAgICAgIAorCisgICAgcHVibGljIE1JdGVtIGNyZWF0ZUNoZWNrYm94SXRlbShNZW51RGF0YSBtZW51RGF0YSkgeworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGhhbmRsZUNyZWF0ZShuZXcgQ2hlY2tib3hNZW51SXRlbShtZW51RGF0YS5nZXROYW1lKCkpLCBtZW51RGF0YSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIGNyZWF0ZVNlcGFyYXRvcigpIHsKKyAgICAgICAgCisgICAgICAgIGZNZW51LmFkZChuZXcgTWVudUl0ZW0oIi0iKSk7CisgICAgfQorfQorICAgIApkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvYXd0dWkvTVRhYlJ1bGVyQ29tcG9uZW50LmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC9hd3R1aS9NVGFiUnVsZXJDb21wb25lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5kNmI0N2JjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvYXd0dWkvTVRhYlJ1bGVyQ29tcG9uZW50LmphdmEKQEAgLTAsMCArMSw5MiBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogTVRhYlJ1bGVyQ29tcG9uZW50LmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NDE6NDkgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5hd3R1aTsKKworaW1wb3J0IGphdmEuYXd0LkNvbG9yOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NVGFiUnVsZXI7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuTVRleHRQYW5lbDsKKworLyoqCisgKiBNVGFiUnVsZXJDb21wb25lbnQgaXMgaW1wbGVtZW50ZWQgYnkgY29tcG9uZW50cyB3aGljaCBwcm92aWRlIGEgdGFiLXJ1bGVyCisgKiBpbnRlcmZhY2UgZm9yIGludGVyYWN0aW5nIHdpdGggYW4gTVRleHRQYW5lbC4KKyAqIDxwPgorICogVXNlcnMgaW50ZXJhY3Qgd2l0aCBNVGFiUnVsZXJDb21wb25lbnQgaW1wbGVtZW50YXRpb25zIGFzIGZvbGxvd3M6CisgKiA8dWw+CisgKiA8bGk+VGhlIGxlYWRpbmcgbWFyZ2luIGNhbiBiZSBzZXQgYnkgZHJhZ2dpbmcgdGhlIGJvdHRvbSBoYWxmCisgKiBvZiB0aGUgbGVmdG1vc3QgdHJpYW5nbGUuICBUaGUgZmlyc3QtbGluZSBpbmRlbnQgd2lsbCAic3RpY2siIHdpdGgKKyAqIHRoZSBsZWFkaW5nIG1hcmdpbi48L2xpPgorICogPGxpPlRoZSBmaXJzdC1saW5lIGluZGVudCBjYW4gYmUgc2V0IGJ5IGRyYWdnaW5nIHRoZSB0b3AgaGFsZiBvZiB0aGUKKyAqIGxlZnRtb3N0IHRyaWFuZ2xlLiAgVGhlIGZpcnN0LWxpbmUgaW5kZW50IGFwcGxpZXMgdG8gdGhlIGZpcnN0IGxpbmUgb2YKKyAqIGEgcGFyYWdyYXBoLjwvbGk+CisgKiA8bGk+VGhlIHRyYWlsaW5nIG1hcmdpbiBjYW4gYmUgc2V0IGJ5IGRyYWdnaW5nIHRoZSByaWdodG1vc3QgdHJpYW5nbGUuPC9saT4KKyAqIDxsaT5UYWJzIGNhbiBiZSBhZGRlZCB0byB0aGUgcnVsZXIgYnkgY2xpY2tpbmcgdGhlIG1vdXNlIG9uIHRoZSBydWxlciB3aXRoIHRoZQorICogY29udHJvbCBrZXkgcHJlc3NlZC4gIEZvdXIga2luZHMgb2YgdGFicyBhcmUgcHJvdmlkZWQ6ICBsZWFkaW5nLCB0cmFpbGluZywgY2VudGVyLAorICogYW5kIGRlY2ltYWwuICBUaGUgdHlwZSBvZiBhIHRhYiBjYW4gYmUgY2hhbmdlZCBieSBkb3VibGUtY2xpY2tpbmcgdGhlIHRhYi48L2xpPgorICogPGxpPlRhYnMgY2FuIGJlIHJlcG9zaXRpb25lZCBieSBkcmFnZ2luZyB0aGVtIHdpdGggdGhlIG1vdXNlLjwvbGk+CisgKiA8L3VsPgorICogPHA+CisgKiBNVGFiUnVsZXJDb21wb25lbnQncyBhcHBlYXJhbmNlIHdpbGwgcmVmbGVjdCB0aGUgcGFyYWdyYXBoIHN0eWxlcyBpbiB0aGUKKyAqIGZpcnN0IHNlbGVjdGVkIHBhcmFncmFwaC4gIFN0eWxlIGNoYW5nZXMgcGVyZm9ybWVkIHdpdGggYW4gCisgKiBNVGFiUnVsZXJDb21wb25lbnQgd2lsbCBhcHBseSB0byBhbGwgc2VsZWN0ZWQgcGFyYWdyYXBocy4KKyAqLworcHVibGljIGludGVyZmFjZSBNVGFiUnVsZXJDb21wb25lbnQgeworICAgIAorICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisKKyAgICAvKioKKyAgICAgKiBMaXN0ZW4gdG8gdGhlIGdpdmVuIE1UZXh0UGFuZWwgYW5kIHJlZmxlY3QgaXRzIGNoYW5nZXMsCisgICAgICogYW5kIHVwZGF0ZSBpdHMgcGFyYWdyYXBoIHN0eWxlcyB3aGVuIFRhYlJ1bGVyIGlzCisgICAgICogbWFuaXB1bGF0ZWQuCisgICAgICogQHBhcmFtIHRleHRQYW5lbCB0aGUgTVRleHRQYW5lbCB0byBsaXN0ZW4gdG8KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBsaXN0ZW5Ub1RleHRQYW5lbChNVGV4dFBhbmVsIHRleHRQYW5lbCk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGJhY2tncm91bmQgY29sb3Igb2YgdGhpcyBUYWJSdWxlci4KKyAgICAgKiBAcmV0dXJuIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoaXMgVGFiUnVsZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgQ29sb3IgZ2V0QmFja0NvbG9yKCk7CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgdGhpcyBUYWJSdWxlci4KKyAgICAgKiBAcGFyYW0gYmFja0NvbG9yIHRoZSBuZXcgYmFja2dyb3VuZCBjb2xvciBvZiB0aGlzIFRhYlJ1bGVyCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0QmFja0NvbG9yKENvbG9yIGJhY2tDb2xvcik7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIE1UYWJSdWxlciByZXByZXNlbnRlZCBieSB0aGlzIFRhYlJ1bGVyLgorICAgICAqIEByZXR1cm4gdGhlIE1UYWJSdWxlciByZXByZXNlbnRlZCBieSB0aGlzIFRhYlJ1bGVyCisgICAgICovCisgICAgcHVibGljIE1UYWJSdWxlciBnZXRSdWxlcigpOworCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBsZWFkaW5nIG1hcmdpbiBvZiB0aGlzIFRhYlJ1bGVyLgorICAgICAqIEByZXR1cm4gdGhlIGxlYWRpbmcgbWFyZ2luIG9mIHRoaXMgVGFiUnVsZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldExlYWRpbmdNYXJnaW4oKTsKKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgZmlyc3QgbGluZSBpbmRlbnQgb2YgdGhpcyBUYWJSdWxlci4KKyAgICAgKiBAcmV0dXJuIHRoZSBmaXJzdCBsaW5lIGluZGVudCBvZiB0aGlzIFRhYlJ1bGVyCisgICAgICovCisgICAgcHVibGljIGludCBnZXRGaXJzdExpbmVJbmRlbnQoKTsKKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgdHJhaWxpbmcgbWFyZ2luIG9mIHRoaXMgVGFiUnVsZXIuCisgICAgICogQHJldHVybiB0aGUgdHJhaWxpbmcgbWFyZ2luIG9mIHRoaXMgVGFiUnVsZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldFRyYWlsaW5nTWFyZ2luKCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC9hd3R1aS9NZXNzYWdlRGlhbG9nLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC9hd3R1aS9NZXNzYWdlRGlhbG9nLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNDdjOTM4ZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2F3dHVpL01lc3NhZ2VEaWFsb2cuamF2YQpAQCAtMCwwICsxLDY3IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBNZXNzYWdlRGlhbG9nLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NDE6NDkgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5hd3R1aTsKKworaW1wb3J0IGphdmEuYXd0LkNvbG9yOworaW1wb3J0IGphdmEuYXd0LkZyYW1lOworaW1wb3J0IGphdmEuYXd0LkNhcmRMYXlvdXQ7CisKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5XaW5kb3dBZGFwdGVyOworaW1wb3J0IGphdmEuYXd0LmV2ZW50LldpbmRvd0V2ZW50OworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1Db25zdFRleHQ7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5UZXh0UGFuZWw7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuVGV4dFBhbmVsU2V0dGluZ3M7CisKKy8qKgorICogTWVzc2FnZURpYWxvZyBpcyBhIHNpbXBsZSBGcmFtZSB3aGljaCBkaXNwbGF5cyBhIHN0eWxlZAorICogdGV4dCBtZXNzYWdlIGluIGEgVGV4dFBhbmVsLgorICogVGhlIHRleHQgaW4gdGhlIG1lc3NhZ2UgaXMgbm90IHNlbGVjdGFibGUgb3IgZWRpdGFibGUuCisgKiBAc2VlIE1Db25zdFRleHQKKyAqIEBzZWUgVGV4dFBhbmVsCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBNZXNzYWdlRGlhbG9nIGV4dGVuZHMgRnJhbWUgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICAvKioKKyAgICAqIENyZWF0ZSBhIG5ldyBNZXNzYWdlRGlhbG9nLgorICAgICogQHBhcmFtIHRpdGxlIHRoZSBkaWFsb2cncyB0aXRsZQorICAgICogQHBhcmFtIG1lc3NhZ2UgdGhlIHRleHQgd2hpY2ggd2lsbCBhcHBlYXIgaW4gdGhlIGRpYWxvZworICAgICovCisgICAgcHVibGljIE1lc3NhZ2VEaWFsb2coU3RyaW5nIHRpdGxlLCBNQ29uc3RUZXh0IG1lc3NhZ2UpCisgICAgeworICAgICAgICBzdXBlcih0aXRsZSk7CisKKyAgICAgICAgc2V0TGF5b3V0KG5ldyBDYXJkTGF5b3V0KCkpOworICAgICAgICBUZXh0UGFuZWxTZXR0aW5ncyBzZXR0aW5ncyA9IFRleHRQYW5lbC5nZXREZWZhdWx0U2V0dGluZ3MoKTsKKyAgICAgICAgc2V0dGluZ3Muc2V0U2Nyb2xsYWJsZShmYWxzZSk7CisgICAgICAgIHNldHRpbmdzLnNldFNlbGVjdGFibGUoZmFsc2UpOworICAgICAgICBUZXh0UGFuZWwgcGFuZWwgPSBuZXcgVGV4dFBhbmVsKHNldHRpbmdzLCBtZXNzYWdlLCBudWxsKTsKKworICAgICAgICBwYW5lbC5zZXRCYWNrZ3JvdW5kKENvbG9yLmJsYWNrKTsKKyAgICAgICAgYWRkKCJDZW50ZXIiLCBwYW5lbCk7CisKKyAgICAgICAgYWRkV2luZG93TGlzdGVuZXIobmV3IFdpbmRvd0FkYXB0ZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCB3aW5kb3dDbG9zaW5nKFdpbmRvd0V2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICBzZXRWaXNpYmxlKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBkaXNwb3NlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworCisgICAgICAgIHNldFNpemUoNDUwLDMyMCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvYXd0dWkvTnVtYmVyRGlhbG9nLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC9hd3R1aS9OdW1iZXJEaWFsb2cuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mM2M5NzZmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvYXd0dWkvTnVtYmVyRGlhbG9nLmphdmEKQEAgLTAsMCArMSwxNTUgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IE51bWJlckRpYWxvZy5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjQxOjQ5ICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQuYXd0dWk7CisKK2ltcG9ydCBqYXZhLmF3dC5GbG93TGF5b3V0OworaW1wb3J0IGphdmEuYXd0LkRpYWxvZzsKK2ltcG9ydCBqYXZhLmF3dC5UZXh0RmllbGQ7CitpbXBvcnQgamF2YS5hd3QuQnV0dG9uOworaW1wb3J0IGphdmEuYXd0LkZyYW1lOworaW1wb3J0IGphdmEuYXd0LlBhbmVsOworaW1wb3J0IGphdmEuYXd0LkxhYmVsOworCitpbXBvcnQgamF2YS50ZXh0Lk51bWJlckZvcm1hdDsKK2ltcG9ydCBqYXZhLnRleHQuUGFyc2VFeGNlcHRpb247CisKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5BY3Rpb25FdmVudDsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5BY3Rpb25MaXN0ZW5lcjsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5XaW5kb3dFdmVudDsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5XaW5kb3dBZGFwdGVyOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC51aWltcGwucmVzb3VyY2VzLkZyYW1lUmVzb3VyY2VzOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudWlpbXBsLk1lbnVJdGVtU2V0OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudWlpbXBsLlJlc291cmNlVXRpbHM7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuU3R5bGVNb2RpZmllcjsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5NVGV4dFBhbmVsOworCisvKioKKyogU2ltcGxlIGRpYWxvZyB3aGljaCBnZXRzIGEgbnVtYmVyLCBhbmQgc2VuZHMgYW4gYXBwcm9wcmlhdGUgY29tbWFuZAorKi8KK2ZpbmFsIGNsYXNzIE51bWJlckRpYWxvZyBleHRlbmRzIERpYWxvZyBpbXBsZW1lbnRzIEFjdGlvbkxpc3RlbmVyCit7CisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcml2YXRlIE1UZXh0UGFuZWwgZlRleHRQYW5lbDsKKyAgICBwcml2YXRlIFRleHRGaWVsZCBmSW5wdXQgPSBudWxsOworICAgIHByaXZhdGUgQnV0dG9uIGZPS0J1dHRvbiA9IG51bGw7CisgICAgcHJpdmF0ZSBCdXR0b24gZkNhbmNlbEJ1dHRvbiA9IG51bGw7CisgICAgcHJpdmF0ZSBib29sZWFuIGZDaGFyYWN0ZXI7CisgICAgcHJpdmF0ZSBPYmplY3QgZktleTsKKyAgICBwcml2YXRlIGZsb2F0IGZNdWx0aXBsaWVyOyAKKworICAgIC8qKgorICAgICAqIEBwYXJhbSBtdWx0aXBsaWVyIHRoZSBmYWN0b3IgYnkgd2hpY2ggdG8gbXVsdGlwbHkgdGhlIHVzZXIncworICAgICAqICAgICAgICBzZWxlY3Rpb24gYmVmb3JlIGNyZWF0aW5nIHRoZSBhdHRyaWJ1dGUgdmFsdWUuICAgVGhpcworICAgICAqICAgICAgICBpcyB1c2VmdWwgZm9yIHN1YnNjcmlwdGluZy4KKyAgICAgKi8KKyAgICBOdW1iZXJEaWFsb2coRnJhbWUgcGFyZW50LAorICAgICAgICAgICAgICAgICBTdHJpbmcgdGl0bGUsCisgICAgICAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlLAorICAgICAgICAgICAgICAgICBNVGV4dFBhbmVsIHRleHRQYW5lbCwKKyAgICAgICAgICAgICAgICAgT2JqZWN0IGtleSwKKyAgICAgICAgICAgICAgICAgYm9vbGVhbiBjaGFyYWN0ZXIsCisgICAgICAgICAgICAgICAgIGZsb2F0IG11bHRpcGxpZXIpIHsKKworICAgICAgICBzdXBlcihwYXJlbnQsIHRpdGxlLCBmYWxzZSk7CisgICAgICAgIGZUZXh0UGFuZWwgPSB0ZXh0UGFuZWw7CisgICAgICAgIGZLZXkgPSBrZXk7CisgICAgICAgIGZDaGFyYWN0ZXIgPSBjaGFyYWN0ZXI7CisgICAgICAgIGZNdWx0aXBsaWVyID0gbXVsdGlwbGllcjsKKyAgICAgICAgc2V0TGF5b3V0KG5ldyBqYXZhLmF3dC5HcmlkTGF5b3V0KDIsMSkpOworCisgICAgICAgIFBhbmVsIHBhbmVsID0gbmV3IFBhbmVsKCk7CisgICAgICAgIHBhbmVsLnNldExheW91dChuZXcgRmxvd0xheW91dChGbG93TGF5b3V0LkNFTlRFUiwgMTAsIDE1KSk7CisgICAgICAgIGZJbnB1dCA9IG5ldyBUZXh0RmllbGQoNSk7CisgICAgICAgIHBhbmVsLmFkZChuZXcgTGFiZWwobWVzc2FnZSkpOworICAgICAgICBwYW5lbC5hZGQoZklucHV0KTsKKyAgICAgICAgYWRkKCJDZW50ZXIiLCBwYW5lbCk7CisKKyAgICAgICAgZkNhbmNlbEJ1dHRvbiA9IG5ldyBCdXR0b24oUmVzb3VyY2VVdGlscy5nZXRSZXNvdXJjZVN0cmluZyhGcmFtZVJlc291cmNlcy5DQU5DRUwpKTsKKyAgICAgICAgZk9LQnV0dG9uID0gbmV3IEJ1dHRvbihSZXNvdXJjZVV0aWxzLmdldFJlc291cmNlU3RyaW5nKEZyYW1lUmVzb3VyY2VzLk9LKSk7CisgICAgICAgIFBhbmVsIHAgPSBuZXcgUGFuZWwoKTsKKyAgICAgICAgcC5zZXRMYXlvdXQobmV3IEZsb3dMYXlvdXQoRmxvd0xheW91dC5DRU5URVIsIDUsIDUpKTsKKyAgICAgICAgcC5hZGQoZkNhbmNlbEJ1dHRvbik7CisgICAgICAgIHAuYWRkKGZPS0J1dHRvbik7CisgICAgICAgIGFkZCgiU291dGgiLCBwKTsKKworICAgICAgICBwYWNrKCk7CisKKyAgICAgICAgYWRkV2luZG93TGlzdGVuZXIobmV3IFdpbmRvd0FkYXB0ZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCB3aW5kb3dDbG9zaW5nKFdpbmRvd0V2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICBjbG9zZVdpbmRvdyhmYWxzZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgICAKKyAgICAgICAgZk9LQnV0dG9uLmFkZEFjdGlvbkxpc3RlbmVyKHRoaXMpOworICAgICAgICBmQ2FuY2VsQnV0dG9uLmFkZEFjdGlvbkxpc3RlbmVyKHRoaXMpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBjbG9zZVdpbmRvdyhib29sZWFuIHNlbmRBY3Rpb24pIHsKKworICAgICAgICBzZXRWaXNpYmxlKGZhbHNlKTsKKworICAgICAgICBpbnQgbnVtID0gMDsKKyAgICAgICAgaWYgKHNlbmRBY3Rpb24pIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHRleHQgPSBmSW5wdXQuZ2V0VGV4dCgpOworICAgICAgICAgICAgICAgIG51bSA9IE51bWJlckZvcm1hdC5nZXRJbnN0YW5jZSgpLnBhcnNlKHRleHQpLmludFZhbHVlKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXRjaCAoUGFyc2VFeGNlcHRpb24gZXhjZXB0aW9uKSB7CisgICAgICAgICAgICAgICAgc2VuZEFjdGlvbiA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKHNlbmRBY3Rpb24pIHsKKyAgICAgICAgICAgIHNlbmRBY3Rpb24obnVtKTsKKyAgICAgICAgfQorCisgICAgICAgIGRpc3Bvc2UoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBhY3Rpb25QZXJmb3JtZWQoQWN0aW9uRXZlbnQgZSkgeworCisgICAgICAgIE9iamVjdCBzb3VyY2UgPSBlLmdldFNvdXJjZSgpOworCisgICAgICAgIGlmIChzb3VyY2UgPT0gZk9LQnV0dG9uKSB7CisgICAgICAgICAgICBjbG9zZVdpbmRvdyh0cnVlKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChzb3VyY2UgPT0gZkNhbmNlbEJ1dHRvbikgeworICAgICAgICAgICAgY2xvc2VXaW5kb3coZmFsc2UpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBBY3Rpb25FdmVudCEiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICogSGFuZGxlIHRoZSB1c2VyIGlucHV0CisgICAgKiBAcGFyYW0gdGhlIG51bWJlciB0aGUgdXNlciB0eXBlZCBpbgorICAgICovCisgICAgcHJpdmF0ZSB2b2lkIHNlbmRBY3Rpb24oaW50IG51bWJlcikgeworICAgICAgICBmbG9hdCBudW0gPSBudW1iZXIgKiBmTXVsdGlwbGllcjsKKyAgICAgICAgU3R5bGVNb2RpZmllciBtb2RpZmllciA9IFN0eWxlTW9kaWZpZXIuY3JlYXRlQWRkTW9kaWZpZXIoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmS2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEZsb2F0KG51bSkpOworICAgICAgICBpZiAoZkNoYXJhY3RlciA9PSBNZW51SXRlbVNldC5DSEFSQUNURVIpIHsKKyAgICAgICAgICAgIGZUZXh0UGFuZWwubW9kaWZ5Q2hhcmFjdGVyU3R5bGVPblNlbGVjdGlvbihtb2RpZmllcik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBmVGV4dFBhbmVsLm1vZGlmeVBhcmFncmFwaFN0eWxlT25TZWxlY3Rpb24obW9kaWZpZXIpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvYXd0dWkvT2JqZWN0RGlhbG9nLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC9hd3R1aS9PYmplY3REaWFsb2cuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5kZTg2NjIzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvYXd0dWkvT2JqZWN0RGlhbG9nLmphdmEKQEAgLTAsMCArMSwxNzAgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IE9iamVjdERpYWxvZy5qYXZhLHYgJCAkUmV2aXNpb246IDEuMiAkICREYXRlOiAyMDAyLzAyLzE2IDAzOjA2OjMyICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQuYXd0dWk7CisKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlTWFwOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZVNldDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuU3R5bGVNb2RpZmllcjsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5NVGV4dFBhbmVsOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudWlpbXBsLk1lbnVJdGVtU2V0OworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC51aWltcGwucmVzb3VyY2VzLkZyYW1lUmVzb3VyY2VzOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudWlpbXBsLlJlc291cmNlVXRpbHM7CisKK2ltcG9ydCBqYXZhLmF3dC5EaWFsb2c7CitpbXBvcnQgamF2YS5hd3QuRnJhbWU7CitpbXBvcnQgamF2YS5hd3QuQnV0dG9uOworaW1wb3J0IGphdmEuYXd0LkNob2ljZTsKK2ltcG9ydCBqYXZhLmF3dC5MYWJlbDsKK2ltcG9ydCBqYXZhLmF3dC5Cb3JkZXJMYXlvdXQ7CitpbXBvcnQgamF2YS5hd3QuRmxvd0xheW91dDsKK2ltcG9ydCBqYXZhLmF3dC5QYW5lbDsKK2ltcG9ydCBqYXZhLmF3dC5HcmlkTGF5b3V0OworCitpbXBvcnQgamF2YS5hd3QuZXZlbnQuQWN0aW9uRXZlbnQ7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuQWN0aW9uTGlzdGVuZXI7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuV2luZG93RXZlbnQ7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuV2luZG93QWRhcHRlcjsKKworLyoqCisqIFNpbXBsZSBkaWFsb2cgd2hpY2ggZ2V0cyBhIGNvbG9yCisqLworZmluYWwgY2xhc3MgT2JqZWN0RGlhbG9nIGV4dGVuZHMgRGlhbG9nIGltcGxlbWVudHMgQWN0aW9uTGlzdGVuZXIKK3sKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworCisgICAgcHJpdmF0ZSBmaW5hbCBNVGV4dFBhbmVsIGZUZXh0UGFuZWw7CisgICAgcHJpdmF0ZSBmaW5hbCBPYmplY3QgZktleTsKKyAgICBwcml2YXRlIGJvb2xlYW4gZkNoYXJhY3RlcjsKKworICAgIHByaXZhdGUgZmluYWwgQnV0dG9uIGZPS0J1dHRvbjsKKyAgICBwcml2YXRlIGZpbmFsIEJ1dHRvbiBmQ2FuY2VsQnV0dG9uOworICAgIHByaXZhdGUgZmluYWwgQ2hvaWNlIGZJdGVtczsKKyAgICBwcml2YXRlIGZpbmFsIEhhc2h0YWJsZSBmTmFtZVRvVmFsdWVNYXA7CisgICAgLyoqCisgICAgKiBDb25zdHJ1Y3QgYSBuZXcgQ29sb3JEaWFsb2cuCisgICAgKiBAcGFyYW0gcGFyZW50IHRoZSBkaWFsb2cncyBwYXJlbnQgZnJhbWUKKyAgICAqIEBwYXJhbSB0aXRsZSB0aGUgZGlhbG9ncyB0aXRsZQorICAgICogQHBhcmFtIG1lc3NhZ2UgdGhlIG1lc3NhZ2UgZGlzcGxheWVkIG5leHQgdG8gdGhlIGlucHV0IGJveAorICAgICovCisgICAgT2JqZWN0RGlhbG9nKEZyYW1lIHBhcmVudCwgCisgICAgICAgICAgICAgICAgIFN0cmluZyB0aXRsZSwgCisgICAgICAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlLCAKKyAgICAgICAgICAgICAgICAgTVRleHRQYW5lbCB0ZXh0UGFuZWwsCisgICAgICAgICAgICAgICAgIE9iamVjdCBrZXksCisgICAgICAgICAgICAgICAgIGJvb2xlYW4gY2hhcmFjdGVyLAorICAgICAgICAgICAgICAgICBTdHJpbmdbXSBuYW1lcywKKyAgICAgICAgICAgICAgICAgT2JqZWN0W10gdmFsdWVzKSB7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBzdXBlcihwYXJlbnQsIHRpdGxlLCBmYWxzZSk7CisgICAgICAgIGZUZXh0UGFuZWwgPSB0ZXh0UGFuZWw7CisgICAgICAgIGZLZXkgPSBrZXk7CisgICAgICAgIGZDaGFyYWN0ZXIgPSBjaGFyYWN0ZXI7CisgICAgICAgIAorICAgICAgICBzZXRMYXlvdXQobmV3IEdyaWRMYXlvdXQoMiwgMSkpOworCisgICAgICAgIFBhbmVsIHBhbmVsID0gbmV3IFBhbmVsKCk7CisgICAgICAgIHBhbmVsLnNldExheW91dChuZXcgRmxvd0xheW91dChGbG93TGF5b3V0LkNFTlRFUiwgMTAsIDEwKSk7CisgICAgICAgIGZJdGVtcyA9IG5ldyBDaG9pY2UoKTsKKworICAgICAgICBpZiAobmFtZXMubGVuZ3RoICE9IHZhbHVlcy5sZW5ndGgpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIk11c3QgaGF2ZSBzYW1lIG51bWJlciBvZiBuYW1lcyBhbmQgdmFsdWVzLiIpOworICAgICAgICB9CisKKyAgICAgICAgZk5hbWVUb1ZhbHVlTWFwID0gbmV3IEhhc2h0YWJsZShuYW1lcy5sZW5ndGgpOworICAgICAgICAKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGZJdGVtcy5hZGQobmFtZXNbaV0pOworICAgICAgICAgICAgaWYgKHZhbHVlc1tpXSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgZk5hbWVUb1ZhbHVlTWFwLnB1dChuYW1lc1tpXSwgdmFsdWVzW2ldKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHBhbmVsLmFkZChuZXcgTGFiZWwobWVzc2FnZSkpOyAgICAgICAgCisgICAgICAgIHBhbmVsLmFkZChmSXRlbXMpOworICAgICAgICAKKyAgICAgICAgYWRkKCJOb3J0aCIsIHBhbmVsKTsKKworICAgICAgICBmQ2FuY2VsQnV0dG9uID0gbmV3IEJ1dHRvbihSZXNvdXJjZVV0aWxzLmdldFJlc291cmNlU3RyaW5nKEZyYW1lUmVzb3VyY2VzLkNBTkNFTCkpOworICAgICAgICBmT0tCdXR0b24gPSBuZXcgQnV0dG9uKFJlc291cmNlVXRpbHMuZ2V0UmVzb3VyY2VTdHJpbmcoRnJhbWVSZXNvdXJjZXMuT0spKTsKKyAgICAgICAgUGFuZWwgcCA9IG5ldyBQYW5lbCgpOworICAgICAgICBwLnNldExheW91dChuZXcgRmxvd0xheW91dChGbG93TGF5b3V0LkNFTlRFUiwgNSwgNSkpOworICAgICAgICBwLmFkZChmQ2FuY2VsQnV0dG9uKTsKKyAgICAgICAgcC5hZGQoZk9LQnV0dG9uKTsKKyAgICAgICAgYWRkKCJTb3V0aCIsIHApOworCisgICAgICAgIHBhY2soKTsKKworICAgICAgICBhZGRXaW5kb3dMaXN0ZW5lcihuZXcgV2luZG93QWRhcHRlcigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHdpbmRvd0Nsb3NpbmcoV2luZG93RXZlbnQgZSkgeworICAgICAgICAgICAgICAgIGNsb3NlV2luZG93KGZhbHNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgICAgIAorICAgICAgICBmT0tCdXR0b24uYWRkQWN0aW9uTGlzdGVuZXIodGhpcyk7CisgICAgICAgIGZDYW5jZWxCdXR0b24uYWRkQWN0aW9uTGlzdGVuZXIodGhpcyk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGNsb3NlV2luZG93KGJvb2xlYW4gc2VuZEFjdGlvbikgeworCisgICAgICAgIHNldFZpc2libGUoZmFsc2UpOworICAgICAgICBpZiAoc2VuZEFjdGlvbikgeworICAgICAgICAgICAgT2JqZWN0IHZhbHVlID0gZk5hbWVUb1ZhbHVlTWFwLmdldChmSXRlbXMuZ2V0U2VsZWN0ZWRJdGVtKCkpOworICAgICAgICAgICAgc2VuZEFjdGlvbih2YWx1ZSk7CisgICAgICAgIH0KKyAgICAgICAgZGlzcG9zZSgpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGFjdGlvblBlcmZvcm1lZChBY3Rpb25FdmVudCBlKSB7CisKKyAgICAgICAgT2JqZWN0IHNvdXJjZSA9IGUuZ2V0U291cmNlKCk7CisKKyAgICAgICAgaWYgKHNvdXJjZSA9PSBmT0tCdXR0b24pIHsKKyAgICAgICAgICAgIGNsb3NlV2luZG93KHRydWUpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHNvdXJjZSA9PSBmQ2FuY2VsQnV0dG9uKSB7CisgICAgICAgICAgICBjbG9zZVdpbmRvdyhmYWxzZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIEFjdGlvbkV2ZW50ISIpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgKiBIYW5kbGUgdGhlIHVzZXIgaW5wdXQKKyAgICAqIEBwYXJhbSBvYmogdGhlIHZhbHVlIG9iamVjdAorICAgICovCisgICAgcHJpdmF0ZSB2b2lkIHNlbmRBY3Rpb24oT2JqZWN0IHZhbHVlKSB7CisKKyAgICAgICAgU3R5bGVNb2RpZmllciBtb2RpZmllcjsKKyAgICAgICAgaWYgKHZhbHVlICE9IG51bGwpIHsKKyAgICAgICAgICAgIG1vZGlmaWVyID0gU3R5bGVNb2RpZmllci5jcmVhdGVBZGRNb2RpZmllcihmS2V5LCB2YWx1ZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBBdHRyaWJ1dGVTZXQgc2V0ID0gbmV3IEF0dHJpYnV0ZVNldChmS2V5KTsKKyAgICAgICAgICAgIG1vZGlmaWVyID0gU3R5bGVNb2RpZmllci5jcmVhdGVSZW1vdmVNb2RpZmllcihzZXQpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoZkNoYXJhY3RlciA9PSBNZW51SXRlbVNldC5DSEFSQUNURVIpIHsKKyAgICAgICAgICAgIGZUZXh0UGFuZWwubW9kaWZ5Q2hhcmFjdGVyU3R5bGVPblNlbGVjdGlvbihtb2RpZmllcik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBmVGV4dFBhbmVsLm1vZGlmeVBhcmFncmFwaFN0eWxlT25TZWxlY3Rpb24obW9kaWZpZXIpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvYXd0dWkvVGFiUnVsZXIuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2F3dHVpL1RhYlJ1bGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNDQ4MjVkNWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC9hd3R1aS9UYWJSdWxlci5qYXZhCkBAIC0wLDAgKzEsMTMxIEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBUYWJSdWxlci5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjQxOjQ5ICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQuYXd0dWk7CisKK2ltcG9ydCBqYXZhLmF3dC5Db2xvcjsKK2ltcG9ydCBqYXZhLmF3dC5Db21wb25lbnQ7CitpbXBvcnQgamF2YS5hd3QuRGltZW5zaW9uOworaW1wb3J0IGphdmEuYXd0LkdyYXBoaWNzOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuTVRleHRQYW5lbDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbC5UYWJSdWxlckltcGw7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1UYWJSdWxlcjsKKworLyoqCisgKiBUYWJSdWxlciBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBNVGFiUnVsZXJDb21wb25lbnQgaW4gYW4gQVdUIGNvbXBvbmVudC4KKyAqLworcHVibGljIGZpbmFsIGNsYXNzIFRhYlJ1bGVyIGV4dGVuZHMgQ29tcG9uZW50IGltcGxlbWVudHMgTVRhYlJ1bGVyQ29tcG9uZW50IHsKKyAgICAKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHByaXZhdGUgVGFiUnVsZXJJbXBsIGZJbXBsOworICAgIAorICAgIC8qKgorICAgICAqIENyZWF0ZSBhIG5ldyBUYWJSdWxlci4KKyAgICAgKiBAcGFyYW0gYmFzZWxpbmUgdGhlIHktY29vcmRpbmF0ZSBvZiB0aGUgcnVsZXIncyBiYXNlbGluZQorICAgICAqIEBwYXJhbSBvcmlnaW4gdGhlIHgtY29vcmRpbmF0ZSBpbiB0aGlzIENvbXBvbmVudCB3aGVyZQorICAgICAqICAgICB0aGUgbGVmdCBtYXJnaW4gYXBwZWFycworICAgICAqIEBwYXJhbSB0ZXh0UGFuZWwgdGhlIE1UZXh0UGFuZWwgdG8gbGlzdGVuIHRvLiAgVGhpcyBUYWJSdWxlcgorICAgICAqICAgICB3aWxsIHJlZmxlY3QgdGhlIE1UZXh0UGFuZWwncyBwYXJhZ3JhcGggc3R5bGVzLCBhbmQgdXBkYXRlCisgICAgICogICAgIHRoZSBwYXJhZ3JhcGggc3R5bGVzIHdoZW4gbWFuaXB1bGF0ZWQuCisgICAgICovCisgICAgcHVibGljIFRhYlJ1bGVyKGludCBiYXNlbGluZSwgaW50IG9yaWdpbiwgTVRleHRQYW5lbCB0ZXh0UGFuZWwpIHsKKyAgICAgICAgCisgICAgICAgIGZJbXBsID0gbmV3IFRhYlJ1bGVySW1wbChiYXNlbGluZSwgb3JpZ2luLCB0ZXh0UGFuZWwsIHRoaXMpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBMaXN0ZW4gdG8gdGhlIGdpdmVuIE1UZXh0UGFuZWwgYW5kIHJlZmxlY3QgaXRzIGNoYW5nZXMsCisgICAgICogYW5kIHVwZGF0ZSBpdHMgcGFyYWdyYXBoIHN0eWxlcyB3aGVuIFRhYlJ1bGVyIGlzCisgICAgICogbWFuaXB1bGF0ZWQuCisgICAgICogQHBhcmFtIHRleHRQYW5lbCB0aGUgTVRleHRQYW5lbCB0byBsaXN0ZW4gdG8KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBsaXN0ZW5Ub1RleHRQYW5lbChNVGV4dFBhbmVsIHRleHRQYW5lbCkgeworCisgICAgICAgIGZJbXBsLmxpc3RlblRvVGV4dFBhbmVsKHRleHRQYW5lbCk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiB0aGlzIFRhYlJ1bGVyLgorICAgICAqIEByZXR1cm4gdGhlIGJhY2tncm91bmQgY29sb3Igb2YgdGhpcyBUYWJSdWxlcgorICAgICAqLworICAgIHB1YmxpYyBDb2xvciBnZXRCYWNrQ29sb3IoKSB7CisKKyAgICAgICAgcmV0dXJuIGZJbXBsLmdldEJhY2tDb2xvcigpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgdGhpcyBUYWJSdWxlci4KKyAgICAgKiBAcGFyYW0gYmFja0NvbG9yIHRoZSBuZXcgYmFja2dyb3VuZCBjb2xvciBvZiB0aGlzIFRhYlJ1bGVyCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0QmFja0NvbG9yKENvbG9yIGJhY2tDb2xvcikgeworCisgICAgICAgIGZJbXBsLnNldEJhY2tDb2xvcihiYWNrQ29sb3IpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIE1UYWJSdWxlciByZXByZXNlbnRlZCBieSB0aGlzIFRhYlJ1bGVyLgorICAgICAqIEByZXR1cm4gdGhlIE1UYWJSdWxlciByZXByZXNlbnRlZCBieSB0aGlzIFRhYlJ1bGVyCisgICAgICovCisgICAgcHVibGljIE1UYWJSdWxlciBnZXRSdWxlcigpIHsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBmSW1wbC5nZXRSdWxlcigpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgbGVhZGluZyBtYXJnaW4gb2YgdGhpcyBUYWJSdWxlci4KKyAgICAgKiBAcmV0dXJuIHRoZSBsZWFkaW5nIG1hcmdpbiBvZiB0aGlzIFRhYlJ1bGVyCisgICAgICovCisgICAgcHVibGljIGludCBnZXRMZWFkaW5nTWFyZ2luKCkgeworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZJbXBsLmdldExlYWRpbmdNYXJnaW4oKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGZpcnN0IGxpbmUgaW5kZW50IG9mIHRoaXMgVGFiUnVsZXIuCisgICAgICogQHJldHVybiB0aGUgZmlyc3QgbGluZSBpbmRlbnQgb2YgdGhpcyBUYWJSdWxlcgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0Rmlyc3RMaW5lSW5kZW50KCkgeworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZJbXBsLmdldEZpcnN0TGluZUluZGVudCgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgdHJhaWxpbmcgbWFyZ2luIG9mIHRoaXMgVGFiUnVsZXIuCisgICAgICogQHJldHVybiB0aGUgdHJhaWxpbmcgbWFyZ2luIG9mIHRoaXMgVGFiUnVsZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgaW50IGdldFRyYWlsaW5nTWFyZ2luKCkgeworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZJbXBsLmdldFRyYWlsaW5nTWFyZ2luKCk7CisgICAgfQorICAgIAorICAgIC8vIFRoZSBmb2xsb3dpbmcgYXJlIENvbXBvbmVudCBtZXRob2RzIHdoaWNoIG5lZWQgdG8gYmUgZGVsZWdhdGVkIHRvCisgICAgLy8gdGhlIGltcGxlbWVudGF0aW9uOgorICAgIAorICAgIHB1YmxpYyB2b2lkIHBhaW50KEdyYXBoaWNzIGcpIHsKKyAgICAgICAgCisgICAgICAgIGZJbXBsLnBhaW50KGcpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgRGltZW5zaW9uIGdldFByZWZlcnJlZFNpemUoKSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gZkltcGwuZ2V0UHJlZmVycmVkU2l6ZSgpOworICAgIH0KKworICAgIHB1YmxpYyBEaW1lbnNpb24gZ2V0TWluaW11bVNpemUoKSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gZkltcGwuZ2V0TWluaW11bVNpemUoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC9hd3R1aS9UZXh0RnJhbWUuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2F3dHVpL1RleHRGcmFtZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjIzOTZmZDgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC9hd3R1aS9UZXh0RnJhbWUuamF2YQpAQCAtMCwwICsxLDEyOCBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogVGV4dEZyYW1lLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NDE6NDkgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5hd3R1aTsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLk1UZXh0UGFuZWw7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuVGV4dFBhbmVsOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NQ29uc3RUZXh0OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5TdHlsZU1vZGlmaWVyOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC51aWltcGwuUmVzb3VyY2VVdGlsczsKKworaW1wb3J0IGphdmEuYXd0LkJvcmRlckxheW91dDsKK2ltcG9ydCBqYXZhLmF3dC5GcmFtZTsKK2ltcG9ydCBqYXZhLmF3dC5NZW51OworaW1wb3J0IGphdmEuYXd0Lk1lbnVCYXI7CitpbXBvcnQgamF2YS5hd3QuVG9vbGtpdDsKKworaW1wb3J0IGphdmEuYXd0LmRhdGF0cmFuc2Zlci5DbGlwYm9hcmQ7CisKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5XaW5kb3dBZGFwdGVyOworaW1wb3J0IGphdmEuYXd0LmV2ZW50LldpbmRvd0V2ZW50OworCisvKioKKyAqIFRleHRGcmFtZSBpcyBhIEZyYW1lIGNvbnRhaW5pbmcgYW4gZWRpdGFibGUgVGV4dFBhbmVsLCBhIHNldCBvZiBzdGFuZGFyZAorICogbWVudXMsIGFuZCBhIFRhYlJ1bGVyLiAgVGhpcyBjbGFzcyBjYW4gYmUgdXNlZCBhcy1pcywgYnV0IGlzCisgKiBwcmltYXJpbHkgaW50ZW5kZWQgdG8gYmUgYSBzaW1wbGUgZXhhbXBsZSBvZiBob3cgdG8gdXNlIHRoZSBvdGhlciBjbGFzc2VzCisgKiBpbiB0aGlzIHBhY2thZ2UuCisgKiBAc2VlIGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLlRleHRQYW5lbAorICogQHNlZSBBd3RNZW51QnVpbGRlcgorICogQHNlZSBUYWJSdWxlcgorICovCitwdWJsaWMgZmluYWwgY2xhc3MgVGV4dEZyYW1lIGV4dGVuZHMgRnJhbWUgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcml2YXRlIFRleHRQYW5lbCBmVGV4dFBhbmVsOworCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgbmV3IFRleHRGcmFtZSB3aXRoIG5vIHRleHQgYW5kIG5vIHRpdGxlLgorICAgICAqLworICAgIHB1YmxpYyBUZXh0RnJhbWUoKSB7CisgICAgICAgIAorICAgICAgICBzdXBlcigpOworICAgICAgICBpbml0KG51bGwsIFRvb2xraXQuZ2V0RGVmYXVsdFRvb2xraXQoKS5nZXRTeXN0ZW1DbGlwYm9hcmQoKSk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIENyZWF0ZSBhIG5ldyBUZXh0RnJhbWUgd2l0aCBubyB0ZXh0IGFuZCB0aGUgZ2l2ZW4gdGl0bGUuCisgICAgICogQHBhcmFtIHRpdGxlIHRoZSB0aXRsZSBvZiB0aGlzIEZyYW1lCisgICAgICovCisgICAgcHVibGljIFRleHRGcmFtZShTdHJpbmcgdGl0bGUpIHsKKyAgICAgICAgCisgICAgICAgIHN1cGVyKHRpdGxlKTsKKyAgICAgICAgaW5pdChudWxsLCBUb29sa2l0LmdldERlZmF1bHRUb29sa2l0KCkuZ2V0U3lzdGVtQ2xpcGJvYXJkKCkpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSBuZXcgVGV4dEZyYW1lIHdpdGggdGhlIGdpdmVuIHRleHQgYW5kIHRpdGxlLCB3aG9zZQorICAgICAqIFRleHRQYW5lbCB3aWxsIHVzZSB0aGUgZ2l2ZW4gY2xpcGJvYXJkLgorICAgICAqIEBwYXJhbSB0ZXh0IHRoZSBpbml0aWFsIHRleHQgaW4gdGhlIFRleHRQYW5lbC4gIElmIG51bGwgdGhlCisgICAgICogICAgICBUZXh0UGFuZWwgd2lsbCBpbml0aWFsbHkgYmUgZW1wdHkKKyAgICAgKiBAcGFyYW0gdGl0bGUgdGhlIHRpdGxlIG9mIHRoaXMgRnJhbWUKKyAgICAgKiBAcGFyYW0gY2xpcGJvYXJkIHRoZSBDbGlwYm9hcmQgd2hpY2ggdGhlIFRleHRQYW5lbCB3aWxsIHVzZS4KKyAgICAgKiAgICAgIElmIG51bGwgdGhlIFRleHRQYW5lbCB3aWxsIHVzZSBhIHByaXZhdGUgQ2xpcGJvYXJkCisgICAgICovCisgICAgcHVibGljIFRleHRGcmFtZShNQ29uc3RUZXh0IHRleHQsCisgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgdGl0bGUsCisgICAgICAgICAgICAgICAgICAgICBDbGlwYm9hcmQgY2xpcGJvYXJkKSB7CisKKyAgICAgICAgc3VwZXIodGl0bGUpOworICAgICAgICBpbml0KHRleHQsIGNsaXBib2FyZCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGluaXQoTUNvbnN0VGV4dCB0ZXh0LCBDbGlwYm9hcmQgY2xpcGJvYXJkKSB7CisgICAgICAgIAorICAgICAgICBmVGV4dFBhbmVsID0gbmV3IFRleHRQYW5lbCh0ZXh0LCBjbGlwYm9hcmQpOworCisgICAgICAgIFRhYlJ1bGVyIHRhYlJ1bGVyID0gbmV3IFRhYlJ1bGVyKDE0LCAxMCwgZlRleHRQYW5lbCk7CisKKyAgICAgICAgY3JlYXRlTWVudXMoKTsKKworICAgICAgICBzZXRMYXlvdXQobmV3IEJvcmRlckxheW91dCgpKTsKKyAgICAgICAgYWRkKGZUZXh0UGFuZWwsICJDZW50ZXIiKTsKKyAgICAgICAgYWRkKHRhYlJ1bGVyLCAiTm9ydGgiKTsKKyAgICAgICAgcGFjaygpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBjcmVhdGVNZW51cygpIHsKKworICAgICAgICBNZW51QmFyIG1lbnVCYXIgPSBuZXcgTWVudUJhcigpOworCisgICAgICAgIEF3dE1lbnVCdWlsZGVyLmdldEluc3RhbmNlKCkuY3JlYXRlTWVudXMobWVudUJhciwgZlRleHRQYW5lbCwgdGhpcyk7CisKKyAgICAgICAgc2V0TWVudUJhcihtZW51QmFyKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIE1UZXh0UGFuZWwgaW4gdGhpcyBmcmFtZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgTVRleHRQYW5lbCBnZXRUZXh0UGFuZWwoKSB7CisKKyAgICAgICAgcmV0dXJuIGZUZXh0UGFuZWw7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgCisgICAgICAgIFRleHRGcmFtZSBmcmFtZSA9IG5ldyBUZXh0RnJhbWUoKTsKKyAgICAgICAgZnJhbWUuYWRkV2luZG93TGlzdGVuZXIobmV3IFdpbmRvd0FkYXB0ZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCB3aW5kb3dDbG9zaW5nKFdpbmRvd0V2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0uZXhpdCgwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgICAgIGZyYW1lLnNldFNpemUoNTUwLCA3MDApOworICAgICAgICBmcmFtZS5zaG93KCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2F3dHVpL3BhY2thZ2UuaHRtbCBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2F3dHVpL3BhY2thZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5kYmU2NDE3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvYXd0dWkvcGFja2FnZS5odG1sCkBAIC0wLDAgKzEsMTkgQEAKKzwhLS0KKy8qKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMC0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9yaWNodGV4dC9hd3R1aS9wYWNrYWdlLmh0bWwsdiAkCisgKiAkRGF0ZTogMjAwMi8xMi8xOCAwMzo1Njo0MSAkCisgKiAkUmV2aXNpb246IDEuMiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworLS0+Cis8aHRtbD4KKzxib2R5IGJnY29sb3I9IndoaXRlIj4KK1Byb3ZpZGVzIGNsYXNzZXMgZm9yIGJ1aWxkaW5nIGFuIEFXVC1iYXNlZCB1c2VyIGludGVyZmFjZSBmb3IgYSBUZXh0UGFuZWwuCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC9kZW1vL0F3dERvY3VtZW50V2luZG93LmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC9kZW1vL0F3dERvY3VtZW50V2luZG93LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYWIwNDAwZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2RlbW8vQXd0RG9jdW1lbnRXaW5kb3cuamF2YQpAQCAtMCwwICsxLDM2NSBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogQXd0RG9jdW1lbnRXaW5kb3cuamF2YSx2ICQgJFJldmlzaW9uOiAxLjIgJCAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNjozMyAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LmRlbW87CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LmF3dHVpLlRhYlJ1bGVyOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuVGV4dFBhbmVsOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLlRleHRQYW5lbExpc3RlbmVyOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLlRleHRQYW5lbFNldHRpbmdzOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1Db25zdFRleHQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0LlN0eWxlZFRleHQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0LlN0eWxlTW9kaWZpZXI7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRsYXlvdXQuYXR0cmlidXRlcy5BdHRyaWJ1dGVNYXA7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LmF3dHVpLkF3dE1lbnVCdWlsZGVyOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5wcmludC5QcmludGluZ1V0aWxzOworCitpbXBvcnQgamF2YS5hd3QuQm9yZGVyTGF5b3V0OworaW1wb3J0IGphdmEuYXd0LkJ1dHRvbjsKK2ltcG9ydCBqYXZhLmF3dC5EaWFsb2c7CitpbXBvcnQgamF2YS5hd3QuRmlsZURpYWxvZzsKK2ltcG9ydCBqYXZhLmF3dC5HcmlkTGF5b3V0OworaW1wb3J0IGphdmEuYXd0LkZyYW1lOworaW1wb3J0IGphdmEuYXd0Lk1lbnU7CitpbXBvcnQgamF2YS5hd3QuTWVudUJhcjsKK2ltcG9ydCBqYXZhLmF3dC5MYWJlbDsKK2ltcG9ydCBqYXZhLmF3dC5QYW5lbDsKKworaW1wb3J0IGphdmEuYXd0LmV2ZW50LkFjdGlvbkV2ZW50OworaW1wb3J0IGphdmEuYXd0LmV2ZW50LkFjdGlvbkxpc3RlbmVyOworaW1wb3J0IGphdmEuYXd0LmV2ZW50LldpbmRvd0FkYXB0ZXI7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuV2luZG93RXZlbnQ7CisKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CisKK2ltcG9ydCBqYXZhLnRleHQuTWVzc2FnZUZvcm1hdDsKKworLyoqCisgKiBBd3REb2N1bWVudFdpbmRvdyBpcyBhIEZyYW1lIGNvbnRhaW5pbmcgYSBUZXh0UGFuZWwsIHdpdGggYSBkb2N1bWVudAorICogZm9yIHN0b3JpbmcgdGhlIHRleHQgaW4gdGhlIFRleHRQYW5lbC4KKyAqLworcHVibGljIGZpbmFsIGNsYXNzIEF3dERvY3VtZW50V2luZG93IGV4dGVuZHMgRnJhbWUgaW1wbGVtZW50cyBEb2N1bWVudFdpbmRvdyB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworCisgICAgcHJpdmF0ZSBUZXh0UGFuZWwgZlRleHRQYW5lbDsKKyAgICBwcml2YXRlIEVkaXRBcHBsaWNhdGlvbiBmQXBwbGljYXRpb247CisgICAgcHJpdmF0ZSBUZXh0RG9jdW1lbnQgZkRvY3VtZW50OworCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgbmV3IEF3dERvY3VtZW50V2luZG93LgorICAgICAqIEBwYXJhbSBhcHBsaWNhdGlvbiB0aGUgYXBwbGljYXRpb24gdGhhdCBvd25zIHRoaXMgZG9jdW1lbnQKKyAgICAgKiBAcGFyYW0gY2xpcGJvYXJkIHRoZSBjbGlwYm9hcmQgdG8gdXNlCisgICAgICogQHBhcmFtIGRvY3VtZW50IHRoZSBkb2N1bWVudCB0byBzaG93IGluIHRoaXMgQXd0RG9jdW1lbnRXaW5kb3cKKyAgICAgKi8KKyAgICBBd3REb2N1bWVudFdpbmRvdyhFZGl0QXBwbGljYXRpb24gYXBwbGljYXRpb24sCisgICAgICAgICAgICAgICAgICAgVGV4dERvY3VtZW50IGRvY3VtZW50LAorICAgICAgICAgICAgICAgICAgIFRleHRQYW5lbFNldHRpbmdzIHRleHRQYW5lbFNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gdXNlVGFiUnVsZXIsCisgICAgICAgICAgICAgICAgICAgVGV4dFBhbmVsTGlzdGVuZXIgbGlzdGVuZXIsCisgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBzdXBwb3J0U3R5bGVkVGV4dCwKKyAgICAgICAgICAgICAgICAgICBib29sZWFuIHN1cHBvcnRQbGFpblRleHQsCisgICAgICAgICAgICAgICAgICAgaW50W10gbWVudXMpIHsKKworICAgICAgICBmQXBwbGljYXRpb24gPSBhcHBsaWNhdGlvbjsKKyAgICAgICAgCisgICAgICAgIGZUZXh0UGFuZWwgPSBuZXcgVGV4dFBhbmVsKHRleHRQYW5lbFNldHRpbmdzLCBudWxsLCBhcHBsaWNhdGlvbi5nZXRDbGlwYm9hcmQoKSk7CisgICAgICAgIGlmIChsaXN0ZW5lciAhPSBudWxsKSB7CisgICAgICAgICAgICBmVGV4dFBhbmVsLmFkZExpc3RlbmVyKGxpc3RlbmVyKTsKKyAgICAgICAgfQorICAgICAgICBzZXREb2N1bWVudChkb2N1bWVudCk7CisKKyAgICAgICAgYWRkTWVudUJhcihzdXBwb3J0U3R5bGVkVGV4dCwgc3VwcG9ydFBsYWluVGV4dCwgbWVudXMpOworCisgICAgICAgIHNldExheW91dChuZXcgQm9yZGVyTGF5b3V0KCkpOworCisgICAgICAgIGlmICh1c2VUYWJSdWxlcikgeworICAgICAgICAgICAgVGFiUnVsZXIgdGFiUnVsZXIgPSBuZXcgVGFiUnVsZXIoMTQsIDEwLCBmVGV4dFBhbmVsKTsKKyAgICAgICAgICAgIGFkZCh0YWJSdWxlciwgIk5vcnRoIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGFkZChmVGV4dFBhbmVsLCAiQ2VudGVyIik7CisgICAgICAgIHBhY2soKTsKKyAgICAgICAgYWRkV2luZG93TGlzdGVuZXIobmV3IFdpbmRvd0FkYXB0ZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCB3aW5kb3dDbG9zaW5nKFdpbmRvd0V2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICBkb0Nsb3NlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBhZGRNZW51QmFyKGJvb2xlYW4gc3VwcG9ydFN0eWxlZFRleHQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gc3VwcG9ydFBsYWluVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRbXSBtZW51cykgeworICAgICAgICAKKyAgICAgICAgTWVudUJhciBtZW51QmFyID0gbmV3IE1lbnVCYXIoKTsKKyAgICAgICAgU3RyaW5nIG1lbnVUaXRsZSA9IFJlc291cmNlVXRpbHMuZ2V0U3RyaW5nKEVkaXRvclJlc291cmNlcy5GSUxFKTsKKyAgICAgICAgTWVudSBtZW51ID0gbmV3IE1lbnUobWVudVRpdGxlKTsKKyAgICAgICAgbmV3IEF3dEZpbGVNZW51TWFuYWdlcihtZW51LCBmQXBwbGljYXRpb24sIHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRTdHlsZWRUZXh0LCBzdXBwb3J0UGxhaW5UZXh0KTsKKyAgICAgICAgbWVudUJhci5hZGQobWVudSk7CisKKyAgICAgICAgQXd0TWVudUJ1aWxkZXIuZ2V0SW5zdGFuY2UoKS5jcmVhdGVNZW51cyhtZW51QmFyLCBmVGV4dFBhbmVsLCB0aGlzLCBtZW51cyk7CisgICAgICAgIHNldE1lbnVCYXIobWVudUJhcik7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybiB0cnVlIGlmIGl0IGlzIE9LIHRvIHNldCB0aGUgZG9jdW1lbnQgdGV4dCBhbmQgZmlsZSB0bworICAgICAqIHNvbWV0aGluZyBkaWZmZXJlbnQuCisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIGNhbkNoYW5nZURvY3VtZW50cygpIHsKKworICAgICAgICAvLyBJZiB0aGUgdGV4dCBpcyBtb2RpZmllZCwgZ2l2ZSB0aGUgdXNlciBhIGNoYW5jZSB0bworICAgICAgICAvLyBzYXZlIGl0LiAgT3RoZXJ3aXNlIHJldHVybiB0cnVlLgorCisgICAgICAgIGlmIChmRG9jdW1lbnQuaXNNb2RpZmllZCgpKSB7CisgICAgICAgICAgICBieXRlIHNhdmUgPSBhc2tTYXZlKHRoaXMsIGdldFRpdGxlKCkpOworICAgICAgICAgICAgaWYgKHNhdmUgPT0gWUVTKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGRvU2F2ZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNhdmUgPT0gTk87CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBzZXREb2N1bWVudChUZXh0RG9jdW1lbnQgZG9jdW1lbnQpIHsKKworICAgICAgICBmRG9jdW1lbnQgPSBkb2N1bWVudDsKKyAgICAgICAgZkRvY3VtZW50LnNldFRleHRQYW5lbChmVGV4dFBhbmVsKTsKKyAgICAgICAgc2V0VGl0bGUoZkRvY3VtZW50LmdldFRpdGxlKCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCB0aGUgZG9jdW1lbnQgdG8gZW1wdHkgdGV4dCB3aXRoIG5vIGFzc29jaWF0ZWQgZmlsZS4gIElmCisgICAgICogdGhlIGRvY3VtZW50IHRleHQgaXMgbm90IHNhdmVkLCBwcm9tcHQgdGhlIHVzZXIgdG8gc2F2ZSB0aGUKKyAgICAgKiB0aGUgdGV4dCBmaXJzdC4gIElmIHRoaXMgb3BlcmF0aW9uIGlzIGNhbmNlbGVkLCB0aGUgZG9jdW1lbnQKKyAgICAgKiBpcyB1bmNoYW5nZWQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgZG9OZXcoKSB7CisKKyAgICAgICAgaWYgKCFjYW5DaGFuZ2VEb2N1bWVudHMoKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzZXREb2N1bWVudChmQXBwbGljYXRpb24uY3JlYXRlTmV3RG9jdW1lbnQoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUHJvbXB0IHRoZSB1c2VyIGZvciBhIGZpbGUgZnJvbSB3aGljaCB0byBsb2FkIGEgdGV4dCBkb2N1bWVudC4KKyAgICAgKiBJZiB0aGUgY3VycmVudCB0ZXh0IGlzIG5vdCBzYXZlZCwgZmlyc3QgcHJvbXB0IHRoZSB1c2VyIHRvCisgICAgICogc2F2ZS4gIElmIGVpdGhlciBvcGVyYXRpb24gaXMgY2FuY2VsZWQgb3IgZmFpbHMsIHRoZSBkb2N1bWVudAorICAgICAqIGlzIHVuY2hhbmdlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBkb09wZW4oKSB7CisKKyAgICAgICAgaWYgKCFjYW5DaGFuZ2VEb2N1bWVudHMoKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgVGV4dERvY3VtZW50IGRvY3VtZW50ID0gZkFwcGxpY2F0aW9uLm9wZW5Eb2N1bWVudCh0aGlzKTsKKworICAgICAgICBpZiAoZG9jdW1lbnQgIT0gbnVsbCkgeworICAgICAgICAgICAgc2V0RG9jdW1lbnQoZG9jdW1lbnQpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUHJvbXB0IHRoZSB1c2VyIGZvciBhIGZpbGUgaW4gd2hpY2ggdG8gc2F2ZSB0aGUgZG9jdW1lbnQgdGV4dC4KKyAgICAgKiBJZiB0aGlzIG9wZXJhdGlvbiBpcyBub3QgY2FuY2VsZWQsIHNhdmUgdGhlIHRleHQgaW4gdGhlIGZpbGUuCisgICAgICogVGhlIGZpbGUgYmVjb21lcyB0aGlzIGRvY3VtZW50J3MgZmlsZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBkb1NhdmVBcyhpbnQgZm9ybWF0KSB7CisKKyAgICAgICAgU3RyaW5nIHRpdGxlID0gUmVzb3VyY2VVdGlscy5nZXRTdHJpbmcoRWRpdG9yUmVzb3VyY2VzLlNBVkVfVElUTEUpOworICAgICAgICBGaWxlIGZpbGUgPSBnZXRGaWxlRnJvbURpYWxvZyhmRG9jdW1lbnQuZ2V0RmlsZSgpLCB0aXRsZSwgdGhpcywgRmlsZURpYWxvZy5TQVZFKTsKKyAgICAgICAgCisgICAgICAgIGlmIChmaWxlID09IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZkRvY3VtZW50LnNldEZpbGUoZmlsZSk7CisgICAgICAgIHNldFRpdGxlKGZEb2N1bWVudC5nZXRUaXRsZSgpKTsKKworICAgICAgICBmRG9jdW1lbnQuc2V0Rm9ybWF0KGZvcm1hdCk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gZkRvY3VtZW50LnNhdmUoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTYXZlIHRoZSB0ZXh0IGluIHRoaXMgZG9jdW1lbnQuICBJZiB0aGVyZSBpcyBubyBmaWxlIGFzc29jaWF0ZWQKKyAgICAgKiB3aXRoIHRoZSB0ZXh0LCB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gPGNvZGU+ZG9TYXZlQXM8L2NvZGU+LgorICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdHJ1ZSBpZiB0aGUgZG9jdW1lbnQgd2FzIHN1Y2Nlc3NmdWxseSBzYXZlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBkb1NhdmUoKSB7CisKKyAgICAgICAgaWYgKGZEb2N1bWVudC5nZXRGaWxlKCkgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIGRvU2F2ZUFzKGZEb2N1bWVudC5nZXRGb3JtYXQoKSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBmRG9jdW1lbnQuc2F2ZSgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFByaW50IHRoZSBjb250ZW50cyBvZiB0aGlzIHdpbmRvdy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBkb1ByaW50KCkgeworCisgICAgICAgIFByaW50aW5nVXRpbHMudXNlclByaW50VGV4dChmRG9jdW1lbnQuZ2V0VGV4dCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZlRleHRQYW5lbC5nZXREZWZhdWx0VmFsdWVzKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRUaXRsZSgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBdHRlbXB0IHRvIGNsb3NlIHRoaXMgd2luZG93LiAgSWYgdGhlIHRleHQgaGFzIG5vdCBiZWVuIHNhdmVkLAorICAgICAqIGdpdmUgdGhlIHVzZXIgYSBjaGFuY2UgdG8gc2F2ZSB0aGUgdGV4dCBiZWZvcmUgY2xvc2luZyB0aGUKKyAgICAgKiB3aW5kb3cuICBJZiB0aGUgdXNlciBjYW5jZWxzIHRoaXMgb3BlcmF0aW9uLCB0aGlzIG1ldGhvZCByZXR1cm5zCisgICAgICogZmFsc2UgYW5kIHRoZSB3aW5kb3cgaXMgbm90IGNsb3NlZDsgIG90aGVyd2lzZSB0aGlzIG1ldGhvZAorICAgICAqIHJldHVybnMgdHJ1ZSBhbmQgdGhlIHdpbmRvdyBpcyBjbG9zZWQuCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gZG9DbG9zZSgpIHsKKworICAgICAgICBpZiAoY2FuQ2hhbmdlRG9jdW1lbnRzKCkpIHsKKyAgICAgICAgICAgIHNldFZpc2libGUoZmFsc2UpOworICAgICAgICAgICAgZGlzcG9zZSgpOworICAgICAgICAgICAgZkFwcGxpY2F0aW9uLnJlbW92ZURvY3VtZW50V2luZG93KHRoaXMpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXRyaWV2ZSBhIGZpbGUgZnJvbSBhIGRpYWxvZy4gIElmIHRoZSB1c2VyIGRvZXMgbm90CisgICAgICogc2VsZWN0IGEgZmlsZSBpbiB0aGUgZGlhbG9nIHRoaXMgbWV0aG9kIHJldHVybnMgbnVsbC4KKyAgICAgKiBAcGFyYW0ga2luZCBlaXRoZXIgRmlsZURpYWxvZy5MT0FEIG9yIEZpbGVEaWFsb2cuU0FWRS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIEZpbGUgZ2V0RmlsZUZyb21EaWFsb2coRmlsZSBvcmlnRmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGRpYWxvZ1RpdGxlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWUgb3duZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBraW5kKSB7CisgICAgICAgIAorICAgICAgICBGaWxlRGlhbG9nIGRpYWxvZyA9IG5ldyBGaWxlRGlhbG9nKG93bmVyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWFsb2dUaXRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kKTsKKyAgICAgICAgaWYgKG9yaWdGaWxlICE9IG51bGwpIHsKKyAgICAgICAgICAgIGRpYWxvZy5zZXREaXJlY3Rvcnkob3JpZ0ZpbGUuZ2V0UGFyZW50KCkpOworICAgICAgICAgICAgZGlhbG9nLnNldEZpbGUob3JpZ0ZpbGUuZ2V0TmFtZSgpKTsKKyAgICAgICAgfQorICAgICAgICBkaWFsb2cuc2hvdygpOworICAgICAgICBTdHJpbmcgZmlsZVN0ciA9IGRpYWxvZy5nZXRGaWxlKCk7CisgICAgICAgIFN0cmluZyBkaXJTdHIgPSBkaWFsb2cuZ2V0RGlyZWN0b3J5KCk7CisgICAgICAgIAorICAgICAgICBGaWxlIGZpbGUgPSBudWxsOworICAgICAgICAKKyAgICAgICAgaWYgKGZpbGVTdHIgIT0gbnVsbCkgeworICAgICAgICAgICAgZmlsZSA9IG5ldyBGaWxlKGRpclN0ciwgZmlsZVN0cik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBmaWxlOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIFlFUyA9IDA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYnl0ZSBOTyA9IDE7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYnl0ZSBDQU5DRUwgPSAyOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2xhc3MgRGlhbG9nTGlzdGVuZXIgaW1wbGVtZW50cyBBY3Rpb25MaXN0ZW5lciB7CisKKyAgICAgICAgRGlhbG9nIGZEaWFsb2c7CisgICAgICAgIEJ1dHRvbiBmWWVzLCBmTm8sIGZDYW5jZWw7CisgICAgICAgIGJ5dGUgZlN0YXRlOworCisgICAgICAgIERpYWxvZ0xpc3RlbmVyKERpYWxvZyBkaWFsb2csCisgICAgICAgICAgICAgICAgICAgICAgIEJ1dHRvbiB5ZXMsCisgICAgICAgICAgICAgICAgICAgICAgIEJ1dHRvbiBubywKKyAgICAgICAgICAgICAgICAgICAgICAgQnV0dG9uIGNhbmNlbCkgeworCisgICAgICAgICAgICBmRGlhbG9nID0gZGlhbG9nOworICAgICAgICAgICAgZlllcyA9IHllczsKKyAgICAgICAgICAgIGZObyA9IG5vOworICAgICAgICAgICAgZkNhbmNlbCA9IGNhbmNlbDsKKyAgICAgICAgICAgIGZZZXMuYWRkQWN0aW9uTGlzdGVuZXIodGhpcyk7CisgICAgICAgICAgICBmTm8uYWRkQWN0aW9uTGlzdGVuZXIodGhpcyk7CisgICAgICAgICAgICBmQ2FuY2VsLmFkZEFjdGlvbkxpc3RlbmVyKHRoaXMpOworICAgICAgICAgICAgZlN0YXRlID0gLTE7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBhY3Rpb25QZXJmb3JtZWQoQWN0aW9uRXZlbnQgZXZlbnQpIHsKKworICAgICAgICAgICAgT2JqZWN0IHNvdXJjZSA9IGV2ZW50LmdldFNvdXJjZSgpOworICAgICAgICAgICAgaWYgKHNvdXJjZSA9PSBmWWVzKSB7CisgICAgICAgICAgICAgICAgZlN0YXRlID0gWUVTOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoc291cmNlID09IGZObykgeworICAgICAgICAgICAgICAgIGZTdGF0ZSA9IE5POworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoc291cmNlID09IGZDYW5jZWwpIHsKKyAgICAgICAgICAgICAgICBmU3RhdGUgPSBDQU5DRUw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZEaWFsb2cuZGlzcG9zZSgpOworICAgICAgICB9CisKKyAgICAgICAgYnl0ZSBnZXRTdGF0ZSgpIHsKKworICAgICAgICAgICAgcmV0dXJuIGZTdGF0ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIERpc3BsYXkgYSBkaWFsb2cgdGhhdCBhc2tzIHdoZXRoZXIgdGhlIHVzZXIgd2FudHMgdG8KKyAgICAgKiBzYXZlIGEgZG9jdW1lbnQuICBQb3NzaWJsZSByZXBvbnNlcyBhcmUgWWVzLCBObywgYW5kCisgICAgICogQ2FuY2VsLiAgVGhlIHJldHVybmVkIHZhbHVlIGluZGljYXRlcyB3aGljaCByZXNwb25zZQorICAgICAqIHdhcyBjaG9zZW4uCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgYnl0ZSBhc2tTYXZlKEZyYW1lIHBhcmVudCwgU3RyaW5nIGZpbGVOYW1lKSB7CisKKyAgICAgICAgRGlhbG9nIGRpYWxvZyA9IG5ldyBEaWFsb2cocGFyZW50LCB0cnVlKTsKKyAgICAgICAgZGlhbG9nLnNldExheW91dChuZXcgR3JpZExheW91dCgwLCAxKSk7CisgICAgICAgIAorICAgICAgICBTdHJpbmcgcGF0dGVybiA9IFJlc291cmNlVXRpbHMuZ2V0U3RyaW5nKEVkaXRvclJlc291cmNlcy5TQVZFX01TRyk7CisgICAgICAgIFN0cmluZyB0ZXh0ID0gTWVzc2FnZUZvcm1hdC5mb3JtYXQocGF0dGVybiwgbmV3IE9iamVjdFtdIHtmaWxlTmFtZX0pOworICAgICAgICBkaWFsb2cuYWRkKG5ldyBMYWJlbCh0ZXh0LCBMYWJlbC5DRU5URVIpKTsKKyAgICAgICAgCisgICAgICAgIEJ1dHRvbiB5ZXMgPSBuZXcgQnV0dG9uKFJlc291cmNlVXRpbHMuZ2V0U3RyaW5nKEVkaXRvclJlc291cmNlcy5ZRVMpKTsKKyAgICAgICAgQnV0dG9uIG5vID0gbmV3IEJ1dHRvbihSZXNvdXJjZVV0aWxzLmdldFN0cmluZyhFZGl0b3JSZXNvdXJjZXMuTk8pKTsKKyAgICAgICAgQnV0dG9uIGNhbmNlbCA9IG5ldyBCdXR0b24oUmVzb3VyY2VVdGlscy5nZXRTdHJpbmcoRWRpdG9yUmVzb3VyY2VzLkNBTkNFTCkpOworCisgICAgICAgIFBhbmVsIHBhbmVsID0gbmV3IFBhbmVsKCk7CisgICAgICAgIHBhbmVsLmFkZCh5ZXMpOworICAgICAgICBwYW5lbC5hZGQobm8pOworICAgICAgICBwYW5lbC5hZGQoY2FuY2VsKTsKKyAgICAgICAgZGlhbG9nLmFkZChwYW5lbCk7CisKKyAgICAgICAgRGlhbG9nTGlzdGVuZXIgbGlzdGVuZXIgPSBuZXcgRGlhbG9nTGlzdGVuZXIoZGlhbG9nLCB5ZXMsIG5vLCBjYW5jZWwpOworCisgICAgICAgIGRpYWxvZy5zZXRTaXplKDIyMCwgMTMwKTsKKyAgICAgICAgZGlhbG9nLnNob3coKTsKKworICAgICAgICByZXR1cm4gbGlzdGVuZXIuZ2V0U3RhdGUoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvZGVtby9Bd3RGaWxlTWVudU1hbmFnZXIuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2RlbW8vQXd0RmlsZU1lbnVNYW5hZ2VyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMjlkZjJkNAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2RlbW8vQXd0RmlsZU1lbnVNYW5hZ2VyLmphdmEKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogQXd0RmlsZU1lbnVNYW5hZ2VyLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NDM6MDkgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5kZW1vOworCitpbXBvcnQgamF2YS5hd3QuTWVudTsKK2ltcG9ydCBqYXZhLmF3dC5NZW51SXRlbTsKKworZmluYWwgY2xhc3MgQXd0RmlsZU1lbnVNYW5hZ2VyIGV4dGVuZHMgRmlsZU1lbnVNYW5hZ2VyIHsKKworICAgIHByaXZhdGUgTWVudSBmTWVudTsKKyAgICAKKyAgICBwdWJsaWMgQXd0RmlsZU1lbnVNYW5hZ2VyKE1lbnUgbWVudSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVkaXRBcHBsaWNhdGlvbiBhcHBsaWNhdGlvbiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb2N1bWVudFdpbmRvdyBkb2N1bWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gc3VwcG9ydFN0eWxlZEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gc3VwcG9ydFBsYWluRm9ybWF0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBzdXBlcihhcHBsaWNhdGlvbiwgZG9jdW1lbnQpOworICAgICAgICAKKyAgICAgICAgZk1lbnUgPSBtZW51OworICAgICAgICBjcmVhdGVJdGVtcyhzdXBwb3J0U3R5bGVkRm9ybWF0LCBzdXBwb3J0UGxhaW5Gb3JtYXQpOworICAgICAgICBmTWVudSA9IG51bGw7CisgICAgfQorICAgIAorICAgIHByb3RlY3RlZCBPYmplY3QgYWRkTWVudUl0ZW0oU3RyaW5nIGtleSkgeworCisgICAgICAgIE1lbnVJdGVtIGl0ZW0gPSBSZXNvdXJjZVV0aWxzLmNyZWF0ZU1lbnVJdGVtKGtleSk7CisgICAgICAgIGl0ZW0uYWRkQWN0aW9uTGlzdGVuZXIodGhpcyk7CisgICAgICAgIGZNZW51LmFkZChpdGVtKTsKKyAgICAgICAgcmV0dXJuIGl0ZW07CisgICAgfQorICAgIAorICAgIHByb3RlY3RlZCB2b2lkIGFkZFNlcGFyYXRvcigpIHsKKyAgICAKKyAgICAgICAgZk1lbnUuYWRkKG5ldyBNZW51SXRlbSgiLSIpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC9kZW1vL0NvZGVFZGl0LmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC9kZW1vL0NvZGVFZGl0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uM2E4ZTg4YwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2RlbW8vQ29kZUVkaXQuamF2YQpAQCAtMCwwICsxLDEyNCBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogQ29kZUVkaXQuamF2YSx2ICQgJFJldmlzaW9uOiAxLjMgJCAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNjozMyAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LmRlbW87CisKK2ltcG9ydCBqYXZhLmF3dC5GaWxlRGlhbG9nOworaW1wb3J0IGphdmEuYXd0LkZyYW1lOworaW1wb3J0IGphdmEuYXd0Lk1lbnU7CitpbXBvcnQgamF2YS5hd3QuTWVudUJhcjsKK2ltcG9ydCBqYXZhLmF3dC5Ub29sa2l0OworCitpbXBvcnQgamF2YS5pby5GaWxlOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlTWFwOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5hdHRyaWJ1dGVzLlRleHRBdHRyaWJ1dGU7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5NVGV4dFBhbmVsOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLlRleHRQYW5lbDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5UZXh0UGFuZWxTZXR0aW5nczsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LmF3dHVpLkF3dE1lbnVCdWlsZGVyOworCitwdWJsaWMgY2xhc3MgQ29kZUVkaXQgZXh0ZW5kcyBFZGl0QXBwbGljYXRpb24geworICAgIAorICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgCisgICAgcHJvdGVjdGVkIGZpbmFsIFRleHRQYW5lbFNldHRpbmdzIGZTZXR0aW5nczsKKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIHN5bmNocm9uaXplZCB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworCisgICAgICAgIGlmIChhcmdzLmxlbmd0aCA+IDAgJiYgYXJnc1swXS5lcXVhbHMoIi1zd2luZyIpKSB7CisgICAgICAgICAgICBuZXcgY29tLmlibS5yaWNodGV4dC5zd2luZ2RlbW8uU3dpbmdDb2RlRWRpdChhcmdzLDEpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbmV3IENvZGVFZGl0KGFyZ3MsIDApOworICAgICAgICB9CisgICAgfQorCisgICAgcHJvdGVjdGVkIENvZGVFZGl0KFN0cmluZ1tdIGFyZ3MsIGludCBzdGFydCkgeworCisgICAgICAgIHN1cGVyKFRvb2xraXQuZ2V0RGVmYXVsdFRvb2xraXQoKS5nZXRTeXN0ZW1DbGlwYm9hcmQoKSwKKyAgICAgICAgICAgICAgVGV4dERvY3VtZW50LlBMQUlOX1RFWFQpOworCisgICAgICAgIEF0dHJpYnV0ZU1hcCBkZWZhdWx0U3R5bGUgPSBuZXcgQXR0cmlidXRlTWFwKFRleHRBdHRyaWJ1dGUuU0laRSwgbmV3IEZsb2F0KDEyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hZGRBdHRyaWJ1dGUoVGV4dEF0dHJpYnV0ZS5GQU1JTFksICJNb25vc3BhY2VkIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgZlNldHRpbmdzID0gVGV4dFBhbmVsLmdldERlZmF1bHRTZXR0aW5ncygpOworICAgICAgICBmU2V0dGluZ3Muc2V0V3JhcHMoZmFsc2UpOworICAgICAgICBmU2V0dGluZ3MuYWRkRGVmYXVsdFZhbHVlcyhkZWZhdWx0U3R5bGUpOworICAgICAgICAKKyAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID09IHN0YXJ0KSB7CisgICAgICAgICAgICBkb05ld1dpbmRvdygpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYm9vbGVhbiBvcGVuZWRBRG9jdW1lbnQgPSBmYWxzZTsKKyAgICAgICAgICAgIGZvciAoaW50IGk9c3RhcnQ7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7CisKKyAgICAgICAgICAgICAgICBGaWxlIGZpbGUgPSBuZXcgRmlsZShhcmdzW2ldKTsKKyAgICAgICAgICAgICAgICBUZXh0RG9jdW1lbnQgZG9jdW1lbnQgPSBudWxsOworICAgICAgICAgICAgICAgIFRocm93YWJsZSBlcnJvciA9IG51bGw7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQgPSBUZXh0RG9jdW1lbnQuY3JlYXRlRnJvbUZpbGUoZmlsZSwgVGV4dERvY3VtZW50LlBMQUlOX1RFWFQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXRjaChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICBlcnJvciA9IGU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChlcnJvciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIGVycm9yLnByaW50U3RhY2tUcmFjZSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYWRkRG9jdW1lbnQoZG9jdW1lbnQpOworICAgICAgICAgICAgICAgICAgICBvcGVuZWRBRG9jdW1lbnQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghb3BlbmVkQURvY3VtZW50KSB7CisgICAgICAgICAgICAgICAgcXVpdCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIHByb3RlY3RlZCBEb2N1bWVudFdpbmRvdyBjcmVhdGVEb2N1bWVudFdpbmRvdyhUZXh0RG9jdW1lbnQgZG9jdW1lbnQpIHsKKworICAgICAgICByZXR1cm4gbmV3IEF3dERvY3VtZW50V2luZG93KHRoaXMsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZTZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgU3ludGF4Q29sb3JlcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudXMpOworICAgIH0KKyAgICAKKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludFtdIG1lbnVzID0geyBBd3RNZW51QnVpbGRlci5FRElULCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBd3RNZW51QnVpbGRlci5CSURJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF3dE1lbnVCdWlsZGVyLkFCT1VUIH07CisKKyAgICBwdWJsaWMgVGV4dERvY3VtZW50IG9wZW5Eb2N1bWVudChGcmFtZSBkaWFsb2dQYXJlbnQpIHsKKyAgICAKKyAgICAgICAgU3RyaW5nIHRpdGxlID0gUmVzb3VyY2VVdGlscy5nZXRTdHJpbmcoRWRpdG9yUmVzb3VyY2VzLk9QRU5fVElUTEUpOworICAgICAgICAKKyAgICAgICAgRmlsZSBmaWxlID0gQXd0RG9jdW1lbnRXaW5kb3cuZ2V0RmlsZUZyb21EaWFsb2cobnVsbCwgdGl0bGUsIGRpYWxvZ1BhcmVudCwgRmlsZURpYWxvZy5MT0FEKTsKKyAgICAgICAgaWYgKGZpbGUgIT0gbnVsbCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gVGV4dERvY3VtZW50LmNyZWF0ZUZyb21GaWxlKGZpbGUsIFRleHREb2N1bWVudC5QTEFJTl9URVhUKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhdGNoKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludCgiIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2RlbW8vRG9jdW1lbnRXaW5kb3cuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2RlbW8vRG9jdW1lbnRXaW5kb3cuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44MDY0MDAzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvZGVtby9Eb2N1bWVudFdpbmRvdy5qYXZhCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IERvY3VtZW50V2luZG93LmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NDM6MDkgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5kZW1vOworCitwdWJsaWMgaW50ZXJmYWNlIERvY3VtZW50V2luZG93IHsKKworICAgIHB1YmxpYyB2b2lkIGRvTmV3KCk7CisgICAgCisgICAgcHVibGljIHZvaWQgZG9PcGVuKCk7CisgICAgCisgICAgcHVibGljIGJvb2xlYW4gZG9DbG9zZSgpOworICAgIAorICAgIHB1YmxpYyBib29sZWFuIGRvU2F2ZSgpOworICAgIAorICAgIHB1YmxpYyBib29sZWFuIGRvU2F2ZUFzKGludCBmb3JtYXQpOworICAgIAorICAgIHB1YmxpYyB2b2lkIGRvUHJpbnQoKTsKKyAgICAKKyAgICBwdWJsaWMgdm9pZCBzZXRTaXplKGludCB3ZCwgaW50IGh0KTsKKyAgICAKKyAgICBwdWJsaWMgdm9pZCBzaG93KCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvZGVtby9FZGl0QXBwbGljYXRpb24uamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2RlbW8vRWRpdEFwcGxpY2F0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMjIwNDc5NwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2RlbW8vRWRpdEFwcGxpY2F0aW9uLmphdmEKQEAgLTAsMCArMSwxMjggQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IEVkaXRBcHBsaWNhdGlvbi5qYXZhLHYgJCAkUmV2aXNpb246IDEuMiAkICREYXRlOiAyMDAyLzAyLzE2IDAzOjA2OjMzICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQuZGVtbzsKKworaW1wb3J0IGphdmEuYXd0LkZyYW1lOworaW1wb3J0IGphdmEuYXd0Lk1lbnVCYXI7CisKK2ltcG9ydCBqYXZhLmF3dC5kYXRhdHJhbnNmZXIuQ2xpcGJvYXJkOworCitpbXBvcnQgamF2YS50ZXh0Lk1lc3NhZ2VGb3JtYXQ7CisKK2ltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlTWFwOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuTVRleHRQYW5lbDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5UZXh0UGFuZWxTZXR0aW5nczsKKworcHVibGljIGFic3RyYWN0IGNsYXNzIEVkaXRBcHBsaWNhdGlvbiB7CisKKyAgICBwcml2YXRlIENsaXBib2FyZCBmQ2xpcGJvYXJkOworICAgIHByaXZhdGUgaW50IGZEZWZhdWx0Rm9ybWF0OworICAgIHByaXZhdGUgVmVjdG9yIGZXaW5kb3dzID0gbmV3IFZlY3RvcigpOworICAgIHByaXZhdGUgaW50IGZVbnRpdGxlZENvdW50ID0gMDsKKyAgICAKKyAgICBwcm90ZWN0ZWQgRWRpdEFwcGxpY2F0aW9uKENsaXBib2FyZCBjbGlwYm9hcmQsIGludCBkZWZhdWx0Rm9ybWF0KSB7CisgICAgICAgIAorICAgICAgICBmQ2xpcGJvYXJkID0gY2xpcGJvYXJkOworICAgICAgICBmRGVmYXVsdEZvcm1hdCA9IGRlZmF1bHRGb3JtYXQ7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIE5ldyBkb2N1bWVudHMgYXJlIG5hbWVkICJVbnRpdGxlZCAxIiwgIlVudGl0bGVkIDIiLCBldGMuICBUaGlzCisgICAgICogbWV0aG9kIHJldHVybnMgdGhlIGFwcHJvcHJpYXRlIG5hbWUgZm9yIHRoZSBuZXh0IG5ldyBkb2N1bWVudC4KKyAgICAgKiBAcmV0dXJuIHRoZSBuZXh0IG5ldyBkb2N1bWVudCBuYW1lCisgICAgICovCisgICAgcHJpdmF0ZSBTdHJpbmcgZ2V0TmV4dE5ld05hbWUoKSB7CisKKyAgICAgICAgZlVudGl0bGVkQ291bnQgKz0gMTsKKyAgICAgICAgU3RyaW5nIHBhdHRlcm4gPSBSZXNvdXJjZVV0aWxzLmdldFN0cmluZyhFZGl0b3JSZXNvdXJjZXMuVU5USVRMRURfTVNHKTsKKyAgICAgICAgcmV0dXJuIE1lc3NhZ2VGb3JtYXQuZm9ybWF0KHBhdHRlcm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W117bmV3IEludGVnZXIoZlVudGl0bGVkQ291bnQpfSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBmaW5hbCBDbGlwYm9hcmQgZ2V0Q2xpcGJvYXJkKCkgeworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZDbGlwYm9hcmQ7CisgICAgfQorCisgICAgcHJvdGVjdGVkIGFic3RyYWN0IERvY3VtZW50V2luZG93IGNyZWF0ZURvY3VtZW50V2luZG93KFRleHREb2N1bWVudCBkb2N1bWVudCk7CisgICAgCisgICAgcHVibGljIGFic3RyYWN0IFRleHREb2N1bWVudCBvcGVuRG9jdW1lbnQoRnJhbWUgZGlhbG9nUGFyZW50KTsKKyAgICAKKyAgICBwdWJsaWMgZmluYWwgVGV4dERvY3VtZW50IGNyZWF0ZU5ld0RvY3VtZW50KCkgeworICAgIAorICAgICAgICBTdHJpbmcgbmFtZSA9IGdldE5leHROZXdOYW1lKCk7CisgICAgICAgIGludCBmb3JtYXQgPSBmRGVmYXVsdEZvcm1hdDsKKyAgICAgICAgcmV0dXJuIFRleHREb2N1bWVudC5jcmVhdGVFbXB0eShuYW1lLCBmb3JtYXQpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgZmluYWwgdm9pZCBkb05ld1dpbmRvdygpIHsKKyAgICAgICAgCisgICAgICAgIGFkZERvY3VtZW50KFRleHREb2N1bWVudC5jcmVhdGVFbXB0eShnZXROZXh0TmV3TmFtZSgpLCBmRGVmYXVsdEZvcm1hdCkpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgZmluYWwgdm9pZCBhZGREb2N1bWVudChUZXh0RG9jdW1lbnQgZG9jdW1lbnQpIHsKKyAgICAgICAgCisgICAgICAgIGZpbmFsIERvY3VtZW50V2luZG93IHdpbmRvdyA9IGNyZWF0ZURvY3VtZW50V2luZG93KGRvY3VtZW50KTsKKworICAgICAgICB3aW5kb3cuc2V0U2l6ZSg1MDAsIDQwMCk7CisgICAgICAgIHdpbmRvdy5zaG93KCk7CisgICAgICAgIGZXaW5kb3dzLmFkZEVsZW1lbnQod2luZG93KTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmVtb3ZlIGRvY3VtZW50IGZyb20gbGlzdCBvZiBkb2N1bWVudHMuICBRdWl0IGFwcGxpY2F0aW9uIGlmIGxpc3QKKyAgICAgKiBsZW5ndGggZmFsbHMgdG8gemVyby4KKyAgICAgKiBAcGFyYW0gZG9jdW1lbnQgdGhlIGRvY3VtZW50IHRvIHJlbW92ZQorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCB2b2lkIHJlbW92ZURvY3VtZW50V2luZG93KERvY3VtZW50V2luZG93IHdpbmRvdykgeworCisgICAgICAgIGZXaW5kb3dzLnJlbW92ZUVsZW1lbnQod2luZG93KTsKKyAgICAgICAgaWYgKGZXaW5kb3dzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgcXVpdCgpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogR28gdGhyb3VnaCBsaXN0IG9mIGRvY3VtZW50cyBhbmQgYXR0ZW1wdCB0byBjbG9zZSBlYWNoIGRvY3VtZW50LgorICAgICAqIElmIGFsbCBkb2N1bWVudHMgY2xvc2Ugc3VjY2Vzc2Z1bGx5LCB0aGVuIGV4aXQuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHZvaWQgZG9FeGl0KCkgeworCisgICAgICAgIC8vIENsb25lIGZXaW5kb3dzIHNpbmNlIGl0IGNhbiBnZXQgbW9kaWZpZWQgd2hpbGUgYmVpbmcgdHJhdmVyc2VkLgorICAgICAgICBWZWN0b3Igd2luZG93cyA9IChWZWN0b3IpIGZXaW5kb3dzLmNsb25lKCk7CisKKyAgICAgICAgaW50IHNpemUgPSB3aW5kb3dzLnNpemUoKTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICBEb2N1bWVudFdpbmRvdyB3aW5kb3cgPSAoRG9jdW1lbnRXaW5kb3cpIHdpbmRvd3MuZWxlbWVudEF0KGkpOworICAgICAgICAgICAgaWYgKCF3aW5kb3cuZG9DbG9zZSgpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gcXVpdCB3aWxsIGJlIGNhbGxlZCB3aGVuIGxhc3QgZG9jdW1lbnQgcmVtb3ZlcyBpdHNlbGYKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDYWxsZWQgd2hlbiBsYXN0IGRvY3VtZW50IHdpbmRvdyBjbG9zZXMuICBEZWZhdWx0IGltcGxlbWVudGF0aW9uCisgICAgICogY2FsbHMgU3lzdGVtLmV4aXQuCisgICAgICovCisgICAgcHJvdGVjdGVkIHZvaWQgcXVpdCgpIHsKKworICAgICAgICBTeXN0ZW0uZXhpdCgwKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvZGVtby9FZGl0RGVtby5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvZGVtby9FZGl0RGVtby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmE0YmRiNjcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC9kZW1vL0VkaXREZW1vLmphdmEKQEAgLTAsMCArMSwxMzQgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IEVkaXREZW1vLmphdmEsdiAkICRSZXZpc2lvbjogMS4zICQgJERhdGU6IDIwMDIvMDIvMTYgMDM6MDY6MzMgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5kZW1vOworCitpbXBvcnQgamF2YS5hd3QuRmlsZURpYWxvZzsKK2ltcG9ydCBqYXZhLmF3dC5GcmFtZTsKK2ltcG9ydCBqYXZhLmF3dC5NZW51OworaW1wb3J0IGphdmEuYXd0Lk1lbnVCYXI7CitpbXBvcnQgamF2YS5hd3QuVG9vbGtpdDsKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLmlvLlN0cmVhbUNvcnJ1cHRlZEV4Y2VwdGlvbjsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZU1hcDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5NVGV4dFBhbmVsOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLlRleHRQYW5lbDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5UZXh0UGFuZWxTZXR0aW5nczsKKworLyoqCisgKiBFZGl0RGVtbyBpcyB0aGUgbWFpbiBjbGFzcyBmb3IgYSBzaW1wbGUsIG11bHRpcGxlLWRvY3VtZW50CisgKiBzdHlsZWQgdGV4dCBlZGl0b3IsIGJ1aWx0IHdpdGggdGhlIGNsYXNzZXMgaW4gdGhlIHRleHRwYW5lbAorICogYW5kIHRleHRmcmFtZSBwYWNrYWdlcy4KKyAqIDxwPgorICogVG8gcnVuIEVkaXREZW1vLCB0eXBlOgorICogPGJsb2NrcXVvdGU+PHByZT4KKyAqIGphdmEgY29tLmlibS5yaWNodGV4dC5kZW1vLkVkaXREZW1vIFtmaWxlMV0gW2ZpbGUyXSBbLi4uXQorICogPC9wcmU+PC9ibG9ja3F1b3RlPgorICogd2hlcmUgdGhlIGZpbGVuYW1lcyBhcmUgZmlsZXMgc2F2ZWQgd2l0aCB0aGlzIGRlbW8uCisgKi8KK3B1YmxpYyBjbGFzcyBFZGl0RGVtbyBleHRlbmRzIEVkaXRBcHBsaWNhdGlvbiB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIAorICAgIHB1YmxpYyBzdGF0aWMgc3luY2hyb25pemVkIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisKKyAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID4gMCAmJiBhcmdzWzBdLmVxdWFscygiLXN3aW5nIikpIHsKKyAgICAgICAgICAgIG5ldyBjb20uaWJtLnJpY2h0ZXh0LnN3aW5nZGVtby5Td2luZ0VkaXREZW1vKGFyZ3MsMSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBuZXcgRWRpdERlbW8oYXJncywgMCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgRWRpdERlbW8oU3RyaW5nW10gYXJncywgaW50IHN0YXJ0KSB7CisKKyAgICAgICAgc3VwZXIoVG9vbGtpdC5nZXREZWZhdWx0VG9vbGtpdCgpLmdldFN5c3RlbUNsaXBib2FyZCgpLCAKKyAgICAgICAgICAgICAgVGV4dERvY3VtZW50LlNUWUxFRF9URVhUKTsKKworICAgICAgICBpZiAoYXJncy5sZW5ndGggPT0gc3RhcnQpIHsKKyAgICAgICAgICAgIGRvTmV3V2luZG93KCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBib29sZWFuIG9wZW5lZEFEb2N1bWVudCA9IGZhbHNlOworICAgICAgICAgICAgZm9yIChpbnQgaT1zdGFydDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHsKKworICAgICAgICAgICAgICAgIEZpbGUgZmlsZSA9IG5ldyBGaWxlKGFyZ3NbaV0pOworICAgICAgICAgICAgICAgIFRleHREb2N1bWVudCBkb2N1bWVudCA9IGdldERvY3VtZW50RnJvbUZpbGUoZmlsZSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgYWRkRG9jdW1lbnQoZG9jdW1lbnQpOworICAgICAgICAgICAgICAgICAgICBvcGVuZWRBRG9jdW1lbnQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghb3BlbmVkQURvY3VtZW50KSB7CisgICAgICAgICAgICAgICAgcXVpdCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgVGV4dERvY3VtZW50IGdldERvY3VtZW50RnJvbUZpbGUoRmlsZSBmaWxlKSB7CisgICAgCisgICAgICAgIEV4Y2VwdGlvbiBleGNlcHRpb24gPSBudWxsOworICAgICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJldHVybiBUZXh0RG9jdW1lbnQuY3JlYXRlRnJvbUZpbGUoZmlsZSwgVGV4dERvY3VtZW50LlNUWUxFRF9URVhUKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaChTdHJlYW1Db3JydXB0ZWRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gVGV4dERvY3VtZW50LmNyZWF0ZUZyb21GaWxlKGZpbGUsIFRleHREb2N1bWVudC5QTEFJTl9URVhUKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhdGNoKEV4Y2VwdGlvbiBlMikgeworICAgICAgICAgICAgICAgIGV4Y2VwdGlvbiA9IGUyOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhdGNoKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBleGNlcHRpb24gPSBlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBTeXN0ZW0uZXJyLnByaW50bG4oIkV4Y2VwdGlvbiBvcGVuaW5nIGZpbGUuIik7CisgICAgICAgIGV4Y2VwdGlvbi5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICAKKyAgICBwcm90ZWN0ZWQgRG9jdW1lbnRXaW5kb3cgY3JlYXRlRG9jdW1lbnRXaW5kb3coVGV4dERvY3VtZW50IGRvY3VtZW50KSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gbmV3IEF3dERvY3VtZW50V2luZG93KHRoaXMsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRQYW5lbC5nZXREZWZhdWx0U2V0dGluZ3MoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgVGV4dERvY3VtZW50IG9wZW5Eb2N1bWVudChGcmFtZSBkaWFsb2dQYXJlbnQpIHsKKyAgICAKKyAgICAgICAgU3RyaW5nIHRpdGxlID0gUmVzb3VyY2VVdGlscy5nZXRTdHJpbmcoRWRpdG9yUmVzb3VyY2VzLk9QRU5fVElUTEUpOworICAgICAgICBGaWxlIGZpbGUgPSBBd3REb2N1bWVudFdpbmRvdy5nZXRGaWxlRnJvbURpYWxvZyhudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhbG9nUGFyZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlRGlhbG9nLkxPQUQpOworICAgICAgICBpZiAoZmlsZSAhPSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gZ2V0RG9jdW1lbnRGcm9tRmlsZShmaWxlKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2RlbW8vRWRpdG9yUmVzb3VyY2VzLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC9kZW1vL0VkaXRvclJlc291cmNlcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjNmNDNlYjgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC9kZW1vL0VkaXRvclJlc291cmNlcy5qYXZhCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBFZGl0b3JSZXNvdXJjZXMuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo0MzowOSAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LmRlbW87CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworaW1wb3J0IGphdmEuYXd0LmV2ZW50LktleUV2ZW50OworCitwdWJsaWMgZmluYWwgY2xhc3MgRWRpdG9yUmVzb3VyY2VzIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgLy8gbWVudSBuYW1lcyAtIHZhbHVlcyBhcmUgU3RyaW5ncworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZJTEUgPSAiRmlsZSI7CisKKyAgICAvLyBmaWxlIG1lbnUgaXRlbXMgLSB2YWx1ZXMgYXJlIE1lbnVEYXRhIGluc3RhbmNlcworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE5FVyA9ICJOZXciOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE5FV19XSU5ET1cgPSAiTmV3IFdpbmRvdyI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1BFTiA9ICJPcGVuLi4uIjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTQVZFID0gIlNhdmUiOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNBVkVfQVMgPSAiU2F2ZSBBcy4uLiI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0FWRV9BU19TVFlMRUQgPSAiU2F2ZSBBcyBTdHlsZWQgVGV4dC4uLiI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0FWRV9BU19URVhUID0gIlNhdmUgQXMgUGxhaW4gVGV4dC4uLiI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ0xPU0UgPSAiQ2xvc2UiOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBSSU5UID0gIlByaW50IjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFWElUID0gIkV4aXQiOworCisgICAgLy8gYnV0dG9uIGxhYmVscyAtIHZhbHVlcyBhcmUgU3RyaW5ncworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFlFUyA9ICJZZXMiOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE5PID0gIk5vIjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBDQU5DRUwgPSAiQ2FuY2VsIjsKKworICAgIC8vIG1lc3NhZ2Ugc3RyaW5ncyAtIHZhbHVlcyBhcmUgU3RyaW5ncworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNBVkVfTVNHID0gIlNhdmUgezB9IGJlZm9yZSBjbG9zaW5nPyI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVU5USVRMRURfTVNHID0gIlVudGl0bGVkIHswfSI7CisKKyAgICAvLyB3aW5kb3cgYW5kIGRpYWxvZyB0aXRsZXMgLSB2YWx1ZXMgYXJlIFN0cmluZ3MKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBPUEVOX1RJVExFID0gIk9wZW4gRG9jdW1lbnQiOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNBVkVfVElUTEUgPSAiU2F2ZSBBcyI7CisKKyAgICAvKioKKyAgICAgKiBDb252ZW5pZW5jZSBtZXRob2QgdGhhdCByZXR1cm5zIGEgdHdvLWVsZW1lbnQKKyAgICAgKiBPYmplY3QgYXJyYXkuICBUaGUgZmlyc3QgZWxlbWVudCBpcyBuYW1lLCB0aGUKKyAgICAgKiBzZWNvbmQgaXMgYSBNZW51RGF0YSBpbnN0YW5jZSB3aXRoIHRoZSBnaXZlbgorICAgICAqIHNob3J0Y3V0LgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIE9iamVjdFtdIG1ha2VFbnRyeShTdHJpbmcgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBzaG9ydEN1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGtleUNvZGUpIHsKKworICAgICAgICByZXR1cm4gbmV3IE9iamVjdFtdIHsgbmFtZSwgbmV3IE1lbnVEYXRhKG5hbWUsIHNob3J0Q3V0LCBrZXlDb2RlKSB9OworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlbmllbmNlIG1ldGhvZCB0aGF0IHJldHVybnMgYSB0d28tZWxlbWVudAorICAgICAqIE9iamVjdCBhcnJheS4gIFRoZSBmaXJzdCBlbGVtZW50IGlzIG5hbWUsIHRoZQorICAgICAqIHNlY29uZCBpcyBhIE1lbnVEYXRhIGluc3RhbmNlLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIE9iamVjdFtdIG1ha2VFbnRyeShTdHJpbmcgbmFtZSkgeworCisgICAgICAgIHJldHVybiBuZXcgT2JqZWN0W10geyBuYW1lLCBuZXcgTWVudURhdGEobmFtZSkgfTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb252ZW5pZW5jZSBtZXRob2QgdGhhdCByZXR1cm5zIGEgdHdvLWVsZW1lbnQKKyAgICAgKiBPYmplY3QgYXJyYXkgaW4gd2hpY2ggYm90aCBlbGVtZW50cyBhcmUgb2JqLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIE9iamVjdFtdIGR1cGxpY2F0ZShPYmplY3Qgb2JqKSB7CisKKyAgICAgICAgcmV0dXJuIG5ldyBPYmplY3RbXSB7IG9iaiwgb2JqIH07CisgICAgfQorCisgICAgcHJvdGVjdGVkIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7CisKKyAgICAgICAgcmV0dXJuIG5ldyBPYmplY3RbXVtdIHsKKyAgICAgICAgICAgIGR1cGxpY2F0ZShGSUxFKSwKKyAgICAgICAgICAgIGR1cGxpY2F0ZShZRVMpLAorICAgICAgICAgICAgZHVwbGljYXRlKE5PKSwKKyAgICAgICAgICAgIGR1cGxpY2F0ZShDQU5DRUwpLAorICAgICAgICAgICAgZHVwbGljYXRlKFNBVkVfTVNHKSwKKyAgICAgICAgICAgIGR1cGxpY2F0ZShTQVZFX1RJVExFKSwKKyAgICAgICAgICAgIGR1cGxpY2F0ZShPUEVOX1RJVExFKSwKKyAgICAgICAgICAgIGR1cGxpY2F0ZShVTlRJVExFRF9NU0cpLAorICAgICAgICAgICAgbWFrZUVudHJ5KE5FVywgJ24nLCBLZXlFdmVudC5WS19OKSwKKyAgICAgICAgICAgIG1ha2VFbnRyeShORVdfV0lORE9XKSwKKyAgICAgICAgICAgIG1ha2VFbnRyeShPUEVOLCAnbycsIEtleUV2ZW50LlZLX08pLAorICAgICAgICAgICAgbWFrZUVudHJ5KFNBVkUsICdzJywgS2V5RXZlbnQuVktfUyksCisgICAgICAgICAgICBtYWtlRW50cnkoU0FWRV9BUyksCisgICAgICAgICAgICBtYWtlRW50cnkoU0FWRV9BU19TVFlMRUQpLAorICAgICAgICAgICAgbWFrZUVudHJ5KFNBVkVfQVNfVEVYVCksCisgICAgICAgICAgICBtYWtlRW50cnkoQ0xPU0UpLAorICAgICAgICAgICAgbWFrZUVudHJ5KFBSSU5UKSwKKyAgICAgICAgICAgIG1ha2VFbnRyeShFWElUKSwKKyAgICAgICAgfTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC9kZW1vL0ZpbGVNZW51TWFuYWdlci5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvZGVtby9GaWxlTWVudU1hbmFnZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hMTljMDRkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvZGVtby9GaWxlTWVudU1hbmFnZXIuamF2YQpAQCAtMCwwICsxLDExNiBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogRmlsZU1lbnVNYW5hZ2VyLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NDM6MDkgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5kZW1vOworCitpbXBvcnQgamF2YS5hd3QuZXZlbnQuQWN0aW9uTGlzdGVuZXI7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuQWN0aW9uRXZlbnQ7CisKKy8qKgorICogVGhpcyBjbGFzcyBjcmVhdGVzIGEgRmlsZSBtZW51IGFuZCBtYW5hZ2VzIHVzZXIgaW50ZXJhY3Rpb25zCisgKiB3aXRoIHRoZSBtZW51LgorICovCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgRmlsZU1lbnVNYW5hZ2VyIGltcGxlbWVudHMgQWN0aW9uTGlzdGVuZXIgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcml2YXRlIEVkaXRBcHBsaWNhdGlvbiBmQXBwbGljYXRpb247CisgICAgcHJpdmF0ZSBEb2N1bWVudFdpbmRvdyBmRG9jdW1lbnRXaW5kb3c7CisgICAgcHJpdmF0ZSBPYmplY3QgZk5ldywgZk5ld1dpbmRvdywgZk9wZW4sIGZTYXZlOworICAgIHByaXZhdGUgT2JqZWN0IGZTYXZlQXNTdHlsZWQsIGZTYXZlQXNUZXh0LCBmQ2xvc2UsIGZQcmludCwgZkV4aXQ7CisKKyAgICBwcm90ZWN0ZWQgRmlsZU1lbnVNYW5hZ2VyKEVkaXRBcHBsaWNhdGlvbiBhcHBsaWNhdGlvbiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb2N1bWVudFdpbmRvdyBkb2N1bWVudCkgeworCisgICAgICAgIGZBcHBsaWNhdGlvbiA9IGFwcGxpY2F0aW9uOworICAgICAgICBmRG9jdW1lbnRXaW5kb3cgPSBkb2N1bWVudDsKKyAgICB9CisgICAgCisgICAgcHJvdGVjdGVkIGZpbmFsIHZvaWQgY3JlYXRlSXRlbXMoYm9vbGVhbiBzdXBwb3J0U3R5bGVkRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gc3VwcG9ydFBsYWluRm9ybWF0KSB7CisgICAgICAgIAorICAgICAgICBpZiAoIXN1cHBvcnRTdHlsZWRGb3JtYXQgJiYgIXN1cHBvcnRQbGFpbkZvcm1hdCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiTXVzdCBzdXBwb3J0IGF0IGxlYXN0IG9uZSBmb3JtYXQuIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZOZXcgPSBhZGRNZW51SXRlbShFZGl0b3JSZXNvdXJjZXMuTkVXKTsKKyAgICAgICAgZk5ld1dpbmRvdyA9IGFkZE1lbnVJdGVtKEVkaXRvclJlc291cmNlcy5ORVdfV0lORE9XKTsKKyAgICAgICAgCisgICAgICAgIGFkZFNlcGFyYXRvcigpOworCisgICAgICAgIGZPcGVuID0gYWRkTWVudUl0ZW0oRWRpdG9yUmVzb3VyY2VzLk9QRU4pOworCisgICAgICAgIGZTYXZlID0gYWRkTWVudUl0ZW0oRWRpdG9yUmVzb3VyY2VzLlNBVkUpOworICAgICAgICAKKyAgICAgICAgaWYgKHN1cHBvcnRTdHlsZWRGb3JtYXQpIHsKKyAgICAgICAgICAgIGlmIChzdXBwb3J0UGxhaW5Gb3JtYXQpIHsKKyAgICAgICAgICAgICAgICBmU2F2ZUFzU3R5bGVkID0gYWRkTWVudUl0ZW0oRWRpdG9yUmVzb3VyY2VzLlNBVkVfQVNfU1RZTEVEKTsKKyAgICAgICAgICAgICAgICBmU2F2ZUFzVGV4dCA9IGFkZE1lbnVJdGVtKEVkaXRvclJlc291cmNlcy5TQVZFX0FTX1RFWFQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgZlNhdmVBc1N0eWxlZCA9IGFkZE1lbnVJdGVtKEVkaXRvclJlc291cmNlcy5TQVZFX0FTKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZTYXZlQXNUZXh0ID0gYWRkTWVudUl0ZW0oRWRpdG9yUmVzb3VyY2VzLlNBVkVfQVMpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBhZGRTZXBhcmF0b3IoKTsKKyAgICAgICAgZkNsb3NlID0gYWRkTWVudUl0ZW0oRWRpdG9yUmVzb3VyY2VzLkNMT1NFKTsKKyAgICAgICAgYWRkU2VwYXJhdG9yKCk7CisgICAgICAgIGZQcmludCA9IGFkZE1lbnVJdGVtKEVkaXRvclJlc291cmNlcy5QUklOVCk7CisgICAgICAgIGFkZFNlcGFyYXRvcigpOworICAgICAgICBmRXhpdCA9IGFkZE1lbnVJdGVtKEVkaXRvclJlc291cmNlcy5FWElUKTsKKyAgICB9CisgICAgCisgICAgcHJvdGVjdGVkIGFic3RyYWN0IE9iamVjdCBhZGRNZW51SXRlbShTdHJpbmcga2V5KTsKKworICAgIHByb3RlY3RlZCBhYnN0cmFjdCB2b2lkIGFkZFNlcGFyYXRvcigpOworICAgIAorICAgIHB1YmxpYyBmaW5hbCB2b2lkIGFjdGlvblBlcmZvcm1lZChBY3Rpb25FdmVudCBldmVudCkgeworCisgICAgICAgIE9iamVjdCBzb3VyY2UgPSBldmVudC5nZXRTb3VyY2UoKTsKKworICAgICAgICBpZiAoc291cmNlID09IGZOZXcpIHsKKyAgICAgICAgICAgIGZEb2N1bWVudFdpbmRvdy5kb05ldygpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHNvdXJjZSA9PSBmTmV3V2luZG93KSB7CisgICAgICAgICAgICBmQXBwbGljYXRpb24uZG9OZXdXaW5kb3coKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChzb3VyY2UgPT0gZk9wZW4pIHsKKyAgICAgICAgICAgIGZEb2N1bWVudFdpbmRvdy5kb09wZW4oKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChzb3VyY2UgPT0gZkNsb3NlKSB7CisgICAgICAgICAgICBmRG9jdW1lbnRXaW5kb3cuZG9DbG9zZSgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHNvdXJjZSA9PSBmU2F2ZSkgeworICAgICAgICAgICAgZkRvY3VtZW50V2luZG93LmRvU2F2ZSgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHNvdXJjZSA9PSBmU2F2ZUFzU3R5bGVkKSB7CisgICAgICAgICAgICBmRG9jdW1lbnRXaW5kb3cuZG9TYXZlQXMoVGV4dERvY3VtZW50LlNUWUxFRF9URVhUKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChzb3VyY2UgPT0gZlNhdmVBc1RleHQpIHsKKyAgICAgICAgICAgIGZEb2N1bWVudFdpbmRvdy5kb1NhdmVBcyhUZXh0RG9jdW1lbnQuUExBSU5fVEVYVCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoc291cmNlID09IGZQcmludCkgeworICAgICAgICAgICAgZkRvY3VtZW50V2luZG93LmRvUHJpbnQoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChzb3VyY2UgPT0gZkV4aXQpIHsKKyAgICAgICAgICAgIGZBcHBsaWNhdGlvbi5kb0V4aXQoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiVW5rbm93biBldmVudCBzb3VyY2U6ICIgKyBzb3VyY2UpOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2RlbW8vTWVudURhdGEuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2RlbW8vTWVudURhdGEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5jZGY0MWU5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvZGVtby9NZW51RGF0YS5qYXZhCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IE1lbnVEYXRhLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NDM6MDkgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5kZW1vOworCitwdWJsaWMgZmluYWwgY2xhc3MgTWVudURhdGEgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcml2YXRlIFN0cmluZyBmTmFtZTsKKyAgICBwcml2YXRlIGJvb2xlYW4gZkhhc1Nob3J0Y3V0OworICAgIHByaXZhdGUgY2hhciBmU2hvcnRjdXQ7CisgICAgcHJpdmF0ZSBpbnQgZlNob3J0Y3V0S2V5Q29kZTsKKworICAgIHB1YmxpYyBNZW51RGF0YShTdHJpbmcgbmFtZSkgeworCisgICAgICAgIGZOYW1lID0gbmFtZTsKKyAgICAgICAgZkhhc1Nob3J0Y3V0ID0gZmFsc2U7CisgICAgfQorCisgICAgcHVibGljIE1lbnVEYXRhKFN0cmluZyBuYW1lLCBjaGFyIGNoLCBpbnQga2V5Q29kZSkgeworCisgICAgICAgIGZOYW1lID0gbmFtZTsKKyAgICAgICAgZkhhc1Nob3J0Y3V0ID0gdHJ1ZTsKKyAgICAgICAgZlNob3J0Y3V0ID0gY2g7CisgICAgICAgIGZTaG9ydGN1dEtleUNvZGUgPSBrZXlDb2RlOworICAgIH0KKworICAgIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpIHsKKworICAgICAgICByZXR1cm4gZk5hbWU7CisgICAgfQorCisgICAgcHVibGljIGNoYXIgZ2V0U2hvcnRjdXQoKSB7CisKKyAgICAgICAgaWYgKCFmSGFzU2hvcnRjdXQpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiTWVudSBkb2Vzbid0IGhhdmUgc2hvcnRjdXQiKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZlNob3J0Y3V0OworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgaW50IGdldFNob3J0Y3V0S2V5Q29kZSgpIHsKKyAgICAKKyAgICAgICAgcmV0dXJuIGZTaG9ydGN1dEtleUNvZGU7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gaGFzU2hvcnRjdXQoKSB7CisKKyAgICAgICAgcmV0dXJuIGZIYXNTaG9ydGN1dDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvZGVtby9SZXNvdXJjZVV0aWxzLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC9kZW1vL1Jlc291cmNlVXRpbHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lNjdkZjgxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvZGVtby9SZXNvdXJjZVV0aWxzLmphdmEKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogUmVzb3VyY2VVdGlscy5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjQzOjA5ICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQuZGVtbzsKKworaW1wb3J0IGphdmEuYXd0Lk1lbnVJdGVtOworaW1wb3J0IGphdmEuYXd0Lk1lbnVTaG9ydGN1dDsKKworaW1wb3J0IGphdmEudXRpbC5NaXNzaW5nUmVzb3VyY2VFeGNlcHRpb247CitpbXBvcnQgamF2YS51dGlsLlJlc291cmNlQnVuZGxlOworCisvKioKKyAqIFV0aWxpdHkgY2xhc3MgZm9yIGRlYWxpbmcgd2l0aCByZXNvdXJjZSBkYXRhLgorICovCitwdWJsaWMgZmluYWwgY2xhc3MgUmVzb3VyY2VVdGlscyB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHByaXZhdGUgc3RhdGljIFJlc291cmNlQnVuZGxlIEJVTkRMRTsKKyAgICBzdGF0aWMgeworICAgICAgICBTdHJpbmcgYnVuZGxlTmFtZSA9ICJjb20uaWJtLnJpY2h0ZXh0LmRlbW8uRWRpdG9yUmVzb3VyY2VzIjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIEJVTkRMRSA9IFJlc291cmNlQnVuZGxlLmdldEJ1bmRsZShidW5kbGVOYW1lKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaChNaXNzaW5nUmVzb3VyY2VFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJDb3VsZG4ndCBsb2FkICIgKyBidW5kbGVOYW1lICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOyAgRXhjZXB0aW9uOiAiICsgZSk7CisgICAgICAgICAgICBCVU5ETEUgPSBuZXcgRWRpdG9yUmVzb3VyY2VzKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRTdHJpbmcoU3RyaW5nIGtleSkgeworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gQlVORExFLmdldFN0cmluZyhrZXkpOworICAgICAgICB9CisgICAgICAgIGNhdGNoKE1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICByZXR1cm4ga2V5OworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBNZW51RGF0YSBnZXRNZW51RGF0YShTdHJpbmcga2V5KSB7CisgICAgCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gKE1lbnVEYXRhKSBCVU5ETEUuZ2V0T2JqZWN0KGtleSk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2goTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgTWVudURhdGEoa2V5KTsKKyAgICAgICAgfQorICAgIH0KKyAgICAgICAgCisgICAgcHVibGljIHN0YXRpYyBNZW51SXRlbSBjcmVhdGVNZW51SXRlbShTdHJpbmcga2V5KSB7CisKKyAgICAgICAgTWVudURhdGEgbWVudURhdGEgPSBnZXRNZW51RGF0YShrZXkpOworCisgICAgICAgIGlmIChtZW51RGF0YS5oYXNTaG9ydGN1dCgpKSB7CisgICAgICAgICAgICBNZW51U2hvcnRjdXQgc2hvcnRjdXQgPSBuZXcgTWVudVNob3J0Y3V0KG1lbnVEYXRhLmdldFNob3J0Y3V0KCkpOworICAgICAgICAgICAgcmV0dXJuIG5ldyBNZW51SXRlbShtZW51RGF0YS5nZXROYW1lKCksIHNob3J0Y3V0KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgTWVudUl0ZW0obWVudURhdGEuZ2V0TmFtZSgpKTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC9kZW1vL1N5bnRheENvbG9yZXIuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2RlbW8vU3ludGF4Q29sb3Jlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjg1NDZkNjkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC9kZW1vL1N5bnRheENvbG9yZXIuamF2YQpAQCAtMCwwICsxLDI4OCBAQAorLyoKKyAqICRSQ1NmaWxlOiBTeW50YXhDb2xvcmVyLmphdmEsdiAkICRSZXZpc2lvbjogMS4yICQgJERhdGU6IDIwMDIvMDIvMTYgMDM6MDY6MzMgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCisKK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5kZW1vOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5hd3R1aS5UZXh0RnJhbWU7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuTVRleHRQYW5lbDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5UZXh0UGFuZWxFdmVudDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5UZXh0UGFuZWxMaXN0ZW5lcjsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NQ29uc3RUZXh0OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NVGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuU3R5bGVkVGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuU3R5bGVNb2RpZmllcjsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZU1hcDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRsYXlvdXQuYXR0cmlidXRlcy5UZXh0QXR0cmlidXRlOworCitpbXBvcnQgamF2YS5hd3QuQ29sb3I7CisKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5XaW5kb3dBZGFwdGVyOworaW1wb3J0IGphdmEuYXd0LmV2ZW50LldpbmRvd0V2ZW50OworCitpbXBvcnQgamF2YS50ZXh0LkJyZWFrSXRlcmF0b3I7CitpbXBvcnQgamF2YS50ZXh0LkNoYXJhY3Rlckl0ZXJhdG9yOworaW1wb3J0IGphdmEudGV4dC5Db2xsYXRpb25LZXk7CitpbXBvcnQgamF2YS50ZXh0LkNvbGxhdG9yOworCitpbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOworaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7CisKKy8qKgorICogU3ludGF4Q29sb3JlciBpcyBhIFRleHRQYW5lbExpc3RlbmVyIHRoYXQgYXBwbGllcyBhIHN0eWxlCisgKiB0byBhIHNldCBvZiB3b3JkcyBpbiB0aGUgVGV4dFBhbmVsLgorICovCitwdWJsaWMgZmluYWwgY2xhc3MgU3ludGF4Q29sb3JlciBpbXBsZW1lbnRzIFRleHRQYW5lbExpc3RlbmVyIHsKKyAgICAKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNsYXNzIENvbG9yZXIgeworICAgICAgICAKKyAgICAgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICAgICAgcHJpdmF0ZSBpbnQgZlN0YXJ0OworICAgICAgICBwcml2YXRlIEhhc2h0YWJsZSBmU3R5bGVNYXA7CisgICAgICAgIHByaXZhdGUgQ29sbGF0b3IgZkNvbGxhdG9yID0gQ29sbGF0b3IuZ2V0SW5zdGFuY2UoKTsKKyAgICAgICAgcHJpdmF0ZSBCcmVha0l0ZXJhdG9yIGZCcmVha0l0ZXIgPSBCcmVha0l0ZXJhdG9yLmdldFdvcmRJbnN0YW5jZSgpOworCisgICAgICAgIHByaXZhdGUgU3RyaW5nIGZUZXh0OworICAgICAgICBwcml2YXRlIGludCBmQ3VycmVudFN0YXJ0OworICAgICAgICBwcml2YXRlIGludCBmQ3VycmVudExpbWl0OworICAgICAgICBwcml2YXRlIEF0dHJpYnV0ZU1hcCBmQ3VycmVudFN0eWxlOworICAgICAgICAKKyAgICAgICAgQ29sb3JlcihIYXNodGFibGUgc3R5bGVzKSB7CisKKyAgICAgICAgICAgIGZTdHlsZU1hcCA9IG5ldyBIYXNodGFibGUoc3R5bGVzLnNpemUoKSk7CisKKyAgICAgICAgICAgIEVudW1lcmF0aW9uIGUgPSBzdHlsZXMua2V5cygpOworICAgICAgICAgICAgd2hpbGUgKGUuaGFzTW9yZUVsZW1lbnRzKCkpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgayA9IChTdHJpbmcpIGUubmV4dEVsZW1lbnQoKTsKKyAgICAgICAgICAgICAgICBmU3R5bGVNYXAucHV0KGZDb2xsYXRvci5nZXRDb2xsYXRpb25LZXkoayksIHN0eWxlcy5nZXQoaykpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIHNldChDaGFyYWN0ZXJJdGVyYXRvciB0ZXh0LCBpbnQgc3RhcnQsIGludCBsaW1pdCkgeworICAgICAgICAgICAgCisgICAgICAgICAgICBmU3RhcnQgPSBzdGFydDsKKworICAgICAgICAgICAgU3RyaW5nQnVmZmVyIHNiID0gbmV3IFN0cmluZ0J1ZmZlcihsaW1pdC1zdGFydCk7CisgICAgICAgICAgICBmb3IgKGNoYXIgYz10ZXh0LnNldEluZGV4KHN0YXJ0KTsgdGV4dC5nZXRJbmRleCgpICE9IGxpbWl0OyBjPXRleHQubmV4dCgpKSB7CisgICAgICAgICAgICAgICAgc2IuYXBwZW5kKGMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZlRleHQgPSBzYi50b1N0cmluZygpOworICAgICAgICAgICAgZkN1cnJlbnRTdGFydCA9IGZDdXJyZW50TGltaXQgPSAwOworICAgICAgICAgICAgZkN1cnJlbnRTdHlsZSA9IEF0dHJpYnV0ZU1hcC5FTVBUWV9BVFRSSUJVVEVfTUFQOworICAgICAgICAgICAgCisgICAgICAgICAgICBmQnJlYWtJdGVyLnNldFRleHQoZlRleHQpOworICAgICAgICAgICAgZkJyZWFrSXRlci5maXJzdCgpOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgYm9vbGVhbiBuZXh0KCkgeworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoZkN1cnJlbnRMaW1pdCA9PSBmVGV4dC5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIGZUZXh0ID0gbnVsbDsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZDdXJyZW50U3RhcnQgPSBmQ3VycmVudExpbWl0OworICAgICAgICAgICAgZkN1cnJlbnRMaW1pdCA9IGZCcmVha0l0ZXIubmV4dCgpOworICAgICAgICAgICAgCisgICAgICAgICAgICBTdHJpbmcgd29yZCA9IGZUZXh0LnN1YnN0cmluZyhmQ3VycmVudFN0YXJ0LCBmQ3VycmVudExpbWl0KTsKKyAgICAgICAgICAgIENvbGxhdGlvbktleSBjayA9IGZDb2xsYXRvci5nZXRDb2xsYXRpb25LZXkod29yZCk7CisgICAgICAgICAgICBmQ3VycmVudFN0eWxlID0gKEF0dHJpYnV0ZU1hcCkgZlN0eWxlTWFwLmdldChjayk7CisgICAgICAgICAgICBpZiAoZkN1cnJlbnRTdHlsZSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgZkN1cnJlbnRTdHlsZSA9IEF0dHJpYnV0ZU1hcC5FTVBUWV9BVFRSSUJVVEVfTUFQOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGludCBjdXJyZW50U3RhcnQoKSB7CisgICAgICAgICAgICByZXR1cm4gZkN1cnJlbnRTdGFydCArIGZTdGFydDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaW50IGN1cnJlbnRMaW1pdCgpIHsKKyAgICAgICAgICAgIHJldHVybiBmQ3VycmVudExpbWl0ICsgZlN0YXJ0OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBBdHRyaWJ1dGVNYXAgY3VycmVudFN0eWxlKCkgeworICAgICAgICAgICAgcmV0dXJuIGZDdXJyZW50U3R5bGU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIEJyZWFrSXRlcmF0b3IgZkJyZWFrSXRlciA9IEJyZWFrSXRlcmF0b3IuZ2V0V29yZEluc3RhbmNlKCk7CisgICAgcHJpdmF0ZSBDb2xvcmVyIGZDb2xvcmVyOworICAgIHByaXZhdGUgYm9vbGVhbiBmTW9kaWZ5aW5nID0gZmFsc2U7CisgICAgcHJpdmF0ZSBBdHRyaWJ1dGVNYXAgZkRlZmF1bHRLZXl3b3JkU3R5bGUgPSBBdHRyaWJ1dGVNYXAuRU1QVFlfQVRUUklCVVRFX01BUDsKKyAgICBwcml2YXRlIEhhc2h0YWJsZSBmTW9kaWZpZXJDYWNoZTsKKyAgICAKKyAgICBwdWJsaWMgU3ludGF4Q29sb3JlcigpIHsKKyAgICAgICAgCisgICAgICAgIHRoaXMobnVsbCk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBTeW50YXhDb2xvcmVyKE1UZXh0UGFuZWwgcGFuZWwpIHsKKyAgICAgICAgCisgICAgICAgIEhhc2h0YWJsZSBodCA9IG5ldyBIYXNodGFibGUoKTsKKworICAgICAgICAvL1VuY29tbWVudCB0aGlzIHRvIG1ha2Uga2V5d29yZHMgYXBwZWFyIHJpZ2h0LXRvLWxlZnQhCisgICAgICAgIC8vZkRlZmF1bHRLZXl3b3JkU3R5bGUgPSBmRGVmYXVsdEtleXdvcmRTdHlsZS5hZGRBdHRyaWJ1dGUoVGV4dEF0dHJpYnV0ZS5CSURJX0VNQkVERElORywgCisgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEludGVnZXIoLTEpKTsKKyAgICAgICAgCisgICAgICAgIGZEZWZhdWx0S2V5d29yZFN0eWxlID0gZkRlZmF1bHRLZXl3b3JkU3R5bGUuYWRkQXR0cmlidXRlKFRleHRBdHRyaWJ1dGUuVU5ERVJMSU5FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0QXR0cmlidXRlLlVOREVSTElORV9PTik7CisgICAgICAgIGZEZWZhdWx0S2V5d29yZFN0eWxlID0gZkRlZmF1bHRLZXl3b3JkU3R5bGUuYWRkQXR0cmlidXRlKFRleHRBdHRyaWJ1dGUuRk9SRUdST1VORCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yLmJsdWUpOworICAgICAgICAKKyAgICAgICAgU3RyaW5nW10gamF2YVdvcmRzID0geyJhYnN0cmFjdCIgLCAiYm9vbGVhbiIsICJicmVhayIsICJieXRlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJieXZhbHVlIiwgImNhc2UiLCAiY2FzdCIsICJkZWZhdWx0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkbyIsICJkb3VibGUiLCAiZWxzZSIsICJleHRlbmRzIiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmFsc2UiLCAiZmluYWwiLCAiZ290byIsICJpZiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW1wbGVtZW50cyIsICJpbXBvcnQiLCAiaW5uZXIiLCAiaW5zdGFuY2VvZiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW50IiwgIm9wZXJhdG9yIiwgIm91dGVyIiwgInBhY2thZ2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInByaXZhdGUiLCAicHJvdGVjdGVkIiwgInB1YmxpYyIsICJyZXN0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzeW5jaHJvbml6ZWQiLCAidGhpcyIsICJ0aHJvdyIsICJ0aHJvd3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRyYW5zaWVudCIsICJ0cnVlIiwgInRyeSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2F0Y2giLCAiY2hhciIsICJjb25zdCIsICJjb250aW51ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmluYWxseSIsICJmbG9hdCIsICJmb3IiLCAiZnV0dXJlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnZW5lcmljIiwgImludGVyZmFjZSIsICJsb25nIiwgIm5hdGl2ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmV3IiwgIm51bGwiLCAicmV0dXJuIiwgInNob3J0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGF0aWMiLCAic3VwZXIiLCAic3dpdGNoIiwgInZhciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidm9pZCIsICJ2b2xhdGlsZSIsICJ3aGlsZSIsICJjbGFzcyJ9OworCisgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IGphdmFXb3Jkcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgaHQucHV0KGphdmFXb3Jkc1tpXSwgZkRlZmF1bHRLZXl3b3JkU3R5bGUpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmQ29sb3JlciA9IG5ldyBDb2xvcmVyKGh0KTsKKyAgICAgICAgCisgICAgICAgIGlmIChwYW5lbCAhPSBudWxsKSB7CisgICAgICAgICAgICBNQ29uc3RUZXh0IHRleHQgPSBwYW5lbC5nZXRUZXh0KCk7CisgICAgICAgICAgICBjb2xvclJhbmdlKDAsIHRleHQubGVuZ3RoKCksIHRleHQuY3JlYXRlQ2hhcmFjdGVySXRlcmF0b3IoKSwgcGFuZWwpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmTW9kaWZpZXJDYWNoZSA9IG5ldyBIYXNodGFibGUoMik7CisgICAgICAgIGZNb2RpZmllckNhY2hlLnB1dChmRGVmYXVsdEtleXdvcmRTdHlsZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHlsZU1vZGlmaWVyLmNyZWF0ZVJlcGxhY2VNb2RpZmllcihmRGVmYXVsdEtleXdvcmRTdHlsZSkpOworICAgICAgICBmTW9kaWZpZXJDYWNoZS5wdXQoQXR0cmlidXRlTWFwLkVNUFRZX0FUVFJJQlVURV9NQVAsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgU3R5bGVNb2RpZmllci5jcmVhdGVSZXBsYWNlTW9kaWZpZXIoQXR0cmlidXRlTWFwLkVNUFRZX0FUVFJJQlVURV9NQVApKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIGJvb2xlYW4gcmVzcG9uZHNUb0V2ZW50VHlwZShpbnQgdHlwZSkgeworICAgICAgICAKKyAgICAgICAgcmV0dXJuIHR5cGUgPT0gVGV4dFBhbmVsRXZlbnQuVEVYVF9DSEFOR0VEOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCB0ZXh0RXZlbnRPY2N1cnJlZChUZXh0UGFuZWxFdmVudCBlKSB7CisKKyAgICAgICAgaWYgKGZNb2RpZnlpbmcpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgTVRleHRQYW5lbCBwYW5lbCA9IChNVGV4dFBhbmVsKSBlLmdldFNvdXJjZSgpOworICAgICAgICAKKyAgICAgICAgZmluYWwgTUNvbnN0VGV4dCB0ZXh0ID0gcGFuZWwuZ2V0VGV4dCgpOworICAgICAgICBpbnQgc3RhcnQgPSB0ZXh0LmRhbWFnZWRSYW5nZVN0YXJ0KCk7CisgICAgICAgIGludCBsaW1pdCA9IHRleHQuZGFtYWdlZFJhbmdlTGltaXQoKTsKKyAgICAgICAgaWYgKHN0YXJ0ID4gbGltaXQpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQ2hhcmFjdGVySXRlcmF0b3IgdGV4dEl0ZXIgPSB0ZXh0LmNyZWF0ZUNoYXJhY3Rlckl0ZXJhdG9yKCk7CisgICAgICAgIAorICAgICAgICBmQnJlYWtJdGVyLnNldFRleHQodGV4dEl0ZXIpOworICAgICAgICBpZiAoc3RhcnQgPiAwKSB7CisgICAgICAgICAgICBpZiAoc3RhcnQgPT0gdGV4dC5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIGZCcmVha0l0ZXIubGFzdCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgZkJyZWFrSXRlci5mb2xsb3dpbmcoc3RhcnQtMSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGFydCA9IGZCcmVha0l0ZXIucHJldmlvdXMoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAobGltaXQgPCB0ZXh0Lmxlbmd0aCgpKSB7CisgICAgICAgICAgICBmQnJlYWtJdGVyLmZvbGxvd2luZyhsaW1pdCk7CisgICAgICAgICAgICBpbnQgbDsKKyAgICAgICAgICAgIGlmICgobD1mQnJlYWtJdGVyLnByZXZpb3VzKCkpIDw9IGxpbWl0KSB7CisgICAgICAgICAgICAgICAgbGltaXQgPSBmQnJlYWtJdGVyLm5leHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZk1vZGlmeWluZyA9IHRydWU7CisgICAgICAgIGNvbG9yUmFuZ2Uoc3RhcnQsIGxpbWl0LCB0ZXh0SXRlciwgcGFuZWwpOworICAgICAgICBmTW9kaWZ5aW5nID0gZmFsc2U7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgdm9pZCBjb2xvclJhbmdlKGZpbmFsIGludCBzdGFydCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgaW50IGxpbWl0LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXJJdGVyYXRvciB0ZXh0SXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNVGV4dFBhbmVsIHBhbmVsKSB7CisgICAgICAgIAorICAgICAgICBmQ29sb3Jlci5zZXQodGV4dEl0ZXIsIHN0YXJ0LCBsaW1pdCk7CisKKyAgICAgICAgTUNvbnN0VGV4dCBvbGRUZXh0ID0gcGFuZWwuZ2V0VGV4dCgpOworICAgICAgICBNVGV4dCBuZXdUZXh0ID0gbnVsbDsKKyAgICAgICAgCisgICAgICAgIHdoaWxlIChmQ29sb3Jlci5uZXh0KCkpIHsKKworICAgICAgICAgICAgaW50IHJhbmdlU3RhcnQgPSBmQ29sb3Jlci5jdXJyZW50U3RhcnQoKTsKKyAgICAgICAgICAgIGludCByYW5nZUxpbWl0ID0gZkNvbG9yZXIuY3VycmVudExpbWl0KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEF0dHJpYnV0ZU1hcCBzdHlsZSA9IGZDb2xvcmVyLmN1cnJlbnRTdHlsZSgpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAob2xkVGV4dC5jaGFyYWN0ZXJTdHlsZUxpbWl0KHJhbmdlU3RhcnQpIDwgcmFuZ2VMaW1pdCB8fAorICAgICAgICAgICAgICAgICAgICBvbGRUZXh0LmNoYXJhY3RlclN0eWxlQXQocmFuZ2VTdGFydCkgIT0gc3R5bGUpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGludCBjc3RhcnQgPSByYW5nZVN0YXJ0LXN0YXJ0OworICAgICAgICAgICAgICAgIGludCBjbGltaXQgPSByYW5nZUxpbWl0LXN0YXJ0OworICAgICAgICAgICAgICAgIGlmIChuZXdUZXh0ID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgbmV3VGV4dCA9IG5ldyBTdHlsZWRUZXh0KG9sZFRleHQsIHN0YXJ0LCBsaW1pdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFN0eWxlTW9kaWZpZXIgbW9kID0gKFN0eWxlTW9kaWZpZXIpIGZNb2RpZmllckNhY2hlLmdldChzdHlsZSk7CisgICAgICAgICAgICAgICAgbmV3VGV4dC5tb2RpZnlDaGFyYWN0ZXJTdHlsZXMoY3N0YXJ0LCBjbGltaXQsIG1vZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChuZXdUZXh0ICE9IG51bGwpIHsKKyAgICAgICAgCisgICAgICAgICAgICBpbnQgb2xkU3RhcnQgPSBwYW5lbC5nZXRTZWxlY3Rpb25TdGFydCgpOworICAgICAgICAgICAgaW50IG9sZExpbWl0ID0gcGFuZWwuZ2V0U2VsZWN0aW9uRW5kKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHBhbmVsLnJlcGxhY2VSYW5nZShuZXdUZXh0LCBzdGFydCwgbGltaXQpOyAgICAgICAgICAgIAorICAgIAorICAgICAgICAgICAgcGFuZWwuc2VsZWN0KG9sZFN0YXJ0LCBvbGRMaW1pdCk7CisgICAgICAgICAgICBpZiAob2xkU3RhcnQgPT0gb2xkTGltaXQpIHsKKyAgICAgICAgICAgICAgICBTdHlsZU1vZGlmaWVyIG1vZCA9IChTdHlsZU1vZGlmaWVyKSBmTW9kaWZpZXJDYWNoZS5nZXQoQXR0cmlidXRlTWFwLkVNUFRZX0FUVFJJQlVURV9NQVApOyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBwYW5lbC5tb2RpZnlDaGFyYWN0ZXJTdHlsZU9uU2VsZWN0aW9uKG1vZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICAKKyAgICAgICAgVGV4dEZyYW1lIGYgPSBuZXcgVGV4dEZyYW1lKCk7CisgICAgICAgIGYuYWRkV2luZG93TGlzdGVuZXIobmV3IFdpbmRvd0FkYXB0ZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCB3aW5kb3dDbG9zaW5nKFdpbmRvd0V2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0uZXhpdCgwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgICAgIGYuc2V0U2l6ZSg0MDAsIDMwMCk7CisgICAgICAgIE1UZXh0UGFuZWwgcGFuZWwgPSBmLmdldFRleHRQYW5lbCgpOworICAgICAgICBwYW5lbC5hZGRMaXN0ZW5lcihuZXcgU3ludGF4Q29sb3JlcihwYW5lbCkpOworICAgICAgICBmLnNob3coKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvZGVtby9UZXh0RG9jdW1lbnQuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2RlbW8vVGV4dERvY3VtZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uY2M0NjRjZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2RlbW8vVGV4dERvY3VtZW50LmphdmEKQEAgLTAsMCArMSwzNTEgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFRleHREb2N1bWVudC5qYXZhLHYgJCAkUmV2aXNpb246IDEuMyAkICREYXRlOiAyMDAyLzAyLzE2IDAzOjA2OjM0ICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQuZGVtbzsKKworaW1wb3J0IGphdmEuaW8uKjsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NQ29uc3RUZXh0OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NVGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuU3R5bGVkVGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5NVGV4dFBhbmVsOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZU1hcDsKKworLyoqCisgKiBBIFRleHREb2N1bWVudCBoYW5kbGVzIHRoZSBhc3NvY2lhdGlvbiBiZXR3ZWVuIGEgZmlsZSBvbiBkaXNrCisgKiBhbmQgYSBUZXh0UGFuZWwuCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBUZXh0RG9jdW1lbnQgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQlVGX1NJWkUgPSAxMDI0OworICAgIAorICAgIHByaXZhdGUgU3RyaW5nIGZUaXRsZTsKKyAgICBwcml2YXRlIE1Db25zdFRleHQgZlRleHQ7CisgICAgcHJpdmF0ZSBGaWxlIGZGaWxlOworICAgIHByaXZhdGUgTVRleHRQYW5lbCBmVGV4dFBhbmVsID0gbnVsbDsKKyAgICBwcml2YXRlIGJvb2xlYW4gaXNNb2RpZmllZCA9IGZhbHNlOworICAgIHByaXZhdGUgaW50IGZGb3JtYXQgPSBTVFlMRURfVEVYVDsKKyAgICAKKyAgICBwcml2YXRlIFRleHREb2N1bWVudChTdHJpbmcgdGl0bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgTUNvbnN0VGV4dCB0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGUgZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZm9ybWF0KSB7CisgICAgICAgIAorICAgICAgICBmVGl0bGUgPSB0aXRsZTsKKyAgICAgICAgZlRleHQgPSB0ZXh0OworICAgICAgICBmRmlsZSA9IGZpbGU7CisgICAgICAgIHNldEZvcm1hdChmb3JtYXQpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTVFlMRURfVEVYVCA9IDA7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUExBSU5fVEVYVCA9IDE7CisgICAgCisgICAgLyoqIAorICAgICAqIFJldHVybiBhIG5ldyBUZXh0RG9jdW1lbnQgd2l0aCBubyBhc3NvY2lhdGVkIGZpbGUgYW5kCisgICAgICogZW1wdHkgdGV4dC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFRleHREb2N1bWVudCBjcmVhdGVFbXB0eShTdHJpbmcgdGl0bGUsIGludCBmb3JtYXQpIHsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBuZXcgVGV4dERvY3VtZW50KHRpdGxlLCBuZXcgU3R5bGVkVGV4dCgpLCBudWxsLCBmb3JtYXQpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSBUZXh0RG9jdW1lbnQgY3JlYXRlZCBmcm9tIHRoZSBjb250ZW50cyBvZiB0aGUgZ2l2ZW4KKyAgICAgKiBmaWxlLiAgVGhpcyBtZXRob2QgbWF5IHRocm93IGFuIGV4Y2VwdGlvbiBpZiB0aGUgZmlsZSBjYW5ub3QKKyAgICAgKiBiZSByZWFkLiAgSW4gcGFydGljdWxhciwgaWYgdGhlIGZvcm1hdCBpcyBnaXZlbiBhcyBTVFlMRURfVEVYVAorICAgICAqIGJ1dCB0aGUgZmlsZSBkb2VzIG5vdCBjb250YWluIGEgc2VyaWFsaXplZCBNQ29uc3RUZXh0LCAKKyAgICAgKiB0aGlzIG1ldGhvZCB3aWxsIHRocm93IFN0cmVhbUNvcnJ1cHRlZEV4Y2VwdGlvbi4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFRleHREb2N1bWVudCBjcmVhdGVGcm9tRmlsZShGaWxlIGZpbGUsIGludCBmb3JtYXQpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICAKKyAgICAgICAgaWYgKGZvcm1hdCAhPSBTVFlMRURfVEVYVCAmJiBmb3JtYXQgIT0gUExBSU5fVEVYVCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBmb3JtYXQiKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgTUNvbnN0VGV4dCB0ZXh0OworICAgICAgICBpZiAoZm9ybWF0ID09IFNUWUxFRF9URVhUKSB7CisgICAgICAgICAgICB0ZXh0ID0gcmVhZE1UZXh0KGZpbGUpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGV4dCA9IHJlYWRNVGV4dEZyb21UZXh0RmlsZShmaWxlKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgVGV4dERvY3VtZW50IGRvY3VtZW50ID0gbmV3IFRleHREb2N1bWVudChmaWxlLmdldE5hbWUoKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCk7CisgICAgICAgIHJldHVybiBkb2N1bWVudDsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgdGhpcyBkb2N1bWVudCdzIHRleHQgZGlmZmVycyBmcm9tIHRoZSBjb250ZW50cworICAgICAqIG9mIGl0cyBmaWxlLgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGlzTW9kaWZpZWQoKSB7CisgICAgICAgIAorICAgICAgICBpZiAoZlRleHRQYW5lbCA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gaXNNb2RpZmllZDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBmVGV4dFBhbmVsLmlzTW9kaWZpZWQoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIE1UZXh0UGFuZWwgdGhhdCB3aWxsIGJlIHVzZWQgdG8gZWRpdCB0aGUgZG9jdW1lbnQncworICAgICAqIHRleHQuICBUaGUgZG9jdW1lbnQncyB0ZXh0IGJlY29tZXMgdGhlIGNvbnRlbnRzIG9mIHRoZQorICAgICAqIE1UZXh0UGFuZWwuCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0VGV4dFBhbmVsKE1UZXh0UGFuZWwgdGV4dFBhbmVsKSB7CisKKyAgICAgICAgaWYgKGZUZXh0UGFuZWwgIT0gbnVsbCkgeworICAgICAgICAgICAgZlRleHQgPSBmVGV4dFBhbmVsLmdldFRleHQoKTsKKyAgICAgICAgICAgIGlzTW9kaWZpZWQgPSBmVGV4dFBhbmVsLmlzTW9kaWZpZWQoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZlRleHRQYW5lbCA9IHRleHRQYW5lbDsKKyAgICAgICAgCisgICAgICAgIGlmIChmVGV4dFBhbmVsICE9IG51bGwpIHsKKyAgICAgICAgICAgIGZUZXh0UGFuZWwuc2V0VGV4dChmVGV4dCk7CisgICAgICAgICAgICBmVGV4dCA9IG51bGw7CisgICAgICAgICAgICBmVGV4dFBhbmVsLnNldE1vZGlmaWVkKGlzTW9kaWZpZWQpOworICAgICAgICAgICAgZlRleHRQYW5lbC5jbGVhckNvbW1hbmRMb2coKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgRmlsZSBnZXRGaWxlKCkgeworICAgIAorICAgICAgICByZXR1cm4gZkZpbGU7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFNldCB0aGlzIGRvY3VtZW50J3MgZmlsZS4gIFRoZSBkb2N1bWVudCdzIHRpdGxlIHdpbGwKKyAgICAgKiBjaGFuZ2UgdG8gdGhlIGZpbGUgbmFtZS4gIFRoZSBmaWxlIGNhbm5vdCBiZSBudWxsLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldEZpbGUoRmlsZSBmaWxlKSB7CisgICAgICAgIAorICAgICAgICBmRmlsZSA9IGZpbGU7CisgICAgICAgIGZUaXRsZSA9IGZpbGUuZ2V0TmFtZSgpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIGZvcm1hdCBvZiB0aGlzIGRvY3VtZW50LiAgVGhlIGZvcm1hdCBkZXRlcm1pbmVzCisgICAgICogd2hldGhlciB0aGUgZG9jdW1lbnQgd2lsbCBiZSB3cml0dGVuIHRvIGZpbGVzIGFzIHN0eWxlZAorICAgICAqIHRleHQgb3IgcGxhaW4gY2hhcmFjdGVycy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRGb3JtYXQoaW50IGZvcm1hdCkgeworICAgICAgICAKKyAgICAgICAgaWYgKGZvcm1hdCAhPSBTVFlMRURfVEVYVCAmJiBmb3JtYXQgIT0gUExBSU5fVEVYVCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBmb3JtYXQiKTsKKyAgICAgICAgfQorICAgICAgICBmRm9ybWF0ID0gZm9ybWF0OworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGZvcm1hdCBvZiB0aGlzIGRvY3VtZW50LgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0Rm9ybWF0KCkgeworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZGb3JtYXQ7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFdyaXRlIHRoZSBkb2N1bWVudCdzIHRleHQgdG8gaXRzIGZpbGUuICBJZiB0aGUgZG9jdW1lbnQgZG9lcworICAgICAqIG5vdCBoYXZlIGFuIGFzc29jaWF0ZWQgZmlsZSB0aGVuIHRoaXMgbWV0aG9kIGlzIGVxdWl2YWxlbnQgdG8KKyAgICAgKiBzYXZlQXMuICBUaGlzIG1ldGhvZCByZXR1cm5zIHRydWUgaWYgdGhlIHNhdmUgb3BlcmF0aW9uIHN1Y2NlZWRzLgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIHNhdmUoKSB7CisKKyAgICAgICAgaWYgKGZGaWxlID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJDYW4ndCBzYXZlIHdpdGhvdXQgYSBmaWxlLiIpOworICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgIE1Db25zdFRleHQgdGV4dCA9IGdldFRleHQoKTsKKyAgICAgICAgYm9vbGVhbiBzdWNjZXNzID0gZkZvcm1hdD09U1RZTEVEX1RFWFQ/IHdyaXRlTVRleHQoZkZpbGUsIHRleHQpIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlUGxhaW5NVGV4dChmRmlsZSwgdGV4dCk7CisgICAgICAgIGlmIChzdWNjZXNzICYmIGZUZXh0UGFuZWwgIT0gbnVsbCkgeworICAgICAgICAgICAgZlRleHRQYW5lbC5zZXRNb2RpZmllZChmYWxzZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7CisgICAgfQorICAgIAorICAgIC8qKiAKKyAgICAgKiBSZXR1cm4gdGhpcyBkb2N1bWVudCdzIHN0eWxlZCB0ZXh0LgorICAgICAqLworICAgIHB1YmxpYyBNQ29uc3RUZXh0IGdldFRleHQoKSB7CisgICAgICAgIAorICAgICAgICBpZiAoZlRleHRQYW5lbCA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gZlRleHQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gZlRleHRQYW5lbC5nZXRUZXh0KCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSB0aXRsZSBvZiB0aGlzIGRvY3VtZW50LgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgZ2V0VGl0bGUoKSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gZlRpdGxlOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIE1UZXh0IHNlcmlhbGl6ZWQgaW4gdGhlIGdpdmVuIGZpbGUuCisgICAgICogSW4gY2FzZSBvZiBhbiBlcnJvciByZXR1cm4gbnVsbC4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBNQ29uc3RUZXh0IHJlYWRNVGV4dChGaWxlIGZpbGUpIHRocm93cyBFeGNlcHRpb24geworCisgICAgICAgIEZpbGVJbnB1dFN0cmVhbSBpblN0cmVhbSA9IG51bGw7CisgICAgICAgIAorICAgICAgICB0cnkgeworICAgICAgICAgICAgaW5TdHJlYW0gPSBuZXcgRmlsZUlucHV0U3RyZWFtKGZpbGUpOworICAgICAgICAgICAgT2JqZWN0SW5wdXRTdHJlYW0gb2JqU3RyZWFtID0gbmV3IE9iamVjdElucHV0U3RyZWFtKGluU3RyZWFtKTsKKworICAgICAgICAgICAgcmV0dXJuIChNQ29uc3RUZXh0KSBvYmpTdHJlYW0ucmVhZE9iamVjdCgpOworICAgICAgICB9CisgICAgICAgIGZpbmFsbHkgeworICAgICAgICAgICAgaWYgKGluU3RyZWFtICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBpblN0cmVhbS5jbG9zZSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXRjaChJT0V4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIiIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZWFkIHRoZSBnaXZlbiBmaWxlIGFzIGEgcGxhaW4gdGV4dCBmaWxlLCBhbmQgcmV0dXJuIGl0cworICAgICAqIGNvbnRlbnRzIGFzIGFuIE1Db25zdFRleHQuICBUaGUgY2hhcmFjdGVyIGFuZCBwYXJhZ3JhcGggc3R5bGVzIGluIAorICAgICAqIHRoZSByZXR1cm5lZCB0ZXh0IHdpbGwgYmUgRU1QVFlfQVRUUklCVVRFX01BUC4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBNQ29uc3RUZXh0IHJlYWRNVGV4dEZyb21UZXh0RmlsZShGaWxlIGZpbGUpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICAKKyAgICAgICAgSW5wdXRTdHJlYW1SZWFkZXIgaW4gPSBudWxsOworICAgICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGluID0gbmV3IEZpbGVSZWFkZXIoZmlsZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE1UZXh0IHRleHQgPSBuZXcgU3R5bGVkVGV4dCgpOworICAgICAgICAgICAgCisgICAgICAgICAgICBjaGFyW10gYnVmID0gbmV3IGNoYXJbQlVGX1NJWkVdOworICAgICAgICAgICAgaW50IHJlYWQ7CisgICAgICAgICAgICB3aGlsZSAoKHJlYWQ9aW4ucmVhZChidWYsIDAsIGJ1Zi5sZW5ndGgpKSAhPSAtMSkgeworICAgICAgICAgICAgICAgIGludCBsZW4gPSB0ZXh0Lmxlbmd0aCgpOworICAgICAgICAgICAgICAgIHRleHQucmVwbGFjZShsZW4sIGxlbiwgYnVmLCAwLCByZWFkLCBBdHRyaWJ1dGVNYXAuRU1QVFlfQVRUUklCVVRFX01BUCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdGV4dDsKKyAgICAgICAgfQorICAgICAgICBmaW5hbGx5IHsKKyAgICAgICAgICAgIGlmIChpbiAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgaW4uY2xvc2UoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2F0Y2goSU9FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCIiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBdHRlbXB0IHRvIHNhdmUgdGhlIGdpdmVuIHRleHQgaW4gdGhlIGdpdmVuIGZpbGUuCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSBvcGVyYXRpb24gc3VjY2VlZGVkCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiB3cml0ZU1UZXh0KEZpbGUgZmlsZSwgTUNvbnN0VGV4dCB0ZXh0KSB7CisKKyAgICAgICAgVGhyb3dhYmxlIGVycm9yID0gbnVsbDsKKyAgICAgICAgT3V0cHV0U3RyZWFtIG91dFN0cmVhbSA9IG51bGw7CisgICAgICAgIAorICAgICAgICB0cnkgeworICAgICAgICAgICAgb3V0U3RyZWFtID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oZmlsZSk7CisgICAgICAgICAgICBPYmplY3RPdXRwdXRTdHJlYW0gb2JqU3RyZWFtID0gbmV3IE9iamVjdE91dHB1dFN0cmVhbShvdXRTdHJlYW0pOworCisgICAgICAgICAgICBvYmpTdHJlYW0ud3JpdGVPYmplY3QodGV4dCk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2goSU9FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJyb3IgPSBlOworICAgICAgICB9CisgICAgICAgIGNhdGNoKENsYXNzQ2FzdEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJvciA9IGU7CisgICAgICAgIH0KKyAgICAgICAgZmluYWxseSB7CisgICAgICAgICAgICBpZiAob3V0U3RyZWFtICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBvdXRTdHJlYW0uY2xvc2UoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2F0Y2goSU9FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCIiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworCisgICAgICAgIGlmIChlcnJvciAhPSBudWxsKSB7CisgICAgICAgICAgICBlcnJvci5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogV3JpdGUgdGhlIGdpdmVuIE1Db25zdFRleHQgdG8gdGhlIGdpdmVuIGZpbGUgYXMgcGxhaW4gdGV4dC4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBib29sZWFuIHdyaXRlUGxhaW5NVGV4dChGaWxlIGZpbGUsIE1Db25zdFRleHQgdGV4dCkgeworCisgICAgICAgIFRocm93YWJsZSBlcnJvciA9IG51bGw7CisgICAgICAgIE91dHB1dFN0cmVhbVdyaXRlciBvdXRTdHJlYW0gPSBudWxsOworICAgICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG91dFN0cmVhbSA9IG5ldyBGaWxlV3JpdGVyKGZpbGUpOworICAgICAgICAgICAgY2hhcltdIGJ1ZiA9IG5ldyBjaGFyW0JVRl9TSVpFXTsKKyAgICAgICAgICAgIGludCBsZW5ndGggPSB0ZXh0Lmxlbmd0aCgpOworICAgICAgICAgICAgaW50IHN0YXJ0ID0gMDsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBpbnQgY291bnQgPSBNYXRoLm1pbihsZW5ndGgtc3RhcnQsIGJ1Zi5sZW5ndGgpOworICAgICAgICAgICAgICAgIHRleHQuZXh0cmFjdENoYXJzKHN0YXJ0LCBzdGFydCtjb3VudCwgYnVmLCAwKTsKKyAgICAgICAgICAgICAgICBvdXRTdHJlYW0ud3JpdGUoYnVmLCAwLCBjb3VudCk7CisgICAgICAgICAgICAgICAgc3RhcnQgKz0gY291bnQ7CisgICAgICAgICAgICB9IHdoaWxlIChzdGFydCA8IGxlbmd0aCk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2goSU9FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJyb3IgPSBlOworICAgICAgICB9CisgICAgICAgIGZpbmFsbHkgeworICAgICAgICAgICAgaWYgKG91dFN0cmVhbSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgb3V0U3RyZWFtLmNsb3NlKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhdGNoKElPRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludCgiIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKworICAgICAgICBpZiAoZXJyb3IgIT0gbnVsbCkgeworICAgICAgICAgICAgZXJyb3IucHJpbnRTdGFja1RyYWNlKCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC9kZW1vL3BhY2thZ2UuaHRtbCBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2RlbW8vcGFja2FnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2N2NlOGEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC9kZW1vL3BhY2thZ2UuaHRtbApAQCAtMCwwICsxLDIwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPjwhLS0gIENvcHlyaWdodCAoQykgMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQKKyAgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorLS0+CisKKzx0aXRsZT5DOklDVTRKIC5sYW5nIFBhY2thZ2UgT3ZlcnZpZXc8L3RpdGxlPgorPC9oZWFkPgorCis8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSI+CisKKzxwPlByb3ZpZGVzIEVkaXREZW1vLCBhIHNpbXBsZSwgbXVsdGlwbGUtZG9jdW1lbnQgc3R5bGVkIHRleHQgZWRpdG9yLCBidWlsdCB3aXRoIHRoZSByaWNodGV4dCBjbGFzc2VzIGluIHRoZSB0ZXh0cGFuZWwgYW5kIHRleHRmcmFtZSBwYWNrYWdlcy48L3A+CisKKzxwPlRvIHJ1biB0aGUgZGVtbywgdHlwZTogCis8dHQ+PGJsb2NrcXVvdGU+ICBqYXZhIC1jbGFzc3BhdGggY2xhc3NlcyBjb20uaWJtLnJpY2h0ZXh0LmRlbW8uRWRpdERlbW8gWy1zd2luZ10gW2ZpbGVdKjwvYmxvY2txdW90ZT4KK0l0IHdpbGwgdXNlIGEgU3dpbmcgR1VJIGlmIDxjb2RlPi1zd2luZzwvY29kZT4gaXMgcHJlc2VudCwgb3RoZXJ3aXNlIGl0IHdpbGwgdXNlIGFuIEFXVCBHVUkuICBPbmUgb3IgbW9yZSA8Y29kZT5maWxlPC9jb2RlPiBhcmd1bWVudHMgY2FuIGJlIHByZXNlbnQsIHRoZXNlIG11c3QgYmUgZmlsZXMgdGhhdCBoYXZlIGJlZW4gY3JlYXRlZCB3aXRoIHRoZSBFZGl0RGVtby4gIEEgc2VwYXJhdGUgd2luZG93IHdpbGwgYmUgb3BlbmVkIGZvciBlYWNoIGZpbGUuPC9wPgorCis8cD5PdGhlciBjbGFzc2VzIGluIHRoaXMgcGFja2FnZSBhcmUgc3VwcG9ydGluZyBjbGFzc2VzIGZvciB0aGUgRWRpdERlbW8uPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvbWFuaWZlc3Quc3R1YiBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L21hbmlmZXN0LnN0dWIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQwY2U1MQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L21hbmlmZXN0LnN0dWIKQEAgLTAsMCArMSwxMyBAQAorTWFpbi1DbGFzczogY29tLmlibS5yaWNodGV4dC5kZW1vLkVkaXREZW1vCitNYW5pZmVzdC1WZXJzaW9uOiAxLjAKK1NwZWNpZmljYXRpb24tVGl0bGU6IElDVSBmb3IgSmF2YSBSaWNoRWRpdAorU3BlY2lmaWNhdGlvbi1WZXJzaW9uOiAyLjIKK1NwZWNpZmljYXRpb24tVmVuZG9yOiBJQ1UKK0ltcGxlbWVudGF0aW9uLVRpdGxlOiBJQ1UgZm9yIEphdmEgUmljaEVkaXQKK0ltcGxlbWVudGF0aW9uLVZlcnNpb246IDIuMgorSW1wbGVtZW50YXRpb24tVmVuZG9yOiBJQk0gQ29ycG9yYXRpb24KK0ltcGxlbWVudGF0aW9uLVZlbmRvci1JZDogY29tLmlibQorCitOYW1lOiBjb20vaWJtL3JpY2h0ZXh0CisKKwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvcHJpbnQvTUNvbnN0VGV4dFByaW50YWJsZS5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvcHJpbnQvTUNvbnN0VGV4dFByaW50YWJsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmNhNWFmN2EKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC9wcmludC9NQ29uc3RUZXh0UHJpbnRhYmxlLmphdmEKQEAgLTAsMCArMSwxNjIgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IE1Db25zdFRleHRQcmludGFibGUuamF2YSx2ICQgJFJldmlzaW9uOiAxLjIgJCAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNjozNCAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnByaW50OworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1Db25zdFRleHQ7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRmb3JtYXQuTUZvcm1hdHRlcjsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZU1hcDsKKworaW1wb3J0IGphdmEuYXd0LkNvbG9yOworaW1wb3J0IGphdmEuYXd0LkdyYXBoaWNzOworaW1wb3J0IGphdmEuYXd0LlBvaW50OworaW1wb3J0IGphdmEuYXd0LlJlY3RhbmdsZTsKKworaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7CisKKy8qKgorICogVGhpcyBjbGFzcydzIGludGVyZmFjZSBpcyB2ZXJ5IGNsb3NlIHRvIHRoYXQgb2YgdGhlIEpESyAxLjIgUHJpbnRhYmxlIAorICogaW50ZXJmYWNlLCBidXQgY2FuIGV4ZWN1dGUgb24gSkRLIDEuMS4gIE9uIDEuMiwgdGhpcyBjbGFzcyBpcyB3cmFwcGVkCisgKiBpbiBhIHJlYWwgUHJpbnRhYmxlLiAgT24gMS4xLCB0aGUgUHJpbnRDb250ZXh0IGNsYXNzIHVzZXMgdGhpcyBjbGFzcworICogYW5kIGEgUHJpbnRKb2IgZm9yIHByaW50aW5nLgorICoKKyAqIE5vdGUgdGhhdCB0aGlzIGNsYXNzIHBhZ2luYXRlcyB0aGUgdGV4dCBpbiB0aGUgZmlyc3QgY2FsbCB0byBwcmludCwKKyAqIG9yIHRvIGdldFBhZ2VDb3VudC4KKyAqIEFmdGVyIGNvbnN0cnVjdGlvbiwgaXRzIHBhZ2Ugc2l6ZSBpcyBlc3NlbnRpYWxseSBmaXhlZC4gIFRoaXMgaXMgbm90IAorICogYXMgZmxleGlibGUgYXMgdGhlIDEuMiBjbGFzc2VzIGFsbG93LCBidXQgaXQgc2hvdWxkIHN1ZmZpY2UuCisgKi8KK2ZpbmFsIGNsYXNzIE1Db25zdFRleHRQcmludGFibGUgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKworICAgIHN0YXRpYyBmaW5hbCBpbnQgUEFHRV9FWElTVFMgPSAwOworICAgIHN0YXRpYyBmaW5hbCBpbnQgTk9fU1VDSF9QQUdFID0gMTsKKyAgICAKKyAgICBwcml2YXRlIE1Db25zdFRleHQgZlRleHQ7CisgICAgcHJpdmF0ZSBBdHRyaWJ1dGVNYXAgZkRlZmF1bHRTdHlsZXM7CisgICAgcHJpdmF0ZSBSZWN0YW5nbGUgZlBhZ2VSZWN0OworICAgIAorICAgIC8vIElmIHRoZXNlIHR3byBmaWVsZHMgYXJlIG51bGwgdGhlIHRleHQgaGFzIG5vdCBiZWVuIHBhZ2luYXRlZC4KKyAgICBwcml2YXRlIE1Gb3JtYXR0ZXIgZkZvcm1hdHRlcjsKKyAgICBwcml2YXRlIFZlY3RvciBmUGFnZVN0YXJ0czsKKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdCBhbiBNQ29uc3RUZXh0UHJpbnRhYmxlIHRvIHByaW50IHRoZSBnaXZlbiB0ZXh0LiAgRWFjaCBwYWdlIHdpbGwgZml0CisgICAgICogaW50byBwYWdlUmVjdC4KKyAgICAgKi8KKyAgICBNQ29uc3RUZXh0UHJpbnRhYmxlKE1Db25zdFRleHQgdGV4dCwgCisgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVNYXAgZGVmYXVsdFN0eWxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlY3RhbmdsZSBwYWdlUmVjdCkgeworCisgICAgICAgIGZUZXh0ID0gdGV4dDsKKyAgICAgICAgZkRlZmF1bHRTdHlsZXMgPSBkZWZhdWx0U3R5bGVzOworICAgICAgICBmUGFnZVJlY3QgPSBuZXcgUmVjdGFuZ2xlKHBhZ2VSZWN0KTsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBlbXB0eVBhcmFncmFwaEF0RW5kT2ZUZXh0KE1Db25zdFRleHQgdGV4dCkgeworCisgICAgICAgIGlmICh0ZXh0Lmxlbmd0aCgpID4gMCkgeworICAgICAgICAgICAgY2hhciBjaCA9IHRleHQuYXQodGV4dC5sZW5ndGgoKS0xKTsKKyAgICAgICAgICAgIHJldHVybiBjaCA9PSAnXG4nIHx8IGNoID09ICdcdTIwMjknOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHBhZ2luYXRlKEdyYXBoaWNzIGdyYXBoaWNzKSB7CisgICAgICAgIAorICAgICAgICBpZiAoZlBhZ2VTdGFydHMgPT0gbnVsbCkgeworCisgICAgICAgICAgICBmRm9ybWF0dGVyID0gTUZvcm1hdHRlci5jcmVhdGVGb3JtYXR0ZXIoZlRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZkRlZmF1bHRTdHlsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZlBhZ2VSZWN0LndpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3MpOworIAorICAgICAgICAgICAgZkZvcm1hdHRlci5mb3JtYXRUb0hlaWdodChJbnRlZ2VyLk1BWF9WQUxVRSk7CisgICAgICAgICAgICBmRm9ybWF0dGVyLnN0b3BCYWNrZ3JvdW5kRm9ybWF0dGluZygpOworCisgICAgICAgICAgICBmUGFnZVN0YXJ0cyA9IG5ldyBWZWN0b3IoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaW50IGxpbmVDb3VudCA9IGZGb3JtYXR0ZXIuZ2V0TGluZUNvdW50KCk7CisgICAgICAgICAgICBpZiAoZW1wdHlQYXJhZ3JhcGhBdEVuZE9mVGV4dChmVGV4dCkpIHsKKyAgICAgICAgICAgICAgICBsaW5lQ291bnQgLT0gMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaW50IHN0YXJ0TGluZSA9IDA7CisgICAgICAgICAgICBmUGFnZVN0YXJ0cy5hZGRFbGVtZW50KG5ldyBJbnRlZ2VyKHN0YXJ0TGluZSkpOworICAgICAgICAgICAgaW50IHN0YXJ0SGVpZ2h0ID0gMDsKKyAgICAgICAgICAgIGZpbmFsIGludCBwYWdlSGVpZ2h0ID0gZlBhZ2VSZWN0LmhlaWdodDsKKworICAgICAgICAgICAgd2hpbGUgKHN0YXJ0TGluZSA8IGxpbmVDb3VudCkgeworCisgICAgICAgICAgICAgICAgaW50IG5leHRTdGFydCA9IGZGb3JtYXR0ZXIubGluZUF0SGVpZ2h0KHN0YXJ0SGVpZ2h0ICsgcGFnZUhlaWdodCk7CisgICAgICAgICAgICAgICAgZlBhZ2VTdGFydHMuYWRkRWxlbWVudChuZXcgSW50ZWdlcihuZXh0U3RhcnQpKTsKKyAgICAgICAgICAgICAgICBzdGFydEhlaWdodCA9IGZGb3JtYXR0ZXIubGluZUdyYXBoaWNTdGFydChuZXh0U3RhcnQpOworICAgICAgICAgICAgICAgIHN0YXJ0TGluZSA9IG5leHRTdGFydDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFByaW50IHRoZSBnaXZlbiBwYWdlIGluIHRoZSBnaXZlbiBncmFwaGljcy4gIFBhZ2UgbnVtYmVycyBhcmUKKyAgICAgKiAwLWJhc2VkLiAgVGhlIHRoZSByZXR1cm4gdmFsdWUgaW5kaWNhdGVzIHdoZXRoZXIKKyAgICAgKiB0aGUgcGFnZSBudW1iZXIgaXMgdmFsaWQgKGFzIGluIEpESyAxLjIpLiAgU2luY2UgeW91IGNhbiBnZXQgdGhlIHBhZ2UgY291bnQKKyAgICAgKiBkaXJlY3RseSwgdGhlcmUncyByZWFsbHkgbm8gZXhjdXNlIGZvciBwYXNzaW5nIGluIGFuIGludmFsaWQgcGFnZQorICAgICAqIGluZGV4LgorICAgICAqIEBwYXJhbSBncmFwaGljcyB0aGUgR3JhcGhpY3MgdG8gcHJpbnQgdG8KKyAgICAgKiBAcGFyYW0gcGFnZU51bWJlciB0aGUgMC1iYXNlZCBwYWdlIG51bWJlci4gIFNob3VsZCBiZSBub25uZWdhdGl2ZSBhbmQKKyAgICAgKiBsZXNzIHRoYW4gZ2V0UGFnZUNvdW50KCkKKyAgICAgKiBAcmV0dXJuIFBBR0VfRVhJU1RTIGlmIHRoZSBwYWdlIG51bWJlciBpcyB2YWxpZCwgb3IgCisgICAgICogICAgICAgICBOT19TVUNIX1BBR0Ugb3RoZXJ3aXNlCisgICAgICovCisgICAgaW50IHByaW50KEdyYXBoaWNzIGdyYXBoaWNzLCBpbnQgcGFnZU51bWJlcikgeworICAgICAgICAKKyAgICAgICAgcGFnaW5hdGUoZ3JhcGhpY3MpOworICAgICAgICAKKyAgICAgICAgaWYgKHBhZ2VOdW1iZXIgPCBnZXRQYWdlQ291bnQoZ3JhcGhpY3MpICYmIHBhZ2VOdW1iZXIgPj0gMCkgeworICAgICAgICAgICAgZ3JhcGhpY3Muc2V0Q29sb3IoQ29sb3IuYmxhY2spOyAvLyB3b3JrYXJvdW5kIGZvciAxLjIgcHJpbnRpbmcgYnVnCisgICAgICAgICAgICBpbnQgc3RhcnRMaW5lID0gKChJbnRlZ2VyKWZQYWdlU3RhcnRzLmVsZW1lbnRBdChwYWdlTnVtYmVyKSkuaW50VmFsdWUoKTsKKyAgICAgICAgICAgIGludCBsaW1pdExpbmUgPSAoKEludGVnZXIpZlBhZ2VTdGFydHMuZWxlbWVudEF0KHBhZ2VOdW1iZXIrMSkpLmludFZhbHVlKCk7CisKKyAgICAgICAgICAgIGludCB0b3BPZlBhZ2UgPSBmRm9ybWF0dGVyLmxpbmVHcmFwaGljU3RhcnQoc3RhcnRMaW5lKTsKKyAgICAgICAgICAgIGludCBwYWdlSGVpZ2h0ID0gZkZvcm1hdHRlci5saW5lR3JhcGhpY1N0YXJ0KGxpbWl0TGluZSkgLSB0b3BPZlBhZ2U7CisKKyAgICAgICAgICAgIFBvaW50IG9yaWdpbiA9IG5ldyBQb2ludChmUGFnZVJlY3QueCwgZlBhZ2VSZWN0LnkgLSB0b3BPZlBhZ2UpOworICAgICAgICAgICAgUmVjdGFuZ2xlIGRyYXdSZWN0ID0gbmV3IFJlY3RhbmdsZShmUGFnZVJlY3QpOworICAgICAgICAgICAgZHJhd1JlY3QuaGVpZ2h0ID0gcGFnZUhlaWdodDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZkZvcm1hdHRlci5kcmF3KGdyYXBoaWNzLCBkcmF3UmVjdCwgb3JpZ2luKTsKKyAgICAgICAgICAgIHJldHVybiBQQUdFX0VYSVNUUzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBOT19TVUNIX1BBR0U7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBudW1iZXIgb2YgcGFnZXMgdGhhdCBjYW4gYmUgcHJpbnRlZC4KKyAgICAgKiBAcGFyYW0gZ3JhcGhpY3MgYSBHcmFwaGljcyBpbnN0YW5jZSByZXByZXNlbnRhdGl2ZSBvZiB0aG9zZSAKKyAgICAgKiB3aGljaCB3aWxsIGJlIHByaW50ZWQgaW50bworICAgICAqLworICAgIGludCBnZXRQYWdlQ291bnQoR3JhcGhpY3MgZ3JhcGhpY3MpIHsKKyAgICAgICAgCisgICAgICAgIHBhZ2luYXRlKGdyYXBoaWNzKTsKKyAgICAgICAgcmV0dXJuIGZQYWdlU3RhcnRzLnNpemUoKSAtIDE7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3ByaW50L1ByaW50Q29udGV4dC5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvcHJpbnQvUHJpbnRDb250ZXh0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNDI4MzZlOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3ByaW50L1ByaW50Q29udGV4dC5qYXZhCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFByaW50Q29udGV4dC5qYXZhLHYgJCAkUmV2aXNpb246IDEuMiAkICREYXRlOiAyMDAyLzAyLzE2IDAzOjA2OjM0ICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCisvLyBSZXF1aXJlcyBKYXZhMgorCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQucHJpbnQ7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuTUNvbnN0VGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRsYXlvdXQuYXR0cmlidXRlcy5BdHRyaWJ1dGVNYXA7CisKK2ltcG9ydCBqYXZhLmF3dC5GcmFtZTsKK2ltcG9ydCBqYXZhLmF3dC5HcmFwaGljczsKK2ltcG9ydCBqYXZhLmF3dC5SZWN0YW5nbGU7CisKK2ltcG9ydCBqYXZhLmF3dC5wcmludC5QYWdlRm9ybWF0OworaW1wb3J0IGphdmEuYXd0LnByaW50LlByaW50YWJsZTsKK2ltcG9ydCBqYXZhLmF3dC5wcmludC5QcmludGVySm9iOworaW1wb3J0IGphdmEuYXd0LnByaW50LlByaW50ZXJFeGNlcHRpb247CisKK2ZpbmFsIGNsYXNzIFByaW50Q29udGV4dCBpbXBsZW1lbnRzIFByaW50YWJsZSB7CisgICAgCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKworICAgIHByaXZhdGUgTUNvbnN0VGV4dFByaW50YWJsZSBmUHJpbnRhYmxlOworICAgIAorICAgIFByaW50Q29udGV4dChNQ29uc3RUZXh0IHRleHQsIEF0dHJpYnV0ZU1hcCBkZWZhdWx0U3R5bGVzLCBQYWdlRm9ybWF0IHBmKSB7CisgICAgICAgIAorICAgICAgICBpbnQgd2lkdGggPSAoaW50KSBNYXRoLnJvdW5kKHBmLmdldEltYWdlYWJsZVdpZHRoKCkpOworICAgICAgICBpbnQgaGVpZ2h0ID0gKGludCkgTWF0aC5yb3VuZChwZi5nZXRJbWFnZWFibGVIZWlnaHQoKSk7CisgICAgICAgIGludCBsZWZ0ID0gKCgoaW50KU1hdGgucm91bmQocGYuZ2V0V2lkdGgoKSkpIC0gd2lkdGgpIC8gMjsKKyAgICAgICAgaW50IHRvcCA9ICgoKGludClNYXRoLnJvdW5kKHBmLmdldEhlaWdodCgpKSkgLSBoZWlnaHQpIC8gMjsKKyAgICAgICAgCisgICAgICAgIFJlY3RhbmdsZSBwYWdlUmVjdCA9IG5ldyBSZWN0YW5nbGUobGVmdCwgdG9wLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgZlByaW50YWJsZSA9IG5ldyBNQ29uc3RUZXh0UHJpbnRhYmxlKHRleHQsIGRlZmF1bHRTdHlsZXMsIHBhZ2VSZWN0KTsKKyAgICB9CisgICAgCisgICAgcHVibGljIGludCBwcmludChHcmFwaGljcyBncmFwaGljcywKKyAgICAgICAgICAgICAgICAgICAgIFBhZ2VGb3JtYXQgZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgaW50IHBhZ2VJbmRleCkgdGhyb3dzIFByaW50ZXJFeGNlcHRpb24geworICAgICAgICAKKyAgICAgICAgaWYgKGZhbHNlKQorICAgICAgICAgICAgdGhyb3cgbmV3IFByaW50ZXJFeGNlcHRpb24oInNhdmUgdHJlZXMiKTsKKyAgICAgICAgICAgIAorICAgICAgICBpZiAoZlByaW50YWJsZS5wcmludChncmFwaGljcywgcGFnZUluZGV4KSA9PSBmUHJpbnRhYmxlLlBBR0VfRVhJU1RTKSB7CisgICAgICAgICAgICByZXR1cm4gUEFHRV9FWElTVFM7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gTk9fU1VDSF9QQUdFOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHN0YXRpYyB2b2lkIHVzZXJQcmludFRleHQoTUNvbnN0VGV4dCB0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlTWFwIGRlZmF1bHRTdHlsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmFtZSBmcmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBqb2JUaXRsZSkgeworCisgICAgICAgIFByaW50ZXJKb2Igam9iID0gUHJpbnRlckpvYi5nZXRQcmludGVySm9iKCk7CisgICAgICAgIGpvYi5zZXRKb2JOYW1lKGpvYlRpdGxlKTsKKyAgICAgICAgaWYgKGpvYi5wcmludERpYWxvZygpKSB7CisgICAgICAgICAgICBqb2Iuc2V0UHJpbnRhYmxlKG5ldyBQcmludENvbnRleHQodGV4dCwgZGVmYXVsdFN0eWxlcywgam9iLmRlZmF1bHRQYWdlKCkpKTsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgam9iLnByaW50KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXRjaChQcmludGVyRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlByaW50ZXIgZXhjZXB0aW9uOiAiICsgZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC9wcmludC9QcmludGluZ1V0aWxzLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC9wcmludC9QcmludGluZ1V0aWxzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZWEzMGQ4YQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3ByaW50L1ByaW50aW5nVXRpbHMuamF2YQpAQCAtMCwwICsxLDUxIEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBQcmludGluZ1V0aWxzLmphdmEsdiAkICRSZXZpc2lvbjogMS4yICQgJERhdGU6IDIwMDIvMDIvMTYgMDM6MDY6MzQgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5wcmludDsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NQ29uc3RUZXh0OworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlTWFwOworCitpbXBvcnQgamF2YS5hd3QuRnJhbWU7CisKKy8qKgorICogUHJpbnRpbmdVdGlscyBjb250YWlucyBhIHN0YXRpYyBtZXRob2QgZm9yIHByaW50aW5nIHN0eWxlZCB0ZXh0LgorICogQHNlZSBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuTUNvbnN0VGV4dAorICovCitwdWJsaWMgZmluYWwgY2xhc3MgUHJpbnRpbmdVdGlscyB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworCisgICAgLy8gS2VlcCBpdCBvdXQgb2YgSmF2YWRvYy4uLgorICAgIHByaXZhdGUgUHJpbnRpbmdVdGlscygpIHsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUHJpbnQgdGhlIGdpdmVuIHRleHQuICBBIFByaW50IGRpYWxvZyBpcyBwcmVzZW50ZWQgdG8gdGhlIHVzZXI7CisgICAgICogdW5sZXNzIHRoZSB1c2VyIGNhbmNlbHMsIHRoZSB0ZXh0IGlzIHByaW50ZWQuCisgICAgICogQHBhcmFtIHRleHQgdGhlIHRleHQgdG8gcHJpbnQKKyAgICAgKiBAcGFyYW0gZGVmYXVsdFN0eWxlcyBkZWZhdWx0IHZhbHVlcyBmb3IgdW5zcGVjaWZpZWQgYXR0cmlidXRlcworICAgICAqIEBwYXJhbSBmcmFtZSB0aGUgcGFyZW50IG9mIHRoZSBQcmludCBkaWFsb2cKKyAgICAgKiBAcGFyYW0gam9iVGl0bGUgdGhlIHRpdGxlIG9mIHRoZSBQcmludEpvYgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCB1c2VyUHJpbnRUZXh0KE1Db25zdFRleHQgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVNYXAgZGVmYXVsdFN0eWxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmFtZSBmcmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgam9iVGl0bGUpIHsKKworICAgICAgICBQcmludENvbnRleHQudXNlclByaW50VGV4dCh0ZXh0LCBkZWZhdWx0U3R5bGVzLCBmcmFtZSwgam9iVGl0bGUpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC9wcmludC9wYWNrYWdlLmh0bWwgYi9zcmMvY29tL2libS9yaWNodGV4dC9wcmludC9wYWNrYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNmViNDNjNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3ByaW50L3BhY2thZ2UuaHRtbApAQCAtMCwwICsxLDE5IEBACis8IS0tIAorLyoqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAwLTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3ByaW50L3BhY2thZ2UuaHRtbCx2ICQKKyAqICREYXRlOiAyMDAyLzEyLzE4IDAzOjU2OjQxICQKKyAqICRSZXZpc2lvbjogMS4yICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCistLT4KKzxodG1sPgorPGJvZHkgYmdjb2xvcj0id2hpdGUiPgorUHJvdmlkZXMgcHJpbnRpbmcgZm9yIHN0eWxlZCB0ZXh0LgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvc3R5bGVkdGV4dC9DaGFyQnVmZmVyLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC9zdHlsZWR0ZXh0L0NoYXJCdWZmZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43MTA4ZjdhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvc3R5bGVkdGV4dC9DaGFyQnVmZmVyLmphdmEKQEAgLTAsMCArMSwzNzkgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IENoYXJCdWZmZXIuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo0NToxMCAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworLyoqIEFuIGltcGxlbWVudGF0aW9uIG9mIE1DaGFyQnVmZmVyIHRoYXQgc3RvcmVzIGNoYXJzIGluIGFuIGFycmF5IHdpdGggYW4gaW5zZXJ0aW9uIGdhcC4gKi8KKy8qCisgICAgQ2hhbmdlIGhpc3RvcnkKKyAgICAwNzIzOTYgamYgICAtIGZpeGVkIGEgYnVnIGluIHJlcGxhY2UoaW50LCBpbnQsIGNoYXJbXSwgaW50LCBpbnQpIHNvIHRoYXQgaXQgY29ycmVjdGx5CisgICAgICAgICAgICAgICAgaW5zZXJ0ZWQgaW50byB0aGUgbWlkZGxlIG9mIHRoZSBidWZmZXIuCisgICAgMDgwMjk2IGpmICAgLSBhZGRlZCB0aW1lc3RhbXAuICBUaGlzIGlzIHN0cmljdGx5IGEgZGVidWdnaW5nIGRldmljZSB0byBoZWxwIGNhdGNoCisgICAgICAgICAgICAgICAgc3RhbGUgaXRlcmF0b3JzLgorCisgICAgMDgyMjk2IGpiciAgYWRkZWQgY2hlY2sgZm9yIDAtbGVuZ3RoIGl0ZXJhdG9yIGluIHJlcGxhY2UKKyovCisKK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0OworCitpbXBvcnQgamF2YS5pby5FeHRlcm5hbGl6YWJsZTsKK2ltcG9ydCBqYXZhLmlvLk9iamVjdElucHV0OworaW1wb3J0IGphdmEuaW8uT2JqZWN0T3V0cHV0OworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CisKK2ltcG9ydCBqYXZhLnRleHQuQ2hhcmFjdGVySXRlcmF0b3I7CisKK2ZpbmFsIGNsYXNzIENoYXJCdWZmZXIKKyAgICBleHRlbmRzIE1DaGFyQnVmZmVyIGltcGxlbWVudHMgRXh0ZXJuYWxpemFibGUKK3sKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBrR3Jvd1NpemUgPSAweDgwOyAvLyBzbWFsbCBzaXplIGZvciB0ZXN0aW5nCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDVVJSRU5UX1ZFUlNJT04gPSAxOyAvLyB2ZXJzaW9uIGNvZGUgZm9yIHN0cmVhbWluZworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSA1NjMxNzQ7CisKKyAgdHJhbnNpZW50IFZhbGlkYXRpb24gZlZhbGlkYXRpb24gPSBudWxsOworICBwcml2YXRlIGNoYXJbXSBmQXJyYXk7CisgIHRyYW5zaWVudCBwcml2YXRlIGludCBmQXJyYXlTaXplOworICB0cmFuc2llbnQgcHJpdmF0ZSBpbnQgZkdhcDsKKworICAvKiogQ3JlYXRlIGFuIGVtcHR5IGNoYXIgYnVmZmVyLiAqLworICBwdWJsaWMgQ2hhckJ1ZmZlcigpCisgIHsKKyAgfQorCisgIC8qKiBDcmVhdGUgYSBjaGFyIGJ1ZmZlciB0aGF0IGNhbiBob2xkIGF0IGxlYXN0IGNhcGFjaXR5IGNoYXJzLiAqLworCisgIHB1YmxpYyBDaGFyQnVmZmVyKGludCBjYXBhY2l0eSkKKyAgeworICAgIGZBcnJheSA9IGFsbG9jYXRlKGNhcGFjaXR5KTsKKyAgfQorCisgIHB1YmxpYyB2b2lkIHJlYWRFeHRlcm5hbChPYmplY3RJbnB1dCBpbikgdGhyb3dzIElPRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGFzc05vdEZvdW5kRXhjZXB0aW9uIHsKKworICAgIGlmIChpbi5yZWFkSW50KCkgIT0gQ1VSUkVOVF9WRVJTSU9OKSB7CisgICAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbigiSW52YWxpZCB2ZXJzaW9uIG9mIENoYXJCdWZmZXIiKTsKKyAgICB9CisKKyAgICBmQXJyYXkgPSAoY2hhcltdKSBpbi5yZWFkT2JqZWN0KCk7CisgICAgaWYgKGZBcnJheSAhPSBudWxsKSB7CisgICAgICAgIGZBcnJheVNpemUgPSBmQXJyYXkubGVuZ3RoOworICAgICAgICBmR2FwID0gZkFycmF5U2l6ZTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGZBcnJheVNpemUgPSAwOworICAgICAgICBmR2FwID0gMDsKKyAgICB9CisgIH0KKworICBwdWJsaWMgdm9pZCB3cml0ZUV4dGVybmFsKE9iamVjdE91dHB1dCBvdXQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisKKyAgICBjb21wcmVzcygpOworICAgIG91dC53cml0ZUludChDVVJSRU5UX1ZFUlNJT04pOworICAgIG91dC53cml0ZU9iamVjdChmQXJyYXkpOworICB9CisKKyAgcHJpdmF0ZSB2b2lkIGludmFsaWRhdGUoKSB7CisKKyAgICBpZiAoZlZhbGlkYXRpb24gIT0gbnVsbCkgeworICAgICAgICBmVmFsaWRhdGlvbi5pbnZhbGlkYXRlKCk7CisgICAgICAgIGZWYWxpZGF0aW9uID0gbnVsbDsKKyAgICB9CisgIH0KKworICAvLyBub3QgVGhyZWFkU2FmZSAtIGNvdWxkIGVuZCB1cCB3aXRoIHR3byBWYWxpZGF0aW9ucworICAvLyBiZWluZyBnZW5lcmF0ZWQKKyAgcHJpdmF0ZSBWYWxpZGF0aW9uIGdldFZhbGlkYXRpb24oKSB7CisKKyAgICBpZiAoZlZhbGlkYXRpb24gPT0gbnVsbCkgeworICAgICAgICBmVmFsaWRhdGlvbiA9IG5ldyBWYWxpZGF0aW9uKCk7CisgICAgfQorICAgIHJldHVybiBmVmFsaWRhdGlvbjsKKyAgfQorCisgIC8qKiBSZXBsYWNlIHRoZSBjaGFycyBmcm9tIHN0YXJ0IHRvIGxpbWl0IHdpdGggdGhlIGNoYXJzIGZyb20gc3JjU3RhcnQgdG8gc3JjTGltaXQgaW4gc3JjQnVmZmVyLiAqLworCisgIC8qKiBSZXBsYWNlIHRoZSBjaGFycyBmcm9tIHN0YXJ0IHRvIGxpbWl0IHdpdGggdGhlIGNoYXJzIGZyb20gc3JjU3RhcnQgdG8gc3JjTGltaXQgaW4gc3JjQ2hhcnMuCisgICogVGhpcyBpcyB0aGUgY29yZSByb3V0aW5lIGZvciBtYW5pcHVsYXRpbmcgdGhlIGJ1ZmZlci4KKyAgKi8KKyAgcHVibGljIHZvaWQgcmVwbGFjZShpbnQgc3RhcnQsIGludCBsaW1pdCwgY2hhcltdIHNyY0NoYXJzLCBpbnQgc3JjU3RhcnQsIGludCBzcmNMaW1pdCkKKyAgeworICAgIGludmFsaWRhdGUoKTsKKyAgICBpbnQgZHN0TGVuZ3RoID0gbGltaXQgLSBzdGFydDsKKyAgICBpbnQgc3JjTGVuZ3RoID0gc3JjTGltaXQgLSBzcmNTdGFydDsKKworICAgIGlmIChkc3RMZW5ndGggPCAwIHx8IHNyY0xlbmd0aCA8IDApIHsKKyAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigicmVwbGFjZShpbnQgc3RhcnQsIGludCBsaW1pdCwgY2hhcltdIHNyY0NoYXJzLCBpbnQgc3JjU3RhcnQsIGludCBzcmNMaW1pdCkiKTsKKyAgICB9CisKKyAgICBpbnQgZ2FwQWxsb2MgPSAwOworICAgIGlmIChzcmNDaGFycyA9PSBudWxsKSB7CisgICAgICAgIGdhcEFsbG9jID0gc3JjTGVuZ3RoOworICAgICAgICBzcmNMZW5ndGggPSAwOworICAgIH0KKworICAgIGludCBuZXdTaXplID0gZkFycmF5U2l6ZSAtIGRzdExlbmd0aCArIHNyY0xlbmd0aDsKKworICAgIGlmIChmQXJyYXkgPT0gbnVsbCkgeworICAgICAgICBpZiAoc3RhcnQgIT0gMCB8fCBsaW1pdCAhPSAwKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJyZXBsYWNlKGludCBzdGFydCwgaW50IGxpbWl0LCBjaGFyW10gc3JjQ2hhcnMsIGludCBzcmNTdGFydCwgaW50IHNyY0xpbWl0KSIpOworICAgICAgICB9CisgICAgICAgIGlmIChuZXdTaXplICsgZ2FwQWxsb2MgPiAwKSB7CisgICAgICAgICAgICBmQXJyYXkgPSBhbGxvY2F0ZShuZXdTaXplICsgZ2FwQWxsb2MpOworICAgICAgICAgICAgaWYgKHNyY0xlbmd0aCA+IDApIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KHNyY0NoYXJzLCBzcmNTdGFydCwgZkFycmF5LCAwLCBzcmNMZW5ndGgpOworICAgICAgICAgICAgICAgIGZBcnJheVNpemUgPSBzcmNMZW5ndGg7CisgICAgICAgICAgICAgICAgZkdhcCA9IHNyY0xlbmd0aDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGludCBuZXdHYXAgPSBzdGFydCArIHNyY0xlbmd0aDsKKyAgICAgICAgaW50IGdhcExpbWl0ID0gZkFycmF5Lmxlbmd0aCAtIGZBcnJheVNpemUgKyBmR2FwOworCisgICAgICAgIGlmIChuZXdTaXplICsgZ2FwQWxsb2MgPiBmQXJyYXkubGVuZ3RoKSB7CisgICAgICAgICAgICBjaGFyW10gdGVtcCA9IGFsbG9jYXRlKG5ld1NpemUgKyBnYXBBbGxvYyk7CisKKyAgICAgICAgICAgIC8vbW92ZSBzdHVmZiBhdCBiZWdpbm5pbmcgdGhhdCB3ZSBhcmVuJ3Qgd3JpdGluZyBvdmVyCisgICAgICAgICAgICBpZiAoc3RhcnQgPiAwKSB7CisgICAgICAgICAgICAgICAgYXQoMCwgc3RhcnQsIHRlbXAsIDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy9tb3ZlIHN0dWZmIGZyb20gc3JjIGFycmF5IHRoYXQgd2UgYXJlIGNvcHlpbmcKKyAgICAgICAgICAgIGlmIChzcmNMZW5ndGggPiAwKSB7CisgICAgICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShzcmNDaGFycywgc3JjU3RhcnQsIHRlbXAsIHN0YXJ0LCBzcmNMZW5ndGgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy9tb3ZlIHN0dWZmIGF0IGVuZCB0aGF0IHdlIGFyZW4ndCBjb3B5aW5nIG92ZXIKKyAgICAgICAgICAgIGlmIChsaW1pdCA8IGZBcnJheVNpemUpIHsKKyAgICAgICAgICAgICAgICBhdChsaW1pdCwgZkFycmF5U2l6ZSwgdGVtcCwgdGVtcC5sZW5ndGggLSBuZXdTaXplICsgbmV3R2FwKTsKKyAgICAgICAgICAgIC8vY2hhbmdlIDctMjMtOTYKKyAgICAgICAgICAgIC8vICAgIGF0KGxpbWl0LCBmQXJyYXlTaXplIC0gbGltaXQsIHRlbXAsIHRlbXAubGVuZ3RoIC0gbmV3U2l6ZSArIG5ld0dhcCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZBcnJheSA9IHRlbXA7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoc3RhcnQgPiBmR2FwKSB7CisgICAgICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShmQXJyYXksIGdhcExpbWl0LCBmQXJyYXksIGZHYXAsIHN0YXJ0IC0gZkdhcCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobGltaXQgPCBmR2FwKSB7CisgICAgICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShmQXJyYXksIGxpbWl0LCBmQXJyYXksIGZBcnJheS5sZW5ndGggLSBuZXdTaXplICsgbmV3R2FwLCBmR2FwIC0gbGltaXQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHNyY0xlbmd0aCA+IDApIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KHNyY0NoYXJzLCBzcmNTdGFydCwgZkFycmF5LCBzdGFydCwgc3JjTGVuZ3RoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZBcnJheVNpemUgPSBuZXdTaXplOworICAgICAgICBmR2FwID0gbmV3R2FwOworICAgIH0KKyAgfQorCisgIC8qKiBSZXBsYWNlIHRoZSBjaGFycyBmcm9tIHN0YXJ0IHRvIGxpbWl0IHdpdGggdGhlIGNoYXJzIGZyb20gc3JjU3RhcnQgdG8gc3JjTGltaXQgaW4gc3JjU3RyaW5nLiAqLworCisgIC8qIFRoaXMgaW1wbGVtZW50cyBvcHRpbWl6YXRpb25zIGZvciBudWxsIHRleHQgb3IgaW5zZXJ0aW5nIHRleHQgdGhhdCBmaXRzIGF0IHRoZSBnYXAsCisgICAgIGFuZCBkZWZhdWx0cyB0byBjYWxsIHRoZSBjb3JlIHJlcGxhY2Ugcm91dGluZSBpZiB0aGVzZSBvcHRpbWl6YXRpb25zIGZhaWwuICovCisKKyAgcHVibGljIHZvaWQgcmVwbGFjZShpbnQgc3RhcnQsIGludCBsaW1pdCwgU3RyaW5nIHNyY1N0cmluZywgaW50IHNyY1N0YXJ0LCBpbnQgc3JjTGltaXQpCisgIHsKKyAgICBpbnZhbGlkYXRlKCk7CisgICAgaW50IGxlbmd0aCA9IGxpbWl0IC0gc3RhcnQ7CisgICAgaW50IHNyY0xlbmd0aCA9IHNyY0xpbWl0IC0gc3JjU3RhcnQ7CisKKyAgICBpZiAoZkFycmF5ID09IG51bGwpIHsKKyAgICAgICAgaWYgKHN0YXJ0ICE9IDAgfHwgbGltaXQgIT0gMCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigicmVwbGFjZShpbnQgc3RhcnQsIGludCBsaW1pdCwgU3RyaW5nIHNyY1N0cmluZywgaW50IHNyY1N0YXJ0LCBpbnQgc3JjTGltaXQpIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNyY0xlbmd0aCA+IDApIHsKKyAgICAgICAgICAgIGZBcnJheSA9IGFsbG9jYXRlKHNyY0xlbmd0aCk7CisgICAgICAgICAgICBzcmNTdHJpbmcuZ2V0Q2hhcnMoc3JjU3RhcnQsIHNyY0xpbWl0LCBmQXJyYXksIDApOworICAgICAgICAgICAgZkFycmF5U2l6ZSA9IHNyY0xlbmd0aDsKKyAgICAgICAgICAgIGZHYXAgPSBzcmNMZW5ndGg7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoc3RhcnQgPT0gZkdhcCAmJiBmQXJyYXkubGVuZ3RoID49IGZBcnJheVNpemUgLSBsZW5ndGggKyBzcmNMZW5ndGgpIHsKKyAgICAgICAgICAgIGlmIChzcmNMaW1pdCA+IDApIHsKKyAgICAgICAgICAgICAgICBzcmNTdHJpbmcuZ2V0Q2hhcnMoc3JjU3RhcnQsIHNyY0xpbWl0LCBmQXJyYXksIGZHYXApOworICAgICAgICAgICAgICAgIGZHYXAgKz0gc3JjTGVuZ3RoOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZkFycmF5U2l6ZSArPSBzcmNMZW5ndGggLSBsZW5ndGg7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXBsYWNlKHN0YXJ0LCBsaW1pdCwgc3JjU3RyaW5nICE9IG51bGwgPyBzcmNTdHJpbmcudG9DaGFyQXJyYXkoKSA6IG51bGwsIHNyY1N0YXJ0LCBzcmNMaW1pdCk7CisgICAgICAgIH0KKyAgICB9CisgIH0KKworICBwdWJsaWMgdm9pZCByZXBsYWNlKGludCBzdGFydCwgaW50IGxpbWl0LCBNQ29uc3RUZXh0IHNyY1RleHQsIGludCBzcmNTdGFydCwgaW50IHNyY0xpbWl0KQorICB7CisgICAgaW52YWxpZGF0ZSgpOworICAgIGludCBsZW5ndGggPSBsaW1pdCAtIHN0YXJ0OworICAgIGludCBzcmNMZW5ndGggPSBzcmNMaW1pdCAtIHNyY1N0YXJ0OworCisgICAgaWYgKGZBcnJheSA9PSBudWxsKSB7CisgICAgICAgIGlmIChzdGFydCAhPSAwIHx8IGxpbWl0ICE9IDApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oInJlcGxhY2UoaW50IHN0YXJ0LCBpbnQgbGltaXQsIFN0cmluZyBzcmNTdHJpbmcsIGludCBzcmNTdGFydCwgaW50IHNyY0xpbWl0KSIpOworICAgICAgICB9CisgICAgICAgIGlmIChzcmNMZW5ndGggPiAwKSB7CisgICAgICAgICAgICBmQXJyYXkgPSBhbGxvY2F0ZShzcmNMZW5ndGgpOworICAgICAgICAgICAgc3JjVGV4dC5leHRyYWN0Q2hhcnMoc3JjU3RhcnQsIHNyY0xpbWl0LCBmQXJyYXksIDApOworICAgICAgICAgICAgZkFycmF5U2l6ZSA9IHNyY0xlbmd0aDsKKyAgICAgICAgICAgIGZHYXAgPSBzcmNMZW5ndGg7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoc3RhcnQgPT0gZkdhcCAmJiBmQXJyYXkubGVuZ3RoID49IGZBcnJheVNpemUgLSBsZW5ndGggKyBzcmNMZW5ndGgpIHsKKyAgICAgICAgICAgIGlmIChzcmNMaW1pdCA+IDApIHsKKyAgICAgICAgICAgICAgICBzcmNUZXh0LmV4dHJhY3RDaGFycyhzcmNTdGFydCwgc3JjTGltaXQsIGZBcnJheSwgZkdhcCk7CisgICAgICAgICAgICAgICAgZkdhcCArPSBzcmNMZW5ndGg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmQXJyYXlTaXplICs9IHNyY0xlbmd0aCAtIGxlbmd0aDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNoYXJbXSB0ZW1wID0gc3JjTGVuZ3RoID09IDA/IG51bGwgOiBuZXcgY2hhcltzcmNMZW5ndGhdOworICAgICAgICAgICAgaWYgKHRlbXAgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHNyY1RleHQuZXh0cmFjdENoYXJzKHNyY1N0YXJ0LCBzcmNMaW1pdCwgdGVtcCwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXBsYWNlKHN0YXJ0LCBsaW1pdCwgdGVtcCwgMCwgc3JjTGltaXQgLSBzcmNTdGFydCk7CisgICAgICAgIH0KKyAgICB9CisgIH0KKworICAvKiogUmVwbGFjZSB0aGUgY2hhcnMgZnJvbSBzdGFydCB0byBsaW1pdCB3aXRoIHNyY0NoYXIuICovCisKKyAgLyogVGhpcyBpbXBsZW1lbnRzIG9wdGltaXphdGlvbnMgZm9yIG51bGwgdGV4dCBvciByZXBsYWNpbmcgYSBjaGFyYWN0ZXIgdGhhdCBmaXRzIGludG8gdGhlIGdhcCwKKyAgICAgYW5kIGRlZmF1bHRzIHRvIGNhbGwgdGhlIGNvcmUgcmVwbGFjZSByb3V0aW5lIGlmIHRoZXNlIG9wdGltaXphdGlvbnMgZmFpbC4gKi8KKworICBwdWJsaWMgdm9pZCByZXBsYWNlKGludCBzdGFydCwgaW50IGxpbWl0LCBjaGFyIHNyY0NoYXIpCisgIHsKKyAgICBpbnZhbGlkYXRlKCk7CisgICAgaWYgKGZBcnJheSA9PSBudWxsKSB7CisgICAgICAgIGlmIChzdGFydCAhPSAwIHx8IGxpbWl0ICE9IDApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oInJlcGxhY2UoaW50IHN0YXJ0LCBpbnQgbGltaXQsIGNoYXIgc3JjQ2hhcikiKTsKKyAgICAgICAgfQorICAgICAgICBmQXJyYXkgPSBhbGxvY2F0ZSgxKTsKKyAgICAgICAgZkFycmF5WzBdID0gc3JjQ2hhcjsKKyAgICAgICAgZkFycmF5U2l6ZSA9IDE7CisgICAgICAgIGZHYXAgPSAxOworICAgIH0gZWxzZSB7CisgICAgICAgIGludCBsZW5ndGggPSBsaW1pdCAtIHN0YXJ0OworICAgICAgICBpZiAoc3RhcnQgPT0gZkdhcCAmJiBmQXJyYXkubGVuZ3RoID4gZkFycmF5U2l6ZSAtIGxlbmd0aCkgeworICAgICAgICAgICAgZkFycmF5W2ZHYXBdID0gc3JjQ2hhcjsKKyAgICAgICAgICAgIGZHYXAgKz0gMTsKKyAgICAgICAgICAgIGZBcnJheVNpemUgKz0gMSAtIGxlbmd0aDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJlcGxhY2Uoc3RhcnQsIGxpbWl0LCBuZXcgY2hhcltdIHsgc3JjQ2hhcn0gLCAwLCAxKTsKKyAgICAgICAgfQorICAgIH0KKyAgfQorCisgIC8qKiBSZXR1cm4gdGhlIGNoYXIgYXQgcG9zLiAqLworCisgIHB1YmxpYyBjaGFyIGF0KGludCBwb3MpCisgIHsKKyAgICBpZiAocG9zIDwgMCB8fCBwb3MgPj0gZkFycmF5U2l6ZSkgeworICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigpOworICAgIH0KKyAgICByZXR1cm4gcG9zIDwgZkdhcCA/IGZBcnJheVtwb3NdIDogZkFycmF5W2ZBcnJheS5sZW5ndGggLSBmQXJyYXlTaXplICsgcG9zXTsKKyAgfQorCisgIC8qKiBDb3B5IHRoZSBjaGFycyBmcm9tIHN0YXJ0IHRvIGxpbWl0IHRvIGRzdCBzdGFydGluZyBhdCBkc3RTdGFydC4gKi8KKworICBwdWJsaWMgdm9pZCBhdChpbnQgc3RhcnQsIGludCBsaW1pdCwgY2hhcltdIGRzdCwgaW50IGRzdFN0YXJ0KQorICB7CisgICAgaW50IGxlbmd0aCA9IGxpbWl0IC0gc3RhcnQ7CisKKyAgICBpZiAoc3RhcnQgPCAwIHx8IGxpbWl0IDwgc3RhcnQgfHwgbGltaXQgPiBmQXJyYXlTaXplKSB7CisgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oKTsKKyAgICB9CisKKyAgICBpZiAobGltaXQgPD0gZkdhcCkgeworICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KGZBcnJheSwgc3RhcnQsIGRzdCwgZHN0U3RhcnQsIGxlbmd0aCk7CisgICAgfSBlbHNlIGlmIChzdGFydCA+PSBmR2FwKSB7CisgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoZkFycmF5LCBmQXJyYXkubGVuZ3RoIC0gZkFycmF5U2l6ZSArIHN0YXJ0LCBkc3QsIGRzdFN0YXJ0LCBsZW5ndGgpOworICAgIH0gZWxzZSB7CisgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoZkFycmF5LCBzdGFydCwgZHN0LCBkc3RTdGFydCwgZkdhcCAtIHN0YXJ0KTsKKyAgICAgICAgU3lzdGVtLmFycmF5Y29weShmQXJyYXksIGZBcnJheS5sZW5ndGggLSBmQXJyYXlTaXplICsgZkdhcCwgZHN0LCBkc3RTdGFydCArIGZHYXAgLSBzdGFydCwgbGltaXQgLSBmR2FwKTsKKyAgICB9CisgIH0KKworICAvKiogUmV0dXJuIHRoZSBudW1iZXIgb2YgY2hhcnMgaW4gdGhlIGJ1ZmZlci4gKi8KKworICBwdWJsaWMgZmluYWwgaW50IGxlbmd0aCgpCisgIHsKKyAgICByZXR1cm4gZkFycmF5U2l6ZTsKKyAgfQorCisgIC8qKiBSZXR1cm4gdGhlIG51bWJlciBvZiBjaGFycyB0aGUgYnVmZmVyIGNhbiBob2xkIGJlZm9yZSBpdCBtdXN0IHJlYWxsb2NhdGUuICovCisKKyAgcHVibGljIGZpbmFsIGludCBjYXBhY2l0eSgpCisgIHsKKyAgICByZXR1cm4gZkFycmF5ICE9IG51bGwgPyBmQXJyYXkubGVuZ3RoIDogMDsKKyAgfQorCisgIC8qKiBSZXNlcnZlIGNhcGFjaXR5IGNoYXJzIGF0IHN0YXJ0LiBVdGlsaXR5IHRvIG9wdGltaXplIGEgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBhdCBzdGFydC4gKi8KKworICBwdWJsaWMgdm9pZCByZXNlcnZlQ2FwYWNpdHkoaW50IHN0YXJ0LCBpbnQgY2FwYWNpdHkpCisgIHsKKyAgICByZXBsYWNlKHN0YXJ0LCBzdGFydCwgKGNoYXJbXSludWxsLCAwLCBjYXBhY2l0eSk7CisgIH0KKworICAvKiogTWluaW1pemUgdGhlIHN0b3JhZ2UgdXNlZCBieSB0aGUgYnVmZmVyLiAqLworCisgIHB1YmxpYyB2b2lkIGNvbXByZXNzKCkKKyAgeworICAgIGludmFsaWRhdGUoKTsKKyAgICBpZiAoZkFycmF5U2l6ZSA9PSAwKSB7CisgICAgICAgIGZBcnJheSA9IG51bGw7CisgICAgICAgIGZHYXAgPSAwOworICAgIH0gZWxzZSBpZiAoZkFycmF5U2l6ZSAhPSBmQXJyYXkubGVuZ3RoKSB7CisgICAgICAgIGNoYXJbXSB0ZW1wID0gbmV3IGNoYXJbZkFycmF5U2l6ZV07CisgICAgICAgIGF0KDAsIGZBcnJheVNpemUsIHRlbXAsIDApOworICAgICAgICBmQXJyYXkgPSB0ZW1wOworICAgICAgICBmR2FwID0gZkFycmF5U2l6ZTsKKyAgICB9CisgIH0KKworICAvKiogRGlzcGxheSB0aGUgYnVmZmVyLiAqLworCisgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKQorICB7CisgICAgaWYgKGZBcnJheSAhPSBudWxsKSB7CisgICAgICAgIHJldHVybiBuZXcgU3RyaW5nQnVmZmVyKCkKKyAgICAgICAgLmFwcGVuZCgibGltaXQ6ICIpLmFwcGVuZChmQXJyYXkubGVuZ3RoKQorICAgICAgICAuYXBwZW5kKCIsIHNpemU6ICIpLmFwcGVuZChmQXJyYXlTaXplKQorICAgICAgICAuYXBwZW5kKCIsIGdhcDogIikuYXBwZW5kKGZHYXApCisgICAgICAgIC5hcHBlbmQoIiwgIikuYXBwZW5kKGZBcnJheSwgMCwgZkdhcCkKKyAgICAgICAgLmFwcGVuZChmQXJyYXksIGZBcnJheS5sZW5ndGggLSBmQXJyYXlTaXplICsgZkdhcCwgZkFycmF5U2l6ZSAtIGZHYXApCisgICAgICAgIC50b1N0cmluZygpOworICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBuZXcgU3RyaW5nKCJUaGUgYnVmZmVyIGlzIGVtcHR5LiIpOworICAgIH0KKyAgfQorCisgIHB1YmxpYyBDaGFyYWN0ZXJJdGVyYXRvciBjcmVhdGVDaGFyYWN0ZXJJdGVyYXRvcihpbnQgc3RhcnQsIGludCBsaW1pdCkgeworCisgICAgVmFsaWRhdGlvbiB2YWwgPSBnZXRWYWxpZGF0aW9uKCk7CisgICAgcmV0dXJuIG5ldyBDaGFyQnVmZmVySXRlcmF0b3Ioc3RhcnQsIGxpbWl0LCBmQXJyYXksIGZBcnJheVNpemUsIGZHYXAsIHZhbCk7CisgIH0KKworICAvKiogVGhlIHJlc2l6aW5nIGFsZ29yaXRobS4gUmV0dXJuIGEgdmFsdWUgPj0gbWluU2l6ZS4gKi8KKworICBwcm90ZWN0ZWQgaW50IGFsbG9jYXRpb24oaW50IG1pblNpemUpCisgIHsKKyAgICAvLyAgICByZXR1cm4gKG1pblNpemUgKyBrR3Jvd1NpemUpICYgfihrR3Jvd1NpemUgLSAxKTsKKyAgICByZXR1cm4gbWluU2l6ZSA8IGtHcm93U2l6ZSA/IGtHcm93U2l6ZSA6IChtaW5TaXplICogMiArIGtHcm93U2l6ZSkgJiB+KGtHcm93U2l6ZSAtIDEpOworICB9CisKKyAgLyoqIEFsbG9jYXRlIGEgbmV3IGNoYXJhY3RlciBhcnJheSBvZiBsaW1pdCA+PSBtaW5TaXplLiAqLworCisgIHByb3RlY3RlZCBjaGFyW10gYWxsb2NhdGUoaW50IG1pblNpemUpCisgIHsKKyAgICByZXR1cm4gbmV3IGNoYXJbYWxsb2NhdGlvbihtaW5TaXplKV07CisgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N0eWxlZHRleHQvQ2hhckJ1ZmZlckl0ZXJhdG9yLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC9zdHlsZWR0ZXh0L0NoYXJCdWZmZXJJdGVyYXRvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjZhMGFjMTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC9zdHlsZWR0ZXh0L0NoYXJCdWZmZXJJdGVyYXRvci5qYXZhCkBAIC0wLDAgKzEsMTMxIEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBDaGFyQnVmZmVySXRlcmF0b3IuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo0NToxMCAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQ7CisKK2ltcG9ydCBqYXZhLnRleHQuQ2hhcmFjdGVySXRlcmF0b3I7CisKK2ZpbmFsIGNsYXNzIENoYXJCdWZmZXJJdGVyYXRvciBpbXBsZW1lbnRzIENoYXJhY3Rlckl0ZXJhdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xvbmVhYmxlCit7CisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcml2YXRlIGludCBmUmFuZ2VTdGFydDsKKyAgICBwcml2YXRlIGludCBmUmFuZ2VMaW1pdDsKKyAgICBwcml2YXRlIGludCBmQ3VycmVudEluZGV4OworICAgIHByaXZhdGUgY2hhciBmU3RvcmFnZVtdOworICAgIHByaXZhdGUgaW50IGZHYXA7CisgICAgcHJpdmF0ZSBpbnQgZkdhcExlbmd0aDsKKyAgICBwcml2YXRlIFZhbGlkYXRpb24gZlZhbGlkYXRpb247CisKKyAgICBDaGFyQnVmZmVySXRlcmF0b3IoaW50IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgIGNoYXJbXSBzdG9yYWdlLAorICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICBpbnQgZ2FwLAorICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0aW9uIHZhbGlkYXRpb24pIHsKKworICAgICAgICBpZiAoc3RhcnQgPiBsaW1pdCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigic3RhcnQgPiBsaW1pdCIpOworICAgICAgICB9CisgICAgICAgIGZSYW5nZVN0YXJ0ID0gc3RhcnQ7CisgICAgICAgIGZSYW5nZUxpbWl0ID0gbGltaXQ7CisgICAgICAgIGZDdXJyZW50SW5kZXggPSBmUmFuZ2VTdGFydDsKKyAgICAgICAgZlN0b3JhZ2UgPSBzdG9yYWdlOworICAgICAgICBmR2FwID0gZ2FwOworICAgICAgICBmR2FwTGVuZ3RoID0gKHN0b3JhZ2U9PW51bGw/IDAgOiBzdG9yYWdlLmxlbmd0aCkgLSBsZW5ndGg7CisgICAgICAgIGZWYWxpZGF0aW9uID0gdmFsaWRhdGlvbjsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgY2hlY2tWYWxpZGF0aW9uKCkgeworCisgICAgICAgIGlmICghZlZhbGlkYXRpb24uaXNWYWxpZCgpKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkl0ZXJhdG9yIGlzIG5vIGxvbmdlciB2YWxpZCIpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIGNoYXIgZmlyc3QoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNldEluZGV4KGZSYW5nZVN0YXJ0KTsKKyAgICB9CisKKyAgICBwdWJsaWMgY2hhciBsYXN0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBzZXRJbmRleChmUmFuZ2VMaW1pdCAtIDEpOworICAgIH0KKworICAgIHB1YmxpYyBjaGFyIGN1cnJlbnQoKQorICAgIHsKKyAgICAgICAgY2hlY2tWYWxpZGF0aW9uKCk7CisgICAgICAgIGlmIChmQ3VycmVudEluZGV4IDwgZlJhbmdlU3RhcnQgfHwgZkN1cnJlbnRJbmRleCA+PSBmUmFuZ2VMaW1pdCkKKyAgICAgICAgICAgIHJldHVybiBET05FOworICAgICAgICBpbnQgaSA9IChmQ3VycmVudEluZGV4IDwgZkdhcCkgPyBmQ3VycmVudEluZGV4IDogKGZDdXJyZW50SW5kZXggKyBmR2FwTGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIGZTdG9yYWdlW2ldOworICAgIH0KKworICAgIHB1YmxpYyBjaGFyIG5leHQoKQorICAgIHsKKyAgICAgICAgY2hlY2tWYWxpZGF0aW9uKCk7CisgICAgICAgIGZDdXJyZW50SW5kZXgrKzsKKyAgICAgICAgaWYgKGZDdXJyZW50SW5kZXggPj0gZlJhbmdlTGltaXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZDdXJyZW50SW5kZXggPSBmUmFuZ2VMaW1pdDsKKyAgICAgICAgICAgIHJldHVybiBET05FOworICAgICAgICB9CisgICAgICAgIGludCBpID0gKGZDdXJyZW50SW5kZXggPCBmR2FwKSA/IGZDdXJyZW50SW5kZXggOiAoZkN1cnJlbnRJbmRleCArIGZHYXBMZW5ndGgpOworICAgICAgICByZXR1cm4gZlN0b3JhZ2VbaV07CisgICAgfQorCisgICAgcHVibGljIGNoYXIgcHJldmlvdXMoKQorICAgIHsKKyAgICAgICAgZkN1cnJlbnRJbmRleC0tOworICAgICAgICBpZiAoZkN1cnJlbnRJbmRleCA+PSBmUmFuZ2VTdGFydCkKKyAgICAgICAgICAgIHJldHVybiBjdXJyZW50KCk7CisgICAgICAgIGZDdXJyZW50SW5kZXggPSBmUmFuZ2VTdGFydDsKKyAgICAgICAgcmV0dXJuIERPTkU7CisgICAgfQorCisgICAgcHVibGljIGNoYXIgc2V0SW5kZXgoaW50IGkpCisgICAgeworICAgICAgICBpZiAoaSA8IGZSYW5nZVN0YXJ0IHx8IGkgPiBmUmFuZ2VMaW1pdCkKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgcG9zaXRpb24iKTsKKyAgICAgICAgZkN1cnJlbnRJbmRleCA9IGk7CisgICAgICAgIHJldHVybiBjdXJyZW50KCk7CisgICAgfQorCisgICAgcHVibGljIGludCBnZXRCZWdpbkluZGV4KCkKKyAgICB7CisgICAgICAgIHJldHVybiBmUmFuZ2VTdGFydDsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50IGdldEVuZEluZGV4KCkKKyAgICB7CisgICAgICAgIHJldHVybiBmUmFuZ2VMaW1pdDsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50IGdldEluZGV4KCkKKyAgICB7CisgICAgICAgIHJldHVybiBmQ3VycmVudEluZGV4OworICAgIH0KKworICAgIHB1YmxpYyBPYmplY3QgY2xvbmUoKQorICAgIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJldHVybiBzdXBlci5jbG9uZSgpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N0eWxlZHRleHQvRmFzdEludEJpbmFyeVNlYXJjaC5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvc3R5bGVkdGV4dC9GYXN0SW50QmluYXJ5U2VhcmNoLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZjRlYjBhMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N0eWxlZHRleHQvRmFzdEludEJpbmFyeVNlYXJjaC5qYXZhCkBAIC0wLDAgKzEsMTE1IEBACisvKgorKiAgIENvcHlyaWdodCAoQykgMTk5Ni0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqICAgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqLworCisvKgorICAgIDcvMjkvOTYKKyAgICAgICAgTW9kaWZpZWQgdG8gc2VhcmNoIHBvcnRpb25zIG9mIGFuIGludGVnZXIgYXJyYXkuICBTaG91bGQgYmUgcmV0ZXN0ZWQuCisqLworCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dDsKKworLyoqCisgKiBUaGlzIGNsYXNzIHNlYXJjaGVzIGEgc2VnbWVudCBvZiBhbiBhcnJheSBvZiBpbnRlZ2Vycy4gIFRoZSBzZWdtZW50CisgKiBtdXN0IGJlIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIgKGJ1dCB0aGlzIGNsYXNzIGRvZXMgbm90IHZlcmlmeSB0aGlzKS4KKyAqIEFsc28sIHRoaXMgY2xhc3MgYWxpYXNlcyB0aGUgYXJyYXk7ICBpZiB0aGUgYXJyYXkgaXMgbW9kaWZpZWQgbGF0ZXIgdGhlCisgKiBzZWFyY2ggcmVzdWx0cyBhcmUgdW5kZWZpbmVkLgorICovCitmaW5hbCBjbGFzcyBGYXN0SW50QmluYXJ5U2VhcmNoCit7CisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcml2YXRlIGludCBkYXRhQXJyYXlbXTsKKyAgICBwcml2YXRlIGludCBhdXhTdGFydDsKKyAgICBwcml2YXRlIGludCBwb3dlcjsKKworICAgIHByaXZhdGUgaW50IGZGaXJzdEluZGV4OworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IGV4cDJbXSA9IHsgMSwgMiwgNCwgOCwgMTYsIDMyLCA2NCwgMTI4LCAyNTYsIDUxMiwgMTAyNCwgMjA0OCwgNDA5NiwgODE5MiwgMTYzODQsIDMyNzY4LCA2NTUzNiwgMTMxMDcyIH07CisKKyAgICBwdWJsaWMgRmFzdEludEJpbmFyeVNlYXJjaChpbnQgZGF0YVtdKQorICAgIHsKKyAgICAgICAgdGhpcyhkYXRhLCAwLCBkYXRhLmxlbmd0aCk7CisgICAgfQorCisgICAgcHVibGljIEZhc3RJbnRCaW5hcnlTZWFyY2goaW50IGRhdGFbXSwgaW50IGZpcnN0VmFsaWRJbmRleCwgaW50IHZhbGlkTGVuZ3RoKQorICAgIHsKKyAgICAgICAgc2V0RGF0YShkYXRhLCBmaXJzdFZhbGlkSW5kZXgsIHZhbGlkTGVuZ3RoKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgc2V0RGF0YShpbnQgZGF0YVtdKSB7CisgICAgICAgIAorICAgICAgICBzZXREYXRhKGRhdGEsIDAsIGRhdGEubGVuZ3RoKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgc2V0RGF0YShpbnQgZGF0YVtdLCBpbnQgZmlyc3RWYWxpZEluZGV4LCBpbnQgdmFsaWRMZW5ndGgpIHsKKworICAgICAgICBpZiAoZGF0YS5sZW5ndGggPCAxKSB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCk7CisgICAgICAgIGlmIChkYXRhLmxlbmd0aCA+PSBleHAyW2V4cDIubGVuZ3RoLTFdKSB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCk7CisKKyAgICAgICAgZGF0YUFycmF5ID0gZGF0YTsKKyAgICAgICAgZkZpcnN0SW5kZXggPSBmaXJzdFZhbGlkSW5kZXg7CisKKyAgICAgICAgZm9yIChwb3dlciA9IGV4cDIubGVuZ3RoLTE7IHBvd2VyID4gMCAmJiB2YWxpZExlbmd0aCA8IGV4cDJbcG93ZXJdOyBwb3dlci0tKSB7fQorCisgICAgICAgIC8vIGF0IHRoaXMgcG9pbnQsIGFycmF5Lmxlbmd0aCA+PSAyXnBvd2VyCisKKyAgICAgICAgYXV4U3RhcnQgPSB2YWxpZExlbmd0aCAtIGV4cDJbcG93ZXJdOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGluZGV4IGluIHRoZSBhcnJheSBvZiB0aGUgZmlyc3QgZWxlbWVudCB3aGljaCBpcyBhdCBsZWFzdAorICAgICAqIGFzIGxhcmdlIGFzIDx0dD52YWx1ZTwvdHQ+LiAgSWYgdmFsdWUgaXMgbGFyZ2VyIHRoYW4gdGhlIGxhcmdlc3QKKyAgICAgKiBlbGVtZW50IGluIHRoZSBhcnJheSB0aGUgbGFzdCB2YWxpZCBpbmRleCBpbiB0aGUgYXJyYXkgaXMgcmV0dXJuZWQuCisgICAgICovCisgICAgcHVibGljIGludCBmaW5kSW5kZXgoaW50IHZhbHVlKQorICAgIHsKKyAgICAgICAgaW50IGluZGV4ID0gZXhwMltwb3dlcl0tMSArIGZGaXJzdEluZGV4OworICAgICAgICBpZiAodmFsdWUgPj0gZGF0YUFycmF5W2F1eFN0YXJ0ICsgZkZpcnN0SW5kZXhdKSB7CisgICAgICAgICAgICBpbmRleCArPSBhdXhTdGFydDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGF0IHRoaXMgcG9pbnQsIGluZGV4IGlzIHRoZSAidXBwZXIgbGltaXQiIG9mIHRoZSBzZWFyY2gKKworICAgICAgICBzd2l0Y2ggKHBvd2VyKSB7CisgICAgICAgIGNhc2UgMTc6CisgICAgICAgICAgICBpZiAodmFsdWUgPCBkYXRhQXJyYXlbaW5kZXgtNjU1MzZdKSBpbmRleCAtPSA2NTUzNjsKKyAgICAgICAgY2FzZSAxNjoKKyAgICAgICAgICAgIGlmICh2YWx1ZSA8IGRhdGFBcnJheVtpbmRleC0zMjc2OF0pIGluZGV4IC09IDMyNzY4OworICAgICAgICBjYXNlIDE1OgorICAgICAgICAgICAgaWYgKHZhbHVlIDwgZGF0YUFycmF5W2luZGV4LTE2Mzg0XSkgaW5kZXggLT0gMTYzODQ7CisgICAgICAgIGNhc2UgMTQ6CisgICAgICAgICAgICBpZiAodmFsdWUgPCBkYXRhQXJyYXlbaW5kZXgtODE5Ml0pIGluZGV4IC09IDgxOTI7CisgICAgICAgIGNhc2UgMTM6CisgICAgICAgICAgICBpZiAodmFsdWUgPCBkYXRhQXJyYXlbaW5kZXgtNDA5Nl0pIGluZGV4IC09IDQwOTY7CisgICAgICAgIGNhc2UgMTI6CisgICAgICAgICAgICBpZiAodmFsdWUgPCBkYXRhQXJyYXlbaW5kZXgtMjA0OF0pIGluZGV4IC09IDIwNDg7CisgICAgICAgIGNhc2UgMTE6CisgICAgICAgICAgICBpZiAodmFsdWUgPCBkYXRhQXJyYXlbaW5kZXgtMTAyNF0pIGluZGV4IC09IDEwMjQ7CisgICAgICAgIGNhc2UgMTA6CisgICAgICAgICAgICBpZiAodmFsdWUgPCBkYXRhQXJyYXlbaW5kZXgtNTEyXSkgaW5kZXggLT0gNTEyOworICAgICAgICBjYXNlIDk6CisgICAgICAgICAgICBpZiAodmFsdWUgPCBkYXRhQXJyYXlbaW5kZXgtMjU2XSkgaW5kZXggLT0gMjU2OworICAgICAgICBjYXNlIDg6CisgICAgICAgICAgICBpZiAodmFsdWUgPCBkYXRhQXJyYXlbaW5kZXgtMTI4XSkgaW5kZXggLT0gMTI4OworICAgICAgICBjYXNlIDc6CisgICAgICAgICAgICBpZiAodmFsdWUgPCBkYXRhQXJyYXlbaW5kZXgtNjRdKSBpbmRleCAtPSA2NDsKKyAgICAgICAgY2FzZSA2OgorICAgICAgICAgICAgaWYgKHZhbHVlIDwgZGF0YUFycmF5W2luZGV4LTMyXSkgaW5kZXggLT0gMzI7CisgICAgICAgIGNhc2UgNToKKyAgICAgICAgICAgIGlmICh2YWx1ZSA8IGRhdGFBcnJheVtpbmRleC0xNl0pIGluZGV4IC09IDE2OworICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICBpZiAodmFsdWUgPCBkYXRhQXJyYXlbaW5kZXgtOF0pIGluZGV4IC09IDg7CisgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgIGlmICh2YWx1ZSA8IGRhdGFBcnJheVtpbmRleC00XSkgaW5kZXggLT0gNDsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgaWYgKHZhbHVlIDwgZGF0YUFycmF5W2luZGV4LTJdKSBpbmRleCAtPSAyOworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICBpZiAodmFsdWUgPCBkYXRhQXJyYXlbaW5kZXgtMV0pIGluZGV4IC09IDE7CisgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgIGlmICh2YWx1ZSA8IGRhdGFBcnJheVtpbmRleF0pIGluZGV4IC09IDE7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGluZGV4OworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N0eWxlZHRleHQvTUNoYXJCdWZmZXIuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N0eWxlZHRleHQvTUNoYXJCdWZmZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wZWViZmYxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvc3R5bGVkdGV4dC9NQ2hhckJ1ZmZlci5qYXZhCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IE1DaGFyQnVmZmVyLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NDU6MTAgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0OworaW1wb3J0IGphdmEudGV4dC5DaGFyYWN0ZXJJdGVyYXRvcjsKKworLyoqIEEgZHluYW1pYyBjaGFyYWN0ZXIgYXJyYXkgb3B0aW1pemVkIGZvciBzZXF1ZW5jZXMgb2YgaW5zZXJ0CisgICAgb3IgZGVsZXRlIG9wZXJhdGlvbnMgaW4gYSBsb2NhbCByZWdpb24uICovCisKK2Fic3RyYWN0IGNsYXNzIE1DaGFyQnVmZmVyCit7CisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBhYnN0cmFjdCB2b2lkIHJlcGxhY2UoaW50IHN0YXJ0LCBpbnQgbGltaXQsIE1Db25zdFRleHQgdGV4dCwgaW50IHNyY1N0YXJ0LCBpbnQgc3JjTGltaXQpOworICAgIGFic3RyYWN0IHZvaWQgcmVwbGFjZShpbnQgc3RhcnQsIGludCBsaW1pdCwgY2hhcltdIHNyY0NoYXJzLCBpbnQgc3JjU3RhcnQsIGludCBzcmNMaW1pdCk7CisgICAgYWJzdHJhY3Qgdm9pZCByZXBsYWNlKGludCBzdGFydCwgaW50IGxpbWl0LCBTdHJpbmcgc3JjU3RyaW5nLCBpbnQgc3JjU3RhcnQsIGludCBzcmNMaW1pdCk7CisgICAgYWJzdHJhY3Qgdm9pZCByZXBsYWNlKGludCBzdGFydCwgaW50IGxpbWl0LCBjaGFyIHNyY0NoYXIpOworICAgIGFic3RyYWN0IENoYXJhY3Rlckl0ZXJhdG9yIGNyZWF0ZUNoYXJhY3Rlckl0ZXJhdG9yKGludCBzdGFydCwgaW50IGxpbWl0KTsKKyAgICBhYnN0cmFjdCBjaGFyIGF0KGludCBwb3MpOworICAgIGFic3RyYWN0IHZvaWQgYXQoaW50IHN0YXJ0LCBpbnQgbGltaXQsIGNoYXJbXSBkc3QsIGludCBkc3RTdGFydCk7CisKKyAgICBhYnN0cmFjdCBpbnQgIGxlbmd0aCgpOworCisgICAgYWJzdHJhY3QgaW50ICBjYXBhY2l0eSgpOworICAgIGFic3RyYWN0IHZvaWQgcmVzZXJ2ZUNhcGFjaXR5KGludCBwb3MsIGludCBsZW5ndGgpOworICAgIGFic3RyYWN0IHZvaWQgY29tcHJlc3MoKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N0eWxlZHRleHQvTUNvbnN0VGV4dC5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvc3R5bGVkdGV4dC9NQ29uc3RUZXh0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNDIwY2Q0NgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N0eWxlZHRleHQvTUNvbnN0VGV4dC5qYXZhCkBAIC0wLDAgKzEsMzI1IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBNQ29uc3RUZXh0LmphdmEsdiAkICRSZXZpc2lvbjogMS4zICQgJERhdGU6IDIwMDIvMDMvMjAgMDU6MTE6MTcgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0OworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlTWFwOworaW1wb3J0IGphdmEudGV4dC5DaGFyYWN0ZXJJdGVyYXRvcjsKK2ltcG9ydCBqYXZhLmF3dC5kYXRhdHJhbnNmZXIuRGF0YUZsYXZvcjsKKworLyoqCisgKiBNQ29uc3RUZXh0IGlzIGEgYmFzZSBjbGFzcyBmb3IgdGV4dCB3aXRoIG11bHRpcGxlIGNoYXJhY3RlciBhbmQKKyAqIHBhcmFncmFwaCBzdHlsZXMuICBUaGUgdGV4dCBpcyBhIHNlcXVlbmNlIG9mIFVuaWNvZGUgY2hhcmFjdGVycywKKyAqIHJlcHJlc2VudGVkIGJ5IDxjb2RlPmNoYXI8L2NvZGU+LiAgQ2hhcmFjdGVyIGFuZCBwYXJhZ3JhcGgKKyAqIHN0eWxlcyBhcmUgcmVwcmVzZW50ZWQgYnkgdGhlIDxjb2RlPkF0dHJpYnV0ZU1hcDwvY29kZT4gY2xhc3MuCisgKiA8cD4KKyAqIENoYXJhY3RlcnMgaW4gdGhlIHRleHQgYXJlIGFjY2Vzc2VkIHdpdGggYW4gaW50ZWdlciBpbmRleCB1c2luZyB0aGUKKyAqIDxjb2RlPmF0PC9jb2RlPiBtZXRob2QuCisgKiBWYWxpZCBpbmRpY2VzIGFyZSBiZXR3ZWVuIDAgYW5kIChsZW5ndGgtMSksIHdoZXJlIGxlbmd0aCBpcyB0aGUgbnVtYmVyCisgKiBvZiBjaGFyYWN0ZXJzIGluIHRoZSB0ZXh0LiAgQWRkaXRpb25hbGx5LCB0aGUKKyAqIGNoYXJhY3RlcnMgaW4gdGhlIHRleHQgbWF5IGJlIGFjY2Vzc2VkIHRocm91Z2ggYQorICogPGNvZGU+amF2YS50ZXh0LkNoYXJhY3Rlckl0ZXJhdG9yPC9jb2RlPi4KKyAqIDxwPgorICogRXZlcnkgY2hhcmFjdGVyIGluIHRoZSB0ZXh0IGhhcyBhIGNoYXJhY3RlciBzdHlsZSBhc3NvY2lhdGVkIHdpdGggaXQsCisgKiByZXByZXNlbnRlZCBieSB0aGUgPGNvZGU+QXR0cmlidXRlTWFwPC9jb2RlPiBjbGFzcy4gIFRoZSBjaGFyYWN0ZXIKKyAqIHN0eWxlIGZvciBhIHBhcnRpY3VsYXIgY2hhcmFjdGVyIGNhbiBiZSBvYnRhaW5lZCB1c2luZyB0aGUKKyAqIDxjb2RlPmNoYXJhY3RlclN0eWxlQXQ8L2NvZGU+IG1ldGhvZC4KKyAqIDxwPgorICogRWFjaCBjaGFyYWN0ZXIgaW4gdGhlIHRleHQgaXMgY29udGFpbmVkIGluIGEgcGFyYWdyYXBoLiAgQSBwYXJhZ3JhcGgKKyAqIGlzIGEgcmFuZ2Ugb2YgdGV4dCBpbmNsdWRpbmcgYW5kIHRlcm1pbmF0ZWQgYnkgYQorICogcGFyYWdyYXBoIHNlcGFyYXRvciAoZWl0aGVyIDxjb2RlPlxuPC9jb2RlPiBvciA8Y29kZT5VKzIwMjk8L2NvZGU+KS4KKyAqIEV2ZXJ5CisgKiBwYXJhZ3JhcGggaGFzIGEgcGFyYWdyYXBoIHN0eWxlIGFzc29jaWF0ZWQgd2l0aCBpdCwgcmVwcmVzZW50ZWQKKyAqIGJ5IHRoZSA8Y29kZT5BdHRyaWJ1dGVNYXA8L2NvZGU+IGNsYXNzLiAgUGFyYWdyYXBoIGJvdW5kYXJpZXMgYW5kCisgKiBzdHlsZXMgY2FuIGJlIG9idGFpbmVkIGZyb20gdGhlIE1Db25zdFRleHQuCisgKiA8cD4KKyAqIFRoaXMgY2xhc3MgZG9lcyBub3QgaGF2ZSBtZXRob2RzIGZvciBtb2RpZnlpbmcgdGhlIHRleHQgb3Igc3R5bGVzLgorICogSG93ZXZlciwgc3ViY2xhc3NlcyBtYXkgYWRkIHRoaXMgY2FwYWJpbGl0eSwgc28gaXQgaXMgbm90IHNhZmUgdG8KKyAqIGFzc3VtZSB0aGF0IGFuIE1Db25zdFRleHQgaW5zdGFuY2UgaXMgaW1tdXRhYmxlLiAgSW4gcGFydGljdWxhciwKKyAqIHRoZSBNVGV4dCBjbGFzcyBhZGRzIG1vZGlmaWNhdGlvbiBwcm90b2NvbCB0byB0aGlzIGNsYXNzLiAgQ2xpZW50cworICogY2FuIGRldGVjdCB3aGV0aGVyIGFuIE1Db25zdFRleHQgaGFzIGNoYW5nZWQgYnkga2VlcGluZyB0cmFjayBvZiBpdHMKKyAqIHRpbWVzdGFtcC4KKyAqIDxwPgorICogQSBEYXRhRmxhdm9yIGZvciBjbGlwYm9hcmQgY29udGVudCBpcyBkZWZpbmVkIGluIHRoaXMgY2xhc3MuICBVc2luZworICogdGhpcyBEYXRhRmxhdm9yIGluc3VyZXMgdGhhdCBhbGwgY2xpZW50cyB3aWxsIHJlY29nbml6ZSBNQ29uc3RUZXh0CisgKiBjb250ZW50IG9uIHRoZSBjbGlwYm9hcmQuCisgKiBAc2VlIE1UZXh0CisgKiBAc2VlIEF0dHJpYnV0ZU1hcAorICogQHNlZSBqYXZhLnRleHQuQ2hhcmFjdGVySXRlcmF0b3IKKyAqIEBzZWUgamF2YS5hd3QuZGF0YXRyYW5zZmVyLkRhdGFGbGF2b3IKKyAqLworcHVibGljIGFic3RyYWN0IGNsYXNzIE1Db25zdFRleHQgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICAvKioKKyAgICAgKiBUaGUgRGF0YUZsYXZvciBmb3IgTUNvbnN0VGV4dCBjbGlwYm9hcmQgY29udGVudC4gIFVzZWQgdG8KKyAgICAgKiBpbmRpY2F0ZSB0aGF0IGNsaXBib2FyZCBkYXRhIGhhcyBhbiBNQ29uc3RUZXh0IHJlcHJlc2VudGF0aW9uLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgRGF0YUZsYXZvciBzdHlsZWRUZXh0Rmxhdm9yID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGF0YUZsYXZvcihNQ29uc3RUZXh0LmNsYXNzLCAiU3R5bGVkIFRleHQiKTsKKworICAgIHByb3RlY3RlZCBNQ29uc3RUZXh0KCkgeworICAgIH0KKworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gQ0hBUkFDVEVSIEFDQ0VTUworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLyoqCisqIFJldHVybiB0aGUgY2hhcmFjdGVyIGF0IG9mZnNldCA8Y29kZT5wb3M8L2NvZGU+LgorKiBAcGFyYW0gcG9zIGEgdmFsaWQgb2Zmc2V0IGludG8gdGhlIHRleHQKKyogQHJldHVybiB0aGUgY2hhcmFjdGVyIGF0IG9mZnNldCA8Y29kZT5wb3M8L2NvZGU+CisqLworICAgIHB1YmxpYyBhYnN0cmFjdCBjaGFyIGF0KGludCBwb3MpOworCisvKioKKyogQ29weSB0aGUgY2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UgWzxjb2RlPnN0YXJ0PC9jb2RlPiwgPGNvZGU+bGltaXQ8L2NvZGU+KQorKiBpbnRvIHRoZSBhcnJheSA8Y29kZT5kc3Q8L2NvZGU+LCBiZWdpbm5pbmcgYXQgPGNvZGU+ZHN0U3RhcnQ8L2NvZGU+LgorKiBAcGFyYW0gc3RhcnQgb2Zmc2V0IG9mIGZpcnN0IGNoYXJhY3RlciB3aGljaCB3aWxsIGJlIGNvcGllZCBpbnRvIHRoZSBhcnJheQorKiBAcGFyYW0gbGltaXQgb2Zmc2V0IGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBsYXN0IGNoYXJhY3RlciB3aGljaCB3aWxsIGJlIGNvcGllZCBpbnRvIHRoZSBhcnJheQorKiBAcGFyYW0gZHN0IGFycmF5IGluIHdoaWNoIHRvIGNvcHkgY2hhcmFjdGVycy4gIFRoZSBsZW5ndGggb2YgPGNvZGU+ZHN0PC9jb2RlPiBtdXN0IGJlIGF0IGxlYXN0CisqICg8Y29kZT5kc3RTdGFydCArIGxpbWl0IC0gc3RhcnQ8L2NvZGU+KS4KKyovCisgICAgcHVibGljIGFic3RyYWN0IHZvaWQgZXh0cmFjdENoYXJzKGludCBzdGFydCwgaW50IGxpbWl0LCBjaGFyW10gZHN0LCBpbnQgZHN0U3RhcnQpOworCisvKioKKyogQ3JlYXRlIGFuIE1Db25zdFRleHQgY29udGFpbmluZyB0aGUgY2hhcmFjdGVycyBhbmQgc3R5bGVzIGluIHRoZSByYW5nZQorKiBbPGNvZGU+c3RhcnQ8L2NvZGU+LCA8Y29kZT5saW1pdDwvY29kZT4pLgorKiBAcGFyYW0gc3RhcnQgb2Zmc2V0IG9mIGZpcnN0IGNoYXJhY3RlciBpbiB0aGUgbmV3IHRleHQKKyogQHBhcmFtIGxpbWl0IG9mZnNldCBpbW1lZGlhdGVseSBhZnRlciB0aGUgbGFzdCBjaGFyYWN0ZXIgaW4gdGhlIG5ldyB0ZXh0CisqIEByZXR1cm4gYW4gTUNvbnN0VGV4dCBvYmplY3QgY29udGFpbmluZyB0aGUgY2hhcmFjdGVycyBhbmQgc3R5bGVzIGluIHRoZSBnaXZlbiByYW5nZQorKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgTUNvbnN0VGV4dCBleHRyYWN0KGludCBzdGFydCwgaW50IGxpbWl0KTsKKworLyoqCisqIENyZWF0ZSBhIDxjb2RlPmphdmEudGV4dC5DaGFyYWN0ZXJJdGVyYXRvcjwvY29kZT4gb3ZlciBhbGwKKyogb2YgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIHRleHQuICBEZWZhdWx0IGltcGxlbWVudGF0aW9uIGNhbGxzCisqIDxjb2RlPmNyZWF0ZUNoYXJhY3Rlckl0ZXJhdG9yKDAsIGxlbmd0aCgpKTwvY29kZT4KKyogQHJldHVybiBhIDxjb2RlPmphdmEudGV4dC5DaGFyYWN0ZXJJdGVyYXRvcjwvY29kZT4gb3ZlciBhbGwKKyogICAgICBvZiB0aGUgY2hhcmFjdGVycyBpbiB0aGUgdGV4dAorKi8KKyAgICBwdWJsaWMgQ2hhcmFjdGVySXRlcmF0b3IgY3JlYXRlQ2hhcmFjdGVySXRlcmF0b3IoKSB7CisKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUNoYXJhY3Rlckl0ZXJhdG9yKDAsIGxlbmd0aCgpKTsKKyAgICB9CisKKy8qKgorKiBDcmVhdGUgYSA8Y29kZT5qYXZhLnRleHQuQ2hhcmFjdGVySXRlcmF0b3I8L2NvZGU+IG92ZXIgdGhlCisqIGdpdmVuIHJhbmdlIG9mIGNoYXJhY3RlcnMgaW4gdGhlIHRleHQuCisqIEBwYXJhbSBzdGFydCB0aGUgZmlyc3QgaW5kZXggaW4gdGhlIGl0ZXJhdGlvbiByYW5nZQorKiBAcGFyYW0gbGltaXQgdGhlIGluZGV4IGFmdGVyIHRoZSBsYXN0IGNoYXJhY3RlciBpbiB0aGUgaXRlcmF0aW9uIHJhbmdlCisqIEByZXR1cm4gYSA8Y29kZT5qYXZhLnRleHQuQ2hhcmFjdGVySXRlcmF0b3I8L2NvZGU+IG92ZXIgdGhlCisqICAgICBnaXZlbiByYW5nZQorKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgQ2hhcmFjdGVySXRlcmF0b3IgY3JlYXRlQ2hhcmFjdGVySXRlcmF0b3IoaW50IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGltaXQpOworCisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIFNJWkUvQ0FQQUNJVFkKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8qKgorKiBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgTUNvbnN0VGV4dCBvYmplY3QuICBUaGUgbGVuZ3RoIGlzIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiB0aGUgdGV4dC4KKyogQHJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBNQ29uc3RUZXh0IG9iamVjdAorKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgaW50IGxlbmd0aCgpOworCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBDaGFyYWN0ZXIgc3R5bGVzCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy8qKgorKiBSZXR1cm4gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlIGNoYXJhY3RlciBzdHlsZSBydW4KKyogY29udGFpbmluZyBwb3MuICBBbGwgY2hhcmFjdGVycyBpbiBhIHN0eWxlIHJ1biBoYXZlIHRoZSBzYW1lIGNoYXJhY3RlcgorKiBzdHlsZS4KKyogQHJldHVybiB0aGUgc3R5bGUgYXQgb2Zmc2V0IDxjb2RlPnBvczwvY29kZT4KKyovCisgICAgcHVibGljIGFic3RyYWN0IGludCBjaGFyYWN0ZXJTdHlsZVN0YXJ0KGludCBwb3MpOworCisvKioKKyogUmV0dXJuIHRoZSBpbmRleCBhZnRlciB0aGUgbGFzdCBjaGFyYWN0ZXIgaW4gdGhlIGNoYXJhY3RlciBzdHlsZSBydW4KKyogY29udGFpbmluZyBwb3MuICBBbGwgY2hhcmFjdGVycyBpbiBhIHN0eWxlIHJ1biBoYXZlIHRoZSBzYW1lIGNoYXJhY3RlcgorKiBzdHlsZS4KKyogQHJldHVybiB0aGUgc3R5bGUgYXQgb2Zmc2V0IDxjb2RlPnBvczwvY29kZT4KKyovCisgICAgcHVibGljIGFic3RyYWN0IGludCBjaGFyYWN0ZXJTdHlsZUxpbWl0KGludCBwb3MpOworCisvKioKKyogUmV0dXJuIHRoZSBzdHlsZSBhcHBsaWVkIHRvIHRoZSBjaGFyYWN0ZXIgYXQgb2Zmc2V0IDxjb2RlPnBvczwvY29kZT4uCisqIEBwYXJhbSBwb3MgYSB2YWxpZCBvZmZzZXQgaW50byB0aGUgdGV4dAorKiBAcmV0dXJuIHRoZSBzdHlsZSBhdCBvZmZzZXQgPGNvZGU+cG9zPC9jb2RlPgorKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgQXR0cmlidXRlTWFwIGNoYXJhY3RlclN0eWxlQXQoaW50IHBvcyk7CisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIFBBUkFHUkFQSCBCT1VOREFSSUVTCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvKioKKyogUmV0dXJuIHRoZSBzdGFydCBvZiB0aGUgcGFyYWdyYXBoIGNvbnRhaW5pbmcgdGhlIGNoYXJhY3RlciBhdCBvZmZzZXQgPGNvZGU+cG9zPC9jb2RlPi4KKyogQHBhcmFtIHBvcyBhIHZhbGlkIG9mZnNldCBpbnRvIHRoZSB0ZXh0CisqIEByZXR1cm4gdGhlIHN0YXJ0IG9mIHRoZSBwYXJhZ3JhcGggY29udGFpbmluZyB0aGUgY2hhcmFjdGVyIGF0IG9mZnNldCA8Y29kZT5wb3M8L2NvZGU+CisqLworICAgIHB1YmxpYyBhYnN0cmFjdCBpbnQgcGFyYWdyYXBoU3RhcnQoaW50IHBvcyk7CisKKy8qKgorKiBSZXR1cm4gdGhlIGxpbWl0IG9mIHRoZSBwYXJhZ3JhcGggY29udGFpbmluZyB0aGUgY2hhcmFjdGVyIGF0IG9mZnNldCA8Y29kZT5wb3M8L2NvZGU+LgorKiBAcGFyYW0gcG9zIGEgdmFsaWQgb2Zmc2V0IGludG8gdGhlIHRleHQKKyogQHJldHVybiB0aGUgbGltaXQgb2YgdGhlIHBhcmFncmFwaCBjb250YWluaW5nIHRoZSBjaGFyYWN0ZXIgYXQgb2Zmc2V0IDxjb2RlPnBvczwvY29kZT4KKyovCisgICAgcHVibGljIGFic3RyYWN0IGludCBwYXJhZ3JhcGhMaW1pdChpbnQgcG9zKTsKKworLyoqCisqIFJldHVybiB0aGUgcGFyYWdyYXBoIHN0eWxlIGFwcGxpZWQgdG8gdGhlIHBhcmFncmFwaCBjb250YWluaW5nIG9mZnNldCA8Y29kZT5wb3M8L2NvZGU+LgorKiBAcGFyYW0gcG9zIGEgdmFsaWQgb2Zmc2V0IGludG8gdGhlIHRleHQKKyogQHJldHVybiB0aGUgcGFyYWdyYXBoIHN0eWxlIGluIGVmZmVjdCBhdCA8Y29kZT5wb3M8L2NvZGU+CisqLworICAgIHB1YmxpYyBhYnN0cmFjdCBBdHRyaWJ1dGVNYXAgcGFyYWdyYXBoU3R5bGVBdChpbnQgcG9zKTsKKworLyoqCisqIFJldHVybiB0aGUgY3VycmVudCB0aW1lIHN0YW1wLiAgVGhlIHRpbWUgc3RhbXAgaXMKKyogaW5jcmVtZW50ZWQgd2hlbmV2ZXIgdGhlIGNvbnRlbnRzIG9mIHRoZSBNQ29uc3RUZXh0IGNoYW5nZXMuCisqIEByZXR1cm4gdGhlIGN1cnJlbnQgcGFyYWdyYXBoIHN0eWxlIHRpbWUgc3RhbXAKKyovCisgICAgcHVibGljIGFic3RyYWN0IGludCBnZXRUaW1lU3RhbXAoKTsKKworLyoqCisqIFJldHVybiB0aGUgc3RhcnQgb2YgdGhlIGRhbWFnZWQgcmFuZ2UuICBJZiB0aGUgc3RhcnQgaXMgbm90IGxlc3MKKyogdGhhbiB0aGUgdGhlIGxpbWl0IG9mIHRoZSBkYW1hZ2VkIHJhbmdlLCB0aGVuIHRoZSBkYW1hZ2VkIHJhbmdlCisqIGlzIGVtcHR5LgorKiBAcmV0dXJuIHRoZSBzdGFydCBvZiB0aGUgZGFtYWdlZCByYW5nZQorKiBAc2VlICNkYW1hZ2VkUmFuZ2VMaW1pdAorKiBAc2VlIE1UZXh0I3Jlc2V0RGFtYWdlZFJhbmdlCisqLworICAgIHB1YmxpYyBhYnN0cmFjdCBpbnQgZGFtYWdlZFJhbmdlU3RhcnQoKTsKKworLyoqCisqIFJldHVybiB0aGUgbGltaXQgb2YgdGhlIGRhbWFnZWQgcmFuZ2UuICBJZiB0aGUgc3RhcnQgaXMgbm90IGxlc3MKKyogdGhhbiB0aGUgdGhlIGxpbWl0IG9mIHRoZSBkYW1hZ2VkIHJhbmdlLCB0aGVuIHRoZSBkYW1hZ2VkIHJhbmdlCisqIGlzIGVtcHR5LgorKiBAcmV0dXJuIHRoZSBzdGFydCBvZiB0aGUgZGFtYWdlZCByYW5nZQorKiBAc2VlICNkYW1hZ2VkUmFuZ2VTdGFydAorKiBAc2VlIE1UZXh0I3Jlc2V0RGFtYWdlZFJhbmdlCisqLworICAgIHB1YmxpYyBhYnN0cmFjdCBpbnQgZGFtYWdlZFJhbmdlTGltaXQoKTsKKworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gRXF1YWxpdHkgYW5kIGhhc2hDb2RlCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvKioKKyogQ29tcGFyZSB0aGlzIHRvIGFub3RoZXIgT2JqZWN0IGZvciBlcXVhbGl0eS4gIFRoaXMgaXMKKyogZXF1YWwgdG8gcmhzIGlmIHJocyBpcyBhbiBNQ29uc3RUZXh0IHdoaWNoIGlzIGVxdWFsCisqIHRvIHRoaXMuCisqIEBwYXJhbSByaHMgT2JqZWN0IHRvIGNvbXBhcmUgdG8KKyogQHJldHVybiB0cnVlIGlmIHRoaXMgZXF1YWxzIDxjb2RlPnJoczwvY29kZT4KKyovCisgICAgcHVibGljIGZpbmFsIGJvb2xlYW4gZXF1YWxzKE9iamVjdCByaHMpIHsKKworICAgICAgICBNQ29uc3RUZXh0IG90aGVyVGV4dDsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgb3RoZXJUZXh0ID0gKE1Db25zdFRleHQpIHJoczsKKyAgICAgICAgfQorICAgICAgICBjYXRjaChDbGFzc0Nhc3RFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGVxdWFscyhvdGhlclRleHQpOworICAgIH0KKworLyoqCisqIENvbXBhcmUgdGhpcyB0byBhbm90aGVyIE1Db25zdFRleHQgZm9yIGVxdWFsaXR5LiAgVGhpcyBpcworKiBlcXVhbCB0byByaHMgaWYgdGhlIGNoYXJhY3RlcnMgYW5kIHN0eWxlcyBpbiByaHMgYXJlIHRoZQorKiBzYW1lIGFzIHRoaXMuICBTdWJjbGFzc2VzIG1heSBvdmVycmlkZSB0aGlzIGltcGxlbWVudGF0aW9uCisqIGZvciBlZmZpY2llbmN5LCBidXQgdGhleSBzaG91bGQgcHJlc2VydmUgdGhlc2Ugc2VtYW50aWNzLgorKiBEZXRlcm1pbmluZyB0aGF0IHR3byBNQ29uc3RUZXh0IGluc3RhbmNlcyBhcmUgZXF1YWwgbWF5IGJlCisqIGFuIGV4cGVuc2l2ZSBvcGVyYXRpb24sIHNpbmNlIGV2ZXJ5IGNoYXJhY3RlciBhbmQgc3R5bGUgbXVzdAorKiBiZSBjb21wYXJlZC4KKyogQHBhcmFtIHJocyBPYmplY3QgdG8gY29tcGFyZSB0bworKiBAcmV0dXJuIHRydWUgaWYgdGhpcyBlcXVhbHMgPGNvZGU+cmhzPC9jb2RlPgorKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoTUNvbnN0VGV4dCByaHMpIHsKKworICAgICAgICBpZiAocmhzID09IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChyaHMgPT0gdGhpcykgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaGFzaENvZGUoKSAhPSByaHMuaGFzaENvZGUoKSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgaW50IGxlbmd0aCA9IGxlbmd0aCgpOworICAgICAgICBpZiAobGVuZ3RoICE9IHJocy5sZW5ndGgoKSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChpIDwgbGVuZ3RoICYmIGF0KGkpICE9IHJocy5hdChpKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZvciAoaW50IHN0YXJ0ID0gMDsgc3RhcnQgPCBsZW5ndGg7KSB7CisgICAgICAgICAgICBpZiAoIWNoYXJhY3RlclN0eWxlQXQoc3RhcnQpLmVxdWFscyhyaHMuY2hhcmFjdGVyU3R5bGVBdChzdGFydCkpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW50IGxpbWl0ID0gY2hhcmFjdGVyU3R5bGVMaW1pdChzdGFydCk7CisgICAgICAgICAgICBpZiAobGltaXQgIT0gcmhzLmNoYXJhY3RlclN0eWxlTGltaXQoc3RhcnQpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RhcnQgPSBsaW1pdDsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoaW50IHN0YXJ0ID0gMDsgc3RhcnQgPCBsZW5ndGg7KSB7CisKKyAgICAgICAgICAgIGlmICghcGFyYWdyYXBoU3R5bGVBdChzdGFydCkuZXF1YWxzKHJocy5wYXJhZ3JhcGhTdHlsZUF0KHN0YXJ0KSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGFydCA9IHBhcmFncmFwaExpbWl0KHN0YXJ0KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBwYXJhZ3JhcGhTdHlsZUF0KGxlbmd0aCkuZXF1YWxzKHJocy5wYXJhZ3JhcGhTdHlsZUF0KGxlbmd0aCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgaGFzaENvZGUgZm9yIHRoaXMgTUNvbnN0VGV4dC4gIEFuIGVtcHR5IE1Db25zdFRleHQKKyAgICAgKiBoYXMgaGFzaENvZGUgMDsgIGEgbm9uZW1wdHkgTUNvbnN0VGV4dCdzIGhhc2hDb2RlIGlzCisgICAgICogPGJsb2NrcXVvdGU+PHByZT4KKyAgICAgKiAgICAgICBhdCgwKSArCisgICAgICogICAgICAgYXQobGVuZ3RoLzIpKjMxXjEgKworICAgICAqICAgICAgIGF0KGxlbmd0aC0xKSozMV4yICsKKyAgICAgKiAgICAgICBjaGFyYWN0ZXJTdHlsZUF0KDApLmhhc2hDb2RlKCkqMzFeMyArCisgICAgICogICAgICAgcGFyYWdyYXBoU3R5bGVBdChsZW5ndGgtMSkuaGFzaENvZGUoKSozMV40CisgICAgICogPC9wcmU+PC9ibG9ja3F1b3RlPgorICAgICAqIHdoZXJlIDxjb2RlPl48L2NvZGU+IGlzIGV4cG9uZW50aWF0aW9uIChub3QgYml0d2lzZSBYT1IpLgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBpbnQgaGFzaENvZGUoKSB7CisKKyAgICAgICAgaW50IGhhc2hDb2RlID0gMDsKKyAgICAgICAgaW50IGxlbmd0aCA9IGxlbmd0aCgpOworCisgICAgICAgIGlmIChsZW5ndGggPiAwKSB7CisgICAgICAgICAgICBoYXNoQ29kZSA9IHBhcmFncmFwaFN0eWxlQXQobGVuZ3RoLTEpLmhhc2hDb2RlKCk7CisgICAgICAgICAgICBoYXNoQ29kZSA9IGhhc2hDb2RlKjMxICsgY2hhcmFjdGVyU3R5bGVBdCgwKS5oYXNoQ29kZSgpOworICAgICAgICAgICAgaGFzaENvZGUgPSBoYXNoQ29kZSozMSArIGF0KGxlbmd0aC0xKTsKKyAgICAgICAgICAgIGhhc2hDb2RlID0gaGFzaENvZGUqMzEgKyBhdChsZW5ndGgvMik7CisgICAgICAgICAgICBoYXNoQ29kZSA9IGhhc2hDb2RlKjMxICsgYXQoMCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gaGFzaENvZGU7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvc3R5bGVkdGV4dC9NUGFyYWdyYXBoQnVmZmVyLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC9zdHlsZWR0ZXh0L01QYXJhZ3JhcGhCdWZmZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44YTAxOGZmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvc3R5bGVkdGV4dC9NUGFyYWdyYXBoQnVmZmVyLmphdmEKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogTVBhcmFncmFwaEJ1ZmZlci5qYXZhLHYgJCAkUmV2aXNpb246IDEuMiAkICREYXRlOiAyMDAyLzAyLzE2IDAzOjA2OjM1ICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dDsKKworaW1wb3J0IGphdmEuaW8uU2VyaWFsaXphYmxlOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZU1hcDsKKworYWJzdHJhY3QgY2xhc3MgTVBhcmFncmFwaEJ1ZmZlcgoreworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisKKy8qKgorKiBSZXR1cm5zIHRoZSBzdGFydCBvZiB0aGUgcGFyYWdyYXBoIGNvbnRhaW5pbmcgb2Zmc2V0IDx0dD5wb3M8L3R0Pi4KKyovCisgICAgYWJzdHJhY3QgaW50IHBhcmFncmFwaFN0YXJ0KGludCBwb3MpOworCisvKioKKyogUmV0dXJucyB0aGUgbGltaXQgb2YgdGhlIHBhcmFncmFwaCBjb250YWluaW5nIG9mZnNldCA8dHQ+cG9zPC90dD4uCisqLworICAgIGFic3RyYWN0IGludCBwYXJhZ3JhcGhMaW1pdChpbnQgcG9zKTsKKworLyoqCisqIFJldHVybnMgdGhlIHN0eWxlIG9mIHRoZSBwYXJhZ3JhcGggY29udGFpbmluZyBvZmZzZXQgPHR0PnBvczwvdHQ+LgorKi8KKyAgICBhYnN0cmFjdCBBdHRyaWJ1dGVNYXAgcGFyYWdyYXBoU3R5bGVBdChpbnQgb2Zmc2V0KTsKKworLyoqCisqIFByb2Nlc3MgYSBjaGFyYWN0ZXIgaW5zZXJ0aW9uIGF0IG9mZnNldCA8dHQ+c3RhcnQ8L3R0Pi4KKyogSWYgYSBwYXJhZ3JhcGggYnJlYWsgd2FzIGluc2VydGVkLCBwcm9wb2dhdGUgcGFyYWdyYXBoIHN0eWxlIGF0CisqIDx0dD5zdGFydDwvdHQ+IHRvIG5ldyBwYXJhZ3JhcGguCisqLworICAgIGFic3RyYWN0IHZvaWQgaW5zZXJ0VGV4dChpbnQgc3RhcnQsIGNoYXIgaW5zZXJ0ZWRDaGFyKTsKKworLyoqCisqIFByb2Nlc3MgY2hhcmFjdGVyIGluc2VydGlvbiBhdCBvZmZzZXQgPHR0PnN0YXJ0PC90dD4uCisqIEVhY2ggbmV3IHBhcmFncmFwaCBnZXRzIHBhcmFncmFwaCBzdHlsZSBhdAorKiA8dHQ+c3RhcnQ8L3R0Pi4KKyovCisgICAgYWJzdHJhY3Qgdm9pZCBpbnNlcnRUZXh0KGludCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcltdIHNyY0NoYXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjU3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzcmNMaW1pdCk7CisKKy8qKgorKiBQcm9jZXNzIGRlbGV0aW9uIGJ5IHJlbW92aW5nIHBhcmFncmFwaCBicmVha3MgY29udGFpbmVkIGluCisqIGRlbGV0ZWQgcmFuZ2UuICBQcm9wb2dhdGUgcGFyYWdyYXBoIHN0eWxlcyBiYWNrd2FyZCwgaWYgbmVjZXNzYXJ5LgorKi8KKyAgICBhYnN0cmFjdCB2b2lkIGRlbGV0ZVRleHQoaW50IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludFtdIGRhbWFnZWRSYW5nZSk7CisKKy8qCisqIFJlcGxhY2UgcGFyYWdyYXBoIGJyZWFrcy9zdHlsZXMgYmV0d2VlbiBzdGFydCBhbmQgbGltaXQgd2l0aCBwYXJhZ3JhcGggYnJlYWtzL3N0eWxlcworKiBmcm9tIDx0dD5zcmNUZXh0PC90dD4uCisqIEBwYXJhbSBzdGFydCBhbiBvZmZzZXQgaW50byB0aGUgdGV4dAorKiBAcGFyYW0gbGltaXQgdGhlIGluZGV4IGFmdGVyIHRoZSBsYXN0IGNoYXJhY3RlciB0byByZXBsYWNlCisqIEBwYXJhbSBzcmNUZXh0IHRoZSB0ZXh0IGZyb20gd2hpY2ggbmV3IHBhcmFncmFwaHMgYXJlIHRha2VuCisqIEBwYXJhbSBzcmNTdGFydCB0aGUgc3RhcnQgb2YgdGhlIHJhbmdlIGluIDxjb2RlPnNyY1RleHQ8L2NvZGU+IHRvIGNvcHkKKyogQHBhcmFtIHNyY0xpbWl0IHRoZSBmaXJzdCBpbmRleCBhZnRlciB0aGUgcmFuZ2UgaW4gPGNvZGU+c3JjVGV4dDwvY29kZT4gdG8gY29weQorKi8KKyAgICBhYnN0cmFjdCB2b2lkIHJlcGxhY2UoaW50IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIE1Db25zdFRleHQgc3JjVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNyY1N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjTGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGludFtdIGRhbWFnZWRSYW5nZSk7CisKKy8qKgorKiBTZXQgdGhlIHN0eWxlIG9mIGFsbCBwYXJhZ3JhcGhzIGNvbnRhaW5pbmcgb2Zmc2V0cyBpbiB0aGUgcmFuZ2UgW3N0YXJ0LCBsaW1pdCkgdG8KKyogPHR0PnN0eWxlPC90dD4uCisqLworICAgIGFic3RyYWN0IGJvb2xlYW4gbW9kaWZ5UGFyYWdyYXBoU3R5bGVzKGludCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3R5bGVNb2RpZmllciBtb2RpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRbXSBkYW1hZ2VkUmFuZ2UpOworCisvKioKKyogTWluaW1pemUgdGhlIGFtb3VudCBvZiBtZW1vcnkgdXNlZCBieSB0aGlzIG9iamVjdC4KKyovCisgICAgYWJzdHJhY3Qgdm9pZCBjb21wcmVzcygpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvc3R5bGVkdGV4dC9NU3R5bGVCdWZmZXIuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N0eWxlZHRleHQvTVN0eWxlQnVmZmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNzdiZThmMQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N0eWxlZHRleHQvTVN0eWxlQnVmZmVyLmphdmEKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IE1TdHlsZUJ1ZmZlci5qYXZhLHYgJCAkUmV2aXNpb246IDEuMiAkICREYXRlOiAyMDAyLzAyLzE2IDAzOjA2OjM1ICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRsYXlvdXQuYXR0cmlidXRlcy5BdHRyaWJ1dGVNYXA7CisKKy8qCisgICAgOC8xLzk2CisgICAgICAgIFN0eWxlIC0+IFJlc29sdmVkU3R5bGUKKyAgICA4LzcvOTYgamYKKyAgICAgICAgYWRkZWQgY291bnRTdHlsZXMgYW5kIGdldFN0eWxlcyBwcm90b2NvbAorICAgIDgvMTMvOTYKKyAgICAgICAgUmVzb2x2ZWRTdHlsZS0+U3R5bGUKKyAgICA4LzIyLzk2IGpmCisgICAgICAgIFJlbW92ZWQgdGhlIHNldEl0ZXJhdG9yIG1ldGhvZHMuCisqLworLyoKKyogTVN0eWxlQnVmZmVyIGlzIHRoZSBhYnN0cmFjdCBpbnRlcmZhY2UgZm9yIGEgY2xhc3Mgd2hpY2ggbWFpbnRhaW5zCisqIHN0eWxlIHJ1bnMgaW4gYW4gPHR0Pk1UZXh0PC90dD4uICBBICJzdHlsZSBydW4iIGNvbnNpc3RzIG9mIGEKKyogc3R5bGUgYW5kIHRoZSBpbnRlcnZhbCBvbiB3aGljaCB0aGUgc3R5bGUgYXBwbGllcy4KKyogPHA+CisqIE1TdHlsZUJ1ZmZlciBpbmNsdWRlcyBtZXRob2RzIHRvIGNhbGwgd2hlbiB0ZXh0IGlzIGluc2VydGVkIGludG8KKyogb3IgZGVsZXRlZCBmcm9tIHRoZSA8dHQ+TVRleHQ8L3R0Pi4gIFRoZXNlIG1ldGhvZHMgdXBkYXRlIHRoZQorKiBzdHlsZSBydW5zIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29tbW9ubHkgYWNjZXB0ZWQgYmVoYXZpb3IgZm9yCisqIHN0eWxlIHJ1bnMuCisqIDxwPgorKiBBZGRpdGlvbmFsbHksIE1TdHlsZUJ1ZmZlciBwcm92aWRlcyBtZXRob2RzIGZvciByZXBsYWNpbmcgdGhlIHN0eWxlIHJ1bnMgb24gYQorKiB0ZXh0IHJhbmdlIHdpdGggYW5vdGhlciBzZXQgb2Ygc3R5bGUgcnVucy4gIE1TdHlsZUJ1ZmZlciBkb2VzIG5vdCBkbyBzdHlsZSAiY29tYmluaW5nIiAoZm9yCisqIGV4YW1wbGUsIGFkZGluZyB0aGUgYm9sZCBhdHRyaWJ1dGUgdG8gdGV4dCB3aGljaCBpcyBpdGFsaWNpemVkKTsgIGNsaWVudHMgYXJlCisqIHJlc3BvbnNpYmxlIGZvciBjb21wdXRpbmcgdGhlIGNvbWJpbmVkIHN0eWxlcywgYW5kIHBhc3NpbmcgdGhlc2Ugc3R5bGVzIGludG8KKyogTVN0eWxlQnVmZmVyLgorKiA8cD4KKyogTVN0eWxlQnVmZmVyIHN1cHBsaWVzIGEgbWV0aG9kIGZvciByZXBsYWNpbmcgdGhlIHN0eWxlIHJ1bnMgb24gYSB0ZXh0IHJhbmdlIHdpdGggdGhlIHJ1bnMKKyogcmVwcmVzZW50ZWQgaW4gYW4gPHR0Pk1TdHlsZVJ1bkl0ZXJhdG9yPC90dD4uICBUaGlzIGlzIHVzZWZ1bCBmb3IgaW1wbGVtZW50aW5nIHBhc3RlCisqIG9wZXJhdGlvbnMsIGluIHdoaWNoIHRoZSBzdHlsZSBydW5zIG9uIGEgcmFuZ2Ugb2YgdGV4dCBhcmUgcmVwbGFjZWQgYnkgc3R5bGUgcnVucworKiBmcm9tIGFuIGV4dGVybmFsIHNvdXJjZS4KKyogPHA+CisqCisqIEBhdXRob3IgSm9obiBSYWxleQorKgorKiBAc2VlIEF0dHJpYnV0ZU1hcAorKiBAc2VlIE1UZXh0CisqLworYWJzdHJhY3QgY2xhc3MgTVN0eWxlQnVmZmVyCit7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworLyoqCisqIFJlc3BvbmQgdG8gYW4gaW5zZXJ0aW9uIGluIHRoZSB0ZXh0LiAgVGhlIGxlbmd0aCBvZiB0aGUgbGFzdCBzdHlsZSBydW4gd2hpY2gKKyogYmVnaW5zIGJlZm9yZSA8dHQ+c3RhcnQ8L3R0PiBpcyBpbmNyZWFzZWQgYnkgPHR0PmxpbWl0LXN0YXJ0PC90dD4uCisqIEBwYXJhbSBzdGFydCB0aGUgb2Zmc2V0IHdoZXJlIHRoZSBpbnNlcnRpb24gYmVnYW4KKyogQHBhcmFtIGxpbWl0IHRoZSBvZmZzZXQgd2hlcmUgdGhlIGluc2VydGlvbiBlbmRlZAorKi8KKyAgICBhYnN0cmFjdCB2b2lkIGluc2VydFRleHQoaW50IHN0YXJ0LCBpbnQgbGltaXQpOworCisvKioKKyogUmVzcG9uZCB0byBhIGRlbGV0aW9uIGluIHRoZSB0ZXh0LiAgVGhlIGxhc3Qgc3R5bGUgcnVuIGJlZm9yZQorKiA8dHQ+c3RhcnQ8L3R0PiBpcyB0cnVuY2F0ZWQgdG8gZW5kIGF0IDx0dD5zdGFydDwvdHQ+LiAgVGhlCisqIHN0eWxlIHJ1biBjb250YWluaW5nICg8dHQ+c3RhcnQ8L3R0Pis8dHQ+bGVuZ3RoPC90dD4pIGlzIHNldCB0byBiZWdpbgorKiBhdCAoPHR0PnN0YXJ0PC90dD4rPHR0Pmxlbmd0aDwvdHQ+KS4gIFJ1bnMgaW4gYmV0d2VlbiBhcmUgZGVsZXRlZC4KKyogSWYgdGhlIGRlbGV0aW9uIG9jY3VycyBlbnRpcmVseSB3aXRoaW4gb25lIHN0eWxlIHJ1biwgdGhlIGxlbmd0aCBvZiB0aGUgc3R5bGUKKyogcnVuIGlzIHJlZHVjZWQgYnkgPHR0Pmxlbmd0aDwvdHQ+LgorKiBAcGFyYW0gc3RhcnQgdGhlIG9mZnNldCB3aGVyZSB0aGUgZGVsZXRpb24gYmVnYW4KKyogQHBhcmFtIGxlbmd0aCB0aGUgb2Zmc2V0IHdoZXJlIHRoZSBkZWxldGlvbiBlbmRlZAorKi8KKyAgICBhYnN0cmFjdCB2b2lkIGRlbGV0ZVRleHQoaW50IHN0YXJ0LCBpbnQgbGltaXQpOworCisvKgorKiBSZXBsYWNlIHN0eWxlIHJ1bnMgYmV0d2VlbiBvZmZzZXRzIDx0dD5zdGFydDwvdHQ+IGFuZCA8dHQ+bGltaXQ8L3R0PiB3aXRoIHN0eWxlcyBpbgorKiA8dHQ+aXRlcjwvdHQ+LiAgVGhpcyBtZXRob2QgY2FuIGJlIHVzZWQgdG8gcGVyZm9ybSBhICJwYXN0ZSIgb3BlcmF0aW9uLgorKiBAcGFyYW0gc3RhcnQgdGhlIG9mZnNldCB3aGVyZSB0aGUgcmVwbGFjZW1lbnQgYmVnaW5zCisqIEBwYXJhbSBsaW1pdCB0aGUgb2Zmc2V0IHdoZXJlIHRoZSByZXBsYWNlbWVudCBlbmRzCisqIEBwYXJhbSBpdGVyIGFuIDx0dD5NU3R5bGVSdW5JdGVyYXRvcjwvdHQ+IGNvbnRhaW5pbmcgc3R5bGUgcnVucyB3aGljaCB3aWxsIHJlcGxhY2Ugb2xkCisqIHN0eWxlIHJ1bnMuCisqLworICAgIGFic3RyYWN0IHZvaWQgcmVwbGFjZShpbnQgc3RhcnQsIGludCBsaW1pdCwgTUNvbnN0VGV4dCBzcmNUZXh0LCBpbnQgc3JjU3RhcnQsIGludCBzcmNMaW1pdCk7CisKKyAgICBhYnN0cmFjdCBpbnQgc3R5bGVTdGFydChpbnQgcG9zKTsKKyAgICBhYnN0cmFjdCBpbnQgc3R5bGVMaW1pdChpbnQgcG9zKTsKKworLyoqCisqIFJldHVybiBzdHlsZSBhdCBsb2NhdGlvbiA8dHQ+cG9zPC90dD4uCisqIEBwYXJhbSBwb3MgYW4gb2Zmc2V0IGludG8gdGhlIHRleHQKKyogQHJldHVybnMgdGhlIHN0eWxlIG9mIHRoZSBjaGFyYWN0ZXIgYXQgPHR0Pm9mZnNldDwvdHQ+CisqLworICAgIGFic3RyYWN0IEF0dHJpYnV0ZU1hcCBzdHlsZUF0KGludCBwb3MpOworCisvKioKKyAqIFJldHVybiB0cnVlIGlmIHN0eWxlcyB3ZXJlIG1vZGlmaWVkLgorICovCisgICAgYWJzdHJhY3QgYm9vbGVhbiBtb2RpZnlTdHlsZXMoaW50IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHlsZU1vZGlmaWVyIG1vZGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludFtdIGRhbWFnZWRSYW5nZSk7CisKKy8qKgorKiBNaW5pbWl6ZSB0aGUgYW1vdW50IG9mIG1lbW9yeSB1c2VkIGJ5IHRoaXMgb2JqZWN0LgorKi8KKyAgICBhYnN0cmFjdCB2b2lkIGNvbXByZXNzKCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC9zdHlsZWR0ZXh0L01UYWJSdWxlci5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvc3R5bGVkdGV4dC9NVGFiUnVsZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi40MGZhNGUxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvc3R5bGVkdGV4dC9NVGFiUnVsZXIuamF2YQpAQCAtMCwwICsxLDExMyBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogTVRhYlJ1bGVyLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NDU6MTAgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0OworCisvKioKKyAqIFRoaXMgaW50ZXJmYWNlIHJlcHJlc2VudHMgYSBzZXF1ZW5jZSBvZiBUYWJTdG9wcywgb3JkZXJlZCBieSBwb3NpdGlvbi4KKyAqIFRoZSBmaXJzdAorICogVGFiU3RvcCBpbiB0aGUgcnVsZXIgY2FuIGJlIG9idGFpbmVkIHdpdGggdGhlIDxjb2RlPmZpcnN0VGFiPC9jb2RlPgorICogbWV0aG9kOyAgc3Vic2VxdWVudCBUYWJTdG9wcyBhcmUgb2J0YWluZWQgd2l0aCB0aGUgPGNvZGU+bmV4dFRhYjwvY29kZT4KKyAqIG1ldGhvZC4KKyAqIDxwPgorICogSWYgYSBUYWJTdG9wIHdpdGggdHlwZSA8Y29kZT5UYWJTdG9wLmtBdXRvPC9jb2RlPiBpcyByZXR1cm5lZCwgYWxsIHRhYnMKKyAqIGFmdGVyIHRoYXQgVGFiU3RvcCB3aWxsIGFsc28gaGF2ZSB0eXBlIDxjb2RlPlRhYlN0b3Aua0F1dG88L2NvZGU+LCBhbmQKKyAqIHRoZWlyIHBvc2l0aW9ucyB3aWxsIGJlIG11bHRpcGxlcyBvZiA8Y29kZT5hdXRvU3BhY2luZzwvY29kZT4uCisgKiBAc2VlIFRhYlN0b3AKKyAqLworcHVibGljIGFic3RyYWN0IGNsYXNzIE1UYWJSdWxlcgoreworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgLyoqCisgICAgICogUmV0dXJuIGZpcnN0IHRhYiBpbiB0aGUgcnVsZXIuICBJZiBhbiBhdXRvVGFiLCBpdCBpcyBhdCBwb3NpdGlvbiB6ZXJvLCBhbmQKKyAgICAgKiBhbGwgc3Vic2VxdWVudCB0YWJzIHdpbGwgYmUgYXV0b3RhYnMgYXQgYXV0b1NwYWNpbmcgaW50ZXJ2YWxzLgorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBUYWJTdG9wIGZpcnN0VGFiKCk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGZpcnN0IHRhYiBpbiB0aGUgcnVsZXIgd2l0aCBmUG9zaXRpb24gPiBwb3NpdGlvbi4gIElmIGl0IGlzIGFuCisgICAgICogYXV0b3RhYiwgaXQgaXMgYXQgYW4gaW5jcmVtZW50IG9mIGF1dG9TcGFjaW5nLCBhbmQgYWxsIHN1YnNlcXVlbnQgdGFicyB3aWxsIGJlCisgICAgICogYXV0b3RhYnMgYXQgYXV0b1NwYWNpbmcgaW50ZXJ2YWxzLgorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBUYWJTdG9wIG5leHRUYWIoaW50IHBvc2l0aW9uKTsKKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgaW50ZXJ2YWwgZm9yIGF1dG90YWJzLgorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBpbnQgYXV0b1NwYWNpbmcoKTsKKworICAgIC8qKgorICAgICAqIENvbXB1dGUgdGhlIGhhc2hDb2RlIGZvciB0aGlzIHJ1bGVyLiAgVGhlIGhhc2hDb2RlIGlzIHRoZQorICAgICAqIGhhc2hDb2RlIG9mIHRoZSBmaXJzdCB0YWIgbXVsdGlwbGllZCBieSB0aGUgYXV0b1NwYWNpbmcKKyAgICAgKiBpbnRlcnZhbC4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgaW50IGhhc2hDb2RlKCkgeworCisgICAgICAgIHJldHVybiBmaXJzdFRhYigpLmhhc2hDb2RlKCkgKiBhdXRvU3BhY2luZygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0cnVlIGlmIHRoaXMgdGFiIHJ1bGVyIGNvbnRhaW5zIHRoZSBnaXZlbiB0YWIuCisgICAgICogQHBhcmFtIHRhYlRvVGVzdCB0aGUgdGFiIHRvIHNlYXJjaCBmb3IKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhpcyB0YWIgcnVsZXIgY29udGFpbnMgPGNvZGU+dGFiVG9UZXN0PC9jb2RlPgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGNvbnRhaW5zVGFiKFRhYlN0b3AgdGFiVG9UZXN0KSB7CisKKyAgICAgICAgZm9yIChUYWJTdG9wIHRhYiA9IGZpcnN0VGFiKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB0YWIuZ2V0VHlwZSgpICE9IFRhYlN0b3Aua0F1dG87CisgICAgICAgICAgICAgICAgICAgICAgICB0YWIgPSBuZXh0VGFiKHRhYi5nZXRQb3NpdGlvbigpKSkgeworICAgICAgICAgICAgaWYgKHRhYi5nZXRQb3NpdGlvbigpID49IHRhYlRvVGVzdC5nZXRQb3NpdGlvbigpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRhYlRvVGVzdC5lcXVhbHModGFiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSB0YWIgcnVsZXIgaWRlbnRpY2FsIHRvIHRoaXMgcnVsZXIsIGV4Y2VwdCB3aXRoIHRoZQorICAgICAqIGdpdmVuIHRhYiBhZGRlZC4gIFRoaXMgcnVsZXIgaXMgbm90IG1vZGlmaWVkLgorICAgICAqIEBwYXJhbSB0YWJUb0FkZCB0aGUgdGFiIHRvIGFkZCB0byB0aGUgbmV3IHRhYiBydWxlcgorICAgICAqIEByZXR1cm4gYW4gTVRhYlJ1bGVyIHJlc3VsdGluZyBmcm9tIHRoaXMgb3BlcmF0aW9uCisgICAgICovCisgICAgcHVibGljIE1UYWJSdWxlciBhZGRUYWIoVGFiU3RvcCB0YWJUb0FkZCkgeworCisgICAgICAgIHJldHVybiBTdGFuZGFyZFRhYlJ1bGVyLmFkZFRhYlRvUnVsZXIodGhpcywgdGFiVG9BZGQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhIHRhYiBydWxlciBpZGVudGljYWwgdG8gdGhlIGdpdmVuIHJ1bGVyLCBleGNlcHQgd2l0aCB0aGUKKyAgICAgKiB0YWIgYXQgdGhlIGdpdmVuIHBvc2l0aW9uIHJlbW92ZWQuICBUaGlzIHJ1bGVyIGlzIG5vdCBtb2RpZmllZC4KKyAgICAgKiBAcGFyYW0gcG9zaXRpb24gdGhlIHBvc2l0aW9uIG9mIHRoZSB0YWIgdG8gcmVtb3ZlIGZyb20gdGhlIG5ldyB0YWIgcnVsZXIKKyAgICAgKiBAcmV0dXJuIGFuIE1UYWJSdWxlciByZXN1bHRpbmcgZnJvbSB0aGlzIG9wZXJhdGlvbgorICAgICAqLworICAgIHB1YmxpYyBNVGFiUnVsZXIgcmVtb3ZlVGFiKGludCBwb3NpdGlvbikgeworCisgICAgICAgIHJldHVybiBTdGFuZGFyZFRhYlJ1bGVyLnJlbW92ZVRhYkZyb21SdWxlcih0aGlzLCBwb3NpdGlvbik7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgdGFiIHJ1bGVyIGlkZW50aWNhbCB0byB0aGlzIHJ1bGVyLCBleGNlcHQgd2l0aCB0aGUKKyAgICAgKiB0YWIgYXQgcG9zaXRpb24gPGNvZGU+ZnJvbVBvc2l0aW9uPC9jb2RlPiBtb3ZlZCB0byBwb3NpdGlvbgorICAgICAqIDxjb2RlPnRvUG9zaXRpb248L2NvZGU+LiAgVGhpcyBydWxlciBpcyBub3QgbW9kaWZpZWQuCisgICAgICogQHBhcmFtIGZyb21Qb3NpdGlvbiB0aGUgcG9zaXRpb24gb2YgdGhlIHRhYiB0byBtb3ZlCisgICAgICogQHBhcmFtIHRvUG9zaXRpb24gdGhlIG5ldyBwb3NpdGlvbiBvZiB0aGUgdGFiCisgICAgICogQHJldHVybiBhbiBNVGFiUnVsZXIgcmVzdWx0aW5nIGZyb20gdGhpcyBvcGVyYXRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgTVRhYlJ1bGVyIG1vdmVUYWIoaW50IGZyb21Qb3NpdGlvbiwgaW50IHRvUG9zaXRpb24pIHsKKworICAgICAgICByZXR1cm4gU3RhbmRhcmRUYWJSdWxlci5tb3ZlVGFiT25SdWxlcih0aGlzLCBmcm9tUG9zaXRpb24sIHRvUG9zaXRpb24pOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC9zdHlsZWR0ZXh0L01UZXh0LmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC9zdHlsZWR0ZXh0L01UZXh0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZDAxNDlmZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N0eWxlZHRleHQvTVRleHQuamF2YQpAQCAtMCwwICsxLDI0MyBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogTVRleHQuamF2YSx2ICQgJFJldmlzaW9uOiAxLjIgJCAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNjozNiAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQ7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRsYXlvdXQuYXR0cmlidXRlcy5BdHRyaWJ1dGVNYXA7CisKKy8qCisgICAgQ2hhbmdlIGhpc3Rvcnk6CisKKyAgICAxMC8yOS85NiBqZWYgICAgc3BsaXQgdGhlIGNoYXJhY3RlciBhbmQgcGFyYWdyYXBoIHN0eWxlIGFjY2VzcyBmdW5jdGlvbnMKKyAgICA4LzE0Lzk2IHNmYiAgICAgZWxpbWluYXRlZCBTdHlsZVNoZWV0SXRlcmF0b3IKKyAgICA4LzIxLzk2IGplZiAgICAgICAgY29tcGxldGVkIGFic3RyYWN0IGludGVyZmFjZSAoY2hhbmdlZCBpdGVyYXRvciBjbGFzc2VzIGV0Yy4pCisgICAgMS8zMC85NyBydGcgICAgIGNsZWFuZWQgdXAgaW50ZXJmYWNlLCBicm91Z2h0IGluIGZ1bmN0aW9ucyBmcm9tIFNpbXBsZVRleHRWaWV3CisgICAgNy8zMS85OCBqYnIgc3dpdGNoZWQgZnJvbSBTdHlsZSB0byBBdHRyaWJ1dGVNYXAKKworKi8KKworLyoqCisgKiBUaGlzIGNsYXNzIGlzIGEgbXV0YWJsZSBleHRlbnNpb24gb2YgTUNvbnN0VGV4dC4gIEl0IGhhcyBtZXRob2RzIGZvcgorICogaW5zZXJ0aW5nLCBhcHBlbmRpbmcsIHJlcGxhY2luZywgYW5kIHJlbW92aW5nIHN0eWxlZCB0ZXh0LiAgQWRkaXRpb25hbGx5LAorICogaXQgaGFzIG1ldGhvZHMgZm9yIG1vZGlmeWluZyBwYXJhZ3JhcGggYW5kIGNoYXJhY3RlciBzdHlsZXMuCisgKiA8cD4KKyAqIFN0eWxlZCBjaGFyYWN0ZXJzIChmcm9tIGFub3RoZXIgPGNvZGU+TUNvbnN0VGV4dDwvY29kZT4gaW5zdGFuY2UpIGFkZGVkCisgKiB0byB0aGUgdGV4dCByZXRhaW4gdGhlaXIgb3JpZ2luYWwgY2hhcmFjdGVyIHN0eWxlcy4gIFRoZSBzdHlsZSBvZiBwbGFpbiBjaGFyYWN0ZXJzCisgKiAoc3BlY2lmaWVkIGFzIGEgPGNvZGU+Y2hhcjwvY29kZT4gb3IgPGNvZGU+Y2hhcltdPC9jb2RlPikgaXMgYWx3YXlzCisgKiBzcGVjaWZpZWQgZXhwbGljaXRseSB3aGVuIHRoZXkgYXJlIGFkZGVkIHRvIHRoZSB0ZXh0LiAgTVRleHQgZG9lcyBub3QgZG8KKyAqIGNoYXJhY3RlciBzdHlsZSAicHJvcGFnYXRpb24iLCB3aGVyZSB1bnN0eWxlZCBjaGFyYWN0ZXJzIHRha2Ugb24gdGhlCisgKiBzdHlsZSBvZiBwcmV2aW91cyBjaGFyYWN0ZXJzLiAgQ2xpZW50cyBjYW4gaW1wbGVtZW50IHRoaXMgYmVoYXZpb3IgYnkKKyAqIHNwZWNpZnlpbmcgdGhlIHN0eWxlcyB0byBwcm9wYWdhdGUuCisgKiA8cD4KKyAqIFdoZW4gdW5zdHlsZWQgY2hhcmFjdGVycyBhcmUgYWRkZWQgdG8gdGhlIHRleHQsIHRoZWlyIHBhcmFncmFwaCBzdHlsZQorICogaXMgdGhlIHBhcmFncmFwaCBzdHlsZSBpbiBlZmZlY3QgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGxhc3QgbmV3IGNoYXJhY3Rlci4KKyAqIElmIHRoZSBjaGFyYWN0ZXJzIGNvbnRhaW4gcGFyYWdyYXBoIHNlcGFyYXRvcnMsIHRoZW4gZXZlcnkgbmV3IHBhcmFncmFwaAorICogd2lsbCBoYXZlIHRoZSBzYW1lIHBhcmFncmFwaCBzdHlsZS4gIFdoZW4gc3R5bGVkIGNoYXJhY3RlcnMgYXJlIGFkZGVkCisgKiB0byB0aGUgdGV4dCwgdGhlaXIgcmVzdWx0aW5nIHBhcmFncmFwaCBzdHlsZSBpcyBkZXRlcm1pbmVkIGJ5IHRoZQorICogZm9sbG93aW5nIHJ1bGU6CisgKiA8YmxvY2txdW90ZT4KKyAqIFRoZSBwYXJhZ3JhcGggc3R5bGVzIGluIHRoZSBuZXcgdGV4dAorICogYmVjb21lIHRoZSBwYXJhZ3JhcGggc3R5bGVzIGluIHRoZSB0YXJnZXQgdGV4dCwgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZQorICogbGFzdCBwYXJhZ3JhcGggaW4gdGhlIG5ldyB0ZXh0LCB3aGljaCB0YWtlcyBvbiB0aGUgcGFyYWdyYXBoIHN0eWxlIGluCisgKiBlZmZlY3QgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGluc2VydGVkIHRleHQuCisgKiBJZiB0aGUgbmV3IHRleHQgaXMgYWRkZWQgYXQgdGhlIGVuZCBvZiB0aGUgdGFyZ2V0IHRleHQsIHRoZSBuZXcgdGV4dCdzCisgKiBwYXJhZ3JhcGggc3R5bGVzIHRha2UgZWZmZWN0IGluIGFueSBwYXJhZ3JhcGggYWZmZWN0ZWQgYnkgdGhlIGFkZGl0aW9uLgorICogPC9ibG9ja3F1b3RlPgorICogRm9yIGV4YW1wbGUsIHN1cHBvc2UgdGhlcmUgaXMgYSBzaW5nbGUgcGFyYWdyYXBoIG9mIHRleHQgd2l0aCBzdHlsZSAnQScsCisgKiBkZWxpbWl0ZWQgd2l0aCBhIHBhcmFncmFwaCBzZXBhcmF0b3IgJ1AnOgorICogPGJsb2NrcXVvdGU+CisgKiBBQUFBQUFQCisgKiA8L2Jsb2NrcXVvdGU+CisgKiBTdXBwb3NlIHRoZSBmb2xsb3dpbmcgc3R5bGVkIHBhcmFncmFwaHMgYXJlIGluc2VydGVkIGludG8gdGhlIGFib3ZlIHRleHQKKyAqIGFmdGVyIHRoZSBmb3VydGggY2hhcmFjdGVyOgorICogPGJsb2NrcXVvdGU+CisgKiBCQkJCUENDQ1BEREQKKyAqIDwvYmxvY2txdW90ZT4KKyAqIFRoZW4gdGhlIG9yaWdpbmFsIHBhcmFncmFwaCBzdHlsZSBvZiBlYWNoIGNoYXJhY3RlciBpczoKKyAqIDxibG9ja3F1b3RlPgorICogQUFBQUJCQkJQQ0NDUEREREFBUAorICogPC9ibG9ja3F1b3RlPgorICogVGhlIHJlc3VsdGluZyBwYXJhZ3JhcGggc3R5bGVzIGFyZToKKyAqIDxibG9ja3F1b3RlPgorICogQkJCQkJCQkJQQ0NDUEFBQUFBUAorICogPC9ibG9ja3F1b3RlPgorICogU2ltaWxhcmx5LCBpZiBjaGFyYWN0ZXJzIGFyZSBkZWxldGVkLCB0aGUgcGFyYWdyYXBoIHN0eWxlIGltbWVkaWF0ZWx5CisgKiBhZnRlciB0aGUgZGVsZXRpb24gdGFrZXMgZWZmZWN0IG9uIHRoZSBwYXJhZ3JhcGggY29udGFpbmluZyB0aGUgZGVsZXRpb24uCisgKiBTbywgaWYgY2hhcmFjdGVycyA0LTE2IHdlcmUgZGVsZXRlZCBpbiB0aGUgZXhhbXBsZSBhYm92ZSwgdGhlIHBhcmFncmFwaAorICogc3R5bGVzIHdvdWxkIGJlOgorICogPGJsb2NrcXVvdGU+CisgKiBBQUFBQUFQCisgKiA8L2Jsb2NrcXVvdGU+CisgKiBUaGlzIHBhcmFncmFwaC1zdHlsZSBwcm9wYWdhdGlvbiBwb2xpY3kgaXMgc29tZXRpbWVzIHJlZmVycmVkIHRvIGFzIDxzdHJvbmc+CisgKiBmb2xsb3dpbmcgc3R5bGVzIHdpbjwvc3Ryb25nPiwgc2luY2Ugc3R5bGVzIGF0IHRoZSBlbmQgb2YgdGhlIHBhcmFncmFwaAorICogYmVjb21lIHRoZSBzdHlsZSBmb3IgdGhlIGVudGlyZSBwYXJhZ3JhcGguCisgKiA8cD4KKyAqIFRoaXMgY2xhc3MgY2FuIGFjY3VtdWxhdGUgYSA8c3Ryb25nPmRhbWFnZWQgcmFuZ2U8L3N0cm9uZz4gLSBhbiBpbnRlcnZhbCBpbgorICogd2hpY2ggY2hhcmFjdGVycywgY2hhcmFjdGVyIHN0eWxlcywgb3IgcGFyYWdyYXBoIHN0eWxlcyBoYXZlIGNoYW5nZWQuICBUaGlzIGlzCisgKiB1c2VmdWwgZm9yIGNsaWVudHMgc3VjaCBhcyB0ZXh0IGVkaXRvcnMgd2hpY2ggcmVmb3JtYXQgYW5kIGRyYXcgdGV4dCBhZnRlcgorICogY2hhbmdlcy4gIFVzdWFsbHkgdGhlIGRhbWFnZWQgcmFuZ2UgaXMgZXhhY3RseSB0aGUgcmFuZ2Ugb2YgY2hhcmFjdGVycworICogb3BlcmF0ZWQgdXBvbjsgIGhvd2V2ZXIsIGxhcmdlciByYW5nZXMgbWF5IGJlIGRhbWFnZWQgaWYgcGFyYWdyYXBoIHN0eWxlcworICogY2hhbmdlLgorICogQHNlZSBTdHlsZU1vZGlmaWVyCisgKi8KKworcHVibGljIGFic3RyYWN0IGNsYXNzIE1UZXh0IGV4dGVuZHMgTUNvbnN0VGV4dAoreworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHJvdGVjdGVkIE1UZXh0KCkgeworICAgIH0KKworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gTUFJTiBDSEFSQUNURVIgTU9ESUZJQ0FUSU9OIEZVTkNUSU9OUworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLyoqCisqIFJlcGxhY2UgdGhlIGNoYXJhY3RlcnMgYW5kIHN0eWxlcyBpbiB0aGUgcmFuZ2UgWzxjb2RlPnN0YXJ0PC9jb2RlPiwgPGNvZGU+bGltaXQ8L2NvZGU+KSB3aXRoIHRoZSBjaGFyYWN0ZXJzCisqIGFuZCBzdHlsZXMgaW4gPGNvZGU+c3JjVGV4dDwvY29kZT4gaW4gdGhlIHJhbmdlIFs8Y29kZT5zcmNTdGFydDwvY29kZT4sIDxjb2RlPnNyY0xpbWl0PC9jb2RlPikuICA8Y29kZT5zcmNUZXh0PC9jb2RlPiBpcyBub3QKKyogbW9kaWZpZWQuCisqIEBwYXJhbSBzdGFydCB0aGUgb2Zmc2V0IGF0IHdoaWNoIHRoZSByZXBsYWNlIG9wZXJhdGlvbiBiZWdpbnMKKyogQHBhcmFtIGxpbWl0IHRoZSBvZmZzZXQgYXQgd2hpY2ggdGhlIHJlcGxhY2Ugb3BlcmF0aW9uIGVuZHMuICBUaGUgY2hhcmFjdGVyIGFuZCBzdHlsZSBhdAorKiA8Y29kZT5saW1pdDwvY29kZT4gaXMgbm90IG1vZGlmaWVkLgorKiBAcGFyYW0gc3JjVGV4dCB0aGUgc291cmNlIGZvciB0aGUgbmV3IGNoYXJhY3RlcnMgYW5kIHN0eWxlcworKiBAcGFyYW0gc3JjU3RhcnQgdGhlIG9mZnNldCBpbnRvIDxjb2RlPnNyY1RleHQ8L2NvZGU+IHdoZXJlIG5ldyBjaGFyYWN0ZXJzIGFuZCBzdHlsZXMgd2lsbCBiZSBvYnRhaW5lZAorKiBAcGFyYW0gc3JjTGltaXQgdGhlIG9mZnNldCBpbnRvIDxjb2RlPnNyY1RleHQ8L2NvZGU+IHdoZXJlIHRoZSBuZXcgY2hhcmFjdGVycyBhbmQgc3R5bGVzIGVuZAorKi8KKyAgICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCByZXBsYWNlKGludCBzdGFydCwgaW50IGxpbWl0LCBNQ29uc3RUZXh0IHNyY1RleHQsIGludCBzcmNTdGFydCwgaW50IHNyY0xpbWl0KTsKKworLyoqCisqIFJlcGxhY2UgdGhlIGNoYXJhY3RlcnMgYW5kIHN0eWxlcyBpbiB0aGUgcmFuZ2UgWzxjb2RlPnN0YXJ0PC9jb2RlPiwgPGNvZGU+bGltaXQ8L2NvZGU+KSB3aXRoIHRoZSBjaGFyYWN0ZXJzCisqIGFuZCBzdHlsZXMgaW4gPGNvZGU+c3JjVGV4dDwvY29kZT4uICA8Y29kZT5zcmNUZXh0PC9jb2RlPiBpcyBub3QKKyogbW9kaWZpZWQuCisqIEBwYXJhbSBzdGFydCB0aGUgb2Zmc2V0IGF0IHdoaWNoIHRoZSByZXBsYWNlIG9wZXJhdGlvbiBiZWdpbnMKKyogQHBhcmFtIGxpbWl0IHRoZSBvZmZzZXQgYXQgd2hpY2ggdGhlIHJlcGxhY2Ugb3BlcmF0aW9uIGVuZHMuICBUaGUgY2hhcmFjdGVyIGFuZCBzdHlsZSBhdAorKiA8Y29kZT5saW1pdDwvY29kZT4gaXMgbm90IG1vZGlmaWVkLgorKiBAcGFyYW0gc3JjVGV4dCB0aGUgc291cmNlIGZvciB0aGUgbmV3IGNoYXJhY3RlcnMgYW5kIHN0eWxlcworKi8KKyAgICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCByZXBsYWNlKGludCBzdGFydCwgaW50IGxpbWl0LCBNQ29uc3RUZXh0IHRleHQpOworCisvKioKKyogUmVwbGFjZSB0aGUgY2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UgWzxjb2RlPnN0YXJ0PC9jb2RlPiwgPGNvZGU+bGltaXQ8L2NvZGU+KSB3aXRoIHRoZSBjaGFyYWN0ZXJzCisqIGluIDxjb2RlPnNyY0NoYXJzPC9jb2RlPiBpbiB0aGUgcmFuZ2UgWzxjb2RlPnNyY1N0YXJ0PC9jb2RlPiwgPGNvZGU+c3JjTGltaXQ8L2NvZGU+KS4gIE5ldyBjaGFyYWN0ZXJzIHRha2Ugb24gdGhlIHN0eWxlCisqIDxjb2RlPmNoYXJzU3R5bGU8L2NvZGU+LgorKiA8Y29kZT5zcmNDaGFyczwvY29kZT4gaXMgbm90IG1vZGlmaWVkLgorKiBAcGFyYW0gc3RhcnQgdGhlIG9mZnNldCBhdCB3aGljaCB0aGUgcmVwbGFjZSBvcGVyYXRpb24gYmVnaW5zCisqIEBwYXJhbSBsaW1pdCB0aGUgb2Zmc2V0IGF0IHdoaWNoIHRoZSByZXBsYWNlIG9wZXJhdGlvbiBlbmRzLiAgVGhlIGNoYXJhY3RlciBhdAorKiA8Y29kZT5saW1pdDwvY29kZT4gaXMgbm90IG1vZGlmaWVkLgorKiBAcGFyYW0gc3JjQ2hhcnMgdGhlIHNvdXJjZSBmb3IgdGhlIG5ldyBjaGFyYWN0ZXJzCisqIEBwYXJhbSBzcmNTdGFydCB0aGUgb2Zmc2V0IGludG8gPGNvZGU+c3JjQ2hhcnM8L2NvZGU+IHdoZXJlIG5ldyBjaGFyYWN0ZXJzIHdpbGwgYmUgb2J0YWluZWQKKyogQHBhcmFtIHNyY0xpbWl0IHRoZSBvZmZzZXQgaW50byA8Y29kZT5zcmNDaGFyczwvY29kZT4gd2hlcmUgdGhlIG5ldyBjaGFyYWN0ZXJzIGVuZAorKiBAcGFyYW0gY2hhcnNTdHlsZSB0aGUgc3R5bGUgb2YgdGhlIG5ldyBjaGFyYWN0ZXJzCisqLworICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIHJlcGxhY2UoaW50IHN0YXJ0LCBpbnQgbGltaXQsIGNoYXJbXSBzcmNDaGFycywgaW50IHNyY1N0YXJ0LCBpbnQgc3JjTGltaXQsIEF0dHJpYnV0ZU1hcCBjaGFyc1N0eWxlKTsKKworLyoqCisqIFJlcGxhY2UgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIHJhbmdlIFs8Y29kZT5zdGFydDwvY29kZT4sIDxjb2RlPmxpbWl0PC9jb2RlPikgd2l0aCB0aGUgY2hhcmFjdGVyIDxjb2RlPnNyY0NoYXI8L2NvZGU+LgorKiBUaGUgbmV3IGNoYXJhY3RlciB0YWtlcyBvbiB0aGUgc3R5bGUgPGNvZGU+Y2hhclN0eWxlPC9jb2RlPgorKiBAcGFyYW0gc3RhcnQgdGhlIG9mZnNldCBhdCB3aGljaCB0aGUgcmVwbGFjZSBvcGVyYXRpb24gYmVnaW5zCisqIEBwYXJhbSBsaW1pdCB0aGUgb2Zmc2V0IGF0IHdoaWNoIHRoZSByZXBsYWNlIG9wZXJhdGlvbiBlbmRzLiAgVGhlIGNoYXJhY3RlciBhdAorKiA8Y29kZT5saW1pdDwvY29kZT4gaXMgbm90IG1vZGlmaWVkLgorKiBAcGFyYW0gc3JjQ2hhciB0aGUgbmV3IGNoYXJhY3RlcgorKiBAcGFyYW0gY2hhcnNTdHlsZSB0aGUgc3R5bGUgb2YgdGhlIG5ldyBjaGFyYWN0ZXIKKyovCisgICAgcHVibGljIGFic3RyYWN0IHZvaWQgcmVwbGFjZShpbnQgc3RhcnQsIGludCBsaW1pdCwgY2hhciBzcmNDaGFyLCBBdHRyaWJ1dGVNYXAgY2hhclN0eWxlKTsKKworLyoqCisqIFJlcGxhY2UgdGhlIGVudGlyZSBjb250ZW50cyBvZiB0aGlzIE1UZXh0IChib3RoIGNoYXJhY3RlcnMgYW5kIHN0eWxlcykgd2l0aAorKiB0aGUgY29udGVudHMgb2YgPGNvZGU+c3JjVGV4dDwvY29kZT4uCisqIEBwYXJhbSBzcmNUZXh0IHRoZSBzb3VyY2UgZm9yIHRoZSBuZXcgY2hhcmFjdGVycyBhbmQgc3R5bGVzCisqLworICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIHJlcGxhY2VBbGwoTUNvbnN0VGV4dCBzcmNUZXh0KTsKKworLyoqCisqIEluc2VydCB0aGUgY29udGVudHMgb2YgPGNvZGU+c3JjVGV4dDwvY29kZT4gKGJvdGggY2hhcmFjdGVycyBhbmQgc3R5bGVzKSBpbnRvIHRoaXMKKyogTVRleHQgYXQgdGhlIHBvc2l0aW9uIHNwZWNpZmllZCBieSA8Y29kZT5wb3M8L2NvZGU+LgorKiBAcGFyYW0gcG9zIFRoZSBjaGFyYWN0ZXIgb2Zmc2V0IHdoZXJlIHRoZSBuZXcgdGV4dCBpcyB0byBiZSBpbnNlcnRlZC4KKyogQHBhcmFtIHNyY1RleHQgVGhlIHRleHQgdG8gaW5zZXJ0LiAqLworICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIGluc2VydChpbnQgcG9zLCBNQ29uc3RUZXh0IHNyY1RleHQpOworCisvKioKKyogQXBwZW5kIHRoZSBjb250ZW50cyBvZiA8Y29kZT5zcmNUZXh0PC9jb2RlPiAoYm90aCBjaGFyYWN0ZXJzIGFuZCBzdHlsZXMpIHRvIHRoZQorKiBlbmQgb2YgdGhpcyBNVGV4dC4KKyogQHBhcmFtIHNyY1RleHQgVGhlIHRleHQgdG8gYXBwZW5kLiAqLworICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIGFwcGVuZChNQ29uc3RUZXh0IHNyY1RleHQpOworCisvKioKKyogRGVsZXRlIHRoZSBzcGVjaWZpZWQgcmFuZ2Ugb2YgY2hhcmFjdGVycyAoYW5kIHN0eWxlcykuCisqIEBwYXJhbSBzdGFydCBPZmZzZXQgb2YgdGhlIGZpcnN0IGNoYXJhY3RlciB0byBkZWxldGUuCisqIEBwYXJhbSBsaW1pdCBPZmZzZXQgb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBhZnRlciB0aGUgcmFuZ2UgdG8gZGVsZXRlLiAqLworICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIHJlbW92ZShpbnQgc3RhcnQsIGludCBsaW1pdCk7CisKKy8qKgorKiBEZWxldGUgYWxsIGNoYXJhY3RlcnMgYW5kIHN0eWxlcy4KKyovCisgICAgcHVibGljIGFic3RyYWN0IHZvaWQgcmVtb3ZlKCk7CisKKy8qKgorKiBDcmVhdGUgYW4gTVRleHQgY29udGFpbmluZyB0aGUgY2hhcmFjdGVycyBhbmQgc3R5bGVzIGluIHRoZSByYW5nZQorKiBbPGNvZGU+c3RhcnQ8L2NvZGU+LCA8Y29kZT5saW1pdDwvY29kZT4pLgorKiBAcGFyYW0gc3RhcnQgb2Zmc2V0IG9mIGZpcnN0IGNoYXJhY3RlciBpbiB0aGUgbmV3IHRleHQKKyogQHBhcmFtIGxpbWl0IG9mZnNldCBpbW1lZGlhdGVseSBhZnRlciB0aGUgbGFzdCBjaGFyYWN0ZXIgaW4gdGhlIG5ldyB0ZXh0CisqIEByZXR1cm4gYW4gTUNvbnN0VGV4dCBvYmplY3QgY29udGFpbmluZyB0aGUgY2hhcmFjdGVycyBhbmQgc3R5bGVzIGluIHRoZSBnaXZlbiByYW5nZQorKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgTVRleHQgZXh0cmFjdFdyaXRhYmxlKGludCBzdGFydCwgaW50IGxpbWl0KTsKKworCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBTVE9SQUdFIE1BTkFHRU1FTlQKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLyoqCisqIE1pbmltaXplIHRoZSBhbW91bnQgb2YgbWVtb3J5IHVzZWQgYnkgdGhlIE1UZXh0IG9iamVjdC4KKyovCisgICAgcHVibGljIGFic3RyYWN0IHZvaWQgY29tcHJlc3MoKTsKKworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gU1RZTEUgTU9ESUZJQ0FUSU9OCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy8qKgorKiBTZXQgdGhlIGNoYXJhY3RlciBzdHlsZSBvZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgTVRleHQgb2JqZWN0IHRvCisqIDxjb2RlPkF0dHJpYnV0ZU1hcC5FTVBUWV9BVFRSSUJVVEVfTUFQPC9jb2RlPi4KKyovCisgICAgcHVibGljIGFic3RyYWN0IHZvaWQgcmVtb3ZlQ2hhcmFjdGVyU3R5bGVzKCk7CisKKy8qKgorKiBJbnZva2UgdGhlIGdpdmVuIG1vZGlmaWVyIG9uIGFsbCBjaGFyYWN0ZXIgc3R5bGVzIGZyb20gc3RhcnQgdG8gbGltaXQuCisqIEBwYXJhbSBtb2RpZmllciB0aGUgbW9kaWZpZXIgdG8gYXBwbHkgdG8gdGhlIHJhbmdlLgorKiBAcGFyYW0gc3RhcnQgdGhlIHN0YXJ0IG9mIHRoZSByYW5nZSBvZiB0ZXh0IHRvIG1vZGlmeS4KKyogQHBhcmFtIGxpbWl0IHRoZSBsaW1pdCBvZiB0aGUgcmFuZ2Ugb2YgdGV4dCB0byBtb2RpZnkuCisqLworICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIG1vZGlmeUNoYXJhY3RlclN0eWxlcyhpbnQgc3RhcnQsIGludCBsaW1pdCwgU3R5bGVNb2RpZmllciBtb2RpZmllcik7CisKKy8qKgorKiBJbnZva2UgdGhlIGdpdmVuIG1vZGlmaWVyIG9uIGFsbCBwYXJhZ3JhcGggc3R5bGVzIGluIHBhcmFncmFwaHMKKyogY29udGFpbmluZyBjaGFyYWN0ZXJzIGluIHRoZSByYW5nZSBbc3RhcnQsIGxpbWl0KS4KKyogQHBhcmFtIG1vZGlmaWVyIHRoZSBtb2RpZmllciB0byBhcHBseSB0byB0aGUgcmFuZ2UuCisqIEBwYXJhbSBzdGFydCB0aGUgc3RhcnQgb2YgdGhlIHJhbmdlIG9mIHRleHQgdG8gbW9kaWZ5LgorKiBAcGFyYW0gbGltaXQgdGhlIGxpbWl0IG9mIHRoZSByYW5nZSBvZiB0ZXh0IHRvIG1vZGlmeS4KKyovCisgICAgcHVibGljIGFic3RyYWN0IHZvaWQgbW9kaWZ5UGFyYWdyYXBoU3R5bGVzKGludCBzdGFydCwgaW50IGxpbWl0LCBTdHlsZU1vZGlmaWVyIG1vZGlmaWVyKTsKKworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gREFNQUdFRCBSQU5HRQorLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLyoqCisqIFJlc2V0IHRoZSBkYW1hZ2VkIHJhbmdlIHRvIGFuIGVtcHR5IGludGVydmFsLCBhbmQgYmVnaW4gYWNjdW11bGF0aW5nIHRoZSBkYW1hZ2VkCisqIHJhbmdlLiAgVGhlIGRhbWFnZWQgcmFuZ2UgaW5jbHVkZXMgZXZlcnkgaW5kZXggd2hlcmUgYSBjaGFyYWN0ZXIsIGNoYXJhY3RlciBzdHlsZSwKKyogb3IgcGFyYWdyYXBoIHN0eWxlIGhhcyBjaGFuZ2VkLgorKiBAc2VlICNkYW1hZ2VkUmFuZ2VTdGFydAorKiBAc2VlICNkYW1hZ2VkUmFuZ2VMaW1pdAorKi8KKyAgICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCByZXNldERhbWFnZWRSYW5nZSgpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvc3R5bGVkdGV4dC9QYXJhZ3JhcGhCdWZmZXIuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N0eWxlZHRleHQvUGFyYWdyYXBoQnVmZmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOGU5ZjJlOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N0eWxlZHRleHQvUGFyYWdyYXBoQnVmZmVyLmphdmEKQEAgLTAsMCArMSw3MTYgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFBhcmFncmFwaEJ1ZmZlci5qYXZhLHYgJCAkUmV2aXNpb246IDEuMiAkICREYXRlOiAyMDAyLzAyLzE2IDAzOjA2OjM2ICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dDsKKworaW1wb3J0IGphdmEuaW8uRXh0ZXJuYWxpemFibGU7CitpbXBvcnQgamF2YS5pby5PYmplY3RJbnB1dDsKK2ltcG9ydCBqYXZhLmlvLk9iamVjdE91dHB1dDsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlTWFwOworCisvKgorICAgIFJpZ2h0IG5vdywgeW91IGhhdmUgdG8gY29uc3RydWN0IHRoaXMgY2xhc3Mgd2l0aCBhIGNoYXJCdWZmZXIuICBUaGF0J3MgcHJldHR5IHVnbHkuLi4gKi8KKworLyoKKyAgICA4LzgvOTYKKyAgICAgICAgQWRkZWQgcmVwbGFjZSBtZXRob2QsIHdoaWNoIHJlYWRzIHN0eWxlcyBmcm9tIGEgUGFyYWdyYXBoSXRlcmF0b3IuCisgICAgICAgIEFsc28sIGFkZGVkIGEgY29uc3RydWN0b3Igd2hpY2ggdGFrZXMgYSBQYXJhZ3JhcGhJdGVyYXRvci4KKyAgICAgICAgVGhlc2UgbWV0aG9kcyBhcmUgZm9yIGNvcHkvcGFzdGUgc3VwcG9ydC4KKworICAgIDgvMjIvOTYKKyAgICAgICAgUmVwbGFjZSBtZXRob2QgKHdoaWNoIHRha2VzIGFuIGl0ZXJhdG9yIGFzIGFuIGFyZ3VtZW50KSB0ZXN0cyBmb3IgYQorICAgICAgICAwLWxlbmd0aCBpdGVyYXRvci4KKworICAgIDkvMzAvOTYKKyAgICAgICAge2picn0gbW9kaWZpZWQgcGFyYWdyYXBoTGltaXQoKTsKKworICAgIDEwLzIzLzk2CisgICAgICAgIFRoaXMgY2xhc3Mgbm93IG1haW50YWlucyBwYXJhZ3JhcGggc3R5bGVzLiAgQWxzbyBoYXMgYSB0aW1lc3RhbXAuCisKKyAgICAxMC8yNS85NgorICAgICAgICBIb2xkcyBvbiB0byBTdHlsZSBpbnN0ZWFkIG9mIFN0eWxlLgorCisgICAgNy8zMS85OCBTd2l0Y2hlZCB0byBBdHRyaWJ1dGVNYXAKKworKi8KKworLyoqCisqIFRoaXMgY2xhc3Mgc3RvcmVzIG9mZnNldHMgd2hlcmUgcGFyYWdyYXBoIGJyZWFrcyBvY2N1ciwgYW5kIHRoZSBzdHlsZSBhcHBsaWVkIHRvCisqIGVhY2ggcGFyYWdyYXBoLgorKgorKiBUaGUgb2Zmc2V0cyB3aGVyZSBwYXJhZ3JhcGggYnJlYWtzIG9jY3VyIGFyZSBzdG9yZWQgaW4gYSBSdW5BcnJheSBvYmplY3QuICBUaGlzIGlzCisqIG5vdCBzdHJpY3RseSBuZWNlc3NhcnksIGJ1dCBpdCBtYWtlcyBzY2FubmluZyB0aGUgdGV4dCBmb3IgcGFyYWdyYXBoIGJyZWFrcyB1bm5lY2Vzc2FyeS4KKyogSG93ZXZlciwgaXQgbWFrZXMgZGV0ZXJtaW5pbmcgd2hlcmUgcGFyYWdyYXBocyBzdGFydCBhIGxpdHRsZSBjb25mdXNpbmcuICBJZiB0aGVyZSBpcyBhCisqIHBhcmFncmFwaCBicmVhayBhdCBvZmZzZXQgcCwgdGhlbiB0aGVyZSB3aWxsIGJlIGEgcGFyYWdyYXBoIHN0YXJ0IGF0IG9mZnNldCBwKzEuCisqIElmIHRoZSBsYXN0IGNoYXJhY3RlciBpbiB0aGUgdGV4dCBpcyBhIHBhcmFncmFwaCBicmVhaywgdGhlcmUgd2lsbCBiZSBhIHJ1biBhcnJheSBlbnRyeQorKiBmb3IgdGhhdCBjaGFyYWN0ZXIgKGFuZCBhbHNvIGEgcGFyYWdyYXBoIHN0eWxlIGZvciB0aGF0IHBhcmFncmFwaCwgZXZlbiB0aG91Z2ggdGhlCisqIHN0eWxlIGRvZXMgbm90IGFwcGx5IHRvIGFueSB0ZXh0KS4KKyoKKyogVGhlIHN0eWxlIG9mIHRoZSBmaXJzdCBwYXJhZ3JhcGggaW4gdGhlIHRleHQgaXMgaW4gdGhlIGZGaXJzdFN0eWxlIG1lbWJlci4gIE90aGVyCisqIHBhcmFncmFwaCBzdHlsZXMgYXJlIHN0b3JlZCBpbiB0aGUgZlN0eWxlVGFibGUgYXJyYXksIGluIHRoZSBmb2xsb3dpbmcgbWFubmVyOiAgdGhlCisqIHBhcmFncmFwaCB3aXRoIGJlZ2lucyBhdCBvZmZzZXQgZlJ1bkFycmF5LmZSdW5TdGFydFtpXSsxIGhhcyBzdHlsZSBmU3R5bGVUYWJsZVtpXS4KKyogVGhlIHN0eWxlIHRhYmxlJ3MgImdhcCByYW5nZSIgaXMga2VwdCBpbiBzeW5jIHdpdGggdGhlIFJ1bkFycmF5LgorKgorKiBUaGlzIGNsYXNzIHByb3BvZ2F0ZXMgcGFyYWdyYXBoIHN0eWxlcyBpbiB0aGUgIk1pY3Jvc29mdCBXb3JkIiBmYXNoaW9uOiAgc3R5bGVzCisqIHByb3BvZ2F0ZSBiYWNrd2FyZCBmcm9tIHBhcmFncmFwaCBicmVha3MuCisqCisqIFRoaXMgY2xhc3MgbWFpbnRhaW5zIGEgdGltZSBzdGFtcCwgd2hpY2ggY2hhbmdlcyBldmVyeSB0aW1lIGV4dHJhIGZvcm1hdHRpbmcgKGZvcm1hdHRpbmcKKyogb24gYSByYW5nZSBvdGhlciB0aGFuIHRoZSBjdXJyZW50IHNlbGVjdGlvbikgaXMgbmVlZGVkOyAgZm9yIGV4YW1wbGUsIHdoZW4gYSBwYXJhZ3JhcGgKKyogYnJlYWsgaXMgcmVtb3ZlZC4KKyovCisKKworZmluYWwgY2xhc3MgUGFyYWdyYXBoQnVmZmVyIGV4dGVuZHMgTVBhcmFncmFwaEJ1ZmZlciBpbXBsZW1lbnRzIEV4dGVybmFsaXphYmxlIHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IGtJbml0aWFsU2l6ZSA9IDEwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDVVJSRU5UX1ZFUlNJT04gPSAxOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDIyMzU2OTM0OworCisgICAgcHJpdmF0ZSBSdW5BcnJheSBmUnVuQXJyYXk7CisgICAgcHJpdmF0ZSBBdHRyaWJ1dGVNYXBbXSBmU3R5bGVUYWJsZTsKKyAgICBwcml2YXRlIEF0dHJpYnV0ZU1hcCBmRmlyc3RTdHlsZTsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gaXNQYXJhZ3JhcGhCcmVhayhjaGFyIGMpIHsKKworICAgICAgICByZXR1cm4gYyA9PSdcdTIwMjknIHx8IGMgPT0gJ1xuJzsKKyAgICB9CisKKy8qKgorKiBDb25zdHJ1Y3QgYSBuZXcgcGFyYWdyYXBoIGJ1ZmZlciBmcm9tIHRoZSBjaGFyYWN0ZXJzIGluIDx0dD5jaGFyQnVmZmVyPC90dD4uCisqLworICAgIFBhcmFncmFwaEJ1ZmZlcihNQ2hhckJ1ZmZlciBjaGFyQnVmZmVyKSB7CisKKyAgICAgICAgdGhpcyhjaGFyQnVmZmVyLmxlbmd0aCgpKTsKKworICAgICAgICAvLyBzY2FuIHRleHQgZm9yIHBhcmFncmFwaCBib3VuZGFyaWVzCisKKyAgICAgICAgaW50IHRleHRMZW5ndGggPSBmUnVuQXJyYXkuZ2V0Q3VyVGV4dExlbmd0aCgpOworCisgICAgICAgIGZvciAoaW50IHBvcz0wOyBwb3MgPCB0ZXh0TGVuZ3RoOyBwb3MrKykgeworCisgICAgICAgICAgICBpZiAoaXNQYXJhZ3JhcGhCcmVhayhjaGFyQnVmZmVyLmF0KHBvcykpKSB7CisgICAgICAgICAgICAgICAgaWYgKGZSdW5BcnJheS5mUG9zRW5kKzEgPj0gZlJ1bkFycmF5LmZOZWdTdGFydCkKKyAgICAgICAgICAgICAgICAgICAgZXhwYW5kU3R5bGVUYWJsZSgpOworICAgICAgICAgICAgICAgIGZSdW5BcnJheS5mUnVuU3RhcnRbKytmUnVuQXJyYXkuZlBvc0VuZF0gPSBwb3M7CisgICAgICAgICAgICAgICAgZlN0eWxlVGFibGVbZlJ1bkFycmF5LmZQb3NFbmRdID0gZkZpcnN0U3R5bGU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgIH0KKworLyoqCisqIFByaXZhdGUgY29uc3RydWN0b3IuCisqLworICAgIHByaXZhdGUgUGFyYWdyYXBoQnVmZmVyKGludCBpbml0aWFsTGVuZ3RoKSB7CisKKyAgICAgICAgZlJ1bkFycmF5ID0gbmV3IFJ1bkFycmF5KGtJbml0aWFsU2l6ZSwgaW5pdGlhbExlbmd0aCk7CisgICAgICAgIGZTdHlsZVRhYmxlID0gbmV3IEF0dHJpYnV0ZU1hcFtmUnVuQXJyYXkuZ2V0QXJyYXlMZW5ndGgoKV07CisKKyAgICAgICAgZkZpcnN0U3R5bGUgPSBBdHRyaWJ1dGVNYXAuRU1QVFlfQVRUUklCVVRFX01BUDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBOb3RlOiB0aGlzIGNvbnN0cnVjdG9yIGlzIE9OTFkgZm9yIHVzZSBieSB0aGUgU2VyaWFsaXphdGlvbgorICAgICAqIG1lY2hhbmlzbS4gIEl0IGRvZXMgbm90IGxlYXZlIHRoaXMgb2JqZWN0IGluIGEgdmFsaWQgc3RhdGUhCisgICAgICovCisgICAgcHVibGljIFBhcmFncmFwaEJ1ZmZlcigpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB3cml0ZUV4dGVybmFsKE9iamVjdE91dHB1dCBvdXQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisKKyAgICAgICAgY29tcHJlc3MoKTsKKyAgICAgICAgb3V0LndyaXRlSW50KENVUlJFTlRfVkVSU0lPTik7CisgICAgICAgIG91dC53cml0ZU9iamVjdChmUnVuQXJyYXkpOworICAgICAgICBvdXQud3JpdGVPYmplY3QoZlN0eWxlVGFibGUpOworICAgICAgICBvdXQud3JpdGVPYmplY3QoZkZpcnN0U3R5bGUpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHJlYWRFeHRlcm5hbChPYmplY3RJbnB1dCBpbikgdGhyb3dzIElPRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiB7CisKKyAgICAgICAgaWYgKGluLnJlYWRJbnQoKSAhPSBDVVJSRU5UX1ZFUlNJT04pIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbigiSW52YWxpZCB2ZXJzaW9uIG9mIFBhcmFncmFwaEJ1ZmZlciIpOworICAgICAgICB9CisgICAgICAgIGZSdW5BcnJheSA9IChSdW5BcnJheSkgaW4ucmVhZE9iamVjdCgpOworICAgICAgICBmU3R5bGVUYWJsZSA9IChBdHRyaWJ1dGVNYXBbXSkgaW4ucmVhZE9iamVjdCgpOworICAgICAgICBmRmlyc3RTdHlsZSA9IChBdHRyaWJ1dGVNYXApIGluLnJlYWRPYmplY3QoKTsKKyAgICB9CisKKy8qKgorKiBTaGlmdCB0YWJsZSBzdWNoIHRoYXQgdGhlIGxhc3QgcG9zaXRpdmUgcnVuIHN0YXJ0cyBiZWZvcmUgcG9zLgorKi8KKyAgICBwcml2YXRlIHZvaWQgc2hpZnRUYWJsZVRvKGludCBwb3MpIHsKKworICAgICAgICBpbnQgb2xkTmVnU3RhcnQgPSBmUnVuQXJyYXkuZk5lZ1N0YXJ0OworICAgICAgICBpbnQgb2xkUG9zRW5kID0gZlJ1bkFycmF5LmZQb3NFbmQ7CisKKyAgICAgICAgZlJ1bkFycmF5LnNoaWZ0VGFibGVUbyhwb3MpOworCisgICAgICAgIGlmIChvbGRQb3NFbmQgPiBmUnVuQXJyYXkuZlBvc0VuZCkKKyAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoZlN0eWxlVGFibGUsIGZSdW5BcnJheS5mUG9zRW5kKzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZTdHlsZVRhYmxlLCBmUnVuQXJyYXkuZk5lZ1N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRQb3NFbmQtZlJ1bkFycmF5LmZQb3NFbmQpOworICAgICAgICBlbHNlIGlmIChvbGROZWdTdGFydCA8IGZSdW5BcnJheS5mTmVnU3RhcnQpCisgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KGZTdHlsZVRhYmxlLCBvbGROZWdTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZlN0eWxlVGFibGUsIG9sZFBvc0VuZCsxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmUnVuQXJyYXkuZk5lZ1N0YXJ0LW9sZE5lZ1N0YXJ0KTsKKyAgICB9CisKKy8qKgorKiBVcGRhdGUgdGhlIHN0eWxlIHRhYmxlIHRvIHJlZmxlY3QgYSBjaGFuZ2UgaW4gdGhlIFJ1bkFycmF5J3Mgc2l6ZS4KKyovCisgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZUFycmF5UmVzaXplKGludCBvbGROZWdTdGFydCkgeworCisgICAgICAgIEF0dHJpYnV0ZU1hcCBuZXdTdHlsZVRhYmxlW10gPSBuZXcgQXR0cmlidXRlTWFwW2ZSdW5BcnJheS5nZXRBcnJheUxlbmd0aCgpXTsKKyAgICAgICAgU3lzdGVtLmFycmF5Y29weShmU3R5bGVUYWJsZSwgMCwgbmV3U3R5bGVUYWJsZSwgMCwgZlJ1bkFycmF5LmZQb3NFbmQrMSk7CisgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoZlN0eWxlVGFibGUsIG9sZE5lZ1N0YXJ0LCBuZXdTdHlsZVRhYmxlLCBmUnVuQXJyYXkuZk5lZ1N0YXJ0LCAoZlJ1bkFycmF5LmdldEFycmF5TGVuZ3RoKCktZlJ1bkFycmF5LmZOZWdTdGFydCkpOworICAgICAgICBmU3R5bGVUYWJsZSA9IG5ld1N0eWxlVGFibGU7CisgICAgfQorCisgICAgdm9pZCBjb21wcmVzcygpIHsKKworICAgICAgICBpbnQgb2xkTmVnU3RhcnQgPSBmUnVuQXJyYXkuZk5lZ1N0YXJ0OworICAgICAgICBmUnVuQXJyYXkuY29tcHJlc3MoKTsKKyAgICAgICAgaWYgKGZSdW5BcnJheS5mTmVnU3RhcnQgIT0gb2xkTmVnU3RhcnQpIHsKKyAgICAgICAgICAgIGhhbmRsZUFycmF5UmVzaXplKG9sZE5lZ1N0YXJ0KTsKKyAgICAgICAgfQorICAgIH0KKworLyoqCisqIE1ha2UgbW9yZSByb29tIGluIHJ1bi9zdHlsZSB0YWJsZXMuCisqLworICAgIHByaXZhdGUgdm9pZCBleHBhbmRTdHlsZVRhYmxlKCkgeworCisgICAgICAgIGludCBvbGROZWdTdGFydCA9IGZSdW5BcnJheS5mTmVnU3RhcnQ7CisgICAgICAgIGZSdW5BcnJheS5leHBhbmRSdW5UYWJsZSgpOworICAgICAgICBoYW5kbGVBcnJheVJlc2l6ZShvbGROZWdTdGFydCk7CisgICAgfQorCisvKioKKyogUHJvY2VzcyBhIGNoYXJhY3RlciBpbnNlcnRpb24gYXQgb2Zmc2V0IDx0dD5zdGFydDwvdHQ+LgorKiBJZiBhIHBhcmFncmFwaCBicmVhayB3YXMgaW5zZXJ0ZWQsIHByb3BvZ2F0ZSBwYXJhZ3JhcGggc3R5bGUgYXQKKyogPHR0PnN0YXJ0PC90dD4gdG8gbmV3IHBhcmFncmFwaC4KKyovCisgICAgcHVibGljIHZvaWQgaW5zZXJ0VGV4dChpbnQgc3RhcnQsIGNoYXIgaW5zZXJ0ZWRDaGFyKSB7CisKKyAgICAgICAgc2hpZnRUYWJsZVRvKHN0YXJ0KTsKKyAgICAgICAgaWYgKGlzUGFyYWdyYXBoQnJlYWsoaW5zZXJ0ZWRDaGFyKSkgeworICAgICAgICAgICAgaWYgKGZSdW5BcnJheS5mUG9zRW5kKzEgPj0gZlJ1bkFycmF5LmZOZWdTdGFydCkKKyAgICAgICAgICAgICAgICBleHBhbmRTdHlsZVRhYmxlKCk7CisgICAgICAgICAgICBmUnVuQXJyYXkuZlJ1blN0YXJ0WysrZlJ1bkFycmF5LmZQb3NFbmRdID0gc3RhcnQ7CisgICAgICAgICAgICBmU3R5bGVUYWJsZVtmUnVuQXJyYXkuZlBvc0VuZF0gPQorICAgICAgICAgICAgICAgIChmUnVuQXJyYXkuZlBvc0VuZCA9PSAwKT8gZkZpcnN0U3R5bGUgOiBmU3R5bGVUYWJsZVtmUnVuQXJyYXkuZlBvc0VuZC0xXTsKKyAgICAgICAgICAgIGZSdW5BcnJheS5ydW5TdGFydHNDaGFuZ2VkKCk7CisgICAgICAgIH0KKworICAgICAgICAvL2ZSdW5BcnJheS5mQ3VyVGV4dExlbmd0aCsrOworICAgICAgICBmUnVuQXJyYXkuYWRkVG9DdXJUZXh0TGVuZ3RoKDEpOworICAgIH0KKworLyoqCisqIFByb2Nlc3MgY2hhcmFjdGVyIGluc2VydGlvbiBhdCBvZmZzZXQgPHR0PnN0YXJ0PC90dD4uCisqIEVhY2ggbmV3IHBhcmFncmFwaCBnZXRzIHBhcmFncmFwaCBzdHlsZSBhdAorKiA8dHQ+c3RhcnQ8L3R0Pi4KKyovCisgICAgcHVibGljIHZvaWQgaW5zZXJ0VGV4dChpbnQgc3RhcnQsIGNoYXIgc3JjQ2hhcnNbXSwgaW50IHNyY1N0YXJ0LCBpbnQgc3JjTGltaXQpIHsKKworICAgICAgICBzaGlmdFRhYmxlVG8oc3RhcnQpOworCisgICAgICAgIGludCBhZGp1c3QgPSBzdGFydCAtIHNyY1N0YXJ0OworCisgICAgICAgIGZvciAoaW50IGk9c3JjU3RhcnQ7ICBpIDwgc3JjTGltaXQ7IGkrKykKKyAgICAgICAgICAgIGlmIChpc1BhcmFncmFwaEJyZWFrKHNyY0NoYXJzW2ldKSkgeworICAgICAgICAgICAgICAgIGlmIChmUnVuQXJyYXkuZlBvc0VuZCsxID49IGZSdW5BcnJheS5mTmVnU3RhcnQpCisgICAgICAgICAgICAgICAgICAgIGV4cGFuZFN0eWxlVGFibGUoKTsKKyAgICAgICAgICAgICAgICBmUnVuQXJyYXkuZlJ1blN0YXJ0WysrZlJ1bkFycmF5LmZQb3NFbmRdID0gYWRqdXN0ICsgaTsKKyAgICAgICAgICAgICAgICBmU3R5bGVUYWJsZVtmUnVuQXJyYXkuZlBvc0VuZF0gPQorICAgICAgICAgICAgICAgICAgICAoZlJ1bkFycmF5LmZQb3NFbmQgPT0gMCk/IGZGaXJzdFN0eWxlIDogZlN0eWxlVGFibGVbZlJ1bkFycmF5LmZQb3NFbmQtMV07CisgICAgICAgICAgICAgICAgZlJ1bkFycmF5LnJ1blN0YXJ0c0NoYW5nZWQoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAvL2ZSdW5BcnJheS5mQ3VyVGV4dExlbmd0aCArPSAoc3JjTGltaXQtc3JjU3RhcnQpOworICAgICAgICBmUnVuQXJyYXkuYWRkVG9DdXJUZXh0TGVuZ3RoKHNyY0xpbWl0LXNyY1N0YXJ0KTsKKyAgICB9CisKKy8qKgorKiBQcm9jZXNzIGRlbGV0aW9uIGJ5IHJlbW92aW5nIHBhcmFncmFwaCBicmVha3MgY29udGFpbmVkIGluCisqIGRlbGV0ZWQgcmFuZ2UuICBQcm9wb2dhdGUgcGFyYWdyYXBoIHN0eWxlcyBiYWNrd2FyZCwgaWYgbmVjZXNzYXJ5LgorKi8KKyAgICBwdWJsaWMgdm9pZCBkZWxldGVUZXh0KGludCBzdGFydCwgaW50IGxpbWl0LCBpbnRbXSBkYW1hZ2VkUmFuZ2UpIHsKKworICAgICAgICBpbnQgbGVuZ3RoID0gbGltaXQgLSBzdGFydDsKKyAgICAgICAgaWYgKGxlbmd0aCA8IDApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgcmFuZ2UiKTsKKyAgICAgICAgfQorCisgICAgICAgIHNoaWZ0VGFibGVUbyhsaW1pdCk7CisKKyAgICAgICAgaW50IG5ld0VuZCA9IGZSdW5BcnJheS5maW5kUnVuQ29udGFpbmluZyhzdGFydC0xKTsKKworICAgICAgICBpZiAobmV3RW5kICE9IGZSdW5BcnJheS5mUG9zRW5kKSB7CisKKyAgICAgICAgICAgIEF0dHJpYnV0ZU1hcCBwcm9wU3R5bGUgPSBmU3R5bGVUYWJsZVtmUnVuQXJyYXkuZlBvc0VuZF07CisgICAgICAgICAgICBib29sZWFuIHByb3BvZ2F0ZWQ7CisKKyAgICAgICAgICAgIGlmIChuZXdFbmQgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICBwcm9wb2dhdGVkID0gIXByb3BTdHlsZS5lcXVhbHMoZkZpcnN0U3R5bGUpOworICAgICAgICAgICAgICAgIGZGaXJzdFN0eWxlID0gcHJvcFN0eWxlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcHJvcG9nYXRlZCA9ICFwcm9wU3R5bGUuZXF1YWxzKGZTdHlsZVRhYmxlW25ld0VuZF0pOworICAgICAgICAgICAgICAgIGZTdHlsZVRhYmxlW25ld0VuZF0gPSBwcm9wU3R5bGU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChwcm9wb2dhdGVkKSB7CisgICAgICAgICAgICAgICAgaW50IHBTdGFydCA9IChuZXdFbmQ9PS0xKT8gMCA6IGZSdW5BcnJheS5mUnVuU3RhcnRbbmV3RW5kXSArIDE7CisgICAgICAgICAgICAgICAgZGFtYWdlZFJhbmdlWzBdID0gTWF0aC5taW4oZGFtYWdlZFJhbmdlWzBdLCBwU3RhcnQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmUnVuQXJyYXkuZlBvc0VuZCA9IG5ld0VuZDsKKyAgICAgICAgfQorCisgICAgICAgIGZSdW5BcnJheS5hZGRUb0N1clRleHRMZW5ndGgoLWxlbmd0aCk7CisKKyAgICAgICAgZlJ1bkFycmF5LnJ1blN0YXJ0c0NoYW5nZWQoKTsKKyAgICB9CisKKy8qKgorKiBSZXR1cm5zIHRoZSBzdGFydCBvZiB0aGUgcGFyYWdyYXBoIGNvbnRhaW5pbmcgb2Zmc2V0IDx0dD5wb3M8L3R0Pi4KKyovCisgICAgcHVibGljIGludCBwYXJhZ3JhcGhTdGFydChpbnQgcG9zKSB7CisKKyAgICAgICAgaW50IHJ1biA9IGZSdW5BcnJheS5maW5kUnVuQ29udGFpbmluZyhwb3MtMSk7CisgICAgICAgIGlmIChydW4gPT0gLTEpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGZSdW5BcnJheS5nZXRMb2dpY2FsUnVuU3RhcnQocnVuKSArIDE7CisgICAgICAgIH0KKyAgICB9CisKKy8qKgorKiBSZXR1cm5zIHRoZSBsaW1pdCBvZiB0aGUgcGFyYWdyYXBoIGNvbnRhaW5pbmcgb2Zmc2V0IDx0dD5wb3M8L3R0Pi4KKyovCisgICAgcHVibGljIGludCBwYXJhZ3JhcGhMaW1pdChpbnQgcG9zKSB7CisKKyAgICAgICAgaW50IHJ1biA9IGZSdW5BcnJheS5maW5kUnVuQ29udGFpbmluZyhwb3MtMSk7CisKKyAgICAgICAgaWYgKHJ1biA9PSBmUnVuQXJyYXkuZlBvc0VuZCkKKyAgICAgICAgICAgIHJ1biA9IGZSdW5BcnJheS5mTmVnU3RhcnQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJ1bisrOworCisgICAgICAgIGlmIChydW4gPT0gZlJ1bkFycmF5LmdldEFycmF5TGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIHJldHVybiBmUnVuQXJyYXkuZ2V0Q3VyVGV4dExlbmd0aCgpOworICAgICAgICB9CisKKyAgICAgICAgaW50IHN0YXJ0ID0gZlJ1bkFycmF5LmdldExvZ2ljYWxSdW5TdGFydChydW4pOworCisgICAgICAgIHJldHVybiBzdGFydCsxOworICAgIH0KKworLyoqCisqIFJldHVybnMgdGhlIHN0eWxlIG9mIHRoZSBwYXJhZ3JhcGggY29udGFpbmluZyBvZmZzZXQgPHR0PnBvczwvdHQ+LgorKi8KKyAgICBwdWJsaWMgQXR0cmlidXRlTWFwIHBhcmFncmFwaFN0eWxlQXQoaW50IG9mZnNldCkgeworCisgICAgICAgIGludCBydW4gPSBmUnVuQXJyYXkuZmluZFJ1bkNvbnRhaW5pbmcob2Zmc2V0LTEpOworICAgICAgICBpZiAocnVuIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBmRmlyc3RTdHlsZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIGZTdHlsZVRhYmxlW3J1bl07CisgICAgfQorCisvKioKKyogQ3JlYXRlIHBhcmFncmFwaCBpdGVyYXRvci4KKyovCisvKgorICAgIHB1YmxpYyBNUGFyYWdyYXBoSXRlcmF0b3IgY3JlYXRlUGFyYWdyYXBoSXRlcmF0b3IoaW50IHN0YXJ0LCBpbnQgbGltaXQpIHsKKworICAgICAgICByZXR1cm4gbmV3IFBhcmFncmFwaEl0ZXJhdG9yKHN0YXJ0LCBsaW1pdCk7CisgICAgfQorKi8KKworLyoqCisqIENhbGxlZCBieSBpdGVyYXRvciB0byBnZXQgcnVuIGluZm8uCisqLworICAgIHByaXZhdGUgdm9pZCBzZXRJdGVyYXRvcihpbnQgcG9zLCBQYXJhZ3JhcGhJdGVyYXRvciBpdGVyKSB7CisKKyAgICAgICAgaWYgKChwb3MgPCAwKSB8fCAocG9zID49IGZSdW5BcnJheS5nZXRDdXJUZXh0TGVuZ3RoKCkpKSB7CisgICAgICAgICAgICBpdGVyLnNldCgwLCAwLCBrTm9SdW4sIG51bGwpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaW50IHJ1bjsKKworICAgICAgICBpZiAocG9zID4gMCkKKyAgICAgICAgICAgIHJ1biA9IGZSdW5BcnJheS5maW5kUnVuQ29udGFpbmluZyhwb3MtMSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJ1biA9IC0xOworCisgICAgICAgIHNldEl0ZXJhdG9yVXNpbmdSdW4ocnVuLCBpdGVyKTsKKyAgICB9CisKKy8qKgorKiBDYWxsZWQgYnkgaXRlcmF0b3IgdG8gZ2V0IHJ1biBpbmZvLgorKi8KKyAgICBwcml2YXRlIHZvaWQgc2V0SXRlcmF0b3JVc2luZ1J1bihpbnQgcnVuLCBQYXJhZ3JhcGhJdGVyYXRvciBpdGVyKSB7CisKKyAgICAgICAgaW50IGxhc3RWYWxpZFJ1biA9IGZSdW5BcnJheS5sYXN0UnVuKCk7CisKKyAgICAgICAgaWYgKHJ1biA8IC0xIHx8IHJ1biA+IGxhc3RWYWxpZFJ1bikgeworICAgICAgICAgICAgaXRlci5zZXQoMCwgMCwga05vUnVuLCBudWxsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChydW4gPT0gZlJ1bkFycmF5LmZQb3NFbmQrMSkKKyAgICAgICAgICAgIHJ1biA9IGZSdW5BcnJheS5mTmVnU3RhcnQ7CisgICAgICAgIGVsc2UgaWYgKHJ1biA9PSBmUnVuQXJyYXkuZk5lZ1N0YXJ0LTEpCisgICAgICAgICAgICBydW4gPSBmUnVuQXJyYXkuZlBvc0VuZDsKKworICAgICAgICBpbnQgcnVuU3RhcnQ7CisgICAgICAgIEF0dHJpYnV0ZU1hcCBzdHlsZTsKKworICAgICAgICBpZiAocnVuIDwgMCkgeworICAgICAgICAgICAgcnVuU3RhcnQgPSAwOworICAgICAgICAgICAgc3R5bGUgPSBmRmlyc3RTdHlsZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJ1blN0YXJ0ID0gZlJ1bkFycmF5LmZSdW5TdGFydFtydW5dOworICAgICAgICAgICAgc3R5bGUgPSBmU3R5bGVUYWJsZVtydW5dOworICAgICAgICAgICAgaWYgKHJ1blN0YXJ0IDwgMCkKKyAgICAgICAgICAgICAgICBydW5TdGFydCArPSBmUnVuQXJyYXkuZ2V0Q3VyVGV4dExlbmd0aCgpOworICAgICAgICAgICAgcnVuU3RhcnQrKzsKKyAgICAgICAgfQorCisgICAgICAgIGludCBuZXh0UnVuOworCisgICAgICAgIGlmIChydW4gPT0gZlJ1bkFycmF5LmZQb3NFbmQpCisgICAgICAgICAgICBuZXh0UnVuID0gZlJ1bkFycmF5LmZOZWdTdGFydDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbmV4dFJ1biA9IHJ1biArIDE7CisKKyAgICAgICAgaW50IHJ1bkxpbWl0OworCisgICAgICAgIGlmIChuZXh0UnVuID49IGZSdW5BcnJheS5nZXRBcnJheUxlbmd0aCgpKQorICAgICAgICAgICAgcnVuTGltaXQgPSBmUnVuQXJyYXkuZ2V0Q3VyVGV4dExlbmd0aCgpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJ1bkxpbWl0ID0gZlJ1bkFycmF5LmZSdW5TdGFydFtuZXh0UnVuXTsKKyAgICAgICAgICAgIGlmIChydW5MaW1pdCA8IDApCisgICAgICAgICAgICAgICAgcnVuTGltaXQgKz0gZlJ1bkFycmF5LmdldEN1clRleHRMZW5ndGgoKTsKKyAgICAgICAgICAgIHJ1bkxpbWl0Kys7CisgICAgICAgICAgICB9CisKKyAgICAgICAgaXRlci5zZXQocnVuU3RhcnQsIHJ1bkxpbWl0LCBydW4sIHN0eWxlKTsKKyAgICB9CisKKy8qKgorKiBSZXBsYWNlIHBhcmFncmFwaCBicmVha3Mvc3R5bGVzIGJldHdlZW4gc3RhcnQgYW5kIGxlbmd0aCB3aXRoIHBhcmFncmFwaCBicmVha3Mvc3R5bGVzCisqIGZyb20gPHR0PnNyY1RleHQ8L3R0Pi4KKyogQHBhcmFtIHN0YXJ0IGFuIG9mZnNldCBpbnRvIHRoZSB0ZXh0CisqIEBwYXJhbSBsaW1pdCB0aGUgaW5kZXggYWZ0ZXIgdGhlIGxhc3QgY2hhcmFjdGVyIHRvIHJlcGxhY2UKKyogQHBhcmFtIHNyY1RleHQgdGhlIHRleHQgZnJvbSB3aGljaCBuZXcgcGFyYWdyYXBocyBhcmUgdGFrZW4KKyogQHBhcmFtIHNyY1N0YXJ0IHRoZSBzdGFydCBvZiB0aGUgcmFuZ2UgaW4gPGNvZGU+c3JjVGV4dDwvY29kZT4gdG8gY29weQorKiBAcGFyYW0gc3JjTGltaXQgdGhlIGZpcnN0IGluZGV4IGFmdGVyIHRoZSByYW5nZSBpbiA8Y29kZT5zcmNUZXh0PC9jb2RlPiB0byBjb3B5CisqLworICAgIHB1YmxpYyB2b2lkIHJlcGxhY2UoaW50IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgTUNvbnN0VGV4dCBzcmNUZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNyY1N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNyY0xpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgaW50W10gZGFtYWdlZFJhbmdlKSB7CisKKyAgICAgICAgZmluYWwgaW50IGluc0xlbmd0aCA9IHNyY0xpbWl0IC0gc3JjU3RhcnQ7CisgICAgICAgIGlmIChpbnNMZW5ndGggPCAwKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgcmFuZ2UiKTsKKyAgICAgICAgfQorICAgICAgICBmaW5hbCBpbnQgb3JpZ0xlbmd0aCA9IGZSdW5BcnJheS5nZXRDdXJUZXh0TGVuZ3RoKCk7CisgICAgICAgIGRlbGV0ZVRleHQoc3RhcnQsIGxpbWl0LCBkYW1hZ2VkUmFuZ2UpOworCisgICAgICAgIGlmIChpbnNMZW5ndGggPT0gMCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmaW5hbCBpbnQgb2xkUG9zRW5kID0gZlJ1bkFycmF5LmZQb3NFbmQ7CisgICAgICAgIEF0dHJpYnV0ZU1hcCBvcmlnU3R5bGU7CisgICAgICAgIGlmIChsaW1pdCA8IG9yaWdMZW5ndGgpIHsKKyAgICAgICAgICAgIG9yaWdTdHlsZSA9IChmUnVuQXJyYXkuZlBvc0VuZD49MCk/IGZTdHlsZVRhYmxlW2ZSdW5BcnJheS5mUG9zRW5kXSA6IGZGaXJzdFN0eWxlOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgb3JpZ1N0eWxlID0gc3JjVGV4dC5wYXJhZ3JhcGhTdHlsZUF0KHNyY0xpbWl0KTsKKyAgICAgICAgfQorCisgICAgICAgIGludCBwYXJhZ3JhcGhTdGFydCA9IHNyY1N0YXJ0OworICAgICAgICBpbnQgbGFzdFBMaW1pdCA9IHNyY1RleHQucGFyYWdyYXBoU3RhcnQoc3JjTGltaXQpOworICAgICAgICBib29sZWFuIHNlcGFyYXRvckF0RW5kID0gbGFzdFBMaW1pdCA+IHNyY1N0YXJ0ICYmIGlzUGFyYWdyYXBoQnJlYWsoc3JjVGV4dC5hdChsYXN0UExpbWl0LTEpKTsKKworICAgICAgICBpZiAobGltaXQgPT0gb3JpZ0xlbmd0aCAmJiBsYXN0UExpbWl0ID09IHBhcmFncmFwaFN0YXJ0KSB7CisgICAgICAgICAgICBpZiAoZlJ1bkFycmF5LmZQb3NFbmQgPiAwKSB7CisgICAgICAgICAgICAgICAgZlN0eWxlVGFibGVbZlJ1bkFycmF5LmZQb3NFbmRdID0gb3JpZ1N0eWxlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgZkZpcnN0U3R5bGUgPSBvcmlnU3R5bGU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBib29sZWFuIGZpcnN0UGFzcyA9IHRydWU7CisgICAgICAgICAgICB3aGlsZSAocGFyYWdyYXBoU3RhcnQgPCBsYXN0UExpbWl0KSB7CisKKyAgICAgICAgICAgICAgICBBdHRyaWJ1dGVNYXAgc3R5bGUgPSBzcmNUZXh0LnBhcmFncmFwaFN0eWxlQXQocGFyYWdyYXBoU3RhcnQpOworICAgICAgICAgICAgICAgIGludCBwYXJhZ3JhcGhMaW1pdCA9IHNyY1RleHQucGFyYWdyYXBoTGltaXQocGFyYWdyYXBoU3RhcnQpOworCisgICAgICAgICAgICAgICAgaWYgKGZSdW5BcnJheS5mUG9zRW5kKzEgPj0gZlJ1bkFycmF5LmZOZWdTdGFydCkKKyAgICAgICAgICAgICAgICAgICAgZXhwYW5kU3R5bGVUYWJsZSgpOworCisgICAgICAgICAgICAgICAgaWYgKGZSdW5BcnJheS5mUG9zRW5kID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFzdHlsZS5lcXVhbHMoZlN0eWxlVGFibGVbZlJ1bkFycmF5LmZQb3NFbmRdKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZlN0eWxlVGFibGVbZlJ1bkFycmF5LmZQb3NFbmRdID0gc3R5bGU7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlyc3RQYXNzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBTdGFydCA9IGZSdW5BcnJheS5mUnVuU3RhcnRbZlJ1bkFycmF5LmZQb3NFbmRdKzE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFtYWdlZFJhbmdlWzBdID0gTWF0aC5taW4oZGFtYWdlZFJhbmdlWzBdLCBwU3RhcnQpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFzdHlsZS5lcXVhbHMoZkZpcnN0U3R5bGUpKSB7CisgICAgICAgICAgICAgICAgICAgIGZGaXJzdFN0eWxlID0gc3R5bGU7CisgICAgICAgICAgICAgICAgICAgIGRhbWFnZWRSYW5nZVswXSA9IDA7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZmlyc3RQYXNzID0gZmFsc2U7CisKKyAgICAgICAgICAgICAgICBpZiAocGFyYWdyYXBoTGltaXQgPCBsYXN0UExpbWl0IHx8IHNlcGFyYXRvckF0RW5kKSB7CisgICAgICAgICAgICAgICAgICAgIGZSdW5BcnJheS5mUnVuU3RhcnRbKytmUnVuQXJyYXkuZlBvc0VuZF0gPSBwYXJhZ3JhcGhMaW1pdCAtIDEgKyBzdGFydCAtIHNyY1N0YXJ0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBwYXJhZ3JhcGhTdGFydCA9IHBhcmFncmFwaExpbWl0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGZSdW5BcnJheS5mUG9zRW5kICE9IG9sZFBvc0VuZCkgeworICAgICAgICAgICAgICAgIGZTdHlsZVRhYmxlW2ZSdW5BcnJheS5mUG9zRW5kXSA9IG9yaWdTdHlsZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZSdW5BcnJheS5hZGRUb0N1clRleHRMZW5ndGgoaW5zTGVuZ3RoKTsKKyAgICB9CisKKy8qKgorKiBNb2RpZnkgdGhlIHN0eWxlIG9mIGFsbCBwYXJhZ3JhcGhzIGNvbnRhaW5pbmcgb2Zmc2V0cyBpbiB0aGUgcmFuZ2UgW3N0YXJ0LCBsaW1pdCkgdG8KKyogPHR0PnN0eWxlPC90dD4uCisqLworICAgIHB1YmxpYyBib29sZWFuIG1vZGlmeVBhcmFncmFwaFN0eWxlcyhpbnQgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3R5bGVNb2RpZmllciBtb2RpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50W10gZGFtYWdlZFJhbmdlKSAgeworCisgICAgICAgIGludCBydW4gPSBmUnVuQXJyYXkuZmluZFJ1bkNvbnRhaW5pbmcoc3RhcnQtMSk7CisgICAgICAgIGludCBjdXJyZW50UFN0YXJ0OworICAgICAgICBpZiAocnVuID09IC0xKSB7CisgICAgICAgICAgICBjdXJyZW50UFN0YXJ0ID0gMDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGN1cnJlbnRQU3RhcnQgPSBmUnVuQXJyYXkuZ2V0TG9naWNhbFJ1blN0YXJ0KHJ1bikgKyAxOworICAgICAgICB9CisKKyAgICAgICAgYm9vbGVhbiBtb2RpZmllZEFueXdoZXJlID0gZmFsc2U7CisKKyAgICAgICAgZm9yICg7OykgeworCisgICAgICAgICAgICBib29sZWFuIG1vZGlmaWVkID0gZmFsc2U7CisKKyAgICAgICAgICAgIGlmIChydW4gPCAwKSB7CisKKyAgICAgICAgICAgICAgICBBdHRyaWJ1dGVNYXAgbmV3U3R5bGUgPSBtb2RpZmllci5tb2RpZnlTdHlsZShmRmlyc3RTdHlsZSk7CisKKyAgICAgICAgICAgICAgICBpZiAoIW5ld1N0eWxlLmVxdWFscyhmRmlyc3RTdHlsZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgZkZpcnN0U3R5bGUgPSBuZXdTdHlsZTsKKyAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworCisgICAgICAgICAgICAgICAgQXR0cmlidXRlTWFwIG5ld1N0eWxlID0gbW9kaWZpZXIubW9kaWZ5U3R5bGUoZlN0eWxlVGFibGVbcnVuXSk7CisKKyAgICAgICAgICAgICAgICBpZiAoIWZTdHlsZVRhYmxlW3J1bl0uZXF1YWxzKG5ld1N0eWxlKSkgeworICAgICAgICAgICAgICAgICAgICBmU3R5bGVUYWJsZVtydW5dID0gbmV3U3R5bGU7CisgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChydW4gPT0gZlJ1bkFycmF5LmZQb3NFbmQpIHsKKyAgICAgICAgICAgICAgICBydW4gPSBmUnVuQXJyYXkuZk5lZ1N0YXJ0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcnVuKys7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGludCBuZXh0UFN0YXJ0OworICAgICAgICAgICAgaWYgKHJ1biA9PSBmUnVuQXJyYXkuZ2V0QXJyYXlMZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIG5leHRQU3RhcnQgPSBmUnVuQXJyYXkuZ2V0Q3VyVGV4dExlbmd0aCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbmV4dFBTdGFydCA9IGZSdW5BcnJheS5nZXRMb2dpY2FsUnVuU3RhcnQocnVuKSArIDE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChtb2RpZmllZCkgeworICAgICAgICAgICAgICAgIG1vZGlmaWVkQW55d2hlcmUgPSB0cnVlOworICAgICAgICAgICAgICAgIGRhbWFnZWRSYW5nZVswXSA9IE1hdGgubWluKGRhbWFnZWRSYW5nZVswXSwgY3VycmVudFBTdGFydCk7CisgICAgICAgICAgICAgICAgZGFtYWdlZFJhbmdlWzFdID0gTWF0aC5tYXgoZGFtYWdlZFJhbmdlWzFdLCBuZXh0UFN0YXJ0KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGxpbWl0IDw9IG5leHRQU3RhcnQpIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGN1cnJlbnRQU3RhcnQgPSBuZXh0UFN0YXJ0OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG1vZGlmaWVkQW55d2hlcmU7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBkdW1wUGFyYWdyYXBoU3RhcnRzKFBhcmFncmFwaEJ1ZmZlciBzdCkgeworCisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiZlJ1bkFycmF5LmZQb3NFbmQ9IitzdC5mUnVuQXJyYXkuZlBvc0VuZCsiLCBmUnVuQXJyYXkuZk5lZ1N0YXJ0PSIrc3QuZlJ1bkFycmF5LmZOZWdTdGFydCsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCBmUnVuQXJyYXkuZ2V0QXJyYXlMZW5ndGgoKT0iK3N0LmZSdW5BcnJheS5nZXRBcnJheUxlbmd0aCgpKyIsIGZSdW5BcnJheS5nZXRDdXJUZXh0TGVuZ3RoKCk9IitzdC5mUnVuQXJyYXkuZ2V0Q3VyVGV4dExlbmd0aCgpKTsKKworICAgICAgICBpbnQgaTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludCgiUG9zaXRpdmVzOiAiKTsKKyAgICAgICAgZm9yIChpPTA7IGk8PXN0LmZSdW5BcnJheS5mUG9zRW5kOyBpKyspCisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KHN0LmZSdW5BcnJheS5mUnVuU3RhcnRbaV0rIiAiKTsKKworICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCIgICBOZWdhdGl2ZXM6ICIpOworICAgICAgICBmb3IgKGk9c3QuZlJ1bkFycmF5LmZOZWdTdGFydDsgaTxzdC5mUnVuQXJyYXkuZ2V0QXJyYXlMZW5ndGgoKTsgaSsrKQorICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludChzdC5mUnVuQXJyYXkuZlJ1blN0YXJ0W2ldKyIgIik7CisKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIgIik7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IGtOb1J1biA9IC00MjsgLy8gaXRlcmF0b3IgdXNlCisKKyAgICBwcml2YXRlIGZpbmFsIGNsYXNzIFBhcmFncmFwaEl0ZXJhdG9yIC8qaW1wbGVtZW50cyBNUGFyYWdyYXBoSXRlcmF0b3IqLworICAgIHsKKyAgICAgICAgUGFyYWdyYXBoSXRlcmF0b3IoaW50IHN0YXJ0LCBpbnQgbGltaXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJlc2V0KHN0YXJ0LCBsaW1pdCwgc3RhcnQpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgcmVzZXQoaW50IHN0YXJ0LCBpbnQgbGltaXQsIGludCBwb3MpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZTdGFydCA9IHN0YXJ0OworICAgICAgICAgICAgZkxpbWl0ID0gbGltaXQ7CisgICAgICAgICAgICBzZXRJdGVyYXRvcihmU3RhcnQsIHRoaXMpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGJvb2xlYW4gaXNWYWxpZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmQ3VycmVudFJ1biAhPSBrTm9SdW47CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBuZXh0KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGZSdW5MaW1pdCA8IGZMaW1pdCkgeworICAgICAgICAgICAgICAgIGZDdXJyZW50UnVuKys7CisgICAgICAgICAgICAgICAgc2V0SXRlcmF0b3JVc2luZ1J1bihmQ3VycmVudFJ1biwgdGhpcyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc2V0KDAsIDAsIGtOb1J1biwgbnVsbCk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBwcmV2KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGZSdW5TdGFydCA+IGZTdGFydCkgeworICAgICAgICAgICAgICAgIGZDdXJyZW50UnVuLS07CisgICAgICAgICAgICAgICAgc2V0SXRlcmF0b3JVc2luZ1J1bihmQ3VycmVudFJ1biwgdGhpcyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc2V0KDAsIDAsIGtOb1J1biwgbnVsbCk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBzZXQoaW50IHBvcykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHBvcyA+PSBmU3RhcnQgJiYgcG9zIDwgZkxpbWl0KSB7CisgICAgICAgICAgICAgICAgc2V0SXRlcmF0b3IocG9zLCB0aGlzKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc2V0KDAsIDAsIGtOb1J1biwgbnVsbCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBQYXJhZ3JhcGhCdWZmZXIgY2FsbHMgYmFjayBvbiB0aGlzIHRvIHNldCBpdGVyYXRvcnMKKyAgICAgICAgdm9pZCBzZXQoaW50IHN0YXJ0LCBpbnQgbGltaXQsIGludCBjdXJyZW50UnVuLCBBdHRyaWJ1dGVNYXAgc3R5bGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZSdW5TdGFydCA9IHN0YXJ0IDwgZlN0YXJ0ID8gZlN0YXJ0IDogc3RhcnQ7CisgICAgICAgICAgICBmUnVuTGltaXQgPSBsaW1pdCA+IGZMaW1pdCA/IGZMaW1pdCA6IGxpbWl0OworICAgICAgICAgICAgZkN1cnJlbnRSdW4gPSBjdXJyZW50UnVuOworICAgICAgICAgICAgZlN0eWxlID0gc3R5bGU7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCByZXNldChpbnQgc3RhcnQsIGludCBsaW1pdCkKKyAgICAgICAgeworICAgICAgICAgICAgcmVzZXQoc3RhcnQsIGxpbWl0LCBzdGFydCk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBmaXJzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNldChmU3RhcnQpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgbGFzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNldChmTGltaXQgLSAxKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBpbnQgcmFuZ2VTdGFydCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmU3RhcnQ7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgaW50IHJhbmdlTGltaXQoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZkxpbWl0OworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGludCByYW5nZUxlbmd0aCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmTGltaXQgLSBmU3RhcnQ7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgaW50IHJ1blN0YXJ0KCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZSdW5TdGFydDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBpbnQgcnVuTGltaXQoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZlJ1bkxpbWl0OworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGludCBydW5MZW5ndGgoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZlJ1bkxpbWl0IC0gZlJ1blN0YXJ0OworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIEF0dHJpYnV0ZU1hcCBzdHlsZSgpIHsKKworICAgICAgICAgICAgcmV0dXJuIGZTdHlsZTsKKyAgICAgICAgfQorCisgICAgICAgIHByaXZhdGUgaW50IGZTdGFydDsKKyAgICAgICAgcHJpdmF0ZSBpbnQgZkxpbWl0OworICAgICAgICBwcml2YXRlIGludCBmUnVuU3RhcnQ7CisgICAgICAgIHByaXZhdGUgaW50IGZSdW5MaW1pdDsKKyAgICAgICAgcHJpdmF0ZSBpbnQgZkN1cnJlbnRSdW47CisgICAgICAgIHByaXZhdGUgQXR0cmlidXRlTWFwIGZTdHlsZTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC9zdHlsZWR0ZXh0L1J1bkFycmF5LmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC9zdHlsZWR0ZXh0L1J1bkFycmF5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uN2UxOGYwMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N0eWxlZHRleHQvUnVuQXJyYXkuamF2YQpAQCAtMCwwICsxLDI4MiBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogUnVuQXJyYXkuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo0NToxMCAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworLyoqCisqIFRoaXMgY2xhc3MgbWFpbnRhaW5zIGludGVydmFscyB3aXRoaW4gYSBwaWVjZSBvZiB0ZXh0LiAgSW50ZXJ2YWwgYm91bmRhcmllcworKiBhcmUgc3RvcmVkIGluIHRoZSBmUnVuU3RhcnQgYXJyYXkuICBJbnRlcnZhbCBib3VuZGFyaWVzIG1heSBoYXZlIGEKKyogcG9zaXRpdmUgb3IgbmVnYXRpdmUgcmVwcmVzZW50YXRpb24uICBBIHBvc2l0aXZlIGJvdW5kYXJ5IGlzIGdpdmVuIGFzIGFuIG9mZnNldAorKiBmcm9tIDAuICBBIG5lZ2F0aXZlIGJvdW5kYXJ5IGlzIGdpdmVuIGFzIGEgbmVnYXRpdmUgb2Zmc2V0IGZyb20gdGhlIG5lZCBvZiB0aGUgdGV4dC4KKyogVGhlIFJ1bkFycmF5IHN0b3JlcyBwb3NpdGl2ZSBib3VuZGFyaWVzIGluIHRoZSBlbnRyaWVzIFswLCBmUG9zRW5kXSwgYW5kIG5lZ2F0aXZlCisqIGJvdW5kYXJpZXMgaW4gdGhlIGVudHJpZXMgW2ZOZWdTdGFydCwgZkxlbmd0aCkuICBOZXcgYm91bmRhcmllcyBtYXkgYmUgaW5zZXJ0ZWQgaW50bworKiB0aGUgdW5kZWZpbmVkIG1pZGRsZSBvZiB0aGUgUnVuQXJyYXkuICBJZiBmUG9zRW5kIDwgMCwgdGhlcmUgYXJlIG5vIHBvc2l0aXZlIGVudHJpZXMuCisqIElmIGZOZWdTdGFydCA+PSBmUnVuQXJyYXkubGVuZ3RoLCB0aGVyZSBhcmUgbm8gbmVnYXRpdmUgbmV0cmllcy4gIEl0J3MgcG9zc2libGUgdG8gaGF2ZQorKiBhIHJ1bmFycmF5IHdpdGggbmVpdGhlciBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBlbnRyaWVzLgorKgorKiBBcyBhbiBleGFtcGxlIG9mIGhvdyB0aGUgUnVuQXJyYXkgd29ya3MsIGNvbnNpZGVyIGEgcGllY2Ugb2YgdGV4dCB3aXRoIDUgaW50ZXJ2YWxzLAorKiB3aGVyZSBlYWNoIGludGVydmFsIGlzIDMgY2hhcmFjdGVycyBpbiBsZW5ndGguICBUaGUgUnVuQXJyYXkgZm9yIHRoaXMgdGV4dCBjb3VsZAorKiBsb29rIGxpa2U6CisqICAgIGZDdXJUZXh0TGVuZ3RoID0gMTUsIGZQb3NFbmQgPSA1LCBmTmVnU3RhcnQgPSAxMCwKKyogICAgZlJ1blN0YXJ0ID0geyAwLCAzLCA2LCA5LCAxMiwgVSwgVSwgVSwgVSwgVSB9OworKiB3aGVyZSBVIGlzIGFuIHVuZGVmaW5lZCBhcnJheSBlbGVtZW50LgorCisqIEFuIGVxdWl2YWxlbnQgcmVwcmVzZW50YXRpb24gd291bGQgYmU6CisqICAgIGZDdXJUZXh0TGVuZ3RoID0gMTUsIGZQb3NFbmQgPSAzLCBmTmVnU3RhcnQgPSA4LAorKiAgICBmUnVuU3RhcnQgPSB7IDAsIDMsIDYsIFUsIFUsIFUsIFUsIFUsIC02LCAtMyB9OworKgorKiBUaGUgUnVuQXJyYXkgY2xhc3MgaXMgdXNlZCBpbiB0aGUgU3R5bGVCdWZmZXIgYW5kIHRoZSBQYXJhZ3JhcGhCdWZmZXIuICBJbiB0aGUgU3R5bGVCdWZmZXIsCisqIHRoZSBlbnRyaWVzIGluIGZSdW5TdGFydCBnaXZlIHRoZSBvZmZzZXRzIHdoZXJlIHN0eWxlIHJ1bnMgYmVnaW4uICBJbiB0aGUKKyogUGFyYWdyYXBoQnVmZmVyLCB0aGUgZlJ1blN0YXJ0IGVudHJpZXMgc3RvcmUgb2Zmc2V0cyBvZiBwYXJhZ3JhcGggYnJlYWtzLgorKgorKiBUaGlzIGNsYXNzIHByb3ZpZGVzIG1ldGhvZHMgZm9yIHNoaWZ0aW5nIHRoZSBydW4gdGFibGUgdG8gYSBwYXJ0aWN1bGFyIHBvc2l0aW9uLCBleHBhbmRpbmcgdGhlCisqIHJ1biB0YWJsZSwgYW5kIHJldHVybmluZyB0aGUgaW5kZXggb2YgdGhlIHJ1biBjb250YWluaW5nIGEgcGFydGljdWxhciBvZmZzZXQgaW4gdGhlIHRleHQuICBBbGwKKyogb3RoZXIgZnVuY3Rpb25hbGl0eSBpcyBpbXBsZW1lbnRlZCBpbiB0aGUgUnVuQXJyYXkgY2xpZW50cy4KKyoKKyogUnVuQXJyYXkgdXNlcyBGYXN0SW50QmluYXJ5U2VhcmNoIGZvciBzZWFyY2hlcy4gIFRoZSBzZWFyY2hlcyBhcmUgY29uc3RydWN0ZWQgb24gZGVtYW5kIGluCisqIHRoZSBmaW5kUnVuQ29udGFpbmluZyBtZXRob2QuICBUaGUgc2VhcmNoZXMgYXJlIGludmFsaWRhdGVkIHdoZW4gdGhlIHJ1biBhcnJheSBpcyBzaGlmdGVkOworKiBob3dldmVyLCB0aGUgUnVuQXJyYXkgY2FuIGJlIG1vZGlmaWVkIGJ5IG90aGVyIGNsYXNzZXMuICBUaHVzLCBpZiBhbm90aGVyIGNsYXNzIG1vZGlmaWVzCisqIHRoZSBlbnRyaWVzIGluIGZSdW5BcnJheSwgb3IgbW9kaWZpZXMgZlBvc0VuZCBvciBmTmVnU3RhcnQsIGl0IGlzIHJlc3BvbnNpYmxlIGZvcgorKiBjYWxsaW5nIHJ1blN0YXJ0c0NoYW5nZWQuCisqLworCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dDsKKworaW1wb3J0IGphdmEuaW8uRXh0ZXJuYWxpemFibGU7CitpbXBvcnQgamF2YS5pby5PYmplY3RJbnB1dDsKK2ltcG9ydCBqYXZhLmlvLk9iamVjdE91dHB1dDsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworCitmaW5hbCBjbGFzcyBSdW5BcnJheSBpbXBsZW1lbnRzIEV4dGVybmFsaXphYmxlIHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMjIzNTY5MzQ7CisKKyAgICBpbnRbXSBmUnVuU3RhcnQ7CisgICAgcHJpdmF0ZSBpbnQgZkN1clRleHRMZW5ndGg7CisgICAgaW50IGZQb3NFbmQsIGZOZWdTdGFydDsKKyAgICAKKyAgICB0cmFuc2llbnQgcHJpdmF0ZSBGYXN0SW50QmluYXJ5U2VhcmNoIGZQb3NTZWFyY2g7CisgICAgdHJhbnNpZW50IHByaXZhdGUgYm9vbGVhbiBmUG9zU2VhcmNoVmFsaWQ7CisgICAgdHJhbnNpZW50IHByaXZhdGUgRmFzdEludEJpbmFyeVNlYXJjaCBmTmVnU2VhcmNoOworICAgIHRyYW5zaWVudCBwcml2YXRlIGJvb2xlYW4gZk5lZ1NlYXJjaFZhbGlkOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENVUlJFTlRfVkVSU0lPTiA9IDE7CisKKyAgICBSdW5BcnJheShpbnQgaW5pdGlhbFNpemUsIGludCBjdXJUZXh0TGVuZ3RoKSB7CisKKyAgICAgICAgZlJ1blN0YXJ0ID0gbmV3IGludFtpbml0aWFsU2l6ZV07CisgICAgICAgIGZDdXJUZXh0TGVuZ3RoID0gY3VyVGV4dExlbmd0aDsKKyAgICAgICAgZlBvc0VuZCA9IC0xOworICAgICAgICBmTmVnU3RhcnQgPSBpbml0aWFsU2l6ZTsKKyAgICAgICAgCisgICAgICAgIGZQb3NTZWFyY2ggPSBuZXcgRmFzdEludEJpbmFyeVNlYXJjaChmUnVuU3RhcnQsIDAsIDEpOworICAgICAgICBmTmVnU2VhcmNoID0gbmV3IEZhc3RJbnRCaW5hcnlTZWFyY2goZlJ1blN0YXJ0LCAwLCAxKTsKKyAgICAgICAgZlBvc1NlYXJjaFZhbGlkID0gZk5lZ1NlYXJjaFZhbGlkID0gZmFsc2U7CisgICAgfQorCisgICAgLyoqCisgICAgICogTm90ZTogdGhpcyBjb25zdHJ1Y3RvciBpcyBPTkxZIGZvciB1c2UgYnkgdGhlIFNlcmlhbGl6YXRpb24KKyAgICAgKiBtZWNoYW5pc20uICBJdCBkb2VzIG5vdCBsZWF2ZSB0aGlzIG9iamVjdCBpbiBhIHZhbGlkIHN0YXRlIQorICAgICAqLworICAgIHB1YmxpYyBSdW5BcnJheSgpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB3cml0ZUV4dGVybmFsKE9iamVjdE91dHB1dCBvdXQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisKKyAgICAgICAgb3V0LndyaXRlSW50KENVUlJFTlRfVkVSU0lPTik7CisgICAgICAgIG91dC53cml0ZU9iamVjdChmUnVuU3RhcnQpOworICAgICAgICBvdXQud3JpdGVJbnQoZkN1clRleHRMZW5ndGgpOworICAgICAgICBvdXQud3JpdGVJbnQoZlBvc0VuZCk7CisgICAgICAgIG91dC53cml0ZUludChmTmVnU3RhcnQpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHJlYWRFeHRlcm5hbChPYmplY3RJbnB1dCBpbikgdGhyb3dzIElPRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGFzc05vdEZvdW5kRXhjZXB0aW9uIHsKKworICAgICAgICBpZiAoaW4ucmVhZEludCgpICE9IENVUlJFTlRfVkVSU0lPTikgeworICAgICAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCJJbnZhbGlkIHZlcnNpb24gb2YgUnVuQXJyYXkiKTsKKyAgICAgICAgfQorICAgICAgICBmUnVuU3RhcnQgPSAoaW50W10pIGluLnJlYWRPYmplY3QoKTsKKyAgICAgICAgZkN1clRleHRMZW5ndGggPSBpbi5yZWFkSW50KCk7CisgICAgICAgIGZQb3NFbmQgPSBpbi5yZWFkSW50KCk7CisgICAgICAgIGZOZWdTdGFydCA9IGluLnJlYWRJbnQoKTsKKyAgICAgICAgCisgICAgICAgIGZQb3NTZWFyY2ggPSBuZXcgRmFzdEludEJpbmFyeVNlYXJjaChmUnVuU3RhcnQsIDAsIDEpOworICAgICAgICBmTmVnU2VhcmNoID0gbmV3IEZhc3RJbnRCaW5hcnlTZWFyY2goZlJ1blN0YXJ0LCAwLCAxKTsKKyAgICAgICAgZlBvc1NlYXJjaFZhbGlkID0gZk5lZ1NlYXJjaFZhbGlkID0gZmFsc2U7CisgICAgfQorCisgICAgcHVibGljIGludCBnZXRDdXJUZXh0TGVuZ3RoKCkgeworCisgICAgICAgIHJldHVybiBmQ3VyVGV4dExlbmd0aDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRDdXJUZXh0TGVuZ3RoKGludCBjdXJUZXh0TGVuZ3RoKSB7CisKKyAgICAgICAgZkN1clRleHRMZW5ndGggPSBjdXJUZXh0TGVuZ3RoOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGFkZFRvQ3VyVGV4dExlbmd0aChpbnQgZGVsdGEpIHsKKworICAgICAgICBmQ3VyVGV4dExlbmd0aCArPSBkZWx0YTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBydW5TdGFydHNDaGFuZ2VkKCkgeworCisgICAgICAgIGZQb3NTZWFyY2hWYWxpZCA9IGZOZWdTZWFyY2hWYWxpZCA9IGZhbHNlOworICAgIH0KKworLyoqCisqIFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IHZhbGlkIHJ1bi4KKyovCisgICAgaW50IGxhc3RSdW4oKSB7CisKKyAgICAgICAgcmV0dXJuIChmTmVnU3RhcnQgPT0gZlJ1blN0YXJ0Lmxlbmd0aCk/IGZQb3NFbmQgOiBmUnVuU3RhcnQubGVuZ3RoLTE7CisgICAgfQorCisvKioKKyogUmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZSBydW4gYXJyYXkuICBSZXBsYWNlcyBvbGQgZkxlbmd0aCBtZW1iZXIuCisqLworICAgIGludCBnZXRBcnJheUxlbmd0aCgpIHsKKworICAgICAgICByZXR1cm4gZlJ1blN0YXJ0Lmxlbmd0aDsKKyAgICB9CisKKy8qKgorKiBTaGlmdHMgc3R5bGUgdGFibGUgc3VjaCB0aGF0IHRoZSBsYXN0IHBvc2l0aXZlIHJ1bgorKiBzdGFydHMgYmVmb3JlIHBvcy4KKyovCisgICAgdm9pZCBzaGlmdFRhYmxlVG8oaW50IHBvcykgeworCisgICAgICAgIGludCBvbGRQb3NFbmQgPSBmUG9zRW5kOworCisgICAgICAgIHdoaWxlIChmUG9zRW5kID49IDAgJiYgZlJ1blN0YXJ0W2ZQb3NFbmRdID49IHBvcykgeworCisgICAgICAgICAgICBmTmVnU3RhcnQtLTsKKyAgICAgICAgICAgIGZSdW5TdGFydFtmTmVnU3RhcnRdID0gZlJ1blN0YXJ0W2ZQb3NFbmRdIC0gZkN1clRleHRMZW5ndGg7CisgICAgICAgICAgICBmUG9zRW5kLS07CisKKyAgICAgICAgfQorCisgICAgICAgIHBvcyAtPSBmQ3VyVGV4dExlbmd0aDsKKworICAgICAgICB3aGlsZSAoZk5lZ1N0YXJ0PGZSdW5TdGFydC5sZW5ndGggJiYgZlJ1blN0YXJ0W2ZOZWdTdGFydF0gPCBwb3MpIHsKKworICAgICAgICAgICAgZlBvc0VuZCsrOworICAgICAgICAgICAgZlJ1blN0YXJ0W2ZQb3NFbmRdID0gZlJ1blN0YXJ0W2ZOZWdTdGFydF0gKyBmQ3VyVGV4dExlbmd0aDsKKyAgICAgICAgICAgIGZOZWdTdGFydCsrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG9sZFBvc0VuZCAhPSBmUG9zRW5kKSB7CisgICAgICAgICAgICBmUG9zU2VhcmNoVmFsaWQgPSBmTmVnU2VhcmNoVmFsaWQgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworLyoqCisqIFJldHVybnMgaW5kZXggb2Ygc3R5bGUgcnVuIGNvbnRhaW5pbmcgcG9zLiAgSWYgZmlyc3Qgc3R5bGUgcnVuIHN0YXJ0cyBiZWZvcmUKKyogcG9zLCAtMSBpcyByZXR1cm5lZC4gIElmIHBvcyBpcyBncmVhdGVyIHRoYW4gdGV4dCBsZW5ndGgsIGxhc3RydW4gaXMgcmV0dXJuZWQuCisqLworICAgIGludCBmaW5kUnVuQ29udGFpbmluZyhpbnQgcG9zKSB7CisKKyAgICAgICAgRmFzdEludEJpbmFyeVNlYXJjaCBzZWFyY2g7CisgICAgICAgIGZpbmFsIGludCBsZW5ndGggPSBmUnVuU3RhcnQubGVuZ3RoOworCisgICAgICAgIGlmIChmTmVnU3RhcnQgPCBsZW5ndGggJiYgKHBvcy1mQ3VyVGV4dExlbmd0aCA+PSBmUnVuU3RhcnRbZk5lZ1N0YXJ0XSkpIHsKKworICAgICAgICAgICAgcG9zIC09IGZDdXJUZXh0TGVuZ3RoOworCisgICAgICAgICAgICBpZiAoIWZOZWdTZWFyY2hWYWxpZCkgeworICAgICAgICAgICAgICAgIGZOZWdTZWFyY2guc2V0RGF0YShmUnVuU3RhcnQsIGZOZWdTdGFydCwgbGVuZ3RoLWZOZWdTdGFydCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzZWFyY2ggPSBmTmVnU2VhcmNoOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGZQb3NFbmQgPj0gMCkgeworCisgICAgICAgICAgICBpZiAoIWZQb3NTZWFyY2hWYWxpZCkgeworICAgICAgICAgICAgICAgIGZQb3NTZWFyY2guc2V0RGF0YShmUnVuU3RhcnQsIDAsIGZQb3NFbmQrMSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzZWFyY2ggPSBmUG9zU2VhcmNoOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiAtMTsKKworICAgICAgICBpbnQgcnVuID0gc2VhcmNoLmZpbmRJbmRleChwb3MpOworCisgICAgICAgIHJldHVybiBydW47CisgICAgfQorCisgICAgaW50IGdldExvZ2ljYWxSdW5TdGFydChpbnQgcnVuKSB7CisKKyAgICAgICAgaWYgKHJ1biA9PSAtMSkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAocnVuID09IGZSdW5TdGFydC5sZW5ndGgpIHsKKyAgICAgICAgICAgIHJldHVybiBmQ3VyVGV4dExlbmd0aDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChydW4gPD0gZlBvc0VuZCkgeworICAgICAgICAgICAgICAgIHJldHVybiBmUnVuU3RhcnRbcnVuXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKHJ1biA+PSBmTmVnU3RhcnQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZlJ1blN0YXJ0W3J1bl0gKyBmQ3VyVGV4dExlbmd0aDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIklsbGVnYWwgcnVuIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKy8qKgorKiBJbmNyZWFzZXMgc2l6ZSBvZiBydW4gdGFibGUuICBDdXJyZW50IGltcGxlbWVudGF0aW9uIGRvdWJsZXMgdGhlIHJ1biB0YWJsZSdzIHNpemUuCisqLworICAgIHZvaWQgZXhwYW5kUnVuVGFibGUoKSB7CisKKyAgICAgICAgcmVzaXplUnVuVGFibGUoZlJ1blN0YXJ0Lmxlbmd0aCAqIDIpOworICAgIH0KKworLyoqCisqIFJldHVybiB0aGUgbWluaW11bSBudW1iZXIgb2YgZWxlbWVudHMgcG9zc2libGUgaW4gZlJ1blN0YXJ0LgorKi8KKyAgICBwcml2YXRlIGludCBnZXRNaW5TaXplKCkgeworCisgICAgICAgIHJldHVybiBNYXRoLm1heChmUG9zRW5kICsgKGZSdW5TdGFydC5sZW5ndGgtZk5lZ1N0YXJ0KSArIDEsIDEpOworICAgIH0KKworICAgIHZvaWQgY29tcHJlc3MoKSB7CisKKyAgICAgICAgaW50IG1pblNpemUgPSBnZXRNaW5TaXplKCk7CisgICAgICAgIGlmIChmUnVuU3RhcnQubGVuZ3RoID4gbWluU2l6ZSkgeworICAgICAgICAgICAgcmVzaXplUnVuVGFibGUobWluU2l6ZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgcmVzaXplUnVuVGFibGUoaW50IG5ld1NpemUpIHsKKworICAgICAgICBpZiAobmV3U2l6ZSA8IGdldE1pblNpemUoKSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiQXR0ZW1wdCB0byBtYWtlIFJ1bkFycmF5IHRvbyBzbWFsbC4iKTsKKyAgICAgICAgfQorCisgICAgICAgIGZpbmFsIGludCBvbGRMZW5ndGggPSBmUnVuU3RhcnQubGVuZ3RoOworCisgICAgICAgIGludCBuZXdSdW5TdGFydFtdID0gbmV3IGludFtuZXdTaXplXTsKKyAgICAgICAgU3lzdGVtLmFycmF5Y29weShmUnVuU3RhcnQsIDAsIG5ld1J1blN0YXJ0LCAwLCBmUG9zRW5kKzEpOworICAgICAgICBpbnQgbmV3TmVnU3RhcnQgPSBuZXdSdW5TdGFydC5sZW5ndGggLSAob2xkTGVuZ3RoLWZOZWdTdGFydCk7CisgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoZlJ1blN0YXJ0LCBmTmVnU3RhcnQsIG5ld1J1blN0YXJ0LCBuZXdOZWdTdGFydCwgKG9sZExlbmd0aC1mTmVnU3RhcnQpKTsKKworICAgICAgICBmTmVnU3RhcnQgPSBuZXdOZWdTdGFydDsKKyAgICAgICAgZlJ1blN0YXJ0ID0gbmV3UnVuU3RhcnQ7CisKKyAgICAgICAgZlBvc1NlYXJjaFZhbGlkID0gZk5lZ1NlYXJjaFZhbGlkID0gZmFsc2U7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvc3R5bGVkdGV4dC9TdGFuZGFyZFRhYlJ1bGVyLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC9zdHlsZWR0ZXh0L1N0YW5kYXJkVGFiUnVsZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lMGI1ODNmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvc3R5bGVkdGV4dC9TdGFuZGFyZFRhYlJ1bGVyLmphdmEKQEAgLTAsMCArMSwzNzQgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFN0YW5kYXJkVGFiUnVsZXIuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo0NToxMCAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQ7CisKK2ltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOworCitpbXBvcnQgamF2YS5pby5FeHRlcm5hbGl6YWJsZTsKK2ltcG9ydCBqYXZhLmlvLk9iamVjdElucHV0OworaW1wb3J0IGphdmEuaW8uT2JqZWN0T3V0cHV0OworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CisKKy8qKgorICogVGhpcyBjbGFzcyBpcyBhIHN0YW5kYXJkIGltcGxlbWVudGF0aW9uIG9mIE1UYWJSdWxlci4KKyAqIEl0IGNhbiBoYXZlIGEgZmluaXRlIG51bWJlciBvZiBjbGllbnQtc3BlY2lmaWVkIFRhYlN0b3BzLiAgQWZ0ZXIKKyAqIHRoZSBjbGllbnQtc3BlY2lmaWVkIFRhYlN0b3BzLCBhbGwgVGFiU3RvcHMgaGF2ZSB0eXBlCisgKiA8Y29kZT5UYWJTdG9wLmtBdXRvPC9jb2RlPiBhbmQgYXJlIGF0IHRoZSBhdXRvc3BhY2UgaW50ZXJ2YWxzLgorICogQHNlZSBUYWJTdG9wCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBTdGFuZGFyZFRhYlJ1bGVyIGV4dGVuZHMgTVRhYlJ1bGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBsZW1lbnRzIEV4dGVybmFsaXphYmxlCit7CisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ1VSUkVOVF9WRVJTSU9OID0gMTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAyMjM1NjkzNDsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFRhYlN0b3AgQVVUT19aRVJPID0gbmV3IFRhYlN0b3AoMCwgVGFiU3RvcC5rQXV0byk7CisKKyAgICBwcml2YXRlIFRhYlN0b3BbXSBmVGFicyA9IG51bGw7CisgICAgcHJpdmF0ZSBpbnQgZkF1dG9TcGFjaW5nID0gMzY7IC8vIGV2ZXJ5IDEvMiBpbmNoLgorCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgU3RhbmRhcmRUYWJSdWxlciB3aXRoIG9ubHkgYXV0byB0YWJzLCB3aXRoIHNwYWNpbmcgb2YgMzYuCisgICAgICovCisgICAgcHVibGljIFN0YW5kYXJkVGFiUnVsZXIoKQorICAgIHsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSBTdGFuZGFyZFRhYlJ1bGVyIHdpdGggb25seSBhdXRvIHRhYnMsIHdpdGggdGhlCisgICAgICogZ2l2ZW4gYXV0b1NwYWNpbmcuCisgICAgICogQHBhcmFtIGF1dG9TcGFjaW5nIHRoZSBhdXRvU3BhY2luZyBmb3IgdGhpcyB0YWIgcnVsZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RhbmRhcmRUYWJSdWxlcihpbnQgYXV0b1NwYWNpbmcpCisgICAgeworICAgICAgICBmQXV0b1NwYWNpbmcgPSBhdXRvU3BhY2luZzsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSBTdGFuZGFyZFRhYlJ1bGVyLiAgVGhlIGZpcnN0IFRhYlN0b3BzIG9uIHRoZSBydWxlciB3aWxsIGJlCisgICAgICogdGhlIFRhYlN0b3BzIGluIHRoZSA8Y29kZT50YWJzPC9jb2RlPiBhcnJheS4gIEFmdGVyIHRoZXNlIHRhYnMgYWxsCisgICAgICogdGFicyBhcmUgYXV0byB0YWJzLgorICAgICAqIEBwYXJhbSB0YWJzIGFuIGFycmF5IG9mIFRhYlN0b3BzLiAgVGhlIFRhYlN0b3BzIGluIHRoZSBhcnJheSBtdXN0CisgICAgICogICAgYmUgaW4gc3RyaWN0bHkgaW5jcmVhc2luZyBvcmRlciAob2YgcG9zaXRpb25zKSwgYW5kIGNhbm5vdCBoYXZlCisgICAgICogICAgdHlwZSA8Y29kZT5UYWJTdG9wLmtBdXRvPC9jb2RlPi4KKyAgICAgKiBAcGFyYW0gYXV0b1NwYWNpbmcgdGhlIGF1dG9TcGFjaW5nIGludGVydmFsIHRvIHVzZSBhZnRlciB0aGUgbGFzdAorICAgICAqICAgIGNsaWVudC1zcGVjaWZpZWQgdGFiLgorICAgICAqLworICAgIHB1YmxpYyBTdGFuZGFyZFRhYlJ1bGVyKFRhYlN0b3BbXSB0YWJzLCBpbnQgYXV0b1NwYWNpbmcpCisgICAgeworICAgICAgICBpZiAodGFicy5sZW5ndGggPiAwKSB7CisgICAgICAgICAgICB2YWxpZGF0ZVRhYkFycmF5KHRhYnMpOworICAgICAgICAgICAgZlRhYnMgPSAoVGFiU3RvcFtdKSB0YWJzLmNsb25lKCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBmVGFicyA9IG51bGw7CisgICAgICAgIH0KKyAgICAgICAgZkF1dG9TcGFjaW5nID0gYXV0b1NwYWNpbmc7CisgICAgfQorCisgICAgLyoqIFRhYnMgYXMgcHJvdmlkZWQsIHRoZW4gYXV0b1NwYWNpbmcgYWZ0ZXIgdGhlIGxhc3QgdGFiIHRvIGV0ZXJuaXR5LiAgVXNlIHRoaXMgY29uc3RydWN0b3Igd2hlbgorICAgICAgICBtdW5naW5nIGEgcnVsZXIsIGl0IGRvZXMgbm8gdmFsaWRhdGlvbiBvbiB0aGUgdGFicyBpbiB0aGUgdmVjdG9yLiBWZWN0b3IgbWF5IG5vdCBiZSBudWxsLiAqLworCisgICAgLypwdWJsaWMqLyBTdGFuZGFyZFRhYlJ1bGVyKFZlY3RvciB2LCBpbnQgYXV0b1NwYWNpbmcpCisgICAgeworICAgICAgICBmVGFicyA9IHRhYkFycmF5RnJvbVZlY3Rvcih2KTsKKyAgICAgICAgZkF1dG9TcGFjaW5nID0gYXV0b1NwYWNpbmc7CisgICAgfQorCisgICAgLyoqIENvbnN0cnVjdCBmcm9tIGFub3RoZXIgcnVsZXIuIE5vIHZhbGlkYXRpb24uIFJ1bGVyIG1heSBub3QgYmUgbnVsbC4gKi8KKworICAgIC8qcHVibGljKi8gU3RhbmRhcmRUYWJSdWxlcihNVGFiUnVsZXIgcnVsZXIpCisgICAgeworICAgICAgICBpZiAocnVsZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigicnVsZXIgbWF5IG5vdCBiZSBudWxsIik7CisgICAgICAgIH0KKworICAgICAgICBmVGFicyA9IHRhYkFycmF5RnJvbVZlY3Rvcih2ZWN0b3JGcm9tVGFiUnVsZXIocnVsZXIpKTsKKyAgICAgICAgZkF1dG9TcGFjaW5nID0gcnVsZXIuYXV0b1NwYWNpbmcoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCByZWFkRXh0ZXJuYWwoT2JqZWN0SW5wdXQgaW4pIHRocm93cyBJT0V4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiB7CisKKyAgICAgICAgaW50IHZlcnNpb24gPSBpbi5yZWFkSW50KCk7CisgICAgICAgIGlmICh2ZXJzaW9uICE9IENVUlJFTlRfVkVSU0lPTikgeworICAgICAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCJJbnZhbGlkIHZlcnNpb24gb2YgU3R5bGVkVGV4dDogIiArIHZlcnNpb24pOworICAgICAgICB9CisgICAgICAgIGZUYWJzID0gKFRhYlN0b3BbXSkgaW4ucmVhZE9iamVjdCgpOworICAgICAgICBmQXV0b1NwYWNpbmcgPSBpbi5yZWFkSW50KCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgd3JpdGVFeHRlcm5hbChPYmplY3RPdXRwdXQgb3V0KSB0aHJvd3MgSU9FeGNlcHRpb24geworCisgICAgICAgIG91dC53cml0ZUludChDVVJSRU5UX1ZFUlNJT04pOworICAgICAgICBvdXQud3JpdGVPYmplY3QoZlRhYnMpOworICAgICAgICBvdXQud3JpdGVJbnQoZkF1dG9TcGFjaW5nKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gZmlyc3QgdGFiIGluIHRoZSBydWxlci4gIElmIGFuIGF1dG9UYWIsIGl0IGlzIGF0IHBvc2l0aW9uIHplcm8sIGFuZAorICAgICAqIGFsbCBzdWJzZXF1ZW50IHRhYnMgd2lsbCBiZSBhdXRvdGFicyBhdCBhdXRvU3BhY2luZyBpbnRlcnZhbHMuCisgICAgICovCisgICAgcHVibGljIFRhYlN0b3AgZmlyc3RUYWIoKQorICAgIHsKKyAgICAgICAgaWYgKGZUYWJzICE9IG51bGwgJiYgZlRhYnMubGVuZ3RoID4gMCkgeworICAgICAgICAgICAgcmV0dXJuIGZUYWJzWzBdOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIEFVVE9fWkVSTzsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGZpcnN0IHRhYiBpbiB0aGUgcnVsZXIgd2l0aCBmUG9zaXRpb24gPiBwb3NpdGlvbi4gIElmIGl0IGlzIGFuCisgICAgICogYXV0b3RhYiwgaXQgaXMgYXQgYW4gaW5jcmVtZW50IG9mIGF1dG9TcGFjaW5nLCBhbmQgYWxsIHN1YnNlcXVlbnQgdGFicyB3aWxsIGJlCisgICAgICogYXV0b3RhYnMgYXQgYXV0b1NwYWNpbmcgaW50ZXJ2YWxzLgorICAgICAqIEBwYXJhbSBwb3NpdGlvbiB0aGUgcG9zaXRpb24gb2YgdGhlIFRhYlN0b3AgcmV0dXJuZWQgd2lsbCBiZSBncmVhdGVyIHRoYW4gdGhpcyBwYXJhbWV0ZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgVGFiU3RvcCBuZXh0VGFiKGludCBwb3NpdGlvbikKKyAgICB7CisgICAgICAgIGlmIChmVGFicyAhPSBudWxsKSB7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZUYWJzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKHBvc2l0aW9uIDwgZlRhYnNbaV0uZ2V0UG9zaXRpb24oKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZUYWJzW2ldOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKHBvc2l0aW9uID49IDQwMDApIHsgLy8gZGVidWc6IHNhbml0eSBjaGVjaworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJhdXRvIHRhYiBwYXN0IDQwMDAiKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBuZXcgVGFiU3RvcCgoKHBvc2l0aW9uIC8gZkF1dG9TcGFjaW5nKSArIDEpICogZkF1dG9TcGFjaW5nLCBUYWJTdG9wLmtBdXRvKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGludGVydmFsIGZvciBhdXRvdGFicy4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGF1dG9TcGFjaW5nKCkKKyAgICB7CisgICAgICAgIHJldHVybiBmQXV0b1NwYWNpbmc7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29tcGFyZSB0aGlzIHRvIGFub3RoZXIgT2JqZWN0LiBSZXR1cm5zIHRydWUgaWYgdGhlIG9iamVjdAorICAgICAqIGlzIGFuIE1UYWJSdWxlciB3aXRoIHRoZSBzYW1lIGF1dG9TcGFjaW5nIGFuZCB0YWJzLgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3QgbykKKyAgICB7CisgICAgICAgIGlmIChvID09IHRoaXMpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG8gPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBNVGFiUnVsZXIgcmhzOworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmhzID0gKE1UYWJSdWxlcilvOworICAgICAgICB9CisgICAgICAgIGNhdGNoKENsYXNzQ2FzdEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZkF1dG9TcGFjaW5nICE9IHJocy5hdXRvU3BhY2luZygpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIFRhYlN0b3AgcmhzVGFiID0gcmhzLmZpcnN0VGFiKCk7CisKKyAgICAgICAgaWYgKGZUYWJzICE9IG51bGwpIHsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZlRhYnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWZUYWJzW2ldLmVxdWFscyhyaHNUYWIpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgICAgICByaHNUYWIgPSByaHMubmV4dFRhYihyaHNUYWIuZ2V0UG9zaXRpb24oKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcmhzVGFiLmdldFR5cGUoKSA9PSBUYWJTdG9wLmtBdXRvOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBkZWJ1ZyBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIHRhYiBydWxlci4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkKKyAgICB7CisgICAgICAgIFN0cmluZ0J1ZmZlciBidWZmZXIgPSBuZXcgU3RyaW5nQnVmZmVyKHN1cGVyLnRvU3RyaW5nKCkpOworICAgICAgICBidWZmZXIuYXBwZW5kKCIgYXV0bzogIik7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQoSW50ZWdlci50b1N0cmluZyhmQXV0b1NwYWNpbmcpKTsKKworICAgICAgICBpZiAoZlRhYnMgIT0gbnVsbCkgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmVGFicy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoZlRhYnNbaV0udG9TdHJpbmcoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gYnVmZmVyLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgLyoqIFV0aWxpdHkgdG8gY29udmVydCBhIHZlY3RvciBvZiB0YWJzIHRvIGFuIGFycmF5LiAqLworCisgICAgcHJpdmF0ZSBzdGF0aWMgVGFiU3RvcFtdIHRhYkFycmF5RnJvbVZlY3RvcihWZWN0b3IgdikKKyAgICB7CisgICAgICAgIGludCBjb3VudCA9IHYuc2l6ZSgpOworICAgICAgICBUYWJTdG9wW10gdGFicyA9IG5ldyBUYWJTdG9wW2NvdW50XTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgICAgICB0YWJzW2ldID0gKFRhYlN0b3Apdi5lbGVtZW50QXQoaSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdGFiczsKKyAgICB9CisKKyAgICAvKiogVXRpbGl0eSB0byBjb252ZXJ0IGEgcnVsZXIgdG8gYSB2ZWN0b3Igb2YgdGFicywgZm9yIG11bmdpbmcuICovCisKKyAgICBwcml2YXRlIHN0YXRpYyBWZWN0b3IgdmVjdG9yRnJvbVRhYlJ1bGVyKE1UYWJSdWxlciBydWxlcikKKyAgICB7CisgICAgICAgIFZlY3RvciB2ID0gbmV3IFZlY3RvcigpOworICAgICAgICBmb3IgKFRhYlN0b3AgdGFiID0gcnVsZXIuZmlyc3RUYWIoKTsgdGFiICE9IG51bGwgJiYgdGFiLmdldFR5cGUoKSAhPSBUYWJTdG9wLmtBdXRvOyB0YWIgPSBydWxlci5uZXh0VGFiKHRhYi5nZXRQb3NpdGlvbigpKSkgeworICAgICAgICAgICAgdi5hZGRFbGVtZW50KHRhYik7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdjsKKyAgICB9CisKKyAgICAvKiogVXRpbGl0eSB0byB2YWxpZGF0ZSBhbiBhcnJheSBvZiB0YWJzLiAgVGhlIGFycmF5IG11c3Qgbm90IGJlIG51bGwsIG11c3Qgbm90IGNvbnRhaW4gbnVsbAorICAgICAgICBlbnRyaWVzLCBtdXN0IG5vdCBiZSBrQXV0bywgYW5kIHBvc2l0aW9ucyBtdXN0IGluIGluY3JlYXNpbmcgb3JkZXIuICovCisKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIHZhbGlkYXRlVGFiQXJyYXkoVGFiU3RvcFtdIHRhYnMpCisgICAgeworICAgICAgICBpbnQgcG9zID0gSW50ZWdlci5NSU5fVkFMVUU7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGFicy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgaWYgKHRhYnNbaV0uZ2V0VHlwZSgpID09IFRhYlN0b3Aua0F1dG8pIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJjYW4ndCBleHBsaWNpdGx5IHNwZWNpZnkgYW4gYXV0byB0YWIuIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbnQgbmV4dHBvcyA9IHRhYnNbaV0uZ2V0UG9zaXRpb24oKTsKKyAgICAgICAgICAgIGlmIChuZXh0cG9zIDw9IHBvcykgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oInRhYiBwb3NpdGlvbnMgbXVzdCBiZSBpbiBpbmNyZWFzaW5nIG9yZGVyLiIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcG9zID0gbmV4dHBvczsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhIHRhYiBydWxlciBpZGVudGljYWwgdG8gdGhlIGdpdmVuIHJ1bGVyLCBleGNlcHQgd2l0aCB0aGUKKyAgICAgKiBnaXZlbiB0YWIgYWRkZWQuCisgICAgICogQHBhcmFtIHJ1bGVyIHRoZSBvcmlnaW5hbCBydWxlci4gIFRoZSBNVGFiUnVsZXIgd2lsbCBiZSB0aGUgc2FtZSBhcworICAgICAqICAgdGhpcyBleGNlcHQgZm9yIHRoZSBhZGRpdGlvbmFsIHRhYi4gIDxjb2RlPnJ1bGVyPC9jb2RlPiBpcyBub3QgbW9kaWZpZWQuCisgICAgICogQHBhcmFtIHRhYlRvQWRkIHRoZSB0YWIgdG8gYWRkIHRvIHRoZSBuZXcgdGFiIHJ1bGVyCisgICAgICogQHJldHVybiBhbiBNVGFiUnVsZXIgcmVzdWx0aW5nIGZyb20gdGhpcyBvcGVyYXRpb24KKyAgICAgKi8KKyAgICAvKnB1YmxpYyovIHN0YXRpYyBNVGFiUnVsZXIgYWRkVGFiVG9SdWxlcihNVGFiUnVsZXIgcnVsZXIsIFRhYlN0b3AgdGFiVG9BZGQpCisgICAgeworICAgICAgICBpZiAocnVsZXIgPT0gbnVsbCB8fCB0YWJUb0FkZCA9PSBudWxsKQorICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigicnVsZXIgYW5kIHRhYlRvQWRkIG1heSBub3QgYmUgbnVsbCIpOworCisgICAgICAgIFZlY3RvciB2ZWN0b3IgPSBuZXcgVmVjdG9yKCk7CisKKyAgICAgICAgaW50IHBvcyA9IDA7CisgICAgICAgIGJvb2xlYW4gYWRkZWQgPSBmYWxzZTsKKyAgICAgICAgZm9yIChUYWJTdG9wIHRhYiA9IHJ1bGVyLmZpcnN0VGFiKCk7IHRhYi5nZXRUeXBlKCkgIT0gVGFiU3RvcC5rQXV0bzsgdGFiID0gcnVsZXIubmV4dFRhYihwb3MpKSB7CisgICAgICAgICAgICBwb3MgPSB0YWIuZ2V0UG9zaXRpb24oKTsKKworICAgICAgICAgICAgaWYgKCFhZGRlZCAmJiBwb3MgPj0gdGFiVG9BZGQuZ2V0UG9zaXRpb24oKSkgeworICAgICAgICAgICAgICAgIGlmIChwb3MgPT0gdGFiVG9BZGQuZ2V0UG9zaXRpb24oKSkKKyAgICAgICAgICAgICAgICAgICAgdGFiID0gbnVsbDsKKyAgICAgICAgICAgICAgICB2ZWN0b3IuYWRkRWxlbWVudCh0YWJUb0FkZCk7CisgICAgICAgICAgICAgICAgYWRkZWQgPSB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodGFiICE9IG51bGwpCisgICAgICAgICAgICAgICAgdmVjdG9yLmFkZEVsZW1lbnQodGFiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWFkZGVkKQorICAgICAgICAgICAgdmVjdG9yLmFkZEVsZW1lbnQodGFiVG9BZGQpOworCisgICAgICAgIHJldHVybiBuZXcgU3RhbmRhcmRUYWJSdWxlcih2ZWN0b3IsIHJ1bGVyLmF1dG9TcGFjaW5nKCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhIHRhYiBydWxlciBpZGVudGljYWwgdG8gdGhlIGdpdmVuIHJ1bGVyLCBleGNlcHQgd2l0aCB0aGUKKyAgICAgKiBnaXZlbiB0YWIgcmVtb3ZlZC4KKyAgICAgKiBAcGFyYW0gcnVsZXIgdGhlIG9yaWdpbmFsIHJ1bGVyLiAgVGhlIE1UYWJSdWxlciB3aWxsIGJlIHRoZSBzYW1lIGFzCisgICAgICogICB0aGlzIGV4Y2VwdCBmb3IgdGhlIHJlbW92ZWQgdGFiLiAgPGNvZGU+cnVsZXI8L2NvZGU+IGlzIG5vdCBtb2RpZmllZC4KKyAgICAgKiBAcGFyYW0gcG9zaXRpb24gdGhlIHBvc2l0aW9uIG9mIHRoZSB0YWIgdG8gcmVtb3ZlIGZyb20gdGhlIG5ldyB0YWIgcnVsZXIKKyAgICAgKiBAcmV0dXJuIGFuIE1UYWJSdWxlciByZXN1bHRpbmcgZnJvbSB0aGlzIG9wZXJhdGlvbgorICAgICAqLworICAgIC8qcHVibGljKi8gc3RhdGljIE1UYWJSdWxlciByZW1vdmVUYWJGcm9tUnVsZXIoTVRhYlJ1bGVyIHJ1bGVyLCBpbnQgcG9zaXRpb24pCisgICAgeworICAgICAgICBpZiAocnVsZXIgPT0gbnVsbCkKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oInJ1bGVyIG1heSBub3QgYmUgbnVsbCIpOworCisgICAgICAgIFZlY3RvciB2ZWN0b3IgPSBuZXcgVmVjdG9yKCk7CisKKyAgICAgICAgaW50IHBvcyA9IDA7CisgICAgICAgIGJvb2xlYW4gcmVtb3ZlZCA9IGZhbHNlOworICAgICAgICBmb3IgKFRhYlN0b3AgdGFiID0gcnVsZXIuZmlyc3RUYWIoKTsgdGFiLmdldFR5cGUoKSAhPSBUYWJTdG9wLmtBdXRvOyB0YWIgPSBydWxlci5uZXh0VGFiKHBvcykpIHsKKyAgICAgICAgICAgIHBvcyA9IHRhYi5nZXRQb3NpdGlvbigpOworCisgICAgICAgICAgICBpZiAoIXJlbW92ZWQgJiYgcG9zID49IHBvc2l0aW9uKSB7CisgICAgICAgICAgICAgICAgaWYgKHBvcyA9PSBwb3NpdGlvbikgeworICAgICAgICAgICAgICAgICAgICByZW1vdmVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7IC8vIHNraXAgdGhpcyB0YWIgYW5kIGNvbnRpbnVlIHdpdGggdGhlIHJlbWFpbmRlcgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsgLy8gd2UgZGlkbid0IHJlbW92ZSBhIHRhYiwgYnV0IHNraXBwZWQgcG9zaXRpb24sIHNvIGRvbid0IGJvdGhlciB3aXRoIHRoZSByZXN0CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZlY3Rvci5hZGRFbGVtZW50KHRhYik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFyZW1vdmVkKSAvLyBubyBjaGFuZ2UKKyAgICAgICAgICAgIHJldHVybiBydWxlcjsKKworICAgICAgICBpZiAodmVjdG9yLnNpemUoKSA9PSAwKQorICAgICAgICAgICAgcmV0dXJuIG5ldyBTdGFuZGFyZFRhYlJ1bGVyKHJ1bGVyLmF1dG9TcGFjaW5nKCkpOworCisgICAgICAgIHJldHVybiBuZXcgU3RhbmRhcmRUYWJSdWxlcih2ZWN0b3IsIHJ1bGVyLmF1dG9TcGFjaW5nKCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhIHRhYiBydWxlciBpZGVudGljYWwgdG8gdGhlIGdpdmVuIHJ1bGVyLCBleGNlcHQgd2l0aCB0aGUKKyAgICAgKiB0YWIgYXQgcG9zaXRpb24gPGNvZGU+ZnJvbVBvc2l0aW9uPC9jb2RlPiBtb3ZlZCB0byBwb3NpdGlvbgorICAgICAqIDxjb2RlPnRvUG9zaXRpb248L2NvZGU+LgorICAgICAqIEBwYXJhbSBydWxlciB0aGUgb3JpZ2luYWwgcnVsZXIuICBUaGUgTVRhYlJ1bGVyIHdpbGwgYmUgdGhlIHNhbWUgYXMKKyAgICAgKiAgIHRoaXMgZXhjZXB0IGZvciB0aGUgbW92ZWQgdGFiLiAgPGNvZGU+cnVsZXI8L2NvZGU+IGlzIG5vdCBtb2RpZmllZC4KKyAgICAgKiBAcGFyYW0gZnJvbVBvc2l0aW9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgdGFiIHRvIG1vdmUKKyAgICAgKiBAcGFyYW0gdG9Qb3NpdGlvbiB0aGUgbmV3IHBvc2l0aW9uIG9mIHRoZSB0YWIKKyAgICAgKiBAcmV0dXJuIGFuIE1UYWJSdWxlciByZXN1bHRpbmcgZnJvbSB0aGlzIG9wZXJhdGlvbgorICAgICAqLworICAgIC8qcHVibGljKi8gc3RhdGljIE1UYWJSdWxlciBtb3ZlVGFiT25SdWxlcihNVGFiUnVsZXIgcnVsZXIsIGludCBmcm9tUG9zaXRpb24sIGludCB0b1Bvc2l0aW9uKQorICAgIHsKKyAgICAgICAgaWYgKHJ1bGVyID09IG51bGwpCisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJydWxlciBtYXkgbm90IGJlIG51bGwiKTsKKworICAgICAgICBWZWN0b3IgdmVjdG9yID0gbmV3IFZlY3RvcigpOworCisgICAgICAgIGludCBwb3MgPSAwOworICAgICAgICBib29sZWFuIG1vdmVkID0gZmFsc2U7CisgICAgICAgIGZvciAoVGFiU3RvcCB0YWIgPSBydWxlci5maXJzdFRhYigpOyB0YWIuZ2V0VHlwZSgpICE9IFRhYlN0b3Aua0F1dG87IHRhYiA9IHJ1bGVyLm5leHRUYWIocG9zKSkgeworICAgICAgICAgICAgcG9zID0gdGFiLmdldFBvc2l0aW9uKCk7CisKKyAgICAgICAgICAgIGlmICghbW92ZWQgJiYgcG9zID09IGZyb21Qb3NpdGlvbikgeworICAgICAgICAgICAgICAgIG1vdmVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB0YWIgPSBuZXcgVGFiU3RvcCh0b1Bvc2l0aW9uLCB0YWIuZ2V0VHlwZSgpKTsgLy8gY29weSBpdAorICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2ZWN0b3IuYWRkRWxlbWVudCh0YWIpOworICAgICAgICB9CisgICAgICAgIGlmICghbW92ZWQpIC8vIG5vIGNoYW5nZQorICAgICAgICAgICAgcmV0dXJuIHJ1bGVyOworCisgICAgICAgIHJldHVybiBuZXcgU3RhbmRhcmRUYWJSdWxlcih2ZWN0b3IsIHJ1bGVyLmF1dG9TcGFjaW5nKCkpOworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvc3R5bGVkdGV4dC9TdHlsZUJ1ZmZlci5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvc3R5bGVkdGV4dC9TdHlsZUJ1ZmZlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmE2MmFiZTQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC9zdHlsZWR0ZXh0L1N0eWxlQnVmZmVyLmphdmEKQEAgLTAsMCArMSw2NzEgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFN0eWxlQnVmZmVyLmphdmEsdiAkICRSZXZpc2lvbjogMS4yICQgJERhdGU6IDIwMDIvMDIvMTYgMDM6MDY6MzYgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0OworCitpbXBvcnQgamF2YS5pby5FeHRlcm5hbGl6YWJsZTsKK2ltcG9ydCBqYXZhLmlvLk9iamVjdElucHV0OworaW1wb3J0IGphdmEuaW8uT2JqZWN0T3V0cHV0OworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRsYXlvdXQuYXR0cmlidXRlcy5BdHRyaWJ1dGVNYXA7CisKKy8qCisgICAgOC8yLzk2CisgICAgICAgIEFkZGVkIHNldEl0ZXJhdG9yVXNpbmdSdW4gbWV0aG9kCisKKyAgICA4LzUvOTYKKyAgICAgICAgTm8gbG9uZ2VyIGhhcyB0byBiZSBjb25zdHJ1Y3RlZCB3aXRoIGFuIE1UZXh0LgorCisgICAgOC84Lzk2CisgICAgICAgIEFkZGVkIHJlcGxhY2UgbWV0aG9kLCB3aGljaCByZWFkcyBzdHlsZXMgZnJvbSBhIFN0eWxlUnVuSXRlcmF0b3IuCisgICAgICAgIEFsc28sIGFkZGVkIGEgY29uc3RydWN0b3Igd2hpY2ggdGFrZXMgYSBTdHlsZVJ1bkl0ZXJhdG9yLgorICAgICAgICBUaGVzZSBtZXRob2RzIGFyZSBmb3IgY29weS9wYXN0ZSBzdXBwb3J0LgorICAgIDgvMTYvOTYKKyAgICAgICAgU3R5bGVCdWZmZXIgbm93IHRha2VzIE1Db25zdFRleHQgaW5zdGVhZCBvZiBNVGV4dCB3aGVyZSBwb3NzaWJsZS4KKworICAgIDEwLzIzLzk2CisgICAgICAgIFNvbWUgb2xkIGNvbW1lbnRlZC1vdXQgY29kZSByZW1vdmVkIGZvciBhZXN0aGV0aWMgcmVhc29ucy4KKworICAgIDcvMzEvOTggU3dpdGNoZWQgdG8gQXR0cmlidXRlTWFwCisqLworCisvKioKKyogU3R5bGVCdWZmZXIgaW1wbGVtZW50cyA8dHQ+TVN0eWxlQnVmZmVyPC90dD4uICBJdCBtYWludGFpbnMKKyogPHR0PkF0dHJpYnV0ZU1hcDwvdHQ+IG9iamVjdHMgdG8gYXBwbHkgdG8gdGhlIHRleHQgaW4gYW4gPHR0Pk1UZXh0PC90dD4gb2JqZWN0LAorKiBhbmQgdGhlCisqIGludGVydmFscyBvbiB3aGljaCB0aG9zZSBzdHlsZXMgYXBwbHkuCisqIDxwPgorKiBTdHlsZUJ1ZmZlciBzdG9yZXMgdGhlIGludGVydmFscyBvbiB3aGljaCBzdHlsZXMgYXBwbHkgaW4gYSA8dHQ+UnVuQXJyYXk8L3R0PgorKiBvYmplY3QgKHNlZSA8dHQ+UnVuQXJyYXk8L3R0PiBmb3IgbW9yZSBpbmZvcm1hdGlvbikuICBUaGUgc3R5bGVzIGFyZSBzdG9yZWQgaW4KKyogYW4gYXJyYXkgb2YgPHR0PkF0dHJpYnV0ZU1hcDwvdHQ+IG9iamVjdHMuCisqIDxwPgorKiA8dHQ+UnVuQXJyYXk8L3R0PiBtYWludGFpbnMgYW4gYXJyYXkgb2YgaW50ZWdlcnMgd2hpY2ggcmVwcmVzZW50IG9mZnNldHMgaW50byB0ZXh0LgorKiBUaGUgYXJyYXkgaGFzIGEgInBvc2l0aXZlIiByZWdpb24gaW4gd2hpY2ggb2Zmc2V0cyBhcmUgZ2l2ZW4gYXMgcG9zaXRpdmUgZGlzdGFuY2VzCisqIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSB0ZXh0LCBhbmQgYSAibmVnYXRpdmUiIHJlZ2lvbiBpbiB3aGljaCBvZmZzZXRzIGFyZSBnaXZlbiBhcworKiBuZWdhdGl2ZSBkaXN0YW5jZXMgZnJvbSB0aGUgZW5kIG9mIHRoZSB0ZXh0LiAgQmV0d2VlbiB0aGUgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIHJlZ2lvbnMKKyogaXMgYSBnYXAsIGludG8gd2hpY2ggbmV3IG9mZnNldHMgbWF5IGJlIGluc2VydGVkLiAgVGhpcyBzdG9yYWdlIHNjaGVtZSBhbGxvd3MgZm9yCisqIGVmZmljaWVudCByZXNwb25zZSB0byBhIHNlcmllcyBvZiBlZGl0aW5nIG9wZXJhdGlvbnMgd2hpY2ggb2NjdXIgaW4gdGhlIHNhbWUgYXJlYSBvZiB0aGUKKyogdGV4dC4KKyogPHA+CisqIFN0eWxlQnVmZmVyIHVzZXMgdGhlIG9mZnNldHMgaW4gPHR0PlJ1bkFycmF5PC90dD4gYXMgdGhlIGJvdW5kYXJpZXMgb2Ygc3R5bGUgcnVucy4KKyogQSBzdHlsZSBydW4gYmVnaW5zIGF0IGVhY2ggb2Zmc2V0IGluIDx0dD5SdW5BcnJheTwvdHQ+LCBhbmQgZWFjaCBzdHlsZSBydW4gY29udGludWVzIHRvCisqIHRoZSBuZXh0IG9mZnNldC4gIFRoZSBzdHlsZSBhcnJheSBpcyBrZXB0IGluIHN5bmMgd2l0aCB0aGUgYXJyYXkgb2Ygb2Zmc2V0cyBpbiA8dHQ+UnVuQXJyYXk8L3R0PjsKKyogdGhhdCBpcywgdGhlIHN0eWxlIHdoaWNoIGJlZ2lucyBhdCBSdW5BcnJheVtpXSBpcyBzdG9yZWQgaW4gU3R5bGVBcnJheVtpXS4KKyogPHA+CisqIFRoZSBmaXJzdCBlbnRyeSBpbiB0aGUgPHR0PlJ1bkFycmF5PC90dD4gaXMgYWx3YXlzIDAuCisqCisqIEBhdXRob3IgSm9obiBSYWxleQorKgorKiBAc2VlIEF0dHJpYnV0ZU1hcAorKiBAc2VlIE1UZXh0CisqIEBzZWUgUnVuQXJyYXkKKyovCisKK2ZpbmFsIGNsYXNzIFN0eWxlQnVmZmVyIGV4dGVuZHMgTVN0eWxlQnVmZmVyIGltcGxlbWVudHMgRXh0ZXJuYWxpemFibGUgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICAvKioKKyAgICAqIENyZWF0ZXMgYSBuZXcgc3R5bGUgYnVmZmVyIHdpdGggbGVuZ3RoIGVxdWFsIHRvIHRoZSBsZW5ndGggb2YgPHR0PnRleHQ8L3R0PiwKKyAgICAqIGFuZCB3aXRoIGEgc2luZ2xlIHJ1biBvZiA8dHQ+ZGVmYXVsdFN0eWxlPC90dD4uCisgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAyMjM1NjkzNDsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDVVJSRU5UX1ZFUlNJT04gPSAxOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBrSW5pdGlhbFNpemUgPSAxMDsKKyAgICBwcml2YXRlIFJ1bkFycmF5IGZSdW5BcnJheTsKKworICAgIHByaXZhdGUgQXR0cmlidXRlTWFwIGZTdHlsZVRhYmxlW107CisKKyAgICBTdHlsZUJ1ZmZlcihNQ29uc3RUZXh0IHRleHQsIEF0dHJpYnV0ZU1hcCBpbml0aWFsU3R5bGUpIHsKKworICAgICAgICB0aGlzKHRleHQubGVuZ3RoKCksIGluaXRpYWxTdHlsZSk7CisgICAgfQorCisgICAgLyoqCisgICAgKiBDcmVhdGVzIGEgbmV3IHN0eWxlIGJ1ZmZlciB3aXRoIGxlbmd0aCA8dHQ+aW5pdGlhbExlbmd0aDwvdHQ+IGFuZCB3aXRoIGEKKyAgICAqIHNpbmdsZSBydW4gb2YgPHR0PmRlZmF1bHRTdHlsZTwvdHQ+LgorICAgICovCisKKyAgICBTdHlsZUJ1ZmZlcihpbnQgaW5pdGlhbExlbmd0aCwgQXR0cmlidXRlTWFwIGluaXRpYWxTdHlsZSkgeworCisgICAgICAgIGZSdW5BcnJheSA9IG5ldyBSdW5BcnJheShrSW5pdGlhbFNpemUsIGluaXRpYWxMZW5ndGgpOworICAgICAgICBmUnVuQXJyYXkuZlBvc0VuZCA9IDA7CisgICAgICAgIGZSdW5BcnJheS5mUnVuU3RhcnRbMF0gPSAwOworCisgICAgICAgIGZTdHlsZVRhYmxlID0gbmV3IEF0dHJpYnV0ZU1hcFtrSW5pdGlhbFNpemVdOyAvLyBkbyBJIHJlYWxseSB3YW50IHRvIGRvIHRoaXM/Pz8KKworICAgICAgICBmU3R5bGVUYWJsZVswXSA9IGluaXRpYWxTdHlsZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBOb3RlOiB0aGlzIGNvbnN0cnVjdG9yIGlzIE9OTFkgZm9yIHVzZSBieSB0aGUgU2VyaWFsaXphdGlvbgorICAgICAqIG1lY2hhbmlzbS4gIEl0IGRvZXMgbm90IGxlYXZlIHRoaXMgb2JqZWN0IGluIGEgdmFsaWQgc3RhdGUhCisgICAgICovCisgICAgcHVibGljIFN0eWxlQnVmZmVyKCkgeworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHdyaXRlRXh0ZXJuYWwoT2JqZWN0T3V0cHV0IG91dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKworICAgICAgICBjb21wcmVzcygpOworICAgICAgICBvdXQud3JpdGVJbnQoQ1VSUkVOVF9WRVJTSU9OKTsKKyAgICAgICAgb3V0LndyaXRlT2JqZWN0KGZSdW5BcnJheSk7CisgICAgICAgIG91dC53cml0ZU9iamVjdChmU3R5bGVUYWJsZSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgcmVhZEV4dGVybmFsKE9iamVjdElucHV0IGluKSB0aHJvd3MgSU9FeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGFzc05vdEZvdW5kRXhjZXB0aW9uIHsKKworICAgICAgICBpZiAoaW4ucmVhZEludCgpICE9IENVUlJFTlRfVkVSU0lPTikgeworICAgICAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCJJbnZhbGlkIHZlcnNpb24gb2YgU3R5bGVCdWZmZXIiKTsKKyAgICAgICAgfQorICAgICAgICBmUnVuQXJyYXkgPSAoUnVuQXJyYXkpIGluLnJlYWRPYmplY3QoKTsKKyAgICAgICAgZlN0eWxlVGFibGUgPSAoQXR0cmlidXRlTWFwW10pIGluLnJlYWRPYmplY3QoKTsKKyAgICB9CisKKy8qKgorKiBTaGlmdCBzdHlsZSBhbmQgcnVuIHRhYmxlcyBzdWNoIHRoYXQgdGhlIGxhc3QgcG9zaXRpdmUgcnVuIGJlZ2lucyBiZWZvcmUgdGhlIGdpdmVuIHBvc2l0aW9uLgorKiBTaW5jZSB0aGVyZSBpcyBhbHdheXMgYSBydW4gc3RhcnQgYXQgMCwgdGhpcyBtZXRob2QgZW5zdXJlcyB0aGF0IHRoZSBmaXJzdCBydW4gd2lsbCBub3QgYmUgc2hpZnRlZC4KKyogVGhpcyBpcyBjYWxsZWQgYnk6IDx0dD5pbnNlcnRUZXh0PC90dD4gYW5kIDx0dD5kZWxldGVUZXh0PC90dD4uCisqIEBwYXJhbSBwb3MgYSBwb3NpdGlvbiBpbiB0aGUgdGV4dC4KKyovCisKKyAgICBwcml2YXRlIHZvaWQgc2hpZnRUYWJsZVRvKGludCBwb3MpIHsKKworICAgICAgICBpZiAocG9zID09IDApCisgICAgICAgICAgICBwb3MgPSAxOworCisgICAgICAgIGludCBvbGROZWdTdGFydCA9IGZSdW5BcnJheS5mTmVnU3RhcnQ7CisgICAgICAgIGludCBvbGRQb3NFbmQgPSBmUnVuQXJyYXkuZlBvc0VuZDsKKworICAgICAgICBmUnVuQXJyYXkuc2hpZnRUYWJsZVRvKHBvcyk7CisKKyAgICAgICAgaWYgKG9sZFBvc0VuZCA+IGZSdW5BcnJheS5mUG9zRW5kKQorICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShmU3R5bGVUYWJsZSwgZlJ1bkFycmF5LmZQb3NFbmQrMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZlN0eWxlVGFibGUsIGZSdW5BcnJheS5mTmVnU3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZFBvc0VuZC1mUnVuQXJyYXkuZlBvc0VuZCk7CisgICAgICAgIGVsc2UgaWYgKG9sZE5lZ1N0YXJ0IDwgZlJ1bkFycmF5LmZOZWdTdGFydCkKKyAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoZlN0eWxlVGFibGUsIG9sZE5lZ1N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmU3R5bGVUYWJsZSwgb2xkUG9zRW5kKzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZSdW5BcnJheS5mTmVnU3RhcnQtb2xkTmVnU3RhcnQpOworICAgIH0KKworLyoqCisqIFVwZGF0ZSB0aGUgc3R5bGUgdGFibGUgdG8gcmVmbGVjdCBhIGNoYW5nZSBpbiB0aGUgUnVuQXJyYXkncyBzaXplLgorKi8KKyAgICBwcml2YXRlIHZvaWQgaGFuZGxlQXJyYXlSZXNpemUoaW50IG9sZE5lZ1N0YXJ0KSB7CisKKyAgICAgICAgQXR0cmlidXRlTWFwIG5ld1N0eWxlVGFibGVbXSA9IG5ldyBBdHRyaWJ1dGVNYXBbZlJ1bkFycmF5LmdldEFycmF5TGVuZ3RoKCldOworICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KGZTdHlsZVRhYmxlLCAwLCBuZXdTdHlsZVRhYmxlLCAwLCBmUnVuQXJyYXkuZlBvc0VuZCsxKTsKKyAgICAgICAgU3lzdGVtLmFycmF5Y29weShmU3R5bGVUYWJsZSwgb2xkTmVnU3RhcnQsIG5ld1N0eWxlVGFibGUsIGZSdW5BcnJheS5mTmVnU3RhcnQsIChmUnVuQXJyYXkuZ2V0QXJyYXlMZW5ndGgoKS1mUnVuQXJyYXkuZk5lZ1N0YXJ0KSk7CisgICAgICAgIGZTdHlsZVRhYmxlID0gbmV3U3R5bGVUYWJsZTsKKyAgICB9CisKKy8qKgorKiBNaW5pbWl6ZSB0aGUgYW1vdW50IG9mIHN0b3JhZ2UgdXNlZCBieSB0aGlzIG9iamVjdC4KKyovCisgICAgdm9pZCBjb21wcmVzcygpIHsKKworICAgICAgICBpbnQgb2xkTmVnU3RhcnQgPSBmUnVuQXJyYXkuZk5lZ1N0YXJ0OworICAgICAgICBmUnVuQXJyYXkuY29tcHJlc3MoKTsKKyAgICAgICAgaWYgKGZSdW5BcnJheS5mTmVnU3RhcnQgIT0gb2xkTmVnU3RhcnQpIHsKKyAgICAgICAgICAgIGhhbmRsZUFycmF5UmVzaXplKG9sZE5lZ1N0YXJ0KTsKKyAgICAgICAgfQorICAgIH0KKworLyoqCisqIEluY3JlYXNlIHRoZSBzdG9yYWdlIGNhcGFjaXR5IG9mIHRoZSBzdHlsZSBhbmQgcnVuIHRhYmxlcyBpZiBubyByb29tIHJlbWFpbnMuCisqLworICAgIHByaXZhdGUgdm9pZCBleHBhbmRTdHlsZVRhYmxlSWZGdWxsKCkgeworCisgICAgICAgIGlmIChmUnVuQXJyYXkuZlBvc0VuZCArIDEgPT0gZlJ1bkFycmF5LmZOZWdTdGFydCkgeworCisgICAgICAgICAgICBpbnQgb2xkTmVnU3RhcnQgPSBmUnVuQXJyYXkuZk5lZ1N0YXJ0OworICAgICAgICAgICAgZlJ1bkFycmF5LmV4cGFuZFJ1blRhYmxlKCk7CisgICAgICAgICAgICBoYW5kbGVBcnJheVJlc2l6ZShvbGROZWdTdGFydCk7CisgICAgICAgIH0KKyAgICB9CisKKy8qCisgICAgcHVibGljIE1TdHlsZVJ1bkl0ZXJhdG9yIGNyZWF0ZVN0eWxlUnVuSXRlcmF0b3IoaW50IHN0YXJ0LCBpbnQgbGltaXQpIHsKKworICAgICAgICByZXR1cm4gbmV3IFN0eWxlUnVuSXRlcmF0b3Ioc3RhcnQsIGxpbWl0KTsKKyAgICB9CisqLworLyoqCisqIFJlc3BvbmQgdG8gYW4gaW5zZXJ0aW9uIGluIHRoZSB0ZXh0LiAgVGhlIGxlbmd0aCBvZiB0aGUgbGFzdCBzdHlsZSBydW4gd2hpY2gKKyogYmVnaW5zIGJlZm9yZSA8dHQ+c3RhcnQ8L3R0PiBpcyBpbmNyZWFzZWQgYnkgPHR0Pmxlbmd0aDwvdHQ+LiAgVGhlIHJ1biB0YWJsZQorKiBpcyBzaGlmdGVkIHN1Y2ggdGhhdCB0aGUgcnVuIGludG8gd2hpY2ggdGV4dCB3YXMgaW5zZXJ0ZWQgaXMgdGhlIGxhc3QgcG9zaXRpdmUgcnVuLgorKiBUaGlzIGltcGxlbWVudGF0aW9uIGFzc3VtZXMgdGhhdCBhbGwgc3R5bGVzIHByb3BvZ2F0ZS4KKyogQHBhcmFtIHN0YXJ0IHRoZSBvZmZzZXQgd2hlcmUgdGhlIGluc2VydGlvbiBiZWdhbgorKiBAcGFyYW0gbGVuZ3RoIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbnNlcnRlZAorKi8KKyAgICBwdWJsaWMgdm9pZCBpbnNlcnRUZXh0KGludCBzdGFydCwgaW50IGxpbWl0KSB7CisKKyAgICAgICAgc2hpZnRUYWJsZVRvKHN0YXJ0KTsKKyAgICAgICAgZlJ1bkFycmF5LmFkZFRvQ3VyVGV4dExlbmd0aChsaW1pdCAtIHN0YXJ0KTsKKyAgICB9CisKKy8qKgorKiBSZXNwb25kIHRvIGEgZGVsZXRpb24gaW4gdGhlIHRleHQuICBUaGUgbGFzdCBzdHlsZSBydW4gYmVmb3JlCisqIDx0dD5zdGFydDwvdHQ+IGlzIHRydW5jYXRlZCB0byBlbmQgYXQgPHR0PnN0YXJ0PC90dD4uICBUaGUKKyogc3R5bGUgcnVuIGNvbnRhaW5pbmcgKDx0dD5zdGFydDwvdHQ+Kzx0dD5sZW5ndGg8L3R0PikgaXMgc2V0IHRvIGJlZ2luCisqIGF0ICg8dHQ+c3RhcnQ8L3R0Pis8dHQ+bGVuZ3RoPC90dD4pLiAgUnVucyBpbiBiZXR3ZWVuIGFyZSBkZWxldGVkLgorKiBJZiB0aGUgZGVsZXRpb24gb2NjdXJzIGVudGlyZWx5IHdpdGhpbiBvbmUgc3R5bGUgcnVuLCB0aGUgbGVuZ3RoIG9mIHRoZSBzdHlsZQorKiBydW4gaXMgcmVkdWNlZCBieSA8dHQ+bGVuZ3RoPC90dD4uCisqIFRoaXMgaW1wbGVtZW50YXRpb24gYXNzdW1lcyB0aGF0IGFsbCBzdHlsZXMgcHJvcG9nYXRlLgorKiBUaGlzIG1ldGhvZCBzaGlmdHMgdGhlIHJ1biB0YWJsZSBzdWNoIHRoYXQgdGhlIHJ1biBpbiB3aGljaCB0aGUgZGVsZXRlIGJlZ2FuCisqIGlzIHRoZSBsYXN0IHBvc2l0aXZlIHJ1bi4gIE90aGVyIG1ldGhvZHMgZGVwZW5kIG9uIHRoaXMgInNpZGUgZWZmZWN0Ii4KKyogQHBhcmFtIHN0YXJ0IHRoZSBvZmZzZXQgd2hlcmUgdGhlIGRlbGV0aW9uIGJlZ2FuCisqIEBwYXJhbSBsZW5ndGggdGhlIG9mZnNldCB3aGVyZSB0aGUgZGVsZXRpb24gc3RvcHBlZAorKi8KKyAgICBwdWJsaWMgdm9pZCBkZWxldGVUZXh0KGludCBzdGFydCwgaW50IGxpbWl0KSB7CisKKyAgICAgICAgaW50IGxlbmd0aCA9IGxpbWl0IC0gc3RhcnQ7CisKKyAgICAgICAgLy8gQW4gb3B0aW1pemF0aW9uIC0gaWYgYSB3aG9sZSBydW4gd2Fzbid0IGRlbGV0ZWQgd2UgZG9uJ3QKKyAgICAgICAgLy8gbmVlZCB0byBjaGVjayBmb3IgcnVuIG1lcmdpbmcsIHdoaWNoIGNvdWxkIGJlIGV4cGVuc2l2ZS4KKyAgICAgICAgYm9vbGVhbiB3aG9sZVJ1bkRlbGV0ZWQgPSBmYWxzZTsKKworICAgICAgICBzaGlmdFRhYmxlVG8oc3RhcnQpOworCisgICAgICAgIGludCBmaXJzdFJ1bkxpbWl0ID0gZlJ1bkFycmF5LmdldEN1clRleHRMZW5ndGgoKTsKKyAgICAgICAgaWYgKGZSdW5BcnJheS5mTmVnU3RhcnQgPCBmUnVuQXJyYXkuZ2V0QXJyYXlMZW5ndGgoKSkKKyAgICAgICAgICAgIGZpcnN0UnVuTGltaXQgKz0gZlJ1bkFycmF5LmZSdW5TdGFydFtmUnVuQXJyYXkuZk5lZ1N0YXJ0XTsKKworICAgICAgICBpZiAobGltaXQgPT0gZlJ1bkFycmF5LmdldEN1clRleHRMZW5ndGgoKSkgeworICAgICAgICAgICAgZlJ1bkFycmF5LmZOZWdTdGFydCA9IGZSdW5BcnJheS5nZXRBcnJheUxlbmd0aCgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGxpbWl0ID49IGZpcnN0UnVuTGltaXQpIHsKKworICAgICAgICAgICAgaW50IGVuZCA9IGZSdW5BcnJheS5maW5kUnVuQ29udGFpbmluZyhsaW1pdCk7CisgICAgICAgICAgICBpZiAoZW5kICE9IGZSdW5BcnJheS5mUG9zRW5kKSB7CisgICAgICAgICAgICAgICAgZlJ1bkFycmF5LmZSdW5TdGFydFtlbmRdID0gbGltaXQgLSBmUnVuQXJyYXkuZ2V0Q3VyVGV4dExlbmd0aCgpOworICAgICAgICAgICAgICAgIGZSdW5BcnJheS5mTmVnU3RhcnQgPSBlbmQ7CisgICAgICAgICAgICAgICAgd2hvbGVSdW5EZWxldGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChmUnVuQXJyYXkuZk5lZ1N0YXJ0ICE9IGZSdW5BcnJheS5nZXRBcnJheUxlbmd0aCgpKSB7CisgICAgICAgICAgICBpZiAoc3RhcnQgPT0gMCAmJiBsaW1pdCA+PSBmaXJzdFJ1bkxpbWl0KSB7CisgICAgICAgICAgICAgICAgLy8gdGhlIGZpcnN0IHN0eWxlIHJ1biB3YXMgZGVsZXRlZDsgIG1vdmUgZmlyc3QgIm5lZ2F0aXZlIiBydW4gaW50bworICAgICAgICAgICAgICAgIC8vIGZpcnN0IHBvc2l0aW9uCisgICAgICAgICAgICAgICAgZlN0eWxlVGFibGVbMF0gPSBmU3R5bGVUYWJsZVtmUnVuQXJyYXkuZk5lZ1N0YXJ0KytdOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAod2hvbGVSdW5EZWxldGVkKSB7CisgICAgICAgICAgICAgICAgaWYgKGZTdHlsZVRhYmxlW2ZSdW5BcnJheS5mTmVnU3RhcnRdLmVxdWFscyhmU3R5bGVUYWJsZVtmUnVuQXJyYXkuZlBvc0VuZF0pKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIG1lcmdlIHN0eWxlIHJ1bnMKKyAgICAgICAgICAgICAgICAgICAgZlJ1bkFycmF5LmZOZWdTdGFydCsrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZSdW5BcnJheS5hZGRUb0N1clRleHRMZW5ndGgoLWxlbmd0aCk7CisKKyAgICAgICAgZlJ1bkFycmF5LnJ1blN0YXJ0c0NoYW5nZWQoKTsKKyAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oIkluIGRlbGV0ZVRleHQ6ICBudW1iZXIgb2Ygc3R5bGUgcnVucyA9ICIgKyBudW1SdW5zKHRoaXMpKTsKKyAgICB9CisKKy8qKgorKiBBcnJhbmdlIHN0eWxlIHRhYmxlIHNvIHRoYXQgb2xkIHN0eWxlcyBpbiB0aGUgcHJvdmlkZWQgcmFuZ2UgYXJlIHJlbW92ZWQsIGFuZAorKiBuZXcgc3R5bGVzIGNhbiBiZSBpbnNlcnRlZCBpbnRvIHRoZSBpbnNlcnRpb24gZ2FwLgorKiBBZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kLCBuZXcgc3R5bGUgc3RhcnRzIGFuZCBzdHlsZXMgbWF5IGJlIHBsYWNlZAorKiBpbiB0aGUgaW5zZXJ0aW9uIGdhcHMgb2YgZlJ1bkFycmF5LmZTdHlsZVN0YXJ0IGFuZCBmU3R5bGVUYWJsZS4KKyogQHBhcmFtIHN0YXJ0IG9mZnNldCBpbiB0aGUgdGV4dCB3aGVyZSBpbnNlcnRpb24gb3BlcmF0aW9uIGJlZ2lucworKiBAcGFyYW0gbGltaXQgb2Zmc2V0IGluIHRoZSB0ZXh0IHdoZXJlIHByZXZpb3VzIHN0eWxlcyByZXN1bWUKKyovCisgICAgcHJpdmF0ZSB2b2lkIHByZXBhcmVTdHlsZUluc2VydChpbnQgc3RhcnQpIHsKKworICAgICAgICBpZiAoc3RhcnQgPT0gMCkgeworCisgICAgICAgICAgICAvLyBmUnVuQXJyYXkuZlBvc0VuZCBzaG91bGQgYmUgMCBpZiB3ZSdyZSBpbiB0aGlzIGJyYW5jaC4KKworICAgICAgICAgICAgaWYgKGZSdW5BcnJheS5nZXRDdXJUZXh0TGVuZ3RoKCkgPiAwKSB7CisKKyAgICAgICAgICAgICAgICAvKiBNb3ZlIGZpcnN0IGV4aXN0aW5nIHN0eWxlIHJ1biB0byBuZWdhdGl2ZSBlbmQgb2YgYnVmZmVyLgorICAgICAgICAgICAgICAgICAgIERvbid0IGRvIHRoaXMgaWYgbGVuZ3RoPT0wOyAgdGhhdCBpcywgaWYgdGhlcmUgaXMgbm8gcmVhbAorICAgICAgICAgICAgICAgICAgIHN0eWxlIHJ1biBhdCAwLgorICAgICAgICAgICAgICAgICAqLworCisgICAgICAgICAgICAgICAgZlJ1bkFycmF5LmZOZWdTdGFydC0tOworICAgICAgICAgICAgICAgIGZTdHlsZVRhYmxlW2ZSdW5BcnJheS5mTmVnU3RhcnRdID0gZlN0eWxlVGFibGVbMF07CisgICAgICAgICAgICAgICAgZlJ1bkFycmF5LmZSdW5TdGFydFtmUnVuQXJyYXkuZk5lZ1N0YXJ0XSA9IC1mUnVuQXJyYXkuZ2V0Q3VyVGV4dExlbmd0aCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmUnVuQXJyYXkuZlBvc0VuZCA9IC0xOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworCisgICAgICAgICAgICAvLyBjb25zaXN0ZW5jeSBjaGVjazogc3RhcnQgc2hvdWxkIGJlIGluIGN1cnJlbnQgZ2FwCisgICAgICAgICAgICBpZiAoZlJ1bkFycmF5LmZSdW5TdGFydFtmUnVuQXJyYXkuZlBvc0VuZF0gPj0gc3RhcnQpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkluY29uc2lzdGVudCBzdGF0ZSEgIFN0YXJ0IHNob3VsZCBiZSB3aXRoaW4gaW5zZXJ0aW9uIGdhcC4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaW50IGVuZE9mSW5zZXJ0aW9uR2FwID0gZlJ1bkFycmF5LmdldEN1clRleHRMZW5ndGgoKTsKKyAgICAgICAgICAgIGlmIChmUnVuQXJyYXkuZk5lZ1N0YXJ0IDwgZlJ1bkFycmF5LmdldEFycmF5TGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICBlbmRPZkluc2VydGlvbkdhcCArPSBmUnVuQXJyYXkuZlJ1blN0YXJ0W2ZSdW5BcnJheS5mTmVnU3RhcnRdOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoZW5kT2ZJbnNlcnRpb25HYXAgPCBzdGFydCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiSW5jb25zaXN0ZW50IHN0YXRlISAgU3RhcnQgc2hvdWxkIGJlIHdpdGhpbiBpbnNlcnRpb24gZ2FwLiIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBpZiBubyBicmVhayBhdCBzdGFydCAob24gbmVnYXRpdmUgZW5kIG9mIGJ1ZmZlcikgbWFrZSBvbmUKKworICAgICAgICAgICAgaWYgKGVuZE9mSW5zZXJ0aW9uR2FwICE9IHN0YXJ0KSB7CisKKyAgICAgICAgICAgICAgICAvLyBzcGxpdCBzdHlsZSBydW4gaW4gaW5zZXJ0aW9uIGdhcAorCisgICAgICAgICAgICAgICAgZXhwYW5kU3R5bGVUYWJsZUlmRnVsbCgpOworCisgICAgICAgICAgICAgICAgZlJ1bkFycmF5LmZOZWdTdGFydC0tOworICAgICAgICAgICAgICAgIGZTdHlsZVRhYmxlW2ZSdW5BcnJheS5mTmVnU3RhcnRdID0gZlN0eWxlVGFibGVbZlJ1bkFycmF5LmZQb3NFbmRdOworICAgICAgICAgICAgICAgIGZSdW5BcnJheS5mUnVuU3RhcnRbZlJ1bkFycmF5LmZOZWdTdGFydF0gPSBzdGFydCAtIGZSdW5BcnJheS5nZXRDdXJUZXh0TGVuZ3RoKCk7CisKKyAgICAgICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigic3BsaXR0aW5nIHJ1bi4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIG1vZGlmeVN0eWxlcyhpbnQgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3R5bGVNb2RpZmllciBtb2RpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50W10gZGFtYWdlZFJhbmdlKSB7CisKKyAgICAgICAgaWYgKGxpbWl0ID09IHN0YXJ0KSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBzaGlmdFRhYmxlVG8oc3RhcnQpOworCisgICAgICAgIGludCBjdXJyZW50UnVuU3RhcnQgPSBzdGFydDsKKyAgICAgICAgQXR0cmlidXRlTWFwIG9sZFN0eWxlOworICAgICAgICBBdHRyaWJ1dGVNYXAgbWVyZ2VTdHlsZSA9IGZTdHlsZVRhYmxlW2ZSdW5BcnJheS5mUG9zRW5kXTsKKworICAgICAgICBpZiAoZlJ1bkFycmF5LmZOZWdTdGFydCA8IGZSdW5BcnJheS5nZXRBcnJheUxlbmd0aCgpICYmCisgICAgICAgICAgICAgICAgZlJ1bkFycmF5LmZSdW5TdGFydFtmUnVuQXJyYXkuZk5lZ1N0YXJ0XStmUnVuQXJyYXkuZ2V0Q3VyVGV4dExlbmd0aCgpID09IHN0YXJ0KSB7CisKKyAgICAgICAgICAgIG9sZFN0eWxlID0gZlN0eWxlVGFibGVbZlJ1bkFycmF5LmZOZWdTdGFydF07CisgICAgICAgICAgICArK2ZSdW5BcnJheS5mTmVnU3RhcnQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBvbGRTdHlsZSA9IG1lcmdlU3R5bGU7CisgICAgICAgIH0KKworICAgICAgICBib29sZWFuIG1vZGlmaWVkQW55d2hlcmUgPSBmYWxzZTsKKyAgICAgICAgZm9yKDs7KSB7CisKKyAgICAgICAgICAgIGJvb2xlYW4gbW9kaWZpZWQgPSBmYWxzZTsKKworICAgICAgICAgICAgLy8gcHVzaCBuZXcgc3R5bGUgaW50byBnYXAgb24gcG9zaXRpdmUgc2lkZQorICAgICAgICAgICAgQXR0cmlidXRlTWFwIG5ld1N0eWxlID0gbW9kaWZpZXIubW9kaWZ5U3R5bGUob2xkU3R5bGUpOworICAgICAgICAgICAgaWYgKGRhbWFnZWRSYW5nZSAhPSBudWxsICYmICFuZXdTdHlsZS5lcXVhbHMob2xkU3R5bGUpKSB7CisgICAgICAgICAgICAgICAgbW9kaWZpZWQgPSBtb2RpZmllZEFueXdoZXJlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBkYW1hZ2VkUmFuZ2VbMF0gPSBNYXRoLm1pbihjdXJyZW50UnVuU3RhcnQsIGRhbWFnZWRSYW5nZVswXSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghbmV3U3R5bGUuZXF1YWxzKG1lcmdlU3R5bGUpKSB7CisKKyAgICAgICAgICAgICAgICBpZiAoY3VycmVudFJ1blN0YXJ0ICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgZXhwYW5kU3R5bGVUYWJsZUlmRnVsbCgpOworICAgICAgICAgICAgICAgICAgICArK2ZSdW5BcnJheS5mUG9zRW5kOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGZTdHlsZVRhYmxlW2ZSdW5BcnJheS5mUG9zRW5kXSA9IG5ld1N0eWxlOworICAgICAgICAgICAgICAgIGZSdW5BcnJheS5mUnVuU3RhcnRbZlJ1bkFycmF5LmZQb3NFbmRdID0gY3VycmVudFJ1blN0YXJ0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtZXJnZVN0eWxlID0gbmV3U3R5bGU7CisKKyAgICAgICAgICAgIGludCBuZXh0UnVuU3RhcnQgPSBmUnVuQXJyYXkuZ2V0TG9naWNhbFJ1blN0YXJ0KGZSdW5BcnJheS5mTmVnU3RhcnQpOworCisgICAgICAgICAgICBpZiAobGltaXQgPiBuZXh0UnVuU3RhcnQpIHsKKyAgICAgICAgICAgICAgICBvbGRTdHlsZSA9IGZTdHlsZVRhYmxlW2ZSdW5BcnJheS5mTmVnU3RhcnRdOworICAgICAgICAgICAgICAgIGN1cnJlbnRSdW5TdGFydCA9IG5leHRSdW5TdGFydDsKKyAgICAgICAgICAgICAgICBpZiAobW9kaWZpZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgZGFtYWdlZFJhbmdlWzFdID0gTWF0aC5tYXgoY3VycmVudFJ1blN0YXJ0LCBkYW1hZ2VkUmFuZ2VbMV0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICArK2ZSdW5BcnJheS5mTmVnU3RhcnQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAobGltaXQgPCBuZXh0UnVuU3RhcnQgJiYgIW9sZFN0eWxlLmVxdWFscyhtZXJnZVN0eWxlKSkgeworICAgICAgICAgICAgICAgICAgICBleHBhbmRTdHlsZVRhYmxlSWZGdWxsKCk7CisgICAgICAgICAgICAgICAgICAgICsrZlJ1bkFycmF5LmZQb3NFbmQ7CisgICAgICAgICAgICAgICAgICAgIGZTdHlsZVRhYmxlW2ZSdW5BcnJheS5mUG9zRW5kXSA9IG9sZFN0eWxlOworICAgICAgICAgICAgICAgICAgICBmUnVuQXJyYXkuZlJ1blN0YXJ0W2ZSdW5BcnJheS5mUG9zRW5kXSA9IGxpbWl0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobW9kaWZpZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgZGFtYWdlZFJhbmdlWzFdID0gTWF0aC5tYXgobGltaXQsIGRhbWFnZWRSYW5nZVsxXSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gbWVyZ2UgbGFzdCBydW4gaWYgbmVlZGVkCisgICAgICAgIGlmICgoZlJ1bkFycmF5LmZOZWdTdGFydCA8IGZSdW5BcnJheS5nZXRBcnJheUxlbmd0aCgpKSAmJgorICAgICAgICAgICAgICAgICAgICAoZlN0eWxlVGFibGVbZlJ1bkFycmF5LmZOZWdTdGFydF0uZXF1YWxzKGZTdHlsZVRhYmxlW2ZSdW5BcnJheS5mUG9zRW5kXSkpKSB7CisgICAgICAgICAgICBmUnVuQXJyYXkuZk5lZ1N0YXJ0Kys7CisgICAgICAgIH0KKworICAgICAgICBmUnVuQXJyYXkucnVuU3RhcnRzQ2hhbmdlZCgpOworCisgICAgICAgIHJldHVybiBtb2RpZmllZEFueXdoZXJlOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgc3R5bGVTdGFydChpbnQgcG9zKSB7CisKKyAgICAgICAgaWYgKHBvcyA9PSBmUnVuQXJyYXkuZ2V0Q3VyVGV4dExlbmd0aCgpKSB7CisgICAgICAgICAgICByZXR1cm4gcG9zOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZSdW5BcnJheS5nZXRMb2dpY2FsUnVuU3RhcnQoZlJ1bkFycmF5LmZpbmRSdW5Db250YWluaW5nKHBvcykpOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgc3R5bGVMaW1pdChpbnQgcG9zKSB7CisKKyAgICAgICAgaWYgKHBvcyA9PSBmUnVuQXJyYXkuZ2V0Q3VyVGV4dExlbmd0aCgpKSB7CisgICAgICAgICAgICByZXR1cm4gcG9zOworICAgICAgICB9CisKKyAgICAgICAgaW50IHJ1biA9IGZSdW5BcnJheS5maW5kUnVuQ29udGFpbmluZyhwb3MpOworCisgICAgICAgIGlmIChydW4gPT0gZlJ1bkFycmF5LmZQb3NFbmQpIHsKKyAgICAgICAgICAgIHJ1biA9IGZSdW5BcnJheS5mTmVnU3RhcnQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICArK3J1bjsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmUnVuQXJyYXkuZ2V0TG9naWNhbFJ1blN0YXJ0KHJ1bik7CisgICAgfQorCisvKioKKyogUmV0dXJuIHN0eWxlIGF0IGxvY2F0aW9uIDx0dD5wb3M8L3R0Pi4KKyogQHBhcmFtIHBvcyBhbiBvZmZzZXQgaW50byB0aGUgdGV4dAorKiBAcmV0dXJucyB0aGUgc3R5bGUgb2YgdGhlIGNoYXJhY3RlciBhdCA8dHQ+b2Zmc2V0PC90dD4KKyovCisgICAgcHVibGljIEF0dHJpYnV0ZU1hcCBzdHlsZUF0KGludCBwb3MpIHsKKworICAgICAgICByZXR1cm4gZlN0eWxlVGFibGVbIGZSdW5BcnJheS5maW5kUnVuQ29udGFpbmluZyhwb3MpIF07CisgICAgfQorCisvKgorKiBTZXQgcnVuIHN0YXJ0LCBydW4gbGVuZ3RoLCBhbmQgcnVuIHZhbHVlIGluIGFuIGl0ZXJhdG9yLiAgVGhpcyBtZXRob2QgaXMKKyogb25seSBjYWxsZWQgYnkgYSA8dHQ+U3R5bGVSdW5JdGVyYXRvcjwvdHQ+LgorKiBAcGFyYW0gcG9zIGFuIG9mZnNldCBpbnRvIHRoZSB0ZXh0LiAgVGhlIGl0ZXJhdG9yJ3MgcnVuIHN0YXJ0IGFuZCBydW4gbGltaXQgYXJlCisqIHNldCB0byB0aGUgcnVuIGNvbnRhaW5pbmcgPHR0PnBvczwvdHQ+LgorKiBAcGFyYW0gaXRlciB0aGUgaXRlcmF0b3IgdG8gc2V0CisqLworICAgIHZvaWQgc2V0SXRlcmF0b3IoaW50IHBvcywgU3R5bGVSdW5JdGVyYXRvciBpdGVyKSB7CisKKyAgICAgICAgaWYgKChwb3MgPCAwKSB8fCAocG9zID4gZlJ1bkFycmF5LmdldEN1clRleHRMZW5ndGgoKSkpIHsKKworICAgICAgICAgICAgaXRlci5zZXQobnVsbCwgMCwgMCwga05vUnVuKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGludCBydW4gPSBmUnVuQXJyYXkuZmluZFJ1bkNvbnRhaW5pbmcocG9zKTsKKworICAgICAgICBzZXRJdGVyYXRvclVzaW5nUnVuKHJ1biwgaXRlcik7CisgICAgfQorCisvKioKKyogU2V0IHJ1biBzdGFydCwgcnVuIGxlbmd0aCwgYW5kIHJ1biB2YWx1ZSBpbiBhbiBpdGVyYXRvci4gIFRoaXMgbWV0aG9kIGlzCisqIG9ubHkgY2FsbGVkIGJ5IGEgPHR0PlN0eWxlUnVuSXRlcmF0b3I8L3R0Pi4KKyogQHBhcmFtIHJ1biB0aGUgaW5kZXggb2YgdGhlIHJ1biB0byB3aGljaCB0aGUgaXRlcmF0b3Igc2hvdWxkIGJlIHNldAorKiBAcGFyYW0gaXRlciB0aGUgaXRlcmF0b3IgdG8gc2V0CisqLworICAgIHByaXZhdGUgdm9pZCBzZXRJdGVyYXRvclVzaW5nUnVuKGludCBydW4sIFN0eWxlUnVuSXRlcmF0b3IgaXRlcikgeworCisgICAgICAgIGludCBsYXN0VmFsaWRSdW4gPSBmUnVuQXJyYXkubGFzdFJ1bigpOworCisgICAgICAgIGlmIChydW4gPCAwIHx8IHJ1biA+IGxhc3RWYWxpZFJ1bikgeworCisgICAgICAgICAgICBpdGVyLnNldChudWxsLCAwLCAwLCBrTm9SdW4pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJ1biA9PSBmUnVuQXJyYXkuZlBvc0VuZCsxKQorICAgICAgICAgICAgcnVuID0gZlJ1bkFycmF5LmZOZWdTdGFydDsKKyAgICAgICAgZWxzZSBpZiAocnVuID09IGZSdW5BcnJheS5mTmVnU3RhcnQtMSkKKyAgICAgICAgICAgIHJ1biA9IGZSdW5BcnJheS5mUG9zRW5kOworCisgICAgICAgIGludCBydW5TdGFydCA9IGZSdW5BcnJheS5mUnVuU3RhcnRbcnVuXTsKKyAgICAgICAgaWYgKHJ1blN0YXJ0IDwgMCkKKyAgICAgICAgICAgIHJ1blN0YXJ0ICs9IGZSdW5BcnJheS5nZXRDdXJUZXh0TGVuZ3RoKCk7CisKKyAgICAgICAgQXR0cmlidXRlTWFwIHN0eWxlID0gZlN0eWxlVGFibGVbcnVuXTsKKworICAgICAgICBpbnQgbmV4dFJ1bjsKKworICAgICAgICBpZiAocnVuID09IGZSdW5BcnJheS5mUG9zRW5kKQorICAgICAgICAgICAgbmV4dFJ1biA9IGZSdW5BcnJheS5mTmVnU3RhcnQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5leHRSdW4gPSBydW4gKyAxOworCisgICAgICAgIGludCBydW5MaW1pdDsKKworICAgICAgICBpZiAobmV4dFJ1biA+PSBmUnVuQXJyYXkuZ2V0QXJyYXlMZW5ndGgoKSkKKyAgICAgICAgICAgIHJ1bkxpbWl0ID0gZlJ1bkFycmF5LmdldEN1clRleHRMZW5ndGgoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBydW5MaW1pdCA9IGZSdW5BcnJheS5mUnVuU3RhcnRbbmV4dFJ1bl07CisgICAgICAgICAgICBpZiAocnVuTGltaXQgPCAwKQorICAgICAgICAgICAgICAgIHJ1bkxpbWl0ICs9IGZSdW5BcnJheS5nZXRDdXJUZXh0TGVuZ3RoKCk7CisgICAgICAgIH0KKworICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigic2V0SXRlcmF0b3I6IHBvcz0iK3BvcysiLCBydW5TdGFydD0iK3J1blN0YXJ0KyIsIHJ1bkxpbWl0PSIrcnVuTGltaXQrCisgICAgICAgIC8vICAgICAgICAgICAgICAgICAgIiwgcnVuPSIrcnVuKyIsIGZQb3NFbmQ9IitmUG9zRW5kKTsKKworICAgICAgICBpdGVyLnNldChzdHlsZSwgcnVuU3RhcnQsIHJ1bkxpbWl0LCBydW4pOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHJlcGxhY2UoaW50IHN0YXJ0LCBpbnQgbGltaXQsIE1Db25zdFRleHQgc3JjVGV4dCwgaW50IHNyY1N0YXJ0LCBpbnQgc3JjTGltaXQpCisgICAgeworICAgICAgICBkZWxldGVUZXh0KHN0YXJ0LCBsaW1pdCk7CisgICAgICAgIGlmIChzcmNTdGFydCA9PSBzcmNMaW1pdCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgcHJlcGFyZVN0eWxlSW5zZXJ0KHN0YXJ0KTsKKyAgICAgICAgZm9yIChpbnQgajIgPSBzcmNTdGFydDsgajIgPCBzcmNMaW1pdDsgajIgPSBzcmNUZXh0LmNoYXJhY3RlclN0eWxlTGltaXQoajIpKQorICAgICAgICB7CisgICAgICAgICAgICBBdHRyaWJ1dGVNYXAgYXR0cmlidXRlTWFwID0gc3JjVGV4dC5jaGFyYWN0ZXJTdHlsZUF0KGoyKTsKKyAgICAgICAgICAgIGlmIChmUnVuQXJyYXkuZlBvc0VuZCA8IDAgfHwgIWZTdHlsZVRhYmxlW2ZSdW5BcnJheS5mUG9zRW5kXS5lcXVhbHMoYXR0cmlidXRlTWFwKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBleHBhbmRTdHlsZVRhYmxlSWZGdWxsKCk7CisgICAgICAgICAgICAgICAgZlJ1bkFycmF5LmZQb3NFbmQrKzsKKyAgICAgICAgICAgICAgICBmUnVuQXJyYXkuZlJ1blN0YXJ0W2ZSdW5BcnJheS5mUG9zRW5kXSA9IGoyIC0gc3JjU3RhcnQgKyBzdGFydDsKKyAgICAgICAgICAgICAgICBmU3R5bGVUYWJsZVtmUnVuQXJyYXkuZlBvc0VuZF0gPSBhdHRyaWJ1dGVNYXA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZlJ1bkFycmF5LmFkZFRvQ3VyVGV4dExlbmd0aChzcmNMaW1pdCAtIHNyY1N0YXJ0KTsKKyAgICAgICAgaWYgKGZSdW5BcnJheS5mTmVnU3RhcnQgPCBmUnVuQXJyYXkuZ2V0QXJyYXlMZW5ndGgoKSAmJiBmU3R5bGVUYWJsZVtmUnVuQXJyYXkuZk5lZ1N0YXJ0XS5lcXVhbHMoZlN0eWxlVGFibGVbZlJ1bkFycmF5LmZQb3NFbmRdKSkKKyAgICAgICAgICAgIGZSdW5BcnJheS5mTmVnU3RhcnQrKzsKKyAgICB9CisKKyAgICBwcml2YXRlICBzdGF0aWMgZmluYWwgaW50IGtOb1J1biA9IC00MjsgLy8gaXRlcmF0b3IgdXNlCisKKyAgICBwcml2YXRlIGZpbmFsIGNsYXNzIFN0eWxlUnVuSXRlcmF0b3IgLyppbXBsZW1lbnRzIE1TdHlsZVJ1bkl0ZXJhdG9yKi8geworCisgICAgICAgIFN0eWxlUnVuSXRlcmF0b3IoaW50IHN0YXJ0LCBpbnQgbGltaXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJlc2V0KHN0YXJ0LCBsaW1pdCwgc3RhcnQpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgcmVzZXQoaW50IHN0YXJ0LCBpbnQgbGltaXQsIGludCBwb3MpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZTdGFydCA9IHN0YXJ0OworICAgICAgICAgICAgZkxpbWl0ID0gbGltaXQ7CisgICAgICAgICAgICBzZXRJdGVyYXRvcihmU3RhcnQsIHRoaXMpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGJvb2xlYW4gaXNWYWxpZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmU3R5bGUgIT0gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIG5leHQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZlJ1bkxpbWl0IDwgZkxpbWl0KSB7CisgICAgICAgICAgICAgICAgZkN1cnJlbnRSdW4rKzsKKyAgICAgICAgICAgICAgICBzZXRJdGVyYXRvclVzaW5nUnVuKGZDdXJyZW50UnVuLCB0aGlzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzZXQobnVsbCwgMCwgMCwga05vUnVuKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIHByZXYoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZlJ1blN0YXJ0ID4gZlN0YXJ0KSB7CisgICAgICAgICAgICAgICAgZkN1cnJlbnRSdW4tLTsKKyAgICAgICAgICAgICAgICBzZXRJdGVyYXRvclVzaW5nUnVuKGZDdXJyZW50UnVuLCB0aGlzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzZXQobnVsbCwgMCwgMCwga05vUnVuKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIHNldChpbnQgcG9zKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAocG9zID49IGZTdGFydCAmJiBwb3MgPCBmTGltaXQpIHsKKyAgICAgICAgICAgICAgICBzZXRJdGVyYXRvcihwb3MsIHRoaXMpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzZXQobnVsbCwgMCwgMCwga05vUnVuKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgc2V0KEF0dHJpYnV0ZU1hcCBzdHlsZSwgaW50IHN0YXJ0LCBpbnQgbGltaXQsIGludCBjdXJyZW50UnVuKQorICAgICAgICB7CisgICAgICAgICAgICBmU3R5bGUgPSBzdHlsZTsKKyAgICAgICAgICAgIGZDdXJyZW50UnVuID0gY3VycmVudFJ1bjsKKyAgICAgICAgICAgIGZSdW5TdGFydCA9IHN0YXJ0IDwgZlN0YXJ0ID8gZlN0YXJ0IDogc3RhcnQ7CisgICAgICAgICAgICBmUnVuTGltaXQgPSBsaW1pdCA+IGZMaW1pdCA/IGZMaW1pdCA6IGxpbWl0OworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgcmVzZXQoaW50IHN0YXJ0LCBpbnQgbGltaXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJlc2V0KHN0YXJ0LCBsaW1pdCwgc3RhcnQpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgZmlyc3QoKQorICAgICAgICB7CisgICAgICAgICAgICBzZXQoZlN0YXJ0KTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIGxhc3QoKQorICAgICAgICB7CisgICAgICAgICAgICBzZXQoZkxpbWl0IC0gMSk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgaW50IHJhbmdlU3RhcnQoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZlN0YXJ0OworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGludCByYW5nZUxpbWl0KCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZMaW1pdDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBpbnQgcmFuZ2VMZW5ndGgoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZkxpbWl0IC0gZlN0YXJ0OworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIEF0dHJpYnV0ZU1hcCBzdHlsZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmU3R5bGU7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgaW50IHJ1blN0YXJ0KCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZSdW5TdGFydDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBpbnQgcnVuTGltaXQoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZlJ1bkxpbWl0OworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGludCBydW5MZW5ndGgoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZlJ1bkxpbWl0IC0gZlJ1blN0YXJ0OworICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZSBpbnQgZlN0YXJ0OworICAgICAgICBwcml2YXRlIGludCBmTGltaXQ7CisgICAgICAgIHByaXZhdGUgQXR0cmlidXRlTWFwIGZTdHlsZTsKKyAgICAgICAgcHJpdmF0ZSBpbnQgZlJ1blN0YXJ0OworICAgICAgICBwcml2YXRlIGludCBmUnVuTGltaXQ7CisgICAgICAgIHByaXZhdGUgaW50IGZDdXJyZW50UnVuOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC9zdHlsZWR0ZXh0L1N0eWxlTW9kaWZpZXIuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N0eWxlZHRleHQvU3R5bGVNb2RpZmllci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmU3ZmJhOGEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC9zdHlsZWR0ZXh0L1N0eWxlTW9kaWZpZXIuamF2YQpAQCAtMCwwICsxLDE5MiBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogU3R5bGVNb2RpZmllci5qYXZhLHYgJCAkUmV2aXNpb246IDEuMiAkICREYXRlOiAyMDAyLzAyLzE2IDAzOjA2OjM2ICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dDsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZU1hcDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRsYXlvdXQuYXR0cmlidXRlcy5BdHRyaWJ1dGVTZXQ7CisKKy8qKgorICogU3R5bGVNb2RpZmllciBpcyB0aGUgYmFzZSBjbGFzcyBmb3Igb3BlcmF0aW9ucyBvbiBBdHRyaWJ1dGVNYXAuICBUbyBpbXBsZW1lbnQKKyAqIGFuIG9wZXJhdGlvbiBvbiBBdHRyaWJ1dGVNYXAsIHN1YmNsYXNzIFN0eWxlTW9kaWZpZXIgYW5kIG92ZXJyaWRlCisgKiA8Y29kZT5tb2RpZnlTdHlsZTwvY29kZT4uICBTdHlsZU1vZGlmaWVycyBhcmUgdXNlZCBieSBNVGV4dC4KKyAqIDxwPgorICogRm9yIGNvbnZlbmllbmNlLCB0aGlzIGNsYXNzIGNvbnRhaW5zIGZhY3RvcnkgbWV0aG9kcyB3aGljaCB3aWxsIGNyZWF0ZSBhCisgKiBTdHlsZU1vZGlmaWVyIGZvcgorICogY2VydGFpbiBjb21tb24gb3BlcmF0aW9uczogYXR0cmlidXRlIHVuaW9uLCBhdHRyaWJ1dGUgcmVtb3ZhbCwgYW5kIEF0dHJpYnV0ZU1hcAorICogcmVwbGFjZW1lbnQuCisgKiBAc2VlIEF0dHJpYnV0ZU1hcAorICogQHNlZSBBdHRyaWJ1dGVTZXQKKyAqIEBzZWUgTVRleHQKKyAqLworLyoKKyAqIHtqYnJ9IFN0eWxlTW9kaWZpZXIgaXMgbm90IHRoZSBiZXN0IG5hbWUgZm9yIHRoaXMgY2xhc3MgLSBzdHlsZXMgYXJlIGltbXV0YWJsZSBhbmQgbmV2ZXIKKyAqIHJlYWxseSBtb2RpZmllZC4KKyAqLworcHVibGljIGNsYXNzIFN0eWxlTW9kaWZpZXIKK3sKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIC8qKgorICAgICAqIENyZWF0ZSBhIFN0eWxlTW9kaWZpZXIuCisgICAgICovCisgICAgcHJvdGVjdGVkIFN0eWxlTW9kaWZpZXIoKSB7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSByZXN1bHQgb2YgdGhpcyBTdHlsZU1vZGlmaWVyJ3Mgb3BlcmF0aW9uIG9uIHRoZSBnaXZlbiBzdHlsZS4KKyAgICAgKiBEZWZhdWx0IGltcGxlbWVudGF0aW9uIGp1c3QgcmV0dXJucyB0aGUgZ2l2ZW4gc3R5bGUuCisgICAgICogQHBhcmFtIHN0eWxlIHRoZSBBdHRyaWJ1dGVNYXAgdG8gcGVyZm9ybSB0aGUgb3BlcmF0aW9uIG9uCisgICAgICovCisgICAgcHVibGljIEF0dHJpYnV0ZU1hcCBtb2RpZnlTdHlsZShBdHRyaWJ1dGVNYXAgc3R5bGUpCisgICAgeworICAgICAgICByZXR1cm4gc3R5bGU7CisgICAgfQorCisgICAgLyoqCisgICAgICogQSBTdHlsZU1vZGlmaWVyIHdoaWNoIHNpbXBseSByZXR1cm5zIHRoZSBnaXZlbiBzdHlsZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0eWxlTW9kaWZpZXIgSURFTlRJVFkgPSBuZXcgU3R5bGVNb2RpZmllcigpOworCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgU3R5bGVNb2RpZmllciB3aG9zZSBvcGVyYXRpb24gaXMKKyAgICAgKiA8Y29kZT5zdHlsZS5hZGRBdHRyaWJ1dGVzKHMpPC9jb2RlPiwKKyAgICAgKiB3aGVyZSA8Y29kZT5zdHlsZTwvY29kZT4gaXMgdGhlIEF0dHJpYnV0ZU1hcCBwYXNzZWQgdG8KKyAgICAgKiA8Y29kZT5tb2RpZnlTdHlsZTwvY29kZT4uCisgICAgICogQHBhcmFtIHMgdGhlIEF0dHJpYnV0ZU1hcCB0byB1bmlvbiB3aXRoCisgICAgICogQHJldHVybiBhIFN0eWxlTW9kaWZpZXIgZm9yIHRoaXMgb3BlcmF0aW9uCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBTdHlsZU1vZGlmaWVyIGNyZWF0ZUFkZE1vZGlmaWVyKEF0dHJpYnV0ZU1hcCBzKSB7CisKKyAgICAgICAgcmV0dXJuIG5ldyBTdHlsZUFkZE1vZGlmaWVyKHMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZSBhIFN0eWxlTW9kaWZpZXIgd2hvc2Ugb3BlcmF0aW9uIGlzCisgICAgICogPGNvZGU+c3R5bGUuYWRkQXR0cmlidXRlKGtleSwgdmFsdWUpPC9jb2RlPiwKKyAgICAgKiB3aGVyZSA8Y29kZT5zdHlsZTwvY29kZT4gaXMgdGhlIEF0dHJpYnV0ZU1hcCBwYXNzZWQgdG8KKyAgICAgKiA8Y29kZT5tb2RpZnlTdHlsZTwvY29kZT4uCisgICAgICogQHBhcmFtIGtleSB0aGUga2V5IHRvIGFkZAorICAgICAqIEBwYXJhbSB2YWx1ZSB0aGUgdmFsdWUgdG8gYWRkCisgICAgICogQHJldHVybiBhIFN0eWxlTW9kaWZpZXIgZm9yIHRoaXMgb3BlcmF0aW9uCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBTdHlsZU1vZGlmaWVyIGNyZWF0ZUFkZE1vZGlmaWVyKE9iamVjdCBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdCB2YWx1ZSkgeworCisgICAgICAgIHJldHVybiBuZXcgQXR0cmlidXRlQWRkTW9kaWZpZXIoa2V5LCB2YWx1ZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgU3R5bGVNb2RpZmllciB3aG9zZSBvcGVyYXRpb24gcmV0dXJucyA8Y29kZT5zPC9jb2RlPiwKKyAgICAgKiBpZ25vcmluZyB0aGUgcGFyYW1ldGVyIHRvIDxjb2RlPm1vZGlmeVN0eWxlPC9jb2RlPi4KKyAgICAgKiBAcGFyYW0gcyB0aGUgQXR0cmlidXRlTWFwIHdoaWNoIHdpbGwgcmVwbGFjZSBhbnkgb3RoZXIgQXR0cmlidXRlTWFwCisgICAgICogQHJldHVybiBhIFN0eWxlTW9kaWZpZXIgZm9yIHRoaXMgb3BlcmF0aW9uCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBTdHlsZU1vZGlmaWVyIGNyZWF0ZVJlcGxhY2VNb2RpZmllcihBdHRyaWJ1dGVNYXAgcykgeworCisgICAgICAgIHJldHVybiBuZXcgU3R5bGVSZXBsYWNlTW9kaWZpZXIocyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgU3R5bGVNb2RpZmllciB3aG9zZSBvcGVyYXRpb24gaXMKKyAgICAgKiA8Y29kZT5zdHlsZS5yZW1vdmVBdHRyaWJ1dGVzKHMpPC9jb2RlPiwKKyAgICAgKiB3aGVyZSA8Y29kZT5zdHlsZTwvY29kZT4gaXMgdGhlIEF0dHJpYnV0ZU1hcCBwYXNzZWQgdG8KKyAgICAgKiA8Y29kZT5tb2RpZnlTdHlsZTwvY29kZT4uCisgICAgICogQHBhcmFtIHMgdGhlIEF0dHJpYnV0ZVNldCBvZiBhdHRyaWJ1dGVzIHRvIHJlbW92ZQorICAgICAqIEByZXR1cm4gYSBTdHlsZU1vZGlmaWVyIGZvciB0aGlzIG9wZXJhdGlvbgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3R5bGVNb2RpZmllciBjcmVhdGVSZW1vdmVNb2RpZmllcihBdHRyaWJ1dGVTZXQgcykgeworCisgICAgICAgIHJldHVybiBuZXcgU3R5bGVSZW1vdmVNb2RpZmllcihzKTsKKyAgICB9CisKKyAgICBzdGF0aWMgZmluYWwgY2xhc3MgQXR0cmlidXRlQWRkTW9kaWZpZXIgZXh0ZW5kcyBTdHlsZU1vZGlmaWVyIHsKKworICAgICAgICBwcml2YXRlIE9iamVjdCBmS2V5OworICAgICAgICBwcml2YXRlIE9iamVjdCBmVmFsdWU7CisKKyAgICAgICAgcHVibGljIEF0dHJpYnV0ZUFkZE1vZGlmaWVyKE9iamVjdCBrZXksIE9iamVjdCB2YWx1ZSkgeworCisgICAgICAgICAgICBmS2V5ID0ga2V5OworICAgICAgICAgICAgZlZhbHVlID0gdmFsdWU7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgQXR0cmlidXRlTWFwIG1vZGlmeVN0eWxlKEF0dHJpYnV0ZU1hcCBzdHlsZSkgeworCisgICAgICAgICAgICByZXR1cm4gc3R5bGUuYWRkQXR0cmlidXRlKGZLZXksIGZWYWx1ZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgdGhpcyB3aXRoIHRoZSBzdHlsZXMgdG8gYWRkLiAgVGhlc2Ugc3R5bGVzIHdpbGwgYWRkIHRvIGFuZCBvdmVycmlkZSBhbnkgYWxyZWFkeQorICAgICAqIHByZXNlbnQgaW4gdGhlIHN0eWxlIHBhc3NlZCB0byBtb2RpZnlTdHlsZS4KKyAgICAgKi8KKyAgICBzdGF0aWMgZmluYWwgY2xhc3MgU3R5bGVBZGRNb2RpZmllciBleHRlbmRzIFN0eWxlTW9kaWZpZXIKKyAgICB7CisgICAgICAgIHByaXZhdGUgQXR0cmlidXRlTWFwIGZTdHlsZTsKKworICAgICAgICBwdWJsaWMgU3R5bGVBZGRNb2RpZmllcihBdHRyaWJ1dGVNYXAgc3R5bGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChzdHlsZSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigic3R5bGUgaXMgbnVsbCIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZlN0eWxlID0gc3R5bGU7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgQXR0cmlidXRlTWFwIG1vZGlmeVN0eWxlKEF0dHJpYnV0ZU1hcCBzdHlsZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHN0eWxlLmFkZEF0dHJpYnV0ZXMoZlN0eWxlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZSB0aGlzIHdpdGggdGhlIHN0eWxlcyB0byByZXBsYWNlLiAgQWxsIHN0eWxlIHJ1bnMgd2lsbCBoYXZlIG9ubHkgdGhlc2UKKyAgICAgKiBzdHlsZXMuCisgICAgICovCisgICAgc3RhdGljIGZpbmFsIGNsYXNzIFN0eWxlUmVwbGFjZU1vZGlmaWVyIGV4dGVuZHMgU3R5bGVNb2RpZmllcgorICAgIHsKKyAgICAgICAgcHJpdmF0ZSBBdHRyaWJ1dGVNYXAgZlN0eWxlOworCisgICAgICAgIHB1YmxpYyBTdHlsZVJlcGxhY2VNb2RpZmllcihBdHRyaWJ1dGVNYXAgc3R5bGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChzdHlsZSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigic3R5bGUgaXMgbnVsbCIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZlN0eWxlID0gc3R5bGU7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgQXR0cmlidXRlTWFwIG1vZGlmeVN0eWxlKEF0dHJpYnV0ZU1hcCBzdHlsZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZTdHlsZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0YXRpYyBmaW5hbCBjbGFzcyBTdHlsZVJlbW92ZU1vZGlmaWVyIGV4dGVuZHMgU3R5bGVNb2RpZmllciB7CisKKyAgICAgICAgcHJpdmF0ZSBBdHRyaWJ1dGVTZXQgZlJlbW92ZVNldDsKKworICAgICAgICBwdWJsaWMgU3R5bGVSZW1vdmVNb2RpZmllcihBdHRyaWJ1dGVTZXQgcmVtb3ZlU2V0KSB7CisKKyAgICAgICAgICAgIGlmIChyZW1vdmVTZXQgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oInNldCBpcyBudWxsIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmUmVtb3ZlU2V0ID0gcmVtb3ZlU2V0OworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIEF0dHJpYnV0ZU1hcCBtb2RpZnlTdHlsZShBdHRyaWJ1dGVNYXAgc3R5bGUpIHsKKworICAgICAgICAgICAgcmV0dXJuIHN0eWxlLnJlbW92ZUF0dHJpYnV0ZXMoZlJlbW92ZVNldCk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC9zdHlsZWR0ZXh0L1N0eWxlZFRleHQuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N0eWxlZHRleHQvU3R5bGVkVGV4dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjA3MGY0NjgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC9zdHlsZWR0ZXh0L1N0eWxlZFRleHQuamF2YQpAQCAtMCwwICsxLDY4NiBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogU3R5bGVkVGV4dC5qYXZhLHYgJCAkUmV2aXNpb246IDEuMyAkICREYXRlOiAyMDAyLzAzLzIwIDA1OjExOjE3ICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dDsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZU1hcDsKKworaW1wb3J0IGphdmEuaW8uRXh0ZXJuYWxpemFibGU7CitpbXBvcnQgamF2YS5pby5PYmplY3RJbnB1dDsKK2ltcG9ydCBqYXZhLmlvLk9iamVjdE91dHB1dDsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEudGV4dC5DaGFyYWN0ZXJJdGVyYXRvcjsKKworLyoqCisgKiBUaGlzIGNsYXNzIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIE1UZXh0LCBhIG1vZGlmeWFibGUsIHN0eWxlZCB0ZXh0CisgKiBzdG9yYWdlIG1vZGVsLiAgQWRkaXRpb25hbGx5LCBpdCBzdXBwb3J0cyBwZXJzaXN0YW5jZSB0aHJvdWdoIHRoZQorICogRXh0ZXJuYWxpemFibGUgaW50ZXJmYWNlLgorICogQHNlZSBNVGV4dAorICovCisKKy8qCisgICAgMTAvMjgvOTYge2pmfSAtIHNwbGl0IHRoZSBjaGFyYWN0ZXIgYW5kIHBhcmFncmFwaCBzdHlsZSBhY2Nlc3MgYW5kIHNldHRlciBmdW5jdGlvbiBhcm91bmQuLi4KKyAgICAgICAgICAgIGp1c3QgdG8ga2VlcCB0aGluZ3MgaW50ZXJlc3RpbmcuCisgICAgOC83Lzk2IHtqZn0gLSBtb3ZlZCBwYXJhZ3JhcGggYnJlYWsgaW1wbGVtZW50YXRpb24gZnJvbSBBYnN0cmFjdFRleHQgaW50byBTdHlsZSB0ZXh0LgorICAgICAgICAgICAgLSBhZGRlZCBjb3VudFN0eWxlcywgZ2V0U3R5bGVzLCBhbmQgUmVwbGFjZVN0eWxlcyBpbXBsZW1lbnRhdGlvbi4KKworICAgIDgvMTQvOTYgc2ZiICBlbGltaW5hdGVkIFN0eWxlU2hlZXRJdGVyYXRvcgorCisgICAgOC8yOS85NiB7amJyfSBjaGFuZ2VkIGl0ZXItYmFzZWQgcmVwbGFjZSBtZXRob2QgLSBkb2Vzbid0IGNhbGwgYXQoKSB1bmxlc3MgaXQgaXMgc2FmZSB0byBkbyBzbworICAgICAgICAgICAgQWxzbywgYWRkZWQgY2hlY2tTdGFydEFuZExpbWl0IGZvciBkZWJ1Z2dpbmcKKworICAgIDcvMzEvOTggU3dpdGNoZWQgZnJvbSBTdHlsZSB0byBBdHRyaWJ1dGVNYXAKKworKi8KKworcHVibGljIGZpbmFsIGNsYXNzIFN0eWxlZFRleHQgZXh0ZW5kcyBNVGV4dCBpbXBsZW1lbnRzIEV4dGVybmFsaXphYmxlCit7CisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ1VSUkVOVF9WRVJTSU9OID0gMTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAyMjM1NjkzNDsKKworICAgIC8qIHVuaWNvZGUgc3RvcmFnZSAqLworICAgIHByaXZhdGUgTUNoYXJCdWZmZXIgICAgICAgICBmQ2hhckJ1ZmZlcjsKKyAgICAvKiBjaGFyYWN0ZXIgc3R5bGUgc3RvcmFnZSAqLworICAgIHByaXZhdGUgTVN0eWxlQnVmZmVyICAgICAgICBmU3R5bGVCdWZmZXI7CisgICAgLyogcGFyYWdyYXBoIHN0eWxlIHN0b3JhZ2UgKi8KKyAgICBwcml2YXRlIE1QYXJhZ3JhcGhCdWZmZXIgICAgZlBhcmFncmFwaEJ1ZmZlcjsKKworICAgIHByaXZhdGUgdHJhbnNpZW50IGludCBmVGltZVN0YW1wID0gMDsKKyAgICBwcml2YXRlIHRyYW5zaWVudCBpbnRbXSBmRGFtYWdlZFJhbmdlID0geyBJbnRlZ2VyLk1BWF9WQUxVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlZ2VyLk1JTl9WQUxVRSB9OworCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgRm9yY2VNb2RpZmllciBleHRlbmRzIFN0eWxlTW9kaWZpZXIgeworCisgICAgICAgIHByaXZhdGUgQXR0cmlidXRlTWFwIGZTdHlsZSA9IEF0dHJpYnV0ZU1hcC5FTVBUWV9BVFRSSUJVVEVfTUFQOworCisgICAgICAgIHZvaWQgc2V0U3R5bGUoQXR0cmlidXRlTWFwIHN0eWxlKSB7CisKKyAgICAgICAgICAgIGZTdHlsZSA9IHN0eWxlOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIEF0dHJpYnV0ZU1hcCBtb2RpZnlTdHlsZShBdHRyaWJ1dGVNYXAgc3R5bGUpIHsKKworICAgICAgICAgICAgcmV0dXJuIGZTdHlsZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEtlZXAgdGhpcyBhcm91bmQgZm9ydXNlIGluIHJlcGxhY2VDaGFyU3R5bGVzV2l0aC4gIE9LIHNpbmNlCisgICAgLy8gdGhpcyBjbGFzcyBpc24ndCB0aHJlYWRzYWZlIGFueXdheS4KKyAgICBwcml2YXRlIHRyYW5zaWVudCBGb3JjZU1vZGlmaWVyIGZvcmNlTW9kaWZpZXIgPSBudWxsOworCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBDT05TVFJVQ1RPUlMKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8qKgorICAgICAqIENyZWF0ZSBhbiBlbXB0eSB0ZXh0IG9iamVjdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3R5bGVkVGV4dCgpCisgICAgeworICAgICAgICB0aGlzKDApOworICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZSBhbiBlbXB0eSB0ZXh0IG9iamVjdCByZWFkeSB0byBob2xkIGF0IGxlYXN0IGNhcGFjaXR5IGNoYXJzLgorICAgICAqIEBwYXJhbSBjYXBhY2l0eSB0aGUgbWluaW11bSBjYXBhY2l0eSBvZiB0aGUgaW50ZXJuYWwgdGV4dCBidWZmZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgU3R5bGVkVGV4dChpbnQgY2FwYWNpdHkpCisgICAgeworICAgICAgICBmQ2hhckJ1ZmZlciAgICAgICAgID0gY2FwYWNpdHk+MD8gbmV3IENoYXJCdWZmZXIoY2FwYWNpdHkpIDogbmV3IENoYXJCdWZmZXIoKTsKKyAgICAgICAgZlN0eWxlQnVmZmVyICAgICAgICA9IG5ldyBTdHlsZUJ1ZmZlcih0aGlzLCBBdHRyaWJ1dGVNYXAuRU1QVFlfQVRUUklCVVRFX01BUCk7CisgICAgICAgIGZQYXJhZ3JhcGhCdWZmZXIgICAgPSBuZXcgUGFyYWdyYXBoQnVmZmVyKGZDaGFyQnVmZmVyKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSB0ZXh0IG9iamVjdCB3aXRoIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcsCisgICAgICogaW4gdGhlIGdpdmVuIHN0eWxlLgorICAgICAqIEBwYXJhbSBzdHJpbmcgdGhlIGluaXRpYWwgY29udGVudHMKKyAgICAgKiBAcGFyYW0gaW5pdGlhbFN0eWxlIHRoZSBzdHlsZSBvZiB0aGUgaW5pdGlhbCB0ZXh0CisgICAgICovCisgICAgcHVibGljIFN0eWxlZFRleHQoU3RyaW5nIHN0cmluZywgQXR0cmlidXRlTWFwIGluaXRpYWxTdHlsZSkKKyAgICB7CisgICAgICAgIGZDaGFyQnVmZmVyID0gbmV3IENoYXJCdWZmZXIoc3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgZkNoYXJCdWZmZXIucmVwbGFjZSgwLCAwLCBzdHJpbmcsIDAsIHN0cmluZy5sZW5ndGgoKSk7CisKKyAgICAgICAgZlN0eWxlQnVmZmVyID0gbmV3IFN0eWxlQnVmZmVyKHRoaXMsIGluaXRpYWxTdHlsZSk7CisgICAgICAgIGZQYXJhZ3JhcGhCdWZmZXIgPSBuZXcgUGFyYWdyYXBoQnVmZmVyKGZDaGFyQnVmZmVyKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSB0ZXh0IG9iamVjdCBmcm9tIHRoZSBnaXZlbiBzb3VyY2UuCisgICAgICogQHBhcmFtIHNvdXJjZSB0aGUgdGV4dCB0byBjb3B5CisgICAgICovCisgICAgcHVibGljIFN0eWxlZFRleHQoTUNvbnN0VGV4dCBzb3VyY2UpIHsKKyAgICAgICAgdGhpcygpOworICAgICAgICBhcHBlbmQoc291cmNlKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgdGV4dCBvYmplY3QgZnJvbSBhIHN1YnJhbmdlIG9mIHRoZSBnaXZlbiBzb3VyY2UuCisgICAgICogQHBhcmFtIHNvdXJjZSB0aGUgdGV4dCB0byBjb3B5IGZyb20KKyAgICAgKiBAcGFyYW0gc3JjU3RhcnQgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgdG8gY29weQorICAgICAqIEBwYXJhbSBzcmNMaW1pdCB0aGUgaW5kZXggYWZ0ZXIgdGhlIGxhc3QgY2hhcmFjdGVyIHRvIGNvcHkKKyAgICAgKi8KKyAgICBwdWJsaWMgU3R5bGVkVGV4dChNQ29uc3RUZXh0IHNvdXJjZSwgaW50IHNyY1N0YXJ0LCBpbnQgc3JjTGltaXQpIHsKKyAgICAgICAgdGhpcygpOworICAgICAgICByZXBsYWNlKDAsIDAsIHNvdXJjZSwgc3JjU3RhcnQsIHNyY0xpbWl0KTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB3cml0ZUV4dGVybmFsKE9iamVjdE91dHB1dCBvdXQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisKKyAgICAgICAgb3V0LndyaXRlSW50KENVUlJFTlRfVkVSU0lPTik7CisgICAgICAgIG91dC53cml0ZU9iamVjdChmQ2hhckJ1ZmZlcik7CisgICAgICAgIG91dC53cml0ZU9iamVjdChmU3R5bGVCdWZmZXIpOworICAgICAgICBvdXQud3JpdGVPYmplY3QoZlBhcmFncmFwaEJ1ZmZlcik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgcmVhZEV4dGVybmFsKE9iamVjdElucHV0IGluKSB0aHJvd3MgSU9FeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzTm90Rm91bmRFeGNlcHRpb24geworCisgICAgICAgIGludCB2ZXJzaW9uID0gaW4ucmVhZEludCgpOworICAgICAgICBpZiAodmVyc2lvbiAhPSBDVVJSRU5UX1ZFUlNJT04pIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbigiSW52YWxpZCB2ZXJzaW9uIG9mIFN0eWxlZFRleHQ6ICIgKyB2ZXJzaW9uKTsKKyAgICAgICAgfQorICAgICAgICBmQ2hhckJ1ZmZlciA9IChNQ2hhckJ1ZmZlcikgaW4ucmVhZE9iamVjdCgpOworICAgICAgICBmU3R5bGVCdWZmZXIgPSAoTVN0eWxlQnVmZmVyKSBpbi5yZWFkT2JqZWN0KCk7CisgICAgICAgIGZQYXJhZ3JhcGhCdWZmZXIgPSAoTVBhcmFncmFwaEJ1ZmZlcikgaW4ucmVhZE9iamVjdCgpOworCisgICAgICAgIHJlc2V0RGFtYWdlZFJhbmdlKCk7CisgICAgfQorCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBNQ29uc3RUZXh0IElOVEVSRkFDRVMKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIGNoYXJhY3RlciBhY2Nlc3MKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvKioKKyogUmV0dXJuIHRoZSBjaGFyYWN0ZXIgYXQgb2Zmc2V0IDxjb2RlPnBvczwvY29kZT4uCisqIEBwYXJhbSBwb3MgYSB2YWxpZCBvZmZzZXQgaW50byB0aGUgdGV4dAorKiBAcmV0dXJuIHRoZSBjaGFyYWN0ZXIgYXQgb2Zmc2V0IDxjb2RlPnBvczwvY29kZT4KKyovCisgICAgcHVibGljIGNoYXIgYXQoaW50IHBvcykKKyAgICB7CisgICAgICAgIHJldHVybiBmQ2hhckJ1ZmZlci5hdChwb3MpOworICAgIH0KKworLyoqCisqIENvcHkgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIHJhbmdlIFs8Y29kZT5zdGFydDwvY29kZT4sIDxjb2RlPmxpbWl0PC9jb2RlPikKKyogaW50byB0aGUgYXJyYXkgPGNvZGU+ZHN0PC9jb2RlPiwgYmVnaW5uaW5nIGF0IDxjb2RlPmRzdFN0YXJ0PC9jb2RlPi4KKyogQHBhcmFtIHN0YXJ0IG9mZnNldCBvZiBmaXJzdCBjaGFyYWN0ZXIgd2hpY2ggd2lsbCBiZSBjb3BpZWQgaW50byB0aGUgYXJyYXkKKyogQHBhcmFtIGxpbWl0IG9mZnNldCBpbW1lZGlhdGVseSBhZnRlciB0aGUgbGFzdCBjaGFyYWN0ZXIgd2hpY2ggd2lsbCBiZSBjb3BpZWQgaW50byB0aGUgYXJyYXkKKyogQHBhcmFtIGRzdCBhcnJheSBpbiB3aGljaCB0byBjb3B5IGNoYXJhY3RlcnMuICBUaGUgbGVuZ3RoIG9mIDxjb2RlPmRzdDwvY29kZT4gbXVzdCBiZSBhdCBsZWFzdAorKiAoPGNvZGU+ZHN0U3RhcnQgKyBsaW1pdCAtIHN0YXJ0PC9jb2RlPikuCisqLworICAgIHB1YmxpYyB2b2lkIGV4dHJhY3RDaGFycyhpbnQgc3RhcnQsIGludCBsaW1pdCwgY2hhcltdIGRzdCwgaW50IGRzdFN0YXJ0KQorICAgIHsKKyAgICAgICAgZkNoYXJCdWZmZXIuYXQoc3RhcnQsIGxpbWl0LCBkc3QsIGRzdFN0YXJ0KTsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyB0ZXh0IG1vZGVsIGNyZWF0aW9uCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvKioKKyogQ3JlYXRlIGFuIE1Db25zdFRleHQgY29udGFpbmluZyB0aGUgY2hhcmFjdGVycyBhbmQgc3R5bGVzIGluIHRoZSByYW5nZQorKiBbPGNvZGU+c3RhcnQ8L2NvZGU+LCA8Y29kZT5saW1pdDwvY29kZT4pLgorKiBAcGFyYW0gc3RhcnQgb2Zmc2V0IG9mIGZpcnN0IGNoYXJhY3RlciBpbiB0aGUgbmV3IHRleHQKKyogQHBhcmFtIGxpbWl0IG9mZnNldCBpbW1lZGlhdGVseSBhZnRlciB0aGUgbGFzdCBjaGFyYWN0ZXIgaW4gdGhlIG5ldyB0ZXh0CisqIEByZXR1cm4gYW4gTUNvbnN0VGV4dCBvYmplY3QgY29udGFpbmluZyB0aGUgY2hhcmFjdGVycyBhbmQgc3R5bGVzIGluIHRoZSBnaXZlbiByYW5nZQorKi8KKyAgICBwdWJsaWMgTUNvbnN0VGV4dCBleHRyYWN0KGludCBzdGFydCwgaW50IGxpbWl0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGV4dHJhY3RXcml0YWJsZShzdGFydCwgbGltaXQpOworICAgIH0KKworLyoqCisqIENyZWF0ZSBhbiBNVGV4dCBjb250YWluaW5nIHRoZSBjaGFyYWN0ZXJzIGFuZCBzdHlsZXMgaW4gdGhlIHJhbmdlCisqIFs8Y29kZT5zdGFydDwvY29kZT4sIDxjb2RlPmxpbWl0PC9jb2RlPikuCisqIEBwYXJhbSBzdGFydCBvZmZzZXQgb2YgZmlyc3QgY2hhcmFjdGVyIGluIHRoZSBuZXcgdGV4dAorKiBAcGFyYW0gbGltaXQgb2Zmc2V0IGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBsYXN0IGNoYXJhY3RlciBpbiB0aGUgbmV3IHRleHQKKyogQHJldHVybiBhbiBNQ29uc3RUZXh0IG9iamVjdCBjb250YWluaW5nIHRoZSBjaGFyYWN0ZXJzIGFuZCBzdHlsZXMgaW4gdGhlIGdpdmVuIHJhbmdlCisqLworICAgIHB1YmxpYyBNVGV4dCBleHRyYWN0V3JpdGFibGUoaW50IHN0YXJ0LCBpbnQgbGltaXQpCisgICAgeworICAgICAgICBNVGV4dCB0ZXh0ID0gbmV3IFN0eWxlZFRleHQoKTsKKyAgICAgICAgdGV4dC5yZXBsYWNlKDAsIDAsIHRoaXMsIHN0YXJ0LCBsaW1pdCk7CisgICAgICAgIHRleHQucmVzZXREYW1hZ2VkUmFuZ2UoKTsKKyAgICAgICAgcmV0dXJuIHRleHQ7CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIHNpemUvY2FwYWNpdHkKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvKioKKyogUmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIE1Db25zdFRleHQgb2JqZWN0LiAgVGhlIGxlbmd0aCBpcyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gdGhlIHRleHQuCisqIEByZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgTUNvbnN0VGV4dCBvYmplY3QKKyovCisgICAgcHVibGljIGludCBsZW5ndGgoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZDaGFyQnVmZmVyLmxlbmd0aCgpOworICAgIH0KKworLyoqCisqIENyZWF0ZSBhIDxjb2RlPkNoYXJhY3Rlckl0ZXJhdG9yPC9jb2RlPiBvdmVyIHRoZSByYW5nZSBbPGNvZGU+c3RhcnQ8L2NvZGU+LCA8Y29kZT5saW1pdDwvY29kZT4pLgorKiBAcGFyYW0gc3RhcnQgdGhlIGJlZ2lubmluZyBvZiB0aGUgaXRlcmF0b3IncyByYW5nZQorKiBAcGFyYW0gbGltaXQgdGhlIGxpbWl0IG9mIHRoZSBpdGVyYXRvcidzIHJhbmdlCisqIEByZXR1cm4gYSB2YWxpZCA8Y29kZT5DaGFyYWN0ZXJJdGVyYXRvcjwvY29kZT4gb3ZlciB0aGUgc3BlY2lmaWVkIHJhbmdlCisqIEBzZWUgamF2YS50ZXh0LkNoYXJhY3Rlckl0ZXJhdG9yCisqLworICAgIHB1YmxpYyBDaGFyYWN0ZXJJdGVyYXRvciBjcmVhdGVDaGFyYWN0ZXJJdGVyYXRvcihpbnQgc3RhcnQsIGludCBsaW1pdCkKKyAgICB7CisgICAgICAgIHJldHVybiBmQ2hhckJ1ZmZlci5jcmVhdGVDaGFyYWN0ZXJJdGVyYXRvcihzdGFydCwgbGltaXQpOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBjaGFyYWN0ZXIgc3R5bGVzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvKioKKyogUmV0dXJuIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIGluIHRoZSBjaGFyYWN0ZXIgc3R5bGUgcnVuCisqIGNvbnRhaW5pbmcgcG9zLiAgQWxsIGNoYXJhY3RlcnMgaW4gYSBzdHlsZSBydW4gaGF2ZSB0aGUgc2FtZSBjaGFyYWN0ZXIKKyogc3R5bGUuCisqIEByZXR1cm4gdGhlIHN0eWxlIGF0IG9mZnNldCA8Y29kZT5wb3M8L2NvZGU+CisqLworICAgIHB1YmxpYyBpbnQgY2hhcmFjdGVyU3R5bGVTdGFydChpbnQgcG9zKSB7CisKKyAgICAgICAgY2hlY2tQb3MocG9zLCBMRVNTX1RIQU5fTEVOR1RIKTsKKyAgICAgICAgcmV0dXJuIGZTdHlsZUJ1ZmZlci5zdHlsZVN0YXJ0KHBvcyk7CisgICAgfQorCisvKioKKyogUmV0dXJuIHRoZSBpbmRleCBhZnRlciB0aGUgbGFzdCBjaGFyYWN0ZXIgaW4gdGhlIGNoYXJhY3RlciBzdHlsZSBydW4KKyogY29udGFpbmluZyBwb3MuICBBbGwgY2hhcmFjdGVycyBpbiBhIHN0eWxlIHJ1biBoYXZlIHRoZSBzYW1lIGNoYXJhY3RlcgorKiBzdHlsZS4KKyogQHJldHVybiB0aGUgc3R5bGUgYXQgb2Zmc2V0IDxjb2RlPnBvczwvY29kZT4KKyovCisgICAgcHVibGljIGludCBjaGFyYWN0ZXJTdHlsZUxpbWl0KGludCBwb3MpIHsKKworICAgICAgICBjaGVja1Bvcyhwb3MsIE5PVF9HUkVBVEVSX1RIQU5fTEVOR1RIKTsKKyAgICAgICAgcmV0dXJuIGZTdHlsZUJ1ZmZlci5zdHlsZUxpbWl0KHBvcyk7CisgICAgfQorCisvKioKKyogUmV0dXJuIHRoZSBzdHlsZSBhcHBsaWVkIHRvIHRoZSBjaGFyYWN0ZXIgYXQgb2Zmc2V0IDxjb2RlPnBvczwvY29kZT4uCisqIEBwYXJhbSBwb3MgYSB2YWxpZCBvZmZzZXQgaW50byB0aGUgdGV4dAorKiBAcmV0dXJuIHRoZSBzdHlsZSBhdCBvZmZzZXQgPGNvZGU+cG9zPC9jb2RlPgorKi8KKyAgICBwdWJsaWMgQXR0cmlidXRlTWFwIGNoYXJhY3RlclN0eWxlQXQoaW50IHBvcykKKyAgICB7CisgICAgICAgIGNoZWNrUG9zKHBvcywgTk9UX0dSRUFURVJfVEhBTl9MRU5HVEgpOworICAgICAgICByZXR1cm4gZlN0eWxlQnVmZmVyLnN0eWxlQXQocG9zKTsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gcGFyYWdyYXBoIGJvdW5kYXJpZXMgYW5kIHN0eWxlcworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8qKgorKiBSZXR1cm4gdGhlIHN0YXJ0IG9mIHRoZSBwYXJhZ3JhcGggY29udGFpbmluZyB0aGUgY2hhcmFjdGVyIGF0IG9mZnNldCA8Y29kZT5wb3M8L2NvZGU+LgorKiBAcGFyYW0gcG9zIGEgdmFsaWQgb2Zmc2V0IGludG8gdGhlIHRleHQKKyogQHJldHVybiB0aGUgc3RhcnQgb2YgdGhlIHBhcmFncmFwaCBjb250YWluaW5nIHRoZSBjaGFyYWN0ZXIgYXQgb2Zmc2V0IDxjb2RlPnBvczwvY29kZT4KKyovCisgICAgcHVibGljIGludCBwYXJhZ3JhcGhTdGFydChpbnQgcG9zKQorICAgIHsKKyAgICAgICAgY2hlY2tQb3MocG9zLCBOT1RfR1JFQVRFUl9USEFOX0xFTkdUSCk7CisgICAgICAgIHJldHVybiBmUGFyYWdyYXBoQnVmZmVyLnBhcmFncmFwaFN0YXJ0KHBvcyk7CisgICAgfQorCisvKioKKyogUmV0dXJuIHRoZSBsaW1pdCBvZiB0aGUgcGFyYWdyYXBoIGNvbnRhaW5pbmcgdGhlIGNoYXJhY3RlciBhdCBvZmZzZXQgPGNvZGU+cG9zPC9jb2RlPi4KKyogQHBhcmFtIHBvcyBhIHZhbGlkIG9mZnNldCBpbnRvIHRoZSB0ZXh0CisqIEByZXR1cm4gdGhlIGxpbWl0IG9mIHRoZSBwYXJhZ3JhcGggY29udGFpbmluZyB0aGUgY2hhcmFjdGVyIGF0IG9mZnNldCA8Y29kZT5wb3M8L2NvZGU+CisqLworICAgIHB1YmxpYyBpbnQgcGFyYWdyYXBoTGltaXQoaW50IHBvcykKKyAgICB7CisgICAgICAgIGNoZWNrUG9zKHBvcywgTk9UX0dSRUFURVJfVEhBTl9MRU5HVEgpOworICAgICAgICByZXR1cm4gZlBhcmFncmFwaEJ1ZmZlci5wYXJhZ3JhcGhMaW1pdChwb3MpOworICAgIH0KKworLyoqCisqIFJldHVybiB0aGUgcGFyYWdyYXBoIHN0eWxlIGFwcGxpZWQgdG8gdGhlIHBhcmFncmFwaCBjb250YWluaW5nIG9mZnNldCA8Y29kZT5wb3M8L2NvZGU+LgorKiBAcGFyYW0gcG9zIGEgdmFsaWQgb2Zmc2V0IGludG8gdGhlIHRleHQKKyogQHJldHVybiB0aGUgcGFyYWdyYXBoIHN0eWxlIGluIGVmZmVjdCBhdCA8Y29kZT5wb3M8L2NvZGU+CisqLworICAgIHB1YmxpYyBBdHRyaWJ1dGVNYXAgcGFyYWdyYXBoU3R5bGVBdChpbnQgcG9zKQorICAgIHsKKyAgICAgICAgY2hlY2tQb3MocG9zLCBOT1RfR1JFQVRFUl9USEFOX0xFTkdUSCk7CisgICAgICAgIHJldHVybiBmUGFyYWdyYXBoQnVmZmVyLnBhcmFncmFwaFN0eWxlQXQocG9zKTsKKyAgICB9CisKKy8qKgorKiBSZXR1cm4gdGhlIGN1cnJlbnQgdGltZSBzdGFtcC4gIFRoZSB0aW1lIHN0YW1wIGlzCisqIGluY3JlbWVudGVkIHdoZW5ldmVyIHRoZSBjb250ZW50cyBvZiB0aGUgTUNvbnN0VGV4dCBjaGFuZ2VzLgorKiBAcmV0dXJuIHRoZSBjdXJyZW50IHBhcmFncmFwaCBzdHlsZSB0aW1lIHN0YW1wCisqLworICAgIHB1YmxpYyBpbnQgZ2V0VGltZVN0YW1wKCkgeworCisgICAgICAgIHJldHVybiBmVGltZVN0YW1wOworICAgIH0KKworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gTVRleHQgSU5URVJGQUNFUworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIGNoYXJhY3RlciBtb2RmaWNhdGlvbiBmdW5jdGlvbnMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBwcml2YXRlIHZvaWQgdXBkYXRlRGFtYWdlZFJhbmdlKGludCBkZWxldGVTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZWxldGVMaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnNlcnRMZW5ndGgpIHsKKworICAgICAgICBmRGFtYWdlZFJhbmdlWzBdID0gTWF0aC5taW4oZkRhbWFnZWRSYW5nZVswXSwgZGVsZXRlU3RhcnQpOworCisgICAgICAgIGlmIChmRGFtYWdlZFJhbmdlWzFdID49IGRlbGV0ZUxpbWl0KSB7CisgICAgICAgICAgICBpbnQgbGVuZ3RoQ2hhbmdlID0gaW5zZXJ0TGVuZ3RoIC0gKGRlbGV0ZUxpbWl0LWRlbGV0ZVN0YXJ0KTsKKyAgICAgICAgICAgIGZEYW1hZ2VkUmFuZ2VbMV0gKz0gbGVuZ3RoQ2hhbmdlOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZkRhbWFnZWRSYW5nZVsxXSA9IGRlbGV0ZVN0YXJ0ICsgaW5zZXJ0TGVuZ3RoOworICAgICAgICB9CisgICAgfQorCisvKioKKyogUmVwbGFjZSB0aGUgY2hhcmFjdGVycyBhbmQgc3R5bGVzIGluIHRoZSByYW5nZSBbPGNvZGU+c3RhcnQ8L2NvZGU+LCA8Y29kZT5saW1pdDwvY29kZT4pIHdpdGggdGhlIGNoYXJhY3RlcnMKKyogYW5kIHN0eWxlcyBpbiA8Y29kZT5zcmNUZXh0PC9jb2RlPiBpbiB0aGUgcmFuZ2UgWzxjb2RlPnNyY1N0YXJ0PC9jb2RlPiwgPGNvZGU+c3JjTGltaXQ8L2NvZGU+KS4gIDxjb2RlPnNyY1RleHQ8L2NvZGU+IGlzIG5vdAorKiBtb2RpZmllZC4KKyogQHBhcmFtIHN0YXJ0IHRoZSBvZmZzZXQgYXQgd2hpY2ggdGhlIHJlcGxhY2Ugb3BlcmF0aW9uIGJlZ2lucworKiBAcGFyYW0gbGltaXQgdGhlIG9mZnNldCBhdCB3aGljaCB0aGUgcmVwbGFjZSBvcGVyYXRpb24gZW5kcy4gIFRoZSBjaGFyYWN0ZXIgYW5kIHN0eWxlIGF0CisqIDxjb2RlPmxpbWl0PC9jb2RlPiBpcyBub3QgbW9kaWZpZWQuCisqIEBwYXJhbSBzcmNUZXh0IHRoZSBzb3VyY2UgZm9yIHRoZSBuZXcgY2hhcmFjdGVycyBhbmQgc3R5bGVzCisqIEBwYXJhbSBzcmNTdGFydCB0aGUgb2Zmc2V0IGludG8gPGNvZGU+c3JjVGV4dDwvY29kZT4gd2hlcmUgbmV3IGNoYXJhY3RlcnMgYW5kIHN0eWxlcyB3aWxsIGJlIG9idGFpbmVkCisqIEBwYXJhbSBzcmNMaW1pdCB0aGUgb2Zmc2V0IGludG8gPGNvZGU+c3JjVGV4dDwvY29kZT4gd2hlcmUgdGhlIG5ldyBjaGFyYWN0ZXJzIGFuZCBzdHlsZXMgZW5kCisqLworICAgIHB1YmxpYyB2b2lkIHJlcGxhY2UoaW50IHN0YXJ0LCBpbnQgbGltaXQsIE1Db25zdFRleHQgdGV4dCwgaW50IHNyY1N0YXJ0LCBpbnQgc3JjTGltaXQpCisgICAgeworICAgICAgICBpZiAodGV4dCA9PSB0aGlzKSB7CisgICAgICAgICAgICB0ZXh0ID0gbmV3IFN0eWxlZFRleHQodGV4dCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3RhcnQgPT0gbGltaXQgJiYgc3JjU3RhcnQgPT0gc3JjTGltaXQpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNoZWNrU3RhcnRMaW1pdChzdGFydCwgbGltaXQpOworCisgICAgICAgIHVwZGF0ZURhbWFnZWRSYW5nZShzdGFydCwgbGltaXQsIHNyY0xpbWl0LXNyY1N0YXJ0KTsKKworICAgICAgICBmQ2hhckJ1ZmZlci5yZXBsYWNlKHN0YXJ0LCBsaW1pdCwgdGV4dCwgc3JjU3RhcnQsIHNyY0xpbWl0KTsKKyAgICAgICAgZlN0eWxlQnVmZmVyLnJlcGxhY2Uoc3RhcnQsIGxpbWl0LCB0ZXh0LCBzcmNTdGFydCwgc3JjTGltaXQpOworICAgICAgICBmUGFyYWdyYXBoQnVmZmVyLnJlcGxhY2Uoc3RhcnQsIGxpbWl0LCB0ZXh0LCBzcmNTdGFydCwgc3JjTGltaXQsIGZEYW1hZ2VkUmFuZ2UpOworICAgICAgICBmVGltZVN0YW1wICs9IDE7CisgICAgfQorCisvKioKKyogUmVwbGFjZSB0aGUgY2hhcmFjdGVycyBhbmQgc3R5bGVzIGluIHRoZSByYW5nZSBbPGNvZGU+c3RhcnQ8L2NvZGU+LCA8Y29kZT5saW1pdDwvY29kZT4pIHdpdGggdGhlIGNoYXJhY3RlcnMKKyogYW5kIHN0eWxlcyBpbiA8Y29kZT5zcmNUZXh0PC9jb2RlPi4gIDxjb2RlPnNyY1RleHQ8L2NvZGU+IGlzIG5vdAorKiBtb2RpZmllZC4KKyogQHBhcmFtIHN0YXJ0IHRoZSBvZmZzZXQgYXQgd2hpY2ggdGhlIHJlcGxhY2Ugb3BlcmF0aW9uIGJlZ2lucworKiBAcGFyYW0gbGltaXQgdGhlIG9mZnNldCBhdCB3aGljaCB0aGUgcmVwbGFjZSBvcGVyYXRpb24gZW5kcy4gIFRoZSBjaGFyYWN0ZXIgYW5kIHN0eWxlIGF0CisqIDxjb2RlPmxpbWl0PC9jb2RlPiBpcyBub3QgbW9kaWZpZWQuCisqIEBwYXJhbSBzcmNUZXh0IHRoZSBzb3VyY2UgZm9yIHRoZSBuZXcgY2hhcmFjdGVycyBhbmQgc3R5bGVzCisqLworICAgIHB1YmxpYyB2b2lkIHJlcGxhY2UoaW50IHN0YXJ0LCBpbnQgbGltaXQsIE1Db25zdFRleHQgdGV4dCkgeworCisgICAgICAgIHJlcGxhY2Uoc3RhcnQsIGxpbWl0LCB0ZXh0LCAwLCB0ZXh0Lmxlbmd0aCgpKTsKKyAgICB9CisKKy8qKgorKiBSZXBsYWNlIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSByYW5nZSBbPGNvZGU+c3RhcnQ8L2NvZGU+LCA8Y29kZT5saW1pdDwvY29kZT4pIHdpdGggdGhlIGNoYXJhY3RlcnMKKyogaW4gPGNvZGU+c3JjQ2hhcnM8L2NvZGU+IGluIHRoZSByYW5nZSBbPGNvZGU+c3JjU3RhcnQ8L2NvZGU+LCA8Y29kZT5zcmNMaW1pdDwvY29kZT4pLiAgTmV3IGNoYXJhY3RlcnMgdGFrZSBvbiB0aGUgc3R5bGUKKyogPGNvZGU+Y2hhcnNTdHlsZTwvY29kZT4uCisqIDxjb2RlPnNyY0NoYXJzPC9jb2RlPiBpcyBub3QgbW9kaWZpZWQuCisqIEBwYXJhbSBzdGFydCB0aGUgb2Zmc2V0IGF0IHdoaWNoIHRoZSByZXBsYWNlIG9wZXJhdGlvbiBiZWdpbnMKKyogQHBhcmFtIGxpbWl0IHRoZSBvZmZzZXQgYXQgd2hpY2ggdGhlIHJlcGxhY2Ugb3BlcmF0aW9uIGVuZHMuICBUaGUgY2hhcmFjdGVyIGF0CisqIDxjb2RlPmxpbWl0PC9jb2RlPiBpcyBub3QgbW9kaWZpZWQuCisqIEBwYXJhbSBzcmNDaGFycyB0aGUgc291cmNlIGZvciB0aGUgbmV3IGNoYXJhY3RlcnMKKyogQHBhcmFtIHNyY1N0YXJ0IHRoZSBvZmZzZXQgaW50byA8Y29kZT5zcmNDaGFyczwvY29kZT4gd2hlcmUgbmV3IGNoYXJhY3RlcnMgd2lsbCBiZSBvYnRhaW5lZAorKiBAcGFyYW0gc3JjTGltaXQgdGhlIG9mZnNldCBpbnRvIDxjb2RlPnNyY0NoYXJzPC9jb2RlPiB3aGVyZSB0aGUgbmV3IGNoYXJhY3RlcnMgZW5kCisqIEBwYXJhbSBjaGFyc1N0eWxlIHRoZSBzdHlsZSBvZiB0aGUgbmV3IGNoYXJhY3RlcnMKKyovCisgICAgcHVibGljIHZvaWQgcmVwbGFjZShpbnQgc3RhcnQsIGludCBsaW1pdCwgY2hhcltdIHNyY0NoYXJzLCBpbnQgc3JjU3RhcnQsIGludCBzcmNMaW1pdCwgQXR0cmlidXRlTWFwIGNoYXJzU3R5bGUpCisgICAgeworICAgICAgICBjaGVja1N0YXJ0TGltaXQoc3RhcnQsIGxpbWl0KTsKKworICAgICAgICBpZiAoc3RhcnQgPT0gbGltaXQgJiYgc3JjU3RhcnQgPT0gc3JjTGltaXQpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHVwZGF0ZURhbWFnZWRSYW5nZShzdGFydCwgbGltaXQsIHNyY0xpbWl0LXNyY1N0YXJ0KTsKKworICAgICAgICBmQ2hhckJ1ZmZlci5yZXBsYWNlKHN0YXJ0LCBsaW1pdCwgc3JjQ2hhcnMsIHNyY1N0YXJ0LCBzcmNMaW1pdCk7CisKKyAgICAgICAgcmVwbGFjZUNoYXJTdHlsZXNXaXRoKHN0YXJ0LCBsaW1pdCwgc3RhcnQgKyAoc3JjTGltaXQtc3JjU3RhcnQpLCBjaGFyc1N0eWxlKTsKKworICAgICAgICBmUGFyYWdyYXBoQnVmZmVyLmRlbGV0ZVRleHQoc3RhcnQsIGxpbWl0LCBmRGFtYWdlZFJhbmdlKTsKKyAgICAgICAgZlBhcmFncmFwaEJ1ZmZlci5pbnNlcnRUZXh0KHN0YXJ0LCBzcmNDaGFycywgc3JjU3RhcnQsIHNyY0xpbWl0KTsKKworICAgICAgICBmVGltZVN0YW1wICs9IDE7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHJlcGxhY2VDaGFyU3R5bGVzV2l0aChpbnQgc3RhcnQsIGludCBvbGRMaW1pdCwgaW50IG5ld0xpbWl0LCBBdHRyaWJ1dGVNYXAgc3R5bGUpIHsKKworICAgICAgICBpZiAoc3RhcnQgPCBvbGRMaW1pdCkgeworICAgICAgICAgICAgZlN0eWxlQnVmZmVyLmRlbGV0ZVRleHQoc3RhcnQsIG9sZExpbWl0KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoc3RhcnQgPCBuZXdMaW1pdCkgeworICAgICAgICAgICAgaWYgKGZvcmNlTW9kaWZpZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGZvcmNlTW9kaWZpZXIgPSBuZXcgRm9yY2VNb2RpZmllcigpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZm9yY2VNb2RpZmllci5zZXRTdHlsZShzdHlsZSk7CisgICAgICAgICAgICBmU3R5bGVCdWZmZXIuaW5zZXJ0VGV4dChzdGFydCwgbmV3TGltaXQpOworICAgICAgICAgICAgZlN0eWxlQnVmZmVyLm1vZGlmeVN0eWxlcyhzdGFydCwgbmV3TGltaXQsIGZvcmNlTW9kaWZpZXIsIG51bGwpOworICAgICAgICB9CisgICAgfQorCisvKioKKyogUmVwbGFjZSB0aGUgY2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UgWzxjb2RlPnN0YXJ0PC9jb2RlPiwgPGNvZGU+bGltaXQ8L2NvZGU+KSB3aXRoIHRoZSBjaGFyYWN0ZXIgPGNvZGU+c3JjQ2hhcjwvY29kZT4uCisqIFRoZSBuZXcgY2hhcmFjdGVyIHRha2VzIG9uIHRoZSBzdHlsZSA8Y29kZT5jaGFyU3R5bGU8L2NvZGU+CisqIEBwYXJhbSBzdGFydCB0aGUgb2Zmc2V0IGF0IHdoaWNoIHRoZSByZXBsYWNlIG9wZXJhdGlvbiBiZWdpbnMKKyogQHBhcmFtIGxpbWl0IHRoZSBvZmZzZXQgYXQgd2hpY2ggdGhlIHJlcGxhY2Ugb3BlcmF0aW9uIGVuZHMuICBUaGUgY2hhcmFjdGVyIGF0CisqIDxjb2RlPmxpbWl0PC9jb2RlPiBpcyBub3QgbW9kaWZpZWQuCisqIEBwYXJhbSBzcmNDaGFyIHRoZSBuZXcgY2hhcmFjdGVyCisqIEBwYXJhbSBjaGFyc1N0eWxlIHRoZSBzdHlsZSBvZiB0aGUgbmV3IGNoYXJhY3RlcgorKi8KKyAgICBwdWJsaWMgdm9pZCByZXBsYWNlKGludCBzdGFydCwgaW50IGxpbWl0LCBjaGFyIHNyY0NoYXIsIEF0dHJpYnV0ZU1hcCBjaGFyU3R5bGUpCisgICAgeworICAgICAgICBjaGVja1N0YXJ0TGltaXQoc3RhcnQsIGxpbWl0KTsKKworICAgICAgICB1cGRhdGVEYW1hZ2VkUmFuZ2Uoc3RhcnQsIGxpbWl0LCAxKTsKKworICAgICAgICBmQ2hhckJ1ZmZlci5yZXBsYWNlKHN0YXJ0LCBsaW1pdCwgc3JjQ2hhcik7CisKKyAgICAgICAgcmVwbGFjZUNoYXJTdHlsZXNXaXRoKHN0YXJ0LCBsaW1pdCwgc3RhcnQgKyAxLCBjaGFyU3R5bGUpOworCisgICAgICAgIGlmIChzdGFydCA8IGxpbWl0KSB7CisgICAgICAgICAgICBmUGFyYWdyYXBoQnVmZmVyLmRlbGV0ZVRleHQoc3RhcnQsIGxpbWl0LCBmRGFtYWdlZFJhbmdlKTsKKyAgICAgICAgfQorCisgICAgICAgIGZQYXJhZ3JhcGhCdWZmZXIuaW5zZXJ0VGV4dChzdGFydCwgc3JjQ2hhcik7CisKKyAgICAgICAgZlRpbWVTdGFtcCArPSAxOworICAgIH0KKworLyoqCisqIFJlcGxhY2UgdGhlIGVudGlyZSBjb250ZW50cyBvZiB0aGlzIE1UZXh0IChib3RoIGNoYXJhY3RlcnMgYW5kIHN0eWxlcykgd2l0aAorKiB0aGUgY29udGVudHMgb2YgPGNvZGU+c3JjVGV4dDwvY29kZT4uCisqIEBwYXJhbSBzcmNUZXh0IHRoZSBzb3VyY2UgZm9yIHRoZSBuZXcgY2hhcmFjdGVycyBhbmQgc3R5bGVzCisqLworICAgIHB1YmxpYyB2b2lkIHJlcGxhY2VBbGwoTUNvbnN0VGV4dCBzcmNUZXh0KQorICAgIHsKKyAgICAgICAgcmVwbGFjZSgwLCBsZW5ndGgoKSwgc3JjVGV4dCwgMCwgc3JjVGV4dC5sZW5ndGgoKSk7CisgICAgfQorCisvKioKKyogSW5zZXJ0IHRoZSBjb250ZW50cyBvZiA8Y29kZT5zcmNUZXh0PC9jb2RlPiAoYm90aCBjaGFyYWN0ZXJzIGFuZCBzdHlsZXMpIGludG8gdGhpcworKiBNVGV4dCBhdCB0aGUgcG9zaXRpb24gc3BlY2lmaWVkIGJ5IDxjb2RlPnBvczwvY29kZT4uCisqIEBwYXJhbSBwb3MgVGhlIGNoYXJhY3RlciBvZmZzZXQgd2hlcmUgdGhlIG5ldyB0ZXh0IGlzIHRvIGJlIGluc2VydGVkLgorKiBAcGFyYW0gc3JjVGV4dCBUaGUgdGV4dCB0byBpbnNlcnQuCisqLworICAgIHB1YmxpYyB2b2lkIGluc2VydChpbnQgcG9zLCBNQ29uc3RUZXh0IHNyY1RleHQpCisgICAgeworICAgICAgICByZXBsYWNlKHBvcywgcG9zLCBzcmNUZXh0LCAwLCBzcmNUZXh0Lmxlbmd0aCgpKTsKKyAgICB9CisKKy8qKgorKiBBcHBlbmQgdGhlIGNvbnRlbnRzIG9mIDxjb2RlPnNyY1RleHQ8L2NvZGU+IChib3RoIGNoYXJhY3RlcnMgYW5kIHN0eWxlcykgdG8gdGhlCisqIGVuZCBvZiB0aGlzIE1UZXh0LgorKiBAcGFyYW0gc3JjVGV4dCBUaGUgdGV4dCB0byBhcHBlbmQuCisqLworICAgIHB1YmxpYyB2b2lkIGFwcGVuZChNQ29uc3RUZXh0IHNyY1RleHQpCisgICAgeworICAgICAgICByZXBsYWNlKGxlbmd0aCgpLCBsZW5ndGgoKSwgc3JjVGV4dCwgMCwgc3JjVGV4dC5sZW5ndGgoKSk7CisgICAgfQorCisvKioKKyogRGVsZXRlIHRoZSBzcGVjaWZpZWQgcmFuZ2Ugb2YgY2hhcmFjdGVycyAoYW5kIHN0eWxlcykuCisqIEBwYXJhbSBzdGFydCBPZmZzZXQgb2YgdGhlIGZpcnN0IGNoYXJhY3RlciB0byBkZWxldGUuCisqIEBwYXJhbSBsaW1pdCBPZmZzZXQgb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBhZnRlciB0aGUgcmFuZ2UgdG8gZGVsZXRlLgorKi8KKyAgICBwdWJsaWMgdm9pZCByZW1vdmUoaW50IHN0YXJ0LCBpbnQgbGltaXQpCisgICAgeworICAgICAgICByZXBsYWNlKHN0YXJ0LCBsaW1pdCwgKGNoYXJbXSludWxsLCAwLCAwLCBBdHRyaWJ1dGVNYXAuRU1QVFlfQVRUUklCVVRFX01BUCk7CisgICAgfQorCisvKioKKyogRGVsZXRlIGFsbCBjaGFyYWN0ZXJzIGFuZCBzdHlsZXMuICBBbHdheXMgaW5jcmVtZW50cyB0aW1lIHN0YW1wLgorKi8KKyAgICBwdWJsaWMgdm9pZCByZW1vdmUoKQorICAgIHsKKyAgICAgICAgLy8gcmF0aGVyIHRoYW4gZ29pbmcgdGhyb3VnaCByZXBsYWNlKCksIGp1c3QgcmVpbml0aWFsaXplIHRoZSBTdHlsZWRUZXh0LAorICAgICAgICAvLyBsZXR0aW5nIHRoZSBvbGQgZGF0YSBzdHJ1Y3R1cmVzIGZhbGwgb24gdGhlIGZsb29yCisgICAgICAgIGZDaGFyQnVmZmVyID0gbmV3IENoYXJCdWZmZXIoKTsKKyAgICAgICAgZlN0eWxlQnVmZmVyID0gbmV3IFN0eWxlQnVmZmVyKHRoaXMsIEF0dHJpYnV0ZU1hcC5FTVBUWV9BVFRSSUJVVEVfTUFQKTsKKyAgICAgICAgZlBhcmFncmFwaEJ1ZmZlciA9IG5ldyBQYXJhZ3JhcGhCdWZmZXIoZkNoYXJCdWZmZXIpOworICAgICAgICBmVGltZVN0YW1wICs9IDE7CisgICAgICAgIGZEYW1hZ2VkUmFuZ2VbMF0gPSBmRGFtYWdlZFJhbmdlWzFdID0gMDsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gc3RvcmFnZSBtYW5hZ2VtZW50CisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvKioKKyogTWluaW1pemUgdGhlIGFtb3VudCBvZiBtZW1vcnkgdXNlZCBieSB0aGUgTVRleHQgb2JqZWN0LgorKi8KKyAgICBwdWJsaWMgdm9pZCBjb21wcmVzcygpIHsKKworICAgICAgICBmQ2hhckJ1ZmZlci5jb21wcmVzcygpOworICAgICAgICBmU3R5bGVCdWZmZXIuY29tcHJlc3MoKTsKKyAgICAgICAgZlBhcmFncmFwaEJ1ZmZlci5jb21wcmVzcygpOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBzdHlsZSBtb2RpZmljYXRpb24KKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8qKgorKiBTZXQgdGhlIHN0eWxlIG9mIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBNVGV4dCBvYmplY3QgdG8KKyogPGNvZGU+QXR0cmlidXRlTWFwLkVNUFRZX0FUVFJJQlVURV9NQVA8L2NvZGU+LgorKi8KKyAgICBwdWJsaWMgdm9pZCByZW1vdmVDaGFyYWN0ZXJTdHlsZXMoKSB7CisKKyAgICAgICAgZlN0eWxlQnVmZmVyID0gbmV3IFN0eWxlQnVmZmVyKHRoaXMsIEF0dHJpYnV0ZU1hcC5FTVBUWV9BVFRSSUJVVEVfTUFQKTsKKyAgICAgICAgZlRpbWVTdGFtcCArPSAxOworICAgICAgICBmRGFtYWdlZFJhbmdlWzBdID0gMDsKKyAgICAgICAgZkRhbWFnZWRSYW5nZVsxXSA9IGxlbmd0aCgpOworICAgIH0KKworLyoqCisqIEludm9rZSB0aGUgZ2l2ZW4gbW9kaWZpZXIgb24gYWxsIGNoYXJhY3RlciBzdHlsZXMgZnJvbSBzdGFydCB0byBsaW1pdC4KKyogQHBhcmFtIG1vZGlmaWVyIHRoZSBtb2RpZmllciB0byBhcHBseSB0byB0aGUgcmFuZ2UuCisqIEBwYXJhbSBzdGFydCB0aGUgc3RhcnQgb2YgdGhlIHJhbmdlIG9mIHRleHQgdG8gbW9kaWZ5LgorKiBAcGFyYW0gbGltaXQgdGhlIGxpbWl0IG9mIHRoZSByYW5nZSBvZiB0ZXh0IHRvIG1vZGlmeS4KKyovCisgICAgcHVibGljIHZvaWQgbW9kaWZ5Q2hhcmFjdGVyU3R5bGVzKGludCBzdGFydCwgaW50IGxpbWl0LCBTdHlsZU1vZGlmaWVyIG1vZGlmaWVyKSB7CisKKyAgICAgICAgY2hlY2tTdGFydExpbWl0KHN0YXJ0LCBsaW1pdCk7CisgICAgICAgIGJvb2xlYW4gbW9kaWZpZWQgPSBmU3R5bGVCdWZmZXIubW9kaWZ5U3R5bGVzKHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZEYW1hZ2VkUmFuZ2UpOworICAgICAgICBpZiAobW9kaWZpZWQpIHsKKyAgICAgICAgICAgIGZUaW1lU3RhbXAgKz0gMTsKKyAgICAgICAgfQorICAgIH0KKworLyoqCisqIEludm9rZSB0aGUgZ2l2ZW4gbW9kaWZpZXIgb24gYWxsIHBhcmFncmFwaCBzdHlsZXMgaW4gcGFyYWdyYXBocworKiBjb250YWluaW5nIGNoYXJhY3RlcnMgaW4gdGhlIHJhbmdlIFtzdGFydCwgbGltaXQpLgorKiBAcGFyYW0gbW9kaWZpZXIgdGhlIG1vZGlmaWVyIHRvIGFwcGx5IHRvIHRoZSByYW5nZS4KKyogQHBhcmFtIHN0YXJ0IHRoZSBzdGFydCBvZiB0aGUgcmFuZ2Ugb2YgdGV4dCB0byBtb2RpZnkuCisqIEBwYXJhbSBsaW1pdCB0aGUgbGltaXQgb2YgdGhlIHJhbmdlIG9mIHRleHQgdG8gbW9kaWZ5LgorKi8KKyAgICBwdWJsaWMgdm9pZCBtb2RpZnlQYXJhZ3JhcGhTdHlsZXMoaW50IHN0YXJ0LCBpbnQgbGltaXQsIFN0eWxlTW9kaWZpZXIgbW9kaWZpZXIpIHsKKworICAgICAgICBjaGVja1N0YXJ0TGltaXQoc3RhcnQsIGxpbWl0KTsKKyAgICAgICAgYm9vbGVhbiBtb2RpZmllZCA9IGZQYXJhZ3JhcGhCdWZmZXIubW9kaWZ5UGFyYWdyYXBoU3R5bGVzKHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZEYW1hZ2VkUmFuZ2UpOworICAgICAgICBpZiAobW9kaWZpZWQpIHsKKyAgICAgICAgICAgIGZUaW1lU3RhbXAgKz0gMTsKKyAgICAgICAgfQorICAgIH0KKworLyoqCisqIFJlc2V0IHRoZSBkYW1hZ2VkIHJhbmdlIHRvIGFuIGVtcHR5IGludGVydmFsLCBhbmQgYmVnaW4gYWNjdW11bGF0aW5nIHRoZSBkYW1hZ2VkCisqIHJhbmdlLiAgVGhlIGRhbWFnZWQgcmFuZ2UgaW5jbHVkZXMgZXZlcnkgaW5kZXggd2hlcmUgYSBjaGFyYWN0ZXIsIGNoYXJhY3RlciBzdHlsZSwKKyogb3IgcGFyYWdyYXBoIHN0eWxlIGhhcyBjaGFuZ2VkLgorKiBAc2VlICNkYW1hZ2VkUmFuZ2VTdGFydAorKiBAc2VlICNkYW1hZ2VkUmFuZ2VMaW1pdAorKi8KKyAgICBwdWJsaWMgdm9pZCByZXNldERhbWFnZWRSYW5nZSgpIHsKKworICAgICAgICBmRGFtYWdlZFJhbmdlWzBdID0gSW50ZWdlci5NQVhfVkFMVUU7CisgICAgICAgIGZEYW1hZ2VkUmFuZ2VbMV0gPSBJbnRlZ2VyLk1JTl9WQUxVRTsKKyAgICB9CisKKy8qKgorKiBSZXR1cm4gdGhlIHN0YXJ0IG9mIHRoZSBkYW1hZ2VkIHJhbmdlLgorKiBJZiB0aGUgc3RhcnQgaXMKKyogPGNvZGU+SW50ZWdlci5NQVhfVkFMVUU8L2NvZGU+IGFuZCB0aGUgbGltaXQgaXMKKyogPGNvZGU+SW50ZWdlci5NSU5fVkFMVUU8L2NvZGU+LCB0aGVuIHRoZSBkYW1hZ2VkIHJhbmdlCisqIGlzIGVtcHR5LgorKiBAcmV0dXJuIHRoZSBzdGFydCBvZiB0aGUgZGFtYWdlZCByYW5nZQorKiBAc2VlICNkYW1hZ2VkUmFuZ2VMaW1pdAorKiBAc2VlICNyZXNldERhbWFnZWRSYW5nZQorKi8KKyAgICBwdWJsaWMgaW50IGRhbWFnZWRSYW5nZVN0YXJ0KCkgeworCisgICAgICAgIHJldHVybiBmRGFtYWdlZFJhbmdlWzBdOworICAgIH0KKworLyoqCisqIFJldHVybiB0aGUgbGltaXQgb2YgdGhlIGRhbWFnZWQgcmFuZ2UuCisqIElmIHRoZSBzdGFydCBpcworKiA8Y29kZT5JbnRlZ2VyLk1BWF9WQUxVRTwvY29kZT4gYW5kIHRoZSBsaW1pdCBpcworKiA8Y29kZT5JbnRlZ2VyLk1JTl9WQUxVRTwvY29kZT4sIHRoZW4gdGhlIGRhbWFnZWQgcmFuZ2UKKyogaXMgZW1wdHkuCisqIEByZXR1cm4gdGhlIGxpbWl0IG9mIHRoZSBkYW1hZ2VkIHJhbmdlCisqIEBzZWUgI2RhbWFnZWRSYW5nZVN0YXJ0CisqIEBzZWUgI3Jlc2V0RGFtYWdlZFJhbmdlCisqLworICAgIHB1YmxpYyBpbnQgZGFtYWdlZFJhbmdlTGltaXQoKSB7CisKKyAgICAgICAgcmV0dXJuIGZEYW1hZ2VkUmFuZ2VbMV07CisgICAgfQorCisgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpCisgICAgeworICAgICAgICBTdHJpbmcgcmVzdWx0ID0iIjsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGgoKTsgaSsrKSB7CisgICAgICAgICAgICByZXN1bHQgKz0gYXQoaSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIElNUExFTUVOVEFUSU9OCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgIC8qIGNoZWNrIGEgcmFuZ2UgdG8gc2VlIGlmIGl0IGlzIHdlbGwgZm9ybWVkIGFuZCB3aXRoaW4gdGhlIGJvdW5kcyBvZiB0aGUgdGV4dCAqLworICAgIHByaXZhdGUgdm9pZCBjaGVja1N0YXJ0TGltaXQoaW50IHN0YXJ0LCBpbnQgbGltaXQpCisgICAgeworICAgICAgICBpZiAoc3RhcnQgPiBsaW1pdCkgeworICAgICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oIlN0YXJ0IGlzIGxlc3MgdGhhbiBsaW1pdC4gc3RhcnQ6IitzdGFydCsiOyBsaW1pdDoiK2xpbWl0KTsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlN0YXJ0IGlzIGdyZWF0ZXIgdGhhbiBsaW1pdC4gc3RhcnQ6IitzdGFydCsiOyBsaW1pdDoiK2xpbWl0KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzdGFydCA8IDApIHsKKyAgICAgICAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCJTdGFydCBpcyBuZWdhdGl2ZS4gc3RhcnQ6IitzdGFydCk7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJTdGFydCBpcyBuZWdhdGl2ZS4gc3RhcnQ6IitzdGFydCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobGltaXQgPiBsZW5ndGgoKSkgeworICAgICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oIkxpbWl0IGlzIGdyZWF0ZXIgdGhhbiBsZW5ndGguICBsaW1pdDoiK2xpbWl0KTsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkxpbWl0IGlzIGdyZWF0ZXIgdGhhbiBsZW5ndGguICBsaW1pdDoiK2xpbWl0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gTEVTU19USEFOX0xFTkdUSCA9IGZhbHNlOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gTk9UX0dSRUFURVJfVEhBTl9MRU5HVEggPSB0cnVlOworCisgICAgcHJpdmF0ZSB2b2lkIGNoZWNrUG9zKGludCBwb3MsIGJvb2xlYW4gZW5kQWxsb3dlZCkgeworCisgICAgICAgIGludCBsYXN0VmFsaWRQb3MgPSBsZW5ndGgoKTsKKyAgICAgICAgaWYgKGVuZEFsbG93ZWQgPT0gTEVTU19USEFOX0xFTkdUSCkgeworICAgICAgICAgICAgLS1sYXN0VmFsaWRQb3M7CisgICAgICAgIH0KKworICAgICAgICBpZiAocG9zIDwgMCB8fCBwb3MgPiBsYXN0VmFsaWRQb3MpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlBvc2l0aW9uIGlzIG91dCBvZiByYW5nZS4iKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N0eWxlZHRleHQvVGFiU3RvcC5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvc3R5bGVkdGV4dC9UYWJTdG9wLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYjU3ODg5YwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N0eWxlZHRleHQvVGFiU3RvcC5qYXZhCkBAIC0wLDAgKzEsMTg1IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBUYWJTdG9wLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NDU6MTAgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0OworCitpbXBvcnQgamF2YS5pby5FeHRlcm5hbGl6YWJsZTsKK2ltcG9ydCBqYXZhLmlvLk9iamVjdElucHV0OworaW1wb3J0IGphdmEuaW8uT2JqZWN0T3V0cHV0OworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CisKKy8qKgorICogVGFiU3RvcCByZXByZXNlbnRzIGEgcG9zaXRpb24gb24gYSB0YWIgcnVsZXIuICBFYWNoIHRhYiBzdG9wIGhhcyBhCisgKiBwb3NpdGlvbiwgZ2l2aW5nIGl0cyBsb2NhdGlvbiBvbiB0aGUgcnVsZXIsIGFuZCBvbmUgb2Ygc2V2ZXJhbAorICogdHlwZXMuICBUaGUgdHlwZSBkZXRlcm1pbmVzIGhvdyBhIHNlZ21lbnQgY29udHJvbGVkIGJ5IHRoaXMgVGFiU3RvcAorICogaXMgcG9zaXRpb25lZCBvbiBhIGxpbmU6CisgKiA8dWw+CisgKiA8bGk+PGNvZGU+a0xlYWRpbmc8L2NvZGU+IC0gdGhlIGxlYWRpbmcgZWRnZSBvZiB0aGUgc2VnbWVudCBpcyBhbGlnbmVkIHRvCisgKiAgICAgdGhlIFRhYlN0b3AncyBwb3NpdGlvbjwvbGk+CisgKiA8bGk+PGNvZGU+a0NlbnRlcjwvY29kZT4gLSB0aGUgc2VnbWVudCBpcyBjZW50ZXJlZCBvbiB0aGlzIFRhYlN0b3AncworICogICAgIHBvc2l0aW9uPC9saT4KKyAqIDxsaT48Y29kZT5rVHJhaWxpbmc8L2NvZGU+IC0gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHNlZ21lbnQgaXMgYWxpZ25lZCB0bworICogICAgIHRoZSBUYWJTdG9wJ3MgcG9zaXRpb248L2xpPgorICogPGxpPjxjb2RlPmtEZWNpbWFsPC9jb2RlPiAtIHRoZSBmaXJzdCBkZWNpbWFsIGluIHRoZSBzZWdtZW50IGlzIGFsaWduZWQgdG8KKyAqICAgICB0aGUgVGFiU3RvcCdzIHBvc2l0aW9uPC9saT4KKyAqIDxsaT48Y29kZT5rQXV0bzwvY29kZT4gLSBzZW1hbnRpY2FsbHkgdGhlIHNhbWUgYXMgPGNvZGU+a0xlYWRpbmc8L2NvZGU+LgorICogICAgIFVzZWQgYnkgdGFiIHJ1bGVycyB0byBpbmRpY2F0ZSB0aGF0IGFsbCBzdWJzZXF1ZW50IHRhYiBzdG9wcworICogICAgIHdpbGwgYmUgYXQgYXV0b3NwYWNlZCBpbnRlcnZhbHMuPC9saT4KKyAqIDwvdWw+CisgKiBAc2VlIE1UYWJSdWxlcgorICovCitwdWJsaWMgZmluYWwgY2xhc3MgVGFiU3RvcCBpbXBsZW1lbnRzIEV4dGVybmFsaXphYmxlCit7CisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ1VSUkVOVF9WRVJTSU9OID0gMTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAyMjM1NjkzNDsKKworICAgIHByaXZhdGUgYnl0ZSBmVHlwZTsgICAgLy8gbGVmdCwgY2VudGVyLCByaWdodCwgZGVjaW1hbAorICAgIHByaXZhdGUgaW50IGZQb3NpdGlvbjsgLy8gdGFiIHN0b3AgcG9zaXRpb24gZnJvbSBsaW5lIG9yaWdpbi4KKworICAgIC8qKgorICAgICAqIEEgVGFiU3RvcCB3aXRoIHRoaXMgdHlwZSBhbGlnbnMgaXRzIHNlZ21lbnQncyBsZWFkaW5nIGVkZ2UKKyAgICAgKiB0byB0aGUgVGFiU3RvcCdzIHBvc2l0aW9uLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgYnl0ZSBrTGVhZGluZyA9IDA7CisKKyAgICAvKioKKyAgICAgKiBBIFRhYlN0b3Agd2l0aCB0aGlzIHR5cGUgYWxpZ25zIGl0cyBzZWdtZW50J3MgY2VudGVyCisgICAgICogdG8gdGhlIFRhYlN0b3AncyBwb3NpdGlvbi4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGJ5dGUga0NlbnRlciA9IDE7CisKKyAgICAvKioKKyAgICAgKiBBIFRhYlN0b3Agd2l0aCB0aGlzIHR5cGUgYWxpZ25zIGl0cyBzZWdtZW50J3MgdHJhaWxpbmcgZWRnZQorICAgICAqIHRvIHRoZSBUYWJTdG9wJ3MgcG9zaXRpb24uCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBieXRlIGtUcmFpbGluZyA9IDI7CisKKyAgICAvKioKKyAgICAgKiBBIFRhYlN0b3Agd2l0aCB0aGlzIHR5cGUgYWxpZ25zIGl0cyBzZWdtZW50J3MgZmlyc3QgZGVjaW1hbAorICAgICAqIHRvIHRoZSBUYWJTdG9wJ3MgcG9zaXRpb24uCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBieXRlIGtEZWNpbWFsID0gMzsKKworICAgIC8qKgorICAgICAqIEEgVGFiU3RvcCB3aXRoIHRoaXMgdHlwZSBhbGlnbnMgaXRzIHNlZ21lbnQncyBsZWFkaW5nIGVkZ2UKKyAgICAgKiB0byB0aGUgVGFiU3RvcCdzIHBvc2l0aW9uLiAgQWZ0ZXIgYSBUYWJTdG9wIG9mIHRoaXMgdHlwZSwKKyAgICAgKiBhbGwgdGFicyBhcmUgYXQgYXV0b3NwYWNlIGludGVydmFscy4gIFVzdWFsbHksIGNsaWVudHMgd2lsbAorICAgICAqIG5vdCBjb25zdHJ1Y3QgVGFiU3RvcHMgd2l0aCB0aGlzIHR5cGUuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBieXRlIGtBdXRvID0gNDsKKworICAgIC8qKgorICAgICAqIENyZWF0ZSBhIFRhYlN0b3Agd2l0aCBwb3NpdGlvbiAwIGFuZCB0eXBlIDxjb2RlPmtMZWFkaW5nPC9jb2RlPi4KKyAgICAgKi8KKyAgICBwdWJsaWMgVGFiU3RvcCgpIHsKKworICAgICAgIHRoaXMoMCwga0xlYWRpbmcpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZSBhIFRhYlN0b3Agd2l0aCB0aGUgZ2l2ZW4gcG9zaXRpb24gYW5kIHR5cGUuCisgICAgICogQHBhcmFtIHBvc2l0aW9uIHRoZSBUYWJTdG9wJ3MgcG9zaXRpb24KKyAgICAgKiBAcGFyYW0gdHlwZSB0aGUgVGFiU3RvcCdzIHR5cGUuICBNdXN0IGJlIG9uZSBvZiBjb25zdGFudHMKKyAgICAgKiAgICAgIGluIHRoaXMgY2xhc3MuCisgICAgICovCisgICAgcHVibGljIFRhYlN0b3AoaW50IHBvc2l0aW9uLCBieXRlIHR5cGUpIHsKKworICAgICAgICBpZiAodHlwZSA8IGtMZWFkaW5nIHx8IHR5cGUgPiBrQXV0bykgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCB0YWIgdHlwZSIpOworICAgICAgICB9CisKKyAgICAgICAgZlBvc2l0aW9uID0gcG9zaXRpb247CisgICAgICAgIGZUeXBlID0gdHlwZTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCByZWFkRXh0ZXJuYWwoT2JqZWN0SW5wdXQgaW4pIHRocm93cyBJT0V4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiB7CisKKyAgICAgICAgaW50IHZlcnNpb24gPSBpbi5yZWFkSW50KCk7CisgICAgICAgIGlmICh2ZXJzaW9uICE9IENVUlJFTlRfVkVSU0lPTikgeworICAgICAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCJJbnZhbGlkIHZlcnNpb24gb2YgVGFiU3RvcC4iKTsKKyAgICAgICAgfQorICAgICAgICBmUG9zaXRpb24gPSBpbi5yZWFkSW50KCk7CisgICAgICAgIGZUeXBlID0gaW4ucmVhZEJ5dGUoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB3cml0ZUV4dGVybmFsKE9iamVjdE91dHB1dCBvdXQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisKKyAgICAgICAgb3V0LndyaXRlSW50KENVUlJFTlRfVkVSU0lPTik7CisgICAgICAgIG91dC53cml0ZUludChmUG9zaXRpb24pOworICAgICAgICBvdXQud3JpdGVCeXRlKGZUeXBlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb21wYXJlIHRoaXMgdG8gYW5vdGhlciBPYmplY3QuICBUYWJTdG9wcyBhcmUgZXF1YWwgaWYKKyAgICAgKiB0aGVpciBwb3NpdGlvbiBhbmQgdHlwZSBhcmUgdGhlIHNhbWUuCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCByaHMpCisgICAgeworICAgICAgICBpZiAocmhzID09IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIFRhYlN0b3AgcmhzVGFiOworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmhzVGFiID0gKFRhYlN0b3ApIHJoczsKKyAgICAgICAgfQorICAgICAgICBjYXRjaChDbGFzc0Nhc3RFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZUeXBlID09IHJoc1RhYi5mVHlwZSAmJiBmUG9zaXRpb24gPT0gcmhzVGFiLmZQb3NpdGlvbjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGhhc2ggY29kZSBmb3IgdGhpcyBUYWJTdG9wLiAgVGhlIGhhc2ggY29kZSBpcworICAgICAqIDxjb2RlPnBvc2l0aW9uIDw8IHR5cGU8L2NvZGU+LgorICAgICAqLworICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CisKKyAgICAgICAgcmV0dXJuIGZQb3NpdGlvbiA8PCBmVHlwZTsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkKKyAgICB7CisgICAgICAgIGNoYXIgdHlwZUNoYXI7CisgICAgICAgIHN3aXRjaCAoZlR5cGUpIHsKKyAgICAgICAgICAgIGNhc2Uga0xlYWRpbmc6IHR5cGVDaGFyID0gJ0wnOyBicmVhazsKKyAgICAgICAgICAgIGNhc2Uga0NlbnRlcjogdHlwZUNoYXIgPSAnQyc7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBrVHJhaWxpbmc6IHR5cGVDaGFyID0gJ1InOyBicmVhazsKKyAgICAgICAgICAgIGNhc2Uga0RlY2ltYWw6IHR5cGVDaGFyID0gJ0QnOyBicmVhazsKKyAgICAgICAgICAgIGNhc2Uga0F1dG86IHR5cGVDaGFyID0gJ0EnOyBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6IHR5cGVDaGFyID0gJz8nOyBicmVhazsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gIlRhYlN0b3BbIiArIEludGVnZXIudG9TdHJpbmcoZlBvc2l0aW9uKSArIHR5cGVDaGFyICsgJ10nOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgdHlwZSBvZiB0aGlzIFRhYlN0b3AuICBXaWxsIGJlIG9uZSBvZiB0aGUgY29uc3RhbnRzCisgICAgICogaW4gdGhpcyBjbGFzcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgYnl0ZSBnZXRUeXBlKCkgeworICAgICAgICByZXR1cm4gZlR5cGU7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBwb3NpdGlvbiBvZiB0aGlzIFRhYlN0b3AuCisgICAgICovCisgICAgcHVibGljIGludCBnZXRQb3NpdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIGZQb3NpdGlvbjsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N0eWxlZHRleHQvVGVzdEZhc3RJbnRCaW5hcnlTZWFyY2guamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N0eWxlZHRleHQvVGVzdEZhc3RJbnRCaW5hcnlTZWFyY2guamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wNGNiZjBjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvc3R5bGVkdGV4dC9UZXN0RmFzdEludEJpbmFyeVNlYXJjaC5qYXZhCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFRlc3RGYXN0SW50QmluYXJ5U2VhcmNoLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NDU6MTAgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0OworCitmaW5hbCBjbGFzcyBUZXN0RmFzdEludEJpbmFyeVNlYXJjaCB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKworICAgICAgICBib29sZWFuIHJlc3VsdCA9IG5ldyBUZXN0RmFzdEludEJpbmFyeVNlYXJjaCgpLnRlc3QoKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHJlc3VsdD8gIlBBU1NFRCIgOiAiRkFJTEVEIik7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gdGVzdCgpIHsKKworICAgICAgICBib29sZWFuIHJlc3VsdCA9IHRydWU7CisgICAgICAgIGludFtdIHRlc3QgPSB7LTUsIC0zLCAwLCAyLCA1fTsKKyAgICAgICAgRmFzdEludEJpbmFyeVNlYXJjaCBmaWJzID0gbmV3IEZhc3RJbnRCaW5hcnlTZWFyY2godGVzdCk7CisKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgMjsgaSsrKSB7CisgICAgICAgICAgICBpbnQgYmVmb3JlQW55ID0gZmlicy5maW5kSW5kZXgoLTYpOworICAgICAgICAgICAgaWYgKGJlZm9yZUFueSAhPSAtMSkgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpbnQgYXRFbmQgPSBmaWJzLmZpbmRJbmRleCg1KTsKKyAgICAgICAgICAgIGlmIChhdEVuZCAhPSB0ZXN0Lmxlbmd0aC0xKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGludCBhZnRlckFueSA9IGZpYnMuZmluZEluZGV4KDYpOworICAgICAgICAgICAgaWYgKGFmdGVyQW55ICE9IHRlc3QubGVuZ3RoLTEpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaW50IGV4YWN0bHkgPSBmaWJzLmZpbmRJbmRleCgtMyk7CisgICAgICAgICAgICBpZiAoZXhhY3RseSAhPSAxKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZpYnMgPSBuZXcgRmFzdEludEJpbmFyeVNlYXJjaChuZXcgaW50W10gezIwLCA0MH0pOworICAgICAgICAgICAgZmlicy5zZXREYXRhKHRlc3QpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC9zdHlsZWR0ZXh0L1ZhbGlkYXRpb24uamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N0eWxlZHRleHQvVmFsaWRhdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjJlZjdiNTUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC9zdHlsZWR0ZXh0L1ZhbGlkYXRpb24uamF2YQpAQCAtMCwwICsxLDM5IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBWYWxpZGF0aW9uLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NDU6MTAgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0OworCisvKioKKyAqIEl0ZXJhdG9ycyB1c2UgdGhpcyBjbGFzcyB0byBrZWVwIGZyb20gZ2V0dGluZyBvdXQgb2Ygc3luYyB3aXRoCisgKiB0aGVpciB1bmRlcmx5aW5nIGRhdGEuICBXaGVuIGNyZWF0ZWQsIHRoZSBpdGVyYXRvciBnZXRzIGEKKyAqIFZhbGlkYXRpb24gaW5zdGFuY2UuICBJZiB0aGUgdW5kZXJseWluZyBkYXRhIGNoYW5nZXMsIHRoZSBWYWxpZGF0aW9uCisgKiBiZWNvbWVzIGludmFsaWQuICBVc3VhbGx5IGl0ZXJhdG9ycyB3aWxsIHRocm93IGV4Y2VwdGlvbnMgaWYgYWNjZXNzZWQKKyAqIGFmdGVyIGJlY29taW5nIGludmFsaWQuCisgKi8KK2ZpbmFsIGNsYXNzIFZhbGlkYXRpb24geworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcml2YXRlIGJvb2xlYW4gZklzVmFsaWQgPSB0cnVlOworCisgICAgYm9vbGVhbiBpc1ZhbGlkKCkgeworCisgICAgICAgIHJldHVybiBmSXNWYWxpZDsKKyAgICB9CisKKyAgICB2b2lkIGludmFsaWRhdGUoKSB7CisKKyAgICAgICAgZklzVmFsaWQgPSBmYWxzZTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC9zdHlsZWR0ZXh0L3BhY2thZ2UuaHRtbCBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N0eWxlZHRleHQvcGFja2FnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjRmYWQxYTkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC9zdHlsZWR0ZXh0L3BhY2thZ2UuaHRtbApAQCAtMCwwICsxLDE5IEBACis8IS0tIAorLyoqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAwLTIwMDIsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N0eWxlZHRleHQvcGFja2FnZS5odG1sLHYgJAorICogJERhdGU6IDIwMDIvMTIvMTggMDM6NTY6NDEgJAorICogJFJldmlzaW9uOiAxLjIgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKy0tPgorPGh0bWw+Cis8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSI+CitQcm92aWRlcyBzdHlsZWQgdGV4dCBzdG9yYWdlIGFuZCByZWxhdGVkIGNsYXNzZXMuCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC9zd2luZ2RlbW8vU3dpbmdDb2RlRWRpdC5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvc3dpbmdkZW1vL1N3aW5nQ29kZUVkaXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi40MmVlNDk1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvc3dpbmdkZW1vL1N3aW5nQ29kZUVkaXQuamF2YQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBTd2luZ0NvZGVFZGl0LmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NDU6NDIgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5zd2luZ2RlbW87CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LmRlbW8uQ29kZUVkaXQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5kZW1vLkRvY3VtZW50V2luZG93OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuZGVtby5TeW50YXhDb2xvcmVyOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuZGVtby5UZXh0RG9jdW1lbnQ7CisKK3B1YmxpYyBjbGFzcyBTd2luZ0NvZGVFZGl0IGV4dGVuZHMgQ29kZUVkaXQgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAKKyAgICAgICAgbmV3IFN3aW5nQ29kZUVkaXQoYXJncywgMCk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBTd2luZ0NvZGVFZGl0KFN0cmluZ1tdIGFyZ3MsIGludCBzdGFydCkgeworICAgIAorICAgICAgICBzdXBlcihhcmdzLCBzdGFydCk7CisgICAgfQorICAgIAorICAgIHByb3RlY3RlZCBEb2N1bWVudFdpbmRvdyBjcmVhdGVEb2N1bWVudFdpbmRvdyhUZXh0RG9jdW1lbnQgZG9jdW1lbnQpIHsKKworICAgICAgICByZXR1cm4gbmV3IFN3aW5nRG9jdW1lbnRXaW5kb3codGhpcywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZTZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFN5bnRheENvbG9yZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbnVzKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvc3dpbmdkZW1vL1N3aW5nRG9jdW1lbnRXaW5kb3cuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N3aW5nZGVtby9Td2luZ0RvY3VtZW50V2luZG93LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNjkzZjZlNwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N3aW5nZGVtby9Td2luZ0RvY3VtZW50V2luZG93LmphdmEKQEAgLTAsMCArMSwyODAgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFN3aW5nRG9jdW1lbnRXaW5kb3cuamF2YSx2ICQgJFJldmlzaW9uOiAxLjIgJCAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNjozNyAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnN3aW5nZGVtbzsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLkpUZXh0UGFuZWw7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuVGV4dFBhbmVsTGlzdGVuZXI7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuVGV4dFBhbmVsU2V0dGluZ3M7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuTUNvbnN0VGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuU3R5bGVkVGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuU3R5bGVNb2RpZmllcjsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZU1hcDsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3dpbmd1aS5KVGFiUnVsZXI7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zd2luZ3VpLlN3aW5nTWVudUJ1aWxkZXI7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnByaW50LlByaW50aW5nVXRpbHM7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LmRlbW8uQXd0RG9jdW1lbnRXaW5kb3c7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5kZW1vLkRvY3VtZW50V2luZG93OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuZGVtby5FZGl0QXBwbGljYXRpb247CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5kZW1vLkVkaXRvclJlc291cmNlczsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LmRlbW8uUmVzb3VyY2VVdGlsczsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LmRlbW8uVGV4dERvY3VtZW50OworCitpbXBvcnQgamF2YS5hd3QuQm9yZGVyTGF5b3V0OworaW1wb3J0IGphdmEuYXd0LkZpbGVEaWFsb2c7CitpbXBvcnQgamF2YS5hd3QuRnJhbWU7CisKK2ltcG9ydCBqYXZheC5zd2luZy5KRnJhbWU7CitpbXBvcnQgamF2YXguc3dpbmcuSk1lbnU7CitpbXBvcnQgamF2YXguc3dpbmcuSk1lbnVCYXI7CitpbXBvcnQgamF2YXguc3dpbmcuSk9wdGlvblBhbmU7CitpbXBvcnQgamF2YXguc3dpbmcuV2luZG93Q29uc3RhbnRzOworCitpbXBvcnQgamF2YS5hd3QuZXZlbnQuV2luZG93QWRhcHRlcjsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5XaW5kb3dFdmVudDsKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKKworaW1wb3J0IGphdmEudGV4dC5NZXNzYWdlRm9ybWF0OworCisvKioKKyAqIEF3dERvY3VtZW50V2luZG93IGlzIGEgRnJhbWUgY29udGFpbmluZyBhIFRleHRQYW5lbCwgd2l0aCBhIGRvY3VtZW50CisgKiBmb3Igc3RvcmluZyB0aGUgdGV4dCBpbiB0aGUgVGV4dFBhbmVsLgorICovCitmaW5hbCBjbGFzcyBTd2luZ0RvY3VtZW50V2luZG93IGV4dGVuZHMgSkZyYW1lIGltcGxlbWVudHMgRG9jdW1lbnRXaW5kb3cgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKworICAgIHByaXZhdGUgSlRleHRQYW5lbCBmVGV4dFBhbmVsOworICAgIHByaXZhdGUgRWRpdEFwcGxpY2F0aW9uIGZBcHBsaWNhdGlvbjsKKyAgICBwcml2YXRlIFRleHREb2N1bWVudCBmRG9jdW1lbnQ7CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSBuZXcgQXd0RG9jdW1lbnRXaW5kb3cuCisgICAgICogQHBhcmFtIGFwcGxpY2F0aW9uIHRoZSBhcHBsaWNhdGlvbiB0aGF0IG93bnMgdGhpcyBkb2N1bWVudAorICAgICAqIEBwYXJhbSBjbGlwYm9hcmQgdGhlIGNsaXBib2FyZCB0byB1c2UKKyAgICAgKiBAcGFyYW0gZG9jdW1lbnQgdGhlIGRvY3VtZW50IHRvIHNob3cgaW4gdGhpcyBBd3REb2N1bWVudFdpbmRvdworICAgICAqLworICAgIFN3aW5nRG9jdW1lbnRXaW5kb3coRWRpdEFwcGxpY2F0aW9uIGFwcGxpY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgVGV4dERvY3VtZW50IGRvY3VtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgVGV4dFBhbmVsU2V0dGluZ3MgdGV4dFBhbmVsU2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIHVzZVRhYlJ1bGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgVGV4dFBhbmVsTGlzdGVuZXIgbGlzdGVuZXIsCisgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIHN1cHBvcnRTdHlsZWRUZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBzdXBwb3J0UGxhaW5UZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgaW50W10gbWVudXMpIHsKKworICAgICAgICBmQXBwbGljYXRpb24gPSBhcHBsaWNhdGlvbjsKKyAgICAgICAgc2V0RGVmYXVsdENsb3NlT3BlcmF0aW9uKFdpbmRvd0NvbnN0YW50cy5ET19OT1RISU5HX09OX0NMT1NFKTsKKyAgICAgICAgCisgICAgICAgIGZUZXh0UGFuZWwgPSBuZXcgSlRleHRQYW5lbCh0ZXh0UGFuZWxTZXR0aW5ncywgbnVsbCwgYXBwbGljYXRpb24uZ2V0Q2xpcGJvYXJkKCkpOworICAgICAgICBpZiAobGlzdGVuZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgZlRleHRQYW5lbC5hZGRMaXN0ZW5lcihsaXN0ZW5lcik7CisgICAgICAgIH0KKyAgICAgICAgc2V0RG9jdW1lbnQoZG9jdW1lbnQpOworCisgICAgICAgIGFkZE1lbnVCYXIoc3VwcG9ydFN0eWxlZFRleHQsIHN1cHBvcnRQbGFpblRleHQsIG1lbnVzKTsKKworICAgICAgICBnZXRDb250ZW50UGFuZSgpLnNldExheW91dChuZXcgQm9yZGVyTGF5b3V0KCkpOworCisgICAgICAgIGlmICh1c2VUYWJSdWxlcikgeworICAgICAgICAgICAgSlRhYlJ1bGVyIHRhYlJ1bGVyID0gbmV3IEpUYWJSdWxlcigxNCwgMTAsIGZUZXh0UGFuZWwpOworICAgICAgICAgICAgZ2V0Q29udGVudFBhbmUoKS5hZGQodGFiUnVsZXIsICJOb3J0aCIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBnZXRDb250ZW50UGFuZSgpLmFkZChmVGV4dFBhbmVsLCAiQ2VudGVyIik7CisKKyAgICAgICAgYWRkV2luZG93TGlzdGVuZXIobmV3IFdpbmRvd0FkYXB0ZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCB3aW5kb3dDbG9zaW5nKFdpbmRvd0V2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICBkb0Nsb3NlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBhZGRNZW51QmFyKGJvb2xlYW4gc3VwcG9ydFN0eWxlZFRleHQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gc3VwcG9ydFBsYWluVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRbXSBtZW51cykgeworICAgICAgICAKKyAgICAgICAgSk1lbnVCYXIgbWVudUJhciA9IG5ldyBKTWVudUJhcigpOworICAgICAgICBTdHJpbmcgbWVudVRpdGxlID0gUmVzb3VyY2VVdGlscy5nZXRTdHJpbmcoRWRpdG9yUmVzb3VyY2VzLkZJTEUpOworICAgICAgICBKTWVudSBtZW51ID0gbmV3IEpNZW51KG1lbnVUaXRsZSk7CisgICAgICAgIG5ldyBTd2luZ0ZpbGVNZW51TWFuYWdlcihtZW51LCBmQXBwbGljYXRpb24sIHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0U3R5bGVkVGV4dCwgc3VwcG9ydFBsYWluVGV4dCk7CisgICAgICAgIG1lbnVCYXIuYWRkKG1lbnUpOworCisgICAgICAgIFN3aW5nTWVudUJ1aWxkZXIuZ2V0SW5zdGFuY2UoKS5jcmVhdGVNZW51cyhtZW51QmFyLCBmVGV4dFBhbmVsLCB0aGlzLCBtZW51cyk7CisgICAgICAgIHNldEpNZW51QmFyKG1lbnVCYXIpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdHJ1ZSBpZiBpdCBpcyBPSyB0byBzZXQgdGhlIGRvY3VtZW50IHRleHQgYW5kIGZpbGUgdG8KKyAgICAgKiBzb21ldGhpbmcgZGlmZmVyZW50LgorICAgICAqLworICAgIHByaXZhdGUgYm9vbGVhbiBjYW5DaGFuZ2VEb2N1bWVudHMoKSB7CisKKyAgICAgICAgLy8gSWYgdGhlIHRleHQgaXMgbW9kaWZpZWQsIGdpdmUgdGhlIHVzZXIgYSBjaGFuY2UgdG8KKyAgICAgICAgLy8gc2F2ZSBpdC4gIE90aGVyd2lzZSByZXR1cm4gdHJ1ZS4KKworICAgICAgICBpZiAoZkRvY3VtZW50LmlzTW9kaWZpZWQoKSkgeworICAgICAgICAgICAgaW50IHNhdmUgPSBhc2tTYXZlKCk7CisgICAgICAgICAgICBpZiAoc2F2ZSA9PSBKT3B0aW9uUGFuZS5ZRVNfT1BUSU9OKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGRvU2F2ZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNhdmUgPT0gSk9wdGlvblBhbmUuTk9fT1BUSU9OOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgc2V0RG9jdW1lbnQoVGV4dERvY3VtZW50IGRvY3VtZW50KSB7CisKKyAgICAgICAgZkRvY3VtZW50ID0gZG9jdW1lbnQ7CisgICAgICAgIGZEb2N1bWVudC5zZXRUZXh0UGFuZWwoZlRleHRQYW5lbCk7CisgICAgICAgIHNldFRpdGxlKGZEb2N1bWVudC5nZXRUaXRsZSgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIGRvY3VtZW50IHRvIGVtcHR5IHRleHQgd2l0aCBubyBhc3NvY2lhdGVkIGZpbGUuICBJZgorICAgICAqIHRoZSBkb2N1bWVudCB0ZXh0IGlzIG5vdCBzYXZlZCwgcHJvbXB0IHRoZSB1c2VyIHRvIHNhdmUgdGhlCisgICAgICogdGhlIHRleHQgZmlyc3QuICBJZiB0aGlzIG9wZXJhdGlvbiBpcyBjYW5jZWxlZCwgdGhlIGRvY3VtZW50CisgICAgICogaXMgdW5jaGFuZ2VkLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGRvTmV3KCkgeworCisgICAgICAgIGlmICghY2FuQ2hhbmdlRG9jdW1lbnRzKCkpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgc2V0RG9jdW1lbnQoZkFwcGxpY2F0aW9uLmNyZWF0ZU5ld0RvY3VtZW50KCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFByb21wdCB0aGUgdXNlciBmb3IgYSBmaWxlIGZyb20gd2hpY2ggdG8gbG9hZCBhIHRleHQgZG9jdW1lbnQuCisgICAgICogSWYgdGhlIGN1cnJlbnQgdGV4dCBpcyBub3Qgc2F2ZWQsIGZpcnN0IHByb21wdCB0aGUgdXNlciB0bworICAgICAqIHNhdmUuICBJZiBlaXRoZXIgb3BlcmF0aW9uIGlzIGNhbmNlbGVkIG9yIGZhaWxzLCB0aGUgZG9jdW1lbnQKKyAgICAgKiBpcyB1bmNoYW5nZWQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgZG9PcGVuKCkgeworCisgICAgICAgIGlmICghY2FuQ2hhbmdlRG9jdW1lbnRzKCkpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFRleHREb2N1bWVudCBkb2N1bWVudCA9IGZBcHBsaWNhdGlvbi5vcGVuRG9jdW1lbnQodGhpcyk7CisKKyAgICAgICAgaWYgKGRvY3VtZW50ICE9IG51bGwpIHsKKyAgICAgICAgICAgIHNldERvY3VtZW50KGRvY3VtZW50KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFByb21wdCB0aGUgdXNlciBmb3IgYSBmaWxlIGluIHdoaWNoIHRvIHNhdmUgdGhlIGRvY3VtZW50IHRleHQuCisgICAgICogSWYgdGhpcyBvcGVyYXRpb24gaXMgbm90IGNhbmNlbGVkLCBzYXZlIHRoZSB0ZXh0IGluIHRoZSBmaWxlLgorICAgICAqIFRoZSBmaWxlIGJlY29tZXMgdGhpcyBkb2N1bWVudCdzIGZpbGUuCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gZG9TYXZlQXMoaW50IGZvcm1hdCkgeworCisgICAgICAgIFN0cmluZyB0aXRsZSA9IFJlc291cmNlVXRpbHMuZ2V0U3RyaW5nKEVkaXRvclJlc291cmNlcy5TQVZFX1RJVExFKTsKKyAgICAgICAgRmlsZSBmaWxlID0gQXd0RG9jdW1lbnRXaW5kb3cuZ2V0RmlsZUZyb21EaWFsb2coZkRvY3VtZW50LmdldEZpbGUoKSwgdGl0bGUsIHRoaXMsIEZpbGVEaWFsb2cuU0FWRSk7CisgICAgICAgIAorICAgICAgICBpZiAoZmlsZSA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZEb2N1bWVudC5zZXRGaWxlKGZpbGUpOworICAgICAgICBzZXRUaXRsZShmRG9jdW1lbnQuZ2V0VGl0bGUoKSk7CisKKyAgICAgICAgZkRvY3VtZW50LnNldEZvcm1hdChmb3JtYXQpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZEb2N1bWVudC5zYXZlKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2F2ZSB0aGUgdGV4dCBpbiB0aGlzIGRvY3VtZW50LiAgSWYgdGhlcmUgaXMgbm8gZmlsZSBhc3NvY2lhdGVkCisgICAgICogd2l0aCB0aGUgdGV4dCwgdGhpcyBpcyBlcXVpdmFsZW50IHRvIDxjb2RlPmRvU2F2ZUFzPC9jb2RlPi4KKyAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIHRydWUgaWYgdGhlIGRvY3VtZW50IHdhcyBzdWNjZXNzZnVsbHkgc2F2ZWQuCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gZG9TYXZlKCkgeworCisgICAgICAgIGlmIChmRG9jdW1lbnQuZ2V0RmlsZSgpID09IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBkb1NhdmVBcyhmRG9jdW1lbnQuZ2V0Rm9ybWF0KCkpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gZkRvY3VtZW50LnNhdmUoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQcmludCB0aGUgY29udGVudHMgb2YgdGhpcyB3aW5kb3cuCisgICAgICovCisgICAgcHVibGljIHZvaWQgZG9QcmludCgpIHsKKworICAgICAgICBQcmludGluZ1V0aWxzLnVzZXJQcmludFRleHQoZkRvY3VtZW50LmdldFRleHQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZUZXh0UGFuZWwuZ2V0RGVmYXVsdFZhbHVlcygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0VGl0bGUoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQXR0ZW1wdCB0byBjbG9zZSB0aGlzIHdpbmRvdy4gIElmIHRoZSB0ZXh0IGhhcyBub3QgYmVlbiBzYXZlZCwKKyAgICAgKiBnaXZlIHRoZSB1c2VyIGEgY2hhbmNlIHRvIHNhdmUgdGhlIHRleHQgYmVmb3JlIGNsb3NpbmcgdGhlCisgICAgICogd2luZG93LiAgSWYgdGhlIHVzZXIgY2FuY2VscyB0aGlzIG9wZXJhdGlvbiwgdGhpcyBtZXRob2QgcmV0dXJucworICAgICAqIGZhbHNlIGFuZCB0aGUgd2luZG93IGlzIG5vdCBjbG9zZWQ7ICBvdGhlcndpc2UgdGhpcyBtZXRob2QKKyAgICAgKiByZXR1cm5zIHRydWUgYW5kIHRoZSB3aW5kb3cgaXMgY2xvc2VkLgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGRvQ2xvc2UoKSB7CisKKyAgICAgICAgaWYgKGNhbkNoYW5nZURvY3VtZW50cygpKSB7CisgICAgICAgICAgICBzZXRWaXNpYmxlKGZhbHNlKTsKKyAgICAgICAgICAgIGRpc3Bvc2UoKTsKKyAgICAgICAgICAgIGZBcHBsaWNhdGlvbi5yZW1vdmVEb2N1bWVudFdpbmRvdyh0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogRGlzcGxheSBhIGRpYWxvZyB0aGF0IGFza3Mgd2hldGhlciB0aGUgdXNlciB3YW50cyB0bworICAgICAqIHNhdmUgYSBkb2N1bWVudC4gIFRoZSByZXR1cm5lZCB2YWx1ZSB3aWxsIGJlIFlFU19PUFRJT04sCisgICAgICogTk9fT1BUSU9OLCBvciBDQU5DRUxfT1BUSU9OIGZyb20gSk9wdGlvblBhbmUuCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgYXNrU2F2ZSgpIHsKKworICAgICAgICBTdHJpbmcgcGF0dGVybiA9IFJlc291cmNlVXRpbHMuZ2V0U3RyaW5nKEVkaXRvclJlc291cmNlcy5TQVZFX01TRyk7CisgICAgICAgIFN0cmluZyBtZXNzYWdlID0gTWVzc2FnZUZvcm1hdC5mb3JtYXQocGF0dGVybiwgbmV3IE9iamVjdFtdIHtnZXRUaXRsZSgpfSk7CisgICAgICAgIAorICAgICAgICBTdHJpbmcgeWVzID0gUmVzb3VyY2VVdGlscy5nZXRTdHJpbmcoRWRpdG9yUmVzb3VyY2VzLllFUyk7CisgICAgICAgIFN0cmluZyBubyA9IFJlc291cmNlVXRpbHMuZ2V0U3RyaW5nKEVkaXRvclJlc291cmNlcy5OTyk7CisgICAgICAgIFN0cmluZyBjYW5jZWwgPSBSZXNvdXJjZVV0aWxzLmdldFN0cmluZyhFZGl0b3JSZXNvdXJjZXMuQ0FOQ0VMKTsKKworICAgICAgICByZXR1cm4gSk9wdGlvblBhbmUuc2hvd09wdGlvbkRpYWxvZyh0aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSk9wdGlvblBhbmUuWUVTX05PX0NBTkNFTF9PUFRJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpPcHRpb25QYW5lLlFVRVNUSU9OX01FU1NBR0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXXt5ZXMsbm8sY2FuY2VsfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVzKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvc3dpbmdkZW1vL1N3aW5nRWRpdERlbW8uamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N3aW5nZGVtby9Td2luZ0VkaXREZW1vLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZDU4MTEyNwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N3aW5nZGVtby9Td2luZ0VkaXREZW1vLmphdmEKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogU3dpbmdFZGl0RGVtby5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjQ1OjQyICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQuc3dpbmdkZW1vOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5kZW1vLkVkaXREZW1vOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuZGVtby5Eb2N1bWVudFdpbmRvdzsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LmRlbW8uVGV4dERvY3VtZW50OworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuSlRleHRQYW5lbDsKKworcHVibGljIGNsYXNzIFN3aW5nRWRpdERlbW8gZXh0ZW5kcyBFZGl0RGVtbyB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIAorICAgICAgICBuZXcgU3dpbmdDb2RlRWRpdChhcmdzLCAwKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIFN3aW5nRWRpdERlbW8oU3RyaW5nW10gYXJncywgaW50IHN0YXJ0KSB7CisgICAgCisgICAgICAgIHN1cGVyKGFyZ3MsIHN0YXJ0KTsKKyAgICB9CisgICAgCisgICAgcHJvdGVjdGVkIERvY3VtZW50V2luZG93IGNyZWF0ZURvY3VtZW50V2luZG93KFRleHREb2N1bWVudCBkb2N1bWVudCkgeworCisgICAgICAgIHJldHVybiBuZXcgU3dpbmdEb2N1bWVudFdpbmRvdyh0aGlzLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlRleHRQYW5lbC5nZXREZWZhdWx0U2V0dGluZ3MoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvc3dpbmdkZW1vL1N3aW5nRmlsZU1lbnVNYW5hZ2VyLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC9zd2luZ2RlbW8vU3dpbmdGaWxlTWVudU1hbmFnZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wZjI0ZDJhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvc3dpbmdkZW1vL1N3aW5nRmlsZU1lbnVNYW5hZ2VyLmphdmEKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogU3dpbmdGaWxlTWVudU1hbmFnZXIuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo0NTo0MiAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnN3aW5nZGVtbzsKKworaW1wb3J0IGphdmEuYXd0LkV2ZW50OworCitpbXBvcnQgamF2YXguc3dpbmcuSk1lbnU7CitpbXBvcnQgamF2YXguc3dpbmcuSk1lbnVJdGVtOworaW1wb3J0IGphdmF4LnN3aW5nLkpTZXBhcmF0b3I7CitpbXBvcnQgamF2YXguc3dpbmcuS2V5U3Ryb2tlOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5kZW1vLkRvY3VtZW50V2luZG93OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuZGVtby5FZGl0QXBwbGljYXRpb247CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5kZW1vLkZpbGVNZW51TWFuYWdlcjsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LmRlbW8uTWVudURhdGE7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5kZW1vLlJlc291cmNlVXRpbHM7CisKK2ZpbmFsIGNsYXNzIFN3aW5nRmlsZU1lbnVNYW5hZ2VyIGV4dGVuZHMgRmlsZU1lbnVNYW5hZ2VyIHsKKworICAgIHByaXZhdGUgSk1lbnUgZk1lbnU7CisgICAgCisgICAgcHVibGljIFN3aW5nRmlsZU1lbnVNYW5hZ2VyKEpNZW51IG1lbnUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVkaXRBcHBsaWNhdGlvbiBhcHBsaWNhdGlvbiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvY3VtZW50V2luZG93IGRvY3VtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIHN1cHBvcnRTdHlsZWRGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gc3VwcG9ydFBsYWluRm9ybWF0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBzdXBlcihhcHBsaWNhdGlvbiwgZG9jdW1lbnQpOworICAgICAgICAKKyAgICAgICAgZk1lbnUgPSBtZW51OworICAgICAgICBjcmVhdGVJdGVtcyhzdXBwb3J0U3R5bGVkRm9ybWF0LCBzdXBwb3J0UGxhaW5Gb3JtYXQpOworICAgICAgICBmTWVudSA9IG51bGw7CisgICAgfQorICAgIAorICAgIHByb3RlY3RlZCBPYmplY3QgYWRkTWVudUl0ZW0oU3RyaW5nIGtleSkgeworCisgICAgICAgIE1lbnVEYXRhIG1lbnVEYXRhID0gUmVzb3VyY2VVdGlscy5nZXRNZW51RGF0YShrZXkpOworICAgICAgICBKTWVudUl0ZW0gaXRlbSA9IG5ldyBKTWVudUl0ZW0obWVudURhdGEuZ2V0TmFtZSgpKTsKKyAgICAgICAgaWYgKG1lbnVEYXRhLmhhc1Nob3J0Y3V0KCkpIHsKKyAgICAgICAgICAgIEtleVN0cm9rZSBrcyA9IEtleVN0cm9rZS5nZXRLZXlTdHJva2UobWVudURhdGEuZ2V0U2hvcnRjdXRLZXlDb2RlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50LkNUUkxfTUFTSyk7CisgICAgICAgICAgICBpdGVtLnNldEFjY2VsZXJhdG9yKGtzKTsKKyAgICAgICAgfQorICAgICAgICBpdGVtLmFkZEFjdGlvbkxpc3RlbmVyKHRoaXMpOworICAgICAgICBmTWVudS5hZGQoaXRlbSk7CisgICAgICAgIHJldHVybiBpdGVtOworICAgIH0KKyAgICAKKyAgICBwcm90ZWN0ZWQgdm9pZCBhZGRTZXBhcmF0b3IoKSB7CisgICAgCisgICAgICAgIGZNZW51LmFkZChuZXcgSlNlcGFyYXRvcigpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC9zd2luZ3VpL0pNZXNzYWdlRGlhbG9nLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC9zd2luZ3VpL0pNZXNzYWdlRGlhbG9nLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNDU1ZmQ2NQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N3aW5ndWkvSk1lc3NhZ2VEaWFsb2cuamF2YQpAQCAtMCwwICsxLDcwIEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBKTWVzc2FnZURpYWxvZy5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjQ2OjIyICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQuc3dpbmd1aTsKKworaW1wb3J0IGphdmEuYXd0LkNvbG9yOworaW1wb3J0IGphdmEuYXd0LkNvbnRhaW5lcjsKK2ltcG9ydCBqYXZhLmF3dC5DYXJkTGF5b3V0OworCitpbXBvcnQgamF2YXguc3dpbmcuSkZyYW1lOworCitpbXBvcnQgamF2YS5hd3QuZXZlbnQuV2luZG93QWRhcHRlcjsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5XaW5kb3dFdmVudDsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NQ29uc3RUZXh0OworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuSlRleHRQYW5lbDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5UZXh0UGFuZWxTZXR0aW5nczsKKworLyoqCisgKiBNZXNzYWdlRGlhbG9nIGlzIGEgc2ltcGxlIEZyYW1lIHdoaWNoIGRpc3BsYXlzIGEgc3R5bGVkCisgKiB0ZXh0IG1lc3NhZ2UgaW4gYSBUZXh0UGFuZWwuCisgKiBUaGUgdGV4dCBpbiB0aGUgbWVzc2FnZSBpcyBub3Qgc2VsZWN0YWJsZSBvciBlZGl0YWJsZS4KKyAqIEBzZWUgTUNvbnN0VGV4dAorICogQHNlZSBKVGV4dFBhbmVsCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBKTWVzc2FnZURpYWxvZyBleHRlbmRzIEpGcmFtZSB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIC8qKgorICAgICogQ3JlYXRlIGEgbmV3IE1lc3NhZ2VEaWFsb2cuCisgICAgKiBAcGFyYW0gdGl0bGUgdGhlIGRpYWxvZydzIHRpdGxlCisgICAgKiBAcGFyYW0gbWVzc2FnZSB0aGUgdGV4dCB3aGljaCB3aWxsIGFwcGVhciBpbiB0aGUgZGlhbG9nCisgICAgKi8KKyAgICBwdWJsaWMgSk1lc3NhZ2VEaWFsb2coU3RyaW5nIHRpdGxlLCBNQ29uc3RUZXh0IG1lc3NhZ2UpCisgICAgeworICAgICAgICBzdXBlcih0aXRsZSk7CisKKyAgICAgICAgQ29udGFpbmVyIGNvbnRlbnQgPSBnZXRDb250ZW50UGFuZSgpOworICAgICAgICBjb250ZW50LnNldExheW91dChuZXcgQ2FyZExheW91dCgpKTsKKyAgICAgICAgVGV4dFBhbmVsU2V0dGluZ3Mgc2V0dGluZ3MgPSBKVGV4dFBhbmVsLmdldERlZmF1bHRTZXR0aW5ncygpOworICAgICAgICBzZXR0aW5ncy5zZXRTY3JvbGxhYmxlKGZhbHNlKTsKKyAgICAgICAgc2V0dGluZ3Muc2V0U2VsZWN0YWJsZShmYWxzZSk7CisgICAgICAgIEpUZXh0UGFuZWwgcGFuZWwgPSBuZXcgSlRleHRQYW5lbChzZXR0aW5ncywgbWVzc2FnZSwgbnVsbCk7CisKKyAgICAgICAgcGFuZWwuc2V0QmFja2dyb3VuZChDb2xvci5ibGFjayk7CisgICAgICAgIGNvbnRlbnQuYWRkKCJDZW50ZXIiLCBwYW5lbCk7CisKKyAgICAgICAgYWRkV2luZG93TGlzdGVuZXIobmV3IFdpbmRvd0FkYXB0ZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCB3aW5kb3dDbG9zaW5nKFdpbmRvd0V2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICBzZXRWaXNpYmxlKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBkaXNwb3NlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworCisgICAgICAgIHNldFNpemUoNDUwLDMyMCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvc3dpbmd1aS9KTnVtYmVyRGlhbG9nLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC9zd2luZ3VpL0pOdW1iZXJEaWFsb2cuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44YzIwYWU1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvc3dpbmd1aS9KTnVtYmVyRGlhbG9nLmphdmEKQEAgLTAsMCArMSwxNjIgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IEpOdW1iZXJEaWFsb2cuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo0NjoyMiAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnN3aW5ndWk7CisKK2ltcG9ydCBqYXZhLmF3dC5Db250YWluZXI7CitpbXBvcnQgamF2YS5hd3QuRmxvd0xheW91dDsKK2ltcG9ydCBqYXZhLmF3dC5GcmFtZTsKKworaW1wb3J0IGphdmEudGV4dC5OdW1iZXJGb3JtYXQ7CitpbXBvcnQgamF2YS50ZXh0LlBhcnNlRXhjZXB0aW9uOworCitpbXBvcnQgamF2YXguc3dpbmcuSkRpYWxvZzsKK2ltcG9ydCBqYXZheC5zd2luZy5KUGFuZWw7CitpbXBvcnQgamF2YXguc3dpbmcuSlRleHRGaWVsZDsKK2ltcG9ydCBqYXZheC5zd2luZy5KQnV0dG9uOworaW1wb3J0IGphdmF4LnN3aW5nLkpMYWJlbDsKKworaW1wb3J0IGphdmEuYXd0LmV2ZW50LkFjdGlvbkV2ZW50OworaW1wb3J0IGphdmEuYXd0LmV2ZW50LkFjdGlvbkxpc3RlbmVyOworaW1wb3J0IGphdmEuYXd0LmV2ZW50LldpbmRvd0V2ZW50OworaW1wb3J0IGphdmEuYXd0LmV2ZW50LldpbmRvd0FkYXB0ZXI7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbC5yZXNvdXJjZXMuRnJhbWVSZXNvdXJjZXM7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC51aWltcGwuTWVudUl0ZW1TZXQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC51aWltcGwuUmVzb3VyY2VVdGlsczsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5TdHlsZU1vZGlmaWVyOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLk1UZXh0UGFuZWw7CisKKy8qKgorKiBTaW1wbGUgZGlhbG9nIHdoaWNoIGdldHMgYSBudW1iZXIsIGFuZCBzZW5kcyBhbiBhcHByb3ByaWF0ZSBjb21tYW5kCisqLworZmluYWwgY2xhc3MgSk51bWJlckRpYWxvZyBleHRlbmRzIEpEaWFsb2cgaW1wbGVtZW50cyBBY3Rpb25MaXN0ZW5lcgoreworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHJpdmF0ZSBNVGV4dFBhbmVsIGZUZXh0UGFuZWw7CisgICAgcHJpdmF0ZSBKVGV4dEZpZWxkIGZJbnB1dCA9IG51bGw7CisKKyAgICBwcml2YXRlIEpCdXR0b24gZk9LQnV0dG9uID0gbnVsbDsKKyAgICBwcml2YXRlIEpCdXR0b24gZkNhbmNlbEJ1dHRvbiA9IG51bGw7CisgICAgcHJpdmF0ZSBib29sZWFuIGZDaGFyYWN0ZXI7CisgICAgcHJpdmF0ZSBPYmplY3QgZktleTsKKyAgICBwcml2YXRlIGZsb2F0IGZNdWx0aXBsaWVyOyAKKworICAgIC8qKgorICAgICAqIEBwYXJhbSBtdWx0aXBsaWVyIHRoZSBmYWN0b3IgYnkgd2hpY2ggdG8gbXVsdGlwbHkgdGhlIHVzZXIncworICAgICAqICAgICAgICBzZWxlY3Rpb24gYmVmb3JlIGNyZWF0aW5nIHRoZSBhdHRyaWJ1dGUgdmFsdWUuICAgVGhpcworICAgICAqICAgICAgICBpcyB1c2VmdWwgZm9yIHN1YnNjcmlwdGluZy4KKyAgICAgKi8KKyAgICBKTnVtYmVyRGlhbG9nKEZyYW1lIHBhcmVudCwKKyAgICAgICAgICAgICAgICAgIFN0cmluZyB0aXRsZSwKKyAgICAgICAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlLAorICAgICAgICAgICAgICAgICAgTVRleHRQYW5lbCB0ZXh0UGFuZWwsCisgICAgICAgICAgICAgICAgICBPYmplY3Qga2V5LAorICAgICAgICAgICAgICAgICAgYm9vbGVhbiBjaGFyYWN0ZXIsCisgICAgICAgICAgICAgICAgICBmbG9hdCBtdWx0aXBsaWVyKSB7CisKKyAgICAgICAgc3VwZXIocGFyZW50LCB0aXRsZSwgZmFsc2UpOworICAgICAgICBmVGV4dFBhbmVsID0gdGV4dFBhbmVsOworICAgICAgICBmS2V5ID0ga2V5OworICAgICAgICBmQ2hhcmFjdGVyID0gY2hhcmFjdGVyOworICAgICAgICBmTXVsdGlwbGllciA9IG11bHRpcGxpZXI7CisgICAgICAgIAorICAgICAgICBDb250YWluZXIgY29udGVudCA9IGdldENvbnRlbnRQYW5lKCk7CisgICAgICAgIAorICAgICAgICBjb250ZW50LnNldExheW91dChuZXcgamF2YS5hd3QuR3JpZExheW91dCgyLDEpKTsKKworICAgICAgICBKUGFuZWwgcGFuZWwgPSBuZXcgSlBhbmVsKCk7CisgICAgICAgIHBhbmVsLnNldExheW91dChuZXcgRmxvd0xheW91dChGbG93TGF5b3V0LkNFTlRFUiwgMTAsIDE1KSk7CisgICAgICAgIGZJbnB1dCA9IG5ldyBKVGV4dEZpZWxkKDUpOworCisgICAgICAgIHBhbmVsLmFkZChuZXcgSkxhYmVsKG1lc3NhZ2UpKTsKKyAgICAgICAgcGFuZWwuYWRkKGZJbnB1dCk7CisgICAgICAgIGNvbnRlbnQuYWRkKCJDZW50ZXIiLCBwYW5lbCk7CisKKyAgICAgICAgZkNhbmNlbEJ1dHRvbiA9IG5ldyBKQnV0dG9uKFJlc291cmNlVXRpbHMuZ2V0UmVzb3VyY2VTdHJpbmcoRnJhbWVSZXNvdXJjZXMuQ0FOQ0VMKSk7CisgICAgICAgIGZPS0J1dHRvbiA9IG5ldyBKQnV0dG9uKFJlc291cmNlVXRpbHMuZ2V0UmVzb3VyY2VTdHJpbmcoRnJhbWVSZXNvdXJjZXMuT0spKTsKKyAgICAgICAgSlBhbmVsIHAgPSBuZXcgSlBhbmVsKCk7CisgICAgICAgIHAuc2V0TGF5b3V0KG5ldyBGbG93TGF5b3V0KEZsb3dMYXlvdXQuQ0VOVEVSLCA1LCA1KSk7CisgICAgICAgIHAuYWRkKGZDYW5jZWxCdXR0b24pOworICAgICAgICBwLmFkZChmT0tCdXR0b24pOworICAgICAgICBjb250ZW50LmFkZCgiU291dGgiLCBwKTsKKworICAgICAgICBwYWNrKCk7CisKKyAgICAgICAgYWRkV2luZG93TGlzdGVuZXIobmV3IFdpbmRvd0FkYXB0ZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCB3aW5kb3dDbG9zaW5nKFdpbmRvd0V2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICBjbG9zZVdpbmRvdyhmYWxzZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgICAKKyAgICAgICAgZk9LQnV0dG9uLmFkZEFjdGlvbkxpc3RlbmVyKHRoaXMpOworICAgICAgICBmQ2FuY2VsQnV0dG9uLmFkZEFjdGlvbkxpc3RlbmVyKHRoaXMpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBjbG9zZVdpbmRvdyhib29sZWFuIHNlbmRBY3Rpb24pIHsKKworICAgICAgICBzZXRWaXNpYmxlKGZhbHNlKTsKKworICAgICAgICBpbnQgbnVtID0gMDsKKyAgICAgICAgaWYgKHNlbmRBY3Rpb24pIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHRleHQgPSBmSW5wdXQuZ2V0VGV4dCgpOworICAgICAgICAgICAgICAgIG51bSA9IE51bWJlckZvcm1hdC5nZXRJbnN0YW5jZSgpLnBhcnNlKHRleHQpLmludFZhbHVlKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXRjaCAoUGFyc2VFeGNlcHRpb24gZXhjZXB0aW9uKSB7CisgICAgICAgICAgICAgICAgc2VuZEFjdGlvbiA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKHNlbmRBY3Rpb24pIHsKKyAgICAgICAgICAgIHNlbmRBY3Rpb24obnVtKTsKKyAgICAgICAgfQorCisgICAgICAgIGRpc3Bvc2UoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBhY3Rpb25QZXJmb3JtZWQoQWN0aW9uRXZlbnQgZSkgeworCisgICAgICAgIE9iamVjdCBzb3VyY2UgPSBlLmdldFNvdXJjZSgpOworCisgICAgICAgIGlmIChzb3VyY2UgPT0gZk9LQnV0dG9uKSB7CisgICAgICAgICAgICBjbG9zZVdpbmRvdyh0cnVlKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChzb3VyY2UgPT0gZkNhbmNlbEJ1dHRvbikgeworICAgICAgICAgICAgY2xvc2VXaW5kb3coZmFsc2UpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBBY3Rpb25FdmVudCEiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICogSGFuZGxlIHRoZSB1c2VyIGlucHV0CisgICAgKiBAcGFyYW0gdGhlIG51bWJlciB0aGUgdXNlciB0eXBlZCBpbgorICAgICovCisgICAgcHJpdmF0ZSB2b2lkIHNlbmRBY3Rpb24oaW50IG51bWJlcikgeworICAgICAgICBmbG9hdCBudW0gPSBudW1iZXIgKiBmTXVsdGlwbGllcjsKKyAgICAgICAgU3R5bGVNb2RpZmllciBtb2RpZmllciA9IFN0eWxlTW9kaWZpZXIuY3JlYXRlQWRkTW9kaWZpZXIoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmS2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEZsb2F0KG51bSkpOworICAgICAgICBpZiAoZkNoYXJhY3RlciA9PSBNZW51SXRlbVNldC5DSEFSQUNURVIpIHsKKyAgICAgICAgICAgIGZUZXh0UGFuZWwubW9kaWZ5Q2hhcmFjdGVyU3R5bGVPblNlbGVjdGlvbihtb2RpZmllcik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBmVGV4dFBhbmVsLm1vZGlmeVBhcmFncmFwaFN0eWxlT25TZWxlY3Rpb24obW9kaWZpZXIpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvc3dpbmd1aS9KT2JqZWN0RGlhbG9nLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC9zd2luZ3VpL0pPYmplY3REaWFsb2cuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4zZmM1ZmUyNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N3aW5ndWkvSk9iamVjdERpYWxvZy5qYXZhCkBAIC0wLDAgKzEsMjgwIEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBKT2JqZWN0RGlhbG9nLmphdmEsdiAkICRSZXZpc2lvbjogMS4yICQgJERhdGU6IDIwMDIvMDIvMTYgMDM6MDY6MzcgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5zd2luZ3VpOworCitpbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKKworaW1wb3J0IGphdmF4LnN3aW5nLkJveDsKK2ltcG9ydCBqYXZheC5zd2luZy5Cb3JkZXJGYWN0b3J5OworaW1wb3J0IGphdmF4LnN3aW5nLkJveExheW91dDsKK2ltcG9ydCBqYXZheC5zd2luZy5KRGlhbG9nOworaW1wb3J0IGphdmF4LnN3aW5nLkpQYW5lbDsKK2ltcG9ydCBqYXZheC5zd2luZy5KU2Nyb2xsUGFuZTsKK2ltcG9ydCBqYXZheC5zd2luZy5KQnV0dG9uOworaW1wb3J0IGphdmF4LnN3aW5nLkpMaXN0OworaW1wb3J0IGphdmF4LnN3aW5nLkpMYWJlbDsKK2ltcG9ydCBqYXZheC5zd2luZy5MaXN0U2VsZWN0aW9uTW9kZWw7CisKK2ltcG9ydCBqYXZheC5zd2luZy5ldmVudC5MaXN0U2VsZWN0aW9uRXZlbnQ7CitpbXBvcnQgamF2YXguc3dpbmcuZXZlbnQuTGlzdFNlbGVjdGlvbkxpc3RlbmVyOworCitpbXBvcnQgamF2YS5hd3QuQm9yZGVyTGF5b3V0OworaW1wb3J0IGphdmEuYXd0LkNvbnRhaW5lcjsKK2ltcG9ydCBqYXZhLmF3dC5EaW1lbnNpb247CitpbXBvcnQgamF2YS5hd3QuRnJhbWU7CitpbXBvcnQgamF2YS5hd3QuRmxvd0xheW91dDsKK2ltcG9ydCBqYXZhLmF3dC5HcmlkTGF5b3V0OworCitpbXBvcnQgamF2YS5hd3QuZXZlbnQuQWN0aW9uRXZlbnQ7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuQWN0aW9uTGlzdGVuZXI7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuTW91c2VFdmVudDsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5Nb3VzZUFkYXB0ZXI7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuV2luZG93RXZlbnQ7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuV2luZG93QWRhcHRlcjsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZU1hcDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRsYXlvdXQuYXR0cmlidXRlcy5BdHRyaWJ1dGVTZXQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1Db25zdFRleHQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0LlN0eWxlTW9kaWZpZXI7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuTVRleHRQYW5lbDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbC5NZW51SXRlbVNldDsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudWlpbXBsLnJlc291cmNlcy5GcmFtZVJlc291cmNlczsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbC5SZXNvdXJjZVV0aWxzOworCisvKioKKyogU2ltcGxlIGRpYWxvZyB0aGF0IHNldHMgYW4gYXR0cmlidXRlLgorKi8KK2ZpbmFsIGNsYXNzIEpPYmplY3REaWFsb2cgZXh0ZW5kcyBKRGlhbG9nIHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisKKyAgICBwcml2YXRlIGZpbmFsIE1UZXh0UGFuZWwgZlRleHRQYW5lbDsKKyAgICBwcml2YXRlIGZpbmFsIE9iamVjdCBmS2V5OworICAgIHByaXZhdGUgYm9vbGVhbiBmQ2hhcmFjdGVyOworICAgIHByaXZhdGUgSGFzaHRhYmxlIGZOYW1lVG9WYWx1ZU1hcDsKKyAgICAKKyAgICBwcml2YXRlIGZpbmFsIEpCdXR0b24gZk9LQnV0dG9uOworICAgIHByaXZhdGUgZmluYWwgSkJ1dHRvbiBmQ2FuY2VsQnV0dG9uOworICAgIHByaXZhdGUgZmluYWwgSkxpc3QgZkl0ZW1zOworICAgIAorICAgIC8qKgorICAgICogQ29uc3RydWN0IGEgbmV3IEpPYmplY3REaWFsb2cuCisgICAgKiBAcGFyYW0gcGFyZW50IHRoZSBkaWFsb2cncyBwYXJlbnQgZnJhbWUKKyAgICAqIEBwYXJhbSB0aXRsZSB0aGUgZGlhbG9ncyB0aXRsZQorICAgICogQHBhcmFtIG1lc3NhZ2UgdGhlIG1lc3NhZ2UgZGlzcGxheWVkIG5leHQgdG8gdGhlIGlucHV0IGJveAorICAgICovCisgICAgSk9iamVjdERpYWxvZyhGcmFtZSBwYXJlbnQsCisgICAgICAgICAgICAgICAgICBTdHJpbmcgdGl0bGUsIAorICAgICAgICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2UsIAorICAgICAgICAgICAgICAgICAgTVRleHRQYW5lbCB0ZXh0UGFuZWwsCisgICAgICAgICAgICAgICAgICBPYmplY3Qga2V5LAorICAgICAgICAgICAgICAgICAgYm9vbGVhbiBjaGFyYWN0ZXIsCisgICAgICAgICAgICAgICAgICBTdHJpbmdbXSBuYW1lcywKKyAgICAgICAgICAgICAgICAgIE9iamVjdFtdIHZhbHVlcykgeworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgc3VwZXIocGFyZW50LCB0aXRsZSwgZmFsc2UpOworCisgICAgICAgIHNldHVwTWFwKG5hbWVzLCB2YWx1ZXMpOworICAgICAgICAKKyAgICAgICAgRGltZW5zaW9uIHNpemUgPSBuZXcgRGltZW5zaW9uKDI1MCwgMjAwKTsKKyAgICAgICAgCisgICAgICAgIGZUZXh0UGFuZWwgPSB0ZXh0UGFuZWw7CisgICAgICAgIGZLZXkgPSBrZXk7CisgICAgICAgIGZDaGFyYWN0ZXIgPSBjaGFyYWN0ZXI7CisgICAgICAgIAorICAgICAgICBmSXRlbXMgPSBuZXcgSkxpc3QobmFtZXMpOworICAgICAgICBmSXRlbXMuc2V0U2VsZWN0aW9uTW9kZShMaXN0U2VsZWN0aW9uTW9kZWwuTVVMVElQTEVfSU5URVJWQUxfU0VMRUNUSU9OKTsKKyAgICAgICAgCisgICAgICAgIGZJdGVtcy5hZGRNb3VzZUxpc3RlbmVyKG5ldyBNb3VzZUFkYXB0ZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBtb3VzZUNsaWNrZWQoTW91c2VFdmVudCBlKSB7CisgICAgICAgICAgICAgICAgaWYgKGUuZ2V0Q2xpY2tDb3VudCgpID09IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xvc2VXaW5kb3codHJ1ZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgICAgCisgICAgICAgIEpTY3JvbGxQYW5lIGxpc3RTY3JvbGxlciA9IG5ldyBKU2Nyb2xsUGFuZShmSXRlbXMpOworICAgICAgICBsaXN0U2Nyb2xsZXIuc2V0UHJlZmVycmVkU2l6ZShzaXplKTsKKyAgICAgICAgbGlzdFNjcm9sbGVyLnNldFByZWZlcnJlZFNpemUoc2l6ZSk7CisgICAgICAgIGxpc3RTY3JvbGxlci5zZXRBbGlnbm1lbnRYKExFRlRfQUxJR05NRU5UKTsKKworICAgICAgICBKTGFiZWwgbGFiZWwgPSBuZXcgSkxhYmVsKG1lc3NhZ2UpOworICAgICAgICBsYWJlbC5zZXRMYWJlbEZvcihmSXRlbXMpOworICAgICAgICAKKyAgICAgICAgSlBhbmVsIGl0ZW1QYW5lbCA9IG5ldyBKUGFuZWwoKTsKKyAgICAgICAgaXRlbVBhbmVsLmFkZChsYWJlbCk7CisgICAgICAgIGl0ZW1QYW5lbC5hZGQoQm94LmNyZWF0ZVJpZ2lkQXJlYShuZXcgRGltZW5zaW9uKDAsNSkpKTsKKyAgICAgICAgaXRlbVBhbmVsLmFkZChsaXN0U2Nyb2xsZXIpOworICAgICAgICBpdGVtUGFuZWwuc2V0Qm9yZGVyKEJvcmRlckZhY3RvcnkuY3JlYXRlRW1wdHlCb3JkZXIoMTAsMTAsMTAsMTApKTsKKyAgICAgICAgCisgICAgICAgIGl0ZW1QYW5lbC5zZXRMYXlvdXQobmV3IEJveExheW91dChpdGVtUGFuZWwsIEJveExheW91dC5ZX0FYSVMpKTsKKyAgICAgICAgCisgICAgICAgIGZDYW5jZWxCdXR0b24gPSBuZXcgSkJ1dHRvbihSZXNvdXJjZVV0aWxzLmdldFJlc291cmNlU3RyaW5nKEZyYW1lUmVzb3VyY2VzLkNBTkNFTCkpOworICAgICAgICBmT0tCdXR0b24gPSBuZXcgSkJ1dHRvbihSZXNvdXJjZVV0aWxzLmdldFJlc291cmNlU3RyaW5nKEZyYW1lUmVzb3VyY2VzLk9LKSk7CisgICAgICAgIAorICAgICAgICBKUGFuZWwgYnV0dG9uUGFuZWwgPSBuZXcgSlBhbmVsKCk7CisgICAgICAgIGJ1dHRvblBhbmVsLnNldExheW91dChuZXcgRmxvd0xheW91dChGbG93TGF5b3V0LkNFTlRFUiwgNSwgNSkpOworICAgICAgICBidXR0b25QYW5lbC5hZGQoZkNhbmNlbEJ1dHRvbik7CisgICAgICAgIGJ1dHRvblBhbmVsLmFkZChmT0tCdXR0b24pOworICAgICAgICAKKyAgICAgICAgQ29udGFpbmVyIGNvbnRlbnQgPSBnZXRDb250ZW50UGFuZSgpOworICAgICAgICBjb250ZW50LmFkZChpdGVtUGFuZWwsIEJvcmRlckxheW91dC5DRU5URVIpOworICAgICAgICBjb250ZW50LmFkZChidXR0b25QYW5lbCwgQm9yZGVyTGF5b3V0LlNPVVRIKTsKKworICAgICAgICBwYWNrKCk7CisKKyAgICAgICAgYWRkV2luZG93TGlzdGVuZXIobmV3IFdpbmRvd0FkYXB0ZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCB3aW5kb3dDbG9zaW5nKFdpbmRvd0V2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICBjbG9zZVdpbmRvdyhmYWxzZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgICAKKyAgICAgICAgQWN0aW9uTGlzdGVuZXIgbGlzdGVuZXIgPSBuZXcgQWN0aW9uTGlzdGVuZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBhY3Rpb25QZXJmb3JtZWQoQWN0aW9uRXZlbnQgZSkgeworICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgT2JqZWN0IHNvdXJjZSA9IGUuZ2V0U291cmNlKCk7CisgICAgICAgICAgICAgICAgaWYgKHNvdXJjZSA9PSBmT0tCdXR0b24pIHsKKyAgICAgICAgICAgICAgICAgICAgY2xvc2VXaW5kb3codHJ1ZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNvdXJjZSA9PSBmQ2FuY2VsQnV0dG9uKSB7CisgICAgICAgICAgICAgICAgICAgIGNsb3NlV2luZG93KGZhbHNlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICBmT0tCdXR0b24uYWRkQWN0aW9uTGlzdGVuZXIobGlzdGVuZXIpOworICAgICAgICBmQ2FuY2VsQnV0dG9uLmFkZEFjdGlvbkxpc3RlbmVyKGxpc3RlbmVyKTsKKyAgICAgICAgCisgICAgICAgIHNlbGVjdFN0eWxlcyh2YWx1ZXMpOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHZvaWQgc2V0dXBNYXAoU3RyaW5nW10gbmFtZXMsIE9iamVjdFtdIHZhbHVlcykgeworICAgIAorICAgICAgICBpZiAobmFtZXMubGVuZ3RoICE9IHZhbHVlcy5sZW5ndGgpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIk11c3QgaGF2ZSBzYW1lIG51bWJlciBvZiBuYW1lcyBhbmQgdmFsdWVzLiIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmTmFtZVRvVmFsdWVNYXAgPSBuZXcgSGFzaHRhYmxlKG5hbWVzLmxlbmd0aCk7CisgICAgICAgIAorICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgaWYgKHZhbHVlc1tpXSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgZk5hbWVUb1ZhbHVlTWFwLnB1dChuYW1lc1tpXSwgdmFsdWVzW2ldKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGNsb3NlV2luZG93KGJvb2xlYW4gc2VuZEFjdGlvbikgeworCisgICAgICAgIHNldFZpc2libGUoZmFsc2UpOworICAgICAgICAKKyAgICAgICAgaWYgKHNlbmRBY3Rpb24gJiYgZkl0ZW1zLmdldE1pblNlbGVjdGlvbkluZGV4KCkgIT0gZkl0ZW1zLmdldE1heFNlbGVjdGlvbkluZGV4KCkpIHsKKyAgICAgICAgICAgIHNlbmRBY3Rpb24gPSBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKHNlbmRBY3Rpb24pIHsKKyAgICAgICAgICAgIE9iamVjdCB2YWx1ZSA9IGZOYW1lVG9WYWx1ZU1hcC5nZXQoZkl0ZW1zLmdldFNlbGVjdGVkVmFsdWUoKSk7CisgICAgICAgICAgICBzZW5kQWN0aW9uKHZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICBkaXNwb3NlKCk7CisgICAgfQorCisgICAgLyoqCisgICAgKiBIYW5kbGUgdGhlIHVzZXIgaW5wdXQKKyAgICAqIEBwYXJhbSBvYmogdGhlIHZhbHVlIG9iamVjdAorICAgICovCisgICAgcHJpdmF0ZSB2b2lkIHNlbmRBY3Rpb24oT2JqZWN0IHZhbHVlKSB7CisKKyAgICAgICAgU3R5bGVNb2RpZmllciBtb2RpZmllcjsKKyAgICAgICAgaWYgKHZhbHVlICE9IG51bGwpIHsKKyAgICAgICAgICAgIG1vZGlmaWVyID0gU3R5bGVNb2RpZmllci5jcmVhdGVBZGRNb2RpZmllcihmS2V5LCB2YWx1ZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBBdHRyaWJ1dGVTZXQgc2V0ID0gbmV3IEF0dHJpYnV0ZVNldChmS2V5KTsKKyAgICAgICAgICAgIG1vZGlmaWVyID0gU3R5bGVNb2RpZmllci5jcmVhdGVSZW1vdmVNb2RpZmllcihzZXQpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZDaGFyYWN0ZXIgPT0gTWVudUl0ZW1TZXQuQ0hBUkFDVEVSKSB7CisgICAgICAgICAgICBmVGV4dFBhbmVsLm1vZGlmeUNoYXJhY3RlclN0eWxlT25TZWxlY3Rpb24obW9kaWZpZXIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZlRleHRQYW5lbC5tb2RpZnlQYXJhZ3JhcGhTdHlsZU9uU2VsZWN0aW9uKG1vZGlmaWVyKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHZvaWQgc2VsZWN0VmFsdWUoT2JqZWN0IHZhbHVlLCBPYmplY3RbXSB2YWx1ZXMpIHsKKyAgICAKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIAorICAgICAgICAgICAgaWYgKCh2YWx1ZSAhPSBudWxsICYmIHZhbHVlLmVxdWFscyh2YWx1ZXNbaV0pKSB8fCAodmFsdWUgPT0gbnVsbCAmJiB2YWx1ZXNbaV0gPT0gbnVsbCkpIHsKKyAgICAgICAgICAgICAgICBmSXRlbXMuYWRkU2VsZWN0aW9uSW50ZXJ2YWwoaSwgaSk7CisgICAgICAgICAgICAgICAgZkl0ZW1zLmVuc3VyZUluZGV4SXNWaXNpYmxlKGkpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHZvaWQgc2VsZWN0U3R5bGVzKE9iamVjdFtdIHZhbHVlcykgeworICAgIAorICAgICAgICBPYmplY3QgdmFsdWU7CisgCisgICAgICAgIGlmIChmQ2hhcmFjdGVyKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGZUZXh0UGFuZWwuZ2V0Q2hhcmFjdGVyU3R5bGVPdmVyU2VsZWN0aW9uKGZLZXkpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdmFsdWUgPSBmVGV4dFBhbmVsLmdldFBhcmFncmFwaFN0eWxlT3ZlclNlbGVjdGlvbihmS2V5KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKHZhbHVlICE9IE1UZXh0UGFuZWwuTVVMVElQTEVfVkFMVUVTKSB7CisgICAgICAgICAgICBzZWxlY3RWYWx1ZSh2YWx1ZSwgdmFsdWVzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZPS0J1dHRvbi5zZXRFbmFibGVkKGZhbHNlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaW50IHNlbExpbWl0ID0gZlRleHRQYW5lbC5nZXRTZWxlY3Rpb25FbmQoKTsKKyAgICAgICAgICAgIE1Db25zdFRleHQgdGV4dCA9IGZUZXh0UGFuZWwuZ2V0VGV4dCgpOworICAgICAgICAgICAgZm9yIChpbnQgcnVuU3RhcnQgPSBmVGV4dFBhbmVsLmdldFNlbGVjdGlvblN0YXJ0KCk7IHJ1blN0YXJ0IDw9IHNlbExpbWl0OworICAgICAgICAgICAgICAgICAgICBydW5TdGFydCA9IGZDaGFyYWN0ZXI/IHRleHQuY2hhcmFjdGVyU3R5bGVMaW1pdChydW5TdGFydCkgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LnBhcmFncmFwaExpbWl0KHJ1blN0YXJ0KSkgeworICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgT2JqZWN0IHJ1blZhbDsKKyAgICAgICAgICAgICAgICBpZiAoZkNoYXJhY3RlcikgeworICAgICAgICAgICAgICAgICAgICBydW5WYWwgPSB0ZXh0LmNoYXJhY3RlclN0eWxlQXQocnVuU3RhcnQpLmdldChmS2V5KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJ1blZhbCA9IHRleHQucGFyYWdyYXBoU3R5bGVBdChydW5TdGFydCkuZ2V0KGZLZXkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAocnVuVmFsID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgcnVuVmFsID0gZlRleHRQYW5lbC5nZXREZWZhdWx0VmFsdWVzKCkuZ2V0KGZLZXkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBzZWxlY3RWYWx1ZShydW5WYWwsIHZhbHVlcyk7CisgICAgICAgICAgICAgICAgaWYgKHJ1blN0YXJ0ID09IHRleHQubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmSXRlbXMuYWRkTGlzdFNlbGVjdGlvbkxpc3RlbmVyKG5ldyBMaXN0U2VsZWN0aW9uTGlzdGVuZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCB2YWx1ZUNoYW5nZWQoTGlzdFNlbGVjdGlvbkV2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICBmSXRlbXMuc2V0U2VsZWN0aW9uTW9kZShMaXN0U2VsZWN0aW9uTW9kZWwuU0lOR0xFX1NFTEVDVElPTik7CisgICAgICAgICAgICAgICAgZk9LQnV0dG9uLnNldEVuYWJsZWQodHJ1ZSk7CisgICAgICAgICAgICAgICAgZkl0ZW1zLnJlbW92ZUxpc3RTZWxlY3Rpb25MaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvc3dpbmd1aS9KVGFiUnVsZXIuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N3aW5ndWkvSlRhYlJ1bGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNDhiYzUwNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N3aW5ndWkvSlRhYlJ1bGVyLmphdmEKQEAgLTAsMCArMSwxMzQgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IEpUYWJSdWxlci5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjQ2OjIyICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQuc3dpbmd1aTsKKworaW1wb3J0IGphdmEuYXd0LkNvbG9yOworaW1wb3J0IGphdmEuYXd0LkRpbWVuc2lvbjsKK2ltcG9ydCBqYXZhLmF3dC5HcmFwaGljczsKKworaW1wb3J0IGphdmF4LnN3aW5nLkpDb21wb25lbnQ7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5NVGV4dFBhbmVsOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NVGFiUnVsZXI7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbC5UYWJSdWxlckltcGw7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5hd3R1aS5NVGFiUnVsZXJDb21wb25lbnQ7CisKKy8qKgorICogSlRhYlJ1bGVyIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIE1UYWJSdWxlckNvbXBvbmVudCBpbiBhIFN3aW5nIGNvbXBvbmVudC4KKyAqLworcHVibGljIGZpbmFsIGNsYXNzIEpUYWJSdWxlciBleHRlbmRzIEpDb21wb25lbnQgaW1wbGVtZW50cyBNVGFiUnVsZXJDb21wb25lbnQgeworICAgIAorICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHJpdmF0ZSBUYWJSdWxlckltcGwgZkltcGw7CisgICAgCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgbmV3IFRhYlJ1bGVyLgorICAgICAqIEBwYXJhbSBiYXNlbGluZSB0aGUgeS1jb29yZGluYXRlIG9mIHRoZSBydWxlcidzIGJhc2VsaW5lCisgICAgICogQHBhcmFtIG9yaWdpbiB0aGUgeC1jb29yZGluYXRlIGluIHRoaXMgQ29tcG9uZW50IHdoZXJlCisgICAgICogICAgIHRoZSBsZWZ0IG1hcmdpbiBhcHBlYXJzCisgICAgICogQHBhcmFtIHRleHRQYW5lbCB0aGUgTVRleHRQYW5lbCB0byBsaXN0ZW4gdG8uICBUaGlzIFRhYlJ1bGVyCisgICAgICogICAgIHdpbGwgcmVmbGVjdCB0aGUgTVRleHRQYW5lbCdzIHBhcmFncmFwaCBzdHlsZXMsIGFuZCB1cGRhdGUKKyAgICAgKiAgICAgdGhlIHBhcmFncmFwaCBzdHlsZXMgd2hlbiBtYW5pcHVsYXRlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgSlRhYlJ1bGVyKGludCBiYXNlbGluZSwgaW50IG9yaWdpbiwgTVRleHRQYW5lbCB0ZXh0UGFuZWwpIHsKKyAgICAgICAgCisgICAgICAgIGZJbXBsID0gbmV3IFRhYlJ1bGVySW1wbChiYXNlbGluZSwgb3JpZ2luLCB0ZXh0UGFuZWwsIHRoaXMpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBMaXN0ZW4gdG8gdGhlIGdpdmVuIE1UZXh0UGFuZWwgYW5kIHJlZmxlY3QgaXRzIGNoYW5nZXMsCisgICAgICogYW5kIHVwZGF0ZSBpdHMgcGFyYWdyYXBoIHN0eWxlcyB3aGVuIFRhYlJ1bGVyIGlzCisgICAgICogbWFuaXB1bGF0ZWQuCisgICAgICogQHBhcmFtIHRleHRQYW5lbCB0aGUgTVRleHRQYW5lbCB0byBsaXN0ZW4gdG8KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBsaXN0ZW5Ub1RleHRQYW5lbChNVGV4dFBhbmVsIHRleHRQYW5lbCkgeworCisgICAgICAgIGZJbXBsLmxpc3RlblRvVGV4dFBhbmVsKHRleHRQYW5lbCk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiB0aGlzIFRhYlJ1bGVyLgorICAgICAqIEByZXR1cm4gdGhlIGJhY2tncm91bmQgY29sb3Igb2YgdGhpcyBUYWJSdWxlcgorICAgICAqLworICAgIHB1YmxpYyBDb2xvciBnZXRCYWNrQ29sb3IoKSB7CisKKyAgICAgICAgcmV0dXJuIGZJbXBsLmdldEJhY2tDb2xvcigpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgdGhpcyBUYWJSdWxlci4KKyAgICAgKiBAcGFyYW0gYmFja0NvbG9yIHRoZSBuZXcgYmFja2dyb3VuZCBjb2xvciBvZiB0aGlzIFRhYlJ1bGVyCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0QmFja0NvbG9yKENvbG9yIGJhY2tDb2xvcikgeworCisgICAgICAgIGZJbXBsLnNldEJhY2tDb2xvcihiYWNrQ29sb3IpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIE1UYWJSdWxlciByZXByZXNlbnRlZCBieSB0aGlzIFRhYlJ1bGVyLgorICAgICAqIEByZXR1cm4gdGhlIE1UYWJSdWxlciByZXByZXNlbnRlZCBieSB0aGlzIFRhYlJ1bGVyCisgICAgICovCisgICAgcHVibGljIE1UYWJSdWxlciBnZXRSdWxlcigpIHsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBmSW1wbC5nZXRSdWxlcigpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgbGVhZGluZyBtYXJnaW4gb2YgdGhpcyBUYWJSdWxlci4KKyAgICAgKiBAcmV0dXJuIHRoZSBsZWFkaW5nIG1hcmdpbiBvZiB0aGlzIFRhYlJ1bGVyCisgICAgICovCisgICAgcHVibGljIGludCBnZXRMZWFkaW5nTWFyZ2luKCkgeworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZJbXBsLmdldExlYWRpbmdNYXJnaW4oKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGZpcnN0IGxpbmUgaW5kZW50IG9mIHRoaXMgVGFiUnVsZXIuCisgICAgICogQHJldHVybiB0aGUgZmlyc3QgbGluZSBpbmRlbnQgb2YgdGhpcyBUYWJSdWxlcgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0Rmlyc3RMaW5lSW5kZW50KCkgeworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZJbXBsLmdldEZpcnN0TGluZUluZGVudCgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgdHJhaWxpbmcgbWFyZ2luIG9mIHRoaXMgVGFiUnVsZXIuCisgICAgICogQHJldHVybiB0aGUgdHJhaWxpbmcgbWFyZ2luIG9mIHRoaXMgVGFiUnVsZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgaW50IGdldFRyYWlsaW5nTWFyZ2luKCkgeworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZJbXBsLmdldFRyYWlsaW5nTWFyZ2luKCk7CisgICAgfQorICAgIAorICAgIC8vIFRoZSBmb2xsb3dpbmcgYXJlIENvbXBvbmVudCBtZXRob2RzIHdoaWNoIG5lZWQgdG8gYmUgZGVsZWdhdGVkIHRvCisgICAgLy8gdGhlIGltcGxlbWVudGF0aW9uOgorICAgIAorICAgIHB1YmxpYyB2b2lkIHBhaW50KEdyYXBoaWNzIGcpIHsKKyAgICAgICAgCisgICAgICAgIGZJbXBsLnBhaW50KGcpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgRGltZW5zaW9uIGdldFByZWZlcnJlZFNpemUoKSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gZkltcGwuZ2V0UHJlZmVycmVkU2l6ZSgpOworICAgIH0KKworICAgIHB1YmxpYyBEaW1lbnNpb24gZ2V0TWluaW11bVNpemUoKSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gZkltcGwuZ2V0TWluaW11bVNpemUoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC9zd2luZ3VpL0pUZXh0RnJhbWUuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N3aW5ndWkvSlRleHRGcmFtZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjdkZDQyMDcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC9zd2luZ3VpL0pUZXh0RnJhbWUuamF2YQpAQCAtMCwwICsxLDE0NiBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogSlRleHRGcmFtZS5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjQ2OjIyICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQuc3dpbmd1aTsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLk1UZXh0UGFuZWw7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuSlRleHRQYW5lbDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuTUNvbnN0VGV4dDsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudWlpbXBsLnJlc291cmNlcy5GcmFtZVJlc291cmNlczsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbC5SZXNvdXJjZVV0aWxzOworCitpbXBvcnQgamF2YS5hd3QuQm9yZGVyTGF5b3V0OworaW1wb3J0IGphdmEuYXd0LlRvb2xraXQ7CitpbXBvcnQgamF2YS5hd3QuZGF0YXRyYW5zZmVyLkNsaXBib2FyZDsKKworaW1wb3J0IGphdmEuYXd0LmV2ZW50LldpbmRvd0FkYXB0ZXI7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuV2luZG93RXZlbnQ7CisKK2ltcG9ydCBqYXZheC5zd2luZy5KRnJhbWU7CitpbXBvcnQgamF2YXguc3dpbmcuSk1lbnVCYXI7CitpbXBvcnQgamF2YXguc3dpbmcuVUlNYW5hZ2VyOworCitpbXBvcnQgamF2YS5hd3QuQ29udGFpbmVyOworCisvKioKKyAqIEpUZXh0RnJhbWUgaXMgYSBKRnJhbWUgY29udGFpbmluZyBhbiBlZGl0YWJsZSBKVGV4dFBhbmVsLCBhIHNldCBvZiBzdGFuZGFyZAorICogbWVudXMsIGFuZCBhIEpUYWJSdWxlci4gIFRoaXMgY2xhc3MgY2FuIGJlIHVzZWQgYXMtaXMsIGJ1dCBpcworICogcHJpbWFyaWx5IGludGVuZGVkIHRvIGJlIGEgc2ltcGxlIGV4YW1wbGUgb2YgaG93IHRvIHVzZSB0aGUgb3RoZXIgY2xhc3NlcworICogaW4gdGhpcyBwYWNrYWdlLgorICogQHNlZSBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5KVGV4dFBhbmVsCisgKiBAc2VlIFN3aW5nTWVudUJ1aWxkZXIKKyAqIEBzZWUgSlRhYlJ1bGVyCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBKVGV4dEZyYW1lIGV4dGVuZHMgSkZyYW1lIHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHJpdmF0ZSBKVGV4dFBhbmVsIGZUZXh0UGFuZWw7CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSBuZXcgSlRleHRGcmFtZSB3aXRoIG5vIHRleHQsIG5vIHRpdGxlLCAKKyAgICAgKiBhbmQgYSBwcml2YXRlIGNsaXBib2FyZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgSlRleHRGcmFtZSgpIHsKKyAgICAgICAgCisgICAgICAgIHN1cGVyKCk7CisgICAgICAgIGluaXQobnVsbCwgVG9vbGtpdC5nZXREZWZhdWx0VG9vbGtpdCgpLmdldFN5c3RlbUNsaXBib2FyZCgpKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgbmV3IEpUZXh0RnJhbWUgd2l0aCBubyB0ZXh0IGFuZCB0aGUgZ2l2ZW4gdGl0bGUuCisgICAgICogVGhlIEpUZXh0UGFuZWwgd2lsbCB1c2UgYSBwcml2YXRlIGNsaXBib2FyZC4KKyAgICAgKiBAcGFyYW0gdGl0bGUgdGhlIHRpdGxlIG9mIHRoaXMgRnJhbWUKKyAgICAgKi8KKyAgICBwdWJsaWMgSlRleHRGcmFtZShTdHJpbmcgdGl0bGUpIHsKKyAgICAgICAgCisgICAgICAgIHN1cGVyKHRpdGxlKTsKKyAgICAgICAgaW5pdChudWxsLCBUb29sa2l0LmdldERlZmF1bHRUb29sa2l0KCkuZ2V0U3lzdGVtQ2xpcGJvYXJkKCkpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSBuZXcgSlRleHRGcmFtZSB3aXRoIHRoZSBnaXZlbiB0ZXh0IGFuZCB0aXRsZSwgd2hvc2UKKyAgICAgKiBUZXh0UGFuZWwgd2lsbCB1c2UgdGhlIGdpdmVuIGNsaXBib2FyZC4KKyAgICAgKiBAcGFyYW0gdGV4dCB0aGUgaW5pdGlhbCB0ZXh0IGluIHRoZSBUZXh0UGFuZWwuICBJZiBudWxsIHRoZQorICAgICAqICAgICAgVGV4dFBhbmVsIHdpbGwgaW5pdGlhbGx5IGJlIGVtcHR5CisgICAgICogQHBhcmFtIHRpdGxlIHRoZSB0aXRsZSBvZiB0aGlzIEZyYW1lCisgICAgICogQHBhcmFtIGNsaXBib2FyZCB0aGUgQ2xpcGJvYXJkIHdoaWNoIHRoZSBUZXh0UGFuZWwgd2lsbCB1c2UuCisgICAgICogICAgICBJZiBudWxsIHRoZSBUZXh0UGFuZWwgd2lsbCB1c2UgYSBwcml2YXRlIENsaXBib2FyZAorICAgICAqLworICAgIHB1YmxpYyBKVGV4dEZyYW1lKE1Db25zdFRleHQgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgIFN0cmluZyB0aXRsZSwKKyAgICAgICAgICAgICAgICAgICAgIENsaXBib2FyZCBjbGlwYm9hcmQpIHsKKworICAgICAgICBzdXBlcih0aXRsZSk7CisgICAgICAgIGluaXQodGV4dCwgY2xpcGJvYXJkKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgaW5pdChNQ29uc3RUZXh0IHRleHQsIENsaXBib2FyZCBjbGlwYm9hcmQpIHsKKyAgICAgICAgCisgICAgICAgIGZUZXh0UGFuZWwgPSBuZXcgSlRleHRQYW5lbCh0ZXh0LCBjbGlwYm9hcmQpOworCisgICAgICAgIEpUYWJSdWxlciB0YWJSdWxlciA9IG5ldyBKVGFiUnVsZXIoMTQsIDEwLCBmVGV4dFBhbmVsKTsKKworICAgICAgICBjcmVhdGVNZW51cygpOworCisgICAgICAgIENvbnRhaW5lciBjb250ZW50UGFuZSA9IGdldENvbnRlbnRQYW5lKCk7CisgICAgICAgIGNvbnRlbnRQYW5lLnNldExheW91dChuZXcgQm9yZGVyTGF5b3V0KCkpOworICAgICAgICBjb250ZW50UGFuZS5hZGQoZlRleHRQYW5lbCwgIkNlbnRlciIpOworICAgICAgICBjb250ZW50UGFuZS5hZGQodGFiUnVsZXIsICJOb3J0aCIpOworICAgICAgICBwYWNrKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGNyZWF0ZU1lbnVzKCkgeworCisgICAgICAgIEpNZW51QmFyIG1lbnVCYXIgPSBuZXcgSk1lbnVCYXIoKTsKKworICAgICAgICBTd2luZ01lbnVCdWlsZGVyLmdldEluc3RhbmNlKCkuY3JlYXRlTWVudXMobWVudUJhciwgZlRleHRQYW5lbCwgdGhpcyk7CisgICAgICAgIAorICAgICAgICBzZXRKTWVudUJhcihtZW51QmFyKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIE1UZXh0UGFuZWwgaW4gdGhpcyBmcmFtZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgTVRleHRQYW5lbCBnZXRUZXh0UGFuZWwoKSB7CisKKyAgICAgICAgcmV0dXJuIGZUZXh0UGFuZWw7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgCisgICAgICAgIFN0cmluZyBsYWYgPSBVSU1hbmFnZXIuZ2V0U3lzdGVtTG9va0FuZEZlZWxDbGFzc05hbWUoKTsKKyAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID09IDEpIHsKKyAgICAgICAgICAgIGlmIChhcmdzWzBdLmVxdWFscygiY3AiKSkgeworICAgICAgICAgICAgICAgIGxhZiA9IFVJTWFuYWdlci5nZXRDcm9zc1BsYXRmb3JtTG9va0FuZEZlZWxDbGFzc05hbWUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICB0cnkgeworICAgICAgICAgICAgVUlNYW5hZ2VyLnNldExvb2tBbmRGZWVsKGxhZik7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2goVGhyb3dhYmxlIHRoKSB7CisgICAgICAgICAgICB0aC5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgfQorICAgICAgICBKVGV4dEZyYW1lIGZyYW1lID0gbmV3IEpUZXh0RnJhbWUoKTsKKyAgICAgICAgZnJhbWUuYWRkV2luZG93TGlzdGVuZXIobmV3IFdpbmRvd0FkYXB0ZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCB3aW5kb3dDbG9zaW5nKFdpbmRvd0V2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0uZXhpdCgwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgICAgIGZyYW1lLnNldFNpemUoNTUwLCA3MDApOworICAgICAgICBmcmFtZS5zaG93KCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvc3dpbmd1aS9Td2luZ01lbnVCdWlsZGVyLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC9zd2luZ3VpL1N3aW5nTWVudUJ1aWxkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42NzRkMGI5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvc3dpbmd1aS9Td2luZ01lbnVCdWlsZGVyLmphdmEKQEAgLTAsMCArMSwyMzYgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFN3aW5nTWVudUJ1aWxkZXIuamF2YSx2ICQgJFJldmlzaW9uOiAxLjIgJCAkRGF0ZTogMjAwMS8xMC8zMCAwMjo0Mjo0OCAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnN3aW5ndWk7CisKK2ltcG9ydCBqYXZhLmF3dC5GcmFtZTsKK2ltcG9ydCBqYXZhLmF3dC5XaW5kb3c7CisKK2ltcG9ydCBqYXZheC5zd2luZy5KTWVudTsKK2ltcG9ydCBqYXZheC5zd2luZy5KTWVudUJhcjsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLk1UZXh0UGFuZWw7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbC5yZXNvdXJjZXMuRnJhbWVSZXNvdXJjZXM7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbC4qOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudWlpbXBsLkRpYWxvZ0l0ZW0uRGlhbG9nRmFjdG9yeTsKKworLyoqCisgKiBTd2luZ01lbnVCdWlsZGVyIHByb3ZpZGVzIGEgbWV0aG9kIGZvciBjcmVhdGluZyBhIHNldCBvZiBTd2luZyBtZW51cyBmb3IgaW50ZXJhY3RpbmcKKyAqIHdpdGggYW4gTVRleHRQYW5lbC4gIEZ1dHVyZSB2ZXJzaW9ucyBvZiB0aGlzIGNsYXNzIG1heSBwcm92aWRlIGdyZWF0ZXIgY29udHJvbAorICogb3ZlciB0aGUgbWVudSBjb250ZW50cy4KKyAqIEBzZWUgTVRleHRQYW5lbAorICovCitwdWJsaWMgZmluYWwgY2xhc3MgU3dpbmdNZW51QnVpbGRlciBleHRlbmRzIE1lbnVCdWlsZGVyIHsKKyAgICAKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN3aW5nTWVudUJ1aWxkZXIgSU5TVEFOQ0UgPSBuZXcgU3dpbmdNZW51QnVpbGRlcigpOworICAgIAorICAgIC8qKgorICAgICAqIElkIGZvciBhbiBFZGl0IG1lbnUuICBUaGUgRWRpdCBtZW51IGhhcyB0aGUgZm9sbG93aW5nIGl0ZW1zOgorICAgICAqIDx1bD4KKyAgICAgKiA8bGk+PGI+VW5kbzwvYj4gLSBpbnZva2UgdW5kbygpIG9uIHRoZSBNVGV4dFBhbmVsPC9saT4KKyAgICAgKiA8bGk+PGI+UmVkbzwvYj4gLSBpbnZva2UgcmVkbygpIG9uIHRoZSBNVGV4dFBhbmVsPC9saT4KKyAgICAgKiA8bGk+PGI+Q3V0PC9iPiAtIGludm9rZSBjdXQoKSBvbiB0aGUgTVRleHRQYW5lbDwvbGk+CisgICAgICogPGxpPjxiPkNvcHk8L2I+IC0gaW52b2tlIGNvcHkoKSBvbiB0aGUgTVRleHRQYW5lbDwvbGk+CisgICAgICogPGxpPjxiPlBhc3RlPC9iPiAtIGludm9rZSBwYXN0ZSgpIG9uIHRoZSBNVGV4dFBhbmVsPC9saT4KKyAgICAgKiA8bGk+PGI+Q2xlYXI8L2I+IC0gaW52b2tlIGNsZWFyKCkgb24gdGhlIE1UZXh0UGFuZWw8L2xpPgorICAgICAqIDxsaT48Yj5TZWxlY3QgQWxsPC9iPiAtIGludm9rZSBzZWxlY3RBbGwoKSBvbiB0aGUgTVRleHRQYW5lbDwvbGk+CisgICAgICogPC91bD4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBFRElUID0gTWVudUJ1aWxkZXIuRURJVDsKKyAgICAvKioKKyAgICAgKiBJZCBmb3IgdGhlIHBvaW50IHNpemVzIG1lbnUuICBUaGUgbWVudSBoYXMgaXRlbXMgdGhhdCBzZXQgdGhlIHNpemUgb2YgYSBjaGFyYWN0ZXIKKyAgICAgKiBpbiBhIHR5cGVmYWNlLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNJWkUgPSBNZW51QnVpbGRlci5TSVpFOworICAgIC8qKgorICAgICAqIElkIGZvciBhIFN0eWxlIG1lbnUuICBUaGUgU3R5bGUgbWVudSBoYXMgdGhlIGZvbGxvd2luZyBpdGVtczoKKyAgICAgKiA8dWw+CisgICAgICogPGxpPjxiPlBsYWluPC9iPiAtIHJlbW92ZSA8Y29kZT5XRUlHSFQ8L2NvZGU+LAorICAgICAqICAgICAgICAgICAgICAgICAgICA8Y29kZT5QT1NUVVJFPC9jb2RlPiwKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgPGNvZGU+VU5ERVJMSU5FPC9jb2RlPiBhbmQKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgPGNvZGU+U1RSSUtFVEhST1VHSDwvY29kZT4gYXR0cmlidXRlcyBmcm9tIHRoZQorICAgICAqIGN1cnJlbnQgc2VsZWN0aW9uPC9saT4KKyAgICAgKiA8bGk+PGI+Qm9sZDwvYj4gLSBhZGQgPGNvZGU+e1dFSUdIVCxXRUlHSFRfQk9MRH08L2NvZGU+IHRvCisgICAgICogdGhlIGN1cnJlbnQgc2VsZWN0aW9uPC9saT4KKyAgICAgKiA8bGk+PGI+SXRhbGljPC9iPiAtIGFkZCA8Y29kZT57UE9TVFVSRSxQT1NUVVJFX0lUQUxJQ308L2NvZGU+IHRvCisgICAgICogdGhlIGN1cnJlbnQgc2VsZWN0aW9uPC9saT4KKyAgICAgKiA8bGk+PGI+VW5kZXJsaW5lPC9iPiAtIGFkZCA8Y29kZT57VU5ERVJMSU5FLFVOREVSTElORV9PTn08L2NvZGU+IHRvCisgICAgICogdGhlIGN1cnJlbnQgc2VsZWN0aW9uPC9saT4KKyAgICAgKiA8bGk+PGI+U3RyaWtldGhyb3VnaDwvYj4gLSBhZGQgPGNvZGU+e1NUUklLRVRIUk9VR0gsU1RSSUtFVEhST1VHSF9PTn08L2NvZGU+CisgICAgICogdG8gdGhlIGN1cnJlbnQgc2VsZWN0aW9uPC9saT4KKyAgICAgKiA8bGk+PGI+Rm9udC4uLjwvYj4gLSBkaXNwbGF5IGEgZGlhbG9nIGFsbG93aW5nIHRoZSB1c2VyIHRvCisgICAgICogc2VsZWN0IGEgdHlwZWZhY2UgKGZvbnQgZmFtaWx5KSBmb3IgdGhlIGN1cnJlbnQgc2VsZWN0aW9uPC9saT4KKyAgICAgKiA8bGk+PGI+Rm9yZWNvbG9yLi4uPC9iPiAtIGRpc3BsYXkgYSBkaWFsb2cgYWxsb3dpbmcgdGhlIHVzZXIgdG8KKyAgICAgKiBzZWxlY3QgYSBmb3JlZ3JvdW5kIGNvbG9yIGZvciB0aGUgY3VycmVudCBzZWxlY3Rpb248L2xpPgorICAgICAqIDxsaT48Yj5CYWNrY29sb3IuLi48L2I+IC0gZGlzcGxheSBhIGRpYWxvZyBhbGxvd2luZyB0aGUgdXNlciB0bworICAgICAqIHNlbGVjdCBhIGJhY2tncm91bmQgY29sb3IgZm9yIHRoZSBjdXJyZW50IHNlbGVjdGlvbjwvbGk+CisgICAgICogPC91bD4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTVFlMRSA9IE1lbnVCdWlsZGVyLlNUWUxFOworICAgIC8qKgorICAgICAqIElkIGZvciBhIHBhcmFncmFwaCBhbGlnbm1lbnQgbWVudS4gIFRoZSBtZW51IGhhcyB0aGUgZm9sbG93aW5nIGl0ZW1zOgorICAgICAqIDx1bD4KKyAgICAgKiA8bGk+PGI+TGVhZGluZzwvYj4gLSBnaXZlIHNlbGVjdGVkIHBhcmFncmFwaChzKSBMRUFESU5HIGZsdXNoPC9saT4KKyAgICAgKiA8bGk+PGI+Q2VudGVyPC9iPiAtIGdpdmUgc2VsZWN0ZWQgcGFyYWdyYXBoKHMpIENFTlRFUiBmbHVzaDwvbGk+CisgICAgICogPGxpPjxiPlRyYWlsaW5nPC9iPiAtIGdpdmUgc2VsZWN0ZWQgcGFyYWdyYXBoKHMpIFRSQUlMSU5HIGZsdXNoPC9saT4KKyAgICAgKiA8bGk+PGI+SnVzdGlmaWVkPC9iPiAtIGdpdmUgc2VsZWN0ZWQgcGFyYWdyYXBoKHMpIGZ1bGwganVzdGlmaWNhdGlvbjwvbGk+CisgICAgICogPC91bD4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGTFVTSCA9IE1lbnVCdWlsZGVyLkZMVVNIOworICAgIC8qKgorICAgICAqIElkIGZvciBhIG1lbnUgdGhhdCBzZXRzIHRoZSBLZXlSZW1hcAorICAgICAqIG9uIGFuIE1UZXh0UGFuZWwuICBUaGUgbWVudSBoYXMgdGhlIGZvbGxvd2luZyBpdGVtczoKKyAgICAgKiA8dWw+CisgICAgICogPGxpPjxiPkRlZmF1bHQ8L2I+IC0gc2V0IEtleVJlbWFwIHRvIGlkZW50aXR5IHJlbWFwPC9saT4KKyAgICAgKiA8bGk+PGI+QXJhYmljPC9iPiAtIHNldCBLZXlSZW1hcCB0byBBcmFiaWMgdHJhbnNsaXRlcmF0aW9uPC9saT4KKyAgICAgKiA8bGk+PGI+SGVicmV3PC9iPiAtIHNldCBLZXlSZW1hcCB0byBIZWJyZXcgdHJhbnNsaXRlcmF0aW9uPC9saT4KKyAgICAgKiA8bGk+PGI+SXNyYWVsIE5pa3VkPC9iPiAtIHNldCBLZXlSZW1hcCB0byBJc3JhZWwgTmlrdWQ8L2xpPgorICAgICAqIDxsaT48Yj5UaGFpIEtldG1hbmVlPC9iPiAtIHNldCBLZXlSZW1hcCB0byBUaGFpIEtldG1hbmVlPC9saT4KKyAgICAgKiA8L3VsPgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEtFWU1BUCA9IE1lbnVCdWlsZGVyLktFWU1BUDsKKyAgICAvKioKKyAgICAgKiBJZCBmb3IgYSBtZW51IHRoYXQgc2V0cworICAgICAqIHRoZSBwcmltYXJ5IHJ1biBkaXJlY3Rpb24gZm9yIGEgcGFyYWdyYXBoLiAgUnVuIGRpcmVjdGlvbiBjYW4gYmUgbGVmdC10by1yaWdodCwKKyAgICAgKiByaWdodC10by1sZWZ0LCBvciBjYW4gdXNlIHRoZSBkZWZhdWx0IHJ1biBkaXJlY3Rpb24gZnJvbSB0aGUgVW5pY29kZSBiaWRpIGFsZ29yaXRobS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCSURJID0gTWVudUJ1aWxkZXIuQklESTsKKyAgICAvKioKKyAgICAgKiBJZCBmb3IgYSBtZW51IHdpdGggYW4gPGI+QWJvdXQ8L2I+IGl0ZW0uICBXaGVuIHNlbGVjdGVkLCAKKyAgICAgKiB0aGUgaXRlbSBkaXNwbGF5cyBhIEZyYW1lIGNvbnRhaW5pbmcgc29tZQorICAgICAqIHNlbGYtcHJvbW90aW9uYWwgdGV4dC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBQk9VVCA9IE1lbnVCdWlsZGVyLkFCT1VUOworICAgIC8qKgorICAgICAqIFJldHVybiBhbiBpbnN0YW5jZSBvZiBTd2luZ01lbnVCdWlsZGVyLgorICAgICAqLworICAgICAKKyAgICBwdWJsaWMgc3RhdGljIFN3aW5nTWVudUJ1aWxkZXIgZ2V0SW5zdGFuY2UoKSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gSU5TVEFOQ0U7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgSk1lbnVCYXIgZk1lbnVCYXI7CisgICAgCisgICAgcHJpdmF0ZSBTd2luZ01lbnVCdWlsZGVyKCkgeworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBBZGQgYSBzdGFuZGFyZCBzZXQgb2YgbWVudXMgdG8gdGhlIGdpdmVuIG1lbnUgYmFyLiAgVGhlIG1lbnVzIAorICAgICAqIHdpbGwgaW50ZXJhY3Qgd2l0aCB0aGUgZ2l2ZW4gTVRleHRQYW5lbC4KKyAgICAgKiBAcGFyYW0gbWVudUJhciB0aGUgTWVudUJhciB0byB3aGljaCBtZW51cyBhcmUgYWRkZWQKKyAgICAgKiBAcGFyYW0gdGV4dFBhbmVsIHRoZSBNVGV4dFBhbmVsIHdpdGggd2hpY2ggdGhlIG1lbnVzIGludGVyYWN0CisgICAgICogQHBhcmFtIGZyYW1lIGEgRnJhbWUgdG8gdXNlIGFzIHRoZSBwYXJlbnQgb2YgYW55IGRpYWxvZ3MgY3JlYXRlZCBieSBhIAorICAgICAqICAgYSBtZW51IGl0ZW0uICBJZiBudWxsLCBtZW51IGl0ZW1zIHdoaWNoIGNyZWF0ZSBkaWFsb2dzIHdpbGwgYmUgb21pdHRlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBjcmVhdGVNZW51cyhKTWVudUJhciBtZW51QmFyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNVGV4dFBhbmVsIHRleHRQYW5lbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmFtZSBmcmFtZSkgeworCisgICAgICAgIGNyZWF0ZU1lbnVzKG1lbnVCYXIsIHRleHRQYW5lbCwgZnJhbWUsIGRlZmF1bHRNZW51cyk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEFkZCBhIHNldCBvZiBtZW51cyB0byB0aGUgZ2l2ZW4gbWVudSBiYXIuICBUaGUgbWVudXMgCisgICAgICogd2lsbCBpbnRlcmFjdCB3aXRoIHRoZSBnaXZlbiBNVGV4dFBhbmVsLgorICAgICAqIEBwYXJhbSBtZW51QmFyIHRoZSBNZW51QmFyIHRvIHdoaWNoIG1lbnVzIGFyZSBhZGRlZAorICAgICAqIEBwYXJhbSB0ZXh0UGFuZWwgdGhlIE1UZXh0UGFuZWwgd2l0aCB3aGljaCB0aGUgbWVudXMgaW50ZXJhY3QKKyAgICAgKiBAcGFyYW0gZnJhbWUgYSBGcmFtZSB0byB1c2UgYXMgdGhlIHBhcmVudCBvZiBhbnkgZGlhbG9ncyBjcmVhdGVkIGJ5IGEgCisgICAgICogICBhIG1lbnUgaXRlbS4gIElmIG51bGwsIG1lbnUgaXRlbXMgd2hpY2ggY3JlYXRlIGRpYWxvZ3Mgd2lsbCBiZSBvbWl0dGVkLgorICAgICAqIEBwYXJhbSBtZW51cyBhbiBhcnJheSBvZiBpbnRlZ2VyIG1lbnUgaWQncy4gIEVhY2ggZWxlbWVudCBvZiB0aGUKKyAgICAgKiAgIGFycmF5IG11c3QgYmUgb25lIG9mIHRoaXMgY2xhc3MncyBtZW51IGlkIGNvbnN0YW50cy4gIElmIG51bGwsCisgICAgICogICB0aGUgZGVmYXVsdCBtZW51cyBhcmUgY3JlYXRlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBjcmVhdGVNZW51cyhKTWVudUJhciBtZW51QmFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1UZXh0UGFuZWwgdGV4dFBhbmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyYW1lIGZyYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludFtdIG1lbnVzKSB7CisgICAgICAgIAorICAgICAgICBpZiAobWVudXMgPT0gbnVsbCkgeworICAgICAgICAgICAgbWVudXMgPSBkZWZhdWx0TWVudXM7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHN5bmNocm9uaXplZCAoTUl0ZW0uTE9DSykgeworICAgICAgICAgICAgCisgICAgICAgICAgICBmTWVudUJhciA9IG1lbnVCYXI7CisgICAgICAgICAgICBkb0NyZWF0ZU1lbnVzKHRleHRQYW5lbCwgZnJhbWUsIG1lbnVzKTsKKyAgICAgICAgICAgIGZNZW51QmFyID0gbnVsbDsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVBZGRNZW51KFN0cmluZyBrZXkpIHsKKyAgICAgICAgCisgICAgICAgIEpNZW51IG1lbnUgPSBuZXcgSk1lbnUoUmVzb3VyY2VVdGlscy5nZXRSZXNvdXJjZVN0cmluZyhrZXkpKTsKKyAgICAgICAgZk1lbnVCYXIuYWRkKG1lbnUpOworICAgICAgICBNSXRlbS5zZXRJdGVtRmFjdG9yeShuZXcgU3dpbmdNZW51RmFjdG9yeShtZW51KSk7CisgICAgfQorCisgICAgcHJvdGVjdGVkIERpYWxvZ0ZhY3RvcnkgY3JlYXRlT2JqZWN0RGlhbG9nRmFjdG9yeShmaW5hbCBTdHJpbmcgZGlhbG9nVGl0bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgZGlhbG9nTWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIE9iamVjdCBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBib29sZWFuIGNoYXJhY3RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZ1tdIG5hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgT2JqZWN0W10gdmFsdWVzKSB7CisgICAgICAgIAorICAgICAgICBmaW5hbCBGcmFtZSBkaWFsb2dQYXJlbnQgPSBmRGlhbG9nUGFyZW50OworCisgICAgICAgIHJldHVybiBuZXcgRGlhbG9nRmFjdG9yeSgpIHsgICAgCisgICAgICAgICAgICBwdWJsaWMgV2luZG93IGNyZWF0ZURpYWxvZyhNVGV4dFBhbmVsIHRleHRQYW5lbCkgeworICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSk9iamVjdERpYWxvZyhkaWFsb2dQYXJlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhbG9nVGl0bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhbG9nTWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0UGFuZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMpOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KKyAgICAKKyAgICBwcm90ZWN0ZWQgRGlhbG9nRmFjdG9yeSBjcmVhdGVOdW1iZXJEaWFsb2dGYWN0b3J5KGZpbmFsIFN0cmluZyBkaWFsb2dUaXRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBkaWFsb2dNZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgT2JqZWN0IGtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gY2hhcmFjdGVyKSB7CisgICAgICAgIAorICAgICAgICBmaW5hbCBGcmFtZSBkaWFsb2dQYXJlbnQgPSBmRGlhbG9nUGFyZW50OworICAgICAgICAvLyB2YXJpYWJsZSBub3QgdXNlZCBmaW5hbCBNVGV4dFBhbmVsIHRleHRQYW5lbCA9IGZUZXh0UGFuZWw7CisgICAgICAgICAgICAKKyAgICAgICAgcmV0dXJuIG5ldyBEaWFsb2dGYWN0b3J5KCkgeworICAgICAgICAgICAgcHVibGljIFdpbmRvdyBjcmVhdGVEaWFsb2coTVRleHRQYW5lbCBmVGV4dFBhbmVsKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBKTnVtYmVyRGlhbG9nKGRpYWxvZ1BhcmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhbG9nVGl0bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpYWxvZ01lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZUZXh0UGFuZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9ICAgIAorICAgIAorICAgIHByb3RlY3RlZCBEaWFsb2dGYWN0b3J5IGNyZWF0ZUFib3V0RGlhbG9nRmFjdG9yeSgpIHsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBuZXcgRGlhbG9nRmFjdG9yeSgpIHsKKyAgICAgICAgICAgIHB1YmxpYyBXaW5kb3cgY3JlYXRlRGlhbG9nKE1UZXh0UGFuZWwgdGV4dFBhbmVsKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHRpdGxlID0gUmVzb3VyY2VVdGlscy5nZXRSZXNvdXJjZVN0cmluZyhGcmFtZVJlc291cmNlcy5BQk9VVF9USVRMRSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBKTWVzc2FnZURpYWxvZyh0aXRsZSwgQWJvdXRUZXh0LmdldEFib3V0VGV4dCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvc3dpbmd1aS9Td2luZ01lbnVGYWN0b3J5LmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC9zd2luZ3VpL1N3aW5nTWVudUZhY3RvcnkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wYzE5YWU0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvc3dpbmd1aS9Td2luZ01lbnVGYWN0b3J5LmphdmEKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFN3aW5nTWVudUZhY3RvcnkuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo0NjoyMiAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnN3aW5ndWk7CisKK2ltcG9ydCBqYXZhLmF3dC5FdmVudDsKKworaW1wb3J0IGphdmF4LnN3aW5nLkpDaGVja0JveE1lbnVJdGVtOworaW1wb3J0IGphdmF4LnN3aW5nLkpNZW51OworaW1wb3J0IGphdmF4LnN3aW5nLkpNZW51SXRlbTsKK2ltcG9ydCBqYXZheC5zd2luZy5KU2VwYXJhdG9yOworaW1wb3J0IGphdmF4LnN3aW5nLktleVN0cm9rZTsKKworaW1wb3J0IGphdmEuYXd0LmV2ZW50LkFjdGlvbkV2ZW50OworaW1wb3J0IGphdmEuYXd0LmV2ZW50LkFjdGlvbkxpc3RlbmVyOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC51aWltcGwucmVzb3VyY2VzLk1lbnVEYXRhOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudWlpbXBsLkV2ZW50TGlzdGVuZXI7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC51aWltcGwuTUl0ZW07CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC51aWltcGwuTUl0ZW0uSXRlbUZhY3Rvcnk7CisKK2ZpbmFsIGNsYXNzIFN3aW5nTWVudUZhY3RvcnkgaW1wbGVtZW50cyBJdGVtRmFjdG9yeSB7CisgICAgICAgIAorICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHJpdmF0ZSBmaW5hbCBjbGFzcyBTd2luZ01JdGVtIGV4dGVuZHMgTUl0ZW0geworICAgICAgICAKKyAgICAgICAgcHJpdmF0ZSBKTWVudUl0ZW0gZkl0ZW07CisgICAgICAgIAorICAgICAgICBTd2luZ01JdGVtKEpNZW51SXRlbSBpdGVtKSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZJdGVtID0gaXRlbTsKKyAgICAgICAgICAgIGl0ZW0uYWRkQWN0aW9uTGlzdGVuZXIobmV3IEFjdGlvbkxpc3RlbmVyKCkgeworICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIGFjdGlvblBlcmZvcm1lZChBY3Rpb25FdmVudCBlKSB7CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdGVkKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHByb3RlY3RlZCB2b2lkIGhhbmRsZVNlbGVjdGVkKCkgeworICAgICAgICAgICAgCisgICAgICAgICAgICBzdXBlci5oYW5kbGVTZWxlY3RlZCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwdWJsaWMgZmluYWwgdm9pZCBzZXRFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCkgeworICAgICAgICAgICAgCisgICAgICAgICAgICBmSXRlbS5zZXRFbmFibGVkKGVuYWJsZWQpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwdWJsaWMgdm9pZCBzZXRTdGF0ZShib29sZWFuIGNoZWNrZWQpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBKQ2hlY2tCb3hNZW51SXRlbSBpdGVtID0gKEpDaGVja0JveE1lbnVJdGVtKSBmSXRlbTsKKyAgICAgICAgICAgICAgICBpdGVtLnNldFN0YXRlKGNoZWNrZWQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2F0Y2goQ2xhc3NDYXN0RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBwZXJmb3JtIHNldENoZWNrZWQgb24gbm9uLWNoZWNrYm94IGl0ZW0iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwcml2YXRlIEpNZW51IGZNZW51OworICAgICAgICAKKyAgICBTd2luZ01lbnVGYWN0b3J5KEpNZW51IG1lbnUpIHsKKyAgICAgICAgICAgIAorICAgICAgICBmTWVudSA9IG1lbnU7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgTUl0ZW0gaGFuZGxlQ3JlYXRlKEpNZW51SXRlbSBpdGVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lbnVEYXRhIG1lbnVEYXRhKSB7CisKKyAgICAgICAgaWYgKG1lbnVEYXRhLmhhc1Nob3J0Y3V0KCkpIHsKKyAgICAgICAgICAgIEtleVN0cm9rZSBrcyA9IEtleVN0cm9rZS5nZXRLZXlTdHJva2UobWVudURhdGEuZ2V0U2hvcnRjdXRLZXlDb2RlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50LkNUUkxfTUFTSyk7CisgICAgICAgICAgICBpdGVtLnNldEFjY2VsZXJhdG9yKGtzKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZk1lbnUuYWRkKGl0ZW0pOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIG5ldyBTd2luZ01JdGVtKGl0ZW0pOworICAgIH0KKyAgICAgICAgCisgICAgcHVibGljIE1JdGVtIGNyZWF0ZUl0ZW0oTWVudURhdGEgbWVudURhdGEpIHsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBoYW5kbGVDcmVhdGUobmV3IEpNZW51SXRlbShtZW51RGF0YS5nZXROYW1lKCkpLCBtZW51RGF0YSk7CisgICAgfSAgICAgICAgCisKKyAgICBwdWJsaWMgTUl0ZW0gY3JlYXRlQ2hlY2tib3hJdGVtKE1lbnVEYXRhIG1lbnVEYXRhKSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gaGFuZGxlQ3JlYXRlKG5ldyBKQ2hlY2tCb3hNZW51SXRlbShtZW51RGF0YS5nZXROYW1lKCkpLCBtZW51RGF0YSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIGNyZWF0ZVNlcGFyYXRvcigpIHsKKyAgICAgICAgCisgICAgICAgIGZNZW51LmFkZChuZXcgSlNlcGFyYXRvcigpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC9zd2luZ3VpL3BhY2thZ2UuaHRtbCBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N3aW5ndWkvcGFja2FnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjNlODg1ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC9zd2luZ3VpL3BhY2thZ2UuaHRtbApAQCAtMCwwICsxLDE5IEBACis8IS0tCisvKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDAtMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vcmljaHRleHQvc3dpbmd1aS9wYWNrYWdlLmh0bWwsdiAkCisgKiAkRGF0ZTogMjAwMi8xMi8xOCAwMzo1Njo0MSAkCisgKiAkUmV2aXNpb246IDEuMiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworLS0+Cis8aHRtbD4KKzxib2R5IGJnY29sb3I9IndoaXRlIj4KK1Byb3ZpZGVzIGNsYXNzZXMgZm9yIGJ1aWxkaW5nIGEgU3dpbmctYmFzZWQgdXNlciBpbnRlcmZhY2UgZm9yIGEgVGV4dFBhbmVsLgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGVzdC9EZWNsYXJhdGlvbi5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGVzdC9EZWNsYXJhdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjY5YmQyZmYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXN0L0RlY2xhcmF0aW9uLmphdmEKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogRGVjbGFyYXRpb24uamF2YSx2ICQgJFJldmlzaW9uOiAxLjIgJCAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNjozOCAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRlc3Q7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuTUNvbnN0VGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuU3R5bGVkVGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRsYXlvdXQuYXR0cmlidXRlcy5BdHRyaWJ1dGVNYXA7CisKKy8qKgorICogVGhpcyBjbGFzcyBjb250YWlucyB0aGUgZmlyc3QgZm91ciBwYXJhZ3JhcGhzIG9mIHRoZSBEZWNsYXJhdGlvbgorICogb2YgSW5kZXBlbmRlbmNlLCBhcyBib3RoIHN0eWxlZCBhbmQgdW5zdHlsZWQgdGV4dC4gIFRoZSB2aWV3cworICogZXhwcmVzc2VkIHRoZXJlaW4gYXJlIG5vdCBuZWNlc3NhcmlseSB0aG9zZSBvZiB0aGUgcHJvZ3JhbW1lciBvciBvZgorICogaGlzL2hlciBlbXBsb3llci4gIE5vIGNyaXRpY2lzbSBvZiBhbnkgbW9uYXJjaHksIG9saWdhcmNoeSwgZGljdGF0b3JzaGlwLAorICogYXV0b2NyYWN5LCBwbHV0b2NyYWN5LCB0aGVvY3JhY3ksIGFuYXJjaGlzdCB0ZXJyaXRvcnksIGNvbG9uaWFsIHBvd2VyLAorICogb3IgYW55IG90aGVyIG5vbmRlbW9jcmF0aWMgZm9ybSBvZiBnb3Zlcm5tZW50IGlzIGludGVuZGVkLiAgVGhpcyBkb2N1bWVudAorICogaXMgcHJvdmlkZWQgImFzLWlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzZWQgb3IgaW1wbGllZC4KKyAqLworcHVibGljIGZpbmFsIGNsYXNzIERlY2xhcmF0aW9uIHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgZmdEZWNsYXJhdGlvblN0ciA9ICJJbiBDb25ncmVzcywgSnVseSA0LCAxNzc2LCBUSEUgVU5BTklNT1VTIERFQ0xBUkFUSU9OIE9GIFRIRSBUSElSVEVFTiBVTklURUQgU1RBVEVTIE9GIEFNRVJJQ0FcbiIgKworICAgICAgICAiXG4iICsKKyAgICAgICAgIldoZW4gaW4gdGhlIENvdXJzZSBvZiBodW1hbiBFdmVudHMsIGl0IGJlY29tZXMgbmVjZXNzYXJ5IGZvciBvbmUgUGVvcGxlIHRvIGRpc3NvbHZlIHRoZSBQb2xpdGljYWwgQmFuZHMgd2hpY2ggaGF2ZSBjb25uZWN0ZWQgdGhlbSB3aXRoIGFub3RoZXIsIGFuZCB0byBhc3N1bWUgYW1vbmcgdGhlIFBvd2VycyBvZiB0aGUgRWFydGgsIHRoZSBzZXBhcmF0ZSBhbmQgZXF1YWwgU3RhdGlvbiB0byB3aGljaCB0aGUgTGF3cyBvZiBOYXR1cmUgYW5kIG9mIE5hdHVyZSdzIEdvZCBlbnRpdGxlIHRoZW0sIGEgZGVjZW50IFJlc3BlY3QgdG8gdGhlIE9waW5pb25zIG9mIE1hbmtpbmQgcmVxdWlyZXMgdGhhdCB0aGV5IHNob3VsZCBkZWNsYXJlIHRoZSBjYXVzZXMgd2hpY2ggaW1wZWwgdGhlbSB0byB0aGUgU2VwYXJhdGlvbi5cbiIgKworICAgICAgICAiXG4iICsKKyAgICAgICAgIldlIGhvbGQgdGhlc2UgVHJ1dGhzIHRvIGJlIHNlbGYtZXZpZGVudCwgdGhhdCBhbGwgTWVuIGFyZSBjcmVhdGVkIGVxdWFsLCB0aGF0IHRoZXkgYXJlIGVuZG93ZWQgYnkgdGhlaXIgQ3JlYXRvciB3aXRoIGNlcnRhaW4gdW5hbGllbmFibGUgUmlnaHRzLCB0aGF0IGFtb25nIHRoZXNlIGFyZSBMaWZlLCBMaWJlcnR5LCBhbmQgdGhlIFB1cnN1aXQgb2YgSGFwcGluZXNzLlxuIiArCisgICAgICAgICJcbiIgKworICAgICAgICAiVGhhdCB0byBzZWN1cmUgdGhlc2UgUmlnaHRzLCBHb3Zlcm5tZW50cyBhcmUgaW5zdGl0dXRlZCBhbW9uZyBNZW4sIGRlcml2aW5nIHRoZWlyIGp1c3QgUG93ZXJzIGZyb20gdGhlIENvbnNlbnQgb2YgdGhlIEdvdmVybmVkLCB0aGF0IHdoZW5ldmVyIGFueSBGb3JtIG9mIEdvdmVybm1lbnQgYmVjb21lcyBkZXN0cnVjdGl2ZSBvZiB0aGVzZSBFbmRzLCBpdCBpcyB0aGUgUmlnaHQgb2YgdGhlIFBlb3BsZSB0byBhbHRlciBvciB0byBhYm9saXNoIGl0LCBhbmQgdG8gaW5zdGl0dXRlIG5ldyBHb3Zlcm5tZW50LCBsYXlpbmcgaXRzIEZvdW5kYXRpb24gb24gc3VjaCBQcmluY2lwbGVzLCBhbmQgb3JnYW5pemluZyBpdHMgUG93ZXJzIGluIHN1Y2ggRm9ybSwgYXMgdG8gdGhlbSBzaGFsbCBzZWVtIG1vc3QgbGlrZWx5IHRvIGVmZmVjdCB0aGVpciBTYWZldHkgYW5kIEhhcHBpbmVzcy4gUHJ1ZGVuY2UsIGluZGVlZCwgd2lsbCBkaWN0YXRlIHRoYXQgR292ZXJubWVudHMgbG9uZyBlc3RhYmxpc2hlZCBzaG91bGQgbm90IGJlIGNoYW5nZWQgZm9yIGxpZ2h0IGFuZCB0cmFuc2llbnQgQ2F1c2VzOyBhbmQgYWNjb3JkaW5nbHkgYWxsIEV4cGVyaWVuY2UgaGF0aCBzaGV3biwgdGhhdCBNYW5raW5kIGFyZSBtb3JlIGRpc3Bvc2VkIHRvIHN1ZmZlciwgd2hpbGUgRXZpbHMgYXJlIHN1ZmZlcmFibGUsIHRoYW4gdG8gcmlnaHQgdGhlbXNlbHZlcyBieSBhYm9saXNoaW5nIHRoZSBGb3JtcyB0byB3aGljaCB0aGV5IGFyZSBhY2N1c3RvbWVkLiBCdXQgd2hlbiBhIGxvbmcgVHJhaW4gb2YgQWJ1c2VzIGFuZCBVc3VycGF0aW9ucywgcHVyc3VpbmcgaW52YXJpYWJseSB0aGUgc2FtZSBPYmplY3QsIGV2aW5jZXMgYSBEZXNpZ24gdG8gcmVkdWNlIHRoZW0gdW5kZXIgYWJzb2x1dGUgRGVzcG90aXNtLCBpdCBpcyB0aGVpciBSaWdodCwgaXQgaXMgdGhlaXIgRHV0eSwgdG8gdGhyb3cgb2ZmIHN1Y2ggR292ZXJubWVudCwgYW5kIHRvIHByb3ZpZGUgbmV3IEd1YXJkcyBmb3IgdGhlaXIgZnV0dXJlIFNlY3VyaXR5LlxuIiArCisgICAgICAgICJcbiI7CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIE1Db25zdFRleHQgZmdEZWNsYXJhdGlvbiA9IG5ldyBTdHlsZWRUZXh0KGZnRGVjbGFyYXRpb25TdHIsIEF0dHJpYnV0ZU1hcC5FTVBUWV9BVFRSSUJVVEVfTUFQKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3Rlc3QvSVRlc3RUZXh0UGFuZWwuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3Rlc3QvSVRlc3RUZXh0UGFuZWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42YjgwYjk2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGVzdC9JVGVzdFRleHRQYW5lbC5qYXZhCkBAIC0wLDAgKzEsMjE0IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBJVGVzdFRleHRQYW5lbC5qYXZhLHYgJCAkUmV2aXNpb246IDEuMyAkICREYXRlOiAyMDAyLzAyLzE2IDAzOjA2OjM4ICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudGVzdDsKKworaW1wb3J0IGphdmEuYXd0LkJ1dHRvbjsKK2ltcG9ydCBqYXZhLmF3dC5GcmFtZTsKK2ltcG9ydCBqYXZhLmF3dC5HcmlkTGF5b3V0OworaW1wb3J0IGphdmEuYXd0LmRhdGF0cmFuc2Zlci5DbGlwYm9hcmQ7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuQWN0aW9uRXZlbnQ7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuQWN0aW9uTGlzdGVuZXI7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuV2luZG93RXZlbnQ7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuV2luZG93QWRhcHRlcjsKKworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudGV4dC5EYXRlRm9ybWF0OworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuTVRleHRQYW5lbDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5UZXh0UGFuZWw7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5hd3R1aS5UZXh0RnJhbWU7CisKK3B1YmxpYyBjbGFzcyBJVGVzdFRleHRQYW5lbCBleHRlbmRzIEZyYW1lIGltcGxlbWVudHMgQWN0aW9uTGlzdGVuZXIgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcml2YXRlIHN0YXRpYyBsb25nIGZnT3BDb3VudCA9IDA7CisKKyAgICBwcml2YXRlIFRlc3RUZXh0UGFuZWwgZlRlc3Q7CisgICAgCisgICAgcHJpdmF0ZSBNVGV4dFBhbmVsIGZUZXh0UGFuZWw7CisgICAgcHJpdmF0ZSBGcmFtZSBmVGV4dEZyYW1lOworICAgIHByaXZhdGUgQ2xpcGJvYXJkIGZDbGlwYm9hcmQ7CisgICAgcHJpdmF0ZSBCdXR0b24gZkV4ZXJzaXplLCBmU3RyZXNzVGVzdCwgZlJlc2l6ZTsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKworICAgICAgICBEYXRlIHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKCk7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIENsaXBib2FyZCBjbGlwYm9hcmQgPSBuZXcgQ2xpcGJvYXJkKCJJVGV4dFRlc3RQYW5lbCIpOworICAgICAgICAgICAgVGV4dEZyYW1lIGZyYW1lID0gbmV3IFRleHRGcmFtZShudWxsLCAiSW50ZXJhY3RpdmUgVGVzdCIsIGNsaXBib2FyZCk7CisgICAgICAgICAgICBNVGV4dFBhbmVsIHBhbmVsID0gZnJhbWUuZ2V0VGV4dFBhbmVsKCk7CisKKyAgICAgICAgICAgIG5ldyBJVGVzdFRleHRQYW5lbChwYW5lbCwgZnJhbWUsIGNsaXBib2FyZCkuc2hvdygpOworICAgICAgICB9CisgICAgICAgIGZpbmFsbHkgeworICAgICAgICAgICAgRGF0ZUZvcm1hdCBkZiA9IERhdGVGb3JtYXQuZ2V0RGF0ZVRpbWVJbnN0YW5jZSgpOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJTdGFydCB0aW1lOiAiICsgZGYuZm9ybWF0KHN0YXJ0RGF0ZSkpOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJFbmQgVGltZTogIiArIGRmLmZvcm1hdChuZXcgRGF0ZSgpKSk7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIk9wIGNvdW50OiAiICsgZmdPcENvdW50KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBJVGVzdFRleHRQYW5lbChNVGV4dFBhbmVsIHBhbmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGcmFtZSBmcmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpcGJvYXJkIGNsaXBib2FyZCkgeworCisgICAgICAgIGZUZXh0UGFuZWwgPSBwYW5lbDsKKyAgICAgICAgZlRlc3QgPSBuZXcgVGVzdFRleHRQYW5lbChmVGV4dFBhbmVsKTsKKyAgICAgICAgZkNsaXBib2FyZCA9IGNsaXBib2FyZDsKKworICAgICAgICBzZXRMYXlvdXQobmV3IEdyaWRMYXlvdXQoMCwgMSkpOworCisgICAgICAgIGZUZXh0RnJhbWUgPSBmcmFtZTsKKyAgICAgICAgZlRleHRGcmFtZS5zZXRTaXplKDM1MCwgNTAwKTsKKyAgICAgICAgZlRleHRGcmFtZS5zaG93KCk7CisKKyAgICAgICAgLy8gaW5pdGlhbGl6ZSBVSToKKyAgICAgICAgZkV4ZXJzaXplID0gbmV3IEJ1dHRvbigiRXhlcmNpc2UiKTsKKyAgICAgICAgZkV4ZXJzaXplLmFkZEFjdGlvbkxpc3RlbmVyKHRoaXMpOworICAgICAgICBhZGQoZkV4ZXJzaXplKTsKKworICAgICAgICBmU3RyZXNzVGVzdCA9IG5ldyBCdXR0b24oIlN0cmVzcyBUZXN0Iik7CisgICAgICAgIGZTdHJlc3NUZXN0LmFkZEFjdGlvbkxpc3RlbmVyKHRoaXMpOworICAgICAgICBhZGQoZlN0cmVzc1Rlc3QpOworCisgICAgICAgIHBhY2soKTsKKworICAgICAgICBhZGRXaW5kb3dMaXN0ZW5lcihuZXcgV2luZG93QWRhcHRlcigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHdpbmRvd0FjdGl2YXRlZChXaW5kb3dFdmVudCBlKSB7CisgICAgICAgICAgICAgICAgLy9hY3RpdmF0ZVRleHRGcmFtZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHVibGljIHZvaWQgd2luZG93Q2xvc2luZyhXaW5kb3dFdmVudCBlKSB7CisgICAgICAgICAgICAgICAgU3lzdGVtLmV4aXQoMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworCisgICAgICAgIHNldFNpemUoMjgwLCAxNTApOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBhY3RpdmF0ZVRleHRGcmFtZSgpIHsKKworICAgICAgICBmVGV4dEZyYW1lLnRvRnJvbnQoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBhY3Rpb25QZXJmb3JtZWQoQWN0aW9uRXZlbnQgZXZlbnQpIHsKKworICAgICAgICBPYmplY3Qgc291cmNlID0gZXZlbnQuZ2V0U291cmNlKCk7CisgICAgICAgIGFjdGl2YXRlVGV4dEZyYW1lKCk7CisgICAgICAgIERhdGUgc3RhcnREYXRlID0gbmV3IERhdGUoKTsKKyAgICAgICAgYm9vbGVhbiBleGl0ZWROb3JtYWxseSA9IGZhbHNlOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBpZiAoc291cmNlID09IGZFeGVyc2l6ZSkgeworICAgICAgICAgICAgICAgIGZUZXN0LmluY1JhbmRTZWVkKCk7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgMTAwOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgc2VsZWN0T3BlcmF0aW9uKGZUZXh0RnJhbWUsIGZDbGlwYm9hcmQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKHNvdXJjZSA9PSBmU3RyZXNzVGVzdCkgeworICAgICAgICAgICAgICAgIGZUZXN0LmluY1JhbmRTZWVkKCk7CisgICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgICAgICAgICAgc2VsZWN0T3BlcmF0aW9uKGZUZXh0RnJhbWUsIGZDbGlwYm9hcmQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGV4aXRlZE5vcm1hbGx5ID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBmaW5hbGx5IHsKKyAgICAgICAgICAgIGlmICghZXhpdGVkTm9ybWFsbHkpIHsKKyAgICAgICAgICAgICAgICBEYXRlRm9ybWF0IGRmID0gRGF0ZUZvcm1hdC5nZXREYXRlVGltZUluc3RhbmNlKCk7CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJTdGFydCB0aW1lOiAiICsgZGYuZm9ybWF0KHN0YXJ0RGF0ZSkpOworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRW5kIFRpbWU6ICIgKyBkZi5mb3JtYXQobmV3IERhdGUoKSkpOworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiUmFuZCBzZWVkOiAiICsgZlRlc3QuZ2V0UmFuZFNlZWQoKSk7CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJPcCBjb3VudDogIiArIGZnT3BDb3VudCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQZXJmb3JtIGEgcmFuZG9tIG9wZXJhdGlvbiBvbiB0aGUgTVRleHRQYW5lbC4gIEZyYW1lIGNhbgorICAgICAqIGJlIG51bGwuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE9QX0NPVU5UID0gMTU7CisKKyAgICBwdWJsaWMgdm9pZCBzZWxlY3RPcGVyYXRpb24oRnJhbWUgZnJhbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsaXBib2FyZCBmQ2xpcGJvYXJkKSB7CisKKyAgICAgICAgaW50IG9wID0gZlRlc3QucmFuZEludChPUF9DT1VOVCk7CisKKyAgICAgICAgc3dpdGNoIChvcCkgeworCisgICAgICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICAgICAgZlRlc3QuX3Rlc3RTZXRTZWxlY3Rpb24oKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgICAgIGZUZXN0Ll90ZXN0TW9kaWZpY2F0aW9ucyhmVGVzdC5NT0RfVEVYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICAgIGZUZXN0Ll90ZXN0RWRpdE1lbnVPcGVyYXRpb25zKGZDbGlwYm9hcmQpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICAgICAgZlRlc3QuX3Rlc3RNb2RGbGFnKGZUZXh0UGFuZWwuZ2V0Q29tbWFuZExvZ1NpemUoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAgICBmVGVzdC5hcHBseUNoYXJhY3RlclN0eWxlKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgNToKKyAgICAgICAgICAgICAgICBmVGVzdC5hcHBseVBhcmFncmFwaFN0eWxlKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgNjoKKyAgICAgICAgICAgIGNhc2UgNzoKKyAgICAgICAgICAgIGNhc2UgODoKKyAgICAgICAgICAgIGNhc2UgOToKKyAgICAgICAgICAgICAgICBmVGVzdC50eXBlS2V5cygpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIDEwOgorICAgICAgICAgICAgICAgIGZUZXN0LnNlbGVjdFRleHQoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSAxMToKKyAgICAgICAgICAgICAgICBmVGVzdC51bmRvUmVkbygpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIDEyOgorICAgICAgICAgICAgICAgIC8vaWYgKGZyYW1lICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAvLyAgICBmVGVzdC5yZXNpemVGcmFtZShmcmFtZSk7CisgICAgICAgICAgICAgICAgLy8gICAgYnJlYWs7CisgICAgICAgICAgICAgICAgLy99CisKKyAgICAgICAgICAgIGNhc2UgMTM6CisgICAgICAgICAgICAgICAgZlRlc3QuYXBwbHlLZXlSZW1hcCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIDE0OgorICAgICAgICAgICAgICAgIGZUZXN0Ll90ZXN0Q29tbWFuZExvZ0NvbnRyb2woKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk9QX0NPVU5UIGlzIGluY29ycmVjdCIpOworICAgICAgICB9CisgICAgICAgIGZnT3BDb3VudCsrOworICAgIH0KKworCit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXN0L1Rlc3RUZXh0UGFuZWwuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3Rlc3QvVGVzdFRleHRQYW5lbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjI3YzI2ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXN0L1Rlc3RUZXh0UGFuZWwuamF2YQpAQCAtMCwwICsxLDg0NiBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogVGVzdFRleHRQYW5lbC5qYXZhLHYgJCAkUmV2aXNpb246IDEuOCAkICREYXRlOiAyMDAyLzAyLzE2IDAzOjA2OjM4ICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudGVzdDsKKworaW1wb3J0IGphdmEudXRpbC5SYW5kb207CitpbXBvcnQgamF2YS5hd3QuQ29sb3I7CitpbXBvcnQgamF2YS5hd3QuRnJhbWU7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuS2V5RXZlbnQ7CisKK2ltcG9ydCBqYXZhLmF3dC5kYXRhdHJhbnNmZXIuQ2xpcGJvYXJkOworaW1wb3J0IGphdmEuYXd0LmRhdGF0cmFuc2Zlci5DbGlwYm9hcmRPd25lcjsKK2ltcG9ydCBqYXZhLmF3dC5kYXRhdHJhbnNmZXIuU3RyaW5nU2VsZWN0aW9uOworaW1wb3J0IGphdmEuYXd0LmRhdGF0cmFuc2Zlci5UcmFuc2ZlcmFibGU7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5LZXlSZW1hcDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5LZXlFdmVudEZvcndhcmRlcjsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5NVGV4dFBhbmVsOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLlRleHRQYW5lbDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5UZXh0UGFuZWxFdmVudDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5UZXh0UGFuZWxMaXN0ZW5lcjsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NQ29uc3RUZXh0OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5TdHlsZWRUZXh0OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5hdHRyaWJ1dGVzLlRleHRBdHRyaWJ1dGU7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlTWFwOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0LlN0eWxlTW9kaWZpZXI7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlU2V0OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5hdHRyaWJ1dGVzLlRleHRBdHRyaWJ1dGU7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlTWFwOworCisvLyBOb3RlOiAgdGhpcyB1c2VkIHRvIGJlIGEgVGVzdEZtd2sgdGVzdC4gIElmIHlvdSBhZGQKKy8vIG1vcmUgdGVzdHMgdG8gaXQsIGJlIHN1cmUgdG8gYWRkIHRoZW0gdG8gCisvLyBjb20uaWJtLnJpY2h0ZXh0LnRlc3QudW5pdC5GbXdrVGVzdFRleHRQYW5lbC50ZXN0KCkgLQorLy8gb3RoZXJ3aXNlIHRoZXkgd29uJ3QgZ2V0IHJ1biEKKworcHVibGljIGNsYXNzIFRlc3RUZXh0UGFuZWwgLypleHRlbmRzIFRlc3RGbXdrKi8geworCisgICAgcHJpdmF0ZSBmaW5hbCBjbGFzcyBUZXN0TGlzdGVuZXIgaW1wbGVtZW50cyBUZXh0UGFuZWxMaXN0ZW5lciB7CisgICAgICAgIAorICAgICAgICBwcml2YXRlIGludCBOT19XQVkgPSAwOworICAgICAgICBwcml2YXRlIGludCBERUZJTklURUxZID0gMTsKKyAgICAgICAgcHJpdmF0ZSBpbnQgTUFZQkUgPSAyOworICAgICAgICAKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBpbnRbXSBzdGF0dXM7CisgICAgICAgIAorICAgICAgICBUZXN0TGlzdGVuZXIoTVRleHRQYW5lbCB0ZXh0UGFuZWwpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaW50IGxlbmd0aCA9IFRleHRQYW5lbEV2ZW50LlRFWFRfUEFORUxfTEFTVCAtCisgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dFBhbmVsRXZlbnQuVEVYVF9QQU5FTF9GSVJTVCArIDE7CisgICAgICAgICAgICBzdGF0dXMgPSBuZXcgaW50W2xlbmd0aF07CisgICAgICAgICAgICB0ZXh0UGFuZWwuYWRkTGlzdGVuZXIodGhpcyk7CisgICAgICAgICAgICBhbGxvd0FsbCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIHJlZnVzZUFsbCgpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgc3RhdHVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgc3RhdHVzW2ldID0gTk9fV0FZOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGFsbG93QWxsKCkgeworICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBzdGF0dXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBzdGF0dXNbaV0gPSBNQVlCRTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBleHBlY3RFdmVudChpbnQgdHlwZSkgeworICAgICAgICAgICAgCisgICAgICAgICAgICBpbnQgaW5kZXggPSB0eXBlIC0gVGV4dFBhbmVsRXZlbnQuVEVYVF9QQU5FTF9GSVJTVDsKKyAgICAgICAgICAgIHN0YXR1c1tpbmRleF0gPSBERUZJTklURUxZOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGFsbG93RXZlbnQoaW50IHR5cGUpIHsKKyAgICAgICAgICAgIGludCBpbmRleCA9IHR5cGUgLSBUZXh0UGFuZWxFdmVudC5URVhUX1BBTkVMX0ZJUlNUOworICAgICAgICAgICAgc3RhdHVzW2luZGV4XSA9IE1BWUJFOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGFzc2VydE5vdEV4cGVjdGluZ0V2ZW50cygpIHsKKyAgICAgICAgICAgIGFzc2VydE5vdEV4cGVjdGluZ0V2ZW50cyhmYWxzZSwgMCwgZmFsc2UpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGFzc2VydE5vdEV4cGVjdGluZ0V2ZW50cyhpbnQgaXRlcmF0aW9uQ291bnQsIGJvb2xlYW4gZXhwKSB7CisgICAgICAgICAgICBhc3NlcnROb3RFeHBlY3RpbmdFdmVudHModHJ1ZSwgaXRlcmF0aW9uQ291bnQsIGV4cCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHByaXZhdGUgdm9pZCBhc3NlcnROb3RFeHBlY3RpbmdFdmVudHMoYm9vbGVhbiBsb2dEZXRhaWxzLCBpbnQgaXRlcmF0aW9uQ291bnQsIGJvb2xlYW4gZXhwKSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGJvb2xlYW4gZSA9IGZhbHNlOworICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgc3RhdHVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKHN0YXR1c1tpXSA9PSBERUZJTklURUxZKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChsb2dEZXRhaWxzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2dNZXNzYWdlKCJFeHBlY3RpbmcgZXZlbnQgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGkrVGV4dFBhbmVsRXZlbnQuVEVYVF9QQU5FTF9GSVJTVCkpOworICAgICAgICAgICAgICAgICAgICAgICAgbG9nTWVzc2FnZSgiaXRlcmF0aW9uQ291bnQ9IitpdGVyYXRpb25Db3VudCsiOyAgZXhwZXh0aW5nPSIrZXhwKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZSkgeworICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yKCJTb21lIGV2ZW50cyBwZW5kaW5nIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHB1YmxpYyB2b2lkIHRleHRFdmVudE9jY3VycmVkKFRleHRQYW5lbEV2ZW50IGV2ZW50KSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGludCBpbmRleCA9IGV2ZW50LmdldElEKCkgLSBUZXh0UGFuZWxFdmVudC5URVhUX1BBTkVMX0ZJUlNUOworICAgICAgICAgICAgaWYgKHN0YXR1c1tpbmRleF0gPT0gTk9fV0FZKSB7CisgICAgICAgICAgICAgICAgcmVwb3J0RXJyb3IoIlVuZXhwZWN0ZWQgZXZlbnQ6ICIgKyBldmVudCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChzdGF0dXNbaW5kZXhdID09IERFRklOSVRFTFkpIHsKKyAgICAgICAgICAgICAgICBzdGF0dXNbaW5kZXhdID0gTk9fV0FZOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwdWJsaWMgYm9vbGVhbiByZXNwb25kc1RvRXZlbnRUeXBlKGludCB0eXBlKSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBTVFJJTkdfQ09OVEVOVCA9ICJTb21lIGNvbnRlbnQiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBURVNUX0lURVJTID0gMjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIE1Db25zdFRleHQgTU9EX1RFWFQgPQorICAgICAgICAgICAgICAgIG5ldyBTdHlsZWRUZXh0KCJTdHlsZWQiLCBBdHRyaWJ1dGVNYXAuRU1QVFlfQVRUUklCVVRFX01BUCk7CisKKyAgICBwcml2YXRlIENsaXBib2FyZCBmQ2xpcGJvYXJkOworICAgIHByaXZhdGUgTVRleHRQYW5lbCBmVGV4dFBhbmVsID0gbnVsbDsKKyAgICBwcml2YXRlIFRlc3RMaXN0ZW5lciBmTGlzdGVuZXIgPSBudWxsOworICAgIHByaXZhdGUgaW50IGZSYW5kU2VlZCA9IDA7CisgICAgcHJpdmF0ZSBSYW5kb20gcmFuZDsKKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQklHX0NPTU1BTkRfTE9HX1NJWkUgPSA0MDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU01BTExfQ09NTUFORF9MT0dfU0laRSA9IDg7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHlsZU1vZGlmaWVyW10gcGFyYU1vZHMgPSB7CisgICAgICAgIFN0eWxlTW9kaWZpZXIuY3JlYXRlQWRkTW9kaWZpZXIoCisgICAgICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZU1hcChUZXh0QXR0cmlidXRlLkxJTkVfRkxVU0gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0QXR0cmlidXRlLkZMVVNIX0xFQURJTkcpKSwKKyAgICAgICAgU3R5bGVNb2RpZmllci5jcmVhdGVBZGRNb2RpZmllcihUZXh0QXR0cmlidXRlLkxJTkVfRkxVU0gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0QXR0cmlidXRlLkZMVVNIX0NFTlRFUiksCisgICAgICAgIFN0eWxlTW9kaWZpZXIuY3JlYXRlQWRkTW9kaWZpZXIoVGV4dEF0dHJpYnV0ZS5MSU5FX0ZMVVNILAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dEF0dHJpYnV0ZS5GTFVTSF9UUkFJTElORyksCisgICAgICAgIFN0eWxlTW9kaWZpZXIuY3JlYXRlQWRkTW9kaWZpZXIoVGV4dEF0dHJpYnV0ZS5MSU5FX0ZMVVNILAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dEF0dHJpYnV0ZS5GVUxMWV9KVVNUSUZJRUQpLAorICAgICAgICBTdHlsZU1vZGlmaWVyLmNyZWF0ZUFkZE1vZGlmaWVyKFRleHRBdHRyaWJ1dGUuUlVOX0RJUkVDVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRBdHRyaWJ1dGUuUlVOX0RJUkVDVElPTl9SVEwpLAorICAgICAgICBTdHlsZU1vZGlmaWVyLmNyZWF0ZUFkZE1vZGlmaWVyKFRleHRBdHRyaWJ1dGUuUlVOX0RJUkVDVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRBdHRyaWJ1dGUuUlVOX0RJUkVDVElPTl9MVFIpLAorICAgICAgICBTdHlsZU1vZGlmaWVyLmNyZWF0ZVJlbW92ZU1vZGlmaWVyKAorICAgICAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGVTZXQoVGV4dEF0dHJpYnV0ZS5MSU5FX0ZMVVNIKSksCisgICAgICAgIFN0eWxlTW9kaWZpZXIuY3JlYXRlUmVtb3ZlTW9kaWZpZXIoCisgICAgICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZVNldChUZXh0QXR0cmlidXRlLlJVTl9ESVJFQ1RJT04pKQorICAgIH07CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU0VMRUNUID0gMDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU0VUX0NBUkVUX1BPUyA9IDE7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNFVF9TVEFSVCA9IDI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNFVF9FTkQgPSAzOworCisgICAgLy8gdXNpbmcgYm90aCBzdHlsZXMgb2YgYWRkIG1vZGlmaWVyOiBBdHRyaWJ1dGVNYXAgYW5kCisgICAgLy8ga2V5LXZhbHVlLCBqdXN0IGZvciB2YXJpZXR5Li4uCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3R5bGVNb2RpZmllcltdIGNoYXJNb2RzID0geworICAgICAgICBTdHlsZU1vZGlmaWVyLmNyZWF0ZUFkZE1vZGlmaWVyKAorICAgICAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGVNYXAoVGV4dEF0dHJpYnV0ZS5XRUlHSFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0QXR0cmlidXRlLldFSUdIVF9CT0xEKSksCisgICAgICAgIFN0eWxlTW9kaWZpZXIuY3JlYXRlQWRkTW9kaWZpZXIoVGV4dEF0dHJpYnV0ZS5GT1JFR1JPVU5ELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3IuZ3JlZW4pLAorICAgICAgICBTdHlsZU1vZGlmaWVyLmNyZWF0ZUFkZE1vZGlmaWVyKAorICAgICAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGVNYXAoVGV4dEF0dHJpYnV0ZS5VTkRFUkxJTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0QXR0cmlidXRlLlVOREVSTElORV9PTikuYWRkQXR0cmlidXRlcygKKyAgICAgICAgICAgICAgICBuZXcgQXR0cmlidXRlTWFwKFRleHRBdHRyaWJ1dGUuU0laRSwgbmV3IEZsb2F0KDYpKSkpLAorICAgICAgICBTdHlsZU1vZGlmaWVyLmNyZWF0ZVJlcGxhY2VNb2RpZmllcigKKyAgICAgICAgICAgICAgICBuZXcgQXR0cmlidXRlTWFwKFRleHRBdHRyaWJ1dGUuRkFNSUxZLCAiRGlhbG9nIikpLAorICAgICAgICBTdHlsZU1vZGlmaWVyLmNyZWF0ZVJlbW92ZU1vZGlmaWVyKAorICAgICAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGVTZXQoCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsgVGV4dEF0dHJpYnV0ZS5XRUlHSFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0QXR0cmlidXRlLlBPU1RVUkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0QXR0cmlidXRlLlVOREVSTElORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRBdHRyaWJ1dGUuU1RSSUtFVEhST1VHSCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRBdHRyaWJ1dGUuU1VQRVJTQ1JJUFQgfSkpLAorICAgICAgICBTdHlsZU1vZGlmaWVyLklERU5USVRZCisgICAgfTsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXJbXSBUWVBFRF9DSEFSUyA9IG5ldyBjaGFyWzEyOCAtICcgJyArIDNdOworICAgIHN0YXRpYyB7CisgICAgICAgIFRZUEVEX0NIQVJTWzBdID0gODsgLy8gYmFja3NwYWNlCisgICAgICAgIFRZUEVEX0NIQVJTWzFdID0gJ1x0JzsKKyAgICAgICAgVFlQRURfQ0hBUlNbMl0gPSAnXG4nOworICAgICAgICBmb3IgKGludCBpPTM7IGkgPCBUWVBFRF9DSEFSUy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgVFlQRURfQ0hBUlNbaV0gPSAoY2hhcikgKCcgJyArIGkgLSAzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBUZXN0VGV4dFBhbmVsKCkgeworCisgICAgICAgIGZDbGlwYm9hcmQgPSBuZXcgQ2xpcGJvYXJkKCJUZXN0VGV4dFBhbmVsIik7CisgICAgICAgIGluY1JhbmRTZWVkKCk7CisgICAgfQorCisgICAgcHJvdGVjdGVkIHZvaWQgcmVwb3J0RXJyb3IoU3RyaW5nIG1lc3NhZ2UpIHsKKyAgICAKKyAgICAgICAgU3lzdGVtLmVyci5wcmludGxuKG1lc3NhZ2UpOworICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbihtZXNzYWdlKTsKKyAgICAgICAgLy9zdXBlci5lcnJsbihtZXNzYWdlKTsKKyAgICB9CisgICAgCisgICAgcHJvdGVjdGVkIHZvaWQgbG9nTWVzc2FnZShTdHJpbmcgbWVzc2FnZSkgeworICAgIAorICAgICAgICBTeXN0ZW0uZXJyLnByaW50bG4obWVzc2FnZSk7CisgICAgICAgIC8vc3VwZXIubG9nTWVzc2FnZShtZXNzYWdlKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIFRlc3RUZXh0UGFuZWwoTVRleHRQYW5lbCBwYW5lbCkgeworICAgICAgICAKKyAgICAgICAgdGhpcygpOworICAgICAgICBzZXRUZXh0UGFuZWwocGFuZWwpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGluY1JhbmRTZWVkKCkgeworICAgICAgICAKKyAgICAgICAgcmFuZCA9IG5ldyBSYW5kb20oKytmUmFuZFNlZWQpOworICAgIH0KKyAgICAKKyAgICBpbnQgZ2V0UmFuZFNlZWQoKSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gZlJhbmRTZWVkOworICAgIH0KKworICAgIGludCByYW5kSW50KGludCBsaW1pdCkgeworCisgICAgICAgIHJldHVybiByYW5kSW50KDAsIGxpbWl0KTsKKyAgICB9CisKKyAgICBpbnQgcmFuZEludChpbnQgc3RhcnQsIGludCBsaW1pdCkgeworCisgICAgICAgIGlmIChzdGFydCA+IGxpbWl0KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJSYW5nZSBpcyAwLWxlbmd0aC4iKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChzdGFydCA9PSBsaW1pdCkgeworICAgICAgICAgICAgcmV0dXJuIHN0YXJ0OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHN0YXJ0ICsgKE1hdGguYWJzKHJhbmQubmV4dEludCgpKSUobGltaXQtc3RhcnQpKSA7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKworICAgICAgICBBdHRyaWJ1dGVNYXAgYm9sZCA9IG5ldyBBdHRyaWJ1dGVNYXAoVGV4dEF0dHJpYnV0ZS5XRUlHSFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0QXR0cmlidXRlLldFSUdIVF9CT0xEKTsKKyAgICAgICAgTUNvbnN0VGV4dCB0ZXh0MSA9IG5ldyBTdHlsZWRUZXh0KCJUZXN0IGNvbnRlbnRzLiAxMjM0XG5Ib3cgYWJvdXQgaXQ/IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVNYXAuRU1QVFlfQVRUUklCVVRFX01BUCk7CisgICAgICAgIE1Db25zdFRleHQgdGV4dDIgPSBuZXcgU3R5bGVkVGV4dCgiQW5vdGhlciB0ZXN0IHN0cmluZy4iLCBib2xkKTsKKworICAgICAgICBfdGVzdFdpdGhUZXh0KHRleHQxKTsKKyAgICAgICAgX3Rlc3RXaXRoVGV4dCh0ZXh0Mik7CisgICAgICAgIF90ZXN0V2l0aFRleHQobmV3IFN0eWxlZFRleHQoKSk7CisKKyAgICAgICAgU3R5bGVkVGV4dCBiaWcxID0gbmV3IFN0eWxlZFRleHQoKTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgNTA7IGkrKykgeworICAgICAgICAgICAgYmlnMS5hcHBlbmQodGV4dDEpOworICAgICAgICB9CisKKyAgICAgICAgX3Rlc3RXaXRoVGV4dChiaWcxKTsKKyAgICAgICAgU3R5bGVkVGV4dCBiaWcyID0gbmV3IFN0eWxlZFRleHQodGV4dDEpOworICAgICAgICBmb3IgKGludCBpPTA7IGkgPCA4MDsgaSsrKSB7CisgICAgICAgICAgICBiaWcyLmFwcGVuZCh0ZXh0Mik7CisgICAgICAgIH0KKworICAgICAgICBfdGVzdFdpdGhUZXh0KGJpZzIpOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHZvaWQgc2V0VGV4dFBhbmVsKE1UZXh0UGFuZWwgcGFuZWwpIHsKKyAgICAgICAgCisgICAgICAgIGZUZXh0UGFuZWwgPSBwYW5lbDsKKyAgICAgICAgZkxpc3RlbmVyID0gbmV3IFRlc3RMaXN0ZW5lcihwYW5lbCk7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgdm9pZCBfdGVzdFdpdGhUZXh0KE1Db25zdFRleHQgdGV4dCkgeworCisgICAgICAgIHNldFRleHRQYW5lbChuZXcgVGV4dFBhbmVsKHRleHQsIGZDbGlwYm9hcmQpKTsKKworICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBURVNUX0lURVJTOyBpKyspIHsKKyAgICAgICAgICAgIF90ZXN0U2V0U2VsZWN0aW9uKCk7CisgICAgICAgICAgICBfdGVzdE1vZGlmaWNhdGlvbnMoTU9EX1RFWFQsIHRydWUpOworICAgICAgICAgICAgX3Rlc3RFZGl0TWVudU9wZXJhdGlvbnMoZkNsaXBib2FyZCk7CisgICAgICAgICAgICBfdGVzdE1vZEZsYWcoZlRleHRQYW5lbC5nZXRDb21tYW5kTG9nU2l6ZSgpKTsKKyAgICAgICAgICAgIF90ZXN0Q29tbWFuZExvZ0NvbnRyb2woKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBfdGVzdFNlbGVjdGlvbihpbnQgZnVuY3Rpb24sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIGludCBhU3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgaW50IGFMaW1pdCkgeworCisgICAgICAgIGludCBvbGRTdGFydCA9IGZUZXh0UGFuZWwuZ2V0U2VsZWN0aW9uU3RhcnQoKTsKKyAgICAgICAgaW50IG9sZExpbWl0ID0gZlRleHRQYW5lbC5nZXRTZWxlY3Rpb25FbmQoKTsKKworICAgICAgICBmaW5hbCBpbnQgbGVuZ3RoID0gZlRleHRQYW5lbC5nZXRUZXh0TGVuZ3RoKCk7CisgICAgICAgIAorICAgICAgICBpbnQgc3RhcnQgPSBhU3RhcnQ7CisgICAgICAgIGludCBsaW1pdCA9IGFMaW1pdDsKKyAgICAgICAgCisgICAgICAgIGlmIChzdGFydCA8IDApIHsKKyAgICAgICAgICAgIHN0YXJ0ID0gMDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChzdGFydCA+IGxlbmd0aCkgeworICAgICAgICAgICAgc3RhcnQgPSBsZW5ndGg7CisgICAgICAgIH0KKworICAgICAgICBpZiAobGltaXQgPCBzdGFydCkgeworICAgICAgICAgICAgbGltaXQgPSBzdGFydDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChsaW1pdCA+IGxlbmd0aCkgeworICAgICAgICAgICAgbGltaXQgPSBsZW5ndGg7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZMaXN0ZW5lci5yZWZ1c2VBbGwoKTsKKyAgICAgICAgCisgICAgICAgIGlmIChvbGRTdGFydCAhPSBzdGFydCB8fCBvbGRMaW1pdCAhPSBsaW1pdCkgeworICAgICAgICAgICAgZkxpc3RlbmVyLmV4cGVjdEV2ZW50KFRleHRQYW5lbEV2ZW50LlNFTEVDVElPTl9SQU5HRV9DSEFOR0VEKTsKKyAgICAgICAgICAgIGZMaXN0ZW5lci5hbGxvd0V2ZW50KFRleHRQYW5lbEV2ZW50LlNFTEVDVElPTl9TVFlMRVNfQ0hBTkdFRCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKChvbGRTdGFydD09b2xkTGltaXQpICE9IChzdGFydD09bGltaXQpKSB7CisgICAgICAgICAgICBmTGlzdGVuZXIuZXhwZWN0RXZlbnQoVGV4dFBhbmVsRXZlbnQuU0VMRUNUSU9OX0VNUFRZX0NIQU5HRUQpOworICAgICAgICB9CisgICAgICAgIGlmIChvbGRTdGFydD09b2xkTGltaXQpIHsKKyAgICAgICAgICAgIGZMaXN0ZW5lci5hbGxvd0V2ZW50KFRleHRQYW5lbEV2ZW50LlVORE9fU1RBVEVfQ0hBTkdFRCk7CisgICAgICAgIH0KKworICAgICAgICBzd2l0Y2goZnVuY3Rpb24pIHsKKyAgICAgICAgICAgIGNhc2UgU0VMRUNUOgorICAgICAgICAgICAgICAgIGZUZXh0UGFuZWwuc2VsZWN0KGFTdGFydCwgYUxpbWl0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU0VUX0NBUkVUX1BPUzoKKyAgICAgICAgICAgICAgICBmVGV4dFBhbmVsLnNldENhcmV0UG9zaXRpb24oYVN0YXJ0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU0VUX1NUQVJUOgorICAgICAgICAgICAgICAgIGZUZXh0UGFuZWwuc2V0U2VsZWN0aW9uU3RhcnQoYVN0YXJ0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU0VUX0VORDoKKyAgICAgICAgICAgICAgICBmVGV4dFBhbmVsLnNldFNlbGVjdGlvbkVuZChhTGltaXQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIGZ1bmN0aW9uIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChmVGV4dFBhbmVsLmdldFNlbGVjdGlvblN0YXJ0KCkgIT0gc3RhcnQpIHsKKyAgICAgICAgICAgIHJlcG9ydEVycm9yKCJnZXRTZWxlY3Rpb25TdGFydCBpcyBpbmNvcnJlY3QgYWZ0ZXIgc2V0Iik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGZUZXh0UGFuZWwuZ2V0U2VsZWN0aW9uRW5kKCkgIT0gbGltaXQpIHsKKyAgICAgICAgICAgIHJlcG9ydEVycm9yKCJnZXRTZWxlY3Rpb25FbmQgaXMgaW5jb3JyZWN0IGFmdGVyIHNldCIpOworICAgICAgICB9CisgICAgICAgIGZMaXN0ZW5lci5hc3NlcnROb3RFeHBlY3RpbmdFdmVudHMoKTsKKyAgICAgICAgZkxpc3RlbmVyLmFsbG93QWxsKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHNldEFuZFRlc3RTZWxlY3Rpb24oaW50IHN0YXJ0LCBpbnQgbGltaXQpIHsKKyAgICAgICAgCisgICAgICAgIF90ZXN0U2VsZWN0aW9uKFNFTEVDVCwgc3RhcnQsIGxpbWl0KTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgc2V0QW5kVGVzdENhcmV0KGludCBjYXJldFBvcykgeworCisgICAgICAgIF90ZXN0U2VsZWN0aW9uKFNFVF9DQVJFVF9QT1MsIGNhcmV0UG9zLCBjYXJldFBvcyk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHNldEFuZFRlc3RTZWxlY3Rpb25TdGFydChpbnQgc2VsU3RhcnQpIHsKKworICAgICAgICBpbnQgbGltaXQgPSBmVGV4dFBhbmVsLmdldFNlbGVjdGlvbkVuZCgpOworICAgICAgICBfdGVzdFNlbGVjdGlvbihTRVRfU1RBUlQsIHNlbFN0YXJ0LCBsaW1pdCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHNldEFuZFRlc3RTZWxlY3Rpb25FbmQoaW50IHNlbEVuZCkgeworCisgICAgICAgIGludCBzdGFydCA9IGZUZXh0UGFuZWwuZ2V0U2VsZWN0aW9uU3RhcnQoKTsKKyAgICAgICAgX3Rlc3RTZWxlY3Rpb24oU0VUX0VORCwgc3RhcnQsIHNlbEVuZCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgX3Rlc3RTZXRTZWxlY3Rpb24oKSB7CisKKyAgICAgICAgaW50IHRleHRMZW5ndGggPSBmVGV4dFBhbmVsLmdldFRleHRMZW5ndGgoKTsKKyAgICAgICAgaWYgKHRleHRMZW5ndGggIT0gZlRleHRQYW5lbC5nZXRUZXh0KCkubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIHJlcG9ydEVycm9yKCJUZXh0IHBhbmVsIGxlbmd0aCBpcyBub3QgY29ycmVjdCIpOworICAgICAgICB9CisKKyAgICAgICAgc2V0QW5kVGVzdFNlbGVjdGlvbigwLCB0ZXh0TGVuZ3RoIC8gMik7CisgICAgICAgIHNldEFuZFRlc3RTZWxlY3Rpb24odGV4dExlbmd0aCAvIDIsIHRleHRMZW5ndGgpOworICAgICAgICBzZXRBbmRUZXN0U2VsZWN0aW9uKDAsIHRleHRMZW5ndGgpOworICAgICAgICBzZXRBbmRUZXN0U2VsZWN0aW9uKC0xLCB0ZXh0TGVuZ3RoKzEpOworICAgICAgICBpZiAodGV4dExlbmd0aCA+IDApIHsKKyAgICAgICAgICAgIHNldEFuZFRlc3RTZWxlY3Rpb24oMCwgdGV4dExlbmd0aCAtIDEpOworICAgICAgICAgICAgc2V0QW5kVGVzdFNlbGVjdGlvbigwLCAxKTsKKyAgICAgICAgfQorCisgICAgICAgIGZpbmFsIGludCBpbmNBbW91bnQgPSBNYXRoLm1heCgxLCB0ZXh0TGVuZ3RoLzUpOworICAgICAgICBmb3IgKGludCBpbmRleCA9IDA7IGluZGV4IDw9IHRleHRMZW5ndGg7IGluZGV4ICs9IGluY0Ftb3VudCkgeworCisgICAgICAgICAgICBzZXRBbmRUZXN0Q2FyZXQoaW5kZXgpOworICAgICAgICAgICAgc2V0QW5kVGVzdFNlbGVjdGlvblN0YXJ0KHRleHRMZW5ndGgtaW5kZXgpOworICAgICAgICAgICAgc2V0QW5kVGVzdFNlbGVjdGlvbkVuZCh0ZXh0TGVuZ3RoKTsKKyAgICAgICAgICAgIHNldEFuZFRlc3RTZWxlY3Rpb25TdGFydCgwKTsKKyAgICAgICAgICAgIHNldEFuZFRlc3RTZWxlY3Rpb25FbmQodGV4dExlbmd0aC1pbmRleCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXh0IG11c3QgYmUgZWRpdGFibGUgdG8gcGFzcyB0aGlzIHRlc3QuCisgICAgICovCisgICAgcHVibGljIHZvaWQgX3Rlc3RNb2RpZmljYXRpb25zKE1Db25zdFRleHQgaW5zZXJ0aW9uVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiByZXN0b3JlT2xkVGV4dCkgeworCisgICAgICAgIE1Db25zdFRleHQgb2xkVGV4dCA9IG5ldyBTdHlsZWRUZXh0KGZUZXh0UGFuZWwuZ2V0VGV4dCgpKTsKKyAgICAgICAgZmluYWwgaW50IGluc0xlbmd0aCA9IGluc2VydGlvblRleHQubGVuZ3RoKCk7CisKKyAgICAgICAgZkxpc3RlbmVyLmFsbG93QWxsKCk7CisgICAgICAgIGZMaXN0ZW5lci5leHBlY3RFdmVudChUZXh0UGFuZWxFdmVudC5URVhUX0NIQU5HRUQpOworICAgICAgICBmTGlzdGVuZXIuZXhwZWN0RXZlbnQoVGV4dFBhbmVsRXZlbnQuU0VMRUNUSU9OX1JBTkdFX0NIQU5HRUQpOworICAgICAgICBmVGV4dFBhbmVsLmFwcGVuZChpbnNlcnRpb25UZXh0KTsKKyAgICAgICAgZkxpc3RlbmVyLmFzc2VydE5vdEV4cGVjdGluZ0V2ZW50cygpOworICAgICAgICAKKyAgICAgICAgaWYgKGZUZXh0UGFuZWwuZ2V0U2VsZWN0aW9uU3RhcnQoKSAhPSBvbGRUZXh0Lmxlbmd0aCgpICsgaW5zTGVuZ3RoKSB7CisgICAgICAgICAgICByZXBvcnRFcnJvcigiQXBwZW5kIGRpZG4ndCByZXN1bHQgaW4gY29ycmVjdCBzZWxlY3Rpb24iKTsKKyAgICAgICAgfQorCisgICAgICAgIGZMaXN0ZW5lci5leHBlY3RFdmVudChUZXh0UGFuZWxFdmVudC5URVhUX0NIQU5HRUQpOworICAgICAgICBmTGlzdGVuZXIuZXhwZWN0RXZlbnQoVGV4dFBhbmVsRXZlbnQuU0VMRUNUSU9OX1JBTkdFX0NIQU5HRUQpOworICAgICAgICBmVGV4dFBhbmVsLmluc2VydChpbnNlcnRpb25UZXh0LCAwKTsKKyAgICAgICAgZkxpc3RlbmVyLmFzc2VydE5vdEV4cGVjdGluZ0V2ZW50cygpOworICAgICAgICBmTGlzdGVuZXIuYWxsb3dBbGwoKTsKKyAgICAgICAgCisgICAgICAgIGlmIChmVGV4dFBhbmVsLmdldFNlbGVjdGlvblN0YXJ0KCkgIT0gaW5zTGVuZ3RoKSB7CisgICAgICAgICAgICByZXBvcnRFcnJvcigiSW5zZXJ0IGRpZG4ndCByZXN1bHQgaW4gY29ycmVjdCBzZWxlY3Rpb24iKTsKKyAgICAgICAgfQorCisgICAgICAgIGZUZXh0UGFuZWwucmVwbGFjZVJhbmdlKGluc2VydGlvblRleHQsIGluc0xlbmd0aCwgaW5zTGVuZ3RoK29sZFRleHQubGVuZ3RoKCkpOworICAgICAgICBpZiAoZlRleHRQYW5lbC5nZXRTZWxlY3Rpb25TdGFydCgpICE9IGluc0xlbmd0aCoyKSB7CisgICAgICAgICAgICByZXBvcnRFcnJvcigiUmVwbGFjZSBkaWRuJ3QgcmVzdWx0IGluIGNvcnJlY3Qgc2VsZWN0aW9uIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGZUZXh0UGFuZWwuZ2V0U2VsZWN0aW9uRW5kKCkgIT0gaW5zTGVuZ3RoKjIpIHsKKyAgICAgICAgICAgIHJlcG9ydEVycm9yKCJSZXBsYWNlIGRpZG4ndCByZXN1bHQgaW4gY29ycmVjdCBzZWxlY3Rpb24iKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZlRleHRQYW5lbC5nZXRUZXh0TGVuZ3RoKCkgIT0gaW5zTGVuZ3RoKjMpIHsKKyAgICAgICAgICAgIHJlcG9ydEVycm9yKCJ0ZXh0TGVuZ3RoIGlzIGluY29ycmVjdCIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJlc3RvcmVPbGRUZXh0KSB7CisgICAgICAgICAgICBmVGV4dFBhbmVsLnNldFRleHQob2xkVGV4dCk7CisgICAgICAgICAgICBpZiAoZlRleHRQYW5lbC5nZXRTZWxlY3Rpb25TdGFydCgpICE9IG9sZFRleHQubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICByZXBvcnRFcnJvcigic2V0VGV4dCBkaWRuJ3QgcmVzdWx0IGluIGNvcnJlY3Qgc2VsZWN0aW9uIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZlRleHRQYW5lbC5nZXRUZXh0TGVuZ3RoKCkgIT0gb2xkVGV4dC5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yKCJsZW5ndGggaW5jb3JyZWN0IGFmdGVyIHNldFRleHQiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZkxpc3RlbmVyLmFsbG93QWxsKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgaW50IGl0ZXJhdGlvbkNvdW50ID0gMDsKKyAgICBwdWJsaWMgdm9pZCBfdGVzdENvbW1hbmRMb2dDb250cm9sKCkgeworCisgICAgICAgIGZMaXN0ZW5lci5yZWZ1c2VBbGwoKTsKKyAgICAgICAgaXRlcmF0aW9uQ291bnQrKzsKKyAgICAgICAgYm9vbGVhbiBleHAgPSBmYWxzZTsKKyAgICAgICAgaWYgKGZUZXh0UGFuZWwuY2FuUmVkbygpIHx8IEJJR19DT01NQU5EX0xPR19TSVpFPT0wKSB7CisgICAgICAgICAgICBmTGlzdGVuZXIuZXhwZWN0RXZlbnQoVGV4dFBhbmVsRXZlbnQuVU5ET19TVEFURV9DSEFOR0VEKTsKKyAgICAgICAgICAgIGV4cCA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgLy90cnkgeworICAgICAgICAgICAgZlRleHRQYW5lbC5zZXRDb21tYW5kTG9nU2l6ZShCSUdfQ09NTUFORF9MT0dfU0laRSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChmVGV4dFBhbmVsLmNhblJlZG8oKSkgeworICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yKCJjYW5SZWRvIGFmdGVyIHNldENvbW1hbmRMb2dTaXplIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmTGlzdGVuZXIuYXNzZXJ0Tm90RXhwZWN0aW5nRXZlbnRzKGl0ZXJhdGlvbkNvdW50LCBleHApOworICAgICAgICAvL30KKyAgICAgICAgLy9jYXRjaChFcnJvciBlKSB7CisgICAgICAgIC8vICAgIGxvZ01lc3NhZ2UoIml0ZXJhdGlvbkNvdW50PSIraXRlcmF0aW9uQ291bnQrIjsgIGV4cGV4dGluZz0iK2V4cCk7CisgICAgICAgIC8vICAgIHRocm93IGU7CisgICAgICAgIC8vfQorCisgICAgICAgIE1Db25zdFRleHQgaW5zVGV4dCA9IG5ldyBTdHlsZWRUZXh0KCI3IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlTWFwLkVNUFRZX0FUVFJJQlVURV9NQVApOworCisgICAgICAgIGZpbmFsIGludCBvcmlnTGVuZ3RoID0gZlRleHRQYW5lbC5nZXRUZXh0TGVuZ3RoKCk7CisgICAgICAgIGludCBzdGFydCA9IG9yaWdMZW5ndGggLyAzOworICAgICAgICAKKyAgICAgICAgZkxpc3RlbmVyLmFsbG93RXZlbnQoVGV4dFBhbmVsRXZlbnQuU0VMRUNUSU9OX1JBTkdFX0NIQU5HRUQpOworICAgICAgICBmTGlzdGVuZXIuYWxsb3dFdmVudChUZXh0UGFuZWxFdmVudC5TRUxFQ1RJT05fU1RZTEVTX0NIQU5HRUQpOworCisgICAgICAgIGZvciAoaW50IGk9c3RhcnQ7IGkgPCBCSUdfQ09NTUFORF9MT0dfU0laRStzdGFydDsgaSsrKSB7CisgICAgICAgICAgICBmTGlzdGVuZXIuZXhwZWN0RXZlbnQoVGV4dFBhbmVsRXZlbnQuVU5ET19TVEFURV9DSEFOR0VEKTsKKyAgICAgICAgICAgIGZMaXN0ZW5lci5leHBlY3RFdmVudChUZXh0UGFuZWxFdmVudC5URVhUX0NIQU5HRUQpOworICAgICAgICAgICAgaWYgKGZUZXh0UGFuZWwuZ2V0U2VsZWN0aW9uU3RhcnQoKSAhPSBmVGV4dFBhbmVsLmdldFNlbGVjdGlvbkVuZCgpKSB7CisgICAgICAgICAgICAgICAgZkxpc3RlbmVyLmV4cGVjdEV2ZW50KFRleHRQYW5lbEV2ZW50LlNFTEVDVElPTl9FTVBUWV9DSEFOR0VEKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZUZXh0UGFuZWwuaW5zZXJ0KGluc1RleHQsIGkpOworICAgICAgICAgICAgZkxpc3RlbmVyLmFzc2VydE5vdEV4cGVjdGluZ0V2ZW50cygpOworICAgICAgICB9CisKKyAgICAgICAgZkxpc3RlbmVyLmFsbG93RXZlbnQoVGV4dFBhbmVsRXZlbnQuU0VMRUNUSU9OX0VNUFRZX0NIQU5HRUQpOworICAgICAgICAKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgQklHX0NPTU1BTkRfTE9HX1NJWkUtMTsgaSsrKSB7CisgICAgICAgICAgICBmTGlzdGVuZXIuZXhwZWN0RXZlbnQoVGV4dFBhbmVsRXZlbnQuVU5ET19TVEFURV9DSEFOR0VEKTsKKyAgICAgICAgICAgIGZMaXN0ZW5lci5leHBlY3RFdmVudChUZXh0UGFuZWxFdmVudC5URVhUX0NIQU5HRUQpOworICAgICAgICAgICAgZlRleHRQYW5lbC51bmRvKCk7CisgICAgICAgICAgICBmTGlzdGVuZXIuYXNzZXJ0Tm90RXhwZWN0aW5nRXZlbnRzKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFmVGV4dFBhbmVsLmNhblVuZG8oKSkgeworICAgICAgICAgICAgcmVwb3J0RXJyb3IoIkNvbW1hbmQgbG9nIGlzIHRvbyBzbWFsbCIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmTGlzdGVuZXIuYWxsb3dBbGwoKTsKKyAgICAgICAgZlRleHRQYW5lbC51bmRvKCk7CisgICAgICAgIGlmIChmVGV4dFBhbmVsLmNhblVuZG8oKSkgeworICAgICAgICAgICAgcmVwb3J0RXJyb3IoIkNvbW1hbmQgbG9nIGlzIHRvbyBsYXJnZSIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZUZXh0UGFuZWwuZ2V0VGV4dExlbmd0aCgpICE9IG9yaWdMZW5ndGggKiBpbnNUZXh0Lmxlbmd0aCgpKSB7CisgICAgICAgICAgICByZXBvcnRFcnJvcigiVGV4dCBsZW5ndGggd2FzIG5vdCByZXN0b3JlZCIpOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgQklHX0NPTU1BTkRfTE9HX1NJWkU7IGkrKykgeworICAgICAgICAgICAgZlRleHRQYW5lbC5yZWRvKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZlRleHRQYW5lbC5nZXRUZXh0TGVuZ3RoKCkgIT0gb3JpZ0xlbmd0aCtCSUdfQ09NTUFORF9MT0dfU0laRSkgeworICAgICAgICAgICAgcmVwb3J0RXJyb3IoIlRleHQgbGVuZ3RoIHdhcyBub3QgcmVzdG9yZWQgYWZ0ZXIgcmVkbyIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZUZXh0UGFuZWwuY2FuUmVkbygpKSB7CisgICAgICAgICAgICByZXBvcnRFcnJvcigiU2hvdWxkIG5vdCBiZSBhYmxlIHRvIHJlZG8iKTsKKyAgICAgICAgfQorCisgICAgICAgIGZUZXh0UGFuZWwudW5kbygpOworCisgICAgICAgIGZUZXh0UGFuZWwuc2V0Q29tbWFuZExvZ1NpemUoU01BTExfQ09NTUFORF9MT0dfU0laRSk7CisKKyAgICAgICAgaWYgKGZUZXh0UGFuZWwuY2FuUmVkbygpKSB7CisgICAgICAgICAgICByZXBvcnRFcnJvcigiY2FuUmVkbyBhZnRlciBzZXRDb21tYW5kTG9nU2l6ZShzbWFsbCkiKTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IFNNQUxMX0NPTU1BTkRfTE9HX1NJWkU7IGkrKykgeworICAgICAgICAgICAgaWYgKCFmVGV4dFBhbmVsLmNhblVuZG8oKSkgeworICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yKCJzaG91bGQgYmUgYWJsZSB0byB1bmRvIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmVGV4dFBhbmVsLnVuZG8oKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZlRleHRQYW5lbC5jYW5VbmRvKCkpIHsKKyAgICAgICAgICAgIHJlcG9ydEVycm9yKCJzaG91bGQgbm90IGJlIGFibGUgdG8gdW5kbyBhZnRlciBzZXRDb21tYW5kTG9nU2l6ZShzbWFsbCkiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWZUZXh0UGFuZWwuY2FuUmVkbygpKSB7CisgICAgICAgICAgICByZXBvcnRFcnJvcigid2h5IGNhbid0IHRoaXMgcmVkbz8/PyIpOworICAgICAgICB9CisgICAgICAgIGZUZXh0UGFuZWwucmVkbygpOworCisgICAgICAgIGZUZXh0UGFuZWwuY2xlYXJDb21tYW5kTG9nKCk7CisKKyAgICAgICAgaWYgKGZUZXh0UGFuZWwuY2FuVW5kbygpIHx8IGZUZXh0UGFuZWwuY2FuUmVkbygpKSB7CisgICAgICAgICAgICByZXBvcnRFcnJvcigiQ29tbWFuZCBsb2cgd2Fzbid0IGNsZWFyZWQiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3QgY3V0LCBjb3B5LCBwYXN0ZSwgdW5kbywgcmVkbywgY2xlYXIsIGNhblVuZG8sIGNhblJlZG8uCisgICAgICogVGV4dCBtdXN0IGJlIGVkaXRhYmxlIHRvIHBhc3MgdGhpcyB0ZXN0LgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIF90ZXN0RWRpdE1lbnVPcGVyYXRpb25zKENsaXBib2FyZCBjbGlwYm9hcmQpIHsKKyAgICAgICAgCisgICAgICAgIGlmIChjbGlwYm9hcmQgIT0gbnVsbCkgeworICAgICAgICAgICAgLy8gdGVzdCBwYXN0ZSBhbmQgdW5kbyAvIHJlZG8KKyAgICAgICAgICAgIFRyYW5zZmVyYWJsZSB0ciA9IG5ldyBTdHJpbmdTZWxlY3Rpb24oU1RSSU5HX0NPTlRFTlQpOworICAgICAgICAgICAgY2xpcGJvYXJkLnNldENvbnRlbnRzKHRyLCBuZXcgQ2xpcGJvYXJkT3duZXIoKSB7CisgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgbG9zdE93bmVyc2hpcChDbGlwYm9hcmQgYywgVHJhbnNmZXJhYmxlIHQpIHsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGlmICghZlRleHRQYW5lbC5jbGlwYm9hcmROb3RFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgcmVwb3J0RXJyb3IoIk1UZXh0UGFuZWwgZG9lc24ndCByZWNvZ25pemUgc3RyaW5nIGNvbnRlbnQuIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZUZXh0UGFuZWwuc2V0Q2FyZXRQb3NpdGlvbihmVGV4dFBhbmVsLmdldFNlbGVjdGlvblN0YXJ0KCkpOworICAgICAgICAgICAgaW50IG9sZExlbmd0aCA9IGZUZXh0UGFuZWwuZ2V0VGV4dExlbmd0aCgpOworICAgICAgICAgICAgZlRleHRQYW5lbC5wYXN0ZSgpOworICAgICAgICAgICAgaWYgKGZUZXh0UGFuZWwuZ2V0VGV4dExlbmd0aCgpICE9IG9sZExlbmd0aCArIFNUUklOR19DT05URU5ULmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgcmVwb3J0RXJyb3IoIlRleHQgbGVuZ3RoIGlzIHdyb25nIGFmdGVyIHBhc3RlLiIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWZUZXh0UGFuZWwuY2FuVW5kbygpKSB7CisgICAgICAgICAgICAgICAgcmVwb3J0RXJyb3IoImNhblVuZG8gc2hvdWxkIGJlIHRydWUiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZUZXh0UGFuZWwudW5kbygpOworICAgICAgICAgICAgaWYgKGZUZXh0UGFuZWwuZ2V0VGV4dExlbmd0aCgpICE9IG9sZExlbmd0aCkgeworICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yKCJMZW5ndGggaXMgd3JvbmcgYWZ0ZXIgdW5kbyIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFmVGV4dFBhbmVsLmNhblJlZG8oKSkgeworICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yKCJjYW5SZWRvIHNob3VsZCBiZSB0cnVlIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmVGV4dFBhbmVsLnJlZG8oKTsKKyAgICAgICAgICAgIGlmIChmVGV4dFBhbmVsLmdldFRleHRMZW5ndGgoKSAhPSBvbGRMZW5ndGggKyBTVFJJTkdfQ09OVEVOVC5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yKCJUZXh0IGxlbmd0aCBpcyB3cm9uZyBhZnRlciByZWRvLiIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaW50IG9yaWdMZW5ndGggPSBmVGV4dFBhbmVsLmdldFRleHRMZW5ndGgoKTsKKyAgICAgICAgZlRleHRQYW5lbC5zZWxlY3RBbGwoKTsKKyAgICAgICAgZlRleHRQYW5lbC5jbGVhcigpOworICAgICAgICBpZiAoZlRleHRQYW5lbC5nZXRUZXh0TGVuZ3RoKCkgIT0gMCkgeworICAgICAgICAgICAgcmVwb3J0RXJyb3IoIkxlbmd0aCBpcyBub256ZXJvIGFmdGVyIGNsZWFyIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFmVGV4dFBhbmVsLmNhblVuZG8oKSkgeworICAgICAgICAgICAgcmVwb3J0RXJyb3IoImNhblVuZG8gc2hvdWxkIGJlIHRydWUiKTsKKyAgICAgICAgfQorICAgICAgICBmVGV4dFBhbmVsLnVuZG8oKTsKKyAgICAgICAgaWYgKGZUZXh0UGFuZWwuZ2V0VGV4dExlbmd0aCgpICE9IG9yaWdMZW5ndGgpIHsKKyAgICAgICAgICAgIHJlcG9ydEVycm9yKCJPbGQgdGV4dCBub3QgcmVzdG9yZWQiKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChvcmlnTGVuZ3RoID4gMCkgeworCisgICAgICAgICAgICBmVGV4dFBhbmVsLnNlbGVjdCgwLCAxKTsKKyAgICAgICAgICAgIGZUZXh0UGFuZWwuY3V0KCk7CisgICAgICAgICAgICBpZiAoZlRleHRQYW5lbC5nZXRUZXh0TGVuZ3RoKCkgIT0gb3JpZ0xlbmd0aC0xKSB7CisgICAgICAgICAgICAgICAgcmVwb3J0RXJyb3IoIkxlbmd0aCB3cm9uZyBhZnRlciBjdXQiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZUZXh0UGFuZWwucGFzdGUoKTsKKyAgICAgICAgICAgIGlmIChmVGV4dFBhbmVsLmdldFRleHRMZW5ndGgoKSAhPSBvcmlnTGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgcmVwb3J0RXJyb3IoIkxlbmd0aCB3cm9uZyBhZnRlciBwYXN0ZSIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZlRleHRQYW5lbC5zZWxlY3QoMCwgb3JpZ0xlbmd0aCk7CisgICAgICAgICAgICBmVGV4dFBhbmVsLmNvcHkoKTsKKyAgICAgICAgICAgIGZUZXh0UGFuZWwuc2V0Q2FyZXRQb3NpdGlvbigwKTsKKyAgICAgICAgICAgIGZUZXh0UGFuZWwucGFzdGUoKTsKKyAgICAgICAgICAgIGlmIChmVGV4dFBhbmVsLmdldFRleHRMZW5ndGgoKSAhPSAyKm9yaWdMZW5ndGgpIHsKKyAgICAgICAgICAgICAgICByZXBvcnRFcnJvcigiTGVuZ3RoIHdyb25nIGFmdGVyIHBhc3RlIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmVGV4dFBhbmVsLnVuZG8oKTsKKyAgICAgICAgICAgIGlmIChmVGV4dFBhbmVsLmdldFRleHRMZW5ndGgoKSAhPSBvcmlnTGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgcmVwb3J0RXJyb3IoIkxlbmd0aCB3cm9uZyBhZnRlciB1bmRvIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgc2V0QW5kVGVzdE1vZEZsYWcoZmluYWwgaW50IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIG1vZGlmaWVkKSB7CisKKyAgICAgICAgZlRleHRQYW5lbC5zZXRNb2RpZmllZChtb2RpZmllZCk7CisgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IGRlcHRoOyBpKyspIHsKKyAgICAgICAgICAgIGlmICghZlRleHRQYW5lbC5jYW5VbmRvKCkpIHsKKyAgICAgICAgICAgICAgICByZXBvcnRFcnJvcigiUGFuZWwgY2Fubm90IHVuZG8gYXQgdmFsaWQgZGVwdGguICBEZXB0aD0iICsgaSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmVGV4dFBhbmVsLnVuZG8oKTsKKyAgICAgICAgICAgIGZUZXh0UGFuZWwuc2V0TW9kaWZpZWQobW9kaWZpZWQpOworICAgICAgICB9CisKKyAgICAgICAgLy8gY2hlY2sgdGhhdCBhbGwgbW9kIGZsYWdzIGFyZSBmYWxzZToKKyAgICAgICAgaWYgKGZUZXh0UGFuZWwuaXNNb2RpZmllZCgpICE9IG1vZGlmaWVkKSB7CisgICAgICAgICAgICByZXBvcnRFcnJvcigiaXNNb2RpZmllZCBpcyBub3QgY29ycmVjdCIpOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgZGVwdGg7IGkrKykgeworICAgICAgICAgICAgZlRleHRQYW5lbC5yZWRvKCk7CisgICAgICAgICAgICBpZiAoZlRleHRQYW5lbC5pc01vZGlmaWVkKCkgIT0gbW9kaWZpZWQpIHsKKyAgICAgICAgICAgICAgICByZXBvcnRFcnJvcigiaXNNb2RpZmllZCBpcyBub3QgY29ycmVjdCIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogTWFrZSA8Y29kZT5kZXB0aDwvY29kZT4gbW9kaWZpY2F0aW9ucyB0byB0aGUgdGV4dCBpbiB0ZXh0ZlRleHRQYW5lbC4KKyAgICAgKiBTZXQgdGhlIG1vZGlmaWVkIGZsYWcgb24gZWFjaCBvcGVyYXRpb24sIGFuZCB0aGVuIHJldHJpZXZlIGl0cworICAgICAqIHZhbHVlLiAgRmluYWxseSwgdW5kbyB0aGUgbW9kaWZpY2F0aW9ucy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBfdGVzdE1vZEZsYWcoZmluYWwgaW50IGRlcHRoKSB7CisKKyAgICAgICAgZmluYWwgaW50IG9sZExlbmd0aCA9IGZUZXh0UGFuZWwuZ2V0VGV4dExlbmd0aCgpOworCisgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IGRlcHRoOyBpKyspIHsKKyAgICAgICAgICAgIGZUZXh0UGFuZWwuaW5zZXJ0KE1PRF9URVhULCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIHNldEFuZFRlc3RNb2RGbGFnKGRlcHRoLCBmYWxzZSk7CisgICAgICAgIHNldEFuZFRlc3RNb2RGbGFnKGRlcHRoLCB0cnVlKTsKKworICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBkZXB0aDsgaSsrKSB7CisgICAgICAgICAgICBmVGV4dFBhbmVsLnVuZG8oKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChmVGV4dFBhbmVsLmdldFRleHRMZW5ndGgoKSAhPSBvbGRMZW5ndGgpIHsKKyAgICAgICAgICAgIHJlcG9ydEVycm9yKCJVbmRvIGRpZCBub3QgcmVzdG9yZSBvbGQgdGV4dC4iKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgYXBwbHlDaGFyYWN0ZXJTdHlsZSgpIHsKKworICAgICAgICBTdHlsZU1vZGlmaWVyIHN0TW9kID0gY2hhck1vZHNbcmFuZEludChjaGFyTW9kcy5sZW5ndGgpXTsKKyAgICAgICAgZkxpc3RlbmVyLnJlZnVzZUFsbCgpOworICAgICAgICBmTGlzdGVuZXIuZXhwZWN0RXZlbnQoVGV4dFBhbmVsRXZlbnQuU0VMRUNUSU9OX1NUWUxFU19DSEFOR0VEKTsKKyAgICAgICAgaWYgKGZUZXh0UGFuZWwuZ2V0U2VsZWN0aW9uU3RhcnQoKSAhPSBmVGV4dFBhbmVsLmdldFNlbGVjdGlvbkVuZCgpKSB7CisgICAgICAgICAgICBmTGlzdGVuZXIuZXhwZWN0RXZlbnQoVGV4dFBhbmVsRXZlbnQuVEVYVF9DSEFOR0VEKTsKKyAgICAgICAgICAgIGZMaXN0ZW5lci5hbGxvd0V2ZW50KFRleHRQYW5lbEV2ZW50LlNFTEVDVElPTl9SQU5HRV9DSEFOR0VEKTsKKyAgICAgICAgfQorICAgICAgICBmTGlzdGVuZXIuYWxsb3dFdmVudChUZXh0UGFuZWxFdmVudC5VTkRPX1NUQVRFX0NIQU5HRUQpOworICAgICAgICBmVGV4dFBhbmVsLm1vZGlmeUNoYXJhY3RlclN0eWxlT25TZWxlY3Rpb24oc3RNb2QpOworICAgICAgICBmTGlzdGVuZXIuYXNzZXJ0Tm90RXhwZWN0aW5nRXZlbnRzKCk7CisgICAgICAgIGZMaXN0ZW5lci5hbGxvd0FsbCgpOworICAgIH0KKworCisgICAgdm9pZCBhcHBseVBhcmFncmFwaFN0eWxlKCkgeworCisgICAgICAgIGZMaXN0ZW5lci5yZWZ1c2VBbGwoKTsKKyAgICAgICAgZkxpc3RlbmVyLmV4cGVjdEV2ZW50KFRleHRQYW5lbEV2ZW50LlNFTEVDVElPTl9TVFlMRVNfQ0hBTkdFRCk7CisgICAgICAgIGZMaXN0ZW5lci5leHBlY3RFdmVudChUZXh0UGFuZWxFdmVudC5URVhUX0NIQU5HRUQpOworICAgICAgICBmTGlzdGVuZXIuYWxsb3dFdmVudChUZXh0UGFuZWxFdmVudC5VTkRPX1NUQVRFX0NIQU5HRUQpOworICAgICAgICBmTGlzdGVuZXIuYWxsb3dFdmVudChUZXh0UGFuZWxFdmVudC5TRUxFQ1RJT05fUkFOR0VfQ0hBTkdFRCk7CisgICAgICAgIFN0eWxlTW9kaWZpZXIgc3RNb2QgPSBwYXJhTW9kc1tyYW5kSW50KHBhcmFNb2RzLmxlbmd0aCldOworICAgICAgICBmVGV4dFBhbmVsLm1vZGlmeVBhcmFncmFwaFN0eWxlT25TZWxlY3Rpb24oc3RNb2QpOworICAgICAgICBmTGlzdGVuZXIuYXNzZXJ0Tm90RXhwZWN0aW5nRXZlbnRzKCk7CisgICAgICAgIGZMaXN0ZW5lci5hbGxvd0FsbCgpOworICAgIH0KKworICAgIHZvaWQgYXBwbHlLZXlSZW1hcCgpIHsKKworICAgICAgICBmTGlzdGVuZXIucmVmdXNlQWxsKCk7CisgICAgICAgIGZMaXN0ZW5lci5leHBlY3RFdmVudChUZXh0UGFuZWxFdmVudC5LRVlSRU1BUF9DSEFOR0VEKTsKKyAgICAgICAgaW50IG9wID0gcmFuZEludCg1KTsKKyAgICAgICAgc3dpdGNoIChvcCkgeworCisgICAgICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICAgICAgZlRleHRQYW5lbC5zZXRLZXlSZW1hcChLZXlSZW1hcC5nZXRJZGVudGl0eVJlbWFwKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgZlRleHRQYW5lbC5zZXRLZXlSZW1hcChLZXlSZW1hcC5nZXRBcmFiaWNUcmFuc2xpdGVyYXRpb24oKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICBmVGV4dFBhbmVsLnNldEtleVJlbWFwKEtleVJlbWFwLmdldEhlYnJld1RyYW5zbGl0ZXJhdGlvbigpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICAgIGZUZXh0UGFuZWwuc2V0S2V5UmVtYXAoS2V5UmVtYXAuZ2V0SXNyYWVsTmlrdWQoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAgICAvL2ZUZXh0UGFuZWwuc2V0S2V5UmVtYXAoS2V5UmVtYXAuZ2V0VGhhaUtldG1hbmVlKCkpOworICAgICAgICAgICAgICAgIGZUZXh0UGFuZWwuc2V0S2V5UmVtYXAoS2V5UmVtYXAuZ2V0SXNyYWVsTmlrdWQoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmVwb3J0RXJyb3IoIkludmFsaWQgb3BlcmF0aW9uISIpOworICAgICAgICB9CisgICAgICAgIGZMaXN0ZW5lci5hc3NlcnROb3RFeHBlY3RpbmdFdmVudHMoKTsKKyAgICAgICAgZkxpc3RlbmVyLmFsbG93QWxsKCk7CisgICAgfQorCisgICAgdm9pZCByZXNpemVGcmFtZShGcmFtZSBmcmFtZSkgeworCisgICAgICAgIGZMaXN0ZW5lci5yZWZ1c2VBbGwoKTsKKyAgICAgICAgZkxpc3RlbmVyLmFsbG93RXZlbnQoVGV4dFBhbmVsRXZlbnQuRk9STUFUX1dJRFRIX0NIQU5HRUQpOworICAgICAgICBpbnQgd2QgPSByYW5kSW50KDUwLCAxMDAwKTsKKyAgICAgICAgaW50IGh0ID0gcmFuZEludCgyMCwgODAwKTsKKworICAgICAgICBmcmFtZS5zZXRTaXplKHdkLCBodCk7CisgICAgICAgIGZMaXN0ZW5lci5hbGxvd0FsbCgpOworICAgIH0KKworICAgIHZvaWQgc2VsZWN0VGV4dCgpIHsKKworICAgICAgICBpbnQgc2VsU3RhcnQgPSByYW5kSW50KC0xMCwgZlRleHRQYW5lbC5nZXRUZXh0TGVuZ3RoKCkpOworICAgICAgICBpbnQgc2VsTGltaXQgPSByYW5kSW50KDAsIGZUZXh0UGFuZWwuZ2V0VGV4dExlbmd0aCgpICsgMTApOworICAgICAgICBfdGVzdFNlbGVjdGlvbihTRUxFQ1QsIHNlbFN0YXJ0LCBzZWxMaW1pdCk7CisgICAgfQorCisgICAgdm9pZCB1bmRvUmVkbygpIHsKKworICAgICAgICBmaW5hbCBpbnQgb3BDb3VudCA9IHJhbmRJbnQoLTEwLCAxNSk7CisKKyAgICAgICAgZm9yIChpbnQgaT1vcENvdW50OyBpIDw9IDA7IGkrKykgeworICAgICAgICAgICAgZlRleHRQYW5lbC5yZWRvKCk7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgb3BDb3VudDsgaSsrKSB7CisgICAgICAgICAgICBmVGV4dFBhbmVsLnVuZG8oKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB2b2lkIHR5cGVLZXlzKCkgeworCisgICAgICAgIGZpbmFsIGludCBrZXlDb3VudCA9IHJhbmRJbnQoMSwgMTAwKTsKKyAgICAgICAgVGV4dFBhbmVsIHRleHRQYW5lbCA9IChUZXh0UGFuZWwpIGZUZXh0UGFuZWw7CisgICAgICAgIAorICAgICAgICBLZXlFdmVudEZvcndhcmRlciBmb3J3YXJkZXIgPSBuZXcgS2V5RXZlbnRGb3J3YXJkZXIodGV4dFBhbmVsKTsKKyAgICAgICAgCisgICAgICAgIGZMaXN0ZW5lci5yZWZ1c2VBbGwoKTsKKyAgICAgICAgZkxpc3RlbmVyLmFsbG93RXZlbnQoVGV4dFBhbmVsRXZlbnQuVU5ET19TVEFURV9DSEFOR0VEKTsKKyAgICAgICAgCisgICAgICAgIGlmIChmVGV4dFBhbmVsLmdldFNlbGVjdGlvblN0YXJ0KCkgIT0gZlRleHRQYW5lbC5nZXRTZWxlY3Rpb25FbmQoKSkgeworICAgICAgICAgICAgZkxpc3RlbmVyLmV4cGVjdEV2ZW50KFRleHRQYW5lbEV2ZW50LlNFTEVDVElPTl9FTVBUWV9DSEFOR0VEKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwga2V5Q291bnQ7IGkrKykgeworICAgICAgICAgICAgY2hhciB0eXBlZENoYXIgPSBUWVBFRF9DSEFSU1tyYW5kSW50KFRZUEVEX0NIQVJTLmxlbmd0aCldOworICAgICAgICAgICAgS2V5RXZlbnQgZXZlbnQgPSBuZXcgS2V5RXZlbnQodGV4dFBhbmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS2V5RXZlbnQuS0VZX1RZUEVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLZXlFdmVudC5WS19VTkRFRklORUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlZENoYXIpOworICAgICAgICAgICAgaWYgKHR5cGVkQ2hhciA9PSA4IHx8IHR5cGVkQ2hhciA9PSAweDdmKSB7CisgICAgICAgICAgICAgICAgZkxpc3RlbmVyLmFsbG93RXZlbnQoVGV4dFBhbmVsRXZlbnQuVEVYVF9DSEFOR0VEKTsKKyAgICAgICAgICAgICAgICBmTGlzdGVuZXIuYWxsb3dFdmVudChUZXh0UGFuZWxFdmVudC5TRUxFQ1RJT05fUkFOR0VfQ0hBTkdFRCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBmTGlzdGVuZXIuZXhwZWN0RXZlbnQoVGV4dFBhbmVsRXZlbnQuVEVYVF9DSEFOR0VEKTsKKyAgICAgICAgICAgICAgICBmTGlzdGVuZXIuZXhwZWN0RXZlbnQoVGV4dFBhbmVsRXZlbnQuU0VMRUNUSU9OX1JBTkdFX0NIQU5HRUQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZm9yd2FyZGVyLmhhbmRsZUtleUV2ZW50KGV2ZW50KTsKKyAgICAgICAgICAgIC8vdHJ5IHsKKyAgICAgICAgICAgICAgICBmTGlzdGVuZXIuYXNzZXJ0Tm90RXhwZWN0aW5nRXZlbnRzKGksIGZhbHNlKTsKKyAgICAgICAgICAgIC8vfQorICAgICAgICAgICAgLy9jYXRjaChFcnJvciBlKSB7CisgICAgICAgICAgICAvLyAgICBsb2dNZXNzYWdlKCJpPSIraSsiOyB0eXBlZENoYXI9IitJbnRlZ2VyLnRvSGV4U3RyaW5nKHR5cGVkQ2hhcikpOworICAgICAgICAgICAgLy8gICAgdGhyb3cgZTsKKyAgICAgICAgICAgIC8vfQorICAgICAgICB9CisgICAgICAgIGZMaXN0ZW5lci5hbGxvd0FsbCgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXN0L1R5cGluZ1BlcmZUZXN0LmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXN0L1R5cGluZ1BlcmZUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMGQ3YTkyNwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3Rlc3QvVHlwaW5nUGVyZlRlc3QuamF2YQpAQCAtMCwwICsxLDI0MiBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogVHlwaW5nUGVyZlRlc3QuamF2YSx2ICQgJFJldmlzaW9uOiAxLjQgJCAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNjozOSAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRlc3Q7CisKK2ltcG9ydCBqYXZhLmF3dC5CdXR0b247CitpbXBvcnQgamF2YS5hd3QuR3JpZExheW91dDsKK2ltcG9ydCBqYXZhLmF3dC5GcmFtZTsKK2ltcG9ydCBqYXZhLmF3dC5Ub29sa2l0OworCitpbXBvcnQgamF2YS5hd3QuZXZlbnQuQWN0aW9uRXZlbnQ7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuQWN0aW9uTGlzdGVuZXI7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuS2V5RXZlbnQ7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuV2luZG93QWRhcHRlcjsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5XaW5kb3dFdmVudDsKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLmlvLkZpbGVPdXRwdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5PdXRwdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5QcmludFdyaXRlcjsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworCitpbXBvcnQgamF2YS50ZXh0LkRhdGVGb3JtYXQ7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5LZXlFdmVudEZvcndhcmRlcjsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5UZXh0UGFuZWw7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5hd3R1aS5UZXh0RnJhbWU7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1Db25zdFRleHQ7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LmRlbW8uRWRpdERlbW87CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5kZW1vLlRleHREb2N1bWVudDsKKworcHVibGljIGNsYXNzIFR5cGluZ1BlcmZUZXN0IGltcGxlbWVudHMgQWN0aW9uTGlzdGVuZXIgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcml2YXRlIFRleHRGcmFtZSBmVGV4dEZyYW1lOworICAgIHByaXZhdGUgS2V5RXZlbnRGb3J3YXJkZXIgZktleUV2ZW50Rm9yd2FyZGVyOworICAgIHByaXZhdGUgUHJpbnRXcml0ZXIgZk91dDsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBmZ0F0U3RhcnRDb21tYW5kID0gIkluc2VydCBhdCBzdGFydCI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIGZnQXRFbmRDb21tYW5kID0gIkluc2VydCBhdCBlbmQiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBmZ0Z3ZERlbGV0ZSA9ICJGb3J3YXJkIGRlbGV0ZSI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIGZnQmFja3NwYWNlID0gIkJhY2tzcGFjZSI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIGZnQXRDdXJyZW50UG9zQ29tbWFuZCA9ICJJbnNlcnQgYXQgY3VycmVudCBwb3NpdGlvbiI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIGZnTG90c09mVGV4dENvbW1hbmQgPSAiSW5zZXJ0IGEgbG90IG9mIHRleHQiOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFVTQUdFID0gIlVzYWdlOiBqYXZhIGNvbS5pYm0ucmljaHRleHQudGVzdC5UeXBpbmdQZXJmVGVzdCBbZmlsZV0gWy1pbnNlcnRpb25UZXh0IHRleHRdIjsKKyAgICBwcml2YXRlIGNoYXJbXSBmSW5zVGV4dDsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisKKyAgICAgICAgLy8gbm90IHVzZWQgT3V0cHV0U3RyZWFtIG91dFN0cmVhbSA9IG51bGw7CisgICAgICAgIFByaW50V3JpdGVyIHdyaXRlciA9IG5ldyBQcmludFdyaXRlcihTeXN0ZW0ub3V0KTsKKworICAgICAgICBNQ29uc3RUZXh0IHRleHQgPSBEZWNsYXJhdGlvbi5mZ0RlY2xhcmF0aW9uOworICAgICAgICBjaGFyW10gaW5zVGV4dCA9ICJUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLiBUaGUgZW5kLiAiLnRvQ2hhckFycmF5KCk7CisgICAgICAgIAorICAgICAgICBpbnQgaW5kZXggPSAwOworICAgICAgICB3aGlsZSAoaW5kZXggPCBhcmdzLmxlbmd0aCkgeworICAgICAgICAgICAgaWYgKGFyZ3NbaW5kZXhdLmVxdWFscygiLWluc2VydGlvblRleHQiKSkgeworICAgICAgICAgICAgICAgIGlmIChhcmdzLmxlbmd0aCA9PSArK2luZGV4KSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihVU0FHRSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGluc1RleHQgPSBhcmdzW2luZGV4KytdLnRvQ2hhckFycmF5KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgdHJ5IE1Db25zdFRleHQgZmlyc3QsIHRoZW4gcGxhaW4gdGV4dC4KKyAgICAgICAgICAgICAgICBUZXh0RG9jdW1lbnQgZG9jID0gRWRpdERlbW8uZ2V0RG9jdW1lbnRGcm9tRmlsZShuZXcgRmlsZShhcmdzW2luZGV4KytdKSk7CisgICAgICAgICAgICAgICAgaWYgKGRvYyA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQ291bGRuJ3Qgb3BlbiBmaWxlICIrYXJnc1tpbmRleC0xXSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRleHQgPSBkb2MuZ2V0VGV4dCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoaW5kZXggIT0gYXJncy5sZW5ndGgpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihVU0FHRSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG5ldyBUeXBpbmdQZXJmVGVzdCh3cml0ZXIsIHRleHQsIGluc1RleHQpOworICAgIH0KKworICAgIHB1YmxpYyBUeXBpbmdQZXJmVGVzdChQcmludFdyaXRlciBvdXQsIE1Db25zdFRleHQgdGV4dCwgY2hhcltdIGluc1RleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisKKyAgICAgICAgZkluc1RleHQgPSBpbnNUZXh0OworICAgICAgICBmVGV4dEZyYW1lID0gbmV3IFRleHRGcmFtZSh0ZXh0LCAiIiwgbnVsbCk7CisgICAgICAgIFRleHRQYW5lbCB0ZXh0UGFuZWwgPSAoVGV4dFBhbmVsKSBmVGV4dEZyYW1lLmdldFRleHRQYW5lbCgpOworICAgICAgICBmS2V5RXZlbnRGb3J3YXJkZXIgPSBuZXcgS2V5RXZlbnRGb3J3YXJkZXIodGV4dFBhbmVsKTsKKyAgICAgICAgZk91dCA9IG91dDsKKworICAgICAgICBEYXRlRm9ybWF0IGRmID0gRGF0ZUZvcm1hdC5nZXREYXRlVGltZUluc3RhbmNlKCk7CisgICAgICAgIG91dC5wcmludGxuKCJUZXN0IGRhdGU6ICIgKyBkZi5mb3JtYXQobmV3IERhdGUoKSkpOworCisgICAgICAgIGZUZXh0RnJhbWUuc2V0U2l6ZSg1MDAsIDcwMCk7CisgICAgICAgIGZUZXh0RnJhbWUuc2hvdygpOworCisgICAgICAgIEZyYW1lIGYgPSBuZXcgRnJhbWUoIlR5cGluZyBQZXJmIFRlc3QiKTsKKyAgICAgICAgZi5zZXRMYXlvdXQobmV3IEdyaWRMYXlvdXQoMCwgMSkpOworICAgICAgICBCdXR0b24gYjsKKy8qCisgICAgICAgIGIgPSBuZXcgQnV0dG9uKGZnQXRTdGFydENtZCk7CisgICAgICAgIGIuYWRkQWN0aW9uTGlzdGVuZXIodGhpcyk7CisgICAgICAgIGYuYWRkKGIpOworCisgICAgICAgIGIgPSBuZXcgQnV0dG9uKGZnQXRFbmRDbWQpOworICAgICAgICBiLmFkZEFjdGlvbkxpc3RlbmVyKHRoaXMpOworICAgICAgICBmLmFkZChiKTsKKyovCisgICAgICAgIGIgPSBuZXcgQnV0dG9uKGZnQXRDdXJyZW50UG9zQ29tbWFuZCk7CisgICAgICAgIGIuYWRkQWN0aW9uTGlzdGVuZXIodGhpcyk7CisgICAgICAgIGYuYWRkKGIpOworCisgICAgICAgIGIgPSBuZXcgQnV0dG9uKGZnTG90c09mVGV4dENvbW1hbmQpOworICAgICAgICBiLmFkZEFjdGlvbkxpc3RlbmVyKHRoaXMpOworICAgICAgICBmLmFkZChiKTsKKworICAgICAgICBiID0gbmV3IEJ1dHRvbihmZ0Z3ZERlbGV0ZSk7CisgICAgICAgIGIuYWRkQWN0aW9uTGlzdGVuZXIodGhpcyk7CisgICAgICAgIGYuYWRkKGIpOworCisgICAgICAgIGIgPSBuZXcgQnV0dG9uKGZnQmFja3NwYWNlKTsKKyAgICAgICAgYi5hZGRBY3Rpb25MaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgZi5hZGQoYik7CisKKyAgICAgICAgZi5kb0xheW91dCgpOworICAgICAgICBXaW5kb3dBZGFwdGVyIGNsb3NlciA9IG5ldyBXaW5kb3dBZGFwdGVyKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgd2luZG93Q2xvc2luZyhXaW5kb3dFdmVudCBlKSB7CisgICAgICAgICAgICAgICAgZk91dC5jbG9zZSgpOworICAgICAgICAgICAgICAgIFN5c3RlbS5leGl0KDApOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgICAgICAKKyAgICAgICAgZi5hZGRXaW5kb3dMaXN0ZW5lcihjbG9zZXIpOworICAgICAgICBmVGV4dEZyYW1lLmFkZFdpbmRvd0xpc3RlbmVyKGNsb3Nlcik7CisgICAgICAgIAorICAgICAgICBmLnNldFNpemUoMjAwLCA4MCk7CisgICAgICAgIGYuc2hvdygpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGFjdGlvblBlcmZvcm1lZChBY3Rpb25FdmVudCBldnQpIHsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgaWYgKGV2dC5nZXRBY3Rpb25Db21tYW5kKCkuZXF1YWxzKGZnQXRDdXJyZW50UG9zQ29tbWFuZCkpIHsKKworICAgICAgICAgICAgICAgIGluc2VydEF0Q3VycmVudFBvcygxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGV2dC5nZXRBY3Rpb25Db21tYW5kKCkuZXF1YWxzKGZnTG90c09mVGV4dENvbW1hbmQpKSB7CisKKyAgICAgICAgICAgICAgICBpbnNlcnRBdEN1cnJlbnRQb3MoOCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChldnQuZ2V0QWN0aW9uQ29tbWFuZCgpLmVxdWFscyhmZ0Z3ZERlbGV0ZSkpIHsKKworICAgICAgICAgICAgICAgIGZvcndhcmREZWxldGUoMSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChldnQuZ2V0QWN0aW9uQ29tbWFuZCgpLmVxdWFscyhmZ0JhY2tzcGFjZSkpIHsKKworICAgICAgICAgICAgICAgIGJhY2tzcGFjZSgxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXRjaChJT0V4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkNhdWdodCBleGNlcHRpb246ICIgKyBlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBpbnNlcnRBdEN1cnJlbnRQb3MoZmluYWwgaW50IHRpbWVzKSB0aHJvd3MgSU9FeGNlcHRpb24geworCisgICAgICAgIGZUZXh0RnJhbWUudG9Gcm9udCgpOworCisgICAgICAgIFN5c3RlbS5nYygpOworCisgICAgICAgIGxvbmcgc3RhcnRUaW1lID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisKKyAgICAgICAgZm9yIChpbnQgdD0wOyB0IDwgdGltZXM7IHQrKykgeworICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgZkluc1RleHQubGVuZ3RoOyBpKyspIHsKKworICAgICAgICAgICAgICAgIEtleUV2ZW50IGV2ZW50ID0gbmV3IEtleUV2ZW50KGZUZXh0RnJhbWUsIEtleUV2ZW50LktFWV9UWVBFRCwgMCwgMCwgMCwgZkluc1RleHRbaV0pOworICAgICAgICAgICAgICAgIGZLZXlFdmVudEZvcndhcmRlci5oYW5kbGVLZXlFdmVudChldmVudCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBsb25nIHRpbWUgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSAtIHN0YXJ0VGltZTsKKworICAgICAgICBmT3V0LnByaW50bG4oIlRvdGFsIHRpbWU6ICIgKyB0aW1lKTsKKyAgICAgICAgZk91dC5wcmludGxuKCJNaWxsaXMgcGVyIGNoYXJhY3RlcjogIiArICh0aW1lIC8gKGZJbnNUZXh0Lmxlbmd0aCp0aW1lcykpKTsKKyAgICAgICAgZk91dC5mbHVzaCgpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBmb3J3YXJkRGVsZXRlKGZpbmFsIGludCB0aW1lcykgdGhyb3dzIElPRXhjZXB0aW9uIHsKKworICAgICAgICBTeXN0ZW0uZ2MoKTsKKworICAgICAgICBsb25nIHN0YXJ0VGltZSA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworCisgICAgICAgIGZvciAoaW50IHQ9MDsgdCA8IHRpbWVzOyB0KyspIHsKKyAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IGZJbnNUZXh0Lmxlbmd0aDsgaSsrKSB7CisKKyAgICAgICAgICAgICAgICBLZXlFdmVudCBldmVudCA9IG5ldyBLZXlFdmVudChmVGV4dEZyYW1lLCAwLCAwLCAwLCBLZXlFdmVudC5WS19ERUxFVEUsICdcdTAwRkYnKTsKKyAgICAgICAgICAgICAgICBmS2V5RXZlbnRGb3J3YXJkZXIuaGFuZGxlS2V5RXZlbnQoZXZlbnQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgbG9uZyB0aW1lID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkgLSBzdGFydFRpbWU7CisKKyAgICAgICAgZk91dC5wcmludGxuKCJUb3RhbCB0aW1lOiAiICsgdGltZSk7CisgICAgICAgIGZPdXQucHJpbnRsbigiTWlsbGlzIHBlciBjaGFyYWN0ZXI6ICIgKyAodGltZSAvIChmSW5zVGV4dC5sZW5ndGgqdGltZXMpKSk7CisgICAgICAgIGZPdXQuZmx1c2goKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgYmFja3NwYWNlKGZpbmFsIGludCB0aW1lcykgdGhyb3dzIElPRXhjZXB0aW9uIHsKKworICAgICAgICBTeXN0ZW0uZ2MoKTsKKworICAgICAgICBsb25nIHN0YXJ0VGltZSA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworCisgICAgICAgIGZvciAoaW50IHQ9MDsgdCA8IHRpbWVzOyB0KyspIHsKKyAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IGZJbnNUZXh0Lmxlbmd0aDsgaSsrKSB7CisKKyAgICAgICAgICAgICAgICBLZXlFdmVudCBldmVudCA9IG5ldyBLZXlFdmVudChmVGV4dEZyYW1lLCAwLCAwLCAwLCBLZXlFdmVudC5WS19CQUNLX1NQQUNFLCAnXHUwMDEwJyk7CisgICAgICAgICAgICAgICAgZktleUV2ZW50Rm9yd2FyZGVyLmhhbmRsZUtleUV2ZW50KGV2ZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGxvbmcgdGltZSA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpIC0gc3RhcnRUaW1lOworCisgICAgICAgIGZPdXQucHJpbnRsbigiVG90YWwgdGltZTogIiArIHRpbWUpOworICAgICAgICBmT3V0LnByaW50bG4oIk1pbGxpcyBwZXIgY2hhcmFjdGVyOiAiICsgKHRpbWUgLyAoZkluc1RleHQubGVuZ3RoKnRpbWVzKSkpOworICAgICAgICBmT3V0LmZsdXNoKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGVzdC91bml0L0Ztd2tUZXN0VGV4dFBhbmVsLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXN0L3VuaXQvRm13a1Rlc3RUZXh0UGFuZWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lMzc5MmFjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGVzdC91bml0L0Ztd2tUZXN0VGV4dFBhbmVsLmphdmEKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogRm13a1Rlc3RUZXh0UGFuZWwuamF2YSx2ICQgJFJldmlzaW9uOiAxLjMgJCAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNjozOSAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRlc3QudW5pdDsKKworaW1wb3J0IGNvbS5pYm0uaWN1LmRldi50ZXN0LlRlc3RGbXdrOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGVzdC5UZXN0VGV4dFBhbmVsOworCitwdWJsaWMgZmluYWwgY2xhc3MgRm13a1Rlc3RUZXh0UGFuZWwgZXh0ZW5kcyBUZXN0Rm13ayB7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAKKyAgICAgICAgbmV3IEZtd2tUZXN0VGV4dFBhbmVsKCkucnVuKGFyZ3MpOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIFRUUCB0dHA7CisgICAgCisgICAgcHVibGljIEZtd2tUZXN0VGV4dFBhbmVsKCkgeworICAgIAorICAgICAgICB0dHAgPSBuZXcgVFRQKCk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgCisgICAgICAgIHR0cC50ZXN0KCk7CisgICAgICAgIC8vIElmIFRlc3RUZXh0UGFuZWwgZ2V0cyBtb3JlIHRlc3RzLCBhZGQgdGhlbSBoZXJlCisgICAgfQorCisgICAgcHJpdmF0ZSBmaW5hbCBjbGFzcyBUVFAgZXh0ZW5kcyBUZXN0VGV4dFBhbmVsIHsKKyAgICAKKyAgICAgICAgcHJvdGVjdGVkIHZvaWQgcmVwb3J0RXJyb3IoU3RyaW5nIG1lc3NhZ2UpIHsKKyAgICAgICAgCisgICAgICAgICAgICBlcnJsbihtZXNzYWdlKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHJvdGVjdGVkIHZvaWQgbG9nTWVzc2FnZShTdHJpbmcgbWVzc2FnZSkgeworICAgICAgICAKKyAgICAgICAgICAgIGxvZ2xuKG1lc3NhZ2UpOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3Rlc3QvdW5pdC9UZXN0QWxsLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXN0L3VuaXQvVGVzdEFsbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmZkYzQ2ODJlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGVzdC91bml0L1Rlc3RBbGwuamF2YQpAQCAtMCwwICsxLDU1IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBUZXN0QWxsLmphdmEsdiAkICRSZXZpc2lvbjogMS4zICQgJERhdGU6IDIwMDIvMDIvMTYgMDM6MDY6MzkgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXN0LnVuaXQ7CisKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYudGVzdC5UZXN0Rm13azsKKworcHVibGljIGNsYXNzIFRlc3RBbGwgZXh0ZW5kcyBUZXN0Rm13ayB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIG5ldyBUZXN0QWxsKCkucnVuKGFyZ3MpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0QXR0cmlidXRlU2V0KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHJ1bihuZXcgVGVzdEF0dHJpYnV0ZVNldCgpKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdEF0dHJpYnV0ZU1hcCgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBydW4obmV3IFRlc3RBdHRyaWJ1dGVNYXAoKSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RGb3JtYXR0ZXIoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgcnVuKG5ldyBUZXN0Rm9ybWF0dGVyKCkpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0TVRleHQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgcnVuKG5ldyBUZXN0TVRleHQoKSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RQYXJhZ3JhcGhTdHlsZXMoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgcnVuKG5ldyBUZXN0UGFyYWdyYXBoU3R5bGVzKCkpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0TVRleHRTdHJlYW1pbmcoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgcnVuKG5ldyBUZXN0TVRleHRTdHJlYW1pbmcoKSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RUZXh0UGFuZWwoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgcnVuKG5ldyBGbXdrVGVzdFRleHRQYW5lbCgpKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGVzdC91bml0L1Rlc3RBdHRyaWJ1dGVNYXAuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3Rlc3QvdW5pdC9UZXN0QXR0cmlidXRlTWFwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMzdmN2JmZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3Rlc3QvdW5pdC9UZXN0QXR0cmlidXRlTWFwLmphdmEKQEAgLTAsMCArMSw0MTMgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFRlc3RBdHRyaWJ1dGVNYXAuamF2YSx2ICQgJFJldmlzaW9uOiAxLjQgJCAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNjozOSAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRlc3QudW5pdDsKKworaW1wb3J0IGNvbS5pYm0uaWN1LmRldi50ZXN0LlRlc3RGbXdrOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlU2V0OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5hdHRyaWJ1dGVzLlRleHRBdHRyaWJ1dGU7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuTWFwOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZU1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247CisKKy8vIEphdmEyIGltcG9ydHMKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLlNldDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwLkVudHJ5OworCisKK3B1YmxpYyBjbGFzcyBUZXN0QXR0cmlidXRlTWFwIGV4dGVuZHMgVGVzdEZtd2sgIHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisKKworICAgIC8vIFRoZXJlIGFyZSBKREsgMS4xIHZlcnNpb25zIG9mIEF0dHJpYnV0ZU1hcCBhbmQgQXR0cmlidXRlU2V0LgorICAgIC8vIFNvbWUgb2YgdGhlIHRlc3RzIGluIHRoaXMgY2xhc3MgcmVxdWlyZSBKYXZhIDIgQVBJJ3MuICBJIGhhdmUKKyAgICAvLyB0cmllZCB0byBpc29sYXRlIHRoZXNlIHRlc3RzIGJ5IGNvbmRpdGlvbmFsaXppbmcgdGhlbSBvbgorICAgIC8vIHRoaXMgc3RhdGljIHZhcmlhYmxlLiAgSWYgeW91IGFyZSBiYWNrLXBvcnRpbmcgdG8gMS4xLCByZW1vdmUKKyAgICAvLyB0aGUgSmF2YSAyIHRlc3RzIE9OTFkuCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBnSkRLMTEgPSBmYWxzZTsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworCisgICAgICAgIG5ldyBUZXN0QXR0cmlidXRlTWFwKCkucnVuKGFyZ3MpOworICAgIH0KKworICAgIHByaXZhdGUgQXR0cmlidXRlU2V0IG1hcHM7ICAvLyBBIFNldCBvZiBBdHRyaWJ1dGVNYXBzCisgICAgcHJpdmF0ZSBBdHRyaWJ1dGVTZXQgc2V0czsgIC8vIEEgU2V0IG9mIFNldHMKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNsYXNzIFRlc3RBdHRyaWJ1dGUgZXh0ZW5kcyBUZXh0QXR0cmlidXRlIHsKKworICAgICAgICBUZXN0QXR0cmlidXRlKFN0cmluZyBuYW1lKSB7CisgICAgICAgICAgICBzdXBlcihuYW1lKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFRlc3RBdHRyaWJ1dGVbXSBhdHRyaWJ1dGVzID0geworICAgICAgICBuZXcgVGVzdEF0dHJpYnV0ZSgiMCIpLCBuZXcgVGVzdEF0dHJpYnV0ZSgiMSIpLCBuZXcgVGVzdEF0dHJpYnV0ZSgiMiIpCisgICAgfTsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIE9iamVjdFtdIHZhbHVlcyA9IHsKKyAgICAgICAgIkhlbGxvIHdvcmxkIiwgbmV3IEZsb2F0KC00MiksIG5ldyBPYmplY3QoKSwgbmV3IEF0dHJpYnV0ZU1hcChuZXcgVGVzdEF0dHJpYnV0ZSgiMyIpLCAiSEgiKQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGxocy5lcXVhbHMocmhzKSAtIGJ1dCBhbHNvIGNoZWNrcyBmb3Igc3ltbWV0cnksIGFuZAorICAgICAqIGNvbnNpc3RlbmN5IHdpdGggaGFzaENvZGUoKS4KKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gZXF1YWxNYXBzKEF0dHJpYnV0ZU1hcCBsaHMsIE9iamVjdCByaHMpIHsKKworICAgICAgICBib29sZWFuIGVxdWFsID0gbGhzLmVxdWFscyhyaHMpOworICAgICAgICBpZiAoZXF1YWwgIT0gKHJocy5lcXVhbHMobGhzKSkpIHsKKyAgICAgICAgICAgIGVycmxuKCJBdHRyaWJ1dGVNYXAuZXF1YWxzIGlzIG5vdCBzeW1ldHJpYyIpOworICAgICAgICB9CisgICAgICAgIGlmIChlcXVhbCkgeworICAgICAgICAgICAgaWYgKGxocy5oYXNoQ29kZSgpICE9IHJocy5oYXNoQ29kZSgpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkF0dHJpYnV0ZU1hcHMgYXJlIGVxdWFsIGJ1dCBoYXNoQ29kZXMgZGlmZmVyIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGVxdWFsOworICAgIH0KKworICAgIHB1YmxpYyBUZXN0QXR0cmlidXRlTWFwKCkgeworCisgICAgICAgIG1hcHMgPSBBdHRyaWJ1dGVTZXQuRU1QVFlfU0VUOworICAgICAgICBtYXBzID0gbWFwcy5hZGRFbGVtZW50KEF0dHJpYnV0ZU1hcC5FTVBUWV9BVFRSSUJVVEVfTUFQKTsKKyAgICAgICAgbWFwcy5hZGRFbGVtZW50KG5ldyBBdHRyaWJ1dGVNYXAoVGV4dEF0dHJpYnV0ZS5TVVBFUlNDUklQVCwgVGV4dEF0dHJpYnV0ZS5TVVBFUlNDUklQVF9TVUIpKTsKKyAgICAgICAgbWFwcy5hZGRFbGVtZW50KG5ldyBBdHRyaWJ1dGVNYXAoVGV4dEF0dHJpYnV0ZS5TVVBFUlNDUklQVCwgVGV4dEF0dHJpYnV0ZS5TVVBFUlNDUklQVF9TVVBFUikpOworCisgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IGF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGZvciAoaW50IGo9MDsgaiA8IHZhbHVlcy5sZW5ndGg7IGorKykgeworICAgICAgICAgICAgICAgIG1hcHMgPSBtYXBzLmFkZEVsZW1lbnQobmV3IEF0dHJpYnV0ZU1hcChhdHRyaWJ1dGVzW2ldLCB2YWx1ZXNbal0pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIEF0dHJpYnV0ZU1hcCBiaWdNYXAgPSBuZXcgQXR0cmlidXRlTWFwKG5ldyBUZXN0QXR0cmlidXRlKCI0IiksICJ2YWx1ZSIpOworICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBNYXRoLm1pbihhdHRyaWJ1dGVzLmxlbmd0aCwgdmFsdWVzLmxlbmd0aCk7IGkrKykgeworICAgICAgICAgICAgYmlnTWFwID0gYmlnTWFwLmFkZEF0dHJpYnV0ZShhdHRyaWJ1dGVzW2ldLCB2YWx1ZXNbdmFsdWVzLmxlbmd0aC1pLTFdKTsKKyAgICAgICAgfQorICAgICAgICBtYXBzID0gbWFwcy5hZGRFbGVtZW50KGJpZ01hcCk7CisKKyAgICAgICAgc2V0cyA9IEF0dHJpYnV0ZVNldC5FTVBUWV9TRVQ7CisKKyAgICAgICAgc2V0cyA9IG5ldyBBdHRyaWJ1dGVTZXQoQXR0cmlidXRlU2V0LkVNUFRZX1NFVCk7CisKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgYXR0cmlidXRlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgQXR0cmlidXRlU2V0IG5ld1NldCA9IG5ldyBBdHRyaWJ1dGVTZXQoYXR0cmlidXRlc1tpXSk7CisgICAgICAgICAgICBzZXRzID0gc2V0cy5hZGRFbGVtZW50KG5ld1NldCk7CisgICAgICAgIH0KKworICAgICAgICBBdHRyaWJ1dGVTZXQgYWxsQXR0cnMgPSBBdHRyaWJ1dGVTZXQuRU1QVFlfU0VUOworICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBhdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBhbGxBdHRycyA9IGFsbEF0dHJzLmFkZEVsZW1lbnQoYXR0cmlidXRlc1tpXSk7CisgICAgICAgIH0KKworICAgICAgICBzZXRzID0gc2V0cy5hZGRFbGVtZW50KGFsbEF0dHJzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSdW4gdGVzdHMgb24gQXR0cmlidXRlTWFwLiAgSWYgYSB0ZXN0IGZhaWxzIGFuIGV4Y2VwdGlvbiB3aWxsIHByb3BvZ2F0ZSBvdXQKKyAgICAgKiBvZiB0aGlzIG1ldGhvZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworCisgICAgICAgIGVhc3lUZXN0cygpOworCisgICAgICAgIEVudW1lcmF0aW9uIG1hcEl0ZXIgPSBtYXBzLmVsZW1lbnRzKCk7CisgICAgICAgIHdoaWxlIChtYXBJdGVyLmhhc01vcmVFbGVtZW50cygpKSB7CisKKyAgICAgICAgICAgIEF0dHJpYnV0ZU1hcCB0ZXN0TWFwID0gKEF0dHJpYnV0ZU1hcCkgbWFwSXRlci5uZXh0RWxlbWVudCgpOworCisgICAgICAgICAgICBfdGVzdE1vZGlmaWVycyh0ZXN0TWFwKTsKKyAgICAgICAgICAgIF90ZXN0Vmlld3ModGVzdE1hcCk7CisKKyAgICAgICAgICAgIEVudW1lcmF0aW9uIHVuaW9uSXRlciA9IG1hcHMuZWxlbWVudHMoKTsKKyAgICAgICAgICAgIHdoaWxlICh1bmlvbkl0ZXIuaGFzTW9yZUVsZW1lbnRzKCkpIHsKKyAgICAgICAgICAgICAgICBfdGVzdFVuaW9uV2l0aCh0ZXN0TWFwLCAoQXR0cmlidXRlTWFwKSB1bmlvbkl0ZXIubmV4dEVsZW1lbnQoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEVudW1lcmF0aW9uIHNldEl0ZXIgPSBzZXRzLmVsZW1lbnRzKCk7CisgICAgICAgICAgICB3aGlsZSAoc2V0SXRlci5oYXNNb3JlRWxlbWVudHMoKSkgeworICAgICAgICAgICAgICAgIEF0dHJpYnV0ZVNldCB0ZXN0U2V0ID0gKEF0dHJpYnV0ZVNldCkgc2V0SXRlci5uZXh0RWxlbWVudCgpOworICAgICAgICAgICAgICAgIF90ZXN0SW50ZXJzZWN0V2l0aCh0ZXN0TWFwLCB0ZXN0U2V0KTsKKyAgICAgICAgICAgICAgICBfdGVzdFJlbW92ZUF0dHJpYnV0ZXModGVzdE1hcCwgdGVzdFNldCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbnZva2UgbW9kaWZpZXJzIG9uIG1hcC4gIEFsbCBzaG91bGQgdGhyb3cKKyAgICAgKiBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiwgYW5kIGxlYXZlIG1hcCB1bm1vZGlmaWVkLgorICAgICAqLworICAgIHZvaWQgX3Rlc3RNb2RpZmllcnMoQXR0cmlidXRlTWFwIG1hcCkgeworCisgICAgICAgIGlmIChnSkRLMTEpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQXR0cmlidXRlTWFwIG9yaWdpbmFsTWFwID0gbmV3IEF0dHJpYnV0ZU1hcChtYXApOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBtYXAucHV0KFRleHRBdHRyaWJ1dGUuV0VJR0hULCBUZXh0QXR0cmlidXRlLldFSUdIVF9CT0xEKTsKKyAgICAgICAgICAgIGVycmxuKCJQdXQgc2hvdWxkIHRocm93IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uLiIpOworICAgICAgICB9CisgICAgICAgIGNhdGNoKFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIiIpOworICAgICAgICB9CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIE9iamVjdCBrZXkgPSBUZXh0QXR0cmlidXRlLldFSUdIVDsKKyAgICAgICAgICAgIEl0ZXJhdG9yIGl0ZXIgPSBtYXAua2V5U2V0KCkuaXRlcmF0b3IoKTsKKyAgICAgICAgICAgIGlmIChpdGVyLmhhc05leHQoKSkgeworICAgICAgICAgICAgICAgIGtleSA9IGl0ZXIubmV4dCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbWFwLnJlbW92ZShrZXkpOworICAgICAgICAgICAgZXJybG4oIlNldCBzaG91bGQgdGhyb3cgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24uIik7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2goVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludCgiIik7CisgICAgICAgIH0KKworICAgICAgICB0cnkgeworICAgICAgICAgICAgbWFwLnB1dEFsbChtYXApOworICAgICAgICAgICAgZXJybG4oInB1dEFsbCBzaG91bGQgdGhyb3cgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24uIik7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2goVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludCgiIik7CisgICAgICAgIH0KKworICAgICAgICB0cnkgeworICAgICAgICAgICAgbWFwLmNsZWFyKCk7CisgICAgICAgICAgICBlcnJsbigiY2xlYXIgc2hvdWxkIHRocm93IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uLiIpOworICAgICAgICB9CisgICAgICAgIGNhdGNoKFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIiIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFvcmlnaW5hbE1hcC5lcXVhbHMobWFwKSkgeworICAgICAgICAgICAgZXJybG4oIk1vZGlmaWVycyBjaGFuZ2VkIG1hcC4iKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEVuc3VyZSB0aGF0IG1hcC5hZGRBdHRyaWJ1dGVzKGFkZE1hcCkgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nCisgICAgICogbWFwLmFkZCBvbiBhbGwgb2YgYWRkTWFwJ3MgZW50cmllcy4KKyAgICAgKi8KKyAgICB2b2lkIF90ZXN0VW5pb25XaXRoKEF0dHJpYnV0ZU1hcCBtYXAsIEF0dHJpYnV0ZU1hcCBhZGRNYXApIHsKKworICAgICAgICBBdHRyaWJ1dGVNYXAgbGhzID0gbWFwLmFkZEF0dHJpYnV0ZXMoYWRkTWFwKTsKKworICAgICAgICBBdHRyaWJ1dGVNYXAgcmhzID0gbWFwOworCisgICAgICAgIEVudW1lcmF0aW9uIGl0ZXIgPSBhZGRNYXAuZ2V0S2V5U2V0KCkuZWxlbWVudHMoKTsKKyAgICAgICAgd2hpbGUgKGl0ZXIuaGFzTW9yZUVsZW1lbnRzKCkpIHsKKyAgICAgICAgICAgIE9iamVjdCBhdHRyID0gaXRlci5uZXh0RWxlbWVudCgpOworICAgICAgICAgICAgT2JqZWN0IHZhbHVlID0gYWRkTWFwLmdldChhdHRyKTsKKyAgICAgICAgICAgIHJocyA9IHJocy5hZGRBdHRyaWJ1dGUoYXR0ciwgdmFsdWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFlcXVhbE1hcHMobGhzLCByaHMpKSB7CisgICAgICAgICAgICBlcnJsbigiTWFwcyBhcmUgbm90IGVxdWFsLiIpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogRW5zdXJlIHRoYXQgbWFwLnJlbW92ZUF0dHJpYnV0ZXMocmVtb3ZlKSBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcKKyAgICAgKiBtYXAucmVtb3ZlQXR0cmlidXRlIG9uIHJlbW92ZSdzIGVsZW1lbnRzLgorICAgICAqLworICAgIHZvaWQgX3Rlc3RSZW1vdmVBdHRyaWJ1dGVzKEF0dHJpYnV0ZU1hcCBtYXAsIEF0dHJpYnV0ZVNldCByZW1vdmUpIHsKKworICAgICAgICBBdHRyaWJ1dGVNYXAgbGhzID0gbWFwLnJlbW92ZUF0dHJpYnV0ZXMocmVtb3ZlKTsKKworICAgICAgICBBdHRyaWJ1dGVNYXAgcmhzID0gbWFwOworCisgICAgICAgIEVudW1lcmF0aW9uIGl0ZXIgPSByZW1vdmUuZWxlbWVudHMoKTsKKyAgICAgICAgd2hpbGUgKGl0ZXIuaGFzTW9yZUVsZW1lbnRzKCkpIHsKKyAgICAgICAgICAgIE9iamVjdCBhdHRyID0gaXRlci5uZXh0RWxlbWVudCgpOworICAgICAgICAgICAgcmhzID0gcmhzLnJlbW92ZUF0dHJpYnV0ZShhdHRyKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghZXF1YWxNYXBzKGxocywgcmhzKSkgeworICAgICAgICAgICAgZXJybG4oIk1hcHMgYXJlIG5vdCBlcXVhbC4iKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEVuc3VyZSB0aGF0IG1hcC5pbnRlcnNlY3RXaXRoKGludGVyc2VjdCkgaXMgZXF1aXZhbGVudCB0bworICAgICAqIG1hcC5yZW1vdmVBdHRyaWJ1dGVzKG1hcC5rZXlTZXQoKSAtIGludGVyc2VjdCk7CisgICAgICovCisgICAgdm9pZCBfdGVzdEludGVyc2VjdFdpdGgoQXR0cmlidXRlTWFwIG1hcCwgQXR0cmlidXRlU2V0IGludGVyc2VjdCkgeworCisgICAgICAgIEF0dHJpYnV0ZU1hcCBsaHMgPSBtYXAuaW50ZXJzZWN0V2l0aChpbnRlcnNlY3QpOworCisgICAgICAgIEF0dHJpYnV0ZVNldCBrZXlTZXQgPSBtYXAuZ2V0S2V5U2V0KCk7CisgICAgICAgIEF0dHJpYnV0ZVNldCByZW1vdmVTZXQgPSBrZXlTZXQuc3VidHJhY3QoaW50ZXJzZWN0KTsKKyAgICAgICAgQXR0cmlidXRlTWFwIHJocyA9IG1hcC5yZW1vdmVBdHRyaWJ1dGVzKHJlbW92ZVNldCk7CisKKyAgICAgICAgaWYgKCFlcXVhbE1hcHMobGhzLCByaHMpKSB7CisgICAgICAgICAgICBtYXAuaW50ZXJzZWN0V2l0aChpbnRlcnNlY3QpOworICAgICAgICAgICAgbG9nbG4oImludGVyc2VjdDogIiArIGludGVyc2VjdCk7CisgICAgICAgICAgICBsb2dsbigia2V5U2V0OiAiICsga2V5U2V0KTsKKyAgICAgICAgICAgIGxvZ2xuKCJyZW1vdmVTZXQ6ICIgKyByZW1vdmVTZXQpOworICAgICAgICAgICAgbG9nbG4oIm1hcDogIiArIG1hcCk7CisgICAgICAgICAgICBsb2dsbigibGhzOiAiICsgbGhzKTsKKyAgICAgICAgICAgIGxvZ2xuKCJyaHM6ICIgKyByaHMpOworICAgICAgICAgICAgZXJybG4oIk1hcHMgYXJlIG5vdCBlcXVhbC4iKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEVuc3VyZSB0aGF0OgorICAgICAqICAgIG1hcCwgbWFwLmtleVNldCgpLCBhbmQgbWFwLmVudHJ5U2V0KCkgYXJlIHRoZSBzYW1lIHNpemU7CisgICAgICogICAgbWFwLmNvbnRhaW5zS2V5KCkgaXMgdHJ1ZSBmb3IgZXZlcnkga2V5IGluIGtleVNldCgpOworICAgICAqICAgIG1hcC5jb250YWluc1ZhbHVlKCkgaXMgdHJ1ZSBmb3IgZXZlcnkgdmFsdWUgaW4gdmFsdWVzOworICAgICAqICAgIGV2ZXJ5IGVudHJ5IGtleSBpcyBpbiBrZXlTZXQsIGV2ZXJ5IGVudHJ5IHZhbHVlIGlzIGluIG1hcC52YWx1ZXMoKTsKKyAgICAgKiAgICBtYXAuZ2V0KCkgaXMgY29uc2lzdGVudCB3aXRoIGVudHJ5J3Mga2V5LCB2YWx1ZTsKKyAgICAgKiAgICBzdW0gb2YgaGFzaGNvZGVzIG9mIGVudHJpZXMgZXF1YWxzIG1hcC5oYXNoQ29kZSgpLgorICAgICAqLworICAgIHZvaWQgX3Rlc3RWaWV3cyhBdHRyaWJ1dGVNYXAgbWFwKSB7CisKKyAgICAgICAgQXR0cmlidXRlU2V0IGtleVNldCA9IG1hcC5nZXRLZXlTZXQoKTsKKworICAgICAgICBFbnVtZXJhdGlvbiBrZXlJdGVyID0ga2V5U2V0LmVsZW1lbnRzKCk7CisgICAgICAgIHdoaWxlIChrZXlJdGVyLmhhc01vcmVFbGVtZW50cygpKSB7CisgICAgICAgICAgICBpZiAoIW1hcC5jb250YWluc0tleShrZXlJdGVyLm5leHRFbGVtZW50KCkpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oImtleVNldCBjb250YWlucyBrZXkgbm90IGluIG1hcCIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKGdKREsxMSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBDb2xsZWN0aW9uIHZhbHVlcyA9IG1hcC52YWx1ZXMoKTsKKyAgICAgICAgU2V0IGVudHJ5U2V0ID0gbWFwLmVudHJ5U2V0KCk7CisKKyAgICAgICAgaWYgKGtleVNldC5zaXplKCkgIT0gbWFwLnNpemUoKSB8fCBlbnRyeVNldC5zaXplKCkgIT0gbWFwLnNpemUoKSkgeworICAgICAgICAgICAgZXJybG4oIlNldCBzaXplcyBhcmUgaW5jb25zaXN0ZW50IHdpdGggbWFwIHNpemUuIik7CisgICAgICAgIH0KKworICAgICAgICBpbnQgaGFzaENvZGUgPSAwOworCisgICAgICAgIEl0ZXJhdG9yIHZhbHVlSXRlciA9IHZhbHVlcy5pdGVyYXRvcigpOworICAgICAgICB3aGlsZSAodmFsdWVJdGVyLmhhc05leHQoKSkgeworICAgICAgICAgICAgaWYgKCFtYXAuY29udGFpbnNWYWx1ZSh2YWx1ZUl0ZXIubmV4dCgpKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJ2YWx1ZSBzZXQgY29udGFpbnMgdmFsdWUgbm90IGluIG1hcCIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgSXRlcmF0b3IgZW50cnlJdGVyID0gZW50cnlTZXQuaXRlcmF0b3IoKTsKKyAgICAgICAgd2hpbGUgKGVudHJ5SXRlci5oYXNOZXh0KCkpIHsKKworICAgICAgICAgICAgRW50cnkgZW50cnkgPSAoRW50cnkpIGVudHJ5SXRlci5uZXh0KCk7CisKKyAgICAgICAgICAgIE9iamVjdCBrZXkgPSBlbnRyeS5nZXRLZXkoKTsKKyAgICAgICAgICAgIGlmICgha2V5U2V0LmNvbnRhaW5zKGtleSkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRW50cnkga2V5IGlzIG5vdCBpbiBrZXkgc2V0LiIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBPYmplY3QgdmFsdWUgPSBtYXAuZ2V0KGVudHJ5LmdldEtleSgpKTsKKyAgICAgICAgICAgIGlmICghdmFsdWVzLmNvbnRhaW5zKHZhbHVlKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJFbnRyeSB2YWx1ZSBpcyBub3QgaW4gdmFsdWUgc2V0LiIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobWFwLmdldChrZXkpICE9IHZhbHVlKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIm1hcC5nZXQgZGlkIG5vdCByZXR1cm4gZW50cnkgdmFsdWUuIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGhhc2hDb2RlICs9IGVudHJ5Lmhhc2hDb2RlKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaGFzaENvZGUgIT0gbWFwLmhhc2hDb2RlKCkpIHsKKyAgICAgICAgICAgIGVycmxuKCJtYXAgaGFzaGNvZGUgaXMgbm90IHN1bSBvZiBlbnRyeSBoYXNoY29kZXMuIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBMb29rIGZvciBjb3JyZWN0IGJlaGF2aW9yIGluIG9idmlvdXMgY2FzZXMuCisgICAgICovCisgICAgdm9pZCBlYXN5VGVzdHMoKSB7CisKKyAgICAgICAgQXR0cmlidXRlTWFwIG1hcCA9IG5ldyBBdHRyaWJ1dGVNYXAoKTsKKyAgICAgICAgaWYgKCFtYXAuZXF1YWxzKEF0dHJpYnV0ZU1hcC5FTVBUWV9BVFRSSUJVVEVfTUFQKSkgeworICAgICAgICAgICAgZXJybG4oIkRlZmF1bHQtY29uc3RydWN0ZWQgbWFwIGlzIG5vdCBlcXVhbCB0byBlbXB0eSBtYXAuIik7CisgICAgICAgIH0KKworICAgICAgICBtYXAgPSBtYXAuYWRkQXR0cmlidXRlKFRleHRBdHRyaWJ1dGUuUE9TVFVSRSwgVGV4dEF0dHJpYnV0ZS5QT1NUVVJFX09CTElRVUUpOworICAgICAgICBPYmplY3Qgb3RoZXJNYXAgPSBuZXcgQXR0cmlidXRlTWFwKFRleHRBdHRyaWJ1dGUuUE9TVFVSRSwgVGV4dEF0dHJpYnV0ZS5QT1NUVVJFX09CTElRVUUpOworICAgICAgICBpZiAoIW1hcC5lcXVhbHMob3RoZXJNYXApKSB7CisgICAgICAgICAgICBlcnJsbigiTWFwcyBhcmUgaW5jb25zaXN0ZW50IGFmdGVyIG1hcC5hZGQiKTsKKyAgICAgICAgfQorCisgICAgICAgIG90aGVyTWFwID0gbWFwLmFkZEF0dHJpYnV0ZXMobWFwKTsKKyAgICAgICAgaWYgKCFlcXVhbE1hcHMobWFwLG90aGVyTWFwKSkgeworICAgICAgICAgICAgZXJybG4oIk1hcHMgYXJlIGluY29uc2lzdGVudCBhZnRlciBhZGRBdHRyaWJ1dGVzIik7CisgICAgICAgIH0KKworICAgICAgICBtYXAgPSBtYXAuYWRkQXR0cmlidXRlKFRleHRBdHRyaWJ1dGUuVU5ERVJMSU5FLCBUZXh0QXR0cmlidXRlLlVOREVSTElORV9PTik7CisKKyAgICAgICAgaWYgKG1hcC5zaXplKCkgIT0gMikgeworICAgICAgICAgICAgZXJybG4oIk1hcCBzaXplIGlzIHdyb25nLiAgbWFwPSIrbWFwKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChlcXVhbE1hcHMobWFwLG90aGVyTWFwKSkgeworICAgICAgICAgICAgZXJybG4oIk1hcHMgc2hvdWxkIG5vdCBiZSBlcXVhbCIpOworICAgICAgICB9CisKKyAgICAgICAgT2JqZWN0IHBvc3R1cmUgPSBuZXcgRmxvYXQoMCk7CisgICAgICAgIG1hcCA9IG1hcC5hZGRBdHRyaWJ1dGUoVGV4dEF0dHJpYnV0ZS5QT1NUVVJFLCBwb3N0dXJlKTsKKworICAgICAgICBpZiAobWFwLnNpemUoKSAhPSAyKSB7CisgICAgICAgICAgICBlcnJsbigiTWFwIHNpemUgaXMgd3JvbmciKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghbWFwLmdldChUZXh0QXR0cmlidXRlLlBPU1RVUkUpLmVxdWFscyhwb3N0dXJlKSkgeworICAgICAgICAgICAgZXJybG4oIk1hcCBlbGVtZW50IGlzIHdyb25nIik7CisgICAgICAgIH0KKworICAgICAgICBtYXAgPSBtYXAucmVtb3ZlQXR0cmlidXRlKFRleHRBdHRyaWJ1dGUuVU5ERVJMSU5FKTsKKworICAgICAgICBpZiAobWFwLnNpemUoKSAhPSAxKSB7CisgICAgICAgICAgICBlcnJsbigiTWFwIHNpemUgaXMgd3JvbmciKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtYXAuZ2V0KFRleHRBdHRyaWJ1dGUuVU5ERVJMSU5FKSAhPSBudWxsKSB7CisgICAgICAgICAgICBlcnJsbigiTWFwIHNob3VsZCBub3QgaGF2ZSBlbGVtZW50Iik7CisgICAgICAgIH0KKworICAgICAgICAvLyBtYXAgaGFzIFBPU1RVUkVfUkVHVUxBUi4gIElmIHdlIGFkZEF0dHJpYnV0ZXMgYSBtYXAgd2l0aAorICAgICAgICAvLyBQT1NUVVJFX0lUQUxJQyB0aGUgbmV3IG1hcCBzaG91bGQgaGF2ZSBQT1NUVVJFX0lUQUxJQworCisgICAgICAgIG1hcCA9IG1hcC5hZGRBdHRyaWJ1dGVzKG5ldyBBdHRyaWJ1dGVNYXAoVGV4dEF0dHJpYnV0ZS5QT1NUVVJFLCBUZXh0QXR0cmlidXRlLlBPU1RVUkVfT0JMSVFVRSkpOworICAgICAgICBpZiAobWFwLmdldChUZXh0QXR0cmlidXRlLlBPU1RVUkUpICE9IFRleHRBdHRyaWJ1dGUuUE9TVFVSRV9PQkxJUVVFKSB7CisgICAgICAgICAgICBlcnJsbigiTWFwIGVsZW1lbnQgaXMgd3JvbmciKTsKKyAgICAgICAgfQorCisgICAgICAgIF90ZXN0TW9kaWZpZXJzKG1hcCk7CisgICAgICAgIF90ZXN0Vmlld3MobWFwKTsKKworICAgICAgICBFbnVtZXJhdGlvbiBtYXBJdGVyID0gbWFwcy5lbGVtZW50cygpOworICAgICAgICB3aGlsZSAobWFwSXRlci5oYXNNb3JlRWxlbWVudHMoKSkgeworICAgICAgICAgICAgQXR0cmlidXRlTWFwIHRlc3RNYXAgPSAoQXR0cmlidXRlTWFwKSBtYXBJdGVyLm5leHRFbGVtZW50KCk7CisgICAgICAgICAgICBPYmplY3QgbmV3VmFsdWUgPSBuZXcgT2JqZWN0KCk7CisgICAgICAgICAgICBBdHRyaWJ1dGVNYXAgbmV3TWFwID0gdGVzdE1hcC5hZGRBdHRyaWJ1dGUoYXR0cmlidXRlc1swXSwgbmV3VmFsdWUpOworICAgICAgICAgICAgaWYgKG5ld01hcC5nZXQoYXR0cmlidXRlc1swXSkgIT0gbmV3VmFsdWUpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRGlkIG5vdCBnZXQgZXhwZWN0ZWQgdmFsdWUgYmFjay4gIG1hcD0iICsgbWFwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXN0L3VuaXQvVGVzdEF0dHJpYnV0ZVNldC5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGVzdC91bml0L1Rlc3RBdHRyaWJ1dGVTZXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5kMDk1ZmI3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGVzdC91bml0L1Rlc3RBdHRyaWJ1dGVTZXQuamF2YQpAQCAtMCwwICsxLDkxIEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBUZXN0QXR0cmlidXRlU2V0LmphdmEsdiAkICRSZXZpc2lvbjogMS4zICQgJERhdGU6IDIwMDIvMDIvMTYgMDM6MDY6NDAgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXN0LnVuaXQ7CisKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYudGVzdC5UZXN0Rm13azsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRsYXlvdXQuYXR0cmlidXRlcy5BdHRyaWJ1dGVTZXQ7CitpbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOworCitwdWJsaWMgY2xhc3MgVGVzdEF0dHJpYnV0ZVNldCBleHRlbmRzIFRlc3RGbXdrIHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgICAgICAgICAgICAgCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgICAgbmV3IFRlc3RBdHRyaWJ1dGVTZXQoKS5ydW4oYXJncyk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKworICAgICAgICBmaW5hbCBPYmplY3QgZWxlbTEgPSBuZXcgT2JqZWN0KCk7CisgICAgICAgIGZpbmFsIE9iamVjdCBlbGVtMiA9IG5ldyBGbG9hdCg0KTsKKyAgICAgICAgZmluYWwgT2JqZWN0IGVsZW0zID0gIlN0cmluZyI7CisgICAgICAgIGZpbmFsIE9iamVjdCBlbGVtNCA9IEJvb2xlYW4uRkFMU0U7CisKKyAgICAgICAgQXR0cmlidXRlU2V0IHNldDEgPSBuZXcgQXR0cmlidXRlU2V0KG5ldyBPYmplY3RbXSB7ZWxlbTEsIGVsZW0yLCBlbGVtM30pOworICAgICAgICBpZiAoc2V0MS5zaXplKCkgIT0gMykgeworICAgICAgICAgICAgZXJybG4oIlNpemUgaXMgd3JvbmcuIik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc2V0MS5jb250YWlucyhlbGVtNCkpeworICAgICAgICAgICAgZXJybG4oIlNldCBjb250ZW50cyBhcmUgd3JvbmcuIik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXNldDEuY29udGFpbnMoZWxlbTEpKSB7CisgICAgICAgICAgICBlcnJsbigiU2V0IGNvbnRlbnRzIGFyZSB3cm9uZy4iKTsKKyAgICAgICAgfQorCisgICAgICAgIEF0dHJpYnV0ZVNldCBzZXQyID0gbmV3IEF0dHJpYnV0ZVNldChlbGVtNCk7CisKKyAgICAgICAgaWYgKHNldDIuc2l6ZSgpICE9IDEpIHsKKyAgICAgICAgICAgIGVycmxuKCJTaXplIGlzIHdyb25nLiIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFzZXQyLmNvbnRhaW5zKGVsZW00KSl7CisgICAgICAgICAgICBlcnJsbigiU2V0IGNvbnRlbnRzIGFyZSB3cm9uZy4iKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzZXQyLmNvbnRhaW5zKGVsZW0xKSkgeworICAgICAgICAgICAgZXJybG4oIlNldCBjb250ZW50cyBhcmUgd3JvbmcuIik7CisgICAgICAgIH0KKworICAgICAgICBFbnVtZXJhdGlvbiBpdGVyID0gc2V0Mi5lbGVtZW50cygpOworICAgICAgICBpZiAoIWl0ZXIubmV4dEVsZW1lbnQoKS5lcXVhbHMoZWxlbTQpKSB7CisgICAgICAgICAgICBlcnJsbigiSW52YWxpZCBvYmplY3QgaW4gaXRlcmF0b3IuIik7CisgICAgICAgIH0KKworICAgICAgICBBdHRyaWJ1dGVTZXQgdW5pb24gPSBzZXQyLnVuaW9uV2l0aChzZXQxKTsKKyAgICAgICAgaWYgKCFzZXQxLnVuaW9uV2l0aChzZXQyKS5lcXVhbHModW5pb24pKSB7CisgICAgICAgICAgICBlcnJsbigidW5pb25XaXRoIGlzIG5vdCBjb21tdXRhdGl2ZS4iKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdW5pb24uY29udGFpbnMoZWxlbTEpIHx8ICF1bmlvbi5jb250YWlucyhlbGVtNCkpIHsKKyAgICAgICAgICAgIGVycmxuKCJTZXQgY29udGVudHMgYXJlIHdyb25nLiIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFzZXQxLmFkZEVsZW1lbnQoZWxlbTQpLmVxdWFscyh1bmlvbikpIHsKKyAgICAgICAgICAgIGVycmxuKCJhZGRFbGVtZW50IGlzIHdyb25nLiIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF1bmlvbi5pbnRlcnNlY3RXaXRoKHNldDEpLmVxdWFscyhzZXQxKSkgeworICAgICAgICAgICAgZXJybG4oImludGVyc2VjdFdpdGggaXMgd3JvbmcuIik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXVuaW9uLnN1YnRyYWN0KHNldDEpLmVxdWFscyhzZXQyKSkgeworICAgICAgICAgICAgZXJybG4oInN1YnRyYWN0IGlzIHdyb25nLiIpOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3Rlc3QvdW5pdC9UZXN0Rm9ybWF0dGVyLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXN0L3VuaXQvVGVzdEZvcm1hdHRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmY1MjAyMTIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXN0L3VuaXQvVGVzdEZvcm1hdHRlci5qYXZhCkBAIC0wLDAgKzEsMjUwIEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBUZXN0Rm9ybWF0dGVyLmphdmEsdiAkICRSZXZpc2lvbjogMS4zICQgJERhdGU6IDIwMDIvMDIvMTYgMDM6MDY6NDAgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXN0LnVuaXQ7CisKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYudGVzdC5UZXN0Rm13azsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZU1hcDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRsYXlvdXQuYXR0cmlidXRlcy5UZXh0QXR0cmlidXRlOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NVGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuTUNvbnN0VGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuU3RhbmRhcmRUYWJSdWxlcjsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuU3R5bGVkVGV4dDsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGZvcm1hdC5UZXh0T2Zmc2V0OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGZvcm1hdC5NRm9ybWF0dGVyOworCitpbXBvcnQgamF2YS5hd3QuQ29sb3I7CitpbXBvcnQgamF2YS5hd3QuRnJhbWU7CitpbXBvcnQgamF2YS5hd3QuR3JhcGhpY3M7CitpbXBvcnQgamF2YS5hd3QuSW1hZ2U7CitpbXBvcnQgamF2YS5hd3QuUG9pbnQ7CitpbXBvcnQgamF2YS5hd3QuUmVjdGFuZ2xlOworaW1wb3J0IGphdmEuYXd0LlRvb2xraXQ7CitpbXBvcnQgamF2YS5hd3QuaW1hZ2UuQnVmZmVyZWRJbWFnZTsKKworaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7CisKK3B1YmxpYyBmaW5hbCBjbGFzcyBUZXN0Rm9ybWF0dGVyIGV4dGVuZHMgVGVzdEZtd2sgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgICBuZXcgVGVzdEZvcm1hdHRlcigpLnJ1bihhcmdzKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBQb2ludCBPUklHSU4gPSBuZXcgUG9pbnQoMCwgMCk7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBBdHRyaWJ1dGVNYXAgREVGQVVMVFM7CisgICAgc3RhdGljIHsKKyAgICAgICAgZmluYWwgRmxvYXQgZmxvYXRaZXJvID0gbmV3IEZsb2F0KDAuMGYpOworCisgICAgICAgIEhhc2h0YWJsZSBkZWZhdWx0cyA9IG5ldyBIYXNodGFibGUoKTsKKyAgICAgICAgZGVmYXVsdHMucHV0KFRleHRBdHRyaWJ1dGUuRkFNSUxZLCAiU2VyaWYiKTsKKyAgICAgICAgZGVmYXVsdHMucHV0KFRleHRBdHRyaWJ1dGUuV0VJR0hULCBuZXcgRmxvYXQoMS4wZikpOworICAgICAgICBkZWZhdWx0cy5wdXQoVGV4dEF0dHJpYnV0ZS5QT1NUVVJFLCBmbG9hdFplcm8pOworICAgICAgICBkZWZhdWx0cy5wdXQoVGV4dEF0dHJpYnV0ZS5TSVpFLCBuZXcgRmxvYXQoMTguMGYpKTsKKyAgICAgICAgZGVmYXVsdHMucHV0KFRleHRBdHRyaWJ1dGUuU1VQRVJTQ1JJUFQsIG5ldyBJbnRlZ2VyKDApKTsKKyAgICAgICAgZGVmYXVsdHMucHV0KFRleHRBdHRyaWJ1dGUuRk9SRUdST1VORCwgQ29sb3IuYmxhY2spOworICAgICAgICBkZWZhdWx0cy5wdXQoVGV4dEF0dHJpYnV0ZS5VTkRFUkxJTkUsIG5ldyBJbnRlZ2VyKC0xKSk7CisgICAgICAgIGRlZmF1bHRzLnB1dChUZXh0QXR0cmlidXRlLlNUUklLRVRIUk9VR0gsIEJvb2xlYW4uRkFMU0UpOworCisgICAgICAgIGRlZmF1bHRzLnB1dChUZXh0QXR0cmlidXRlLkVYVFJBX0xJTkVfU1BBQ0lORywgZmxvYXRaZXJvKTsKKyAgICAgICAgZGVmYXVsdHMucHV0KFRleHRBdHRyaWJ1dGUuRklSU1RfTElORV9JTkRFTlQsIGZsb2F0WmVybyk7CisgICAgICAgIGRlZmF1bHRzLnB1dChUZXh0QXR0cmlidXRlLk1JTl9MSU5FX1NQQUNJTkcsIGZsb2F0WmVybyk7CisgICAgICAgIGRlZmF1bHRzLnB1dChUZXh0QXR0cmlidXRlLkxJTkVfRkxVU0gsIFRleHRBdHRyaWJ1dGUuRkxVU0hfTEVBRElORyk7CisgICAgICAgIGRlZmF1bHRzLnB1dChUZXh0QXR0cmlidXRlLkxFQURJTkdfTUFSR0lOLCBmbG9hdFplcm8pOworICAgICAgICBkZWZhdWx0cy5wdXQoVGV4dEF0dHJpYnV0ZS5UUkFJTElOR19NQVJHSU4sIGZsb2F0WmVybyk7CisgICAgICAgIGRlZmF1bHRzLnB1dChUZXh0QXR0cmlidXRlLlRBQl9SVUxFUiwgbmV3IFN0YW5kYXJkVGFiUnVsZXIoKSk7CisKKyAgICAgICAgREVGQVVMVFMgPSBuZXcgQXR0cmlidXRlTWFwKGRlZmF1bHRzKTsKKyAgICB9CisgICAgCisgICAgLy8gYXJnIHRvIHRlc3RMaW5lRXhjZXB0aW9ucworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBVTktOT1dOID0gLTE7CisKKyAgICBwcml2YXRlIEdyYXBoaWNzIGZHcmFwaGljczsKKworICAgIHB1YmxpYyBUZXN0Rm9ybWF0dGVyKCkgeworCisgICAgICAgIGZHcmFwaGljcyA9IG5ldyBCdWZmZXJlZEltYWdlKDEwMCwgMTAwLCBCdWZmZXJlZEltYWdlLlRZUEVfM0JZVEVfQkdSKS5nZXRHcmFwaGljcygpOworICAgICAgICAKKyAgICAgICAgLy9KREsgMS4xOgorICAgICAgICAvL0ZyYW1lIGYgPSBuZXcgRnJhbWUoKTsKKyAgICAgICAgLy9mLnNob3coKTsKKyAgICAgICAgLy9mR3JhcGhpY3MgPSBmLmdldEdyYXBoaWNzKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBTdHJpbmcgZml2ZUxpbmVzID0gImFcbmJcbmNcbmRcbmUiOworICAgIHByaXZhdGUgU3RyaW5nIHR3ZWx2ZUxpbmVzID0gZml2ZUxpbmVzICsgIlxuIiArIGZpdmVMaW5lcyArICJcbmZcbiI7CisgICAgQXR0cmlidXRlTWFwIFBMQUlOID0gQXR0cmlidXRlTWFwLkVNUFRZX0FUVFJJQlVURV9NQVA7CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworCisgICAgICAgIE1Db25zdFRleHQgdGV4dCA9IG5ldyBTdHlsZWRUZXh0KGZpdmVMaW5lcywgUExBSU4pOworICAgICAgICBfdGVzdExpbmVFeGNlcHRpb25zKG1ha2VGb3JtYXR0ZXIodGV4dCwgMTAwLCB0cnVlKSwgNSk7CisgICAgICAgIF90ZXN0TGluZUFjY2VzcyhtYWtlRm9ybWF0dGVyKHRleHQsIDEwMCwgdHJ1ZSksIDUpOworCisgICAgICAgIHRleHQgPSBuZXcgU3R5bGVkVGV4dCh0d2VsdmVMaW5lcywgUExBSU4pOworICAgICAgICBfdGVzdExpbmVFeGNlcHRpb25zKG1ha2VGb3JtYXR0ZXIodGV4dCwgMywgZmFsc2UpLCAxMik7CisgICAgICAgIF90ZXN0TGluZUFjY2VzcyhtYWtlRm9ybWF0dGVyKHRleHQsIDEwMCwgdHJ1ZSksIDEyKTsKKworICAgICAgICBfdGVzdFdpdGhNb2RpZmljYXRpb24oKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgX3Rlc3RXaXRoTW9kaWZpY2F0aW9uKCkgeworCisgICAgICAgIE1UZXh0IHRleHQgPSBuZXcgU3R5bGVkVGV4dChmaXZlTGluZXMsIFBMQUlOKTsKKyAgICAgICAgTUZvcm1hdHRlciBmb3JtYXR0ZXIgPSBtYWtlRm9ybWF0dGVyKHRleHQsIDEwMCwgdHJ1ZSk7CisgICAgICAgIFJlY3RhbmdsZSB2aWV3UmVjdCA9IG5ldyBSZWN0YW5nbGUoMCwgMCwgMTAwLCBJbnRlZ2VyLk1BWF9WQUxVRSk7CisKKyAgICAgICAgZm9ybWF0dGVyLnN0b3BCYWNrZ3JvdW5kRm9ybWF0dGluZygpOworICAgICAgICB0ZXh0LmFwcGVuZChuZXcgU3R5bGVkVGV4dCgiXG4iLCBQTEFJTikpOworICAgICAgICBmb3JtYXR0ZXIudXBkYXRlRm9ybWF0KHRleHQubGVuZ3RoKCktMSwgMSwgdmlld1JlY3QsIE9SSUdJTik7CisKKyAgICAgICAgX3Rlc3RMaW5lQWNjZXNzKGZvcm1hdHRlciwgNik7CisKKyAgICAgICAgZm9ybWF0dGVyLnN0b3BCYWNrZ3JvdW5kRm9ybWF0dGluZygpOworICAgICAgICB0ZXh0LmFwcGVuZChuZXcgU3R5bGVkVGV4dCgiYWQiLCBQTEFJTikpOworICAgICAgICBmb3JtYXR0ZXIudXBkYXRlRm9ybWF0KHRleHQubGVuZ3RoKCktMiwgMiwgdmlld1JlY3QsIE9SSUdJTik7CisgICAgICAgIF90ZXN0TGluZUFjY2Vzcyhmb3JtYXR0ZXIsIDYpOworICAgICAgICBfdGVzdExpbmVFeGNlcHRpb25zKGZvcm1hdHRlciwgNik7CisKKyAgICAgICAgZm9ybWF0dGVyLnN0b3BCYWNrZ3JvdW5kRm9ybWF0dGluZygpOworICAgICAgICB0ZXh0LnJlbW92ZSgwLCAxKTsKKyAgICAgICAgZm9ybWF0dGVyLnVwZGF0ZUZvcm1hdCgwLCAwLCB2aWV3UmVjdCwgT1JJR0lOKTsKKyAgICAgICAgX3Rlc3RMaW5lQWNjZXNzKGZvcm1hdHRlciwgNik7CisgICAgICAgIF90ZXN0TGluZUV4Y2VwdGlvbnMoZm9ybWF0dGVyLCA2KTsKKyAgICB9CisKKworICAgIHByaXZhdGUgTUZvcm1hdHRlciBtYWtlRm9ybWF0dGVyKE1Db25zdFRleHQgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZUJvdW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gd3JhcCkgeworCisgICAgICAgIHJldHVybiBNRm9ybWF0dGVyLmNyZWF0ZUZvcm1hdHRlcih0ZXh0LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERFRkFVTFRTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZUJvdW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JhcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZHcmFwaGljcyk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIF90ZXN0TGluZUV4Y2VwdGlvbnMoTUZvcm1hdHRlciBmb3JtYXR0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtTGluZXMpIHsKKworICAgICAgICBpZiAobnVtTGluZXMgPT0gVU5LTk9XTikgeworICAgICAgICAgICAgbnVtTGluZXMgPSBmb3JtYXR0ZXIuZ2V0TGluZUNvdW50KCk7CisgICAgICAgIH0KKworICAgICAgICBib29sZWFuIGNhdWdodCA9IGZhbHNlOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmb3JtYXR0ZXIubGluZVJhbmdlTG93KG51bUxpbmVzKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgY2F1Z2h0ID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghY2F1Z2h0KSB7CisgICAgICAgICAgICBlcnJsbigiRGlkbid0IGdldCBleGNlcHRpb24iKTsKKyAgICAgICAgfQorICAgICAgICBjYXVnaHQgPSBmYWxzZTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgZm9ybWF0dGVyLmxpbmVSYW5nZUxpbWl0KG51bUxpbmVzKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgY2F1Z2h0ID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghY2F1Z2h0KSB7CisgICAgICAgICAgICBlcnJsbigiRGlkbid0IGdldCBleGNlcHRpb24iKTsKKyAgICAgICAgfQorICAgICAgICBjYXVnaHQgPSBmYWxzZTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgZm9ybWF0dGVyLmxpbmVHcmFwaGljU3RhcnQobnVtTGluZXMrMSk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2goSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGNhdWdodCA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWNhdWdodCkgeworICAgICAgICAgICAgZXJybG4oIkRpZG4ndCBnZXQgZXhjZXB0aW9uIik7CisgICAgICAgIH0KKyAgICAgICAgY2F1Z2h0ID0gZmFsc2U7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIF90ZXN0TGluZUFjY2VzcyhNRm9ybWF0dGVyIGZvcm1hdHRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW1MaW5lcykgeworCisgICAgICAgIGlmIChudW1MaW5lcyA9PSBVTktOT1dOKSB7CisgICAgICAgICAgICBudW1MaW5lcyA9IGZvcm1hdHRlci5nZXRMaW5lQ291bnQoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChmb3JtYXR0ZXIubGluZUdyYXBoaWNTdGFydCgwKSAhPSAwKSB7CisgICAgICAgICAgICBlcnJsbigiTGluZSAwIGRvZXNuJ3Qgc3RhcnQgYXQgaGVpZ2h0IDAiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZm9ybWF0dGVyLmxpbmVSYW5nZUxvdygwKSAhPSAwKSB7CisgICAgICAgICAgICBlcnJsbigiTGluZSAwIGRvZXNuJ3Qgc3RhcnQgYXQgY2hhcmFjdGVyIDAiKTsKKyAgICAgICAgfQorCisgICAgICAgIGludCBsYXN0TGltaXQgPSBmb3JtYXR0ZXIubGluZVJhbmdlTGltaXQoMCk7CisgICAgICAgIGZpbmFsIGludCBsaW5lQm91bmQgPSBmb3JtYXR0ZXIubGluZUJvdW5kKCk7CisgICAgICAgIGludFtdIGhpdFggPSBuZXcgaW50W10geyAtMSwgMSwgbGluZUJvdW5kICsgMiB9OworCisgICAgICAgIFRleHRPZmZzZXQgb2Zmc2V0ID0gbmV3IFRleHRPZmZzZXQoKTsKKworICAgICAgICBmb3IgKGludCBpPTE7IGkgPCBudW1MaW5lczsgaSsrKSB7CisKKyAgICAgICAgICAgIGludCBoZWlnaHQgPSBmb3JtYXR0ZXIubGluZUdyYXBoaWNTdGFydChpKTsKKyAgICAgICAgICAgIGlmIChsYXN0TGltaXQgIT0gZm9ybWF0dGVyLmxpbmVSYW5nZUxvdyhpKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJsYXN0TGluZSBsaW1pdCBpcyBub3QgY3VycmVudCBsaW5lIHN0YXJ0Iik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbnQgbGltaXQgPSBmb3JtYXR0ZXIubGluZVJhbmdlTGltaXQoaSk7CisKKyAgICAgICAgICAgIGlmIChsaW1pdCA8IGxhc3RMaW1pdCB8fCAobGltaXQgPT0gbGFzdExpbWl0ICYmIGkgIT0gbnVtTGluZXMtMSkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigibGluZSBoYXMgbmVnYXRpdmUgb3IgMCBsZW5ndGgiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaW50IG5leHRIZWlnaHQgPSBmb3JtYXR0ZXIubGluZUdyYXBoaWNTdGFydChpKzEpOworICAgICAgICAgICAgaWYgKG5leHRIZWlnaHQgPD0gaGVpZ2h0KSB7CisgICAgICAgICAgICAgICAgZXJybG4oIjAtaGVpZ2h0IGxpbmUiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGludCBpbmNBbW91bnQgPSBNYXRoLm1heCgobmV4dEhlaWdodC1oZWlnaHQpLzQsIDEpOworICAgICAgICAgICAgZm9yIChpbnQgaGl0WSA9IGhlaWdodDsgaGl0WSA8IG5leHRIZWlnaHQ7IGhpdFkgKz0gaW5jQW1vdW50KSB7CisKKyAgICAgICAgICAgICAgICBpZiAoZm9ybWF0dGVyLmxpbmVBdEhlaWdodChoaXRZKSAhPSBpKSB7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJsaW5lQXRIZWlnaHQgaXMgd3JvbmciKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBmb3IgKGludCBqPTA7IGogPCBoaXRYLmxlbmd0aDsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IGZvcm1hdHRlci5wb2ludFRvVGV4dE9mZnNldChvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGl0WFtqXSwgaGl0WSwgT1JJR0lOLCBudWxsLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChvZmZzZXQuZk9mZnNldCA8IGxhc3RMaW1pdCB8fCBvZmZzZXQuZk9mZnNldCA+IGxpbWl0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbigiSW5jb25zaXN0ZW50IG9mZnNldCBmcm9tIHBvaW50VG9UZXh0T2Zmc2V0Iik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgLy9pZiAoZm9ybWF0dGVyLmxpbmVDb250YWluaW5nKG9mZnNldCkgIT0gaSkgeworICAgICAgICAgICAgICAgICAgICAvLyAgICBpbnQgZGVidWcgPSBmb3JtYXR0ZXIubGluZUNvbnRhaW5pbmcob2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgICAgLy8gICAgZXJybG4oImxpbmVDb250YWluaW5nIGlzIGluY29ycmVjdCIpOworICAgICAgICAgICAgICAgICAgICAvL30KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGxhc3RMaW1pdCA9IGxpbWl0OworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3Rlc3QvdW5pdC9UZXN0TVRleHQuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3Rlc3QvdW5pdC9UZXN0TVRleHQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lOTFiZmY4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGVzdC91bml0L1Rlc3RNVGV4dC5qYXZhCkBAIC0wLDAgKzEsNzIxIEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBUZXN0TVRleHQuamF2YSx2ICQgJFJldmlzaW9uOiAxLjQgJCAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNjo0MCAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRlc3QudW5pdDsKKworaW1wb3J0IGNvbS5pYm0uaWN1LmRldi50ZXN0LlRlc3RGbXdrOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlTWFwOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5hdHRyaWJ1dGVzLlRleHRBdHRyaWJ1dGU7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuTUNvbnN0VGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuTVRleHQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0LlN0eWxlZFRleHQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0LlN0eWxlTW9kaWZpZXI7CisKK2ltcG9ydCBqYXZhLnRleHQuQ2hhcmFjdGVySXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLlJhbmRvbTsKKworaW1wb3J0IGphdmEuaW8uKjsKKworcHVibGljIGNsYXNzIFRlc3RNVGV4dCBleHRlbmRzIFRlc3RGbXdrIHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgICAgbmV3IFRlc3RNVGV4dCgpLnJ1bihhcmdzKTsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFRFU1RfSVRFUkFUSU9OUyA9IDUwMDA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNUWUxFX1RFU1RfSVRFUkFUSU9OUyA9IDUwMDA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBSQU5EX1NFRUQgPSA1OTg0MzY7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTk9UX0lOX01PTktFWV9URVNUID0gLTUwMDA7CisgICAgcHJpdmF0ZSBpbnQgdGVzdEl0ZXJhdGlvbiA9IE5PVF9JTl9NT05LRVlfVEVTVDsKKyAgICBwcml2YXRlIGludCB0aGVDYXNlID0gTk9UX0lOX01PTktFWV9URVNUOworICAgIAorICAgIHByaXZhdGUgc3RhdGljIFN0eWxlTW9kaWZpZXIgY3JlYXRlTWludXNNb2RpZmllcihmaW5hbCBPYmplY3QgYXR0cikgeworICAgICAgICByZXR1cm4gbmV3IFN0eWxlTW9kaWZpZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgQXR0cmlidXRlTWFwIG1vZGlmeVN0eWxlKEF0dHJpYnV0ZU1hcCBzdHlsZSkgeworICAgICAgICAgICAgICAgIHJldHVybiBzdHlsZS5yZW1vdmVBdHRyaWJ1dGUoYXR0cik7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKyAgICAKKyAgICAgICAgc2ltcGxlVGVzdCgpOworICAgICAgICBzdHlsZVRlc3QoKTsKKyAgICAgICAgbW9ua2V5VGVzdCh0cnVlKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgc2ltcGxlVGVzdCgpIHsKKworICAgICAgICBBdHRyaWJ1dGVNYXAgYm9sZFN0eWxlID0gbmV3IEF0dHJpYnV0ZU1hcChUZXh0QXR0cmlidXRlLldFSUdIVCwgVGV4dEF0dHJpYnV0ZS5XRUlHSFRfQk9MRCk7CisgICAgICAgIEF0dHJpYnV0ZU1hcCBpdGFsaWNTdHlsZSA9IG5ldyBBdHRyaWJ1dGVNYXAoVGV4dEF0dHJpYnV0ZS5QT1NUVVJFLCBUZXh0QXR0cmlidXRlLlBPU1RVUkVfT0JMSVFVRSk7CisKKyAgICAgICAgTUNvbnN0VGV4dCBhbGxCb2xkID0gbmV3IFN0eWxlZFRleHQoImJiYmJiIiwgYm9sZFN0eWxlKTsKKyAgICAgICAgTUNvbnN0VGV4dCBhbGxJdGFsaWMgPSBuZXcgU3R5bGVkVGV4dCgiaWlpIiwgaXRhbGljU3R5bGUpOworICAgICAgICBNQ29uc3RUZXh0IHBsYWluID0gbmV3IFN0eWxlZFRleHQoInBwcHBwcCIsIEF0dHJpYnV0ZU1hcC5FTVBUWV9BVFRSSUJVVEVfTUFQKTsKKworICAgICAgICB7CisgICAgICAgICAgICBNVGV4dCBidWYgPSBuZXcgU3R5bGVkVGV4dCgpOworICAgICAgICAgICAgaW50IHRzID0gYnVmLmdldFRpbWVTdGFtcCgpOworICAgICAgICAgICAgYnVmLmFwcGVuZChhbGxCb2xkKTsKKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQoYWxsSXRhbGljKTsKKworICAgICAgICAgICAgaWYgKHRzID09IGJ1Zi5nZXRUaW1lU3RhbXAoKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJUaW1lIHN0YW1wIG5vdCBpbmNyZW1lbnRlZCIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBzaG91bGQgYmUgYmJiYmJpaWkgbm93CisKKyAgICAgICAgICAgIGlmIChidWYubGVuZ3RoKCkgIT0gYWxsQm9sZC5sZW5ndGgoKSArIGFsbEl0YWxpYy5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJMZW5ndGggaXMgd3JvbmcuIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IGJ1Zi5sZW5ndGgoKTsgaSsrKSB7CisKKyAgICAgICAgICAgICAgICBjaGFyIHJpZ2h0Q2hhcjsKKyAgICAgICAgICAgICAgICBBdHRyaWJ1dGVNYXAgcmlnaHRTdHlsZTsKKworICAgICAgICAgICAgICAgIGlmIChpIDwgYWxsQm9sZC5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgICAgICByaWdodENoYXIgPSBhbGxCb2xkLmF0KDApOworICAgICAgICAgICAgICAgICAgICByaWdodFN0eWxlID0gYm9sZFN0eWxlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmlnaHRDaGFyID0gYWxsSXRhbGljLmF0KDApOworICAgICAgICAgICAgICAgICAgICByaWdodFN0eWxlID0gaXRhbGljU3R5bGU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGJ1Zi5hdChpKSAhPSByaWdodENoYXIpIHsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIkNoYXJhY3RlciBpcyB3cm9uZy4iKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKCFidWYuY2hhcmFjdGVyU3R5bGVBdChpKS5lcXVhbHMocmlnaHRTdHlsZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIlN0eWxlIGlzIHdyb25nLiIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaW50IHBvcyA9IDA7CisKKyAgICAgICAgICAgIGlmICghYnVmLmNoYXJhY3RlclN0eWxlQXQocG9zKS5lcXVhbHMoYm9sZFN0eWxlKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGaXJzdCBzdHlsZSBpcyB3cm9uZy4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChidWYuY2hhcmFjdGVyU3R5bGVMaW1pdChwb3MpICE9IGFsbEJvbGQubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiUnVuIGxlbmd0aCBpcyB3cm9uZy4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcG9zID0gYWxsQm9sZC5sZW5ndGgoKTsKKworICAgICAgICAgICAgaWYgKCFidWYuY2hhcmFjdGVyU3R5bGVBdChwb3MpLmVxdWFscyhpdGFsaWNTdHlsZSkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiU2Vjb25kIHN0eWxlIGlzIHdyb25nLiIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGJ1Zi5jaGFyYWN0ZXJTdHlsZUxpbWl0KHBvcykgIT0gYnVmLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIlJ1biBsZW5ndGggaXMgd3JvbmcuIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBidWYucmVzZXREYW1hZ2VkUmFuZ2UoKTsKKyAgICAgICAgICAgICAgICBpbnQgb2xkTGVuZ3RoID0gYnVmLmxlbmd0aCgpOworICAgICAgICAgICAgICAgIGJ1Zi5yZXBsYWNlKGJ1Zi5sZW5ndGgoKSwgYnVmLmxlbmd0aCgpLCBhbGxCb2xkLCAwLCBhbGxCb2xkLmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICAvLyBiYmJiYmlpaWJiYmJiCisKKyAgICAgICAgICAgICAgICBpZiAoYnVmLmRhbWFnZWRSYW5nZVN0YXJ0KCkgIT0gb2xkTGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJEYW1hZ2VkIHJhbmdlIHN0YXJ0IGlzIGluY29ycmVjdCIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoYnVmLmRhbWFnZWRSYW5nZUxpbWl0KCkgIT0gYnVmLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJEYW1hZ2VkIHJhbmdlIGxpbWl0IGlzIGluY29ycmVjdCIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaW50IHN0YXJ0ID0gYWxsQm9sZC5sZW5ndGgoKTsKKyAgICAgICAgICAgIGludCBsaW1pdCA9IHN0YXJ0ICsgYWxsSXRhbGljLmxlbmd0aCgpOworICAgICAgICAgICAgYnVmLnJlbW92ZShzdGFydCwgbGltaXQpOworICAgICAgICAgICAgLy8gYmJiYmJiYmJiYgorCisgICAgICAgICAgICBpZiAoYnVmLmxlbmd0aCgpICE9IDIgKiBhbGxCb2xkLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIlRleHQgc2hvdWxkIGJlIHR3aWNlIHRoZSBsZW5ndGggb2YgYm9sZCB0ZXh0LiIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwb3MgPSBidWYubGVuZ3RoKCkgLyAyOworICAgICAgICAgICAgaWYgKGJ1Zi5jaGFyYWN0ZXJTdHlsZVN0YXJ0KHBvcykgIT0gMCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zi5jaGFyYWN0ZXJTdHlsZUxpbWl0KHBvcykgIT0gYnVmLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIlJ1biByYW5nZSBpcyB3cm9uZy4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghYnVmLmNoYXJhY3RlclN0eWxlQXQocG9zKS5lcXVhbHMoYm9sZFN0eWxlKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJSdW4gc3R5bGUgaXMgd3JvbmcuIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRzID0gYnVmLmdldFRpbWVTdGFtcCgpOworICAgICAgICAgICAgQ2hhcmFjdGVySXRlcmF0b3IgY0l0ZXIgPSBidWYuY3JlYXRlQ2hhcmFjdGVySXRlcmF0b3IoKTsKKyAgICAgICAgICAgIGZvciAoY2hhciBjaCA9IGNJdGVyLmZpcnN0KCk7IGNoICE9IGNJdGVyLkRPTkU7IGNoID0gY0l0ZXIubmV4dCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGNoICE9IGFsbEJvbGQuYXQoMCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIkNoYXJhY3RlciBpcyB3cm9uZy4iKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh0cyAhPSBidWYuZ2V0VGltZVN0YW1wKCkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiVGltZSBzdGFtcCBzaG91bGQgbm90IGhhdmUgY2hhbmdlZCIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBidWYucmVwbGFjZSgwLCAxLCBwbGFpbiwgMCwgcGxhaW4ubGVuZ3RoKCkpOworCisgICAgICAgICAgICBpZiAodHMgPT0gYnVmLmdldFRpbWVTdGFtcCgpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIlRpbWUgc3RhbXAgbm90IGluY3JlbWVudGVkIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIHBwcHBwcGJiYmJiYmJiYgorICAgICAgICAgICAgYnVmLnJlcGxhY2UocGxhaW4ubGVuZ3RoKCksIGJ1Zi5sZW5ndGgoKSwgYWxsSXRhbGljLCAwLCBhbGxJdGFsaWMubGVuZ3RoKCkpOworICAgICAgICAgICAgLy8gcHBwcHBwaWlpCisKKyAgICAgICAgICAgIGlmIChidWYubGVuZ3RoKCkgIT0gYWxsSXRhbGljLmxlbmd0aCgpK3BsYWluLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkxlbmd0aCBpcyB3cm9uZy4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcG9zID0gMDsKKyAgICAgICAgICAgIGlmIChidWYuY2hhcmFjdGVyU3R5bGVMaW1pdChwb3MpICE9IHBsYWluLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIlJ1biBsaW1pdCBpcyB3cm9uZy4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcG9zID0gcGxhaW4ubGVuZ3RoKCk7CisgICAgICAgICAgICBpZiAoYnVmLmNoYXJhY3RlclN0eWxlTGltaXQocG9zKSAhPSBidWYubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiUnVuIGxpbWl0IGlzIHdyb25nLiIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBidWYucmVwbGFjZShwbGFpbi5sZW5ndGgoKSwgcGxhaW4ubGVuZ3RoKCksIGFsbEJvbGQsIDAsIGFsbEJvbGQubGVuZ3RoKCkpOworICAgICAgICAgICAgLy8gcHBwcHBwYmJiYmJpaWkKKworICAgICAgICAgICAgQXR0cmlidXRlTWFwIHN0ID0gYnVmLmNoYXJhY3RlclN0eWxlQXQoMSk7CisgICAgICAgICAgICBpZiAoIXN0LmVxdWFscyhBdHRyaWJ1dGVNYXAuRU1QVFlfQVRUUklCVVRFX01BUCkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiU3R5bGUgaXMgd3JvbmcuIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYnVmLmNoYXJhY3RlclN0eWxlU3RhcnQoMSkgIT0gMCB8fCBidWYuY2hhcmFjdGVyU3R5bGVMaW1pdCgxKSAhPSBwbGFpbi5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJTdHlsZSBzdGFydCBpcyB3cm9uZy4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3QgPSBidWYuY2hhcmFjdGVyU3R5bGVBdChidWYubGVuZ3RoKCkgLSAxKTsKKyAgICAgICAgICAgIGlmICghc3QuZXF1YWxzKGl0YWxpY1N0eWxlKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJTdHlsZSBpcyB3cm9uZy4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChidWYuY2hhcmFjdGVyU3R5bGVTdGFydChidWYubGVuZ3RoKCkgLSAxKSAhPSBwbGFpbi5sZW5ndGgoKSthbGxCb2xkLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIlN0eWxlIHN0YXJ0IGlzIHdyb25nLiIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoYnVmLmNoYXJhY3RlclN0eWxlTGltaXQoYnVmLmxlbmd0aCgpIC0gMSkgIT0gYnVmLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIlN0eWxlIGxpbWl0IGlzIHdyb25nLiIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgaW50IHJhbmRJbnQoUmFuZG9tIHJhbmQsIGludCBsaW1pdCkgeworCisgICAgICAgIHJldHVybiByYW5kSW50KHJhbmQsIDAsIGxpbWl0KTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBpbnQgcmFuZEludChSYW5kb20gcmFuZCwgaW50IHN0YXJ0LCBpbnQgbGltaXQpIHsKKworICAgICAgICBpZiAoc3RhcnQgPiBsaW1pdCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiUmFuZ2UgbGVuZ3RoIGlzIG5lZ2F0aXZlLiIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHN0YXJ0ID09IGxpbWl0KSB7CisgICAgICAgICAgICByZXR1cm4gc3RhcnQ7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gc3RhcnQgKyAoTWF0aC5hYnMocmFuZC5uZXh0SW50KCkpJShsaW1pdC1zdGFydCkpIDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzdHlsZVRlc3QoKSB7CisKKyAgICAgICAgTVRleHQgdGV4dCA9IG5ldyBTdHlsZWRUZXh0KCIwMTIzNDU2Nzg5IiwgQXR0cmlidXRlTWFwLkVNUFRZX0FUVFJJQlVURV9NQVApOworCisgICAgICAgIEF0dHJpYnV0ZU1hcFtdIHN0eWxlcyA9IG5ldyBBdHRyaWJ1dGVNYXBbdGV4dC5sZW5ndGgoKV07CisgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IHN0eWxlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgc3R5bGVzW2ldID0gQXR0cmlidXRlTWFwLkVNUFRZX0FUVFJJQlVURV9NQVA7CisgICAgICAgIH0KKyAgICAgICAgQXR0cmlidXRlTWFwW10gb2xkU3R5bGVzID0gbmV3IEF0dHJpYnV0ZU1hcFtzdHlsZXMubGVuZ3RoXTsKKyAgICAgICAgU3lzdGVtLmFycmF5Y29weShzdHlsZXMsIDAsIG9sZFN0eWxlcywgMCwgc3R5bGVzLmxlbmd0aCk7CisKKyAgICAgICAgQXR0cmlidXRlTWFwIGJpZ1N0eWxlID0gbmV3IEF0dHJpYnV0ZU1hcChUZXh0QXR0cmlidXRlLlVOREVSTElORSwgVGV4dEF0dHJpYnV0ZS5VTkRFUkxJTkVfT04pLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEF0dHJpYnV0ZShUZXh0QXR0cmlidXRlLlNJWkUsIG5ldyBGbG9hdCgyMy4wZikpOworCisgICAgICAgIFN0eWxlTW9kaWZpZXJbXSBtb2RpZmllcnMgPSB7CisgICAgICAgICAgICBTdHlsZU1vZGlmaWVyLmNyZWF0ZVJlcGxhY2VNb2RpZmllcihuZXcgQXR0cmlidXRlTWFwKFRleHRBdHRyaWJ1dGUuV0VJR0hULCBUZXh0QXR0cmlidXRlLldFSUdIVF9CT0xEKSksCisgICAgICAgICAgICBTdHlsZU1vZGlmaWVyLmNyZWF0ZUFkZE1vZGlmaWVyKG5ldyBBdHRyaWJ1dGVNYXAoVGV4dEF0dHJpYnV0ZS5XRUlHSFQsIG5ldyBGbG9hdCgxLjBmKSkpLAorICAgICAgICAgICAgY3JlYXRlTWludXNNb2RpZmllcihUZXh0QXR0cmlidXRlLldFSUdIVCksCisKKyAgICAgICAgICAgIFN0eWxlTW9kaWZpZXIuY3JlYXRlQWRkTW9kaWZpZXIobmV3IEF0dHJpYnV0ZU1hcChUZXh0QXR0cmlidXRlLlBPU1RVUkUsIG5ldyBGbG9hdCgwLjBmKSkpLAorICAgICAgICAgICAgU3R5bGVNb2RpZmllci5jcmVhdGVSZXBsYWNlTW9kaWZpZXIobmV3IEF0dHJpYnV0ZU1hcChUZXh0QXR0cmlidXRlLlBPU1RVUkUsIFRleHRBdHRyaWJ1dGUuUE9TVFVSRV9PQkxJUVVFKSksCisgICAgICAgICAgICBjcmVhdGVNaW51c01vZGlmaWVyKFRleHRBdHRyaWJ1dGUuUE9TVFVSRSksCisKKyAgICAgICAgICAgIFN0eWxlTW9kaWZpZXIuY3JlYXRlQWRkTW9kaWZpZXIoYmlnU3R5bGUpLAorICAgICAgICAgICAgU3R5bGVNb2RpZmllci5jcmVhdGVSZXBsYWNlTW9kaWZpZXIoYmlnU3R5bGUpLAorICAgICAgICAgICAgY3JlYXRlTWludXNNb2RpZmllcihiaWdTdHlsZS5nZXRLZXlTZXQoKSkKKyAgICAgICAgfTsKKworICAgICAgICBSYW5kb20gcmFuZCA9IG5ldyBSYW5kb20oUkFORF9TRUVEKTsKKyAgICAgICAgZmluYWwgaW50IHN0b3BBdCA9IDQ7CisKKyAgICAgICAgZm9yIChpbnQgdGVzdEl0ZXJhdGlvbj0wOyB0ZXN0SXRlcmF0aW9uIDwgU1RZTEVfVEVTVF9JVEVSQVRJT05TICsgMTsgdGVzdEl0ZXJhdGlvbisrKSB7CisKKyAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoc3R5bGVzLCAwLCBvbGRTdHlsZXMsIDAsIHN0eWxlcy5sZW5ndGgpOworCisgICAgICAgICAgICBpbnQgc3RhcnRpbmdBdCA9IEludGVnZXIuTUFYX1ZBTFVFOworICAgICAgICAgICAgaW50IGVuZGluZ0F0ID0gSW50ZWdlci5NSU5fVkFMVUU7CisgICAgICAgICAgICBpbnQgb2xkVHMgPSB0ZXh0LmdldFRpbWVTdGFtcCgpOworCisgICAgICAgICAgICAvLyBoYWNrIHdheSB0byBkbyBhbiBpbnZhcmlhbnQgY2hlY2sgYmVmb3JlIHN0YXJ0aW5nLi4uCisgICAgICAgICAgICBpZiAodGVzdEl0ZXJhdGlvbiAhPSAwKSB7CisgICAgICAgICAgICAgICAgLy8gbW9kaWZ5IHN0eWxlcworICAgICAgICAgICAgICAgIHRleHQucmVzZXREYW1hZ2VkUmFuZ2UoKTsKKyAgICAgICAgICAgICAgICBzdGFydGluZ0F0ID0gcmFuZEludChyYW5kLCBzdHlsZXMubGVuZ3RoKzEpOworICAgICAgICAgICAgICAgIGVuZGluZ0F0ID0gcmFuZEludChyYW5kLCBzdGFydGluZ0F0LCBzdHlsZXMubGVuZ3RoKzEpOworICAgICAgICAgICAgICAgIFN0eWxlTW9kaWZpZXIgbW9kaWZpZXIgPSBtb2RpZmllcnNbcmFuZEludChyYW5kLCBtb2RpZmllcnMubGVuZ3RoKV07CisKKyAgICAgICAgICAgICAgICBpZiAodGVzdEl0ZXJhdGlvbiA9PSBzdG9wQXQpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEl0ZXJhdGlvbiA9IHN0b3BBdDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdGV4dC5tb2RpZnlDaGFyYWN0ZXJTdHlsZXMoc3RhcnRpbmdBdCwgZW5kaW5nQXQsIG1vZGlmaWVyKTsKKworICAgICAgICAgICAgICAgIGZvciAoaW50IGo9c3RhcnRpbmdBdDsgaiA8IGVuZGluZ0F0OyBqKyspIHsKKyAgICAgICAgICAgICAgICAgICAgc3R5bGVzW2pdID0gbW9kaWZpZXIubW9kaWZ5U3R5bGUoc3R5bGVzW2pdKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIGNoZWNrIGludmFyaWFudHMKKyAgICAgICAgICAgIEF0dHJpYnV0ZU1hcCBvbGRTdHlsZSA9IG51bGw7CisgICAgICAgICAgICBpbnQgdGV4dExlbmd0aCA9IHRleHQubGVuZ3RoKCk7CisgICAgICAgICAgICBmb3IgKGludCBydW5TdGFydCA9IDA7IHJ1blN0YXJ0IDwgdGV4dExlbmd0aDspIHsKKworICAgICAgICAgICAgICAgIEF0dHJpYnV0ZU1hcCBjdXJyZW50U3R5bGUgPSB0ZXh0LmNoYXJhY3RlclN0eWxlQXQocnVuU3RhcnQpOworICAgICAgICAgICAgICAgIGludCBydW5MaW1pdCA9IHRleHQuY2hhcmFjdGVyU3R5bGVMaW1pdChydW5TdGFydCk7CisgICAgICAgICAgICAgICAgaWYgKHJ1blN0YXJ0ID49IHJ1bkxpbWl0KSB7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJSdW4gbGVuZ3RoIGlzIG5vdCBwb3NpdGl2ZSIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoY3VycmVudFN0eWxlLmVxdWFscyhvbGRTdHlsZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIlN0eWxlcyBkaWRuJ3QgbWVyZ2UiKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBmb3IgKGludCBwb3M9cnVuU3RhcnQ7IHBvcyA8IHJ1bkxpbWl0OyBwb3MrKykgeworICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVNYXAgY2hhclN0eWxlQXRQb3MgPSB0ZXh0LmNoYXJhY3RlclN0eWxlQXQocG9zKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRTdHlsZSAhPSBjaGFyU3R5bGVBdFBvcykgeworICAgICAgICAgICAgICAgICAgICAgICAgZXJybG4oIkl0ZXJhdG9yIHN0eWxlIGlzIG5vdCBlcXVhbCB0byB0ZXh0IHN0eWxlIGF0ICIgKyBwb3MgKyAiLiIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZU1hcCBleHBlY3RlZCA9IHN0eWxlc1twb3NdOworICAgICAgICAgICAgICAgICAgICBpZiAoIWN1cnJlbnRTdHlsZS5lcXVhbHMoZXhwZWN0ZWQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbigiSXRlcmF0b3Igc3R5bGUgZG9lc24ndCBtYXRjaCBleHBlY3RlZCBzdHlsZSBhdCAiICsgcG9zICsgIi4iKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoISh0ZXh0LmNoYXJhY3RlclN0eWxlU3RhcnQocG9zKSA9PSBydW5TdGFydCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAhKHRleHQuY2hhcmFjdGVyU3R5bGVMaW1pdChwb3MpID09IHJ1bkxpbWl0KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZXJybG4oInN0eWxlIHJ1biBzdGFydCAvIGxpbWl0IGlzIG5vdCBjb25zaXN0ZW50Iik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcnVuU3RhcnQgPSBydW5MaW1pdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh0ZXh0TGVuZ3RoID4gMCkgeworICAgICAgICAgICAgICAgIGlmICh0ZXh0LmNoYXJhY3RlclN0eWxlQXQodGV4dExlbmd0aCkgIT0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LmNoYXJhY3RlclN0eWxlQXQodGV4dExlbmd0aC0xKSkgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigiQ2hhcmFjdGVyIHN0eWxlcyBhdCBlbmQgYXJlbid0IHRoZSBzYW1lIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBjaGVjayBkYW1hZ2VkIHJhbmdlOgorICAgICAgICAgICAgaW50IGRhbWFnZVN0YXJ0ID0gSW50ZWdlci5NQVhfVkFMVUU7CisgICAgICAgICAgICBpbnQgZGFtYWdlTGltaXQgPSBJbnRlZ2VyLk1JTl9WQUxVRTsKKyAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IHRleHRMZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIGlmICghc3R5bGVzW2ldLmVxdWFscyhvbGRTdHlsZXNbaV0pKSB7CisgICAgICAgICAgICAgICAgICAgIGRhbWFnZVN0YXJ0ID0gTWF0aC5taW4oaSwgZGFtYWdlU3RhcnQpOworICAgICAgICAgICAgICAgICAgICBkYW1hZ2VMaW1pdCA9IE1hdGgubWF4KGkrMSwgZGFtYWdlTGltaXQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChkYW1hZ2VTdGFydCAhPSB0ZXh0LmRhbWFnZWRSYW5nZVN0YXJ0KCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYW1hZ2VMaW1pdCAhPSB0ZXh0LmRhbWFnZWRSYW5nZUxpbWl0KCkpIHsKKyAgICAgICAgICAgICAgICBsb2dsbigiVGVzdCBpdGVyYXRpb246ICIgKyB0ZXN0SXRlcmF0aW9uKTsKKyAgICAgICAgICAgICAgICBsb2dsbigic3RhcnRpbmdBdDogIiArIHN0YXJ0aW5nQXQgKyAiOyAgZW5kaW5nQXQ6ICIgKyBlbmRpbmdBdCk7CisgICAgICAgICAgICAgICAgbG9nbG4oImRhbWFnZVN0YXJ0OiAiICsgZGFtYWdlU3RhcnQgKyAiOyAgZGFtYWdlTGltaXQ6ICIgKyBkYW1hZ2VMaW1pdCk7CisgICAgICAgICAgICAgICAgbG9nbG4oInRleHQucmFuZ2VTdGFydDogIiArIHRleHQuZGFtYWdlZFJhbmdlU3RhcnQoKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXh0LnJhbmdlTGltaXQ6ICIgKyB0ZXh0LmRhbWFnZWRSYW5nZUxpbWl0KCkpOworICAgICAgICAgICAgICAgIGVycmxuKCJEYW1hZ2UgcmFuZ2Ugc3RhcnQgb3IgbGltaXQgaXMgbm90IGV4cGVjdGVkIHZhbHVlIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICgoZGFtYWdlTGltaXQgPT0gSW50ZWdlci5NSU5fVkFMVUUpICE9IChvbGRUcyA9PSB0ZXh0LmdldFRpbWVTdGFtcCgpKSkgeworCisgICAgICAgICAgICAgICAgZXJybG4oInRpbWVTdGFtcCBpcyBpbmNvcnJlY3QiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGVycihTdHJpbmcgbWVzc2FnZSkgeworICAgIAorICAgICAgICBpZiAodGVzdEl0ZXJhdGlvbiAhPSBOT1RfSU5fTU9OS0VZX1RFU1QpIHsKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAidGVzdEl0ZXJhdGlvbj0iK3Rlc3RJdGVyYXRpb24rIjsgdGVzdENhc2U9Iit0aGVDYXNlK21lc3NhZ2U7CisgICAgICAgIH0KKyAgICAgICAgc3VwZXIuZXJyKG1lc3NhZ2UpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAqIFBlcmZvcm0gYSByYW5kb20gc2VyaWVzIG9mIG9wZXJhdGlvbnMgb24gYW4gTVRleHQgYW5kCisgICAgKiBjaGVjayB0aGUgcmVzdWx0IG9mIGVhY2ggb3BlcmF0aW9uIGFnYWluc3QgYSBzZXQgb2YgaW52YXJpYW50cy4KKyAgICAqLworICAgIHB1YmxpYyB2b2lkIG1vbmtleVRlc3QoYm9vbGVhbiBzdHJlYW1pbmcpIHsKKworICAgICAgICAvKgorICAgICAgICAgICAgWW91IGNhbiBhZGQgYW55IG9wZXJhdGlvbiB0byB0aGUgc3dpdGNoIHN0YXRlbWVudCBwcm92aWRlZCBpdAorICAgICAgICAgICAgcHJlc2VydmVzIHRoZSBmb2xsb3dpbmcgaW52YXJpYW50czoKKyAgICAgICAgICAgIC0gVGhlIFN0cmluZyBwbGFpblRleHQgY29udGFpbnMgdGhlIHNhbWUgdGV4dCBhcyB0aGUgU3R5bGVkU3RyaW5nQnVmZmVyLgorICAgICAgICAgICAgICBPYnZpb3VzbHksIGZvciB0aGUgdGVzdCB0byBiZSBtZWFuaW5nZnVsIHBsYWluVGV4dCBtdXN0IGJlIGNvbXB1dGVkCisgICAgICAgICAgICAgIGluZGVwZW5kZW50bHkgb2YgdGhlIGJ1ZmZlciAoaWUgZG9uJ3Qgd3JpdGU6ICBwbGFpblRleHQgPSBidWYuZ2V0U3R5bGVkU3RyaW5nKCkudG9TdHJpbmcoKSkuCisgICAgICAgICAgICAtIEV2ZXJ5ICdiJyBpcyBib2xkLCBldmVyeSAnaScgaXMgaXRhbGljLCBldmVyeSAncCcgaXMgcGxhaW4sIGFuZAorICAgICAgICAgICAgICBubyBvdGhlciBjaGFyYWN0ZXJzIGFwcGVhciBpbiB0aGUgdGV4dC4KKyAgICAgICAgKi8KKworICAgICAgICBBdHRyaWJ1dGVNYXAgYm9sZEF0dHJzID0gbmV3IEF0dHJpYnV0ZU1hcChUZXh0QXR0cmlidXRlLldFSUdIVCwgVGV4dEF0dHJpYnV0ZS5XRUlHSFRfQk9MRCk7CisgICAgICAgIEF0dHJpYnV0ZU1hcCBpdGFsaWNBdHRycyA9IG5ldyBBdHRyaWJ1dGVNYXAoVGV4dEF0dHJpYnV0ZS5QT1NUVVJFLCBUZXh0QXR0cmlidXRlLlBPU1RVUkVfT0JMSVFVRSk7CisgICAgICAgIEF0dHJpYnV0ZU1hcCBlbXB0eUF0dHJzID0gQXR0cmlidXRlTWFwLkVNUFRZX0FUVFJJQlVURV9NQVA7CisKKyAgICAgICAgZmluYWwgU3RyaW5nIGJvbGQxU3RyX2dldFN0cmluZyA9ICJiIjsKKyAgICAgICAgTUNvbnN0VGV4dCBib2xkMVN0ciA9IG5ldyBTdHlsZWRUZXh0KGJvbGQxU3RyX2dldFN0cmluZywgYm9sZEF0dHJzKTsKKworICAgICAgICBmaW5hbCBTdHJpbmcgaXRhbGljMVN0cl9nZXRTdHJpbmcgPSAiaSI7CisgICAgICAgIE1Db25zdFRleHQgaXRhbGljMVN0ciA9IG5ldyBTdHlsZWRUZXh0KGl0YWxpYzFTdHJfZ2V0U3RyaW5nLCBpdGFsaWNBdHRycyk7CisKKyAgICAgICAgZmluYWwgU3RyaW5nIHBsYWluMVN0cl9nZXRTdHJpbmcgPSAicCI7CisgICAgICAgIE1Db25zdFRleHQgcGxhaW4xU3RyID0gbmV3IFN0eWxlZFRleHQocGxhaW4xU3RyX2dldFN0cmluZywgZW1wdHlBdHRycyk7CisKKyAgICAgICAgU3R5bGVkVGV4dCB0ZW1wID0gbmV3IFN0eWxlZFRleHQoKTsKKyAgICAgICAgdGVtcC5hcHBlbmQoYm9sZDFTdHIpOworICAgICAgICB0ZW1wLmFwcGVuZChpdGFsaWMxU3RyKTsKKyAgICAgICAgZmluYWwgU3RyaW5nIGJvbGRJdGFsaWNTdHJfZ2V0U3RyaW5nID0gYm9sZDFTdHJfZ2V0U3RyaW5nLmNvbmNhdChpdGFsaWMxU3RyX2dldFN0cmluZyk7CisgICAgICAgIE1Db25zdFRleHQgYm9sZEl0YWxpY1N0ciA9IHRlbXA7CisKKyAgICAgICAgdGVtcCA9IG5ldyBTdHlsZWRUZXh0KCk7CisgICAgICAgIHRlbXAuYXBwZW5kKGJvbGQxU3RyKTsKKyAgICAgICAgdGVtcC5hcHBlbmQoYm9sZDFTdHIpOworICAgICAgICB0ZW1wLmFwcGVuZChib2xkMVN0cik7CisgICAgICAgIGZpbmFsIFN0cmluZyBib2xkM1N0cl9nZXRTdHJpbmcgPSAiYmJiIjsKKyAgICAgICAgTUNvbnN0VGV4dCBib2xkM1N0ciA9IHRlbXA7CisKKyAgICAgICAgTVRleHQgYnVmID0gbmV3IFN0eWxlZFRleHQoKTsKKyAgICAgICAgU3RyaW5nIHBsYWluVGV4dCA9IG5ldyBTdHJpbmcoKTsKKyAgICAgICAgLy9pbnQgdGVzdEl0ZXJhdGlvbj0wOyAtIG5vdyBpbnN0YW5jZSB2YXJpYWJsZXMgc28gZXJybG4gY2FuIHJlcG9ydCBpdAorICAgICAgICAvL2ludCB0aGVDYXNlPTA7CisKKyAgICAgICAgZmluYWwgaW50IE5VTV9DQVNFUyA9IDE0OworICAgICAgICBib29sZWFuW10gY2FzZXNFeGVjdXRlZCA9IG5ldyBib29sZWFuW05VTV9DQVNFU107CisgICAgICAgIGZpbmFsIGludCBzdG9wQXQgPSAtMTsKKyAgICAgICAgUmFuZG9tIHJhbmQgPSBuZXcgUmFuZG9tKFJBTkRfU0VFRCk7CisKKyAgICAgICAgZmluYWwgU3RyaW5nIEFMV0FZU19ESUZGRVJFTlQgPSAiXHVGRUZGIjsKKworICAgICAgICAgICAgZm9yICh0ZXN0SXRlcmF0aW9uPTA7IHRlc3RJdGVyYXRpb24gPCBURVNUX0lURVJBVElPTlM7IHRlc3RJdGVyYXRpb24rKykgeworCisgICAgICAgICAgICAgICAgdGhlQ2FzZSA9IHJhbmRJbnQocmFuZCwgTlVNX0NBU0VTKTsKKworICAgICAgICAgICAgICAgIGNhc2VzRXhlY3V0ZWRbdGhlQ2FzZV0gPSB0cnVlOworCisgICAgICAgICAgICAgICAgaWYgKHRlc3RJdGVyYXRpb24gPT0gc3RvcEF0KSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RJdGVyYXRpb24gPSBzdG9wQXQ7ICAvLyBDb252ZW5pZW50IHBsYWNlIHRvIHB1dCBicmVha3BvaW50CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaW50IHRpbWVTdGFtcCA9IGJ1Zi5nZXRUaW1lU3RhbXAoKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgb2xkUGxhaW5UZXh0ID0gcGxhaW5UZXh0OworICAgICAgICAgICAgICAgIGlmIChvbGRQbGFpblRleHQgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigib2xkUGxhaW5UZXh0IGlzIG51bGwhIik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgc3dpdGNoICh0aGVDYXNlKSB7CisKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgICAgICAgICAgICAgLy8gY3JlYXRlIG5ldyBzdHJpbmc7IHJlcGxhY2UgY2hhcnMgYXQgc3RhcnQgd2l0aCBkaWZmZXJlbnQgc3R5bGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiA9IG5ldyBTdHlsZWRUZXh0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBidWYuYXBwZW5kKGJvbGQzU3RyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zi5yZXBsYWNlKDAsIDEsIGl0YWxpYzFTdHIsIDAsIGl0YWxpYzFTdHIubGVuZ3RoKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnVmLnJlcGxhY2UoMCwgMCwgaXRhbGljMVN0ciwgMCwgaXRhbGljMVN0ci5sZW5ndGgoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHBsYWluVGV4dCA9IGJvbGQzU3RyX2dldFN0cmluZy5zdWJzdHJpbmcoMSwgYm9sZDNTdHIubGVuZ3RoKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgcGxhaW5UZXh0ID0gaXRhbGljMVN0cl9nZXRTdHJpbmcuY29uY2F0KHBsYWluVGV4dCk7CisgICAgICAgICAgICAgICAgICAgICAgICBwbGFpblRleHQgPSBpdGFsaWMxU3RyX2dldFN0cmluZy5jb25jYXQocGxhaW5UZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9sZFBsYWluVGV4dCA9IG51bGw7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZWxldGUgdGhlIGxhc3QgY2hhcmFjdGVyIGZyb20gdGhlIHN0cmluZworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJ1Zi5sZW5ndGgoKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmLnJlcGxhY2UoMCwgMCwgaXRhbGljMVN0ciwgMCwgaXRhbGljMVN0ci5sZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhaW5UZXh0ID0gaXRhbGljMVN0cl9nZXRTdHJpbmc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkUGxhaW5UZXh0ID0gQUxXQVlTX0RJRkZFUkVOVDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zi5yZW1vdmUoYnVmLmxlbmd0aCgpLTEsIGJ1Zi5sZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwbGFpblRleHQgPSBwbGFpblRleHQuc3Vic3RyaW5nKDAsIHBsYWluVGV4dC5sZW5ndGgoKS0xKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlcGxhY2Ugc29tZSBvZiB0aGUgYnVmZmVyIHdpdGggYm9sZEl0YWxpY1N0cgorICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJTdGFydCA9IHJhbmRJbnQocmFuZCwgYnVmLmxlbmd0aCgpKzEpOworICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJTdG9wID0gcmFuZEludChyYW5kLCByU3RhcnQsIGJ1Zi5sZW5ndGgoKSsxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zi5yZXBsYWNlKHJTdGFydCwgclN0b3AsIGJvbGRJdGFsaWNTdHIpOworICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBuZXdTdHJpbmcgPSAoclN0YXJ0PjApPyBwbGFpblRleHQuc3Vic3RyaW5nKDAsIHJTdGFydCkgOiBuZXcgU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3U3RyaW5nID0gbmV3U3RyaW5nLmNvbmNhdChib2xkSXRhbGljU3RyX2dldFN0cmluZyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJTdG9wIDwgcGxhaW5UZXh0Lmxlbmd0aCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdTdHJpbmcgPSBuZXdTdHJpbmcuY29uY2F0KHBsYWluVGV4dC5zdWJzdHJpbmcoclN0b3AsIHBsYWluVGV4dC5sZW5ndGgoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZFBsYWluVGV4dCA9IEFMV0FZU19ESUZGRVJFTlQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhaW5UZXh0ID0gbmV3U3RyaW5nOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVwZWF0ZWRseSBpbnNlcnQgc3RyaW5ncyBpbnRvIHRoZSBjZW50ZXIgb2YgdGhlIGJ1ZmZlcgorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnNQb3MgPSBidWYubGVuZ3RoKCkgLyAyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBwcmVmaXggPSBwbGFpblRleHQuc3Vic3RyaW5nKDAsIGluc1Bvcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHN1ZmZpeCA9IHBsYWluVGV4dC5zdWJzdHJpbmcoaW5zUG9zLCBwbGFpblRleHQubGVuZ3RoKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBtaWRkbGUgPSBuZXcgU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaWk9MDsgaWk8NDsgaWkrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQ29uc3RUZXh0IHdoaWNoID0gKGlpJTI9PTApPyBib2xkSXRhbGljU3RyIDogYm9sZDNTdHI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyB3aGljaFN0cmluZyA9IChpaSUyPT0wKT8gYm9sZEl0YWxpY1N0cl9nZXRTdHJpbmcgOiBib2xkM1N0cl9nZXRTdHJpbmc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0ZW1wUG9zID0gaW5zUG9zK21pZGRsZS5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmLmluc2VydCh0ZW1wUG9zLCB3aGljaCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pZGRsZSA9IG1pZGRsZS5jb25jYXQod2hpY2hTdHJpbmcpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFpblRleHQgPSBwcmVmaXguY29uY2F0KG1pZGRsZSkuY29uY2F0KHN1ZmZpeCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkUGxhaW5UZXh0ID0gQUxXQVlTX0RJRkZFUkVOVDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAgICAgICAgLy8gaW5zZXJ0IGJvbGQxU3RyIGF0IGVuZAorICAgICAgICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZChib2xkMVN0cik7CisgICAgICAgICAgICAgICAgICAgICAgICBwbGFpblRleHQgPSBwbGFpblRleHQuY29uY2F0KGJvbGQxU3RyX2dldFN0cmluZyk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICBjYXNlIDU6CisgICAgICAgICAgICAgICAgICAgIC8vIGRlbGV0ZSBhIGNoYXJhY3RlciBmcm9tIHRoZSBzdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChidWYubGVuZ3RoKCkgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlbFBvcyA9IHJhbmRJbnQocmFuZCwgYnVmLmxlbmd0aCgpLTEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zi5yZW1vdmUoZGVsUG9zLCBkZWxQb3MrMSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhaW5UZXh0ID0gcGxhaW5UZXh0LnN1YnN0cmluZygwLCBkZWxQb3MpLmNvbmNhdChwbGFpblRleHQuc3Vic3RyaW5nKGRlbFBvcysxKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYucmVwbGFjZSgwLCAwLCBwbGFpbjFTdHIsIDAsIHBsYWluMVN0ci5sZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhaW5UZXh0ID0gcGxhaW4xU3RyX2dldFN0cmluZzsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgIGNhc2UgNjoKKyAgICAgICAgICAgICAgICAgICAgLy8gcmVwbGFjZSB0aGUgY29udGVudHMgb2YgdGhlIGJ1ZmZlciAoZXhjZXB0IHRoZSBmaXJzdCBjaGFyYWN0ZXIpIHdpdGggaXRzZWxmCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0ID0gYnVmLmxlbmd0aCgpID4gMT8gMSA6IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmLnJlcGxhY2Uoc3RhcnQsIGJ1Zi5sZW5ndGgoKSwgYnVmKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFpblRleHQgPSBwbGFpblRleHQuc3Vic3RyaW5nKDAsIHN0YXJ0KS5jb25jYXQocGxhaW5UZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYnVmLmxlbmd0aCgpID4gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRQbGFpblRleHQgPSBBTFdBWVNfRElGRkVSRU5UOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgIGNhc2UgNzoKKyAgICAgICAgICAgICAgICAgICAgLy8gYXBwZW5kIHRoZSBjb250ZW50cyBvZiB0aGUgYnVmZmVyIHRvIGl0c2VsZgorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1Db25zdFRleHQgY29udGVudCA9IGJ1ZjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYuaW5zZXJ0KGJ1Zi5sZW5ndGgoKSwgY29udGVudCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhaW5UZXh0ID0gcGxhaW5UZXh0LmNvbmNhdChwbGFpblRleHQpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA4OgorICAgICAgICAgICAgICAgICAgICAvLyByZXBsYWNlIHRoZSBidWZmZXIgd2l0aCBib2xkSXRhbGljU3RyK2JvbGQzU3RyCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVRleHQgcmVwbGFjZW1lbnQgPSBuZXcgU3R5bGVkVGV4dCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50LmFwcGVuZChib2xkSXRhbGljU3RyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVudC5hcHBlbmQoYm9sZDNTdHIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zi5yZXBsYWNlKDAsIGJ1Zi5sZW5ndGgoKSwgcmVwbGFjZW1lbnQsIDAsIHJlcGxhY2VtZW50Lmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFpblRleHQgPSBib2xkSXRhbGljU3RyX2dldFN0cmluZy5jb25jYXQoYm9sZDNTdHJfZ2V0U3RyaW5nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRQbGFpblRleHQgPSBBTFdBWVNfRElGRkVSRU5UOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA5OgorICAgICAgICAgICAgICAgICAgICAvLyBpbnNlcnQgYm9sZDFTdHIgYXQgZW5kIC0gc2FtZSBhcyA0IGJ1dCB1c2VzIGRpZmZlcmVudCBBUEkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zi5yZXBsYWNlKGJ1Zi5sZW5ndGgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zi5sZW5ndGgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvbGQxU3RyX2dldFN0cmluZy50b0NoYXJBcnJheSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvbGQxU3RyX2dldFN0cmluZy5sZW5ndGgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvbGRBdHRycyk7CisgICAgICAgICAgICAgICAgICAgICAgICBwbGFpblRleHQgPSBwbGFpblRleHQuY29uY2F0KGJvbGQxU3RyX2dldFN0cmluZyk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICBjYXNlIDEwOgorICAgICAgICAgICAgICAgICAgICAvLyByZW1vdmUgYWxsCisgICAgICAgICAgICAgICAgICAgICAgICBidWYucmVtb3ZlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBwbGFpblRleHQgPSAiIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9sZFBsYWluVGV4dCA9IEFMV0FZU19ESUZGRVJFTlQ7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICBjYXNlIDExOgorICAgICAgICAgICAgICAgICAgICAvLyByZW1vdmUgYWxsIC0gZGlmZmVyZW50IHdheQorICAgICAgICAgICAgICAgICAgICAgICAgYnVmLnJlbW92ZSgwLCBidWYubGVuZ3RoKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgcGxhaW5UZXh0ID0gIiI7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICBjYXNlIDEyOgorICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5zZXJ0ICdpJyBhdCAzcmQgY2hhcmFjdGVyIChvciBsYXN0LCBpZiBmZXdlciB0aGFuIDMgY2hhcnMpCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluc1BvcyA9IE1hdGgubWluKGJ1Zi5sZW5ndGgoKSwgMyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmLnJlcGxhY2UoaW5zUG9zLCBpbnNQb3MsICdpJywgaXRhbGljQXR0cnMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWluVGV4dCA9IChwbGFpblRleHQuc3Vic3RyaW5nKDAsIGluc1BvcykpLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmNhdChpdGFsaWMxU3RyX2dldFN0cmluZykuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uY2F0KHBsYWluVGV4dC5zdWJzdHJpbmcoaW5zUG9zKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICBjYXNlIDEzOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0cmVhbWluZykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocm93YWJsZSBlcnJvciA9IG51bGw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnl0ZUFycmF5T3V0cHV0U3RyZWFtIGJ5dGVzT3V0ID0gbmV3IEJ5dGVBcnJheU91dHB1dFN0cmVhbSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RPdXRwdXRTdHJlYW0gb2JqT3V0ID0gbmV3IE9iamVjdE91dHB1dFN0cmVhbShieXRlc091dCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iak91dC53cml0ZU9iamVjdChidWYpOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ5dGVBcnJheUlucHV0U3RyZWFtIGJ5dGVzSW4gPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKGJ5dGVzT3V0LnRvQnl0ZUFycmF5KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RJbnB1dFN0cmVhbSBvYmpJbiA9IG5ldyBPYmplY3RJbnB1dFN0cmVhbShieXRlc0luKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmID0gKE1UZXh0KSBvYmpJbi5yZWFkT2JqZWN0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZFBsYWluVGV4dCA9IG51bGw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoKElPRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaChDbGFzc05vdEZvdW5kRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvci5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJybG4oIlN0cmVhbWluZyBwcm9ibGVtOiAiICsgZXJyb3IpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbigiSW52YWxpZCBjYXNlLiIpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIENoZWNrIHRpbWUgc3RhbXAgaWYgb2xkUGxhaW5UZXh0ICE9IG51bGwuCisgICAgICAgICAgICAgICAgLy8gVGltZSBzdGFtcCBzaG91bGQgYmUgZGlmZmVyZW50IGlmZgorICAgICAgICAgICAgICAgIC8vIG9sZFBsYWluVGV4dCA9PSBwbGFpblRleHQKKyAgICAgICAgICAgICAgICBpZiAob2xkUGxhaW5UZXh0ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCh0aW1lU3RhbXA9PWJ1Zi5nZXRUaW1lU3RhbXAoKSkgIT0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZFBsYWluVGV4dC5lcXVhbHMocGxhaW5UZXh0KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbG9nbG4oInBsYWluVGV4dCBoYXNoQ29kZTogIiArIHBsYWluVGV4dC5oYXNoQ29kZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2xuKCJvbGRQbGFpblRleHQgaGFzaENvZGU6ICIgKyBvbGRQbGFpblRleHQuaGFzaENvZGUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbigiVGltZSBzdGFtcCBpcyBpbmNvcnJlY3QiKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIG5vdyBjaGVjayBpbnZhcmlhbnRzOgorICAgICAgICAgICAgICAgIGlmIChwbGFpblRleHQubGVuZ3RoKCkgIT0gYnVmLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJMZW5ndGhzIGRvbid0IG1hdGNoIik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZm9yIChpbnQgaj0wOyBqIDwgYnVmLmxlbmd0aCgpOyBqKyspIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGJ1Zi5hdChqKSAhPSBwbGFpblRleHQuY2hhckF0KGopKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbigiQ2hhcmFjdGVycyBkb24ndCBtYXRjaC4iKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGludCBzdGFydDsKKyAgICAgICAgICAgICAgICBmb3IgKHN0YXJ0ID0gMDsgc3RhcnQgPCBidWYubGVuZ3RoKCk7KSB7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0ICE9IGJ1Zi5jaGFyYWN0ZXJTdHlsZVN0YXJ0KHN0YXJ0KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZXJybG4oInN0eWxlIHN0YXJ0IGlzIHdyb25nIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaW50IGxpbWl0ID0gYnVmLmNoYXJhY3RlclN0eWxlTGltaXQoc3RhcnQpOworICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnQgPj0gbGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycmxuKCJzdGFydCA+PSBsaW1pdCIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGNoYXIgY3VycmVudCA9IHBsYWluVGV4dC5jaGFyQXQoc3RhcnQpOworCisgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZU1hcCBjb21wID0gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnQgPT0gJ3AnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb21wID0gZW1wdHlBdHRyczsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjdXJyZW50ID09ICdiJykgeworICAgICAgICAgICAgICAgICAgICAgICAgY29tcCA9IGJvbGRBdHRyczsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjdXJyZW50ID09ICdpJykgeworICAgICAgICAgICAgICAgICAgICAgICAgY29tcCA9IGl0YWxpY0F0dHJzOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgZXJybG4oIkFuIGludmFsaWQgY2hhcmFjdGVyIHNudWNrIGluISIpOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlTWFwIHN0YXJ0U3R5bGUgPSBidWYuY2hhcmFjdGVyU3R5bGVBdChzdGFydCk7CisgICAgICAgICAgICAgICAgICAgIGlmICghY29tcC5lcXVhbHMoc3RhcnRTdHlsZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycmxuKCJTdHlsZSBpcyBub3QgZXhwZWN0ZWQgc3R5bGUuIik7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gc3RhcnQ7IGogPCBsaW1pdDsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGxhaW5UZXh0LmNoYXJBdChqKSAhPSBjdXJyZW50KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJybG4oIkNoYXJhY3RlciBkb2Vzbid0IG1hdGNoIHN0eWxlLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJ1Zi5jaGFyYWN0ZXJTdHlsZUF0KGopICE9IHN0YXJ0U3R5bGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbigiSW5jb3JyZWN0IHN0eWxlIGluIHJ1biIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxpbWl0IDwgYnVmLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGxhaW5UZXh0LmNoYXJBdChsaW1pdCkgPT0gY3VycmVudCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycmxuKCJTdHlsZSBydW4gZW5kcyB0b28gc29vbi4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBzdGFydCA9IGxpbWl0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoc3RhcnQgIT0gYnVmLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJMYXN0IGxpbWl0IGlzIG5vdCBidWZmZXIgbGVuZ3RoLiIpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIHdvbid0IHRyeSB0byBjb21wdXRlIGFuZCBjaGVjayBkYW1hZ2VkIHJhbmdlOyAgaG93ZXZlciwKKyAgICAgICAgICAgICAgICAvLyBpZiBub25lbXB0eSBpdCBzaG91bGQgYWx3YXlzIGJlIHdpdGhpbiB0ZXh0CisgICAgICAgICAgICAgICAgaW50IGRhbWFnZVN0YXJ0ID0gYnVmLmRhbWFnZWRSYW5nZVN0YXJ0KCk7CisgICAgICAgICAgICAgICAgaW50IGRhbWFnZUxpbWl0ID0gYnVmLmRhbWFnZWRSYW5nZUxpbWl0KCk7CisgICAgICAgICAgICAgICAgaWYgKGRhbWFnZVN0YXJ0ID09IEludGVnZXIuTUFYX1ZBTFVFKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChkYW1hZ2VMaW1pdCAhPSBJbnRlZ2VyLk1JTl9WQUxVRSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZXJybG4oIkludmFsaWQgZW1wdHkgaW50ZXJ2YWwiKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRhbWFnZVN0YXJ0ID4gZGFtYWdlTGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycmxuKCJEYW1hZ2UgcmFuZ2UgaW52ZXJ0ZWQiKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoZGFtYWdlU3RhcnQgPCAwIHx8IGRhbWFnZUxpbWl0ID4gYnVmLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbigiRGFtYWdlIHJhbmdlIGVuZHBvaW50IG91dCBvZiBib3VuZHMiKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICB0ZXN0SXRlcmF0aW9uID0gTk9UX0lOX01PTktFWV9URVNUOworICAgICAgICAKKyAgICAgICAgYm9vbGVhbiBhbGxDYXNlc0V4ZWN1dGVkID0gdHJ1ZTsKKyAgICAgICAgZm9yIChpbnQgaW5kZXg9MDsgaW5kZXggPCBOVU1fQ0FTRVM7IGluZGV4KyspIHsKKyAgICAgICAgICAgIGFsbENhc2VzRXhlY3V0ZWQgJj0gY2FzZXNFeGVjdXRlZFtpbmRleF07CisgICAgICAgICAgICBpZiAoY2FzZXNFeGVjdXRlZFtpbmRleF0gPT0gZmFsc2UpIHsKKyAgICAgICAgICAgICAgICBsb2dsbigiQ2FzZSAiICsgaW5kZXggKyAiIG5vdCBleGVjdXRlZC4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAvL2lmIChhbGxDYXNlc0V4ZWN1dGVkKSB7CisgICAgICAgIC8vICAgIGxvZ2xuKCJBbGwgY2FzZXMgZXhlY3V0ZWQuIik7CisgICAgICAgIC8vfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXN0L3VuaXQvVGVzdE1UZXh0U3RyZWFtaW5nLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXN0L3VuaXQvVGVzdE1UZXh0U3RyZWFtaW5nLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uODliZGRiZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3Rlc3QvdW5pdC9UZXN0TVRleHRTdHJlYW1pbmcuamF2YQpAQCAtMCwwICsxLDE2MiBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogVGVzdE1UZXh0U3RyZWFtaW5nLmphdmEsdiAkICRSZXZpc2lvbjogMS4zICQgJERhdGU6IDIwMDIvMDIvMTYgMDM6MDY6NDAgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXN0LnVuaXQ7CisKK2ltcG9ydCBjb20uaWJtLmljdS5kZXYudGVzdC5UZXN0Rm13azsKKworaW1wb3J0IGphdmEuaW8uKjsKK2ltcG9ydCBqYXZhLmF3dC5Db2xvcjsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NVGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuU3RhbmRhcmRUYWJSdWxlcjsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuU3R5bGVkVGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuU3R5bGVNb2RpZmllcjsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZU1hcDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRsYXlvdXQuYXR0cmlidXRlcy5UZXh0QXR0cmlidXRlOworCitwdWJsaWMgY2xhc3MgVGVzdE1UZXh0U3RyZWFtaW5nIGV4dGVuZHMgVGVzdEZtd2sgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICAgICAgICAgICAgICAKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgICBuZXcgVGVzdE1UZXh0U3RyZWFtaW5nKCkucnVuKGFyZ3MpOworICAgIH0KKworICAgIHB1YmxpYyBUZXN0TVRleHRTdHJlYW1pbmcoKSB7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKworICAgICAgICBzaW1wbGVUZXN0KCk7CisgICAgICAgIGFsbEF0dHJpYnV0ZXNUZXN0KCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHNpbXBsZVRlc3QoKSB7CisKKyAgICAgICAgQXR0cmlidXRlTWFwIHN0eWxlID0gQXR0cmlidXRlTWFwLkVNUFRZX0FUVFJJQlVURV9NQVA7CisgICAgICAgIE1UZXh0IHRleHQgPSBuZXcgU3R5bGVkVGV4dCgiSGVsbG8gd29ybGQhIiwgc3R5bGUpOworCisgICAgICAgIHN0cmVhbUFuZENvbXBhcmUodGV4dCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgVGVzdE1vZGlmaWVyIGV4dGVuZHMgU3R5bGVNb2RpZmllciB7CisKKyAgICAgICAgcHJpdmF0ZSBPYmplY3QgZktleTsKKyAgICAgICAgcHJpdmF0ZSBPYmplY3QgZlZhbHVlOworCisgICAgICAgIHB1YmxpYyBBdHRyaWJ1dGVNYXAgbW9kaWZ5U3R5bGUoQXR0cmlidXRlTWFwIHN0eWxlKSB7CisKKyAgICAgICAgICAgIHJldHVybiBzdHlsZS5hZGRBdHRyaWJ1dGUoZktleSwgZlZhbHVlKTsKKyAgICAgICAgfQorCisgICAgICAgIFRlc3RNb2RpZmllcihPYmplY3Qga2V5LCBPYmplY3QgdmFsdWUpIHsKKworICAgICAgICAgICAgZktleSA9IGtleTsKKyAgICAgICAgICAgIGZWYWx1ZSA9IHZhbHVlOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGFsbEF0dHJpYnV0ZXNUZXN0KCkgeworCisgICAgICAgIEF0dHJpYnV0ZU1hcCBzdHlsZSA9IEF0dHJpYnV0ZU1hcC5FTVBUWV9BVFRSSUJVVEVfTUFQOworICAgICAgICBNVGV4dCB0ZXh0ID0gbmV3IFN0eWxlZFRleHQoIkhlbGxvIHdvcmxkISIsIHN0eWxlKTsKKworICAgICAgICBpbnQgbGVuZ3RoID0gdGV4dC5sZW5ndGgoKTsKKworICAgICAgICBmaW5hbCBib29sZWFuIENIQVJBQ1RFUiA9IHRydWU7CisgICAgICAgIGZpbmFsIGJvb2xlYW4gUEFSQUdSQVBIID0gZmFsc2U7CisKKyAgICAgICAgYWRkU3R5bGUodGV4dCwgMCwgbGVuZ3RoLzIsIFRleHRBdHRyaWJ1dGUuRkFNSUxZLCAiVGltZXMiLCBDSEFSQUNURVIpOworICAgICAgICBhZGRTdHlsZSh0ZXh0LCBsZW5ndGgvMiwgbGVuZ3RoLCBUZXh0QXR0cmlidXRlLldFSUdIVCwgVGV4dEF0dHJpYnV0ZS5XRUlHSFRfQk9MRCwgQ0hBUkFDVEVSKTsKKyAgICAgICAgYWRkU3R5bGUodGV4dCwgMCwgbGVuZ3RoLzIsIFRleHRBdHRyaWJ1dGUuUE9TVFVSRSwgVGV4dEF0dHJpYnV0ZS5QT1NUVVJFX09CTElRVUUsIENIQVJBQ1RFUik7CisgICAgICAgIGFkZFN0eWxlKHRleHQsIDAsIGxlbmd0aC8yLCBUZXh0QXR0cmlidXRlLlNJWkUsIG5ldyBGbG9hdCgxMy43ZiksIENIQVJBQ1RFUik7CisgICAgICAgIGFkZFN0eWxlKHRleHQsIGxlbmd0aC8yLCBsZW5ndGgsIFRleHRBdHRyaWJ1dGUuU1VQRVJTQ1JJUFQsIFRleHRBdHRyaWJ1dGUuU1VQRVJTQ1JJUFRfU1VCLCBDSEFSQUNURVIpOworICAgICAgICBhZGRTdHlsZSh0ZXh0LCAwLCBsZW5ndGgvMiwgVGV4dEF0dHJpYnV0ZS5GT1JFR1JPVU5ELCBDb2xvci5ibHVlLCBDSEFSQUNURVIpOworICAgICAgICBhZGRTdHlsZSh0ZXh0LCAwLCBsZW5ndGgvMiwgVGV4dEF0dHJpYnV0ZS5CQUNLR1JPVU5ELCBDb2xvci5yZWQsIENIQVJBQ1RFUik7CisgICAgICAgIGFkZFN0eWxlKHRleHQsIDAsIGxlbmd0aC0xLCBUZXh0QXR0cmlidXRlLlNUUklLRVRIUk9VR0gsIEJvb2xlYW4uVFJVRSwgQ0hBUkFDVEVSKTsKKworICAgICAgICBhZGRTdHlsZSh0ZXh0LCAwLCBsZW5ndGgsIFRleHRBdHRyaWJ1dGUuRVhUUkFfTElORV9TUEFDSU5HLCBuZXcgRmxvYXQoNCksIFBBUkFHUkFQSCk7CisgICAgICAgIGFkZFN0eWxlKHRleHQsIDAsIGxlbmd0aCwgVGV4dEF0dHJpYnV0ZS5GSVJTVF9MSU5FX0lOREVOVCwgbmV3IEZsb2F0KDYpLCBQQVJBR1JBUEgpOworICAgICAgICBhZGRTdHlsZSh0ZXh0LCAwLCBsZW5ndGgsIFRleHRBdHRyaWJ1dGUuTUlOX0xJTkVfU1BBQ0lORywgbmV3IEZsb2F0KDcpLCBQQVJBR1JBUEgpOworICAgICAgICBhZGRTdHlsZSh0ZXh0LCAwLCBsZW5ndGgsIFRleHRBdHRyaWJ1dGUuTElORV9GTFVTSCwgVGV4dEF0dHJpYnV0ZS5GTFVTSF9UUkFJTElORywgUEFSQUdSQVBIKTsKKyAgICAgICAgYWRkU3R5bGUodGV4dCwgMCwgbGVuZ3RoLCBUZXh0QXR0cmlidXRlLkxFQURJTkdfTUFSR0lOLCBuZXcgRmxvYXQoOSksIFBBUkFHUkFQSCk7CisgICAgICAgIGFkZFN0eWxlKHRleHQsIDAsIGxlbmd0aCwgVGV4dEF0dHJpYnV0ZS5UUkFJTElOR19NQVJHSU4sIG5ldyBGbG9hdCg5KSwgUEFSQUdSQVBIKTsKKyAgICAgICAgYWRkU3R5bGUodGV4dCwgMCwgbGVuZ3RoLCBUZXh0QXR0cmlidXRlLlRBQl9SVUxFUiwgbmV3IFN0YW5kYXJkVGFiUnVsZXIoKSwgUEFSQUdSQVBIKTsKKworICAgICAgICBzdHJlYW1BbmRDb21wYXJlKHRleHQpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIHZvaWQgYWRkU3R5bGUoTVRleHQgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdCBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QgdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGNoYXJhY3RlcikgeworCisgICAgICAgIFN0eWxlTW9kaWZpZXIgbW9kaWZpZXIgPSBuZXcgVGVzdE1vZGlmaWVyKGtleSwgdmFsdWUpOworCisgICAgICAgIGlmIChjaGFyYWN0ZXIpIHsKKyAgICAgICAgICAgIHRleHQubW9kaWZ5Q2hhcmFjdGVyU3R5bGVzKHN0YXJ0LCBsaW1pdCwgbW9kaWZpZXIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGV4dC5tb2RpZnlQYXJhZ3JhcGhTdHlsZXMoc3RhcnQsIGxpbWl0LCBtb2RpZmllcik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzdHJlYW1BbmRDb21wYXJlKE1UZXh0IHRleHQpIHsKKworICAgICAgICBUaHJvd2FibGUgZXJyb3IgPSBudWxsOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBCeXRlQXJyYXlPdXRwdXRTdHJlYW0gYnl0ZXNPdXQgPSBuZXcgQnl0ZUFycmF5T3V0cHV0U3RyZWFtKCk7CisgICAgICAgICAgICBPYmplY3RPdXRwdXRTdHJlYW0gb2JqT3V0ID0gbmV3IE9iamVjdE91dHB1dFN0cmVhbShieXRlc091dCk7CisgICAgICAgICAgICBvYmpPdXQud3JpdGVPYmplY3QodGV4dCk7CisKKyAgICAgICAgICAgIEJ5dGVBcnJheUlucHV0U3RyZWFtIGJ5dGVzSW4gPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShieXRlc091dC50b0J5dGVBcnJheSgpKTsKKyAgICAgICAgICAgIE9iamVjdElucHV0U3RyZWFtIG9iakluID0gbmV3IE9iamVjdElucHV0U3RyZWFtKGJ5dGVzSW4pOworICAgICAgICAgICAgTVRleHQgc3RyZWFtZWRUZXh0ID0gKE1UZXh0KSBvYmpJbi5yZWFkT2JqZWN0KCk7CisgICAgICAgICAgICBpZiAoIWlzRXF1YWwodGV4dCwgc3RyZWFtZWRUZXh0KSkgeworICAgICAgICAgICAgICAgIGlzRXF1YWwodGV4dCwgc3RyZWFtZWRUZXh0KTsKKyAgICAgICAgICAgICAgICBlcnJsbigiU3RyZWFtZWQgdGV4dCBpcyBub3QgZXF1YWwiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorLyogICAgICAgIGNhdGNoKE9wdGlvbmFsRGF0YUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJvciA9IGU7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2goU3RyZWFtQ29ycnVwdGVkRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycm9yID0gZTsKKyAgICAgICAgfSovCisgICAgICAgIGNhdGNoKElPRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycm9yID0gZTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaChDbGFzc05vdEZvdW5kRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycm9yID0gZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChlcnJvciAhPSBudWxsKSB7CisgICAgICAgICAgICBlcnJvci5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgICAgIGVycmxuKCJTZXJpYWxpemF0aW9uIGZhaWxlZC4iKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0VxdWFsKE1UZXh0IGxocywgTVRleHQgcmhzKSB7CisKKyAgICAgICAgcmV0dXJuIGxocy5lcXVhbHMocmhzKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGVzdC91bml0L1Rlc3RQYXJhZ3JhcGhTdHlsZXMuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3Rlc3QvdW5pdC9UZXN0UGFyYWdyYXBoU3R5bGVzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMjMzNWI0MQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3Rlc3QvdW5pdC9UZXN0UGFyYWdyYXBoU3R5bGVzLmphdmEKQEAgLTAsMCArMSwzMzkgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFRlc3RQYXJhZ3JhcGhTdHlsZXMuamF2YSx2ICQgJFJldmlzaW9uOiAxLjMgJCAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNjo0MSAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRlc3QudW5pdDsKKworaW1wb3J0IGNvbS5pYm0uaWN1LmRldi50ZXN0LlRlc3RGbXdrOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0LlN0eWxlZFRleHQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1Db25zdFRleHQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1UZXh0OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZU1hcDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuU3R5bGVNb2RpZmllcjsKK2ltcG9ydCBqYXZhLnV0aWwuUmFuZG9tOworCitwdWJsaWMgZmluYWwgY2xhc3MgVGVzdFBhcmFncmFwaFN0eWxlcyBleHRlbmRzIFRlc3RGbXdrIHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgICAgICAgICAgICAgCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgICAgbmV3IFRlc3RQYXJhZ3JhcGhTdHlsZXMoKS5ydW4oYXJncyk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFJBTkRfU0VFRCA9IDEyMzQ7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE5VTV9URVNUUyA9IDI1MDA7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIGlzUGFyYWdyYXBoQnJlYWsoY2hhciBjKSB7CisKKyAgICAgICAgcmV0dXJuIGMgPT0nXHUyMDI5JyB8fCBjID09ICdcbic7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgT2JqZWN0IEtFWSA9ICJLRVkiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEF0dHJpYnV0ZU1hcCBQTEFJTiA9IEF0dHJpYnV0ZU1hcC5FTVBUWV9BVFRSSUJVVEVfTUFQOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEF0dHJpYnV0ZU1hcCBBX1NUWUxFID0gbmV3IEF0dHJpYnV0ZU1hcChLRVksIG5ldyBDaGFyYWN0ZXIoJ2EnKSk7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3R5bGVNb2RpZmllciBBX01PRCA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3R5bGVNb2RpZmllci5jcmVhdGVSZXBsYWNlTW9kaWZpZXIoQV9TVFlMRSk7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgQXR0cmlidXRlTWFwIEJfU1RZTEUgPSBuZXcgQXR0cmlidXRlTWFwKEtFWSwgbmV3IENoYXJhY3RlcignYicpKTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHlsZU1vZGlmaWVyIEJfTU9EID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHlsZU1vZGlmaWVyLmNyZWF0ZVJlcGxhY2VNb2RpZmllcihCX1NUWUxFKTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBBdHRyaWJ1dGVNYXAgQ19TVFlMRSA9IG5ldyBBdHRyaWJ1dGVNYXAoS0VZLCBuZXcgQ2hhcmFjdGVyKCdjJykpOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0eWxlTW9kaWZpZXIgQ19NT0QgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0eWxlTW9kaWZpZXIuY3JlYXRlUmVwbGFjZU1vZGlmaWVyKENfU1RZTEUpOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEF0dHJpYnV0ZU1hcCBEX1NUWUxFID0gbmV3IEF0dHJpYnV0ZU1hcChLRVksIG5ldyBDaGFyYWN0ZXIoJ2QnKSk7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3R5bGVNb2RpZmllciBEX01PRCA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3R5bGVNb2RpZmllci5jcmVhdGVSZXBsYWNlTW9kaWZpZXIoRF9TVFlMRSk7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgQXR0cmlidXRlTWFwIEVfU1RZTEUgPSBuZXcgQXR0cmlidXRlTWFwKEtFWSwgbmV3IENoYXJhY3RlcignZScpKTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHlsZU1vZGlmaWVyIEVfTU9EID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHlsZU1vZGlmaWVyLmNyZWF0ZVJlcGxhY2VNb2RpZmllcihFX1NUWUxFKTsKKworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisKKyAgICAgICAgZWFzeVRlc3RzKCk7CisgICAgICAgIHJhbmRvbVRlc3QoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgZWFzeVRlc3RzKCkgeworCisgICAgICAgIE1UZXh0IHRleHQgPSBuZXcgU3R5bGVkVGV4dCgiYVxuYlxuY1xuZFxuIiwgUExBSU4pOworICAgICAgICB0ZXh0Lm1vZGlmeVBhcmFncmFwaFN0eWxlcygwLCB0ZXh0Lmxlbmd0aCgpLCBBX01PRCk7CisgICAgICAgIHZlcmlmeVBhcmFncmFwaENvdW50KHRleHQpOworCisgICAgICAgIE1UZXh0IHNyYyA9IG5ldyBTdHlsZWRUZXh0KCJYWFhcbllZWSIsIFBMQUlOKTsKKyAgICAgICAgc3JjLm1vZGlmeVBhcmFncmFwaFN0eWxlcygwLCBzcmMubGVuZ3RoKCksIEJfTU9EKTsKKyAgICAgICAgdmVyaWZ5UGFyYWdyYXBoQ291bnQoc3JjKTsKKworICAgICAgICBNVGV4dCB0ZW1wID0gdGV4dC5leHRyYWN0V3JpdGFibGUoMCwgdGV4dC5sZW5ndGgoKSk7CisgICAgICAgIHRlbXAuYXBwZW5kKHNyYyk7CisgICAgICAgIHZlcmlmeVBhcmFncmFwaENvdW50KHRlbXApOworICAgICAgICBmb3IgKGludCBpPTA7IGkgPCB0ZXh0Lmxlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgICAgIGlmICghdGVtcC5wYXJhZ3JhcGhTdHlsZUF0KGkpLmVxdWFscyh0ZXh0LnBhcmFncmFwaFN0eWxlQXQoaSkpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIlBhcmFncmFwaCBzdHlsZXMgYXJlIHdyb25nIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgc3JjLmxlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgICAgIGlmICghdGVtcC5wYXJhZ3JhcGhTdHlsZUF0KGkrdGV4dC5sZW5ndGgoKSkuZXF1YWxzKHNyYy5wYXJhZ3JhcGhTdHlsZUF0KGkpKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJQYXJhZ3JhcGggc3R5bGVzIGFyZSB3cm9uZyIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgdGVtcCA9IHRleHQuZXh0cmFjdFdyaXRhYmxlKDAsIHRleHQubGVuZ3RoKCkpOworICAgICAgICB0ZW1wLnJlcGxhY2UoMCwgMSwgc3JjLCAwLCBzcmMubGVuZ3RoKCkpOworICAgICAgICB2ZXJpZnlQYXJhZ3JhcGhDb3VudCh0ZW1wKTsKKyAgICAgICAgaWYgKHRlbXAucGFyYWdyYXBoTGltaXQoMCkgIT0gNCkgeworICAgICAgICAgICAgZXJybG4oIlBhcmFncmFwaCBsaW1pdCBpcyB3cm9uZyIpOworICAgICAgICB9CisgICAgICAgIGlmICghdGVtcC5wYXJhZ3JhcGhTdHlsZUF0KDApLmVxdWFscyhCX1NUWUxFKSkgeworICAgICAgICAgICAgZXJybG4oIkZpcnN0IHN0eWxlIGlzIHdyb25nIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCF0ZW1wLnBhcmFncmFwaFN0eWxlQXQoNCkuZXF1YWxzKEFfU1RZTEUpKSB7CisgICAgICAgICAgICBlcnJsbigiU3R5bGUgYWZ0ZXIgaW5zZXJ0IGlzIHdyb25nIik7CisgICAgICAgIH0KKworICAgICAgICAvLyB0ZXN0IGFwcGVuZAorICAgICAgICBNQ29uc3RUZXh0IG5ld1NyYyA9IHNyYy5leHRyYWN0KDQsIDcpOworICAgICAgICBNVGV4dCBpbml0QyA9IG5ldyBTdHlsZWRUZXh0KCJjY2NjY2MiLCBQTEFJTik7CisgICAgICAgIGluaXRDLm1vZGlmeVBhcmFncmFwaFN0eWxlcygwLCBpbml0Qy5sZW5ndGgoKSwgQ19NT0QpOworICAgICAgICBpbml0Qy5hcHBlbmQobmV3U3JjKTsKKyAgICAgICAgLy8gbm93IGluaXRDIHNob3VsZCBiZSBvbmUgcGFyYWdyYXBoIHdpdGggc3R5bGUgQgorICAgICAgICBpZiAoaW5pdEMucGFyYWdyYXBoTGltaXQoMCkgIT0gaW5pdEMubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIGVycmxuKCJTaG91bGQgb25seSBiZSBvbmUgcGFyYWdyYXBoIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGluaXRDLnBhcmFncmFwaFN0eWxlQXQoMCkgIT0gaW5pdEMucGFyYWdyYXBoU3R5bGVBdChpbml0Qy5sZW5ndGgoKSkpIHsKKyAgICAgICAgICAgIGVycmxuKCJUd28gZGlmZmVyZW50IHBhcmFncmFwaCBzdHlsZXMiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWluaXRDLnBhcmFncmFwaFN0eWxlQXQoaW5pdEMubGVuZ3RoKCkvMikuZXF1YWxzKEJfU1RZTEUpKSB7CisgICAgICAgICAgICBlcnJsbigiSW5jb3JyZWN0IHBhcmFncmFwaCBzdHlsZSIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0ZXh0ID0gbmV3IFN0eWxlZFRleHQoImFhYVxuIiwgUExBSU4pOworICAgICAgICB0ZXh0Lm1vZGlmeVBhcmFncmFwaFN0eWxlcygwLCB0ZXh0Lmxlbmd0aCgpLCBBX01PRCk7CisgICAgICAgIHRleHQubW9kaWZ5UGFyYWdyYXBoU3R5bGVzKHRleHQubGVuZ3RoKCksIHRleHQubGVuZ3RoKCksIEJfTU9EKTsKKyAgICAgICAgaWYgKHRleHQucGFyYWdyYXBoU3R5bGVBdCh0ZXh0Lmxlbmd0aCgpKSAhPSBCX1NUWUxFKSB7CisgICAgICAgICAgICBlcnJsbigiMC1sZW5ndGggcGFyYWdyYXBoIGF0IGVuZCBoYXMgaW5jb3JyZWN0IHN0eWxlIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBpbnQgcmFuZEludChSYW5kb20gcmFuZCwgaW50IGxpbWl0KSB7CisKKyAgICAgICAgcmV0dXJuIHJhbmRJbnQocmFuZCwgMCwgbGltaXQpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGludCByYW5kSW50KFJhbmRvbSByYW5kLCBpbnQgc3RhcnQsIGludCBsaW1pdCkgeworCisgICAgICAgIGlmIChzdGFydCA+IGxpbWl0KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJSYW5nZSBpcyAwLWxlbmd0aC4iKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChzdGFydCA9PSBsaW1pdCkgeworICAgICAgICAgICAgcmV0dXJuIHN0YXJ0OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHN0YXJ0ICsgKE1hdGguYWJzKHJhbmQubmV4dEludCgpKSUobGltaXQtc3RhcnQpKSA7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHJhbmRvbVRlc3QoKSB7CisKKyAgICAgICAgTVRleHQgbm9QYXJhZ3JhcGggPSBuZXcgU3R5bGVkVGV4dCgienp6eiIsIFBMQUlOKTsKKyAgICAgICAgbm9QYXJhZ3JhcGgubW9kaWZ5UGFyYWdyYXBoU3R5bGVzKDAsIG5vUGFyYWdyYXBoLmxlbmd0aCgpLCBBX01PRCk7CisgICAgICAgIE1UZXh0IHR3b1BhcmFncmFwaHMgPSBuZXcgU3R5bGVkVGV4dCgiYWFhXG5iYmIiLCBQTEFJTik7CisgICAgICAgIHR3b1BhcmFncmFwaHMubW9kaWZ5UGFyYWdyYXBoU3R5bGVzKDAsIHR3b1BhcmFncmFwaHMucGFyYWdyYXBoTGltaXQoMCksIEJfTU9EKTsKKyAgICAgICAgTVRleHQgdGhyZWVQYXJhZ3JhcGhzID0gbmV3IFN0eWxlZFRleHQoImNjXG5kZFxuZWUiLCBQTEFJTik7CisgICAgICAgIHRocmVlUGFyYWdyYXBocy5tb2RpZnlQYXJhZ3JhcGhTdHlsZXMoMCwgMywgQ19NT0QpOworICAgICAgICB0aHJlZVBhcmFncmFwaHMubW9kaWZ5UGFyYWdyYXBoU3R5bGVzKDMsIDYsIERfTU9EKTsKKyAgICAgICAgdGhyZWVQYXJhZ3JhcGhzLm1vZGlmeVBhcmFncmFwaFN0eWxlcyg2LCA4LCBFX01PRCk7CisgICAgICAgIE1UZXh0IHRyYWlsaW5nUDEgPSBuZXcgU3R5bGVkVGV4dCgiaGhoaFxuIiwgUExBSU4pOworICAgICAgICB0cmFpbGluZ1AxLm1vZGlmeVBhcmFncmFwaFN0eWxlcygwLCB0cmFpbGluZ1AxLnBhcmFncmFwaExpbWl0KDApLCBDX01PRCk7CisgICAgICAgIE1UZXh0IHRyYWlsaW5nUDIgPSBuZXcgU3R5bGVkVGV4dCgiaWlpXG4iLCBQTEFJTik7CisgICAgICAgIHRyYWlsaW5nUDIubW9kaWZ5UGFyYWdyYXBoU3R5bGVzKDAsIDAsIERfTU9EKTsKKyAgICAgICAgdHJhaWxpbmdQMi5tb2RpZnlQYXJhZ3JhcGhTdHlsZXModHJhaWxpbmdQMi5sZW5ndGgoKSwgdHJhaWxpbmdQMi5sZW5ndGgoKSwgQl9NT0QpOworCisgICAgICAgIGlmICghdHJhaWxpbmdQMi5wYXJhZ3JhcGhTdHlsZUF0KHRyYWlsaW5nUDIubGVuZ3RoKCktMSkuZXF1YWxzKERfU1RZTEUpKSB7CisgICAgICAgICAgICBlcnJsbigiU3R5bGUgaW5jb3JyZWN0IGluIHRyYWlsaW5nUDIiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIXRyYWlsaW5nUDIucGFyYWdyYXBoU3R5bGVBdCh0cmFpbGluZ1AyLmxlbmd0aCgpKS5lcXVhbHMoQl9TVFlMRSkpIHsKKyAgICAgICAgICAgIGVycmxuKCJFbmRpbmcgc3R5bGUgaW5jb3JyZWN0IGluIHRyYWlsaW5nUDIiKTsKKyAgICAgICAgfQorCisgICAgICAgIE1Db25zdFRleHRbXSB0ZXN0cyA9IHsgbm9QYXJhZ3JhcGgsIHR3b1BhcmFncmFwaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlZVBhcmFncmFwaHMsIHRyYWlsaW5nUDEsIHRyYWlsaW5nUDIgfTsKKworICAgICAgICBSYW5kb20gcmFuZG9tID0gbmV3IFJhbmRvbShSQU5EX1NFRUQpOworCisgICAgICAgIGludCBzdG9wQXQgPSA0NjU7CisgICAgICAgIGludCBpID0gMDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZvciAoaT0wOyBpIDwgTlVNX1RFU1RTOyBpKyspIHsKKworICAgICAgICAgICAgICAgIGludCBzcmNJbmRleCA9IHJhbmRJbnQocmFuZG9tLCB0ZXN0cy5sZW5ndGgpOworICAgICAgICAgICAgICAgIGludCB0YXJnZXRJbmRleCA9IHJhbmRJbnQocmFuZG9tLCB0ZXN0cy5sZW5ndGgpOworICAgICAgICAgICAgICAgIE1UZXh0IHRhcmdldCA9IG5ldyBTdHlsZWRUZXh0KHRlc3RzW3RhcmdldEluZGV4XSk7CisgICAgICAgICAgICAgICAgTUNvbnN0VGV4dCBzcmMgPSB0ZXN0c1tzcmNJbmRleF07CisKKyAgICAgICAgICAgICAgICBpbnQgc3JjU3RhcnQgPSByYW5kSW50KHJhbmRvbSwgc3JjLmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICBpbnQgc3JjTGltaXQgPSByYW5kSW50KHJhbmRvbSwgc3JjU3RhcnQsIHNyYy5sZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgaW50IHN0YXJ0ID0gcmFuZEludChyYW5kb20sIHRhcmdldC5sZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgaW50IGxpbWl0ID0gcmFuZEludChyYW5kb20sIHN0YXJ0LCB0YXJnZXQubGVuZ3RoKCkpOworCisgICAgICAgICAgICAgICAgaWYgKGkgPT0gc3RvcEF0KSB7CisgICAgICAgICAgICAgICAgICAgIHN0b3BBdCA9IGk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaW5zZXJ0QW5kQ2hlY2soc3JjLCBzcmNTdGFydCwgc3JjTGltaXQsIHRhcmdldCwgc3RhcnQsIGxpbWl0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBmaW5hbGx5IHsKKyAgICAgICAgICAgIGlmIChpIDwgTlVNX1RFU1RTKSB7CisgICAgICAgICAgICAgICAgbG9nbG4oIml0ZXJhdGlvbj0iICsgaSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgaW5zZXJ0QW5kQ2hlY2soTUNvbnN0VGV4dCBzcmMsIGludCBzcmNTdGFydCwgaW50IHNyY0xpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNVGV4dCB0YXJnZXQsIGludCBzdGFydCwgaW50IGxpbWl0KSB7CisKKyAgICAgICAgLy8gcC1zdHlsZSBhZnRlciBpbnNlcnRpb24KKyAgICAgICAgQXR0cmlidXRlTWFwIGFmdGVyOworICAgICAgICBpZiAobGltaXQgPT0gdGFyZ2V0Lmxlbmd0aCgpICYmIHNyY0xpbWl0ID4gc3JjU3RhcnQpIHsKKyAgICAgICAgICAgIGFmdGVyID0gc3JjLnBhcmFncmFwaFN0eWxlQXQoc3JjTGltaXQpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYWZ0ZXIgPSB0YXJnZXQucGFyYWdyYXBoU3R5bGVBdChsaW1pdCk7CisgICAgICAgIH0KKworICAgICAgICBBdHRyaWJ1dGVNYXAgYmVmb3JlOworICAgICAgICBib29sZWFuIHNyY0hhc1BCcmVhayA9IGZhbHNlOworICAgICAgICBmb3IgKGludCBpPXNyY1N0YXJ0OyBpIDwgc3JjTGltaXQ7IGkrKykgeworICAgICAgICAgICAgaWYgKGlzUGFyYWdyYXBoQnJlYWsoc3JjLmF0KGkpKSkgeworICAgICAgICAgICAgICAgIHNyY0hhc1BCcmVhayA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3RhcnQgPiAwICYmIGlzUGFyYWdyYXBoQnJlYWsodGFyZ2V0LmF0KHN0YXJ0LTEpKSkgeworICAgICAgICAgICAgYmVmb3JlID0gdGFyZ2V0LnBhcmFncmFwaFN0eWxlQXQoc3RhcnQtMSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBiZWZvcmUgPSBzcmNIYXNQQnJlYWs/IHNyYy5wYXJhZ3JhcGhTdHlsZUF0KHNyY1N0YXJ0KSA6IGFmdGVyOworICAgICAgICB9CisgICAgICAgIGJvb2xlYW4gc3R5bGVQcm9wb2dhdGVkID0gIWJlZm9yZS5lcXVhbHModGFyZ2V0LnBhcmFncmFwaFN0eWxlQXQoTWF0aC5tYXgoMCwgc3RhcnQtMSkpKTsKKworCisgICAgICAgIHRhcmdldC5yZXNldERhbWFnZWRSYW5nZSgpOworICAgICAgICB0YXJnZXQucmVwbGFjZShzdGFydCwgbGltaXQsIHNyYywgc3JjU3RhcnQsIHNyY0xpbWl0KTsKKyAgICAgICAgZmluYWwgaW50IGRhbWFnZUxpbWl0ID0gKHN0YXJ0PT1saW1pdCAmJiBzcmNTdGFydD09c3JjTGltaXQpPworICAgICAgICAgICAgICAgICAgICAgICAgSW50ZWdlci5NSU5fVkFMVUUgOiBzdGFydCArIChzcmNMaW1pdC1zcmNTdGFydCk7CisKKyAgICAgICAgaWYgKHRhcmdldC5kYW1hZ2VkUmFuZ2VMaW1pdCgpICE9IGRhbWFnZUxpbWl0KSB7CisgICAgICAgICAgICBsb2dsbigibGltaXQ6ICIgKyBkYW1hZ2VMaW1pdCArICI7ICB0YXJnZXQubGltaXQ6ICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuZGFtYWdlZFJhbmdlTGltaXQoKSk7CisgICAgICAgICAgICBlcnJsbigiRGFtYWdlZCByYW5nZSBsaW1pdCBpcyBpbmNvcnJlY3QiKTsKKyAgICAgICAgfQorCisgICAgICAgIGZpbmFsIGludCBkYW1hZ2VTdGFydCA9IChkYW1hZ2VMaW1pdD09SW50ZWdlci5NSU5fVkFMVUUpPyBJbnRlZ2VyLk1BWF9WQUxVRSA6CisgICAgICAgICAgICAgICAgKHN0eWxlUHJvcG9nYXRlZD8gdGFyZ2V0LnBhcmFncmFwaFN0YXJ0KE1hdGgubWF4KDAsIHN0YXJ0LTEpKSA6IHN0YXJ0KTsKKyAgICAgICAgaWYgKHRhcmdldC5kYW1hZ2VkUmFuZ2VTdGFydCgpID4gZGFtYWdlU3RhcnQpIHsKKyAgICAgICAgICAgIGxvZ2xuKCJzdGFydDogIiArIGRhbWFnZVN0YXJ0ICsgIjsgIHRhcmdldC5zdGFydDogIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5kYW1hZ2VkUmFuZ2VTdGFydCgpKTsKKyAgICAgICAgICAgIGVycmxuKCJEYW1hZ2VkIHJhbmdlIHN0YXJ0IGlzIGluY29ycmVjdCIpOworICAgICAgICB9CisKKyAgICAgICAgdmVyaWZ5UGFyYWdyYXBoQ291bnQodGFyZ2V0KTsKKworICAgICAgICAvLyBjaGVjayBlbmRwb2ludHMKKyAgICAgICAgaWYgKCFiZWZvcmUuZXF1YWxzKHRhcmdldC5wYXJhZ3JhcGhTdHlsZUF0KE1hdGgubWF4KHN0YXJ0LTEsIDApKSkpIHsKKyAgICAgICAgICAgIGVycmxuKCJJbmNvcnJlY3QgcGFyYWdyYXBoIHN0eWxlIGJlZm9yZSBtb2RpZmllZCByYW5nZSIpOworICAgICAgICB9CisKKyAgICAgICAgaW50IGxlbmd0aERlbHRhID0gKHNyY0xpbWl0LXNyY1N0YXJ0KSAtIChsaW1pdC1zdGFydCk7CisgICAgICAgIGludCBpbmRleEFmdGVySW5zZXJ0ID0gTWF0aC5taW4odGFyZ2V0Lmxlbmd0aCgpLCBsaW1pdCArIGxlbmd0aERlbHRhKTsKKyAgICAgICAgaWYgKCFhZnRlci5lcXVhbHModGFyZ2V0LnBhcmFncmFwaFN0eWxlQXQoaW5kZXhBZnRlckluc2VydCkpKSB7CisgICAgICAgICAgICBlcnJsbigiSW5jb3JyZWN0IHBhcmFncmFwaCBzdHlsZSBhZnRlciBtb2RpZmllZCByYW5nZSIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHNyY0hhc1BCcmVhaykgeworICAgICAgICAgICAgaW50IHN0YXJ0UCA9IHRhcmdldC5wYXJhZ3JhcGhMaW1pdChzdGFydCk7CisgICAgICAgICAgICBpbnQgbGltaXRPZlRlc3QgPSB0YXJnZXQucGFyYWdyYXBoU3RhcnQoaW5kZXhBZnRlckluc2VydCk7CisKKyAgICAgICAgICAgIGludCBvZmZzZXQgPSBzdGFydCAtIHNyY1N0YXJ0OworCisgICAgICAgICAgICB3aGlsZSAoc3RhcnRQIDwgbGltaXRPZlRlc3QpIHsKKyAgICAgICAgICAgICAgICBpbnQgbGltaXRQID0gdGFyZ2V0LnBhcmFncmFwaExpbWl0KHN0YXJ0UCk7CisgICAgICAgICAgICAgICAgaWYgKHNyYy5wYXJhZ3JhcGhMaW1pdChzdGFydFAtb2Zmc2V0KSArIG9mZnNldCAhPSBsaW1pdFApIHsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oInBhcmFncmFwaCBsaW1pdHMgYXJlIG5vdCBjb25zaXN0ZW50Iik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICghc3JjLnBhcmFncmFwaFN0eWxlQXQoc3RhcnRQLW9mZnNldCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5lcXVhbHModGFyZ2V0LnBhcmFncmFwaFN0eWxlQXQoc3RhcnRQKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oInBhcmFncmFwaCBzdHlsZXMgYXJlIG5vdCBjb25zaXN0ZW50Iik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHN0YXJ0UCA9IGxpbWl0UDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZvciAoaW50IGk9c3RhcnQ7IGkgPCBzdGFydCsoc3JjTGltaXQtc3JjU3RhcnQpOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAoIWFmdGVyLmVxdWFscyh0YXJnZXQucGFyYWdyYXBoU3R5bGVBdChpKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oInBhcmFncmFwaCBzdHlsZSBjaGFuZ2VkIHVuZXhwZWN0ZWRseSIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCB2ZXJpZnlQYXJhZ3JhcGhDb3VudChNQ29uc3RUZXh0IHRleHQpIHsKKworICAgICAgICBpbnQgcENvdW50ID0gMDsKKyAgICAgICAgaW50IHRleHRMZW5ndGggPSB0ZXh0Lmxlbmd0aCgpOworCisgICAgICAgIGlmICh0ZXh0TGVuZ3RoID09IDApIHsKKyAgICAgICAgICAgIHBDb3VudCA9IDE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBmb3IgKGludCBzPTA7IHMgPCB0ZXh0TGVuZ3RoOyBzID0gdGV4dC5wYXJhZ3JhcGhMaW1pdChzKSkgeworICAgICAgICAgICAgICAgIHBDb3VudCsrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGlzUGFyYWdyYXBoQnJlYWsodGV4dC5hdCh0ZXh0TGVuZ3RoLTEpKSkgeworICAgICAgICAgICAgICAgIHBDb3VudCsrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaW50IHNlcENvdW50ID0gMDsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgdGV4dExlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBpZiAoaXNQYXJhZ3JhcGhCcmVhayh0ZXh0LmF0KGkpKSkgeworICAgICAgICAgICAgICAgIHNlcENvdW50Kys7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoc2VwQ291bnQgKyAxICE9IHBDb3VudCkgeworICAgICAgICAgICAgbG9nbG4oInNlcENvdW50PSIgKyBzZXBDb3VudCArICI7ICBwQ291bnQ9IiArIHBDb3VudCk7CisgICAgICAgICAgICBlcnJsbigiUGFyYWdyYXBoIGNvdW50IGlzIG5vdCBjb25zaXN0ZW50IHdpdGggY2hhcmFjdGVycyIpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGNoZWNrRW5kcG9pbnQoTUNvbnN0VGV4dCB0ZXh0KSB7CisKKyAgICAgICAgYm9vbGVhbiBlbXB0eUZpbmFsUGFyYWdyYXBoOworICAgICAgICBpbnQgbGVuZ3RoID0gdGV4dC5sZW5ndGgoKTsKKworICAgICAgICBpZiAobGVuZ3RoICE9IDApIHsKKyAgICAgICAgICAgIGNoYXIgY2ggPSB0ZXh0LmF0KGxlbmd0aC0xKTsKKyAgICAgICAgICAgIGVtcHR5RmluYWxQYXJhZ3JhcGggPSBpc1BhcmFncmFwaEJyZWFrKGNoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGVtcHR5RmluYWxQYXJhZ3JhcGggPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCh0ZXh0LnBhcmFncmFwaFN0YXJ0KGxlbmd0aCkgPT0gbGVuZ3RoKSAhPSBlbXB0eUZpbmFsUGFyYWdyYXBoKSB7CisgICAgICAgICAgICBlcnJsbigiRmluYWwgcGFyYWdyYXBoIGxlbmd0aCBpcyBpbmNvcnJlY3QiKTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0YXBwcy9BcHBDbG9zZXIuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRhcHBzL0FwcENsb3Nlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjYzZDdhN2UKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0YXBwcy9BcHBDbG9zZXIuamF2YQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBBcHBDbG9zZXIuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo0ODo1MSAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRleHRhcHBzOworCitpbXBvcnQgamF2YS5hd3QuZXZlbnQuV2luZG93QWRhcHRlcjsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5XaW5kb3dFdmVudDsKK2ltcG9ydCBqYXZhLmF3dC5GcmFtZTsKK2ltcG9ydCBqYXZhLmF3dC5XaW5kb3c7CisKK2NsYXNzIEFwcENsb3NlciB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHByaXZhdGUgaW50IGZDb3VudCA9IDA7CisKKyAgICBwcml2YXRlIFdpbmRvd0FkYXB0ZXIgZkFkYXB0ZXIgPSBuZXcgV2luZG93QWRhcHRlcigpIHsKKworICAgICAgICBwdWJsaWMgdm9pZCB3aW5kb3dDbG9zaW5nKFdpbmRvd0V2ZW50IGUpIHsKKyAgICAgICAgICAgIC0tZkNvdW50OworICAgICAgICAgICAgaWYgKGZDb3VudCA9PSAwKSB7CisgICAgICAgICAgICAgICAgU3lzdGVtLmV4aXQoMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBXaW5kb3cgdyA9IGUuZ2V0V2luZG93KCk7CisgICAgICAgICAgICB3LnNldFZpc2libGUoZmFsc2UpOworICAgICAgICAgICAgdy5kaXNwb3NlKCk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgcHVibGljIHZvaWQgbGlzdGVuVG9GcmFtZShGcmFtZSBmcmFtZSkgeworCisgICAgICAgICsrZkNvdW50OworICAgICAgICBmcmFtZS5hZGRXaW5kb3dMaXN0ZW5lcihmQWRhcHRlcik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dGFwcHMvQmlkaURlbW8uamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRhcHBzL0JpZGlEZW1vLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMTBkNDExMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRhcHBzL0JpZGlEZW1vLmphdmEKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogQmlkaURlbW8uamF2YSx2ICQgJFJldmlzaW9uOiAxLjMgJCAkRGF0ZTogMjAwMi8xMi8xMiAyMzoyNjo1NyAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRleHRhcHBzOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1Db25zdFRleHQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0LlN0eWxlZFRleHQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlTWFwOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuYXd0dWkuVGV4dEZyYW1lOworCitpbXBvcnQgamF2YS5hd3QuZXZlbnQuV2luZG93QWRhcHRlcjsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5XaW5kb3dFdmVudDsKK2ltcG9ydCBqYXZhLmF3dC5Ub29sa2l0OworCitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGphdmEubmV0LlVSTDsKK2ltcG9ydCBqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGU7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CisKK3B1YmxpYyBjbGFzcyBCaWRpRGVtbyB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEFwcENsb3NlciBmZ0xpc3RlbmVyID0gbmV3IEFwcENsb3NlcigpOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEJVTkRMRV9OQU1FID0gImNvbS5pYm0ucmljaHRleHQudGV4dGFwcHMucmVzb3VyY2VzLlNhbXBsZSI7CisgICAgCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworCisgICAgICAgIFN0cmluZyBkb2NOYW1lOworICAgICAgICAKKyAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID09IDApIHsKKyAgICAgICAgICAgIGRvY05hbWUgPSAiZGVmYXVsdCI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBkb2NOYW1lID0gYXJnc1swXTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgb3BlblRleHQoZG9jTmFtZSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBvcGVuVGV4dChTdHJpbmcgZG9jTmFtZSkgeworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBSZXNvdXJjZUJ1bmRsZSBidW5kbGUgPSBSZXNvdXJjZUJ1bmRsZS5nZXRCdW5kbGUoQlVORExFX05BTUUpOworCisgICAgICAgICAgICBPYmplY3QgZG9jdW1lbnQgPSBidW5kbGUuZ2V0T2JqZWN0KGRvY05hbWUrIi5zYW1wbGUiKTsKKyAgICAgICAgICAgIE1Db25zdFRleHQgdGV4dDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGRvY3VtZW50IGluc3RhbmNlb2YgU3RyaW5nKSB7CisgICAgICAgICAgICAgICAgdGV4dCA9IG5ldyBTdHlsZWRUZXh0KChTdHJpbmcpZG9jdW1lbnQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVNYXAuRU1QVFlfQVRUUklCVVRFX01BUCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBVUkwgdXJsID0gKFVSTCkgZG9jdW1lbnQ7CisgICAgICAgICAgICAgICAgT2JqZWN0SW5wdXRTdHJlYW0gaW4gPSBuZXcgT2JqZWN0SW5wdXRTdHJlYW0odXJsLm9wZW5TdHJlYW0oKSk7CisgICAgICAgICAgICAgICAgdGV4dCA9IChNQ29uc3RUZXh0KSBpbi5yZWFkT2JqZWN0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFN0cmluZyBuYW1lID0gYnVuZGxlLmdldFN0cmluZyhkb2NOYW1lKyIubmFtZSIpOworICAgICAgICAgICAgCisgICAgICAgICAgICBtYWtlRnJhbWUodGV4dCwgbmFtZSk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2goVGhyb3dhYmxlIHQpIHsKKyAgICAgICAgICAgIHQucHJpbnRTdGFja1RyYWNlKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIG1ha2VGcmFtZShNQ29uc3RUZXh0IHRleHQsIFN0cmluZyB0aXRsZSkgeworCisgICAgICAgIFRleHRGcmFtZSBmcmFtZSA9IG5ldyBUZXh0RnJhbWUodGV4dCwgdGl0bGUsIAorICAgICAgICAgICAgICAgIFRvb2xraXQuZ2V0RGVmYXVsdFRvb2xraXQoKS5nZXRTeXN0ZW1DbGlwYm9hcmQoKSk7CisgICAgICAgIGZyYW1lLnNldFNpemUoNTUwLCA3MDApOworICAgICAgICBmcmFtZS5zaG93KCk7CisgICAgICAgIGZnTGlzdGVuZXIubGlzdGVuVG9GcmFtZShmcmFtZSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dGFwcHMvRmlsZVV0aWxzLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0YXBwcy9GaWxlVXRpbHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wZjc4YmU4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dGFwcHMvRmlsZVV0aWxzLmphdmEKQEAgLTAsMCArMSwxMzAgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IEZpbGVVdGlscy5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjQ4OjUxICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudGV4dGFwcHM7CisKK2ltcG9ydCBqYXZhLmF3dC5GaWxlRGlhbG9nOworaW1wb3J0IGphdmEuYXd0LkZyYW1lOworaW1wb3J0IGphdmEuaW8uKjsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NQ29uc3RUZXh0OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NVGV4dDsKKworcHVibGljIGNsYXNzIEZpbGVVdGlscyB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIC8qKgorICAgICAqIFByZXNlbnQgdGhlIHVzZXIgd2l0aCBhIGZpbGUgZGlhbG9nLCBhbmQgcmVwbGFjZQorICAgICAqIGRlc3Qgd2l0aCB0aGUgTVRleHQgaW4gdGhlIHNlbGVjdGVkIGZpbGUsIGFuZCByZXR1cm4KKyAgICAgKiB0aGUgZmlsZSBvYmpjdC4gIElmIGFueSBlcnJvcnMgb2NjdXIsIHJldHVybiBudWxsIGFuZAorICAgICAqIGRvIG5vdCBtb2RpZnkgZGVzdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIEZpbGUgdXNlckxvYWRNVGV4dChTdHJpbmcgdGl0bGUsIE1UZXh0IGRlc3QsIEZyYW1lIG93bmVyKSB7CisKKyAgICAgICAgRmlsZURpYWxvZyBkaWFsb2cgPSBuZXcgRmlsZURpYWxvZyhvd25lciwgdGl0bGUsIEZpbGVEaWFsb2cuTE9BRCk7CisgICAgICAgIGRpYWxvZy5zaG93KCk7CisgICAgICAgIFN0cmluZyBmaWxlU3RyID0gZGlhbG9nLmdldEZpbGUoKTsKKyAgICAgICAgU3RyaW5nIGRpclN0ciA9IGRpYWxvZy5nZXREaXJlY3RvcnkoKTsKKworICAgICAgICBpZiAoZmlsZVN0ciAhPSBudWxsKSB7CisgICAgICAgICAgICBGaWxlIHJ2YWwgPSBuZXcgRmlsZShkaXJTdHIsIGZpbGVTdHIpOworICAgICAgICAgICAgTUNvbnN0VGV4dCBzcmMgPSBsb2FkTVRleHQocnZhbCk7CisgICAgICAgICAgICBpZiAoc3JjICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBkZXN0LnJlcGxhY2VBbGwoc3JjKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcnZhbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgTVRleHQgc2VyaWFsaXplZCBpbiB0aGUgZ2l2ZW4gZmlsZS4KKyAgICAgKiBJbiBjYXNlIG9mIGFuIGVycm9yIHJldHVybiBudWxsLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgTUNvbnN0VGV4dCBsb2FkTVRleHQoRmlsZSBmaWxlKSB7CisKKyAgICAgICAgVGhyb3dhYmxlIGVycm9yOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBGaWxlSW5wdXRTdHJlYW0gaW5TdHJlYW0gPSBuZXcgRmlsZUlucHV0U3RyZWFtKGZpbGUpOworICAgICAgICAgICAgT2JqZWN0SW5wdXRTdHJlYW0gb2JqU3RyZWFtID0gbmV3IE9iamVjdElucHV0U3RyZWFtKGluU3RyZWFtKTsKKworICAgICAgICAgICAgTUNvbnN0VGV4dCB0ZXh0ID0gKE1Db25zdFRleHQpIG9ialN0cmVhbS5yZWFkT2JqZWN0KCk7CisgICAgICAgICAgICBpblN0cmVhbS5jbG9zZSgpOworICAgICAgICAgICAgcmV0dXJuIHRleHQ7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2goSU9FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJyb3IgPSBlOworICAgICAgICB9CisgICAgICAgIGNhdGNoKENsYXNzTm90Rm91bmRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJyb3IgPSBlOworICAgICAgICB9CisgICAgICAgIGNhdGNoKENsYXNzQ2FzdEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJvciA9IGU7CisgICAgICAgIH0KKworICAgICAgICBlcnJvci5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgLyoqCisgICAgICogUHJvbXB0IHRoZSB1c2VyIGZvciB0aGUgZmlsZSBpZiBmaWxlIGlzIG51bGwuICBUaGVuIHNhdmUgdGhlCisgICAgICogdGV4dCBpbiB0aGUgZmlsZSwgaWYgYW55LgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgRmlsZSB1c2VyU2F2ZU1UZXh0KEZpbGUgZmlsZSwgU3RyaW5nIHRpdGxlLCBNQ29uc3RUZXh0IHRleHQsIEZyYW1lIG93bmVyKSB7CisKKyAgICAgICAgaWYgKGZpbGUgPT0gbnVsbCkgeworCisgICAgICAgICAgICBGaWxlRGlhbG9nIGRpYWxvZyA9IG5ldyBGaWxlRGlhbG9nKG93bmVyLCB0aXRsZSwgRmlsZURpYWxvZy5TQVZFKTsKKyAgICAgICAgICAgIGRpYWxvZy5zaG93KCk7CisgICAgICAgICAgICBTdHJpbmcgZmlsZVN0ciA9IGRpYWxvZy5nZXRGaWxlKCk7CisgICAgICAgICAgICBTdHJpbmcgZGlyU3RyID0gZGlhbG9nLmdldERpcmVjdG9yeSgpOworCisgICAgICAgICAgICBpZiAoZmlsZVN0ciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgZmlsZSA9IG5ldyBGaWxlKGRpclN0ciwgZmlsZVN0cik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoZmlsZSAhPSBudWxsKSB7CisKKyAgICAgICAgICAgIHNhdmVNVGV4dChmaWxlLCB0ZXh0KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmaWxlOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBzYXZlTVRleHQoRmlsZSBmaWxlLCBNQ29uc3RUZXh0IHRleHQpIHsKKworICAgICAgICBUaHJvd2FibGUgZXJyb3I7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIE91dHB1dFN0cmVhbSBvdXRTdHJlYW0gPSBuZXcgRmlsZU91dHB1dFN0cmVhbShmaWxlKTsKKyAgICAgICAgICAgIE9iamVjdE91dHB1dFN0cmVhbSBvYmpTdHJlYW0gPSBuZXcgT2JqZWN0T3V0cHV0U3RyZWFtKG91dFN0cmVhbSk7CisKKyAgICAgICAgICAgIG9ialN0cmVhbS53cml0ZU9iamVjdCh0ZXh0KTsKKyAgICAgICAgICAgIG91dFN0cmVhbS5jbG9zZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNhdGNoKElPRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycm9yID0gZTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaChDbGFzc0Nhc3RFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJyb3IgPSBlOworICAgICAgICB9CisKKyAgICAgICAgZXJyb3IucHJpbnRTdGFja1RyYWNlKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRhcHBzL01UZXh0VG9TdHJpbmcuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRhcHBzL01UZXh0VG9TdHJpbmcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41NTJkNzcwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dGFwcHMvTVRleHRUb1N0cmluZy5qYXZhCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IE1UZXh0VG9TdHJpbmcuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo0ODo1MSAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRleHRhcHBzOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1Db25zdFRleHQ7CisKK2ltcG9ydCBqYXZhLmlvLio7CisKK3B1YmxpYyBmaW5hbCBjbGFzcyBNVGV4dFRvU3RyaW5nIHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworCisKKyAgICAgICAgaWYgKGFyZ3MubGVuZ3RoICE9IDIpIHsKKyAgICAgICAgICAgIHVzYWdlKCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB3cml0ZU1UZXh0QXNTdHJpbmcoYXJnc1swXSwgYXJnc1sxXSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIHVzYWdlKCkgeworCisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVXNhZ2U6IE1UZXh0VG9TdHJpbmcgaW5GaWxlIG91dEZpbGUiKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJpbkZpbGUgbXVzdCBiZSBhIHNlcmlhbGl6ZWQgTUNvbnN0VGV4dCIpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIk9uIGV4aXQsIG91dEZpbGUgd2lsbCBiZSBhIHNlcmlhbGl6ZWQgU3RyaW5nICIpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImNvbnRhaW5pbmcgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIHRleHQuIik7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiaW5GaWxlIGFuZCBvdXRGaWxlIG11c3Qgbm90IGJlIHRoZSBzYW1lLiIpOworICAgICAgICBTeXN0ZW0uZXhpdCgxKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgd3JpdGVNVGV4dEFzU3RyaW5nKFN0cmluZyBpbkZpbGUsIFN0cmluZyBvdXRGaWxlKSB7CisKKyAgICAgICAgRmlsZSBmaWxlID0gbmV3IEZpbGUoaW5GaWxlKTsKKyAgICAgICAgTUNvbnN0VGV4dCB0ZXh0ID0gRmlsZVV0aWxzLmxvYWRNVGV4dChmaWxlKTsKKworICAgICAgICBpZiAodGV4dCAhPSBudWxsKSB7CisgICAgICAgICAgICBjaGFyW10gY2ggPSBuZXcgY2hhclt0ZXh0Lmxlbmd0aCgpXTsKKyAgICAgICAgICAgIHRleHQuZXh0cmFjdENoYXJzKDAsIGNoLmxlbmd0aCwgY2gsIDApOworICAgICAgICAgICAgU3RyaW5nIHN0ciA9IG5ldyBTdHJpbmcoY2gpOworICAgICAgICAgICAgd3JpdGVTdHJpbmcoc3RyLCBvdXRGaWxlKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQ2FuJ3QgcmVhZCBpbkZpbGUuIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgd3JpdGVTdHJpbmcoU3RyaW5nIHN0cmluZ1RvV3JpdGUsIFN0cmluZyBvdXRGaWxlKSB7CisKKyAgICAgICAgRmlsZSBmaWxlID0gbmV3IEZpbGUob3V0RmlsZSk7CisgICAgICAgIFRocm93YWJsZSBlcnJvciA9IG51bGw7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIE91dHB1dFN0cmVhbSBvdXRTdHJlYW0gPSBuZXcgRmlsZU91dHB1dFN0cmVhbShmaWxlKTsKKyAgICAgICAgICAgIE9iamVjdE91dHB1dFN0cmVhbSBvYmpTdHJlYW0gPSBuZXcgT2JqZWN0T3V0cHV0U3RyZWFtKG91dFN0cmVhbSk7CisKKyAgICAgICAgICAgIG9ialN0cmVhbS53cml0ZU9iamVjdChzdHJpbmdUb1dyaXRlKTsKKyAgICAgICAgICAgIG91dFN0cmVhbS5jbG9zZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNhdGNoKElPRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycm9yID0gZTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaChDbGFzc0Nhc3RFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJyb3IgPSBlOworICAgICAgICB9CisKKyAgICAgICAgZXJyb3IucHJpbnRTdGFja1RyYWNlKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRhcHBzL1N0cmluZ1RvTVRleHQuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRhcHBzL1N0cmluZ1RvTVRleHQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4yMDFkNTJmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dGFwcHMvU3RyaW5nVG9NVGV4dC5qYXZhCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFN0cmluZ1RvTVRleHQuamF2YSx2ICQgJFJldmlzaW9uOiAxLjIgJCAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNjo0MSAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRleHRhcHBzOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1Db25zdFRleHQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0LlN0eWxlZFRleHQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlTWFwOworCitpbXBvcnQgamF2YS5pby4qOworCitwdWJsaWMgZmluYWwgY2xhc3MgU3RyaW5nVG9NVGV4dCB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKworCisgICAgICAgIGlmIChhcmdzLmxlbmd0aCAhPSAyIHx8IGFyZ3NbMF0uZXF1YWxzKGFyZ3NbMV0pKSB7CisgICAgICAgICAgICB1c2FnZSgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgU3RyaW5nIHN0ciA9IGxvYWRTdHJpbmcobmV3IEZpbGUoYXJnc1swXSkpOworICAgICAgICAgICAgaWYgKHN0ciA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJDb3VsZG4ndCBsb2FkIFN0cmluZyBmcm9tIGZpbGUgIiArIGFyZ3NbMF0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgTUNvbnN0VGV4dCB0ZXh0ID0gbmV3IFN0eWxlZFRleHQoc3RyLCBBdHRyaWJ1dGVNYXAuRU1QVFlfQVRUUklCVVRFX01BUCk7CisgICAgICAgICAgICBGaWxlVXRpbHMuc2F2ZU1UZXh0KG5ldyBGaWxlKGFyZ3NbMV0pLCB0ZXh0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIHZvaWQgdXNhZ2UoKSB7CisKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJVc2FnZTogU3RyaW5nVG9NVGV4dCBpbkZpbGUgb3V0RmlsZSIpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImluRmlsZSBtdXN0IGJlIGEgc2VyaWFsaXplZCBTdHJpbmciKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJPbiBleGl0LCBvdXRGaWxlIHdpbGwgYmUgYSBzZXJpYWxpemVkIE1UZXh0ICIpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImNvbnRhaW5pbmcgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZy4iKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJpbkZpbGUgYW5kIG91dEZpbGUgbXVzdCBub3QgYmUgdGhlIHNhbWUuIik7CisgICAgICAgIFN5c3RlbS5leGl0KDEpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGxvYWRTdHJpbmcoRmlsZSBmaWxlKSB7CisKKyAgICAgICAgVGhyb3dhYmxlIGVycm9yOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBGaWxlSW5wdXRTdHJlYW0gaW5TdHJlYW0gPSBuZXcgRmlsZUlucHV0U3RyZWFtKGZpbGUpOworICAgICAgICAgICAgT2JqZWN0SW5wdXRTdHJlYW0gb2JqU3RyZWFtID0gbmV3IE9iamVjdElucHV0U3RyZWFtKGluU3RyZWFtKTsKKworICAgICAgICAgICAgU3RyaW5nIHN0ciA9IChTdHJpbmcpIG9ialN0cmVhbS5yZWFkT2JqZWN0KCk7CisgICAgICAgICAgICBpblN0cmVhbS5jbG9zZSgpOworICAgICAgICAgICAgcmV0dXJuIHN0cjsKKyAgICAgICAgfQorICAgICAgICBjYXRjaChJT0V4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJvciA9IGU7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2goQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJvciA9IGU7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2goQ2xhc3NDYXN0RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycm9yID0gZTsKKyAgICAgICAgfQorCisgICAgICAgIGVycm9yLnByaW50U3RhY2tUcmFjZSgpOworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dGFwcHMvVGVzdE1UZXh0VG9TdHJpbmcuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRhcHBzL1Rlc3RNVGV4dFRvU3RyaW5nLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNjkwNDY4YgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRhcHBzL1Rlc3RNVGV4dFRvU3RyaW5nLmphdmEKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogVGVzdE1UZXh0VG9TdHJpbmcuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo0ODo1MSAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRleHRhcHBzOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1Db25zdFRleHQ7CitpbXBvcnQgamF2YS5pby5GaWxlOworCitwdWJsaWMgZmluYWwgY2xhc3MgVGVzdE1UZXh0VG9TdHJpbmcgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisKKyAgICAgICAgaWYgKGFyZ3MubGVuZ3RoICE9IDIgfHwgYXJnc1swXS5lcXVhbHMoYXJnc1sxXSkpIHsKKyAgICAgICAgICAgIHVzYWdlKCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBib29sZWFuIHN1Y2Nlc3MgPSB0ZXN0TVRleHRUb1N0cmluZyhhcmdzWzBdLCBhcmdzWzFdKTsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihzdWNjZXNzPyAiUEFTU0VEIiA6ICJGQUlMRUQiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIHZvaWQgdXNhZ2UoKSB7CisKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJVc2FnZTogVGVzdE1UZXh0VG9TdHJpbmcgbXRleHRGaWxlIHN0cmluZ0ZpbGUiKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJDb21wYXJlcyB0aGUgY2hhcmFjdGVycyBpbiBtdGV4dEZpbGUgdG8gdGhlIik7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiU3RyaW5nIGluIHN0cmluZ0ZpbGUuIik7CisgICAgICAgIFN5c3RlbS5leGl0KDApOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiB0ZXN0TVRleHRUb1N0cmluZyhTdHJpbmcgbXRleHRGaWxlLCBTdHJpbmcgc3RyaW5nRmlsZSkgeworCisgICAgICAgIGJvb2xlYW4gc3VjY2VzcyA9IGZhbHNlOworCisgICAgICAgIEZpbGUgbXRleHQgPSBuZXcgRmlsZShtdGV4dEZpbGUpOworICAgICAgICBNQ29uc3RUZXh0IHRleHQgPSBGaWxlVXRpbHMubG9hZE1UZXh0KG10ZXh0KTsKKyAgICAgICAgaWYgKHRleHQgIT0gbnVsbCkgeworICAgICAgICAgICAgU3RyaW5nIHN0ciA9IFN0cmluZ1RvTVRleHQubG9hZFN0cmluZyhuZXcgRmlsZShzdHJpbmdGaWxlKSk7CisgICAgICAgICAgICBpZiAoc3RyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBzdWNjZXNzID0gY29tcGFyZU1UZXh0VG9TdHJpbmcodGV4dCwgc3RyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQ291bGRuJ3QgbG9hZCBTdHJpbmcuIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkNvdWxkbid0IGxvYWQgTVRleHQuIik7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gc3VjY2VzczsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gY29tcGFyZU1UZXh0VG9TdHJpbmcoTUNvbnN0VGV4dCB0ZXh0LCBTdHJpbmcgc3RyKSB7CisKKyAgICAgICAgaWYgKHRleHQubGVuZ3RoKCkgIT0gc3RyLmxlbmd0aCgpKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpbnQgaT1zdHIubGVuZ3RoKCktMTsgaSA+PSAwOyBpLS0pIHsKKyAgICAgICAgICAgIGlmICh0ZXh0LmF0KGkpICE9IHN0ci5jaGFyQXQoaSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRhcHBzL3Jlc291cmNlcy9TYW1wbGUuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRhcHBzL3Jlc291cmNlcy9TYW1wbGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xMTE5NjBhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dGFwcHMvcmVzb3VyY2VzL1NhbXBsZS5qYXZhCkBAIC0wLDAgKzEsMzIgQEAKKy8qKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMS0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0YXBwcy9yZXNvdXJjZXMvU2FtcGxlLmphdmEsdiAkCisgKiAkRGF0ZTogMjAwMi8xMi8xMiAyMzoyNjo1NiAkCisgKiAkUmV2aXNpb246IDEuMyAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRleHRhcHBzLnJlc291cmNlczsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKK3B1YmxpYyBmaW5hbCBjbGFzcyBTYW1wbGUgZXh0ZW5kcyBMaXN0UmVzb3VyY2VCdW5kbGUgeworICAgIAorICAgIHB1YmxpYyBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeworCisgICAgICAgIE9iamVjdCBzYW1wbGUgPSB0aGlzLmdldENsYXNzKCkuZ2V0UmVzb3VyY2UoImhhZ2FuIik7CisKKyAgICAgICAgcmV0dXJuIG5ldyBPYmplY3RbXVtdIHsKKyAgICAgICAgICAgIHsgImRlZmF1bHQuc2FtcGxlIiwgdGhpcy5nZXRDbGFzcygpLmdldFJlc291cmNlKCJ1bmljb2RlLmhlYnJldy5yZWQiKSB9LAorICAgICAgICAgICAgeyAiZGVmYXVsdC5uYW1lIiwgIldoYXQgaXMgVW5pY29kZSAtIEhlYnJldyIgfSwKKyAgICAgICAgICAgIHsgImFyYWJpYy5zYW1wbGUiLCB0aGlzLmdldENsYXNzKCkuZ2V0UmVzb3VyY2UoInVuaWNvZGUuYXJhYmljLnJlZCIpIH0sCisgICAgICAgICAgICB7ICJhcmFiaWMubmFtZSIsICJXaGF0IGlzIFVuaWNvZGUgLSBBcmFiaWMiIH0sCisgICAgICAgICAgICB7ICJqYXBhbmVzZS5zYW1wbGUiLCAiXHU2Y2U4OiB7MX0gXHUzMDZlXHUzMGUxXHUzMGJkXHUzMGMzXHUzMGM5IHswfSBcdTMwNmZcdTYzYThcdTU5NjhcdTMwNTVcdTMwOGNcdTMwN2VcdTMwNWJcdTMwOTNcdTMwMDIiIH0sCisgICAgICAgICAgICB7ICJqYXBhbmVzZS5uYW1lIiwgIkphcGFuZXNlIE1lc3NhZ2UiIH0sCisgICAgICAgIH07CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dGZvcm1hdC9Bc3luY0Zvcm1hdHRlci5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dGZvcm1hdC9Bc3luY0Zvcm1hdHRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmZmOWM2MmYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0Zm9ybWF0L0FzeW5jRm9ybWF0dGVyLmphdmEKQEAgLTAsMCArMSwyMDUzIEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBBc3luY0Zvcm1hdHRlci5qYXZhLHYgJCAkUmV2aXNpb246IDEuMyAkICREYXRlOiAyMDAyLzAyLzE2IDAzOjA2OjQyICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCisvLyBSZXF1aXJlcyBKYXZhMgorLy8gUmV2aXNpb246IDcwIDEuMzggcmljaHRleHQvQXN5bmNGb3JtYXR0ZXIuamF2YSwgcmljaHRleHQsIHJpY2h0ZXh0CisKK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0Zm9ybWF0OworCitpbXBvcnQgamF2YS5hd3QuR3JhcGhpY3M7CitpbXBvcnQgamF2YS5hd3QuUmVjdGFuZ2xlOworaW1wb3J0IGphdmEuYXd0LlBvaW50OworaW1wb3J0IGphdmEuYXd0LkNvbG9yOworCitpbXBvcnQgamF2YS50ZXh0LkJyZWFrSXRlcmF0b3I7CitpbXBvcnQgamF2YS50ZXh0LkNoYXJhY3Rlckl0ZXJhdG9yOworCitpbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZU1hcDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRsYXlvdXQuYXR0cmlidXRlcy5UZXh0QXR0cmlidXRlOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1Db25zdFRleHQ7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRsYXlvdXQuR3JhcGhpY3MyRENvbnZlcnNpb247CisKKy8vLypKREsxMklNUE9SVFMKK2ltcG9ydCBqYXZhLmF3dC5HcmFwaGljczJEOworaW1wb3J0IGphdmEuYXd0LmZvbnQuTGluZUJyZWFrTWVhc3VyZXI7CitpbXBvcnQgamF2YS5hd3QuZm9udC5Gb250UmVuZGVyQ29udGV4dDsKKy8vSkRLMTJJTVBPUlRTKi8KKworLypKREsxMUlNUE9SVFMKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRsYXlvdXQuR3JhcGhpY3MyRDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRsYXlvdXQuTGluZUJyZWFrTWVhc3VyZXI7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0bGF5b3V0LkZvbnRSZW5kZXJDb250ZXh0OworSkRLMTFJTVBPUlRTKi8KKworLyoKKyAgICBDaGFuZ2UgaGlzdG9yeToKKworICAgIDcvMjUvOTYgLQorCisgICAgOC8xNS85NgorICAgICAgICBGaXhlZCBidWcgaW4gdGV4dE9mZnNldFRvUG9pbnQgKGZQaXhIZWlnaHQgd2Fzbid0IGFkZGVkIHRvIG5lZ2F0aXZlIGhlaWdodHMpLiB7amJyfQorCisgICAgOC8xOS85NgorICAgICAgICBSZW1vdmVkIHJlZmVyZW5jZXMgdG8gSnVzdGlmaWNhdGlvblN0eWxlIGNvbnN0YW50cywgYW5kIG1vdmVkIHRoZW0gaW50byBNRm9ybWF0dGVyIHtzZmJ9CisKKyAgICA4LzIzLzk2CisgICAgICAgIE1vZGlmaWVkIGZpbmRMaW5lQXQgYW5kIGdldExpbmVDb250YWluaW5nIC0gYWRkZWQgb3B0aW1pemF0aW9uIGluIHNlYXJjaCBsb29wLiAgQWxzbywKKyAgICAgICAgICAgIHRoZXkgd2VyZSBmYWlsaW5nIHdoZW4gZkxUUG9zRW5kKzEgPT0gZkxUTmVnU3RhcnQuICBGaXhlZC4KKworICAgIDgvMjYvOTYKKyAgICAgICAgTW92ZWQgRm9ybWF0RGFlbW9uIHN0dWZmIGludG8gdGhpcyBjbGFzcy4KKworICAgIDkvMTEvOTYKKyAgICAgICAgU2hvcnRlbmVkIGxpbmUgcmV0dXJuZWQgZnJvbSB0ZXh0T2Zmc2V0VG9Qb2ludCBieSAxIHBpeGVsCisKKyAgICA5LzIzLzk2CisgICAgICAgIHRleHRPZmZzZXRUb1BvaW50IGxpbmUgbGVuZ3RoIHJlc3RvcmVkIChzZWUgYWJvdmUpLiAgZHJhd1RleHQoKSBub3cgZHJhd3Mgb25seSBsaW5lcworICAgICAgICB3aGljaCBmYWxsIGluIHJlY3RhbmdsZSBwYXJhbS4KKworICAgIDkvMjYvOTYKKyAgICAgICAgd2hpdGVzcGFjZSBhdCBlbmQgb2YgbGluZSBpcyB1c2VkIGZvciBjYXJldCBwb3NpdGlvbmluZworCisgICAgMTAvNC85NgorICAgICAgICBBZGRlZCBzdGF0aWMgVGV4dEJveCBtZXRob2QuCisKKyAgICAxMC84Lzk2CisgICAgICAgIExpbmUgMTMwMCAtIGxlc3MgdGhhbiBjaGFuZ2VkIHRvIGxlc3MgdGhhbiBvciBlcXVhbCBpbiB0ZXh0T2Zmc2V0VG9Qb2ludC4gIFdhdGNoIGZvcgorICAgICAgICAgICAgaGFuZ3MgaW4gZm9ybWF0VGV4dC4KKworICAgIDEwLzkvOTYKKyAgICAgICAgQ2hhbmdlZCBzeW5jLiBtb2RlbC4gIGZGb3JtYXRJbkJhY2tncm91bmQgaXMgdXNlZCB0byBzdGFydC9zdG9wIGJnIGZvcm1hdHRpbmcKKworICAgIDEwLzE3Lzk2CisgICAgICAgIEFkZGVkIG5ldyBmbGFnczogIGZMaW5lSW5jLCBmRmlsbEluYyBmb3IgYmlkaSBzdXBwb3J0LiAgdXBkYXRlRm9ybWF0LCBwb2ludFRvVGV4dE9mZnNldCwgZ2V0Qm91bmRpbmdSZWN0LAorICAgICAgICBhbmQgZmluZE5ld0luc2VydGlvbk9mZnNldCBzaG91bGQgbm93IGZ1bmN0aW9uIGNvcnJlY3RseSBmb3Igbm9uLVJvbWFuIGRvY3VtZW50cy4gIE5vdGhpbmcgZWxzZSBoYXMgYmVlbgorICAgICAgICBtb2RpZmllZCB0byBzdXBwb3J0IGludGwgdGV4dC4KKworICAgIDEwLzIxLzk2CisgICAgICAgIFB1c2hlZCBwYXJhZ3JhcGggZm9ybWF0dGluZyBhbmQgY2FyZXQgcG9zaXRpb25pbmcgaW50byBMaW5lTGF5b3V0LiAgSW4gcHJvY2VzcyBvZiBwdXNoaW5nCisgICAgICAgIGhpZ2hsaWdodGluZyBpbnRvIExpbmVMYXlvdXQuCisKKyAgICAxMC8yNC85NgorICAgICAgICBOb3cgZ2V0dGluZyBwYXJhZ3JhcGggc3R5bGVzIGZyb20gcGFyYWdyYXBoIGJ1ZmZlci4KKworICAgIDcvNy85NworICAgICAgICBVcC1hcnJvdyBkb2Vzbid0IG1vdmUgdG8gYmVnaW5uaW5nIG9mIHRleHQgaWYgeW91J3JlIG9uIHRoZSBmaXJzdCBsaW5lLgorCisgICAgNy8xLzk4CisgICAgICAgIE5vIGxvbmdlciBpbnRlcnNlY3RpbmcgZGFtYWdlZCByZWN0IHdpdGggdmlldyByZWN0IGluIHVwZGF0ZUZvcm1hdC4KKyovCisKKy8qKgorKiBUaGlzIGNsYXNzIGltcGxlbWVudHMgTUZvcm1hdHRlci4gIEl0IG1haW50YWlucyBhIHRhYmxlIG9mCisqIDx0dD5MYXlvdXRJbmZvPC90dD4gaW5zdGFuY2VzIHdoaWNoIGNvbnRhaW4gbGF5b3V0IGluZm9ybWF0aW9uCisqIGZvciBlYWNoIGxpbmUgaW4gdGhlIHRleHQuICBUaGlzIGNsYXNzIGZvcm1hdHMgbGluZXMgb24gZGVtYW5kLAorKiBhbmQgY3JlYXRlcyBhIGxvdy1wcmlvcml0eSB0aHJlYWQgdG8gZm9ybWF0IHRleHQgaW4gdGhlIGJhY2tncm91bmQuCisqIE5vdGUgdGhhdCwgYXQgdGltZXMsIHNvbWUgdGV4dCBtYXkgbm90IGhhdmUgYmVlbiBmb3JtYXR0ZWQsIGVzcGVjaWFsbHkKKyogaWYgdGhlIHRleHQgaXMgbGFyZ2UuCisqIDxwPgorKiBUaGUgbGluZSB0YWJsZSBpcyBhbiBhcnJheSBvZiA8dHQ+TGF5b3V0SW5mbzwvdHQ+IG9iamVjdHMsIHdoaWNoIGV4cGFuZHMgYXMgbmVlZGVkIHRvIGhvbGQKKyogYWxsIGNvbXB1dGVkIGxpbmVzIGluIHRoZSB0ZXh0LiAgVGhlIGxpbmUgdGFibGUgY29uc2lzdHMgb2YgdGhyZWUKKyogcmVnaW9uczogIGEgInBvc2l0aXZlIiByZWdpb24sIGEgImdhcCwiIGFuZCBhICJuZWdhdGl2ZSIgcmVnaW9uLgorKiBJbiB0aGUgcG9zaXRpdmUgcmVnaW9uLCBjaGFyYWN0ZXIgYW5kIGdyYXBoaWNzIG9mZnNldHMgYXJlIHBvc2l0aXZlCisqIGludGVnZXJzLCBjb21wdXRlZCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHRleHQgLyBkaXNwbGF5LiAgSW4gdGhlCisqIGdhcCwgbGluZSB0YWJsZSBlbnRyaWVzIGFyZSBudWxsLiAgTmV3IGxpbmVzIG1heSBiZSBpbnNlcnRlZCBpbnRvIHRoZSBnYXAuCisqIEluIHRoZSBuZWdhdGl2ZSByZWdpb24sIGNoYXJhY3RlciBhbmQgZ3JhcGhpY3Mgb2Zmc2V0cyBhcmUgbmVnYXRpdmU7CisqIHRoZWlyIGFic29sdXRlIHZhbHVlcyBpbmRpY2F0ZSBkaXN0YW5jZXMgZnJvbSB0aGUgZW5kIG9mIHRoZSB0ZXh0IC8gZGlzcGxheS4KKyogVGhlIDx0dD5mTFRQb3NFbmQ8L3R0PiBtZW1iZXIgZ2l2ZXMgdGhlIGluZGV4IGluIHRoZSBsaW5lIHRhYmxlIG9mIHRoZQorKiBsYXN0IHBvc2l0aXZlIGVudHJ5LiAgVGhlIDx0dD5mTFROZWdTdGFydDwvdHQ+IGdpdmVzIHRoZSBpbmRleCBvZiBmaXJzdAorKiBuZWdhdGl2ZSBlbnRyeS4gIElmIHRoZXJlIGFyZSBubyBuZWdhdGl2ZSBlbnRyaWVzLCA8dHQ+ZkxUTmVnU3RhcnQ8L3R0PiBpcworKiBlcXVhbCB0byA8dHQ+ZkxUU2l6ZTwvdHQ+LCB0aGUgc2l6ZSBvZiB0aGUgbGluZSB0YWJsZS4KKyogPHA+CisqIENoYW5nZXMgdG8gdGhlIGxpbmUgdGFibGUgb2NjdXIgb25seSBpbiB0aGUgPHR0PmZvcm1hdFRleHQoKTwvdHQ+IG1ldGhvZC4KKyogVGhpcyBtZXRob2QgY2FsbHMgPHR0PkxpbmVMYXlvdXQubGF5b3V0KCk8L3R0PiBmb3IgZWFjaCBsaW5lIHRvIGZvcm1hdC4KKyoKKyogQGF1dGhvciBKb2huIFJhbGV5CisqCisqIEBzZWUgTUZvcm1hdHRlcgorKiBAc2VlIExpbmVMYXlvdXQKKyogQHNlZSBMYXlvdXRDb250ZXh0CisqIEBzZWUgTGF5b3V0SW5mbworKi8KKworZmluYWwgY2xhc3MgQXN5bmNGb3JtYXR0ZXIgZXh0ZW5kcyBNRm9ybWF0dGVyIGltcGxlbWVudHMgUnVubmFibGUKK3sKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIC8qKgorICAgICogVGV4dCB0byBmb3JtYXQuCisgICAgKi8KKyAgICBwcml2YXRlIE1Db25zdFRleHQgZlRleHQ7CisKKyAgICAvKioKKyAgICAqIERlZmF1bHQgdmFsdWVzLgorICAgICovCisgICAgcHJpdmF0ZSBBdHRyaWJ1dGVNYXAgZkRlZmF1bHRWYWx1ZXM7CisgICAgCisgICAgLyoqCisgICAgKiBGb250IHJlc29sdmVyLgorICAgICovCisgICAgcHJpdmF0ZSBGb250UmVzb2x2ZXIgZkZvbnRSZXNvbHZlcjsKKyAgICAKKyAgICAvKioKKyAgICAqIERlZmF1bHQgY2hhcmFjdGVyIG1ldHJpYyAtIHVzZWQgdG8gc2V0IGhlaWdodCBvZiBlbXB0eSBwYXJhZ3JhcGhzCisgICAgKi8KKyAgICBwcml2YXRlIERlZmF1bHRDaGFyYWN0ZXJNZXRyaWMgZkRlZmF1bHRDaGFyTWV0cmljOworICAgIAorICAgIC8qKgorICAgICogTGVuZ3RoIHRvIHdoaWNoIGxpbmVzIGFyZSBmb3JtYXR0ZWQuCisgICAgKi8KKyAgICBwcml2YXRlIGludCBmTGluZURpbTsKKworICAgIC8qKgorICAgICogVGFibGUgb2YgZm9ybWF0dGVkIGxpbmVzLgorICAgICovCisgICAgcHJpdmF0ZSBMYXlvdXRJbmZvIGZMaW5lVGFibGVbXTsKKworICAgIC8qKgorICAgICogU2l6ZSBvZiBsaW5lIHRhYmxlLgorICAgICovCisgICAgcHJpdmF0ZSBpbnQgZkxUU2l6ZSA9IDEwOyAvLyBpbml0aWFsIHNpemUgbXVzdCBiZSA+IDAKKworICAgIC8qKgorICAgICogSW5kZXggb2YgbGFzdCBwb3NpdGl2ZSBlbnRyeSBpbiBsaW5lIHRhYmxlLgorICAgICovCisgICAgcHJpdmF0ZSBpbnQgZkxUUG9zRW5kOworCisgICAgLyoqCisgICAgKiBJbmRleCBvZiBmaXJzdCBuZWdhdGl2ZSBlbnRyeSBpbiBsaW5lIHRhYmxlLgorICAgICovCisgICAgcHJpdmF0ZSBpbnQgZkxUTmVnU3RhcnQ7CisKKyAgICAvKioKKyAgICAqIExlbmd0aCBvZiB0ZXh0IG9uIHdoaWNoIG5lZ2F0aXZlIGxpbmUgb2Zmc2V0cyBhcmUgYmFzZWQuCisgICAgKiBAc2VlICNmb3JtYXRUZXh0CisgICAgKi8KKyAgICBwcml2YXRlIGludCBmTFRDdXJUZXh0TGVuOworCisgICAgLyoqCisgICAgKiBMZW5ndGggb2YgZm9ybWF0dGVkIHRleHQgaW4gZmlsbCBkaXJlY3Rpb24sIGluIHBpeGVscy4KKyAgICAqLworICAgIHByaXZhdGUgaW50IGZQaXhIZWlnaHQ7CisKKyAgICAvKioKKyAgICAqIExlbmd0aCBvZiBmb3JtYXR0ZWQgdGV4dCBpbmNsdWRpbmcgcHNldWRvbGluZS4KKyAgICAqLworICAgIHByaXZhdGUgaW50IGZGdWxsUGl4SGVpZ2h0OworCisgICAgcHJpdmF0ZSBpbnQgZk1pblg7CisgICAgcHJpdmF0ZSBpbnQgZk1heFg7CisKKyAgICAvKioKKyAgICAqIDx0dD50cnVlPC90dD4gaWYgbGluZXMgc2hvdWxkIGJlIGZvcm1hdHRlZCB0byBmaXQgbGluZSBkaW1lbnNpb24uCisgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gZldyYXA7CisKKyAgICAvKioKKyAgICAqIDx0dD50cnVlPC90dD4gaWYgY2hhcmFjdGVycyBydW4gaG9yaXpvbnRhbGx5LgorICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIGZITGluZSA9IHRydWU7CisKKyAgICAvKioKKyAgICAgKiA8dHQ+dHJ1ZTwvdHQ+IGlmIGNoYXJhY3RlcnMgcnVuIGZyb20gZnJvbSBsb3cgdG8gaGlnaCBjb29yZGluYXRlcyBvbiBsaW5lLgorICAgICAqLworICAgIHByaXZhdGUgYm9vbGVhbiBmTGluZUluYyA9IHRydWU7CisKKyAgICAvKioKKyAgICAgKiA8dHQ+dHJ1ZTwvdHQ+IGlmIGxpbmVzIHJ1biBmcm9tIGxvdyB0byBoaWdoIGNvb3JkaW5hdGVzIHdpdGhpbiBwYWdlLgorICAgICAqLworICAgIHByaXZhdGUgYm9vbGVhbiBmRmlsbEluYyA9IHRydWU7CisKKyAgICAvKioKKyAgICAqIFZhbHVlIHJldHVybmVkIGZyb20gPHR0PmZpbmRMaW5lQXQoKTwvdHQ+CisgICAgKiBpZiBwaXhlbCBoZWlnaHQgcHJlY2VkZXMgdG9wbW9zdCBsaW5lLgorICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IGtCZWZvcmVGaXJzdExpbmUgPSAtMjsKKworICAgIC8qKgorICAgICogVmFsdWUgcmV0dXJuZWQgZnJvbSA8dHQ+ZmluZExpbmVBdCgpPC90dD4gYW5kIDx0dD5nZXRMaW5lQ29udGFpbmluZygpPC90dD4KKyAgICAqIGlmIG9mZnNldCAvIHBpeGVsIGhlaWdodCBpcyBhZnRlciBhbGwgZXhpc3RpbmcgbGluZXMuCisgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQga0FmdGVyTGFzdExpbmUgPSAtMTsKKworICAgIC8qKgorICAgICogVGhyZWFkIHdoaWNoIGludm9rZXMgZm9ybWF0dGVyIGluIHRoZSBiYWNrZ3JvdW5kLgorICAgICovCisgICAgcHJpdmF0ZSBUaHJlYWQgZkRhZW1vbjsKKworICAgIC8qKgorICAgICogRm9udFJlbmRlckNvbnRleHQgdG8gbWVhc3VyZSB3aXRoLiAgQ3VycmVudGx5IG5vdCBzZXR0YWJsZSBhZnRlcgorICAgICogY29uc3RydWN0aW9uLgorICAgICovCisgICAgcHJpdmF0ZSBGb250UmVuZGVyQ29udGV4dCBmRm9udFJlbmRlckNvbnRleHQ7CisKKyAgICAvKioKKyAgICAqIENvbnRyb2xzIHdoZXRoZXIgYmFja2dyb3VuZCBmb3JtYXR0aW5nIGNhbiBydW4uCisgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gZkJnRm9ybWF0QWxsb3dlZCA9IGZhbHNlOworICAgIAorICAgIC8qKgorICAgICogQ2FjaGVkIGxpbmUgYnJlYWsgb2JqZWN0LgorICAgICovCisgICAgcHJpdmF0ZSBCcmVha0l0ZXJhdG9yIGZMaW5lQnJlYWsgPSBudWxsOworICAgIAorICAgIC8qKgorICAgICogQ2FjaGVkIExpbmVCcmVha01lYXN1cmVyLgorICAgICovCisgICAgcHJpdmF0ZSBMaW5lQnJlYWtNZWFzdXJlciBmQ2FjaGVkTWVhc3VyZXIgPSBudWxsOworICAgIHByaXZhdGUgaW50IGZDYWNoZWRNZWFzdXJlclN0YXJ0OworICAgIHByaXZhdGUgaW50IGZDYWNoZWRNZWFzdXJlckxpbWl0OworICAgIAorICAgIC8vIFNvbWUgSkRLJ3MgKFN1bidzIDEuMi4yKSB0aHJvdyBleGNlcHRpb25zIGZyb20gCisgICAgLy8gTGluZUJyZWFrTWVhc3VyZXIuaW5zZXJ0Q2hhciBhbmQgZGVsZXRlQ2hhci4gIFRoaXMgY2xhc3MKKyAgICAvLyBkZXRlY3RzIHRoaXMgY29uZGl0aW9uIGFuZCBkb2Vzbid0IHVzZSB0aGVzZSB0d28gbWV0aG9kcworICAgIC8vIGlmIHRoZXkgdGhyb3cgZXhjZXB0aW9ucy4KKyAgICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGZnQ2FjaGVNZWFzdXJlcnMgPSB0cnVlOworICAgIAorICAgIC8qKgorICAgICogQ3VycmVudCB0ZXh0IHRpbWUgc3RhbXAuICBVc2VkIHRvIG1haW50YWluIG1vZGlmaWNhdGlvbiBpbnZhcmlhbnQuCisgICAgKi8KKyAgICBwcml2YXRlIGludCBmQ3VyVGltZVN0YW1wOworICAgIAorICAgIC8qKgorICAgICogQ2FjaGUgb2YgUGFyYWdyYXBoUmVuZGVyZXJzLgorICAgICovCisgICAgcHJpdmF0ZSBIYXNodGFibGUgZlJlbmRlcmVyQ2FjaGUgPSBuZXcgSGFzaHRhYmxlKCk7CisgICAgCisgICAgLyoqCisgICAgKiBEcmF3IHRleHQgaW5zaWRlIGEgcmVjdGFuZ2xlLiBEb2VzIG5vdCBjYWNoZSBhbnkgZm9ybWF0dGluZyBpbmZvcm1hdGlvbi4KKyAgICAqIFRoaXMgaXMgY29udmVuaWVudCBmb3Igc21hbGwgYW1vdW50cyBvZiB0ZXh0OyBjb21wYXJhYmxlIHRvIFRFVGV4dEJveCBvbiB0aGUgTWFjLgorICAgICogPHA+CisgICAgKiBAcGFyYW0gdGV4dCB0aGUgdGV4dCB0byBkcmF3CisgICAgKiBAcGFyYW0gZyBHcmFwaGljcyBvbiB3aGljaCB0byBkcmF3CisgICAgKiBAcGFyYW0gZHJhd1JlY3QgcmVjdGFuZ2xlIGluIHdoaWNoIHRleHQgd2lsbCBiZSBkcmF3bgorICAgICogQHBhcmFtIGZpbGxJbmMgaWYgdHJ1ZSwgbGluZXMgcnVuIGZyb20gbG93IHRvIGhpZ2ggY29vcmRpbmF0ZXMgaW4gcGFnZS4KKyAgICAqIEBwYXJhbSBoTGluZSBpZiB0cnVlLCBjaGFyYWN0ZXJzIHJ1biBob3Jpem9udGFsbHkgd2l0aGluIGEgbGluZS4KKyAgICAqLworCisgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBpc1BhcmFncmFwaFNlcGFyYXRvcihjaGFyIGNoKSB7CisKKyAgICAgICAgcmV0dXJuIGNoID09ICdcbicgfHwgY2ggPT0gJ1x1MjAyOSc7CisgICAgfQorCisgICAgLyoqCisgICAgKiBDcmVhdGUgYW4gPHR0PkFzeW5jRm9ybWF0dGVyPC90dD4uCisgICAgKiBAcGFyYW0gdGV4dCB0aGUgdGV4dCB0byBmb3JtYXQKKyAgICAqIEBwYXJhbSBsaW5lQm91bmQgbGVuZ3RoIHRvIHdoaWNoIGxpbmVzIGFyZSBmb3JhbXR0ZWQKKyAgICAqIEBwYXJhbSB3cmFwIDx0dD50cnVlPC90dD4gaWYgdGV4dCBzaG91bGQgYmUgImxpbmUgd3JhcHBlZCIgKGZvcm1hdHRlZCB0byBmaXQgZGVzdGluYXRpb24gYXJlYSkKKyAgICAqLworICAgIEFzeW5jRm9ybWF0dGVyKE1Db25zdFRleHQgdGV4dCwgCisgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlTWFwIGRlZmF1bHRWYWx1ZXMsCisgICAgICAgICAgICAgICAgICAgaW50IGxpbmVCb3VuZCwKKyAgICAgICAgICAgICAgICAgICBib29sZWFuIHdyYXAsCisgICAgICAgICAgICAgICAgICAgR3JhcGhpY3MgZykKKyAgICB7CisgICAgICAgIGZUZXh0ID0gdGV4dDsKKyAgICAgICAgZkRlZmF1bHRWYWx1ZXMgPSBkZWZhdWx0VmFsdWVzOworICAgICAgICBmRm9udFJlc29sdmVyID0gbmV3IEZvbnRSZXNvbHZlcihmRGVmYXVsdFZhbHVlcyk7CisgICAgICAgIAorICAgICAgICBmTGluZURpbSA9IGxpbmVCb3VuZDsKKyAgICAgICAgZldyYXAgPSB3cmFwOworICAgICAgICBHcmFwaGljczJEIGcyZCA9IEdyYXBoaWNzMkRDb252ZXJzaW9uLmdldEdyYXBoaWNzMkQoZyk7CisgICAgICAgIGZGb250UmVuZGVyQ29udGV4dCA9IGcyZC5nZXRGb250UmVuZGVyQ29udGV4dCgpOworICAgICAgICAKKyAgICAgICAgZkRlZmF1bHRDaGFyTWV0cmljID0gbmV3IERlZmF1bHRDaGFyYWN0ZXJNZXRyaWMoZkZvbnRSZXNvbHZlciwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZGb250UmVuZGVyQ29udGV4dCk7CisgICAgICAgIGZMVEN1clRleHRMZW4gPSB0ZXh0Lmxlbmd0aCgpOworICAgICAgICByZW1vdmVBbGxMaW5lcygpOworCisgICAgICAgIGZEYWVtb24gPSBuZXcgVGhyZWFkKHRoaXMpOworICAgICAgICBmRGFlbW9uLnN0YXJ0KCk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBBdHRyaWJ1dGVNYXAgZ2V0RGVmYXVsdFZhbHVlcygpIHsKKyAgICAKKyAgICAgICAgcmV0dXJuIGZEZWZhdWx0VmFsdWVzOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBjaGVja1RpbWVTdGFtcCgpIHsKKyAgICAgICAgU3RyaW5nIGFkbW9uaXRpb24gPSAiUHJvYmFibHksIHlvdSBtb2RpZmllZCAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGhlIHRleHQgYmVmb3JlIGNhbGxpbmcgc3RvcEJhY2tncm91bmRGb3JtYXR0aW5nKCkuIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgaWYgKGZUZXh0LmdldFRpbWVTdGFtcCgpICE9IGZDdXJUaW1lU3RhbXApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiVGltZSBzdGFtcCBpcyBvdXQgb2Ygc3luYy4gICIgKyBhZG1vbml0aW9uKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZlRleHQubGVuZ3RoKCkgIT0gZkxUQ3VyVGV4dExlbikgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJMZW5ndGggY2hhbmdlZCB1bmV4cGVjdGVkbHkuICAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZlRleHQubGVuZ3RoKCk9IitmVGV4dC5sZW5ndGgoKSsiOyAgIisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZkxUQ3VyVGV4dExlbj0iK2ZMVEN1clRleHRMZW4rIjsgICIrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvcm1hdHRlcj0iK3RoaXMrIjsgICIrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRleHQ9IitmVGV4dCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAqIFNwZWNpZnkgd2hldGhlciB0byB3cmFwIGxpbmVzIHVzaW5nIHRoZSBsaW5lIGRpbWVuc2lvbi4KKyAgICAqIEBwYXJhbSB3cmFwIGlmIDx0dD50cnVlPC90dD4gbGluZXMgd2lsbCBiZSB3cmFwcGVkOyBvdGhlcndpc2UgbmV3IGxpbmVzIHdpbGwgb25seSBiZQorICAgICogc3RhcnRlZCB3aGVuIGEgbmV3bGluZSBpcyBlbmNvdW50ZXJlZC4KKyAgICAqLworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgdm9pZCBzZXRXcmFwKGJvb2xlYW4gd3JhcCkKKyAgICB7CisgICAgICAgIGlmICh3cmFwICE9IGZXcmFwKSB7CisgICAgICAgICAgICBmV3JhcCA9IHdyYXA7CisgICAgICAgICAgICByZW1vdmVBbGxMaW5lcygpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgKiBSZXR1cm4gdHJ1ZSBpZiBsaW5lcyBhcmUgd3JhcHBlZCB1c2luZyB0aGUgbGluZSBkaW1lbnNpb24uCisgICAgKiBAc2VlICNzZXRXcmFwCisgICAgKi8KKyAgICBwdWJsaWMgc3luY2hyb25pemVkIGJvb2xlYW4gd3JhcCgpCisgICAgeworICAgICAgICByZXR1cm4gZldyYXA7CisgICAgfQorCisgICAgLyoqCisgICAgKiBTcGVjaWZ5IHRoZSBsaW5lQm91bmQgaW4gcGl4ZWxzLiAgSWYgbGluZSB3cmFwcGluZyBpcyBvbiwgbGluZXMKKyAgICAqIHdpbGwgYmUgd3JhcHBlZCB0byB0aGlzIHZhbHVlLgorICAgICogPHA+CisgICAgKgorICAgICogQHBhcmFtIGxpbmVCb3VuZCB0aGUgZGlzdGFuY2UsIGluIHBpeGVscywgdXNlZCB0byB3cmFwIGxpbmVzLgorICAgICovCisgICAgcHVibGljIHN5bmNocm9uaXplZCB2b2lkIHNldExpbmVCb3VuZChpbnQgbGluZUJvdW5kKQorICAgIHsKKyAgICAgICAgaWYgKGZMaW5lRGltICE9IGxpbmVCb3VuZCkgeworICAgICAgICAgICAgZkxpbmVEaW0gPSBsaW5lQm91bmQ7ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGZXcmFwKSB7CisgICAgICAgICAgICAgICAgcmVtb3ZlQWxsTGluZXMoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICogUmV0dXJuIHRoZSBudW1iZXIgb2YgcGl4ZWxzIGFsb25nIHRoZSBsaW5lIGRpbWVuc2lvbi4KKyAgICAqLworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgaW50IGxpbmVCb3VuZCgpCisgICAgeworICAgICAgICByZXR1cm4gZkxpbmVEaW07CisgICAgfQorCisgICAgLyoqCisgICAgKiBSZXR1cm4gPHR0PnRydWU8L3R0PiBpZiBjaGFyYWN0ZXJzIHJ1biBmcm9tIGxvdyB0byBoaWdoIGNvb3JkaW5hdGVzIG9uIGxpbmUuCisgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gbGluZUluYygpCisgICAgeworICAgICAgICByZXR1cm4gZkxpbmVJbmM7CisgICAgfQorCisgICAgLyoqCisgICAgKiBSZXR1cm4gPHR0PnRydWU8L3R0PiBpZiBsaW5lcyBydW4gZnJvbSBsb3cgdG8gaGlnaCBjb29yZGluYXRlcyBvbiBwYWdlLgorICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIGZpbGxJbmMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZGaWxsSW5jOworICAgIH0KKworICAgIC8qKgorICAgICogUmVtb3ZlIGFsbCBsaW5lcyBpbiB0aGUgbGluZSB0YWJsZS4gIFVzZWQgYWZ0ZXIgYW4gb3BlcmF0aW9uIHRoYXQKKyAgICAqIGludmFsaWRhdGVzIGFsbCBleGlzdGluZyBsaW5lcywgc3VjaCBhcyBjaGFuZ2luZyBsaW5lIHdyYXBwaW5nIG9yIHRoZQorICAgICogbGluZSBkaW0uCisgICAgKi8KKyAgICBwcml2YXRlIHN5bmNocm9uaXplZCB2b2lkIHJlbW92ZUFsbExpbmVzKCkKKyAgICB7CisgICAgICAgIGZDdXJUaW1lU3RhbXAgPSBmVGV4dC5nZXRUaW1lU3RhbXAoKTsKKyAgICAgICAgc3RvcEJhY2tncm91bmRGb3JtYXR0aW5nKCk7CisKKyAgICAgICAgZk1pblggPSAwOworICAgICAgICBmTWF4WCA9IGZMaW5lRGltOworICAgICAgICAKKyAgICAgICAgZkxpbmVUYWJsZSA9IG5ldyBMYXlvdXRJbmZvW2ZMVFNpemVdOyAvLyBmTFRTaXplIG11c3QgYmUgPiAwCisgICAgICAgIGZMVE5lZ1N0YXJ0ID0gZkxUU2l6ZTsKKyAgICAgICAgZkxUUG9zRW5kID0gMDsKKworICAgICAgICBmTGluZVRhYmxlWzBdID0gcHNldWRvTGluZUluZm8obnVsbCwgMCk7CisKKyAgICAgICAgZlBpeEhlaWdodCA9IGZMaW5lVGFibGVbMF0uZ2V0SGVpZ2h0KCk7IC8vID8/PyBvciBzaG91bGQgaXQgYmUgemVybz8KKyAgICAgICAgZkZ1bGxQaXhIZWlnaHQgPSBmUGl4SGVpZ2h0OworCisgICAgICAgIC8vIGZvcm1hdCBhdCBsZWFzdCBvbmUgbGluZToKKyAgICAgICAgZm9ybWF0VG9IZWlnaHQoZlBpeEhlaWdodCArIDEpOworCisgICAgICAgIGVuYWJsZUJHRm9ybWF0KCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogRmlsbCB0aGUgbGF5b3V0IGluZm8gd2l0aCBpbmZvcm1hdGlvbiBhcHByb3ByaWF0ZSB0byB0aGUgcHNldWRvbGluZS4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN5bmNocm9uaXplZCBMYXlvdXRJbmZvIHBzZXVkb0xpbmVJbmZvKExheW91dEluZm8gaW5mbywgaW50IG9mZnNldCkKKyAgICB7CisgICAgICAgIEF0dHJpYnV0ZU1hcCBzdCA9IGZUZXh0LnBhcmFncmFwaFN0eWxlQXQoZkxUQ3VyVGV4dExlbik7IC8vID8/PyBpZiB0ZXh0IGlzIGVtcHR5IG9yIHRoaXMgaXMgdGhlIGVuZCBvZiB0aGUgdGV4dCwgd2hhdCBoYXBwZW5zPworICAgICAgICBQYXJhZ3JhcGhSZW5kZXJlciByZW5kZXJlciA9IGdldFJlbmRlcmVyRm9yKHN0KTsKKyAgICAgICAgaW5mbyA9IHJlbmRlcmVyLmxheW91dChmVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMaW5lQnJlYWtNZWFzdXJlciludWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZGb250UmVuZGVyQ29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZMaW5lRGltLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZMaW5lRGltKTsKKworICAgICAgICByZXR1cm4gaW5mbzsKKyAgICB9CisKKyAgICAvKioKKyAgICAqIFJldHVybiB0aGUgaW5kZXggb2YgdGhlIGxhc3QgdmFsaWQgbGluZSBpbiB0aGUgbGluZSB0YWJsZS4KKyAgICAqLworICAgIHByaXZhdGUgaW50IGxhc3RMaW5lKCkKKyAgICB7CisgICAgICAgIHJldHVybiAoZkxUTmVnU3RhcnQgPT0gZkxUU2l6ZSkgPyBmTFRQb3NFbmQgOiBmTFRTaXplIC0gMTsKKyAgICB9CisKKyAgICAvKioKKyAgICAqIFNoaWZ0IGxpbmUgdGFibGUgc3VjaCB0aGF0IDx0dD5sYXN0UG9zPC90dD4gaXMgdGhlIGxhc3QgcG9zaXRpdmUKKyAgICAqIGVudHJ5IGluIHRoZSB0YWJsZS4gPGI+Tk9URTogPHR0Pmxhc3RQb3M8L3R0PiBtdXN0IGJlIGEgdmFsaWQgbGluZSE8L2I+CisgICAgKiA8cD4KKyAgICAqIEBwYXJhbSBsYXN0UG9zIHRoZSBpbmRleCBvZiB0aGUgbGluZSB3aGljaCB3aWxsIGJlY29tZSB0aGUgbGFzdCBwb3NpdGl2ZQorICAgICogZW50cnkgaW4gdGhlIGxpbmUgdGFibGUKKyAgICAqLworICAgIHByaXZhdGUgdm9pZCBzaGlmdFRhYmxlVG8oaW50IGxhc3RQb3MpCisgICAgeworICAgICAgICBMYXlvdXRJbmZvIGxpOworCisgICAgICAgIHdoaWxlIChsYXN0UG9zIDwgZkxUUG9zRW5kKSAgICB7IC8vIHNoaWZ0ICsncyB0byAtJ3MKKyAgICAgICAgICAgIGxpID0gZkxpbmVUYWJsZVtmTFRQb3NFbmRdOworICAgICAgICAgICAgZkxpbmVUYWJsZVtmTFRQb3NFbmQtLV0gPSBudWxsOworCisgICAgICAgICAgICBsaS5tYWtlUmVsYXRpdmVUb0VuZChmTFRDdXJUZXh0TGVuLCBmUGl4SGVpZ2h0KTsKKworICAgICAgICAgICAgZkxpbmVUYWJsZVstLWZMVE5lZ1N0YXJ0XSA9IGxpOworICAgICAgICB9CisKKyAgICAgICAgd2hpbGUgKGxhc3RQb3MgPj0gZkxUTmVnU3RhcnQpIHsgLy8gc2hpZnQgLSdzIHRvICsncworICAgICAgICAgICAgbGkgPSBmTGluZVRhYmxlW2ZMVE5lZ1N0YXJ0XTsKKyAgICAgICAgICAgIGZMaW5lVGFibGVbZkxUTmVnU3RhcnQrK10gPSAgICBudWxsOworCisgICAgICAgICAgICBsaS5tYWtlUmVsYXRpdmVUb0JlZ2lubmluZyhmTFRDdXJUZXh0TGVuLCBmUGl4SGVpZ2h0KTsKKworICAgICAgICAgICAgZkxpbmVUYWJsZVsrK2ZMVFBvc0VuZF0gICAgPSBsaTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICogSW5jcmVhc2UgdGhlIHNpemUgb2YgdGhlIGxpbmUgdGFibGUuCisgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgZXhwYW5kTGluZVRhYmxlKCkKKyAgICB7CisgICAgICAgIC8vIFRoaXMganVzdCBkb3VibGVzIHRoZSBzaXplIG9mIHRoZSBsaW5lIHRhYmxlLgorCisgICAgICAgIExheW91dEluZm8gbmV3TGluZVRhYmxlW10gPSBuZXcgTGF5b3V0SW5mb1tmTGluZVRhYmxlLmxlbmd0aCAqIDJdOworICAgICAgICBpbnQgbmV3TmVnU3RhcnQgPSBuZXdMaW5lVGFibGUubGVuZ3RoIC0gKGZMaW5lVGFibGUubGVuZ3RoIC0gZkxUTmVnU3RhcnQpOworCisgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoZkxpbmVUYWJsZSwgMCwgbmV3TGluZVRhYmxlLCAwLCBmTFRQb3NFbmQgKyAxKTsKKyAgICAgICAgU3lzdGVtLmFycmF5Y29weShmTGluZVRhYmxlLCBmTFROZWdTdGFydCwgbmV3TGluZVRhYmxlLCBuZXdOZWdTdGFydCwgZkxUU2l6ZSAtIGZMVE5lZ1N0YXJ0KTsKKworICAgICAgICBmTFROZWdTdGFydCA9IG5ld05lZ1N0YXJ0OworICAgICAgICBmTFRTaXplID0gbmV3TGluZVRhYmxlLmxlbmd0aDsKKyAgICAgICAgZkxpbmVUYWJsZSA9IG5ld0xpbmVUYWJsZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAqIFJldHVybiB0aGUgaW5kZXggb2YgdGhlIGxpbmUgY29udGFpbmluZyB0aGUgcGl4ZWwgcG9zaXRpb24gPHR0PmZpbGxDb29yZDwvdHQ+LgorICAgICogSWYgZmlsbENvb3JkIGV4Y2VlZHMgdGhlIGJvdHRvbSBvZiB0aGUgdGV4dCwgcmV0dXJuIGtBZnRlckxhc3RMaW5lLgorICAgICogSWYgZmlsbENvb3JkIGlzIGxlc3MgdGhhbiB0aGUgdG9wIG9mIHRoZSB0ZXh0LCByZXR1cm4ga0JlZm9yZUZpcnN0TGluZS4KKyAgICAqIDxwPgorICAgICogQHBhcmFtIGZpbGxDb29yZCAiaGVpZ2h0IiBvZiBsaW5lIHRvIGxvY2F0ZS4KKyAgICAqLworICAgIHByaXZhdGUgaW50IGZpbmRMaW5lQXQoaW50IGZpbGxDb29yZCkKKyAgICB7CisgICAgICAgIGludCBsb3csIGhpZ2gsIG1pZDsKKyAgICAgICAgaW50IGxvd1N0YXJ0LCBoaWdoU3RhcnQsIG1pZFN0YXJ0OworCisgICAgICAgIGlmIChmaWxsQ29vcmQgPj0gZlBpeEhlaWdodCkKKyAgICAgICAgICAgIHJldHVybiBrQWZ0ZXJMYXN0TGluZTsKKyAgICAgICAgZWxzZSBpZiAoZmlsbENvb3JkIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBrQmVmb3JlRmlyc3RMaW5lOworCisgICAgICAgIGlmICgoZkxUTmVnU3RhcnQgPCBmTFRTaXplKSAmJiAoZmlsbENvb3JkID49IGZMaW5lVGFibGVbZkxUTmVnU3RhcnRdLmdldEdyYXBoaWNTdGFydChmUGl4SGVpZ2h0KSkpIHsKKyAgICAgICAgICAgIGZpbGxDb29yZCAtPSBmUGl4SGVpZ2h0OworCisgICAgICAgICAgICBsb3cgPSBmTFROZWdTdGFydDsKKyAgICAgICAgICAgIGhpZ2ggPSBmTFRTaXplOworICAgICAgICAgICAgaGlnaFN0YXJ0ID0gMDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGxvdyA9IDA7CisgICAgICAgICAgICBoaWdoID0gZkxUUG9zRW5kICsgMTsKKyAgICAgICAgICAgIGhpZ2hTdGFydCA9IGZMaW5lVGFibGVbZkxUUG9zRW5kXS5nZXRHcmFwaGljU3RhcnQoMCkgKyBmTGluZVRhYmxlW2ZMVFBvc0VuZF0uZ2V0SGVpZ2h0KCk7CisgICAgICAgIH0KKyAgICAgICAgbG93U3RhcnQgPSBmTGluZVRhYmxlW2xvd10uZ2V0R3JhcGhpY1N0YXJ0KDApOworCisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGlmIChsb3dTdGFydCA9PSBoaWdoU3RhcnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIGxvdzsKKworICAgICAgICAgICAgbWlkID0gbG93ICsgKGZpbGxDb29yZCAtIGxvd1N0YXJ0KSAvIChoaWdoU3RhcnQgLSBsb3dTdGFydCkgKiAoaGlnaCAtIGxvdyk7CisgICAgICAgICAgICBtaWRTdGFydCA9IGZMaW5lVGFibGVbbWlkXS5nZXRHcmFwaGljU3RhcnQoMCk7CisKKyAgICAgICAgICAgIGlmIChtaWRTdGFydCA+IGZpbGxDb29yZCkgeworICAgICAgICAgICAgICAgIGhpZ2ggPSBtaWQ7CisgICAgICAgICAgICAgICAgaGlnaFN0YXJ0ID0gZkxpbmVUYWJsZVtoaWdoXS5nZXRHcmFwaGljU3RhcnQoMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChtaWRTdGFydCArIGZMaW5lVGFibGVbbWlkXS5nZXRIZWlnaHQoKSA8PSBmaWxsQ29vcmQpIHsKKyAgICAgICAgICAgICAgICBsb3cgPSBtaWQgKyAxOworICAgICAgICAgICAgICAgIGxvd1N0YXJ0ID0gZkxpbmVUYWJsZVtsb3ddLmdldEdyYXBoaWNTdGFydCgwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gbWlkOworCisgICAgICAgIH0gd2hpbGUgKGxvdyA8IGhpZ2gpOworCisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBpbiB0aGUgbGluZS4KKyAgICAgKiBAcGFyYW0gbGluZSB0aGUgaW50ZXJuYWwgaW5kZXggb2YgdGhlIGxpbmUgKGRpcmVjdCBpbmRleCBpbnRvIGxpbmV0YWJsZSkuCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgbGluZUNoYXJTdGFydEludGVybmFsKGludCBsaW5lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZMaW5lVGFibGVbbGluZV0uZ2V0Q2hhclN0YXJ0KGZMVEN1clRleHRMZW4pOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgaW5kZXggb2YgdGhlIGNoYXJhY3RlciBmb2xsb3dpbmcgdGhlIGxhc3QgY2hhcmFjdGVyIGluIHRoZSBsaW5lLgorICAgICAqIEBwYXJhbSBsaW5lIHRoZSBpbnRlcm5hbCBpbmRleCBvZiB0aGUgbGluZSAoZGlyZWN0IGluZGV4IGludG8gbGluZXRhYmxlKS4KKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBsaW5lQ2hhckxpbWl0SW50ZXJuYWwoaW50IGxpbmUpCisgICAgeworICAgICAgICByZXR1cm4gbGluZUNoYXJTdGFydEludGVybmFsKGxpbmUpICsgZkxpbmVUYWJsZVtsaW5lXS5nZXRDaGFyTGVuZ3RoKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBncmFwaGljIHN0YXJ0IG9mIHRoZSBsaW5lLCB1bmFkanVzdGVkIGZvciBmaWxsIGRpcmVjdGlvbi4KKyAgICAgKiBAcGFyYW0gbGluZSB0aGUgaW50ZXJuYWwgaW5kZXggb2YgdGhlIGxpbmUgKGRpcmVjdCBpbmRleCBpbnRvIGxpbmV0YWJsZSkuCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgbGluZUdyYXBoaWNTdGFydEludGVybmFsKGludCBsaW5lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZMaW5lVGFibGVbbGluZV0uZ2V0R3JhcGhpY1N0YXJ0KGZQaXhIZWlnaHQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgZ3JhcGhpYyBsaW1pdCBvZiB0aGUgbGluZSwgdW5hZGp1c3RlZCBmb3IgZmlsbCBkaXJlY3Rpb24uCisgICAgICogQHBhcmFtIGxpbmUgdGhlIGludGVybmFsIGluZGV4IG9mIHRoZSBsaW5lIChkaXJlY3QgaW5kZXggaW50byBsaW5ldGFibGUpLgorICAgICAqLworICAgIHByaXZhdGUgaW50IGxpbmVHcmFwaGljTGltaXRJbnRlcm5hbChpbnQgbGluZSkKKyAgICB7CisgICAgICAgIHJldHVybiBsaW5lR3JhcGhpY1N0YXJ0SW50ZXJuYWwobGluZSkgKyBmTGluZVRhYmxlW2xpbmVdLmdldEhlaWdodCgpOworICAgIH0KKworICAgIC8qKgorICAgICogUmV0dXJuIHRoZSBvZmZzZXQgb2YgdGhlIGZpcnN0IGNoYXJhY3RlciB3aGljaCBoYXMgbm90IGJlZW4gZm9ybWF0dGVkLgorICAgICogSWYgYWxsIHRleHQgaGFzIGJlZW4gZm9ybWF0dGVkLCByZXR1cm4gdGhlIGN1cnJlbnQgdGV4dCBsZW5ndGguCisgICAgKi8KKyAgICBwcml2YXRlIGludCBsYXN0TGluZUNoYXJTdG9wKCkKKyAgICB7CisgICAgICAgIHJldHVybiBsaW5lQ2hhckxpbWl0SW50ZXJuYWwobGFzdExpbmUoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgJ3ZhbGlkJyBsaW5lIGNvbnRhaW5pbmcgb2Zmc2V0LiAgVGhpcyBkaWZmZXJzIGZyb20gZ2V0TGluZUNvbnRhaW5pbmcgaW4KKyAgICAgKiB0aGlzIG1hcHMga0FmdGVyTGFzdExpbmUgdG8gbGFzdExpbmUoKSwgc28gdGhhdCB0aGUgcmVzdWx0IGlzIGFsd2F5cyBhIHZhbGlkCisgICAgICogbGluZXRhYmxlIGluZGV4LgorICAgICAqLworICAgIHByaXZhdGUgaW50IGdldFZhbGlkTGluZUNvbnRhaW5pbmcoVGV4dE9mZnNldCBvZmZzZXQpIHsKKworICAgICAgICByZXR1cm4gZ2V0VmFsaWRMaW5lQ29udGFpbmluZyhvZmZzZXQuZk9mZnNldCwgb2Zmc2V0LmZQbGFjZW1lbnQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhICd2YWxpZCcgbGluZSBjb250YWluaW5nIG9mZnNldC4gIFRoaXMgZGlmZmVycyBmcm9tIGdldExpbmVDb250YWluaW5nIGluCisgICAgICogdGhpcyBtYXBzIGtBZnRlckxhc3RMaW5lIHRvIGxhc3RMaW5lKCksIHNvIHRoYXQgdGhlIHJlc3VsdCBpcyBhbHdheXMgYSB2YWxpZAorICAgICAqIGxpbmV0YWJsZSBpbmRleC4KKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBnZXRWYWxpZExpbmVDb250YWluaW5nKGludCBpbnNPZmZzZXQsIGJvb2xlYW4gcGxhY2VtZW50KQorICAgIHsKKyAgICAgICAgaW50IGxpbmUgPSBnZXRMaW5lQ29udGFpbmluZyhpbnNPZmZzZXQsIHBsYWNlbWVudCk7CisgICAgICAgIGlmIChsaW5lID09IGtBZnRlckxhc3RMaW5lKQorICAgICAgICAgICAgbGluZSA9IGxhc3RMaW5lKCk7CisgICAgICAgIGVsc2UgaWYgKGxpbmUgPT0ga0JlZm9yZUZpcnN0TGluZSkKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkRlYnVnOiBnZXRMaW5lQ29udGFpbmluZyByZXR1cm5lZCBrQmVmb3JlRmlyc3RMaW5lIik7CisKKyAgICAgICAgcmV0dXJuIGxpbmU7CisgICAgfQorCisgICAgLyoqCisgICAgKiBSZXR1cm4gaW5kZXggb2YgbGluZSBjb250YWluaW5nIDx0dD5vZmZzZXQ8L3R0Pi4KKyAgICAqID8/PyBJZiBvZmZzZXQgaXMgYWZ0ZXIgbGFzdCBmb3JtYXR0ZWQgbGluZSwgcmV0dXJucyBrQWZ0ZXJMYXN0TGluZS4gIElzIHRoYXQgZ29vZD8KKyAgICAqIDxwPgorICAgICogQHBhcmFtIG9mZnNldCB0aGUgb2Zmc2V0IHdob3NlIGxpbmUgc2hvdWxkIGJlIGxvY2F0ZWQKKyAgICAqIEByZXR1cm5zIGxpbmUgY29udGFpbmluZyA8dHQ+b2Zmc2V0PC90dD4KKyAgICAqLworICAgIHByaXZhdGUgaW50IGdldExpbmVDb250YWluaW5nKFRleHRPZmZzZXQgb2Zmc2V0KSB7CisKKyAgICAgICAgcmV0dXJuIGdldExpbmVDb250YWluaW5nKG9mZnNldC5mT2Zmc2V0LCBvZmZzZXQuZlBsYWNlbWVudCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBpbnQgZ2V0TGluZUNvbnRhaW5pbmcoaW50IGluc09mZnNldCwgYm9vbGVhbiBwbGFjZW1lbnQpCisgICAgeworICAgICAgICBpbnQgcG9zID0gaW5zT2Zmc2V0OworICAgICAgICBpZiAocGxhY2VtZW50ID09IFRleHRPZmZzZXQuQkVGT1JFX09GRlNFVCAmJiBwb3MgPiAwKQorICAgICAgICAgICAgLS1wb3M7CisKKyAgICAgICAgaWYgKHBvcyA8IDApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkRlYnVnOiBnZXRMaW5lQ29udGFpbmluZyBvZmZzZXQgPCAwOiAiICsgcG9zKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChwb3MgPj0gbGFzdExpbmVDaGFyU3RvcCgpKSB7CisgICAgICAgICAgICByZXR1cm4gZW1wdHlQYXJhZ3JhcGhBdEVuZE9mVGV4dCgpPyBrQWZ0ZXJMYXN0TGluZSA6IGxhc3RMaW5lKCk7CisgICAgICAgIH0KKworICAgICAgICBpbnQgbG93LCBoaWdoLCBtaWQ7CisgICAgICAgIGludCBsb3dTdGFydCwgaGlnaFN0YXJ0LCBtaWRTdGFydDsKKworICAgICAgICBpZiAoKGZMVE5lZ1N0YXJ0IDwgZkxUU2l6ZSkgJiYgKHBvcyA+PSBmTGluZVRhYmxlW2ZMVE5lZ1N0YXJ0XS5nZXRDaGFyU3RhcnQoZkxUQ3VyVGV4dExlbikpKSB7CisgICAgICAgICAgICBwb3MgLT0gZkxUQ3VyVGV4dExlbjsKKworICAgICAgICAgICAgbG93ID0gZkxUTmVnU3RhcnQ7CisgICAgICAgICAgICBoaWdoID0gZkxUU2l6ZTsKKyAgICAgICAgICAgIGhpZ2hTdGFydCA9IDA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBsb3cgPSAwOworICAgICAgICAgICAgaGlnaCA9IGZMVFBvc0VuZCArIDE7CisgICAgICAgICAgICBoaWdoU3RhcnQgPSBmTGluZVRhYmxlW2ZMVFBvc0VuZF0uZ2V0Q2hhclN0YXJ0KDApICsgZkxpbmVUYWJsZVtmTFRQb3NFbmRdLmdldENoYXJMZW5ndGgoKTsKKyAgICAgICAgfQorICAgICAgICBsb3dTdGFydCA9IGZMaW5lVGFibGVbbG93XS5nZXRDaGFyU3RhcnQoMCk7CisKKyAgICAgICAgZG8geworICAgICAgICAgICAgaWYgKGhpZ2hTdGFydCA9PSBsb3dTdGFydCkgeworICAgICAgICAgICAgICAgIHJldHVybiBsb3c7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1pZCA9IGxvdyArIChwb3MgLSBsb3dTdGFydCkgLyAoaGlnaFN0YXJ0IC0gbG93U3RhcnQpICogKGhpZ2ggLSBsb3cpOworICAgICAgICAgICAgbWlkU3RhcnQgPSBmTGluZVRhYmxlW21pZF0uZ2V0Q2hhclN0YXJ0KDApOworCisgICAgICAgICAgICBpZiAobWlkU3RhcnQgPiBwb3MpIHsKKyAgICAgICAgICAgICAgICBoaWdoID0gbWlkOworICAgICAgICAgICAgICAgIGhpZ2hTdGFydCA9IGZMaW5lVGFibGVbaGlnaF0uZ2V0Q2hhclN0YXJ0KDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobWlkU3RhcnQgKyBmTGluZVRhYmxlW21pZF0uZ2V0Q2hhckxlbmd0aCgpIDw9IHBvcykgeworICAgICAgICAgICAgICAgIGxvdyA9IG1pZCArIDE7CisgICAgICAgICAgICAgICAgbG93U3RhcnQgPSBmTGluZVRhYmxlW2xvd10uZ2V0Q2hhclN0YXJ0KDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1pZDsKKyAgICAgICAgICAgIH0KKworICAgICAgICB9IHdoaWxlIChsb3cgPCBoaWdoKTsKKworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKioKKyAgICAqIERpc3BsYXkgdGV4dCBpbiBkcmF3QXJlYS4gRG9lcyBub3QgcmVmb3JtYXQgdGV4dC4KKyAgICAqIDxwPgorICAgICogQHBhcmFtIGcgdGhlIEdyYXBoaWNzIG9iamVjdCBpbiB3aGljaCB0byBkcmF3CisgICAgKiBAcGFyYW0gZHJhd0FyZWEgdGhlIHJlY3RhbmdsZSwgaW4gZydzIGNvb3JkaW5hdGUgc3lzdGVtLCBpbiB3aGljaCB0byBkcmF3CisgICAgKiBAcGFyYW0gb3JpZ2luIHRoZSB0b3AtbGVmdCBjb3JuZXIgb2YgdGhlIHRleHQsIGluIGcncyBjb29yZGluYXRlIHN5c3RlbQorICAgICovCisgICAgcHVibGljIHN5bmNocm9uaXplZCB2b2lkIGRyYXcoR3JhcGhpY3MgZywgUmVjdGFuZ2xlIGRyYXdBcmVhLCBQb2ludCBvcmlnaW4pCisgICAgeworICAgICAgICBkcmF3KGcsIGRyYXdBcmVhLCBvcmlnaW4sIG51bGwsIG51bGwsIG51bGwpOworICAgIH0KKworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgdm9pZCBkcmF3KEdyYXBoaWNzIGcsIFJlY3RhbmdsZSBkcmF3QXJlYSwgUG9pbnQgb3JpZ2luLAorICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgc2VsU3RhcnQsIFRleHRPZmZzZXQgc2VsU3RvcCwgQ29sb3IgaGlnaGxpZ2h0KSB7CisKKyAgICAgICAgY2hlY2tUaW1lU3RhbXAoKTsKKyAgICAgICAgR3JhcGhpY3MyRCBnMmQgPSBHcmFwaGljczJEQ29udmVyc2lvbi5nZXRHcmFwaGljczJEKGcpOworCisgICAgICAgIC8vIEdldCBzdGFydGluZyBhbmQgZW5kaW5nIGZpbGwgJ2hlaWdodHMuJworCisgICAgICAgIGludCBzdGFydEZpbGw7CisgICAgICAgIGludCBlbmRGaWxsOworCisgICAgICAgIGlmIChmRmlsbEluYykKKyAgICAgICAgICAgIHN0YXJ0RmlsbCA9IGRyYXdBcmVhLnkgLSBvcmlnaW4ueTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc3RhcnRGaWxsID0gb3JpZ2luLnkgLSAoZHJhd0FyZWEueSArIGRyYXdBcmVhLmhlaWdodCk7CisKKyAgICAgICAgZW5kRmlsbCA9IHN0YXJ0RmlsbCArIGRyYXdBcmVhLmhlaWdodDsKKworICAgICAgICAvLyBXZSdyZSBkcmF3aW5nIG9uZSBtb3JlIGxpbmUgdGhhbiBuZWNlc3Nhcnkgd2hlbiB3ZSB1cGRhdGUgYmVjYXVzZSBvZiBhCisgICAgICAgIC8vIHNlbGVjdGlvbiBjaGFuZ2UuICBCdXQgd2UncmUgZHJhd2luZyB0aGUgcmlnaHQgYW1vdW50IG9mIGxpbmVzIHdoZW4gd2UKKyAgICAgICAgLy8gcmVmcmVzaCB0aGUgd2hvbGUgZGlzcGxheS4gIFRoaXMgYWZmZWN0cyByZW5kZXJpbmcgc3BlZWQgc2lnbmlmaWNhbnRseSwKKyAgICAgICAgLy8gYW5kIGNyZWF0aW5nIGEgbmV3IHBhcmFncmFwaCByZW5kZXJlciBmb3IgZWFjaCBsaW5lIGRvZXNuJ3QgaGVscCBlaXRoZXIuCisgICAgICAgIC8vIEZvciBub3csIEknbSBnb2luZyB0byBzdWJ0cmFjdCBvbmUgZnJvbSB0aGUgZmlsbCBoZWlnaHQsIG9uIHRoZSB0aGVvcnkKKyAgICAgICAgLy8gdGhhdCB3ZSdyZSBwaWNraW5nIHVwIHRoZSBleHRyYSBsaW5lIGJlY2F1c2Ugb2YgYSBvbmUtcGl4ZWwgc2xvcC4KKyAgICAgICAgLy8gVGhpcyBzZWVtcyB0byB3b3JrLCBhbHRob3VnaCBwZXJoYXBzIGlmIG9uZSBwaXhlbCBvZiBhIGxpbmUgYXQgdGhlCisgICAgICAgIC8vIGJvdHRvbSBzaG91bGQgZHJhdywgaXQgd29uJ3QuCisKKyAgICAgICAgLS1lbmRGaWxsOworCisgICAgICAgIC8vIEZvcm1hdCB0byBlbmRpbmcgZmlsbCBoZWlnaHQsIHNvIGxpbmUgdGFibGUgaXMgdmFsaWQgZm9yIGFsbCBsaW5lcyB3ZSBuZWVkIHRvIGRyYXcuCisKKyAgICAgICAgZm9ybWF0VG9IZWlnaHQoZW5kRmlsbCk7CisKKyAgICAgICAgLy8gR2V0IHN0YXJ0aW5nIGFuZCBlbmRpbmcgbGluZXMgZm9yIGZpbGwgaGVpZ2h0LiAgSWYgdGhlIHN0YXJ0IG9mIHRoZSBmaWxsIGlzIGFmdGVyIHRoZSBsYXN0IGxpbmUsCisgICAgICAgIC8vIG9yIHRoZSBlbmQgb2YgdGhlIGZpbGwgaXMgYmVmb3JlIHRoZSBmaXJzdCBsaW5lLCByZXR1cm4uCisKKyAgICAgICAgaW50IGN1ckxpbmUgPSBmaW5kTGluZUF0KHN0YXJ0RmlsbCk7CisgICAgICAgIGlmIChjdXJMaW5lID09IGtBZnRlckxhc3RMaW5lKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBlbHNlIGlmIChjdXJMaW5lID09IGtCZWZvcmVGaXJzdExpbmUpCisgICAgICAgICAgICBjdXJMaW5lID0gMDsKKworICAgICAgICBpbnQgbGFzdExpbmUgPSBmaW5kTGluZUF0KGVuZEZpbGwpOworICAgICAgICBpZiAobGFzdExpbmUgPT0ga0JlZm9yZUZpcnN0TGluZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZWxzZSBpZiAobGFzdExpbmUgPT0ga0FmdGVyTGFzdExpbmUpCisgICAgICAgICAgICBsYXN0TGluZSA9IGxhc3RMaW5lKCk7CisKKyAgICAgICAgLy8gR2V0IHRoZSBiYXNlIGNvb3JkaW5hdGVzIChsaW5lWCwgbGluZVkpIGZvciB0aGUgc3RhcnRpbmcgbGluZS4KKworICAgICAgICBpbnQgbGluZVgsIGxpbmVZOworCisgICAgICAgIGludCBnU3RhcnQgPSBsaW5lR3JhcGhpY1N0YXJ0SW50ZXJuYWwoY3VyTGluZSk7CisKKyAgICAgICAgaWYgKGZITGluZSkgeworICAgICAgICAgICAgaWYgKGZMaW5lSW5jKQorICAgICAgICAgICAgICAgIGxpbmVYID0gb3JpZ2luLng7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbGluZVggPSBvcmlnaW4ueCAtIGZMaW5lRGltOworICAgICAgICAgICAgaWYgKGZGaWxsSW5jKQorICAgICAgICAgICAgICAgIGxpbmVZID0gb3JpZ2luLnkgKyBnU3RhcnQ7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbGluZVkgPSBvcmlnaW4ueSAtIChnU3RhcnQgKyBmTGluZVRhYmxlW2N1ckxpbmVdLmdldEhlaWdodCgpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChmTGluZUluYykKKyAgICAgICAgICAgICAgICBsaW5lWSA9IG9yaWdpbi55OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGxpbmVZID0gb3JpZ2luLnkgLSBmTGluZURpbTsKKyAgICAgICAgICAgIGlmIChmRmlsbEluYykKKyAgICAgICAgICAgICAgICBsaW5lWCA9IG9yaWdpbi54ICsgZ1N0YXJ0OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGxpbmVYID0gb3JpZ2luLnggLSAoZ1N0YXJ0ICsgZkxpbmVUYWJsZVtjdXJMaW5lXS5nZXRIZWlnaHQoKSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBJdGVyYXRlIHRocm91Z2ggbGluZXMsIGRyYXdpbmcgZWFjaCBvbmUgYW5kIGluY3JlbWVudGluZyB0aGUgYmFzZSBjb29yZGluYXRlIGJ5IHRoZSBsaW5lIGhlaWdodC4KKworCisgICAgICAgIGZvciAoOyBjdXJMaW5lIDw9IGxhc3RMaW5lOyBjdXJMaW5lKyspIHsKKyAgICAgICAgICAgIC8vIEFkanVzdCBjdXJMaW5lIGFyb3VuZCBnYXAgaW4gbGluZSB0YWJsZS4KKyAgICAgICAgICAgIGlmICgoY3VyTGluZSA+IGZMVFBvc0VuZCkgJiYgKGN1ckxpbmUgPCBmTFROZWdTdGFydCkpCisgICAgICAgICAgICAgICAgY3VyTGluZSA9IGZMVE5lZ1N0YXJ0OworCisgICAgICAgICAgICBmTGluZVRhYmxlW2N1ckxpbmVdLnJlbmRlcldpdGhIaWdobGlnaHQoZkxUQ3VyVGV4dExlbiwgZzJkLCBmTGluZURpbSwgbGluZVgsIGxpbmVZLCBzZWxTdGFydCwgc2VsU3RvcCwgaGlnaGxpZ2h0KTsKKworICAgICAgICAgICAgLy8gSW5jcmVtZW50IGxpbmUgYmFzZSBmb3IgbmV4dCBpdGVyYXRpb24uCisgICAgICAgICAgICBpbnQgbGluZUluYyA9IGZMaW5lVGFibGVbY3VyTGluZV0uZ2V0SGVpZ2h0KCk7CisgICAgICAgICAgICBpZiAoZkZpbGxJbmMpIHsKKyAgICAgICAgICAgICAgICBpZiAoZkhMaW5lKQorICAgICAgICAgICAgICAgICAgICBsaW5lWSArPSBsaW5lSW5jOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbGluZVggKz0gbGluZUluYzsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGZITGluZSkKKyAgICAgICAgICAgICAgICAgICAgbGluZVkgLT0gbGluZUluYzsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGxpbmVYIC09IGxpbmVJbmM7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAqIEZvcm1hdCB0ZXh0IHRvIGdpdmVuIGhlaWdodC4KKyAgICAqIEBwYXJhbSBoZWlnaHQgdGhlIGhlaWdodCB0byB3aGljaCB0ZXh0IHdpbGwgYmUgZm9ybWF0dGVkLgorICAgICovCisgICAgcHVibGljIHN5bmNocm9uaXplZCB2b2lkIGZvcm1hdFRvSGVpZ2h0KGludCByZXFIZWlnaHQpCisgICAgeworICAgICAgICBjaGVja1RpbWVTdGFtcCgpOworICAgICAgICBpZiAocmVxSGVpZ2h0IDw9IGZQaXhIZWlnaHQpIC8vIGFscmVhZHkgZm9ybWF0dGVkIHRvIHRoaXMgaGVpZ2h0CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKGZUZXh0Lmxlbmd0aCgpID09IGxhc3RMaW5lQ2hhclN0b3AoKSkgLy8gYWxyZWFkeSBmb3JtYXR0ZWQgYWxsIHRoZSB0ZXh0CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gKysrIHNob3VsZCBkaXNhYmxlIHVwZGF0ZSB0aHJlYWQgaGVyZQorCisgICAgICAgIGlmIChmTFROZWdTdGFydCA8IGZMVFNpemUpCisgICAgICAgICAgICBzaGlmdFRhYmxlVG8oZkxUU2l6ZSAtIDEpOworCisgICAgICAgIGZvcm1hdFRleHQoMCwgMCwgcmVxSGVpZ2h0LCBmYWxzZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogRm9ybWF0IHRleHQgdG8gZ2l2ZW4gb2Zmc2V0LgorICAgICAqIEBwYXJhbSBvZmZzZXQgdGhlIG9mZnNldCB0byB3aGljaCB0ZXh0IHdpbGwgYmUgZm9ybWF0dGVkLgorICAgICAqLworICAgICBwcml2YXRlIHZvaWQgZm9ybWF0VG9PZmZzZXQoVGV4dE9mZnNldCBvZmZzZXQpCisgICAgIHsKKyAgICAgICAgZm9ybWF0VG9PZmZzZXQob2Zmc2V0LmZPZmZzZXQsIG9mZnNldC5mUGxhY2VtZW50KTsKKyAgICAgfQorICAgICAKKyAgICAgcHJpdmF0ZSBzeW5jaHJvbml6ZWQgdm9pZCBmb3JtYXRUb09mZnNldChpbnQgb2Zmc2V0LCBib29sZWFuIHBsYWNlbWVudCkgeworICAgICAgICAKKyAgICAgICAgY2hlY2tUaW1lU3RhbXAoKTsKKyAgICAgICAgaW50IGxsY3MgPSBsYXN0TGluZUNoYXJTdG9wKCk7CisgICAgICAgIGlmIChsbGNzIDwgZkxUQ3VyVGV4dExlbikgeworICAgICAgICAgICAgaW50IGxpbWl0ID0gb2Zmc2V0OworICAgICAgICAgICAgaWYgKHBsYWNlbWVudCA9PSBUZXh0T2Zmc2V0LkFGVEVSX09GRlNFVCkgLy8gZm9ybWF0IHRvIHBhc3QgY2hhcmFjdGVyIG9mZnNldCBpcyBhc3NvY2lhdGVkIHdpdGgKKyAgICAgICAgICAgICAgICBsaW1pdCsrOworICAgICAgICAgICAgaWYgKGxpbWl0ID49IGxsY3MpIHsgLy8gPz8/IHdvdWxkICc+JyBiZSBvayBpbnN0ZWFkIG9yICc+PSc/CisgICAgICAgICAgICAgICAgaWYgKGxpbWl0ID4gZkxUQ3VyVGV4dExlbikKKyAgICAgICAgICAgICAgICAgICAgbGltaXQgPSBmTFRDdXJUZXh0TGVuOworCisgICAgICAgICAgICAgICAgc2hpZnRUYWJsZVRvKGxhc3RMaW5lKCkpOworICAgICAgICAgICAgICAgIGZvcm1hdFRleHQobGxjcywgbGltaXQgLSBsbGNzLCBJbnRlZ2VyLk1BWF9WQUxVRSwgdHJ1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgfQorCisvKioKKyogUmVmb3JtYXQgdGV4dCBhZnRlciBhIGNoYW5nZS4KKyogQWZ0ZXIgdGhlIGZvcm1hdHRlcidzIHRleHQgY2hhbmdlcywgY2FsbCB0aGlzIG1ldGhvZCB0byByZWZvcm1hdC4gIERvZXMKKyogbm90IHJlZHJhdy4KKyogQHBhcmFtIGFmU3RhcnQgdGhlIG9mZnNldCBpbnRvIHRoZSB0ZXh0IHdoZXJlIG1vZGlmaWNhdGlvbiBiZWdhbjsgIGllLCB0aGUKKyogZmlyc3QgY2hhcmFjdGVyIGluIHRoZSB0ZXh0IHdoaWNoIGlzICJkaWZmZXJlbnQiIGluIHNvbWUgd2F5LiAgRG9lcyBub3QKKyogaGF2ZSB0byBiZSBub25uZWdhdGl2ZS4KKyogQHBhcmFtIGFmTGVuZ3RoIHRoZSBudW1iZXIgb2YgbmV3IG9yIGNoYW5nZWQgY2hhcmFjdGVycyBpbiB0aGUgdGV4dC4gIFNob3VsZCBuZXZlcgorKiBiZSBsZXNzIHRoYW4gMC4KKyogQHBhcmFtIHZpZXdSZWN0IHRoZSBSZWN0YW5nbGUgaW4gd2hpY2ggdGhlIHRleHQgd2lsbCBiZSBkaXNwbGF5ZWQuICBUaGlzIGlzIG5lZWRlZCBmb3IKKyogcmV0dXJuaW5nIHRoZSAiZGFtYWdlZCIgYXJlYSAtIHRoZSBhcmVhIG9mIHRoZSBzY3JlZW4gaW4gd2hpY2ggdGhlIHRleHQgbXVzdCBiZSByZWRyYXduLgorKiBAcGFyYW0gb3JpZ2luIHRoZSB0b3AtbGVmdCBjb3JuZXIgb2YgdGhlIHRleHQsIGluIHRoZSBkaXNwbGF5J3MgY29vcmRpbmF0ZSBzeXN0ZW0KKyogQHJldHVybnMgYSA8dHQ+UmVjdGFuZ2xlPC90dD4gd2hpY2ggc3BlY2lmaWVzIHRoZSBhcmVhIGluIHdoaWNoIHRleHQgbXVzdCBiZQorKiByZWRyYXduIHRvIHJlZmxlY3QgdGhlIGNoYW5nZSB0byB0aGUgdGV4dC4KKyovCisgICAgcHVibGljIFJlY3RhbmdsZSB1cGRhdGVGb3JtYXQoZmluYWwgaW50IGFmU3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIGludCBhZkxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVjdGFuZ2xlIHZpZXdSZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb2ludCBvcmlnaW4pCisgICAgeworICAgICAgICBpZiAoYWZTdGFydCA8IDApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkRlYnVnOiB1cGRhdGVGb3JtYXQgYWZTdGFydCA8IDA6ICIgKyBhZlN0YXJ0KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZkJnRm9ybWF0QWxsb3dlZCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiQmFja2dyb3VuZCBmb3JtYXR0aW5nIHNob3VsZCBoYXZlIGJlZW4gZGlzYWJsZWQiKTsKKyAgICAgICAgfQorICAgICAgICBmQ3VyVGltZVN0YW1wID0gZlRleHQuZ2V0VGltZVN0YW1wKCk7CisgICAgICAgIAorICAgICAgICBpbnQgY3VyTGluZSA9IGdldFZhbGlkTGluZUNvbnRhaW5pbmcoYWZTdGFydCwgVGV4dE9mZnNldC5BRlRFUl9PRkZTRVQpOworICAgICAgICBpbnQgbGluZVN0YXJ0UG9zID0gbGluZUNoYXJTdGFydEludGVybmFsKGN1ckxpbmUpOworCisgICAgICAgIC8vIG9wdGltaXplIGJ5IGZpbmRpbmcgb3V0IHdoZXRoZXIgY2hhbmdlIG9jY3VycmVkCisgICAgICAgIC8vIGFmdGVyIGZpcnN0IHdvcmQgYnJlYWsgb24gY3VybGluZQorCisgICAgICAgIGludCBmaXJzdFBvc3NpYmxlQnJlYWs7CisKKyAgICAgICAgaWYgKGxpbmVTdGFydFBvcyA8IGZUZXh0Lmxlbmd0aCgpKSB7CisKKyAgICAgICAgICAgIGlmIChmTGluZUJyZWFrID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBmTGluZUJyZWFrID0gQnJlYWtJdGVyYXRvci5nZXRMaW5lSW5zdGFuY2UoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIENoYXJhY3Rlckl0ZXJhdG9yIGNoYXJJdGVyID0gZlRleHQuY3JlYXRlQ2hhcmFjdGVySXRlcmF0b3IoKTsKKyAgICAgICAgICAgIGNoYXJJdGVyLnNldEluZGV4KGxpbmVTdGFydFBvcyk7CisgICAgICAgICAgICBmTGluZUJyZWFrLnNldFRleHQoY2hhckl0ZXIpOworCisgICAgICAgICAgICBmaXJzdFBvc3NpYmxlQnJlYWsgPSBmTGluZUJyZWFrLmZvbGxvd2luZyhsaW5lU3RhcnRQb3MpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZpcnN0UG9zc2libGVCcmVhayA9IGFmU3RhcnQ7CisKKyAgICAgICAgaWYgKChjdXJMaW5lID4gMCkgJiYgKGZpcnN0UG9zc2libGVCcmVhayA9PSBCcmVha0l0ZXJhdG9yLkRPTkUgfHwgYWZTdGFydCA8PSBmaXJzdFBvc3NpYmxlQnJlYWspKSB7CisgICAgICAgICAgICBjdXJMaW5lLS07CisgICAgICAgICAgICBpZiAoY3VyTGluZSA8IGZMVE5lZ1N0YXJ0ICYmIGN1ckxpbmUgPiBmTFRQb3NFbmQpCisgICAgICAgICAgICAgICAgY3VyTGluZSA9IGZMVFBvc0VuZDsKKyAgICAgICAgfQorCisgICAgICAgIHNoaWZ0VGFibGVUbyhjdXJMaW5lKTsKKworICAgICAgICBpbnQgcGl4SGVpZ2h0OyAvLyBhZnRlciB0aGUgZm9ybWF0VGV4dCBjYWxsLCBhdCBsZWFzdCBwaXhIZWlnaHQgdGV4dCBtdXN0IGJlIGZvcm1hdHRlZAorCisgICAgICAgIGlmIChmSExpbmUpIHsKKyAgICAgICAgICAgIGlmIChmRmlsbEluYykKKyAgICAgICAgICAgICAgICBwaXhIZWlnaHQgPSB2aWV3UmVjdC55ICsgdmlld1JlY3QuaGVpZ2h0IC0gb3JpZ2luLnk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcGl4SGVpZ2h0ID0gb3JpZ2luLnkgLSB2aWV3UmVjdC55OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKGZGaWxsSW5jKQorICAgICAgICAgICAgICAgIHBpeEhlaWdodCA9IHZpZXdSZWN0LnggKyB2aWV3UmVjdC53aWR0aCAtIG9yaWdpbi54OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHBpeEhlaWdodCA9IG9yaWdpbi54IC0gdmlld1JlY3QueDsKKyAgICAgICAgfQorCisgICAgICAgIFJlY3RhbmdsZSByID0gZm9ybWF0VGV4dChhZlN0YXJ0LCBhZkxlbmd0aCwgcGl4SGVpZ2h0LCBmYWxzZSk7CisKKyAgICAgICAgLy9kdW1wTGluZVRhYmxlKCk7CisKKyAgICAgICAgaWYgKChmUGl4SGVpZ2h0IDwgcGl4SGVpZ2h0KSAmJiAoZkxUTmVnU3RhcnQgPCBmTFRTaXplKSAmJiAoZkxUQ3VyVGV4dExlbiA+IGxhc3RMaW5lQ2hhclN0b3AoKSkpIHsKKyAgICAgICAgICAgIHNoaWZ0VGFibGVUbyhsYXN0TGluZSgpKTsKKyAgICAgICAgICAgIFJlY3RhbmdsZSBzID0gZm9ybWF0VGV4dCgwLCAwLCBwaXhIZWlnaHQsIGZhbHNlKTsKKyAgICAgICAgICAgIHIgPSByLnVuaW9uKHMpOworICAgICAgICB9CisKKyAgICAgICAgaW50bFJlY3Qob3JpZ2luLCByKTsKKyAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oIkRhbWFnZWQgcmVjdDogIityKyI7IG9yaWdpbjogIitvcmlnaW4pOworCisgICAgICAgIC8vIGRvbid0IG5lZWQgdG8gc3luY2hyb25pemVkIGhlcmUsIGIvYyB0aGUgZGFlbW9uIHNob3VsZG4ndCBiZSBydW5uaW5nIHdoZW4KKyAgICAgICAgLy8gdGhpcyBpcyBleGVjdXRpbmcKKworICAgICAgICBpZiAoZlRleHQubGVuZ3RoKCkgPCBsYXN0TGluZUNoYXJTdG9wKCkpCisgICAgICAgICAgICBlbmFibGVCR0Zvcm1hdCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzdG9wQmFja2dyb3VuZEZvcm1hdHRpbmcoKTsKKworICAgICAgICAvL2R1bXBMaW5lVGFibGUoKTsKKworICAgICAgICByZXR1cm4gcjsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBMaW5lQnJlYWtNZWFzdXJlciBtYWtlTWVhc3VyZXIoaW50IHBhcmFncmFwaFN0YXJ0LCBpbnQgcGFyYWdyYXBoTGltaXQpIHsKKworICAgICAgICBNVGV4dEl0ZXJhdG9yIGl0ZXIgPSBuZXcgTVRleHRJdGVyYXRvcihmVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZkZvbnRSZXNvbHZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYWdyYXBoU3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFncmFwaExpbWl0KTsKKyAgICAgICAgTGluZUJyZWFrTWVhc3VyZXIgbWVhc3VyZXIgPSBuZXcgTGluZUJyZWFrTWVhc3VyZXIoaXRlciwgZkZvbnRSZW5kZXJDb250ZXh0KTsKKyAgICAgICAgaWYgKGZnQ2FjaGVNZWFzdXJlcnMpIHsKKyAgICAgICAgICAgIGZDYWNoZWRNZWFzdXJlclN0YXJ0ID0gcGFyYWdyYXBoU3RhcnQ7CisgICAgICAgICAgICBmQ2FjaGVkTWVhc3VyZXJMaW1pdCA9IHBhcmFncmFwaExpbWl0OworICAgICAgICAgICAgZkNhY2hlZE1lYXN1cmVyID0gbWVhc3VyZXI7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1lYXN1cmVyOworICAgIH0gICAgICAgIAorCisvKioKKyogQ29tcHV0ZSB0ZXh0IGZvcm1hdC4gIFRoaXMgbWV0aG9kIGNhbGN1bGF0ZXMgdGV4dCBmb3JtYXQ7ICBpdCBjYW4gYmUKKyogY2FsbGVkIGZvciB2YXJpb3VzIHB1cnBvc2VzOiAgdG8gcmVmb3JtYXQgdGV4dCBhZnRlciBhbiBlZGl0LCB0bworKiBmb3JtYXQgdGV4dCB0byBhIHBhcnRpY3VsYXIgaGVpZ2h0LCBvciB0byBmb3JtYXQgdGV4dCB1cCB0byBhCisqIHBhcnRpY3VsYXIgb2Zmc2V0LgorKiA8cD4KKyogVGhlIGNhbGxpbmcgbWV0aG9kIG11c3QgZW5zdXJlIHRoYXQgPHR0PmZMaW5lVGFibGU8L3R0PiBoYXMgYmVlbiBzaGlmdGVkCisqIHN1Y2ggdGhhdCB0aGUgbGFzdCBwb3NpdGl2ZSBsaW5lIGlzIHdoZXJlIHRoZSBmb3JtYXR0aW5nIG9wZXJhdGlvbiB3aWxsCisqIGJlZ2luLgorKiA8cD4KKyogQ2FsbGVkIGJ5OiA8dHQ+Zm9ybWF0VG9IZWlnaHQoKTwvdHQ+LCA8dHQ+dXBkYXRlRm9ybWF0KCk8L3R0PiwKKyogPHR0PnRleHRPZmZzZXRUb1BvaW50KCk8L3R0PiwgPHR0PmdldEJvdW5kaW5nUmVjdCgpPC90dD4KKyogQHBhcmFtIGFmU3RhcnQgdGhlIG9mZnNldCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIGluIHRoZSB0ZXh0IHdoaWNoIGhhcyBjaGFuZ2VkCisqIEBwYXJhbSBhZkxlbmd0aCB0aGUgbnVtYmVyIG9mIG5ldyBvciBjaGFuZ2VkIGNoYXJhY3RlcnMgaW4gdGhlIHRleHQKKyogQHBhcmFtIHJlcUhlaWdodCB0aGUgcGl4ZWwgaGVpZ2h0IHRvIHdoaWNoIHRleHQgbXVzdCBiZSBmb3JtYXR0ZWQuICBJZ25vcmVkCisqIGlmIDx0dD5mb3JtYXRBbGxOZXdUZXh0PC90dD4gaXMgPHR0PnRydWU8L3R0Piwgb3IgaWYgb2xkIGxpbmVzIHJlbWFpbiBpbiB0aGUKKyogbGluZSB0YWJsZSBhZnRlciBhbGwgY2hhbmdlZCB0ZXh0IGhhcyBiZWVuIGZvcm1hdHRlZC4KKyogQHBhcmFtIHNlZWtPZmZzZXRBdEVuZCBpZiA8dHQ+dHJ1ZTwvdHQ+LCBmb3JtYXR0aW5nIGNvbnRpbnVlcyB1bnRpbCB0aGUgbGluZQorKiBjb250YWluaW5nIGFmU3RhcnQrYWZMZW5ndGggaGFzIGJlZW4gZm9ybWF0dGVkLiAgSWYgZmFsc2UsIGZvcm1hdHRpbmcgbWF5IHN0b3AKKyogd2hlbiByZXFIZWlnaHQgaGFzIGJlZW4gcmVhY2hlZC4gIFRoaXMgcGFyYW1ldGVyIHNob3VsZCBiZSA8dHQ+dHJ1ZTwvdHQ+IDxiPm9ubHk8L2I+CisqIGlmIHRoZSBvYmplY3Qgb2YgdGhlIGZvcm1hdHRpbmcgb3BlcmF0aW9uIGlzIHRvIGV4dGVuZCBmb3JtYXR0aW5nIHRvIGEgcGFydGljdWxhcgorKiBvZmZzZXQgd2l0aGluIHRoZSB0ZXh0OyAgaXQgc2hvdWxkIGJlIDx0dD5mYWxzZTwvdHQ+IGV2ZXJ5d2hlcmUgZWxzZS4KKyogQHJldHVybnMgYSByZWN0YW5nbGUsIHJlbGF0aXZlIHRvIHRoZSB0b3AtbGVmdCBvZiB0aGUgdGV4dCwgd2hpY2ggZW5jbG9zZXMgdGhlCisqIHNjcmVlbiBhcmVhIHdob3NlIGFwcGVhcmFuY2UgaGFzIGNoYW5nZWQgZHVlIHRvIHRoZSByZWZvcm1hdHRpbmcuCisqLworCisgICAgcHJpdmF0ZSBSZWN0YW5nbGUgZm9ybWF0VGV4dChpbnQgYWZTdGFydCwgZmluYWwgaW50IGFmTGVuZ3RoLCBpbnQgcmVxSGVpZ2h0LCBib29sZWFuIHNlZWtPZmZzZXRBdEVuZCkKKyAgICB7CisgICAgLyogYXNzdW1lcyBsaW5lIHRhYmxlIHNoaWZ0ZWQgc3VjaCB0aGF0IGZpcnN0IGxpbmUgdG8gZm9ybWF0IGlzCisgICAgbGFzdCBwb3NpdGl2ZSBsaW5lICovCisKKyAgICAgICAgaWYgKGFmTGVuZ3RoIDwgMCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiYWZMZW5ndGggPCAwLiAgYWZMZW5ndGg9IiArIGFmTGVuZ3RoKTsKKyAgICAgICAgfQorCisgICAgICAgIGludCBuZXdUZXh0RW5kID0gYWZTdGFydCArIGFmTGVuZ3RoOworCisgICAgICAgIGZpbmFsIGludCBuZXdDdXJUZXh0TGVuID0gZlRleHQubGVuZ3RoKCk7CisKKyAgICAgICAgLy8gdmFyaWFibGUgbm90IHVzZWQgaW50IG9sZFBpeEhlaWdodCA9IGZQaXhIZWlnaHQ7CisgICAgICAgIGludCBvbGRGdWxsUGl4SGVpZ2h0ID0gZkZ1bGxQaXhIZWlnaHQ7CisgICAgICAgIGZQaXhIZWlnaHQgLT0gZkxpbmVUYWJsZVtmTFRQb3NFbmRdLmdldEhlaWdodCgpOworCisgICAgICAgIGludCBjdXJHcmFwaGljU3RhcnQgPSBmTGluZVRhYmxlW2ZMVFBvc0VuZF0uZ2V0R3JhcGhpY1N0YXJ0KGZQaXhIZWlnaHQpOworICAgICAgICBpbnQgY3VyTGluZVN0YXJ0ID0gZkxpbmVUYWJsZVtmTFRQb3NFbmRdLmdldENoYXJTdGFydChuZXdDdXJUZXh0TGVuKTsKKyAgICAgICAgCisgICAgICAgIGludCBjdXJQYXJhZ3JhcGhTdGFydCA9IGZUZXh0LnBhcmFncmFwaFN0YXJ0KGN1ckxpbmVTdGFydCk7CisgICAgICAgIGludCBjdXJQYXJhZ3JhcGhMaW1pdCA9IEludGVnZXIuTUlOX1ZBTFVFOyAvLyBkdW1teSB2YWx1ZQorCisgICAgICAgIGludCBkYW1hZ2VTdGFydCA9IGN1ckdyYXBoaWNTdGFydDsKKworICAgICAgICBQYXJhZ3JhcGhSZW5kZXJlciByZW5kZXJlciA9IG51bGw7CisgICAgICAgIExpbmVCcmVha01lYXN1cmVyIG1lYXN1cmVyID0gbnVsbDsKKyAgICAgICAgCisgICAgICAgIC8vIHRyeSB0byB1c2UgY2FjaGVkIExpbmVCcmVha01lYXN1cmVyIGlmIHBvc3NpYmxlCisgICAgICAgIGlmIChmQ2FjaGVkTWVhc3VyZXIgIT0gbnVsbCAmJiAKKyAgICAgICAgICAgIGN1clBhcmFncmFwaFN0YXJ0ID09IGZDYWNoZWRNZWFzdXJlclN0YXJ0KSB7CisKKyAgICAgICAgICAgIGN1clBhcmFncmFwaExpbWl0ID0gZlRleHQucGFyYWdyYXBoTGltaXQoY3VyUGFyYWdyYXBoU3RhcnQpOworICAgICAgICAgICAgCisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGlmIChuZXdDdXJUZXh0TGVuIC0gZkxUQ3VyVGV4dExlbiA9PSAxICYmIGFmTGVuZ3RoID09IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGN1clBhcmFncmFwaExpbWl0ID09IGZDYWNoZWRNZWFzdXJlckxpbWl0KzEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIE1UZXh0SXRlcmF0b3IgaXRlciA9IG5ldyBNVGV4dEl0ZXJhdG9yKGZUZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZkZvbnRSZXNvbHZlciwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJQYXJhZ3JhcGhTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1clBhcmFncmFwaExpbWl0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZDYWNoZWRNZWFzdXJlci5pbnNlcnRDaGFyKGl0ZXIsIGFmU3RhcnQpOworICAgICAgICAgICAgICAgICAgICAgICAgZkNhY2hlZE1lYXN1cmVyTGltaXQgKz0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1lYXN1cmVyID0gZkNhY2hlZE1lYXN1cmVyOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZMVEN1clRleHRMZW4gLSBuZXdDdXJUZXh0TGVuID09IDEgJiYgYWZMZW5ndGggPT0gMCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoZkNhY2hlZE1lYXN1cmVyTGltaXQgPiBmQ2FjaGVkTWVhc3VyZXJTdGFydCArIDEgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyUGFyYWdyYXBoTGltaXQgPT0gZkNhY2hlZE1lYXN1cmVyTGltaXQtMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgTVRleHRJdGVyYXRvciBpdGVyID0gbmV3IE1UZXh0SXRlcmF0b3IoZlRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmRm9udFJlc29sdmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyUGFyYWdyYXBoU3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJQYXJhZ3JhcGhMaW1pdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBmQ2FjaGVkTWVhc3VyZXIuZGVsZXRlQ2hhcihpdGVyLCBhZlN0YXJ0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZDYWNoZWRNZWFzdXJlckxpbWl0IC09IDE7CisgICAgICAgICAgICAgICAgICAgICAgICBtZWFzdXJlciA9IGZDYWNoZWRNZWFzdXJlcjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhdGNoKEFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgZkNhY2hlZE1lYXN1cmVyID0gbnVsbDsKKyAgICAgICAgICAgICAgICBmZ0NhY2hlTWVhc3VyZXJzID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChtZWFzdXJlciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgLy8gbmVlZCB0byBzZXQgdXAgcmVuZGVyZXIgc2luY2UgdGhlIHBhcmFncmFwaCB1cGRhdGUgaW4gdGhlCisgICAgICAgICAgICAgICAgLy8gZm9ybWF0dGluZyBsb29wIHdpbGwgbm90IGhhcHBlbgorICAgICAgICAgICAgICAgIEF0dHJpYnV0ZU1hcCBzdHlsZSA9IGZUZXh0LnBhcmFncmFwaFN0eWxlQXQoY3VyUGFyYWdyYXBoU3RhcnQpOworICAgICAgICAgICAgICAgIHJlbmRlcmVyID0gZ2V0UmVuZGVyZXJGb3Ioc3R5bGUpOworICAgICAgICAgICAgICAgIG1lYXN1cmVyLnNldFBvc2l0aW9uKGN1ckxpbmVTdGFydCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChtZWFzdXJlciA9PSBudWxsKSB7CisgICAgICAgICAgICAvLyB0cmlnZ2VyIHBhcmFncmFwaCB1cGRhdGUgYXQgc3RhcnQgb2YgZm9ybWF0dGluZyBsb29wCisgICAgICAgICAgICBjdXJQYXJhZ3JhcGhMaW1pdCA9IGN1clBhcmFncmFwaFN0YXJ0OworICAgICAgICAgICAgY3VyUGFyYWdyYXBoU3RhcnQgPSAwOworICAgICAgICB9CisKKyAgICAgICAgZkxUQ3VyVGV4dExlbiA9IG5ld0N1clRleHRMZW47CisgICAgICAgIAorICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCJsaW5lOiAiICsgZkxUUG9zRW5kICsgIiwgY2xzOiAiICsgY3VyTGluZVN0YXJ0KTsKKworCisgICAgICAgICAgICBpZiAoY3VyTGluZVN0YXJ0ID49IGN1clBhcmFncmFwaExpbWl0KSB7CisgICAgICAgICAgICAgICAgY3VyUGFyYWdyYXBoU3RhcnQgPSBjdXJQYXJhZ3JhcGhMaW1pdDsKKyAgICAgICAgICAgICAgICBjdXJQYXJhZ3JhcGhMaW1pdCA9IGZUZXh0LnBhcmFncmFwaExpbWl0KGN1clBhcmFncmFwaFN0YXJ0KTsKKworICAgICAgICAgICAgICAgIEF0dHJpYnV0ZU1hcCBzdHlsZSA9IGZUZXh0LnBhcmFncmFwaFN0eWxlQXQoY3VyUGFyYWdyYXBoU3RhcnQpOworICAgICAgICAgICAgICAgIHJlbmRlcmVyID0gZ2V0UmVuZGVyZXJGb3Ioc3R5bGUpOworCisgICAgICAgICAgICAgICAgaWYgKGN1clBhcmFncmFwaFN0YXJ0IDwgY3VyUGFyYWdyYXBoTGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgbWVhc3VyZXIgPSBtYWtlTWVhc3VyZXIoY3VyUGFyYWdyYXBoU3RhcnQsIGN1clBhcmFncmFwaExpbWl0KTsKKyAgICAgICAgICAgICAgICAgICAgbWVhc3VyZXIuc2V0UG9zaXRpb24oY3VyTGluZVN0YXJ0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG1lYXN1cmVyID0gbnVsbDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBib29sZWFuIGhhdmVPbGREaXJlY3Rpb24gPSBmTGluZVRhYmxlW2ZMVFBvc0VuZF0gIT0gbnVsbDsKKyAgICAgICAgICAgICAgICBib29sZWFuIG9sZERpcmVjdGlvbiA9IGZhbHNlOyAvLyAgZHVtbXkgdmFsdWUgZm9yIGNvbXBpbGVyCisgICAgICAgICAgICAgICAgaWYgKGhhdmVPbGREaXJlY3Rpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgb2xkRGlyZWN0aW9uID0gZkxpbmVUYWJsZVtmTFRQb3NFbmRdLmlzTGVmdFRvUmlnaHQoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBmTGluZVRhYmxlW2ZMVFBvc0VuZF0gPSByZW5kZXJlci5sYXlvdXQoZlRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZMaW5lVGFibGVbZkxUUG9zRW5kXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVhc3VyZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZGb250UmVuZGVyQ29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyUGFyYWdyYXBoU3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1clBhcmFncmFwaExpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmV3JhcCA/IGZMaW5lRGltIDogSW50ZWdlci5NQVhfVkFMVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZMaW5lRGltKTsKKyAgICAgICAgICAgICAgICBpZiAoaGF2ZU9sZERpcmVjdGlvbikgeworICAgICAgICAgICAgICAgICAgICBpZiAoZkxpbmVUYWJsZVtmTFRQb3NFbmRdLmlzTGVmdFRvUmlnaHQoKSAhPSBvbGREaXJlY3Rpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld1RleHRFbmQgPSBNYXRoLm1heChuZXdUZXh0RW5kLCBjdXJQYXJhZ3JhcGhMaW1pdCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBMYXlvdXRJbmZvIHRoZUxpbmUgPSBmTGluZVRhYmxlW2ZMVFBvc0VuZF07CisKKyAgICAgICAgICAgICAgICB0aGVMaW5lLnNldEdyYXBoaWNTdGFydChjdXJHcmFwaGljU3RhcnQpOworICAgICAgICAgICAgICAgIGN1ckdyYXBoaWNTdGFydCArPSB0aGVMaW5lLmdldEhlaWdodCgpOworCisgICAgICAgICAgICAgICAgZlBpeEhlaWdodCArPSB0aGVMaW5lLmdldEhlaWdodCgpOworICAgICAgICAgICAgICAgIGN1ckxpbmVTdGFydCArPSB0aGVMaW5lLmdldENoYXJMZW5ndGgoKTsKKworICAgICAgICAgICAgICAgIGlmICghZldyYXApIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVXaWR0aCA9IHRoZUxpbmUuZ2V0VG90YWxBZHZhbmNlKCkgKyB0aGVMaW5lLmdldExlYWRpbmdNYXJnaW4oKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRoZUxpbmUuaXNMZWZ0VG9SaWdodCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZk1heFggPCBsaW5lV2lkdGgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmTWF4WCA9IGxpbmVXaWR0aDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmTGluZURpbS1saW5lV2lkdGggPCBmTWluWCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZNaW5YID0gZkxpbmVEaW0tbGluZVdpZHRoOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICBOZXh0LCBkaXNjYXJkIG9ic29sZXRlIGxpbmVzLiAgQSBsaW5lIGlzIG9ic29sZXRlIGlmIGl0CisgICAgICAgICAgICAgICAgY29udGFpbnMgbmV3IHRleHQgb3IgdGV4dCB3aGljaCBoYXMgYmVlbiBmb3JtYXR0ZWQuCisgICAgICAgICAgICAqLworCisgICAgICAgICAgICB3aGlsZSAoZkxUTmVnU3RhcnQgPCBmTFRTaXplKSB7CisgICAgICAgICAgICAgICAgaW50IGxpbmVQb3MgPSBmTGluZVRhYmxlW2ZMVE5lZ1N0YXJ0XS5nZXRDaGFyU3RhcnQobmV3Q3VyVGV4dExlbik7CisgICAgICAgICAgICAgICAgaWYgKGxpbmVQb3MgPj0gY3VyTGluZVN0YXJ0ICYmIGxpbmVQb3MgPj0gbmV3VGV4dEVuZCkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oImRlbGV0ZSBuZWcgbGluZTogIiArIGZMVE5lZ1N0YXJ0KTsKKyAgICAgICAgICAgICAgICBmUGl4SGVpZ2h0IC09IGZMaW5lVGFibGVbZkxUTmVnU3RhcnRdLmdldEhlaWdodCgpOworICAgICAgICAgICAgICAgIGZMaW5lVGFibGVbZkxUTmVnU3RhcnQrK10gPSBudWxsOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpbnQgc3RvcEF0OworICAgICAgICAgICAgaWYgKGZMVE5lZ1N0YXJ0IDwgZkxUU2l6ZSkKKyAgICAgICAgICAgICAgICBzdG9wQXQgPSBmTGluZVRhYmxlW2ZMVE5lZ1N0YXJ0XS5nZXRDaGFyU3RhcnQobmV3Q3VyVGV4dExlbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc3RvcEF0ID0gbmV3Q3VyVGV4dExlbjsKKworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICBOb3csIGlmIGV4aXQgY29uZGl0aW9ucyBhcmVuJ3QgbWV0LCBjcmVhdGUgYSBuZXcgbGluZS4KKyAgICAgICAgICAgICovCisKKyAgICAgICAgICAgIGlmIChzZWVrT2Zmc2V0QXRFbmQpIHsKKyAgICAgICAgICAgICAgICBpZiAoKGN1ckxpbmVTdGFydCA+PSBuZXdUZXh0RW5kKSAmJiAoZkxUTmVnU3RhcnQgPT0gZkxUU2l6ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCJicmVhayAxIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChjdXJMaW5lU3RhcnQgPj0gc3RvcEF0KSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbigiY3VyTGluZVN0YXJ0OiAiICsgY3VyTGluZVN0YXJ0ICsgIiA+PSBzdG9wQXQ6ICIgKyBzdG9wQXQpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZkxUTmVnU3RhcnQ9PWZMVFNpemUgJiYgZlBpeEhlaWdodCA+PSByZXFIZWlnaHQpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCJicmVhayAzIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGZMVFBvc0VuZCArIDEgPT0gZkxUTmVnU3RhcnQpCisgICAgICAgICAgICAgICAgZXhwYW5kTGluZVRhYmxlKCk7CisKKyAgICAgICAgICAgIGZMaW5lVGFibGVbKytmTFRQb3NFbmRdID0gbnVsbDsgLy8gd2lsbCBiZSBjcmVhdGVkIGJ5IFJlbmRlcmVyCisgICAgICAgIH0KKyAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50KCJcbiIpOworCisgICAgICAgIGlmIChuZXdDdXJUZXh0TGVuID09IDApIHsKKyAgICAgICAgICAgIGZMaW5lVGFibGVbMF0gPSBwc2V1ZG9MaW5lSW5mbyhmTGluZVRhYmxlWzBdLCAwKTsKKyAgICAgICAgICAgIGZQaXhIZWlnaHQgPSBmTGluZVRhYmxlWzBdLmdldEhlaWdodCgpOworICAgICAgICB9CisgICAgICAgIGZGdWxsUGl4SGVpZ2h0ID0gZlBpeEhlaWdodDsKKworICAgICAgICBpZiAoaXNQYXJhQnJlYWtCZWZvcmUobmV3Q3VyVGV4dExlbikpIHsKKyAgICAgICAgICAgIGZGdWxsUGl4SGVpZ2h0ICs9IGxhc3RDaGFySGVpZ2h0KCk7CisgICAgICAgIH0KKy8qCisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiY3VyTGluZVN0YXJ0OiAiICsgY3VyTGluZVN0YXJ0ICsKKyAgICAgICAgICAgICIsIGZMVFBvc0VuZDogIiArIGZMVFBvc0VuZCArCisgICAgICAgICAgICAiLCBmTFROZWdTdGFydDogIiArIGZMVE5lZ1N0YXJ0ICsKKyAgICAgICAgICAgICIsIGZMVFNpemU6ICIgKyBmTFRTaXplKTsKKworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIm9sZEZ1bGxQaXhIZWlnaHQ6ICIgKyBvbGRGdWxsUGl4SGVpZ2h0ICsgIiwgbmV3RnVsbFBpeEhlaWdodDogIiArIGZGdWxsUGl4SGVpZ2h0KTsKKyovCisgICAgICAgIGludCBkYW1hZ2VMZW5ndGg7CisgICAgICAgIGlmIChmRnVsbFBpeEhlaWdodCA9PSBvbGRGdWxsUGl4SGVpZ2h0KSB7CisgICAgICAgICAgICBkYW1hZ2VMZW5ndGggPSBmTGluZVRhYmxlW2ZMVFBvc0VuZF0uZ2V0R3JhcGhpY1N0YXJ0KGZQaXhIZWlnaHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBmTGluZVRhYmxlW2ZMVFBvc0VuZF0uZ2V0SGVpZ2h0KCkgLSBkYW1hZ2VTdGFydDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGRhbWFnZUxlbmd0aCA9IE1hdGgubWF4KGZGdWxsUGl4SGVpZ2h0LCBvbGRGdWxsUGl4SGVpZ2h0KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBuZXcgUmVjdGFuZ2xlKGZNaW5YLCBkYW1hZ2VTdGFydCwgZk1heFgtZk1pblgsIGRhbWFnZUxlbmd0aCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGR1bXBMaW5lVGFibGUoKQorICAgIHsKKyAgICAgICAgaW50IGk7CisKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJmTFRDdXJUZXh0TGVuPSIgKyBmTFRDdXJUZXh0TGVuICsgIiAiICk7CisgICAgICAgIGZvciAoaT0wOyBpPD0gZkxUUG9zRW5kOyBpKyspCisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkxpbmUgIiArIGkgKyAiIHN0YXJ0cyBhdCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgZkxpbmVUYWJsZVtpXS5nZXRDaGFyU3RhcnQoZkxUQ3VyVGV4dExlbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiIGFuZCBleHRlbmRzICIgKyBmTGluZVRhYmxlW2ldLmdldENoYXJMZW5ndGgoKSk7CisKKyAgICAgICAgZm9yIChpPWZMVE5lZ1N0YXJ0OyBpPCBmTFRTaXplOyBpKyspCisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkxpbmUgIiArIChpLWZMVE5lZ1N0YXJ0K2ZMVFBvc0VuZCsxKSArICIgc3RhcnRzIGF0ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBmTGluZVRhYmxlW2ldLmdldENoYXJTdGFydChmTFRDdXJUZXh0TGVuKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgYW5kIGV4dGVuZHMgIiArIGZMaW5lVGFibGVbaV0uZ2V0Q2hhckxlbmd0aCgpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIGludCBtaW5YKCkgeworICAgIAorICAgICAgICByZXR1cm4gZk1pblg7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICogUmV0dXJuIHRoZSBob3Jpem9udGFsIGV4dGVudCBvZiB0aGUgdGV4dCwgaW4gcGl4ZWxzLgorICAgICogPHA+CisgICAgKiBUaGlzIHJldHVybnMgYW4gYXBwcm94aW1hdGlvbiBiYXNlZCBvbiB0aGUgY3VycmVudGx5IGZvcm1hdHRlZCB0ZXh0LgorICAgICovCisgICAgcHVibGljIHN5bmNocm9uaXplZCBpbnQgbWF4WCgpCisgICAgeworICAgICAgICBjaGVja1RpbWVTdGFtcCgpOworCisgICAgICAgIHJldHVybiBmTWF4WDsKKyAgICB9CisKKyAgICAvKioKKyAgICAqIFJldHVybiB0aGUgaGVpZ2h0IG9mIHRoZSBsYXN0IGNoYXJhY3RlciBpbiB0aGUgdGV4dC4KKyAgICAqCisgICAgKiBUaGlzIGlzIHVzZWQgZm9yIHRoZSAnZXh0cmEgaGVpZ2h0JyBuZWVkZWQgdG8gZGlzcGxheSBhIGNhcmV0IGF0IHRoZSBlbmQgb2YgdGhlIHRleHQgd2hlbiB0aGUKKyAgICAqIHRleHQgaXMgZW1wdHkgb3IgZW5kcyB3aXRoIGEgbmV3bGluZS4KKyAgICAqLworICAgIHByaXZhdGUgaW50IGxhc3RDaGFySGVpZ2h0KCkKKyAgICB7CisgICAgICAgIGludCBjaGFySW5kZXggPSBsYXN0TGluZUNoYXJTdG9wKCkgLSAxOworICAgICAgICBBdHRyaWJ1dGVNYXAgc3QgPSBmVGV4dC5jaGFyYWN0ZXJTdHlsZUF0KGNoYXJJbmRleCk7CisgICAgICAgIERlZmF1bHRDaGFyYWN0ZXJNZXRyaWMuTWV0cmljIG1ldHJpYyA9IGZEZWZhdWx0Q2hhck1ldHJpYy5nZXRNZXRyaWNGb3JTdHlsZShzdCk7CisKKyAgICAgICAgaW50IGhlaWdodCA9IG1ldHJpYy5nZXRBc2NlbnQoKTsKKyAgICAgICAgaGVpZ2h0ICs9IG1ldHJpYy5nZXREZXNjZW50KCk7CisgICAgICAgIGhlaWdodCArPSBtZXRyaWMuZ2V0TGVhZGluZygpOworCisgICAgICAgIHJldHVybiBoZWlnaHQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgdGhlIGNoYXJhY3RlciBhdCBwb3MgaXMgYSBwYXJhZ3JhcGggc2VwYXJhdG9yLgorICAgICAqLworICAgIHByaXZhdGUgYm9vbGVhbiBpc1BhcmFCcmVha0JlZm9yZShpbnQgcG9zKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHBvcyA+IDAgJiYgKGZUZXh0LmF0KHBvcyAtIDEpID09ICdcdTIwMjknIHx8IGZUZXh0LmF0KHBvcyAtIDEpID09ICdcbicpOworICAgICAgICAvLyB3ZSByZWFsbHkgbmVlZCB0byB0YWtlIGxvb2sgYXQgdGhpcyBhbmQgZGV0ZXJtaW5lIHdoYXQgdGhpcyBmdW5jdGlvbgorICAgICAgICAvLyBzaG91bGQgYmUgZG9pbmcuICBXaGF0IEkndmUgZ290IGhlcmUgcmlnaHQgbm93IGlzIGEgdGVtcG9yYXJ5IGltcGxlbWVudGF0aW9uLgorICAgIH0KKworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgaW50IG1pblkoKSB7CisgICAgCisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAqIFJldHVybiB0aGUgdmVydGljYWwgZXh0ZW50IG9mIHRoZSB0ZXh0LCBpbiBwaXhlbHMuCisgICAgKiA8cD4KKyAgICAqIFRoaXMgcmV0dXJucyBhbiBhcHByb3hpbWF0aW9uIGJhc2VkIG9uIHRoZSBjdXJyZW50bHkgZm9ybWF0dGVkIHRleHQuCisgICAgKi8KKyAgICBwdWJsaWMgc3luY2hyb25pemVkIGludCBtYXhZKCkKKyAgICB7CisgICAgICAgIGNoZWNrVGltZVN0YW1wKCk7CisKKyAgICAgICAgaW50IG51bUNoYXJzID0gbGFzdExpbmVDaGFyU3RvcCgpOworCisgICAgICAgIGludCBwaXhIZWlnaHQgPSBmUGl4SGVpZ2h0OworICAgICAgICBpZiAobnVtQ2hhcnMgPT0gZkxUQ3VyVGV4dExlbiAmJiBpc1BhcmFCcmVha0JlZm9yZShmTFRDdXJUZXh0TGVuKSkgeworICAgICAgICAgICAgcGl4SGVpZ2h0ICs9IGxhc3RDaGFySGVpZ2h0KCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobnVtQ2hhcnMgIT0gMCkKKyAgICAgICAgICAgIHJldHVybiBwaXhIZWlnaHQgKiBmVGV4dC5sZW5ndGgoKSAvIG51bUNoYXJzOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKioKKyAgICAqIFJldHVybiB0aGUgYWN0dWFsIHBpeGVsIGxlbmd0aCBvZiB0aGUgdGV4dCB3aGljaCBoYXMgYmVlbiBmb3JtYXR0ZWQuCisgICAgKi8KKyAgICBwdWJsaWMgc3luY2hyb25pemVkIGludCBmb3JtYXR0ZWRIZWlnaHQoKQorICAgIHsKKyAgICAgICAgY2hlY2tUaW1lU3RhbXAoKTsKKyAgICAgICAgcmV0dXJuIGZQaXhIZWlnaHQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhlcmUgYXJlIHR3byBtb2RlcyBmb3IgZGVhbGluZyB3aXRoIGNhcnJpYWdlIHJldHVybnMgYXQgdGhlIGVuZCBvZiBhIGxpbmUuICBJbiB0aGUgJ2luZmluaXRlIHdpZHRoJworICAgICAqIG1vZGUsIHRoZSBsYXN0IGNoYXJhY3RlciBpcyBjb25zaWRlcmVkIHRvIGhhdmUgaW5maW5pdGUgd2lkdGguICBUaHVzIGlmIHRoZSBwb2ludCBpcyBwYXN0IHRoZSAncmVhbCcKKyAgICAgKiBlbmQgb2YgdGhlIGxpbmUsIHRoZSBvZmZzZXQgaXMgdGhlIHBvc2l0aW9uIGJlZm9yZSB0aGF0IGxhc3QgY2hhcmFjdGVyLCBhbmQgdGhlIG9mZnNldCBpcyBhc3NvY2lhdGVkCisgICAgICogd2l0aCB0aGF0IGNoYXJhY3RlciAocGxhY2VtZW50IGFmdGVyKS4gSW4gdGhlICdhY3R1YWwgd2lkdGgnIG1vZGUsIHRoZSBvZmZzZXQgaXMgcG9zaXRpb25lZCBhZnRlcgorICAgICAqIHRoYXQgY2hhcmFjdGVyLCBidXQgc3RpbGwgYXNzb2NpYXRlZCB3aXRoIGl0IChwbGFjZW1lbnQgYmVmb3JlKS4KKyAgICAgKi8KKworICAgIHByaXZhdGUgVGV4dE9mZnNldCBsaW5lRGltVG9PZmZzZXQoVGV4dE9mZnNldCByZXN1bHQsIGludCBsaW5lLCBpbnQgbGluZVgsIGludCBsaW5lWSwgVGV4dE9mZnNldCBhbmNob3IsIGJvb2xlYW4gaW5maW5pdGVNb2RlKQorICAgIHsKKyAgICAvLyB0ZW1wb3JhcmlseSBhZGp1c3QgbGluZSBpbmZvIHRvIHJlbW92ZSB0aGUgbmVnYXRpdmUgY2hhciBzdGFydHMgdXNlZCBpbiB0aGUgbGluZSB0YWJsZS4KKyAgICAvLyB0aGVuIGNhbGwgdGhyb3VnaCB0byB0aGUgcGFyYWdyYXBoIHJlbmRlcmVyIHRvIGdldCB0aGUgb2Zmc2V0LiAgRG9uJ3QgcHV0IGxpbmUgZW5kCisgICAgLy8gb3B0aW1pemF0aW9uIGhlcmUsIGxldCB0aGUgcmVuZGVyZXIgZG8gaXQgKHBlcmhhcHMgaXQgZG9lcyBmYW5jeSBzdHVmZiB3aXRoIHRoZSBtYXJnaW5zKS4KKworICAgICAgICBMYXlvdXRJbmZvIGxpbmVJbmZvID0gZkxpbmVUYWJsZVtsaW5lXTsKKworICAgICAgICByZXN1bHQgPSBsaW5lSW5mby5waXhlbFRvT2Zmc2V0KGZMVEN1clRleHRMZW4sIHJlc3VsdCwgZkxpbmVEaW0sIGxpbmVYLCBsaW5lWSk7CisKKyAgICAgICAgaWYgKGluZmluaXRlTW9kZSAmJgorICAgICAgICAgICAgKHJlc3VsdC5mT2Zmc2V0ID4gbGluZUluZm8uZ2V0Q2hhclN0YXJ0KGZMVEN1clRleHRMZW4pKSAmJgorICAgICAgICAgICAgaXNQYXJhQnJlYWtCZWZvcmUocmVzdWx0LmZPZmZzZXQpICYmCisgICAgICAgICAgICAoYW5jaG9yID09IG51bGwgfHwgYW5jaG9yLmZPZmZzZXQgPT0gcmVzdWx0LmZPZmZzZXQgLSAxKSkgeworCisgICAgICAgICAgICByZXN1bHQuc2V0T2Zmc2V0KHJlc3VsdC5mT2Zmc2V0IC0gMSwgVGV4dE9mZnNldC5BRlRFUl9PRkZTRVQpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvKioKKyAgICAqIEdpdmVuIGEgc2NyZWVuIGxvY2F0aW9uIHAsIHJldHVybiB0aGUgb2Zmc2V0IG9mIHRoZSBjaGFyYWN0ZXIgaW4gdGhlIHRleHQgbmVhcmVzdCB0byBwLgorICAgICovCisgICAgcHVibGljIHN5bmNocm9uaXplZCBUZXh0T2Zmc2V0IHBvaW50VG9UZXh0T2Zmc2V0KFRleHRPZmZzZXQgcmVzdWx0LCBpbnQgcHgsIGludCBweSwgUG9pbnQgb3JpZ2luLCBUZXh0T2Zmc2V0IGFuY2hvciwgYm9vbGVhbiBpbmZpbml0ZU1vZGUpCisgICAgeworICAgICAgICBjaGVja1RpbWVTdGFtcCgpOworICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCisgICAgICAgICAgICByZXN1bHQgPSBuZXcgVGV4dE9mZnNldCgpOworCisgICAgICAgIGludCBmaWxsRDsKKworICAgICAgICBpZiAoZkhMaW5lKQorICAgICAgICAgICAgZmlsbEQgPSBweSAtIG9yaWdpbi55OworICAgICAgICBlbHNlCisgICAgICAgICAgICBmaWxsRCA9IHB4IC0gb3JpZ2luLng7CisKKyAgICAgICAgaWYgKCFmRmlsbEluYykKKyAgICAgICAgICAgIGZpbGxEID0gLWZpbGxEOworCisgICAgICAgIGlmIChmaWxsRCA8IDApIHsKKyAgICAgICAgICAgIHJlc3VsdC5zZXRPZmZzZXQoMCwgVGV4dE9mZnNldC5BRlRFUl9PRkZTRVQpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIGZvcm1hdFRvSGVpZ2h0KGZpbGxEKTsKKworICAgICAgICBpZiAoZmlsbEQgPj0gZlBpeEhlaWdodCkgeworICAgICAgICAgICAgYm9vbGVhbiBiaWFzID0gZkxUQ3VyVGV4dExlbj09MD8gVGV4dE9mZnNldC5BRlRFUl9PRkZTRVQgOiBUZXh0T2Zmc2V0LkJFRk9SRV9PRkZTRVQ7CisgICAgICAgICAgICByZXN1bHQuc2V0T2Zmc2V0KGZMVEN1clRleHRMZW4sIGJpYXMpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIGludCBsaW5lID0gZmluZExpbmVBdChmaWxsRCk7IC8vIGFsd2F5cyBhIHZhbGlkIGxpbmUKKyAgICAgICAgaW50IGdTdGFydCA9IGxpbmVHcmFwaGljU3RhcnRJbnRlcm5hbChsaW5lKTsKKworICAgICAgICBpbnQgbGluZVgsIGxpbmVZOyAgLy8gdXBwZXItbGVmdCBjb3JuZXIgb2YgbGluZQorICAgICAgICBpZiAoZkhMaW5lKSB7CisgICAgICAgICAgICBsaW5lWCA9IG9yaWdpbi54OworICAgICAgICAgICAgbGluZVkgPSBmRmlsbEluYz8gb3JpZ2luLnkgKyBnU3RhcnQgOiBvcmlnaW4ueSAtIChnU3RhcnQgKyBmTGluZVRhYmxlW2xpbmVdLmdldEhlaWdodCgpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGxpbmVZID0gb3JpZ2luLnk7CisgICAgICAgICAgICBsaW5lWCA9IGZGaWxsSW5jPyBvcmlnaW4ueCArIGdTdGFydCA6IG9yaWdpbi54IC0gKGdTdGFydCArIGZMaW5lVGFibGVbbGluZV0uZ2V0SGVpZ2h0KCkpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGxpbmVEaW1Ub09mZnNldChyZXN1bHQsIGxpbmUsIHB4IC0gbGluZVgsIHB5IC0gbGluZVksIGFuY2hvciwgaW5maW5pdGVNb2RlKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGJvb2xlYW4gZW1wdHlQYXJhZ3JhcGhBdEVuZE9mVGV4dCgpIHsKKworICAgICAgICByZXR1cm4gZkxUQ3VyVGV4dExlbiA+IDAgJiYKKyAgICAgICAgICAgICAgICBpc1BhcmFncmFwaFNlcGFyYXRvcihmVGV4dC5hdChmTFRDdXJUZXh0TGVuLTEpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgb2Zmc2V0IGRlc2lnbmF0ZXMgYSBwb2ludCBvbiB0aGUgcHNldWRvbGluZSBmb2xsb3dpbmcgYSBwYXJhZ3JhcGgKKyAgICAgKiBzZXBhcmF0b3IgYXQgdGhlIGVuZCBvZiB0ZXh0LiAgVGhpcyBpcyB0cnVlIGlmIHRoZSBvZmZzZXQgaXMgdGhlIGVuZCBvZiB0ZXh0CisgICAgICogYW5kIHRoZSBsYXN0IGNoYXJhY3RlciBpbiB0aGUgdGV4dCBpcyBhIHBhcmFncmFwaCBzZXBhcmF0b3IuCisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIGFmdGVyTGFzdFBhcmFncmFwaChUZXh0T2Zmc2V0IG9mZnNldCkKKyAgICB7CisgICAgICAgIHJldHVybiBvZmZzZXQuZk9mZnNldCA9PSBmTFRDdXJUZXh0TGVuICYmCisgICAgICAgICAgICBlbXB0eVBhcmFncmFwaEF0RW5kT2ZUZXh0KCk7CisgICAgfQorCisgICAgLyoqCisgICAgKiBHaXZlbiBhbiBvZmZzZXQsIHJldHVybiB0aGUgUmVjdGFuZ2xlIGJvdW5kaW5nIHRoZSBjYXJldCBhdCB0aGUgb2Zmc2V0LgorICAgICogQHBhcmFtIG9mZnNldCBhbiBvZmZzZXQgaW50byB0aGUgdGV4dAorICAgICogQHBhcmFtIG9yaWdpbiB0aGUgdG9wLWxlZnQgY29ybmVyIG9mIHRoZSB0ZXh0LCBpbiB0aGUgZGlzcGxheSdzIGNvb3JkaW5hdGUgc3lzdGVtCisgICAgKiBAcmV0dXJuIGEgUmVjdGFuZ2xlIGJvdW5kaW5nIHRoZSBjYXJldC4KKyAgICAqLworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgUmVjdGFuZ2xlIGdldENhcmV0UmVjdChUZXh0T2Zmc2V0IG9mZnNldCwgUG9pbnQgb3JpZ2luKSB7CisKKyAgICAgICAgUmVjdGFuZ2xlIHIgPSBuZXcgUmVjdGFuZ2xlKCk7CisgICAgICAgIGdldENhcmV0UmVjdChyLCBvZmZzZXQsIG9yaWdpbik7CisgICAgICAgIHJldHVybiByOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHZvaWQgZ2V0Q2FyZXRSZWN0KFJlY3RhbmdsZSByLCBUZXh0T2Zmc2V0IG9mZnNldCwgUG9pbnQgb3JpZ2luKSB7CisgICAgICAgIAorICAgICAgICBjaGVja1RpbWVTdGFtcCgpOworICAgICAgICBmb3JtYXRUb09mZnNldChvZmZzZXQpOworCisgICAgICAgIGlmIChhZnRlckxhc3RQYXJhZ3JhcGgob2Zmc2V0KSkgeworICAgICAgICAgICAgaW50IHBzZXVkb0xpbmVIZWlnaHQgPSBsYXN0Q2hhckhlaWdodCgpOworICAgICAgICAgICAgaWYgKGZITGluZSkgeworICAgICAgICAgICAgICAgIGludCBsaW5lWSA9IGZGaWxsSW5jID8gb3JpZ2luLnkgKyBmUGl4SGVpZ2h0IDogb3JpZ2luLnkgLSBmUGl4SGVpZ2h0IC0gcHNldWRvTGluZUhlaWdodDsKKyAgICAgICAgICAgICAgICByLnNldEJvdW5kcyhvcmlnaW4ueCwgbGluZVksIDAsIHBzZXVkb0xpbmVIZWlnaHQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaW50IGxpbmVYID0gZkZpbGxJbmM/IG9yaWdpbi54ICsgZlBpeEhlaWdodCA6IG9yaWdpbi54IC0gZlBpeEhlaWdodCAtIHBzZXVkb0xpbmVIZWlnaHQ7CisgICAgICAgICAgICAgICAgci5zZXRCb3VuZHMobGluZVgsIG9yaWdpbi55LCBwc2V1ZG9MaW5lSGVpZ2h0LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGludCBsaW5lID0gZ2V0VmFsaWRMaW5lQ29udGFpbmluZyhvZmZzZXQpOworCisgICAgICAgIGludCBnU3RhcnQgPSBsaW5lR3JhcGhpY1N0YXJ0SW50ZXJuYWwobGluZSk7CisKKyAgICAgICAgaW50IGxpbmVYLCBsaW5lWTsKKworICAgICAgICBpZiAoZkhMaW5lKSB7CisgICAgICAgICAgICBsaW5lWCA9IG9yaWdpbi54OworICAgICAgICAgICAgaWYgKGZGaWxsSW5jKQorICAgICAgICAgICAgICAgIGxpbmVZID0gb3JpZ2luLnkgKyBnU3RhcnQ7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbGluZVkgPSBvcmlnaW4ueSAtIChnU3RhcnQgKyBmTGluZVRhYmxlW2xpbmVdLmdldEhlaWdodCgpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGxpbmVZID0gb3JpZ2luLnk7CisgICAgICAgICAgICBpZiAoZkZpbGxJbmMpCisgICAgICAgICAgICAgICAgbGluZVggPSBvcmlnaW4ueCArIGdTdGFydDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBsaW5lWCA9IG9yaWdpbi54IC0gKGdTdGFydCArIGZMaW5lVGFibGVbbGluZV0uZ2V0SGVpZ2h0KCkpOworICAgICAgICB9CisKKyAgICAgICAgUmVjdGFuZ2xlIGJvdW5kcyA9IGZMaW5lVGFibGVbbGluZV0uY2FyZXRCb3VuZHMoZlRleHQsIGZMVEN1clRleHRMZW4sIGZMaW5lRGltLCBvZmZzZXQuZk9mZnNldCwgbGluZVgsIGxpbmVZKTsKKworICAgICAgICByLnNldEJvdW5kcyhib3VuZHMpOworICAgIH0KKworICAgIC8qKgorICAgICogRHJhdyB0aGUgY2FyZXQocykgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBvZmZzZXQgaW50byB0aGUgZ2l2ZW4gR3JhcGhpY3MuCisgICAgKiBAcGFyYW0gZyB0aGUgR3JhcGhpY3MgdG8gZHJhdyBpbnRvCisgICAgKiBAcGFyYW0gb2Zmc2V0IHRoZSBvZmZzZXQgaW4gdGhlIHRleHQgZm9yIHdoaWNoIHRoZSBjYXJldCBpcyBkcmF3bgorICAgICogQHBhcmFtIG9yaWdpbiB0aGUgdG9wLWxlZnQgY29ybmVyIG9mIHRoZSB0ZXh0LCBpbiB0aGUgZGlzcGxheSdzIGNvb3JkaW5hdGUgc3lzdGVtCisgICAgKiBAcGFyYW0gc3Ryb25nQ2FyZXRDb2xvciB0aGUgY29sb3Igb2YgdGhlIHN0cm9uZyBjYXJldAorICAgICogQHBhcmFtIHdlYWtDYXJldENvbG9yIHRoZSBjb2xvciBvZiB0aGUgd2VhayBjYXJldCAoaWYgYW55KQorICAgICovCisgICAgcHVibGljIHN5bmNocm9uaXplZCB2b2lkIGRyYXdDYXJldChHcmFwaGljcyBnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb2ludCBvcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvciBzdHJvbmdDYXJldENvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3Igd2Vha0NhcmV0Q29sb3IpIHsKKworICAgICAgICBjaGVja1RpbWVTdGFtcCgpOworICAgICAgICBHcmFwaGljczJEIGcyZCA9IEdyYXBoaWNzMkRDb252ZXJzaW9uLmdldEdyYXBoaWNzMkQoZyk7CisgICAgICAgIGZvcm1hdFRvT2Zmc2V0KG9mZnNldCk7CisKKyAgICAgICAgTGF5b3V0SW5mbyBsaW5lOworICAgICAgICBpbnQgZ1N0YXJ0OworICAgICAgICAKKyAgICAgICAgaWYgKGFmdGVyTGFzdFBhcmFncmFwaChvZmZzZXQpKSB7CisgICAgICAgICAgICBnU3RhcnQgPSBmUGl4SGVpZ2h0OworICAgICAgICAgICAgbGluZSA9IHBzZXVkb0xpbmVJbmZvKG51bGwsIG9mZnNldC5mT2Zmc2V0KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGludCBsaW5lSW5kZXggPSBnZXRWYWxpZExpbmVDb250YWluaW5nKG9mZnNldCk7CisgICAgICAgICAgICBnU3RhcnQgPSBsaW5lR3JhcGhpY1N0YXJ0SW50ZXJuYWwobGluZUluZGV4KTsKKyAgICAgICAgICAgIGxpbmUgPSBmTGluZVRhYmxlW2xpbmVJbmRleF07CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGludCBsaW5lWCwgbGluZVk7CisKKyAgICAgICAgaWYgKGZITGluZSkgeworICAgICAgICAgICAgbGluZVggPSBvcmlnaW4ueDsKKyAgICAgICAgICAgIGlmIChmRmlsbEluYykKKyAgICAgICAgICAgICAgICBsaW5lWSA9IG9yaWdpbi55ICsgZ1N0YXJ0OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGxpbmVZID0gb3JpZ2luLnkgLSAoZ1N0YXJ0ICsgbGluZS5nZXRIZWlnaHQoKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBsaW5lWSA9IG9yaWdpbi55OworICAgICAgICAgICAgaWYgKGZGaWxsSW5jKQorICAgICAgICAgICAgICAgIGxpbmVYID0gb3JpZ2luLnggKyBnU3RhcnQ7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbGluZVggPSBvcmlnaW4ueCAtIChnU3RhcnQgKyBsaW5lLmdldEhlaWdodCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGxpbmUucmVuZGVyQ2FyZXQoZlRleHQsIGZMVEN1clRleHRMZW4sIGcyZCwgZkxpbmVEaW0sIGxpbmVYLCBsaW5lWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LmZPZmZzZXQsIHN0cm9uZ0NhcmV0Q29sb3IsIHdlYWtDYXJldENvbG9yKTsKKyAgICB9CisKKy8qKgorKiBHaXZlbiB0d28gb2Zmc2V0cyBpbiB0aGUgdGV4dCwgcmV0dXJuIGEgcmVjdGFuZ2xlIHdoaWNoIGVuY2xvc2VzIHRoZSBsaW5lcyBjb250YWluaW5nIHRoZSBvZmZzZXRzLgorKiBPZmZzZXRzIGRvIG5vdCBuZWVkIHRvIGJlIG9yZGVyZWQgb3Igbm9ubmVnYXRpdmUuCisqIEBwYXJhbSBvZmZzZXQxLG9mZnNldDIgb2Zmc2V0cyBpbnRvIHRoZSB0ZXh0CisqIEBwYXJhbSBvcmlnaW4gdGhlIHRvcC1sZWZ0IGNvcm5lciBvZiB0aGUgdGV4dCwgaW4gdGhlIGRpc3BsYXkncyBjb29yZGluYXRlIHN5c3RlbQorKiBAcmV0dXJucyBhIDx0dD5SZWN0YW5nbGU8L3R0PiwgcmVsYXRpdmUgdG8gPHR0Pm9yaWdpbjwvdHQ+LCB3aGljaCBlbmNsb3NlcyB0aGUgbGluZXMgY29udGFpbmluZyB0aGUgb2Zmc2V0cworKi8KKyAgICBwdWJsaWMgc3luY2hyb25pemVkIFJlY3RhbmdsZSBnZXRCb3VuZGluZ1JlY3QoVGV4dE9mZnNldCBvZmZzZXQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IG9mZnNldDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvaW50IG9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiB0aWdodCkgeworCisgICAgICAgIFJlY3RhbmdsZSByID0gbmV3IFJlY3RhbmdsZSgpOworICAgICAgICBnZXRCb3VuZGluZ1JlY3Qociwgb2Zmc2V0MSwgb2Zmc2V0Miwgb3JpZ2luLCB0aWdodCk7CisgICAgICAgIHJldHVybiByOworICAgIH0KKworLyoKKyAgICBUcmFuc2Zvcm0gciBmcm9tICJ0ZXh0IiBjb29yZGluYXRlcyB0byAic2NyZWVuIiBjb29yZGluYXRlcy4KKyovCisKKyAgICBwcml2YXRlIHZvaWQgaW50bFJlY3QoUG9pbnQgb3JpZ2luLCBSZWN0YW5nbGUgcikgeworCisgICAgICAgIGludCBsaW5lT3JpZywgZmlsbE9yaWc7CisKKyAgICAgICAgaWYgKGZITGluZSkgeworICAgICAgICAgICAgbGluZU9yaWcgPSBvcmlnaW4ueDsKKyAgICAgICAgICAgIGZpbGxPcmlnID0gb3JpZ2luLnk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBsaW5lT3JpZyA9IG9yaWdpbi55OworICAgICAgICAgICAgZmlsbE9yaWcgPSBvcmlnaW4ueDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChmTGluZUluYykKKyAgICAgICAgICAgIHIueCArPSBsaW5lT3JpZzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgci54ID0gbGluZU9yaWcgLSAoci54ICsgci53aWR0aCk7CisKKyAgICAgICAgaWYgKGZGaWxsSW5jKQorICAgICAgICAgICAgci55ICs9IGZpbGxPcmlnOworICAgICAgICBlbHNlCisgICAgICAgICAgICByLnkgPSBmaWxsT3JpZyAtIChyLnkgKyByLmhlaWdodCk7CisKKworICAgICAgICBpZiAoIWZITGluZSkgeworICAgICAgICAgICAgaW50IHQgPSByLng7CisgICAgICAgICAgICByLnggPSByLnk7CisgICAgICAgICAgICByLnkgPSB0OworICAgICAgICAgICAgdCA9IHIud2lkdGg7CisgICAgICAgICAgICByLndpZHRoID0gci5oZWlnaHQ7CisgICAgICAgICAgICByLmhlaWdodCA9IHQ7CisgICAgICAgIH0KKyAgICB9CisKKworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgdm9pZCBnZXRCb3VuZGluZ1JlY3QoUmVjdGFuZ2xlIHIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCBvZmZzZXQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCBvZmZzZXQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9pbnQgb3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiB0aWdodCkKKyAgICB7CisgICAgICAgIGNoZWNrVGltZVN0YW1wKCk7CisgICAgICAgIGlmIChvZmZzZXQxLmVxdWFscyhvZmZzZXQyKSkgeworICAgICAgICAgICAgZ2V0Q2FyZXRSZWN0KHIsIG9mZnNldDEsIG9yaWdpbik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG9mZnNldDEuZ3JlYXRlclRoYW4ob2Zmc2V0MikpIHsKKyAgICAgICAgICAgIFRleHRPZmZzZXQgdDsgdCA9IG9mZnNldDE7IG9mZnNldDEgPSBvZmZzZXQyOyBvZmZzZXQyID0gdDsKKyAgICAgICAgfQorCisgICAgICAgIGZvcm1hdFRvT2Zmc2V0KG9mZnNldDIpOworCisgICAgICAgIGludCBsaW5lID0gZ2V0VmFsaWRMaW5lQ29udGFpbmluZyhvZmZzZXQxKTsKKyAgICAgICAgci55ID0gbGluZUdyYXBoaWNTdGFydEludGVybmFsKGxpbmUpOworICAgICAgICAKKyAgICAgICAgaW50IGdMaW1pdDsKKyAgICAgICAgYm9vbGVhbiBzYW1lTGluZSA9IGZhbHNlOworICAgICAgICAgICAgICAgIAorICAgICAgICBpZiAoYWZ0ZXJMYXN0UGFyYWdyYXBoKG9mZnNldDIpKQorICAgICAgICAgICAgZ0xpbWl0ID0gZlBpeEhlaWdodCArIGxhc3RDaGFySGVpZ2h0KCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaW50IGxpbmUyID0gZ2V0VmFsaWRMaW5lQ29udGFpbmluZyhvZmZzZXQyKTsKKyAgICAgICAgICAgIGdMaW1pdCA9IGxpbmVHcmFwaGljTGltaXRJbnRlcm5hbChsaW5lMik7CisgICAgICAgICAgICBzYW1lTGluZSA9IChsaW5lID09IGxpbmUyKTsKKyAgICAgICAgfQorCisgICAgICAgIHIuaGVpZ2h0ID0gZ0xpbWl0IC0gci55OworCisgICAgICAgIGlmIChzYW1lTGluZSAmJiB0aWdodD09VElHSFQpIHsKKyAgICAgICAgICAgIFJlY3RhbmdsZSBydCA9IG5ldyBSZWN0YW5nbGUoKTsKKyAgICAgICAgICAgIGdldENhcmV0UmVjdChydCwgb2Zmc2V0MSwgb3JpZ2luKTsKKyAgICAgICAgICAgIHIuc2V0Qm91bmRzKHJ0KTsKKyAgICAgICAgICAgIGlmICghb2Zmc2V0MS5lcXVhbHMob2Zmc2V0MikpIHsKKyAgICAgICAgICAgICAgICBnZXRDYXJldFJlY3QocnQsIG9mZnNldDIsIG9yaWdpbik7CisgICAgICAgICAgICAgICAgci5hZGQocnQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgci54ID0gZk1pblg7CisgICAgICAgICAgICByLndpZHRoID0gZk1heFggLSBmTWluWDsKKyAgICAgICAgICAgIGludGxSZWN0KG9yaWdpbiwgcik7CisgICAgICAgIH0KKworICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50KCJnYnI6ICIgKyByLnggKyAiLCAiICsgci55ICsgIiwgIiArIHIud2lkdGggKyAiLCAiICsgci5oZWlnaHQpOworCisgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbigiIC0tPiAiICsgci54ICsgIiwgIiArIHIueSArICIsICIgKyByLndpZHRoICsgIiwgIiArIHIuaGVpZ2h0KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAqIENvbXB1dGUgdGhlIG9mZnNldCByZXN1bHRpbmcgZnJvbSBtb3ZpbmcgZnJvbSBhIHByZXZpb3VzIG9mZnNldCBpbiBkaXJlY3Rpb24gZGlyLgorICAgICogRm9yIGFycm93IGtleXMuCisgICAgKiBAcGFyYW0gcmVzdWx0IHRoZSBvZmZzZXQgdG8gbW9kaWZ5IGFuZCByZXR1cm4uICBtYXkgYmUgbnVsbCwgaWYgc28gYSBuZXcgb2Zmc2V0IGlzIGFsbG9jYXRlZCwgbW9kaWZpZWQsIGFuZCByZXR1cm5lZC4KKyAgICAqIEBwYXJhbSBwcmV2aW91c09mZnNldCB0aGUgaW5zZXJ0aW9uIG9mZnNldCBwcmlvciB0byB0aGUgYXJyb3cga2V5IHByZXNzLgorICAgICogQHBhcmFtIGRpcmVjdGlvbiB0aGUgZGlyZWN0aW9uIG9mIHRoZSBhcnJvdyBrZXkgKGVVcCwgZURvd24sIGVMZWZ0LCBvciBlUmlnaHQpCisgICAgKiBAcmV0dXJucyBuZXcgb2Zmc2V0IGJhc2VkIG9uIGRpcmVjdGlvbiBhbmQgcHJldmlvdXMgb2Zmc2V0LgorICAgICovCisgICAgcHVibGljIHN5bmNocm9uaXplZCBUZXh0T2Zmc2V0IGZpbmRJbnNlcnRpb25PZmZzZXQoVGV4dE9mZnNldCByZXN1bHQsIFRleHRPZmZzZXQgcHJldk9mZnNldCwgc2hvcnQgZGlyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZpbmROZXdJbnNlcnRpb25PZmZzZXQocmVzdWx0LCBwcmV2T2Zmc2V0LCBwcmV2T2Zmc2V0LCBkaXIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRyYW5zZm9ybSBrZXkgZGlyZWN0aW9uOiAgYWZ0ZXIgdGhpcyBzdGVwLCAibGVmdCIgbWVhbnMgcHJldmlvdXMgZ2x5cGgsICJyaWdodCIgbWVhbnMgbmV4dCBnbHlwaCwKKyAgICAgKiJ1cCIgbWVhbnMgcHJldmlvdXMgbGluZSwgImRvd24iIG1lYW5zIG5leHQgbGluZQorICAgICAqLworICAgIHByaXZhdGUgc2hvcnQgcmVtYXBBcnJvd0tleShzaG9ydCBkaXIpIHsKKworICAgICAgICBpZiAoIWZMaW5lSW5jKSB7CisgICAgICAgICAgICBpZiAoZGlyID09IGVMZWZ0KQorICAgICAgICAgICAgICAgIGRpciA9IGVSaWdodDsKKyAgICAgICAgICAgIGVsc2UgaWYgKGRpciA9PSBlUmlnaHQpCisgICAgICAgICAgICAgICAgZGlyID0gZUxlZnQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWZGaWxsSW5jKSB7CisgICAgICAgICAgICBpZiAoZGlyID09IGVVcCkKKyAgICAgICAgICAgICAgICBkaXIgPSBlRG93bjsKKyAgICAgICAgICAgIGVsc2UgaWYgKGRpciA9PSBlRG93bikKKyAgICAgICAgICAgICAgICBkaXIgPSBlVXA7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWZITGluZSkgeworICAgICAgICAgICAgaWYgKGRpciA9PSBlTGVmdCkKKyAgICAgICAgICAgICAgICBkaXIgPSBlVXA7CisgICAgICAgICAgICBlbHNlIGlmIChkaXIgPT0gZVJpZ2h0KQorICAgICAgICAgICAgICAgIGRpciA9IGVEb3duOworICAgICAgICAgICAgZWxzZSBpZiAoZGlyID09IGVVcCkKKyAgICAgICAgICAgICAgICBkaXIgPSBlTGVmdDsKKyAgICAgICAgICAgIGVsc2UgaWYgKGRpciA9PSBlRG93bikKKyAgICAgICAgICAgICAgICBkaXIgPSBlUmlnaHQ7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZGlyOworICAgIH0KKworICAgIC8qKgorICAgICogQ29tcHV0ZSB0aGUgb2Zmc2V0IHJlc3VsdGluZyBmcm9tIG1vdmluZyBmcm9tIGEgcHJldmlvdXMgb2Zmc2V0LCBzdGFydGluZyBhdCBhbiBvcmlnaW5hbCBvZmZzZXQsIGluIGRpcmVjdGlvbiBkaXIuCisgICAgKiBGb3IgYXJyb3cga2V5cy4gIFVzZSB0aGlzIGZvciAic21hcnQiIHVwL2Rvd24ga2V5cy4KKyAgICAqIEBwYXJhbSByZXN1bHQgdGhlIG9mZnNldCB0byBtb2RpZnkgYW5kIHJldHVybi4gIE1heSBiZSBudWxsLCBpZiBzbyBhIG5ldyBvZmZzZXQgaXMgYWxsb2NhdGVkLCBtb2RpZmllZCwgYW5kIHJldHVybmVkLgorICAgICogQHBhcmFtIG9yaWdPZmZzZXQgdGhlIG9mZnNldCBhdCB3aGljaCBhbiB1cC1kb3duIGFycm93IGtleSBzZXF1ZW5jZSBiZWdhbi4KKyAgICAqIEBwYXJhbSBwcmV2T2Zmc2V0IHRoZSBpbnNlcnRpb24gb2Zmc2V0IHByaW9yIHRvIHRoZSBhcnJvdyBrZXkgcHJlc3MKKyAgICAqIEBwYXJhbSBkaXIgdGhlIGRpcmVjdGlvbiBvZiB0aGUgYXJyb3cga2V5IChlVXAsIGVEb3duLCBlTGVmdCwgb3IgZVJpZ2h0KQorICAgICogQHJldHVybnMgbmV3IG9mZnNldCBiYXNlZCBvbiBkaXJlY3Rpb24sIG9yaWdpbmFsIG9mZnNldCwgYW5kIHByZXZpb3VzIG9mZnNldC4KKyAgICAqLworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgVGV4dE9mZnNldCBmaW5kTmV3SW5zZXJ0aW9uT2Zmc2V0KFRleHRPZmZzZXQgcmVzdWx0LCBUZXh0T2Zmc2V0IG9yaWdPZmZzZXQsIFRleHRPZmZzZXQgcHJldk9mZnNldCwgc2hvcnQgZGlyKQorICAgIHsKKyAgICAgICAgY2hlY2tUaW1lU3RhbXAoKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKQorICAgICAgICAgICAgcmVzdWx0ID0gbmV3IFRleHRPZmZzZXQoKTsKKworICAgICAgICBkaXIgPSByZW1hcEFycm93S2V5KGRpcik7CisKKyAgICAgICAgLy8gYXNzdW1lIHRoYXQgdGV4dCBhdCBvcmlnT2Zmc2V0IGFuZCBwcmV2T2Zmc2V0IGhhcyBhbHJlYWR5IGJlZW4gZm9ybWF0dGVkCisKKyAgICAgICAgaWYgKGRpciA9PSBlTGVmdCB8fCBkaXIgPT0gZVJpZ2h0KSB7CisgICAgICAgICAgICBmb3JtYXRUb09mZnNldChwcmV2T2Zmc2V0KTsKKyAgICAgICAgICAgIGludCBsaW5lID0gZ2V0VmFsaWRMaW5lQ29udGFpbmluZyhwcmV2T2Zmc2V0KTsKKworICAgICAgICAgICAgcmVzdWx0LmZQbGFjZW1lbnQgPSBUZXh0T2Zmc2V0LkFGVEVSX09GRlNFVDsKKyAgICAgICAgICAgIHJlc3VsdC5mT2Zmc2V0ID0gZkxpbmVUYWJsZVtsaW5lXS5nZXROZXh0T2Zmc2V0KGZMVEN1clRleHRMZW4sIHByZXZPZmZzZXQuZk9mZnNldCwgZGlyKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQuZk9mZnNldCA8IDApIHsKKyAgICAgICAgICAgICAgICByZXN1bHQuZk9mZnNldCA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChyZXN1bHQuZk9mZnNldCA+PSBmTFRDdXJUZXh0TGVuKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0LnNldE9mZnNldChmTFRDdXJUZXh0TGVuLCBUZXh0T2Zmc2V0LkJFRk9SRV9PRkZTRVQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaW50IGRpc3RPbkxpbmU7CisKKyAgICAgICAgICAgIGlmIChhZnRlckxhc3RQYXJhZ3JhcGgob3JpZ09mZnNldCkpCisgICAgICAgICAgICAgICAgZGlzdE9uTGluZSA9IDA7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpbnQgbGluZSA9IGdldFZhbGlkTGluZUNvbnRhaW5pbmcob3JpZ09mZnNldCk7CisKKyAgICAgICAgICAgICAgICBkaXN0T25MaW5lID0gZkxpbmVUYWJsZVtsaW5lXS5zdHJvbmdDYXJldEJhc2VsaW5lUG9zaXRpb24oZkxUQ3VyVGV4dExlbiwgZkxpbmVEaW0sIG9yaWdPZmZzZXQuZk9mZnNldCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIGdldCBwcmV2T2Zmc2V0J3MgbGluZQorICAgICAgICAgICAgaW50IGxpbmU7CisgICAgICAgICAgICBpZiAoYWZ0ZXJMYXN0UGFyYWdyYXBoKHByZXZPZmZzZXQpKQorICAgICAgICAgICAgICAgIGxpbmUgPSBsYXN0TGluZSgpICsgMTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGxpbmUgPSBnZXRMaW5lQ29udGFpbmluZyhwcmV2T2Zmc2V0KTsKKworICAgICAgICAgICAgICAgIGlmIChkaXIgPT0gZURvd24gJiYgKGxpbmUgPT0ga0FmdGVyTGFzdExpbmUgfHwgbGluZSA9PSBsYXN0TGluZSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgKGxhc3RMaW5lQ2hhclN0b3AoKSA8IGZUZXh0Lmxlbmd0aCgpKSkgeworICAgICAgICAgICAgICAgICAgICBzaGlmdFRhYmxlVG8obGFzdExpbmUoKSk7CisgICAgICAgICAgICAgICAgICAgIGZvcm1hdFRleHQobGFzdExpbmVDaGFyU3RvcCgpLCAxLCBJbnRlZ2VyLk1BWF9WQUxVRSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBnZXRMaW5lQ29udGFpbmluZyhwcmV2T2Zmc2V0KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAobGluZSA9PSBrQmVmb3JlRmlyc3RMaW5lKQorICAgICAgICAgICAgICAgICAgICBsaW5lID0gMDsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChsaW5lID09IGtBZnRlckxhc3RMaW5lKQorICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGFzdExpbmUoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGRpciA9PSBlVXApCisgICAgICAgICAgICAgICAgbGluZS0tOworICAgICAgICAgICAgZWxzZSBpZiAoZGlyID09IGVEb3duKQorICAgICAgICAgICAgICAgIGxpbmUrKzsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJEZWJ1ZzogSWxsZWdhbCBkaXJlY3Rpb24gcGFyYW1ldGVyIGluIGZpbmROZXdJbnNlcnRpb25PZmZzZXQiKTsKKworICAgICAgICAgICAgaWYgKGxpbmUgPCAwKSB7CisgICAgICAgICAgICAgICAgLy9yZXN1bHQuc2V0T2Zmc2V0KDAsIFRleHRPZmZzZXQuQUZURVJfT0ZGU0VUKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXNzaWduKHByZXZPZmZzZXQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobGluZSA+IGxhc3RMaW5lKCkpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQuc2V0T2Zmc2V0KGZMVEN1clRleHRMZW4sIFRleHRPZmZzZXQuQkVGT1JFX09GRlNFVCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoZkxpbmVUYWJsZVtsaW5lXSA9PSBudWxsKQorICAgICAgICAgICAgICAgICAgICBsaW5lID0gKGRpciA9PSBlVXApPyBmTFRQb3NFbmQgOiBmTFROZWdTdGFydDsKKworICAgICAgICAgICAgICAgIC8vIGFuY2hvciBpcyBudWxsIHNpbmNlIHdlIG5ldmVyIHdhbnQgYSBwb3NpdGlvbiBhZnRlciBuZXdsaW5lLiAgSWYgd2UgdXNlZCB0aGUgcmVhbCBhbmNob3IsCisgICAgICAgICAgICAgICAgLy8gd2UgbWlnaHQgbm90IGlnbm9yZSB0aGUgbmV3bGluZSBldmVuIHRob3VnaCBpbmZpbml0ZU1vZGUgaXMgdHJ1ZS4KKyAgICAgICAgICAgICAgICBsaW5lRGltVG9PZmZzZXQocmVzdWx0LCBsaW5lLCBkaXN0T25MaW5lLCAwLCBudWxsLCB0cnVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbigiZm5pbyBwcmV2OiAiICsgcHJldk9mZnNldCArICIsIG5ldzogIiArIHJlc3VsdCk7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgc3RvcEJhY2tncm91bmRGb3JtYXR0aW5nKCkKKyAgICB7CisgICAgICAgIGNoZWNrVGltZVN0YW1wKCk7CisgICAgICAgIGZCZ0Zvcm1hdEFsbG93ZWQgPSBmYWxzZTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN5bmNocm9uaXplZCB2b2lkIGVuYWJsZUJHRm9ybWF0KCkKKyAgICB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmQmdGb3JtYXRBbGxvd2VkID0gdHJ1ZTsKKyAgICAgICAgICAgIG5vdGlmeSgpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChJbGxlZ2FsTW9uaXRvclN0YXRlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgaW50IGxpbmVJbmRleFRvTnVtYmVyKGludCBsaW5lSW5kZXgpIHsKKworICAgICAgICBpZiAobGluZUluZGV4IDw9IGZMVFBvc0VuZCkgeworICAgICAgICAgICAgcmV0dXJuIGxpbmVJbmRleDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBsaW5lSW5kZXggLSAoZkxUTmVnU3RhcnQtZkxUUG9zRW5kLTEpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBpbnQgbGluZU51bWJlclRvSW5kZXgoaW50IGxpbmVOdW1iZXIpIHsKKworICAgICAgICBpZiAobGluZU51bWJlciA8PSBmTFRQb3NFbmQpIHsKKyAgICAgICAgICAgIHJldHVybiBsaW5lTnVtYmVyOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGxpbmVOdW1iZXIgKyAoZkxUTmVnU3RhcnQtZkxUUG9zRW5kLTEpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGZvcm1hdFRvTGluZU51bWJlcihpbnQgbGluZU51bWJlcikgeworCisgICAgICAgIHdoaWxlIChsYXN0TGluZUNoYXJTdG9wKCkgPCBmTFRDdXJUZXh0TGVuICYmCisgICAgICAgICAgICAgICAgbGluZU51bWJlciA+PSBsaW5lSW5kZXhUb051bWJlcihmTFRTaXplKSkgeworICAgICAgICAgICAgLy8gY291bGQgYmUgc21hcnRlciBhbmQgY2hvb3NlIGxhcmdlciBhbW91bnRzIGZvcgorICAgICAgICAgICAgLy8gbGFyZ2VyIGxpbmVzLCBidXQgcHJvYmFibHkgbm90IHdvcnRoIHRoZSBlZmZvcnQKKyAgICAgICAgICAgIGZvcm1hdFRvSGVpZ2h0KGZQaXhIZWlnaHQgKyBrUGl4SW5jcmVtZW50KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gU1RSSUNUID0gdHJ1ZTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIExFTklFTlQgPSBmYWxzZTsKKworICAgIC8qKgorICAgICAqIEluc3VyZSB0aGF0IGF0IGxlYXN0IGxpbmVOdW1iZXIgbGluZXMgZXhpc3QsIGRvaW5nCisgICAgICogZXh0cmEgZm9ybWF0dGluZyBpZiBuZWNlc3NhcnkuCisgICAgICogVGhyb3dzIGV4Y2VwdGlvbiBpZiBsaW5lTnVtYmVyIGlzIG5vdCB2YWxpZC4KKyAgICAgKiBAcGFyYW0gc3RyaWN0IGlmIFNUUklDVCwgb25seSBsaW5lcyBbMC4uLm1heExpbmVOdW1iZXIoKV0KKyAgICAgKiAgICAgICAgYXJlIHBlcm1pdHRlZC4gIElmIExFTklFTlQsIG1heExpbmVOdW1iZXIoKSsxIGlzCisgICAgICogICAgICAgIHRoZSBncmVhdGVzdCB2YWxpZCB2YWx1ZS4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgdmFsaWRhdGVMaW5lTnVtYmVyKGludCBsaW5lTnVtYmVyLCBib29sZWFuIHN0cmljdCkgeworCisgICAgICAgIGZvcm1hdFRvTGluZU51bWJlcihsaW5lTnVtYmVyKTsKKworICAgICAgICBpbnQgbWF4TnVtYmVyID0gbGluZUluZGV4VG9OdW1iZXIoZkxUU2l6ZSk7CisgICAgICAgIGlmIChzdHJpY3QgPT0gU1RSSUNUKSB7CisgICAgICAgICAgICBtYXhOdW1iZXIgLT0gMTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChsaW5lTnVtYmVyID4gbWF4TnVtYmVyKzEgfHwKKyAgICAgICAgICAgICAgICAobGluZU51bWJlciA9PSBtYXhOdW1iZXIrMSAmJiAhZW1wdHlQYXJhZ3JhcGhBdEVuZE9mVGV4dCgpKSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBsaW5lIG51bWJlcjogIiArIGxpbmVOdW1iZXIpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHN5bmNocm9uaXplZCBpbnQgZ2V0TGluZUNvdW50KCkgeworCisgICAgICAgIC8vIGZvcm1hdCBhbGwgdGV4dDoKKyAgICAgICAgZm9ybWF0VG9IZWlnaHQoSW50ZWdlci5NQVhfVkFMVUUpOworCisgICAgICAgIGludCBsaW5lQ291bnQgPSBsaW5lSW5kZXhUb051bWJlcihmTFRTaXplKTsKKworICAgICAgICBpZiAoZW1wdHlQYXJhZ3JhcGhBdEVuZE9mVGV4dCgpKSB7CisgICAgICAgICAgICBsaW5lQ291bnQgKz0gMTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBsaW5lQ291bnQ7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgaW50IGxpbmVDb250YWluaW5nKGludCBjaGFySW5kZXgpIHsKKyAgICAgICAgCisgICAgICAgIGZvcm1hdFRvT2Zmc2V0KGNoYXJJbmRleCwgVGV4dE9mZnNldC5BRlRFUl9PRkZTRVQpOworICAgICAgICAKKyAgICAgICAgYm9vbGVhbiBwbGFjZW1lbnQgPSBUZXh0T2Zmc2V0LkFGVEVSX09GRlNFVDsKKyAgICAgICAgaWYgKGNoYXJJbmRleCA9PSBmTFRDdXJUZXh0TGVuICYmIGNoYXJJbmRleCA+IDApIHsKKyAgICAgICAgICAgIHBsYWNlbWVudCA9IGVtcHR5UGFyYWdyYXBoQXRFbmRPZlRleHQoKT8gVGV4dE9mZnNldC5BRlRFUl9PRkZTRVQgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0LkJFRk9SRV9PRkZTRVQ7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBsaW5lQ29udGFpbmluZyhjaGFySW5kZXgsIHBsYWNlbWVudCk7CisgICAgfQorCisgICAgcHVibGljIHN5bmNocm9uaXplZCBpbnQgbGluZUNvbnRhaW5pbmcoVGV4dE9mZnNldCBvZmZzZXQpIHsKKworICAgICAgICBmb3JtYXRUb09mZnNldChvZmZzZXQpOworCisgICAgICAgIGlmIChhZnRlckxhc3RQYXJhZ3JhcGgob2Zmc2V0KSkgeworICAgICAgICAgICAgcmV0dXJuIGxpbmVJbmRleFRvTnVtYmVyKGZMVFNpemUpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gbGluZUNvbnRhaW5pbmcob2Zmc2V0LmZPZmZzZXQsIG9mZnNldC5mUGxhY2VtZW50KTsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBpbnQgbGluZUNvbnRhaW5pbmcoaW50IG9mZiwgYm9vbGVhbiBwbGFjZW1lbnQpIHsKKyAgICAgICAgCisgICAgICAgIGludCBsaW5lID0gb2ZmPT0wPyAwIDogZ2V0TGluZUNvbnRhaW5pbmcob2ZmLCBwbGFjZW1lbnQpOworICAgICAgICAKKyAgICAgICAgaWYgKGxpbmUgPT0ga0FmdGVyTGFzdExpbmUpIHsKKyAgICAgICAgICAgIGxpbmUgPSBmTFRTaXplOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGxpbmUgPT0ga0JlZm9yZUZpcnN0TGluZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJsaW5lQ29udGFpbmluZyBnb3QgaW52YWxpZCByZXN1bHQgZnJvbSBnZXRMaW5lQ29udGFpbmluZygpLiIpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGxpbmVJbmRleFRvTnVtYmVyKGxpbmUpOworICAgIH0KKworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgaW50IGxpbmVSYW5nZUxvdyhpbnQgbGluZU51bWJlcikgeworCisgICAgICAgIHZhbGlkYXRlTGluZU51bWJlcihsaW5lTnVtYmVyLCBTVFJJQ1QpOworICAgICAgICBpbnQgaW5kZXggPSBsaW5lTnVtYmVyVG9JbmRleChsaW5lTnVtYmVyKTsKKworICAgICAgICBpZiAoaW5kZXggPT0gZkxUU2l6ZSkgeworICAgICAgICAgICAgaWYgKGVtcHR5UGFyYWdyYXBoQXRFbmRPZlRleHQoKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBsYXN0TGluZUNoYXJTdG9wKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoaW5kZXggPj0gZkxUU2l6ZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigibGluZU51bWJlciBpcyBpbnZhbGlkLiIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGxpbmVDaGFyU3RhcnRJbnRlcm5hbChpbmRleCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIGludCBsaW5lUmFuZ2VMaW1pdChpbnQgbGluZU51bWJlcikgeworCisgICAgICAgIHZhbGlkYXRlTGluZU51bWJlcihsaW5lTnVtYmVyLCBTVFJJQ1QpOworICAgICAgICBpbnQgaW5kZXggPSBsaW5lTnVtYmVyVG9JbmRleChsaW5lTnVtYmVyKTsKKworICAgICAgICBpZiAoaW5kZXggPT0gZkxUU2l6ZSkgeworICAgICAgICAgICAgaWYgKGVtcHR5UGFyYWdyYXBoQXRFbmRPZlRleHQoKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBsYXN0TGluZUNoYXJTdG9wKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoaW5kZXggPj0gZkxUU2l6ZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigibGluZU51bWJlciBpcyBpbnZhbGlkLiIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGxpbmVDaGFyTGltaXRJbnRlcm5hbChpbmRleCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIG51bWJlciBvZiB0aGUgbGluZSBhdCB0aGUgZ2l2ZW4gZ3JhcGhpYyBoZWlnaHQuCisgICAgICogSWYgaGVpZ2h0IGlzIGdyZWF0ZXIgdGhhbiBmdWxsIGhlaWdodCwgcmV0dXJuIGxpbmUgY291bnQuCisgICAgICovCisgICAgcHVibGljIHN5bmNocm9uaXplZCBpbnQgbGluZUF0SGVpZ2h0KGludCBoZWlnaHQpIHsKKworICAgICAgICBpZiAoaGVpZ2h0ID49IGZQaXhIZWlnaHQpIHsKKworICAgICAgICAgICAgaW50IGxpbmUgPSBnZXRMaW5lQ291bnQoKTsKKyAgICAgICAgICAgIGlmIChoZWlnaHQgPCBmRnVsbFBpeEhlaWdodCkgeworICAgICAgICAgICAgICAgIGxpbmUgLT0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBsaW5lOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGhlaWdodCA8IDApIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBsaW5lSW5kZXhUb051bWJlcihmaW5kTGluZUF0KGhlaWdodCkpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHN5bmNocm9uaXplZCBpbnQgbGluZUdyYXBoaWNTdGFydChpbnQgbGluZU51bWJlcikgeworCisgICAgICAgIGNoZWNrVGltZVN0YW1wKCk7CisgICAgICAgIHZhbGlkYXRlTGluZU51bWJlcihsaW5lTnVtYmVyLCBMRU5JRU5UKTsKKworICAgICAgICBpbnQgaW5kZXggPSBsaW5lTnVtYmVyVG9JbmRleChsaW5lTnVtYmVyKTsKKworICAgICAgICBpZiAoaW5kZXggPCBmTFRTaXplKSB7CisgICAgICAgICAgICByZXR1cm4gbGluZUdyYXBoaWNTdGFydEludGVybmFsKGluZGV4KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChpbmRleCA9PSBmTFRTaXplKzEpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZkZ1bGxQaXhIZWlnaHQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZlBpeEhlaWdodDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgYm9vbGVhbiBsaW5lSXNMZWZ0VG9SaWdodChpbnQgbGluZU51bWJlcikgeworICAgICAgICAKKyAgICAgICAgdmFsaWRhdGVMaW5lTnVtYmVyKGxpbmVOdW1iZXIsIFNUUklDVCk7CisgICAgICAgIAorICAgICAgICBpbnQgaW5kZXggPSBsaW5lTnVtYmVyVG9JbmRleChsaW5lTnVtYmVyKTsKKyAgICAgICAgCisgICAgICAgIGlmIChpbmRleCA8IGZMVFNpemUpIHsKKyAgICAgICAgICAgIHJldHVybiBmTGluZVRhYmxlW2luZGV4XS5pc0xlZnRUb1JpZ2h0KCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBBdHRyaWJ1dGVNYXAgc3QgPSBmVGV4dC5wYXJhZ3JhcGhTdHlsZUF0KGZMVEN1clRleHRMZW4pOworICAgICAgICAgICAgcmV0dXJuICFUZXh0QXR0cmlidXRlLlJVTl9ESVJFQ1RJT05fUlRMLmVxdWFscyhzdC5nZXQoVGV4dEF0dHJpYnV0ZS5SVU5fRElSRUNUSU9OKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAqIE51bWJlciBvZiBwaXhlbHMgYnkgd2hpY2ggdG8gYWR2YW5jZSBmb3JtYXR0aW5nIGluIHRoZSBiYWNrZ3JvdW5kLgorICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IGtQaXhJbmNyZW1lbnQgPSAxMDA7CisKKyAgICAvKioKKyAgICAqIFRpbWUgdG8gc2xlZXAgYmV0d2VlbiBiYWNrZ3JvdW5kIGZvcm1hdHRpbmcgb3BlcmF0aW9ucy4KKyAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBrSW50ZXJ2YWwgPSAxMDA7CisKKyAgICAvKioKKyAgICAqIFBlcmZvcm0gcGVyaW9kaWMgYmFja2dyb3VuZCBmb3JtYXR0aW5nLgorICAgICovCisgICAgcHVibGljIHZvaWQgcnVuKCkKKyAgICB7CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKKyAgICAgICAgICAgICAgICB3aGlsZSghZkJnRm9ybWF0QWxsb3dlZCkgeworICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgd2FpdCgpOworICAgICAgICAgICAgICAgICAgICB9IGNhdGNoKEludGVycnVwdGVkRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNoZWNrVGltZVN0YW1wKCk7ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGZvcm1hdFRvSGVpZ2h0KGZQaXhIZWlnaHQgKyBrUGl4SW5jcmVtZW50KTsKKworICAgICAgICAgICAgICAgIGlmIChsYXN0TGluZUNoYXJTdG9wKCkgPT0gZkxUQ3VyVGV4dExlbikgeworICAgICAgICAgICAgICAgICAgICBzdG9wQmFja2dyb3VuZEZvcm1hdHRpbmcoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgVGhyZWFkLnNsZWVwKGtJbnRlcnZhbCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXRjaChJbnRlcnJ1cHRlZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIFBhcmFncmFwaFJlbmRlcmVyIGdldFJlbmRlcmVyRm9yKEF0dHJpYnV0ZU1hcCBzKSB7CisgICAgCisgICAgICAgIC8vIE5vdGU6ICBldmVudHVhbGx5IHdlIGNvdWxkIGxldCBjbGllbnRzIHB1dCB0aGVpciBvd24gcmVuZGVyZXJzCisgICAgICAgIC8vIG9uIHRoZSB0ZXh0LgorICAgICAgICBCaWRpUGFyYWdyYXBoUmVuZGVyZXIgcmVuZGVyZXIgPSAoQmlkaVBhcmFncmFwaFJlbmRlcmVyKSBmUmVuZGVyZXJDYWNoZS5nZXQocyk7CisgICAgICAgIGlmIChyZW5kZXJlciA9PSBudWxsKSB7CisgICAgICAgICAgICByZW5kZXJlciA9IG5ldyBCaWRpUGFyYWdyYXBoUmVuZGVyZXIoZkRlZmF1bHRWYWx1ZXMuYWRkQXR0cmlidXRlcyhzKSwgZkRlZmF1bHRDaGFyTWV0cmljKTsKKyAgICAgICAgICAgIGZSZW5kZXJlckNhY2hlLnB1dChzLCByZW5kZXJlcik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlbmRlcmVyOworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dGZvcm1hdC9CaWRpUGFyYWdyYXBoUmVuZGVyZXIuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRmb3JtYXQvQmlkaVBhcmFncmFwaFJlbmRlcmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZjZiMjQxMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRmb3JtYXQvQmlkaVBhcmFncmFwaFJlbmRlcmVyLmphdmEKQEAgLTAsMCArMSwxMTUwIEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBCaWRpUGFyYWdyYXBoUmVuZGVyZXIuamF2YSx2ICQgJFJldmlzaW9uOiAxLjMgJCAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNjo0MiAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworLy8gUmVxdWlyZXMgSmF2YTIKK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0Zm9ybWF0OworCitpbXBvcnQgamF2YS5hd3QuQ29sb3I7CitpbXBvcnQgamF2YS5hd3QuUmVjdGFuZ2xlOworaW1wb3J0IGphdmEuYXd0LlNoYXBlOworCitpbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1Db25zdFRleHQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1UYWJSdWxlcjsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuVGFiU3RvcDsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZU1hcDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRsYXlvdXQuYXR0cmlidXRlcy5UZXh0QXR0cmlidXRlOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0bGF5b3V0LkdyYXBoaWNzMkRDb252ZXJzaW9uOworCisvLy8qSkRLMTJJTVBPUlRTCitpbXBvcnQgamF2YS5hd3QuR3JhcGhpY3MyRDsKKworaW1wb3J0IGphdmEuYXd0LmZvbnQuRm9udFJlbmRlckNvbnRleHQ7CitpbXBvcnQgamF2YS5hd3QuZm9udC5UZXh0TGF5b3V0OworaW1wb3J0IGphdmEuYXd0LmZvbnQuTGluZUJyZWFrTWVhc3VyZXI7CitpbXBvcnQgamF2YS5hd3QuZm9udC5UZXh0SGl0SW5mbzsKKworaW1wb3J0IGphdmEuYXd0Lmdlb20uQWZmaW5lVHJhbnNmb3JtOworaW1wb3J0IGphdmEuYXd0Lmdlb20uR2VuZXJhbFBhdGg7CitpbXBvcnQgamF2YS5hd3QuZ2VvbS5SZWN0YW5nbGUyRDsKKy8vSkRLMTJJTVBPUlRTKi8KKy8qSkRLMTFJTVBPUlRTCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0bGF5b3V0LkdyYXBoaWNzMkQ7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRsYXlvdXQuRm9udFJlbmRlckNvbnRleHQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0bGF5b3V0LlRleHRMYXlvdXQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0bGF5b3V0LkxpbmVCcmVha01lYXN1cmVyOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5UZXh0SGl0SW5mbzsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5BZmZpbmVUcmFuc2Zvcm07CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0bGF5b3V0LkdlbmVyYWxQYXRoOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5SZWN0YW5nbGUyRDsKK0pESzExSU1QT1JUUyovCisKK2ZpbmFsIGNsYXNzIEJpZGlQYXJhZ3JhcGhSZW5kZXJlciBleHRlbmRzIFBhcmFncmFwaFJlbmRlcmVyIHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHJpdmF0ZSBmaW5hbCBjbGFzcyBCaWRpU2VnbWVudCB7CisgICAgICAgIFRleHRMYXlvdXQgZkxheW91dDsKKyAgICAgICAgUmVjdGFuZ2xlMkQuRmxvYXQgZkJvdW5kczsKKyAgICAgICAgaW50IGZEaXN0YW5jZUZyb21MZWFkaW5nTWFyZ2luOworICAgIH0KKworICAgIHByaXZhdGUgZmluYWwgY2xhc3MgQmlkaUxheW91dEluZm8gZXh0ZW5kcyBMYXlvdXRJbmZvCisgICAgeyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIGludCBmQ2hhckxlbmd0aDsgICAgICAvLyBudW1iZXIgb2YgY2hhcmFjdGVycyBvbiBsaW5lICh3YXMgZkxlbmd0aCkKKyAgICAgICAgaW50IGZBc2NlbnQ7CisgICAgICAgIGludCBmRGVzY2VudDsKKyAgICAgICAgaW50IGZMZWFkaW5nOworICAgICAgICBpbnQgZlZpc2libGVBZHZhbmNlOyAgLy8gZGlzdGFuY2UgYWxvbmcgbGluZSBkaXJlY3Rpb24gaWUgd2lkdGgKKyAgICAgICAgaW50IGZUb3RhbEFkdmFuY2U7ICAgIC8vIGRpc3RhbmNlIGFsb25nIGxpbmUgZGlyZWN0aW9uIGluY2x1ZGluZyB0cmFpbGluZyB3aGl0ZXNwYWNlCisKKyAgICAgICAgaW50IGZMZWFkaW5nTWFyZ2luOyAgIC8vIHNjcmVlbiBkaXN0YW5jZSBmcm9tIGxlYWRpbmcgbWFyZ2luCisKKyAgICAgICAgYm9vbGVhbiBmTGVmdFRvUmlnaHQ7IC8vIHRydWUgaWZmIHRoZSBvcmllbnRhdGlvbiBpcyBsZWZ0LXRvLXJpZ2h0CisKKyAgICAgICAgZmluYWwgVmVjdG9yIGZTZWdtZW50cyA9IG5ldyBWZWN0b3IoKTsgLy8gc2VnbWVudHMgdG8gcmVuZGVyLCBpbiBsb2dpY2FsIG9yZGVyCisKKyAgICAgICAgcHVibGljIGludCBnZXRDaGFyTGVuZ3RoKCkgeworICAgICAgICAgICAgcmV0dXJuIGZDaGFyTGVuZ3RoOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGludCBnZXRBc2NlbnQoKSB7CisgICAgICAgICAgICByZXR1cm4gZkFzY2VudDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBpbnQgZ2V0RGVzY2VudCgpIHsKKyAgICAgICAgICAgIHJldHVybiBmRGVzY2VudDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBpbnQgZ2V0TGVhZGluZygpIHsKKyAgICAgICAgICAgIHJldHVybiBmTGVhZGluZzsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBpbnQgZ2V0VmlzaWJsZUFkdmFuY2UoKSB7CisgICAgICAgICAgICByZXR1cm4gZlZpc2libGVBZHZhbmNlOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGludCBnZXRUb3RhbEFkdmFuY2UoKSB7CisgICAgICAgICAgICByZXR1cm4gZlRvdGFsQWR2YW5jZTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBpbnQgZ2V0TGVhZGluZ01hcmdpbigpIHsKKyAgICAgICAgICAgIHJldHVybiBmTGVhZGluZ01hcmdpbjsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBib29sZWFuIGlzTGVmdFRvUmlnaHQoKSB7CisgICAgICAgICAgICByZXR1cm4gZkxlZnRUb1JpZ2h0OworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGludCBnZXRIZWlnaHQoKSB7CisgICAgICAgICAgICByZXR1cm4gZkFzY2VudCArIGZEZXNjZW50ICsgZkxlYWRpbmc7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuICJMYXlvdXRJbmZvKGNoYXJTdGFydDogIiArIGdldENoYXJTdGFydCgwKSArCisgICAgICAgICAgICAgICAgIiwgZkNoYXJMZW5ndGg6ICIgKyBmQ2hhckxlbmd0aCArCisgICAgICAgICAgICAgICAgIiwgZkFzY2VudDogIiArIGZBc2NlbnQgKworICAgICAgICAgICAgICAgICIsIGZEZXNjZW50OiAiICsgZkRlc2NlbnQgKworICAgICAgICAgICAgICAgICIsIGZWaXNpYmxlQWR2YW5jZTogIiArIGZWaXNpYmxlQWR2YW5jZSArCisgICAgICAgICAgICAgICAgIiwgZlRvdGFsQWR2YW5jZTogIiArIGZUb3RhbEFkdmFuY2UgKworICAgICAgICAgICAgICAgICIsIGZMZWFkaW5nTWFyZ2luOiAiICsgZkxlYWRpbmdNYXJnaW4gKworICAgICAgICAgICAgICAgICIpIjsKKyAgICAgICAgfQorCisgICAgICAgIEJpZGlQYXJhZ3JhcGhSZW5kZXJlciBmUmVuZGVyZXI7CisKKyAgICAgICAgLy8ganVzdCBkZWxlZ2F0ZSB0byByZW5kZXJlciBmb3Igbm93CisKKyAgICAgICAgcHVibGljIHZvaWQgcmVuZGVyV2l0aEhpZ2hsaWdodChpbnQgbGVuZ3RoQmFzaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JhcGhpY3MyRCBnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lQm91bmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCBzZWxTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IHNlbFN0b3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3IgaGlnaGxpZ2h0Q29sb3IpIHsKKworICAgICAgICAgICAgZlJlbmRlcmVyLnJlbmRlcldpdGhIaWdobGlnaHQodGhpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aEJhc2lzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVCb3VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsU3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxTdG9wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlnaGxpZ2h0Q29sb3IpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgcmVuZGVyKGludCBsZW5ndGhCYXNpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyYXBoaWNzMkQgZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lQm91bmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB5KSB7CisgICAgICAgICAgICBmUmVuZGVyZXIucmVuZGVyKHRoaXMsIGxlbmd0aEJhc2lzLCBnLCBsaW5lQm91bmQsIHgsIHkpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgcmVuZGVyQ2FyZXQoTUNvbnN0VGV4dCB0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuZ3RoQmFzaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyYXBoaWNzMkQgZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVCb3VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2hhck9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3Igc3Ryb25nQ2FyZXRDb2xvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3Igd2Vha0NhcmV0Q29sb3IpIHsKKyAgICAgICAgICAgIGZSZW5kZXJlci5yZW5kZXJDYXJldCh0aGlzLCB0ZXh0LCBsZW5ndGhCYXNpcywgZywgbGluZUJvdW5kLCB4LCB5LCBjaGFyT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9uZ0NhcmV0Q29sb3IsIHdlYWtDYXJldENvbG9yKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBUZXh0T2Zmc2V0IHBpeGVsVG9PZmZzZXQoaW50IGxlbmd0aEJhc2lzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lQm91bmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHkpIHsKKyAgICAgICAgICAgIHJldHVybiBmUmVuZGVyZXIucGl4ZWxUb09mZnNldCh0aGlzLCBsZW5ndGhCYXNpcywgcmVzdWx0LCBsaW5lQm91bmQsIHgsIHkpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIFJlY3RhbmdsZSBjYXJldEJvdW5kcyhNQ29uc3RUZXh0IHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxlbmd0aEJhc2lzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lQm91bmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNoYXJPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHkpIHsKKyAgICAgICAgICAgIHJldHVybiBmUmVuZGVyZXIuY2FyZXRCb3VuZHModGhpcywgdGV4dCwgbGVuZ3RoQmFzaXMsIGxpbmVCb3VuZCwgY2hhck9mZnNldCwgeCwgeSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHB1YmxpYyBpbnQgc3Ryb25nQ2FyZXRCYXNlbGluZVBvc2l0aW9uKGludCBsZW5ndGhCYXNpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVCb3VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNoYXJPZmZzZXQpIHsKKworICAgICAgICAgICAgcmV0dXJuIGZSZW5kZXJlci5zdHJvbmdDYXJldEJhc2VsaW5lUG9zaXRpb24odGhpcywgbGVuZ3RoQmFzaXMsIGxpbmVCb3VuZCwgY2hhck9mZnNldCk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgaW50IGdldE5leHRPZmZzZXQoaW50IGxlbmd0aEJhc2lzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNoYXJPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG9ydCBkaXIpIHsKKworICAgICAgICAgICAgcmV0dXJuIGZSZW5kZXJlci5nZXROZXh0T2Zmc2V0KHRoaXMsIGxlbmd0aEJhc2lzLCBjaGFyT2Zmc2V0LCBkaXIpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEZMVVNIX0xFQURJTkcgPSBUZXh0QXR0cmlidXRlLkZMVVNIX0xFQURJTkcuaW50VmFsdWUoKTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRkxVU0hfQ0VOVEVSID0gVGV4dEF0dHJpYnV0ZS5GTFVTSF9DRU5URVIuaW50VmFsdWUoKTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRkxVU0hfVFJBSUxJTkcgPSBUZXh0QXR0cmlidXRlLkZMVVNIX1RSQUlMSU5HLmludFZhbHVlKCk7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEZVTExZX0pVU1RJRklFRCA9IFRleHRBdHRyaWJ1dGUuRlVMTFlfSlVTVElGSUVELmludFZhbHVlKCk7CisKKyAgICBwcml2YXRlIEF0dHJpYnV0ZU1hcCBjYWNoZVN0eWxlID0gbnVsbDsKKworICAgIHByaXZhdGUgZmxvYXQgZkxlYWRpbmdNYXJnaW47CisgICAgcHJpdmF0ZSBmbG9hdCBmVHJhaWxpbmdNYXJnaW47CisgICAgcHJpdmF0ZSBmbG9hdCBmRmlyc3RMaW5lSW5kZW50OworICAgIHByaXZhdGUgZmxvYXQgZk1pbkxpbmVTcGFjaW5nOworICAgIHByaXZhdGUgZmxvYXQgZkV4dHJhTGluZVNwYWNpbmc7CisgICAgCisgICAgcHJpdmF0ZSBpbnQgZkZsdXNoID0gLTE7CisgICAgcHJpdmF0ZSBNVGFiUnVsZXIgZlRhYlJ1bGVyOworICAgIAorICAgIHByaXZhdGUgYm9vbGVhbiBmTHRyRGVmYXVsdDsKKyAgICBwcml2YXRlIERlZmF1bHRDaGFyYWN0ZXJNZXRyaWMgZkRlZmF1bHRDaGFyTWV0cmljOworICAgIAorICAgIEJpZGlQYXJhZ3JhcGhSZW5kZXJlcihBdHRyaWJ1dGVNYXAgcFN0eWxlLCBEZWZhdWx0Q2hhcmFjdGVyTWV0cmljIGRlZmF1bHRDaGFyTWV0cmljKSB7CisKKyAgICAgICAgZkRlZmF1bHRDaGFyTWV0cmljID0gZGVmYXVsdENoYXJNZXRyaWM7CisgICAgICAgIGluaXRSZW5kZXJlcihwU3R5bGUpOworICAgIH0KKworICAgIHByaXZhdGUgZmxvYXQgZ2V0RmxvYXRWYWx1ZShPYmplY3Qga2V5LCBBdHRyaWJ1dGVNYXAgc3R5bGUpIHsKKyAgICAgICAgcmV0dXJuICgoRmxvYXQpc3R5bGUuZ2V0KGtleSkpLmZsb2F0VmFsdWUoKTsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBpbnQgZ2V0SW50VmFsdWUoT2JqZWN0IGtleSwgQXR0cmlidXRlTWFwIHN0eWxlKSB7CisgICAgICAgIHJldHVybiAoKEludGVnZXIpc3R5bGUuZ2V0KGtleSkpLmludFZhbHVlKCk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIE5PVEU6ICBpdCBpcyBpbGxlZ2FsIHRvIGluaXRpYWxpemUgYSBTdGFuZGFyZFBhcmFncmFwaFJlbmRlcmVyIGZvciBhbnkgc3R5bGUKKyAgICAgKiBvdGhlciB0aGFuIHRoZSBvbmUgaXQgd2FzIGNyZWF0ZWQgd2l0aC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBpbml0UmVuZGVyZXIoQXR0cmlidXRlTWFwIHBTdHlsZSkgeworCisgICAgICAgIGlmIChjYWNoZVN0eWxlID09IG51bGwpIHsKKworICAgICAgICAgICAgZkxlYWRpbmdNYXJnaW4gPSBnZXRGbG9hdFZhbHVlKFRleHRBdHRyaWJ1dGUuTEVBRElOR19NQVJHSU4sIHBTdHlsZSk7CisgICAgICAgICAgICBmVHJhaWxpbmdNYXJnaW4gPSBnZXRGbG9hdFZhbHVlKFRleHRBdHRyaWJ1dGUuVFJBSUxJTkdfTUFSR0lOLCBwU3R5bGUpOworICAgICAgICAgICAgZkZpcnN0TGluZUluZGVudCA9IGdldEZsb2F0VmFsdWUoVGV4dEF0dHJpYnV0ZS5GSVJTVF9MSU5FX0lOREVOVCwgcFN0eWxlKTsKKyAgICAgICAgICAgIGZNaW5MaW5lU3BhY2luZyA9IGdldEZsb2F0VmFsdWUoVGV4dEF0dHJpYnV0ZS5NSU5fTElORV9TUEFDSU5HLCBwU3R5bGUpOworICAgICAgICAgICAgZkV4dHJhTGluZVNwYWNpbmcgPSBnZXRGbG9hdFZhbHVlKFRleHRBdHRyaWJ1dGUuRVhUUkFfTElORV9TUEFDSU5HLCBwU3R5bGUpOworCisgICAgICAgICAgICBmRmx1c2ggPSBnZXRJbnRWYWx1ZShUZXh0QXR0cmlidXRlLkxJTkVfRkxVU0gsIHBTdHlsZSk7CisKKyAgICAgICAgICAgIGZUYWJSdWxlciA9IChNVGFiUnVsZXIpIHBTdHlsZS5nZXQoVGV4dEF0dHJpYnV0ZS5UQUJfUlVMRVIpOworICAgICAgICAgICAgCisgICAgICAgICAgICBPYmplY3QgcnVuRGlyID0gcFN0eWxlLmdldChUZXh0QXR0cmlidXRlLlJVTl9ESVJFQ1RJT04pOworICAgICAgICAgICAgZkx0ckRlZmF1bHQgPSAhVGV4dEF0dHJpYnV0ZS5SVU5fRElSRUNUSU9OX1JUTC5lcXVhbHMocnVuRGlyKTsKKworICAgICAgICAgICAgY2FjaGVTdHlsZSA9IHBTdHlsZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChwU3R5bGUgIT0gY2FjaGVTdHlsZSkgeworICAgICAgICAgICAgaWYgKCFwU3R5bGUuZXF1YWxzKGNhY2hlU3R5bGUpKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJBdHRlbXB0IHRvIHNoYXJlIEJpZGlQYXJhZ3JhcGhSZW5kZXJlciBiZXR3ZWVuIHN0eWxlcyEiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGNhY2hlU3R5bGUgPSBwU3R5bGU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGlzVGFiKGNoYXIgY2gpIHsKKyAgICAgICAgcmV0dXJuIGNoID09ICdcdCc7CisgICAgfQorCisgICAgLyoqCisgICAgICogRmlsbCBpbiBpbmZvIHdpdGggdGhlIG5leHQgbGluZS4KKyAgICAgKiBAcGFyYW0gbWVhc3VyZXIgdGhlIExpbmVCcmVha01lYXN1cmVyIGZvciB0aGlzIHBhcmFncmFwaC4KKyAgICAgKiAgQ3VycmVudCBwb3NpdGlvbiBzaG91bGQgYmUgdGhlIGZpcnN0IGNoYXJhY3RlciBvbiB0aGUgbGluZS4KKyAgICAgKiAgSWYgbnVsbCwgYSAwLWxlbmd0aCBsaW5lIGlzIGdlbmVyYXRlZC4gIElmIG1lYXN1cmVyIGlzIG51bGwKKyAgICAgKiAgdGhlbiBwYXJhZ3JhcGhTdGFydCBhbmQgcGFyYWdyYXBoTGltaXQgc2hvdWxkIGJlIGVxdWFsLgorICAgICAqLworICAgIC8vIFVzdWFsbHkgdG90YWxGb3JtYXRXaWR0aCBhbmQgbGluZUJvdW5kIHdpbGwgYmUgdGhlIHNhbWUuCisgICAgLy8gdG90YWxGb3JtYXRXaWR0aCBpcyB1c2VkIGZvciB3cmFwcGluZywgYnV0IGxpbmVCb3VuZCBpcworICAgIC8vIGZvciBmbHVzaGluZy4gIFRoZXNlIG1heSBiZSBkaWZmZXJlbnQgZm9yIHVud3JhcHBlZCB0ZXh0LAorICAgIC8vIGZvciBleGFtcGxlLgorICAgIHB1YmxpYyBMYXlvdXRJbmZvIGxheW91dChNQ29uc3RUZXh0IHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExheW91dEluZm8gbGF5b3V0VG9SZXVzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluZUJyZWFrTWVhc3VyZXIgbWVhc3VyZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvbnRSZW5kZXJDb250ZXh0IGZyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBhcmFncmFwaFN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGFyYWdyYXBoTGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0b3RhbEZvcm1hdFdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZUJvdW5kKSB7CisKKyAgICAgICAgaWYgKChtZWFzdXJlcj09bnVsbCkgIT0gKHBhcmFncmFwaFN0YXJ0PT1wYXJhZ3JhcGhMaW1pdCkpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICJtZWFzdXJlciwgcGFyYWdyYXBoU3RhcnQsIHBhcmFncmFwaExpbWl0IGFyZSB3cm9uZy4iKTsKKyAgICAgICAgfQorICAgICAgICBCaWRpTGF5b3V0SW5mbyBsaW5lID0gbnVsbDsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgbGluZSA9IChCaWRpTGF5b3V0SW5mbykgbGF5b3V0VG9SZXVzZTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaChDbGFzc0Nhc3RFeGNlcHRpb24gZSkgeworICAgICAgICB9CisKKyAgICAgICAgaWYgKGxpbmUgPT0gbnVsbCkgeworICAgICAgICAgICAgbGluZSA9IG5ldyBCaWRpTGF5b3V0SW5mbygpOworICAgICAgICB9CisKKyAgICAgICAgbGluZS5mUmVuZGVyZXIgPSB0aGlzOworCisgICAgICAgIGZpbmFsIGludCBsaW5lQ2hhclN0YXJ0ID0gbWVhc3VyZXI9PW51bGw/IHBhcmFncmFwaFN0YXJ0IDogbWVhc3VyZXIuZ2V0UG9zaXRpb24oKTsKKyAgICAgICAgbGluZS5zZXRDaGFyU3RhcnQobGluZUNoYXJTdGFydCk7CisKKyAgICAgICAgZmluYWwgaW50IGxpbmVJbmRlbnQgPSAobGluZUNoYXJTdGFydD09cGFyYWdyYXBoU3RhcnQpPyAoaW50KSBmRmlyc3RMaW5lSW5kZW50IDogMDsKKworICAgICAgICBpbnQgZm9ybWF0V2lkdGggPSB0b3RhbEZvcm1hdFdpZHRoIC0gKGludCkgKGZMZWFkaW5nTWFyZ2luICsgZlRyYWlsaW5nTWFyZ2luKTsKKyAgICAgICAgY29tcHV0ZUxpbmVNZXRyaWNzKHRleHQsIGxpbmUsIG1lYXN1cmVyLCBmcmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYWdyYXBoU3RhcnQsIHBhcmFncmFwaExpbWl0LCBmb3JtYXRXaWR0aCwgbGluZUluZGVudCk7CisKKyAgICAgICAgLy8gcG9zaXRpb24gdGhlIGxpbmUgYWNjb3JkaW5nIHRvIHRoZSBsaW5lIGZsdXNoCisgICAgICAgIGlmIChmRmx1c2ggPT0gRkxVU0hfVFJBSUxJTkcgfHwgZkZsdXNoID09IEZMVVNIX0NFTlRFUikgeworICAgICAgICAgICAgaW50IGxpbmVBcmVhID0gbGluZUJvdW5kIC0gKGludCkgKGZMZWFkaW5nTWFyZ2luICsgZlRyYWlsaW5nTWFyZ2luKTsKKyAgICAgICAgICAgIGludCBhZHZhbmNlRGlmZmVyZW5jZSA9IGxpbmVBcmVhIC0gbGluZS5mVmlzaWJsZUFkdmFuY2U7CisKKyAgICAgICAgICAgIGlmIChmRmx1c2ggPT0gRkxVU0hfVFJBSUxJTkcpIHsKKyAgICAgICAgICAgICAgICBsaW5lLmZMZWFkaW5nTWFyZ2luID0gKChpbnQpIChmTGVhZGluZ01hcmdpbikpICsgYWR2YW5jZURpZmZlcmVuY2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChmRmx1c2ggPT0gRkxVU0hfQ0VOVEVSKSB7CisgICAgICAgICAgICAgICAgbGluZS5mTGVhZGluZ01hcmdpbiA9IChpbnQpIChmTGVhZGluZ01hcmdpbiArIGFkdmFuY2VEaWZmZXJlbmNlLzIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbGluZS5mTGVhZGluZ01hcmdpbiA9IChpbnQpIGZMZWFkaW5nTWFyZ2luOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGxpbmU7CisgICAgfQorCisgICAgLyoqCisgICAgICogRmlsbCBpbiB0aGUgZm9sbG93aW5nIGZpZWxkcyBpbiBsaW5lOgorICAgICAqIGZDaGFyTGVuZ3RoLCBmQXNjZW50LCBmRGVzY2VudCwgZkxlYWRpbmcsIGZWaXNpYmxlQWR2YW5jZSwKKyAgICAgKiBmVG90YWxBZHZhbmNlLgorICAgICAqIFVzZXM6IGxpbmUuZkxlYWRpbmdNYXJnaW4KKyAgICAgKiBAcGFyYW0gZm9ybWF0V2lkdGggdGhlIHdpZHRoIHRvIGZpdCB0aGUgbGluZSBpbnRvLgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBjb21wdXRlTGluZU1ldHJpY3MoTUNvbnN0VGV4dCB0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlkaUxheW91dEluZm8gbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmVCcmVha01lYXN1cmVyIG1lYXN1cmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9udFJlbmRlckNvbnRleHQgZnJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgaW50IHBhcmFncmFwaFN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgaW50IHBhcmFncmFwaExpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgaW50IGZvcm1hdFdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgaW50IGxpbmVJbmRlbnQpIHsKKworICAgICAgICBpbnQgc2VnbWVudENvdW50ID0gMDsKKyAgICAgICAgLyogdmFyaWFibGUgbm90IHVzZWQgYm9vbGVhbiBmaXJzdExpbmUgPSBtZWFzdXJlcj09bnVsbCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lYXN1cmVyLmdldFBvc2l0aW9uKCkgPT0gcGFyYWdyYXBoU3RhcnQ7ICovCisKKyAgICAgICAgaWYgKG1lYXN1cmVyICE9IG51bGwpIHsKKyAgICAgICAgICAgIGNvbXB1dGVTZWdtZW50cyh0ZXh0LCBsaW5lLCBtZWFzdXJlciwgcGFyYWdyYXBoTGltaXQsIGZvcm1hdFdpZHRoLCBsaW5lSW5kZW50KTsKKworICAgICAgICAgICAgLy8gaXRlcmF0ZSB0aHJvdWdoIHNlZ21lbnRzIGFuZCBhY2N1bXVsYXRlIGFzY2VudCwgZGVzY2VudCwKKyAgICAgICAgICAgIC8vIGxlYWRpbmcsIGNoYXIgbGVuZ3RoCisgICAgICAgICAgICBmbG9hdCBhc2NlbnQgPSAwOworICAgICAgICAgICAgZmxvYXQgZGVzY2VudCA9IDA7CisgICAgICAgICAgICBmbG9hdCBkZXNjZW50UGx1c0xlYWRpbmcgPSAwOworCisgICAgICAgICAgICBzZWdtZW50Q291bnQgPSBsaW5lLmZTZWdtZW50cy5zaXplKCk7CisgICAgICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBzZWdtZW50Q291bnQ7IGkrKykgeworICAgICAgICAgICAgICAgIFRleHRMYXlvdXQgbGF5b3V0ID0gKChCaWRpU2VnbWVudClsaW5lLmZTZWdtZW50cy5lbGVtZW50QXQoaSkpLmZMYXlvdXQ7CisgICAgICAgICAgICAgICAgYXNjZW50ID0gTWF0aC5tYXgoYXNjZW50LCBsYXlvdXQuZ2V0QXNjZW50KCkpOworICAgICAgICAgICAgICAgIGZsb2F0IHNlZ0Rlc2NlbnQgPSBsYXlvdXQuZ2V0RGVzY2VudCgpOworICAgICAgICAgICAgICAgIGRlc2NlbnQgPSBNYXRoLm1heChkZXNjZW50LCBzZWdEZXNjZW50KTsKKyAgICAgICAgICAgICAgICBkZXNjZW50UGx1c0xlYWRpbmcgPSBNYXRoLm1heChkZXNjZW50UGx1c0xlYWRpbmcsIHNlZ0Rlc2NlbnQrbGF5b3V0LmdldExlYWRpbmcoKSk7CisgICAgICAgICAgICAgICAgbGluZS5mQ2hhckxlbmd0aCArPSBsYXlvdXQuZ2V0Q2hhcmFjdGVyQ291bnQoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGluZS5mQXNjZW50ID0gKGludCkgTWF0aC5jZWlsKGFzY2VudCk7CisgICAgICAgICAgICBsaW5lLmZEZXNjZW50ID0gKGludCkgTWF0aC5jZWlsKGRlc2NlbnQpOworICAgICAgICAgICAgbGluZS5mTGVhZGluZyA9IChpbnQpIE1hdGguY2VpbChkZXNjZW50UGx1c0xlYWRpbmcpIC0gbGluZS5mRGVzY2VudDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGxpbmUuZkxlZnRUb1JpZ2h0ID0gZkx0ckRlZmF1bHQ7CisgICAgICAgICAgICBsaW5lLmZTZWdtZW50cy5yZW1vdmVBbGxFbGVtZW50cygpOworCisgICAgICAgICAgICBsaW5lLmZDaGFyTGVuZ3RoID0gMDsKKworICAgICAgICAgICAgQXR0cmlidXRlTWFwIHN0eWxlID0gdGV4dC5jaGFyYWN0ZXJTdHlsZUF0KHBhcmFncmFwaFN0YXJ0KTsKKyAgICAgICAgICAgIERlZmF1bHRDaGFyYWN0ZXJNZXRyaWMuTWV0cmljIGNtID0gZkRlZmF1bHRDaGFyTWV0cmljLmdldE1ldHJpY0ZvclN0eWxlKHN0eWxlKTsKKyAgICAgICAgICAgIGxpbmUuZkFzY2VudCA9IGNtLmdldEFzY2VudCgpOworICAgICAgICAgICAgbGluZS5mRGVzY2VudCA9IGNtLmdldERlc2NlbnQoKTsKKyAgICAgICAgICAgIGxpbmUuZkxlYWRpbmcgPSBjbS5nZXRMZWFkaW5nKCk7CisKKyAgICAgICAgICAgIGxpbmUuZlZpc2libGVBZHZhbmNlID0gbGluZS5mVG90YWxBZHZhbmNlID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChmRXh0cmFMaW5lU3BhY2luZyAhPSAwKSB7CisgICAgICAgICAgICBsaW5lLmZBc2NlbnQgKz0gKGludCkgTWF0aC5jZWlsKGZFeHRyYUxpbmVTcGFjaW5nKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChmTWluTGluZVNwYWNpbmcgIT0gMCl7CisgICAgICAgICAgICBpbnQgaGVpZ2h0ID0gbGluZS5nZXRIZWlnaHQoKTsKKyAgICAgICAgICAgIGlmIChoZWlnaHQgPCBmTWluTGluZVNwYWNpbmcpIHsKKyAgICAgICAgICAgICAgICBsaW5lLmZBc2NlbnQgKz0gTWF0aC5jZWlsKGZNaW5MaW5lU3BhY2luZyAtIGhlaWdodCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCBpbnQgbGluZU5hdHVyYWxBZHZhbmNlID0gbGluZS5mVG90YWxBZHZhbmNlOworCisgICAgICAgIGxpbmUuZlRvdGFsQWR2YW5jZSArPSBsaW5lSW5kZW50OworICAgICAgICBsaW5lLmZWaXNpYmxlQWR2YW5jZSArPSBsaW5lSW5kZW50OworCisgICAgICAgIGlmIChtZWFzdXJlciAhPSBudWxsKSB7CisgICAgICAgICAgICAvLyBOb3cgZmlsbCBpbiBmQm91bmRzIGZpZWxkIG9mIEJpZGlTZWdtZW50cy4gIGZCb3VuZHMgc2hvdWxkIHRpbGUKKyAgICAgICAgICAgIC8vIHRoZSBsaW5lLgorICAgICAgICAgICAgZmluYWwgZmxvYXQgbGluZUhlaWdodCA9IGxpbmUuZ2V0SGVpZ2h0KCk7CisKKyAgICAgICAgICAgIGZvciAoaW50IGk9MTsgaSA8IHNlZ21lbnRDb3VudDsgaSsrKSB7CisKKyAgICAgICAgICAgICAgICBCaWRpU2VnbWVudCBjdXJyZW50U2VnbWVudCA9IChCaWRpU2VnbWVudCkgbGluZS5mU2VnbWVudHMuZWxlbWVudEF0KGktMSk7CisgICAgICAgICAgICAgICAgQmlkaVNlZ21lbnQgbmV4dFNlZ21lbnQgPSAoQmlkaVNlZ21lbnQpIGxpbmUuZlNlZ21lbnRzLmVsZW1lbnRBdChpKTsKKworICAgICAgICAgICAgICAgIGZsb2F0IG9yaWdpbjsKKyAgICAgICAgICAgICAgICBmbG9hdCB3aWR0aDsKKworICAgICAgICAgICAgICAgIGlmIChsaW5lLmZMZWZ0VG9SaWdodCkgeworICAgICAgICAgICAgICAgICAgICBvcmlnaW4gPSAwOworICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IG5leHRTZWdtZW50LmZEaXN0YW5jZUZyb21MZWFkaW5nTWFyZ2luIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFNlZ21lbnQuZkRpc3RhbmNlRnJvbUxlYWRpbmdNYXJnaW47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBvcmlnaW4gPSBjdXJyZW50U2VnbWVudC5mRGlzdGFuY2VGcm9tTGVhZGluZ01hcmdpbjsKKyAgICAgICAgICAgICAgICAgICAgb3JpZ2luIC09IG5leHRTZWdtZW50LmZEaXN0YW5jZUZyb21MZWFkaW5nTWFyZ2luOworICAgICAgICAgICAgICAgICAgICBvcmlnaW4gKz0gKGZsb2F0KSBNYXRoLmNlaWwobmV4dFNlZ21lbnQuZkxheW91dC5nZXRBZHZhbmNlKCkpOworICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IChmbG9hdCkgTWF0aC5jZWlsKGN1cnJlbnRTZWdtZW50LmZMYXlvdXQuZ2V0QWR2YW5jZSgpKSAtIG9yaWdpbjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY3VycmVudFNlZ21lbnQuZkJvdW5kcyA9IG5ldyBSZWN0YW5nbGUyRC5GbG9hdChvcmlnaW4sIC1saW5lLmZBc2NlbnQsIHdpZHRoLCBsaW5lSGVpZ2h0KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gc2V0IGxhc3Qgc2VnbWVudCdzIGJvdW5kcworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEJpZGlTZWdtZW50IGN1cnJlbnRTZWdtZW50ID0gKEJpZGlTZWdtZW50KSBsaW5lLmZTZWdtZW50cy5lbGVtZW50QXQoc2VnbWVudENvdW50LTEpOworICAgICAgICAgICAgICAgIGZsb2F0IG9yaWdpbjsKKyAgICAgICAgICAgICAgICBmbG9hdCB3aWR0aDsKKworICAgICAgICAgICAgICAgIGlmIChsaW5lLmZMZWZ0VG9SaWdodCkgeworICAgICAgICAgICAgICAgICAgICBvcmlnaW4gPSAwOworICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IGxpbmVOYXR1cmFsQWR2YW5jZSAtIGN1cnJlbnRTZWdtZW50LmZEaXN0YW5jZUZyb21MZWFkaW5nTWFyZ2luOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgb3JpZ2luID0gY3VycmVudFNlZ21lbnQuZkRpc3RhbmNlRnJvbUxlYWRpbmdNYXJnaW4gLSBsaW5lTmF0dXJhbEFkdmFuY2U7CisgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gKGZsb2F0KSBNYXRoLmNlaWwoY3VycmVudFNlZ21lbnQuZkxheW91dC5nZXRBZHZhbmNlKCkpIC0gb3JpZ2luOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGN1cnJlbnRTZWdtZW50LmZCb3VuZHMgPSBuZXcgUmVjdGFuZ2xlMkQuRmxvYXQob3JpZ2luLCAtbGluZS5mQXNjZW50LCB3aWR0aCwgbGluZUhlaWdodCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBGaWxsIGluIGZTZWdtZW50cywgZkxlZnRUb1JpZ2h0LiAgbWVhc3VyZXIgbXVzdCBub3QgYmUgbnVsbAorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBjb21wdXRlU2VnbWVudHMoTUNvbnN0VGV4dCB0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlkaUxheW91dEluZm8gbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmVCcmVha01lYXN1cmVyIG1lYXN1cmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgaW50IHBhcmFncmFwaExpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgaW50IGZvcm1hdFdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgaW50IGxpbmVJbmRlbnQpIHsKKworICAgICAgICAvLyBOb3RlIG9uIGp1c3RpZmljYXRpb246ICBvbmx5IHRoZSBsYXN0IHNlZ21lbnQgb2YgYSBsaW5lIGlzCisgICAgICAgIC8vIGp1c3RpZmllZC4gIAorICAgICAgICAvLyBBbHNvLCBpZiBhIGxpbmUgZW5kcyBpbiBhIHRhYiBpdCB3aWxsIG5vdCBiZSBqdXN0aWZpZWQuCisgICAgICAgIC8vIFRoaXMgYmVoYXZpb3IgaXMgY29uc2lzdGVudCB3aXRoIG90aGVyIHdvcmQgcHJvY2Vzc29ycworICAgICAgICAvLyBJIHRyaWVkIChNUyBXb3JkIGFuZCBMb3R1cyBXb3JkIFBybykuCisgICAgICAgIAorICAgICAgICBsaW5lLmZTZWdtZW50cy5yZW1vdmVBbGxFbGVtZW50cygpOworICAgICAgICBsaW5lLmZDaGFyTGVuZ3RoID0gMDsKKworICAgICAgICBUYWJTdG9wIGN1cnJlbnRUYWJTdG9wID0gbmV3IFRhYlN0b3AoKGludClmTGVhZGluZ01hcmdpbitsaW5lSW5kZW50LCBUYWJTdG9wLmtMZWFkaW5nKTsKKworICAgICAgICBpbnQgc2VnbWVudExpbWl0ID0gbWVhc3VyZXIuZ2V0UG9zaXRpb24oKTsKKyAgICAgICAgYm9vbGVhbiBmaXJzdFNlZ21lbnQgPSB0cnVlOworCisgICAgICAgIGludCBhZHZhbmNlRnJvbUxlYWRpbmdNYXJnaW4gPSBsaW5lSW5kZW50OworCisgICAgICAgIGJvb2xlYW4gY29tcHV0ZVNlZ3MgPSB0cnVlOworICAgICAgICAKKyAgICAgICAgY29tcHV0ZVRhYmJlZFNlZ21lbnRzOiBkbyB7CisKKyAgICAgICAgICAgIC8vIGNvbXB1dGUgc2VtZW50TGltaXQ6CisgICAgICAgICAgICBpZiAoc2VnbWVudExpbWl0IDw9IG1lYXN1cmVyLmdldFBvc2l0aW9uKCkpIHsKKyAgICAgICAgICAgICAgICB3aGlsZSAoc2VnbWVudExpbWl0IDwgcGFyYWdyYXBoTGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzVGFiKHRleHQuYXQoc2VnbWVudExpbWl0KyspKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIE5PVEU6ICBhZGp1c3QgYXZhaWxhYmxlIHdpZHRoIGZvciBjZW50ZXIgdGFiISEhCisgICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiRm9ybWF0IHdpZHRoOiAiICsgKGZvcm1hdFdpZHRoLWFkdmFuY2VGcm9tTGVhZGluZ01hcmdpbikgKworICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgIjsgIHNlZ21lbnRMaW1pdDogIiArIHNlZ21lbnRMaW1pdCk7CisKKyAgICAgICAgICAgIGludCB3cmFwcGluZ1dpZHRoID0gTWF0aC5tYXgoZm9ybWF0V2lkdGgtYWR2YW5jZUZyb21MZWFkaW5nTWFyZ2luLCAwKTsKKyAgICAgICAgICAgIFRleHRMYXlvdXQgbGF5b3V0ID0gbnVsbDsKKyAgICAgICAgICAgIGlmIChmaXJzdFNlZ21lbnQgfHwgd3JhcHBpbmdXaWR0aCA+IDAgfHwgc2VnbWVudExpbWl0ID4gbWVhc3VyZXIuZ2V0UG9zaXRpb24oKSsxKSB7CisgICAgICAgICAgICAgICAgbGF5b3V0ID0gbWVhc3VyZXIubmV4dExheW91dCh3cmFwcGluZ1dpZHRoLCBzZWdtZW50TGltaXQsICFmaXJzdFNlZ21lbnQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobGF5b3V0ID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBpZiAoZmlyc3RTZWdtZW50KSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEkgZG91YnQgdGhpcyB3b3VsZCBoYXBwZW4sIGJ1dCBjaGVjayBhbnl3YXkKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJGaXJzdCBsYXlvdXQgaXMgbnVsbCEiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWsgY29tcHV0ZVRhYmJlZFNlZ21lbnRzOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmaW5hbCBpbnQgbWVhc3VyZXJQb3MgPSBtZWFzdXJlci5nZXRQb3NpdGlvbigpOworICAgICAgICAgICAgaWYgKG1lYXN1cmVyUG9zIDwgc2VnbWVudExpbWl0KSB7CisgICAgICAgICAgICAgICAgY29tcHV0ZVNlZ3MgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAoZkZsdXNoID09IEZVTExZX0pVU1RJRklFRCkgeworICAgICAgICAgICAgICAgICAgICBsYXlvdXQgPSBsYXlvdXQuZ2V0SnVzdGlmaWVkTGF5b3V0KHdyYXBwaW5nV2lkdGgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGNvbXB1dGVTZWdzID0gIShtZWFzdXJlclBvcyA9PSBwYXJhZ3JhcGhMaW1pdCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChmaXJzdFNlZ21lbnQpIHsKKyAgICAgICAgICAgICAgICBmaXJzdFNlZ21lbnQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAvLyBIYXZlIHRvIGdldCBsdHIgb2ZmIG9mIGxheW91dC4gIE5vdCBhdmFpbGFibGUgZnJvbSBtZWFzdXJlciwKKyAgICAgICAgICAgICAgICAvLyB1bmZvcnR1bmF0ZWx5LgorICAgICAgICAgICAgICAgIGxpbmUuZkxlZnRUb1JpZ2h0ID0gbGF5b3V0LmlzTGVmdFRvUmlnaHQoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgQmlkaVNlZ21lbnQgc2VnbWVudCA9IG5ldyBCaWRpU2VnbWVudCgpOworICAgICAgICAgICAgc2VnbWVudC5mTGF5b3V0ID0gbGF5b3V0OworICAgICAgICAgICAgaW50IGxheW91dEFkdmFuY2UgPSAoaW50KSBNYXRoLmNlaWwobGF5b3V0LmdldEFkdmFuY2UoKSk7CisKKyAgICAgICAgICAgIC8vIHBvc2l0aW9uIGxheW91dCByZWxhdGl2ZSB0byBsZWFkaW5nIG1hcmdpbiwgdXBkYXRlIGxvZ2ljYWxQb3NpdGlvbk9uTGluZQorICAgICAgICAgICAgCisgICAgICAgICAgICBpbnQgcmVsYXRpdmVUYWJQb3NpdGlvbiA9IGN1cnJlbnRUYWJTdG9wLmdldFBvc2l0aW9uKCktKGludClmTGVhZGluZ01hcmdpbjsKKyAgICAgICAgICAgIGludCBsb2dpY2FsUG9zaXRpb25PZkxheW91dDsKKyAgICAgICAgICAgIHN3aXRjaCAoY3VycmVudFRhYlN0b3AuZ2V0VHlwZSgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBUYWJTdG9wLmtUcmFpbGluZzoKKyAgICAgICAgICAgICAgICAgICAgbG9naWNhbFBvc2l0aW9uT2ZMYXlvdXQgPSBNYXRoLm1heCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aXZlVGFiUG9zaXRpb24tbGF5b3V0QWR2YW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkdmFuY2VGcm9tTGVhZGluZ01hcmdpbik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgVGFiU3RvcC5rQ2VudGVyOgorICAgICAgICAgICAgICAgICAgICBsb2dpY2FsUG9zaXRpb25PZkxheW91dCA9IE1hdGgubWF4KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpdmVUYWJQb3NpdGlvbi0obGF5b3V0QWR2YW5jZS8yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkdmFuY2VGcm9tTGVhZGluZ01hcmdpbik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6ICAvLyBpbmNsdWRlcyBkZWNpbWFsIHRhYiByaWdodCBub3cKKyAgICAgICAgICAgICAgICAgICAgbG9naWNhbFBvc2l0aW9uT2ZMYXlvdXQgPSByZWxhdGl2ZVRhYlBvc2l0aW9uOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gcG9zaXRpb24gbGF5b3V0IGluIHNlZ21lbnQKKyAgICAgICAgICAgIGlmIChsaW5lLmZMZWZ0VG9SaWdodCkgeworICAgICAgICAgICAgICAgIHNlZ21lbnQuZkRpc3RhbmNlRnJvbUxlYWRpbmdNYXJnaW4gPSBsb2dpY2FsUG9zaXRpb25PZkxheW91dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHNlZ21lbnQuZkRpc3RhbmNlRnJvbUxlYWRpbmdNYXJnaW4gPSBsb2dpY2FsUG9zaXRpb25PZkxheW91dCtsYXlvdXRBZHZhbmNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyB1cGRhdGUgYWR2YW5jZUZyb21MZWFkaW5nTWFyZ2luCisgICAgICAgICAgICBhZHZhbmNlRnJvbUxlYWRpbmdNYXJnaW4gPSBsb2dpY2FsUG9zaXRpb25PZkxheW91dCArIGxheW91dEFkdmFuY2U7CisKKyAgICAgICAgICAgIC8vIGFkZCBzZWdtZW50IHRvIHNlZ21lbnQgVmVjdG9yCisgICAgICAgICAgICBsaW5lLmZTZWdtZW50cy5hZGRFbGVtZW50KHNlZ21lbnQpOworCisgICAgICAgICAgICAvLyBnZXQgbmV4dCB0YWIKKyAgICAgICAgICAgIGN1cnJlbnRUYWJTdG9wID0gZlRhYlJ1bGVyLm5leHRUYWIoKGludClmTGVhZGluZ01hcmdpbithZHZhbmNlRnJvbUxlYWRpbmdNYXJnaW4pOworICAgICAgICAgICAgaWYgKGN1cnJlbnRUYWJTdG9wLmdldFR5cGUoKSA9PSBUYWJTdG9wLmtMZWFkaW5nIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFRhYlN0b3AuZ2V0VHlwZSgpID09IFRhYlN0b3Aua0F1dG8pICB7CisgICAgICAgICAgICAgICAgYWR2YW5jZUZyb21MZWFkaW5nTWFyZ2luID0gY3VycmVudFRhYlN0b3AuZ2V0UG9zaXRpb24oKTsKKyAgICAgICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiQWR2YW5jZSBmcm9tIGxlYWRpbmcgbWFyZ2luOiIgKyBhZHZhbmNlRnJvbUxlYWRpbmdNYXJnaW4pOworCisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCJOb24tbGVhZGluZyB0YWIsIHR5cGU9IiArIGN1cnJlbnRUYWJTdG9wLmdldFR5cGUoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgfSB3aGlsZSAoY29tcHV0ZVNlZ3MpOworCisgICAgICAgIC8vIE5vdyBjb21wdXRlIGZUb3RhbEFkdmFuY2UsIGZWaXNpYmxlQWR2YW5jZS4gIFRoZXNlIG1ldHJpY3MgbWF5IGJlIGFmZmVjdGVkCisgICAgICAgIC8vIGJ5IGEgdHJhaWxpbmcgdGFiLgorCisgICAgICAgIHsKKyAgICAgICAgICAgIEJpZGlTZWdtZW50IGxhc3RTZWdtZW50ID0gKEJpZGlTZWdtZW50KSBsaW5lLmZTZWdtZW50cy5sYXN0RWxlbWVudCgpOworICAgICAgICAgICAgVGV4dExheW91dCBsYXN0TGF5b3V0ID0gbGFzdFNlZ21lbnQuZkxheW91dDsKKworICAgICAgICAgICAgaWYgKGxpbmUuZkxlZnRUb1JpZ2h0KSB7CisgICAgICAgICAgICAgICAgbGluZS5mVG90YWxBZHZhbmNlID0gKGludCkgTWF0aC5jZWlsKGxhc3RMYXlvdXQuZ2V0QWR2YW5jZSgpKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFNlZ21lbnQuZkRpc3RhbmNlRnJvbUxlYWRpbmdNYXJnaW47CisgICAgICAgICAgICAgICAgbGluZS5mVmlzaWJsZUFkdmFuY2UgPSAoaW50KSBNYXRoLmNlaWwobGFzdExheW91dC5nZXRWaXNpYmxlQWR2YW5jZSgpKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFNlZ21lbnQuZkRpc3RhbmNlRnJvbUxlYWRpbmdNYXJnaW47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBsaW5lLmZUb3RhbEFkdmFuY2UgPSBsYXN0U2VnbWVudC5mRGlzdGFuY2VGcm9tTGVhZGluZ01hcmdpbjsKKyAgICAgICAgICAgICAgICBsaW5lLmZWaXNpYmxlQWR2YW5jZSA9IGxhc3RTZWdtZW50LmZEaXN0YW5jZUZyb21MZWFkaW5nTWFyZ2luIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KSBNYXRoLmNlaWwobGFzdExheW91dC5nZXRBZHZhbmNlKCkgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0TGF5b3V0LmdldFZpc2libGVBZHZhbmNlKCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaXNUYWIodGV4dC5hdChtZWFzdXJlci5nZXRQb3NpdGlvbigpLTEpKSkgeworICAgICAgICAgICAgICAgIGxpbmUuZlRvdGFsQWR2YW5jZSA9IE1hdGgubWF4KGxpbmUuZlRvdGFsQWR2YW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRUYWJTdG9wLmdldFBvc2l0aW9uKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBoaWdobGlnaHQgc2hhcGUgZm9yIHRoZSBnaXZlbiBjaGFyYWN0ZXIgb2Zmc2V0cy4KKyAgICAgKiBUaGUgU2hhcGUgcmV0dXJuZWQgaXMgcmVsYXRpdmUgdG8gdGhlIGxlZnRtb3N0IHBvaW50IG9uIHRoZQorICAgICAqIGJhc2VsaW5lIG9mIGxpbmUuCisgICAgICovCisgICAgcHJpdmF0ZSBTaGFwZSBnZXRIaWdobGlnaHRTaGFwZShCaWRpTGF5b3V0SW5mbyBsaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxlbmd0aEJhc2lzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVCb3VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBobFN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGhsTGltaXQpIHsKKworICAgICAgICBpZiAoaGxTdGFydCA+PSBobExpbWl0KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJIaWdobGlnaHQgcmFuZ2UgbGVuZ3RoIGlzIG5vdCBwb3NpdGl2ZS4iKTsKKyAgICAgICAgfQorCisgICAgICAgIGZpbmFsIGludCBsZWFkaW5nTWFyZ2luID0gKGxpbmUuZkxlZnRUb1JpZ2h0KT8KKyAgICAgICAgICAgICAgICBsaW5lLmZMZWFkaW5nTWFyZ2luIDogbGluZUJvdW5kIC0gbGluZS5mTGVhZGluZ01hcmdpbjsKKyAgICAgICAgZmluYWwgaW50IHNlZ21lbnRDb3VudCA9IGxpbmUuZlNlZ21lbnRzLnNpemUoKTsKKworICAgICAgICBTaGFwZSBydmFsID0gbnVsbDsKKyAgICAgICAgR2VuZXJhbFBhdGggaGlnaGxpZ2h0UGF0aCA9IG51bGw7CisKKyAgICAgICAgaW50IGN1cnJlbnRMYXlvdXRTdGFydCA9IGxpbmUuZ2V0Q2hhclN0YXJ0KGxlbmd0aEJhc2lzKTsKKworICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBzZWdtZW50Q291bnQ7IGkrKykgeworCisgICAgICAgICAgICBCaWRpU2VnbWVudCBzZWdtZW50ID0gKEJpZGlTZWdtZW50KSBsaW5lLmZTZWdtZW50cy5lbGVtZW50QXQoaSk7CisgICAgICAgICAgICBUZXh0TGF5b3V0IGxheW91dCA9IHNlZ21lbnQuZkxheW91dDsKKyAgICAgICAgICAgIGludCBjaGFyQ291bnQgPSBsYXlvdXQuZ2V0Q2hhcmFjdGVyQ291bnQoKTsKKyAgICAgICAgICAgIGludCBjdXJyZW50TGF5b3V0TGltaXQgPSBjdXJyZW50TGF5b3V0U3RhcnQgKyBjaGFyQ291bnQ7CisgICAgICAgICAgICBib29sZWFuIHJhbmdlc0ludGVyc2VjdDsKKyAgICAgICAgICAgIGlmIChobFN0YXJ0IDw9IGN1cnJlbnRMYXlvdXRTdGFydCkgeworICAgICAgICAgICAgICAgIHJhbmdlc0ludGVyc2VjdCA9IGhsTGltaXQgPiBjdXJyZW50TGF5b3V0U3RhcnQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByYW5nZXNJbnRlcnNlY3QgPSBobFN0YXJ0IDwgY3VycmVudExheW91dExpbWl0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAocmFuZ2VzSW50ZXJzZWN0KSB7CisKKyAgICAgICAgICAgICAgICBTaGFwZSBjdXJyZW50SGwgPSBsYXlvdXQuZ2V0TG9naWNhbEhpZ2hsaWdodFNoYXBlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGgubWF4KGhsU3RhcnQtY3VycmVudExheW91dFN0YXJ0LCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRoLm1pbihobExpbWl0LWN1cnJlbnRMYXlvdXRTdGFydCwgY2hhckNvdW50KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWdtZW50LmZCb3VuZHMpOworCisgICAgICAgICAgICAgICAgZmxvYXQgeFRyYW5zbGF0ZTsKKyAgICAgICAgICAgICAgICBpZiAobGluZS5mTGVmdFRvUmlnaHQpIHsKKyAgICAgICAgICAgICAgICAgICAgeFRyYW5zbGF0ZSA9IGxlYWRpbmdNYXJnaW4gKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VnbWVudC5mRGlzdGFuY2VGcm9tTGVhZGluZ01hcmdpbjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHhUcmFuc2xhdGUgPSBsZWFkaW5nTWFyZ2luIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZ21lbnQuZkRpc3RhbmNlRnJvbUxlYWRpbmdNYXJnaW47CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKHhUcmFuc2xhdGUgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICBBZmZpbmVUcmFuc2Zvcm0geGZvcm0gPQorICAgICAgICAgICAgICAgICAgICAgICAgQWZmaW5lVHJhbnNmb3JtLmdldFRyYW5zbGF0ZUluc3RhbmNlKHhUcmFuc2xhdGUsIDApOworICAgICAgICAgICAgICAgICAgICBjdXJyZW50SGwgPSB4Zm9ybS5jcmVhdGVUcmFuc2Zvcm1lZFNoYXBlKGN1cnJlbnRIbCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKHJ2YWwgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBydmFsID0gY3VycmVudEhsOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGhpZ2hsaWdodFBhdGggPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaGlnaGxpZ2h0UGF0aCA9IG5ldyBHZW5lcmFsUGF0aCgpOworICAgICAgICAgICAgICAgICAgICAgICAgaGlnaGxpZ2h0UGF0aC5hcHBlbmQocnZhbCwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgcnZhbCA9IGhpZ2hsaWdodFBhdGg7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaGlnaGxpZ2h0UGF0aC5hcHBlbmQoY3VycmVudEhsLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgY3VycmVudExheW91dFN0YXJ0ID0gY3VycmVudExheW91dExpbWl0OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJ2YWw7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHJlbmRlcldpdGhIaWdobGlnaHQoQmlkaUxheW91dEluZm8gbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuZ3RoQmFzaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JhcGhpY3MyRCBnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lQm91bmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCBzZWxTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IHNlbFN0b3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3IgaGlnaGxpZ2h0Q29sb3IpIHsKKworICAgICAgICBmaW5hbCBpbnQgbGluZUNoYXJTdGFydCA9IGxpbmUuZ2V0Q2hhclN0YXJ0KGxlbmd0aEJhc2lzKTsKKworICAgICAgICBpZiAoc2VsU3RhcnQgIT0gbnVsbCAmJiBzZWxTdG9wICE9IG51bGwgJiYgIXNlbFN0YXJ0LmVxdWFscyhzZWxTdG9wKSAmJgorICAgICAgICAgICAgICAgIGxpbmUuZkNoYXJMZW5ndGggIT0gMCAmJgorICAgICAgICAgICAgICAgIHNlbFN0YXJ0LmZPZmZzZXQgPCBsaW5lQ2hhclN0YXJ0ICsgbGluZS5mQ2hhckxlbmd0aCAmJgorICAgICAgICAgICAgICAgIHNlbFN0b3AuZk9mZnNldCA+IGxpbmVDaGFyU3RhcnQpIHsKKworICAgICAgICAgICAgU2hhcGUgaGlnaGxpZ2h0ID0gZ2V0SGlnaGxpZ2h0U2hhcGUobGluZSwgbGVuZ3RoQmFzaXMsIGxpbmVCb3VuZCwgc2VsU3RhcnQuZk9mZnNldCwgc2VsU3RvcC5mT2Zmc2V0KTsKKyAgICAgICAgICAgIGlmIChoaWdobGlnaHQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIEdyYXBoaWNzMkQgaGwgPSAoR3JhcGhpY3MyRCkgZy5jcmVhdGUoKTsKKyAgICAgICAgICAgICAgICBobC5zZXRDb2xvcihoaWdobGlnaHRDb2xvcik7CisgICAgICAgICAgICAgICAgaGwudHJhbnNsYXRlKHgsIHkgKyBsaW5lLmZBc2NlbnQpOworICAgICAgICAgICAgICAgIGhsLmZpbGwoaGlnaGxpZ2h0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJlbmRlcihsaW5lLCBsZW5ndGhCYXNpcywgZywgbGluZUJvdW5kLCB4LCB5KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEcmF3IHRoZSBsaW5lIGludG8gdGhlIGdyYXBoaWNzLiAgKHgsIHkpIGlzIHRoZSB1cHBlci1sZWZ0IGNvcm5lcgorICAgICAqIG9mIHRoZSBsaW5lLiAgVGhlIGxlYWRpbmcgZWRnZSBvZiBhIHJpZ2h0LWFsaWduZWQgbGluZSBpcyBhbGlnbmVkCisgICAgICogdG8gKHggKyBsaW5lQm91bmQpLgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCByZW5kZXIoQmlkaUxheW91dEluZm8gbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZW5ndGhCYXNpcywKKyAgICAgICAgICAgICAgICAgICAgICAgIEdyYXBoaWNzMkQgZywKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lQm91bmQsCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCB5KSB7CisKKyAgICAgICAgZmluYWwgaW50IGxlYWRpbmdNYXJnaW4gPSAobGluZS5mTGVmdFRvUmlnaHQpPworICAgICAgICAgICAgICAgIHggKyBsaW5lLmZMZWFkaW5nTWFyZ2luIDogeCArIGxpbmVCb3VuZCAtIGxpbmUuZkxlYWRpbmdNYXJnaW47CisgICAgICAgIGZpbmFsIGludCBiYXNlbGluZSA9IHkgKyBsaW5lLmZBc2NlbnQ7CisgICAgICAgIGZpbmFsIGludCBzZWdtZW50Q291bnQgPSBsaW5lLmZTZWdtZW50cy5zaXplKCk7CisKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgc2VnbWVudENvdW50OyBpKyspIHsKKworICAgICAgICAgICAgQmlkaVNlZ21lbnQgc2VnbWVudCA9IChCaWRpU2VnbWVudCkgbGluZS5mU2VnbWVudHMuZWxlbWVudEF0KGkpOworCisgICAgICAgICAgICBmbG9hdCBkcmF3WDsKKyAgICAgICAgICAgIGlmIChsaW5lLmZMZWZ0VG9SaWdodCkgeworICAgICAgICAgICAgICAgIGRyYXdYID0gbGVhZGluZ01hcmdpbiArIHNlZ21lbnQuZkRpc3RhbmNlRnJvbUxlYWRpbmdNYXJnaW47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBkcmF3WCA9IGxlYWRpbmdNYXJnaW4gLSBzZWdtZW50LmZEaXN0YW5jZUZyb21MZWFkaW5nTWFyZ2luOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzZWdtZW50LmZMYXlvdXQuZHJhdyhnLCBkcmF3WCwgYmFzZWxpbmUpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBUZXh0T2Zmc2V0IGhpdFRlc3RTZWdtZW50KFRleHRPZmZzZXQgcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2VnbWVudENoYXJTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlkaVNlZ21lbnQgc2VnbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHhJblNlZ21lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB5SW5TZWdtZW50KSB7CisKKyAgICAgICAgZmluYWwgVGV4dExheW91dCBsYXlvdXQgPSBzZWdtZW50LmZMYXlvdXQ7CisgICAgICAgIGZpbmFsIGludCBjaGFyQ291bnQgPSBsYXlvdXQuZ2V0Q2hhcmFjdGVyQ291bnQoKTsKKyAgICAgICAgZmluYWwgaW50IGxheW91dEFkdmFuY2UgPSAoaW50KSBNYXRoLmNlaWwobGF5b3V0LmdldEFkdmFuY2UoKSk7CisgICAgICAgIFJlY3RhbmdsZTJEIGJvdW5kcyA9IHNlZ21lbnQuZkJvdW5kczsKKworICAgICAgICBmaW5hbCBib29sZWFuIGx0ciA9IGxheW91dC5pc0xlZnRUb1JpZ2h0KCk7CisKKyAgICAgICAgaWYgKGx0ciAmJiAoeEluU2VnbWVudCA+PSBsYXlvdXRBZHZhbmNlKSB8fCAhbHRyICYmICh4SW5TZWdtZW50IDw9IDApKSB7CisKKyAgICAgICAgICAgIC8vIHByZXRlbmQgdGhlIGV4dHJhIHNwYWNlIGF0IHRoZSBlbmQgb2YgdGhlIGxpbmUgaXMgYQorICAgICAgICAgICAgLy8gdGFiIGFuZCAnaGl0LXRlc3QnIGl0LgorICAgICAgICAgICAgZG91YmxlIHRhYkNlbnRlcjsKKyAgICAgICAgICAgIGlmIChsdHIpIHsKKyAgICAgICAgICAgICAgICB0YWJDZW50ZXIgPSAobGF5b3V0QWR2YW5jZStib3VuZHMuZ2V0TWF4WCgpKSAvIDI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB0YWJDZW50ZXIgPSBib3VuZHMuZ2V0WCgpIC8gMjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCh4SW5TZWdtZW50ID49IHRhYkNlbnRlcikgPT0gbHRyKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0LmZPZmZzZXQgPSBjaGFyQ291bnQ7CisgICAgICAgICAgICAgICAgcmVzdWx0LmZQbGFjZW1lbnQgPSBUZXh0T2Zmc2V0LkJFRk9SRV9PRkZTRVQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXN1bHQuZk9mZnNldCA9IGNoYXJDb3VudC0xOworICAgICAgICAgICAgICAgIHJlc3VsdC5mUGxhY2VtZW50ID0gVGV4dE9mZnNldC5BRlRFUl9PRkZTRVQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBUZXh0SGl0SW5mbyBpbmZvID0gbGF5b3V0LmhpdFRlc3RDaGFyKHhJblNlZ21lbnQsIHlJblNlZ21lbnQsIHNlZ21lbnQuZkJvdW5kcyk7CisgICAgICAgICAgICByZXN1bHQuZk9mZnNldCA9IGluZm8uZ2V0SW5zZXJ0aW9uSW5kZXgoKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQuZk9mZnNldCA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0LmZQbGFjZW1lbnQgPSBUZXh0T2Zmc2V0LkFGVEVSX09GRlNFVDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKHJlc3VsdC5mT2Zmc2V0ID09IGNoYXJDb3VudCkgeworICAgICAgICAgICAgICAgIHJlc3VsdC5mUGxhY2VtZW50ID0gVGV4dE9mZnNldC5CRUZPUkVfT0ZGU0VUOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmVzdWx0LmZQbGFjZW1lbnQgPSBpbmZvLmlzTGVhZGluZ0VkZ2UoKT8KKyAgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQuQUZURVJfT0ZGU0VUIDogVGV4dE9mZnNldC5CRUZPUkVfT0ZGU0VUOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0LmZPZmZzZXQgKz0gc2VnbWVudENoYXJTdGFydDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIG9mZnNldCBhdCB0aGUgcG9pbnQgKHgsIHkpLiAgKHgsIHkpIGlzIHJlbGF0aXZlIHRvIHRoZSB0b3AtbGVmdAorICAgICAqIG9mIHRoZSBsaW5lLiAgVGhlIGxlYWRpbmcgZWRnZSBvZiBhIHJpZ2h0LWFsaWduZWQgbGluZSBpcyBhbGlnbmVkCisgICAgICogdG8gbGluZUJvdW5kLgorICAgICAqLworICAgIHByaXZhdGUgVGV4dE9mZnNldCBwaXhlbFRvT2Zmc2V0KEJpZGlMYXlvdXRJbmZvIGxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxlbmd0aEJhc2lzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lQm91bmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHkpIHsKKworICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBUZXh0T2Zmc2V0KCk7CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCBpbnQgeUluU2VnbWVudCA9IHkgLSBsaW5lLmZBc2NlbnQ7CisgICAgICAgIGZpbmFsIGludCBsZWFkaW5nTWFyZ2luID0gKGxpbmUuZkxlZnRUb1JpZ2h0KT8KKyAgICAgICAgICAgICAgICBsaW5lLmZMZWFkaW5nTWFyZ2luIDogbGluZUJvdW5kIC0gbGluZS5mTGVhZGluZ01hcmdpbjsKKyAgICAgICAgZmluYWwgaW50IGxpbmVDaGFyU3RhcnQgPSBsaW5lLmdldENoYXJTdGFydChsZW5ndGhCYXNpcyk7CisKKyAgICAgICAgLy8gZmlyc3Qgc2VlIGlmIHBvaW50IGlzIGJlZm9yZSBsZWFkaW5nIGVkZ2Ugb2YgbGluZQorICAgICAgICBmaW5hbCBpbnQgc2VnbWVudENvdW50ID0gbGluZS5mU2VnbWVudHMuc2l6ZSgpOworICAgICAgICB7CisgICAgICAgICAgICBpbnQgc2VnTGVhZGluZ01hcmdpbiA9IGxlYWRpbmdNYXJnaW47CisgICAgICAgICAgICBpZiAoc2VnbWVudENvdW50ID4gMCkgeworICAgICAgICAgICAgICAgIEJpZGlTZWdtZW50IGZpcnN0U2VnID0gKEJpZGlTZWdtZW50KSBsaW5lLmZTZWdtZW50cy5lbGVtZW50QXQoMCk7CisgICAgICAgICAgICAgICAgaWYgKGxpbmUuZkxlZnRUb1JpZ2h0KSB7CisgICAgICAgICAgICAgICAgICAgIHNlZ0xlYWRpbmdNYXJnaW4gKz0gZmlyc3RTZWcuZkRpc3RhbmNlRnJvbUxlYWRpbmdNYXJnaW47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBzZWdMZWFkaW5nTWFyZ2luIC09IGZpcnN0U2VnLmZEaXN0YW5jZUZyb21MZWFkaW5nTWFyZ2luOworICAgICAgICAgICAgICAgICAgICBzZWdMZWFkaW5nTWFyZ2luICs9IChmbG9hdCkgZmlyc3RTZWcuZkJvdW5kcy5nZXRNYXhYKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGxpbmUuZkxlZnRUb1JpZ2h0ID09ICh4IDw9IHNlZ0xlYWRpbmdNYXJnaW4pKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0LmZPZmZzZXQgPSBsaW5lQ2hhclN0YXJ0OworICAgICAgICAgICAgICAgIHJlc3VsdC5mUGxhY2VtZW50ID0gVGV4dE9mZnNldC5BRlRFUl9PRkZTRVQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGludCBzZWdtZW50Q2hhclN0YXJ0ID0gbGluZUNoYXJTdGFydDsKKworICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBzZWdtZW50Q291bnQ7IGkrKykgeworCisgICAgICAgICAgICBCaWRpU2VnbWVudCBzZWdtZW50ID0gKEJpZGlTZWdtZW50KSBsaW5lLmZTZWdtZW50cy5lbGVtZW50QXQoaSk7CisgICAgICAgICAgICBpbnQgc2VnbWVudE9yaWdpbiA9IGxpbmUuZkxlZnRUb1JpZ2h0PworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlYWRpbmdNYXJnaW4rc2VnbWVudC5mRGlzdGFuY2VGcm9tTGVhZGluZ01hcmdpbiA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVhZGluZ01hcmdpbi1zZWdtZW50LmZEaXN0YW5jZUZyb21MZWFkaW5nTWFyZ2luOworICAgICAgICAgICAgaW50IHhJblNlZ21lbnQgPSB4IC0gc2VnbWVudE9yaWdpbjsKKyAgICAgICAgICAgIGlmIChsaW5lLmZMZWZ0VG9SaWdodCkgeworICAgICAgICAgICAgICAgIGlmIChzZWdtZW50LmZCb3VuZHMuZ2V0TWF4WCgpID4geEluU2VnbWVudCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGl0VGVzdFNlZ21lbnQocmVzdWx0LCBzZWdtZW50Q2hhclN0YXJ0LCBzZWdtZW50LCB4SW5TZWdtZW50LCB5SW5TZWdtZW50KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoc2VnbWVudC5mQm91bmRzLmdldFgoKSA8IHhJblNlZ21lbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhpdFRlc3RTZWdtZW50KHJlc3VsdCwgc2VnbWVudENoYXJTdGFydCwgc2VnbWVudCwgeEluU2VnbWVudCwgeUluU2VnbWVudCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgc2VnbWVudENoYXJTdGFydCArPSBzZWdtZW50LmZMYXlvdXQuZ2V0Q2hhcmFjdGVyQ291bnQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdC5mT2Zmc2V0ID0gbGluZUNoYXJTdGFydCArIGxpbmUuZkNoYXJMZW5ndGg7CisgICAgICAgIHJlc3VsdC5mUGxhY2VtZW50ID0gVGV4dE9mZnNldC5CRUZPUkVfT0ZGU0VUOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCByZW5kZXJDYXJldChCaWRpTGF5b3V0SW5mbyBsaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQ29uc3RUZXh0IHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZW5ndGhCYXNpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JhcGhpY3MyRCBnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZUJvdW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIGludCBjaGFyT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvciBzdHJvbmdDYXJldENvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvciB3ZWFrQ2FyZXRDb2xvcikKKyAgICB7CisgICAgICAgIGZpbmFsIGludCBzZWdtZW50Q291bnQgPSBsaW5lLmZTZWdtZW50cy5zaXplKCk7CisgICAgICAgIGZpbmFsIGludCBsaW5lU3RhcnQgPSBsaW5lLmdldENoYXJTdGFydChsZW5ndGhCYXNpcyk7CisKKyAgICAgICAgaW50IGN1cnJlbnRTdGFydCA9IGxpbmVTdGFydDsKKyAgICAgICAgQmlkaVNlZ21lbnQgc2VnbWVudCA9IG51bGw7CisgICAgICAgIGludCBzZWdtZW50SW5kZXg7CisKKyAgICAgICAgZm9yIChzZWdtZW50SW5kZXg9MDsgc2VnbWVudEluZGV4IDwgc2VnbWVudENvdW50OyBzZWdtZW50SW5kZXgrKykgeworICAgICAgICAgICAgc2VnbWVudCA9IChCaWRpU2VnbWVudCkgbGluZS5mU2VnbWVudHMuZWxlbWVudEF0KHNlZ21lbnRJbmRleCk7CisgICAgICAgICAgICBpbnQgY3VycmVudEVuZHBvaW50ID0gY3VycmVudFN0YXJ0ICsgc2VnbWVudC5mTGF5b3V0LmdldENoYXJhY3RlckNvdW50KCk7CisgICAgICAgICAgICBpZiAoY3VycmVudEVuZHBvaW50ID4gY2hhck9mZnNldCkgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY3VycmVudFN0YXJ0ID0gY3VycmVudEVuZHBvaW50OworICAgICAgICB9CisKKyAgICAgICAgLyoKKyAgICAgICAgICAgIFRoZXJlIGFyZSB0d28gY2hvaWNlcyBoZXJlOgorICAgICAgICAgICAgMS4gZ2V0IGNhcmV0cyBmcm9tIGEgVGV4dExheW91dCBhbmQgcmVuZGVyIHRoZW0sIG9yCisgICAgICAgICAgICAyLiBtYWtlIHVwIGEgY2FyZXQgb3Vyc2VsdmVzIGFuZCByZW5kZXIgaXQuCisgICAgICAgICAgICBXZSB3YW50IHRvIGRvIDIgd2hlbjoKKyAgICAgICAgICAgICAgICAqIHRoZXJlIGlzIG5vIHRleHQgb24gdGhlIGxpbmUsIG9yCisgICAgICAgICAgICAgICAgKiB0aGUgbGluZSBlbmRzIHdpdGggYSB0YWIgYW5kIHdlIGFyZSBkcmF3aW5nIHRoZSBsYXN0IGNhcmV0IG9uIHRoZSBsaW5lCisgICAgICAgICAgICBPdGhlcndpc2UsIHdlIHdhbnQgMS4KKyAgICAgICAgKi8KKworICAgICAgICBpZiAoc2VnbWVudEluZGV4ID09IHNlZ21lbnRDb3VudCAmJiBzZWdtZW50Q291bnQgPiAwKSB7CisgICAgICAgICAgICAvLyBJZiB3ZSBnZXQgaGVyZSwgbGluZSBsZW5ndGggaXMgbm90IDAsIGFuZCBjaGFyT2Zmc2V0IGlzIGF0IGVuZCBvZiBsaW5lCisgICAgICAgICAgICBpZiAoIWlzVGFiKHRleHQuYXQoY2hhck9mZnNldC0xKSkpIHsKKyAgICAgICAgICAgICAgICBzZWdtZW50SW5kZXggPSBzZWdtZW50Q291bnQtMTsKKyAgICAgICAgICAgICAgICBzZWdtZW50ID0gKEJpZGlTZWdtZW50KSBsaW5lLmZTZWdtZW50cy5lbGVtZW50QXQoc2VnbWVudEluZGV4KTsKKyAgICAgICAgICAgICAgICBjdXJyZW50U3RhcnQgPSBsaW5lU3RhcnQgKyBsaW5lLmdldENoYXJMZW5ndGgoKSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWdtZW50LmZMYXlvdXQuZ2V0Q2hhcmFjdGVyQ291bnQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIE9iamVjdCBzYXZlZFBhaW50ID0gR3JhcGhpY3MyRENvbnZlcnNpb24uZ2V0Q29sb3JTdGF0ZShnKTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgaWYgKHNlZ21lbnRJbmRleCA8IHNlZ21lbnRDb3VudCkgeworICAgICAgICAgICAgICAgIFRleHRMYXlvdXQgbGF5b3V0ID0gc2VnbWVudC5mTGF5b3V0OworICAgICAgICAgICAgICAgIGludCBvZmZzZXRJbkxheW91dCA9IGNoYXJPZmZzZXQgLSBjdXJyZW50U3RhcnQ7CisgICAgICAgICAgICAgICAgU2hhcGVbXSBjYXJldHMgPSBsYXlvdXQuZ2V0Q2FyZXRTaGFwZXMob2Zmc2V0SW5MYXlvdXQsIHNlZ21lbnQuZkJvdW5kcyk7CisgICAgICAgICAgICAgICAgZy5zZXRDb2xvcihzdHJvbmdDYXJldENvbG9yKTsKKyAgICAgICAgICAgICAgICBpbnQgbGF5b3V0UG9zID0gbGluZS5mTGVhZGluZ01hcmdpbiArIHNlZ21lbnQuZkRpc3RhbmNlRnJvbUxlYWRpbmdNYXJnaW47CisgICAgICAgICAgICAgICAgaW50IGxheW91dFggPSBsaW5lLmZMZWZ0VG9SaWdodD8KKyAgICAgICAgICAgICAgICAgICAgICAgIHggKyBsYXlvdXRQb3MgOiB4ICsgbGluZUJvdW5kIC0gbGF5b3V0UG9zOworICAgICAgICAgICAgICAgIGludCBsYXlvdXRZID0geSArIGxpbmUuZkFzY2VudDsKKworICAgICAgICAgICAgICAgIC8vIFRyYW5zbGF0aW5nIGFuZCB0aGVuIGNsaXBwaW5nIGRvZXNuJ3Qgd29yay4gIFRyeSB0aGlzOgorICAgICAgICAgICAgICAgIFJlY3RhbmdsZTJELkZsb2F0IGNsaXBSZWN0ID0gbmV3IFJlY3RhbmdsZTJELkZsb2F0KCk7CisgICAgICAgICAgICAgICAgY2xpcFJlY3Quc2V0UmVjdChzZWdtZW50LmZCb3VuZHMpOworICAgICAgICAgICAgICAgIGNsaXBSZWN0LnggKz0gbGF5b3V0WDsKKyAgICAgICAgICAgICAgICBjbGlwUmVjdC55ICs9IGxheW91dFk7CisgICAgICAgICAgICAgICAgY2xpcFJlY3Qud2lkdGggKz0gMTsKKyAgICAgICAgICAgICAgICBjbGlwUmVjdC5oZWlnaHQgLT0gMTsKKworICAgICAgICAgICAgICAgIE9iamVjdCBzYXZlZENsaXAgPSBDbGlwV29ya2Fyb3VuZC5zYXZlQ2xpcFN0YXRlKGcpOworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIENsaXBXb3JrYXJvdW5kLnRyYW5zbGF0ZUFuZERyYXdTaGFwZVdpdGhDbGlwKGcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0WCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXRZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaXBSZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmV0c1swXSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjYXJldHNbMV0gIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZy5zZXRDb2xvcih3ZWFrQ2FyZXRDb2xvcik7CisgICAgICAgICAgICAgICAgICAgICAgICBDbGlwV29ya2Fyb3VuZC50cmFuc2xhdGVBbmREcmF3U2hhcGVXaXRoQ2xpcChnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXRYLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXRZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwUmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZXRzWzFdKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmaW5hbGx5IHsKKyAgICAgICAgICAgICAgICAgICAgQ2xpcFdvcmthcm91bmQucmVzdG9yZUNsaXBTdGF0ZShnLCBzYXZlZENsaXApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGludCBsaW5lRW5kID0gbGluZS5mTGVhZGluZ01hcmdpbiArIGxpbmUuZlRvdGFsQWR2YW5jZTsKKyAgICAgICAgICAgICAgICBpbnQgZW5kWCA9IGxpbmUuZkxlZnRUb1JpZ2h0PyBsaW5lRW5kIDogbGluZUJvdW5kLWxpbmVFbmQ7CisgICAgICAgICAgICAgICAgZW5kWCArPSB4OworICAgICAgICAgICAgICAgIGcuZHJhd0xpbmUoZW5kWCwgeSwgZW5kWCwgeStsaW5lLmdldEhlaWdodCgpLTEpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGZpbmFsbHkgeworICAgICAgICAgICAgR3JhcGhpY3MyRENvbnZlcnNpb24ucmVzdG9yZUNvbG9yU3RhdGUoZywgc2F2ZWRQYWludCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIFJlY3RhbmdsZSBjYXJldEJvdW5kcyhCaWRpTGF5b3V0SW5mbyBsaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1Db25zdFRleHQgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuZ3RoQmFzaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVCb3VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2hhck9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgeSkgeworCisgICAgICAgIGZpbmFsIGludCBzZWdtZW50Q291bnQgPSBsaW5lLmZTZWdtZW50cy5zaXplKCk7CisgICAgICAgIGZpbmFsIGludCBsaW5lU3RhcnQgPSBsaW5lLmdldENoYXJTdGFydChsZW5ndGhCYXNpcyk7CisgICAgICAgIGludCBjdXJyZW50U3RhcnQgPSBsaW5lU3RhcnQ7CisgICAgICAgIEJpZGlTZWdtZW50IHNlZ21lbnQgPSBudWxsOworICAgICAgICBpbnQgc2VnbWVudEluZGV4OworCisgICAgICAgIGZvciAoc2VnbWVudEluZGV4PTA7IHNlZ21lbnRJbmRleCA8IHNlZ21lbnRDb3VudDsgc2VnbWVudEluZGV4KyspIHsKKyAgICAgICAgICAgIHNlZ21lbnQgPSAoQmlkaVNlZ21lbnQpIGxpbmUuZlNlZ21lbnRzLmVsZW1lbnRBdChzZWdtZW50SW5kZXgpOworICAgICAgICAgICAgaW50IGN1cnJlbnRFbmRwb2ludCA9IGN1cnJlbnRTdGFydCArIHNlZ21lbnQuZkxheW91dC5nZXRDaGFyYWN0ZXJDb3VudCgpOworICAgICAgICAgICAgaWYgKGN1cnJlbnRFbmRwb2ludCA+IGNoYXJPZmZzZXQpIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGN1cnJlbnRTdGFydCA9IGN1cnJlbnRFbmRwb2ludDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzZWdtZW50SW5kZXggPT0gc2VnbWVudENvdW50ICYmIHNlZ21lbnRDb3VudCA+IDApIHsKKyAgICAgICAgICAgIC8vIElmIHdlIGdldCBoZXJlLCBsaW5lIGxlbmd0aCBpcyBub3QgMCwgYW5kIGNoYXJPZmZzZXQgaXMgYXQgZW5kIG9mIGxpbmUKKyAgICAgICAgICAgIGlmICghaXNUYWIodGV4dC5hdChjaGFyT2Zmc2V0LTEpKSkgeworICAgICAgICAgICAgICAgIHNlZ21lbnRJbmRleCA9IHNlZ21lbnRDb3VudC0xOworICAgICAgICAgICAgICAgIHNlZ21lbnQgPSAoQmlkaVNlZ21lbnQpIGxpbmUuZlNlZ21lbnRzLmVsZW1lbnRBdChzZWdtZW50SW5kZXgpOworICAgICAgICAgICAgICAgIGN1cnJlbnRTdGFydCA9IGxpbmVTdGFydCArIGxpbmUuZ2V0Q2hhckxlbmd0aCgpIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZ21lbnQuZkxheW91dC5nZXRDaGFyYWN0ZXJDb3VudCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgUmVjdGFuZ2xlIHI7CisgICAgICAgIAorICAgICAgICBpZiAoc2VnbWVudEluZGV4IDwgc2VnbWVudENvdW50KSB7CisgICAgICAgICAgICBUZXh0TGF5b3V0IGxheW91dCA9IHNlZ21lbnQuZkxheW91dDsKKyAgICAgICAgICAgIGludCBvZmZzZXRJbkxheW91dCA9IGNoYXJPZmZzZXQgLSBjdXJyZW50U3RhcnQ7CisgICAgICAgICAgICBTaGFwZVtdIGNhcmV0cyA9IGxheW91dC5nZXRDYXJldFNoYXBlcyhvZmZzZXRJbkxheW91dCwgc2VnbWVudC5mQm91bmRzKTsKKyAgICAgICAgICAgIHIgPSBjYXJldHNbMF0uZ2V0Qm91bmRzKCk7CisgICAgICAgICAgICBpZiAoY2FyZXRzWzFdICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICByLmFkZChjYXJldHNbMV0uZ2V0Qm91bmRzKCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgci53aWR0aCArPSAxOworICAgICAgICAgICAgCisgICAgICAgICAgICBpbnQgbGF5b3V0UG9zID0gbGluZS5mTGVhZGluZ01hcmdpbiArIHNlZ21lbnQuZkRpc3RhbmNlRnJvbUxlYWRpbmdNYXJnaW47CisgICAgICAgICAgICBpZiAobGluZS5mTGVmdFRvUmlnaHQpIHsKKyAgICAgICAgICAgICAgICByLnggKz0gbGF5b3V0UG9zOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgci54ICs9IGxpbmVCb3VuZCAtIGxheW91dFBvczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHIueSArPSBsaW5lLmZBc2NlbnQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByID0gbmV3IFJlY3RhbmdsZSgpOworICAgICAgICAgICAgci5oZWlnaHQgPSBsaW5lLmdldEhlaWdodCgpOworICAgICAgICAgICAgci53aWR0aCA9IDE7CisgICAgICAgICAgICBpbnQgbGluZUVuZCA9IGxpbmUuZkxlYWRpbmdNYXJnaW4gKyBsaW5lLmZUb3RhbEFkdmFuY2U7CisgICAgICAgICAgICBpZiAobGluZS5mTGVmdFRvUmlnaHQpIHsKKyAgICAgICAgICAgICAgICByLnggPSBsaW5lRW5kOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgci54ID0gbGluZUJvdW5kIC0gbGluZUVuZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgci50cmFuc2xhdGUoeCwgeSk7CisgICAgICAgIHJldHVybiByOworICAgIH0KKworICAgIHByaXZhdGUgaW50IHN0cm9uZ0NhcmV0QmFzZWxpbmVQb3NpdGlvbihCaWRpTGF5b3V0SW5mbyBsaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuZ3RoQmFzaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lQm91bmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjaGFyT2Zmc2V0KSB7CisKKyAgICAgICAgZmluYWwgaW50IHNlZ21lbnRDb3VudCA9IGxpbmUuZlNlZ21lbnRzLnNpemUoKTsKKyAgICAgICAgaW50IGN1cnJlbnRTdGFydCA9IGxpbmUuZ2V0Q2hhclN0YXJ0KGxlbmd0aEJhc2lzKTsKKyAgICAgICAgQmlkaVNlZ21lbnQgc2VnbWVudCA9IG51bGw7CisgICAgICAgIGludCBzZWdtZW50SW5kZXg7CisKKyAgICAgICAgZm9yIChzZWdtZW50SW5kZXg9MDsgc2VnbWVudEluZGV4IDwgc2VnbWVudENvdW50OyBzZWdtZW50SW5kZXgrKykgeworICAgICAgICAgICAgc2VnbWVudCA9IChCaWRpU2VnbWVudCkgbGluZS5mU2VnbWVudHMuZWxlbWVudEF0KHNlZ21lbnRJbmRleCk7CisgICAgICAgICAgICBpbnQgY3VycmVudEVuZHBvaW50ID0gY3VycmVudFN0YXJ0ICsgc2VnbWVudC5mTGF5b3V0LmdldENoYXJhY3RlckNvdW50KCk7CisgICAgICAgICAgICBpZiAoY3VycmVudEVuZHBvaW50ID4gY2hhck9mZnNldCkgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY3VycmVudFN0YXJ0ID0gY3VycmVudEVuZHBvaW50OworICAgICAgICB9CisKKyAgICAgICAgaWYgKHNlZ21lbnRJbmRleCA8IHNlZ21lbnRDb3VudCkgeworICAgICAgICAgICAgVGV4dExheW91dCBsYXlvdXQgPSBzZWdtZW50LmZMYXlvdXQ7CisgICAgICAgICAgICBpbnQgb2Zmc2V0SW5MYXlvdXQgPSBjaGFyT2Zmc2V0IC0gY3VycmVudFN0YXJ0OworICAgICAgICAgICAgVGV4dEhpdEluZm8gaGl0ID0gVGV4dEhpdEluZm8uYWZ0ZXJPZmZzZXQob2Zmc2V0SW5MYXlvdXQpOworICAgICAgICAgICAgaGl0ID0gbGF5b3V0LkRFRkFVTFRfQ0FSRVRfUE9MSUNZLmdldFN0cm9uZ0NhcmV0KGhpdCwgaGl0LmdldE90aGVySGl0KCksIGxheW91dCk7CisgICAgICAgICAgICBmbG9hdFtdIGluZm8gPSBsYXlvdXQuZ2V0Q2FyZXRJbmZvKGhpdCk7CisgICAgICAgICAgICBpbnQgbGF5b3V0UG9zID0gbGluZS5mTGVhZGluZ01hcmdpbiArIHNlZ21lbnQuZkRpc3RhbmNlRnJvbUxlYWRpbmdNYXJnaW47CisgICAgICAgICAgICBpZiAobGluZS5mTGVmdFRvUmlnaHQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbGF5b3V0UG9zICsgKGludCkgaW5mb1swXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiBsaW5lQm91bmQgLSBsYXlvdXRQb3MgKyAoaW50KSBpbmZvWzBdOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaW50IGxpbmVFbmQgPSBsaW5lLmZMZWFkaW5nTWFyZ2luICsgbGluZS5mVG90YWxBZHZhbmNlOworICAgICAgICAgICAgaWYgKGxpbmUuZkxlZnRUb1JpZ2h0KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGxpbmVFbmQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbGluZUJvdW5kIC0gbGluZUVuZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgaW50IGdldE5leHRPZmZzZXQoQmlkaUxheW91dEluZm8gbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZW5ndGhCYXNpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjaGFyT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnQgZGlyKSB7CisKKyAgICAgICAgaWYgKGRpciAhPSBNRm9ybWF0dGVyLmVMZWZ0ICYmIGRpciAhPSBNRm9ybWF0dGVyLmVSaWdodCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBkaXJlY3Rpb24uIik7CisgICAgICAgIH0KKworICAgICAgICAvLyBmaW5kIHNlZ21lbnQgY29udGFpbmluZyBvZmZzZXQ6CisgICAgICAgIGZpbmFsIGludCBzZWdtZW50Q291bnQgPSBsaW5lLmZTZWdtZW50cy5zaXplKCk7CisgICAgICAgIGZpbmFsIGludCBsaW5lQ2hhclN0YXJ0ID0gbGluZS5nZXRDaGFyU3RhcnQobGVuZ3RoQmFzaXMpOworCisgICAgICAgIGludCBjdXJyZW50U3RhcnQgPSBsaW5lQ2hhclN0YXJ0OworICAgICAgICBCaWRpU2VnbWVudCBzZWdtZW50ID0gbnVsbDsKKyAgICAgICAgaW50IHNlZ21lbnRJbmRleDsKKworICAgICAgICBmb3IgKHNlZ21lbnRJbmRleD0wOyBzZWdtZW50SW5kZXggPCBzZWdtZW50Q291bnQ7IHNlZ21lbnRJbmRleCsrKSB7CisgICAgICAgICAgICBzZWdtZW50ID0gKEJpZGlTZWdtZW50KSBsaW5lLmZTZWdtZW50cy5lbGVtZW50QXQoc2VnbWVudEluZGV4KTsKKyAgICAgICAgICAgIGludCBjdXJyZW50RW5kcG9pbnQgPSBjdXJyZW50U3RhcnQgKyBzZWdtZW50LmZMYXlvdXQuZ2V0Q2hhcmFjdGVyQ291bnQoKTsKKyAgICAgICAgICAgIGlmIChjdXJyZW50RW5kcG9pbnQgPiBjaGFyT2Zmc2V0IHx8CisgICAgICAgICAgICAgICAgICAgIChzZWdtZW50SW5kZXggPT0gc2VnbWVudENvdW50LTEgJiYgY3VycmVudEVuZHBvaW50PT1jaGFyT2Zmc2V0KSkgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY3VycmVudFN0YXJ0ID0gY3VycmVudEVuZHBvaW50OworICAgICAgICB9CisKKyAgICAgICAgZmluYWwgYm9vbGVhbiBsb2dBZHZhbmNlID0gKGRpcj09TUZvcm1hdHRlci5lUmlnaHQpPT0obGluZS5mTGVmdFRvUmlnaHQpOworCisgICAgICAgIGludCByZXN1bHQ7CisKKyAgICAgICAgaWYgKHNlZ21lbnRJbmRleCA8IHNlZ21lbnRDb3VudCkgeworICAgICAgICAgICAgVGV4dExheW91dCBsYXlvdXQgPSBzZWdtZW50LmZMYXlvdXQ7CisgICAgICAgICAgICBpbnQgb2Zmc2V0SW5MYXlvdXQgPSBjaGFyT2Zmc2V0IC0gY3VycmVudFN0YXJ0OworICAgICAgICAgICAgVGV4dEhpdEluZm8gaGl0ID0gKGRpcj09TUZvcm1hdHRlci5lTGVmdCk/CisgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXQuZ2V0TmV4dExlZnRIaXQob2Zmc2V0SW5MYXlvdXQpIDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dC5nZXROZXh0UmlnaHRIaXQob2Zmc2V0SW5MYXlvdXQpOworICAgICAgICAgICAgaWYgKGhpdCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbG9nQWR2YW5jZT8KKyAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0YXJ0K2xheW91dC5nZXRDaGFyYWN0ZXJDb3VudCgpKzEgOiBjdXJyZW50U3RhcnQtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGhpdC5nZXRJbnNlcnRpb25JbmRleCgpICsgY3VycmVudFN0YXJ0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmVzdWx0ID0gbG9nQWR2YW5jZT8gbGluZUNoYXJTdGFydCArIGxpbmUuZkNoYXJMZW5ndGggKyAxIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZUNoYXJTdGFydCAtIDE7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0Zm9ybWF0L0NsaXBXb3JrYXJvdW5kLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0Zm9ybWF0L0NsaXBXb3JrYXJvdW5kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOWQwYTAzOQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRmb3JtYXQvQ2xpcFdvcmthcm91bmQuamF2YQpAQCAtMCwwICsxLDE0MiBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogQ2xpcFdvcmthcm91bmQuamF2YSx2ICQgJFJldmlzaW9uOiAxLjIgJCAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNjo0MiAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworLy8gUmVxdWlyZXMgSmF2YTIKKworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRleHRmb3JtYXQ7CisKK2ltcG9ydCBqYXZhLmF3dC5TaGFwZTsKKy8vLypKREsxMklNUE9SVFMKK2ltcG9ydCBqYXZhLmF3dC5HcmFwaGljczJEOworaW1wb3J0IGphdmEuYXd0Lmdlb20uUmVjdGFuZ2xlMkQ7CitpbXBvcnQgamF2YS5hd3QuZ2VvbS5QYXRoSXRlcmF0b3I7CitpbXBvcnQgamF2YS5hd3QuZ2VvbS5MaW5lMkQ7CisvL0pESzEySU1QT1JUUyovCisvKkpESzExSU1QT1JUUworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5HcmFwaGljczJEOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5SZWN0YW5nbGUyRDsKK0pESzExSU1QT1JUUyovCisKKy8qKgorICogVGhpcyBjbGFzcyBleGlzdHMgdG8gd29yayBhcm91bmQgYSBjbGlwcGluZyBidWcgaW4gSkRLIDEuMi4KKyAqLworZmluYWwgY2xhc3MgQ2xpcFdvcmthcm91bmQgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKy8vLypKREsxMklNUE9SVFMKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgZXhjdXNlID0KKyAgICAgICAgIlNvcnJ5LCB0aGlzIG1ldGhvZCBpcyBhIHZlcnkgbGltaXRlZCB3b3JrYXJvdW5kIGZvciBhIEpESyAxLjIgYnVnLiI7CisvL0pESzEySU1QT1JUUyovCisgICAgCisgICAgc3RhdGljIE9iamVjdCBzYXZlQ2xpcFN0YXRlKEdyYXBoaWNzMkQgZykgeworLy8vKkpESzEySU1QT1JUUworICAgICAgICByZXR1cm4gbnVsbDsKKy8vSkRLMTJJTVBPUlRTKi8KKy8qSkRLMTFJTVBPUlRTCisgICAgICAgIHJldHVybiBnLmdldENsaXAoKTsKK0pESzExSU1QT1JUUyovCisgICAgfQorICAgIAorICAgIHN0YXRpYyB2b2lkIHJlc3RvcmVDbGlwU3RhdGUoR3JhcGhpY3MyRCBnLCBPYmplY3Qgc3RhdGUpIHsKKy8vLypKREsxMklNUE9SVFMKKyAgICAgICAgaWYgKHN0YXRlICE9IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiSW52YWxpZCBjbGlwIHN0YXRlIGZvciB0aGlzIGNsYXNzLiIpOworICAgICAgICB9CisvL0pESzEySU1QT1JUUyovCisvKkpESzExSU1QT1JUUworICAgICAgICBnLnNldENsaXAoKFNoYXBlKXN0YXRlKTsKK0pESzExSU1QT1JUUyovCisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIERyYXcgdGhlIGdpdmVuIFNoYXBlIGludG8gdGhlIEdyYXBoaWNzLCB0cmFuc2xhdGVkIGJ5IChkeCwgZHkpCisgICAgICogYW5kIGNsaXBwZWQgdG8gY2xpcFJlY3QuCisgICAgICovCisgICAgc3RhdGljIHZvaWQgdHJhbnNsYXRlQW5kRHJhd1NoYXBlV2l0aENsaXAoR3JhcGhpY3MyRCBnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVjdGFuZ2xlMkQgY2xpcFJlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhcGUgc2hhcGUpIHsKKy8vLypKREsxMklNUE9SVFMKKyAgICAgICAgLy8gcmVhbGx5IGJvZ3VzIGltcGxlbWVudGF0aW9uIHJpZ2h0IG5vdzogIGJhc2ljYWxseSBvbmx5CisgICAgICAgIC8vIGRyYXdzIGNhcmV0cyBmcm9tIGEgVGV4dExheW91dC4KKyAgICAgICAgLy8gT2ggeWVhaCwgaXQgZG9lc24ndCByZWFsbHkgY2xpcCBjb3JyZWN0bHkgZWl0aGVyLi4uCisKKyAgICAgICAgUGF0aEl0ZXJhdG9yIHBhdGhJdGVyID0gc2hhcGUuZ2V0UGF0aEl0ZXJhdG9yKG51bGwpOworICAgICAgICBmbG9hdFtdIHBvaW50cyA9IG5ldyBmbG9hdFs2XTsKKworICAgICAgICBpbnQgdHlwZSA9IHBhdGhJdGVyLmN1cnJlbnRTZWdtZW50KHBvaW50cyk7CisgICAgICAgIGlmICh0eXBlICE9IFBhdGhJdGVyYXRvci5TRUdfTU9WRVRPKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXhjdXNlKTsKKyAgICAgICAgfQorICAgICAgICBmbG9hdCB4MSA9IHBvaW50c1swXSArIGR4OworICAgICAgICBmbG9hdCB5MSA9IHBvaW50c1sxXSArIGR5OworCisgICAgICAgIGlmIChwYXRoSXRlci5pc0RvbmUoKSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGV4Y3VzZSk7CisgICAgICAgIH0KKworICAgICAgICBwYXRoSXRlci5uZXh0KCk7CisgICAgICAgIHR5cGUgPSBwYXRoSXRlci5jdXJyZW50U2VnbWVudChwb2ludHMpOworICAgICAgICBpZiAodHlwZSAhPSBQYXRoSXRlcmF0b3IuU0VHX0xJTkVUTykgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGV4Y3VzZSk7CisgICAgICAgIH0KKyAgICAgICAgZmxvYXQgeDIgPSBwb2ludHNbMF0gKyBkeDsKKyAgICAgICAgZmxvYXQgeTIgPSBwb2ludHNbMV0gKyBkeTsKKworICAgICAgICBmbG9hdCBtaW5ZID0gKGZsb2F0KSBjbGlwUmVjdC5nZXRZKCk7CisgICAgICAgIGZsb2F0IG1heFkgPSAoZmxvYXQpIGNsaXBSZWN0LmdldE1heFkoKTsKKworICAgICAgICAvLyBOb3cgY2xpcCB3aXRoaW4gdmVydGljYWwgbGltaXRzIGluIGNsaXBSZWN0CisgICAgICAgIGlmICh5MSA9PSB5MikgeworICAgICAgICAgICAgaWYgKHkxIDwgbWluWSB8fCB5MSA+PSBtYXhZKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKHkxID4geTIpIHsKKyAgICAgICAgICAgICAgICBmbG9hdCB0ID0geDE7CisgICAgICAgICAgICAgICAgeDEgPSB4MjsKKyAgICAgICAgICAgICAgICB4MiA9IHQ7CisgICAgICAgICAgICAgICAgdCA9IHkxOworICAgICAgICAgICAgICAgIHkxID0geTI7CisgICAgICAgICAgICAgICAgeTIgPSB0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmbG9hdCBpbnZTbG9wZSA9ICh4Mi14MSkgLyAoeTIteTEpOworICAgICAgICAgICAgaWYgKHkxIDwgbWluWSkgeworICAgICAgICAgICAgICAgIHgxIC09IChtaW5ZLXkxKSAqIGludlNsb3BlOworICAgICAgICAgICAgICAgIHkxID0gbWluWTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh5MiA+PSBtYXhZKSB7CisgICAgICAgICAgICAgICAgeDEgKz0gKHkyLW1heFkpICogaW52U2xvcGU7CisgICAgICAgICAgICAgICAgeTIgPSBtYXhZOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZy5kcmF3KG5ldyBMaW5lMkQuRmxvYXQoeDEsIHkxLCB4MiwgeTIpKTsKKy8vSkRLMTJJTVBPUlRTKi8KKy8qSkRLMTFJTVBPUlRTCisgICAgICAgIGcuc2V0Q2xpcChjbGlwUmVjdCk7CisgICAgICAgIGcudHJhbnNsYXRlKGR4LCBkeSk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBnLmRyYXcoc2hhcGUpOworICAgICAgICB9CisgICAgICAgIGZpbmFsbHkgeworICAgICAgICAgICAgZy50cmFuc2xhdGUoLWR4LCAtZHkpOworICAgICAgICB9CitKREsxMUlNUE9SVFMqLworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRmb3JtYXQvRGVmYXVsdENoYXJhY3Rlck1ldHJpYy5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dGZvcm1hdC9EZWZhdWx0Q2hhcmFjdGVyTWV0cmljLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNWNkYjE4MQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRmb3JtYXQvRGVmYXVsdENoYXJhY3Rlck1ldHJpYy5qYXZhCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IERlZmF1bHRDaGFyYWN0ZXJNZXRyaWMuamF2YSx2ICQgJFJldmlzaW9uOiAxLjIgJCAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNjo0MyAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworLy8gUmVxdWlyZXMgSmF2YTIKK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0Zm9ybWF0OworCitpbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZU1hcDsKKworLy8vKkpESzEySU1QT1JUUworaW1wb3J0IGphdmEuYXd0LmZvbnQuRm9udFJlbmRlckNvbnRleHQ7CitpbXBvcnQgamF2YS5hd3QuZm9udC5UZXh0TGF5b3V0OworLy9KREsxMklNUE9SVFMqLworCisvKkpESzExSU1QT1JUUworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5Gb250UmVuZGVyQ29udGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRsYXlvdXQuVGV4dExheW91dDsKK0pESzExSU1QT1JUUyovCisKKy8qKgorICogVGhpcyBjbGFzcyBpcyB1c2VkIGJ5IHRoZSBGb3JtYXR0ZXIgdG8gZXN0aW1hdGUgdGhlIGhlaWdodAorICogb2YgY2hhcmFjdGVycyBpbiBhIHBhcnRpY3VsYXIgc3R5bGUuCisgKi8KK2ZpbmFsIGNsYXNzIERlZmF1bHRDaGFyYWN0ZXJNZXRyaWMgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICAKKyAgICBmaW5hbCBjbGFzcyBNZXRyaWMgeworICAgIAorICAgICAgICBwcml2YXRlIGZsb2F0IGZBc2NlbnQ7CisgICAgICAgIHByaXZhdGUgZmxvYXQgZkRlc2NlbnQ7CisgICAgICAgIHByaXZhdGUgZmxvYXQgZkxlYWRpbmc7CisgICAgCisgICAgICAgIHByaXZhdGUgTWV0cmljKGZsb2F0IGFzY2VudCwgZmxvYXQgZGVzY2VudCwgZmxvYXQgbGVhZGluZykgeworICAgIAorICAgICAgICAgICAgZkFzY2VudCA9IGFzY2VudDsKKyAgICAgICAgICAgIGZEZXNjZW50ID0gZGVzY2VudDsKKyAgICAgICAgICAgIGZMZWFkaW5nID0gbGVhZGluZzsKKyAgICAgICAgfQorICAgIAorICAgICAgICBwdWJsaWMgaW50IGdldEFzY2VudCgpIHsKKyAgICAgICAgICAgIHJldHVybiAoaW50KSBNYXRoLmNlaWwoZkFzY2VudCk7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgcHVibGljIGludCBnZXREZXNjZW50KCkgeworICAgICAgICAgICAgcmV0dXJuIChpbnQpIE1hdGguY2VpbChmRGVzY2VudCk7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgcHVibGljIGludCBnZXRMZWFkaW5nKCkgeworICAgICAgICAgICAgcmV0dXJuIChpbnQpIE1hdGguY2VpbChmTGVhZGluZyk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBmaW5hbCBIYXNodGFibGUgZkNhY2hlID0gbmV3IEhhc2h0YWJsZSgpOworICAgIHByaXZhdGUgLypmaW5hbCovIEZvbnRSZXNvbHZlciBmUmVzb2x2ZXI7CisgICAgcHJpdmF0ZSAvKmZpbmFsKi8gRm9udFJlbmRlckNvbnRleHQgZkZyYzsKKyAgICAKKyAgICBwdWJsaWMgRGVmYXVsdENoYXJhY3Rlck1ldHJpYyhGb250UmVzb2x2ZXIgcmVzb2x2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9udFJlbmRlckNvbnRleHQgZnJjKSB7CisgICAgCisgICAgICAgIGZSZXNvbHZlciA9IHJlc29sdmVyOworICAgICAgICBmRnJjID0gZnJjOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBHZXQgYSBEZWZhdWx0Q2hhcmFjdGVyTWV0cmljIGluc3RhbmNlIGZvciB0aGUgZ2l2ZW4gc3R5bGUuICBUaGUKKyAgICAgKiBzdHlsZSBpcyBmaXJzdCByZXNvbHZlZCB3aXRoIEZvbnRSZXNvbHZlci4KKyAgICAgKi8KKyAgICBwdWJsaWMgTWV0cmljIGdldE1ldHJpY0ZvclN0eWxlKEF0dHJpYnV0ZU1hcCBzdHlsZSkgeworCisgICAgICAgIHN0eWxlID0gZlJlc29sdmVyLmFwcGx5Rm9udChzdHlsZSk7CisgICAgICAgIE1ldHJpYyBtZXRyaWMgPSAoTWV0cmljKSBmQ2FjaGUuZ2V0KHN0eWxlKTsKKyAgICAgICAgaWYgKG1ldHJpYyA9PSBudWxsKSB7CisgICAgICAgICAgICBUZXh0TGF5b3V0IGxheW91dCA9IG5ldyBUZXh0TGF5b3V0KCIgIiwgc3R5bGUsIGZGcmMpOworICAgICAgICAgICAgbWV0cmljID0gbmV3IE1ldHJpYyhsYXlvdXQuZ2V0QXNjZW50KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dC5nZXREZXNjZW50KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dC5nZXRMZWFkaW5nKCkpOworICAgICAgICAgICAgZkNhY2hlLnB1dChzdHlsZSwgbWV0cmljKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbWV0cmljOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0Zm9ybWF0L0ZvbnRSZXNvbHZlci5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dGZvcm1hdC9Gb250UmVzb2x2ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wNWI5MzI5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dGZvcm1hdC9Gb250UmVzb2x2ZXIuamF2YQpAQCAtMCwwICsxLDg1IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBGb250UmVzb2x2ZXIuamF2YSx2ICQgJFJldmlzaW9uOiAxLjIgJCAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNjo0MyAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworLy8gUmVxdWlyZXMgSmF2YTIKK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0Zm9ybWF0OworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlTWFwOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5hdHRyaWJ1dGVzLlRleHRBdHRyaWJ1dGU7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRsYXlvdXQuRm9udFV0aWxzOworCitpbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKK2ltcG9ydCBqYXZhLmF3dC5Gb250OworCitmaW5hbCBjbGFzcyBGb250UmVzb2x2ZXIgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKworICAgIHN0YXRpYyB7CisvLyBFdmVuIHRob3VnaCBpdCB2aW9sYXRlcyB0aGUgUHJpbWUgRGlyZWN0aXZlIEknbGwgY29uZGl0aW9uYWxpemUKKy8vIHRoaXMgYW55d2F5LCBzaW5jZSBpdCBpcyBqdXN0IGEgMS4yIHdvcmthcm91bmQgd2hpY2ggSSBncmVhdGx5CisvLyByZXNlbnQuCisvLy8qSkRLMTJJTVBPUlRTCisgICAgICAgIGphdmEuYXd0LkdyYXBoaWNzRW52aXJvbm1lbnQuZ2V0TG9jYWxHcmFwaGljc0Vudmlyb25tZW50KCkuZ2V0QWxsRm9udHMoKTsKKy8vSkRLMTJJTVBPUlRTKi8KKyAgICB9CisKKyAgICBwcml2YXRlIEhhc2h0YWJsZSBzdHlsZU1hcDsKKyAgICBwcml2YXRlIGZpbmFsIEF0dHJpYnV0ZU1hcCBmRGVmYXVsdEZvbnRNYXA7CisKKyAgICBwdWJsaWMgRm9udFJlc29sdmVyKEF0dHJpYnV0ZU1hcCBkZWZhdWx0cykgeworCisgICAgICAgIHN0eWxlTWFwID0gbmV3IEhhc2h0YWJsZSgpOworICAgICAgICBIYXNodGFibGUgdGVtcE1hcCA9IG5ldyBIYXNodGFibGUoKTsKKyAgICAgICAgdGVtcE1hcC5wdXQoVGV4dEF0dHJpYnV0ZS5GQU1JTFksIGRlZmF1bHRzLmdldChUZXh0QXR0cmlidXRlLkZBTUlMWSkpOworICAgICAgICB0ZW1wTWFwLnB1dChUZXh0QXR0cmlidXRlLldFSUdIVCwgZGVmYXVsdHMuZ2V0KFRleHRBdHRyaWJ1dGUuV0VJR0hUKSk7CisgICAgICAgIHRlbXBNYXAucHV0KFRleHRBdHRyaWJ1dGUuUE9TVFVSRSwgZGVmYXVsdHMuZ2V0KFRleHRBdHRyaWJ1dGUuUE9TVFVSRSkpOworICAgICAgICB0ZW1wTWFwLnB1dChUZXh0QXR0cmlidXRlLlNJWkUsIGRlZmF1bHRzLmdldChUZXh0QXR0cmlidXRlLlNJWkUpKTsKKyAgICAgICAgZkRlZmF1bHRGb250TWFwID0gbmV3IEF0dHJpYnV0ZU1hcCh0ZW1wTWFwKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBGZXRjaCByZXN1bHQgb2YgcmVzb2x2ZShzdHlsZSkgZnJvbSBjYWNoZSwgaWYgcHJlc2VudC4KKyAgICAgKi8KKyAgICBwdWJsaWMgQXR0cmlidXRlTWFwIGFwcGx5Rm9udChBdHRyaWJ1dGVNYXAgc3R5bGUpIHsKKworICAgICAgICBPYmplY3QgY2FjaGVkTWFwID0gc3R5bGVNYXAuZ2V0KHN0eWxlKTsKKworICAgICAgICBpZiAoY2FjaGVkTWFwID09IG51bGwpIHsKKyAgICAgICAgICAgIEF0dHJpYnV0ZU1hcCByZXNvbHZlZE1hcCA9IHJlc29sdmUoc3R5bGUpOworICAgICAgICAgICAgc3R5bGVNYXAucHV0KHN0eWxlLCByZXNvbHZlZE1hcCk7CisgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZWRNYXA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gKEF0dHJpYnV0ZU1hcCkgY2FjaGVkTWFwOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGFuIEF0dHJpYnV0ZU1hcCBjb250YWluaW5nIGEgRm9udCBjb21wdXRlZCBmcm9tIHRoZQorICAgICAqIGF0dHJpYnV0ZXMgaW4gPHR0PnN0eWxlPC90dD4uCisgICAgICovCisgICAgcHVibGljIEF0dHJpYnV0ZU1hcCByZXNvbHZlKEF0dHJpYnV0ZU1hcCBzdHlsZSkgeworCisgICAgICAgIGlmIChzdHlsZS5nZXQoVGV4dEF0dHJpYnV0ZS5GT05UKSAhPSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gc3R5bGU7CisgICAgICAgIH0KKworICAgICAgICBGb250IGZvbnQgPSBGb250VXRpbHMuZ2V0Rm9udChmRGVmYXVsdEZvbnRNYXAuYWRkQXR0cmlidXRlcyhzdHlsZSkpOworCisgICAgICAgIHJldHVybiBzdHlsZS5hZGRBdHRyaWJ1dGUoVGV4dEF0dHJpYnV0ZS5GT05ULCBmb250KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0Zm9ybWF0L0xheW91dEluZm8uamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRmb3JtYXQvTGF5b3V0SW5mby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjE4NjgzZDEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0Zm9ybWF0L0xheW91dEluZm8uamF2YQpAQCAtMCwwICsxLDE5OSBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogTGF5b3V0SW5mby5qYXZhLHYgJCAkUmV2aXNpb246IDEuMiAkICREYXRlOiAyMDAyLzAyLzE2IDAzOjA2OjQzICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCisvLyBSZXF1aXJlcyBKYXZhMgorLyoqIExheW91dEluZm8KKworICAgIEEgbGluZSBvZiB0ZXh0LCBwb3NzaWJseSBjb250YWluaW5nIHRhYi1zZWdtZW50cy4KKyovCisKK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0Zm9ybWF0OworCitpbXBvcnQgamF2YS5hd3QuQ29sb3I7CitpbXBvcnQgamF2YS5hd3QuUmVjdGFuZ2xlOworCisvLy8qSkRLMTJJTVBPUlRTCitpbXBvcnQgamF2YS5hd3QuR3JhcGhpY3MyRDsKKy8vSkRLMTJJTVBPUlRTKi8KKworLypKREsxMUlNUE9SVFMKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRsYXlvdXQuR3JhcGhpY3MyRDsKK0pESzExSU1QT1JUUyovCisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuTUNvbnN0VGV4dDsKKworYWJzdHJhY3QgY2xhc3MgTGF5b3V0SW5mbworeworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHJpdmF0ZSBpbnQgZkNoYXJTdGFydDsgICAgICAgLy8gb2Zmc2V0IGluIHRleHQgdG8gc3RhcnQgb2YgbGluZSAod2FzIGZTdGFydCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBuZWcuIHZhbHVlcyBpbmRpY2F0ZSBkaXN0YW5jZSBmcm9tIGVuZCBvZiB0ZXh0CisgICAgcHJpdmF0ZSBpbnQgZkdyYXBoaWNTdGFydDsgICAgLy8gbWluIHBpeGVsIG9mZnNldCBpbiBmaWxsIGRpcmVjdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5lZ2F0aXZlIHZhbHVlcyBpbmRpY2F0ZSBkaXN0YW5jZSBmcm9tIGJvdHRvbSBvZiB0ZXh0IHZpZXcKKworICAgIC8qCisgICAgICAgIFRoZXNlIG1ldGhvZHMgYXJlIGZvciBzdG9yaW5nIExheW91dHMgaW4gYSBnYXAtc3RvcmFnZSwKKyAgICAgICAgcmVsYXRpdmUgdG8gZWl0aGVyIHRoZSBzdGFydCBvZiBlbmQgb2YgdGV4dC4gIFNlZSBBc3luY0Zvcm1hdHRlci4KKworICAgICAgICBJZiB5b3UganVzdCB3YW50IGFic29sdXRlICh0aGF0IGlzLCBzdGFydC1yZWxhdGl2ZSkgY2hhciBhbmQKKyAgICAgICAgZ3JhcGhpYyBzdGFydHMsIGRvbid0IG1ha2UgdGhlbSBlbmQtcmVsYXRpdmUuCisgICAgKi8KKworICAgIHB1YmxpYyBmaW5hbCBpbnQgZ2V0Q2hhclN0YXJ0KGludCBsZW5ndGhCYXNpcykgeworCisgICAgICAgIGlmIChmQ2hhclN0YXJ0ID49IDApIHsKKyAgICAgICAgICAgIHJldHVybiBmQ2hhclN0YXJ0OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGxlbmd0aEJhc2lzICsgZkNoYXJTdGFydDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBmaW5hbCBpbnQgZ2V0R3JhcGhpY1N0YXJ0KGludCBncmFwaGljQmFzaXMpIHsKKworICAgICAgICBpZiAoZkdyYXBoaWNTdGFydCA+PSAwKSB7CisgICAgICAgICAgICByZXR1cm4gZkdyYXBoaWNTdGFydDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBncmFwaGljQmFzaXMgKyBmR3JhcGhpY1N0YXJ0OworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIGZpbmFsIHZvaWQgc2V0Q2hhclN0YXJ0KGludCBiZWdpbm5pbmdSZWxhdGl2ZVN0YXJ0KSB7CisKKyAgICAgICAgaWYgKGJlZ2lubmluZ1JlbGF0aXZlU3RhcnQgPCAwKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJjaGFyU3RhcnQgbXVzdCBiZSBub25uZWdhdml0dmUiKTsKKyAgICAgICAgfQorICAgICAgICBmQ2hhclN0YXJ0ID0gYmVnaW5uaW5nUmVsYXRpdmVTdGFydDsKKyAgICB9CisKKyAgICBwdWJsaWMgZmluYWwgdm9pZCBzZXRHcmFwaGljU3RhcnQoaW50IGJlZ2lubmluZ1JlbGF0aXZlU3RhcnQpIHsKKworICAgICAgICBpZiAoYmVnaW5uaW5nUmVsYXRpdmVTdGFydCA8IDApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImNoYXJTdGFydCBtdXN0IGJlIG5vbm5lZ2F2aXR2ZSIpOworICAgICAgICB9CisgICAgICAgIGZHcmFwaGljU3RhcnQgPSBiZWdpbm5pbmdSZWxhdGl2ZVN0YXJ0OworICAgIH0KKworICAgIHB1YmxpYyBmaW5hbCB2b2lkIG1ha2VSZWxhdGl2ZVRvQmVnaW5uaW5nKGludCBsZW5ndGhCYXNpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZ3JhcGhpY0Jhc2lzKSB7CisKKyAgICAgICAgaWYgKGxlbmd0aEJhc2lzIDwgMCB8fCBncmFwaGljQmFzaXMgPCAwKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJCYXNlcyBtdXN0IGJlIHBvc2l0aXZlLiIpOworICAgICAgICB9CisgICAgICAgIGlmIChmQ2hhclN0YXJ0ID49IDAgfHwgZkdyYXBoaWNTdGFydCA+PSAwKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkFscmVhZHkgc3RhcnQtcmVsYXRpdmUuIik7CisgICAgICAgIH0KKworICAgICAgICBmQ2hhclN0YXJ0ICs9IGxlbmd0aEJhc2lzOworICAgICAgICBmR3JhcGhpY1N0YXJ0ICs9IGdyYXBoaWNCYXNpczsKKyAgICB9CisKKyAgICBwdWJsaWMgZmluYWwgdm9pZCBtYWtlUmVsYXRpdmVUb0VuZChpbnQgbGVuZ3RoQmFzaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGdyYXBoaWNCYXNpcykgeworCisgICAgICAgIGlmIChsZW5ndGhCYXNpcyA8IDAgfHwgZ3JhcGhpY0Jhc2lzIDwgMCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiQmFzZXMgbXVzdCBiZSBwb3NpdGl2ZS4iKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZkNoYXJTdGFydCA8IDAgfHwgZkdyYXBoaWNTdGFydCA8IDApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQWxyZWFkeSBlbmQtcmVsYXRpdmUuIik7CisgICAgICAgIH0KKworICAgICAgICBmQ2hhclN0YXJ0IC09IGxlbmd0aEJhc2lzOworICAgICAgICBmR3JhcGhpY1N0YXJ0IC09IGdyYXBoaWNCYXNpczsKKyAgICB9CisKKworICAgIHB1YmxpYyBhYnN0cmFjdCBpbnQgZ2V0Q2hhckxlbmd0aCgpOworICAgIHB1YmxpYyBhYnN0cmFjdCBpbnQgZ2V0QXNjZW50KCk7CisgICAgcHVibGljIGFic3RyYWN0IGludCBnZXREZXNjZW50KCk7CisgICAgcHVibGljIGFic3RyYWN0IGludCBnZXRMZWFkaW5nKCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgaW50IGdldFZpc2libGVBZHZhbmNlKCk7CisgICAgcHVibGljIGFic3RyYWN0IGludCBnZXRUb3RhbEFkdmFuY2UoKTsKKyAgICBwdWJsaWMgYWJzdHJhY3QgaW50IGdldExlYWRpbmdNYXJnaW4oKTsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBib29sZWFuIGlzTGVmdFRvUmlnaHQoKTsKKworICAgIHB1YmxpYyBpbnQgZ2V0SGVpZ2h0KCkgeworCisgICAgICAgIHJldHVybiBnZXRBc2NlbnQoKStnZXREZXNjZW50KCkrZ2V0TGVhZGluZygpOworICAgIH0KKworICAgIC8qKgorICAgICogRHJhd3MgdGV4dCB3aXRoIGhpZ2hsaWdodGluZy4KKyAgICAqLworICAgIHB1YmxpYyB2b2lkIHJlbmRlcldpdGhIaWdobGlnaHQoaW50IGxlbmd0aEJhc2lzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JhcGhpY3MyRCBnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVCb3VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IHNlbFN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCBzZWxTdG9wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3IgaGlnaGxpZ2h0Q29sb3IpCisgICAgeworICAgIH0KKworICAgIC8qKiBVc2UgbGF5b3V0IGluZm9ybWF0aW9uIHRvIHJlbmRlciB0aGUgbGluZSBhdCB4LCB5LiovCisKKyAgICBwdWJsaWMgdm9pZCByZW5kZXIoaW50IGxlbmd0aEJhc2lzLAorICAgICAgICAgICAgICAgICAgICAgICBHcmFwaGljczJEIGcsCisgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lQm91bmQsCisgICAgICAgICAgICAgICAgICAgICAgIGludCB4LAorICAgICAgICAgICAgICAgICAgICAgICBpbnQgeSkKKyAgICB7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgcmVuZGVyQ2FyZXQoTUNvbnN0VGV4dCB0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZW5ndGhCYXNpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmFwaGljczJEIGcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVCb3VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2hhck9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvciBzdHJvbmdDYXJldENvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yIHdlYWtDYXJldENvbG9yKQorICAgIHsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHaXZlbiBhIHBvaW50IHdpdGhpbiB0aGlzIGxpbmUsIHJldHVybiB0aGUgY2hhcmFjdGVyIG9mZnNldCBjb3JyZXNwb25kaW5nIHRvIHRoYXQgcG9pbnQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gcmVzdWx0LiAgVGhpcyBtYXkgYmUgbnVsbCwgaW4gd2hpY2ggY2FzZSBhIG5ldyBUZXh0T2Zmc2V0IHdpbGwgYmUgYWxsb2NhdGVkLgorICAgICAqICAgICAgICBUaGlzIG9iamVjdCBpcyBtb2RpZmllZCBpbiBwbGFjZSwgYW5kIGFsc28gcmV0dXJuZWQgYXMgdGhlIGZ1bmN0aW9uIHJlc3VsdC4KKyAgICAgKiBAcGFyYW0gdGV4dCBUZXh0IHRvIGluc3BlY3QuCisgICAgICogQHBhcmFtIGxpbmVYIFBvc2l0aW9uIG9uIHRoaXMgbGluZSByZWxhdGl2ZSB0byB0b3AgbGVmdCBjb3JuZXIgb2YgdGhpcyBsaW5lLgorICAgICAqIEBwYXJhbSBsaW5lWSBQb3NpdGlvbiBvbiB0aGlzIGxpbmUgcmVsYXRpdmUgdG8gdG9wIGxlZnQgY29ybmVyIG9mIHRoaXMgbGluZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgVGV4dE9mZnNldCBwaXhlbFRvT2Zmc2V0KGludCBsZW5ndGhCYXNpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVCb3VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHkpOworCisgICAgcHVibGljIGFic3RyYWN0IGludCBzdHJvbmdDYXJldEJhc2VsaW5lUG9zaXRpb24oaW50IGxlbmd0aEJhc2lzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lQm91bmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNoYXJPZmZzZXQpOworCisgICAgcHVibGljIGFic3RyYWN0IFJlY3RhbmdsZSBjYXJldEJvdW5kcyhNQ29uc3RUZXh0IHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuZ3RoQmFzaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZUJvdW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNoYXJPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB5KTsKKyAgICAKKyAgICBwdWJsaWMgYWJzdHJhY3QgaW50IGdldE5leHRPZmZzZXQoaW50IGxlbmd0aEJhc2lzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2hhck9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnQgZGlyKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRmb3JtYXQvTUZvcm1hdHRlci5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dGZvcm1hdC9NRm9ybWF0dGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNGJjZWI2NgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRmb3JtYXQvTUZvcm1hdHRlci5qYXZhCkBAIC0wLDAgKzEsMzUxIEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBNRm9ybWF0dGVyLmphdmEsdiAkICRSZXZpc2lvbjogMS40ICQgJERhdGU6IDIwMDIvMDMvMjAgMDU6MTE6MTcgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KKworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRleHRmb3JtYXQ7CisKK2ltcG9ydCBqYXZhLmF3dC5Db2xvcjsKK2ltcG9ydCBqYXZhLmF3dC5HcmFwaGljczsKK2ltcG9ydCBqYXZhLmF3dC5Qb2ludDsKK2ltcG9ydCBqYXZhLmF3dC5SZWN0YW5nbGU7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuTUNvbnN0VGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRsYXlvdXQuYXR0cmlidXRlcy5BdHRyaWJ1dGVNYXA7CisKKy8qKgorKgorKiBUaGlzIGNsYXNzIGZvcm1hdHMgbGluZXMgb2YgdGV4dCB0byBhIGdpdmVuIGxlbmd0aC4KKyogSXQgcHJvdmlkZXMgc2VydmljZXMgbmVlZGVkIGZvciBzdGF0aWMgdGV4dCBkaXNwbGF5LAorKiBhbmQgYWxzbyBlZGl0YWJsZSB0ZXh0LCBpbmNsdWRpbmc6ICBkaXNwbGF5aW5nIHRleHQsCisqIHJlZm9ybWF0dGluZyB0ZXh0IGFmdGVyIGFuIGVkaXQsIGNvbnZlcnRpbmcgYmV0d2VlbgorKiBzY3JlZW4gbG9jYXRpb25zIGFuZCBvZmZzZXRzIGludG8gdGhlIHRleHQsIGNhbGN1bGF0aW5nCisqIGFyZWFzIG9mIHRoZSBzY3JlZW4gZm9yICJoaWdobGlnaHRpbmcsIiAgYW5kIGNvbXB1dGluZworKiBvZmZzZXRzIGludG8gdGhlIHRleHQgcmVzdWx0aW5nIGZyb20gYXJyb3cga2V5cy4KKyogPHA+CisqIFRleHQgY2xpZW50cyBpbnN0YW50aWF0ZSB0aGlzIGNsYXNzIHdpdGggYW4KKyogPHR0Pk1Db25zdFRleHQ8L3R0PiBvYmplY3QgYW5kIGEgZm9ybWF0IHdpZHRoLiAgVGV4dAorKiBjYW4gYmUgZm9ybWF0dGVkIHN1Y2ggdGhhdCBhbGwgbGluZXMgZml0IHdpdGhpbiB0aGUKKyogZm9ybWF0IGxlbmd0aC4gIEFsdGVybmF0aXZlbHksIHRleHQgY2FuIGJlIGZvcm1hdHRlZAorKiBzdWNoIHRoYXQgbGluZXMgZW5kIG9ubHkgYXQgdGhlIGVuZCBvZiBwYXJhZ3JhcGhzLgorKiA8cD4KKyogVGhlIGZvcm1hdCBsZW5ndGggaXMgc3BlY2lmaWVkIHdpdGggdGhlIDx0dD5zZXRMaW5lQm91bmQoKTwvdHQ+CisqIG1ldGhvZC4KKyogPHA+CisqIE1ldGhvZHMgaW4gdGhlIGZvcm1hdHRlciB3aGljaCBpbnRlcmFjdCB3aXRoIHRoZSBncmFwaGljcworKiBzeXN0ZW0gZ2VuZXJhbGx5IHRha2UgYXMgYSBwYXJhbXRlciBhIDx0dD5Qb2ludDwvdHQ+IG9iamVjdAorKiB3aGljaCByZXByZXNlbnRzIHRoZSAib3JpZ2luIiBvZiB0aGUgdGV4dCBkaXNwbGF5LiAgVGhlCisqIG9yaWdpbiByZXByZXNlbnRzIHRoZSBsb2NhdGlvbiwgaW4gdGhlIGdyYXBoaWNzIHN5c3RlbSB1c2VkIHRvIGRpc3BsYXkgdGhlIHRleHQsIG9mCisqIHRoZSB0b3AtbGVmdCBjb3JuZXIgb2YgdGhlIHRleHQuCisqIDxwPgorKiBUbyBkaXNwbGF5IHRoZSB0ZXh0LCBjYWxsIDx0dD5kcmF3KCk8L3R0PiwgcGFzc2luZyB0aGUKKyogYSByZWN0YW5nbGUgaW4gd2hpY2ggdG8gZHJhdyBhcyBhIHBhcmFtZXRlci4gIE9ubHkgbGluZXMKKyogb2YgdGV4dCBpbiB0aGUgZHJhdyByZWN0YW5nbGUgd2lsbCBiZSBkcmF3bi4KKyogPHA+CisqIFdoZW4gdGhlIGZvcm1hdHRlcidzIHRleHQgY2hhbmdlcywgaXQgaXMgaW1wb3J0YW50IHRvIGZpcnN0IGNhbGwKKyogPHR0PnN0b3BCYWNrZ3JvdW5kRm9ybWF0dGluZygpPC90dD4gdG8gcHJldmVudCB0aGUgRm9ybWF0dGVyIGZyb20KKyogYWNjZXNzaW5nIHRoZSB0ZXh0IGZyb20gYSBiYWNrZ3JvdW5kIHRocmVhZC4gIEFmdGVyIG1vZGlmaWNhdGlvbnMgYXJlCisqIGNvbXBsZXRlLAorKiBjYWxsIHRoZSA8dHQ+dXBkYXRlRm9ybWF0KCk8L3R0PiBtZXRob2QgYmVmb3JlIGludm9raW5nIGFueSBvdGhlcgorKiBtZXRob2RzIG9mIHRoZSBmb3JtYXR0ZXIuICA8dHQ+dXBkYXRlRm9ybWF0KCk8L3R0PiByZWZvcm1hdHMgdGhlCisqIG5ldyB0ZXh0LCBmb3JtYXR0aW5nIG5vIG1vcmUgdGV4dCB0aGFuIGlzIG5lY2Vzc2FyeS4KKyogPHA+CisqIFRoZSBmb3JtYXR0ZXIgcHJvdmlkZXMgc2VydmljZXMgZm9yIHJlc3BvbmRpbmcgdG8gdXNlciBpbnB1dCBmcm9tIHRoZQorKiBtb3VzZSBhbmQga2V5Ym9hcmQuICBUaGUgbWV0aG9kIDx0dD5wb2ludFRvVGV4dE9mZnNldCgpPC90dD4gY29udmVydHMKKyogYSBzY3JlZW4gbG9jYXRpb24gdG8gYW4gb2Zmc2V0IGluIHRoZSB0ZXh0LiAgVGhlIG1ldGhvZCA8dHQ+dGV4dE9mZnNldFRvUG9pbnQ8L3R0PgorKiBjb252ZXJ0cyBhbiBvZmZzZXQgaW4gdGhlIHRleHQgdG8gYW4gYXJyYXkgb2YgdHdvIDx0dD5Qb2ludDwvdHQ+IG9iamVjdHMsIHdoaWNoIGNhbiBiZQorKiB1c2VkIHRvIGRyYXcgYSB2ZXJ0aWNsZSBjYXJldCwgZGVub3RpbmcgYW4gaW5zZXJ0aW9uIHBvaW50LiAgPHR0PmhpZ2hsaWdodEFyZWE8L3R0PgorKiBhY2NlcHRzIHR3byBvZmZzZXRzIGludG8gdGhlIHRleHQgYXMgcGFyYW10ZXJzLCBhbmQgcmV0dXJucyBhbiBhcnJheSBvZiA8dHQ+UG9seWdvbjwvdHQ+CisqIG9iamVjdHMgcmVwcmVzZW50aW5nIGFyZWFzIHdoZXJlIHZpc3VhbCBoaWdobGlnaHRpbmcgc2hvdWxkIGJlIGFwcGxpZWQuCisqIDxwPgorKiBGaW5hbGx5LCBmb3IKKyoga2V5Ym9hcmQgaGFuZGxpbmcsIHRoZSA8dHQ+ZmluZE5ld0luc2VydGlvbk9mZnNldCgpPC90dD4gbWV0aG9kIGFjY2VwdHMgYW4gImluaXRpYWwiCisqIG9mZnNldCwgYSAicHJldmlvdXMiIG9mZnNldCwgYXMgd2VsbCBhcyBhIGRpcmVjdGlvbiwgYW5kIHJldHVybnMgYSBuZXcgb2Zmc2V0LiAgVGhlIGRpcmVjdGlvbgorKiBjYW4gYmUgdXAsIGRvd24sIGxlZnQsIG9yIHJpZ2h0LiAgVGhlIHByZXZpb3VzIG9mZnNldCBpcyB0aGUgaW5zZXJ0aW9uIHBvaW50IGxvY2F0aW9uLCBiZWZvcmUKKyogdGhlIGFycm93IGtleSBpcyBwcm9jZXNzZWQuICBUaGUgaW5pdGlhbCBvZmZzZXQgaXMgdGhlIG9mZnNldCB3aGVyZSBhbiB1cCBvciBkb3duIGFycm93CisqIGtleSBzZXF1ZW5jZSBiZWdhbi4gIFVzaW5nIHRoZSBpbml0aWFsIG9mZnNldCBhbGxvd3MgZm9yICJpbnRlbGxpZ2VudCIgaGFuZGxpbmcgb2YgdXAgYW5kIGRvd24KKyogYXJyb3cga2V5cy4KKyogPHA+CisqIEV4YW1wbGVzIG9mIHVzaW5nIHRoZSBNRm9ybWF0dGVyIGNsYXNzCisqIGFyZSBnaXZlbiBpbiB0aGUgPHR0PkFzeW5jRm9ybWF0dGVyPC90dD4gY2xhc3MKKyogZG9jdW1lbnRhdGlvbi4KKyogPHA+CisqIEBhdXRob3IgSm9obiBSYWxleQorKgorKiBAc2VlIGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NVGV4dAorKi8KKworcHVibGljIGFic3RyYWN0IGNsYXNzIE1Gb3JtYXR0ZXIgeworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgQXR0cmlidXRlTWFwIGdldERlZmF1bHRWYWx1ZXMoKTsKKworLyoqCisqIERpc3BsYXkgdGV4dCBpbiBkcmF3QXJlYSwgd2l0aCBoaWdobGlnaHRpbmcuCisqIERvZXMgbm90IHJlZm9ybWF0IHRleHQKKyogQHBhcmFtIGcgdGhlIEdyYXBoaWNzIG9iamVjdCBpbiB3aGljaCB0byBkcmF3CisqIEBwYXJhbSBkcmF3QXJlYSB0aGUgcmVjdGFuZ2xlLCBpbiBnJ3MgY29vcmRpbmF0ZSBzeXN0ZW0sIGluIHdoaWNoIHRvIGRyYXcKKyogQHBhcmFtIG9yaWdpbiB0aGUgdG9wLWxlZnQgY29ybmVyIG9mIHRoZSB0ZXh0LCBpbiBnJ3MgY29vcmRpbmF0ZSBzeXN0ZW0KKyogQHBhcmFtIHNlbFN0YXJ0IHRoZSBvZmZzZXQgd2hlcmUgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIGJlZ2luczsgIHBhc3MgPHR0Pm51bGw8L3R0PiBpZiBubyBzZWxlY3Rpb24KKyogQHBhcmFtIHNlbFN0b3AgdGhlIG9mZnNldCB3aGVyZSB0aGUgY3VycmVudCBzZWxlY3Rpb24gZW5kcworKiBAcGFyYW0gaGlnaGxpZ2h0IHRoZSBjb2xvciBvZiB0aGUgaGlnaGxpZ2h0aW5nCisqLworICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIGRyYXcoR3JhcGhpY3MgZywgUmVjdGFuZ2xlIGRyYXdBcmVhLCBQb2ludCBvcmlnaW4sCisgICAgICAgICAgICBUZXh0T2Zmc2V0IHNlbFN0YXJ0LCBUZXh0T2Zmc2V0IHNlbFN0b3AsIENvbG9yIGhpZ2hsaWdodCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBkcmF3KEdyYXBoaWNzIGcsIFJlY3RhbmdsZSBkcmF3QXJlYSwgUG9pbnQgb3JpZ2luKTsKKworLyoqCisqIFNwZWNpZnkgd2hldGhlciB0byB3cmFwIGxpbmUgYXQgdGhlIGVkZ2Ugb2YgdGhlIGRlc3RpbmF0aW9uIGFyZWEuCisqIDx0dD50cnVlPC90dD4gbWVhbnMgd3JhcCBsaW5lczsgIDx0dD5mYWxzZTwvdHQ+IG1lYW5zIHRvIGJyZWFrIGxpbmVzCisqIG9ubHkgd2hlbiBhbiBlbmQtb2YtbGluZSBjaGFyYWN0ZXIgaXMgcmVhY2hlZC4KKyogQHBhcmFtIHdyYXAgPHR0PnRydWU8L3R0PiB0byBicmVhayBsaW5lcyBhdCB0aGUgZWRnZSBvZiB0aGUgZGVzdGluYXRpb24KKyogYXJlYTsgIDx0dD5mYWxzZTwvdHQ+IG90aGVyd2lzZS4KKyovCisKKyAgICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBzZXRXcmFwKGJvb2xlYW4gd3JhcCk7CisKKy8qKgorKiBSZXR1cm4gd2hldGhlciB0ZXh0IGlzIHdyYXBwZWQgYXQgdGhlIGVkZ2Ugb2YgdGhlIGRlc3RpbmF0aW9uIGFyZWEuCisqIEBzZWUgI3NldFdyYXAKKyovCisgICAgcHVibGljIGFic3RyYWN0IGJvb2xlYW4gd3JhcCgpOworCisvKioKKyogU3BlY2lmeSB0aGUgbnVtYmVyIG9mIHBpeGVscyBhbG9uZyB0aGUgImxpbmUgZGltZW5zaW9uIi4KKyogTGluZXMgYXJlIGZvcm1hdHRlZCB0byBmaXQgd2l0aGluIHRoZSBsaW5lIGRpbWVuc2lvbi4gIFRoZQorKiBsaW5lIGRpbWVuc2lvbiBpbiBSb21hbiBzY3JpcHQgaXMgaG9yaXpvbnRhbC4KKyogQHBhcmFtIGxpbmVXaWR0aCB0aGUgbGVuZ3RoLCBpbiBwaXhlbHMsIHRvIHdoaWNoIGxpbmVzIHdpbGwgYmUgZm9ybWF0dGVkCisqLworICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIHNldExpbmVCb3VuZChpbnQgbGluZUJvdW5kKTsKKworLyoqCisqIFJldHVybiB0aGUgbnVtYmVyIG9mIHBpeGVscyBhbG9uZyB0aGUgbGluZSBkaW1lbnNpb24uCisqLworICAgIHB1YmxpYyBhYnN0cmFjdCBpbnQgbGluZUJvdW5kKCk7CisgICAgCisvKioKKyogRm9ybWF0IHRleHQgZG93biB0byBnaXZlbiBoZWlnaHQuCisqIEBwYXJhbSBoZWlnaHQgdGhlIGhlaWdodCB0byB3aGljaCB0ZXh0IHdpbGwgYmUgZm9ybWF0dGVkCisqLworICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIGZvcm1hdFRvSGVpZ2h0KGludCBoZWlnaHQpOworCisvKioKKyogUmVmb3JtYXQgdGV4dCBhZnRlciBhIGNoYW5nZS4KKyogQWZ0ZXIgdGhlIGZvcm1hdHRlcidzIHRleHQgY2hhbmdlcywgY2FsbCB0aGlzIG1ldGhvZCB0byByZWZvcm1hdC4gIERvZXMKKyogbm90IHJlZHJhdy4KKyogQHBhcmFtIGFmU3RhcnQgdGhlIG9mZnNldCBpbnRvIHRoZSB0ZXh0IHdoZXJlIG1vZGlmaWNhdGlvbiBiZWdhbjsgIGllLCB0aGUKKyogZmlyc3QgY2hhcmFjdGVyIGluIHRoZSB0ZXh0IHdoaWNoIGlzICJkaWZmZXJlbnQiIGluIHNvbWUgd2F5LiAgRG9lcyBub3QKKyogaGF2ZSB0byBiZSBub25uZWdhdGl2ZS4KKyogQHBhcmFtIGFmTGVuZ3RoIHRoZSBudW1iZXIgb2YgbmV3IG9yIGNoYW5nZWQgY2hhcmFjdGVycyBpbiB0aGUgdGV4dC4gIFNob3VsZCBuZXZlcgorKiBiZSBsZXNzIHRoYW4gMC4KKyogQHBhcmFtIHZpZXdSZWN0IHRoZSBSZWN0YW5nbGUgaW4gd2hpY2ggdGhlIHRleHQgd2lsbCBiZSBkaXNwbGF5ZWQuICBUaGlzIGlzIG5lZWRlZCBmb3IKKyogcmV0dXJuaW5nIHRoZSAiZGFtYWdlZCIgYXJlYSAtIHRoZSBhcmVhIG9mIHRoZSBzY3JlZW4gaW4gd2hpY2ggdGhlIHRleHQgbXVzdCBiZSByZWRyYXduLgorKiBAcGFyYW0gb3JpZ2luIHRoZSB0b3AtbGVmdCBjb3JuZXIgb2YgdGhlIHRleHQsIGluIHRoZSBkaXNwbGF5J3MgY29vcmRpbmF0ZSBzeXN0ZW0KKyogQHJldHVybiBhIDx0dD5SZWN0YW5nbGU8L3R0PiB3aGljaCBzcGVjaWZpZXMgdGhlIGFyZWEgaW4gd2hpY2ggdGV4dCBtdXN0IGJlCisqIHJlZHJhd24gdG8gcmVmbGVjdCB0aGUgY2hhbmdlIHRvIHRoZSB0ZXh0LgorKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgUmVjdGFuZ2xlIHVwZGF0ZUZvcm1hdChpbnQgYWZTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWZMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVjdGFuZ2xlIHZpZXdSZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvaW50IG9yaWdpbik7CisKKworICAgIHB1YmxpYyBhYnN0cmFjdCBpbnQgbWluWSgpOworICAgIAorLyoqCisgKiBSZXR1cm4gdGhlIG1heGltdW0gdmVydGljYWwgY29vcmRpbmF0ZSBvZiB0aGUgZG9jdW1lbnQgYXJlYS4KKyAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBpbnQgbWF4WSgpOworCisgICAgcHVibGljIGFic3RyYWN0IGludCBtaW5YKCk7CisKKy8qKgorICogUmV0dXJuIHRoZSBtYXhpbXVtIGhvcml6b250YWwgY29vcmRpbmF0ZSBvZiB0aGUgZG9jdW1lbnQgYXJlYS4KKyAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBpbnQgbWF4WCgpOworCisvKioKKyogUmV0dXJuIHRoZSBhY3R1YWwgcGl4ZWwgbGVuZ3RoIG9mIHRoZSB0ZXh0IHdoaWNoIGhhcyBiZWVuIGZvcm1hdHRlZC4KKyovCisgICAgcHVibGljIGFic3RyYWN0IGludCBmb3JtYXR0ZWRIZWlnaHQoKTsKKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgc2hvcnQgZVVwID0gLTEwLCBlRG93biA9IDEwLCBlTGVmdCA9IC0xLCBlUmlnaHQgPSAxOworCisvKioKKyogR2l2ZW4gYSBzY3JlZW4gbG9jYXRpb24gcCwgcmV0dXJuIHRoZSBvZmZzZXQgb2YgdGhlIGNoYXJhY3RlciBpbiB0aGUgdGV4dCBuZWFyZXN0IHRvIHAuCisqCisqIFRoZSBvZmZzZXQgbWF5IG9yIG1heSBub3QgaW5jbHVkZSBhIG5ld2xpbmUgYXQgdGhlIGVuZCBvZiBhIGxpbmUsIGRldGVybWluZWQgYnkgYW5jaG9yIGFuZCBpbmZpbml0ZU1vZGUuCisqIFRoZSBuZXdsaW5lIGlzIG5vdCBpbmNsdWRlZCBpZiBpbmZpbml0ZU1vZGUgaXMgdHJ1ZSBhbmQgdGhlIGFuY2hvciBpcyB0aGUgcG9zaXRpb24gYmVmb3JlIHRoZSBuZXdsaW5lLgorKgorKiBAcGFyYW0gcmVzdWx0IFRleHRPZmZzZXQgdG8gbW9kaWZ5IGFuZCByZXR1cm4uICBJZiBudWxsLCBvbmUgd2lsbCBiZSBhbGxvY2F0ZWQsIG1vZGlmaWVkLCBhbmQgcmV0dXJuZWQuCisqIEBwYXJhbSBweCB0aGUgeCBjb21wb25lbnQgb2YgdGhlIHBvaW50LgorKiBAcGFyYW0gcHkgdGhlIHkgY29tcG9uZW50IG9mIHRoZSBwb2ludC4KKyogQHBhcmFtIG9yaWdpbiB0aGUgdG9wLWxlZnQgY29ybmVyIG9mIHRoZSB0ZXh0LCBpbiB0aGUgZGlzcGxheSdzIGNvb3JkaW5hdGUgc3lzdGVtCisqIEBwYXJhbSBhbmNob3IgdGhlIHByZXZpb3VzIG9mZnNldC4gIE1heSBiZSBudWxsLiAgVXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciBuZXdsaW5lcyBhcmUgaW5jbHVkZWQuCisqIEBwYXJhbSBpbmZpbml0ZU1vZGUgaWYgdHJ1ZSwgdHJlYXQgbmV3bGluZXMgYXQgZW5kIG9mIGxpbmUgYXMgaGF2aW5nIGluZmluaXRlIHdpZHRoLgorKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgVGV4dE9mZnNldCBwb2ludFRvVGV4dE9mZnNldChUZXh0T2Zmc2V0IHJlc3VsdCwgaW50IHB4LCBpbnQgcHksIFBvaW50IG9yaWdpbiwgVGV4dE9mZnNldCBhbmNob3IsIGJvb2xlYW4gaW5maW5pdGVNb2RlKTsKKworLyoqCisqIEdpdmVuIGFuIG9mZnNldCwgcmV0dXJuIHRoZSBSZWN0YW5nbGUgYm91bmRpbmcgdGhlIGNhcmV0IGF0IHRoZSBvZmZzZXQuCisqIEBwYXJhbSBvZmZzZXQgYW4gb2Zmc2V0IGludG8gdGhlIHRleHQKKyogQHBhcmFtIG9yaWdpbiB0aGUgdG9wLWxlZnQgY29ybmVyIG9mIHRoZSB0ZXh0LCBpbiB0aGUgZGlzcGxheSdzIGNvb3JkaW5hdGUgc3lzdGVtCisqIEByZXR1cm4gYSBSZWN0YW5nbGUgYm91bmRpbmcgdGhlIGNhcmV0LgorKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgUmVjdGFuZ2xlIGdldENhcmV0UmVjdChUZXh0T2Zmc2V0IG9mZnNldCwgUG9pbnQgb3JpZ2luKTsKKworLyoqCisqIERyYXcgdGhlIGNhcmV0KHMpIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gb2Zmc2V0IGludG8gdGhlIGdpdmVuIEdyYXBoaWNzLgorKiBAcGFyYW0gZyB0aGUgR3JhcGhpY3MgdG8gZHJhdyBpbnRvCisqIEBwYXJhbSBvZmZzZXQgdGhlIG9mZnNldCBpbiB0aGUgdGV4dCBmb3Igd2hpY2ggdGhlIGNhcmV0IGlzIGRyYXduCisqIEBwYXJhbSBvcmlnaW4gdGhlIHRvcC1sZWZ0IGNvcm5lciBvZiB0aGUgdGV4dCwgaW4gdGhlIGRpc3BsYXkncyBjb29yZGluYXRlIHN5c3RlbQorKiBAcGFyYW0gc3Ryb25nQ2FyZXRDb2xvciB0aGUgY29sb3Igb2YgdGhlIHN0cm9uZyBjYXJldAorKiBAcGFyYW0gd2Vha0NhcmV0Q29sb3IgdGhlIGNvbG9yIG9mIHRoZSB3ZWFrIGNhcmV0IChpZiBhbnkpCisqLworICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIGRyYXdDYXJldChHcmFwaGljcyBnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9pbnQgb3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvciBzdHJvbmdDYXJldENvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvciB3ZWFrQ2FyZXRDb2xvcik7CisKKyAgICAvKioKKyAgICAgKiBAc2VlICNnZXRCb3VuZGluZ1JlY3QKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGJvb2xlYW4gTE9PU0UgPSBmYWxzZTsKKyAgICAvKioKKyAgICAgKiBAc2VlICNnZXRCb3VuZGluZ1JlY3QKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGJvb2xlYW4gVElHSFQgPSB0cnVlOworCisvKioKKyogR2l2ZW4gdHdvIG9mZnNldHMgaW4gdGhlIHRleHQsIHJldHVybiBhIHJlY3RhbmdsZSB3aGljaCBlbmNsb3NlcyB0aGUgbGluZXMgY29udGFpbmluZyB0aGUgb2Zmc2V0cy4KKyogT2Zmc2V0cyBkbyBub3QgbmVlZCB0byBiZSBvcmRlcmVkIG9yIG5vbm5lZ2F0aXZlLgorKiBAcGFyYW0gb2Zmc2V0MSxvZmZzZXQyIG9mZnNldHMgaW50byB0aGUgdGV4dAorKiBAcGFyYW0gb3JpZ2luIHRoZSB0b3AtbGVmdCBjb3JuZXIgb2YgdGhlIHRleHQsIGluIHRoZSBkaXNwbGF5J3MgY29vcmRpbmF0ZSBzeXN0ZW0KKyogQHBhcmFtIHRpZ2h0IGlmIGVxdWFsIHRvIFRJR0hULCB0aGUgYm91bmRzIGlzIGFzIHNtYWxsIGFzIHBvc3NpYmxlLiAgSWYgTE9PU0UsIHRoZSB3aWR0aAorKiBvZiB0aGUgYm91bmRzIGlzIGFsbG93ZWQgdG8gYmUgd2lkZXIgdGhhbiBuZWNlc2FyeS4gIExvb3NlIGJvdW5kcyBhcmUgZWFzaWVyIHRvIGNvbXB1dGUuCisqIEByZXR1cm4gYSA8dHQ+UmVjdGFuZ2xlPC90dD4sIHJlbGF0aXZlIHRvIDx0dD5vcmlnaW48L3R0Piwgd2hpY2ggZW5jbG9zZXMgdGhlIGxpbmVzIGNvbnRhaW5pbmcgdGhlIG9mZnNldHMKKyovCisgICAgcHVibGljIGFic3RyYWN0IFJlY3RhbmdsZSBnZXRCb3VuZGluZ1JlY3QoVGV4dE9mZnNldCBvZmZzZXQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgb2Zmc2V0MiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9pbnQgb3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gdGlnaHQpOworCisgICAgcHVibGljIGFic3RyYWN0IHZvaWQgZ2V0Qm91bmRpbmdSZWN0KFJlY3RhbmdsZSBib3VuZGluZ1JlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgb2Zmc2V0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCBvZmZzZXQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb2ludCBvcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gdGlnaHQpOworCisvKioKKyogQ29tcHV0ZSB0aGUgb2Zmc2V0IHJlc3VsdGluZyBmcm9tIG1vdmluZyBmcm9tIGEgcHJldmlvdXMgb2Zmc2V0IGluIGRpcmVjdGlvbiBkaXIuCisqIEZvciBhcnJvdyBrZXlzLgorKiBAcGFyYW0gcHJldmlvdXNPZmZzZXQgdGhlIGluc2VydGlvbiBvZmZzZXQgcHJpb3IgdG8gdGhlIGFycm93IGtleSBwcmVzcworKiBAcGFyYW0gZGlyZWN0aW9uIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGFycm93IGtleSAoZVVwLCBlRG93biwgZUxlZnQsIG9yIGVSaWdodCkKKyogQHJldHVybiBuZXcgb2Zmc2V0IGJhc2VkIG9uIGRpcmVjdGlvbiBhbmQgcHJldmlvdXMgb2Zmc2V0LgorKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgVGV4dE9mZnNldCBmaW5kSW5zZXJ0aW9uT2Zmc2V0KFRleHRPZmZzZXQgcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCBwcmV2aW91c09mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0IGRpcmVjdGlvbik7CisKKy8qKgorKiBDb21wdXRlIHRoZSBvZmZzZXQgcmVzdWx0aW5nIGZyb20gbW92aW5nIGZyb20gYSBwcmV2aW91cyBvZmZzZXQsIHN0YXJ0aW5nIGF0IGFuIG9yaWdpbmFsIG9mZnNldCwgaW4gZGlyZWN0aW9uIGRpci4KKyogRm9yIGFycm93IGtleXMuICBVc2UgdGhpcyBmb3IgInNtYXJ0IiB1cC9kb3duIGtleXMuCisqIEBwYXJhbSByZXN1bHQgVGV4dE9mZnNldCB0byBtb2RpZnkgYW5kIHJldHVybi4gIElmIG51bGwsIGEgbmV3IFRleHRPZmZzZXQgaXMgY3JlYXRlZCwgbW9kaWZpZWQsIGFuZCByZXR1cm5lZC4KKyogQHBhcmFtIGluaXRpYWxPZmZzZXQgVGhlIG9mZnNldCBhdCB3aGljaCBhbiB1cC1kb3duIGFycm93IGtleSBzZXF1ZW5jZSBiZWdhbi4KKyogQHBhcmFtIHByZXZpb3VzT2Zmc2V0IFRoZSBpbnNlcnRpb24gb2Zmc2V0IHByaW9yIHRvIHRoZSBhcnJvdyBrZXkgcHJlc3MuCisqIEBwYXJhbSBkaXJlY3Rpb24gVGhlIGRpcmVjdGlvbiBvZiB0aGUgYXJyb3cga2V5IChlVXAsIGVEb3duLCBlTGVmdCwgb3IgZVJpZ2h0KQorKiBAcmV0dXJuIG5ldyBvZmZzZXQgYmFzZWQgb24gZGlyZWN0aW9uIGFuZCBwcmV2aW91cyBvZmZzZXQocykuCisqLworICAgIHB1YmxpYyBhYnN0cmFjdCBUZXh0T2Zmc2V0IGZpbmROZXdJbnNlcnRpb25PZmZzZXQoVGV4dE9mZnNldCByZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IGluaXRpYWxPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IHByZXZpb3VzT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnQgZGlyZWN0aW9uKTsKKworLyoqCisqIFJldHVybiB0aGUgaW5kZXggb2YgdGhlIGxpbmUgY29udGFpbmluZyB0aGUgZ2l2ZW4gY2hhcmFjdGVyIGluZGV4LgorKiBUaGlzIG1ldGhvZCBoYXMgY29tcGxpY2F0ZWQgc2VtYW50aWNzLCBhcmlzaW5nIGZyb20gbm90IGtub3dpbmcgCisqIHdoaWNoIHNpZGUgb2YgdGhlIGluZGV4IHRvIGNoZWNrLiAgVGhlIGluZGV4IHdpbGwgYmUgZ2l2ZW4gYW4KKyogaW1wbGljaXQgQUZURVIgYmlhcywgdW5sZXNzIHRoZSBpbmRleCBpcyB0aGUgbGFzdCBpbmRleCBpbiB0aGUgdGV4dCwKKyogdGhlIHRleHQgbGVuZ3RoIGlzIG5vbi16ZXJvLCBhbmQgdGhlcmUgaXMgbm90IGEgcGFyYWdyYXBoIHNlcGFyYXRvcgorKiBhdCB0aGUgZW5kIG9mIHRoZSB0ZXh0LgorKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgaW50IGxpbmVDb250YWluaW5nKGludCBpbmRleCk7CisgICAgCisvKioKKyogUmV0dXJuIHRoZSBpbmRleCBvZiB0aGUgbGluZSBjb250YWluaW5nIHRoZSBnaXZlbiBvZmZzZXQuCisqLworICAgIHB1YmxpYyBhYnN0cmFjdCBpbnQgbGluZUNvbnRhaW5pbmcoVGV4dE9mZnNldCBvZmZzZXQpOworCisvKioKKyogUmV0dXJuIHRoZSBudW1iZXIgb2YgbGluZXMuCisqLworICAgIHB1YmxpYyBhYnN0cmFjdCBpbnQgZ2V0TGluZUNvdW50KCk7CisKKy8qKgorKiBSZXR1cm4gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb24gdGhlIGdpdmVuIGxpbmUuCisqLworICAgIHB1YmxpYyBhYnN0cmFjdCBpbnQgbGluZVJhbmdlTG93KGludCBsaW5lTnVtYmVyKTsKKworLyoqCisqIFJldHVybiB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBmb2xsb3dpbmcgdGhlIGdpdmVuIGxpbmUuCisqLworICAgIHB1YmxpYyBhYnN0cmFjdCBpbnQgbGluZVJhbmdlTGltaXQoaW50IGxpbmVOdW1iZXIpOworCisvKioKKyogVGVsbHMgdGhlIGZvcm1hdHRlciB0byBzdG9wIGFjY2Vzc2luZyB0aGUgdGV4dCB1bnRpbCB1cGRhdGVGb3JtYXQgaXMgY2FsbGVkLgorKi8KKyAgICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBzdG9wQmFja2dyb3VuZEZvcm1hdHRpbmcoKTsKKworLyoqCisqIFJldHVybiB0aGUgbGluZSBudW1iZXIgYXQgdGhlIGdpdmVuIGdyYXBoaWMgaGVpZ2h0LiAgSWYgaGVpZ2h0IGlzIGdyZWF0ZXIgdGhhbgorKiB0aGUgdGV4dCBoZWlnaHQsIG1heExpbmVOdW1iZXIgKyAxIGlzIHJldHVybmVkLgorKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgaW50IGxpbmVBdEhlaWdodChpbnQgaGVpZ2h0KTsKKworLyoqCisqIFJldHVybiB0aGUgZ3JhcGhpYyBoZWlnaHQgd2hlcmUgdGhlIGdpdmVuIGxpbmUgYmVnaW5zLiAgSWYgdGhlIGxpbmVOdW1iZXIgaXMKKyogbWF4TGluZU51bWJlciB0aGUgZW50aXJlIHRleHQgaGVpZ2h0IGlzIHJldHVybmVkLgorKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgaW50IGxpbmVHcmFwaGljU3RhcnQoaW50IGxpbmVOdW1iZXIpOworCisvKioKKyogUmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIGxpbmUgaXMgbGVmdC10by1yaWdodC4KKyogQHBhcmFtIGxpbmVOdW1iZXIgYSB2YWxpZCBsaW5lCisqIEByZXR1cm4gdHJ1ZSBpZiBsaW5lTnVtYmVyIGlzIGxlZnQtdG8tcmlnaHQKKyovCisgICAgcHVibGljIGFic3RyYWN0IGJvb2xlYW4gbGluZUlzTGVmdFRvUmlnaHQoaW50IGxpbmVOdW1iZXIpOworCisvKioKKyogUmV0dXJuIGEgbmV3IDx0dD5NRm9ybWF0dGVyPC90dD4uCisqIEBwYXJhbSB0ZXh0IHRoZSB0ZXh0IHRvIGZvcm1hdAorKiBAcGFyYW0gZGVmYXVsdFZhbHVlcyB2YWx1ZXMgdG8gdXNlIHdoZW4gY2VydGFpbiBhdHRyaWJ1dGVzIGFyZSBub3Qgc3BlY2lmaWVkLiAKKyogICAgPHR0PmRlZmF1bHRWYWx1ZXM8L3R0PiBtdXN0IGNvbnRhaW4gdmFsdWVzIGZvciB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6CisqICAgIDx0dD5GQU1JTFk8L3R0PiwgPHR0PldFSUdIVDwvdHQ+LCA8dHQ+UE9TVFVSRTwvdHQ+LCA8dHQ+U0laRTwvdHQ+LCA8dHQ+U1VQRVJTQ1JJUFQ8L3R0PiwgCisqICAgIDx0dD5GT1JFR1JPVU5EPC90dD4sIDx0dD5VTkRFUkxJTkU8L3R0PiwgPHR0PlNUUklLRVRIUk9VR0g8L3R0PiwKKyogICAgPHR0PkVYVFJBX0xJTkVfU1BBQ0lORzwvdHQ+LCA8dHQ+RklSU1RfTElORV9JTkRFTlQ8L3R0Piw8dHQ+TUlOX0xJTkVfU1BBQ0lORzwvdHQ+LAorKiAgICA8dHQ+TElORV9GTFVTSDwvdHQ+LCA8dHQ+TEVBRElOR19NQVJHSU48L3R0PiwgPHR0PlRSQUlMSU5HX01BUkdJTjwvdHQ+LCA8dHQ+VEFCX1JVTEVSPC90dD4KKyogQHBhcmFtIGxpbmVCb3VuZCBsZW5ndGggdG8gd2hpY2ggbGluZXMgYXJlIGZvcm1hdHRlZAorKiBAcGFyYW0gd3JhcCA8dHQ+dHJ1ZTwvdHQ+IGlmIHRleHQgc2hvdWxkIGJlICJsaW5lIHdyYXBwZWQiIChmb3JtYXR0ZWQgdG8gZml0IGRlc3RpbmF0aW9uIGFyZWEpCisqLworICAgIHB1YmxpYyBzdGF0aWMgTUZvcm1hdHRlciBjcmVhdGVGb3JtYXR0ZXIoTUNvbnN0VGV4dCB0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlTWFwIGRlZmF1bHRWYWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZUJvdW5kLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gd3JhcCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmFwaGljcyBnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgcmV0dXJuIG5ldyBBc3luY0Zvcm1hdHRlcih0ZXh0LCBkZWZhdWx0VmFsdWVzLCBsaW5lQm91bmQsIHdyYXAsIGcpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRmb3JtYXQvTVRleHRJdGVyYXRvci5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dGZvcm1hdC9NVGV4dEl0ZXJhdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYTcxYTNiZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRmb3JtYXQvTVRleHRJdGVyYXRvci5qYXZhCkBAIC0wLDAgKzEsNDA1IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBNVGV4dEl0ZXJhdG9yLmphdmEsdiAkICRSZXZpc2lvbjogMS41ICQgJERhdGU6IDIwMDIvMTIvMTMgMDA6MTk6NDkgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KKy8vIFJlcXVpcmVzIEphdmEyCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudGV4dGZvcm1hdDsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NQ29uc3RUZXh0OworaW1wb3J0IGphdmEudGV4dC5DaGFyYWN0ZXJJdGVyYXRvcjsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZU1hcDsKKworLy8vKkpESzEySU1QT1JUUworaW1wb3J0IGphdmEudGV4dC5BdHRyaWJ1dGVkQ2hhcmFjdGVySXRlcmF0b3I7CitpbXBvcnQgamF2YS50ZXh0LkF0dHJpYnV0ZWRDaGFyYWN0ZXJJdGVyYXRvci5BdHRyaWJ1dGU7CitpbXBvcnQgamF2YS51dGlsLk1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuU2V0OworLy9KREsxMklNUE9SVFMqLworCisvKkpESzExSU1QT1JUUworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZWRDaGFyYWN0ZXJJdGVyYXRvcjsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRsYXlvdXQuYXR0cmlidXRlcy5BdHRyaWJ1dGVkQ2hhcmFjdGVySXRlcmF0b3IuQXR0cmlidXRlOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5hdHRyaWJ1dGVzLk1hcDsKK0pESzExSU1QT1JUUyovCisKKy8qKgorICogQW4gQXR0cmlidXRlZENoYXJhY3Rlckl0ZXJhdG9yIG92ZXIgYW4gTUNvbnN0VGV4dC4KKyAqLworcHVibGljIGZpbmFsIGNsYXNzIE1UZXh0SXRlcmF0b3IgaW1wbGVtZW50cyBBdHRyaWJ1dGVkQ2hhcmFjdGVySXRlcmF0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsb25lYWJsZSB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIC8vIG1lbW9yeSBsZWFrLCBzaW5jZSB0aGlzIGNhY2hlIGlzIG5ldmVyIGZsdXNoZWQKKworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIE1hdGNoZXIgeworICAgICAgICAKKyAgICAgICAgYm9vbGVhbiBtYXRjaGVzKE1hcCBsaHMsIE1hcCByaHMsIE9iamVjdCBxdWVyeSkgeworICAgICAgICAgICAgCisgICAgICAgICAgICBPYmplY3QgbGhzVmFsID0gbGhzLmdldChxdWVyeSk7CisgICAgICAgICAgICBPYmplY3QgcmhzVmFsID0gcmhzLmdldChxdWVyeSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChsaHNWYWwgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJldHVybiByaHNWYWwgPT0gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiBsaHNWYWwuZXF1YWxzKHJoc1ZhbCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTWF0Y2hlciBBVFRSX01BVENIRVIgPSBuZXcgTWF0Y2hlcigpOworICAgIAorICAgIC8vIE5vdCBxdWl0ZSBvcHRpbWFsLiAgQ291bGQgaGF2ZSBhIG1hdGNoZXIgdGhhdCB3b3VsZCBkZWNvbXBvc2UKKyAgICAvLyBhIHNldCBvbmNlIGZvciByZXBlYXRlZCBxdWVyaWVzLiAgT2YgY291cnNlIHRoYXQgd291bGQgcmVxdWlyZQorICAgIC8vIGFsbG9jYXRpb24uLi4KKy8vLypKREsxMklNUE9SVFMKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBNYXRjaGVyIFNFVF9NQVRDSEVSID0gbmV3IE1hdGNoZXIoKSB7CisgICAgICAgIAorICAgICAgICBib29sZWFuIG1hdGNoZXMoTWFwIGxocywgTWFwIHJocywgT2JqZWN0IHF1ZXJ5KSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIE5vdCB1c2luZyBJdGVyYXRvciB0byBzaW1wbGlmeSAxLjEgcG9ydC4KKyAgICAgICAgICAgIE9iamVjdFtdIGVsZW1lbnRzID0gKChTZXQpcXVlcnkpLnRvQXJyYXkoKTsKKyAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IGVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKCFzdXBlci5tYXRjaGVzKGxocywgcmhzLCBlbGVtZW50c1tpXSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfTsKKy8vSkRLMTJJTVBPUlRTKi8KKyAgICAKKyAgICBwcml2YXRlIGZpbmFsIGNsYXNzIFN0eWxlQ2FjaGUgeworCisgICAgICAgIHByaXZhdGUgaW50IGZSdW5TdGFydCA9IDA7CisgICAgICAgIHByaXZhdGUgaW50IGZSdW5MaW1pdCA9IC0xOworICAgICAgICBwcml2YXRlIGludCBmUmFuZ2VTdGFydDsKKyAgICAgICAgcHJpdmF0ZSBpbnQgZlJhbmdlTGltaXQ7CisgICAgICAgIHByaXZhdGUgQXR0cmlidXRlTWFwIGZTdHlsZTsKKworICAgICAgICBTdHlsZUNhY2hlKE1Db25zdFRleHQgdGV4dCwgaW50IHN0YXJ0LCBpbnQgbGltaXQpIHsKKyAgICAgICAgICAgIGZUZXh0ID0gdGV4dDsKKyAgICAgICAgICAgIGZSYW5nZVN0YXJ0ID0gc3RhcnQ7CisgICAgICAgICAgICBmUmFuZ2VMaW1pdCA9IGxpbWl0OworICAgICAgICAgICAgdXBkYXRlKHN0YXJ0KTsKKyAgICAgICAgfQorCisgICAgICAgIHByaXZhdGUgdm9pZCB1cGRhdGUoaW50IHBvcykgeworICAgICAgICAgICAgaWYgKHBvcyA8IGZSdW5TdGFydCB8fCBwb3MgPj0gZlJ1bkxpbWl0KSB7CisgICAgICAgICAgICAgICAgQXR0cmlidXRlTWFwIHN0eWxlID0gQXR0cmlidXRlTWFwLkVNUFRZX0FUVFJJQlVURV9NQVA7CisgICAgICAgICAgICAgICAgaWYgKHBvcyA8IGZSYW5nZVN0YXJ0KSB7CisgICAgICAgICAgICAgICAgICAgIGZSdW5MaW1pdCA9IGZSYW5nZVN0YXJ0OworICAgICAgICAgICAgICAgICAgICBmUnVuU3RhcnQgPSBJbnRlZ2VyLk1JTl9WQUxVRTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAocG9zID4gZlJhbmdlTGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgZlJ1blN0YXJ0ID0gZlJhbmdlTGltaXQ7CisgICAgICAgICAgICAgICAgICAgIGZSdW5MaW1pdCA9IEludGVnZXIuTUFYX1ZBTFVFOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZlJ1blN0YXJ0ID0gTWF0aC5tYXgoZlJhbmdlU3RhcnQsIGZUZXh0LmNoYXJhY3RlclN0eWxlU3RhcnQocG9zKSk7CisgICAgICAgICAgICAgICAgICAgIGZSdW5TdGFydCA9IE1hdGgubWF4KGZSdW5TdGFydCwgZlRleHQucGFyYWdyYXBoU3RhcnQocG9zKSk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBmUnVuTGltaXQgPSBNYXRoLm1pbihmUmFuZ2VMaW1pdCwgZlRleHQuY2hhcmFjdGVyU3R5bGVMaW1pdChwb3MpKTsKKyAgICAgICAgICAgICAgICAgICAgZlJ1bkxpbWl0ID0gTWF0aC5taW4oZlJ1bkxpbWl0LCBmVGV4dC5wYXJhZ3JhcGhMaW1pdChwb3MpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZSdW5TdGFydCA8IGZSdW5MaW1pdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUgPSBmVGV4dC5wYXJhZ3JhcGhTdHlsZUF0KHBvcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZSA9IHN0eWxlLmFkZEF0dHJpYnV0ZXMoZlRleHQuY2hhcmFjdGVyU3R5bGVBdChwb3MpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmU3R5bGUgPSBmRm9udFJlc29sdmVyLmFwcGx5Rm9udChzdHlsZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpbnQgZ2V0UnVuU3RhcnQoaW50IHBvcykgeworICAgICAgICAgICAgdXBkYXRlKHBvcyk7CisgICAgICAgICAgICByZXR1cm4gZlJ1blN0YXJ0OworICAgICAgICB9CisKKyAgICAgICAgaW50IGdldFJ1bkxpbWl0KGludCBwb3MpIHsKKyAgICAgICAgICAgIHVwZGF0ZShwb3MpOworICAgICAgICAgICAgcmV0dXJuIGZSdW5MaW1pdDsKKyAgICAgICAgfQorCisgICAgICAgIE1hcCBnZXRTdHlsZShpbnQgcG9zKSB7CisgICAgICAgICAgICB1cGRhdGUocG9zKTsKKyAgICAgICAgICAgIHJldHVybiBmU3R5bGU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIE1Db25zdFRleHQgZlRleHQ7CisgICAgcHJpdmF0ZSBDaGFyYWN0ZXJJdGVyYXRvciBmQ2hhckl0ZXI7CisgICAgcHJpdmF0ZSBGb250UmVzb2x2ZXIgZkZvbnRSZXNvbHZlcjsKKyAgICAKKyAgICBwcml2YXRlIFN0eWxlQ2FjaGUgZlN0eWxlQ2FjaGU7CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYW4gTVRleHRJdGVyYXRvciBvdmVyIHRoZSByYW5nZSBbc3RhcnQsIGxpbWl0KS4KKyAgICAgKi8KKyAgICBwdWJsaWMgTVRleHRJdGVyYXRvcihNQ29uc3RUZXh0IHRleHQsIAorICAgICAgICAgICAgICAgICAgICAgICAgIEZvbnRSZXNvbHZlciByZXNvbHZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnQsIAorICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW1pdCkgeworCisgICAgICAgIGZUZXh0ID0gdGV4dDsKKyAgICAgICAgZkZvbnRSZXNvbHZlciA9IHJlc29sdmVyOworICAgICAgICBmQ2hhckl0ZXIgPSB0ZXh0LmNyZWF0ZUNoYXJhY3Rlckl0ZXJhdG9yKHN0YXJ0LCBsaW1pdCk7CisKKyAgICAgICAgZlN0eWxlQ2FjaGUgPSBuZXcgU3R5bGVDYWNoZSh0ZXh0LCBzdGFydCwgbGltaXQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIHBvc2l0aW9uIHRvIGdldEJlZ2luSW5kZXgoKSBhbmQgcmV0dXJucyB0aGUgY2hhcmFjdGVyIGF0IHRoYXQKKyAgICAgKiBwb3NpdGlvbi4KKyAgICAgKiBAcmV0dXJuIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlIHRleHQsIG9yIERPTkUgaWYgdGhlIHRleHQgaXMgZW1wdHkKKyAgICAgKiBAc2VlICNnZXRCZWdpbkluZGV4CisgICAgICovCisgICAgcHVibGljIGNoYXIgZmlyc3QoKSB7CisgICAgICAgIHJldHVybiBmQ2hhckl0ZXIuZmlyc3QoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBwb3NpdGlvbiB0byBnZXRFbmRJbmRleCgpLTEgKGdldEVuZEluZGV4KCkgaWYgdGhlIHRleHQgaXMgZW1wdHkpCisgICAgICogYW5kIHJldHVybnMgdGhlIGNoYXJhY3RlciBhdCB0aGF0IHBvc2l0aW9uLgorICAgICAqIEByZXR1cm4gdGhlIGxhc3QgY2hhcmFjdGVyIGluIHRoZSB0ZXh0LCBvciBET05FIGlmIHRoZSB0ZXh0IGlzIGVtcHR5CisgICAgICogQHNlZSAjZ2V0RW5kSW5kZXgKKyAgICAgKi8KKyAgICBwdWJsaWMgY2hhciBsYXN0KCkgeworICAgICAgICByZXR1cm4gZkNoYXJJdGVyLmxhc3QoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBjaGFyYWN0ZXIgYXQgdGhlIGN1cnJlbnQgcG9zaXRpb24gKGFzIHJldHVybmVkIGJ5IGdldEluZGV4KCkpLgorICAgICAqIEByZXR1cm4gdGhlIGNoYXJhY3RlciBhdCB0aGUgY3VycmVudCBwb3NpdGlvbiBvciBET05FIGlmIHRoZSBjdXJyZW50CisgICAgICogcG9zaXRpb24gaXMgb2ZmIHRoZSBlbmQgb2YgdGhlIHRleHQuCisgICAgICogQHNlZSAjZ2V0SW5kZXgKKyAgICAgKi8KKyAgICBwdWJsaWMgY2hhciBjdXJyZW50KCkgeworICAgICAgICByZXR1cm4gZkNoYXJJdGVyLmN1cnJlbnQoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbmNyZW1lbnRzIHRoZSBpdGVyYXRvcidzIGluZGV4IGJ5IG9uZSBhbmQgcmV0dXJucyB0aGUgY2hhcmFjdGVyCisgICAgICogYXQgdGhlIG5ldyBpbmRleC4gIElmIHRoZSByZXN1bHRpbmcgaW5kZXggaXMgZ3JlYXRlciBvciBlcXVhbAorICAgICAqIHRvIGdldEVuZEluZGV4KCksIHRoZSBjdXJyZW50IGluZGV4IGlzIHJlc2V0IHRvIGdldEVuZEluZGV4KCkgYW5kCisgICAgICogYSB2YWx1ZSBvZiBET05FIGlzIHJldHVybmVkLgorICAgICAqIEByZXR1cm4gdGhlIGNoYXJhY3RlciBhdCB0aGUgbmV3IHBvc2l0aW9uIG9yIERPTkUgaWYgdGhlIG5ldworICAgICAqIHBvc2l0aW9uIGlzIG9mZiB0aGUgZW5kIG9mIHRoZSB0ZXh0IHJhbmdlLgorICAgICAqLworICAgIHB1YmxpYyBjaGFyIG5leHQoKSB7CisgICAgICAgIHJldHVybiBmQ2hhckl0ZXIubmV4dCgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIERlY3JlbWVudHMgdGhlIGl0ZXJhdG9yJ3MgaW5kZXggYnkgb25lIGFuZCByZXR1cm5zIHRoZSBjaGFyYWN0ZXIKKyAgICAgKiBhdCB0aGUgbmV3IGluZGV4LiBJZiB0aGUgY3VycmVudCBpbmRleCBpcyBnZXRCZWdpbkluZGV4KCksIHRoZSBpbmRleAorICAgICAqIHJlbWFpbnMgYXQgZ2V0QmVnaW5JbmRleCgpIGFuZCBhIHZhbHVlIG9mIERPTkUgaXMgcmV0dXJuZWQuCisgICAgICogQHJldHVybiB0aGUgY2hhcmFjdGVyIGF0IHRoZSBuZXcgcG9zaXRpb24gb3IgRE9ORSBpZiB0aGUgY3VycmVudAorICAgICAqIHBvc2l0aW9uIGlzIGVxdWFsIHRvIGdldEJlZ2luSW5kZXgoKS4KKyAgICAgKi8KKyAgICBwdWJsaWMgY2hhciBwcmV2aW91cygpIHsKKyAgICAgICAgcmV0dXJuIGZDaGFySXRlci5wcmV2aW91cygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIHBvc2l0aW9uIHRvIHRoZSBzcGVjaWZpZWQgcG9zaXRpb24gaW4gdGhlIHRleHQgYW5kIHJldHVybnMgdGhhdAorICAgICAqIGNoYXJhY3Rlci4KKyAgICAgKiBAcGFyYW0gcG9zaXRpb24gdGhlIHBvc2l0aW9uIHdpdGhpbiB0aGUgdGV4dC4gIFZhbGlkIHZhbHVlcyByYW5nZSBmcm9tCisgICAgICogZ2V0QmVnaW5JbmRleCgpIHRvIGdldEVuZEluZGV4KCkuICBBbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaXMgdGhyb3duCisgICAgICogaWYgYW4gaW52YWxpZCB2YWx1ZSBpcyBzdXBwbGllZC4KKyAgICAgKiBAcmV0dXJuIHRoZSBjaGFyYWN0ZXIgYXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbiBvciBET05FIGlmIHRoZSBzcGVjaWZpZWQgcG9zaXRpb24gaXMgZXF1YWwgdG8gZ2V0RW5kSW5kZXgoKQorICAgICAqLworICAgIHB1YmxpYyBjaGFyIHNldEluZGV4KGludCBwb3NpdGlvbikgeworICAgICAgICByZXR1cm4gZkNoYXJJdGVyLnNldEluZGV4KHBvc2l0aW9uKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBzdGFydCBpbmRleCBvZiB0aGUgdGV4dC4KKyAgICAgKiBAcmV0dXJuIHRoZSBpbmRleCBhdCB3aGljaCB0aGUgdGV4dCBiZWdpbnMuCisgICAgICovCisgICAgcHVibGljIGludCBnZXRCZWdpbkluZGV4KCkgeworICAgICAgICByZXR1cm4gZkNoYXJJdGVyLmdldEJlZ2luSW5kZXgoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBlbmQgaW5kZXggb2YgdGhlIHRleHQuICBUaGlzIGluZGV4IGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QKKyAgICAgKiBjaGFyYWN0ZXIgZm9sbG93aW5nIHRoZSBlbmQgb2YgdGhlIHRleHQuCisgICAgICogQHJldHVybiB0aGUgaW5kZXggYWZ0ZXIgdGhlIGxhc3QgY2hhcmFjdGVyIGluIHRoZSB0ZXh0CisgICAgICovCisgICAgcHVibGljIGludCBnZXRFbmRJbmRleCgpIHsKKyAgICAgICAgcmV0dXJuIGZDaGFySXRlci5nZXRFbmRJbmRleCgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnQgaW5kZXguCisgICAgICogQHJldHVybiB0aGUgY3VycmVudCBpbmRleC4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldEluZGV4KCkgeworICAgICAgICByZXR1cm4gZkNoYXJJdGVyLmdldEluZGV4KCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgcnVuCisgICAgICogd2l0aCByZXNwZWN0IHRvIGFsbCBhdHRyaWJ1dGVzIGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgY2hhcmFjdGVyLgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0UnVuU3RhcnQoKSB7CisgICAgICAgIHJldHVybiBmU3R5bGVDYWNoZS5nZXRSdW5TdGFydChmQ2hhckl0ZXIuZ2V0SW5kZXgoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgcnVuCisgICAgICogd2l0aCByZXNwZWN0IHRvIHRoZSBnaXZlbiBhdHRyaWJ1dGUgY29udGFpbmluZyB0aGUgY3VycmVudCBjaGFyYWN0ZXIuCisgICAgICovCisgICAgcHVibGljIGludCBnZXRSdW5TdGFydChPYmplY3QgYXR0cmlidXRlKSB7CisKKyAgICAgICAgcmV0dXJuIGdldFJ1blN0YXJ0KGF0dHJpYnV0ZSwgQVRUUl9NQVRDSEVSKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBydW4KKyAgICAgKiB3aXRoIHJlc3BlY3QgdG8gdGhlIGdpdmVuIGF0dHJpYnV0ZSBjb250YWluaW5nIHRoZSBjdXJyZW50IGNoYXJhY3Rlci4KKyAgICAgKi8KKy8vLypKREsxMklNUE9SVFMKKyAgICBwdWJsaWMgaW50IGdldFJ1blN0YXJ0KEF0dHJpYnV0ZSBhdHRyaWJ1dGUpIHsKKworICAgICAgICByZXR1cm4gZ2V0UnVuU3RhcnQoYXR0cmlidXRlLCBBVFRSX01BVENIRVIpOworICAgIH0KKy8vSkRLMTJJTVBPUlRTKi8KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIHJ1bgorICAgICAqIHdpdGggcmVzcGVjdCB0byB0aGUgZ2l2ZW4gYXR0cmlidXRlcyBjb250YWluaW5nIHRoZSBjdXJyZW50IGNoYXJhY3Rlci4KKyAgICAgKi8KKy8vLypKREsxMklNUE9SVFMKKyAgICBwdWJsaWMgaW50IGdldFJ1blN0YXJ0KFNldCBhdHRyaWJ1dGVzKSB7CisKKyAgICAgICAgcmV0dXJuIGdldFJ1blN0YXJ0KGF0dHJpYnV0ZXMsIFNFVF9NQVRDSEVSKTsKKyAgICB9CisvL0pESzEySU1QT1JUUyovCisgICAgCisgICAgcHJpdmF0ZSBpbnQgZ2V0UnVuU3RhcnQoT2JqZWN0IHF1ZXJ5LCBNYXRjaGVyIG1hdGNoZXIpIHsKKworICAgICAgICBpbnQgcnVuU3RhcnQgPSBnZXRSdW5TdGFydCgpOworICAgICAgICBpbnQgcmFuZ2VTdGFydCA9IGdldEJlZ2luSW5kZXgoKTsKKyAgICAgICAgTWFwIGluaXRpYWxTdHlsZSA9IGdldEF0dHJpYnV0ZXMoKTsKKyAgICAgICAgCisgICAgICAgIHdoaWxlIChydW5TdGFydCA+IHJhbmdlU3RhcnQpIHsKKyAgICAgICAgICAgIEF0dHJpYnV0ZU1hcCBzdHlsZSA9IGZUZXh0LmNoYXJhY3RlclN0eWxlQXQocnVuU3RhcnQtMSk7CisgICAgICAgICAgICBpZiAoIW1hdGNoZXIubWF0Y2hlcyhpbml0aWFsU3R5bGUsIHN0eWxlLCBxdWVyeSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcnVuU3RhcnQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBydW5TdGFydCA9IGZUZXh0LmNoYXJhY3RlclN0eWxlU3RhcnQocnVuU3RhcnQtMSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJhbmdlU3RhcnQ7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgZm9sbG93aW5nIHRoZSBydW4KKyAgICAgKiB3aXRoIHJlc3BlY3QgdG8gYWxsIGF0dHJpYnV0ZXMgY29udGFpbmluZyB0aGUgY3VycmVudCBjaGFyYWN0ZXIuCisgICAgICovCisgICAgcHVibGljIGludCBnZXRSdW5MaW1pdCgpIHsKKyAgICAgICAgcmV0dXJuIGZTdHlsZUNhY2hlLmdldFJ1bkxpbWl0KGZDaGFySXRlci5nZXRJbmRleCgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIGZvbGxvd2luZyB0aGUgcnVuCisgICAgICogd2l0aCByZXNwZWN0IHRvIHRoZSBnaXZlbiBhdHRyaWJ1dGUgY29udGFpbmluZyB0aGUgY3VycmVudCBjaGFyYWN0ZXIuCisgICAgICovCisgICAgcHVibGljIGludCBnZXRSdW5MaW1pdChPYmplY3QgYXR0cmlidXRlKSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gZ2V0UnVuTGltaXQoYXR0cmlidXRlLCBBVFRSX01BVENIRVIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgZm9sbG93aW5nIHRoZSBydW4KKyAgICAgKiB3aXRoIHJlc3BlY3QgdG8gdGhlIGdpdmVuIGF0dHJpYnV0ZSBjb250YWluaW5nIHRoZSBjdXJyZW50IGNoYXJhY3Rlci4KKyAgICAgKi8KKy8vLypKREsxMklNUE9SVFMKKyAgICBwdWJsaWMgaW50IGdldFJ1bkxpbWl0KEF0dHJpYnV0ZSBhdHRyaWJ1dGUpIHsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBnZXRSdW5MaW1pdChhdHRyaWJ1dGUsIEFUVFJfTUFUQ0hFUik7CisgICAgfQorLy9KREsxMklNUE9SVFMqLworCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBmb2xsb3dpbmcgdGhlIHJ1bgorICAgICAqIHdpdGggcmVzcGVjdCB0byB0aGUgZ2l2ZW4gYXR0cmlidXRlcyBjb250YWluaW5nIHRoZSBjdXJyZW50IGNoYXJhY3Rlci4KKyAgICAgKi8KKy8vLypKREsxMklNUE9SVFMKKyAgICBwdWJsaWMgaW50IGdldFJ1bkxpbWl0KFNldCBhdHRyaWJ1dGVzKSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gZ2V0UnVuTGltaXQoYXR0cmlidXRlcywgU0VUX01BVENIRVIpOworICAgIH0KKy8vSkRLMTJJTVBPUlRTKi8KKworICAgIHByaXZhdGUgaW50IGdldFJ1bkxpbWl0KE9iamVjdCBxdWVyeSwgTWF0Y2hlciBtYXRjaGVyKSB7CisKKyAgICAgICAgaW50IHJ1bkxpbWl0ID0gZ2V0UnVuTGltaXQoKTsKKyAgICAgICAgaW50IHJhbmdlTGltaXQgPSBnZXRFbmRJbmRleCgpOworICAgICAgICBNYXAgaW5pdGlhbFN0eWxlID0gZ2V0QXR0cmlidXRlcygpOworICAgICAgICAKKyAgICAgICAgd2hpbGUgKHJ1bkxpbWl0IDwgcmFuZ2VMaW1pdCkgeworICAgICAgICAgICAgQXR0cmlidXRlTWFwIHN0eWxlID0gZlRleHQuY2hhcmFjdGVyU3R5bGVBdChydW5MaW1pdCk7CisgICAgICAgICAgICBpZiAoIW1hdGNoZXIubWF0Y2hlcyhpbml0aWFsU3R5bGUsIHN0eWxlLCBxdWVyeSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcnVuTGltaXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBydW5MaW1pdCA9IGZUZXh0LmNoYXJhY3RlclN0eWxlTGltaXQocnVuTGltaXQpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByYW5nZUxpbWl0OworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgbWFwIHdpdGggdGhlIGF0dHJpYnV0ZXMgZGVmaW5lZCBvbiB0aGUgY3VycmVudAorICAgICAqIGNoYXJhY3Rlci4KKyAgICAgKi8KKyAgICBwdWJsaWMgTWFwIGdldEF0dHJpYnV0ZXMoKSB7CisgICAgICAgIHJldHVybiBmU3R5bGVDYWNoZS5nZXRTdHlsZShmQ2hhckl0ZXIuZ2V0SW5kZXgoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIG5hbWVkIGF0dHJpYnV0ZSBmb3IgdGhlIGN1cnJlbnQgY2hhcmFjdGVyLgorICAgICAqIFJldHVybnMgbnVsbCBpZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBkZWZpbmVkLgorICAgICAqIEBwYXJhbSBhdHRyaWJ1dGUgdGhlIGtleSBvZiB0aGUgYXR0cmlidXRlIHdob3NlIHZhbHVlIGlzIHJlcXVlc3RlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0IGdldEF0dHJpYnV0ZShPYmplY3QgYXR0cmlidXRlKSB7CisgICAgICAgIHJldHVybiBnZXRBdHRyaWJ1dGVzKCkuZ2V0KGF0dHJpYnV0ZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIG5hbWVkIGF0dHJpYnV0ZSBmb3IgdGhlIGN1cnJlbnQgY2hhcmFjdGVyLgorICAgICAqIFJldHVybnMgbnVsbCBpZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBkZWZpbmVkLgorICAgICAqIEBwYXJhbSBhdHRyaWJ1dGUgdGhlIGtleSBvZiB0aGUgYXR0cmlidXRlIHdob3NlIHZhbHVlIGlzIHJlcXVlc3RlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0IGdldEF0dHJpYnV0ZShBdHRyaWJ1dGUgYXR0cmlidXRlKSB7CisgICAgICAgIHJldHVybiBnZXRBdHRyaWJ1dGVzKCkuZ2V0KGF0dHJpYnV0ZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUga2V5cyBvZiBhbGwgYXR0cmlidXRlcyBkZWZpbmVkIG9uIHRoZQorICAgICAqIGl0ZXJhdG9yJ3MgdGV4dCByYW5nZS4gVGhlIHNldCBpcyBlbXB0eSBpZiBubworICAgICAqIGF0dHJpYnV0ZXMgYXJlIGRlZmluZWQuCisgICAgICovCisvLy8qSkRLMTJJTVBPUlRTCisgICAgcHVibGljIFNldCBnZXRBbGxBdHRyaWJ1dGVLZXlzKCkgeworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkltcGxlbWVudCB0aGlzIG1ldGhvZCEiKTsKKyAgICB9CisvL0pESzEySU1QT1JUUyovCisKKyAgICBwdWJsaWMgT2JqZWN0IGNsb25lKCkgeworICAgICAgICByZXR1cm4gbmV3IE1UZXh0SXRlcmF0b3IoZlRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmRm9udFJlc29sdmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0QmVnaW5JbmRleCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0RW5kSW5kZXgoKSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dGZvcm1hdC9QYXJhZ3JhcGhSZW5kZXJlci5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dGZvcm1hdC9QYXJhZ3JhcGhSZW5kZXJlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjZlYmIwNTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0Zm9ybWF0L1BhcmFncmFwaFJlbmRlcmVyLmphdmEKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogUGFyYWdyYXBoUmVuZGVyZXIuamF2YSx2ICQgJFJldmlzaW9uOiAxLjIgJCAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNjo0NCAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworLy8gUmVxdWlyZXMgSmF2YTIKK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0Zm9ybWF0OworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlTWFwOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5hdHRyaWJ1dGVzLlRleHRBdHRyaWJ1dGU7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuTUNvbnN0VGV4dDsKKworaW1wb3J0IGphdmEuYXd0LkNvbG9yOworCisvLy8qSkRLMTJJTVBPUlRTCitpbXBvcnQgamF2YS5hd3QuZm9udC5Gb250UmVuZGVyQ29udGV4dDsKK2ltcG9ydCBqYXZhLmF3dC5mb250LkxpbmVCcmVha01lYXN1cmVyOworaW1wb3J0IGphdmEuYXd0LkdyYXBoaWNzMkQ7CisvL0pESzEySU1QT1JUUyovCisKKy8qSkRLMTFJTVBPUlRTCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0bGF5b3V0LkZvbnRSZW5kZXJDb250ZXh0OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5MaW5lQnJlYWtNZWFzdXJlcjsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRsYXlvdXQuR3JhcGhpY3MyRDsKK0pESzExSU1QT1JUUyovCisKKy8qKgorICogUGFyYWdyYXBoUmVuZGVyZXIgaXMgYSBmYWN0b3J5IGZvciBMYXlvdXRJbmZvIG9iamVjdHMuCisgKi8KK2Fic3RyYWN0IGNsYXNzIFBhcmFncmFwaFJlbmRlcmVyIHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgLy8gSWYgcmVuZGVyZXJzIGNhbiBldmVyIHRyYXZlbCB3aXRoIHRoZWlyIHN0eWxlcywgdGhlbiB0aGlzIGF0dHJpYnV0ZSB3aWxsIGRlbm90ZSBhCisgICAgLy8gcmVuZGVyZXIuICBGb3Igbm93LCByZW5kZXJlcnMgYXJlIG5vdCBhZGRlZCBhcyBzdHlsZXMgc28gdGhpcyBpc24ndCBuZWVkZWQuCisgICAgLy9zdGF0aWMgZmluYWwgVGV4dEF0dHJpYnV0ZSBQQVJBR1JBUEhfUkVOREVSRVIgPSBuZXcgVGV4dEF0dHJpYnV0ZSgiUGFyYWdyYXBoX1JlbmRlcmVyIikge307CisKKyAgICAvKioKKyAgICAgKiBSZXNldCB0aGUgcmVuZGVyZXIgdG8gdXNlIGluZm9ybWF0aW9uIGZyb20gdGhpcyBzdHlsZS4gU2luY2UgcmVuZGVyZXJzIG1heSBiZSBzaGFyZWQsIHlvdSBzaG91bGQKKyAgICAgKiBtYWtlIHN1cmUgdGhlIHJlbmRlcmVyIGlzIGluaXRpYWxpemVkIGZvciB0aGUgc3R5bGUgeW91IHdpc2ggdG8gcmVuZGVyIGJlZm9yZSB5b3UgdXNlIGl0LgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGluaXRSZW5kZXJlcihBdHRyaWJ1dGVNYXAgcFN0eWxlKSB7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgTGF5b3V0SW5mbyBmb3IgdGhlIHBhcmFncmFwaCByZXByZXNlbnRlZCBieQorICAgICAqIG1lYXN1cmVyLgorICAgICAqIEBwYXJhbSB0ZXh0IHRoZSB0ZXh0IGNvbnRhaW5pbmcgdGhlIHBhcmFncmFwaAorICAgICAqIEBwYXJhbSBsYXlvdXRUb1JldXNlIGNsaWVudHMgY2FuIHBhc3MgaW4gYSBMYXlvdXRJbmZvCisgICAgICogd2hpY2ggdGhlIFBhcmFncmFwaFJlbmRlcmVyIG1heSBjaG9vc2UgdG8gcmV1c2UKKyAgICAgKiBhbmQgcmV0dXJuLiAgSWYgbnVsbCwgYSBuZXcgTGF5b3V0SW5mbyB3aWxsIGJlCisgICAgICogY3JlYXRlZCBhbmQgcmV0dXJuZWQuCisgICAgICogQHBhcmFtIG1lYXN1cmVyIHRoZSBMaW5lQnJlYWtNZWFzdXJlciBmb3IgdGhpcyBwYXJhZ3JhcGguCisgICAgICogIEN1cnJlbnQgcG9zaXRpb24gc2hvdWxkIGJlIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb24gdGhlIGxpbmUuCisgICAgICogIElmIG51bGwsIGEgMC1sZW5ndGggbGluZSBpcyBnZW5lcmF0ZWQuICBJZiBtZWFzdXJlciBpcyBudWxsCisgICAgICogIHRoZW4gcGFyYWdyYXBoU3RhcnQgYW5kIHBhcmFncmFwaExpbWl0IHNob3VsZCBiZSBlcXVhbC4KKyAgICAgKiBAcGFyYW0gZnJjIHRoZSBGb250UmVuZGVyQ29udGV4dCB1c2VkIGZvciBtZWFzdXJlcm1lbnQKKyAgICAgKiBAcGFyYW0gcGFyYWdyYXBoU3RhcnQgdGhlIGluZGV4IGluIHRoZSB0ZXh0IHdoZXJlIHRoZQorICAgICAqIGN1cnJlbnQgcGFyYWdyYXBoIGJlZ2lucworICAgICAqIEBwYXJhbSBwYXJhZ3JhcGhMaW1pdCB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY3RlcgorICAgICAqIGFmdGVyIHRoZSBjdXJyZW50IHBhcmFncmFwaAorICAgICAqIEBwYXJhbSB0b3RhbEZvcm1hdFdpZHRoIHRoZSB3aWR0aCBpbiB3aGljaCB0aGUgbGluZSBzaG91bGQgZml0CisgICAgICogQHBhcmFtIGxpbmVCb3VuZCB3aGVyZSByaWdodC1hbGlnbmVkIGxpbmVzIGFyZSBhbGlnbmVkCisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IExheW91dEluZm8gbGF5b3V0KE1Db25zdFRleHQgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0SW5mbyBsYXlvdXRUb1JldXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5lQnJlYWtNZWFzdXJlciBtZWFzdXJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9udFJlbmRlckNvbnRleHQgZnJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGFyYWdyYXBoU3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwYXJhZ3JhcGhMaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRvdGFsRm9ybWF0V2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lQm91bmQpOworCit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0Zm9ybWF0L1Rlc3RNVGV4dEl0ZXJhdG9yLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0Zm9ybWF0L1Rlc3RNVGV4dEl0ZXJhdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZTFhNWI0MwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRmb3JtYXQvVGVzdE1UZXh0SXRlcmF0b3IuamF2YQpAQCAtMCwwICsxLDEyMCBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogVGVzdE1UZXh0SXRlcmF0b3IuamF2YSx2ICQgJFJldmlzaW9uOiAxLjMgJCAkRGF0ZTogMjAwMi8xMi8xMyAwMDoxOTowOCAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworLy8gUmVxdWlyZXMgSmF2YTIKK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0Zm9ybWF0OworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0LlN0eWxlZFRleHQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1Db25zdFRleHQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1UZXh0OworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuVGV4dEF0dHJpYnV0ZTsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRsYXlvdXQuYXR0cmlidXRlcy5BdHRyaWJ1dGVNYXA7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5UZXh0UGFuZWw7CisKKy8qKgorICogVGVzdCBmb3IgTVRleHRJdGVyYXRvci4KKyAqLworY2xhc3MgVGVzdE1UZXh0SXRlcmF0b3IgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBGb250UmVzb2x2ZXIgRk9OVF9NQVBQRVI7CisgICAgc3RhdGljIHsKKyAgICAgICAgQXR0cmlidXRlTWFwIGF0dHJzID0gVGV4dFBhbmVsLmdldERlZmF1bHRTZXR0aW5ncygpLmdldERlZmF1bHRWYWx1ZXMoKTsKKyAgICAgICAgRk9OVF9NQVBQRVIgPSBuZXcgRm9udFJlc29sdmVyKGF0dHJzKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgY29tcGFyZUl0ZXJUb1RleHQoTVRleHRJdGVyYXRvciBpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQ29uc3RUZXh0IHRleHQpIHsKKworICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiVGV4dDogIiArIHRleHQpOworICAgICAgICBmaW5hbCBpbnQgYmVnaW5JbmRleCA9IGl0ZXIuZ2V0QmVnaW5JbmRleCgpOworICAgICAgICBmaW5hbCBpbnQgZW5kSW5kZXggPSBpdGVyLmdldEVuZEluZGV4KCk7CisKKyAgICAgICAgY2hhciBjaCA9IGl0ZXIuc2V0SW5kZXgoYmVnaW5JbmRleCk7CisKKyAgICAgICAgZm9yIChpbnQgaT1iZWdpbkluZGV4OyBpIDwgZW5kSW5kZXg7IGkrKykgeworICAgICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50KGNoKyAiICIpOworICAgICAgICAgICAgaWYgKGNoICE9IHRleHQuYXQoaSkpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkNoYXJhY3RlcnMgYXJlIG5vdCB0aGUgc2FtZS4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNoID0gaXRlci5uZXh0KCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY2ggIT0gaXRlci5ET05FKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkl0ZXJhdG9yIGlzIG5vdCBkb25lLiIpOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChpbnQgaT1lbmRJbmRleC0xOyBpID49IGJlZ2luSW5kZXg7IGktLSkgeworICAgICAgICAgICAgY2ggPSBpdGVyLnByZXZpb3VzKCk7CisgICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnQoY2grICIgIik7CisgICAgICAgICAgICBpZiAoY2ggIT0gdGV4dC5hdChpKSkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFja3dhcmQgaXRlcmF0aW9uIGZhaWxlZC4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGl0ZXIuc2V0SW5kZXgoYmVnaW5JbmRleCk7CisKKyAgICAgICAgaW50IHJ1bkxpbWl0OworICAgICAgICBmb3IgKGludCBydW5TdGFydCA9IGJlZ2luSW5kZXg7IHJ1blN0YXJ0IDwgZW5kSW5kZXg7IHJ1blN0YXJ0ID0gcnVuTGltaXQpIHsKKworICAgICAgICAgICAgcnVuTGltaXQgPSBNYXRoLm1pbihlbmRJbmRleCwgdGV4dC5jaGFyYWN0ZXJTdHlsZUxpbWl0KHJ1blN0YXJ0KSk7CisKKyAgICAgICAgICAgIGlmIChpdGVyLmdldFJ1blN0YXJ0KCkgIT0gcnVuU3RhcnQpIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oaXRlci5nZXRSdW5TdGFydCgpICsgIjsgIiArIHJ1blN0YXJ0KTsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImdldFJ1blN0YXJ0IGlzIHdyb25nLiIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGl0ZXIuZ2V0UnVuTGltaXQoKSAhPSBydW5MaW1pdCkgeworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihpdGVyLmdldFJ1bkxpbWl0KCkgKyAiOyAiICsgcnVuTGltaXQpOworICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiZ2V0UnVuTGltaXQgaXMgd3JvbmcuIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEF0dHJpYnV0ZU1hcCBzdHlsZSA9IHRleHQuY2hhcmFjdGVyU3R5bGVBdChydW5TdGFydCk7CisKKyAgICAgICAgICAgIHdoaWxlIChpdGVyLmdldEluZGV4KCkgPCBydW5MaW1pdCkgeworICAgICAgICAgICAgICAgIEF0dHJpYnV0ZU1hcCByZXNvbHZlZCA9IEZPTlRfTUFQUEVSLmFwcGx5Rm9udChzdHlsZSk7CisgICAgICAgICAgICAgICAgaWYgKCFpdGVyLmdldEF0dHJpYnV0ZXMoKS5lcXVhbHMocmVzb2x2ZWQpKSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiU3R5bGUgaXMgd3JvbmcuIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGl0ZXIubmV4dCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKworICAgICAgICBBdHRyaWJ1dGVNYXAgYm9sZCA9IG5ldyBBdHRyaWJ1dGVNYXAoVGV4dEF0dHJpYnV0ZS5XRUlHSFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0QXR0cmlidXRlLldFSUdIVF9CT0xEKTsKKyAgICAgICAgTVRleHQgdGV4dCA9IG5ldyBTdHlsZWRUZXh0KCJIZWxsbyB0aGVyZSEiLCBBdHRyaWJ1dGVNYXAuRU1QVFlfQVRUUklCVVRFX01BUCk7CisgICAgICAgIHRleHQucmVwbGFjZSgyLCAyLCAnVicsIGJvbGQpOworCisgICAgICAgIE1UZXh0SXRlcmF0b3IgaXRlciA9IG5ldyBNVGV4dEl0ZXJhdG9yKHRleHQsIEZPTlRfTUFQUEVSLCAwLCB0ZXh0Lmxlbmd0aCgpKTsKKyAgICAgICAgY29tcGFyZUl0ZXJUb1RleHQoaXRlciwgdGV4dCk7CisKKyAgICAgICAgdGV4dC5yZXBsYWNlKDYsIDgsIG5ldyBTdHlsZWRUZXh0KCJBTExfQk9MRCIsIGJvbGQpLCAwLCA4KTsKKyAgICAgICAgaXRlciA9IG5ldyBNVGV4dEl0ZXJhdG9yKHRleHQsIEZPTlRfTUFQUEVSLCAxLCB0ZXh0Lmxlbmd0aCgpLTMpOworICAgICAgICBjb21wYXJlSXRlclRvVGV4dChpdGVyLCB0ZXh0KTsKKworICAgICAgICBpdGVyID0gbmV3IE1UZXh0SXRlcmF0b3IodGV4dCwgRk9OVF9NQVBQRVIsIDAsIHRleHQubGVuZ3RoKCkpOworICAgICAgICBjb21wYXJlSXRlclRvVGV4dChpdGVyLCB0ZXh0KTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisKKyAgICAgICAgbmV3IFRlc3RNVGV4dEl0ZXJhdG9yKCkudGVzdCgpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlBBU1NFRCIpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRmb3JtYXQvVGV4dE9mZnNldC5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dGZvcm1hdC9UZXh0T2Zmc2V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOWQxYzNlYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRmb3JtYXQvVGV4dE9mZnNldC5qYXZhCkBAIC0wLDAgKzEsMTk4IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBUZXh0T2Zmc2V0LmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NTA6MDMgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KKy8vIFJldmlzaW9uOiAwMyAxLjE2IHJpY2h0ZXh0L1RleHRPZmZzZXQuamF2YSwgcmljaHRleHQsIHJpY2h0ZXh0CisKKy8qCisgICAgOS81Lzk2IHtqYnJ9IGFkZGVkIHNldCBhbmQgZXF1YWxzIG1ldGhvZHMKKyovCisKK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0Zm9ybWF0OworCisvKioKKyAqIEEgVGV4dE9mZnNldCBpbmRpY2F0ZXMgYm90aCBhbiBpbnRlZ2VyIG9mZnNldCBpbnRvIHRleHQgYW5kIGEgcGxhY2VtZW50CisgKiBvbiBvbmUgb2YgdGhlIGNoYXJhY3RlcnMgYWRqYWNlbnQgdG8gdGhlIG9mZnNldC4gIEFuIG9mZnNldCBpcyBhCisgKiBwb3NpdGlvbiBiZXR3ZWVuIHR3byBjaGFyYWN0ZXJzOyAgb2Zmc2V0IG4KKyAqIGlzIGJldHdlZW4gY2hhcmFjdGVyIG4tMSBhbmQgY2hhcmFjdGVyIG4uICBUaGUgcGxhY2VtZW50IHNwZWNpZmllcyB3aGV0aGVyCisgKiBpdCBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIGNoYXJhY3RlcgorICogYWZ0ZXIgdGhlIG9mZnNldAorICogKGNoYXJhY3RlciBuKSBvciB0aGUgY2hhcmFjdGVyIGJlZm9yZSB0aGUgb2Zmc2V0IChjaGFyYWN0ZXIgbi0xKS4KKyAqIDxwPgorICogS25vd2luZyB3aGljaCBjaGFyYWN0ZXIgdGhlIFRleHRPZmZzZXQgaXMgYXNzb2NpYXRlZCB3aXRoIGlzIG5lY2Vzc2FyeQorICogd2hlbiBkaXNwbGF5aW5nIGNhcmV0cy4gIEluIGJpZGlyZWN0aW9uYWwgdGV4dCwgYSBzaW5nbGUgb2Zmc2V0IG1heQorICogaGF2ZSB0d28gZGlzdGluY3QgY2FyZXRzLiAgQWxzbywgaW4gbXVsdGlsaW5lIHRleHQsIGFuIG9mZnNldCBhdCBhIGxpbmUKKyAqIGJyZWFrIGhhcyBhIHBvc3NpYmxlIGNhcmV0IG9uIGVhY2ggbGluZS4KKyAqIDxwPgorICogTW9zdCBjbGllbnRzIHdpbGwgbm90IGJlIGludGVyZXN0ZWQgaW4gdGhlIHBsYWNlbWVudCwgYW5kIHdpbGwganVzdCB1c2UKKyAqIHRoZSBvZmZzZXQuCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBUZXh0T2Zmc2V0Cit7CisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICAvKioKKyAgICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgVGV4dE9mZnNldCBpcyBhc3NvY2lhdGVkIHdpdGggY2hhcmFjdGVyCisgICAgICogPGNvZGU+Zk9mZnNldCAtIDE8L2NvZGU+IC0gaWUgdGhlIGNoYXJhY3RlciBiZWZvcmUgaXRzIG9mZnNldC4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGJvb2xlYW4gQkVGT1JFX09GRlNFVCA9IHRydWU7CisKKyAgICAvKioKKyAgICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgVGV4dE9mZnNldCBpcyBhc3NvY2lhdGVkIHdpdGggY2hhcmFjdGVyCisgICAgICogPGNvZGU+Zk9mZnNldDwvY29kZT4gLSBpZSB0aGUgY2hhcmFjdGVyIGFmdGVyIGl0cyBvZmZzZXQuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBib29sZWFuIEFGVEVSX09GRlNFVCA9IGZhbHNlOworCisgICAgLyoqCisgICAgICogVGhlIG9mZnNldCBpbnRvIHRoZSB0ZXh0LgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZk9mZnNldCA9IDA7CisKKyAgICAvKioKKyAgICAgKiBUaGUgcGxhY2VtZW50IC0gYmVmb3JlIG9yIGFmdGVyLgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGZQbGFjZW1lbnQgPSBBRlRFUl9PRkZTRVQ7CisKKyAgICAvKioKKyAgICAqIENvbnN0cnVjdHMgYSBuZXcgVGV4dE9mZnNldAorICAgICogQHBhcmFtIG9mZnNldCB0aGUgb2Zmc2V0IGludG8gdGhlIHRleHQgdG8gcmVwcmVzZW50LiAgUGxhY2VtZW50IGlzIGltcGxpY2l0bHkgQUZURVJfT0ZGU0VULgorICAgICovCisgICAgcHVibGljIFRleHRPZmZzZXQoaW50IG9mZnNldCkKKyAgICB7CisgICAgICAgIGlmIChvZmZzZXQgPCAwKQorICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiT2Zmc2V0IGlzIG5lZ2F0aXZlIGluIFRleHRPZmZzZXQgY29uc3RydWN0b3IuIik7CisKKyAgICAgICAgZk9mZnNldCA9IG9mZnNldDsKKworICAgICAgICBmUGxhY2VtZW50ID0gQUZURVJfT0ZGU0VUOworICAgIH0KKworICAgIC8qKgorICAgICogQ29uc3RydWN0cyBhIG5ldyBUZXh0T2Zmc2V0IGF0IDAsIHdpdGggcGxhY2VtZW50IEFGVEVSX09GRlNFVC4KKyAgICAqLworICAgIHB1YmxpYyBUZXh0T2Zmc2V0KCkgeworICAgICAgICB0aGlzKDApOworICAgIH0KKworICAgIC8qKgorICAgICogQ29uc3RydWN0cyBhIG5ldyBUZXh0T2Zmc2V0IHdpdGggdGhlIGdpdmVuIG9mZnNldCBhbmQgcGxhY2VtZW50LgorICAgICogQHBhcmFtIG9mZnNldCB0aGUgb2Zmc2V0IGludG8gdGhlIHRleHQKKyAgICAqIEBwYXJhbSBwbGFjZW1lbnQgaW5kaWNhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgY2FyZXQ7IG9uZSBvZiBCRUZPUkVfT0ZGU0VUIG9yIEFGVEVSX09GRlNFVAorICAgICovCisgICAgcHVibGljIFRleHRPZmZzZXQoaW50IG9mZnNldCwgYm9vbGVhbiBwbGFjZW1lbnQpCisgICAgeworICAgICAgICBpZiAob2Zmc2V0IDwgMCkKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlRleHRPZmZzZXQgY29uc3RydWN0b3Igb2Zmc2V0IDwgMDogIiArIG9mZnNldCk7CisKKyAgICAgICAgZk9mZnNldCA9IG9mZnNldDsKKyAgICAgICAgZlBsYWNlbWVudCA9IHBsYWNlbWVudDsKKyAgICB9CisKKyAgICAvKioKKyAgICAqIENvbnN0cnVjdHMgYSBuZXcgVGV4dE9mZnNldCBmcm9tIGFuIGV4aXN0aW5nIG9uZS4KKyAgICAqIEBwYXJhbSB0aHMgdGhlIFRleHRPZmZzZXQgdG8gY29weQorICAgICovCisgICAgcHVibGljIFRleHRPZmZzZXQoVGV4dE9mZnNldCByaHMpIHsKKworICAgICAgICB0aGlzKHJocy5mT2Zmc2V0LCByaHMuZlBsYWNlbWVudCk7CisgICAgfQorCisgICAgLyoqCisgICAgKiBTZXQgdGhlIHZhbHVlIG9mIHRoZSBUZXh0T2Zmc2V0CisgICAgKiBAcGFyYW0gb2Zmc2V0IHRoZSBvZmZzZXQgaW50byB0aGUgdGV4dAorICAgICogQHBhcmFtIHBsYWNlbWVudCBpbmRpY2F0ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBjYXJldDsgb25lIG9mIEJFRk9SRV9PRkZTRVQgb3IgQUZURVJfT0ZGU0VUCisgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRPZmZzZXQoaW50IG9mZnNldCwgYm9vbGVhbiBwbGFjZW1lbnQpCisgICAgeworICAgICAgICBpZiAob2Zmc2V0IDwgMCkKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlRleHRPZmZzZXQgc2V0T2Zmc2V0IG9mZnNldCA8IDA6ICIgKyBvZmZzZXQpOworCisgICAgICAgIGZPZmZzZXQgPSBvZmZzZXQ7CisgICAgICAgIGZQbGFjZW1lbnQgPSBwbGFjZW1lbnQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29tcGFyZSB0aGlzIHRvIGFub3RoZXIgT2JqZWN0LgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb3RoZXIpIHsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJuIGVxdWFscygoVGV4dE9mZnNldClvdGhlcik7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2goQ2xhc3NDYXN0RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICogUmV0dXJuIHRydWUgaWYgb2Zmc2V0IGFuZCBwbGFjZW1lbnQgYXJlIHRoZSBzYW1lLgorICAgICoKKyAgICAqIEBwYXJhbSBvdGhlciBvZmZzZXQgdG8gY29tcGFyZSBhZ2FpbnN0CisgICAgKiBAcmV0dXJuIHRydWUgaWYgYm90aCBvZmZzZXRzIGFyZSBlcXVhbAorICAgICovCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKFRleHRPZmZzZXQgb3RoZXIpIHsKKworICAgICAgICByZXR1cm4gZk9mZnNldCA9PSBvdGhlci5mT2Zmc2V0ICYmIGZQbGFjZW1lbnQgPT0gb3RoZXIuZlBsYWNlbWVudDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGhhc2hDb2RlIGZvciB0aGlzIG9iamVjdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgeworCisgICAgICAgIHJldHVybiBmUGxhY2VtZW50PT1BRlRFUl9PRkZTRVQ/IGZPZmZzZXQgOiAtZk9mZnNldDsKKyAgICB9CisKKyAgICAvKioKKyAgICAqIFJldHVybiB0cnVlIGlmIHRoaXMgb2Zmc2V0IGlzICdncmVhdGVyVGhhbicgb3RoZXIuICBJZiB0aGUgZk9mZnNldCBmaWVsZHMgYXJlIGVxdWFsLCB0aGUKKyAgICAqIHBsYWNlbWVudCBmaWVsZCBpcyBjb25zaWRlcmVkLCBhbmQgQUZURVJfT0ZGU0VUIGlzIGNvbnNpZGVyZWQgJ2dyZWF0ZXJUaGFuJyBCRUZPUkVfT0ZGU0VULgorICAgICoKKyAgICAqIEBwYXJhbSBvdGhlciB0aGUgb3RoZXIgb2Zmc2V0CisgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhpcyBvZmZzZXQgYXBwZWFycyBhZnRlciBvdGhlcgorICAgICovCisgICAgcHVibGljIGJvb2xlYW4gZ3JlYXRlclRoYW4oVGV4dE9mZnNldCBvdGhlcikKKyAgICB7CisgICAgICAgIHJldHVybiBmT2Zmc2V0ID4gb3RoZXIuZk9mZnNldCB8fAorICAgICAgICAgICAgKGZPZmZzZXQgPT0gb3RoZXIuZk9mZnNldCAmJiBmUGxhY2VtZW50ID09IEFGVEVSX09GRlNFVCAmJiBvdGhlci5mUGxhY2VtZW50ID09IEJFRk9SRV9PRkZTRVQpOworICAgIH0KKworICAgIC8qKgorICAgICogUmV0dXJuIHRydWUgaWYgdGhpcyBvZmZzZXQgaXMgJ2xlc3NUaGFuJyBvdGhlci4gIElmIHRoZSBmT2Zmc2V0IGZpZWxkcyBhcmUgZXF1YWwsIHRoZQorICAgICogcGxhY2VtZW50IGZpZWxkIGlzIGNvbnNpZGVyZWQsIGFuZCBCRUZPUkVfT0ZGU0VUIGlzIGNvbnNpZGVyZWQgJ2xlc3NUaGFuJyBBRlRFUl9PRkZTRVQuCisgICAgKgorICAgICogQHBhcmFtIG90aGVyIHRoZSBvdGhlciBvZmZzZXQKKyAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGlzIG9mZnNldCBhcHBlYXJzIGJlZm9yZSBvdGhlcgorICAgICovCisgICAgcHVibGljIGJvb2xlYW4gbGVzc1RoYW4oVGV4dE9mZnNldCBvdGhlcikgeworCisgICAgICAgIHJldHVybiBmT2Zmc2V0IDwgb3RoZXIuZk9mZnNldCB8fAorICAgICAgICAgICAgKGZPZmZzZXQgPT0gb3RoZXIuZk9mZnNldCAmJiBmUGxhY2VtZW50ID09IEJFRk9SRV9PRkZTRVQgJiYgb3RoZXIuZlBsYWNlbWVudCA9PSBBRlRFUl9PRkZTRVQpOworICAgIH0KKworICAgIC8qKgorICAgICogQ29weSB0aGUgdmFsdWUgb2YgYW5vdGhlciBUZXh0T2Zmc2V0IGludG8gdGhpcworICAgICogQHBhcmFtIG90aGVyIHRoZSBUZXh0T2Zmc2V0IHRvIGNvcHkKKyAgICAqLworICAgIHB1YmxpYyB2b2lkIGFzc2lnbihUZXh0T2Zmc2V0IG90aGVyKSB7CisgICAgICAgIGZPZmZzZXQgPSBvdGhlci5mT2Zmc2V0OworICAgICAgICBmUGxhY2VtZW50ID0gb3RoZXIuZlBsYWNlbWVudDsKKyAgICB9CisKKyAgICAvKioKKyAgICAqIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIG9iamVjdC4KKyAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisKKyAgICAgICAgcmV0dXJuICJbIiArIChmUGxhY2VtZW50ID8gImJlZm9yZSAiIDogImFmdGVyICIpICsgZk9mZnNldCArICJdIjsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0Zm9ybWF0L3BhY2thZ2UuaHRtbCBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRmb3JtYXQvcGFja2FnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3ZjE2YmIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0Zm9ybWF0L3BhY2thZ2UuaHRtbApAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPjwhLS0gIENvcHlyaWdodCAoQykgMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQKKyAgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorLS0+CisKKzx0aXRsZT5DOklDVTRKIC5sYW5nIFBhY2thZ2UgT3ZlcnZpZXc8L3RpdGxlPgorPC9oZWFkPgorCis8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSI+CisKKzxwPkNsYXNzZXMgdGhhdCBmb3JtYXQgdGV4dCBpbiBhIGJhY2tncm91bmQgdGhyZWFkIGFuZCByZW5kZXIgdGhlIGZvcm1hdHRlZCB0ZXh0IHRvIGEgZ3JhcGhpY3MuPC9wPgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0bGF5b3V0L0ZvbnRVdGlscy5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dGxheW91dC9Gb250VXRpbHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42YjA5YmFhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dGxheW91dC9Gb250VXRpbHMuamF2YQpAQCAtMCwwICsxLDI5IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBGb250VXRpbHMuamF2YSx2ICQgJFJldmlzaW9uOiAxLjIgJCAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNjo0NCAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworLy8gUmVxdWlyZXMgSmF2YTIKK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0bGF5b3V0OworCitpbXBvcnQgamF2YS5hd3QuRm9udDsKKworcHVibGljIGZpbmFsIGNsYXNzIEZvbnRVdGlscyB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgICAgICAgICAgICAgIAorICAgIHB1YmxpYyBzdGF0aWMgRm9udCBnZXRGb250KGphdmEudXRpbC5NYXAgYXR0cmlidXRlcykgeworCisgICAgICAgIHJldHVybiBGb250LmdldEZvbnQoYXR0cmlidXRlcyk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRsYXlvdXQvR3JhcGhpY3MyRENvbnZlcnNpb24uamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRsYXlvdXQvR3JhcGhpY3MyRENvbnZlcnNpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xYjFiZmJkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dGxheW91dC9HcmFwaGljczJEQ29udmVyc2lvbi5qYXZhCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IEdyYXBoaWNzMkRDb252ZXJzaW9uLmphdmEsdiAkICRSZXZpc2lvbjogMS4yICQgJERhdGU6IDIwMDIvMDIvMTYgMDM6MDY6NDQgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KKy8vIFJlcXVpcmVzIEphdmEyCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dDsKKworaW1wb3J0IGphdmEuYXd0LkdyYXBoaWNzOworaW1wb3J0IGphdmEuYXd0LkdyYXBoaWNzMkQ7CitpbXBvcnQgamF2YS5hd3QuUGFpbnQ7CisKKy8qKgorICogVGhpcyBjbGFzcyBhbGxvd3MgSkRLIDEuMSBjb2RlIHRvIHVzZSBhICJmYWtlIiBHcmFwaGljczJECisgKiBmb3Igc291cmNlLWNvZGUgY29tcGF0aWJpbGl0eSB3aXRoIEphdmEyIGNvZGUuICBPbiBKYXZhMiBpdCdzCisgKiBhIHRyaXZpYWwgY2xhc3MuICBUaGUgSkRLIDEuMSB2ZXJzaW9uIG9mIHRoaXMgY2xhc3MgZG9lcyBpbnRlcmVzdGluZworICogd29yay4KKyAqLyAKK3B1YmxpYyBmaW5hbCBjbGFzcyBHcmFwaGljczJEQ29udmVyc2lvbiB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgICAgICAgICAgICAgIAorICAgIHB1YmxpYyBzdGF0aWMgR3JhcGhpY3MyRCBnZXRHcmFwaGljczJEKEdyYXBoaWNzIGcpIHsKKyAgICAgICAgcmV0dXJuIChHcmFwaGljczJEKSBnOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgR3JhcGhpY3MgZ2V0R3JhcGhpY3MoR3JhcGhpY3MyRCBnKSB7CisgICAgICAgIHJldHVybiBnOworICAgIH0KKworICAgIC8qKgorICAgICAqIFdpbGwgcmV0dXJuIGFuIGluc3RhbmNlIG9mIFBhaW50LgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgT2JqZWN0IGdldENvbG9yU3RhdGUoR3JhcGhpY3MyRCBnKSB7CisKKyAgICAgICAgcmV0dXJuIGcuZ2V0UGFpbnQoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTdGF0ZSBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIFBhaW50LgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCByZXN0b3JlQ29sb3JTdGF0ZShHcmFwaGljczJEIGcsIE9iamVjdCBzdGF0ZSkgeworCisgICAgICAgIGcuc2V0UGFpbnQoKFBhaW50KSBzdGF0ZSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRsYXlvdXQvYXR0cmlidXRlcy9BdHRyaWJ1dGVLZXkuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRsYXlvdXQvYXR0cmlidXRlcy9BdHRyaWJ1dGVLZXkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4zODg0NTk0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dGxheW91dC9hdHRyaWJ1dGVzL0F0dHJpYnV0ZUtleS5qYXZhCkBAIC0wLDAgKzEsMTY1IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBBdHRyaWJ1dGVLZXkuamF2YSx2ICQgJFJldmlzaW9uOiAxLjIgJCAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNjo0NSAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRleHRsYXlvdXQuYXR0cmlidXRlczsKKworaW1wb3J0IGphdmEuaW8uU2VyaWFsaXphYmxlOworCisvKioKKyAqIFRoaXMgY2xhc3MgcHJvdmlkZXMgYSBjYW5ub25pY2FsIG1hcHBpbmcgYmV0d2VlbiBmaWVsZHMgaW4gVGV4dEF0dHJpYnV0ZQorICogYW5kIGluc3RhbmNlcyBvZiBpdHNlbGYuICBJdCBpcyB1c2VkIGJ5IEF0dHJpYnV0ZU1hcCB0byBzZXJpYWxpemUKKyAqIGFuZCBkZXNlcmlhbGl6ZSBUZXh0QXR0cmlidXRlIHRvIHByZXNlcnZlIHVuaXF1ZW5lc3Mgb2YgVGV4dEF0dHJpYnV0ZQorICogaW5zdGFuY2VzIChpZSBzbyB0aGF0IFRleHRBdHRyaWJ1dGUgaW5zdGFuY2VzIHJlbWFpbiBzaW5nbGV0b25zKSwKKyAqIGFuZCB0byBwcm92aWRlIGNvbXBhdGFiaWxpdHkgYmV0d2VlbiAxLjEgYW5kIDEuMiB2ZXJzaW9ucyBvZgorICogVGV4dEF0dHJpYnV0ZS4KKyAqIDxwPgorICogRXhhbXBsZSB1c2UgLSBpbnN0ZWFkIG9mIGRvaW5nIHRoaXM6CisgKiA8YmxvY2txdW90ZT48cHJlPgorICogICAgIG91dC53cml0ZU9iamVjdChhbkF0dHJpYnV0ZSk7CisgKiA8L3ByZT48L2Jsb2NrcXVvdGU+CisgKiBkbyB0aGlzOgorICogPGJsb2NrcXVvdGU+PHByZT4KKyAqICAgICBvdXQud3JpdGVPYmplY3QoQXR0cmlidXRlS2V5Lm1hcEF0dHJpYnV0ZVRvS2V5KGFuQXR0cmlidXRlKSk7CisgKiA8L3ByZT48L2Jsb2NrcXVvdGU+CisgKiBTaW1pbGFybHksIGluc3RlYWQgb2YgdGhpczoKKyAqIDxibG9ja3F1b3RlPjxwcmU+CisgKiAgICAgYW5BdHRyaWJ1dGUgPSBpbi5yZWFkT2JqZWN0KCk7CisgKiA8L3ByZT48L2Jsb2NrcXVvdGU+CisgKiBkbyB0aGlzOgorICogPGJsb2NrcXVvdGU+PHByZT4KKyAqICAgICBhbkF0dHJpYnV0ZSA9IEF0dHJpYnV0ZUtleS5tYXBLZXlUb0F0dHJpYnV0ZShpbi5yZWFkT2JqZWN0KCkpOworICogPC9wcmU+PC9ibG9ja3F1b3RlPgorICogPHA+CisgKiBJZiBhbkF0dHJpYnV0ZSBpcyBub3QgYSBrbm93biBUZXh0QXR0cmlidXRlLCB0aGVuIDxjb2RlPm1hcEF0dHJpYnV0ZVRvS2V5PC9jb2RlPgorICogd2lsbCBqdXN0IHJldHVybiBpdHMgYXJndW1lbnQuICBTaW1pbGFybHksIDxjb2RlPm1hcEtleVRvQXR0cmlidXRlPC9jb2RlPiB3aWxsCisgKiByZXR1cm4gaXRzIGFyZ3VtZW50IGlmIHRoZSBhcmd1bWVudCBpcyBub3QgYSBrbm93biBBdHRyaWJ1dGVLZXkuCisgKi8KKworLypwdWJsaWMqLyBmaW5hbCBjbGFzcyBBdHRyaWJ1dGVLZXkgaW1wbGVtZW50cyBTZXJpYWxpemFibGUgeworCisvKgorICAgIEluIHRoaXMgaW1wbGVtZW50YXRpb24sIHR3byBwYXJhbGxlbCBWZWN0b3JzIGFyZQorICAgIG1haW50YWluZWQuICBUZXh0QXR0cmlidXRlKGkpIG1hcHMgdG8gQXR0cmlidXRlS2V5KGkpLgorICAgIEZvciBjb21wYXRhYmlsaXR5IHdpdGggZXhpc3RpbmcgZGF0YSwgdGhpcyBtYXBwaW5nIG11c3QKKyAgICBiZSBtYWludGFpbmVkIGluIHRoZSBmdXR1cmUhICBTbywgd2hlbiBuZXcgYXR0cmlidXRlcworICAgIGFyZSBhZGRlZCwgYWRkIHRoZW0gdG8gdGhlIGVuZCBvZiB0aGUgbGlzdC4KKyovCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAzNzcyMzcxMjUzMjc3MTA3Mjk0TDsKKworICAgIHByaXZhdGUgc3RhdGljIE9iamVjdFtdIGZnVGV4dEF0dHJpYnV0ZXM7CisgICAgcHJpdmF0ZSBzdGF0aWMgT2JqZWN0W10gZmdBdHRyaWJ1dGVLZXlzOworCisgICAgc3RhdGljIHsKKyAgICAgICAgZmdUZXh0QXR0cmlidXRlcyA9IG5ldyBPYmplY3RbXSB7CisgICAgICAgICAgICBUZXh0QXR0cmlidXRlLkZPTlQsCisgICAgICAgICAgICBUZXh0QXR0cmlidXRlLkZBTUlMWSwKKyAgICAgICAgICAgIFRleHRBdHRyaWJ1dGUuV0VJR0hULAorICAgICAgICAgICAgVGV4dEF0dHJpYnV0ZS5QT1NUVVJFLAorICAgICAgICAgICAgVGV4dEF0dHJpYnV0ZS5TSVpFLAorICAgICAgICAgICAgVGV4dEF0dHJpYnV0ZS5TVVBFUlNDUklQVCwKKyAgICAgICAgICAgIFRleHRBdHRyaWJ1dGUuRk9SRUdST1VORCwKKyAgICAgICAgICAgIFRleHRBdHRyaWJ1dGUuQkFDS0dST1VORCwKKyAgICAgICAgICAgIFRleHRBdHRyaWJ1dGUuVU5ERVJMSU5FLAorICAgICAgICAgICAgVGV4dEF0dHJpYnV0ZS5TVFJJS0VUSFJPVUdILAorICAgICAgICAgICAgVGV4dEF0dHJpYnV0ZS5DSEFSX1JFUExBQ0VNRU5ULAorICAgICAgICAgICAgVGV4dEF0dHJpYnV0ZS5FWFRSQV9MSU5FX1NQQUNJTkcsCisgICAgICAgICAgICBUZXh0QXR0cmlidXRlLkZJUlNUX0xJTkVfSU5ERU5ULAorICAgICAgICAgICAgVGV4dEF0dHJpYnV0ZS5NSU5fTElORV9TUEFDSU5HLAorICAgICAgICAgICAgVGV4dEF0dHJpYnV0ZS5MSU5FX0ZMVVNILAorICAgICAgICAgICAgVGV4dEF0dHJpYnV0ZS5MRUFESU5HX01BUkdJTiwKKyAgICAgICAgICAgIFRleHRBdHRyaWJ1dGUuVFJBSUxJTkdfTUFSR0lOLAorICAgICAgICAgICAgVGV4dEF0dHJpYnV0ZS5UQUJfUlVMRVIsCisgICAgICAgICAgICBUZXh0QXR0cmlidXRlLlJVTl9ESVJFQ1RJT04sCisgICAgICAgICAgICBUZXh0QXR0cmlidXRlLkJJRElfRU1CRURESU5HLAorICAgICAgICAgICAgVGV4dEF0dHJpYnV0ZS5KVVNUSUZJQ0FUSU9OLAorICAgICAgICB9OworCisgICAgICAgIGZpbmFsIGludCBhdHRyQ291bnQgPSBmZ1RleHRBdHRyaWJ1dGVzLmxlbmd0aDsKKyAgICAgICAgZmdBdHRyaWJ1dGVLZXlzID0gbmV3IE9iamVjdFthdHRyQ291bnRdOworCisgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IGF0dHJDb3VudDsgaSArPSAxKSB7CisgICAgICAgICAgICBmZ0F0dHJpYnV0ZUtleXNbaV0gPSBuZXcgQXR0cmlidXRlS2V5KGkpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBUZXh0QXR0cmlidXRlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIGtleS4KKyAgICAgKiBJZiBrZXkgaXMgYW4gaW5zdGFuY2Ugb2YgQXR0cmlidXRlS2V5IGl0IHdpbGwgYmUgbWFwcGVkIHRvCisgICAgICogYSBUZXh0QXR0cmlidXRlLiAgT3RoZXJ3aXNlLCB0aGUga2V5IGlzIHJldHVybmVkLgorICAgICAqIEBwYXJhbSBrZXkgdGhlIGtleSB0byBtYXAgdG8gYSBUZXh0QXR0cmlidXRlIGZpZWxkCisgICAgICogQHJldHVybiB0aGUgVGV4dEF0dHJpYnV0ZSBmb3IgPGNvZGU+a2V5PC9jb2RlPiBpZiA8Y29kZT5rZXk8L2NvZGU+CisgICAgICogICAgaXMgYW4gQXR0cmlidXRlS2V5OyBvdGhlcndpc2UgPGNvZGU+a2V5PC9jb2RlPiBpcyByZXR1cm5lZAorICAgICAqLworICAgIC8qcHVibGljKi8gc3RhdGljIE9iamVjdCBtYXBLZXlUb0F0dHJpYnV0ZShPYmplY3Qga2V5KSB7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIEF0dHJpYnV0ZUtleSBhS2V5ID0gKEF0dHJpYnV0ZUtleSkga2V5OworICAgICAgICAgICAgaWYgKGFLZXkuZklkIDwgZmdUZXh0QXR0cmlidXRlcy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmdUZXh0QXR0cmlidXRlc1thS2V5LmZJZF07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4ga2V5OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhdGNoKENsYXNzQ2FzdEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICByZXR1cm4ga2V5OworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogSWYgYXR0cmlidXRlIGlzIGEga25vd24gVGV4dEF0dHJpYnV0ZSwgcmV0dXJuIGFuIEF0dHJpYnV0ZUtleQorICAgICAqIGZvciBpdC4gIE90aGVyd2lzZSB0aGUgb2JqZWN0IGlzIHJldHVybmVkLgorICAgICAqIEBwYXJhbSBhdHRyaWJ1dGUgdGhlIGF0dHJpYnV0ZSB0byBtYXAgdG8gYW4gQXR0cmlidXRlS2V5CisgICAgICogQHJldHVybiBhbiBBdHRyaWJ1dGVLZXkgZm9yIDxjb2RlPmF0dHJpYnV0ZTwvY29kZT4KKyAgICAgKiAgICAgaWYgPGNvZGU+YXR0cmlidXRlPC9jb2RlPiBpcyBhIGtub3duIGF0dHJpYnV0ZTsgb3RoZXJ3aXNlCisgICAgICogICAgIDxjb2RlPmF0dHJpYnV0ZTwvY29kZT4gaXMgcmV0dXJuZWQKKyAgICAgKi8KKyAgICAvKnB1YmxpYyovIHN0YXRpYyBPYmplY3QgbWFwQXR0cmlidXRlVG9LZXkoT2JqZWN0IGF0dHJpYnV0ZSkgeworCisgICAgICAgIGZpbmFsIGludCBhdHRyQ291bnQgPSBmZ1RleHRBdHRyaWJ1dGVzLmxlbmd0aDsKKyAgICAgICAgCisgICAgICAgIGZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCBhdHRyQ291bnQ7IGluZGV4ICs9IDEpIHsKKyAgICAgICAgICAgIGlmIChmZ1RleHRBdHRyaWJ1dGVzW2luZGV4XS5lcXVhbHMoYXR0cmlidXRlKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBmZ0F0dHJpYnV0ZUtleXNbaW5kZXhdOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gYXR0cmlidXRlOworICAgIH0KKworCisgICAgcHJpdmF0ZSBpbnQgZklkOworCisgICAgcHJpdmF0ZSBBdHRyaWJ1dGVLZXkoaW50IGlkKSB7CisKKyAgICAgICAgZklkID0gaWQ7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCByaHMpIHsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJuICgoQXR0cmlidXRlS2V5KXJocykuZklkID09IGZJZDsKKyAgICAgICAgfQorICAgICAgICBjYXRjaChDbGFzc0Nhc3RFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKKworICAgICAgICByZXR1cm4gZklkOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0bGF5b3V0L2F0dHJpYnV0ZXMvQXR0cmlidXRlTWFwLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0bGF5b3V0L2F0dHJpYnV0ZXMvQXR0cmlidXRlTWFwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMGExYjRjYwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRsYXlvdXQvYXR0cmlidXRlcy9BdHRyaWJ1dGVNYXAuamF2YQpAQCAtMCwwICsxLDUyOSBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogQXR0cmlidXRlTWFwLmphdmEsdiAkICRSZXZpc2lvbjogMS4yICQgJERhdGU6IDIwMDIvMDIvMTYgMDM6MDY6NDUgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KKy8vIFJlcXVpcmVzIEphdmEyCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5hdHRyaWJ1dGVzOworCitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247CitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOworaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuU2V0OworCitpbXBvcnQgamF2YS5pby5FeHRlcm5hbGl6YWJsZTsKK2ltcG9ydCBqYXZhLmlvLk9iamVjdElucHV0OworaW1wb3J0IGphdmEuaW8uT2JqZWN0T3V0cHV0OworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CisKKworLyoqCisgKiBBdHRyaWJ1dGVNYXAgaXMgYW4gaW1tdXRhYmxlIE1hcC4gIEFkZGl0aW9uYWxseSwgdGhlcmUgYXJlCisgKiBzZXZlcmFsIG1ldGhvZHMgZm9yIGNvbW1vbiBvcGVyYXRpb25zICh1bmlvbiwKKyAqIHJlbW92ZSwgaW50ZXJzZWN0KTsgIHRoZXNlIG1ldGhvZHMgcmV0dXJuIG5ldyBBdHRyaWJ1dGVNYXAKKyAqIGluc3RhbmNlcy4KKyAqIDxwPgorICogQWx0aG91Z2ggYW55IG5vbi1udWxsIE9iamVjdCBjYW4gYmUgYSBrZXkgb3IgdmFsdWUgaW4gYW4KKyAqIEF0dHJpYnV0ZU1hcCwgdHlwaWNhbGx5IHRoZSBrZXlzIGFyZSBmaWVsZHMgb2YgVGV4dEF0dHJpYnV0ZS4KKyAqIEBzZWUgVGV4dEF0dHJpYnV0ZQorICovCitwdWJsaWMgZmluYWwgY2xhc3MgQXR0cmlidXRlTWFwIGltcGxlbWVudHMgamF2YS51dGlsLk1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tLmlibS5yaWNodGV4dC50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuTWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHRlcm5hbGl6YWJsZSB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDVVJSRU5UX1ZFUlNJT04gPSAxOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gOTUxMDgwMzsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBlcnJTdHJpbmcgPSAiU3R5bGVTZXRzIGFyZSBpbW11dGFibGUuIjsKKworICAgIC8vIFRoaXMgaXMgcGFzc2VkIHRvIHRoZSBIYXNodGFibGUgY29uc3RydWN0b3IgYXMgdGhlCisgICAgLy8gbG9hZCBmYWN0b3IgYXJndW1lbnQuICBJdCBpcyBjaG9zZW4gdG8gYXZvaWQgcmVzaXppbmcKKyAgICAvLyB0aGUgSGFzaHRhYmxlIHdoZW5ldmVyIHBvc3NpYmxlLiAgSSB0aGluayB0aGF0IDEKKyAgICAvLyBkb2VzIHRoaXMuCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExPQURfRkFDVE9SID0gMTsKKworICAgIHByaXZhdGUgSGFzaHRhYmxlIHN0eWxlVGFibGU7CisgICAgcHJpdmF0ZSB0cmFuc2llbnQgQXR0cmlidXRlU2V0IGNhY2hlZEtleVNldCA9IG51bGw7CisgICAgcHJpdmF0ZSB0cmFuc2llbnQgQ29sbGVjdGlvbiBjYWNoZWRWYWx1ZUNvbGxlY3Rpb24gPSBudWxsOworICAgIHByaXZhdGUgdHJhbnNpZW50IFNldCBjYWNoZWRFbnRyeVNldCA9IG51bGw7CisKKyAgICAvKioKKyAgICAgKiBBbiBlbXB0eSBBdHRyaWJ1dGVNYXAuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBBdHRyaWJ1dGVNYXAgRU1QVFlfQVRUUklCVVRFX01BUCA9IG5ldyBBdHRyaWJ1dGVNYXAoKTsKKworLy8gPT09PT09PT09PT09PT0KKy8vIENvbnN0cnVjdG9ycworLy8gPT09PT09PT09PT09PT0KKworICAgIC8qKgorICAgICAqIENyZWF0ZSBhIG5ldywgZW1wdHkgQXR0cmlidXRlTWFwLiAgRU1QVFlfU1RZTEVfU0VUIGNhbiBiZSB1c2VkCisgICAgICogaW4gcGxhY2Ugb2YgYW4gQXR0cmlidXRlTWFwIHByb2R1Y2VkIGJ5IHRoaXMgY29uc3RydWN0b3IuCisgICAgICovCisgICAgcHVibGljIEF0dHJpYnV0ZU1hcCgpIHsKKworICAgICAgICBzdHlsZVRhYmxlID0gbmV3IEhhc2h0YWJsZSgxLCBMT0FEX0ZBQ1RPUik7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlIGFuIEF0dHJpYnV0ZU1hcCB3aXRoIHRoZSBzYW1lIGtleS12YWx1ZQorICAgICAqIGVudHJpZXMgYXMgdGhlIGdpdmVuIE1hcC4KKyAgICAgKiBAcGFyYW0gbWFwIGEgTWFwIHdob3NlIGtleS12YWx1ZSBlbnRyaWVzIHdpbGwKKyAgICAgKiAgICAgIGJlY29tZSB0aGUgZW50cmllcyBmb3IgdGhpcyBBdHRyaWJ1dGVNYXAuIDxjb2RlPm1hcDwvY29kZT4KKyAgICAgKiAgICAgIGlzIG5vdCBtb2RpZmllZCwgYW5kIG11c3Qgbm90IGNvbnRhaW4gbnVsbCBrZXlzIG9yIHZhbHVlcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgQXR0cmlidXRlTWFwKGphdmEudXRpbC5NYXAgbWFwKSB7CisKKyAgICAgICAgc3R5bGVUYWJsZSA9IG5ldyBIYXNodGFibGUobWFwLnNpemUoKSwgTE9BRF9GQUNUT1IpOworICAgICAgICBzdHlsZVRhYmxlLnB1dEFsbChtYXApOworICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZSBhbiBBdHRyaWJ1dGVNYXAgd2l0aCB0aGUgc2FtZSBrZXktdmFsdWUKKyAgICAgKiBlbnRyaWVzIGFzIHRoZSBnaXZlbiBIYXNodGFibGUuCisgICAgICogQHBhcmFtIHRhYmxlIGEgSGFzaHRhYmxlIHdob3NlIGtleS12YWx1ZSBlbnRyaWVzIHdpbGwKKyAgICAgKiAgICAgIGJlY29tZSB0aGUgZW50cmllcyBmb3IgdGhpcyBBdHRyaWJ1dGVNYXAuIDxjb2RlPnRhYmxlPC9jb2RlPgorICAgICAqICAgICAgaXMgbm90IG1vZGlmaWVkLgorICAgICAqLworICAgIHB1YmxpYyBBdHRyaWJ1dGVNYXAoSGFzaHRhYmxlIGhhc2h0YWJsZSkgeworCisgICAgICAgIHRoaXMoKGphdmEudXRpbC5NYXApIGhhc2h0YWJsZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlIGFuIEF0dHJpYnV0ZU1hcCB3aXRoIGEgc2luZ2xlIGVudHJ5IG9mCisgICAgICogPGNvZGU+e2F0dHJpYnV0ZSwgdmFsdWV9PC9jb2RlPi4KKyAgICAgKiBAcGFyYW0gYXR0cmlidXRlIHRoZSBrZXkgaW4gdGhpcyBBdHRyaWJ1dGVNYXAncyBzaW5nbGUgZW50cnkKKyAgICAgKiBAcGFyYW0gdmFsdWUgdGhlIHZhbHVlIGluIHRoaXMgQXR0cmlidXRlTWFwJ3Mgc2luZ2xlIGVudHJ5CisgICAgICovCisgICAgcHVibGljIEF0dHJpYnV0ZU1hcChPYmplY3Qga2V5LCBPYmplY3QgdmFsdWUpIHsKKworICAgICAgICBzdHlsZVRhYmxlID0gbmV3IEhhc2h0YWJsZSgxLCBMT0FEX0ZBQ1RPUik7CisKKyAgICAgICAgLy8gaGFzaHRhYmxlIGNoZWNrcyB2YWx1ZSBmb3IgbnVsbAorICAgICAgICBzdHlsZVRhYmxlLnB1dChrZXksIHZhbHVlKTsKKyAgICB9CisKKyAgICAvLyBGb3IgaW50ZXJuYWwgdXNlIG9ubHkuCisgICAgcHJpdmF0ZSBBdHRyaWJ1dGVNYXAoSGFzaHRhYmxlIHRhYmxlLCBib29sZWFuIGNsb25lKSB7CisKKyAgICAgICAgaWYgKGNsb25lKSB7CisgICAgICAgICAgICBzdHlsZVRhYmxlID0gKEhhc2h0YWJsZSkgdGFibGUuY2xvbmUoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuc3R5bGVUYWJsZSA9IHRhYmxlOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgd3JpdGVFeHRlcm5hbChPYmplY3RPdXRwdXQgb3V0KSB0aHJvd3MgSU9FeGNlcHRpb24geworCisgICAgICAgIG91dC53cml0ZUludChDVVJSRU5UX1ZFUlNJT04pOworICAgICAgICBvdXQud3JpdGVJbnQoc3R5bGVUYWJsZS5zaXplKCkpOworICAgICAgICBFbnVtZXJhdGlvbiBlID0gc3R5bGVUYWJsZS5rZXlzKCk7CisgICAgICAgIHdoaWxlIChlLmhhc01vcmVFbGVtZW50cygpKSB7CisgICAgICAgICAgICBPYmplY3Qga2V5ID0gZS5uZXh0RWxlbWVudCgpOworICAgICAgICAgICAgb3V0LndyaXRlT2JqZWN0KEF0dHJpYnV0ZUtleS5tYXBBdHRyaWJ1dGVUb0tleShrZXkpKTsKKyAgICAgICAgICAgIG91dC53cml0ZU9iamVjdChzdHlsZVRhYmxlLmdldChrZXkpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHJlYWRFeHRlcm5hbChPYmplY3RJbnB1dCBpbikgdGhyb3dzIElPRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGFzc05vdEZvdW5kRXhjZXB0aW9uIHsKKworICAgICAgICBpZiAoaW4ucmVhZEludCgpICE9IENVUlJFTlRfVkVSU0lPTikgeworICAgICAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCJJbnZhbGlkIHZlcnNpb24gb2YgU3R5bGVCdWZmZXIiKTsKKyAgICAgICAgfQorCisgICAgICAgIGludCBjb3VudCA9IGluLnJlYWRJbnQoKTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgY291bnQ7IGkgKz0gMSkgeworICAgICAgICAgICAgT2JqZWN0IGtleSA9IEF0dHJpYnV0ZUtleS5tYXBLZXlUb0F0dHJpYnV0ZShpbi5yZWFkT2JqZWN0KCkpOworICAgICAgICAgICAgT2JqZWN0IHZhbHVlID0gaW4ucmVhZE9iamVjdCgpOworICAgICAgICAgICAgc3R5bGVUYWJsZS5wdXQoa2V5LCB2YWx1ZSk7CisgICAgICAgIH0KKyAgICB9CisKKy8vID09PT09PT09PT09PT09CisvLyBNYXAgaW50ZXJmYWNlCisvLyA9PT09PT09PT09PT09PQorCisvLyBxdWVyaWVzCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBudW1iZXIgb2YgZW50cmllcyBpbiB0aGUgQXR0cmlidXRlTWFwLgorICAgICAqIEByZXR1cm4gdGhlIG51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBBdHRyaWJ1dGVNYXAKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IHNpemUoKSB7CisKKyAgICAgICAgcmV0dXJuIHN0eWxlVGFibGUuc2l6ZSgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSBudW1iZXIgb2YgZW50cmllcyBpbiB0aGUgQXR0cmlidXRlTWFwCisgICAgICogaXMgMC4KKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIG51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBBdHRyaWJ1dGVNYXAKKyAgICAgKiBpcyAwCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNFbXB0eSgpIHsKKworICAgICAgICByZXR1cm4gc3R5bGVUYWJsZS5pc0VtcHR5KCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIGtleSBpcyBpbiB0aGlzIEF0dHJpYnV0ZU1hcC4KKyAgICAgKiBAcGFyYW0ga2V5IHRoZSBrZXkgdG8gdGVzdAorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiA8Y29kZT5rZXk8L2NvZGU+IGlzIGluIHRoaXMgQXR0cmlidXRlTWFwCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gY29udGFpbnNLZXkoT2JqZWN0IGtleSkgeworCisgICAgICAgIHJldHVybiBzdHlsZVRhYmxlLmNvbnRhaW5zS2V5KGtleSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIGluIHRoaXMgQXR0cmlidXRlTWFwLgorICAgICAqIEBwYXJhbSBrZXkgdGhlIHZhbHVlIHRvIHRlc3QKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgPGNvZGU+dmFsdWU8L2NvZGU+IGlzIGluIHRoaXMgQXR0cmlidXRlTWFwCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gY29udGFpbnNWYWx1ZShPYmplY3QgdmFsdWUpIHsKKworICAgICAgICByZXR1cm4gc3R5bGVUYWJsZS5jb250YWluc1ZhbHVlKHZhbHVlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4ga2V5LiAgSWYgdGhlCisgICAgICoga2V5IGlzIG5vdCBpbiB0aGlzIEF0dHJpYnV0ZU1hcCBudWxsIGlzIHJldHVybmVkLgorICAgICAqIEBwYXJhbSBrZXkgdGhlIGtleSB0byBsb29rIHVwCisgICAgICogQHJldHVybiB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIDxjb2RlPmtleTwvY29kZT4sIG9yCisgICAgICogICAgIG51bGwgaWYgPGNvZGU+a2V5PC9jb2RlPiBpcyBub3QgaW4gdGhpcyBBdHRyaWJ1dGVNYXAKKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0IGdldChPYmplY3Qga2V5KSB7CisKKyAgICAgICAgcmV0dXJuIHN0eWxlVGFibGUuZ2V0KGtleSk7CisgICAgfQorCisvLyBtb2RpZmllcnMgLSBhbGwgdGhyb3cgZXhjZXB0aW9ucworCisgICAgLyoqCisgICAgICogVGhyb3dzIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uLgorICAgICAqIEBzZWUgI2FkZEF0dHJpYnV0ZQorICAgICAqIEB0aHJvd3MgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0IHB1dChPYmplY3Qga2V5LCBPYmplY3QgdmFsdWUpIHsKKworICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oZXJyU3RyaW5nKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaHJvd3MgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24uCisgICAgICogQHNlZSAjcmVtb3ZlQXR0cmlidXRlcworICAgICAqIEB0aHJvd3MgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0IHJlbW92ZShPYmplY3Qga2V5KSB7CisKKyAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKGVyclN0cmluZyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhyb3dzIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uLgorICAgICAqIEBzZWUgI2FkZEF0dHJpYnV0ZXMKKyAgICAgKiBAdGhyb3dzIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIHZvaWQgcHV0QWxsKGphdmEudXRpbC5NYXAgdCkgeworCisgICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbihlcnJTdHJpbmcpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRocm93cyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbi4KKyAgICAgKiBAc2VlICNFTVBUWV9BVFRSSUJVVEVfTUFQCisgICAgICogQHRocm93cyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGNsZWFyKCkgeworCisgICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbihlcnJTdHJpbmcpOworICAgIH0KKworLy8gdmlld3MKKworICAgIC8qKgorICAgICAqIFJldHVybiBhbiBBdHRyaWJ1dGVTZXQgY29udGFpbmluZyBldmVyeSBrZXkgaW4gdGhpcyBBdHRyaWJ1dGVNYXAuCisgICAgICogQHJldHVybiBhbiBBdHRyaWJ1dGVTZXQgY29udGFpbmluZyBldmVyeSBrZXkgaW4gdGhpcyBBdHRyaWJ1dGVNYXAKKyAgICAgKi8KKyAgICBwdWJsaWMgU2V0IGtleVNldCgpIHsKKworICAgICAgICByZXR1cm4gZ2V0S2V5U2V0KCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGFuIEF0dHJpYnV0ZVNldCBjb250YWluaW5nIGV2ZXJ5IGtleSBpbiB0aGlzIEF0dHJpYnV0ZU1hcC4KKyAgICAgKiBAcmV0dXJuIGFuIEF0dHJpYnV0ZVNldCBjb250YWluaW5nIGV2ZXJ5IGtleSBpbiB0aGlzIEF0dHJpYnV0ZU1hcAorICAgICAqLworICAgIHB1YmxpYyBBdHRyaWJ1dGVTZXQgZ2V0S2V5U2V0KCkgeworCisgICAgICAgIEF0dHJpYnV0ZVNldCByZXN1bHQgPSBjYWNoZWRLZXlTZXQ7CisKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKSB7CisgICAgICAgICAgICByZXN1bHQgPSBBdHRyaWJ1dGVTZXQuY3JlYXRlS2V5U2V0KHN0eWxlVGFibGUpOworICAgICAgICAgICAgY2FjaGVkS2V5U2V0ID0gcmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSBDb2xsZWN0aW9uIGNvbnRhaW5pbmcgZXZlcnkgdmFsdWUgaW4gdGhpcyBBdHRyaWJ1dGVNYXAuCisgICAgICogQHJldHVybiBhIENvbGxlY3Rpb24gY29udGFpbmluZyBldmVyeSB2YWx1ZSBpbiB0aGlzIEF0dHJpYnV0ZU1hcAorICAgICAqLworICAgIHB1YmxpYyBDb2xsZWN0aW9uIHZhbHVlcygpIHsKKworICAgICAgICBDb2xsZWN0aW9uIHJlc3VsdCA9IGNhY2hlZFZhbHVlQ29sbGVjdGlvbjsKKworICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IENvbGxlY3Rpb25zLnVubW9kaWZpYWJsZUNvbGxlY3Rpb24oc3R5bGVUYWJsZS52YWx1ZXMoKSk7CisgICAgICAgICAgICBjYWNoZWRWYWx1ZUNvbGxlY3Rpb24gPSByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhIFNldCBjb250YWluaW5nIGFsbCBlbnRyaWVzIGluIHRoaXMgQXR0cmlidXRlTWFwLgorICAgICAqLworICAgIHB1YmxpYyBTZXQgZW50cnlTZXQoKSB7CisKKyAgICAgICAgU2V0IHJlc3VsdCA9IGNhY2hlZEVudHJ5U2V0OworCisgICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkgeworICAgICAgICAgICAgcmVzdWx0ID0gQ29sbGVjdGlvbnMudW5tb2RpZmlhYmxlU2V0KHN0eWxlVGFibGUuZW50cnlTZXQoKSk7CisgICAgICAgICAgICBjYWNoZWRFbnRyeVNldCA9IHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCByaHMpIHsKKworICAgICAgICBpZiAocmhzID09IHRoaXMpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJocyA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBBdHRyaWJ1dGVNYXAgcmhzU3R5bGVTZXQgPSBudWxsOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByaHNTdHlsZVNldCA9IChBdHRyaWJ1dGVNYXApIHJoczsKKyAgICAgICAgfQorICAgICAgICBjYXRjaChDbGFzc0Nhc3RFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHN0eWxlVGFibGUuZXF1YWxzKHJoc1N0eWxlU2V0LnN0eWxlVGFibGUpOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CisKKyAgICAgICAgcmV0dXJuIHN0eWxlVGFibGUuaGFzaENvZGUoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworCisgICAgICAgIHJldHVybiBzdHlsZVRhYmxlLnRvU3RyaW5nKCk7CisgICAgfQorCisvLyA9PT09PT09PT09PT09PQorLy8gT3BlcmF0aW9ucworLy8gPT09PT09PT09PT09PT0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhIEF0dHJpYnV0ZU1hcCB3aGljaCBjb250YWlucyBlbnRyaWVzIGluIHRoaXMgQXR0cmlidXRlTWFwLAorICAgICAqIGFsb25nIHdpdGggYW4gZW50cnkgZm9yIDxhdHRyaWJ1dGUsIHZhbHVlPi4gIElmIGF0dHJpYnV0ZQorICAgICAqIGlzIGFscmVhZHkgcHJlc2VudCBpbiB0aGlzIEF0dHJpYnV0ZU1hcCBpdHMgdmFsdWUgYmVjb21lcyB2YWx1ZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgQXR0cmlidXRlTWFwIGFkZEF0dHJpYnV0ZShPYmplY3Qga2V5LCBPYmplY3QgdmFsdWUpIHsKKworICAgICAgICAvLyB0cnkgdG8gb3B0aW1pemUgZm9yIGNhc2Ugd2hlcmUgPGtleSwgdmFsdWU+IGlzIGFscmVhZHkgdGhlcmU/CisgICAgICAgIEhhc2h0YWJsZSBuZXdUYWJsZSA9IG5ldyBIYXNodGFibGUoc3R5bGVUYWJsZS5zaXplKCkgKyAxLCBMT0FEX0ZBQ1RPUik7CisgICAgICAgIG5ld1RhYmxlLnB1dEFsbChzdHlsZVRhYmxlKTsKKyAgICAgICAgbmV3VGFibGUucHV0KGtleSwgdmFsdWUpOworICAgICAgICByZXR1cm4gbmV3IEF0dHJpYnV0ZU1hcChuZXdUYWJsZSwgZmFsc2UpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhIEF0dHJpYnV0ZU1hcCB3aGljaCBjb250YWlucyBlbnRyaWVzIGluIHRoaXMgQXR0cmlidXRlTWFwCisgICAgICogYW5kIGluIHJocy4gIElmIGFuIGF0dHJpYnV0ZSBhcHBlYXJzIGluIGJvdGggU3R5bGVTZXRzIHRoZQorICAgICAqIHZhbHVlIGZyb20gcmhzIGlzIHVzZWQuCisgICAgICovCisgICAgcHVibGljIEF0dHJpYnV0ZU1hcCBhZGRBdHRyaWJ1dGVzKEF0dHJpYnV0ZU1hcCByaHMpIHsKKworICAgICAgICBpbnQgdGhpc1NpemUgPSBzaXplKCk7CisKKyAgICAgICAgaWYgKHRoaXNTaXplID09IDApIHsKKyAgICAgICAgICAgIHJldHVybiByaHM7CisgICAgICAgIH0KKworICAgICAgICBpbnQgb3RoZXJTaXplID0gcmhzLnNpemUoKTsKKworICAgICAgICBpZiAob3RoZXJTaXplID09IDApIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9CisKKyAgICAgICAgSGFzaHRhYmxlIG5ld1RhYmxlID0gbmV3IEhhc2h0YWJsZSh0aGlzU2l6ZSArIG90aGVyU2l6ZSwgTE9BRF9GQUNUT1IpOworCisgICAgICAgIG5ld1RhYmxlLnB1dEFsbChzdHlsZVRhYmxlKTsKKyAgICAgICAgbmV3VGFibGUucHV0QWxsKHJocyk7CisKKyAgICAgICAgcmV0dXJuIG5ldyBBdHRyaWJ1dGVNYXAobmV3VGFibGUsIGZhbHNlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSBBdHRyaWJ1dGVNYXAgd2hpY2ggY29udGFpbnMgZW50cmllcyBpbiB0aGlzIEF0dHJpYnV0ZU1hcAorICAgICAqIGFuZCBpbiByaHMuICBJZiBhbiBhdHRyaWJ1dGUgYXBwZWFycyBpbiBib3RoIFN0eWxlU2V0cyB0aGUKKyAgICAgKiB2YWx1ZSBmcm9tIHJocyBpcyB1c2VkLgorICAgICAqIFRoZSBNYXAncyBrZXlzIGFuZCB2YWx1ZXMgbXVzdCBiZSBub24tbnVsbC4KKyAgICAgKi8KKyAgICBwdWJsaWMgQXR0cmlidXRlTWFwIGFkZEF0dHJpYnV0ZXMoamF2YS51dGlsLk1hcCByaHMpIHsKKworICAgICAgICBpZiAocmhzIGluc3RhbmNlb2YgQXR0cmlidXRlTWFwKSB7CisgICAgICAgICAgICByZXR1cm4gYWRkQXR0cmlidXRlcygoQXR0cmlidXRlTWFwKXJocyk7CisgICAgICAgIH0KKworICAgICAgICBIYXNodGFibGUgbmV3VGFibGUgPSBuZXcgSGFzaHRhYmxlKHNpemUoKSArIHJocy5zaXplKCksIExPQURfRkFDVE9SKTsKKworICAgICAgICBuZXdUYWJsZS5wdXRBbGwoc3R5bGVUYWJsZSk7CisgICAgICAgIG5ld1RhYmxlLnB1dEFsbChyaHMpOworCisgICAgICAgIHJldHVybiBuZXcgQXR0cmlidXRlTWFwKG5ld1RhYmxlLCBmYWxzZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgQXR0cmlidXRlTWFwIHdpdGggdGhlIGVudHJpZXMgaW4gdGhpcyBBdHRyaWJ1dGVNYXAsIGJ1dAorICAgICAqIHdpdGhvdXQgYXR0cmlidXRlIGFzIGEga2V5LgorICAgICAqLworICAgIHB1YmxpYyBBdHRyaWJ1dGVNYXAgcmVtb3ZlQXR0cmlidXRlKE9iamVjdCBhdHRyaWJ1dGUpIHsKKworICAgICAgICBpZiAoIWNvbnRhaW5zS2V5KGF0dHJpYnV0ZSkpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9CisKKyAgICAgICAgSGFzaHRhYmxlIG5ld1RhYmxlID0gbmV3IEhhc2h0YWJsZShzdHlsZVRhYmxlLnNpemUoKSwgTE9BRF9GQUNUT1IpOworICAgICAgICBuZXdUYWJsZS5wdXRBbGwoc3R5bGVUYWJsZSk7CisgICAgICAgIG5ld1RhYmxlLnJlbW92ZShhdHRyaWJ1dGUpOworCisgICAgICAgIHJldHVybiBuZXcgQXR0cmlidXRlTWFwKG5ld1RhYmxlLCBmYWxzZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgQXR0cmlidXRlTWFwIHdpdGggdGhlIGVudHJpZXMgb2YgdGhpcyBBdHRyaWJ1dGVNYXAgd2hvc2UKKyAgICAgKiBhdHRyaWJ1dGVzIGFyZSA8Yj5ub3Q8L2I+IGluIHRoZSBTZXQuCisgICAgICovCisgICAgcHVibGljIEF0dHJpYnV0ZU1hcCByZW1vdmVBdHRyaWJ1dGVzKEF0dHJpYnV0ZVNldCBhdHRyaWJ1dGVzKSB7CisKKyAgICAgICAgU2V0IHNldCA9IGF0dHJpYnV0ZXM7CisgICAgICAgIHJldHVybiByZW1vdmVBdHRyaWJ1dGVzKHNldCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgQXR0cmlidXRlTWFwIHdpdGggdGhlIGVudHJpZXMgb2YgdGhpcyBBdHRyaWJ1dGVNYXAgd2hvc2UKKyAgICAgKiBhdHRyaWJ1dGVzIGFyZSA8Yj5ub3Q8L2I+IGluIHRoZSBTZXQuCisgICAgICovCisgICAgcHVibGljIEF0dHJpYnV0ZU1hcCByZW1vdmVBdHRyaWJ1dGVzKFNldCBhdHRyaWJ1dGVzKSB7CisKKyAgICAgICAgLy8gQ3JlYXRlIG5ld1RhYmxlIG9uIGRlbWFuZDsgIGlmIG51bGwgYXQKKyAgICAgICAgLy8gZW5kIG9mIGl0ZXJhdGlvbiB0aGVuIHJldHVybiB0aGlzIHNldC4KKyAgICAgICAgLy8gU2hvdWxkIHdlIGludGVyc2VjdCBzdHlsZVRhYmxlLmtleVNldCB3aXRoCisgICAgICAgIC8vIGF0dHJpYnV0ZXMgaW5zdGVhZD8KKworICAgICAgICBIYXNodGFibGUgbmV3VGFibGUgPSBudWxsOworICAgICAgICBJdGVyYXRvciBhdHRySXRlciA9IGF0dHJpYnV0ZXMuaXRlcmF0b3IoKTsKKyAgICAgICAgd2hpbGUgKGF0dHJJdGVyLmhhc05leHQoKSkgeworICAgICAgICAgICAgT2JqZWN0IGN1cnJlbnQgPSBhdHRySXRlci5uZXh0KCk7CisgICAgICAgICAgICBpZiAoY3VycmVudCAhPSBudWxsICYmIHN0eWxlVGFibGUuY29udGFpbnNLZXkoY3VycmVudCkpIHsKKyAgICAgICAgICAgICAgICBpZiAobmV3VGFibGUgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBuZXdUYWJsZSA9IG5ldyBIYXNodGFibGUoc3R5bGVUYWJsZS5zaXplKCksIExPQURfRkFDVE9SKTsKKyAgICAgICAgICAgICAgICAgICAgbmV3VGFibGUucHV0QWxsKHN0eWxlVGFibGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBuZXdUYWJsZS5yZW1vdmUoY3VycmVudCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAobmV3VGFibGUgIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBBdHRyaWJ1dGVNYXAobmV3VGFibGUsIGZhbHNlKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgQXR0cmlidXRlTWFwIHdpdGggdGhlIGtleXMgb2YgdGhpcyBBdHRyaWJ1dGVNYXAgd2hpY2gKKyAgICAgKiBhcmUgYWxzbyBpbiB0aGUgU2V0LiAgVGhlIHNldCBtdXN0IG5vdCBjb250YWluIG51bGwuCisgICAgICovCisgICAgcHVibGljIEF0dHJpYnV0ZU1hcCBpbnRlcnNlY3RXaXRoKEF0dHJpYnV0ZVNldCBhdHRyaWJ1dGVzKSB7CisKKyAgICAgICAgU2V0IHNldCA9IGF0dHJpYnV0ZXM7CisgICAgICAgIHJldHVybiBpbnRlcnNlY3RXaXRoKHNldCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgQXR0cmlidXRlTWFwIHdpdGggdGhlIGtleXMgb2YgdGhpcyBBdHRyaWJ1dGVNYXAgd2hpY2gKKyAgICAgKiBhcmUgYWxzbyBpbiB0aGUgU2V0LiAgVGhlIHNldCBtdXN0IG5vdCBjb250YWluIG51bGwuCisgICAgICovCisgICAgcHVibGljIEF0dHJpYnV0ZU1hcCBpbnRlcnNlY3RXaXRoKFNldCBhdHRyaWJ1dGVzKSB7CisKKyAgICAgICAgLy8gRm9yIG5vdywgZm9yZ2V0IGFib3V0IG9wdGltaXppbmcgZm9yIHRoZSBjYXNlIHdoZW4KKyAgICAgICAgLy8gdGhlIHJldHVybiB2YWx1ZSBpcyBlcXVpdmFsZW50IHRvIHRoaXMgc2V0LgorCisgICAgICAgIGludCBhdHRyU2l6ZSA9IGF0dHJpYnV0ZXMuc2l6ZSgpOworICAgICAgICBpbnQgc3R5bGVUYWJsZVNpemUgPSBzdHlsZVRhYmxlLnNpemUoKTsKKyAgICAgICAgaW50IHNpemUgPSBNYXRoLm1pbihhdHRyU2l6ZSwgc3R5bGVUYWJsZVNpemUpOworICAgICAgICBIYXNodGFibGUgbmV3VGFibGUgPSBuZXcgSGFzaHRhYmxlKHNpemUsIExPQURfRkFDVE9SKTsKKworICAgICAgICBpZiAoYXR0clNpemUgPCBzdHlsZVRhYmxlU2l6ZSkgeworICAgICAgICAgICAgSXRlcmF0b3IgYXR0ckl0ZXIgPSBhdHRyaWJ1dGVzLml0ZXJhdG9yKCk7CisgICAgICAgICAgICB3aGlsZSAoYXR0ckl0ZXIuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICAgICAgT2JqZWN0IGN1cnJlbnQgPSBhdHRySXRlci5uZXh0KCk7CisgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBPYmplY3QgdmFsdWUgPSBzdHlsZVRhYmxlLmdldChjdXJyZW50KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld1RhYmxlLnB1dChjdXJyZW50LCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBJdGVyYXRvciBhdHRySXRlciA9IGtleVNldCgpLml0ZXJhdG9yKCk7CisgICAgICAgICAgICB3aGlsZSAoYXR0ckl0ZXIuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICAgICAgT2JqZWN0IGN1cnJlbnQgPSBhdHRySXRlci5uZXh0KCk7CisgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMuY29udGFpbnMoY3VycmVudCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbmV3VGFibGUucHV0KGN1cnJlbnQsIHN0eWxlVGFibGUuZ2V0KGN1cnJlbnQpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbmV3IEF0dHJpYnV0ZU1hcChuZXdUYWJsZSwgZmFsc2UpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFB1dCBhbGwgZW50cmllcyBpbiB0aGlzIEF0dHJpYnV0ZU1hcCBpbnRvIHRoZSBnaXZlbiBNYXAuCisgICAgICogQHBhcmFtIHJocyB0aGUgTWFwIGludG8gd2hpY2ggZW50cmllcyBhcmUgcGxhY2VkCisgICAgICovCisgICAgcHVibGljIHZvaWQgcHV0QWxsSW50byhqYXZhLnV0aWwuTWFwIHJocykgeworCisgICAgICAgIHJocy5wdXRBbGwodGhpcyk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRsYXlvdXQvYXR0cmlidXRlcy9BdHRyaWJ1dGVTZXQuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRsYXlvdXQvYXR0cmlidXRlcy9BdHRyaWJ1dGVTZXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43Nzc3MWNhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dGxheW91dC9hdHRyaWJ1dGVzL0F0dHJpYnV0ZVNldC5qYXZhCkBAIC0wLDAgKzEsMzQ1IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBBdHRyaWJ1dGVTZXQuamF2YSx2ICQgJFJldmlzaW9uOiAxLjIgJCAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNjo0NSAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworLy8gUmVxdWlyZXMgSmF2YTIKK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0bGF5b3V0LmF0dHJpYnV0ZXM7CisKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOworaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLlNldDsKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKKworLyoqCisgKiBBbiBBdHRyaWJ1dGVTZXQgaXMgYW4gaW1tdXRhYmxlIGNvbGxlY3Rpb24gb2YgdW5pcXVlIE9iamVjdHMuCisgKiBJdCBoYXMgc2V2ZXJhbCBvcGVyYXRpb25zCisgKiB3aGljaCByZXR1cm4gbmV3IEF0dHJpYnV0ZVNldCBpbnN0YW5jZXMuCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBBdHRyaWJ1dGVTZXQgaW1wbGVtZW50cyBTZXQgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKworICAgIC8qKgorICAgICAqIEFuIEF0dHJpYnV0ZVNldCB3aXRoIG5vIG1lbWJlcnMuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBBdHRyaWJ1dGVTZXQgRU1QVFlfU0VUID0gbmV3IEF0dHJpYnV0ZVNldCgpOworCisgICAgcHJpdmF0ZSBIYXNodGFibGUgZWxlbWVudHM7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgZXJyU3RyaW5nID0gIkF0dHJpYnV0ZVNldCBpcyBpbW11dGFibGUuIjsKKworICAgIHByaXZhdGUgQXR0cmlidXRlU2V0KEhhc2h0YWJsZSBlbGVtZW50cykgeworCisgICAgICAgIHRoaXMuZWxlbWVudHMgPSBlbGVtZW50czsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQYWNrYWdlIG9ubHkuICBGb3IgQXR0cmlidXRlTWFwIHVzZS4KKyAgICAgKi8KKyAgICBzdGF0aWMgQXR0cmlidXRlU2V0IGNyZWF0ZUtleVNldChIYXNodGFibGUgaGFzaHRhYmxlKSB7CisKKyAgICAgICAgSGFzaHRhYmxlIG5ld0VsZW1lbnRzID0gbmV3IEhhc2h0YWJsZSgpOworCisgICAgICAgIEVudW1lcmF0aW9uIGUgPSBoYXNodGFibGUua2V5cygpOworICAgICAgICB3aGlsZSAoZS5oYXNNb3JlRWxlbWVudHMoKSkgeworICAgICAgICAgICAgT2JqZWN0IG5leHQgPSBlLm5leHRFbGVtZW50KCk7CisgICAgICAgICAgICBuZXdFbGVtZW50cy5wdXQobmV4dCwgbmV4dCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbmV3IEF0dHJpYnV0ZVNldChuZXdFbGVtZW50cyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgbmV3LCBlbXB0eSBBdHRyaWJ1dGVTZXQuICBUaGUgc2V0IGlzIHNlbWFudGljYWxseQorICAgICAqIGVxdWl2YWxlbnQgdG8gRU1QVFlfU0VULgorICAgICAqLworICAgIHB1YmxpYyBBdHRyaWJ1dGVTZXQoKSB7CisKKyAgICAgICAgZWxlbWVudHMgPSBuZXcgSGFzaHRhYmxlKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgbmV3IEF0dHJpYnV0ZVNldCB3aXRoIHRoZSBzaW5nbGUgZWxlbWVudCBlbGVtLgorICAgICAqLworICAgIHB1YmxpYyBBdHRyaWJ1dGVTZXQoT2JqZWN0IGVsZW0pIHsKKworICAgICAgICBlbGVtZW50cyA9IG5ldyBIYXNodGFibGUoMSwgMSk7CisgICAgICAgIGVsZW1lbnRzLnB1dChlbGVtLCBlbGVtKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSBuZXcgQXR0cmlidXRlU2V0IGNvbnRhaW5pbmcgdGhlIGl0ZW1zIGluIHRoZSBhcnJheSBlbGVtcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgQXR0cmlidXRlU2V0KE9iamVjdFtdIGVsZW1zKSB7CisKKyAgICAgICAgZWxlbWVudHMgPSBuZXcgSGFzaHRhYmxlKGVsZW1zLmxlbmd0aCwgMSk7CisgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IGVsZW1zLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBPYmplY3QgbmV4dCA9IGVsZW1zW2ldOworICAgICAgICAgICAgZWxlbWVudHMucHV0KG5leHQsIG5leHQpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGlzIHNldCBpcyAwLgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoaXMgc2V0IGlzIDAKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc0VtcHR5KCkgeworCisgICAgICAgIHJldHVybiBlbGVtZW50cy5pc0VtcHR5KCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhpcyBzZXQuCisgICAgICogQHJldHVybiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoaXMgc2V0CisgICAgICovCisgICAgcHVibGljIGludCBzaXplKCkgeworCisgICAgICAgIHJldHVybiBlbGVtZW50cy5zaXplKCk7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCByaHMpIHsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJuIGVxdWFscygoQXR0cmlidXRlU2V0KSByaHMpOworICAgICAgICB9CisgICAgICAgIGNhdGNoKENsYXNzQ2FzdEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoQXR0cmlidXRlU2V0IHJocykgeworCisgICAgICAgIGlmIChyaHMgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGVsZW1lbnRzLmVxdWFscyhyaHMuZWxlbWVudHMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0cnVlIGlmIHRoaXMgc2V0IGNvbnRhaW5zIHRoZSBnaXZlbiBPYmplY3QKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhpcyBzZXQgY29udGFpbnMgPGNvZGU+bzwvY29kZT4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBjb250YWlucyhPYmplY3QgbykgeworCisgICAgICAgIE9iamVjdCB2YWx1ZSA9IGVsZW1lbnRzLmdldChvKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlICE9IG51bGw7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgdGhpcyBzZXQgY29udGFpbnMgYWxsIGVsZW1lbnRzIGluIHRoZSBnaXZlbgorICAgICAqIENvbGxlY3Rpb24KKyAgICAgKiBAcGFyYW0gY29sbCB0aGUgY29sbGVjdGlvbiB0byBjb21wYXJlIHdpdGgKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhpcyBzZXQgY29udGFpbnMgYWxsIGVsZW1lbnRzIGluIHRoZSBnaXZlbgorICAgICAqIENvbGxlY3Rpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBjb250YWluc0FsbChDb2xsZWN0aW9uIGNvbGwpIHsKKworICAgICAgICByZXR1cm4gZWxlbWVudHMua2V5U2V0KCkuY29udGFpbnNBbGwoY29sbCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGFuIEVudW1lcmF0aW9uIG9mIHRoZSBlbGVtZW50cyBpbiB0aGlzIHNldC4KKyAgICAgKiBAcmV0dXJuIGFuIEVudW1lcmF0aW9uIG9mIHRoZSBlbGVtZW50cyBpbiB0aGlzIHNldAorICAgICAqLworICAgIHB1YmxpYyBFbnVtZXJhdGlvbiBlbGVtZW50cygpIHsKKworICAgICAgICByZXR1cm4gZWxlbWVudHMua2V5cygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhbiBJdGVyYXRvciB3aXRoIHRoZSBlbGVtZW50cyBpbiB0aGlzIHNldC4KKyAgICAgKiBAcmV0dXJuIGFuIEl0ZXJhdG9yIHdpdGggdGhlIGVsZW1lbnRzIGluIHRoaXMgc2V0LgorICAgICAqIFRoZSBJdGVyYXRvciBjYW5ub3QgYmUgdXNlZCB0byBtb2RpZnkgdGhpcyBBdHRyaWJ1dGVTZXQuCisgICAgICovCisgICAgcHVibGljIEl0ZXJhdG9yIGl0ZXJhdG9yKCkgeworCisgICAgICAgIHJldHVybiBuZXcgRW51bWVyYXRpb25JdGVyYXRvcihlbGVtZW50cy5rZXlzKCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEZpbGwgaW4gdGhlIGdpdmVuIGFycmF5IHdpdGggdGhlIGVsZW1lbnRzIGluIHRoaXMgc2V0LgorICAgICAqIEBwYXJhbSBzdG9yYWdlIGFuIGFycmF5IHRvIGZpbGwgd2l0aCB0aGlzIHNldCdzIGVsZW1lbnRzLgorICAgICAqIFRoZSBhcnJheSBjYW5ub3QgYmUgbnVsbC4KKyAgICAgKiBAcmV0dXJuIHRoZSA8dHQ+c3RvcmFnZTwvdHQ+IGFycmF5LgorICAgICAqLworICAgIHB1YmxpYyBPYmplY3RbXSB0b0FycmF5KE9iamVjdFtdIHN0b3JhZ2UpIHsKKworICAgICAgICBFbnVtZXJhdGlvbiBrZXlzID0gZWxlbWVudHMua2V5cygpOworICAgICAgICBpbnQgbj0wOworICAgICAgICB3aGlsZSAoa2V5cy5oYXNNb3JlRWxlbWVudHMoKSkgeworICAgICAgICAgICAgc3RvcmFnZVtuKytdID0ga2V5cy5uZXh0RWxlbWVudCgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBzdG9yYWdlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhbiBhcnJheSB3aXRoIHRoZSBlbGVtZW50cyBpbiB0aGlzIHNldC4KKyAgICAgKiBAcmV0dXJuIGFuIGFycmF5IHdpdGggdGhlIGVsZW1lbnRzIGluIHRoaXMgc2V0CisgICAgICovCisgICAgcHVibGljIE9iamVjdFtdIHRvQXJyYXkoKSB7CisKKyAgICAgICAgcmV0dXJuIHRvQXJyYXkobmV3IE9iamVjdFtzaXplKCldKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogVGhyb3dzIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uLgorICAgICAqIEBzZWUgI2FkZEVsZW1lbnQKKyAgICAgKiBAdGhyb3dzIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gYWRkKE9iamVjdCBvKXsKKyAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKGVyclN0cmluZyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhyb3dzIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uLgorICAgICAqIEB0aHJvd3MgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiByZW1vdmUoT2JqZWN0IG8pIHsKKyAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKGVyclN0cmluZyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhyb3dzIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uLgorICAgICAqIEBzZWUgI3VuaW9uV2l0aAorICAgICAqIEB0aHJvd3MgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBhZGRBbGwoQ29sbGVjdGlvbiBjb2xsKSB7CisgICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbihlcnJTdHJpbmcpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRocm93cyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbi4KKyAgICAgKiBAc2VlICNzdWJ0cmFjdAorICAgICAqIEB0aHJvd3MgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiByZW1vdmVBbGwoQ29sbGVjdGlvbiBjb2xsKSB7CisgICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbihlcnJTdHJpbmcpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRocm93cyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbi4KKyAgICAgKiBAc2VlICNpbnRlcnNlY3RXaXRoCisgICAgICogQHRocm93cyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIHJldGFpbkFsbChDb2xsZWN0aW9uIGNvbGwpIHsKKyAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKGVyclN0cmluZyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhyb3dzIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uLgorICAgICAqIEBzZWUgI0VNUFRZX1NFVAorICAgICAqIEB0aHJvd3MgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBjbGVhcigpIHsKKyAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKGVyclN0cmluZyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGFuIEF0dHJpYnV0ZVNldCBjb250YWluaW5nIHRoZSBlbGVtZW50cyBvZiB0aGlzIHNldAorICAgICAqIGFuZCB0aGUgZ2l2ZW4gZWxlbWVudAorICAgICAqIEBwYXJhbSBlbGVtZW50IHRoZSBlbGVtZW50IHRvIGFkZAorICAgICAqIEByZXR1cm4gYW4gQXR0cmlidXRlU2V0IGxpa2UgdGhpcyBvbmUsIHdpdGggPGNvZGU+ZWxlbWVudDwvY29kZT4KKyAgICAgKiBhZGRlZAorICAgICAqLworICAgIHB1YmxpYyBBdHRyaWJ1dGVTZXQgYWRkRWxlbWVudChPYmplY3QgZWxlbWVudCkgeworCisgICAgICAgIEhhc2h0YWJsZSBuZXdFbGVtZW50cyA9IChIYXNodGFibGUpIGVsZW1lbnRzLmNsb25lKCk7CisgICAgICAgIG5ld0VsZW1lbnRzLnB1dChlbGVtZW50LCBlbGVtZW50KTsKKyAgICAgICAgcmV0dXJuIG5ldyBBdHRyaWJ1dGVTZXQobmV3RWxlbWVudHMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhbiBBdHRyaWJ1dGVTZXQgd2hpY2ggaXMgdGhlIHVuaW9uIG9mCisgICAgICogdGhpcyBzZXQgd2l0aCB0aGUgZ2l2ZW4gc2V0LgorICAgICAqIEBwYXJhbSBzIHRoZSBzZXQgdG8gdW5pb24gd2l0aAorICAgICAqIEByZXR1cm4gYW4gQXR0cmlidXRlU2V0IG9mIHRoZSBlbGVtZW50cyBpbiB0aGlzIHNldCBvcgorICAgICAqIGluIDxjb2RlPnM8L2NvZGU+CisgICAgICovCisgICAgcHVibGljIEF0dHJpYnV0ZVNldCB1bmlvbldpdGgoQXR0cmlidXRlU2V0IHMpIHsKKworICAgICAgICBIYXNodGFibGUgbmV3RWxlbWVudHMgPSAoSGFzaHRhYmxlKSBlbGVtZW50cy5jbG9uZSgpOworCisgICAgICAgIEl0ZXJhdG9yIGl0ZXIgPSBzLml0ZXJhdG9yKCk7CisgICAgICAgIHdoaWxlIChpdGVyLmhhc05leHQoKSkgeworICAgICAgICAgICAgT2JqZWN0IG5leHQgPSBpdGVyLm5leHQoKTsKKyAgICAgICAgICAgIG5ld0VsZW1lbnRzLnB1dChuZXh0LCBuZXh0KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBuZXcgQXR0cmlidXRlU2V0KG5ld0VsZW1lbnRzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYW4gQXR0cmlidXRlU2V0IHdoaWNoIGlzIHRoZSBpbnRlcnNlY3Rpb24gb2YKKyAgICAgKiB0aGlzIHNldCB3aXRoIHRoZSBnaXZlbiBzZXQuCisgICAgICogQHBhcmFtIHMgdGhlIHNldCB0byBpbnRlcnNlY3Qgd2l0aAorICAgICAqIEByZXR1cm4gYW4gQXR0cmlidXRlU2V0IG9mIHRoZSBlbGVtZW50cyBpbiB0aGlzIHNldCB3aGljaAorICAgICAqIGFyZSBpbiA8Y29kZT5zPC9jb2RlPgorICAgICAqLworICAgIHB1YmxpYyBBdHRyaWJ1dGVTZXQgaW50ZXJzZWN0V2l0aChBdHRyaWJ1dGVTZXQgcykgeworCisgICAgICAgIEhhc2h0YWJsZSBuZXdFbGVtZW50cyA9IG5ldyBIYXNodGFibGUoKTsKKworICAgICAgICBJdGVyYXRvciBpdGVyID0gcy5pdGVyYXRvcigpOworICAgICAgICB3aGlsZSAoaXRlci5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgIE9iamVjdCBuZXh0ID0gaXRlci5uZXh0KCk7CisgICAgICAgICAgICBpZiAoZWxlbWVudHMuZ2V0KG5leHQpICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBuZXdFbGVtZW50cy5wdXQobmV4dCwgbmV4dCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbmV3IEF0dHJpYnV0ZVNldChuZXdFbGVtZW50cyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGFuIEF0dHJpYnV0ZVNldCB3aXRoIHRoZSBlbGVtZW50cyBpbiB0aGlzIHNldCB3aGljaAorICAgICAqIGFyZSBub3QgaW4gdGhlIGdpdmVuIHNldC4KKyAgICAgKiBAcGFyYW0gcyB0aGUgc2V0IG9mIGVsZW1lbnRzIHRvIGV4Y2x1ZGUKKyAgICAgKiBAcmV0dXJuIGFuIEF0dHJpYnV0ZVNldCBvZiB0aGUgZWxlbWVudHMgaW4gdGhpcyBzZXQgd2hpY2gKKyAgICAgKiBhcmUgbm90IGluIDxjb2RlPnM8L2NvZGU+CisgICAgICovCisgICAgcHVibGljIEF0dHJpYnV0ZVNldCBzdWJ0cmFjdChBdHRyaWJ1dGVTZXQgcykgeworCisgICAgICAgIEhhc2h0YWJsZSBuZXdFbGVtZW50cyA9IChIYXNodGFibGUpIGVsZW1lbnRzLmNsb25lKCk7CisKKyAgICAgICAgSXRlcmF0b3IgaXRlciA9IHMuaXRlcmF0b3IoKTsKKyAgICAgICAgd2hpbGUgKGl0ZXIuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICBuZXdFbGVtZW50cy5yZW1vdmUoaXRlci5uZXh0KCkpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG5ldyBBdHRyaWJ1dGVTZXQobmV3RWxlbWVudHMpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNsYXNzIEVudW1lcmF0aW9uSXRlcmF0b3IgaW1wbGVtZW50cyBJdGVyYXRvciB7CisKKyAgICAgICAgcHJpdmF0ZSBFbnVtZXJhdGlvbiBlOworCisgICAgICAgIEVudW1lcmF0aW9uSXRlcmF0b3IoRW51bWVyYXRpb24gZSkgeworICAgICAgICAgICAgdGhpcy5lID0gZTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBib29sZWFuIGhhc05leHQoKSB7CisgICAgICAgICAgICByZXR1cm4gZS5oYXNNb3JlRWxlbWVudHMoKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBPYmplY3QgbmV4dCgpIHsKKyAgICAgICAgICAgIHJldHVybiBlLm5leHRFbGVtZW50KCk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCByZW1vdmUoKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oZXJyU3RyaW5nKTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0bGF5b3V0L2F0dHJpYnV0ZXMvTWFwLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0bGF5b3V0L2F0dHJpYnV0ZXMvTWFwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYWE1ZDJhNAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRsYXlvdXQvYXR0cmlidXRlcy9NYXAuamF2YQpAQCAtMCwwICsxLDUxIEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBNYXAuamF2YSx2ICQgJFJldmlzaW9uOiAxLjIgJCAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNjo0NiAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworLy8gUmVxdWlyZXMgSmF2YTIKK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0bGF5b3V0LmF0dHJpYnV0ZXM7CisKKy8qKgorICogQSBNYXAgaXMgYSBjb2xsZWN0aW9uIG9mIGtleS12YWx1ZSBwYWlycyAob3IgZW50cmllcyksIHdoZXJlIGVhY2gKKyAqIGtleSBpbiB0aGUgTWFwIGlzIHVuaXF1ZS4gIFRoaXMgaW50ZXJmYWNlIGlzIGEgc3Vic2V0IG9mIHRoZQorICogSkRLIDEuMiBNYXAgaW50ZXJmYWNlLiAgSXQgaXMgdXNlZCBieSBKREsgMS4xLWNvbXBhdGlibGUgY29kZS4KKyAqLworcHVibGljIGludGVyZmFjZSBNYXAgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIG51bWJlciBvZiBlbnRyaWVzIGluIHRoaXMgTWFwLgorICAgICAqIEByZXR1cm4gdGhlIG51bWJlciBvZiBlbnRyaWVzIGluIHRoaXMgTWFwCisgICAgICovCisgICAgcHVibGljIGludCBzaXplKCk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGlzIE1hcCBoYXMgbm8gZW50cmllcy4KKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhpcyBNYXAgaGFzIG5vIGVudHJpZXMKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc0VtcHR5KCk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBnaXZlbiBrZXkuCisgICAgICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGdpdmVuIGtleS4gIElmIHRoZSBrZXkgZG9lcyBub3QgaGF2ZQorICAgICAqIGEgdmFsdWUgaW4gdGhpcyBNYXAsIG51bGwgaXMgcmV0dXJuZWQuCisgICAgICovCisgICAgcHVibGljIE9iamVjdCBnZXQoT2JqZWN0IGtleSk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGlzIE1hcCBjb250YWlucyB0aGUgZ2l2ZW4ga2V5LgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGlzIE1hcCBjb250YWlucyB0aGUgZ2l2ZW4ga2V5CisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gY29udGFpbnNLZXkoT2JqZWN0IGtleSk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dGxheW91dC9hdHRyaWJ1dGVzL1RleHRBdHRyaWJ1dGUuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRsYXlvdXQvYXR0cmlidXRlcy9UZXh0QXR0cmlidXRlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZDZkNzI2ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRsYXlvdXQvYXR0cmlidXRlcy9UZXh0QXR0cmlidXRlLmphdmEKQEAgLTAsMCArMSwyNDggQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFRleHRBdHRyaWJ1dGUuamF2YSx2ICQgJFJldmlzaW9uOiAxLjMgJCAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNjo0NiAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworLy8gUmVxdWlyZXMgSmF2YTIKK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0bGF5b3V0LmF0dHJpYnV0ZXM7CisKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOworaW1wb3J0IGphdmEudGV4dC5BdHRyaWJ1dGVkQ2hhcmFjdGVySXRlcmF0b3IuQXR0cmlidXRlOworaW1wb3J0IGphdmEuaW8uSW52YWxpZE9iamVjdEV4Y2VwdGlvbjsKKworLyoqCisgKiBUaGlzIGNsYXNzIGNvbnRhaW5zIGEgbnVtYmVyIG9mIGtleXMgKG9yIGF0dHJpYnV0ZXMpIGZvciBzcGVjaWZ5aW5nIHRleHQgc3R5bGVzCisgKiBpbiBhIE1hcC4gIEEgdGV4dCBzdHlsZSBpcyBhIGNvbGxlY3Rpb24gb2Yga2V5LXZhbHVlIHBhaXJzLCB3aGVyZQorICogdGhlIGtleSByZXByZXNlbnRzIGEgY2VydGFpbiBjaGFyYWN0ZXJpc3RpYyAoc3VjaCBhcyBzaXplKSBhbmQKKyAqIHRoZSB2YWx1ZSB0ZWxscyBob3cgdGhhdCBjaGFyYWN0ZXJpc3RpYyBpcyByZWFsaXplZCAoaWUgd2hhdCB0aGUKKyAqIHNpemUgaXMpLgorICogPHA+CisgKiBBbGwgb2YgdGhlIGF0dHJpYnV0ZXMgaW4gVGV4dEF0dHJpYnV0ZSBzcGVjaWZ5IGEgY2xhc3MgZm9yIHRoZWlyIHZhbHVlLgorICogTWFwIGRvZXMgbm90IGVuZm9yY2UgdGhlc2UgY2xhc3Mgc3BlY2lmaWNhdGlvbnM7ICBob3dldmVyLCB0ZXh0IHJlbmRlcmluZyBjb2RlCisgKiB3aWxsIHRlbmQgdG8gZmFpbCB3aXRoIGEgQ2xhc3NDYXN0RXhjZXB0aW9uIGlmIGEga2V5J3MgdmFsdWUKKyAqIGhhcyBhbiB1bmV4cGVjdGVkIGNsYXNzLgorICogPHA+CisgKiBTb21lIGF0dHJpYnV0ZXMgYXJlIG1lYW5pbmdmdWwgZm9yIGVudGlyZSBwYXJhZ3JhcGhzLCBub3QgaW5kaXZpZHVhbAorICogY2hhcmFjdGVycy4gIFRoZXNlIGF0dHJpYnV0ZXMgYXJlIGRvY3VtZW50ZWQgYXMgYXBwbHlpbmcgdG8gcGFyYWdyYXBocy4KKyAqIEFsbCBvdGhlciBhdHRyaWJ1dGVzIGFwcGx5IHRvIGNoYXJhY3RlcnMuCisgKiA8cD4KKyAqIE1hbnkgb2YgdGhlIGZpZWxkIG5hbWVzIGFuZCB2YWx1ZXMgaW4gdGhpcyBjbGFzcworICogYXJlIHRha2VuIGZyb20gdGhlIEpESyAxLjIKKyAqIDxjb2RlPmphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZSBjbGFzczwvY29kZT4uCisgKiBAc2VlIE1hcAorICovCitwdWJsaWMgY2xhc3MgVGV4dEF0dHJpYnV0ZSBleHRlbmRzIEF0dHJpYnV0ZSB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBIYXNodGFibGUgaW5zdGFuY2VNYXAgPSBuZXcgSGFzaHRhYmxlKDkpOworCisgICAgcHJvdGVjdGVkIFRleHRBdHRyaWJ1dGUoU3RyaW5nIG5hbWUpIHsKKyAgICAgICAgc3VwZXIobmFtZSk7CisgICAgICAgIGlmICh0aGlzLmdldENsYXNzKCkgPT0gVGV4dEF0dHJpYnV0ZS5jbGFzcykgeworICAgICAgICAgICAgaW5zdGFuY2VNYXAucHV0KG5hbWUsIHRoaXMpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJvdGVjdGVkIE9iamVjdCByZWFkUmVzb2x2ZSgpIHRocm93cyBJbnZhbGlkT2JqZWN0RXhjZXB0aW9uIHsKKyAgICAgICAgaWYgKHRoaXMuZ2V0Q2xhc3MoKSAhPSBUZXh0QXR0cmlidXRlLmNsYXNzKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9iamVjdEV4Y2VwdGlvbigic3ViY2xhc3MgZGlkbid0IGNvcnJlY3RseSBpbXBsZW1lbnQgcmVhZFJlc29sdmUiKTsKKyAgICAgICAgfQorCisgICAgICAgIFRleHRBdHRyaWJ1dGUgaW5zdGFuY2UgPSAoVGV4dEF0dHJpYnV0ZSkgaW5zdGFuY2VNYXAuZ2V0KGdldE5hbWUoKSk7CisgICAgICAgIGlmIChpbnN0YW5jZSAhPSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gaW5zdGFuY2U7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9iamVjdEV4Y2VwdGlvbigidW5rbm93biBhdHRyaWJ1dGUgbmFtZSIpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBPYmplY3QgRk9OVCA9IGphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZS5GT05UOworCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBPYmplY3QgRkFNSUxZID0gamF2YS5hd3QuZm9udC5UZXh0QXR0cmlidXRlLkZBTUlMWTsKKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgT2JqZWN0IFdFSUdIVCA9IGphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZS5XRUlHSFQ7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBGbG9hdCBXRUlHSFRfQk9MRCA9IGphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZS5XRUlHSFRfQk9MRDsKKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgT2JqZWN0IFBPU1RVUkUgPSBqYXZhLmF3dC5mb250LlRleHRBdHRyaWJ1dGUuUE9TVFVSRTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIEZsb2F0IFBPU1RVUkVfT0JMSVFVRSA9IGphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZS5QT1NUVVJFX09CTElRVUU7CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIE9iamVjdCBTSVpFID0gamF2YS5hd3QuZm9udC5UZXh0QXR0cmlidXRlLlNJWkU7CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIE9iamVjdCBTVVBFUlNDUklQVCA9IGphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZS5TVVBFUlNDUklQVDsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIEludGVnZXIgU1VQRVJTQ1JJUFRfU1VQRVIgPSBqYXZhLmF3dC5mb250LlRleHRBdHRyaWJ1dGUuU1VQRVJTQ1JJUFRfU1VQRVI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBJbnRlZ2VyIFNVUEVSU0NSSVBUX1NVQiA9IGphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZS5TVVBFUlNDUklQVF9TVUI7CisKKyAgICAvKioKKyAgICAgKiBBdHRyaWJ1dGUga2V5IGZvciB0aGUgZm9yZWdyb3VuZCBhbmQgYmFja2dyb3VuZCBjb2xvciBhZG9ybm1lbnQuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBPYmplY3QgRk9SRUdST1VORCA9IGphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZS5GT1JFR1JPVU5EOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgT2JqZWN0IEJBQ0tHUk9VTkQgPSBqYXZhLmF3dC5mb250LlRleHRBdHRyaWJ1dGUuQkFDS0dST1VORDsKKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgT2JqZWN0IFVOREVSTElORSA9IGphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZS5VTkRFUkxJTkU7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBJbnRlZ2VyIFVOREVSTElORV9PTiA9IGphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZS5VTkRFUkxJTkVfT047CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIE9iamVjdCBTVFJJS0VUSFJPVUdIID0gamF2YS5hd3QuZm9udC5UZXh0QXR0cmlidXRlLlNUUklLRVRIUk9VR0g7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBCb29sZWFuIFNUUklLRVRIUk9VR0hfT04gPSBqYXZhLmF3dC5mb250LlRleHRBdHRyaWJ1dGUuU1RSSUtFVEhST1VHSF9PTjsKKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgT2JqZWN0IE9GRlNFVCA9IG5ldyBUZXh0QXR0cmlidXRlKCJvZmZzZXQiKTsKKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgT2JqZWN0IENIQVJfUkVQTEFDRU1FTlQgPSBqYXZhLmF3dC5mb250LlRleHRBdHRyaWJ1dGUuQ0hBUl9SRVBMQUNFTUVOVDsKKy8vIFBhcmFncmFwaCBTdHlsZXMKKworLy8gdmFsdWVzIGFyZSBGbG9hdHM6CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBPYmplY3QgRVhUUkFfTElORV9TUEFDSU5HID0gbmV3IFRleHRBdHRyaWJ1dGUoImV4dHJhX2xpbmVfc3BhY2luZyIpOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgT2JqZWN0IEVYVFJBX0ZJUlNUX0xJTkVfU1BBQ0lORyA9IG5ldyBUZXh0QXR0cmlidXRlKCJleHRyYV9maXJzdF9saW5lX3NwYWNpbmciKTsKKworICAgIC8qKgorICAgICAqIEFtb3VudCBiZXlvbmQgbGVhZGluZyBtYXJnaW4gdG8gaW5kZW50IHRoZSBmaXJzdCBsaW5lIG9mIGEgcGFyYWdyYXBoLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgT2JqZWN0IEZJUlNUX0xJTkVfSU5ERU5UID0gbmV3IFRleHRBdHRyaWJ1dGUoImZpcnN0X2xpbmVfaW5kZW50Iik7CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIE9iamVjdCBNSU5fTElORV9TUEFDSU5HID0gbmV3IFRleHRBdHRyaWJ1dGUoIm1pbl9saW5lX3NwYWNpbmciKTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIE9iamVjdCBNSU5fRklSU1RfTElORV9TUEFDSU5HID0gbmV3IFRleHRBdHRyaWJ1dGUoIm1pbl9maXJzdF9saW5lX3NwYWNpbmciKTsKKworICAgIC8qKgorICAgICAqIEZsdXNoIGxpbmVzIGxlZnQsIHJpZ2h0LCBvciBjZW50ZXIuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBPYmplY3QgTElORV9GTFVTSCA9IG5ldyBUZXh0QXR0cmlidXRlKCJsaW5lX2ZsdXNoIik7CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIEludGVnZXIgRkxVU0hfTEVBRElORyA9IG5ldyBJbnRlZ2VyKDApOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgSW50ZWdlciBGTFVTSF9DRU5URVIgPSBuZXcgSW50ZWdlcigxKTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIEludGVnZXIgRkxVU0hfVFJBSUxJTkcgPSBuZXcgSW50ZWdlcigyKTsKKyAgICAvKioKKyAgICAgKiBWYWx1ZSBvZiA8Y29kZT5MSU5FX0ZMVVNIPC9jb2RlPiBmb3IgZnVsbCBqdXN0aWZpY2F0aW9uLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgSW50ZWdlciBGVUxMWV9KVVNUSUZJRUQgPSBuZXcgSW50ZWdlcigzKTsKKworICAgIC8qKgorICAgICAqIExlYWRpbmcgYW5kIHRyYWlsaW5nIG1hcmdpbiBpbiBwYXJhZ3JhcGguCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBPYmplY3QgTEVBRElOR19NQVJHSU4gPSBuZXcgVGV4dEF0dHJpYnV0ZSgibGVhZGluZ19tYXJnaW4iKTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIE9iamVjdCBUUkFJTElOR19NQVJHSU4gPSBuZXcgVGV4dEF0dHJpYnV0ZSgidHJhaWxpbmdfbWFyZ2luIik7CisKKyAgICAvKioKKyAgICAgKiBUYWIgcnVsZXIuICBWYWx1ZXMgYXJlIE1UYWJSdWxlciBpbnN0YW5jZXMuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBPYmplY3QgVEFCX1JVTEVSID0gbmV3IFRleHRBdHRyaWJ1dGUoInRhYl9ydWxlciIpOworICAgIAorICAgIC8qKgorICAgICAqIEF0dHJpYnV0ZSBrZXkgZm9yIHRoZSBydW4gZGlyZWN0aW9uIG9mIHRoZSBsaW5lLgorICAgICAqCisgICAgICogPFA+PFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFNQQUNJTkc9IjAiIENFTExQQURESU5HPSIxIj4KKyAgICAgKiA8VFI+CisgICAgICogPFRIIFZBTElHTj0iVE9QIiBBTElHTj0iUklHSFQiPjxQIEFMSUdOPVJJR0hUPktleTwvVEg+CisgICAgICogPFREIFZBTElHTj0iVE9QIj5SVU5fRElSRUNUSU9OPC9URD48L1RSPgorICAgICAqIDxUUj4KKyAgICAgKiA8VEggVkFMSUdOPSJUT1AiIEFMSUdOPSJSSUdIVCI+PFAgQUxJR049UklHSFQ+VmFsdWU8L1RIPgorICAgICAqIDxURCBWQUxJR049IlRPUCI+Qm9vbGVhbjwvVEQ+PC9UUj4KKyAgICAgKiA8VFI+CisgICAgICogPFRIIFZBTElHTj0iVE9QIiBBTElHTj0iUklHSFQiPjxQIEFMSUdOPVJJR0hUPkNvbnN0YW50czwvVEg+CisgICAgICogPFREIFZBTElHTj0iVE9QIj5SVU5fRElSRUNUSU9OX0xUUiA9IHRydWUsIFJVTl9ESVJFQ1RJT05fUlRMID0gZmFsc2UKKyAgICAgKiA8L1REPjwvVFI+CisgICAgICogPFRSPgorICAgICAqIDxUSCBWQUxJR049IlRPUCIgQUxJR049IlJJR0hUIj48UCBBTElHTj1SSUdIVD5EZWZhdWx0PC9USD4KKyAgICAgKiA8VEQgVkFMSUdOPSJUT1AiPlVzZSB0aGUgZGVmYXVsdCBVbmljb2RlIGJhc2UgZGlyZWN0aW9uIGZyb20gdGhlIEJJREkgCisgICAgICogYWxnb3JpdGhtLjwvVEQ+PC9UUj4KKyAgICAgKiA8VFI+CisgICAgICogPFRIIFZBTElHTj0iVE9QIiBBTElHTj0iUklHSFQiPjxQIEFMSUdOPVJJR0hUPkRlc2NyaXB0aW9uPC9USD4KKyAgICAgKiA8VEQgVkFMSUdOPSJUT1AiPjxQPlNwZWNpZmllcyB3aGljaCBiYXNlIHJ1biBkaXJlY3Rpb24gdG8gdXNlIHdoZW4gCisgICAgICogcG9zaXRpb25pbmcgbWl4ZWQgZGlyZWN0aW9uYWwgcnVucyB3aXRoaW4gYSBwYXJhZ3JhcGguIElmIHRoaXMgdmFsdWUgaXMKKyAgICAgKiBSVU5fRElSRUNUSU9OX0RFRkFVTFQsIDxjb2RlPlRleHRMYXlvdXQ8L2NvZGU+IHVzZXMgdGhlIGRlZmF1bHQgVW5pY29kZQorICAgICAqIGJhc2UgZGlyZWN0aW9uIGZyb20gdGhlIEJJREkgYWxnb3JpdGhtLjwvUD4KKyAgICAgKiA8UD48ST5UaGlzIGF0dHJpYnV0ZSBzaG91bGQgaGF2ZSB0aGUgc2FtZSB2YWx1ZSBvdmVyIHRoZSB3aG9sZSAKKyAgICAgKiBwYXJhZ3JhcGguPC9JPjwvVEQ+PC9UUj4KKyAgICAgKiA8L1RBQkxFPgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgT2JqZWN0IFJVTl9ESVJFQ1RJT04gPSBqYXZhLmF3dC5mb250LlRleHRBdHRyaWJ1dGUuUlVOX0RJUkVDVElPTjsKKworICAgIC8qKgorICAgICAqIExlZnQtdG8tcmlnaHQgcnVuIGRpcmVjdGlvbi4KKyAgICAgKiBAc2VlICNSVU5fRElSRUNUSU9OCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBCb29sZWFuIFJVTl9ESVJFQ1RJT05fTFRSID0gamF2YS5hd3QuZm9udC5UZXh0QXR0cmlidXRlLlJVTl9ESVJFQ1RJT05fTFRSOworCisgICAgLyoqCisgICAgICogUmlnaHQtdG8tbGVmdCBydW4gZGlyZWN0aW9uLgorICAgICAqIEBzZWUgI1JVTl9ESVJFQ1RJT04KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIEJvb2xlYW4gUlVOX0RJUkVDVElPTl9SVEwgPSBqYXZhLmF3dC5mb250LlRleHRBdHRyaWJ1dGUuUlVOX0RJUkVDVElPTl9SVEw7CisKKyAgICAvKioKKyAgICAgKiBBdHRyaWJ1dGUga2V5IGZvciB0aGUgZW1iZWRkaW5nIGxldmVsIGZvciBuZXN0ZWQgYmlkaXJlY3Rpb25hbCBydW5zLgorICAgICAqCisgICAgICogPFA+PFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFNQQUNJTkc9IjAiIENFTExQQURESU5HPSIxIj4KKyAgICAgKiA8VFI+CisgICAgICogPFRIIFZBTElHTj0iVE9QIiBBTElHTj0iUklHSFQiPjxQIEFMSUdOPVJJR0hUPktleTwvVEg+CisgICAgICogPFREIFZBTElHTj0iVE9QIj5CSURJX0VNQkVERElORzwvVEQ+PC9UUj4KKyAgICAgKiA8VFI+CisgICAgICogPFRIIFZBTElHTj0iVE9QIiBBTElHTj0iUklHSFQiPjxQIEFMSUdOPVJJR0hUPlZhbHVlPC9USD4KKyAgICAgKiA8VEQgVkFMSUdOPSJUT1AiPkludGVnZXI8L1REPjwvVFI+CisgICAgICogPFRSPgorICAgICAqIDxUSCBWQUxJR049IlRPUCIgQUxJR049IlJJR0hUIj48UCBBTElHTj1SSUdIVD5MaW1pdHM8L1RIPgorICAgICAqIDxURCBWQUxJR049IlRPUCI+UG9zaXRpdmUgdmFsdWVzIDEgdGhyb3VnaCAxNSBhcmUgPEk+ZW1iZWRkaW5nPC9JPgorICAgICAqIGxldmVscywgbmVnYXRpdmUgdmFsdWVzPEJSPiB0aHJvdWdoIC0xNSBhcmUgPEk+b3ZlcnJpZGU8L0k+IGxldmVscworICAgICAqIDwvVEQ+PC9UUj4KKyAgICAgKiA8VFI+CisgICAgICogPFRIIFZBTElHTj0iVE9QIiBBTElHTj0iUklHSFQiPjxQIEFMSUdOPVJJR0hUPkRlZmF1bHQ8L1RIPgorICAgICAqIDxURCBWQUxJR049IlRPUCI+VXNlIHN0YW5kYXJkIEJJREkgdG8gY29tcHV0ZSBsZXZlbHMgZnJvbSBmb3JtYXR0aW5nCisgICAgICogY2hhcmFjdGVycyBpbiB0aGUgdGV4dC48L1REPjwvVFI+CisgICAgICogPFRSPgorICAgICAqIDxUSCBWQUxJR049IlRPUCIgQUxJR049IlJJR0hUIj48UCBBTElHTj1SSUdIVD5EZXNjcmlwdGlvbjwvVEg+CisgICAgICogPFREIFZBTElHTj0iVE9QIj5TcGVjaWZpZXMgdGhlIGJpZGkgZW1iZWRkaW5nIGxldmVsIG9mIHRoZSBjaGFyYWN0ZXIuCisgICAgICogV2hlbiB0aGlzIGF0dHJpYnV0ZSBpcyBwcmVzZW50IGFueXdoZXJlIGluIGEgcGFyYWdyYXBoLCB0aGVuIHRoZSAKKyAgICAgKiBVbmljb2RlIGNoYXJhY3RlcnMgUkxPLCBMUk8sIFJMRSwgTFJFLCBQREYgYXJlIGRpc3JlZ2FyZGVkIGluIHRoZSBCSURJIAorICAgICAqIGFuYWx5c2lzIG9mIHRoYXQgcGFyYWdyYXBoLiAKKyAgICAgKiBTZWUgdGhlIFVuaWNvZGUgU3RhbmRhcmQgdi4gMi4wLCBzZWN0aW9uIDMtMTEuCisgICAgICogPC9URD48L1RSPgorICAgICAqIDwvVEFCTEU+CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBPYmplY3QgQklESV9FTUJFRERJTkcgPSBqYXZhLmF3dC5mb250LlRleHRBdHRyaWJ1dGUuQklESV9FTUJFRERJTkc7CisKKyAgICAvKioKKyAgICAgKiBBdHRyaWJ1dGUga2V5IGZvciB0aGUganVzdGlmaWNhdGlvbiBvZiBhIHBhcmFncmFwaC4KKyAgICAgKgorICAgICAqIDxQPjxUQUJMRSBCT1JERVI9IjAiIENFTExTUEFDSU5HPSIwIiBDRUxMUEFERElORz0iMSI+CisgICAgICogPFRSPgorICAgICAqIDxUSCBWQUxJR049IlRPUCIgQUxJR049IlJJR0hUIj48UCBBTElHTj1SSUdIVD5LZXk8L1RIPgorICAgICAqIDxURCBWQUxJR049IlRPUCI+SlVTVElGSUNBVElPTjwvVEQ+PC9UUj4KKyAgICAgKiA8VFI+CisgICAgICogPFRIIFZBTElHTj0iVE9QIiBBTElHTj0iUklHSFQiPjxQIEFMSUdOPVJJR0hUPlZhbHVlPC9USD4KKyAgICAgKiA8VEQgVkFMSUdOPSJUT1AiPkZsb2F0PC9URD48L1RSPgorICAgICAqIDxUUj4KKyAgICAgKiA8VEggVkFMSUdOPSJUT1AiIEFMSUdOPSJSSUdIVCI+PFAgQUxJR049UklHSFQ+TGltaXRzPC9USD4KKyAgICAgKiA8VEQgVkFMSUdOPSJUT1AiPjAuMCB0aHJvdWdoMS4wPC9URD48L1RSPgorICAgICAqIDxUUj4KKyAgICAgKiA8VEggVkFMSUdOPSJUT1AiIEFMSUdOPSJSSUdIVCI+PFAgQUxJR049UklHSFQ+RGVmYXVsdDwvVEg+CisgICAgICogPFREIFZBTElHTj0iVE9QIj4xLjA8L1REPjwvVFI+CisgICAgICogPFRSPgorICAgICAqIDxUSCBWQUxJR049IlRPUCIgQUxJR049IlJJR0hUIj48UCBBTElHTj1SSUdIVD5EZXNjcmlwdGlvbjwvVEg+CisgICAgICogPFREIFZBTElHTj0iVE9QIj48UD5TcGVjaWZpZXMgd2hpY2ggZnJhY3Rpb24gb2YgdGhlIGV4dHJhIHNwYWNlIHRvIHVzZSAKKyAgICAgKiB3aGVuIGp1c3RpZmljYXRpb24gaXMgcmVxdWVzdGVkLiBGb3IgZXhhbXBsZSwgaWYgdGhlIGxpbmUgaXMgNTAgcG9pbnRzCisgICAgICogd2lkZSBhbmQgdGhlIG1hcmdpbnMgYXJlIDcwIHBvaW50cyBhcGFydCwgYSB2YWx1ZSBvZiAwLjUgbWVhbnMgdGhhdCB0aGUKKyAgICAgKiBsaW5lIGlzIHBhZGRlZCB0byByZWFjaCBhIHdpZHRoIG9mIDYwIHBvaW50cy48L1A+CisgICAgICogPFA+PEk+VGhpcyBhdHRyaWJ1dGUgc2hvdWxkIGhhdmUgdGhlIHNhbWUgdmFsdWUgb3ZlciB0aGUgd2hvbGUKKyAgICAgKiBwYXJhZ3JhcGguPC9JPjwvVEQ+PC9UUj4KKyAgICAgKiA8L1RBQkxFPgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgT2JqZWN0IEpVU1RJRklDQVRJT04gPSBqYXZhLmF3dC5mb250LlRleHRBdHRyaWJ1dGUuSlVTVElGSUNBVElPTjsKKworICAgIC8qKgorICAgICAqIEp1c3RpZnkgdGhlIGxpbmUgdG8gdGhlIGZ1bGwgcmVxdWVzdGVkIHdpZHRoLgorICAgICAqIEBzZWUgI0pVU1RJRklDQVRJT04KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIEZsb2F0IEpVU1RJRklDQVRJT05fRlVMTCA9IGphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZS5KVVNUSUZJQ0FUSU9OX0ZVTEw7CisKKyAgICAvKioKKyAgICAgKiBEbyBub3QgYWxsb3cgdGhlIGxpbmUgdG8gYmUganVzdGlmaWVkLgorICAgICAqIEBzZWUgI0pVU1RJRklDQVRJT04KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIEZsb2F0IEpVU1RJRklDQVRJT05fTk9ORSA9IGphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZS5KVVNUSUZJQ0FUSU9OX05PTkU7Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0bGF5b3V0L2F0dHJpYnV0ZXMvcGFja2FnZS5odG1sIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dGxheW91dC9hdHRyaWJ1dGVzL3BhY2thZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmNhOTFlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dGxheW91dC9hdHRyaWJ1dGVzL3BhY2thZ2UuaHRtbApAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPjwhLS0gIENvcHlyaWdodCAoQykgMjAwMiwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQKKyAgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorLS0+CisKKzx0aXRsZT5DOklDVTRKIC5sYW5nIFBhY2thZ2UgT3ZlcnZpZXc8L3RpdGxlPgorPC9oZWFkPgorCis8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSI+CisKKzxwPlJpY2h0ZXh0IGF0dHJpYnV0ZSBzdXBwb3J0LiAgSW5jbHVkZXMgdGFiLCBmaXJzdCBsaW5lIGluZGVudCwgYW5kIG1hcmdpbiBhdHRyaWJ1dGVzLjwvcD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL0FUZXh0UGFuZWxJbXBsLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvQVRleHRQYW5lbEltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mZTJmZWRlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL0FUZXh0UGFuZWxJbXBsLmphdmEKQEAgLTAsMCArMSw3NTUgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IEFUZXh0UGFuZWxJbXBsLmphdmEsdiAkICRSZXZpc2lvbjogMS4zICQgJERhdGU6IDIwMDIvMDIvMTYgMDM6MDY6NDYgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWw7CisKK2ltcG9ydCBqYXZhLmF3dC5BZGp1c3RhYmxlOworaW1wb3J0IGphdmEuYXd0LkNvbXBvbmVudDsKK2ltcG9ydCBqYXZhLmF3dC5HcmFwaGljczsKK2ltcG9ydCBqYXZhLmF3dC5kYXRhdHJhbnNmZXIuQ2xpcGJvYXJkOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlTWFwOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZVNldDsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5TdHlsZU1vZGlmaWVyOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NQ29uc3RUZXh0OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NVGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuU3R5bGVkVGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRmb3JtYXQuVGV4dE9mZnNldDsKKworLyoqCisgKiBJbXBsZW1lbnRhdGlvbiBjbGFzcyBmb3IgVGV4dFBhbmVsIGFuZCBKVGV4dFBhbmVsLgorICovCitmaW5hbCBjbGFzcyBBVGV4dFBhbmVsSW1wbCB7CisgICAgCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICAgICAgICAgICAgICAKKyAgICBwcml2YXRlIFJ1blN0cmF0ZWd5IGZSdW5TdHJhdGVneSA9IG51bGw7CisgICAgcHJpdmF0ZSBUZXh0Q29tcG9uZW50IGZUZXh0Q29tcG9uZW50ID0gbnVsbDsKKyAgICBwcml2YXRlIFRleHRTZWxlY3Rpb24gZlNlbGVjdGlvbiA9IG51bGw7CisgICAgcHJpdmF0ZSBUZXh0RWRpdEJlaGF2aW9yIGZFZGl0QmVoYXZpb3IgPSBudWxsOworICAgIHByaXZhdGUgTVRleHQgZlRleHQgPSBudWxsOworCisgICAgcHJpdmF0ZSBQYW5lbEV2ZW50QnJvYWRjYXN0ZXIgZkJyb2FkY2FzdGVyOworICAgIHByaXZhdGUgS2V5UmVtYXAgZlJlbWFwID0gS2V5UmVtYXAuZ2V0SWRlbnRpdHlSZW1hcCgpOworCisgICAgLy8gVGhpcyBpcyBhIGxpdHRsZSB1Z2x5LiAgVGV4dFBhbmVsIHN1cHBvcnRzIGl0cyBtb2RpZmllZAorICAgIC8vIGZsYWcgd2hldGhlciBvciBub3QgaXQgaXMgZWRpdGFibGUsIG9yIGV2ZW4gc2VsZWN0YWJsZS4KKyAgICAvLyBTbyBpZiB0aGVyZSdzIG5vIGNvbW1hbmQgbG9nIHRvIGtlZXAgdHJhY2sgb2YgdGhlIGZsYWcKKyAgICAvLyBzdGF0ZSB0aGVuIGl0cyBkb25lIHJpZ2h0IGhlcmUgaW4gVGV4dFBhbmVsLiAgSWYgdGhlCisgICAgLy8gcGFuZWwgaXMgZWRpdGFibGUgdGhpcyBmbGFnIGlzIGlnbm9yZWQuCisgICAgcHJpdmF0ZSBib29sZWFuIGZNb2RpZmllZCA9IGZhbHNlOworCisgICAgc3RhdGljIGZpbmFsIFRleHRQYW5lbFNldHRpbmdzIGZnRGVmYXVsdFNldHRpbmdzID0gbmV3IFRleHRQYW5lbFNldHRpbmdzKCk7CisKKyAgICBzdGF0aWMgVGV4dFBhbmVsU2V0dGluZ3MgZ2V0RGVmYXVsdFNldHRpbmdzKCkgeworCisgICAgICAgIHJldHVybiAoVGV4dFBhbmVsU2V0dGluZ3MpIGZnRGVmYXVsdFNldHRpbmdzLmNsb25lKCk7CisgICAgfQorICAgIAorICAgIEFUZXh0UGFuZWxJbXBsKFJ1blN0cmF0ZWd5IHJ1blN0cmF0ZWd5LAorICAgICAgICAgICAgICAgICAgIFRleHRQYW5lbFNldHRpbmdzIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgIE1Db25zdFRleHQgaW5pdGlhbFRleHQsCisgICAgICAgICAgICAgICAgICAgQ2xpcGJvYXJkIGNsaXBib2FyZCwKKyAgICAgICAgICAgICAgICAgICBNVGV4dFBhbmVsIGNsaWVudCwKKyAgICAgICAgICAgICAgICAgICBBZGp1c3RhYmxlIGhvcnpTYiwKKyAgICAgICAgICAgICAgICAgICBBZGp1c3RhYmxlIHZlcnRTYikgeworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgZlJ1blN0cmF0ZWd5ID0gcnVuU3RyYXRlZ3k7CisgICAgICAgIGZCcm9hZGNhc3RlciA9IG5ldyBQYW5lbEV2ZW50QnJvYWRjYXN0ZXIoY2xpZW50KTsKKworICAgICAgICBTY3JvbGxlciBzY3JvbGxlciA9IG51bGw7CisgICAgICAgIGlmIChzZXR0aW5ncy5nZXRTY3JvbGxhYmxlKCkpIHsKKyAgICAgICAgICAgIHNjcm9sbGVyID0gbmV3IFNjcm9sbGVyKGhvcnpTYiwgdmVydFNiKTsKKyAgICAgICAgfQorCisgICAgICAgIFN0eWxlZFRleHRDbGlwYm9hcmQgdGV4dENsaXBib2FyZCA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3R5bGVkVGV4dENsaXBib2FyZC5nZXRDbGlwYm9hcmRGb3IoY2xpcGJvYXJkKTsKKworICAgICAgICBmVGV4dCA9IG5ldyBTdHlsZWRUZXh0KCk7CisgICAgICAgIGlmIChpbml0aWFsVGV4dCAhPSBudWxsKSB7CisgICAgICAgICAgICBmVGV4dC5hcHBlbmQoaW5pdGlhbFRleHQpOworICAgICAgICB9CisKKyAgICAgICAgZlRleHRDb21wb25lbnQgPSBuZXcgVGV4dENvbXBvbmVudChmVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy5nZXREZWZhdWx0VmFsdWVzKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuZ2V0V3JhcHMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0Q29tcG9uZW50LldJTkRPV19XSURUSCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0Q29tcG9uZW50LkRFRkFVTFRfSU5TRVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dENsaXBib2FyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy5nZXRTY3JvbGxhYmxlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZkJyb2FkY2FzdGVyKTsKKworICAgICAgICBpZiAoc2Nyb2xsZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgc2Nyb2xsZXIuc2V0Q2xpZW50KGZUZXh0Q29tcG9uZW50KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gTWF5IGhhdmUgdG8gd2FpdCB1bnRpbCBjb21wb25lbnQgaGFzIGhvc3QgdG8gZG8gdGhpczoKKyAgICAgICAgaWYgKHNldHRpbmdzLmdldFNlbGVjdGFibGUoKSkgeworICAgICAgICAgICAgZlNlbGVjdGlvbiA9IG5ldyBUZXh0U2VsZWN0aW9uKGZUZXh0Q29tcG9uZW50LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmQnJvYWRjYXN0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZlJ1blN0cmF0ZWd5KTsKKyAgICAgICAgICAgIGZTZWxlY3Rpb24uYWRkVG9Pd25lcihmVGV4dENvbXBvbmVudCk7CisgICAgICAgICAgICBpZiAoc2V0dGluZ3MuZ2V0RWRpdGFibGUoKSkgeworICAgICAgICAgICAgICAgIGZFZGl0QmVoYXZpb3IgPSBuZXcgVGV4dEVkaXRCZWhhdmlvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmVGV4dENvbXBvbmVudCwgZlNlbGVjdGlvbiwgZkJyb2FkY2FzdGVyLCBmUmVtYXApOworICAgICAgICAgICAgICAgIGZFZGl0QmVoYXZpb3IuYWRkVG9Pd25lcihmVGV4dENvbXBvbmVudCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgRmFrZUNvbXBvbmVudCBnZXRUZXh0Q29tcG9uZW50KCkgeworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZUZXh0Q29tcG9uZW50OworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBBZGQgdGhlIGdpdmVuIFRleHRQYW5lbExpc3RlbmVyIHRvIHRoZSBsaXN0ZW5lcnMgd2hpY2ggd2lsbAorICAgICAqIHJlY2VpdmUgdXBkYXRlIG5vdGlmaWNhdGlvbnMgZnJvbSB0aGlzIFRleHRQYW5lbC4KKyAgICAgKiBAcGFyYW0gbGlzdGVuZXIgdGhlIGxpc3RlbmVyIHRvIGFkZAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGFkZExpc3RlbmVyKFRleHRQYW5lbExpc3RlbmVyIGxpc3RlbmVyKSB7CisKKyAgICAgICAgZkJyb2FkY2FzdGVyLmFkZExpc3RlbmVyKGxpc3RlbmVyKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZW1vdmUgdGhlIGdpdmVuIFRleHRQYW5lbExpc3RlbmVyIGZyb20gdGhlIGxpc3RlbmVycyB3aGljaCB3aWxsCisgICAgICogcmVjZWl2ZSB1cGRhdGUgbm90aWZpY2F0aW9ucyBmcm9tIHRoaXMgVGV4dFBhbmVsLgorICAgICAqIEBwYXJhbSBsaXN0ZW5lciB0aGUgbGlzdGVuZXIgdG8gcmVtb3ZlCisgICAgICovCisgICAgcHVibGljIHZvaWQgcmVtb3ZlTGlzdGVuZXIoVGV4dFBhbmVsTGlzdGVuZXIgbGlzdGVuZXIpIHsKKworICAgICAgICBmQnJvYWRjYXN0ZXIucmVtb3ZlTGlzdGVuZXIobGlzdGVuZXIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFlvdSBrbm93IHdoYXQgdGhpcyBkb2VzLi4uCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgaW50IHBpbihpbnQgdmFsdWUsIGludCBtaW4sIGludCBtYXgpIHsKKworICAgICAgICBpZiAobWluID4gbWF4KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIHJhbmdlIik7CisgICAgICAgIH0KKworICAgICAgICBpZiAodmFsdWUgPCBtaW4pIHsKKyAgICAgICAgICAgIHZhbHVlID0gbWluOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHZhbHVlID4gbWF4KSB7CisgICAgICAgICAgICB2YWx1ZSA9IG1heDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQorCisvLz09PT09PT09PT09PQorLy8gVGV4dCBBY2Nlc3MKKy8vPT09PT09PT09PT09CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIGRvY3VtZW50IHRvIDx0dD5uZXdUZXh0PC90dD4uICBUaGlzIG9wZXJhdGlvbgorICAgICAqIG1vZGlmaWVzIHRoZSB0ZXh0IGluIHRoZSBUZXh0UGFuZWwuICBJdCBkb2VzIG5vdCBtb2RpZnkgb3IgYWRvcHQKKyAgICAgKiA8dHQ+bmV3VGV4dDwvdHQ+LiAgVGhpcyBtZXRob2Qgc2V0cyB0aGUgc2VsZWN0aW9uIGFuIGluc2VydGlvbiBwb2ludCBhdAorICAgICAqIHRoZSBlbmQgb2YgdGhlIHRleHQuCisgICAgICogQHBhcmFtIG5ld1RleHQgdGhlIHRleHQgd2hpY2ggd2lsbCByZXBsYWNlIHRoZSBjdXJyZW50IHRleHQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0VGV4dChNQ29uc3RUZXh0IG5ld1RleHQpIHsKKworICAgICAgICByZXBsYWNlUmFuZ2UobmV3VGV4dCwgMCwgZ2V0VGV4dExlbmd0aCgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBcHBlbmQgdGhlIGdpdmVuIHRleHQgdG8gdGhlIGVuZCBvZiB0aGUgZG9jdW1lbnQuICBFcXVpdmFsZW50IHRvCisgICAgICogPHR0Pmluc2VydChuZXdUZXh0LCBnZXRUZXh0TGVuZ3RoKCkpPC90dD4uCisgICAgICogQHBhcmFtIG5ld1RleHQgdGhlIHRleHQgdG8gYXBwZW5kIHRvIHRoZSBkb2N1bWVudAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGFwcGVuZChNQ29uc3RUZXh0IG5ld1RleHQpIHsKKworICAgICAgICBpbnQgbGVuZ3RoID0gZ2V0VGV4dExlbmd0aCgpOworICAgICAgICByZXBsYWNlUmFuZ2UobmV3VGV4dCwgbGVuZ3RoLCBsZW5ndGgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEluc2VydCB0aGUgZ2l2ZW4gdGV4dCBpbnRvIHRoZSBkb2N1bWVudCBhdCB0aGUgZ2l2ZW4gcG9zaXRpb24uCisgICAgICogRXF1aXZhbGVudCB0bworICAgICAqIDx0dD5yZXBsYWNlUmFuZ2UobmV3VGV4dCwgcG9zaXRpb24sIHBvc2l0aW9uKTwvdHQ+LgorICAgICAqIEBwYXJhbSBuZXdUZXh0IHRoZSB0ZXh0IHRvIGluc2VydCBpbnRvIHRoZSBkb2N1bWVudC4KKyAgICAgKiBAcGFyYW0gcG9zaXRpb24gdGhlIHBvc2l0aW9uIGluIHRoZSBkb2N1bWVudCB3aGVyZSB0aGUKKyAgICAgKiAgICAgdGV4dCB3aWxsIGJlIGluc2VydGVkCisgICAgICovCisgICAgcHVibGljIHZvaWQgaW5zZXJ0KE1Db25zdFRleHQgbmV3VGV4dCwgaW50IHBvc2l0aW9uKSB7CisKKyAgICAgICAgcmVwbGFjZVJhbmdlKG5ld1RleHQsIHBvc2l0aW9uLCBwb3NpdGlvbik7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVwbGFjZSB0aGUgZ2l2ZW4gcmFuZ2Ugd2l0aCA8dHQ+bmV3VGV4dDwvdHQ+LiAgQWZ0ZXIgdGhpcworICAgICAqIG9wZXJhdGlvbiB0aGUgc2VsZWN0aW9uIHJhbmdlIGlzIGFuIGluc2VydGlvbiBwb2ludCBhdCB0aGUKKyAgICAgKiBlbmQgb2YgdGhlIG5ldyB0ZXh0LgorICAgICAqIEBwYXJhbSBuZXdUZXh0IHRoZSB0ZXh0IHdpdGggd2hpY2ggdG8gcmVwbGFjZSB0aGUgcmFuZ2UKKyAgICAgKiBAcGFyYW0gc3RhcnQgdGhlIGJlZ2lubmluZyBvZiB0aGUgcmFuZ2UgdG8gcmVwbGFjZQorICAgICAqIEBwYXJhbSBlbmQgdGhlIGVuZCBvZiB0aGUgcmFuZ2UgdG8gcmVwbGFjZQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHJlcGxhY2VSYW5nZShNQ29uc3RUZXh0IG5ld1RleHQsIGludCBzdGFydCwgaW50IGVuZCkgeworCisgICAgICAgIGludCBsZW5ndGggPSBnZXRUZXh0TGVuZ3RoKCk7CisKKyAgICAgICAgc3RhcnQgPSBwaW4oc3RhcnQsIDAsIGxlbmd0aCk7CisgICAgICAgIGVuZCA9IHBpbihlbmQsIHN0YXJ0LCBsZW5ndGgpOworCisgICAgICAgIGlmIChmU2VsZWN0aW9uICE9IG51bGwpIHsKKworICAgICAgICAgICAgLy8gSWYgd2UncmUgc2VsZWN0YWJsZSwgYnV0IG5vdCBlZGl0YWJsZSwgd2UnbGwgdGVtcG9yYXJpbHkKKyAgICAgICAgICAgIC8vIG1ha2Ugb3Vyc2VsdmVzIGVkaXRhYmxlIHRvIGNoYW5nZSB0aGUgdGV4dC4gIEEgbGl0dGxlIGZ1bm55CisgICAgICAgICAgICAvLyBidXQgdGhlcmUncyBhIGxvdCBvZiBjb2RlIGZvciBnZXR0aW5nIGNhcmV0IHN0dWZmIHJpZ2h0LAorICAgICAgICAgICAgLy8gYW5kIHRoaXMgaXMgbm90IGEgY29tbW9uIG9wZXJhdGlvbiBhbnl3YXkuCisKKyAgICAgICAgICAgIFRleHRFZGl0QmVoYXZpb3IgYmVoYXZpb3I7CisKKyAgICAgICAgICAgIGlmIChmRWRpdEJlaGF2aW9yID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBiZWhhdmlvciA9IG5ldyBUZXh0RWRpdEJlaGF2aW9yKGZUZXh0Q29tcG9uZW50LCBmU2VsZWN0aW9uLCBmQnJvYWRjYXN0ZXIsIGZSZW1hcCk7CisgICAgICAgICAgICAgICAgYmVoYXZpb3IuYWRkVG9Pd25lcihmVGV4dENvbXBvbmVudCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBiZWhhdmlvciA9IGZFZGl0QmVoYXZpb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFRleHRPZmZzZXQgbmV3U2VsZWN0aW9uID0gbmV3IFRleHRPZmZzZXQoc3RhcnQgKyBuZXdUZXh0Lmxlbmd0aCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0LkFGVEVSX09GRlNFVCk7CisKKyAgICAgICAgICAgIFRleHRSZXBsYWNlbWVudCByZXBsYWNlbWVudCA9IG5ldyBUZXh0UmVwbGFjZW1lbnQoc3RhcnQsIGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3VGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3U2VsZWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdTZWxlY3Rpb24pOworCisgICAgICAgICAgICBmVGV4dENvbXBvbmVudC50ZXh0Q29udHJvbEV2ZW50T2NjdXJyZWQoQmVoYXZpb3IuUkVQTEFDRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVudCk7CisgICAgICAgICAgICBpZiAoZkVkaXRCZWhhdmlvciA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgYmVoYXZpb3IucmVtb3ZlRnJvbU93bmVyKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisKKyAgICAgICAgICAgIE1UZXh0IG9sZFRleHQgPSBmVGV4dENvbXBvbmVudC5nZXRNb2RpZmlhYmxlVGV4dCgpOworICAgICAgICAgICAgZlRleHRDb21wb25lbnQuc3RvcEJhY2tncm91bmRGb3JtYXR0aW5nKCk7CisgICAgICAgICAgICBvbGRUZXh0LnJlcGxhY2VBbGwobmV3VGV4dCk7CisgICAgICAgICAgICBmVGV4dENvbXBvbmVudC5yZWZvcm1hdEFuZERyYXdUZXh0KDAsIG5ld1RleHQubGVuZ3RoKCksIG51bGwsIG51bGwsIG51bGwsIG51bGwpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIHRleHQgZG9jdW1lbnQgaW4gdGhlIFRleHRQYW5lbC4KKyAgICAgKiBAcmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIHRleHQgZG9jdW1lbnQgaW4gdGhlIFRleHRQYW5lbAorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0VGV4dExlbmd0aCgpIHsKKworICAgICAgICByZXR1cm4gZlRleHRDb21wb25lbnQuZ2V0VGV4dCgpLmxlbmd0aCgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgdGV4dCBkb2N1bWVudCBpbiB0aGUgVGV4dFBhbmVsLgorICAgICAqIEByZXR1cm4gdGhlIHRleHQgZG9jdW1lbnQgaW4gdGhlIFRleHRQYW5lbC4KKyAgICAgKi8KKyAgICBwdWJsaWMgTUNvbnN0VGV4dCBnZXRUZXh0KCkgeworCisgICAgICAgIHJldHVybiBmVGV4dENvbXBvbmVudC5nZXRUZXh0KCk7CisgICAgfQorCisvLz09PT09PT09PT09PQorLy8gU2VsZWN0aW9uIEFjY2VzcworLy89PT09PT09PT09PT0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgb2Zmc2V0IG9mIHRoZSBzdGFydCBvZiB0aGUgc2VsZWN0aW9uLgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0U2VsZWN0aW9uU3RhcnQoKSB7CisKKyAgICAgICAgaWYgKGZTZWxlY3Rpb24gIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIGZTZWxlY3Rpb24uZ2V0U3RhcnQoKS5mT2Zmc2V0OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIG9mZnNldCBvZiB0aGUgZW5kIG9mIHRoZSBzZWxlY3Rpb24uCisgICAgICovCisgICAgcHVibGljIGludCBnZXRTZWxlY3Rpb25FbmQoKSB7CisKKyAgICAgICAgaWYgKGZTZWxlY3Rpb24gIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIGZTZWxlY3Rpb24uZ2V0RW5kKCkuZk9mZnNldDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlbGVjdGlvbiByYW5nZS4gIFRoaXMgaXMKKyAgICAgKiBlcXVpdmFsZW50IHRvIDx0dD5zZWxlY3Qoc2VsZWN0aW9uU3RhcnQsIGdldFNlbGVjdGlvbkVuZCgpKTwvdHQ+LgorICAgICAqIEBwYXJhbSBzZWxlY3Rpb25TdGFydCB0aGUgc3RhcnQgb2YgdGhlIG5ldyBzZWxlY3Rpb24gcmFuZ2UKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRTZWxlY3Rpb25TdGFydChpbnQgc2VsZWN0aW9uU3RhcnQpIHsKKworICAgICAgICBzZWxlY3Qoc2VsZWN0aW9uU3RhcnQsIGdldFNlbGVjdGlvbkVuZCgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIGVuZCBvZiB0aGUgc2VsZWN0aW9uIHJhbmdlLiAgVGhpcyBpcworICAgICAqIGVxdWl2YWxlbnQgdG8gPHR0PnNlbGVjdChnZXRTZWxlY3Rpb25TdGFydCgpLCBzZWxlY3Rpb25FbmQpPC90dD4uCisgICAgICogQHBhcmFtIHNlbGVjdGlvblN0YXJ0IHRoZSBzdGFydCBvZiB0aGUgbmV3IHNlbGVjdGlvbiByYW5nZQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFNlbGVjdGlvbkVuZChpbnQgc2VsZWN0aW9uRW5kKSB7CisKKyAgICAgICAgc2VsZWN0KGdldFNlbGVjdGlvblN0YXJ0KCksIHNlbGVjdGlvbkVuZCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0IHRoZSBzZWxlY3Rpb24gcmFuZ2UgdG8gYW4gaW5zZXJ0aW9uIHBvaW50IGF0IHRoZSBnaXZlbgorICAgICAqIG9mZnNldC4gIFRoaXMgaXMgZXF1aXZhbGVudCB0bworICAgICAqIDx0dD5zZWxlY3QocG9zaXRpb24sIHBvc2l0aW9uKTwvdHQ+LgorICAgICAqIEBwYXJhbSBwb3NpdGlvbiB0aGUgb2Zmc2V0IG9mIHRoZSBuZXcgaW5zZXJ0aW9uIHBvaW50CisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0Q2FyZXRQb3NpdGlvbihpbnQgcG9zaXRpb24pIHsKKworICAgICAgICBzZWxlY3QocG9zaXRpb24sIHBvc2l0aW9uKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIHNlbGVjdGlvbiByYW5nZSB0byB0aGUgZ2l2ZW4gcmFuZ2UuICBUaGUgcmFuZ2Ugc3RhcnQKKyAgICAgKiBpcyBwaW5uZWQgYmV0d2VlbiAwIGFuZCB0aGUgdGV4dCBsZW5ndGg7ICB0aGUgcmFuZ2UgZW5kIGlzIHBpbm5lZAorICAgICAqIGJldHdlZW4gdGhlIHJhbmdlIHN0YXJ0IGFuZCB0aGUgZW5kIG9mIHRoZSB0ZXh0LiAgVGhlc2Ugc2VtYW50aWNzCisgICAgICogYXJlIGlkZW50aWNhbCB0byB0aG9zZSBvZiA8dHQ+amF2YS5hd3QuVGV4dENvbXBvbmVudDwvdHQ+LgorICAgICAqIFRoaXMgbWV0aG9kIGhhcyBubyBlZmZlY3QgaWYgdGhlIHRleHQgaXMgbm90IHNlbGVjdGFibGUuCisgICAgICogQHBhcmFtIHNlbGVjdGlvblN0YXJ0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlbGVjdGlvbiByYW5nZQorICAgICAqIEBwYXJhbSBzZWxlY3Rpb25FbmQgdGhlIGVuZCBvZiB0aGUgc2VsZWN0aW9uIHJhbmdlCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2VsZWN0KGludCBzZWxlY3Rpb25TdGFydCwgaW50IHNlbGVjdGlvbkVuZCkgeworCisgICAgICAgIGludCBsZW5ndGggPSBnZXRUZXh0TGVuZ3RoKCk7CisKKyAgICAgICAgc2VsZWN0aW9uU3RhcnQgPSBwaW4oc2VsZWN0aW9uU3RhcnQsIDAsIGxlbmd0aCk7CisgICAgICAgIHNlbGVjdGlvbkVuZCA9IHBpbihzZWxlY3Rpb25FbmQsIHNlbGVjdGlvblN0YXJ0LCBsZW5ndGgpOworCisgICAgICAgIFRleHRSYW5nZSByYW5nZSA9IG5ldyBUZXh0UmFuZ2Uoc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCk7CisgICAgICAgIGZUZXh0Q29tcG9uZW50LnRleHRDb250cm9sRXZlbnRPY2N1cnJlZChCZWhhdmlvci5TRUxFQ1QsIHJhbmdlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZWxlY3QgYWxsIG9mIHRoZSB0ZXh0IGluIHRoZSBkb2N1bWVudC4gIFRoaXMgbWV0aG9kIGhhcyBubyBlZmZlY3QgaWYKKyAgICAgKiB0aGUgdGV4dCBpcyBub3Qgc2VsZWN0YWJsZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZWxlY3RBbGwoKSB7CisKKyAgICAgICAgc2VsZWN0KDAsIGdldFRleHRMZW5ndGgoKSk7CisgICAgfQorCisKKy8vPT09PT09PT09PT09CisvLyBGb3JtYXQgV2lkdGgKKy8vPT09PT09PT09PT09CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIHRvdGFsIGZvcm1hdCB3aWR0aCwgaW4gcGl4ZWxzLiAgVGhlIGZvcm1hdCB3aWR0aCBpcyB0aGUKKyAgICAgKiB3aWR0aCB0byB3aGljaCB0ZXh0IGlzIHdyYXBwZWQuCisgICAgICogQHJldHVybiB0aGUgZm9ybWF0IHdpZHRoCisgICAgICovCisgICAgcHVibGljIGludCBnZXRGb3JtYXRXaWR0aCgpIHsKKworICAgICAgICByZXR1cm4gZlRleHRDb21wb25lbnQuZ2V0Rm9ybWF0V2lkdGgoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgcGFyYWdyYXBoIGF0IHRoZSBnaXZlbiBvZmZzZXQgaXMgbGVmdC10by1yaWdodC4KKyAgICAgKiBAcGFyYW0gb2Zmc2V0IGFuIG9mZnNldCBpbiB0aGUgdGV4dAorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgcGFyYWdyYXBoIGF0IHRoZSBnaXZlbiBvZmZzZXQgaXMgbGVmdC10by1yaWdodAorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIHBhcmFncmFwaElzTGVmdFRvUmlnaHQoaW50IG9mZnNldCkgeworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZUZXh0Q29tcG9uZW50LnBhcmFncmFwaElzTGVmdFRvUmlnaHQob2Zmc2V0KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGVyZSBpcyBhIGNoYW5nZSB3aGljaCBjYW4gYmUgdW5kb25lLgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGVyZSBpcyBhIGNoYW5nZSB3aGljaCBjYW4gYmUgdW5kb25lLgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGNhblVuZG8oKSB7CisKKyAgICAgICAgaWYgKGZFZGl0QmVoYXZpb3IgIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIGZFZGl0QmVoYXZpb3IuY2FuVW5kbygpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgdGhlcmUgaXMgYSBjaGFuZ2Ugd2hpY2ggY2FuIGJlIHJlZG9uZS4KKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlcmUgaXMgYSBjaGFuZ2Ugd2hpY2ggY2FuIGJlIHJlZG9uZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBjYW5SZWRvKCkgeworCisgICAgICAgIGlmIChmRWRpdEJlaGF2aW9yICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBmRWRpdEJlaGF2aW9yLmNhblJlZG8oKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSBjbGlwYm9hcmQgY29udGFpbnMgY29udGVudHMgd2hpY2ggY291bGQgYmUKKyAgICAgKiB0cmFuc2ZlcmVkIGludG8gdGhlIHRleHQuCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSBjbGlwYm9hcmQgaGFzIHRleHQgY29udGVudC4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBjbGlwYm9hcmROb3RFbXB0eSgpIHsKKworICAgICAgICByZXR1cm4gZlRleHRDb21wb25lbnQuZ2V0Q2xpcGJvYXJkKCkuaGFzQ29udGVudHMoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYW4gQXR0cmlidXRlTWFwIG9mIGtleXMgd2l0aCBkZWZhdWx0IHZhbHVlcy4gIFRoZSBkZWZhdWx0CisgICAgICogdmFsdWVzIGFyZSB1c2VkIHdoZW4gZGlzcGxheWluZyB0ZXh0IGZvciB2YWx1ZXMgd2hpY2ggYXJlIG5vdAorICAgICAqIHNwZWNpZmllZCBpbiB0aGUgdGV4dC4KKyAgICAgKiBAcmV0dXJuIGFuIEF0dHJpYnV0ZU1hcCBvZiBkZWZhdWx0IGtleS12YWx1ZSBwYWlycworICAgICAqLworICAgIHB1YmxpYyBBdHRyaWJ1dGVNYXAgZ2V0RGVmYXVsdFZhbHVlcygpIHsKKworICAgICAgICByZXR1cm4gZlRleHRDb21wb25lbnQuZ2V0RGVmYXVsdFZhbHVlcygpOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBib29sZWFuIG9iamVjdHNBcmVFcXVhbChPYmplY3QgbGhzLCBPYmplY3QgcmhzKSB7CisgICAgCisgICAgICAgIGlmIChsaHMgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIHJocyA9PSBudWxsOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGxocy5lcXVhbHMocmhzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIE9iamVjdCBjb25zaXN0ZW50Q2hhclN0eWxlKE1Db25zdFRleHQgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdCBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0IGRlZmF1bHRWYWx1ZSkgeworCisgICAgICAgIGlmIChzdGFydCA+PSBsaW1pdCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCByYW5nZS4iKTsKKyAgICAgICAgfQorCisgICAgICAgIGludCBydW5TdGFydCA9IHN0YXJ0OworICAgICAgICBPYmplY3QgaW5pdGlhbFZhbHVlID0gdGV4dC5jaGFyYWN0ZXJTdHlsZUF0KHJ1blN0YXJ0KS5nZXQoa2V5KTsKKworICAgICAgICBpZiAoaW5pdGlhbFZhbHVlID09IG51bGwpIHsKKyAgICAgICAgICAgIGluaXRpYWxWYWx1ZSA9IGRlZmF1bHRWYWx1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAocnVuU3RhcnQgPSB0ZXh0LmNoYXJhY3RlclN0eWxlTGltaXQocnVuU3RhcnQpOworICAgICAgICAgICAgIHJ1blN0YXJ0IDwgbGltaXQ7CisgICAgICAgICAgICAgcnVuU3RhcnQgPSB0ZXh0LmNoYXJhY3RlclN0eWxlTGltaXQocnVuU3RhcnQpKSB7CisKKyAgICAgICAgICAgIE9iamVjdCBuZXh0VmFsdWUgPSB0ZXh0LmNoYXJhY3RlclN0eWxlQXQocnVuU3RhcnQpLmdldChrZXkpOworCisgICAgICAgICAgICBpZiAobmV4dFZhbHVlID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBuZXh0VmFsdWUgPSBkZWZhdWx0VmFsdWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghb2JqZWN0c0FyZUVxdWFsKGluaXRpYWxWYWx1ZSwgbmV4dFZhbHVlKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBNVGV4dFBhbmVsLk1VTFRJUExFX1ZBTFVFUzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBpbml0aWFsVmFsdWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhpcyBtZXRob2QgaW5zcGVjdHMgdGhlIGNoYXJhY3RlciBzdHlsZSBydW5zIGluIHRoZSBzZWxlY3Rpb24KKyAgICAgKiByYW5nZSAob3IgdGhlIHR5cGluZyBzdHlsZSBhdCB0aGUgaW5zZXJ0aW9uIHBvaW50KSBhbmQgcmV0dXJuczoKKyAgICAgKiA8dWw+CisgICAgICogPGxpPlRoZSB2YWx1ZSBvZiA8dHQ+a2V5PC90dD4sIGlmIHRoZSB2YWx1ZSBvZiA8dHQ+a2V5PC90dD4KKyAgICAgKiBpcyB0aGUgc2FtZSBpbiBhbGwgb2YgdGhlIHN0eWxlIHJ1bnMgaW4gdGhlIHNlbGVjdGlvbiwgb3I8L2xpPgorICAgICAqIDxsaT5udWxsLCBpZiB0d28gb3IgbW9yZSBzdHlsZSBydW5zIGhhdmUgZGlmZmVyZW50IHZhbHVlcyBmb3IgPHR0PmtleTwvdHQ+LjwvbGk+CisgICAgICogPC91bD4KKyAgICAgKiBJZiBhIHN0eWxlIHJ1biBkb2VzIG5vdCBjb250YWluIDx0dD5rZXk8L3R0PiwKKyAgICAgKiBpdHMgdmFsdWUgaXMgY29uc2lkZXJlZCB0byBiZSA8dHQ+ZGVmYXVsdFN0eWxlPC90dD4uCisgICAgICogVGhpcyBtZXRob2QgaXMgdXNlZnVsIGZvciBjb25maWd1cmluZyBzdHlsZSBtZW51cy4KKyAgICAgKiBAcGFyYW0ga2V5IHRoZSBrZXkgdXNlZCB0byByZXRyaWV2ZSB2YWx1ZXMgZm9yIGNvbXBhcmlzb24KKyAgICAgKiBAcGFyYW0gZGVmYXVsdFZhbHVlIHRoZSBpbXBsaWNpdCB2YWx1ZSBvZiA8dHQ+a2V5PC90dD4gaW4KKyAgICAgKiAgICAgc3R5bGUgcnVucyB3aGVyZSA8dHQ+a2V5PC90dD4gaXMgbm90IGRlZmluZWQKKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0IGdldENoYXJhY3RlclN0eWxlT3ZlclNlbGVjdGlvbihPYmplY3Qga2V5KSB7CisKKyAgICAgICAgVGV4dFJhbmdlIHNlbFJhbmdlOworICAgICAgICBpZiAoZlNlbGVjdGlvbiAhPSBudWxsKQorICAgICAgICAgICAgc2VsUmFuZ2UgPSBmU2VsZWN0aW9uLmdldFNlbGVjdGlvblJhbmdlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNlbFJhbmdlID0gbmV3IFRleHRSYW5nZSgwLCAwKTsKKworICAgICAgICBpZiAoc2VsUmFuZ2Uuc3RhcnQgPT0gc2VsUmFuZ2UubGltaXQpIHsKKworICAgICAgICAgICAgQXR0cmlidXRlTWFwIGNvbXBTdHlsZTsKKworICAgICAgICAgICAgaWYgKGZFZGl0QmVoYXZpb3IgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGNvbXBTdHlsZSA9IGZFZGl0QmVoYXZpb3IuZ2V0SW5zZXJ0aW9uUG9pbnRTdHlsZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgY29tcFN0eWxlID0gVGV4dEVkaXRCZWhhdmlvci50eXBpbmdTdHlsZUF0KGZUZXh0LCBzZWxSYW5nZS5zdGFydCwgc2VsUmFuZ2UubGltaXQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBPYmplY3QgdmFsdWUgPSBjb21wU3R5bGUuZ2V0KGtleSk7CisgICAgICAgICAgICByZXR1cm4gdmFsdWU9PW51bGw/IGdldERlZmF1bHRWYWx1ZXMoKS5nZXQoa2V5KSA6IHZhbHVlOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGNvbnNpc3RlbnRDaGFyU3R5bGUoZlRleHQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsUmFuZ2Uuc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxSYW5nZS5saW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldERlZmF1bHRWYWx1ZXMoKS5nZXQoa2V5KSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaGlzIG1ldGhvZCBpbnNwZWN0cyB0aGUgcGFyYWdyYXBoIHN0eWxlIHJ1bnMgaW4gdGhlIHNlbGVjdGlvbgorICAgICAqIHJhbmdlIChvciB0aGUgdHlwaW5nIHN0eWxlIGF0IHRoZSBpbnNlcnRpb24gcG9pbnQpIGFuZCByZXR1cm5zOgorICAgICAqIDx1bD4KKyAgICAgKiA8bGk+VGhlIHZhbHVlIG9mIDx0dD5rZXk8L3R0PiwgaWYgdGhlIHZhbHVlIG9mIDx0dD5rZXk8L3R0PgorICAgICAqIGlzIHRoZSBzYW1lIGluIGFsbCBvZiB0aGUgc3R5bGUgcnVucyBpbiB0aGUgc2VsZWN0aW9uLCBvcjwvbGk+CisgICAgICogPGxpPm51bGwsIGlmIHR3byBvciBtb3JlIHN0eWxlIHJ1bnMgaGF2ZSBkaWZmZXJlbnQgdmFsdWVzIGZvciA8dHQ+a2V5PC90dD4uPC9saT4KKyAgICAgKiA8L3VsPgorICAgICAqIElmIGEgc3R5bGUgcnVuIGRvZXMgbm90IGNvbnRhaW4gPHR0PmtleTwvdHQ+LAorICAgICAqIGl0cyB2YWx1ZSBpcyBjb25zaWRlcmVkIHRvIGJlIDx0dD5kZWZhdWx0U3R5bGU8L3R0Pi4KKyAgICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VmdWwgZm9yIGNvbmZpZ3VyaW5nIHN0eWxlIG1lbnVzLgorICAgICAqIEBwYXJhbSBrZXkgdGhlIGtleSB1c2VkIHRvIHJldHJpZXZlIHZhbHVlcyBmb3IgY29tcGFyaXNvbgorICAgICAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgdGhlIGltcGxpY2l0IHZhbHVlIG9mIDx0dD5rZXk8L3R0PiBpbgorICAgICAqICAgICBzdHlsZSBydW5zIHdoZXJlIDx0dD5rZXk8L3R0PiBpcyBub3QgZGVmaW5lZAorICAgICAqLworICAgIHB1YmxpYyBPYmplY3QgZ2V0UGFyYWdyYXBoU3R5bGVPdmVyU2VsZWN0aW9uKE9iamVjdCBrZXkpIHsKKworICAgICAgICBUZXh0UmFuZ2Ugc2VsUmFuZ2U7CisgICAgICAgIGlmIChmU2VsZWN0aW9uICE9IG51bGwpIHsKKyAgICAgICAgICAgIHNlbFJhbmdlID0gZlNlbGVjdGlvbi5nZXRTZWxlY3Rpb25SYW5nZSgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc2VsUmFuZ2UgPSBuZXcgVGV4dFJhbmdlKDAsIDApOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHNlbFJhbmdlLnN0YXJ0ID09IHNlbFJhbmdlLmxpbWl0KSB7CisgICAgICAgICAgICBBdHRyaWJ1dGVNYXAgcFN0eWxlID0gZlRleHQucGFyYWdyYXBoU3R5bGVBdChzZWxSYW5nZS5zdGFydCk7CisgICAgICAgICAgICBPYmplY3QgdmFsdWUgPSBwU3R5bGUuZ2V0KGtleSk7CisgICAgICAgICAgICByZXR1cm4gdmFsdWU9PW51bGw/IGdldERlZmF1bHRWYWx1ZXMoKS5nZXQoa2V5KSA6IHZhbHVlOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaW50IHBhcmFncmFwaFN0YXJ0ID0gc2VsUmFuZ2Uuc3RhcnQ7CisgICAgICAgICAgICBPYmplY3QgZGVmYXVsdFZhbHVlID0gZ2V0RGVmYXVsdFZhbHVlcygpLmdldChrZXkpOworICAgICAgICAgICAgT2JqZWN0IGluaXRpYWxWYWx1ZSA9IGZUZXh0LnBhcmFncmFwaFN0eWxlQXQocGFyYWdyYXBoU3RhcnQpLmdldChrZXkpOworICAgICAgICAgICAgaWYgKGluaXRpYWxWYWx1ZSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgaW5pdGlhbFZhbHVlID0gZGVmYXVsdFZhbHVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3IgKHBhcmFncmFwaFN0YXJ0ID0gZlRleHQucGFyYWdyYXBoTGltaXQocGFyYWdyYXBoU3RhcnQpOworICAgICAgICAgICAgICAgICBwYXJhZ3JhcGhTdGFydCA8IHNlbFJhbmdlLmxpbWl0OworICAgICAgICAgICAgICAgICBwYXJhZ3JhcGhTdGFydCA9IGZUZXh0LnBhcmFncmFwaExpbWl0KHBhcmFncmFwaFN0YXJ0KSkgeworCisgICAgICAgICAgICAgICAgT2JqZWN0IG5leHRWYWx1ZSA9IGZUZXh0LnBhcmFncmFwaFN0eWxlQXQocGFyYWdyYXBoU3RhcnQpLmdldChrZXkpOworICAgICAgICAgICAgICAgIGlmIChuZXh0VmFsdWUgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBuZXh0VmFsdWUgPSBkZWZhdWx0VmFsdWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKCFvYmplY3RzQXJlRXF1YWwoaW5pdGlhbFZhbHVlLCBuZXh0VmFsdWUpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBNVGV4dFBhbmVsLk1VTFRJUExFX1ZBTFVFUzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBpbml0aWFsVmFsdWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZW1vdmUgdGhlIHNlbGVjdGVkIHRleHQgZnJvbSB0aGUgZG9jdW1lbnQgYW5kIHBsYWNlIGl0CisgICAgICogb24gdGhlIGNsaXBib2FyZC4gIFRoaXMgbWV0aG9kIGhhcyBubyBlZmZlY3QgaWYgdGhlIHRleHQKKyAgICAgKiBpcyBub3QgZWRpdGFibGUsIG9yIGlmIG5vIHRleHQgaXMgc2VsZWN0ZWQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgY3V0KCkgeworICAgICAgICBmVGV4dENvbXBvbmVudC50ZXh0Q29udHJvbEV2ZW50T2NjdXJyZWQoQmVoYXZpb3IuQ1VULCBudWxsKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQbGFjZSB0aGUgc2VsZWN0ZWQgdGV4dCBvbiB0aGUgY2xpcGJvYXJkLiAgVGhpcyBtZXRob2QgaGFzCisgICAgICogbm8gZWZmZWN0IGlmIG5vIHRleHQgaXMgc2VsZWN0ZWQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgY29weSgpIHsKKyAgICAgICAgZlRleHRDb21wb25lbnQudGV4dENvbnRyb2xFdmVudE9jY3VycmVkKEJlaGF2aW9yLkNPUFksIG51bGwpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlcGxhY2UgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCB0ZXh0IHdpdGggdGhlIHRleHQgb24gdGhlIGNsaXBib2FyZC4KKyAgICAgKiBUaGlzIG1ldGhvZCBoYXMgbm8gZWZmZWN0IGlmIHRoZSB0ZXh0IGlzIG5vdCBlZGl0YWJsZSwgb3IgaWYgbm8KKyAgICAgKiB0ZXh0IGlzIG9uIHRoZSBjbGlwYm9hcmQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgcGFzdGUoKSB7CisgICAgICAgIGZUZXh0Q29tcG9uZW50LnRleHRDb250cm9sRXZlbnRPY2N1cnJlZChCZWhhdmlvci5QQVNURSwgbnVsbCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVtb3ZlIHNlbGVjdGVkIHRleHQgZnJvbSB0aGUgZG9jdW1lbnQsIHdpdGhvdXQgYWx0ZXJpbmcgdGhlIGNsaXBib2FyZC4KKyAgICAgKiBUaGlzIG1ldGhvZCBoYXMgbm8gZWZmZWN0IGlmIHRoZQorICAgICAqIHRleHQgaXMgbm90IGVkaXRhYmxlLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGNsZWFyKCkgeworICAgICAgICBmVGV4dENvbXBvbmVudC50ZXh0Q29udHJvbEV2ZW50T2NjdXJyZWQoQmVoYXZpb3IuQ0xFQVIsIG51bGwpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFVuZG8gdGhlIG1vc3QgcmVjZW50IHRleHQgY2hhbmdlLiAgVGhpcyBtZXRob2QgaGFzIG5vIGVmZmVjdCBpZgorICAgICAqIHRoZXJlIGlzIG5vIGNoYW5nZSB0byB1bmRvLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHVuZG8oKSB7CisgICAgICAgIGZUZXh0Q29tcG9uZW50LnRleHRDb250cm9sRXZlbnRPY2N1cnJlZChCZWhhdmlvci5VTkRPLCBudWxsKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZWRvIHRoZSBtb3N0IHJlY2VudCB0ZXh0IGNoYW5nZS4gIFRoaXMgbWV0aG9kIGhhcyBubyBlZmZlY3QgaWYKKyAgICAgKiB0aGVyZSBpcyBubyBjaGFuZ2UgdG8gcmVkby4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCByZWRvKCkgeworICAgICAgICBmVGV4dENvbXBvbmVudC50ZXh0Q29udHJvbEV2ZW50T2NjdXJyZWQoQmVoYXZpb3IuUkVETywgbnVsbCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBudW1iZXIgb2YgY29tbWFuZHMgdGhlIGNvbW1hbmQgbG9nIGNhbiBob2xkLgorICAgICAqIEByZXR1cm4gdGhlIG51bWJlciBvZiBjb21tYW5kcyB0aGUgY29tbWFuZCBsb2cgY2FuIGhvbGQKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldENvbW1hbmRMb2dTaXplKCkgeworCisgICAgICAgIGlmIChmRWRpdEJlaGF2aW9yICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBmRWRpdEJlaGF2aW9yLmdldENvbW1hbmRMb2dTaXplKCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCB0aGUgbnVtYmVyIG9mIGNvbW1hbmRzIHRoZSBjb21tYW5kIGxvZyBjYW4gaG9sZC4gIEFsbAorICAgICAqIHJlZG9hYmxlIGNvbW1hbmRzIGFyZSByZW1vdmVkIHdoZW4gdGhpcyBtZXRob2QgaXMgY2FsbGVkLgorICAgICAqIEBwYXJhbSBzaXplIHRoZSBudW1iZXIgb2YgY29tbWFuZHMga2VwdCBpbiB0aGUgY29tbWFuZCBsb2cKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRDb21tYW5kTG9nU2l6ZShpbnQgc2l6ZSkgeworICAgICAgICBmVGV4dENvbXBvbmVudC50ZXh0Q29udHJvbEV2ZW50T2NjdXJyZWQoQmVoYXZpb3IuU0VUX0NPTU1BTkRfTE9HX1NJWkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgSW50ZWdlcihzaXplKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVtb3ZlIGFsbCBjb21tYW5kcyBmcm9tIHRoZSBjb21tYW5kIGxvZy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBjbGVhckNvbW1hbmRMb2coKSB7CisgICAgICAgIGZUZXh0Q29tcG9uZW50LnRleHRDb250cm9sRXZlbnRPY2N1cnJlZChCZWhhdmlvci5DTEVBUl9DT01NQU5EX0xPRywgbnVsbCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogTW9kaWZ5IHRoZSBjaGFyYWN0ZXIgc3R5bGVzIG9uIHRoZSBzZWxlY3RlZCBjaGFyYWN0ZXJzLiAgSWYgbm8gY2hhcmFjdGVycworICAgICAqIGFyZSBzZWxlY3RlZCwgbW9kaWZ5IHRoZSB0eXBpbmcgc3R5bGUuCisgICAgICogQHBhcmFtIG1vZGlmaWVyIHRoZSBTdHlsZU1vZGlmaWVyIHdpdGggd2hpY2ggdG8gbW9kaWZ5IHRoZSBzdHlsZXMKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBtb2RpZnlDaGFyYWN0ZXJTdHlsZU9uU2VsZWN0aW9uKFN0eWxlTW9kaWZpZXIgbW9kaWZpZXIpIHsKKyAgICAgICAgZlRleHRDb21wb25lbnQudGV4dENvbnRyb2xFdmVudE9jY3VycmVkKEJlaGF2aW9yLkNIQVJBQ1RFUl9TVFlMRV9NT0QsIG1vZGlmaWVyKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBNb2RpZnkgdGhlIHBhcmFncmFwaCBzdHlsZXMgaW4gcGFyYWdyYXBocyBjb250YWluaW5nIHNlbGVjdGVkIGNoYXJhY3RlcnMsIG9yCisgICAgICogdGhlIHBhcmFncmFwaCBjb250YWluaW5nIHRoZSBpbnNlcnRpb24gcG9pbnQuCisgICAgICogQHBhcmFtIG1vZGlmaWVyIHRoZSBTdHlsZU1vZGlmaWVyIHdpdGggd2hpY2ggdG8gbW9kaWZ5IHRoZSBzdHlsZXMKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBtb2RpZnlQYXJhZ3JhcGhTdHlsZU9uU2VsZWN0aW9uKFN0eWxlTW9kaWZpZXIgbW9kaWZpZXIpIHsKKyAgICAgICAgZlRleHRDb21wb25lbnQudGV4dENvbnRyb2xFdmVudE9jY3VycmVkKEJlaGF2aW9yLlBBUkFHUkFQSF9TVFlMRV9NT0QsIG1vZGlmaWVyKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIEtleVJlbWFwIHVzZWQgdG8gcHJvY2VzcyBrZXkgZXZlbnRzLgorICAgICAqIEByZXR1cm4gdGhlIGtleSByZW1hcCB1c2VkIHRvIHByb2Nlc3Mga2V5IGV2ZW50cworICAgICAqIEBzZWUgI3NldEtleVJlbWFwCisgICAgICovCisgICAgcHVibGljIEtleVJlbWFwIGdldEtleVJlbWFwKCkgeworCisgICAgICAgIHJldHVybiBmUmVtYXA7CisgICAgfQorCisgICAgLyoqCisgICAgICogVXNlIHRoZSBnaXZlbiBLZXlSZW1hcCB0byBtYXAga2V5IGV2ZW50cyB0byBjaGFyYWN0ZXJzLgorICAgICAqIE9ubHkga2V5CisgICAgICogZXZlbnRzIGFyZSBhZmZlY3RlZCBieSB0aGUgcmVtYXA7ICBvdGhlciB0ZXh0IGVudGVyaW5nIHRoZQorICAgICAqIGNvbnRyb2wgKHZpYSB0aGUgY2xpcGJvYXJkLCBmb3IgZXhhbXBsZSkgaXMgbm90IGFmZmVjdGVkCisgICAgICogYnkgdGhlIEtleVJlbWFwLgorICAgICAqIDxwPgorICAgICAqIERvIG5vdCBwYXNzIDx0dD5udWxsPC90dD4gdG8gdGhpcyBtZXRob2QgdG8gbGVhdmUga2V5CisgICAgICogZXZlbnRzIHVubWFwcGVkLiAgSW5zdGVhZCwgdXNlIDx0dD5LZXlSZW1hcC5nZXRJZGVudGl0eVJlbWFwKCk8L3R0PgorICAgICAqIEBwYXJhbSByZW1hcCB0aGUgS2V5UmVtYXAgdG8gdXNlIGZvciBtYXBwaW5nIGtleSBldmVudHMgdG8gY2hhcmFjdGVycworICAgICAqIEBleGNlcHRpb24gamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uIGlmIHBhcmFtZXRlciBpcyBudWxsCisgICAgICogQHNlZSBLZXlSZW1hcAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldEtleVJlbWFwKEtleVJlbWFwIHJlbWFwKSB7CisKKyAgICAgICAgaWYgKHJlbWFwID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigicmVtYXAgY2FuJ3QgYmUgbnVsbCIpOworICAgICAgICB9CisKKyAgICAgICAgZlJlbWFwID0gcmVtYXA7CisgICAgICAgIGlmIChmRWRpdEJlaGF2aW9yICE9IG51bGwpIHsKKyAgICAgICAgICAgIGZFZGl0QmVoYXZpb3Iuc2V0S2V5UmVtYXAocmVtYXApOworICAgICAgICB9CisKKyAgICAgICAgZkJyb2FkY2FzdGVyLnRleHRTdGF0ZUNoYW5nZWQoVGV4dFBhbmVsRXZlbnQuS0VZUkVNQVBfQ0hBTkdFRCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBtb2RpZmljYXRpb24gZmxhZyBvZiB0aGUgY3VycmVudCB0ZXh0IGNoYW5nZS4KKyAgICAgKiBAc2VlICNzZXRNb2RpZmllZAorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGlzTW9kaWZpZWQoKSB7CisKKyAgICAgICAgaWYgKGZFZGl0QmVoYXZpb3IgIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIGZFZGl0QmVoYXZpb3IuaXNNb2RpZmllZCgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGZNb2RpZmllZDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCB0aGUgbW9kaWZpY2F0aW9uIGZsYWcgb2YgdGhlIGN1cnJlbnQgdGV4dCBjaGFuZ2UuCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0TW9kaWZpZWQoYm9vbGVhbiBtb2RpZmllZCkgeworCisgICAgICAgIGJvb2xlYW4gaGFuZGxlZCA9IGZUZXh0Q29tcG9uZW50LnRleHRDb250cm9sRXZlbnRPY2N1cnJlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJlaGF2aW9yLlNFVF9NT0RJRklFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkPyBCb29sZWFuLlRSVUUgOiBCb29sZWFuLkZBTFNFKTsKKyAgICAgICAgaWYgKCFoYW5kbGVkKSB7CisgICAgICAgICAgICBmTW9kaWZpZWQgPSBtb2RpZmllZDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFRoaXMgbWV0aG9kIGlzIGZvciBwZXJmLXRlc3Rpbmcgb25seSEKKyAgICAgKi8KKyAgICB2b2lkIGhhbmRsZUtleUV2ZW50KGphdmEuYXd0LmV2ZW50LktleUV2ZW50IGtleUV2ZW50KSB7CisgICAgCisgICAgICAgIENvbXBvbmVudCBob3N0ID0gZlRleHRDb21wb25lbnQuZ2V0SG9zdCgpOworICAgICAgICBpZiAoaG9zdCAhPSBudWxsKSB7CisgICAgICAgICAgICBob3N0LmRpc3BhdGNoRXZlbnQoa2V5RXZlbnQpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL0FyYWJpY1RyYW5zbGl0ZXJhdGlvbi5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL0FyYWJpY1RyYW5zbGl0ZXJhdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjNlMjgzMWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvQXJhYmljVHJhbnNsaXRlcmF0aW9uLmphdmEKQEAgLTAsMCArMSwxODAgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IEFyYWJpY1RyYW5zbGl0ZXJhdGlvbi5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjUxOjIzICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCisvKgorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgsIEFsbCBSaWdodHMgUmVzZXJ2ZWQKKyAqLworCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsOworCisvKgorRm9yIGFueSBpbmNvbWluZyBjaGFyYWN0ZXIgQworaWYgeW91IGNhbiBtYXAgQyB1c2luZyB0aGUgZm9sbG93aW5nIEZha2VBcmFiaWNUYWJsZSwgcmV0dXJuCitGYWtlQXJhYmljVGFibGUoQykKK2Vsc2UgaWYgQyBpcyBmcm9tIEEgdGhyb3VnaCBaLCByZXR1cm4gRmFrZUFyYWJpY1RhYmxlKGxvd2VyY2FzZShDKSkKK2Vsc2UganVzdCByZXR1cm4gQworCisKK0Zha2VBcmFiaWNUYWJsZSBpcyBkZWZpbmVkIGJ5IHRoZSBmb2xsb3dpbmcgbWFwcGluZworCiswICAgMDY2MDtBUkFCSUMtSU5ESUMgRElHSVQgWkVSTztOZDswO0FOOzswOzA7MDtOOzs7OzsKKzEgICAwNjYxO0FSQUJJQy1JTkRJQyBESUdJVCBPTkU7TmQ7MDtBTjs7MTsxOzE7Tjs7Ozs7CisyICAgMDY2MjtBUkFCSUMtSU5ESUMgRElHSVQgVFdPO05kOzA7QU47OzI7MjsyO047Ozs7OworMyAgIDA2NjM7QVJBQklDLUlORElDIERJR0lUIFRIUkVFO05kOzA7QU47OzM7MzszO047Ozs7OworNCAgIDA2NjQ7QVJBQklDLUlORElDIERJR0lUIEZPVVI7TmQ7MDtBTjs7NDs0OzQ7Tjs7Ozs7Cis1ICAgMDY2NTtBUkFCSUMtSU5ESUMgRElHSVQgRklWRTtOZDswO0FOOzs1OzU7NTtOOzs7OzsKKzYgICAwNjY2O0FSQUJJQy1JTkRJQyBESUdJVCBTSVg7TmQ7MDtBTjs7Njs2OzY7Tjs7Ozs7Cis3ICAgMDY2NztBUkFCSUMtSU5ESUMgRElHSVQgU0VWRU47TmQ7MDtBTjs7Nzs3Ozc7Tjs7Ozs7Cis4ICAgMDY2ODtBUkFCSUMtSU5ESUMgRElHSVQgRUlHSFQ7TmQ7MDtBTjs7ODs4Ozg7Tjs7Ozs7Cis5ICAgMDY2OTtBUkFCSUMtSU5ESUMgRElHSVQgTklORTtOZDswO0FOOzs5Ozk7OTtOOzs7OzsKKworJSAgIDA2NkE7QVJBQklDIFBFUkNFTlQgU0lHTjtQbzswO0VUOzs7OztOOzs7OzsKKy4gICAwNjZCO0FSQUJJQyBERUNJTUFMIFNFUEFSQVRPUjtQbzswO0FOOzs7OztOOzs7OzsKKywgICAwNjBDO0FSQUJJQyBDT01NQTtQbzswO1I7Ozs7O047Ozs7OworLSAgIDA2NDA7QVJBQklDIFRBVFdFRUw7TG07MDtSOzs7OztOOzs7OzsKKycgICAwNjUyO0FSQUJJQyBTVUtVTjtNbjszNDtSOzs7OztOOzs7OzsKKyIgICAwNjUxO0FSQUJJQyBTSEFEREE7TW47MzM7Ujs7Ozs7TjtBUkFCSUMgU0hBRERBSDs7OzsKKzsgICAwNjFCO0FSQUJJQyBTRU1JQ09MT047UG87MDtSOzs7OztOOzs7OzsKKz8gICAwNjFGO0FSQUJJQyBRVUVTVElPTiBNQVJLO1BvOzA7Ujs7Ozs7Tjs7Ozs7CisKK2EgICAwNjI3O0FSQUJJQyBMRVRURVIgQUxFRjtMbzswO1I7Ozs7O047Ozs7OworQSAgIDA2Mzk7QVJBQklDIExFVFRFUiBBSU47TG87MDtSOzs7OztOOzs7OzsKK2IgICAwNjI4O0FSQUJJQyBMRVRURVIgQkVIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIEJBQTs7OzsKK2MgICAwNjM1O0FSQUJJQyBMRVRURVIgU0FEO0xvOzA7Ujs7Ozs7Tjs7Ozs7CitkICAgMDYyRjtBUkFCSUMgTEVUVEVSIERBTDtMbzswO1I7Ozs7O047Ozs7OworRCAgIDA2MzA7QVJBQklDIExFVFRFUiBUSEFMO0xvOzA7Ujs7Ozs7Tjs7Ozs7CitFICAgMDY0QjtBUkFCSUMgRkFUSEFUQU47TW47Mjc7Ujs7Ozs7Tjs7Ozs7CitlICAgMDY0RTtBUkFCSUMgRkFUSEE7TW47MzA7Ujs7Ozs7TjtBUkFCSUMgRkFUSEFIOzs7OworZiAgIDA2NDE7QVJBQklDIExFVFRFUiBGRUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgRkE7Ozs7CitnICAgMDYzQTtBUkFCSUMgTEVUVEVSIEdIQUlOO0xvOzA7Ujs7Ozs7Tjs7Ozs7CitoICAgMDYyRDtBUkFCSUMgTEVUVEVSIEhBSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBIQUE7Ozs7CitIICAgMDY0NztBUkFCSUMgTEVUVEVSIEhFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBIQTs7OzsKK0kgICAwNjREO0FSQUJJQyBLQVNSQVRBTjtNbjsyOTtSOzs7OztOOzs7OzsKK2kgICAwNjUwO0FSQUJJQyBLQVNSQTtNbjszMjtSOzs7OztOO0FSQUJJQyBLQVNSQUg7Ozs7CitqICAgMDYyQztBUkFCSUMgTEVUVEVSIEpFRU07TG87MDtSOzs7OztOOzs7OzsKK0sgICAwNjJFO0FSQUJJQyBMRVRURVIgS0hBSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBLSEFBOzs7OworayAgIDA2NDM7QVJBQklDIExFVFRFUiBLQUY7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgQ0FGOzs7OworbCAgIDA2NDQ7QVJBQklDIExFVFRFUiBMQU07TG87MDtSOzs7OztOOzs7OzsKK20gICAwNjQ1O0FSQUJJQyBMRVRURVIgTUVFTTtMbzswO1I7Ozs7O047Ozs7OworbiAgIDA2NDY7QVJBQklDIExFVFRFUiBOT09OO0xvOzA7Ujs7Ozs7Tjs7Ozs7CitvICAgMDY0RjtBUkFCSUMgREFNTUE7TW47MzE7Ujs7Ozs7TjtBUkFCSUMgREFNTUFIOzs7OworcCAgIDA2Mjg7QVJBQklDIExFVFRFUiBCRUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgQkFBOzs7OworcSAgIDA2NDI7QVJBQklDIExFVFRFUiBRQUY7TG87MDtSOzs7OztOOzs7OzsKK3IgICAwNjMxO0FSQUJJQyBMRVRURVIgUkVIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFJBOzs7OworcyAgIDA2MzM7QVJBQklDIExFVFRFUiBTRUVOO0xvOzA7Ujs7Ozs7Tjs7Ozs7CitTICAgMDYzNDtBUkFCSUMgTEVUVEVSIFNIRUVOO0xvOzA7Ujs7Ozs7Tjs7Ozs7Cit0ICAgMDYyQTtBUkFCSUMgTEVUVEVSIFRFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBUQUE7Ozs7CitUICAgMDYyQjtBUkFCSUMgTEVUVEVSIFRIRUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgVEhBQTs7OzsKK1UgICAwNjRDO0FSQUJJQyBEQU1NQVRBTjtNbjsyODtSOzs7OztOOzs7OzsKK3UgICAwNjRGO0FSQUJJQyBEQU1NQTtNbjszMTtSOzs7OztOO0FSQUJJQyBEQU1NQUg7Ozs7Cit2ICAgMDY0MTtBUkFCSUMgTEVUVEVSIEZFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBGQTs7OzsKK3cgICAwNjQ4O0FSQUJJQyBMRVRURVIgV0FXO0xvOzA7Ujs7Ozs7Tjs7Ozs7Cit4ICAgMDYzMztBUkFCSUMgTEVUVEVSIFNFRU47TG87MDtSOzs7OztOOzs7OzsKK3kgICAwNjRBO0FSQUJJQyBMRVRURVIgWUVIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFlBOzs7OworeiAgIDA2MzI7QVJBQklDIExFVFRFUiBaQUlOO0xvOzA7Ujs7Ozs7Tjs7Ozs7CitaICAgMDYzODtBUkFCSUMgTEVUVEVSIFpBSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBESEFIOzs7OworCisqLworCisvKioKKyAqIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBLZXlSZW1hcCB0byBwcm9kdWNlIHRyYW5zbGl0ZXJhdGVkIEFyYWJpYworICogY2hhcmFjdGVycyBmcm9tIExhdGluLTEgY2hhcmFjdGVycy4KKyAqLworCitmaW5hbCBjbGFzcyBBcmFiaWNUcmFuc2xpdGVyYXRpb24gZXh0ZW5kcyBLZXlSZW1hcCB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHB1YmxpYyBjaGFyIHJlbWFwKGNoYXIgYykgeworCisgICAgICAgIHN3aXRjaCAoYykgeworICAgICAgICAgICAgY2FzZSAnMCc6IHJldHVybiAnXHUwNjYwJzsgLy8gQVJBQklDLUlORElDIERJR0lUIFpFUk8KKyAgICAgICAgICAgIGNhc2UgJzEnOiByZXR1cm4gJ1x1MDY2MSc7IC8vIEFSQUJJQy1JTkRJQyBESUdJVCBPTkUKKyAgICAgICAgICAgIGNhc2UgJzInOiByZXR1cm4gJ1x1MDY2Mic7IC8vIEFSQUJJQy1JTkRJQyBESUdJVCBUV08KKyAgICAgICAgICAgIGNhc2UgJzMnOiByZXR1cm4gJ1x1MDY2Myc7IC8vIEFSQUJJQy1JTkRJQyBESUdJVCBUSFJFRQorICAgICAgICAgICAgY2FzZSAnNCc6IHJldHVybiAnXHUwNjY0JzsgLy8gQVJBQklDLUlORElDIERJR0lUIEZPVVIKKyAgICAgICAgICAgIGNhc2UgJzUnOiByZXR1cm4gJ1x1MDY2NSc7IC8vIEFSQUJJQy1JTkRJQyBESUdJVCBGSVZFCisgICAgICAgICAgICBjYXNlICc2JzogcmV0dXJuICdcdTA2NjYnOyAvLyBBUkFCSUMtSU5ESUMgRElHSVQgU0lYCisgICAgICAgICAgICBjYXNlICc3JzogcmV0dXJuICdcdTA2NjcnOyAvLyBBUkFCSUMtSU5ESUMgRElHSVQgU0VWRU4KKyAgICAgICAgICAgIGNhc2UgJzgnOiByZXR1cm4gJ1x1MDY2OCc7IC8vIEFSQUJJQy1JTkRJQyBESUdJVCBFSUdIVAorICAgICAgICAgICAgY2FzZSAnOSc6IHJldHVybiAnXHUwNjY5JzsgLy8gQVJBQklDLUlORElDIERJR0lUIE5JTkUKKworICAgICAgICAgICAgY2FzZSAnJSc6IHJldHVybiAnXHUwNjZBJzsgLy8gQVJBQklDIFBFUkNFTlQgU0lHTgorICAgICAgICAgICAgLy8gdGhlIFRyYWRpdGlvbmFsIEFyYWJpYyBmb250IGRvZXMgbm90IGNvbnRhaW4gdGhpcyBjaGFyYWN0ZXIKKyAgICAgICAgICAgIC8vIGNhc2UgJy4nOiByZXR1cm4gJ1x1MDY2Qic7IC8vIEFSQUJJQyBERUNJTUFMIFNFUEFSQVRPUgorICAgICAgICAgICAgY2FzZSAnLCc6IHJldHVybiAnXHUwNjBDJzsgLy8gQVJBQklDIENPTU1BCisgICAgICAgICAgICBjYXNlICctJzogcmV0dXJuICdcdTA2NDAnOyAvLyBBUkFCSUMgVEFUV0VFTAorICAgICAgICAgICAgY2FzZSAnXCcnOiByZXR1cm4gJ1x1MDY1Mic7IC8vIEFSQUJJQyBTVUtVTgorICAgICAgICAgICAgY2FzZSAnIic6IHJldHVybiAnXHUwNjUxJzsgLy8gQVJBQklDIFNIQUREQQorICAgICAgICAgICAgY2FzZSAnOyc6IHJldHVybiAnXHUwNjFCJzsgLy8gQVJBQklDIFNFTUlDT0xPTgorICAgICAgICAgICAgY2FzZSAnPyc6IHJldHVybiAnXHUwNjFGJzsgLy8gQVJBQklDIFFVRVNUSU9OIE1BUksKKworICAgICAgICAgICAgY2FzZSAnYSc6IHJldHVybiAnXHUwNjI3JzsgLy8gQVJBQklDIExFVFRFUiBBTEVGCisgICAgICAgICAgICBjYXNlICdBJzogcmV0dXJuICdcdTA2MzknOyAvLyBBUkFCSUMgTEVUVEVSIEFJTgorICAgICAgICAgICAgY2FzZSAnYic6IHJldHVybiAnXHUwNjI4JzsgLy8gQVJBQklDIExFVFRFUiBCRUgKKyAgICAgICAgICAgIGNhc2UgJ0InOiByZXR1cm4gJ1x1MDYyOCc7IC8vIEFSQUJJQyBMRVRURVIgQkVICisgICAgICAgICAgICBjYXNlICdjJzogcmV0dXJuICdcdTA2MzUnOyAvLyBBUkFCSUMgTEVUVEVSIFNBRAorICAgICAgICAgICAgY2FzZSAnQyc6IHJldHVybiAnXHUwNjM1JzsgLy8gQVJBQklDIExFVFRFUiBTQUQKKyAgICAgICAgICAgIGNhc2UgJ2QnOiByZXR1cm4gJ1x1MDYyRic7IC8vIEFSQUJJQyBMRVRURVIgREFMCisgICAgICAgICAgICBjYXNlICdEJzogcmV0dXJuICdcdTA2MzAnOyAvLyBBUkFCSUMgTEVUVEVSIFRIQUwKKyAgICAgICAgICAgIGNhc2UgJ2UnOiByZXR1cm4gJ1x1MDY0RSc7IC8vIEFSQUJJQyBGQVRIQQorICAgICAgICAgICAgY2FzZSAnRSc6IHJldHVybiAnXHUwNjRCJzsgLy8gQVJBQklDIEZBVEhBVEFOCisgICAgICAgICAgICBjYXNlICdmJzogcmV0dXJuICdcdTA2NDEnOyAvLyBBUkFCSUMgTEVUVEVSIEZFSAorICAgICAgICAgICAgY2FzZSAnRic6IHJldHVybiAnXHUwNjQxJzsgLy8gQVJBQklDIExFVFRFUiBGRUgKKyAgICAgICAgICAgIGNhc2UgJ2cnOiByZXR1cm4gJ1x1MDYzQSc7IC8vIEFSQUJJQyBMRVRURVIgR0hBSU4KKyAgICAgICAgICAgIGNhc2UgJ0cnOiByZXR1cm4gJ1x1MDYzQSc7IC8vIEFSQUJJQyBMRVRURVIgR0hBSU4KKyAgICAgICAgICAgIGNhc2UgJ2gnOiByZXR1cm4gJ1x1MDYyRCc7IC8vIEFSQUJJQyBMRVRURVIgSEFICisgICAgICAgICAgICBjYXNlICdIJzogcmV0dXJuICdcdTA2NDcnOyAvLyBBUkFCSUMgTEVUVEVSIEhFSAorICAgICAgICAgICAgY2FzZSAnaSc6IHJldHVybiAnXHUwNjUwJzsgLy8gQVJBQklDIEtBU1JBCisgICAgICAgICAgICBjYXNlICdJJzogcmV0dXJuICdcdTA2NEQnOyAvLyBBUkFCSUMgS0FTUkFUQU4KKyAgICAgICAgICAgIGNhc2UgJ2onOiByZXR1cm4gJ1x1MDYyQyc7IC8vIEFSQUJJQyBMRVRURVIgSkVFTQorICAgICAgICAgICAgY2FzZSAnSic6IHJldHVybiAnXHUwNjJDJzsgLy8gQVJBQklDIExFVFRFUiBKRUVNCisgICAgICAgICAgICBjYXNlICdrJzogcmV0dXJuICdcdTA2NDMnOyAvLyBBUkFCSUMgTEVUVEVSIEtBRgorICAgICAgICAgICAgY2FzZSAnSyc6IHJldHVybiAnXHUwNjJFJzsgLy8gQVJBQklDIExFVFRFUiBLSEFICisgICAgICAgICAgICBjYXNlICdsJzogcmV0dXJuICdcdTA2NDQnOyAvLyBBUkFCSUMgTEVUVEVSIExBTQorICAgICAgICAgICAgY2FzZSAnTCc6IHJldHVybiAnXHUwNjQ0JzsgLy8gQVJBQklDIExFVFRFUiBMQU0KKyAgICAgICAgICAgIGNhc2UgJ20nOiByZXR1cm4gJ1x1MDY0NSc7IC8vIEFSQUJJQyBMRVRURVIgTUVFTQorICAgICAgICAgICAgY2FzZSAnTSc6IHJldHVybiAnXHUwNjQ1JzsgLy8gQVJBQklDIExFVFRFUiBNRUVNCisgICAgICAgICAgICBjYXNlICduJzogcmV0dXJuICdcdTA2NDYnOyAvLyBBUkFCSUMgTEVUVEVSIE5PT04KKyAgICAgICAgICAgIGNhc2UgJ04nOiByZXR1cm4gJ1x1MDY0Nic7IC8vIEFSQUJJQyBMRVRURVIgTk9PTgorICAgICAgICAgICAgY2FzZSAnbyc6IHJldHVybiAnXHUwNjRGJzsgLy8gQVJBQklDIERBTU1BCisgICAgICAgICAgICBjYXNlICdPJzogcmV0dXJuICdcdTA2NEYnOyAvLyBBUkFCSUMgREFNTUEKKyAgICAgICAgICAgIGNhc2UgJ3AnOiByZXR1cm4gJ1x1MDYyOCc7IC8vIEFSQUJJQyBMRVRURVIgQkVICisgICAgICAgICAgICBjYXNlICdQJzogcmV0dXJuICdcdTA2MjgnOyAvLyBBUkFCSUMgTEVUVEVSIEJFSAorICAgICAgICAgICAgY2FzZSAncSc6IHJldHVybiAnXHUwNjQyJzsgLy8gQVJBQklDIExFVFRFUiBRQUYKKyAgICAgICAgICAgIGNhc2UgJ1EnOiByZXR1cm4gJ1x1MDY0Mic7IC8vIEFSQUJJQyBMRVRURVIgUUFGCisgICAgICAgICAgICBjYXNlICdyJzogcmV0dXJuICdcdTA2MzEnOyAvLyBBUkFCSUMgTEVUVEVSIFJFSAorICAgICAgICAgICAgY2FzZSAnUic6IHJldHVybiAnXHUwNjMxJzsgLy8gQVJBQklDIExFVFRFUiBSRUgKKyAgICAgICAgICAgIGNhc2UgJ3MnOiByZXR1cm4gJ1x1MDYzMyc7IC8vIEFSQUJJQyBMRVRURVIgU0VFTgorICAgICAgICAgICAgY2FzZSAnUyc6IHJldHVybiAnXHUwNjM0JzsgLy8gQVJBQklDIExFVFRFUiBTSEVFTgorICAgICAgICAgICAgY2FzZSAndCc6IHJldHVybiAnXHUwNjJBJzsgLy8gQVJBQklDIExFVFRFUiBURUgKKyAgICAgICAgICAgIGNhc2UgJ1QnOiByZXR1cm4gJ1x1MDYyQic7IC8vIEFSQUJJQyBMRVRURVIgVEhFSAorICAgICAgICAgICAgY2FzZSAnVSc6IHJldHVybiAnXHUwNjRDJzsgLy8gQVJBQklDIERBTU1BVEFOCisgICAgICAgICAgICBjYXNlICd1JzogcmV0dXJuICdcdTA2NEYnOyAvLyBBUkFCSUMgREFNTUEKKyAgICAgICAgICAgIGNhc2UgJ3YnOiByZXR1cm4gJ1x1MDY0MSc7IC8vIEFSQUJJQyBMRVRURVIgRkVICisgICAgICAgICAgICBjYXNlICdWJzogcmV0dXJuICdcdTA2NDEnOyAvLyBBUkFCSUMgTEVUVEVSIEZFSAorICAgICAgICAgICAgY2FzZSAndyc6IHJldHVybiAnXHUwNjQ4JzsgLy8gQVJBQklDIExFVFRFUiBXQVcKKyAgICAgICAgICAgIGNhc2UgJ1cnOiByZXR1cm4gJ1x1MDY0OCc7IC8vIEFSQUJJQyBMRVRURVIgV0FXCisgICAgICAgICAgICBjYXNlICd4JzogcmV0dXJuICdcdTA2MzMnOyAvLyBBUkFCSUMgTEVUVEVSIFNFRU4KKyAgICAgICAgICAgIGNhc2UgJ1gnOiByZXR1cm4gJ1x1MDYzMyc7IC8vIEFSQUJJQyBMRVRURVIgU0VFTgorICAgICAgICAgICAgY2FzZSAneSc6IHJldHVybiAnXHUwNjRBJzsgLy8gQVJBQklDIExFVFRFUiBZRUgKKyAgICAgICAgICAgIGNhc2UgJ1knOiByZXR1cm4gJ1x1MDY0QSc7IC8vIEFSQUJJQyBMRVRURVIgWUVICisgICAgICAgICAgICBjYXNlICd6JzogcmV0dXJuICdcdTA2MzInOyAvLyBBUkFCSUMgTEVUVEVSIFpBSU4KKyAgICAgICAgICAgIGNhc2UgJ1onOiByZXR1cm4gJ1x1MDYzOCc7IC8vIEFSQUJJQyBMRVRURVIgWkFICisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gYzsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvQmVoYXZpb3IuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9CZWhhdmlvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjIzYzc4ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvQmVoYXZpb3IuamF2YQpAQCAtMCwwICsxLDIwMyBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogQmVoYXZpb3IuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo1MToyMyAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbDsKKworaW1wb3J0IGphdmEuYXd0LkdyYXBoaWNzOworaW1wb3J0IGphdmEuYXd0LlJlY3RhbmdsZTsKKworaW1wb3J0IGphdmEuYXd0LmV2ZW50LkZvY3VzRXZlbnQ7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuS2V5RXZlbnQ7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuTW91c2VFdmVudDsKKworLyoqIEEgY2xhc3MgdGhhdCBoYW5kbGVzIGV2ZW50cyBmb3IgYSBCZWhhdmlvck93bmVyLgorKiBBIGJlaGF2aW9yIGVuYWNwc3VsYXRlcyBzb21lIHBpZWNlIG9mIHRoZSBldmVudC1oYW5kbGluZyBsb2dpYyBmb3IgYSBjb21wb25lbnQuCisqIFRoaXMgYWxsb3dzIHRoZSBjbGllbnQgdG8gc2VwYXJhdGUgZXZlbnQtaGFuZGxpbmcgbG9naWMgb3V0IGludG8gc2VwYXJhdGUgY2xhc3NlcworKiBhY2NvcmRpbmcgdG8gZnVuY3Rpb24sIG9yIHRvIGR5bmFtaWNhbGx5IGNoYW5nZSB0aGUgd2F5IGEgY29tcG9uZW50IGhhbmRsZXMKKyogZXZlbnRzIHdpdGhvdXQgYWRkaW5nIGEgbG90IG9mIHNwZWNpYWwtY2FzZSBjb2RlIHRvIHRoZSBwYW5lbCBpdHNlbGYuCisqIEJlaGF2aW9ycyBhcmUgc3RvcmVkIGluIGEgbGlua2VkIGxpc3QsIGFuZCBhbGwgYmVoYXZpb3JzIGdldCBhIGNyYWNrIGF0IGFuIGV2ZW50IGJlZm9yZQorKiB0aGUgb3duZXIgZ2V0cyBhIGNyYWNrIGF0IHRoZW0gKHJpZ2h0IG5vdywgd2UgcmVseSBvbiBvYmplY3RzIHRoYXQgaW1wbGVtZW50CisqIEJlaGF2aW9yT3duZXIgdG8gc3VwcG9ydCB0aGVzZSBzZW1hbnRpY3MpLgorKiBCZWhhdmlvciBwcm92aWRlcyBhbGwgdGhlIHNhbWUgZXZlbnQtaGFuZGxpbmcgZnVuY3Rpb25zIHRoYXQgQ29tcG9uZW50IHByb3ZpZGVzLCBhbmQKKyogdGhleSBhbGwgaGF2ZSBleGFjdGx5IHRoZSBzYW1lIHN5bnRheCBhbmQgc2VtYW50aWNzLiAqLworYWJzdHJhY3QgY2xhc3MgQmVoYXZpb3IgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcml2YXRlIEJlaGF2aW9yIGZOZXh0QmVoYXZpb3IgPSBudWxsOworICAgIHByaXZhdGUgQmVoYXZpb3JPd25lciBmT3duZXIgPSBudWxsOworCisgICAgc3RhdGljIGNsYXNzIEV2ZW50VHlwZSB7CisKKyAgICAgICAgRXZlbnRUeXBlKCkgeworICAgICAgICB9CisgICAgfQorCisgICAgLy8gZXZlbnRzIC0gc2hvdWxkIHRoZXNlIGJlIGluIFRleHRQYW5lbCAob3IgZWxzZXdoZXJlKT8KKworICAgIC8vIFRoaXMgZXZlbnQncyBXSEFUIHBhcmFtZXRlciBpcyBhIFRleHRSYW5nZSBpbnN0YW5jZQorICAgIHN0YXRpYyBmaW5hbCBFdmVudFR5cGUgU0VMRUNUID0gbmV3IEV2ZW50VHlwZSgpOworCisgICAgLy8gTm8gV0hBVCBwYXJhbSBmb3IgdGhlc2U6CisgICAgc3RhdGljIGZpbmFsIEV2ZW50VHlwZSBDVVQgPSBuZXcgRXZlbnRUeXBlKCk7CisgICAgc3RhdGljIGZpbmFsIEV2ZW50VHlwZSBDT1BZID0gbmV3IEV2ZW50VHlwZSgpOworICAgIHN0YXRpYyBmaW5hbCBFdmVudFR5cGUgUEFTVEUgPSBuZXcgRXZlbnRUeXBlKCk7CisgICAgc3RhdGljIGZpbmFsIEV2ZW50VHlwZSBDTEVBUiA9IG5ldyBFdmVudFR5cGUoKTsKKyAgICBzdGF0aWMgZmluYWwgRXZlbnRUeXBlIFVORE8gPSBuZXcgRXZlbnRUeXBlKCk7CisgICAgc3RhdGljIGZpbmFsIEV2ZW50VHlwZSBSRURPID0gbmV3IEV2ZW50VHlwZSgpOworICAgIHN0YXRpYyBmaW5hbCBFdmVudFR5cGUgQ0xFQVJfQ09NTUFORF9MT0cgPSBuZXcgRXZlbnRUeXBlKCk7CisKKyAgICAvLyBXSEFUIHBhcmFtIGlzIGEgU3R5bGVNb2RpZmllcgorICAgIHN0YXRpYyBmaW5hbCBFdmVudFR5cGUgQ0hBUkFDVEVSX1NUWUxFX01PRCA9IG5ldyBFdmVudFR5cGUoKTsKKyAgICBzdGF0aWMgZmluYWwgRXZlbnRUeXBlIFBBUkFHUkFQSF9TVFlMRV9NT0QgPSBuZXcgRXZlbnRUeXBlKCk7CisKKyAgICAvLyBXaXRoIHRoaXMgZXZlbnQsIHZhbHVlcyBvZiB0aGUgV0hBVCBwYXJhbWV0ZXIgYXJlCisgICAgLy8gZWl0aGVyIEJvb2xlYW4uVFJVRSBvciBCb29sZWFuLkZBTFNFCisgICAgc3RhdGljIGZpbmFsIEV2ZW50VHlwZSBTRVRfTU9ESUZJRUQgPSBuZXcgRXZlbnRUeXBlKCk7CisKKyAgICAvLyBXSEFUIHBhcmFtIGlzIGEgVGV4dFJlcGxhY2VtZW50CisgICAgc3RhdGljIGZpbmFsIEV2ZW50VHlwZSBSRVBMQUNFID0gbmV3IEV2ZW50VHlwZSgpOworCisgICAgLy8gV0hBVCBwYXJhbSBpcyBhbiBJbnRlZ2VyCisgICAgc3RhdGljIGZpbmFsIEV2ZW50VHlwZSBTRVRfQ09NTUFORF9MT0dfU0laRSA9IG5ldyBFdmVudFR5cGUoKTsKKworICAgIHB1YmxpYyBCZWhhdmlvcigpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBhZGRUb093bmVyKEJlaGF2aW9yT3duZXIgb3duZXIpIHsKKyAgICAgICAgcmVtb3ZlRnJvbU93bmVyKCk7CisgICAgICAgIGZPd25lciA9IG93bmVyOworICAgICAgICBzZXROZXh0QmVoYXZpb3Iob3duZXIuZ2V0QmVoYXZpb3IoKSk7CisgICAgICAgIG93bmVyLnNldEJlaGF2aW9yKHRoaXMpOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGZvY3VzR2FpbmVkKEZvY3VzRXZlbnQgZSkgeworICAgICAgICBpZiAoZk5leHRCZWhhdmlvciAhPSBudWxsKQorICAgICAgICAgICAgcmV0dXJuIGZOZXh0QmVoYXZpb3IuZm9jdXNHYWluZWQoZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBmb2N1c0xvc3QoRm9jdXNFdmVudCBlKSB7CisgICAgICAgIGlmIChmTmV4dEJlaGF2aW9yICE9IG51bGwpCisgICAgICAgICAgICByZXR1cm4gZk5leHRCZWhhdmlvci5mb2N1c0xvc3QoZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBrZXlQcmVzc2VkKEtleUV2ZW50IGUpIHsKKyAgICAgICAgaWYgKGZOZXh0QmVoYXZpb3IgIT0gbnVsbCkKKyAgICAgICAgICAgIHJldHVybiBmTmV4dEJlaGF2aW9yLmtleVByZXNzZWQoZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBrZXlUeXBlZChLZXlFdmVudCBlKSB7CisKKyAgICAgICAgaWYgKGZOZXh0QmVoYXZpb3IgIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIGZOZXh0QmVoYXZpb3Iua2V5VHlwZWQoZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBrZXlSZWxlYXNlZChLZXlFdmVudCBlKSB7CisgICAgICAgIGlmIChmTmV4dEJlaGF2aW9yICE9IG51bGwpCisgICAgICAgICAgICByZXR1cm4gZk5leHRCZWhhdmlvci5rZXlSZWxlYXNlZChlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIG1vdXNlRHJhZ2dlZChNb3VzZUV2ZW50IGUpIHsKKyAgICAgICAgaWYgKGZOZXh0QmVoYXZpb3IgIT0gbnVsbCkKKyAgICAgICAgICAgIHJldHVybiBmTmV4dEJlaGF2aW9yLm1vdXNlRHJhZ2dlZChlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIG1vdXNlRW50ZXJlZChNb3VzZUV2ZW50IGUpIHsKKyAgICAgICAgaWYgKGZOZXh0QmVoYXZpb3IgIT0gbnVsbCkKKyAgICAgICAgICAgIHJldHVybiBmTmV4dEJlaGF2aW9yLm1vdXNlRW50ZXJlZChlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIG1vdXNlRXhpdGVkKE1vdXNlRXZlbnQgZSkgeworICAgICAgICBpZiAoZk5leHRCZWhhdmlvciAhPSBudWxsKQorICAgICAgICAgICAgcmV0dXJuIGZOZXh0QmVoYXZpb3IubW91c2VFeGl0ZWQoZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBtb3VzZU1vdmVkKE1vdXNlRXZlbnQgZSkgeworICAgICAgICBpZiAoZk5leHRCZWhhdmlvciAhPSBudWxsKQorICAgICAgICAgICAgcmV0dXJuIGZOZXh0QmVoYXZpb3IubW91c2VNb3ZlZChlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIG1vdXNlUHJlc3NlZChNb3VzZUV2ZW50IGUpIHsKKyAgICAgICAgaWYgKGZOZXh0QmVoYXZpb3IgIT0gbnVsbCkKKyAgICAgICAgICAgIHJldHVybiBmTmV4dEJlaGF2aW9yLm1vdXNlUHJlc3NlZChlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIG1vdXNlUmVsZWFzZWQoTW91c2VFdmVudCBlKSB7CisgICAgICAgIGlmIChmTmV4dEJlaGF2aW9yICE9IG51bGwpCisgICAgICAgICAgICByZXR1cm4gZk5leHRCZWhhdmlvci5tb3VzZVJlbGVhc2VkKGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHVibGljIGZpbmFsIEJlaGF2aW9yIG5leHRCZWhhdmlvcigpIHsKKyAgICAgICAgcmV0dXJuIGZOZXh0QmVoYXZpb3I7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gcGFpbnQoR3JhcGhpY3MgZywgUmVjdGFuZ2xlIGRyYXdSZWN0KSB7CisgICAgICAgIGlmIChmTmV4dEJlaGF2aW9yICE9IG51bGwpCisgICAgICAgICAgICByZXR1cm4gZk5leHRCZWhhdmlvci5wYWludChnLCBkcmF3UmVjdCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCByZW1vdmVGcm9tT3duZXIoKSB7CisgICAgICAgIGlmIChmT3duZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKGZPd25lci5nZXRCZWhhdmlvcigpID09IHRoaXMpCisgICAgICAgICAgICAgICAgZk93bmVyLnNldEJlaGF2aW9yKG5leHRCZWhhdmlvcigpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIEJlaGF2aW9yICAgIGN1cnJlbnQgPSBmT3duZXIuZ2V0QmVoYXZpb3IoKTsKKworICAgICAgICAgICAgICAgIHdoaWxlIChjdXJyZW50ICE9IG51bGwgJiYgY3VycmVudC5uZXh0QmVoYXZpb3IoKSAhPSB0aGlzKQorICAgICAgICAgICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC5uZXh0QmVoYXZpb3IoKTsKKyAgICAgICAgICAgICAgICBpZiAoY3VycmVudCAhPSBudWxsKQorICAgICAgICAgICAgICAgICAgICBjdXJyZW50LnNldE5leHRCZWhhdmlvcihuZXh0QmVoYXZpb3IoKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzZXROZXh0QmVoYXZpb3IobnVsbCk7CisgICAgICAgICAgICBmT3duZXIgPSBudWxsOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIGZpbmFsIHZvaWQgc2V0TmV4dEJlaGF2aW9yKEJlaGF2aW9yIG5leHQpIHsKKyAgICAgICAgZk5leHRCZWhhdmlvciA9IG5leHQ7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gdGV4dENvbnRyb2xFdmVudE9jY3VycmVkKEV2ZW50VHlwZSBldmVudCwgT2JqZWN0IGRhdGEpIHsKKyAgICAgICAgaWYgKGZOZXh0QmVoYXZpb3IgIT0gbnVsbCkKKyAgICAgICAgICAgIHJldHVybiBmTmV4dEJlaGF2aW9yLnRleHRDb250cm9sRXZlbnRPY2N1cnJlZChldmVudCwgZGF0YSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvQmVoYXZpb3JPd25lci5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL0JlaGF2aW9yT3duZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi40MTY2NWEwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL0JlaGF2aW9yT3duZXIuamF2YQpAQCAtMCwwICsxLDIyIEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBCZWhhdmlvck93bmVyLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NTE6MjMgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWw7CisKK2ludGVyZmFjZSBCZWhhdmlvck93bmVyIHsKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHB1YmxpYyBCZWhhdmlvciBnZXRCZWhhdmlvcigpOworICAgIHB1YmxpYyB2b2lkIHNldEJlaGF2aW9yKEJlaGF2aW9yIGIpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL0NvbW1hbmQuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9Db21tYW5kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNmY3NmJmYwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9Db21tYW5kLmphdmEKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogQ29tbWFuZC5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjUxOjIzICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsOworCithYnN0cmFjdCBjbGFzcyBDb21tYW5kIHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHJpdmF0ZSBDb21tYW5kIGZQcmV2aW91c0NvbW1hbmQgPSBudWxsOworCisgICAgLy8gZk1vZGlmaWVkIGlzIHVzZWQgdG8ga2VlcCBhIHRleHRNb2RpZmllZCBmbGFnIGZvcgorICAgIC8vIGNsaWVudHMKKyAgICBwcml2YXRlIGJvb2xlYW4gZk1vZGlmaWVkOworCisgICAgcHVibGljIENvbW1hbmQoKSB7CisgICAgICAgIGZNb2RpZmllZCA9IHRydWU7CisgICAgfQorCisgICAgcHVibGljIENvbW1hbmQgcHJldmlvdXNDb21tYW5kKCkgeworICAgICAgICByZXR1cm4gZlByZXZpb3VzQ29tbWFuZDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRQcmV2aW91c0NvbW1hbmQoQ29tbWFuZCAgcHJldmlvdXNDb21tYW5kKSB7CisgICAgICAgIGZQcmV2aW91c0NvbW1hbmQgPSBwcmV2aW91c0NvbW1hbmQ7CisgICAgfQorCisgICAgcHVibGljIGFic3RyYWN0IHZvaWQgZXhlY3V0ZSgpOworICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIHVuZG8oKTsKKworICAgIHB1YmxpYyB2b2lkIHJlZG8oKSB7CisgICAgICAgIGV4ZWN1dGUoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgZmluYWwgYm9vbGVhbiBpc01vZGlmaWVkKCkgeworCisgICAgICAgIHJldHVybiBmTW9kaWZpZWQ7CisgICAgfQorCisgICAgcHVibGljIGZpbmFsIHZvaWQgc2V0TW9kaWZpZWQoYm9vbGVhbiBtb2RpZmllZCkgeworCisgICAgICAgIGZNb2RpZmllZCA9IG1vZGlmaWVkOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9GYWtlQ29tcG9uZW50LmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvRmFrZUNvbXBvbmVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmRhZDU3NWQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvRmFrZUNvbXBvbmVudC5qYXZhCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IEZha2VDb21wb25lbnQuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo1MToyMyAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbDsKKworaW1wb3J0IGphdmEuYXd0LkNvbXBvbmVudDsKK2ltcG9ydCBqYXZhLmF3dC5HcmFwaGljczsKKworYWJzdHJhY3QgY2xhc3MgRmFrZUNvbXBvbmVudCB7CisgICAgCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcm90ZWN0ZWQgQ29tcG9uZW50IGZIb3N0OworICAgIAorICAgIGFic3RyYWN0IHZvaWQgYWRkTm90aWZ5KCk7CisgICAgYWJzdHJhY3Qgdm9pZCBwYWludChHcmFwaGljcyBnKTsKKyAgICB2b2lkIHNldEhvc3QoQ29tcG9uZW50IGhvc3QpIHsgICAKKyAgICAgICAgZkhvc3QgPSBob3N0OworICAgIH0KKyAgICBhYnN0cmFjdCB2b2lkIHJlcXVlc3RGb2N1cygpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9IYWNrQXJhYmljVHJhbnNsaXRlcmF0aW9uLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvSGFja0FyYWJpY1RyYW5zbGl0ZXJhdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmNjMDMxZTQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvSGFja0FyYWJpY1RyYW5zbGl0ZXJhdGlvbi5qYXZhCkBAIC0wLDAgKzEsMTgzIEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBIYWNrQXJhYmljVHJhbnNsaXRlcmF0aW9uLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NTE6MjMgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KKy8qCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OCwgQWxsIFJpZ2h0cyBSZXNlcnZlZAorICovCisKK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWw7CisKKy8qCitGb3IgYW55IGluY29taW5nIGNoYXJhY3RlciBDCitpZiB5b3UgY2FuIG1hcCBDIHVzaW5nIHRoZSBmb2xsb3dpbmcgRmFrZUFyYWJpY1RhYmxlLCByZXR1cm4KK0Zha2VBcmFiaWNUYWJsZShDKQorZWxzZSBpZiBDIGlzIGZyb20gQSB0aHJvdWdoIFosIHJldHVybiBGYWtlQXJhYmljVGFibGUobG93ZXJjYXNlKEMpKQorZWxzZSBqdXN0IHJldHVybiBDCisKKworRmFrZUFyYWJpY1RhYmxlIGlzIGRlZmluZWQgYnkgdGhlIGZvbGxvd2luZyBtYXBwaW5nCisKKzAgICAwNjYwO0FSQUJJQy1JTkRJQyBESUdJVCBaRVJPO05kOzA7QU47OzA7MDswO047Ozs7OworMSAgIDA2NjE7QVJBQklDLUlORElDIERJR0lUIE9ORTtOZDswO0FOOzsxOzE7MTtOOzs7OzsKKzIgICAwNjYyO0FSQUJJQy1JTkRJQyBESUdJVCBUV087TmQ7MDtBTjs7MjsyOzI7Tjs7Ozs7CiszICAgMDY2MztBUkFCSUMtSU5ESUMgRElHSVQgVEhSRUU7TmQ7MDtBTjs7MzszOzM7Tjs7Ozs7Cis0ICAgMDY2NDtBUkFCSUMtSU5ESUMgRElHSVQgRk9VUjtOZDswO0FOOzs0OzQ7NDtOOzs7OzsKKzUgICAwNjY1O0FSQUJJQy1JTkRJQyBESUdJVCBGSVZFO05kOzA7QU47OzU7NTs1O047Ozs7OworNiAgIDA2NjY7QVJBQklDLUlORElDIERJR0lUIFNJWDtOZDswO0FOOzs2OzY7NjtOOzs7OzsKKzcgICAwNjY3O0FSQUJJQy1JTkRJQyBESUdJVCBTRVZFTjtOZDswO0FOOzs3Ozc7NztOOzs7OzsKKzggICAwNjY4O0FSQUJJQy1JTkRJQyBESUdJVCBFSUdIVDtOZDswO0FOOzs4Ozg7ODtOOzs7OzsKKzkgICAwNjY5O0FSQUJJQy1JTkRJQyBESUdJVCBOSU5FO05kOzA7QU47Ozk7OTs5O047Ozs7OworCislICAgMDY2QTtBUkFCSUMgUEVSQ0VOVCBTSUdOO1BvOzA7RVQ7Ozs7O047Ozs7OworLiAgIDA2NkI7QVJBQklDIERFQ0lNQUwgU0VQQVJBVE9SO1BvOzA7QU47Ozs7O047Ozs7OworLCAgIDA2MEM7QVJBQklDIENPTU1BO1BvOzA7Ujs7Ozs7Tjs7Ozs7CistICAgMDY0MDtBUkFCSUMgVEFUV0VFTDtMbTswO1I7Ozs7O047Ozs7OworJyAgIDA2NTI7QVJBQklDIFNVS1VOO01uOzM0O1I7Ozs7O047Ozs7OworIiAgIDA2NTE7QVJBQklDIFNIQUREQTtNbjszMztSOzs7OztOO0FSQUJJQyBTSEFEREFIOzs7OworOyAgIDA2MUI7QVJBQklDIFNFTUlDT0xPTjtQbzswO1I7Ozs7O047Ozs7OworPyAgIDA2MUY7QVJBQklDIFFVRVNUSU9OIE1BUks7UG87MDtSOzs7OztOOzs7OzsKKworYSAgIDA2Mjc7QVJBQklDIExFVFRFUiBBTEVGO0xvOzA7Ujs7Ozs7Tjs7Ozs7CitBICAgMDYzOTtBUkFCSUMgTEVUVEVSIEFJTjtMbzswO1I7Ozs7O047Ozs7OworYiAgIDA2Mjg7QVJBQklDIExFVFRFUiBCRUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgQkFBOzs7OworYyAgIDA2MzU7QVJBQklDIExFVFRFUiBTQUQ7TG87MDtSOzs7OztOOzs7OzsKK2QgICAwNjJGO0FSQUJJQyBMRVRURVIgREFMO0xvOzA7Ujs7Ozs7Tjs7Ozs7CitEICAgMDYzMDtBUkFCSUMgTEVUVEVSIFRIQUw7TG87MDtSOzs7OztOOzs7OzsKK0UgICAwNjRCO0FSQUJJQyBGQVRIQVRBTjtNbjsyNztSOzs7OztOOzs7OzsKK2UgICAwNjRFO0FSQUJJQyBGQVRIQTtNbjszMDtSOzs7OztOO0FSQUJJQyBGQVRIQUg7Ozs7CitmICAgMDY0MTtBUkFCSUMgTEVUVEVSIEZFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBGQTs7OzsKK2cgICAwNjNBO0FSQUJJQyBMRVRURVIgR0hBSU47TG87MDtSOzs7OztOOzs7OzsKK2ggICAwNjJEO0FSQUJJQyBMRVRURVIgSEFIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIEhBQTs7OzsKK0ggICAwNjQ3O0FSQUJJQyBMRVRURVIgSEVIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIEhBOzs7OworSSAgIDA2NEQ7QVJBQklDIEtBU1JBVEFOO01uOzI5O1I7Ozs7O047Ozs7OworaSAgIDA2NTA7QVJBQklDIEtBU1JBO01uOzMyO1I7Ozs7O047QVJBQklDIEtBU1JBSDs7OzsKK2ogICAwNjJDO0FSQUJJQyBMRVRURVIgSkVFTTtMbzswO1I7Ozs7O047Ozs7OworSyAgIDA2MkU7QVJBQklDIExFVFRFUiBLSEFIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIEtIQUE7Ozs7CitrICAgMDY0MztBUkFCSUMgTEVUVEVSIEtBRjtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBDQUY7Ozs7CitsICAgMDY0NDtBUkFCSUMgTEVUVEVSIExBTTtMbzswO1I7Ozs7O047Ozs7OworbSAgIDA2NDU7QVJBQklDIExFVFRFUiBNRUVNO0xvOzA7Ujs7Ozs7Tjs7Ozs7CituICAgMDY0NjtBUkFCSUMgTEVUVEVSIE5PT047TG87MDtSOzs7OztOOzs7OzsKK28gICAwNjRGO0FSQUJJQyBEQU1NQTtNbjszMTtSOzs7OztOO0FSQUJJQyBEQU1NQUg7Ozs7CitwICAgMDYyODtBUkFCSUMgTEVUVEVSIEJFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBCQUE7Ozs7CitxICAgMDY0MjtBUkFCSUMgTEVUVEVSIFFBRjtMbzswO1I7Ozs7O047Ozs7OworciAgIDA2MzE7QVJBQklDIExFVFRFUiBSRUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgUkE7Ozs7CitzICAgMDYzMztBUkFCSUMgTEVUVEVSIFNFRU47TG87MDtSOzs7OztOOzs7OzsKK1MgICAwNjM0O0FSQUJJQyBMRVRURVIgU0hFRU47TG87MDtSOzs7OztOOzs7OzsKK3QgICAwNjJBO0FSQUJJQyBMRVRURVIgVEVIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFRBQTs7OzsKK1QgICAwNjJCO0FSQUJJQyBMRVRURVIgVEhFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBUSEFBOzs7OworVSAgIDA2NEM7QVJBQklDIERBTU1BVEFOO01uOzI4O1I7Ozs7O047Ozs7OwordSAgIDA2NEY7QVJBQklDIERBTU1BO01uOzMxO1I7Ozs7O047QVJBQklDIERBTU1BSDs7OzsKK3YgICAwNjQxO0FSQUJJQyBMRVRURVIgRkVIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIEZBOzs7OwordyAgIDA2NDg7QVJBQklDIExFVFRFUiBXQVc7TG87MDtSOzs7OztOOzs7OzsKK3ggICAwNjMzO0FSQUJJQyBMRVRURVIgU0VFTjtMbzswO1I7Ozs7O047Ozs7OworeSAgIDA2NEE7QVJBQklDIExFVFRFUiBZRUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgWUE7Ozs7Cit6ICAgMDYzMjtBUkFCSUMgTEVUVEVSIFpBSU47TG87MDtSOzs7OztOOzs7OzsKK1ogICAwNjM4O0FSQUJJQyBMRVRURVIgWkFIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIERIQUg7Ozs7CisKKyovCisKKy8qKgorICogVGhpcyBjbGFzcyBpbXBsZW1lbnRzIEtleVJlbWFwIHRvIHByb2R1Y2UgdHJhbnNsaXRlcmF0ZWQgQXJhYmljCisgKiBjaGFyYWN0ZXJzIGZyb20gTGF0aW4tMSBjaGFyYWN0ZXJzLgorICovCisKKy8vIE5PVEU6IHRoaXMgY2xhc3MgZWxpbWluYXRlcyBBcmFiaWMgdm93ZWxzIHdoaWNoIGxvb2sgdWdseQorLy8gaW4gdGhlIGZvbnQgaW4gd2hpY2ggd2UgaGFwcGVuIHRvIGJlIGRlbW8naW5nLiAgSXQncyB0b3RhbGx5CisvLyBib2d1cyBvdGhlcndpc2UuCitmaW5hbCBjbGFzcyBIYWNrQXJhYmljVHJhbnNsaXRlcmF0aW9uIGV4dGVuZHMgS2V5UmVtYXAgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwdWJsaWMgY2hhciByZW1hcChjaGFyIGMpIHsKKworICAgICAgICBzd2l0Y2ggKGMpIHsKKyAgICAgICAgICAgIGNhc2UgJzAnOiByZXR1cm4gJ1x1MDY2MCc7IC8vIEFSQUJJQy1JTkRJQyBESUdJVCBaRVJPCisgICAgICAgICAgICBjYXNlICcxJzogcmV0dXJuICdcdTA2NjEnOyAvLyBBUkFCSUMtSU5ESUMgRElHSVQgT05FCisgICAgICAgICAgICBjYXNlICcyJzogcmV0dXJuICdcdTA2NjInOyAvLyBBUkFCSUMtSU5ESUMgRElHSVQgVFdPCisgICAgICAgICAgICBjYXNlICczJzogcmV0dXJuICdcdTA2NjMnOyAvLyBBUkFCSUMtSU5ESUMgRElHSVQgVEhSRUUKKyAgICAgICAgICAgIGNhc2UgJzQnOiByZXR1cm4gJ1x1MDY2NCc7IC8vIEFSQUJJQy1JTkRJQyBESUdJVCBGT1VSCisgICAgICAgICAgICBjYXNlICc1JzogcmV0dXJuICdcdTA2NjUnOyAvLyBBUkFCSUMtSU5ESUMgRElHSVQgRklWRQorICAgICAgICAgICAgY2FzZSAnNic6IHJldHVybiAnXHUwNjY2JzsgLy8gQVJBQklDLUlORElDIERJR0lUIFNJWAorICAgICAgICAgICAgY2FzZSAnNyc6IHJldHVybiAnXHUwNjY3JzsgLy8gQVJBQklDLUlORElDIERJR0lUIFNFVkVOCisgICAgICAgICAgICBjYXNlICc4JzogcmV0dXJuICdcdTA2NjgnOyAvLyBBUkFCSUMtSU5ESUMgRElHSVQgRUlHSFQKKyAgICAgICAgICAgIGNhc2UgJzknOiByZXR1cm4gJ1x1MDY2OSc7IC8vIEFSQUJJQy1JTkRJQyBESUdJVCBOSU5FCisKKyAgICAgICAgICAgIGNhc2UgJyUnOiByZXR1cm4gJ1x1MDY2QSc7IC8vIEFSQUJJQyBQRVJDRU5UIFNJR04KKyAgICAgICAgICAgIC8vIHRoZSBUcmFkaXRpb25hbCBBcmFiaWMgZm9udCBkb2VzIG5vdCBjb250YWluIHRoaXMgY2hhcmFjdGVyCisgICAgICAgICAgICAvLyBjYXNlICcuJzogcmV0dXJuICdcdTA2NkInOyAvLyBBUkFCSUMgREVDSU1BTCBTRVBBUkFUT1IKKyAgICAgICAgICAgIGNhc2UgJywnOiByZXR1cm4gJ1x1MDYwQyc7IC8vIEFSQUJJQyBDT01NQQorICAgICAgICAgICAgY2FzZSAnLSc6IHJldHVybiAnXHUwNjQwJzsgLy8gQVJBQklDIFRBVFdFRUwKKyAgICAgICAgICAgIGNhc2UgJ1wnJzogcmV0dXJuICdcdTA2NTInOyAvLyBBUkFCSUMgU1VLVU4KKyAgICAgICAgICAgIGNhc2UgJyInOiByZXR1cm4gJ1x1MDY1MSc7IC8vIEFSQUJJQyBTSEFEREEKKyAgICAgICAgICAgIGNhc2UgJzsnOiByZXR1cm4gJ1x1MDYxQic7IC8vIEFSQUJJQyBTRU1JQ09MT04KKyAgICAgICAgICAgIGNhc2UgJz8nOiByZXR1cm4gJ1x1MDYxRic7IC8vIEFSQUJJQyBRVUVTVElPTiBNQVJLCisKKyAgICAgICAgICAgIGNhc2UgJ2EnOiByZXR1cm4gJ1x1MDYyNyc7IC8vIEFSQUJJQyBMRVRURVIgQUxFRgorICAgICAgICAgICAgY2FzZSAnQSc6IHJldHVybiAnXHUwNjM5JzsgLy8gQVJBQklDIExFVFRFUiBBSU4KKyAgICAgICAgICAgIGNhc2UgJ2InOiByZXR1cm4gJ1x1MDYyOCc7IC8vIEFSQUJJQyBMRVRURVIgQkVICisgICAgICAgICAgICBjYXNlICdCJzogcmV0dXJuICdcdTA2MjgnOyAvLyBBUkFCSUMgTEVUVEVSIEJFSAorICAgICAgICAgICAgY2FzZSAnYyc6IHJldHVybiAnXHUwNjM1JzsgLy8gQVJBQklDIExFVFRFUiBTQUQKKyAgICAgICAgICAgIGNhc2UgJ0MnOiByZXR1cm4gJ1x1MDYzNSc7IC8vIEFSQUJJQyBMRVRURVIgU0FECisgICAgICAgICAgICBjYXNlICdkJzogcmV0dXJuICdcdTA2MkYnOyAvLyBBUkFCSUMgTEVUVEVSIERBTAorICAgICAgICAgICAgY2FzZSAnRCc6IHJldHVybiAnXHUwNjMwJzsgLy8gQVJBQklDIExFVFRFUiBUSEFMCisgICAgICAgICAgICBjYXNlICdlJzogLy9yZXR1cm4gJ1x1MDY0RSc7IC8vIEFSQUJJQyBGQVRIQQorICAgICAgICAgICAgY2FzZSAnRSc6IC8vcmV0dXJuICdcdTA2NEInOyAvLyBBUkFCSUMgRkFUSEFUQU4KKyAgICAgICAgICAgIGNhc2UgJ2YnOiByZXR1cm4gJ1x1MDY0MSc7IC8vIEFSQUJJQyBMRVRURVIgRkVICisgICAgICAgICAgICBjYXNlICdGJzogcmV0dXJuICdcdTA2NDEnOyAvLyBBUkFCSUMgTEVUVEVSIEZFSAorICAgICAgICAgICAgY2FzZSAnZyc6IHJldHVybiAnXHUwNjNBJzsgLy8gQVJBQklDIExFVFRFUiBHSEFJTgorICAgICAgICAgICAgY2FzZSAnRyc6IHJldHVybiAnXHUwNjNBJzsgLy8gQVJBQklDIExFVFRFUiBHSEFJTgorICAgICAgICAgICAgY2FzZSAnaCc6IHJldHVybiAnXHUwNjJEJzsgLy8gQVJBQklDIExFVFRFUiBIQUgKKyAgICAgICAgICAgIGNhc2UgJ0gnOiByZXR1cm4gJ1x1MDY0Nyc7IC8vIEFSQUJJQyBMRVRURVIgSEVICisgICAgICAgICAgICBjYXNlICdpJzogLy9yZXR1cm4gJ1x1MDY1MCc7IC8vIEFSQUJJQyBLQVNSQQorICAgICAgICAgICAgY2FzZSAnSSc6IC8vcmV0dXJuICdcdTA2NEQnOyAvLyBBUkFCSUMgS0FTUkFUQU4KKyAgICAgICAgICAgIGNhc2UgJ2onOiByZXR1cm4gJ1x1MDYyQyc7IC8vIEFSQUJJQyBMRVRURVIgSkVFTQorICAgICAgICAgICAgY2FzZSAnSic6IHJldHVybiAnXHUwNjJDJzsgLy8gQVJBQklDIExFVFRFUiBKRUVNCisgICAgICAgICAgICBjYXNlICdrJzogcmV0dXJuICdcdTA2NDMnOyAvLyBBUkFCSUMgTEVUVEVSIEtBRgorICAgICAgICAgICAgY2FzZSAnSyc6IHJldHVybiAnXHUwNjJFJzsgLy8gQVJBQklDIExFVFRFUiBLSEFICisgICAgICAgICAgICBjYXNlICdsJzogcmV0dXJuICdcdTA2NDQnOyAvLyBBUkFCSUMgTEVUVEVSIExBTQorICAgICAgICAgICAgY2FzZSAnTCc6IHJldHVybiAnXHUwNjQ0JzsgLy8gQVJBQklDIExFVFRFUiBMQU0KKyAgICAgICAgICAgIGNhc2UgJ20nOiByZXR1cm4gJ1x1MDY0NSc7IC8vIEFSQUJJQyBMRVRURVIgTUVFTQorICAgICAgICAgICAgY2FzZSAnTSc6IHJldHVybiAnXHUwNjQ1JzsgLy8gQVJBQklDIExFVFRFUiBNRUVNCisgICAgICAgICAgICBjYXNlICduJzogcmV0dXJuICdcdTA2NDYnOyAvLyBBUkFCSUMgTEVUVEVSIE5PT04KKyAgICAgICAgICAgIGNhc2UgJ04nOiByZXR1cm4gJ1x1MDY0Nic7IC8vIEFSQUJJQyBMRVRURVIgTk9PTgorICAgICAgICAgICAgY2FzZSAnbyc6IC8vcmV0dXJuICdcdTA2NEYnOyAvLyBBUkFCSUMgREFNTUEKKyAgICAgICAgICAgIGNhc2UgJ08nOiAvL3JldHVybiAnXHUwNjRGJzsgLy8gQVJBQklDIERBTU1BCisgICAgICAgICAgICBjYXNlICdwJzogcmV0dXJuICdcdTA2MjgnOyAvLyBBUkFCSUMgTEVUVEVSIEJFSAorICAgICAgICAgICAgY2FzZSAnUCc6IHJldHVybiAnXHUwNjI4JzsgLy8gQVJBQklDIExFVFRFUiBCRUgKKyAgICAgICAgICAgIGNhc2UgJ3EnOiByZXR1cm4gJ1x1MDY0Mic7IC8vIEFSQUJJQyBMRVRURVIgUUFGCisgICAgICAgICAgICBjYXNlICdRJzogcmV0dXJuICdcdTA2NDInOyAvLyBBUkFCSUMgTEVUVEVSIFFBRgorICAgICAgICAgICAgY2FzZSAncic6IHJldHVybiAnXHUwNjMxJzsgLy8gQVJBQklDIExFVFRFUiBSRUgKKyAgICAgICAgICAgIGNhc2UgJ1InOiByZXR1cm4gJ1x1MDYzMSc7IC8vIEFSQUJJQyBMRVRURVIgUkVICisgICAgICAgICAgICBjYXNlICdzJzogcmV0dXJuICdcdTA2MzMnOyAvLyBBUkFCSUMgTEVUVEVSIFNFRU4KKyAgICAgICAgICAgIGNhc2UgJ1MnOiByZXR1cm4gJ1x1MDYzNCc7IC8vIEFSQUJJQyBMRVRURVIgU0hFRU4KKyAgICAgICAgICAgIGNhc2UgJ3QnOiByZXR1cm4gJ1x1MDYyQSc7IC8vIEFSQUJJQyBMRVRURVIgVEVICisgICAgICAgICAgICBjYXNlICdUJzogcmV0dXJuICdcdTA2MkInOyAvLyBBUkFCSUMgTEVUVEVSIFRIRUgKKyAgICAgICAgICAgIGNhc2UgJ1UnOiAvL3JldHVybiAnXHUwNjRDJzsgLy8gQVJBQklDIERBTU1BVEFOCisgICAgICAgICAgICBjYXNlICd1JzogLy9yZXR1cm4gJ1x1MDY0Ric7IC8vIEFSQUJJQyBEQU1NQQorICAgICAgICAgICAgY2FzZSAndic6IHJldHVybiAnXHUwNjQxJzsgLy8gQVJBQklDIExFVFRFUiBGRUgKKyAgICAgICAgICAgIGNhc2UgJ1YnOiByZXR1cm4gJ1x1MDY0MSc7IC8vIEFSQUJJQyBMRVRURVIgRkVICisgICAgICAgICAgICBjYXNlICd3JzogcmV0dXJuICdcdTA2NDgnOyAvLyBBUkFCSUMgTEVUVEVSIFdBVworICAgICAgICAgICAgY2FzZSAnVyc6IHJldHVybiAnXHUwNjQ4JzsgLy8gQVJBQklDIExFVFRFUiBXQVcKKyAgICAgICAgICAgIGNhc2UgJ3gnOiByZXR1cm4gJ1x1MDYzMyc7IC8vIEFSQUJJQyBMRVRURVIgU0VFTgorICAgICAgICAgICAgY2FzZSAnWCc6IHJldHVybiAnXHUwNjMzJzsgLy8gQVJBQklDIExFVFRFUiBTRUVOCisgICAgICAgICAgICBjYXNlICd5JzogcmV0dXJuICdcdTA2NEEnOyAvLyBBUkFCSUMgTEVUVEVSIFlFSAorICAgICAgICAgICAgY2FzZSAnWSc6IHJldHVybiAnXHUwNjRBJzsgLy8gQVJBQklDIExFVFRFUiBZRUgKKyAgICAgICAgICAgIGNhc2UgJ3onOiByZXR1cm4gJ1x1MDYzMic7IC8vIEFSQUJJQyBMRVRURVIgWkFJTgorICAgICAgICAgICAgY2FzZSAnWic6IHJldHVybiAnXHUwNjM4JzsgLy8gQVJBQklDIExFVFRFUiBaQUgKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBjOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9IZWJyZXdUcmFuc2xpdGVyYXRpb24uamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9IZWJyZXdUcmFuc2xpdGVyYXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5jYTY3YmVhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL0hlYnJld1RyYW5zbGl0ZXJhdGlvbi5qYXZhCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IEhlYnJld1RyYW5zbGl0ZXJhdGlvbi5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjUxOjIzICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCisvKgorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgsIEFsbCBSaWdodHMgUmVzZXJ2ZWQKKyAqLworCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsOworCisvKioKKyAqIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBLZXlSZW1hcCB0byBwcm9kdWNlIHRyYW5zbGl0ZXJhdGVkIEhlYnJldworICogY2hhcmFjdGVycyBmcm9tIExhdGluLTEgY2hhcmFjdGVycy4KKyAqLworCitmaW5hbCBjbGFzcyBIZWJyZXdUcmFuc2xpdGVyYXRpb24gZXh0ZW5kcyBLZXlSZW1hcCB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHB1YmxpYyBjaGFyIHJlbWFwKGNoYXIgYykgeworCisgICAgICAgIHN3aXRjaCAoYykgeworICAgICAgICAgICAgY2FzZSAnYSc6IHJldHVybiAnXHUwNUQwJzsgLy8gSEVCUkVXIExFVFRFUiBBTEVGCisgICAgICAgICAgICBjYXNlICdBJzogcmV0dXJuICdcdTA1RTInOyAvLyBIRUJSRVcgTEVUVEVSIEFZSU4KKyAgICAgICAgICAgIGNhc2UgJ2InOiByZXR1cm4gJ1x1MDVEMSc7IC8vIEhFQlJFVyBMRVRURVIgQkVUCisgICAgICAgICAgICBjYXNlICdCJzogcmV0dXJuICdcdTA1RDEnOyAvLyBIRUJSRVcgTEVUVEVSIEJFVAorICAgICAgICAgICAgY2FzZSAnYyc6IHJldHVybiAnXHUwNUU2JzsgLy8gSEVCUkVXIExFVFRFUiBUU0FESQorICAgICAgICAgICAgY2FzZSAnQyc6IHJldHVybiAnXHUwNUU1JzsgLy8gSEVCUkVXIExFVFRFUiBGSU5BTCBUU0FESQorICAgICAgICAgICAgY2FzZSAnZCc6IHJldHVybiAnXHUwNUQzJzsgLy8gSEVCUkVXIExFVFRFUiBEQUxFVAorICAgICAgICAgICAgY2FzZSAnRCc6IHJldHVybiAnXHUwNUJDJzsgLy8gSEVCUkVXIFBPSU5UIERBR0VTSAorICAgICAgICAgICAgY2FzZSAnZSc6IHJldHVybiAnXHUwNUI1JzsgLy8gSEVCUkVXIFBPSU5UIFRTRVJFCisgICAgICAgICAgICBjYXNlICdFJzogcmV0dXJuICdcdTA1QjYnOyAvLyBIRUJSRVcgUE9JTlQgU0VHT0wKKyAgICAgICAgICAgIGNhc2UgJ2YnOiByZXR1cm4gJ1x1MDVFNCc7IC8vIEhFQlJFVyBMRVRURVIgUEUKKyAgICAgICAgICAgIGNhc2UgJ0YnOiByZXR1cm4gJ1x1MDVFNCc7IC8vIEhFQlJFVyBMRVRURVIgUEUKKyAgICAgICAgICAgIGNhc2UgJ2cnOiByZXR1cm4gJ1x1MDVEMic7IC8vIEhFQlJFVyBMRVRURVIgR0lNRUwKKyAgICAgICAgICAgIGNhc2UgJ0cnOiByZXR1cm4gJ1x1MDVEMic7IC8vIEhFQlJFVyBMRVRURVIgR0lNRUwKKyAgICAgICAgICAgIGNhc2UgJ2gnOiByZXR1cm4gJ1x1MDVENCc7IC8vIEhFQlJFVyBMRVRURVIgSEUKKyAgICAgICAgICAgIGNhc2UgJ0gnOiByZXR1cm4gJ1x1MDVENyc7IC8vIEhFQlJFVyBMRVRURVIgSEVUCisgICAgICAgICAgICBjYXNlICdpJzogcmV0dXJuICdcdTA1RDknOyAvLyBIRUJSRVcgTEVUVEVSIFlPRAorICAgICAgICAgICAgY2FzZSAnSSc6IHJldHVybiAnXHUwNUI0JzsgLy8gSEVCUkVXIFBPSU5UIEhJUklRCisgICAgICAgICAgICBjYXNlICdqJzogcmV0dXJuICdcdTA1RDknOyAvLyBIRUJSRVcgTEVUVEVSIFlPRAorICAgICAgICAgICAgY2FzZSAnSic6IHJldHVybiAnXHUwNUMxJzsgLy8gSEVCUkVXIFBPSU5UIFNISU4gRE9UCisgICAgICAgICAgICBjYXNlICdrJzogcmV0dXJuICdcdTA1REInOyAvLyBIRUJSRVcgTEVUVEVSIEtBRgorICAgICAgICAgICAgY2FzZSAnSyc6IHJldHVybiAnXHUwNURBJzsgLy8gSEVCUkVXIExFVFRFUiBGSU5BTCBLQUYKKyAgICAgICAgICAgIGNhc2UgJ2wnOiByZXR1cm4gJ1x1MDVEQyc7IC8vIEhFQlJFVyBMRVRURVIgTEFNRUQKKyAgICAgICAgICAgIGNhc2UgJ0wnOiByZXR1cm4gJ1x1MDVEQyc7IC8vIEhFQlJFVyBMRVRURVIgTEFNRUQKKyAgICAgICAgICAgIGNhc2UgJ20nOiByZXR1cm4gJ1x1MDVERSc7IC8vIEhFQlJFVyBMRVRURVIgTUVNCisgICAgICAgICAgICBjYXNlICdNJzogcmV0dXJuICdcdTA1REQnOyAvLyBIRUJSRVcgTEVUVEVSIEZJTkFMIE1FTQorICAgICAgICAgICAgY2FzZSAnbic6IHJldHVybiAnXHUwNUUwJzsgLy8gSEVCUkVXIExFVFRFUiBOVU4KKyAgICAgICAgICAgIGNhc2UgJ04nOiByZXR1cm4gJ1x1MDVERic7IC8vIEhFQlJFVyBMRVRURVIgRklOQUwgTlVOCisgICAgICAgICAgICBjYXNlICdvJzogcmV0dXJuICdcdTA1RDUnOyAvLyBIRUJSRVcgTEVUVEVSIFZBVgorICAgICAgICAgICAgY2FzZSAnTyc6IHJldHVybiAnXHUwNUI5JzsgLy8gSEVCUkVXIFBPSU5UIEhPTEFNCisgICAgICAgICAgICBjYXNlICdwJzogcmV0dXJuICdcdTA1RTQnOyAvLyBIRUJSRVcgTEVUVEVSIFBFCisgICAgICAgICAgICBjYXNlICdQJzogcmV0dXJuICdcdTA1RTMnOyAvLyBIRUJSRVcgTEVUVEVSIEZJTkFMIFBFCisgICAgICAgICAgICBjYXNlICdxJzogcmV0dXJuICdcdTA1RTcnOyAvLyBIRUJSRVcgTEVUVEVSIFFPRgorICAgICAgICAgICAgY2FzZSAnUSc6IHJldHVybiAnXHUwNUU3JzsgLy8gSEVCUkVXIExFVFRFUiBRT0YKKyAgICAgICAgICAgIGNhc2UgJ3InOiByZXR1cm4gJ1x1MDVFOCc7IC8vIEhFQlJFVyBMRVRURVIgUkVTSAorICAgICAgICAgICAgY2FzZSAnUic6IHJldHVybiAnXHUwNUJGJzsgLy8gSEVCUkVXIFBPSU5UIFJBRkUKKyAgICAgICAgICAgIGNhc2UgJ3MnOiByZXR1cm4gJ1x1MDVFOSc7IC8vIEhFQlJFVyBMRVRURVIgU0hJTgorICAgICAgICAgICAgY2FzZSAnUyc6IHJldHVybiAnXHUwNUUxJzsgLy8gSEVCUkVXIExFVFRFUiBTQU1FS0gKKyAgICAgICAgICAgIGNhc2UgJ3QnOiByZXR1cm4gJ1x1MDVFQSc7IC8vIEhFQlJFVyBMRVRURVIgVEFWCisgICAgICAgICAgICBjYXNlICdUJzogcmV0dXJuICdcdTA1RDgnOyAvLyBIRUJSRVcgTEVUVEVSIFRFVAorICAgICAgICAgICAgY2FzZSAndSc6IHJldHVybiAnXHUwNUQ1JzsgLy8gSEVCUkVXIExFVFRFUiBWQVYKKyAgICAgICAgICAgIGNhc2UgJ1UnOiByZXR1cm4gJ1x1MDVCQic7IC8vIEhFQlJFVyBQT0lOVCBRVUJVVFMKKyAgICAgICAgICAgIGNhc2UgJ3YnOiByZXR1cm4gJ1x1MDVENSc7IC8vIEhFQlJFVyBMRVRURVIgVkFWCisgICAgICAgICAgICBjYXNlICdWJzogcmV0dXJuICdcdTA1QjcnOyAvLyBIRUJSRVcgUE9JTlQgUEFUQUgKKyAgICAgICAgICAgIGNhc2UgJ3cnOiByZXR1cm4gJ1x1MDVENSc7IC8vIEhFQlJFVyBMRVRURVIgVkFWCisgICAgICAgICAgICBjYXNlICdXJzogcmV0dXJuICdcdTA1QjgnOyAvLyBIRUJSRVcgUE9JTlQgUUFNQVRTCisgICAgICAgICAgICBjYXNlICd4JzogcmV0dXJuICdcdTA1RTYnOyAvLyBIRUJSRVcgTEVUVEVSIFRTQURJCisgICAgICAgICAgICBjYXNlICdYJzogcmV0dXJuICdcdTA1RTUnOyAvLyBIRUJSRVcgTEVUVEVSIEZJTkFMIFRTQURJCisgICAgICAgICAgICBjYXNlICd5JzogcmV0dXJuICdcdTA1RDknOyAvLyBIRUJSRVcgTEVUVEVSIFlPRAorICAgICAgICAgICAgY2FzZSAnWSc6IHJldHVybiAnXHUwNUQ5JzsgLy8gSEVCUkVXIExFVFRFUiBZT0QKKyAgICAgICAgICAgIGNhc2UgJ3onOiByZXR1cm4gJ1x1MDVENic7IC8vIEhFQlJFVyBMRVRURVIgWkFZSU4KKyAgICAgICAgICAgIGNhc2UgJ1onOiByZXR1cm4gJ1x1MDVDMic7IC8vIEhFQlJFVyBQT0lOVCBTSU4gRE9UCisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gYzsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvSXNyYWVsTmlrdWRLZXlib2FyZC5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL0lzcmFlbE5pa3VkS2V5Ym9hcmQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43ZTBiMWE1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL0lzcmFlbE5pa3VkS2V5Ym9hcmQuamF2YQpAQCAtMCwwICsxLDg0IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBJc3JhZWxOaWt1ZEtleWJvYXJkLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NTE6MjMgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KKy8qCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OCwgQWxsIFJpZ2h0cyBSZXNlcnZlZAorICovCisKK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWw7CisKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5LZXlFdmVudDsKKworLyoqCisgKiBUaGlzIGNsYXNzIHNpbXVsYXRlcyBhIE5pa3VkIGtleWJvYXJkIG9uIGEgVVMtRW5nbGlzaAorICoga2V5Ym9hcmQuICBJdCBpcyB2ZXJ5IG11Y2ggYSB3b3JrIGluIHByb2dyZXNzLgorICovCisKK2ZpbmFsIGNsYXNzIElzcmFlbE5pa3VkS2V5Ym9hcmQgZXh0ZW5kcyBLZXlSZW1hcCB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHB1YmxpYyBjaGFyIHJlbWFwKGNoYXIgYykgeworCisgICAgICAgIHN3aXRjaChjKSB7CisgICAgICAgICAgICBjYXNlICd0JzogcmV0dXJuICdcdTA1RDAnOyAvLyBhbGVmCisgICAgICAgICAgICBjYXNlICdjJzogcmV0dXJuICdcdTA1RDEnOyAvLyBiZXQKKyAgICAgICAgICAgIGNhc2UgJ2QnOiByZXR1cm4gJ1x1MDVEMic7IC8vIGdpbWVsCisgICAgICAgICAgICBjYXNlICdzJzogcmV0dXJuICdcdTA1RDMnOyAvLyBkYWxldAorICAgICAgICAgICAgY2FzZSAndic6IHJldHVybiAnXHUwNUQ0JzsgLy8gaGUKKyAgICAgICAgICAgIGNhc2UgJ3UnOiByZXR1cm4gJ1x1MDVENSc7IC8vIHZhdgorICAgICAgICAgICAgY2FzZSAneic6IHJldHVybiAnXHUwNUQ2JzsgLy8gemF5aW4KKyAgICAgICAgICAgIGNhc2UgJ2onOiByZXR1cm4gJ1x1MDVENyc7IC8vIGhldAorICAgICAgICAgICAgY2FzZSAneSc6IHJldHVybiAnXHUwNUQ4JzsgLy8gdGV0CisgICAgICAgICAgICBjYXNlICdoJzogcmV0dXJuICdcdTA1RDknOyAvLyB5b2QKKyAgICAgICAgICAgIGNhc2UgJ2wnOiByZXR1cm4gJ1x1MDVEQSc7IC8vIGZpbmFsIGthZgorICAgICAgICAgICAgY2FzZSAnZic6IHJldHVybiAnXHUwNURCJzsgLy8ga2FmCisgICAgICAgICAgICBjYXNlICdrJzogcmV0dXJuICdcdTA1REMnOyAvLyBsYW1lZAorICAgICAgICAgICAgY2FzZSAnbyc6IHJldHVybiAnXHUwNUREJzsgLy8gZmluYWwgbWVtCisgICAgICAgICAgICBjYXNlICduJzogcmV0dXJuICdcdTA1REUnOyAvLyBtZW0KKyAgICAgICAgICAgIGNhc2UgJ2knOiByZXR1cm4gJ1x1MDVERic7IC8vIGZpbmFsIG51bgorICAgICAgICAgICAgY2FzZSAnYic6IHJldHVybiAnXHUwNUUwJzsgLy8gbnVuCisgICAgICAgICAgICBjYXNlICd4JzogcmV0dXJuICdcdTA1RTEnOyAvLyBzYW1lY2gKKyAgICAgICAgICAgIGNhc2UgJ2cnOiByZXR1cm4gJ1x1MDVFMic7IC8vIGF5aW4KKyAgICAgICAgICAgIGNhc2UgJzsnOiByZXR1cm4gJ1x1MDVFMyc7IC8vIGZpbmFsIHBlCisgICAgICAgICAgICBjYXNlICdwJzogcmV0dXJuICdcdTA1RTQnOyAvLyBwZQorICAgICAgICAgICAgY2FzZSAnLic6IHJldHVybiAnXHUwNUU1JzsgLy8gZmluYWwgdHNhZGkKKyAgICAgICAgICAgIGNhc2UgJ20nOiByZXR1cm4gJ1x1MDVFNic7IC8vIHRzYWRpCisgICAgICAgICAgICBjYXNlICdlJzogcmV0dXJuICdcdTA1RTcnOyAvLyBxb2YKKyAgICAgICAgICAgIGNhc2UgJ3InOiByZXR1cm4gJ1x1MDVFOCc7IC8vIHJlc2gKKyAgICAgICAgICAgIGNhc2UgJ2EnOiByZXR1cm4gJ1x1MDVFOSc7IC8vIHNoaW4KKyAgICAgICAgICAgIGNhc2UgJywnOiByZXR1cm4gJ1x1MDVFQSc7IC8vIHRhdgorICAgICAgICAgICAgY2FzZSAndyc6IHJldHVybiAnLCc7CisgICAgICAgICAgICBjYXNlICdxJzogcmV0dXJuICcvJzsKKyAgICAgICAgICAgIGNhc2UgJy8nOiByZXR1cm4gJy4nOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGM7CisgICAgfQorCisgICAgcHVibGljIGNoYXIgcmVtYXAoS2V5RXZlbnQga2V5RXZlbnQpIHsKKworICAgICAgICAvLyAgTm90ZTogIG9ubHkgb25lIGN0cmwgY2FzZSBub3cgKGN0cmwtLyAtPiBkYWdlc2gpLgorICAgICAgICAvLyAgQmV0dGVyIGltcGxlbWVudGF0aW9uIHdpbGwgYmUgbmVlZGVkIGZvciBtb3JlIGNhc2VzLgorCisgICAgICAgIGlmIChrZXlFdmVudC5pc0NvbnRyb2xEb3duKCkpIHsKKyAgICAgICAgICAgIGlmIChrZXlFdmVudC5nZXRLZXlDb2RlKCkgPT0gS2V5RXZlbnQuVktfU0xBU0gpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJ1x1MDVCQyc7IC8vIGRhZ2VzaAorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJlbWFwKGtleUV2ZW50LmdldEtleUNoYXIoKSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9KVGV4dFBhbmVsLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvSlRleHRQYW5lbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmE3NzgzN2YKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvSlRleHRQYW5lbC5qYXZhCkBAIC0wLDAgKzEsNTgyIEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBKVGV4dFBhbmVsLmphdmEsdiAkICRSZXZpc2lvbjogMS40ICQgJERhdGU6IDIwMDIvMDIvMTYgMDM6MDY6NDcgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWw7CisKK2ltcG9ydCBqYXZhLmF3dC5Cb3JkZXJMYXlvdXQ7CitpbXBvcnQgamF2YS5hd3QuQ29sb3I7CitpbXBvcnQgamF2YS5hd3QuR3JhcGhpY3M7CitpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbjsKKworaW1wb3J0IGphdmF4LnN3aW5nLkpQYW5lbDsKK2ltcG9ydCBqYXZheC5zd2luZy5KQ29tcG9uZW50OworaW1wb3J0IGphdmF4LnN3aW5nLkpTY3JvbGxCYXI7CitpbXBvcnQgamF2YXguc3dpbmcuU3dpbmdVdGlsaXRpZXM7CisKK2ltcG9ydCBqYXZhLmF3dC5kYXRhdHJhbnNmZXIuQ2xpcGJvYXJkOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlTWFwOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0LlN0eWxlTW9kaWZpZXI7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1Db25zdFRleHQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0LlN0eWxlZFRleHQ7CisKKy8qKgorICogSlRleHRQYW5lbCBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBNVGV4dFBhbmVsIGluIGEgU3dpbmcgSlBhbmVsLgorICogQHNlZSBNVGV4dFBhbmVsCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBKVGV4dFBhbmVsIGV4dGVuZHMgSlBhbmVsIGltcGxlbWVudHMgTVRleHRQYW5lbCB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHByaXZhdGUgQVRleHRQYW5lbEltcGwgZkltcGw7CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgVGV4dFBhbmVsU2V0dGluZ3MgaW5zdGFuY2Ugd2l0aCBhbGwgc2V0dGluZ3Mgc2V0CisgICAgICogdG8gdGhlIGRlZmF1bHQgdmFsdWVzLiAgQ2xpZW50cyBjYW4gbW9kaWZ5IHRoaXMgb2JqZWN0OworICAgICAqIG1vZGlmaWNhdGlvbnMgd2lsbCBub3QgYWZmZWN0IHRoZSBkZWZhdWx0IHZhbHVlcy4KKyAgICAgKiBAcmV0dXJuIGEgVGV4dFBhbmVsU2V0dGluZ3MgaW5zdGFuY2Ugc2V0IHRvIGRlZmF1bHQgdmFsdWVzCisgICAgICogQHNlZSBUZXh0UGFuZWxTZXR0aW5ncworICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgVGV4dFBhbmVsU2V0dGluZ3MgZ2V0RGVmYXVsdFNldHRpbmdzKCkgeworCisgICAgICAgIHJldHVybiBBVGV4dFBhbmVsSW1wbC5nZXREZWZhdWx0U2V0dGluZ3MoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSBuZXcgSlRleHRQYW5lbCB3aXRoIHRoZSBkZWZhdWx0IHNldHRpbmdzLgorICAgICAqIEBwYXJhbSBpbml0aWFsVGV4dCB0aGUgdGV4dCBkb2N1bWVudC4gIElmIG51bGwgZG9jdW1lbnQgdGV4dCBpcyBlbXB0eS4KKyAgICAgKiBAcGFyYW0gY2xpcGJvYXJkIHRoZSBjbGlwYm9hcmQgdG8gdXNlIGZvciBjdXQsIGNvcHksIGFuZCBwYXN0ZQorICAgICAqICBvcGVyYXRpb25zLiAgSWYgbnVsbCB0aGlzIHBhbmVsIHdpbGwgdXNlIGEgcHJpdmF0ZSBjbGlwYm9hcmQuCisgICAgICovCisgICAgcHVibGljIEpUZXh0UGFuZWwoTUNvbnN0VGV4dCBpbml0aWFsVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICBqYXZhLmF3dC5kYXRhdHJhbnNmZXIuQ2xpcGJvYXJkIGNsaXBib2FyZCkgeworCisgICAgICAgIHRoaXMoQVRleHRQYW5lbEltcGwuZmdEZWZhdWx0U2V0dGluZ3MsIGluaXRpYWxUZXh0LCBjbGlwYm9hcmQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZSBhIG5ldyBKVGV4dFBhbmVsLgorICAgICAqIEBwYXJhbSBzZXR0aW5ncyB0aGUgc2V0dGluZ3MgZm9yIHRoaXMgSlRleHRQYW5lbAorICAgICAqIEBwYXJhbSBpbml0aWFsVGV4dCB0aGUgdGV4dCBkb2N1bWVudC4gIElmIG51bGwgZG9jdW1lbnQgdGV4dCBpcyBlbXB0eS4KKyAgICAgKiBAcGFyYW0gY2xpcGJvYXJkIHRoZSBjbGlwYm9hcmQgdG8gdXNlIGZvciBjdXQsIGNvcHksIGFuZCBwYXN0ZQorICAgICAqICBvcGVyYXRpb25zLiAgSWYgbnVsbCB0aGlzIHBhbmVsIHdpbGwgdXNlIGEgcHJpdmF0ZSBjbGlwYm9hcmQuCisgICAgICogQHNlZSBUZXh0UGFuZWxTZXR0aW5ncworICAgICAqLworICAgIHB1YmxpYyBKVGV4dFBhbmVsKFRleHRQYW5lbFNldHRpbmdzIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgIE1Db25zdFRleHQgaW5pdGlhbFRleHQsCisgICAgICAgICAgICAgICAgICAgICAgQ2xpcGJvYXJkIGNsaXBib2FyZCkgeworICAgICAgICAKKyAgICAgICAgc3VwZXIoZmFsc2UpOworICAgICAgICAKKyAgICAgICAgSlNjcm9sbEJhciBob3J6U2IgPSBudWxsOworICAgICAgICBKU2Nyb2xsQmFyIHZlcnRTYiA9IG51bGw7CisgICAgICAgIAorICAgICAgICBpZiAoc2V0dGluZ3MuZ2V0U2Nyb2xsYWJsZSgpKSB7CisKKyAgICAgICAgICAgIHNldExheW91dChuZXcgU2Nyb2xsQmFyTGF5b3V0KCkpOworCisgICAgICAgICAgICBib29sZWFuIHNjcm9sbEJhcnNWaXNpYmxlID0gc2V0dGluZ3MuZ2V0U2Nyb2xsQmFyc1Zpc2libGUoKTsKKworICAgICAgICAgICAgaWYgKHNjcm9sbEJhcnNWaXNpYmxlKSB7CisgICAgICAgICAgICAgICAgaG9yelNiID0gbmV3IEpTY3JvbGxCYXIoSlNjcm9sbEJhci5IT1JJWk9OVEFMKTsKKyAgICAgICAgICAgICAgICB2ZXJ0U2IgPSBuZXcgSlNjcm9sbEJhcihKU2Nyb2xsQmFyLlZFUlRJQ0FMKTsKKyAgICAgICAgICAgICAgICBhZGQoIlNvdXRoIiwgaG9yelNiKTsKKyAgICAgICAgICAgICAgICBhZGQoIkVhc3QiLCB2ZXJ0U2IpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc2V0TGF5b3V0KG5ldyBCb3JkZXJMYXlvdXQoKSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFJ1blN0cmF0ZWd5IHJ1blN0cmF0ZWd5ID0gbmV3IFJ1blN0cmF0ZWd5KCkgeworICAgICAgICAgICAgdm9pZCBkb0l0KFJ1bm5hYmxlIHIpIHsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBTd2luZ1V0aWxpdGllcy5pbnZva2VBbmRXYWl0KHIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXRjaChJbnRlcnJ1cHRlZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIElmIG9wZXJhdGlvbiB3YXMgaW50ZXJydXB0ZWQsIHRoZW4gY2xpZW50CisgICAgICAgICAgICAgICAgICAgIC8vIGNhbGxlZCB3YWl0IG9yIHNsZWVwIChvciBzb21ldGhpbmcgc2ltaWxhcikKKyAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggaXMgaW5hcHByb3ByaWF0ZSBmb3IgYSBjbGllbnQgb2YgdGhpcworICAgICAgICAgICAgICAgICAgICAvLyBjbGFzcy4gIFJldGhyb3cgZXJyb3IgYW5kIGxldCBjbGllbnQgaGFuZGxlIGl0LgorICAgICAgICAgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkludGVycnVwdGVkIGluIFJ1blN0cmF0ZWd5OiAiICsgZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhdGNoKEludm9jYXRpb25UYXJnZXRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICAvLyBXaG8ga25vd3MgaG93IHRoaXMgb25lIGhhcHBlbnMuLi4KKyAgICAgICAgICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJJbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uIGluIFJ1blN0cmF0ZWd5OiAiICsgZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9OworICAgICAgICAKKyAgICAgICAgZkltcGwgPSBuZXcgQVRleHRQYW5lbEltcGwocnVuU3RyYXRlZ3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpcGJvYXJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3J6U2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRTYik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBmaW5hbCBGYWtlQ29tcG9uZW50IHRleHRDb21wb25lbnQgPSBmSW1wbC5nZXRUZXh0Q29tcG9uZW50KCk7CisgICAgICAgIAorICAgICAgICBKQ29tcG9uZW50IHRleHRIb3N0ID0gbmV3IEpDb21wb25lbnQoKSB7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGV4dENvbXBvbmVudC5zZXRIb3N0KHRoaXMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHVibGljIHZvaWQgYWRkTm90aWZ5KCkgeworICAgICAgICAgICAgICAgIHN1cGVyLmFkZE5vdGlmeSgpOworICAgICAgICAgICAgICAgIHRleHRDb21wb25lbnQuYWRkTm90aWZ5KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBwYWludChHcmFwaGljcyBnKSB7CisgICAgICAgICAgICAgICAgdGV4dENvbXBvbmVudC5wYWludChnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgCisgICAgICAgIGFkZCgiQ2VudGVyIiwgdGV4dEhvc3QpOworCisgICAgICAgIHRleHRIb3N0LnJlcXVlc3RGb2N1cygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEFkZCB0aGUgZ2l2ZW4gVGV4dFBhbmVsTGlzdGVuZXIgdG8gdGhlIGxpc3RlbmVycyB3aGljaCB3aWxsCisgICAgICogcmVjZWl2ZSB1cGRhdGUgbm90aWZpY2F0aW9ucyBmcm9tIHRoaXMgSlRleHRQYW5lbC4KKyAgICAgKiBAcGFyYW0gbGlzdGVuZXIgdGhlIGxpc3RlbmVyIHRvIGFkZAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGFkZExpc3RlbmVyKFRleHRQYW5lbExpc3RlbmVyIGxpc3RlbmVyKSB7CisKKyAgICAgICAgZkltcGwuYWRkTGlzdGVuZXIobGlzdGVuZXIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlbW92ZSB0aGUgZ2l2ZW4gVGV4dFBhbmVsTGlzdGVuZXIgZnJvbSB0aGUgbGlzdGVuZXJzIHdoaWNoIHdpbGwKKyAgICAgKiByZWNlaXZlIHVwZGF0ZSBub3RpZmljYXRpb25zIGZyb20gdGhpcyBKVGV4dFBhbmVsLgorICAgICAqIEBwYXJhbSBsaXN0ZW5lciB0aGUgbGlzdGVuZXIgdG8gcmVtb3ZlCisgICAgICovCisgICAgcHVibGljIHZvaWQgcmVtb3ZlTGlzdGVuZXIoVGV4dFBhbmVsTGlzdGVuZXIgbGlzdGVuZXIpIHsKKworICAgICAgICBmSW1wbC5yZW1vdmVMaXN0ZW5lcihsaXN0ZW5lcik7CisgICAgfQorCisvLz09PT09PT09PT09PQorLy8gVGV4dCBBY2Nlc3MKKy8vPT09PT09PT09PT09CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIGRvY3VtZW50IHRvIDx0dD5uZXdUZXh0PC90dD4uICBUaGlzIG9wZXJhdGlvbgorICAgICAqIG1vZGlmaWVzIHRoZSB0ZXh0IGluIHRoZSBKVGV4dFBhbmVsLiAgSXQgZG9lcyBub3QgbW9kaWZ5IG9yIGFkb3B0CisgICAgICogPHR0Pm5ld1RleHQ8L3R0Pi4gIFRoaXMgbWV0aG9kIHNldHMgdGhlIHNlbGVjdGlvbiBhbiBpbnNlcnRpb24gcG9pbnQgYXQKKyAgICAgKiB0aGUgZW5kIG9mIHRoZSB0ZXh0LgorICAgICAqIEBwYXJhbSBuZXdUZXh0IHRoZSB0ZXh0IHdoaWNoIHdpbGwgcmVwbGFjZSB0aGUgY3VycmVudCB0ZXh0LgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFRleHQoTUNvbnN0VGV4dCBuZXdUZXh0KSB7CisKKyAgICAgICAgZkltcGwuc2V0VGV4dChuZXdUZXh0KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBcHBlbmQgdGhlIGdpdmVuIHRleHQgdG8gdGhlIGVuZCBvZiB0aGUgZG9jdW1lbnQuICBFcXVpdmFsZW50IHRvCisgICAgICogPHR0Pmluc2VydChuZXdUZXh0LCBnZXRUZXh0TGVuZ3RoKCkpPC90dD4uCisgICAgICogQHBhcmFtIG5ld1RleHQgdGhlIHRleHQgdG8gYXBwZW5kIHRvIHRoZSBkb2N1bWVudAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGFwcGVuZChNQ29uc3RUZXh0IG5ld1RleHQpIHsKKworICAgICAgICBmSW1wbC5hcHBlbmQobmV3VGV4dCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogSW5zZXJ0IHRoZSBnaXZlbiB0ZXh0IGludG8gdGhlIGRvY3VtZW50IGF0IHRoZSBnaXZlbiBwb3NpdGlvbi4KKyAgICAgKiBFcXVpdmFsZW50IHRvCisgICAgICogPHR0PnJlcGxhY2VSYW5nZShuZXdUZXh0LCBwb3NpdGlvbiwgcG9zaXRpb24pPC90dD4uCisgICAgICogQHBhcmFtIG5ld1RleHQgdGhlIHRleHQgdG8gaW5zZXJ0IGludG8gdGhlIGRvY3VtZW50LgorICAgICAqIEBwYXJhbSBwb3NpdGlvbiB0aGUgcG9zaXRpb24gaW4gdGhlIGRvY3VtZW50IHdoZXJlIHRoZQorICAgICAqICAgICB0ZXh0IHdpbGwgYmUgaW5zZXJ0ZWQKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBpbnNlcnQoTUNvbnN0VGV4dCBuZXdUZXh0LCBpbnQgcG9zaXRpb24pIHsKKworICAgICAgICBmSW1wbC5pbnNlcnQobmV3VGV4dCwgcG9zaXRpb24pOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlcGxhY2UgdGhlIGdpdmVuIHJhbmdlIHdpdGggPHR0Pm5ld1RleHQ8L3R0Pi4gIEFmdGVyIHRoaXMKKyAgICAgKiBvcGVyYXRpb24gdGhlIHNlbGVjdGlvbiByYW5nZSBpcyBhbiBpbnNlcnRpb24gcG9pbnQgYXQgdGhlCisgICAgICogZW5kIG9mIHRoZSBuZXcgdGV4dC4KKyAgICAgKiBAcGFyYW0gbmV3VGV4dCB0aGUgdGV4dCB3aXRoIHdoaWNoIHRvIHJlcGxhY2UgdGhlIHJhbmdlCisgICAgICogQHBhcmFtIHN0YXJ0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHJhbmdlIHRvIHJlcGxhY2UKKyAgICAgKiBAcGFyYW0gZW5kIHRoZSBlbmQgb2YgdGhlIHJhbmdlIHRvIHJlcGxhY2UKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCByZXBsYWNlUmFuZ2UoTUNvbnN0VGV4dCBuZXdUZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpIHsKKworICAgICAgICBmSW1wbC5yZXBsYWNlUmFuZ2UobmV3VGV4dCwgc3RhcnQsIGVuZCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIHRleHQgZG9jdW1lbnQgaW4gdGhlIEpUZXh0UGFuZWwuCisgICAgICogQHJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSB0ZXh0IGRvY3VtZW50IGluIHRoZSBKVGV4dFBhbmVsCisgICAgICovCisgICAgcHVibGljIGludCBnZXRUZXh0TGVuZ3RoKCkgeworCisgICAgICAgIHJldHVybiBmSW1wbC5nZXRUZXh0TGVuZ3RoKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSB0ZXh0IGRvY3VtZW50IGluIHRoZSBKVGV4dFBhbmVsLgorICAgICAqIEByZXR1cm4gdGhlIHRleHQgZG9jdW1lbnQgaW4gdGhlIEpUZXh0UGFuZWwuCisgICAgICovCisgICAgcHVibGljIE1Db25zdFRleHQgZ2V0VGV4dCgpIHsKKworICAgICAgICByZXR1cm4gZkltcGwuZ2V0VGV4dCgpOworICAgIH0KKworLy89PT09PT09PT09PT0KKy8vIFNlbGVjdGlvbiBBY2Nlc3MKKy8vPT09PT09PT09PT09CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIG9mZnNldCBvZiB0aGUgc3RhcnQgb2YgdGhlIHNlbGVjdGlvbi4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldFNlbGVjdGlvblN0YXJ0KCkgeworCisgICAgICAgIHJldHVybiBmSW1wbC5nZXRTZWxlY3Rpb25TdGFydCgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgb2Zmc2V0IG9mIHRoZSBlbmQgb2YgdGhlIHNlbGVjdGlvbi4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldFNlbGVjdGlvbkVuZCgpIHsKKworICAgICAgICByZXR1cm4gZkltcGwuZ2V0U2VsZWN0aW9uRW5kKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlbGVjdGlvbiByYW5nZS4gIFRoaXMgaXMKKyAgICAgKiBlcXVpdmFsZW50IHRvIDx0dD5zZWxlY3Qoc2VsZWN0aW9uU3RhcnQsIGdldFNlbGVjdGlvbkVuZCgpKTwvdHQ+LgorICAgICAqIEBwYXJhbSBzZWxlY3Rpb25TdGFydCB0aGUgc3RhcnQgb2YgdGhlIG5ldyBzZWxlY3Rpb24gcmFuZ2UKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRTZWxlY3Rpb25TdGFydChpbnQgc2VsZWN0aW9uU3RhcnQpIHsKKworICAgICAgICBmSW1wbC5zZXRTZWxlY3Rpb25TdGFydChzZWxlY3Rpb25TdGFydCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0IHRoZSBlbmQgb2YgdGhlIHNlbGVjdGlvbiByYW5nZS4gIFRoaXMgaXMKKyAgICAgKiBlcXVpdmFsZW50IHRvIDx0dD5zZWxlY3QoZ2V0U2VsZWN0aW9uU3RhcnQoKSwgc2VsZWN0aW9uRW5kKTwvdHQ+LgorICAgICAqIEBwYXJhbSBzZWxlY3Rpb25TdGFydCB0aGUgc3RhcnQgb2YgdGhlIG5ldyBzZWxlY3Rpb24gcmFuZ2UKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRTZWxlY3Rpb25FbmQoaW50IHNlbGVjdGlvbkVuZCkgeworCisgICAgICAgIGZJbXBsLnNldFNlbGVjdGlvbkVuZChzZWxlY3Rpb25FbmQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCB0aGUgc2VsZWN0aW9uIHJhbmdlIHRvIGFuIGluc2VydGlvbiBwb2ludCBhdCB0aGUgZ2l2ZW4KKyAgICAgKiBvZmZzZXQuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8KKyAgICAgKiA8dHQ+c2VsZWN0KHBvc2l0aW9uLCBwb3NpdGlvbik8L3R0Pi4KKyAgICAgKiBAcGFyYW0gcG9zaXRpb24gdGhlIG9mZnNldCBvZiB0aGUgbmV3IGluc2VydGlvbiBwb2ludAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldENhcmV0UG9zaXRpb24oaW50IHBvc2l0aW9uKSB7CisKKyAgICAgICAgZkltcGwuc2V0Q2FyZXRQb3NpdGlvbihwb3NpdGlvbik7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0IHRoZSBzZWxlY3Rpb24gcmFuZ2UgdG8gdGhlIGdpdmVuIHJhbmdlLiAgVGhlIHJhbmdlIHN0YXJ0CisgICAgICogaXMgcGlubmVkIGJldHdlZW4gMCBhbmQgdGhlIHRleHQgbGVuZ3RoOyAgdGhlIHJhbmdlIGVuZCBpcyBwaW5uZWQKKyAgICAgKiBiZXR3ZWVuIHRoZSByYW5nZSBzdGFydCBhbmQgdGhlIGVuZCBvZiB0aGUgdGV4dC4gIFRoZXNlIHNlbWFudGljcworICAgICAqIGFyZSBpZGVudGljYWwgdG8gdGhvc2Ugb2YgPHR0PmphdmEuYXd0LlRleHRDb21wb25lbnQ8L3R0Pi4KKyAgICAgKiBUaGlzIG1ldGhvZCBoYXMgbm8gZWZmZWN0IGlmIHRoZSB0ZXh0IGlzIG5vdCBzZWxlY3RhYmxlLgorICAgICAqIEBwYXJhbSBzZWxlY3Rpb25TdGFydCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzZWxlY3Rpb24gcmFuZ2UKKyAgICAgKiBAcGFyYW0gc2VsZWN0aW9uRW5kIHRoZSBlbmQgb2YgdGhlIHNlbGVjdGlvbiByYW5nZQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNlbGVjdChpbnQgc2VsZWN0aW9uU3RhcnQsIGludCBzZWxlY3Rpb25FbmQpIHsKKworICAgICAgICBmSW1wbC5zZWxlY3Qoc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2VsZWN0IGFsbCBvZiB0aGUgdGV4dCBpbiB0aGUgZG9jdW1lbnQuICBUaGlzIG1ldGhvZCBoYXMgbm8gZWZmZWN0IGlmCisgICAgICogdGhlIHRleHQgaXMgbm90IHNlbGVjdGFibGUuCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2VsZWN0QWxsKCkgeworCisgICAgICAgIGZJbXBsLnNlbGVjdEFsbCgpOworICAgIH0KKworCisvLz09PT09PT09PT09PQorLy8gRm9ybWF0IFdpZHRoCisvLz09PT09PT09PT09PQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSB0b3RhbCBmb3JtYXQgd2lkdGgsIGluIHBpeGVscy4gIFRoZSBmb3JtYXQgd2lkdGggaXMgdGhlCisgICAgICogd2lkdGggdG8gd2hpY2ggdGV4dCBpcyB3cmFwcGVkLgorICAgICAqIEByZXR1cm4gdGhlIGZvcm1hdCB3aWR0aAorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0Rm9ybWF0V2lkdGgoKSB7CisKKyAgICAgICAgcmV0dXJuIGZJbXBsLmdldEZvcm1hdFdpZHRoKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgdGhlIHBhcmFncmFwaCBhdCB0aGUgZ2l2ZW4gb2Zmc2V0IGlzIGxlZnQtdG8tcmlnaHQuCisgICAgICogQHBhcmFtIG9mZnNldCBhbiBvZmZzZXQgaW4gdGhlIHRleHQKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIHBhcmFncmFwaCBhdCB0aGUgZ2l2ZW4gb2Zmc2V0IGlzIGxlZnQtdG8tcmlnaHQKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBwYXJhZ3JhcGhJc0xlZnRUb1JpZ2h0KGludCBvZmZzZXQpIHsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBmSW1wbC5wYXJhZ3JhcGhJc0xlZnRUb1JpZ2h0KG9mZnNldCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgdGhlcmUgaXMgYSBjaGFuZ2Ugd2hpY2ggY2FuIGJlIHVuZG9uZS4KKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlcmUgaXMgYSBjaGFuZ2Ugd2hpY2ggY2FuIGJlIHVuZG9uZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBjYW5VbmRvKCkgeworCisgICAgICAgIHJldHVybiBmSW1wbC5jYW5VbmRvKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgdGhlcmUgaXMgYSBjaGFuZ2Ugd2hpY2ggY2FuIGJlIHJlZG9uZS4KKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlcmUgaXMgYSBjaGFuZ2Ugd2hpY2ggY2FuIGJlIHJlZG9uZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBjYW5SZWRvKCkgeworCisgICAgICAgIHJldHVybiBmSW1wbC5jYW5SZWRvKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgdGhlIGNsaXBib2FyZCBjb250YWlucyBjb250ZW50cyB3aGljaCBjb3VsZCBiZQorICAgICAqIHRyYW5zZmVyZWQgaW50byB0aGUgdGV4dC4KKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGNsaXBib2FyZCBoYXMgdGV4dCBjb250ZW50LgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGNsaXBib2FyZE5vdEVtcHR5KCkgeworCisgICAgICAgIHJldHVybiBmSW1wbC5jbGlwYm9hcmROb3RFbXB0eSgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhbiBBdHRyaWJ1dGVNYXAgb2Yga2V5cyB3aXRoIGRlZmF1bHQgdmFsdWVzLiAgVGhlIGRlZmF1bHQKKyAgICAgKiB2YWx1ZXMgYXJlIHVzZWQgd2hlbiBkaXNwbGF5aW5nIHRleHQgZm9yIHZhbHVlcyB3aGljaCBhcmUgbm90CisgICAgICogc3BlY2lmaWVkIGluIHRoZSB0ZXh0LgorICAgICAqIEByZXR1cm4gYW4gQXR0cmlidXRlTWFwIG9mIGRlZmF1bHQga2V5LXZhbHVlIHBhaXJzCisgICAgICovCisgICAgcHVibGljIEF0dHJpYnV0ZU1hcCBnZXREZWZhdWx0VmFsdWVzKCkgeworCisgICAgICAgIHJldHVybiBmSW1wbC5nZXREZWZhdWx0VmFsdWVzKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhpcyBtZXRob2QgaW5zcGVjdHMgdGhlIGNoYXJhY3RlciBzdHlsZSBydW5zIGluIHRoZSBzZWxlY3Rpb24KKyAgICAgKiByYW5nZSAob3IgdGhlIHR5cGluZyBzdHlsZSBhdCB0aGUgaW5zZXJ0aW9uIHBvaW50KS4gIEl0IHJldHVybnM6CisgICAgICogPHVsPgorICAgICAqIDxsaT5UaGUgdmFsdWUgb2YgPHR0PmtleTwvdHQ+LCBpZiB0aGUgdmFsdWUgb2YgPHR0PmtleTwvdHQ+CisgICAgICogaXMgdGhlIHNhbWUgaW4gYWxsIG9mIHRoZSBzdHlsZSBydW5zIGluIHRoZSBzZWxlY3Rpb24sIG9yPC9saT4KKyAgICAgKiA8bGk+PHR0Pk1VTFRJUExFX1ZBTFVFUzwvdHQ+LCBpZiB0d28gb3IgbW9yZSBzdHlsZSBydW5zIGhhdmUgZGlmZmVyZW50IAorICAgICAqIHZhbHVlcyBmb3IgPHR0PmtleTwvdHQ+LjwvbGk+CisgICAgICogPC91bD4KKyAgICAgKiBJZiBhIHN0eWxlIHJ1biBkb2VzIG5vdCBjb250YWluIDx0dD5rZXk8L3R0PiwKKyAgICAgKiBpdHMgdmFsdWUgaXMgY29uc2lkZXJlZCB0byBiZSB0aGUgZGVmYXVsdCBzdHlsZSBmb3IgPHR0PmtleTwvdHQ+LAorICAgICAqIGFzIGRlZmluZWQgYnkgdGhlIGRlZmF1bHQgdmFsdWVzIEF0dHJpYnV0ZU1hcC4gIE5vdGUgdGhhdCBpZgorICAgICAqIDx0dD5rZXk8L3R0PiBkb2VzIG5vdCBoYXZlIGEgZGVmYXVsdCB2YWx1ZSB0aGlzIG1ldGhvZCBtYXkgcmV0dXJuCisgICAgICogbnVsbC4KKyAgICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VmdWwgZm9yIGNvbmZpZ3VyaW5nIHN0eWxlIG1lbnVzLgorICAgICAqIEBwYXJhbSBrZXkgdGhlIGtleSB1c2VkIHRvIHJldHJpZXZlIHZhbHVlcyBmb3IgY29tcGFyaXNvbgorICAgICAqIEBzZWUgTVRleHRQYW5lbCNNVUxUSVBMRV9WQUxVRVMKKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0IGdldENoYXJhY3RlclN0eWxlT3ZlclNlbGVjdGlvbihPYmplY3Qga2V5KSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gZkltcGwuZ2V0Q2hhcmFjdGVyU3R5bGVPdmVyU2VsZWN0aW9uKGtleSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhpcyBtZXRob2QgaW5zcGVjdHMgdGhlIHBhcmFncmFwaCBzdHlsZSBydW5zIGluIHRoZSBzZWxlY3Rpb24KKyAgICAgKiByYW5nZSAob3IgdGhlIHR5cGluZyBzdHlsZSBhdCB0aGUgaW5zZXJ0aW9uIHBvaW50KS4gIEl0IHJldHVybnM6CisgICAgICogPHVsPgorICAgICAqIDxsaT5UaGUgdmFsdWUgb2YgPHR0PmtleTwvdHQ+LCBpZiB0aGUgdmFsdWUgb2YgPHR0PmtleTwvdHQ+CisgICAgICogaXMgdGhlIHNhbWUgaW4gYWxsIG9mIHRoZSBzdHlsZSBydW5zIGluIHRoZSBzZWxlY3Rpb24sIG9yPC9saT4KKyAgICAgKiA8bGk+PHR0Pk1VTFRJUExFX1ZBTFVFUzwvdHQ+LCBpZiB0d28gb3IgbW9yZSBzdHlsZSBydW5zIGhhdmUgCisgICAgICogZGlmZmVyZW50IHZhbHVlcyBmb3IgPHR0PmtleTwvdHQ+LjwvbGk+CisgICAgICogPC91bD4KKyAgICAgKiBJZiBhIHN0eWxlIHJ1biBkb2VzIG5vdCBjb250YWluIDx0dD5rZXk8L3R0PiwKKyAgICAgKiBpdHMgdmFsdWUgaXMgY29uc2lkZXJlZCB0byBiZSB0aGUgZGVmYXVsdCBzdHlsZSBmb3IgPHR0PmtleTwvdHQ+LAorICAgICAqIGFzIGRlZmluZWQgYnkgdGhlIGRlZmF1bHQgdmFsdWVzIEF0dHJpYnV0ZU1hcC4gIE5vdGUgdGhhdCBpZgorICAgICAqIDx0dD5rZXk8L3R0PiBkb2VzIG5vdCBoYXZlIGEgZGVmYXVsdCB2YWx1ZSB0aGlzIG1ldGhvZCBtYXkgcmV0dXJuCisgICAgICogbnVsbC4KKyAgICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VmdWwgZm9yIGNvbmZpZ3VyaW5nIHN0eWxlIG1lbnVzLgorICAgICAqIEBwYXJhbSBrZXkgdGhlIGtleSB1c2VkIHRvIHJldHJpZXZlIHZhbHVlcyBmb3IgY29tcGFyaXNvbgorICAgICAqIEBzZWUgTVRleHRQYW5lbCNNVUxUSVBMRV9WQUxVRVMKKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0IGdldFBhcmFncmFwaFN0eWxlT3ZlclNlbGVjdGlvbihPYmplY3Qga2V5KSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gZkltcGwuZ2V0UGFyYWdyYXBoU3R5bGVPdmVyU2VsZWN0aW9uKGtleSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVtb3ZlIHRoZSBzZWxlY3RlZCB0ZXh0IGZyb20gdGhlIGRvY3VtZW50IGFuZCBwbGFjZSBpdAorICAgICAqIG9uIHRoZSBjbGlwYm9hcmQuICBUaGlzIG1ldGhvZCBoYXMgbm8gZWZmZWN0IGlmIHRoZSB0ZXh0CisgICAgICogaXMgbm90IGVkaXRhYmxlLCBvciBpZiBubyB0ZXh0IGlzIHNlbGVjdGVkLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGN1dCgpIHsKKyAgICAgICAgZkltcGwuY3V0KCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUGxhY2UgdGhlIHNlbGVjdGVkIHRleHQgb24gdGhlIGNsaXBib2FyZC4gIFRoaXMgbWV0aG9kIGhhcworICAgICAqIG5vIGVmZmVjdCBpZiBubyB0ZXh0IGlzIHNlbGVjdGVkLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGNvcHkoKSB7CisgICAgICAgIGZJbXBsLmNvcHkoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXBsYWNlIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgdGV4dCB3aXRoIHRoZSB0ZXh0IG9uIHRoZSBjbGlwYm9hcmQuCisgICAgICogVGhpcyBtZXRob2QgaGFzIG5vIGVmZmVjdCBpZiB0aGUgdGV4dCBpcyBub3QgZWRpdGFibGUsIG9yIGlmIG5vCisgICAgICogdGV4dCBpcyBvbiB0aGUgY2xpcGJvYXJkLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHBhc3RlKCkgeworICAgICAgICBmSW1wbC5wYXN0ZSgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlbW92ZSBzZWxlY3RlZCB0ZXh0IGZyb20gdGhlIGRvY3VtZW50LCB3aXRob3V0IGFsdGVyaW5nIHRoZSBjbGlwYm9hcmQuCisgICAgICogVGhpcyBtZXRob2QgaGFzIG5vIGVmZmVjdCBpZiB0aGUKKyAgICAgKiB0ZXh0IGlzIG5vdCBlZGl0YWJsZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBjbGVhcigpIHsKKyAgICAgICAgZkltcGwuY2xlYXIoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBVbmRvIHRoZSBtb3N0IHJlY2VudCB0ZXh0IGNoYW5nZS4gIFRoaXMgbWV0aG9kIGhhcyBubyBlZmZlY3QgaWYKKyAgICAgKiB0aGVyZSBpcyBubyBjaGFuZ2UgdG8gdW5kby4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCB1bmRvKCkgeworICAgICAgICBmSW1wbC51bmRvKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVkbyB0aGUgbW9zdCByZWNlbnQgdGV4dCBjaGFuZ2UuICBUaGlzIG1ldGhvZCBoYXMgbm8gZWZmZWN0IGlmCisgICAgICogdGhlcmUgaXMgbm8gY2hhbmdlIHRvIHJlZG8uCisgICAgICovCisgICAgcHVibGljIHZvaWQgcmVkbygpIHsKKyAgICAgICAgZkltcGwucmVkbygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgbnVtYmVyIG9mIGNvbW1hbmRzIHRoZSBjb21tYW5kIGxvZyBjYW4gaG9sZC4KKyAgICAgKiBAcmV0dXJuIHRoZSBudW1iZXIgb2YgY29tbWFuZHMgdGhlIGNvbW1hbmQgbG9nIGNhbiBob2xkCisgICAgICovCisgICAgcHVibGljIGludCBnZXRDb21tYW5kTG9nU2l6ZSgpIHsKKworICAgICAgICByZXR1cm4gZkltcGwuZ2V0Q29tbWFuZExvZ1NpemUoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIG51bWJlciBvZiBjb21tYW5kcyB0aGUgY29tbWFuZCBsb2cgY2FuIGhvbGQuICBBbGwKKyAgICAgKiByZWRvYWJsZSBjb21tYW5kcyBhcmUgcmVtb3ZlZCB3aGVuIHRoaXMgbWV0aG9kIGlzIGNhbGxlZC4KKyAgICAgKiBAcGFyYW0gc2l6ZSB0aGUgbnVtYmVyIG9mIGNvbW1hbmRzIGtlcHQgaW4gdGhlIGNvbW1hbmQgbG9nCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0Q29tbWFuZExvZ1NpemUoaW50IHNpemUpIHsKKyAgICAgICAgZkltcGwuc2V0Q29tbWFuZExvZ1NpemUoc2l6ZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVtb3ZlIGFsbCBjb21tYW5kcyBmcm9tIHRoZSBjb21tYW5kIGxvZy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBjbGVhckNvbW1hbmRMb2coKSB7CisgICAgICAgIGZJbXBsLmNsZWFyQ29tbWFuZExvZygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIE1vZGlmeSB0aGUgY2hhcmFjdGVyIHN0eWxlcyBvbiB0aGUgc2VsZWN0ZWQgY2hhcmFjdGVycy4gIElmIG5vIGNoYXJhY3RlcnMKKyAgICAgKiBhcmUgc2VsZWN0ZWQsIG1vZGlmeSB0aGUgdHlwaW5nIHN0eWxlLgorICAgICAqIEBwYXJhbSBtb2RpZmllciB0aGUgU3R5bGVNb2RpZmllciB3aXRoIHdoaWNoIHRvIG1vZGlmeSB0aGUgc3R5bGVzCisgICAgICovCisgICAgcHVibGljIHZvaWQgbW9kaWZ5Q2hhcmFjdGVyU3R5bGVPblNlbGVjdGlvbihTdHlsZU1vZGlmaWVyIG1vZGlmaWVyKSB7CisgICAgICAgIGZJbXBsLm1vZGlmeUNoYXJhY3RlclN0eWxlT25TZWxlY3Rpb24obW9kaWZpZXIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIE1vZGlmeSB0aGUgcGFyYWdyYXBoIHN0eWxlcyBpbiBwYXJhZ3JhcGhzIGNvbnRhaW5pbmcgc2VsZWN0ZWQgY2hhcmFjdGVycywgb3IKKyAgICAgKiB0aGUgcGFyYWdyYXBoIGNvbnRhaW5pbmcgdGhlIGluc2VydGlvbiBwb2ludC4KKyAgICAgKiBAcGFyYW0gbW9kaWZpZXIgdGhlIFN0eWxlTW9kaWZpZXIgd2l0aCB3aGljaCB0byBtb2RpZnkgdGhlIHN0eWxlcworICAgICAqLworICAgIHB1YmxpYyB2b2lkIG1vZGlmeVBhcmFncmFwaFN0eWxlT25TZWxlY3Rpb24oU3R5bGVNb2RpZmllciBtb2RpZmllcikgeworICAgICAgICBmSW1wbC5tb2RpZnlQYXJhZ3JhcGhTdHlsZU9uU2VsZWN0aW9uKG1vZGlmaWVyKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIEtleVJlbWFwIHVzZWQgdG8gcHJvY2VzcyBrZXkgZXZlbnRzLgorICAgICAqIEByZXR1cm4gdGhlIGtleSByZW1hcCB1c2VkIHRvIHByb2Nlc3Mga2V5IGV2ZW50cworICAgICAqIEBzZWUgI3NldEtleVJlbWFwCisgICAgICovCisgICAgcHVibGljIEtleVJlbWFwIGdldEtleVJlbWFwKCkgeworCisgICAgICAgIHJldHVybiBmSW1wbC5nZXRLZXlSZW1hcCgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFVzZSB0aGUgZ2l2ZW4gS2V5UmVtYXAgdG8gbWFwIGtleSBldmVudHMgdG8gY2hhcmFjdGVycy4KKyAgICAgKiBPbmx5IGtleQorICAgICAqIGV2ZW50cyBhcmUgYWZmZWN0ZWQgYnkgdGhlIHJlbWFwOyAgb3RoZXIgdGV4dCBlbnRlcmluZyB0aGUKKyAgICAgKiBjb250cm9sICh2aWEgdGhlIGNsaXBib2FyZCwgZm9yIGV4YW1wbGUpIGlzIG5vdCBhZmZlY3RlZAorICAgICAqIGJ5IHRoZSBLZXlSZW1hcC4KKyAgICAgKiA8cD4KKyAgICAgKiBEbyBub3QgcGFzcyA8dHQ+bnVsbDwvdHQ+IHRvIHRoaXMgbWV0aG9kIHRvIGxlYXZlIGtleQorICAgICAqIGV2ZW50cyB1bm1hcHBlZC4gIEluc3RlYWQsIHVzZSA8dHQ+S2V5UmVtYXAuZ2V0SWRlbnRpdHlSZW1hcCgpPC90dD4KKyAgICAgKiBAcGFyYW0gcmVtYXAgdGhlIEtleVJlbWFwIHRvIHVzZSBmb3IgbWFwcGluZyBrZXkgZXZlbnRzIHRvIGNoYXJhY3RlcnMKKyAgICAgKiBAZXhjZXB0aW9uIGphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiBpZiBwYXJhbWV0ZXIgaXMgbnVsbAorICAgICAqIEBzZWUgS2V5UmVtYXAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRLZXlSZW1hcChLZXlSZW1hcCByZW1hcCkgeworCisgICAgICAgIGZJbXBsLnNldEtleVJlbWFwKHJlbWFwKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIG1vZGlmaWNhdGlvbiBmbGFnIG9mIHRoZSBjdXJyZW50IHRleHQgY2hhbmdlLgorICAgICAqIEBzZWUgI3NldE1vZGlmaWVkCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNNb2RpZmllZCgpIHsKKworICAgICAgICByZXR1cm4gZkltcGwuaXNNb2RpZmllZCgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCB0aGUgbW9kaWZpY2F0aW9uIGZsYWcgb2YgdGhlIGN1cnJlbnQgdGV4dCBjaGFuZ2UuCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0TW9kaWZpZWQoYm9vbGVhbiBtb2RpZmllZCkgeworICAgICAgICAKKyAgICAgICAgZkltcGwuc2V0TW9kaWZpZWQobW9kaWZpZWQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRoaXMgbWV0aG9kIGlzIGZvciBLZXlFdmVudEZvcndhcmRlcidzIHVzZSBvbmx5IQorICAgICAqLworICAgIEFUZXh0UGFuZWxJbXBsIGdldEltcGwoKSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gZkltcGw7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0QmFja2dyb3VuZChDb2xvciBjb2xvcikgeworICAgICAgICBzdXBlci5zZXRCYWNrZ3JvdW5kIChjb2xvcik7CisgICAgICAgIGphdmEuYXd0LkNvbXBvbmVudFtdIGNvbXBMaXN0ID0gZ2V0Q29tcG9uZW50cygpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvbXBMaXN0Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBpZiAoIShjb21wTGlzdFtpXSBpbnN0YW5jZW9mIEpTY3JvbGxCYXIpKSB7CisgICAgICAgICAgICAgICAgY29tcExpc3RbaV0uc2V0QmFja2dyb3VuZCAoY29sb3IpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL0tleUV2ZW50Rm9yd2FyZGVyLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvS2V5RXZlbnRGb3J3YXJkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5jNGQxZDYzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL0tleUV2ZW50Rm9yd2FyZGVyLmphdmEKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogS2V5RXZlbnRGb3J3YXJkZXIuamF2YSx2ICQgJFJldmlzaW9uOiAxLjIgJCAkRGF0ZTogMjAwMC8wNC8yMiAxNzoxMDoxMCAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbDsKKworaW1wb3J0IGphdmEuYXd0LmV2ZW50LktleUV2ZW50OworCisvKioKKyAqIFRoaXMgY2xhc3MgZm9yd2FyZHMga2V5IGV2ZW50cyB0byBhIFRleHRQYW5lbCBjb21wb25lbnQgZm9yCisgKiB0ZXN0aW5nIHB1cnBvc2VzLgorICogSXRzIHNvbGUgcmVhc29uIGZvciBleGlzdGVuY2UgaXMgdG8gcHJldmVudCB0aGUga2V5LWV2ZW50CisgKiBBUEkgZnJvbSBiZWluZyBwdWJsaWMgb24gTVRleHRQYW5lbCwgYW5kIGJlaW5nIG1pc3Rha2VuIGZvcgorICogc3RhbmRhcmQgQVBJLiAgVGhpcyBjbGFzcyBpcyBvbmx5IGZvciB0ZXN0aW5nISAgSXQgbWF5IGJlCisgKiByZW1vdmVkIGZyb20gcHVibGljIEFQSSBhdCBhbnkgdGltZS4gIERvIG5vdCBkZXBlbmQgb24gdGhpcworICogY2xhc3MuCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBLZXlFdmVudEZvcndhcmRlciB7CisKKyAgICBwcml2YXRlIEFUZXh0UGFuZWxJbXBsIGZQYW5lbEltcGw7CisKKyAgICBwdWJsaWMgS2V5RXZlbnRGb3J3YXJkZXIoVGV4dFBhbmVsIHRleHRQYW5lbCkgeworCisgICAgICAgIGZQYW5lbEltcGwgPSB0ZXh0UGFuZWwuZ2V0SW1wbCgpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgS2V5RXZlbnRGb3J3YXJkZXIoSlRleHRQYW5lbCB0ZXh0UGFuZWwpIHsKKyAgICAKKyAgICAgICAgZlBhbmVsSW1wbCA9IHRleHRQYW5lbC5nZXRJbXBsKCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgaGFuZGxlS2V5RXZlbnQoS2V5RXZlbnQga2V5RXZlbnQpIHsKKworICAgICAgICBmUGFuZWxJbXBsLmhhbmRsZUtleUV2ZW50KGtleUV2ZW50KTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL0tleVJlbWFwLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvS2V5UmVtYXAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hYjZmZjhhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL0tleVJlbWFwLmphdmEKQEAgLTAsMCArMSwxMTggQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IEtleVJlbWFwLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NTE6MjMgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KKy8qCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OCwgQWxsIFJpZ2h0cyBSZXNlcnZlZAorICovCisKK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWw7CisKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5LZXlFdmVudDsKKworLyoqCisgKiBLZXlSZW1hcCBtYXBzIGtleXMgb24gYSBzdGFuZGFyZCBVUyBrZXlib2FyZCB0byBjaGFyYWN0ZXJzCisgKiBpbiBvdGhlciBhbHBoYWJldHMuICBDdXJyZW50bHksIG1hcHBpbmdzIHRvIEFyYWJpYywgSGVicmV3CisgKiBhbmQgVGhhaSBhcmUgc3VwcG9ydGVkLiAgSW4gdGhlIGZ1dHVyZSwgY2xpZW50cyBtYXkgYmUKKyAqIHRvIGRlZmluZSB0aGVpciBvd24gbWFwcGluZ3MgYnkgc3ViY2xhc3NpbmcgdGhpcyBjbGFzcy4KKyAqIDxQPgorICogQHNlZSBUZXh0UGFuZWwjc2V0S2V5UmVtYXAKKyAqLworCitwdWJsaWMgY2xhc3MgS2V5UmVtYXAgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSBuZXcgS2V5UmVtYXAuCisgICAgICovCisgICAgcHJvdGVjdGVkIEtleVJlbWFwKCkgeworICAgIH0KKworICAgIC8qKgorICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGNoYXJhY3RlciBvbiB0aGUgc2ltdWxhdGVkIGtleWJvYXJkCisgICAgICogd2hpY2ggaXMgKG1vc3QgbGlrZWx5KSBnZW5lcmF0ZWQgYnkgdHlwaW5nIHRoZSBjaGFyYWN0ZXIgYworICAgICAqIG9uIHRoZSBhY3R1YWwga2V5Ym9hcmQuICBGb3IgZ3JlYXRlciBhY2N1cmFjeSwgdXNlIHRoZSByZW1hcAorICAgICAqIG1ldGhvZCB3aGljaCB0YWtlcyBhIEtleUV2ZW50LCBzaW5jZSBpdCBjYW4gdGFrZSBtb2RpZmllcgorICAgICAqIGtleXMgaW50byBhY2NvdW50LgorICAgICAqIEBhcmcgYyBhIGNoYXJhY3RlciBvbiB0aGUgYWN0dWFsIGtleWJvYXJkCisgICAgICogQHJldHVybiB0aGUgY2hhcmFjdGVyIG9uIHRoZSBzaW11bGF0ZWQga2V5Ym9hcmQgd2hpY2ggd291bGQKKyAgICAgKiAgICAgICAgIHJlc3VsdCBmcm9tIHRoZSBrZXkgY29tYmluYXRpb24gd2hpY2ggcHJvZHVjZWQgdGhlCisgICAgICogICAgICAgICBnaXZlbiBjaGFyYWN0ZXIgb24gdGhlIGFjdHVhbCBrZXlib2FyZAorICAgICAqLworICAgIC8qcHVibGljKi8gY2hhciByZW1hcChjaGFyIGMpIHsKKworICAgICAgICByZXR1cm4gYzsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGNoYXJhY3RlciBvbiB0aGUgc2ltdWxhdGVkIGtleWJvYXJkCisgICAgICogd2hpY2gga2V5RXZlbnQgZ2VuZXJhdGVzLgorICAgICAqIEBhcmcga2V5RXZlbnQgYSBrZXkgZXZlbnQgZnJvbSB0aGUgYWN0dWFsIGtleWJvYXJkCisgICAgICogQHJldHVybiB0aGUgY2hhcmFjdGVyIG9uIHRoZSBzaW11bGF0ZWQga2V5Ym9hcmQgZ2VuZXJhdGVkIGJ5CisgICAgICogICAgICAgICBrZXlFdmVudAorICAgICAqLworICAgIC8qcHVibGljKi8gY2hhciByZW1hcChLZXlFdmVudCBrZXlFdmVudCkgeworCisgICAgICAgIHJldHVybiByZW1hcChrZXlFdmVudC5nZXRLZXlDaGFyKCkpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEtleVJlbWFwIElERU5USVRZID0gbmV3IEtleVJlbWFwKCk7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgS2V5UmVtYXAgQVJBQklDX1RSQU5TTElURVJBVElPTiA9IG5ldyBBcmFiaWNUcmFuc2xpdGVyYXRpb24oKTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBLZXlSZW1hcCBIRUJSRVdfVFJBTlNMSVRFUkFUSU9OID0gbmV3IEhlYnJld1RyYW5zbGl0ZXJhdGlvbigpOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEtleVJlbWFwIElTUkFFTF9OSUtVRCA9IG5ldyBJc3JhZWxOaWt1ZEtleWJvYXJkKCk7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgS2V5UmVtYXAgVEhBSSA9IG5ldyBUaGFpS2V5UmVtYXAoKTsKKworICAgIC8qKgorICAgICAqIFJldHVybiBhIEtleVJlbWFwIHdoaWNoIG1hcHMgZXZlcnkgY2hhcmFjdGVyIHRvIGl0c2VsZi4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIEtleVJlbWFwIGdldElkZW50aXR5UmVtYXAoKSB7CisKKyAgICAgICAgcmV0dXJuIElERU5USVRZOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhIEtleVJlbWFwIHdoaWNoIG1hcHMga2V5cyB0bworICAgICAqIGNoYXJhY3RlcnMgaW4gdGhlIEFyYWJpYyBhbHBoYWJldCwgdXNpbmcgYSBzaW1wbGUgdHJhbnNsaXRlcmF0aW9uLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgS2V5UmVtYXAgZ2V0QXJhYmljVHJhbnNsaXRlcmF0aW9uKCkgeworCisgICAgICAgIHJldHVybiBBUkFCSUNfVFJBTlNMSVRFUkFUSU9OOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhIEtleVJlbWFwIHdoaWNoIG1hcHMga2V5cyB0bworICAgICAqIGNoYXJhY3RlcnMgaW4gdGhlIEhlYnJldyBhbHBoYWJldCwgdXNpbmcgYSBzaW1wbGUgdHJhbnNsaXRlcmF0aW9uLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgS2V5UmVtYXAgZ2V0SGVicmV3VHJhbnNsaXRlcmF0aW9uKCkgeworCisgICAgICAgIHJldHVybiBIRUJSRVdfVFJBTlNMSVRFUkFUSU9OOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhIEtleVJlbWFwIHdoaWNoIGVtdWxhdGVzIGEgc3RhbmRhcmQgSGVicmV3IGtleWJvYXJkLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgS2V5UmVtYXAgZ2V0SXNyYWVsTmlrdWQoKSB7CisKKyAgICAgICAgcmV0dXJuIElTUkFFTF9OSUtVRDsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgS2V5UmVtYXAgd2hpY2ggZW11bGF0ZXMgYSBUaGFpIEtldG1hbmVlIGtleWJvYXJkLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgS2V5UmVtYXAgZ2V0VGhhaUtldG1hbmVlKCkgeworICAgICAgICAKKyAgICAgICAgcmV0dXJuIFRIQUk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL01UZXh0UGFuZWwuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9NVGV4dFBhbmVsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNjMxMWExMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9NVGV4dFBhbmVsLmphdmEKQEAgLTAsMCArMSwzNzUgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IE1UZXh0UGFuZWwuamF2YSx2ICQgJFJldmlzaW9uOiAxLjIgJCAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNjo0NyAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbDsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZU1hcDsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5TdHlsZU1vZGlmaWVyOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NQ29uc3RUZXh0OworCisvKioKKyAqIE1UZXh0UGFuZWwgaXMgaW1wbGVtZW50ZWQgYnkgQ29tcG9uZW50cyB3aGljaCBwcm92aWRlIHNlbGVjdGFibGUKKyAqIGVkaXRhYmxlIHN0eWxlZCB0ZXh0LgorICogPHA+CisgKiBJbXBsZW1lbnRhdGlvbnMgb2YgTVRleHRQYW5lbCBwcm92aWRlIGEgc2ltcGxlLCBzdGFuZGFyZCB1c2VyIGludGVyZmFjZQorICogZm9yIHRleHQgZWRpdGluZy4gIE1UZXh0UGFuZWwgc3VwcGxpZXMgc2Nyb2xsYWJsZSBkaXNwbGF5LCB0eXBpbmcsIAorICogYXJyb3cta2V5IHN1cHBvcnQsIGNoYXJhY3RlciBzZWxlY3Rpb24sIHdvcmQtCisgKiBhbmQgc2VudGVuY2Utc2VsZWN0aW9uIChieSBkb3VibGUtY2xpY2tpbmcgYW5kIHRyaXBsZS1jbGlja2luZywgCisgKiByZXNwZWN0aXZlbHkpLCB0ZXh0IHN0eWxlcywgY2xpcGJvYXJkIG9wZXJhdGlvbnMgKGN1dCwgY29weSBhbmQgcGFzdGUpCisgKiBhbmQgYSBsb2cgb2YgY2hhbmdlcyBmb3IgdW5kby1yZWRvLgorICogPHA+CisgKiBNVGV4dFBhbmVsIGltcGxlbWVudGF0aW9ucyBkbyBub3QgcHJvdmlkZSB1c2VyIGludGVyZmFjZSBlbGVtZW50cworICogc3VjaCBhcyBhbiBlZGl0IG1lbnUgb3Igc3R5bGUgbWVudS4gIFRoaXMgc3VwcG9ydCBpcyBwcm92aWRlZCBpbgorICogZGlmZmVyZW50IHBhY2thZ2VzLCBhbmQgaXMgaW1wbGVtZW50ZWQgd2l0aCBNVGV4dFBhbmVsJ3MgQVBJLgorICogTVRleHRQYW5lbCBpbmNsdWRlcyBtZXRob2RzIGZvciBzZXR0aW5nIHNlbGVjdGlvbnMgYW5kIHN0eWxlcyBvbiB0ZXh0LAorICogYW5kIHVzaW5nIHRoZSBjbGlwYm9hcmQgYW5kIGNvbW1hbmQtbG9nIGZ1bmN0aW9uYWxpdHkuCisgKiBNVGV4dFBhbmVsJ3MgQVBJIGZvciBzZWxlY3Rpb24gYW5kIHRleHQgaGFuZGxpbmcgaXMgc2ltaWxhciB0byB0aGF0CisgKiBvZiA8dHQ+amF2YS5hd3QuVGV4dEFyZWE8L3R0PiBhbmQKKyAqIDx0dD5qYXZhLmF3dC5UZXh0Q29tcG9uZW50PC90dD4uCisgKiA8cD4KKyAqIE1UZXh0UGFuZWwgc3VwcG9ydHMgYmlkaXJlY3Rpb25hbCBhbmQgY29tcGxleCB0ZXh0LiAgSW4gYmlkaXJlY3Rpb25hbAorICogdGV4dCwgb2Zmc2V0cyBhdCBkaXJlY3Rpb24gYm91bmRhcmllcyBoYXZlIGR1YWwgY2FyZXRzLiAgTG9naWNhbCBzZWxlY3Rpb24KKyAqIGlzIHVzZWQsIHNvIHNlbGVjdGlvbnMgYWNyb3NzIHJ1biBkaXJlY3Rpb25zIG1heSBub3QgYmUgY29udGlndW91cyBpbgorICogZGlzcGxheS4KKyAqLworcHVibGljIGludGVyZmFjZSBNVGV4dFBhbmVsIHsKKyAgICAKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworCisgICAgLyoqCisgICAgICogVGhpcyB2YWx1ZSBpcyByZXR1cm5lZCBmcm9tIDx0dD5nZXRDaGFyYWN0ZXJTdHlsZU92ZXJTZWxlY3Rpb248L3R0PgorICAgICAqIGFuZCA8dHQ+Z2V0UGFyYWdyYXBoU3R5bGVPdmVyU2VsZWN0aW9uPC90dD4gdG8gaW5kaWNhdGUgdGhhdCB0aGUKKyAgICAgKiBzZWxlY3Rpb24gcmFuZ2UgY29udGFpbnMgbXVsdGlwbGUgdmFsdWVzIGZvciBhIGtleS4KKyAgICAgKiA8cD4KKyAgICAgKiBUaGVyZSBpcyBubyByZWFzb24gZm9yIHRoaXMgT2JqZWN0IGV2ZXIgdG8gYXBwZWFyIGluIGFuIEF0dHJpYnV0ZU1hcAorICAgICAqIGFzIGEgdmFsdWUuICBPYnZpb3VzbHksIGlmIGl0IGRvZXMgdGhlcmUgd2lsbCBiZSBubyB3YXkgdG8gZGlzdGluZ3Vpc2gKKyAgICAgKiBiZXR3ZWVuIG11bHRpcGxlIHZhbHVlcyBhY3Jvc3MgdGhlIHNlbGVjdGlvbiBhbmQgYSBjb25zaXN0ZW50IHZhbHVlIG9mCisgICAgICogPHR0Pk1VTFRJUExFX1ZBTFVFUzwvdHQ+IGZvciB0aGUga2V5LgorICAgICAqIEBzZWUgI2dldENoYXJhY3RlclN0eWxlT3ZlclNlbGVjdGlvbgorICAgICAqIEBzZWUgI2dldFBhcmFncmFwaFN0eWxlT3ZlclNlbGVjdGlvbgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgT2JqZWN0IE1VTFRJUExFX1ZBTFVFUyA9IG5ldyBPYmplY3QoKTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBBZGQgdGhlIGdpdmVuIFRleHRQYW5lbExpc3RlbmVyIHRvIHRoZSBsaXN0ZW5lcnMgd2hpY2ggd2lsbAorICAgICAqIHJlY2VpdmUgdXBkYXRlIG5vdGlmaWNhdGlvbnMgZnJvbSB0aGlzIE1UZXh0UGFuZWwuCisgICAgICogQHBhcmFtIGxpc3RlbmVyIHRoZSBsaXN0ZW5lciB0byBhZGQKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBhZGRMaXN0ZW5lcihUZXh0UGFuZWxMaXN0ZW5lciBsaXN0ZW5lcik7CisKKyAgICAvKioKKyAgICAgKiBSZW1vdmUgdGhlIGdpdmVuIFRleHRQYW5lbExpc3RlbmVyIGZyb20gdGhlIGxpc3RlbmVycyB3aGljaCB3aWxsCisgICAgICogcmVjZWl2ZSB1cGRhdGUgbm90aWZpY2F0aW9ucyBmcm9tIHRoaXMgTVRleHRQYW5lbC4KKyAgICAgKiBAcGFyYW0gbGlzdGVuZXIgdGhlIGxpc3RlbmVyIHRvIHJlbW92ZQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHJlbW92ZUxpc3RlbmVyKFRleHRQYW5lbExpc3RlbmVyIGxpc3RlbmVyKTsKKworICAgIC8qKgorICAgICAqIFNldCB0aGUgZG9jdW1lbnQgdG8gPHR0Pm5ld1RleHQ8L3R0Pi4gIFRoaXMgb3BlcmF0aW9uCisgICAgICogbW9kaWZpZXMgdGhlIHRleHQgaW4gdGhlIE1UZXh0UGFuZWwuICBJdCBkb2VzIG5vdCBtb2RpZnkgb3IgYWRvcHQKKyAgICAgKiA8dHQ+bmV3VGV4dDwvdHQ+LiAgVGhpcyBtZXRob2Qgc2V0cyB0aGUgc2VsZWN0aW9uIGFuIGluc2VydGlvbiBwb2ludCBhdAorICAgICAqIHRoZSBlbmQgb2YgdGhlIHRleHQuCisgICAgICogQHBhcmFtIG5ld1RleHQgdGhlIHRleHQgd2hpY2ggd2lsbCByZXBsYWNlIHRoZSBjdXJyZW50IHRleHQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0VGV4dChNQ29uc3RUZXh0IG5ld1RleHQpOworICAgIAorICAgIC8qKgorICAgICAqIEFwcGVuZCB0aGUgZ2l2ZW4gdGV4dCB0byB0aGUgZW5kIG9mIHRoZSBkb2N1bWVudC4gIEVxdWl2YWxlbnQgdG8KKyAgICAgKiA8dHQ+aW5zZXJ0KG5ld1RleHQsIGdldFRleHRMZW5ndGgoKSk8L3R0Pi4KKyAgICAgKiBAcGFyYW0gbmV3VGV4dCB0aGUgdGV4dCB0byBhcHBlbmQgdG8gdGhlIGRvY3VtZW50CisgICAgICovCisgICAgcHVibGljIHZvaWQgYXBwZW5kKE1Db25zdFRleHQgbmV3VGV4dCk7CisgICAgCisgICAgLyoqCisgICAgICogSW5zZXJ0IHRoZSBnaXZlbiB0ZXh0IGludG8gdGhlIGRvY3VtZW50IGF0IHRoZSBnaXZlbiBwb3NpdGlvbi4KKyAgICAgKiBFcXVpdmFsZW50IHRvCisgICAgICogPHR0PnJlcGxhY2VSYW5nZShuZXdUZXh0LCBwb3NpdGlvbiwgcG9zaXRpb24pPC90dD4uCisgICAgICogQHBhcmFtIG5ld1RleHQgdGhlIHRleHQgdG8gaW5zZXJ0IGludG8gdGhlIGRvY3VtZW50LgorICAgICAqIEBwYXJhbSBwb3NpdGlvbiB0aGUgcG9zaXRpb24gaW4gdGhlIGRvY3VtZW50IHdoZXJlIHRoZQorICAgICAqICAgICB0ZXh0IHdpbGwgYmUgaW5zZXJ0ZWQKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBpbnNlcnQoTUNvbnN0VGV4dCBuZXdUZXh0LCBpbnQgcG9zaXRpb24pOworCisgICAgLyoqCisgICAgICogUmVwbGFjZSB0aGUgZ2l2ZW4gcmFuZ2Ugd2l0aCA8dHQ+bmV3VGV4dDwvdHQ+LiAgQWZ0ZXIgdGhpcworICAgICAqIG9wZXJhdGlvbiB0aGUgc2VsZWN0aW9uIHJhbmdlIGlzIGFuIGluc2VydGlvbiBwb2ludCBhdCB0aGUKKyAgICAgKiBlbmQgb2YgdGhlIG5ldyB0ZXh0LgorICAgICAqIEBwYXJhbSBuZXdUZXh0IHRoZSB0ZXh0IHdpdGggd2hpY2ggdG8gcmVwbGFjZSB0aGUgcmFuZ2UKKyAgICAgKiBAcGFyYW0gc3RhcnQgdGhlIGJlZ2lubmluZyBvZiB0aGUgcmFuZ2UgdG8gcmVwbGFjZQorICAgICAqIEBwYXJhbSBlbmQgdGhlIGVuZCBvZiB0aGUgcmFuZ2UgdG8gcmVwbGFjZQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHJlcGxhY2VSYW5nZShNQ29uc3RUZXh0IG5ld1RleHQsIGludCBzdGFydCwgaW50IGVuZCk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgdGV4dCBkb2N1bWVudCBpbiB0aGUgTVRleHRQYW5lbC4KKyAgICAgKiBAcmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIHRleHQgZG9jdW1lbnQgaW4gdGhlIE1UZXh0UGFuZWwKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldFRleHRMZW5ndGgoKTsKKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgdGV4dCBkb2N1bWVudCBpbiB0aGUgTVRleHRQYW5lbC4KKyAgICAgKiBAcmV0dXJuIHRoZSB0ZXh0IGRvY3VtZW50IGluIHRoZSBNVGV4dFBhbmVsLgorICAgICAqLworICAgIHB1YmxpYyBNQ29uc3RUZXh0IGdldFRleHQoKTsKKyAgICAKKy8vPT09PT09PT09PT09CisvLyBTZWxlY3Rpb24gQWNjZXNzCisvLz09PT09PT09PT09PQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBvZmZzZXQgb2YgdGhlIHN0YXJ0IG9mIHRoZSBzZWxlY3Rpb24uCisgICAgICovCisgICAgcHVibGljIGludCBnZXRTZWxlY3Rpb25TdGFydCgpOworCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBvZmZzZXQgb2YgdGhlIGVuZCBvZiB0aGUgc2VsZWN0aW9uLgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0U2VsZWN0aW9uRW5kKCk7CisgICAgCisgICAgLyoqCisgICAgICogU2V0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlbGVjdGlvbiByYW5nZS4gIFRoaXMgaXMKKyAgICAgKiBlcXVpdmFsZW50IHRvIDx0dD5zZWxlY3Qoc2VsZWN0aW9uU3RhcnQsIGdldFNlbGVjdGlvbkVuZCgpKTwvdHQ+LgorICAgICAqIEBwYXJhbSBzZWxlY3Rpb25TdGFydCB0aGUgc3RhcnQgb2YgdGhlIG5ldyBzZWxlY3Rpb24gcmFuZ2UKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRTZWxlY3Rpb25TdGFydChpbnQgc2VsZWN0aW9uU3RhcnQpOworICAgIAorICAgIC8qKgorICAgICAqIFNldCB0aGUgZW5kIG9mIHRoZSBzZWxlY3Rpb24gcmFuZ2UuICBUaGlzIGlzCisgICAgICogZXF1aXZhbGVudCB0byA8dHQ+c2VsZWN0KGdldFNlbGVjdGlvblN0YXJ0KCksIHNlbGVjdGlvbkVuZCk8L3R0Pi4KKyAgICAgKiBAcGFyYW0gc2VsZWN0aW9uU3RhcnQgdGhlIHN0YXJ0IG9mIHRoZSBuZXcgc2VsZWN0aW9uIHJhbmdlCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0U2VsZWN0aW9uRW5kKGludCBzZWxlY3Rpb25FbmQpOworICAgIAorICAgIC8qKgorICAgICAqIFNldCB0aGUgc2VsZWN0aW9uIHJhbmdlIHRvIGFuIGluc2VydGlvbiBwb2ludCBhdCB0aGUgZ2l2ZW4KKyAgICAgKiBvZmZzZXQuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8KKyAgICAgKiA8dHQ+c2VsZWN0KHBvc2l0aW9uLCBwb3NpdGlvbik8L3R0Pi4KKyAgICAgKiBAcGFyYW0gcG9zaXRpb24gdGhlIG9mZnNldCBvZiB0aGUgbmV3IGluc2VydGlvbiBwb2ludAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldENhcmV0UG9zaXRpb24oaW50IHBvc2l0aW9uKTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIHNlbGVjdGlvbiByYW5nZSB0byB0aGUgZ2l2ZW4gcmFuZ2UuICBUaGUgcmFuZ2Ugc3RhcnQKKyAgICAgKiBpcyBwaW5uZWQgYmV0d2VlbiAwIGFuZCB0aGUgdGV4dCBsZW5ndGg7ICB0aGUgcmFuZ2UgZW5kIGlzIHBpbm5lZAorICAgICAqIGJldHdlZW4gdGhlIHJhbmdlIHN0YXJ0IGFuZCB0aGUgZW5kIG9mIHRoZSB0ZXh0LiAgVGhlc2Ugc2VtYW50aWNzCisgICAgICogYXJlIGlkZW50aWNhbCB0byB0aG9zZSBvZiA8dHQ+amF2YS5hd3QuVGV4dENvbXBvbmVudDwvdHQ+LgorICAgICAqIFRoaXMgbWV0aG9kIGhhcyBubyBlZmZlY3QgaWYgdGhlIHRleHQgaXMgbm90IHNlbGVjdGFibGUuCisgICAgICogQHBhcmFtIHNlbGVjdGlvblN0YXJ0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlbGVjdGlvbiByYW5nZQorICAgICAqIEBwYXJhbSBzZWxlY3Rpb25FbmQgdGhlIGVuZCBvZiB0aGUgc2VsZWN0aW9uIHJhbmdlCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2VsZWN0KGludCBzZWxlY3Rpb25TdGFydCwgaW50IHNlbGVjdGlvbkVuZCk7CisgICAgCisgICAgLyoqCisgICAgICogU2VsZWN0IGFsbCBvZiB0aGUgdGV4dCBpbiB0aGUgZG9jdW1lbnQuICBUaGlzIG1ldGhvZCBoYXMgbm8gZWZmZWN0IGlmCisgICAgICogdGhlIHRleHQgaXMgbm90IHNlbGVjdGFibGUuCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2VsZWN0QWxsKCk7CisgICAgCisKKy8vPT09PT09PT09PT09CisvLyBGb3JtYXQgV2lkdGgKKy8vPT09PT09PT09PT09CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIHRvdGFsIGZvcm1hdCB3aWR0aCwgaW4gcGl4ZWxzLiAgVGhlIGZvcm1hdCB3aWR0aCBpcyB0aGUKKyAgICAgKiB3aWR0aCB0byB3aGljaCB0ZXh0IGlzIHdyYXBwZWQuCisgICAgICogQHJldHVybiB0aGUgZm9ybWF0IHdpZHRoCisgICAgICovCisgICAgcHVibGljIGludCBnZXRGb3JtYXRXaWR0aCgpOworICAgIAorICAgIC8qKgorICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSBwYXJhZ3JhcGggYXQgdGhlIGdpdmVuIG9mZnNldCBpcyBsZWZ0LXRvLXJpZ2h0LgorICAgICAqIEBwYXJhbSBvZmZzZXQgYW4gb2Zmc2V0IGluIHRoZSB0ZXh0CisgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSBwYXJhZ3JhcGggYXQgdGhlIGdpdmVuIG9mZnNldCBpcyBsZWZ0LXRvLXJpZ2h0CisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gcGFyYWdyYXBoSXNMZWZ0VG9SaWdodChpbnQgb2Zmc2V0KTsKKworICAgIC8qKgorICAgICAqIFJldHVybiB0cnVlIGlmIHRoZXJlIGlzIGEgY2hhbmdlIHdoaWNoIGNhbiBiZSB1bmRvbmUuCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoZXJlIGlzIGEgY2hhbmdlIHdoaWNoIGNhbiBiZSB1bmRvbmUuCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gY2FuVW5kbygpOworICAgIAorICAgIC8qKgorICAgICAqIFJldHVybiB0cnVlIGlmIHRoZXJlIGlzIGEgY2hhbmdlIHdoaWNoIGNhbiBiZSByZWRvbmUuCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoZXJlIGlzIGEgY2hhbmdlIHdoaWNoIGNhbiBiZSByZWRvbmUuCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gY2FuUmVkbygpOworICAgIAorICAgIC8qKgorICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSBjbGlwYm9hcmQgY29udGFpbnMgY29udGVudHMgd2hpY2ggY291bGQgYmUKKyAgICAgKiB0cmFuc2ZlcmVkIGludG8gdGhlIHRleHQuCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSBjbGlwYm9hcmQgaGFzIHRleHQgY29udGVudC4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBjbGlwYm9hcmROb3RFbXB0eSgpOworICAgIAorCisvLz09PT09PT09PT09PQorLy8gU3R5bGVzCisvLz09PT09PT09PT09PQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGFuIEF0dHJpYnV0ZU1hcCBvZiBrZXlzIHdpdGggZGVmYXVsdCB2YWx1ZXMuICBUaGUgZGVmYXVsdAorICAgICAqIHZhbHVlcyBhcmUgdXNlZCB3aGVuIGRpc3BsYXlpbmcgdGV4dCBmb3IgdmFsdWVzIHdoaWNoIGFyZSBub3QKKyAgICAgKiBzcGVjaWZpZWQgaW4gdGhlIHRleHQuCisgICAgICogQHJldHVybiBhbiBBdHRyaWJ1dGVNYXAgb2YgZGVmYXVsdCBrZXktdmFsdWUgcGFpcnMKKyAgICAgKi8KKyAgICBwdWJsaWMgQXR0cmlidXRlTWFwIGdldERlZmF1bHRWYWx1ZXMoKTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBUaGlzIG1ldGhvZCBpbnNwZWN0cyB0aGUgY2hhcmFjdGVyIHN0eWxlIHJ1bnMgaW4gdGhlIHNlbGVjdGlvbgorICAgICAqIHJhbmdlIChvciB0aGUgdHlwaW5nIHN0eWxlIGF0IHRoZSBpbnNlcnRpb24gcG9pbnQpLiAgSXQgcmV0dXJuczoKKyAgICAgKiA8dWw+CisgICAgICogPGxpPlRoZSB2YWx1ZSBvZiA8dHQ+a2V5PC90dD4sIGlmIHRoZSB2YWx1ZSBvZiA8dHQ+a2V5PC90dD4KKyAgICAgKiBpcyB0aGUgc2FtZSBpbiBhbGwgb2YgdGhlIHN0eWxlIHJ1bnMgaW4gdGhlIHNlbGVjdGlvbiwgb3I8L2xpPgorICAgICAqIDxsaT48dHQ+TVVMVElQTEVfVkFMVUVTPC90dD4sIGlmIHR3byBvciBtb3JlIHN0eWxlIHJ1bnMgaGF2ZSBkaWZmZXJlbnQgCisgICAgICogdmFsdWVzIGZvciA8dHQ+a2V5PC90dD4uPC9saT4KKyAgICAgKiA8L3VsPgorICAgICAqIElmIGEgc3R5bGUgcnVuIGRvZXMgbm90IGNvbnRhaW4gPHR0PmtleTwvdHQ+LAorICAgICAqIGl0cyB2YWx1ZSBpcyBjb25zaWRlcmVkIHRvIGJlIHRoZSBkZWZhdWx0IHN0eWxlIGZvciA8dHQ+a2V5PC90dD4sCisgICAgICogYXMgZGVmaW5lZCBieSB0aGUgZGVmYXVsdCB2YWx1ZXMgQXR0cmlidXRlTWFwLiAgTm90ZSB0aGF0IGlmCisgICAgICogPHR0PmtleTwvdHQ+IGRvZXMgbm90IGhhdmUgYSBkZWZhdWx0IHZhbHVlIHRoaXMgbWV0aG9kIG1heSByZXR1cm4KKyAgICAgKiBudWxsLgorICAgICAqIFRoaXMgbWV0aG9kIGlzIHVzZWZ1bCBmb3IgY29uZmlndXJpbmcgc3R5bGUgbWVudXMuCisgICAgICogQHBhcmFtIGtleSB0aGUga2V5IHVzZWQgdG8gcmV0cmlldmUgdmFsdWVzIGZvciBjb21wYXJpc29uCisgICAgICogQHNlZSAjTVVMVElQTEVfVkFMVUVTCisgICAgICovCisgICAgcHVibGljIE9iamVjdCBnZXRDaGFyYWN0ZXJTdHlsZU92ZXJTZWxlY3Rpb24oT2JqZWN0IGtleSk7CisgICAgCisgICAgLyoqCisgICAgICogVGhpcyBtZXRob2QgaW5zcGVjdHMgdGhlIHBhcmFncmFwaCBzdHlsZSBydW5zIGluIHRoZSBzZWxlY3Rpb24KKyAgICAgKiByYW5nZSAob3IgdGhlIHR5cGluZyBzdHlsZSBhdCB0aGUgaW5zZXJ0aW9uIHBvaW50KS4gIEl0IHJldHVybnM6CisgICAgICogPHVsPgorICAgICAqIDxsaT5UaGUgdmFsdWUgb2YgPHR0PmtleTwvdHQ+LCBpZiB0aGUgdmFsdWUgb2YgPHR0PmtleTwvdHQ+CisgICAgICogaXMgdGhlIHNhbWUgaW4gYWxsIG9mIHRoZSBzdHlsZSBydW5zIGluIHRoZSBzZWxlY3Rpb24sIG9yPC9saT4KKyAgICAgKiA8bGk+PHR0Pk1VTFRJUExFX1ZBTFVFUzwvdHQ+LCBpZiB0d28gb3IgbW9yZSBzdHlsZSBydW5zIGhhdmUgCisgICAgICogZGlmZmVyZW50IHZhbHVlcyBmb3IgPHR0PmtleTwvdHQ+LjwvbGk+CisgICAgICogPC91bD4KKyAgICAgKiBJZiBhIHN0eWxlIHJ1biBkb2VzIG5vdCBjb250YWluIDx0dD5rZXk8L3R0PiwKKyAgICAgKiBpdHMgdmFsdWUgaXMgY29uc2lkZXJlZCB0byBiZSB0aGUgZGVmYXVsdCBzdHlsZSBmb3IgPHR0PmtleTwvdHQ+LAorICAgICAqIGFzIGRlZmluZWQgYnkgdGhlIGRlZmF1bHQgdmFsdWVzIEF0dHJpYnV0ZU1hcC4gIE5vdGUgdGhhdCBpZgorICAgICAqIDx0dD5rZXk8L3R0PiBkb2VzIG5vdCBoYXZlIGEgZGVmYXVsdCB2YWx1ZSB0aGlzIG1ldGhvZCBtYXkgcmV0dXJuCisgICAgICogbnVsbC4KKyAgICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VmdWwgZm9yIGNvbmZpZ3VyaW5nIHN0eWxlIG1lbnVzLgorICAgICAqIEBwYXJhbSBrZXkgdGhlIGtleSB1c2VkIHRvIHJldHJpZXZlIHZhbHVlcyBmb3IgY29tcGFyaXNvbgorICAgICAqIEBzZWUgI01VTFRJUExFX1ZBTFVFUworICAgICAqLworICAgIHB1YmxpYyBPYmplY3QgZ2V0UGFyYWdyYXBoU3R5bGVPdmVyU2VsZWN0aW9uKE9iamVjdCBrZXkpOworICAgIAorICAgIC8qKgorICAgICAqIFJlbW92ZSB0aGUgc2VsZWN0ZWQgdGV4dCBmcm9tIHRoZSBkb2N1bWVudCBhbmQgcGxhY2UgaXQKKyAgICAgKiBvbiB0aGUgY2xpcGJvYXJkLiAgVGhpcyBtZXRob2QgaGFzIG5vIGVmZmVjdCBpZiB0aGUgdGV4dAorICAgICAqIGlzIG5vdCBlZGl0YWJsZSwgb3IgaWYgbm8gdGV4dCBpcyBzZWxlY3RlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBjdXQoKTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBQbGFjZSB0aGUgc2VsZWN0ZWQgdGV4dCBvbiB0aGUgY2xpcGJvYXJkLiAgVGhpcyBtZXRob2QgaGFzCisgICAgICogbm8gZWZmZWN0IGlmIG5vIHRleHQgaXMgc2VsZWN0ZWQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgY29weSgpOworICAgIAorICAgIC8qKgorICAgICAqIFJlcGxhY2UgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCB0ZXh0IHdpdGggdGhlIHRleHQgb24gdGhlIGNsaXBib2FyZC4KKyAgICAgKiBUaGlzIG1ldGhvZCBoYXMgbm8gZWZmZWN0IGlmIHRoZSB0ZXh0IGlzIG5vdCBlZGl0YWJsZSwgb3IgaWYgbm8KKyAgICAgKiB0ZXh0IGlzIG9uIHRoZSBjbGlwYm9hcmQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgcGFzdGUoKTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBSZW1vdmUgc2VsZWN0ZWQgdGV4dCBmcm9tIHRoZSBkb2N1bWVudCwgd2l0aG91dCBhbHRlcmluZyB0aGUgY2xpcGJvYXJkLgorICAgICAqIFRoaXMgbWV0aG9kIGhhcyBubyBlZmZlY3QgaWYgdGhlCisgICAgICogdGV4dCBpcyBub3QgZWRpdGFibGUuCisgICAgICovCisgICAgcHVibGljIHZvaWQgY2xlYXIoKTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBVbmRvIHRoZSBtb3N0IHJlY2VudCB0ZXh0IGNoYW5nZS4gIFRoaXMgbWV0aG9kIGhhcyBubyBlZmZlY3QgaWYKKyAgICAgKiB0aGVyZSBpcyBubyBjaGFuZ2UgdG8gdW5kby4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCB1bmRvKCk7CisgICAgCisgICAgLyoqCisgICAgICogUmVkbyB0aGUgbW9zdCByZWNlbnQgdGV4dCBjaGFuZ2UuICBUaGlzIG1ldGhvZCBoYXMgbm8gZWZmZWN0IGlmCisgICAgICogdGhlcmUgaXMgbm8gY2hhbmdlIHRvIHJlZG8uCisgICAgICovCisgICAgcHVibGljIHZvaWQgcmVkbygpOworICAgIAorICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgbnVtYmVyIG9mIGNvbW1hbmRzIHRoZSBjb21tYW5kIGxvZyBjYW4gaG9sZC4KKyAgICAgKiBAcmV0dXJuIHRoZSBudW1iZXIgb2YgY29tbWFuZHMgdGhlIGNvbW1hbmQgbG9nIGNhbiBob2xkCisgICAgICovCisgICAgcHVibGljIGludCBnZXRDb21tYW5kTG9nU2l6ZSgpOworICAgIAorICAgIC8qKgorICAgICAqIFNldCB0aGUgbnVtYmVyIG9mIGNvbW1hbmRzIHRoZSBjb21tYW5kIGxvZyBjYW4gaG9sZC4gIEFsbAorICAgICAqIHJlZG9hYmxlIGNvbW1hbmRzIGFyZSByZW1vdmVkIHdoZW4gdGhpcyBtZXRob2QgaXMgY2FsbGVkLgorICAgICAqIEBwYXJhbSBzaXplIHRoZSBudW1iZXIgb2YgY29tbWFuZHMga2VwdCBpbiB0aGUgY29tbWFuZCBsb2cKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRDb21tYW5kTG9nU2l6ZShpbnQgc2l6ZSk7CisgICAgCisgICAgLyoqCisgICAgICogUmVtb3ZlIGFsbCBjb21tYW5kcyBmcm9tIHRoZSBjb21tYW5kIGxvZy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBjbGVhckNvbW1hbmRMb2coKTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBNb2RpZnkgdGhlIGNoYXJhY3RlciBzdHlsZXMgb24gdGhlIHNlbGVjdGVkIGNoYXJhY3RlcnMuICBJZiBubyBjaGFyYWN0ZXJzCisgICAgICogYXJlIHNlbGVjdGVkLCBtb2RpZnkgdGhlIHR5cGluZyBzdHlsZS4KKyAgICAgKiBAcGFyYW0gbW9kaWZpZXIgdGhlIFN0eWxlTW9kaWZpZXIgd2l0aCB3aGljaCB0byBtb2RpZnkgdGhlIHN0eWxlcworICAgICAqLworICAgIHB1YmxpYyB2b2lkIG1vZGlmeUNoYXJhY3RlclN0eWxlT25TZWxlY3Rpb24oU3R5bGVNb2RpZmllciBtb2RpZmllcik7CisgICAgCisgICAgLyoqCisgICAgICogTW9kaWZ5IHRoZSBwYXJhZ3JhcGggc3R5bGVzIGluIHBhcmFncmFwaHMgY29udGFpbmluZyBzZWxlY3RlZCBjaGFyYWN0ZXJzLCBvcgorICAgICAqIHRoZSBwYXJhZ3JhcGggY29udGFpbmluZyB0aGUgaW5zZXJ0aW9uIHBvaW50LgorICAgICAqIEBwYXJhbSBtb2RpZmllciB0aGUgU3R5bGVNb2RpZmllciB3aXRoIHdoaWNoIHRvIG1vZGlmeSB0aGUgc3R5bGVzCisgICAgICovCisgICAgcHVibGljIHZvaWQgbW9kaWZ5UGFyYWdyYXBoU3R5bGVPblNlbGVjdGlvbihTdHlsZU1vZGlmaWVyIG1vZGlmaWVyKTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIEtleVJlbWFwIHVzZWQgdG8gcHJvY2VzcyBrZXkgZXZlbnRzLgorICAgICAqIEByZXR1cm4gdGhlIGtleSByZW1hcCB1c2VkIHRvIHByb2Nlc3Mga2V5IGV2ZW50cworICAgICAqIEBzZWUgI3NldEtleVJlbWFwCisgICAgICovCisgICAgcHVibGljIEtleVJlbWFwIGdldEtleVJlbWFwKCk7CisgICAgCisgICAgLyoqCisgICAgICogVXNlIHRoZSBnaXZlbiBLZXlSZW1hcCB0byBtYXAga2V5IGV2ZW50cyB0byBjaGFyYWN0ZXJzLgorICAgICAqIE9ubHkga2V5CisgICAgICogZXZlbnRzIGFyZSBhZmZlY3RlZCBieSB0aGUgcmVtYXA7ICBvdGhlciB0ZXh0IGVudGVyaW5nIHRoZQorICAgICAqIGNvbnRyb2wgKHZpYSB0aGUgY2xpcGJvYXJkLCBmb3IgZXhhbXBsZSkgaXMgbm90IGFmZmVjdGVkCisgICAgICogYnkgdGhlIEtleVJlbWFwLgorICAgICAqIDxwPgorICAgICAqIERvIG5vdCBwYXNzIDx0dD5udWxsPC90dD4gdG8gdGhpcyBtZXRob2QgdG8gbGVhdmUga2V5CisgICAgICogZXZlbnRzIHVubWFwcGVkLiAgSW5zdGVhZCwgdXNlIDx0dD5LZXlSZW1hcC5nZXRJZGVudGl0eVJlbWFwKCk8L3R0PgorICAgICAqIEBwYXJhbSByZW1hcCB0aGUgS2V5UmVtYXAgdG8gdXNlIGZvciBtYXBwaW5nIGtleSBldmVudHMgdG8gY2hhcmFjdGVycworICAgICAqIEBleGNlcHRpb24gamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uIGlmIHBhcmFtZXRlciBpcyBudWxsCisgICAgICogQHNlZSBLZXlSZW1hcAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldEtleVJlbWFwKEtleVJlbWFwIHJlbWFwKTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIG1vZGlmaWNhdGlvbiBmbGFnIG9mIHRoZSBjdXJyZW50IHRleHQgY2hhbmdlLgorICAgICAqIEBzZWUgI3NldE1vZGlmaWVkCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNNb2RpZmllZCgpOworICAgIAorICAgIC8qKgorICAgICAqIFNldCB0aGUgbW9kaWZpY2F0aW9uIGZsYWcgb2YgdGhlIGN1cnJlbnQgdGV4dCBjaGFuZ2UuCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0TW9kaWZpZWQoYm9vbGVhbiBtb2RpZmllZCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvT2Zmc2NyZWVuQnVmZmVyQ2FjaGUuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9PZmZzY3JlZW5CdWZmZXJDYWNoZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjczNDRiZWYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvT2Zmc2NyZWVuQnVmZmVyQ2FjaGUuamF2YQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBPZmZzY3JlZW5CdWZmZXJDYWNoZS5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjUxOjIzICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsOworCitpbXBvcnQgamF2YS5hd3QuSW1hZ2U7CitpbXBvcnQgamF2YS5hd3QuQ29tcG9uZW50OworCitjbGFzcyBPZmZzY3JlZW5CdWZmZXJDYWNoZSB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHByaXZhdGUgSW1hZ2UgZk9mZnNjcmVlbkJ1ZmZlciA9IG51bGw7CisgICAgcHJpdmF0ZSBDb21wb25lbnQgZkhvc3Q7CisKKyAgICBPZmZzY3JlZW5CdWZmZXJDYWNoZShDb21wb25lbnQgaG9zdCkgeworCisgICAgICAgIGZIb3N0ID0gaG9zdDsKKyAgICB9CisKKyAgICBwcml2YXRlIEltYWdlIG1ha2VCdWZmZXIoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSB7CisKKyAgICAgICAgcmV0dXJuIGZIb3N0LmNyZWF0ZUltYWdlKE1hdGgubWF4KHdpZHRoLCAxKSwgTWF0aC5tYXgoaGVpZ2h0LCAxKSk7CisgICAgfQorCisgICAgSW1hZ2UgZ2V0QnVmZmVyKGludCB3aWR0aCwgaW50IGhlaWdodCkgeworCisgICAgICAgIEltYWdlIGJ1ZmZlciA9IGZPZmZzY3JlZW5CdWZmZXI7CisKKyAgICAgICAgaWYgKGJ1ZmZlciAhPSBudWxsKSB7CisgICAgICAgICAgICBpZiAoYnVmZmVyLmdldFdpZHRoKGZIb3N0KSA+PSB3aWR0aCAmJgorICAgICAgICAgICAgICAgICAgICBidWZmZXIuZ2V0SGVpZ2h0KGZIb3N0KSA+PSBoZWlnaHQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gYnVmZmVyOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgYnVmZmVyID0gbWFrZUJ1ZmZlcih3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgZk9mZnNjcmVlbkJ1ZmZlciA9IGJ1ZmZlcjsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlcjsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL1BhbmVsRXZlbnRCcm9hZGNhc3Rlci5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL1BhbmVsRXZlbnRCcm9hZGNhc3Rlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjhmMjUyNTMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvUGFuZWxFdmVudEJyb2FkY2FzdGVyLmphdmEKQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFBhbmVsRXZlbnRCcm9hZGNhc3Rlci5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjUxOjIzICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsOworCitpbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKKworLyoqCisgKiBUaGlzIGNsYXNzIGxpc3RlbnMgZm9yIHRleHQgc3RhdGUgY2hhbmdlIG5vdGlmaWNhdGlvbnMKKyAqIGFuZCBicm9hZGNhc3RzIHRoZW0gdG8gYWxsIG9mIGl0cyBsaXN0ZW5lcnMuCisgKi8KK2ZpbmFsIGNsYXNzIFBhbmVsRXZlbnRCcm9hZGNhc3RlciB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBGSVJTVCA9IFRleHRQYW5lbEV2ZW50LlRFWFRfUEFORUxfRklSU1Q7CisKKyAgICBwcml2YXRlIGZpbmFsIFZlY3RvcltdIGZMaXN0ZW5lcnM7CisgICAgcHJpdmF0ZSBmaW5hbCBUZXh0UGFuZWxFdmVudFtdIGZFdmVudHM7CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgYSBuZXcgUGFuZWxFdmVudEJyb2FkY2FzdGVyLgorICAgICAqIEBwYXJhbSBwYW5lbCB0aGUgVGV4dFBhbmVsIGZvciB3aGljaCBldmVudHMgYXJlIGJyb2FkY2FzdGVkCisgICAgICovCisgICAgcHVibGljIFBhbmVsRXZlbnRCcm9hZGNhc3RlcihNVGV4dFBhbmVsIHBhbmVsKSB7CisKKyAgICAgICAgaW50IGNvdW50ID0gVGV4dFBhbmVsRXZlbnQuVEVYVF9QQU5FTF9MQVNUIC0gRklSU1QgKyAxOworCisgICAgICAgIGZFdmVudHMgPSBuZXcgVGV4dFBhbmVsRXZlbnRbY291bnRdOworICAgICAgICBmTGlzdGVuZXJzID0gbmV3IFZlY3Rvcltjb3VudF07CisgICAgICAgIAorICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBmTGlzdGVuZXJzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBmRXZlbnRzW2ldID0gbmV3IFRleHRQYW5lbEV2ZW50KHBhbmVsLCBpK0ZJUlNUKTsKKyAgICAgICAgICAgIGZMaXN0ZW5lcnNbaV0gPSBuZXcgVmVjdG9yKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBZGQgdGhlIGdpdmVuIFRleHRQYW5lbExpc3RlbmVyIHRvIHRoZSBUZXh0UGFuZWxMaXN0ZW5lcnMgdG8KKyAgICAgKiB3aGljaCBub3RpZmljYXRpb25zIGFyZSBmb3J3YXJkZWQuCisgICAgICogQHBhcmFtIGxpc3RlbmVyIHRoZSBsaXN0ZW5lciB0byBhZGQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgYWRkTGlzdGVuZXIoVGV4dFBhbmVsTGlzdGVuZXIgbGlzdGVuZXIpIHsKKworICAgICAgICBmb3IgKGludCBpPUZJUlNUOyBpIDw9IFRleHRQYW5lbEV2ZW50LlRFWFRfUEFORUxfTEFTVDsgaSsrKSB7CisgICAgICAgICAgICBWZWN0b3IgbGlzdGVuZXJzID0gZkxpc3RlbmVyc1tpLUZJUlNUXTsKKyAgICAgICAgICAgIGlmIChsaXN0ZW5lci5yZXNwb25kc1RvRXZlbnRUeXBlKGkpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFsaXN0ZW5lcnMuY29udGFpbnMobGlzdGVuZXIpKSB7CisgICAgICAgICAgICAgICAgICAgIGxpc3RlbmVycy5hZGRFbGVtZW50KGxpc3RlbmVyKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZW1vdmUgdGhlIGdpdmVuIFRleHRQYW5lbExpc3RlbmVyIGZyb20gdGhlIFRleHRQYW5lbExpc3RlbmVycyB0bworICAgICAqIHdoaWNoIG5vdGlmaWNhdGlvbnMgYXJlIGZvcndhcmRlZC4KKyAgICAgKiBAcGFyYW0gbGlzdGVuZXIgdGhlIGxpc3RlbmVyIHRvIHJlbW92ZQorICAgICAqLworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgdm9pZCByZW1vdmVMaXN0ZW5lcihUZXh0UGFuZWxMaXN0ZW5lciBsaXN0ZW5lcikgeworCisgICAgICAgIGZvciAoaW50IGk9RklSU1Q7IGkgPD0gVGV4dFBhbmVsRXZlbnQuVEVYVF9QQU5FTF9MQVNUOyBpKyspIHsKKyAgICAgICAgICAgIFZlY3RvciBsaXN0ZW5lcnMgPSBmTGlzdGVuZXJzW2ktRklSU1RdOworICAgICAgICAgICAgaWYgKGxpc3RlbmVyLnJlc3BvbmRzVG9FdmVudFR5cGUoaSkpIHsKKyAgICAgICAgICAgICAgICBsaXN0ZW5lcnMucmVtb3ZlRWxlbWVudChsaXN0ZW5lcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZWNlaXZlIGEgbm90aWZpY2F0aW9uIGFuZCBmb3J3YXJkIGl0IHRvIGFsbCBsaXN0ZW5lcnMuCisgICAgICogQGNoYW5nZUNvZGUgb25lIG9mIHRoZSBjb25zdGFudHMgaW4gdGhlIFRleHRQYW5lbExpc3RlbmVyIGNsYXNzCisgICAgICovCisgICAgcHVibGljIHN5bmNocm9uaXplZCB2b2lkIHRleHRTdGF0ZUNoYW5nZWQoaW50IGlkKSB7CisKKyAgICAgICAgaW50IGluZGV4ID0gaWQtRklSU1Q7CisgICAgICAgIFRleHRQYW5lbEV2ZW50IGV2ZW50ID0gZkV2ZW50c1tpbmRleF07CisgICAgICAgIFZlY3RvciBsaXN0ZW5lcnMgPSBmTGlzdGVuZXJzW2luZGV4XTsKKyAgICAgICAgCisgICAgICAgIGludCBzaXplID0gbGlzdGVuZXJzLnNpemUoKTsKKworICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBzaXplOyBpKyspIHsKKworICAgICAgICAgICAgVGV4dFBhbmVsTGlzdGVuZXIgbGlzdGVuZXIgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChUZXh0UGFuZWxMaXN0ZW5lcikgbGlzdGVuZXJzLmVsZW1lbnRBdChpKTsKKyAgICAgICAgICAgIGxpc3RlbmVyLnRleHRFdmVudE9jY3VycmVkKGV2ZW50KTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9SdW5TdHJhdGVneS5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL1J1blN0cmF0ZWd5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYTdiMTI5MAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9SdW5TdHJhdGVneS5qYXZhCkBAIC0wLDAgKzEsMjIgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFJ1blN0cmF0ZWd5LmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NTE6MjMgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWw7CisKK2NsYXNzIFJ1blN0cmF0ZWd5IHsKKyAgICAKKyAgICB2b2lkIGRvSXQoUnVubmFibGUgcikgeworICAgICAgICByLnJ1bigpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvU2Nyb2xsQmFyTGF5b3V0LmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvU2Nyb2xsQmFyTGF5b3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYzA2ZmY2YgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9TY3JvbGxCYXJMYXlvdXQuamF2YQpAQCAtMCwwICsxLDE1MyBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogU2Nyb2xsQmFyTGF5b3V0LmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NTE6MjMgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWw7CisKK2ltcG9ydCBqYXZhLmF3dC5Db21wb25lbnQ7CitpbXBvcnQgamF2YS5hd3QuQ29udGFpbmVyOworaW1wb3J0IGphdmEuYXd0LkRpbWVuc2lvbjsKK2ltcG9ydCBqYXZhLmF3dC5JbnNldHM7CitpbXBvcnQgamF2YS5hd3QuTGF5b3V0TWFuYWdlcjsKKworY2xhc3MgU2Nyb2xsQmFyTGF5b3V0IGltcGxlbWVudHMgTGF5b3V0TWFuYWdlciB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIENvbXBvbmVudCAgIGZIb3JpelNjcm9sbEJhciA9IG51bGw7CisgICAgQ29tcG9uZW50ICAgZlZlcnRTY3JvbGxCYXIgPSBudWxsOworICAgIENvbXBvbmVudCAgIGZDaGlsZCA9IG51bGw7CisKKyAgICBwdWJsaWMgU2Nyb2xsQmFyTGF5b3V0KCkgeworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGFkZExheW91dENvbXBvbmVudChTdHJpbmcgbmFtZSwgQ29tcG9uZW50IGNvbXApIHsKKworICAgICAgICBpZiAoIkNlbnRlciIuZXF1YWxzKG5hbWUpKQorICAgICAgICAgICAgZkNoaWxkID0gY29tcDsKKyAgICAgICAgZWxzZSBpZiAoIlNvdXRoIi5lcXVhbHMobmFtZSkpCisgICAgICAgICAgICBmSG9yaXpTY3JvbGxCYXIgPSBjb21wOworICAgICAgICBlbHNlIGlmICgiRWFzdCIuZXF1YWxzKG5hbWUpKQorICAgICAgICAgICAgZlZlcnRTY3JvbGxCYXIgPSBjb21wOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGxheW91dENvbnRhaW5lcihDb250YWluZXIgdGFyZ2V0KSB7CisKKyAgICAgICAgSW5zZXRzICAgICAgaW5zZXRzID0gdGFyZ2V0LmdldEluc2V0cygpOworICAgICAgICBEaW1lbnNpb24gICB0YXJnZXRTaXplID0gdGFyZ2V0LmdldFNpemUoKTsKKyAgICAgICAgaW50ICAgICAgICAgaHNiSGVpZ2h0ID0gKGZIb3JpelNjcm9sbEJhciAhPSBudWxsKSA/IGZIb3JpelNjcm9sbEJhci5nZXRQcmVmZXJyZWRTaXplKCkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0IDogMDsKKyAgICAgICAgaW50ICAgICAgICAgdnNiV2lkdGggPSAoZlZlcnRTY3JvbGxCYXIgIT0gbnVsbCkgPyBmVmVydFNjcm9sbEJhci5nZXRQcmVmZXJyZWRTaXplKCkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggOiAwOworCisgICAgICAgIGlmIChmSG9yaXpTY3JvbGxCYXIgIT0gbnVsbCkKKyAgICAgICAgICAgIGZIb3JpelNjcm9sbEJhci5zZXRCb3VuZHMoaW5zZXRzLmxlZnQsIHRhcmdldFNpemUuaGVpZ2h0IC0gaW5zZXRzLmJvdHRvbSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhzYkhlaWdodCwgdGFyZ2V0U2l6ZS53aWR0aCAtIHZzYldpZHRoLCBoc2JIZWlnaHQpOworCisgICAgICAgIGlmIChmVmVydFNjcm9sbEJhciAhPSBudWxsKQorICAgICAgICAgICAgZlZlcnRTY3JvbGxCYXIuc2V0Qm91bmRzKHRhcmdldFNpemUud2lkdGggLSBpbnNldHMucmlnaHQgLSB2c2JXaWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXRzLnRvcCwgdnNiV2lkdGgsIHRhcmdldFNpemUuaGVpZ2h0IC0gaHNiSGVpZ2h0KTsKKworICAgICAgICBpZiAoZkNoaWxkICE9IG51bGwpCisgICAgICAgICAgICBmQ2hpbGQuc2V0Qm91bmRzKGluc2V0cy5sZWZ0LCBpbnNldHMudG9wLCB0YXJnZXRTaXplLndpZHRoIC0gaW5zZXRzLnJpZ2h0IC0gdnNiV2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFNpemUuaGVpZ2h0IC0gaW5zZXRzLmJvdHRvbSAtIGhzYkhlaWdodCk7CisgICAgfQorCisgICAgcHVibGljIERpbWVuc2lvbiBtaW5pbXVtTGF5b3V0U2l6ZShDb250YWluZXIgdGFyZ2V0KSB7CisKKyAgICAgICAgRGltZW5zaW9uICAgcmV0dXJuVmFsID0gbmV3IERpbWVuc2lvbigwLCAwKTsKKyAgICAgICAgRGltZW5zaW9uICAgaHNiU2l6ZTsKKyAgICAgICAgRGltZW5zaW9uICAgdnNiU2l6ZTsKKyAgICAgICAgRGltZW5zaW9uICAgY2hpbGRTaXplOworCisgICAgICAgIGlmIChmSG9yaXpTY3JvbGxCYXIgIT0gbnVsbCAmJiBmSG9yaXpTY3JvbGxCYXIuaXNWaXNpYmxlKCkpIHsKKyAgICAgICAgICAgIGhzYlNpemUgPSBmSG9yaXpTY3JvbGxCYXIuZ2V0TWluaW11bVNpemUoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGhzYlNpemUgPSBuZXcgRGltZW5zaW9uKDAsIDApOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZWZXJ0U2Nyb2xsQmFyICE9IG51bGwgJiYgZlZlcnRTY3JvbGxCYXIuaXNWaXNpYmxlKCkpIHsKKyAgICAgICAgICAgIHZzYlNpemUgPSBmVmVydFNjcm9sbEJhci5nZXRNaW5pbXVtU2l6ZSgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdnNiU2l6ZSA9IG5ldyBEaW1lbnNpb24oMCwgMCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZkNoaWxkICE9IG51bGwgJiYgZkNoaWxkLmlzVmlzaWJsZSgpKSB7CisgICAgICAgICAgICBjaGlsZFNpemUgPSBmQ2hpbGQuZ2V0TWluaW11bVNpemUoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNoaWxkU2l6ZSA9IG5ldyBEaW1lbnNpb24oMCwgMCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm5WYWwud2lkdGggPSBNYXRoLm1heChjaGlsZFNpemUud2lkdGgsIGhzYlNpemUud2lkdGgpICsgdnNiU2l6ZS53aWR0aDsKKyAgICAgICAgcmV0dXJuVmFsLmhlaWdodCA9IE1hdGgubWF4KGNoaWxkU2l6ZS5oZWlnaHQsIHZzYlNpemUuaGVpZ2h0KSArIGhzYlNpemUuaGVpZ2h0OworCisgICAgICAgIEluc2V0cyAgaW5zZXRzID0gdGFyZ2V0LmdldEluc2V0cygpOworCisgICAgICAgIHJldHVyblZhbC53aWR0aCArPSBpbnNldHMubGVmdCArIGluc2V0cy5yaWdodDsKKyAgICAgICAgcmV0dXJuVmFsLmhlaWdodCArPSBpbnNldHMudG9wICsgaW5zZXRzLmJvdHRvbTsKKworICAgICAgICByZXR1cm4gcmV0dXJuVmFsOworICAgIH0KKworICAgIHB1YmxpYyBEaW1lbnNpb24gcHJlZmVycmVkTGF5b3V0U2l6ZShDb250YWluZXIgdGFyZ2V0KSB7CisKKyAgICAgICAgRGltZW5zaW9uICAgcmV0dXJuVmFsID0gbmV3IERpbWVuc2lvbigwLCAwKTsKKyAgICAgICAgRGltZW5zaW9uICAgaHNiU2l6ZTsKKyAgICAgICAgRGltZW5zaW9uICAgdnNiU2l6ZTsKKyAgICAgICAgRGltZW5zaW9uICAgY2hpbGRTaXplOworCisgICAgICAgIGlmIChmSG9yaXpTY3JvbGxCYXIgIT0gbnVsbCAmJiBmSG9yaXpTY3JvbGxCYXIuaXNWaXNpYmxlKCkpIHsKKyAgICAgICAgICAgIGhzYlNpemUgPSBmSG9yaXpTY3JvbGxCYXIuZ2V0UHJlZmVycmVkU2l6ZSgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaHNiU2l6ZSA9IG5ldyBEaW1lbnNpb24oMCwgMCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZlZlcnRTY3JvbGxCYXIgIT0gbnVsbCAmJiBmVmVydFNjcm9sbEJhci5pc1Zpc2libGUoKSkgeworICAgICAgICAgICAgdnNiU2l6ZSA9IGZWZXJ0U2Nyb2xsQmFyLmdldFByZWZlcnJlZFNpemUoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHZzYlNpemUgPSBuZXcgRGltZW5zaW9uKDAsIDApOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZDaGlsZCAhPSBudWxsICYmIGZDaGlsZC5pc1Zpc2libGUoKSkgeworICAgICAgICAgICAgY2hpbGRTaXplID0gZkNoaWxkLmdldFByZWZlcnJlZFNpemUoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNoaWxkU2l6ZSA9IG5ldyBEaW1lbnNpb24oMCwgMCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm5WYWwud2lkdGggPSBNYXRoLm1heChjaGlsZFNpemUud2lkdGgsIGhzYlNpemUud2lkdGgpICsgdnNiU2l6ZS53aWR0aDsKKyAgICAgICAgcmV0dXJuVmFsLmhlaWdodCA9IE1hdGgubWF4KGNoaWxkU2l6ZS5oZWlnaHQsIHZzYlNpemUuaGVpZ2h0KSArIGhzYlNpemUuaGVpZ2h0OworCisgICAgICAgIEluc2V0cyAgaW5zZXRzID0gdGFyZ2V0LmdldEluc2V0cygpOworCisgICAgICAgIHJldHVyblZhbC53aWR0aCArPSBpbnNldHMubGVmdCArIGluc2V0cy5yaWdodDsKKyAgICAgICAgcmV0dXJuVmFsLmhlaWdodCArPSBpbnNldHMudG9wICsgaW5zZXRzLmJvdHRvbTsKKworICAgICAgICByZXR1cm4gcmV0dXJuVmFsOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHJlbW92ZUxheW91dENvbXBvbmVudChDb21wb25lbnQgY29tcCkgeworCisgICAgICAgIGlmIChjb21wID09IGZDaGlsZCkKKyAgICAgICAgICAgIGZDaGlsZCA9IG51bGw7CisgICAgICAgIGVsc2UgaWYgKGNvbXAgPT0gZkhvcml6U2Nyb2xsQmFyKQorICAgICAgICAgICAgZkhvcml6U2Nyb2xsQmFyID0gbnVsbDsKKyAgICAgICAgZWxzZSBpZiAoY29tcCA9PSBmVmVydFNjcm9sbEJhcikKKyAgICAgICAgICAgIGZWZXJ0U2Nyb2xsQmFyID0gbnVsbDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvU2Nyb2xsZXIuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9TY3JvbGxlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjZiYjQwNGQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvU2Nyb2xsZXIuamF2YQpAQCAtMCwwICsxLDIwOCBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogU2Nyb2xsZXIuamF2YSx2ICQgJFJldmlzaW9uOiAxLjQgJCAkRGF0ZTogMjAwMS8xMC8zMCAwMjo0Mjo0OCAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbDsKKworLyoKKyAgICA3LzkvOTcgLSBjaGFuZ2VkIHNvbWUgZGVwcmVjYXRlZCBtZXRob2RzIGluIFNjcm9sbGJhcgorICAgICAgICAgICAgQWxzbyBzZXR0aW5nIFVuaXQgYW5kIEJsb2NrIGluY3JlbWVudCB2YWx1ZXMuICBNYXliZQorICAgICAgICAgICAgaXQgbWF0dGVycy4uLgorICAgIDYvMjkvOTggLSByZWltcGxlbWVudGVkIHRoaXMgY2xhc3MuICBOb3cgdGhpcyBjbGFzcyB0YWxrcyB0bworICAgICAgICAgICAgICBhbnkgY29tcG9uZW50IHdoaWNoIGltcGxlbWVudHMgU2Nyb2xsZXIuQ2xpZW50LgorICAgICAgICAgICAgICBTY3JvbGxIb2xkZXIgaXMgZ29uZSwgdG9vLgorICAgIDIvNC85OSAtIE5vIGxvbmdlciBhIFBhbmVsLiAgQWxzbywgZG9lc24ndCBjcmVhdGUgU2Nyb2xsYmFycywKKyAgICAgICAgICAgICBhbmQgaW4gZmFjdCBkb2Vzbid0IGV2ZW4gdXNlIHRoZSBTY3JvbGxiYXIgY2xhc3MKKyAgICAgICAgICAgICBkaXJlY3RseS4KKyovCisKK2ltcG9ydCBqYXZhLmF3dC5Db21wb25lbnQ7CitpbXBvcnQgamF2YS5hd3QuUmVjdGFuZ2xlOworaW1wb3J0IGphdmEuYXd0LkRpbWVuc2lvbjsKKworaW1wb3J0IGphdmEuYXd0LmV2ZW50LkFkanVzdG1lbnRMaXN0ZW5lcjsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5BZGp1c3RtZW50RXZlbnQ7CitpbXBvcnQgamF2YS5hd3QuQWRqdXN0YWJsZTsKKworLyoqCisqIFRoaXMgY2xhc3MgbWFuYWdlcyB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBhIHNjcm9sbGFibGUgY2xpZW50CisqIGFuZCB2ZXJ0aWNhbCBhbmQgaG9yaXpvbnRhbCBzY3JvbGxiYXJzLiAgSXQgY2FsbHMgdGhlIGNsaWVudCdzCisqIHNjcm9sbFRvIG1ldGhvZCBpbiByZXNwb25zZSB0byBtYW5pcHVsYXRpb24gb2YgdGhlIHNjcm9sbCBiYXJzLgorKgorKiBUaGlzIGNsYXNzIHVzZWQgdG8gYmUgYSBQYW5lbCBjb250YWluaW5nIHRoZSBzY3JvbGxiYXJzIGFuZAorKiB0aGUgY2xpZW50IHBhbmVsLiAgQXMgcGFydCBvZiB0aGUgbWlncmF0aW9uIGF3YXkgZnJvbSBkaXJlY3QKKyogQVdUIGRlcGVuZGVuY2llcywgdGhpcyBjbGFzcyBpcyBubyBsb25nZXIgcGFydCBvZiB0aGUgdmlldworKiBoaWVyYXJjaHkuICBJbnN0ZWFkIGl0IHNpbXBseSBrZWVwcyBhIHJlZmVyZW5jZSB0byBpdHMKKyogY2xpZW50IGFuZCBzY3JvbGwgYmFycy4gIEl0IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiBoaWdoZXItCisqIGxldmVsIGNsYXNzZXMgdG8gc2V0IHVwIHRoZSB2aWV3IGhpZXJhcmNoeS4KKyovCitmaW5hbCBjbGFzcyBTY3JvbGxlciBpbXBsZW1lbnRzIEFkanVzdG1lbnRMaXN0ZW5lcgoreworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisKKyAgICBzdGF0aWMgaW50ZXJmYWNlIENsaWVudCB7CisgICAgICAgIHZvaWQgc2Nyb2xsVG8oaW50IHgsIGludCB5KTsKKyAgICAgICAgUmVjdGFuZ2xlIGdldFNjcm9sbFNpemUoKTsKKyAgICAgICAgUmVjdGFuZ2xlIGdldEJvdW5kcygpOworICAgIH0KKworICAgIHByaXZhdGUgQWRqdXN0YWJsZSBmSG9yaXpTY3JvbGxCYXIgPSBudWxsOworICAgIHByaXZhdGUgQWRqdXN0YWJsZSBmVmVydFNjcm9sbEJhciA9IG51bGw7CisgICAgcHJpdmF0ZSBDbGllbnQgZkNsaWVudCA9IG51bGw7CisKKyAgICAvKioKKyAgICAgKiBUaGVzZSBhcmUgdXNlZCBpZiB0aGUgcmVzcGVjdGl2ZSBTY3JvbGxiYXIgaXMgbm90IHByZXNlbnQuCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgZkhvcml6VmFsdWUsIGZWZXJ0VmFsdWU7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgREVGQVVMVF9VTklUX0lOQyA9IDEwOworCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGEgbmV3IFNjcm9sbGVyIHdpdGggdGhlIGdpdmVuIEFkanVzdGFibGVzLAorICAgICAqIHdoaWNoIHJlYWxseSBzaG91bGQgYmUgc2Nyb2xsYmFycyBvZiBzb21lIGlsay4KKyAgICAgKiBBbHNvLCB0aGUgQWRqdXN0YWJsZXMgYXJlIHJlcXVpcmVkIHRvIGJlIEFXVCBDb21wb25lbnRzLAorICAgICAqIHNvIHRoZSBTY3JvbGxlciBjYW4gZW5hYmxlIGFuZCBkaXNhYmxlIHRoZW0uCisgICAgICogSG93ZXZlciwgYSBTY3JvbGxlciBjYW4gd29yayB3aXRoIGVpdGhlciBBV1QgU2Nyb2xsYmFycworICAgICAqIG9yIEpGQyBKU2Nyb2xsYmFycy4KKyAgICAgKiBAcGFyYW0gaG9yaXpTY3JvbGxiYXIgdGhlIGhvcml6b250YWwgc2Nyb2xsYmFyLiAgbnVsbCBpZgorICAgICAqIHRoZXJlIGlzIG5vIGhvcml6b250YWwgc2Nyb2xsYmFyLgorICAgICAqIEBwYXJhbSB2ZXJ0U2Nyb2xsYmFyIHRoZSB2ZXJ0aWNhbCBzY3JvbGxiYXIuICBudWxsIGlmCisgICAgICogdGhlcmUgaXMgbm8gdmVydGljYWwgc2Nyb2xsYmFyLgorICAgICAqLworICAgIHB1YmxpYyBTY3JvbGxlcihBZGp1c3RhYmxlIGhvcml6U2Nyb2xsQmFyLAorICAgICAgICAgICAgICAgICAgICBBZGp1c3RhYmxlIHZlcnRTY3JvbGxCYXIpIHsKKworICAgICAgICAvL3NldExheW91dChuZXcgU2Nyb2xsQmFyTGF5b3V0KCkpOworCisgICAgICAgIGZIb3JpelNjcm9sbEJhciA9IGhvcml6U2Nyb2xsQmFyOworICAgICAgICBmVmVydFNjcm9sbEJhciA9IHZlcnRTY3JvbGxCYXI7CisKKyAgICAgICAgaWYgKGZWZXJ0U2Nyb2xsQmFyICE9IG51bGwpIHsKKyAgICAgICAgICAgIGZWZXJ0U2Nyb2xsQmFyLnNldFVuaXRJbmNyZW1lbnQoREVGQVVMVF9VTklUX0lOQyk7CisgICAgICAgICAgICBmVmVydFNjcm9sbEJhci5hZGRBZGp1c3RtZW50TGlzdGVuZXIodGhpcyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGZIb3JpelNjcm9sbEJhciAhPSBudWxsKSB7CisgICAgICAgICAgICBmSG9yaXpTY3JvbGxCYXIuc2V0VW5pdEluY3JlbWVudChERUZBVUxUX1VOSVRfSU5DKTsKKyAgICAgICAgICAgIGZIb3JpelNjcm9sbEJhci5hZGRBZGp1c3RtZW50TGlzdGVuZXIodGhpcyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRDbGllbnQoQ2xpZW50IGNsaWVudCkgeworCisgICAgICAgIGZDbGllbnQgPSBjbGllbnQ7CisgICAgICAgIGNsaWVudFNjcm9sbFNpemVDaGFuZ2VkKCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgYWRqdXN0bWVudFZhbHVlQ2hhbmdlZChBZGp1c3RtZW50RXZlbnQgZXZlbnQpIHsKKworICAgICAgICAvLyB2YXJpYWJsZSBub3QgdXNlZCBib29sZWFuIGhvcml6b250YWw7CisgICAgICAgIGlmIChldmVudC5nZXRBZGp1c3RhYmxlKCkgPT0gZkhvcml6U2Nyb2xsQmFyKSB7CisgICAgICAgICAgICBpbnQgdmVydFZhbCA9IGZWZXJ0U2Nyb2xsQmFyID09IG51bGw/IGZWZXJ0VmFsdWUgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZWZXJ0U2Nyb2xsQmFyLmdldFZhbHVlKCk7CisgICAgICAgICAgICBzY3JvbGxUbyhldmVudC5nZXRWYWx1ZSgpLCB2ZXJ0VmFsKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGludCBob3JpelZhbCA9IGZIb3JpelNjcm9sbEJhciA9PSBudWxsPyBmSG9yaXpWYWx1ZSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZkhvcml6U2Nyb2xsQmFyLmdldFZhbHVlKCk7CisgICAgICAgICAgICBzY3JvbGxUbyhob3JpelZhbCwgZXZlbnQuZ2V0VmFsdWUoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgc2V0VmFsdWVzKEFkanVzdGFibGUgc2Nyb2xsYmFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZpc2libGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWluaW11bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBoZWlnaHQpIHsKKworICAgICAgICBpbnQgbWF4aW11bSA9IG1pbmltdW0raGVpZ2h0OworICAgICAgICAKKyAgICAgICAgaWYgKHNjcm9sbGJhciAhPSBudWxsKSB7CisKKyAgICAgICAgICAgIENvbXBvbmVudCBzY3JvbGxiYXJUb28gPSAoQ29tcG9uZW50KSBzY3JvbGxiYXI7CisKKyAgICAgICAgICAgIGlmIChtYXhpbXVtIDw9IHZpc2libGUpIHsKKyAgICAgICAgICAgICAgICBzY3JvbGxiYXJUb28uc2V0RW5hYmxlZChmYWxzZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBzY3JvbGxiYXJUb28uc2V0RW5hYmxlZCh0cnVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgc2Nyb2xsYmFyLnNldE1pbmltdW0obWluaW11bSk7CisgICAgICAgICAgICBzY3JvbGxiYXIuc2V0TWF4aW11bShtYXhpbXVtKTsKKyAgICAgICAgICAgIHNjcm9sbGJhci5zZXRWaXNpYmxlQW1vdW50KHZpc2libGUpOworCSAgICAvLyB3b3JrYXJvdW5kIHNldEJsb2NrSW5jcmVtZW50IHdhcm5pbmdzIGZvciBpbmNyZW1lbnRzIDwgMQorCSAgICBzY3JvbGxiYXIuc2V0QmxvY2tJbmNyZW1lbnQoTWF0aC5tYXgoMSwgdmlzaWJsZSAtIERFRkFVTFRfVU5JVF9JTkMpKTsKKyAgICAgICAgfQorICAgIH0KKworCisgICAgcHVibGljIHZvaWQgY2xpZW50U2Nyb2xsU2l6ZUNoYW5nZWQoKQorICAgIHsKKyAgICAgICAgUmVjdGFuZ2xlIGJvdW5kcyA9IGZDbGllbnQuZ2V0Qm91bmRzKCk7CisgICAgICAgIFJlY3RhbmdsZSBwcmVmZXJyZWRTaXplID0gZkNsaWVudC5nZXRTY3JvbGxTaXplKCk7CisKKyAgICAgICAgc2V0VmFsdWVzKGZIb3JpelNjcm9sbEJhciwgYm91bmRzLndpZHRoLCBwcmVmZXJyZWRTaXplLngsIHByZWZlcnJlZFNpemUud2lkdGgpOworICAgICAgICBzZXRWYWx1ZXMoZlZlcnRTY3JvbGxCYXIsIGJvdW5kcy5oZWlnaHQsIHByZWZlcnJlZFNpemUueSwgcHJlZmVycmVkU2l6ZS5oZWlnaHQpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFBvc2l0aW9uKGludCB4LCBpbnQgeSkgeworCisgICAgICAgIGlmIChmSG9yaXpTY3JvbGxCYXIgIT0gbnVsbCkgeworICAgICAgICAgICAgZkhvcml6U2Nyb2xsQmFyLnNldFZhbHVlKHgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZkhvcml6VmFsdWUgPSB4OworICAgICAgICB9CisgICAgICAgIGlmIChmVmVydFNjcm9sbEJhciAhPSBudWxsKSB7CisgICAgICAgICAgICBmVmVydFNjcm9sbEJhci5zZXRWYWx1ZSh5KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZWZXJ0VmFsdWUgPSB5OworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHNjcm9sbFRvKGludCB4LCBpbnQgeSkKKyAgICB7CisgICAgICAgIGZDbGllbnQuc2Nyb2xsVG8oeCwgeSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0SG9yaXpMaW5lRGlzdGFuY2UoaW50IG5ld0Rpc3RhbmNlKQorICAgIHsKKyAgICAgICAgaWYgKGZIb3JpelNjcm9sbEJhciAhPSBudWxsKSB7CisgICAgICAgICAgICBmSG9yaXpTY3JvbGxCYXIuc2V0VW5pdEluY3JlbWVudChuZXdEaXN0YW5jZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRIb3JpelBhZ2VPdmVybGFwKGludCBuZXdPdmVybGFwKQorICAgIHsKKyAgICAgICAgaWYgKGZIb3JpelNjcm9sbEJhciAhPSBudWxsKSB7CisgICAgICAgICAgICBmSG9yaXpTY3JvbGxCYXIuc2V0QmxvY2tJbmNyZW1lbnQoIC8vIHdvcmthcm91bmQgd2FybmluZ3MgZm9yIHZhbHVlcyA8IDEgb24gdW5peAorICAgICAgICAgICAgICAgICAgICBNYXRoLm1heCgxLCBmSG9yaXpTY3JvbGxCYXIuZ2V0VmlzaWJsZUFtb3VudCgpLW5ld092ZXJsYXApKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFZlcnRMaW5lRGlzdGFuY2UoaW50IG5ld0Rpc3RhbmNlKQorICAgIHsKKyAgICAgICAgaWYgKGZWZXJ0U2Nyb2xsQmFyICE9IG51bGwpIHsKKyAgICAgICAgICAgIGZWZXJ0U2Nyb2xsQmFyLnNldFVuaXRJbmNyZW1lbnQobmV3RGlzdGFuY2UpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0VmVydFBhZ2VPdmVybGFwKGludCBuZXdPdmVybGFwKQorICAgIHsKKyAgICAgICAgaWYgKGZWZXJ0U2Nyb2xsQmFyICE9IG51bGwpIHsKKyAgICAgICAgICAgIGZWZXJ0U2Nyb2xsQmFyLnNldEJsb2NrSW5jcmVtZW50KCAvLyB3b3JrYXJvdW5kIHdhcm5pbmdzIGZvciB2YWx1ZXMgPCAxIG9uIHVuaXgKKyAgICAgICAgICAgICAgICAgICAgTWF0aC5tYXgoMSwgZlZlcnRTY3JvbGxCYXIuZ2V0VmlzaWJsZUFtb3VudCgpLW5ld092ZXJsYXApKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9TZWxlY3Rpb25EcmFnSW50ZXJhY3Rvci5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL1NlbGVjdGlvbkRyYWdJbnRlcmFjdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uN2Y5ZWQxZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9TZWxlY3Rpb25EcmFnSW50ZXJhY3Rvci5qYXZhCkBAIC0wLDAgKzEsMjA2IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBTZWxlY3Rpb25EcmFnSW50ZXJhY3Rvci5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjUxOjIzICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsOworCitpbXBvcnQgamF2YS50ZXh0LkJyZWFrSXRlcmF0b3I7CisKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5BY3Rpb25FdmVudDsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5Gb2N1c0V2ZW50OworaW1wb3J0IGphdmEuYXd0LmV2ZW50LktleUV2ZW50OworaW1wb3J0IGphdmEuYXd0LmV2ZW50Lk1vdXNlRXZlbnQ7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRmb3JtYXQuVGV4dE9mZnNldDsKKworZmluYWwgY2xhc3MgU2VsZWN0aW9uRHJhZ0ludGVyYWN0b3IgZXh0ZW5kcyBCZWhhdmlvciBpbXBsZW1lbnRzIFJ1bm5hYmxlIHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHJpdmF0ZSBUZXh0Q29tcG9uZW50IGZUZXh0Q29tcG9uZW50OworICAgIHByaXZhdGUgVGV4dFNlbGVjdGlvbiBmU2VsZWN0aW9uOworICAgIHByaXZhdGUgUnVuU3RyYXRlZ3kgZlJ1blN0cmF0ZWd5OworICAgIAorICAgIHByaXZhdGUgVGV4dE9mZnNldCBmQW5jaG9yU3RhcnQ7IC8vIGFsaWFzZXMgdGV4dCBvZmZzZXRzIC0gY2xpZW50IGJld2FyZQorICAgIHByaXZhdGUgVGV4dE9mZnNldCBmQW5jaG9yRW5kOworICAgIHByaXZhdGUgVGV4dE9mZnNldCBmQ3VycmVudDsKKworICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiBmV2FzWmVyb0xlbmd0aDsKKworICAgIHByaXZhdGUgaW50IGZDdXJyZW50WDsKKyAgICBwcml2YXRlIGludCBmQ3VycmVudFk7CisgICAgcHJpdmF0ZSBib29sZWFuIGZNb3VzZU91dHNpZGU7CisKKyAgICBwcml2YXRlIFRocmVhZCBmQXV0b3Njcm9sbFRocmVhZCA9IG51bGw7CisgICAgcHJpdmF0ZSBib29sZWFuIGZUaHJlYWRSdW4gPSB0cnVlOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IGtTY3JvbGxTbGVlcCA9IDMwMDsKKworICAgIHB1YmxpYyBTZWxlY3Rpb25EcmFnSW50ZXJhY3RvcihUZXh0U2VsZWN0aW9uIHNlbGVjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dENvbXBvbmVudCB0ZXh0Q29tcG9uZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdW5TdHJhdGVneSBydW5TdHJhdGVneSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCBhbmNob3JTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCBhbmNob3JFbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgY3VycmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluaXRpYWxYLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5pdGlhbFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gd2FzWmVyb0xlbmd0aCkgeworCisgICAgICAgIGZUZXh0Q29tcG9uZW50ID0gdGV4dENvbXBvbmVudDsKKyAgICAgICAgZlNlbGVjdGlvbiA9IHNlbGVjdGlvbjsKKyAgICAgICAgZlJ1blN0cmF0ZWd5ID0gcnVuU3RyYXRlZ3k7CisgICAgICAgIGZBbmNob3JTdGFydCA9IGFuY2hvclN0YXJ0OworICAgICAgICBmQW5jaG9yRW5kID0gYW5jaG9yRW5kOworICAgICAgICBmQ3VycmVudCA9IGN1cnJlbnQ7CisKKyAgICAgICAgZkN1cnJlbnRYID0gaW5pdGlhbFg7CisgICAgICAgIGZDdXJyZW50WSA9IGluaXRpYWxZOworICAgICAgICBmTW91c2VPdXRzaWRlID0gZmFsc2U7CisKKyAgICAgICAgZldhc1plcm9MZW5ndGggPSB3YXNaZXJvTGVuZ3RoOworICAgICAgICAKKyAgICAgICAgc2V0U2VsZWN0aW9uKCk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBib29sZWFuIHRleHRDb250cm9sRXZlbnRPY2N1cnJlZChCZWhhdmlvci5FdmVudFR5cGUgZXZlbnQsIE9iamVjdCB3aGF0KSB7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gZm9jdXNHYWluZWQoRm9jdXNFdmVudCBldmVudCkgeworCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGZvY3VzTG9zdChGb2N1c0V2ZW50IGV2ZW50KSB7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4ga2V5UHJlc3NlZChLZXlFdmVudCBldmVudCkgeworCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGtleVR5cGVkKEtleUV2ZW50IGV2ZW50KSB7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4ga2V5UmVsZWFzZWQoS2V5RXZlbnQgZXZlbnQpIHsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIGJvb2xlYW4gbW91c2VEcmFnZ2VkKE1vdXNlRXZlbnQgZSkgeworCisgICAgICAgIGludCB4ID0gZS5nZXRYKCksIHkgPSBlLmdldFkoKTsKKyAgICAgICAgaWYgKGZDdXJyZW50WCAhPSB4IHx8IGZDdXJyZW50WSAhPSB5KSB7CisgICAgICAgICAgICBmQ3VycmVudFggPSB4OworICAgICAgICAgICAgZkN1cnJlbnRZID0geTsKKyAgICAgICAgICAgIHByb2Nlc3NNb3VzZUxvY2F0aW9uKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcHVibGljIHN5bmNocm9uaXplZCBib29sZWFuIG1vdXNlRW50ZXIoTW91c2VFdmVudCBlKSB7CisKKyAgICAgICAgZk1vdXNlT3V0c2lkZSA9IGZhbHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIGJvb2xlYW4gbW91c2VFeGl0ZWQoTW91c2VFdmVudCBlKSB7CisKKyAgICAgICAgaWYgKGZBdXRvc2Nyb2xsVGhyZWFkID09IG51bGwpIHsKKyAgICAgICAgICAgIGZBdXRvc2Nyb2xsVGhyZWFkID0gbmV3IFRocmVhZCh0aGlzKTsKKyAgICAgICAgICAgIGZBdXRvc2Nyb2xsVGhyZWFkLnN0YXJ0KCk7CisgICAgICAgIH0KKyAgICAgICAgZk1vdXNlT3V0c2lkZSA9IHRydWU7CisgICAgICAgIG5vdGlmeSgpOworCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgYm9vbGVhbiBtb3VzZVJlbGVhc2VkKE1vdXNlRXZlbnQgZSkgeworCisgICAgICAgIGZNb3VzZU91dHNpZGUgPSBmYWxzZTsKKyAgICAgICAgZlRocmVhZFJ1biA9IGZhbHNlOworICAgICAgICBpZiAoZkF1dG9zY3JvbGxUaHJlYWQgIT0gbnVsbCkgeworICAgICAgICAgICAgZkF1dG9zY3JvbGxUaHJlYWQuaW50ZXJydXB0KCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJlbW92ZUZyb21Pd25lcigpOworICAgICAgICBib29sZWFuIGlzWmVyb0xlbmd0aCA9IFRleHRTZWxlY3Rpb24ucmFuZ2VJc1plcm9MZW5ndGgoZkFuY2hvclN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZkFuY2hvckVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZDdXJyZW50KTsKKyAgICAgICAgZlNlbGVjdGlvbi5tb3VzZVJlbGVhc2VkKGlzWmVyb0xlbmd0aCAhPSBmV2FzWmVyb0xlbmd0aCk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHByb2Nlc3NNb3VzZUxvY2F0aW9uKCkgeworCisgICAgICAgIGZUZXh0Q29tcG9uZW50LnNjcm9sbFRvU2hvdyhmQ3VycmVudFgsIGZDdXJyZW50WSk7CisgICAgICAgIGZUZXh0Q29tcG9uZW50LnBvaW50VG9UZXh0T2Zmc2V0KGZDdXJyZW50LCBmQ3VycmVudFgsIGZDdXJyZW50WSwgbnVsbCwgdHJ1ZSk7CisgICAgICAgIHNldFNlbGVjdGlvbigpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBzZXRTZWxlY3Rpb24oKSB7CisKKyAgICAgICAgaWYgKGZDdXJyZW50LmdyZWF0ZXJUaGFuKGZBbmNob3JFbmQpKSB7CisgICAgICAgICAgICBmU2VsZWN0aW9uLmFkdmFuY2VUb05leHRCb3VuZGFyeShmQ3VycmVudCk7CisgICAgICAgICAgICBmU2VsZWN0aW9uLnNldFNlbFJhbmdlQW5kRHJhdyhmQW5jaG9yU3RhcnQsIGZDdXJyZW50LCBmQW5jaG9yU3RhcnQpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGZDdXJyZW50Lmxlc3NUaGFuKGZBbmNob3JTdGFydCkpIHsKKyAgICAgICAgICAgIGZTZWxlY3Rpb24uYWR2YW5jZVRvUHJldmlvdXNCb3VuZGFyeShmQ3VycmVudCk7CisgICAgICAgICAgICBmU2VsZWN0aW9uLnNldFNlbFJhbmdlQW5kRHJhdyhmQ3VycmVudCwgZkFuY2hvckVuZCwgZkFuY2hvclN0YXJ0KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZDdXJyZW50LmFzc2lnbihmQW5jaG9yRW5kKTsKKyAgICAgICAgICAgIGZTZWxlY3Rpb24uc2V0U2VsUmFuZ2VBbmREcmF3KGZBbmNob3JTdGFydCwgZkFuY2hvckVuZCwgZkFuY2hvclN0YXJ0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKworICAgICAgICBSdW5uYWJsZSBkb01vdXNlTG9jID0gbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgIHByb2Nlc3NNb3VzZUxvY2F0aW9uKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICB3aGlsZSAoZlRocmVhZFJ1bikgeworCisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIFRocmVhZC5zbGVlcChrU2Nyb2xsU2xlZXApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2F0Y2goSW50ZXJydXB0ZWRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIHJldHVybjsgLy8ganVzdCBxdWl0IHNjcm9sbGluZworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzeW5jaHJvbml6ZWQodGhpcykgeworCisgICAgICAgICAgICAgICAgd2hpbGUgKCFmTW91c2VPdXRzaWRlKSB7CisgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICB3YWl0KCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgY2F0Y2goSW50ZXJydXB0ZWRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBqdXN0IHF1aXQgc2Nyb2xsaW5nCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBmUnVuU3RyYXRlZ3kuZG9JdChkb01vdXNlTG9jKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9TaW1wbGVDb21tYW5kTG9nLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvU2ltcGxlQ29tbWFuZExvZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmE4NDhkMTdlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL1NpbXBsZUNvbW1hbmRMb2cuamF2YQpAQCAtMCwwICsxLDE3NyBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogU2ltcGxlQ29tbWFuZExvZy5qYXZhLHYgJCAkUmV2aXNpb246IDEuMiAkICREYXRlOiAyMDAxLzEwLzMwIDAyOjQyOjQ4ICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsOworCitmaW5hbCBjbGFzcyBTaW1wbGVDb21tYW5kTG9nIHsKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHByaXZhdGUgQ29tbWFuZCBmTGFzdENvbW1hbmQgPSBudWxsOworICAgIHByaXZhdGUgQ29tbWFuZCBmQ3VycmVudENvbW1hbmQgPSBudWxsOworICAgIHByaXZhdGUgUGFuZWxFdmVudEJyb2FkY2FzdGVyIGZMaXN0ZW5lcjsKKworICAgIHByaXZhdGUgYm9vbGVhbiBmQmFzZUlzTW9kaWZpZWQ7CisKKyAgICBwcml2YXRlIGludCBmTG9nU2l6ZSA9IDE0OworCisgICAgcHVibGljIFNpbXBsZUNvbW1hbmRMb2coUGFuZWxFdmVudEJyb2FkY2FzdGVyIGxpc3RlbmVyKSB7CisgICAgICAgIGZMaXN0ZW5lciA9IGxpc3RlbmVyOworICAgICAgICBmQmFzZUlzTW9kaWZpZWQgPSBmYWxzZTsKKyAgICB9CisKKyAgICAvKiogYWRkcyB0aGUgc3BlY2ZpZWQgY29tbWFuZCB0byB0aGUgdG9wIG9mIHRoZSBjb21tYW5kIHN0YWNrCisgICAgKiAoYW55IHVuZG9uZSBjb21tYW5kcyBvbiB0aGUgc3RhY2sgYXJlIHJlbW92ZWQpCisgICAgKiBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgdGhlIGNvbW1hbmQgaGFzIGFscmVhZHkgYmVlbiBleGVjdXRlZCAoaS5lLiwgaXRzIGV4ZWN1dGUoKSBtZXRob2QKKyAgICAqIGhhcyBiZWVuIGNhbGxlZCwgb3IgYW4gZXF1aXZhbGVudCBhY3Rpb24gaGFzIGJlZW4gdGFrZW4pICovCisgICAgdm9pZCBhZGQoQ29tbWFuZCBuZXdDb21tYW5kKSB7CisgICAgICAgIC8vIGlmIHRoZXJlIGFyZSBjb21tYW5kcyBvbiB0aGUgc3RhY2sgdGhhdCBoYXZlIGJlZW4gdW5kb25lLCB0aGV5IGFyZQorICAgICAgICAvLyBkcm9wcGVkIG9uIHRoZSBmbG9vciBoZXJlCisgICAgICAgIG5ld0NvbW1hbmQuc2V0UHJldmlvdXNDb21tYW5kKGZDdXJyZW50Q29tbWFuZCk7CisgICAgICAgIAorICAgICAgICBmaW5hbCBDb21tYW5kIG9sZExhc3RDb21tYW5kID0gZkxhc3RDb21tYW5kOworICAgICAgICBmTGFzdENvbW1hbmQgPSBudWxsOworICAgICAgICAKKyAgICAgICAgZkN1cnJlbnRDb21tYW5kID0gbmV3Q29tbWFuZDsKKyAgICAgICAgbGltaXRDb21tYW5kcyhmTG9nU2l6ZSk7CisgICAgICAgIAorICAgICAgICBpZiAob2xkTGFzdENvbW1hbmQgIT0gbnVsbCkgeworICAgICAgICAgICAgZkxpc3RlbmVyLnRleHRTdGF0ZUNoYW5nZWQoVGV4dFBhbmVsRXZlbnQuVU5ET19TVEFURV9DSEFOR0VEKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIElmIHRoZSBjb21tYW5kIGxpc3QgaXMgbG9uZ2VyIHRoYW4gbG9nU2l6ZSwgdHJ1bmNhdGUgaXQuCisgICAgICogVGhpcyBtZXRob2QgdHJhdmVyc2VzIHRoZSBsaXN0IGVhY2ggdGltZSwgYW5kIGlzIG5vdCBhIG1vZGVsCisgICAgICogb2YgZWZmaWNpZW5jeS4gIEl0J3MgYSB0ZW1wb3Jhcnkgd2F5IHRvIHBsdWcgdGhpcyBtZW1vcnkgbGVhaworICAgICAqIHVudGlsIEkgY2FuIGltcGxlbWVudCBhIGJvdW5kZWQgY29tbWFuZCBsb2cuCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIGxpbWl0Q29tbWFuZHMoaW50IGxvZ1NpemUpIHsKKworICAgICAgICBpZiAobG9nU2l6ZSA9PSAwKSB7CisgICAgICAgICAgICBmQ3VycmVudENvbW1hbmQgPSBudWxsOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgQ29tbWFuZCBjdXJyZW50Q29tbWFuZCA9IGZDdXJyZW50Q29tbWFuZDsKKyAgICAgICAgICAgIGludCByZW1haW5pbmcgPSBsb2dTaXplLTE7CisgICAgICAgICAgICB3aGlsZSAoY3VycmVudENvbW1hbmQgIT0gbnVsbCAmJiByZW1haW5pbmcgPiAwKSB7CisgICAgICAgICAgICAgICAgY3VycmVudENvbW1hbmQgPSBjdXJyZW50Q29tbWFuZC5wcmV2aW91c0NvbW1hbmQoKTsKKyAgICAgICAgICAgICAgICByZW1haW5pbmcgLT0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjdXJyZW50Q29tbWFuZCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgY3VycmVudENvbW1hbmQuc2V0UHJldmlvdXNDb21tYW5kKG51bGwpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqIGFkZHMgdGhlIHNwZWNmaWVkIGNvbW1hbmQgdG8gdGhlIHRvcCBvZiB0aGUgY29tbWFuZCBzdGFjayBhbmQgZXhlY3V0ZXMgaXQgKi8KKyAgICB2b2lkIGFkZEFuZERvKENvbW1hbmQgbmV3Q29tbWFuZCkgeworICAgICAgICBhZGQobmV3Q29tbWFuZCk7CisgICAgICAgIG5ld0NvbW1hbmQuZXhlY3V0ZSgpOworCisgICAgICAgIGZMaXN0ZW5lci50ZXh0U3RhdGVDaGFuZ2VkKFRleHRQYW5lbEV2ZW50LlVORE9fU1RBVEVfQ0hBTkdFRCk7CisgICAgfQorCisgICAgLyoqIHVuZG9lcyB0aGUgY29tbWFuZCBvbiB0aGUgdG9wIG9mIHRoZSBjb21tYW5kIHN0YWNrLCBpZiB0aGVyZSBpcyBvbmUgKi8KKyAgICB2b2lkIHVuZG8oKSB7CisgICAgICAgIGlmIChmQ3VycmVudENvbW1hbmQgIT0gbnVsbCkgeworICAgICAgICAgICAgQ29tbWFuZCBjdXJyZW50ID0gZkN1cnJlbnRDb21tYW5kOworICAgICAgICAgICAgY3VycmVudC51bmRvKCk7CisKKyAgICAgICAgICAgIGZDdXJyZW50Q29tbWFuZCA9IGN1cnJlbnQucHJldmlvdXNDb21tYW5kKCk7CisKKyAgICAgICAgICAgIGN1cnJlbnQuc2V0UHJldmlvdXNDb21tYW5kKGZMYXN0Q29tbWFuZCk7CisgICAgICAgICAgICBmTGFzdENvbW1hbmQgPSBjdXJyZW50OworCisgICAgICAgICAgICBmTGlzdGVuZXIudGV4dFN0YXRlQ2hhbmdlZChUZXh0UGFuZWxFdmVudC5VTkRPX1NUQVRFX0NIQU5HRUQpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqIHJlZG9lcyB0aGUgbGFzdCB1bmRvbmUgY29tbWFuZCBvbiB0aGUgY29tbWFuZCBzdGFjaywgaWYgdGhlcmUgYXJlIGFueSAqLworICAgIHZvaWQgcmVkbygpIHsKKyAgICAgICAgaWYgKGZMYXN0Q29tbWFuZCAhPSBudWxsKSB7CisgICAgICAgICAgICBDb21tYW5kIGxhc3QgPSBmTGFzdENvbW1hbmQ7CisgICAgICAgICAgICBsYXN0LnJlZG8oKTsKKworICAgICAgICAgICAgZkxhc3RDb21tYW5kID0gbGFzdC5wcmV2aW91c0NvbW1hbmQoKTsKKworICAgICAgICAgICAgbGFzdC5zZXRQcmV2aW91c0NvbW1hbmQoZkN1cnJlbnRDb21tYW5kKTsKKyAgICAgICAgICAgIGZDdXJyZW50Q29tbWFuZCA9IGxhc3Q7CisKKyAgICAgICAgICAgIGZMaXN0ZW5lci50ZXh0U3RhdGVDaGFuZ2VkKFRleHRQYW5lbEV2ZW50LlVORE9fU1RBVEVfQ0hBTkdFRCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBjYW5VbmRvKCkgeworICAgICAgICByZXR1cm4gZkN1cnJlbnRDb21tYW5kICE9IG51bGw7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gY2FuUmVkbygpIHsKKyAgICAgICAgcmV0dXJuIGZMYXN0Q29tbWFuZCAhPSBudWxsOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGlzTW9kaWZpZWQoKSB7CisKKyAgICAgICAgaWYgKGZDdXJyZW50Q29tbWFuZCA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gZkJhc2VJc01vZGlmaWVkOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGZDdXJyZW50Q29tbWFuZC5pc01vZGlmaWVkKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRNb2RpZmllZChib29sZWFuIG1vZGlmaWVkKSB7CisKKyAgICAgICAgaWYgKGZDdXJyZW50Q29tbWFuZCA9PSBudWxsKSB7CisgICAgICAgICAgICBmQmFzZUlzTW9kaWZpZWQgPSBtb2RpZmllZDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZDdXJyZW50Q29tbWFuZC5zZXRNb2RpZmllZChtb2RpZmllZCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBjbGVhckxvZygpIHsKKworICAgICAgICBpZiAoZkN1cnJlbnRDb21tYW5kICE9IG51bGwpIHsKKyAgICAgICAgICAgIGZCYXNlSXNNb2RpZmllZCA9IGZDdXJyZW50Q29tbWFuZC5pc01vZGlmaWVkKCk7CisgICAgICAgIH0KKyAgICAgICAgLy8gdmFyaWFibGUgbm90IHVzZWQgYm9vbGVhbiBjaGFuZ2VkID0gZkN1cnJlbnRDb21tYW5kICE9IG51bGwgfHwgZkxhc3RDb21tYW5kICE9IG51bGw7CisgICAgICAgIGZDdXJyZW50Q29tbWFuZCA9IG51bGw7CisgICAgICAgIGZMYXN0Q29tbWFuZCA9IG51bGw7CisgICAgICAgIAorICAgICAgICBmTGlzdGVuZXIudGV4dFN0YXRlQ2hhbmdlZChUZXh0UGFuZWxFdmVudC5VTkRPX1NUQVRFX0NIQU5HRUQpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldExvZ1NpemUoaW50IHNpemUpIHsKKworICAgICAgICBpZiAoc2l6ZSA8IDApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImxvZyBzaXplIGNhbm5vdCBiZSBuZWdhdGl2ZSIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoc2l6ZSA8IGZMb2dTaXplKSB7CisgICAgICAgICAgICBsaW1pdENvbW1hbmRzKHNpemUpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmTG9nU2l6ZSA9IHNpemU7CisgICAgICAgIAorICAgICAgICBpZiAoZkxhc3RDb21tYW5kICE9IG51bGwgfHwgc2l6ZSA9PSAwKSB7CisgICAgICAgICAgICBmTGFzdENvbW1hbmQgPSBudWxsOworICAgICAgICAgICAgZkxpc3RlbmVyLnRleHRTdGF0ZUNoYW5nZWQoVGV4dFBhbmVsRXZlbnQuVU5ET19TVEFURV9DSEFOR0VEKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBpbnQgZ2V0TG9nU2l6ZSgpIHsKKworICAgICAgICByZXR1cm4gZkxvZ1NpemU7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL1N0eWxlQ2hhbmdlQ29tbWFuZC5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL1N0eWxlQ2hhbmdlQ29tbWFuZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjg0NzcxYWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvU3R5bGVDaGFuZ2VDb21tYW5kLmphdmEKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogU3R5bGVDaGFuZ2VDb21tYW5kLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NTE6MjMgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWw7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuU3R5bGVNb2RpZmllcjsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuTUNvbnN0VGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuTVRleHQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0Zm9ybWF0LlRleHRPZmZzZXQ7CisKK2NsYXNzIFN0eWxlQ2hhbmdlQ29tbWFuZCBleHRlbmRzIFRleHRDb21tYW5kIHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHJpdmF0ZSBib29sZWFuIGZDaGFyYWN0ZXI7CisgICAgcHJpdmF0ZSBTdHlsZU1vZGlmaWVyIGZNb2RpZmllcjsKKworICAgIHB1YmxpYyBTdHlsZUNoYW5nZUNvbW1hbmQoVGV4dEVkaXRCZWhhdmlvciBiZWhhdmlvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1UZXh0IG9yaWdpbmFsVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgc2VsU3RhcnRCZWZvcmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IHNlbEVuZEJlZm9yZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0eWxlTW9kaWZpZXIgbW9kaWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGNoYXJhY3RlcikgeworCisgICAgICAgIHN1cGVyKGJlaGF2aW9yLCBvcmlnaW5hbFRleHQsIHNlbFN0YXJ0QmVmb3JlLmZPZmZzZXQsIHNlbFN0YXJ0QmVmb3JlLCBzZWxFbmRCZWZvcmUpOworICAgICAgICBmTW9kaWZpZXIgPSBtb2RpZmllcjsKKyAgICAgICAgZkNoYXJhY3RlciA9IGNoYXJhY3RlcjsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50IGFmZmVjdGVkUmFuZ2VFbmQoKSB7CisgICAgICAgIHJldHVybiBmU2VsRW5kQmVmb3JlLmZPZmZzZXQ7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgZXhlY3V0ZSgpIHsKKyAgICAgICAgZkJlaGF2aW9yLmRvTW9kaWZ5U3R5bGVzKGZBZmZlY3RlZFJhbmdlU3RhcnQsIGZTZWxFbmRCZWZvcmUuZk9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZNb2RpZmllciwgZkNoYXJhY3RlciwgZlNlbFN0YXJ0QmVmb3JlLCBmU2VsRW5kQmVmb3JlKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvU3R5bGVkVGV4dENsaXBib2FyZC5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL1N0eWxlZFRleHRDbGlwYm9hcmQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4zYTU1ZmI5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL1N0eWxlZFRleHRDbGlwYm9hcmQuamF2YQpAQCAtMCwwICsxLDIxOSBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogU3R5bGVkVGV4dENsaXBib2FyZC5qYXZhLHYgJCAkUmV2aXNpb246IDEuMiAkICREYXRlOiAyMDAyLzAyLzE2IDAzOjA2OjQ3ICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsOworCitpbXBvcnQgamF2YS5hd3QuZGF0YXRyYW5zZmVyLkNsaXBib2FyZDsKK2ltcG9ydCBqYXZhLmF3dC5kYXRhdHJhbnNmZXIuQ2xpcGJvYXJkT3duZXI7CitpbXBvcnQgamF2YS5hd3QuZGF0YXRyYW5zZmVyLlRyYW5zZmVyYWJsZTsKK2ltcG9ydCBqYXZhLmF3dC5kYXRhdHJhbnNmZXIuRGF0YUZsYXZvcjsKK2ltcG9ydCBqYXZhLmF3dC5kYXRhdHJhbnNmZXIuVW5zdXBwb3J0ZWRGbGF2b3JFeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOworCitpbXBvcnQgamF2YS5hd3QuVG9vbGtpdDsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZU1hcDsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NQ29uc3RUZXh0OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5TdHlsZWRUZXh0OworCisvKioKKyogV3JhcHBlciBmb3IgamF2YS5hd3QuZGF0YXRyYW5zZmVyLkNsaXBib2FyZAorKiBQYWNrYWdlcyBhbiBNQ29uc3RUZXh0IGluIGEgdHJhbnNmZXJhYmxlLCBhbmQgcHV0cyBpdCBvbiB0aGUgY2xpcGJvYXJkLgorKi8KKworY2xhc3MgU3R5bGVkVGV4dENsaXBib2FyZCBpbXBsZW1lbnRzIENsaXBib2FyZE93bmVyIHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgLy8gVGhpcyBjbGFzcyBoYXMgYSB3b3JrYXJvdW5kIGZvciBhIGJ1ZyBpbiB0aGUgV2luZG93cyBzeXN0ZW0gY2xpcGJvYXJkLgorICAgIC8vIFRoZSBzeXN0ZW0gY2xpcGJvYXJkIHdpbGwgb25seSByZXR1cm4gU3RyaW5nIGNvbnRlbnQsIGV2ZW4KKyAgICAvLyB0aG91Z2ggaXQgaGFzIGEgcmVmZXJlbmNlIHRvIHRoZSBjb250ZW50cy4gIFNvIGlmIG91cgorICAgIC8vIGNsaXBib2FyZCBpcyB0aGUgc3lzdGVtIGNsaXBib2FyZCwgd2UnbGwga2VlcCBhIHJlZmVyZW5jZQorICAgIC8vIHRvIHRoZSBjb250ZW50IGFuZCB1c2UgdGhhdCBpbnN0ZWFkIG9mIHdoYXQgdGhlIENsaXBib2FyZCByZXR1cm5zLgorCisgICAgcHJpdmF0ZSBzdGF0aWMgQ2xpcGJvYXJkIFNZU1RFTSA9IG51bGw7CisgICAgc3RhdGljIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFNZU1RFTSA9IFRvb2xraXQuZ2V0RGVmYXVsdFRvb2xraXQoKS5nZXRTeXN0ZW1DbGlwYm9hcmQoKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaChUaHJvd2FibGUgdGgpIHsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIFN0eWxlZFRleHRDbGlwYm9hcmQgZmdTeXN0ZW1DbGlwYm9hcmQgPSBudWxsOworCisgICAgcHVibGljIHN0YXRpYyBTdHlsZWRUZXh0Q2xpcGJvYXJkIGdldENsaXBib2FyZEZvcihDbGlwYm9hcmQgY2xpcGJvYXJkKSB7CisKKyAgICAgICAgaWYgKGNsaXBib2FyZCA9PSBTWVNURU0gJiYgU1lTVEVNICE9IG51bGwpIHsKKyAgICAgICAgICAgIHN5bmNocm9uaXplZChTWVNURU0pIHsKKyAgICAgICAgICAgICAgICBpZiAoZmdTeXN0ZW1DbGlwYm9hcmQgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBmZ1N5c3RlbUNsaXBib2FyZCA9IG5ldyBTdHlsZWRUZXh0Q2xpcGJvYXJkKFNZU1RFTSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGZnU3lzdGVtQ2xpcGJvYXJkOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBTdHlsZWRUZXh0Q2xpcGJvYXJkKGNsaXBib2FyZCwgZmFsc2UpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBDbGlwYm9hcmQgZkNsaXBib2FyZDsKKyAgICBwcml2YXRlIGJvb2xlYW4gZlVzZUxvY2FsQ29udGVudHM7CisgICAgcHJpdmF0ZSBUcmFuc2ZlcmFibGUgZkNvbnRlbnRzID0gbnVsbDsKKworICAgIHByaXZhdGUgU3R5bGVkVGV4dENsaXBib2FyZChDbGlwYm9hcmQgY2xpcGJvYXJkLCBib29sZWFuIHVzZUxvY2FsQ29udGVudHMpIHsKKworICAgICAgICBpZiAoY2xpcGJvYXJkID09IG51bGwpIHsKKyAgICAgICAgICAgIGZDbGlwYm9hcmQgPSBuZXcgQ2xpcGJvYXJkKCJUZXh0UGFuZWwgY2xpcGJvYXJkIik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBmQ2xpcGJvYXJkID0gY2xpcGJvYXJkOworICAgICAgICB9CisKKyAgICAgICAgZlVzZUxvY2FsQ29udGVudHMgPSB1c2VMb2NhbENvbnRlbnRzOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGxvc3RPd25lcnNoaXAoQ2xpcGJvYXJkIGNsaXBib2FyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZmVyYWJsZSBjb250ZW50cykgeworICAgICAgICBpZiAoY29udGVudHMgPT0gZkNvbnRlbnRzKSB7CisgICAgICAgICAgICB0aGlzLmZDb250ZW50cyA9IG51bGw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRDb250ZW50cyhNQ29uc3RUZXh0IG5ld0NvbnRlbnRzKSB7CisKKyAgICAgICAgVHJhbnNmZXJhYmxlVGV4dCBjb250ZW50cyA9IG5ldyBUcmFuc2ZlcmFibGVUZXh0KG5ld0NvbnRlbnRzKTsKKyAgICAgICAgaWYgKGZDbGlwYm9hcmQgPT0gU1lTVEVNKSB7CisgICAgICAgICAgICBmQ29udGVudHMgPSBjb250ZW50czsKKyAgICAgICAgfQorICAgICAgICBmQ2xpcGJvYXJkLnNldENvbnRlbnRzKGNvbnRlbnRzLCB0aGlzKTsKKyAgICB9CisKKyAgICBwcml2YXRlIFRyYW5zZmVyYWJsZSBnZXRDbGlwYm9hcmRDb250ZW50cygpIHsKKworICAgICAgICBpZiAoZlVzZUxvY2FsQ29udGVudHMgJiYgZkNvbnRlbnRzICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBmQ29udGVudHM7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZkNsaXBib2FyZC5nZXRDb250ZW50cyh0aGlzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBIYXMgY29udGVudHMgLSBmYXN0ZXIgdGhhbiBnZXRDb250ZW50cyBmb3IgZmluZGluZyBvdXQgd2hldGhlciB0aGUKKyAgICAgKiBjbGlwYm9hcmQgaGFzIHRleHQuCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaGFzQ29udGVudHMoKSB7CisKKyAgICAgICAgVHJhbnNmZXJhYmxlIGNvbnRlbnRzID0gZ2V0Q2xpcGJvYXJkQ29udGVudHMoKTsKKworICAgICAgICBpZiAoY29udGVudHMgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGNvbnRlbnRzLmlzRGF0YUZsYXZvclN1cHBvcnRlZChNQ29uc3RUZXh0LnN0eWxlZFRleHRGbGF2b3IpIHx8CisgICAgICAgICAgICAgICBjb250ZW50cy5pc0RhdGFGbGF2b3JTdXBwb3J0ZWQoRGF0YUZsYXZvci5zdHJpbmdGbGF2b3IpIHx8CisgICAgICAgICAgICAgICBjb250ZW50cy5pc0RhdGFGbGF2b3JTdXBwb3J0ZWQoRGF0YUZsYXZvci5wbGFpblRleHRGbGF2b3IpOworICAgIH0KKworICAgIHByaXZhdGUgU3RyaW5nIGdldFN0cmluZyhJbnB1dFN0cmVhbSBpblN0cmVhbSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKworICAgICAgICBTdHJpbmcgdmFsdWUgPSBuZXcgU3RyaW5nKCk7CisgICAgICAgIGludCBieXRlc1JlYWQ7CisKKyAgICAgICAgZG8geworICAgICAgICAgICAgYnl0ZSBpbkJ5dGVzW10gPSBuZXcgYnl0ZVtpblN0cmVhbS5hdmFpbGFibGUoKV07CisgICAgICAgICAgICBieXRlc1JlYWQgPSBpblN0cmVhbS5yZWFkKGluQnl0ZXMpOworCisgICAgICAgICAgICBpZiAoYnl0ZXNSZWFkICE9IC0xKQorICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUgKyBuZXcgU3RyaW5nKGluQnl0ZXMpOworCisgICAgICAgIH0gd2hpbGUgKGJ5dGVzUmVhZCAhPSAtMSk7CisKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KKworICAgIC8qKgorICAgICAqIElmIHRoZSBDbGlwYm9hcmQgaGFzIHRleHQgY29udGVudCwgcmV0dXJuIGl0IGFzIGFuCisgICAgICogTUNvbnN0VGV4dC4gIE90aGVyd2lzZSByZXR1cm4gbnVsbC4KKyAgICAgKiBAcGFyYW0gZGVmYXVsdFN0eWxlIHRoZSBzdHlsZSB0byBhcHBseSB0byB1bnN0eWxlZAorICAgICAqICAgICAgdGV4dCAoc3VjaCBhcyBhIFN0cmluZykuICBJZiB0aGUgY2xpcGJvYXJkCisgICAgICogICAgICBoYXMgc3R5bGVkIHRleHQgdGhpcyBwYXJhbWV0ZXIgaXMgbm90IHVzZWQuCisgICAgICovCisgICAgcHVibGljIE1Db25zdFRleHQgZ2V0Q29udGVudHMoQXR0cmlidXRlTWFwIGRlZmF1bHRTdHlsZSkgeworCisgICAgICAgIFRyYW5zZmVyYWJsZSBjb250ZW50cyA9IGdldENsaXBib2FyZENvbnRlbnRzKCk7CisKKyAgICAgICAgaWYgKGNvbnRlbnRzID09IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgRGF0YUZsYXZvciBmbGF2b3JzW10gPSBjb250ZW50cy5nZXRUcmFuc2ZlckRhdGFGbGF2b3JzKCk7CisKKyAgICAgICAgLy8gc2VhcmNoIGZsYXZvcnMgZm9yIG91ciBmbGF2b3IsIFN0cmluZyBmbGF2b3IgYW5kIHJhdyB0ZXh0IGZsYXZvcgorCisgICAgICAgIEV4Y2VwdGlvbiBleCA9IG51bGw7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgaW50IGk7CisKKyAgICAgICAgICAgIGZvciAoaT0wOyBpIDwgZmxhdm9ycy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIGlmIChmbGF2b3JzW2ldLmVxdWFscyhNQ29uc3RUZXh0LnN0eWxlZFRleHRGbGF2b3IpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGkgPCBmbGF2b3JzLmxlbmd0aCkgeworCisgICAgICAgICAgICAgICAgT2JqZWN0IGRhdGEgPSBjb250ZW50cy5nZXRUcmFuc2ZlckRhdGEoTUNvbnN0VGV4dC5zdHlsZWRUZXh0Rmxhdm9yKTsKKyAgICAgICAgICAgICAgICBpZiAoZGF0YSA9PSBudWxsKQorICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkRhdGEgaXMgbnVsbC4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gKE1Db25zdFRleHQpIGRhdGE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAoaT0wOyBpIDwgZmxhdm9ycy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIGlmIChmbGF2b3JzW2ldLmVxdWFscyhEYXRhRmxhdm9yLnN0cmluZ0ZsYXZvcikpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaSA8IGZsYXZvcnMubGVuZ3RoKSB7CisKKyAgICAgICAgICAgICAgICBPYmplY3QgZGF0YSA9IGNvbnRlbnRzLmdldFRyYW5zZmVyRGF0YShEYXRhRmxhdm9yLnN0cmluZ0ZsYXZvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTdHlsZWRUZXh0KChTdHJpbmcpIGRhdGEsIGRlZmF1bHRTdHlsZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAoaT0wOyBpIDwgZmxhdm9ycy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIGlmIChmbGF2b3JzW2ldLmVxdWFscyhEYXRhRmxhdm9yLnBsYWluVGV4dEZsYXZvcikpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaSA8IGZsYXZvcnMubGVuZ3RoKSB7CisKKyAgICAgICAgICAgICAgICBPYmplY3QgZGF0YSA9IGNvbnRlbnRzLmdldFRyYW5zZmVyRGF0YShEYXRhRmxhdm9yLnBsYWluVGV4dEZsYXZvcik7CisKKyAgICAgICAgICAgICAgICBTdHJpbmcgdGV4dFN0cmluZyA9IGdldFN0cmluZygoSW5wdXRTdHJlYW0pIGRhdGEpOworICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU3R5bGVkVGV4dCh0ZXh0U3RyaW5nLCBkZWZhdWx0U3R5bGUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhdGNoKFVuc3VwcG9ydGVkRmxhdm9yRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGV4ID0gZTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaChJT0V4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBleCA9IGU7CisgICAgICAgIH0KKworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkV4Y2VwdGlvbiB3aGVuIHJldHJpZXZpbmcgZGF0YS4gIEV4Y2VwdGlvbjoiICsgZXgpOworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvVGV4dENoYW5nZUNvbW1hbmQuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9UZXh0Q2hhbmdlQ29tbWFuZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjRmOGJhYjcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvVGV4dENoYW5nZUNvbW1hbmQuamF2YQpAQCAtMCwwICsxLDgxIEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBUZXh0Q2hhbmdlQ29tbWFuZC5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjUxOjIzICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1Db25zdFRleHQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1UZXh0OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGZvcm1hdC5UZXh0T2Zmc2V0OworCitjbGFzcyBUZXh0Q2hhbmdlQ29tbWFuZCBleHRlbmRzIFRleHRDb21tYW5kIHsKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHByaXZhdGUgTUNvbnN0VGV4dCBmTmV3VGV4dDsKKyAgICBwcml2YXRlIFRleHRPZmZzZXQgZlNlbFN0YXJ0QWZ0ZXI7CisgICAgcHJpdmF0ZSBUZXh0T2Zmc2V0IGZTZWxFbmRBZnRlcjsKKworICAgIHB1YmxpYyBUZXh0Q2hhbmdlQ29tbWFuZChUZXh0RWRpdEJlaGF2aW9yIGJlaGF2aW9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNVGV4dCBvcmlnaW5hbFRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1Db25zdFRleHQgbmV3VGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFmZmVjdGVkUmFuZ2VTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCBzZWxTdGFydEJlZm9yZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCBzZWxFbmRCZWZvcmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgc2VsU3RhcnRBZnRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCBzZWxFbmRBZnRlcikgeworICAgICAgICBzdXBlcihiZWhhdmlvciwgb3JpZ2luYWxUZXh0LCBhZmZlY3RlZFJhbmdlU3RhcnQsIHNlbFN0YXJ0QmVmb3JlLCBzZWxFbmRCZWZvcmUpOworICAgICAgICBmTmV3VGV4dCA9IG5ld1RleHQ7CisgICAgICAgIGZTZWxTdGFydEFmdGVyID0gbmV3IFRleHRPZmZzZXQoKTsKKyAgICAgICAgZlNlbFN0YXJ0QWZ0ZXIuYXNzaWduKHNlbFN0YXJ0QWZ0ZXIpOworICAgICAgICBmU2VsRW5kQWZ0ZXIgPSBuZXcgVGV4dE9mZnNldCgpOworICAgICAgICBmU2VsRW5kQWZ0ZXIuYXNzaWduKHNlbEVuZEFmdGVyKTsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50IGFmZmVjdGVkUmFuZ2VFbmQoKSB7CisgICAgICAgIGlmIChmTmV3VGV4dCA9PSBudWxsKQorICAgICAgICAgICAgcmV0dXJuIGZBZmZlY3RlZFJhbmdlU3RhcnQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBmQWZmZWN0ZWRSYW5nZVN0YXJ0ICsgZk5ld1RleHQubGVuZ3RoKCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgZXhlY3V0ZSgpIHsKKyAgICAgICAgZkJlaGF2aW9yLmRvUmVwbGFjZVRleHQoZkFmZmVjdGVkUmFuZ2VTdGFydCwgZkFmZmVjdGVkUmFuZ2VTdGFydCArIGZPcmlnaW5hbFRleHQubGVuZ3RoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZk5ld1RleHQsIGZTZWxTdGFydEFmdGVyLCBmU2VsRW5kQWZ0ZXIpOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgYWZmZWN0ZWRSYW5nZVN0YXJ0KCkgeworICAgICAgICByZXR1cm4gZkFmZmVjdGVkUmFuZ2VTdGFydDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXROZXdUZXh0KE1Db25zdFRleHQgbmV3VGV4dCkgeworICAgICAgICBmTmV3VGV4dCA9IG5ld1RleHQ7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0U2VsUmFuZ2VBZnRlcihUZXh0T2Zmc2V0IHN0YXJ0LCBUZXh0T2Zmc2V0IGVuZCkgeworICAgICAgICBpZiAoZlNlbFN0YXJ0QWZ0ZXIgPT0gbnVsbCkKKyAgICAgICAgICAgIGZTZWxTdGFydEFmdGVyID0gbmV3IFRleHRPZmZzZXQoKTsKKyAgICAgICAgaWYgKGZTZWxFbmRBZnRlciA9PSBudWxsKQorICAgICAgICAgICAgZlNlbEVuZEFmdGVyID0gbmV3IFRleHRPZmZzZXQoKTsKKyAgICAgICAgZlNlbFN0YXJ0QWZ0ZXIuYXNzaWduKHN0YXJ0KTsKKyAgICAgICAgZlNlbEVuZEFmdGVyLmFzc2lnbihlbmQpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHByZXBlbmRUb09sZFRleHQoTUNvbnN0VGV4dCBuZXdUZXh0KSB7CisgICAgICAgIGZPcmlnaW5hbFRleHQuaW5zZXJ0KDAsIG5ld1RleHQpOworICAgICAgICBmQWZmZWN0ZWRSYW5nZVN0YXJ0IC09IG5ld1RleHQubGVuZ3RoKCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgYXBwZW5kVG9PbGRUZXh0KE1Db25zdFRleHQgbmV3VGV4dCkgeworICAgICAgICBmT3JpZ2luYWxUZXh0LmFwcGVuZChuZXdUZXh0KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvVGV4dENvbW1hbmQuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9UZXh0Q29tbWFuZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjRhNWM1NzMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvVGV4dENvbW1hbmQuamF2YQpAQCAtMCwwICsxLDUxIEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBUZXh0Q29tbWFuZC5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjUxOjIzICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1Db25zdFRleHQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1UZXh0OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGZvcm1hdC5UZXh0T2Zmc2V0OworCithYnN0cmFjdCBjbGFzcyBUZXh0Q29tbWFuZCBleHRlbmRzIENvbW1hbmQgeworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHJvdGVjdGVkIFRleHRFZGl0QmVoYXZpb3IgZkJlaGF2aW9yOworICAgIHByb3RlY3RlZCBNVGV4dCBmT3JpZ2luYWxUZXh0OworICAgIHByb3RlY3RlZCBpbnQgZkFmZmVjdGVkUmFuZ2VTdGFydDsKKyAgICBwcm90ZWN0ZWQgVGV4dE9mZnNldCBmU2VsU3RhcnRCZWZvcmU7CisgICAgcHJvdGVjdGVkIFRleHRPZmZzZXQgZlNlbEVuZEJlZm9yZTsKKworICAgIHB1YmxpYyBUZXh0Q29tbWFuZChUZXh0RWRpdEJlaGF2aW9yIGJlaGF2aW9yLAorICAgICAgICAgICAgICAgICAgICAgICBNVGV4dCBvcmlnaW5hbFRleHQsCisgICAgICAgICAgICAgICAgICAgICAgIGludCBhZmZlY3RlZFJhbmdlU3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgc2VsU3RhcnRCZWZvcmUsCisgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgc2VsRW5kQmVmb3JlKSB7CisKKyAgICAgICAgZkJlaGF2aW9yID0gYmVoYXZpb3I7CisgICAgICAgIGZPcmlnaW5hbFRleHQgPSBvcmlnaW5hbFRleHQ7CisgICAgICAgIGZBZmZlY3RlZFJhbmdlU3RhcnQgPSBhZmZlY3RlZFJhbmdlU3RhcnQ7CisgICAgICAgIGZTZWxTdGFydEJlZm9yZSA9IG5ldyBUZXh0T2Zmc2V0KCk7CisgICAgICAgIGZTZWxTdGFydEJlZm9yZS5hc3NpZ24oc2VsU3RhcnRCZWZvcmUpOworICAgICAgICBmU2VsRW5kQmVmb3JlID0gbmV3IFRleHRPZmZzZXQoKTsKKyAgICAgICAgZlNlbEVuZEJlZm9yZS5hc3NpZ24oc2VsRW5kQmVmb3JlKTsKKyAgICB9CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgaW50IGFmZmVjdGVkUmFuZ2VFbmQoKTsKKworICAgIHB1YmxpYyB2b2lkIHVuZG8oKSB7CisgICAgICAgIGZCZWhhdmlvci5kb1JlcGxhY2VUZXh0KGZBZmZlY3RlZFJhbmdlU3RhcnQsIGFmZmVjdGVkUmFuZ2VFbmQoKSwgZk9yaWdpbmFsVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmU2VsU3RhcnRCZWZvcmUsIGZTZWxFbmRCZWZvcmUpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9UZXh0Q29tcG9uZW50LmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvVGV4dENvbXBvbmVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmJiYzNiOTEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvVGV4dENvbXBvbmVudC5qYXZhCkBAIC0wLDAgKzEsOTgyIEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBUZXh0Q29tcG9uZW50LmphdmEsdiAkICRSZXZpc2lvbjogMS41ICQgJERhdGU6IDIwMDIvMDIvMTYgMDM6MDY6NDcgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWw7CisKK2ltcG9ydCBqYXZhLmF3dC5Db2xvcjsKK2ltcG9ydCBqYXZhLmF3dC5Db21wb25lbnQ7CitpbXBvcnQgamF2YS5hd3QuRGltZW5zaW9uOworaW1wb3J0IGphdmEuYXd0LkdyYXBoaWNzOworaW1wb3J0IGphdmEuYXd0LkltYWdlOworaW1wb3J0IGphdmEuYXd0LlBvaW50OworaW1wb3J0IGphdmEuYXd0LlJlY3RhbmdsZTsKKworaW1wb3J0IGphdmEuYXd0LmV2ZW50LkNvbXBvbmVudEFkYXB0ZXI7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuRm9jdXNMaXN0ZW5lcjsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5LZXlMaXN0ZW5lcjsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5Nb3VzZUxpc3RlbmVyOworaW1wb3J0IGphdmEuYXd0LmV2ZW50Lk1vdXNlTW90aW9uTGlzdGVuZXI7CisKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5Db21wb25lbnRFdmVudDsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5Gb2N1c0V2ZW50OworaW1wb3J0IGphdmEuYXd0LmV2ZW50LktleUV2ZW50OworaW1wb3J0IGphdmEuYXd0LmV2ZW50Lk1vdXNlRXZlbnQ7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuV2luZG93RXZlbnQ7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuTUNvbnN0VGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuTVRleHQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0Zm9ybWF0LlRleHRPZmZzZXQ7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRmb3JtYXQuTUZvcm1hdHRlcjsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZU1hcDsKKworY2xhc3MgVGV4dENvbXBvbmVudCBleHRlbmRzIEZha2VDb21wb25lbnQKKyAgICAgICAgICAgICAgICAgICAgaW1wbGVtZW50cyBCZWhhdmlvck93bmVyLAorICAgICAgICAgICAgICAgICAgICBGb2N1c0xpc3RlbmVyLAorICAgICAgICAgICAgICAgICAgICBLZXlMaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgTW91c2VMaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgTW91c2VNb3Rpb25MaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgU2Nyb2xsZXIuQ2xpZW50IHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBXSU5ET1dfV0lEVEggPSAtMTA7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgREVGQVVMVF9JTlNFVCA9IDEwOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgQ29sb3IgU1RST05HX0NBUkVUX0NPTE9SID0gQ29sb3IuYmxhY2s7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgQ29sb3IgV0VBS19DQVJFVF9DT0xPUiA9IENvbG9yLmRhcmtHcmF5OworCisgICAgcHJpdmF0ZSBCZWhhdmlvciBmQmVoYXZpb3I7CisgICAgcHJpdmF0ZSBNVGV4dCBmVGV4dDsKKyAgICBwcml2YXRlIFN0eWxlZFRleHRDbGlwYm9hcmQgZkNsaXBib2FyZDsKKyAgICBwcml2YXRlIGJvb2xlYW4gZlNjcm9sbHM7CisgICAgcHJpdmF0ZSBTY3JvbGxlciBmU2Nyb2xsZXI7CisKKyAgICBwcml2YXRlIERvY3VtZW50VmlldyBmRG9jdW1lbnRWaWV3ID0gbnVsbDsKKworICAgIC8vIHNpZ2ggLSBjYW4ndCBjcmVhdGUgRG9jdW1lbnRWaWV3IHVudGlsIGFkZE5vdGlmeSgpIGlzIGNhbGxlZC4KKyAgICAvLyBUaGVzZSB2YWx1ZXMgaG9sZCBEb2N1bWVudFZpZXcgY3RvciBhcmdzCisgICAgcHJpdmF0ZSBBdHRyaWJ1dGVNYXAgZkRlZmF1bHRWYWx1ZXM7CisgICAgcHJpdmF0ZSBib29sZWFuIGZWaWV3V3JhcHM7CisgICAgcHJpdmF0ZSBpbnQgZlZpZXdXcmFwV2lkdGg7CisgICAgcHJpdmF0ZSBpbnQgZlZpZXdJbnNldEFtb3VudDsKKyAgICAKKyAgICBwcml2YXRlIFBhbmVsRXZlbnRCcm9hZGNhc3RlciBmTGlzdGVuZXI7CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSBuZXcgVGV4dENvbXBvbmVudC4KKyAgICAgKiBAcGFyYW0gdGV4dCB0aGUgdGV4dCBtb2RlbC4gIFRoaXMgbW9kZWwgd2lsbCBiZSB1c2VkIGZvcgorICAgICAqIHRoZSBsaWZlIG9mIHRoZSBjb21wb25lbnQsIGV2ZW4gaWYgc2V0VGV4dCBpcyBjYWxsZWQKKyAgICAgKiBAcGFyYW0gd3JhcHMgaWYgdHJ1ZSwgdGhlIHRleHQgaXMgd3JhcHBlZCB0byB0aGUgc3BlY2lmaWVkCisgICAgICogd3JhcHBpbmcgd2lkdGguICBJZiBmYWxzZSwgdGhlIHRleHQgd3JhcHMgb25seSBhdCBwYXJhZ3JhcGggYnJlYWtzLgorICAgICAqIEBwYXJhbSB3cmFwV2lkdGggaWdub3JlZCBpZiB3cmFwcyBpcyBmYWxzZS4gIFRleHQgd3JhcHMgdG8gdGhpcyB3aWR0aAorICAgICAqIHVubGVzcyB0aGUgd2lkdGggaXMgV0lORE9XX1dJRFRILCBpbiB3aGljaCBjYXNlIHRleHQgd3JhcHMgdG8gd2lkdGgKKyAgICAgKiBvZiB0aGlzIGNvbXBvbmVudC4gU2hvdWxkIG5vdCBiZSBuZWdhdGl2ZSAodW5sZXNzIGl0IGlzIFdJTkRPV19XSURUSCkuCisgICAgICogQHBhcmFtIGluc2V0QW1vdW50IHRoZSBzaXplIG9mIHRoZSBtYXJnaW5zIGFyb3VuZCB0aGUgdGV4dAorICAgICAqIEBwYXJhbSBjbGlwYm9hcmQgdGhlIGNsaXBib2FyZCB0byB1c2UgZm9yIGN1dC9jb3B5L3Bhc3RlIG9wZXJhdGlvbnMuCisgICAgICogSWYgbnVsbCwgdGhlIGNvbXBvbmVudCB3aWxsIHVzZSBpdHMgb3duIGNsaXBib2FyZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgVGV4dENvbXBvbmVudChNVGV4dCB0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZU1hcCBkZWZhdWx0VmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gd3JhcHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdyYXBXaWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5zZXRBbW91bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgU3R5bGVkVGV4dENsaXBib2FyZCBjbGlwYm9hcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBzY3JvbGxzLAorICAgICAgICAgICAgICAgICAgICAgICAgIFNjcm9sbGVyIHNjcm9sbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgIFBhbmVsRXZlbnRCcm9hZGNhc3RlciBsaXN0ZW5lcikgeworCisgICAgICAgIGZCZWhhdmlvciA9IG51bGw7CisKKyAgICAgICAgaWYgKHRleHQgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiVGV4dCBpcyBudWxsLiIpOworICAgICAgICB9CisKKyAgICAgICAgZlRleHQgPSB0ZXh0OworICAgICAgICBmRGVmYXVsdFZhbHVlcyA9IGRlZmF1bHRWYWx1ZXM7CisgICAgICAgIAorICAgICAgICBpZiAoY2xpcGJvYXJkID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkNsaXBib2FyZCBpcyBudWxsLiIpOworICAgICAgICB9CisgICAgICAgIGZDbGlwYm9hcmQgPSBjbGlwYm9hcmQ7CisKKyAgICAgICAgZlNjcm9sbHMgPSBzY3JvbGxzOworCisgICAgICAgIGZTY3JvbGxlciA9IHNjcm9sbGVyOworCisgICAgICAgIGZEb2N1bWVudFZpZXcgPSBudWxsOworCisgICAgICAgIGZWaWV3V3JhcFdpZHRoID0gd3JhcFdpZHRoOworICAgICAgICBmVmlld1dyYXBzID0gd3JhcHM7CisgICAgICAgIGZWaWV3SW5zZXRBbW91bnQgPSBpbnNldEFtb3VudDsKKyAgICAgICAgZkxpc3RlbmVyID0gbGlzdGVuZXI7CisgICAgfQorICAgIAorICAgIEF0dHJpYnV0ZU1hcCBnZXREZWZhdWx0VmFsdWVzKCkgeworICAgIAorICAgICAgICByZXR1cm4gZkRlZmF1bHRWYWx1ZXM7CisgICAgfQorICAgIAorICAgIHZvaWQgc2V0SG9zdChDb21wb25lbnQgY29tcG9uZW50KSB7CisgICAgICAgIAorICAgICAgICBzdXBlci5zZXRIb3N0KGNvbXBvbmVudCk7CisgICAgICAgIAorICAgICAgICBjb21wb25lbnQuYWRkRm9jdXNMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgY29tcG9uZW50LmFkZEtleUxpc3RlbmVyKHRoaXMpOworICAgICAgICBjb21wb25lbnQuYWRkTW91c2VMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgY29tcG9uZW50LmFkZE1vdXNlTW90aW9uTGlzdGVuZXIodGhpcyk7CisgICAgICAgIAorICAgICAgICBjb21wb25lbnQuYWRkQ29tcG9uZW50TGlzdGVuZXIobmV3IENvbXBvbmVudEFkYXB0ZXIoKSB7ICAgICAgICAKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGNvbXBvbmVudFJlc2l6ZWQoQ29tcG9uZW50RXZlbnQgZSkgeworICAgICAgICAgICAgICAgIGlmIChmRG9jdW1lbnRWaWV3ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgZkRvY3VtZW50Vmlldy5ob3N0U2l6ZUNoYW5nZWQoKTsKKyAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9TaG93KGZEb2N1bWVudFZpZXcuZ2V0RG9jdW1lbnRCb3VuZHMoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQVRleHRQYW5lbEltcGwncyB1c2Ugb25seSEKKyAgICAgKi8KKyAgICBDb21wb25lbnQgZ2V0SG9zdCgpIHsKKyAgICAKKyAgICAgICAgcmV0dXJuIGZIb3N0OworICAgIH0KKyAgICAKKyAgICAvLyBDcmVhdGUgZG9jdW1lbnQgdmlldyBoZXJlLiAgVGV4dENvbXBvbmVudCBpc24ndCBmdWxseSBjb25zdHJ1Y3RlZAorICAgIC8vIHVudGlsIHRoaXMgaXMgY2FsbGVkLgorICAgIC8vIFRoaXMgbXVzdCBiZSBjYWxsZWQgYnkgaG9zdCBjb21wb25lbnQhCisgICAgdm9pZCBhZGROb3RpZnkoKSB7CisKKyAgICAgICAgR3JhcGhpY3MgZyA9IGdldEdyYXBoaWNzKCk7CisgICAgICAgIGlmIChnID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiR3JhcGhpY3Mgc2hvdWxkIGJlIHZhbGlkIGhlcmUgYnV0IGlzbid0LiIpOworICAgICAgICB9CisKKyAgICAgICAgZkRvY3VtZW50VmlldyA9IG5ldyBEb2N1bWVudFZpZXcodGhpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZlRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZEZWZhdWx0VmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmVmlld1dyYXBzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmVmlld1dyYXBXaWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZlZpZXdJbnNldEFtb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZkxpc3RlbmVyKTsKKyAgICAgICAgZG9jdW1lbnRTaXplQ2hhbmdlZCgpOworICAgICAgICBmTGlzdGVuZXIudGV4dFN0YXRlQ2hhbmdlZChUZXh0UGFuZWxFdmVudC5GT1JNQVRfV0lEVEhfQ0hBTkdFRCk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBSZWN0YW5nbGUgZ2V0Qm91bmRzKCkgeworICAgICAgICAKKyAgICAgICAgaWYgKGZIb3N0ICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBmSG9zdC5nZXRCb3VuZHMoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgUmVjdGFuZ2xlKDAsIDAsIDAsIDApOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIEdyYXBoaWNzIGdldEdyYXBoaWNzKCkgeworICAgICAgICAKKyAgICAgICAgcmV0dXJuIChmSG9zdD09bnVsbCk/IG51bGwgOiBmSG9zdC5nZXRHcmFwaGljcygpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHJlcXVlc3RGb2N1cygpIHsKKyAgICAgICAgCisgICAgICAgIGlmIChmSG9zdCAhPSBudWxsKSB7CisgICAgICAgICAgICBmSG9zdC5yZXF1ZXN0Rm9jdXMoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vICoqKiBCZWhhdmlvciBtYW5hZ2VtZW50ICoqKgorICAgIHB1YmxpYyBCZWhhdmlvciBnZXRCZWhhdmlvcigpIHsKKyAgICAgICAgcmV0dXJuIGZCZWhhdmlvcjsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRCZWhhdmlvcihCZWhhdmlvciBiKSB7CisgICAgICAgIGZCZWhhdmlvciA9IGI7CisgICAgfQorCisKKyAgICAvLyAqKiogRXZlbnRzIC0ganVzdCBmb3J3YXJkIHRvIGJlaGF2aW9yICoqKgorICAgIHB1YmxpYyB2b2lkIGZvY3VzR2FpbmVkKEZvY3VzRXZlbnQgZXZlbnQpIHsKKyAgICAgICAgaWYgKGZCZWhhdmlvciAhPSBudWxsKQorICAgICAgICAgICAgZkJlaGF2aW9yLmZvY3VzR2FpbmVkKGV2ZW50KTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBmb2N1c0xvc3QoRm9jdXNFdmVudCBldmVudCkgeworICAgICAgICBpZiAoZkJlaGF2aW9yICE9IG51bGwpCisgICAgICAgICAgICBmQmVoYXZpb3IuZm9jdXNMb3N0KGV2ZW50KTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBrZXlQcmVzc2VkKEtleUV2ZW50IGV2ZW50KSB7CisgICAgICAgIGlmIChmQmVoYXZpb3IgIT0gbnVsbCkKKyAgICAgICAgICAgIGZCZWhhdmlvci5rZXlQcmVzc2VkKGV2ZW50KTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBrZXlUeXBlZChLZXlFdmVudCBldmVudCkgeworCisgICAgICAgIGlmIChmQmVoYXZpb3IgIT0gbnVsbCkgeworICAgICAgICAgICAgZkJlaGF2aW9yLmtleVR5cGVkKGV2ZW50KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGtleVJlbGVhc2VkKEtleUV2ZW50IGV2ZW50KSB7CisgICAgICAgIGlmIChmQmVoYXZpb3IgIT0gbnVsbCkKKyAgICAgICAgICAgIGZCZWhhdmlvci5rZXlSZWxlYXNlZChldmVudCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgbW91c2VDbGlja2VkKE1vdXNlRXZlbnQgZXZlbnQpIHsKKyAgICAgICAgcmV0dXJuOyAgLy8gbm8gYmVoYXZpb3IgbWV0aG9kIGZvciB0aGlzCisgICAgfQorCisgICAgcHVibGljIHZvaWQgbW91c2VEcmFnZ2VkKE1vdXNlRXZlbnQgZXZlbnQpIHsKKyAgICAgICAgaWYgKGZCZWhhdmlvciAhPSBudWxsKQorICAgICAgICAgICAgZkJlaGF2aW9yLm1vdXNlRHJhZ2dlZChldmVudCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgbW91c2VFbnRlcmVkKE1vdXNlRXZlbnQgZXZlbnQpICB7CisgICAgICAgIGlmIChmQmVoYXZpb3IgIT0gbnVsbCkKKyAgICAgICAgICAgIGZCZWhhdmlvci5tb3VzZUVudGVyZWQoZXZlbnQpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG1vdXNlRXhpdGVkKE1vdXNlRXZlbnQgZXZlbnQpICB7CisgICAgICAgIGlmIChmQmVoYXZpb3IgIT0gbnVsbCkKKyAgICAgICAgICAgIGZCZWhhdmlvci5tb3VzZUV4aXRlZChldmVudCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgbW91c2VNb3ZlZChNb3VzZUV2ZW50IGV2ZW50KSB7CisgICAgICAgIGlmIChmQmVoYXZpb3IgIT0gbnVsbCkKKyAgICAgICAgICAgIGZCZWhhdmlvci5tb3VzZU1vdmVkKGV2ZW50KTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBtb3VzZVByZXNzZWQoTW91c2VFdmVudCBldmVudCkgeworICAgICAgICBpZiAoZkJlaGF2aW9yICE9IG51bGwpCisgICAgICAgICAgICBmQmVoYXZpb3IubW91c2VQcmVzc2VkKGV2ZW50KTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBtb3VzZVJlbGVhc2VkKE1vdXNlRXZlbnQgZXZlbnQpICB7CisgICAgICAgIGlmIChmQmVoYXZpb3IgIT0gbnVsbCkKKyAgICAgICAgICAgIGZCZWhhdmlvci5tb3VzZVJlbGVhc2VkKGV2ZW50KTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiB0ZXh0Q29udHJvbEV2ZW50T2NjdXJyZWQoQmVoYXZpb3IuRXZlbnRUeXBlIGV2ZW50LCBPYmplY3Qgd2hhdCkgeworCisgICAgICAgIGJvb2xlYW4gaGFuZGxlZCA9IGZhbHNlOworCisgICAgICAgIGlmIChmQmVoYXZpb3IgIT0gbnVsbCkgeworICAgICAgICAgICAgaGFuZGxlZCA9IGZCZWhhdmlvci50ZXh0Q29udHJvbEV2ZW50T2NjdXJyZWQoZXZlbnQsIHdoYXQpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBoYW5kbGVkOworICAgIH0KKworCisgICAgLy8gKioqIFNjcm9sbCBtZXRob2RzIC0gY2FsbGVkIGJ5IEJlaGF2aW9ycworCisgICAgLy8gdmlld1N0YXJ0LCB2aWV3TGltaXQgaXMgdmlzaWJsZSBib3VuZHMgb2Ygd2luZG93CisgICAgLy8gdGFyZ2V0U3RhcnQsIHRhcmdldExpbWl0IGlzIHRoZSByZWdpb24gdG8gc2Nyb2xsIGludG8gdmlldworICAgIHByaXZhdGUgc3RhdGljIGludCBnZXRTY3JvbGxEaWZmZXJlbmNlKGludCB2aWV3U3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZpZXdMaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGFyZ2V0U3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRhcmdldExpbWl0KSB7CisKKyAgICAgICAgaWYgKHZpZXdTdGFydCA8PSB0YXJnZXRTdGFydCkgeworICAgICAgICAgICAgaWYgKHZpZXdMaW1pdCA+PSB0YXJnZXRMaW1pdCkgeworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1hdGgubWF4KHZpZXdTdGFydC10YXJnZXRTdGFydCwgdmlld0xpbWl0LXRhcmdldExpbWl0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICh2aWV3TGltaXQgPiB0YXJnZXRMaW1pdCkgeworCisgICAgICAgICAgICByZXR1cm4gdmlld0xpbWl0IC0gdGFyZ2V0TGltaXQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgc2Nyb2xsVG9TaG93KFJlY3RhbmdsZSBzaG93UmVjdCkgeworCisgICAgICAgIGlmIChmRG9jdW1lbnRWaWV3ICE9IG51bGwpIHsKKyAgICAgICAgICAgIFJlY3RhbmdsZSBib3VuZHMgPSBnZXRCb3VuZHMoKTsKKworICAgICAgICAgICAgaW50IGR4ID0gZ2V0U2Nyb2xsRGlmZmVyZW5jZShzaG93UmVjdC54LCBzaG93UmVjdC54ICsgc2hvd1JlY3Qud2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kcy54LCBib3VuZHMueCArIGJvdW5kcy53aWR0aCk7CisgICAgICAgICAgICBpbnQgZHkgPSBnZXRTY3JvbGxEaWZmZXJlbmNlKHNob3dSZWN0LnksIHNob3dSZWN0LnkgKyBzaG93UmVjdC5oZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kcy55LCBib3VuZHMueSArIGJvdW5kcy5oZWlnaHQpOworCisgICAgICAgICAgICBzY3JvbGxTZWxmKGR4LCBkeSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHNjcm9sbFRvU2hvdyhpbnQgc2hvd1gsIGludCBzaG93WSkgeworCisgICAgICAgIGlmIChmRG9jdW1lbnRWaWV3ICE9IG51bGwpIHsKKyAgICAgICAgICAgIGludCBkeCA9IDAsIGR5ID0gMDsKKworICAgICAgICAgICAgUmVjdGFuZ2xlIGJvdW5kcyA9IGdldEJvdW5kcygpOworICAgICAgICAgICAgaWYgKHNob3dYIDwgYm91bmRzLngpIHsKKyAgICAgICAgICAgICAgICBkeCA9IHNob3dYIC0gYm91bmRzLng7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChzaG93WCA+IGJvdW5kcy54ICsgYm91bmRzLndpZHRoKSB7CisgICAgICAgICAgICAgICAgZHggPSBzaG93WCAtIChib3VuZHMueCArIGJvdW5kcy53aWR0aCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChzaG93WSA8IGJvdW5kcy55KSB7CisgICAgICAgICAgICAgICAgZHkgPSBzaG93WSAtIGJvdW5kcy55OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoc2hvd1kgPiBib3VuZHMueSArIGJvdW5kcy5oZWlnaHQpIHsKKyAgICAgICAgICAgICAgICBkeSA9IHNob3dZIC0gKGJvdW5kcy55ICsgYm91bmRzLmhlaWdodCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNjcm9sbFNlbGYoZHgsIGR5KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgaW50IHBpblNjcm9sbE9mZnNldChpbnQgZGVsdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb250ZW50U3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb250ZW50TGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmlld1N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmlld0xlbmd0aCkgeworCisgICAgICAgIGlmIChkZWx0YSA+IDApIHsKKyAgICAgICAgICAgIGludCB2aWV3TGltaXQgPSB2aWV3U3RhcnQgKyB2aWV3TGVuZ3RoOworICAgICAgICAgICAgaW50IGNvbnRlbnRMaW1pdCA9IGNvbnRlbnRTdGFydCArIGNvbnRlbnRMZW5ndGg7CisKKyAgICAgICAgICAgIGlmICh2aWV3TGltaXQgKyBkZWx0YSA+IGNvbnRlbnRMaW1pdCkgeworICAgICAgICAgICAgICAgIGRlbHRhID0gTWF0aC5tYXgoMCwgY29udGVudExpbWl0LXZpZXdMaW1pdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAodmlld1N0YXJ0ICsgZGVsdGEgPCBjb250ZW50U3RhcnQpIHsKKyAgICAgICAgICAgICAgICBkZWx0YSA9IE1hdGgubWluKDAsIGNvbnRlbnRTdGFydC12aWV3U3RhcnQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGRlbHRhOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBzY3JvbGxTZWxmKGludCBkeCwgaW50IGR5KSB7CisKKyAgICAgICAgYm9vbGVhbiBzY3JvbGxlZCA9IHNjcm9sbEJ5KGR4LCBkeSk7CisKKyAgICAgICAgaWYgKHNjcm9sbGVkICYmIGZTY3JvbGxlciAhPSBudWxsKSB7CisgICAgICAgICAgICBSZWN0YW5nbGUgZG9jdW1lbnRCb3VuZHMgPSBmRG9jdW1lbnRWaWV3LmdldERvY3VtZW50Qm91bmRzKCk7CisgICAgICAgICAgICBmU2Nyb2xsZXIuc2V0UG9zaXRpb24oLWRvY3VtZW50Qm91bmRzLngsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWRvY3VtZW50Qm91bmRzLnkpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBzeW5jaHJvbml6ZWQgYm9vbGVhbiBzY3JvbGxCeShpbnQgZHgsIGludCBkeSkgeworCisgICAgICAgIGJvb2xlYW4gc2Nyb2xsZWQgPSBmYWxzZTsKKworICAgICAgICBpZiAoZlNjcm9sbHMpIHsKKyAgICAgICAgICAgIFJlY3RhbmdsZSBkb2N1bWVudEJvdW5kcyA9IGZEb2N1bWVudFZpZXcuZ2V0RG9jdW1lbnRCb3VuZHMoKTsKKyAgICAgICAgICAgIFJlY3RhbmdsZSB2aWV3Qm91bmRzID0gZ2V0Qm91bmRzKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIHZhcmlhYmxlIG5vdCB1c2VkIGludCBvbGREeCA9IGR4OworICAgICAgICAgICAgZHggPSBwaW5TY3JvbGxPZmZzZXQoZHgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRCb3VuZHMueCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50Qm91bmRzLndpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JvdW5kcy54LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JvdW5kcy53aWR0aCk7CisgICAgICAgICAgICBkeSA9IHBpblNjcm9sbE9mZnNldChkeSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudEJvdW5kcy55LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRCb3VuZHMuaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JvdW5kcy55LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JvdW5kcy5oZWlnaHQpOworCisgICAgICAgICAgICBpZiAoZHggIT0gMCB8fCBkeSAhPSAwKSB7CisgICAgICAgICAgICAgICAgc2Nyb2xsZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGZEb2N1bWVudFZpZXcubW92ZUJ5KC1keCwgLWR5KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBzY3JvbGxlZDsKKyAgICB9CisKKyAgICAvLyBpbXBsZW1lbnRhdGlvbiBvZiBTY3JvbGxlci5DbGllbnQgLSBjYWxsZWQgYnkgU2Nyb2xsZXIKKyAgICAvLyB0aGV5IGhhdmUgdG8gYmUgcHVibGljIHNpbmNlIHRoZXkncmUgaW4gYW4gaW50ZXJmYWNlCisgICAgLy8gbm8gb25lIGVsc2Ugc2hvdWxkIGNhbGwgdGhlc2UgbWV0aG9kcworICAgIHB1YmxpYyBSZWN0YW5nbGUgZ2V0U2Nyb2xsU2l6ZSgpIHsKKworICAgICAgICBpZiAoZkRvY3VtZW50VmlldyAhPSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gZkRvY3VtZW50Vmlldy5nZXRTY3JvbGxhYmxlQXJlYSgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWN0YW5nbGUoMCwgMCwgMCwgMCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzY3JvbGxUbyhpbnQgeCwgaW50IHkpIHsKKworICAgICAgICBpZiAoZkRvY3VtZW50VmlldyAhPSBudWxsKSB7CisgICAgICAgICAgICBzY3JvbGxCeSh4ICsgZkRvY3VtZW50Vmlldy5nZXREb2NYKCksIHkgKyBmRG9jdW1lbnRWaWV3LmdldERvY1koKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyAqKiogVGV4dCBhY2Nlc3MgKioqCisgICAgTUNvbnN0VGV4dCBnZXRUZXh0KCkgeworICAgICAgICByZXR1cm4gZlRleHQ7CisgICAgfQorCisgICAgTVRleHQgZ2V0TW9kaWZpYWJsZVRleHQoKSB7CisgICAgICAgIHJldHVybiBmVGV4dDsKKyAgICB9CisKKyAgICBTdHlsZWRUZXh0Q2xpcGJvYXJkIGdldENsaXBib2FyZCgpIHsKKyAgICAgICAgcmV0dXJuIGZDbGlwYm9hcmQ7CisgICAgfQorCisgICAgcHVibGljIHN5bmNocm9uaXplZCB2b2lkIHBhaW50KEdyYXBoaWNzIGcpIHsKKworICAgICAgICBpZiAoZkRvY3VtZW50VmlldyAhPSBudWxsKSB7CisgICAgICAgICAgICBmRG9jdW1lbnRWaWV3LnBhaW50KGcpOworICAgICAgICB9CisgICAgfQorCisKKyAgICAvLyAqKiogTWV0cmljIGluZm8gLSB1c2VkIGJ5IEJlaGF2aW9ycworICAgIFJlY3RhbmdsZSBnZXRDYXJldFJlY3QoVGV4dE9mZnNldCBvZmZzZXQpIHsKKworICAgICAgICBpZiAoZkRvY3VtZW50VmlldyAhPSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gZkRvY3VtZW50Vmlldy5nZXRDYXJldFJlY3Qob2Zmc2V0KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgUmVjdGFuZ2xlKDAsIDApOworICAgICAgICB9CisgICAgfQorCisgICAgVGV4dE9mZnNldCBwb2ludFRvVGV4dE9mZnNldChUZXh0T2Zmc2V0IHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IGFuY2hvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gaW5maW5pdGVNb2RlKSB7CisKKyAgICAgICAgaWYgKGZEb2N1bWVudFZpZXcgIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIGZEb2N1bWVudFZpZXcucG9pbnRUb1RleHRPZmZzZXQocmVzdWx0LCB4LCB5LCBhbmNob3IsIGluZmluaXRlTW9kZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFRleHRPZmZzZXQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vICoqKiBPdGhlciBzdHVmZiB1c2VkIGJ5IEJlaGF2aW9ycyAtIG1vc3RseSBmb3JtYXR0ZXIgZXhwb3J0cworICAgIGludCBsaW5lQ29udGFpbmluZyhUZXh0T2Zmc2V0IG9mZnNldCkgeworCisgICAgICAgIGlmIChmRG9jdW1lbnRWaWV3ICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBmRG9jdW1lbnRWaWV3LmxpbmVDb250YWluaW5nKG9mZnNldCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGludCBsaW5lUmFuZ2VMb3coaW50IGxpbmVOdW1iZXIpIHsKKworICAgICAgICBpZiAoZkRvY3VtZW50VmlldyAhPSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gZkRvY3VtZW50Vmlldy5saW5lUmFuZ2VMb3cobGluZU51bWJlcik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGludCBsaW5lUmFuZ2VMaW1pdChpbnQgbGluZU51bWJlcikgeworCisgICAgICAgIGlmIChmRG9jdW1lbnRWaWV3ICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBmRG9jdW1lbnRWaWV3LmxpbmVSYW5nZUxpbWl0KGxpbmVOdW1iZXIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHN0b3BCYWNrZ3JvdW5kRm9ybWF0dGluZygpIHsKKworICAgICAgICBpZiAoZkRvY3VtZW50VmlldyAhPSBudWxsKSB7CisgICAgICAgICAgICBmRG9jdW1lbnRWaWV3LnN0b3BCYWNrZ3JvdW5kRm9ybWF0dGluZygpOworICAgICAgICB9CisgICAgfQorCisgICAgUmVjdGFuZ2xlIGdldEJvdW5kaW5nUmVjdChUZXh0T2Zmc2V0IG9mZnNldDEsIFRleHRPZmZzZXQgb2Zmc2V0MikgeworCisgICAgICAgIGlmIChmRG9jdW1lbnRWaWV3ICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBmRG9jdW1lbnRWaWV3LmdldEJvdW5kaW5nUmVjdChvZmZzZXQxLCBvZmZzZXQyKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgUmVjdGFuZ2xlKDAsIDAsIDAsIDApOworICAgICAgICB9CisgICAgfQorCisgICAgc3luY2hyb25pemVkIHZvaWQgcmVmb3JtYXRBbmREcmF3VGV4dChpbnQgcmVmb3JtYXRTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlZm9ybWF0TGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IHNlbFN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IHNlbEVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVjdGFuZ2xlIGFkZGl0aW9uYWxVcGRhdGVSZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvciBoaWxpdGVDb2xvcikgeworCisgICAgICAgIGlmIChmRG9jdW1lbnRWaWV3ICE9IG51bGwpIHsKKyAgICAgICAgICAgIGZEb2N1bWVudFZpZXcucmVmb3JtYXRBbmREcmF3VGV4dChyZWZvcm1hdFN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZm9ybWF0TGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbFN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbEVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsVXBkYXRlUmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWxpdGVDb2xvcik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBUZXh0T2Zmc2V0IGZpbmROZXdJbnNlcnRpb25PZmZzZXQoVGV4dE9mZnNldCByZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgaW5pdGlhbE9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCBwcmV2aW91c09mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnQgZGlyZWN0aW9uKSB7CisKKyAgICAgICAgaWYgKGZEb2N1bWVudFZpZXcgIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIGZEb2N1bWVudFZpZXcuZmluZE5ld0luc2VydGlvbk9mZnNldChyZXN1bHQsIGluaXRpYWxPZmZzZXQsIHByZXZpb3VzT2Zmc2V0LCBkaXJlY3Rpb24pOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBUZXh0T2Zmc2V0KGluaXRpYWxPZmZzZXQpOworICAgICAgICB9CisgICAgfQorCisgICAgc3luY2hyb25pemVkIHZvaWQgZHJhd1RleHQoR3JhcGhpY3MgZywKKyAgICAgICAgICAgICAgICAgIFJlY3RhbmdsZSBkYW1hZ2VkUmVjdCwKKyAgICAgICAgICAgICAgICAgIGJvb2xlYW4gc2VsZWN0aW9uVmlzaWJsZSwKKyAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgc2VsU3RhcnQsCisgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IHNlbEVuZCwKKyAgICAgICAgICAgICAgICAgIENvbG9yIGhpbGl0ZUNvbG9yKSB7CisKKyAgICAgICAgaWYgKGZEb2N1bWVudFZpZXcgIT0gbnVsbCkgeworICAgICAgICAgICAgZkRvY3VtZW50Vmlldy5kcmF3VGV4dChnLCBkYW1hZ2VkUmVjdCwgc2VsZWN0aW9uVmlzaWJsZSwgc2VsU3RhcnQsIHNlbEVuZCwgaGlsaXRlQ29sb3IpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGRvY3VtZW50U2l6ZUNoYW5nZWQoKSB7CisKKyAgICAgICAgaWYgKGZTY3JvbGxlciAhPSBudWxsKSB7CisgICAgICAgICAgICBmU2Nyb2xsZXIuY2xpZW50U2Nyb2xsU2l6ZUNoYW5nZWQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGludCBnZXRGb3JtYXRXaWR0aCgpIHsKKworICAgICAgICBpZiAoZkRvY3VtZW50VmlldyAhPSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gZkRvY3VtZW50Vmlldy5nZXRGb3JtYXRXaWR0aCgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgcGFyYWdyYXBoIGF0IHRoZSBnaXZlbiBvZmZzZXQgaXMgbGVmdC10by1yaWdodC4KKyAgICAgKiBAcGFyYW0gb2Zmc2V0IGFuIG9mZnNldCBpbiB0aGUgdGV4dAorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgcGFyYWdyYXBoIGF0IHRoZSBnaXZlbiBvZmZzZXQgaXMgbGVmdC10by1yaWdodAorICAgICAqLworICAgIGJvb2xlYW4gcGFyYWdyYXBoSXNMZWZ0VG9SaWdodChpbnQgb2Zmc2V0KSB7CisgICAgICAgIAorICAgICAgICBpZiAoZkRvY3VtZW50VmlldyAhPSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gZkRvY3VtZW50Vmlldy5wYXJhZ3JhcGhJc0xlZnRUb1JpZ2h0KG9mZnNldCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjbGFzcyBEb2N1bWVudFZpZXcgeworCisgICAgICAgIHByaXZhdGUgVGV4dENvbXBvbmVudCBmSG9zdDsKKyAgICAgICAgcHJpdmF0ZSBib29sZWFuIGZXcmFwczsKKyAgICAgICAgcHJpdmF0ZSBib29sZWFuIGZXcmFwVG9XaW5kb3dXaWR0aDsKKyAgICAgICAgcHJpdmF0ZSBpbnQgZkluc2V0QW1vdW50OworICAgICAgICBwcml2YXRlIFBhbmVsRXZlbnRCcm9hZGNhc3RlciBmTGlzdGVuZXI7CisKKyAgICAgICAgLy8gZkJvdW5kcyBpcyB0aGUgdG90YWwgc2Nyb2xsYWJsZSBhcmVhIG9mIHRoZSBkb2N1bWVudCAoaW5jbHVkaW5nIGluc2V0cykKKyAgICAgICAgcHJpdmF0ZSBSZWN0YW5nbGUgZkJvdW5kcyA9IG5ldyBSZWN0YW5nbGUoKTsKKyAgICAgICAgCisgICAgICAgIHByaXZhdGUgUG9pbnQgZk9yaWdpbjsKKworICAgICAgICBwcml2YXRlIE1Gb3JtYXR0ZXIgZkZvcm1hdHRlcjsKKworICAgICAgICBwcml2YXRlIE9mZnNjcmVlbkJ1ZmZlckNhY2hlIGZCdWZmZXJDYWNoZTsKKworICAgICAgICAvLyBOb3RlLCB3aGVuIHRoaXMgaXMgdHJ1ZSB0aGUgY2FyZXQgd29uJ3QgYmxpbmsgaW4gMS4xLiAgTG9va3MgbGlrZSBhbiBBV1QgYnVnLgorICAgICAgICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGZOb09mZnNjcmVlbkJ1ZmZlciA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQm9vbGVhbi5nZXRCb29sZWFuKCJUZXh0Q29tcG9uZW50Lk5vT2Zmc2NyZWVuQnVmZmVyIik7CisKKyAgICAgICAgLy8gQW1vdW50IGJ5IHdoaWNoIHRvIHJlZHVjZSB0aGUgZm9ybWF0IHdpZHRoIHRvIGFsbG93IGZvciByaWdodC1hbGlnbmVkIGNhcmV0cy4KKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBpbnQgQ0FSRVRfU0xPUCA9IDE7CisKKyAgICAgICAgRG9jdW1lbnRWaWV3KFRleHRDb21wb25lbnQgaG9zdCwKKyAgICAgICAgICAgICAgICAgICAgIE1Db25zdFRleHQgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZU1hcCBkZWZhdWx0VmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiB3cmFwcywKKyAgICAgICAgICAgICAgICAgICAgIGludCB3cmFwV2lkdGgsCisgICAgICAgICAgICAgICAgICAgICBpbnQgaW5zZXRBbW91bnQsCisgICAgICAgICAgICAgICAgICAgICBQYW5lbEV2ZW50QnJvYWRjYXN0ZXIgbGlzdGVuZXIpIHsKKworICAgICAgICAgICAgZkhvc3QgPSBob3N0OworICAgICAgICAgICAgZldyYXBUb1dpbmRvd1dpZHRoID0gd3JhcFdpZHRoID09IFdJTkRPV19XSURUSDsKKyAgICAgICAgICAgIGZJbnNldEFtb3VudCA9IGluc2V0QW1vdW50OworICAgICAgICAgICAgZkxpc3RlbmVyID0gbGlzdGVuZXI7CisKKyAgICAgICAgICAgIGluaXRGb3JtYXR0ZXJBbmRTaXplKHRleHQsIGRlZmF1bHRWYWx1ZXMsIHdyYXBzLCB3cmFwV2lkdGgpOworCisgICAgICAgICAgICBmQnVmZmVyQ2FjaGUgPSBuZXcgT2Zmc2NyZWVuQnVmZmVyQ2FjaGUoaG9zdC5mSG9zdCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8qKgorICAgICAgICAgKiBOb3RlOiB0aGlzIGNvbXB1dGVzIHRoZSBib3VuZHMgcmVjdGFuZ2xlIHJlbGF0aXZlIHRvIGZPcmlnaW4KKyAgICAgICAgICovCisgICAgICAgIHByaXZhdGUgdm9pZCBjYWxjQm91bmRzUmVjdCgpIHsKKyAgICAgICAgCisgICAgICAgICAgICBmaW5hbCBpbnQgaW5zZXREaW0gPSAyICogZkluc2V0QW1vdW50OworCisgICAgICAgICAgICBmaW5hbCBpbnQgbWluWCA9IGZGb3JtYXR0ZXIubWluWCgpOworICAgICAgICAgICAgZmluYWwgaW50IG1pblkgPSBmRm9ybWF0dGVyLm1pblkoKTsKKworICAgICAgICAgICAgZkJvdW5kcy5zZXRCb3VuZHMoZk9yaWdpbi54ICsgbWluWCAtIGZJbnNldEFtb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZPcmlnaW4ueSArIG1pblkgLSBmSW5zZXRBbW91bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmRm9ybWF0dGVyLm1heFgoKSAtIG1pblggKyBpbnNldERpbSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmRm9ybWF0dGVyLm1heFkoKSAtIG1pblkgKyBpbnNldERpbSk7CisgICAgICAgICAgICAvL2lmIChtaW5YIDw9IDApIHsKKyAgICAgICAgICAgIC8vICAgIFN5c3RlbS5vdXQucHJpbnRsbigiY2FsY0JvdW5kc1JlY3Q6IG1pblg9IittaW5YKworICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICI7IGJvdW5kcy54PSIrZkJvdW5kcy54KyI7IHdpZHRoPSIrZkJvdW5kcy53aWR0aCk7CisgICAgICAgICAgICAvL30KKyAgICAgICAgfQorCisgICAgICAgIHByaXZhdGUgdm9pZCBpbml0Rm9ybWF0dGVyQW5kU2l6ZShNQ29uc3RUZXh0IHRleHQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlTWFwIGRlZmF1bHRWYWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIHdyYXBzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdyYXBXaWR0aCkgeworCisgICAgICAgICAgICBSZWN0YW5nbGUgaG9zdEJvdW5kcyA9IGZIb3N0LmdldEJvdW5kcygpOworICAgICAgICAgICAgaW50IGZvcm1hdFdpZHRoOworCisgICAgICAgICAgICBpZiAoIXdyYXBzIHx8IGZXcmFwVG9XaW5kb3dXaWR0aCkgeworICAgICAgICAgICAgICAgIGZvcm1hdFdpZHRoID0gaG9zdEJvdW5kcy53aWR0aCAtIDIgKiBmSW5zZXRBbW91bnQ7CisgICAgICAgICAgICAgICAgaWYgKGZvcm1hdFdpZHRoIDw9IENBUkVUX1NMT1ApIHsKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0V2lkdGggPSBDQVJFVF9TTE9QKzE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgZm9ybWF0V2lkdGggPSB3cmFwV2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZGb3JtYXR0ZXIgPSBNRm9ybWF0dGVyLmNyZWF0ZUZvcm1hdHRlcih0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0V2lkdGgtQ0FSRVRfU0xPUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmSG9zdC5nZXRHcmFwaGljcygpKTsKKworICAgICAgICAgICAgZkZvcm1hdHRlci5mb3JtYXRUb0hlaWdodChob3N0Qm91bmRzLmhlaWdodCAqIDIpOworICAgICAgICAgICAgZk9yaWdpbiA9IG5ldyBQb2ludChmSW5zZXRBbW91bnQsIGZJbnNldEFtb3VudCk7CisgICAgICAgICAgICBjYWxjQm91bmRzUmVjdCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gbm90aWZpY2F0aW9uIG1ldGhvZCBjYWxsZWQgYnkgVGV4dENvbXBvbmVudAorICAgICAgICB2b2lkIGhvc3RTaXplQ2hhbmdlZCgpIHsKKworICAgICAgICAgICAgZmluYWwgYm9vbGVhbiB3cmFwID0gZkZvcm1hdHRlci53cmFwKCk7CisgICAgICAgICAgICBpZiAoZldyYXBUb1dpbmRvd1dpZHRoIHx8ICF3cmFwKSB7CisKKyAgICAgICAgICAgICAgICBSZWN0YW5nbGUgaG9zdEJvdW5kcyA9IGZIb3N0LmdldEJvdW5kcygpOworICAgICAgICAgICAgICAgIC8vIHZhcmlhYmxlIG5vdCB1c2VkIGZpbmFsIGludCBpbnNldERpbSA9IDIgKiBmSW5zZXRBbW91bnQ7CisKKyAgICAgICAgICAgICAgICBpbnQgZm9ybWF0V2lkdGggPSBob3N0Qm91bmRzLndpZHRoIC0gMipmSW5zZXRBbW91bnQ7CisgICAgICAgICAgICAgICAgaWYgKGZvcm1hdFdpZHRoIDw9IENBUkVUX1NMT1ApIHsKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0V2lkdGggPSBDQVJFVF9TTE9QKzE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZGb3JtYXR0ZXIuc2V0TGluZUJvdW5kKGZvcm1hdFdpZHRoLUNBUkVUX1NMT1ApOworCisgICAgICAgICAgICAgICAgZkZvcm1hdHRlci5mb3JtYXRUb0hlaWdodChob3N0Qm91bmRzLnkgKyAoaG9zdEJvdW5kcy5oZWlnaHQqMikgLSBmT3JpZ2luLnkpOworCisgICAgICAgICAgICAgICAgY2FsY0JvdW5kc1JlY3QoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiV2luZG93IGJvdW5kcz0iK2hvc3RCb3VuZHMrIjsgZG9jdW1lbnQgYm91bmRzPSIrZkJvdW5kcyk7CisKKyAgICAgICAgICAgICAgICBmSG9zdC5kb2N1bWVudFNpemVDaGFuZ2VkKCk7CisgICAgICAgICAgICAgICAgZkxpc3RlbmVyLnRleHRTdGF0ZUNoYW5nZWQoVGV4dFBhbmVsRXZlbnQuRk9STUFUX1dJRFRIX0NIQU5HRUQpOworICAgICAgICAgICAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCJmb3JtYXRXaWR0aD0iK2Zvcm1hdFdpZHRoKTsKKyAgICAgICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiZG9jdW1lbnQgYm91bmRzPSIrZkJvdW5kcyk7CisgICAgICAgICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vZHVtcFdpZHRoSW5mbygpOworICAgICAgICB9CisKKyAgICAgICAgaW50IGdldEZvcm1hdFdpZHRoKCkgeworCisgICAgICAgICAgICByZXR1cm4gZkZvcm1hdHRlci5saW5lQm91bmQoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgYm9vbGVhbiBwYXJhZ3JhcGhJc0xlZnRUb1JpZ2h0KGludCBvZmZzZXQpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaW50IGxpbmVOdW1iZXIgPSBmRm9ybWF0dGVyLmxpbmVDb250YWluaW5nKG9mZnNldCk7CisgICAgICAgICAgICByZXR1cm4gZkZvcm1hdHRlci5saW5lSXNMZWZ0VG9SaWdodChsaW5lTnVtYmVyKTsKKyAgICAgICAgfQorCisgICAgICAgIHByaXZhdGUgdm9pZCB0ZXh0U2l6ZU1pZ2h0SGF2ZUNoYW5nZWQoKSB7CisKKyAgICAgICAgICAgIGJvb2xlYW4gY2hhbmdlZCA9IGZhbHNlOworICAgICAgICAgICAgZmluYWwgaW50IGluc2V0RGltID0gMiAqIGZJbnNldEFtb3VudDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaW50IHRleHRIZWlnaHQgPSBmRm9ybWF0dGVyLm1heFkoKSAtIGZGb3JtYXR0ZXIubWluWSgpICsgaW5zZXREaW07CisgICAgICAgICAgICBpZiAodGV4dEhlaWdodCAhPSBmQm91bmRzLmhlaWdodCkgeworICAgICAgICAgICAgICAgIGZCb3VuZHMuaGVpZ2h0ID0gdGV4dEhlaWdodDsKKyAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFmRm9ybWF0dGVyLndyYXAoKSkgeworICAgICAgICAgICAgICAgIGludCB0ZXh0V2lkdGggPSBmRm9ybWF0dGVyLm1heFgoKSAtIGZGb3JtYXR0ZXIubWluWCgpICsgaW5zZXREaW07CisgICAgICAgICAgICAgICAgaWYgKHRleHRXaWR0aCAhPSBmQm91bmRzLndpZHRoKSB7CisgICAgICAgICAgICAgICAgICAgIGZCb3VuZHMud2lkdGggPSB0ZXh0V2lkdGg7CisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGNoYW5nZWQpIHsKKyAgICAgICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiVGV4dCBzaXplIGNoYW5nZWQuICBmQm91bmRzOiAiICsgZkJvdW5kcyk7CisgICAgICAgICAgICAgICAgY2FsY0JvdW5kc1JlY3QoKTsKKyAgICAgICAgICAgICAgICBmSG9zdC5kb2N1bWVudFNpemVDaGFuZ2VkKCk7CisgICAgICAgICAgICAgICAgZkhvc3Quc2Nyb2xsVG9TaG93KGdldERvY3VtZW50Qm91bmRzKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZSB2b2lkIGRvRHJhd1RleHQoR3JhcGhpY3MgZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVjdGFuZ2xlIGRyYXdSZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIHNlbGVjdGlvblZpc2libGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgc2VsU3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgc2VsRW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvciBoaWxpdGVDb2xvcikgeworCisgICAgICAgICAgICBDb2xvciBvbGRDb2xvciA9IGcuZ2V0Q29sb3IoKTsKKyAgICAgICAgICAgIGcuc2V0Q29sb3IoZkhvc3QuZ2V0SG9zdCgpLmdldEJhY2tncm91bmQoKSk7CisgICAgICAgICAgICBnLmZpbGxSZWN0KGRyYXdSZWN0LngsIGRyYXdSZWN0LnksIGRyYXdSZWN0LndpZHRoLCBkcmF3UmVjdC5oZWlnaHQpOworICAgICAgICAgICAgZy5zZXRDb2xvcihvbGRDb2xvcik7CisKKyAgICAgICAgICAgIC8vICAgICAgICAgICAgZy5jbGVhclJlY3QoZHJhd1JlY3QueCwgZHJhd1JlY3QueSwgZHJhd1JlY3Qud2lkdGgsIGRyYXdSZWN0LmhlaWdodCk7CisKKyAgICAgICAgICAgIGlmIChzZWxlY3Rpb25WaXNpYmxlKSB7CisgICAgICAgICAgICAgICAgZkZvcm1hdHRlci5kcmF3KGcsIGRyYXdSZWN0LCBmT3JpZ2luLCBzZWxTdGFydCwgc2VsRW5kLCBoaWxpdGVDb2xvcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBmRm9ybWF0dGVyLmRyYXcoZywgZHJhd1JlY3QsIGZPcmlnaW4sIG51bGwsIG51bGwsIG51bGwpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoc2VsU3RhcnQgIT0gbnVsbCAmJiBzZWxTdGFydC5lcXVhbHMoc2VsRW5kKSAmJiBzZWxlY3Rpb25WaXNpYmxlKSB7CisKKyAgICAgICAgICAgICAgICBmRm9ybWF0dGVyLmRyYXdDYXJldChnLCBzZWxTdGFydCwgZk9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUUk9OR19DQVJFVF9DT0xPUiwgV0VBS19DQVJFVF9DT0xPUik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGRyYXdUZXh0KEdyYXBoaWNzIGcsCisgICAgICAgICAgICAgICAgICAgICAgUmVjdGFuZ2xlIGRyYXdSZWN0LAorICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gc2VsZWN0aW9uVmlzaWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IHNlbFN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgc2VsRW5kLAorICAgICAgICAgICAgICAgICAgICAgIENvbG9yIGhpbGl0ZUNvbG9yKSB7CisKKyAgICAgICAgICAgIGlmIChnICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBkcmF3UmVjdCA9IGRyYXdSZWN0LmludGVyc2VjdGlvbihmSG9zdC5nZXRCb3VuZHMoKSk7CisgICAgICAgICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oImRyYXdUZXh0OmRyYXdSZWN0OiAiICsgZHJhd1JlY3QpOworICAgICAgICAgICAgICAgIGcuY2xpcFJlY3QoZHJhd1JlY3QueCwgZHJhd1JlY3QueSwgZHJhd1JlY3Qud2lkdGgsIGRyYXdSZWN0LmhlaWdodCk7CisgICAgICAgICAgICAgICAgaWYgKGZOb09mZnNjcmVlbkJ1ZmZlcikgeworICAgICAgICAgICAgICAgICAgICBkb0RyYXdUZXh0KGcsIGRyYXdSZWN0LCBzZWxlY3Rpb25WaXNpYmxlLCBzZWxTdGFydCwgc2VsRW5kLCBoaWxpdGVDb2xvcik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBJbWFnZSBvZmZzY3JlZW5CdWZmZXIgPSBmQnVmZmVyQ2FjaGUuZ2V0QnVmZmVyKGRyYXdSZWN0LndpZHRoLCBkcmF3UmVjdC5oZWlnaHQpOworICAgICAgICAgICAgICAgICAgICBHcmFwaGljcyBvZmZzY3JlZW5HcmFwaGljcyA9IG9mZnNjcmVlbkJ1ZmZlci5nZXRHcmFwaGljcygpOworICAgICAgICAgICAgICAgICAgICBvZmZzY3JlZW5HcmFwaGljcy50cmFuc2xhdGUoLWRyYXdSZWN0LngsIC1kcmF3UmVjdC55KTsKKyAgICAKKyAgICAgICAgICAgICAgICAgICAgZG9EcmF3VGV4dChvZmZzY3JlZW5HcmFwaGljcywgZHJhd1JlY3QsIHNlbGVjdGlvblZpc2libGUsIHNlbFN0YXJ0LCBzZWxFbmQsIGhpbGl0ZUNvbG9yKTsKKyAgICAKKyAgICAgICAgICAgICAgICAgICAgZy5kcmF3SW1hZ2Uob2Zmc2NyZWVuQnVmZmVyLCBkcmF3UmVjdC54LCBkcmF3UmVjdC55LCBmSG9zdC5mSG9zdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgdGV4dFNpemVNaWdodEhhdmVDaGFuZ2VkKCk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHJlZm9ybWF0QW5kRHJhd1RleHQoaW50IHJlZm9ybWF0U3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVmb3JtYXRMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IHNlbFN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCBzZWxFbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWN0YW5nbGUgYWRkaXRpb25hbFVwZGF0ZVJlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvciBoaWxpdGVDb2xvcikgeworCisgICAgICAgICAgICBSZWN0YW5nbGUgdmlzaWJsZUJvdW5kcyA9IGZIb3N0LmdldEJvdW5kcygpOworICAgICAgICAgICAgUmVjdGFuZ2xlIHJlZHJhd1JlY3QgPSBmRm9ybWF0dGVyLnVwZGF0ZUZvcm1hdChyZWZvcm1hdFN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZvcm1hdExlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZUJvdW5kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZk9yaWdpbik7CisgICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiWzFdIHJlZHJhd1JlY3Q6ICIgKyByZWRyYXdSZWN0KTsKKworICAgICAgICAgICAgaWYgKGFkZGl0aW9uYWxVcGRhdGVSZWN0ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICByZWRyYXdSZWN0LmFkZChhZGRpdGlvbmFsVXBkYXRlUmVjdCk7CisgICAgICAgICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oIlsyXSByZWRyYXdSZWN0OiAiICsgcmVkcmF3UmVjdCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGJvb2xlYW4gaGF2ZVNlbGVjdGlvbjsKKworICAgICAgICAgICAgaWYgKHNlbFN0YXJ0ICE9IG51bGwgJiYgc2VsRW5kICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBoYXZlU2VsZWN0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZWRyYXdSZWN0LmFkZChmRm9ybWF0dGVyLmdldEJvdW5kaW5nUmVjdChzZWxTdGFydCwgc2VsRW5kLCBmT3JpZ2luLCBmRm9ybWF0dGVyLkxPT1NFKSk7CisgICAgICAgICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oIlszXSByZWRyYXdSZWN0OiAiICsgcmVkcmF3UmVjdCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBoYXZlU2VsZWN0aW9uID0gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGRyYXdUZXh0KGZIb3N0LmdldEdyYXBoaWNzKCksIHJlZHJhd1JlY3QsIGhhdmVTZWxlY3Rpb24sIHNlbFN0YXJ0LCBzZWxFbmQsIGhpbGl0ZUNvbG9yKTsKKyAgICAgICAgfQorCisgICAgICAgIHByaXZhdGUgdm9pZCBsZXRCZWhhdmlvckRyYXcoR3JhcGhpY3MgZywgUmVjdGFuZ2xlIGRyYXdSZWN0KSB7CisKKyAgICAgICAgICAgIGJvb2xlYW4gcmVzdWx0ID0gZmFsc2U7CisKKyAgICAgICAgICAgIGlmIChmSG9zdC5mQmVoYXZpb3IgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZIb3N0LmZCZWhhdmlvci5wYWludChnLCBkcmF3UmVjdCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgICAgICAgICAgZHJhd1RleHQoZywgZHJhd1JlY3QsIGZhbHNlLCBudWxsLCBudWxsLCBudWxsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgbW92ZUJ5KGludCBkeCwgaW50IGR5KSB7CisKKyAgICAgICAgICAgIFJlY3RhbmdsZSB2aXNpYmxlQm91bmRzID0gZkhvc3QuZ2V0Qm91bmRzKCk7CisgICAgICAgICAgICBHcmFwaGljcyBnID0gZkhvc3QuZ2V0R3JhcGhpY3MoKTsKKworICAgICAgICAgICAgZkJvdW5kcy54ICs9IGR4OworICAgICAgICAgICAgZkJvdW5kcy55ICs9IGR5OworICAgICAgICAgICAgZk9yaWdpbi54ICs9IGR4OworICAgICAgICAgICAgZk9yaWdpbi55ICs9IGR5OworCisgICAgICAgICAgICBSZWN0YW5nbGUgcmVmcmVzaFJlY3QgPSBuZXcgUmVjdGFuZ2xlKHZpc2libGVCb3VuZHMpOworCisgICAgICAgICAgICBpZiAoZHggPT0gMCkgeworICAgICAgICAgICAgICAgIGlmIChnICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgZy5jb3B5QXJlYSh2aXNpYmxlQm91bmRzLngsIHZpc2libGVCb3VuZHMueSwgdmlzaWJsZUJvdW5kcy53aWR0aCwgdmlzaWJsZUJvdW5kcy5oZWlnaHQsIGR4LCBkeSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChkeSA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFJlY3QueSA9IHZpc2libGVCb3VuZHMueSArIHZpc2libGVCb3VuZHMuaGVpZ2h0ICsgZHk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJlZnJlc2hSZWN0LmhlaWdodCA9IE1hdGguYWJzKGR5KTsKKyAgICAgICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigicmVmcmVzaFJlY3Q9IiArIHJlZnJlc2hSZWN0KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGV0QmVoYXZpb3JEcmF3KGcsIHJlZnJlc2hSZWN0KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHJpdmF0ZSBSZWN0YW5nbGUgZ2V0SW5zZXRCb3VuZHMoKSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGludCBpbnNldERpbSA9IDIgKiBmSW5zZXRBbW91bnQ7CisgICAgICAgICAgICByZXR1cm4gbmV3IFJlY3RhbmdsZShmQm91bmRzLngtZkluc2V0QW1vdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZkJvdW5kcy55LWZJbnNldEFtb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZCb3VuZHMud2lkdGgraW5zZXREaW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmQm91bmRzLmhlaWdodCtpbnNldERpbSk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHBhaW50KEdyYXBoaWNzIGcpIHsKKworICAgICAgICAgICAgUmVjdGFuZ2xlIGhvc3RCb3VuZHMgPSBmSG9zdC5nZXRCb3VuZHMoKTsKKyAgICAgICAgICAgIFJlY3RhbmdsZSB0ZXh0UmVmcmVzaFJlY3QgPSBob3N0Qm91bmRzLmludGVyc2VjdGlvbihnZXRJbnNldEJvdW5kcygpKTsKKyAgICAgICAgICAgIGxldEJlaGF2aW9yRHJhdyhnLCB0ZXh0UmVmcmVzaFJlY3QpOworICAgICAgICB9CisKKyAgICAgICAgUmVjdGFuZ2xlIGdldENhcmV0UmVjdChUZXh0T2Zmc2V0IG9mZnNldCkgeworCisgICAgICAgICAgICByZXR1cm4gZkZvcm1hdHRlci5nZXRDYXJldFJlY3Qob2Zmc2V0LCBmT3JpZ2luKTsKKyAgICAgICAgfQorCisgICAgICAgIFRleHRPZmZzZXQgcG9pbnRUb1RleHRPZmZzZXQoVGV4dE9mZnNldCByZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCBhbmNob3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBpbmZpbml0ZU1vZGUpIHsKKworICAgICAgICAgICAgcmV0dXJuIGZGb3JtYXR0ZXIucG9pbnRUb1RleHRPZmZzZXQocmVzdWx0LCB4LCB5LCBmT3JpZ2luLCBhbmNob3IsIGluZmluaXRlTW9kZSk7CisgICAgICAgIH0KKworICAgICAgICBSZWN0YW5nbGUgZ2V0U2Nyb2xsYWJsZUFyZWEoKSB7CisKKyAgICAgICAgICAgIFJlY3RhbmdsZSBhcmVhID0gbmV3IFJlY3RhbmdsZShmQm91bmRzKTsKKyAgICAgICAgICAgIGFyZWEueCArPSBmSW5zZXRBbW91bnQgLSBmT3JpZ2luLng7CisgICAgICAgICAgICBhcmVhLnkgKz0gZkluc2V0QW1vdW50IC0gZk9yaWdpbi55OworICAgICAgICAgICAgcmV0dXJuIGFyZWE7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogRG9lc24ndCBjbG9uZSBzbyBUZXh0Q29tcG9uZW50IG5lZWRzIHRvIGJlIG5pY2UuICBUZXh0Q29tcG9uZW50CisgICAgICAgICAqIGlzIHRoZSBvbmx5IGNsYXNzIHdoaWNoIGNhbiBhY2Nlc3MgdGhpcyBhbnl3YXkuCisgICAgICAgICAqLworICAgICAgICBSZWN0YW5nbGUgZ2V0RG9jdW1lbnRCb3VuZHMoKSB7CisKKyAgICAgICAgICAgIHJldHVybiBmQm91bmRzOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpbnQgZ2V0RG9jWCgpIHsKKyAgICAgICAgCisgICAgICAgICAgICByZXR1cm4gZk9yaWdpbi54IC0gZkluc2V0QW1vdW50OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpbnQgZ2V0RG9jWSgpIHsKKyAgICAgICAgCisgICAgICAgICAgICByZXR1cm4gZk9yaWdpbi55IC0gZkluc2V0QW1vdW50OworICAgICAgICB9CisKKyAgICAgICAgaW50IGxpbmVDb250YWluaW5nKFRleHRPZmZzZXQgb2Zmc2V0KSB7CisKKyAgICAgICAgICAgIHJldHVybiBmRm9ybWF0dGVyLmxpbmVDb250YWluaW5nKG9mZnNldCk7CisgICAgICAgIH0KKworICAgICAgICBpbnQgbGluZVJhbmdlTG93KGludCBsaW5lTnVtYmVyKSB7CisKKyAgICAgICAgICAgIHJldHVybiBmRm9ybWF0dGVyLmxpbmVSYW5nZUxvdyhsaW5lTnVtYmVyKTsKKyAgICAgICAgfQorCisgICAgICAgIGludCBsaW5lUmFuZ2VMaW1pdChpbnQgbGluZU51bWJlcikgeworCisgICAgICAgICAgICByZXR1cm4gZkZvcm1hdHRlci5saW5lUmFuZ2VMaW1pdChsaW5lTnVtYmVyKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgc3RvcEJhY2tncm91bmRGb3JtYXR0aW5nKCkgeworCisgICAgICAgICAgICBmRm9ybWF0dGVyLnN0b3BCYWNrZ3JvdW5kRm9ybWF0dGluZygpOworICAgICAgICB9CisKKyAgICAgICAgUmVjdGFuZ2xlIGdldEJvdW5kaW5nUmVjdChUZXh0T2Zmc2V0IG9mZnNldDEsIFRleHRPZmZzZXQgb2Zmc2V0MikgeworCisgICAgICAgICAgICBSZWN0YW5nbGUgciA9IGZGb3JtYXR0ZXIuZ2V0Qm91bmRpbmdSZWN0KG9mZnNldDEsIG9mZnNldDIsIGZPcmlnaW4sIGZGb3JtYXR0ZXIuVElHSFQpOworICAgICAgICAgICAgLy9yLndpZHRoICs9IENBUkVUX1NMT1A7CisgICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigib2Zmc2V0MT0iK29mZnNldDErIjsgb2Zmc2V0Mj0iK29mZnNldDIpOworICAgICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oImJvdW5kcyB3aWR0aD0iK3Iud2lkdGgrIjsgaG9zdCB3aWR0aD0iKyhmSG9zdC5nZXRCb3VuZHMoKS53aWR0aCkpOworICAgICAgICAgICAgcmV0dXJuIHI7CisgICAgICAgIH0KKworICAgICAgICBUZXh0T2Zmc2V0IGZpbmROZXdJbnNlcnRpb25PZmZzZXQoVGV4dE9mZnNldCByZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IGluaXRpYWxPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IHByZXZpb3VzT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnQgZGlyZWN0aW9uKSB7CisKKyAgICAgICAgICAgIHJldHVybiBmRm9ybWF0dGVyLmZpbmROZXdJbnNlcnRpb25PZmZzZXQoCisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQsIGluaXRpYWxPZmZzZXQsIHByZXZpb3VzT2Zmc2V0LCBkaXJlY3Rpb24pOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL1RleHRFZGl0QmVoYXZpb3IuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9UZXh0RWRpdEJlaGF2aW9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMjRhYTAyZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9UZXh0RWRpdEJlaGF2aW9yLmphdmEKQEAgLTAsMCArMSw0ODQgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFRleHRFZGl0QmVoYXZpb3IuamF2YSx2ICQgJFJldmlzaW9uOiAxLjIgJCAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNjo0OCAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbDsKKworaW1wb3J0IGphdmEuYXd0LlJlY3RhbmdsZTsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZU1hcDsKKworaW1wb3J0IGphdmEuYXd0LmV2ZW50LkFjdGlvbkV2ZW50OworaW1wb3J0IGphdmEuYXd0LmV2ZW50LktleUV2ZW50OworaW1wb3J0IGphdmEuYXd0LmV2ZW50Lk1vdXNlRXZlbnQ7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuTUNvbnN0VGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuTVRleHQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0Zm9ybWF0LlRleHRPZmZzZXQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0LlN0eWxlTW9kaWZpZXI7CisKKy8vIEFsbCBjaGFuZ2VzIHRvIHRoZSB0ZXh0IHNob3VsZCBoYXBwZW4gaW4gdGhpcyBjbGFzcywgb3IgaW4KKy8vIGl0cyBUeXBpbmdJbnRlcmFjdG9yLgorCitjbGFzcyBUZXh0RWRpdEJlaGF2aW9yIGV4dGVuZHMgQmVoYXZpb3IgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcml2YXRlIFRleHRDb21wb25lbnQgZlRleHRDb21wb25lbnQ7CisgICAgcHJpdmF0ZSBUZXh0U2VsZWN0aW9uIGZTZWxlY3Rpb247CisgICAgcHJpdmF0ZSBNVGV4dCBmVGV4dDsKKyAgICBwcml2YXRlIFNpbXBsZUNvbW1hbmRMb2cgZkNvbW1hbmRMb2c7CisgICAgcHJpdmF0ZSBQYW5lbEV2ZW50QnJvYWRjYXN0ZXIgZkxpc3RlbmVyOworICAgIHByaXZhdGUgVHlwaW5nSW50ZXJhY3RvciBmVHlwaW5nSW50ZXJhY3RvciA9IG51bGw7CisgICAgcHJpdmF0ZSBLZXlSZW1hcCBmUmVtYXA7CisgICAgCisgICAgcHJpdmF0ZSBBdHRyaWJ1dGVNYXAgZlNhdmVkVHlwaW5nU3R5bGUgPSBudWxsOworICAgIHByaXZhdGUgaW50IGZTYXZlZEluc1B0ID0gMDsKKyAgICAKKyAgICBwdWJsaWMgVGV4dEVkaXRCZWhhdmlvcihUZXh0Q29tcG9uZW50IHRleHRDb21wb25lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dFNlbGVjdGlvbiBzZWxlY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFuZWxFdmVudEJyb2FkY2FzdGVyIGxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtleVJlbWFwIHJlbWFwKSB7CisKKyAgICAgICAgZlRleHRDb21wb25lbnQgPSB0ZXh0Q29tcG9uZW50OworICAgICAgICBmU2VsZWN0aW9uID0gc2VsZWN0aW9uOworICAgICAgICBmVGV4dCA9IHRleHRDb21wb25lbnQuZ2V0TW9kaWZpYWJsZVRleHQoKTsKKyAgICAgICAgZkNvbW1hbmRMb2cgPSBuZXcgU2ltcGxlQ29tbWFuZExvZyhsaXN0ZW5lcik7CisgICAgICAgIGZMaXN0ZW5lciA9IGxpc3RlbmVyOworICAgICAgICBmUmVtYXAgPSByZW1hcDsKKyAgICB9CisKKyAgICBwdWJsaWMgS2V5UmVtYXAgZ2V0S2V5UmVtYXAoKSB7CisKKyAgICAgICAgcmV0dXJuIGZSZW1hcDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRLZXlSZW1hcChLZXlSZW1hcCByZW1hcCkgeworCisgICAgICAgIGZSZW1hcCA9IHJlbWFwOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIHRleHRDb250cm9sRXZlbnRPY2N1cnJlZChCZWhhdmlvci5FdmVudFR5cGUgZXZlbnQsIE9iamVjdCB3aGF0KSB7CisKKyAgICAgICAgYm9vbGVhbiBoYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgCisgICAgICAgIGlmIChldmVudCA9PSBCZWhhdmlvci5DSEFSQUNURVJfU1RZTEVfTU9EIHx8CisgICAgICAgICAgICBldmVudCA9PSBCZWhhdmlvci5QQVJBR1JBUEhfU1RZTEVfTU9EKSB7CisgICAgICAgICAgICBkb1N0eWxlQ2hhbmdlKGV2ZW50LCB3aGF0KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChldmVudCA9PSBCZWhhdmlvci5DVVQpIHsKKyAgICAgICAgICAgIGRvQ3V0KCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZXZlbnQgPT0gQmVoYXZpb3IuUEFTVEUpIHsKKyAgICAgICAgICAgIGRvUGFzdGUoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChldmVudCA9PSBCZWhhdmlvci5DTEVBUikgeworICAgICAgICAgICAgZG9DbGVhcigpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGV2ZW50ID09IEJlaGF2aW9yLlJFUExBQ0UpIHsKKyAgICAgICAgICAgIGRvVW5kb2FibGVSZXBsYWNlKChUZXh0UmVwbGFjZW1lbnQpIHdoYXQpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGV2ZW50ID09IEJlaGF2aW9yLlVORE8pIHsKKyAgICAgICAgICAgIGZDb21tYW5kTG9nLnVuZG8oKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChldmVudCA9PSBCZWhhdmlvci5SRURPKSB7CisgICAgICAgICAgICBmQ29tbWFuZExvZy5yZWRvKCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZXZlbnQgPT0gQmVoYXZpb3IuU0VUX01PRElGSUVEKSB7CisgICAgICAgICAgICBmQ29tbWFuZExvZy5zZXRNb2RpZmllZCh3aGF0ID09IEJvb2xlYW4uVFJVRSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZXZlbnQgPT0gQmVoYXZpb3IuQ0xFQVJfQ09NTUFORF9MT0cpIHsKKyAgICAgICAgICAgIGZDb21tYW5kTG9nLmNsZWFyTG9nKCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZXZlbnQgPT0gQmVoYXZpb3IuU0VUX0NPTU1BTkRfTE9HX1NJWkUpIHsKKyAgICAgICAgICAgIGZDb21tYW5kTG9nLnNldExvZ1NpemUoKChJbnRlZ2VyKXdoYXQpLmludFZhbHVlKCkpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaGFuZGxlZCA9IHN1cGVyLnRleHRDb250cm9sRXZlbnRPY2N1cnJlZChldmVudCwgd2hhdCk7CisgICAgICAgIH0KKworICAgICAgICBjaGVja1NhdmVkVHlwaW5nU3R5bGUoKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBoYW5kbGVkOworICAgIH0KKworICAgIC8qKgorICAgICAqIEl0J3MgdW5mb3J0dW5hdGUgdGhhdCB0aGUgdGV4dCBpcyBtb2RpZmllZCBhbmQgcmVmb3JtYXR0ZWQgaW4KKyAgICAgKiB0aHJlZSBkaWZmZXJlbnQgbWV0aG9kcy4gIFRoaXMgbWV0aG9kIGlzIHRoZSAiY29tbW9uIHByb2xvZ3VlIgorICAgICAqIGZvciBhbGwgdGV4dCBtb2RpZmljYXRpb25zLgorICAgICAqCisgICAgICogVGhpcyBtZXRob2Qgc2hvdWxkIGJlIGNhbGxlZCBiZWZvcmUgbW9kaWZ5aW5nIGFuZCByZWZvcm1hdHRpbmcKKyAgICAgKiB0aGUgdGV4dC4gIEl0IGRvZXMgdGhyZWUgdGhpbmdzOiAgc3RvcHMgY2FyZXQgYmxpbmtpbmcsIHN0b3BzCisgICAgICogYmFja2dyb3VuZCBmb3JtYXR0aW5nLCBhbmQgcmV0dXJucyB0aGUgUmVjdGFuZ2xlIGNvbnRhaW5pbmcgdGhlCisgICAgICogY3VycmVudCAoc29vbi10by1iZSBvYnNvbGV0ZSkgc2VsZWN0aW9uLgorICAgICAqLworICAgIHByaXZhdGUgUmVjdGFuZ2xlIHByZXBhcmVGb3JUZXh0RWRpdCgpIHsKKworICAgICAgICBmU2VsZWN0aW9uLnN0b3BDYXJldEJsaW5raW5nKCk7CisgICAgICAgIGZUZXh0Q29tcG9uZW50LnN0b3BCYWNrZ3JvdW5kRm9ybWF0dGluZygpOworICAgICAgICByZXR1cm4gZlRleHRDb21wb25lbnQuZ2V0Qm91bmRpbmdSZWN0KGZTZWxlY3Rpb24uZ2V0U3RhcnQoKSwgZlNlbGVjdGlvbi5nZXRFbmQoKSk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGRvQ2xlYXIoKSB7CisgICAgICAgIFRleHRSYW5nZSBzZWxSYW5nZSA9IGZTZWxlY3Rpb24uZ2V0U2VsZWN0aW9uUmFuZ2UoKTsKKworICAgICAgICBpZiAoc2VsUmFuZ2Uuc3RhcnQgPT0gc2VsUmFuZ2UubGltaXQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZG9VbmRvYWJsZVRleHRDaGFuZ2Uoc2VsUmFuZ2Uuc3RhcnQsIHNlbFJhbmdlLmxpbWl0LCBudWxsLCBuZXcgVGV4dE9mZnNldChzZWxSYW5nZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCksIG5ldyBUZXh0T2Zmc2V0KHNlbFJhbmdlLnN0YXJ0KSk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGRvQ3V0KCkgeworICAgICAgICBUZXh0UmFuZ2Ugc2VsUmFuZ2UgPSBmU2VsZWN0aW9uLmdldFNlbGVjdGlvblJhbmdlKCk7CisKKyAgICAgICAgaWYgKHNlbFJhbmdlLnN0YXJ0ID09IHNlbFJhbmdlLmxpbWl0KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGZUZXh0Q29tcG9uZW50LmdldENsaXBib2FyZCgpLnNldENvbnRlbnRzKGZUZXh0LmV4dHJhY3Qoc2VsUmFuZ2Uuc3RhcnQsIHNlbFJhbmdlLmxpbWl0KSk7CisgICAgICAgIGRvVW5kb2FibGVUZXh0Q2hhbmdlKHNlbFJhbmdlLnN0YXJ0LCBzZWxSYW5nZS5saW1pdCwgbnVsbCwgbmV3IFRleHRPZmZzZXQoc2VsUmFuZ2Uuc3RhcnQpLCBuZXcgVGV4dE9mZnNldChzZWxSYW5nZS5zdGFydCkpOworCisgICAgICAgIGZMaXN0ZW5lci50ZXh0U3RhdGVDaGFuZ2VkKFRleHRQYW5lbEV2ZW50LkNMSVBCT0FSRF9DSEFOR0VEKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgZG9QYXN0ZSgpIHsKKyAgICAgICAgVGV4dFJhbmdlIHNlbFJhbmdlID0gZlNlbGVjdGlvbi5nZXRTZWxlY3Rpb25SYW5nZSgpOworICAgICAgICBNQ29uc3RUZXh0IGNsaXBUZXh0ID0gZlRleHRDb21wb25lbnQuZ2V0Q2xpcGJvYXJkKCkuZ2V0Q29udGVudHMoQXR0cmlidXRlTWFwLkVNUFRZX0FUVFJJQlVURV9NQVApOworCisgICAgICAgIGlmIChjbGlwVGV4dCAhPSBudWxsKSB7CisgICAgICAgICAgICBkb1VuZG9hYmxlVGV4dENoYW5nZShzZWxSYW5nZS5zdGFydCwgc2VsUmFuZ2UubGltaXQsIGNsaXBUZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgVGV4dE9mZnNldChzZWxSYW5nZS5zdGFydCArIGNsaXBUZXh0Lmxlbmd0aCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFRleHRPZmZzZXQoc2VsUmFuZ2Uuc3RhcnQgKyBjbGlwVGV4dC5sZW5ndGgoKSkpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZkxpc3RlbmVyLnRleHRTdGF0ZUNoYW5nZWQoVGV4dFBhbmVsRXZlbnQuQ0xJUEJPQVJEX0NIQU5HRUQpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGRvVW5kb2FibGVSZXBsYWNlKFRleHRSZXBsYWNlbWVudCByZXBsYWNlbWVudCkgeworCisgICAgICAgIGRvVW5kb2FibGVUZXh0Q2hhbmdlKHJlcGxhY2VtZW50LmdldFN0YXJ0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50LmdldExpbWl0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50LmdldFRleHQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnQuZ2V0U2VsZWN0aW9uU3RhcnQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnQuZ2V0U2VsZWN0aW9uTGltaXQoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogT25seSBUeXBpbmdJbnRlcmFjdG9yIGFuZCBUZXh0Q29tbWFuZCBzaG91bGQgY2FsbCB0aGlzIQorICAgICAqLworICAgIHZvaWQgZG9SZXBsYWNlVGV4dChpbnQgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgTUNvbnN0VGV4dCBuZXdUZXh0LAorICAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IG5ld1NlbFN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IG5ld1NlbEVuZCkgeworCisgICAgICAgIGludCB0ZXh0TGVuZ3RoOworCisgICAgICAgIGZUZXh0LnJlc2V0RGFtYWdlZFJhbmdlKCk7CisKKyAgICAgICAgUmVjdGFuZ2xlIG9sZFNlbFJlY3QgPSBwcmVwYXJlRm9yVGV4dEVkaXQoKTsKKworICAgICAgICBpZiAobmV3VGV4dCA9PSBudWxsKSB7CisgICAgICAgICAgICB0ZXh0TGVuZ3RoID0gMDsKKyAgICAgICAgICAgIGZUZXh0LnJlbW92ZShzdGFydCwgbGltaXQpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGV4dExlbmd0aCA9IG5ld1RleHQubGVuZ3RoKCk7CisgICAgICAgICAgICBmVGV4dC5yZXBsYWNlKHN0YXJ0LCBsaW1pdCwgbmV3VGV4dCwgMCwgdGV4dExlbmd0aCk7CisgICAgICAgIH0KKyAgICAgICAgZlNlbGVjdGlvbi5zZXRTZWxlY3Rpb25SYW5nZShuZXdTZWxTdGFydCwgbmV3U2VsRW5kLCBuZXdTZWxTdGFydCk7CisgICAgICAgIHJlZm9ybWF0QW5kRHJhd1RleHQoZlNlbGVjdGlvbi5nZXRTdGFydCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZTZWxlY3Rpb24uZ2V0RW5kKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkU2VsUmVjdCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogT25seSB0aGUgdHlwaW5nIGludGVyYWN0b3Igc2hvdWxkIGNhbGwgdGhpcyEKKyAgICAgKi8KKyAgICB2b2lkIGRvUmVwbGFjZVNlbGVjdGVkVGV4dChjaGFyIGNoLCBBdHRyaWJ1dGVNYXAgY2hhclN0eWxlKSB7CisKKyAgICAgICAgaW50IHN0YXJ0ID0gZlNlbGVjdGlvbi5nZXRTdGFydCgpLmZPZmZzZXQ7CisgICAgICAgIGludCBsaW1pdCA9IGZTZWxlY3Rpb24uZ2V0RW5kKCkuZk9mZnNldDsKKyAgICAgICAgVGV4dE9mZnNldCBuZXdPZmZzZXQgPSBuZXcgVGV4dE9mZnNldChzdGFydCArIDEpOworICAgICAgICBkb1JlcGxhY2VUZXh0KHN0YXJ0LCBsaW1pdCwgY2gsIGNoYXJTdHlsZSwgbmV3T2Zmc2V0LCBuZXdPZmZzZXQpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBkb1JlcGxhY2VUZXh0KGludCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVNYXAgY2hhclN0eWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgbmV3U2VsU3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCBuZXdTZWxFbmQpIHsKKworICAgICAgICBmVGV4dC5yZXNldERhbWFnZWRSYW5nZSgpOworCisgICAgICAgIFJlY3RhbmdsZSBvbGRTZWxSZWN0ID0gcHJlcGFyZUZvclRleHRFZGl0KCk7CisKKyAgICAgICAgZlRleHQucmVwbGFjZShzdGFydCwgbGltaXQsIGNoLCBjaGFyU3R5bGUpOworCisgICAgICAgIGZTZWxlY3Rpb24uc2V0U2VsZWN0aW9uUmFuZ2UobmV3U2VsU3RhcnQsIG5ld1NlbEVuZCwgbmV3U2VsU3RhcnQpOworICAgICAgICByZWZvcm1hdEFuZERyYXdUZXh0KGZTZWxlY3Rpb24uZ2V0U3RhcnQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmU2VsZWN0aW9uLmdldEVuZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZFNlbFJlY3QpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBkb1N0eWxlQ2hhbmdlKEJlaGF2aW9yLkV2ZW50VHlwZSBldmVudCwgT2JqZWN0IHdoYXQpIHsKKworICAgICAgICBUZXh0UmFuZ2Ugc2VsUmFuZ2UgPSBmU2VsZWN0aW9uLmdldFNlbGVjdGlvblJhbmdlKCk7CisgICAgICAgIGJvb2xlYW4gY2hhcmFjdGVyID0gKGV2ZW50ID09IEJlaGF2aW9yLkNIQVJBQ1RFUl9TVFlMRV9NT0QpOworCisgICAgICAgIGlmIChzZWxSYW5nZS5zdGFydCAhPSBzZWxSYW5nZS5saW1pdCB8fCAhY2hhcmFjdGVyKSB7CisgICAgICAgICAgICBkb1VuZG9hYmxlU3R5bGVDaGFuZ2Uod2hhdCwgY2hhcmFjdGVyKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFR5cGluZ0ludGVyYWN0b3IgaW50ZXJhY3RvciA9CisgICAgICAgICAgICAgICAgbmV3IFR5cGluZ0ludGVyYWN0b3IoZlRleHRDb21wb25lbnQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZTZWxlY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZlNhdmVkVHlwaW5nU3R5bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmQ29tbWFuZExvZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmTGlzdGVuZXIpOworCisgICAgICAgICAgICBpbnRlcmFjdG9yLmFkZFRvT3duZXIoZlRleHRDb21wb25lbnQpOworICAgICAgICAgICAgaW50ZXJhY3Rvci50ZXh0Q29udHJvbEV2ZW50T2NjdXJyZWQoZXZlbnQsIHdoYXQpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogT25seSB0ZXh0IGNvbW1hbmRzIHNob3VsZCBjYWxsIHRoaXMgbWV0aG9kIQorICAgICAqLworICAgIHZvaWQgZG9Nb2RpZnlTdHlsZXMoaW50IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgU3R5bGVNb2RpZmllciBtb2RpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gY2hhcmFjdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCBuZXdTZWxTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgbmV3U2VsRW5kKSB7CisKKyAgICAgICAgZlRleHQucmVzZXREYW1hZ2VkUmFuZ2UoKTsKKworICAgICAgICBSZWN0YW5nbGUgb2xkU2VsUmVjdCA9IHByZXBhcmVGb3JUZXh0RWRpdCgpOworCisgICAgICAgIGlmIChjaGFyYWN0ZXIpIHsKKyAgICAgICAgICAgIGZUZXh0Lm1vZGlmeUNoYXJhY3RlclN0eWxlcyhzdGFydCwgbGltaXQsIG1vZGlmaWVyKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZUZXh0Lm1vZGlmeVBhcmFncmFwaFN0eWxlcyhzdGFydCwgbGltaXQsIG1vZGlmaWVyKTsKKyAgICAgICAgfQorCisgICAgICAgIGZTZWxlY3Rpb24uc2V0U2VsZWN0aW9uUmFuZ2UobmV3U2VsU3RhcnQsIG5ld1NlbEVuZCwgbmV3U2VsU3RhcnQpOworICAgICAgICByZWZvcm1hdEFuZERyYXdUZXh0KG5ld1NlbFN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NlbEVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRTZWxSZWN0KTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgZG9VbmRvYWJsZVN0eWxlQ2hhbmdlKE9iamVjdCB3aGF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBjaGFyYWN0ZXIpIHsKKworICAgICAgICBUZXh0T2Zmc2V0IHNlbFN0YXJ0ID0gZlNlbGVjdGlvbi5nZXRTdGFydCgpOworICAgICAgICBUZXh0T2Zmc2V0IHNlbEVuZCA9IGZTZWxlY3Rpb24uZ2V0RW5kKCk7CisKKyAgICAgICAgTVRleHQgb2xkVGV4dCA9IGZUZXh0LmV4dHJhY3RXcml0YWJsZShzZWxTdGFydC5mT2Zmc2V0LCBzZWxFbmQuZk9mZnNldCk7CisgICAgICAgIFN0eWxlQ2hhbmdlQ29tbWFuZCBjb21tYW5kID0gbmV3IFN0eWxlQ2hhbmdlQ29tbWFuZCgKKyAgICAgICAgICAgICAgICB0aGlzLCBvbGRUZXh0LCBzZWxTdGFydCwgc2VsRW5kLCAoU3R5bGVNb2RpZmllcikgd2hhdCwgY2hhcmFjdGVyKTsKKworICAgICAgICBmQ29tbWFuZExvZy5hZGRBbmREbyhjb21tYW5kKTsKKworICAgICAgICBmTGlzdGVuZXIudGV4dFN0YXRlQ2hhbmdlZChUZXh0UGFuZWxFdmVudC5TRUxFQ1RJT05fU1RZTEVTX0NIQU5HRUQpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBkb1VuZG9hYmxlVGV4dENoYW5nZShpbnQgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUNvbnN0VGV4dCBuZXdUZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IG5ld1NlbFN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IG5ld1NlbEVuZCkgeworCisgICAgICAgIFRleHRDaGFuZ2VDb21tYW5kIGNvbW1hbmQgPSBuZXcgVGV4dENoYW5nZUNvbW1hbmQodGhpcywgZlRleHQuZXh0cmFjdFdyaXRhYmxlKHN0YXJ0LCBsaW1pdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1RleHQsIHN0YXJ0LCBmU2VsZWN0aW9uLmdldFN0YXJ0KCksIGZTZWxlY3Rpb24uZ2V0RW5kKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NlbFN0YXJ0LCBuZXdTZWxFbmQpOworCisgICAgICAgIGZDb21tYW5kTG9nLmFkZEFuZERvKGNvbW1hbmQpOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGNhblVuZG8oKSB7CisKKyAgICAgICAgYm9vbGVhbiBjYW5VbmRvID0gZmFsc2U7CisKKyAgICAgICAgaWYgKGZUeXBpbmdJbnRlcmFjdG9yICE9IG51bGwpIHsKKyAgICAgICAgICAgIGNhblVuZG8gPSBmVHlwaW5nSW50ZXJhY3Rvci5oYXNQZW5kaW5nQ29tbWFuZCgpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFjYW5VbmRvKSB7CisgICAgICAgICAgICBjYW5VbmRvID0gZkNvbW1hbmRMb2cuY2FuVW5kbygpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGNhblVuZG87CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gY2FuUmVkbygpIHsKKworICAgICAgICByZXR1cm4gZkNvbW1hbmRMb2cuY2FuUmVkbygpOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGlzTW9kaWZpZWQoKSB7CisKKyAgICAgICAgaWYgKGZUeXBpbmdJbnRlcmFjdG9yICE9IG51bGwpIHsKKyAgICAgICAgICAgIGlmIChmVHlwaW5nSW50ZXJhY3Rvci5oYXNQZW5kaW5nQ29tbWFuZCgpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZDb21tYW5kTG9nLmlzTW9kaWZpZWQoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50IGdldENvbW1hbmRMb2dTaXplKCkgeworCisgICAgICAgIHJldHVybiBmQ29tbWFuZExvZy5nZXRMb2dTaXplKCk7CisgICAgfQorCisgICAgcHVibGljIEF0dHJpYnV0ZU1hcCBnZXRJbnNlcnRpb25Qb2ludFN0eWxlKCkgeworCisgICAgICAgIGlmIChmVHlwaW5nSW50ZXJhY3RvciAhPSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gZlR5cGluZ0ludGVyYWN0b3IuZ2V0VHlwaW5nU3R5bGUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChmU2F2ZWRUeXBpbmdTdHlsZSAhPSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gZlNhdmVkVHlwaW5nU3R5bGU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFRleHRSYW5nZSByYW5nZSA9IGZTZWxlY3Rpb24uZ2V0U2VsZWN0aW9uUmFuZ2UoKTsKKyAgICAgICAgcmV0dXJuIHR5cGluZ1N0eWxlQXQoZlRleHQsIHJhbmdlLnN0YXJ0LCByYW5nZS5saW1pdCk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBib29sZWFuIGtleVByZXNzZWQoS2V5RXZlbnQgZSkgeworCisgICAgICAgIGJvb2xlYW4gaGFuZGxlZCA9IHRydWU7CisgICAgICAgIGlmIChUeXBpbmdJbnRlcmFjdG9yLmhhbmRsZWRCeVR5cGluZ0ludGVyYWN0b3IoZSkpIHsKKyAgICAgICAgICAgIFR5cGluZ0ludGVyYWN0b3IgaW50ZXJhY3RvciA9IG5ldyBUeXBpbmdJbnRlcmFjdG9yKGZUZXh0Q29tcG9uZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZlNlbGVjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZTYXZlZFR5cGluZ1N0eWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZDb21tYW5kTG9nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZkxpc3RlbmVyKTsKKworICAgICAgICAgICAgaW50ZXJhY3Rvci5hZGRUb093bmVyKGZUZXh0Q29tcG9uZW50KTsKKyAgICAgICAgICAgIGludGVyYWN0b3Iua2V5UHJlc3NlZChlKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGhhbmRsZWQgPSBzdXBlci5rZXlQcmVzc2VkKGUpOworICAgICAgICAgICAgY2hlY2tTYXZlZFR5cGluZ1N0eWxlKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBoYW5kbGVkOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGtleVR5cGVkKEtleUV2ZW50IGUpIHsKKyAgICAgICAgCisgICAgICAgIGJvb2xlYW4gaGFuZGxlZCA9IHRydWU7CisgICAgICAgIGlmIChUeXBpbmdJbnRlcmFjdG9yLmhhbmRsZWRCeVR5cGluZ0ludGVyYWN0b3IoZSkpIHsKKyAgICAgICAgICAgIFR5cGluZ0ludGVyYWN0b3IgaW50ZXJhY3RvciA9IG5ldyBUeXBpbmdJbnRlcmFjdG9yKGZUZXh0Q29tcG9uZW50LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZTZWxlY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmU2F2ZWRUeXBpbmdTdHlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmQ29tbWFuZExvZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZMaXN0ZW5lcik7CisKKyAgICAgICAgICAgIGludGVyYWN0b3IuYWRkVG9Pd25lcihmVGV4dENvbXBvbmVudCk7CisgICAgICAgICAgICBpbnRlcmFjdG9yLmtleVR5cGVkKGUpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaGFuZGxlZCA9IHN1cGVyLmtleVR5cGVkKGUpOworICAgICAgICAgICAgY2hlY2tTYXZlZFR5cGluZ1N0eWxlKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBoYW5kbGVkOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIG1vdXNlUmVsZWFzZWQoTW91c2VFdmVudCBlKSB7CisgICAgICAgIAorICAgICAgICBib29sZWFuIHJlc3VsdCA9IHN1cGVyLm1vdXNlUmVsZWFzZWQoZSk7CisgICAgICAgIGNoZWNrU2F2ZWRUeXBpbmdTdHlsZSgpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHZvaWQgcmVmb3JtYXRBbmREcmF3VGV4dChUZXh0T2Zmc2V0IHNlbFN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgc2VsTGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVjdGFuZ2xlIG9sZFNlbFJlY3QpCisgICAgeworICAgICAgICBpZiAoIWZTZWxlY3Rpb24uZW5hYmxlZCgpKSB7CisgICAgICAgICAgICBzZWxTdGFydCA9IHNlbExpbWl0ID0gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIGludCByZWZvcm1hdFN0YXJ0ID0gZlRleHQuZGFtYWdlZFJhbmdlU3RhcnQoKTsKKyAgICAgICAgaW50IHJlZm9ybWF0TGVuZ3RoID0gZlRleHQuZGFtYWdlZFJhbmdlTGltaXQoKSAtIHJlZm9ybWF0U3RhcnQ7CisKKyAgICAgICAgaWYgKHJlZm9ybWF0U3RhcnQgIT0gSW50ZWdlci5NQVhfVkFMVUUpIHsKKyAgICAgICAgICAgIGZUZXh0Q29tcG9uZW50LnJlZm9ybWF0QW5kRHJhd1RleHQocmVmb3JtYXRTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmb3JtYXRMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbFN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxMaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkU2VsUmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZlNlbGVjdGlvbi5nZXRIaWdobGlnaHRDb2xvcigpKTsKKyAgICAgICAgfQorCisgICAgICAgIGZTZWxlY3Rpb24uc2Nyb2xsVG9TaG93U2VsZWN0aW9uKCk7CisgICAgICAgIAorICAgICAgICAvLyBzb21ldGltZXMgdGhpcyBzaG91bGQgc2VuZCBTRUxFQ1RJT05fU1RZTEVTX0NIQU5HRUQKKyAgICAgICAgZkxpc3RlbmVyLnRleHRTdGF0ZUNoYW5nZWQoVGV4dFBhbmVsRXZlbnQuVEVYVF9DSEFOR0VEKTsKKworICAgICAgICBmU2VsZWN0aW9uLnJlc3RhcnRDYXJldEJsaW5raW5nKHRydWUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIE9ubHkgVHlwaW5nSW50ZXJhY3RvciBzaG91bGQgY2FsbCB0aGlzLgorICAgICAqLworICAgIHZvaWQgc2V0VHlwaW5nSW50ZXJhY3RvcihUeXBpbmdJbnRlcmFjdG9yIGludGVyYWN0b3IpIHsKKyAgICAgICAgZlR5cGluZ0ludGVyYWN0b3IgPSBpbnRlcmFjdG9yOworICAgIH0KKworICAgIC8qKgorICAgICAqIE9ubHkgVHlwaW5nSW50ZXJhY3RvciBzaG91bGQgY2FsbCB0aGlzLgorICAgICAqLworICAgIHZvaWQgc2V0U2F2ZWRUeXBpbmdTdHlsZShBdHRyaWJ1dGVNYXAgc3R5bGUsIGludCBpbnNQdCkgeworICAgIAorICAgICAgICBmU2F2ZWRUeXBpbmdTdHlsZSA9IHN0eWxlOworICAgICAgICBmU2F2ZWRJbnNQdCA9IGluc1B0OworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHZvaWQgY2hlY2tTYXZlZFR5cGluZ1N0eWxlKCkgeworICAgIAorICAgICAgICBpZiAoZlNhdmVkVHlwaW5nU3R5bGUgIT0gbnVsbCkgeworICAgICAgICAgICAgaW50IHNlbFN0YXJ0ID0gZlNlbGVjdGlvbi5nZXRTdGFydCgpLmZPZmZzZXQ7CisgICAgICAgICAgICBpbnQgc2VsTGltaXQgPSBmU2VsZWN0aW9uLmdldEVuZCgpLmZPZmZzZXQ7CisgICAgICAgICAgICBpZiAoc2VsU3RhcnQgIT0gZlNhdmVkSW5zUHQgfHwgc2VsU3RhcnQgIT0gc2VsTGltaXQpIHsKKyAgICAgICAgICAgICAgICBmU2F2ZWRUeXBpbmdTdHlsZSA9IG51bGw7CisgICAgICAgICAgICB9CisgICAgICAgIH0gICAgICAgICAgICAKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBzdHlsZSBhcHByb3ByaWF0ZSBmb3IgdHlwaW5nIG9uIHRoZSBnaXZlbiBzZWxlY3Rpb24KKyAgICAgKiByYW5nZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIEF0dHJpYnV0ZU1hcCB0eXBpbmdTdHlsZUF0KE1Db25zdFRleHQgdGV4dCwgaW50IHN0YXJ0LCBpbnQgbGltaXQpIHsKKworICAgICAgICBpZiAoc3RhcnQgPCBsaW1pdCkgeworICAgICAgICAgICAgcmV0dXJuIHRleHQuY2hhcmFjdGVyU3R5bGVBdChzdGFydCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoc3RhcnQgPiAwKSB7CisgICAgICAgICAgICByZXR1cm4gdGV4dC5jaGFyYWN0ZXJTdHlsZUF0KHN0YXJ0IC0gMSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gdGV4dC5jaGFyYWN0ZXJTdHlsZUF0KDApOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL1RleHRQYW5lbC5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL1RleHRQYW5lbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjczZjE0YmUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvVGV4dFBhbmVsLmphdmEKQEAgLTAsMCArMSw1NDMgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFRleHRQYW5lbC5qYXZhLHYgJCAkUmV2aXNpb246IDEuMyAkICREYXRlOiAyMDAyLzAyLzE2IDAzOjA2OjQ4ICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsOworCitpbXBvcnQgamF2YS5hd3QuQm9yZGVyTGF5b3V0OworaW1wb3J0IGphdmEuYXd0LkNvbXBvbmVudDsKK2ltcG9ydCBqYXZhLmF3dC5HcmFwaGljczsKK2ltcG9ydCBqYXZhLmF3dC5QYW5lbDsKK2ltcG9ydCBqYXZhLmF3dC5TY3JvbGxiYXI7CisKK2ltcG9ydCBqYXZhLmF3dC5kYXRhdHJhbnNmZXIuQ2xpcGJvYXJkOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlTWFwOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0LlN0eWxlTW9kaWZpZXI7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1Db25zdFRleHQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0LlN0eWxlZFRleHQ7CisKKy8qKgorICogVGV4dFBhbmVsIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIE1UZXh0UGFuZWwgaW4gYW4gQVdUIFBhbmVsLgorICogQHNlZSBNVGV4dFBhbmVsCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBUZXh0UGFuZWwgZXh0ZW5kcyBQYW5lbCBpbXBsZW1lbnRzIE1UZXh0UGFuZWwgeworCisgICAgcHJpdmF0ZSBBVGV4dFBhbmVsSW1wbCBmSW1wbDsKKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSBUZXh0UGFuZWxTZXR0aW5ncyBpbnN0YW5jZSB3aXRoIGFsbCBzZXR0aW5ncyBzZXQKKyAgICAgKiB0byB0aGUgZGVmYXVsdCB2YWx1ZXMuICBDbGllbnRzIGNhbiBtb2RpZnkgdGhpcyBvYmplY3Q7CisgICAgICogbW9kaWZpY2F0aW9ucyB3aWxsIG5vdCBhZmZlY3QgdGhlIGRlZmF1bHQgdmFsdWVzLgorICAgICAqIEByZXR1cm4gYSBUZXh0UGFuZWxTZXR0aW5ncyBpbnN0YW5jZSBzZXQgdG8gZGVmYXVsdCB2YWx1ZXMKKyAgICAgKiBAc2VlIFRleHRQYW5lbFNldHRpbmdzCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBUZXh0UGFuZWxTZXR0aW5ncyBnZXREZWZhdWx0U2V0dGluZ3MoKSB7CisKKyAgICAgICAgcmV0dXJuIEFUZXh0UGFuZWxJbXBsLmdldERlZmF1bHRTZXR0aW5ncygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZSBhIG5ldyBUZXh0UGFuZWwgd2l0aCB0aGUgZGVmYXVsdCBzZXR0aW5ncy4KKyAgICAgKiBAcGFyYW0gaW5pdGlhbFRleHQgdGhlIHRleHQgZG9jdW1lbnQuICBJZiBudWxsIGRvY3VtZW50IHRleHQgaXMgZW1wdHkuCisgICAgICogQHBhcmFtIGNsaXBib2FyZCB0aGUgY2xpcGJvYXJkIHRvIHVzZSBmb3IgY3V0LCBjb3B5LCBhbmQgcGFzdGUKKyAgICAgKiAgb3BlcmF0aW9ucy4gIElmIG51bGwgdGhpcyBwYW5lbCB3aWxsIHVzZSBhIHByaXZhdGUgY2xpcGJvYXJkLgorICAgICAqLworICAgIHB1YmxpYyBUZXh0UGFuZWwoTUNvbnN0VGV4dCBpbml0aWFsVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgIENsaXBib2FyZCBjbGlwYm9hcmQpIHsKKworICAgICAgICB0aGlzKEFUZXh0UGFuZWxJbXBsLmZnRGVmYXVsdFNldHRpbmdzLCBpbml0aWFsVGV4dCwgY2xpcGJvYXJkKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSBuZXcgVGV4dFBhbmVsLgorICAgICAqIEBwYXJhbSBzZXR0aW5ncyB0aGUgc2V0dGluZ3MgZm9yIHRoaXMgVGV4dFBhbmVsCisgICAgICogQHBhcmFtIGluaXRpYWxUZXh0IHRoZSB0ZXh0IGRvY3VtZW50LiAgSWYgbnVsbCBkb2N1bWVudCB0ZXh0IGlzIGVtcHR5LgorICAgICAqIEBwYXJhbSBjbGlwYm9hcmQgdGhlIGNsaXBib2FyZCB0byB1c2UgZm9yIGN1dCwgY29weSwgYW5kIHBhc3RlCisgICAgICogIG9wZXJhdGlvbnMuICBJZiBudWxsIHRoaXMgcGFuZWwgd2lsbCB1c2UgYSBwcml2YXRlIGNsaXBib2FyZC4KKyAgICAgKiBAc2VlIFRleHRQYW5lbFNldHRpbmdzCisgICAgICovCisgICAgcHVibGljIFRleHRQYW5lbChUZXh0UGFuZWxTZXR0aW5ncyBzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgIE1Db25zdFRleHQgaW5pdGlhbFRleHQsCisgICAgICAgICAgICAgICAgICAgICBDbGlwYm9hcmQgY2xpcGJvYXJkKSB7CisKKyAgICAgICAgU2Nyb2xsYmFyIGhvcnpTYiA9IG51bGw7CisgICAgICAgIFNjcm9sbGJhciB2ZXJ0U2IgPSBudWxsOworICAgICAgICAKKyAgICAgICAgaWYgKHNldHRpbmdzLmdldFNjcm9sbGFibGUoKSkgeworCisgICAgICAgICAgICBzZXRMYXlvdXQobmV3IFNjcm9sbEJhckxheW91dCgpKTsKKworICAgICAgICAgICAgYm9vbGVhbiBzY3JvbGxCYXJzVmlzaWJsZSA9IHNldHRpbmdzLmdldFNjcm9sbEJhcnNWaXNpYmxlKCk7CisKKyAgICAgICAgICAgIGlmIChzY3JvbGxCYXJzVmlzaWJsZSkgeworICAgICAgICAgICAgICAgIGhvcnpTYiA9IG5ldyBTY3JvbGxiYXIoU2Nyb2xsYmFyLkhPUklaT05UQUwpOworICAgICAgICAgICAgICAgIHZlcnRTYiA9IG5ldyBTY3JvbGxiYXIoU2Nyb2xsYmFyLlZFUlRJQ0FMKTsKKyAgICAgICAgICAgICAgICBhZGQoIlNvdXRoIiwgaG9yelNiKTsKKyAgICAgICAgICAgICAgICBhZGQoIkVhc3QiLCB2ZXJ0U2IpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc2V0TGF5b3V0KG5ldyBCb3JkZXJMYXlvdXQoKSk7CisgICAgICAgIH0KKworICAgICAgICBmSW1wbCA9IG5ldyBBVGV4dFBhbmVsSW1wbChuZXcgUnVuU3RyYXRlZ3koKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxUZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwYm9hcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvcnpTYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVydFNiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIGZpbmFsIEZha2VDb21wb25lbnQgdGV4dENvbXBvbmVudCA9IGZJbXBsLmdldFRleHRDb21wb25lbnQoKTsKKyAgICAgICAgCisgICAgICAgIENvbXBvbmVudCB0ZXh0SG9zdCA9IG5ldyBDb21wb25lbnQoKSB7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGV4dENvbXBvbmVudC5zZXRIb3N0KHRoaXMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHVibGljIHZvaWQgYWRkTm90aWZ5KCkgeworICAgICAgICAgICAgICAgIHN1cGVyLmFkZE5vdGlmeSgpOworICAgICAgICAgICAgICAgIHRleHRDb21wb25lbnQuYWRkTm90aWZ5KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBwYWludChHcmFwaGljcyBnKSB7CisgICAgICAgICAgICAgICAgdGV4dENvbXBvbmVudC5wYWludChnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgCisgICAgICAgIGFkZCgiQ2VudGVyIiwgdGV4dEhvc3QpOworCisgICAgICAgIHRleHRIb3N0LnJlcXVlc3RGb2N1cygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEFkZCB0aGUgZ2l2ZW4gVGV4dFBhbmVsTGlzdGVuZXIgdG8gdGhlIGxpc3RlbmVycyB3aGljaCB3aWxsCisgICAgICogcmVjZWl2ZSB1cGRhdGUgbm90aWZpY2F0aW9ucyBmcm9tIHRoaXMgVGV4dFBhbmVsLgorICAgICAqIEBwYXJhbSBsaXN0ZW5lciB0aGUgbGlzdGVuZXIgdG8gYWRkCisgICAgICovCisgICAgcHVibGljIHZvaWQgYWRkTGlzdGVuZXIoVGV4dFBhbmVsTGlzdGVuZXIgbGlzdGVuZXIpIHsKKworICAgICAgICBmSW1wbC5hZGRMaXN0ZW5lcihsaXN0ZW5lcik7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVtb3ZlIHRoZSBnaXZlbiBUZXh0UGFuZWxMaXN0ZW5lciBmcm9tIHRoZSBsaXN0ZW5lcnMgd2hpY2ggd2lsbAorICAgICAqIHJlY2VpdmUgdXBkYXRlIG5vdGlmaWNhdGlvbnMgZnJvbSB0aGlzIFRleHRQYW5lbC4KKyAgICAgKiBAcGFyYW0gbGlzdGVuZXIgdGhlIGxpc3RlbmVyIHRvIHJlbW92ZQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHJlbW92ZUxpc3RlbmVyKFRleHRQYW5lbExpc3RlbmVyIGxpc3RlbmVyKSB7CisKKyAgICAgICAgZkltcGwucmVtb3ZlTGlzdGVuZXIobGlzdGVuZXIpOworICAgIH0KKworLy89PT09PT09PT09PT0KKy8vIFRleHQgQWNjZXNzCisvLz09PT09PT09PT09PQorCisgICAgLyoqCisgICAgICogU2V0IHRoZSBkb2N1bWVudCB0byA8dHQ+bmV3VGV4dDwvdHQ+LiAgVGhpcyBvcGVyYXRpb24KKyAgICAgKiBtb2RpZmllcyB0aGUgdGV4dCBpbiB0aGUgVGV4dFBhbmVsLiAgSXQgZG9lcyBub3QgbW9kaWZ5IG9yIGFkb3B0CisgICAgICogPHR0Pm5ld1RleHQ8L3R0Pi4gIFRoaXMgbWV0aG9kIHNldHMgdGhlIHNlbGVjdGlvbiBhbiBpbnNlcnRpb24gcG9pbnQgYXQKKyAgICAgKiB0aGUgZW5kIG9mIHRoZSB0ZXh0LgorICAgICAqIEBwYXJhbSBuZXdUZXh0IHRoZSB0ZXh0IHdoaWNoIHdpbGwgcmVwbGFjZSB0aGUgY3VycmVudCB0ZXh0LgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFRleHQoTUNvbnN0VGV4dCBuZXdUZXh0KSB7CisKKyAgICAgICAgZkltcGwuc2V0VGV4dChuZXdUZXh0KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBcHBlbmQgdGhlIGdpdmVuIHRleHQgdG8gdGhlIGVuZCBvZiB0aGUgZG9jdW1lbnQuICBFcXVpdmFsZW50IHRvCisgICAgICogPHR0Pmluc2VydChuZXdUZXh0LCBnZXRUZXh0TGVuZ3RoKCkpPC90dD4uCisgICAgICogQHBhcmFtIG5ld1RleHQgdGhlIHRleHQgdG8gYXBwZW5kIHRvIHRoZSBkb2N1bWVudAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGFwcGVuZChNQ29uc3RUZXh0IG5ld1RleHQpIHsKKworICAgICAgICBmSW1wbC5hcHBlbmQobmV3VGV4dCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogSW5zZXJ0IHRoZSBnaXZlbiB0ZXh0IGludG8gdGhlIGRvY3VtZW50IGF0IHRoZSBnaXZlbiBwb3NpdGlvbi4KKyAgICAgKiBFcXVpdmFsZW50IHRvCisgICAgICogPHR0PnJlcGxhY2VSYW5nZShuZXdUZXh0LCBwb3NpdGlvbiwgcG9zaXRpb24pPC90dD4uCisgICAgICogQHBhcmFtIG5ld1RleHQgdGhlIHRleHQgdG8gaW5zZXJ0IGludG8gdGhlIGRvY3VtZW50LgorICAgICAqIEBwYXJhbSBwb3NpdGlvbiB0aGUgcG9zaXRpb24gaW4gdGhlIGRvY3VtZW50IHdoZXJlIHRoZQorICAgICAqICAgICB0ZXh0IHdpbGwgYmUgaW5zZXJ0ZWQKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBpbnNlcnQoTUNvbnN0VGV4dCBuZXdUZXh0LCBpbnQgcG9zaXRpb24pIHsKKworICAgICAgICBmSW1wbC5pbnNlcnQobmV3VGV4dCwgcG9zaXRpb24pOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlcGxhY2UgdGhlIGdpdmVuIHJhbmdlIHdpdGggPHR0Pm5ld1RleHQ8L3R0Pi4gIEFmdGVyIHRoaXMKKyAgICAgKiBvcGVyYXRpb24gdGhlIHNlbGVjdGlvbiByYW5nZSBpcyBhbiBpbnNlcnRpb24gcG9pbnQgYXQgdGhlCisgICAgICogZW5kIG9mIHRoZSBuZXcgdGV4dC4KKyAgICAgKiBAcGFyYW0gbmV3VGV4dCB0aGUgdGV4dCB3aXRoIHdoaWNoIHRvIHJlcGxhY2UgdGhlIHJhbmdlCisgICAgICogQHBhcmFtIHN0YXJ0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHJhbmdlIHRvIHJlcGxhY2UKKyAgICAgKiBAcGFyYW0gZW5kIHRoZSBlbmQgb2YgdGhlIHJhbmdlIHRvIHJlcGxhY2UKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCByZXBsYWNlUmFuZ2UoTUNvbnN0VGV4dCBuZXdUZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpIHsKKworICAgICAgICBmSW1wbC5yZXBsYWNlUmFuZ2UobmV3VGV4dCwgc3RhcnQsIGVuZCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIHRleHQgZG9jdW1lbnQgaW4gdGhlIFRleHRQYW5lbC4KKyAgICAgKiBAcmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIHRleHQgZG9jdW1lbnQgaW4gdGhlIFRleHRQYW5lbAorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0VGV4dExlbmd0aCgpIHsKKworICAgICAgICByZXR1cm4gZkltcGwuZ2V0VGV4dExlbmd0aCgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgdGV4dCBkb2N1bWVudCBpbiB0aGUgVGV4dFBhbmVsLgorICAgICAqIEByZXR1cm4gdGhlIHRleHQgZG9jdW1lbnQgaW4gdGhlIFRleHRQYW5lbC4KKyAgICAgKi8KKyAgICBwdWJsaWMgTUNvbnN0VGV4dCBnZXRUZXh0KCkgeworCisgICAgICAgIHJldHVybiBmSW1wbC5nZXRUZXh0KCk7CisgICAgfQorCisvLz09PT09PT09PT09PQorLy8gU2VsZWN0aW9uIEFjY2VzcworLy89PT09PT09PT09PT0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgb2Zmc2V0IG9mIHRoZSBzdGFydCBvZiB0aGUgc2VsZWN0aW9uLgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0U2VsZWN0aW9uU3RhcnQoKSB7CisKKyAgICAgICAgcmV0dXJuIGZJbXBsLmdldFNlbGVjdGlvblN0YXJ0KCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBvZmZzZXQgb2YgdGhlIGVuZCBvZiB0aGUgc2VsZWN0aW9uLgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0U2VsZWN0aW9uRW5kKCkgeworCisgICAgICAgIHJldHVybiBmSW1wbC5nZXRTZWxlY3Rpb25FbmQoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2VsZWN0aW9uIHJhbmdlLiAgVGhpcyBpcworICAgICAqIGVxdWl2YWxlbnQgdG8gPHR0PnNlbGVjdChzZWxlY3Rpb25TdGFydCwgZ2V0U2VsZWN0aW9uRW5kKCkpPC90dD4uCisgICAgICogQHBhcmFtIHNlbGVjdGlvblN0YXJ0IHRoZSBzdGFydCBvZiB0aGUgbmV3IHNlbGVjdGlvbiByYW5nZQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFNlbGVjdGlvblN0YXJ0KGludCBzZWxlY3Rpb25TdGFydCkgeworCisgICAgICAgIGZJbXBsLnNldFNlbGVjdGlvblN0YXJ0KHNlbGVjdGlvblN0YXJ0KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIGVuZCBvZiB0aGUgc2VsZWN0aW9uIHJhbmdlLiAgVGhpcyBpcworICAgICAqIGVxdWl2YWxlbnQgdG8gPHR0PnNlbGVjdChnZXRTZWxlY3Rpb25TdGFydCgpLCBzZWxlY3Rpb25FbmQpPC90dD4uCisgICAgICogQHBhcmFtIHNlbGVjdGlvblN0YXJ0IHRoZSBzdGFydCBvZiB0aGUgbmV3IHNlbGVjdGlvbiByYW5nZQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFNlbGVjdGlvbkVuZChpbnQgc2VsZWN0aW9uRW5kKSB7CisKKyAgICAgICAgZkltcGwuc2V0U2VsZWN0aW9uRW5kKHNlbGVjdGlvbkVuZCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0IHRoZSBzZWxlY3Rpb24gcmFuZ2UgdG8gYW4gaW5zZXJ0aW9uIHBvaW50IGF0IHRoZSBnaXZlbgorICAgICAqIG9mZnNldC4gIFRoaXMgaXMgZXF1aXZhbGVudCB0bworICAgICAqIDx0dD5zZWxlY3QocG9zaXRpb24sIHBvc2l0aW9uKTwvdHQ+LgorICAgICAqIEBwYXJhbSBwb3NpdGlvbiB0aGUgb2Zmc2V0IG9mIHRoZSBuZXcgaW5zZXJ0aW9uIHBvaW50CisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0Q2FyZXRQb3NpdGlvbihpbnQgcG9zaXRpb24pIHsKKworICAgICAgICBmSW1wbC5zZXRDYXJldFBvc2l0aW9uKHBvc2l0aW9uKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIHNlbGVjdGlvbiByYW5nZSB0byB0aGUgZ2l2ZW4gcmFuZ2UuICBUaGUgcmFuZ2Ugc3RhcnQKKyAgICAgKiBpcyBwaW5uZWQgYmV0d2VlbiAwIGFuZCB0aGUgdGV4dCBsZW5ndGg7ICB0aGUgcmFuZ2UgZW5kIGlzIHBpbm5lZAorICAgICAqIGJldHdlZW4gdGhlIHJhbmdlIHN0YXJ0IGFuZCB0aGUgZW5kIG9mIHRoZSB0ZXh0LiAgVGhlc2Ugc2VtYW50aWNzCisgICAgICogYXJlIGlkZW50aWNhbCB0byB0aG9zZSBvZiA8dHQ+amF2YS5hd3QuVGV4dENvbXBvbmVudDwvdHQ+LgorICAgICAqIFRoaXMgbWV0aG9kIGhhcyBubyBlZmZlY3QgaWYgdGhlIHRleHQgaXMgbm90IHNlbGVjdGFibGUuCisgICAgICogQHBhcmFtIHNlbGVjdGlvblN0YXJ0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlbGVjdGlvbiByYW5nZQorICAgICAqIEBwYXJhbSBzZWxlY3Rpb25FbmQgdGhlIGVuZCBvZiB0aGUgc2VsZWN0aW9uIHJhbmdlCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2VsZWN0KGludCBzZWxlY3Rpb25TdGFydCwgaW50IHNlbGVjdGlvbkVuZCkgeworCisgICAgICAgIGZJbXBsLnNlbGVjdChzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZWxlY3QgYWxsIG9mIHRoZSB0ZXh0IGluIHRoZSBkb2N1bWVudC4gIFRoaXMgbWV0aG9kIGhhcyBubyBlZmZlY3QgaWYKKyAgICAgKiB0aGUgdGV4dCBpcyBub3Qgc2VsZWN0YWJsZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZWxlY3RBbGwoKSB7CisKKyAgICAgICAgZkltcGwuc2VsZWN0QWxsKCk7CisgICAgfQorCisKKy8vPT09PT09PT09PT09CisvLyBGb3JtYXQgV2lkdGgKKy8vPT09PT09PT09PT09CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIHRvdGFsIGZvcm1hdCB3aWR0aCwgaW4gcGl4ZWxzLiAgVGhlIGZvcm1hdCB3aWR0aCBpcyB0aGUKKyAgICAgKiB3aWR0aCB0byB3aGljaCB0ZXh0IGlzIHdyYXBwZWQuCisgICAgICogQHJldHVybiB0aGUgZm9ybWF0IHdpZHRoCisgICAgICovCisgICAgcHVibGljIGludCBnZXRGb3JtYXRXaWR0aCgpIHsKKworICAgICAgICByZXR1cm4gZkltcGwuZ2V0Rm9ybWF0V2lkdGgoKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgdGhlIHBhcmFncmFwaCBhdCB0aGUgZ2l2ZW4gb2Zmc2V0IGlzIGxlZnQtdG8tcmlnaHQuCisgICAgICogQHBhcmFtIG9mZnNldCBhbiBvZmZzZXQgaW4gdGhlIHRleHQKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIHBhcmFncmFwaCBhdCB0aGUgZ2l2ZW4gb2Zmc2V0IGlzIGxlZnQtdG8tcmlnaHQKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBwYXJhZ3JhcGhJc0xlZnRUb1JpZ2h0KGludCBvZmZzZXQpIHsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBmSW1wbC5wYXJhZ3JhcGhJc0xlZnRUb1JpZ2h0KG9mZnNldCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgdGhlcmUgaXMgYSBjaGFuZ2Ugd2hpY2ggY2FuIGJlIHVuZG9uZS4KKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlcmUgaXMgYSBjaGFuZ2Ugd2hpY2ggY2FuIGJlIHVuZG9uZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBjYW5VbmRvKCkgeworCisgICAgICAgIHJldHVybiBmSW1wbC5jYW5VbmRvKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgdGhlcmUgaXMgYSBjaGFuZ2Ugd2hpY2ggY2FuIGJlIHJlZG9uZS4KKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlcmUgaXMgYSBjaGFuZ2Ugd2hpY2ggY2FuIGJlIHJlZG9uZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBjYW5SZWRvKCkgeworCisgICAgICAgIHJldHVybiBmSW1wbC5jYW5SZWRvKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgdGhlIGNsaXBib2FyZCBjb250YWlucyBjb250ZW50cyB3aGljaCBjb3VsZCBiZQorICAgICAqIHRyYW5zZmVyZWQgaW50byB0aGUgdGV4dC4KKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGNsaXBib2FyZCBoYXMgdGV4dCBjb250ZW50LgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGNsaXBib2FyZE5vdEVtcHR5KCkgeworCisgICAgICAgIHJldHVybiBmSW1wbC5jbGlwYm9hcmROb3RFbXB0eSgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhbiBBdHRyaWJ1dGVNYXAgb2Yga2V5cyB3aXRoIGRlZmF1bHQgdmFsdWVzLiAgVGhlIGRlZmF1bHQKKyAgICAgKiB2YWx1ZXMgYXJlIHVzZWQgd2hlbiBkaXNwbGF5aW5nIHRleHQgZm9yIHZhbHVlcyB3aGljaCBhcmUgbm90CisgICAgICogc3BlY2lmaWVkIGluIHRoZSB0ZXh0LgorICAgICAqIEByZXR1cm4gYW4gQXR0cmlidXRlTWFwIG9mIGRlZmF1bHQga2V5LXZhbHVlIHBhaXJzCisgICAgICovCisgICAgcHVibGljIEF0dHJpYnV0ZU1hcCBnZXREZWZhdWx0VmFsdWVzKCkgeworCisgICAgICAgIHJldHVybiBmSW1wbC5nZXREZWZhdWx0VmFsdWVzKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhpcyBtZXRob2QgaW5zcGVjdHMgdGhlIGNoYXJhY3RlciBzdHlsZSBydW5zIGluIHRoZSBzZWxlY3Rpb24KKyAgICAgKiByYW5nZSAob3IgdGhlIHR5cGluZyBzdHlsZSBhdCB0aGUgaW5zZXJ0aW9uIHBvaW50KS4gIEl0IHJldHVybnM6CisgICAgICogPHVsPgorICAgICAqIDxsaT5UaGUgdmFsdWUgb2YgPHR0PmtleTwvdHQ+LCBpZiB0aGUgdmFsdWUgb2YgPHR0PmtleTwvdHQ+CisgICAgICogaXMgdGhlIHNhbWUgaW4gYWxsIG9mIHRoZSBzdHlsZSBydW5zIGluIHRoZSBzZWxlY3Rpb24sIG9yPC9saT4KKyAgICAgKiA8bGk+PHR0Pk1VTFRJUExFX1ZBTFVFUzwvdHQ+LCBpZiB0d28gb3IgbW9yZSBzdHlsZSBydW5zIGhhdmUgZGlmZmVyZW50IAorICAgICAqIHZhbHVlcyBmb3IgPHR0PmtleTwvdHQ+LjwvbGk+CisgICAgICogPC91bD4KKyAgICAgKiBJZiBhIHN0eWxlIHJ1biBkb2VzIG5vdCBjb250YWluIDx0dD5rZXk8L3R0PiwKKyAgICAgKiBpdHMgdmFsdWUgaXMgY29uc2lkZXJlZCB0byBiZSB0aGUgZGVmYXVsdCBzdHlsZSBmb3IgPHR0PmtleTwvdHQ+LAorICAgICAqIGFzIGRlZmluZWQgYnkgdGhlIGRlZmF1bHQgdmFsdWVzIEF0dHJpYnV0ZU1hcC4gIE5vdGUgdGhhdCBpZgorICAgICAqIDx0dD5rZXk8L3R0PiBkb2VzIG5vdCBoYXZlIGEgZGVmYXVsdCB2YWx1ZSB0aGlzIG1ldGhvZCBtYXkgcmV0dXJuCisgICAgICogbnVsbC4KKyAgICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VmdWwgZm9yIGNvbmZpZ3VyaW5nIHN0eWxlIG1lbnVzLgorICAgICAqIEBwYXJhbSBrZXkgdGhlIGtleSB1c2VkIHRvIHJldHJpZXZlIHZhbHVlcyBmb3IgY29tcGFyaXNvbgorICAgICAqIEBzZWUgTVRleHRQYW5lbCNNVUxUSVBMRV9WQUxVRVMKKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0IGdldENoYXJhY3RlclN0eWxlT3ZlclNlbGVjdGlvbihPYmplY3Qga2V5KSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gZkltcGwuZ2V0Q2hhcmFjdGVyU3R5bGVPdmVyU2VsZWN0aW9uKGtleSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhpcyBtZXRob2QgaW5zcGVjdHMgdGhlIHBhcmFncmFwaCBzdHlsZSBydW5zIGluIHRoZSBzZWxlY3Rpb24KKyAgICAgKiByYW5nZSAob3IgdGhlIHR5cGluZyBzdHlsZSBhdCB0aGUgaW5zZXJ0aW9uIHBvaW50KS4gIEl0IHJldHVybnM6CisgICAgICogPHVsPgorICAgICAqIDxsaT5UaGUgdmFsdWUgb2YgPHR0PmtleTwvdHQ+LCBpZiB0aGUgdmFsdWUgb2YgPHR0PmtleTwvdHQ+CisgICAgICogaXMgdGhlIHNhbWUgaW4gYWxsIG9mIHRoZSBzdHlsZSBydW5zIGluIHRoZSBzZWxlY3Rpb24sIG9yPC9saT4KKyAgICAgKiA8bGk+PHR0Pk1VTFRJUExFX1ZBTFVFUzwvdHQ+LCBpZiB0d28gb3IgbW9yZSBzdHlsZSBydW5zIGhhdmUgCisgICAgICogZGlmZmVyZW50IHZhbHVlcyBmb3IgPHR0PmtleTwvdHQ+LjwvbGk+CisgICAgICogPC91bD4KKyAgICAgKiBJZiBhIHN0eWxlIHJ1biBkb2VzIG5vdCBjb250YWluIDx0dD5rZXk8L3R0PiwKKyAgICAgKiBpdHMgdmFsdWUgaXMgY29uc2lkZXJlZCB0byBiZSB0aGUgZGVmYXVsdCBzdHlsZSBmb3IgPHR0PmtleTwvdHQ+LAorICAgICAqIGFzIGRlZmluZWQgYnkgdGhlIGRlZmF1bHQgdmFsdWVzIEF0dHJpYnV0ZU1hcC4gIE5vdGUgdGhhdCBpZgorICAgICAqIDx0dD5rZXk8L3R0PiBkb2VzIG5vdCBoYXZlIGEgZGVmYXVsdCB2YWx1ZSB0aGlzIG1ldGhvZCBtYXkgcmV0dXJuCisgICAgICogbnVsbC4KKyAgICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VmdWwgZm9yIGNvbmZpZ3VyaW5nIHN0eWxlIG1lbnVzLgorICAgICAqIEBwYXJhbSBrZXkgdGhlIGtleSB1c2VkIHRvIHJldHJpZXZlIHZhbHVlcyBmb3IgY29tcGFyaXNvbgorICAgICAqIEBzZWUgTVRleHRQYW5lbCNNVUxUSVBMRV9WQUxVRVMKKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0IGdldFBhcmFncmFwaFN0eWxlT3ZlclNlbGVjdGlvbihPYmplY3Qga2V5KSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gZkltcGwuZ2V0UGFyYWdyYXBoU3R5bGVPdmVyU2VsZWN0aW9uKGtleSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVtb3ZlIHRoZSBzZWxlY3RlZCB0ZXh0IGZyb20gdGhlIGRvY3VtZW50IGFuZCBwbGFjZSBpdAorICAgICAqIG9uIHRoZSBjbGlwYm9hcmQuICBUaGlzIG1ldGhvZCBoYXMgbm8gZWZmZWN0IGlmIHRoZSB0ZXh0CisgICAgICogaXMgbm90IGVkaXRhYmxlLCBvciBpZiBubyB0ZXh0IGlzIHNlbGVjdGVkLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGN1dCgpIHsKKyAgICAgICAgZkltcGwuY3V0KCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUGxhY2UgdGhlIHNlbGVjdGVkIHRleHQgb24gdGhlIGNsaXBib2FyZC4gIFRoaXMgbWV0aG9kIGhhcworICAgICAqIG5vIGVmZmVjdCBpZiBubyB0ZXh0IGlzIHNlbGVjdGVkLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGNvcHkoKSB7CisgICAgICAgIGZJbXBsLmNvcHkoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXBsYWNlIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgdGV4dCB3aXRoIHRoZSB0ZXh0IG9uIHRoZSBjbGlwYm9hcmQuCisgICAgICogVGhpcyBtZXRob2QgaGFzIG5vIGVmZmVjdCBpZiB0aGUgdGV4dCBpcyBub3QgZWRpdGFibGUsIG9yIGlmIG5vCisgICAgICogdGV4dCBpcyBvbiB0aGUgY2xpcGJvYXJkLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHBhc3RlKCkgeworICAgICAgICBmSW1wbC5wYXN0ZSgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlbW92ZSBzZWxlY3RlZCB0ZXh0IGZyb20gdGhlIGRvY3VtZW50LCB3aXRob3V0IGFsdGVyaW5nIHRoZSBjbGlwYm9hcmQuCisgICAgICogVGhpcyBtZXRob2QgaGFzIG5vIGVmZmVjdCBpZiB0aGUKKyAgICAgKiB0ZXh0IGlzIG5vdCBlZGl0YWJsZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBjbGVhcigpIHsKKyAgICAgICAgZkltcGwuY2xlYXIoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBVbmRvIHRoZSBtb3N0IHJlY2VudCB0ZXh0IGNoYW5nZS4gIFRoaXMgbWV0aG9kIGhhcyBubyBlZmZlY3QgaWYKKyAgICAgKiB0aGVyZSBpcyBubyBjaGFuZ2UgdG8gdW5kby4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCB1bmRvKCkgeworICAgICAgICBmSW1wbC51bmRvKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVkbyB0aGUgbW9zdCByZWNlbnQgdGV4dCBjaGFuZ2UuICBUaGlzIG1ldGhvZCBoYXMgbm8gZWZmZWN0IGlmCisgICAgICogdGhlcmUgaXMgbm8gY2hhbmdlIHRvIHJlZG8uCisgICAgICovCisgICAgcHVibGljIHZvaWQgcmVkbygpIHsKKyAgICAgICAgZkltcGwucmVkbygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgbnVtYmVyIG9mIGNvbW1hbmRzIHRoZSBjb21tYW5kIGxvZyBjYW4gaG9sZC4KKyAgICAgKiBAcmV0dXJuIHRoZSBudW1iZXIgb2YgY29tbWFuZHMgdGhlIGNvbW1hbmQgbG9nIGNhbiBob2xkCisgICAgICovCisgICAgcHVibGljIGludCBnZXRDb21tYW5kTG9nU2l6ZSgpIHsKKworICAgICAgICByZXR1cm4gZkltcGwuZ2V0Q29tbWFuZExvZ1NpemUoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIG51bWJlciBvZiBjb21tYW5kcyB0aGUgY29tbWFuZCBsb2cgY2FuIGhvbGQuICBBbGwKKyAgICAgKiByZWRvYWJsZSBjb21tYW5kcyBhcmUgcmVtb3ZlZCB3aGVuIHRoaXMgbWV0aG9kIGlzIGNhbGxlZC4KKyAgICAgKiBAcGFyYW0gc2l6ZSB0aGUgbnVtYmVyIG9mIGNvbW1hbmRzIGtlcHQgaW4gdGhlIGNvbW1hbmQgbG9nCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0Q29tbWFuZExvZ1NpemUoaW50IHNpemUpIHsKKyAgICAgICAgZkltcGwuc2V0Q29tbWFuZExvZ1NpemUoc2l6ZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVtb3ZlIGFsbCBjb21tYW5kcyBmcm9tIHRoZSBjb21tYW5kIGxvZy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBjbGVhckNvbW1hbmRMb2coKSB7CisgICAgICAgIGZJbXBsLmNsZWFyQ29tbWFuZExvZygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIE1vZGlmeSB0aGUgY2hhcmFjdGVyIHN0eWxlcyBvbiB0aGUgc2VsZWN0ZWQgY2hhcmFjdGVycy4gIElmIG5vIGNoYXJhY3RlcnMKKyAgICAgKiBhcmUgc2VsZWN0ZWQsIG1vZGlmeSB0aGUgdHlwaW5nIHN0eWxlLgorICAgICAqIEBwYXJhbSBtb2RpZmllciB0aGUgU3R5bGVNb2RpZmllciB3aXRoIHdoaWNoIHRvIG1vZGlmeSB0aGUgc3R5bGVzCisgICAgICovCisgICAgcHVibGljIHZvaWQgbW9kaWZ5Q2hhcmFjdGVyU3R5bGVPblNlbGVjdGlvbihTdHlsZU1vZGlmaWVyIG1vZGlmaWVyKSB7CisgICAgICAgIGZJbXBsLm1vZGlmeUNoYXJhY3RlclN0eWxlT25TZWxlY3Rpb24obW9kaWZpZXIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIE1vZGlmeSB0aGUgcGFyYWdyYXBoIHN0eWxlcyBpbiBwYXJhZ3JhcGhzIGNvbnRhaW5pbmcgc2VsZWN0ZWQgY2hhcmFjdGVycywgb3IKKyAgICAgKiB0aGUgcGFyYWdyYXBoIGNvbnRhaW5pbmcgdGhlIGluc2VydGlvbiBwb2ludC4KKyAgICAgKiBAcGFyYW0gbW9kaWZpZXIgdGhlIFN0eWxlTW9kaWZpZXIgd2l0aCB3aGljaCB0byBtb2RpZnkgdGhlIHN0eWxlcworICAgICAqLworICAgIHB1YmxpYyB2b2lkIG1vZGlmeVBhcmFncmFwaFN0eWxlT25TZWxlY3Rpb24oU3R5bGVNb2RpZmllciBtb2RpZmllcikgeworICAgICAgICBmSW1wbC5tb2RpZnlQYXJhZ3JhcGhTdHlsZU9uU2VsZWN0aW9uKG1vZGlmaWVyKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIEtleVJlbWFwIHVzZWQgdG8gcHJvY2VzcyBrZXkgZXZlbnRzLgorICAgICAqIEByZXR1cm4gdGhlIGtleSByZW1hcCB1c2VkIHRvIHByb2Nlc3Mga2V5IGV2ZW50cworICAgICAqIEBzZWUgI3NldEtleVJlbWFwCisgICAgICovCisgICAgcHVibGljIEtleVJlbWFwIGdldEtleVJlbWFwKCkgeworCisgICAgICAgIHJldHVybiBmSW1wbC5nZXRLZXlSZW1hcCgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFVzZSB0aGUgZ2l2ZW4gS2V5UmVtYXAgdG8gbWFwIGtleSBldmVudHMgdG8gY2hhcmFjdGVycy4KKyAgICAgKiBPbmx5IGtleQorICAgICAqIGV2ZW50cyBhcmUgYWZmZWN0ZWQgYnkgdGhlIHJlbWFwOyAgb3RoZXIgdGV4dCBlbnRlcmluZyB0aGUKKyAgICAgKiBjb250cm9sICh2aWEgdGhlIGNsaXBib2FyZCwgZm9yIGV4YW1wbGUpIGlzIG5vdCBhZmZlY3RlZAorICAgICAqIGJ5IHRoZSBLZXlSZW1hcC4KKyAgICAgKiA8cD4KKyAgICAgKiBEbyBub3QgcGFzcyA8dHQ+bnVsbDwvdHQ+IHRvIHRoaXMgbWV0aG9kIHRvIGxlYXZlIGtleQorICAgICAqIGV2ZW50cyB1bm1hcHBlZC4gIEluc3RlYWQsIHVzZSA8dHQ+S2V5UmVtYXAuZ2V0SWRlbnRpdHlSZW1hcCgpPC90dD4KKyAgICAgKiBAcGFyYW0gcmVtYXAgdGhlIEtleVJlbWFwIHRvIHVzZSBmb3IgbWFwcGluZyBrZXkgZXZlbnRzIHRvIGNoYXJhY3RlcnMKKyAgICAgKiBAZXhjZXB0aW9uIGphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiBpZiBwYXJhbWV0ZXIgaXMgbnVsbAorICAgICAqIEBzZWUgS2V5UmVtYXAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRLZXlSZW1hcChLZXlSZW1hcCByZW1hcCkgeworCisgICAgICAgIGZJbXBsLnNldEtleVJlbWFwKHJlbWFwKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIG1vZGlmaWNhdGlvbiBmbGFnIG9mIHRoZSBjdXJyZW50IHRleHQgY2hhbmdlLgorICAgICAqIEBzZWUgI3NldE1vZGlmaWVkCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNNb2RpZmllZCgpIHsKKworICAgICAgICByZXR1cm4gZkltcGwuaXNNb2RpZmllZCgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCB0aGUgbW9kaWZpY2F0aW9uIGZsYWcgb2YgdGhlIGN1cnJlbnQgdGV4dCBjaGFuZ2UuCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0TW9kaWZpZWQoYm9vbGVhbiBtb2RpZmllZCkgeworICAgICAgICAKKyAgICAgICAgZkltcGwuc2V0TW9kaWZpZWQobW9kaWZpZWQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRoaXMgbWV0aG9kIGlzIGZvciBLZXlFdmVudEZvcndhcmRlcidzIHVzZSBvbmx5IQorICAgICAqLworICAgIEFUZXh0UGFuZWxJbXBsIGdldEltcGwoKSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gZkltcGw7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL1RleHRQYW5lbEV2ZW50LmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvVGV4dFBhbmVsRXZlbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lY2Q2NjE4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL1RleHRQYW5lbEV2ZW50LmphdmEKQEAgLTAsMCArMSwxNTcgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFRleHRQYW5lbEV2ZW50LmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NTE6MjMgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWw7CisKK2ltcG9ydCBqYXZhLnV0aWwuRXZlbnRPYmplY3Q7CisKKy8qKgorICogVGV4dFBhbmVsRXZlbnQgaXMgZ2VuZXJhdGVkIGJ5IGFuIE1UZXh0UGFuZWwgdG8gbm90aWZ5IGxpc3RlbmVycworICogb2YgY2hhbmdlcy4gIFRvIHJlY2VpdmUgVGV4dFBhbmVsRXZlbnRzIGZyb20gYW4gTVRleHRQYW5lbCwgY2xpZW50cworICogbXVzdCBpbXBsZW1lbnQgVGV4dFBhbmVsTGlzdGVuZXIgYW5kIGFkZCB0aGVtc2VsdmVzIHRvIHRoZSBNVGV4dFBhbmVsJ3MKKyAqIGxpc3Qgb2YgbGlzdGVuZXJzLgorICogPHA+CisgKiBTb21lIGV2ZW50IHR5cGVzIGFyZSBzcGVjaWFsIGNhc2VzIG9mIG90aGVycy4gIFRoaXMgaXMgaW50ZW50aW9uYWwgLSBpdAorICogYWxsb3dzIG5vdGlmaWNhdGlvbnMgdG8gYmUgc2VudCBsZXNzIG9mdGVuIGluIGNlcnRhaW4gY29tbW9uIGNhc2VzLiAgRm9yCisgKiBleGFtcGxlLCBhIGNoYW5nZSBpbiB0aGUgc2VsZWN0aW9uIHJhbmdlIGdlbmVyYXRlcyBhIFNFTEVDVElPTl9SQU5HRV9DSEFOR0VEIAorICogZXZlbnQuICBUaGlzIGlzIGEgdmVyeSBjb21tb24gb2NjdXJyYW5jZSwgYW5kIGlmIG1hbnkgY2xpZW50cyBsaXN0ZW4gZm9yIHRoaXMKKyAqIGV2ZW50LCB0aGVyZSBtYXkgYmUgYSBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBwZW5hbHR5LiAgQnkKKyAqIGxpc3RlbmluZyBmb3IgYSBtb3JlIHNwZWNpYWxpemVkIGV2ZW50IChzdWNoIGFzIFNFTEVDVElPTl9FTVBUWV9DSEFOR0VEKSwgY2xpZW50cworICogY2FuIHJlZHVjZSB0aGUgbnVtYmVyIG9mIG5vdGlmaWNhdGlvbnMgc2VudC4KKyAqIAorICogQHNlZSBNVGV4dFBhbmVsCisgKiBAc2VlIFRleHRQYW5lbExpc3RlbmVyCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBUZXh0UGFuZWxFdmVudCBleHRlbmRzIEV2ZW50T2JqZWN0IHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgCisgICAgLyoqCisgICAgICogVGhlIGxvd2VyIGJvdW5kIG9mIFRleHRQYW5lbEV2ZW50IElEJ3MuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVEVYVF9QQU5FTF9GSVJTVCA9IDExOworCisgICAgLyoqCisgICAgICogRXZlbnRzIG9mIHRoaXMgdHlwZSBpbmRpY2F0ZSBhIGNoYW5nZSBpbiB0aGUgc2VsZWN0aW9uIHJhbmdlLgorICAgICAqIFRoaXMgb2NjdXJzIHF1aXRlIG9mdGVuLiAgTW9zdCBjbGllbnRzIGRvIG5vdCBuZWVkIHRvIGJlIAorICAgICAqIG5vdGlmaWVkIGV2ZXJ5IHRpbWUgdGhlIHNlbGVjdGlvbiByYW5nZSBjaGFuZ2VzLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNFTEVDVElPTl9SQU5HRV9DSEFOR0VEID0gMTE7CisgICAgCisgICAgLyoqCisgICAgICogRXZlbnRzIG9mIHRoaXMgdHlwZSBhcmUgc2VudCB3aGVuIHRoZSBzZWxlY3Rpb24gcmFuZ2UgYmVjb21lcworICAgICAqIDAtbGVuZ3RoIGFmdGVyIG5vdCBiZWluZyAwLWxlbmd0aCwgb3IgdmljZSB2ZXJzYS4gIFRoaXMgZXZlbnQKKyAgICAgKiBpcyBhIHNwZWNpYWwgY2FzZSBvZiBTRUxFQ1RJT05fUkFOR0VfQ0hBTkdFRC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTRUxFQ1RJT05fRU1QVFlfQ0hBTkdFRCA9IDEyOworICAgIAorICAgIC8qKgorICAgICAqIEV2ZW50cyBvZiB0aGlzIHR5cGUgaW5kaWNhdGUgdGhhdCB0aGUgdGV4dCBpbiB0aGUgVGV4dFBhbmVsIGNoYW5nZWQuCisgICAgICogVGhpcyB0eXBlIG9mIGV2ZW50IG9jY3VycyBvZnRlbi4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBURVhUX0NIQU5HRUQgPSAxMzsKKyAgICAKKyAgICAvKioKKyAgICAgKiBFdmVudHMgb2YgdGhpcyB0eXBlIGFyZSBzZW50IHdoZW4gdGhlIHN0eWxlcyBpbiB0aGUgY3VycmVudAorICAgICAqIHNlbGVjdGlvbiBjaGFuZ2UuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0VMRUNUSU9OX1NUWUxFU19DSEFOR0VEID0gMTQ7CisgICAgIAorICAgIC8qKgorICAgICAqIEV2ZW50cyBvZiB0aGlzIHR5cGUgYXJlIHNlbnQgd2hlbiB0aGUgdW5kby9yZWRvIHN0YXRlIGNoYW5nZXMuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVU5ET19TVEFURV9DSEFOR0VEID0gMTU7CisgICAgCisgICAgLyoqCisgICAgICogRXZlbnRzIG9mIHRoaXMgdHlwZSBhcmUgc2VudCB3aGVuIHRoZSBjbGlwYm9hcmQgc3RhdGUgY2hhbmdlcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDTElQQk9BUkRfQ0hBTkdFRCA9IDE2OworICAgIAorICAgIC8qKgorICAgICAqIEV2ZW50cyBvZiB0aGlzIHR5cGUgYXJlIHNlbnQgd2hlbiAKKyAgICAgKiB0aGUgd3JhcCB3aWR0aCBvZiB0aGUgdGV4dCBjaGFuZ2VzLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZPUk1BVF9XSURUSF9DSEFOR0VEID0gMTc7CisKKyAgICAvKioKKyAgICAgKiBFdmVudHMgb2YgdGhpcyB0eXBlIGFyZSBzZW50IHdoZW4gdGhlIGtleSByZW1hcCBjaGFuZ2VzLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEtFWVJFTUFQX0NIQU5HRUQgPSAxODsKKworICAgIC8qKgorICAgICAqIFRoZSB1cHBlciBib3VuZCBvZiBUZXh0UGFuZWxFdmVudCBJRCdzLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFRFWFRfUEFORUxfTEFTVCA9IDE4OworCisgICAgcHJpdmF0ZSBpbnQgZklkOworCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgbmV3IFRleHRQYW5lbEV2ZW50LgorICAgICAqIEBwYXJhbSBzb3VyY2UgdGhlIE1UZXh0UGFuZWwgd2hpY2ggZ2VuZXJhdGVkIHRoZSBldmVudAorICAgICAqIEBwYXJhbSBpZCB0aGUgSUQgZm9yIHRoaXMgZXZlbnQuICBNdXN0IGJlIHdpdGhpbgorICAgICAqIFtURVhUX1BBTkVMX0ZJUlNULCBURVhUX1BBTkVMX0xBU1RdLgorICAgICAqLworICAgIFRleHRQYW5lbEV2ZW50KE1UZXh0UGFuZWwgc291cmNlLCBpbnQgaWQpIHsKKworICAgICAgICBzdXBlcihzb3VyY2UpOworICAgICAgICBpZiAoaWQgPCBURVhUX1BBTkVMX0ZJUlNUIHx8IGlkID4gVEVYVF9QQU5FTF9MQVNUKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJpZCBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgfQorICAgICAgICBmSWQgPSBpZDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGV2ZW50IElEIGZvciB0aGlzIGV2ZW50LiAgRXZlbnQgSUQncyBhcmUKKyAgICAgKiBvbmUgb2YgdGhlIGNsYXNzIGNvbnN0YW50cy4KKyAgICAgKiBAcmV0dXJuIHRoZSBldmVudCBJRCBmb3IgdGhpcyBldmVudAorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0SUQoKSB7CisKKyAgICAgICAgcmV0dXJuIGZJZDsKKyAgICB9CisgICAgCisgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgCisgICAgICAgIFN0cmluZyBkZXNjID0gbnVsbDsKKyAgICAgICAgCisgICAgICAgIHN3aXRjaChmSWQpIHsKKyAgICAgICAgICAgIGNhc2UgU0VMRUNUSU9OX1JBTkdFX0NIQU5HRUQ6CisgICAgICAgICAgICAgICAgZGVzYyA9ICJTRUxFQ1RJT05fUkFOR0VfQ0hBTkdFRCI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFNFTEVDVElPTl9FTVBUWV9DSEFOR0VEOgorICAgICAgICAgICAgICAgIGRlc2MgPSAiU0VMRUNUSU9OX0VNUFRZX0NIQU5HRUQiOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBURVhUX0NIQU5HRUQ6CisgICAgICAgICAgICAgICAgZGVzYyA9ICJURVhUX0NIQU5HRUQiOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBTRUxFQ1RJT05fU1RZTEVTX0NIQU5HRUQ6CisgICAgICAgICAgICAgICAgZGVzYyA9ICJTRUxFQ1RJT05fU1RZTEVTX0NIQU5HRUQiOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBVTkRPX1NUQVRFX0NIQU5HRUQ6CisgICAgICAgICAgICAgICAgZGVzYyA9ICJVTkRPX1NUQVRFX0NIQU5HRUQiOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDTElQQk9BUkRfQ0hBTkdFRDoKKyAgICAgICAgICAgICAgICBkZXNjID0gIkNMSVBCT0FSRF9DSEFOR0VEIjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRk9STUFUX1dJRFRIX0NIQU5HRUQ6CisgICAgICAgICAgICAgICAgZGVzYyA9ICJGT1JNQVRfV0lEVEhfQ0hBTkdFRCI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEtFWVJFTUFQX0NIQU5HRUQ6CisgICAgICAgICAgICAgICAgZGVzYyA9ICJLRVlSRU1BUF9DSEFOR0VEIjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gIltUZXh0UGFuZWxFdmVudDoiK2Rlc2MrIl0iOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9UZXh0UGFuZWxMaXN0ZW5lci5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL1RleHRQYW5lbExpc3RlbmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMjNlMDcwMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9UZXh0UGFuZWxMaXN0ZW5lci5qYXZhCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFRleHRQYW5lbExpc3RlbmVyLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NTE6MjMgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWw7CisKKy8qKgorICogVGhpcyBpbnRlcmZhY2UgaXMgaW1wbGVtZW50ZWQgYnkgY2xhc3NlcyB3aGljaAorICogcmVjZWl2ZSBjaGFuZ2Ugbm90aWZpY2F0aW9ucyBmcm9tIGFuIE1UZXh0UGFuZWwuCisgKiBAc2VlIE1UZXh0UGFuZWwKKyAqIEBzZWUgVGV4dFBhbmVsRXZlbnQKKyAqLworcHVibGljIGludGVyZmFjZSBUZXh0UGFuZWxMaXN0ZW5lciB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIC8qKgorICAgICAqIE5vdGlmeSBsaXN0ZW5lciBvZiBhbiBNVGV4dFBhbmVsIGNoYW5nZS4KKyAgICAgKiBAcGFyYW0gZXZlbnQgYSBUZXh0UGFuZWxFdmVudCBpbmRpY2F0aW5nIHdoYXQgaGFwcGVuZWQKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCB0ZXh0RXZlbnRPY2N1cnJlZChUZXh0UGFuZWxFdmVudCBldmVudCk7CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgbGlzdGVuZXIgbmVlZHMgdG8gYmUgbm90aWZpZWQgb2YgCisgICAgICogdGhlIGdpdmVuIGV2ZW50IHR5cGUuICBUaGlzIGFsbG93cyBhIHRleHQgcGFuZWwgdG8gYXZvaWQKKyAgICAgKiBzZW5kaW5nIGV2ZW50cyB0byB1bmludGVyZXN0ZWQgcGFydGllcy4KKyAgICAgKiBAcGFyYW0gdHlwZSBhbiBldmVudCBJRCBmcm9tIFRleHRQYW5lbEV2ZW50CisgICAgICogQHJldHVybiB0cnVlIGlmIHRoaXMgbGlzdGVuZXIgbmVlZHMgdG8gYmUgbm90aWZpZWQgb2YKKyAgICAgKiBldmVudHMgb2YgdGhlIGdpdmVuIHR5cGUKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiByZXNwb25kc1RvRXZlbnRUeXBlKGludCB0eXBlKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9UZXh0UGFuZWxTZXR0aW5ncy5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL1RleHRQYW5lbFNldHRpbmdzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMWJkNjk0NQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9UZXh0UGFuZWxTZXR0aW5ncy5qYXZhCkBAIC0wLDAgKzEsMjgzIEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBUZXh0UGFuZWxTZXR0aW5ncy5qYXZhLHYgJCAkUmV2aXNpb246IDEuMiAkICREYXRlOiAyMDAyLzAyLzE2IDAzOjA2OjQ4ICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsOworCitpbXBvcnQgamF2YS5hd3QuQ29sb3I7CitpbXBvcnQgamF2YS5pby5TZXJpYWxpemFibGU7CitpbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZU1hcDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRsYXlvdXQuYXR0cmlidXRlcy5UZXh0QXR0cmlidXRlOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5TdGFuZGFyZFRhYlJ1bGVyOworCisvKioKKyAqIFRoaXMgY2xhc3MgY29udGFpbnMgc2V0dGluZ3MgdXNlZCB3aGVuIGNvbnN0cnVjdGluZyBhbiBNVGV4dFBhbmVsLgorICogVGhlIHNldHRpbmdzIGNvbnRyb2xlZCBieSB0aGlzIGNsYXNzIGluY2x1ZGU6CisgKiA8dWw+CisgKiA8bGk+d2hldGhlciB0aGUgdGV4dCBpbiB0aGUgTVRleHRQYW5lbCBjYW4gYmUgc2Nyb2xsZWQ8L2xpPgorICogPGxpPndoZXRoZXIgc2Nyb2xsIGJhcnMgaW4gdGhlIE1UZXh0UGFuZWwgYXJlIHZpc2libGU8L2xpPgorICogPGxpPndoZXRoZXIgdGhlIHRleHQgaW4gdGhlIE1UZXh0UGFuZWwgY2FuIGJlIHNlbGVjdGVkPC9saT4KKyAqIDxsaT53aGV0aGVyIHRoZSB0ZXh0IGluIHRoZSBNVGV4dFBhbmVsIGNhbiBiZSBlZGl0ZWQ8L2xpPgorICogPGxpPndoZXRoZXIgbGluZXMgb2YgdGV4dCB3cmFwIHRvIHRoZSBNVGV4dFBhbmVsJ3Mgd2lkdGgsIG9yCisgKiBvbmx5IGVuZCBhdCBwYXJhZ3JhcGggc2VwYXJhdG9yczwvbGk+CisgKiA8bGk+dGhlIGRlZmF1bHQgdmFsdWVzIGZvciB1bnNwZWNpZmllZCBzdHlsZXM8L2xpPgorICogPC91bD4KKyAqIFNvbWUgc2V0dGluZ3MgYXJlIGRlcGVuZGVudCBvbiBvdGhlcnMuICBTY3JvbGwgYmFycyBhcmUgdmlzaWJsZQorICogb25seSBpZiB0aGUgdGV4dCBpcyBzY3JvbGxhYmxlLiAgQWxzbywgdGV4dCB3aGljaCBpcyBub3QgZWRpdGFibGUKKyAqIGlmIGl0IGlzIG5vdCBzZWxlY3RhYmxlLgorICogPHA+CisgKgorICogQHNlZSBNVGV4dFBhbmVsCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBUZXh0UGFuZWxTZXR0aW5ncyBpbXBsZW1lbnRzIENsb25lYWJsZSwgU2VyaWFsaXphYmxlIHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgQXR0cmlidXRlTWFwIERFRkFVTFRTOworICAgIHN0YXRpYyB7CisgICAgICAgIGZpbmFsIEZsb2F0IGZsb2F0WmVybyA9IG5ldyBGbG9hdCgwLjBmKTsKKworICAgICAgICBIYXNodGFibGUgZGVmYXVsdHMgPSBuZXcgSGFzaHRhYmxlKCk7CisgICAgICAgIGRlZmF1bHRzLnB1dChUZXh0QXR0cmlidXRlLkZBTUlMWSwgIlNlcmlmIik7CisgICAgICAgIGRlZmF1bHRzLnB1dChUZXh0QXR0cmlidXRlLldFSUdIVCwgbmV3IEZsb2F0KDEuMGYpKTsKKyAgICAgICAgZGVmYXVsdHMucHV0KFRleHRBdHRyaWJ1dGUuUE9TVFVSRSwgZmxvYXRaZXJvKTsKKyAgICAgICAgZGVmYXVsdHMucHV0KFRleHRBdHRyaWJ1dGUuU0laRSwgbmV3IEZsb2F0KDE4LjBmKSk7CisgICAgICAgIGRlZmF1bHRzLnB1dChUZXh0QXR0cmlidXRlLlNVUEVSU0NSSVBULCBuZXcgSW50ZWdlcigwKSk7CisgICAgICAgIGRlZmF1bHRzLnB1dChUZXh0QXR0cmlidXRlLkZPUkVHUk9VTkQsIENvbG9yLmJsYWNrKTsKKyAgICAgICAgZGVmYXVsdHMucHV0KFRleHRBdHRyaWJ1dGUuVU5ERVJMSU5FLCBuZXcgSW50ZWdlcigtMSkpOworICAgICAgICBkZWZhdWx0cy5wdXQoVGV4dEF0dHJpYnV0ZS5TVFJJS0VUSFJPVUdILCBCb29sZWFuLkZBTFNFKTsKKworICAgICAgICBkZWZhdWx0cy5wdXQoVGV4dEF0dHJpYnV0ZS5FWFRSQV9MSU5FX1NQQUNJTkcsIGZsb2F0WmVybyk7CisgICAgICAgIGRlZmF1bHRzLnB1dChUZXh0QXR0cmlidXRlLkZJUlNUX0xJTkVfSU5ERU5ULCBmbG9hdFplcm8pOworICAgICAgICBkZWZhdWx0cy5wdXQoVGV4dEF0dHJpYnV0ZS5NSU5fTElORV9TUEFDSU5HLCBmbG9hdFplcm8pOworICAgICAgICBkZWZhdWx0cy5wdXQoVGV4dEF0dHJpYnV0ZS5MSU5FX0ZMVVNILCBUZXh0QXR0cmlidXRlLkZMVVNIX0xFQURJTkcpOworICAgICAgICBkZWZhdWx0cy5wdXQoVGV4dEF0dHJpYnV0ZS5MRUFESU5HX01BUkdJTiwgZmxvYXRaZXJvKTsKKyAgICAgICAgZGVmYXVsdHMucHV0KFRleHRBdHRyaWJ1dGUuVFJBSUxJTkdfTUFSR0lOLCBmbG9hdFplcm8pOworICAgICAgICBkZWZhdWx0cy5wdXQoVGV4dEF0dHJpYnV0ZS5UQUJfUlVMRVIsIG5ldyBTdGFuZGFyZFRhYlJ1bGVyKCkpOworCisgICAgICAgIERFRkFVTFRTID0gbmV3IEF0dHJpYnV0ZU1hcChkZWZhdWx0cyk7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgYm9vbGVhbiBmU2Nyb2xsYWJsZSA9IHRydWU7CisgICAgcHJpdmF0ZSBib29sZWFuIGZTY3JvbGxCYXJzVmlzaWJsZSA9IHRydWU7CisgICAgcHJpdmF0ZSBib29sZWFuIGZTZWxlY3RhYmxlID0gdHJ1ZTsKKyAgICBwcml2YXRlIGJvb2xlYW4gZkVkaXRhYmxlID0gdHJ1ZTsKKyAgICBwcml2YXRlIGJvb2xlYW4gZldyYXBzID0gdHJ1ZTsKKyAgICBwcml2YXRlIEF0dHJpYnV0ZU1hcCBmRGVmYXVsdFZhbHVlcyA9IERFRkFVTFRTOworICAgIAorICAgIC8qKgorICAgICAqIENyZWF0ZSBhIFRleHRQYW5lbFNldHRpbmdzIGluc3RhbmNlIHdpdGggYWxsIHNldHRpbmdzCisgICAgICogc2V0IHRvIHRydWUuCisgICAgICovCisgICAgcHVibGljIFRleHRQYW5lbFNldHRpbmdzKCkgeworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhIG5ldyBUZXh0UGFuZWxTZXR0aW5ncyBpbnN0YW5jZSB3aXRoIHRoZQorICAgICAqIHNhbWUgc2V0dGluZ3MgYXMgdGhpcy4KKyAgICAgKiBAcmV0dXJuIGEgbmV3IFRleHRQYW5lbFNldHRpbmdzIGluc3RhbmNlCisgICAgICovCisgICAgcHVibGljIE9iamVjdCBjbG9uZSgpIHsKKworICAgICAgICBUZXh0UGFuZWxTZXR0aW5ncyByaHMgPSBuZXcgVGV4dFBhbmVsU2V0dGluZ3MoKTsKKworICAgICAgICByaHMuZlNjcm9sbGFibGUgPSBmU2Nyb2xsYWJsZTsKKyAgICAgICAgcmhzLmZTY3JvbGxCYXJzVmlzaWJsZSA9IGZTY3JvbGxCYXJzVmlzaWJsZTsKKyAgICAgICAgcmhzLmZTZWxlY3RhYmxlID0gZlNlbGVjdGFibGU7CisgICAgICAgIHJocy5mRWRpdGFibGUgPSBmRWRpdGFibGU7CisgICAgICAgIHJocy5mV3JhcHMgPSBmV3JhcHM7CisgICAgICAgIHJocy5mRGVmYXVsdFZhbHVlcyA9IGZEZWZhdWx0VmFsdWVzOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIHJoczsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIHNjcm9sbGFibGUgc2V0dGluZywgd2hpY2ggZGV0ZXJtaW5lcyB3aGV0aGVyIHRleHQKKyAgICAgKiBpbiBhbiBNVGV4dFBhbmVsIGNhbiBiZSBzY3JvbGxlZC4KKyAgICAgKiBAcmV0dXJuIHRoZSBzY3JvbGxhYmxlIHNldHRpbmcKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBnZXRTY3JvbGxhYmxlKCkgeworCisgICAgICAgIHJldHVybiBmU2Nyb2xsYWJsZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIHNjcm9sbGFibGUgc2V0dGluZy4KKyAgICAgKiBAcGFyYW0gc2Nyb2xsYWJsZSB0aGUgc2Nyb2xsYWJsZSBzZXR0aW5nLiAgSWYgZmFsc2UsCisgICAgICogdGhlIHNjcm9sbEJhcnNWaXNpYmxlIHNldHRpbmcgaXMgYWxzbyBzZXQgdG8gZmFsc2UuCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0U2Nyb2xsYWJsZShib29sZWFuIHNjcm9sbGFibGUpIHsKKworICAgICAgICBmU2Nyb2xsYWJsZSA9IHNjcm9sbGFibGU7CisgICAgICAgIGZTY3JvbGxCYXJzVmlzaWJsZSAmPSBzY3JvbGxhYmxlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgc2Nyb2xsQmFyc1Zpc2libGUgc2V0dGluZywgd2hpY2ggZGV0ZXJtaW5lcyB3aGV0aGVyCisgICAgICogc2Nyb2xsIGJhcnMgaW4gYW4gTVRleHRQYW5lbCBhcmUgdmlzaWJsZS4KKyAgICAgKiBAcmV0dXJuIHRoZSBzY3JvbGxCYXJzVmlzaWJsZSBzZXR0aW5nCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gZ2V0U2Nyb2xsQmFyc1Zpc2libGUoKSB7CisKKyAgICAgICAgcmV0dXJuIGZTY3JvbGxCYXJzVmlzaWJsZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIHNjcm9sbEJhcnNWaXNpYmxlIHNldHRpbmcuCisgICAgICogQHBhcmFtIHZpcyB0aGUgc2Nyb2xsQmFyc1Zpc2libGUgc2V0dGluZy4gIElmIHRydWUsCisgICAgICogdGhlIHNjcm9sbGFibGUgc2V0dGluZyBpcyBhbHNvIHNldCB0byB0cnVlLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFNjcm9sbEJhcnNWaXNpYmxlKGJvb2xlYW4gdmlzKSB7CisKKyAgICAgICAgZlNjcm9sbEJhcnNWaXNpYmxlID0gdmlzOworICAgICAgICBmU2Nyb2xsYWJsZSB8PSB2aXM7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBzZWxlY3RhYmxlIHNldHRpbmcsIHdoaWNoIGRldGVybWluZXMgd2hldGhlcgorICAgICAqIHRleHQgaW4gYW4gTVRleHRQYW5lbCBjYW4gYmUgc2VsZWN0ZWQuCisgICAgICogQHJldHVybiB0aGUgc2VsZWN0YWJsZSBzZXR0aW5nCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gZ2V0U2VsZWN0YWJsZSgpIHsKKworICAgICAgICByZXR1cm4gZlNlbGVjdGFibGU7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0IHRoZSBzZWxlY3RhYmxlIHNldHRpbmcuCisgICAgICogQHBhcmFtIHNlbGVjdGFibGUgdGhlIHNlbGVjdGFibGUgc2V0dGluZy4gIElmIGZhbHNlLAorICAgICAqIHRoZSBlZGl0YWJsZSBzZXR0aW5nIGlzIGFsc28gc2V0IHRvIGZhbHNlLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFNlbGVjdGFibGUoYm9vbGVhbiBzZWxlY3RhYmxlKSB7CisKKyAgICAgICAgZlNlbGVjdGFibGUgPSBzZWxlY3RhYmxlOworICAgICAgICBmRWRpdGFibGUgJj0gc2VsZWN0YWJsZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGVkaXRhYmxlIHNldHRpbmcsIHdoaWNoIGRldGVybWluZXMgd2hldGhlcgorICAgICAqIHRleHQgaW4gYW4gTVRleHRQYW5lbCBjYW4gYmUgZWRpdGVkLgorICAgICAqIEByZXR1cm4gdGhlIGVkaXRhYmxlIHNldHRpbmcKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBnZXRFZGl0YWJsZSgpIHsKKworICAgICAgICByZXR1cm4gZkVkaXRhYmxlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCB0aGUgZWRpdGFibGUgc2V0dGluZy4KKyAgICAgKiBAcGFyYW0gc2VsZWN0YWJsZSB0aGUgc2VsZWN0YWJsZSBzZXR0aW5nLiAgSWYgdHJ1ZSwKKyAgICAgKiB0aGUgc2VsZWN0YWJsZSBzZXR0aW5nIGlzIGFsc28gc2V0IHRvIHRydWUuCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0RWRpdGFibGUoYm9vbGVhbiBlZGl0YWJsZSkgeworCisgICAgICAgIGZFZGl0YWJsZSA9IGVkaXRhYmxlOworICAgICAgICBmU2VsZWN0YWJsZSB8PSBlZGl0YWJsZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIHdyYXBzIHNldHRpbmcsIHdoaWNoIGRldGVybWluZXMgd2hldGhlcgorICAgICAqIGxpbmVzIG9mIHRleHQgd3JhcCB0byB0aGUgbGVuZ3RoIG9mIHRoZSBNVGV4dFBhbmVsLAorICAgICAqIG9yIG9ubHkgYXQgcGFyYWdyYXBoIHNlcGFyYXRvcnMuCisgICAgICogQHJldHVybiB0aGUgd3JhcHMgc2V0dGluZworICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGdldFdyYXBzKCkgeworCisgICAgICAgIHJldHVybiBmV3JhcHM7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0IHRoZSB3cmFwcyBzZXR0aW5nLgorICAgICAqIEBwYXJhbSB3cmFwcyB0aGUgd3JhcHMgc2V0dGluZworICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFdyYXBzKGJvb2xlYW4gd3JhcHMpIHsKKworICAgICAgICBmV3JhcHMgPSB3cmFwczsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBBdHRyaWJ1dGVNYXAgb2YgZGVmYXVsdCB2YWx1ZXMgZm9yIGNlcnRhaW4ga2V5cy4KKyAgICAgKiBXaGVuIGEga2V5IGluIHRoaXMgQXR0cmlidXRlTWFwIGlzIG5vdCBzcGVjaWZpZWQsIGl0cyB2YWx1ZQorICAgICAqIGlzIHRha2VuIGZyb20gdGhpcyBBdHRyaWJ1dGVNYXAuCisgICAgICogQHJldHVybiB0aGUgQXR0cmlidXRlTWFwIG9mIGRlZmF1bHQgdmFsdWVzCisgICAgICogQHNlZSBNVGV4dFBhbmVsI2dldERlZmF1bHRWYWx1ZXMKKyAgICAgKi8KKyAgICBwdWJsaWMgQXR0cmlidXRlTWFwIGdldERlZmF1bHRWYWx1ZXMoKSB7CisgICAgCisgICAgICAgIHJldHVybiBmRGVmYXVsdFZhbHVlczsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQWRkIHRoZSBrZXktdmFsdWUgcGFpcnMgaW4gdGhlIGdpdmVuIEF0dHJpYnV0ZU1hcCB0byB0aGUKKyAgICAgKiBkZWZhdWx0IHZhbHVlcy4gIElmIGEga2V5IGRvZXMgbm90IGFwcGVhciBpbiB0aGUgZ2l2ZW4KKyAgICAgKiBBdHRyaWJ1dGVNYXAsIGl0cyB2YWx1ZSBpbiB0aGUgZGVmYXVsdCB2YWx1ZSBtYXAgaXMKKyAgICAgKiB1bmNoYW5nZWQuCisgICAgICogQHBhcmFtIG1hcCBhbiBBdHRyaWJ1dGVNYXAgY29udGFpbmluZyBuZXcgZGVmYXVsdCB2YWx1ZXMKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBhZGREZWZhdWx0VmFsdWVzKEF0dHJpYnV0ZU1hcCBtYXApIHsKKyAgICAKKyAgICAgICAgZkRlZmF1bHRWYWx1ZXMgPSBmRGVmYXVsdFZhbHVlcy5hZGRBdHRyaWJ1dGVzKG1hcCk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIENvbXBhcmUgdGhpcyB0byBhbm90aGVyIE9iamVjdC4gIFRoaXMgaXMgZXF1YWwKKyAgICAgKiB0byBhbm90aGVyIE9iamVjdCBpZiB0aGUgb3RoZXIgT2JqZWN0IGlzIGEKKyAgICAgKiBUZXh0UGFuZWxTZXR0aW5ncyBpbnN0YW5jZSB3aXRoIHRoZSBzYW1lCisgICAgICogc2V0dGluZ3MgYXMgdGhpcyBvbmUuCisgICAgICogQHBhcmFtIHJocyB0aGUgT2JqZWN0IHRvIGNvbXBhcmUgdG8KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IHJocykgeworCisgICAgICAgIGlmIChyaHMgPT0gdGhpcykgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAocmhzID09IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIFRleHRQYW5lbFNldHRpbmdzIG90aGVyOworICAgICAgICB0cnkgeworICAgICAgICAgICAgb3RoZXIgPSAoVGV4dFBhbmVsU2V0dGluZ3MpIHJoczsKKyAgICAgICAgfQorICAgICAgICBjYXRjaChDbGFzc0Nhc3RFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gb3RoZXIuZlNjcm9sbGFibGUgPT0gdGhpcy5mU2Nyb2xsYWJsZSAmJgorICAgICAgICAgICAgICAgb3RoZXIuZlNjcm9sbEJhcnNWaXNpYmxlID09IHRoaXMuZlNjcm9sbEJhcnNWaXNpYmxlICYmCisgICAgICAgICAgICAgICBvdGhlci5mU2VsZWN0YWJsZSA9PSB0aGlzLmZTZWxlY3RhYmxlICYmCisgICAgICAgICAgICAgICBvdGhlci5mRWRpdGFibGUgPT0gdGhpcy5mRWRpdGFibGUgJiYKKyAgICAgICAgICAgICAgIG90aGVyLmZXcmFwcyA9PSB0aGlzLmZXcmFwcyAmJgorICAgICAgICAgICAgICAgb3RoZXIuZkRlZmF1bHRWYWx1ZXMuZXF1YWxzKHRoaXMuZkRlZmF1bHRWYWx1ZXMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgaGFzaCBjb2RlIGZvciB0aGlzIE9iamVjdC4KKyAgICAgKiBAcmV0dXJuIHRoZSBoYXNoIGNvZGUgZm9yIHRoaXMgT2JqZWN0CisgICAgICovCisgICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKKworICAgICAgICBpbnQgY29kZSA9IGZEZWZhdWx0VmFsdWVzLmhhc2hDb2RlKCk7CisgICAgICAgIGNvZGUgPSBjb2RlKjIgKyAoZlNjcm9sbGFibGU/IDE6MCk7CisgICAgICAgIGNvZGUgPSBjb2RlKjIgKyAoZlNjcm9sbEJhcnNWaXNpYmxlPyAxOjApOworICAgICAgICBjb2RlID0gY29kZSoyICsgKGZTZWxlY3RhYmxlPyAxOjApOworICAgICAgICBjb2RlID0gY29kZSoyICsgKGZFZGl0YWJsZT8gMTowKTsKKyAgICAgICAgY29kZSA9IGNvZGUqMiArIChmV3JhcHM/IDE6MCk7CisKKyAgICAgICAgcmV0dXJuIGNvZGU7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9UZXh0UmFuZ2UuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9UZXh0UmFuZ2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mMWM3MTY4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL1RleHRSYW5nZS5qYXZhCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFRleHRSYW5nZS5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjUxOjIzICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsOworCisvKioKKyogQSA8VFQ+VGV4dFJhbmdlPC9UVD4gcmVwcmVzZW50cyBhIHJhbmdlIG9mIHRleHQgYm91bmRlZCBieSBhCisqIHN0YXJ0IChpbmNsdXNpdmUpLCBhbmQgYSBsaW1pdCAoZXhjbHVzaXZlKS4gIFtzdGFydCxsaW1pdCkKKyovCitmaW5hbCBjbGFzcyBUZXh0UmFuZ2UKK3sKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIC8qKiB0aGUgc3RhcnQgb2YgdGhlIHJhbmdlICovCisgICAgcHVibGljIGludCBzdGFydCA9IDA7CisgICAgLyoqIHRoZSBlbmQgb2YgdGhlIHJhbmdlICovCisgICAgcHVibGljIGludCBsaW1pdCA9IDA7CisKKyAgICAvKioKKyAgICAqIENyZWF0ZSBhIHRleHQgcmFuZ2UgZnJvbSB0d28gaW50cy4KKyAgICAqIEBwYXJhbSBzdGFydCB0aGUgc3RhcnQgb2YgdGhlIHJ1bgorICAgICogQHBhcmFtIGxpbWl0IHRoZSBlbmQgb2YgdGhlIHJ1bgorICAgICovCisgICAgcHVibGljIFRleHRSYW5nZShpbnQgc3RhcnQsIGludCBsaW1pdCkKKyAgICB7CisgICAgICAgIHRoaXMuc3RhcnQgPSBzdGFydDsKKyAgICAgICAgdGhpcy5saW1pdCA9IGxpbWl0OworICAgIH0KKworICAgIC8qKgorICAgICogQ3JlYXRlIGEgdGV4dCByYW5nZSBvZiAwLCAwLgorICAgICovCisgICAgcHVibGljIFRleHRSYW5nZSgpIHsKKyAgICAgICAgdGhpcy5zdGFydCA9IHRoaXMubGltaXQgPSAwOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9UZXh0UmVwbGFjZW1lbnQuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9UZXh0UmVwbGFjZW1lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44ZWQzYmJiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL1RleHRSZXBsYWNlbWVudC5qYXZhCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFRleHRSZXBsYWNlbWVudC5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjUxOjIzICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1Db25zdFRleHQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0Zm9ybWF0LlRleHRPZmZzZXQ7CisKKy8qKgorICogVGhpcyBjbGFzcyBpcyB1c2VkIHRvIHBhc3MgYSBSRVBMQUNFIGNvbW1hbmQgdG8gQmVoYXZpb3JzLgorICovCitmaW5hbCBjbGFzcyBUZXh0UmVwbGFjZW1lbnQgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcml2YXRlIGludCBmU3RhcnQ7CisgICAgcHJpdmF0ZSBpbnQgZkxpbWl0OworICAgIHByaXZhdGUgTUNvbnN0VGV4dCBmVGV4dDsKKyAgICBwcml2YXRlIFRleHRPZmZzZXQgZlNlbFN0YXJ0OworICAgIHByaXZhdGUgVGV4dE9mZnNldCBmU2VsTGltaXQ7CisKKyAgICBUZXh0UmVwbGFjZW1lbnQoaW50IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICBpbnQgbGltaXQsCisgICAgICAgICAgICAgICAgICAgIE1Db25zdFRleHQgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCBzZWxTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCBzZWxMaW1pdCkgeworCisgICAgICAgIGZTdGFydCA9IHN0YXJ0OworICAgICAgICBmTGltaXQgPSBsaW1pdDsKKyAgICAgICAgZlRleHQgPSB0ZXh0OworICAgICAgICBmU2VsU3RhcnQgPSBzZWxTdGFydDsKKyAgICAgICAgZlNlbExpbWl0ID0gc2VsTGltaXQ7CisgICAgfQorCisgICAgaW50IGdldFN0YXJ0KCkgeworCisgICAgICAgIHJldHVybiBmU3RhcnQ7CisgICAgfQorCisgICAgaW50IGdldExpbWl0KCkgeworCisgICAgICAgIHJldHVybiBmTGltaXQ7CisgICAgfQorCisgICAgTUNvbnN0VGV4dCBnZXRUZXh0KCkgeworCisgICAgICAgIHJldHVybiBmVGV4dDsKKyAgICB9CisKKyAgICBUZXh0T2Zmc2V0IGdldFNlbGVjdGlvblN0YXJ0KCkgeworCisgICAgICAgIHJldHVybiBmU2VsU3RhcnQ7CisgICAgfQorCisgICAgVGV4dE9mZnNldCBnZXRTZWxlY3Rpb25MaW1pdCgpIHsKKworICAgICAgICByZXR1cm4gZlNlbExpbWl0OworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9UZXh0U2VsZWN0aW9uLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvVGV4dFNlbGVjdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjQ0YTdhMzgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvVGV4dFNlbGVjdGlvbi5qYXZhCkBAIC0wLDAgKzEsOTI2IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBUZXh0U2VsZWN0aW9uLmphdmEsdiAkICRSZXZpc2lvbjogMS4yICQgJERhdGU6IDIwMDEvMTAvMzAgMDI6NDI6NDggJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KKy8qCisgICAgNy8xLzk3IC0gY2FyZXQgYmxpbmtzCisKKyAgICA3LzMvOTcgLSBmQW5jaG9yIGlzIG5vIGxvbmdlciByZXN0cmljdGVkIHRvIHRoZSBzdGFydCBvciBlbmQgb2YgdGhlIHNlbGVjdGlvbi4ge2picn0KKyAgICAgICAgICAgIEFsc28sIHJlbW92ZWQgZlZpc2libGUgLSBpdCB3YXMgaWRlbnRpY2FsIHRvIGVuYWJsZWQoKS4KKyovCisKK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWw7CisKK2ltcG9ydCBqYXZhLmF3dC5HcmFwaGljczsKK2ltcG9ydCBqYXZhLmF3dC5Db2xvcjsKK2ltcG9ydCBqYXZhLmF3dC5SZWN0YW5nbGU7CitpbXBvcnQgamF2YS5hd3QuUG9pbnQ7CisKK2ltcG9ydCBqYXZhLnRleHQuQnJlYWtJdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnRleHQuQ2hhcmFjdGVySXRlcmF0b3I7CisKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5Nb3VzZUV2ZW50OworaW1wb3J0IGphdmEuYXd0LmV2ZW50LktleUV2ZW50OworaW1wb3J0IGphdmEuYXd0LmV2ZW50LkZvY3VzRXZlbnQ7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuTUNvbnN0VGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRmb3JtYXQuVGV4dE9mZnNldDsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGZvcm1hdC5NRm9ybWF0dGVyOworCitjbGFzcyBUZXh0U2VsZWN0aW9uIGV4dGVuZHMgQmVoYXZpb3IgaW1wbGVtZW50cyBSdW5uYWJsZSB7CisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBzdGF0aWMgZmluYWwgQ29sb3IgICAgICAgICAgSElHSExJR0hUQ09MT1IgPSBDb2xvci5waW5rOworCisgICAgcHJpdmF0ZSBUZXh0Q29tcG9uZW50ICAgICAgIGZUZXh0Q29tcG9uZW50OworICAgIHByaXZhdGUgTUNvbnN0VGV4dCAgICAgICAgICBmVGV4dDsKKyAgICBwcml2YXRlIFRleHRPZmZzZXQgICAgICAgICAgZlN0YXJ0OworICAgIHByaXZhdGUgVGV4dE9mZnNldCAgICAgICAgICBmTGltaXQ7CisgICAgcHJpdmF0ZSBUZXh0T2Zmc2V0ICAgICAgICAgIGZBbmNob3I7CisgICAgcHJpdmF0ZSBUZXh0T2Zmc2V0ICAgICAgICAgIGZVcERvd25BbmNob3IgPSBudWxsOworICAgIHByaXZhdGUgQnJlYWtJdGVyYXRvciAgICAgICBmQm91bmRhcmllcyA9IG51bGw7CisgICAgcHJpdmF0ZSBDb2xvciAgICAgICAgICAgICAgIGZIaWdobGlnaHRDb2xvciA9IEhJR0hMSUdIVENPTE9SOworICAgIHByaXZhdGUgUGFuZWxFdmVudEJyb2FkY2FzdGVyICAgZkxpc3RlbmVyOworICAgIHByaXZhdGUgUnVuU3RyYXRlZ3kgICAgICAgICBmUnVuU3RyYXRlZ3k7CisgICAgcHJpdmF0ZSBib29sZWFuICAgICAgICAgICAgIGZNb3VzZURvd24gPSBmYWxzZTsKKyAgICBwcml2YXRlIGJvb2xlYW4gICAgICAgICAgICAgZkhhbmRsaW5nS2V5T3JDb21tYW5kID0gZmFsc2U7CisgICAgCisgICAgcHJpdmF0ZSBib29sZWFuIGZDYXJldFNob3VsZEJsaW5rOworICAgIHByaXZhdGUgYm9vbGVhbiBmQ2FyZXRJc1Zpc2libGU7CisgICAgcHJpdmF0ZSBpbnQgZkNhcmV0Q291bnQ7CisKKyAgICAvLyBmb3JtZXJseSBpbiBiYXNlIGNsYXNzCisgICAgcHJpdmF0ZSBib29sZWFuIGZFbmFibGVkOworCisgICAgcHJpdmF0ZSBNb3VzZUV2ZW50IGZQZW5kaW5nTW91c2VFdmVudCA9IG51bGw7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQga0NhcmV0SW50ZXJ2YWwgPSA1MDA7CisKKyAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisKKyAgICAgICAgZmluYWwgUnVubmFibGUgYmxpbmtDYXJldCA9IG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICBmQ2FyZXRJc1Zpc2libGUgPSAhZkNhcmV0SXNWaXNpYmxlOworICAgICAgICAgICAgICAgIEdyYXBoaWNzIGcgPSBmVGV4dENvbXBvbmVudC5nZXRHcmFwaGljcygpOworICAgICAgICAgICAgICAgIGlmIChnICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oImNhcmV0SXNWaXNpYmxlOiAiICsgZkNhcmV0SXNWaXNpYmxlKTsKKyAgICAgICAgICAgICAgICAgICAgZHJhd1NlbGVjdGlvbihnLCBmQ2FyZXRJc1Zpc2libGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gTm90IHN1cmUgd2hhdCBlbHNlIHRvIGRvOgorICAgICAgICAgICAgICAgICAgICBmQ2FyZXRTaG91bGRCbGluayA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgCisgICAgICAgIC8vIGJsaW5rIGNhcmV0CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisKKyAgICAgICAgICAgIHN5bmNocm9uaXplZCh0aGlzKSB7CisKKyAgICAgICAgICAgICAgICB3aGlsZSAoIWZDYXJldFNob3VsZEJsaW5rKSB7CisgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICB3YWl0KCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgY2F0Y2goSW50ZXJydXB0ZWRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJDYXVnaHQgSW50ZXJydXB0ZWRFeGNlcHRpb24gaW4gY2FyZXQgdGhyZWFkLiIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgKytmQ2FyZXRDb3VudDsKKworICAgICAgICAgICAgICAgIGlmIChmQ2FyZXRDb3VudCAlIDIgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICBmUnVuU3RyYXRlZ3kuZG9JdChibGlua0NhcmV0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgVGhyZWFkLnNsZWVwKGtDYXJldEludGVydmFsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhdGNoKEludGVycnVwdGVkRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworCisKKyAgICBwdWJsaWMgVGV4dFNlbGVjdGlvbihUZXh0Q29tcG9uZW50IHRleHRDb21wb25lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgUGFuZWxFdmVudEJyb2FkY2FzdGVyIGxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgIFJ1blN0cmF0ZWd5IHJ1blN0cmF0ZWd5KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIGZUZXh0Q29tcG9uZW50ID0gdGV4dENvbXBvbmVudDsKKyAgICAgICAgZlRleHQgPSB0ZXh0Q29tcG9uZW50LmdldFRleHQoKTsKKyAgICAgICAgZkxpc3RlbmVyID0gbGlzdGVuZXI7CisgICAgICAgIGZSdW5TdHJhdGVneSA9IHJ1blN0cmF0ZWd5OworICAgICAgICAKKyAgICAgICAgZlN0YXJ0ID0gbmV3IFRleHRPZmZzZXQoKTsKKyAgICAgICAgZkxpbWl0ID0gbmV3IFRleHRPZmZzZXQoKTsKKyAgICAgICAgZkFuY2hvciA9IG5ldyBUZXh0T2Zmc2V0KCk7CisgICAgICAgIGZNb3VzZURvd24gPSBmYWxzZTsKKworICAgICAgICBmQ2FyZXRDb3VudCA9IDA7CisgICAgICAgIGZDYXJldElzVmlzaWJsZSA9IHRydWU7CisgICAgICAgIGZDYXJldFNob3VsZEJsaW5rID0gZmFsc2U7CisgICAgICAgIHNldEVuYWJsZWQoZmFsc2UpOworCisgICAgICAgIFRocmVhZCBjYXJldFRocmVhZCA9IG5ldyBUaHJlYWQodGhpcyk7CisgICAgICAgIGNhcmV0VGhyZWFkLnNldERhZW1vbih0cnVlKTsKKyAgICAgICAgY2FyZXRUaHJlYWQuc3RhcnQoKTsKKyAgICB9CisKKyAgICBib29sZWFuIGVuYWJsZWQoKSB7CisKKyAgICAgICAgcmV0dXJuIGZFbmFibGVkOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBzZXRFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCkgeworCisgICAgICAgIGZFbmFibGVkID0gZW5hYmxlZDsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiB0ZXh0Q29udHJvbEV2ZW50T2NjdXJyZWQoQmVoYXZpb3IuRXZlbnRUeXBlIGV2ZW50LCBPYmplY3Qgd2hhdCkgeworCisgICAgICAgIGJvb2xlYW4gcmVzdWx0OworICAgICAgICBmSGFuZGxpbmdLZXlPckNvbW1hbmQgPSB0cnVlOworICAgICAgICAKKyAgICAgICAgaWYgKGV2ZW50ID09IEJlaGF2aW9yLlNFTEVDVCkgeworICAgICAgICAgICAgc2VsZWN0KChUZXh0UmFuZ2UpIHdoYXQpOworICAgICAgICAgICAgcmVzdWx0ID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChldmVudCA9PSBCZWhhdmlvci5DT1BZKSB7CisgICAgICAgICAgICBmVGV4dENvbXBvbmVudC5nZXRDbGlwYm9hcmQoKS5zZXRDb250ZW50cyhmVGV4dC5leHRyYWN0KGZTdGFydC5mT2Zmc2V0LCBmTGltaXQuZk9mZnNldCkpOworICAgICAgICAgICAgZkxpc3RlbmVyLnRleHRTdGF0ZUNoYW5nZWQoVGV4dFBhbmVsRXZlbnQuQ0xJUEJPQVJEX0NIQU5HRUQpOworICAgICAgICAgICAgcmVzdWx0ID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmSGFuZGxpbmdLZXlPckNvbW1hbmQgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgdm9pZCBhZHZhbmNlVG9OZXh0Qm91bmRhcnkoVGV4dE9mZnNldCBvZmZzZXQpIHsKKyAgICAKKyAgICAgICAgLy8gSWYgdGhlcmUncyBubyBib3VuZGFyaWVzIG9iamVjdCwgb3IgaWYgcG9zaXRpb24gYXQgdGhlIGVuZCBvZiB0aGUKKyAgICAgICAgLy8gZG9jdW1lbnQsIHJldHVybiB0aGUgb2Zmc2V0IHVuY2hhbmdlZAorICAgICAgICBpZiAoZkJvdW5kYXJpZXMgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpbnQgcG9zaXRpb24gPSBvZmZzZXQuZk9mZnNldDsKKyAgICAgICAgCisgICAgICAgIGlmIChwb3NpdGlvbiA+PSBmVGV4dC5sZW5ndGgoKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgcG9zaXRpb24gaXMgYXQgYSBib3VuZGFyeSBhbmQgb2Zmc2V0IGlzIGJlZm9yZSBwb3NpdGlvbiwKKyAgICAgICAgLy8gbGVhdmUgaXQgdW5jaGFuZ2VkLiAgT3RoZXJ3aXNlIG1vdmUgdG8gbmV4dCBib3VuZGFyeS4KKyAgICAgICAgaW50IG5leHRQb3MgPSBmQm91bmRhcmllcy5mb2xsb3dpbmcocG9zaXRpb24pOworICAgICAgICBpZiAoZkJvdW5kYXJpZXMucHJldmlvdXMoKSA9PSBwb3NpdGlvbiAmJiAKKyAgICAgICAgICAgICAgICBvZmZzZXQuZlBsYWNlbWVudD09b2Zmc2V0LkJFRk9SRV9PRkZTRVQpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgb2Zmc2V0LnNldE9mZnNldChuZXh0UG9zLCBUZXh0T2Zmc2V0LkFGVEVSX09GRlNFVCk7CisgICAgfQorCisgICAgcHJvdGVjdGVkIHZvaWQgYWR2YW5jZVRvUHJldmlvdXNCb3VuZGFyeShUZXh0T2Zmc2V0IG9mZnNldCkgeworICAgIAorICAgICAgICBhZHZhbmNlVG9QcmV2aW91c0JvdW5kYXJ5KG9mZnNldCwgZmFsc2UpOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHZvaWQgYWR2YW5jZVRvUHJldmlvdXNCb3VuZGFyeShUZXh0T2Zmc2V0IG9mZnNldCwgYm9vbGVhbiBhbHdheXNNb3ZlKSB7CisgICAgICAgIC8vIGlmIHRoZXJlJ3Mgbm8gYm91bmRhcmllcyBvYmplY3QsIG9yIGlmIHdlJ3JlIHNpdHRpbmcgYXQgdGhlIGJlZ2lubmluZworICAgICAgICAvLyBvZiB0aGUgZG9jdW1lbnQsIHJldHVybiB0aGUgb2Zmc2V0IHVuY2hhbmdlZAorICAgICAgICBpZiAoZkJvdW5kYXJpZXMgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpbnQgcG9zaXRpb24gPSBvZmZzZXQuZk9mZnNldDsKKworICAgICAgICBpZiAocG9zaXRpb24gPT0gMCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBJZiBwb3NpdGlvbiBpcyBhdCBhIGJvdW5kYXJ5LCBsZWF2ZSBpdCB1bmNoYW5nZWQuICBPdGhlcndpc2UKKyAgICAgICAgLy8gbW92ZSB0byBwcmV2aW91cyBib3VuZGFyeS4KKyAgICAgICAgaWYgKHBvc2l0aW9uID09IGZUZXh0Lmxlbmd0aCgpKSB7CisgICAgICAgICAgICBmQm91bmRhcmllcy5sYXN0KCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBmQm91bmRhcmllcy5mb2xsb3dpbmcocG9zaXRpb24pOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpbnQgcHJldlBvcyA9IGZCb3VuZGFyaWVzLnByZXZpb3VzKCk7CisgICAgICAgIAorICAgICAgICBpZiAocHJldlBvcyA9PSBwb3NpdGlvbikgeworICAgICAgICAgICAgaWYgKCFhbHdheXNNb3ZlICYmIG9mZnNldC5mUGxhY2VtZW50PT1vZmZzZXQuQUZURVJfT0ZGU0VUKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwcmV2UG9zID0gZkJvdW5kYXJpZXMucHJldmlvdXMoKTsKKyAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAvLyBhbmQgZmluYWxseSB1cGRhdGUgdGhlIHJlYWwgb2Zmc2V0IHdpdGggdGhpcyBuZXcgcG9zaXRpb24gd2UndmUgZm91bmQKKyAgICAgICAgb2Zmc2V0LnNldE9mZnNldChwcmV2UG9zLCBUZXh0T2Zmc2V0LkFGVEVSX09GRlNFVCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGRvQXJyb3dLZXkoS2V5RXZlbnQgZSwgaW50IGtleSkgeworCisgICAgICAgIC8vIHdoZW4gdGhlcmUncyBhIHNlbGVjdGlvbiByYW5nZSwgdGhlIGxlZnQgYW5kIHVwIGFycm93IGtleXMgcGxhY2UgYW4KKyAgICAgICAgLy8gaW5zZXJ0aW9uIHBvaW50IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHJhbmdlLCBhbmQgdGhlIHJpZ2h0IGFuZCBkb3duCisgICAgICAgIC8vIGtleXMgcGxhY2UgYW4gaW5zZXJ0aW9uIHBvaW50IGF0IHRoZSBlbmQgb2YgdGhlIHJhbmdlICh1bmxlc3MgdGhlIHNoaWZ0CisgICAgICAgIC8vIGtleSBpcyBkb3duLCBvZiBjb3Vyc2UpCisKKyAgICAgICAgaWYgKCFmU3RhcnQuZXF1YWxzKGZMaW1pdCkgJiYgIWUuaXNTaGlmdERvd24oKSkgeworICAgICAgICAgICAgaWYgKGtleSA9PSBLZXlFdmVudC5WS19MRUZUIHx8IGtleSA9PSBLZXlFdmVudC5WS19VUCkKKyAgICAgICAgICAgICAgICBzZXRTZWxSYW5nZUFuZERyYXcoZlN0YXJ0LCBmU3RhcnQsIGZTdGFydCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc2V0U2VsUmFuZ2VBbmREcmF3KGZMaW1pdCwgZkxpbWl0LCBmTGltaXQpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKCFmQW5jaG9yLmVxdWFscyhmU3RhcnQpKQorICAgICAgICAgICAgICAgIGZBbmNob3IuYXNzaWduKGZMaW1pdCk7CisKKyAgICAgICAgICAgIFRleHRPZmZzZXQgIGxpdmVFbmQgPSAoZlN0YXJ0LmVxdWFscyhmQW5jaG9yKSkgPyBmTGltaXQgOiBmU3RhcnQ7CisgICAgICAgICAgICBUZXh0T2Zmc2V0ICBuZXdQb3MgPSBuZXcgVGV4dE9mZnNldCgpOworCisgICAgICAgICAgICAvLyBpZiB0aGUgY29udHJvbCBrZXkgaXMgZG93biwgdGhlIGxlZnQgYW5kIHJpZ2h0IGFycm93IGtleXMgbW92ZSBieSB3aG9sZQorICAgICAgICAgICAgLy8gd29yZCBpbiB0aGUgYXBwcm9wcmlhdGUgZGlyZWN0aW9uICh3ZSB1c2UgYSBsaW5lIGJyZWFrIG9iamVjdCBzbyB0aGF0IHdlJ3JlCisgICAgICAgICAgICAvLyBub3QgdHJlYXRpbmcgc3BhY2VzIGFuZCBwdW5jdHVhdGlvbiBhcyB3b3JkcykKKyAgICAgICAgICAgIGlmIChlLmlzQ29udHJvbERvd24oKSAmJiAoa2V5ID09IEtleUV2ZW50LlZLX0xFRlQgfHwga2V5ID09IEtleUV2ZW50LlZLX1JJR0hUKSkgeworICAgICAgICAgICAgICAgIGZVcERvd25BbmNob3IgPSBudWxsOworICAgICAgICAgICAgICAgIGZCb3VuZGFyaWVzID0gQnJlYWtJdGVyYXRvci5nZXRMaW5lSW5zdGFuY2UoKTsKKyAgICAgICAgICAgICAgICBmQm91bmRhcmllcy5zZXRUZXh0KGZUZXh0LmNyZWF0ZUNoYXJhY3Rlckl0ZXJhdG9yKCkpOworCisgICAgICAgICAgICAgICAgbmV3UG9zLmFzc2lnbihsaXZlRW5kKTsKKyAgICAgICAgICAgICAgICBpZiAoa2V5ID09IEtleUV2ZW50LlZLX1JJR0hUKQorICAgICAgICAgICAgICAgICAgICBhZHZhbmNlVG9OZXh0Qm91bmRhcnkobmV3UG9zKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGFkdmFuY2VUb1ByZXZpb3VzQm91bmRhcnkobmV3UG9zLCB0cnVlKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gaWYgd2UgZ2V0IGRvd24gdG8gaGVyZSwgdGhpcyBpcyBhIHBsYWluLXZhbmlsbGEgaW5zZXJ0aW9uLXBvaW50IG1vdmUsCisgICAgICAgICAgICAvLyBvciB0aGUgc2hpZnQga2V5IGlzIGRvd24gYW5kIHdlJ3JlIGV4dGVuZGluZyBvciBzaG9ydGVuaW5nIHRoZSBzZWxlY3Rpb24KKyAgICAgICAgICAgIGVsc2UgeworCisgICAgICAgICAgICAgICAgLy8gZlVwRG93bkFuY2hvciBpcyB1c2VkIHRvIGtlZXAgdHJhY2sgb2YgdGhlIGhvcml6b250YWwgcG9zaXRpb24KKyAgICAgICAgICAgICAgICAvLyBhY3Jvc3MgYSBydW4gb2YgdXAgb3IgZG93biBhcnJvdyBrZXlzICh0aGlzIHByZXZlbnRzIGFjY3VtdWxhdGVkCisgICAgICAgICAgICAgICAgLy8gZXJyb3IgZnJvbSBkZXN0cm95aW5nIG91ciBob3Jpem9udGFsIHBvc2l0aW9uKQorICAgICAgICAgICAgICAgIGlmIChrZXkgPT0gS2V5RXZlbnQuVktfTEVGVCB8fCBrZXkgPT0gS2V5RXZlbnQuVktfUklHSFQpCisgICAgICAgICAgICAgICAgICAgIGZVcERvd25BbmNob3IgPSBudWxsOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAoZlVwRG93bkFuY2hvciA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmVXBEb3duQW5jaG9yID0gbmV3IFRleHRPZmZzZXQobGl2ZUVuZCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBzaG9ydCAgIGRpcmVjdGlvbiA9IE1Gb3JtYXR0ZXIuZVJpZ2h0OyAgLy8ganVzdCB0byBoYXZlIGEgZGVmYXVsdC4uLgorCisgICAgICAgICAgICAgICAgc3dpdGNoIChrZXkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5WS19VUDogZGlyZWN0aW9uID0gTUZvcm1hdHRlci5lVXA7IGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIEtleUV2ZW50LlZLX0RPV046IGRpcmVjdGlvbiA9IE1Gb3JtYXR0ZXIuZURvd247IGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIEtleUV2ZW50LlZLX0xFRlQ6IGRpcmVjdGlvbiA9IE1Gb3JtYXR0ZXIuZUxlZnQ7IGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIEtleUV2ZW50LlZLX1JJR0hUOiBkaXJlY3Rpb24gPSBNRm9ybWF0dGVyLmVSaWdodDsgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gdXNlIHRoZSBmb3JtYXR0ZXIgdG8gZGV0ZXJtaW5lIHRoZSBhY3R1YWwgZWZmZWN0IG9mIHRoZSBhcnJvdyBrZXkKKyAgICAgICAgICAgICAgICBmVGV4dENvbXBvbmVudC5maW5kTmV3SW5zZXJ0aW9uT2Zmc2V0KG5ld1BvcywgZlVwRG93bkFuY2hvciwgbGl2ZUVuZCwgZGlyZWN0aW9uKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gaWYgdGhlIHNoaWZ0IGtleSBpcyBkb3duLCB0aGUgc2VsZWN0aW9uIHJhbmdlIGlzIGZyb20gdGhlIGFuY2hvciBwb2ludAorICAgICAgICAgICAgLy8gdGhlIHNpdGUgb2YgdGhlIGxhc3QgaW5zZXJ0aW9uIHBvaW50IG9yIHRoZSBiZWdpbm5pbmcgcG9pbnQgb2YgdGhlIGxhc3QKKyAgICAgICAgICAgIC8vIHNlbGVjdGlvbiBkcmFnIG9wZXJhdGlvbikgdG8gdGhlIG5ld2x5LWNhbGN1bGF0ZWQgcG9zaXRpb247IGlmIHRoZQorICAgICAgICAgICAgLy8gc2hpZnQga2V5IGlzIGRvd24sIHRoZSBuZXdseS1jYWxjdWxhdGVkIHBvc2l0aW9uIGlzIHRoZSBpbnNlcnRpb24gcG9pbnQgcG9zaXRpb24KKyAgICAgICAgICAgIGlmICghZS5pc1NoaWZ0RG93bigpKQorICAgICAgICAgICAgICAgIHNldFNlbFJhbmdlQW5kRHJhdyhuZXdQb3MsIG5ld1BvcywgbmV3UG9zKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChuZXdQb3MubGVzc1RoYW4oZkFuY2hvcikpCisgICAgICAgICAgICAgICAgICAgIHNldFNlbFJhbmdlQW5kRHJhdyhuZXdQb3MsIGZBbmNob3IsIGZBbmNob3IpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgc2V0U2VsUmFuZ2VBbmREcmF3KGZBbmNob3IsIG5ld1BvcywgZkFuY2hvcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBzY3JvbGxUb1Nob3dTZWxlY3Rpb25FbmQoKTsKKyAgICAgICAgZkJvdW5kYXJpZXMgPSBudWxsOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBkb0VuZEtleShLZXlFdmVudCBlKSB7CisgICAgICAgIC8vIGN0cmwtZW5kIG1vdmVzIHRoZSBpbnNlcnRzaW9uIHBvaW50IHRvIHRoZSBlbmQgb2YgdGhlIGRvY3VtZW50LAorICAgICAgICAvLyBjdHJsLXNoaWZ0LWVuZCBleHRlbmRzIHRoZSBzZWxlY3Rpb24gc28gdGhhdCBpdCBlbmRzIGF0IHRoZSBlbmQKKyAgICAgICAgLy8gb2YgdGhlIGRvY3VtZW50CisKKyAgICAgICAgVGV4dE9mZnNldCBhY3RpdmVFbmQsIGFuY2hvcjsKKworICAgICAgICBpZiAoZkFuY2hvci5lcXVhbHMoZlN0YXJ0KSkgeworICAgICAgICAgICAgYWN0aXZlRW5kID0gbmV3IFRleHRPZmZzZXQoZlN0YXJ0KTsKKyAgICAgICAgICAgIGFuY2hvciA9IG5ldyBUZXh0T2Zmc2V0KGZMaW1pdCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhY3RpdmVFbmQgPSBuZXcgVGV4dE9mZnNldChmTGltaXQpOworICAgICAgICAgICAgYW5jaG9yID0gbmV3IFRleHRPZmZzZXQoZlN0YXJ0KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChlLmlzQ29udHJvbERvd24oKSkgeworICAgICAgICAgICAgVGV4dE9mZnNldCBlbmQgPSBuZXcgVGV4dE9mZnNldChmVGV4dC5sZW5ndGgoKSwgVGV4dE9mZnNldC5CRUZPUkVfT0ZGU0VUKTsKKworICAgICAgICAgICAgaWYgKGUuaXNTaGlmdERvd24oKSkKKyAgICAgICAgICAgICAgICBzZXRTZWxSYW5nZUFuZERyYXcoYW5jaG9yLCBlbmQsIGFuY2hvcik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc2V0U2VsUmFuZ2VBbmREcmF3KGVuZCwgZW5kLCBlbmQpOworICAgICAgICB9CisKKyAgICAgICAgLy8gZW5kIG1vdmVzIHRoZSBpbnNlcnRpb24gcG9pbnQgdG8gdGhlIGVuZCBvZiB0aGUgbGluZSBjb250YWluaW5nCisgICAgICAgIC8vIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgc2VsZWN0aW9uCisgICAgICAgIC8vIHNoaWZ0LWVuZCBleHRlbmRzIHRoZSBzZWxlY3Rpb24gdG8gdGhlIGVuZCBvZiB0aGUgbGluZSBjb250YWluaW5nCisgICAgICAgIC8vIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgc2VsZWN0aW9uCisKKyAgICAgICAgZWxzZSB7CisKKyAgICAgICAgICAgIGludCBvbGRPZmZzZXQgPSBhY3RpdmVFbmQuZk9mZnNldDsKKworICAgICAgICAgICAgYWN0aXZlRW5kLmZPZmZzZXQgPSBmVGV4dENvbXBvbmVudC5saW5lUmFuZ2VMaW1pdChmVGV4dENvbXBvbmVudC5saW5lQ29udGFpbmluZyhhY3RpdmVFbmQpKTsKKyAgICAgICAgICAgIGFjdGl2ZUVuZC5mUGxhY2VtZW50ID0gVGV4dE9mZnNldC5CRUZPUkVfT0ZGU0VUOworCisgICAgICAgICAgICBpZiAoZlRleHQucGFyYWdyYXBoTGltaXQob2xkT2Zmc2V0KSA9PSBhY3RpdmVFbmQuZk9mZnNldCAmJgorICAgICAgICAgICAgICAgICAgICBhY3RpdmVFbmQuZk9mZnNldCAhPSBmVGV4dC5sZW5ndGgoKSAmJiBhY3RpdmVFbmQuZk9mZnNldCA+IG9sZE9mZnNldCkgeworICAgICAgICAgICAgICAgIGFjdGl2ZUVuZC5mT2Zmc2V0LS07CisgICAgICAgICAgICAgICAgYWN0aXZlRW5kLmZQbGFjZW1lbnQgPSBUZXh0T2Zmc2V0LkFGVEVSX09GRlNFVDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFlLmlzU2hpZnREb3duKCkpCisgICAgICAgICAgICAgICAgc2V0U2VsUmFuZ2VBbmREcmF3KGFjdGl2ZUVuZCwgYWN0aXZlRW5kLCBhY3RpdmVFbmQpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGFjdGl2ZUVuZC5sZXNzVGhhbihhbmNob3IpKQorICAgICAgICAgICAgICAgICAgICBzZXRTZWxSYW5nZUFuZERyYXcoYWN0aXZlRW5kLCBhbmNob3IsIGFuY2hvcik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBzZXRTZWxSYW5nZUFuZERyYXcoYW5jaG9yLCBhY3RpdmVFbmQsIGFuY2hvcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBzY3JvbGxUb1Nob3dTZWxlY3Rpb25FbmQoKTsKKyAgICAgICAgZkJvdW5kYXJpZXMgPSBudWxsOworICAgICAgICBmVXBEb3duQW5jaG9yID0gbnVsbDsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgZG9Ib21lS2V5KEtleUV2ZW50IGUpIHsKKyAgICAgICAgLy8gY3RybC1ob21lIG1vdmVzIHRoZSBpbnNlcnRpb24gcG9pbnQgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgZG9jdW1lbnQsCisgICAgICAgIC8vIGN0cmwtc2hpZnQtaG9tZSBleHRlbmRzIHRoZSBzZWxlY3Rpb24gc28gdGhhdCBpdCBiZWdpbnMgYXQgdGhlIGJlZ2lubmluZworICAgICAgICAvLyBvZiB0aGUgZG9jdW1lbnQKKworICAgICAgICBUZXh0T2Zmc2V0IGFjdGl2ZUVuZCwgYW5jaG9yOworCisgICAgICAgIGlmIChmQW5jaG9yLmVxdWFscyhmU3RhcnQpKSB7CisgICAgICAgICAgICBhY3RpdmVFbmQgPSBuZXcgVGV4dE9mZnNldChmU3RhcnQpOworICAgICAgICAgICAgYW5jaG9yID0gbmV3IFRleHRPZmZzZXQoZkxpbWl0KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGFjdGl2ZUVuZCA9IG5ldyBUZXh0T2Zmc2V0KGZMaW1pdCk7CisgICAgICAgICAgICBhbmNob3IgPSBuZXcgVGV4dE9mZnNldChmU3RhcnQpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGUuaXNDb250cm9sRG93bigpKSB7CisKKyAgICAgICAgICAgIFRleHRPZmZzZXQgc3RhcnQgPSBuZXcgVGV4dE9mZnNldCgwLCBUZXh0T2Zmc2V0LkFGVEVSX09GRlNFVCk7CisgICAgICAgICAgICBpZiAoZS5pc1NoaWZ0RG93bigpKQorICAgICAgICAgICAgICAgIHNldFNlbFJhbmdlQW5kRHJhdyhzdGFydCwgYW5jaG9yLCBhbmNob3IpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNldFNlbFJhbmdlQW5kRHJhdyhzdGFydCwgc3RhcnQsIHN0YXJ0KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGhvbWUgbW92ZXMgdGhlIGluc2VydGlvbiBwb2ludCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaW5lIGNvbnRhaW5pbmcKKyAgICAgICAgLy8gdGhlIGJlZ2lubmluZyBvZiB0aGUgY3VycmVudCBzZWxlY3Rpb24KKyAgICAgICAgLy8gc2hpZnQtaG9tZSBleHRlbmRzIHRoZSBzZWxlY3Rpb24gdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgbGluZSBjb250YWluaW5nCisgICAgICAgIC8vIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGN1cnJlbnQgc2VsZWN0aW9uCisKKyAgICAgICAgZWxzZSB7CisKKyAgICAgICAgICAgIGFjdGl2ZUVuZC5mT2Zmc2V0ID0gZlRleHRDb21wb25lbnQubGluZVJhbmdlTG93KGZUZXh0Q29tcG9uZW50LmxpbmVDb250YWluaW5nKGFjdGl2ZUVuZCkpOworICAgICAgICAgICAgYWN0aXZlRW5kLmZQbGFjZW1lbnQgPSBUZXh0T2Zmc2V0LkFGVEVSX09GRlNFVDsKKworICAgICAgICAgICAgaWYgKCFlLmlzU2hpZnREb3duKCkpCisgICAgICAgICAgICAgICAgc2V0U2VsUmFuZ2VBbmREcmF3KGFjdGl2ZUVuZCwgYWN0aXZlRW5kLCBhY3RpdmVFbmQpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGFjdGl2ZUVuZC5sZXNzVGhhbihhbmNob3IpKQorICAgICAgICAgICAgICAgICAgICBzZXRTZWxSYW5nZUFuZERyYXcoYWN0aXZlRW5kLCBhbmNob3IsIGFuY2hvcik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBzZXRTZWxSYW5nZUFuZERyYXcoYW5jaG9yLCBhY3RpdmVFbmQsIGFuY2hvcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBzY3JvbGxUb1Nob3dTZWxlY3Rpb25FbmQoKTsKKyAgICAgICAgZkJvdW5kYXJpZXMgPSBudWxsOworICAgICAgICBmVXBEb3duQW5jaG9yID0gbnVsbDsKKyAgICB9CisKKyAgICAvKiogZHJhd3Mgb3IgZXJhc2VzIHRoZSBjdXJyZW50IHNlbGVjdGlvbgorICAgICogRHJhd3Mgb3IgZXJhc2VzIHRoZSBoaWdobGlnaHQgcmVnaW9uIG9yIGluc2VydGlvbiBjYXJldCBmb3IgdGhlIGN1cnJlbnQgc2VsZWN0aW9uCisgICAgKiByYW5nZS4KKyAgICAqIEBwYXJhbSBnIFRoZSBncmFwaGljcyBlbnZpcm9ubWVudCB0byBkcmF3IGludG8KKyAgICAqIEBwYXJhbSB2aXNpYmxlIElmIHRydWUsIGRyYXcgdGhlIHNlbGVjdGlvbjsgaWYgZmFsc2UsIGVyYXNlIGl0CisgICAgKi8KKyAgICBwcm90ZWN0ZWQgdm9pZCBkcmF3U2VsZWN0aW9uKEdyYXBoaWNzIGcsIGJvb2xlYW4gdmlzaWJsZSkgeworICAgICAgICBkcmF3U2VsZWN0aW9uUmFuZ2UoZywgZlN0YXJ0LCBmTGltaXQsIHZpc2libGUpOworICAgIH0KKworICAgIC8qKiBkcmF3cyBvciBlcmFzZXMgYSBzZWxlY3Rpb24gaGlnaGxpZ2h0IGF0IHRoZSBzcGVjZmllZCBwb3NpdGlvbnMKKyAgICAqIERyYXdzIG9yIGVyYXNlcyBhIHNlbGVjdGlvbiBoaWdobGlnaHQgb3IgaW5zZXJ0aW9uIGNhcmV0IGNvcnJlc3BvbmRpbmcgdG8KKyAgICAqIHRoZSBzcGVjaWZpZWQgc2VsZWNpb24gcmFuZ2UKKyAgICAqIEBwYXJhbSBnIFRoZSBncmFwaGljcyBlbnZpcm9ubWVudCB0byBkcmF3IGludG8uICBJZiBudWxsLCB0aGlzIG1ldGhvZCBkb2VzIG5vdGhpbmcuCisgICAgKiBAcGFyYW0gc3RhcnQgVGhlIGJlZ2lubmluZyBvZiB0aGUgcmFuZ2UgdG8gaGlnaGxpZ2h0CisgICAgKiBAcGFyYW0gbGltaXQgVGhlIGVuZCBvZiB0aGUgcmFuZ2UgdG8gaGlnaGxpZ2h0CisgICAgKiBAcGFyYW0gdnNpYmxlIElmIHRydWUsIGRyYXc7IGlmIGZhbHNlLCBlcmFzZQorICAgICovCisgICAgcHJvdGVjdGVkIHZvaWQgZHJhd1NlbGVjdGlvblJhbmdlKCAgR3JhcGhpY3MgICAgZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0ICBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0ICBsaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuICAgICB2aXNpYmxlKSB7CisgICAgICAgIGlmIChnID09IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBSZWN0YW5nbGUgICBzZWxCb3VuZHMgPSBmVGV4dENvbXBvbmVudC5nZXRCb3VuZGluZ1JlY3Qoc3RhcnQsIGxpbWl0KTsKKworICAgICAgICBzZWxCb3VuZHMud2lkdGggPSBNYXRoLm1heCgxLCBzZWxCb3VuZHMud2lkdGgpOworICAgICAgICBzZWxCb3VuZHMuaGVpZ2h0ID0gTWF0aC5tYXgoMSwgc2VsQm91bmRzLmhlaWdodCk7CisKKyAgICAgICAgZlRleHRDb21wb25lbnQuZHJhd1RleHQoZywgc2VsQm91bmRzLCB2aXNpYmxlLCBzdGFydCwgbGltaXQsIGZIaWdobGlnaHRDb2xvcik7CisgICAgfQorCisgICAgcHJvdGVjdGVkIFRleHRPZmZzZXQgZ2V0QW5jaG9yKCkgeworICAgICAgICByZXR1cm4gZkFuY2hvcjsKKyAgICB9CisKKyAgICBwdWJsaWMgVGV4dE9mZnNldCBnZXRFbmQoKSB7CisgICAgICAgIHJldHVybiBmTGltaXQ7CisgICAgfQorCisgICAgcHVibGljIENvbG9yIGdldEhpZ2hsaWdodENvbG9yKCkgeworICAgICAgICByZXR1cm4gZkhpZ2hsaWdodENvbG9yOworICAgIH0KKworICAgIHB1YmxpYyBUZXh0T2Zmc2V0IGdldFN0YXJ0KCkgeworICAgICAgICByZXR1cm4gZlN0YXJ0OworICAgIH0KKworICAgIHB1YmxpYyBUZXh0UmFuZ2UgZ2V0U2VsZWN0aW9uUmFuZ2UoKSB7CisKKyAgICAgICAgcmV0dXJuIG5ldyBUZXh0UmFuZ2UoZlN0YXJ0LmZPZmZzZXQsIGZMaW1pdC5mT2Zmc2V0KTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBmb2N1c0dhaW5lZChGb2N1c0V2ZW50IGUpIHsKKworICAgICAgICBzZXRFbmFibGVkKHRydWUpOworICAgICAgICBkcmF3U2VsZWN0aW9uKGZUZXh0Q29tcG9uZW50LmdldEdyYXBoaWNzKCksIHRydWUpOworCisgICAgICAgIHJlc3RhcnRDYXJldEJsaW5raW5nKHRydWUpOworICAgICAgICBpZiAoZlBlbmRpbmdNb3VzZUV2ZW50ICE9IG51bGwpIHsKKyAgICAgICAgICAgIG1vdXNlUHJlc3NlZChmUGVuZGluZ01vdXNlRXZlbnQpOworICAgICAgICAgICAgZlBlbmRpbmdNb3VzZUV2ZW50ID0gbnVsbDsKKyAgICAgICAgfQorICAgICAgICBmTGlzdGVuZXIudGV4dFN0YXRlQ2hhbmdlZChUZXh0UGFuZWxFdmVudC5DTElQQk9BUkRfQ0hBTkdFRCk7CisgCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGZvY3VzTG9zdChGb2N1c0V2ZW50IGUpIHsKKyAgICAgICAgc3RvcENhcmV0QmxpbmtpbmcoKTsKKyAgICAgICAgc2V0RW5hYmxlZChmYWxzZSk7CisgICAgICAgIGRyYXdTZWxlY3Rpb24oZlRleHRDb21wb25lbnQuZ2V0R3JhcGhpY3MoKSwgZmFsc2UpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgZ2l2ZW4ga2V5IGV2ZW50IGNhbiBhZmZlY3QgdGhlIHNlbGVjdGlvbgorICAgICAqIHJhbmdlLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBrZXlBZmZlY3RzU2VsZWN0aW9uKEtleUV2ZW50IGUpIHsKKworICAgICAgICBpZiAoZS5nZXRJRCgpICE9IGUuS0VZX1BSRVNTRUQpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGludCBrZXkgPSBlLmdldEtleUNvZGUoKTsKKworICAgICAgICBzd2l0Y2ggKGtleSkgeworICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5WS19IT01FOgorICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5WS19FTkQ6CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LlZLX0xFRlQ6CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LlZLX1JJR0hUOgorICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5WS19VUDoKKyAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuVktfRE9XTjoKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBrZXlQcmVzc2VkKEtleUV2ZW50IGUpIHsKKworICAgICAgICBmSGFuZGxpbmdLZXlPckNvbW1hbmQgPSB0cnVlOworICAgICAgICBpbnQga2V5ID0gZS5nZXRLZXlDb2RlKCk7CisgICAgICAgIGJvb2xlYW4gcmVzdWx0ID0gdHJ1ZTsKKyAgICAgICAgCisgICAgICAgIHN3aXRjaCAoa2V5KSB7CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LlZLX0hPTUU6CisgICAgICAgICAgICAgICAgZG9Ib21lS2V5KGUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5WS19FTkQ6CisgICAgICAgICAgICAgICAgZG9FbmRLZXkoZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuVktfTEVGVDoKKyAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuVktfUklHSFQ6CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LlZLX1VQOgorICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5WS19ET1dOOgorICAgICAgICAgICAgICAgIGRvQXJyb3dLZXkoZSwga2V5KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgZlVwRG93bkFuY2hvciA9IG51bGw7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZIYW5kbGluZ0tleU9yQ29tbWFuZCA9IGZhbHNlOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIG1vdXNlUHJlc3NlZChNb3VzZUV2ZW50IGUpIHsKKworICAgICAgICBpZiAoIWVuYWJsZWQoKSkgeworICAgICAgICAgICAgZlBlbmRpbmdNb3VzZUV2ZW50ID0gZTsKKyAgICAgICAgICAgIGZUZXh0Q29tcG9uZW50LnJlcXVlc3RGb2N1cygpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZNb3VzZURvd24pCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImZNb3VzZURvd24gaXMgb3V0IG9mIHN5bmMgd2l0aCBtb3VzZSBpbiBUZXh0U2VsZWN0aW9uLiIpOworCisgICAgICAgIGZNb3VzZURvd24gPSB0cnVlOworICAgICAgICBzdG9wQ2FyZXRCbGlua2luZygpOworCisgICAgICAgIGludCB4ID0gZS5nZXRYKCksIHkgPSBlLmdldFkoKTsKKyAgICAgICAgYm9vbGVhbiB3YXNaZXJvTGVuZ3RoID0gcmFuZ2VJc1plcm9MZW5ndGgoZlN0YXJ0LCBmTGltaXQsIGZBbmNob3IpOworICAgICAgICAKKyAgICAgICAgVGV4dE9mZnNldCBjdXJyZW50ID0gZlRleHRDb21wb25lbnQucG9pbnRUb1RleHRPZmZzZXQobnVsbCwgeCwgeSwgbnVsbCwgdHJ1ZSk7CisgICAgICAgIFRleHRPZmZzZXQgYW5jaG9yU3RhcnQgPSBuZXcgVGV4dE9mZnNldCgpOworICAgICAgICBUZXh0T2Zmc2V0IGFuY2hvckVuZCA9IG5ldyBUZXh0T2Zmc2V0KCk7CisKKyAgICAgICAgZlVwRG93bkFuY2hvciA9IG51bGw7CisKKyAgICAgICAgLy8gaWYgd2UncmUgbm90IGV4dGVuZGluZyB0aGUgc2VsZWN0aW9uLi4uCisgICAgICAgIGlmICghZS5pc1NoaWZ0RG93bigpKSB7CisKKyAgICAgICAgICAgIC8vIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBjbGlja3MsIGNyZWF0ZSB0aGUgYXBwb3ByaWF0ZSB0eXBlIG9mIEJyZWFrSXRlcmF0b3IKKyAgICAgICAgICAgIC8vIG9iamVjdCBmb3IgZmluZGluZyB0ZXh0IGJvdW5kYXJpZXMgKHNpbmdsZSBjbGlja3MgZG9uJ3QgdXNlIGEgQnJlYWtJdGVyYXRvcgorICAgICAgICAgICAgLy8gb2JqZWN0KQorICAgICAgICAgICAgaWYgKGUuZ2V0Q2xpY2tDb3VudCgpID09IDIpCisgICAgICAgICAgICAgICAgZkJvdW5kYXJpZXMgPSBCcmVha0l0ZXJhdG9yLmdldFdvcmRJbnN0YW5jZSgpOworICAgICAgICAgICAgZWxzZSBpZiAoZS5nZXRDbGlja0NvdW50KCkgPT0gMykKKyAgICAgICAgICAgICAgICBmQm91bmRhcmllcyA9IEJyZWFrSXRlcmF0b3IuZ2V0U2VudGVuY2VJbnN0YW5jZSgpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZCb3VuZGFyaWVzID0gbnVsbDsKKworICAgICAgICAgICAgLy8gaWYgd2UncmUgdXNpbmcgYSBCcmVha0l0ZXJhdG9yIG9iamVjdCwgdXNlIGl0IHRvIGZpbmQgdGhlIG5lYXJlc3QgYm91bmRhcmllcworICAgICAgICAgICAgLy8gb24gZWl0aGVyIHNpZGUgb2YgdGhlIG1vdXNlLWNsaWNrIHBvc2l0aW9uIGFuZCBtYWtlIHRoZW0gb3VyIGFuY2hvciByYW5nZQorICAgICAgICAgICAgaWYgKGZCb3VuZGFyaWVzICE9IG51bGwpCisgICAgICAgICAgICAgICAgZkJvdW5kYXJpZXMuc2V0VGV4dChmVGV4dC5jcmVhdGVDaGFyYWN0ZXJJdGVyYXRvcigpKTsKKworICAgICAgICAgICAgYW5jaG9yU3RhcnQuYXNzaWduKGN1cnJlbnQpOworICAgICAgICAgICAgYWR2YW5jZVRvUHJldmlvdXNCb3VuZGFyeShhbmNob3JTdGFydCk7CisgICAgICAgICAgICBhbmNob3JFbmQuYXNzaWduKGN1cnJlbnQpOworICAgICAgICAgICAgYWR2YW5jZVRvTmV4dEJvdW5kYXJ5KGFuY2hvckVuZCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBpZiB3ZSBfYXJlXyBleHRlbmRpbmcgdGhlIHNlbGVjdGlvbiwgZGV0ZXJtaW5lIG91ciBhbmNob3IgcmFuZ2UgYXMgZm9sbG93czoKKyAgICAgICAgLy8gZkFuY2hvciBpcyB0aGUgc3RhcnQgb2YgdGhlIGFuY2hvciByYW5nZTsKKyAgICAgICAgLy8gdGhlIG5leHQgYm91bmRhcnkgKGFmdGVyIGZBbmNob3IpIGlzIHRoZSBsaW1pdCBvZiB0aGUgYW5jaG9yIHJhbmdlLgorCisgICAgICAgIGVsc2UgeworCisgICAgICAgICAgICBpZiAoZkJvdW5kYXJpZXMgIT0gbnVsbCkKKyAgICAgICAgICAgICAgICBmQm91bmRhcmllcy5zZXRUZXh0KGZUZXh0LmNyZWF0ZUNoYXJhY3Rlckl0ZXJhdG9yKCkpOworCisgICAgICAgICAgICBhbmNob3JTdGFydC5hc3NpZ24oZkFuY2hvcik7CisgICAgICAgICAgICBhbmNob3JFbmQuYXNzaWduKGFuY2hvclN0YXJ0KTsKKworICAgICAgICAgICAgYWR2YW5jZVRvTmV4dEJvdW5kYXJ5KGFuY2hvckVuZCk7CisgICAgICAgIH0KKworICAgICAgICBTZWxlY3Rpb25EcmFnSW50ZXJhY3RvciBpbnRlcmFjdG9yID0gbmV3IFNlbGVjdGlvbkRyYWdJbnRlcmFjdG9yKHRoaXMsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZUZXh0Q29tcG9uZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZSdW5TdHJhdGVneSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmNob3JTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmNob3JFbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FzWmVyb0xlbmd0aCk7CisKKyAgICAgICAgaW50ZXJhY3Rvci5hZGRUb093bmVyKGZUZXh0Q29tcG9uZW50KTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBtb3VzZVJlbGVhc2VkKE1vdXNlRXZlbnQgZSkgeworCisgICAgICAgIGZQZW5kaW5nTW91c2VFdmVudCA9IG51bGw7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBkcmFnIGludGVyYWN0b3IgY2FsbHMgdGhpcworICAgIHZvaWQgbW91c2VSZWxlYXNlZChib29sZWFuIHplcm9MZW5ndGhDaGFuZ2UpIHsKKworICAgICAgICBmTW91c2VEb3duID0gZmFsc2U7CisKKyAgICAgICAgaWYgKHplcm9MZW5ndGhDaGFuZ2UpIHsKKyAgICAgICAgICAgIGZMaXN0ZW5lci50ZXh0U3RhdGVDaGFuZ2VkKFRleHRQYW5lbEV2ZW50LlNFTEVDVElPTl9FTVBUWV9DSEFOR0VEKTsKKyAgICAgICAgfQorICAgICAgICBmTGlzdGVuZXIudGV4dFN0YXRlQ2hhbmdlZChUZXh0UGFuZWxFdmVudC5TRUxFQ1RJT05fUkFOR0VfQ0hBTkdFRCk7CisgICAgICAgIGZMaXN0ZW5lci50ZXh0U3RhdGVDaGFuZ2VkKFRleHRQYW5lbEV2ZW50LlNFTEVDVElPTl9TVFlMRVNfQ0hBTkdFRCk7CisKKyAgICAgICAgLy8gaWYgY2FyZXQgZHJhd2luZyBkdXJpbmcgbW91c2UgZHJhZ3MgaXMgc3VwcmVzc2VkLCBkcmF3IGNhcmV0IG5vdy4KKworICAgICAgICByZXN0YXJ0Q2FyZXRCbGlua2luZyh0cnVlKTsKKyAgICB9CisKKworICAgIC8qKiBkcmF3cyB0aGUgc2VsZWN0aW9uCisgICAgKiBQcm92aWRlZCwgb2YgY291cnNlLCB0aGF0IHRoZSBzZWxlY3Rpb24gaXMgdmlzaWJsZSwgdGhlIGFkb3JuZXIgaXMgZW5hYmxlZCwKKyAgICAqIGFuZCB3ZSdyZSBjYWxsaW5nIGl0IHRvIGFkb3JuIHRoZSB2aWV3IGl0IGFjdHVhbGx5IGJlbG9uZ3MgdG8KKyAgICAqIEBwYXJhbSBnIFRoZSBncmFwaGljcyBlbnZpcm9ubWVudCB0byBkcmF3IGludG8KKyAgICAqIEByZXR1cm4gdHJ1ZSBpZiB3ZSBhY3R1YWxseSBkcmV3CisgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBwYWludChHcmFwaGljcyBnLCBSZWN0YW5nbGUgZHJhd1JlY3QpIHsKKyAgICAgICAgLy8gZG9uJ3QgZHJhdyBhbnl0aGluZyB1bmxlc3Mgd2UncmUgZW5hYmxlZCBhbmQgdGhlIHNlbGVjdGlvbiBpcyB2aXNpYmxlCisgICAgICAgIGlmICghZW5hYmxlZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGZUZXh0Q29tcG9uZW50LmRyYXdUZXh0KGcsIGRyYXdSZWN0LCB0cnVlLCBmU3RhcnQsIGZMaW1pdCwgZkhpZ2hsaWdodENvbG9yKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLyoqIHNjcm9sbHMgdGhlIHZpZXcgdG8gcmV2ZWFsIHRoZSBsaXZlIGVuZCBvZiB0aGUgc2VsZWN0aW9uCisgICAgKiAoaS5lLiwgdGhlIGVuZCB0aGF0IG1vdmVzIGlmIHlvdSB1c2UgdGhlIGFycm93IGtleXMgd2l0aCB0aGUgc2hpZnQga2V5IGRvd24pCisgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzY3JvbGxUb1Nob3dTZWxlY3Rpb24oKSB7CisgICAgICAgIFJlY3RhbmdsZSAgIHNlbFJlY3QgPSBmVGV4dENvbXBvbmVudC5nZXRCb3VuZGluZ1JlY3QoZlN0YXJ0LCBmTGltaXQpOworCisgICAgICAgIGZUZXh0Q29tcG9uZW50LnNjcm9sbFRvU2hvdyhzZWxSZWN0KTsKKyAgICB9CisKKyAgICAvKiogc2Nyb2xscyB0aGUgdmlldyB0byByZXZlYWwgdGhlIGxpdmUgZW5kIG9mIHRoZSBzZWxlY3Rpb24KKyAgICAqIChpLmUuLCB0aGUgZW5kIHRoYXQgbW92ZXMgaWYgeW91IHVzZSB0aGUgYXJyb3cga2V5cyB3aXRoIHRoZSBzaGlmdCBrZXkgZG93bikKKyAgICAqLworICAgIHB1YmxpYyB2b2lkIHNjcm9sbFRvU2hvd1NlbGVjdGlvbkVuZCgpIHsKKyAgICAgICAgVGV4dE9mZnNldCAgbGl2ZUVuZDsKKyAgICAgICAgLy8gdmFyaWFibGUgbm90IHVzZWQgUG9pbnRbXSAgICAgcG9pbnRzOworICAgICAgICBSZWN0YW5nbGUgICBjYXJldDsKKworICAgICAgICBpZiAoZkFuY2hvci5lcXVhbHMoZlN0YXJ0KSkKKyAgICAgICAgICAgIGxpdmVFbmQgPSBmTGltaXQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxpdmVFbmQgPSBmU3RhcnQ7CisKKyAgICAgICAgLy9wb2ludHMgPSBmVGV4dENvbXBvbmVudC50ZXh0T2Zmc2V0VG9Qb2ludChsaXZlRW5kKTsKKyAgICAgICAgLy9jYXJldCA9IG5ldyBSZWN0YW5nbGUocG9pbnRzWzBdKTsKKyAgICAgICAgLy9jYXJldCA9IGNhcmV0LnVuaW9uKG5ldyBSZWN0YW5nbGUocG9pbnRzWzFdKSk7CisgICAgICAgIGNhcmV0ID0gZlRleHRDb21wb25lbnQuZ2V0Q2FyZXRSZWN0KGxpdmVFbmQpOworICAgICAgICBmVGV4dENvbXBvbmVudC5zY3JvbGxUb1Nob3coY2FyZXQpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBzZWxlY3QoVGV4dFJhbmdlIHJhbmdlKSB7CisgICAgICAgIC8vIHZhcmlhYmxlIG5vdCB1c2VkIGludCB0ZXh0TGVuZ3RoID0gZlRleHRDb21wb25lbnQuZ2V0VGV4dCgpLmxlbmd0aCgpOworCisgICAgICAgIFRleHRPZmZzZXQgc3RhcnQgPSBuZXcgVGV4dE9mZnNldChyYW5nZS5zdGFydCk7CisKKyAgICAgICAgc3RvcENhcmV0QmxpbmtpbmcoKTsKKyAgICAgICAgc2V0U2VsUmFuZ2VBbmREcmF3KHN0YXJ0LCBuZXcgVGV4dE9mZnNldChyYW5nZS5saW1pdCksIHN0YXJ0KTsKKyAgICAgICAgcmVzdGFydENhcmV0QmxpbmtpbmcodHJ1ZSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0SGlnaGxpZ2h0Q29sb3IoQ29sb3IgbmV3Q29sb3IpIHsKKyAgICAgICAgZkhpZ2hsaWdodENvbG9yID0gbmV3Q29sb3I7CisgICAgICAgIGlmIChlbmFibGVkKCkpCisgICAgICAgICAgICBkcmF3U2VsZWN0aW9uKGZUZXh0Q29tcG9uZW50LmdldEdyYXBoaWNzKCksIHRydWUpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgYm9vbGVhbiByYW5nZUlzWmVyb0xlbmd0aChUZXh0T2Zmc2V0IHN0YXJ0LCBUZXh0T2Zmc2V0IGxpbWl0LCBUZXh0T2Zmc2V0IGFuY2hvcikgeworICAgICAgICAKKyAgICAgICAgcmV0dXJuIHN0YXJ0LmZPZmZzZXQgPT0gbGltaXQuZk9mZnNldCAmJiBhbmNob3IuZk9mZnNldCA9PSBsaW1pdC5mT2Zmc2V0OworICAgIH0KKworICAgIC8vIHNpZ2guLi4gbG9vayBvdXQgZm9yIGFsaWFzaW5nCisgICAgcHVibGljIHZvaWQgc2V0U2VsZWN0aW9uUmFuZ2UoVGV4dE9mZnNldCBuZXdTdGFydCwgVGV4dE9mZnNldCBuZXdMaW1pdCwgVGV4dE9mZnNldCBuZXdBbmNob3IpIHsKKworICAgICAgICBib29sZWFuIHplcm9MZW5ndGhDaGFuZ2UgPSByYW5nZUlzWmVyb0xlbmd0aChuZXdTdGFydCwgbmV3TGltaXQsIG5ld0FuY2hvcikgIT0gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZUlzWmVyb0xlbmd0aChmU3RhcnQsIGZMaW1pdCwgZkFuY2hvcik7CisgICAgICAgIFRleHRPZmZzZXQgdGVtcE5ld0FuY2hvcjsKKyAgICAgICAgaWYgKG5ld0FuY2hvciA9PSBmU3RhcnQgfHwgbmV3QW5jaG9yID09IGZMaW1pdCkgeworICAgICAgICAgICAgdGVtcE5ld0FuY2hvciA9IG5ldyBUZXh0T2Zmc2V0KG5ld0FuY2hvcik7IC8vIGNsb25lIGluIGNhc2Ugb2YgYWxpYXNpbmcKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRlbXBOZXdBbmNob3IgPSBuZXdBbmNob3I7CisgICAgICAgIH0KKworICAgICAgICAvLyBERUJVRyB7amJyfQorCisgICAgICAgIGlmIChuZXdTdGFydC5ncmVhdGVyVGhhbihuZXdMaW1pdCkpCisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJTZWxlY3Rpb24gbGltaXQgaXMgYmVmb3JlIHNlbGVjdGlvbiBzdGFydC4iKTsKKworICAgICAgICBpZiAobmV3TGltaXQgIT0gZlN0YXJ0KSB7CisgICAgICAgICAgICBmU3RhcnQuYXNzaWduKG5ld1N0YXJ0KTsKKyAgICAgICAgICAgIGZMaW1pdC5hc3NpZ24obmV3TGltaXQpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZkxpbWl0LmFzc2lnbihuZXdMaW1pdCk7CisgICAgICAgICAgICBmU3RhcnQuYXNzaWduKG5ld1N0YXJ0KTsKKyAgICAgICAgfQorCisgICAgICAgIGZBbmNob3IuYXNzaWduKHRlbXBOZXdBbmNob3IpOworCisgICAgICAgIGlmIChmU3RhcnQuZk9mZnNldCA9PSBmTGltaXQuZk9mZnNldCkgeworICAgICAgICAgICAgZlN0YXJ0LmZQbGFjZW1lbnQgPSBmQW5jaG9yLmZQbGFjZW1lbnQ7CisgICAgICAgICAgICBmTGltaXQuZlBsYWNlbWVudCA9IGZBbmNob3IuZlBsYWNlbWVudDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKCFmTW91c2VEb3duKSB7CisgICAgICAgICAgICBpZiAoemVyb0xlbmd0aENoYW5nZSkgeworICAgICAgICAgICAgICAgIGZMaXN0ZW5lci50ZXh0U3RhdGVDaGFuZ2VkKFRleHRQYW5lbEV2ZW50LlNFTEVDVElPTl9FTVBUWV9DSEFOR0VEKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZMaXN0ZW5lci50ZXh0U3RhdGVDaGFuZ2VkKFRleHRQYW5lbEV2ZW50LlNFTEVDVElPTl9SQU5HRV9DSEFOR0VEKTsKKyAgICAgICAgICAgIGlmIChmSGFuZGxpbmdLZXlPckNvbW1hbmQpIHsKKyAgICAgICAgICAgICAgICBmTGlzdGVuZXIudGV4dFN0YXRlQ2hhbmdlZChUZXh0UGFuZWxFdmVudC5TRUxFQ1RJT05fU1RZTEVTX0NIQU5HRUQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHNvcnRPZmZzZXRzKFRleHRPZmZzZXQgb2Zmc2V0c1tdKSB7CisKKyAgICAgICAgaW50IGksIGo7CisKKyAgICAgICAgZm9yIChpPTA7IGkgPCBvZmZzZXRzLmxlbmd0aC0xOyBpKyspIHsKKyAgICAgICAgICAgIGZvciAoaj1pKzE7IGogPCBvZmZzZXRzLmxlbmd0aDsgaisrKSB7CisgICAgICAgICAgICAgICAgaWYgKG9mZnNldHNbal0ubGVzc1RoYW4ob2Zmc2V0c1tpXSkpIHsKKyAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCB0ZW1wID0gb2Zmc2V0c1tqXTsKKyAgICAgICAgICAgICAgICAgICAgb2Zmc2V0c1tqXSA9IG9mZnNldHNbaV07CisgICAgICAgICAgICAgICAgICAgIG9mZnNldHNbaV0gPSB0ZW1wOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIERFQlVHIHtqYnJ9CisgICAgICAgIGZvciAoaT0wOyBpIDwgb2Zmc2V0cy5sZW5ndGgtMTsgaSsrKQorICAgICAgICAgICAgaWYgKG9mZnNldHNbaV0uZ3JlYXRlclRoYW4ob2Zmc2V0c1tpKzFdKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoInNvcnRPZmZzZXRzIGZhaWxlZCEiKTsKKyAgICB9CisKKyAgICBwcml2YXRlIFJlY3RhbmdsZSBnZXRTZWxlY3Rpb25DaGFuZ2VSZWN0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCByYW5nZVN0YXJ0LCBUZXh0T2Zmc2V0IHJhbmdlTGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IG9sZFN0YXJ0LCBUZXh0T2Zmc2V0IG9sZExpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCBuZXdTdGFydCwgVGV4dE9mZnNldCBuZXdMaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gZHJhd0lmSW5zUG9pbnQpIHsKKworICAgICAgICBpZiAoIXJhbmdlU3RhcnQuZXF1YWxzKHJhbmdlTGltaXQpKQorICAgICAgICAgICAgcmV0dXJuIGZUZXh0Q29tcG9uZW50LmdldEJvdW5kaW5nUmVjdChyYW5nZVN0YXJ0LCByYW5nZUxpbWl0KTsKKworICAgICAgICAvLyBoZXJlLCByYW5nZVN0YXJ0IGFuZCByYW5nZUxpbWl0IGFyZSBlcXVhbAorCisgICAgICAgIGlmIChyYW5nZVN0YXJ0LmVxdWFscyhvbGRMaW1pdCkpIHsKKworICAgICAgICAgICAgLy8gcmFuZ2Ugc3RhcnQgaXMgT0xEIGluc2VydGlvbiBwb2ludC4gIFJlZHJhdyBpZiBjYXJldCBpcyBjdXJyZW50bHkgdmlzaWJsZS4KKworICAgICAgICAgICAgaWYgKGZDYXJldElzVmlzaWJsZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZlRleHRDb21wb25lbnQuZ2V0Qm91bmRpbmdSZWN0KHJhbmdlU3RhcnQsIHJhbmdlU3RhcnQpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHJhbmdlU3RhcnQuZXF1YWxzKG5ld0xpbWl0KSkgeworCisgICAgICAgICAgICAvLyByYW5nZSBzdGFydCBpcyBORVcgaW5zZXJ0aW9uIHBvaW50LgorCisgICAgICAgICAgICBpZiAoZHJhd0lmSW5zUG9pbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZUZXh0Q29tcG9uZW50LmdldEJvdW5kaW5nUmVjdChyYW5nZVN0YXJ0LCByYW5nZVN0YXJ0KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gcmVjdGFuZ2xlc092ZXJsYXBWZXJ0aWNhbGx5KFJlY3RhbmdsZSByMSwgUmVjdGFuZ2xlIHIyKSB7CisgICAgICAgIAorICAgICAgICBpZiAocjEgPT0gbnVsbCB8fCByMiA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiByMS55IDw9IHIyLnkgKyByMi5oZWlnaHQgfHwgcjIueSA8PSByMS55ICsgcjEuaGVpZ2h0OworICAgIH0KKyAgICAKKyAgICAvLyBVcGRhdGUgdG8gc2hvdyBuZXcgc2VsZWN0aW9uLCByZWRyYXdpbmcgYXMgbGl0dGxlIGFzIHBvc3NpYmxlCisKKyAgICBwcml2YXRlIHZvaWQgdXBkYXRlU2VsZWN0aW9uRGlzcGxheSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IG9sZFN0YXJ0LCBUZXh0T2Zmc2V0IG9sZExpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgbmV3U3RhcnQsIFRleHRPZmZzZXQgbmV3TGltaXQsIGJvb2xlYW4gZHJhd0lmSW5zUG9pbnQpIHsKKworICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigibmV3U3RhcnQ6IiArIG5ld1N0YXJ0ICsgIjsgbmV3TGltaXQ6IiArIG5ld0xpbWl0KTsKKworICAgICAgICBUZXh0T2Zmc2V0IG9mZltdID0gbmV3IFRleHRPZmZzZXRbNF07CisKKyAgICAgICAgb2ZmWzBdID0gb2xkU3RhcnQ7CisgICAgICAgIG9mZlsxXSA9IG9sZExpbWl0OworICAgICAgICBvZmZbMl0gPSBuZXdTdGFydDsKKyAgICAgICAgb2ZmWzNdID0gbmV3TGltaXQ7CisKKyAgICAgICAgc29ydE9mZnNldHMob2ZmKTsKKworICAgICAgICBSZWN0YW5nbGUgcjEgPSBnZXRTZWxlY3Rpb25DaGFuZ2VSZWN0KG9mZlswXSwgb2ZmWzFdLCBvbGRTdGFydCwgb2xkTGltaXQsIG5ld1N0YXJ0LCBuZXdMaW1pdCwgZHJhd0lmSW5zUG9pbnQpOworICAgICAgICBSZWN0YW5nbGUgcjIgPSBnZXRTZWxlY3Rpb25DaGFuZ2VSZWN0KG9mZlsyXSwgb2ZmWzNdLCBvbGRTdGFydCwgb2xkTGltaXQsIG5ld1N0YXJ0LCBuZXdMaW1pdCwgZHJhd0lmSW5zUG9pbnQpOworCisgICAgICAgIGJvb2xlYW4gZHJhd1NlbGVjdGlvbiA9IGRyYXdJZkluc1BvaW50IHx8ICFuZXdTdGFydC5lcXVhbHMobmV3TGltaXQpOworCisgICAgICAgIGlmIChyZWN0YW5nbGVzT3ZlcmxhcFZlcnRpY2FsbHkocjEsIHIyKSkgeworCisgICAgICAgICAgICBmVGV4dENvbXBvbmVudC5kcmF3VGV4dChmVGV4dENvbXBvbmVudC5nZXRHcmFwaGljcygpLCByMS51bmlvbihyMiksIGRyYXdTZWxlY3Rpb24sIG5ld1N0YXJ0LCBuZXdMaW1pdCwgZkhpZ2hsaWdodENvbG9yKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChyMSAhPSBudWxsKQorICAgICAgICAgICAgICAgIGZUZXh0Q29tcG9uZW50LmRyYXdUZXh0KGZUZXh0Q29tcG9uZW50LmdldEdyYXBoaWNzKCksIHIxLCBkcmF3U2VsZWN0aW9uLCBuZXdTdGFydCwgbmV3TGltaXQsIGZIaWdobGlnaHRDb2xvcik7CisgICAgICAgICAgICBpZiAocjIgIT0gbnVsbCkKKyAgICAgICAgICAgICAgICBmVGV4dENvbXBvbmVudC5kcmF3VGV4dChmVGV4dENvbXBvbmVudC5nZXRHcmFwaGljcygpLCByMiwgZHJhd1NlbGVjdGlvbiwgbmV3U3RhcnQsIG5ld0xpbWl0LCBmSGlnaGxpZ2h0Q29sb3IpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0U2VsUmFuZ2VBbmREcmF3KFRleHRPZmZzZXQgbmV3U3RhcnQsIFRleHRPZmZzZXQgbmV3TGltaXQsIFRleHRPZmZzZXQgbmV3QW5jaG9yKSB7CisKKyAgICAgICAgLy8gaWYgdGhlIG9sZCBhbmQgbmV3IHNlbGVjdGlvbiByYW5nZXMgYXJlIHRoZSBzYW1lLCBkb24ndCBkbyBhbnl0aGluZworICAgICAgICBpZiAoZlN0YXJ0LmVxdWFscyhuZXdTdGFydCkgJiYgZkxpbWl0LmVxdWFscyhuZXdMaW1pdCkgJiYgZkFuY2hvci5lcXVhbHMobmV3QW5jaG9yKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoZW5hYmxlZCgpKQorICAgICAgICAgICAgc3RvcENhcmV0QmxpbmtpbmcoKTsKKworICAgICAgICAvLyB1cGRhdGUgdGhlIHNlbGVjdGlvbiBvbiBzY3JlZW4gaWYgd2UncmUgZW5hYmxlZCBhbmQgdmlzaWJsZQorCisgICAgICAgIFRleHRPZmZzZXQgb2xkU3RhcnQgPSBuZXcgVGV4dE9mZnNldChmU3RhcnQpLCBvbGRMaW1pdCA9IG5ldyBUZXh0T2Zmc2V0KGZMaW1pdCk7CisKKyAgICAgICAgc2V0U2VsZWN0aW9uUmFuZ2UobmV3U3RhcnQsIG5ld0xpbWl0LCBuZXdBbmNob3IpOworCisgICAgICAgIGlmIChlbmFibGVkKCkpIHsKKworICAgICAgICAgICAgICAgIC8vIFRvIHN1cHJlc3MgZHJhd2luZyBhIGNhcmV0IGR1cmluZyBhIG1vdXNlIGRyYWcsIHBhc3MgIWZNb3VzZURvd24gaW5zdGVhZCBvZiB0cnVlOgorICAgICAgICAgICAgICAgIHVwZGF0ZVNlbGVjdGlvbkRpc3BsYXkob2xkU3RhcnQsIG9sZExpbWl0LCBmU3RhcnQsIGZMaW1pdCwgdHJ1ZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWZNb3VzZURvd24gJiYgZW5hYmxlZCgpKQorICAgICAgICAgICAgcmVzdGFydENhcmV0QmxpbmtpbmcodHJ1ZSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc3RvcENhcmV0QmxpbmtpbmcoKSB7CisKKyAgICAgICAgc3luY2hyb25pemVkKHRoaXMpIHsKKyAgICAgICAgICAgIGZDYXJldFNob3VsZEJsaW5rID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKy8qKgorKiBSZXN1bWUgYmxpbmtpbmcgdGhlIGNhcmV0LCBpZiB0aGUgc2VsZWN0aW9uIGlzIGFuIGluc2VydGlvbiBwb2ludC4KKyogQHBhcmFtIGNhcmV0SXNWaXNpYmxlIHRydWUgaWYgdGhlIGNhcmV0IGlzIGRpc3BsYXllZCB3aGVuIHRoaXMgaXMgY2FsbGVkLgorKiBUaGlzIG1ldGhvZCByZWxpZXMgb24gdGhlIGNsaWVudCB0byBkaXNwbGF5IChvciBub3QgZGlzcGxheSkgdGhlIGNhcmV0LgorKi8KKyAgICBwdWJsaWMgdm9pZCByZXN0YXJ0Q2FyZXRCbGlua2luZyhib29sZWFuIGNhcmV0SXNWaXNpYmxlKSB7CisKKyAgICAgICAgc3luY2hyb25pemVkKHRoaXMpIHsKKyAgICAgICAgICAgIGZDYXJldFNob3VsZEJsaW5rID0gZlN0YXJ0LmVxdWFscyhmTGltaXQpOworICAgICAgICAgICAgZkNhcmV0Q291bnQgPSAwOworICAgICAgICAgICAgZkNhcmV0SXNWaXNpYmxlID0gY2FyZXRJc1Zpc2libGU7CisKKyAgICAgICAgICAgIGlmIChmQ2FyZXRTaG91bGRCbGluaykgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIG5vdGlmeSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXRjaCAoSWxsZWdhbE1vbml0b3JTdGF0ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQ2F1Z2h0IElsbGVnYWxNb25pdG9yU3RhdGVFeGNlcHRpb246ICIrZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgcmVtb3ZlRnJvbU93bmVyKCkgeworCisgICAgICAgIHN0b3BDYXJldEJsaW5raW5nKCk7CisgICAgICAgIHN1cGVyLnJlbW92ZUZyb21Pd25lcigpOworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL1RoYWlLZXlSZW1hcC5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL1RoYWlLZXlSZW1hcC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjVmYzRiZTMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvVGhhaUtleVJlbWFwLmphdmEKQEAgLTAsMCArMSwxMTggQEAKKy8qKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMS0yMDAyLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvVGhhaUtleVJlbWFwLmphdmEsdiAkCisgKiAkRGF0ZTogMjAwMi8wOC8xMyAyMzo0NDo0NSAkCisgKiAkUmV2aXNpb246IDEuMiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbDsKKworZmluYWwgY2xhc3MgVGhhaUtleVJlbWFwIGV4dGVuZHMgS2V5UmVtYXAgeworCisgICAgcHVibGljIGNoYXIgcmVtYXAoY2hhciBjKSB7CisKKyAgICAgICAgc3dpdGNoIChjKSB7CisgICAgICAgICAgICBjYXNlICdgJzogcmV0dXJuICdcdTAwNWYnOworICAgICAgICAgICAgY2FzZSAnfic6IHJldHVybiAnXHUwMDI1JzsKKyAgICAgICAgICAgIGNhc2UgJzEnOiByZXR1cm4gJ1x1MGU0NSc7CisgICAgICAgICAgICBjYXNlICchJzogcmV0dXJuICdcdTAwMmInOworICAgICAgICAgICAgY2FzZSAnMic6IHJldHVybiAnXHUwMDJmJzsKKyAgICAgICAgICAgIGNhc2UgJ0AnOiByZXR1cm4gJ1x1MGU1MSc7CisgICAgICAgICAgICBjYXNlICczJzogcmV0dXJuICdcdTAwMmQnOworICAgICAgICAgICAgY2FzZSAnIyc6IHJldHVybiAnXHUwZTUyJzsKKyAgICAgICAgICAgIGNhc2UgJzQnOiByZXR1cm4gJ1x1MGUyMCc7CisgICAgICAgICAgICBjYXNlICckJzogcmV0dXJuICdcdTBlNTMnOworICAgICAgICAgICAgY2FzZSAnNSc6IHJldHVybiAnXHUwZTE2JzsKKyAgICAgICAgICAgIGNhc2UgJyUnOiByZXR1cm4gJ1x1MGU1NCc7CisgICAgICAgICAgICBjYXNlICc2JzogcmV0dXJuICdcdTBlMzgnOworICAgICAgICAgICAgY2FzZSAnXic6IHJldHVybiAnXHUwZTM5JzsKKyAgICAgICAgICAgIGNhc2UgJzcnOiByZXR1cm4gJ1x1MGUzNic7CisgICAgICAgICAgICBjYXNlICcmJzogcmV0dXJuICdcdTBlM2YnOworICAgICAgICAgICAgY2FzZSAnOCc6IHJldHVybiAnXHUwZTA0JzsKKyAgICAgICAgICAgIGNhc2UgJyonOiByZXR1cm4gJ1x1MGU1NSc7CisgICAgICAgICAgICBjYXNlICc5JzogcmV0dXJuICdcdTBlMTUnOworICAgICAgICAgICAgY2FzZSAnKCc6IHJldHVybiAnXHUwZTU2JzsKKyAgICAgICAgICAgIGNhc2UgJzAnOiByZXR1cm4gJ1x1MGUwOCc7CisgICAgICAgICAgICBjYXNlICcpJzogcmV0dXJuICdcdTBlNTcnOworICAgICAgICAgICAgY2FzZSAnLSc6IHJldHVybiAnXHUwZTAyJzsKKyAgICAgICAgICAgIGNhc2UgJ18nOiByZXR1cm4gJ1x1MGU1OCc7CisgICAgICAgICAgICBjYXNlICc9JzogcmV0dXJuICdcdTBlMDgnOworICAgICAgICAgICAgY2FzZSAnKyc6IHJldHVybiAnXHUwZTU5JzsKKyAgICAgICAgICAgIGNhc2UgJ3EnOiByZXR1cm4gJ1x1MGU0Nic7CisgICAgICAgICAgICBjYXNlICdRJzogcmV0dXJuICdcdTBlNTAnOworICAgICAgICAgICAgY2FzZSAndyc6IHJldHVybiAnXHUwZTQ0JzsKKyAgICAgICAgICAgIGNhc2UgJ1cnOiByZXR1cm4gJ1x1MDAyMic7CisgICAgICAgICAgICBjYXNlICdlJzogcmV0dXJuICdcdTBlMzMnOworICAgICAgICAgICAgY2FzZSAnRSc6IHJldHVybiAnXHUwZTBlJzsKKyAgICAgICAgICAgIGNhc2UgJ3InOiByZXR1cm4gJ1x1MGUxZSc7CisgICAgICAgICAgICBjYXNlICdSJzogcmV0dXJuICdcdTBlMTEnOworICAgICAgICAgICAgY2FzZSAndCc6IHJldHVybiAnXHUwZTMwJzsKKyAgICAgICAgICAgIGNhc2UgJ1QnOiByZXR1cm4gJ1x1MGUxOCc7CisgICAgICAgICAgICBjYXNlICd5JzogcmV0dXJuICdcdTBlMzEnOworICAgICAgICAgICAgY2FzZSAnWSc6IHJldHVybiAnXHUwZTRkJzsKKyAgICAgICAgICAgIGNhc2UgJ3UnOiByZXR1cm4gJ1x1MGUzNSc7CisgICAgICAgICAgICBjYXNlICdVJzogcmV0dXJuICdcdTBlNGEnOworICAgICAgICAgICAgY2FzZSAnaSc6IHJldHVybiAnXHUwZTIzJzsKKyAgICAgICAgICAgIGNhc2UgJ0knOiByZXR1cm4gJ1x1MGUxMyc7CisgICAgICAgICAgICBjYXNlICdvJzogcmV0dXJuICdcdTBlMTknOworICAgICAgICAgICAgY2FzZSAnTyc6IHJldHVybiAnXHUwZTJmJzsKKyAgICAgICAgICAgIGNhc2UgJ3AnOiByZXR1cm4gJ1x1MGUyMic7CisgICAgICAgICAgICBjYXNlICdQJzogcmV0dXJuICdcdTBlMGQnOworICAgICAgICAgICAgY2FzZSAnWyc6IHJldHVybiAnXHUwZTFhJzsKKyAgICAgICAgICAgIGNhc2UgJ3snOiByZXR1cm4gJ1x1MGUxMCc7CisgICAgICAgICAgICBjYXNlICddJzogcmV0dXJuICdcdTBlMjUnOworICAgICAgICAgICAgY2FzZSAnfSc6IHJldHVybiAnXHUwMDJjJzsKKyAgICAgICAgICAgIGNhc2UgJ1xcJzogcmV0dXJuICdcdTBlMDMnOworICAgICAgICAgICAgY2FzZSAnfCc6IHJldHVybiAnXHUwZTA1JzsKKyAgICAgICAgICAgIGNhc2UgJ2EnOiByZXR1cm4gJ1x1MGUxZic7CisgICAgICAgICAgICBjYXNlICdBJzogcmV0dXJuICdcdTBlMjQnOworICAgICAgICAgICAgY2FzZSAncyc6IHJldHVybiAnXHUwZTJiJzsKKyAgICAgICAgICAgIGNhc2UgJ1MnOiByZXR1cm4gJ1x1MGUwNic7CisgICAgICAgICAgICBjYXNlICdkJzogcmV0dXJuICdcdTBlMDEnOworICAgICAgICAgICAgY2FzZSAnRCc6IHJldHVybiAnXHUwZTBmJzsKKyAgICAgICAgICAgIGNhc2UgJ2YnOiByZXR1cm4gJ1x1MGUxNCc7CisgICAgICAgICAgICBjYXNlICdGJzogcmV0dXJuICdcdTBlNDInOworICAgICAgICAgICAgY2FzZSAnZyc6IHJldHVybiAnXHUwZTQwJzsKKyAgICAgICAgICAgIGNhc2UgJ0cnOiByZXR1cm4gJ1x1MGUwYyc7CisgICAgICAgICAgICBjYXNlICdoJzogcmV0dXJuICdcdTBlNDknOworICAgICAgICAgICAgY2FzZSAnSCc6IHJldHVybiAnXHUwZTQ3JzsKKyAgICAgICAgICAgIGNhc2UgJ2onOiByZXR1cm4gJ1x1MGU0OCc7CisgICAgICAgICAgICBjYXNlICdKJzogcmV0dXJuICdcdTBlNGInOworICAgICAgICAgICAgY2FzZSAnayc6IHJldHVybiAnXHUwZTMyJzsKKyAgICAgICAgICAgIGNhc2UgJ0snOiByZXR1cm4gJ1x1MGUyOSc7CisgICAgICAgICAgICBjYXNlICdsJzogcmV0dXJuICdcdTBlMmEnOworICAgICAgICAgICAgY2FzZSAnTCc6IHJldHVybiAnXHUwZTI4JzsKKyAgICAgICAgICAgIGNhc2UgJzsnOiByZXR1cm4gJ1x1MGUyNyc7CisgICAgICAgICAgICBjYXNlICc6JzogcmV0dXJuICdcdTBlMGInOworICAgICAgICAgICAgY2FzZSAnXCcnOiByZXR1cm4gJ1x1MGUwNyc7CisgICAgICAgICAgICBjYXNlICdcIic6IHJldHVybiAnXHUwMDJlJzsKKyAgICAgICAgICAgIGNhc2UgJ3onOiByZXR1cm4gJ1x1MGUxYyc7CisgICAgICAgICAgICBjYXNlICdaJzogcmV0dXJuICdcdTAwMjgnOworICAgICAgICAgICAgY2FzZSAneCc6IHJldHVybiAnXHUwZTFiJzsKKyAgICAgICAgICAgIGNhc2UgJ1gnOiByZXR1cm4gJ1x1MDAyOSc7CisgICAgICAgICAgICBjYXNlICdjJzogcmV0dXJuICdcdTBlNDEnOworICAgICAgICAgICAgY2FzZSAnQyc6IHJldHVybiAnXHUwZTA5JzsKKyAgICAgICAgICAgIGNhc2UgJ3YnOiByZXR1cm4gJ1x1MGUyZCc7CisgICAgICAgICAgICBjYXNlICdWJzogcmV0dXJuICdcdTBlMmUnOworICAgICAgICAgICAgY2FzZSAnYic6IHJldHVybiAnXHUwZTM0JzsKKyAgICAgICAgICAgIGNhc2UgJ0InOiByZXR1cm4gJ1x1MGUzYSc7CisgICAgICAgICAgICBjYXNlICduJzogcmV0dXJuICdcdTBlMzcnOworICAgICAgICAgICAgY2FzZSAnTic6IHJldHVybiAnXHUwZTRjJzsKKyAgICAgICAgICAgIGNhc2UgJ20nOiByZXR1cm4gJ1x1MGUxNyc7CisgICAgICAgICAgICBjYXNlICdNJzogcmV0dXJuICdcdTAwM2YnOworICAgICAgICAgICAgY2FzZSAnLCc6IHJldHVybiAnXHUwZTIxJzsKKyAgICAgICAgICAgIGNhc2UgJzwnOiByZXR1cm4gJ1x1MGUxMic7CisgICAgICAgICAgICBjYXNlICcuJzogcmV0dXJuICdcdTBlNDMnOworICAgICAgICAgICAgY2FzZSAnPic6IHJldHVybiAnXHUwZTJjJzsKKyAgICAgICAgICAgIGNhc2UgJy8nOiByZXR1cm4gJ1x1MGUxZCc7CisgICAgICAgICAgICBjYXNlICc/JzogcmV0dXJuICdcdTBlMjYnOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGM7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL1RyYW5zZmVyYWJsZVRleHQuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9UcmFuc2ZlcmFibGVUZXh0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNDA4MWFjNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9UcmFuc2ZlcmFibGVUZXh0LmphdmEKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogVHJhbnNmZXJhYmxlVGV4dC5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjUxOjIzICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsOworCitpbXBvcnQgamF2YS5hd3QuZGF0YXRyYW5zZmVyLlN0cmluZ1NlbGVjdGlvbjsKK2ltcG9ydCBqYXZhLmF3dC5kYXRhdHJhbnNmZXIuRGF0YUZsYXZvcjsKK2ltcG9ydCBqYXZhLmF3dC5kYXRhdHJhbnNmZXIuVW5zdXBwb3J0ZWRGbGF2b3JFeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmlvLkJ5dGVBcnJheUlucHV0U3RyZWFtOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1Db25zdFRleHQ7CisKKy8qKgorICogVGhpcyBjbGFzcyBhbGxvd3MgTUNvbnN0VGV4dCBpbnN0YW5jZXMgdG8gYmUgdGhlIGNvbnRlbnRzCisgKiBvZiBhIENsaXBib2FyZC4gIFRvIHN0b3JlIGFuIE1Db25zdFRleHQgb24gdGhlIGNsaXBib2FyZCwKKyAqIGNvbnN0cnVjdCBhIFRyYW5zZmVyYWJsZVRleHQgZnJvbSB0aGUgTUNvbnN0VGV4dCwgYW5kIG1ha2UKKyAqIHRoZSBUcmFuc2ZlcmFibGVUZXh0IHRoZSBjbGlwYm9hcmQgY29udGVudHMuCisgKgorICovCisvKgorICogTm90ZTogIHRoaXMgY2xhc3MgaW5oZXJpdHMgZnJvbSBTdHJpbmdTZWxlY3Rpb24gYmVjYXVzZSBvZgorICogYSBidWcgaW4gdGhlIDEuMS43IHN5c3RlbSBjbGlwYm9hcmQgaW1wbGVtZW50YXRpb24uICBUaGUKKyAqIHN5c3RlbSBjbGlwYm9hcmQgd29uJ3QgcHV0IHRleHQgb24gdGhlIE9TIGNsaXBib2FyZCB1bmxlc3MKKyAqIHRoZSBjb250ZW50IGlzIGEgU3RyaW5nU2VsZWN0aW9uLgorICovCitmaW5hbCBjbGFzcyBUcmFuc2ZlcmFibGVUZXh0IGV4dGVuZHMgU3RyaW5nU2VsZWN0aW9uCit7CisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcml2YXRlIE1Db25zdFRleHQgZlRleHQ7CisKKyAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgdGV4dFRvU3RyaW5nKE1Db25zdFRleHQgdGV4dCkgeworICAgICAgICBjaGFyW10gY2hhcnMgPSBuZXcgY2hhclt0ZXh0Lmxlbmd0aCgpXTsKKyAgICAgICAgdGV4dC5leHRyYWN0Q2hhcnMoMCwgY2hhcnMubGVuZ3RoLCBjaGFycywgMCk7CisgICAgICAgIHJldHVybiBuZXcgU3RyaW5nKGNoYXJzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSBUcmFuc2ZlcmFibGVUZXh0IGZvciB0aGUgZ2l2ZW4gdGV4dC4KKyAgICAgKiBAcGFyYW0gdGV4dCB0aGUgdGV4dCB0byBnbyBvbiB0aGUgQ2xpcGJvYXJkLiAgVGhlIHRleHQgaXMKKyAgICAgKiAgICAgYWRvcHRlZCBieSB0aGlzIG9iamVjdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgVHJhbnNmZXJhYmxlVGV4dChNQ29uc3RUZXh0IHRleHQpIHsKKworICAgICAgICBzdXBlcih0ZXh0VG9TdHJpbmcodGV4dCkpOworCisgICAgICAgIGZUZXh0ID0gdGV4dDsKKyAgICB9CisKKyAgICBwdWJsaWMgRGF0YUZsYXZvcltdIGdldFRyYW5zZmVyRGF0YUZsYXZvcnMoKSB7CisKKyAgICAgICAgRGF0YUZsYXZvcltdIGZsYXZvcnMgPSBzdXBlci5nZXRUcmFuc2ZlckRhdGFGbGF2b3JzKCk7CisgICAgICAgIERhdGFGbGF2b3JbXSByZXN1bHQgPSBuZXcgRGF0YUZsYXZvcltmbGF2b3JzLmxlbmd0aCsxXTsKKyAgICAgICAgcmVzdWx0WzBdID0gTUNvbnN0VGV4dC5zdHlsZWRUZXh0Rmxhdm9yOworICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KGZsYXZvcnMsIDAsIHJlc3VsdCwgMSwgZmxhdm9ycy5sZW5ndGgpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGlzRGF0YUZsYXZvclN1cHBvcnRlZChEYXRhRmxhdm9yIGZsYXZvcikgeworCisgICAgICAgIGlmIChmbGF2b3IuZXF1YWxzKE1Db25zdFRleHQuc3R5bGVkVGV4dEZsYXZvcikpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmlzRGF0YUZsYXZvclN1cHBvcnRlZChmbGF2b3IpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIE9iamVjdCBnZXRUcmFuc2ZlckRhdGEoRGF0YUZsYXZvciBmbGF2b3IpIHRocm93cyBVbnN1cHBvcnRlZEZsYXZvckV4Y2VwdGlvbiwgSU9FeGNlcHRpb24geworCisgICAgICAgIGlmIChmbGF2b3IuZXF1YWxzKE1Db25zdFRleHQuc3R5bGVkVGV4dEZsYXZvcikpIHsKKyAgICAgICAgICAgIHJldHVybiBmVGV4dDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBzdXBlci5nZXRUcmFuc2ZlckRhdGEoZmxhdm9yKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9UeXBpbmdJbnRlcmFjdG9yLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvVHlwaW5nSW50ZXJhY3Rvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjFhMDdmZTgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvVHlwaW5nSW50ZXJhY3Rvci5qYXZhCkBAIC0wLDAgKzEsMzU2IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBUeXBpbmdJbnRlcmFjdG9yLmphdmEsdiAkICRSZXZpc2lvbjogMS4yICQgJERhdGU6IDIwMDIvMDIvMTYgMDM6MDY6NDggJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KKy8qCisgICAgMi8yNS85OSAtIE5vdyBwcm9jZXNzaW5nIGNoYXJhY3RlcnMgZnJvbSBrZXlUeXBlZCBtZXRob2QgKG5vdCBrZXlQcmVzc2VkKS4KKyAgICAgICAgICAgICAgVGhpcyBuZXcgd2F5IGlzIGlucHV0LW1ldGhvZCBmcmllbmRseSBvbiAxLjIsIGFuZCBpcyBnZW5lcmFsbHkKKyAgICAgICAgICAgICAgbW9yZSBjb3JyZWN0LgorCisgICAgNy83Lzk3IC0gdGhlIG1vdXNlRGlkU29tZXRoaW5nIG1ldGhvZHMgdXNlZCB0byByZW1vdmUgdGhlIHR5cGluZyBpbnRlcmFjdG9yLgorICAgICAgICAgICAgVGhpcyBpcyBkZWZpbml0ZWx5IHdyb25nLCBidXQgbWF5YmUgdGhhdCBtYWRlIHNlbnNlIGF0IG9uZSB0aW1lLiAgQW55d2F5LAorICAgICAgICAgICAgbm93IHRoZSBtb3VzZVByZXNzZWQgLyBtb3VzZVJlbGVhc2VkIG1ldGhvZHMgcmVtb3ZlIHRoZSBpbnRlcmFjdG9yOyAgdGhlCisgICAgICAgICAgICBvdGhlcnMgZG8gbm90aGluZy4KKyovCisKK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWw7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRsYXlvdXQuYXR0cmlidXRlcy5BdHRyaWJ1dGVNYXA7CisKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5LZXlFdmVudDsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5Nb3VzZUV2ZW50OworaW1wb3J0IGphdmEuYXd0LmV2ZW50LkZvY3VzRXZlbnQ7CisKK2ltcG9ydCBqYXZhLnRleHQuQnJlYWtJdGVyYXRvcjsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5TdHlsZU1vZGlmaWVyOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NQ29uc3RUZXh0OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NVGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuU3R5bGVkVGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRmb3JtYXQuVGV4dE9mZnNldDsKKworZmluYWwgY2xhc3MgVHlwaW5nSW50ZXJhY3RvciBleHRlbmRzIEJlaGF2aW9yIHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjaGFyIEJBQ0tTUEFDRSA9IDg7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciBUQUIgPSAnXHQnOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgUkVUVVJOID0gJ1xyJzsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjaGFyIExJTkVfRkVFRCA9ICdcbic7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciBQQVJBR1JBUEhfU0VQID0gJ1x1MjAyOSc7CisgICAgCisgICAgcHJpdmF0ZSBUZXh0Q29tcG9uZW50IGZUZXh0Q29tcG9uZW50OworICAgIHByaXZhdGUgVGV4dFNlbGVjdGlvbiBmU2VsZWN0aW9uOworICAgIHByaXZhdGUgQXR0cmlidXRlTWFwIGZUeXBpbmdTdHlsZTsKKyAgICBwcml2YXRlIE1Db25zdFRleHQgZlRleHQ7CisgICAgcHJpdmF0ZSBUZXh0RWRpdEJlaGF2aW9yIGZQYXJlbnQ7CisgICAgcHJpdmF0ZSBUZXh0Q2hhbmdlQ29tbWFuZCBmQ29tbWFuZCA9IG51bGw7CisgICAgcHJpdmF0ZSBTaW1wbGVDb21tYW5kTG9nIGZDb21tYW5kTG9nOworICAgIHByaXZhdGUgUGFuZWxFdmVudEJyb2FkY2FzdGVyIGZMaXN0ZW5lcjsKKyAgICBwcml2YXRlIEJyZWFrSXRlcmF0b3IgZkNoYXJCcmVhayA9IG51bGw7CisgICAgCisgICAgLyoqCisgICAgICogTm90IGFsbCBjaGFyYWN0ZXJzIHRoYXQgY29tZSBmcm9tIHRoZSBrZXlib2FyZCBhcmUgaGFuZGxlZAorICAgICAqIGFzIGlucHV0LiAgRm9yIGV4YW1wbGUsIGN0cmwtYyBpcyBub3QgYSB0eXBhYmxlIGNoYXJhY3Rlci4KKyAgICAgKiBUaGlzIG1ldGhvZCBkZXRlcm1pbmVzIHdoZXRoZXIgYSBwYXJ0aWN1bGFyIGNoYXJhY3RlciBmcm9tCisgICAgICogdGhlIGtleWJvYXJkIHdpbGwgYWZmZWN0IHRoZSB0ZXh0LgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gaXNUeXBpbmdJbnRlcmFjdG9yQ2hhcihjaGFyIGNoKSB7CisKKyAgICAgICAgcmV0dXJuIGNoID49ICcgJyB8fCAKKyAgICAgICAgICAgICAgIGNoID09IExJTkVfRkVFRCB8fCAKKyAgICAgICAgICAgICAgIGNoID09IFJFVFVSTiB8fAorICAgICAgICAgICAgICAgY2ggPT0gVEFCIHx8IAorICAgICAgICAgICAgICAgY2ggPT0gQkFDS1NQQUNFOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBUaGlzIG1ldGhvZCBkZXRlcm1pbmVzIHdoZXRoZXIgYSBUeXBpbmdJbnRlcmFjdG9yIHNob3VsZAorICAgICAqIGhhbmRsZSB0aGUgZ2l2ZW4gS2V5RXZlbnQuCisgICAgICovCisgICAgc3RhdGljIGJvb2xlYW4gaGFuZGxlZEJ5VHlwaW5nSW50ZXJhY3RvcihLZXlFdmVudCBldmVudCkgeworCisgICAgICAgIGZpbmFsIGludCBpZCA9IGV2ZW50LmdldElEKCk7CisgICAgICAgIAorICAgICAgICBpZiAoaWQgPT0gZXZlbnQuS0VZX1RZUEVEKSB7CisgICAgICAgICAgICByZXR1cm4gaXNUeXBpbmdJbnRlcmFjdG9yQ2hhcihldmVudC5nZXRLZXlDaGFyKCkpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIChpZCA9PSBLZXlFdmVudC5LRVlfUFJFU1NFRCAmJiAKKyAgICAgICAgICAgICAgICAgICAgZXZlbnQuZ2V0S2V5Q29kZSgpID09IEtleUV2ZW50LlZLX0RFTEVURSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgVHlwaW5nSW50ZXJhY3RvcihUZXh0Q29tcG9uZW50IHRleHRDb21wb25lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dFNlbGVjdGlvbiBzZWxlY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlTWFwIHR5cGluZ1N0eWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRFZGl0QmVoYXZpb3IgcGFyZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbXBsZUNvbW1hbmRMb2cgY29tbWFuZExvZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYW5lbEV2ZW50QnJvYWRjYXN0ZXIgbGlzdGVuZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgZlRleHRDb21wb25lbnQgPSB0ZXh0Q29tcG9uZW50OworICAgICAgICBmVGV4dCA9IHRleHRDb21wb25lbnQuZ2V0VGV4dCgpOworICAgICAgICBmU2VsZWN0aW9uID0gc2VsZWN0aW9uOworICAgICAgICBmVHlwaW5nU3R5bGUgPSB0eXBpbmdTdHlsZTsKKyAgICAgICAgZlBhcmVudCA9IHBhcmVudDsKKyAgICAgICAgZkNvbW1hbmRMb2cgPSBjb21tYW5kTG9nOworICAgICAgICBmTGlzdGVuZXIgPSBsaXN0ZW5lcjsKKworICAgICAgICBmUGFyZW50LnNldFR5cGluZ0ludGVyYWN0b3IodGhpcyk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGVuZEludGVyYWN0aW9uKCkgeworCisgICAgICAgIHJlbW92ZUZyb21Pd25lcigpOworICAgICAgICBwb3N0VGV4dENoYW5nZUNvbW1hbmQoKTsKKworICAgICAgICBpbnQgc2VsU3RhcnQgPSBmU2VsZWN0aW9uLmdldFN0YXJ0KCkuZk9mZnNldDsKKyAgICAgICAgaW50IHNlbExpbWl0ID0gZlNlbGVjdGlvbi5nZXRFbmQoKS5mT2Zmc2V0OworICAgICAgICBmUGFyZW50LnNldFNhdmVkVHlwaW5nU3R5bGUoc2VsU3RhcnQ9PXNlbExpbWl0PyBmVHlwaW5nU3R5bGUgOiBudWxsLCBzZWxTdGFydCk7CisgICAgICAgIAorICAgICAgICBmUGFyZW50LnNldFR5cGluZ0ludGVyYWN0b3IobnVsbCk7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gdGV4dENvbnRyb2xFdmVudE9jY3VycmVkKEJlaGF2aW9yLkV2ZW50VHlwZSBldmVudCwgT2JqZWN0IHdoYXQpIHsKKworICAgICAgICBpZiAoZkNvbW1hbmQgPT0gbnVsbCAmJiBldmVudCA9PSBCZWhhdmlvci5DSEFSQUNURVJfU1RZTEVfTU9EKSB7CisKKyAgICAgICAgICAgIHBpY2tVcFR5cGluZ1N0eWxlKCk7CisgICAgICAgICAgICBmVHlwaW5nU3R5bGUgPSAoKFN0eWxlTW9kaWZpZXIpd2hhdCkubW9kaWZ5U3R5bGUoZlR5cGluZ1N0eWxlKTsKKworICAgICAgICAgICAgZkxpc3RlbmVyLnRleHRTdGF0ZUNoYW5nZWQoVGV4dFBhbmVsRXZlbnQuU0VMRUNUSU9OX1NUWUxFU19DSEFOR0VEKTsKKworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBCZWhhdmlvciBuZXh0ID0gbmV4dEJlaGF2aW9yKCk7IC8vIHNhdmUgYmVjYXVzZSByZW1vdmVGcm9tT3duZXIoKSB3aWxsIHRyYXNoIHRoaXMKKworICAgICAgICAgICAgZW5kSW50ZXJhY3Rpb24oKTsKKworICAgICAgICAgICAgaWYgKG5leHQgIT0gbnVsbCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV4dC50ZXh0Q29udHJvbEV2ZW50T2NjdXJyZWQoZXZlbnQsIHdoYXQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBkb0JhY2tzcGFjZSgpIHsKKworICAgICAgICBpbnQgc2VsU3RhcnQgPSBmU2VsZWN0aW9uLmdldFN0YXJ0KCkuZk9mZnNldDsKKyAgICAgICAgaW50IHNlbExpbWl0ID0gZlNlbGVjdGlvbi5nZXRFbmQoKS5mT2Zmc2V0OworCisgICAgICAgIGlmIChzZWxTdGFydCA9PSBzZWxMaW1pdCkgeworICAgICAgICAgICAgaWYgKHNlbFN0YXJ0ICE9IDApIHsKKyAgICAgICAgICAgICAgICBmVHlwaW5nU3R5bGUgPSBudWxsOworICAgICAgICAgICAgICAgIHBpY2tVcFR5cGluZ1N0eWxlKCk7CisgICAgICAgICAgICAgICAgbWFrZVRleHRDaGFuZ2VDb21tYW5kKCk7CisgICAgICAgICAgICAgICAgaWYgKHNlbFN0YXJ0IDw9IGZDb21tYW5kLmFmZmVjdGVkUmFuZ2VTdGFydCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGZDb21tYW5kLnByZXBlbmRUb09sZFRleHQoZlRleHQuZXh0cmFjdChzZWxTdGFydCAtIDEsIHNlbFN0YXJ0KSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgaW5zUHQgPSBuZXcgVGV4dE9mZnNldChzZWxTdGFydCAtIDEpOworICAgICAgICAgICAgICAgIGZQYXJlbnQuZG9SZXBsYWNlVGV4dChzZWxTdGFydCAtIDEsIHNlbFN0YXJ0LCBudWxsLCBpbnNQdCwgaW5zUHQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZlR5cGluZ1N0eWxlID0gbnVsbDsKKyAgICAgICAgICAgIG1ha2VUZXh0Q2hhbmdlQ29tbWFuZCgpOworICAgICAgICAgICAgVGV4dE9mZnNldCBpbnNQdCA9IG5ldyBUZXh0T2Zmc2V0KHNlbFN0YXJ0KTsKKyAgICAgICAgICAgIGZQYXJlbnQuZG9SZXBsYWNlVGV4dChzZWxTdGFydCwgc2VsTGltaXQsIG51bGwsIGluc1B0LCBpbnNQdCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgZG9Gd2REZWxldGUoYm9vbGVhbiBpZ25vcmVDaGFyQnJlYWspIHsKKworICAgICAgICBpbnQgc2VsU3RhcnQgPSBmU2VsZWN0aW9uLmdldFN0YXJ0KCkuZk9mZnNldDsKKyAgICAgICAgaW50IHNlbExpbWl0ID0gZlNlbGVjdGlvbi5nZXRFbmQoKS5mT2Zmc2V0OworCisgICAgICAgIFRleHRPZmZzZXQgaW5zUHQgPSBuZXcgVGV4dE9mZnNldChzZWxTdGFydCk7CisKKyAgICAgICAgaWYgKHNlbFN0YXJ0ID09IHNlbExpbWl0KSB7CisgICAgICAgICAgICBpZiAoc2VsU3RhcnQgIT0gZlRleHQubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICBmVHlwaW5nU3R5bGUgPSBudWxsOworICAgICAgICAgICAgICAgIG1ha2VUZXh0Q2hhbmdlQ29tbWFuZCgpOworICAgICAgICAgICAgICAgIGludCBudW1DaGFyczsKKyAgICAgICAgICAgICAgICBpZiAoaWdub3JlQ2hhckJyZWFrKSB7CisgICAgICAgICAgICAgICAgICAgIG51bUNoYXJzID0gMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChmQ2hhckJyZWFrID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZDaGFyQnJlYWsgPSBCcmVha0l0ZXJhdG9yLmdldENoYXJhY3Rlckluc3RhbmNlKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZkNoYXJCcmVhay5zZXRUZXh0KGZUZXh0LmNyZWF0ZUNoYXJhY3Rlckl0ZXJhdG9yKCkpOworICAgICAgICAgICAgICAgICAgICBudW1DaGFycyA9IGZDaGFyQnJlYWsuZm9sbG93aW5nKHNlbFN0YXJ0KSAtIHNlbFN0YXJ0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmQ29tbWFuZC5hcHBlbmRUb09sZFRleHQoZlRleHQuZXh0cmFjdChzZWxTdGFydCwgc2VsU3RhcnQgKyBudW1DaGFycykpOworICAgICAgICAgICAgICAgIGZQYXJlbnQuZG9SZXBsYWNlVGV4dChzZWxTdGFydCwgc2VsU3RhcnQgKyBudW1DaGFycywgbnVsbCwgaW5zUHQsIGluc1B0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZUeXBpbmdTdHlsZSA9IG51bGw7CisgICAgICAgICAgICBtYWtlVGV4dENoYW5nZUNvbW1hbmQoKTsKKyAgICAgICAgICAgIGZQYXJlbnQuZG9SZXBsYWNlVGV4dChzZWxTdGFydCwgc2VsTGltaXQsIG51bGwsIGluc1B0LCBpbnNQdCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgZG9Ob3JtYWxLZXkoY2hhciBjaCkgeworCisgICAgICAgIC8vIFNpZ2ggLSAxLjEgcmVwb3J0cyBlbnRlciBrZXkgZXZlbnRzIGFzIHJldHVybiBjaGFycywgYnV0CisgICAgICAgIC8vIDEuMiByZXBvcnRzIHRoZW0gYXMgbGluZWZlZWRzLgorICAgICAgICBpZiAoY2ggPT0gUkVUVVJOKSB7CisgICAgICAgICAgICBjaCA9IExJTkVfRkVFRDsKKyAgICAgICAgfQorICAgICAgICBwaWNrVXBUeXBpbmdTdHlsZSgpOworICAgICAgICBtYWtlVGV4dENoYW5nZUNvbW1hbmQoKTsKKyAgICAgICAgZlBhcmVudC5kb1JlcGxhY2VTZWxlY3RlZFRleHQoY2gsIGZUeXBpbmdTdHlsZSk7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gZm9jdXNHYWluZWQoRm9jdXNFdmVudCBlKSB7CisKKyAgICAgICAgLy8gcGFzcyB0aHJvdWdoLCBidXQgc3RpY2sgYXJvdW5kLi4uCisgICAgICAgIHJldHVybiBzdXBlci5mb2N1c0dhaW5lZChlKTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBmb2N1c0xvc3QoRm9jdXNFdmVudCBlKSB7CisKKyAgICAgICAgLy8gcGFzcyB0aHJvdWdoLCBidXQgc3RpY2sgYXJvdW5kLi4uCisgICAgICAgIHJldHVybiBzdXBlci5mb2N1c0xvc3QoZSk7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4ga2V5VHlwZWQoS2V5RXZlbnQgZSkgeworCisgICAgICAgIGlmIChlLmdldEtleUNoYXIoKSA9PSBCQUNLU1BBQ0UpIHsKKyAgICAgICAgICAgIGRvQmFja3NwYWNlKCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoaXNUeXBpbmdJbnRlcmFjdG9yQ2hhcihlLmdldEtleUNoYXIoKSkpIHsKKyAgICAgICAgICAgICAgICBLZXlSZW1hcCByZW1hcCA9IGZQYXJlbnQuZ2V0S2V5UmVtYXAoKTsKKyAgICAgICAgICAgICAgICBkb05vcm1hbEtleShyZW1hcC5yZW1hcChlKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBrZXlQcmVzc2VkKEtleUV2ZW50IGUpIHsKKworICAgICAgICBpbnQga2V5ID0gZS5nZXRLZXlDb2RlKCk7CisgICAgICAgIGlmIChrZXkgPT0gS2V5RXZlbnQuVktfREVMRVRFKSB7CisgICAgICAgICAgICBkb0Z3ZERlbGV0ZShlLmlzU2hpZnREb3duKCkpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICBCZWhhdmlvciBuZXh0ID0gbmV4dEJlaGF2aW9yKCk7CisKKyAgICAgICAgaWYgKFRleHRTZWxlY3Rpb24ua2V5QWZmZWN0c1NlbGVjdGlvbihlKSkgeworCisgICAgICAgICAgICBlbmRJbnRlcmFjdGlvbigpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG5leHQua2V5UHJlc3NlZChlKTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBrZXlSZWxlYXNlZChLZXlFdmVudCBlKSB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBtYWtlVGV4dENoYW5nZUNvbW1hbmQoKSB7CisgICAgICAgIGlmIChmQ29tbWFuZCA9PSBudWxsKSB7CisgICAgICAgICAgICBUZXh0T2Zmc2V0ICBzZWxTdGFydCA9IGZTZWxlY3Rpb24uZ2V0U3RhcnQoKTsKKyAgICAgICAgICAgIFRleHRPZmZzZXQgIHNlbEVuZCA9IGZTZWxlY3Rpb24uZ2V0RW5kKCk7CisKKyAgICAgICAgICAgIE1UZXh0IHdyaXRhYmxlVGV4dCA9IG5ldyBTdHlsZWRUZXh0KCk7CisgICAgICAgICAgICB3cml0YWJsZVRleHQucmVwbGFjZSgwLCAwLCBmVGV4dCwgc2VsU3RhcnQuZk9mZnNldCwgc2VsRW5kLmZPZmZzZXQpOworICAgICAgICAgICAgZkNvbW1hbmQgPSBuZXcgVGV4dENoYW5nZUNvbW1hbmQoZlBhcmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGVUZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsLCBzZWxTdGFydC5mT2Zmc2V0LCBzZWxTdGFydCwgc2VsRW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgVGV4dE9mZnNldCgpLCBuZXcgVGV4dE9mZnNldCgpKTsKKworICAgICAgICAgICAgZkxpc3RlbmVyLnRleHRTdGF0ZUNoYW5nZWQoVGV4dFBhbmVsRXZlbnQuVU5ET19TVEFURV9DSEFOR0VEKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIG1vdXNlRHJhZ2dlZChNb3VzZUV2ZW50IGUpIHsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBtb3VzZUVudGVyZWQoTW91c2VFdmVudCBlKSB7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gbW91c2VFeGl0ZWQoTW91c2VFdmVudCBlKSB7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gbW91c2VNb3ZlZChNb3VzZUV2ZW50IGUpIHsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBtb3VzZVByZXNzZWQoTW91c2VFdmVudCBlKSB7CisKKyAgICAgICAgQmVoYXZpb3IgbmV4dCA9IG5leHRCZWhhdmlvcigpOyAvLyBzYXZlIGJlY2F1c2UgcmVtb3ZlRnJvbU93bmVyKCkgd2lsbCB0cmFzaCB0aGlzCisKKyAgICAgICAgZW5kSW50ZXJhY3Rpb24oKTsKKworICAgICAgICBpZiAobmV4dCAhPSBudWxsKQorICAgICAgICAgICAgcmV0dXJuIG5leHQubW91c2VQcmVzc2VkKGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gbW91c2VSZWxlYXNlZChNb3VzZUV2ZW50IGUpIHsKKworICAgICAgICBCZWhhdmlvciBuZXh0ID0gbmV4dEJlaGF2aW9yKCk7IC8vIHNhdmUgYmVjYXVzZSByZW1vdmVGcm9tT3duZXIoKSB3aWxsIHRyYXNoIHRoaXMKKworICAgICAgICBlbmRJbnRlcmFjdGlvbigpOworCisgICAgICAgIGlmIChuZXh0ICE9IG51bGwpCisgICAgICAgICAgICByZXR1cm4gbmV4dC5tb3VzZVJlbGVhc2VkKGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHBpY2tVcFR5cGluZ1N0eWxlKCkgeworICAgICAgICBpZiAoZlR5cGluZ1N0eWxlID09IG51bGwpIHsKKyAgICAgICAgICAgIGludCBzZWxTdGFydCA9IGZTZWxlY3Rpb24uZ2V0U3RhcnQoKS5mT2Zmc2V0OworICAgICAgICAgICAgaW50IHNlbExpbWl0ID0gZlNlbGVjdGlvbi5nZXRFbmQoKS5mT2Zmc2V0OworICAgICAgICAgICAgZlR5cGluZ1N0eWxlID0gVGV4dEVkaXRCZWhhdmlvci50eXBpbmdTdHlsZUF0KGZUZXh0LCBzZWxTdGFydCwgc2VsTGltaXQpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHBvc3RUZXh0Q2hhbmdlQ29tbWFuZCgpIHsKKyAgICAgICAgaWYgKGZDb21tYW5kICE9IG51bGwpIHsKKyAgICAgICAgICAgIFRleHRPZmZzZXQgIHNlbFN0YXJ0ID0gZlNlbGVjdGlvbi5nZXRTdGFydCgpOworICAgICAgICAgICAgVGV4dE9mZnNldCAgc2VsRW5kID0gZlNlbGVjdGlvbi5nZXRFbmQoKTsKKworICAgICAgICAgICAgZkNvbW1hbmQuc2V0TmV3VGV4dChmVGV4dC5leHRyYWN0KGZDb21tYW5kLmFmZmVjdGVkUmFuZ2VTdGFydCgpLCBzZWxTdGFydC5mT2Zmc2V0KSk7CisgICAgICAgICAgICBmQ29tbWFuZC5zZXRTZWxSYW5nZUFmdGVyKHNlbFN0YXJ0LCBzZWxFbmQpOworICAgICAgICAgICAgZkNvbW1hbmRMb2cuYWRkKGZDb21tYW5kKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGJvb2xlYW4gaGFzUGVuZGluZ0NvbW1hbmQoKSB7CisKKyAgICAgICAgcmV0dXJuIGZDb21tYW5kICE9IG51bGw7CisgICAgfQorCisgICAgQXR0cmlidXRlTWFwIGdldFR5cGluZ1N0eWxlKCkgeworCisgICAgICAgIHBpY2tVcFR5cGluZ1N0eWxlKCk7CisgICAgICAgIHJldHVybiBmVHlwaW5nU3R5bGU7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL3BhY2thZ2UuaHRtbCBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9wYWNrYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYTZhMTg3OAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9wYWNrYWdlLmh0bWwKQEAgLTAsMCArMSw3IEBACis8aHRtbD4KKzxib2R5IGJnY29sb3I9IndoaXRlIj4KK1Byb3ZpZGVzIGNvbXBvbmVudHMgKGZvciBib3RoIEFXVCBhbmQgU3dpbmcpCitpbiB3aGljaCBzdHlsZWQgdGV4dCBpcyBkaXNwbGF5ZWQgYW5kIGVkaXRlZCwgYW5kCityZWxhdGVkIGNsYXNzZXMuCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC91aWltcGwvQWJvdXRUZXh0LmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC91aWltcGwvQWJvdXRUZXh0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uY2ZiNGQwNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3VpaW1wbC9BYm91dFRleHQuamF2YQpAQCAtMCwwICsxLDY1IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBBYm91dFRleHQuamF2YSx2ICQgJFJldmlzaW9uOiAxLjIgJCAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNjo0OSAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbDsKKworaW1wb3J0IGphdmEuYXd0LkNvbG9yOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC51aWltcGwucmVzb3VyY2VzLkZyYW1lUmVzb3VyY2VzOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1Db25zdFRleHQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0LlN0eWxlZFRleHQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0LlN0eWxlTW9kaWZpZXI7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRsYXlvdXQuYXR0cmlidXRlcy5BdHRyaWJ1dGVNYXA7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuVGV4dEF0dHJpYnV0ZTsKKworcHVibGljIGZpbmFsIGNsYXNzIEFib3V0VGV4dCB7CisgICAgCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBDb2xvcltdIENPTE9SUyA9IHsKKyAgICAgICAgQ29sb3IucmVkLCBDb2xvci5ibHVlLCBDb2xvci53aGl0ZSwgQ29sb3IuZ3JlZW4KKyAgICB9OworICAgIAorICAgIHB1YmxpYyBzdGF0aWMgTUNvbnN0VGV4dCBnZXRBYm91dFRleHQoKSB7CisKKyAgICAgICAgU3RyaW5nIHRleHQgPSBSZXNvdXJjZVV0aWxzLmdldFJlc291cmNlU3RyaW5nKEZyYW1lUmVzb3VyY2VzLkFCT1VUX1RFWFQpOworICAgICAgICBTdHlsZWRUZXh0IHN0eWxlZFRleHQgPSBuZXcgU3R5bGVkVGV4dCh0ZXh0LCBBdHRyaWJ1dGVNYXAuRU1QVFlfQVRUUklCVVRFX01BUCk7CisKKyAgICAgICAgaW50IGxlbmd0aCA9IHN0eWxlZFRleHQubGVuZ3RoKCk7CisgICAgICAgIGludCBpPTA7CisKKyAgICAgICAgZm9yIChpbnQgcGFyYWdyYXBoU3RhcnQgPSAwLCBwYXJhZ3JhcGhMaW1pdDsKKyAgICAgICAgICAgICAgICAgICAgcGFyYWdyYXBoU3RhcnQgPCBsZW5ndGg7CisgICAgICAgICAgICAgICAgICAgIHBhcmFncmFwaFN0YXJ0ID0gcGFyYWdyYXBoTGltaXQpIHsKKworICAgICAgICAgICAgcGFyYWdyYXBoTGltaXQgPSBzdHlsZWRUZXh0LnBhcmFncmFwaExpbWl0KHBhcmFncmFwaFN0YXJ0KTsKKyAgICAgICAgICAgIFN0eWxlTW9kaWZpZXIgbW9kaWZpZXIgPSBTdHlsZU1vZGlmaWVyLmNyZWF0ZUFkZE1vZGlmaWVyKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dEF0dHJpYnV0ZS5GT1JFR1JPVU5ELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09MT1JTWyhpKyspJUNPTE9SUy5sZW5ndGhdKTsKKyAgICAgICAgICAgIHN0eWxlZFRleHQubW9kaWZ5Q2hhcmFjdGVyU3R5bGVzKHBhcmFncmFwaFN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYWdyYXBoTGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllcik7CisgICAgICAgIH0KKworICAgICAgICBTdHlsZU1vZGlmaWVyIG1vZGlmaWVyID0gU3R5bGVNb2RpZmllci5jcmVhdGVBZGRNb2RpZmllcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dEF0dHJpYnV0ZS5MSU5FX0ZMVVNILAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0QXR0cmlidXRlLkZMVVNIX0NFTlRFUik7CisKKyAgICAgICAgc3R5bGVkVGV4dC5tb2RpZnlQYXJhZ3JhcGhTdHlsZXMoMCwgdGV4dC5sZW5ndGgoKSwgbW9kaWZpZXIpOworCisgICAgICAgIHJldHVybiBzdHlsZWRUZXh0OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC91aWltcGwvQm9vbGVhblN0eWxlTWVudUl0ZW0uamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3VpaW1wbC9Cb29sZWFuU3R5bGVNZW51SXRlbS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmMyNDZjZGYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC91aWltcGwvQm9vbGVhblN0eWxlTWVudUl0ZW0uamF2YQpAQCAtMCwwICsxLDk5IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBCb29sZWFuU3R5bGVNZW51SXRlbS5qYXZhLHYgJCAkUmV2aXNpb246IDEuMiAkICREYXRlOiAyMDAyLzAyLzE2IDAzOjA2OjQ5ICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudWlpbXBsOworCitpbXBvcnQgamF2YS51dGlsLkV2ZW50T2JqZWN0OworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlU2V0OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5TdHlsZU1vZGlmaWVyOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuTVRleHRQYW5lbDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5UZXh0UGFuZWxFdmVudDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbC5yZXNvdXJjZXMuTWVudURhdGE7CisKK3B1YmxpYyBmaW5hbCBjbGFzcyBCb29sZWFuU3R5bGVNZW51SXRlbSBleHRlbmRzIFNpbmdsZUNoZWNrTWVudUl0ZW0geworICAgIAorICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisKKyAgICBwcml2YXRlIGZpbmFsIE9iamVjdCBmS2V5OworICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiBmQ2hhcmFjdGVyOworCisgICAgcHJpdmF0ZSBmaW5hbCBPYmplY3QgZk9uVmFsdWU7CisgICAgCisgICAgcHVibGljIEJvb2xlYW5TdHlsZU1lbnVJdGVtKE9iamVjdCBzdHlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0IG9uVmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lbnVEYXRhIG1lbnVEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGNoYXJhY3RlcikgeworICAgICAgICAKKyAgICAgICAgc3VwZXIobWVudURhdGEpOworICAgICAgICBpZiAob25WYWx1ZSA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJPbiB2YWx1ZSBjYW5ub3QgYmUgbnVsbCIpOworICAgICAgICB9CisKKyAgICAgICAgZktleSA9IHN0eWxlOworICAgICAgICBmQ2hhcmFjdGVyID0gY2hhcmFjdGVyOworICAgICAgICAKKyAgICAgICAgZk9uVmFsdWUgPSBvblZhbHVlOworICAgICAgICBmSXRlbS5hZGRMaXN0ZW5lcihuZXcgRXZlbnRMaXN0ZW5lcigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGV2ZW50T2NjdXJyZWQoRXZlbnRPYmplY3QgZXZlbnQpIHsKKyAgICAgICAgICAgICAgICBTdHlsZU1vZGlmaWVyIG1vZGlmaWVyOworICAgICAgICAgICAgICAgIE1UZXh0UGFuZWwgcGFuZWwgPSBnZXRUZXh0UGFuZWwoKTsKKyAgICAgICAgICAgICAgICBpZiAocGFuZWwgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk1lbnUgaXRlbSBpcyBlbmFibGVkIHdoZW4gcGFuZWwgaXMgbnVsbCEiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGNvbnRpbnVvdXNBbmRDb21tYW5kKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlU2V0IHNldCA9IG5ldyBBdHRyaWJ1dGVTZXQoZktleSk7CisgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyID0gU3R5bGVNb2RpZmllci5jcmVhdGVSZW1vdmVNb2RpZmllcihzZXQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXIgPSBTdHlsZU1vZGlmaWVyLmNyZWF0ZUFkZE1vZGlmaWVyKGZLZXksIGZPblZhbHVlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKGZDaGFyYWN0ZXIgPT0gQ0hBUkFDVEVSKSB7CisgICAgICAgICAgICAgICAgICAgIHBhbmVsLm1vZGlmeUNoYXJhY3RlclN0eWxlT25TZWxlY3Rpb24obW9kaWZpZXIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcGFuZWwubW9kaWZ5UGFyYWdyYXBoU3R5bGVPblNlbGVjdGlvbihtb2RpZmllcik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBib29sZWFuIGNvbnRpbnVvdXNBbmRDb21tYW5kKCkgeworICAgICAgICAKKyAgICAgICAgTVRleHRQYW5lbCBwYW5lbCA9IGdldFRleHRQYW5lbCgpOworCisgICAgICAgIE9iamVjdCB2YWx1ZSA9IChmQ2hhcmFjdGVyID09IENIQVJBQ1RFUik/IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVsLmdldENoYXJhY3RlclN0eWxlT3ZlclNlbGVjdGlvbihmS2V5KSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFuZWwuZ2V0UGFyYWdyYXBoU3R5bGVPdmVyU2VsZWN0aW9uKGZLZXkpOworICAgICAgICByZXR1cm4gZk9uVmFsdWUuZXF1YWxzKHZhbHVlKTsKKyAgICB9CisgICAgCisgICAgcHJvdGVjdGVkIHZvaWQgc2V0Q2hlY2tlZCgpIHsKKyAgICAgICAgCisgICAgICAgIGZJdGVtLnNldFN0YXRlKGNvbnRpbnVvdXNBbmRDb21tYW5kKCkpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgYm9vbGVhbiByZXNwb25kc1RvRXZlbnRUeXBlKGludCB0eXBlKSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gdHlwZSA9PSBUZXh0UGFuZWxFdmVudC5TRUxFQ1RJT05fU1RZTEVTX0NIQU5HRUQ7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBmaW5hbCB2b2lkIHRleHRFdmVudE9jY3VycmVkKFRleHRQYW5lbEV2ZW50IGV2ZW50KSB7CisgICAgICAgIAorICAgICAgICBzZXRDaGVja2VkKCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3VpaW1wbC9DaG9pY2VNZW51SXRlbVNldC5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdWlpbXBsL0Nob2ljZU1lbnVJdGVtU2V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZWMzNmEwZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3VpaW1wbC9DaG9pY2VNZW51SXRlbVNldC5qYXZhCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IENob2ljZU1lbnVJdGVtU2V0LmphdmEsdiAkICRSZXZpc2lvbjogMS4yICQgJERhdGU6IDIwMDIvMDIvMTYgMDM6MDY6NDkgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC51aWltcGw7CisKK2ltcG9ydCBqYXZhLnV0aWwuRXZlbnRPYmplY3Q7CisKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlU2V0OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5TdHlsZU1vZGlmaWVyOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuTVRleHRQYW5lbDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5UZXh0UGFuZWxFdmVudDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbC5yZXNvdXJjZXMuTWVudURhdGE7CisKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBDaG9pY2VNZW51SXRlbVNldCBleHRlbmRzIE1lbnVJdGVtU2V0IHsKKyAgICAKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHByaXZhdGUgTUl0ZW1bXSBmSXRlbXM7CisgICAgcHJpdmF0ZSBIYXNodGFibGUgZkl0ZW1Ub1N0eWxlTWFwOworICAgIAorICAgIENob2ljZU1lbnVJdGVtU2V0KE9iamVjdFtdIHZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICBNZW51RGF0YVtdIG1lbnVEYXRhKSB7CisgICAgICAgIAorICAgICAgICBpZiAodmFsdWVzLmxlbmd0aCAhPSBtZW51RGF0YS5sZW5ndGgpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJWYWx1ZXMgYW5kIG5hbWVzIG11c3QgaGF2ZSBlcXVhbCBsZW5ndGgiKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZkl0ZW1zID0gbmV3IE1JdGVtW21lbnVEYXRhLmxlbmd0aF07CisgICAgICAgIGZJdGVtVG9TdHlsZU1hcCA9IG5ldyBIYXNodGFibGUobWVudURhdGEubGVuZ3RoKTsKKyAgICAgICAgCisgICAgICAgIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIgPSBuZXcgRXZlbnRMaXN0ZW5lcigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGV2ZW50T2NjdXJyZWQoRXZlbnRPYmplY3QgZXZlbnQpIHsKKyAgICAgICAgICAgICAgICBoYW5kbGVWYWx1ZVNlbGVjdGVkKGZJdGVtVG9TdHlsZU1hcC5nZXQoZXZlbnQuZ2V0U291cmNlKCkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgCisgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IG1lbnVEYXRhLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBmSXRlbXNbaV0gPSBNSXRlbS5jcmVhdGVDaGVja2JveEl0ZW0obWVudURhdGFbaV0pOworICAgICAgICAgICAgaWYgKHZhbHVlc1tpXSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgZkl0ZW1Ub1N0eWxlTWFwLnB1dChmSXRlbXNbaV0sIHZhbHVlc1tpXSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmSXRlbXNbaV0uYWRkTGlzdGVuZXIobGlzdGVuZXIpOworICAgICAgICAgICAgZkl0ZW1zW2ldLnNldEVuYWJsZWQoZmFsc2UpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHByb3RlY3RlZCBhYnN0cmFjdCB2b2lkIGhhbmRsZVZhbHVlU2VsZWN0ZWQoT2JqZWN0IGl0ZW0pOworICAgIHByb3RlY3RlZCBhYnN0cmFjdCBPYmplY3QgZ2V0Q3VycmVudFZhbHVlKCk7CisgICAgCisgICAgcHJvdGVjdGVkIGZpbmFsIHZvaWQgc2V0Q2hlY2tlZCgpIHsKKyAgICAgICAgCisgICAgICAgIE9iamVjdCB2YWx1ZSA9IGdldEN1cnJlbnRWYWx1ZSgpOworICAgICAgICAKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgZkl0ZW1zLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBPYmplY3QgaXRlbVZhbCA9IGZJdGVtVG9TdHlsZU1hcC5nZXQoZkl0ZW1zW2ldKTsKKyAgICAgICAgICAgIGlmIChpdGVtVmFsID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBmSXRlbXNbaV0uc2V0U3RhdGUodmFsdWUgPT0gbnVsbCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBmSXRlbXNbaV0uc2V0U3RhdGUoaXRlbVZhbC5lcXVhbHModmFsdWUpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByb3RlY3RlZCBmaW5hbCB2b2lkIHRleHRQYW5lbENoYW5nZWQoKSB7CisgICAgICAgIAorICAgICAgICBNVGV4dFBhbmVsIHRleHRQYW5lbCA9IGdldFRleHRQYW5lbCgpOworICAgICAgICBpZiAodGV4dFBhbmVsID09IG51bGwpIHsKKyAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IGZJdGVtcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIGZJdGVtc1tpXS5zZXRFbmFibGVkKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBmSXRlbXNbaV0uc2V0U3RhdGUoZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgZkl0ZW1zLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgZkl0ZW1zW2ldLnNldEVuYWJsZWQodHJ1ZSk7CisgICAgICAgICAgICAgICAgc2V0Q2hlY2tlZCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdWlpbXBsL0NvbW1hbmRNZW51SXRlbS5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdWlpbXBsL0NvbW1hbmRNZW51SXRlbS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmRjODliODUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC91aWltcGwvQ29tbWFuZE1lbnVJdGVtLmphdmEKQEAgLTAsMCArMSwxOTUgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IENvbW1hbmRNZW51SXRlbS5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjUyOjMyICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudWlpbXBsOworCitpbXBvcnQgamF2YS51dGlsLkV2ZW50T2JqZWN0OworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuTVRleHRQYW5lbDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5UZXh0UGFuZWxFdmVudDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbC5yZXNvdXJjZXMuTWVudURhdGE7CisKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBDb21tYW5kTWVudUl0ZW0gZXh0ZW5kcyBNZW51SXRlbVNldCB7CisgICAgCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcml2YXRlIC8qZmluYWwqLyBNSXRlbSBmSXRlbTsKKyAgICAKKyAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgYm9vbGVhbiBpc0VuYWJsZWQoKTsKKyAgICBwcm90ZWN0ZWQgYWJzdHJhY3Qgdm9pZCBwZXJmb3JtQWN0aW9uKCk7CisKKyAgICBwcm90ZWN0ZWQgQ29tbWFuZE1lbnVJdGVtKE1lbnVEYXRhIGRhdGEpIHsKKyAgICAgICAgCisgICAgICAgIHRoaXMoZGF0YSwgZmFsc2UpOworICAgIH0KKyAgICAKKyAgICBwcm90ZWN0ZWQgQ29tbWFuZE1lbnVJdGVtKE1lbnVEYXRhIGRhdGEsIGJvb2xlYW4gZW5hYmxlQnlEZWZhdWx0KSB7CisgICAgICAgIAorICAgICAgICBmSXRlbSA9IE1JdGVtLmNyZWF0ZUl0ZW0oZGF0YSk7CisgICAgICAgIGZJdGVtLmFkZExpc3RlbmVyKG5ldyBFdmVudExpc3RlbmVyKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgZXZlbnRPY2N1cnJlZChFdmVudE9iamVjdCBldmVudCkgeworICAgICAgICAgICAgICAgIHBlcmZvcm1BY3Rpb24oKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgICAgIGZJdGVtLnNldEVuYWJsZWQoZW5hYmxlQnlEZWZhdWx0KTsKKyAgICB9CisgICAgCisgICAgcHJvdGVjdGVkIHZvaWQgdGV4dFBhbmVsQ2hhbmdlZCgpIHsKKyAgICAgICAgCisgICAgICAgIE1UZXh0UGFuZWwgdGV4dFBhbmVsID0gZ2V0VGV4dFBhbmVsKCk7CisgICAgICAgIGlmICh0ZXh0UGFuZWwgPT0gbnVsbCkgeworICAgICAgICAgICAgZkl0ZW0uc2V0RW5hYmxlZChmYWxzZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBmSXRlbS5zZXRFbmFibGVkKGlzRW5hYmxlZCgpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgZmluYWwgdm9pZCB0ZXh0RXZlbnRPY2N1cnJlZChUZXh0UGFuZWxFdmVudCBldmVudCkgeworICAgICAgICAKKyAgICAgICAgZkl0ZW0uc2V0RW5hYmxlZChpc0VuYWJsZWQoKSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgY2xhc3MgQ3V0Q29weUNsZWFyIGV4dGVuZHMgQ29tbWFuZE1lbnVJdGVtIHsKKyAgICAgICAgCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IENVVCA9IDA7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IENPUFkgPSAxOworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDTEVBUiA9IDI7CisKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBpbnQgZktpbmQ7CisgICAgICAgIAorICAgICAgICBwdWJsaWMgQ3V0Q29weUNsZWFyKE1lbnVEYXRhIG1lbnVEYXRhLCBpbnQga2luZCkgeworICAgICAgICAgICAgCisgICAgICAgICAgICBzdXBlcihtZW51RGF0YSk7CisgICAgICAgICAgICBpZiAoa2luZCAhPSBDVVQgJiYga2luZCAhPSBDT1BZICYmIGtpbmQgIT0gQ0xFQVIpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIG1lbnUga2luZCIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZktpbmQgPSBraW5kOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwcm90ZWN0ZWQgYm9vbGVhbiBpc0VuYWJsZWQoKSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE1UZXh0UGFuZWwgcGFuZWwgPSBnZXRUZXh0UGFuZWwoKTsKKyAgICAgICAgICAgIHJldHVybiBwYW5lbC5nZXRTZWxlY3Rpb25TdGFydCgpICE9IHBhbmVsLmdldFNlbGVjdGlvbkVuZCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwdWJsaWMgYm9vbGVhbiByZXNwb25kc1RvRXZlbnRUeXBlKGludCB0eXBlKSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJldHVybiB0eXBlID09IFRleHRQYW5lbEV2ZW50LlNFTEVDVElPTl9FTVBUWV9DSEFOR0VEOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwcm90ZWN0ZWQgdm9pZCBwZXJmb3JtQWN0aW9uKCkgeworICAgICAgICAgICAgCisgICAgICAgICAgICBNVGV4dFBhbmVsIHBhbmVsID0gZ2V0VGV4dFBhbmVsKCk7CisgICAgICAgICAgICBzd2l0Y2ggKGZLaW5kKSB7CisgICAgICAgICAgICAgICAgY2FzZSBDVVQ6CisgICAgICAgICAgICAgICAgICAgIHBhbmVsLmN1dCgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIENPUFk6CisgICAgICAgICAgICAgICAgICAgIHBhbmVsLmNvcHkoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBDTEVBUjoKKyAgICAgICAgICAgICAgICAgICAgcGFuZWwuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBjbGFzcyBVbmRvUmVkbyBleHRlbmRzIENvbW1hbmRNZW51SXRlbSB7CisgICAgICAgIAorICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGJvb2xlYW4gVU5ETyA9IHRydWU7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgYm9vbGVhbiBSRURPID0gZmFsc2U7CisgICAgICAgIAorICAgICAgICBwcml2YXRlIGJvb2xlYW4gZktpbmQ7CisgICAgICAgIAorICAgICAgICBwdWJsaWMgVW5kb1JlZG8oTWVudURhdGEgbWVudURhdGEsIGJvb2xlYW4ga2luZCkgeworICAgICAgICAgICAgCisgICAgICAgICAgICBzdXBlcihtZW51RGF0YSk7CisgICAgICAgICAgICBmS2luZCA9IGtpbmQ7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHByb3RlY3RlZCBib29sZWFuIGlzRW5hYmxlZCgpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTVRleHRQYW5lbCBwYW5lbCA9IGdldFRleHRQYW5lbCgpOworICAgICAgICAgICAgaWYgKGZLaW5kID09IFVORE8pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcGFuZWwuY2FuVW5kbygpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHBhbmVsLmNhblJlZG8oKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBib29sZWFuIHJlc3BvbmRzVG9FdmVudFR5cGUoaW50IHR5cGUpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgcmV0dXJuIHR5cGUgPT0gVGV4dFBhbmVsRXZlbnQuVU5ET19TVEFURV9DSEFOR0VEOworICAgICAgICB9CisKKyAgICAgICAgcHJvdGVjdGVkIHZvaWQgcGVyZm9ybUFjdGlvbigpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTVRleHRQYW5lbCBwYW5lbCA9IGdldFRleHRQYW5lbCgpOworICAgICAgICAgICAgaWYgKGZLaW5kID09IFVORE8pIHsKKyAgICAgICAgICAgICAgICBwYW5lbC51bmRvKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBwYW5lbC5yZWRvKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGNsYXNzIFBhc3RlIGV4dGVuZHMgQ29tbWFuZE1lbnVJdGVtIHsKKyAgICAgICAgCisgICAgICAgIHB1YmxpYyBQYXN0ZShNZW51RGF0YSBtZW51RGF0YSkgeworICAgICAgICAgICAgCisgICAgICAgICAgICBzdXBlcihtZW51RGF0YSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHByb3RlY3RlZCBib29sZWFuIGlzRW5hYmxlZCgpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgcmV0dXJuIGdldFRleHRQYW5lbCgpLmNsaXBib2FyZE5vdEVtcHR5KCk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgYm9vbGVhbiByZXNwb25kc1RvRXZlbnRUeXBlKGludCB0eXBlKSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJldHVybiB0eXBlID09IFRleHRQYW5lbEV2ZW50LkNMSVBCT0FSRF9DSEFOR0VEOworICAgICAgICB9CisKKyAgICAgICAgcHJvdGVjdGVkIHZvaWQgcGVyZm9ybUFjdGlvbigpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZ2V0VGV4dFBhbmVsKCkucGFzdGUoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgY2xhc3MgU2VsZWN0QWxsIGV4dGVuZHMgQ29tbWFuZE1lbnVJdGVtIHsKKyAgICAgICAgCisgICAgICAgIHB1YmxpYyBTZWxlY3RBbGwoTWVudURhdGEgbWVudURhdGEpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgc3VwZXIobWVudURhdGEpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwcm90ZWN0ZWQgYm9vbGVhbiBpc0VuYWJsZWQoKSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGJvb2xlYW4gcmVzcG9uZHNUb0V2ZW50VHlwZShpbnQgdHlwZSkgeworICAgICAgICAgICAgCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBwcm90ZWN0ZWQgdm9pZCBwZXJmb3JtQWN0aW9uKCkgeworICAgICAgICAgICAgCisgICAgICAgICAgICBnZXRUZXh0UGFuZWwoKS5zZWxlY3RBbGwoKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3VpaW1wbC9EaWFsb2dJdGVtLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC91aWltcGwvRGlhbG9nSXRlbS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjA3M2FlMmIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC91aWltcGwvRGlhbG9nSXRlbS5qYXZhCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IERpYWxvZ0l0ZW0uamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo1MjozMiAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbDsKKworaW1wb3J0IGphdmEuYXd0LldpbmRvdzsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5XaW5kb3dBZGFwdGVyOworaW1wb3J0IGphdmEuYXd0LmV2ZW50LldpbmRvd0V2ZW50OworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuTVRleHRQYW5lbDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5UZXh0UGFuZWxFdmVudDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbC5yZXNvdXJjZXMuTWVudURhdGE7CisKK3B1YmxpYyBmaW5hbCBjbGFzcyBEaWFsb2dJdGVtIGV4dGVuZHMgQ29tbWFuZE1lbnVJdGVtIHsKKyAgICAKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHB1YmxpYyBzdGF0aWMgYWJzdHJhY3QgY2xhc3MgRGlhbG9nRmFjdG9yeSB7CisgICAgICAgIAorICAgICAgICBwdWJsaWMgYWJzdHJhY3QgV2luZG93IGNyZWF0ZURpYWxvZyhNVGV4dFBhbmVsIHRleHRQYW5lbCk7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgRGlhbG9nRmFjdG9yeSBmRGlhbG9nRmFjdG9yeTsKKyAgICBwcml2YXRlIFdpbmRvdyBmRGlhbG9nID0gbnVsbDsKKyAgICAKKyAgICBwdWJsaWMgRGlhbG9nSXRlbShNZW51RGF0YSBtZW51RGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICBEaWFsb2dGYWN0b3J5IGRpYWxvZ0ZhY3RvcnkpIHsKKyAgICAgICAgCisgICAgICAgIHN1cGVyKG1lbnVEYXRhLCB0cnVlKTsKKyAgICAgICAgZkRpYWxvZ0ZhY3RvcnkgPSBkaWFsb2dGYWN0b3J5OworICAgIH0KKyAgICAKKyAgICBwcm90ZWN0ZWQgdm9pZCB0ZXh0UGFuZWxDaGFuZ2VkKCkgeworICAgICAgICAvLyBkbyBub3RoaW5nCisgICAgfQorICAgICAgICAKKyAgICBwcm90ZWN0ZWQgYm9vbGVhbiBpc0VuYWJsZWQoKSB7CisgICAgICAgICAgICAKKyAgICAgICAgLy8gc2hvdWxkIG5ldmVyIGdldCBjYWxsZWQuLi4KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gcmVzcG9uZHNUb0V2ZW50VHlwZShpbnQgdHlwZSkgeworICAgICAgICAgICAgCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgdm9pZCBwZXJmb3JtQWN0aW9uKCkgeworCisgICAgICAgIGlmIChmRGlhbG9nID09IG51bGwpIHsKKyAgICAgICAgICAgIE1UZXh0UGFuZWwgcGFuZWwgPSBnZXRUZXh0UGFuZWwoKTsKKyAgICAgICAgICAgIGlmIChwYW5lbCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgZkRpYWxvZyA9IGZEaWFsb2dGYWN0b3J5LmNyZWF0ZURpYWxvZyhwYW5lbCk7CisgICAgICAgICAgICAgICAgZkRpYWxvZy5hZGRXaW5kb3dMaXN0ZW5lcihuZXcgV2luZG93QWRhcHRlcigpIHsKKyAgICAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgd2luZG93Q2xvc2VkKFdpbmRvd0V2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZEaWFsb2cgPSBudWxsOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZkRpYWxvZy5zaG93KCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3VpaW1wbC9FdmVudExpc3RlbmVyLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC91aWltcGwvRXZlbnRMaXN0ZW5lci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjgwNWJjZTkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC91aWltcGwvRXZlbnRMaXN0ZW5lci5qYXZhCkBAIC0wLDAgKzEsMjQgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IEV2ZW50TGlzdGVuZXIuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo1MjozMiAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbDsKKworaW1wb3J0IGphdmEudXRpbC5FdmVudE9iamVjdDsKKworcHVibGljIGludGVyZmFjZSBFdmVudExpc3RlbmVyIHsKKyAgICAKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHB1YmxpYyB2b2lkIGV2ZW50T2NjdXJyZWQoRXZlbnRPYmplY3QgZXZlbnQpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3VpaW1wbC9Gb250TGlzdC5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdWlpbXBsL0ZvbnRMaXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMWIwNzU2MwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3VpaW1wbC9Gb250TGlzdC5qYXZhCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IEZvbnRMaXN0LmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NTI6MzIgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KKy8vIFJlcXVpcmVzIEphdmEyCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudWlpbXBsOworCitpbXBvcnQgamF2YS5hd3QuR3JhcGhpY3NFbnZpcm9ubWVudDsKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7CisKK2ZpbmFsIGNsYXNzIEZvbnRMaXN0IHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmdbXSBzdHJpcFRoZXNlID0geworICAgICAgICAiLmJvbGQiLCAiLmJvbGRpdGFsaWMiLCAiLml0YWxpYyIKKyAgICB9OworCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmdbXSBnZXRGb250TGlzdCgpIHsKKworICAgICAgICBTdHJpbmdbXSBuYW1lcyA9IEdyYXBoaWNzRW52aXJvbm1lbnQuZ2V0TG9jYWxHcmFwaGljc0Vudmlyb25tZW50KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldEF2YWlsYWJsZUZvbnRGYW1pbHlOYW1lcygpOworICAgICAgICBWZWN0b3IgdiA9IG5ldyBWZWN0b3IobmFtZXMubGVuZ3RoKTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIHYuYWRkRWxlbWVudChuYW1lc1tpXSk7CisgICAgICAgIH0KKworICAgICAgICBDb2xsZWN0aW9ucy5zb3J0KHYpOworICAgICAgICAgICAgICAgIAorICAgICAgICBTdHJpbmcgbGFzdCA9ICIiOworICAgICAgICAKKyAgICAgICAgSXRlcmF0b3IgaXRlciA9IHYubGlzdEl0ZXJhdG9yKCk7CisgICAgICAgIHdoaWxlIChpdGVyLmhhc05leHQoKSkgeworICAgICAgICAgICAgU3RyaW5nIGN1cnJlbnQgPSAoU3RyaW5nKSBpdGVyLm5leHQoKTsKKyAgICAgICAgICAgIHRlc3RTdWZmaXhlczogZm9yIChpbnQgaT0wOyBpIDwgc3RyaXBUaGVzZS5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIGlmIChjdXJyZW50LmVuZHNXaXRoKHN0cmlwVGhlc2VbaV0pKSB7CisgICAgICAgICAgICAgICAgICAgIGludCBiYXNlTGVuID0gY3VycmVudC5sZW5ndGgoKS1zdHJpcFRoZXNlW2ldLmxlbmd0aCgpOworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgYmFzZSA9IGN1cnJlbnQuc3Vic3RyaW5nKDAsIGJhc2VMZW4pOworICAgICAgICAgICAgICAgICAgICBpZiAoYmFzZS5lcXVhbHNJZ25vcmVDYXNlKGxhc3QpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpdGVyLnJlbW92ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudCA9IGxhc3Q7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhayB0ZXN0U3VmZml4ZXM7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsYXN0ID0gY3VycmVudDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgU3RyaW5nW10gcmVzdWx0ID0gbmV3IFN0cmluZ1t2LnNpemUoKV07CisgICAgICAgIHYuY29weUludG8ocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC91aWltcGwvS2V5bWFwTWVudUl0ZW1TZXQuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3VpaW1wbC9LZXltYXBNZW51SXRlbVNldC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjU3NGZhYTAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC91aWltcGwvS2V5bWFwTWVudUl0ZW1TZXQuamF2YQpAQCAtMCwwICsxLDYxIEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBLZXltYXBNZW51SXRlbVNldC5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjUyOjMyICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudWlpbXBsOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuS2V5UmVtYXA7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuVGV4dFBhbmVsRXZlbnQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuTVRleHRQYW5lbDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbC5yZXNvdXJjZXMuTWVudURhdGE7CisKK3B1YmxpYyBmaW5hbCBjbGFzcyBLZXltYXBNZW51SXRlbVNldCBleHRlbmRzIENob2ljZU1lbnVJdGVtU2V0IHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHVibGljIEtleW1hcE1lbnVJdGVtU2V0KEtleVJlbWFwW10gdmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZW51RGF0YVtdIG1lbnVEYXRhKSB7CisgICAgICAgIAorICAgICAgICBzdXBlcih2YWx1ZXMsIG1lbnVEYXRhKTsKKyAgICB9CisgICAgCisgICAgcHJvdGVjdGVkIHZvaWQgaGFuZGxlVmFsdWVTZWxlY3RlZChPYmplY3QgdmFsdWUpIHsKKyAgICAgICAgCisgICAgICAgIE1UZXh0UGFuZWwgdGV4dFBhbmVsID0gZ2V0VGV4dFBhbmVsKCk7CisgICAgICAgIGlmICh0ZXh0UGFuZWwgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJNZW51IGl0ZW0gaXMgZW5hYmxlZCB3aGVuIHBhbmVsIGlzIG51bGwhIik7CisgICAgICAgIH0KKworICAgICAgICB0ZXh0UGFuZWwuc2V0S2V5UmVtYXAoKEtleVJlbWFwKSB2YWx1ZSk7CisgICAgfQorICAgIAorICAgIHByb3RlY3RlZCBPYmplY3QgZ2V0Q3VycmVudFZhbHVlKCkgeworICAgICAgICAKKyAgICAgICAgTVRleHRQYW5lbCB0ZXh0UGFuZWwgPSBnZXRUZXh0UGFuZWwoKTsKKyAgICAgICAgaWYgKHRleHRQYW5lbCA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlNob3VsZG4ndCBjYWxsIHRoaXMgd2l0aG91dCBhIHRleHQgcGFuZWwhIik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRleHRQYW5lbC5nZXRLZXlSZW1hcCgpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCB0ZXh0RXZlbnRPY2N1cnJlZChUZXh0UGFuZWxFdmVudCBldmVudCkgeworICAgICAgICAKKyAgICAgICAgc2V0Q2hlY2tlZCgpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgYm9vbGVhbiByZXNwb25kc1RvRXZlbnRUeXBlKGludCB0eXBlKSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gdHlwZSA9PSBUZXh0UGFuZWxFdmVudC5LRVlSRU1BUF9DSEFOR0VEOworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdWlpbXBsL01JdGVtLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC91aWltcGwvTUl0ZW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mZGYxZDY4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdWlpbXBsL01JdGVtLmphdmEKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogTUl0ZW0uamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo1MjozMiAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbDsKKworaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7CitpbXBvcnQgamF2YS51dGlsLkV2ZW50T2JqZWN0OworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC51aWltcGwucmVzb3VyY2VzLk1lbnVEYXRhOworCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgTUl0ZW0geworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcml2YXRlIFZlY3RvciBmTGlzdGVuZXJzID0gbmV3IFZlY3RvcigyKTsKKyAgICBwcml2YXRlIEV2ZW50T2JqZWN0IGZFdmVudCA9IG5ldyBFdmVudE9iamVjdCh0aGlzKTsKKyAgICAKKyAgICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBzZXRFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CisgICAgcHVibGljIGFic3RyYWN0IHZvaWQgc2V0U3RhdGUoYm9vbGVhbiBjaGVja2VkKTsKKyAgICAKKyAgICBwdWJsaWMgZmluYWwgdm9pZCBhZGRMaXN0ZW5lcihFdmVudExpc3RlbmVyIGxpc3RlbmVyKSB7CisgICAgICAgIAorICAgICAgICBmTGlzdGVuZXJzLmFkZEVsZW1lbnQobGlzdGVuZXIpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgZmluYWwgdm9pZCByZW1vdmVMaXN0ZW5lcihFdmVudExpc3RlbmVyIGxpc3RlbmVyKSB7CisgICAgICAgIAorICAgICAgICBmTGlzdGVuZXJzLnJlbW92ZUVsZW1lbnQobGlzdGVuZXIpOworICAgIH0KKyAgICAKKyAgICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVTZWxlY3RlZCgpIHsKKyAgICAgICAgICAgIAorICAgICAgICBpbnQgbGVuZ3RoID0gZkxpc3RlbmVycy5zaXplKCk7CisgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBFdmVudExpc3RlbmVyIGwgPSAoRXZlbnRMaXN0ZW5lcikgZkxpc3RlbmVycy5lbGVtZW50QXQoaSk7CisgICAgICAgICAgICBsLmV2ZW50T2NjdXJyZWQoZkV2ZW50KTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvLyBmYWN0b3J5IHN0dWZmCisgICAgCisgICAgLyoqCisgICAgICogQ2xpZW50cyBzaG91bGQgc3luY2hyb25pemUgb24gTE9DSyB3aGlsZSBzZXR0aW5nIGFuZCB1c2luZworICAgICAqIGdsb2JhbCBmYWN0b3J5LgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgT2JqZWN0IExPQ0sgPSBuZXcgT2JqZWN0KCk7CisgICAgCisgICAgcHVibGljIHN0YXRpYyBpbnRlcmZhY2UgSXRlbUZhY3RvcnkgeworICAgICAgICAKKyAgICAgICAgcHVibGljIE1JdGVtIGNyZWF0ZUl0ZW0oTWVudURhdGEgbWVudURhdGEpOworICAgICAgICBwdWJsaWMgTUl0ZW0gY3JlYXRlQ2hlY2tib3hJdGVtKE1lbnVEYXRhIG1lbnVEYXRhKTsKKyAgICAgICAgcHVibGljIHZvaWQgY3JlYXRlU2VwYXJhdG9yKCk7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgc3RhdGljIEl0ZW1GYWN0b3J5IGZnRmFjdG9yeTsKKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIE1JdGVtIGNyZWF0ZUl0ZW0oTWVudURhdGEgbWVudURhdGEpIHsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBmZ0ZhY3RvcnkuY3JlYXRlSXRlbShtZW51RGF0YSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgTUl0ZW0gY3JlYXRlQ2hlY2tib3hJdGVtKE1lbnVEYXRhIG1lbnVEYXRhKSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gZmdGYWN0b3J5LmNyZWF0ZUNoZWNrYm94SXRlbShtZW51RGF0YSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBzZXRJdGVtRmFjdG9yeShJdGVtRmFjdG9yeSBmYWN0b3J5KSB7CisgICAgICAgIAorICAgICAgICBmZ0ZhY3RvcnkgPSBmYWN0b3J5OworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIEl0ZW1GYWN0b3J5IGdldEl0ZW1GYWN0b3J5KCkgeworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZnRmFjdG9yeTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC91aWltcGwvTWVudUJ1aWxkZXIuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3VpaW1wbC9NZW51QnVpbGRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmRiMWU3OWEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC91aWltcGwvTWVudUJ1aWxkZXIuamF2YQpAQCAtMCwwICsxLDM2OCBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogTWVudUJ1aWxkZXIuamF2YSx2ICQgJFJldmlzaW9uOiAxLjMgJCAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNjo1MCAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbDsKKworaW1wb3J0IGphdmEuYXd0LkNvbG9yOworaW1wb3J0IGphdmEuYXd0LkZyYW1lOworCitpbXBvcnQgamF2YS5hd3QuV2luZG93OworaW1wb3J0IGphdmEudGV4dC5OdW1iZXJGb3JtYXQ7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuTUNvbnN0VGV4dDsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZU1hcDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRsYXlvdXQuYXR0cmlidXRlcy5UZXh0QXR0cmlidXRlOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLk1UZXh0UGFuZWw7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuS2V5UmVtYXA7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbC5yZXNvdXJjZXMuRnJhbWVSZXNvdXJjZXM7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC51aWltcGwucmVzb3VyY2VzLk1lbnVEYXRhOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC51aWltcGwuRGlhbG9nSXRlbS5EaWFsb2dGYWN0b3J5OworCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgTWVudUJ1aWxkZXIgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBFRElUID0gMDsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTSVpFID0gMTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTVFlMRSA9IDI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRkxVU0ggPSAzOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEtFWU1BUCA9IDQ7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQklESSA9IDU7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQUJPVVQgPSA2OworICAgIAorICAgIHByaXZhdGUgQ29sb3JbXSBjb2xvcnMgPSB7IENvbG9yLmJsYWNrLCBDb2xvci53aGl0ZSwgQ29sb3IuZ3JlZW4sIENvbG9yLmJsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yLmN5YW4sIENvbG9yLmdyYXksIENvbG9yLmRhcmtHcmF5LCBDb2xvci5saWdodEdyYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yLm1hZ2VudGEsIENvbG9yLm9yYW5nZSwgQ29sb3IucGluaywgQ29sb3IucmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvci55ZWxsb3csIG51bGwgfTsKKyAgICBwcml2YXRlIFN0cmluZ1tdIGNvbG9yTmFtZXMgPSB7CisgICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVV0aWxzLmdldFJlc291cmNlU3RyaW5nKEZyYW1lUmVzb3VyY2VzLkJMQUNLKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlVXRpbHMuZ2V0UmVzb3VyY2VTdHJpbmcoRnJhbWVSZXNvdXJjZXMuV0hJVEUpLAorICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VVdGlscy5nZXRSZXNvdXJjZVN0cmluZyhGcmFtZVJlc291cmNlcy5HUkVFTiksCisgICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVV0aWxzLmdldFJlc291cmNlU3RyaW5nKEZyYW1lUmVzb3VyY2VzLkJMVUUpLAorICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VVdGlscy5nZXRSZXNvdXJjZVN0cmluZyhGcmFtZVJlc291cmNlcy5DWUFOKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlVXRpbHMuZ2V0UmVzb3VyY2VTdHJpbmcoRnJhbWVSZXNvdXJjZXMuR1JBWSksCisgICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVV0aWxzLmdldFJlc291cmNlU3RyaW5nKEZyYW1lUmVzb3VyY2VzLkRBUktfR1JBWSksCisgICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVV0aWxzLmdldFJlc291cmNlU3RyaW5nKEZyYW1lUmVzb3VyY2VzLkxJR0hUX0dSQVkpLAorICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VVdGlscy5nZXRSZXNvdXJjZVN0cmluZyhGcmFtZVJlc291cmNlcy5NQUdFTlRBKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlVXRpbHMuZ2V0UmVzb3VyY2VTdHJpbmcoRnJhbWVSZXNvdXJjZXMuT1JBTkdFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlVXRpbHMuZ2V0UmVzb3VyY2VTdHJpbmcoRnJhbWVSZXNvdXJjZXMuUElOSyksCisgICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVV0aWxzLmdldFJlc291cmNlU3RyaW5nKEZyYW1lUmVzb3VyY2VzLlJFRCksCisgICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVV0aWxzLmdldFJlc291cmNlU3RyaW5nKEZyYW1lUmVzb3VyY2VzLllFTExPVyksCisgICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVV0aWxzLmdldFJlc291cmNlU3RyaW5nKEZyYW1lUmVzb3VyY2VzLk5PTkUpCisgICAgfTsKKyAgICAKKyAgICBwcm90ZWN0ZWQgaW50W10gZGVmYXVsdE1lbnVzID0geyBFRElULCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSVpFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUWUxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZMVVNILCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLRVlNQVAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQklESSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBQk9VVCB9OworCisgICAgcHJvdGVjdGVkIE1UZXh0UGFuZWwgZlRleHRQYW5lbDsKKyAgICBwcm90ZWN0ZWQgRnJhbWUgZkRpYWxvZ1BhcmVudDsKKworICAgIHByb3RlY3RlZCBNZW51QnVpbGRlcigpIHsKKyAgICB9CisgICAgCisgICAgcHJvdGVjdGVkIGZpbmFsIHZvaWQgZG9DcmVhdGVNZW51cyhNVGV4dFBhbmVsIHRleHRQYW5lbCwgRnJhbWUgZnJhbWUsIGludFtdIG1lbnVzKSB7CisgICAgCisgICAgICAgIGZUZXh0UGFuZWwgPSB0ZXh0UGFuZWw7CisgICAgICAgIGZEaWFsb2dQYXJlbnQgPSBmcmFtZTsKKyAgICAgICAgCisgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IG1lbnVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBzd2l0Y2gobWVudXNbaV0pIHsKKyAgICAgICAgICAgICAgICBjYXNlIEVESVQ6CisgICAgICAgICAgICAgICAgICAgIGNyZWF0ZUVkaXRNZW51KCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgU0laRToKKyAgICAgICAgICAgICAgICAgICAgY3JlYXRlU2l6ZU1lbnUoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBTVFlMRToKKyAgICAgICAgICAgICAgICAgICAgY3JlYXRlU3R5bGVNZW51KCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRkxVU0g6CisgICAgICAgICAgICAgICAgICAgIGNyZWF0ZUZsdXNoTWVudSgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEtFWU1BUDoKKyAgICAgICAgICAgICAgICAgICAgY3JlYXRlS2V5bWFwTWVudSgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEJJREk6CisgICAgICAgICAgICAgICAgICAgIGNyZWF0ZUJpZGlNZW51KCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQUJPVVQ6CisgICAgICAgICAgICAgICAgICAgIGNyZWF0ZUFib3V0TWVudSgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbGxlZ2FsIG1lbnU6ICIgKyBtZW51c1tpXSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIGZUZXh0UGFuZWwgPSBudWxsOworICAgICAgICBmRGlhbG9nUGFyZW50ID0gbnVsbDsKKyAgICB9CisgICAgCisgICAgcHJvdGVjdGVkIGFic3RyYWN0IHZvaWQgaGFuZGxlQWRkTWVudShTdHJpbmcga2V5KTsKKyAgICAKKyAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgRGlhbG9nRmFjdG9yeSBjcmVhdGVPYmplY3REaWFsb2dGYWN0b3J5KFN0cmluZyBkaWFsb2dUaXRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBkaWFsb2dUZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0IGtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gY2hhcmFjdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nW10gbmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RbXSB2YWx1ZXMpOworCisgICAgcHJvdGVjdGVkIGFic3RyYWN0IERpYWxvZ0ZhY3RvcnkgY3JlYXRlTnVtYmVyRGlhbG9nRmFjdG9yeShTdHJpbmcgZGlhbG9nVGl0bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZGlhbG9nVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdCBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGNoYXJhY3Rlcik7CisKKyAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgRGlhbG9nRmFjdG9yeSBjcmVhdGVBYm91dERpYWxvZ0ZhY3RvcnkoKTsKKworICAgIHByaXZhdGUgdm9pZCBjcmVhdGVFZGl0TWVudSgpIHsKKyAgICAgICAgCisgICAgICAgIGhhbmRsZUFkZE1lbnUoRnJhbWVSZXNvdXJjZXMuRURJVCk7CisgICAgICAgIAorICAgICAgICBuZXcgQ29tbWFuZE1lbnVJdGVtLlVuZG9SZWRvKFJlc291cmNlVXRpbHMuZ2V0TWVudURhdGEoRnJhbWVSZXNvdXJjZXMuVU5ETyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tYW5kTWVudUl0ZW0uVW5kb1JlZG8uVU5ETykuc2V0VGV4dFBhbmVsKGZUZXh0UGFuZWwpOworICAgICAgICBuZXcgQ29tbWFuZE1lbnVJdGVtLlVuZG9SZWRvKFJlc291cmNlVXRpbHMuZ2V0TWVudURhdGEoRnJhbWVSZXNvdXJjZXMuUkVETyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tYW5kTWVudUl0ZW0uVW5kb1JlZG8uUkVETykuc2V0VGV4dFBhbmVsKGZUZXh0UGFuZWwpOworICAgICAgICBNSXRlbS5nZXRJdGVtRmFjdG9yeSgpLmNyZWF0ZVNlcGFyYXRvcigpOworICAgICAgICBuZXcgQ29tbWFuZE1lbnVJdGVtLkN1dENvcHlDbGVhcihSZXNvdXJjZVV0aWxzLmdldE1lbnVEYXRhKEZyYW1lUmVzb3VyY2VzLkNVVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZE1lbnVJdGVtLkN1dENvcHlDbGVhci5DVVQpLnNldFRleHRQYW5lbChmVGV4dFBhbmVsKTsKKyAgICAgICAgbmV3IENvbW1hbmRNZW51SXRlbS5DdXRDb3B5Q2xlYXIoUmVzb3VyY2VVdGlscy5nZXRNZW51RGF0YShGcmFtZVJlc291cmNlcy5DT1BZKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tYW5kTWVudUl0ZW0uQ3V0Q29weUNsZWFyLkNPUFkpLnNldFRleHRQYW5lbChmVGV4dFBhbmVsKTsKKyAgICAgICAgbmV3IENvbW1hbmRNZW51SXRlbS5QYXN0ZShSZXNvdXJjZVV0aWxzLmdldE1lbnVEYXRhKEZyYW1lUmVzb3VyY2VzLlBBU1RFKSkuc2V0VGV4dFBhbmVsKGZUZXh0UGFuZWwpOworICAgICAgICBuZXcgQ29tbWFuZE1lbnVJdGVtLkN1dENvcHlDbGVhcihSZXNvdXJjZVV0aWxzLmdldE1lbnVEYXRhKEZyYW1lUmVzb3VyY2VzLkNMRUFSKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tYW5kTWVudUl0ZW0uQ3V0Q29weUNsZWFyLkNMRUFSKS5zZXRUZXh0UGFuZWwoZlRleHRQYW5lbCk7CisgICAgICAgIE1JdGVtLmdldEl0ZW1GYWN0b3J5KCkuY3JlYXRlU2VwYXJhdG9yKCk7CisgICAgICAgIG5ldyBDb21tYW5kTWVudUl0ZW0uU2VsZWN0QWxsKFJlc291cmNlVXRpbHMuZ2V0TWVudURhdGEoRnJhbWVSZXNvdXJjZXMuU0VMRUNUX0FMTCkpLnNldFRleHRQYW5lbChmVGV4dFBhbmVsKTsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgZmxvYXRbXSBERUZBVUxUX1NJWkVTID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHs5LCAxMCwgMTIsIDE0LCAxOCwgMjQsIDM2LCA0OCwgNzJ9OworCisgICAgcHJpdmF0ZSB2b2lkIGNyZWF0ZVNpemVNZW51KCkgeworICAgICAgICAKKyAgICAgICAgY3JlYXRlU2l6ZU1lbnUoREVGQVVMVF9TSVpFUyk7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgdm9pZCBjcmVhdGVTaXplTWVudShmbG9hdFtdIHNpemVzKSB7CisgICAgICAgICAgICAgICAgCisgICAgICAgIGhhbmRsZUFkZE1lbnUoRnJhbWVSZXNvdXJjZXMuU0laRSk7CisKKyAgICAgICAgaWYgKHNpemVzICE9IERFRkFVTFRfU0laRVMpIHsKKworICAgICAgICAgICAgc2l6ZXMgPSAoZmxvYXRbXSkgc2l6ZXMuY2xvbmUoKTsKKyAgICAgICAgICAgIGlmIChzaXplcy5sZW5ndGggPT0gMCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oInNpemVzIGFycmF5IGhhcyB6ZXJvIGxlbmd0aCIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmbG9hdCBsYXN0VmFsdWUgPSBzaXplc1swXTsKKyAgICAgICAgICAgIGZvciAoaW50IGk9MTsgaSA8IHNpemVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKHNpemVzW2ldID49IGxhc3RWYWx1ZSkgeworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNpemVzIGFycmF5IG11c3QgYmUgaW5jcmVhc2luZyIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBsYXN0VmFsdWUgPSBzaXplc1tpXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgRmxvYXRbXSB2YWx1ZXMgPSBuZXcgRmxvYXRbc2l6ZXMubGVuZ3RoXTsKKyAgICAgICAgTWVudURhdGFbXSBtRGF0YSA9IG5ldyBNZW51RGF0YVtzaXplcy5sZW5ndGhdOworICAgICAgICBOdW1iZXJGb3JtYXQgZm10ID0gTnVtYmVyRm9ybWF0LmdldE51bWJlckluc3RhbmNlKCk7CisgICAgICAgIAorICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBzaXplcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgdmFsdWVzW2ldID0gbmV3IEZsb2F0KHNpemVzW2ldKTsKKyAgICAgICAgICAgIG1EYXRhW2ldID0gbmV3IE1lbnVEYXRhKGZtdC5mb3JtYXQoc2l6ZXNbaV0pKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbmV3IFN0eWxlTWVudUl0ZW1TZXQoVGV4dEF0dHJpYnV0ZS5TSVpFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1EYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZW51SXRlbVNldC5DSEFSQUNURVIpLnNldFRleHRQYW5lbChmVGV4dFBhbmVsKTsKKyAgICAgICAgICAgIAorICAgICAgICBpZiAoZkRpYWxvZ1BhcmVudCAhPSBudWxsKSB7CisgICAgICAgICAgICBTdHJpbmcgZGlhbG9nVGl0bGUgPSBSZXNvdXJjZVV0aWxzLmdldFJlc291cmNlU3RyaW5nKEZyYW1lUmVzb3VyY2VzLlNFVF9TSVpFX1RJVExFKTsKKyAgICAgICAgICAgIFN0cmluZyBkaWFsb2dUZXh0ID0gUmVzb3VyY2VVdGlscy5nZXRSZXNvdXJjZVN0cmluZyhGcmFtZVJlc291cmNlcy5TRVRfU0laRV9MQUJFTCk7CisgICAgICAgICAgICBEaWFsb2dGYWN0b3J5IGZhY3RvcnkgPSBjcmVhdGVOdW1iZXJEaWFsb2dGYWN0b3J5KGRpYWxvZ1RpdGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWFsb2dUZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0QXR0cmlidXRlLlNJWkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lbnVJdGVtU2V0LkNIQVJBQ1RFUik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgbmV3IERpYWxvZ0l0ZW0oUmVzb3VyY2VVdGlscy5nZXRNZW51RGF0YShGcmFtZVJlc291cmNlcy5PVEhFUl9ESUFMT0cpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWN0b3J5KS5zZXRUZXh0UGFuZWwoZlRleHRQYW5lbCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSB2b2lkIGNyZWF0ZVN0eWxlTWVudSgpIHsKKyAgICAgICAgCisgICAgICAgIGhhbmRsZUFkZE1lbnUoRnJhbWVSZXNvdXJjZXMuU1RZTEUpOworCisgICAgICAgIE9iamVjdFtdIGtleXMgPSAgICB7IFRleHRBdHRyaWJ1dGUuV0VJR0hULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRBdHRyaWJ1dGUuUE9TVFVSRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0QXR0cmlidXRlLlVOREVSTElORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0QXR0cmlidXRlLlNUUklLRVRIUk9VR0ggfTsKKyAgICAgICAgT2JqZWN0W10gdmFsdWVzID0gIHsgVGV4dEF0dHJpYnV0ZS5XRUlHSFRfQk9MRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0QXR0cmlidXRlLlBPU1RVUkVfT0JMSVFVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0QXR0cmlidXRlLlVOREVSTElORV9PTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0QXR0cmlidXRlLlNUUklLRVRIUk9VR0hfT04gfTsKKyAgICAgICAgTWVudURhdGFbXSBtRGF0YSA9IHsgUmVzb3VyY2VVdGlscy5nZXRNZW51RGF0YShGcmFtZVJlc291cmNlcy5CT0xEKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVV0aWxzLmdldE1lbnVEYXRhKEZyYW1lUmVzb3VyY2VzLklUQUxJQyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VVdGlscy5nZXRNZW51RGF0YShGcmFtZVJlc291cmNlcy5VTkRFUkxJTkUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlVXRpbHMuZ2V0TWVudURhdGEoRnJhbWVSZXNvdXJjZXMuU1RSSUtFVEhST1VHSCkgfTsKKworICAgICAgICBuZXcgU3VidHJhY3RTdHlsZU1lbnVJdGVtKGtleXMsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VVdGlscy5nZXRNZW51RGF0YShGcmFtZVJlc291cmNlcy5QTEFJTiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZW51SXRlbVNldC5DSEFSQUNURVIpLnNldFRleHRQYW5lbChmVGV4dFBhbmVsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwga2V5cy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgbmV3IEJvb2xlYW5TdHlsZU1lbnVJdGVtKGtleXNbaV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzW2ldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1EYXRhW2ldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lbnVJdGVtU2V0LkNIQVJBQ1RFUikuc2V0VGV4dFBhbmVsKGZUZXh0UGFuZWwpOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgaWYgKGZEaWFsb2dQYXJlbnQgIT0gbnVsbCkgeworICAgICAgICAgICAgCisgICAgICAgICAgICBNSXRlbS5nZXRJdGVtRmFjdG9yeSgpLmNyZWF0ZVNlcGFyYXRvcigpOworICAgICAgICAgICAgCisgICAgICAgICAgICBTdHJpbmdbXSBmb250cyA9IEZvbnRMaXN0LmdldEZvbnRMaXN0KCk7CisgICAgICAgICAgICBTdHJpbmcgdGl0bGUgPSBSZXNvdXJjZVV0aWxzLmdldFJlc291cmNlU3RyaW5nKEZyYW1lUmVzb3VyY2VzLlNFVF9GT05UX1RJVExFKTsKKyAgICAgICAgICAgIFN0cmluZyBsYWJlbCA9IFJlc291cmNlVXRpbHMuZ2V0UmVzb3VyY2VTdHJpbmcoRnJhbWVSZXNvdXJjZXMuU0VUX0ZPTlRfTEFCRUwpOworICAgICAgICAgICAgCisgICAgICAgICAgICBEaWFsb2dGYWN0b3J5IGZvbnRGID0gY3JlYXRlT2JqZWN0RGlhbG9nRmFjdG9yeSh0aXRsZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRBdHRyaWJ1dGUuRkFNSUxZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3R5bGVNZW51SXRlbVNldC5DSEFSQUNURVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRzKTsKKyAgICAgICAgICAgIG5ldyBEaWFsb2dJdGVtKFJlc291cmNlVXRpbHMuZ2V0TWVudURhdGEoRnJhbWVSZXNvdXJjZXMuRk9OVF9ESUFMT0cpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEYpLnNldFRleHRQYW5lbChmVGV4dFBhbmVsKTsKKworICAgICAgICAgICAgRGlhbG9nRmFjdG9yeSBmb3JlZ3JvdW5kRiA9IGNyZWF0ZUNvbG9yRGlhbG9nRmFjdG9yeSh0cnVlKTsKKyAgICAgICAgICAgIERpYWxvZ0ZhY3RvcnkgYmFja2dyb3VuZEYgPSBjcmVhdGVDb2xvckRpYWxvZ0ZhY3RvcnkoZmFsc2UpOworICAgICAgICAgICAgCisgICAgICAgICAgICBuZXcgRGlhbG9nSXRlbShSZXNvdXJjZVV0aWxzLmdldE1lbnVEYXRhKEZyYW1lUmVzb3VyY2VzLkZPUkVDT0xPUl9ESUFMT0cpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWdyb3VuZEYpLnNldFRleHRQYW5lbChmVGV4dFBhbmVsKTsKKyAgICAgICAgICAgIG5ldyBEaWFsb2dJdGVtKFJlc291cmNlVXRpbHMuZ2V0TWVudURhdGEoRnJhbWVSZXNvdXJjZXMuQkFDS0NPTE9SX0RJQUxPRyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kRikuc2V0VGV4dFBhbmVsKGZUZXh0UGFuZWwpOworICAgICAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgRGlhbG9nRmFjdG9yeSBjcmVhdGVDb2xvckRpYWxvZ0ZhY3RvcnkoYm9vbGVhbiBmb3JlZ3JvdW5kKSB7CisgICAgICAgIAorICAgICAgICBTdHJpbmcgdGl0bGU7CisgICAgICAgIFN0cmluZyBtZXNzYWdlOworICAgICAgICBPYmplY3Qga2V5OworICAgICAgICAKKyAgICAgICAgaWYgKGZvcmVncm91bmQpIHsKKyAgICAgICAgICAgIHRpdGxlID0gUmVzb3VyY2VVdGlscy5nZXRSZXNvdXJjZVN0cmluZyhGcmFtZVJlc291cmNlcy5TRVRfRk9SRUdST1VORF9USVRMRSk7CisgICAgICAgICAgICBtZXNzYWdlID0gUmVzb3VyY2VVdGlscy5nZXRSZXNvdXJjZVN0cmluZyhGcmFtZVJlc291cmNlcy5TRVRfRk9SRUdST1VORF9MQUJFTCk7CisgICAgICAgICAgICBrZXkgPSBUZXh0QXR0cmlidXRlLkZPUkVHUk9VTkQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aXRsZSA9IFJlc291cmNlVXRpbHMuZ2V0UmVzb3VyY2VTdHJpbmcoRnJhbWVSZXNvdXJjZXMuU0VUX0JBQ0tHUk9VTkRfVElUTEUpOworICAgICAgICAgICAgbWVzc2FnZSA9IFJlc291cmNlVXRpbHMuZ2V0UmVzb3VyY2VTdHJpbmcoRnJhbWVSZXNvdXJjZXMuU0VUX0JBQ0tHUk9VTkRfTEFCRUwpOworICAgICAgICAgICAga2V5ID0gVGV4dEF0dHJpYnV0ZS5CQUNLR1JPVU5EOworICAgICAgICB9CisgICAgICAgIHJldHVybiBjcmVhdGVPYmplY3REaWFsb2dGYWN0b3J5KHRpdGxlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHlsZU1lbnVJdGVtU2V0LkNIQVJBQ1RFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JOYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JzKTsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSB2b2lkIGNyZWF0ZUZvbnRNZW51KCkgeworICAgICAgICAKKyAgICAgICAgaGFuZGxlQWRkTWVudShGcmFtZVJlc291cmNlcy5GT05UKTsKKyAgICAgICAgCisgICAgICAgIFN0cmluZ1tdIGZvbnRzID0gRm9udExpc3QuZ2V0Rm9udExpc3QoKTsKKyAgICAgICAgTWVudURhdGFbXSBtRGF0YSA9IG5ldyBNZW51RGF0YVtmb250cy5sZW5ndGhdOworICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBtRGF0YS5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgbURhdGFbaV0gPSBuZXcgTWVudURhdGEoZm9udHNbaV0pOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBuZXcgU3R5bGVNZW51SXRlbVNldChUZXh0QXR0cmlidXRlLkZBTUlMWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1EYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHlsZU1lbnVJdGVtU2V0LkNIQVJBQ1RFUikuc2V0VGV4dFBhbmVsKGZUZXh0UGFuZWwpOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHZvaWQgY3JlYXRlRmx1c2hNZW51KCkgeworICAgICAgICAKKyAgICAgICAgaGFuZGxlQWRkTWVudShGcmFtZVJlc291cmNlcy5GTFVTSCk7CisgICAgICAgIAorICAgICAgICBPYmplY3RbXSB2YWx1ZXMgPSB7ICBUZXh0QXR0cmlidXRlLkZMVVNIX0xFQURJTkcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRBdHRyaWJ1dGUuRkxVU0hfQ0VOVEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0QXR0cmlidXRlLkZMVVNIX1RSQUlMSU5HLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0QXR0cmlidXRlLkZVTExZX0pVU1RJRklFRCB9OworICAgICAgICBNZW51RGF0YVtdIG1EYXRhID0geyBSZXNvdXJjZVV0aWxzLmdldE1lbnVEYXRhKEZyYW1lUmVzb3VyY2VzLkxFQURJTkcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVV0aWxzLmdldE1lbnVEYXRhKEZyYW1lUmVzb3VyY2VzLkNFTlRFUiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlVXRpbHMuZ2V0TWVudURhdGEoRnJhbWVSZXNvdXJjZXMuVFJBSUxJTkcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVV0aWxzLmdldE1lbnVEYXRhKEZyYW1lUmVzb3VyY2VzLkpVU1RJRklFRCkgfTsKKyAgICAgICAgCisgICAgICAgIG5ldyBTdHlsZU1lbnVJdGVtU2V0KFRleHRBdHRyaWJ1dGUuTElORV9GTFVTSCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVudUl0ZW1TZXQuUEFSQUdSQVBIKS5zZXRUZXh0UGFuZWwoZlRleHRQYW5lbCk7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgdm9pZCBjcmVhdGVLZXltYXBNZW51KCkgeworICAgICAgICAKKyAgICAgICAgaGFuZGxlQWRkTWVudShGcmFtZVJlc291cmNlcy5LRVlNQVApOworICAgICAgICAKKyAgICAgICAgS2V5UmVtYXBbXSB2YWx1ZXMgPSB7IEtleVJlbWFwLmdldElkZW50aXR5UmVtYXAoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS2V5UmVtYXAuZ2V0QXJhYmljVHJhbnNsaXRlcmF0aW9uKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtleVJlbWFwLmdldEhlYnJld1RyYW5zbGl0ZXJhdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLZXlSZW1hcC5nZXRJc3JhZWxOaWt1ZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLZXlSZW1hcC5nZXRUaGFpS2V0bWFuZWUoKSB9OworICAgICAgICBNZW51RGF0YVtdIG1EYXRhID0geyBSZXNvdXJjZVV0aWxzLmdldE1lbnVEYXRhKEZyYW1lUmVzb3VyY2VzLkRFRkFVTFQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVV0aWxzLmdldE1lbnVEYXRhKEZyYW1lUmVzb3VyY2VzLkFSQUJJQyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlVXRpbHMuZ2V0TWVudURhdGEoRnJhbWVSZXNvdXJjZXMuSEVCUkVXKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VVdGlscy5nZXRNZW51RGF0YShGcmFtZVJlc291cmNlcy5JU1JBRUxfTklLVUQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVV0aWxzLmdldE1lbnVEYXRhKEZyYW1lUmVzb3VyY2VzLlRIQUlfS0VUTUFORUUpIH07CisgICAgICAgIAorICAgICAgICBuZXcgS2V5bWFwTWVudUl0ZW1TZXQodmFsdWVzLCBtRGF0YSkuc2V0VGV4dFBhbmVsKGZUZXh0UGFuZWwpOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHZvaWQgY3JlYXRlQmlkaU1lbnUoKSB7CisgICAgICAgIAorICAgICAgICBoYW5kbGVBZGRNZW51KEZyYW1lUmVzb3VyY2VzLkJJREkpOworICAgICAgICAKKyAgICAgICAgT2JqZWN0W10gdmFsdWVzID0geyAgbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dEF0dHJpYnV0ZS5SVU5fRElSRUNUSU9OX0xUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dEF0dHJpYnV0ZS5SVU5fRElSRUNUSU9OX1JUTCB9OworICAgICAgICBNZW51RGF0YVtdIG1EYXRhID0geyBSZXNvdXJjZVV0aWxzLmdldE1lbnVEYXRhKEZyYW1lUmVzb3VyY2VzLkRFRkFVTFRfRElSRUNUSU9OKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VVdGlscy5nZXRNZW51RGF0YShGcmFtZVJlc291cmNlcy5MVFJfRElSRUNUSU9OKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VVdGlscy5nZXRNZW51RGF0YShGcmFtZVJlc291cmNlcy5SVExfRElSRUNUSU9OKSwgfTsKKworICAgICAgICBuZXcgU3R5bGVNZW51SXRlbVNldChUZXh0QXR0cmlidXRlLlJVTl9ESVJFQ1RJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbURhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lbnVJdGVtU2V0LlBBUkFHUkFQSCkuc2V0VGV4dFBhbmVsKGZUZXh0UGFuZWwpOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHZvaWQgY3JlYXRlQWJvdXRNZW51KCkgeworICAgICAgICAKKyAgICAgICAgaGFuZGxlQWRkTWVudShGcmFtZVJlc291cmNlcy5BQk9VVF9NRU5VKTsKKyAgICAgICAgCisgICAgICAgIG5ldyBEaWFsb2dJdGVtKFJlc291cmNlVXRpbHMuZ2V0TWVudURhdGEoRnJhbWVSZXNvdXJjZXMuQUJPVVRfSVRFTSksIAorICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVBYm91dERpYWxvZ0ZhY3RvcnkoKSkuc2V0VGV4dFBhbmVsKGZUZXh0UGFuZWwpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3VpaW1wbC9NZW51SXRlbVNldC5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdWlpbXBsL01lbnVJdGVtU2V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMGNkOTZkNAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3VpaW1wbC9NZW51SXRlbVNldC5qYXZhCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IE1lbnVJdGVtU2V0LmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NTI6MzIgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC51aWltcGw7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5NVGV4dFBhbmVsOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLlRleHRQYW5lbEV2ZW50OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLlRleHRQYW5lbExpc3RlbmVyOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudWlpbXBsLnJlc291cmNlcy5NZW51RGF0YTsKKworcHVibGljIGFic3RyYWN0IGNsYXNzIE1lbnVJdGVtU2V0IGltcGxlbWVudHMgVGV4dFBhbmVsTGlzdGVuZXIgeworICAgIAorICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBib29sZWFuIENIQVJBQ1RFUiA9IHRydWU7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBib29sZWFuIFBBUkFHUkFQSCA9IGZhbHNlOworCisgICAgcHJpdmF0ZSBNVGV4dFBhbmVsIGZUZXh0UGFuZWwgPSBudWxsOworICAgIAorICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIHRleHRFdmVudE9jY3VycmVkKFRleHRQYW5lbEV2ZW50IGV2ZW50KTsKKyAgICBwdWJsaWMgYWJzdHJhY3QgYm9vbGVhbiByZXNwb25kc1RvRXZlbnRUeXBlKGludCB0eXBlKTsKKyAgICAKKyAgICBwdWJsaWMgZmluYWwgdm9pZCBzZXRUZXh0UGFuZWwoTVRleHRQYW5lbCB0ZXh0UGFuZWwpIHsKKyAgICAgICAgCisgICAgICAgIGlmIChmVGV4dFBhbmVsICE9IG51bGwpIHsKKyAgICAgICAgICAgIGZUZXh0UGFuZWwucmVtb3ZlTGlzdGVuZXIodGhpcyk7CisgICAgICAgIH0KKyAgICAgICAgZlRleHRQYW5lbCA9IHRleHRQYW5lbDsKKyAgICAgICAgaWYgKGZUZXh0UGFuZWwgIT0gbnVsbCkgeworICAgICAgICAgICAgZlRleHRQYW5lbC5hZGRMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdGV4dFBhbmVsQ2hhbmdlZCgpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgZmluYWwgTVRleHRQYW5lbCBnZXRUZXh0UGFuZWwoKSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gZlRleHRQYW5lbDsKKyAgICB9CisgICAgCisgICAgcHJvdGVjdGVkIHZvaWQgdGV4dFBhbmVsQ2hhbmdlZCgpIHsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC91aWltcGwvUmVzb3VyY2VVdGlscy5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdWlpbXBsL1Jlc291cmNlVXRpbHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42MTU3ZWJmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdWlpbXBsL1Jlc291cmNlVXRpbHMuamF2YQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBSZXNvdXJjZVV0aWxzLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NTI6MzIgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC51aWltcGw7CisKK2ltcG9ydCBqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGU7CitpbXBvcnQgamF2YS51dGlsLk1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbjsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudWlpbXBsLnJlc291cmNlcy5GcmFtZVJlc291cmNlczsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbC5yZXNvdXJjZXMuTWVudURhdGE7CisKK3B1YmxpYyBjbGFzcyBSZXNvdXJjZVV0aWxzIHsKKyAgICAKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHByaXZhdGUgc3RhdGljIFJlc291cmNlQnVuZGxlIEJVTkRMRTsKKyAgICBzdGF0aWMgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgQlVORExFID0gUmVzb3VyY2VCdW5kbGUuZ2V0QnVuZGxlKCJjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbC5yZXNvdXJjZXMuRnJhbWVSZXNvdXJjZXMiKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaChNaXNzaW5nUmVzb3VyY2VFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJDb3VsZG4ndCBsb2FkIHJlc291cmNlWFhYLiAgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4Y2VwdGlvbjogIiArIGUpOworICAgICAgICAgICAgQlVORExFID0gbmV3IEZyYW1lUmVzb3VyY2VzKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIE1lbnVEYXRhIGdldE1lbnVEYXRhKFN0cmluZyBrZXkpIHsKKyAgICAgICAgCisgICAgICAgIHJldHVybiAoTWVudURhdGEpIEJVTkRMRS5nZXRPYmplY3Qoa2V5KTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0UmVzb3VyY2VTdHJpbmcoU3RyaW5nIGtleSkgeworICAgICAgICAKKyAgICAgICAgcmV0dXJuIEJVTkRMRS5nZXRTdHJpbmcoa2V5KTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdWlpbXBsL1NpbmdsZUNoZWNrTWVudUl0ZW0uamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3VpaW1wbC9TaW5nbGVDaGVja01lbnVJdGVtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYmU1YWM4NwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3VpaW1wbC9TaW5nbGVDaGVja01lbnVJdGVtLmphdmEKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogU2luZ2xlQ2hlY2tNZW51SXRlbS5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjUyOjMyICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudWlpbXBsOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuTVRleHRQYW5lbDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5UZXh0UGFuZWxFdmVudDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbC5yZXNvdXJjZXMuTWVudURhdGE7CisKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBTaW5nbGVDaGVja01lbnVJdGVtIGV4dGVuZHMgTWVudUl0ZW1TZXQgeworICAgIAorICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHJvdGVjdGVkIE1JdGVtIGZJdGVtOworICAgIAorICAgIFNpbmdsZUNoZWNrTWVudUl0ZW0oTWVudURhdGEgbWVudURhdGEpIHsKKyAgICAgICAgCisgICAgICAgIGZJdGVtID0gTUl0ZW0uY3JlYXRlQ2hlY2tib3hJdGVtKG1lbnVEYXRhKTsKKyAgICB9CisgICAgCisgICAgYWJzdHJhY3Qgdm9pZCBzZXRDaGVja2VkKCk7CisgICAgCisgICAgcHJvdGVjdGVkIGZpbmFsIHZvaWQgdGV4dFBhbmVsQ2hhbmdlZCgpIHsKKyAgICAgICAgCisgICAgICAgIE1UZXh0UGFuZWwgdGV4dFBhbmVsID0gZ2V0VGV4dFBhbmVsKCk7CisgICAgICAgIGlmICh0ZXh0UGFuZWwgPT0gbnVsbCkgeworICAgICAgICAgICAgZkl0ZW0uc2V0RW5hYmxlZChmYWxzZSk7CisgICAgICAgICAgICBmSXRlbS5zZXRTdGF0ZShmYWxzZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBmSXRlbS5zZXRFbmFibGVkKHRydWUpOworICAgICAgICAgICAgc2V0Q2hlY2tlZCgpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdWlpbXBsL1N0eWxlTWVudUl0ZW1TZXQuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3VpaW1wbC9TdHlsZU1lbnVJdGVtU2V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNWM1NWJmZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3VpaW1wbC9TdHlsZU1lbnVJdGVtU2V0LmphdmEKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogU3R5bGVNZW51SXRlbVNldC5qYXZhLHYgJCAkUmV2aXNpb246IDEuMiAkICREYXRlOiAyMDAyLzAyLzE2IDAzOjA2OjUwICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudWlpbXBsOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlU2V0OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5TdHlsZU1vZGlmaWVyOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuTVRleHRQYW5lbDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5UZXh0UGFuZWxFdmVudDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbC5yZXNvdXJjZXMuTWVudURhdGE7CisKK3B1YmxpYyBmaW5hbCBjbGFzcyBTdHlsZU1lbnVJdGVtU2V0IGV4dGVuZHMgQ2hvaWNlTWVudUl0ZW1TZXQgeworICAgIAorICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisKKyAgICBwcml2YXRlIE9iamVjdCBmS2V5OworICAgIHByaXZhdGUgYm9vbGVhbiBmQ2hhcmFjdGVyOworCisgICAgcHVibGljIFN0eWxlTWVudUl0ZW1TZXQoT2JqZWN0IHN0eWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdFtdIHZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZW51RGF0YVtdIG1lbnVEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gY2hhcmFjdGVyKSB7CisgICAgICAgIAorICAgICAgICBzdXBlcih2YWx1ZXMsIG1lbnVEYXRhKTsKKyAgICAgICAgZktleSA9IHN0eWxlOworICAgICAgICBmQ2hhcmFjdGVyID0gY2hhcmFjdGVyOworICAgIH0KKyAgICAKKyAgICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVWYWx1ZVNlbGVjdGVkKE9iamVjdCB2YWx1ZSkgeworICAgICAgICAKKyAgICAgICAgTVRleHRQYW5lbCB0ZXh0UGFuZWwgPSBnZXRUZXh0UGFuZWwoKTsKKyAgICAgICAgaWYgKHRleHRQYW5lbCA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk1lbnUgaXRlbSBpcyBlbmFibGVkIHdoZW4gcGFuZWwgaXMgbnVsbCEiKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgU3R5bGVNb2RpZmllciBtb2RpZmllcjsKKyAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHsKKyAgICAgICAgICAgIEF0dHJpYnV0ZVNldCBzZXQgPSBuZXcgQXR0cmlidXRlU2V0KGZLZXkpOworICAgICAgICAgICAgbW9kaWZpZXIgPSBTdHlsZU1vZGlmaWVyLmNyZWF0ZVJlbW92ZU1vZGlmaWVyKHNldCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtb2RpZmllciA9IFN0eWxlTW9kaWZpZXIuY3JlYXRlQWRkTW9kaWZpZXIoZktleSwgdmFsdWUpOworICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBpZiAoZkNoYXJhY3RlciA9PSBDSEFSQUNURVIpIHsKKyAgICAgICAgICAgIHRleHRQYW5lbC5tb2RpZnlDaGFyYWN0ZXJTdHlsZU9uU2VsZWN0aW9uKG1vZGlmaWVyKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRleHRQYW5lbC5tb2RpZnlQYXJhZ3JhcGhTdHlsZU9uU2VsZWN0aW9uKG1vZGlmaWVyKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwcm90ZWN0ZWQgT2JqZWN0IGdldEN1cnJlbnRWYWx1ZSgpIHsKKyAgICAgICAgCisgICAgICAgIE1UZXh0UGFuZWwgdGV4dFBhbmVsID0gZ2V0VGV4dFBhbmVsKCk7CisgICAgICAgIGlmICh0ZXh0UGFuZWwgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJTaG91bGRuJ3QgY2FsbCB0aGlzIHdpdGhvdXQgYSB0ZXh0IHBhbmVsISIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoZkNoYXJhY3RlciA9PSBDSEFSQUNURVIpIHsKKyAgICAgICAgICAgIHJldHVybiB0ZXh0UGFuZWwuZ2V0Q2hhcmFjdGVyU3R5bGVPdmVyU2VsZWN0aW9uKGZLZXkpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHRleHRQYW5lbC5nZXRQYXJhZ3JhcGhTdHlsZU92ZXJTZWxlY3Rpb24oZktleSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXh0RXZlbnRPY2N1cnJlZChUZXh0UGFuZWxFdmVudCBldmVudCkgeworICAgICAgICAKKyAgICAgICAgc2V0Q2hlY2tlZCgpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgYm9vbGVhbiByZXNwb25kc1RvRXZlbnRUeXBlKGludCB0eXBlKSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gdHlwZSA9PSBUZXh0UGFuZWxFdmVudC5TRUxFQ1RJT05fU1RZTEVTX0NIQU5HRUQ7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3VpaW1wbC9TdWJ0cmFjdFN0eWxlTWVudUl0ZW0uamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3VpaW1wbC9TdWJ0cmFjdFN0eWxlTWVudUl0ZW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44YjBmNTVkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdWlpbXBsL1N1YnRyYWN0U3R5bGVNZW51SXRlbS5qYXZhCkBAIC0wLDAgKzEsMTA0IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBTdWJ0cmFjdFN0eWxlTWVudUl0ZW0uamF2YSx2ICQgJFJldmlzaW9uOiAxLjIgJCAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNjo1MCAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbDsKKworaW1wb3J0IGphdmEudXRpbC5FdmVudE9iamVjdDsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZU1hcDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRsYXlvdXQuYXR0cmlidXRlcy5BdHRyaWJ1dGVTZXQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0LlN0eWxlTW9kaWZpZXI7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5NVGV4dFBhbmVsOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLlRleHRQYW5lbEV2ZW50OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudWlpbXBsLnJlc291cmNlcy5NZW51RGF0YTsKKworcHVibGljIGZpbmFsIGNsYXNzIFN1YnRyYWN0U3R5bGVNZW51SXRlbSBleHRlbmRzIFNpbmdsZUNoZWNrTWVudUl0ZW0geworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcml2YXRlIGZpbmFsIE9iamVjdFtdIGZLZXlzOworICAgIAorICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiBmQ2hhcmFjdGVyOworICAgIAorICAgIHB1YmxpYyBTdWJ0cmFjdFN0eWxlTWVudUl0ZW0oT2JqZWN0W10ga2V5cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lbnVEYXRhIG1lbnVEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBjaGFyYWN0ZXIpIHsKKyAgICAgICAgCisgICAgICAgIHN1cGVyKG1lbnVEYXRhKTsKKyAgICAgICAgCisgICAgICAgIGZLZXlzID0gKE9iamVjdFtdKSBrZXlzLmNsb25lKCk7CisgICAgICAgIGZDaGFyYWN0ZXIgPSBjaGFyYWN0ZXI7CisgICAgICAgIAorICAgICAgICBBdHRyaWJ1dGVTZXQga2V5U2V0ID0gbmV3IEF0dHJpYnV0ZVNldChrZXlzKTsKKyAgICAgICAgZmluYWwgU3R5bGVNb2RpZmllciBtb2RpZmllciA9IFN0eWxlTW9kaWZpZXIuY3JlYXRlUmVtb3ZlTW9kaWZpZXIoa2V5U2V0KTsKKyAgICAgICAgCisgICAgICAgIGZJdGVtLmFkZExpc3RlbmVyKG5ldyBFdmVudExpc3RlbmVyKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgZXZlbnRPY2N1cnJlZChFdmVudE9iamVjdCBldmVudCkgeworICAgICAgICAgICAgICAgIE1UZXh0UGFuZWwgcGFuZWwgPSBnZXRUZXh0UGFuZWwoKTsKKyAgICAgICAgICAgICAgICBpZiAocGFuZWwgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk1lbnUgaXRlbSBpcyBlbmFibGVkIHdoZW4gcGFuZWwgaXMgbnVsbCEiKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoZkNoYXJhY3RlciA9PSBDSEFSQUNURVIpIHsKKyAgICAgICAgICAgICAgICAgICAgcGFuZWwubW9kaWZ5Q2hhcmFjdGVyU3R5bGVPblNlbGVjdGlvbihtb2RpZmllcik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBwYW5lbC5tb2RpZnlQYXJhZ3JhcGhTdHlsZU9uU2VsZWN0aW9uKG1vZGlmaWVyKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBib29sZWFuIG9iamVjdHNBcmVFcXVhbChPYmplY3QgbGhzLCBPYmplY3QgcmhzKSB7CisgICAgCisgICAgICAgIGlmIChsaHMgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIHJocyA9PSBudWxsOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGxocy5lcXVhbHMocmhzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByb3RlY3RlZCB2b2lkIHNldENoZWNrZWQoKSB7CisKKyAgICAgICAgTVRleHRQYW5lbCBwYW5lbCA9IGdldFRleHRQYW5lbCgpOworICAgICAgICBBdHRyaWJ1dGVNYXAgZGVmYXVsdHMgPSBwYW5lbC5nZXREZWZhdWx0VmFsdWVzKCk7CisgICAgICAgIAorICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBmS2V5cy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgT2JqZWN0IGRlZmF1bHRWID0gZGVmYXVsdHMuZ2V0KGZLZXlzW2ldKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgT2JqZWN0IHZhbHVlID0gKGZDaGFyYWN0ZXIgPT0gQ0hBUkFDVEVSKT8gCisgICAgICAgICAgICAgICAgICAgIHBhbmVsLmdldENoYXJhY3RlclN0eWxlT3ZlclNlbGVjdGlvbihmS2V5c1tpXSkgOgorICAgICAgICAgICAgICAgICAgICBwYW5lbC5nZXRQYXJhZ3JhcGhTdHlsZU92ZXJTZWxlY3Rpb24oZktleXNbaV0pOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICghb2JqZWN0c0FyZUVxdWFsKGRlZmF1bHRWLCB2YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICBmSXRlbS5zZXRTdGF0ZShmYWxzZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZkl0ZW0uc2V0U3RhdGUodHJ1ZSk7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gcmVzcG9uZHNUb0V2ZW50VHlwZShpbnQgdHlwZSkgeworICAgICAgICAKKyAgICAgICAgcmV0dXJuIHR5cGUgPT0gVGV4dFBhbmVsRXZlbnQuU0VMRUNUSU9OX1NUWUxFU19DSEFOR0VEOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgZmluYWwgdm9pZCB0ZXh0RXZlbnRPY2N1cnJlZChUZXh0UGFuZWxFdmVudCBldmVudCkgeworICAgICAgICAKKyAgICAgICAgc2V0Q2hlY2tlZCgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3VpaW1wbC9UYWJSdWxlckltcGwuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3VpaW1wbC9UYWJSdWxlckltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xNzI5MzI3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdWlpbXBsL1RhYlJ1bGVySW1wbC5qYXZhCkBAIC0wLDAgKzEsOTA5IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBUYWJSdWxlckltcGwuamF2YSx2ICQgJFJldmlzaW9uOiAxLjMgJCAkRGF0ZTogMjAwMi8wMi8xNiAwMzowNjo1MCAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbDsKKworaW1wb3J0IGphdmEuYXd0LkNvbG9yOworaW1wb3J0IGphdmEuYXd0LkNvbXBvbmVudDsKK2ltcG9ydCBqYXZhLmF3dC5EaW1lbnNpb247CitpbXBvcnQgamF2YS5hd3QuRm9udE1ldHJpY3M7CitpbXBvcnQgamF2YS5hd3QuRnJhbWU7CitpbXBvcnQgamF2YS5hd3QuR3JhcGhpY3M7CitpbXBvcnQgamF2YS5hd3QuSW1hZ2U7CisKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5XaW5kb3dBZGFwdGVyOworaW1wb3J0IGphdmEuYXd0LmV2ZW50LldpbmRvd0V2ZW50OworaW1wb3J0IGphdmEuYXd0LmV2ZW50Lk1vdXNlTW90aW9uTGlzdGVuZXI7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuTW91c2VMaXN0ZW5lcjsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5Nb3VzZUV2ZW50OworaW1wb3J0IGphdmEuYXd0LmV2ZW50LklucHV0RXZlbnQ7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRsYXlvdXQuYXR0cmlidXRlcy5BdHRyaWJ1dGVNYXA7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuVGV4dEF0dHJpYnV0ZTsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NVGFiUnVsZXI7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0LlN0YW5kYXJkVGFiUnVsZXI7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0LlRhYlN0b3A7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0LlN0eWxlTW9kaWZpZXI7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5UZXh0UGFuZWxMaXN0ZW5lcjsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5NVGV4dFBhbmVsOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLlRleHRQYW5lbDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5UZXh0UGFuZWxFdmVudDsKKworLyoqCisgKiBUYWJSdWxlciBpcyBhIENvbXBvbmVudCB3aGljaCBwcmVzZW50cyBhIHVzZXIgaW50ZXJmYWNlIGZvcgorICogc2V0dGluZyB0aGUgbGVhZGluZyBtYXJnaW4sIHRyYWlsaW5nIG1hcmdpbiwgZmlyc3QgbGluZSBpbmRlbnQsCisgKiBhbmQgdGFiIHR5cGVzIGFuZCBwb3NpdGlvbnMuCisgKiA8cD4KKyAqIFRhYlJ1bGVyIGRvZXMgbm90IGltcGxlbWVudCBUZXh0UGFuZWxMaXN0ZW5lciBkaXJlY3RseTsgIGhvd2V2ZXIsCisgKiBpdCBjYW4gcmVjZWl2ZSB1cGRhdGVzIGZyb20gYSBNVGV4dFBhbmVsLiAgVG8gaGF2ZSBhIFRhYlJ1bGVyIGxpc3RlbgorICogdG8gYSBwYW5lbCwgY2FsbCA8Y29kZT5saXN0ZW5Ub1BhbmVsPC9jb2RlPi4gIFRhYlJ1bGVyIHJlc3BvbmRzIHRvCisgKiB1c2VyIG1hbmlwdWxhdGlvbiBieSBtb2RpZnlpbmcgdGhlIHBhcmFncmFwaCBzdHlsZXMgb24gaXRzIE1UZXh0UGFuZWwKKyAqIChpZiBhbnkpLgorICovCitwdWJsaWMgZmluYWwgY2xhc3MgVGFiUnVsZXJJbXBsIGltcGxlbWVudHMgTW91c2VMaXN0ZW5lciwgTW91c2VNb3Rpb25MaXN0ZW5lcgoreworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2xhc3MgVGFiU3RvcEJ1ZmZlciB7CisgICAgICAgIHB1YmxpYyBpbnQgZlBvc2l0aW9uOworICAgICAgICBwdWJsaWMgYnl0ZSBmVHlwZTsKKworICAgICAgICBUYWJTdG9wQnVmZmVyKGludCBwb3NpdGlvbiwgYnl0ZSB0eXBlKSB7CisgICAgICAgICAgICBmUG9zaXRpb24gPSBwb3NpdGlvbjsKKyAgICAgICAgICAgIGZUeXBlID0gdHlwZTsKKyAgICAgICAgfQorCisgICAgICAgIFRhYlN0b3BCdWZmZXIoVGFiU3RvcCB0YWIpIHsKKyAgICAgICAgICAgIHRoaXModGFiLmdldFBvc2l0aW9uKCksIHRhYi5nZXRUeXBlKCkpOworICAgICAgICB9CisKKyAgICAgICAgVGFiU3RvcCBnZXRUYWJTdG9wKCkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBUYWJTdG9wKGZQb3NpdGlvbiwgZlR5cGUpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2xhc3MgVGFiUnVsZXJNb2RpZmllciBleHRlbmRzIFN0eWxlTW9kaWZpZXIgeworCisgICAgICAgIHByaXZhdGUgVGFiU3RvcCBmT2xkVGFiOyAvLyB0YWIgdG8gcmVtb3ZlCisgICAgICAgIHByaXZhdGUgVGFiU3RvcCBmTmV3VGFiOyAvLyB0YWIgdG8gYWRkCisgICAgICAgIHByaXZhdGUgQXR0cmlidXRlTWFwIGZQYW5lbERlZmF1bHRzOworICAgICAgICAKKyAgICAgICAgVGFiUnVsZXJNb2RpZmllcihUYWJTdG9wIG9sZFRhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBUYWJTdG9wIG5ld1RhYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVNYXAgcGFuZWxEZWZhdWx0cykgeworICAgICAgICAgICAgZk9sZFRhYiA9IG9sZFRhYjsKKyAgICAgICAgICAgIGZOZXdUYWIgPSBuZXdUYWI7CisgICAgICAgICAgICBmUGFuZWxEZWZhdWx0cyA9IHBhbmVsRGVmYXVsdHM7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgQXR0cmlidXRlTWFwIG1vZGlmeVN0eWxlKEF0dHJpYnV0ZU1hcCBvbGRTdHlsZSkgeworCisgICAgICAgICAgICBNVGFiUnVsZXIgb2xkUnVsZXIgPSAoTVRhYlJ1bGVyKSBnZXRXaXRoRGVmYXVsdChUZXh0QXR0cmlidXRlLlRBQl9SVUxFUiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRTdHlsZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmUGFuZWxEZWZhdWx0cyk7CisgICAgICAgICAgICBNVGFiUnVsZXIgcnVsZXIgPSBvbGRSdWxlcjsKKworICAgICAgICAgICAgaWYgKGZPbGRUYWIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGlmIChydWxlci5jb250YWluc1RhYihmT2xkVGFiKSkgeworICAgICAgICAgICAgICAgICAgICBydWxlciA9IHJ1bGVyLnJlbW92ZVRhYihmT2xkVGFiLmdldFBvc2l0aW9uKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChmTmV3VGFiICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBydWxlciA9IHJ1bGVyLmFkZFRhYihmTmV3VGFiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHJ1bGVyICE9IG9sZFJ1bGVyKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG9sZFN0eWxlLmFkZEF0dHJpYnV0ZShUZXh0QXR0cmlidXRlLlRBQl9SVUxFUiwgcnVsZXIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG9sZFN0eWxlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2xhc3MgSW1hZ2VDYWNoZSB7CisKKyAgICAgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgICAgIHByaXZhdGUgSW1hZ2UgZkltYWdlID0gbnVsbDsKKyAgICAgICAgcHJpdmF0ZSBib29sZWFuIGZJc1ZhbGlkID0gZmFsc2U7CisgICAgICAgIHByaXZhdGUgQ29tcG9uZW50IGZDb21wb25lbnQ7ICAgLy8gd29ya2Fyb3VuZCBmb3IgY29tcGlsZXIgYnVnLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaG91bGQganVzdCBiZSBhYmxlIHRvIHNheSBDb21wb25lbnQudGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoaXMgd2VyZSBub3QgYSBzdGF0aWMgY2xhc3MKKyAgICAgICAgCisgICAgICAgIEltYWdlQ2FjaGUoQ29tcG9uZW50IGNvbXBvbmVudCkgeworICAgICAgICAKKyAgICAgICAgICAgIGZDb21wb25lbnQgPSBjb21wb25lbnQ7CisgICAgICAgIH0KKworICAgICAgICBHcmFwaGljcyBnZXRHcmFwaGljcyhpbnQgd2lkdGgsIGludCBoZWlnaHQpIHsKKworICAgICAgICAgICAgaWYgKHdpZHRoIDw9IDAgfHwgaGVpZ2h0IDw9IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgSW1hZ2UgaW1hZ2UgPSBmSW1hZ2U7CisgICAgICAgICAgICBpZiAoaW1hZ2UgPT0gbnVsbCB8fCBpbWFnZS5nZXRXaWR0aChmQ29tcG9uZW50KSA8IHdpZHRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBpbWFnZS5nZXRIZWlnaHQoZkNvbXBvbmVudCkgPCBoZWlnaHQpIHsKKwkJaWYgKCFmQ29tcG9uZW50LmlzVmlzaWJsZSgpKSB7IC8vIGZpeCByYWNlIGNvbmRpdGlvbiBpZiBjb21wb25lbnQgbm90IGZ1bGx5IGluaXRpYWxpemVkCisJCSAgICByZXR1cm4gbnVsbDsKKwkJfQorICAgICAgICAgICAgICAgIGltYWdlID0gZkNvbXBvbmVudC5jcmVhdGVJbWFnZSh3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEdyYXBoaWNzIGcgPSBpbWFnZS5nZXRHcmFwaGljcygpOworICAgICAgICAgICAgZkltYWdlID0gaW1hZ2U7CisgICAgICAgICAgICByZXR1cm4gZzsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZHJhd0ltYWdlKEdyYXBoaWNzIGcsIGludCB4LCBpbnQgeSwgQ29sb3IgY29sb3IpIHsKKworICAgICAgICAgICAgaWYgKCFmSXNWYWxpZCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRHJhd2luZyBpbWFnZSB3aGVuIG5vdCB2YWxpZCIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZy5kcmF3SW1hZ2UoZkltYWdlLCB4LCB5LCBjb2xvciwgZkNvbXBvbmVudCk7CisgICAgICAgIH0KKworICAgICAgICBib29sZWFuIGlzVmFsaWQoKSB7CisKKyAgICAgICAgICAgIHJldHVybiBmSXNWYWxpZDsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgc2V0VmFsaWQoYm9vbGVhbiBpc1ZhbGlkKSB7CisKKyAgICAgICAgICAgIGZJc1ZhbGlkID0gaXNWYWxpZDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICogVGhpcyBjbGFzcyBsaXN0ZW5zIHRvIGEgTVRleHRQYW5lbCBmb3IgY2hhbmdlcyB3aGljaAorICAgICogYWZmZWN0IGEgVGFiUnVsZXIncyBhcHBlYXJhbmNlLCBhbmQgdXBkYXRlcyB0aGUgVGFiUnVsZXIKKyAgICAqIGFzIG5lY2Vzc2FyeS4KKyAgICAqIEBzZWUgVGFiUnVsZXIKKyAgICAqIEBzZWUgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuTVRleHRQYW5lbAorICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2xhc3MgVXBkYXRlciBpbXBsZW1lbnRzIFRleHRQYW5lbExpc3RlbmVyIHsKKworICAgICAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICAgICAgcHJpdmF0ZSBUYWJSdWxlckltcGwgZlRhYlJ1bGVyOworICAgICAgICBwcml2YXRlIE1UZXh0UGFuZWwgZlRleHRQYW5lbDsKKworICAgICAgICAvKioKKyAgICAgICAgKiBDcmVhdGUgYSBuZXcgVGFiUnVsZXJVcGRhdGVyLgorICAgICAgICAqIEBwYXJhbSB0YWJSdWxlciB0aGUgVGFiUnVsZXIgdG8gdXBkYXRlIHdoZW4gYSBjaGFuZ2Ugb2NjdXJzCisgICAgICAgICogICAgIGluIHRoZSBNVGV4dFBhbmVsCisgICAgICAgICovCisgICAgICAgIFVwZGF0ZXIoVGFiUnVsZXJJbXBsIHRhYlJ1bGVyKSB7CisKKyAgICAgICAgICAgIGZUYWJSdWxlciA9IHRhYlJ1bGVyOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICogUmVtb3ZlIHNlbGYgYXMgbGlzdGVuZXIgZnJvbSBwcmV2aW91cyBNVGV4dFBhbmVsLAorICAgICAgICAqIHNldCBjdXJyZW50IE1UZXh0UGFuZWwgYW5kIGxpc3RlbiB0byBpdCAoaWYgbm90IG51bGwpLgorICAgICAgICAqLworICAgICAgICB2b2lkIHNldFRleHRQYW5lbChNVGV4dFBhbmVsIHRleHRQYW5lbCkgeworCisgICAgICAgICAgICBpZiAoZlRleHRQYW5lbCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgZlRleHRQYW5lbC5yZW1vdmVMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZlRleHRQYW5lbCA9IHRleHRQYW5lbDsKKworICAgICAgICAgICAgaWYgKGZUZXh0UGFuZWwgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGZUZXh0UGFuZWwuYWRkTGlzdGVuZXIodGhpcyk7CisgICAgICAgICAgICAgICAgc2V0QWxsKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwcml2YXRlIHZvaWQgc2V0QWxsKCkgeworCisgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gZlRleHRQYW5lbC5nZXRTZWxlY3Rpb25TdGFydCgpOworICAgICAgICAgICAgYm9vbGVhbiBsZWZ0VG9SaWdodCA9IGZUZXh0UGFuZWwucGFyYWdyYXBoSXNMZWZ0VG9SaWdodChvZmZzZXQpOworICAgICAgICAgICAgQXR0cmlidXRlTWFwIHN0eWxlID0gZlRleHRQYW5lbC5nZXRUZXh0KCkucGFyYWdyYXBoU3R5bGVBdChvZmZzZXQpOworICAgICAgICAgICAgZlRhYlJ1bGVyLnNldChzdHlsZSwgZmFsc2UpOworICAgICAgICAgICAgZlRhYlJ1bGVyLnNldEZvcm1hdFdpZHRoKGZUZXh0UGFuZWwuZ2V0Rm9ybWF0V2lkdGgoKSwgZmFsc2UpOworICAgICAgICAgICAgZlRhYlJ1bGVyLnNldExlZnRUb1JpZ2h0KGxlZnRUb1JpZ2h0LCB0cnVlKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAqIFRleHRQYW5lbExpc3RlbmVyIG1ldGhvZC4gIFRoaXMgY2xhc3MgcmVzcG9uZHMgdG8gdGV4dAorICAgICAgICAqIGNoYW5nZXMgYnkgdXBkYXRpbmcgaXRzIFRhYlJ1bGVyLgorICAgICAgICAqLworICAgICAgICBwdWJsaWMgdm9pZCB0ZXh0RXZlbnRPY2N1cnJlZChUZXh0UGFuZWxFdmVudCBldmVudCkgeworCisgICAgICAgICAgICBpbnQgY2hhbmdlQ29kZSA9IGV2ZW50LmdldElEKCk7CisKKyAgICAgICAgICAgIGlmIChjaGFuZ2VDb2RlID09IGV2ZW50LlNFTEVDVElPTl9TVFlMRVNfQ0hBTkdFRCB8fAorICAgICAgICAgICAgICAgICAgICBjaGFuZ2VDb2RlID09IGV2ZW50LlRFWFRfQ0hBTkdFRCkgeworCisgICAgICAgICAgICAgICAgaW50IG9mZnNldCA9IGZUZXh0UGFuZWwuZ2V0U2VsZWN0aW9uU3RhcnQoKTsKKyAgICAgICAgICAgICAgICBBdHRyaWJ1dGVNYXAgc3R5bGUgPSBmVGV4dFBhbmVsLmdldFRleHQoKS5wYXJhZ3JhcGhTdHlsZUF0KG9mZnNldCk7CisgICAgICAgICAgICAgICAgYm9vbGVhbiBsZWZ0VG9SaWdodCA9IGZUZXh0UGFuZWwucGFyYWdyYXBoSXNMZWZ0VG9SaWdodChvZmZzZXQpOworICAgICAgICAgICAgICAgIGZUYWJSdWxlci5zZXQoc3R5bGUsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBmVGFiUnVsZXIuc2V0TGVmdFRvUmlnaHQobGVmdFRvUmlnaHQsIHRydWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoY2hhbmdlQ29kZSA9PSBldmVudC5GT1JNQVRfV0lEVEhfQ0hBTkdFRCkgeworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGZUYWJSdWxlci5zZXRGb3JtYXRXaWR0aChmVGV4dFBhbmVsLmdldEZvcm1hdFdpZHRoKCksIHRydWUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvKioKKyAgICAgICAgKiBUZXh0UGFuZWxMaXN0ZW5lciBtZXRob2QuCisgICAgICAgICovCisgICAgICAgIHB1YmxpYyBib29sZWFuIHJlc3BvbmRzVG9FdmVudFR5cGUoaW50IHR5cGUpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgcmV0dXJuIHR5cGUgPT0gVGV4dFBhbmVsRXZlbnQuU0VMRUNUSU9OX1NUWUxFU19DSEFOR0VEIHx8CisgICAgICAgICAgICAgICAgICAgIHR5cGUgPT0gVGV4dFBhbmVsRXZlbnQuVEVYVF9DSEFOR0VEIHx8CisgICAgICAgICAgICAgICAgICAgIHR5cGUgPT0gVGV4dFBhbmVsRXZlbnQuRk9STUFUX1dJRFRIX0NIQU5HRUQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaGUgZGVmYXVsdCBiYWNrZ3JvdW5kIGNvbG9yIGZvciBUYWJSdWxlcnMuCisgICAgICogQHNlZSAjc2V0QmFja0NvbG9yCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBDb2xvciBERUZBVUxUX0JBQ0tfQ09MT1IgPSBDb2xvci5saWdodEdyYXk7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQga1RyYWNrTm9uZSA9IDA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IGtUcmFja1RhYiA9IDE7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IGtUcmFja0xNID0gMjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQga1RyYWNrRkxJID0gMzsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQga1RyYWNrVE0gPSA0OworCisgICAgcHJpdmF0ZSBDb21wb25lbnQgZkhvc3Q7CisgICAgcHJpdmF0ZSBNVGFiUnVsZXIgZlJ1bGVyOworICAgIHByaXZhdGUgaW50IGZMZWFkaW5nTWFyZ2luOworICAgIHByaXZhdGUgaW50IGZGaXJzdExpbmVJbmRlbnQ7CisgICAgcHJpdmF0ZSBpbnQgZkZvcm1hdFdpZHRoOworICAgIHByaXZhdGUgaW50IGZUcmFpbGluZ01hcmdpblBvc2l0aW9uOyAvLyBvcHBvc2l0ZSBvZiBhY3R1YWwgdHJhaWxpbmcgbWFyZ2luCisgICAgcHJpdmF0ZSBib29sZWFuIGZMZWZ0VG9SaWdodDsKKyAgICBwcml2YXRlIGludCBmQmFzZWxpbmU7CisgICAgcHJpdmF0ZSBpbnQgZk9yaWdpbjsKKyAgICBwcml2YXRlIENvbG9yIGZCYWNrQ29sb3IgPSBERUZBVUxUX0JBQ0tfQ09MT1I7CisKKyAgICBwcml2YXRlIGludCBmVHJhY2tJdGVtOyAvLyAwIC0gbm9uZSwgMSAtIHRhYiwgMiAtIGxtLCAzIC0gZmxpLCA0IC0gdG0KKyAgICBwcml2YXRlIFRhYlN0b3BCdWZmZXIgZlRyYWNrVGFiOworICAgIHByaXZhdGUgVGFiU3RvcCBmT2xkVGFiOworICAgIHByaXZhdGUgaW50IGZUcmFja0RlbHRhOworICAgIHByaXZhdGUgYm9vbGVhbiBmVHJhY2tWaXNpYmxlOworICAgIHByaXZhdGUgVXBkYXRlciBmVXBkYXRlcjsKKyAgICBwcml2YXRlIE1UZXh0UGFuZWwgZlRleHRQYW5lbCA9IG51bGw7CisKKyAgICBwcml2YXRlIEltYWdlQ2FjaGUgZkltYWdlQ2FjaGU7CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSBuZXcgVGFiUnVsZXIuCisgICAgICogQHBhcmFtIGJhc2VsaW5lIHRoZSB5LWNvb3JkaW5hdGUgb2YgdGhlIHJ1bGVyJ3MgYmFzZWxpbmUKKyAgICAgKiBAcGFyYW0gb3JpZ2luIHRoZSB4LWNvb3JkaW5hdGUgaW4gdGhpcyBDb21wb25lbnQgd2hlcmUKKyAgICAgKiAgICAgdGhlIGxlZnQgbWFyZ2luIGFwcGVhcnMKKyAgICAgKiBAcGFyYW0gdGV4dFBhbmVsIHRoZSBNVGV4dFBhbmVsIHRvIGxpc3RlbiB0by4gIFRoaXMgVGFiUnVsZXIKKyAgICAgKiAgICAgd2lsbCByZWZsZWN0IHRoZSBNVGV4dFBhbmVsJ3MgcGFyYWdyYXBoIHN0eWxlcywgYW5kIHVwZGF0ZQorICAgICAqICAgICB0aGUgcGFyYWdyYXBoIHN0eWxlcyB3aGVuIG1hbmlwdWxhdGVkLgorICAgICAqLworICAgIHB1YmxpYyBUYWJSdWxlckltcGwoaW50IGJhc2VsaW5lLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBvcmlnaW4sIAorICAgICAgICAgICAgICAgICAgICAgICAgTVRleHRQYW5lbCB0ZXh0UGFuZWwsCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wb25lbnQgaG9zdCkgeworCisgICAgICAgIGZIb3N0ID0gaG9zdDsKKyAgICAgICAgZkltYWdlQ2FjaGUgPSBuZXcgSW1hZ2VDYWNoZShob3N0KTsKKyAgICAgICAgZlVwZGF0ZXIgPSBuZXcgVXBkYXRlcih0aGlzKTsKKyAgICAgICAgZkJhc2VsaW5lID0gYmFzZWxpbmU7CisgICAgICAgIGZPcmlnaW4gPSBvcmlnaW47CisgICAgICAgIGhvc3QuYWRkTW91c2VMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgaG9zdC5hZGRNb3VzZU1vdGlvbkxpc3RlbmVyKHRoaXMpOworICAgICAgICBpZiAodGV4dFBhbmVsICE9IG51bGwpIHsKKyAgICAgICAgICAgIGxpc3RlblRvVGV4dFBhbmVsKHRleHRQYW5lbCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBmUnVsZXIgPSBuZXcgU3RhbmRhcmRUYWJSdWxlcigpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogTGlzdGVuIHRvIHRoZSBnaXZlbiBNVGV4dFBhbmVsIGFuZCByZWZsZWN0IGl0cyBjaGFuZ2VzLAorICAgICAqIGFuZCB1cGRhdGUgaXRzIHBhcmFncmFwaCBzdHlsZXMgd2hlbiBUYWJSdWxlciBpcworICAgICAqIG1hbmlwdWxhdGVkLgorICAgICAqIEBwYXJhbSB0ZXh0UGFuZWwgdGhlIE1UZXh0UGFuZWwgdG8gbGlzdGVuIHRvCisgICAgICovCisgICAgcHVibGljIHZvaWQgbGlzdGVuVG9UZXh0UGFuZWwoTVRleHRQYW5lbCB0ZXh0UGFuZWwpIHsKKworICAgICAgICBmVGV4dFBhbmVsID0gdGV4dFBhbmVsOworICAgICAgICBmVXBkYXRlci5zZXRUZXh0UGFuZWwodGV4dFBhbmVsKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGJhY2tncm91bmQgY29sb3Igb2YgdGhpcyBUYWJSdWxlci4KKyAgICAgKiBAcmV0dXJuIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoaXMgVGFiUnVsZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgQ29sb3IgZ2V0QmFja0NvbG9yKCkgeworCisgICAgICAgIHJldHVybiBmQmFja0NvbG9yOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiB0aGlzIFRhYlJ1bGVyLgorICAgICAqIEBwYXJhbSBiYWNrQ29sb3IgdGhlIG5ldyBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoaXMgVGFiUnVsZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRCYWNrQ29sb3IoQ29sb3IgYmFja0NvbG9yKSB7CisKKyAgICAgICAgaWYgKCFiYWNrQ29sb3IuZXF1YWxzKGZCYWNrQ29sb3IpKSB7CisgICAgICAgICAgICBmQmFja0NvbG9yID0gYmFja0NvbG9yOworICAgICAgICAgICAgR3JhcGhpY3MgZyA9IGZIb3N0LmdldEdyYXBoaWNzKCk7CisgICAgICAgICAgICBpZiAoZyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgcGFpbnQoZyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBPYmplY3QgZ2V0V2l0aERlZmF1bHQoT2JqZWN0IGtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlTWFwIHN0eWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVNYXAgZGVmYXVsdHMpIHsKKyAgICAgICAgT2JqZWN0IHZhbHVlID0gc3R5bGUuZ2V0KGtleSk7CisgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGRlZmF1bHRzLmdldChrZXkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBmbG9hdCBnZXRGbG9hdFdpdGhEZWZhdWx0KE9iamVjdCBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVNYXAgc3R5bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVNYXAgZGVmYXVsdHMpIHsKKyAgICAgICAgT2JqZWN0IHZhbHVlID0gZ2V0V2l0aERlZmF1bHQoa2V5LCBzdHlsZSwgZGVmYXVsdHMpOworICAgICAgICByZXR1cm4gKChGbG9hdCl2YWx1ZSkuZmxvYXRWYWx1ZSgpOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHZvaWQgc2V0TGVmdFRvUmlnaHQoYm9vbGVhbiBsZWZ0VG9SaWdodCwgYm9vbGVhbiB1cGRhdGUpIHsKKyAgICAgICAgCisgICAgICAgIGlmIChmTGVmdFRvUmlnaHQgIT0gbGVmdFRvUmlnaHQpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZkxlZnRUb1JpZ2h0ID0gbGVmdFRvUmlnaHQ7CisgICAgICAgICAgICByZWRyYXdTZWxmKHVwZGF0ZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgc2V0Rm9ybWF0V2lkdGgoaW50IGZvcm1hdFdpZHRoLCBib29sZWFuIHVwZGF0ZSkgeworICAgICAgICAKKyAgICAgICAgaWYgKGZGb3JtYXRXaWR0aCAhPSBmb3JtYXRXaWR0aCkgeworICAgICAgICAgICAgCisgICAgICAgICAgICBmVHJhaWxpbmdNYXJnaW5Qb3NpdGlvbiArPSAoZm9ybWF0V2lkdGggLSBmRm9ybWF0V2lkdGgpOworICAgICAgICAgICAgZkZvcm1hdFdpZHRoID0gZm9ybWF0V2lkdGg7CisgICAgICAgICAgICByZWRyYXdTZWxmKHVwZGF0ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogU2V0IFRhYlJ1bGVyIGZyb20gdmFsdWVzIGluIHBhcmFncmFwaFN0eWxlLiAgT25seSBUYWJSdWxlclVwZGF0ZXIKKyAgICAgKiBzaG91bGQgY2FsbCB0aGlzIG1ldGhvZC4KKyAgICAgKiBAcGFyYW0gcGFyYWdyYXBoU3R5bGUgdGhlIHBhcmFncmFwaCBzdHlsZSB3aGljaCB0aGUgVGFiUnVsZXIgd2lsbAorICAgICAqICAgICByZWZsZWN0CisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIHNldChBdHRyaWJ1dGVNYXAgcGFyYWdyYXBoU3R5bGUsIGJvb2xlYW4gdXBkYXRlKSB7CisKKyAgICAgICAgQXR0cmlidXRlTWFwIHBhbmVsRGVmYXVsdHM7CisgICAgICAgIAorICAgICAgICBpZiAoZlRleHRQYW5lbD09bnVsbCkgeworICAgICAgICAgICAgcGFuZWxEZWZhdWx0cyA9IFRleHRQYW5lbC5nZXREZWZhdWx0U2V0dGluZ3MoKS5nZXREZWZhdWx0VmFsdWVzKCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgcGFuZWxEZWZhdWx0cyA9IGZUZXh0UGFuZWwuZ2V0RGVmYXVsdFZhbHVlcygpOworICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgaW50IGxlYWRpbmdNYXJnaW4gPSAgKGludCkgZ2V0RmxvYXRXaXRoRGVmYXVsdChUZXh0QXR0cmlidXRlLkxFQURJTkdfTUFSR0lOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFncmFwaFN0eWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVsRGVmYXVsdHMpOworICAgICAgICBpbnQgZmlyc3RMaW5lSW5kZW50ID0gKGludCkgZ2V0RmxvYXRXaXRoRGVmYXVsdChUZXh0QXR0cmlidXRlLkZJUlNUX0xJTkVfSU5ERU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhZ3JhcGhTdHlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFuZWxEZWZhdWx0cyk7CisgICAgICAgIGludCB0cmFpbGluZ01hcmdpbiA9IChpbnQpIGdldEZsb2F0V2l0aERlZmF1bHQoVGV4dEF0dHJpYnV0ZS5UUkFJTElOR19NQVJHSU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYWdyYXBoU3R5bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFuZWxEZWZhdWx0cyk7CisKKyAgICAgICAgTVRhYlJ1bGVyIHJ1bGVyID0gKE1UYWJSdWxlcikgZ2V0V2l0aERlZmF1bHQoVGV4dEF0dHJpYnV0ZS5UQUJfUlVMRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFncmFwaFN0eWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYW5lbERlZmF1bHRzKTsKKworICAgICAgICBpbnQgb3VyRmxpID0gbGVhZGluZ01hcmdpbiArIGZpcnN0TGluZUluZGVudDsKKyAgICAgICAgaW50IG91clRtcCA9IGZGb3JtYXRXaWR0aCAtIHRyYWlsaW5nTWFyZ2luOworICAgICAgICAKKyAgICAgICAgaWYgKGxlYWRpbmdNYXJnaW4gPT0gZkxlYWRpbmdNYXJnaW4gJiYKKyAgICAgICAgICAgICAgICBmRmlyc3RMaW5lSW5kZW50ID09IG91ckZsaSAmJgorICAgICAgICAgICAgICAgIGZUcmFpbGluZ01hcmdpblBvc2l0aW9uID09IG91clRtcCAmJgorICAgICAgICAgICAgICAgIHJ1bGVyLmVxdWFscyhmUnVsZXIpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZMZWFkaW5nTWFyZ2luID0gbGVhZGluZ01hcmdpbjsKKyAgICAgICAgZkZpcnN0TGluZUluZGVudCA9IG91ckZsaTsKKyAgICAgICAgZlRyYWlsaW5nTWFyZ2luUG9zaXRpb24gPSBvdXJUbXA7CisgICAgICAgIGZSdWxlciA9IHJ1bGVyOworICAgIAorICAgICAgICByZWRyYXdTZWxmKHVwZGF0ZSk7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgdm9pZCByZWRyYXdTZWxmKGJvb2xlYW4gZHJhd05vdykgeworCisgICAgICAgIGZJbWFnZUNhY2hlLnNldFZhbGlkKGZhbHNlKTsKKworICAgICAgICBHcmFwaGljcyBnID0gZkhvc3QuZ2V0R3JhcGhpY3MoKTsKKyAgICAgICAgaWYgKGcgIT0gbnVsbCkKKyAgICAgICAgICAgIHBhaW50KGcpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBkZWJ1Z2dpbmcgaW5mby4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworCisgICAgICAgIHJldHVybiAiVGFiUnVsZXJ7ZkxlYWRpbmdNYXJnaW49IitmTGVhZGluZ01hcmdpbisKKyAgICAgICAgICAgICAgICAifXtmRmlyc3RMaW5lSW5kZW50PSIrZkZpcnN0TGluZUluZGVudCsKKyAgICAgICAgICAgICAgICAifXtmRm9ybWF0V2lkdGg9IitmRm9ybWF0V2lkdGgrCisgICAgICAgICAgICAgICAgIn17ZlRyYWlsaW5nTWFyZ2luUG9zaXRpb249IitmVHJhaWxpbmdNYXJnaW5Qb3NpdGlvbisKKyAgICAgICAgICAgICAgICAifXtmUnVsZXI9IitmUnVsZXIrCisgICAgICAgICAgICAgICAgIn0iOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgTVRhYlJ1bGVyIHJlcHJlc2VudGVkIGJ5IHRoaXMgVGFiUnVsZXIuCisgICAgICogQHJldHVybiB0aGUgTVRhYlJ1bGVyIHJlcHJlc2VudGVkIGJ5IHRoaXMgVGFiUnVsZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgTVRhYlJ1bGVyIGdldFJ1bGVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiBmUnVsZXI7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBsZWFkaW5nIG1hcmdpbiBvZiB0aGlzIFRhYlJ1bGVyLgorICAgICAqIEByZXR1cm4gdGhlIGxlYWRpbmcgbWFyZ2luIG9mIHRoaXMgVGFiUnVsZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldExlYWRpbmdNYXJnaW4oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZMZWFkaW5nTWFyZ2luOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgZmlyc3QgbGluZSBpbmRlbnQgb2YgdGhpcyBUYWJSdWxlci4KKyAgICAgKiBAcmV0dXJuIHRoZSBmaXJzdCBsaW5lIGluZGVudCBvZiB0aGlzIFRhYlJ1bGVyCisgICAgICovCisgICAgcHVibGljIGludCBnZXRGaXJzdExpbmVJbmRlbnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZGaXJzdExpbmVJbmRlbnQgLSBmTGVhZGluZ01hcmdpbjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIHRyYWlsaW5nIG1hcmdpbiBvZiB0aGlzIFRhYlJ1bGVyLgorICAgICAqIEByZXR1cm4gdGhlIHRyYWlsaW5nIG1hcmdpbiBvZiB0aGlzIFRhYlJ1bGVyCisgICAgICovCisgICAgcHVibGljIGZpbmFsIGludCBnZXRUcmFpbGluZ01hcmdpbigpCisgICAgeworICAgICAgICByZXR1cm4gZkZvcm1hdFdpZHRoIC0gZlRyYWlsaW5nTWFyZ2luUG9zaXRpb247CisgICAgfQorICAgIAorICAgIHByaXZhdGUgaW50IHZpc3VhbFRvUnVsZXJQb3MoaW50IHZpc1BvcykgeworICAgICAgICAKKyAgICAgICAgaWYgKGZMZWZ0VG9SaWdodCkgeworICAgICAgICAgICAgcmV0dXJuIHZpc1BvcyAtIGZPcmlnaW47CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gZk9yaWdpbiArIGZGb3JtYXRXaWR0aCAtIHZpc1BvczsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwcml2YXRlIGludCBydWxlclRvVmlzdWFsUG9zKGludCBydWxlclBvcykgeworICAgICAgICAKKyAgICAgICAgaWYgKGZMZWZ0VG9SaWdodCkgeworICAgICAgICAgICAgcmV0dXJuIGZPcmlnaW4gKyBydWxlclBvczsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBmT3JpZ2luICsgZkZvcm1hdFdpZHRoIC0gcnVsZXJQb3M7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBpbnQgZGlyTXVsdCgpIHsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBmTGVmdFRvUmlnaHQ/IDEgOiAtMTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gdGFiUG9zaXRpb24gdGhlIGxvZ2ljYWwgKHJ1bGVyKSBwb3NpdGlvbiBvZiB0aGUgdGFiCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIGRyYXdUYWIoR3JhcGhpY3MgZywgaW50IHRhYlBvc2l0aW9uLCBieXRlIHRhYlR5cGUsIGludCB0YWJUb3AsIGludCB0YWJCb3R0b20pCisgICAgeworICAgICAgICBpbnQgcG9zID0gcnVsZXJUb1Zpc3VhbFBvcyh0YWJQb3NpdGlvbik7CisgICAgICAgIGludCB3aWQgPSAwOworICAgICAgICBzd2l0Y2ggKHRhYlR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgVGFiU3RvcC5rTGVhZGluZzogd2lkID0gMzsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFRhYlN0b3Aua0NlbnRlcjogd2lkID0gMDsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFRhYlN0b3Aua1RyYWlsaW5nOiB3aWQgPSAtMzsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFRhYlN0b3Aua0RlY2ltYWw6IHdpZCA9IDA7IGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDogYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgd2lkICo9IGRpck11bHQoKTsKKyAgICAgICAgCisgICAgICAgIGlmICh0YWJUeXBlICE9IFRhYlN0b3Aua0F1dG8pIHsKKyAgICAgICAgICAgIGcuZHJhd0xpbmUocG9zLCB0YWJUb3AsIHBvcywgdGFiQm90dG9tKTsKKyAgICAgICAgICAgIGlmICh3aWQgIT0gMCkKKyAgICAgICAgICAgICAgICBnLmRyYXdMaW5lKHBvcywgdGFiQm90dG9tLCBwb3MgKyB3aWQsIHRhYkJvdHRvbSk7CisgICAgICAgIH0KKyAgICAgICAgZy5kcmF3TGluZShwb3MtMiwgdGFiVG9wKzIsIHBvcywgdGFiVG9wKTsKKyAgICAgICAgZy5kcmF3TGluZShwb3MsIHRhYlRvcCwgcG9zKzIsIHRhYlRvcCsyKTsKKyAgICAgICAgaWYgKHRhYlR5cGUgPT0gVGFiU3RvcC5rRGVjaW1hbCkgeworICAgICAgICAgICAgZy5kcmF3TGluZShwb3MgKyAzLCB0YWJCb3R0b20sIHBvcyArIDQsIHRhYkJvdHRvbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgZHJhd0xNKEdyYXBoaWNzIGcpCisgICAgeworICAgICAgICBpbnQgcG9zID0gcnVsZXJUb1Zpc3VhbFBvcyhmTGVhZGluZ01hcmdpbik7CisgICAgICAgIGludFtdIHhwdHMgPSB7IHBvcywgcG9zLCBwb3MgKyAoNCpkaXJNdWx0KCkpLCBwb3MgfTsKKyAgICAgICAgaW50W10geXB0cyA9IHsgZkJhc2VsaW5lICsgMTIsIGZCYXNlbGluZSArIDcsIGZCYXNlbGluZSArIDcsIGZCYXNlbGluZSArIDEyIH07CisgICAgICAgIGcuZmlsbFBvbHlnb24oeHB0cywgeXB0cywgMyk7CisgICAgICAgIGcuZHJhd1BvbHlnb24oeHB0cywgeXB0cywgNCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGRyYXdGTEkoR3JhcGhpY3MgZykKKyAgICB7CisgICAgICAgIGludCBwb3MgPSBydWxlclRvVmlzdWFsUG9zKGZGaXJzdExpbmVJbmRlbnQpOworICAgICAgICBpbnRbXSB4cHRzID0geyBwb3MsIHBvcywgcG9zICsgKDQqZGlyTXVsdCgpKSwgcG9zIH07CisgICAgICAgIGludFtdIHlwdHMgPSB7IGZCYXNlbGluZSwgZkJhc2VsaW5lICsgNSwgZkJhc2VsaW5lICsgNSwgZkJhc2VsaW5lIH07CisgICAgICAgIGcuZmlsbFBvbHlnb24oeHB0cywgeXB0cywgMyk7CisgICAgICAgIGcuZHJhd1BvbHlnb24oeHB0cywgeXB0cywgNCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGRyYXdSTShHcmFwaGljcyBnKQorICAgIHsKKyAgICAgICAgaW50IHBvcyA9IHJ1bGVyVG9WaXN1YWxQb3MoZlRyYWlsaW5nTWFyZ2luUG9zaXRpb24pOworICAgICAgICBpbnRbXSB4cHRzID0geyBwb3MsIHBvcywgcG9zIC0gKDYqZGlyTXVsdCgpKSwgcG9zIH07CisgICAgICAgIGludFtdIHlwdHMgPSB7IGZCYXNlbGluZSwgZkJhc2VsaW5lICsgMTIsIGZCYXNlbGluZSArIDYsIGZCYXNlbGluZSB9OworICAgICAgICBnLmZpbGxQb2x5Z29uKHhwdHMsIHlwdHMsIDMpOworICAgICAgICBnLmRyYXdQb2x5Z29uKHhwdHMsIHlwdHMsIDQpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGludCBhbGlnbkludChpbnQgdmFsdWUpIHsKKyAgICAgICAgCisgICAgICAgIHJldHVybiAoaW50KSgoaW50KSh2YWx1ZSAvIDQuNSkgKiA0LjUpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludFtdIGZnTGVuZ3RocyA9IHsgMTAsIDIsIDQsIDIsIDYsIDIsIDQsIDIgfTsKKworICAgIC8qKgorICAgICAqIENvbXBvbmVudCBtZXRob2Qgb3ZlcnJpZGUuCisgICAgICovCisgICAgcHVibGljIHZvaWQgcGFpbnQoR3JhcGhpY3MgZykKKyAgICB7CisgICAgICAgIERpbWVuc2lvbiBzaXplID0gZkhvc3QuZ2V0U2l6ZSgpOworCisgICAgICAgIGludCB3aWR0aCA9IHNpemUud2lkdGg7CisgICAgICAgIGludCBiYXNlbGluZSA9IGZCYXNlbGluZTsKKyAgICAgICAgaW50IGJhc2VsaW5lMiA9IGJhc2VsaW5lICsgMjsKKyAgICAgICAgaW50IGJhc2VsaW5lMTAgPSBiYXNlbGluZSArIDEwOworICAgICAgICBpbnQgYmFzZWxpbmUxMiA9IGJhc2VsaW5lICsgMTI7CisKKyAgICAgICAgaWYgKCFmSW1hZ2VDYWNoZS5pc1ZhbGlkKCkpIHsKKworICAgICAgICAgICAgR3JhcGhpY3MgZ0NhY2hlID0gZkltYWdlQ2FjaGUuZ2V0R3JhcGhpY3Mod2lkdGgsIGJhc2VsaW5lMTIgKyAxKTsKKyAgICAgICAgICAgIGlmIChnQ2FjaGUgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gc2V0IGJhY2tncm91bmQgY29sb3IKKworICAgICAgICAgICAgZ0NhY2hlLnNldENvbG9yKGZCYWNrQ29sb3IpOworICAgICAgICAgICAgZ0NhY2hlLnNldFBhaW50TW9kZSgpOworICAgICAgICAgICAgZ0NhY2hlLmZpbGxSZWN0KDAsIDAsIHdpZHRoLCBiYXNlbGluZTEyICsgMSk7CisKKyAgICAgICAgICAgIC8vIHBhaW50IHRpY2tzCisKKyAgICAgICAgICAgIGdDYWNoZS5zZXRDb2xvcihDb2xvci5ibGFjayk7CisgICAgICAgICAgICBnQ2FjaGUuZHJhd0xpbmUoMCwgMCwgd2lkdGgsIDApOworICAgICAgICAgICAgZ0NhY2hlLmRyYXdMaW5lKDAsIGJhc2VsaW5lLCB3aWR0aCwgYmFzZWxpbmUpOworCisgICAgICAgICAgICBpbnRbXSBsZW5ndGhzID0gZmdMZW5ndGhzOworCisgICAgICAgICAgICBpbnQgaW5kZXggPSAwOworICAgICAgICAgICAgaW50IGluY2hudW0gPSAwOworICAgICAgICAgICAgRm9udE1ldHJpY3MgZm0gPSBudWxsOworICAgICAgICAgICAgaWYgKCFmTGVmdFRvUmlnaHQpIHsKKyAgICAgICAgICAgICAgICBmbSA9IGdDYWNoZS5nZXRGb250TWV0cmljcygpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZGb3JtYXRXaWR0aDsgaSArPSA5KSB7CisgICAgICAgICAgICAgICAgaW50IGxlbiA9IGxlbmd0aHNbaW5kZXhdOworICAgICAgICAgICAgICAgIGludCBwb3MgPSBydWxlclRvVmlzdWFsUG9zKGkpOworICAgICAgICAgICAgICAgIGdDYWNoZS5kcmF3TGluZShwb3MsIGJhc2VsaW5lLCBwb3MsIGJhc2VsaW5lIC0gbGVuKTsKKworICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBzdHIgPSBJbnRlZ2VyLnRvU3RyaW5nKGluY2hudW0rKyk7CisgICAgICAgICAgICAgICAgICAgIGludCBkcmF3WDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZMZWZ0VG9SaWdodCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZHJhd1ggPSBwb3MgKyAyOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgZHJhd1ggPSBwb3MgLSBmbS5zdHJpbmdXaWR0aChzdHIpIC0gMjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGdDYWNoZS5kcmF3U3RyaW5nKHN0ciwgZHJhd1gsIGJhc2VsaW5lIC0gMik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKCsraW5kZXggPT0gbGVuZ3Rocy5sZW5ndGgpCisgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gMDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gcGFpbnQgdGFicworICAgICAgICAgICAgVGFiU3RvcCB0YWIgPSBmUnVsZXIuZmlyc3RUYWIoKTsKKyAgICAgICAgICAgIHdoaWxlICh0YWIgIT0gbnVsbCAmJiB0YWIuZ2V0UG9zaXRpb24oKSA8IGZUcmFpbGluZ01hcmdpblBvc2l0aW9uKSB7CisgICAgICAgICAgICAgICAgYm9vbGVhbiBkb2RyYXcgPSB0cnVlOworICAgICAgICAgICAgICAgIGlmICh0YWIuZ2V0VHlwZSgpID09IFRhYlN0b3Aua0F1dG8pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRhYi5nZXRQb3NpdGlvbigpIDw9IE1hdGgubWF4KGZMZWFkaW5nTWFyZ2luLCBmRmlyc3RMaW5lSW5kZW50KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvZHJhdyA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0YWIuZ2V0UG9zaXRpb24oKSA+PSBmVHJhaWxpbmdNYXJnaW5Qb3NpdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvZHJhdyA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChkb2RyYXcpCisgICAgICAgICAgICAgICAgICAgIGRyYXdUYWIoZ0NhY2hlLCB0YWIuZ2V0UG9zaXRpb24oKSwgdGFiLmdldFR5cGUoKSwgYmFzZWxpbmUyLCBiYXNlbGluZTEwKTsKKworICAgICAgICAgICAgICAgIHRhYiA9IGZSdWxlci5uZXh0VGFiKHRhYi5nZXRQb3NpdGlvbigpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZ0NhY2hlLmRyYXdMaW5lKDAsIGJhc2VsaW5lMTIsIHdpZHRoLCBiYXNlbGluZTEyKTsKKworICAgICAgICAgICAgLy8gcGFpbnQgb3RoZXJzIGV4Y2VwdCBmb3IgdHJhY2tlZCBpdGVtCisgICAgICAgICAgICBpZiAoZlRyYWNrSXRlbSAhPSBrVHJhY2tMTSkgZHJhd0xNKGdDYWNoZSk7CisgICAgICAgICAgICBpZiAoZlRyYWNrSXRlbSAhPSBrVHJhY2tUTSkgZHJhd1JNKGdDYWNoZSk7CisgICAgICAgICAgICBpZiAoZlRyYWNrSXRlbSAhPSBrVHJhY2tGTEkgJiYgZlRyYWNrSXRlbSAhPSBrVHJhY2tMTSkgZHJhd0ZMSShnQ2FjaGUpOworICAgICAgICAgICAgZkltYWdlQ2FjaGUuc2V0VmFsaWQodHJ1ZSk7CisgICAgICAgIH0KKworICAgICAgICBmSW1hZ2VDYWNoZS5kcmF3SW1hZ2UoZywgMCwgMCwgQ29sb3IubGlnaHRHcmF5KTsKKworICAgICAgICBzd2l0Y2ggKGZUcmFja0l0ZW0pIHsKKyAgICAgICAgICAgIGNhc2Uga1RyYWNrVGFiOiBpZiAoZlRyYWNrVmlzaWJsZSkgZHJhd1RhYihnLCBmVHJhY2tUYWIuZlBvc2l0aW9uLCBmVHJhY2tUYWIuZlR5cGUsIGJhc2VsaW5lMiwgYmFzZWxpbmUxMCk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBrVHJhY2tMTTogZHJhd0xNKGcpOyBkcmF3RkxJKGcpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2Uga1RyYWNrVE06IGRyYXdSTShnKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGtUcmFja0ZMSTogZHJhd0ZMSShnKTsgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OiBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIE1vdXNlTGlzdGVuZXIgbWV0aG9kLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIG1vdXNlQ2xpY2tlZChNb3VzZUV2ZW50IGUpIHt9CisgICAgLyoqCisgICAgICogTW91c2VMaXN0ZW5lciBtZXRob2QuCisgICAgICovCisgICAgcHVibGljIHZvaWQgbW91c2VFbnRlcmVkKE1vdXNlRXZlbnQgZSkge30KKyAgICAvKioKKyAgICAgKiBNb3VzZUxpc3RlbmVyIG1ldGhvZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBtb3VzZUV4aXRlZChNb3VzZUV2ZW50IGUpIHt9CisKKyAgICAvKioKKyAgICAgKiBNb3VzZUxpc3RlbmVyIG1ldGhvZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBtb3VzZVByZXNzZWQoTW91c2VFdmVudCBlKQorICAgIHsKKyAgICAgICAgLy8gZmluZCBvdXQgaWYgd2UgaGl0IGEgdGFic3RvcAorICAgICAgICBpbnQgeCA9IHZpc3VhbFRvUnVsZXJQb3MoZS5nZXRYKCkpOworICAgICAgICBpbnQgeSA9IGUuZ2V0WSgpOworCisgICAgICAgIGlmICh5ID4gZkJhc2VsaW5lICYmIHkgPCBmQmFzZWxpbmUgKyAxMikgeworICAgICAgICAgICAgaWYgKHkgPj0gZkJhc2VsaW5lICsgNyAmJiB4ID49IGZMZWFkaW5nTWFyZ2luIC0gMyAmJiB4IDw9IGZMZWFkaW5nTWFyZ2luICsgMykgeworICAgICAgICAgICAgICAgIGZUcmFja0l0ZW0gPSBrVHJhY2tMTTsKKyAgICAgICAgICAgICAgICBmVHJhY2tEZWx0YSA9IGZMZWFkaW5nTWFyZ2luIC0geDsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoeSA8IGZCYXNlbGluZSArIDcgJiYgeCA+PSBmRmlyc3RMaW5lSW5kZW50IC0gMyAmJiB4IDw9IGZGaXJzdExpbmVJbmRlbnQgKyAzKSB7CisgICAgICAgICAgICAgICAgZlRyYWNrSXRlbSA9IGtUcmFja0ZMSTsKKyAgICAgICAgICAgICAgICBmVHJhY2tEZWx0YSA9IGZGaXJzdExpbmVJbmRlbnQgLSB4OworICAgICAgICAgICAgfSBlbHNlIGlmICh4ID49IGZUcmFpbGluZ01hcmdpblBvc2l0aW9uIC0gMyAmJiB4IDw9IGZUcmFpbGluZ01hcmdpblBvc2l0aW9uICsgMykgeworICAgICAgICAgICAgICAgIGZUcmFja0l0ZW0gPSBrVHJhY2tUTTsKKyAgICAgICAgICAgICAgICBmVHJhY2tEZWx0YSA9IGZUcmFpbGluZ01hcmdpblBvc2l0aW9uIC0geDsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZS5pc0NvbnRyb2xEb3duKCkpIHsKKyAgICAgICAgICAgICAgICBmVHJhY2tJdGVtID0ga1RyYWNrVGFiOworICAgICAgICAgICAgICAgIGZUcmFja1RhYiA9IG5ldyBUYWJTdG9wQnVmZmVyKGFsaWduSW50KHgpLCBUYWJTdG9wLmtMZWFkaW5nKTsKKyAgICAgICAgICAgICAgICBmVHJhY2tEZWx0YSA9IGZUcmFja1RhYi5mUG9zaXRpb24gLSB4OworICAgICAgICAgICAgICAgIGZUcmFja1Zpc2libGUgPSB0cnVlOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBUYWJTdG9wIHRhYiA9IGZSdWxlci5maXJzdFRhYigpOworICAgICAgICAgICAgICAgIHdoaWxlICh0YWIuZ2V0VHlwZSgpICE9IFRhYlN0b3Aua0F1dG8pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHggPCB0YWIuZ2V0UG9zaXRpb24oKSAtIDMpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHggPCB0YWIuZ2V0UG9zaXRpb24oKSArIDMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZPbGRUYWIgPSB0YWI7CisgICAgICAgICAgICAgICAgICAgICAgICBmVHJhY2tUYWIgPSBuZXcgVGFiU3RvcEJ1ZmZlcih0YWIpOworICAgICAgICAgICAgICAgICAgICAgICAgZlJ1bGVyID0gZlJ1bGVyLnJlbW92ZVRhYihmT2xkVGFiLmdldFBvc2l0aW9uKCkpOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5nZXRDbGlja0NvdW50KCkgPiAxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChmVHJhY2tUYWIuZlR5cGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBUYWJTdG9wLmtMZWFkaW5nOiBmVHJhY2tUYWIuZlR5cGUgPSBUYWJTdG9wLmtDZW50ZXI7IGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFRhYlN0b3Aua0NlbnRlcjogZlRyYWNrVGFiLmZUeXBlID0gVGFiU3RvcC5rVHJhaWxpbmc7IGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFRhYlN0b3Aua1RyYWlsaW5nOiBmVHJhY2tUYWIuZlR5cGUgPSBUYWJTdG9wLmtEZWNpbWFsOyBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBUYWJTdG9wLmtEZWNpbWFsOiBmVHJhY2tUYWIuZlR5cGUgPSBUYWJTdG9wLmtMZWFkaW5nOyBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgZlRyYWNrSXRlbSA9IGtUcmFja1RhYjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZUcmFja0RlbHRhID0gdGFiLmdldFBvc2l0aW9uKCkgLSB4OworICAgICAgICAgICAgICAgICAgICAgICAgZlRyYWNrVmlzaWJsZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIHRhYiA9IGZSdWxlci5uZXh0VGFiKHRhYi5nZXRQb3NpdGlvbigpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChmVHJhY2tJdGVtICE9IGtUcmFja05vbmUpIHsKKyAgICAgICAgICAgICAgICBmSW1hZ2VDYWNoZS5zZXRWYWxpZChmYWxzZSk7CisgICAgICAgICAgICAgICAgcGFpbnQoZkhvc3QuZ2V0R3JhcGhpY3MoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogTW91c2VMaXN0ZW5lciBtZXRob2QuCisgICAgICovCisgICAgcHVibGljIHZvaWQgbW91c2VEcmFnZ2VkKE1vdXNlRXZlbnQgZSkKKyAgICB7CisgICAgICAgIGludCB4ID0gdmlzdWFsVG9SdWxlclBvcyhlLmdldFgoKSk7CisgICAgICAgIGludCB5ID0gZS5nZXRZKCk7CisKKyAgICAgICAgaWYgKGZUcmFja0l0ZW0gIT0ga1RyYWNrTm9uZSkgeworICAgICAgICAgICAgYm9vbGVhbiByZXBhaW50ID0gZmFsc2U7CisgICAgICAgICAgICBib29sZWFuIGlucmFuZ2UgPSB5ID4gZkJhc2VsaW5lICYmIHkgPCBmQmFzZWxpbmUgKyAxMjsKKyAgICAgICAgICAgIGJvb2xlYW4gaW5iaWdyYW5nZSA9IHkgPiAwICYmIHkgPCBmSG9zdC5nZXRTaXplKCkuaGVpZ2h0ICsgMjA7CisgICAgICAgICAgICBpbnQgbmV3cG9zID0gYWxpZ25JbnQoeCArIGZUcmFja0RlbHRhKTsKKyAgICAgICAgICAgIGlmIChuZXdwb3MgPCAwKQorICAgICAgICAgICAgICAgIG5ld3BvcyA9IDA7CisKKyAgICAgICAgICAgIHN3aXRjaCAoZlRyYWNrSXRlbSkgeworICAgICAgICAgICAgICAgIGNhc2Uga1RyYWNrVGFiOiB7CisgICAgICAgICAgICAgICAgICAgIGlmIChpbnJhbmdlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXBhaW50ID0gIWZUcmFja1Zpc2libGU7CisgICAgICAgICAgICAgICAgICAgICAgICBmVHJhY2tWaXNpYmxlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdwb3MgIT0gZlRyYWNrVGFiLmZQb3NpdGlvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZUcmFja1RhYi5mUG9zaXRpb24gPSBuZXdwb3M7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwYWludCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZlRyYWNrVmlzaWJsZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZlRyYWNrVmlzaWJsZSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgcmVwYWludCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGJyZWFrOworCisvKiBJdCB3b3VsZCBiZSBuaWNlIHRvIG9wdGlvbmFsbHkgdHJhY2sgdGhlIG1hcmdpbiAnaW5kZXBlbmRlbnRseScgb2YgdGhlIGZpcnN0IGxpbmUgaW5kZW50LgorIFVuZm9ydHVuYXRlbHkgdGhpcyBtYWtlcyBmb3IgbW9yZSB3b3JrIHdoZW4gd2UgaGF2ZSBtdWx0aXBsZSBwYXJhZ3JhcGggc3R5bGVzIHNlbGVjdGVkLgorIFNpbmNlIGludGVybmFsbHkgdGhlIGZpcnN0IGxpbmUgaW5kZW50IGlzIHJlbGF0aXZlIHRvIHRoZSBtYXJnaW4sIG1vdmluZyB0aGUgbWFyZ2luCisgaW5kZXBlbmRlbnRseSBzbyB0aGF0IGFsbCBhZmZlY3RlZCBwYXJhZ3JhcGhzIHNoYXJlIHRoZSBzYW1lIG1hcmdpbiBidXQgcmV0YWluIGZpcnN0CisgbGluZSBpbmRlbnRzIGluIHRoZSAnc2FtZScgcG9zaXRpb25zIG1lYW5zIHRoYXQgSSBuZWVkIHRvIGFsc28gYWRqdXN0IHRoZSBmaXJzdCBsaW5lCisgaW5kZW50cyBpbiBlYWNoIHBhcmFncmFwaCBieSBzb21lIGRlbHRhLiBJJ20gbm90IHJlYWR5IHRvIGRvIHRoYXQgeWV0LiAqLworCisgICAgICAgICAgICAgICAgY2FzZSBrVHJhY2tMTTogeworICAgICAgICAgICAgICAgICAgICBpZiAoaW5iaWdyYW5nZSAmJiBuZXdwb3MgIT0gZkxlYWRpbmdNYXJnaW4pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZGaXJzdExpbmVJbmRlbnQgKz0gbmV3cG9zIC0gZkxlYWRpbmdNYXJnaW47CisgICAgICAgICAgICAgICAgICAgICAgICBmTGVhZGluZ01hcmdpbiA9IG5ld3BvczsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcGFpbnQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2Uga1RyYWNrRkxJOiB7CisgICAgICAgICAgICAgICAgICAgIGlmIChpbmJpZ3JhbmdlICYmIG5ld3BvcyAhPSBmRmlyc3RMaW5lSW5kZW50KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmRmlyc3RMaW5lSW5kZW50ID0gbmV3cG9zOworICAgICAgICAgICAgICAgICAgICAgICAgcmVwYWludCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGJyZWFrOworCisgICAgICAgICAgICAgICAgY2FzZSBrVHJhY2tUTTogeworICAgICAgICAgICAgICAgICAgICBpZiAoaW5iaWdyYW5nZSAmJiBuZXdwb3MgIT0gZlRyYWlsaW5nTWFyZ2luUG9zaXRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZUcmFpbGluZ01hcmdpblBvc2l0aW9uID0gbmV3cG9zOworICAgICAgICAgICAgICAgICAgICAgICAgcmVwYWludCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGJyZWFrOworICAgICAgICAgICAgfQorCisKKyAgICAgICAgICAgIGlmIChyZXBhaW50KQorICAgICAgICAgICAgICAgIHBhaW50KGZIb3N0LmdldEdyYXBoaWNzKCkpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogTW91c2VMaXN0ZW5lciBtZXRob2QuCisgICAgICovCisgICAgcHVibGljIHZvaWQgbW91c2VSZWxlYXNlZChNb3VzZUV2ZW50IGUpCisgICAgeworICAgICAgICBpZiAoZlRyYWNrSXRlbSAhPSBrVHJhY2tOb25lKSB7CisgICAgICAgICAgICBpZiAoZlRyYWNrSXRlbSA9PSBrVHJhY2tUYWIgJiYgZlRyYWNrVmlzaWJsZSkgeworICAgICAgICAgICAgICAgIGZSdWxlciA9IGZSdWxlci5hZGRUYWIoZlRyYWNrVGFiLmdldFRhYlN0b3AoKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGZUcmFja1RhYiA9IG51bGw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG5vdGlmeShmVHJhY2tJdGVtKTsKKworICAgICAgICAgICAgZlRyYWNrSXRlbSA9IGtUcmFja05vbmU7CisgICAgICAgICAgICBmVHJhY2tUYWIgPSBudWxsOworICAgICAgICAgICAgZk9sZFRhYiA9IG51bGw7CisKKyAgICAgICAgICAgIGZJbWFnZUNhY2hlLnNldFZhbGlkKGZhbHNlKTsKKyAgICAgICAgICAgIHBhaW50KGZIb3N0LmdldEdyYXBoaWNzKCkpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogTW91c2VMaXN0ZW5lciBtZXRob2QuCisgICAgICovCisgICAgcHVibGljIHZvaWQgbW91c2VNb3ZlZChNb3VzZUV2ZW50IGUpIHt9CisKKyAgICBwcml2YXRlIHZvaWQgbm90aWZ5KGludCBjaGFuZ2UpCisgICAgeworICAgICAgICBpZiAoZlRleHRQYW5lbCAhPSBudWxsKSB7CisKKyAgICAgICAgICAgIFN0eWxlTW9kaWZpZXIgbW9kaWZpZXI7CisKKyAgICAgICAgICAgIGlmIChjaGFuZ2UgPT0ga1RyYWNrVGFiKSB7CisgICAgICAgICAgICAgICAgVGFiU3RvcCBuZXdUYWIgPSBmVHJhY2tUYWI9PW51bGw/IG51bGwgOiBmVHJhY2tUYWIuZ2V0VGFiU3RvcCgpOworICAgICAgICAgICAgICAgIG1vZGlmaWVyID0gbmV3IFRhYlJ1bGVyTW9kaWZpZXIoZk9sZFRhYiwgbmV3VGFiLCBmVGV4dFBhbmVsLmdldERlZmF1bHRWYWx1ZXMoKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBPYmplY3Qga2V5OworICAgICAgICAgICAgICAgIE9iamVjdCB2YWx1ZTsKKworICAgICAgICAgICAgICAgIHN3aXRjaChjaGFuZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBrVHJhY2tMTToKKyAgICAgICAgICAgICAgICAgICAgICAgIGtleSA9IFRleHRBdHRyaWJ1dGUuTEVBRElOR19NQVJHSU47CisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBGbG9hdChnZXRMZWFkaW5nTWFyZ2luKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBrVHJhY2tUTToKKyAgICAgICAgICAgICAgICAgICAgICAgIGtleSA9IFRleHRBdHRyaWJ1dGUuVFJBSUxJTkdfTUFSR0lOOworICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXcgRmxvYXQoZ2V0VHJhaWxpbmdNYXJnaW4oKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICBjYXNlIGtUcmFja0ZMSToKKyAgICAgICAgICAgICAgICAgICAgICAgIGtleSA9IFRleHRBdHRyaWJ1dGUuRklSU1RfTElORV9JTkRFTlQ7CisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBGbG9hdChnZXRGaXJzdExpbmVJbmRlbnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNoYW5nZSBjb2RlLiIpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG1vZGlmaWVyID0gU3R5bGVNb2RpZmllci5jcmVhdGVBZGRNb2RpZmllcihrZXksIHZhbHVlKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZlRleHRQYW5lbC5tb2RpZnlQYXJhZ3JhcGhTdHlsZU9uU2VsZWN0aW9uKG1vZGlmaWVyKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIENvbXBvbmVudCBvdmVycmlkZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgRGltZW5zaW9uIGdldE1pbmltdW1TaXplKCkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgRGltZW5zaW9uKDEwMCwgZkJhc2VsaW5lICsgMTMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbXBvbmVudCBvdmVycmlkZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgRGltZW5zaW9uIGdldFByZWZlcnJlZFNpemUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdldE1pbmltdW1TaXplKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdWlpbXBsL3Jlc291cmNlcy9GcmFtZVJlc291cmNlcy5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdWlpbXBsL3Jlc291cmNlcy9GcmFtZVJlc291cmNlcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjU3YzFlOTQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC91aWltcGwvcmVzb3VyY2VzL0ZyYW1lUmVzb3VyY2VzLmphdmEKQEAgLTAsMCArMSwyMjAgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAyLTIwMDQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC51aWltcGwucmVzb3VyY2VzOworCitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5LZXlFdmVudDsKKworcHVibGljIGZpbmFsIGNsYXNzIEZyYW1lUmVzb3VyY2VzIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisvKgorICogVGhlc2UgU3RyaW5ncyBhcmUga2V5cyB0byBvdGhlciBTdHJpbmcgcmVzb3VyY2VzLgorICovCisgICAgLy8gTWVudSBuYW1lcworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVESVQgPSAiRWRpdCI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0laRSA9ICJTaXplIjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBGT05UID0gIkZvbnQiOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNUWUxFID0gIlN0eWxlIjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBGTFVTSCA9ICJGbHVzaCI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgS0VZTUFQID0gIktleW1hcCI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQUJPVVRfTUVOVSA9ICJBYm91dCI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQklESSA9ICJCaWRpIjsKKyAgICAKKyAgICAvLyBCdXR0b25zCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT0sgPSAiT0siOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIENBTkNFTCA9ICJDYW5jZWwiOworCisgICAgLy8gQ29sb3JzCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQkxBQ0sgPSAiQmxhY2siOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFdISVRFID0gIldoaXRlIjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBHUkVFTiA9ICJHcmVlbiI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQkxVRSA9ICJCbHVlIjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBDWUFOID0gIkN5YW4iOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEdSQVkgPSAiR3JheSI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgREFSS19HUkFZID0gIkRhcmsgR3JheSI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTElHSFRfR1JBWSA9ICJMaWdodCBHcmF5IjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBNQUdFTlRBID0gIk1hZ2VudGEiOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE9SQU5HRSA9ICJPcmFuZ2UiOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBJTksgPSAiUGluayI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUkVEID0gIlJlZCI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgWUVMTE9XID0gIlllbGxvdyI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTk9ORSA9ICJOb25lIjsKKworICAgIC8vIERpYWxvZyB0aXRsZXMgYW5kIG1lc3NhZ2VzCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0VUX1NJWkVfVElUTEUgPSAiU2V0IEZvbnQgU2l6ZSI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0VUX1NJWkVfTEFCRUwgPSAiRm9udCBTaXplOiI7CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTRVRfU1VQRVJTQ1JJUFRfVElUTEUgPSAiU2V0IFN1cGVyc2NyaXB0IjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTRVRfU1VQRVJTQ1JJUFRfTEFCRUwgPSAiU3VwZXJzY3JpcHQ6IjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTRVRfU1VCU0NSSVBUX1RJVExFID0gIlNldCBTdWJzY3JpcHQiOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNFVF9TVUJTQ1JJUFRfTEFCRUwgPSAiU3Vic2NyaXB0OiI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0VUX0ZPUkVHUk9VTkRfVElUTEUgPSAiU2V0IEZvcmVncm91bmQiOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNFVF9GT1JFR1JPVU5EX0xBQkVMID0gIkZvcmVncm91bmQ6IjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTRVRfQkFDS0dST1VORF9USVRMRSA9ICJTZXQgQmFja2dyb3VuZCI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0VUX0JBQ0tHUk9VTkRfTEFCRUwgPSAiQmFja2dyb3VuZDoiOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNFVF9GT05UX1RJVExFID0gIlNldCBGb250IjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTRVRfRk9OVF9MQUJFTCA9ICJGb250OiI7CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBQk9VVF9USVRMRSA9ICJBYm91dCB0aGUgUmljaEVkaXQgQ29udHJvbCI7CisKKyAgICAvLyBUaGlzIGlzIHRoZSBvbmx5IFN0cmluZyB3aGljaCBpcyBub3QgaXRzIG93biB2YWx1ZToKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBQk9VVF9URVhUID0gIkFib3V0IHRleHQiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBBQ1RVQUxfQUJPVVRfVEVYVCA9CisgICAgICAgICJDb3B5cmlnaHQgKEMpIElCTSBDb3JwLiAxOTk2LTIwMDIgQWxsIHJpZ2h0cyByZXNlcnZlZC5cblxuIiArCisgICAgICAgICJKb2huIFJhbGV5XG4iICsKKyAgICAgICAgIlN0ZXBoZW4gRi4gQm9vdGhcbiIgKworICAgICAgICAiRG91ZyBGZWx0XG4iICsKKyAgICAgICAgIkpvaG4gRml0enBhdHJpY2tcbiIgKworICAgICAgICAiUmljaCBHaWxsYW0iOworLyoKKyAqIFRoZSBmb2xsb3dpbmcgU3RyaW5ncyBhcmUga2V5cyB0byBNZW51RGF0YSByZXNvdXJjZXMuICBUaGV5CisgKiBhbHNvIGRvdWJsZSBhcyB0aGUgZGVmYXVsdCBtZW51IGxhYmVsIHRleHQuCisgKi8KKyAgICAvLyBFZGl0IG1lbnUKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBVTkRPID0gIlVuZG8iOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFJFRE8gPSAiUmVkbyI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ1VUID0gIkN1dCI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWSA9ICJDb3B5IjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQQVNURSA9ICJQYXN0ZSI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ0xFQVIgPSAiQ2xlYXIiOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNFTEVDVF9BTEwgPSAiU2VsZWN0IEFsbCI7CisKKyAgICAvLyBGbHVzaCBtZW51CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTEVBRElORyA9ICJMZWFkaW5nIjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBUUkFJTElORyA9ICJUcmFpbGluZyI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ0VOVEVSID0gIkNlbnRlciI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSlVTVElGSUVEID0gIkp1c3RpZmllZCI7CisKKyAgICAvLyBBYm91dCBtZW51CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQUJPVVRfSVRFTSA9ICJBYm91dC4uLiI7CisKKyAgICAvLyBLZXltYXAgbWVudQorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIERFRkFVTFQgPSAiRGVmYXVsdCI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVJBQklDID0gIkFyYWJpYyI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVCUkVXID0gIkhlYnJldyI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSVNSQUVMX05JS1VEID0gIklzcmFlbCBOaWt1ZCI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEhBSV9LRVRNQU5FRSA9ICJUaGFpIEtldG1hbmVlIjsKKworICAgIC8vIFN0eWxlIG1lbnUKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQTEFJTiA9ICJQbGFpbiI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQk9MRCA9ICJCb2xkIjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBJVEFMSUMgPSAiSXRhbGljIjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBVTkRFUkxJTkUgPSAiVW5kZXJsaW5lIjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTVFJJS0VUSFJPVUdIID0gIlN0cmlrZXRocm91Z2giOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNVUEVSU0NSSVBUID0gIlN1cGVyc2NyaXB0IjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTVUJTQ1JJUFQgPSAiU3Vic2NyaXB0IjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTVVBFUlNDUklQVF9ESUFMT0cgPSAiU3VwZXJzY3JpcHQuLi4iOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNVQlNDUklQVF9ESUFMT0cgPSAiU3Vic2NyaXB0Li4uIjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBGT1JFQ09MT1JfRElBTE9HID0gIkZvcmVjb2xvci4uLiI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQkFDS0NPTE9SX0RJQUxPRyA9ICJCYWNrY29sb3IuLi4iOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZPTlRfRElBTE9HID0gIkZvbnQuLi4iOworICAgIAorCisgICAgLy8gU2l6ZSBtZW51CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1RIRVJfRElBTE9HID0gIk90aGVyLi4uIjsKKyAgICAKKyAgICAvLyBCaWRpIG1lbnUKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBERUZBVUxUX0RJUkVDVElPTiA9ICJEZWZhdWx0IFBhcmFncmFwaCBEaXJlY3Rpb24iOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIExUUl9ESVJFQ1RJT04gPSAiTGVmdC10by1yaWdodCBQYXJhZ3JhcGggRGlyZWN0aW9uIjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBSVExfRElSRUNUSU9OID0gIlJpZ2h0LXRvLWxlZnQgUGFyYWdyYXBoIERpcmVjdGlvbiI7CisKKyAgICBwcml2YXRlIHN0YXRpYyBPYmplY3RbXSBtYWtlTWVudURhdGEoU3RyaW5nIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgc2hvcnRDdXRDaGFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2hvcnRDdXRLZXkpIHsKKworICAgICAgICByZXR1cm4gbmV3IE9iamVjdFtdIHsgbmFtZSwgbmV3IE1lbnVEYXRhKG5hbWUsIHNob3J0Q3V0Q2hhciwgc2hvcnRDdXRLZXkpIH07CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgT2JqZWN0W10gbWFrZU1lbnVEYXRhKFN0cmluZyBuYW1lKSB7CisKKyAgICAgICAgcmV0dXJuIG5ldyBPYmplY3RbXSB7IG5hbWUsIG5ldyBNZW51RGF0YShuYW1lKSB9OworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIE9iamVjdFtdIGR1cGxpY2F0ZShPYmplY3Qgb2JqKSB7CisKKyAgICAgICAgcmV0dXJuIG5ldyBPYmplY3RbXSB7IG9iaiwgb2JqIH07CisgICAgfQorCisgICAgcHJvdGVjdGVkIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7CisKKyAgICAgICAgcmV0dXJuIG5ldyBPYmplY3RbXVtdIHsKKyAgICAgICAgICAgIG1ha2VNZW51RGF0YShVTkRPLCAneicsIEtleUV2ZW50LlZLX1opLAorICAgICAgICAgICAgbWFrZU1lbnVEYXRhKFJFRE8sICdyJywgS2V5RXZlbnQuVktfUiksCisgICAgICAgICAgICBtYWtlTWVudURhdGEoQ1VULCAneCcsIEtleUV2ZW50LlZLX1gpLAorICAgICAgICAgICAgbWFrZU1lbnVEYXRhKENPUFksICdjJywgS2V5RXZlbnQuVktfQyksCisgICAgICAgICAgICBtYWtlTWVudURhdGEoUEFTVEUsICd2JywgS2V5RXZlbnQuVktfViksCisgICAgICAgICAgICBtYWtlTWVudURhdGEoQ0xFQVIpLAorICAgICAgICAgICAgbWFrZU1lbnVEYXRhKFNFTEVDVF9BTEwpLAorICAgICAgICAgICAgbWFrZU1lbnVEYXRhKExFQURJTkcpLAorICAgICAgICAgICAgbWFrZU1lbnVEYXRhKENFTlRFUiksCisgICAgICAgICAgICBtYWtlTWVudURhdGEoVFJBSUxJTkcpLAorICAgICAgICAgICAgbWFrZU1lbnVEYXRhKEpVU1RJRklFRCksCisgICAgICAgICAgICBtYWtlTWVudURhdGEoQUJPVVRfSVRFTSksCisgICAgICAgICAgICBtYWtlTWVudURhdGEoREVGQVVMVCksCisgICAgICAgICAgICBtYWtlTWVudURhdGEoSEVCUkVXKSwKKyAgICAgICAgICAgIG1ha2VNZW51RGF0YShBUkFCSUMpLAorICAgICAgICAgICAgbWFrZU1lbnVEYXRhKElTUkFFTF9OSUtVRCksCisgICAgICAgICAgICBtYWtlTWVudURhdGEoVEhBSV9LRVRNQU5FRSksCisgICAgICAgICAgICBtYWtlTWVudURhdGEoUExBSU4pLAorICAgICAgICAgICAgbWFrZU1lbnVEYXRhKEJPTEQsICdiJywgS2V5RXZlbnQuVktfQiksCisgICAgICAgICAgICBtYWtlTWVudURhdGEoSVRBTElDLCAnaScsIEtleUV2ZW50LlZLX0kpLCAvLyB3aHkgZG9lc24ndCB0aGlzIHdvcmsgaW4gU3dpbmc/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGlzIGEgVGFiIGluIEFXVCEhIQorICAgICAgICAgICAgbWFrZU1lbnVEYXRhKFVOREVSTElORSwgJ3UnLCBLZXlFdmVudC5WS19VKSwKKyAgICAgICAgICAgIG1ha2VNZW51RGF0YShTVFJJS0VUSFJPVUdIKSwKKyAgICAgICAgICAgIG1ha2VNZW51RGF0YShTVVBFUlNDUklQVCksCisgICAgICAgICAgICBtYWtlTWVudURhdGEoU1VCU0NSSVBUKSwKKyAgICAgICAgICAgIG1ha2VNZW51RGF0YShTVVBFUlNDUklQVF9ESUFMT0cpLAorICAgICAgICAgICAgbWFrZU1lbnVEYXRhKFNVQlNDUklQVF9ESUFMT0cpLAorICAgICAgICAgICAgbWFrZU1lbnVEYXRhKEZPUkVDT0xPUl9ESUFMT0cpLAorICAgICAgICAgICAgbWFrZU1lbnVEYXRhKEJBQ0tDT0xPUl9ESUFMT0cpLAorICAgICAgICAgICAgbWFrZU1lbnVEYXRhKEZPTlRfRElBTE9HKSwKKyAgICAgICAgICAgIG1ha2VNZW51RGF0YShPVEhFUl9ESUFMT0cpLAorICAgICAgICAgICAgbWFrZU1lbnVEYXRhKERFRkFVTFRfRElSRUNUSU9OKSwKKyAgICAgICAgICAgIG1ha2VNZW51RGF0YShMVFJfRElSRUNUSU9OKSwKKyAgICAgICAgICAgIG1ha2VNZW51RGF0YShSVExfRElSRUNUSU9OKSwKKyAgICAgICAgICAgIGR1cGxpY2F0ZShPSyksCisgICAgICAgICAgICBkdXBsaWNhdGUoQ0FOQ0VMKSwKKyAgICAgICAgICAgIGR1cGxpY2F0ZShCTEFDSyksCisgICAgICAgICAgICBkdXBsaWNhdGUoV0hJVEUpLAorICAgICAgICAgICAgZHVwbGljYXRlKEdSRUVOKSwKKyAgICAgICAgICAgIGR1cGxpY2F0ZShCTFVFKSwKKyAgICAgICAgICAgIGR1cGxpY2F0ZShDWUFOKSwKKyAgICAgICAgICAgIGR1cGxpY2F0ZShHUkFZKSwKKyAgICAgICAgICAgIGR1cGxpY2F0ZShEQVJLX0dSQVkpLAorICAgICAgICAgICAgZHVwbGljYXRlKExJR0hUX0dSQVkpLAorICAgICAgICAgICAgZHVwbGljYXRlKE1BR0VOVEEpLAorICAgICAgICAgICAgZHVwbGljYXRlKE9SQU5HRSksCisgICAgICAgICAgICBkdXBsaWNhdGUoUElOSyksCisgICAgICAgICAgICBkdXBsaWNhdGUoUkVEKSwKKyAgICAgICAgICAgIGR1cGxpY2F0ZShZRUxMT1cpLAorICAgICAgICAgICAgZHVwbGljYXRlKE5PTkUpLAorICAgICAgICAgICAgZHVwbGljYXRlKFNFVF9TSVpFX1RJVExFKSwKKyAgICAgICAgICAgIGR1cGxpY2F0ZShTRVRfU0laRV9MQUJFTCksCisgICAgICAgICAgICBkdXBsaWNhdGUoU0VUX1NVUEVSU0NSSVBUX1RJVExFKSwKKyAgICAgICAgICAgIGR1cGxpY2F0ZShTRVRfU1VQRVJTQ1JJUFRfTEFCRUwpLAorICAgICAgICAgICAgZHVwbGljYXRlKFNFVF9TVUJTQ1JJUFRfVElUTEUpLAorICAgICAgICAgICAgZHVwbGljYXRlKFNFVF9TVUJTQ1JJUFRfTEFCRUwpLAorICAgICAgICAgICAgZHVwbGljYXRlKFNFVF9GT1JFR1JPVU5EX1RJVExFKSwKKyAgICAgICAgICAgIGR1cGxpY2F0ZShTRVRfRk9SRUdST1VORF9MQUJFTCksCisgICAgICAgICAgICBkdXBsaWNhdGUoU0VUX0JBQ0tHUk9VTkRfVElUTEUpLAorICAgICAgICAgICAgZHVwbGljYXRlKFNFVF9CQUNLR1JPVU5EX0xBQkVMKSwKKyAgICAgICAgICAgIGR1cGxpY2F0ZShTRVRfRk9OVF9USVRMRSksCisgICAgICAgICAgICBkdXBsaWNhdGUoU0VUX0ZPTlRfTEFCRUwpLAorICAgICAgICAgICAgZHVwbGljYXRlKEVESVQpLAorICAgICAgICAgICAgZHVwbGljYXRlKFNJWkUpLAorICAgICAgICAgICAgZHVwbGljYXRlKEZPTlQpLAorICAgICAgICAgICAgZHVwbGljYXRlKFNUWUxFKSwKKyAgICAgICAgICAgIGR1cGxpY2F0ZShGTFVTSCksCisgICAgICAgICAgICBkdXBsaWNhdGUoS0VZTUFQKSwKKyAgICAgICAgICAgIGR1cGxpY2F0ZShCSURJKSwKKyAgICAgICAgICAgIGR1cGxpY2F0ZShBQk9VVF9NRU5VKSwKKyAgICAgICAgICAgIGR1cGxpY2F0ZShBQk9VVF9USVRMRSksCisgICAgICAgICAgICB7IEFCT1VUX1RFWFQsIEFDVFVBTF9BQk9VVF9URVhUIH0KKyAgICAgICAgfTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC91aWltcGwvcmVzb3VyY2VzL01lbnVEYXRhLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC91aWltcGwvcmVzb3VyY2VzL01lbnVEYXRhLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNGRiNGI0OAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3VpaW1wbC9yZXNvdXJjZXMvTWVudURhdGEuamF2YQpAQCAtMCwwICsxLDY4IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBNZW51RGF0YS5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjUyOjQ2ICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudWlpbXBsLnJlc291cmNlczsKKworLyoqCisgKiBUaGlzIGNsYXNzIGlzIHVzZWQgaW4gcmVzb3VyY2VzIHRvIHJlcHJlc2VudCBhIE1lbnUuICBJdCBpcworICoganVzdCBhIG5hbWUgYW5kIGFuIG9wdGlvbmFsIHNob3J0Y3V0IGtleS4KKyAqLworcHVibGljIGZpbmFsIGNsYXNzIE1lbnVEYXRhIHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHJpdmF0ZSBTdHJpbmcgZk5hbWU7CisgICAgcHJpdmF0ZSBib29sZWFuIGZIYXNTaG9ydGN1dDsKKyAgICBwcml2YXRlIGNoYXIgZlNob3J0Y3V0OworICAgIHByaXZhdGUgaW50IGZLZXlDb2RlOworCisgICAgcHVibGljIE1lbnVEYXRhKFN0cmluZyBuYW1lKSB7CisKKyAgICAgICAgZk5hbWUgPSBuYW1lOworICAgICAgICBmSGFzU2hvcnRjdXQgPSBmYWxzZTsKKyAgICB9CisKKyAgICBwdWJsaWMgTWVudURhdGEoU3RyaW5nIG5hbWUsIGNoYXIgY2gsIGludCBrZXlDb2RlKSB7CisKKyAgICAgICAgZk5hbWUgPSBuYW1lOworICAgICAgICBmSGFzU2hvcnRjdXQgPSB0cnVlOworICAgICAgICBmU2hvcnRjdXQgPSBjaDsKKyAgICAgICAgZktleUNvZGUgPSBrZXlDb2RlOworICAgIH0KKworICAgIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpIHsKKworICAgICAgICByZXR1cm4gZk5hbWU7CisgICAgfQorCisgICAgcHVibGljIGNoYXIgZ2V0U2hvcnRjdXRDaGFyKCkgeworCisgICAgICAgIGlmICghZkhhc1Nob3J0Y3V0KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk1lbnUgZG9lc24ndCBoYXZlIHNob3J0Y3V0Iik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZTaG9ydGN1dDsKKyAgICB9CisgICAgCisgICAgcHVibGljIGludCBnZXRTaG9ydGN1dEtleUNvZGUoKSB7CisgICAgICAgIGlmICghZkhhc1Nob3J0Y3V0KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk1lbnUgZG9lc24ndCBoYXZlIHNob3J0Y3V0Iik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZLZXlDb2RlOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGhhc1Nob3J0Y3V0KCkgeworCisgICAgICAgIHJldHVybiBmSGFzU2hvcnRjdXQ7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK